[med-svn] [libsbml-odesolver] 01/03: New upstream version 1.6.0+20161004

Andreas Tille tille at debian.org
Fri Jan 27 16:01:18 UTC 2017


This is an automated email from the git hooks/post-receive script.

tille pushed a commit to branch master
in repository libsbml-odesolver.

commit 903529b9aa7f8bb1fee18a726822975d196b7f1d
Author: Andreas Tille <tille at debian.org>
Date:   Fri Jan 27 16:52:01 2017 +0100

    New upstream version 1.6.0+20161004
---
 .gitignore                                         |    15 +
 AUTHORS                                            |    29 +
 BUGFIXES                                           |     3 +
 COPYING                                            |   513 +
 ChangeLog                                          |    34 +
 INSTALL                                            |   340 +
 INSTALL_SOLARIS                                    |   106 +
 INSTALL_WIN.txt                                    |   150 +
 KNOWN_BUGS                                         |     3 +
 Makefile.am                                        |    75 +
 NEWS                                               |     0
 OUTLOOK                                            |   115 +
 Perlen/AddLegend.pl                                |    75 +
 README                                             |   121 +
 SOS_Win32/SBW_odeSolver/SBWOdeSolver.cpp           |   639 +
 SOS_Win32/SBW_odeSolver/SBWOdeSolver.h             |   174 +
 SOS_Win32/SBW_odeSolver/SBW_odeSolver.vcproj       |   161 +
 SOS_Win32/SBW_odeSolver/main.c                     |    26 +
 SOS_Win32/SOSLib/SOSLib.vcproj                     |   413 +
 SOS_Win32/SOS_CommandLine/SOS_CommandLine.vcproj   |   157 +
 SOS_Win32/SOS_Win32.sln                            |    41 +
 SOSlib.doxy                                        |  1228 +
 TODO                                               |   124 +
 Test/simple.sh                                     |   108 +
 Test/testsuite/README                              |    57 +
 Test/testsuite/odeSolver-wrapper-once.pl           |    97 +
 Test/testsuite/odeSolver-wrapper.bsh               |    35 +
 Test/testsuite/testlist.txt                        |   123 +
 Test/testsuite/testlog.txt                         |     0
 Test/testsuite/workingtests.txt                    |   123 +
 VERSION.txt                                        |     1 +
 Win32/CompleteSOSLib/CompleteSOSLib.sln            |    59 +
 Win32/Examples/ASTIndexTest/.cvsignore             |     1 +
 Win32/Examples/ASTIndexTest/ASTIndexTest.sln       |    21 +
 Win32/Examples/ASTIndexTest/ASTIndexTest.vcproj    |   134 +
 .../Examples/ChangingIntegratorInstance/.cvsignore |     1 +
 .../ChangingIntegratorInstance.sln                 |    21 +
 .../ChangingIntegratorInstance.vcproj              |   135 +
 .../ChangingParameterIntegrator/.cvsignore         |     1 +
 .../ChangingParameterIntegrator.sln                |    21 +
 .../ChangingParameterIntegrator.vcproj             |   135 +
 Win32/Examples/IntegratorInstance/.cvsignore       |     1 +
 .../IntegratorInstance/IntegratorInstance.sln      |    21 +
 .../IntegratorInstance/IntegratorInstance.vcproj   |   135 +
 Win32/Examples/ParameterScanner/.cvsignore         |     1 +
 .../Examples/ParameterScanner/ParameterScanner.sln |    21 +
 .../ParameterScanner/ParameterScanner.vcproj       |   135 +
 Win32/Examples/Sense/Sense.sln                     |    21 +
 Win32/Examples/Sense/Sense/Sense.vcproj            |   146 +
 Win32/Examples/Sensitivity/Sensitivity.sln         |    21 +
 Win32/Examples/Sensitivity/Sensitivity.vcproj      |   134 +
 .../Examples/SharingIntegratorInstance/.cvsignore  |     1 +
 .../SharingIntegratorInstance.sln                  |    21 +
 .../SharingIntegratorInstance.vcproj               |   135 +
 .../TwinIntegratorInstance.sln                     |    21 +
 .../TwinIntegratorInstance.vcproj                  |   135 +
 Win32/README.txt                                   |    90 +
 Win32/README_FOR_RELEASE.txt                       |   294 +
 Win32/SBML_odeSolver/.cvsignore                    |     3 +
 Win32/SBML_odeSolver/SBML_odeSolver.sln            |    21 +
 Win32/SBML_odeSolver/SBML_odeSolver/.cvsignore     |     2 +
 Win32/SBML_odeSolver/SBML_odeSolver/ReadMe.txt     |    32 +
 .../SBML_odeSolver/SBML_odeSolver.cpp              |    36 +
 .../SBML_odeSolver/SBML_odeSolver.vcproj           |   281 +
 Win32/SBML_odeSolver/include/config.h              |    87 +
 Win32/SBML_odeSolverApp/.cvsignore                 |     3 +
 Win32/SBML_odeSolverApp/SBML_odeSolverApp.sln      |    21 +
 .../SBML_odeSolverApp/SBML_odeSolverApp/.cvsignore |     2 +
 .../SBML_odeSolverApp/SBML_odeSolverApp.vcproj     |   174 +
 Win32/SBML_odeSolverApp/SBML_odeSolverApp/getopt.h |    56 +
 .../SBML_odeSolverApp/my_getopt.c                  |   271 +
 .../SBML_odeSolverApp/my_getopt.h                  |    69 +
 Win32/TODO.txt                                     |    11 +
 Win32/WinCVODE/.cvsignore                          |     3 +
 Win32/WinCVODE/CVODE/include/iterativ.h            |   243 +
 Win32/WinCVODE/CVODE/include/llnltyps.h            |   129 +
 Win32/WinCVODE/WinCVODE.sln                        |    21 +
 Win32/WinCVODE/WinCVODE/.cvsignore                 |     2 +
 Win32/WinCVODE/WinCVODE/ReadMe.txt                 |    25 +
 Win32/WinCVODE/WinCVODE/WinCVODE.cpp               |    38 +
 Win32/WinCVODE/WinCVODE/WinCVODE.h                 |    24 +
 Win32/WinCVODE/WinCVODE/WinCVODE.vcproj            |   282 +
 Win32/WinCVODE/sundials/INSTALL_NOTES              |   385 +
 Win32/WinCVODE/sundials/Makefile                   |   141 +
 Win32/WinCVODE/sundials/Makefile.in                |   141 +
 Win32/WinCVODE/sundials/README                     |    55 +
 Win32/WinCVODE/sundials/config.h                   |   104 +
 Win32/WinCVODE/sundials/config.hin                 |   103 +
 Win32/WinCVODE/sundials/config.log                 |  1207 +
 Win32/WinCVODE/sundials/config.status              |   949 +
 Win32/WinCVODE/sundials/config/config.guess        |  1363 +
 Win32/WinCVODE/sundials/config/config.sub          |  1470 +
 Win32/WinCVODE/sundials/config/fortran_update.in   |   442 +
 Win32/WinCVODE/sundials/config/install-sh          |   251 +
 Win32/WinCVODE/sundials/config/ltmain.sh           |  5062 ++
 Win32/WinCVODE/sundials/config/sundials_config.h   |    33 +
 Win32/WinCVODE/sundials/config/sundials_config.in  |    33 +
 Win32/WinCVODE/sundials/configure                  | 14986 ++++++
 Win32/WinCVODE/sundials/cvode/LICENSE              |    59 +
 Win32/WinCVODE/sundials/cvode/README               |   297 +
 Win32/WinCVODE/sundials/cvode/doc/cv_examples.pdf  |   Bin 0 -> 394382 bytes
 Win32/WinCVODE/sundials/cvode/doc/cv_examples.ps   | 14545 +++++
 Win32/WinCVODE/sundials/cvode/doc/cv_guide.pdf     |   Bin 0 -> 589480 bytes
 Win32/WinCVODE/sundials/cvode/doc/cv_guide.ps      | 22383 ++++++++
 .../WinCVODE/sundials/cvode/examples_ser/Makefile  |    76 +
 .../sundials/cvode/examples_ser/Makefile.in        |    76 +
 Win32/WinCVODE/sundials/cvode/examples_ser/README  |    19 +
 Win32/WinCVODE/sundials/cvode/examples_ser/cvbx.c  |   437 +
 .../WinCVODE/sundials/cvode/examples_ser/cvbx.out  |    22 +
 .../WinCVODE/sundials/cvode/examples_ser/cvdemd.c  |   770 +
 .../sundials/cvode/examples_ser/cvdemd.out         |   502 +
 .../WinCVODE/sundials/cvode/examples_ser/cvdemk.c  |  1135 +
 .../sundials/cvode/examples_ser/cvdemk.out         |   645 +
 Win32/WinCVODE/sundials/cvode/examples_ser/cvdx.c  |   369 +
 .../WinCVODE/sundials/cvode/examples_ser/cvdx.out  |    24 +
 Win32/WinCVODE/sundials/cvode/examples_ser/cvdxe.c |   392 +
 .../WinCVODE/sundials/cvode/examples_ser/cvdxe.out |    24 +
 Win32/WinCVODE/sundials/cvode/examples_ser/cvkx.c  |   659 +
 .../WinCVODE/sundials/cvode/examples_ser/cvkx.out  |    63 +
 Win32/WinCVODE/sundials/cvode/examples_ser/cvkxb.c |   534 +
 .../WinCVODE/sundials/cvode/examples_ser/cvkxb.out |   138 +
 Win32/WinCVODE/sundials/cvode/fcmix/Makefile       |    91 +
 Win32/WinCVODE/sundials/cvode/fcmix/Makefile.in    |    91 +
 .../sundials/cvode/fcmix/examples_ser/Makefile.in  |    79 +
 .../sundials/cvode/fcmix/examples_ser/README       |    17 +
 .../sundials/cvode/fcmix/examples_ser/cvbandf.f    |   249 +
 .../sundials/cvode/fcmix/examples_ser/cvbandf.out  |    24 +
 .../sundials/cvode/fcmix/examples_ser/cvdensef.f   |   212 +
 .../sundials/cvode/fcmix/examples_ser/cvdensef.out |    32 +
 .../sundials/cvode/fcmix/examples_ser/cvkrybf.f    |   294 +
 .../sundials/cvode/fcmix/examples_ser/cvkrybf.out  |    63 +
 .../sundials/cvode/fcmix/examples_ser/cvkryf.f     |   846 +
 .../sundials/cvode/fcmix/examples_ser/cvkryf.out   |    62 +
 Win32/WinCVODE/sundials/cvode/fcmix/fcvband.c      |    93 +
 Win32/WinCVODE/sundials/cvode/fcmix/fcvbbd.c       |   162 +
 Win32/WinCVODE/sundials/cvode/fcmix/fcvbbd.h       |   393 +
 Win32/WinCVODE/sundials/cvode/fcmix/fcvbp.c        |    93 +
 Win32/WinCVODE/sundials/cvode/fcmix/fcvbp.h        |   273 +
 Win32/WinCVODE/sundials/cvode/fcmix/fcvdense.c     |    86 +
 Win32/WinCVODE/sundials/cvode/fcmix/fcvewt.c       |    62 +
 Win32/WinCVODE/sundials/cvode/fcmix/fcvjtimes.c    |    88 +
 Win32/WinCVODE/sundials/cvode/fcmix/fcvode.c       |   458 +
 Win32/WinCVODE/sundials/cvode/fcmix/fcvode.h       |   641 +
 Win32/WinCVODE/sundials/cvode/fcmix/fcvpreco.c     |   130 +
 Win32/WinCVODE/sundials/cvode/fcmix/fcvroot.c      |    80 +
 Win32/WinCVODE/sundials/cvode/fcmix/fcvroot.h      |   174 +
 Win32/WinCVODE/sundials/cvode/include/cvband.h     |   219 +
 Win32/WinCVODE/sundials/cvode/include/cvbandpre.h  |   174 +
 Win32/WinCVODE/sundials/cvode/include/cvbbdpre.h   |   298 +
 Win32/WinCVODE/sundials/cvode/include/cvdense.h    |   192 +
 Win32/WinCVODE/sundials/cvode/include/cvdiag.h     |    91 +
 Win32/WinCVODE/sundials/cvode/include/cvode.h      |   873 +
 Win32/WinCVODE/sundials/cvode/include/cvspgmr.h    |   376 +
 Win32/WinCVODE/sundials/cvode/source/Makefile      |   103 +
 Win32/WinCVODE/sundials/cvode/source/Makefile.in   |   103 +
 Win32/WinCVODE/sundials/cvode/source/cvband.c      |   566 +
 Win32/WinCVODE/sundials/cvode/source/cvband_impl.h |    90 +
 Win32/WinCVODE/sundials/cvode/source/cvbandpre.c   |   409 +
 .../sundials/cvode/source/cvbandpre_impl.h         |    70 +
 Win32/WinCVODE/sundials/cvode/source/cvbbdpre.c    |   464 +
 .../WinCVODE/sundials/cvode/source/cvbbdpre_impl.h |    78 +
 Win32/WinCVODE/sundials/cvode/source/cvdense.c     |   537 +
 .../WinCVODE/sundials/cvode/source/cvdense_impl.h  |    82 +
 Win32/WinCVODE/sundials/cvode/source/cvdiag.c      |   378 +
 Win32/WinCVODE/sundials/cvode/source/cvdiag_impl.h |    74 +
 Win32/WinCVODE/sundials/cvode/source/cvode.c       |  3550 ++
 Win32/WinCVODE/sundials/cvode/source/cvode_impl.h  |   498 +
 Win32/WinCVODE/sundials/cvode/source/cvodeio.c     |  1078 +
 Win32/WinCVODE/sundials/cvode/source/cvspgmr.c     |   913 +
 .../WinCVODE/sundials/cvode/source/cvspgmr_impl.h  |   120 +
 Win32/WinCVODE/sundials/cvodes/LICENSE             |    59 +
 Win32/WinCVODE/sundials/cvodes/README              |   264 +
 .../WinCVODE/sundials/cvodes/doc/cvs_examples.pdf  |   Bin 0 -> 887357 bytes
 Win32/WinCVODE/sundials/cvodes/doc/cvs_examples.ps | 53370 +++++++++++++++++++
 Win32/WinCVODE/sundials/cvodes/doc/cvs_guide.pdf   |   Bin 0 -> 782316 bytes
 Win32/WinCVODE/sundials/cvodes/doc/cvs_guide.ps    | 28642 ++++++++++
 .../WinCVODE/sundials/cvodes/examples_ser/Makefile |    96 +
 .../sundials/cvodes/examples_ser/Makefile.in       |    96 +
 Win32/WinCVODE/sundials/cvodes/examples_ser/README |    37 +
 .../WinCVODE/sundials/cvodes/examples_ser/cvabx.c  |   532 +
 .../sundials/cvodes/examples_ser/cvabx.out         |    15 +
 .../WinCVODE/sundials/cvodes/examples_ser/cvadx.c  |   584 +
 .../sundials/cvodes/examples_ser/cvadx.out         |    33 +
 .../WinCVODE/sundials/cvodes/examples_ser/cvakx.c  |  1340 +
 .../sundials/cvodes/examples_ser/cvakx.out         |    48 +
 .../WinCVODE/sundials/cvodes/examples_ser/cvakxb.c |  1340 +
 .../sundials/cvodes/examples_ser/cvakxb.out        |    48 +
 Win32/WinCVODE/sundials/cvodes/examples_ser/cvbx.c |   437 +
 .../WinCVODE/sundials/cvodes/examples_ser/cvbx.out |    22 +
 .../WinCVODE/sundials/cvodes/examples_ser/cvdemd.c |   770 +
 .../sundials/cvodes/examples_ser/cvdemd.out        |   502 +
 .../WinCVODE/sundials/cvodes/examples_ser/cvdemk.c |  1135 +
 .../sundials/cvodes/examples_ser/cvdemk.out        |   645 +
 Win32/WinCVODE/sundials/cvodes/examples_ser/cvdx.c |   369 +
 .../WinCVODE/sundials/cvodes/examples_ser/cvdx.out |    24 +
 .../WinCVODE/sundials/cvodes/examples_ser/cvdxe.c  |   392 +
 .../sundials/cvodes/examples_ser/cvdxe.out         |    24 +
 .../WinCVODE/sundials/cvodes/examples_ser/cvfdx.c  |   618 +
 .../sundials/cvodes/examples_ser/cvfdx.out1        |    93 +
 .../sundials/cvodes/examples_ser/cvfdx.out2        |    93 +
 .../WinCVODE/sundials/cvodes/examples_ser/cvfkx.c  |   920 +
 .../sundials/cvodes/examples_ser/cvfkx.out1        |   142 +
 .../sundials/cvodes/examples_ser/cvfkx.out2        |   142 +
 .../WinCVODE/sundials/cvodes/examples_ser/cvfnx.c  |   513 +
 .../sundials/cvodes/examples_ser/cvfnx.out1        |    69 +
 .../sundials/cvodes/examples_ser/cvfnx.out2        |    69 +
 Win32/WinCVODE/sundials/cvodes/examples_ser/cvkx.c |   659 +
 .../WinCVODE/sundials/cvodes/examples_ser/cvkx.out |    63 +
 .../WinCVODE/sundials/cvodes/examples_ser/cvkxb.c  |   534 +
 .../sundials/cvodes/examples_ser/cvkxb.out         |   138 +
 Win32/WinCVODE/sundials/cvodes/include/cvband.h    |   219 +
 Win32/WinCVODE/sundials/cvodes/include/cvbandpre.h |   174 +
 Win32/WinCVODE/sundials/cvodes/include/cvbbdpre.h  |   298 +
 Win32/WinCVODE/sundials/cvodes/include/cvdense.h   |   191 +
 Win32/WinCVODE/sundials/cvodes/include/cvdiag.h    |    91 +
 Win32/WinCVODE/sundials/cvodes/include/cvodea.h    |   428 +
 Win32/WinCVODE/sundials/cvodes/include/cvodes.h    |  1400 +
 Win32/WinCVODE/sundials/cvodes/include/cvspgmr.h   |   376 +
 Win32/WinCVODE/sundials/cvodes/source/Makefile     |   106 +
 Win32/WinCVODE/sundials/cvodes/source/Makefile.in  |   106 +
 Win32/WinCVODE/sundials/cvodes/source/cvband.c     |   566 +
 .../WinCVODE/sundials/cvodes/source/cvband_impl.h  |    90 +
 Win32/WinCVODE/sundials/cvodes/source/cvbandpre.c  |   409 +
 .../sundials/cvodes/source/cvbandpre_impl.h        |    70 +
 Win32/WinCVODE/sundials/cvodes/source/cvbbdpre.c   |   464 +
 .../sundials/cvodes/source/cvbbdpre_impl.h         |    78 +
 Win32/WinCVODE/sundials/cvodes/source/cvdense.c    |   537 +
 .../WinCVODE/sundials/cvodes/source/cvdense_impl.h |    82 +
 Win32/WinCVODE/sundials/cvodes/source/cvdiag.c     |   378 +
 .../WinCVODE/sundials/cvodes/source/cvdiag_impl.h  |    74 +
 Win32/WinCVODE/sundials/cvodes/source/cvodea.c     |  2159 +
 .../WinCVODE/sundials/cvodes/source/cvodea_impl.h  |   251 +
 Win32/WinCVODE/sundials/cvodes/source/cvodes.c     |  6604 +++
 .../WinCVODE/sundials/cvodes/source/cvodes_impl.h  |   772 +
 Win32/WinCVODE/sundials/cvodes/source/cvodesio.c   |  1892 +
 Win32/WinCVODE/sundials/cvodes/source/cvspgmr.c    |   913 +
 .../WinCVODE/sundials/cvodes/source/cvspgmr_impl.h |   120 +
 Win32/WinCVODE/sundials/ida/LICENSE                |    59 +
 Win32/WinCVODE/sundials/ida/README                 |   236 +
 Win32/WinCVODE/sundials/ida/doc/ida_examples.pdf   |   Bin 0 -> 283520 bytes
 Win32/WinCVODE/sundials/ida/doc/ida_examples.ps    | 10849 ++++
 Win32/WinCVODE/sundials/ida/doc/ida_guide.pdf      |   Bin 0 -> 491795 bytes
 Win32/WinCVODE/sundials/ida/doc/ida_guide.ps       | 20250 +++++++
 Win32/WinCVODE/sundials/ida/examples_ser/Makefile  |    66 +
 .../WinCVODE/sundials/ida/examples_ser/Makefile.in |    66 +
 Win32/WinCVODE/sundials/ida/examples_ser/README    |    17 +
 Win32/WinCVODE/sundials/ida/examples_ser/iheatsb.c |   404 +
 .../WinCVODE/sundials/ida/examples_ser/iheatsb.out |    29 +
 Win32/WinCVODE/sundials/ida/examples_ser/iheatsk.c |   546 +
 .../WinCVODE/sundials/ida/examples_ser/iheatsk.out |    55 +
 Win32/WinCVODE/sundials/ida/examples_ser/irobx.c   |   351 +
 Win32/WinCVODE/sundials/ida/examples_ser/irobx.out |    33 +
 Win32/WinCVODE/sundials/ida/examples_ser/iwebsb.c  |   670 +
 .../WinCVODE/sundials/ida/examples_ser/iwebsb.out  |    42 +
 Win32/WinCVODE/sundials/ida/include/ida.h          |   922 +
 Win32/WinCVODE/sundials/ida/include/idaband.h      |   207 +
 Win32/WinCVODE/sundials/ida/include/idabbdpre.h    |   309 +
 Win32/WinCVODE/sundials/ida/include/idadense.h     |   196 +
 Win32/WinCVODE/sundials/ida/include/idaspgmr.h     |   335 +
 Win32/WinCVODE/sundials/ida/source/Makefile        |    96 +
 Win32/WinCVODE/sundials/ida/source/Makefile.in     |    96 +
 Win32/WinCVODE/sundials/ida/source/ida.c           |  2225 +
 Win32/WinCVODE/sundials/ida/source/ida_impl.h      |   448 +
 Win32/WinCVODE/sundials/ida/source/idaband.c       |   576 +
 Win32/WinCVODE/sundials/ida/source/idaband_impl.h  |    97 +
 Win32/WinCVODE/sundials/ida/source/idabbdpre.c     |   492 +
 .../WinCVODE/sundials/ida/source/idabbdpre_impl.h  |   103 +
 Win32/WinCVODE/sundials/ida/source/idadense.c      |   513 +
 Win32/WinCVODE/sundials/ida/source/idadense_impl.h |    82 +
 Win32/WinCVODE/sundials/ida/source/idaic.c         |   727 +
 Win32/WinCVODE/sundials/ida/source/idaio.c         |  1000 +
 Win32/WinCVODE/sundials/ida/source/idaspgmr.c      |   893 +
 Win32/WinCVODE/sundials/ida/source/idaspgmr_impl.h |   175 +
 Win32/WinCVODE/sundials/libtool                    |  5556 ++
 Win32/WinCVODE/sundials/nvec_ser/Makefile          |   101 +
 Win32/WinCVODE/sundials/nvec_ser/Makefile.in       |   101 +
 Win32/WinCVODE/sundials/nvec_ser/README            |   103 +
 Win32/WinCVODE/sundials/nvec_ser/fnvector_serial.c |    42 +
 Win32/WinCVODE/sundials/nvec_ser/fnvector_serial.h |    78 +
 Win32/WinCVODE/sundials/nvec_ser/nvector_serial.c  |   928 +
 Win32/WinCVODE/sundials/nvec_ser/nvector_serial.h  |   267 +
 Win32/WinCVODE/sundials/shared/LICENSE             |    63 +
 Win32/WinCVODE/sundials/shared/README              |   143 +
 Win32/WinCVODE/sundials/shared/include/band.h      |   606 +
 Win32/WinCVODE/sundials/shared/include/dense.h     |   293 +
 Win32/WinCVODE/sundials/shared/include/iterative.h |   242 +
 Win32/WinCVODE/sundials/shared/include/nvector.h   |   373 +
 .../WinCVODE/sundials/shared/include/smalldense.h  |   221 +
 Win32/WinCVODE/sundials/shared/include/spgmr.h     |   295 +
 .../sundials/shared/include/sundialsmath.h         |   129 +
 .../sundials/shared/include/sundialstypes.h        |   114 +
 Win32/WinCVODE/sundials/shared/source/Makefile     |   107 +
 Win32/WinCVODE/sundials/shared/source/Makefile.in  |   107 +
 Win32/WinCVODE/sundials/shared/source/band.c       |   365 +
 Win32/WinCVODE/sundials/shared/source/dense.c      |   103 +
 Win32/WinCVODE/sundials/shared/source/iterative.c  |   290 +
 Win32/WinCVODE/sundials/shared/source/nvector.c    |   238 +
 Win32/WinCVODE/sundials/shared/source/smalldense.c |   242 +
 Win32/WinCVODE/sundials/shared/source/spgmr.c      |   441 +
 .../WinCVODE/sundials/shared/source/sundialsmath.c |    88 +
 Win32/bin/.cvsignore                               |     1 +
 Win32/bin/tcc/include/_mingw.h                     |    51 +
 Win32/bin/tcc/include/assert.h                     |    71 +
 Win32/bin/tcc/include/conio.h                      |   159 +
 Win32/bin/tcc/include/ctype.h                      |   232 +
 Win32/bin/tcc/include/dir.h                        |    26 +
 Win32/bin/tcc/include/direct.h                     |    95 +
 Win32/bin/tcc/include/dirent.h                     |    96 +
 Win32/bin/tcc/include/dos.h                        |   110 +
 Win32/bin/tcc/include/errno.h                      |   117 +
 Win32/bin/tcc/include/excpt.h                      |    20 +
 Win32/bin/tcc/include/fcntl.h                      |   135 +
 Win32/bin/tcc/include/fenv.h                       |    85 +
 Win32/bin/tcc/include/float.h                      |   224 +
 Win32/bin/tcc/include/inttypes.h                   |   275 +
 Win32/bin/tcc/include/io.h                         |   296 +
 Win32/bin/tcc/include/limits.h                     |   115 +
 Win32/bin/tcc/include/locale.h                     |   100 +
 Win32/bin/tcc/include/malloc.h                     |    87 +
 Win32/bin/tcc/include/math.h                       |   438 +
 Win32/bin/tcc/include/mem.h                        |     8 +
 Win32/bin/tcc/include/memory.h                     |     9 +
 Win32/bin/tcc/include/process.h                    |   158 +
 Win32/bin/tcc/include/sbml/SBMLTypes.h             |    12 +
 Win32/bin/tcc/include/sbmlsolver/band.h            |   606 +
 Win32/bin/tcc/include/sbmlsolver/cvdense.h         |   191 +
 Win32/bin/tcc/include/sbmlsolver/cvode.h           |   872 +
 Win32/bin/tcc/include/sbmlsolver/dense.h           |   293 +
 Win32/bin/tcc/include/sbmlsolver/fnvector_serial.h |    78 +
 Win32/bin/tcc/include/sbmlsolver/iterative.h       |   242 +
 Win32/bin/tcc/include/sbmlsolver/nvector.h         |   373 +
 Win32/bin/tcc/include/sbmlsolver/nvector_serial.h  |   267 +
 Win32/bin/tcc/include/sbmlsolver/smalldense.h      |   221 +
 Win32/bin/tcc/include/sbmlsolver/spgmr.h           |   295 +
 Win32/bin/tcc/include/sbmlsolver/sundials_config.h |    33 +
 Win32/bin/tcc/include/sbmlsolver/sundialsmath.h    |   129 +
 Win32/bin/tcc/include/sbmlsolver/sundialstypes.h   |   114 +
 Win32/bin/tcc/include/setjmp.h                     |    72 +
 Win32/bin/tcc/include/share.h                      |    44 +
 Win32/bin/tcc/include/signal.h                     |   111 +
 Win32/bin/tcc/include/stdarg.h                     |    15 +
 Win32/bin/tcc/include/stdbool.h                    |    10 +
 Win32/bin/tcc/include/stddef.h                     |    21 +
 Win32/bin/tcc/include/stdint.h                     |   184 +
 Win32/bin/tcc/include/stdio.h                      |   413 +
 Win32/bin/tcc/include/stdlib.h                     |   482 +
 Win32/bin/tcc/include/string.h                     |   206 +
 Win32/bin/tcc/include/tchar.h                      |   367 +
 Win32/bin/tcc/include/time.h                       |   219 +
 Win32/bin/tcc/include/unistd.h                     |    10 +
 Win32/bin/tcc/include/values.h                     |     4 +
 Win32/bin/tcc/include/varargs.h                    |    11 +
 Win32/bin/tcc/include/wchar.h                      |   318 +
 Win32/bin/tcc/include/wctype.h                     |   127 +
 Win32/bin/tcc/include/winapi/basetsd.h             |   119 +
 Win32/bin/tcc/include/winapi/basetyps.h            |   144 +
 Win32/bin/tcc/include/winapi/winbase.h             |  1852 +
 Win32/bin/tcc/include/winapi/wincon.h              |   207 +
 Win32/bin/tcc/include/winapi/windef.h              |   240 +
 Win32/bin/tcc/include/winapi/windows.h             |   176 +
 Win32/bin/tcc/include/winapi/winerror.h            |  1054 +
 Win32/bin/tcc/include/winapi/wingdi.h              |  2843 +
 Win32/bin/tcc/include/winapi/winnetwk.h            |   346 +
 Win32/bin/tcc/include/winapi/winnls.h              |   651 +
 Win32/bin/tcc/include/winapi/winnt.h               |  2667 +
 Win32/bin/tcc/include/winapi/winreg.h              |   159 +
 Win32/bin/tcc/include/winapi/winsvc.h              |   309 +
 Win32/bin/tcc/include/winapi/winuser.h             |  3472 ++
 Win32/bin/tcc/include/winapi/winver.h              |   133 +
 Win32/bin/tcc/lib/gdi32.def                        |   337 +
 Win32/bin/tcc/lib/kernel32.def                     |   763 +
 Win32/bin/tcc/lib/libtcc1.a                        |   Bin 0 -> 9336 bytes
 Win32/bin/tcc/lib/msvcrt.def                       |   782 +
 Win32/bin/tcc/lib/user32.def                       |   654 +
 Win32/bin/tcc/tcc.exe                              |   Bin 0 -> 95270 bytes
 Win32/binary/MSVCRT.DLL                            |   Bin 0 -> 343040 bytes
 Win32/binary/libsbml.dll                           |   Bin 0 -> 630784 bytes
 Win32/binary/msvcp71.dll                           |   Bin 0 -> 499712 bytes
 Win32/binary/msvcr71.dll                           |   Bin 0 -> 348160 bytes
 Win32/binary/xerces-c_2_5_0.dll                    |   Bin 0 -> 2547712 bytes
 bindings/Makefile.am                               |     1 +
 bindings/R/interface.c                             |   241 +
 bindings/R/interface.h                             |    83 +
 bindings/README                                    |     2 +
 bindings/perl/LibODES.i                            |     8 +
 bindings/perl/Makefile.PL.in                       |    32 +
 bindings/perl/Makefile.am                          |    16 +
 bindings/perl/t/01__LoadModule.t                   |     5 +
 bindings/perl/t/02__Integrate.t                    |   134 +
 bindings/swig/Makefile.am                          |     2 +
 bindings/swig/libodes.i                            |    42 +
 config/cvode.m4                                    |   100 +
 config/grace.m4                                    |   132 +
 config/graphviz.m4                                 |   153 +
 config/sbml.m4                                     |   212 +
 config/sundials.m4                                 |   126 +
 config/tcc.m4                                      |   133 +
 configure.ac                                       |   252 +
 cvode_failures.txt                                 |    50 +
 cvode_statistics.txt                               |    17 +
 doc/Makefile.am                                    |     8 +
 doc/README                                         |    32 +
 doc/SBML_odeSolver.1.in                            |   123 +
 doc/libODES.texinfo                                |   348 +
 doc/os_v1-0.pdf                                    |   Bin 0 -> 212647 bytes
 doc/os_v1-5.pdf                                    |   Bin 0 -> 230362 bytes
 examples.doxy                                      |  1228 +
 examples/ASTIndexTest.c                            |    86 +
 examples/ASTgetIndexTest.c                         |   121 +
 examples/ChangingIntegratorInstance.c              |   158 +
 examples/ChangingParameterIntegrator.c             |   127 +
 examples/FIMtest.c                                 |   220 +
 examples/MAPK.linobjfun                            |     8 +
 examples/MAPK.objfun                               |     3 +
 examples/MAPK.xml                                  |   170 +
 examples/MAPK_10000pt.dat                          | 10007 ++++
 examples/MAPK_10000pt.objfun                       |     4 +
 examples/MAPK_1000pt.dat                           |  1007 +
 examples/MAPK_1000pt.objfun                        |     4 +
 examples/MAPK_100pt.dat                            |   107 +
 examples/MAPK_100pt.objfun                         |     4 +
 examples/MAPK_10pt.dat                             |    17 +
 examples/MAPK_10pt.objfun                          |     4 +
 examples/MAPK_withData.objfun                      |     2 +
 examples/Makefile.am                               |    75 +
 examples/ParameterScanner.c                        |   181 +
 examples/README                                    |   105 +
 examples/Sense.c                                   |   221 +
 examples/SharingIntegratorInstance.c               |   138 +
 examples/TwinIntegratorInstance.c                  |   124 +
 examples/adj_sensitivity.c                         |   228 +
 examples/adjsenstest.c                             |   183 +
 examples/adjsenstest_ContDiscData.c                |   216 +
 examples/analyzeJacobian.c                         |   178 +
 examples/analyzeSensitivity.c                      |   162 +
 examples/basic-model1-forward-l2.xml               |    54 +
 examples/basic.xml                                 |    54 +
 examples/batch_integrate.c                         |   183 +
 examples/bistability.c                             |   247 +
 examples/definedTimeSeries.c                       |   112 +
 examples/events-1-event-1-assignment-l2.xml        |    47 +
 examples/events-2-events-1-assignment-l2.xml       |    65 +
 examples/findRoot.c                                |    99 +
 examples/huang96.xml                               |   554 +
 examples/integrate.c                               |   106 +
 examples/integrateODEs.c                           |   155 +
 examples/printODEModel.c                           |   101 +
 examples/repressilator.objfun                      |     1 +
 examples/repressilator.xml                         |   143 +
 examples/repressilator_data.txt                    |   111 +
 examples/sensitivity.c                             |   181 +
 examples/senstest.c                                |   275 +
 examples/simpleIntegratorInstance.c                |   156 +
 examples/testCompiler.c                            |   178 +
 examples/testrun                                   |    32 +
 examples/testrun.out                               |  1900 +
 odeSolver.doxy                                     |  1228 +
 odeSolver/Makefile.am                              |    50 +
 odeSolver/commandLine.c                            |   675 +
 odeSolver/commandLine.h                            |    52 +
 odeSolver/getopt.c                                 |  1056 +
 odeSolver/getopt.h                                 |   169 +
 odeSolver/getopt1.c                                |   188 +
 odeSolver/interactive.c                            |   506 +
 odeSolver/interactive.h                            |    44 +
 odeSolver/main.c                                   |    50 +
 odeSolver/options.c                                |   470 +
 odeSolver/options.h                                |    72 +
 odeSolver/printModel.c                             |  1651 +
 odeSolver/printModel.h                             |    58 +
 sbml/sbml-l1v1.xsd                                 |   389 +
 sbml/sbml-l1v2.xsd                                 |   340 +
 sbml/sbml-l2v1.xsd                                 |   544 +
 scripts/gnuplotscript.awk                          |    29 +
 scripts/xmgracefile.pl                             |    75 +
 src/ASTIndexNameNode.c                             |   159 +
 src/Makefile.am                                    |   102 +
 src/arithmeticCompiler.c                           |  2624 +
 src/charBuffer.c                                   |   125 +
 src/compiler.c                                     |   509 +
 src/cvodeData.c                                    |   650 +
 src/cvodeSolver.c                                  |  1124 +
 src/daeSolver.c                                    |   454 +
 src/drawGraph.c                                    |  1071 +
 src/evaluateAST.c                                  |   604 +
 src/integratorInstance.c                           |  1784 +
 src/integratorSettings.c                           |  1188 +
 src/interpol.c                                     |   620 +
 src/libODES.pc.in                                  |    13 +
 src/modelSimplify.c                                |   378 +
 src/nullSolver.c                                   |   366 +
 src/odeConstruct.c                                 |   866 +
 src/odeModel.c                                     |  3522 ++
 src/odeSolver.c                                    |   996 +
 src/private/data.c                                 |    33 +
 src/private/data.h                                 |     7 +
 src/private/error.c                                |    15 +
 src/private/error.h                                |     8 +
 src/private/macro.h                                |     7 +
 src/processAST.c                                   |  2312 +
 src/sbml.c                                         |   150 +
 src/sbmlResults.c                                  |   522 +
 src/sbmlsolver/ASTCompiler/Makefile                |     2 +
 src/sbmlsolver/ASTCompiler/arithmeticCompiler.c    |  2478 +
 .../ASTCompiler/arithmeticCompilerTest.c           |   802 +
 src/sbmlsolver/ASTCompiler/interfaceSimulation.c   |    90 +
 src/sbmlsolver/ASTIndexNameNode.h                  |    37 +
 src/sbmlsolver/arithmeticCompiler.h                |    74 +
 src/sbmlsolver/charBuffer.h                        |    56 +
 src/sbmlsolver/compiler.h                          |   113 +
 src/sbmlsolver/cvodeData.h                         |   230 +
 src/sbmlsolver/cvodeSolver.h                       |    70 +
 src/sbmlsolver/daeSolver.h                         |    61 +
 src/sbmlsolver/drawGraph.h                         |    28 +
 src/sbmlsolver/exportdefs.h                        |    71 +
 src/sbmlsolver/integratorInstance.h                |   218 +
 src/sbmlsolver/integratorSettings.h                |   253 +
 src/sbmlsolver/interpol.h                          |    95 +
 src/sbmlsolver/modelSimplify.h                     |    62 +
 src/sbmlsolver/nullSolver.h                        |    61 +
 src/sbmlsolver/odeConstruct.h                      |    59 +
 src/sbmlsolver/odeModel.h                          |   371 +
 src/sbmlsolver/odeSolver.h                         |   102 +
 src/sbmlsolver/processAST.h                        |    80 +
 src/sbmlsolver/sbml.h                              |    59 +
 src/sbmlsolver/sbmlResults.h                       |   147 +
 src/sbmlsolver/sensSolver.h                        |    71 +
 src/sbmlsolver/solverError.h                       |   233 +
 src/sbmlsolver/util.h                              |    74 +
 src/sbmlsolver/variableIndex.h                     |    69 +
 src/sensSolver.c                                   |  1631 +
 src/solverError.c                                  |   358 +
 src/util.c                                         |   192 +
 tokyo_release.png                                  |   Bin 0 -> 11980 bytes
 tutorial/Goodwin_SomoS.xml                         |  1077 +
 tutorial/MAPK-l2.xml                               |   349 +
 tutorial/MAPK.xml                                  |   170 +
 tutorial/Makefile.am                               |    33 +
 tutorial/evaluateast.c                             |    81 +
 tutorial/integrate.c                               |    76 +
 tutorial/integrate.pl                              |    85 +
 tutorial/integrateODES.pl                          |    88 +
 tutorial/integratorinstance.c                      |    71 +
 tutorial/odemodel.c                                |    62 +
 tutorial/setvariablevalue.c                        |    92 +
 unittest/Makefile.am                               |    41 +
 unittest/main.c                                    |    41 +
 unittest/test_ASTIndexNameNode.c                   |    75 +
 unittest/test_charBuffer.c                         |   121 +
 unittest/test_cvodeData.c                          |   315 +
 unittest/test_cvodeSolver.c                        |   140 +
 unittest/test_daeSolver.c                          |   111 +
 unittest/test_integratorInstance.c                 |   218 +
 unittest/test_integratorSettings.c                 |   145 +
 unittest/test_interpol.c                           |   314 +
 unittest/test_modelSimplify.c                      |   304 +
 unittest/test_nullSolver.c                         |   107 +
 unittest/test_odeConstruct.c                       |   566 +
 unittest/test_odeModel.c                           |  1059 +
 unittest/test_odeSolver.c                          |   422 +
 unittest/test_processAST.c                         |   526 +
 unittest/test_sbml.c                               |   244 +
 unittest/test_sbmlResults.c                        |   430 +
 unittest/test_sensSolver.c                         |   137 +
 unittest/test_solverError.c                        |   193 +
 unittest/test_util.c                               |   169 +
 unittest/unittest.h                                |    73 +
 567 files changed, 355620 insertions(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7ba8baa
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+*~
+Makefile.in
+aclocal.m4
+autom4te.cache/
+build-aux/
+config/libtool.m4
+config/ltoptions.m4
+config/ltsugar.m4
+config/ltversion.m4
+config/lt~obsolete.m4
+configure
+examples/Makefile.in
+odeSolver/Makefile.in
+src/Makefile.in
+src/config.h.in
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..9d567db
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,29 @@
+=== SOSlib Active Developers ===
+
+Please see the website
+http://www.tbi.univie.ac.at/~raim/odeSolver for full credits!
+
+The SBML_odeSolver has been developed mainly by:
+
+Rainer Machne, 1
+raim at tbi.univie.ac.at, http://www.tbi.univie.ac.at/~raim
+
+Andrew Finney, 2
+afinney at physiomics-plc.com
+
+Christoph Flamm, 1 
+xtof at tbi.univie.ac.at, http://www.tbi.univie.ac.at/~xtof
+
+Stefan Mueller, 3
+stefan at tbi.univie.ac.at, http://www.tbi.univie.ac.at/~stefan
+
+
+Addresses:
+1: 
+Theoretical Biochemistry Group, Institute for Theoretical Chemistry,
+University of Vienna, Waehringerstrasse 17, 1090 Vienna, Austria
+2: 
+Physiomics PLC, Magdalen Centre, Oxford Science Park, Oxford, OX4 4GA, UK
+3:
+Johann Radon Institute for Computational and Applied Mathematics (RICAM), 
+Austrian Academy of Sciences, Altenbergerstrasse 69, 4040 Linz, Austria 
diff --git a/BUGFIXES b/BUGFIXES
new file mode 100644
index 0000000..060a09b
--- /dev/null
+++ b/BUGFIXES
@@ -0,0 +1,3 @@
+* The old suspect AST_replaceFunctionDefinition indeed caused problems.
+  Thanks to Andrew Finneys observations and the new libSBML function
+  ASTNode_swapChildren, this bug could be resolved. June 8, 2005
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..43d4870
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,513 @@
+
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+  When we speak of free software, we are referring to freedom of use,
+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 and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+^L
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+^L
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, 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 library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete 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 distribute a copy of this License along with the
+Library.
+
+  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 Library or any portion
+of it, thus forming a work based on the Library, 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) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+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 Library, 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 Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+^L
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you 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.
+
+  If distribution of 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 satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+^L
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be 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.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+^L
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library 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.
+
+  9. 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 Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+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 with
+this License.
+^L
+  11. 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 Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library 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 Library.
+
+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.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library 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.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser 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 Library
+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 Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+^L
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+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
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "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
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. 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 LIBRARY 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
+LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+^L
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.
+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.
+
+
+    <one line to give the library's name and a brief idea of what it
+does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library 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
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
+
+Also add information on how to contact you by electronic and paper
+mail.
+
+You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the library,
+if necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James
+  Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..aaeeb57
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,34 @@
+2010-09-28 Rainer Machne <raim at tbi.univie.ac.at>
+	* added lib64 search in config/*.m4 files, patch by Takeshi Abe
+
+2009-02-13 Christoph Flamm <xtof at tbi.univie.ac.at>
+	* changed automake/autoconf framework to produce both the static
+	  and shared library in a portable manner
+
+2007-09-20 Rainer Machne <raim at tbi.univie.ac.at>
+	* implemented thread-save sensitivity - BREAKING SENSE INTERFACES!:
+	** moved sensitivity structures from odeModel_t to new odeSense_t
+	** separated compilation of odeModel and odeSense functions, therefore
+	** removed TCC (doesn't support multiple code states) online compilation
+	* added CV_NORMAL_TSTOP mode for CVODES forward solver
+	** added CvodeSettings_setTStop to allow saver dynamic value update
+	** automatic usage of TSTOP for event and discontinuous models
+
+2007-08-22 Christoph Flamm <xtof at tbi.univie.ac.at>
+	* added gcc compilation on-the-fly capability. This solves the
+	32/64 bit architecture problems we had with TCC.
+
+2007-06-20 James Lu and Stefan Mueller
+	* implemented adjoint solver for discrete observation data
+	* etc. ??
+
+2007-06-12 Christoph Flamm <xtof at tbi.univie.ac.at>
+	* updated library sources to work with sundials suit v2.3.0
+
+2007-05-11 Rainer Machne <raim at tbi.univie.ac.at>
+	* added Tiny C Compiler (TCC) compilation on-the-fly
+	capability (problems: TCC only works for 32 bit architecture).
+
+2008-03-10 Rainer Machne <raim at tbi.univie.ac.at>
+	* repaired varySettings and batch integration for design points
+	as initially intended by Witold Eryk Wolski
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..af8d04b
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,340 @@
+		         INSTALLATION OF
+		   The SBML ODE Solver Library
+		             SOSlib
+	
+Below you find very short installation instructions specific
+for the SBML_odeSolver and also the generic installation
+instructions for autoconf/automake powered packages.
+	
+See the README file in the same directory as this file, for 
+short information on usage, functionality and architecture. 
+
+More detaild installation instructions will follow in one of
+the next versions of this package. In the meantime, please
+contact Rainer Machne, raim at tbi.univie.ac.at for help and
+any further questions.
+
+SHORT INSTALLATION INFORMATION:
+
+1) INSTALL REQUIRED LIBRARIES
+
+ The SBML_odeSolver depends on the following free libraries:
+
+ Required libraries (SBML and numerical integration):
+	libSBML:        http://sbml.org/software/libsbml/
+			Version 2.3.4 recommended for 1.6.0, 
+			Version 3.4.1 - 5.x.x for github version
+	SUNDIALS Suite: http://www.llnl.gov/CASC/sundials/
+                        Version 2.1.1 required for 1.6.0,
+			Version 2.3.0 required for CVS/github version!
+
+NOTE: configure Sundials with the --enable-shared option!
+	        
+ Optional libraries (data visualization):
+	GRAPHVIZ:       http://www.graphviz.org
+                        Version: 2.0
+	GRACE:          http://plasma-gate.weizmann.ac.il/Grace/
+                        Version: 5.1.18
+		      
+
+2B) COMPILE AND INSTALL SOSlib with GNU TOOLS
+
+ NOTES FOR INSTALLATION ON MAC:
+ It was noted that on Mac sometimes the .dylib extension is missing for
+ Sundials libraries in /usr/local/lib. The solution is just to add them 
+ manually for each sundials library file. This issue and the solution
+ were reported by Geraldine Cellière for Mac OS X 10.8.2.
+
+ NOTES FOR INSTALLATION WINDOWS:
+ Please note that there are also precompiled Windows binaries
+ available, and detailed instructions to use these or how
+ to build SOSlib from source under Windows in the folder
+ Win32 or online at
+ http://www.tbi.univie.ac.at/~raim/odeSolver/doc/installWin.html
+
+ NOTES FOR INSTALLATION FROM GITHUB VERSION:
+ If you have cloned the source code from github, make sure
+ Autoconf, Automake, and Libtool are installed and 
+ run autoreconf:
+
+	autoreconf 
+or, if that fails, try
+	autoreconf -i
+	
+ to generate a configure script.
+
+ INSTALLATION:
+ In general compilation and installation of the package 
+ follows the usual procedure for GNU software.
+ After unpacking the tool, change to the main directory
+ (SBML_odeSolver) and type:
+
+	./configure
+	make
+	make install
+
+
+Non-standard location of SBML_odeSolver executable:
+
+ With 
+
+	./configure --prefix=PATH
+
+ the program executable can be installed into a
+ non-standard location (PATH), which you want to do,
+ if you don't have root permissions on your system.
+
+Non-standard locations of required and optional packages:
+
+ With 
+
+	./configure --with-libsbml=LIBSBMLPATH
+	./configure --with-sundials=SUNDIALSPATH
+	./configure --with-grace=GRACEPATH
+	./configure --with-graphviz=GRAPHVIZPATH
+
+ you can indicate any non-standard location where the
+ respective tools can be found.
+ Note that for CVODE you will usually need to give the
+ path this way, as it is only locally installed to the
+ directory where you compiled/built it (see below).
+
+
+In the following you find generic installation instructions as given
+by the autoconf/automake tools.
+
+
+--------------------------------------------------------------------
+GENERIC INSTRUCTIONS
+--------------------------------------------------------------------
+
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
+Foundation, Inc.
+
+   This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+   These are generic installation instructions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory.  After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+   By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the `--target=TYPE' option to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+will cause the specified gcc to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+
diff --git a/INSTALL_SOLARIS b/INSTALL_SOLARIS
new file mode 100644
index 0000000..3395a79
--- /dev/null
+++ b/INSTALL_SOLARIS
@@ -0,0 +1,106 @@
+From tommi.aho at tut.fi Thu Dec 22 12:02:35 2005
+Date: Thu, 22 Dec 2005 13:01:23 +0200
+From: Tommi Aho <tommi.aho at tut.fi>
+To: Rainer Machne <raim at tbi.univie.ac.at>
+Cc: sbmlsolver-discuss at lists.sourceforge.net
+Subject: [SOSlib-discuss] Installation summary for Solaris 9
+
+    [ The following text is in the "ISO-8859-1" character set. ]
+    [ Your display is set for the "ISO-8859-15" character set.  ]
+    [ Some special characters may be displayed incorrectly. ]
+
+
+Hi!
+
+There were some difficulties with Solaris 9 and odeSolver 1.6.0. Here is 
+a summary how I got it done. Maybe this helps you.
+
+
+sbmlsolver> gunzip  SBML_odeSolver-1.6.0.tar.gz
+sbmlsolver> tar -xvvf SBML_odeSolver-1.6.0.tar
+
+Change into configure, line 4192 (only this line because the following 
+configuration doesn't use the other lines including the -rpath switch):
+Original line 4192:
+SBML_RPATH="-Wl,-rpath,$with_libsbml/lib"
+Modified line:
+SBML_RPATH="-Wl,-R,$with_libsbml/lib"
+
+sbmlsolver/SBML_odeSolver-1.6.0> ./configure 
+--prefix=/home/u2/univ2/ttkk/tomaho/sbmlsolver/local_installation \
+--with-libsbml=/home/u2/univ2/ttkk/tomaho/libsbml/local_installation \
+--with-sundials=/home/u2/univ2/ttkk/tomaho/sundials/sundials
+
+...
+Build Settings for SBML_odeSolver v1.6.0:
+----------------------------------
+  host type            = solaris
+  shared lib extension = so
+  install dir          = 
+/home/u2/univ2/ttkk/tomaho/sbmlsolver/local_installation
+  CC                   = gcc
+  CFLAGS               =
+  LDFLAGS              =
+  LIBS                 = -lm
+  SBML Library         = yes
+       CFLAGS          = 
+-I/home/u2/univ2/ttkk/tomaho/libsbml/local_installation/include
+-I/home/u2/univ2/ttkk/tomaho/libsbml/local_installation/include/sbml
+       LDFLAGS         = 
+-L/home/u2/univ2/ttkk/tomaho/libsbml/local_installation/lib
+       LIBS            = -lsbml
+SUNDIALS Library         = yes
+       CFLAGS          = 
+-I/home/u2/univ2/ttkk/tomaho/sundials/sundials/include
+       LDFLAGS         = -L/home/u2/univ2/ttkk/tomaho/sundials/sundials/lib
+       LIBS            = -lsundials_kinsol -lsundials_cvodes 
+-lsundials_cvode -lsundials_nvecserial -lsundials_shared
+  GRACE                = no
+XMGRACE functionality will NOT be installed!
+  GRAPHVIZ             = no
+GRAPHVIZ functionality will NOT be installed!
+
+
+sbmlsolver/SBML_odeSolver-1.6.0> make
+...
+options.c:7:20: getopt.h: No such file or directory
+...
+
+getopt has problems with portability. See e.g. 
+http://www.thedotin.net/maillists/coldsync-hackers/msg01314.html
+
+Download the needed getopt files, e.g. from 
+http://www.molpopgen.org/krthornt/gccSolaris/
+Compile them
+sbmlsolver/SBML_odeSolver-1.6.0/odeSolver> gcc --pedantic -c getopt.c
+sbmlsolver/SBML_odeSolver-1.6.0/odeSolver> gcc --pedantic -c getopt1.c
+
+Add the object files to the linking by modifying
+odeSolver/Makefile and odeSolver/Makefile.in:
+The following 2 lines exist in both of these files. The third line is 
+added (and the slash in the 2nd line).
+am_odeSolver_OBJECTS = main.$(OBJEXT) commandLine.$(OBJEXT) \
+        options.$(OBJEXT) printModel.$(OBJEXT) interactive.$(OBJEXT) \
+        getopt1.$(OBJEXT) getopt.$(OBJEXT)
+
+sbmlsolver/SBML_odeSolver-1.6.0> make
+
+sbmlsolver/SBML_odeSolver-1.6.0> make install
+
+... and the system is running. :-)
+
+Best regards,
+Tommi
+
+
+
+
+-------------------------------------------------------
+This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
+for problems?  Stop!  Download the new AJAX search engine that makes
+searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
+http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
+_______________________________________________
+sbmlsolver-discuss mailing list
+sbmlsolver-discuss at lists.sourceforge.net
+https://lists.sourceforge.net/lists/listinfo/sbmlsolver-discuss
diff --git a/INSTALL_WIN.txt b/INSTALL_WIN.txt
new file mode 100644
index 0000000..58752ef
--- /dev/null
+++ b/INSTALL_WIN.txt
@@ -0,0 +1,150 @@
+INSTALLATION of the SBML_odeSolver 
+in a Windows / MinGW environment
+
+by
+Akira Funahashi, Ph.D. | Kitano Symbiotic Systems Project,
+                       | ERATO-SORST, JST
+http://www.symbio.jst.go.jp/~funa/		       
+
+with comments by
+Rainer Machne
+raim at tbi.univie.ac.at
+Institute for Theoretical Chemistry, University of Vienna
+
+
+-----------------------------------------------------------------------
+
+
+... good news. I've succeeded to compile odeSolver on
+Windows. The compiled "examples/example.exe" runs on "cmd.exe" :-)
+
+=======================================================================
+(ex.)
+  C:$somewhere\examples> example.exe ..\Test\MAPK.xml 1000 100
+  ...
+  1000 96.9163 3.08369 204.9 64.981 30.1189 3.43619 10.196 286.368
+  ##CONCENTRATIONS
+  #t MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP
+=======================================================================
+
+I've compiled odeSolver-1.5.0pre with MinGW (Minimal GNU set for
+Windows). Although I have to tweak around with the code, it was not
+so hard. Here is what I have done to compile odeSolver-1.5.0pre on
+Windows.
+
+ 1. Install MinGW-3.2.0-rc-3.
+    The release version of MinGW is MinGW-3.1.0-1, but it doesn't
+    have a function acosh(), atanh() etc in math library(libm). 
+    So you have to use the release-candidate version of MinGW.
+
+ 2. Install MSYS-1.0.10.exe
+    MSYS is like a xterm,rxvt which runs on Windows.
+    You can download it from the official site of MinGW.
+
+ 3. Install msysDTK-1.0.1.exe
+    msysDTK is a set of useful commands (cvs, ssh, perl) for MinGW.
+    You can download it from the official site of MinGW.
+
+ 4. Install libsbml-2.2.0 for Windows.
+    I've installed a binary version of libsbml-2.2.0.
+    libsbml-2.2.0 will be installed to 
+    "C:\Program Files\SBML\libsbml-2.2.0-xerces" by default.
+
+ 5. Execute MSYS.exe, which you can see on your desktop.
+    The following commands must be executed on MSYS window.
+
+ 6. Mount MINGW's file system.
+     $ cd /etc
+     $ mv fstab.sample fstab
+
+ 7. Copy DLL and header files from libsbml-2.2.0 to your MinGW's
+    home directory. Just drag & drop the folder 
+    "C:\Program Files\SBML\libsbml-2.2.0-xerces\win32" to 
+    "C:\msys\1.0\home\funa" (my home directory is /home/funa in MinGW),
+    and rename "win32" to "libsbml".
+
+ 8. Compile CVODE.
+    In the MSYS window, please do the following:
+     $ cd
+     $ tar xvzf cvode.tar.gz
+     $ cd CVODE
+     $ make
+
+ 9. Compile odeSolver-1.5.0pre.
+     $ cd
+     $ tar xvzf SBML_odeSolver-1.5.0pre.tar.gz
+     $ cd SBML_odeSolver-1.5.0pre
+     $ CPPFLAGS="-I$HOME/libsbml/include" LDFLAGS="-L$HOME/libsbml/bin \
+        -lsbml" ./configure --with-libcvode="$HOME/CVODE"
+     $ make
+       ... The compile will fail because there is no definition of
+           ENTRY in /usr/include/search.h (I don't know why. I guess
+           this is a MinGW's problem)
+	   
+COMMENT: ENTRY is not used anywhere. You can just delete the line
+
+  if(!(data->val = (ENTRY *) safe_calloc(neq, sizeof(ENTRY))))
+      fprintf(stderr, "failed!\n");
+
+from src/cvodedata.c, and the two lines
+
+  #include <search.h> /* for ENTRY type and hashing (not functional) */
+and
+  ENTRY *val;
+
+from the file src/cvodedata.h. 
+Alternatively, you can add the following to cvodedata.h :
+	   
+     $ vi src/cvodedata.h
+       /* --- add following lines --- */
+          typedef struct entry {
+              char  *key;
+              void  *data;
+          } ENTRY;
+       /* --- end --- */
+       
+     $ make
+       ... The compile will fail because MinGW doesn't have a function
+           safe_calloc().
+     $ vi src/cvodedata.c
+       replace all "safe_calloc" to "calloc" by following "ex" command.
+       :%s/safe_calloc/calloc/g
+
+COMMENT: safe_calloc stems from libSBML example programs, that can be
+compiled within a testing/memory tracing environment, used by Ben Bornstein
+in libSBML development. It wasn't used for the odeSolver, and you can
+replace all occurences of safe_calloc with calloc.
+
+     $ make
+       ... Compile will work now.
+
+10. Compile examples/main.c. 
+     $ cd examples/
+     $ vi Makefile
+       modify include path and library path, and delete libgrace things.
+     $ make
+     $ objdump -p example.exe | grep DLL  # check the dependency of libraries
+       DLL Name: KERNEL32.dll
+       DLL Name: msvcrt.dll
+       DLL Name: libsbml.dll
+
+11. Test
+    Launch "cmd.exe" from Windows Start Menu, and execute example.exe.
+
+    ===================================================================
+    C:$somewhere\examples> example.exe ..\Test\MAPK.xml 1000 100
+    ...
+    1000 96.9163 3.08369 204.9 64.981 30.1189 3.43619 10.196 286.368
+    ##CONCENTRATIONS
+    #t MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP
+    ===================================================================
+
+I haven't used cygwin, which is well-known for emulating UN*X
+environment on Windows. The compiled binary by cygwin requires
+cygwin.dll for its execution, which makes the end-user confused to use 
+the binary. MinGW generates pure Windows native binary so the compiled
+binary won't require any extra library.
+
+-- 
+Akira Funahashi, Ph.D. | Kitano Symbiotic Systems Project,
+		       | ERATO-SORST, JST
diff --git a/KNOWN_BUGS b/KNOWN_BUGS
new file mode 100644
index 0000000..9ac8952
--- /dev/null
+++ b/KNOWN_BUGS
@@ -0,0 +1,3 @@
+SBMLDocument_free() in main() causes a segmentation fault,
+when the sbml file is read from a remote computer
+and constructODEs(m) has been called ???  
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..1f4619e
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,75 @@
+# $Id: Makefile.am,v 1.29 2007/09/28 13:41:49 raimc Exp $
+## 
+## This library is free software; you can redistribute it and/or modify it
+## under the terms of the GNU Lesser General Public License as published
+## by the Free Software Foundation; either version 2.1 of the License, or
+## any later version.
+## 
+## This library 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. The software and
+## documentation provided hereunder is on an "as is" basis, and the
+## authors have no obligations to provide maintenance, support,
+## updates, enhancements or modifications.  In no event shall the
+## authors be liable to any party for direct, indirect, special,
+## incidental or consequential damages, including lost profits, arising
+## out of the use of this software and its documentation, even if the
+## authors have been advised of the possibility of such damage.  See
+## the GNU Lesser General Public License for more details.
+## 
+## You should have received a copy of the GNU Lesser General Public License
+## along with this library; if not, write to the Free Software Foundation,
+## Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+## 
+## The original code contained here was initially developed by:
+## 
+##     Christoph Flamm
+## 
+## Contributor(s):
+##     Rainer Machne
+##
+
+ACLOCAL_AMFLAGS = -I config
+
+##if MAKE_BINDINGS
+##   SUBDIRS = src odeSolver bindings
+##else
+
+   SUBDIRS = src odeSolver examples tutorial
+if UNITTEST
+SUBDIRS += unittest
+endif
+
+##endif
+EXTRA_DIST = Win32/* \
+             OUTLOOK \
+             SOSlib.doxy \
+             odeSolver.doxy \
+             odeSolver/*.c \
+             odeSolver/*.h \
+             odeSolver/Makefile.am \
+             scripts/*.pl \
+             scripts/*.awk \
+             sbml/*.xsd \
+             doc/README \
+             Test/simple.sh \
+             Test/testsuite/README \
+             Test/testsuite/odeSolver-wrapper.bsh \
+             Test/testsuite/odeSolver-wrapper-once.pl \
+             Test/testsuite/workingtests.txt \
+             examples/README \
+             examples/MAPK.xml \
+             examples/basic-model1-forward-l2.xml \
+             examples/*.c \
+             examples/*objfun \
+             examples/*pt.dat \
+             examples/Makefile.am \
+             examples/Makefile.in \
+             examples/Makefile.batch \
+             examples/Makefile.integrate \
+             tutorial/Makefile.am \
+             tutorial/Makefile.in \
+             tutorial/*.c \
+             tutorial/*.pl \
+             tutorial/*.xml
+
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..e69de29
diff --git a/OUTLOOK b/OUTLOOK
new file mode 100644
index 0000000..ce1cb2c
--- /dev/null
+++ b/OUTLOOK
@@ -0,0 +1,115 @@
+Subject: SOSlib todo (fwd)
+
+Also see our `roadmap' at
+http://www.tbi.univie.ac.at/~raim/odeSolver/roadmap/index.html
+
+DOKU:
+
+optimize usage of Doxygen, esp. for odeSolver command-line application
+and its man pages!
+
+start SOSlib/methods Wiki
+
+CODE:
+
+1.6.1: Performance Optimization
+
+Problem:  no reference for performance
+Solution: create SOSlib Benchmarking Test Suite, with defined settings
+          and scripts
+	  
+Problem:  BDF/Adams-Moulton, Newton/Functional iteration
+          behaviour differences not exactly known
+Solution: Use a bench marking test suite to systematically compare
+	  
+
+Problem:  kineticLaw parameters are replaced and can't be used for
+          sensitivity analysis
+Solution: globalize it! pass optional listOfParameters to be filled with
+          globalized kL parameters, and add to ode model
+
+Problem:  each kinetic law appears as the same formula in many ODEs,
+          while it could also be evaluated only once per function f
+          calls
+Solution: pass optional listOfRules/listOfParameters to odeFromReactions
+          and convert kineticLaws to parameter and rule!
+          Then add the new rules/parameters to the ode model
+
+Problem:  kinetic law types, encoded as sboTerms in SBML L2V2, 
+          as currently discussed by the sbml community,
+          could be evaluated in a hard coded form, which might be faster 
+	  then our current approach
+Solution: setUserDefinedFunction (in processAST.c) could be used to 
+          set hard-coded evaluation for sboTerms encoding certain pre-
+	  defined kinetic laws. The ODEs could then either contain directly
+	  the sboTerm or this approach could be combined with above
+	  suggestion of using `globalized' kinetic laws as assignment
+	  rules. These assignment rules could then contain the udf 
+	  function call.
+
+Problem:  Constant Parameters need to stay in the formulae, for later
+          setting with IntegratorInstance_setVariable, as well as for
+          arbitrary sensitivity analysis
+Solution: pass a OptimizeFlag to odeConstruct, which causes replacment
+          of all constant parameters and sets a
+          `NoSensitivityAnalysisPossible' flag for the integratorInstance
+
+
+Problem:  each IntegratorInstance_setVariableValue frees and creates
+          solver structures, if a ODE variable is set
+Solution: use CvodeReInit in integrateOneStep, when a flag sets
+	  the solverstructures invalid, this flag can be set e.g. by
+	  IntegratorInstance_setVariableValue (by Andrew)
+			      
+Problem:  sensitivity analysis behaviour should be interfaced in more
+          detail      
+Solution: SENS errors control: separate error values,
+          TRUE/FALSE error control
+	  set good pbar values
+
+Problem:  SUNDIALS comes with parallel solver routines
+Solution: implement SUNDIALS parallel routines
+
+Problem:  hardcoded model would always be fastest
+Solution: write a function (based on evaluateAST/differentiateAST) that 
+          converts all formulae to C code, write out a complete C file
+	  that only needs linking to SUNDIALS for compilation. Compile and
+	  run. Eventually we could include TCC (Ben's suggestion) to do
+	  compilation and execution at runtime.
+
+
+1.6.1: New Features
+
+drawSensitivity: better way? combine with jacobian?
+
+external data function:
+- incorporate interpolation function
+- write example
+(- differentiation for sens.analysis?
+not possible/needed because not constant?)
+
+output: print default SBML units if not given;
+
+more output options: amount/concentration/relative/total, sensitivities,
+                     selected species/parameters
+
+sensitivity analysis for selected params
+
+odeSolver: print sensitivities to XMGrace 
+
+
+
+1.6.2: New Features
+
+adjoint sensitivities
+
+IDA/IDAS, analog to CVODES
+
+exact event detection
+
+
+1.6.3: New Features
+
+simple stochastic solver
+
+parameter identification
diff --git a/Perlen/AddLegend.pl b/Perlen/AddLegend.pl
new file mode 100644
index 0000000..bb7f551
--- /dev/null
+++ b/Perlen/AddLegend.pl
@@ -0,0 +1,75 @@
+#!/usr/bin/perl
+# -*-Perl-*-
+# Last changed Time-stamp: <2005-08-30 18:31:41 xtof>
+# $Id: AddLegend.pl,v 1.3 2005/08/30 16:33:56 chfl Exp $
+
+use Getopt::Long;
+use File::Basename;
+use strict;
+
+# some globals
+my @LOC = (0.20, 0.90);
+my $FSIZE = .5;
+my $LEG = 'on'; 
+
+usage() unless GetOptions("loc=s" => sub{local $_ = $_[1]; @LOC = split},
+			  "lfs=f" => \$FSIZE,
+			  "noLeg" => sub{$LEG = 'off'},
+			  "h"     => \&usage);
+
+my $FILENAME = $ARGV[0] || "stdin";
+
+make_legend(search_legend());
+while (<>) {print}
+
+#---
+sub search_legend { local $_; while ((<>)) { last if m/^\#t/ } return $_ }
+
+#---
+sub make_legend {
+  local $_ = shift;
+  my @F = split;
+  shift @F;
+  print << "EOL";
+@    title "$FILENAME"
+@    legend $LEG
+@    legend loctype view
+@    legend $LOC[0], $LOC[1]
+@    legend box color 1
+@    legend box pattern 1
+@    legend box linewidth 1.0
+@    legend box linestyle 1
+@    legend box fill color 0
+@    legend box fill pattern 1
+@    legend font 8
+@    legend char size $FSIZE
+@    legend color 1
+@    legend length 4
+@    legend vgap 1
+@    legend hgap 2
+@    legend invert false
+EOL
+
+  my $i = 0;
+  foreach my $species (@F) {
+    print "\@    s$i legend  \"$species\"\n";
+    $i++;
+  }
+}
+
+#---
+sub usage {
+  print STDERR
+      "\n  Usage: @{[basename($0)]} [options]\n";
+  print STDERR
+      "     -loc  <Str>  Set location of legend box (upper left corner)\n",
+      "                  (default: @LOC)\n",
+      "     -lfs  <Flt>  Sets size of legend label characters\n",
+      "                  (default: $FSIZE)\n",      
+      "     -h           display help message\n\n";
+    exit(0);
+}
+
+
+
+__END__
diff --git a/README b/README
new file mode 100644
index 0000000..599f617
--- /dev/null
+++ b/README
@@ -0,0 +1,121 @@
+
+                              SOSlib
+                   The SBML ODE SOLVER LIBRARY
+
+       For more information about the SBML ODE Solver Library,
+
+                               see:
+           http://www.tbi.univie.ac.at/~raim/odeSolver/
+                         or send email to:
+                      odes at tbi.univie.ac.at
+
+
+
+INTRODUCTION
+
+The SBML ODE Solver Library (SOSlib) is a simple command-line tool and
+programming library for (1) constructing a system of ordinary differential
+equations (ODE) from chemical reaction networks and (2) numerically
+integrating the time course of concentrations of chemical species and (3)
+basic visualization of model structure and integration results. It is based
+on SBML, the XML standard for description of biological reaction networks,
+the SBML library libSBML for parsing SBML and constructing the ODE system,
+and on CVODE for numerical integration of the derived system of
+ODEs. Optional data visualization modules allow printing of integration
+results directly to Grace and drawing graphs of the reaction network, and a
+Jacobian interaction graph of the ODE system via graphviz' graph drawing
+library.
+
+The SBML ODE Solver can be used as a programming library, similar in style
+to the use of libSBML. Please, see the examples directory for usage within
+other programs, and linking issues.
+
+INSTALLATION
+
+The file INSTALL in the main directory gives instructions how to
+build SOSlib with GNU Tools autoconf/automake.
+
+The file README.txt in folder Win32 gives instructions how to
+build SOSlib as a Visual C++ project.
+
+More detailed information can be accessed online at
+http://www.tbi.univie.ac.at/~raim/odeSolver/doc/
+
+USAGE
+
+After installing the program, type
+
+odeSolver <sbmlfile.xml> [options]
+
+Please start the program with option -h/--help (type `odeSolver -h')
+for more information on program and output control via command-line options.
+
+Short tutorials on usage of this and other SOSlib applications can be
+found online at
+http://www.tbi.univie.ac.at/~raim/odeSolver/doc/app.html
+
+ARCHITECTURE
+
+Currently, the SOSlib has been tested on Fedora Linux,
+Mac OS X/Darwin and Windows. It is written in pure ISO C and
+should thus also run on other systems.
+We would highly appreciate any reports!
+
+BUG REPORTS
+Please see online at
+http://www.tbi.univie.ac.at/~raim/odeSolver/support/
+
+BASIC FUNCTIONALITY
+
+The SOSlib takes a SBML file of level 1 or level 2 (see
+http://sbml.org/documents/) as an input. A SBML file describes networks of
+chemical reactions and initial amounts/concentrations of the participating
+chemicals; additionally it can include predefined events and rules.
+The chemical reactions can have a mathemitcal definition of its rate law,
+which is represented by a `kinetic law' in SBML. The `kinetic law' differs
+from a usual rate law, in that it describes change of amount instead of
+concentrations.
+
+The SOSlib then constructs a set of ordinary differential equations (ODEs)
+for the rate of change of all chemical species' concentrations (d[x]/dt =
+f(x)) from the reactions where the species appear as reactants or
+products. ODEs will not be constructed for species concentrations that are
+already defined by SBML assignment or rate rules.  A Jacobian matrix of the
+resulting ODE system, i.e. the derivatives of the rates towards all other
+concentrations (that are defined by an ODE), is constructed, if all
+equations are differentiable (i.e. continuous).
+
+The ODE system is constructed as another SBML model, which can also be
+printed out when option -o or --printsbml is given.
+This SBML can however ignore SBML intentions: the resulting `species'
+can also describe parameters or compartments, and not only chemcial
+species. Every ODE is represented as an SBML `rate rule'.
+Such a pure ODE model, encoded in SBML, could also be directly passed to
+the program.
+
+NOTE THAT: the SOSlib can thus also be used as a SOLVER for
+ANY ODE SYSTEM, if the user is willing to ignore SBML definitions and
+describe her ODE system in (potentially wrong!) SBML.
+
+
+Then the ODE system is passed to a function that calls CVODE to numerically
+integrate the ODEs, i.e. calculate the time development of concentrations.
+CVODE uses the generated Jacobian matrix or an internal approximation, if one
+or more ODEs contain discontinuous expressions, or the user has chosen so.
+
+The results can be printed to the calling terminal (stdout), to a file or
+to XMGRACE, if the optional grace module has been installed.
+
+Additionally the reaction network can be drawn as a bipartite graph, using
+the optional module based on GRAPHVIZ graph drawing algorithms and its
+graphical output. The dependecies of rates on species concentrations
+as given by the Jacobian matrix (if defined), can also be drawn as a graph.
+This can sometime be useful to get a quick impression of relevant
+interactions, e.g. feedback loops, in the system.
+
+Please await the (upcoming) detailed documentation in the `doc'
+directory of one of the next versions of this distribution,
+for more details on the procedure and usage. Contact the authors (email
+adresses above), if you have further questions.
+
+Have Fun!
diff --git a/SOS_Win32/SBW_odeSolver/SBWOdeSolver.cpp b/SOS_Win32/SBW_odeSolver/SBWOdeSolver.cpp
new file mode 100644
index 0000000..ccee13b
--- /dev/null
+++ b/SOS_Win32/SBW_odeSolver/SBWOdeSolver.cpp
@@ -0,0 +1,639 @@
+#include "SBWOdeSolver.h"
+
+#include <sbml/SBMLWriter.h>
+#include <sbml/SBMLReader.h>
+#include <sbml/SBMLTypes.h>
+#include <iostream>
+
+using namespace std;
+
+SBWOdeSolver::SBWOdeSolver () 
+{
+	_dTimeStart = 0.0;
+	_dTimeEnd = 25.0;
+	_nNumPoints = 100;
+	_bChangedNumPoints = false;
+	_bChangedTimeStart = false;
+	_bChangedTimeEnd   = false;
+	_bContinuous = false;
+}
+SBWOdeSolver::~SBWOdeSolver ()
+{
+}
+
+
+void SBWOdeSolver::freeOldModel()
+{
+	try
+	{
+		_oConstant.clear();
+		_oVariables.clear();
+		_oAssigned.clear();
+
+		_oParameters.clear();
+		_oSpecies.clear();
+		_oReactions.clear();
+		_oCompartments.clear();
+
+		if (_oIntegrator != NULL)
+			IntegratorInstance_free(_oIntegrator);
+		if (_oSettings != NULL)
+			CvodeSettings_free(_oSettings);
+		if (_oDet != NULL)
+		{
+			ASTNode_free(_oDet);
+			_oDet = NULL;
+		}
+		if (_oOdeModel != NULL)
+		{
+			ODEModel_free(_oOdeModel);
+			_oOdeModel = NULL;
+		}
+		if (_oOde != NULL)
+		{
+			Model_free(_oOde);
+			_oOde = NULL;
+		}
+		//if (_model != NULL)
+		//{
+		//	Model_free(_model);
+		//	_model = NULL;
+		//}
+		if (_sbmlDoc != NULL)
+		{
+			SBMLDocument_free(_sbmlDoc);
+			_sbmlDoc = NULL;
+		}
+
+	}
+	catch (...)
+	{
+	}
+	_oDet = NULL;
+	_oOdeModel = NULL;
+	_oOde = NULL;
+	_model = NULL;
+	_sbmlDoc = NULL;
+	_oSettings = NULL;
+	_oIntegrator = NULL;
+
+}
+void SBWOdeSolver::loadSBML(std::string sSBML)
+{
+
+	freeOldModel();
+	SBMLReader oReader;
+
+	//if ( (_sbmlDoc = parseModelFromString(strdup(sSBML.c_str()), 0, 0, "",
+	//	"", "", "")) == NULL )
+
+	if ((_sbmlDoc = oReader.readSBMLFromString(sSBML.c_str())) == NULL)
+	{
+		_sbmlDoc  = NULL;
+		throw new SBWApplicationException(
+			"The model could not be read.", 
+			"Please validate that the given model is indeed valid SBML.");
+	}
+	else
+	{
+		SBMLDocument *oDoc = (SBMLDocument*) _sbmlDoc;
+		if (oDoc->getLevel() == 1)
+		{
+			oDoc->setLevelAndVersion(2,1);
+			
+			SBMLWriter oWriter; string sSBML = oWriter.writeToString(oDoc);
+			SBMLReader oReader; oDoc = oReader.readSBMLFromString(sSBML);
+			_sbmlDoc = oDoc;
+		}
+		_model = SBMLDocument_getModel(oDoc);
+		_oModel = (Model*) _model;
+		
+		_oOdeModel = ODEModel_create(_model);
+		if (_oOdeModel == NULL)
+			throw new SBWApplicationException("Loading failed", "The model could not be loaded due to problems with the simulator. The most likely cause is that this model uses a feature not supported by the simulator");
+		_oDet= ODEModel_constructDeterminant(_oOdeModel);
+		_oOde = Model_reduceToOdes(_model);
+	}	
+
+	int nCount = _oOdeModel->nalg + _oOdeModel->nass + _oOdeModel->nconst + _oOdeModel->neq;
+	/*for (int i = 0; i < nCount; i++)
+	{
+		cout << i << "\t" << _oOdeModel->names[i] << endl;
+	}*/
+
+	for (int i = 0; i < _oOdeModel->neq; i++)
+	{
+		_oVariables.push_back(_oOdeModel->names[i]);
+	}
+	for (int i = _oOdeModel->neq; i < _oOdeModel->neq + _oOdeModel->nass; i++)
+	{
+		_oAssigned.push_back(_oOdeModel->names[i]);
+	}
+	for (int i = _oOdeModel->neq + _oOdeModel->nass; i < _oOdeModel->neq + _oOdeModel->nass + _oOdeModel->nconst; i++)
+	{
+		_oConstant.push_back(_oOdeModel->names[i]);
+	}
+
+	_nNumReactions = _oModel->getNumReactions();
+	for (int i = 0; i < _nNumReactions ; i++)
+	{
+		_oReactions.push_back(_oModel->getReaction(i)->getId());
+	}
+	_nNumCompartments = _oModel->getNumCompartments();
+	for (int i = 0; i < _nNumCompartments; i++)
+	{
+		_oCompartments.push_back(_oModel->getCompartment(i)->getId());
+	}
+	_nNumSpecies = _oModel->getNumSpecies();
+	for (int i = 0; i < _nNumSpecies ; i++)
+	{
+		if (!_oModel->getSpecies(i)->getBoundaryCondition())
+		_oSpecies.push_back(_oModel->getSpecies(i)->getId());
+	}
+	_nNumParameters = _oModel->getNumParameters();
+	for (int i = 0; i < _nNumParameters; i++)
+	{
+		_oParameters.push_back(_oModel->getParameter(i)->getId());
+	}
+
+	// little bit of sanity checking ... 
+	if (_model == NULL || _oOdeModel == NULL ||  _oOde == NULL)
+	{
+		freeOldModel();
+		throw new SBWApplicationException("Loading failed", "The model could not be loaded due to problems with the simulator. The most likely cause is that this model uses a feature not supported by the simulator");
+	}
+
+
+}
+std::string SBWOdeSolver::getSBML()
+{
+	if (_sbmlDoc == NULL)
+		throw new SBWApplicationException(
+			"No model loaded yet.", 
+			"Please load a model before using this function.");
+	SBMLWriter_t *oWriter = SBMLWriter_create();
+	SBMLWriter_setProgramName (oWriter, "SBW ODE Solver Module");
+	SBMLWriter_setProgramVersion (oWriter, "CVS 10/13/2007");
+	char *result = SBMLWriter_writeSBMLToString(oWriter, _sbmlDoc);
+	SBMLWriter_free(oWriter);
+	return result;
+}
+void SBWOdeSolver::setTimeStart(double dStart)
+{
+	if (dStart != _dTimeStart)
+	{
+		_dTimeStart = dStart;
+		_bChangedTimeStart = true;
+	}
+}
+void SBWOdeSolver::setTimeEnd (double dEnd)
+{
+	if (dEnd != _dTimeEnd)
+	{
+		_dTimeEnd = dEnd;
+		_bChangedTimeEnd = true;
+	}
+}
+void SBWOdeSolver::setNumPoints (int nPoints)
+{
+	if (nPoints != _nNumPoints)
+	{
+		_nNumPoints = nPoints;
+		_bChangedNumPoints = true;
+	}
+}
+void SBWOdeSolver::reset()
+{
+	if (_oIntegrator == NULL)
+		return;
+		//throw new SBWApplicationException ("Please load a model first.", "IntegratorInstance was NULL");
+	if (_oIntegrator->data->model  != NULL)
+	IntegratorInstance_reset(_oIntegrator);	
+}
+
+double** SBWOdeSolver::simulate(int &xDim, int &yDim)
+{
+	if (_oVariables.size() == 0)
+		return (double**)malloc(sizeof(double*)*1);
+	try
+	{
+		if (_oIntegrator == NULL || _oSettings == NULL || _bChangedNumPoints || _bChangedTimeEnd || _bContinuous)
+		{	
+			if (_oSettings != NULL)
+			{
+				CvodeSettings_free(_oSettings);
+				IntegratorInstance_free(_oIntegrator);
+				_bChangedNumPoints = false;	
+				_bChangedTimeEnd = false;			
+			}
+
+			_oSettings = CvodeSettings_createWith(_dTimeEnd, _nNumPoints,
+				_dAbsTol, _dRelTol,
+				_nMaxNumSteps, 1, 0,
+				0, 0, 0,
+				0, 1, 0, 2);
+			CvodeSettings_setCompileFunctions(_oSettings, 0);
+			CvodeSettings_setResetCvodeOnEvent(_oSettings, 0);
+			_oIntegrator = IntegratorInstance_create(_oOdeModel, _oSettings);		
+			_bContinuous = false;
+		}
+
+		
+		
+		integrator(_oIntegrator);		
+		return getConcentrationTimeCourse(_oIntegrator->data, xDim, yDim);
+
+	}
+	catch(...)
+	{
+		freeOldModel();
+		throw new SBWApplicationException("Error during simulation, please reload your model, making sure that it is valid.");
+	}
+
+}
+
+int SBWOdeSolver::integrator(integratorInstance_t *engine)
+{
+	if (engine == NULL)
+		throw new SBWApplicationException("Invalid Model, please reload.");
+	odeModel_t *om = engine->om;
+	cvodeData_t *data = engine->data;
+	cvodeSolver_t *solver = engine->solver;
+
+
+	while (!IntegratorInstance_timeCourseCompleted(engine)) 
+	{
+
+		if (!IntegratorInstance_integrateOneStep(engine)) 
+		{
+			/* SolverError_dump(); */
+			return IntegratorInstance_handleError(engine);
+		}
+	}
+
+
+	return 0;
+
+} 
+
+
+double** SBWOdeSolver::simulateEx(double dStart, double dEnd, int nPoints, int &xDim, int &yDim)
+{
+	setTimeStart(dStart);
+	setTimeEnd(dEnd);
+	setNumPoints(nPoints);
+
+	return simulate(xDim, yDim);
+}
+void SBWOdeSolver::setFloatingSpeciesConcentrations(std::vector< double > oValues)
+{
+	throw new SBWApplicationException ("Not implemented yet.", "SBWOdeSolver::setFloatingSpeciesConcentrations(std::vector< double > oValues)");
+
+}
+
+std::vector<double> SBWOdeSolver::getReactionRates()
+{
+	if (_sbmlDoc == NULL)
+		throw new SBWApplicationException ("Please load a model first.", "A model has to be loaded prior to calling this function.");
+
+	std::vector< double > result;
+	bool bFree = false;
+	
+	cvodeData_t *data = NULL;
+	if (_oIntegrator != NULL)
+		data = _oIntegrator->data;
+
+	cvodeResults_t *results;
+	Reaction_t *r;
+	KineticLaw_t *kl;
+	ASTNode_t **kls;
+	unsigned int i;
+	if(!(kls = (ASTNode_t **)calloc(Model_getNumReactions(_model), sizeof(ASTNode_t *)))) 
+	{
+		throw new SBWApplicationException("Could not find reactions.");
+	}
+
+	if ( data == NULL || data->results == NULL ) 
+	{
+
+		data = CvodeData_create(_oOdeModel);
+		bFree =true;
+		for (i=0; i<Model_getNumReactions(_model); i++ ) 
+		{
+			r = Model_getReaction(_model, i);
+			kl = Reaction_getKineticLaw(r);
+			kls[i] = copyAST(KineticLaw_getMath(kl));
+			AST_replaceNameByParameters(kls[i], KineticLaw_getListOfParameters(kl));
+			AST_replaceConstants(_model, kls[i]);
+		}
+
+		for (int i = 0; i < _nNumSpecies; i++)
+		{			
+			const Species_t* species = Model_getSpecies(_model, i);
+			data->value[i] = Species_getInitialConcentration (species);
+		}
+
+
+	}
+	else
+	{
+		results = data->results;
+
+		for (i=0; i<Model_getNumReactions(_model); i++ ) 
+		{
+			r = Model_getReaction(_model, i);
+			kl = Reaction_getKineticLaw(r);
+			kls[i] = copyAST(KineticLaw_getMath(kl));
+			AST_replaceNameByParameters(kls[i], KineticLaw_getListOfParameters(kl));
+			AST_replaceConstants(_model, kls[i]);
+		}
+		i = results->nout-1; // last row
+
+		for (int j=0; j<data->model->neq; j++ ) 
+		{
+			data->value[j] = results->value[j][i];
+		}
+	}
+
+	for (unsigned int i=0; i<Model_getNumReactions(_model); i++ ) {
+		result.push_back(evaluateAST(kls[i], data));
+		ASTNode_free(kls[i]);
+	}
+	free(kls);
+
+	if (bFree)
+	{
+		CvodeData_free(data);
+	}
+
+	return result;
+}
+std::vector<double> SBWOdeSolver::getRatesOfChange()
+{
+	std::vector<double> result;
+	int i,j;
+	cvodeResults_t *results;
+	cvodeData_t *data = NULL;
+	if (_oIntegrator != NULL)
+		data = _oIntegrator->data;
+
+	if ( data == NULL || data->results == NULL ) 
+	{
+		data = CvodeData_create(_oOdeModel);
+		data->currenttime = 0.0;
+		for ( j=0; j<data->model->neq; j++ ) 
+		{
+			const Species_t* species = Model_getSpecies(_model, j);
+			data->value[j] = Species_getInitialConcentration (species);
+			result.push_back(evaluateAST(data->model->ode[j],data));			
+		}
+		CvodeData_free(data);
+
+	}
+	else
+	{
+		results = data->results;
+		i = results->nout-1;		
+		data->currenttime = (float)results->time[i];
+		for ( int j=0; j<data->model->neq; j++ ) {
+			data->value[j] = results->value[j][i];
+			result.push_back(evaluateAST(data->model->ode[j],data));			
+		}
+	}
+
+
+	return result;
+}
+std::vector<std::string> SBWOdeSolver::getFloatingSpeciesNames()
+{
+	if (_sbmlDoc == NULL)
+		throw new SBWApplicationException ("Please load a model first.", "A model has to be loaded prior to calling this function.");
+	return _oVariables;
+}
+
+double SBWOdeSolver::getFloatingSpeciesByIndex(int index)
+{
+	if (_sbmlDoc == NULL)
+		throw new SBWApplicationException ("Please load a model first.", "A model has to be loaded prior to calling this function.");
+
+	if (index >= (int)_oVariables.size())
+		throw new SBWApplicationException ("Index Out of Bounds.", "No floating species exists with the given index.");
+
+	if (_oIntegrator == NULL)
+	{
+		const Species_t* species = Model_getSpecies(_model, index);
+		return Species_getInitialConcentration (species);
+
+	}
+	else
+	{
+		if (_bContinuous)
+			return _oIntegrator->data->value[index];		
+		else
+			return _oIntegrator->data->results->value[index][_oIntegrator->solver->nout-1];		
+	}
+	
+
+}
+std::vector<std::string> SBWOdeSolver::getReactionNames()
+{
+	if (_sbmlDoc == NULL)
+		throw new SBWApplicationException ("Please load a model first.", "A model has to be loaded prior to calling this function.");
+
+	return _oAssigned;
+}
+
+
+double **SBWOdeSolver::getConcentrationTimeCourse(cvodeData_t *oData , int &xDimOut, int &yDimOut)
+{
+	int xDim, yDim;
+	cvodeResults_t *results;
+	odeModel_t *om;
+
+	if ( oData == NULL || oData->results == NULL ) {
+		throw new SBWApplicationException("No results, please integrate first.", "Error occured while trying to create the results set.");      
+	}
+
+
+	results = oData->results;
+	om = oData->model;
+
+	yDim = results->nout;
+	//xDim = oData->nvalues+1;
+	xDim = (int)_oVariables.size()  + 1;
+
+	double **oResult = (double**)malloc(sizeof(double*) * yDim);
+	memset(oResult, 0, sizeof(double*) * yDim);
+	for (int i = 0; i < yDim; i++)
+	{
+		oResult[i] = (double*)malloc(sizeof(double) * xDim);
+		memset(oResult[i], 0, sizeof(double) * xDim);
+	}
+
+	for (int y = 0; y < yDim; y++)
+	{
+		for (int x = 0; x < xDim; x++)
+		{
+			if (x == 0)
+			{
+				oResult[y][x] = results->time[y];
+			}
+			else
+			{					
+				oResult[y][x] = results->value[x-1][y];
+			}
+		}
+	}
+
+	xDimOut = xDim;
+	yDimOut = yDim;
+	return oResult;
+}
+
+double SBWOdeSolver::oneStep(double dCurrentTime, double dStepSize)
+{
+	if (_oIntegrator == NULL || !_bContinuous)
+	{
+		if (_oIntegrator != NULL)
+			IntegratorInstance_free(_oIntegrator );
+		if (_oSettings != NULL)
+		{			
+			CvodeSettings_free(_oSettings);
+		}
+		_oSettings = CvodeSettings_createWith(dStepSize, _nNumPoints,
+			_dAbsTol, _dRelTol,
+			_nMaxNumSteps, 1, 0,
+			0, 1, 0,
+			0, 1, 0, 2);
+		CvodeSettings_setIndefinitely(_oSettings, 1);
+
+		CvodeSettings_setCompileFunctions(_oSettings, 0);
+		CvodeSettings_setResetCvodeOnEvent(_oSettings, 0);
+		CvodeSettings_setTime(_oSettings, dStepSize, 1);
+		_oIntegrator = IntegratorInstance_create(_oOdeModel, _oSettings);				
+		//IntegratorInstance_resetAdjPhase(_oIntegrator);
+		_bContinuous = true;
+	}
+
+	_oIntegrator->solver->iout --; 
+	_oIntegrator->solver->t0 = dCurrentTime;
+	_oIntegrator->solver->t = dCurrentTime;
+	_oIntegrator->opt->Time = dStepSize;	
+	IntegratorInstance_integrateOneStep(_oIntegrator);
+	return dCurrentTime + dStepSize;
+}
+
+
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwGetFloatingSpeciesByIndex (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader)
+{
+	int index;
+	reader >> index;
+	return SystemsBiologyWorkbench::DataBlockWriter() << getFloatingSpeciesByIndex(index);
+}
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwLoadSBML (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader)
+{
+	std::string sSBML;
+	reader >> sSBML;
+	loadSBML(sSBML);
+	return SystemsBiologyWorkbench::DataBlockWriter();
+}
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwOneStep (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader)
+{
+	double dStartTime; double dStepSize;
+	reader >> dStartTime >> dStepSize;
+	return SystemsBiologyWorkbench::DataBlockWriter() << oneStep(dStartTime, dStepSize);
+}
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwGetSBML (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader )
+{
+	return SystemsBiologyWorkbench::DataBlockWriter() << getSBML(); 
+}
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwSetTimeStart (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader)
+{
+	double dTimeStart;
+	reader >> dTimeStart;
+	setTimeStart(dTimeStart);
+	return SystemsBiologyWorkbench::DataBlockWriter();
+}
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwSetTimeEnd (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader)
+{
+	double dTimeEnd;
+	reader >> dTimeEnd;
+	setTimeEnd(dTimeEnd);
+	return SystemsBiologyWorkbench::DataBlockWriter();
+}
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwSetNumpoints (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader)
+{
+	int nPoints; reader >> nPoints;
+	setNumPoints(nPoints);
+	return SystemsBiologyWorkbench::DataBlockWriter();
+}
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwReset (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader)
+{
+	reset();
+	return SystemsBiologyWorkbench::DataBlockWriter();
+}
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwSimulate (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader)
+{
+	int xDim = 0; int yDim = 0; double **oResult = NULL;
+	oResult = simulate(xDim, yDim);
+	SystemsBiologyWorkbench::DataBlockWriter writer; 
+	writer.add(yDim, xDim, oResult);
+	for (int x = 0; x < yDim; x++)
+		free(oResult[x]);
+	free (oResult);
+	return writer;
+}
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwSimulateEx (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader)
+{
+	double dTimeStart; double dTimeEnd; int nNumPoints; int xDim; int yDim; double **oResult;
+	reader >> dTimeStart >> dTimeEnd >> nNumPoints;
+	oResult = simulateEx(dTimeStart, dTimeEnd, nNumPoints, xDim, yDim);
+	SystemsBiologyWorkbench::DataBlockWriter writer; 
+	writer.add(yDim, xDim, oResult);
+	for (int x = 0; x < yDim; x++)
+		free(oResult[x]);
+	free (oResult);
+	return writer;
+}
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwSetFloatingSpeciesConcentrations (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader)
+{
+	std::vector<double> oValues;
+	reader >> oValues;
+	setFloatingSpeciesConcentrations(oValues);
+	return SystemsBiologyWorkbench::DataBlockWriter();
+}
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwGetReactionRates (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader)
+{
+	return SystemsBiologyWorkbench::DataBlockWriter() << getReactionRates();
+}
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwGetRatesOfChange (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader)
+{
+	return SystemsBiologyWorkbench::DataBlockWriter() << getRatesOfChange();
+}
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwGetFloatingSpeciesNames (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader)
+{
+	std::vector<std::string> oNames = getFloatingSpeciesNames();
+	SystemsBiologyWorkbench::DataBlockWriter result;
+	for (unsigned int i = 0; i < oNames.size(); i++)
+		result << oNames[i];
+	return  SystemsBiologyWorkbench::DataBlockWriter() << result;
+}
+SystemsBiologyWorkbench::DataBlockWriter SBWOdeSolver::sbwGetReactionNames (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader)
+{
+	std::vector<std::string> oNames = getReactionNames();
+	SystemsBiologyWorkbench::DataBlockWriter result;
+	for (unsigned int i = 0; i < oNames.size(); i++)
+		result << oNames[i];
+	return  SystemsBiologyWorkbench::DataBlockWriter() << result;
+}
+double SBWOdeSolver::_dAbsTol = 1E-20;
+double SBWOdeSolver::_dRelTol = 1E-6;
+int    SBWOdeSolver::_nMaxNumSteps = 10000;
+SBMLDocument_t *SBWOdeSolver::_sbmlDoc = NULL;
+Model_t        *SBWOdeSolver::_model = NULL;
+Model          *SBWOdeSolver::_oModel= NULL;
+Model_t        *SBWOdeSolver::_oOde= NULL;
+ASTNode_t *SBWOdeSolver::_oDet= NULL;
+odeModel_t *SBWOdeSolver::_oOdeModel= NULL;
+integratorInstance_t *SBWOdeSolver::_oIntegrator= NULL;
+cvodeSettings_t *SBWOdeSolver::_oSettings= NULL;
\ No newline at end of file
diff --git a/SOS_Win32/SBW_odeSolver/SBWOdeSolver.h b/SOS_Win32/SBW_odeSolver/SBWOdeSolver.h
new file mode 100644
index 0000000..7a4f8d7
--- /dev/null
+++ b/SOS_Win32/SBW_odeSolver/SBWOdeSolver.h
@@ -0,0 +1,174 @@
+#ifndef SBW_ODE_SOLVER_H
+#define SBW_ODE_SOLVER_H
+
+#include <SBW/SBW.h>
+#include <string>
+#include <vector>
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+#include <string.h>
+#include <time.h>
+
+#include <sbml/SBMLTypes.h>
+
+#include "../src/sbmlsolver/odeSolver.h"
+
+
+class SBWOdeSolver : public SBWListener
+{
+public:
+	SBWOdeSolver ();
+	~SBWOdeSolver ();
+
+	
+	// descriptive methods
+	std::string getName()			{ return "SBWOdeSolver";}
+	SystemsBiologyWorkbench::DataBlockWriter getNameSBW (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader /*reader*/)
+	{
+		return SystemsBiologyWorkbench::DataBlockWriter() << getName();
+	}
+	std::string getVersion()		{ return "CVS 10/13/2007";}
+	SystemsBiologyWorkbench::DataBlockWriter getVersionSBW (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader /*reader*/)
+	{
+		return SystemsBiologyWorkbench::DataBlockWriter() << getVersion();
+	}
+	std::string getAuthor()			{ return "Frank Bergmann"; }
+	SystemsBiologyWorkbench::DataBlockWriter getAuthorSBW (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader /*reader*/)
+	{
+		return SystemsBiologyWorkbench::DataBlockWriter() << getAuthor();
+	}
+	std::string getDescription()	{ return "SBW Interface to SBML ODE Solver";}
+	SystemsBiologyWorkbench::DataBlockWriter getDescriptionSBW (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader /*reader*/)
+	{
+		return SystemsBiologyWorkbench::DataBlockWriter() << getDescription();
+	}
+	std::string getDisplayName()	{ return "SBWOdeSolver"; } 
+	SystemsBiologyWorkbench::DataBlockWriter getDisplayNameSBW (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader /*reader*/)
+	{
+		return SystemsBiologyWorkbench::DataBlockWriter() << getDisplayName();
+	}
+	std::string getCopyright()		{ return "(c) 2006 Frank Bergmann"; }
+	SystemsBiologyWorkbench::DataBlockWriter getCopyrightSBW (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader /*reader*/)
+	{
+		return SystemsBiologyWorkbench::DataBlockWriter() << getCopyright();
+	}
+	std::string getURL()			{ return "http://www.sys-bio.org"; }
+	SystemsBiologyWorkbench::DataBlockWriter getURLSBW (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader /*reader*/)
+	{
+		return SystemsBiologyWorkbench::DataBlockWriter() << getURL();
+	}
+
+	double getFloatingSpeciesByIndex(int index);
+	SystemsBiologyWorkbench::DataBlockWriter sbwGetFloatingSpeciesByIndex(SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader);
+
+	void loadSBML(std::string sSBML);
+	SystemsBiologyWorkbench::DataBlockWriter sbwLoadSBML (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader);
+	std::string getSBML();
+	SystemsBiologyWorkbench::DataBlockWriter sbwGetSBML (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader );
+	void setTimeStart(double dStart);
+	SystemsBiologyWorkbench::DataBlockWriter sbwSetTimeStart (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader);
+	void setTimeEnd (double dEnd);
+	SystemsBiologyWorkbench::DataBlockWriter sbwSetTimeEnd (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader);
+	void setNumPoints (int nPoints);
+	SystemsBiologyWorkbench::DataBlockWriter sbwSetNumpoints (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader);
+	void reset();
+	SystemsBiologyWorkbench::DataBlockWriter sbwReset (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader);
+	double** simulate(int &xDim, int &yDim);
+	SystemsBiologyWorkbench::DataBlockWriter sbwSimulate (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader);
+	double** simulateEx(double dStart, double dEnd, int nPoints, int &xDim, int &yDim);
+	SystemsBiologyWorkbench::DataBlockWriter sbwSimulateEx (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader);
+	void setFloatingSpeciesConcentrations(std::vector< double > oValues);
+	SystemsBiologyWorkbench::DataBlockWriter sbwSetFloatingSpeciesConcentrations (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader);
+	std::vector<double> getReactionRates();
+	SystemsBiologyWorkbench::DataBlockWriter sbwGetReactionRates (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader);
+	std::vector<double> getRatesOfChange();
+	SystemsBiologyWorkbench::DataBlockWriter sbwGetRatesOfChange (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader);
+	std::vector<std::string> getFloatingSpeciesNames();
+	SystemsBiologyWorkbench::DataBlockWriter sbwGetFloatingSpeciesNames (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader);
+	std::vector<std::string> getReactionNames();
+	SystemsBiologyWorkbench::DataBlockWriter sbwGetReactionNames (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader);
+
+	double oneStep(double dCurrentTime, double dStepSize);
+	SystemsBiologyWorkbench::DataBlockWriter sbwOneStep (SystemsBiologyWorkbench::Module /*from*/, SystemsBiologyWorkbench::DataBlockReader reader);
+
+
+	static void registerMethods(SystemsBiologyWorkbench::MethodTable<SBWOdeSolver> &table)
+	{
+		table.addMethod(&SBWOdeSolver::getAuthorSBW,						"string getAuthor()",							false,"Returns the Author.");
+		table.addMethod(&SBWOdeSolver::getCopyrightSBW,						"string getCopyright()",						false,"Returns the Copyright.");
+		table.addMethod(&SBWOdeSolver::getDescriptionSBW,					"string getDescription()",						false,"Returns the Description.");
+		table.addMethod(&SBWOdeSolver::getDisplayNameSBW,					"string getDisplayName()",						false,"Returns the Display Name.");
+		table.addMethod(&SBWOdeSolver::getNameSBW,							"string getName()",								false,"Returns the Name.");
+		table.addMethod(&SBWOdeSolver::sbwGetFloatingSpeciesNames,			"{} getFloatingSpeciesNames()",					false,"Returns the list of current floating Species.");
+		table.addMethod(&SBWOdeSolver::sbwGetFloatingSpeciesByIndex,		"double getFloatingSpeciesByIndex(int)",		false,"Gets the concentration of a floating species by its index value.");
+
+		table.addMethod(&SBWOdeSolver::sbwGetRatesOfChange,					"double[] getRatesOfChange()",					false,"Returns the rates of change.");
+		table.addMethod(&SBWOdeSolver::sbwGetReactionNames,					"{} getReactionNames()",						false,"Returns a list containing the names of all the reactions in the model.");
+		table.addMethod(&SBWOdeSolver::sbwGetReactionRates,					"double[] getReactionRates()",					false,"Returns the reaction rates for the current time.");
+		table.addMethod(&SBWOdeSolver::sbwGetSBML,							"string getSBML()",								false,"Returns the currently loaded SBML model.");
+		table.addMethod(&SBWOdeSolver::sbwLoadSBML,							"void loadSBML(string)",						true,"loads a new SBML model into the simulator.");
+		table.addMethod(&SBWOdeSolver::sbwOneStep,							"double oneStep(double,double)",				true,"Compute one integration step over the interval stepSize. Returns the value of the new time (usually currentTime + stepSize)");
+		table.addMethod(&SBWOdeSolver::sbwSetFloatingSpeciesConcentrations, "void setFloatingSpeciesConcentrations(double[])",true,"Sets the floating species values to the array vector given in the argument. The number of values in the array must equal the number of species in the model.");
+		table.addMethod(&SBWOdeSolver::sbwSetNumpoints,						"void setNumPoints(int)",						true,"Sets the number of data points to generate during the simulation, defaults to 50 points if not set.");
+		table.addMethod(&SBWOdeSolver::sbwSetTimeStart,						"void setTimeStart(double)",					true,"Sets the time start for the simulation, defaults to 0.0 if not set.");
+		table.addMethod(&SBWOdeSolver::sbwSetTimeEnd,						"void setTimeEnd(double)",						true,"Sets the time end for the simulation, defaults to 25.0 time units if not set.");
+		table.addMethod(&SBWOdeSolver::sbwSimulate,							"double[][] simulate()",						true,"Simulates the model as given in the loadSBML() method. Returns a 2D array containing time in the first column and species concentrations in the remaining columns.");
+		table.addMethod(&SBWOdeSolver::sbwSimulateEx ,						"double[][] simulateEx(double,double,int)",		true,"Simulate the model with the specified timeStart, timeEnd and numPoints. Returns a 2D array containing time in the first column and species concentrations in the remaining columns.");
+		table.addMethod(&SBWOdeSolver::sbwReset,							"void reset()",									false,"Resets the simulator to the initial conditions (initial concentrations) specified in the SBML model.");
+	}
+
+	// SBW ShutDown
+	virtual void onShutdown() { exit(0); }
+protected:
+	double **getConcentrationTimeCourse(cvodeData_t *oData , int &xDim, int &yDim);
+	int integrator(integratorInstance_t *engine);
+	void freeOldModel();
+private:
+	static SBMLDocument_t *_sbmlDoc; //d
+	static Model_t        *_model;   //m
+    static Model          *_oModel;   //m
+	static Model_t        *_oOde;     //ode
+	static ASTNode_t *_oDet; //det;
+	static odeModel_t *_oOdeModel; //om;
+	static integratorInstance_t *_oIntegrator; // ii;
+	static cvodeSettings_t *_oSettings; //set;
+	
+	int _nNumSpecies;
+	std::vector<std::string> _oSpecies;
+	int _nNumParameters;
+	std::vector<std::string> _oParameters;
+	int _nNumCompartments;
+	std::vector<std::string> _oCompartments;
+	int _nNumReactions;
+	std::vector<std::string> _oReactions;
+
+	// vector of the model variables
+	std::vector<std::string> _oVariables;
+	// vector of assigned variables
+	std::vector<std::string> _oAssigned;
+	// vector of constants
+	std::vector<std::string> _oConstant;
+
+	static double _dAbsTol;
+    static double _dRelTol;
+    static int _nMaxNumSteps;
+
+	double	_dTimeStart;
+	double	_dTimeEnd;
+	int		_nNumPoints;
+
+	bool	_bChangedTimeStart;
+	bool	_bChangedTimeEnd;
+	bool	_bChangedNumPoints;
+	bool	_bContinuous;
+	
+	
+};
+
+#endif
+
+
diff --git a/SOS_Win32/SBW_odeSolver/SBW_odeSolver.vcproj b/SOS_Win32/SBW_odeSolver/SBW_odeSolver.vcproj
new file mode 100644
index 0000000..8805cac
--- /dev/null
+++ b/SOS_Win32/SBW_odeSolver/SBW_odeSolver.vcproj
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="SBW_odeSolver"
+	ProjectGUID="{2C00BD88-AD89-49B6-BC5B-768F51C2E7C1}"
+	RootNamespace="SBW_odeSolver"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\src;..\..\odeSolver;..\..\src\sbmlsolver;"$(LIBSBML2_DIR)/include/sbml";"$(LIBSBML_DIR)/include";"$(SUNDIALS_DIR)/include";"$(TCC_DIR)/include";"$(BROKER_DIR)/include""
+				PreprocessorDefinitions="WIN32;DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"
+				DisableSpecificWarnings="4005"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="sbw.lib SBML_odeSolver.lib libsbml.lib sundials.lib  cvodes.lib ida.lib kinsol.lib nvec_ser.lib"
+				OutputFile="$(OutDir)/$(ProjectName)d.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="$(OutDir);"$(LIBSBML_DIR)/Win32/bin";"$(SUNDIALS_DIR)/Win32/bin";"$(BROKER_DIR)/lib""
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/$(ProjectName)d.pdb"
+				SubSystem="2"
+				EntryPointSymbol="mainCRTStartup"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\bin"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\..\src;..\..\odeSolver;..\..\src\sbmlsolver;"$(LIBSBML2_DIR)/include/sbml";"$(LIBSBML_DIR)/include";"$(SUNDIALS_DIR)/include";"$(TCC_DIR)/include";"$(BROKER_DIR)/include""
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"
+				DisableSpecificWarnings="4005"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="sbw.lib SBML_odeSolver.lib libsbml.lib sundials.lib  cvodes.lib ida.lib kinsol.lib nvec_ser.lib"
+				OutputFile="$(OutDir)/$(ProjectName).exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="$(OutDir);"$(LIBSBML_DIR)/Win32/bin";"$(SUNDIALS_DIR)/Win32/bin";"$(BROKER_DIR)/lib""
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				EntryPointSymbol="mainCRTStartup"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath=".\main.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="2"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="2"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\SBWOdeSolver.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath=".\SBWOdeSolver.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/SOS_Win32/SBW_odeSolver/main.c b/SOS_Win32/SBW_odeSolver/main.c
new file mode 100644
index 0000000..24c8ce4
--- /dev/null
+++ b/SOS_Win32/SBW_odeSolver/main.c
@@ -0,0 +1,26 @@
+#include <SBW/SBW.h>
+#include <iostream>
+
+#include "SBWOdeSolver.h"
+
+
+using namespace SystemsBiologyWorkbench;
+using namespace std;
+
+int main(int argc, char*argv[])
+{
+	try
+	{
+		ModuleImpl modImpl("SBWOdeSolver", "SBWOdeSolver", UniqueModule);
+		modImpl.addService("SBWOdeSolver", "SBWOdeSolver", "plugin/simulator/level1", "SBWOdeSolver Simulator");
+		modImpl.addServiceObject("SBWOdeSolver", "SBWOdeSolver", "plugin/simulator/level1", new SBWOdeSolver());
+		modImpl.run(argc,argv);
+	}
+	catch(SBWException *ex)
+	{
+		cerr << "Exception occured: " << ex->getMessage() << endl;
+	}
+	catch(...)
+	{
+	}
+}
\ No newline at end of file
diff --git a/SOS_Win32/SOSLib/SOSLib.vcproj b/SOS_Win32/SOSLib/SOSLib.vcproj
new file mode 100644
index 0000000..b46f7c6
--- /dev/null
+++ b/SOS_Win32/SOSLib/SOSLib.vcproj
@@ -0,0 +1,413 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="SBML_odeSolver"
+	ProjectGUID="{7FD00D97-BE5E-43FA-B27B-7DEA35A3E152}"
+	RootNamespace="SOSLib"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\src;..\..\src\sbmlsolver;"$(LIBSBML_DIR)/include/sbml";"$(LIBSBML_DIR)/include";"$(SUNDIALS_DIR)/include";"$(TCC_DIR)/include""
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SBML_ODESOLVER_EXPORTS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				RuntimeTypeInfo="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="2"
+				DisableSpecificWarnings="4005;4018"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libsbml3.lib sundials.lib  cvodes.lib ida.lib kinsol.lib nvec_ser.lib"
+				OutputFile="$(OutDir)/$(ProjectName)d.dll"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""$(LIBSBML_DIR)/Win32/bin";"$(SUNDIALS_DIR)/Win32/bin""
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/$(ProjectName)d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/$(ProjectName)d.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\bin"
+			IntermediateDirectory="Release"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\..\src;..\..\src\sbmlsolver;"$(LIBSBML_DIR)/include/sbml";"$(LIBSBML_DIR)/include";"$(SUNDIALS_DIR)/include";"$(TCC_DIR)/include""
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SBML_ODESOLVER_EXPORTS"
+				RuntimeLibrary="2"
+				RuntimeTypeInfo="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"
+				DisableSpecificWarnings="4005;4018"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libsbml.lib sundials.lib  cvodes.lib ida.lib kinsol.lib nvec_ser.lib"
+				OutputFile="$(OutDir)/$(ProjectName).dll"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories=""$(LIBSBML_DIR)/Win32/bin";"$(SUNDIALS_DIR)/Win32/bin""
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/$(ProjectName).lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\arithmeticCompiler.c">
+			</File>
+			<File
+				RelativePath="..\..\src\ASTIndexNameNode.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\charBuffer.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\compiler.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\cvodeData.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\cvodeSolver.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\daeSolver.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\drawGraph.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\integratorInstance.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\integratorSettings.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\interpol.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\modelSimplify.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\nullSolver.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\odeConstruct.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\odeModel.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\odeSolver.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\processAST.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\sbml.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlResults.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\sensSolver.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\solverError.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\util.c">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						CompileAs="1"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\src\sbmlsolver\arithmeticCompiler.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\ASTIndexNameNode.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\charBuffer.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\compiler.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\cvodeData.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\cvodeSolver.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\daeSolver.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\drawGraph.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\exportdefs.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\integratorInstance.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\integratorSettings.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\interpol.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\modelSimplify.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\nullSolver.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\odeConstruct.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\odeModel.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\odeSolver.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\processAST.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\sbml.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\sbmlResults.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\sensSolver.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\solverError.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\util.h">
+			</File>
+			<File
+				RelativePath="..\..\src\sbmlsolver\variableIndex.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/SOS_Win32/SOS_CommandLine/SOS_CommandLine.vcproj b/SOS_Win32/SOS_CommandLine/SOS_CommandLine.vcproj
new file mode 100644
index 0000000..e26d854
--- /dev/null
+++ b/SOS_Win32/SOS_CommandLine/SOS_CommandLine.vcproj
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="SBML_odeSolverApp"
+	ProjectGUID="{53BCE0E5-7515-46A7-BA1B-D4B72918E810}"
+	RootNamespace="SOS_CommandLine"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\src;..\..\odeSolver;..\..\src\sbmlsolver;"$(LIBSBML_DIR)/include/sbml";"$(LIBSBML_DIR)/include";"$(SUNDIALS_DIR)/include";"$(TCC_DIR)/include""
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolver.lib libsbml3.lib sundials.lib  cvodes.lib ida.lib kinsol.lib nvec_ser.lib"
+				OutputFile="$(OutDir)/$(ProjectName)d.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="$(OutDir);"$(LIBSBML_DIR)/Win32/bin";"$(SUNDIALS_DIR)/Win32/bin""
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/$(ProjectName)d.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\bin"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\..\src;..\..\odeSolver;..\..\src\sbmlsolver;"$(LIBSBML_DIR)/include/sbml";"$(LIBSBML_DIR)/include";"$(SUNDIALS_DIR)/include";"$(TCC_DIR)/include""
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolver.lib libsbml.lib sundials.lib  cvodes.lib ida.lib kinsol.lib nvec_ser.lib"
+				OutputFile="$(OutDir)/$(ProjectName).exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="$(OutDir);"$(LIBSBML_DIR)/Win32/bin";"$(SUNDIALS_DIR)/Win32/bin""
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\odeSolver\commandLine.c">
+			</File>
+			<File
+				RelativePath="..\..\odeSolver\getopt.c">
+			</File>
+			<File
+				RelativePath="..\..\odeSolver\getopt1.c">
+			</File>
+			<File
+				RelativePath="..\..\odeSolver\interactive.c">
+			</File>
+			<File
+				RelativePath="..\..\odeSolver\main.c">
+			</File>
+			<File
+				RelativePath="..\..\odeSolver\options.c">
+			</File>
+			<File
+				RelativePath="..\..\odeSolver\printModel.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/SOS_Win32/SOS_Win32.sln b/SOS_Win32/SOS_Win32.sln
new file mode 100644
index 0000000..944b9f1
--- /dev/null
+++ b/SOS_Win32/SOS_Win32.sln
@@ -0,0 +1,41 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SBML_odeSolver", "SOSLib\SOSLib.vcproj", "{7FD00D97-BE5E-43FA-B27B-7DEA35A3E152}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SBML_odeSolverApp", "SOS_CommandLine\SOS_CommandLine.vcproj", "{53BCE0E5-7515-46A7-BA1B-D4B72918E810}"
+	ProjectSection(ProjectDependencies) = postProject
+		{7FD00D97-BE5E-43FA-B27B-7DEA35A3E152} = {7FD00D97-BE5E-43FA-B27B-7DEA35A3E152}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SBW_odeSolver", "SBW_odeSolver\SBW_odeSolver.vcproj", "{2C00BD88-AD89-49B6-BC5B-768F51C2E7C1}"
+	ProjectSection(ProjectDependencies) = postProject
+		{7FD00D97-BE5E-43FA-B27B-7DEA35A3E152} = {7FD00D97-BE5E-43FA-B27B-7DEA35A3E152}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectDependencies) = postSolution
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{7FD00D97-BE5E-43FA-B27B-7DEA35A3E152}.Debug.ActiveCfg = Debug|Win32
+		{7FD00D97-BE5E-43FA-B27B-7DEA35A3E152}.Debug.Build.0 = Debug|Win32
+		{7FD00D97-BE5E-43FA-B27B-7DEA35A3E152}.Release.ActiveCfg = Release|Win32
+		{7FD00D97-BE5E-43FA-B27B-7DEA35A3E152}.Release.Build.0 = Release|Win32
+		{53BCE0E5-7515-46A7-BA1B-D4B72918E810}.Debug.ActiveCfg = Debug|Win32
+		{53BCE0E5-7515-46A7-BA1B-D4B72918E810}.Debug.Build.0 = Debug|Win32
+		{53BCE0E5-7515-46A7-BA1B-D4B72918E810}.Release.ActiveCfg = Release|Win32
+		{53BCE0E5-7515-46A7-BA1B-D4B72918E810}.Release.Build.0 = Release|Win32
+		{2C00BD88-AD89-49B6-BC5B-768F51C2E7C1}.Debug.ActiveCfg = Debug|Win32
+		{2C00BD88-AD89-49B6-BC5B-768F51C2E7C1}.Debug.Build.0 = Debug|Win32
+		{2C00BD88-AD89-49B6-BC5B-768F51C2E7C1}.Release.ActiveCfg = Release|Win32
+		{2C00BD88-AD89-49B6-BC5B-768F51C2E7C1}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/SOSlib.doxy b/SOSlib.doxy
new file mode 100644
index 0000000..2920331
--- /dev/null
+++ b/SOSlib.doxy
@@ -0,0 +1,1228 @@
+# Doxyfile 1.4.4
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = "SBML ODE Solver Library API"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         = "1.7.0-pre1"
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = doc/api
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of 
+# source files, where putting all generated files in the same directory would 
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
+# Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# This tag can be used to specify the encoding used in the generated output. 
+# The encoding is not always determined by the language that is chosen, 
+# but also whether or not the output is meant for Windows or non-Windows users. 
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
+# forces the Windows encoding (this is the default for the Windows binary), 
+# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING   = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is 
+# used as the annotated text. Otherwise, the brief description is used as-is. 
+# If left blank, the following values are used ("$name" is automatically 
+# replaced with the name of the entity): "The $name class" "The $name widget" 
+# "The $name file" "is" "provides" "specifies" "contains" 
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
+# inherited members of a class in the documentation of that class as if those 
+# members were ordinary class members. Constructors, destructors and assignment 
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like the Qt-style comments (thus requiring an 
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = YES
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
+# a new page for each member. If set to NO, the documentation of a member will 
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
+# sources only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
+# only. Doxygen will then generate output that is more tailored for Java. 
+# For instance, namespaces will be presented as packages, qualified scopes 
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = NO
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories 
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# in the documentation. The default is YES.
+
+SHOW_DIRECTORIES       = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
+# doxygen should invoke to get the current version for each file (typically from the 
+# version control system). Doxygen will invoke the program by executing (via 
+# popen()) the command <command> <input-file>, where <command> is the value of 
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
+# provided by doxygen. Whatever the progam writes to standard output 
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  =  ./src ./src/sbmlsolver
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
+
+FILE_PATTERNS          = *.c *.cpp *.h
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = util.c sbml.c
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
+# directories that are symbolic links (a Unix filesystem feature) are excluded 
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories. Note that the wildcards are matched 
+# against the file with absolute path, so to exclude all test directories 
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = util.c sbml.c util.h sbml.h
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = 
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
+
+INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = 
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = 
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = YES
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = src/sbmlsolver 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = *.h 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = YES
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = YES
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_WIDTH    = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes 
+# that lay further from the root node will be omitted. Note that setting this 
+# option to 1 or 2 may greatly reduce the computation time needed for large 
+# code bases. Also note that a graph may be further truncated if the graph's 
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 
+# the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, which results in a white background. 
+# Warning: Depending on the platform used, enabling this option may lead to 
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = NO
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..cd4e923
--- /dev/null
+++ b/TODO
@@ -0,0 +1,124 @@
+* check different results for events in model supplied by Michael Hopkins
+  when using the -c option or not! Model: Final_combined_HCV_model_simplified_HR_09_05_12.xml.dat 
+
+* cross-check AST processing with MathML definitions
+  at http://www.w3.org/TR/MathML2/appendixc.html
+
+* example for UsrDefFnct: 
+	* interpolation from external data file
+	* callBack Fnct
+
+* general accuracy / performance: see file OUTLOOK
+        * generate SOSlib Benchmarking Test Suite
+        * adapt printout accuracy to CVODE errors
+	* check usage of double, float, long float etc.
+	* choose CVODE error tolerances automatically for each ODE??
+	* choose other solvers from the CVODE package
+
+* Function Definition Replacement:
+	* implement in evaluate/differentiateAST
+
+* SUNDIALS interface
+        * use more/better options!
+	* use of parallel capabilities
+	* KINSOL for steady state detection
+	* daeSolver IDA
+
+* eventDetector:
+	* integrate from last to current timestep, until trigger < CVODE ERROR
+	* use combination of interpolation and exact integration
+	  to event trigger
+
+* online communication
+	* use callback and user-defined-functions
+	  for communication with other tools/solver 
+	  (e.g. stochastic)
+
+* compilation:
+	* use TCC runtime compilation of CVODE code
+
+* SBW: write interface function
+
+* BioUML: explore interface possibility
+
+* command-line and interactive usage
+	* change visualization to GNUPLOT (3D!)
+	* bioLog_resultVisualizer: ...
+
+___TODO MARCH 2007__
+
+* recreate solver structures when choosing new solver/iteration methods
+* implement max. order
+
+* check n-ary for relational operators
+
+* remove space() and fprintf(stderr,...)
+
+* optimize sens. matrix construction, compare parameters
+
+* implement compilation for all RHS
+
+* event bug! check rule evaluation ordering, and default observables
+also see odeModel.c line 175
+    /* AMF => if you want to expand the default observables set please
+    let me know.  If you include the reaction symbols performance
+    will be degraded in models with events */
+
+* use values array also for SBML input model
+
+* high level interfaces: check error handling
+
+* error handling in getForwardSens
+
+* check all rule evaluations for optimization
+
+
+____TODO SEPT 2007___
+
+* find better solution to avoid problems with II_setVariableValue (events 
+  and external use)
+
+* cvodeSettings: set a flag, whether a change to settings requires
+  reinit of solver (reset, etc) to become active already for the next run
+
+* doxygen: link structure documentation to respective modules  
+
+
+____TODO JUNE 2008___
+
+* configure process
+** update messages: on failure, name required packages/versions!
+
+
+
+____TODO SEPT 2008___
+
+FOR RELEASE:
+
+todo:
+* clean-up configure process
+* swig-bindings
+* Windows, MSCV projects?
+* optimize gcc compilation for big models
+**  compile adjoint stuff separately
+* arithmeticCompiler:
+** failed tests:
+   mathml-log, mathml-logbase,
+   discontinuityTimeAndDelay-xor,
+   discontinuityTimeAndDelay-or, discontinuityTimeAndDelay-not,
+   discontinuityTimeAndDelay-lt, discontinuityTimeAndDelay-leq,
+   discontinuityTimeAndDelay-geq, discontinuityTimeAndDelay-discontinuity,
+   discontinuityTimeAndDelay-and 
+
+* FUNCTIONALITY AND OPTIMIZATION
+** write matrix of SBML functionalities
+** write INFO for optimal use/efficiency (storeResults, compilers, etc.)
+
+wishlist:
+* ida solver, see CellML API
+* kin solver
+* ipopt: local optimization run, odeOptimizer
+
+
+
+
diff --git a/Test/simple.sh b/Test/simple.sh
new file mode 100755
index 0000000..c3e7dca
--- /dev/null
+++ b/Test/simple.sh
@@ -0,0 +1,108 @@
+#!/bin/sh
+# -*-Bash-*-
+# Last changed Time-stamp: <2006-06-15 14:01:40 xtof>
+# $Id: simple.sh,v 1.12 2006/06/15 12:57:24 chfl Exp $
+
+USAGE="Usage: $0 [-b S] [-e N] [-h] [-j] [-m N] [-r N] [-t N] [-x] FOO.xml ..."
+XMGR=$(which xmgrace)
+PERL=$(which perl)
+SOLVER=odeSolver/odeSolver
+SOLVERBASE=".."
+TIME=1e5
+ABSE=1e-9
+RELE=1e-4
+MAXS=1e4
+PRINTS=1e2
+JAC=
+NOLEG=
+
+# process command-line arguments
+while getopts "b:e:hjm:p:r:t:x" opt; do
+    case $opt in
+	b)  SOLVERBASE=$OPTARG
+	    ;;
+	e)
+	    ABSE=$OPTARG
+	    ;;
+	h)
+	    echo $USAGE
+	    echo "       -b S  set solver base directory to S"
+	    echo "       -e N  set absolute error to N"
+	    echo "       -h    display this help message"
+	    echo "       -j    use jacobian matrix"
+	    echo "       -m N  set maxstep to N"
+	    echo "       -p N  set printstep to N"
+	    echo "       -r N  set relative error to N"
+	    echo "       -t N  set integration time to N"
+	    echo "       -x    don't display legend in xmgrace"
+	    exit 1
+	    ;;
+	j)
+	    JAC=-j
+	    ;;
+	m)
+	    MAXS=$OPTARG
+	    ;;
+	p)
+	    PRINTS=$OPTARG
+	    ;;
+	r)
+	    RELE=$OPTARG
+	    ;;
+	t)
+	    TIME=$OPTARG
+	    ;;
+	x)
+	    NOLEG=-noLeg
+	    ;;
+	\?)
+	echo $USAGE
+	exit 1
+	;;
+    esac
+done
+
+# shift options from arg-array
+shift $(($OPTIND - 1))
+
+# get model file or set to default model
+XML=${1-../examples/MAPK.xml}
+GR=$(basename $XML .xml).gr
+
+set -e
+
+# remove possible old integration output file
+if test -x $GR; then \rm $GR; fi
+
+# show command line
+echo "${SOLVERBASE}/$SOLVER $XML $JAC --time=$TIME --mxstep=$MAXS --printstep=100 --error=$ABSE --rerror=$RELE -l > $GR"
+
+# integrate
+OK=$($SOLVERBASE/$SOLVER $XML $JAC --time=$TIME --mxstep=$MAXS --printstep=100 --error=$ABSE --rerror=$RELE -l > $GR)
+if [ $OK ]; then
+  echo ""
+  echo "!!! Error: something went wrong during integration !!!"
+  echo ""
+  exit 1
+fi
+
+# display results
+if test -x $PERL; then
+  if test -x $XMGR; then
+    # add a legend an display results with xmgrace
+    $PERL $SOLVERBASE/scripts/xmgracefile.pl $NOLEG $GR | $XMGR -nxy -&
+  else
+    echo "!!! ERROR: Xmgrace not found !!!"
+    exit 1
+  fi
+else
+  echo "!!! ERROR: Perl not found !!!"
+  exit 1
+fi
+
+# if we came that far everything workt fine
+echo ""
+echo "Every thing works fine, have fun with your odeSolver =;)"
+echo ""
+
+# End of file
diff --git a/Test/testsuite/README b/Test/testsuite/README
new file mode 100644
index 0000000..89d35fb
--- /dev/null
+++ b/Test/testsuite/README
@@ -0,0 +1,57 @@
+This folder contains scripts for testing with the SBML SEMANTIC TEST SUITE,
+and result and log files for tests with the version 
+released on Tue, 19 Oct 2004.
+
+To reproduce the result files, download and unpack the SBML Semantic Test Suite 
+from http://www.cds.caltech.edu/~afinney/semantic-test-suite.tar.gz
+unpack, and  
+
+edit the file `odeSolver-wrapper-once.pl' 
+
+to add the correct path for the odeSolver application. Then
+
+copy odeSolver-wrapper.bsh and odeSolver-wrapper-once.pl
+
+to the folder semantic-test-suite/AUTOMATION/wrappers, change to the directory 
+semantic-test-suite and run 
+
+`./runtests.bsh -vwrapper=AUTOMATION/wrappers/odeSolver-wrapper.bsh >> testlog.txt'
+
+in a bash or shell.
+
+
+
+odeSolver-wrapper.bsh:
+	A bash script to call odeSolver-wrapper-once.pl several times, 
+	if the previous run failed, passing a lower absolute error treshold.
+	This script is called from the scripts provided by the Test Suite,
+	and adds the absolute error value. It start with a very low error,
+	and tries again with higher error tolerance if the SBML_odeSolver
+	failed.
+odeSolver-wrapper-once.pl:
+        A Perl script that calls the SBML_odeSolver, with time/printstep 
+	values passed by the calling Test Suite script (runtests.bsh/test.bsh) 
+	and an error value added by the script odeSolver-wrapper.bsh.
+	It then reads the output of the SBML_odeSolver, and writes 
+	results to testout.csv needed by the Test Suite scripts.
+	If CVODE fails, it writes TRY AGAIN as a message to the calling
+	script, to try again with higher error tolerance.
+	It also writes a log file "testlog.txt" of SBML_odeSolver output 
+	during the test run.
+testlog.txt:
+	A log file from one test run with all provided tests of the 
+	SBML Semantic Test Suite, produced by calling the runtests.bsh
+	script with `runtests.bsh -vwrapper=odeSolver-wrapper.bsh >> testlog.txt.
+	Thus this file contains the outputs of 
+	a) runtests.bsh
+	b) the wrapper script odeSolver-wrapper-once.pl, and
+	c) the odeSolver itself (via (b)).
+workingtest.txt:
+	Text file used by runtests.txt, contains all tests that tested
+	correctly with the SBML_odeSolver; not working tests are commented
+	out by removing `TEST' and `.test' text.
+testlist.txt:
+	Original testlist provided by the SBML Semantic Test Suite
+	
+	
+	
diff --git a/Test/testsuite/odeSolver-wrapper-once.pl b/Test/testsuite/odeSolver-wrapper-once.pl
new file mode 100755
index 0000000..a24b731
--- /dev/null
+++ b/Test/testsuite/odeSolver-wrapper-once.pl
@@ -0,0 +1,97 @@
+#!/usr/bin/perl -w
+
+#use lib "$ENV{HOME}/perl/L";
+#use LibSBML;
+
+my $steps = 0;
+my $flag6 = 0;
+my $error = "";
+my $test = "";
+
+($test = $ARGV[1]) =~ s/(-l2)?\.xml/\.test/g;
+
+open(LOGFILE, ">>testlog.txt");
+print LOGFILE "\nTEST $test\n";
+
+print(LOGFILE "../../../odeSolver/odeSolver $ARGV[1] --time=$ARGV[2] --printstep=$ARGV[3] --error=$ARGV[0] --rerror=1e-10\n");
+open(TESTRUN,
+     "../../../odeSolver/odeSolver $ARGV[1] --time=$ARGV[2] --printstep=$ARGV[3] --error=$ARGV[0] --rerror=1e-10 2>> \"singletestlog\" |");
+
+`cat singletestlog >> testlog.txt`;
+
+while(<TESTRUN>)
+{
+    @values = split(/ /, $_);
+    
+    if ( $#values > 1 && $values[0] eq "#t" )
+    {
+	foreach $num (1 .. $#values-1)
+	{
+	    $SPECIES[$num] = sprintf $values[$num];
+	}
+    }
+    
+    if ($#values > 1 && $values[0]=~/^\d.*/ )
+    {
+	foreach $num (1 .. $#values-1)
+	{
+	    $VAL{$values[0]}{$SPECIES[$num]} = $values[$num];
+	    $time[$steps] = $values[0];
+	}
+	$steps++;
+    }
+
+    if ($_=~/CVODES ERROR/)
+    {
+	$flag6 =1;
+        $error = $_;
+	print $_;
+    }
+}
+close TESTRUN;
+
+open(TESTERROR, "<singletestlog");
+while(<TESTERROR>)
+{
+    if ($_=~/CVODES ERROR/)
+    {
+	$flag6 =1;
+        $error = $_;
+	print $_;
+    }    
+}
+unlink("singletestlog");
+unlink($ARGV[4]);
+open(CSVFILE, ">$ARGV[4]" );
+
+
+if ( $flag6 == 1 )
+{
+    print CSVFILE "TRY AGAIN";    
+    print LOGFILE "CVODE FAILURE using --error $ARGV[0]: $error";    
+}
+else
+{    
+    print CSVFILE "time";
+    foreach $argnum (6 .. $#ARGV)
+    {
+	print CSVFILE ",$ARGV[$argnum]";
+    }
+    print CSVFILE "\n";
+
+    foreach $stepnum (0 .. $#time)
+    {
+	print CSVFILE "$time[$stepnum]";
+	foreach $argnum (6 .. $#ARGV)
+	{
+	    print CSVFILE ",$VAL{$time[$stepnum]}{$ARGV[$argnum]}";
+	}
+	print CSVFILE "\n";
+    }
+    print LOGFILE "SUCCESS, using --error $ARGV[0]\n";
+}
+print LOGFILE "\n";
+
+close CSVFILE;
+close LOGFILE;
+
diff --git a/Test/testsuite/odeSolver-wrapper.bsh b/Test/testsuite/odeSolver-wrapper.bsh
new file mode 100755
index 0000000..8e003d6
--- /dev/null
+++ b/Test/testsuite/odeSolver-wrapper.bsh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+odeSolver-wrapper-once.pl 1e-22 $@
+if grep "TRY AGAIN" $4; then
+    echo trying error 1e-21
+    odeSolver-wrapper-once.pl 1e-21 $@
+fi
+if grep "TRY AGAIN" $4; then
+    echo trying error 1e-20
+    odeSolver-wrapper-once.pl 1e-20 $@
+fi
+if grep "TRY AGAIN" $4; then
+    echo trying error 1e-19
+    odeSolver-wrapper-once.pl 1e-19 $@
+fi
+if grep "TRY AGAIN" $4; then
+    echo trying error 1e-18
+    odeSolver-wrapper-once.pl 1e-18 $@
+fi
+if grep "TRY AGAIN" $4; then
+    echo trying error 1e-17
+    odeSolver-wrapper-once.pl 1e-17 $@
+fi
+if grep "TRY AGAIN" $4; then
+    echo trying error 1e-16
+    odeSolver-wrapper-once.pl 1e-16 $@
+fi
+if grep "TRY AGAIN" $4; then
+    echo trying error 1e-15
+    odeSolver-wrapper-once.pl 1e-15 $@
+fi
+if grep "TRY AGAIN" $4; then
+    echo trying error 1e-14
+    odeSolver-wrapper-once.pl 1e-14 $@
+fi
diff --git a/Test/testsuite/testlist.txt b/Test/testsuite/testlist.txt
new file mode 100644
index 0000000..fd4dfe2
--- /dev/null
+++ b/Test/testsuite/testlist.txt
@@ -0,0 +1,123 @@
+CATEGORY Basic Reactions
+TEST basic-reactions/model1/BothBoundary/basic-model1-bothboundary.test
+TEST basic-reactions/model1/Boundary/basic-model1-boundary.test
+TEST basic-reactions/model1/Boundary2/basic-model1-boundary2.test
+TEST basic-reactions/model1/NoEffect/basic-model1-noeffect.test
+TEST basic-reactions/model1/StoichiometryIs2/basic-model1-stoichiometryIs2.test
+TEST basic-reactions/model1/forward-from-zero/basic-model1-forward-from-zero.test
+TEST basic-reactions/model1/forward/basic-model1-forward.test
+TEST basic-reactions/model2/base/basic-model2-base.test
+TEST basic-reactions/model2/boundaryA/basic-model2-boundaryA.test
+TEST basic-reactions/model2/boundaryAB/basic-model2-boundaryAB.test
+TEST basic-reactions/model2/boundaryABC/basic-model2-boundaryABC.test
+TEST basic-reactions/model2/boundaryC/basic-model2-boundaryC.test
+TEST basic-reactions/model2/stoichiometryA2/basic-model2-stoichiometryA2.test
+TEST basic-reactions/model3/base/basic-model3-base.test
+TEST basic-reactions/model3/stoichiometry2S4/basic-model3-stoichiometry2S4.test
+TEST basic-reactions/model3/boundaryS4/basic-model3-boundaryS4.test
+TEST basic-reactions/model4/base/basic-model4-base.test
+TEST basic-reactions/model5/base/basic-model5-base.test
+TEST basic-reactions/model6/base/basic-model6-base.test
+CATEGORY Parameter Namespace
+TEST parameterNamespace/global/parameterNamespace-global.test
+TEST parameterNamespace/globalAndLocal/parameterNamespace-globalAndLocal.test
+TEST parameterNamespace/local/parameterNamespace-local.test
+TEST parameterNamespace/speciesAndLocal/parameterNamespace-speciesAndLocal.test
+CATEGORY Complex Reactions
+TEST complexReactions/FeedbackCompetitive/feedbackCompetitive.test
+TEST complexReactions/Hill/Hill.test
+TEST complexReactions/ModifierNegativeFeedback/complexReactions-ModifierNegativeFeedback.test
+TEST complexReactions/NoProduct/complex-NoProduct.test
+TEST complexReactions/NoReactant/complex-NoReactant.test
+TEST complexReactions/linearNegFeedback/complex-linearnegfeedback.test
+CATEGORY MathML
+TEST mathml/abs/mathml-abs.test
+TEST mathml/arccos/mathml-arccos.test
+TEST mathml/arccosh/mathml-arccosh.test
+TEST mathml/arccot/mathml-arccot.test
+TEST mathml/arccoth/mathml-arccoth.test
+TEST mathml/arccsc/mathml-arccsc.test
+TEST mathml/arccsch/mathml-arccsch.test
+TEST mathml/arcsec/mathml-arcsec.test
+TEST mathml/arcsech/mathml-arcsech.test
+TEST mathml/arcsin/mathml-arcsin.test
+TEST mathml/arcsinh/mathml-arcsinh.test
+TEST mathml/arctan/mathml-arctan.test
+TEST mathml/arctanh/mathml-arctanh.test
+TEST mathml/cn-e-notation/mathml-cn-e-notation.test
+TEST mathml/cn-integer/mathml-cn-integer.test
+TEST mathml/cn-rational/mathml-cn-rational.test
+TEST mathml/cn-real/mathml-cn-real.test
+TEST mathml/cos/mathml-cos.test
+TEST mathml/cosh/mathml-cosh.test
+TEST mathml/cot/mathml-cot.test
+TEST mathml/coth/mathml-coth.test
+TEST mathml/csc/mathml-csc.test
+TEST mathml/csch/mathml-csch.test
+TEST mathml/divide/mathml-divide.test
+TEST mathml/exp/mathml-exp.test
+TEST mathml/exponentiale/mathml-exponentiale.test
+TEST mathml/ln/mathml-ln.test
+TEST mathml/log/mathml-log.test
+TEST mathml/logbase/mathml-logbase.test
+TEST mathml/minus-unary/mathml-minus-unary.test
+TEST mathml/minus/mathml-minus.test
+TEST mathml/pi/mathml-pi.test
+TEST mathml/plus/mathml-plus.test
+TEST mathml/power/mathml-power.test
+TEST mathml/root-degree/mathml-root-degree.test
+TEST mathml/root/mathml-root.test
+TEST mathml/sec/mathml-sec.test
+TEST mathml/sech/mathml-sech.test
+TEST mathml/sin/mathml-sin.test
+TEST mathml/sinh/mathml-sinh.test
+TEST mathml/tan/mathml-tan.test
+TEST mathml/tanh/mathml-tanh.test
+TEST mathml/times/mathml-times.test
+CATEGORY Basic Rules
+TEST basicRules/assignment-Species/basicRules-assignment-Species.test
+TEST basicRules/assignmentInconsistent-Species/basicRules-assignmentInconsistent-Species.test
+TEST basicRules/assignmentInitialize-Species/basicRules-assignmentInitialize-Species.test
+TEST basicRules/assignmentUsedInAssignment-Species/basicRules-assignmentUsedInAssignment-Species.test
+TEST basicRules/assignmentUsedInDifferential-Species/basicRules-assignmentUsedInDifferential-Species.test
+TEST basicRules/assignmentUsedInReaction-Species/basicRules-assignmentUsedInReaction-Species.test
+TEST basicRules/differential-Species/basicRules-differential-Species.test
+TEST basicRules/differentialUsedInDifferential-Species/basicRules-differentialUsedInDifferential-Species.test
+TEST basicRules/differentialUsedInReaction-Species/basicRules-differentialUsedInReaction-Species.test
+TEST basicRules/dynamicAssignmentUsedInDifferential-Species/basicRules-dynamicAssignmentUsedInDifferential-Species.test
+TEST basicRules/dynamicAssignmentUsedInReaction-Species/basicRules-dynamicAssignmentUsedInReaction-Species.test
+TEST basicRules/noRule-Species/basicRules-noRule-Species.test
+TEST basicRules/reactionUsedInDifferential-Species/basicRules-reactionUsedInDifferential-Species.test
+TEST basicRules/differentialUsedInAssignment-Species/basicRules-differentialUsedInAssignment-Species.test
+TEST basicRules/differentialUsedInAssignmentConsistent-Species/basicRules-differentialUsedInAssignmentConsistent-Species.test
+TEST basicRules/reactionUsedInAssignment-Species/basicRules-reactionUsedInAssignment-Species.test
+CATEGORY Stoichiometry
+TEST stoichiometry/floatingPoint/stoichiometry-floatingPoint.test
+CATEGORY Discontinuity, Time And Delays
+TEST discontinuityTimeAndDelays/and/discontinuityTimeAndDelay-and.test
+TEST discontinuityTimeAndDelays/ceiling/discontinuityTimeAndDelays-ceiling.test
+TEST discontinuityTimeAndDelays/discontinuity/discontinuityTimeAndDelay-discontinuity.test
+TEST discontinuityTimeAndDelays/factorial/discontinuityTimeAndDelays-factorial.test
+TEST discontinuityTimeAndDelays/false/discontinuityTimeAndDelay-false.test
+TEST discontinuityTimeAndDelays/floor/discontinuityTimeAndDelays-floor.test
+TEST discontinuityTimeAndDelays/geq/discontinuityTimeAndDelay-geq.test
+TEST discontinuityTimeAndDelays/leq/discontinuityTimeAndDelay-leq.test
+TEST discontinuityTimeAndDelays/lt/discontinuityTimeAndDelay-lt.test
+TEST discontinuityTimeAndDelays/not/discontinuityTimeAndDelay-not.test
+TEST discontinuityTimeAndDelays/or/discontinuityTimeAndDelay-or.test
+TEST discontinuityTimeAndDelays/time/discontinuityTimeAndDelays-time.test
+TEST discontinuityTimeAndDelays/true/discontinuityTimeAndDelay-true.test
+TEST discontinuityTimeAndDelays/xor/discontinuityTimeAndDelay-xor.test
+CATEGORY Algebraic Rules
+TEST algebraicRules/basic/algebraicRules-basic.test
+TEST algebraicRules/fastReactionExample/algebraicRules-fastReactionExample.test
+CATEGORY Functions
+TEST functions/algebraic-rule/functions-algebraic-rule.test
+TEST functions/basic-rules/functions-basic-rules.test
+TEST functions/event-assignment/functions-event-assignment.test
+TEST functions/kinetic-law/functions-kinetic-law.test
+CATEGORY Events
+TEST events/1-event-1-assignment/events-1-event-1-assignment.test
+TEST events/1-event-2-assignments/events-1-event-2-assignments.test
+TEST events/2-events-1-assignment/events-2-events-1-assignment.test
+TEST events/increment/events-increment.test
diff --git a/Test/testsuite/testlog.txt b/Test/testsuite/testlog.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Test/testsuite/workingtests.txt b/Test/testsuite/workingtests.txt
new file mode 100644
index 0000000..6fcd803
--- /dev/null
+++ b/Test/testsuite/workingtests.txt
@@ -0,0 +1,123 @@
+CATEGORY Basic Reactions
+TEST basic-reactions/model1/BothBoundary/basic-model1-bothboundary.test
+TEST basic-reactions/model1/Boundary/basic-model1-boundary.test
+TEST basic-reactions/model1/Boundary2/basic-model1-boundary2.test
+TEST basic-reactions/model1/NoEffect/basic-model1-noeffect.test
+TEST basic-reactions/model1/StoichiometryIs2/basic-model1-stoichiometryIs2.test
+TEST basic-reactions/model1/forward-from-zero/basic-model1-forward-from-zero.test
+TEST basic-reactions/model1/forward/basic-model1-forward.test
+TEST basic-reactions/model2/base/basic-model2-base.test
+TEST basic-reactions/model2/boundaryA/basic-model2-boundaryA.test
+TEST basic-reactions/model2/boundaryAB/basic-model2-boundaryAB.test
+TEST basic-reactions/model2/boundaryABC/basic-model2-boundaryABC.test
+TEST basic-reactions/model2/boundaryC/basic-model2-boundaryC.test
+TEST basic-reactions/model2/stoichiometryA2/basic-model2-stoichiometryA2.test
+TEST basic-reactions/model3/base/basic-model3-base.test
+TEST basic-reactions/model3/stoichiometry2S4/basic-model3-stoichiometry2S4.test
+TEST basic-reactions/model3/boundaryS4/basic-model3-boundaryS4.test
+TEST basic-reactions/model4/base/basic-model4-base.test
+TEST basic-reactions/model5/base/basic-model5-base.test
+TEST basic-reactions/model6/base/basic-model6-base.test
+CATEGORY Parameter Namespace
+TEST parameterNamespace/global/parameterNamespace-global.test
+TEST parameterNamespace/globalAndLocal/parameterNamespace-globalAndLocal.test
+TEST parameterNamespace/local/parameterNamespace-local.test
+TEST parameterNamespace/speciesAndLocal/parameterNamespace-speciesAndLocal.test
+CATEGORY Complex Reactions
+TEST complexReactions/FeedbackCompetitive/feedbackCompetitive.test
+TEST complexReactions/Hill/Hill.test
+TEST complexReactions/ModifierNegativeFeedback/complexReactions-ModifierNegativeFeedback.test
+TEST complexReactions/NoProduct/complex-NoProduct.test
+TEST complexReactions/NoReactant/complex-NoReactant.test
+TEST complexReactions/linearNegFeedback/complex-linearnegfeedback.test
+CATEGORY MathML
+TEST mathml/abs/mathml-abs.test
+TEST mathml/arccos/mathml-arccos.test
+TEST mathml/arccosh/mathml-arccosh.test
+TEST mathml/arccot/mathml-arccot.test
+TEST mathml/arccoth/mathml-arccoth.test
+TEST mathml/arccsc/mathml-arccsc.test
+TEST mathml/arccsch/mathml-arccsch.test
+TEST mathml/arcsec/mathml-arcsec.test
+TEST mathml/arcsech/mathml-arcsech.test
+TEST mathml/arcsin/mathml-arcsin.test
+TEST mathml/arcsinh/mathml-arcsinh.test
+TEST mathml/arctan/mathml-arctan.test
+TEST mathml/arctanh/mathml-arctanh.test
+TEST mathml/cn-e-notation/mathml-cn-e-notation.test
+TEST mathml/cn-integer/mathml-cn-integer.test
+TEST mathml/cn-rational/mathml-cn-rational.test
+TEST mathml/cn-real/mathml-cn-real.test
+TEST mathml/cos/mathml-cos.test
+TEST mathml/cosh/mathml-cosh.test
+TEST mathml/cot/mathml-cot.test
+TEST mathml/coth/mathml-coth.test
+TEST mathml/csc/mathml-csc.test
+TEST mathml/csch/mathml-csch.test
+TEST mathml/divide/mathml-divide.test
+TEST mathml/exp/mathml-exp.test
+TEST mathml/exponentiale/mathml-exponentiale.test
+TEST mathml/ln/mathml-ln.test
+TEST mathml/log/mathml-log.test
+TEST mathml/logbase/mathml-logbase.test
+TEST mathml/minus-unary/mathml-minus-unary.test
+TEST mathml/minus/mathml-minus.test
+TEST mathml/pi/mathml-pi.test
+TEST mathml/plus/mathml-plus.test
+TEST mathml/power/mathml-power.test
+# mathml/root-degree/mathml-root-degree
+TEST mathml/root/mathml-root.test
+TEST mathml/sec/mathml-sec.test
+TEST mathml/sech/mathml-sech.test
+TEST mathml/sin/mathml-sin.test
+TEST mathml/sinh/mathml-sinh.test
+TEST mathml/tan/mathml-tan.test
+TEST mathml/tanh/mathml-tanh.test
+TEST mathml/times/mathml-times.test
+CATEGORY Basic Rules
+TEST basicRules/assignment-Species/basicRules-assignment-Species.test
+TEST basicRules/assignmentInconsistent-Species/basicRules-assignmentInconsistent-Species.test
+TEST basicRules/assignmentInitialize-Species/basicRules-assignmentInitialize-Species.test
+TEST basicRules/assignmentUsedInAssignment-Species/basicRules-assignmentUsedInAssignment-Species.test
+TEST basicRules/assignmentUsedInDifferential-Species/basicRules-assignmentUsedInDifferential-Species.test
+TEST basicRules/assignmentUsedInReaction-Species/basicRules-assignmentUsedInReaction-Species.test
+TEST basicRules/differential-Species/basicRules-differential-Species.test
+TEST basicRules/differentialUsedInDifferential-Species/basicRules-differentialUsedInDifferential-Species.test
+TEST basicRules/differentialUsedInReaction-Species/basicRules-differentialUsedInReaction-Species.test
+TEST basicRules/dynamicAssignmentUsedInDifferential-Species/basicRules-dynamicAssignmentUsedInDifferential-Species.test
+TEST basicRules/dynamicAssignmentUsedInReaction-Species/basicRules-dynamicAssignmentUsedInReaction-Species.test
+TEST basicRules/noRule-Species/basicRules-noRule-Species.test
+TEST basicRules/reactionUsedInDifferential-Species/basicRules-reactionUsedInDifferential-Species.test
+TEST basicRules/differentialUsedInAssignment-Species/basicRules-differentialUsedInAssignment-Species.test
+TEST basicRules/differentialUsedInAssignmentConsistent-Species/basicRules-differentialUsedInAssignmentConsistent-Species.test
+TEST basicRules/reactionUsedInAssignment-Species/basicRules-reactionUsedInAssignment-Species.test
+CATEGORY Stoichiometry
+TEST stoichiometry/floatingPoint/stoichiometry-floatingPoint.test
+CATEGORY Discontinuity, Time And Delays
+TEST discontinuityTimeAndDelays/and/discontinuityTimeAndDelay-and.test
+TEST discontinuityTimeAndDelays/ceiling/discontinuityTimeAndDelays-ceiling.test
+TEST discontinuityTimeAndDelays/discontinuity/discontinuityTimeAndDelay-discontinuity.test
+TEST discontinuityTimeAndDelays/factorial/discontinuityTimeAndDelays-factorial.test
+TEST discontinuityTimeAndDelays/false/discontinuityTimeAndDelay-false.test
+TEST discontinuityTimeAndDelays/floor/discontinuityTimeAndDelays-floor.test
+TEST discontinuityTimeAndDelays/geq/discontinuityTimeAndDelay-geq.test
+TEST discontinuityTimeAndDelays/leq/discontinuityTimeAndDelay-leq.test
+TEST discontinuityTimeAndDelays/lt/discontinuityTimeAndDelay-lt.test
+TEST discontinuityTimeAndDelays/not/discontinuityTimeAndDelay-not.test
+TEST discontinuityTimeAndDelays/or/discontinuityTimeAndDelay-or.test
+TEST discontinuityTimeAndDelays/time/discontinuityTimeAndDelays-time.test
+TEST discontinuityTimeAndDelays/true/discontinuityTimeAndDelay-true.test
+TEST discontinuityTimeAndDelays/xor/discontinuityTimeAndDelay-xor.test
+# CAT Algebraic Rules
+# algebraicRules/basic/algebraicRules-basic
+# algebraicRules/fastReactionExample/algebraicRules-fastReactionExample
+CATEGORY Functions
+# functions/algebraic-rule/functions-algebraic-rule
+TEST functions/basic-rules/functions-basic-rules.test
+# functions/event-assignment/functions-event-assignment
+TEST functions/kinetic-law/functions-kinetic-law.test
+# CAT Events
+# events/1-event-1-assignment/events-1-event-1-assignment
+# events/1-event-2-assignments/events-1-event-2-assignments
+# events/2-events-1-assignment/events-2-events-1-assignment
+# events/increment/events-increment
diff --git a/VERSION.txt b/VERSION.txt
new file mode 100644
index 0000000..2b6b9d3
--- /dev/null
+++ b/VERSION.txt
@@ -0,0 +1 @@
+1.7.0beta
diff --git a/Win32/CompleteSOSLib/CompleteSOSLib.sln b/Win32/CompleteSOSLib/CompleteSOSLib.sln
new file mode 100644
index 0000000..7228f4e
--- /dev/null
+++ b/Win32/CompleteSOSLib/CompleteSOSLib.sln
@@ -0,0 +1,59 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SBML_odeSolver", "..\SBML_odeSolver\SBML_odeSolver\SBML_odeSolver.vcproj", "{B243A4E8-8F40-40CD-BAB0-34B002545CA0}"
+	ProjectSection(ProjectDependencies) = postProject
+		{E92D4874-0AB6-472D-B7FD-8CD9866B85CC} = {E92D4874-0AB6-472D-B7FD-8CD9866B85CC}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SBML_odeSolverApp", "..\SBML_odeSolverApp\SBML_odeSolverApp\SBML_odeSolverApp.vcproj", "{984CF58B-1E42-4298-A1A5-F334345C6320}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B243A4E8-8F40-40CD-BAB0-34B002545CA0} = {B243A4E8-8F40-40CD-BAB0-34B002545CA0}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ParameterScanner", "..\Examples\ParameterScanner\ParameterScanner.vcproj", "{8810FEBB-4FC6-4A76-A6D2-9F0DC6857296}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B243A4E8-8F40-40CD-BAB0-34B002545CA0} = {B243A4E8-8F40-40CD-BAB0-34B002545CA0}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sense", "..\Examples\Sense\Sense\Sense.vcproj", "{03DC8D62-3859-454C-92E0-7AE4008A7186}"
+	ProjectSection(ProjectDependencies) = postProject
+		{984CF58B-1E42-4298-A1A5-F334345C6320} = {984CF58B-1E42-4298-A1A5-F334345C6320}
+		{8810FEBB-4FC6-4A76-A6D2-9F0DC6857296} = {8810FEBB-4FC6-4A76-A6D2-9F0DC6857296}
+		{B243A4E8-8F40-40CD-BAB0-34B002545CA0} = {B243A4E8-8F40-40CD-BAB0-34B002545CA0}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinCVODE", "..\WinCVODE\WinCVODE\WinCVODE.vcproj", "{E92D4874-0AB6-472D-B7FD-8CD9866B85CC}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{B243A4E8-8F40-40CD-BAB0-34B002545CA0}.Debug.ActiveCfg = Debug|Win32
+		{B243A4E8-8F40-40CD-BAB0-34B002545CA0}.Debug.Build.0 = Debug|Win32
+		{B243A4E8-8F40-40CD-BAB0-34B002545CA0}.Release.ActiveCfg = Release|Win32
+		{B243A4E8-8F40-40CD-BAB0-34B002545CA0}.Release.Build.0 = Release|Win32
+		{984CF58B-1E42-4298-A1A5-F334345C6320}.Debug.ActiveCfg = Debug|Win32
+		{984CF58B-1E42-4298-A1A5-F334345C6320}.Debug.Build.0 = Debug|Win32
+		{984CF58B-1E42-4298-A1A5-F334345C6320}.Release.ActiveCfg = Release|Win32
+		{984CF58B-1E42-4298-A1A5-F334345C6320}.Release.Build.0 = Release|Win32
+		{8810FEBB-4FC6-4A76-A6D2-9F0DC6857296}.Debug.ActiveCfg = Debug|Win32
+		{8810FEBB-4FC6-4A76-A6D2-9F0DC6857296}.Debug.Build.0 = Debug|Win32
+		{8810FEBB-4FC6-4A76-A6D2-9F0DC6857296}.Release.ActiveCfg = Release|Win32
+		{8810FEBB-4FC6-4A76-A6D2-9F0DC6857296}.Release.Build.0 = Release|Win32
+		{03DC8D62-3859-454C-92E0-7AE4008A7186}.Debug.ActiveCfg = Debug|Win32
+		{03DC8D62-3859-454C-92E0-7AE4008A7186}.Debug.Build.0 = Debug|Win32
+		{03DC8D62-3859-454C-92E0-7AE4008A7186}.Release.ActiveCfg = Release|Win32
+		{03DC8D62-3859-454C-92E0-7AE4008A7186}.Release.Build.0 = Release|Win32
+		{E92D4874-0AB6-472D-B7FD-8CD9866B85CC}.Debug.ActiveCfg = Debug|Win32
+		{E92D4874-0AB6-472D-B7FD-8CD9866B85CC}.Debug.Build.0 = Debug|Win32
+		{E92D4874-0AB6-472D-B7FD-8CD9866B85CC}.Release.ActiveCfg = Release|Win32
+		{E92D4874-0AB6-472D-B7FD-8CD9866B85CC}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/Win32/Examples/ASTIndexTest/.cvsignore b/Win32/Examples/ASTIndexTest/.cvsignore
new file mode 100644
index 0000000..b421798
--- /dev/null
+++ b/Win32/Examples/ASTIndexTest/.cvsignore
@@ -0,0 +1 @@
+*.ncb Debug Release *suo
diff --git a/Win32/Examples/ASTIndexTest/ASTIndexTest.sln b/Win32/Examples/ASTIndexTest/ASTIndexTest.sln
new file mode 100644
index 0000000..2a27597
--- /dev/null
+++ b/Win32/Examples/ASTIndexTest/ASTIndexTest.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ASTIndexTest", "ASTIndexTest.vcproj", "{FE015A25-A902-4E2A-A6AB-5E888ADFA786}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{FE015A25-A902-4E2A-A6AB-5E888ADFA786}.Debug.ActiveCfg = Debug|Win32
+		{FE015A25-A902-4E2A-A6AB-5E888ADFA786}.Debug.Build.0 = Debug|Win32
+		{FE015A25-A902-4E2A-A6AB-5E888ADFA786}.Release.ActiveCfg = Release|Win32
+		{FE015A25-A902-4E2A-A6AB-5E888ADFA786}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/Win32/Examples/ASTIndexTest/ASTIndexTest.vcproj b/Win32/Examples/ASTIndexTest/ASTIndexTest.vcproj
new file mode 100644
index 0000000..7506501
--- /dev/null
+++ b/Win32/Examples/ASTIndexTest/ASTIndexTest.vcproj
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="ASTIndexTest"
+	ProjectGUID="{FE015A25-A902-4E2A-A6AB-5E888ADFA786}"
+	RootNamespace="ASTIndexTest"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="($ProjectDir)\..\..\..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolverD.lib libSBMLD.lib"
+				OutputFile="$(OutDir)/ASTIndexTestD.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/ASTIndexTest.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="4"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/ASTIndexTest.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\examples\ASTIndexTest.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/Win32/Examples/ChangingIntegratorInstance/.cvsignore b/Win32/Examples/ChangingIntegratorInstance/.cvsignore
new file mode 100644
index 0000000..b421798
--- /dev/null
+++ b/Win32/Examples/ChangingIntegratorInstance/.cvsignore
@@ -0,0 +1 @@
+*.ncb Debug Release *suo
diff --git a/Win32/Examples/ChangingIntegratorInstance/ChangingIntegratorInstance.sln b/Win32/Examples/ChangingIntegratorInstance/ChangingIntegratorInstance.sln
new file mode 100644
index 0000000..4450856
--- /dev/null
+++ b/Win32/Examples/ChangingIntegratorInstance/ChangingIntegratorInstance.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ChangingIntegratorInstance", "ChangingIntegratorInstance.vcproj", "{5D4FE4DA-B72F-4DC2-A58C-1089E19B50FD}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{5D4FE4DA-B72F-4DC2-A58C-1089E19B50FD}.Debug.ActiveCfg = Debug|Win32
+		{5D4FE4DA-B72F-4DC2-A58C-1089E19B50FD}.Debug.Build.0 = Debug|Win32
+		{5D4FE4DA-B72F-4DC2-A58C-1089E19B50FD}.Release.ActiveCfg = Release|Win32
+		{5D4FE4DA-B72F-4DC2-A58C-1089E19B50FD}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/Win32/Examples/ChangingIntegratorInstance/ChangingIntegratorInstance.vcproj b/Win32/Examples/ChangingIntegratorInstance/ChangingIntegratorInstance.vcproj
new file mode 100644
index 0000000..d9db039
--- /dev/null
+++ b/Win32/Examples/ChangingIntegratorInstance/ChangingIntegratorInstance.vcproj
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="ChangingIntegratorInstance"
+	ProjectGUID="{5D4FE4DA-B72F-4DC2-A58C-1089E19B50FD}"
+	RootNamespace="ChangingIntegratorInstance"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolverD.lib"
+				OutputFile="$(OutDir)/ChangingIntegratorInstanceD.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/ChangingIntegratorInstance.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolver.lib"
+				OutputFile="$(OutDir)/ChangingIntegratorInstance.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\examples\ChangingIntegratorInstance.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/Win32/Examples/ChangingParameterIntegrator/.cvsignore b/Win32/Examples/ChangingParameterIntegrator/.cvsignore
new file mode 100644
index 0000000..b421798
--- /dev/null
+++ b/Win32/Examples/ChangingParameterIntegrator/.cvsignore
@@ -0,0 +1 @@
+*.ncb Debug Release *suo
diff --git a/Win32/Examples/ChangingParameterIntegrator/ChangingParameterIntegrator.sln b/Win32/Examples/ChangingParameterIntegrator/ChangingParameterIntegrator.sln
new file mode 100644
index 0000000..dbec40b
--- /dev/null
+++ b/Win32/Examples/ChangingParameterIntegrator/ChangingParameterIntegrator.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ChangingParameterIntegrator", "ChangingParameterIntegrator.vcproj", "{E2FF2B20-8F0A-45E3-AA8B-8B14D8B6F3F6}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{E2FF2B20-8F0A-45E3-AA8B-8B14D8B6F3F6}.Debug.ActiveCfg = Debug|Win32
+		{E2FF2B20-8F0A-45E3-AA8B-8B14D8B6F3F6}.Debug.Build.0 = Debug|Win32
+		{E2FF2B20-8F0A-45E3-AA8B-8B14D8B6F3F6}.Release.ActiveCfg = Release|Win32
+		{E2FF2B20-8F0A-45E3-AA8B-8B14D8B6F3F6}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/Win32/Examples/ChangingParameterIntegrator/ChangingParameterIntegrator.vcproj b/Win32/Examples/ChangingParameterIntegrator/ChangingParameterIntegrator.vcproj
new file mode 100644
index 0000000..ecc2b39
--- /dev/null
+++ b/Win32/Examples/ChangingParameterIntegrator/ChangingParameterIntegrator.vcproj
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="ChangingParameterIntegrator"
+	ProjectGUID="{E2FF2B20-8F0A-45E3-AA8B-8B14D8B6F3F6}"
+	RootNamespace="ChangingParameterIntegrator"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolverD.lib"
+				OutputFile="$(OutDir)/ChangingParameterIntegratorD.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/ChangingParameterIntegrator.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolver.lib"
+				OutputFile="$(OutDir)/ChangingParameterIntegrator.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\examples\ChangingParameterIntegrator.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/Win32/Examples/IntegratorInstance/.cvsignore b/Win32/Examples/IntegratorInstance/.cvsignore
new file mode 100644
index 0000000..9442a6c
--- /dev/null
+++ b/Win32/Examples/IntegratorInstance/.cvsignore
@@ -0,0 +1 @@
+*.ncb *suo Debug Release
diff --git a/Win32/Examples/IntegratorInstance/IntegratorInstance.sln b/Win32/Examples/IntegratorInstance/IntegratorInstance.sln
new file mode 100644
index 0000000..ecb9a49
--- /dev/null
+++ b/Win32/Examples/IntegratorInstance/IntegratorInstance.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IntegratorInstance", "IntegratorInstance.vcproj", "{D10002CA-EDC6-4DDB-B549-124BE27169B8}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{D10002CA-EDC6-4DDB-B549-124BE27169B8}.Debug.ActiveCfg = Debug|Win32
+		{D10002CA-EDC6-4DDB-B549-124BE27169B8}.Debug.Build.0 = Debug|Win32
+		{D10002CA-EDC6-4DDB-B549-124BE27169B8}.Release.ActiveCfg = Release|Win32
+		{D10002CA-EDC6-4DDB-B549-124BE27169B8}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/Win32/Examples/IntegratorInstance/IntegratorInstance.vcproj b/Win32/Examples/IntegratorInstance/IntegratorInstance.vcproj
new file mode 100644
index 0000000..2827cbf
--- /dev/null
+++ b/Win32/Examples/IntegratorInstance/IntegratorInstance.vcproj
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="IntegratorInstance"
+	ProjectGUID="{D10002CA-EDC6-4DDB-B549-124BE27169B8}"
+	RootNamespace="IntegratorInstance"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolverD.lib"
+				OutputFile="$(OutDir)\IntegratorInstanceD.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/IntegratorInstance.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(ProjectDir)\..\..\bin"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolver.lib"
+				OutputFile="$(OutDir)/IntegratorInstance.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\examples\simpleIntegratorInstance.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/Win32/Examples/ParameterScanner/.cvsignore b/Win32/Examples/ParameterScanner/.cvsignore
new file mode 100644
index 0000000..b421798
--- /dev/null
+++ b/Win32/Examples/ParameterScanner/.cvsignore
@@ -0,0 +1 @@
+*.ncb Debug Release *suo
diff --git a/Win32/Examples/ParameterScanner/ParameterScanner.sln b/Win32/Examples/ParameterScanner/ParameterScanner.sln
new file mode 100644
index 0000000..7c83ff7
--- /dev/null
+++ b/Win32/Examples/ParameterScanner/ParameterScanner.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ParameterScanner", "ParameterScanner.vcproj", "{8810FEBB-4FC6-4A76-A6D2-9F0DC6857296}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{8810FEBB-4FC6-4A76-A6D2-9F0DC6857296}.Debug.ActiveCfg = Debug|Win32
+		{8810FEBB-4FC6-4A76-A6D2-9F0DC6857296}.Debug.Build.0 = Debug|Win32
+		{8810FEBB-4FC6-4A76-A6D2-9F0DC6857296}.Release.ActiveCfg = Release|Win32
+		{8810FEBB-4FC6-4A76-A6D2-9F0DC6857296}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/Win32/Examples/ParameterScanner/ParameterScanner.vcproj b/Win32/Examples/ParameterScanner/ParameterScanner.vcproj
new file mode 100644
index 0000000..088fe60
--- /dev/null
+++ b/Win32/Examples/ParameterScanner/ParameterScanner.vcproj
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="ParameterScanner"
+	ProjectGUID="{8810FEBB-4FC6-4A76-A6D2-9F0DC6857296}"
+	RootNamespace="ParameterScanner"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="$(OutDir)\SBML_odeSolverD.lib"
+				OutputFile="$(OutDir)/ParameterScannerD.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/ParameterScanner.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolver.lib"
+				OutputFile="$(OutDir)/ParameterScanner.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\examples\ParameterScanner.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/Win32/Examples/Sense/Sense.sln b/Win32/Examples/Sense/Sense.sln
new file mode 100644
index 0000000..de12036
--- /dev/null
+++ b/Win32/Examples/Sense/Sense.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sense", "Sense\Sense.vcproj", "{03DC8D62-3859-454C-92E0-7AE4008A7186}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{03DC8D62-3859-454C-92E0-7AE4008A7186}.Debug.ActiveCfg = Debug|Win32
+		{03DC8D62-3859-454C-92E0-7AE4008A7186}.Debug.Build.0 = Debug|Win32
+		{03DC8D62-3859-454C-92E0-7AE4008A7186}.Release.ActiveCfg = Release|Win32
+		{03DC8D62-3859-454C-92E0-7AE4008A7186}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/Win32/Examples/Sense/Sense/Sense.vcproj b/Win32/Examples/Sense/Sense/Sense.vcproj
new file mode 100644
index 0000000..774f388
--- /dev/null
+++ b/Win32/Examples/Sense/Sense/Sense.vcproj
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="Sense"
+	ProjectGUID="{03DC8D62-3859-454C-92E0-7AE4008A7186}"
+	RootNamespace="Sense"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(InputDir)..\..\..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="$(OutDir)\SBML_odeSolverD.lib"
+				OutputFile="$(OutDir)\SenseD.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/Sense.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(InputDir)\..\..\..\bin"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"
+				CommandLine="copy  $(OutDir)\..\binary\*.*  $(OutDir)\..\release
+copy $(OutDir)\SBML_odeSolver.dll $(OutDir)\..\release
+copy  $(OutDir)\Sense.exe $(OutDir)\..\release
+copy  $(OutDir)\WinCVODE.dll $(OutDir)\..\release
+copy  $(OutDir)\SBML_odeSolverApp.exe $(OutDir)\..\release
+copy  $(OutDir)\ParameterScanner.exe $(OutDir)\..\release
+copy $(OutDir)\..\..\scripts\*.* $(OutDir)\..\release
+copy $(OutDir)\..\..\examples\MAPK.xml $(OutDir)\..\release
+copy $(OutDir)\..\README_FOR_RELEASE.txt $(OutDir)\..\release\README.txt
+xcopy /E /U /Y $(OutDir)\tcc $(OutDir)\..\release\tcc"
+				Outputs="$(OutDir)\..\release\README.txt"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolver.lib"
+				OutputFile="$(OutDir)/Sense.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\..\examples\Sense.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/Win32/Examples/Sensitivity/Sensitivity.sln b/Win32/Examples/Sensitivity/Sensitivity.sln
new file mode 100644
index 0000000..5a9fe3a
--- /dev/null
+++ b/Win32/Examples/Sensitivity/Sensitivity.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sensitivity", "Sensitivity.vcproj", "{59FB2163-EBD4-4327-8783-57AF993A07B9}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{59FB2163-EBD4-4327-8783-57AF993A07B9}.Debug.ActiveCfg = Debug|Win32
+		{59FB2163-EBD4-4327-8783-57AF993A07B9}.Debug.Build.0 = Debug|Win32
+		{59FB2163-EBD4-4327-8783-57AF993A07B9}.Release.ActiveCfg = Release|Win32
+		{59FB2163-EBD4-4327-8783-57AF993A07B9}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/Win32/Examples/Sensitivity/Sensitivity.vcproj b/Win32/Examples/Sensitivity/Sensitivity.vcproj
new file mode 100644
index 0000000..1a185df
--- /dev/null
+++ b/Win32/Examples/Sensitivity/Sensitivity.vcproj
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="Sensitivity"
+	ProjectGUID="{59FB2163-EBD4-4327-8783-57AF993A07B9}"
+	RootNamespace="Sensitivity"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(InputDir)\..\..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="5"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/SensitivityD.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/Sensitivity.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(InputDir)\..\..\bin"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolver.lib"
+				OutputFile="$(OutDir)/Sensitivity.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\examples\sensitivity.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/Win32/Examples/SharingIntegratorInstance/.cvsignore b/Win32/Examples/SharingIntegratorInstance/.cvsignore
new file mode 100644
index 0000000..9442a6c
--- /dev/null
+++ b/Win32/Examples/SharingIntegratorInstance/.cvsignore
@@ -0,0 +1 @@
+*.ncb *suo Debug Release
diff --git a/Win32/Examples/SharingIntegratorInstance/SharingIntegratorInstance.sln b/Win32/Examples/SharingIntegratorInstance/SharingIntegratorInstance.sln
new file mode 100644
index 0000000..b121da4
--- /dev/null
+++ b/Win32/Examples/SharingIntegratorInstance/SharingIntegratorInstance.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SharingIntegratorInstance", "SharingIntegratorInstance.vcproj", "{1851E442-5EFB-487E-A51F-679364CF62D7}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{1851E442-5EFB-487E-A51F-679364CF62D7}.Debug.ActiveCfg = Debug|Win32
+		{1851E442-5EFB-487E-A51F-679364CF62D7}.Debug.Build.0 = Debug|Win32
+		{1851E442-5EFB-487E-A51F-679364CF62D7}.Release.ActiveCfg = Release|Win32
+		{1851E442-5EFB-487E-A51F-679364CF62D7}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/Win32/Examples/SharingIntegratorInstance/SharingIntegratorInstance.vcproj b/Win32/Examples/SharingIntegratorInstance/SharingIntegratorInstance.vcproj
new file mode 100644
index 0000000..bb6c98f
--- /dev/null
+++ b/Win32/Examples/SharingIntegratorInstance/SharingIntegratorInstance.vcproj
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="SharingIntegratorInstance"
+	ProjectGUID="{1851E442-5EFB-487E-A51F-679364CF62D7}"
+	RootNamespace="SharingIntegratorInstance"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolverD.lib"
+				OutputFile="$(OutDir)/SharingIntegratorInstanceD.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/SharingIntegratorInstance.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolver.lib"
+				OutputFile="$(OutDir)/SharingIntegratorInstance.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\examples\SharingIntegratorInstance.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/Win32/Examples/TwinIntegratorInstance/TwinIntegratorInstance.sln b/Win32/Examples/TwinIntegratorInstance/TwinIntegratorInstance.sln
new file mode 100644
index 0000000..2348214
--- /dev/null
+++ b/Win32/Examples/TwinIntegratorInstance/TwinIntegratorInstance.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TwinIntegratorInstance", "TwinIntegratorInstance.vcproj", "{D10F3973-6591-4FA5-BB77-4E1472E3E5CD}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{D10F3973-6591-4FA5-BB77-4E1472E3E5CD}.Debug.ActiveCfg = Debug|Win32
+		{D10F3973-6591-4FA5-BB77-4E1472E3E5CD}.Debug.Build.0 = Debug|Win32
+		{D10F3973-6591-4FA5-BB77-4E1472E3E5CD}.Release.ActiveCfg = Release|Win32
+		{D10F3973-6591-4FA5-BB77-4E1472E3E5CD}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/Win32/Examples/TwinIntegratorInstance/TwinIntegratorInstance.vcproj b/Win32/Examples/TwinIntegratorInstance/TwinIntegratorInstance.vcproj
new file mode 100644
index 0000000..189a65c
--- /dev/null
+++ b/Win32/Examples/TwinIntegratorInstance/TwinIntegratorInstance.vcproj
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="TwinIntegratorInstance"
+	ProjectGUID="{D10F3973-6591-4FA5-BB77-4E1472E3E5CD}"
+	RootNamespace="TwinIntegratorInstance"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolverD.lib"
+				OutputFile="$(OutDir)/TwinIntegratorInstanceD.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/TwinIntegratorInstance.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="4"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="SBML_odeSolver.lib"
+				OutputFile="$(OutDir)/TwinIntegratorInstance.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\examples\TwinIntegratorInstance.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/Win32/README.txt b/Win32/README.txt
new file mode 100644
index 0000000..09bedb8
--- /dev/null
+++ b/Win32/README.txt
@@ -0,0 +1,90 @@
+SBML_odeSolver for Microsoft Visual C++ 7.1
+===========================================
+
+	Andrew Finney
+	afinney at physiomics-plc.com
+
+Last change: 9th June 2005 
+
+This directory is an attempt to create a framework for building
+SBML_odeSolver in the MSVC 7.1 environment.  
+
+The binary directory at this level just contains binary components that
+are combined with elements compiled from the source to create a binary release.
+
+Instructions to build from SOSlib from scratch using this CVS checkout
+----------------------------------------------------------------------
+
+a) SBML_odeSolver requires the CVS version of
+libSBML checkout the latest version of libSBML and download a
+version of the xerces-c libaray binary releases.
+
+b) Set Visual C++ to point to the correct library and include directories
+as follows:
+
+select the 'tools'/'Options...' menu item
+select the 'Projects'/'VC++ Directories' folder
+select 'Include Files' in the 'Show Directories for:' drop down list
+
+add the following entries:
+
+<XERCES-C>\include
+<libSBML>\win32\include
+<libSBML>\win32\include\sbml
+<SBML_odeSolver>\Win32\SBML_odeSolverApp\SBML_odeSolverApp
+<SBML_odeSolver>\src
+<SBML_odeSolver>\Win32\WinCVODE\sundials\nvec_ser
+<SBML_odeSolver>\Win32\WinCVODE\sundials\cvode\include
+<SBML_odeSolver>\Win32\WinCVODE\sundials\shared\include
+<SBML_odeSolver>\Win32\WinCVODE\sundials\config
+<SBML_odeSolver>\Win32\WinCVODE\WinCVODE
+
+(substitute the full paths for these directories)
+
+select 'Library Files' in the 'Show Directories for:' drop down list
+
+add the following entries:
+
+<libSBML>\win32\bin
+<SBML_odeSolver>\Win32\bin
+
+b) ensure that the include files for libSBML are placed in the
+correct directory structures.  (The libSBML install normally 
+restructures this on install).  In its current state you
+might want to add the following commands as a custom build step
+to <libSBML>\win32\libsbml.vcproj:
+
+xcopy $(ProjectDir)\..\src\sbml\*.h $(ProjectDir)\include\sbml /S /I /F /Y
+xcopy $(ProjectDir)\..\src\common\*.h $(ProjectDir)\include\sbml\common /S /I /F /Y
+xcopy $(ProjectDir)\..\src\math\*.h $(ProjectDir)\include\sbml\math /S /I /F /Y
+xcopy $(ProjectDir)\..\src\util\*.h $(ProjectDir)\include\sbml\util /S /I /F /Y
+xcopy $(ProjectDir)\..\src\xml\*.h $(ProjectDir)\include\sbml\xml /S /I /F /Y
+xcopy $(ProjectDir)\..\src\validator\*.h $(ProjectDir)\include\sbml\validator /S /I /F /Y
+
+To do this open <libsbml>/win32/libsbml.vcproj then select menu item 'project'/'libSBML properties',
+select 'Custom Build Step' and paste the above commands into the 'Command Line' text box.
+
+d) create the directory <SBML_odeSolver>\Win32\bin and then
+build the various dlls and the solver executable in the following sequence:
+
+<libSBML>\win32\libsbml.vcproj
+<SBML_odeSolver>\Win32\CompleteSOSLib\CompleteSOSLib.sln
+
+e) To run the solver add the following directories to the PATH
+
+<xerces-c>\bin
+<libSBML>\win32\bin
+<SBML_odeSolver>\win32\bin
+
+IMPORTANT NOTE:
+
+It is possible that you may end up with a conflict between different versions of libSBML if you are using 
+other tools that use libSBML.  If this is the case might want to avoid placing the CVS based version of libSBML
+on the path (as shown above) and instead copy the dlls from <libSBML>\win32\bin to <SBML_odeSolver>\win32\bin.
+
+f) the solver can then be invoked as SBML_odeSolverApp.exe using command line arguments documented elsewhere.
+
+g) developers wishing to develop other programs that use the SBML_odeSolver dll should use the SBML_odeSolver
+libraries and dlls contained in <SBML_odeSolver>\win32\bin combined with the header files in
+<SBML_odeSolver>\src\sbmlsolver.  Please read the TODO.txt file.
+
diff --git a/Win32/README_FOR_RELEASE.txt b/Win32/README_FOR_RELEASE.txt
new file mode 100644
index 0000000..0ce178b
--- /dev/null
+++ b/Win32/README_FOR_RELEASE.txt
@@ -0,0 +1,294 @@
+This zip file contains a number of executables (*.exe)
+and their associated dlls (*.dll).  
+
+These executables are designed to be executed as command line
+applications from a DOS, Cygwin shell or similar shell.  This file documents
+how to use those executables in detail.
+
+Installation without easy uninstall
+===================================
+
+Copy the files in this zip file into the C:\WINDOWS\SYSTEM32 directory.
+Uninstall is difficult as you have to remove these files by hand.
+
+(Later versions of SBML_odeSolver will have an installer/uninstaller.)
+
+Installation for ease of uninstallation
+=======================================
+
+To install these applications copy the contents of this zip file into
+a new directory.  Then put
+the full path to this directory on the path environment variable.
+(see following section).
+
+To uninstall simply delete the directory you have created.
+
+Adding the executables directory to the path variable
+======================================================
+To do this on Windows XP proceed as follows:
+Open the directory containing the contents of the zip.
+Select any file in the directory.
+Click the right mouse button and select properties from the menu
+In the resulting dialog select the content of location field 
+(the path of the directory containing the file)
+Using the control-c key copy the value to the clipboard
+On the windows start menu select control panel
+select performance and maintainence 
+select system
+in the resulting dialog select the advanced tab
+select the environment varibales button
+in the resulting dialog scroll the lower 'System Variables' list down
+and select the 'path' variable
+select the edit button
+in the value field append ';' to the end of the existing value
+then using the control-v key paste the value on the clipboard immediately following the ';'
+select the OK button
+select the OK button
+select the OK button
+close the control panel window
+
+Tutorial on using the Excutables in Cygwin
+==========================================
+
+Using Cygwin
+------------
+
+An effective environment to run SBML_odeSolver is in the Cygwin shell.
+(The following command sequence can be adapted for DOS shells but details are not given.)
+To install Cygwin go to http://www.cygwin.com/
+click on the install link, run the installer directly and follow the instructions using defaults where ever possible.
+In addition download the gnuplot for windows gp400win32.zip from ftp://ftp.gnuplot.info/pub/gnuplot/
+Proceed as for the previous two sections above for the gnuplot download being careful to append the gnuplot/bin
+directory to the path environment variable (or perhaps copy the contents of gnuplot/bin to C:\WINDOWS\SYSTEM32)
+
+After running the installation select Cygwin/Cygwin Bash Shell from the start menu.
+
+Simulation
+----------
+
+To simulate a model type a command similar to the following in the shell:
+
+SBML_odeSolverApp model.xml --time 100 --printstep 200 > model.txt
+
+This command runs a simulation of SBML model model.xml for 200 timesteps for a simulation time of 100 time units.
+The results are placed in the file model.txt
+
+To display the results we need to first create a gnuplot file from the model output using the following command:
+
+gnuplotscript.awk model.txt S1 S2 > model.gnuplot
+
+This generates a gnuplot script to display the data in model.txt for the time course of S1 and S2 
+
+to display the plot type the command:
+
+wgnuplot -persist model.gnuplot &
+
+Parameter Scanning
+------------------
+
+To generate a 3D plot of a species concentration over time series for a range of parameter or species concentrations
+type a command as follows:
+
+ParameterScanner model.xml 200 0.5 k1 0 1 0.1 S1 > pscan.gnuplot
+
+This creates plot data of a parameter scan in model.xml of parameter k1 from 0 through 1 in steps of 0.1.
+The surface plotted is the contentration of S1 in 200 timesteps of 0.5 time units.
+
+to display the plot type the command:
+
+wgnuplot -persist pscan.gnuplot &
+
+Sensitivity Analysis
+--------------------
+
+To perform solution forward sensitivity analysis type a command as follows:
+
+Sense model.xml 200 0.5 p k1 S1 S2 > sense.gnuplot
+
+This creates a plot of the sensitivity of species S1 and S2 to the values of the parameter k1
+for the timecourse of 200 timesteps of 0.5 time units.
+
+to display the plot type the command:
+
+wgnuplot -persist sense.gnuplot &
+
+Alternative one can type a command as follows:
+
+Sense model.xml 200 0.5 v S1 k1 k2 > sense.gnuplot
+
+This creates a plot of the sensitivity of species S1 to the values of the parameters k1 and k2
+for the timecourse of 200 timesteps of 0.5 time units.
+
+Learning more
+-------------
+
+You can learn more about the various 3rd party tools used above as follows:
+
+The Bash shell
+
+http://pegasus.rutgers.edu/~elflord/unix/bash-tute.html
+http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
+
+GNUPLOT
+
+http://t16web.lanl.gov/Kawano/gnuplot/index-e.html
+http://www.gnuplot.info/faq/faq.html
+http://www.cs.uni.edu/Help/gnuplot/
+
+AWK
+
+http://www.vectorsite.net/tsawk2.html
+http://www.gnu.org/software/gawk/manual/gawk.html
+
+Executing executables in a DOS shell
+=====================================
+
+If you don't wish to use cygwin then its possible to the DOS shell
+
+from the start menu select all programs
+select accessories
+select command prompt
+in the resulting window type the commands as detailed below
+
+Note that the gnuplotscript script can't be invoked directly in DOS
+and requires an awk installation and explicit invocation of awk
+
+Reference Guide to SOSlib Applications
+======================================
+
+All the executables in the directory when run without arguments
+output a lisiting of the various arguments and options required
+to run the excutable.
+
+SBML_odeSolverApp
+-----------------
+
+This executable can be excuted with a command of the following form:
+
+SBML_odeSolverApp <SBML File> [OPTIONS]
+
+where the options are as follows
+
+GENERAL OPTIONS
+ -h, --help            Print (this) usage information.
+ -i, --interactive     Turn on interactive mode
+     --gvformat <Str>  Set output format for graph drawings (now set
+                       to: ps); ignored if compiled w/o graphviz)
+SBML FILE PARSING
+ -v, --validate        Validate SBML file before further processing
+     --model <Str>     SBML file name (not needed!, see USAGE)
+                       (now set to: )
+     --mpath <Dir>     Set Model File Path
+                       (now set to: ./)
+     --schema11 <Str>  Set filename for SBML schema Level 1 Version 1
+                       (now set to: sbml-l1v1.xsd)
+     --schema12 <Str>  Set filename for SBML schema Level 1 Version 2
+                       (now set to: sbml-l1v2.xsd)
+     --schema21 <Str>  Set filename for SBML schema Level 2 Version 1
+                       (now set to: sbml-l2v1.xsd)
+     --spath <Dir>     Set schema file path, absolute or relative to
+                       model path (now set to: ./)
+(1) PRINT REACTIONS AND DERIVED ODEs
+ -e, --equations       Print Reactions and derived ODE system
+ -o, --printsbml       Construct ODEs and print as SBML model
+ -g, --modelgraph      Draw bipartite graph of reaction network
+                       (to .dot text file if compiled w/o graphviz)
+(2) INTEGRATING
+ -f, --onthefly        Print results during integration
+ -l, --message         Print messages, and integration statistics
+ -j, --jacobian        Toggle use of the jacobian matrix or CVODE's
+                       internal approximation (default: jacobian)
+ -s, --steadyState     Abort integration at steady states
+ -t, --sensitivity     activate sensitivity analysis (default: no)
+ -n, --event           Do not abort on event detection, but keep
+                       integrating. ACCURACY DEPENDS ON --printstep!!
+     --printstep <Int> Time steps of output, or
+                       (now set to: 50)
+     --time <Float>    Integration end time
+                       (now set to: 1)
+     --error <Float>   Absolute error tolerance during integration
+                       (now set to: 1e-009)
+     --rerror <Float>  Relative error tolerance during integration
+                       (now set to: 0.0001)
+     --mxstep <Int>    Maximum step number during integration
+                       (now set to: 10000)
+(3) INTEGRATION RESULTS
+ -a, --all             Print all available results (y/k/r + conc.).
+ -y, --jacobianTime    Print time course of jacobian matrix entries,
+                       instead of concentrations
+ -k, --reactions       Print time course of the reactions
+                       (kinetic laws) instead of concentrations
+ -r, --rates           Print time course of the ODEs, instead of
+                       concentrations
+ -w, --write           Write results to file (path/modelfile.xml.dat)
+ -x, --xmgrace         Print results to XMGrace; uses SBML Names
+                       instead of Ids (ignored if compiled w/o Grace)
+ -m, --matrixgraph     Draw species interactions from the jacobian
+                       matrix at last timepoint of integration
+                       (to .dot text file if compiled w/o graphviz)
+                       
+Results are simply output to the standard output stream.  By default
+just the species concentration time series is output together with
+column headings with species ids.  This output can plotted in gnuplot
+using the gnuplotscript.awk command.
+
+gnuplotscript.awk
+-----------------
+
+This command generates a gnuplot plot file on standard output from 
+the default output of SBML_odeSolverApp.  This command has the form:
+
+gnuplotscript.awk odeSolverApp-output-file species
+
+where odeSolverApp-output-file contains the output of SBML_odeSolverApp
+and species is a sequence of species ids which are required for plotting.
+
+The generated gnuplot simply refers to to the content of odeSolverApp-output-file 
+
+ParameterScanner
+----------------
+
+This command generates a gnuplot surface plot which contains the effect
+of a range of values of a given parameter on the simulated time series
+of a given species.
+
+The command line for this executable has the following form:
+
+ParameterScanner sbml-model-file
+    time-steps time-step-length parameter parameter-start parameter-end
+    parameter-step species [absolute-error-tolerance] [relative-error-tolerance]
+    [maximum integration steps]
+
+where 'time-steps' is the number of time steps to take
+where 'time-step-length' is the interval in simulation time between time steps
+where 'parameter-start' is the lower bound on the scanned range of parameter values
+where 'parameter-end' is the upper bound on the scanned range of parameters values
+where 'parameter-step' is the interval between sampled parameter values
+where 'species' is the species whose concentration is plotted as a surface
+
+The gnuplot output is simply output to the standard output stream.
+
+Sense
+-----
+
+This command generates a gnuplot 2D file which plots the forward solution sensitivity
+of one or more species concentrations to one or more parameters.
+The command line for this executable has the following form:
+
+Sense sbml-model-file time-steps time-step-length mode symbol [symbols]
+  [absolute-error-tolerance] [relative-error-tolerance] [maximum integration steps]
+  
+where 'time-steps' is the number of time steps to take
+where 'time-step-length' is the interval in simulation time between time steps
+
+mode is either 'p' or 'v'.  If mode is 'p' then the sensitivies of one or more
+given species to a given parameter is displayed.  If mode is 'v' then the sensitivies
+of a given species to one or more given parameters is displayed.  
+
+symbol is a variable (non constant species, compartment or parameter) if mode is 'v'.
+symbol is a parameter if mode is 'p'
+
+symbols is a sequence of parameters if mode is 'v'
+symbols is a sequence of variables if mode is 'p'
+
+The gnuplot output is simply output to the standard output stream.
diff --git a/Win32/SBML_odeSolver/.cvsignore b/Win32/SBML_odeSolver/.cvsignore
new file mode 100644
index 0000000..8a35eb5
--- /dev/null
+++ b/Win32/SBML_odeSolver/.cvsignore
@@ -0,0 +1,3 @@
+*.ncb
+*.suo
+*~
\ No newline at end of file
diff --git a/Win32/SBML_odeSolver/SBML_odeSolver.sln b/Win32/SBML_odeSolver/SBML_odeSolver.sln
new file mode 100644
index 0000000..1e0ebae
--- /dev/null
+++ b/Win32/SBML_odeSolver/SBML_odeSolver.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SBML_odeSolver", "SBML_odeSolver\SBML_odeSolver.vcproj", "{B243A4E8-8F40-40CD-BAB0-34B002545CA0}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{B243A4E8-8F40-40CD-BAB0-34B002545CA0}.Debug.ActiveCfg = Debug|Win32
+		{B243A4E8-8F40-40CD-BAB0-34B002545CA0}.Debug.Build.0 = Debug|Win32
+		{B243A4E8-8F40-40CD-BAB0-34B002545CA0}.Release.ActiveCfg = Release|Win32
+		{B243A4E8-8F40-40CD-BAB0-34B002545CA0}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/Win32/SBML_odeSolver/SBML_odeSolver/.cvsignore b/Win32/SBML_odeSolver/SBML_odeSolver/.cvsignore
new file mode 100644
index 0000000..a21c48f
--- /dev/null
+++ b/Win32/SBML_odeSolver/SBML_odeSolver/.cvsignore
@@ -0,0 +1,2 @@
+Debug
+Release
\ No newline at end of file
diff --git a/Win32/SBML_odeSolver/SBML_odeSolver/ReadMe.txt b/Win32/SBML_odeSolver/SBML_odeSolver/ReadMe.txt
new file mode 100644
index 0000000..8508959
--- /dev/null
+++ b/Win32/SBML_odeSolver/SBML_odeSolver/ReadMe.txt
@@ -0,0 +1,32 @@
+========================================================================
+    DYNAMIC LINK LIBRARY : SBML_odeSolver Project Overview
+========================================================================
+
+AppWizard has created this SBML_odeSolver DLL for you.  
+This file contains a summary of what you will find in each of the files that
+make up your SBML_odeSolver application.
+
+
+SBML_odeSolver.vcproj
+    This is the main project file for VC++ projects generated using an Application Wizard. 
+    It contains information about the version of Visual C++ that generated the file, and 
+    information about the platforms, configurations, and project features selected with the
+    Application Wizard.
+
+SBML_odeSolver.cpp
+    This is the main DLL source file.
+
+/////////////////////////////////////////////////////////////////////////////
+Other standard files:
+
+StdAfx.h, StdAfx.cpp
+    These files are used to build a precompiled header (PCH) file
+    named SBML_odeSolver.pch and a precompiled types file named StdAfx.obj.
+
+/////////////////////////////////////////////////////////////////////////////
+Other notes:
+
+AppWizard uses "TODO:" comments to indicate parts of the source code you
+should add to or customize.
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/Win32/SBML_odeSolver/SBML_odeSolver/SBML_odeSolver.cpp b/Win32/SBML_odeSolver/SBML_odeSolver/SBML_odeSolver.cpp
new file mode 100644
index 0000000..3294721
--- /dev/null
+++ b/Win32/SBML_odeSolver/SBML_odeSolver/SBML_odeSolver.cpp
@@ -0,0 +1,36 @@
+// SBML_odeSolver.cpp : Defines the entry point for the DLL application.
+//
+#include <windows.h>
+
+BOOL APIENTRY DllMain( HANDLE hModule, 
+                       DWORD  ul_reason_for_call, 
+                       LPVOID lpReserved
+					 )
+{
+	switch (ul_reason_for_call)
+	{
+	case DLL_PROCESS_ATTACH:
+	case DLL_THREAD_ATTACH:
+	case DLL_THREAD_DETACH:
+	case DLL_PROCESS_DETACH:
+		break;
+	}
+    return TRUE;
+}
+/* examples of use of export macros
+// This is an example of an exported variable
+SBML_ODESOLVER_API int nSBML_odeSolver=0;
+
+// This is an example of an exported function.
+SBML_ODESOLVER_API int fnSBML_odeSolver(void)
+{
+	return 42;
+}
+
+// This is the constructor of a class that has been exported.
+// see SBML_odeSolver.h for the class definition
+CSBML_odeSolver::CSBML_odeSolver()
+{ 
+	return; 
+}
+*/
diff --git a/Win32/SBML_odeSolver/SBML_odeSolver/SBML_odeSolver.vcproj b/Win32/SBML_odeSolver/SBML_odeSolver/SBML_odeSolver.vcproj
new file mode 100644
index 0000000..89b3eb2
--- /dev/null
+++ b/Win32/SBML_odeSolver/SBML_odeSolver/SBML_odeSolver.vcproj
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="SBML_odeSolver"
+	ProjectGUID="{B243A4E8-8F40-40CD-BAB0-34B002545CA0}"
+	RootNamespace="SBML_odeSolver"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SBML_ODESOLVER_EXPORTS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				RuntimeTypeInfo="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libSBMLD.lib $(OutDir)\WinCVODED.lib"
+				OutputFile="$(OutDir)/SBML_odeSolverD.dll"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/SBML_odeSolverD.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/SBML_odeSolverD.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Release"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SBML_ODESOLVER_EXPORTS"
+				RuntimeLibrary="2"
+				RuntimeTypeInfo="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"
+				CommandLine="copy $(OutDir)\..\..\src\sbmlsolver\*.h $(OutDir)\tcc\include\sbmlsolver
+copy $(OutDir)\..\WinCvode\sundials\shared\include\*.h $(OutDir)\tcc\include\sbmlsolver
+copy $(OutDir)\..\WinCvode\sundials\nvec_ser\*.h $(OutDir)\tcc\include\sbmlsolver
+copy $(OutDir)\..\WinCvode\sundials\config\*.h $(OutDir)\tcc\include\sbmlsolver
+copy $(OutDir)\..\WinCvode\WinCVODE\*.h $(OutDir)\tcc\include\sbmlsolver
+"
+				Outputs="$(OutDir)\tcc\include\sbmlsolver\*.h"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libSBML.lib WinCVODE.lib"
+				OutputFile="$(OutDir)/SBML_odeSolver.dll"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/SBML_odeSolver.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\src\ASTIndexNameNode.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\src\charBuffer.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\src\compiler.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\cvodedata.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\cvodeSolver.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\drawGraph.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\integratorInstance.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\integratorSettings.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\interpol.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\modelSimplify.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\odeConstruct.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\odeModel.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\odeSolver.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\processAST.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbml.c">
+			</File>
+			<File
+				RelativePath=".\SBML_odeSolver.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlResults.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sensSolver.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\solverError.c">
+			</File>
+			<File
+				RelativePath="..\..\..\src\util.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\ASTIndexNameNode.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\charBuffer.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\compiler.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\cvodedata.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\cvodeDataStruct.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\cvodeSettingsStruct.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\daeSolver.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\exportdefs.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\integratorInstance.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\integratorSettings.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\interpol.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\modelSimplify.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\nullSolver.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\odeConstruct.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\odeModel.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\odemodeldatatype.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\odeModelStruct.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\odeSolver.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\processAST.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\sbml.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\sbmlResults.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\sensSolver.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\solverError.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\util.h">
+			</File>
+			<File
+				RelativePath="..\..\..\src\sbmlsolver\variableIndex.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+		<File
+			RelativePath=".\ReadMe.txt">
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/Win32/SBML_odeSolver/include/config.h b/Win32/SBML_odeSolver/include/config.h
new file mode 100644
index 0000000..d3231e7
--- /dev/null
+++ b/Win32/SBML_odeSolver/include/config.h
@@ -0,0 +1,87 @@
+/* manually created file for MSVC++ 7.1 thats a substitute for the one normally created in UNIX
+   environments  */
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `m' library (-lm). */
+#define HAVE_LIBM 1
+
+/* Define to 1 if you have the <math.h> header file. */
+#define HAVE_MATH_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 to use SBML Library version < 2.2.0 */
+#undef OLD_LIBSBML
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 to use the CVODE Library */
+#define USE_CVODE 1
+
+/* Define to 1 to use the GRACE Library */
+#undef USE_GRACE
+
+/* Define to 1 to use the GRAPHVIZ Library */
+#undef USE_GRAPHVIZ
+
+/* Define to 1 to use the SBML Library */
+#define USE_SBML 1
+
+/* Version number of package */
+#define VERSION 1
+
+/* Define to 1 if your processor stores words with the most significant byte
+   first (like Motorola and SPARC, unlike Intel and VAX). */
+#undef WORDS_BIGENDIAN
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t
diff --git a/Win32/SBML_odeSolverApp/.cvsignore b/Win32/SBML_odeSolverApp/.cvsignore
new file mode 100644
index 0000000..8a35eb5
--- /dev/null
+++ b/Win32/SBML_odeSolverApp/.cvsignore
@@ -0,0 +1,3 @@
+*.ncb
+*.suo
+*~
\ No newline at end of file
diff --git a/Win32/SBML_odeSolverApp/SBML_odeSolverApp.sln b/Win32/SBML_odeSolverApp/SBML_odeSolverApp.sln
new file mode 100644
index 0000000..16e0473
--- /dev/null
+++ b/Win32/SBML_odeSolverApp/SBML_odeSolverApp.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SBML_odeSolverApp", "SBML_odeSolverApp\SBML_odeSolverApp.vcproj", "{984CF58B-1E42-4298-A1A5-F334345C6320}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{984CF58B-1E42-4298-A1A5-F334345C6320}.Debug.ActiveCfg = Debug|Win32
+		{984CF58B-1E42-4298-A1A5-F334345C6320}.Debug.Build.0 = Debug|Win32
+		{984CF58B-1E42-4298-A1A5-F334345C6320}.Release.ActiveCfg = Release|Win32
+		{984CF58B-1E42-4298-A1A5-F334345C6320}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/Win32/SBML_odeSolverApp/SBML_odeSolverApp/.cvsignore b/Win32/SBML_odeSolverApp/SBML_odeSolverApp/.cvsignore
new file mode 100644
index 0000000..a21c48f
--- /dev/null
+++ b/Win32/SBML_odeSolverApp/SBML_odeSolverApp/.cvsignore
@@ -0,0 +1,2 @@
+Debug
+Release
\ No newline at end of file
diff --git a/Win32/SBML_odeSolverApp/SBML_odeSolverApp/SBML_odeSolverApp.vcproj b/Win32/SBML_odeSolverApp/SBML_odeSolverApp/SBML_odeSolverApp.vcproj
new file mode 100644
index 0000000..94d5d6d
--- /dev/null
+++ b/Win32/SBML_odeSolverApp/SBML_odeSolverApp/SBML_odeSolverApp.vcproj
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="SBML_odeSolverApp"
+	ProjectGUID="{984CF58B-1E42-4298-A1A5-F334345C6320}"
+	RootNamespace="SBML_odeSolverApp"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"
+				CommandLine="copy $(OutDir)\..\..\scripts\*.* $(OutDir)
+"
+				Outputs="$(TargetDir)gnuplotscript.awk"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="$(OutDir)\SBML_odeSolverD.lib libSBMLD.lib"
+				OutputFile="$(OutDir)\SBML_odeSolverAppD.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)\SBML_odeSolverAppD.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"
+				CommandLine="copy $(OutDir)\..\..\scripts\*.* $(OutDir)
+"
+				Outputs="$(TargetDir)gnuplotscript.awk"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libSBML.lib WinCVODE.lib SBML_odeSolver.lib"
+				OutputFile="$(OutDir)/SBML_odeSolverApp.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\odeSolver\commandLine.c">
+			</File>
+			<File
+				RelativePath="..\..\..\odeSolver\interactive.c">
+			</File>
+			<File
+				RelativePath="..\..\..\odeSolver\main.c">
+			</File>
+			<File
+				RelativePath=".\my_getopt.c">
+			</File>
+			<File
+				RelativePath="..\..\..\odeSolver\options.c">
+			</File>
+			<File
+				RelativePath="..\..\..\odeSolver\printModel.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\..\odeSolver\commandLine.h">
+			</File>
+			<File
+				RelativePath=".\getopt.h">
+			</File>
+			<File
+				RelativePath="..\..\..\odeSolver\interactive.h">
+			</File>
+			<File
+				RelativePath=".\my_getopt.h">
+			</File>
+			<File
+				RelativePath="..\..\..\odeSolver\options.h">
+			</File>
+			<File
+				RelativePath="..\..\..\odeSolver\printModel.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/Win32/SBML_odeSolverApp/SBML_odeSolverApp/getopt.h b/Win32/SBML_odeSolverApp/SBML_odeSolverApp/getopt.h
new file mode 100644
index 0000000..335cf86
--- /dev/null
+++ b/Win32/SBML_odeSolverApp/SBML_odeSolverApp/getopt.h
@@ -0,0 +1,56 @@
+/*
+ *  getopt.h - cpp wrapper for my_getopt to make it look like getopt.
+ *  Copyright 1997, 2000, 2001, 2002, Benjamin Sittler
+ *
+ *  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.
+ */
+
+#ifndef MY_WRAPPER_GETOPT_H_INCLUDED
+#define MY_WRAPPER_GETOPT_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "my_getopt.h"
+
+#undef getopt
+#define getopt my_getopt
+#undef getopt_long
+#define getopt_long my_getopt_long
+#undef getopt_long_only
+#define getopt_long_only my_getopt_long_only
+#undef _getopt_internal
+#define _getopt_internal _my_getopt_internal
+#undef opterr
+#define opterr my_opterr
+#undef optind
+#define optind my_optind
+#undef optopt
+#define optopt my_optopt
+#undef optarg
+#define optarg my_optarg
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MY_WRAPPER_GETOPT_H_INCLUDED */
diff --git a/Win32/SBML_odeSolverApp/SBML_odeSolverApp/my_getopt.c b/Win32/SBML_odeSolverApp/SBML_odeSolverApp/my_getopt.c
new file mode 100644
index 0000000..a716b22
--- /dev/null
+++ b/Win32/SBML_odeSolverApp/SBML_odeSolverApp/my_getopt.c
@@ -0,0 +1,271 @@
+/*
+ *  my_getopt.c - my re-implementation of getopt.
+ *  Copyright 1997, 2000, 2001, 2002, Benjamin Sittler
+ *
+ *  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.
+ */
+
+#include <sys/types.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "my_getopt.h"
+
+int my_optind=1, my_opterr=1, my_optopt=0;
+char *my_optarg=0;
+
+/* this is the plain old UNIX getopt, with GNU-style extensions. */
+/* if you're porting some piece of UNIX software, this is all you need. */
+/* this supports GNU-style permution and optional arguments */
+
+int my_getopt(int argc, char * argv[], const char *opts)
+{
+  static int charind=0;
+  const char *s;
+  char mode, colon_mode;
+  int off = 0, opt = -1;
+
+  if(getenv("POSIXLY_CORRECT")) colon_mode = mode = '+';
+  else {
+    if((colon_mode = *opts) == ':') off ++;
+    if(((mode = opts[off]) == '+') || (mode == '-')) {
+      off++;
+      if((colon_mode != ':') && ((colon_mode = opts[off]) == ':'))
+        off ++;
+    }
+  }
+  my_optarg = 0;
+  if(charind) {
+    my_optopt = argv[my_optind][charind];
+    for(s=opts+off; *s; s++) if(my_optopt == *s) {
+      charind++;
+      if((*(++s) == ':') || ((my_optopt == 'W') && (*s == ';'))) {
+        if(argv[my_optind][charind]) {
+          my_optarg = &(argv[my_optind++][charind]);
+          charind = 0;
+        } else if(*(++s) != ':') {
+          charind = 0;
+          if(++my_optind >= argc) {
+            if(my_opterr) fprintf(stderr,
+                                "%s: option requires an argument -- %c\n",
+                                argv[0], my_optopt);
+            opt = (colon_mode == ':') ? ':' : '?';
+            goto my_getopt_ok;
+          }
+          my_optarg = argv[my_optind++];
+        }
+      }
+      opt = my_optopt;
+      goto my_getopt_ok;
+    }
+    if(my_opterr) fprintf(stderr,
+                        "%s: illegal option -- %c\n",
+                        argv[0], my_optopt);
+    opt = '?';
+    if(argv[my_optind][++charind] == '\0') {
+      my_optind++;
+      charind = 0;
+    }
+  my_getopt_ok:
+    if(charind && ! argv[my_optind][charind]) {
+      my_optind++;
+      charind = 0;
+    }
+  } else if((my_optind >= argc) ||
+             ((argv[my_optind][0] == '-') &&
+              (argv[my_optind][1] == '-') &&
+              (argv[my_optind][2] == '\0'))) {
+    my_optind++;
+    opt = -1;
+  } else if((argv[my_optind][0] != '-') ||
+             (argv[my_optind][1] == '\0')) {
+    char *tmp;
+    int i, j, k;
+
+    if(mode == '+') opt = -1;
+    else if(mode == '-') {
+      my_optarg = argv[my_optind++];
+      charind = 0;
+      opt = 1;
+    } else {
+      for(i=j=my_optind; i<argc; i++) if((argv[i][0] == '-') &&
+                                        (argv[i][1] != '\0')) {
+        my_optind=i;
+        opt=my_getopt(argc, argv, opts);
+        while(i > j) {
+          tmp=argv[--i];
+          for(k=i; k+1<my_optind; k++) argv[k]=argv[k+1];
+          argv[--my_optind]=tmp;
+        }
+        break;
+      }
+      if(i == argc) opt = -1;
+    }
+  } else {
+    charind++;
+    opt = my_getopt(argc, argv, opts);
+  }
+  if (my_optind > argc) my_optind = argc;
+  return opt;
+}
+
+/* this is the extended getopt_long{,_only}, with some GNU-like
+ * extensions. Implements _getopt_internal in case any programs
+ * expecting GNU libc getopt call it.
+ */
+
+int _my_getopt_internal(int argc, char * argv[], const char *shortopts,
+                     const struct option *longopts, int *longind,
+                     int long_only)
+{
+  char mode, colon_mode = *shortopts;
+  int shortoff = 0, opt = -1;
+
+  if(getenv("POSIXLY_CORRECT")) colon_mode = mode = '+';
+  else {
+    if((colon_mode = *shortopts) == ':') shortoff ++;
+    if(((mode = shortopts[shortoff]) == '+') || (mode == '-')) {
+      shortoff++;
+      if((colon_mode != ':') && ((colon_mode = shortopts[shortoff]) == ':'))
+        shortoff ++;
+    }
+  }
+  my_optarg = 0;
+  if((my_optind >= argc) ||
+      ((argv[my_optind][0] == '-') &&
+       (argv[my_optind][1] == '-') &&
+       (argv[my_optind][2] == '\0'))) {
+    my_optind++;
+    opt = -1;
+  } else if((argv[my_optind][0] != '-') ||
+            (argv[my_optind][1] == '\0')) {
+    char *tmp;
+    int i, j, k;
+
+    opt = -1;
+    if(mode == '+') return -1;
+    else if(mode == '-') {
+      my_optarg = argv[my_optind++];
+      return 1;
+    }
+    for(i=j=my_optind; i<argc; i++) if((argv[i][0] == '-') &&
+                                    (argv[i][1] != '\0')) {
+      my_optind=i;
+      opt=_my_getopt_internal(argc, argv, shortopts,
+                              longopts, longind,
+                              long_only);
+      while(i > j) {
+        tmp=argv[--i];
+        for(k=i; k+1<my_optind; k++)
+          argv[k]=argv[k+1];
+        argv[--my_optind]=tmp;
+      }
+      break;
+    }
+  } else if((!long_only) && (argv[my_optind][1] != '-'))
+    opt = my_getopt(argc, argv, shortopts);
+  else {
+    int charind, offset;
+    int found = 0, ind, hits = 0;
+
+    if(((my_optopt = argv[my_optind][1]) != '-') && ! argv[my_optind][2]) {
+      int c;
+      
+      ind = shortoff;
+      while((c = shortopts[ind++])) {
+        if(((shortopts[ind] == ':') ||
+            ((c == 'W') && (shortopts[ind] == ';'))) &&
+           (shortopts[++ind] == ':'))
+          ind ++;
+        if(my_optopt == c) return my_getopt(argc, argv, shortopts);
+      }
+    }
+    offset = 2 - (argv[my_optind][1] != '-');
+    for(charind = offset;
+        (argv[my_optind][charind] != '\0') &&
+          (argv[my_optind][charind] != '=');
+        charind++);
+    for(ind = 0; longopts[ind].name && !hits; ind++)
+      if((strlen(longopts[ind].name) == (size_t) (charind - offset)) &&
+         (strncmp(longopts[ind].name,
+                  argv[my_optind] + offset, charind - offset) == 0))
+        found = ind, hits++;
+    if(!hits) for(ind = 0; longopts[ind].name; ind++)
+      if(strncmp(longopts[ind].name,
+                 argv[my_optind] + offset, charind - offset) == 0)
+        found = ind, hits++;
+    if(hits == 1) {
+      opt = 0;
+
+      if(argv[my_optind][charind] == '=') {
+        if(longopts[found].has_arg == 0) {
+          opt = '?';
+          if(my_opterr) fprintf(stderr,
+                             "%s: option `--%s' doesn't allow an argument\n",
+                             argv[0], longopts[found].name);
+        } else {
+          my_optarg = argv[my_optind] + ++charind;
+          charind = 0;
+        }
+      } else if(longopts[found].has_arg == 1) {
+        if(++my_optind >= argc) {
+          opt = (colon_mode == ':') ? ':' : '?';
+          if(my_opterr) fprintf(stderr,
+                             "%s: option `--%s' requires an argument\n",
+                             argv[0], longopts[found].name);
+        } else my_optarg = argv[my_optind];
+      }
+      if(!opt) {
+        if (longind) *longind = found;
+        if(!longopts[found].flag) opt = longopts[found].val;
+        else *(longopts[found].flag) = longopts[found].val;
+      }
+      my_optind++;
+    } else if(!hits) {
+      if(offset == 1) opt = my_getopt(argc, argv, shortopts);
+      else {
+        opt = '?';
+        if(my_opterr) fprintf(stderr,
+                           "%s: unrecognized option `%s'\n",
+                           argv[0], argv[my_optind++]);
+      }
+    } else {
+      opt = '?';
+      if(my_opterr) fprintf(stderr,
+                         "%s: option `%s' is ambiguous\n",
+                         argv[0], argv[my_optind++]);
+    }
+  }
+  if (my_optind > argc) my_optind = argc;
+  return opt;
+}
+
+int my_getopt_long(int argc, char * argv[], const char *shortopts,
+                const struct option *longopts, int *longind)
+{
+  return _my_getopt_internal(argc, argv, shortopts, longopts, longind, 0);
+}
+
+int my_getopt_long_only(int argc, char * argv[], const char *shortopts,
+                const struct option *longopts, int *longind)
+{
+  return _my_getopt_internal(argc, argv, shortopts, longopts, longind, 1);
+}
diff --git a/Win32/SBML_odeSolverApp/SBML_odeSolverApp/my_getopt.h b/Win32/SBML_odeSolverApp/SBML_odeSolverApp/my_getopt.h
new file mode 100644
index 0000000..1e63e59
--- /dev/null
+++ b/Win32/SBML_odeSolverApp/SBML_odeSolverApp/my_getopt.h
@@ -0,0 +1,69 @@
+/*
+ *  my_getopt.h - interface to my re-implementation of getopt.
+ *  Copyright 1997, 2000, 2001, 2002, Benjamin Sittler
+ *
+ *  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.
+ */
+
+#ifndef MY_GETOPT_H_INCLUDED
+#define MY_GETOPT_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UNIX-style short-argument parser */
+extern int my_getopt(int argc, char * argv[], const char *opts);
+
+extern int my_optind, my_opterr, my_optopt;
+extern char *my_optarg;
+
+struct option {
+  const char *name;
+  int has_arg;
+  int *flag;
+  int val;
+};
+
+/* human-readable values for has_arg */
+#undef no_argument
+#define no_argument 0
+#undef required_argument
+#define required_argument 1
+#undef optional_argument
+#define optional_argument 2
+
+/* GNU-style long-argument parsers */
+extern int my_getopt_long(int argc, char * argv[], const char *shortopts,
+                       const struct option *longopts, int *longind);
+
+extern int my_getopt_long_only(int argc, char * argv[], const char *shortopts,
+                            const struct option *longopts, int *longind);
+
+extern int _my_getopt_internal(int argc, char * argv[], const char *shortopts,
+                            const struct option *longopts, int *longind,
+                            int long_only);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MY_GETOPT_H_INCLUDED */
diff --git a/Win32/TODO.txt b/Win32/TODO.txt
new file mode 100644
index 0000000..50a2654
--- /dev/null
+++ b/Win32/TODO.txt
@@ -0,0 +1,11 @@
+Work remaining on SBML_odeSolver for Microsoft Visual C++ 7.1
+=============================================================
+
+Find a way to avoid including the CVODE code within the project.
+Its included at the moment because its patched to export functions to
+SBML_odeSolver.
+
+Create a proper installer 
+
+Clean up headers so that its possible to create a useable library release rather than
+just an .exe release.
\ No newline at end of file
diff --git a/Win32/WinCVODE/.cvsignore b/Win32/WinCVODE/.cvsignore
new file mode 100644
index 0000000..8a35eb5
--- /dev/null
+++ b/Win32/WinCVODE/.cvsignore
@@ -0,0 +1,3 @@
+*.ncb
+*.suo
+*~
\ No newline at end of file
diff --git a/Win32/WinCVODE/CVODE/include/iterativ.h b/Win32/WinCVODE/CVODE/include/iterativ.h
new file mode 100644
index 0000000..a14134e
--- /dev/null
+++ b/Win32/WinCVODE/CVODE/include/iterativ.h
@@ -0,0 +1,243 @@
+/******************************************************************
+ *                                                                *
+ * File          : iterativ.h                                     *
+ * Programmers   : Scott D. Cohen and Alan C. Hindmarsh @ LLNL    *
+ * Version of    : 4 May 1998                                     *
+ *----------------------------------------------------------------*
+ * This header file contains declarations intended for use by     *
+ * generic iterative solvers of Ax = b. The enumeration gives     *
+ * symbolic names for the type  of preconditioning to be used.    *
+ * The function type declarations give the prototypes for the     *
+ * functions to be called within an iterative linear solver, that *
+ * are responsible for                                            *
+ *    multiplying A by a given vector v (ATimesFn), and           *
+ *    solving the preconditioner equation Pz = r (PSolveFn).      *
+ *                                                                * 
+ ******************************************************************/
+
+#ifdef __cplusplus     /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#ifndef _iterativ_h
+#define _iterativ_h
+
+#include "llnltyps.h"
+#include "nvector.h"
+
+
+/******************************************************************
+ *                                                                *
+ * enum : types of preconditioning                                *
+ *----------------------------------------------------------------*
+ * NONE  : The iterative linear solver should not use             *
+ *         preconditioning.                                       *
+ *                                                                *
+ * LEFT  : The iterative linear solver uses preconditioning on    *
+ *         the left only.                                         *
+ *                                                                *
+ * RIGHT : The iterative linear solver uses preconditioning on    *
+ *         the right only.                                        *
+ *                                                                *
+ * BOTH  : The iterative linear solver uses preconditioning on    *
+ *         both the left and the right.                           *
+ *                                                                *
+ ******************************************************************/ 
+
+enum { NONE, LEFT, RIGHT, BOTH };
+
+
+/******************************************************************
+ *                                                                *
+ * enum : types of Gram-Schmidt routines                          *
+ *----------------------------------------------------------------*
+ * MODIFIED_GS  : The iterative solver uses the modified          *
+ *                Gram-Schmidt routine ModifiedGS listed in this  *
+ *                file.                                           *
+ *                                                                *
+ * CLASSICAL_GS : The iterative solver uses the classical         *
+ *                Gram-Schmidt routine ClassicalGS listed in this *
+ *                file.                                           *
+ *                                                                *
+ ******************************************************************/
+
+enum { MODIFIED_GS, CLASSICAL_GS };
+
+
+/******************************************************************
+ *                                                                *
+ * Type: ATimesFn                                                 *
+ *----------------------------------------------------------------*
+ * An ATimesFn multiplies Av and stores the result in z. The      *
+ * caller is responsible for allocating memory for the z vector.  *
+ * The parameter A_data is a pointer to any information about A   *
+ * which the function needs in order to do its job. The vector v  *
+ * is unchanged. An ATimesFn returns 0 if successful and a        *
+ * non-zero value if unsuccessful.                                *
+ *                                                                *
+ ******************************************************************/
+
+typedef int (*ATimesFn)(void *A_data, N_Vector v, N_Vector z);
+
+
+/******************************************************************
+ *                                                                *
+ * Type: PSolveFn                                                 *
+ *----------------------------------------------------------------*
+ * A PSolveFn solves the preconditioner equation Pz = r for the   *
+ * vector z. The caller is responsible for allocating memory for  *
+ * the z vector. The parameter P_data is a pointer to any         *
+ * information about P which the function needs in order to do    *
+ * its job. The parameter lr is input, and indicates whether P    *
+ * is to be taken as the left preconditioner or the right         *
+ * preconditioner: lr = 1 for left and lr = 2 for right.          *
+ * If preconditioning is on one side only, lr can be ignored.     *
+ * The vector r is unchanged.                                     *
+ * A PSolveFn returns 0 if successful and a non-zero value if     *
+ * unsuccessful.  On a failure, a negative return value indicates *
+ * an unrecoverable condition, while a positive value indicates   *
+ * a recoverable one, in which the calling routine may reattempt  *
+ * the solution after updating preconditioner data.               *
+ *                                                                *
+ ******************************************************************/
+
+typedef int (*PSolveFn)(void *P_data, N_Vector r, N_Vector z, int lr);
+
+
+/******************************************************************
+ *                                                                *
+ * Function: ModifiedGS                                           *
+ *----------------------------------------------------------------*
+ * ModifiedGS performs a modified Gram-Schmidt orthogonalization  *
+ * of the N_Vector v[k] against the p unit N_Vectors at           *
+ * v[k-1], v[k-2], ..., v[k-p].                                   *
+ *                                                                *
+ * v is an array of (k+1) N_Vectors v[i], i=0, 1, ..., k.         *
+ * v[k-1], v[k-2], ..., v[k-p] are assumed to have L2-norm        *
+ * equal to 1.                                                    *
+ *                                                                *
+ * h is the output k by k Hessenberg matrix of inner products.    *
+ * This matrix must be allocated row-wise so that the (i,j)th     *
+ * entry is h[i][j]. The inner products (v[i],v[k]),              *
+ * i=i0, i0+1, ..., k-1, are stored at h[i][k-1]. Here            *
+ * i0=MAX(0,k-p).                                                 *
+ *                                                                *
+ * k is the index of the vector in the v array that needs to be   *
+ * orthogonalized against previous vectors in the v array.        *
+ *                                                                *
+ * p is the number of previous vectors in the v array against     *
+ * which v[k] is to be orthogonalized.                            *
+ *                                                                *
+ * new_vk_norm is a pointer to memory allocated by the caller to  *
+ * hold the Euclidean norm of the orthogonalized vector v[k].     *
+ *                                                                *
+ * If (k-p) < 0, then ModifiedGS uses p=k. The orthogonalized     *
+ * v[k] is NOT normalized and is stored over the old v[k]. Once   *
+ * the orthogonalization has been performed, the Euclidean norm   *
+ * of v[k] is stored in (*new_vk_norm).                           *
+ *                                                                *
+ * ModifiedGS returns 0 to indicate success. It cannot fail.      *
+ *                                                                *
+ ******************************************************************/
+
+int ModifiedGS(N_Vector *v, real **h, int k, int p, real *new_vk_norm);
+
+
+/******************************************************************
+ *                                                                *
+ * Function: ClassicalGS                                          *
+ *----------------------------------------------------------------*
+ * ClassicalGS performs a classical Gram-Schmidt                  *
+ * orthogonalization of the N_Vector v[k] against the p unit      *
+ * N_Vectors at v[k-1], v[k-2], ..., v[k-p]. The parameters v, h, *
+ * k, p, and new_vk_norm are as described in the documentation    *
+ * for ModifiedGS.                                                *
+ *                                                                *
+ * temp is an N_Vector which can be used as workspace by the      *
+ * ClassicalGS routine.                                           *
+ *                                                                *
+ * s is a length k array of reals which can be used as workspace  *
+ * by the ClassicalGS routine.                                    *
+ *                                                                * 
+ * ClassicalGS returns 0 to indicate success. It cannot fail.     *
+ *                                                                *
+ ******************************************************************/
+
+int ClassicalGS(N_Vector *v, real **h, int k, int p, real *new_vk_norm,
+		N_Vector temp, real *s);
+
+
+/******************************************************************
+ *                                                                *
+ * Function: QRfact                                               *
+ *----------------------------------------------------------------*
+ * QRfact performs a QR factorization of the Hessenberg matrix H. *
+ *                                                                *
+ * n is the problem size; the matrix H is (n+1) by n.             *
+ *                                                                *
+ * h is the (n+1) by n Hessenberg matrix H to be factored. It is  *
+ * stored row-wise.                                               *
+ *                                                                *
+ * q is an array of length 2*n containing the Givens rotations    *
+ * computed by this function. A Givens rotation has the form:     *
+ * | c  -s |                                                      *
+ * | s   c |.                                                     *
+ * The components of the Givens rotations are stored in q as      *
+ * (c, s, c, s, ..., c, s).                                       *
+ *                                                                *
+ * job is a control flag. If job==0, then a new QR factorization  *
+ * is performed. If job!=0, then it is assumed that the first     *
+ * n-1 columns of h have already been factored and only the last  *
+ * column needs to be updated.                                    *
+ *                                                                *
+ * QRfact returns 0 if successful. If a zero is encountered on    *
+ * the diagonal of the triangular factor R, then QRfact returns   *
+ * the equation number of the zero entry, where the equations are *
+ * numbered from 1, not 0. If QRsol is subsequently called in     *
+ * this situation, it will return an error because it could not   *
+ * divide by the zero diagonal entry.                             *
+ *                                                                *
+ ******************************************************************/
+
+int QRfact(int n, real **h, real *q, int job);
+
+
+/******************************************************************
+ *                                                                *
+ * Function: QRsol                                                *
+ *----------------------------------------------------------------*
+ * QRsol solves the linear least squares problem                  *
+ *                                                                *
+ * min (b - H*x, b - H*x), x in R^n,                              *
+ *                                                                *
+ * where H is a Hessenberg matrix, and b is in R^(n+1).           *
+ * It uses the QR factors of H computed by QRfact.                *
+ *                                                                *
+ * n is the problem size; the matrix H is (n+1) by n.             *
+ *                                                                *
+ * h is a matrix (computed by QRfact) containing the upper        *
+ * triangular factor R of the original Hessenberg matrix H.       *
+ *                                                                *
+ * q is an array of length 2*n (computed by QRfact) containing    *
+ * the Givens rotations used to factor H.                         *
+ *                                                                *
+ * b is the (n+1)-vector appearing in the least squares problem   *
+ * above.                                                         *
+ *                                                                *
+ * On return, b contains the solution x of the least squares      *
+ * problem, if QRsol was successful.                              *
+ *                                                                *
+ * QRsol returns a 0 if successful.  Otherwise, a zero was        *
+ * encountered on the diagonal of the triangular factor R.        *
+ * In this case, QRsol returns the equation number (numbered      *
+ * from 1, not 0) of the zero entry.                              *
+ *                                                                *
+ ******************************************************************/
+
+int QRsol(int n, real **h, real *q, real *b);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/Win32/WinCVODE/CVODE/include/llnltyps.h b/Win32/WinCVODE/CVODE/include/llnltyps.h
new file mode 100644
index 0000000..88dc495
--- /dev/null
+++ b/Win32/WinCVODE/CVODE/include/llnltyps.h
@@ -0,0 +1,129 @@
+/******************************************************************
+ *                                                                *
+ * File          : llnltyps.h                                     *
+ * Programmers   : Scott D. Cohen and Alan C. Hindmarsh @ LLNL    *
+ * Version of    : 4 May 1998                                     *
+ *----------------------------------------------------------------*
+ * This header file exports three types: real, integer, and boole *
+ * (short for boolean), as well as the constants TRUE and FALSE.  *
+ *                                                                *
+ * Users should #include "llnltyps.h" in any file that should     *
+ * be easily modifiable to work with different real or integer    *
+ * types and use the exported names real and integer within such  *
+ * a file. The types for real and integer below have been set to  *
+ * double and int, respectively. A user should modify these       *
+ * type declarations as he/she sees fit. For example, if a user   *
+ * wants the work with type float because double precision        *
+ * floating point arithmetic is too expensive on the user's       *
+ * machine, then the definition below should be changed to:       *
+ *                                                                *
+ * typedef float real;                                            *
+ *                                                                *
+ * Similarly, if a user needs to work with extremely large        *
+ * integers (see the system header file <limits.h> for the limits *
+ * on type int and long int on your machine), then the user       *
+ * should change the definition below to:                         *            
+ *                                                                *
+ * typedef long int integer;                                      *
+ *                                                                *
+ * The constants LLNL_FLOAT, LLNL_DOUBLE, LLNL_INT, LLNL_LONG     *
+ * indicate the underlying types for real and integer.            *
+ * They should be set as follows:                                 *
+ *                                                                *
+ * (1) #define LLNL_FLOAT 1                                       *
+ *     #define LLNL_DOUBLE 0     (real is float)                  *
+ *                                                                *
+ * (2) #define LLNL_FLOAT 0                                       *
+ *     #define LLNL_DOUBLE 1     (real is double)                 *
+ *                                                                *
+ * (3) #define LLNL_INT 1                                         *
+ *     #define LLNL_LONG 0   (integer is int)                     *
+ *                                                                *
+ * (4) #define LLNL_INT 0                                         *
+ *     #define LLNL_LONG 1   (integer is long int)                *
+ *                                                                *
+ * Thus the legal types for real are float and double, while      *
+ * the legal types for integer are int and long int. The macro    *
+ * RCONST gives a user a convenient way to define real            *
+ * constants. To use the real constant 1.0, for example, the      *
+ * user should write                                              *
+ *                                                                *
+ * #define ONE RCONST(1.0)                                        *
+ *                                                                *
+ * If real is double, then RCONST(1.0) expands to 1.0. If real is *
+ * float, then RCONST(1.0) expands to 1.0F. There is never a      *
+ * need to explicitly cast 1.0 to (real).                         *
+ *                                                                *
+ ******************************************************************/
+
+#ifdef __cplusplus     /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#ifndef _llnltyps_h
+#define _llnltyps_h
+
+
+/******************************************************************
+ *                                                                *
+ * Types : real, integer                                          *
+ *----------------------------------------------------------------*
+ * The types real and integer are currently set to double and     *
+ * int, respectively. See the documentation at the top for        *
+ * usage details and a description of associated constants and    *
+ * macros.                                                        *
+ *                                                                *
+ ******************************************************************/
+
+typedef double real;
+typedef int integer;
+
+#define LLNL_FLOAT  0
+#define LLNL_DOUBLE 1
+
+#define LLNL_INT  1
+#define LLNL_LONG 0
+
+#if LLNL_FLOAT
+
+#define RCONST(x) x##F
+
+#elif LLNL_DOUBLE
+
+#define RCONST(x) x
+
+#endif
+
+
+/******************************************************************
+ *                                                                *
+ * Type : boole                                                   *
+ * Constants : FALSE, TRUE                                        *
+ *----------------------------------------------------------------*
+ * ANSI C does not have a built-in boolean type. Below is the     *
+ * definition for a new type boole. The advantage of using the    *
+ * name boole (instead of int) is an increase in code readability.*
+ * It allows the programmer to make a distinction between int and *
+ * boolean data. Variables of type boole are intended to have only*
+ * the two values FALSE and TRUE which are defined below to be    *
+ * equal to 0 and 1, respectively.                                *
+ *                                                                *
+ ******************************************************************/
+
+#ifndef boole
+#define boole int
+#endif
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/Win32/WinCVODE/WinCVODE.sln b/Win32/WinCVODE/WinCVODE.sln
new file mode 100644
index 0000000..fc66a83
--- /dev/null
+++ b/Win32/WinCVODE/WinCVODE.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinCVODE", "WinCVODE\WinCVODE.vcproj", "{E92D4874-0AB6-472D-B7FD-8CD9866B85CC}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{E92D4874-0AB6-472D-B7FD-8CD9866B85CC}.Debug.ActiveCfg = Debug|Win32
+		{E92D4874-0AB6-472D-B7FD-8CD9866B85CC}.Debug.Build.0 = Debug|Win32
+		{E92D4874-0AB6-472D-B7FD-8CD9866B85CC}.Release.ActiveCfg = Release|Win32
+		{E92D4874-0AB6-472D-B7FD-8CD9866B85CC}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/Win32/WinCVODE/WinCVODE/.cvsignore b/Win32/WinCVODE/WinCVODE/.cvsignore
new file mode 100644
index 0000000..a21c48f
--- /dev/null
+++ b/Win32/WinCVODE/WinCVODE/.cvsignore
@@ -0,0 +1,2 @@
+Debug
+Release
\ No newline at end of file
diff --git a/Win32/WinCVODE/WinCVODE/ReadMe.txt b/Win32/WinCVODE/WinCVODE/ReadMe.txt
new file mode 100644
index 0000000..b0147e3
--- /dev/null
+++ b/Win32/WinCVODE/WinCVODE/ReadMe.txt
@@ -0,0 +1,25 @@
+========================================================================
+    DYNAMIC LINK LIBRARY : WinCVODE Project Overview
+========================================================================
+
+AppWizard has created this WinCVODE DLL for you.  
+This file contains a summary of what you will find in each of the files that
+make up your WinCVODE application.
+
+
+WinCVODE.vcproj
+    This is the main project file for VC++ projects generated using an Application Wizard. 
+    It contains information about the version of Visual C++ that generated the file, and 
+    information about the platforms, configurations, and project features selected with the
+    Application Wizard.
+
+WinCVODE.cpp
+    This is the main DLL source file.
+
+/////////////////////////////////////////////////////////////////////////////
+Other notes:
+
+AppWizard uses "TODO:" comments to indicate parts of the source code you
+should add to or customize.
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/Win32/WinCVODE/WinCVODE/WinCVODE.cpp b/Win32/WinCVODE/WinCVODE/WinCVODE.cpp
new file mode 100644
index 0000000..3a5b34d
--- /dev/null
+++ b/Win32/WinCVODE/WinCVODE/WinCVODE.cpp
@@ -0,0 +1,38 @@
+// WinCVODE.cpp : Defines the entry point for the DLL application.
+//
+
+#include <windows.h>
+
+BOOL APIENTRY DllMain( HANDLE hModule, 
+                       DWORD  ul_reason_for_call, 
+                       LPVOID lpReserved
+					 )
+{
+	switch (ul_reason_for_call)
+	{
+	case DLL_PROCESS_ATTACH:
+	case DLL_THREAD_ATTACH:
+	case DLL_THREAD_DETACH:
+	case DLL_PROCESS_DETACH:
+		break;
+	}
+    return TRUE;
+}
+
+/* examples
+// This is an example of an exported variable
+WINCVODE_API int nWinCVODE=0;
+
+// This is an example of an exported function.
+WINCVODE_API int fnWinCVODE(void)
+{
+	return 42;
+}
+
+// This is the constructor of a class that has been exported.
+// see WinCVODE.h for the class definition
+CWinCVODE::CWinCVODE()
+{ 
+	return; 
+}
+*/
\ No newline at end of file
diff --git a/Win32/WinCVODE/WinCVODE/WinCVODE.h b/Win32/WinCVODE/WinCVODE/WinCVODE.h
new file mode 100644
index 0000000..12a6732
--- /dev/null
+++ b/Win32/WinCVODE/WinCVODE/WinCVODE.h
@@ -0,0 +1,24 @@
+// The following ifdef block is the standard way of creating macros which make exporting 
+// from a DLL simpler. All files within this DLL are compiled with the WINCVODE_EXPORTS
+// symbol defined on the command line. this symbol should not be defined on any project
+// that uses this DLL. This way any other project whose source files include this file see 
+// WINCVODE_API functions as being imported from a DLL, whereas this DLL sees symbols
+// defined with this macro as being exported.
+#ifdef WINCVODE_EXPORTS
+#define WINCVODE_API __declspec(dllexport)
+#else
+#define WINCVODE_API __declspec(dllimport)
+#endif
+
+/* examples ...
+// This class is exported from the WinCVODE.dll
+class WINCVODE_API CWinCVODE {
+public:
+	CWinCVODE(void);
+	// TODO: add your methods here.
+};
+
+extern WINCVODE_API int nWinCVODE;
+
+WINCVODE_API int fnWinCVODE(void);
+*/
diff --git a/Win32/WinCVODE/WinCVODE/WinCVODE.vcproj b/Win32/WinCVODE/WinCVODE/WinCVODE.vcproj
new file mode 100644
index 0000000..1b1a78a
--- /dev/null
+++ b/Win32/WinCVODE/WinCVODE/WinCVODE.vcproj
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="WinCVODE"
+	ProjectGUID="{E92D4874-0AB6-472D-B7FD-8CD9866B85CC}"
+	RootNamespace="WinCVODE"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Debug"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;WINCVODE_EXPORTS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)\WinCVODED.dll"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)\WinCVODED.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)\WinCVODED.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(ProjectDir)..\..\bin"
+			IntermediateDirectory="Release"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;WINCVODE_EXPORTS"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/WinCVODE.dll"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/WinCVODE.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\sundials\shared\source\band.c">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvband.c">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvbandpre.c">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvbbdpre.c">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvdense.c">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvdiag.c">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvodea.c">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvodes.c">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvodesio.c">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvspgmr.c">
+			</File>
+			<File
+				RelativePath="..\sundials\shared\source\dense.c">
+			</File>
+			<File
+				RelativePath="..\sundials\nvec_ser\fnvector_serial.c">
+			</File>
+			<File
+				RelativePath="..\sundials\shared\source\iterative.c">
+			</File>
+			<File
+				RelativePath="..\sundials\shared\source\nvector.c">
+			</File>
+			<File
+				RelativePath="..\sundials\nvec_ser\nvector_serial.c">
+			</File>
+			<File
+				RelativePath="..\sundials\shared\source\smalldense.c">
+			</File>
+			<File
+				RelativePath="..\sundials\shared\source\spgmr.c">
+			</File>
+			<File
+				RelativePath="..\sundials\shared\source\sundialsmath.c">
+			</File>
+			<File
+				RelativePath=".\WinCVODE.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\sundials\shared\include\band.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\include\cvband.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvband_impl.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\include\cvbandpre.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvbandpre_impl.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\include\cvbbdpre.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvbbdpre_impl.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\include\cvdense.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvdense_impl.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\include\cvdiag.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvdiag_impl.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\include\cvodea.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvodea_impl.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\include\cvodes.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvodes_impl.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\include\cvspgmr.h">
+			</File>
+			<File
+				RelativePath="..\sundials\cvodes\source\cvspgmr_impl.h">
+			</File>
+			<File
+				RelativePath="..\sundials\shared\include\dense.h">
+			</File>
+			<File
+				RelativePath="..\sundials\nvec_par\fnvector_parallel.h">
+			</File>
+			<File
+				RelativePath="..\sundials\nvec_ser\fnvector_serial.h">
+			</File>
+			<File
+				RelativePath="..\sundials\shared\include\iterative.h">
+			</File>
+			<File
+				RelativePath="..\sundials\shared\include\nvector.h">
+			</File>
+			<File
+				RelativePath="..\sundials\nvec_par\nvector_parallel.h">
+			</File>
+			<File
+				RelativePath="..\sundials\nvec_ser\nvector_serial.h">
+			</File>
+			<File
+				RelativePath="..\sundials\shared\include\smalldense.h">
+			</File>
+			<File
+				RelativePath="..\sundials\shared\include\spgmr.h">
+			</File>
+			<File
+				RelativePath="..\sundials\config\sundials_config.h">
+			</File>
+			<File
+				RelativePath="..\sundials\shared\include\sundialsmath.h">
+			</File>
+			<File
+				RelativePath="..\sundials\shared\include\sundialstypes.h">
+			</File>
+			<File
+				RelativePath=".\WinCVODE.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+		<File
+			RelativePath=".\ReadMe.txt">
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/Win32/WinCVODE/sundials/INSTALL_NOTES b/Win32/WinCVODE/sundials/INSTALL_NOTES
new file mode 100644
index 0000000..7dfad4a
--- /dev/null
+++ b/Win32/WinCVODE/sundials/INSTALL_NOTES
@@ -0,0 +1,385 @@
+           SUNDIALS Installation Instructions
+              Release 2.0, November 2004  
+
+These are generic installation instructions. For complete installation 
+instructions, consult the user guide for any of the SUNDIALS solvers.
+
+Contents:
+1. Basic Installation
+2. Installation Names
+3. Compilers and Options
+  3.1. General options
+  3.2. Options for Fortran support
+  3.3. Options for MPI support
+  3.4. Options for library support
+  3.5. Options for cross-compilation
+  3.6. Environment variables
+4. Configuration examples
+
+1. Basic Installation
+=====================
+
+The simplest way to build SUNDIALS is to use the `configure' shell script
+which attempts to guess correct values for various system-dependent
+variables and features and find the directories where various system
+headers and libraries are kept.  It then creates a `Makefile' in each
+subdirectory. Running the `make' utility then builds the package for
+your system.
+
+Here's the procedure to build SUNDIALS using `configure' on systems which
+are supported by it.  If this simplified procedure fails, or if you
+are using a platform such as MS-Windows, where `configure' script
+doesn't work, you might need to use various non-default options, and
+maybe perform some of the steps manually.
+
+  1. `cd' to the sundials directory (the directory where this file resides)
+     and type `./configure' to configure the package for your system.  
+     If you're using `csh' on an old version of System V, you might need to 
+     type `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes a while.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile all existing modules.
+
+  3. Type `make install' to install the libraries and header files.
+ 
+  4. To compile the example programs for all the existing modules, type
+     'make examples'.
+
+  5. You can remove the libraries and object files from the source code 
+     directories by typing `make clean'.
+
+2. Installation Names
+=====================
+
+By default, 'make install' will install the SUNDIALS libraries in 
+the subdirectory 'lib' and the header files in the sudirectory 'include'
+of the directory from where 'configure' was invoked.
+You can specify a different installation prefix by giving 'configure' 
+the option '--prefix=PREFIX'.
+
+You can specify separate installation prefixes for architecture-specific
+files and architecture-independent files. If you give 'configure' the
+option '--exec-prefix=EPREFIX', the package will use EPATH as the prefix
+for installing libraries. The header files will still use the regular 
+prefix.
+
+You can also specify the directory where libraries should be installed
+by giving 'configure' the option '--libdir=DIR'. Similarly, invoking
+'configure --includedir=DIR' will install header files in DIR.
+
+Run `configure --help' for a list of the directories you can set and 
+what kinds of files go in them.
+
+The SUNDIALS libraries and header files are summarized below:
+
+SHARED module
+  library:      libsundials_shared.{a,so}  
+  header files: sundialstypes.h  sundialsmath.h  dense.h      smalldense.h
+                band.h           spgmr.h         iterative.h  nvector.h
+
+
+NVECTOR_SERIAL module
+  libraries:    libsundials_nvecserial.{a,so} libsundials_fnvecserial.a
+  header files: nvector_serial.h
+
+
+NVECTOR_PARALLEL module
+  libraries:    libsundials_nvecparallel.{a,so} libsundials_fnvecparallel.a
+  header files: nvector_parallel.h
+
+
+CVODE module
+  libraries:    libsundials_cvode.{a,so} libsundials_fcvode.a
+  header files: cvband.h  cvbandpre.h  cvbbdpre.h  cvdense.h  cvdiag.h  
+                cvode.h   cvspgmr.h
+
+
+CVODES module
+  library:      libsundials_cvodes.{a,so}
+  header files: cvband.h     cvbbdpre.h  cvdiag.h  cvodec.h  
+                cvbandpre.h  cvdense.h   cvodea.h  cvodes.h  cvspgmr.h
+
+
+IDA module
+  library:      libsundials_ida.{a,so}
+  header files: idaband.h  idabbdpre.h  idadense.h  ida.h  idaspgmr.h
+
+
+KINSOL module
+  libraries:    libsundials_kinsol.{a,so} libsundials_fkinsol.a
+  header files: kinbbdpre.h  kinsol.h  kinspgmr.h
+
+
+
+3. Compilers and Options
+========================
+
+Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+You can give `configure' initial values for these variables by setting 
+them in the environment.  You can do that on the command line like this:
+
+     ./configure CC=gcc CFLAGS=-O2 F77=g77 FFLAGS=-O
+
+Here is a detailed description of the configure options that are
+pertinent to SUNDIALS. In what follows, 'build_tree' is the directory
+from where 'configure' was invoked.
+
+3.1. General options
+--------------------
+
+--help
+-h
+
+  print a summary of the options to `configure', and exit.
+
+--quiet
+--silent
+-q
+
+  do not print messages saying which checks are being made.  To
+  suppress all normal output, redirect it to `/dev/null' (any error
+  messages will still be shown).
+
+
+--prefix=PREFIX
+
+  Location for architecture-independent files.
+  Default: PREFIX=build_tree
+  
+--includedir=DIR
+
+  Alternate location for header files.
+  Default: DIR=PREFIX/include
+  
+--libdir=DIR
+
+  Alternate location for libraries.
+  Default: DIR=PREFIX/lib
+
+--disable-examples
+
+  All available example programs are automatically built unless this option is
+  used. The example executables are stored under the following subdirectories
+  of the associated solver: 
+  
+  
+   build_tree/ solver/examples_ser :      serial C examples
+   build_tree/solver/examples_par :       parallel C examples
+   build_tree/solver/fcmix/examples_ser : serial F77 examples
+   build_tree/solver/fcmix/examples_par : parallel F77 examples
+  
+  
+  Note: Some of these subdirectories may not exist depending upon the
+  solver and/or the configuration options used.
+  
+--disable-solver
+
+  Although each existing solver module is built by default, support for a
+  given solver can be explicitly disabled using this option. 
+  The valid values for solver are: cvode, cvodes, 
+  ida, and kinsol.
+  
+--with-cppflags=ARG
+
+  Specify additional C preprocessor flags 
+  (e.g., ARG=-I<include_dir> if necessary header files are located in nonstandard locations).
+
+--with-cflags=ARG
+
+  Specify additional C compilation flags.
+
+--with-ldflags=ARG
+
+  Specify additional linker flags 
+  (e.g., ARG=-L<lib_dir> if required libraries are located in nonstandard locations).
+
+--with-libs=ARG
+
+  Specify additional libraries to be used 
+  (e.g., ARG=-l<foo> to link with the library named libfoo.a or libfoo.so).
+
+--with-precision=ARG
+
+  By default, sundials will define a real number (internally referred to as
+  realtype) to be a double-precision floating-point numeric data type (double
+  C-type); however, this option may be used to build sundials with realtype
+  alternatively defined as a single-precision floating-point numeric data type
+  (float C-type) if ARG=single, or as a long double C-type if ARG=extended.
+
+  Default: ARG=double
+
+3.2. Options for Fortran support
+--------------------------------
+
+--disable-f77
+
+  Using this option will disable all F77 support. The fcvode, fkinsol and
+  fnvector modules will not be built regardless of availability.
+
+--with-fflags=ARG
+
+  Specify additional F77 compilation flags.
+
+
+The configuration script will attempt to automatically determine the
+function name mangling scheme required by the specified F77 compiler, but the
+following two options may be used to override the default behavior.
+
+--with-f77underscore=ARG
+
+  This option pertains to the fkinsol, fcvode and fnvector F/C interface 
+  modules and is used to specify the number of underscores to append to 
+  function names so F77 routines can properly link with the associated
+  sundials libraries. Valid values for ARG are: none, one, and two.
+
+  Default: ARG=one
+
+--with-f77case=ARG
+
+  Use this option to specify whether the external names of the fkinsol,
+  fcvode and fnvector F/C interface functions should be lowercase
+  or uppercase so F77 routines can properly link with the associated sundials
+  libraries. Valid values for ARG are: lower and upper.
+
+  Default: ARG=lower
+
+3.3. Options for MPI support
+----------------------------
+
+The following configuration options are only applicable to the parallel sundials packages:
+
+  
+--disable-mpi
+
+  Using this option will completely disable MPI support.
+
+--with-mpicc=ARG
+--with-mpif77=ARG
+
+  By default, the configuration utility script will use the MPI compiler
+  scripts named mpicc and mpif77 to compile the parallelized
+  sundials subroutines; however, for reasons of compatibility, different
+  executable names may be specified via the above options. Also, ARG=no
+  can be used to disable the use of MPI compiler scripts, thus causing
+  the serial C and F compilers to be used to compile the parallelized
+  sundials functions and examples.
+
+--with-mpi-root=MPIDIR
+
+  This option may be used to specify which MPI implementation should be used.
+  The sundials configuration script will automatically check under the
+  subdirectories MPIDIR/include and MPIDIR/lib for the necessary
+  header files and libraries. The subdirectory MPIDIR/bin will also be
+  searched for the C and F MPI compiler scripts, unless the user uses
+  --with-mpicc=no or --with-mpif77=no.
+
+--with-mpi-incdir=INCDIR
+--with-mpi-libdir=LIBDIR
+--with-mpi-libs=LIBS
+
+  These options may be used if the user would prefer not to use a preexisting
+  MPI compiler script, but instead would rather use a serial complier and
+  provide the flags necessary to compile the MPI-aware subroutines in
+  sundials.
+
+  Often an MPI implementation will have unique library names and so it may
+  be necessary to specify the appropriate libraries to use (e.g., LIBS=-lmpich).
+
+  Default: INCDIR=MPIDIR/include, LIBDIR=MPIDIR/lib and LIBS=-lmpi
+
+--with-mpi-flags=ARG
+
+  Specify additional MPI-specific flags.
+
+3.4. Options for library support
+--------------------------------
+
+By default, only static libraries are built, but the following option
+may be used to build shared libraries on supported platforms.
+
+--enable-shared
+
+  Using this particular option will result in both static and shared versions
+  of the available sundials libraries being built if the systsupports
+  shared libraries. To build only shared libraries also specify --disable-static.
+
+  Note: The fcvode and fkinsol libraries can only be built as static
+  libraries because they contain references to externally defined symbols, namely
+  user-supplied F77 subroutines.  Although the F77 interfaces to the serial and
+  parallel implementations of the supplied nvector module do not contain any
+  unresolvable external symbols, the libraries are still built as static libraries
+  for the purpose of consistency.
+
+3.5. Options for cross-compilation
+----------------------------------
+
+If the sundials suite will be cross-compiled (meaning the build
+procedure will not be completed on the actual destination system, but rather
+on an alternate system with a different architecture) then the following two
+options should be used:
+
+--build=BUILD
+
+  This particular option is used to specify the canonical system/platform name
+  for the build system.
+
+--host=HOST
+
+  If cross-compiling, then the user must use this option to specify the canonical
+  system/platform name for the destination system.
+
+3.6. Environment variables
+--------------------------
+
+The following environment variables can be locally (re)defined for use during the 
+configuration of sundials. See the next section for illustrations of these.
+
+CC
+
+F77
+
+  Since the configuration script uses the first C and F77 compilers found in
+  the current executable search path, then each relevant shell variable (CC
+  and F77) must be locally (re)defined in order to use a different compiler. 
+  For example, to use xcc (executable name of chosen compiler) as the C
+  language compiler, use CC=xcc in the configure step.
+
+CFLAGS
+
+FFLAGS
+
+  Use these environment variables to override the default C and F77 compilation flags.
+
+4. Configuration examples
+=========================
+
+The following examples are meant to help demonstrate proper usage of the configure options:
+
+
+% configure CC=gcc F77=g77 --with-cflags=-g3 --with-fflags=-g3 \
+            --with-mpicc=/usr/apps/mpich/1.2.4/bin/mpicc \ 
+            --with-mpif77=/usr/apps/mpich/1.2.4/bin/mpif77
+
+
+The above example builds sundials using gcc as the serial C compiler, g77 as the serial F77
+compiler, mpicc as the parallel C compiler, mpif77 as the parallel F77 compiler, 
+and appends the -g3 compilaton flag to the list of default flags.
+
+% configure CC=gcc --disable-examples --with-mpicc=no \
+            --with-mpi-root=/usr/apps/mpich/1.2.4 \
+            --with-mpi-libs=-lmpich
+
+This example again builds sundials using gcc as the serial C compiler, but the 
+--with-mpicc=no option explicitly disables the use of the corresponding MPI compiler script. 
+In addition, since the --with-mpi-root option is given, the compilation flags
+-I/usr/apps/mpich/1.2.4/include and -L/usr/apps/mpich/1.2.4/lib are passed to gcc when 
+compiling the MPI-enabled functions. The --disable-examples option disables the examples
+(which means a Fortran compiler is not required). The --with-mpi-libs option is still needed
+so that the configure script can check if gcc can link with the appropriate MPI library as
+-lmpi is the internal default.
diff --git a/Win32/WinCVODE/sundials/Makefile b/Win32/WinCVODE/sundials/Makefile
new file mode 100644
index 0000000..81e388e
--- /dev/null
+++ b/Win32/WinCVODE/sundials/Makefile
@@ -0,0 +1,141 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:09:34 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/shared/LICENSE.
+# -----------------------------------------------------------------
+# Main Makefile for SUNDIALS suite
+#
+# Makefile.  Generated from Makefile.in by configure.
+# -----------------------------------------------------------------
+
+SHELL = /bin/bash
+
+
+
+srcdir       = .
+abs_builddir = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials
+prefix       = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials
+exec_prefix  = ${prefix}
+includedir   = ${prefix}/include
+libdir       = ${exec_prefix}/lib
+
+MODULES         = shared/source cvode/source cvode/fcmix cvodes/source ida/source kinsol/source kinsol/fcmix
+NVEC_MODULES    = nvec_ser
+EXAMPLE_MODULES =  cvode/examples_ser cvodes/examples_ser ida/examples_ser kinsol/examples_ser
+
+COMPONENTS = $(NVEC_MODULES) $(MODULES)
+EXAMPLES   = $(EXAMPLE_MODULES)
+
+FGREP   = grep -F
+INSTALL = /usr/bin/install -c
+CP_FILE = ${INSTALL} -m 644
+
+all:
+	@for i in ${COMPONENTS} ; do  \
+	   if test -d $${i} ; then    \
+	     echo "Making $${i}..." ; \
+	     cd $${i} ;               \
+	     ${MAKE} ;                \
+	     cd ${abs_builddir} ;     \
+	     echo "" ;                \
+	   fi ;                       \
+	 done
+
+install:
+	@for i in ${COMPONENTS} ; do          \
+	   if test -d $${i} ; then            \
+	     echo "Installing $${i}..." ;     \
+	     cd $${i} ;                       \
+	     ${MAKE} install ;                \
+	     cd ${abs_builddir} ;             \
+	     echo "" ;                        \
+	   fi ;                               \
+	 done
+
+clean:
+	@for i in ${COMPONENTS} ; do \
+	   if test -d $${i} ; then   \
+	     cd $${i} ;              \
+	     ${MAKE} clean ;         \
+	     cd ${abs_builddir} ;    \
+	   fi ;                      \
+	 done
+
+examples:
+	@if test "X${EXAMPLES}" = "Xno" ; then             \
+	   echo "Examples were NOT configured" ;           \
+	   echo "Rerun configure with --enable-examples" ; \
+	 else                                              \
+	   for i in ${EXAMPLES} ; do                       \
+	     if test -d $${i} ; then                       \
+	       echo "Making examples in $${i}..." ;        \
+	       cd $${i} ;                                  \
+	       ${MAKE} ;                                   \
+	       cd ${abs_builddir} ;                        \
+	       echo "" ;                                   \
+	     fi ;                                          \
+	   done ;                                          \
+	 fi
+
+examples_clean:
+	@if test "X${EXAMPLES}" = "Xno" ; then \
+	   : ;                                 \
+	 else                                  \
+	   for i in ${EXAMPLES} ; do           \
+	     if test -d $${i} ; then           \
+	       cd $${i} ;                      \
+	       ${MAKE} clean ;                 \
+	       cd ${abs_builddir} ;            \
+	     fi ;                              \
+	   done ;                              \
+	 fi
+
+examples_uninstall:
+	@if test "X${EXAMPLES}" = "Xno" ; then \
+	   : ;                                 \
+	 else                                  \
+	   for i in ${EXAMPLES} ; do           \
+	     if test -d $${i} ; then           \
+	       cd $${i} ;                      \
+	       ${MAKE} uninstall ;             \
+	       cd ${abs_builddir} ;            \
+	     fi ;                              \
+	   done ;                              \
+	 fi
+
+distclean: clean examples_clean
+	@for i in ${COMPONENTS} ; do           \
+	   if test -d $${i} ; then             \
+	     rm -f $${i}/Makefile ;            \
+	   fi ;                                \
+	 done
+	@if test "X${EXAMPLES}" = "Xno" ; then \
+	   : ;                                 \
+	 else                                  \
+	   for i in ${EXAMPLES} ; do           \
+	     if test -d $${i} ; then           \
+	       rm -f $${i}/Makefile ;          \
+	     fi ;                              \
+	   done ;                              \
+	 fi
+	@rm -f config.log ;                    \
+	 rm -f config.status ;                 \
+	 rm -f config.cache ;                  \
+	 rm -f config.h                        \
+	 rm -f sundials_config.h ;             \
+	 rm -f Makefile
+
+uninstall: examples_uninstall
+	@for i in ${COMPONENTS} ; do \
+	   if test -d $${i} ; then   \
+	     cd $${i} ;              \
+	     ${MAKE} uninstall ;     \
+	     cd ${abs_builddir} ;    \
+	   fi ;                      \
+	 done
diff --git a/Win32/WinCVODE/sundials/Makefile.in b/Win32/WinCVODE/sundials/Makefile.in
new file mode 100644
index 0000000..51edd62
--- /dev/null
+++ b/Win32/WinCVODE/sundials/Makefile.in
@@ -0,0 +1,141 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:09:34 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/shared/LICENSE.
+# -----------------------------------------------------------------
+# Main Makefile for SUNDIALS suite
+#
+# @configure_input@
+# -----------------------------------------------------------------
+
+SHELL = @SHELL@
+
+ at SET_MAKE@
+
+srcdir       = @srcdir@
+abs_builddir = @abs_builddir@
+prefix       = @prefix@
+exec_prefix  = @exec_prefix@
+includedir   = @includedir@
+libdir       = @libdir@
+
+MODULES         = @MODULES@
+NVEC_MODULES    = @NVEC_MODULES@
+EXAMPLE_MODULES = @EXAMPLE_MODULES@
+
+COMPONENTS = $(NVEC_MODULES) $(MODULES)
+EXAMPLES   = $(EXAMPLE_MODULES)
+
+FGREP   = @FGREP@
+INSTALL = @INSTALL@
+CP_FILE = @INSTALL_DATA@
+
+all:
+	@for i in ${COMPONENTS} ; do  \
+	   if test -d $${i} ; then    \
+	     echo "Making $${i}..." ; \
+	     cd $${i} ;               \
+	     ${MAKE} ;                \
+	     cd ${abs_builddir} ;     \
+	     echo "" ;                \
+	   fi ;                       \
+	 done
+
+install:
+	@for i in ${COMPONENTS} ; do          \
+	   if test -d $${i} ; then            \
+	     echo "Installing $${i}..." ;     \
+	     cd $${i} ;                       \
+	     ${MAKE} install ;                \
+	     cd ${abs_builddir} ;             \
+	     echo "" ;                        \
+	   fi ;                               \
+	 done
+
+clean:
+	@for i in ${COMPONENTS} ; do \
+	   if test -d $${i} ; then   \
+	     cd $${i} ;              \
+	     ${MAKE} clean ;         \
+	     cd ${abs_builddir} ;    \
+	   fi ;                      \
+	 done
+
+examples:
+	@if test "X${EXAMPLES}" = "Xno" ; then             \
+	   echo "Examples were NOT configured" ;           \
+	   echo "Rerun configure with --enable-examples" ; \
+	 else                                              \
+	   for i in ${EXAMPLES} ; do                       \
+	     if test -d $${i} ; then                       \
+	       echo "Making examples in $${i}..." ;        \
+	       cd $${i} ;                                  \
+	       ${MAKE} ;                                   \
+	       cd ${abs_builddir} ;                        \
+	       echo "" ;                                   \
+	     fi ;                                          \
+	   done ;                                          \
+	 fi
+
+examples_clean:
+	@if test "X${EXAMPLES}" = "Xno" ; then \
+	   : ;                                 \
+	 else                                  \
+	   for i in ${EXAMPLES} ; do           \
+	     if test -d $${i} ; then           \
+	       cd $${i} ;                      \
+	       ${MAKE} clean ;                 \
+	       cd ${abs_builddir} ;            \
+	     fi ;                              \
+	   done ;                              \
+	 fi
+
+examples_uninstall:
+	@if test "X${EXAMPLES}" = "Xno" ; then \
+	   : ;                                 \
+	 else                                  \
+	   for i in ${EXAMPLES} ; do           \
+	     if test -d $${i} ; then           \
+	       cd $${i} ;                      \
+	       ${MAKE} uninstall ;             \
+	       cd ${abs_builddir} ;            \
+	     fi ;                              \
+	   done ;                              \
+	 fi
+
+distclean: clean examples_clean
+	@for i in ${COMPONENTS} ; do           \
+	   if test -d $${i} ; then             \
+	     rm -f $${i}/Makefile ;            \
+	   fi ;                                \
+	 done
+	@if test "X${EXAMPLES}" = "Xno" ; then \
+	   : ;                                 \
+	 else                                  \
+	   for i in ${EXAMPLES} ; do           \
+	     if test -d $${i} ; then           \
+	       rm -f $${i}/Makefile ;          \
+	     fi ;                              \
+	   done ;                              \
+	 fi
+	@rm -f config.log ;                    \
+	 rm -f config.status ;                 \
+	 rm -f config.cache ;                  \
+	 rm -f config.h                        \
+	 rm -f sundials_config.h ;             \
+	 rm -f Makefile
+
+uninstall: examples_uninstall
+	@for i in ${COMPONENTS} ; do \
+	   if test -d $${i} ; then   \
+	     cd $${i} ;              \
+	     ${MAKE} uninstall ;     \
+	     cd ${abs_builddir} ;    \
+	   fi ;                      \
+	 done
diff --git a/Win32/WinCVODE/sundials/README b/Win32/WinCVODE/sundials/README
new file mode 100644
index 0000000..8d7dbf0
--- /dev/null
+++ b/Win32/WinCVODE/sundials/README
@@ -0,0 +1,55 @@
+                            SUNDIALS 
+    SUite of Nonlinear and DIfferential/ALgebraic equation Solvers
+                   Release 2.1.1, May 2005
+     Peter Brown, Aaron Collier, Keith Grant, Alan Hindmarsh, 
+      Steve Lee, Radu Serban, Dan Shumaker, Carol Woodward
+          Center for Applied Scientific Computing, LLNL
+
+
+The family of solvers referred to as SUNDIALS consists of solvers CVODE 
+(for ODE systems), CVODES (ODE with sensitivity analysis capabilities),
+IDA (for differential-algebraic systems), and KINSOL (for nonlinear 
+algebraic systems), 
+
+The various solvers of this family share many subordinate modules.
+For this reason, it is organized as a family, with a directory structure 
+that exploits that sharing. Each individual solver includes documentation 
+on installation, along with full usage documentation.
+
+The following is a list of the solver packages presently available.
+
+CVODE:  A solver for stiff and nonstiff ODE systems y' = f(t,y),
+        with serial and parallel versions.
+
+CVODES: A solver for stiff and non-stiff ODE systems with sensitivity
+        analysis capabilities, with serial and parallel versions.
+
+IDA:    A solver for differential-algebraic systems F(t,y,y') = 0, with
+        serial and parallel versions.
+
+KINSOL: A solver for nonlinear algebraic systems F(u) = 0, with serial
+        and parallel versions.
+
+Warning to users who receive more than one of these individual solvers
+at different times: The mixing of old and new versions SUNDIALS may fail.  
+To avoid such failures, obtain all desired solvers at the same time.
+
+For installation directions see the file INSTALL_NOTES.
+
+For additional information on a particular solver, see the README file in
+the solver directory.
+
+                        Release history
+
++----------+------------------------------------------------------+
+|          | SUNDIALS |            Solver version                 |
+|   Date   |          +----------+----------+----------+----------+
+|          | release  |   CVODE  | CVODES   |   IDA    |  KINSOL  |
++----------+----------+----------+----------+----------+----------+
+| Jul 2002 |   1.0    |    2.0   |    1.0   |    2.0   |    2.0   |
+| Dec 2004 |   2.0    |  2.2.0   |  2.1.0   |  2.2.0   |  2.2.0   |
+| Jan 2005 |   2.0.1  |  2.2.1   |  2.1.1   |  2.2.1   |  2.2.1   |
+| Mar 2005 |   2.0.2  |  2.2.2   |  2.1.2   |  2.2.2   |  2.2.2   |
+| Apr 2005 |   2.1.0  |  2.3.0   |  2.2.0   |  2.3.0   |  2.3.0   |
+| May 2005 |   2.1.1  |  2.3.0   |  2.3.0   |  2.3.0   |  2.3.0   |
++----------+----------+----------+----------+----------+----------+
diff --git a/Win32/WinCVODE/sundials/config.h b/Win32/WinCVODE/sundials/config.h
new file mode 100644
index 0000000..6684cb3
--- /dev/null
+++ b/Win32/WinCVODE/sundials/config.h
@@ -0,0 +1,104 @@
+/* config.h.  Generated by configure.  */
+/* config.hin.  Generated from configure.ac by autoheader.  */
+
+/* FCMIX: Define name-mangling macro */
+/* #undef F77_FUNC */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <float.h> header file. */
+#define HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+/* #undef HAVE_INTTYPES_H */
+
+/* Define to 1 if you have the `m' library (-lm). */
+#define HAVE_LIBM 1
+
+/* Define to 1 if you have the <math.h> header file. */
+#define HAVE_MATH_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+/* #undef HAVE_MEMORY_H */
+
+/* Define to 1 if you have the <stdint.h> header file. */
+/* #undef HAVE_STDINT_H */
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+/* #undef HAVE_STDLIB_H */
+
+/* Define to 1 if you have the <strings.h> header file. */
+/* #undef HAVE_STRINGS_H */
+
+/* Define to 1 if you have the <string.h> header file. */
+/* #undef HAVE_STRING_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+/* #undef HAVE_SYS_STAT_H */
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+/* #undef HAVE_SYS_TYPES_H */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+/* #undef HAVE_UNISTD_H */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "radu at llnl.gov"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "SUNDIALS"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "SUNDIALS 2.1.1"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "sundials"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "2.1.1"
+
+/* The size of a `double', as computed by sizeof. */
+#define SIZEOF_DOUBLE 8
+
+/* The size of a `float', as computed by sizeof. */
+/* #undef SIZEOF_FLOAT */
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `long double', as computed by sizeof. */
+/* #undef SIZEOF_LONG_DOUBLE */
+
+/* The size of a `long int', as computed by sizeof. */
+#define SIZEOF_LONG_INT 4
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* FCMIX: Make function names lowercase */
+/* #undef SUNDIALS_CASE_LOWER */
+
+/* FCMIX: Make function names uppercase */
+/* #undef SUNDIALS_CASE_UPPER */
+
+/* Define SUNDIALS data type 'realtype' as 'double' */
+#define SUNDIALS_DOUBLE_PRECISION 1
+
+/* Define SUNDIALS data type 'realtype' as 'long double' */
+/* #undef SUNDIALS_EXTENDED_PRECISION */
+
+/* Define SUNDIALS data type 'realtype' as 'float' */
+/* #undef SUNDIALS_SINGLE_PRECISION */
+
+/* FCMIX: Do NOT append any underscores to functions names */
+/* #undef SUNDIALS_UNDERSCORE_NONE */
+
+/* FCMIX: Append ONE underscore to function names */
+/* #undef SUNDIALS_UNDERSCORE_ONE */
+
+/* FCMIX: Append TWO underscores to function names */
+/* #undef SUNDIALS_UNDERSCORE_TWO */
+
+/* Use generic math functions */
+#define SUNDIALS_USE_GENERIC_MATH 1
diff --git a/Win32/WinCVODE/sundials/config.hin b/Win32/WinCVODE/sundials/config.hin
new file mode 100644
index 0000000..518f92b
--- /dev/null
+++ b/Win32/WinCVODE/sundials/config.hin
@@ -0,0 +1,103 @@
+/* config.hin.  Generated from configure.ac by autoheader.  */
+
+/* FCMIX: Define name-mangling macro */
+#undef F77_FUNC
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <float.h> header file. */
+#undef HAVE_FLOAT_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `m' library (-lm). */
+#undef HAVE_LIBM
+
+/* Define to 1 if you have the <math.h> header file. */
+#undef HAVE_MATH_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of a `double', as computed by sizeof. */
+#undef SIZEOF_DOUBLE
+
+/* The size of a `float', as computed by sizeof. */
+#undef SIZEOF_FLOAT
+
+/* The size of a `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of a `long double', as computed by sizeof. */
+#undef SIZEOF_LONG_DOUBLE
+
+/* The size of a `long int', as computed by sizeof. */
+#undef SIZEOF_LONG_INT
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* FCMIX: Make function names lowercase */
+#undef SUNDIALS_CASE_LOWER
+
+/* FCMIX: Make function names uppercase */
+#undef SUNDIALS_CASE_UPPER
+
+/* Define SUNDIALS data type 'realtype' as 'double' */
+#undef SUNDIALS_DOUBLE_PRECISION
+
+/* Define SUNDIALS data type 'realtype' as 'long double' */
+#undef SUNDIALS_EXTENDED_PRECISION
+
+/* Define SUNDIALS data type 'realtype' as 'float' */
+#undef SUNDIALS_SINGLE_PRECISION
+
+/* FCMIX: Do NOT append any underscores to functions names */
+#undef SUNDIALS_UNDERSCORE_NONE
+
+/* FCMIX: Append ONE underscore to function names */
+#undef SUNDIALS_UNDERSCORE_ONE
+
+/* FCMIX: Append TWO underscores to function names */
+#undef SUNDIALS_UNDERSCORE_TWO
+
+/* Use generic math functions */
+#undef SUNDIALS_USE_GENERIC_MATH
diff --git a/Win32/WinCVODE/sundials/config.log b/Win32/WinCVODE/sundials/config.log
new file mode 100644
index 0000000..4193e42
--- /dev/null
+++ b/Win32/WinCVODE/sundials/config.log
@@ -0,0 +1,1207 @@
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by SUNDIALS configure 2.1.1, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  $ ./configure 
+
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = Andrew-PC
+uname -m = i686
+uname -r = 1.5.17(0.129/4/2)
+uname -s = CYGWIN_NT-5.1
+uname -v = 2005-05-25 19:38
+
+/usr/bin/uname -p = unknown
+/bin/uname -X     = unknown
+
+/bin/arch              = unknown
+/usr/bin/arch -k       = unknown
+/usr/convex/getsysinfo = unknown
+hostinfo               = unknown
+/bin/machine           = unknown
+/usr/bin/oslevel       = unknown
+/bin/universe          = unknown
+
+PATH: /usr/local/bin
+PATH: /usr/bin
+PATH: /bin
+PATH: /usr/X11R6/bin
+PATH: /cygdrive/c/Program Files/Java/jre1.5.0_02/bin
+PATH: /cygdrive/c/Documents and Settings/Andrew Finney/My Documents/Visual Studio Projects/WinCVODE/Debug
+PATH: /cygdrive/c/SystemCellDevVersion/omtbase/oserver/bin
+PATH: /usr/bin
+PATH: /cygdrive/c/Program Files/doxygen/bin
+PATH: /cygdrive/c/Program Files/Seapine/Surround SCM
+PATH: /cygdrive/c/Program Files/Seapine/License Server
+PATH: /cygdrive/c/Program Files/Borland/StarTeam SDK 2005/Lib
+PATH: /cygdrive/c/Program Files/Borland/StarTeam SDK 2005/Bin
+PATH: /cygdrive/c/PROGRA~1/ATT/Graphviz/bin
+PATH: /cygdrive/c/PROGRA~1/ATT/Graphviz/bin/tools
+PATH: /cygdrive/c/Program Files/MATLAB704/bin/win32
+PATH: /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/bin
+PATH: /cygdrive/h/SFORGE_CVS/libsbml/win32/bin
+PATH: /cygdrive/c/Programs/gnuplot/bin
+PATH: /cygdrive/c/models
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+configure:1596: checking build system type
+configure:1614: result: i686-pc-cygwin
+configure:1624: checking host system type
+configure:1638: result: i686-pc-cygwin
+configure:1655: checking whether make sets $(MAKE)
+configure:1675: result: yes
+configure:1700: checking for a BSD-compatible install
+configure:1755: result: /usr/bin/install -c
+configure:1973: checking for egrep
+configure:1983: result: grep -E
+configure:2002: checking for sys/types.h
+configure:2018: cc -c   conftest.c >&5
+configure:2024: $? = 0
+configure:2028: test -z 
+			 || test ! -s conftest.err
+configure:2031: $? = 0
+configure:2034: test -s conftest.
+configure:2037: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "SUNDIALS"
+| #define PACKAGE_TARNAME "sundials"
+| #define PACKAGE_VERSION "2.1.1"
+| #define PACKAGE_STRING "SUNDIALS 2.1.1"
+| #define PACKAGE_BUGREPORT "radu at llnl.gov"
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #if HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #if HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #if STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # if HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #if HAVE_STRING_H
+| # if !STDC_HEADERS && HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #if HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #if HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #else
+| # if HAVE_STDINT_H
+| #  include <stdint.h>
+| # endif
+| #endif
+| #if HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| 
+| #include <sys/types.h>
+configure:2048: result: no
+configure:2002: checking for sys/stat.h
+configure:2018: cc -c   conftest.c >&5
+configure:2024: $? = 0
+configure:2028: test -z 
+			 || test ! -s conftest.err
+configure:2031: $? = 0
+configure:2034: test -s conftest.
+configure:2037: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "SUNDIALS"
+| #define PACKAGE_TARNAME "sundials"
+| #define PACKAGE_VERSION "2.1.1"
+| #define PACKAGE_STRING "SUNDIALS 2.1.1"
+| #define PACKAGE_BUGREPORT "radu at llnl.gov"
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #if HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #if HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #if STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # if HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #if HAVE_STRING_H
+| # if !STDC_HEADERS && HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #if HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #if HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #else
+| # if HAVE_STDINT_H
+| #  include <stdint.h>
+| # endif
+| #endif
+| #if HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| 
+| #include <sys/stat.h>
+configure:2048: result: no
+configure:2002: checking for stdlib.h
+configure:2018: cc -c   conftest.c >&5
+configure:2024: $? = 0
+configure:2028: test -z 
+			 || test ! -s conftest.err
+configure:2031: $? = 0
+configure:2034: test -s conftest.
+configure:2037: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "SUNDIALS"
+| #define PACKAGE_TARNAME "sundials"
+| #define PACKAGE_VERSION "2.1.1"
+| #define PACKAGE_STRING "SUNDIALS 2.1.1"
+| #define PACKAGE_BUGREPORT "radu at llnl.gov"
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #if HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #if HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #if STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # if HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #if HAVE_STRING_H
+| # if !STDC_HEADERS && HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #if HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #if HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #else
+| # if HAVE_STDINT_H
+| #  include <stdint.h>
+| # endif
+| #endif
+| #if HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| 
+| #include <stdlib.h>
+configure:2048: result: no
+configure:2002: checking for string.h
+configure:2018: cc -c   conftest.c >&5
+configure:2024: $? = 0
+configure:2028: test -z 
+			 || test ! -s conftest.err
+configure:2031: $? = 0
+configure:2034: test -s conftest.
+configure:2037: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "SUNDIALS"
+| #define PACKAGE_TARNAME "sundials"
+| #define PACKAGE_VERSION "2.1.1"
+| #define PACKAGE_STRING "SUNDIALS 2.1.1"
+| #define PACKAGE_BUGREPORT "radu at llnl.gov"
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #if HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #if HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #if STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # if HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #if HAVE_STRING_H
+| # if !STDC_HEADERS && HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #if HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #if HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #else
+| # if HAVE_STDINT_H
+| #  include <stdint.h>
+| # endif
+| #endif
+| #if HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| 
+| #include <string.h>
+configure:2048: result: no
+configure:2002: checking for memory.h
+configure:2018: cc -c   conftest.c >&5
+configure:2024: $? = 0
+configure:2028: test -z 
+			 || test ! -s conftest.err
+configure:2031: $? = 0
+configure:2034: test -s conftest.
+configure:2037: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "SUNDIALS"
+| #define PACKAGE_TARNAME "sundials"
+| #define PACKAGE_VERSION "2.1.1"
+| #define PACKAGE_STRING "SUNDIALS 2.1.1"
+| #define PACKAGE_BUGREPORT "radu at llnl.gov"
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #if HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #if HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #if STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # if HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #if HAVE_STRING_H
+| # if !STDC_HEADERS && HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #if HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #if HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #else
+| # if HAVE_STDINT_H
+| #  include <stdint.h>
+| # endif
+| #endif
+| #if HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| 
+| #include <memory.h>
+configure:2048: result: no
+configure:2002: checking for strings.h
+configure:2018: cc -c   conftest.c >&5
+configure:2024: $? = 0
+configure:2028: test -z 
+			 || test ! -s conftest.err
+configure:2031: $? = 0
+configure:2034: test -s conftest.
+configure:2037: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "SUNDIALS"
+| #define PACKAGE_TARNAME "sundials"
+| #define PACKAGE_VERSION "2.1.1"
+| #define PACKAGE_STRING "SUNDIALS 2.1.1"
+| #define PACKAGE_BUGREPORT "radu at llnl.gov"
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #if HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #if HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #if STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # if HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #if HAVE_STRING_H
+| # if !STDC_HEADERS && HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #if HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #if HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #else
+| # if HAVE_STDINT_H
+| #  include <stdint.h>
+| # endif
+| #endif
+| #if HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| 
+| #include <strings.h>
+configure:2048: result: no
+configure:2002: checking for inttypes.h
+configure:2018: cc -c   conftest.c >&5
+configure:2024: $? = 0
+configure:2028: test -z 
+			 || test ! -s conftest.err
+configure:2031: $? = 0
+configure:2034: test -s conftest.
+configure:2037: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "SUNDIALS"
+| #define PACKAGE_TARNAME "sundials"
+| #define PACKAGE_VERSION "2.1.1"
+| #define PACKAGE_STRING "SUNDIALS 2.1.1"
+| #define PACKAGE_BUGREPORT "radu at llnl.gov"
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #if HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #if HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #if STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # if HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #if HAVE_STRING_H
+| # if !STDC_HEADERS && HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #if HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #if HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #else
+| # if HAVE_STDINT_H
+| #  include <stdint.h>
+| # endif
+| #endif
+| #if HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| 
+| #include <inttypes.h>
+configure:2048: result: no
+configure:2002: checking for stdint.h
+configure:2018: cc -c   conftest.c >&5
+configure:2024: $? = 0
+configure:2028: test -z 
+			 || test ! -s conftest.err
+configure:2031: $? = 0
+configure:2034: test -s conftest.
+configure:2037: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "SUNDIALS"
+| #define PACKAGE_TARNAME "sundials"
+| #define PACKAGE_VERSION "2.1.1"
+| #define PACKAGE_STRING "SUNDIALS 2.1.1"
+| #define PACKAGE_BUGREPORT "radu at llnl.gov"
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #if HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #if HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #if STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # if HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #if HAVE_STRING_H
+| # if !STDC_HEADERS && HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #if HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #if HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #else
+| # if HAVE_STDINT_H
+| #  include <stdint.h>
+| # endif
+| #endif
+| #if HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| 
+| #include <stdint.h>
+configure:2048: result: no
+configure:2002: checking for unistd.h
+configure:2018: cc -c   conftest.c >&5
+configure:2024: $? = 0
+configure:2028: test -z 
+			 || test ! -s conftest.err
+configure:2031: $? = 0
+configure:2034: test -s conftest.
+configure:2037: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "SUNDIALS"
+| #define PACKAGE_TARNAME "sundials"
+| #define PACKAGE_VERSION "2.1.1"
+| #define PACKAGE_STRING "SUNDIALS 2.1.1"
+| #define PACKAGE_BUGREPORT "radu at llnl.gov"
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #if HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #if HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #if STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # if HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #if HAVE_STRING_H
+| # if !STDC_HEADERS && HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #if HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #if HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #else
+| # if HAVE_STDINT_H
+| #  include <stdint.h>
+| # endif
+| #endif
+| #if HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| 
+| #include <unistd.h>
+configure:2048: result: no
+configure:2090: checking floating-point data type to use
+configure:2133: result: double
+configure:2210: checking for cc
+configure:2226: found /usr/bin/cc
+configure:2236: result: cc
+configure:2257: checking for C compiler version
+configure:2260: cc --version </dev/null >&5
+cc (GCC) 3.3.3 (cygwin special)
+Copyright (C) 2003 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.
+
+configure:2263: $? = 0
+configure:2265: cc -v </dev/null >&5
+Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/specs
+Configured with: /gcc/gcc-3.3.3-3/configure --verbose --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-languages=c,ada,c++,d,f77,java,objc,pascal --enable-nls --without-included-gettext --enable-libgcj --with-system-zlib --enable-interpreter --enable-threads=posix --enable-java-gc=boehm --enable-sjlj-exceptions --disable-version-specific-runtime-libs --disable-win32-registry
+Thread model: posix
+gcc version 3.3.3 (cygwin special)
+configure:2268: $? = 0
+configure:2270: cc -V </dev/null >&5
+cc: `-V' option must have argument
+configure:2273: $? = 1
+configure:2296: checking for C compiler default output file name
+configure:2299: cc    conftest.c  >&5
+configure:2302: $? = 0
+configure:2348: result: a.exe
+configure:2353: checking whether the C compiler works
+configure:2359: ./a.exe
+configure:2362: $? = 0
+configure:2379: result: yes
+configure:2386: checking whether we are cross compiling
+configure:2388: result: no
+configure:2391: checking for suffix of executables
+configure:2393: cc -o conftest.exe    conftest.c  >&5
+configure:2396: $? = 0
+configure:2421: result: .exe
+configure:2427: checking for suffix of object files
+configure:2448: cc -c   conftest.c >&5
+configure:2451: $? = 0
+configure:2473: result: o
+configure:2477: checking whether we are using the GNU C compiler
+configure:2501: cc -c   conftest.c >&5
+configure:2507: $? = 0
+configure:2511: test -z 
+			 || test ! -s conftest.err
+configure:2514: $? = 0
+configure:2517: test -s conftest.o
+configure:2520: $? = 0
+configure:2533: result: yes
+configure:2539: checking whether cc accepts -g
+configure:2560: cc -c -g  conftest.c >&5
+configure:2566: $? = 0
+configure:2570: test -z 
+			 || test ! -s conftest.err
+configure:2573: $? = 0
+configure:2576: test -s conftest.o
+configure:2579: $? = 0
+configure:2590: result: yes
+configure:2607: checking for cc option to accept ANSI C
+configure:2677: cc  -c -g -O2  conftest.c >&5
+configure:2683: $? = 0
+configure:2687: test -z 
+			 || test ! -s conftest.err
+configure:2690: $? = 0
+configure:2693: test -s conftest.o
+configure:2696: $? = 0
+configure:2714: result: none needed
+configure:2732: cc -c -g -O2  conftest.c >&5
+conftest.c:2: error: parse error before "me"
+configure:2738: $? = 1
+configure: failed program was:
+| #ifndef __cplusplus
+|   choke me
+| #endif
+configure:2888: checking for cc
+configure:2906: found /usr/bin/cc
+configure:2919: result: /usr/bin/cc
+configure:2935: checking for extra C compiler flags
+configure:2948: result: none
+configure:2962: checking how to run the C preprocessor
+configure:2997: /usr/bin/cc -E  conftest.c
+configure:3003: $? = 0
+configure:3035: /usr/bin/cc -E  conftest.c
+conftest.c:10:28: ac_nonexistent.h: No such file or directory
+configure:3041: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "SUNDIALS"
+| #define PACKAGE_TARNAME "sundials"
+| #define PACKAGE_VERSION "2.1.1"
+| #define PACKAGE_STRING "SUNDIALS 2.1.1"
+| #define PACKAGE_BUGREPORT "radu at llnl.gov"
+| #define SUNDIALS_DOUBLE_PRECISION 1
+| /* end confdefs.h.  */
+| #include <ac_nonexistent.h>
+configure:3080: result: /usr/bin/cc -E
+configure:3104: /usr/bin/cc -E  conftest.c
+configure:3110: $? = 0
+configure:3142: /usr/bin/cc -E  conftest.c
+conftest.c:10:28: ac_nonexistent.h: No such file or directory
+configure:3148: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "SUNDIALS"
+| #define PACKAGE_TARNAME "sundials"
+| #define PACKAGE_VERSION "2.1.1"
+| #define PACKAGE_STRING "SUNDIALS 2.1.1"
+| #define PACKAGE_BUGREPORT "radu at llnl.gov"
+| #define SUNDIALS_DOUBLE_PRECISION 1
+| /* end confdefs.h.  */
+| #include <ac_nonexistent.h>
+configure:3193: checking for extra C/C++ preprocessor flags
+configure:3210: result: none
+configure:3254: checking for extra linker flags
+configure:3271: result: none
+configure:3276: checking for extra libraries
+configure:3293: result: none
+configure:3301: checking for ANSI C header files
+configure:3326: /usr/bin/cc -c -g -O2  conftest.c >&5
+configure:3332: $? = 0
+configure:3336: test -z 
+			 || test ! -s conftest.err
+configure:3339: $? = 0
+configure:3342: test -s conftest.o
+configure:3345: $? = 0
+configure:3431: /usr/bin/cc -o conftest.exe -g -O2   conftest.c  >&5
+configure:3434: $? = 0
+configure:3436: ./conftest.exe
+configure:3439: $? = 0
+configure:3454: result: yes
+configure:3472: checking for stdlib.h
+configure:3477: result: no
+configure:3481: checking float.h usability
+configure:3493: /usr/bin/cc -c -g -O2  conftest.c >&5
+configure:3499: $? = 0
+configure:3503: test -z 
+			 || test ! -s conftest.err
+configure:3506: $? = 0
+configure:3509: test -s conftest.o
+configure:3512: $? = 0
+configure:3522: result: yes
+configure:3526: checking float.h presence
+configure:3536: /usr/bin/cc -E  conftest.c
+configure:3542: $? = 0
+configure:3562: result: yes
+configure:3597: checking for float.h
+configure:3604: result: yes
+configure:3481: checking math.h usability
+configure:3493: /usr/bin/cc -c -g -O2  conftest.c >&5
+configure:3499: $? = 0
+configure:3503: test -z 
+			 || test ! -s conftest.err
+configure:3506: $? = 0
+configure:3509: test -s conftest.o
+configure:3512: $? = 0
+configure:3522: result: yes
+configure:3526: checking math.h presence
+configure:3536: /usr/bin/cc -E  conftest.c
+configure:3542: $? = 0
+configure:3562: result: yes
+configure:3597: checking for math.h
+configure:3604: result: yes
+configure:3635: checking for abs in -lm
+configure:3665: /usr/bin/cc -o conftest.exe -g -O2   conftest.c -lm   >&5
+conftest.c:20: warning: conflicting types for built-in function `abs'
+configure:3671: $? = 0
+configure:3675: test -z 
+			 || test ! -s conftest.err
+configure:3678: $? = 0
+configure:3681: test -s conftest.exe
+configure:3684: $? = 0
+configure:3697: result: yes
+configure:4177: checking for fabs in -lm
+configure:4207: /usr/bin/cc -o conftest.exe -g -O2   conftest.c -lm   >&5
+conftest.c:21: warning: conflicting types for built-in function `fabs'
+configure:4213: $? = 0
+configure:4217: test -z 
+			 || test ! -s conftest.err
+configure:4220: $? = 0
+configure:4223: test -s conftest.exe
+configure:4226: $? = 0
+configure:4239: result: yes
+configure:4255: checking for pow in -lm
+configure:4285: /usr/bin/cc -o conftest.exe -g -O2   conftest.c -lm  -lm  >&5
+configure:4291: $? = 0
+configure:4295: test -z 
+			 || test ! -s conftest.err
+configure:4298: $? = 0
+configure:4301: test -s conftest.exe
+configure:4304: $? = 0
+configure:4317: result: yes
+configure:4333: checking for sqrt in -lm
+configure:4363: /usr/bin/cc -o conftest.exe -g -O2   conftest.c -lm  -lm -lm  >&5
+conftest.c:23: warning: conflicting types for built-in function `sqrt'
+configure:4369: $? = 0
+configure:4373: test -z 
+			 || test ! -s conftest.err
+configure:4376: $? = 0
+configure:4379: test -s conftest.exe
+configure:4382: $? = 0
+configure:4395: result: yes
+configure:4673: checking for additional required C libraries
+configure:4684: result: -lm 
+configure:4694: checking for int
+configure:4718: /usr/bin/cc -c -g -O2  conftest.c >&5
+configure:4724: $? = 0
+configure:4728: test -z 
+			 || test ! -s conftest.err
+configure:4731: $? = 0
+configure:4734: test -s conftest.o
+configure:4737: $? = 0
+configure:4748: result: yes
+configure:4751: checking size of int
+configure:5070: /usr/bin/cc -o conftest.exe -g -O2   conftest.c -lm  >&5
+configure:5073: $? = 0
+configure:5075: ./conftest.exe
+configure:5078: $? = 0
+configure:5101: result: 4
+configure:5110: checking for long int
+configure:5134: /usr/bin/cc -c -g -O2  conftest.c >&5
+configure:5140: $? = 0
+configure:5144: test -z 
+			 || test ! -s conftest.err
+configure:5147: $? = 0
+configure:5150: test -s conftest.o
+configure:5153: $? = 0
+configure:5164: result: yes
+configure:5167: checking size of long int
+configure:5486: /usr/bin/cc -o conftest.exe -g -O2   conftest.c -lm  >&5
+configure:5489: $? = 0
+configure:5491: ./conftest.exe
+configure:5494: $? = 0
+configure:5517: result: 4
+configure:5943: checking for double
+configure:5967: /usr/bin/cc -c -g -O2  conftest.c >&5
+configure:5973: $? = 0
+configure:5977: test -z 
+			 || test ! -s conftest.err
+configure:5980: $? = 0
+configure:5983: test -s conftest.o
+configure:5986: $? = 0
+configure:5997: result: yes
+configure:6000: checking size of double
+configure:6319: /usr/bin/cc -o conftest.exe -g -O2   conftest.c -lm  >&5
+configure:6322: $? = 0
+configure:6324: ./conftest.exe
+configure:6327: $? = 0
+configure:6350: result: 8
+configure:6775: checking for egrep
+configure:6785: result: grep -E
+configure:6792: checking for fgrep
+configure:6802: result: grep -F
+configure:6880: checking for f77
+configure:6909: result: no
+configure:6880: checking for f77
+configure:6909: result: no
+configure:6880: checking for g77
+configure:6909: result: no
+configure:6924: checking for Fortran 77 compiler version
+configure:6924:  --version </dev/null >&5
+./configure: line 1: --version: command not found
+configure:6927: $? = 127
+configure:6929:  -v </dev/null >&5
+./configure: line 1: -v: command not found
+configure:6932: $? = 127
+configure:6934:  -V </dev/null >&5
+./configure: line 1: -V: command not found
+configure:6937: $? = 127
+configure:6945: checking whether we are using the GNU Fortran 77 compiler
+configure:6959:  -c  conftest.F >&5
+./configure: line 1: -c: command not found
+configure:6965: $? = 127
+configure: failed program was:
+|       program main
+| #ifndef __GNUC__
+|        choke me
+| #endif
+| 
+|       end
+configure:6991: result: no
+configure:6997: checking whether  accepts -g
+configure:7009:  -c -g conftest.f >&5
+./configure: line 1: -c: command not found
+configure:7015: $? = 127
+configure: failed program was:
+|       program main
+| 
+|       end
+configure:7040: result: no
+configure:7069: WARNING: cannot find Fortran compiler
+configure:8037: checking for mpicc
+configure:8068: result: none
+configure:8126: WARNING: cannot find MPI-C compiler
+configure:8779: checking for ld used by GCC
+configure:8842: result: /usr/i686-pc-cygwin/bin/ld.exe
+configure:8851: checking if the linker (/usr/i686-pc-cygwin/bin/ld.exe) is GNU ld
+GNU ld version 2.16.90 20050520
+configure:8863: result: yes
+configure:8868: checking for /usr/i686-pc-cygwin/bin/ld.exe option to reload object files
+configure:8875: result: -r
+configure:8880: checking for BSD-compatible nm
+configure:8916: result: /usr/bin/nm -B
+configure:8919: checking for a sed that does not truncate output
+configure:9001: result: /usr/bin/sed
+configure:9004: checking whether ln -s works
+configure:9008: result: yes
+configure:9015: checking how to recognise dependent libraries
+configure:9196: result: file_magic file format pei*-i386(.*architecture: i386)?
+configure:9208: checking command to parse /usr/bin/nm -B output
+configure:9292: /usr/bin/cc -c -g -O2  conftest.c >&5
+configure:9295: $? = 0
+configure:9299: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ 	]\([ABCDGISTW][ABCDGISTW]*\)[ 	][ 	]*\(\)\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2\3 \3/p' \> conftest.nm
+configure:9302: $? = 0
+cannot find nm_test_var in conftest.nm
+configure:9292: /usr/bin/cc -c -g -O2  conftest.c >&5
+configure:9295: $? = 0
+configure:9299: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ 	]\([ABCDGISTW][ABCDGISTW]*\)[ 	][ 	]*\(_\)\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2\3 \3/p' \> conftest.nm
+configure:9302: $? = 0
+configure:9354: /usr/bin/cc -o conftest.exe -g -O2   conftest.c conftstm.o >&5
+configure:9357: $? = 0
+configure:9401: result: ok
+configure:9419: checking dlfcn.h usability
+configure:9431: /usr/bin/cc -c -g -O2  conftest.c >&5
+configure:9437: $? = 0
+configure:9441: test -z 
+			 || test ! -s conftest.err
+configure:9444: $? = 0
+configure:9447: test -s conftest.o
+configure:9450: $? = 0
+configure:9460: result: yes
+configure:9464: checking dlfcn.h presence
+configure:9474: /usr/bin/cc -E  conftest.c
+configure:9480: $? = 0
+configure:9500: result: yes
+configure:9535: checking for dlfcn.h
+configure:9542: result: yes
+configure:9740: checking for ranlib
+configure:9756: found /usr/bin/ranlib
+configure:9767: result: ranlib
+configure:9820: checking for strip
+configure:9836: found /usr/bin/strip
+configure:9847: result: strip
+configure:10069: checking for objdir
+configure:10080: result: .libs
+configure:10097: checking for /usr/bin/cc option to produce PIC
+configure:10243: result: -DDLL_EXPORT
+configure:10247: checking if /usr/bin/cc PIC flag -DDLL_EXPORT works
+configure:10270: /usr/bin/cc -c -g -O2 -DDLL_EXPORT -DPIC  conftest.c >&5
+configure:10276: $? = 0
+configure:10280: test -z 
+			 || test ! -s conftest.err
+configure:10283: $? = 0
+configure:10286: test -s conftest.o
+configure:10289: $? = 0
+configure:10327: result: yes
+configure:10343: checking if /usr/bin/cc static flag -static works
+configure:10367: /usr/bin/cc -o conftest.exe -g -O2   -static conftest.c -lm  >&5
+configure:10373: $? = 0
+configure:10377: test -z 
+			 || test ! -s conftest.err
+configure:10380: $? = 0
+configure:10383: test -s conftest.exe
+configure:10386: $? = 0
+configure:10403: result: yes
+configure:10415: checking if /usr/bin/cc supports -c -o file.o
+configure:10438: /usr/bin/cc -c -g -O2 -o out/conftest2.o  conftest.c >&5
+configure:10459: result: yes
+configure:10464: checking if /usr/bin/cc supports -c -o file.lo
+configure:10491: /usr/bin/cc -c -g -O2 -c -o conftest.lo  conftest.c >&5
+configure:10497: $? = 0
+configure:10501: test -z 
+			 || test ! -s conftest.err
+configure:10504: $? = 0
+configure:10507: test -s conftest.lo
+configure:10510: $? = 0
+configure:10532: result: yes
+configure:10563: checking if /usr/bin/cc supports -fno-rtti -fno-exceptions
+configure:10585: /usr/bin/cc -c -g -O2 -fno-rtti -fno-exceptions -c conftest.c  conftest.c >&5
+cc1: warning: "-fno-rtti" is valid for C++ but not for C/ObjC
+cc1: warning: "-fno-rtti" is valid for C++ but not for C/ObjC
+configure:10591: $? = 0
+configure:10595: test -z 
+			 || test ! -s conftest.err
+configure:10598: $? = 0
+configure:10601: test -s conftest.o
+configure:10604: $? = 0
+configure:10621: result: no
+configure:10632: checking whether the linker (/usr/i686-pc-cygwin/bin/ld.exe) supports shared libraries
+configure:11327: result: yes
+configure:11332: checking how to hardcode library paths into programs
+configure:11356: result: immediate
+configure:11361: checking whether stripping libraries is possible
+configure:11366: result: yes
+configure:11377: checking dynamic linker characteristics
+configure:11784: result: Win32 ld.exe
+configure:11789: checking if libtool supports shared libraries
+configure:11791: result: yes
+configure:11794: checking whether to build shared libraries
+configure:11815: result: no
+configure:11818: checking whether to build static libraries
+configure:11822: result: yes
+configure:13238: checking if we can build serial C examples
+configure:13241: result: yes
+configure:13246: checking if we can build parallel C examples
+configure:13251: result: no
+configure:13261: checking if we can build serial Fortran examples
+configure:13266: result: no
+configure:13271: checking if we can build parallel Fortran examples
+configure:13276: result: no
+configure:13351: checking for 'include' directory
+configure:13387: result: /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials/include
+configure:13390: checking for 'lib' directory
+configure:13430: result: /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials/lib
+configure:13688: creating ./config.status
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by SUNDIALS config.status 2.1.1, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  CONFIG_FILES    = 
+  CONFIG_HEADERS  = 
+  CONFIG_LINKS    = 
+  CONFIG_COMMANDS = 
+  $ ./config.status 
+
+on Andrew-PC
+
+config.status:694: creating Makefile
+config.status:694: creating shared/source/Makefile
+config.status:694: creating nvec_ser/Makefile
+config.status:694: creating cvode/source/Makefile
+config.status:694: creating cvode/fcmix/Makefile
+config.status:694: creating cvode/examples_ser/Makefile
+config.status:694: creating cvodes/source/Makefile
+config.status:694: creating cvodes/examples_ser/Makefile
+config.status:694: creating ida/source/Makefile
+config.status:694: creating ida/examples_ser/Makefile
+config.status:694: creating kinsol/source/Makefile
+config.status:694: creating kinsol/fcmix/Makefile
+config.status:694: creating kinsol/examples_ser/Makefile
+config.status:694: creating config/sundials_config.h
+config.status:798: creating config.h
+
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+
+ac_cv_build=i686-pc-cygwin
+ac_cv_build_alias=i686-pc-cygwin
+ac_cv_c_compiler_gnu=yes
+ac_cv_env_CC_set=
+ac_cv_env_CC_value=
+ac_cv_env_CFLAGS_set=
+ac_cv_env_CFLAGS_value=
+ac_cv_env_CPPFLAGS_set=
+ac_cv_env_CPPFLAGS_value=
+ac_cv_env_CPP_set=
+ac_cv_env_CPP_value=
+ac_cv_env_F77_set=
+ac_cv_env_F77_value=
+ac_cv_env_FFLAGS_set=
+ac_cv_env_FFLAGS_value=
+ac_cv_env_LDFLAGS_set=
+ac_cv_env_LDFLAGS_value=
+ac_cv_env_build_alias_set=
+ac_cv_env_build_alias_value=
+ac_cv_env_host_alias_set=
+ac_cv_env_host_alias_value=
+ac_cv_env_target_alias_set=
+ac_cv_env_target_alias_value=
+ac_cv_exeext=.exe
+ac_cv_f77_compiler_gnu=no
+ac_cv_header_dlfcn_h=yes
+ac_cv_header_float_h=yes
+ac_cv_header_inttypes_h=no
+ac_cv_header_math_h=yes
+ac_cv_header_memory_h=no
+ac_cv_header_stdc=yes
+ac_cv_header_stdint_h=no
+ac_cv_header_stdlib_h=no
+ac_cv_header_string_h=no
+ac_cv_header_strings_h=no
+ac_cv_header_sys_stat_h=no
+ac_cv_header_sys_types_h=no
+ac_cv_header_unistd_h=no
+ac_cv_host=i686-pc-cygwin
+ac_cv_host_alias=i686-pc-cygwin
+ac_cv_lib_m_abs=yes
+ac_cv_lib_m_fabs=yes
+ac_cv_lib_m_pow=yes
+ac_cv_lib_m_sqrt=yes
+ac_cv_objext=o
+ac_cv_path_CC_COMP=/usr/bin/cc
+ac_cv_path_MPICC_COMP=none
+ac_cv_path_install='/usr/bin/install -c'
+ac_cv_prog_CPP='/usr/bin/cc -E'
+ac_cv_prog_ac_ct_CC=cc
+ac_cv_prog_ac_ct_RANLIB=ranlib
+ac_cv_prog_ac_ct_STRIP=strip
+ac_cv_prog_cc_g=yes
+ac_cv_prog_cc_stdc=
+ac_cv_prog_egrep='grep -E'
+ac_cv_prog_f77_g=no
+ac_cv_prog_fgrep='grep -F'
+ac_cv_prog_make_make_set=yes
+ac_cv_sizeof_double=8
+ac_cv_sizeof_int=4
+ac_cv_sizeof_long_int=4
+ac_cv_type_double=yes
+ac_cv_type_int=yes
+ac_cv_type_long_int=yes
+lt_cv_compiler_c_o=yes
+lt_cv_compiler_o_lo=yes
+lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+lt_cv_file_magic_cmd='$OBJDUMP -f'
+lt_cv_file_magic_test_file=
+lt_cv_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/  {\"\1\", (lt_ptr) 0},/p'\'' -e '\''s/^[BCDEGRST] \([^ ]*\) \([^ ]*\)$/  {"\2", (lt_ptr) \&\2},/p'\'''
+lt_cv_global_symbol_to_cdecl='sed -n -e '\''s/^. .* \(.*\)$/extern char \1;/p'\'''
+lt_cv_ld_reload_flag=-r
+lt_cv_path_LD=/usr/i686-pc-cygwin/bin/ld.exe
+lt_cv_path_NM='/usr/bin/nm -B'
+lt_cv_path_SED=/usr/bin/sed
+lt_cv_prog_cc_can_build_shared=yes
+lt_cv_prog_cc_no_builtin=
+lt_cv_prog_cc_pic=' -DDLL_EXPORT'
+lt_cv_prog_cc_pic_works=yes
+lt_cv_prog_cc_shlib=
+lt_cv_prog_cc_static=-static
+lt_cv_prog_cc_static_works=yes
+lt_cv_prog_cc_wl=-Wl,
+lt_cv_prog_gnu_ld=yes
+lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ 	]\([ABCDGISTW][ABCDGISTW]*\)[ 	][ 	]*\(_\)\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2\3 \3/p'\'''
+
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+
+CC='/usr/bin/cc'
+CC_COMP='/usr/bin/cc'
+CFLAGS='-g -O2'
+COMPILER_PREFIX=''
+CPP='/usr/bin/cc -E'
+CPPFLAGS=''
+DEFS='-DHAVE_CONFIG_H'
+ECHO='echo'
+ECHO_C=''
+ECHO_N='-n'
+ECHO_T=''
+EGREP='grep -E'
+EXAMPLE_MODULES=' cvode/examples_ser cvodes/examples_ser ida/examples_ser kinsol/examples_ser'
+EXEEXT='.exe'
+F77=''
+F77_CASE=''
+F77_COMP=''
+F77_MANGLE_MACRO=''
+F77_UNDERSCORES=''
+FCMIX_ENABLED='yes'
+FFLAGS=''
+FGREP='grep -F'
+FLIBS=''
+FLOAT_TYPE='double'
+GENERIC_MATH_LIB='#define SUNDIALS_USE_GENERIC_MATH 1'
+INSTALL_DATA='${INSTALL} -m 644'
+INSTALL_PROGRAM='${INSTALL}'
+INSTALL_SCRIPT='${INSTALL}'
+LDFLAGS=''
+LIBOBJS=''
+LIBS='-lm '
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+LIBTOOL_CMD=''
+LIBTOOL_DEPS='config/ltmain.sh'
+LINKER_PREFIX=''
+LN_S='ln -s'
+LTLIBOBJS=''
+MODULES='shared/source cvode/source cvode/fcmix cvodes/source ida/source kinsol/source kinsol/fcmix'
+MPICC=''
+MPICC_COMP=''
+MPIF77=''
+MPIF77_COMP='mpif77'
+MPI_FLAGS=''
+MPI_INC_DIR=''
+MPI_LIBS=''
+MPI_LIB_DIR=''
+NVEC_MODULES='nvec_ser'
+OBJEXT='o'
+PACKAGE_BUGREPORT='radu at llnl.gov'
+PACKAGE_NAME='SUNDIALS'
+PACKAGE_STRING='SUNDIALS 2.1.1'
+PACKAGE_TARNAME='sundials'
+PACKAGE_VERSION='2.1.1'
+PATH_SEPARATOR=':'
+PRECISION_LEVEL='#define SUNDIALS_DOUBLE_PRECISION 1'
+RANLIB='ranlib'
+SET_MAKE=''
+SHELL='/bin/bash'
+STRIP='strip'
+ac_ct_CC='cc'
+ac_ct_F77=''
+ac_ct_RANLIB='ranlib'
+ac_ct_STRIP='strip'
+bindir='${exec_prefix}/bin'
+build='i686-pc-cygwin'
+build_alias=''
+build_cpu='i686'
+build_os='cygwin'
+build_vendor='pc'
+datadir='${prefix}/share'
+exec_prefix='${prefix}'
+host='i686-pc-cygwin'
+host_alias=''
+host_cpu='i686'
+host_os='cygwin'
+host_vendor='pc'
+includedir='${prefix}/include'
+infodir='${prefix}/info'
+libdir='${exec_prefix}/lib'
+libexecdir='${exec_prefix}/libexec'
+localstatedir='${prefix}/var'
+mandir='${prefix}/man'
+oldincludedir='/usr/include'
+prefix='/cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials'
+program_transform_name='s,x,x,'
+sbindir='${exec_prefix}/sbin'
+sharedstatedir='${prefix}/com'
+sysconfdir='${prefix}/etc'
+target_alias=''
+
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+
+#define HAVE_DLFCN_H 1
+#define HAVE_FLOAT_H 1
+#define HAVE_LIBM 1
+#define HAVE_LIBM 1
+#define HAVE_LIBM 1
+#define HAVE_LIBM 1
+#define HAVE_MATH_H 1
+#define PACKAGE_BUGREPORT "radu at llnl.gov"
+#define PACKAGE_NAME "SUNDIALS"
+#define PACKAGE_STRING "SUNDIALS 2.1.1"
+#define PACKAGE_TARNAME "sundials"
+#define PACKAGE_VERSION "2.1.1"
+#define SIZEOF_DOUBLE 8
+#define SIZEOF_INT 4
+#define SIZEOF_LONG_INT 4
+#define STDC_HEADERS 1
+#define SUNDIALS_DOUBLE_PRECISION 1
+#define SUNDIALS_USE_GENERIC_MATH 1
+
+configure: exit 0
diff --git a/Win32/WinCVODE/sundials/config.status b/Win32/WinCVODE/sundials/config.status
new file mode 100755
index 0000000..b096f2d
--- /dev/null
+++ b/Win32/WinCVODE/sundials/config.status
@@ -0,0 +1,949 @@
+#! /bin/bash
+# Generated by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=${CONFIG_SHELL-/bin/bash}
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.  Logging --version etc. is OK.
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by SUNDIALS $as_me 2.1.1, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+config_files=" Makefile shared/source/Makefile nvec_ser/Makefile cvode/source/Makefile cvode/fcmix/Makefile cvode/examples_ser/Makefile cvodes/source/Makefile cvodes/examples_ser/Makefile ida/source/Makefile ida/examples_ser/Makefile kinsol/source/Makefile kinsol/fcmix/Makefile kinsol/examples_ser/Makefile config/sundials_config.h:config/sundials_config.in"
+config_headers=" config.h:config.hin"
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+		   instantiate the configuration file FILE
+  --header=FILE[:TEMPLATE]
+		   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Report bugs to <bug-autoconf at gnu.org>."
+ac_cs_version="\
+SUNDIALS config.status 2.1.1
+configured by ./configure, generated by GNU Autoconf 2.59,
+  with options \"\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=.
+INSTALL="/usr/bin/install -c"
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  -*)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_option=$1
+     ac_need_defaults=false;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+if $ac_cs_recheck; then
+  echo "running /bin/bash ./configure "  $ac_configure_extra_args " --no-create --no-recursion" >&6
+  exec /bin/bash ./configure  $ac_configure_extra_args --no-create --no-recursion
+fi
+
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "${SUNDIALS_MAKEFILES}" ) CONFIG_FILES="$CONFIG_FILES ${SUNDIALS_MAKEFILES}" ;;
+  "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.hin" ;;
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./confstat$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF
+s, at SHELL@,/bin/bash,;t t
+s, at PATH_SEPARATOR@,:,;t t
+s, at PACKAGE_NAME@,SUNDIALS,;t t
+s, at PACKAGE_TARNAME@,sundials,;t t
+s, at PACKAGE_VERSION@,2.1.1,;t t
+s, at PACKAGE_STRING@,SUNDIALS 2.1.1,;t t
+s, at PACKAGE_BUGREPORT@,radu at llnl.gov,;t t
+s, at exec_prefix@,${prefix},;t t
+s, at prefix@,/cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials,;t t
+s, at program_transform_name@,s,x,x,,;t t
+s, at bindir@,${exec_prefix}/bin,;t t
+s, at sbindir@,${exec_prefix}/sbin,;t t
+s, at libexecdir@,${exec_prefix}/libexec,;t t
+s, at datadir@,${prefix}/share,;t t
+s, at sysconfdir@,${prefix}/etc,;t t
+s, at sharedstatedir@,${prefix}/com,;t t
+s, at localstatedir@,${prefix}/var,;t t
+s, at libdir@,${exec_prefix}/lib,;t t
+s, at includedir@,${prefix}/include,;t t
+s, at oldincludedir@,/usr/include,;t t
+s, at infodir@,${prefix}/info,;t t
+s, at mandir@,${prefix}/man,;t t
+s, at build_alias@,,;t t
+s, at host_alias@,,;t t
+s, at target_alias@,,;t t
+s, at DEFS@,-DHAVE_CONFIG_H,;t t
+s, at ECHO_C@,,;t t
+s, at ECHO_N@,-n,;t t
+s, at ECHO_T@,,;t t
+s, at LIBS@,-lm ,;t t
+s, at build@,i686-pc-cygwin,;t t
+s, at build_cpu@,i686,;t t
+s, at build_vendor@,pc,;t t
+s, at build_os@,cygwin,;t t
+s, at host@,i686-pc-cygwin,;t t
+s, at host_cpu@,i686,;t t
+s, at host_vendor@,pc,;t t
+s, at host_os@,cygwin,;t t
+s, at SET_MAKE@,,;t t
+s, at INSTALL_PROGRAM@,${INSTALL},;t t
+s, at INSTALL_SCRIPT@,${INSTALL},;t t
+s, at INSTALL_DATA@,${INSTALL} -m 644,;t t
+s, at CC@,/usr/bin/cc,;t t
+s, at CFLAGS@,-g -O2,;t t
+s, at LDFLAGS@,,;t t
+s, at CPPFLAGS@,,;t t
+s, at ac_ct_CC@,cc,;t t
+s, at EXEEXT@,.exe,;t t
+s, at OBJEXT@,o,;t t
+s, at CC_COMP@,/usr/bin/cc,;t t
+s, at CPP@,/usr/bin/cc -E,;t t
+s, at EGREP@,grep -E,;t t
+s, at FGREP@,grep -F,;t t
+s, at F77@,,;t t
+s, at FFLAGS@,,;t t
+s, at ac_ct_F77@,,;t t
+s, at F77_COMP@,,;t t
+s, at FLIBS@,,;t t
+s, at MPICC_COMP@,,;t t
+s, at MPIF77_COMP@,mpif77,;t t
+s, at LN_S@,ln -s,;t t
+s, at ECHO@,echo,;t t
+s, at RANLIB@,ranlib,;t t
+s, at ac_ct_RANLIB@,ranlib,;t t
+s, at STRIP@,strip,;t t
+s, at ac_ct_STRIP@,strip,;t t
+s, at LIBTOOL@,$(SHELL) $(top_builddir)/libtool,;t t
+s, at COMPILER_PREFIX@,,;t t
+s, at LINKER_PREFIX@,,;t t
+s, at MPICC@,,;t t
+s, at MPIF77@,,;t t
+s, at MPI_INC_DIR@,,;t t
+s, at MPI_LIB_DIR@,,;t t
+s, at MPI_LIBS@,,;t t
+s, at MPI_FLAGS@,,;t t
+s, at MODULES@,shared/source cvode/source cvode/fcmix cvodes/source ida/source kinsol/source kinsol/fcmix,;t t
+s, at NVEC_MODULES@,nvec_ser,;t t
+s, at EXAMPLE_MODULES@, cvode/examples_ser cvodes/examples_ser ida/examples_ser kinsol/examples_ser,;t t
+s, at FCMIX_ENABLED@,yes,;t t
+s, at FLOAT_TYPE@,double,;t t
+s, at LIBTOOL_CMD@,,;t t
+s, at LIBTOOL_DEPS@,config/ltmain.sh,;t t
+s, at F77_MANGLE_MACRO@,,;t t
+s, at F77_CASE@,,;t t
+s, at F77_UNDERSCORES@,,;t t
+s, at PRECISION_LEVEL@,#define SUNDIALS_DOUBLE_PRECISION 1,;t t
+s, at GENERIC_MATH_LIB@,#define SUNDIALS_USE_GENERIC_MATH 1,;t t
+s, at LIBOBJS@,,;t t
+s, at LTLIBOBJS@,,;t t
+CEOF
+
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  esac
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    configure_input=
+  else
+    configure_input="$ac_file.  "
+  fi
+  configure_input=$configure_input"Generated from `echo $ac_file_in |
+				     sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  sed "/^[	 ]*VPATH[	 ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[	 ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[	 ]*$//;
+}
+
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s, at configure_input@,$configure_input,;t t
+s, at srcdir@,$ac_srcdir,;t t
+s, at abs_srcdir@,$ac_abs_srcdir,;t t
+s, at top_srcdir@,$ac_top_srcdir,;t t
+s, at abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s, at builddir@,$ac_builddir,;t t
+s, at abs_builddir@,$ac_abs_builddir,;t t
+s, at top_builddir@,$ac_top_builddir,;t t
+s, at abs_top_builddir@,$ac_abs_top_builddir,;t t
+s, at INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([	 ]*\)#\([	 ]*define[	 ][	 ]*\)'
+ac_dB='[	 ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([	 ]*\)#\([	 ]*\)undef\([	 ][	 ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 # Do quote $f, to prevent DOS paths from being IFS'd.
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[	 ]*$//' $ac_file_inputs >$tmp/in
+
+  # Handle all the #define templates only if necessary.
+  if grep "^[	 ]*#[	 ]*define" $tmp/in >/dev/null; then
+  # If there are no defines, we may have an empty if/fi
+  :
+  cat >$tmp/defines.sed <<CEOF
+/^[	 ]*#[	 ]*define/!b
+t clr
+: clr
+${ac_dA}PACKAGE_NAME${ac_dB}PACKAGE_NAME${ac_dC}"SUNDIALS"${ac_dD}
+${ac_dA}PACKAGE_TARNAME${ac_dB}PACKAGE_TARNAME${ac_dC}"sundials"${ac_dD}
+${ac_dA}PACKAGE_VERSION${ac_dB}PACKAGE_VERSION${ac_dC}"2.1.1"${ac_dD}
+${ac_dA}PACKAGE_STRING${ac_dB}PACKAGE_STRING${ac_dC}"SUNDIALS 2.1.1"${ac_dD}
+${ac_dA}PACKAGE_BUGREPORT${ac_dB}PACKAGE_BUGREPORT${ac_dC}"radu at llnl.gov"${ac_dD}
+${ac_dA}SUNDIALS_DOUBLE_PRECISION${ac_dB}SUNDIALS_DOUBLE_PRECISION${ac_dC}1${ac_dD}
+${ac_dA}STDC_HEADERS${ac_dB}STDC_HEADERS${ac_dC}1${ac_dD}
+${ac_dA}HAVE_FLOAT_H${ac_dB}HAVE_FLOAT_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_MATH_H${ac_dB}HAVE_MATH_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_LIBM${ac_dB}HAVE_LIBM${ac_dC}1${ac_dD}
+${ac_dA}SUNDIALS_USE_GENERIC_MATH${ac_dB}SUNDIALS_USE_GENERIC_MATH${ac_dC}1${ac_dD}
+${ac_dA}SIZEOF_INT${ac_dB}SIZEOF_INT${ac_dC}4${ac_dD}
+${ac_dA}SIZEOF_LONG_INT${ac_dB}SIZEOF_LONG_INT${ac_dC}4${ac_dD}
+${ac_dA}SIZEOF_DOUBLE${ac_dB}SIZEOF_DOUBLE${ac_dC}8${ac_dD}
+${ac_dA}HAVE_DLFCN_H${ac_dB}HAVE_DLFCN_H${ac_dC}1${ac_dD}
+CEOF
+  sed -f $tmp/defines.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+
+  fi # grep
+
+  # Handle all the #undef templates
+  cat >$tmp/undefs.sed <<CEOF
+/^[	 ]*#[	 ]*undef/!b
+t clr
+: clr
+${ac_uA}PACKAGE_NAME${ac_uB}PACKAGE_NAME${ac_uC}"SUNDIALS"${ac_uD}
+${ac_uA}PACKAGE_TARNAME${ac_uB}PACKAGE_TARNAME${ac_uC}"sundials"${ac_uD}
+${ac_uA}PACKAGE_VERSION${ac_uB}PACKAGE_VERSION${ac_uC}"2.1.1"${ac_uD}
+${ac_uA}PACKAGE_STRING${ac_uB}PACKAGE_STRING${ac_uC}"SUNDIALS 2.1.1"${ac_uD}
+${ac_uA}PACKAGE_BUGREPORT${ac_uB}PACKAGE_BUGREPORT${ac_uC}"radu at llnl.gov"${ac_uD}
+${ac_uA}SUNDIALS_DOUBLE_PRECISION${ac_uB}SUNDIALS_DOUBLE_PRECISION${ac_uC}1${ac_uD}
+${ac_uA}STDC_HEADERS${ac_uB}STDC_HEADERS${ac_uC}1${ac_uD}
+${ac_uA}HAVE_FLOAT_H${ac_uB}HAVE_FLOAT_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_MATH_H${ac_uB}HAVE_MATH_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_LIBM${ac_uB}HAVE_LIBM${ac_uC}1${ac_uD}
+${ac_uA}SUNDIALS_USE_GENERIC_MATH${ac_uB}SUNDIALS_USE_GENERIC_MATH${ac_uC}1${ac_uD}
+${ac_uA}SIZEOF_INT${ac_uB}SIZEOF_INT${ac_uC}4${ac_uD}
+${ac_uA}SIZEOF_LONG_INT${ac_uB}SIZEOF_LONG_INT${ac_uC}4${ac_uD}
+${ac_uA}SIZEOF_DOUBLE${ac_uB}SIZEOF_DOUBLE${ac_uC}8${ac_uD}
+${ac_uA}HAVE_DLFCN_H${ac_uB}HAVE_DLFCN_H${ac_uC}1${ac_uD}
+s,^[	 ]*#[	 ]*undef[	 ][	 ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+CEOF
+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    echo "/* Generated by configure.  */" >$tmp/config.h
+  else
+    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" != x-; then
+    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+      { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
+    fi
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
+  fi
+done
+
+{ (exit 0); exit 0; }
diff --git a/Win32/WinCVODE/sundials/config/config.guess b/Win32/WinCVODE/sundials/config/config.guess
new file mode 100755
index 0000000..10fd2a6
--- /dev/null
+++ b/Win32/WinCVODE/sundials/config/config.guess
@@ -0,0 +1,1363 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002 Free Software Foundation, Inc.
+
+timestamp='2002-10-21'
+
+# 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.
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# 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 <per at bothner.com>.
+# Please send patches to <config-patches at gnu.org>.  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 <config-patches at gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+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 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # 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.
+
+# This shell variable is my proudest work .. or something. --bje
+
+set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ;
+(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old)
+   || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ;
+dummy=$tmpdir/dummy ;
+files="$dummy.c $dummy.o $dummy.rel $dummy" ;
+trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ;
+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 ;
+	rm -f $files ;
+	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 ;
+unset files'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi at 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 ;;
+	    *) 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
+	release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+	# 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 0 ;;
+    amiga:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    arc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    hp300:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mac68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    macppc:OpenBSD:*:*)
+	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme88k:OpenBSD:*:*)
+	echo m88k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvmeppc:OpenBSD:*:*)
+	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    pmax:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sgi:OpenBSD:*:*)
+	echo mipseb-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sun3:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    *:OpenBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    alpha:OSF1:*:*)
+	if test $UNAME_RELEASE = "V4.0"; then
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+	fi
+	# 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.
+	eval $set_cc_for_build
+	cat <<EOF >$dummy.s
+	.data
+\$Lformat:
+	.byte 37,100,45,37,120,10,0	# "%d-%x\n"
+
+	.text
+	.globl main
+	.align 4
+	.ent main
+main:
+	.frame \$30,16,\$26,0
+	ldgp \$29,0(\$27)
+	.prologue 1
+	.long 0x47e03d80 # implver \$0
+	lda \$2,-1
+	.long 0x47e20c21 # amask \$2,\$1
+	lda \$16,\$Lformat
+	mov \$0,\$17
+	not \$1,\$18
+	jsr \$26,printf
+	ldgp \$29,0(\$26)
+	mov 0,\$16
+	jsr \$26,exit
+	.end main
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null
+	if test "$?" = 0 ; then
+		case `$dummy` in
+			0-0)
+				UNAME_MACHINE="alpha"
+				;;
+			1-0)
+				UNAME_MACHINE="alphaev5"
+				;;
+			1-1)
+				UNAME_MACHINE="alphaev56"
+				;;
+			1-101)
+				UNAME_MACHINE="alphapca56"
+				;;
+			2-303)
+				UNAME_MACHINE="alphaev6"
+				;;
+			2-307)
+				UNAME_MACHINE="alphaev67"
+				;;
+			2-1307)
+				UNAME_MACHINE="alphaev68"
+				;;
+			3-1307)
+				UNAME_MACHINE="alphaev7"
+				;;
+		esac
+	fi
+	rm -f $dummy.s $dummy && rmdir $tmpdir
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	exit 0 ;;
+    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 0 ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit 0 ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit 0;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit 0 ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit 0 ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit 0 ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit 0;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit 0;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee at 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 0 ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit 0 ;;
+    DRS?6000:UNIX_SV:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7 && exit 0 ;;
+	esac ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    i86pc:SunOS:5.*:*)
+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    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 0 ;;
+    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 0 ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit 0 ;;
+    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 0 ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit 0 ;;
+    # 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 0 ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit 0 ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit 0 ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit 0 ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit 0 ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit 0 ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit 0 ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit 0 ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit 0 ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* 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 \
+	  && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+	  && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+	rm -f $dummy.c $dummy && rmdir $tmpdir
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit 0 ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit 0 ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit 0 ;;
+    Night_Hawk:*:*:PowerMAX_OS)
+	echo powerpc-harris-powermax
+	exit 0 ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit 0 ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit 0 ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit 0 ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit 0 ;;
+    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 0 ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit 0 ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit 0 ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit 0 ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit 0 ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit 0 ;;
+    ????????: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 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit 0 ;;
+    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 0 ;;
+    *: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 <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+		rm -f $dummy.c $dummy && rmdir $tmpdir
+		echo rs6000-ibm-aix3.2.5
+	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 0 ;;
+    *:AIX:*:[45])
+	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 0 ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit 0 ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit 0 ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit 0 ;;                           # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit 0 ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit 0 ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit 0 ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit 0 ;;
+    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 <stdlib.h>
+              #include <unistd.h>
+
+              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`
+		    if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
+		    rm -f $dummy.c $dummy && rmdir $tmpdir
+		fi ;;
+	esac
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit 0 ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit 0 ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	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 && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+	rm -f $dummy.c $dummy && rmdir $tmpdir
+	echo unknown-hitachi-hiuxwe2
+	exit 0 ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit 0 ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit 0 ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit 0 ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit 0 ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit 0 ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit 0 ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit 0 ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit 0 ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+        exit 0 ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+        exit 0 ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit 0 ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit 0 ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    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 0 ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*T3D:*:*:*)
+	echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    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 0 ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    *:FreeBSD:*:*)
+	# Determine whether the default compiler uses glibc.
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#if __GLIBC__ >= 2
+	LIBC=gnu
+	#else
+	LIBC=
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	rm -f $dummy.c && rmdir $tmpdir
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+	exit 0 ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit 0 ;;
+    i*:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit 0 ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit 0 ;;
+    x86:Interix*:3*)
+	echo i386-pc-interix3
+	exit 0 ;;
+    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 i386-pc-interix
+	exit 0 ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit 0 ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit 0 ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    *:GNU:*:*)
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit 0 ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit 0 ;;
+    arm*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    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 | grep ^CPU=`
+	rm -f $dummy.c && rmdir $tmpdir
+	test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
+	;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit 0 ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit 0 ;;
+    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 0 ;;
+    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 0 ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit 0 ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit 0 ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit 0 ;;
+    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 0 ;;
+	  coff-i386)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		exit 0 ;;
+	  "")
+		# 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 0 ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#ifdef __ELF__
+	# ifdef __GLIBC__
+	#  if __GLIBC__ >= 2
+	LIBC=gnu
+	#  else
+	LIBC=gnulibc1
+	#  endif
+	# else
+	LIBC=gnulibc1
+	# endif
+	#else
+	#ifdef __INTEL_COMPILER
+	LIBC=gnu
+	#else
+	LIBC=gnuaout
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	rm -f $dummy.c && rmdir $tmpdir
+	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+	test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+	;;
+    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 0 ;;
+    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 0 ;;
+    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 0 ;;
+    i*86:*:5:[78]*)
+	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 0 ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/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 0 ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit 0 ;;
+    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 i386.
+	echo i386-pc-msdosdjgpp
+        exit 0 ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit 0 ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit 0 ;;
+    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 0 ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit 0 ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit 0 ;;
+    M68*:*:R3V[567]*:*)
+	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[34]??:*: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)
+	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 0
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && echo i486-ncr-sysv4 && exit 0 ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit 0 ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit 0 ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit 0 ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit 0 ;;
+    *: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 0 ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel at ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes at openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit 0 ;;
+    *:*:*:FTX*)
+	# From seanf at swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit 0 ;;
+    *:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo hppa1.1-stratus-vos
+	exit 0 ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit 0 ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit 0 ;;
+    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 0 ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit 0 ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit 0 ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit 0 ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit 0 ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit 0 ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit 0 ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit 0 ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit 0 ;;
+    *:Darwin:*:*)
+	echo `uname -p`-apple-darwin${UNAME_RELEASE}
+	exit 0 ;;
+    *: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 0 ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit 0 ;;
+    NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit 0 ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit 0 ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit 0 ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit 0 ;;
+    *: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 0 ;;
+    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 0 ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit 0 ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit 0 ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit 0 ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit 0 ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit 0 ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit 0 ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit 0 ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit 0 ;;
+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 <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#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 <sys/param.h>
+  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"); 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 <sys/param.h>
+#  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 && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+rm -f $dummy.c $dummy && rmdir $tmpdir
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# 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 0 ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit 0 ;;
+    c34*)
+	echo c34-convex-bsd
+	exit 0 ;;
+    c38*)
+	echo c38-convex-bsd
+	exit 0 ;;
+    c4*)
+	echo c4-convex-bsd
+	exit 0 ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+    ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches at gnu.org> 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:
diff --git a/Win32/WinCVODE/sundials/config/config.sub b/Win32/WinCVODE/sundials/config/config.sub
new file mode 100755
index 0000000..db85356
--- /dev/null
+++ b/Win32/WinCVODE/sundials/config/config.sub
@@ -0,0 +1,1470 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002 Free Software Foundation, Inc.
+
+timestamp='2002-09-05'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# 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.
+#
+# 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., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# 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.
+
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+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 <config-patches at gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+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 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit 0;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis)
+		os=
+		basic_machine=$1
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+ 	-chorusrdb)
+ 		os=-chorusrdb
+		basic_machine=$1
+ 		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+	| clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k \
+	| m32r | m68000 | m68k | m88k | mcore \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64vr | mips64vrel \
+	| mips64orion | mips64orionel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| ns16k | ns32k \
+	| openrisc | or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+	| strongarm \
+	| tahoe | thumb | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xscale | xstormy16 | xtensa \
+	| z8k)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12)
+		# Motorola 68HC11/12.
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* \
+	| bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \
+	| clipper-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* \
+	| m32r-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | mcore-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39 | mipstx39el \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| pyramid-* \
+	| romp-* | rs6000-* \
+	| sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+	| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+	| xtensa-* \
+	| ymp-* \
+	| z8k-*)
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	mmix*)
+		basic_machine=mmix-knuth
+		os=-mmixware
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	or32 | or32-*)
+		basic_machine=or32-unknown
+		os=-coff
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2)
+		basic_machine=i686-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+		;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3d)
+		basic_machine=alpha-cray
+		os=-unicos
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+        tic4x | c4x*)
+		basic_machine=tic4x-unknown
+		os=-coff
+		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	windows32)
+		basic_machine=i386-pc
+		os=-windows32-msvcrt
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele)
+		basic_machine=sh-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparc | sparcv9 | sparcv9b)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
+	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto*)
+		os=-nto-qnx
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-ibm)
+		os=-aix
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/Win32/WinCVODE/sundials/config/fortran_update.in b/Win32/WinCVODE/sundials/config/fortran_update.in
new file mode 100644
index 0000000..ea31357
--- /dev/null
+++ b/Win32/WinCVODE/sundials/config/fortran_update.in
@@ -0,0 +1,442 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:11:25 $
+# -----------------------------------------------------------------
+# Programmer(s): Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/shared/LICENSE.
+# -----------------------------------------------------------------
+# This script updates Fortran source code according to the level
+# of precision specified using the --with-precision option. It also
+# updates variable type specifiers according to the sizes of the
+# C types 'long int' and 'int' and the SUNDIALS-specific type
+# 'realtype'.
+# -----------------------------------------------------------------
+# Notes:
+#
+#  (1) The environment variable F77_KEYWORD_LIST should contain
+#      a list of all intrinsic functions/procedures used in the
+#      Fortran examples (defined under 'update' target).
+#
+#  (2) F77_MPI_REAL_* is set to MPI_REAL#, where # is the number
+#      of bytes in realtype (SUNDIALS-specific data type). However,
+#      if MPI_REAL# is NOT defined in the header file 'mpif.h',
+#      then MPI_REAL is used instead. Also, if the file 'mpif.h'
+#      does NOT exist under the directory MPI_INC_DIR, then
+#      MPI_REAL# is still used, but there is NO guarantee that
+#      it is actually defined. Of course, the problem can easily
+#      be avoided by adding -I<mpi_inc_dir> to FFLAGS or
+#      --with-fflags.
+# -----------------------------------------------------------------
+
+SAVED_LC_ALL="${LC_ALL}"
+LC_ALL="C"
+
+abs_top_builddir="@abs_top_builddir@"
+prefix="@prefix@"
+includedir="@includedir@"
+
+FLOAT_TYPE="@FLOAT_TYPE@"
+
+MPI_INC_DIR="@MPI_INC_DIR@"
+
+EGREP="@EGREP@"
+FGREP="@FGREP@"
+
+INSTALL="@INSTALL@"
+TEMP_INSTALL=`echo "${INSTALL}" | cut -d' ' -f1`
+if test -f ${TEMP_INSTALL} ; then
+  :
+else
+  INSTALL="${abs_top_builddir}/config/${INSTALL}"
+fi
+CP_FILE="@INSTALL_DATA@"
+
+srcdir="${1}"
+SOURCE_FILE="${2}"
+
+builddir="."
+
+F77_KEYWORD_LIST="FLOAT/DBLE/QFLOAT,float/dble/qfloat SIN/DSIN/QSIN,sin/dsin/qsin"
+F77_KEYWORD_LIST="${F77_KEYWORD_LIST} EXP/DEXP/QEXP,exp/dexp/qexp"
+F77_KEYWORD_LIST="${F77_KEYWORD_LIST} ABS/DABS/QABS,abs/dabs/qabs"
+F77_KEYWORD_LIST="${F77_KEYWORD_LIST} AMAX1/DMAX1/QMAX1,amax1/dmax1/qmax1"
+TEMP_A=`${FGREP} "#define SIZEOF_INT 4" ${abs_top_builddir}/config.h`
+if test "X${TEMP_A}" = "X"; then
+  TEMP_A=`${FGREP} "#define SIZEOF_INT 8" ${abs_top_builddir}/config.h`
+  if test "X${TEMP_A}" = "X"; then
+    INT_BYTES="4"
+  else
+    INT_BYTES="8"
+  fi
+else
+  INT_BYTES="4"
+fi
+F77_INT_UPPER="INTEGER\*${INT_BYTES}"
+F77_INT_LOWER="integer\*${INT_BYTES}"
+TEMP_A=`${FGREP} "#define SIZEOF_LONG_INT 4" ${abs_top_builddir}/config.h`
+if test "X${TEMP_A}" = "X"; then
+  TEMP_A=`${FGREP} "#define SIZEOF_LONG_INT 8" ${abs_top_builddir}/config.h`
+  if test "X${TEMP_A}" = "X"; then
+    LONG_INT_BYTES="4"
+  else
+    LONG_INT_BYTES="8"
+  fi
+else
+  LONG_INT_BYTES="4"
+fi
+F77_LONG_INT_UPPER="INTEGER\*${LONG_INT_BYTES}"
+F77_LONG_INT_LOWER="integer\*${LONG_INT_BYTES}"
+if test "X${FLOAT_TYPE}" = "Xsingle"; then
+  TEMP_A=`${FGREP} "#define SIZEOF_FLOAT 4" ${abs_top_builddir}/config.h`
+  if test "X${TEMP_A}" = "X"; then
+    TEMP_A=`${FGREP} "#define SIZEOF_FLOAT 8" ${abs_top_builddir}/config.h`
+    if test "X${TEMP_A}" = "X"; then
+      TEMP_A=`${FGREP} "#define SIZEOF_FLOAT 16" ${abs_top_builddir}/config.h`
+      if test "X${TEMP_A}" = "X"; then
+        FLOAT_BYTES=""
+      else
+        FLOAT_BYTES="16"
+      fi
+    else
+      FLOAT_BYTES="8"
+    fi
+  else
+    FLOAT_BYTES="4"
+  fi
+elif test "X${FLOAT_TYPE}" = "Xdouble"; then
+  TEMP_A=`${FGREP} "#define SIZEOF_DOUBLE 4" ${abs_top_builddir}/config.h`
+  if test "X${TEMP_A}" = "X"; then
+    TEMP_A=`${FGREP} "#define SIZEOF_DOUBLE 8" ${abs_top_builddir}/config.h`
+    if test "X${TEMP_A}" = "X"; then
+      TEMP_A=`${FGREP} "#define SIZEOF_DOUBLE 16" ${abs_top_builddir}/config.h`
+      if test "X${TEMP_A}" = "X"; then
+        FLOAT_BYTES=""
+      else
+        FLOAT_BYTES="16"
+      fi
+    else
+      FLOAT_BYTES="8"
+    fi
+  else
+    FLOAT_BYTES="4"
+  fi
+elif test "X${FLOAT_TYPE}" = "Xextended"; then
+  TEMP_A=`${FGREP} "#define SIZEOF_LONG_DOUBLE 4" ${abs_top_builddir}/config.h`
+  if test "X${TEMP_A}" = "X"; then
+    TEMP_A=`${FGREP} "#define SIZEOF_LONG_DOUBLE 8" ${abs_top_builddir}/config.h`
+    if test "X${TEMP_A}" = "X"; then
+      TEMP_A=`${FGREP} "#define SIZEOF_LONG_DOUBLE 16" ${abs_top_builddir}/config.h`
+      if test "X${TEMP_A}" = "X"; then
+        FLOAT_BYTES=""
+      else
+        FLOAT_BYTES="16"
+      fi
+    else
+      FLOAT_BYTES="8"
+    fi
+  else
+    FLOAT_BYTES="4"
+  fi
+fi
+if test "X${FLOAT_BYTES}" = "X" || test "X${FLOAT_TYPE}" = "Xdouble"; then
+  F77_FLOAT_UPPER=""
+  F77_FLOAT_LOWER=""
+elif test "X${FLOAT_TYPE}" = "Xsingle" || test "X${FLOAT_TYPE}" = "Xextended"; then
+  F77_FLOAT_UPPER="REAL\*${FLOAT_BYTES}"
+  F77_FLOAT_LOWER="real\*${FLOAT_BYTES}"
+fi
+if test "X${FLOAT_TYPE}" = "Xsingle"; then
+  C_FLOAT_TYPE="float"
+elif test "X${FLOAT_TYPE}" = "Xdouble"; then
+  C_FLOAT_TYPE="double"
+elif test "X${FLOAT_TYPE}" = "Xextended"; then
+  C_FLOAT_TYPE="long double"
+fi
+TEMP_A=`echo "${srcdir}" | ${FGREP} "examples_par"`
+if test "X${TEMP_A}" = "X"; then
+  :
+else
+  if test -f ${MPI_INC_DIR}/mpif.h ; then
+    TEMP_A=`${FGREP} "MPI_REAL${FLOAT_BYTES}" ${MPI_INC_DIR}/mpif.h`
+    if test "X${TEMP_A}" = "X"; then
+      TEMP_A=`${FGREP} "mpi_real${FLOAT_BYTES}" ${MPI_INC_DIR}/mpif.h`
+    fi
+    if test "X${TEMP_A}" = "X"; then
+      F77_MPI_REAL_UPPER="MPI_REAL"
+      F77_MPI_REAL_LOWER="mpi_real"
+    else
+      F77_MPI_REAL_UPPER="MPI_REAL${FLOAT_BYTES}"
+      F77_MPI_REAL_LOWER="mpi_real${FLOAT_BYTES}"
+    fi
+  else
+    echo ""
+    echo "WARNING: using MPI_REAL${FLOAT_BYTES} since unable to find mpif.h"
+    echo ""
+    F77_MPI_REAL_UPPER="MPI_REAL${FLOAT_BYTES}"
+    F77_MPI_REAL_LOWER="mpi_real${FLOAT_BYTES}"
+  fi
+fi
+if test "X${FLOAT_BYTES}" = "X"; then
+  echo ""
+  echo "WARNING: ${C_FLOAT_TYPE} floating-point data type has NO Fortran equivalent"
+  echo ""
+fi
+if test -f ${srcdir}/${SOURCE_FILE} ; then
+  echo "Updating ${SOURCE_FILE}..."
+  ${CP_FILE} ${srcdir}/${SOURCE_FILE} ${builddir}/temp1.f
+  TEMP_A=`${FGREP} "INTEGER*4" ${builddir}/temp1.f`
+  TEMP_B=`${FGREP} "integer*4" ${builddir}/temp1.f`
+  TEMP_A="${TEMP_A} ${TEMP_B}"
+  for j in ${TEMP_A} ; do
+    TEMP_B=`echo "${j}" | ${FGREP} "INTEGER*4"`
+    F77_CASE="upper"
+    if test "X${TEMP_B}" = "X"; then
+      TEMP_B=`echo "${j}" | ${FGREP} "integer*4"`
+      F77_CASE="lower"
+    fi
+    if test "X${TEMP_B}" = "X"; then
+      :
+    else
+      TEMP1=`echo "${j}" | cut -d'*' -f1`
+      TEMP2=`echo "${j}" | cut -d'*' -f2`
+      j="${TEMP1}\*${TEMP2}"
+      if test "X${F77_CASE}" = "Xupper"; then
+        sed "s,${j},${F77_LONG_INT_UPPER}," ${builddir}/temp1.f > ${builddir}/temp2.f
+      else
+        sed "s,${j},${F77_LONG_INT_LOWER}," ${builddir}/temp1.f > ${builddir}/temp2.f
+      fi
+      ${CP_FILE} ${builddir}/temp2.f ${builddir}/temp1.f
+    fi
+  done
+  TEMP_A=`${FGREP} "INTEGER " ${builddir}/temp1.f`
+  TEMP_B=`${FGREP} "integer " ${builddir}/temp1.f`
+  TEMP_A="${TEMP_A} ${TEMP_B}"
+  for j in ${TEMP_A} ; do
+    TEMP_B=`echo "${j}" | ${FGREP} "INTEGER"`
+    F77_CASE="upper"
+    if test "X${TEMP_B}" = "X"; then
+      TEMP_B=`echo "${j}" | ${FGREP} "integer"`
+      F77_CASE="lower"
+    fi
+    if test "X${TEMP_B}" = "X"; then
+      :
+    else
+      if test "X${F77_CASE}" = "Xupper"; then
+        sed "s,${j} ,${F77_INT_UPPER} ," ${builddir}/temp1.f > ${builddir}/temp2.f
+      else
+        sed "s,${j} ,${F77_INT_LOWER} ," ${builddir}/temp1.f > ${builddir}/temp2.f
+      fi
+      ${CP_FILE} ${builddir}/temp2.f ${builddir}/temp1.f
+    fi
+  done
+  if test "X${FLOAT_TYPE}" = "Xdouble" || test "X${FLOAT_BYTES}" = "X"; then
+    :
+  elif test "X${FLOAT_TYPE}" = "Xsingle"; then
+    CONTINUE="yes"
+    while test "X${CONTINUE}" = "Xyes" ; do
+      TEMP_A=`${FGREP} "DOUBLE PRECISION" ${builddir}/temp1.f`
+      F77_CASE="upper"
+      if test "X${TEMP_A}" = "X"; then
+        TEMP_A=`${FGREP} "double precision" ${builddir}/temp1.f`
+        F77_CASE="lower"
+      fi
+      if test "X${TEMP_A}" = "X"; then
+        CONTINUE="no"
+      else
+        if test "X${F77_CASE}" = "Xupper"; then
+          sed "s,DOUBLE PRECISION,${F77_FLOAT_UPPER}," ${builddir}/temp1.f > ${builddir}/temp2.f
+        else
+          sed "s,double precision,${F77_FLOAT_LOWER}," ${builddir}/temp1.f > ${builddir}/temp2.f
+        fi
+        ${CP_FILE} ${builddir}/temp2.f ${builddir}/temp1.f
+      fi
+    done
+    CONTINUE="yes"
+    while test "X${CONTINUE}" = "Xyes" ; do
+      TEMP_A=`${FGREP} "MPI_DOUBLE_PRECISION" ${builddir}/temp1.f`
+      F77_CASE="upper"
+      if test "X${TEMP_A}" = "X"; then
+        TEMP_A=`${FGREP} "mpi_double_precision" ${builddir}/temp1.f`
+        F77_CASE="lower"
+      fi
+      if test "X${TEMP_A}" = "X"; then
+        CONTINUE="no"
+      else
+        if test "X${F77_CASE}" = "Xupper"; then
+          sed "s,MPI_DOUBLE_PRECISION,${F77_MPI_REAL_UPPER}," ${builddir}/temp1.f > ${builddir}/temp2.f
+        else
+          sed "s,mpi_double_precision,${F77_MPI_REAL_LOWER}," ${builddir}/temp1.f > ${builddir}/temp2.f
+        fi
+        ${CP_FILE} ${builddir}/temp2.f ${builddir}/temp1.f
+      fi
+    done
+    TEMP_A=`${EGREP} "[/]?[[:digit:]]+[.]{1}[[:digit:]]*[dD]{1}[+-]?[[:digit:]]+[/]?" ${builddir}/temp1.f`
+    CONTINUE="yes"
+    while test "X${CONTINUE}" = "Xyes" ; do
+      TEMP_B=`echo "${TEMP_A}" | ${FGREP} ","`
+      if test "X${TEMP_B}" = "X"; then
+        CONTINUE="no"
+      else
+        TEMP_A=`echo "${TEMP_A}" | sed "s,\,, ,"`
+      fi
+    done
+    CONTINUE="yes"
+    while test "X${CONTINUE}" = "Xyes" ; do
+      TEMP_B=`echo "${TEMP_A}" | ${FGREP} "("`
+      if test "X${TEMP_B}" = "X"; then
+        CONTINUE="no"
+      else
+        TEMP_A=`echo "${TEMP_A}" | sed "s,(, ,"`
+      fi
+    done
+    for j in ${TEMP_A} ; do
+      TEMP_B=`echo "${j}" | ${EGREP} "[/]?[[:digit:]]+[.]{1}[[:digit:]]*[dD]{1}[+-]?[[:digit:]]+[/]?"`
+      if test "X${TEMP_B}" = "X"; then
+        :
+      else
+        TEMP_B=`echo "${j}" | ${FGREP} "/"`
+        if test "X${TEMP_B}" = "X"; then
+          TEMP_B=`echo "${j}" | sed "s,D,E,"`
+          TEMP_B=`echo "${TEMP_B}" | sed "s,d,e,"`
+          sed "s,${j},${TEMP_B}," ${builddir}/temp1.f > ${builddir}/temp2.f
+        else
+          TEMP_B=`echo "${j}" | cut -d'/' -f2`
+          TEMP_C=`echo "${TEMP_B}" | sed "s,D,E,"`
+          TEMP_C=`echo "${TEMP_C}" | sed "s,d,e,"`
+          TEMP_C=`echo "${j}" | sed "s,${TEMP_B},${TEMP_C},"`
+          sed "s,${j},${TEMP_C}," ${builddir}/temp1.f > ${builddir}/temp2.f
+        fi
+        ${CP_FILE} ${builddir}/temp2.f ${builddir}/temp1.f
+      fi
+    done
+    for k in ${F77_KEYWORD_LIST} ; do
+      F77_LIST_UPPER=`echo "${k}" | cut -d',' -f1`
+      F77_LIST_LOWER=`echo "${k}" | cut -d',' -f2`
+      DEFAULT_KEYWORD_UPPER=`echo "${F77_LIST_UPPER}" | cut -d'/' -f2`
+      DEFAULT_KEYWORD_LOWER=`echo "${F77_LIST_LOWER}" | cut -d'/' -f2`
+      TEMP_A=`${FGREP} "${DEFAULT_KEYWORD_UPPER}(" ${builddir}/temp1.f`
+      TEMP_B=`${FGREP} "${DEFAULT_KEYWORD_LOWER}(" ${builddir}/temp1.f`
+      TEMP_A="${TEMP_A} ${TEMP_B}"
+      CONTINUE="yes"
+      while test "X${CONTINUE}" = "Xyes" ; do
+        TEMP_B=`echo "${TEMP_A}" | ${FGREP} ","`
+        if test "X${TEMP_B}" = "X"; then
+          CONTINUE="no"
+        else
+          TEMP_A=`echo "${TEMP_A}" | sed "s,\,, ,"`
+        fi
+      done
+      for j in ${TEMP_A} ; do
+        TEMP_B=`echo "${j}" | ${FGREP} "${DEFAULT_KEYWORD_UPPER}("`
+        F77_CASE="upper"
+        if test "X${TEMP_B}" = "X"; then
+          TEMP_B=`echo "${j}" | ${FGREP} "${DEFAULT_KEYWORD_LOWER}("`
+          F77_CASE="lower"
+        fi
+        if test "X${TEMP_B}" = "X"; then
+          :
+        else
+          if test "X${F77_CASE}" = "Xupper"; then
+            TEMP_C=`echo "${F77_LIST_UPPER}" | cut -d'/' -f1`
+            TEMP_B=`echo "${j}" | sed "s,${DEFAULT_KEYWORD_UPPER}(,${TEMP_C}(,"`
+          else
+            TEMP_C=`echo "${F77_LIST_LOWER}" | cut -d'/' -f1`
+            TEMP_B=`echo "${j}" | sed "s,${DEFAULT_KEYWORD_LOWER}(,${TEMP_C}(,"`
+          fi
+          sed "s,${j},${TEMP_B}," ${builddir}/temp1.f > ${builddir}/temp2.f
+          ${CP_FILE} ${builddir}/temp2.f ${builddir}/temp1.f
+        fi
+      done
+    done
+  elif test "X${FLOAT_TYPE}" = "Xextended"; then
+    CONTINUE="yes"
+    while test "X${CONTINUE}" = "Xyes" ; do
+      TEMP_A=`${FGREP} "DOUBLE PRECISION" ${builddir}/temp1.f`
+      F77_CASE="upper"
+      if test "X${TEMP_A}" = "X"; then
+        TEMP_A=`${FGREP} "double precision" ${builddir}/temp1.f`
+        F77_CASE="lower"
+      fi
+      if test "X${TEMP_A}" = "X"; then
+        CONTINUE="no"
+      else
+        if test "X${F77_CASE}" = "Xupper"; then
+          sed "s,DOUBLE PRECISION,${F77_FLOAT_UPPER}," ${builddir}/temp1.f > ${builddir}/temp2.f
+        else
+          sed "s,double precision,${F77_FLOAT_LOWER}," ${builddir}/temp1.f > ${builddir}/temp2.f
+        fi
+        ${CP_FILE} ${builddir}/temp2.f ${builddir}/temp1.f
+      fi
+    done
+    CONTINUE="yes"
+    while test "X${CONTINUE}" = "Xyes" ; do
+      TEMP_A=`${FGREP} "MPI_DOUBLE_PRECISION" ${builddir}/temp1.f`
+      F77_CASE="upper"
+      if test "X${TEMP_A}" = "X"; then
+        TEMP_A=`${FGREP} "mpi_double_precision" ${builddir}/temp1.f`
+        F77_CASE="lower"
+      fi
+      if test "X${TEMP_A}" = "X"; then
+        CONTINUE="no"
+      else
+        if test "X${F77_CASE}" = "Xupper"; then
+          sed "s,MPI_DOUBLE_PRECISION,${F77_MPI_REAL_UPPER}," ${builddir}/temp1.f > ${builddir}/temp2.f
+        else
+          sed "s,mpi_double_precision,${F77_MPI_REAL_LOWER}," ${builddir}/temp1.f > ${builddir}/temp2.f
+        fi
+        ${CP_FILE} ${builddir}/temp2.f ${builddir}/temp1.f
+      fi
+    done
+    if test "X${FLOAT_BYTES}" = "X16"; then
+      for k in ${F77_KEYWORD_LIST} ; do
+        F77_LIST_UPPER=`echo "${k}" | cut -d',' -f1`
+        F77_LIST_LOWER=`echo "${k}" | cut -d',' -f2`
+        DEFAULT_KEYWORD_UPPER=`echo "${F77_LIST_UPPER}" | cut -d'/' -f2`
+        DEFAULT_KEYWORD_LOWER=`echo "${F77_LIST_LOWER}" | cut -d'/' -f2`
+        TEMP_A=`${FGREP} "${DEFAULT_KEYWORD_UPPER}(" ${builddir}/temp1.f`
+        TEMP_B=`${FGREP} "${DEFAULT_KEYWORD_LOWER}(" ${builddir}/temp1.f`
+        TEMP_A="${TEMP_A} ${TEMP_B}"
+        CONTINUE="yes"
+        while test "X${CONTINUE}" = "Xyes" ; do
+          TEMP_B=`echo "${TEMP_A}" | ${FGREP} ","`
+          if test "X${TEMP_B}" = "X"; then
+            CONTINUE="no"
+          else
+            TEMP_A=`echo "${TEMP_A}" | sed "s,\,, ,"`
+          fi
+        done
+        for j in ${TEMP_A} ; do
+          TEMP_B=`echo "${j}" | ${FGREP} "${DEFAULT_KEYWORD_UPPER}("`
+          F77_CASE="upper"
+          if test "X${TEMP_B}" = "X"; then
+            TEMP_B=`echo "${j}" | ${FGREP} "${DEFAULT_KEYWORD_LOWER}("`
+            F77_CASE="lower"
+          fi
+          if test "X${TEMP_B}" = "X"; then
+            :
+          else
+            if test "X${F77_CASE}" = "Xupper"; then
+              TEMP_C=`echo "${F77_LIST_UPPER}" | cut -d'/' -f3`
+              TEMP_B=`echo "${j}" | sed "s,${DEFAULT_KEYWORD_UPPER}(,${TEMP_C}(,"`
+            else
+              TEMP_C=`echo "${F77_LIST_LOWER}" | cut -d'/' -f3`
+              TEMP_B=`echo "${j}" | sed "s,${DEFAULT_KEYWORD_LOWER}(,${TEMP_C}(,"`
+            fi
+            sed "s,${j},${TEMP_B}," ${builddir}/temp1.f > ${builddir}/temp2.f
+            ${CP_FILE} ${builddir}/temp2.f ${builddir}/temp1.f
+          fi
+        done
+      done
+    fi
+  fi
+  SOURCE_FILE=`echo "${SOURCE_FILE}" | cut -d'.' -f1`
+  SOURCE_FILE="${SOURCE_FILE}-updated.f"
+  ${CP_FILE} ${builddir}/temp1.f ${builddir}/${SOURCE_FILE}
+  rm -f ${builddir}/temp1.f ${builddir}/temp2.f
+fi
+
+LC_ALL="${SAVED_LC_ALL}"
diff --git a/Win32/WinCVODE/sundials/config/install-sh b/Win32/WinCVODE/sundials/config/install-sh
new file mode 100755
index 0000000..7dc2f28
--- /dev/null
+++ b/Win32/WinCVODE/sundials/config/install-sh
@@ -0,0 +1,251 @@
+#!/bin/sh
+#
+# install - install a program, script, or datafile
+# This comes from X11R5 (mit/util/scripts/install.sh).
+#
+# Copyright 1991 by the Massachusetts Institute of Technology
+#
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation, and that the name of M.I.T. not be used in advertising or
+# publicity pertaining to distribution of the software without specific,
+# written prior permission.  M.I.T. makes no representations about the
+# suitability of this software for any purpose.  It is provided "as is"
+# without express or implied warranty.
+#
+# 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.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# 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}"
+
+transformbasename=""
+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=:
+		chmodcmd=""
+	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
diff --git a/Win32/WinCVODE/sundials/config/ltmain.sh b/Win32/WinCVODE/sundials/config/ltmain.sh
new file mode 100644
index 0000000..5f7d111
--- /dev/null
+++ b/Win32/WinCVODE/sundials/config/ltmain.sh
@@ -0,0 +1,5062 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# 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.
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell, and then maybe $echo will work.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The name of this program.
+progname=`$echo "$0" | ${SED} 's%^.*/%%'`
+modename="$progname"
+
+# Constants.
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.4.3
+TIMESTAMP=" (1.922.2.110 2002/10/23 01:39:54)"
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII                                                         
+case `echo A|od -x` in                                                         
+ *[Cc]1*) # EBCDIC based system                                                
+  SP2NL="tr '\100' '\n'"                                                       
+  NL2SP="tr '\r\n' '\100\100'"                                                 
+  ;;                                                                           
+ *) # Assume ASCII based system                                                
+  SP2NL="tr '\040' '\012'"                                                     
+  NL2SP="tr '\015\012' '\040\040'"                                             
+  ;;                                                                           
+esac                                                                           
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+: ${IFS=" 	"}
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  echo "$modename: not configured to build any kind of library" 1>&2
+  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit 1
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+# Parse our command line options once, thoroughly.
+while test $# -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    exit 0
+    ;;
+
+  --config)
+    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
+    exit 0
+    ;;
+
+  --debug)
+    echo "$progname: enabling shell trace mode"
+    set -x
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      echo "enable static libraries"
+    else
+      echo "disable static libraries"
+    fi
+    exit 0
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --preserve-dup-deps) duplicate_deps="yes" ;;
+
+  --quiet | --silent)
+    show=:
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+fi
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    case $nonopt in
+    *cc | *++ | gcc* | *-gcc* | xlc*)
+      mode=link
+      for arg
+      do
+	case $arg in
+	-c)
+	   mode=compile
+	   break
+	   ;;
+	esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+	if test -n "$nonopt"; then
+	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+	else
+	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+	fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    prev=
+    lastarg=
+    srcfile="$nonopt"
+    suppress_output=
+
+    user_target=no
+    for arg
+    do
+      case $prev in
+      "") ;;
+      xcompiler)
+	# Aesthetically quote the previous argument.
+	prev=
+	lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+
+	case $arg in
+	# Double-quote args containing other shell metacharacters.
+	# Many Bourne shells cannot handle close brackets correctly
+	# in scan sets, so we specify it separately.
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+
+	# Add the previous argument to base_compile.
+	if test -z "$base_compile"; then
+	  base_compile="$lastarg"
+	else
+	  base_compile="$base_compile $lastarg"
+	fi
+	continue
+	;;
+      esac
+
+      # Accept any command-line options.
+      case $arg in
+      -o)
+	if test "$user_target" != "no"; then
+	  $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+	  exit 1
+	fi
+	user_target=next
+	;;
+
+      -static)
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+	lastarg=
+	save_ifs="$IFS"; IFS=','
+	for arg in $args; do
+	  IFS="$save_ifs"
+
+	  # Double-quote args containing other shell metacharacters.
+	  # Many Bourne shells cannot handle close brackets correctly
+	  # in scan sets, so we specify it separately.
+	  case $arg in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    arg="\"$arg\""
+	    ;;
+	  esac
+	  lastarg="$lastarg $arg"
+	done
+	IFS="$save_ifs"
+	lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+	# Add the arguments to base_compile.
+	if test -z "$base_compile"; then
+	  base_compile="$lastarg"
+	else
+	  base_compile="$base_compile $lastarg"
+	fi
+	continue
+	;;
+      esac
+
+      case $user_target in
+      next)
+	# The next one is the -o target name
+	user_target=yes
+	continue
+	;;
+      yes)
+	# We got the output file
+	user_target=set
+	libobj="$arg"
+	continue
+	;;
+      esac
+
+      # Accept the current argument as the source file.
+      lastarg="$srcfile"
+      srcfile="$arg"
+
+      # Aesthetically quote the previous argument.
+
+      # Backslashify any backslashes, double quotes, and dollar signs.
+      # These are the only characters that are still specially
+      # interpreted inside of double-quoted scrings.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      case $lastarg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	lastarg="\"$lastarg\""
+	;;
+      esac
+
+      # Add the previous argument to base_compile.
+      if test -z "$base_compile"; then
+	base_compile="$lastarg"
+      else
+	base_compile="$base_compile $lastarg"
+      fi
+    done
+
+    case $user_target in
+    set)
+      ;;
+    no)
+      # Get the name of the library object.
+      libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    *)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit 1
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSfmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit 1
+      ;;
+    esac
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $libobj"
+    else
+      removelist="$libobj"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit 1" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit 1" 1 2 15
+    else
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$0" "$lockfile" 2>/dev/null; do
+	$show "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit 1
+      fi
+      echo $srcfile > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	# All platforms use -DPIC, to notify preprocessed assembler code.
+	command="$base_compile $srcfile $pic_flag -DPIC"
+      else
+	# Don't build PIC code
+	command="$base_compile $srcfile"
+      fi
+      if test "$build_old_libs" = yes; then
+	lo_libobj="$libobj"
+	dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
+	if test "X$dir" = "X$libobj"; then
+	  dir="$objdir"
+	else
+	  dir="$dir/$objdir"
+	fi
+	libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
+
+	if test -d "$dir"; then
+	  $show "$rm $libobj"
+	  $run $rm $libobj
+	else
+	  $show "$mkdir $dir"
+	  $run $mkdir $dir
+	  status=$?
+	  if test $status -ne 0 && test ! -d $dir; then
+	    exit $status
+	  fi
+	fi
+      fi
+      if test "$compiler_o_lo" = yes; then
+	output_obj="$libobj"
+	command="$command -o $output_obj"
+      elif test "$compiler_c_o" = yes; then
+	output_obj="$obj"
+	command="$command -o $output_obj"
+      fi
+
+      $run $rm "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	test -n "$output_obj" && $run $rm $removelist
+	exit 1
+      fi
+
+      if test "$need_locks" = warn &&
+	 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
+	echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit 1
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test x"$output_obj" != x"$libobj"; then
+	$show "$mv $output_obj $libobj"
+	if $run $mv $output_obj $libobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # If we have no pic_flag, then copy the object into place and finish.
+      if (test -z "$pic_flag" || test "$pic_mode" != default) &&
+	 test "$build_old_libs" = yes; then
+	# Rename the .lo from within objdir to obj
+	if test -f $obj; then
+	  $show $rm $obj
+	  $run $rm $obj
+	fi
+
+	$show "$mv $libobj $obj"
+	if $run $mv $libobj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+
+	xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+	if test "X$xdir" = "X$obj"; then
+	  xdir="."
+	else
+	  xdir="$xdir"
+	fi
+	baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"`
+	libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
+	# Now arrange that obj and lo_libobj become the same file
+	$show "(cd $xdir && $LN_S $baseobj $libobj)"
+	if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
+	  # Unlock the critical section if it was locked
+	  if test "$need_locks" != no; then
+	    $run $rm "$lockfile"
+	  fi
+	  exit 0
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Allow error messages only from the first compilation.
+      suppress_output=' >/dev/null 2>&1'
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $srcfile"
+      else
+	# All platforms use -DPIC, to notify preprocessed assembler code.
+	command="$base_compile $srcfile $pic_flag -DPIC"
+      fi
+      if test "$compiler_c_o" = yes; then
+	command="$command -o $obj"
+	output_obj="$obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	$run $rm $removelist
+	exit 1
+      fi
+
+      if test "$need_locks" = warn &&
+	 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
+	echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit 1
+      fi
+
+      # Just move the object if needed
+      if test x"$output_obj" != x"$obj"; then
+	$show "$mv $output_obj $obj"
+	if $run $mv $output_obj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Create an invalid libtool object if no PIC, so that we do not
+      # accidentally link it into a program.
+      if test "$build_libtool_libs" != yes; then
+	$show "echo timestamp > $libobj"
+	$run eval "echo timestamp > \$libobj" || exit $?
+      else
+	# Move the .lo from within objdir
+	$show "$mv $libobj $lo_libobj"
+	if $run $mv $libobj $lo_libobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+    fi
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit 0
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invokation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static)
+	if test "X$arg" = "X-all-static"; then
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	else
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	fi
+	build_libtool_libs=no
+	build_old_libs=yes
+	prefer_static_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test $# -gt 0; do
+      arg="$1"
+      shift
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+	;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  compile_command="$compile_command @OUTPUT@"
+	  finalize_command="$finalize_command @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    compile_command="$compile_command @SYMFILE@"
+	    finalize_command="$finalize_command @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      dlfiles="$dlfiles $arg"
+	    else
+	      dlprefiles="$dlprefiles $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  if test ! -f "$arg"; then
+	    $echo "$modename: symbol file \`$arg' does not exist"
+	    exit 1
+	  fi
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    $echo "$modename: only absolute run-paths are allowed" 1>&2
+	    exit 1
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) rpath="$rpath $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) xrpath="$xrpath $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	xcompiler)
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
+	  prev=
+	  compile_command="$compile_command $wl$qarg"
+	  finalize_command="$finalize_command $wl$qarg"
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n $prev
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+	continue
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  $echo "$modename: more than one -exported-symbols argument is not allowed"
+	  exit 1
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | no/*-*-nonstopux*)
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  if test -z "$absdir"; then
+	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+	    exit 1
+	  fi
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "*) ;;
+	*)
+	  deplibs="$deplibs -L$dir"
+	  lib_search_path="$lib_search_path $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-pw32* | *-*-beos*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-mingw* | *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  esac
+	 elif test "X$arg" = "X-lc_r"; then
+	  case $host in
+	 *-*-openbsd* | *-*-freebsd*)
+	    # Do not include libc_r directly, use -pthread flag.
+	    continue
+	    ;;
+	  esac
+	fi
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # in order for the loader to find any dlls it needs.
+	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  $echo "$modename: only absolute run-paths are allowed" 1>&2
+	  exit 1
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) xrpath="$xrpath $dir" ;;
+	esac
+	continue
+	;;
+
+      -static)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Wl,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $wl$flag"
+	  linker_flags="$linker_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+
+      *.lo | *.$objext)
+	# A library or standard object.
+	if test "$prev" = dlfiles; then
+	  # This file was specified with -dlopen.
+	  if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+	    dlfiles="$dlfiles $arg"
+	    prev=
+	    continue
+	  else
+	    # If libtool objects are unsupported, then we need to preload.
+	    prev=dlprefiles
+	  fi
+	fi
+
+	if test "$prev" = dlprefiles; then
+	  # Preload the old-style object.
+	  dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
+	  prev=
+	else
+	  case $arg in
+	  *.lo) libobjs="$libobjs $arg" ;;
+	  *) objs="$objs $arg" ;;
+	  esac
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	deplibs="$deplibs $arg"
+	old_deplibs="$old_deplibs $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  dlfiles="$dlfiles $arg"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  dlprefiles="$dlprefiles $arg"
+	  prev=
+	else
+	  deplibs="$deplibs $arg"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d $output_objdir; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      status=$?
+      if test $status -ne 0 && test ! -d $output_objdir; then
+	exit $status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if test "X$duplicate_deps" = "Xyes" ; then
+	case "$libs " in
+	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	esac
+      fi
+      libs="$libs $deplib"
+    done
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+	passes="conv link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+	    exit 1
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+    for pass in $passes; do
+      if test $linkmode = prog; then
+	# Determine which files to process
+	case $pass in
+	dlopen)
+	  libs="$dlfiles"
+	  save_deplibs="$deplibs" # Collect dlpreopened libraries
+	  deplibs=
+	  ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	esac
+      fi
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-l*)
+	  if test $linkmode = oldlib && test $linkmode = obj; then
+	    $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
+	    continue
+	  fi
+	  if test $pass = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+	    # Search the libtool library
+	    lib="$searchdir/lib${name}.la"
+	    if test -f "$lib"; then
+	      found=yes
+	      break
+	    fi
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  fi
+	  ;; # -l
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test $pass = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  prog)
+	    if test $pass = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test $pass = scan; then
+	      deplibs="$deplib $deplibs"
+	      newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    ;;
+	  *)
+	    $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test $pass = link; then
+	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) xrpath="$xrpath $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la) lib="$deplib" ;;
+	*.$libext)
+	  if test $pass = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    if test "$deplibs_check_method" != pass_all; then
+	      echo
+	      echo "*** Warning: Trying to link with static lib archive $deplib."
+	      echo "*** I have the capability to make that library automatically link in when"
+	      echo "*** you link to this library.  But I can only do this if you have a"
+	      echo "*** shared version of the library, which you do not appear to have"
+	      echo "*** because the file extensions .$libext of this argument makes me believe"
+	      echo "*** that it is just a static archive that I should not used here."
+	    else
+	      echo
+	      echo "*** Warning: Linking the shared library $output against the"
+	      echo "*** static library $deplib is not portable!"
+	      deplibs="$deplib $deplibs"
+	    fi
+	    continue
+	    ;;
+	  prog)
+	    if test $pass != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	    # If there is no dlopen support or we're linking statically,
+	    # we need to preload.
+	    newdlprefiles="$newdlprefiles $deplib"
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    newdlfiles="$newdlfiles $deplib"
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+	if test $found = yes || test -f "$lib"; then :
+	else
+	  $echo "$modename: cannot find the library \`$lib'" 1>&2
+	  exit 1
+	fi
+
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  exit 1
+	fi
+
+	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$ladir" = "X$lib" && ladir="."
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variable installed.
+	installed=yes
+
+	# Read the .la file
+	case $lib in
+	*/* | *\\*) . $lib ;;
+	*) . ./$lib ;;
+	esac
+
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test $linkmode = oldlib && test $linkmode = obj; }; then
+	   # Add dl[pre]opened files of deplib
+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	fi
+
+	if test $pass = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	      exit 1
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    convenience="$convenience $ladir/$objdir/$old_library"
+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+              if test "X$duplicate_deps" = "Xyes" ; then
+	        case "$tmp_libs " in
+	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	        esac
+              fi
+	      tmp_libs="$tmp_libs $deplib"
+	    done
+	  elif test $linkmode != prog && test $linkmode != lib; then
+	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
+	    exit 1
+	  fi
+	  continue
+	fi # $pass = conv
+
+	# Get the name of the library we link against.
+	linklib=
+	for l in $old_library $library_names; do
+	  linklib="$l"
+	done
+	if test -z "$linklib"; then
+	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	  exit 1
+	fi
+
+	# This library was specified with -dlopen.
+	if test $pass = dlopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+	    exit 1
+	  fi
+	  if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.
+	    dlprefiles="$dlprefiles $lib"
+	  else
+	    newdlfiles="$newdlfiles $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$libdir"
+	    absdir="$libdir"
+	  fi
+	else
+	  dir="$ladir/$objdir"
+	  absdir="$abs_ladir/$objdir"
+	  # Remove this search path later
+	  notinst_path="$notinst_path $abs_ladir"
+	fi # $installed = yes
+	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+	# This library was specified with -dlpreopen.
+	if test $pass = dlpreopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+	    exit 1
+	  fi
+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
+	  # are required to link).
+	  if test -n "$old_library"; then
+	    newdlprefiles="$newdlprefiles $dir/$old_library"
+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
+	  elif test -n "$dlname"; then
+	    newdlprefiles="$newdlprefiles $dir/$dlname"
+	  else
+	    newdlprefiles="$newdlprefiles $dir/$linklib"
+	  fi
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test $linkmode = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs"
+	  fi
+	  continue
+	fi
+
+	if test $linkmode = prog && test $pass != link; then
+	  newlib_search_path="$newlib_search_path $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test $linkalldeplibs = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	link_static=no # Whether the deplib will be linked statically
+	if test -n "$library_names" &&
+	   { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	  # Link against this shared library
+
+	  if test "$linkmode,$pass" = "prog,link" ||
+	   { test $linkmode = lib && test $hardcode_into_libs = yes; }; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	    if test $linkmode = prog; then
+	      # We need to hardcode the library path
+	      if test -n "$shlibpath_var"; then
+		# Make sure the rpath contains only unique directories.
+		case "$temp_rpath " in
+		*" $dir "*) ;;
+		*" $absdir "*) ;;
+		*) temp_rpath="$temp_rpath $dir" ;;
+		esac
+	      fi
+	    fi
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+
+	  if test "$installed" = no; then
+	    notinst_deplibs="$notinst_deplibs $lib"
+	    need_relink=yes
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    realname="$2"
+	    shift; shift
+	    libname=`eval \\$echo \"$libname_spec\"`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin*)
+		major=`expr $current - $age`
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    soname=`echo $soroot | ${SED} -e 's/^.*\///'`
+	    newlib="libimp-`echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      $show "extracting exported symbol list from \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      eval cmds=\"$extract_expsyms_cmds\"
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      $show "generating import library for \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      eval cmds=\"$old_archive_from_expsyms_cmds\"
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n $old_archive_from_expsyms_cmds
+
+	  if test $linkmode = prog || test "$mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      $echo "$modename: configuration error: unsupported hardcode properties"
+	      exit 1
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test $linkmode = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes && \
+		 test "$hardcode_minus_L" != yes && \
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test $linkmode = prog || test "$mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    fi
+
+	    if test $linkmode = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test $linkmode = prog; then
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+
+	  # Try to link the static library
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    echo
+	    echo "*** Warning: This system can not link to static lib archive $lib."
+	    echo "*** I have the capability to make that library automatically link in when"
+	    echo "*** you link to this library.  But I can only do this if you have a"
+	    echo "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      echo "*** But as you try to build a module library, libtool will still create "
+	      echo "*** a static module, that should work as long as the dlopening application"
+	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		echo
+		echo "*** However, this would only work if libtool was able to extract symbol"
+		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		echo "*** not find such a program.  So, this module is probably useless."
+		echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    convenience="$convenience $dir/$old_library"
+	    old_convenience="$old_convenience $dir/$old_library"
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test $linkmode = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
+	       test $link_static = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) xrpath="$xrpath $temp_xrpath";;
+		   esac;;
+	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  newlib_search_path="$newlib_search_path $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done
+
+	  if test $link_all_deplibs != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+		test "X$dir" = "X$deplib" && dir="."
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if grep "^installed=no" $deplib > /dev/null; then
+		  path="-L$absdir/$objdir"
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  if test -z "$libdir"; then
+		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		    exit 1
+		  fi
+		  if test "$absdir" != "$libdir"; then
+		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+		  fi
+		  path="-L$absdir"
+		fi
+		;;
+	      *) continue ;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$deplibs $path" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      if test $pass = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test $pass != dlopen; then
+	test $pass != scan && dependency_libs="$newdependency_libs"
+	if test $pass != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) lib_search_path="$lib_search_path $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    *)
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      esac
+	      ;;
+	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      if test "$pass" = "conv" &&
+       { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then
+	libs="$deplibs" # reset libs
+	deplibs=
+      fi
+    done # for pass
+    if test $linkmode = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	if test "$module" = no; then
+	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  eval libname=\"$libname_spec\"
+	else
+	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+	  exit 1
+	else
+	  echo
+	  echo "*** Warning: Linking the shared library $output against the non-libtool"
+	  echo "*** objects $objs is not portable!"
+	  libobjs="$libobjs $objs"
+	fi
+      fi
+
+      if test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test $# -gt 2; then
+	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  libext=al
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	if test -n "$vinfo"; then
+	  $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
+	fi
+
+	if test -n "$release"; then
+	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+	fi
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	IFS="$save_ifs"
+
+	if test -n "$8"; then
+	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+
+	current="$2"
+	revision="$3"
+	age="$4"
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	case $revision in
+	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	case $age in
+	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	if test $age -gt $current; then
+	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  minor_current=`expr $current + 1`
+	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current";
+	  ;;
+
+	irix | nonstopux)
+	  major=`expr $current - $age + 1`
+
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring="$verstring_prefix$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test $loop != 0; do
+	    iface=`expr $revision - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring_prefix$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux)
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  major=.`expr $current - $age`
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test $loop != 0; do
+	    iface=`expr $current - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  verstring="$verstring:${current}.0"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  major=`expr $current - $age`
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  verstring="0.0"
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=""
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+      fi
+
+      if test "$mode" != relink; then
+	# Remove our outputs.
+	$show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
+	$run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      for path in $notinst_path; do
+	lib_search_path=`echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
+	deplibs=`echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
+	dependency_libs=`echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+      done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  temp_xrpath="$temp_xrpath -R$libdir"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+	if test $hardcode_into_libs != yes || test $build_old_libs = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) dlfiles="$dlfiles $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) dlprefiles="$dlprefiles $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    deplibs="$deplibs -framework System"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd*)
+	    # Do not include libc due to us having libc/libc_r.
+	    ;;
+	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test $build_libtool_need_lc = "yes"; then
+	      deplibs="$deplibs -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behaviour.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $rm conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $rm conftest
+	  $CC -o conftest conftest.c $deplibs
+	  if test $? -eq 0 ; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	      # If $name is empty we are operating on a -L argument.
+	      if test -n "$name" && test "$name" != "0"; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		set dummy $deplib_matches
+		deplib_match=$2
+		if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		  newdeplibs="$newdeplibs $i"
+		else
+		  droppeddeps=yes
+		  echo
+		  echo "*** Warning: dynamic linker does not accept needed library $i."
+		  echo "*** I have the capability to make that library automatically link in when"
+		  echo "*** you link to this library.  But I can only do this if you have a"
+		  echo "*** shared version of the library, which I believe you do not have"
+		  echo "*** because a test_compile did reveal that the linker did not use it for"
+		  echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  else
+	    # Error occured in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	     # If $name is empty we are operating on a -L argument.
+	      if test -n "$name" && test "$name" != "0"; then
+		$rm conftest
+		$CC -o conftest conftest.c $i
+		# Did it work?
+		if test $? -eq 0 ; then
+		  ldd_output=`ldd conftest`
+		  libname=`eval \\$echo \"$libname_spec\"`
+		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		  set dummy $deplib_matches
+		  deplib_match=$2
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    newdeplibs="$newdeplibs $i"
+		  else
+		    droppeddeps=yes
+		    echo
+		    echo "*** Warning: dynamic linker does not accept needed library $i."
+		    echo "*** I have the capability to make that library automatically link in when"
+		    echo "*** you link to this library.  But I can only do this if you have a"
+		    echo "*** shared version of the library, which you do not appear to have"
+		    echo "*** because a test_compile did reveal that the linker did not use this one"
+		    echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		  fi
+		else
+		  droppeddeps=yes
+		  echo
+		  echo "*** Warning!  Library $i is needed by this library but I was not able to"
+		  echo "***  make it link in!  You will probably need to install it or some"
+		  echo "*** library that it depends on before this library will be fully"
+		  echo "*** functional.  Installing it before continuing would be even better."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method
+	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      libname=`eval \\$echo \"$libname_spec\"`
+	      for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		    potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		    for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null \
+			 | grep " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+			 | ${SED} 10q \
+			 | egrep "$file_magic_regex" > /dev/null; then
+			newdeplibs="$newdeplibs $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		    done
+	      done
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		echo
+		echo "*** Warning: linker path does not have real file for library $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  echo "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  echo "*** with $libname and none of the candidates passed a file format test"
+		  echo "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      libname=`eval \\$echo \"$libname_spec\"`
+	      for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		for potent_lib in $potential_libs; do
+		  potlib="$potent_lib" # see symlink-check below in file_magic test
+		  if eval echo \"$potent_lib\" 2>/dev/null \
+		      | ${SED} 10q \
+		      | egrep "$match_pattern_regex" > /dev/null; then
+		    newdeplibs="$newdeplibs $a_deplib"
+		    a_deplib=""
+		    break 2
+		  fi
+		done
+	      done
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		echo
+		echo "*** Warning: linker path does not have real file for library $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  echo "*** with $libname and none of the candidates passed a file format test"
+		  echo "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+	       -e 's/ -[LR][^ ]*//g' -e 's/[ 	]//g' |
+	     grep . >/dev/null; then
+	    echo
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	  fi
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library is the System framework
+	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    echo
+	    echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    echo "*** dependencies of module $libname.  Therefore, libtool will create"
+	    echo "*** a static module, that should work as long as the dlopening"
+	    echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      echo
+	      echo "*** However, this would only work if libtool was able to extract symbol"
+	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      echo "*** not find such a program.  So, this module is probably useless."
+	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    echo "*** The inter-library dependencies that have been dropped here will be"
+	    echo "*** automatically added whenever a program is linked with this library"
+	    echo "*** or is declared to -dlopen it."
+
+	    if test $allow_undefined = no; then
+	      echo
+	      echo "*** Since this library must not contain undefined symbols,"
+	      echo "*** because either the platform does not support them or"
+	      echo "*** it was explicitly requested with -no-undefined,"
+	      echo "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	if test $hardcode_into_libs = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		dep_rpath="$dep_rpath $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      rpath="$rpath$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	realname="$2"
+	shift; shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	test -z "$dlname" && dlname=$soname
+
+	lib="$output_objdir/$realname"
+	for link
+	do
+	  linknames="$linknames $link"
+	done
+
+	# Ensure that we have .o objects for linkers which dislike .lo
+	# (e.g. aix) in case we are running --disable-static
+	for obj in $libobjs; do
+	  xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+	  if test "X$xdir" = "X$obj"; then
+	    xdir="."
+	  else
+	    xdir="$xdir"
+	  fi
+	  baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+	  oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+	  if test ! -f $xdir/$oldobj; then
+	    $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
+	    $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
+	  fi
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    eval cmds=\"$export_symbols_cmds\"
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      $show "$cmd"
+	      $run eval "$cmd" || exit $?
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex"; then
+	      $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+	      $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+	fi
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    $show "${rm}r $gentop"
+	    $run ${rm}r "$gentop"
+	    $show "mkdir $gentop"
+	    $run mkdir "$gentop"
+	    status=$?
+	    if test $status -ne 0 && test ! -d "$gentop"; then
+	      exit $status
+	    fi
+	    generated="$generated $gentop"
+
+	    for xlib in $convenience; do
+	      # Extract the objects.
+	      case $xlib in
+	      [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	      *) xabs=`pwd`"/$xlib" ;;
+	      esac
+	      xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	      xdir="$gentop/$xlib"
+
+	      $show "${rm}r $xdir"
+	      $run ${rm}r "$xdir"
+	      $show "mkdir $xdir"
+	      $run mkdir "$xdir"
+	      status=$?
+	      if test $status -ne 0 && test ! -d "$xdir"; then
+		exit $status
+	      fi
+	      $show "(cd $xdir && $AR x $xabs)"
+	      $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+	      libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+	    done
+	  fi
+	fi
+
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  linker_flags="$linker_flags $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	  eval cmds=\"$archive_expsym_cmds\"
+	else
+	  save_deplibs="$deplibs"
+	  for conv in $convenience; do
+	    tmp_deplibs=
+	    for test_deplib in $deplibs; do
+	      if test "$test_deplib" != "$conv"; then
+		tmp_deplibs="$tmp_deplibs $test_deplib"
+	      fi
+	    done
+	    deplibs="$tmp_deplibs"
+	  done
+	  eval cmds=\"$archive_cmds\"
+	  deplibs="$save_deplibs"
+	fi
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+	  exit 0
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+	if test -n "$objs$old_deplibs"; then
+	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+	  exit 1
+	fi
+	libobj="$output"
+	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+	else
+	  gentop="$output_objdir/${obj}x"
+	  $show "${rm}r $gentop"
+	  $run ${rm}r "$gentop"
+	  $show "mkdir $gentop"
+	  $run mkdir "$gentop"
+	  status=$?
+	  if test $status -ne 0 && test ! -d "$gentop"; then
+	    exit $status
+	  fi
+	  generated="$generated $gentop"
+
+	  for xlib in $convenience; do
+	    # Extract the objects.
+	    case $xlib in
+	    [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	    *) xabs=`pwd`"/$xlib" ;;
+	    esac
+	    xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	    xdir="$gentop/$xlib"
+
+	    $show "${rm}r $xdir"
+	    $run ${rm}r "$xdir"
+	    $show "mkdir $xdir"
+	    $run mkdir "$xdir"
+	    status=$?
+	    if test $status -ne 0 && test ! -d "$xdir"; then
+	      exit $status
+	    fi
+	    $show "(cd $xdir && $AR x $xabs)"
+	    $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+	    reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+	  done
+	fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      eval cmds=\"$reload_cmds\"
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	exit 0
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	$show "echo timestamp > $libobj"
+	$run eval "echo timestamp > $libobj" || exit $?
+	exit 0
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	eval cmds=\"$reload_cmds\"
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+      else
+	# Just create a symlink.
+	$show $rm $libobj
+	$run $rm $libobj
+	xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
+	if test "X$xdir" = "X$libobj"; then
+	  xdir="."
+	else
+	  xdir="$xdir"
+	fi
+	baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
+	oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+	$show "(cd $xdir && $LN_S $oldobj $baseobj)"
+	$run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
+      fi
+
+      if test -n "$gentop"; then
+	$show "${rm}r $gentop"
+	$run ${rm}r $gentop
+      fi
+
+      exit 0
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) output=`echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+	   test "$dlopen_self_static" = unknown; then
+	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+	fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	case $host in
+	*darwin*)
+	  # Don't allow lazy linking, it breaks C++ global constructors
+	  compile_command="$compile_command ${wl}-bind_at_load"
+	  finalize_command="$finalize_command ${wl}-bind_at_load"
+	  ;;
+	esac
+	;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	  dlsyms="${outputname}S.c"
+	else
+	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+	fi
+      fi
+
+      if test -n "$dlsyms"; then
+	case $dlsyms in
+	"") ;;
+	*.c)
+	  # Discover the nlist of each of the dlfiles.
+	  nlist="$output_objdir/${outputname}.nm"
+
+	  $show "$rm $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Parse the name list into a source file.
+	  $show "creating $output_objdir/$dlsyms"
+
+	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+	  if test "$dlself" = yes; then
+	    $show "generating symbol list for \`$output'"
+
+	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+	    # Add our own program objects to the symbol list.
+	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	    for arg in $progfiles; do
+	      $show "extracting global C symbols from \`$arg'"
+	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	    done
+
+	    if test -n "$exclude_expsyms"; then
+	      $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    if test -n "$export_symbols_regex"; then
+	      $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    # Prepare the list of exported symbols
+	    if test -z "$export_symbols"; then
+	      export_symbols="$output_objdir/$output.exp"
+	      $run $rm $export_symbols
+	      $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	    else
+	      $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
+	      $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
+	      $run eval 'mv "$nlist"T "$nlist"'
+	    fi
+	  fi
+
+	  for arg in $dlprefiles; do
+	    $show "extracting global C symbols from \`$arg'"
+	    name=`echo "$arg" | ${SED} -e 's%^.*/%%'`
+	    $run eval 'echo ": $name " >> "$nlist"'
+	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -z "$run"; then
+	    # Make sure we have at least an empty file.
+	    test -f "$nlist" || : > "$nlist"
+
+	    if test -n "$exclude_expsyms"; then
+	      egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	      $mv "$nlist"T "$nlist"
+	    fi
+
+	    # Try sorting and uniquifying the output.
+	    if grep -v "^: " < "$nlist" |
+		if sort -k 3 </dev/null >/dev/null 2>&1; then
+		  sort -k 3
+		else
+		  sort +2
+		fi |
+		uniq > "$nlist"S; then
+	      :
+	    else
+	      grep -v "^: " < "$nlist" > "$nlist"S
+	    fi
+
+	    if test -f "$nlist"S; then
+	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+	    else
+	      echo '/* NONE */' >> "$output_objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	  fi
+
+	  pic_flag_for_symtable=
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
+	    esac;;
+	  *-*-hpux*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DPIC";;
+	    esac
+	  esac
+
+	  # Now compile the dynamic symbol file.
+	  $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+	  $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+	  # Clean up the generated files.
+	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Transform the symbol file into the correct name.
+	  compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  ;;
+	*)
+	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+	  exit 1
+	  ;;
+	esac
+      else
+	# We keep going just in case the user didn't refer to
+	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+	# really was required.
+
+	# Nullify the symbol file.
+	compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+	finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test $need_relink = no || test "$build_libtool_libs" != yes; then
+	# Replace the output file specification.
+	compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	$show "$link_command"
+	$run eval "$link_command"
+	status=$?
+
+	# Delete the generated files.
+	if test -n "$dlsyms"; then
+	  $show "$rm $output_objdir/${outputname}S.${objext}"
+	  $run $rm "$output_objdir/${outputname}S.${objext}"
+	fi
+
+	exit $status
+      fi
+
+      if test -n "$shlibpath_var"; then
+	# We should set the shlibpath_var
+	rpath=
+	for dir in $temp_rpath; do
+	  case $dir in
+	  [\\/]* | [A-Za-z]:[\\/]*)
+	    # Absolute path.
+	    rpath="$rpath$dir:"
+	    ;;
+	  *)
+	    # Relative path: add a thisdir entry.
+	    rpath="$rpath\$thisdir/$dir:"
+	    ;;
+	  esac
+	done
+	temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$run $rm $output
+	# Link the executable and exit
+	$show "$link_command"
+	$run eval "$link_command" || exit $?
+	exit 0
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
+	case $0 in
+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
+	*) qecho="$SHELL `pwd`/$0 --fallback-echo";;
+	esac
+	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) output=`echo $output|${SED} 's,.exe$,,'` ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*) exeext=.exe ;;
+	  *) exeext= ;;
+	esac
+	$rm $output
+	trap "$rm $output; exit 1" 1 2 15
+
+	$echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+	$echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+	  echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$echo \"\$relink_command_output\" >&2
+	$rm \"\$progdir/\$file\"
+	exit 1
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+	else
+	  echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 ${SED}
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	# fixup the dll searchpath if we need to.
+	if test -n "$dllsearchpath"; then
+	  $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+	case $host in
+	# win32 systems need to use the prog path for dll
+	# lookup to work
+	*-*-cygwin* | *-*-pw32*)
+	  $echo >> $output "\
+      exec \$progdir/\$program \${1+\"\$@\"}
+"
+	  ;;
+
+	# Backslashes separate directories on plain windows
+	*-*-mingw | *-*-os2*)
+	  $echo >> $output "\
+      exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $echo >> $output "\
+      # Export the path to the program.
+      PATH=\"\$progdir:\$PATH\"
+      export PATH
+
+      exec \$program \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit 1
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+	chmod +x $output
+      fi
+      exit 0
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	$show "${rm}r $gentop"
+	$run ${rm}r "$gentop"
+	$show "mkdir $gentop"
+	$run mkdir "$gentop"
+	status=$?
+	if test $status -ne 0 && test ! -d "$gentop"; then
+	  exit $status
+	fi
+	generated="$generated $gentop"
+
+	# Add in members from convenience archives.
+	for xlib in $addlibs; do
+	  # Extract the objects.
+	  case $xlib in
+	  [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	  *) xabs=`pwd`"/$xlib" ;;
+	  esac
+	  xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	  xdir="$gentop/$xlib"
+
+	  $show "${rm}r $xdir"
+	  $run ${rm}r "$xdir"
+	  $show "mkdir $xdir"
+	  $run mkdir "$xdir"
+	  status=$?
+	  if test $status -ne 0 && test ! -d "$xdir"; then
+	    exit $status
+	  fi
+	  $show "(cd $xdir && $AR x $xabs)"
+	  $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+	  oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
+	done
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+	eval cmds=\"$old_archive_from_new_cmds\"
+      else
+	# Ensure that we have .o objects in place in case we decided
+	# not to build a shared library, and have fallen back to building
+	# static libs even though --disable-static was passed!
+	for oldobj in $oldobjs; do
+	  if test ! -f $oldobj; then
+	    xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
+	    if test "X$xdir" = "X$oldobj"; then
+	      xdir="."
+	    else
+	      xdir="$xdir"
+	    fi
+	    baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
+	    obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
+	    $show "(cd $xdir && ${LN_S} $obj $baseobj)"
+	    $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
+	  fi
+	done
+
+	eval cmds=\"$old_archive_cmds\"
+      fi
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args)"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		if test -z "$libdir"; then
+		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		  exit 1
+		fi
+		newdependency_libs="$newdependency_libs $libdir/$name"
+		;;
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit 1
+	      fi
+	      newdlfiles="$newdlfiles $libdir/$name"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit 1
+	      fi
+	      newdlprefiles="$newdlprefiles $libdir/$name"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $rm $output
+	  # place dlname in correct position for cygwin
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	  esac
+	  $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test $need_relink = yes; then
+	    $echo >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit 0
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg="$nonopt"
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+	files="$files $dest"
+	dest="$arg"
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) prev="-f" ;;
+      -g) prev="-g" ;;
+      -m) prev="-m" ;;
+      -o) prev="-o" ;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*) ;;
+
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  prev=
+	else
+	  dest="$arg"
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	$echo "$modename: no file or destination specified" 1>&2
+      else
+	$echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test $# -gt 2; then
+	$echo "$modename: \`$dest' is not a directory" 1>&2
+	$echo "$help" 1>&2
+	exit 1
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	staticlibs="$staticlibs $file"
+	;;
+
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+
+	library_names=
+	old_library=
+	relink_command=
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  esac
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+	test "X$dir" = "X$file/" && dir=
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  $echo "$modename: warning: relinking \`$file'" 1>&2
+	  $show "$relink_command"
+	  if $run eval "$relink_command"; then :
+	  else
+	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+	    continue
+	  fi
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names
+	if test -n "$2"; then
+	  realname="$2"
+	  shift
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  $show "$install_prog $dir/$srcname $destdir/$realname"
+	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+	  if test -n "$stripme" && test -n "$striplib"; then
+	    $show "$striplib $destdir/$realname"
+	    $run eval "$striplib $destdir/$realname" || exit $?
+	  fi
+
+	  if test $# -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    for linkname
+	    do
+	      if test "$linkname" != "$realname"; then
+		$show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+		$run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+	      fi
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  eval cmds=\"$postinstall_cmds\"
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+	fi
+
+	# Install the pseudo-library for information purposes.
+	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	instname="$dir/$name"i
+	$show "$install_prog $instname $destdir/$name"
+	$run eval "$install_prog $instname $destdir/$name" || exit $?
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	if test -n "$destfile"; then
+	  $show "$install_prog $file $destfile"
+	  $run eval "$install_prog $file $destfile" || exit $?
+	fi
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+	  $show "$install_prog $staticobj $staticdest"
+	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+	fi
+	exit 0
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin*|*mingw*)
+	    wrapper=`echo $file | ${SED} -e 's,.exe$,,'`
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if (${SED} -e '4q' $wrapper | egrep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $wrapper ;;
+	  *) . ./$wrapper ;;
+	  esac
+
+	  # Check the variables that should have been set.
+	  if test -z "$notinst_deplibs"; then
+	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+	    exit 1
+	  fi
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      # If there is no directory component, then add one.
+	      case $lib in
+	      */* | *\\*) . $lib ;;
+	      *) . ./$lib ;;
+	      esac
+	    fi
+	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $wrapper ;;
+	  *) . ./$wrapper ;;
+	  esac
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    if test "$finalize" = yes && test -z "$run"; then
+	      tmpdir="/tmp"
+	      test -n "$TMPDIR" && tmpdir="$TMPDIR"
+	      tmpdir="$tmpdir/libtool-$$"
+	      if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
+	      else
+		$echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+		continue
+	      fi
+	      file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	      outputname="$tmpdir/$file"
+	      # Replace the output file specification.
+	      relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+	      $show "$relink_command"
+	      if $run eval "$relink_command"; then :
+	      else
+		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+		${rm}r "$tmpdir"
+		continue
+	      fi
+	      file="$outputname"
+	    else
+	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
+	    fi
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyways
+	case $install_prog,$host in
+	/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    destfile=`echo $destfile | ${SED} -e 's,.exe$,,'`
+	    ;;
+	  esac
+	  ;;
+	esac
+	$show "$install_prog$stripme $file $destfile"
+	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+	test -n "$outputname" && ${rm}r "$tmpdir"
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$striplib"; then
+	$show "$old_striplib $oldlib"
+	$run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      eval cmds=\"$old_postinstall_cmds\"
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $0 --finish$current_libdirs'
+    else
+      exit 0
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+	libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  eval cmds=\"$finish_cmds\"
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+	  done
+	  IFS="$save_ifs"
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = ":" && exit 0
+
+    echo "----------------------------------------------------------------------"
+    echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      echo "   $libdir"
+    done
+    echo
+    echo "If you ever happen to want to link against installed libraries"
+    echo "in a given directory, LIBDIR, you must either use libtool, and"
+    echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    echo
+    echo "See any operating system documentation about shared libraries for"
+    echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    echo "----------------------------------------------------------------------"
+    exit 0
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit 1
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+	$echo "$modename: \`$file' is not a file" 1>&2
+	$echo "$help" 1>&2
+	exit 1
+      fi
+
+      dir=
+      case $file in
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+	  exit 1
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+	;;
+
+      *)
+	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved enviroment variables
+      if test "${save_LC_ALL+set}" = set; then
+	LC_ALL="$save_LC_ALL"; export LC_ALL
+      fi
+      if test "${save_LANG+set}" = set; then
+	LANG="$save_LANG"; export LANG
+      fi
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+	$echo "export $shlibpath_var"
+      fi
+      $echo "$cmd$args"
+      exit 0
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    rmdirs=
+
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+	dir=.
+	objdir="$objdir"
+      else
+	objdir="$dir/$objdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test $mode = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test $mode = clean; then
+	case " $rmdirs " in
+	  *" $objdir "*) ;;
+	  *) rmdirs="$rmdirs $objdir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+	|| (test -h "$file") >/dev/null 2>&1 \
+	|| test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  . $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    rmfiles="$rmfiles $objdir/$n"
+	  done
+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+	  test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+	  if test $mode = uninstall; then
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      eval cmds=\"$postuninstall_cmds\"
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test $? != 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      eval cmds=\"$old_postuninstall_cmds\"
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test $? != 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	  fi
+	fi
+	;;
+
+      *.lo)
+	if test "$build_old_libs" = yes; then
+	  oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
+	  rmfiles="$rmfiles $dir/$oldobj"
+	fi
+	;;
+
+      *)
+	# Do a test to see if this is a libtool program.
+	if test $mode = clean &&
+	   (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  relink_command=
+	  . $dir/$file
+
+	  rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	  if test "$fast_install" = yes && test -n "$relink_command"; then
+	    rmfiles="$rmfiles $objdir/lt-$name"
+	  fi
+	fi
+	;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	$show "rmdir $dir"
+	$run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit 1
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit 1
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit 1
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE."
+  exit 0
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+		    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+		    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+		    specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+  ;;
+esac
+
+echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit 0
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/Win32/WinCVODE/sundials/config/sundials_config.h b/Win32/WinCVODE/sundials/config/sundials_config.h
new file mode 100644
index 0000000..d0285c0
--- /dev/null
+++ b/Win32/WinCVODE/sundials/config/sundials_config.h
@@ -0,0 +1,33 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:11:25 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2005, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ *------------------------------------------------------------------
+ * SUNDIALS configuration header file
+ *------------------------------------------------------------------
+ */
+
+/* Define SUNDIALS version number */
+#define SUNDIALS_PACKAGE_VERSION "2.1.1"
+
+/* FCMIX: Define Fortran name-mangling macro */
+
+
+/* FCMIX: Define case of function names */
+
+
+/* FCMIX: Define number of underscores to append to function names */
+
+
+/* Define precision of SUNDIALS data type 'realtype' */
+#define SUNDIALS_DOUBLE_PRECISION 1
+
+/* Use generic math functions */
+#define SUNDIALS_USE_GENERIC_MATH 1
diff --git a/Win32/WinCVODE/sundials/config/sundials_config.in b/Win32/WinCVODE/sundials/config/sundials_config.in
new file mode 100644
index 0000000..b94dc70
--- /dev/null
+++ b/Win32/WinCVODE/sundials/config/sundials_config.in
@@ -0,0 +1,33 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:11:25 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2005, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ *------------------------------------------------------------------
+ * SUNDIALS configuration header file
+ *------------------------------------------------------------------
+ */
+
+/* Define SUNDIALS version number */
+#define SUNDIALS_PACKAGE_VERSION "@PACKAGE_VERSION@"
+
+/* FCMIX: Define Fortran name-mangling macro */
+ at F77_MANGLE_MACRO@
+
+/* FCMIX: Define case of function names */
+ at F77_CASE@
+
+/* FCMIX: Define number of underscores to append to function names */
+ at F77_UNDERSCORES@
+
+/* Define precision of SUNDIALS data type 'realtype' */
+ at PRECISION_LEVEL@
+
+/* Use generic math functions */
+ at GENERIC_MATH_LIB@
diff --git a/Win32/WinCVODE/sundials/configure b/Win32/WinCVODE/sundials/configure
new file mode 100755
index 0000000..840713b
--- /dev/null
+++ b/Win32/WinCVODE/sundials/configure
@@ -0,0 +1,14986 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.59 for SUNDIALS 2.1.1.
+#
+# Report bugs to <radu at llnl.gov>.
+#
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+#
+#
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/shared/LICENSE.
+#
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+# Find the correct PATH separator.  Usually this is `:', but
+# DJGPP uses `;' like DOS.
+if test "X${PATH_SEPARATOR+set}" != Xset; then
+  UNAME=${UNAME-`uname 2>/dev/null`}
+  case X$UNAME in
+    *-DOS) lt_cv_sys_path_separator=';' ;;
+    *)     lt_cv_sys_path_separator=':' ;;
+  esac
+  PATH_SEPARATOR=$lt_cv_sys_path_separator
+fi
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  IFS="${IFS= 	}"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+	 test "X$echo_testing_string" = "X$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+	  then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "$0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME='SUNDIALS'
+PACKAGE_TARNAME='sundials'
+PACKAGE_VERSION='2.1.1'
+PACKAGE_STRING='SUNDIALS 2.1.1'
+PACKAGE_BUGREPORT='radu at llnl.gov'
+
+ac_unique_file="shared/source/nvector.c"
+ac_default_prefix=`pwd`
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+#  include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os SET_MAKE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CC CFLAGS LDFLAGS CPPFL [...]
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    eval "enable_$ac_feature=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_$ac_feature='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_$ac_package='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar='$ac_optarg'"
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+	      localstatedir libdir includedir oldincludedir infodir mandir
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$0" : 'X\(//\)[^/]' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+  fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+   { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+ac_env_F77_set=${F77+set}
+ac_env_F77_value=$F77
+ac_cv_env_F77_set=${F77+set}
+ac_cv_env_F77_value=$F77
+ac_env_FFLAGS_set=${FFLAGS+set}
+ac_env_FFLAGS_value=$FFLAGS
+ac_cv_env_FFLAGS_set=${FFLAGS+set}
+ac_cv_env_FFLAGS_value=$FFLAGS
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures SUNDIALS 2.1.1 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+  cat <<_ACEOF
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+			  [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+			  [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --infodir=DIR          info documentation [PREFIX/info]
+  --mandir=DIR           man documentation [PREFIX/man]
+_ACEOF
+
+  cat <<\_ACEOF
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of SUNDIALS 2.1.1:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-cvode         disable configuration of CVODE
+  --disable-cvodes        disable configuration of CVODES
+  --disable-ida           disable configuration of IDA
+  --disable-kinsol        disable configuration of KINSOL
+  --disable-examples      disable configuration of examples
+  --disable-f77           disable Fortran support
+  --disable-mpi           disable MPI support
+  --enable-shared=PKGS  build shared libraries default=no
+  --enable-static=PKGS  build static libraries default=yes
+  --enable-fast-install=PKGS  optimize for fast installation default=yes
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+
+  --with-precision=ARG    specify floating-point precision
+                          (single/double/extended) [double]
+
+  --with-cflags           add extra C compiler flags
+  --with-cppflags         add extra C/C++ preprocessor flags
+  --with-ldflags          add extra linker flags
+  --with-libs             add extra libraries
+  --with-f77underscore=ARG
+                          specify number of underscores to append to function
+                          names (none/one/two) [AUTO]
+  --with-f77case=ARG      specify case of function names (lower/upper) [AUTO]
+  --with-fflags           add extra Fortran compiler flags
+
+  --with-mpi-root=MPIROOT use MPI root directory
+  --with-mpi-incdir=DIR   MPI include directory [MPIROOT/include]
+  --with-mpi-libdir=DIR   MPI library directory [MPIROOT/lib]
+  --with-mpi-libs=ARG     MPI libraries [-lmpi]
+  --with-mpi-flags        MPI-specific flags
+  --with-mpicc[=ARG]      specify MPI-C compiler to use [mpicc]
+  --with-mpif77[=ARG]     specify MPI-Fortran compiler to use [mpif77]
+  --with-gnu-ld           assume the C compiler uses GNU ld default=no
+  --with-pic              try to use only PIC/non-PIC objects default=use both
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+              headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 compiler flags
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <radu at llnl.gov>.
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=`pwd`
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d $ac_dir || continue
+    ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+    cd $ac_dir
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_srcdir/configure.gnu; then
+      echo
+      $SHELL $ac_srcdir/configure.gnu  --help=recursive
+    elif test -f $ac_srcdir/configure; then
+      echo
+      $SHELL $ac_srcdir/configure  --help=recursive
+    elif test -f $ac_srcdir/configure.ac ||
+	   test -f $ac_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi
+    cd $ac_popdir
+  done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\_ACEOF
+SUNDIALS configure 2.1.1
+generated by GNU Autoconf 2.59
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+
+
+Copyright (c) 2002, The Regents of the University of California.
+Produced at the Lawrence Livermore National Laboratory.
+All rights reserved.
+For details, see sundials/shared/LICENSE.
+
+_ACEOF
+  exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by SUNDIALS $as_me 2.1.1, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+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 || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+      # Get rid of the leading space.
+      ac_sep=" "
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      sed -n \
+	"s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+}
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=$`echo $ac_var`
+      echo "$ac_var='"'"'$ac_val'"'"'"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=$`echo $ac_var`
+	echo "$ac_var='"'"'$ac_val'"'"'"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      sed "/^$/d" confdefs.h | sort
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      echo "$as_me: caught signal $ac_signal"
+    echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core &&
+  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+	       sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+  eval ac_new_val="\$ac_env_${ac_var}_value"
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+	ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_linkonly='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_objext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Display greeting
+
+
+# Say Hi!
+echo "
+---------------------------------
+Running SUNDIALS Configure Script
+---------------------------------
+"
+
+
+
+# Miscellaneous SUNDIALS initializations
+
+
+# Specify directory containing auxillary build tools and M4 files
+ac_aux_dir=
+for ac_dir in config $srcdir/config; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f $ac_dir/shtool; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config $srcdir/config" >&5
+echo "$as_me: error: cannot find install-sh or install.sh in config $srcdir/config" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+
+# Make input filename DOS compatible (change config.h.in to config.hin)
+          ac_config_headers="$ac_config_headers config.h:config.hin"
+
+
+# Make user aware of copyright notice (input COPYRIGHT information)
+
+
+# Specify root of source tree
+# Given file is guaranteed to exist in all SUNDIALS packages
+
+
+# Get host information
+# AC_CANONICAL_BUILD defines the following variables: build, build_cpu,
+# build_vendor, and build_os
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+  ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+# AC_CANONICAL_HOST defines the following variables: host, host_cpu,
+# host_vendor, and host_os
+echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+  ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+
+# Overwrite default installation path (/usr/local)
+# DEFAULT_PREFIX is defined for later use
+DEFAULT_PREFIX=`pwd`
+
+
+# Set MAKE if necessary
+# Must include @SET_MAKE@ in each Makefile.in file
+# AC_SUBST is called automatically for SET_MAKE
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\_ACEOF
+all:
+	@echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  SET_MAKE=
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+
+# Defines INSTALL (sets to path of "install" program)
+# Also sets INSTALL_PROGRAM and INSTALL_SCRIPT
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	    break 3
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+done
+
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+# Set CC to default value
+if test "X${CC}" = "X"; then
+  CC="cc"
+fi
+
+# Unfortunately, autoconf gets confused if F77 is undefined (it tries
+# to test the compiler before it actually searches for the compiler)
+if test "X${F77}" = "X"; then
+  F77="f77"
+fi
+
+# Allow user to override default flags if corresponding environment
+# variable is already defined
+if test "X${CFLAGS}" = "X"; then
+  CFLAGS_USER_OVERRIDE="no"
+else
+  CFLAGS_USER_OVERRIDE="yes"
+fi
+if test "X${CXXFLAGS}" = "X"; then
+  CXXFLAGS_USER_OVERRIDE="no"
+else
+  CXXFLAGS_USER_OVERRIDE="yes"
+fi
+if test "X${FFLAGS}" = "X"; then
+  FFLAGS_USER_OVERRIDE="no"
+else
+  FFLAGS_USER_OVERRIDE="yes"
+fi
+if test "X${FLIBS}" = "X"; then
+  FLIBS_USER_OVERRIDE="no"
+else
+  FLIBS_USER_OVERRIDE="yes"
+fi
+
+# Set defaults for config/sundials_config.in file
+F77_MANGLE_MACRO=""
+F77_CASE=""
+F77_UNDERSCORES=""
+PRECISION_LEVEL=""
+GENERIC_MATH_LIB=""
+
+
+
+# Test enable/disable features
+
+
+# Check if user wants to disable CVODE module
+# If not, then make certain source directory actually exists
+# Check whether --enable-cvode or --disable-cvode was given.
+if test "${enable_cvode+set}" = set; then
+  enableval="$enable_cvode"
+
+if test "X${enableval}" = "Xno"; then
+  CVODE_ENABLED="no"
+fi
+
+else
+
+if test -d ${srcdir}/cvode ; then
+  CVODE_ENABLED="yes"
+else
+  CVODE_ENABLED="no"
+fi
+
+fi;
+
+# Check if user wants to disable CVODES module
+# If not, then make certain source directory actually exists
+# Check whether --enable-cvodes or --disable-cvodes was given.
+if test "${enable_cvodes+set}" = set; then
+  enableval="$enable_cvodes"
+
+if test "X${enableval}" = "Xno"; then
+  CVODES_ENABLED="no"
+fi
+
+else
+
+if test -d ${srcdir}/cvodes ; then
+  CVODES_ENABLED="yes"
+else
+  CVODES_ENABLED="no"
+fi
+
+fi;
+
+# Check if user wants to disable IDA module
+# If not, then make certain source directory actually exists
+# Check whether --enable-ida or --disable-ida was given.
+if test "${enable_ida+set}" = set; then
+  enableval="$enable_ida"
+
+if test "X${enableval}" = "Xno"; then
+  IDA_ENABLED="no"
+fi
+
+else
+
+if test -d ${srcdir}/ida  ; then
+  IDA_ENABLED="yes"
+else
+  IDA_ENABLED="no"
+fi
+
+fi;
+
+# Check if user wants to disable KINSOL MODULE
+# If not, then make certain source directory actually exists
+# Check whether --enable-kinsol or --disable-kinsol was given.
+if test "${enable_kinsol+set}" = set; then
+  enableval="$enable_kinsol"
+
+if test "X${enableval}" = "Xno"; then
+  KINSOL_ENABLED="no"
+fi
+
+else
+
+if test -d ${srcdir}/kinsol ; then
+  KINSOL_ENABLED="yes"
+else
+  KINSOL_ENABLED="no"
+fi
+
+fi;
+
+# Check if user wants to disable all examples
+# Examples are built by default
+EXAMPLES_ENABLED="yes"
+# Check whether --enable-examples or --disable-examples was given.
+if test "${enable_examples+set}" = set; then
+  enableval="$enable_examples"
+
+if test "X${enableval}" = "Xno"; then
+  EXAMPLES_ENABLED="no"
+fi
+
+fi;
+
+# Check if user wants to disable Fortran support (FCMIX components)
+F77_ENABLED="yes"
+# Check whether --enable-f77 or --disable-f77 was given.
+if test "${enable_f77+set}" = set; then
+  enableval="$enable_f77"
+
+if test "X${enableval}" = "Xno"; then
+  F77_ENABLED="no"
+  FCMIX_ENABLED="no"
+fi
+
+else
+
+if test "X${CVODE_ENABLED}" = "Xno" && test "X${KINSOL_ENABLED}" = "Xno"; then
+  F77_ENABLED="no"
+  FCMIX_ENABLED="no"
+else
+  if test "X${EXAMPLES_ENABLED}" = "Xno"; then
+    F77_ENABLED="no"
+    FCMIX_ENABLED="yes"
+  else
+    F77_ENABLED="yes"
+    FCMIX_ENABLED="yes"
+  fi
+fi
+
+fi;
+
+# Initialize variables that may NOT necessarily be initialized
+# during normal execution
+# Should NOT use uninitialized variables
+CXX_ENABLED="no"
+IDAS_ENABLED="no"
+MPI_ENABLED="no"
+CXX_OK="no"
+F77_OK="no"
+MPI_CXX_COMP_OK="no"
+MPI_F77_COMP_OK="no"
+
+
+
+
+# Check if user wants to disable support for MPI
+# If not, then make certain source directory actually exists
+# Check whether --enable-mpi or --disable-mpi was given.
+if test "${enable_mpi+set}" = set; then
+  enableval="$enable_mpi"
+
+if test "X${enableval}" = "Xno"; then
+  MPI_ENABLED="no"
+fi
+
+else
+
+if test -d ${srcdir}/nvec_par ; then
+  MPI_ENABLED="yes"
+else
+  MPI_ENABLED="no"
+fi
+
+fi;
+
+
+
+# Set C compilation
+
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+# Default is C programming language (initialize language stack)
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_linkonly='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_objext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# Check whether --with- or --without- was given.
+if test "${with_+set}" = set; then
+  withval="$with_"
+
+fi;
+
+# Set floating-point precision: single   [C type 'float']
+#                               double   [C type 'double'] (default)
+#                               extended [C type 'long double']
+# Provide variable description templates for config.hin and config.h files
+# Required by autoheader utility
+
+
+
+
+
+
+
+echo "$as_me:$LINENO: checking floating-point data type to use" >&5
+echo $ECHO_N "checking floating-point data type to use... $ECHO_C" >&6
+
+# Check whether --with-precision or --without-precision was given.
+if test "${with_precision+set}" = set; then
+  withval="$with_precision"
+
+if test "X${withval}" = "Xsingle"; then
+  echo "$as_me:$LINENO: result: float" >&5
+echo "${ECHO_T}float" >&6
+  cat >>confdefs.h <<\_ACEOF
+#define SUNDIALS_SINGLE_PRECISION 1
+_ACEOF
+
+  FLOAT_TYPE="single"
+  PRECISION_LEVEL="#define SUNDIALS_SINGLE_PRECISION 1"
+elif test "X${withval}" = "Xdouble"; then
+  echo "$as_me:$LINENO: result: double" >&5
+echo "${ECHO_T}double" >&6
+  cat >>confdefs.h <<\_ACEOF
+#define SUNDIALS_DOUBLE_PRECISION 1
+_ACEOF
+
+  FLOAT_TYPE="double"
+  PRECISION_LEVEL="#define SUNDIALS_DOUBLE_PRECISION 1"
+elif test "X${withval}" = "Xextended"; then
+  echo "$as_me:$LINENO: result: long double" >&5
+echo "${ECHO_T}long double" >&6
+  cat >>confdefs.h <<\_ACEOF
+#define SUNDIALS_EXTENDED_PRECISION 1
+_ACEOF
+
+  FLOAT_TYPE="extended"
+  PRECISION_LEVEL="#define SUNDIALS_EXTENDED_PRECISION 1"
+else
+  { { echo "$as_me:$LINENO: error: invalid input" >&5
+echo "$as_me: error: invalid input" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+else
+
+# Use 'double' by default
+echo "$as_me:$LINENO: result: double" >&5
+echo "${ECHO_T}double" >&6
+cat >>confdefs.h <<\_ACEOF
+#define SUNDIALS_DOUBLE_PRECISION 1
+_ACEOF
+
+FLOAT_TYPE="double"
+PRECISION_LEVEL="#define SUNDIALS_DOUBLE_PRECISION 1"
+
+fi;
+
+
+# Check whether --with- or --without- was given.
+if test "${with_+set}" = set; then
+  withval="$with_"
+
+fi;
+
+USER_CC="${CC}"
+# unset is NOT portable so just undefine/unset CC by setting to "" (NULL)
+CC=""
+
+# Defines CC and sets GCC="yes" if CC="gcc"
+# Search for C compiler given by user first
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_linkonly='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_objext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in ${USER_CC} cc gcc
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in ${USER_CC} cc gcc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CC" && break
+done
+
+  CC=$ac_ct_CC
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+  (eval $ac_link_default) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Find the output, starting from the most likely.  This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+	;;
+    conftest.$ac_ext )
+	# This is the source file.
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	# FIXME: I believe we export ac_cv_exeext for Libtool,
+	# but it would be cool to find out if it's true.  Does anybody
+	# maintain Libtool? --akim.
+	export ac_cv_exeext
+	break;;
+    * )
+	break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  export ac_cv_exeext
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std1 is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std1.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX			-qlanglvl=ansi
+# Ultrix and OSF/1	-std1
+# HP-UX 10.20 and later	-Ae
+# HP-UX older versions	-Aa -D_HPUX_SOURCE
+# SVR4			-Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno)
+    echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+  *)
+    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+    CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C.  Since we use `exit',
+# in C++ we need to declare it.  In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+  choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  for ac_declaration in \
+   '' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_linkonly='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_objext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# If CC="" then abort (means did NOT find a valid C compiler)
+if test "X${CC}" = "X"; then
+  { { echo "$as_me:$LINENO: error: cannot find C compiler" >&5
+echo "$as_me: error: cannot find C compiler" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# Determine absolute pathname for specified C compiler
+CC_TEMP1="${CC}"
+CC_TEMP2=`basename "${CC}"`
+CC_EXEC="${CC_TEMP2}"
+# If only the executable name was given, then determine absolute pathname
+if test "X${CC_TEMP1}" = "X${CC_TEMP2}"; then
+  # Extract the first word of "${CC}", so it can be a program name with args.
+set dummy ${CC}; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_CC_COMP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $CC_COMP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CC_COMP="$CC_COMP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_CC_COMP="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_CC_COMP" && ac_cv_path_CC_COMP="none"
+  ;;
+esac
+fi
+CC_COMP=$ac_cv_path_CC_COMP
+
+if test -n "$CC_COMP"; then
+  echo "$as_me:$LINENO: result: $CC_COMP" >&5
+echo "${ECHO_T}$CC_COMP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  # We already know the C compiler exists, so this test is provided only
+  # for the sake of completeness
+  if test "X${CC_COMP}" = "Xnone"; then
+    CC="${CC_TEMP1}"
+  else
+    CC="${CC_COMP}"
+  fi
+fi
+
+echo "$as_me:$LINENO: checking for extra C compiler flags" >&5
+echo $ECHO_N "checking for extra C compiler flags... $ECHO_C" >&6
+
+# Check whether --with-cflags or --without-cflags was given.
+if test "${with_cflags+set}" = set; then
+  withval="$with_cflags"
+
+echo "$as_me:$LINENO: result: ${withval}" >&5
+echo "${ECHO_T}${withval}" >&6
+USER_CFLAGS="${withval}"
+
+else
+
+echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+USER_CFLAGS=""
+
+fi;
+
+# Set CPP to command that runs C preprocessor
+# Defines CPP
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_linkonly='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_objext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_linkonly='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_objext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+echo "$as_me:$LINENO: checking for extra C/C++ preprocessor flags" >&5
+echo $ECHO_N "checking for extra C/C++ preprocessor flags... $ECHO_C" >&6
+
+# Check whether --with-cppflags or --without-cppflags was given.
+if test "${with_cppflags+set}" = set; then
+  withval="$with_cppflags"
+
+echo "$as_me:$LINENO: result: ${withval}" >&5
+echo "${ECHO_T}${withval}" >&6
+if test "X${CPPFLAGS}" = "X"; then
+  CPPFLAGS="${withval}"
+else
+  CPPFLAGS="${CPPFLAGS} ${withval}"
+fi
+
+else
+
+echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+
+fi;
+
+# Add default flag(s) to CFLAGS only if not already defined
+if test "X${CFLAGS_USER_OVERRIDE}" = "Xno"; then
+
+
+# Specify "-ffloat-store" flag if using gcc on an IA-32 system (recommended)
+case $host in
+
+  # IA-32 system running Linux
+  i*-pc-linux-*)
+
+    if test "X${GCC}" = "Xyes"; then
+      if test "X${CFLAGS}" = "X"; then
+        # If user wants extra precision (long double), then let program store
+        # floating-point values in registers
+        if test "X${FLOAT_TYPE}" = "Xsingle" || test "X${FLOAT_TYPE}" = "Xdouble"; then
+          CFLAGS="-ffloat-store"
+        fi
+      else
+        # If user wants extra precision (long double), then let program store
+        # floating-point values in registers
+        if test "X${FLOAT_TYPE}" = "Xsingle" || test "X${FLOAT_TYPE}" = "Xdouble"; then
+          CFLAGS="${CFLAGS} -ffloat-store"
+        fi
+      fi
+    fi
+
+  ;;
+
+esac
+
+
+fi
+
+if test "X${USER_CFLAGS}" = "X"; then
+  CFLAGS="${CFLAGS}"
+else
+  CFLAGS="${CFLAGS} ${USER_CFLAGS}"
+fi
+
+echo "$as_me:$LINENO: checking for extra linker flags" >&5
+echo $ECHO_N "checking for extra linker flags... $ECHO_C" >&6
+
+# Check whether --with-ldflags or --without-ldflags was given.
+if test "${with_ldflags+set}" = set; then
+  withval="$with_ldflags"
+
+echo "$as_me:$LINENO: result: ${withval}" >&5
+echo "${ECHO_T}${withval}" >&6
+if test "X${LDFLAGS}" = "X"; then
+  LDFLAGS="${withval}"
+else
+  LDFLAGS="${LDFLAGS} ${withval}"
+fi
+
+else
+
+echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+
+fi;
+
+echo "$as_me:$LINENO: checking for extra libraries" >&5
+echo $ECHO_N "checking for extra libraries... $ECHO_C" >&6
+
+# Check whether --with-libs or --without-libs was given.
+if test "${with_libs+set}" = set; then
+  withval="$with_libs"
+
+echo "$as_me:$LINENO: result: ${withval}" >&5
+echo "${ECHO_T}${withval}" >&6
+if test "X${LIBS}" = "X"; then
+  LIBS="${withval}"
+else
+  LIBS="${LIBS} ${withval}"
+fi
+
+else
+
+echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+
+fi;
+
+# Defines STDC_HEADERS if the following header files are found: stdlib.h,
+# stdarg.h, string.h, and float.h
+# We really only need stdlib.h and float.h
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      exit(2);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+
+
+
+
+for ac_header in stdlib.h float.h math.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## ---------------------------- ##
+## Report this to radu at llnl.gov ##
+## ---------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+# Set flag indicating if generic function names should be used
+# Provide variable description template for config.hin and config.h files
+# Required by autoheader utility
+
+
+
+# Check if math library contains abs(), fabs(), pow(), and sqrt() functions (required)
+# May update LIBS (meaning add additional library, namely libm)
+MATH_FABS_OK="yes"
+MATH_POW_OK="yes"
+MATH_SQRT_OK="yes"
+# Save copy of LIBS variable and unset LIBS
+SAVED_LIBS="${LIBS}"
+LIBS=""
+# The abs routine is defined for an integer argument, so check for it regardless of
+# the level of precision chosen
+
+echo "$as_me:$LINENO: checking for abs in -lm" >&5
+echo $ECHO_N "checking for abs in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_abs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char abs ();
+int
+main ()
+{
+abs ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_abs=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_abs=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_abs" >&5
+echo "${ECHO_T}$ac_cv_lib_m_abs" >&6
+if test $ac_cv_lib_m_abs = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+else
+  { { echo "$as_me:$LINENO: error: cannot find abs function" >&5
+echo "$as_me: error: cannot find abs function" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+TEMP_MATH_LIB="${LIBS}"
+LIBS=""
+# Check for single-precision math routines
+if test "X${FLOAT_TYPE}" = "Xsingle"; then
+
+echo "$as_me:$LINENO: checking for fabsf in -lm" >&5
+echo $ECHO_N "checking for fabsf in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_fabsf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char fabsf ();
+int
+main ()
+{
+fabsf ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_fabsf=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_fabsf=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_fabsf" >&5
+echo "${ECHO_T}$ac_cv_lib_m_fabsf" >&6
+if test $ac_cv_lib_m_fabsf = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+else
+  MATH_FABS_OK="no"
+fi
+
+
+echo "$as_me:$LINENO: checking for powf in -lm" >&5
+echo $ECHO_N "checking for powf in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_powf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char powf ();
+int
+main ()
+{
+powf ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_powf=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_powf=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_powf" >&5
+echo "${ECHO_T}$ac_cv_lib_m_powf" >&6
+if test $ac_cv_lib_m_powf = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+else
+  MATH_POW_OK="no"
+fi
+
+
+echo "$as_me:$LINENO: checking for sqrtf in -lm" >&5
+echo $ECHO_N "checking for sqrtf in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_sqrtf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char sqrtf ();
+int
+main ()
+{
+sqrtf ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_sqrtf=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_sqrtf=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_sqrtf" >&5
+echo "${ECHO_T}$ac_cv_lib_m_sqrtf" >&6
+if test $ac_cv_lib_m_sqrtf = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+else
+  MATH_SQRT_OK="no"
+fi
+
+# Check for extended-precision math routines
+elif test "X${FLOAT_TYPE}" = "Xextended"; then
+
+echo "$as_me:$LINENO: checking for fabsl in -lm" >&5
+echo $ECHO_N "checking for fabsl in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_fabsl+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char fabsl ();
+int
+main ()
+{
+fabsl ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_fabsl=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_fabsl=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_fabsl" >&5
+echo "${ECHO_T}$ac_cv_lib_m_fabsl" >&6
+if test $ac_cv_lib_m_fabsl = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+else
+  MATH_FABS_OK="no"
+fi
+
+
+echo "$as_me:$LINENO: checking for powl in -lm" >&5
+echo $ECHO_N "checking for powl in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_powl+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char powl ();
+int
+main ()
+{
+powl ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_powl=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_powl=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_powl" >&5
+echo "${ECHO_T}$ac_cv_lib_m_powl" >&6
+if test $ac_cv_lib_m_powl = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+else
+  MATH_POW_OK="no"
+fi
+
+
+echo "$as_me:$LINENO: checking for sqrtl in -lm" >&5
+echo $ECHO_N "checking for sqrtl in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_sqrtl+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char sqrtl ();
+int
+main ()
+{
+sqrtl ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_sqrtl=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_sqrtl=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_sqrtl" >&5
+echo "${ECHO_T}$ac_cv_lib_m_sqrtl" >&6
+if test $ac_cv_lib_m_sqrtl = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+else
+  MATH_SQRT_OK="no"
+fi
+
+# Check for (generic) double-precision math routines
+elif test "X${FLOAT_TYPE}" = "Xdouble"; then
+
+echo "$as_me:$LINENO: checking for fabs in -lm" >&5
+echo $ECHO_N "checking for fabs in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_fabs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char fabs ();
+int
+main ()
+{
+fabs ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_fabs=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_fabs=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_fabs" >&5
+echo "${ECHO_T}$ac_cv_lib_m_fabs" >&6
+if test $ac_cv_lib_m_fabs = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+else
+  { { echo "$as_me:$LINENO: error: cannot find fabs function" >&5
+echo "$as_me: error: cannot find fabs function" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+echo "$as_me:$LINENO: checking for pow in -lm" >&5
+echo $ECHO_N "checking for pow in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_pow+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char pow ();
+int
+main ()
+{
+pow ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_pow=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_pow=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_pow" >&5
+echo "${ECHO_T}$ac_cv_lib_m_pow" >&6
+if test $ac_cv_lib_m_pow = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+else
+  { { echo "$as_me:$LINENO: error: cannot find pow function" >&5
+echo "$as_me: error: cannot find pow function" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+echo "$as_me:$LINENO: checking for sqrt in -lm" >&5
+echo $ECHO_N "checking for sqrt in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_sqrt+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char sqrt ();
+int
+main ()
+{
+sqrt ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_sqrt=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_sqrt=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_sqrt" >&5
+echo "${ECHO_T}$ac_cv_lib_m_sqrt" >&6
+if test $ac_cv_lib_m_sqrt = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+else
+  { { echo "$as_me:$LINENO: error: cannot find sqrt function" >&5
+echo "$as_me: error: cannot find sqrt function" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+fi
+# If cannot find precision-specific implementations, then check for generic versions
+if test "X${MATH_FABS_OK}" = "Xno" || test "X${MATH_POW_OK}" = "Xno" || test "X${MATH_SQRT_OK}" = "Xno"; then
+
+echo "$as_me:$LINENO: checking for fabs in -lm" >&5
+echo $ECHO_N "checking for fabs in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_fabs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char fabs ();
+int
+main ()
+{
+fabs ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_fabs=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_fabs=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_fabs" >&5
+echo "${ECHO_T}$ac_cv_lib_m_fabs" >&6
+if test $ac_cv_lib_m_fabs = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+else
+  { { echo "$as_me:$LINENO: error: cannot find fabs function" >&5
+echo "$as_me: error: cannot find fabs function" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+echo "$as_me:$LINENO: checking for pow in -lm" >&5
+echo $ECHO_N "checking for pow in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_pow+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char pow ();
+int
+main ()
+{
+pow ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_pow=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_pow=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_pow" >&5
+echo "${ECHO_T}$ac_cv_lib_m_pow" >&6
+if test $ac_cv_lib_m_pow = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+else
+  { { echo "$as_me:$LINENO: error: cannot find pow function" >&5
+echo "$as_me: error: cannot find pow function" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+echo "$as_me:$LINENO: checking for sqrt in -lm" >&5
+echo $ECHO_N "checking for sqrt in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_sqrt+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char sqrt ();
+int
+main ()
+{
+sqrt ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_sqrt=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_sqrt=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_sqrt" >&5
+echo "${ECHO_T}$ac_cv_lib_m_sqrt" >&6
+if test $ac_cv_lib_m_sqrt = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+else
+  { { echo "$as_me:$LINENO: error: cannot find sqrt function" >&5
+echo "$as_me: error: cannot find sqrt function" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+  # If all generic math routines are available, then set SUNDIALS_USE_GENERIC_MATH flag
+  # for use by shared/source/sundialsmath.c file (preprocessor macros)
+  cat >>confdefs.h <<\_ACEOF
+#define SUNDIALS_USE_GENERIC_MATH 1
+_ACEOF
+
+  GENERIC_MATH_LIB="#define SUNDIALS_USE_GENERIC_MATH 1"
+# If found all precision-specific routines, then set SUNDIALS_USE_GENERIC_MATH only if
+# building SUNDIALS libraries with double-precision
+else
+  if test "X${FLOAT_TYPE}" = "Xdouble"; then
+    cat >>confdefs.h <<\_ACEOF
+#define SUNDIALS_USE_GENERIC_MATH 1
+_ACEOF
+
+    GENERIC_MATH_LIB="#define SUNDIALS_USE_GENERIC_MATH 1"
+  else
+    cat >>confdefs.h <<\_ACEOF
+#define SUNDIALS_USE_GENERIC_MATH 0
+_ACEOF
+
+  fi
+fi
+
+# Add math library to LIBS environment variable
+LIBS="${TEMP_MATH_LIB}"
+echo "$as_me:$LINENO: checking for additional required C libraries" >&5
+echo $ECHO_N "checking for additional required C libraries... $ECHO_C" >&6
+if test "X${LIBS}" = "X"; then
+  if test "X${SAVED_LIBS}" = "X"; then
+    LIBS=""
+  else
+    LIBS="${SAVED_LIBS}"
+  fi
+  echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+else
+  echo "$as_me:$LINENO: result: ${LIBS}" >&5
+echo "${ECHO_T}${LIBS}" >&6
+  if test "X${SAVED_LIBS}" = "X"; then
+    LIBS="${LIBS}"
+  else
+    LIBS="${LIBS} ${SAVED_LIBS}"
+  fi
+fi
+
+# Check sizeof(int) - used to modify Fortran examples
+echo "$as_me:$LINENO: checking for int" >&5
+echo $ECHO_N "checking for int... $ECHO_C" >&6
+if test "${ac_cv_type_int+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if ((int *) 0)
+  return 0;
+if (sizeof (int))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_int=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
+echo "${ECHO_T}$ac_cv_type_int" >&6
+
+echo "$as_me:$LINENO: checking size of int" >&5
+echo $ECHO_N "checking size of int... $ECHO_C" >&6
+if test "${ac_cv_sizeof_int+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$ac_cv_type_int" = yes; then
+  # The cast to unsigned long works around a bug in the HP C Compiler
+  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+  # This bug is HP SR number 8606223364.
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+		    if test $ac_lo -le $ac_mid; then
+		      ac_lo= ac_hi=
+		      break
+		    fi
+		    ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_lo=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+		       if test $ac_mid -le $ac_hi; then
+			 ac_lo= ac_hi=
+			 break
+		       fi
+		       ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=$ac_mid
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_int=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; } ;;
+esac
+else
+  if test "$cross_compiling" = yes; then
+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+long longval () { return (long) (sizeof (int)); }
+unsigned long ulongval () { return (long) (sizeof (int)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    exit (1);
+  if (((long) (sizeof (int))) < 0)
+    {
+      long i = longval ();
+      if (i != ((long) (sizeof (int))))
+	exit (1);
+      fprintf (f, "%ld\n", i);
+    }
+  else
+    {
+      unsigned long i = ulongval ();
+      if (i != ((long) (sizeof (int))))
+	exit (1);
+      fprintf (f, "%lu\n", i);
+    }
+  exit (ferror (f) || fclose (f) != 0);
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_int=`cat conftest.val`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+  ac_cv_sizeof_int=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
+echo "${ECHO_T}$ac_cv_sizeof_int" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+
+
+# Check sizeof(long int) - used to modify Fortran examples
+echo "$as_me:$LINENO: checking for long int" >&5
+echo $ECHO_N "checking for long int... $ECHO_C" >&6
+if test "${ac_cv_type_long_int+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if ((long int *) 0)
+  return 0;
+if (sizeof (long int))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_long_int=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_long_int=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_long_int" >&5
+echo "${ECHO_T}$ac_cv_type_long_int" >&6
+
+echo "$as_me:$LINENO: checking size of long int" >&5
+echo $ECHO_N "checking size of long int... $ECHO_C" >&6
+if test "${ac_cv_sizeof_long_int+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$ac_cv_type_long_int" = yes; then
+  # The cast to unsigned long works around a bug in the HP C Compiler
+  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+  # This bug is HP SR number 8606223364.
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long int))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long int))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+		    if test $ac_lo -le $ac_mid; then
+		      ac_lo= ac_hi=
+		      break
+		    fi
+		    ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long int))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long int))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_lo=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+		       if test $ac_mid -le $ac_hi; then
+			 ac_lo= ac_hi=
+			 break
+		       fi
+		       ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long int))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=$ac_mid
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long_int=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long int), 77
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; } ;;
+esac
+else
+  if test "$cross_compiling" = yes; then
+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+long longval () { return (long) (sizeof (long int)); }
+unsigned long ulongval () { return (long) (sizeof (long int)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    exit (1);
+  if (((long) (sizeof (long int))) < 0)
+    {
+      long i = longval ();
+      if (i != ((long) (sizeof (long int))))
+	exit (1);
+      fprintf (f, "%ld\n", i);
+    }
+  else
+    {
+      unsigned long i = ulongval ();
+      if (i != ((long) (sizeof (long int))))
+	exit (1);
+      fprintf (f, "%lu\n", i);
+    }
+  exit (ferror (f) || fclose (f) != 0);
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_long_int=`cat conftest.val`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long int), 77
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+  ac_cv_sizeof_long_int=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_int" >&5
+echo "${ECHO_T}$ac_cv_sizeof_long_int" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG_INT $ac_cv_sizeof_long_int
+_ACEOF
+
+
+
+# Check sizeof(realtype), where realtype is either float, double
+# or long double - used to modify Fortran examples
+if test "X${FLOAT_TYPE}" = "Xsingle"; then
+  echo "$as_me:$LINENO: checking for float" >&5
+echo $ECHO_N "checking for float... $ECHO_C" >&6
+if test "${ac_cv_type_float+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if ((float *) 0)
+  return 0;
+if (sizeof (float))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_float=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_float=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_float" >&5
+echo "${ECHO_T}$ac_cv_type_float" >&6
+
+echo "$as_me:$LINENO: checking size of float" >&5
+echo $ECHO_N "checking size of float... $ECHO_C" >&6
+if test "${ac_cv_sizeof_float+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$ac_cv_type_float" = yes; then
+  # The cast to unsigned long works around a bug in the HP C Compiler
+  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+  # This bug is HP SR number 8606223364.
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (float))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (float))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+		    if test $ac_lo -le $ac_mid; then
+		      ac_lo= ac_hi=
+		      break
+		    fi
+		    ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (float))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (float))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_lo=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+		       if test $ac_mid -le $ac_hi; then
+			 ac_lo= ac_hi=
+			 break
+		       fi
+		       ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (float))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=$ac_mid
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_float=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (float), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (float), 77
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; } ;;
+esac
+else
+  if test "$cross_compiling" = yes; then
+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+long longval () { return (long) (sizeof (float)); }
+unsigned long ulongval () { return (long) (sizeof (float)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    exit (1);
+  if (((long) (sizeof (float))) < 0)
+    {
+      long i = longval ();
+      if (i != ((long) (sizeof (float))))
+	exit (1);
+      fprintf (f, "%ld\n", i);
+    }
+  else
+    {
+      unsigned long i = ulongval ();
+      if (i != ((long) (sizeof (float))))
+	exit (1);
+      fprintf (f, "%lu\n", i);
+    }
+  exit (ferror (f) || fclose (f) != 0);
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_float=`cat conftest.val`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (float), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (float), 77
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+  ac_cv_sizeof_float=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_float" >&5
+echo "${ECHO_T}$ac_cv_sizeof_float" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_FLOAT $ac_cv_sizeof_float
+_ACEOF
+
+
+elif test "X${FLOAT_TYPE}" = "Xdouble"; then
+  echo "$as_me:$LINENO: checking for double" >&5
+echo $ECHO_N "checking for double... $ECHO_C" >&6
+if test "${ac_cv_type_double+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if ((double *) 0)
+  return 0;
+if (sizeof (double))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_double=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_double=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5
+echo "${ECHO_T}$ac_cv_type_double" >&6
+
+echo "$as_me:$LINENO: checking size of double" >&5
+echo $ECHO_N "checking size of double... $ECHO_C" >&6
+if test "${ac_cv_sizeof_double+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$ac_cv_type_double" = yes; then
+  # The cast to unsigned long works around a bug in the HP C Compiler
+  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+  # This bug is HP SR number 8606223364.
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (double))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+		    if test $ac_lo -le $ac_mid; then
+		      ac_lo= ac_hi=
+		      break
+		    fi
+		    ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (double))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (double))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_lo=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+		       if test $ac_mid -le $ac_hi; then
+			 ac_lo= ac_hi=
+			 break
+		       fi
+		       ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=$ac_mid
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_double=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (double), 77
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; } ;;
+esac
+else
+  if test "$cross_compiling" = yes; then
+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+long longval () { return (long) (sizeof (double)); }
+unsigned long ulongval () { return (long) (sizeof (double)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    exit (1);
+  if (((long) (sizeof (double))) < 0)
+    {
+      long i = longval ();
+      if (i != ((long) (sizeof (double))))
+	exit (1);
+      fprintf (f, "%ld\n", i);
+    }
+  else
+    {
+      unsigned long i = ulongval ();
+      if (i != ((long) (sizeof (double))))
+	exit (1);
+      fprintf (f, "%lu\n", i);
+    }
+  exit (ferror (f) || fclose (f) != 0);
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_double=`cat conftest.val`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (double), 77
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+  ac_cv_sizeof_double=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5
+echo "${ECHO_T}$ac_cv_sizeof_double" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_DOUBLE $ac_cv_sizeof_double
+_ACEOF
+
+
+elif test "X${FLOAT_TYPE}" = "Xextended"; then
+  echo "$as_me:$LINENO: checking for long double" >&5
+echo $ECHO_N "checking for long double... $ECHO_C" >&6
+if test "${ac_cv_type_long_double+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if ((long double *) 0)
+  return 0;
+if (sizeof (long double))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_long_double=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_long_double=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5
+echo "${ECHO_T}$ac_cv_type_long_double" >&6
+
+echo "$as_me:$LINENO: checking size of long double" >&5
+echo $ECHO_N "checking size of long double... $ECHO_C" >&6
+if test "${ac_cv_sizeof_long_double+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$ac_cv_type_long_double" = yes; then
+  # The cast to unsigned long works around a bug in the HP C Compiler
+  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+  # This bug is HP SR number 8606223364.
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long double))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+		    if test $ac_lo -le $ac_mid; then
+		      ac_lo= ac_hi=
+		      break
+		    fi
+		    ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long double))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long double))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_lo=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+		       if test $ac_mid -le $ac_hi; then
+			 ac_lo= ac_hi=
+			 break
+		       fi
+		       ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_hi=$ac_mid
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long_double=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long double), 77
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; } ;;
+esac
+else
+  if test "$cross_compiling" = yes; then
+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+long longval () { return (long) (sizeof (long double)); }
+unsigned long ulongval () { return (long) (sizeof (long double)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    exit (1);
+  if (((long) (sizeof (long double))) < 0)
+    {
+      long i = longval ();
+      if (i != ((long) (sizeof (long double))))
+	exit (1);
+      fprintf (f, "%ld\n", i);
+    }
+  else
+    {
+      unsigned long i = ulongval ();
+      if (i != ((long) (sizeof (long double))))
+	exit (1);
+      fprintf (f, "%lu\n", i);
+    }
+  exit (ferror (f) || fclose (f) != 0);
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_long_double=`cat conftest.val`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long double), 77
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+  ac_cv_sizeof_long_double=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5
+echo "${ECHO_T}$ac_cv_sizeof_long_double" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double
+_ACEOF
+
+
+fi
+
+# Defines EGREP and exports via AC_SUBST - used by FCMIX Makefile's
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+
+# Defines FGREP and exports via AC_SUBST - used by FCMIX Makefile's
+echo "$as_me:$LINENO: checking for fgrep" >&5
+echo $ECHO_N "checking for fgrep... $ECHO_C" >&6
+if test "${ac_cv_prog_fgrep+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if echo 'ab*c' | (grep -F 'ab*c') >/dev/null 2>&1
+    then ac_cv_prog_fgrep='grep -F'
+    else ac_cv_prog_fgrep='fgrep'
+    fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fgrep" >&5
+echo "${ECHO_T}$ac_cv_prog_fgrep" >&6
+ FGREP=$ac_cv_prog_fgrep
+
+
+
+
+
+# Set Fortran compilation (Optional)
+if test "X${F77_ENABLED}" = "Xyes"; then
+
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+F77_OK="yes"
+
+USER_F77="${F77}"
+# unset is NOT portable so just undefine/unset F77 by setting to "" (NULL)
+F77=""
+
+# Defines F77 and sets G77="yes" if F77="g77"
+# Search for Fortran compiler given by user first
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in ${USER_F77} f77 g77
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in ${USER_F77} f77 g77
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_F77" && break
+done
+
+  F77=$ac_ct_F77
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:6924:" \
+     "checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_f77_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_f77_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_f77_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+if test "X${F77}" = "X"; then
+
+  # If F77="" then issue warning (means did NOT find a valid Fortran compiler)
+  # Do NOT abort since Fortran compiler is NOT required
+  { echo "$as_me:$LINENO: WARNING: cannot find Fortran compiler" >&5
+echo "$as_me: WARNING: cannot find Fortran compiler" >&2;}
+  echo ""
+  echo "   Unable to find a functional Fortran compiler."
+  echo ""
+  echo "   Disabling Fortran support..."
+  echo ""
+  F77_OK="no"
+
+else
+
+  # Provide variable description templates for config.hin and config.h files
+  # Required by autoheader utility
+
+
+
+
+
+
+
+  # Provided in case SUNDIALS_F77_WRAPPERS cannot determine name-mangling scheme
+
+# Check whether --with-f77underscore or --without-f77underscore was given.
+if test "${with_f77underscore+set}" = set; then
+  withval="$with_f77underscore"
+
+  UNDERSCORE_ARG_GIVEN="yes"
+  if test "X${withval}" = "Xnone"; then
+    cat >>confdefs.h <<\_ACEOF
+#define SUNDIALS_UNDERSCORE_NONE 1
+_ACEOF
+
+    F77_UNDERSCORES="#define SUNDIALS_UNDERSCORE_NONE 1"
+  elif test "X${withval}" = "Xone"; then
+    cat >>confdefs.h <<\_ACEOF
+#define SUNDIALS_UNDERSCORE_ONE 1
+_ACEOF
+
+    F77_UNDERSCORES="#define SUNDIALS_UNDERSCORE_ONE 1"
+  elif test "X${withval}" = "Xtwo"; then
+    cat >>confdefs.h <<\_ACEOF
+#define SUNDIALS_UNDERSCORE_TWO 1
+_ACEOF
+
+    F77_UNDERSCORES="#define SUNDIALS_UNDERSCORE_TWO 1"
+  else
+    { { echo "$as_me:$LINENO: error: invalid input" >&5
+echo "$as_me: error: invalid input" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+
+else
+
+  UNDERSCORE_ARG_GIVEN="no"
+
+fi;
+
+  # Provide variable description templates for config.hin and config.h files
+  # Required by autoheader utility
+
+
+
+
+
+  # Provided in case SUNDIALS_F77_WRAPPERS cannot determine name-mangling scheme
+
+# Check whether --with-f77case or --without-f77case was given.
+if test "${with_f77case+set}" = set; then
+  withval="$with_f77case"
+
+  CASE_ARG_GIVEN="yes"
+  if test "X${withval}" = "Xupper"; then
+    cat >>confdefs.h <<\_ACEOF
+#define SUNDIALS_CASE_UPPER 1
+_ACEOF
+
+    F77_CASE="#define SUNDIALS_CASE_UPPER 1"
+  elif test "X${withval}" = "Xlower"; then
+    cat >>confdefs.h <<\_ACEOF
+#define SUNDIALS_CASE_LOWER 1
+_ACEOF
+
+    F77_CASE="#define SUNDIALS_CASE_LOWER 1"
+  else
+    { { echo "$as_me:$LINENO: error: invalid input" >&5
+echo "$as_me: error: invalid input" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+
+else
+
+  CASE_ARG_GIVEN="no"
+
+fi;
+
+  # Check if user used "--with-f77underscore" or "--with-f77case"
+  # If both flags were used, then just continue
+  if test "X${UNDERSCORE_ARG_GIVEN}" = "Xyes" || test "X${CASE_ARG_GIVEN}" = "Xyes"; then
+    # Only used "--with-f77underscore" flag, so set default case
+    if test "X${UNDERSCORE_ARG_GIVEN}" = "Xyes" && test "X${CASE_ARG_GIVEN}" = "Xno"; then
+      cat >>confdefs.h <<\_ACEOF
+#define SUNDIALS_CASE_LOWER 1
+_ACEOF
+
+      F77_CASE="#define SUNDIALS_CASE_LOWER 1"
+    # Only used "--with-f77case" flag, so set default number of underscores
+    elif test "X${UNDERSCORE_ARG_GIVEN}" = "Xno" && test "X${CASE_ARG_GIVEN}" = "Xyes"; then
+      cat >>confdefs.h <<\_ACEOF
+#define SUNDIALS_UNDERSCORE_ONE 1
+_ACEOF
+
+      F77_UNDERSCORES="#define SUNDIALS_UNDERSCORE_ONE 1"
+    fi
+    RUN_F77_WRAPPERS="no"
+  # Only call SUNDIALS_F77_WRAPPERS if user did NOT use "--with-f77underscore" or "--with-f77case" flags
+  else
+    RUN_F77_WRAPPERS="yes"
+  fi
+
+  # Determine absolute pathname for specified Fortran compiler
+  F77_TEMP1="${F77}"
+  F77_TEMP2=`basename "${F77}"`
+  # SUNDIALS_DEFAULT_FFLAGS needs just the executable name
+  F77_EXEC="${F77_TEMP2}"
+  # If only the executable name was given, then determine absolute pathname
+  if test "X${F77_TEMP1}" = "X${F77_TEMP2}"; then
+    # Extract the first word of "${F77}", so it can be a program name with args.
+set dummy ${F77}; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_F77_COMP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $F77_COMP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_F77_COMP="$F77_COMP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_F77_COMP="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_F77_COMP" && ac_cv_path_F77_COMP="none"
+  ;;
+esac
+fi
+F77_COMP=$ac_cv_path_F77_COMP
+
+if test -n "$F77_COMP"; then
+  echo "$as_me:$LINENO: result: $F77_COMP" >&5
+echo "${ECHO_T}$F77_COMP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    # We already know the Fortran compiler exists, so this test is provided only
+    # for the sake of completeness
+    if test "X${F77_COMP}" = "Xnone"; then
+      F77="${F77_TEMP1}"
+    else
+      F77="${F77_COMP}"
+    fi
+  fi
+
+  echo "$as_me:$LINENO: checking for extra Fortran compiler flags" >&5
+echo $ECHO_N "checking for extra Fortran compiler flags... $ECHO_C" >&6
+
+# Check whether --with-fflags or --without-fflags was given.
+if test "${with_fflags+set}" = set; then
+  withval="$with_fflags"
+
+  echo "$as_me:$LINENO: result: ${withval}" >&5
+echo "${ECHO_T}${withval}" >&6
+  USER_FFLAGS="${withval}"
+
+else
+
+  echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+  USER_FFLAGS=""
+
+fi;
+
+  # Add default flag(s) to FFLAGS only if not already defined
+  if test "X${FFLAGS_USER_OVERRIDE}" = "Xno"; then
+
+
+# FIXME: Should IRIX and Tru64 options overwrite FFLAGS?
+case $host in
+
+  # IA-32 system running Linux
+  i*-pc-linux-*)
+
+    if test "X${G77}" = "Xyes"; then
+      if test "X${FFLAGS}" = "X"; then
+        # If user wants extra precision (long double), then let program store
+        # floating-point values in registers
+        if test "X${FLOAT_TYPE}" = "Xsingle" || test "X${FLOAT_TYPE}" = "Xdouble"; then
+          FFLAGS="-ffloat-store"
+        fi
+      else
+        # If user wants extra precision (long double), then let program store
+        # floating-point values in registers
+        if test "X${FLOAT_TYPE}" = "Xsingle" || test "X${FLOAT_TYPE}" = "Xdouble"; then
+          FFLAGS="${FFLAGS} -ffloat-store"
+        fi
+      fi
+    fi
+
+  ;;
+
+  # SGI/IRIX
+  mips-sgi-irix*)
+
+    FFLAGS="-64"
+
+  ;;
+
+  # Compaq/Tru64
+  *-dec-osf*)
+
+    if test "X${F77_EXEC}" = "Xf77"; then
+      FFLAGS="-O1"
+    fi
+
+  ;;
+
+esac
+
+
+  fi
+
+  if test "X${USER_FFLAGS}" = "X"; then
+    FFLAGS="${FFLAGS}"
+  else
+    FFLAGS="${FFLAGS} ${USER_FFLAGS}"
+  fi
+
+  # Add any required linker flags into FLIBS
+  # Note: if FLIBS is defined, it is left unchanged
+
+   ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+echo "$as_me:$LINENO: checking how to get verbose linking output from $F77" >&5
+echo $ECHO_N "checking how to get verbose linking output from $F77... $ECHO_C" >&6
+if test "${ac_cv_prog_f77_v+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_f77_v=
+# Try some options frequently used verbose output
+for ac_verb in -v -verbose --verbose -V -\#\#\#; do
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+
+# Compile and link our simple test program by passing a flag (argument
+# 1 to this macro) to the Fortran compiler in order to get
+# "verbose" output that we can then parse for the Fortran linker
+# flags.
+ac_save_FFLAGS=$FFLAGS
+FFLAGS="$FFLAGS $ac_verb"
+(eval echo $as_me:7375: \"$ac_link\") >&5
+ac_f77_v_output=`eval $ac_link 5>&1 2>&1 | grep -v 'Driving:'`
+echo "$ac_f77_v_output" >&5
+FFLAGS=$ac_save_FFLAGS
+
+rm -f conftest*
+
+# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where
+# /foo, /bar, and /baz are search directories for the Fortran linker.
+# Here, we change these into -L/foo -L/bar -L/baz (and put it first):
+ac_f77_v_output="`echo $ac_f77_v_output |
+	grep 'LPATH is:' |
+	sed 's,.*LPATH is\(: *[^ ]*\).*,\1,;s,: */, -L/,g'` $ac_f77_v_output"
+
+case $ac_f77_v_output in
+  # If we are using xlf then replace all the commas with spaces.
+  *xlfentry*)
+    ac_f77_v_output=`echo $ac_f77_v_output | sed 's/,/ /g'` ;;
+
+  # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
+  # $LIBS confuse us, and the libraries appear later in the output anyway).
+  *mGLOB_options_string*)
+    ac_f77_v_output=`echo $ac_f77_v_output | sed 's/"-mGLOB[^"]*"/ /g'` ;;
+
+  # Portland Group compiler has quoted -cmdline argument
+  *-cmdline*)
+    ac_f77_v_output=`echo $ac_f77_v_output | sed "s/-cmdline '[^']*'/ /g"`  ;;
+
+  # If we are using Cray Fortran then delete quotes.
+  # Use "\"" instead of '"' for font-lock-mode.
+  # FIXME: a more general fix for quoted arguments with spaces?
+  *cft90*)
+    ac_f77_v_output=`echo $ac_f77_v_output | sed "s/\"//g"` ;;
+esac
+
+
+  # look for -l* and *.a constructs in the output
+  for ac_arg in $ac_f77_v_output; do
+     case $ac_arg in
+        [\\/]*.a | ?:[\\/]*.a | -[lLRu]*)
+          ac_cv_prog_f77_v=$ac_verb
+          break 2 ;;
+     esac
+  done
+done
+if test -z "$ac_cv_prog_f77_v"; then
+   { echo "$as_me:$LINENO: WARNING: cannot determine how to obtain linking information from $F77" >&5
+echo "$as_me: WARNING: cannot determine how to obtain linking information from $F77" >&2;}
+fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ echo "$as_me:$LINENO: WARNING: compilation failed" >&5
+echo "$as_me: WARNING: compilation failed" >&2;}
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_v" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_v" >&6
+echo "$as_me:$LINENO: checking for Fortran libraries of $F77" >&5
+echo $ECHO_N "checking for Fortran libraries of $F77... $ECHO_C" >&6
+if test "${ac_cv_f77_libs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "x$FLIBS" != "x"; then
+  ac_cv_f77_libs="$FLIBS" # Let the user override the test.
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+
+# Compile and link our simple test program by passing a flag (argument
+# 1 to this macro) to the Fortran compiler in order to get
+# "verbose" output that we can then parse for the Fortran linker
+# flags.
+ac_save_FFLAGS=$FFLAGS
+FFLAGS="$FFLAGS $ac_cv_prog_f77_v"
+(eval echo $as_me:7457: \"$ac_link\") >&5
+ac_f77_v_output=`eval $ac_link 5>&1 2>&1 | grep -v 'Driving:'`
+echo "$ac_f77_v_output" >&5
+FFLAGS=$ac_save_FFLAGS
+
+rm -f conftest*
+
+# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where
+# /foo, /bar, and /baz are search directories for the Fortran linker.
+# Here, we change these into -L/foo -L/bar -L/baz (and put it first):
+ac_f77_v_output="`echo $ac_f77_v_output |
+	grep 'LPATH is:' |
+	sed 's,.*LPATH is\(: *[^ ]*\).*,\1,;s,: */, -L/,g'` $ac_f77_v_output"
+
+case $ac_f77_v_output in
+  # If we are using xlf then replace all the commas with spaces.
+  *xlfentry*)
+    ac_f77_v_output=`echo $ac_f77_v_output | sed 's/,/ /g'` ;;
+
+  # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
+  # $LIBS confuse us, and the libraries appear later in the output anyway).
+  *mGLOB_options_string*)
+    ac_f77_v_output=`echo $ac_f77_v_output | sed 's/"-mGLOB[^"]*"/ /g'` ;;
+
+  # Portland Group compiler has quoted -cmdline argument
+  *-cmdline*)
+    ac_f77_v_output=`echo $ac_f77_v_output | sed "s/-cmdline '[^']*'/ /g"`  ;;
+
+  # If we are using Cray Fortran then delete quotes.
+  # Use "\"" instead of '"' for font-lock-mode.
+  # FIXME: a more general fix for quoted arguments with spaces?
+  *cft90*)
+    ac_f77_v_output=`echo $ac_f77_v_output | sed "s/\"//g"` ;;
+esac
+
+
+
+ac_cv_f77_libs=
+
+# Save positional arguments (if any)
+ac_save_positional="$@"
+
+set X $ac_f77_v_output
+while test $# != 1; do
+  shift
+  ac_arg=$1
+  case $ac_arg in
+        [\\/]*.a | ?:[\\/]*.a)
+            ac_exists=false
+  for ac_i in $ac_cv_f77_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
+fi
+
+          ;;
+        -bI:*)
+            ac_exists=false
+  for ac_i in $ac_cv_f77_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  if test "$ac_compiler_gnu" = yes; then
+  for ac_link_opt in $ac_arg; do
+    ac_cv_f77_libs="$ac_cv_f77_libs -Xlinker $ac_link_opt"
+  done
+else
+  ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
+fi
+fi
+
+          ;;
+          # Ignore these flags.
+        -lang* | -lcrt[01].o | -lcrtbegin.o | -lc | -lgcc | -libmil | -LANG:=*)
+          ;;
+        -lkernel32)
+          test x"$CYGWIN" != xyes && ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
+          ;;
+        -[LRuY])
+          # These flags, when seen by themselves, take an argument.
+          # We remove the space between option and argument and re-iterate
+          # unless we find an empty arg or a new option (starting with -)
+	  case $2 in
+	     "" | -*);;
+	     *)
+		ac_arg="$ac_arg$2"
+		shift; shift
+		set X $ac_arg "$@"
+		;;
+	  esac
+          ;;
+        -YP,*)
+          for ac_j in `echo $ac_arg | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do
+              ac_exists=false
+  for ac_i in $ac_cv_f77_libs; do
+    if test x"$ac_j" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_arg="$ac_arg $ac_j"
+                               ac_cv_f77_libs="$ac_cv_f77_libs $ac_j"
+fi
+
+          done
+          ;;
+        -[lLR]*)
+            ac_exists=false
+  for ac_i in $ac_cv_f77_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
+fi
+
+          ;;
+          # Ignore everything else.
+  esac
+done
+# restore positional arguments
+set X $ac_save_positional; shift
+
+# We only consider "LD_RUN_PATH" on Solaris systems.  If this is seen,
+# then we insist that the "run path" must be an absolute path (i.e. it
+# must begin with a "/").
+case `(uname -sr) 2>/dev/null` in
+   "SunOS 5"*)
+      ac_ld_run_path=`echo $ac_f77_v_output |
+                        sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'`
+      test "x$ac_ld_run_path" != x &&
+        if test "$ac_compiler_gnu" = yes; then
+  for ac_link_opt in $ac_ld_run_path; do
+    ac_cv_f77_libs="$ac_cv_f77_libs -Xlinker $ac_link_opt"
+  done
+else
+  ac_cv_f77_libs="$ac_cv_f77_libs $ac_ld_run_path"
+fi
+      ;;
+esac
+fi # test "x$[]_AC_LANG_PREFIX[]LIBS" = "x"
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_f77_libs" >&5
+echo "${ECHO_T}$ac_cv_f77_libs" >&6
+FLIBS="$ac_cv_f77_libs"
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+fi
+
+# Determine how to properly mangle function names so Fortran subroutines can
+# call C functions included in SUNDIALS libraries
+# Defines C preprocessor macros F77_FUNC and F77_FUNC_
+if test "X${RUN_F77_WRAPPERS}" = "Xyes"; then
+  if test "X${F77_OK}" = "Xyes"; then
+
+
+# Replacement macro for AC_F77_WRAPPERS which has too many problems
+# (based on implementation of AC_F77_WRAPPERS minus the "fluff")
+
+# Provide variable description templates for config.hin and config.h files
+# Required by autoheader utility
+
+
+
+# Remaining test pertains to Fortran programming language
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+echo "$as_me:$LINENO: checking Fortran name-mangling scheme" >&5
+echo $ECHO_N "checking Fortran name-mangling scheme... $ECHO_C" >&6
+
+# Compile a dummy Fortran subroutine
+cat >conftest.$ac_ext <<_ACEOF
+
+	SUBROUTINE SUNDIALS()
+	RETURN
+	END
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+
+mv conftest.${ac_objext} f77_wrapper_check.${ac_objext}
+
+# Temporarily reset LIBS environment variable to perform test
+SAVED_LIBS="${LIBS}"
+LIBS="f77_wrapper_check.${ac_objext} ${LIBS} ${FLIBS}"
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_linkonly='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_objext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+F77_WRAPPER_CHECK_OK="no"
+for i in "sundials" "SUNDIALS" ; do
+  for j in "" "_" "__" ; do
+    F77_MANGLED_NAME="${i}${j}"
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char ${F77_MANGLED_NAME} ();
+int
+main ()
+{
+${F77_MANGLED_NAME} ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  F77_WRAPPER_CHECK_OK="yes" ; break 2
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+  done
+done
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+# If test succeeded, then set F77_FUNC_CASE and F77_FUNC_UNDERSCORES variables
+if test "X${F77_WRAPPER_CHECK_OK}" = "Xyes"; then
+  # Determine case (lower, upper)
+  if test "X${i}" = "Xsundials"; then
+    F77_FUNC_CASE="lowercase"
+  else
+    F77_FUNC_CASE="uppercase"
+  fi
+  # Determine number of underscores to append (none, one, two)
+  if test "X${j}" = "X"; then
+    F77_FUNC_UNDERSCORES="no underscores"
+  elif test "X${j}" = "X_"; then
+    F77_FUNC_UNDERSCORES="one underscore"
+  else
+    F77_FUNC_UNDERSCORES="two underscores"
+  fi
+  echo "$as_me:$LINENO: result: ${F77_FUNC_CASE} with ${F77_FUNC_UNDERSCORES}" >&5
+echo "${ECHO_T}${F77_FUNC_CASE} with ${F77_FUNC_UNDERSCORES}" >&6
+  # Set exported macro definition (F77_FUNC)
+  if test "X${F77_FUNC_CASE}" = "Xlowercase"; then
+    if test "X${F77_FUNC_UNDERSCORES}" = "Xno underscores"; then
+      cat >>confdefs.h <<\_ACEOF
+#define F77_FUNC(name,NAME) name
+_ACEOF
+
+      F77_MANGLE_MACRO="#define F77_FUNC(name,NAME) name"
+    elif test "X${F77_FUNC_UNDERSCORES}" = "Xone underscore"; then
+      cat >>confdefs.h <<\_ACEOF
+#define F77_FUNC(name,NAME) name ## _
+_ACEOF
+
+      F77_MANGLE_MACRO="#define F77_FUNC(name,NAME) name ## _"
+    elif test "X${F77_FUNC_UNDERSCORES}" = "Xtwo underscores"; then
+      cat >>confdefs.h <<\_ACEOF
+#define F77_FUNC(name,NAME) name ## __
+_ACEOF
+
+      F77_MANGLE_MACRO="#define F77_FUNC(name,NAME) name ## __"
+    fi
+  elif test "X${F77_FUNC_CASE}" = "Xuppercase"; then
+    if test "X${F77_FUNC_UNDERSCORES}" = "Xno underscores"; then
+      cat >>confdefs.h <<\_ACEOF
+#define F77_FUNC(name,NAME) NAME
+_ACEOF
+
+      F77_MANGLE_MACRO="#define F77_FUNC(name,NAME) NAME"
+    elif test "X${F77_FUNC_UNDERSCORES}" = "Xone underscore"; then
+      cat >>confdefs.h <<\_ACEOF
+#define F77_FUNC(name,NAME) NAME ## _
+_ACEOF
+
+      F77_MANGLE_MACRO="#define F77_FUNC(name,NAME) NAME ## _"
+    elif test "X${F77_FUNC_UNDERSCORES}" = "Xtwo underscores"; then
+      cat >>confdefs.h <<\_ACEOF
+#define F77_FUNC(name,NAME) NAME ## __
+_ACEOF
+
+      F77_MANGLE_MACRO="#define F77_FUNC(name,NAME) NAME ## __"
+    fi
+  fi
+# If test failed, then tell user to use '--with-f77case' and '--with-f77underscore'
+# and disable Fortran support
+else
+  echo "$as_me:$LINENO: result: UNKNOWN" >&5
+echo "${ECHO_T}UNKNOWN" >&6
+  { echo "$as_me:$LINENO: WARNING: cannot determine Fortran name-mangling scheme" >&5
+echo "$as_me: WARNING: cannot determine Fortran name-mangling scheme" >&2;}
+  echo ""
+  echo "   Unable to determine name-mangling scheme required by Fortran"
+  echo "   compiler."
+  echo ""
+  echo "   Try using --with-f77case and --with-f77underscore to explicitly"
+  echo "   specify the appropriate name-mangline scheme."
+  echo ""
+  echo "   Disabling Fortran support..."
+  echo ""
+  F77_OK="no"
+fi
+
+# Set LIBS environment variable back to original value
+LIBS="${SAVED_LIBS}"
+
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+
+# If a compilation error occurred, then disable Fortran support
+echo "$as_me:$LINENO: result: ERROR" >&5
+echo "${ECHO_T}ERROR" >&6
+echo ""
+echo "   Unable to compile test program using given Fortran compiler."
+echo ""
+echo "   Disabling Fortran support..."
+echo ""
+F77_OK="no"
+
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+# Reset language (remove 'Fortran 77' from stack)
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+# Remove temporary file
+rm -f f77_wrapper_check.${ac_objext}
+
+
+  fi
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_linkonly='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_objext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+fi
+
+# Set MPI support (Optional)
+if test "X${MPI_ENABLED}" = "Xyes"; then
+
+
+
+# Check whether --with- or --without- was given.
+if test "${with_+set}" = set; then
+  withval="$with_"
+
+fi;
+
+# MPI root directory
+
+# Check whether --with-mpi-root or --without-mpi-root was given.
+if test "${with_mpi_root+set}" = set; then
+  withval="$with_mpi_root"
+
+MPI_ROOT_DIR="${withval}"
+
+else
+
+MPI_ROOT_DIR=""
+
+fi;
+
+# MPI include directory
+
+# Check whether --with-mpi-incdir or --without-mpi-incdir was given.
+if test "${with_mpi_incdir+set}" = set; then
+  withval="$with_mpi_incdir"
+
+MPI_INC_DIR="${withval}"
+
+else
+
+MPI_INC_DIR=""
+
+fi;
+
+# MPI library directory
+
+# Check whether --with-mpi-libdir or --without-mpi-libdir was given.
+if test "${with_mpi_libdir+set}" = set; then
+  withval="$with_mpi_libdir"
+
+MPI_LIB_DIR="${withval}"
+
+else
+
+MPI_LIB_DIR=""
+
+fi;
+
+# MPI libraries
+
+# Check whether --with-mpi-libs or --without-mpi-libs was given.
+if test "${with_mpi_libs+set}" = set; then
+  withval="$with_mpi_libs"
+
+MPI_LIBS="${withval}"
+
+else
+
+MPI_LIBS=""
+
+fi;
+
+# MPI flags
+
+# Check whether --with-mpi-flags or --without-mpi-flags was given.
+if test "${with_mpi_flags+set}" = set; then
+  withval="$with_mpi_flags"
+
+MPI_FLAGS="${withval}"
+MPI_FLAGS_OK="yes"
+
+else
+
+MPI_FLAGS=""
+MPI_FLAGS_OK="no"
+
+fi;
+
+# MPI-C compiler
+
+# Check whether --with-mpicc or --without-mpicc was given.
+if test "${with_mpicc+set}" = set; then
+  withval="$with_mpicc"
+
+if test "X${withval}" = "Xno"; then
+  USE_MPICC_SCRIPT="no"
+else
+  USE_MPICC_SCRIPT="yes"
+  MPICC_COMP="${withval}"
+fi
+
+else
+
+USE_MPICC_SCRIPT="yes"
+ MPICC_COMP="mpicc"
+
+fi;
+
+# Check MPI-C compiler (either MPI compiler script or regular C compiler)
+if test "X${USE_MPICC_SCRIPT}" = "Xyes"; then
+
+
+# Test MPI-C compiler (meaning test MPICC_COMP)
+# Check if MPI-C compiler can be found
+
+# CASE 1: MPICC_COMP was found (cannot check if executable because the
+# "-x" flag is NOT portable)
+if test -f ${MPICC_COMP} ; then
+
+  MPICC_COMP_EXISTS="yes"
+  # Determine MPI_INC_DIR and MPI_LIB_DIR for use by Makefile
+  MPI_BASE_DIR=`(dirname "${MPICC_COMP}") 2>/dev/null ||
+$as_expr X"${MPICC_COMP}" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"${MPICC_COMP}" : 'X\(//\)[^/]' \| \
+	 X"${MPICC_COMP}" : 'X\(//\)$' \| \
+	 X"${MPICC_COMP}" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"${MPICC_COMP}" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  MPI_INC_DIR="${MPI_BASE_DIR}/../include"
+  MPI_LIB_DIR="${MPI_BASE_DIR}/../lib"
+
+# CASE 2: MPICC_COMP could NOT be found and MPI_ROOT_DIR was NOT specified,
+# so search in PATH
+else
+
+  if test "X${MPI_ROOT_DIR}" = "X"; then
+    # Try to find location of executable (perhaps directory was entered
+    # incorrectly)
+    TEMP_MPICC_COMP=`basename "${MPICC_COMP}"`
+    # Extract the first word of "${TEMP_MPICC_COMP}", so it can be a program name with args.
+set dummy ${TEMP_MPICC_COMP}; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MPICC_COMP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MPICC_COMP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MPICC_COMP="$MPICC_COMP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MPICC_COMP="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_MPICC_COMP" && ac_cv_path_MPICC_COMP="none"
+  ;;
+esac
+fi
+MPICC_COMP=$ac_cv_path_MPICC_COMP
+
+if test -n "$MPICC_COMP"; then
+  echo "$as_me:$LINENO: result: $MPICC_COMP" >&5
+echo "${ECHO_T}$MPICC_COMP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    # Cannot find executable in PATH
+    if test "X${MPICC_COMP}" = "Xnone"; then
+      MPICC_COMP_EXISTS="no"
+      MPICC_COMP=""
+    # Found executable and set MPICC_COMP to absolute pathname
+    else
+      MPICC_COMP_EXISTS="yes"
+      MPI_BASE_DIR=`(dirname "${MPICC_COMP}") 2>/dev/null ||
+$as_expr X"${MPICC_COMP}" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"${MPICC_COMP}" : 'X\(//\)[^/]' \| \
+	 X"${MPICC_COMP}" : 'X\(//\)$' \| \
+	 X"${MPICC_COMP}" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"${MPICC_COMP}" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+      MPI_INC_DIR="${MPI_BASE_DIR}/../include"
+      MPI_LIB_DIR="${MPI_BASE_DIR}/../lib"
+    fi
+
+  # CASE 3: MPICC_COMP could NOT be found, but MPI_ROOT_DIR was specified
+  else
+
+    # MPICC_COMP should really only contain an executable name
+    # Found location of MPICC_COMP
+    if test -f ${MPI_ROOT_DIR}/bin/${MPICC_COMP} ; then
+      MPICC_COMP_EXISTS="yes"
+      MPICC_COMP="${MPI_ROOT_DIR}/bin/${MPICC_COMP}"
+      MPI_INC_DIR="${MPI_ROOT_DIR}/include"
+      MPI_LIB_DIR="${MPI_ROOT_DIR}/lib"
+    # Could NOT find MPICC_COMP anywhere
+    else
+      MPICC_COMP_EXISTS="no"
+      MPICC_COMP=""
+    fi
+
+  fi
+
+fi
+
+# Issue warning message if MPICC_COMP does NOT exist, else set MPICC
+if test "X${MPICC_COMP_EXISTS}" = "Xyes"; then
+
+  MPICC="${MPICC_COMP}"
+  MPI_C_COMP_OK="yes"
+
+else
+
+  { echo "$as_me:$LINENO: WARNING: cannot find MPI-C compiler" >&5
+echo "$as_me: WARNING: cannot find MPI-C compiler" >&2;}
+  echo ""
+  echo "   Unable to find a functional MPI-C compiler."
+  echo ""
+  echo "   Try using --with-mpicc to specify a MPI-C compiler script,"
+  echo "   --with-mpi-incdir, --with-mpi-libdir and --with-mpi-libs"
+  echo "   to specify the locations of all relevant MPI files, or"
+  echo "   --with-mpi-root to specify the base installation directory"
+  echo "   of the MPI implementation to be used."
+  echo ""
+  echo "   Disabling the parallel NVECTOR module and all parallel examples..."
+  echo ""
+  MPICC=""
+  MPI_C_COMP_OK="no"
+
+fi
+
+
+else
+  MPICC_COMP="${CC}"
+  MPICC="${CC}"
+
+
+# Save copies of CPPFLAGS, LDFLAGS and LIBS (preserve information)
+# Temporarily overwritten so we can test MPI implementation
+SAVED_CPPFLAGS="${CPPFLAGS}"
+SAVED_LDFLAGS="${LDFLAGS}"
+SAVED_LIBS="${LIBS}"
+
+# Determine location of MPI header files (find MPI include directory)
+MPI_EXISTS="yes"
+
+# MPI include directory was NOT explicitly specified so check if MPI root
+# directory was given by user
+if test "X${MPI_INC_DIR}" = "X"; then
+  # MPI root directory was NOT given so issue a warning message
+  if test "X${MPI_ROOT_DIR}" = "X"; then
+    MPI_EXISTS="no"
+    { echo "$as_me:$LINENO: WARNING: cannot find MPI implementation files" >&5
+echo "$as_me: WARNING: cannot find MPI implementation files" >&2;}
+    echo ""
+    echo "   Unable to find MPI implementation files."
+    echo ""
+    echo "   Try using --with-mpicc to specify a MPI-C compiler script,"
+    echo "   --with-mpi-incdir, --with-mpi-libdir and --with-mpi-libs"
+    echo "   to specify the locations of all relevant MPI files, or"
+    echo "   --with-mpi-root to specify the base installation directory"
+    echo "   of the MPI implementation to be used."
+    echo ""
+    echo "   Disabling the parallel NVECTOR module and all parallel examples..."
+    echo ""
+  # MPI root directory was given so set MPI_INC_DIR accordingly
+  # Update CPPFLAGS
+  else
+    MPI_INC_DIR="${MPI_ROOT_DIR}/include"
+    if test "X${CPPFLAGS}" = "X"; then
+      CPPFLAGS="-I${MPI_INC_DIR}"
+    else
+      CPPFLAGS="${CPPFLAGS} -I${MPI_INC_DIR}"
+    fi
+    # Add MPI_FLAGS if non-empty
+    if test "X${MPI_FLAGS}" = "X"; then
+      CPPFLAGS="${CPPFLAGS}"
+    else
+      CPPFLAGS="${CPPFLAGS} ${MPI_FLAGS}"
+    fi
+  fi
+# MPI include directory was specified so update CPPFLAGS
+else
+  if test "X${CPPFLAGS}" = "X"; then
+    CPPFLAGS="-I${MPI_INC_DIR}"
+  else
+    CPPFLAGS="${CPPFLAGS} -I${MPI_INC_DIR}"
+  fi
+  # Add MPI_FLAGS if non-empty
+  if test "X${MPI_FLAGS}" = "X"; then
+    CPPFLAGS="${CPPFLAGS}"
+  else
+    CPPFLAGS="${CPPFLAGS} ${MPI_FLAGS}"
+  fi
+fi
+
+# Only continue if found an MPI implementation
+if test "X${MPI_EXISTS}" = "Xyes"; then
+
+  # Determine location of MPI libraries
+  # MPI library directory was NOT specified by user so set based upon MPI_ROOT_DIR
+  # Update LDFLAGS
+  if test "X${MPI_LIB_DIR}" = "X"; then
+    MPI_LIB_DIR="${MPI_ROOT_DIR}/lib"
+    if test "X${LDFLAGS}" = "X"; then
+      LDFLAGS="-L${MPI_LIB_DIR}"
+    else
+      LDFLAGS="${LDFLAGS} -L${MPI_LIB_DIR}"
+    fi
+  # MPI library directory was specified so update LDFLAGS
+  else
+    if test "X${LDFLAGS}" = "X"; then
+      LDFLAGS="-L${MPI_LIB_DIR}"
+    else
+      LDFLAGS="${LDFLAGS} -L${MPI_LIB_DIR}"
+    fi
+  fi
+
+  # Check if user specified which MPI libraries must be included
+  # If no libraries are given, then assume libmpi.[a/so] exists
+  if test "X${MPI_LIBS}" = "X"; then
+    MPI_LIBS="-lmpi"
+    if test "X${LIBS}" = "X"; then
+      LIBS="${MPI_LIBS}"
+    else
+      LIBS="${LIBS} ${MPI_LIBS}"
+    fi
+  # MPI libraries were specified so update LIBS
+  else
+    if test "X${LIBS}" = "X"; then
+      LIBS="${MPI_LIBS}"
+    else
+      LIBS="${LIBS} ${MPI_LIBS}"
+    fi
+  fi
+
+  echo "$as_me:$LINENO: checking if C compiler can compile MPI programs" >&5
+echo $ECHO_N "checking if C compiler can compile MPI programs... $ECHO_C" >&6
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include "mpi.h"
+int
+main ()
+{
+int c; char **v; MPI_Init(&c,&v);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+   MPI_C_COMP_OK="yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+   { echo "$as_me:$LINENO: WARNING: C compiler cannot compile MPI programs" >&5
+echo "$as_me: WARNING: C compiler cannot compile MPI programs" >&2;}
+   echo ""
+   echo "   Unable to compile MPI program using C compiler."
+   echo ""
+   echo "   Try using --with-mpicc to specify a MPI-C compiler script,"
+   echo "   --with-mpi-incdir, --with-mpi-libdir and --with-mpi-libs"
+   echo "   to specify the locations of all relevant MPI files, or"
+   echo "   --with-mpi-root to specify the base installation directory"
+   echo "   of the MPI implementation to be used."
+   echo ""
+   echo "   Disabling the parallel NVECTOR module and all parallel examples..."
+   echo ""
+   MPI_C_COMP_OK="no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+else
+  MPI_C_COMP_OK="no"
+fi
+
+# Restore CPPFLAGS, LDFLAGS and LIBS
+CPPFLAGS="${SAVED_CPPFLAGS}"
+LDFLAGS="${SAVED_LDFLAGS}"
+LIBS="${SAVED_LIBS}"
+
+
+fi
+
+
+  if test "X${F77_ENABLED}" = "Xyes"; then
+
+
+
+# Check whether --with-mpif77 or --without-mpif77 was given.
+if test "${with_mpif77+set}" = set; then
+  withval="$with_mpif77"
+
+if test "X${withval}" = "Xno"; then
+  USE_MPIF77_SCRIPT="no"
+else
+  USE_MPIF77_SCRIPT="yes"
+  MPIF77_COMP="${withval}"
+fi
+
+else
+
+USE_MPIF77_SCRIPT="yes"
+MPIF77_COMP="mpif77"
+
+fi;
+
+# Do NOT even check for MPI support for Fortran if serial Fortran compiler does NOT work
+# Need serial Fortran compiler to determine name-mangline scheme, and FCMIX libraries will
+# only be built if a serial Fortran compiler is found
+if test "X${F77_OK}" = "Xyes"; then
+  # Check MPI-Fortran compiler (either MPI compiler script or regular Fortran compiler)
+  if test "X${USE_MPIF77_SCRIPT}" = "Xyes"; then
+
+
+# Test the MPI-Fortran compiler (meaning test MPIF77_COMP)
+# Check if MPI-Fortran compiler can be found
+
+# CASE 1: MPIF77_COMP was found (cannot check if executable because the
+# "-x" flag is NOT portable)
+if test -f ${MPIF77_COMP} ; then
+
+  MPIF77_COMP_EXISTS="yes"
+  # Determine MPI_INC_DIR and MPI_LIB_DIR for use by Makefile
+  MPI_BASE_DIR=`(dirname "${MPIF77_COMP}") 2>/dev/null ||
+$as_expr X"${MPIF77_COMP}" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"${MPIF77_COMP}" : 'X\(//\)[^/]' \| \
+	 X"${MPIF77_COMP}" : 'X\(//\)$' \| \
+	 X"${MPIF77_COMP}" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"${MPIF77_COMP}" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  MPI_INC_DIR="${MPI_BASE_DIR}/../include"
+  MPI_LIB_DIR="${MPI_BASE_DIR}/../lib"
+
+# CASE 2: MPIF77_COMP could NOT be found and MPI_ROOT_DIR was NOT specified,
+# so search in PATH
+else
+
+  if test "X${MPI_ROOT_DIR}" = "X"; then
+
+    # Try to find location of executable (perhaps directory was entered
+    # incorrectly)
+    TEMP_MPIF77_COMP=`basename "${MPIF77_COMP}"`
+    # Extract the first word of "${TEMP_MPIF77_COMP}", so it can be a program name with args.
+set dummy ${TEMP_MPIF77_COMP}; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MPIF77_COMP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MPIF77_COMP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MPIF77_COMP="$MPIF77_COMP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MPIF77_COMP="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_MPIF77_COMP" && ac_cv_path_MPIF77_COMP="none"
+  ;;
+esac
+fi
+MPIF77_COMP=$ac_cv_path_MPIF77_COMP
+
+if test -n "$MPIF77_COMP"; then
+  echo "$as_me:$LINENO: result: $MPIF77_COMP" >&5
+echo "${ECHO_T}$MPIF77_COMP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    # Cannot find executable in PATH
+    if test "X${MPIF77_COMP}" = "Xnone"; then
+      MPIF77_COMP_EXISTS="no"
+      MPIF77_COMP=""
+    # Found executable and set MPIF77_COMP to absolute pathname
+    else
+      MPIF77_COMP_EXISTS="yes"
+      MPI_BASE_DIR=`(dirname "${MPIF77_COMP}") 2>/dev/null ||
+$as_expr X"${MPIF77_COMP}" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"${MPIF77_COMP}" : 'X\(//\)[^/]' \| \
+	 X"${MPIF77_COMP}" : 'X\(//\)$' \| \
+	 X"${MPIF77_COMP}" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"${MPIF77_COMP}" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+      MPI_INC_DIR="${MPI_BASE_DIR}/../include"
+      MPI_LIB_DIR="${MPI_BASE_DIR}/../lib"
+    fi
+
+  # CASE 3: MPIF77_COMP could NOT be found, but MPI_ROOT_DIR was specified
+  else
+
+    # MPIF77_COMP should really only contain an executable name
+    # Found location of MPIF77_COMP
+    if test -f ${MPI_ROOT_DIR}/bin/${MPIF77_COMP} ; then
+      MPIF77_COMP_EXISTS="yes"
+      MPIF77_COMP="${MPI_ROOT_DIR}/bin/${MPIF77_COMP}"
+      MPI_INC_DIR="${MPI_ROOT_DIR}/include"
+      MPI_LIB_DIR="${MPI_ROOT_DIR}/lib"
+    # Could NOT find MPIF77_COMP anywhere
+    else
+      MPIF77_COMP_EXISTS="no"
+      MPIF77_COMP=""
+    fi
+
+  fi
+
+fi
+
+# Issue warning message if MPIF77_COMP does NOT exist, else set MPIF77
+if test "X${MPIF77_COMP_EXISTS}" = "Xyes"; then
+
+  MPIF77="${MPIF77_COMP}"
+  MPI_F77_COMP_OK="yes"
+
+else
+
+  { echo "$as_me:$LINENO: WARNING: cannot find MPI-Fortran compiler" >&5
+echo "$as_me: WARNING: cannot find MPI-Fortran compiler" >&2;}
+  echo ""
+  echo "   Unable to find a functional MPI-Fortran compiler."
+  echo ""
+  echo "   Try using --with-mpif77 to specify a MPI-Fortran compiler script,"
+  echo "   --with-mpi-incdir, --with-mpi-libdir and --with-mpi-libs"
+  echo "   to specify the locations of all relevant MPI files, or"
+  echo "   --with-mpi-root to specify the base installation directory"
+  echo "   of the MPI implementation to be used."
+  echo ""
+  echo "   Disabling parallel Fortran examples...."
+  echo ""
+  MPIF77=""
+  MPI_F77_COMP_OK="no"
+
+fi
+
+
+  else
+    MPIF77_COMP="${F77}"
+    MPIF77="${F77}"
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+# Save copies of FFLAGS, LDFLAGS and LIBS (preserve information)
+# Temporarily overwritten so we can test MPI implementation
+SAVED_FFLAGS="${FFLAGS}"
+SAVED_LDFLAGS="${LDFLAGS}"
+SAVED_LIBS="${LIBS}"
+
+# Only continue if actually found a valid Fortran compiler
+if test "X${F77_OK}" = "Xyes"; then
+
+  # This may seem redundant, but we are not guaranteed that
+  # SUNDIALS_CHECK_CC_WITH_MPI has been executed
+  # Determine location of MPI header files (find MPI include directory)
+  MPI_EXISTS="yes"
+  # MPI include directory was NOT explicitly specified so check if MPI root
+  # directory was given by user
+  if test "X${MPI_INC_DIR}" = "X"; then
+    # MPI root directory was NOT given so issue a warning message
+    if test "X${MPI_ROOT_DIR}" = "X"; then
+      MPI_EXISTS="no"
+      { echo "$as_me:$LINENO: WARNING: cannot find MPI implementation files" >&5
+echo "$as_me: WARNING: cannot find MPI implementation files" >&2;}
+      echo ""
+      echo "   Unable to find MPI implementation files."
+      echo ""
+      echo "   Try using --with-mpif77 to specify a MPI-Fortran compiler script,"
+      echo "   --with-mpi-incdir, --with-mpi-libdir and --with-mpi-libs"
+      echo "   to specify the locations of all relevant MPI files, or"
+      echo "   --with-mpi-root to specify the base installation directory"
+      echo "   of the MPI implementation to be used."
+      echo ""
+      echo "   Disabling all parallel Fortran examples..."
+      echo ""
+    # MPI root directory was given so set MPI_INC_DIR accordingly
+    # Update FFLAGS
+    else
+      MPI_INC_DIR="${MPI_ROOT_DIR}/include"
+      if test "X${FFLAGS}" = "X"; then
+        FFLAGS="-I${MPI_INC_DIR}"
+      else
+        FFLAGS="${FFLAGS} -I${MPI_INC_DIR}"
+      fi
+    fi
+  # MPI include directory was specified so update FFLAGS
+  else
+    if test "X${FFLAGS}" = "X"; then
+      FFLAGS="-I${MPI_INC_DIR}"
+    else
+      FFLAGS="${FFLAGS} -I${MPI_INC_DIR}"
+    fi
+  fi
+
+  # Only continue if found an MPI implementation
+  if test "X${MPI_EXISTS}" = "Xyes"; then
+
+    # Determine location of MPI libraries
+    # MPI library directory was NOT specified by user so set based upon MPI_ROOT_DIR
+    # Update LDFLAGS
+    if test "X${MPI_LIB_DIR}" = "X"; then
+      MPI_LIB_DIR="${MPI_ROOT_DIR}/lib"
+      if test "X${LDFLAGS}" = "X"; then
+        LDFLAGS="-L${MPI_LIB_DIR}"
+      else
+        LDFLAGS="${LDFLAGS} -L${MPI_LIB_DIR}"
+      fi
+    # MPI library directory was specified so update LDFLAGS
+    else
+      if test "X${LDFLAGS}" = "X"; then
+        LDFLAGS="-L${MPI_LIB_DIR}"
+      else
+        LDFLAGS="${LDFLAGS} -L${MPI_LIB_DIR}"
+      fi
+    fi
+
+    # Check if user specified which MPI libraries must be included
+    # If no libraries are given, then assume libmpi.[a/so] exists
+    if test "X${MPI_LIBS}" = "X"; then
+      MPI_LIBS="-lmpi"
+      if test "X${LIBS}" = "X"; then
+        LIBS="${MPI_LIBS}"
+      else
+        LIBS="${LIBS} ${MPI_LIBS}"
+      fi
+    # MPI libraries were specified so update LIBS
+    else
+      if test "X${LIBS}" = "X"; then
+        LIBS="${MPI_LIBS}"
+      else
+        LIBS="${LIBS} ${MPI_LIBS}"
+      fi
+    fi
+
+    echo "$as_me:$LINENO: checking if Fortran compiler can compile MPI programs" >&5
+echo $ECHO_N "checking if Fortran compiler can compile MPI programs... $ECHO_C" >&6
+    cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+          INCLUDE "mpif.h"
+          CALL MPI_INIT(IER)
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+     MPI_F77_COMP_OK="yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+     { echo "$as_me:$LINENO: WARNING: Fortran compiler cannot compile MPI programs" >&5
+echo "$as_me: WARNING: Fortran compiler cannot compile MPI programs" >&2;}
+     echo ""
+     echo "   Unable to compile MPI program using Fortran compiler."
+     echo ""
+     echo "   Try using --with-mpif77 to specify a MPI-Fortran compiler script,"
+     echo "   --with-mpi-incdir, --with-mpi-libdir and --with-mpi-libs"
+     echo "   to specify the locations of all relevant MPI files, or"
+     echo "   --with-mpi-root to specify the base installation directory"
+     echo "   of the MPI implementation to be used."
+     echo ""
+     echo "   Disabling all parallel Fortran examples..."
+     echo ""
+     MPI_F77_COMP_OK="no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+  else
+    MPI_F77_COMP_OK="no"
+  fi
+else
+  { echo "$as_me:$LINENO: WARNING: cannot find Fortran compiler" >&5
+echo "$as_me: WARNING: cannot find Fortran compiler" >&2;}
+  MPI_F77_COMP_OK="no"
+fi
+
+# Restore FFLAGS, LDFLAGS and LIBS
+FFLAGS="${SAVED_FFLAGS}"
+LDFLAGS="${SAVED_LDFLAGS}"
+LIBS="${SAVED_LIBS}"
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_linkonly='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_objext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+  fi
+fi
+
+
+  fi
+fi
+
+# Run libtool checks
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval="$enable_shared"
+  p=${PACKAGE-default}
+case $enableval in
+yes) enable_shared=yes ;;
+no) enable_shared=no ;;
+*)
+  enable_shared=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_shared=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+else
+  enable_shared=no
+fi;
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval="$enable_static"
+  p=${PACKAGE-default}
+case $enableval in
+yes) enable_static=yes ;;
+no) enable_static=no ;;
+*)
+  enable_static=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_static=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+else
+  enable_static=yes
+fi;
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+  enableval="$enable_fast_install"
+  p=${PACKAGE-default}
+case $enableval in
+yes) enable_fast_install=yes ;;
+no) enable_fast_install=no ;;
+*)
+  enable_fast_install=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_fast_install=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+else
+  enable_fast_install=yes
+fi;
+# Find the correct PATH separator.  Usually this is `:', but
+# DJGPP uses `;' like DOS.
+if test "X${PATH_SEPARATOR+set}" != Xset; then
+  UNAME=${UNAME-`uname 2>/dev/null`}
+  case X$UNAME in
+    *-DOS) lt_cv_sys_path_separator=';' ;;
+    *)     lt_cv_sys_path_separator=':' ;;
+  esac
+  PATH_SEPARATOR=$lt_cv_sys_path_separator
+fi
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by GCC" >&5
+echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | [A-Za-z]:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+	test "$with_gnu_ld" != no && break
+      else
+	test "$with_gnu_ld" != yes && break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+  lt_cv_prog_gnu_ld=yes
+else
+  lt_cv_prog_gnu_ld=no
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+reload_flag=$lt_cv_ld_reload_flag
+test -n "$reload_flag" && reload_flag=" $reload_flag"
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm=$ac_dir/${ac_tool_prefix}nm
+    if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
+	lt_cv_path_NM="$tmp_nm -B"
+	break
+      elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+	lt_cv_path_NM="$tmp_nm -p"
+	break
+      else
+	lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	continue # so that we can try to find one that supports BSD flags
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+
+NM="$lt_cv_path_NM"
+echo "$as_me:$LINENO: result: $NM" >&5
+echo "${ECHO_T}$NM" >&6
+
+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+if test "${lt_cv_path_SED+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_executable_p="test -f"
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+        _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+
+  # Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+: ${TMPDIR=/tmp}
+{
+  tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=$TMPDIR/sed$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in $TMPDIR" >&2
+   { (exit 1); exit 1; }
+}
+  _max=0
+  _count=0
+  # Add /usr/xpg4/bin/sed as it is typically found on Solaris
+  # along with /bin/sed that truncates output.
+  for _sed in $_sed_list /usr/xpg4/bin/sed; do
+    test ! -f ${_sed} && break
+    cat /dev/null > "$tmp/sed.in"
+    _count=0
+    echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in"
+    # Check for GNU sed and select it if it is found.
+    if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then
+      lt_cv_path_SED=${_sed}
+      break
+    fi
+    while true; do
+      cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp"
+      mv "$tmp/sed.tmp" "$tmp/sed.in"
+      cp "$tmp/sed.in" "$tmp/sed.nl"
+      echo >>"$tmp/sed.nl"
+      ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break
+      cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break
+      # 40000 chars as input seems more than enough
+      test $_count -gt 10 && break
+      _count=`expr $_count + 1`
+      if test $_count -gt $_max; then
+        _max=$_count
+        lt_cv_path_SED=$_sed
+      fi
+    done
+  done
+  rm -rf "$tmp"
+
+fi
+
+if test "X$SED" != "X"; then
+  lt_cv_path_SED=$SED
+else
+  SED=$lt_cv_path_SED
+fi
+echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6
+
+echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given egrep regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi4*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin* | mingw* | pw32*)
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  case "$host_os" in
+  rhapsody* | darwin1.[012])
+    lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1`
+    ;;
+  *) # Darwin 1.3 on
+    lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
+    ;;
+  esac
+  ;;
+
+freebsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20*|hpux11*)
+  lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libc.sl
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+  irix5* | nonstopux*)
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
+    ;;
+  *)
+    case $LD in
+    *-32|*"-32 ") libmagic=32-bit;;
+    *-n32|*"-n32 ") libmagic=N32;;
+    *-64|*"-64 ") libmagic=64-bit;;
+    *) libmagic=never-match;;
+    esac
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"
+    ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  case $host_cpu in
+  alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64*)
+    lt_cv_deplibs_check_method=pass_all ;;
+  *)
+    # glibc up to 2.1.1 does not perform some relocations on ARM
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+openbsd*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+  else
+    lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  # this will be overridden with pass_all, but let us keep it just in case
+  lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  lt_cv_file_magic_test_file=/lib/libc.so
+  ;;
+
+sysv5uw[78]* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+
+
+
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo "$as_me:$LINENO: checking command to parse $NM output" >&5
+echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris* | sysv5*)
+  symcode='[BDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $host_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
+  symcode='[ABCDGISTW]'
+fi
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Write the raw and C identifiers.
+lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ 	]\($symcode$symcode*\)[ 	][ 	]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if egrep ' nm_test_var$' "$nlist" >/dev/null; then
+	if egrep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+	  sed "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  save_LIBS="$LIBS"
+	  save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$no_builtin_flag"
+	  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest$ac_exeext; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$save_LIBS"
+	  CFLAGS="$save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  global_symbol_to_cdecl=
+  global_symbol_to_c_name_address=
+else
+  global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
+  global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
+fi
+if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
+then
+  echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6
+else
+  echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+fi
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## ---------------------------- ##
+## Report this to radu at llnl.gov ##
+## ---------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+  /*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+  ?:/*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
+  ;;
+  *)
+  ac_save_MAGIC_CMD="$MAGIC_CMD"
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="/usr/bin:$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    egrep "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  MAGIC_CMD="$ac_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+  /*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+  ?:/*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
+  ;;
+  *)
+  ac_save_MAGIC_CMD="$MAGIC_CMD"
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="/usr/bin:$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    egrep "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  MAGIC_CMD="$ac_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  RANLIB=$ac_ct_RANLIB
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line 9878 "configure"' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_linkonly='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_objext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  lt_cv_cc_needs_belf=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+lt_cv_cc_needs_belf=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_linkonly='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_objext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+
+
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+need_locks="$enable_libtool_lock"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+if test x"$host" != x"$build"; then
+  ac_tool_prefix=${host_alias}-
+else
+  ac_tool_prefix=
+fi
+
+# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+case $host_os in
+linux-gnu*) ;;
+linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+esac
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    ;;
+  *)
+    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+# Allow CC to be a program name with arguments.
+set dummy $CC
+compiler="$2"
+
+echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+echo "$as_me:$LINENO: result: $objdir" >&5
+echo "${ECHO_T}$objdir" >&6
+
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+  withval="$with_pic"
+  pic_mode="$withval"
+else
+  pic_mode=default
+fi;
+test -z "$pic_mode" && pic_mode=default
+
+# We assume here that the value for lt_cv_prog_cc_pic will not be cached
+# in isolation, and that seeing it set (from the cache) indicates that
+# the associated values are set (in the cache) correctly too.
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+if test "${lt_cv_prog_cc_pic+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+   lt_cv_prog_cc_pic=
+  lt_cv_prog_cc_shlib=
+  lt_cv_prog_cc_wl=
+  lt_cv_prog_cc_static=
+  lt_cv_prog_cc_no_builtin=
+  lt_cv_prog_cc_can_build_shared=$can_build_shared
+
+  if test "$GCC" = yes; then
+    lt_cv_prog_cc_wl='-Wl,'
+    lt_cv_prog_cc_static='-static'
+
+    case $host_os in
+    aix*)
+      # Below there is a dirty hack to force normal static linking with -ldl
+      # The problem is because libdl dynamically linked with both libc and
+      # libC (AIX C++ library), which obviously doesn't included in libraries
+      # list by gcc. This cause undefined symbols with -static flags.
+      # This hack allows C programs to be linked with "-static -ldl", but
+      # not sure about C++ programs.
+      lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_cv_prog_cc_pic='-fno-common'
+      ;;
+    cygwin* | mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_cv_prog_cc_pic='-DDLL_EXPORT'
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	 lt_cv_prog_cc_pic=-Kconform_pic
+      fi
+      ;;
+    *)
+      lt_cv_prog_cc_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for PIC flags for the system compiler.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      lt_cv_prog_cc_wl='-Wl,'
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_cv_prog_cc_static='-Bstatic'
+      else
+	lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      # Is there a better lt_cv_prog_cc_static that works with the bundled CC?
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive"
+      lt_cv_prog_cc_pic='+Z'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static='-non_shared'
+      # PIC (with -KPIC) is the default.
+      ;;
+
+    cygwin* | mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_cv_prog_cc_pic='-DDLL_EXPORT'
+      ;;
+
+    newsos6)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      # All OSF/1 code is PIC.
+      lt_cv_prog_cc_wl='-Wl,'
+      lt_cv_prog_cc_static='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_cv_prog_cc_pic='-Kpic'
+      lt_cv_prog_cc_static='-dn'
+      lt_cv_prog_cc_shlib='-belf'
+      ;;
+
+    solaris*)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      lt_cv_prog_cc_wl='-Wl,'
+      ;;
+
+    sunos4*)
+      lt_cv_prog_cc_pic='-PIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      lt_cv_prog_cc_wl='-Qoption ld '
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_cv_prog_cc_pic='-KPIC'
+      lt_cv_prog_cc_static='-Bstatic'
+      lt_cv_prog_cc_wl='-Wl,'
+      ;;
+
+    uts4*)
+      lt_cv_prog_cc_pic='-pic'
+      lt_cv_prog_cc_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_cv_prog_cc_pic='-Kconform_pic'
+	lt_cv_prog_cc_static='-Bstatic'
+      fi
+      ;;
+
+    *)
+      lt_cv_prog_cc_can_build_shared=no
+      ;;
+    esac
+  fi
+
+fi
+
+if test -z "$lt_cv_prog_cc_pic"; then
+  echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+else
+  echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5
+echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6
+
+  # Check to make sure the pic_flag actually works.
+  echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6
+  if test "${lt_cv_prog_cc_pic_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+        case $host_os in
+      hpux9* | hpux10* | hpux11*)
+	# On HP-UX, both CC and GCC only warn that PIC is supported... then
+	# they create non-PIC objects.  So, if there were any warnings, we
+	# assume that PIC is not supported.
+	if test -s conftest.err; then
+	  lt_cv_prog_cc_pic_works=no
+	else
+	  lt_cv_prog_cc_pic_works=yes
+	fi
+	;;
+      *)
+	lt_cv_prog_cc_pic_works=yes
+	;;
+      esac
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+      lt_cv_prog_cc_pic_works=no
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+    CFLAGS="$save_CFLAGS"
+
+fi
+
+
+  if test "X$lt_cv_prog_cc_pic_works" = Xno; then
+    lt_cv_prog_cc_pic=
+    lt_cv_prog_cc_can_build_shared=no
+  else
+    lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
+  fi
+
+  echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5
+echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6
+fi
+
+# Check for any special shared library compilation flags.
+if test -n "$lt_cv_prog_cc_shlib"; then
+  { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5
+echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;}
+  if echo "$old_CC $old_CFLAGS " | egrep -e "[ 	]$lt_cv_prog_cc_shlib[ 	]" >/dev/null; then :
+  else
+   { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
+echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
+    lt_cv_prog_cc_can_build_shared=no
+  fi
+fi
+
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6
+if test "${lt_cv_prog_cc_static_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+    lt_cv_prog_cc_static_works=no
+  save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  lt_cv_prog_cc_static_works=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+  LDFLAGS="$save_LDFLAGS"
+
+fi
+
+
+# Belt *and* braces to stop my trousers falling down:
+test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
+echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5
+echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6
+
+pic_flag="$lt_cv_prog_cc_pic"
+special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
+wl="$lt_cv_prog_cc_wl"
+link_static_flag="$lt_cv_prog_cc_static"
+no_builtin_flag="$lt_cv_prog_cc_no_builtin"
+can_build_shared="$lt_cv_prog_cc_can_build_shared"
+
+
+# Check to see if options -o and -c are simultaneously supported by compiler
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_compiler_c_o+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+$rm -r conftest 2>/dev/null
+mkdir conftest
+cd conftest
+echo "int some_variable = 0;" > conftest.$ac_ext
+mkdir out
+# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+# that will create temporary files in the current directory regardless of
+# the output directory.  Thus, making CWD read-only will cause this test
+# to fail, enabling locking or at least warning the user not to do parallel
+# builds.
+chmod -w .
+save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
+compiler_c_o=no
+if { (eval echo configure:10438: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
+  # The compiler can only warn and ignore the option if not recognized
+  # So say no if there are warnings
+  if test -s out/conftest.err; then
+    lt_cv_compiler_c_o=no
+  else
+    lt_cv_compiler_c_o=yes
+  fi
+else
+  # Append any errors to the config.log.
+  cat out/conftest.err 1>&5
+  lt_cv_compiler_c_o=no
+fi
+CFLAGS="$save_CFLAGS"
+chmod u+w .
+$rm conftest* out/*
+rmdir out
+cd ..
+rmdir conftest
+$rm -r conftest 2>/dev/null
+
+fi
+
+compiler_c_o=$lt_cv_compiler_c_o
+echo "$as_me:$LINENO: result: $compiler_c_o" >&5
+echo "${ECHO_T}$compiler_c_o" >&6
+
+if test x"$compiler_c_o" = x"yes"; then
+  # Check to see if we can write to a .lo
+  echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6
+  if test "${lt_cv_compiler_o_lo+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+  lt_cv_compiler_o_lo=no
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -c -o conftest.lo"
+  save_objext="$ac_objext"
+  ac_objext=lo
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+int some_variable = 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+      # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+    if test -s conftest.err; then
+      lt_cv_compiler_o_lo=no
+    else
+      lt_cv_compiler_o_lo=yes
+    fi
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_objext="$save_objext"
+  CFLAGS="$save_CFLAGS"
+
+fi
+
+  compiler_o_lo=$lt_cv_compiler_o_lo
+  echo "$as_me:$LINENO: result: $compiler_o_lo" >&5
+echo "${ECHO_T}$compiler_o_lo" >&6
+else
+  compiler_o_lo=no
+fi
+
+# Check to see if we can do hard links to lock some files if needed
+hard_links="nottested"
+if test "$compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+if test "$GCC" = yes; then
+  # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
+  echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
+  compiler_rtti_exceptions=no
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+int some_variable = 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+      # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+    if test -s conftest.err; then
+      compiler_rtti_exceptions=no
+    else
+      compiler_rtti_exceptions=yes
+    fi
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$save_CFLAGS"
+  echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$compiler_rtti_exceptions" >&6
+
+  if test "$compiler_rtti_exceptions" = "yes"; then
+    no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
+  else
+    no_builtin_flag=' -fno-builtin'
+  fi
+fi
+
+# See if the linker supports building shared libraries.
+echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+allow_undefined_flag=
+no_undefined_flag=
+need_lib_prefix=unknown
+need_version=unknown
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+archive_cmds=
+archive_expsym_cmds=
+old_archive_from_new_cmds=
+old_archive_from_expsyms_cmds=
+export_dynamic_flag_spec=
+whole_archive_flag_spec=
+thread_safe_flag_spec=
+hardcode_into_libs=no
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+hardcode_shlibpath_var=unsupported
+runpath_var=
+link_all_deplibs=unknown
+always_export_symbols=no
+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
+# include_expsyms should be a list of space-separated symbols to be *always*
+# included in the symbol list
+include_expsyms=
+# exclude_expsyms can be an egrep regular expression of symbols to exclude
+# it will be wrapped by ` (' and `)$', so one must not match beginning or
+# end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+# as well as any symbol that contains `d'.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+# platforms (ab)use it in PIC code, but their linkers get confused if
+# the symbol is explicitly referenced.  Since portable code cannot
+# rely on this symbol name, it's probably fine to never include it in
+# preloaded symbol tables.
+extract_expsyms_cmds=
+
+case $host_os in
+cygwin* | mingw* | pw32*)
+  # FIXME: the MSVC++ port hasn't been tested in a loooong time
+  # When not using gcc, we currently assume that we are using
+  # Microsoft Visual C++.
+  if test "$GCC" != yes; then
+    with_gnu_ld=no
+  fi
+  ;;
+openbsd*)
+  with_gnu_ld=no
+  ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+  # If archive_cmds runs LD, not CC, wlarc should be empty
+  wlarc='${wl}'
+
+  # See if GNU ld supports shared libraries.
+  case $host_os in
+  aix3* | aix4* | aix5*)
+    # On AIX, the GNU linker is very broken
+    # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
+    ld_shlibs=no
+    cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+
+    # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+    # that the semantics of dynamic libraries on AmigaOS, at least up
+    # to version 4, is to share data among multiple programs linked
+    # with the same dynamic library.  Since this doesn't match the
+    # behavior of shared libraries on other platforms, we can use
+    # them.
+    ld_shlibs=no
+    ;;
+
+  beos*)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      allow_undefined_flag=unsupported
+      # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec='-L$libdir'
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+
+    extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
+      sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~
+      test -f $output_objdir/impgen.exe || (cd $output_objdir && \
+      if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
+      else $CC -o impgen impgen.c ; fi)~
+      $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
+
+    old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
+
+    # cygwin and mingw dlls have different entry points and sets of symbols
+    # to exclude.
+    # FIXME: what about values for MSVC?
+    dll_entry=__cygwin_dll_entry at 12
+    dll_exclude_symbols=DllMain at 12,_cygwin_dll_entry at 12,_cygwin_noncygwin_dll_entry at 12~
+    case $host_os in
+    mingw*)
+      # mingw values
+      dll_entry=_DllMainCRTStartup at 12
+      dll_exclude_symbols=DllMain at 12,DllMainCRTStartup at 12,DllEntryPoint at 12~
+      ;;
+    esac
+
+    # mingw and cygwin differ, and it's simplest to just exclude the union
+    # of the two symbol sets.
+    dll_exclude_symbols=DllMain at 12,_cygwin_dll_entry at 12,_cygwin_noncygwin_dll_entry at 12,DllMainCRTStartup at 12,DllEntryPoint at 12
+
+    # recent cygwin and mingw systems supply a stub DllMain which the user
+    # can override, but on older systems we have to supply one (in ltdll.c)
+    if test "x$lt_cv_need_dllmain" = "xyes"; then
+      ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
+      ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~
+	test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
+    else
+      ltdll_obj=
+      ltdll_cmds=
+    fi
+
+    # Extract the symbol export list from an `--export-all' def file,
+    # then regenerate the def file from the symbol export list, so that
+    # the compiled dll only exports the symbol export list.
+    # Be careful not to strip the DATA tag left be newer dlltools.
+    export_symbols_cmds="$ltdll_cmds"'
+      $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
+      sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
+
+    # If the export-symbols file already is a .def file (1st line
+    # is EXPORTS), use it as is.
+    # If DATA tags from a recent dlltool are present, honour them!
+    archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then
+	cp $export_symbols $output_objdir/$soname-def;
+      else
+	echo EXPORTS > $output_objdir/$soname-def;
+	_lt_hint=1;
+	cat $export_symbols | while read symbol; do
+	 set dummy \$symbol;
+	 case \$# in
+	   2) echo "   \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
+	   4) echo "   \$2 \$3 \$4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;;
+	   *) echo "     \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;;
+	 esac;
+	 _lt_hint=`expr 1 + \$_lt_hint`;
+	done;
+      fi~
+      '"$ltdll_cmds"'
+      $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~
+      $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~
+      $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+      wlarc=
+    else
+      archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    fi
+    ;;
+
+  solaris* | sysv5*)
+    if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
+      ld_shlibs=no
+      cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+    elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+  sunos4*)
+    archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    wlarc=
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+  esac
+
+  if test "$ld_shlibs" = yes; then
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    case $host_os in
+    cygwin* | mingw* | pw32*)
+      # dlltool doesn't understand --whole-archive et. al.
+      whole_archive_flag_spec=
+      ;;
+    *)
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+	whole_archive_flag_spec=
+      fi
+      ;;
+    esac
+  fi
+else
+  # PORTME fill in a description of your system's linker (not GNU ld)
+  case $host_os in
+  aix3*)
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+    archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+    # Note: this linker hardcodes the directories in LIBPATH if there
+    # are no directories specified by -L.
+    hardcode_minus_L=yes
+    if test "$GCC" = yes && test -z "$link_static_flag"; then
+      # Neither direct hardcoding nor static linking is supported with a
+      # broken collect2.
+      hardcode_direct=unsupported
+    fi
+    ;;
+
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	for ld_flag in $LDFLAGS; do
+	  case $ld_flag in
+	  *-brtl*)
+	    aix_use_runtimelinking=yes
+	    break
+	  ;;
+	  esac
+	done
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    hardcode_direct=yes
+    archive_cmds=''
+    hardcode_libdir_separator=':'
+    if test "$GCC" = yes; then
+      case $host_os in aix4.[012]|aix4.[012].*)
+	collect2name=`${CC} -print-prog-name=collect2`
+	if test -f "$collect2name" && \
+	  strings "$collect2name" | grep resolve_lib_name >/dev/null
+	then
+	  # We have reworked collect2
+	  hardcode_direct=yes
+	else
+	  # We have old collect2
+	  hardcode_direct=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L=yes
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_libdir_separator=
+	fi
+      esac
+
+      shared_flag='-shared'
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+	shared_flag='${wl}-G'
+      else
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag='${wl}-G'
+	else
+	  shared_flag='${wl}-bM:SRE'
+	fi
+      fi
+    fi
+
+    # It seems that -bexpall can do strange things, so it is better to
+    # generate a list of symbols to export.
+    always_export_symbols=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      allow_undefined_flag='-berok'
+      hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
+      archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+    else
+      if test "$host_cpu" = ia64; then
+	hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	allow_undefined_flag="-z nodefs"
+	archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+	hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
+	# Warning - without using the other run time loading flags,
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='${wl}-berok'
+	# This is a bit strange, but is similar to how AIX traditionally builds
+	# it's shared libraries.
+	archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname'
+      fi
+    fi
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    # see comment about different semantics on the GNU ld section
+    ld_shlibs=no
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec=' '
+    allow_undefined_flag=unsupported
+    # Tell ltmain to make .lib files, not .a files.
+    libext=lib
+    # FIXME: Setting linknames here is a bad hack.
+    archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+    # The linker will automatically build a .lib file if we build a DLL.
+    old_archive_from_new_cmds='true'
+    # FIXME: Should let the user specify the lib program.
+    old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+    fix_srcfile_path='`cygpath -w "$srcfile"`'
+    ;;
+
+  darwin* | rhapsody*)
+    case "$host_os" in
+    rhapsody* | darwin1.[012])
+      allow_undefined_flag='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      allow_undefined_flag='-flat_namespace -undefined suppress'
+      ;;
+    esac
+    # FIXME: Relying on posixy $() will cause problems for
+    #        cross-compilation, but unfortunately the echo tests do not
+    #        yet detect zsh echo's removal of \ escapes.  Also zsh mangles
+    #	     `"' quotes if we put them in here... so don't!
+    archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)'
+    # We need to add '_' to the symbols in $export_symbols first
+    #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    whole_archive_flag_spec='-all_load $convenience'
+    ;;
+
+  freebsd1*)
+    ld_shlibs=no
+    ;;
+
+  # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+  # support.  Future versions do this automatically, but an explicit c++rt0.o
+  # does not break anything, and helps significantly (at the cost of a little
+  # extra space).
+  freebsd2.2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+  freebsd2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+  freebsd*)
+    archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  hpux9* | hpux10* | hpux11*)
+    case $host_os in
+    hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
+    *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
+    esac
+    hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator=:
+    hardcode_direct=yes
+    hardcode_minus_L=yes # Not in the search PATH, but as the default
+			 # location of the library.
+    export_dynamic_flag_spec='${wl}-E'
+    ;;
+
+  irix5* | irix6* | nonstopux*)
+    if test "$GCC" = yes; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    else
+      archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      hardcode_libdir_flag_spec='-rpath $libdir'
+    fi
+    hardcode_libdir_separator=:
+    link_all_deplibs=yes
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+    else
+      archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+    fi
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  newsos6)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    hardcode_shlibpath_var=no
+    ;;
+
+  openbsd*)
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+    else
+      case "$host_os" in
+      openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_libdir_flag_spec='-R$libdir'
+        ;;
+      *)
+        archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+        hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+        ;;
+      esac
+    fi
+    ;;
+
+  os2*)
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    allow_undefined_flag=unsupported
+    archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+    old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+    ;;
+
+  osf3*)
+    if test "$GCC" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    ;;
+
+  osf4* | osf5*)	# as osf3* with the addition of -msym flag
+    if test "$GCC" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+      $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+      #Both c and cxx compiler support -rpath directly
+      hardcode_libdir_flag_spec='-rpath $libdir'
+    fi
+    hardcode_libdir_separator=:
+    ;;
+
+  sco3.2v5*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_shlibpath_var=no
+    runpath_var=LD_RUN_PATH
+    hardcode_runpath_var=yes
+    export_dynamic_flag_spec='${wl}-Bexport'
+    ;;
+
+  solaris*)
+    # gcc --version < 3.0 without binutils cannot create self contained
+    # shared libraries reliably, requiring libgcc.a to resolve some of
+    # the object symbols generated in some cases.  Libraries that use
+    # assert need libgcc.a to resolve __eprintf, for example.  Linking
+    # a copy of libgcc.a into every shared library to guarantee resolving
+    # such symbols causes other problems:  According to Tim Van Holder
+    # <tim.van.holder at pandora.be>, C++ libraries end up with a separate
+    # (to the application) exception stack for one thing.
+    no_undefined_flag=' -z defs'
+    if test "$GCC" = yes; then
+      case `$CC --version 2>/dev/null` in
+      [12].*)
+	cat <<EOF 1>&2
+
+*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
+*** create self contained shared libraries on Solaris systems, without
+*** introducing a dependency on libgcc.a.  Therefore, libtool is disabling
+*** -no-undefined support, which will at least allow you to build shared
+*** libraries.  However, you may find that when you link such libraries
+*** into an application without using GCC, you have to manually add
+*** \`gcc --print-libgcc-file-name\` to the link command.  We urge you to
+*** upgrade to a newer version of GCC.  Another option is to rebuild your
+*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
+
+EOF
+        no_undefined_flag=
+	;;
+      esac
+    fi
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_shlibpath_var=no
+    case $host_os in
+    solaris2.[0-5] | solaris2.[0-5].*) ;;
+    *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+      whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+    esac
+    link_all_deplibs=yes
+    ;;
+
+  sunos4*)
+    if test "x$host_vendor" = xsequent; then
+      # Use $CC to link under sequent, because it throws in some extra .o
+      # files that make .init and .fini sections work.
+      archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+    else
+      archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+    fi
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4)
+    case $host_vendor in
+      sni)
+        archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+        hardcode_direct=yes # is this really true???
+        ;;
+      siemens)
+        ## LD is ld it makes a PLAMLIB
+        ## CC just makes a GrossModule.
+        archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+        reload_cmds='$CC -r -o $output$reload_objs'
+        hardcode_direct=no
+        ;;
+      motorola)
+        archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+        hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+        ;;
+    esac
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4.3*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_shlibpath_var=no
+    export_dynamic_flag_spec='-Bexport'
+    ;;
+
+  sysv5*)
+    no_undefined_flag=' -z text'
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+    hardcode_libdir_flag_spec=
+    hardcode_shlibpath_var=no
+    runpath_var='LD_RUN_PATH'
+    ;;
+
+  uts4*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  dgux*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4*MP*)
+    if test -d /usr/nec; then
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ld_shlibs=yes
+    fi
+    ;;
+
+  sysv4.2uw2*)
+    archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_minus_L=no
+    hardcode_shlibpath_var=no
+    hardcode_runpath_var=yes
+    runpath_var=LD_RUN_PATH
+    ;;
+
+  sysv5uw7* | unixware7*)
+    no_undefined_flag='${wl}-z ${wl}text'
+    if test "$GCC" = yes; then
+      archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+    else
+      archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+    fi
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    ld_shlibs=no
+    ;;
+  esac
+fi
+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+# Check hardcoding attributes.
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var"; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$hardcode_shlibpath_var" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+# PORTME Fill in your ld.so characteristics
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}.so$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+	if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	     echo ' yes '
+	     echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	  :
+	else
+	  can_build_shared=no
+	fi
+	;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can
+    # not hardcode correct soname into executable. Probably we can
+    # add versioning support to collect2, so additional links can
+    # be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}.so$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  hardcode_into_libs=yes
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}.so'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  export_dynamic_flag_spec=-rdynamic
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  need_version=no
+  need_lib_prefix=no
+  case $GCC,$host_os in
+  yes,cygwin*)
+    library_names_spec='$libname.dll.a'
+    soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
+    postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog .libs/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    ;;
+  yes,mingw*)
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
+    sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"`
+    ;;
+  yes,pw32*)
+    library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll'
+    ;;
+  *)
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  # FIXME: Relying on posixy $() will cause problems for
+  #        cross-compilation, but unfortunately the echo tests do not
+  #        yet detect zsh echo's removal of \ escapes.
+  library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)'
+  soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  *)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  dynamic_linker="$host_os dld.sl"
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  shlibpath_var=SHLIB_PATH
+  shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+  library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
+  soname_spec='${libname}${release}.sl$major'
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)          version_type=irix ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
+    soname_spec='${libname}${release}.so$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case "$host_os" in
+    openbsd2.[89] | openbsd2.[89].*)
+      shlibpath_overrides_runpath=no
+      ;;
+    *)
+      shlibpath_overrides_runpath=yes
+      ;;
+    esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+os2*)
+  libname_spec='$name'
+  need_lib_prefix=no
+  library_names_spec='$libname.dll $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_version=no
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  hardcode_into_libs=yes
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
+    soname_spec='$libname.so.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+# Report the final consequences.
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+        test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 12364 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 12462 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+if test "$enable_shared" = yes && test "$GCC" = yes; then
+  case $archive_cmds in
+  *'~'*)
+    # FIXME: we may have to deal with multi-command sequences.
+    ;;
+  '$CC '*)
+    # Test whether the compiler implicitly links with -lc since on some
+    # systems, -lgcc has to come before -lc. If gcc already passes -lc
+    # to ld, don't add -lc before -lgcc.
+    echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+    if test "${lt_cv_archive_cmds_need_lc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  $rm conftest*
+    echo 'static int dummy;' > conftest.$ac_ext
+
+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+      soname=conftest
+      lib=conftest
+      libobjs=conftest.$ac_objext
+      deplibs=
+      wl=$lt_cv_prog_cc_wl
+      compiler_flags=-v
+      linker_flags=-v
+      verstring=
+      output_objdir=.
+      libname=conftest
+      save_allow_undefined_flag=$allow_undefined_flag
+      allow_undefined_flag=
+      if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+      then
+	lt_cv_archive_cmds_need_lc=no
+      else
+	lt_cv_archive_cmds_need_lc=yes
+      fi
+      allow_undefined_flag=$save_allow_undefined_flag
+    else
+      cat conftest.err 1>&5
+    fi
+fi
+
+    echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5
+echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6
+    ;;
+  esac
+fi
+need_lc=${lt_cv_archive_cmds_need_lc-yes}
+
+# The second clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  :
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  test -f Makefile && make "$ltmain"
+fi
+
+if test -f "$ltmain"; then
+  trap "$rm \"${ofile}T\"; exit 1" 1 2 15
+  $rm -f "${ofile}T"
+
+  echo creating $ofile
+
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS SED \
+    AR AR_FLAGS CC LD LN_S NM SHELL \
+    reload_flag reload_cmds wl \
+    pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
+    thread_safe_flag_spec whole_archive_flag_spec libname_spec \
+    library_names_spec soname_spec \
+    RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
+    old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
+    postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
+    old_striplib striplib file_magic_cmd export_symbols_cmds \
+    deplibs_check_method allow_undefined_flag no_undefined_flag \
+    finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
+    global_symbol_to_c_name_address \
+    hardcode_libdir_flag_spec hardcode_libdir_separator  \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
+
+    case $var in
+    reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
+    extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  cat <<__EOF__ > "${ofile}T"
+#! $SHELL
+
+# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# 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.
+
+# A sed that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="${SED} -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$need_lc
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# The default C compiler.
+CC=$lt_CC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_pic_flag
+pic_mode=$pic_mode
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_compiler_c_o
+
+# Can we write directly to a .lo ?
+compiler_o_lo=$lt_compiler_o_lo
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_link_static_flag
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "${ofile}T"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | os2*)
+    cat <<'EOF' >> "${ofile}T"
+      # This is a source program that is used to create dlls on Windows
+      # Don't remove nor modify the starting and closing comments
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+	# This is a source program that is used to create import libraries
+	# on Windows for dlls which lack them. Don't remove nor modify the
+	# starting and closing comments
+# /* impgen.c starts here */
+# /*   Copyright (C) 1999-2000 Free Software Foundation, Inc.
+#
+#  This file is part of GNU libtool.
+#
+#  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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#  */
+#
+# #include <stdio.h>		/* for printf() */
+# #include <unistd.h>		/* for open(), lseek(), read() */
+# #include <fcntl.h>		/* for O_RDONLY, O_BINARY */
+# #include <string.h>		/* for strdup() */
+#
+# /* O_BINARY isn't required (or even defined sometimes) under Unix */
+# #ifndef O_BINARY
+# #define O_BINARY 0
+# #endif
+#
+# static unsigned int
+# pe_get16 (fd, offset)
+#      int fd;
+#      int offset;
+# {
+#   unsigned char b[2];
+#   lseek (fd, offset, SEEK_SET);
+#   read (fd, b, 2);
+#   return b[0] + (b[1]<<8);
+# }
+#
+# static unsigned int
+# pe_get32 (fd, offset)
+#     int fd;
+#     int offset;
+# {
+#   unsigned char b[4];
+#   lseek (fd, offset, SEEK_SET);
+#   read (fd, b, 4);
+#   return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+# }
+#
+# static unsigned int
+# pe_as32 (ptr)
+#      void *ptr;
+# {
+#   unsigned char *b = ptr;
+#   return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+# }
+#
+# int
+# main (argc, argv)
+#     int argc;
+#     char *argv[];
+# {
+#     int dll;
+#     unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
+#     unsigned long export_rva, export_size, nsections, secptr, expptr;
+#     unsigned long name_rvas, nexp;
+#     unsigned char *expdata, *erva;
+#     char *filename, *dll_name;
+#
+#     filename = argv[1];
+#
+#     dll = open(filename, O_RDONLY|O_BINARY);
+#     if (dll < 1)
+# 	return 1;
+#
+#     dll_name = filename;
+#
+#     for (i=0; filename[i]; i++)
+# 	if (filename[i] == '/' || filename[i] == '\\'  || filename[i] == ':')
+# 	    dll_name = filename + i +1;
+#
+#     pe_header_offset = pe_get32 (dll, 0x3c);
+#     opthdr_ofs = pe_header_offset + 4 + 20;
+#     num_entries = pe_get32 (dll, opthdr_ofs + 92);
+#
+#     if (num_entries < 1) /* no exports */
+# 	return 1;
+#
+#     export_rva = pe_get32 (dll, opthdr_ofs + 96);
+#     export_size = pe_get32 (dll, opthdr_ofs + 100);
+#     nsections = pe_get16 (dll, pe_header_offset + 4 +2);
+#     secptr = (pe_header_offset + 4 + 20 +
+# 	      pe_get16 (dll, pe_header_offset + 4 + 16));
+#
+#     expptr = 0;
+#     for (i = 0; i < nsections; i++)
+#     {
+# 	char sname[8];
+# 	unsigned long secptr1 = secptr + 40 * i;
+# 	unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
+# 	unsigned long vsize = pe_get32 (dll, secptr1 + 16);
+# 	unsigned long fptr = pe_get32 (dll, secptr1 + 20);
+# 	lseek(dll, secptr1, SEEK_SET);
+# 	read(dll, sname, 8);
+# 	if (vaddr <= export_rva && vaddr+vsize > export_rva)
+# 	{
+# 	    expptr = fptr + (export_rva - vaddr);
+# 	    if (export_rva + export_size > vaddr + vsize)
+# 		export_size = vsize - (export_rva - vaddr);
+# 	    break;
+# 	}
+#     }
+#
+#     expdata = (unsigned char*)malloc(export_size);
+#     lseek (dll, expptr, SEEK_SET);
+#     read (dll, expdata, export_size);
+#     erva = expdata - export_rva;
+#
+#     nexp = pe_as32 (expdata+24);
+#     name_rvas = pe_as32 (expdata+32);
+#
+#     printf ("EXPORTS\n");
+#     for (i = 0; i<nexp; i++)
+#     {
+# 	unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
+# 	printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
+#     }
+#
+#     return 0;
+# }
+# /* impgen.c ends here */
+
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1)
+
+  mv -f "${ofile}T" "$ofile" || \
+    (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T")
+  chmod +x "$ofile"
+fi
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+# Set examples modules
+
+
+# Check libtool settings to determine which compiler and linker commands
+# should be used
+# Must export LIBTOOL_CMD, COMPILER_PREFIX and LINKER_PREFIX via AC_SUBST
+# If building shared libraries, then use libtool
+if test "X${enable_shared}" = "Xyes"; then
+
+  LIBTOOL_CMD="LIBTOOL = ${LIBTOOL}"
+  COMPILER_PREFIX="\$(LIBTOOL) --mode=compile"
+  LINKER_PREFIX="\$(LIBTOOL) --mode=link"
+
+# If building static libraries, then use regular C compiler
+else
+
+  LIBTOOL_CMD=""
+  COMPILER_PREFIX=""
+  LINKER_PREFIX=""
+
+fi
+
+# Check if we need to build the Fortran examples
+# Recall F77_ENABLED is set based upon CVODE_ENABLED and KINSOL_ENABLED,
+# so the check here is rather simple:
+# F77_EXAMPLES = F77_ENABLED
+F77_EXAMPLES="no";
+if test "X${F77_ENABLED}" = "Xyes"; then
+  F77_EXAMPLES="yes"
+fi
+
+# Check if we need to build the C++ examples
+CXX_EXAMPLES="no"
+if test "X${EXAMPLES_ENABLED}" = "Xyes" && test "X${CXX_ENABLED}" = "Xyes"; then
+  if test "X${CVODES_ENABLED}" = "Xyes" || test "X${IDAS_ENABLED}" = "Xyes"; then
+    CXX_EXAMPLES="yes"
+  fi
+fi
+
+# Check if examples can actually be built
+SERIAL_C_EXAMPLES="no"
+SERIAL_CXX_EXAMPLES="no"
+SERIAL_F77_EXAMPLES="no"
+
+PARALLEL_C_EXAMPLES="no"
+PARALLEL_CXX_EXAMPLES="no"
+PARALLEL_F77_EXAMPLES="no"
+
+# Check C examples
+if test "X${EXAMPLES_ENABLED}" = "Xyes"; then
+
+  echo "$as_me:$LINENO: checking if we can build serial C examples" >&5
+echo $ECHO_N "checking if we can build serial C examples... $ECHO_C" >&6
+  SERIAL_C_EXAMPLES="yes"
+  echo "$as_me:$LINENO: result: ${SERIAL_C_EXAMPLES}" >&5
+echo "${ECHO_T}${SERIAL_C_EXAMPLES}" >&6
+
+  if test "X${MPI_ENABLED}" = "Xyes"; then
+
+    echo "$as_me:$LINENO: checking if we can build parallel C examples" >&5
+echo $ECHO_N "checking if we can build parallel C examples... $ECHO_C" >&6
+    if test "X${MPI_C_COMP_OK}" = "Xyes"; then
+      PARALLEL_C_EXAMPLES="yes"
+    fi
+    echo "$as_me:$LINENO: result: ${PARALLEL_C_EXAMPLES}" >&5
+echo "${ECHO_T}${PARALLEL_C_EXAMPLES}" >&6
+
+  fi
+
+fi
+
+# Check Fortran examples
+if test "X${F77_EXAMPLES}" = "Xyes"; then
+
+  echo "$as_me:$LINENO: checking if we can build serial Fortran examples" >&5
+echo $ECHO_N "checking if we can build serial Fortran examples... $ECHO_C" >&6
+  if test "X${F77_OK}" = "Xyes"; then
+    SERIAL_F77_EXAMPLES="yes"
+  fi
+  echo "$as_me:$LINENO: result: ${SERIAL_F77_EXAMPLES}" >&5
+echo "${ECHO_T}${SERIAL_F77_EXAMPLES}" >&6
+
+  if test "X${MPI_ENABLED}" = "Xyes"; then
+
+    echo "$as_me:$LINENO: checking if we can build parallel Fortran examples" >&5
+echo $ECHO_N "checking if we can build parallel Fortran examples... $ECHO_C" >&6
+    if test "X${MPI_F77_COMP_OK}" = "Xyes"; then
+      PARALLEL_F77_EXAMPLES="yes"
+    fi
+    echo "$as_me:$LINENO: result: ${PARALLEL_F77_EXAMPLES}" >&5
+echo "${ECHO_T}${PARALLEL_F77_EXAMPLES}" >&6
+
+  fi
+
+fi
+
+# Check if the Fortran update script (config/fortran_update.in) should
+# be initialized
+BUILD_F77_UPDATE_SCRIPT="no"
+if test "X${SERIAL_F77_EXAMPLES}" = "Xyes" || test "X${PARALLEL_F77_EXAMPLES}" = "Xyes"; then
+  BUILD_F77_UPDATE_SCRIPT="yes";
+fi
+
+# Check C++ examples
+if test "X${CXX_EXAMPLES}" = "Xyes"; then
+
+  echo "$as_me:$LINENO: checking if we can build serial C++ examples" >&5
+echo $ECHO_N "checking if we can build serial C++ examples... $ECHO_C" >&6
+  if test "X${CXX_OK}" = "Xyes"; then
+    SERIAL_CXX_EXAMPLES="yes"
+  fi
+  echo "$as_me:$LINENO: result: ${SERIAL_CXX_EXAMPLES}" >&5
+echo "${ECHO_T}${SERIAL_CXX_EXAMPLES}" >&6
+
+  if test "X${MPI_ENABLED}" = "Xyes"; then
+
+    echo "$as_me:$LINENO: checking if we can build parallel C++ examples" >&5
+echo $ECHO_N "checking if we can build parallel C++ examples... $ECHO_C" >&6
+    if test "X${MPI_CXX_COMP_OK}" = "Xyes"; then
+      PARALLEL_CXX_EXAMPLES="yes"
+    fi
+    echo "$as_me:$LINENO: result: ${PARALLEL_CXX_EXAMPLES}" >&5
+echo "${ECHO_T}${PARALLEL_CXX_EXAMPLES}" >&6
+
+  fi
+
+fi
+
+# Disable developer examples be default so output logic still works
+PARALLEL_DEV_C_EXAMPLES="no"
+
+RAN_ENABLE_DEV_EXAMPLES="no"
+
+
+
+# Substitute variables
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Set installation path
+
+
+# Test for installation directories.
+# If installing in the build directory (prefix was not specified) and the lib
+# and/or include dirs. do not exists, create them.
+
+echo "$as_me:$LINENO: checking for 'include' directory" >&5
+echo $ECHO_N "checking for 'include' directory... $ECHO_C" >&6
+if test "X${prefix}" = "XNONE"; then
+  SUNDIALS_INC_DIR="${DEFAULT_PREFIX}/include"
+  if test -d ${SUNDIALS_INC_DIR} ; then
+    :
+  else
+    { if $as_mkdir_p; then
+    mkdir -p ${SUNDIALS_INC_DIR}
+  else
+    as_dir=${SUNDIALS_INC_DIR}
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory ${SUNDIALS_INC_DIR}" >&5
+echo "$as_me: error: cannot create directory ${SUNDIALS_INC_DIR}" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  fi
+else
+  SUNDIALS_INC_DIR="${prefix}/include"
+fi
+echo "$as_me:$LINENO: result: ${SUNDIALS_INC_DIR}" >&5
+echo "${ECHO_T}${SUNDIALS_INC_DIR}" >&6
+
+echo "$as_me:$LINENO: checking for 'lib' directory" >&5
+echo $ECHO_N "checking for 'lib' directory... $ECHO_C" >&6
+if test "X${exec_prefix}" = "XNONE"; then
+  if test "X${prefix}" = "XNONE"; then
+    SUNDIALS_LIB_DIR="${DEFAULT_PREFIX}/lib"
+    if test -d ${SUNDIALS_LIB_DIR} ; then
+      :
+    else
+      { if $as_mkdir_p; then
+    mkdir -p ${SUNDIALS_LIB_DIR}
+  else
+    as_dir=${SUNDIALS_LIB_DIR}
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory ${SUNDIALS_LIB_DIR}" >&5
+echo "$as_me: error: cannot create directory ${SUNDIALS_LIB_DIR}" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+    fi
+  else
+    SUNDIALS_LIB_DIR="${prefix}/lib"
+  fi
+else
+  SUNDIALS_LIB_DIR="${exec_prefix}/lib"
+fi
+echo "$as_me:$LINENO: result: ${SUNDIALS_LIB_DIR}" >&5
+echo "${ECHO_T}${SUNDIALS_LIB_DIR}" >&6
+
+
+
+# Generate makefiles
+
+
+EXAMPLE_MODULES=""
+SUNDIALS_MAKEFILES="Makefile"
+
+# SHARED module (always required)
+MODULES="shared/source"
+SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} shared/source/Makefile"
+
+# NVECTOR modules (serial and parallel)
+NVEC_MODULES=""
+if test -d ${srcdir}/nvec_ser ; then
+  NVEC_MODULES="nvec_ser"
+  SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} nvec_ser/Makefile"
+fi
+
+if test -d ${srcdir}/nvec_par && test "X${MPI_C_COMP_OK}" = "Xyes"; then
+  NVEC_MODULES="${NVEC_MODULES} nvec_par"
+  SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} nvec_par/Makefile"
+fi
+
+# CVODE module
+if test "X${CVODE_ENABLED}" = "Xyes"; then
+
+  MODULES="${MODULES} cvode/source"
+  SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} cvode/source/Makefile"
+
+  if test "X${FCMIX_ENABLED}" = "Xyes"; then
+    MODULES="${MODULES} cvode/fcmix"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} cvode/fcmix/Makefile"
+  fi
+
+  if test "X${SERIAL_C_EXAMPLES}" = "Xyes" && test -d ${srcdir}/cvode/examples_ser ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} cvode/examples_ser"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} cvode/examples_ser/Makefile"
+  fi
+
+  if test "X${PARALLEL_C_EXAMPLES}" = "Xyes" && test -d ${srcdir}/cvode/examples_par ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} cvode/examples_par"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} cvode/examples_par/Makefile"
+  fi
+
+  if test "X${SERIAL_F77_EXAMPLES}" = "Xyes" && test -d ${srcdir}/cvode/fcmix/examples_ser ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} cvode/fcmix/examples_ser"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} cvode/fcmix/examples_ser/Makefile"
+  fi
+
+  if test "X${PARALLEL_F77_EXAMPLES}" = "Xyes" && test -d ${srcdir}/cvode/fcmix/examples_par ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} cvode/fcmix/examples_par"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} cvode/fcmix/examples_par/Makefile"
+  fi
+
+fi
+
+# CVODES module
+if test "X${CVODES_ENABLED}" = "Xyes"; then
+
+  MODULES="${MODULES} cvodes/source"
+  SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} cvodes/source/Makefile"
+
+  if test "X${SERIAL_C_EXAMPLES}" = "Xyes" && test -d ${srcdir}/cvodes/examples_ser ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} cvodes/examples_ser"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} cvodes/examples_ser/Makefile"
+  fi
+
+  if test "X${PARALLEL_C_EXAMPLES}" = "Xyes" && test -d ${srcdir}/cvodes/examples_par ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} cvodes/examples_par"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} cvodes/examples_par/Makefile"
+  fi
+
+  if test "X${PARALLEL_DEV_C_EXAMPLES}" = "Xyes" && test -d ${srcdir}/cvodes/test_examples_par ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} cvodes/test_examples_par"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} cvodes/test_examples_par/Makefile"
+  fi
+
+fi
+
+# IDA module
+if test "X${IDA_ENABLED}" = "Xyes"; then
+
+  MODULES="${MODULES} ida/source"
+  SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} ida/source/Makefile"
+
+  if test "X${SERIAL_C_EXAMPLES}" = "Xyes" && test -d ${srcdir}/ida/examples_ser ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} ida/examples_ser"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} ida/examples_ser/Makefile"
+  fi
+
+  if test "X${PARALLEL_C_EXAMPLES}" = "Xyes" && test -d ${srcdir}/ida/examples_par ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} ida/examples_par"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} ida/examples_par/Makefile"
+  fi
+
+fi
+
+# IDAS module
+if test "X${IDAS_ENABLED}" = "Xyes"; then
+
+  MODULES="${MODULES} idas/source"
+  SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} idas/source/Makefile"
+
+  if test "X${SERIAL_C_EXAMPLES}" = "Xyes" && test -d ${srcdir}/idas/examples_ser ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} idas/examples_ser"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} idas/examples_ser/Makefile"
+  fi
+
+  if test "X${PARALLEL_C_EXAMPLES}" = "Xyes" && test -d ${srcdir}/idas/examples_par ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} idas/examples_par"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} idas/examples_par/Makefile"
+  fi
+
+fi
+
+# KINSOL module
+if test "X${KINSOL_ENABLED}" = "Xyes"; then
+
+  MODULES="${MODULES} kinsol/source"
+  SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} kinsol/source/Makefile"
+
+  if test "X${FCMIX_ENABLED}" = "Xyes"; then
+    MODULES="${MODULES} kinsol/fcmix"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} kinsol/fcmix/Makefile"
+  fi
+
+  if test "X${SERIAL_C_EXAMPLES}" = "Xyes" && test -d ${srcdir}/kinsol/examples_ser ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} kinsol/examples_ser"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} kinsol/examples_ser/Makefile"
+  fi
+
+  if test "X${PARALLEL_C_EXAMPLES}" = "Xyes" && test -d ${srcdir}/kinsol/examples_par ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} kinsol/examples_par"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} kinsol/examples_par/Makefile"
+  fi
+
+  if test "X${SERIAL_F77_EXAMPLES}" = "Xyes" && test -d ${srcdir}/kinsol/fcmix/examples_ser ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} kinsol/fcmix/examples_ser"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} kinsol/fcmix/examples_ser/Makefile"
+  fi
+
+  if test "X${PARALLEL_F77_EXAMPLES}" = "Xyes" && test -d ${srcdir}/kinsol/fcmix/examples_par ; then
+    EXAMPLE_MODULES="${EXAMPLE_MODULES} kinsol/fcmix/examples_par"
+    SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} kinsol/fcmix/examples_par/Makefile"
+  fi
+
+fi
+
+# Fortran update script
+if test "X${BUILD_F77_UPDATE_SCRIPT}" = "Xyes"; then
+  SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} config/fortran_update.sh:config/fortran_update.in"
+fi
+
+# Create sundials_config.h header file
+SUNDIALS_MAKEFILES="${SUNDIALS_MAKEFILES} config/sundials_config.h:config/sundials_config.in"
+
+
+          ac_config_files="$ac_config_files ${SUNDIALS_MAKEFILES}"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;;
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n \
+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+  if test -w $cache_file; then
+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+    cat confcache >$cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[	 ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[	 ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_i=`echo "$ac_i" |
+	 sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+  # 2. Add them.
+  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.  Logging --version etc. is OK.
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by SUNDIALS $as_me 2.1.1, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+		   instantiate the configuration file FILE
+  --header=FILE[:TEMPLATE]
+		   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Report bugs to <bug-autoconf at gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+SUNDIALS config.status 2.1.1
+configured by $0, generated by GNU Autoconf 2.59,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  -*)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_option=$1
+     ac_need_defaults=false;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "${SUNDIALS_MAKEFILES}" ) CONFIG_FILES="$CONFIG_FILES ${SUNDIALS_MAKEFILES}" ;;
+  "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.hin" ;;
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./confstat$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s, at SHELL@,$SHELL,;t t
+s, at PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s, at PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s, at PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s, at PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s, at PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s, at PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s, at exec_prefix@,$exec_prefix,;t t
+s, at prefix@,$prefix,;t t
+s, at program_transform_name@,$program_transform_name,;t t
+s, at bindir@,$bindir,;t t
+s, at sbindir@,$sbindir,;t t
+s, at libexecdir@,$libexecdir,;t t
+s, at datadir@,$datadir,;t t
+s, at sysconfdir@,$sysconfdir,;t t
+s, at sharedstatedir@,$sharedstatedir,;t t
+s, at localstatedir@,$localstatedir,;t t
+s, at libdir@,$libdir,;t t
+s, at includedir@,$includedir,;t t
+s, at oldincludedir@,$oldincludedir,;t t
+s, at infodir@,$infodir,;t t
+s, at mandir@,$mandir,;t t
+s, at build_alias@,$build_alias,;t t
+s, at host_alias@,$host_alias,;t t
+s, at target_alias@,$target_alias,;t t
+s, at DEFS@,$DEFS,;t t
+s, at ECHO_C@,$ECHO_C,;t t
+s, at ECHO_N@,$ECHO_N,;t t
+s, at ECHO_T@,$ECHO_T,;t t
+s, at LIBS@,$LIBS,;t t
+s, at build@,$build,;t t
+s, at build_cpu@,$build_cpu,;t t
+s, at build_vendor@,$build_vendor,;t t
+s, at build_os@,$build_os,;t t
+s, at host@,$host,;t t
+s, at host_cpu@,$host_cpu,;t t
+s, at host_vendor@,$host_vendor,;t t
+s, at host_os@,$host_os,;t t
+s, at SET_MAKE@,$SET_MAKE,;t t
+s, at INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s, at INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s, at INSTALL_DATA@,$INSTALL_DATA,;t t
+s, at CC@,$CC,;t t
+s, at CFLAGS@,$CFLAGS,;t t
+s, at LDFLAGS@,$LDFLAGS,;t t
+s, at CPPFLAGS@,$CPPFLAGS,;t t
+s, at ac_ct_CC@,$ac_ct_CC,;t t
+s, at EXEEXT@,$EXEEXT,;t t
+s, at OBJEXT@,$OBJEXT,;t t
+s, at CC_COMP@,$CC_COMP,;t t
+s, at CPP@,$CPP,;t t
+s, at EGREP@,$EGREP,;t t
+s, at FGREP@,$FGREP,;t t
+s, at F77@,$F77,;t t
+s, at FFLAGS@,$FFLAGS,;t t
+s, at ac_ct_F77@,$ac_ct_F77,;t t
+s, at F77_COMP@,$F77_COMP,;t t
+s, at FLIBS@,$FLIBS,;t t
+s, at MPICC_COMP@,$MPICC_COMP,;t t
+s, at MPIF77_COMP@,$MPIF77_COMP,;t t
+s, at LN_S@,$LN_S,;t t
+s, at ECHO@,$ECHO,;t t
+s, at RANLIB@,$RANLIB,;t t
+s, at ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s, at STRIP@,$STRIP,;t t
+s, at ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s, at LIBTOOL@,$LIBTOOL,;t t
+s, at COMPILER_PREFIX@,$COMPILER_PREFIX,;t t
+s, at LINKER_PREFIX@,$LINKER_PREFIX,;t t
+s, at MPICC@,$MPICC,;t t
+s, at MPIF77@,$MPIF77,;t t
+s, at MPI_INC_DIR@,$MPI_INC_DIR,;t t
+s, at MPI_LIB_DIR@,$MPI_LIB_DIR,;t t
+s, at MPI_LIBS@,$MPI_LIBS,;t t
+s, at MPI_FLAGS@,$MPI_FLAGS,;t t
+s, at MODULES@,$MODULES,;t t
+s, at NVEC_MODULES@,$NVEC_MODULES,;t t
+s, at EXAMPLE_MODULES@,$EXAMPLE_MODULES,;t t
+s, at FCMIX_ENABLED@,$FCMIX_ENABLED,;t t
+s, at FLOAT_TYPE@,$FLOAT_TYPE,;t t
+s, at LIBTOOL_CMD@,$LIBTOOL_CMD,;t t
+s, at LIBTOOL_DEPS@,$LIBTOOL_DEPS,;t t
+s, at F77_MANGLE_MACRO@,$F77_MANGLE_MACRO,;t t
+s, at F77_CASE@,$F77_CASE,;t t
+s, at F77_UNDERSCORES@,$F77_UNDERSCORES,;t t
+s, at PRECISION_LEVEL@,$PRECISION_LEVEL,;t t
+s, at GENERIC_MATH_LIB@,$GENERIC_MATH_LIB,;t t
+s, at LIBOBJS@,$LIBOBJS,;t t
+s, at LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+  cat >>$CONFIG_STATUS <<\_ACEOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  esac
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    configure_input=
+  else
+    configure_input="$ac_file.  "
+  fi
+  configure_input=$configure_input"Generated from `echo $ac_file_in |
+				     sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s, at configure_input@,$configure_input,;t t
+s, at srcdir@,$ac_srcdir,;t t
+s, at abs_srcdir@,$ac_abs_srcdir,;t t
+s, at top_srcdir@,$ac_top_srcdir,;t t
+s, at abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s, at builddir@,$ac_builddir,;t t
+s, at abs_builddir@,$ac_abs_builddir,;t t
+s, at top_builddir@,$ac_top_builddir,;t t
+s, at abs_top_builddir@,$ac_abs_top_builddir,;t t
+s, at INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([	 ]*\)#\([	 ]*define[	 ][	 ]*\)'
+ac_dB='[	 ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([	 ]*\)#\([	 ]*\)undef\([	 ][	 ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 # Do quote $f, to prevent DOS paths from being IFS'd.
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[	 ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h.  The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status.  Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*\)\(([^)]*)\)[	 ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless.  Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[	 ]*#[	 ]*undef[	 ][	 ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo '  if grep "^[	 ]*#[	 ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo '  :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+  # Write a limited-size here document to $tmp/defines.sed.
+  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#define' lines.
+  echo '/^[	 ]*#[	 ]*define/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/defines.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+  rm -f conftest.defines
+  mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo '  fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+  # Write a limited-size here document to $tmp/undefs.sed.
+  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#undef'
+  echo '/^[	 ]*#[	 ]*undef/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+  rm -f conftest.undefs
+  mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    echo "/* Generated by configure.  */" >$tmp/config.h
+  else
+    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" != x-; then
+    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+      { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
+    fi
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
+  fi
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+
+# Display summary
+
+
+echo "
+------------------------------
+SUNDIALS Configuration Summary
+------------------------------"
+
+echo "
+Configuration:
+--------------
+
+  Host System:             ${host}
+  Build System:            ${build}
+  Source Code Location:    ${srcdir}
+  Install Path (include):  ${SUNDIALS_INC_DIR}
+  Install Path (lib):      ${SUNDIALS_LIB_DIR}
+
+  C Preprocessor:          ${CPP} ${CPPFLAGS}
+  C Compiler:	           ${CC} ${CFLAGS}
+  C Linker:                ${CC} ${LDFLAGS} ${LIBS}"
+
+if test "X${CXX_ENABLED}" = "Xyes" && test "X${CXX_OK}" = "Xyes"; then
+echo "
+  C++ Preprocessor:        ${CPPCXX} ${CPPFLAGS}
+  C++ Compiler:            ${CXX} ${CXXFLAGS}"
+fi
+
+if test "X${F77_ENABLED}" = "Xyes" && test "X${F77_OK}" = "Xyes"; then
+echo "
+  F77 Compiler:            ${F77} ${FFLAGS}
+  F77 Linker:              ${F77} ${LDFLAGS} ${LIBS} ${FLIBS}"
+fi
+
+if test "X${MPI_ENABLED}" = "Xyes" && test "X${MPI_C_COMP_OK}" = "Xyes"; then
+echo "
+  MPI-C:                   ${MPICC}"
+fi
+
+if test "X${MPI_ENABLED}" = "Xyes" && test "X${CXX_ENABLED}" = "Xyes" && test "X${MPI_CXX_COMP_OK}" = "Xyes"; then
+echo "
+  MPI-C++:                 ${MPICXX}"
+fi
+
+if test "X${MPI_ENABLED}" = "Xyes" && test "X${F77_ENABLED}" = "Xyes" && test "X${MPI_F77_COMP_OK}" = "Xyes"; then
+echo "
+  MPI-F77:                 ${MPIF77}"
+fi
+
+if test "X${MPI_ENABLED}" = "Xyes" && test "X${MPI_C_COMP_OK}" = "Xyes" && test "X${MPI_FLAGS_OK}" = "Xyes"; then
+echo "
+  MPI Flags:               ${MPI_FLAGS}"
+fi
+
+if test "X${MPI_ENABLED}" = "Xyes" && test "X${MPI_C_COMP_OK}" = "Xyes" && test "X${USE_MPICC_SCRIPT}" = "Xno"; then
+echo "
+  MPI Include Directory:   ${MPI_INC_DIR}
+  MPI Library Directory:   ${MPI_LIB_DIR}
+  MPI Libraries:           ${MPI_LIBS}"
+fi
+
+echo "
+  Type 'make' and then 'make install' to build and install ${PACKAGE_STRING}"
+
+echo "
+Modules:
+--------
+"
+
+if test "X${KINSOL_ENABLED}" = "Xyes"; then
+echo "  KINSOL"
+fi
+if test "X${CVODE_ENABLED}" = "Xyes"; then
+echo "  CVODE"
+fi
+if test "X${CVODES_ENABLED}" = "Xyes"; then
+echo "  CVODES"
+fi
+if test "X${IDA_ENABLED}" = "Xyes"; then
+echo "  IDA"
+fi
+if test "X${IDAS_ENABLED}" = "Xyes"; then
+echo "  IDAS"
+fi
+
+if test "X${EXAMPLES_ENABLED}" = "Xyes"; then
+
+echo "
+Examples:
+---------
+
+  Type 'make examples' to build the following examples:
+"
+
+if test "X${SERIAL_C_EXAMPLES}" = "Xyes"; then
+  C_SERIAL_BOX="YES"
+else
+  C_SERIAL_BOX="NO "
+fi
+C_PARALLEL_BOX="N/A"
+if test "X${PARALLEL_C_EXAMPLES}" = "Xyes"; then
+  C_PARALLEL_BOX="YES"
+elif test "X${MPI_ENABLED}" = "Xyes" && test "X${MPI_C_COMP_OK}" = "Xno"; then
+  C_PARALLEL_BOX="NO "
+fi
+C_DEV_SERIAL_BOX="N/A"
+C_DEV_PARALLEL_BOX="N/A"
+if test "X${PARALLEL_DEV_C_EXAMPLES}" = "Xyes"; then
+  C_DEV_PARALLEL_BOX="YES"
+elif test "X${CVODES_ENABLED}" = "Xyes" && test "X${MPI_C_COMP_OK}" = "Xno"; then
+  C_DEV_PARALLEL_BOX="NO "
+fi
+
+CXX_SERIAL_BOX="N/A"
+if test "X${SERIAL_CXX_EXAMPLES}" = "Xyes"; then
+  CXX_SERIAL_BOX="YES"
+elif test "X${CXX_ENABLED}" = "Xyes" && test "X${CXX_OK}" = "Xno"; then
+  CXX_SERIAL_BOX="NO "
+fi
+CXX_PARALLEL_BOX="N/A"
+if test "X${PARALLEL_CXX_EXAMPLES}" = "Xyes"; then
+  CXX_PARALLEL_BOX="YES"
+elif test "X${CXX_ENABLED}" = "Xyes" && test "X${MPI_ENABLED}" = "Xyes" && test "X${MPI_CXX_COMP_OK}" = "Xno"; then
+  CXX_PARALLEL_BOX="NO "
+fi
+CXX_DEV_SERIAL_BOX="N/A"
+CXX_DEV_PARALLEL_BOX="N/A"
+
+F77_SERIAL_BOX="N/A"
+if test "X${SERIAL_F77_EXAMPLES}" = "Xyes"; then
+  F77_SERIAL_BOX="YES"
+elif test "X${F77_ENABLED}" = "Xyes" && test "X${F77_OK}" = "Xno"; then
+  F77_SERIAL_BOX="NO "
+fi
+F77_DEV_SERIAL_BOX="N/A"
+F77_DEV_PARALLEL_BOX="N/A"
+if test "X${PARALLEL_F77_EXAMPLES}" = "Xyes"; then
+  F77_PARALLEL_BOX="YES"
+elif test "X${F77_ENABLED}" = "Xyes" && test "X${MPI_ENABLED}" = "Xyes" && test "X${MPI_F77_COMP_OK}" = "Xno"; then
+  F77_PARALLEL_BOX="NO "
+fi
+
+if test "X${MPI_ENABLED}" = "Xyes"; then
+
+  if test "X${RAN_ENABLE_DEV_EXAMPLES}" = "Xno"; then
+
+    echo "            SERIAL    PARALLEL"
+    echo "          ---------------------"
+    echo " C       |    ${C_SERIAL_BOX}   |    ${C_PARALLEL_BOX}   |"
+    echo "          ---------------------"
+
+    if test "X${CXX_ENABLED}" = "Xyes"; then
+      echo " C++     |    ${CXX_SERIAL_BOX}   |    ${CXX_PARALLEL_BOX}   |"
+      echo "          ---------------------"
+    fi
+
+    if test "X${F77_ENABLED}" = "Xyes"; then
+      echo " Fortran |    ${F77_SERIAL_BOX}   |    ${F77_PARALLEL_BOX}   |"
+      echo "          ---------------------"
+    fi
+
+  elif test "X${RAN_ENABLE_DEV_EXAMPLES}" = "Xyes"; then
+
+    echo "            SERIAL    PARALLEL    DEV_SERIAL    DEV_PARALLEL"
+    echo "          ---------------------------------------------------"
+    echo " C       |    ${C_SERIAL_BOX}   |    ${C_PARALLEL_BOX}   |      ${C_DEV_SERIAL_BOX}     |      ${C_DEV_PARALLEL_BOX}     |"
+    echo "          ---------------------------------------------------"
+
+    if test "X${CXX_ENABLED}" = "Xyes"; then
+      echo " C++     |    ${CXX_SERIAL_BOX}   |    ${CXX_PARALLEL_BOX}   |      ${CXX_DEV_SERIAL_BOX}     |      ${CXX_DEV_PARALLEL_BOX}     |"
+      echo "          ---------------------------------------------------"
+    fi
+
+    if test "X${F77_ENABLED}" = "Xyes"; then
+      echo " Fortran |    ${F77_SERIAL_BOX}   |    ${F77_PARALLEL_BOX}   |      ${F77_DEV_SERIAL_BOX}     |      ${F77_DEV_PARALLEL_BOX}     |"
+      echo "          ---------------------------------------------------"
+    fi
+
+  fi
+
+else
+
+  if test "X${RAN_ENABLE_DEV_EXAMPLES}" = "Xno"; then
+
+    echo "           SERIAL"
+    echo "          --------"
+    echo " C       |   ${C_SERIAL_BOX}  |"
+    echo "          --------"
+
+    if test "X${CXX_ENABLED}" = "Xyes"; then
+      echo " C++     |   ${CXX_SERIAL_BOX}  |"
+      echo "          --------"
+    fi
+
+    if test "X${F77_ENABLED}" = "Xyes"; then
+      echo " Fortran |   ${F77_SERIAL_BOX}  |"
+      echo "          --------"
+   fi
+
+  elif test "X${RAN_ENABLE_DEV_EXAMPLES}" = "Xyes"; then
+
+    echo "           SERIAL   DEV_SERIAL"
+    echo "          ---------------------"
+    echo " C       |   ${C_SERIAL_BOX}  |     ${C_DEV_SERIAL_BOX}    |"
+    echo "          ---------------------"
+
+    if test "X${CXX_ENABLED}" = "Xyes"; then
+      echo " C++     |   ${CXX_SERIAL_BOX}  |     ${CXX_DEV_SERIAL_BOX}    |"
+      echo "          ---------------------"
+    fi
+
+    if test "X${F77_ENABLED}" = "Xyes"; then
+      echo " Fortran |   ${F77_SERIAL_BOX}  |     ${F77_DEV_SERIAL_BOX}    |"
+      echo "          ---------------------"
+    fi
+
+  fi
+
+fi
+
+fi
+
+echo "
+----------------------------------
+Finished SUNDIALS Configure Script
+----------------------------------
+"
+
+
diff --git a/Win32/WinCVODE/sundials/cvode/LICENSE b/Win32/WinCVODE/sundials/cvode/LICENSE
new file mode 100644
index 0000000..28c5636
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/LICENSE
@@ -0,0 +1,59 @@
+Copyright (c) 2002, The Regents of the University of California. 
+Produced at the Lawrence Livermore National Laboratory. 
+Written by Scott Cohen, Alan Hindmarsh, Radu Serban, Dan Shumaker.
+UCRL-CODE-155951
+All rights reserved. 
+
+This file is part of CVODE.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the disclaimer below.
+
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the disclaimer (as noted below)
+in the documentation and/or other materials provided with the
+distribution.
+
+3. Neither the name of the UC/LLNL nor the names of its contributors
+may be used to endorse or promote products derived from this software
+without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+REGENTS OF THE UNIVERSITY OF CALIFORNIA, THE U.S. DEPARTMENT OF ENERGY
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Additional BSD Notice
+---------------------
+1. This notice is required to be provided under our contract with
+the U.S. Department of Energy (DOE). This work was produced at the
+University of California, Lawrence Livermore National Laboratory
+under Contract No. W-7405-ENG-48 with the DOE.
+
+2. Neither the United States Government nor the University of
+California nor any of their employees, makes any warranty, express
+or implied, or assumes any liability or responsibility for the
+accuracy, completeness, or usefulness of any information, apparatus,
+product, or process disclosed, or represents that its use would not
+infringe privately-owned rights.
+
+3. Also, reference herein to any specific commercial products,
+process, or services by trade name, trademark, manufacturer or
+otherwise does not necessarily constitute or imply its endorsement,
+recommendation, or favoring by the United States Government or the
+University of California. The views and opinions of authors expressed
+herein do not necessarily state or reflect those of the United States
+Government or the University of California, and shall not be used for
+advertising or product endorsement purposes.
diff --git a/Win32/WinCVODE/sundials/cvode/README b/Win32/WinCVODE/sundials/cvode/README
new file mode 100644
index 0000000..4ba3d78
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/README
@@ -0,0 +1,297 @@
+                              CVODE
+                    Release 2.3.0, April 2005
+             Scott D. Cohen, Alan C. Hindmarsh, Radu Serban
+              Center for Applied Scientific Computing, LLNL
+
+CVODE is a solver for stiff and nonstiff ODE systems (initial value problem) 
+given in explicit form dy/dt = f(t,y). It is written in ANSI standard C.
+
+CVODE can be used both on serial and parallel (MPI) computers.  The main
+difference is in the NVECTOR module of vector kernels.  The desired
+version is obtained when compiling the example files by linking the
+appropriate library of NVECTOR kernels.  In the parallel version,
+communication between processors is done with the MPI (Message Passage
+Interface) system. 
+
+When used with the serial NVECTOR module, CVODE provides both direct (dense 
+and band) and a preconditioned Krylov (iterative) linear solvers. When CVODE 
+is used with the parallel NVECTOR module, only the Krylov linear solver is 
+available. (An approximate diagonal Jacobian option is available with both 
+versions.)  For the serial version, there is a banded preconditioner module 
+called CVBANDPRE available for use with the Krylov solver, while for the parallel 
+version there is a preconditioner module called CVBBDPRE which provides a
+band-block-diagonal preconditioner.
+
+CVODE is part of a software family called SUNDIALS: SUite of Nonlinear
+and DIfferential/ALgebraic equation Solvers.  This suite consists of
+CVODE, KINSOL, and IDA, and variants of these.  The directory
+structure of the package supplied reflects this family relationship.
+
+For use with Fortran applications, a set of Fortran/C interface routines,
+called FCVODE, is also supplied.  These are written in C, but assume that
+the user calling program and all user-supplied routines are in Fortran.
+
+The notes below provide the location of documentation, directions for the 
+installation of the CVODE package, and relevant references. Following that 
+is a brief history of revisions to the package.
+
+A. Documentation
+----------------
+
+/sundials/cvode/doc contains PostScript and PDF files for the 
+CVODE User Guide (cv_guide.ps and cv_guide.pdf) and the CVODE
+Examples (cv_examples.ps and cv_examples.pdf) documents.
+
+B. Installation
+---------------
+
+For basic installation instructions see the file /sundials/INSTALL_NOTES. 
+For complete installation instructions see the "CVODE Installation Procedure"
+chapter in the CVODE User Guide.
+
+C. References
+-------------
+
+[1] A. C. Hindmarsh and R. Serban, "User Documentation for CVODE v2.2.0," 
+    LLLNL technical report UCRL-SM-208108, November 2004.
+
+[2] A. C. Hindmarsh and R. Serban, "Example Programs for CVODE v2.2.0," 
+    LLNL technical report UCRL-SM-208110, November 2004.
+
+[3] S.D. Cohen and A.C. Hindmarsh, "CVODE, a Stiff/nonstiff ODE Solver in C,"
+    Computers in Physics, 10(2), pp. 138-143, 1996.
+
+[4] A. C. Hindmarsh, P. N. Brown, K. E. Grant, S. L. Lee, R. Serban, 
+    D. E. Shumaker, and C. S. Woodward, "SUNDIALS, Suite of Nonlinear and 
+    Differential/Algebraic Equation Solvers," ACM Trans. Math. Softw., 
+    to appear.
+
+D. Releases
+-----------
+
+v. 2.3.0       - Apr. 2005
+v. 2.2.2       - Mar. 2005
+v. 2.2.1       - Jan. 2005
+v. 2.2.0       - Dec. 2004
+v. 2.0         - Jul. 2002 (first SUNDIALS release)
+v. 1.0         - Mar. 2002 (CVODE/PVODE -> combined)
+v. 1.0 (PVODE) - Jul. 1997 (date written)
+v. 1.0 (CVODE) - Sep. 1994 (date written)
+
+
+E. Revision History
+-------------------
+
+v. 2.2.2 (Mar. 2005) ---> v. 2.3.0 (Apr. 2005)
+----------------------------------------------
+
+- New features
+   - added option for user-provided error weight computation function
+     (of type CVEwtFn specified through CVodeSetEwtFn).
+
+- Changes to user interface
+   - CVODE now stores tolerances through values rather than references 
+     (to resolve potential scoping issues). 
+   - CVODE now passes information back to the user through values rather
+     than references (error weights, estimated local errors, root info)
+   - CVodeMalloc, CVodeReInit, CVodeSetTolerances: added option itol=CV_WF 
+     to indicate user-supplied function for computing the error weights; 
+     reltol is now declared as realtype. Note that it is now illegal to call
+     CVodeSetTolerances before CVodeMalloc. It is now legal to deallocate
+     the absolute tolerance N_Vector right after its use.
+   - CVodeGetErrorWeights: the user is now responsible for allocating space
+     for the N_Vector in which error weights will be copied.
+   - CVodeGetEstLocalErrors: the user is now responsible for allocating space
+     for the N_Vector in which estimated local errors will be copied.
+   - CVodeGetRootInfo: the user is now responsible for allocating space
+     for the int array in which root information will be copied.
+   - Passing a value of 0 for the maximum step size, the minimum step
+     size, or for maxsteps results in the solver using the corresponding
+     default value (infinity, 0, 500, respectively)
+   - Several optional input functions were combined into a single one
+     (CVodeRootInit and CvodeSetGdata, CVDenseSetJacFn and CVDenseSetJacData,
+     CVBandSetJacFn and CVBandSetJacData, CVSpgmrSetPrecSolveFn and 
+     CVSpgmrSetPrecSetFn and CVSpgmrSetPrecData, CVSpgmrSetJacTimesVecFn and
+     CVSpgmrSetJacData).
+
+- Changes to the FCVODE module:
+   - Added option for user-supplied error weight computation subroutine
+     (FCVEWT). Use FCVEWTSET to indicate that FCVEWT is provided.
+   - Due to the changes to the main solver, if FCVPSOL is provided then
+     FCVPSET must also be defined, even if it is empty.
+
+v. 2.2.1 (Jan. 2005) ---> v. 2.2.2 (Mar. 2005)
+----------------------------------------------
+
+- Bug fixes
+   - fixed bug in CVode function:  Initial setting of tretlast = *tret = tn removed
+     (correcting erroneous behavior at first call to CVRcheck3).
+   - removed redundant setting of tretlast = *tret = tn at CLOSE_ROOTS return from CVode.
+   - modified FCMIX files to avoid C++ compiler errors
+   - changed implicit type conversion to explicit in check_flag() routine in
+     examples to avoid C++ compiler errors
+
+- Changes to documentation
+   - added section with numerical values of all input and output solver constants
+   - added more detailed notes on the type of absolute tolerances
+   - added more details on ownership of memory for the array returned by CVodeGetRootInfo 
+   - corrected/added descriptions of error returns.
+   - added description of --with-mpi-flags option
+
+- Changes related to the build system
+   - fixed autoconf-related bug to allow configuration with the PGI Fortran compiler
+   - modified to use customized detection of the Fortran name mangling scheme 
+     (autoconf's AC_F77_WRAPPERS routine is problematic on some platforms)
+   - added --with-mpi-flags as a configure option to allow user to specify
+     MPI-specific flags
+   - updated Makefiles for Fortran examples to avoid C++ compiler errors (now use
+     CC and MPICC to link)
+
+v. 2.2.0 (Dec. 2004) ---> v. 2.2.1 (Jan. 2005)
+----------------------------------------------
+
+- Changes related to the build system
+   - changed order of compiler directives in header files to avoid compilation
+     errors when using a C++ compiler.
+
+v. 2.0 (Jul. 2002) ---> v. 2.2.0 (Dec. 2004)
+--------------------------------------------
+
+- New features
+   - added option to specify a value of the independent variable (time)
+     past which the integration is never to proceed.
+   - added rootfinding capabilities.
+   - added option to disable all error messages.
+
+- Changes related to the NVECTOR module (see also file sundials/shared/README)
+   - removed machEnv, redefined table of vector operations (now contained
+     in the N_Vector structure itself).
+   - all CVODE functions create new N_Vector variables through cloning, using
+     an N_Vector passed by the user as a template.
+
+- Changes to type names and CVODE constants
+   - removed type 'integertype'; instead use int or long int, as appropriate.
+   - restructured the list of return values from the various CVODE functions.
+   - changed all CVODE constants (inputs and return values) to have the
+     prefix 'CV_' (e.g. CV_SUCCESS).
+   - renamed various function types to have the prefix 'CV' (e.g. CVRhsFn).
+
+- Changes to optional input/ouput
+   - added CVodeSet* and CVodeGet* functions for optional inputs/outputs, 
+     replacing the arrays iopt and ropt.
+   - added new optional inputs (e.g. maximum number of Newton iterations,
+     maximum number of convergence failures, etc).
+   - the value of the last return flag from any function within a linear
+     solver module can be obtained as an optional output (e.g. CVDenseGetLastFlag).
+  
+- Changes to user-callable functions
+   - added new function CVodeCreate which initializes the CVODE solver
+     object and returns a pointer to the CVODE memory block.
+   - removed N (problem size) from all functions except the initialization
+     functions for the direct linear solvers (CVDense and CVBand).
+   - shortened argument lists of most CVODE functions (the arguments that
+     were dropped can now be specified through CVodeSet* functions).
+   - removed reinitialization functions for band/dense/SPGMR linear
+     solvers (same functionality can be obtained using CV*Set* functions).
+   - in CVBBDPRE, added a new function, CVBBDSpgmr to initialize the
+     SPGMR linear solver with the BBD preconditioner.
+   - function names changed in CVBANDPRE and CVBBDPRE for uniformity.
+
+- Changes to user-supplied functions
+   - removed N (probem dimension) from argument lists.
+   - shortened argument lists for user dense/band/SPGMR Jacobian routines.
+     (Data needed to do difference quotients is accessible in other ways.) 
+   - in CVSPGMR, shortened argument lists for user preconditioner functions.
+
+- Changes to the FCVODE module
+   - revised to use underscore and precision flags at compile time (from
+     configure); example sources are preprocessed accordingly.
+   - reorganized FCVODE into fewer files.
+   - added tstop options, and interfaces to CVBANDPRE and rootfinding features.
+   - use CV*Set* and CV*Get* functions from CVODE (although the optional I/O 
+     is still communicated to the user of FCVODE through arrays IOPT and ROPT).
+   - added new optional inputs and outputs (e.g.tstop, nlscoef, maxnef, maxcor, 
+     maxncf, etc.) and rearranged locations in IOPT and ROPT for uniformity.
+
+
+Summary of previous revisions (YYYYMMDD) (significant revisions only)
+---------------------------------------------------------------------
+
+Combined CVODE package (Mar. 2002 - Jul. 2002)
+-----------------------------------------------
+
+20020313  Modified to work with new NVECTOR abstraction.
+          Changed name PVBBDPRE to CVBBDPRE, etc.
+20020321  Revisions throughout to reflect usage changes for NVECTOR modules.
+          Changed dense/band backsolve argument b type from N_Vector to real*.
+20020328  In FCVODE, added interfaces to dense/band linear solvers.
+20020626  Changed type names real/integer to realtype/integertype.
+
+PVODE (Jul. 1995 - Mar. 2002)
+-----------------------------
+
+19950726  DATE WRITTEN; MPI version of VECTOR module written, creating 
+          MPI_PVODE; makefiles written with defs. specific to IBM-SP.
+19950929  Formed package directory structure; added Cray-T3D defs. to Makefiles.
+19970219  FPVODE package of Fortran/C interfaces written, with examples.
+19970724  Wrote preconditioner module BBDPRE and Fortran/C interface.
+19970811  Type names changed to LLNL_FLOAT etc.
+19970813  Changed first FFUN arg. in FPVODE to local length NLOC.
+19971103  Added argc,argv to PVInitMPI call list; removed ICOMM
+          argument to FPVINITMPI (pass MPI_COMM_WORLD).
+19971201  Name changes: PVInitMPI/PVFreeMPI to PVecInitMPI/PVecFreeMPI.
+19971208  Added optional argument dqrely to BBDPRE.
+19971217  Revised FPVODE to use name mappings via parameters in fcmixpar.h.
+19980120  Name changes: VECTOR to NVECTOR etc.
+19980206  Name changes: BBDPRE to PVBBDPRE, FFUN to PVFUN, etc.
+19980508  Wrappers on header files for C++ use; type bool changed to boole.
+19980923  In PVBBDPRE and Fortran interface, added two half-bandwidth arguments.
+20000316  SPGMR module modified for correct treatment of scalings.
+          added new routine CVReInit for re-initialization of CVODE.
+20000320  In NVECTOR module: removed comm = NULL option in PVecInitMPI.
+20000321  Added interface FPVREINIT, and expanded diagkf example.
+20000719  Fixed memory leak bugs in CVReInit and FPVREINIT.
+20000808  Fixed bug in N_VMin routine.
+20011114  Added option for stability limit detection algorithm STALD.
+20011220  Default type 'integer' changed to 'long int' in llnltyps.h.
+20011220  Optional input ropt[HMAX] examined on every call to CVode.
+20011221  Optional input iopt[MXHNIL] = -1 means no t+h=t messages.
+20011228  Added arguments to CVSpgmr: jtimes (user J*v routine), jac_data.
+          Added optional jtimes to FPVODE.  Revised examples accordingly.
+20020114  Linear solver modules reorganized: specification routines
+          CVDiag and CVSpgmr perform malloc operations and return a
+          completion flag.  Re-use of linear solver memory is allowed if
+          linear solver choice and parameters are unchanged.  Fortran
+          interface routines modified analogously.  All examples
+          modified to receive and test new return flag.
+20020301  Added CVReInitSpgmr routine to CVSPGMR module, and added Fortran
+          interfaces to it.  Revised cvdemk and pvdiagkf accordingly.
+20020306  Added PVReInitBBD routine to PVBBDPRE, and added Fortran interface
+          to it.  Revised pvkxb and pvidagkbf examples accordingly.
+
+CVODE (1993 - Mar. 2002)
+------------------------
+
+1993-94   DATE WRITTEN.  First released 2 September 1994.
+19970811  Type names changed to LLNL_FLOAT etc.
+19980120  Name changes: VECTOR to NVECTOR etc.
+19980508  Wrappers on header files for C++ use; type bool changed to boole.
+20000316  SPGMR module modified for correct treatment of scalings.
+          Added CVODE re-initialization routine CVReInit.
+20000323  Added band preconditioner module CVBANDPRE.
+20000719  Fixed memory leak bugs in CVReInit.
+20000808  Fixed bug in N_VMin routine.
+20011114  Added option for stability limit detection algorithm STALD.
+20011115  Reorganized DENSE module, with smalldense.* files separate.
+20011220  Default type 'integer' changed to 'long int' in llnltyps.h.
+20011220  Optional input ropt[HMAX] examined on every call to CVode.
+20011221  Optional input iopt[MXHNIL] = -1 means no t+h=t messages.
+20011228  Added arguments to CVSpgmr: jtimes (user J*v routine), jac_data.
+20020114  Linear solver modules reorganized: linear solver specification
+          routines perform malloc operations and return a completion flag.
+          Re-use of linear solver memory is allowed if linear solver choice
+          and parameters are unchanged.   All examples modified accordingly.
+20020301  Added ReInit routine to CVDENSE, CVBAND, CVSPGMR modules.
+20020305  Added CVReInitBandPre routine to CVBANDPRE module.
+
+
diff --git a/Win32/WinCVODE/sundials/cvode/doc/cv_examples.pdf b/Win32/WinCVODE/sundials/cvode/doc/cv_examples.pdf
new file mode 100644
index 0000000..1f258c6
Binary files /dev/null and b/Win32/WinCVODE/sundials/cvode/doc/cv_examples.pdf differ
diff --git a/Win32/WinCVODE/sundials/cvode/doc/cv_examples.ps b/Win32/WinCVODE/sundials/cvode/doc/cv_examples.ps
new file mode 100644
index 0000000..3c90fe7
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/doc/cv_examples.ps
@@ -0,0 +1,14545 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Title: cv_examples.dvi
+%%Pages: 126
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: CMR17 CMCSC10 CMR12 CMTI12 CMBX10 CMR10 CMBX12 CMTT10
+%%+ CMSY10 CMTT12 CMMI10 CMR8 CMSY8 CMMI8 CMTT8 CMSY6 CMTI10 CMEX10
+%%+ CMMI6 CMR6
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -Ppdf cv_examples
+%DVIPSParameters: dpi=8000, compressed
+%DVIPSSource:  TeX output 2005.05.18:1634
+%%BeginProcSet: tex.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true 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/IEn 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 IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/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 A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
+/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
+setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
+restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/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{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: alt-rule.pro
+%!
+% Patch by TVZ
+% Makes dvips files draw rules with stroke rather than fill.
+% Makes narrow rules more predictable at low resolutions
+% after distilling to PDF.
+% May have unknown consequences for very thick rules.
+% Tested only with dvips 5.85(k).
+TeXDict begin
+/QV {
+  gsave newpath /ruleY X /ruleX X
+  Rx Ry gt
+  { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry }
+  { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx }
+  ifelse
+  setlinewidth 0 setlinecap stroke grestore
+} bind def
+end
+
+%%EndProcSet
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true 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/IEn 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 IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/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 A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A 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/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/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{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: pstricks.pro
+%!
+% PostScript prologue for pstricks.tex.
+% Version 97 patch 3, 98/06/01
+% For distribution, see pstricks.tex.
+%
+/tx at Dict 200 dict def tx at Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/TMatrix { } def
+/RAngle { 0 } def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+/pathforall load stopped { pop pop pop pop } if z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP  } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ]
+0 } ifelse setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { gsave abs CLW add /a ED a 0 dtransform round exch round exch
+2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25
+% DG/SR modification begin - Dec. 12, 1997 - Patch 2
+%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+% DG/SR modification end
+Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict
+/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1
+% DG/SR modification begin - Jun.  1, 1998 - Patch 3 (from Michael Vulis)
+% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore }
+% def
+a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore
+pop pop } def
+% DG/SR modification end
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
+div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
+CLW moveto } def
+/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
+2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
+curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
+def
+/SD { 0 360 arc fill } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto
+load } if ] cvx newpath 3 1 roll T exec } def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/Diamond { /mtrx CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul
+neg /d ED /a w h Atan def /h d a sin Div h add def /w d a cos Div w add
+def } ifelse mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2
+div /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+setmatrix } def
+% DG modification begin - Jan. 15, 1997
+%/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq {
+%pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+%div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0
+%d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+%setmatrix } def
+/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup
+CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0
+d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+% DG/SR modification begin - Jun.  1, 1998 - Patch 3 (from Michael Vulis)
+% setmatrix } def
+setmatrix pop } def
+% DG/SR modification end
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix
+rotate matrix concatmatrix exch findfont exch makefont setfont } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop
+} if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ]
+aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6
+2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto }
+ifelse } def
+/ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv {
+6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def
+/BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1
+sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore }
+def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 }
+if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if
+/dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div
+round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div
+round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub
+0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def
+/Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def }
+if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def }
+{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add
+exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n
+div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1
+dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt {
+dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt {
+pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup
+stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg}
+{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i
+w add def } repeat grestore gsave n 0 gt
+% DG/SR modification begin - Nov. 7, 1997 - Patch 1
+%{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash }
+{ 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash }
+% DG/SR modification end
+{ 2 setlinecap } ifelse /i y1 def /f x1 dx mul
+n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n
+div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop
+1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs
+dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt
+{z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g
+exch t L stroke /i i h add def } repeat grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET  } def
+/RotBegin { tx at Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 }
+def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle
+dup a add ] cvx def } def
+/RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ]
+cvx def } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def
+/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible
+/IfVisible true def } if } { IfVisible { Invisible /IfVisible false def
+} if } ifelse } def
+/InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def
+/Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit
+neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def
+/IfVisible true def } def
+end
+% END pstricks.pro
+
+%%EndProcSet
+%%BeginProcSet: pst-dots.pro
+%!PS-Adobe-2.0
+%%Title: Dot Font for PSTricks 97 - Version 97, 93/05/07.
+%%Creator: Timothy Van Zandt <tvz at Princeton.EDU>
+%%Creation Date: May 7, 1993
+10 dict dup begin
+  /FontType 3 def
+  /FontMatrix [ .001 0 0 .001 0 0 ] def
+  /FontBBox [ 0 0 0 0 ] def
+  /Encoding 256 array def
+  0 1 255 { Encoding exch /.notdef put } for
+  Encoding
+    dup (b) 0 get /Bullet put
+    dup (c) 0 get /Circle put
+    dup (C) 0 get /BoldCircle put
+    dup (u) 0 get /SolidTriangle put
+    dup (t) 0 get /Triangle put
+    dup (T) 0 get /BoldTriangle put
+    dup (r) 0 get /SolidSquare put
+    dup (s) 0 get /Square put
+    dup (S) 0 get /BoldSquare put
+    dup (q) 0 get /SolidPentagon put
+    dup (p) 0 get /Pentagon put
+    (P) 0 get /BoldPentagon put
+  /Metrics 13 dict def
+  Metrics begin
+    /Bullet 1000 def
+    /Circle 1000 def
+    /BoldCircle 1000 def
+    /SolidTriangle 1344 def
+    /Triangle 1344 def
+    /BoldTriangle 1344 def
+    /SolidSquare 886 def
+    /Square 886 def
+    /BoldSquare 886 def
+    /SolidPentagon 1093.2 def
+    /Pentagon 1093.2 def
+    /BoldPentagon 1093.2 def
+    /.notdef 0 def
+  end
+  /BBoxes 13 dict def
+  BBoxes begin
+    /Circle { -550 -550 550 550 } def
+    /BoldCircle /Circle load def
+    /Bullet /Circle load def
+    /Triangle { -571.5 -330 571.5 660 } def
+    /BoldTriangle /Triangle load def
+    /SolidTriangle /Triangle load def
+    /Square { -450 -450 450 450 } def
+    /BoldSquare /Square load def
+    /SolidSquare /Square load def
+    /Pentagon { -546.6 -465 546.6 574.7 } def
+    /BoldPentagon /Pentagon load def
+    /SolidPentagon /Pentagon load def
+    /.notdef { 0 0 0 0 } def
+  end
+  /CharProcs 20 dict def
+  CharProcs begin
+    /Adjust {
+      2 copy dtransform floor .5 add exch floor .5 add exch idtransform
+      3 -1 roll div 3 1 roll exch div exch scale
+    } def
+    /CirclePath { 0 0 500 0 360 arc closepath } def
+    /Bullet { 500 500 Adjust CirclePath fill } def
+    /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath eofill } def
+    /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath eofill } def
+    /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def
+    /TrianglePath {
+      0  660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath
+    } def
+    /SolidTriangle { TrianglePath fill } def
+    /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def
+    /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def
+    /SquarePath {
+      -450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto
+      closepath
+    } def
+    /SolidSquare { SquarePath fill } def
+    /Square { SquarePath .89 .89 scale SquarePath eofill } def
+    /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def
+    /PentagonPath {
+      -337.8 -465   moveto
+       337.8 -465   lineto
+       546.6  177.6 lineto
+         0    574.7 lineto
+      -546.6  177.6 lineto
+      closepath
+    } def
+    /SolidPentagon { PentagonPath fill } def
+    /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def
+    /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def
+    /.notdef { } def
+  end
+  /BuildGlyph {
+    exch
+    begin
+      Metrics 1 index get exec 0
+      BBoxes 3 index get exec
+      setcachedevice
+      CharProcs begin load exec end
+    end
+  } def
+  /BuildChar {
+    1 index /Encoding get exch get
+    1 index /BuildGlyph get exec
+  } bind def
+end
+/PSTricksDotFont exch definefont pop
+% END pst-dots.pro
+
+%%EndProcSet
+%%BeginProcSet: pst-node.pro
+%!
+% PostScript prologue for pst-node.tex.
+% Version 97 patch 1, 97/05/09.
+% For distribution, see pstricks.tex.
+%
+/tx at NodeDict 400 dict def tx at NodeDict begin
+tx at Dict begin /T /translate load def end
+/NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def }
+if begin tx at Dict begin STV CP T exec end /NodeMtrx CM def next end
+grestore } def
+/InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def
+} def
+/InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch
+Sin mul } def } def
+/GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def
+} ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def }
+ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx
+dup Sin mul Cos Div } ifelse } def
+/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub
+/u ED /NodePos { GetRnodePos } def } def
+/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup
+Cos mul exch Sin mul } def
+/TriNodePos { Sin s lt { d NodeSep sub dup Cos mul Sin Div exch } { w h
+mul w Sin mul h Cos abs mul add Div NodeSep add dup Cos mul exch Sin mul
+} ifelse } def
+/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d
+ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d
+sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan
+sin def /NodePos { TriNodePos } def } def
+/OvalNodePos { /ww w NodeSep add def /hh h NodeSep add def Sin ww mul Cos
+hh mul Atan dup cos ww mul exch sin hh mul } def
+/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
+/XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist
+Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg }
+{ 0 Dist Sin mul } ifelse } ifelse Do } def
+/GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform
+exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx
+dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop
+XYPos } ifelse } def
+/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1
+roll sin mul sub exch } ifelse } def
+/GetEdgeA { NodeSepA AngleA NodeA NodeSepTypeA GetEdge OffsetA AngleA
+AddOffset yA add /yA1 ED xA add /xA1 ED } def
+/GetEdgeB { NodeSepB AngleB NodeB NodeSepTypeB GetEdge OffsetB AngleB
+AddOffset yB add /yB1 ED xB add /xB1 ED } def
+/GetArmA { ArmTypeA 0 eq { /xA2 ArmA AngleA cos mul xA1 add def /yA2 ArmA
+AngleA sin mul yA1 add def } { ArmTypeA 1 eq {{exch}} {{}} ifelse /Do ED
+ArmA AngleA XYPos OffsetA AngleA AddOffset yA add /yA2 ED xA add /xA2 ED
+} ifelse } def
+/GetArmB { ArmTypeB 0 eq { /xB2 ArmB AngleB cos mul xB1 add def /yB2 ArmB
+AngleB sin mul yB1 add def } { ArmTypeB 1 eq {{exch}} {{}} ifelse /Do ED
+ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED
+} ifelse } def
+/InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED
+/NodeSepA ED /OffsetB ED /OffsetA ED tx at NodeDict a known tx at NodeDict b
+known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA
+ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def
+/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub
+mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def
+/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt
+{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop
+} repeat LPutLine cleartomark } def
+/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
+/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
+mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
+sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
+add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
+y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
+mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def
+/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def
+} def
+/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def
+/NAngle yyB yyA sub xxB xxA sub Atan def } def
+/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd  } def
+/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def
+} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit
+} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd 
+} def
+/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def
+} def
+/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def
+/NAngle yyB yyA sub xxB xxA sub Atan def } def
+/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd  } def
+/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def
+} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check {
+exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark
+VPosEnd  } def
+/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2
+roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx
+def grestore exec /LPutVar /SaveLPutVar load def } def
+/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def
+GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos {
+LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos {
+LPutVar VPutLine } def LPutVar } def
+/NCLine { NCCoor tx at Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop
+end } def
+/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub
+Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan
+/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1
+yA1 ] cvx def mark LPutVar tx at Dict begin false Line end /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+ifelse } def
+/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1
+roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA
+GetArmB xA2 yA2 xA1 yA1 tx at Dict begin ArrowA end xB2 yB2 xB1 yB1 tx at Dict
+begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ]
+cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines
+} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def
+/NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
+def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx
+itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2
+yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false Line end /LPutVar [ xB1
+yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def
+/HPutPos { HPutLines } def /VPutPos { VPutLines } def } def
+/NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2
+yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform
+/y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1
+tx at Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ]
+cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCBar { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def
+xA2 yA2 mtrx itransform pop xB2 yB2 mtrx itransform pop sub dup 0 mtrx
+transform 3 -1 roll 0 gt { /yB2 exch yB2 add def /xB2 exch xB2 add def }
+{ /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse mark ArmB
+0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict
+begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx
+def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCDiag { GetEdgeA GetEdgeB GetArmA GetArmB mark ArmB 0 ne { xB1 yB1 } if
+xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false Line end
+/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCDiagg { GetEdgeA GetArmA yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED
+GetEdgeB mark xB1 yB1 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin
+false Line end /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCLoop { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
+def xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED /xB3 xB2 yB2
+mtrx transform pop def xB3 yA3 mtrx itransform /yB3 ED /xB3 ED xA3 yA3
+mtrx itransform /yA3 ED /xA3 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2
+xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false
+Line end /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ]
+cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+% DG/SR modification begin - May 9, 1997 - Patch 1
+%/NCCircle { 0 0 NodesepA nodeA \tx at GetEdge pop xA sub 2 div dup 2 exp r
+%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
+%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
+%mul add dup 5 1 roll 90 sub \tx at PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
+/NCCircle { NodeSepA 0 NodeA 0 GetEdge pop 2 div dup 2 exp r
+r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
+exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
+mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
+% DG/SR modification end
+} def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA 90 sub a add
+AngleA 270 add a sub tx at Dict begin /angleB ED /angleA ED /r ED /c 57.2957 r
+Div def /y ED /x ED } def
+/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB
+180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos
+mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def
+/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy
+add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos
+{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar
+tx at Dict begin false Polygon end } def
+/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan
+def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2
+mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def
+/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div
+def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def
+GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul
+sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0
+eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn }
+{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def
+0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2
+roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0
+0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2
+roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat }
+ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos
+{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le {
+r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC }
+{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add
+add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub
+mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t
+sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse
+y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos {
+LPutPos } def } def
+/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB
+sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1
+ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB
+w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos
+{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop }
+{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine }
+def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx at Dict begin
+/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def
+/LPutCoor { NAngle tx at Dict begin /NAngle ED end gsave CM STV CP Y sub neg
+exch X sub neg exch moveto setmatrix CP grestore } def
+/LPut { tx at NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0
+def } ifelse LPutCoor  } def
+/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg }
+if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED }
+def
+/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if
+r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED }
+def
+end
+% END pst-node.pro
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
+exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub
+dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
+ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict
+end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{
+dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1
+roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def
+dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}
+if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}
+def 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 0 N/rwiSeen false N
+/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
+/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
+/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
+X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
+/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
+/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
+{userdict/md get type/dicttype eq{userdict begin md length 10 add md
+maxlength ge{/md md dup length 20 add dict copy def}if end 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 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
+save N userdict maxlength dict begin/magscale true 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
+ at SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{
+CLIP 1 eq{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 rwiSeen{rwi urx llx
+sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
+}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
+CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
+lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
+/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
+repeat grestore 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
+%%BeginProcSet: color.pro
+%!
+TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
+setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
+}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
+/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
+setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
+/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
+known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
+/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
+/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
+setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
+setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
+0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
+/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
+setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
+0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
+0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
+0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
+/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
+setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
+setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
+0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
+/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
+setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
+0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
+0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
+0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
+/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
+setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
+/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
+0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
+0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
+0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
+setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
+0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
+/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
+setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
+0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
+1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
+/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
+setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
+0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
+DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
+setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
+setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
+setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
+
+%%EndProcSet
+%%BeginFont: CMR6
+%!PS-AdobeFont-1.1: CMR6 1.0
+%%CreationDate: 1991 Aug 20 16:39:02
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+readonly def
+/FontBBox{-20 -250 1193 750}readonly def
+/UniqueXX 5000789 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204b031f3fc6c13d7da7277a94ba
+018e9998b3dd888011a5d7c4204989f30f908b95533bda845746b673ab71ea57
+65a0d14f4350707e47c8276305b28513cbe1bb0dbd269a53719bda46e536685d
+df78ca0146b6b93e760256b74d939d4e35b5e77238f04c92298dfdd188feea30
+e053eefbcbb52f2011772b3aae39f5805597bbc1e8bb75a446ce014030f4f2f0
+f49f9e962ee4a1024a746fa92a3628db5270732b54e43fe5ecfa524f127e5fcc
+788e77e66098336ad67fe4cccaf0253272d5df79864bf4b734cb9a5859d557d8
+bc11b8e00221ebc12e97de4b1f466ead83a4c894709363bca9040410a52d592e
+34ee40cc7e5efa920546b981aa659513a24b1b85c221a1875b62d0b89e57a368
+321b8043a5b094e0379760a443d632892b14ad6d19dacc8c78093243ad67e6a3
+08e56e6b68412ee690b10dac6e17708754a00d51fc957b500eb80175716eef4b
+2ca1ef867614659bee3f2b7319e97b6fdf1efc847bf3cee3156f72f21751da8e
+5fb6898919e6799820d3de0642d756e09d6fae4ff08dd3deda3173bff4bb11f7
+9109c97ddc05897af709ea199a90fcee8ce4c7a3c15b18170c41c04de2d3fba8
+f34296a95b8e1e8de3739b17273f8f2c85e914615e8eac5e8bd2387ba3b1edf4
+7968f06e2067d836d0f9f3e085cdfd2de06a62c81d786b304326f7002e83160a
+36598589228b4dddddc43c85e1d126f8fe81b828028e26317af5894aaccf4f69
+6301e1a9fc45935d8a414957f08febebbc3a72ada80f101e47447d019ade56e9
+f4fab969bba2b44e47399fedf5caa1bcea216d7ba713d523dc2b1a89801ad4ff
+2a26c7929cd309eeca94b69eca57ca332db286f97602a69bee8e37936b9346cc
+0f6d2e421c4e5512be432fce589448f5f84cdfa8f096528c8dda6e1db031dc03
+5e66de81a9d37e3d450af0aa8f8333ccb9dbe51fb4a5502fac0a0abb8dfb643b
+2d3323cfd843331fab1d8efb4557ad4e5bfe7801b7f7c63439a617535087a1c2
+8fd075da8442bf40379354ccd398a111fcdc9d73c3111b31a3b69d2312b6c377
+ae21dca966b5e4fc26e60405fe586a5ee1c8a609e245338f75a891c51463731d
+867a80d846e317122d616e4766adcae7c5f0a6151eb4da1305969cd321bf6434
+818eb8d67bff536da6043e5d8bec3cb2a48fd565fa9e51a68fabbf533d376351
+f7c12874628ae554478ffa1cb9de8dd27edb02366c415ea540b9b168507ff660
+57135fd2d0e24550420f68ecc804715f65d48434d8f6ec629f01e41172939b1b
+6513f142de44863de3bb5a56dfa8d2e34cd4f999d090e189c8fc8b2b7eb2644b
+e5e8a0bedac5914d70c4384ea11909eafa2fe7012105e423923c8f6aa46ce71f
+c6519c4dfbcfc84fff41119db33a9eab8dc061250b703726e05bcc86cc5b7577
+57fa2f13f00eea413d705581f0e7c72b8b7f8ea60814aac19bac4aa062aff864
+b0c96e3165486ba090fe3154ac42d6c7d520e8678dde7a65c469b7c5ab1f69d8
+25a789c3f4897b763da31f99f6895e5d6d80f4b15eb7d7ab1086255ae04a1cd9
+7f0f0e2d7d76849496b78541a28ee991f9a3325147580aab26d90897640bb6f1
+a84860aff36bc9e60d9899770cb607702aa9f71f28ec9e1eb3d373851131331d
+916b9d8eaec1225101add4fb091a56338d2b6dac4934144c24a680fd7d322df1
+dc246a228ac75a430384d5f91a1e2def9a3decce71ab09056601550e5a9beb81
+1d3d3e602bcbf01f991ce66dabfbdca501c3e18527e53e24daf9168f92e70f08
+9709b5ede3c0f3005b8f6302c97043ebdf163274624758925d68012ef835755a
+477a4f7cd66b7540563a13047e88f063674888fd87263217d88c3c31abc5483a
+304d632fb06eb2e14551cd53204ecd350232161b8f2982a744106de0fd09b45e
+807fe4d555c4abca492cc0c09920b02a8931454f2d1616735ed9962609b5ad15
+dccfc6b57782e550cf651dde7654b2db575254c2e187f5e3b0b09ed44079ddf8
+a3f50495a4cc55bef95f2ef51b613b65ac3548a00c22332ec7cfc0e6831bd209
+49600c0e7ce0aa57a7be7d91f131eb06b8e1faca502f13502e80ab63a17746b0
+19d8bf55ea0d68714d8a38ba2cc591b75a5172cd18aaf26f3ae519d5ecbc57c7
+5335d7f38aaa8a25256cdb28f7dde3262d25ab3327ec38ee5a9e8db68b3c520b
+59cca53e002ebdb4de62566dabd4c8507a51a376bb5cc8fb19951566328f3718
+319b30033c27d88409c4bc6d10d7a47221257ec700ddda6d2aa4248e4c1aef4a
+6ad488bc6bd8fd5241022744d97947c680e2c3f1b1266b4006a0687aa93f550e
+23e9862d28c30d245edd3442001265c83d9bb8d3a4ee2970da4e2853eae8c019
+99c2a660069ff12f3371f90a12a2b767bfe17091a709496a35a694e43cbaed4a
+04f0566be69a84f699403bc1ec40b19f28fea5cdf4c5bd62208f4063366c4877
+6d7d1656758d24318ceacedfd4fa70cc76502cbdeb58a8071d559a9c43e4794c
+94419e7f8f15635ebc023721471131f69ec35123f54768fa00efc5da8779058e
+5d6f53415bf0548f1a231a05a4d2ab60fd9023dbdffe2f7c6d29827b7ade2a2f
+1e4400b11cf8864cec09b0b74a43dfb2885322dc79855c9048681ea8b8dcc65f
+29360a8020e0db02bbd28bf06076dab63c480fa99c4025f2a4671cb03a55b8ec
+83c19c9d2cf8cb59cc2188a0fe58d00471f9dea9a832cace08caa73a983f5992
+fa55608534f91120079312ec86b6f9da938c4088f1b5c04a5e169b61bd2b1750
+b31254ddaf9ca5efa696fb2e53ac1edf2a442a52d1f930a207439c83604d338c
+efbb3045d66e1c0599c4fc09cec289f19b92201b4eab541b805909f2e7673594
+4b41da04eadd7a8ab4416704608a280930917fa81a2ec1b0f6fbddaf07344e4b
+256b000dadac578b6e7c5250b33750dee374765de50eda0d4dedc835cb4eec07
+447c0fc1dc70ccc6a9674a07fb7e146ad5aa87c71cfea89b2c730772b1849311
+bee0567e1e275f23fb745ae7fa749dcb21b0caac6e711126a102d8c2bf87c8c8
+66559045d5045daf826f2dc235878c1a5c1bec2a6108ecad8af749f25705a47b
+9ba49b2cf4446bdb44ed5b9ba4c198c00a4967477c69a5983c7705fe5e089db7
+a57dc77d16337626f4739a821522f8a6f9957410d034ca3a09fb3e47ca962a34
+68e0d8e1b7111246a34e7197470e92debe6d15a1577612b4ab5b5b580407c1fa
+ca33eaaf6a16f3e42e3f43f9e54a272562965c4fbe5493c111048a019ac54a01
+a6acbe32cadaebb926dcc2c9a0e8adbda8c5dd2f4032ee56f6c24720b484f5fa
+b8ea7616808f8871412de1c24d44bb1324ecedc653719eb70399695904e0a052
+b2ce2b09770f0a465c9fbc7f2105c0d586da9b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTT12
+%!PS-AdobeFont-1.1: CMTT12 1.0
+%%CreationDate: 1991 Aug 20 16:45:46
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 46 /period put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 107 /k put
+dup 110 /n put
+dup 112 /p put
+dup 114 /r put
+dup 118 /v put
+dup 120 /x put
+dup 121 /y put
+readonly def
+/FontBBox{-1 -234 524 695}readonly def
+/UniqueXX 5000833 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be79011d1f5b667eed85fade30ab2ec4e1c2f
+4fe750cf9a69506458071de8896261c001b1c290937fa42a1fa87de406e9f86a
+4c9c0f03f69fba719114f8ae51040a4c03a58b6f3de027f6726f32743dce7395
+14c2c6f3c2de1aeddcfa8eed7da56dd68dbcde33c29ff7a694769049e4325ec9
+61b2df16add2ad46f18781fbd63eec62c26f1db41e6a666a09886382dceba91d
+8ff7cedd64ddc8a2f15fe34076a064c46febd1f4dc3707aede0ce8af161bcb8e
+4ada202d0954baca5be71c28ab8bf32fd72029aa07f27d658a68f454a4bf386f
+6314224d16c7f0a8624f6b86319a4e2fd178f596f3b20db032ea28c157a68a69
+fad2bc88881658d2286c0d4ef061bc070c3145f2a37ebec03f51de7cda34cd97
+7eeebd86b00f9758b3a496f41d9a74279ef3c6322dc54945f95062c5f37a1e51
+cf7eaf45f2b3634b2d7d01ec3b298ff35b6616cd3020e096f6c6aa2bf04c4a93
+61c19f3c67a28d936ffc8120f1e46980b29bf54047c5f1fa48e67611a74fa434
+3384f802a4079b28b94681e119ab0c1692de5bbf426440ad1023506cb80732de
+c64d9061869cb34de924d2c26e404b7dbd9be55b9c0c5ae3095c15d278adbb49
+12df1484ed2d73128e5d9c1f1a3b9ac19e2ce5366c96644f5b3d3eea589caedb
+586fd9b8f4df32ec910e9b7434d5bbe57e03892eb03890567df5b811afa0da5e
+929d456af362fda0789aa0cff464e238029294fde86cfc8d7d33d5c98b18c76c
+319811e4d3d49560f2ac39103594ec513e0b1377c2c3e22979866c19b61448d5
+a7201ca4b7538aa370f6347253b0853d4c5d575a7572f93cb73a598e2e26b11a
+d46a1126e44e7e1795dff01562316b6ccc6678663e66a73db285746df3f4405d
+d51714679581946ef72102196802c2b44bb09eb514e082f21fac746c3e166e8c
+81554829823b75a76c529896c36dc555e6a72d4aaf6db13a97d3dbc9109626d7
+6c9eb5dc5644ce95bf2f8d7de269ecf0800348da24ef3fcb0d366b14562c1b03
+31461fc00349911a0a46fd4eddc41b15b44656d5397f6f8adb3127fe8b387768
+b75d015512ba7ada43b13247e602107991abe68f4a5bd2d50a19bf614aa09cdd
+f33dc11f5acc61d2eebe49e52ba6a93a0c68dbd074c349429da08073cba5b160
+c06a043cf3eff5b8cd63412e469c6389373065f20f69fc5976413b7497a8c815
+f91afa1cc4bcbb758f4350bce581b47bba32ebd8401fc37bd832cb9221805aae
+fa05040aecee7e8be3d5e1603f9dfb9b9502ca03bf3516ea2cf9a568ffa5bc08
+fdca47eb335d910ee261eb714b5293d82c335fc8db07629408d83decddd942ec
+9e8d2d7b91f74822a7c5c7ba29c32bd3da1891cc0b387028ef73ed9e47aca2a0
+94724771e1052708f698b4db664a895e34fcdf755fb381ff59e9b0f3b15771f7
+d921a764e93454f4045f818f32bb08a25cffb53e18fa94a2509750c1cb6e3a71
+9e76b8eeab1893a6617c0777e3eace6d4f54c084c1d0d6ff2ec61b7fc1fdba70
+bb2f4c566a793d9fc75d6b920479217e32a5db0f6d9fe8100d78ba36d0f9d6fa
+0d34e7e73f4726f8c33555a3c7adf75559e64de4d92d7e5347bf1db9500ef224
+a60a2a95b07fc651ed592b55ecfdfee6d07def1d40b86040ceafa3106f0bceb4
+1f3673b467d61c82fcab1c9b8a00c312d01320485e8de8d43897752725521324
+aec2b6360272da91a0115c64961367de7cbcb56a4678c3d76f83b5f9dba3a754
+b7ec7dcf0abe794bc55ab328d22dbe0ec353efb8e991f0e5ffbc4b2e52c1f95c
+5ea2f90c99076caabaa6ed36798ac559dd4496bf6b46c12c1f6a400b5c94c570
+33df15a010ee765343cc16685cfe87a0fdb2361803e3a8283f9ce5037c1fde93
+67357f7936162c62b973cdbdc16bafeeb3fe9eae641fe94b6e3d811a81a76532
+c70851a4bfe1f5c91d237490e07427fe564079b1974d441648d8ea6d6b449f22
+4d9de9fe8409e9bd9042851815245acb651ee052c22ee4cb9cc7d4c6e9eb288d
+998455c06773f7560e58153149cee88b769ba7d891a13ecc1f134c62d1eb0b95
+63d67a85fdf42493b0cb1ab53d7c5871dba1f76cbb35a374acbbc0abea7259d4
+f0a0084996c06d8802201cf04b18cb3f713c7b543dd4201bb5e229a3267a4879
+0c9a5aac5344eb43cc87f001806d1cb51158dece12bb3d75c199b6b78e64e8d0
+057d943daff580000e3c963fd55fce9eecf3870753e2f0b5870493598815961e
+f48f52776740e42b5e84dbde7ffca1360eee596853991cfb55092c5ec719d859
+282168bbeac3f6803f278c7905fdf65ea4d5aa59a9c6c25a5b947b48c09e648c
+9b0196e45091f84d0b5d1f415a2e77ec3efd4cd3440f1a30ab4df11c77f99250
+1063e6a7aa405d805d37d0544c82b1aa6c9f04ef50794c900fe20878e36bd65d
+3bfb180dbf695ae8b628b7fd70f10b45d33f1b94bf2c036bd406a447f38e7bd8
+1d0a217c718b7f3225153ae52c5d2c15f7778c0a52cacd71d1bdbd6a54170266
+2d69e56cfb777aa084f60c252614aac30d47228296c5ecdf5b10475678f1b054
+93abf72d4eda28c6cef2c674fe6e45ed2ef6a4086f97942a18fb4d81ac055b57
+b0556c2661b963c759a0324495e3ae19faa1325fc5b52a5840c58b884c62b61f
+4b88a91a9b18d08c6d6d7de45a3adb098bff4a93a8f40a534a02d45645e53d2f
+212f2b1cd3eac82e1c7f568a926a3e6dcf3ece6fa25eff44af81f9f3468008e7
+eca4330fc03fe1be269d4dd23f96e293e03b9c8299b19a87770af62eedd9fbf8
+0493f3c760ebed4b3e81c843c8937a5fc719ffa1b6a99f29991b7980ecf279af
+4a9868147b02c4e43bd746a7f743445096e0b6590da186c779bf5b1e190ff310
+83157304485fdb163de50d05c85d9a11e374f5634edcd72eed9c45dbcd292da6
+c3544278d2d4e384867f3aa60caf670138438f7705c7a054dac30e31a736fcad
+15c3a05cb1e69bdd7a332976b30742e7931e2f480743c33152b20488ee1315bc
+a2c017a87db529b73f6cfcd695f9876baecd1bf08d0f34a298ab8f2215d62963
+e73b108b3861c8122322cb98c22e49f704ebd83e96c76e41fb227335ca5cb911
+2dbfa530d3a8c26d1b0d0cddcd71040f19da4e1c1c542bb0d735a39a21507b5f
+da6239df092573e450df818c1fb8258aa44caadc2dea7cf8981602469aa7020a
+564e8db95de227819c856a6bb022beb8b5a641714322ea1b429c7c7a09415433
+7d34ea2dbdda0ad56a24ed26ee073ac122ff7bec9a635b54449351a9dea57a3e
+d3968fbb6903bab30869b4c648f409b5cd9f493df6fc3a294de0fdab4ea50eea
+89c8ad523316065937e5f6b1aecd90901639f0372015c6b89adb48d76c7ad1a4
+3ca6fca07d1be6e9e3f8fd5d802ba7b0aae9224fc877c479f7c2d1e4825994bc
+cb581f25a56bcb3be829b4272b283577297bbb80399d705584aa772be988c94a
+7162fa39e94732c6ceeac9356723f1fcfe55aab75cf03c39622e168afb7ea105
+dc9152cdfb56e4c13cb8abcb81db44ca2f13aaca0bcfa9bf841a692fec3876c9
+d89c1689877cef98b516d091c49e87d6d7a41f154fb21aecfa15fc708d15e312
+255bc10c159156a414d15fb6ccde2c91812dca858f6a2105fee7f06802a72877
+e1c769931649aaaa5c3fd6e4066e8b9429e9095f416a4c051548b1bbf3c2bf30
+9423da8b99dbfab9dc3bded88ebaf09422395453a2d3ffe2be1037f5d096afb9
+22b2f9ab643585971f257bcf089a784f9fd356f23ed4354c1201771bf8b50338
+0d42183d5e90cf1629f364836c8ec73c687dd699928620eb29c81aa1268294a3
+bfd54febbd795e10fab2a5ff8ae112d8ab767dc6c0af6b8c4db7cf5025d3e8af
+ccaaa299455f3be01a4cef646ae2e2e596e53b3d59c0b8d407befc30f9e31059
+52212de480e949308ac83d55f80d1e7329e35eb5dc3d31cd94be420fdf6cad98
+80e0bde1d5d621f3ecd7ad8623a88e2987cc483ea30dca86d713d5680f7ac6d7
+5ccdfbe648d5577354de4f9db30e7eb147b7d99b2e8e482ef1cc6fac3a698e2f
+f3e2cc40d2751c9a4904871968dd2a93bf1a2d010cd4ed841b2c2323864138a8
+9e3511dd838f665a0ad9943e5fe8e17d9550a5c6863356f53b965472ded0b71a
+73ef17cef380053b9b0a29d416ad62a2c5d4339dc20968244e5b82ec1d17b64a
+b40b7c744ed5bcb15068c2e48d5418c809a0f23bff265012ae817ec49c82b8f9
+0897a719886054ae4630699c7c2c7d96c307fff4e9037b734d7fa828f8e94c12
+a3e028af5996e530524d22385a1d296ca1554c59deb01276f5a823a6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI6
+%!PS-AdobeFont-1.1: CMMI6 1.100
+%%CreationDate: 1996 Jul 23 07:53:52
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 106 /j put
+readonly def
+/FontBBox{11 -250 1241 750}readonly def
+/UniqueXX 5087381 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930e72218b3075925ce1192f11fc8530fcd5e3
+038e3a6a6db2dcfbae3b4653e7e02730314e02b54a1e296d2bef8a79411d9225
+dad7b4e6d6f9cf0688b69ba21193bf1495807e7a1e67ed7e41cc25acc04702f6
+8ef703e3d45722c1a91fdef7100a48631a02a6f02a08c6b1f9b4df8310385b86
+8632718fd87119a233f219d9411383b7fa9f3e4780d8c27e2e89e0cae883d664
+c3eac57a3aef8988a2e9f0f8c7f53e0a80bdfc4620e21287d0390e1975398544
+7f3ea66401024bea75e1b4c4437b7bb188f76f96b918ac7c6ad7e8ae7f21d8c2
+790f08cccec904fe48ef39e597ed4d4237c1d1f596f5906b19ea308020f7a35c
+168e327ec3246b1dfabe912f6b6daac09974876d3996e57d180261110db05f15
+e3e8eebba3d90b5764c03df3033a1ed678ebc679569a2fb297378b25434c0f20
+5313ecb8a952f07242d3ee731b0cdc086a4481178a3d65129c47c09b22e9c431
+e11b3747b94c26a757c38d06001798c6a568303d541385244b967d3b1786edea
+f65bb53c4c2fe75e4b1b15c2c78d930b4296c80f08bad86012451edc8e9f0854
+c3b390a16e27b11b3d45a9f72eff8baded2242dc928a61685d79e09681c97425
+5b90a498614cf560fa5b1718981388268ba206a96989e6d0b5d485d9aca5594a
+e67dd7b34d8a369adb06647f8aff8814d6d9cdc04a4835918e557174c5bc0f3f
+bcea9907a04cf93c12727ec40db3f2f77596dca477862747435bdedacd9b2311
+6cc97fa47ffdd7d897fb6bdd5572e35d34e7e1cb5e7273a4ffd86525323ace4a
+84e1297028c2bd5469baa2e75d19360c2c9042139d5e7dd4390a6a3935424711
+de21910126d750ae279916ceb71da3591d60dc62db333c5021e2c1cd61ade51e
+9391472f46a58f4d47b46f95c41dbec5e4518446480dfba6b76ed9ab35ce9282
+78f9db04e36d9765ce67f7aa387061f6e77f27d34383409e3d1a2a408d110b10
+0f9244acea454359caa77793f823d16a267c75039ef2ec6a18dc651670e65ea3
+32aa7c81726e5b2dd8f51df89b097027a82f7beb60ac9c908cf7686635535f33
+aef4cf4bd09a9827b589102059bc7036fc62218cc0bf2a457703079b8d9b80c4
+d4863468613a58e01a6a3565c079fe354494396ebe623651a1848518629bc166
+30b660683422304399f3e03d86c17019340129cf16681d3039360f8610650d7d
+67bd1c223f3f0e2eecfc130873f5f744468683b0d82fc7f09dcc6556064fc4d8
+8d651a40a3a6e85dd392e7cf9ab73e4b06d9ab7ed7b1c11f6cdac84bb2edcc60
+c048b70891e238c92873f42ed8b787de2b0133bde4970420c055802cf9c306b0
+312a97d3a7830d2838fef69c4c555e87bd
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMEX10
+%!PS-AdobeFont-1.1: CMEX10 1.00
+%%CreationDate: 1992 Jul 23 21:22:48
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMEX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMEX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 183 /bracketleftbigg put
+dup 184 /bracketrightbigg put
+dup 189 /braceleftbigg put
+dup 190 /bracerightbigg put
+readonly def
+/FontBBox{-24 -2960 1454 772}readonly def
+/UniqueXX 5000774 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a
+e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4
+d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828
+e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4
+7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80
+523f59a30d195fcf9b9fce4ffafc6d5649664203ab24acb938d58d246707ffe7
+d62f04bec4b70c21ef75beb2b812622b3c74e969d72d3cd11bd7106294a99caf
+0b1629bc7d4de6b96ca82930831d64575f23f4ad06a0e45e315b1d392411be8d
+6d73c998789ff258a07a3c8c2057325784514c845500bfd1a971310cfc11d41c
+1a167dbd5ff012c60add4e87325f6e5299032a839de65fb1473a166aae1876a4
+414a434f22c1d241591fb36f857df6fa930608750ffc0c54f44994662b1f00f1
+400bf752ea8d83ffc4cb77a290bc2d99981ae59a191748ba5c7ba1a9d2583fd2
+1398452b6ff5d83a059f7eadcd2ef744e9dd22bdf9c79d049bf06835e878c32b
+7765c69bdd8ef4deb4ea7cfff4cf9354a4ddffa689de961d16772491c7afbd7f
+ffde42400764c68e954ee5c455a5687959829bc3b319b2147deaab3628662c80
+30c5e02fea09609abe4eaa12e217bc3af673f1bc36a7039eb13fcacb4218fe0f
+c5a3f9452d4edf46cc91db67b624d4f2d37502fb9f11af4da18ca40b61097f95
+d44329375467ed13c5cb585ec53f62b83ef9502cc755af44bf32b87b8ae9f3f2
+f8dbf72dab90acafbacd280db6aaffaefdff6d5eff26669bac56280a950560e3
+d01714ba38659b0e4e28bf8cdc1f15ff7e3ea9d95a6afbbe3d8e6905aa6d531d
+6b6dcab89e2036cc492c65f76ddcc3cfcff33fde3d9ffd10f7a90530fd5c7683
+4329baa902e701ca42717476298c9ff511b1941244bb1dfd0e5cab92a43970cd
+1bdb292eadd055c97972844fdcdb0aa06401e7b2632b9d134f96bce0064860f3
+9859da7a9a82be0a840672a1331212752ae1b521b693b384a72dba8d37a86eaf
+a0341e7fc5f6ef7a8c566aacb91e8bf5005c18837894c4eacff41dba54e071ca
+83f9dc35f771ec6dbac68188dfcb67a3ce651abcba36b20f351e33f2f20b01a8
+273d8ca2a6e1d65e20667be196a68998cf5217f7a884c18559eda729e1ac25eb
+64a6a142cb64c63e42c9c8d16feb55fade7b42298571447abf6eb80f4afc111f
+5894d4a3180926d2efc7c60c5b85219f52e22da1af41e4f711259210c1ac7aa8
+b276c4d5d612571e228fc6bd29c59de7d3344625a9ed4d90b567327205ba2552
+81fada3e702d4f0bc20b868cf0e6dd025f503995234a4fa66e8b902c9eac7158
+ee8d92f31c7cea038065e6d36082e7f8ce67c8e333cc60cb2a9c17b576ed8c1f
+0e1a0c80a337f13a0eedec1708be53b4f28b8a46530db95021f0ce4d66cc0948
+da6f168da9768cb157c5121182e8f8997c6ae6c131f6bcf7503eea81201a0b57
+6ba8aae719af475c2f825332972938c144eb194c261d43d6be6c5bb160cdb71d
+0140a7b1ad3eed15ebae4b8072f9aeaac83f2e2214b1055d36859876b31ca717
+69a1d511cb6bdb6ded5548beffcc19bd2b33705f9ae4ff0b0e52d09fa03e8371
+8e162220383300aa4ede60afd39f4dfdc9b0e60c44b2c2464671b94185fe19df
+7434481c217e1456e552a0d7121eafac64b069c4a71f00c6d55c1c90001811cb
+f507e5b1408c4171b269818f4e60bdcdddbe405f723f423c25135a6074bc3737
+c863328f1280a3e456df7ee8a4d682d6fd5a322dcb5b9ef7393b63efe579d4e0
+2dd895dd0aff65ea63102fdb9dffdc7a168ec00ee12030b7db4566fc6c1ee241
+a5ec955c20c0d44ca1e5212059ad1c366addc81310521b1b035ce29ffe507db0
+faa952c417e80e81d44541b0a81bd4dbd2a7dd677ece7f822597a659699f5237
+9ee277274577f3b0f32c80c2dfe6b4b4241a99f3452b5ace4f4f484619fb3618
+d4800f9311c6d97accc0fc890fe196010d3d2bd09e06e1506b7dc2fef120feda
+1ae0caea3ccdc7f9a6ce7e050df9c9c63c4fb42d5a44f802c470c8f9669b3052
+a1c9d491211580baa25d65f59f420a7129014e1ff5c82b405ea16de393785ae4
+706a9899bbdb473daa0d89e64f44fa03e3ec23bac08a864192
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.1: CMTI10 1.00B
+%%CreationDate: 1992 Feb 19 19:56:16
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 183 /caron put
+dup 184 /breve put
+dup 189 /ae put
+dup 190 /oe put
+dup 101 /e put
+dup 107 /k put
+dup 109 /m put
+dup 110 /n put
+dup 112 /p put
+dup 116 /t put
+dup 121 /y put
+readonly def
+/FontBBox{-163 -250 1146 969}readonly def
+/UniqueXX 5000828 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3ffd20326947b1065649b533eb5e9e3
+a88a87fe987918a687950b26f647d6e08bf14d983ed1d4a8ca1e2da8d985f944
+2eb916f5b6ed0697ac7c33e1e36a3bf460d34ce45f1631871097cb04f18e3889
+4cf4ac1538eb19481311d24fe3be7beaa4a3730e8b4831fe59d6d9ce2e46116b
+629c7ba2f9ce3ecba2f43bc162a5a077ca1b2882a42afdcec3f4b75b5d63e0bc
+8e5dc95257766d8ea467ad9cbaf47be60f797580cced6884b3a68f70c91f4fdf
+80fd00ed9139e7f480dc3a76af72ad9b434187730bdfaefe4cbfe5c7edcaaf24
+9204fd703011932e5a3c27be468b7dab69daa18dbbb6335ab8ddfdc607961c7c
+02582763fa069d43563ba17704029945cf42fcb19cf78c51df0ec4d851086d43
+c1ab38e865ef36865fff3a08b01cbcb070ba4893f7482dc7819ad03d337e520e
+7d8cd83bb8ac7aff4df36751f4f12aaaea2b6d7260c09a26e987c904003e0723
+7dbcc4a8e4e85cd3259f40d3caf55c742cbb40ad0db1044c20a4f122a63f7b81
+1d945bfa69662189ce4d089464d2ead9f6ed60b581b04114d5d45e97be27a576
+35154e9b8464f2a0df18da855eb51b8f64d3054b0b2e84621f025a0776d16fed
+b988a43d2d64c32768dd106b9f541ae8e68ac0bb7399e16f4d4ba074b2152d0a
+4e9b5bfc21bfa0d531e28165e518ffc054dd4ed0d74eca079d20e79670419f92
+e03bcbfeecf3554d661596f6f29e12170804d15a250d917ffe7a8b6e8fa53047
+1ed97ba56481589a65ca13619129f1e26affe6c22f0c38540f8ce37efb6e9e9b
+60b51a5a9cb4454fd7c7f92f2f9437159687ab590f35b946a54491a7739c9269
+e0f1fb48b129811c82edb3171cbd5105fe65906974db8a7da92f4f43dc7f6b36
+6981146d86d23613a0b38d9d6191db9fea0172e982cb1cc50e382f69da1b377c
+1be9407f88a2a761b56f398467a057f35d18c01cc377e006182c891ec80272e2
+2e3a5c7123cd27eccdc87392a9fdf63bb40f02b7649cfc53ef933c6518744cb8
+9cbbd437830ef5b1d58b00b67bbcf4426dc1e6ef583b0b4ad3aebd741e3ff0f7
+29ae271f032019b1e7268043fd215be590f9cf24da14a90f1683afcba8006cef
+5d5632c2481fbc1bd8224e8952debb7c4596a237e5505ac143180956ca1f603e
+ec70cdb4a33e1c4ca1744ad706aeeb2c12b26a02b2f19a8698c0e96668179290
+1b572ec83f35fe7b30f03ed45a2867558a194ba83a6279e52397a2f2b7a8ada1
+528379f5c95d41a9ad00a194ef048cf5a4201a803d30cb8cc987b487909efc57
+42647bb6042e8da492d693d287a6724335b693227594d93d70a2300b95c400ca
+9b61747d96ab372bd22c2aa3d4d02e6fbb44510a9132f071ad0b3f2009b68a22
+869142d9720d84c5cf322003a93a547376e44a3f82a89ffcc94e8daa83797ca4
+b7bdedc86213c7557ed3f85a98b00fd1aa4c4f11a74e5ef4da41208eb29811cc
+cfdf4c829b2651119d033beb0267019c9c1769ed97a78303cdd9768348187a7c
+220962686c2865ff498dfd7ae7c8c2460e8768fcc14e22ddd53be23bcc0a2739
+46393e4083f505bfebd9483ae6176aa26e10696eb7fc42891e85d119511c1bde
+7d3bb3a096ccb2cde31dfb64e008d29f8a287398aad6a8efd37c7a231db09dc6
+7a011d197ba20810d2c806d3709d519ac117455d4d02e1f07b53fda8ccbfe5f3
+60942e903fce99a62ed8d4923af9bcf801b3aea354c2dc42b7b6d50a32933068
+23c2f04e5b42bc30e21cb4826464629adf5b2d69eca34c0a23f80b9732c27bf3
+9c44566e214cb351221e194bfc0a7d86f9c76e3aeae41ec3871e2a506d3bc2e8
+6076106852e146f791633ba6d85e5d5eb6a83c946cc893da93243a79dec7d157
+f816610daf72fa8fef7253899dee6e68a7c194a2cde89b1fa280c91b93562a46
+52e8177b57ca997cf8b0325fffbaa3e255baeae4408020f2655b5864d7910559
+fc6427ef8db5e6fe16ec7fe28db772984b747f93968693cfacf9a5f428d368a9
+26c214bfbc9b9ed6763bb0ba2a800c26e3b115b01689e1f4878137d483df0188
+78781ba9b697cdb3bde09f94ceb0aaf0a05eb17e343f41f7255512eb8bf0dae5
+18cbe88a0b0230a280a177498505f0f664f8e1466ea7d039a12d69f7348e84f3
+daff2a74b6bb33bd17fe816a833542d14a1ef108a885cc289f8b9fe9450976a7
+ac2e6320432f663161f795b61b0230508f601d5f9849a55cd2aa1c44d1ea9c3e
+c891745a6146a2bcb6ff6f26d98c3ae2764536fd5b21810a9f8f8f069a34852b
+de052aa35bde72b9c1a0cb065d94201fe9a6a013825a070026703812642aa95e
+1219f46ad23e970c8de71d921e190a922b39b08d505805a4501cee50815681c0
+70e2a526a6d1313a804de058dd09a8f03888d66a3863af5c107363403d77afda
+5805f06adc5954be2b5073853df1a6b9efd8181b38941249874a723d3c5d0d44
+c0a228326baa4a4f64c6ad6d87bf6ff91ae40af3d83e77fdea4ee0b0dc16d2cc
+6da560860427a16a6b11644e2153dd72393d703071488618764c565af4328abc
+38dcc9d87b33923343b2cb7146237698539d7516d400183eb5901b421f913ac4
+f9dcf91444b585cd1010672e90c7043cc1d4fb16d7b9b612268ce8ed65d74d4c
+b0c797b21666a451e29d8db54948272f0a9bae1b44fec6fb1a4d932fb7850097
+61dcd3dac8b173316114f882d5e918b564cd06f3246102a5e6a8774a2b42ea3e
+16a75dc262f97e464f8fe24df91bc99334bf5ba33f8781af1cfe01600e79d67e
+d53b1ea3bc71e55b42b6b9321e3adfb341db26788eb7a0967f223c3ff62a886c
+87354f49dd92e1b65d2025318ec012d9dbc3d1d5ff110f5c86375cdee39fe006
+45ed0f70af6a67bf1f784e78ee27c1d07b8ed8958510bc2a431d6b1ed2bb5828
+4b8b273e33c25d32cbc44bf4b0404ac152a399ce7b1081e7c50030a79cbdd1ec
+ff368aa3e4e6f52656068fb5908670d6c83dcb6a23f46907a49a180cd7dc2a2a
+f0e7c3360266c0fa0f14ae851d6a6b6f5c34ed6556e252610bfbd540480e5414
+5f67f0d12ba5f5a75a0052d224827d14be192328dbeb18d97067c012112c79ee
+815334a0bde43758c67e15fbd44ddac214e93c2bb9b937a15121201e1685c0e4
+9a97c94404a9bc4770fd92c724d4641688f4d4bcacff744b9964360fe7ede63d
+2efddf11300566c668e1a95ba7f9d1bf37e79d86d4c31a33d354f5e265e52f23
+8e3823c5bf03159668a35fff478389ab8bdcc382d80234b6ce237856b2dd1ab9
+4f88e1b335d023b94e81797afcb6ce70da1ab86fbd218dce81702d7119634aa1
+16b70fd23eec40d8654062676e3f9aafc1bb1ac17a4fde4db813fbe044a0aa36
+054d6d6204083f9736b9b17f7418dbbe9b4f628172dc679e40c8d57b44372bba
+56312e51a278e1ff829499cc62d2e5a6daf59838324bb6558610bbfa4b0f5367
+1e5e114daa941299f1101d0ba0cd274013171759b217642c9a1d1533a461f936
+0e84f8bcc0f0991e6cb98794148fa106f880683d1c1275a18bfa31e997666a51
+e421dcf6d5888d6f90da230c6132095591e7f4218e16d558fd6342dac79a8627
+718709141e5c65bb28e5b75f35c386017359a41a45572875d0e433fb1e1fa14b
+e12753017df6c0fd420ae73bb58e5985b938f7b983ca26f64cad573517f1ba5b
+2c1e470e06df03e575c01d7a86e9c92f5c8dc6a202d01642e3db498edcfdb4d6
+6fb15f709cd3a31bea39289e56049526ccde7baac6385203fd4a70dad46844d8
+fdff05c83bd4003bf1506366b4e25386ac59e509c2269d01af1b275361b25a72
+37e98a941929603a847ac3dc0218e00986dd8cddb452debe1653b5165f093ffd
+962e540e4ac2b2e6c1aa46883256065eea809be8858a3178959f0c5b66dbcbb2
+4429e42ef05fb4411e17e327ab88a4f8ebaf4bfdf8ab506b2a106e74ed5ff2ef
+e421b7d0f533c203266e20c0c9f6a88bde004d6b12eaf4d53cc03d414487d297
+8f364b2948f6c6a5ffb692d08b5a6119fffa8ddc7011bdeb799b83beec77d438
+d289962d6ca8a913f822450c8358dd36dc71662249a438115f99ea2a494f58aa
+d82003e39d57027006082646d6d700e90fbb2fa864928a91e17b2a61649f292a
+df359cfc91de7069f5f8ae0bd463b80c6e5f3f3ee67b17ff1e6086ecc61756c6
+a8433096975d6a108aec8e60bc7e7f03e3d884244e76eb418956e557f466f817
+6b8725db1d4a3b4de1d74cb6aa2072b18847b656cff008ae09461bc26cbddf0a
+ddd89d54cdc1e20adaca164977933996e3644d0d38ddfcf45640e0c38a2199c9
+721f32f03839ce62476cfa484db3375455fd5c8061862432d9b970db7c2046c2
+1bd5200b9aa990d5bfc00355adfdf4d4e70ae2abe5b4b19a25930860d5130c0f
+29d076ec24d9383169efee55d6944fe86e6c542a9db1a30876e4c13d5d53a8e6
+e90cd12e449e5a5dfcf8329a8366daed09d010fa10229ef16b63e4926c201885
+fab556468885dc0e1015f245a14236e512a69a65bdb46aca586279ebf3c739ca
+da5698d5bb6b3e40f31b5926068e78d694503b7927d3ff7c2314dfbe21b5d5df
+6ea411df2917e2151dd4886da5d8ec3bec3c25df26d2c1349aaface41356fbdf
+fb1d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY6
+%!PS-AdobeFont-1.1: CMSY6 1.0
+%%CreationDate: 1991 Aug 15 07:21:34
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 183 /lessequal put
+dup 184 /greaterequal put
+dup 189 /propersubset put
+dup 190 /propersuperset put
+dup 48 /prime put
+readonly def
+/FontBBox{-4 -948 1329 786}readonly def
+/UniqueXX 5000816 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f059084178f5ab59e11b6a18979f258b8c6ed3
+ccafbc21aca420c9c83eea371adc20e038b4d7b8ac303004b0aa205f04135140
+76407216032fdd22e6219da8f16b28ca12524deb7bca073cc5eba65c102a5e85
+fd48e6d062cd4283ee570a7774597e5bf0e3400b6be72db0115f3cb12db70ce0
+83722870cddfadee715f10f1fcaf20e06f3c54afe5ca238539bfe2b596116e83
+f5371ff18fa5003d8543226cfd4025f9940365b392a858d27f078d3abcffe4a1
+54e78c7692d1a32bf935967c64f01b24788ff8325d61145e2d4a489fd986fb77
+38e6b254522c77ca2797a504a9ce4676a77ebacb026eca94dde5922c936f8e90
+c43e28519237b90af0a986d468e0a3fba8f9b85d9daa537e4792ccd62a9d6dea
+e7bcc9d1cb5e7052cc3c61e18729eae42af1358c599aacc502ef0726e922f9de
+2e388478a03ea917637eacb5b3e8ddefbddcd3de5f8183048bf8518b96c0e288
+f379baf53cd6bd8a401e6a3cbc0036d069b57324c5ad4a3f90833295fbfa4e3f
+dad08796541f61d4deb23564235ca692a39636acba1fe40952cf6aedfae40be2
+b27887111f0e0fd7425351b2802299229a1a8fbc072518f2b8171ba96fc5d721
+82bf36cd33b326e462f6db60b419e834213efeea0333a77b273a562d435c7f03
+23b5077f39bc5035b356dde845d5c44f2bbc49a6b48971b74f6be82b474cdfa3
+71842bfc2c0c3da1cd427d6c8f87aa4a5b39f224bcc1e7549f47ce3cc17559d2
+80ddb07f3c5615cdd779d752fdb2c6714e2502d4c5ec6df8b1d6f62922217105
+cf119128ee16c411ecd99f19bbf8137b3c450bbcff9fe2d303cced88528acb2b
+5dd7ac1a200bd6a16f640e6d820e7156f3258bc4ca53bd179b4485224c91fa0d
+8d7ba93d78ab5ad0645f306af4b6050327dc1f4b64825361594737fe35b198a5
+af9b161baf32ec27c98061a5c44856b5fb8a812768c442d37fb6418a80768957
+93a759d279f60f1130a7a74dc9668b05aebe84c36ac725051e97c12aeb0e499d
+eb9ae806c8d094a728236823e80a148431258a283806bd38c5d7b75aed275746
+ae675eb30df4e4174eb1a103645887306a81c157e25fef77036ee270b3a3dabd
+777218798da8fd6d9ceed05b9e2d5982874a3695e1c4f349578df9958bc5bff5
+e8a231e312ae62c67cd19820c2a27c78e26897ac95d4d709fd408ac3ff89ac7c
+6321b954ff7c8cab47b485d3a73ce20365ca6361077c191a9557d354b0a70d47
+84cbca5c858687b144adc0a484945775b999b3036adae9bd2452cad339034f78
+920d9f8bbbc317f5c5d7400de20b86c4819e1793f8688c2057c5491a954e9fd6
+f83c6d0a7bc85ded0b13eb833b067862da8a1a4bcad90c568be1603bf9b41eec
+3efebd1d328e026f6631727ca65e49ce4a9cdbecc2351e5c803bfc52e16cd391
+1721b0dc0fa078a2dd433000768df6a4a90f97633e
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTT8
+%!PS-AdobeFont-1.1: CMTT8 1.0
+%%CreationDate: 1991 Aug 20 16:46:05
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 183 /caron put
+dup 184 /breve put
+dup 189 /ae put
+dup 190 /oe put
+dup 77 /M put
+dup 88 /X put
+dup 89 /Y put
+readonly def
+/FontBBox{-5 -232 545 699}readonly def
+/UniqueXX 5000830 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be533de8dbe3ccd493ef4c9656d5d5b76d531
+9e704539dd76b065f45e6d6f62ec499c9ab91923a364237ef75e1d62d52df3a9
+43713cbc63b16c1880feedd1633766248fed9d060ff709951f2ec84ecdc06bbd
+9cc4a865e1f275455525e5ac7e2e6289615e98cf7ce3763b6914d3a4c5b75b29
+b8043dbd898ccd5be448064cf1af2f80f969a44b4f9b801c42f6d6a6d0c3ff42
+e0b1cff748c1fc49b598eadde0c2802dd591c54b802ffd24cb7a7639295713d5
+4e639514ac78460672c9c51742ae2014e4137ba4303051c06f686395aaef86c9
+9d7f9a97009436c2ff55b770de3e80cef0d53f4df46aacecc21632c0c676e2f5
+ca7bb101a239a0ff67ebd37a6b8c4c8246dc2c90b759dc03fb26bde8f134f552
+23ef3d6496aa0c4a2d7b6398de6e6a0474ee1b0d78b2d865614609f1db92fc56
+4ab5921078b4944e11a2162902f0e04f4b29448aaa22b4ea92fac48f8dc47535
+d717dc7acd08b25d391c97c6c540ae0a98be5d6a8da564ab73e8b5d3b5e1989d
+6e25c3a35ea44d596b5fd6b2373b30de7d59c1831245edb76d6a67816ab91a80
+a27a6597c6dfd274db8b3e45cb01aedee59ba6efa1428e41ed557f051012a389
+9b195ea44a4e4d0067398d9d40ea26195efbffd2cf785540bbeb8964f6391361
+904fa5e187e4af3baeb4e8cbe7558fb7049c94a1769a2ff0b44f679bf6f14d8a
+974bb8bdc735d5a9798c89d7d81176ba98dc22dddf6766acd52020e3ddcbc94b
+71ad8a336dbe9262f302d8e8d5ced4481b19a586e1d73d0138ab0b732226185e
+8cfb8408890ecb590f032a5633352c42df62a7dd1a3cb4fb12083709edc26146
+f31161bae67a54aa5b41ca7af61b515c100b38a01b77f831245a013f804584b7
+bb764dab019978bf8ed7154f27f8ea3d82baebc1cc7365873282db7eba8b1a1e
+04a51491680f28f471170a61ee858b3593aec826885ef9e23aabc71b262307c5
+5474331a1ac65fcdb8f27f29e986256584a2309f0e54cdfd2e39adecb1a79a8b
+e4530dffb0c9854511dbab762cc866eb84a7425f5fb8b7c0b254d71934184075
+a09a58cb150c378191e2de03fbfc419ef6417caec8e25249eeb58388a0264c0f
+30cdbc028ad80c38e3b381ec7b8a52ba231abba77eff7addae769c2e295800d1
+b78d55ca6ae97394431cc25f1775d2453529192f19d25356c7d28131600b513e
+ae292d0086cd588b66bd4520a8eaa5f9e146576a5529a873b99e66c38a03eca4
+baf717fc0dc8790a183b2c70987a78cf5eaa91ae0f35c864fe02861a9c47e1d7
+6fd00f64255f7b75d8c3800833c54b00459381c22eab31e83a0c4b5d6e183381
+64f39c1ec35067fcd0c4c690b1e143da8c380f209741ab4e8ebc1901869be002
+76bc83bf765329924c8b47306456dd4a89ce44723abafdf64a1499fd2fb1b2e0
+4c25595c25c080d5439cd9bbc3667413f0797f7a7e68e20a4068d20908247eb2
+5311646796c37809d9054fd7ce5c6125307f73afcaf66b7a5ba53e6c67c7a8c3
+898f8e20f9b211766f0a12a425d1ae92a135d9cfe07157f26eddc44c287f3494
+9a7ca7a9375c20412a1da962413d365713cf60d0e3d65ff3102e6fcea6370266
+2e060626c02f54545992a409dd220c7ec13bc211f4dd7578696cebb8663ec999
+f324d006e4b2dfda10ba78cf56e4b396ffa811c9eaeec53820a5a5e1a3195c36
+29a3ff1afabdd06d45e92f123aa69c75dd9fce2bef2107d0df0dce35a3ebfc8f
+1685b83698a94a35aa99e876703ab94efaad8ca204db130207bfe8b9f9f4e515
+4687cab3bb5137822fa9ac2c91b5e927c3b30a1f6a9c7d2b49300d3d46f704aa
+6a9d2a9d9eea9d6b3073230fddf58cd704363f407617152a8ff2791ebf59b3f7
+a5d2d3a995cce68cce09b723d7c09c96e2c04f646390756eaf23c7813fe7d558
+eddbf229027d6bf939c716286b7ac31319f2ced81d00db3198f44f8b88e96d83
+ea3d78578d29c021307e20460a1075eb7c8a3f7843a14c382e6c6fd5c852ece7
+26e4723f54aa12e2eb2ea9a4d31074b97b423de9feb65081c14bb21bf1c0a385
+6d5b87574af05fe378b595557ada470d8a230b76b039b19a22c3d1f7b4256604
+a301a2049ab4d7334d1fbf1f34ba229a1410ce2a81c6e98c9f29c91d348f071a
+3a58471de2e875a9dbd92ea8a54a5caa7956b88217cf257c43770ab27550c373
+4adf44c8b5fe9b09f8c9f4a94466eeb83bd870c63efae759d95aaf95b4efa659
+8fb38babb960b951f891e1165ddb9a96eed6bf9c8da57abacec0c1486b57e7f0
+8c4330cf8b54ced933c83d2f6a4929b7528e0f18e0c0442e905d6de73f7cf5d1
+fb1ffff95bf78b830ff9f36cb01c80708adfba98c498f01238eadd458cb8343f
+ac97d996079ba68a24203e600c733800618d42b86e27b8e35bb3252635360fcc
+d980de3ac2150508905782d247df83b47a6cc81ddf4527694ad03eba3e01b2e1
+d58a90e301cdcabca47d1ca9bc60312049ab47a1a0ea37c73aae7790ee96514c
+56fde83c57f26b5a7c54c3601ae7eb08af86e15bd07580e516c8083140fe033a
+bbd4c310acfee75cc0a79bd0d67f286d562bf0f3dfcc07b51b3dbba8501874bc
+ea0042aee97503f5053b78f3b231f01bc971cda7eff548883394f5ac890433bb
+1f2eca46d5a5729f92327369ef61320ed9150bb405ee87d6f73a5b4974207cdd
+72dabb9712aa00e23bce140f9f864365afb5fa628486b976bed9e8d0e0262ddd
+7cbb02d47e9d8722c7bafa013b713c0a476993839ca7c17b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI8
+%!PS-AdobeFont-1.1: CMMI8 1.100
+%%CreationDate: 1996 Jul 23 07:53:54
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 183 /kappa put
+dup 184 /lambda put
+dup 189 /rho put
+dup 190 /sigma put
+dup 59 /comma put
+dup 98 /b put
+dup 100 /d put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 118 /v put
+dup 120 /x put
+readonly def
+/FontBBox{-24 -250 1110 750}readonly def
+/UniqueXX 5087383 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930e72218b3075925ce1192f11fc8530fcd5e3
+038e3a6a6db2dcfbae3b4653e7e02730314e02b54a1e296d2bef8a79411d9225
+dad7b4e6d6f9cf0688b69ba21193bf1495807e7a196cf14c95a4e02f9cd2da8c
+db2546c6df52e524745992e18d9ff87aa25e4e1800bbe4ebb357c6ef55ed6d03
+6d3a00c1ee8073266c21d2f0ac85d656abf61d7e5a4fa87da8ec3b5329e434d0
+d2adab706b42a2e5331be5295399d803ccac03f631f01f39a022fcdf63486b68
+7d15ef284a77def7fde4898543e7b5f7ec267756103e477f547cfb8d2311c4b0
+09deff56085f5d419697af1846c8b88c1bbbae149f0f19ca3c8dafe19cec48fe
+6b38357246d8b5cef80b53bab4cbbbe8bc8318cc462a4158258f456e697f6058
+86010493f252073ee4e4c9531f23485415ad6bc901bbaea659ef701f825f4b6d
+5c9bed0dce7b63810f906b33ea4955531ca1ed1fc120cc56dc1e277a33222cc6
+c3a97552607b865783faf0895cbeccd0df54f57bd162a88494768435eda71a39
+69718c0c5912d3167bb0971546d733e735aa9bcd89f5aa154656031ab3f6fe41
+94ec225ad03ab8b67a9da43ab365c4df17c23e79f685c3b6fd5b654e4a6f2603
+6cec3a8641b0b57f93eb95f9e238832aeac2061f3153e0f375513c974f1c38f7
+b59edcc94716f2862cf71c9a2be8430985da1cd813b1e1c1b9310564a2eb1aff
+52c190f50fc981dccb64bb2c1f7a62c216f211c162c2ed1c554ef49fbaf12b31
+aa3b2a80fee259dc0a2a4242869ddec7c29e2941792b28bba7f2c6f77ef69638
+12b07d6843f33b51e01c8626b26edc34e1e0fffadede5fb468e8cd5de7e5a64c
+366967578f415484d122834de4a647541d66989f7d8b25d1712d8d16729bd9a6
+472e93bd4c53586d22df5fe74e64c56f8b43f054a653577fa785ae30214ba6eb
+4e7caba5ec4c942ebc8d5e2f9d108dbe8451ddecd3b86f46123be21fa27877ed
+b29b61b72adbbe2622a1c4b82f36def0e987a4400a3f4046c531f0ba621b0c56
+7c66bcf5af2e00a131f92414b68e6e4f0e2065d157b0511255ecf423c560d01b
+77a8e8c077b954404dff8627938fe6c1c1def654305955f12c45bd7d80a8d760
+f37e8665d8f87a840e59be44fa8719cc1fadb18e181dae5279b81da14fc37ac1
+b4160eb8771981adb7b55c95967e8de93501af7fe308635d9061105a03b43ea5
+d24e2e52308cc29a71bbcbc0169a4c15ba4a53ae607a1eb5ca6bc543cc92589b
+b179a5434beff75d152ea81fc31ba1d4f92ed0ab800b675223f668eeba5c04d1
+69560d81194198ff24de607b292fa52bf40a88a26a80f35ef455512e2583f1d8
+b5b9e2a02e50357380e4fdca8a5f382b433d422c2b7770347dd88dcb245fe64f
+301199f507417403b873bf6b6e58d6875316cbc776da8c7f8c913490d48e724c
+8a42eb98eb884646e2020065c927ad61d6928bf840fd8eb97de7cd14a9d5850d
+009ae87758eb5f989d3e32d9c026693a4454ffefb4dad702bbd6c5f16d69a90c
+f49ffb7d00cbc43628665a4e0f151ca64bf5c6676b32ef6020d1d50d2f2e9585
+01d1da50e95eb37f9f1ebecb440d57485e58eee717d699f333497b3d756760fa
+d815fc4037f4948be8cdcef524601611bd98dcdcfe175c5e6b6062c04443044c
+76eba14d30ef2416b12f9243f55e2194c3a1e01f76e6a042e9bd1b10178ef428
+72dfbb5309112feb1a87079943f3fdb9901e7c5ed5d3126cc83ba511919972b4
+7fc312a4106f148af7b02bd78646d807651a4040d0a608073d775016a90b02db
+92fa7ed354febe152d3bf908fdcd6c1b5e930ceedf1846a4abd67403982679d0
+3a9adbf27eb14487194926d3df5da13f6110ee4170db1f872bda7552c017a739
+84a9b36964693c981d198f6a3379e3c08b2ad5542f6a10d12f153d28015b52f6
+8bc826bb0965a3e792df6bcb6999df0b79159e80c7ea44afc9ea34a534e0a091
+65113798e45d05066a2a04dee966cc4507997f3a69c2d40d26eb8e64d3ca92e8
+e98853b6401a1d6de5571e65e22272978ea5d748b663d61ffed08389f5d3d435
+45f0341c94c4b72281bc71b4c85c3a994764e254b0858b181949126940658951
+93c18c13e927d34dca67e9830953331caa59fa7fc8b6afd14aaed448581046ff
+1c859e3ca32e97f70faeda3ad93d5a83217beefa9f6452d8c3333f24ed473d21
+a7903370f55beaffe756a74a93e421b82a471563a749b634b7436ccd5e0aeb61
+79e627e631bb373827a0c7e4b16d9e4729cf3a973d9601440b81b2f9d5cb2435
+8c615a02d24ab749e41ac2b1c30d618b20144eb2575e09694e7be26655975362
+e1db55f2eb64a1f6abd19923c5125527d18d0d77e962e925545288c2e16e0718
+887095b8f840a76729352664558bb1ebf6e99cc01e334f9aba1e370ac805c607
+4e14a1ff3f707aa8d57df8292cc55d52f5c69f2d7319820106cf6afc794ee137
+799c9222f35042ab99452b726aa384ecb800888757f15e4dbb3f3ae3ec8f1244
+0e9370a1ef651169dc6f095cb44ed4d9f1ef3fe6a2e4d5e47bb7f9c10a06a5fb
+789a15d5c6ffec6c6e6885b5863f93838ea2952083e98d4b3312d2023409a0cd
+f9c21a487720de006022d0fd701032289638fb1cbf68da689e78b1682a335edb
+06f42d1bd52ecf934631b4a4da1c360c8fe84c8e07073314fd760b2a48d703a3
+d3a36b12e9a2ccc5a0e2e39e341ef3510a58db84075e0e734f1dd36c5c65301d
+52010fa23a9833f75962fd63d49e6a9fb25efe7e7f194339538da83951b233ae
+eac34d0cf7d8df0a802ad24b3601175ed1ae010a5b123faf3946b5538714bc8a
+14178157050fadb1f0b52a7ef75ae37f01011595ca6cef346eb2ef9f4ae04d52
+6270e1ded3e683192f15bbe905b31392c3f57257b6877b8390306f19fb8f5644
+1bb3e82c9ac7ee5c8655a01afd5615de7ff0359c8478edd1bbade53e51834435
+f4eb07dee968cbe354882052a8263580ec3d673a416dde40025c3e8391290bd8
+0e8ff89219407fc8090d61d2964d05f088219083868d8331c5db6e937e74612e
+8b30d98f8a38894d665844dbb057a13b0ea3da6544b7dbe1b51d764af0954a51
+e4a3beec8edf0eacadd376e4788f332e93b25b5baf0c63c7659000216861e23f
+e3781e4979dc20191f2c77ab6caf51f32cd24f1978b2a567cb9d8c9c35860d4f
+e0387ed76c160b6ab33634327da16cd6a24875b43ac1faf902ad83a4f543bea5
+4bb3aa6b0194a05262534c56418debca4d8692698b97020116fcbcf6bf2a4d72
+3256a751d831563b7bff9d37e72bff4fd92c866bc0a3998364eac58f039d7758
+a3fda7e540d100f864d27780fde6d5568a559faf2a5e2e848a4190974020f63c
+da6806b6f09bd0dd87a145fa653d5abf2163eb2f95b30330457699256c493864
+a2bd46bcf9f2c4aaac79141fd52c0b1ce234cbffc9edbdbc5b1651bd9001ba52
+cad64bca5ee1a8a5fbe08536a576e737960a89b852e9a5c3e402a56e86cbf84b
+a8d797fb22d70b9d59c0d3f7b4a6b957b7c034cd0d41cdcfc76ba6c5ef59a6d7
+9ae09d3f581e7f37e13f3b21b7d7108874c12fecf0a54a40c375f6ab0330ac8e
+b0e80c0e60984cfdd59c1a9fb6d913994933d7ac378526f0d04efa23bf6a9d30
+e799484d838234c2d5c923c676fc6da073a1a43c319b6a2eeffca1f19581da38
+78362dd05bd291e7fb11b02fa9aedb180b8aca209d15732fc36b216f62011e71
+50163fa6d98f190a98b6a0fa2815b60d2b9022fc67bf6f32148369ec110cdadd
+8c272388dc880e2d0959d77b98edf151207d86eb5c105f0ec0c648f380fbbfe9
+782f81f9b372cb003cf971775437b142b16f7f1f9b64f0c70568a52aac4e16aa
+e6dbb7d8bc3412bac39d3a7cb16b751ac8daf575a4e84bd3fc2f27aa5e9c65f6
+7ac1d7ab5b6c2925b0e15806e4cba9f3ea268a2d06efbc8d5aa5f5c9dfd98ce0
+3382bb6add928b56e9cf7ff4e3b20d480c2e8fd442b3c6bd5552574c17a35adc
+1c83d072c78929803b7f29414dc5bf97771d89b4c237afea57239128f315d7ae
+715aadec12235010192a89363dbb4fb8e95add27d82e199a75487264efe0817e
+4587c7bd6d6bfd2731365dcc55a2d7eae6b8fddb4e61042e78d9e7a4b58a8722
+02cf126f1a29d1f18639af0d67a9e9b000f866d2798edb61c99dfc145585f612
+567bc63df5886d43ffe3905c258edb56f47fa769f72682de
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 183 /caron put
+dup 184 /breve put
+dup 189 /ae put
+dup 190 /oe put
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 63 /question put
+dup 64 /at put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 94 /asciicircum put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 125 /braceright put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+/UniqueXX 5000832 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306462c563d51ecefaacd079732f12c29
+315e4b9623a5752c6f1d8145869e120d910b2644887cea7e30b15676a92537c2
+9d3aa80dc30082aba94b40990b82fb1a877e805e0c8c48f61e9f2edac05b944e
+e4d8084ec1d5cc517aaeec5b3ea379dd011eeb454cecab3ad2443c887c582789
+72355673e503affe0394fc7db31de364e4f56c24033c7df2265c56445ec63a1d
+5695a6041ea1b94407e1cdb7c5635603a4fd047e6edcaeb2d0da6c9e0e9396d5
+1a4a58e8fdc1578730f992435560a6e2d3e3687703ee2f78f5896389ac8470bc
+806169eb01762e89b6dc9adf857ead656620e2589aae722c37a2ed7a2941c360
+b067ee34d8d5ca3bf68db725614d936bcb207781f4d4ec2ac67b13a5ad161f3f
+059add7b5e3d904831e31c20c04546fae83ca93a35989e65c201756888f727b9
+7e5313c9870ec96e4cec3901ea03a5c744754485e7d169bbc98bf872d0796e18
+9d43b712950c3786257d8be06ab6080b9d9392313298327549a8a41c00a2cea3
+690b4a333e45aa815a64facae1c2b44640860b8b8687afbefdbd5b4a541a7251
+4ee7d3e0752af3e96a88c95d31fa16d34ba2f02fdb0088b165844f02611c734a
+dbcc2037bf741fdea7e8bcdc130c70c33772f777d8bcddf4611db99001ccff14
+d7af2bb05defc3480bdab312a0eff2f375afb4e0df2f803c594b7c93f71ca4af
+861ae1711932fef19bfe2f9b7adb69d68e5a70ea4d1a3d5bd85231b16993f65e
+fb37a0a823f0542f8c2340a073dc1be4a8347f9d3068a6435cd8278b0db1809e
+8af9664c2c989b9f16873c009449b6284b85da4dee11c96a05ba83292f0edbd9
+2cf674aad6ac1a5ff966ffc37e88a66048deed053565b55ef6bdb8c2f2f67832
+f8939a32442ea54f13d003494d6350a2864b427a9126a9c26a031909fe53fa84
+63b80c3ffd536c9a5dd29ceb03148dbc24c0033aec95c7fb4031f65dbd67a2d7
+0e6b0a1bd772f5450fa1ddf2a6424fa2a5efcf7fcf2260372574d7050bbf7d9a
+c6340019109b8f57540141b0b96f948d83e0f470248390518a6e881ff4511933
+1c274c98a1f8af8eaed5a700c5aa8785011be8b2a6cfdd0e35ddfa96332ccf95
+f9ff25733ebed67bbfd4ab734fd429f2e389124ab79d94802f2ccd41741ef75f
+566ad0184b43477ab5a074aaa7d5032d9e54a27050363bd1cc0fa3d7dd0c1330
+618008fab04093d1b242b34a624b4fb22b90e1bf1f3e030052312cbd45e7437e
+b00f079e154138a510686c845e231d38f64b591b0a6871dbfd0a5f6eec3326a5
+b6e559e4955e6ec14bd4c08907d10bd3337e77f3e95ab24c7ede5326b7470523
+1664c3fb73ca3b1cd256101b8f0e3082bb42cbc707bccb31c18ffe2ba5248204
+baaeaa4827364a0ac244a673cefe846f1eb7efbaf56df912429af20762a52538
+567a6f6616a63610ebc1e5fb3edb58febc36f5a600f9929bdc94a9c86182b26a
+1ad60da643e184d010e46412f6b79ac874437090ac9b9d5e9fd561a02434eaf3
+86c73be33289afd12e360ce919a278321e3e9946abe3c4d85d59f4ae94766844
+31798e97254186f3ef0012168483a500bf05e5a057a7a1d29ddc982648d248de
+07c687e6ab29e6fe8f053df7056e12ef3208e8d962fee97bc5071cf2e8233eda
+b368271482d9da24ac4352ebbd41a4b481fac65eb8eb7ba55dd0d26911c7c8cc
+71b478fb79d91cc76d15ccd1a72d8dc29ff2662369bbff20820a7807fc423d02
+8f1d3c334cb38591059256cc1fbeef36cfd5b5a17392b7536ab2a6bd6cf81e38
+ee1730897477ba75cef601ce69cb1bc8b773a8e0b7ad51e5d35233c37d6572fd
+2db7afb1365ce6b1f140ceb1349d281e5aa1ea84d32b76d849510964b39c5ab6
+394d06618352e8f259f2530db7d44591155cdc51fefd1b4f6f968b6ba40d3e16
+097c3e76e17347fd9e18349a304f8f77f2c6b918b42d1a6b8884fd13987e816b
+c3741fa914dc6b1c8f33204f0f13a82c890dce71b9a2986ffaa2fb28c59d5a8d
+62fd41a4b19e695ab289caa9cb1c34b7650956b99502c3e284c373b60dac7b84
+9c618c42880609768ba86963ea71ca2bdc2cc8a0b7f9bd8b7852b76a59861038
+39e2b19796aa6f6fd3e4a2af29e5cdf323eb9cbe993736e96348a8a338c492cf
+853d6b6f881a37587fb147deffacb4cf54073f63f8659f53607f2b8109626c10
+77cbd5aa31bf434388cd54cdd3f94d8309824e0870b0db78bddf177526df567d
+ab1766c9b0a10333d854977c21cc89d7215123a83ab5f2c7a30a61a3f41d5e20
+551a03d2353f9e87f21c3715b178c2c9f23b4dae07d9390d53519dc9a1c3bef5
+7a327c12ecd1b5e66d48cfe5c6e3ea22ad3d4067eb14a7b69afec66c87fbe59e
+a58f4be0aefc251dc24286de4606349df9ffa1bd3f34546dbcd6e387d737228b
+82038e07db881114c6b00929adf5667e521d1f069eb8fae76b50a4cf0c2453c2
+dce19c8cb0b530acffe2b6874df2842d6e8548b0bead94077ff178a6f56ec01a
+b7bdb5965d56b378c17bcb8e6657c85877e9c48681970fd69de4b56f953c03a7
+c579ac5284320c83bd9b3c7f12641dddce8b9cd63e6624978a5e323a54c761f1
+bfbc13d283a1c9be8a82c159daf68e280da35f2ea5bc18d476592306aa519841
+5c0d7fe716640bc66997ec9d46393b778327a01c7dae7a7106b32898af9df28e
+7b74fcd0653665988050487f3e0f9465df692308d6e1828ecb356a5e738bf1ae
+b9f169d80a17da9d04c05c058f7f9cd50b2670f88fe41f85b723d8d2f42ae944
+6ae7fa644e4cb230ef0ca0ca57ed7fd2d2cbc475d5f88ab70825357adffd06cb
+5783ece1a82c3b1b642a1a17ddfdaaaa4c7814771ca6f81a38f2d5b1fcd06f8e
+10e71aa0953a2dd9251527a87f405eb73c8df48e4f00025dcdf3187db3fa2863
+c4d4d48bc4184fd370a3c84e39ebc38ebae61de6a7814fdc0bbabf88dd82ffde
+54df058fe9591ef629b966b2b2368fabdd1ec9ddaff238b918c9c2a2a606ad81
+87d2cde1d1ae11ded4585174bdb4ff52a4935d035f794d4b3813e7cf5d608562
+726d3295f2ed281a94906c095dad66865eeb1741a36ebc6bd2397c72274d5df5
+abb4d0a77d9adc62e8ad3ad40855c8af6113a1ad0fe3c95d9bf2e7f1adabf2c4
+8c44667218c082b6e5e98835971dcb2d96f206a69d1483fcda4161c0a1b0a32f
+ce497c5ac75c29edbdaffb3649613502abb777010c1e0b0218d201db648b3c57
+a2b933b1ce513c800d1d0ff4be5f5f64765b6d34f80db35751bde0c3226af07d
+acf79f1c2399ba00a4e630a3a8e4256a04acd036c6a6cbd54a0f6bc17e7c4a26
+c013e4fb409911dec2d05843141a06fc48b63127de9fbbfdd66dc072850bfdfa
+627610faf44366b505b76749042d5dfee44270cefb37c46d5222c6472f4d79aa
+e4063afa50a7d489b26d220ff0452f5412c24e0baea04677fcf06d91c9bcb997
+1329fe2c63a28472383836529034e9f6f6ccf0d6eeaa9445b238d87cd5eb4462
+d1a698ce4c92e4fda41840186f6d69364682b2933e224b3373327c47bc38028c
+4da84ad0780e68841c6ba18427388b5b6a6a4c33d9e1233caea4ff6e28066d37
+e654816cf75858c99a6ed383c04c91ad95ccc0f4ed5787d07faf929db57e6af1
+23c7d5b94d2b7cd1ddcbe1245bf18b0438db3f008b533c1a13e166064f954743
+a4579eba7b62fc5c0ea99d8c5460ad490e79279eda70ff2175636754c8e2bae1
+822ca005b16c2f56c5b0e3da6a48398181200fa2723ffc4c54ea31a62878eb83
+ae083d70bf4a6f0fffddc422825f5779261f79087c3d33027916eaacaf66d1ab
+531b4298fa72960df375df9a79e7400fe6814a950eef6c5f8323c4a74d23b574
+21bea88a2b027caa982fac76c2c9d3c464aa75cb048a2dbdbd6e9e22a10d286e
+8c0a465d66c9051824a789106dffbce306279ebf6137050bb29b9324d2147da5
+0cf3322488823939e6f28a8ad8210501a097cb81c4da4de0c0a13603ccea5498
+0de9fe0c843993c861560591d22eeb5b52f7ccf13e768e147be880dbd06d4a2b
+f88599287a6a105fb08e85d360d93009d67f2a954dda227d23543a0e8d61c940
+0b446aa1c6e40a192b7c026e5db4f96900ed16cc68b46b02d97f1c8760d4eb79
+6904f0be8b133fb6f06a77023f669eef83c9ba3a41219544ae7bfff49a43f499
+2a604fdaa4bd1a3130e1cab0b50bcb2284e08044e088f5699f1599c4e8152550
+4fe7dabae987a2c84a76644d12783e6cd179186336670881ff77a41c9e47ab92
+17aa3ebe785be24801fe7f2be24a3ab2f71c955d5fca8cc72f00366d2de86392
+b568e0dcec4554a15b66a72e3bac4b0873c6d05ca20f8aaa6fc07f67829d6373
+8e9995d4996777dada2ec3e1a0ffe5c8052d13487efe73c7bcd939caf1f7c2c5
+05a0b27f06ae6654f1972c30d172d6c7bc50f779fd4b0a2d1257066cdcde07a5
+efc06f18c529838277e4f0c84ea37cb87caf2e1397ad3ab289a1047b17b24b54
+897cee5cff880155f9c881509171eadf2cd72c7a75fd6cb41b9b231e6cb16f44
+3d2528731a39206bb4843e651a0b99f5b8ee598061294f2fc244a5a353c15886
+c6a7ebbd297358eec4c683a38d315aa165fb8f9b051a13358772c1af057e6b1a
+d935d0a4f2022354051288c25b18914848851c7a11b71f059b47e57c1bf0cdce
+c17ce48a9387f2fbb8a21f9879fc53008a71e7c142b042395b9be88bffd3a686
+2e5a40e146994a2aba7002d98730fcbc14ec188e23ff7c5862f17f245ad01344
+30050b756b54a75809f753e6865f4e8bd6860f0f57c2fb2a3f341bd90a9ae993
+6ae96f3f9270cc0c9bbe2872801e011bbbf7e711067cff2d998b41eef28cbb8d
+905ca2316cb637ebabc855b61de1dd8a77626d7b527b30f2bdaea46bbc4ed986
+6913a7e1ec5f4d98b44ae9343ee2d475d39b34e0a5538e86be1e331bd078bbf3
+98ec6096b649c64194f274263b1cdcd73744cc048f66a7c28fd436c968ec4dbd
+3bd1da11c2b557a228257f7206fce1e0c8209bfaca07f7b09db1363614d3d080
+7ce29ace9cfa6ca55d82d88666521087dfcec4f7567b99ff0bea5e8bea4b5ad0
+41b1a9149ccb259c20accabc9e6872128b45922b1d932601e1e51ca7f2ff2854
+f2a7c2ee445221221245d2812beb4237a89f3e606070613944b03ca9e0772352
+93c12f75c04f88767008507680e5e66d52b0201a59d35b882791cff9efa5d02f
+16438d9bc13027052ac8f6d5432fe7d4b82ab5a0cfb19e3d2cb928170d3a179b
+77e990e13f3b2816aed7800d53bfc40f6b968b42282aae78a449ddf52c07a214
+85ab29f580d7a566411706a49b524810fb44ed5fb5c4be1e185a434a8aad2df8
+d84ea374b329a6386741bbcc2db96dc6e6a493e4e1fad49cf78b6e89450c82a1
+52103263edfe248063b1ee7978993e2b1c27fb770e993d121d109659cc80ba5b
+68b7090766ec58f74e8cfedbc50db662fc5dfc72185f0d599f5dbe77014ed4c0
+1b14463090e2d97599fc2a849403cea6c893907cb1c5f2d2ee61de620afc3524
+83f466d21cdb2e98df4f2ff3a1dac0e923f6d6a9282c63031bec2c456487da9a
+35fd3e7435ffed0df24fff7b6385be72fba971992f9cf78e0d7c0b3409835a3e
+3b4d08abb9c90270e89f85290e6a270f7722a35bf139d1ba7f2a804f89692d12
+3574e4cfb1cc59f19c86e09862cf2e974c4ed057367a85acc079b951cd143236
+9ed522350298b34fe033d1d82ec6a3b04c9c1faa9675c626245452f1edfd570c
+52894e552cc0df3f3e17964dbf78dbff6db1790c8f94ef5a1a16c29f1c02eb27
+ad2c7b1791d54cbf7c1ac8d2110b6526628c771ba82050ac29b3baacba562f76
+9977cdc8b977c22d2fb348613d7e817b6c287dcf3e2aba9257f77fcade8b8aaa
+e74d7b2247b3fcd3a24b6e24f62e71d386849dbd82757ffd463d25fcdc242a9f
+e0a7c186bc2a6980ff5c134ed82eb3a1d2ec135ff6ef4b311f7afa9674f9316a
+f31b5383f489f6034d35f9c1d72755d71a90883ec2de70f4e2485d019bdd4b78
+03b364bc4cfc7fb792c9dad24b8468e3a485968677176ac6e93cae40eea9e5f4
+70f908edddaa73b57765d805d3da5bc4e82928ec919eff5865c26605a03c7777
+e66c6ff8b20b1f11814367f3f114bbb81dcc63a73bce9ec0e7b98026b89d62b0
+275b9e8b6cf041ce1d8d6932a4d5aae1ccb779bed31616deb0544bac022b7941
+cf8413b03788e2a83ca1b03cf279243868c36b4f171bb8d88c2199b2b89f2b5b
+2f5a5ba3a534ba35bea37be08a6769bebcfaf3c4e1542b56dab85afb9be395d7
+26dfa755267d42f01b61ff2468e2af65a72e41fe310e20f4ed5b2ba8e943cf56
+64c675ea3200babcd732cb2bfe61887da901e37e011641af33b6b658a01193b1
+b5467821be86e5dec93279b00356c6c2cfcdbf054c9a06fd6959f6e184020289
+8462f2570aa1d0e86bce08703d91cc43b3b56759b83db9e43b0afff3ff2bc330
+ae76281d26a653592238c32ba888b8fc65898b27c9bda6b4b8e0af4bc95356ba
+ade0a21ee853c8f313ba02fd8c812dc7c1b7fc3b9de9f5be26a798bf0c12504a
+095d98b481e567dabbb17d1d6da09b300dbdc4f22586e52c19ffd9feb6380fac
+175f9965b2ad978dc939b31f9e44eb246ad10301d5e9ee1f841c4767f4e356d1
+2bdf35015e090c0d62c808098dce6536cec0922ca7dfffc0e7258fb20cb4e920
+9dc23930df0afe40a26140db99af3fb81ef85f4a62cff3f757b9e350e2deac5d
+50ec9af9b99532397a611dec539c083b3046caa6f2eed70c89d0de5980d6d22e
+433265872e948c2e6c6c8d4c33491acb293ec6e3991fb45e2d8545806b95dee1
+4e5795da713c48471d5809ee8faeea72550a4be2d32d8ca7887f60535edb28f1
+264e9ad21f311772307fd9692b219d3768a147d0c69183987121ef4f0781909a
+02422513399d269fe301d99a2944aeb6deae6dcd375f2f2682632ea31ed6ef00
+e59aef3c32f4dd3be2cececa2e880fc21850ecbf3455c146d3dc10a7592497f0
+e734d6532387cbe6928bb5cc9f279e58f3271c54d734e0a31b882b24f02195db
+307584e24ef53602ca29165e421d6f735044f086d94e03ff96f453496ecad35e
+d6d89c941e7e04220800feb411860b07d1a874c99819f80ae060f5d81c5f36d4
+1e07ba3930060e57497d19a02e834db4a76d3fcb2f80ef046029af9ab0c737d5
+946abaa89cc306f5cb41be80ba87d60c85436e5b7d9c48906d7ebe20991edf94
+da9d13871f115ae65ef1ff8ad713b1246f3a0c914c9e40c17f43e80b19e53c8f
+2908456d151a8401a155bb69b8723480c838f821e301e3b6cf8fda82a6c4bbb2
+7a3a07fd1cfdf3599894f48ded4adda2edd633eb409049973aaafb58523c22c2
+c04dfcf0e841bad5b48ea9ed6f865a282d08a1365b054cdf4042bb19a6322078
+9603892f5453148319a988ce60c4ec84f95156df10e7a0f45eef48b83d4e320c
+31332ec26e3d01d94777bda84725291a4871cfe6908e629e76bc45f6365cb886
+c2852b36b0dcd721deceb0b093ec1c0b2e168890a1d07ab188ce5b32f4d716d6
+9295ff674f058e01cfe054235fac09f8ee454f93eeec7973e348e3eaa446687c
+6f4870806f8455809fd57354ef41bd5a2df27c3464050321f1dbe4a9500b127f
+44c99aead4be68103e513379d0cb13220b8f9051bc6adb93952b822431605c14
+33f0ed3560c5c6e753b7041ff6f3ab5ed18f0faa23803f652e1979e68403755f
+5aad06f90e9f1c08885e0bee9d7cafc01d102ca0764db8c518f40b03ac6969e1
+ff549f0eb45affcaa257f3d314c5d436b91e2c6faeaf3cbc14ffea6e740effaa
+3972314445e35cf8f75984c0c7e5bf15042c2a5aec838a16d005fd1d1846b2bc
+36419bf70935c8e3d51b11c10ef8d5b523f7385853895bad9629b3ec7669a8f8
+18650da128319476e542c377ca6215c07fa4315e5f4069999493ef5105a5f8a5
+0a217c402fd6d09a8898d066688fec6e8b1233d12cf6fefb1f428a66240e7542
+9321a8b82b2036765c4df2b10518cdb8fccff5f7f5edb782fcb01fa1a627b72a
+d920b3f1ea6af5923b0ebd5d6a2b46dd6754fb68bb86f47db572e95c1629e6e4
+81b204244fa243bdcaba1135bcc7f7a84e870379c4603b53d8dd5095f75b3499
+a9f71dadcc9f04283b95eb798c0246cab0e5a77859a0fbe342c0572bfe119c3d
+7bee1d54e274ddb1b916958de6f76d881730968ca93654a023cdb8f82df02930
+c4ddcb6511b852a366bb4fe47da0c0a9f93d541634003c3c9301742987ba6cbb
+b9fcff6f39f0a0f523879d3954f27a563f5306060e35690ebb1ca19dabbcde98
+b288b019969125b8790758c9f9d33054a92de1effb21ac1254e2d83efbe62043
+7316352ea406b79629f856893e2b7f60183e68b296b70709e36084466fb10e5a
+dcb9ca433c6fca2a7b698be85a191bb6d1cb9d0a4d1b4aed89e1a6dd4d730b9c
+9abd998f6b9bc92758c426cd8f404295ce0e46302afdf0fb73a4fe23af30b8f8
+904aa7a4c46913a5e3c7227fa52f427b82e82fe2e1363869f12cc5376ff403f2
+887a8fd26cd754f21956156c0e8c8d92d8bd16496b0b41cf0421b8673c36bc0a
+a75b38d6bc0ea0f7a41a095dda037266037cab28c76a9450d3dc67eef2d01695
+84bce20fdef1a8f4cdac6526b0842f44067dfc6da9c8a1093332d263b227dabd
+54987659639376847b67df389a051354b3905a86e2a93807ef165a0644357665
+e0645087d83c3c96c106cb60c258faeaacf833ee0aa25468697365dd85144c4b
+2a82ffbff00479560b76a01cd6f554d8218a8c79be762221d722862ea8e94465
+4ed98009d6b934ded407cd89bd82a0930e96a6e12e4b676f1d4d9cb8729dca78
+3ff87adec179c7b1566f2812abe2cb9bbee509cd621b911b664bf56e767371f1
+a92b7e6bf8c40a08964cf1ff24994cd870ff5f9561431175bcfa9f17d0105339
+4bc0916cd9efe82b6220926bec7d4540de39680921c5cab3c297f5450a7a8264
+2bd98966563602318badbde67bf5974ad27f1f6b3d61d1c5806dc191cf43ae64
+1a49a18f1a4a8770336417d6f8b42d612ddb0889b6ef5d9b2a857d4da1d43323
+65c7b77954563f898e505b35a62a11757d0066caaaaa538073fc6f1bcbe37460
+0ac0a21b181256a1329ffa28b8df97940caae3b51f7fb9f077001f66d423c6a7
+4f76dff746041cab653304facced101307a30b9e264558d09f5e2778a215c65c
+292051ccda096024dc6250315165c570cdc94a940f70baeef93552be71b2abf1
+66f491243d98afbe07a897a50a8279006ff7ceaf2e1097a1993f1f30e6c05124
+c4f48f0bbece48bd67ed114598a28fc0bc0e0613f3ad2c2341c60236e14c7d25
+b4e01af7e576a3da121bacc0f185f16c6d621c0da68ac98ec14fd3962b3ace83
+15ddea19ac7bc045d03f8aafdd9655be698d0926fd5166d85958617042b3bf3a
+609cbf47ee8d7d358fdfdc74ff2eafa4ebaa871bce4ca585cec705dbe97332c2
+b2829fb2838d8e733056e5d88b69b7344f0e4105be41f776bfebe8d4aa076cfc
+1ee18594c3879bd9b8179c6735653642329a70a7418e480372f18b6f905217f0
+020b566c02fbb234f01f0b5b08926460e1a49919592da7c4a16b451514cc7375
+101b4cc3a591eda280f4352e06cfd848c3b00cd40b74ae1a796c77bac9772112
+7378f5432fad2a648d3b19fa33d5f3e06a6ece2b5254ed549da9206139cc9aa2
+2dd9ab47fac689a9a40be490de3a71a18901e7d6c1b03979f42270c0c9862688
+59d8fe9b9fb936c913b4c4eaa260efd4ee0189a3cc3c3a6e190fd7ea9fec3149
+92750abcdd2f8e77127ff6bb7cdf03f4adcdc764a0c97272fc7fff2b987fb110
+42ade25d1ee1aaa29db0d3e1a50fa6ab4d46665c4d7358a6ed9810987144f6c7
+edb0484688f80f12c19eca842248cfde8711483d69c4c261ef85dc9ba2623c92
+c05900896cc06a96d152d0157857a94f41da865d17cc64e87594da263b90478d
+c0d9a2f6b1f216467e17c6a546af08e9b555c98555f83dc1844a3972fce41215
+ea134728602f17b8ed789eedfa00eebdea3d9c897e4df465f21f4147aa43b83f
+7adfb1dd5dd94e542822cfdf229cd3317edca4823549e46f7895b7f05bbeb6dd
+d54ccb88844a359e65a76b70367d81fd53a3b4e4aedbe0deab3702fe042775b7
+21e116d78e39d6a2ca55697ff13fc75b1f4fb967ad4b41a2b1c78bc70ed50b40
+432374abf7b9858e8cc813cc2d723899929d82ced78d768d87280523fcbeebb9
+4a1f35bf569d1a4fd725b395c4077e23bb98669a0a41a30559752674f0f6564f
+33b7708b207f4e05219d0238c788c07e0d56f5c52e59fe815d019a912a73e54b
+54107d3d11166644edc563b23ed221bedc18d0a81a165d7dbdd5ac55726ba1f6
+5f8ea93e4efbec4579f91214d7fb3f39ffb175270e38d6f54fb337344cd115e8
+d98c2b172070534257a12ad343e22e6ef418bfa26687a528e4dcf71569727caa
+546dfeab00084dba7db03d879d902e8ff7a5c7cf06eae27983f5ede9b9228c61
+a5b242952a974fdfdde1fc636061491790a2f9df8370b01ee0ee8b4e068958b9
+c64bf975cad108475d2cd184847e51db8d12d70985064219dff29b7d9d9a8ba2
+b35af5ba3d2ce6b3261502ed42df0febfefca374201819d0d83197487b8d4ee6
+0860deaddce12da4329d5da8f9e3c2ce5a97f10625f446110cb95635413a214c
+17283acff940a2d9800ee3b3f6fee8c1311417ebf3b057ab7bbed3b4b5d2f108
+3330f6b5ac4d9c3ed06a59594709390da6b295f9ab012d2f281dbccfa08b629c
+748a3270abca9a1f5108eb74c7b279f1380d54e01a7c447e429e545ec6b3d5fb
+0df0cdac130a20f69c05c168c470273e7703f5f55eb0101c15318d4ac9cc1d5f
+1ec2cd5130be151909442c7571ddca478659602c5fbcda256b9474bda4af2fe7
+0b9056109cc2140d14de9300fb2abb8a92cabe1c50472c949c146f14b3c17089
+af64fa4ba240fa9423026d684c7c8693704de346d36cf613e51382f26e2d48bd
+ae187125e0142a4568e3f31cd293375f362ac469a760f6dd2a0c4b12785d1284
+3f798b5768d6c06b3439a70c783843d792cc3251f0d3dfab31fa84011bd31996
+22f07a5e9624e3601105fc22bf1a33fe28a5f829fdf3786f90c9c15f9f1d846f
+9100c5502acb9a292e7a071ad684b16439ed4e17e96d7f614ca81295758690e0
+54dc372cefe8d7448f3639ed59dccb603517210d3c5a26a8775c7fe74a64e4eb
+7261988c5902081473d56621b21170f81a899dc353f2dd265571c46bdea219c2
+da54873f82942e54fbf44280031b1a282bbe98a2a0bcd62fbd177ec7266ac785
+52f408b9d4e9005970c8b067aefefe3a9a667c53532a20c719334fb57be254cc
+d28b0e952f422bbbd992d048f2082f77bc7f5fc8adfaf73c7b429e2039991083
+599fe3702879ad3ca457ea40e2fcad2a1ceb0b4260a035642388226d75ccc6a4
+9c3dadb1f49e6a8132b7bdbd0159d0f431a4b0b979b8e8fcb4498c40fe12095b
+910cd6196359f6cd3482be7deec311342df7002afdad650f242d8df9f61ab54d
+4134c321805901bf7a4794e93f563c8f098dcf2a19661300bc174d28f17e1db2
+d75bf823bca40741b14e2563ccd126b235b1d3ba0c2d2b5f33830492e53d43b3
+2b03435d90bc7d973a44027e1cdf94e7fd3b8d98aa850432b40d9bf32b170960
+4679fd34148f26b28058a37513d6274bd6404d84b7202de70e7768b98924a4be
+ec71a19cc9194c073978ffaf786945a1edca7dc77bb91813abd010e51d46810d
+57175bc74d62dc0c31ce20c7d97abab49c5cb0b25437e055ef189b3158be8d21
+c767a9a067cb14ded4ff218401d598f01419b08eed9243a42f95eeed62fe074c
+57481eb857f5927307297bf290b85b709a4981134eca9e15cd5f20601de9dfd8
+d7eb607d6dd40a22ad74cf171c78bca8d48a85739d004427acf22f3e20fd969f
+dbd51ab54ca45e1a62ac23197d11975dc2baaff1a9f13c79dfce080383579383
+23940026640f9cd1d04991c4d855b0cd05c1d97e3d757756ed23f3c712a40e19
+c47649f24ada53bb7aa481ae594cdcd8426066d94591297580765ebeaba7c2a5
+424981eaa32cd122129f8fca2dfa36b37eaf4c520dd250a003b357a698733146
+888cbae086204f063aac17940a7cc9811d78900b5d63c1c615516142a422bd5f
+1a540dc46ff025ff7e5125003e6d2c740779ffd4442131119c930b85f744abbf
+43fed0fed77df4e3165954c0d0084fc6bdc61fed174c8b7c99d38544aca9cc62
+e69ce602b0ae84206f85cc27fd8d23620af5c6fa5d0662aef71c0300816da8d4
+9ecf18bf0bd72d2373376a6d9b15c7346e38b28e4aed5a64d67b4e82704f4390
+08408e9670d6b9948677ca2921a49367bdb7c4333f72fa169bfd9b6c985d15b4
+9143460d54eb2c3527b80a91a7a02e453780587b66c38b1c850a04b867fafa4d
+6a1cae534931ecdf7f64e9b436e431880ccd9794396ec16d58c4fd6dd6c35851
+b1d7764edb62239c7a6e22fcf78448d0b31f90898e4c36ae05fe2ac9640196e8
+913f2943dd00e10ba9946635d6c664f8a433db2543f875eb2b539e1c2d67838b
+1c0366d072f9dc46f3be065ed33448c24b51571a874c9eac31fa0197a84acdd1
+b16ff7723a37035256eb609187e46f3e06036b78407d119f3f9d56a0c48409ce
+1338b15b3769b4700cbb4a06a1159c434df9117230ad22c34a7a8415768ce101
+7a139773e3782986ef007b1a71345230b46097300464166a306cfd3151600f58
+9850254749195429974783c20395fb4e2bd10556d571bbf1db541c8bd9bd85c1
+ac01cabdd91419717b2381acec437a45668a0941e827b01763c9cf359c9cc4fb
+8c00569ef2327119fa81c8fd7c5221e55e31a86059a0a0fb4f4d9614f9b09efd
+e995bbb9344230c759cbb162a67e21c80d79dc8942ae488488c03ab56742d145
+1df194564c4dabaf709c6271831186b61f30232c91cceb493b859cddb2745b0c
+72e0cf4d5d4dceab00398c56ea0e145164eff7cb689c5dba58f115cfb8732d05
+74bf99df845e03d9ef3c884fa506b9e81ea01848b96d2ebd94921b2f77eafe7a
+1774069ced045031dc7d76dcbe979450360152a59e567b2cbfb5f1e4b33f6c82
+6381da4e4e3702e89f67ceba18d9f9ac12c19fa5f767b09de90cb34ff1c1e165
+2bef217b8c0782c63b656bc22c4eaa74f667deb591bfe010a6e85aaf8d9979c3
+7b1e331a0da9d1021ead7903b560faed7c4b0c44aedabf6299f9b3b319b3f1d9
+43b37f211df2653a553e3cb59a75cfe374e57efad45b8e1afe5bcb3a89397e93
+bc39d90fbce1ad2f8a65026e6b6611ad0529a1fbf97d4c4d89fd16510a0714f1
+e03097dfb13f0fa69d8ff5f9a253e1c4f929c1101d1e14863120dd32898b18f0
+2c11b486ff017e58256f587d758e2b888407006d2060e9b977ed6a843fccc169
+b8d5c29ac13044c4422be7cf3e4099f1f2f481f37c4ffe2e386e3a045b819547
+833b669b4e29086295d0e1eb99c1f5c15470b67b3d47d3b3ea3877dcfcde5760
+92ebf3d11241c3933e460597ac52d4fea2edb8c56bec520c02f408073619774c
+d04fc16ab266691a25b2c05ebeef0ac7efbd7ef1cbc12010f8048b8dcd6b89cd
+a0eaa9c91dd1d1a685b31864d0204dd5c167e491c4d43fa2daee730de981a37a
+afbf34003167bfad520be9c28e419d5623120b899ef839e025210a55345340b4
+924c7b8f2f73284ea2867497c93921dd3a3972a38b5cf7657d395b377a46cef0
+d73f32df89e099f20481f53c5f2855a68181127786ba2d3338b001952c0c3faf
+a0cababe3d41664f256efd3dc5d338e62bc882af7b569ff9a84491446c1a5138
+ece05b7babd4f68dfb13fbedf5bf35834c8c583d024b66da607d2e440eaaef9f
+c1049f12229d21660014326d1e4aee729c25d9f4a4fe85676a2084cc70623b9f
+d98ed99d606633bea4fadf8393843b33ba574fd0e299996447c4b4ec5abe5e30
+1f256fdbf9e2fca54a6dddb772453eef91753879a5860ecf867213f885b53503
+cfed82618f9d48d268e1d11330c03d0ef83a080291e8ba2ffda783996afc6020
+012afeb6ad3403f2da454604039eaf3a863e8de02d2b6c7746ee37714d715544
+7e0f4e36f694682e5fb69d2a624c1a9e8fc64af1404452f95fdd8f745cc6277f
+faf8968f6c9473d5958a79e066f053cae56a7e2dd692ccb75da3c05aa8226add
+9f59d831bdb4f3d7e6ebf7c980ba27ba50d9cede37542b87ac6f43f366e56891
+4905e137a4e17e4f554754f52fc2c0c578e40cb11d0ec6f618602176915a411e
+a56339668985c5a3f49a1024d8ea71cd8e8c3b5d44ec50d035cb062c890b3623
+d206a76e4f6cb5ba689e16e2e11aebd31b6e3b1b4a9b6b9456519a262df85774
+1995966d648ce8b7baa1fbb1d44da585d279407f9c593d32c3c2862576251b76
+8180935e505253218b5e47f53072787756ae1861004b1e6620f1ed1961de34d4
+33fcb65e6e6059011650b48160040ca30a420a3e0a00334d022a94d9172c747f
+1d07c090b529641b08192dacfcc0c2a17f694041b7b54010b7d22e118d3c4c78
+3aa590e2899218ab7f51cafcc03df5165ccf8eb8b9393cff43c726ba3b204172
+6082d9afbdac1e7bac07b63744866e7d7d02e6afeb61a3647fc803f041dbd041
+d570454fc86d9e19442e8db6ba86e82fc7a411cf087a9252afbb184987b9e8b8
+5af896ad42cce53ae68f4276af79744d40928221d44960a73fd15c5c8f97ecbc
+b05c75dc6ce2622a2e8ad8ccc8241ea6170bab085e39ba0cf0a01696ab3b5893
+80cd6d4e7a1acf442aa5c5f923eb78693f58df29f1f5d27ac08f13c7b58fe788
+046d5eec4f6c425bc8693958992772fb92837ca287c50a47b53eafd249b1019d
+d0314a6eeab1a74a6a62430d4ab66e5fa74d3df21c7d89a0225079f0b4f0d8a3
+4444241ab2324381a422a163b31eedb0a7196324683223c7e4fc3d6e0f889d07
+f3b5e92bc9f3dd1739f1d1dad98e7a569267df38dde1c179d0b6159468b92274
+cac5529a115d9f32535ceec86d786f4f0ff1bb226ea300df2f038306d6874bbc
+b84b3a40f34bf7cde9af50ed2a7ec59cbc332256253540dd26a5e140d715f7fb
+d72103bc55b30b703ba23617715da9627a30c69024bef38f09fb9e6d25f9b5eb
+2b864d4314a99700f5920f3bda6569314729e5cd18317070b194050686fb81fa
+f6b2b44a03cfb98b911c2102b930d4752d65297ccae9476a19ef9a82132b9d92
+d7ee7748d67f89e54a9caccb23e1983681018ee79c8b9d20de894a05b002018c
+86a4b399f0d96c1344c4af49b7206fbc4623599d5a301962a4ff766ea9f0811f
+331e207fb1dce69f7e9f87bd7a168d881027cde559a046e0e4cd89e13a4e2f10
+0b2afeaa302505b9e194a27150980adb3d31fa4bb5a2334ec6f52f7c4e6003cb
+6b40fa3e17ffb6a46340013f3304aac41f028c273fcf1c81db04c39bb8c82159
+d1b7cba15e9cd29535dd8f4098a7d98bd98b541535cd82911116d8cfe5de158e
+96f0115a1d284a118b5c6989a6398b489c890d307d42333bd0f68e218332860b
+20997a24c06e73ea1f36cb5e586ec38a3cbd3fa0af466fc9e4d9e9e7112679f4
+9c981a92dba690309b5a7b247eeab6aeebe967b89ef89a0c6ae7a8a5e43fcf97
+ec359fa14abeb02db6781e54e5c9cda47d5c2400f33a94d158cf6da2f0f48545
+755b9a8c3249409e32721704de36e5ead96ae69ce3bdb9b6f5ebc158f1fe73ca
+37482e983ecdbbc7610c9ecdf9e3202f0684d0123bc1df6f62ebaa57d5dd4414
+d5162d646e09720f4d5e6fee1ed12e8c0465a02ac1266468cb57c301a70e5e30
+7cbb45165c82fa69ef8981d5fd9348966843ca058f9da0bc126cc2f6c5499fcb
+a0b822619d96f46cc9ee97dc7a32dba5f9dd16d64cd7ea5ab846af8be7fd1fd2
+b808918d660d4c5abd226ffc4eb3f0c9a79dd893f1f8cf07bfd5f5b8b49a6f10
+654d9b4835cea3292f6186eca9ace86d935ee2e6f9f14fdda5177a68c1d0c017
+ec9770f25e7908b85a50550a9832ebd31ead1ab7f7e496794ac159d9084232a9
+c554bab867dc432d153e0206b5401dc512e94067fc19cbb5dc6635f3326b3076
+67ba8e962d82eb0e5b42d5487fd59319ec77c90861abf79d572973459a560458
+bd0e7f7c4c5638cbadbf5cc52370769c470ee56d32146da0861876b545d80e7e
+476c894e4718580b3a635b2f9e70fea8679ed1101dbcf57ed5ca40885e113445
+44c92e0073eb436963bb26254b54333dc264e5ece56c2f9c275e8cb1ef38c815
+7c9fe6cfdfc7d16435cf6e1cd14a344161d81fdd4c74555373ac6f756a9c7d6f
+bd4e55b135ac3fbc89e1ebde21f4f377162246aaf39fcbe25673f9b7906878ba
+e211a81113a09b69e83dbb8290af2761cbc52e9e600bf75f19977d5a71d3269e
+31796a4c31abe3c02837c8b88c896be0a9f676bc0eaca27c4a1f942c2b2c6625
+70bdc9f4135d7a95306ee055f08c2d7d2b4658ff12aa2cb4f144b6ea2946c6d3
+156b03755e5d6132a67356910e3013919357704714729130c4f8e09107c8908b
+858781f1b0a6f81373054cfda28ba3d2191a43901e46113f9c58f552d45e60b9
+a460d82e25f487e62a4aea9f59925356637ec9c2babc5fbcad0a19f18c52adbe
+e252a1d46f59f457924bd8e182caab94618e8aed442786e3c458510e596e3539
+b77ca9ca3fda6e95019002a28462865fe975187dad39b8b3853eb7c48fc87642
+e9d61e7c71abfa74d01e1f41f1e371a2ec70ecc61a7f8d2233feeabc8213884a
+f9a7d59c65012c50fea00b176b769d8c1d16ee49d171940769fcf94e2315a2a4
+c6aa4a2f51fbd98e27079bb92198283f19163cb6dd2f69ba3164c52d04db220a
+a32005901c50fd1b92a2e5a2b1fd2f016e17d29dbe4f23265819bd8849645dac
+4cfb9adfe9acccb7ca0af132ec6b3feafa321196f258dfa6e4070c479d97487d
+f751c6a4084697ef90c670c4ec504b747296cb00056d7c6275622e0c0e1297de
+d859fc6c88c3322710dbddc0f0e6b226814542bebaa09d20b8cc5cad48863124
+ee28a09c2e7842667a1a264469095cf1866d300343eb0ddb33e29d580f0907e9
+7e5fb82f8778debb27349cfc91407197222a4618a164339f6732229b7f0a899c
+86ca9b67c853f645d37eec4f2f66f1108b6c85c992a3988d3e9203686d455a05
+375a68b1526ea27c2ada074b7895b21ee5ec541c11ebb7c61c10ad282672d566
+90f7d7ae142d2921c322ea17e7d634af2f787e56414cb21b820698e2c9b33893
+3bbb02eb0737ffc56d3b8061f2c3b995b5cda577c4c3a966df166618926f4dcd
+4f2b6f673452dba0353f21d2601e44847d735aa89be52b33d8fd77c12bc9a2cd
+6a13c2b95d5ee63702ad8859705f5ea5ed19d6ecf8891fd30647cb5e1dab4022
+818a721476a277c7ecf6951809526862ee4bec2d75f81d0a2535dc6fd4a5ea25
+97de52bf8feaddea556e8f5be40acac8dc59ed376c33d62a8ac9ccaee7649f89
+842b43cd423adb5b36b348a64bd9610d4742cb37f813435a85a3e5ee7493a9f5
+d6039a2eceb0fc7f2b756bfbb56fa2fd20ee03217e1cee02e0f60da583546e14
+efe9a1b290f9795cc82e7f4f214f3fe91079ec8e302ca07170d0592bcada4b73
+b422022ae56b146da7e47e3a764da520bae35e3371611d24c40d2ca2acd1d571
+cb4b2a42cc1050074faac1eb79c6c2f43a7d65478fae8f4ea4ef4027a88301de
+16bbf6b1a123bb6738a75eea1870720add80df3505356a8d1f6de1ec04aaf476
+e831528bc51c932478da4d6b98c997ed7e2b176225b3d6bf4fa498d1cc2d4eb1
+d67f51213b2f53907361c7899bb319f2bb20d23115da2a44dfc880c5553791c4
+5b33015f8c406712984cddef13d70435b25995dc7261d53e3b6e5df0ff8d32ca
+da99bff65d32f48bc2bdc9758fc93c905fabd670b5c865a045c5b154ffe6a3bd
+2becd90007f60582e170c9ef4455d11fb483e3cf653fa28c86e688b295d657ff
+fa6bb55b2726b9b13d1932d4cd2ea0a825d11c7d8ed581c734c9c2ee2406379f
+1a39750c008344d927b82664e7376c3202bdb12d8e4707ca6f79f858e3902fc8
+94809cdac0fbebf678ca75b0a01da396cf5c75165990a7a8ac6619f8a9bf9b4a
+379ca0fd001f7096ec6dc8dbe8f63960c28a081c6f11908bb663329f7c795913
+36c28ede363dd272f94902b25fd5a3c2d1323b23b901bc69dfaaaabebccc4f60
+0157585ffabed24f4a58f518a299c5c085829a8a28fecd0c25c65bafd3bbfd7e
+e6d7512f2d2beb515225c7d3cc4f6d1c32826eeb5f7f25d7dca5b7ea3e5dcc1f
+107bac05d453e40a1977c6c5830fbe353ad694badcc24b811c98808982894f32
+efc81cb1850fc3cf90f6378c07b322006937380e3d08ac6bd1a32bc910ce27d1
+2458bd06dae1a77f4e6f765cd1de4b7b14c8c79bbd326fa4f38cc6aef8c191bc
+ba652405dca8dd113839375936c175dc71128263f5014b180427cc6bbf3026d7
+66342053859b9f08159327c12aed2f89186c6d2dea0dedcb2f91b442d6bda35f
+7dc1fdb34af82872974b96d0279cbdff132aa938238df6fa90f7cd1e03dc8906
+c2b431389d7f7b95a9d9c9f37686827c8f89beed5109e48c017d3959e09ef676
+62cc56309ee302bc1dad094e28b2f0e5dd70c706e59e103df31acf9c102d61d3
+3526460f6e80065f55ddecf3582c83a774b756ba249ef2af101daca887cbe431
+55c626e04ab39b27f538cb63d31c1de75f0c371de4240f3c78c9dc5b1f78742a
+7fd57b3d1bcf1a85ab4813ab7a12e473c8cc5d7c8333530a9b3ebfaa55a1b964
+1a1f94252d84ba58a8954933a3f6102c295eb6fce988c64ae394d113ea698a00
+840651765a0a6e9bc794594a933434872c73b5b0180a413c1a093e91265c62d2
+9ae2672734faec57f749734614366cadda4cad9ca204063982710ea4da7338a7
+867570a58caf262511ddfbe3fd3ade4bdd0f17c85a04d2f8f526ec6e586907b3
+c025ac0ebe247146a1f58c37fb461d0fa5d0d2e04ad5a750eb9f49cf4cdb856d
+28ba79acdbe1454fb4359a7d65f41064a6a8fa8581b78df3760bf570e2559e24
+415294fa56c95376470653a441ce77f3358b32ab7c60b1c671edc952a72c50a3
+eeca2aca09cc579bbcaf69d4abb09142b6281133dcfebc4396867111c0c62c7b
+2ba6015e72029afc3fbdb73f705aa37bb49fa2b864d51035e28a5798ce915b28
+1f0ce9af222fd4e4b7d69739fce905aa9fca6141ab77300d5035bb96b3256198
+ca60d331065acf97f2137e5eb33204792425ca93d15d62d2d2ab07eb83c18e5e
+a9677c151b4a68e68c3d6d67ae786afe0afdd57af4afb8db3a6b1f3fcded8abf
+8e3a520b1d6b99fbcecac204c9764ccf96cd77f6258410eb27c4b68c40b8c693
+bd7ea0af85418645fee6f21a89ab0dc3afa6e3aefc6d807d9f9fabf32a44d85b
+749217fba541731fa2ee4ce185f7f9a2816ba1203eba7821e2435202699d0c92
+0c8b95300fa7820403664e70d4c33dcc799320a1d019c71c2978d85218c06b3e
+c452f97602b90137a909bd4ee5eb099dc4fc44c7ddd80eba3c1eba9912540c8f
+7529b22e44d5f315a92f67be0918e5f6b9ef4dce19709a9d56c01de8b016ce35
+aa41bb82e00a9945b427625dea9215679a6af021331517f251662fb717fd53d4
+105450a125e0d6b5b3faf400f5bdd0eb55e4c2b23a97d0accb9b184099d1e7ff
+c421925b8d38c2a548e5443258208d51249de04ced0d12ed08df6b7a11fa0159
+0224ff5365e32ac254749a284baebaa4d0808e89dfd868d032ee28f97b1d7623
+039e765fd4717354f2d162ab19d1eb7f35558ef75b31a2115516266fb5dd805d
+70eebd19439707cdb56b082bef326c49f1a0e05d53e05e68f88790debc06f289
+8c279742d1ad166a8f61ab3e8b82afcf413c820a2561b43a05b0221861eeb19a
+979abe2c9003e8116357484d296c0bc9c812c638e1210f9cb3b843a435132334
+93d231f992a44785adbaf9e64554f38bfbdf43bd74e90fd721e6663bfbe26bff
+bd39d5a9c17499f0cab12bff04b5c8e4c55fc06c991206cdff7e5fa4b9701b84
+840d9fe43f07a34012891ddf66e06c9f178c74a6cd1cedce21f97bd25296d664
+da757276a231ae09266f69a54dcadce228242922a6b27e0716d5eea87ee32a08
+acc5ac06cba77221a888f7811ef22af0a4d8a803ce18f42ad43a4a338e954245
+8a40fa753760ff4539c98a64f1b3c6c4c4cff88c149ace51faca892af4bf8fbc
+feb972a72bda3b279a562b6a9ee248dbf878d69868a45924408a665ee964d4ec
+f7746b33685a2c1ecc53d48c86dc3b2dea8bbb472c59aed6b39640cc726dd1cc
+93d53b9d6061ea6bc96c9c9d430fc8bcc2da70a8a5513791432970efb5a8c793
+f0e3a95de7b41263c3ab76f3396e502e88321450756c5b8632bf567ee52a903b
+0f5ef82ca97034e117cbe1980ae94fa606c8a5650816133b81df7d2a0e656da9
+8b8d23fd555ec14e2ec2af0726a208a981c449b91b488209e244b386e43b4235
+05ce9724747bf2f5a3fd7596b2ea24b1af143100147cf96a76c11ac6db0a0725
+52468f558b675da4b35746496e435ac88a106b9b04832a215fd0f8874f46559e
+e9834eee8cf349c7a2720e27e52c56dfaa696eb697b5c0d105dcf2cca41d6220
+0ceaa609e9412a57e84c43ad67d30cc5ae207552b3a5173a90e50d9c7b16886b
+f6c07b49451530665c8684a9684d17fc0d6434db503ccc35e06d9c24e75e49a8
+1520fe8f7cbf94f94398d228d11df2ff2671bd90698c2ebced6e1d3e47ebda3d
+9d5c2be0d8cea7a2d5ebc7dae41a5d019090696d96319d1e8b2a3e9e07493c83
+18c6e7e99d567cd6639af406f605d70be13e14d4d2a413a4af82d15d6ca40400
+c207e14754e22d2e5809cb24e6400a967d69033023a71e82276eaf6c436f17f9
+99516161fe857ff44762f169417563621512579be0fc4eefc6e70e91731ae190
+d1ed6b4f4b0336ff30b79366998811ce4804adbdf476c3d3d01378e2d86e6e28
+906493a729adf18cf4e19bd715731a6c2319eb2b5dbe7bafd9b4f660836c10f2
+3cac1ff9e58c5f92178da36311bc5a971c8832fb6f5b1e2ce82107a34207f6cd
+3f0925788f48b86298ce86375a97922ac564d85769b7aaf935226fc58a586264
+f485cdd66fe8d02f78c6ccd0b05422221cd3fa09464534b4f57267957b376b5b
+5de298e6bfe13ce3796a134c37dd5449f40658b1b062d4bf68e0154dc8672f8d
+5cef292cdaf2fd0e93d84e7047e49142ad3edbc1a198a635e642eafcd719e343
+dff238a9376b95939504dac1740adfc847c5799385272d067ab7d28f9848f0a9
+326da7e11bfa28a32e59283f25114a4aa57bfffd51ef0c218cc9fb521314e8db
+357ceba223ff1be0493ef8c2caffed782c9bdb488867d3837396332d2368ccce
+8c9aca4ec2e61c6f19f0ffba38d084424a049314e20ae533f566803f44eed35d
+1d44b453d863963c600b33ece265113166c774cfe32e67c8c2840b0f65961668
+19365aaaf26a44b85f93ed04650fe506fa7012881a270f2748787a467e3ef3c9
+e490379d65408da1efde04b657ce08e5a210cacdfdd7c45c3b0b9db9578354e3
+7b75587cb64c12b0efe77172ed39c5bc22b361568906efea8117013a79930214
+83b95ce2b54a42a3ca276ec786eb15ca0b802e04bb5c97a4dea13582534e5ce0
+a35c3da75c174af6eb3e22d26ff95c6ae062e5f1d650b9821c634f8c866b329b
+766fbe44d5daecf771d3d59809b521de6cb16f9fce509d2cb2ab065f9d206a65
+2b593b3fda7b525efd8dc5b67040f736b3fdfcb3f617d5827cae048335ef92ee
+0489eefe87d4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY8
+%!PS-AdobeFont-1.1: CMSY8 1.0
+%%CreationDate: 1991 Aug 15 07:22:10
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+dup 164 /asteriskmath put
+dup 167 /plusminus put
+dup 183 /lessequal put
+dup 184 /greaterequal put
+dup 189 /propersubset put
+dup 190 /propersuperset put
+dup 48 /prime put
+readonly def
+/FontBBox{-30 -955 1185 779}readonly def
+/UniqueXX 5000818 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f059084178f5ab59e11b66566ca5ba42b1911a
+5d7f1bf343015eece988b7a93bce0c7aa61344d48aed9c92c8698d4b7c9951c8
+7d103f2414b39e1437f9d2e50c4ee5f218f2e6716926a79ea978f13b1f855345
+191dd7d31d8f82c2e3343c7a5894d95bdc492c28226834efcb5c12fea36ac5cc
+430e0aa604961e34888adf6c1f3954cbc2498e225d953cf5685852162346f474
+5a2a7087d5d7ad486de16d2ca8e15cee26e012671ba3bdc7d95cc8c98bb774f5
+08625e968aee27ff7d1a06e63bcfb5aa4876c3f8f13b30ccccee73c3caf4e70d
+98e6ed2f422dbb4950bf789680e064150995941a9f4dd68a575949847a7d012b
+b910bf03acaa5e71066673665ebc99c1671730a922347e0df8497c3ca74d55d3
+32625a2d47d41d7ab8ee776eb4fab79116f2e8018fb519002418aa46a669068f
+27c27cae5f5aa453d8de98319e56ce64386181c9c8069aa47ff27668714ebb39
+b4c3b424b32b4a704f3efd9a7812a1472bf6d7844fb99821211bad1be564f7e4
+cb8df6f8bc30406de33d229796cdef744f8eeda755f47e55b10b11fad13586c0
+ce9c8daee0e895ee322a0c6970f9f6a4e737e00f3cc403cb0e5022d51695acec
+6341712f39ee25174d3d9b4174faec9c6fd3c1a1c827823e7977015a340289fb
+5319e41405430cde003f786a133e2bb84e95660c4ef7ab2bb2f7cab852670090
+d1ee899abd24e6fa74bd79de569918378066501431d7823bef29a96bf8e7559b
+83f88d6caa105b0c2df2e0937d24b032884674af0c4a498c5126c473a3eb5165
+f51707f802554ad9e99a1ba206f13c337732eb6057732c448aa56ef330eb8208
+334f0c15c41272e0240a9eab5f6738357bedde47cc5362dd391300586799cbdb
+5b44f29054ef05163e13c38ab53b95b55bf90393d38bbc0b1bf3b14250cc2d32
+44b97a366a04848b3056fa2e47bbe72136566eeece5690def58276896a003b8a
+3eeb7ed77c4a487996a19645fece910aa91f4f2b486e73a6d9afa4dba0944faf
+bdce4cc80e57226c274541ff46292232a263a051c4967bf6e8c3948fe5ed2030
+2d10300fae110bab4c4bb2cc9ec6f221a0b3f2eeabdc7c8693588199fbd1e9f1
+37630aa5321ec0bf2d23a7ae8aef9d76f82f50f6458d4095a5136cbbb24c9ba2
+f808566c90d548ae0ba03a7e83558c8d860529f8885d2867991abb399b87509b
+02979b13f12c481e02f831519e9a08ead8beef562930fdcaaa1eaeb862710d78
+29a9f362de166f701f884e104ee9e40b7274c680b675766b83fa119eb85c2016
+4ad7f2eb6c1a3a63bfa7ff100c8c243de2f304c119b523c524a5b1805a548dc3
+6523c0666084c94eb060b7338002b60a6292d580020928bfd76449937a130b57
+fc0f7f4f90761d0a9d7182a59d545c734908c4943731e795a872463f12dde761
+78d079f0b968500606eb646876275e60fedb1b1d5d3572a584b160204e39bad0
+a9b14ac7ec8198765e7ab1ee81a34b24f5e27f0b8907e10e67a1ab2634bef910
+c863f1d4d4c6e8074da23fcd92bc14d76c9c8a6efa0715d950fda18e6ca9f5f4
+5278658d78e620c3f5ba1509f4aeb6f4063fc6c75732af5ca267510314ff11c5
+500eb91bd0be4d80b035bedd252d12f81482540219ea15400c7b79359e447b4e
+909bd41bf80d052e9065acdb0cec8f520d5d184b9aa09dfca88e0c2dd18c7a5b
+8bc66eba46b2ad782e4e85b2ffd57c2d81b6d6e41ed302d9f8c2066fee124330
+46eafe545c48c43da99db1ad89e43ef018881c61a89163dc0eddacc08deab9f5
+1ad700ac889b76533c4e252fd561b16e6d73607b077656a2fbc19e7557f31107
+92e46a79e6ac946a5a312de6794d3af3c9d9cc37a0e80af0ed881d5199b93247
+ba445ff96955a3442ff2e2572a8e0965a8594e4d92aa33914f1692339451a1f8
+f1807ac766ebdab2afccedd762fb519b77c90385399c387fe21e65511cb73d8b
+e145f33a95f9c74f5507412f15b03c0200b1e3d2b1aee844447e1232033a18ea
+43669e8246b17046136f1a2559abfa7d23ce
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR8
+%!PS-AdobeFont-1.1: CMR8 1.0
+%%CreationDate: 1991 Aug 20 16:39:40
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 164 /Lambda put
+dup 167 /Sigma put
+dup 183 /caron put
+dup 184 /breve put
+dup 189 /ae put
+dup 190 /oe put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 43 /plus put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+readonly def
+/FontBBox{-36 -250 1070 750}readonly def
+/UniqueXX 5000791 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204b094541f345ec367ae85ca9bd
+24568a01d3b9f8095f7420e6c423c414b3dcce6da48dd1c89a56d078e0d0e2f2
+62a13640a06d17e44ee3866c3471fb58fedf5a3b77294517651c16bdd7267d39
+a54e7171752dbde63ac19bb4b3021ce95eb5fe67390b09ae4d9ed4d704a67443
+f55dce17acd996c1f5e023c9e5a18cbeecc3097f23763acb86cdd7cd13381ae7
+4e48495ec7fa520539d87f8a8dcb3c826275469b6800876a457e7d1e5be867c7
+b1ccad69742a8c9b0ad943482bf2a4ad0aed40baeb69a0233bad36b4ca2d2da7
+322956c70375d152653500b2f22d2ab6990cadde2da14b4917f7515e64bc3d96
+bf775258fc7dae4e42a4c9b6da8eddec4a800c8aadc8d75e48cae52137e05c03
+677f5d6a82fa46d9f2fc7f56d62e5c605a1b7898b8d1401c2cac1a0122a2c8a7
+aae09607f2c5f29293a09b9959399283be89051452898238b777db9830ff4318
+a298b221c4a820c700ca964fc99e6b1d9eb0bafc39be9aa9dffa2fa326b2a466
+1e67261bb3dbc85844e76f9313ab533ee16bcb478166de5502b68e6ec1ea6110
+f53206cf1cfea419571b0243244b32ea38b828a01e62b03bcf476a32c2341cec
+b8a0fa2a3f3f339315d5f3aa7704408f6617d026ffee4925aa48537a4b2e556d
+225be09392546ad561cd46cf766f0ba14c6854c5af1a528c3842b0c5aeefefcf
+19f19cbce5d967153c4f88e51c776cfbe10d39328466f7a3b83d85601ef4d1ce
+0cc136610fa6a74d9676e4e99291d565cad27b9eb2337b0eba4148efd0eb2866
+ebf0a4209ba135ad1376cf9cc2d4110f36121055caa3f2e506ce08b0939d3776
+184328f44f4cd6cc8d5c4d0b2c405197f48f43522d60295d10599741ec0548d6
+3abea01f9693de103fff9caa7bbdb4940ed9ed8f0a829f5da0b6f879c64cce4d
+227cc13ce1a2370ca5d9aeb93e5e7cc8024a06688b7bedb5d5a5b094edfa9dd9
+37beb4981063aee2e4cee1ad4385a317eb0170248eea83ebcd83fe54d470955c
+2762b90118c201c4d04ea096a7dc3328cd045e9e118b37e424a89209514a683c
+61fee234ec5f4e554f8aa5afe9343993324eb8900c65359ba9653129cdc6c6be
+4f4269ee1946fbe91ef8fc375cac4bd5b8467bd88028c479e7d71f41a0a5e817
+07ee1c1893acbf383f1526efae715b8808b6bc6138d238465688be50bd95a781
+2b4b99a4ee9c1b6739f968415d1c20f67ff2ef075338e4ba121eee6373b58287
+085c44e2866db7f837fd3fb6c9fc038d7ac38fdca8484b0a9887de5e6d2e9662
+77853240cde2a4bb29c997266c022fbe82273ab437f181a103843c9d32bbae6a
+c8db452aad66d5b234215cd32cb8cf52e26566bf14791ae1bb0b2bd8ab7b24aa
+262a8ad8a82a4fc102c8b220691aa9b2a9a07f380095b321a59d2cf906148721
+e6418bb6c7cf8bef2a277d953233de9758830b5f942c58bdd4e15b4a9820a12c
+b9609698af672e5a078c2548e82ffb9acdbe86c8e21ca21b29fcac78d0145446
+50fade6ed003e448712aff8e8c0e9e813f5af8916a03a6d7870eac5b47506460
+92af06db291d26728e44bbe764a99c96d9a06a3b496592376cfaa5b86c991dc6
+4740ba5a553409d8272b549131fb6e1c0b76e3b2c779bffe67615ec6e370da7e
+90b74c7355a9f34c1048ea4c142c1199ace256c8c00afa86af5db80620b901e5
+044ba3609b465ced2686f8fb93065b425362b4aa6c9b9604314e2a01bb777b5b
+8decdbd24da4d3c7ff9cf9d1c11f62e85d16adf857c4da238a0ef3c195e0ca71
+665ddd6365a102f6d1953bb9072d557d8cff0c9d7a408f6af6a73f40fc54c94e
+502fbe833b85489a750d956fb6afb6b0121a283ac7e680e8b9f2c81b37d864a8
+5b39e1f03b9ba9ce92d6d0cff0e2104efd9f25d04faaf67563d884e009ebaa87
+0c06260df72077ad06efac2eab2f37fac1d49e20ce0757e5c91e263ca32a0906
+889f92a17692da9274f69185506fd75fca2c6701e4f881e7b9f0922edebdb207
+6976dba56fd5f34966931d7a9a169bdefb9f81360ed08ef061c0824a3abd5256
+d000f71a26cd8693cb03859fd6464942c6a82e52d0943ba76a5cc68afa3c0259
+abac1f370e2a63d23772cbaa6f2991e3c048bb9bd12f97e3288f69eac1a053c1
+2c25d57fb9bc136975324de8fd098b75d4a0c05f9366837a612ed277011f61ce
+9ad5d6c1c8b3e72903af7bf9eb7c7bf5f1ee1138970f2be458c5a2cb85617263
+6aa299e650540b15df9566c4e99df03c989771fb8e19efb8f826959c2570afcd
+37b249fb76e6549fbff190e140b78ea1be7c7cacf7503f506ea972ebc5dc6434
+245d871ad106a6fe41aabf9f0b1c4ab105c097d0cd653446e6c2f2f7dea26323
+8425f19244437fe8735034093a66a4fa8fd6186265cbb9fdd46ee874e0bfe22a
+1c1d50f65b44bb6afc61b42c50efea574261625d73d37a5fc33548dd6bcd32fd
+481e89deacdbbf2cb45f7d45b705415e590dab18055a05512d1272cf893c3f39
+425fd5f22a0ebbb9207dab10df02a3721279430353e30ff43929be05ee9ebc34
+cb156a71cbbd19a3296ffe3a6cf38d0b10b1bcd9f2f412e3e4250accde175531
+5ecb9ab0d56657d0661e9a0b2a4d10cc9f65b1dc63ced579d0898c62ac1b2610
+f7a5937d651a7cfd071f9ea9b077577e2bf13ca931cde57f3118db1b309df9d8
+affb65d81d20df05c4a874fe31cf12803e84e6bb8b1fbe32dd026db926681a15
+fb5fa2bec3d25b489ead0a93fb5b10998b0f342807802bb4e424f7f103cf3ae9
+4103d345c9472555c8352edcf316bdc34f34b161932a0a2a957c22be68b1c002
+91bbeeefdb59f81be0292a97ae03ccd4481360a2105076e8eb2de63421490f73
+cffff2d330535a1d7e592fd9c014ffbe12d40097fca54fb2d2d75bf1f6ca4ee8
+5bfc269850f54ef5504a4f9568cd4fd94ba98e30c2d8c087ea4491f22b049ee1
+3732ebabcd6a1579749f914793ee61a9d5317c2df13eb8fd7bff5b7b256eb611
+7b27f0bfe087f68d8438644910260010c3c17d8dd302051b2f4da4722e35c479
+4307276aa26c9e26368fb1a0f62a498c27eb23f020f3095366c446ac9a746712
+3db23d732791114ee264040cd3688ba9bea1710265ce5582ff7a3fdc800467a2
+c7bbf9b6ebc64736ebb3a928fb3d194d9c76ffc24badbd92108408cd63f5a31b
+9f458c6d46439c06784262831262fc64ea9ade0e75bf32d2407ee5c6c0dcc35e
+898349b5865fdd1d3e3d78df8a56c607b96a34e0b7881fa0c7c776b5e008627b
+1ebf2caab51efcf6f8632af8204c79fc33114916621c6e30ec83df81de03c27c
+6b146d9a5f605c0d13004e4f3318cde2e6cf91bc40025a618f8f45171c3ea1f0
+5f16eb84970513d2f501c48ede11ac3820fc70257bfdccc2c008975620532f48
+f1261124dc525668cf561b41fcd58674deb3c1933d5a3d16f8218f2e397f1b93
+cc163ca31f86095302f621a1aa9d7fe44f4c0fd2797e265d4907579bb7c21ed7
+b2a5706f8457f38f2fd79c08bce746848aaab7b33138cce6d7d8c8d5093b03f9
+f943d412cd96a1405ef0d31e1cd355597ed2f3dce097f9ae23f2e2ddf75a709e
+0f946379fb59aa29755b30fe93fa6998194c86706aa4cab74af68eb99c73cca2
+3a56124dd34c670d8c133c54ccee7fe52c2e8e6d5f5a12d6efd8e11ea75fd5b2
+2689c438aaba027737feb811917ec99130cfbc9abd9f186cd94575a12bd0deb3
+04690bf0f092e5df60c7f49009805c211314e9ab40d93b3ca46e1f8c07dd3b09
+c01453c4307f755eab375d5f312d95cee61de7ff6d535a3e856c9c65cf4d398e
+1ccd8eafa72af1338e1ff55b8d358529a2b0aa832af15783015bed56e2ab511e
+f365e6a5a7262eb7bd3f54988f6d5f17e232b1916f6c0474365d920778181f2c
+f152921ba8c1133eb9e10b8f0793730388abc5d83a9000333e45f945e4fa13de
+b5599c097e5443b18e36267d8ae3167ccc6d57375f673a13d890f214e90f3d96
+4436828b4adb94b1a2c1f35b923dce98a861f24a6fbbfb2469201d469da1ca79
+40e7c3d4fe55978e49636f1a65f8e514047580e9d0b73bbeaddc6d78455c035d
+1733344d1977d0280565098d6913ee9e43584033b1e0ed6a6f1fe3b1043beb94
+f1f66de6121003cd752bbd0931578cf4d1d9fa21a5392de80e5b76a9e18ff501
+5d350ebd41f10c236607561688ce57a494517394500cf926b34f6c0a93f1776a
+f51656c748b54ef96f0395ddfe0cd04c76d8cd79ae37feb5db2bb863fad5cc0e
+8c080ea87899b0db13a8bffdcd30ea935b2fcd9b23546487c431df7f369f4630
+7229a7280d9f5270d7703659be9881d8b4875b506431c1e6ca5c7261df989343
+13ae4ebca0668ff8a4a42054b10ce16bfacd36210933e4a801af23114bf314d1
+1d1fcde9dffddc4e5228ee2ca78881003d7eb0f2368a3256b8628b377c8f6865
+bf680dac813ece78627ffacf08fa57c8193e61489a04d18c7a7337013a036d37
+f7194e746ce9b7e2e7dac535341b3959e5f4d4459f1e6ac3d987118e57ac726a
+fa5a204ff1679c23e3737ac84524f8f8dbf12970a99b77acae0bdf659b61c06c
+81b929c53b3e51c9929af67164a120ed07eef2d0ceb65c1495d26b452db30816
+68c7ab4df15b05abb01e61b39f38f37bb8d724ff1954397811f22566415b5af3
+13c9c45761d141c4f9496c102d343d0e6a4830bc5243527bbd7b8fb90676f242
+11083897cb8ffc6118e480f8b0db1d14033275e55c87dd5ab498e2af2123
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 164 /Lambda put
+dup 167 /Sigma put
+dup 174 /alpha put
+dup 175 /beta put
+dup 176 /gamma put
+dup 183 /kappa put
+dup 184 /lambda put
+dup 188 /pi put
+dup 189 /rho put
+dup 190 /sigma put
+dup 33 /omega put
+dup 58 /period put
+dup 59 /comma put
+dup 61 /slash put
+dup 62 /greater put
+dup 64 /partialdiff put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 78 /N put
+dup 80 /P put
+dup 82 /R put
+dup 86 /V put
+dup 97 /a put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 113 /q put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+/UniqueXX 5087385 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930da4f8d58abefd45db119b10eb409dd89792
+3c6e705479464a4b310b58348c4b42393988fef4925cf984423aaf65fea9f0e6
+4629953bcf50b919d968d99bd185f83112b2759cc411764e9bde677f57c5ee5a
+c555448d5f81a16259ded1e11bf4119d53e8ab07a802df900d3a2d5ccc1c6876
+d29c5e9effb7af3ef83400b0910c07873a8c56fa7b1eb1ba426043b00cc95dbe
+dc6e136cbbbcb3f67509964f9f281ebf81fe5b018122eaf66c4a838487e82e18
+6e006093042848a903efb3469ab6b4049767aadb95c30408dfd58d8a10f4cb22
+168decd9f3ee100f07b49aa44c92139b669cc312ba20192454eb2375be6284b0
+26659d964b96ae82d4942e758027fcf23c25ed01115af27ce7f20efe2a822bb6
+84004f20243a49c9e93301fc21b80815c033c3e2ba58ef53da2157d524b395f2
+b37abca13bc6a2f42e824ab7e47106176b0d6db267fbb795ac7425582df2e3dc
+55863468a9200742bd7b552c48f8cf58bc21343bd3b95abfa140f33f37c6f3f7
+8b0d8a5154eb7c1f62ec598267f13e841a3e64172663935ac8b665d86540d316
+ddece329c008049c5e74b27d59022c5515059bc3b89370b1bc6a169c888bb325
+e0b74282d6f053a50da4024ed1e433271a32ab8c17d41c632b41cf9f3ecd5fe1
+24daf7aea7ce8a63047b245822930d517df7baaafa69d2d17f7d93cebd47deb8
+5405d720de0bb4dcae731a8e27bdbb6e6be38d168b7daff815acfc32ce367374
+bf9fd98c0ae5ba1bccdb84d94b5c173abc92f7d18e19a68f64a2241a0a163910
+8dc46b8a04ead17662b7bbff3d3d9a95d5937698573bfac64973dc8d8b8d9f68
+c52d0c133119eca4fae72f7553d276c817003234a98337d7c037c0f1bce8a804
+57113bcd97515c002d20f836fa086a3277727873ec2b64a92bedb01193491134
+b6692a08de4a201a3f11dbe070d797f7629ad487d2b8dbf89a0631956c93864a
+41d97c69512c7ca43d89f7767b872bbd2db10d5f9ccb2b749344b5083a3b279e
+d65e8eeb6e202d542986d57eff28bb1c2f27140bbde3864c96a62802450b95e6
+9d5a0b5ff55ac45517bf53ad77768b7947303333605ad0a54f4a93702f20cf94
+e3dba3a021155cf4b16489fcd8eba4e2f7841eb565ceaf47d6d0960736133787
+284087eb6e9672ae9bda047ebf5999d05351dfcf5619d38245858f9a62e6dc99
+47bcc9e14b067b61fc02a407aa67475412b8c9190c484753c406165c955eda0b
+c75d1f932de2d6edf43446149afbbd64ccfbd6666958137ed73119a8994aebf4
+308952be31558ae30297e0d1587d759f91ff9cd21685abfd761ac6c1b7167e53
+1570ffd0eec99e312c81244aa894125e4aa053d362adf8a6be9298e15e2d84dd
+c63ee06374849c81ab794ef42012e83bdfe9f2ab14313a61ed5fd9feea7ded1b
+4470a9f8fb063827d2b055d1eee3b8129073f66df0d4ae8ad0d5bb7ac78eb98f
+829f4f2369ac53e6f5e35d63180f7e8abd8a6ddf744ed7477eea612ab4a04322
+771d53a1eb743f8557ca195664723c2efa03fcacc58327a8c9492e20e6633691
+a8c256a8a4ff5bdd28cd27ecad3a9e53f52a793c48956468369b2fec163f2df9
+9c8a431490be985e9c8ca38c444eb6e75aa940796fe5e59f89c4b9d23f585e85
+1bd9cc0d8d9e3a1f01d77b0a3d3a214df039802820a034fde88938a6f1a44868
+f79599bc96184f0be4c355fc63a5d3acd9237886ffb43de11887c8f4f9ce40d7
+bd88e5d7dd04ad5165d3add49436e221a2228237fa843fce917cb9ae1b39cf88
+7c0cb6ab837a9f1a21d529ac220340220c9c523dedfadab160ffa6808bb00a09
+bc7fc7fb724a3050fd346c6781221be9e3e19a5d97567d0f2ccf5cbee820e3f9
+ff6d5fcb4b5ac8f033286add5cab934bd2ff25154d5e073432896b1395f73b4f
+2f46a5497b937057117b5c332a7d129880a833f417e2cd478bdbf4a5ec374798
+89a4f01e4f6fec5cc78fd4a69c66dc722e0046b9f10de9c93606d51c3dca7c1e
+9f560ec390acfb1566abac99e0d649cfefadaede9494b268cc9604d6d188ad91
+c579fa2d6e6089c5a7d7294769673f51735c976ec739a3a07b492f765623d745
+4c6e6a1f95e17000b6fc75e37e8923a46e5580f666c5a2e2740a0091e90dccf1
+720a4ea530cedf02eca055ef3619c0f9bb8281f151ffdc96d70f1e7daf42839b
+56e8c7b86bee8a15a3330445192a911f3ef08e471c234ba898d22a79d5ee39c0
+c1fd65a7ef3c463bb7cb6f01400bf39fde6525b7bf2a66dcef3f9b94765888b1
+959e0270d9a28f7454c98c4150e74ff50ac7918a478274edfad0cb46f6bca66e
+1d7b82a51c3d10518e63f22d3c54ef26d64aecff152d251661c696e6a8445632
+0aa2dfbecc09cbc2687e4fe04f3af78d885e552aa65638c9d2abbb41693553ad
+f604767ef5c2c214801267c1d228d960a140d265407926029129902785e5eadd
+115adf2da42fcc9e61ccead5ebcc4c79606195a497b21e888c239e563202beb4
+8974e921d96380870511a873e811c3c7a78488336b75fda41069cd6191772312
+7ca2f7a4950b30a6a1c9f5ace80a963bd654c92fd10f68154c527cbe8e2def6f
+b1a39d29c6eba6661b42a97773a8ff80e4bae301d73657b1bac76d829e94e941
+0f302315ff196c3f7a55dc62029964c45e3b8ae2401be8a5039e63041e33c6be
+226ef782c92616bc75e0106562df0ac36c0aa4d8cc5141ebd86256171ec7b989
+373af124d6c59f7bd6d6dc63bc4c2969b0e7957c81e69dcef7d6d6142cdc0cac
+0de13caa42b558b83e13aa7404c10db276c60a8786d6d808e6bb691d2b111575
+af047529ddf3cbddf978c053548d39861533fb1cea676fa44e634d7faec007af
+bd5c6a148e9b8585d63ad5ef3916576b81aed97ded0666ae44c676b7d9e57b87
+71fd21a0d2a4defc9fc76145997256967b8791f3d380c120d61f2b88249e2cdc
+c6d97d24d0ee3fcd15954a317503fce1544f0bca9004c873c77b9c1adcf84037
+bd878775da28f91ebd67b256cfcca23cd51dbecb752eb55fb080eb55974c6a91
+3f7b77c5f051d7ec6dc9dd0a7846323156fac7f74eccd7f44eff80d9c76a604e
+ee8059969b4b6204860680f6d2d56170a45c8fbe20c43ad7c190be34c9e13364
+c21f36d7975f7b80a3a491d33da10dbd57ccffd52201d0c8438603f2fa0d7404
+08407cb9f4dc12e5a6659689d5afd799dd23f3f873a68f3a0499808aee222916
+f6a4eed10bc16e670b926ee624bc22e5392b792b727a9ff60f646cef49e1d56b
+94bde88a7b335f406181f452f933d9d29737b9e80e85f9c4c7a5f790c7b61469
+f35ca4bfcd214c6d9641bdd79c3a33f889b0e66c4cba2177b24392224c3b1421
+90ec4bf28693517ef302e83df9be16c2a3cc3bf5581acabc46b5c95ca022aeb0
+f78cc1be239d4a26036a14c6b682e13a7bf5a9f59e96404f6ef5c9b70c2db04c
+7bdc2d2a74a18b2423e3f5db54508987f47af83145929026db29176b1d59acd9
+e0967d07bb94851b238ac3a3cc27c99d6dc3564ff75dc060a7689afebc9b7281
+dd7018f3aab4ec12933c71aae56d73856dbd99ce7ccc915c3f0cef6bab05cb6e
+53dc538ee26b102e1e6b9bf89ecd8bb8141d0ed7c4530a4178a9e0d956edfb45
+9e3c4ce7feba8ed72a14652dc39d6e41493e400e8be3b07e4868407a5e56f7bd
+fc51015d83e811daee0aa3bbbcc820fcabb4349b332d4784a349a864b7ef014e
+3d28c63e8e185d4963967769e10f5e88685ddb2b5c9358ffd8c65731240fa1dd
+0ce98b68cb56a48f51e378519c8a89bc5b5c85fe33038306c1af0214067f0f82
+b39e1144e41720855230585245d22b452c4bb74f77110c83f2cc388f0c32ae38
+f08c0cdd7200c7ba466c1c38cae3e3323ae2be60517633af8074654b60255fbb
+372eb2ee53a8468a9e940dede08d827296f7e537f3ffdfe03b4e658adcd9aa06
+ae7b9e0fd36b122f5ae3bb841697859bfa18b946b29c19745fc8399e219aa062
+38711d6c1e99a715e3519c0545c58aefe83e6d9fa723dce4df1fb0896ede10a2
+c33c9745e8f78afb167f460dabb167d00e47ab244fbe9d5fa7708017673dfac8
+09b7df10156f6c6d0aaf62b7185a825e3a96a581dcfd12690366d74b25da9b82
+2fe61bb3994ca46d37ed1208ba2ce1203bb2f0467647ed72ddf85f8bb287a0a7
+8b9bb5fe7c8ee380ce72257366361e522da8d67100c5c44dcff58594ee8a328a
+b219e1b468d07b3dd0cd46fd9884bc761946a5bda308716528421f4ac577eb92
+d5f3cd77419da392777a3cc3939519e168a890d58c7bc1d09edd962b87e78f29
+8a27b1db923f46464b14cf8f1ba60e00db1d9844379707de2ec6eaaf37678bde
+4bc16305f48261684a80452bbe6b2b83224b2654f1fd1d72b8a4e0f4085b7cc1
+2a7b7c3985021ff234de1c7dea0c41cafe24737277e5c1fe36967b4a52ab5d94
+a34e303b4a6cc4d222e45ebf0cd717d204e88f1f1463be77574b6615e396e9cc
+321db79599535b9c674e14e49a664555ba310cdcd62f7313d7e84ff519dbc693
+c7cdbc17da077ef6b9d868fe86e6e757c457456539bac08a694c3792365bd538
+c7799bad2f95f9035de80a93fed54e2f13ee9accf858a1e41ba99d94c8358cbc
+113b25dcd2c7a1a4d1561b34f7ea1df9e066a45716a62a71dae0695ba045ac73
+c4e9164e80331f186cca361afcc34e64d2d6fd4a4de325a3885ccb48c4c479ea
+fc1b09e4d3e5b4d258d96ff2824e69bfeae25623c77fa1ee23f7059e3f42fd94
+2a227f0c6154c198b22450d6a50d46b856c3abf81430d083a416e91e6810328a
+2f6d1940311edb496b9fddd3c94d4f830deb7668709bab3718552c33a688f939
+86f83789f6e4bf57a42f4a3d1c364e10f5df62c9608e6399fb4324fa57d1cefd
+8f0185f4e57c7521e57a7027ddcbc1155f12b1a9a080f3ac95c22cd2269571ce
+4e9c27c2d5f62294819dbe6a04077bb26bb295ab901089aae44a0c6df583edc8
+d877ff031fe7cab0863c41f7a6e92be0a0991d2f7ce3a0ddc455be6f3930efb5
+e17d31ba6be8e6e3549704fcc17551e01b21a6714d8b8735fcf98c67079a5bfc
+a5b6f0462c8d7f60b11f5a7ba23d9fe0d557e1c691c1d9406900a94e4ffd09b2
+eb7d3a3df1f067f6dbef2c8e5ab6e53a20d8b9571c32e77f087bf4822d9dd413
+4bbb73acc577913bd8cc3c6ec4b5f04d2dd9e538dabac37daf8f0e9425ca0630
+b88e65a24e9fc1f8ab57e7b2dc985444c72e295733e578c787d6b404f7e6a491
+cdb970580c94b75181ae5cd9dd3847c63a25dbfcf963a0b6f8e4e8722b25355e
+223708dea82126e7cfca66cc6ee9239416ec29a1d9aecb309938236c2b11f3e7
+2d42dd96a7a13a88a4539b5a2a121860a2ba260f8d6461f7f0166fcaae770100
+bb8ef5246e0759a4128c9df1ed11e4a422fa4320560703c33448d637f6fd8c95
+472ed26c2bfbb2dcd3b7c577f8ed4f64194dfe706e9a5a29bfc29870f62fe34b
+360f4a0d49d4c98c6764900abcbe511e98278127abcce0f2ce9582e9ba0f38a6
+221a401ce44126b1443bd55d1c127c3f3906edd09da6c20a5244fc4b4afe9f6c
+69242b430a9f7ccc242de4febeba2dd4ed2e951c512f4168945136df7f3db792
+d39f338cbe9be435bb86be36eb255db57abeb161de409b1e27effb4c435fe1e3
+a774e1c0815d1b27199911200a5ee17b6ed9dece271b522efcb0df8cdc834d65
+fed911957693551ccf0739a44b8272ec0e583db2a1abd24328e9e2e6874d4cab
+42df32fa45982898bdb3bb1d372850091ac82dbf0b421d40cf28d9235eaec3a3
+6f96347d71a54d7eb670cd68b4f8bb78b4e352f5335d6302cd0b6b7a1bc00a4b
+890ab7e2cac0b86697fa248d0187cf5c9701efc3025093394ee171c216353a52
+c0d3d318d589d0c17e4ace28a7a15948610ace1d8d39e919846338f121baa8d2
+cf2c6f257278d5800c6180aecb40461d4e9225fc80105305e8d0bc819ff26174
+83fd986e94cd7890cbe549916a6c6817bdd0e9998f14eb1b5a33d27c06a2c663
+a714ad271e73b1b074679990e127d5eab598a49ebb7f4d0d0e58c682ccd87f61
+834745aa6cfb201da330b4de893f4ad94883415cf1bc3fc7ee8fc142b4d25b32
+80aa227a84f414011ea27bf381c5ab95d0bfb52b99d113f97a3a3a2dd4c8c6eb
+4444aca84244213239ec762604aaca6da31a308fcaecdf0ea58e08aa5f0e02da
+4590ab63fecf89a088f8592a997f36c56fc0b4346c67382412a4b1649f24446d
+0e3565878c5d2d775837e62efb4289f682cac5ca8059476c27dd19fa1a08e036
+43ca2c759d1a8e2e24da1c245bc45b49c16749e5e488a903062b2196af523238
+975b6d4e05161c873bb28b76f0788dbf7c304cc08b804fac82130798cad9c2b3
+6ff6fd0da217dd0489ccc7f4313030800c01cb0c4ffeeafae5ea30bf53cdf4b0
+fd4a0391022207e5264f7456371721f3855df5852843d245a4eb0947c445ba42
+ff215d43d78e6469b6e4acf1f276192819aab320f12bf16be23985b04d6c2b2d
+b6d0cc038a66756f1f8e9731750fa46a00f76857b10f32380cadb429810f98e3
+23aaa6857d1a476cce4cda11fbf7999d51d8e30c4ad0aeccfc9e47c5169a8a25
+c5cf5033449a6892fdc8b77701511e0b0a018056acbfeddbc75e0c0534dfa5ff
+8ddd1fabcb83aee4f525afda31fc0dc8219fe8282bcfa9242c4579ad0775c521
+a6c4bb5b97bfefe270290d9c00b2a7ebfb60d05ef3b84aa256a95a4eb450ebb9
+04ca8a0bbd7928e41713b0d9bfeac0f446f035330b12bdf9e83603f875642209
+625a1c0f4da160ee1a205b882c80b8189f9d59de4056f5cdb46156ce1dbbfddb
+64b0ac7bf26e99da4d90b41f0562686b11b987309f42ad1131b9fbe0ff48dd4a
+a21b9f1201fb7f400d76269e11cf20436f06758949ea64313ee4a875ee0190b3
+52fae0c35a7922deaaeda5220cf2984a20d0557aa20abcfdf746dd03d7708b8d
+4c9495fe443f034a8acf41106bf1c796fd771540db2f7c4ef1021b2cb97c66e6
+4a2d742e001be386f57ef9450bded76b94bab99889f84426cc6ab2d7ac8d78ef
+c44dabcb9103f3a5b01f24395a1c562f93ec4fb2ef8770c85e6620af39406838
+d8cda55a985055545dee4d6109b8a91155a098ad274b3ab238fddccc0d270b7b
+fd97c9ccea8c98e68f9d4c6c727f5942d4d1283e996e36d75c9d2078df6d594d
+62da1194ad0457d3c1c26868481843ad4df7f30d134500da8cafb80dfa1d0557
+32847c1adcb216fe29d27f50c0359d01edd78b14427798be2761e8a61ef85a86
+2bf271299a418bc8e1d929107105ed5912ef9933146c213db286ba0c03f63d33
+0647c2d5ff150c0fe6d7fcf953d5da50a4427dd44248187e319d0f584cf2ae95
+6daf76e5c3148c77d701262d8838b172f82178b55acadcd455822c787b9bb118
+daeb59ea035719427218e1095901259d4bfb959391ddd41607ea704b1f9b894b
+1031c17f312c264dac21886f47b3acb812a965763f977fd49717f28c1d28424c
+cbb6adc14bb24abc6b0944987dec6f7bfef573de7fc50b974f6f860a7bb392cf
+ab5fb0eccf261016ae7b47b1befc86f4478a95739633ab2a733e2152fc3427f1
+f0b1bee6849b9bda6d63514386669a2318a714f1b4205434977557851cb8b2ef
+7d1068fd3678ae5408db5e1b878303eb39468506b1b2aa8db8be9f969634b5d3
+06180d728a8e359513bb34a3bc84a4c9ebc73bd7d4543e6854333d4cee85b1ab
+4d6037f1b3feeb4f142d08254a686caab8ac63f3788118da0124b2a207936496
+1285c61501f7d739895461239a51b756e59d9d58fb8df40194b9cab4fbf8a77e
+f0aa65a1d64ff3352081509e3876c566781a152613e667f9cf767c038b9f70a4
+624b43dad664a6ef06c1c036941cfbb58df19674bd715d396ec056e7e5ac37cd
+a3d3eb40ea1ad7de8b0a2208b94112267768a794ffda22623b2147bb16684885
+1e07b22bd3284654b88cbc1b4e8bbcc75fc02dda38c8f9f65ffe4b6a83cdc911
+514b5f413002d4be2450b42fc01581fed2961c5608b797d516311c6520442ce7
+0d1d7a569e79d665854fce0c366184527ad1095e72aa3f0365276aa0353ce6aa
+7a6b45db0bdc8d1e78b6a0438ad51ada893875964cc2de7528c6be459fd4d93c
+bd6bc34f76eea4e6b50943c02f5efe8d75d66c7275e5d71640bd35118f8a79d5
+97cec1e93838717b1c2f55a679117666d5f9b4e44c17b45a1b8565351923be1e
+a24071fe309b7a34c0302259b58064deefe05a22306e569ee807783d40c9c4fb
+ccbe5eeb6a3b03c099e9d5885b62f57a75566541b086fc002c5c0a6b2e7d84ca
+700b300de49b303f33084adbf1e5a8f2cba871cba12ed11c426a12d9d4ef83ab
+15a73bfdcd1eddddb8dd729c7a06e32bb3e9375a4c2ad72a670429efcaeb1c50
+eae61dc7973188a3a385ef01c0b9eef19e39ddfadb8afbd2d4456831e6a184b8
+32eb3046f12671a6c8de5cb073ef65d48d62acca95d97769cfcf30d2ef321c9a
+6af6482feaf4bce47e0bf3081faa2ff3f24febe83c8713009ec5d6d99662729f
+3adebaf54008944904a1a10d2f7cd89238b28ed0a2503a7426ba34e427a7bec3
+cca2a53bb18c8cdffd560d0303a882fbf7a3f4d5429a3de3aeca8ce4446dd093
+e2a8928243c27716945fbcf5163414fd032c44f33f65b6a44369b707ec6f4eb3
+426452a9f7c15a6e2c954be0bc114901eca5fbc18c80fd65d300807dc32c99bf
+1d0e1f9dd2eb91c8f78e1f00692db2431d974b5f5e967dcea8f0c5b53903b206
+2a8a3bef37b9c6b6e30c7d64bcffc7c3bf31221267e825a6bc99f7cc2ade49b1
+608472e471f4d7126656bc8c7a23efbc54570d62e2607beb8cc938d39b949210
+c338f6ed4af2817244b92147a990276d64bb1cd9de57a4e131926bce907cc089
+10f883eb7fdd7d9be318f4e8bc531ab6b7da6d2e816125253fb11f57d125f633
+907d73cf48d3dd8b06d19bd16217cfbb71136d42bc288cde111385d08a0bc8ba
+5b4aca86a188776b084ccd57978320a7d41133b927e770db21c7318c1b82e60f
+d11c5e9f908007af8e9fa0ae5b6b7108ae50783a5119e88a16d2e779502a4b8e
+cef8cb9518b84012747cc247572cdfba1b3ae527f418b15e135293b124859ca6
+46e7f8a608e06a9930f77b5df2777663d11bab96c2033f4090164bf46fc73ad8
+50ce65fd01507811df84443560143e7ef656e6c5752b113f8e1bbba1e839166e
+bd7cd13ed8ef4c3db4f7dd7d1bc51be48fed9879651e373da1fd7430dabdfe84
+0718f220546c51a0646f23ced5e7e7daa6629d3fc0ce63a53f4454f6bd122e0a
+0f770d39b2361da1ebcc5787628010d94a7a7e8dc387105249818a0e57ffaea1
+2aa8f4114121d596f9cdfb9600a77fbeb88d0b34822aa14535317e8770a811bb
+0eaa6e51cc9a703cd15c4b63b998111a562c72c540fc59b3d1182fd0096e98eb
+9ee3fce99e892688e6f2cc086d8cfa582108495b0714ea6018ab9ccd25b7efc0
+ad32f055098de73f4058d5ca64aab2872b9b0807b056f21ce72d99616f0c1389
+2344d8d5e424f5c6e6969da4e1de009ab3c40535d9ce8933c654b6afd37d6023
+ccde97e3e2f71e26d050f20409b505c1358921320ce2210a1691a0103410ebd1
+64a9de0aea5ddf629ea218f86172fbb530a3919c312189a23411230ec5c5b97a
+11a2c79205dfb71d2f1c4674e9a672a6d819308e0d2dff08650343d08d79ff72
+da7c2a568ae7f813fefa70fb6be50c29e1f22b99b2d7e7d3389a7b7819b76abd
+89644e47387a5098e1968f77f4bf90044174eacc282e2012c1de593c09162e12
+00ed0e36514ad0c0a4ec0b8413a3ea311ce253eafb19fcad2e4d3b86d85b8bda
+b64a0e56546a81464abaec3bd91e10859aad5e91dda9b19db6a17f5a5549d069
+b84abd007c28ea272353d36bacd40265496365a0428280aa3103831c0ac555dc
+a00b8e380e435e3e33b6d228251f65a3504aeae30c1a80118b1eb1fc424fbb74
+2c0d2782100c0fb97fba28d0e9c3da24f91105317a0baf421e14370206f2e4de
+e9ca66ebcea2ce7c102ac9eaf482f7d8a737100c4994c4810678390037dee35a
+aa0299e5cc16404efc7b37bfb7b07e46fa3da548f13cf343da11e81318d6a86a
+fa04f0dad05333d079bfa7f1ff334a41446cf931b03b86bbf3d07ea8462caed4
+86d868d3906477fc5c36cb490882c45b96fc051937eaf5b69774ab20cf3601d2
+dd6ebd3845639d11d878ae68c7562feb061376e5c73c038001005694b2cb4698
+55f47d1de8e30d73be33438f24af5e07688bcf16134231ad46222b70bfe26000
+c30d2a7206f1341514c2b56256e6d48b3890236922682547e728ca7f063ce45a
+80549e44e71bc557c56779c602a1463b4f612ef5fc1005ab5e21321404acb33d
+111fa1d143d9300d8d9256e1a76a22dccedb26963eaf58c3cac194733b35ec5d
+58f1ed8168f65f75e615c2372b9b2e191778f69a77cb998c224c70dd81647357
+124561a6661c8a123141ced0f7148ce4ef60c2b85e0fe2370ca3af56b4a806c9
+934007bcda25930587bf09925f9f8bc0cc2986dd2aca12f6ffa35d209ff71424
+b71b97dabc89f32596c7dc3f51b8f5c4440a2749643061229fecfe344677a21d
+36aa4e0512463b27380f23bfa1b0005b566f21f3485161e2c2819a08ecf12045
+8b8abd1e469721d6236e161623631114f1fd9cda91ae7c22e40a3ccb81ca3630
+9353f1081705689dd11a3857fb435f6c595e9e26d3f429c27709905a59b0c4a4
+34680abaea976e04d222cdab9b108a9efa753cba105e722dd6ed784c79711652
+c213f7e4faed722321957f45ad10f6db55dc94cf71328e70782fd1ac86fd5554
+fcdffd471d7764b99842b7f40e0851ee5d01ea1fd743db7e790f6ab0deb93401
+2bfdb54f3fbed28377919c782ee14c94c1a193a5b0b12fff8046a2b74a779177
+7dd4990cd5e4965c0d390b9d19f1354dc6480d28763e9677e76d1a0d4ab9f9e9
+90e360e8aca39da7e7684250c23e3723e943d9bd467dc4e73a2a3efdfe2ff4c6
+9d58cde933795ae4e19c08c92913ade7e36e733bd54d9e10dc9b4fb3fa2050fd
+5e96f940b511e0229d892b1eec1a1e1f1326e123cd2e982d7deb50924ae6fdce
+991adf5318566f3df2b6dedaeafb1c439bcb1685c7fcfa5b4964f6cf2bf7a738
+eb67ef5a161c6adda562414f21b89308203b6248131a4cde5a761336481d9117
+5a336e2d4a4dcdb70900dd208006921f76b48e60f309c889f0a353355bfa7e5e
+b465bbe6a398f0da79d70647e03e8d3860c0ca556bad89dd124c19330b8ad094
+962d3c916ea7d01cc20e2ba06982e8da3c79677517af6ccf30e22efeab53ea9f
+b83940558caaa91db479a60dbde61ef681df6595111f59fba8cae6ddd5080878
+75779526dddd330464cd10ce49f2a9896e80154c16230016f5279c844f91027c
+6002f9e46abdfe31ecb396bc629ce9a5df3ec6cd9fb3990893a80389a8785ca6
+09ce0a4cf4048cc82667e2592418bc02218085af26fbe7fd8b944365890ff477
+48b5d52cef858f1f877dd00f5660dc7df2add849cc644384404758bc6d9804ae
+e4af62711386d820638df3d5f9dee87d028863d78d44637cc7ed08368e76ebf4
+6d4d0772b9443165161a486625a2dbddd380504c0153b2c9639905da36cc86df
+b7c09b23816e7fcacd7e8882d206f1c638ee4f50d92a40a4b191e018a8a9367b
+1798c4f00da77e181f56c49abf2574a44fb4ebe4cb550ba5eedb30e93becdc90
+6f07098990ac79327b9f469fd67b5e4cc3dffda827b8b83f6b1154b16874f1ef
+2f1b751a70f7b053b087a24b9b07c5b4ae63438cc992658a1ab46049b4ca6d0f
+e63244d5d12b65706c838acdfaa3a9ced5d3458486341c2898d3331bfebfc51e
+38d32c4a8206991966828e97c313624125480ab483ee424d31572f9fe67d4eb9
+9a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 164 /Lambda put
+dup 167 /Sigma put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 183 /caron put
+dup 184 /breve put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 46 /period put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 58 /colon put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 76 /L put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 86 /V put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 120 /x put
+dup 121 /y put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+/UniqueXX 5000769 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be79011d1f5bfae5c1f476ee6f05eb1d2caeb
+269958b194521197b312fcced4867f3c8fbd030bd715d8ffda1dcd454b174e7a
+1a97b59fe770e67702519d9d9b23d61ac08424d555242a8ca08c49aef300945d
+99b999a79ce74804ae6bfde623f4463371442f6523a5f6ce19c839a708c02513
+2e22c696c8ccade45680e5197189d0f98e7f0d5f955e353970b392cf530a68cc
+56b0035ddfbf206c3074beeb0739dcbca272a6e629fb7aea2c5ba7bae50c7b4c
+a595df78200c352997ec3ee564df229fbb5473f5e8ccb1cc0153e9a7e299a8ea
+a29b69d1b622b1f0cffc58291248759607d91150cb0651120970dc9f743bebef
+44f6ae92facec57658999c8bf01f60611560043962c0695e1bb87d090e0fdaab
+659d6557208a660be9aeef8ae55f71b8bc76394d792967e41bd8023b6e7f8c3d
+9987d5e54c53bf2bbb32855b946473b44833bd78873df8e4c7e668ffff25aabb
+8da4148f744b9d0524d6cb8281247b3052cc5d66f3f1bcf8a56a3fb446ea587b
+d8be30257652cee035628aeddfd8283b5ad21b8b1480ad24d898970ac8a1e33e
+543ce4e3c48f9ee621c5ce3e8ae930f890011b630866c988606068d9e92396eb
+f51bb3db204505fc3d09d4701ac703a14d92bbfe27bd7411b363a88e33a8e9a8
+025ac31f21e73dc52b333b918d0b1270c54873a490222d041a66e0192612be6d
+2c88958a8f70c10390146ee5091df020ab97675e8e6901226eed50125d36c221
+be8f20647442444b13f0325f899b8fa15e1414119b45f920f73dc3496f6de0dd
+4418a1181e791b49a52866c79d377494beff7f1b444111bca4fc2bfb7279fa29
+38fa9be2de762f20d470813c4ee0034371812efb9f87014528b7a09be4f01f1f
+84de922d6c66d7f6ff96a49233b2396d9c19b85b132ff565893ad3a11ddb88e4
+69fc1decd51e5b3fadfd1e3e50914839dee5d5d2b63f83e8a7953833efe2492a
+30314f32e2bd9a758f2abda8107618eef886f13905eece29e3a0267fa506a772
+71c89450b6cb4320e6e0c9143c9f2df04c4bcf70084cb49d348f351d31ee0676
+484abcb0b0365c6f2dc9d85dacf56c7470aa5a4355233b65f09cb05dfdb7ba6a
+7d749d38b225c048eefe9aa1c7a15c45c77a45d9d3ae4e000556cb0a45aaed1c
+83a4ca064ed873d771f92d4274d86be56bed0c7f20348ba679759397bf2b9f09
+df6c31574c706a08ad5f9a024711a5b28f6d6b72a5ee33890c9e032e4f219bd6
+6fc226d54dd431ab15d2a2e1be8ccb881d1a8d1ef9831c7421c5479e2f78e2eb
+47185c90df6685178842229f5d40b9ffbad131fc62408459ea77002ea4ce5cfc
+c4f5b47cd910cb88402954f55ce438e682e000757287a70d023f71b4de07fb4a
+3f761d3d2a5764a4907a202e279355be8ad5869ff15ade72ef8cd1545fce596c
+3f0edee406b668d704aa3e68ac8b44d31538069bd4006b2502c20f000d748e10
+b77cac2e4df9cf8cfe9eb638f72d1c762d42d4fd0a95c7e305e80a868b6e8338
+21b812f5faf9e95e1c2bf5262a4ba278ee1b94c07d4907f87028a46d7015d28b
+9e92ee6def1443f6654a8cc086f428a567e4f1f62f5f33b94fcd2bc75170db07
+15028d911c13266733753224f0edbc9e68327adcb6b2b5ac8e7e41cf968e9445
+5ff465a0045993a8cce22f4caffe4412c17d8649710c9c61198ca543e816af2a
+79a4fe8a5af14a2f285089ba4002de04474be121aef3d91083c2477496bee283
+0a9447272c66e8b31bbbc1679592d03302fa59616e030c206a9f25c54bdd3617
+5037d863403de1e8fc860f236e8f3f859046cd8ce29b94b4a23e84c6b5459872
+daeb30eb99da868cd26f7c24629944885d7e38eefe3ac5debabec2725f1707db
+da9cb9550a614c47b96e65ed9c8882144ec253401c8675acdad288466f7d16a6
+68d6db2a652819788fbc8e544bd9110d1fcfd797814f5674cedf48482dfd9640
+985ac81ffe638c99d02b65ad374753d54608f6bae2c1dd401281c27d8067dcf4
+9ae0b4b7be66d612d1545793c613b0ea4db5cca82492dd0ec3763c773da05de7
+ef9b1d582d4c65abeb56b7d7322a1cb0386cfa173f50d350a44c8c8aa9666995
+d8d6298464e2472b1df8899dd62dfa7223c5bbde404b5cf89b7d54ab1daf7f31
+49465398fd1181372c59cbb5427f252dd412d593b0e44948bd0be7b1718dacaa
+bbf105aa9ad1830bbd1cbf16ae99e8d9e69a10d3a3e50f5d6fdfb0c3902ca4ff
+e3aad37b3eecfc52216c404f65282f1696f9d2eaf25ddaf1594c70364eebaad2
+44699efea52c6ec1ecbe5c07224dc4f6155a45fadfb797e93bafab2918ab7ecf
+9e5e11a8c0a181d0baf362f1a0334b5d282b3cf7a0395ca3ccd672c8bec24abc
+48662872776ca65ae3bf575225c7b3c28dbb9ae9a717b80b7e1bcc9f0147b8fe
+516f5d56ca0447fbb0c95f8ef9a9c55eeb98e448026ddb2f0b2c627f91010838
+4fd85deef9001092ea16f21127bce7b2521e5c013d438f65bc216f7203522296
+7e0dc32729f61ce9512f87cb958127f27c831db8aafba6510f51ed398c79d6ad
+0eddc78fb6b26adbb323a55315670a365cd9342b801012f7053075aef342cd88
+c7aeedceed398684499a62e0d61c7c56463716c0bb792ecab3a0c48db554aa8c
+bc5a2d3f2e1411ddd3c86043465d3c621b30647036123c24683adc5f160b2275
+671cf1c4aba15e6ce6f9b372237846b9aebb8980b764bfac1c4255cd651a1df1
+c88d9eab49e49933c9aeab567aad25d44c6fc7634a3185521ccf3ffeaffb0883
+8cdc58c38ec14c5085c7794955cb41e721a0be4926146fa7f814f57771fff524
+dc429725847fc3dd3efac35f6da3af888898283e58553047d0ba79646e0adc02
+66cc58cf73bed752fe2b7bdd31455225cb8c9185d074b9347fba1c414d5f5413
+4f30233e0e5c616e5d2bb9d4cbbcc188fd13e3500cdcf83a05145b385a945add
+c05d8be23a56c6053f4344aeb0025ca2fc69bf73517b0067a9085b648554a4c8
+7b9d5a1401f01ff850c174beef394f26ecb7e2a4023d57fbc8b4a3258eee17de
+aab50c8fa75d4830ecfc3ac58bef094728493b496c1e47f6e178738cb482ebb4
+6b4337a87ba8f58e0050b26788676482866ea42a2b857b7adf3ecbe6d00c6db7
+c782217fc28165fae8a98ac09e9e1afec2822ca63762f49cfd8bf023a7612bef
+c8e6dae44e103675cd63225aa4a2c0c41f25cd0afcc304428490ae65a2befc2d
+8a25a07a89450fb0d27949b7564e82ae5a212b2c2e034974521c0c8f1e8f6a7c
+d9bc330c15d9cb1d473914d1feca40bae332e02ea15e75d5188f5c51ff8fb6ff
+40f3c3f11153f9533a342bc352f756ee137a2b136385ed610e6a336c76e9012c
+6ec3830623a2d6353c483aba280bc6ffdb3477d5f107cac0e38d9dd85486a056
+57243ec4eafb5ac9048e7b30c40de551bd6412f6dd72043a3c53d7f9c7f06a80
+c17b92352c34a1b3cdb83b7280955769847764f56d9077136d722f1d0d5f7114
+1c5e5156aefa9f456686923259ed19c971b6d28baa67d783fec61751f064d284
+4284461f6e0a130f72a38e0adf838f775ecfc15132bff1187f4b66b66aae7f31
+65e64e121739bd504976f0e25d98205f474d86d12efefb6bebfbd4b7ed786dae
+50aa9820f8634632927c7dc791a0ed0a0df41ce79c14838ae3cc861b8154df27
+1bf214c1046d8f821d9707b0fca78840be87895c2d5a8d3fae45a13edf4e45b2
+b82c70e3977fc50db92d33f124dbb8788e88862b0465b027d9b334b764caeba7
+2db5c73793912b2a0ef732885bc237ae62957a7415114433523615a3183fda46
+34cbf4276aa267c8d0ed15bc133f9e0b7dbeebc1495bbd87af19ac98f82cfbb9
+d4c358fe3df543b679076e87fef6b1b009ba8feb7ce852e08e127c5c431c3edc
+1833255d82ba1bf408cbaf95e15bae6cff9f4e044d192c8924d3125fe0008edd
+b9813e209b64fe9a039d8bc44be31eb326d72cdf95472713e5678489114af1d5
+d29b2e1ccdc558ed3d249c62dfbc74d0db3fb89153925888f7dc6faa53a48fc9
+9e7b991bd6abf530eeba289d540bfbfbf5714ab7fc192907b7d258dee9069be7
+ca2027c5fbcb00965b39e7960f9a0a85e358cdc76dba5f322b79bfeb177a8478
+b2702ccc564a931258f2034a1e080f0fd3079117a6160aaa8d7ea90fa16d97ba
+18e8d490b1c87a61099d21b5e07edf2a51e6660854daf88d4cf89f4adf57d766
+e5a12c3cf10beca1aef001d3b8bf12e43ec6f14c8f8c6466035ac3a6e3f5f3f0
+929dc360cc989051b6e1854220a63f7093601760039eb403df406d1c50cc4e2d
+04607171087ae2389a1fdb5107ccbca160f558604c0498b20ac3c0f04a531a71
+16a562f230fdde880407434d5d567f7b0a5a44c8c56d6b8f80f050e4bdef2ed9
+3de0611dce1dfd60c5baddb7ec30650d396a1e39e654b05f3c0b0cc4191d302e
+5471f7909dd60ab496d697e8aedc8a2a14647e2116f980c2ee0cd7f58d03cfc4
+4269fd26213dffa38f7a20448b681e4f5ddcbd79c5a734d5cee94be094197a84
+fb94d5c502c0df6d2fe53716bcf9d17c475ec8672118cdf497bfc7f74ec2fe58
+0e8321093b17ff6e582b1e5139fb4ecc0e595e293b3832051cd40ad6048a4d58
+2dda79dc6da9d9ae12c1993e59ddb473bc17a4a7581442b2d4bd7d5866070ad0
+0b36b8dd8228b96a7c1b32515bef9efd61becf14cf175bb9d74f1005bcd6afc1
+60af9260f3e93eac30c51773825c8bd4103a4c379a7f42e7b37136861def87cd
+21708d1b1374f69d84954b483350eaf75f66cddb128410b1fa6d71628ad05ad6
+7b9e99228e03d7c234c12f42d4406a43afe3b6cb003cb746104c31750e0ac74c
+df3b55a1fb39eadfbb60b62fb5594d8dc42d19cc3c4af5d777aa11816f457882
+e6d7690fff6bd2fbbe9cbb0c1d9ac294b9d84b7e195588609480f935dd9bfcd2
+f36f7b887fdf06294b214818d1ee4d46fa7ba11006182985937bd86211b6c60d
+4c29ec23f2f0b32e7b6a9fc262e86385ce7445090a2edb84db2f7f19d26c4598
+ecc0d8356c7d5d6d9918064f744dae81c96b98051c398d2b1c1fae8355eb227e
+83881ffd6d69291f807facfbfa0775d63b4593fc8fff3c4a341cb79366c380c5
+5d3423a28f34ebd6025d436cc860848663530af6dde58fb0f4f8010c2bcdad52
+49b42c5e9c9bdb87a16d77c8822ad11375e081e53ba7678bd90e6615c25cea6c
+865ac8b4d2cc40edf434c4162dcae14db6a6664c53d0ba5caabd9d72b3570a1a
+720d1924c918257e69394c337aa858ac9d6472972b8e3b8a5f0df989096de383
+59582e129df1a3cbb5baa3a14f85cb6dd4d473ebbed16c16b92c34dcce0bf627
+35ed6a51edc239ba6108f29bf73d0a40ed85247e30325ae9b1d2faa7af0c9560
+3770f05389ccf85e14bd2e1b6065bf32bb795dab25b6846b4d079612cd93b7e9
+2c09397968129e9f645f8adedf7fba9d288de500fe35723293be8ef51800c3ca
+56a10a1046b8fb5f76444aad27715490b2b6298abc5812c2b9c8280930e76951
+a03fb7382e9004fa5875fbdaa1cab12b7d15bc794668cc451fa99467eaa38c40
+7c7d37efb4b4b5e4b5d8a40abee41a6d9ef423707a41813a5ce0a3ec76d90d29
+8360ea6e27a8ad1f705483bd10aefcdc130a403009b7e21c18304aef1e59118b
+f10bb25ece0fef68024f12e5f7eb4b710c58849f8c1f5562c39bd67dcfae23ac
+5cdf35a464bb35b06ece7f60b30599ed01f81863958eb968bfd713411e9a319f
+cc4d2ce715b98edf90884c9fa6799d3eec8f9046b392ae7924792db966f47374
+16400b34c5932bd52a75d7156b748e9872369a9b8f720acb5658658b4e072137
+216291b62d1f1580dff4270ba7ef32c8f206a84617af9b96c9a9bfd4fef04461
+b032b572ff0d8fb1d9c5b7128d17b738055a325314cbfb78447a7d64b43eddb3
+a70c312f74029d7b7d3d24d135fa7df72a2bddcb01780359a864c6cf83b8e003
+59c36b4f43b86c73e06c649f91f44016eab96beb749406a0561c94f50977e354
+16121c9f925f9f34d735c92dc67240580e5027a1a9737e6a2b7dccb1bb534b5c
+0cf17a0a88cccf577f85501cd83c44474d9268a2abaa1d851d40a77f8ad3ec56
+774523f459398a895674af7dc873eb275367398468b3f0e62c659dd2ca91b7cb
+d8e351f37a84db149df29147f8f847a2055f916f0625aef889e3f9317cbf2e82
+7e1a73fcb3c4511a6b132db99ac9be94161235a1281cd3aed7ec45c184c323f5
+48bf2b71c2a65ab8d38e2173aa717a44777f086cd10aa462ace83359c563ae7f
+c504f0fad23b825ee8123e5f119761ef110ab10051db7d6c63a8dfb1dbe74d92
+3f0dbf4d3159fb9a4f7e9e0b01a51df2baa660aba7056a70b716379c2918f80a
+96736404cb5cbcc6dbeef5915872859abc9bd3b53b1bdeae3f1d23714fa5671b
+7375a36f33a035092541ff71490b754278bee9d05f53f9b1ae428207530cd539
+877524449ee3a0c8a9da65b4d3df3f87b0a1a2db974a16845ac33a700054ddfc
+43338c5be32f8eb84a9b83cddc21f87cbcd86f78d42c336983cb3ce79e5ce86b
+4e5ceaa491265a99f35151dceaea7949dc4a16cd76e63943c44fb7ab3b58512c
+89ec251dd11ac8000931900c5f5fb0cef71ee6acdf8b42fd01e49b9f0835a87a
+1cf23a42be7c22702d5b887d2efafe439a3f77d9e2efbff2d7c1e1e71fce1fb4
+17f472774c29a1568cd2b9880898a77eea997e4044812370fe0ef757f29de9ce
+d5063d62d36dac461467426e2aee5106fb5f5d32b38d4acc82612d8c04a265fa
+a7e3c498e32a615842d4f675219bc1d7fd42f4bd2f71222c4f4bf60a191bbdcf
+40fb1836cb91ceaaa3d3ace621ae83f46a300bf981776e553f9c2b089ddc9a9a
+2e5f4cead9cc88d5e12ba80c425653de401dbb2fe334b2fbc99d01eb80f4d63d
+a35c36e3fe907acab7f5314539924ae8fbc8110f235a105ba5b00907fa092dfd
+a759b7b2a9b358db995684d219c97a72d0b90740451781cf5d6fa24f30771a2d
+cceb892fbf4be0a76895d924ef565aabf2adfee5ccd860939c1584e3b1cb7f6d
+17124dbe4fd14392c17b6fd45859d22e2bd9e4d0c0e16ea896af66d1e9423576
+4da78d352e2f2bd1ae590c6e63a69a465893f3008fec052511a8f5a78d10eefc
+7b40df93ac338c5786d6c0b19dfbe65625330592ad8582f931d1ab247afb9812
+a3b66996e2dadef9ecdd52e4ad662ab68e2a476efa0ebd8f2d8047cd2b5a4b32
+477afeea4e72af26349f62526a7dc2b92e986506c2b1e29c9953cec3260e9a6f
+cc7e1d03073a8d31b8905721f77d4227cd5e868726329500ce80ee67dc7078a9
+a58eb5e15384fde585b0b8d4a6b05948c766ddd1638b5813bce3bcc0b9667448
+7925b5876e5083cc21b0a04ec22d701940ade86054529f6f45fa332982a6fc8f
+7b10531f3dfa4d14cf9de8c271315b4738ea835f71b2d6038cf05a1d62c4b177
+56f88f7ebddf4d4f0d1e44a143c7e5afd3d455398bfc4c9e43f9a3dc66b80b2c
+6e408e2fecae3254030aa7f6acda260872744a01aed01f940b9653849ecdc8a7
+f516caffa8ef71a2428c8307447795e6978f40a156aa8eb1401bbdb2660daec9
+e36fe3e899dda1eff169e74818b45e532372764f462bdddfd747dc5aadd33fa2
+23d2bfee72650792954b226dca1d1d9df7d91c29339a0e95c85ceeb01f204eda
+a787f2e6745eec67681b421b888d15621aa298de9eeca4c0ce381900d0355197
+342bf2ac4a274dc6e45d785476f2ee8b364fea8303d7f9a0a10a8dee7e7cba01
+ef4b54645f965aa39dfd5052abc57f37c712e0168fd5727e306e6370fd942f55
+be9f39d79331d18649c7f82325739f67ce7786b198ef0aec322a104affbdcadd
+c69380dbf7ca03efc5913bbcc9fa839f4b6d17d463b4cdc0776126537d2c8d60
+ca278dcc5fa77f0a5b6233bacb31498cb18ec61ced45cbd707ccd8c1eaa7774a
+a76eee0831a2fb58e949f95621dfaaa89022b8ed2e7715ac4333400be073b8f9
+977d20ff4c592d53f66c4f17334d9cce7927c8481ba2065ae8a17496e520daae
+0a45b649b29e85853cacb70c3f686f0c4b4799d7b3acae655e2a56053ec27bf5
+913c7029e6c50a30b2d7170b8dc336ef0d6d631843bdf2c0d95f74fe1485418f
+1936bf4d32364cdab428cd848c05284d22908a4f3e0b92883e27fac7e425c28e
+e26cb3f969d044fba54d6eb2909c8f069ac8059c5d5d801b70f1f9878b26dcdd
+eb8eea9222297521e5f680a683aa3e4f065d82aff0e89ea344aba2fe88d630b2
+823b1780a6ac5365dbfa721166e1ece09ca6ce54a585e7e48269bf4cf07ae3ab
+6331f0457b7ff1f45191fa8eefe48b6e835566c9f1e6aa227607fb896889dd43
+1c0393c5e698f5584859f5d03044e5bb07a5a194dd45d142ad51d18267d31153
+79dc41d5e0141622f1b0a6529712a55af4aa6712138d0907539cc20660e49957
+ade6326997ee45e09fb57cf99df06cccceafed2e2926209a04098e7a92516049
+6656c8c8050fb2e050b8762adddefeca63c284f7a17faed61b025e01648823f2
+cf37a6365e8a1999660f07321f8336754abdd26c043e37db821c9ce9f3561167
+c901ec15325baa261567a7b20d537158f3dbdab787d5d74fff1da5fa38de2746
+f7dd95f043325b29c8432c21e759149242df381a00f932744be779c8dfa85ef2
+66fb4ab9e1b64274071df7fe274254ab334eaa31180aed1fe520fef720f86df9
+6e75c4cc49e8ec21e2717ff9cb2bc61e4ff1ed4036325cf17e777e2a1621b06b
+840b5218ac21350785b13bfe74e7c480e6929a0b188ed934e5f4f7090a9d784b
+7d165a6238a3880ee4ac008d2e7bb65a61fcbfdd297059158ce91fd2b1d78d04
+65abe69ccfaf22cb34d7f0aa9aeb2dce0dd8ea3a264bfd1e24a7a5830ceac1b9
+814af10d0cab09e4470507edaea2bf2a2f7c12912be109382ba8724546139615
+cd851a0c96df18a85cbb3f921db4dcdc350abab6374ea30baddc960bf4d2649d
+0720225cd4ef2ea963029519f58d298289586e350f2b94cd006e8a0e57f9684a
+4ab790d711b4b64b6acc6270f554361584b9c8e6c4f721d0e2e4bdb3db030fe0
+f32640c4a4d5351ef0029b4c8e8f8924552bf2f00895162022fc6bb43b5c9859
+01af4044a68339e4d732a3003b814eb7d3b05a7bcd9b686450b2effa0e74a298
+be4179c558e07cea17f91e35675b63b49253c743d8df742d5522d090bfa1568a
+d9ba25708ccb0d89f6ea11306385c0c79d292d2d788e16e4cca7b2ca1c000e97
+362da61cb51cf4f7beea755ae1330f0d02a9004964baa09b7a429d5cc48d810d
+799600bc2d312b211aa4c0fd301299beebf501d9995252cb09480a80f9a663fc
+54a46a7c10ed12c4a4d5106f9c5b04ae9a009879bb62accaa9e8d69e55334ce6
+5b4d47335b3aa85fb5454d41e7e28e8760001da2521833a6d75a06969a913a06
+aa6ac2fe68990fed40167e15c3ea712a923afe3b2f7a49e4595c894cf2b5fdc0
+563bb55ea7894cab60f26b9caace78110ec35ba81615c4d1f16df6c5a422519a
+a46f7a2dbffec51ea2edfc5177cae44a71ad60de1b610147b6679ea1c80476f4
+2d40540b5067a79adf72ee58925661a7459bd0cc77f3bd93cac34d553e043a68
+2a3a2f8133fed9487e03c49fc3cb2a3fba60e9555ca84957005bc89dde886a73
+b1a1ec468d8695ce10f04a4b07e5c06d28a562a6d543e11992f0cec1e273e018
+e6a9336be35409c32d0d062d95cb5f4ed823d4c2dd516867ccf06a937ba4b24b
+d7af2aaf777475167d02675bf4ada4b26e01bcdbb375d06328f5e06510e00210
+940dd5eb7ccbfcef22e3d537102af69b3ca5d8119e202d16d4bf6bcbb701ccc1
+828f28c244034760d22989253031f70a2f56c73304d4dec844e3da05645af70c
+d947cafa5852660cbc304437655826532fa4f87fbaa7707c37856c4d531ff29d
+0db8c2647bad522716677b723f9d8a0d9ebdf852c44e23b1fd6a7a12a1f2c4c2
+1403514f8addaa27dca959137704ab08d7e7621cff41feebe7fa8ca27d2e2648
+e679d95c8d9ef869ad92e2701385102b7aad30c9301a0207c6000fef742b02ff
+f681055fc8aba580702c94167131927e3af9d8554bd5de99462e660d337416cd
+aa2d5dfc0831a03468f6c8f61981881a883ede1248899681bba3aea7034b62eb
+ef9dea5236007b3bda0201c4bd729e86447cfdfd9899fb37db5731fba21307ef
+f5b4dc168a37f4387a9ed71a804e4f4d6f0ce776cf17adc537624f031de840e9
+7b3e3651e0de06a912035cb713608ab798bdb89289a3e54edaf68f754cb67e47
+b4e78857a7e3051569ed41b7a20e4c05919293ff0773c3842817830a4c7b5f24
+6653cacfb932aacbba7f05dbc08f794634753cd4414477a83289a7c7a8322819
+e625de1182c6911b8fa37145e43f1147743afa754ef3c27875cf364cf469ce60
+67b2768b81a666e38d844565cb5a8ed9c1365c038ae870c999e29d68a48d048d
+35dcd9cdb4002b7bd1b6ac8b393fd124099a61fd81b421aa5419de0d9b243bc3
+f333dfa03e15512426500930b44c24eebd13f20fc18f3608463925275b385e95
+fc59631207ed428fb6e92b6a173ad8999adb9c4e9b6603dcf1350ef6cb82f091
+619332f9125c92fd298e0abbf6e1025c87581d73c0c20e10e037bb9d3b9a31b1
+2775f1c23ce1c05b7b4a57439f2fdb8b646716e04f0deed6b20b199e7323b52b
+bb57804785b4e11eaff655682a92d39448cbe24383fdac7193563ef9132873d8
+24f0baf1aab0b2e72978ccf2a2975704f7efbbf51aa1d19d11c0d66bbcb328df
+29a0721889ed55f221a01b65a08f394bc0b2cd658d5ef484a8d1fb2a97e26861
+80e2953e4c5fb99bf86bb082cafca46b54e52c983ab57dfc322de9ab220829f5
+cf2b9867bafc167f8a22e238397c3220d3481245edcdd294f4ee6cb37df4d737
+74f25df24fcee88c77771ecbc134b65684ed03158aaf47485acbb866f344d240
+0b942d33120f8d5ad3b232d0d61778eda530f251f35cd24020813980bb8cdbf3
+4052988da406226fe9e6af5a04e0df4536b26fa263307f7396ff15218eb665aa
+e10a1f59b1e36622096688dccab9466e22e6a89b7146b52059da26e1b93af25c
+a4a166ecee80d62f3f1ae906770788aaf518942452e7869e6cfb7e08c55cb3f6
+987bfa6fc11fe0e866d1205d8928c5e91d548110d945f57e000c8ac14c5031be
+a0304fed7333942e7d4cab6aea273f65b71e59024f4f2d50227f557c1f1b0418
+c30eaf13e659c934cfaf83113a120319a73a0c835058249788043c592a36c0d7
+0bdb392666a3fee2904082760f77cd883e6c55c85be6d2c9e6f556b5a157c089
+10e7bd5962f8ba6ec394601c2af8e0033c01752714b8ae647a329a2216bac53b
+eb9e1cd7a5f34457e5adccbd12dd0463263be99c18ab2e61c7d8f97c7eb7cded
+7049f460f86d1489f3e3ef7fce5e0d2ab77e6d5b74b86fef714fa83acda19a72
+db329d626a7428cb0b0aef6d4dc98cbcf775965fe119045fd7aaa43934c170e4
+ff1b5da57592e3b0eb038d9d58046e7cacc7fd8434e82b17724f99bc749c8609
+e867e060573f96f78af056c576b780724776674147758d3eb0ce06f3833509c2
+88b95478595a4ca7413ecfe5c28cab3085ec290208e552b9a4a9670501b7f553
+6c3e4dd3cea3d6c584e3107321af4dc99a79fc613fe4a39dfc38d3e7ad805985
+0d542fa7e02ee7a981f69f2cb8d4f3e994aba769e86daed1488eeea4bbeedf81
+f452e34ae353eaddd9c561941a40fbbf245468bcc76612a59ee481184e782ba3
+f11bb286f8583316ab838287a23b963021caadca4115788c1b4e73fc2cd5b9ea
+d07275d4b1162fa5b8c62fc9f16b7aad6a6964e5221f6c2fdc01fe90576fbd59
+d807d553a4adc8083fa3af7c69eea07a1cdcd82a8a0f13cadbeaf974a54c537f
+9758f723ab5a431719a61585dbb29a7248f5f776139590a620a0b0bc4a522ab3
+5a25c35bbf1ceee62a8b95f154974f603db6ef209dc5b14ce2e1249d19da0e46
+14dbaee8bb557b5d03f3323e35f2f63ec7295b38cf8d1a550379512c3ed75974
+f9288aa271b611a2aa09afcdbf4cceef33ba99dbb5684cfcebff8e09a8655429
+ae7e4678d026a9ce76684f6bcc72e2f6b71b4751610ca1016b65b728ce6c3d2f
+e475f36a294b45e6e4c08746efb5731ea7581862201a89d3339f20d6be10a2a6
+912dc064897f854b7b66df579bf67f2eb49a64cbce2ebd9b8c9f3a7e6bb7fe2c
+ed4f64d6b7e6994f9b05f44dcda83904f063d9ee5c376d0cca2396087aa2b736
+b8d39a0c6436ab26e12e141404b5f02de6e7c6d1bc9ab4dd3bc84a86f4cef88f
+fcbd46714127797459eda1a326b0cc2c6feffc6dbee0a9dc305e3ae6e8610a0b
+2c01e5a060594ef7ec5433dee1555b7e8a74a22a713d9b7321fea4354edc929e
+87
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+dup 162 /periodcentered put
+dup 163 /multiply put
+dup 164 /asteriskmath put
+dup 167 /plusminus put
+dup 174 /circledivide put
+dup 175 /circledot put
+dup 176 /circlecopyrt put
+dup 178 /bullet put
+dup 183 /lessequal put
+dup 184 /greaterequal put
+dup 188 /approxequal put
+dup 189 /propersubset put
+dup 190 /propersuperset put
+dup 50 /element put
+dup 106 /bar put
+dup 120 /section put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+/UniqueXX 5000820 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f67052788e6703bb5ee49533870bca1f113ad8
+3750d597b842d8d96c423ba1273ddd32f3a54a912a443fcd44f7c3a6fe3956b0
+aa1e784aaec6fce08dae0c76da9d0a3eba57b98a6233d9e9f0c3f00fcc6b2c6a
+9ba23af389e6dfff4efec3de05d6276c6be417703ce508377f25960ef4ed83b4
+9b01b873f3a639ce00f356229b6477a081933fef3bb80e2b9dffa7f75567b1fa
+4d739b772f8d674e567534c6c5bbf1cf615372be20b18472f7aa58be8c216dbd
+df81cc0a86b6d8318ca68fe22c8af13b54d7576fe4ca5a7af9005ea5cc4edb79
+c0ab668e4fec4b7f5a9eb5f0e4c088cd818ecc4feb4b40ec8bd2981bf2336074
+b64c43028a76680f9cc2cedbfbb0c7f6e5f350415f5dbb091645cf23bfee1a6b
+f932a811845b35eedc5586a109b740edf00f87abdcc417e6cf729f5676fd4dab
+0e7b0d657cb0a1faf6b50bdf5b3cf9d66d859aa8321bdf4dd795c05133933b96
+db1b993875c5f66c01bbed91621038eb46608f5e3416578d103a0f200c7bf715
+553851cdbae9f12d3a75a9bdb6557c953825f071daf4707bf3b8dc6e5ccc3591
+1d1b6414dce6eba91453cbd3a26870ff5704b228ba3a4b6a9f17c76d4882e72c
+6a0b652a446dc147cec186fba572af3cd4ed7e05165692ce9cbe6063e73e0f89
+e9e148a6cc3c12f4cc21fc1d3789c576fa92a58d2fb33bd9f9776466422100d5
+2535a73966731de64f3543d43bfba9b952c58ec57ea03f625e51d94e3485213a
+6d562b3f3c72b5a4b727e2ec4f3a205fc389f3bf2251c6d8b3df79cfa3a81f6a
+454da69b1f83d16191cf9ae885c1517f47b3fcdfa38bea87a52ad1417ab85285
+608a67192cb6a05f481dc1261b8a825d45b82f0ce2366294c73c4d4df24b6890
+eb7c7df5ab3b04d0721ac9bb75e9c7889e499dbb76b4a74f7f039770ead58146
+143a5843fafa42d7ea21dae6a1a5423ffd27bf50e999a7016f1e3a35a42f0f7b
+ca82b7aab6a484ab9ccedf71eec52f18cf3121af143d551ff0b41466303315e7
+64a803b6cf453c6a0a51594e4f1beb41746e5fdc8e0c4a76f6ff8033d8962821
+3e7664e2f1ae91f393e83f4a2a80853ec3ca761b98a4016b4c9b2e56f28f1712
+4eb6dee0313a08ac7ae4ac7ccd2d61ef058a99948640f27d0087c10b8092836e
+7e49a570278121b03243934b008c7455166985eeecbb021f2ec14108f86525fd
+7a2a83369def510197b3140dc41d467d93ed31014604d93e31c164a75252630e
+5a3ef1f90ad376ec438d4baf8c4d7b75afd18399c38345ba313af9ae2a24a99a
+64cacd783729b252bb0497670f5daf00bc535c3a383197db872e362952d85bb0
+0d17ce82e0e7ba19ff5476224c30299e06d34278555a4718f797a45637796393
+41a3962ba37474866ec091343f61a0fa16cd4e37c880c466f47af6c85586f531
+d84aa2ae3579a904cb93915143151d708237a57bb4d1cc8d6adccb92b0912801
+790474711d886c7f9055b17a2e5e2ae6a9e2cc283940469ed1acaf8e2aca6a76
+62008050871cb42ac7033ab33199308cf120b7162fd33a772ec75804796fbc89
+d9fa7c0554d09c3b929f2bc59e43fb704e1a54c2204cc1d3e1bee02aab5f45ba
+5b542f3f751576e9f0b556553b395faa001bf4e597d1dfb4e3b7e57e0b865d75
+8f698761f2438dcb76fccf54043d39d8001e9b8b16f296763f6084c30572fcb7
+9abafe820854f06438bbb5be8e1fe3dd1d33fe744ceaf2f3eb7bfc34bef4c269
+0c312d5ffed2e0cf099c773bd01d3922934cca7facd94b7ca125e5d3fce7eb12
+7cc4ab47cfc36a44b30b9aef24fb712d041e9bb87c7cdc9bdc3c709c55caccef
+48e91d54cd4622fd12cdc34b20c41570c5f6c662c1538942b5074304715b1443
+8cdb63e991a14f07d647e9156b03636c87bfbe802e7893e3773aa775cf12b6d4
+8d68ed17d8c3f476846e8912b21eab966fbd5f076c57cdda05ad9cca30766e03
+37d7dcc75c1b85856b3da579e7e657dcbf971680fe6dff189216d361aaa048ab
+ae98967387d59d35fe6c922ffd4ad183b59d9d47b7e8904ffef9598382b684a4
+17872f33cc102950bed44830246815c7f04aceb20ae584888033ea1c16b9716d
+4d829893b81a26d365620c2e2c37289e8a674e4b29e173ab04ee10bc96161c3c
+3dc057d36bf58742910062aa7215146228f8bb3cbeb80f584152dca2d2bd3d61
+6cdf5c6922e685e3b7ae660da5b2a308edbc8b65d4901c015990f606bc46aecd
+16f4cf7bde89083740ab6ab24d0afefc242d8c01e6571fec3c0c0b6f2f018814
+362a07470f5fe591106d8942f1f0b441a0db0313d55b2b4ff0b3f0bbbb462edb
+52b612b400b615b73419d59faee751ee9e20d43c6d6b36e7a9a9e65901bb62ac
+1f35fa814707808114aee24ae1cec2c72bad8b91e9ef7cec3cca196a74c446b0
+3c8fd42615f0886c4df9a19c70c9008babc4b03b541cd3287242f3bbec357dbd
+b1655afe3ce41f2dbc1dd7f88d00c15f6f7fee4a1bcb50c574ec040fab64582c
+686fd613c2115c5253bd98556dfd919171b06270b0bd909c8ad3a8d0a929e9c3
+f100e8d5045d3aa368175c448f7d86e6d52cd50716ea23bcc3b9c1d368e5aac4
+f463f331efbc5cb70ef04bc69668efdacdade0d1a5c3430f2e795fda1f534a8f
+6b41f9cb776bd673f72e9972179ccc4b3649661ef71a55f3770d5e4d283f2ad8
+33e054e4201a3e6ff4b6e07412b1767ec77388ec4ff28f83ad539f2d827c4b8b
+48d51075a8f9b8434a5fdb4ad299c1c5ae13de57e52ec29ffeb1fe7457b9e52d
+9d719c275aef42c94302fbf8f3fef43ea9fabc7a311f38447f3b4c8e1b0b5f62
+ed9e112a2cca57f2f1bf02935494dd81dc276f48287e8fc756c6fde8772d5fba
+de82f1423c6c5f1bdd2d5801f5d424a2f9d461d06c13e58f0bd3b53ca7320947
+30e46a17842a9304d17c6ec6f9cb9545873fd5ac92dbea95479a93759b70e6c4
+6ef47e857a15b9a1461c0662121c052498dd0948452117c26bd82041b2c54034
+aca0b703ddce779da9f907c19123c441cafd2ba945fc8305a2d94ca459d1346c
+d4dc41acefc9320a48377c4233959f0d10ae2ac076dfb10745f5ab65ebeca642
+de79438b2db4e93852bbfca208a5f79adac5543680a068d83b464b17e2118de4
+f0a6b5ad2196ab43cf2ddf25c9c10669886da63122e2a795173dcb6de31a2591
+b7e680938e50fd18c5eea9530f3839c0755e1a09148e5a2daf6fd0b7f7257092
+dfa1cbab4a515e883b8c76c5ec474233cca21860ce3277fbeab19318617b1fba
+67b271340bdee88ce25630797d8d7e6548ccc60ceb7f2533f3e0f98d758e5d7d
+f8a273f3bdc231e4ef6b6ac35f59b9e0e86b7e76f8b33fd30b0bdf1b1c917b37
+44a4f0f3e28bced0c4252e200e8b2d53f7ed9cfb01790ec2988cda60d6b41032
+71da66f0881b06dca54251b9399cecf0fe9d76e8bef4bd8a99f0c5d2ab461a47
+5d56c9baf17f2b00c8063ae622584f0ddf4dd3e294654c4e6cb232eee97b3db8
+1b86ea57df83c32f332fdccedfba2565488e7ec5797faf4b1c525c07d85da5d3
+49241b1450cc25167ba779fa60f80baf0f86cb766941a7db4238eb58c91c7000
+e2ec7636dea7defddf8ac8d858d40201efe45b61acb5844178a46a314a6b68ce
+b7b07db397f9993f9f200a503b8c66ef0a5f2941cab15a2d143f60d92302d616
+66cb7a4788de7bab837d5b38095c1d51c0192948d8a003a10e023b881725e30d
+fa7501f808aea70190bf7e2b608fae5f0a0e58b11f41cbae4baadf13167ef349
+14ad5f46ce432a18580a0100f198c3e36f327a6b8545719624cb1ded5072f183
+7112b17ab1934117e837fd18eed15d7fa06a60be35f31e64ec2cdb7d829a1d6c
+ec00fd7ef6f724b959ad
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMCSC10
+%!PS-AdobeFont-1.1: CMCSC10 1.0
+%%CreationDate: 1991 Aug 18 17:46:49
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMCSC10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMCSC10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 167 /Sigma put
+dup 174 /arrowup put
+dup 175 /arrowdown put
+dup 176 /quotesingle put
+dup 178 /questiondown put
+dup 183 /caron put
+dup 184 /breve put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 45 /hyphen put
+dup 67 /C put
+dup 70 /F put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+readonly def
+/FontBBox{14 -250 1077 750}readonly def
+/UniqueXX 5000772 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd800bcb325468c79ffacb9cd3037a112066957
+7889d67fff57549064b985d67ede2fb03272083723541051ebe936eff01a4ab3
+cd845d565dfdf25d9ddd2792db17f52f894bea484480f06c832140fdd6c3af0e
+fef0584c6b78b5e2bbb9a752f10581fd1c48cb498a822afb18cddebba34695b9
+b418010368fdfb7bf758d50f3af03360b81c776325c33c9c81130b1e1be840cf
+68c71ffd091dccc0df7b507fe8953dc3836af0da08ff9ff3e9cf7288d9eb8baf
+ffac546a0fd987ae8e0bcf7b759f4408e13524f478de5896d816cb0ad2904271
+cbec82a5ca50f0598502b434ecd94531b4a65181b5b3afcb650904b15157737a
+a4386f1a7f1252caf2adbd5c8162bf3b065c01ca471d520c884ebbe1b29f9549
+134e285dea2fe158c15a08a744cdda00bb6c62158262e24702803d9e1dc1d3a3
+1383085631154b077fc20488ee3aa03f47ed2766644330b94133f2f9389b99b8
+96d3707d1c5bb227fd3bbdf3a6ff572bf07164107c7a1c0710a5c7cfb67282f9
+c238100fa138b75c553d7cbef17e2292a320d3d86a6210e6e3a1e590b10dac6e
+177094d5dd163db623d7b344478752f6f3d7d5b3fa92e6bc72dc6fc343d2f946
+9153e3d14c5a6d6b1d9ca52947b789cb4cf6196a02973aff0b097333f8d615c0
+a1726ab7e31c378eab77150faa28cce535afe3ae5798402ca51cbd18dedc2c43
+5281d0781351df30f4d11761579676449ae4a47a10f677cdd31ca9120fc2606a
+9025d3cc09d58856a9bbfb17669f706ff8c7efe37a3656c9b20609cccb58b309
+0595ca5666833f2bbf884aac1cd632fce69b4e0ea2e0a25b9c4d471f0e322e09
+4cefda321359fdbe0a82656d3ecaeb68b7e0c7e733d85066ed7474c22b67169a
+1bf1bdf7dfd0ce0aaeef78ee393ce6ea65edc1fdcdf3f744f714005d8221a156
+4e70fde6d12bec1c1ea1ee8e5aa5ba985fc512dc0e7f801e2c6a32a2b5bfc1f2
+8d20201f4a3bacd017341faf41c1a07341a4c1168f9f10ff3408e8d4d48fd0b4
+0780d6dd207b900994132d22d97c5634e4ab15c83468b6fcbbaa15cee31ebce9
+0861d214014cb5ba21efa0ce5e4d78b2ea4f9593ff46416f03dfa2ff82e47743
+0fb493d8719493bc1084dfc86ffb69c8d9f9bfba912b156feeb5001046e86ff5
+ba319dceeed05ebb7ff54181a95caf3dfce00a27d1bb9ea11254d05fa690374d
+57e26dc2e4874a9a94839f0ba10f7c85bad1e9f57b786219a7bb8f99d5b6fc82
+8c4d3aa01d4fe1f119a1086d27781b30ca1d53ad2256d76d7a70e91676048ea7
+7a0fb82186b14b18f5a5e14b6ffbb06b5eff74cd97faeb9fbeceed12db704333
+51141cbdf4c46fbb3c5f99c3183a1329515caf2e9b7fd1f8632c48c120319972
+a637e87b8bd51aa97675b4c2f630de8ddea2aae49958c68eb00e60474bb18760
+aa68864b7080a3d2ddcdecc4c5ea02dd2ab4d19a05569099584122d685783281
+16cfbf11626669cab402f9be178fbe090a021930efd4a0bc7026cae9e284fcb5
+b8235c3f5c5d044c9b27fceabb3f836c481fde35760a03e9e59d208c50dc2640
+7a43e0f6f2cfebbfb3180ba558b5db098b5e58a12bf9a3f2455ddce70de6717e
+cca04379f9a10fac0856eae9c3097f5e6fd7a1944be169f85217454e932c5003
+768ef3853f579d140824d7c783086b1a3a47a5fe910bcc5fc958d823903cbb1b
+0fa8492554f63f40fc117b05b5afc7dedee23d1e19f6e16f85d0dabb9adc326f
+b42afbb6c0ae463c5b4757fcf465ee87f5d8ebea6d5f340ee9cb268811f74d11
+a7b805943d91069e76a6ca9d583621b15258a3e0e4d9044a78f580a31732cee1
+88a4f17c6b492f08c334619a9a32d814c67868d6b7769d174ae0a1c97b992f53
+061d41e36bae177900fce96b6242014c7e888a6dfb28c6388f1480c33b5be705
+abb8fba0f09e24f49f15f7c1716777715fa117722e61219cdba29ebd3c894211
+bcc09f50ef362a33abab72b7c905a7e95d69f1aca8dcbebb73a5259130898723
+97872c83bb5e21eba58b6fa214cbac28ca8b2ee6ea548e044dfe3670c2ea9aca
+2d7ceddb3725381b1d58ce1d1a75ec34bb04afdeadfd6495e388cc347f160295
+bd995b92c033b5e53b63f1b077c2b8d2a243b070c97bcbf90e52e304e85f7de8
+6ab3cae66de8084b1ea4b9fd498b1b39eb14a1d92863c10213f6310190028ada
+c5bc60919603632d8130fc5f0bb996b29197ad64b60de027f80e31cbbc2fb74a
+b8896b2d49ce31de6c4dadf5033fe414f2cdad66ba661c5372e2412333efaeaa
+1f7d2f99f36a227fbaad7f44e2ca75dea38c0aab01a1aac8a734d97fb96e8cca
+c7667d299f54f4f68d7637f1ccca46ac6cf89e040e8ee9a35eefe000bba0d558
+e70790d9434f8d4fef0c12cca572c7dd229ddc6e03f64379b82b3e0efb2391e3
+dd54d4acdc3f4ab5d2a2b6b17c4029de89f5e378408e1fe69880bdbce46b0361
+df60be9cbfe23a29ae36185fad432a84288562b219d14cab0c05971c8bd4bad6
+5e95e05928d8b48ff6e618af333141ab0a3ed63649e2fb043e49c37f56b750c3
+271903122d759af1ea0efdeb75bfe3b88cb7d3d8c8915f27bf832de02d5764c3
+f6cd4cafc434c9904c24a3cb25f2433d665bbc855dc63c1b9d99d6ef3c462859
+1f4339a7ade6873b94202c47375b67a431d0d5500bb7bdc8478d15047a8b74bc
+4876227b244ba6e43cab7f4afa1b299cad1cd856fd6d441d592e0dda09c72ea4
+144ef5132bdedbb5281faf6e6f7fbb4ac3cda363bb379c9a8a93182bf1d40441
+d5c21e1b9676f173e6227c6f9e99a037d58ebe97691ed180ddfe6768ebda9611
+00d0a5f7660abca0093c8e765786e7a5558b2ebc4b1a9ef28ae28fdf9260fbe8
+ee5b0de0d491e4fe8b92e5c7cdb9aea37dd6c9c4f639329aca34568f60da7e4b
+2b684f278166bcba5c9a93749b076aad6264a56e75fb062753d538a9f603f65c
+b53765c43ee4849355d53a80cb1cf747d72c69773720d2f9841224c62dac5230
+f8491f50a1185143e98b8906f7f4e36795f4ff45cbbc0abf5c8ac15f162d9ecc
+3d31d240b2c541af52d43ed17f37004ee36790b95520288d9e6b235fd4387bee
+510e987cc9a7868e7a1bfbc61308a9e956bdd5725192134654f18e9677950314
+0dd49535bd68a187a5e88664dd61718de77b6515cc26fb3955bfe58d7ca642bf
+1f09b3997563be8b496648b7a96a264cf03d8b753b89e1610397c886f143d737
+173b29dabf87fe54dba6a757ba3a7b6434388bc3e9e9cb2775470fd6645c4ba2
+adc81c6e5160b598b04babd398da469bee1320f3d917c34d3a1d571bc610ebaa
+f804c3347ea6e6f076ec1a06ec710a4ce3fe5d30ab01d959a4a16c46cbab96fc
+895be2059af902f10acdec9ecd89b0f75216663fb32d9f212d2d472c412c281f
+3dd20f36f06e834756e5fb1e4d9f6d20e5df02bb8fd9ef22a2a2ddf229cad2b1
+cb16b8c246b4c2f5c679be483d39c7965bd54e4661f5a8eb06168cbc0a25a729
+96ce345ae180f417e771a2862729cbe34d78e85b915689e4456c184985a3ff24
+e6d20927f5cc42ac0da90e1c227e7edb60022250862f01491d7cb90d60b52814
+0612f5cd6208e00c3f06e8999beb71ac448e5264579cc578687c2cf45cd90898
+6e74ae2eb0d88fac1d171ef2087735e3baef866a4bb9ec5051ef81f19f40af97
+0d8fff6b5ae5bd5209787a8121d80e313b8a0b31e0801157e8334356ec117348
+0dfab2cb248fe077bab0f8034233de9e4bb3ff2f8b03e276a05a880640736910
+0ac15a355b3f44f3383072b333ee01670d55c02ffc66685f9d76bc8f557b76f2
+af04357dbf1296636bf2bc7c22874860f09762978fcb82e2c9c0aa8006cda7e0
+3e176ba3572c97c282df395174c9e92a6aa8776752e99b0e673b3e68e38ca74c
+6308b06d45e378e4e20220da5ad33d6549f6658d802d1f90c537b8dc37c3b269
+1f2c59cf8024d6f4c82de9cfb47cb6ca2c57c021f3db06583c3a589b2a0c8c67
+35aee40d3105abd207b3b4cb392d9c1f10421ff2c5c11a55c540f1ea41e6fb07
+c1e24dc37e252616ac05ee37391139f7ca2c4c9157390ea4e0dbb25749f01608
+a4aa7496b33b1fe46d27e4b5b7986409800295c0915d9f9be605f34cc5f78bf6
+08e2beff079275de4be080080f251b9fbef7fe5d10307d8c1dd0db7b46cfe2e2
+496fe4c7000204dfb27a93cba86cfdd0395e3357051d03d4afce2ddecba98ddb
+32aaa0c342791cbc6e0dc66d85d54f126ef10ed87a3bc0225bad107cb125298f
+8443c9a13762f954657e7fb6a5dfac6d6245b20cfce77bef0a9aaf8cade545cb
+336a3a0eb63836c80d897f2334b3ab5d649ee96188105c890cc7c4f4e50e1142
+9c2b731dfcdd5413ceedade952e2c8dfa32ae698741aa28ac85bd80d91960d7e
+c184f583b6e826b7b8a83419cc68836e318e425115fb1dbc764830c70e7c4cef
+478bf718c3492277169ef5d8a17c69fff10d87ecb0ec6a413e8542587f306702
+f494a87a3f29a5200acfdf2d1a882ae95cc31283c99f595d37145e3cad2bf108
+180cfe537ddd3bba1b11e24288f5a9f3a1f223d9c1dcd706cd64f9bd6736f35c
+cee701ce0b1c187e8edba7bff882ae4e2402690823131e91e1fa16c820a5bcf2
+82ad4f439ff81af62853b199d2e99bbe4f0f94ffcd9eee78e9491cd61391021a
+df2f2712e675567fb58a24d92523fa50491ac7ccc8be3b59634ebbbe3e486d49
+6bf9c2aed1a131d1b55c9157b6bfdc01f184e6785975649791537c15c1620973
+d081660e21f27127d3e50f6111f6a93e82a6866f3c23298d63aa53c8c7937e50
+1fa2dbacc2455bfd42a28d8cdb881f49f7b92a85d4f006948a13e919e80220c6
+f8247e950dedf073514ca6710e2fa2b3584e2c1ac6016834a36debfa470dc526
+123ea8e8564cbed5745e91f50b3e73f472699a353f15eaabe924e7073ce48b1e
+fdf0a304b3a82ab014ca503a3b3c6f8bfdc6d388347109de3d755fa2aef8d6ff
+1af79a379c457e2648efde10492011e54761253dae514c242da15badc77b2de3
+1164c6b45e811bde78701ea51dce459ca3bbf70b01868232edce26cc263fae72
+bb24fb31775ca95271c209bfd7e34ff3752163b26d083074f2be6bc142787612
+e3fcdcd8ba0ba57eeb8390b2bf5ad3ce5423049815dd5a10e448d380baed08e9
+b6159f405c2b891922e5a7497bd8592a5c8c90277f53df1612cae0ef340834ed
+20a5797d37a17aed241c08bf3d135f7b0214a0586dd855529943de41c7c70c68
+b2c7ca06f8c02107a3aa96ed2b8407599c8c9a791dfa4179d3cc9eb98f4ae480
+931801f599e293c4b377508af1c77d401501af39481bb8c9d56955d03f6b515b
+e5b1235ef75a0f399fce570ca3a300e6bbd427646f95d7270c17242618b972f3
+a57c53cb5739eef41fdfa19ccf7f54c93efead97ddbf9e5ff8c487ced42ef8d9
+4cf711001174d4ae4086114f20ae8c3c028f0428ec06320163ebc11794f0266f
+78151fafd9fc9d92be58a0c0e766cda8112d5a31ddd64647a815eca1ea2ae252
+70d0cc14521c015b7866d8e8c88fc3f41c147ba27912e024685a3baf7cded172
+f8421d07e2f09e002d9cf829a1665e3b24dad8721b646f60b2a692c3cc171189
+f42cdd9ee232e845645b42acd21c17e6885dd4e22c2bfa7294e63258f9c9f550
+f61d00db4c08c8b4097b77b5e383fc6c0d87f948b44cd38d0870dfe6f67f6972
+b9b1d26a11dd0d3d749b6c0a6feb7c16e2266ec9997e4f3278e17875a4f14438
+06431c1bb9c02ff6cc4e694a198ef8535c14c3e691e18493b22e2c00bd2783e4
+98756aecdf82596e0736e69a223f36d09cb20ce018f4050016f08660ab08bf47
+7856bf384f2627c4f26f99dc1a1121a8f22949b26b2784f57e5ad9086d098e23
+02cae8026219e3047faf3027c6c62d12b9ee58df5e742fdcd9365183aadbfdaf
+00591aeb8cc741cd5100030c2a31bf822f1a8b48b7e96c8b2943868dfbadb6a7
+a1a2fe7f8258382cc607f2b582f1c86540800dd13c6bf96e022193cbd69096f2
+ae084dcf06da5dd971243bcbaeedb01a8cdc9a7aea26f535ffa48be588c76d0d
+b0159954932584c62f5ef1c3e4831a3621ea3bcfc9cdbeb1567179e3c26902d3
+9b330166f711ef462593af913dd97dd59d0e96c7e7e1942835ddd0326cada5ad
+81449c69a86394b0ee600980d10d97d2babaaad41272c18c8193b86bb5e8977e
+4bc49b15c10c4e37d7a052d3de54aebc4d5b3f161cd590bbd113dab59e17352a
+79020c0887a964dda94fbd9352b3047e8fa67c4a3d4bb0f39a7d12753311a7e6
+ea7a563de61a467fca47697e2ab54e59405b287de2779e095396983dbbf6b63a
+dc958c5c4aa9542850b0de1e088b4722b9313d46a56200690e9f75a61dc86c6f
+d667b40e72b438a8265dd4cce9a0ec58058b5a305a786a989155a7f9d6ff393c
+bb95e5607f56510e285e0ee7c621431cd72858f2a77809c069a56d1197692c08
+4df0597ded0992b83d9424de366432ec3e64e637c27c5b98029b7278d7247623
+5ea599984dd33b7ef702a1d0679b92e4c83497265d11dd600051ea5ba6fde686
+5cf02d3f6e070cf3c57d23af90a1f95f2c84e2018a1847b64bf7438e01cd6308
+262d670e227be8ed905eeb8cbbddc9e2d0b03709f06504fc3a4b6d1fed184ab7
+7db80a0825e53122091211df72f271aa4a8e6389295fe71cb9f1fefbe1e81348
+d83374d0565f2a9c5dbc599936ac9ca12b4a2fe607280047297740a6c42bfc2d
+bd6fe9b043d5300b275ada04fede9607e092c2ce9af1696b8cb995b050cec629
+51ce98774547c308e7796ad069c0d4d452555d03afbf651f16fdfc9b47455b99
+96b2cf7c045797584e2a54247d5a322c6ae5f86e880c8f31a3f93a548ab03eee
+0a5a6ee359cc3d0defa93c3e91e8096413e4b373923e88e808f2ca1907086816
+2fa5c5201f4099259de86a74d386def6c6588954d0129bc8c9e90c7f8e4f8031
+f75b6da4a460a40ca04070dfe87779d1b592b3f0a1a0dc2bfd3bcc0de23bf8f7
+8ee6c1e07e376297d0dcce3bcb57c888a34d19dad9708bdd0ffc2d1e4c3300a6
+55fd5498e56c9e941f172966bc3249c0e87db8d75f2af1b5bee4b5457abbd064
+09e66b453868a90ec43ad59b3ce5b33ebdc0720d8d3aa70bc2c81b8e606ad941
+c01508e1a343abd2a3868263e53e44092ea562cad9cc26252717666594cf1386
+15781d209ebc96d98a105dcfebb0d70bc8d53da0a8cf9b094c232f772fe0a625
+aad461f89246acdf2dc8954b664585381c9d08c4a4d6396b72ab7e8f92d34c32
+0704a48837adec48376e4e61b0f0a693807deb9c6483336b0e696003e1f47597
+b150e60f50c5c65ae9023c3f1551b44d4ff51fe133daf90aabac419473776d43
+1909c58e988a0898908bc98aeae1d3c6298d98be842ba8f246a5b7eaf58b0d87
+52160278fe5291b1d5b7b9e6e640fce0620e1fe581a529fb9ce1aa9997666af0
+706921545f8408b4c5a371e8563c8f6d2833ad6386b43ce1c0f150743d2f578e
+7aca1bcc54e34a79116d19e53b4d74808fb1e7b2a927a20a8addca0c9376566d
+5c11dafbfc403723b38092860492cabba0aceb282c8570ec08e35c9a0a69d912
+78ab5a8acc7d0224ef50e25f652d0df66d633f66710f85c6581ff35bd8ee4f7d
+5820ef0eb0f433efe28ff273b771bda4a02112002cd3eed8b77d2cad394cdf20
+8c9ee0e247eceff2e8ddc7ca0b6731a711471177a6d6ed7e40e44984dc280dab
+5e249347f50791868001dd30f34e529a9f43255d89c1406be88dc830599567b1
+5ba97fdf5d26e61789f835e129cf0021c61455df3ed2bef99abcd2e6c6a71834
+c4945467507f77398ac81f213adb5732b83c0971957308857f62f6cb1f21f09f
+69eff931f3726d93f27778e4dd909a4e40929d4589a6bed525a6d4a6a1856670
+fa0e42f26af75464e5509d61830a3f5ecf4b1035e73cd6f61372b183e28e043d
+96ea67f0f2823c2e59754a7f8e98173271113bdb1267734e926b092371563850
+ef9fdbf72f38a98e51e7762c60334dc2a06a014a52cf9b28229a024931336b36
+320ad9cc0bae2ec8875fbbc9e2e7cc2e1d06b78af4058d1c6f962a289cfed41e
+cd12243dacf493230c5f105f586c00b8f82024d9dd9db5b163a67cca71c3c04e
+86ea12c1fde7026c31e2c7e3f52612cbb820a778f560a88ffef7fb4ef104368f
+4ee2473b657143871fa736d0bdaa0d4237a51facdad273dc6d6a329eecafbf11
+76238740704126f3c17fcbcfab9e4b46bc7b8793ebd29792b80e2d1c8ed74ca6
+8789b0401ae7b95937d76f5777d2d16316bc9226855d7cedfe87a0d41f5b2d4f
+562d599e20ca02d6b5dfa92f4b4a1ff5a18aae38a372ac07961557a61890982c
+8482221c62458523d8dfaf198af834b2205cab4e57e152611af039d89b2c4ef9
+2e038580cab4e1cc68adbc286b7e66b854f21f11709d2e6b13c58dc2f9c47925
+2d9b4f8ec5cd714e7cc078456116ffc1b1662a1c20b6ef2b8f5d6fbd4d9b6f2b
+122cf3cc1a231415c711e9fd52a75c4c265750ed7e35fa0e85fe1acc3c1b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 167 /Sigma put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 183 /caron put
+dup 184 /breve put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 34 /quotedblright put
+dup 37 /percent put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 61 /equal put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /quotedblleft put
+dup 93 /bracketright put
+dup 95 /dotaccent put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 124 /emdash put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+/UniqueXX 5000793 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306457c7e62c1d269f306bd3402e266de
+fc3b5e7d8a8d2f5bf0fe6ddd40d07391df4fad4a6018dce29a2b8f692b29f202
+3a7c0e66de8ed85c14f1f8492167357f51a7e84cc5d92e0fee4d81cf7fbc8de5
+2d2e7bb57142033993f9c08c315abade8dbc4a732e84e142d3bee51557910e12
+cd8aa37c459a5e6b7f5269f59078aba3be4641a11ac48d0b625c8325b38ec08e
+4c9e5e7fed976a5650d99d82114f449b9ca14c4ec957702295a39a93ef93f618
+99b8ea06b092c3c1e503e6e436e0a9fa22576c8930ab3dc8c20f5d82b69cddf8
+ff4dacfa9c54bed5a3aa3ea5b129fe96be632843b9b6bc91b615581a985db56b
+1e01ca60ee69ca92cf5c0882ece62edad3e106d835348822400f0b66af658f2a
+e56ed08f8b0010571807009b73ab12a8cf14ca6c71f03c2a48c500f9d62266af
+154a6375ff600d9bac3f05ce34142d6867a79581c533176bb2f3117336671e2e
+44638a97167e2ea9644e31ea16c2ad2990ea33c54001e0c8156e6de8ab6a4d40
+a7137ba275f39589fea2e2db8256adc103d6f9cc038037a47e8fd469c5f98a5e
+3c15bd4ace40d340018b1cff7d1ed8abb0ac57b5b5a2c20a51957b96c453edb7
+dae5affd91a46d938fe0a13363001d844ded4323f1ee6d30012aea19b024a552
+315505535c85dc26bad31e09c50e6512802976d298c4e90d0044c362e6bf3ab3
+62a454ee93de25ce54411090c29e9d75c80ce26a84404bd9de3aee0e3f921ac5
+87f907572b8354a5c3165eea7e8b2ba4e333802132f760b41a900c698eb3d273
+8bea0aaf7aae96a558f08b61aec7c7d65b2889bb7b99800cffee5ba19ac90fce
+11437be1ddfcf0bca5670b543b9644a71c8726d0c1005abdb96f6e0cf7caaa31
+95017ca81519151c2c0b04f81e717c0691b63a76e9b25329ce2625b711cb7bf9
+9d23ec2bb5ec8aefb8c1a3b422ad617b3da4d49685fd44cc21a1fe5e1541163a
+b3e1594601d63c7e98801d7746474377ce93f81404f3570afbd5dbfe77578605
+917ab96963987e6efc2d3f99fa56ecae6422579852567f90cc90e4ef6d6f71d1
+858270205477e221018a375ca83c572b3f972c5181d18643cecb04909d84cf76
+7174b3c0c8ec69bf1e9fdfbc0fc7ed97ec67d878ea4ddac8caa522fdc6932df7
+21b81af837ab56b547d4799241310d6692918fcf8a46189a78d6638aad7cb446
+2d8774ec73d184076595c94c0b4a8233cd34f2d92f6ff94f941dfd589def2ce7
+90d5cb2159b953338c7384cb68c11779120a68bfa20b993d8c0313987eb96a2e
+aa2c11cfd838e6aa48a89e6ddef3fae1a1b078be9787140270556a96e2725a8c
+f1ad46fb52938900730154aec60f544c3d4b4e3ae36a29b707853221f9fc218b
+2f527b97f773dd43a549d2cfa221d75c0663d796c562341d950ee0663047b0c4
+cc2dd64bdf04fc46958cd50f4b6e922f609d4bd19b51bf81d9d23acf907bfc1f
+362beed8b6d547d04c7b02c129ee44a8b5e6d2139cb662989e1aef41c1ba3cce
+93398d15717dd541df07668c92881f4710fbc72e4bdb87e676823f5b4a07ab39
+10ba3eccbdeebdc39e2b05e0ebf8366a2db8698169b35dc9b955be8ab67bdcfb
+4952f1f542f3201d2a49483821b4ec1661a8d1c36b7a217c80c87f36949fbd9b
+e98601e6a6d3499dbc3033b9c3a704e6dbaaa701141598fc35541cdedd6a7910
+51681eb04247ea0f800b0887210297f79e905c55dc4e3936bb6907872d6f5319
+a3d6440478573e158e9150b94898c64820649182b4a17ee073c68ab449cca6e8
+459387521cea49ea484c53bdd8eb2dccd7b18b480babbbcdbaf995bd078b9643
+e43a90fa2bfd75608f95223c324189edb38d8be5f87bcb6631d3ce13765ebbc9
+854a6ff2125f51e07c64c4367fbbcf5186d9661b247f49979e2086c054407b87
+0828e5d7f6b92c4521dfd979cd0a9d9c23b2f79252328a95d3b3b137fcb91b69
+436480b999219fb9f41e423df20703a8d6f4d5c8b3f4160767909db2367eb355
+f30864def5869f5ff9cb6bec0c24b7a1d31c47b0903054e15369770d9e88b4a1
+4ddc22922c21f139659833837e663947895400da94d4358cb1fbe462e14787d5
+53ce658c6fdf3af9f6d35e4b153573f7c9b7a89885dc0ce7e03317f820fbe9bd
+962d8599d51dbc73960b35fa23f3def26ac4f518fa177bb12fe49fb8ac82f334
+8a5a347e0b72f58acd0813ee308ac29cad1c64ace928d140c84802f90066dbf4
+254052641b5906cbaab58e2b631816dd8b9a88897da3b6b881db49c5eb8d4622
+43461bb6758adebb551114d9a85c76f9bb9edf78251fa2462a14a1d0f5ae1bea
+97194db98669c92de6fff8c1e159847257ccc491757e9408b6dfa5fd2c711585
+a1ad35a348451c9fb7fe92092c82e0b5aadebbcde601eccc9101c093e064cd1a
+6cbd28e800219b8b39f7cafee8710eaf315579a85cf598bedcd1d77996067dab
+c097e1db4ae3e754f71ab628f56be4c0a48bd6e8611c39eb91166245a8e40bd5
+0485ee0cc8aaaea224b10863f634161592815a1689a891d7f179a814db3edaf5
+e1bb471640e8a58becb50619156ff9d6ac69d56b5c1a4c22b1b507608fc3e647
+ae43d8401689655827cb6d03bf5ec2a9b785a138cae2d347d306bfe89671d6f5
+606d60460bf6ce588f87b2abc37f503c98651fbfd3d300cc780631e360cbec31
+de91613076cfbd804715a45d9af8fefdf09bb2fcbea4e6e3e77dcc23876540ca
+e8f81f208155da6ba34a167200ff9bffd1ee455586eeefcf84e6fd0784cd983b
+6ac6636c713072a9efd03251edb2be349f9463f1d723886dda73ebc9178917ef
+d0c20b133f196489f83930a18a819d63922dc4a00c19ef1107fa03cf348b5f56
+8f819d4084033c5eba4e53f83303b6d0a7051d121e1c81e0160196573fc86378
+046aa2086c50a91cce1881dbf6786f15aba6c86514898cc387c2b16635b65bc3
+d3423964e358b9722bdef9b128b519d9d12bd7c9910188ae525bc1fc26549e94
+7573d7561f50eaf7f61e231b48dff6cd8bcc0d37f4eca9fe0a7207163e88225b
+1c71f8ccdda3b9b13d15d400becf7306318c9f817fdabdaa30b941ff0fe8fdbc
+76d6b96eed0514f0b621989631ac6da7a8c18a794874200e50fa396cfcce27cc
+623b43eb770752cc55a8090d0d1c04d9d754334cfaf4e565e820b2b175b27470
+debd198308be31d52ca455ddd3506f605b92cb14113bb1e87e5cf7d6c2d88dfb
+0980370cbb9000ff586a2e537a54c6964875083e0d1a6f53a23f87ab4caf9241
+2fd8a102ec874f8e45e340b13aafb08c46ddb7ef6b9a41aa328badc9e3626fe1
+162ff7ae4358101da19c134b309b90ae1ff3f521c8992a9a8ee35e9e6eb9d402
+6d95804610c1ecc556b9a7a6d32a7161047ac2220e4d504431bbbcaaa741ec57
+c65f033a032df2140537daaf72431fbedcd245f1c0f32710e13c13c7818e12a6
+248fbd778fd1eb1ff26da27b645182bb70fae86a99aaa7a863322815a47b7bef
+a953d12bf2781e9d9201e0fab08dd048a92cd11dc2df98c22d60c632f67e7d1a
+9ee258211e84500dce4a4cf7dc14fcf9fa5907b261abbd0e8de78ef2a728cb86
+6f07ade6547cacd236339825561dab667f9c10c594421decca1131838b2aba95
+769a1b107c41fa1f7b523ae56412a2a22e5c9b09f0efd134ea7dc6b8b00e9f62
+2eed6cf253c67d96862c907488aa1455c467d6abe8c039a779cad8e9fc68348a
+64361e8906d2befd95f11b7874c4c435657b9cb9123811b95594d43931074031
+7c7d4bf049cff48238150545b916ea56ddb77530684cb438441bc0195294d382
+da5ad4c33bf756590cd91adf1a0eee8d943a3b967455c98edac8b7c4941335ac
+cecadd3f06788f9316f9e2f3e7e3892c7f4d71b61ecd6dedbd9d7ab9f674de73
+8ca43636c3fadc39593f41951e51a7874a45b835abb28ab33f883b84bb789296
+c56b9c223110d5a06d69e29287e67a5905b70c0eca3792a040b90b8decd13eed
+50bab092626ffb1294c6503e79f67e625bc733f7894d033a4c05596d72c2cb2a
+1eb526e13929133d4273bdb83d704bb4abcafcedea989535b118d3d68cd6c4ce
+696d2a29063d78b8c9ed45eaa96ced7c0f2324f9645ca11107aa5d469302bf66
+e75484a0cc2028a01503df6c5f627585713801da735ce6c3096018233617c8d2
+b1ce50e7b76abcc14bd539de89169e72ebaa44ec6815a18fb0fb38fd77f29c19
+8e83a59a95918e067498f4fa2e5586965343ddf59c96f4b63cbf3957b9182441
+b51aeac4d1330d8a12bf21c036e875db7ffc249e1154b0b5e37ca70b07b70da3
+2d391f677d0629605ce0ac5fefe00628ffd0ad171db2e662613d45f5f4e25a16
+f548586bd02804e6bd966aeb57ac6818cf06c847482d8f4868407ee9c80b8b6c
+77a89ba8fad56a486ed6b6325f30af7fd66200898e83a30350086467c404afd9
+ba9164dce3628c68859740e07e26e4a9aad2c2b7c2c04aa81ebd7fe7da4d78cc
+6a5dea3d26cbdd60622198f8b938096de9a56264625ac270e2e6b969726adf8e
+513b927b84242f54c1603be5dcd9fa930ab38bb85b91eb824f35277289b6c1fc
+ddab0f5d74959c0a5f02fa6b823cbc382ced2e4b9135bde760744c62ba98e205
+93d72d30270350fade30bb10ccf177deab335734312c0b96eadef40797c16f77
+fe537f7bccced0dd0e15cd7a48907a607c7412e191bc57b737aac5e073c9f79c
+d68655590efad10da101d05396232bbef56d62fa63cd3364396d06c1b5cd0d38
+de39cef8f2878965e0623a8e89e7fcf9655705bff01587be2e8104d9a7a5546c
+19732b99ebdcd7a29a81e24964c7604d3d0ecfa23289feb763593abcc44d1fc4
+aebcf041f3d083b3c7ead924c9b634f5b83bc3441e6aac5c632418e94d97c4de
+025c3b0c17f55575b9355880799865abc275d11d62b24bac0c8fd0cdc713095e
+e4d13853c94528d6b050882d357843ce693fd3e4b2e4465901c3bc09c3f9f902
+2293d24ae1d14945f4755661cb6b6deda4599f170828cb7f44457baa138d3740
+455be1d08a4d8564e37474a16a7f7c2e7236e141795670f70c46e41683407237
+52300a0fe9296cff9cc5d09b4ff0795a35e3ec4851fcf6c286d6327a0668c1c6
+8a4dbf083b7e0c22f8bb64f63dd969cb513cada1161f7dee65383fff521ae4b3
+d0e155df6d2ce9ca9b39aaf11def83da6a47fdcfa1701e2ff68629f5aef30a77
+0c9f23fde071f673501e7fef24044ba364915ad96d9fcc0fcfdb4d81fcc73778
+2d2a471690ff7eb76ddc5da5b9d8caae33f61af4dcf704de04cfcd4e1283ff0f
+d30e606818a60e74ea61bf92d78aa516b2baebca06aba77a41acb767892a3076
+b76aab3b31705a14b2a413c214d78815f5bf8d0b7f847b1aca70f2394d3f26a8
+823f919968acab6ee629aa03d5c94ce4b557c42f24f4f431bd66327442817662
+90cc688cad4e1b2ff392c600ffd68251d9403d2f1c0cb6345375511e0d5e655f
+3684f64164caa18035f5ea04e686aec7aa6efeed8917efac20474dc5b8fea64a
+eaf9d37c583c9ebd083add746fc05f21ffb1313fe5d8ca8c8f34817319f0cec2
+74b5c95eb60c382321e8b20cdf5e5af555b4e8f60761fb06973c84a6f6444d6e
+2bc8e8e6e3da5ffb75b328897064cd7d215f292081b49369d08401e0027a59d6
+9973fe6a9fb87ea073f485bff30ded5f19a8145bfe6e68cc134e444b3b7eddeb
+c7cd8a4be11f0d1f7d723104fca51d8774ddf4a8a8267f1ab36ac7a6d9501337
+4bd0c61043d208c87a7eee7deb123d82b6fad0c346889fcb1c9e16422e418103
+63fe50194c03f51853bb26b8205f00c5d392c95e3b77f2245033fc63293a2f15
+d8f7060e397c6874f280338fc02cd4c223b98fb385d4bca2f955dedc8eeaab7e
+75771ffbb2825df3b6684e24a411dc78d9327187d8b38d6a50610d694e378080
+e58b8ff8357dd97170f39c3f3bedd2c991409f0244a555d33abe39b3a95f147f
+99281d4c03c93b702a76894245b0654f4627c4421340d817fa669aa071f71cea
+63f79ccd3f02147c09432e2a3a54906b09c0a1ac42c33552c74caecabfe4c847
+e54a5f4d1c2c7396815a863ca5692653202b66330ae7e6f3f18f79ec14d052d9
+0a1b4de31ab765fe5f76b293974d3af2be78ca3278a89f2710bd8da7c5b2fe82
+797522c849594495dfe11d0d7ea3ed76987494631cd8cf92b03e056ffcba6608
+9de012d1dfc1c5bdb1904e8668d355057cfdabd5a6105ab9e0e70a5464acafe2
+85f3d9e01e198cdb54d16869f5e8ae317f380e4fb07af7dd8f0d9abc3c2782c7
+9518e3ab20f2db4787e6958b309562b4e0a1d49089cba425430e85635ba47e82
+53c4bc6803674598dda30aea2cf2532c44b8b9969a94b5689273beaab38ee88b
+5fe65f5f08c6d25404131f21905d37ccd01c2864ed7103704b749fe476085151
+209499f4c244728e91630abb82150046640b17e73e62d6326fcac8be3f380717
+e97c102bf56573a1567cb45ccc7f3fe415304b3aeaae3e4ac12f958ef6aee21b
+edd923f01d1d7546ed36287ebbf7f21eefb995ac63bab08114d08cdce82d3f2f
+42816effd02873c468e9051ceee0a1332dd2dd06b31348cc7a9e72492a1fb844
+47440dc3ad7e19cc3550734eff2d391ab051bc887c66ea274ae1988887b21d1c
+7ee946da46757a306aa4cb5a32461f4e5421194712b2c8ae28783d05c05504ce
+3a9a07e2f0b0d511eb02451a1d980e81648b5398a3ff42be5ee9d8b6179a5c55
+41cf3789905ec74cc941e572a9a17d8a49ea5d10ff21e490868c4d28ec66c4e1
+49192db74550b4dd9b187d862cdf17cc7bd7adac9ae2db2bf933fa4be1e53ee3
+ba82f7614877f02e0addce5fd5fa76ddafdf8dcf2936bbb9ee380f0304778a74
+aa9a2213e42fac7f15ef8b149344591e52d944b177ef76084c804d115de0bb82
+53314e14459b3343f5ccd2758b9d11213403e424f9c979237f8a1e18f75ea2c1
+9a6540ac86ee1e0f2011fdfb17b55db95cb59cf4392d1414f79f3ebc7ecfbbf2
+d21a1ddb89dcbffb935ccfd9acca6e5beff3a231b3664c8216755d9743868080
+e627002150c13e84e3061f5fedc2929a22e3eee364dd3f1e8785bb7399381a42
+2aa90f60f68a9cc16a34dadc133cc3193c7f2001ee97977add31f36f9ec53ab7
+340edcebed979f0aff96bad861edefd8a86d1178b072191fe8a953ba633dc33c
+7e7561949b88dc19bcec2affbf67b2fab86c359388a8d9794665ed128528a405
+96d3a6559e897c84bb49201b36a3c0a0702928f8d3e455790432231ffc4003f5
+ddae919c6192ae7675af5cae30d380ed05bcad250b06f34dfedbd0fb48685bf2
+7cb14f4d0857fd8a2f30654c000f9e948be81fa530937d1453cd7520ea7da6e3
+216b5799f97fe4a665baef119551c9593917f89edb0fb3a10dbbd6aa524994be
+9ac3a839a1fae5da0da47e5088f3c9bcb80765ef8e0b786f59141ff8754c095d
+71a2b17ccd703ccdf3b1ea95a09e1a14f38e0e6544f6181c7c5df18b1775690c
+a7e2a1804bd594437b09b9f9853aed219fa188ded5f9f81179402453fe82bb4c
+2ef2e7dd6586ec15289ef973ccd1ff23f1dfa076464fe2a381808eb3777e479f
+1248df4b6e4de9598cc94fbccc9f7fe89f643861efc0302cb4b2f66d0657a713
+2ef153a86e0cb20fb1c19f140d01d1f3cf33ce4f4bb3de57d908e4be08e242a0
+29c33927fa0966fd405c8d738fb19d0c169d72451b6e31430d9cda02a9784b5d
+b04f7590620a7ce9bccfe8a04346d17b78b80b656aba97135f0390e514cb8da4
+c2eb6c49e5c7004f33753d4eb382c9eb5ebb1739e79249336e920db2f835d514
+35929c8ce7a1b4065bc40f30bd3af6d766deaa0314b5813ed6f4ce6bd045e949
+a03c85decaebe888bed9e6d2a66bc9672b1a4c4f6ba42e984f1cc72dd6ea014d
+e4853eb96dd9c9411de360f035af058641b146eebca9f2a2bdb5386787d75dfa
+072d9cf78cad37e49f1add7f4cccb4559cbbf159b9e173631f37ec0816896c1c
+68751fa43bb29d1d230cf1c1fc87cb3cb5d0a758073b0ca5bec5c24a97bb3cb5
+c00858ff6f6d11c8b9a618992ebd8dc3eceb9021bfb0a21b78a3f691a1ae13b0
+c4b9c12c078b4f7efa307883774d5b041f7a0ff928dc3f04a4e65a7fb359f9fc
+469fff053f18b9bdc4ab8729f4cc5105fa1fe4edf90aa018f042b1ec81605d3d
+916d0c6483eeffa18639635dc7d4b5470494f9913b6b08b9aefa44f098e0de0a
+fcd3c5de627fe6cbeb9804744cfadc3fd4d87f2366cde2a9632b7978d1d606dd
+e67afe58b302ac507f201c9c8d6e59831b7344e2538eaac82f2c0c971432550f
+5c909adb685930d20fd113f3e6faf55f60975dbf0826ec3c07050ab72e23aa46
+1559bbdd89f9c2b0d723e979aa2c0f5a138fb02878b179b6cf0b2e89c5f0f38c
+8f82efba8133ec1389989ce92d368d3535672910892fcb06bf77c5d3019c98d5
+ee9a3cefd3036bb5602434c34fde88366e396afcc775ff09e3e7a1402f03831a
+e493bc9dfec76b1ad10a2fcf8d658a839abca1175c4b1b1dafb2d1052f3bbed8
+8a13ab8fc2749591875bd9d14f492ccb19c41562f1bec6b79e4f13f9924479d9
+80f370bb03a7099fa806191f0f312e80e9f8e5ca0fa40cf94ebc8b5eceb6bffa
+4ab0584789999313d0e50f15c7b1d9b502678df47987aed82ab52027a2fe70bc
+f31c08c3d5c487b837d59516025d67fd4de848065025c784e419a4873773598b
+ca89a27b043fcfa123118c33859c294d818c139d6ee6477371e0cbfa2714253d
+ed98500ccafa56f43fc5ae46b255cd6e6be6b95c1bab84b09f90f2cf082303bb
+b9824dd9590686bcb50ced1416ce83b9a6b87c40809e238e42d7909d23d06971
+13ae31216b81fce09356f8819b232e3b6bbe92bb65905e75c20206bb8352fe10
+3882a40c751b8e31f590758e2265f6714e720845e6f91b2e3d70711569482d5a
+33d8a7ac5a32e483ee122b7cef1f154f0911f2cab474efd3d39b1487a4748af3
+d45f920a35cc9230cbc4820be3fdd2a33b117e615ec883e03af33beeb34d20d3
+0609fa1f646fc1fe93c99228641408cd92590b39c0c9466b3cafd20ef4000ff7
+fe7cb3ec9d250e28f59bbf47a95e50b1ceb4d2539a8e5dd3df79aaf999048ceb
+aca2cfaf72640e704406934ccacfb2cf0a8c41ef3144d7aeebbdf2c2a459479a
+699bec67aa07521a9697636f7a055f449f7f138c35e8711cfa2e19f6649a5de4
+4c10bb7bccd3bfe14fc92a5db3b44921155416ba530d71180d2e3adb7e8232b1
+168201f8366888193149ef7e387eea66f4e1bf8410716dadeb9cafe526321418
+d325995f38ab3271cafa87ceeb49a6f736dd2e5e986b92718c6945064a3a224c
+c5f899506e3b5a597eb7524ca0d2ff86cb424d1c9143d406c68e50c61cbf6495
+e4f9e576b64539fd98702c86cd86a314e1fda676de4c69a5db18d9f28d9b1497
+fe508bfc38bbd394a4ff80f1967c067b0a5785e801b623c16f371f821ed11f53
+4f1345e399b267d0abe99934235579767d4362ac8ca3659ea3087c5aea86a183
+a8e21c0bc30dcf809e85b9e555166352a8d54532127f3e036e40515300f998ca
+b355d6f2e0e3c7df3b83765918dbe8db5c5e79ccbc28c9fc5ce6e5285dd27a4f
+7867bf05512b81f02d199952eeb8f3ac69b0018fbc01f0923517ba8df0e5fdd7
+ae6b3184f35dd7bb2ca8648dfabde5b8ab2b83189f2fa22fea6d6e976b0ef743
+d7215469357e9c7a9015a8fdcf27fcae5a25bb91df2b043d5ad02124f679a1b3
+4646fa1b4d3996cbec34597c977f4adb9c2526bd7783167d0a1a0abe379ab6a8
+c4f489ea48c40e6c4faf75aa533f1b15a8741d1dd6b13b2aef3c2991a87158db
+f271b9f868276d8568359e0399e51922ed97fd5d5f23fa90b62ae4fa30463c69
+72555aebf1eac40beac2ebd61cbc7958c560ba0a20569bbacd192f95a8e4efc2
+fdd14123ade4e47a3f9e616936bb9749bd1c089b1fee0a6a0ff5d9c2b68737a1
+20c4345383ff24a3bfcd5305e3b6cc19792a182e1681fc06f5dae470a963ab43
+c6681bdf6985f58d3c4c664e5b29d35454a0f0b1b8ea03e5e5292f2e5a58cac6
+947aab1bf71540f8c157be35e3719b8ad376c7646a2252e59e7a49df5092d304
+6d9597d2bb38e11c2f1a7024ed1014021fb9dcf5dc3fb7e54ca4269e48ab9968
+2a44bd1d0865ca49cc323fbf4aaf9a8a92ddff4edb25d85112b602bced21cd72
+4a8dff8074f3de8818d3186d522e990f75a74c078af6f95780b288c32ee191cd
+440c2aea05b047d4e196c702a75a5824ad4c8e452b76ef008d4fdb4b032b96ba
+1621e6db8527549115d5669a70d8c48a95d09f41ba17664a7ab1f031f9ad1e53
+3b9390e2427eea07135185e629ce772345179052357537f01c0860ce8a6989cb
+0b15827796b74d817f7f19abbfa4be25470a3d8f02b763b1f6f4c88d590ecb6e
+df49908e31c66352a5a99c6aa798ce0d4a68bb5a3ca9efe67ccc46a5d03c7768
+98c2cbb80ea7f4cd9dd4c14ae308db18ef19a0c5b4858099b30658995085aaf7
+0b41e022ed1cc1c9726a6b7ec868b1c5c9edfe08f6a1ca9171c4470793bb5b4b
+ed39f33ee6e12a7ca3e1094c0b0702a21a89af4cc132563c9eef73a5c76649b6
+4d5e7cdb30b2377f8c57546aa2b9446dc309b7e826284f71b2abe6314fdde5f4
+10bd45c817d786c61cb92aebce3b3ae4ef8e406f10d02c7d58e1f0d7936bff7e
+0610ce65d80d4db91aabd462b638ef56f78337f92c4abd04f33335c98b6f4299
+06cf79f4438dc4f1a4dc5de05d28476443686b4166ae988e7ae1e05fbb981091
+06ebf4b59ddef721efe9d742456e5f10032b142edc2c6375b39eb752e2f14a84
+800b511186699c437201b34af6a60e14d80957f228a128fb82ea006c49799089
+04af352a0089c0f7ff2fc26ba8c7fcc787108b08fe022a4ca44a9c786ff22511
+cef8a93d7c6e3bae7c96638bae65511b5703a8244a1be4bc18273283c84b66be
+47350a86c9ee6f2ec81aeb7cff8133944610ea86f9c5d66ce0e20ab35ae960c7
+e5f4af304ae904df7582ff897d6f1f097c8b06fadff2ab70bc59571a449abc7e
+b9d95d10bf53ea57c00eb4eb2331dbedc417b240527ccde8733b78e7596d8158
+d1411a6700014e8c7bfe57ad9b58b6f58d724fb32d1edb6833af7faa2cd0e356
+450ca9c1ab7fd8cf8bfe563399e1d7cd8a31f6033e2cf216efb8e344dff01881
+b62ada6fc337a9ab486aa73e01880272e1bd15917f910bfbab4d7bda4e2e8a45
+ce98f109cc2ab70309baed86ec3f610646691fee71d95111d834b9bc43148ae1
+03bc4b0eb3b43e3b7cdfca642ebdab61c9da2148ae34fcd817957a39329e7eb5
+7e8dad56ed14017a390bbe3c15aa5cbedf9fb8f5f30ef33d4a1e3759ebd790c1
+22add94c140274ec354e2a5e6d810764b50d57da618d1793911e74bf7bf9b547
+7c4df84e717a4d42b76ff132b8368345be68856b62994cc1177d6c29ff37b239
+2634500b506ba1d5d9e2a6478286075f398c52f1633aaeb8116f8d8c8dcbb0d8
+0224b4efd14c60178ba279f95bd47bb255768e4432008e3587261c96649d48ca
+29aea44db6331b8925b9281986cee1068363735ebd4c30aaed23a6c51944c2b2
+b071418dbee4c08d75f01a61680b892f6439382fba3b8cf3ac57deccacd7a49b
+c20d69a2262a05fd9563887acd33b652c0aaf5ef9b9c352655d2a47248f8889a
+3b933880136fce951709792956c61ad6a202c52a87757738577900080c6e534a
+7de341e179ca9d3e9f5d152b942f907bad0645eb3447fc80fe4f6a8f12e17b0c
+75c978fd9b49564081cbe04357cbaa5b2ea45edf6a51ce3e7bb882869b2529d2
+e610637adee1ec0143dfe0bef3f2bb33dee101ec3e195fc7fe5caa65dcb06eac
+469be0d1870812820b075b3c7b43d07e8a3b89e311b0311099de921befbb5de2
+eefefd02329000db7cbeeb6900eb8ed6d4037d943a0e835560b4e9b6cf925eaf
+29c851afee206c3016d509a650b7d629b114090bb801561ecb7cf4e4e77f4bcb
+b543bb1176efcb86943f3d45757e074c6fde47cd30c3b748508ad133f96333ff
+2cdfb540b4a0e080feb628c7ec7e500359aaf1b6a1a8af3c69556cb5f92e12d7
+367371ca5eac28ab68ad73f30e391d11d499e134ddc9647254595dbb19d6c364
+f1cc0da1fbb90defd7843480d82f715f9f48529854fefb75921425b8086c6c45
+29f4c212db19799b681898603d6e2d2c4757ee7a94844bccba5dd48ce391bbf5
+626977ec050edc25e9c2df4635058180a612822ee672928002b23c0cef42f336
+56e78ad0626a4e6eec7b2ea15f2a583e485d3c6249d166609042c962e499fdf4
+e927181077be74176f7780b35c9558926c0440e367c324fe34f686bc92ca4384
+a2258bd2189f58d539c94e6306a76743a624611bb6778f0075b45c54e173b2b4
+ec2e5d20d3c26d6bee9677e2749350c5f70fe8eb4d44bf4e464950b01e6a9f28
+a5cae30576a644a5eacd4e8be84123531b81b286a57c6fcae8a64f5ddfd686ef
+7fc670308ec1ff41487ddea5feaad879e9fe365596afd19957f58c3fd578a2e3
+3920604faa37e40ea02917cdad90aa94831d2560be12603ff44911b1c63ff1e1
+d6a032f9e25abf5faa1b168dd64185f7386bb98e7f98cab73e9dfcb0b74c3087
+6140ed67b3cecabda4a7097706f4500678af6e6e25654874e7a5e48cef8736e1
+f3ee016e85b496f958adde375ccb06ee69eb5ba3b86d316cab8bebd02a8f29d9
+dcab0f3838a9a70db95eb8617f44869efeceb9147471106ed987580d3d012b32
+ea42390d134cbe2552ab506ac7a2647249881796e65e8e96268eb76bf5beb7d1
+f6b1bb67f81adc9ac574dd70c9500e9dfbde597d506fddff12ba55d8804d7d70
+104ef202509105d2c226e2528ea1be77231788d7bab450d57a053a7dabca8479
+0ac4ba8cbff969d4f1a67a2695039b84d38067e847b2524d6a80c7b550f1af15
+8b7050a13690133169c122fdbc77d315d54a7c505fda92fd10c77881d79f2b5b
+5c89d7baf069bdb28a965bc8cafb068aee865453f87e4b3bbfdc334b1bdbf01d
+d43e6a93fcaa099e1aba301038a8c5a2632367c1d6def14ea70c3d934b3b25d3
+cc8778f8d8d20042d1a1a0787d7181dfccfee157e9dc679abdd3afd1804e46ef
+02e832f619ea6432bc471ea8639411054ff68bac2ace056d58035951657d93f2
+9c506a51328a8464614d3a853f08a46aa4262350e70bf0cdadd325aa392050ae
+0844aba6ebe72e55cff70c6396b9e61abceaa5fbc0807e1fe7d3ec184ce44d9c
+9fe4588967183169e11aec3e0a6debb86c6a9765c291f452535ea89f34db59bd
+a9cda15985f8c0f9d9ba88d8258b765f066e514f223ccedbf769b2d20596a051
+175a506d20b03f36548a166cdb3e493efe11531c4b8af997d0718ebac9c36643
+0881506db8c21c9e370e051bd5ea9a1bf2793a5ff1d3ed3b12a22e1b8665f777
+23e5643a84ff09b1395637488587aa8376ee7f10624391876f6db4a23f2961b6
+1850f6df436ba5bf85cc3d7e34d91976aaf4a8ada5effc65c056ed3946015483
+533dfb92d3ad634d86a4befdb496f330cd656a60fdbbf0477ea43624c1bbef62
+232629da4021bce9b64c670522c4831817627ed811e723dcad3dcd6b42778428
+8f61714ad82cc288e9b97deb564e6fbc55e92e7054c142436e777313759ab895
+a75bb976d3049c678f49c5c395c88e42c390f075ddd66c94726e38df81bdfc35
+8cecda1cce948451eacc675729d1b86adea2e1d2bd31825d44865bc3d7b95200
+7457ce641f1ba1eeba75b7680dfde6a447939c795d096af6a78acd5fa633968d
+48099bc8b1826b6387ec9813ab48de7b831c8e5504d3772cc480d801bef68950
+203bafc5d58a97f1fbeed0ffb2ca0782e32ffce76594e3e1f19dc487b647ebb6
+2a78aaf30e1c54a35a2d7e0da39860980a5f4b3490a09e52c5da5dc1c346be39
+c58d526f9e89dfbf1e175628769f17ca2003efba7510bcfd491f2529667462f6
+afcc3c218a73284c64001d16beb86a2d75e0ffecc4e9eaeadeb19636d93f8eac
+9c6515b8b35acb723a367ce178883d2d3dbdc94ac3d67fc0ea5a9eb8cf8eea33
+a7e64ed4765381448fd61b685e64809c63176342a6a0f73df7d7caf44921ae2e
+37c8925c1013b21f76e30b789a09c51f2471d6ae85f602785fc4bb157330fcb1
+9b1ec0e37151d304cdc94e67648986737e7c0c37b1632be3a8b1a9c27a871e21
+47c4ebe1fc6dcc5e56417a2101bc60e0e840a629e288af3b379f946816a342b4
+58ce6adfd41a93ae693a5e6b76734cad559f2befea077a627afac07c3c92c0ba
+6a33920eb8d463143bf5c2d05b9c6271dbfbc1cf61aedd09aea51079a41f90d6
+31c581326ef6f98449a47dbca076263d5ba0cfe65eefb29078280aea38f82932
+16e1d063c9c47729ecd14a459f41532a41723a2b919ef3c87abe61a75993091b
+22e86e018f32e1212fb5c47f4a9cb59b82048708c727b5ff0107e40a313249d5
+26d56502c6e9195e62e63abbe7aabf1ab3961f62344dad2beef2bf8cf2d5162e
+c3b4adc6cc343099c703626ca6c8524b46cdf4eb97973a9579e6fdf4efc7a369
+4734ff60c7cf9a28c18554c376b11cb1bdacdc5044d79e9eedf16c466f45501a
+1bbe5970f037e131470b34a5e73e250a39bfe8823c24863b0c1dd51adb8abc49
+edb5e7fceb66c4653ecd0eabea57f51210cdde777afab641fbe8f92c18239dbf
+000750befbdaf73748c4bed6a99705ee2de9d2c5193110bb66a398e8a6993b75
+f43f4206909c1b014121731bafd7d8bb82dfe008a3ea04988d61defc39cd12b3
+e552f179ff3d56334b76efa994c58493f0d385d646585dfe0fd49c4a06706bac
+8d312f35432c8b31ce4b98fb18512faf0b3238a68bd7722c2b73ffb5ba156e23
+23de70b92f5247ceb5d722aea3979c89cc665092b7ce366acdf23250275ea9ab
+77a7b5cd43627f2be4fd3dcc3b45054286108d7bbec62b60e758fab46b03518c
+e1dd64310ba24953f0e41b9cecae4a833861573aa7ab52fa4b87d874b7737802
+7accfdddd753f31b281ebd808e7d5494cb01696594cde4acce441d85d59f7afc
+9ae531819d8aee325c721748a7dff1bf00642e0caf0ea73fe36ce998d12e4767
+a2c3667e6c7ae478047b9b3ad4e1a4067ef7f559004f809d6e301509bcf79131
+1ee1dc223f07344e79daf671d3f0704f98cf2a2eab7299392b7646abd29848f9
+cedc93f03d6f198916671ffbbf209268541ae96f9b0600439da4caebc92064d2
+b30a4b7f90e4595cd59633cc7ca8297b8dfa98143c7bc37a70cefe989f56438b
+1214866035a19bae72e3f9607c5c11b390e04aa585717a3c5aac28cb674b4b2a
+457f88f763e71f6a9c685d24d9b1cc64559de31cbf2630dfa7f78e9d6ba809d9
+1a12c56b48363d3b7fd6589256e8b07cfdcd9f140ad60ac77f0193cb300ed8d4
+48a7aa19062e57eb16f5d49f905a5dbcb16f948c71aae00e3404e50e76163c82
+4cacc0cee88448de154b725981c6bdbef0babe552d87c6d55b318eed911eae58
+93afd88ccebda8140751c6571a5c897ae63fb52e67bec227281c3654b1b2ccf4
+d6c41bff55fc634e36d9e6d3eda27267af6e7e109ee6513e9dfd6cdcb2230aef
+1704a7a4d82b853f509e5b6425bad4bd2a63acb7a801517f3c2dfeda372b0382
+50ec38b8e78aa0a0dc5fff667d5102ed9d38e170e122b459f382d8f316b5dce7
+554a858f5d265060ae2438a8ad59ef8a122450a69c15be5b8a522ab64ac184da
+c09456ee5dda38bda0795ce060fd97a0cdac53427301266fac9d01d653c1c707
+e10813228b9f8b543c9b0026addfd20e6143b49c893a164a0a733996c6a44d40
+5474c4dd5182e5b1c2cc78f1fec7ce16bbb870d98eb1e9da45d82a0f8108b7a5
+537b9e6dd7d4ad85ecf0a46864d69e0c859705a8d39ad77fbe40ee6a5bef847d
+ec1266706443386d92c9860cc5abd73e1db474abbaaf30a2d41a3a33a75356c0
+5e36e7f1c7669810d70244bc77455ce07f2f7442568fd968ff7fe809a0e6ba9c
+b1a4f03ff352413d2f151419fdf88b77eeb1803b28da56a27541b90a6c5fac25
+83afd3a4edeee124310d4f888b87e2bfd08bfb445c9a806aff1337d19ff4deee
+a3f2b3f0845e14c0da067a530111a86bdea44c9f94ca656d73ea0de45890557f
+d8054ce5fa41e7d18f8173ed6b3b196c7a768e48ea7ca2b176be66e855305f20
+5d8bf409aec28c7031e5d48a7695785d6f217e2d430e76ed125539f788a616ea
+6f44ebb600f57f5d7d4f2e938dbd1ce6c7c6b4ceec38f62271eefc3fd153bbc7
+03e864f222c2673cea5c3c251a3bbc8d9145638f9eb90bc1fd9b3a9e867da588
+4eb48226e70a76372d4117d6c89d46d289e4e6ae96845159adc78fa033165a2f
+0c4f5168a808ae5fc6b01b61ad5303d86165add560bfe29fff002ebd7997568e
+92ade9a6484a29f6ae11e2ef9c748f30853d9e2892fa369eb5be039084a0e5cb
+6cc38f980c65be5c1104529a56531a59a57a9d843e4d004a4cbb6b790a522c6c
+b7fe345b7301f8c0da1613d542d5ef349d33b41ab7823798aa31a9e792909e90
+dc44f243a6f3d3b47a5c257e3e803461b83e7b017e435255fcb6f46ba8ec4e8b
+5b0074c876bde9acd61c71170f64342318d0c01006fe5da50b254d47c29e7448
+03e5185c4da89677911dfa65087f51cdd91dd8bed7c4730f0cba5b5afad6500f
+fd05b985b54f19693d2d5f3208f7641b82bb82b74c60df9f237412bee58af98a
+72e212e43c40f4ebac81e7480343607d184c17c15783dfe4fc89019d02716f31
+7741cee868282aca9e3f4c27cc539f353a065383b9794102c758af8795664595
+694547eb9fc6d448a69c9da1f7eea93876fdc4cb861f6094073b1fe724d4cefe
+1523c2290f8446a82af97068c9edb21ed40c777b3bcd23b7ecf0b0344ac756bf
+d3e67da4f83d0d868f632ce542ecf5eb69b8e72b35b787095abc95eea4b8cb37
+0106346ce864b093a4e969950024d826bb07b0b5a5284e5d54e9ba2083cd1aa8
+677eec949681266a1894e2f095842ead053c59227c654ce8b067cf8f2a5d709e
+2795714b614cb4ab370be731ea372552a88b973a2a93b18484cff7fd708694f6
+f1e1423f349c143d14575681b4db4273db19d8cbc6ac557015f0dd7c52c16833
+8ec39391515f65a26b6f50c40a3bb8186875faf650084f6e40754cd722181d28
+f0a9b2f0f0cbb2d2ea5ed080945c329ad84e7cb8786c31e26c2f560e90c42fa6
+fe936ede4a3d5a6cbe9ecb209f5958f5dd80fcd9fb3dd358702ff5958c05b105
+1a505d25d86bd276ef03280dbf8793cd8d00c723134682e70c1131639c45373e
+decfd9b37cd8113d23e8c364fa18c50066082979c2cf8f158c79832fb7fbeeab
+92597fe4dce4e8a5a15faebb3953cba6c3817eeea8b4eda2242c25bb4c410289
+3bec9508a10666edd827e5b382b3466ee200481ed4d9752f24b34fb2160549e2
+bb55ad18b3769756bebb69de28f11b311be9709b5d2bfad7e7e01a3efbdc72af
+5acfa0710ef3436a4a32135d21c5af38e5aaab393619dc3a1c86ee63b0ed98d1
+cc54e6401ee0e03254a397f6ae2178af4b58e74cdbff027a523650015f017c99
+0040fb11269b60de2a695037f1926f65a473937d51ec3b8dcb03bb2d88f715e2
+8f4833364973242fab4c4f61cd3c5899cf8f51989071308a6d60b46f6e360e13
+27d650b45f9522bc55ca4cfee8cc438bb33ca584a9d71162fc4e88a6f9d738cf
+aca3058cffe4f16a48a5ef46d77b491d288122cd1602e6c9b36ab8bf67e940d7
+f84d580e44813779b332ee4675a108ed4b33e286f0de51f616790b532d6ab7d1
+9d81e294c38abe166054040675ce67d62f0b9b6fa9d3a2709ebc3a1b325196b3
+6ac823c900430a045c5d1961f53c3aff56467aad686099308428481e02dd1add
+7282490633b56fd9cf00169563ccc83e3a4e86277e168a324e88428cf98e7f45
+927071e8799655dc8e1ef83e4b57bf7e9c09c42b34e34c17c4f8347166714da3
+6f2daab1888d058c159050e11550d1046c34c259e7508e0d87f0aa054edf4942
+2d269404aa3210b381cb28661b93ad69e5af5b6e0f532b918c1fb8b68a40acea
+09e26a0beba9471830aac906dc861c2b823e571b73fc62d8a5c3eb62c9308f19
+f925187218fe6bfe81106c9daffea61a82523d6c626ea30b48e0a293cdbd1c47
+c2898cc87df578b295218cbbecc2fc4fd0bee76e9b6243f2aa79e085f5fd615c
+0c87af0c2c8a1c0096a644736ab4bcf72b63c5cc4288a41bc88352c8720753c3
+9c510c77a30681c731be84763f9f9a44b80e3451db1c98bdd6e7a233afce0ac8
+ef0b4c7429533f9eb6e566bb247aca84fa5b828fc5b00154515fea77f6f0a36f
+ea683e72df2d15992207bb1cc8321167d09b884f3ddb097493fd0c035232c89a
+00ee65ae46fbcb22395c0546069ecbc55e80658f62c7c500b2518a6e0aaf915b
+dfdfe55b6eacc7691113023a0a17a606857864ad2b38c133daa671e2a0b66339
+8525df9bfeb5213d6a98fd0c9f5b12fe87169bc98c47aa51a378080248b77439
+1eb8dd6082363a68d4ec690b0b828a32b9dc74450afcfd10bdf2efe903fac7ba
+82b1909d83bda7379d86d857683e95dd0f2efcd9d122d8d2d6a8ec0b622caa23
+9821317871fb2023dbae4a72ee5fdb6b530e22da174bc075af5d9e0cf4647056
+9f1cada1e380301e65f83d3d9ebc9f1e7db1a4d6bea27fc12aec7efa8e81717f
+d4e9129814569005bf5a2921ce374810707d7651e4360fa09821950a71625f3c
+81c7b247986bf55eefbdb799d4c0d4a91721bf2b5a06a278f8cbbcebceec5a72
+3f583312c3fa1d755ae44392d94eb8f6634ac69296ad37db5c927741c0c43a42
+913f45f720305e9f1fab9e8ef2b860822bf7639585c2fe5d21a522d6fbb0bd23
+26d642211e58468622ee9d1e351c4e3eb18e6cd75fa15b4227a7152997e24999
+0498dbd5b610af145f49c5f70fbe0179d0a967112cc53269c36cec7802bbdfc2
+b9817eac10157f69c71d8e12d976bccbf11ac5a34cd46c1e51c9542977a27579
+2c267f642d8a624785e6967a65792b16725ec80bd619b5e7911961f6e7b18105
+42426c7c1a7f139cd77bcca7a95b22f4c2c7130e115da6e12a5b1ea3feb65174
+4a40182f814cd405aeddfa5396a93137f7af0f5e3b52df1114c5538fb930b4f4
+dd76a309af24a4e056763f9b479d51c4a7ba9b79727fd23ddd0588526f7ab76d
+427edce9dd226eb2b90203f6c627fbfd7bb68b66073eb202cd6905e9943d65b1
+2d27663f1e0c91ec1155d6c80e71b98bcf5ef5a71623148162b79eeb6e2c7c64
+a68b7ac1cc79c137a5e815d7863512f1470bffb85b26f0d34f63b0f215c7a56f
+e6e10af0033ae3d7283c109bd18a1dcf9413c4ea59881a4cd86c43bec58124ee
+e9c8029191209db2c417b40083323f45206ebc6402d573f59871fd182c84cc96
+feb9f3ff8ba37dec197725ef7a30272d2986cba33d2bcef25ce1ea7ee3ddbdbf
+5ee9a6dbd37a12984ef81d431c9e39795733b871b6779ef1e8f24b6cc8d2c570
+58920890d25f45adc083fc2904afbc679f45e504aaa97ff1167cd43d3584d5f8
+015ccb873bcd74163d25db1311eb5aa9b6f4e43cd2ecffe5df2dd1a8591d0457
+8e38ce8d90fdd81d129eee248e5237f10081b61baac53f70192048c5fb12b5d7
+df93b0372e7a18a2846e00f23e101cb39b214d9c623559b0ba496f160570ba3a
+9d3539ec993a2033d131c72148a850cd18094e8870f3ba3213cf00416fa30b04
+aab1195ea873524af7e9cfb99d2c9c2485f2d39c3b8c7212905f72dde2d9c950
+2af1a7864673d45637e51535fa1b281d19422a10350681702dded2ce89e0e0ef
+9b955c915603019aed4a70cda06624ea9416cbc5c7742568cc193cfcf46e5572
+46be43d55d5e40ec1baeaf9eeea0676bdf51480d15be32752d25b552659d5e28
+4ee93c2f1d39c4325f663f48c385f3a777dd0b4f6cef3dde7604c82abc9ab5bd
+b70f6ef73926093e6b823c029b0d3ac6ec64895c7f2c5f89150953db9ff83ada
+300553e6b4c9c9dc82e72e998d9022bdab5144d856459f4424f43c06da0294af
+4e342485883368b12fbae71c0543b1c46c11f8a27495e3aa1839d45b09f154c4
+ea1b6e947026a83114760db1a3a204b990f567a8025511de6cb7325d3ac7accd
+a252d825e4218bec4947b61a6705d86e4b98a7ad78d8fb6fa2e371812b97e51f
+3674b83c340a09c4a42e418cd26c57c9f3333ef62801491afb62ecefcf6a270e
+02c28a6bb727f925ebb226a3d7cb2d4130b9a0c31c66f65f51d48da73436e757
+10740aa9117a73146fdfbbf328f32c800eb20dfb8970e45eb67b2a473a2941c9
+4afa0560146b15d6572dc6f329d325abb3220ef2f3cde790d2a3ae45d507f35b
+bac0a3a117fc763e75835d86f0de2544ee21c780adab5ad8a0cf12b93e813291
+9f49caa616b59cf12d279c9412dd2d72569263feb42461db50b0c22d43640ea3
+002b664795e766d860c45b9bf8ba0de3e471f4b5a947b79b5e0e139e0554ae14
+ed5e0d435a6f04c9e6bb12f5e38b47a7ba79cba34fb7f77ac9aee68cffa7c18f
+ec73d639482226515a6d98bc0a67c90d8ee38819cd72cb934728eab83d7e2ef2
+952eaa0cd2924181654a7cabf3872aa3e6618ffd85a3e64fb7498a1094b31c14
+af020294d928d31eeaa031acd1b8e3f39e4bb12de2b339237ca7e8c23763023b
+2b452a1d1b467d2ecee8e54cc69d55ee5db478ff135cd305f67b20919e4da70e
+ddf9168bd168f74005af4c304b21e6c81675abb2aa19a79d8e72562b5e10a965
+7cbaa327efe9a2ff01343746b9803ed59e30875beed332a432b262d4b7f72097
+33f72c3d425651dd6c1ebc37549cf4b98ec30423e887e0aedd2697cbb9797bde
+282dacdbb582de4c5cd3eeb45bf436bac26ed7a89f63310783f1e0df6f67c3f9
+4dbc8a02442c3ad7ec0cff596294114a48c66b1f964527a87dc21f21b76d5551
+2ea4b9f883f3032b1df3e4c1e9fb3d18d733d996134d2bc0ace6ae842ad4c2cf
+e904354d537dfdea99156fe788cb88431da3ee1a2d78b192e4dc6f0bc527ce96
+c6b8de8a9ebe88a048c1c9dc32ef36e7153d5e9cdfe67c51b06043d5f09232ba
+046c720ae70285ec6b0d88441870c4c85ab9cd76c248541bf661eb0546d328e1
+4e63998bbf572ab63694a7306794a90e325da96e84e6c0856f22851261642c37
+52e0bab6f4a0703a25631f1612a4bf5c09174894ef9d87f582f6053b89571392
+259d5c39f37a20dc8644f62cc70dddad1b24d1995cd968a753636225a3be7b02
+7272cb4ccec2788af88eb54a63d58116bb6f52ae24360adace0aec27df181e4a
+82074d68ca7b04001aa5c202b091b28244a2261b16974aaffb3249716c76c920
+a843a7c464cb19de82b101fc85738b259b829fd8968f18c696e49bdc11ba1f95
+51499a100e7f9b5471d5cf20641eefd14b09ede852b102aefb8b7e83816fa784
+e27a1fce47b29622f9474fe2a53bb4365ec529c0ee3be46832eecacc5bddbb97
+794fe9f3a5c4974fdaa2e25c2261de32331b0415cf918fb064da1abd8e08d427
+04d5391e294f1a512545ebf20010a7eb2a55335670508fdea4927273463ccab0
+005f505822e13ddda9670ce5374dc93320f98533ad9d5032506b8d405bce6770
+c2913ced7528abe2637fbe20a8beb0474d8219525626ec981541b56bc4baf58e
+b890481482473e47813275a082a187b5ffb446286d200f97183dbdb53be722b4
+290f28b535112dae57b9d845b2173731a6dec11f3e91095f52cf4a3ecf49fd14
+5552c8e2a5f285f48e5df464810376ddd834fe2e440eb2fbc003af6cfec4196e
+11c94197f9995897f12976dd46f44dfe0c671b02ba3ac6d2e52ae3d088d3d989
+86361956a9fed49777bf1abd81a9cb536f1772a1b1abd411e5d8c4460b45c5c2
+778d04f188a9d13951343b247c7e6cc14c0f088349d9f5b390a3562d29459d0c
+9fc5e0429ea6f776d03016a83bd532a0786d1a6057e7d66290345c560b176135
+6c58f1a9a66373811842f1eda01a6ea0711c2bff92dd9953bdeb67a5a698a54a
+b8e554a9267ea5ac74ecdc73de5d4a923488983ca481f82292e9b33fc6a4840a
+88c840d26454d6d698d7d639df018bd2191982c81d2adca2d950292123e8f83e
+67a5a78dfde16c6dcfba578ca5d4a320747c2a0c4db18e33b14b9c3844ff0975
+3f5fe153b1b1f2b2273abbccfdbe9156fcdffce75976e4a95fd94e5f3ce9a80f
+3b5adec97bfc83c4cd8f8e543480111b56f13413eeda832e78f9d07a9858ead2
+0f6127ce82c0a7a887785d5680a84566987b7f63149c7c7beadffd108d85298c
+f84b8b5fa6a6c16b2616259e404ba8d0d1037c7861154c5d708d90ee23b47fe1
+f482ec0d4e3993407aaa81b441ec609e87bbbdced513c2750b525105e55bcdad
+d1776af1e8dffd283e395c8c8ee564db8927cf3946d6958bb271e39a58c1549a
+eb3c292e3b016383fd51274ca822a32cdf2cd2a59c58a6f05ccbf9735a87b45f
+19e575a5c76c3d56d6ad090cacfc9001290bdf8a061ede6c807608ca4852cddd
+7ff8056ceb4a88d9cca683be4056e22cb9cb070a868ac8010c8f588d87a53949
+87421024594117914b89bc3a92e6eb09a386199431f72020f3d56b7271b929cd
+58bf78b74324a3f4c06d5b8b2da6e9ef86c57cf2d2b4a181bca5fa5deef41dd7
+0bb25cfee509cd221f5e76a1bc24fc6539e6dbf801cdc583656932c030b3d6d9
+827407dc80ff867e7132915c4a2765d6dfaefe6a655d9115066a49d24a465061
+f2767414cae3e7f811423c5d618130dec9f756f2ff1f5c2812dfbe030da81af0
+51a94e31082485952e778617fb0958a6203a4e5f37ef4bcecb7d5db80c766960
+5de6ab3cafad87c6b1228b55a5ba9e1f7b6b2b3c095014ec85aa569608f4b9ff
+c5f7694f79ffed7ec35b27ca02c6725b3b8a0ad619fa35231130f15beae168bd
+78408d11fa25ee9012b752a6461d8095bb614da8c5f0d12850ba532aac39c77f
+d1f2d3019223bd476651508f34b0c54c8e1780c4f597f13a926e7b0edc5db4e0
+24586e47bb88e0827085761eff15bcfdc9c90a372b77c34be355378d2dba7e44
+b0fec4db338e03f763f17b959586f487455cba7f70ccdf892eb9146723ba2f8f
+418f867bec0297145262fe7e2ac90730520d4ddd2628016dfc9f6079a329805e
+b96234450d164f37b3f7cb620de2c4ed2ec8bd861ba59a4292f9d5f3864b176a
+86b8b5b1a7745fe6ea22a5ee53eb63c33a7e78dcf7d20bdfa0b0a0fcf7fc95f5
+6eab5f5b9e2e0049d4012f79c54dbf70a9362c0133a7a3e27ddd11d606f1bb34
+8e82aa332b25c868a8a3ee3ed708130d02c88b77ef9e4677d19b574459765e2a
+b23f38d5ecdd6ac4f3f97093291446f6c06c8bb426f20ce90f69
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMBX10
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 167 /Sigma put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 183 /caron put
+dup 184 /breve put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 120 /x put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+/UniqueXX 5000768 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306462c563d51ece66fcc9c831843ecae
+1fefc1a232e2724f7baee428ae03aadb95c3035345c15e9922fe49e1f2cfc980
+237316572dbc57064edac9b0db8913a5e2d45e97e19a91435ccf8adfc835b585
+48e74b291446d689c7f2f8c4325e8356e974ae30c3e2977477baeaa33d141fb7
+80f59351e84bfc88c87b3a4a1d25e168b9d134554f6a581378c7d2d6eca8ac09
+045cc3a5e0ed86f147133f094029e3483bebc81cfde69942cf645ea20d0a2b64
+5140ccc2f9cb4a3d969f4b0a79cd3329b440dfcff5285494406f3dd08d804c86
+df191e57232f6f1f83df6430f214e03fa5412b1e13d83c60c52a698bc9a38159
+19a64162af7b83a9468fae9507c6cb55ea80df8c696dfbc3296c663902d77e89
+a181502627281181ac8624f65be9de5fb32f056cc7dd7cbc7366a91717b5892a
+34ef6b441871c6993da3a81afc9bf70ff3842a21a29c0e49da1ccba37dd6b920
+2702db510b8b1109acf4c27ee8d676bdbd16abe189f34a9b61532eb777457698
+cee0561838eaab2d3939c5093afbb215bac433d1918c739b62566906bb2187f3
+378521fb52e70c18886e1aa15f53a1f8a169528cf2ddd54c203613ff88e619f2
+6c9c50c2c3b8b8c868a88afab1dc8472e7b6f3f992a161723a3c0904865a7c42
+3281601eee91f35222c4a71f343739f102eb43145a47e4fac3bd666e4c114a90
+5950618ecb1bdc29f90f6ebed1d8325fe6b52e14a8870e9b4bb088e585c71b91
+493c12845a101937e3473ac5e9ae24f7c358f06d590d7618e1a1d5834d87621f
+e3f5432b655eebd4ca61a7b00dde0aa740796ce88a43d1c6952f8d2ca63d30b6
+dcbadbb0dadf13150a442714675dbe51ff838f2e47ebe8cd44f1eac6ae5b6ceb
+0b07af03f5d3896ff935a198aa635e337e367e1e128d15e31afe3ffca8245e41
+a3e17011340e49d52fa1e322b435b4f7f2f49ae01f6a319f68d3d786c24be810
+1e1c975a8feb5dd7e4922e00e3a08cacae5a945e1e8f8a20f1fe9534153307aa
+5ac7424759743e08af90b9bcca7447375222a66e2edd1bfd423b1bc50ba0e544
+68ef45c89036a20c01e4a5f27f9fe3e02cab3033c6d87574bab265c69d05af1d
+48b6ada1cd04622b62b82d646cfeeea510fffe46b3992356b9a78216dceda375
+1e3f6670d9ae871731741105c99a03b430ef00e0ba2687c8c18b520ad8466ef2
+e5d4c5d11165e1582855bb54fa9fec61cb41dd05a5e4e26e4dabc7ecc147b933
+2811e4cd7fe4f2f9281a740c606140afb28a9748965eac6028273fcdbaf40635
+732a68509e0da5b482ea3df988e4df9874ad69ac20bcad8782a215484e6e98e5
+fb69df4d50fbc249bb3a785a9b851a861ee3a660279594b07c85fb16fbede6ef
+a58ccfa7988f74c15a0ff2df7b21c73a29a1d650a588129826843432db2a459f
+d27b1aca6de903be72229b9acf4c51dd5e6e8992c9834a8df850c0fb6dc58261
+beff16da6f2b7eaa38ceb4db83b6f2c8294e84bb9ce38612259d8c864087f540
+fb0fa15f0772df6c19b3f5c89fd93cb2c187cf96b1b43d5847ae591c1553fbbd
+500194ccf40e53cabca22e49878ad1e1b1c20300de437e769ab3c0953e7ab879
+96f041e9f91047466a036c8a9c7fae9e4ebf0e0d0a00f60ce37fe870bd9ead0e
+5e1544cd8dfea2c0900c597fdb68deef01d6ffb3b06d204aa35a759e059187b3
+b9e41e334c54778c57249dbd194dab012b6062eedac1b4d9f2bb9d995dc79432
+504cfa004f89a60ee1a90b47c0a4827094952d881a4c99fad9719bbf4e4bd43d
+001304a25c5d21306e10589dee3e54525feb4be0184a4eebf6a4909f53f3c116
+55c99b72f781e317ab38e33bdc1359691f5e4e385507f49a1ae8d0258d018fe0
+bc73dd213ae1b1c841af7d61b5a0636e3ae691800af02c173b947575ab62872d
+afa44afbdc3679e2524f7c96c66b848c5786eada61bab6bc35060e4f068721e9
+3ddff15690b18fc6109e3d5251ba1d4aca47d04840cad62c741cbd7dbe574690
+81e08e7b25ac5c45a34c5d15b205496be06a933bbeacf307d6c483fdb4f9d96c
+e07adc1039acea8c1b04091a293a5513add1070661fef4c3fadef6fb664270f2
+794b3c922493e91aa0527dfbe750b7785e00e3e3505437fc1f12bf1b27368356
+77ca364713cfbaa1b773807b5d4e13bb58f03a34d41dd246b9721b55e9da6e90
+60adcb9f807e6b9a52badc6ab02a3b7bf3cc4754257ed7fa965c46606a8d7214
+f7b5197dda64759f5c67ec79c9a856f05fc330107f831df7f7c34ed8e5b8eece
+48562f814a1b9598c563c6b8a9f170dd6e62c2d9f48e8e1ff37e1652971cc2d6
+605ad6653ec0703a29069cca1f9b6c3152968b2917b9314b11f09582bee9e481
+dcccb2663d75a04ae1d52f450a808d22eaf7cd6936b979c2fc2400e05e51c150
+5e4b4e3d0ccead3108d7b2b27c84b72b0340f5abe212f66d5ce804b7280efd20
+d3f89e4a416f0bff072cdf417175dc97aba4d4593b62efc43957ea6e5fe27980
+96ab7304422338ab4d0be8486fade4f387d0a57e630da698fedc321c26cf370d
+f337e998e0fb8eabd5caa0908951473936f06623c40bfe7b0f3678f5b5bbfa50
+c2a8266705e5075a2b1cb619951323077283069eadd32e2af9b61fcf4b858301
+bee713b785e72f90bc62eec26f67c6b795e6aad16a1fcdc9348b562cdfdef0f4
+870ef32e5e045879b23b08d3b91aa15df64331fe1a678cb3f8ad863529000e7f
+a76fb60b1da6a1fb97573e6cbb3d9d10e8e62249a83deb60bf01627300d27a5e
+8218fbe065417637c3704682b7c09f5d09c4bca5a7eab4d5b64436e760064594
+4ca77549e2694d88999dec504b4d6437905037f9db9830f96bd88e049ea1b4ba
+4460f984d3bb925507b37d04648063f190574bba53b13da883d3f888f2e29e0e
+a23fa1b635edd9cb03750a5992cc3c5139779522433ce80764a8fef9c6079f1e
+544ba1b9284b71df9c1a18e95d9a9dd41c2797464ca13221a7a5e1be155747f3
+2e391f7ae8406d14a01a50ad89053090fdfc1480eb0de7fb25838cbaccfdde57
+e3dc57b1cf12649757cd83e3fa98ea90f256eef38e5e10105658b79a6be37b0b
+33a8568affada8e1a6c26d5274bddb62fe73a3b309c8653d6b1d2853dedb3cc2
+17b017c2b539596f7ea921731d57d58c902403a3a13c277bb46ec25e64e08479
+84b8d20f2294e9c161be0b766b20522c5370e56c3b33636125a0ee3e2e8a0a90
+aee8a46a789313c404b7037e68825b4c14e43804ff7c88abb72bcd101da7e6e3
+bd686f83ff809a6745da5ad4730e86570e2c2275932d9979670b418e85736cfd
+8c21bba8d18484fec33f42cce45a084fe68c1b4ed219dd30e983606482b8cec3
+f4990ba00b60c88c07420fc28e22683a9657e4379b1a789d1f9dbdc5b8cf16d6
+19fff361de54443888c25054be80fc4d7b902a251b9116cf526fa046b35e9f22
+87a5828a7bd6194935aef7a25a726798a28af55d1610d0e30b41a6ec0eb593cb
+04b3338e35a9225c974d8f21e682b4eebe2c15e31d0a718c87658af235e1b9bb
+35370264d76b292dc74137245dfcdb66f3417d141991159331fae291fd19b986
+6b6129d8f90b97e65af4db3251ded38fb5ccd67ce56b52d34db379d53747343b
+35cd9dbc5624a871f71b32a8a75f359e6bfd8d0dc9a2b4ef0c68af2ffaad9962
+ab9357a8998187f9d610f554fcea8b04fd622511dc5e3e293f8e9ac3d722754e
+d84fbda989053154c5e2cf7465add237a752e5d5cf39b2979743e1bbc8a18730
+68349447d582f2433782f6400b6f23060e4bc40068407601da6a0376952c8e93
+25cb24035b49c269ddd4df9072dfe4bdccb69bd8c38c62529da454fa4f0dd71a
+eca43e09e7987b29e8602e1f2782fb852b7553e117e7831d03666f84c029e6ee
+9a02e1cac47f48ae660a7021a38c44b28cec32863092719fed19f14645693abf
+9a484e44ebefd1f7777cef536660cff65b3d0926da2b430bbb6ae57e7d30f739
+c99f16d9f96be940e7cd32b7e6b94bf2eaa39911e02b2ac217914c1db06c42ae
+2128552e11e28447447d0497b164edc262f397422e5e40f3e576feba680d4cfb
+eb221d03b8c5a651d9ab4983cd25673799da890473fab4f67282cae762022dbb
+d7c2e8b2dcb7566f73310cadfdaeee0c2bcd538072deada50803730d64b0c887
+c44751cfd701aebdaf7de4420c876a7188905fb29713d774f36c84f8236d7a04
+b246af98b026da0a0d175b53846d87519fe2242f891a3a1966a7e685a01bd511
+bc0778c762d27032103dd9a2ddb81e6d4c3297827f2f40993bcce418a004b786
+0185a3a3a22500a2e41dd23f6a3e081ab13471f43f89051244b2728abc62736a
+faec3b4fe9032eaf4474d112c14c996e0f7df9d25255acf6de550b0fc32bb034
+865e2da349ed6685393e32f66bea3ff168a11d60925bfc33b3a1862c8973ebf2
+0d61d2a82d4ab1d30349e072e3cd01cd5f150f37274feb96da693f32b5ca15be
+da2096fd936b50930f683237107fd4424da2e5b8892ae5e7a91bc29275ac20ae
+7c2f40bfe8b48f99e814ec49ad8893db34585af4215da7cdb1dbfd4a87f586c1
+5d8a122771d33c00974db77274df899310b0c22c8774f2695ba2af6691774c32
+6dd0a0d8bfe8579eaab6806ac84f436c2b37a02f91fa6099fe5ebeb1c8d5cf47
+7c64e0defc5959b272d3cb99f022d9e1ef8fb3b8c6ffdcedad7410d74b9c7a1a
+40b2f9e9c8d7d9fb3274b0747f0844fd255c1f9c64c6ef77487a61decd1e0cfa
+cfac18ac03d512d3b8dcf083c5d4cf29b9bb32a3b2a245226159a780a4ac8bac
+9837123ec002770d74a688e7be3dde472246237c1d7a238d72a4e3c3841844f3
+88e8418f7d79fe3f896e369e9334677b5d76e0be4bc87c39970cd8e90926558a
+be4499aeec4f0ecf74842bed428682bed6d7cf214e68b076d909c55d10c4e70e
+e3b81cb91ad30571e9c2668302e8c7c118a975c03543baeff5521c58ee528c31
+1f777830d4b7290fd7ff0fafb05c822c7fe69c23572fac4ab61a0d749ec1df2c
+a5fe2e3c7bbc50414f22b97e1887b5a266b7b29c39e6284294bb0600e99073bd
+38c1185fbfcdc50058538ca0f7c886acac74cedcf40b244daf1595b29c00ed2c
+2ef248ffb17a4affc59ead3869e8ace18a072e94d09e1b7d2596c4f002ffdc0c
+0b5f68d1d953b86c23e966cdf16048d78c7cfe675487e58129675bf692778d53
+0a9264629e891e546b4cc4473668f5f91e8a2bdebb400b24016b628bcf60e8c1
+d403088d9e804c0600c0aaacbb0c7722eaede27bcd3caf4f8a0592026add96fa
+4446a1bf5d3d9b8aade37b8890642bbe1721e02f72d7e2a0264b9e037215e93d
+5d4da4917ac1574d593c5415e7d3e43c2b05f723398a903933de891959a60386
+4f3f475c2ab4a5048766d6081aad54f6d013dd401df01454e366fee28887ee17
+9ce75507c9077e9b3cd47db7ffa738802c5411c59cde8df78ae044019e8306ed
+31e2e24eb9d78f5d624614d03ea3a5c1b0075e59d93dd3bf8eb2f2ce457f83a7
+48cbe031d45ca9781f3f44bda3d8f0012b662635cc855528eac7f6ab332190fb
+8215b743b6dcb9290910083a3c7a682301abc8a0117606e3d51d0348452e3b09
+4aff1e94fbb18e964729610697ff532d8e832c31ea690efd7d6abd8b941b3ed5
+c48ccf44750f40edd6795eee66457362b88a3792e78753b9d2e1459f9203aaa2
+23cf3d46676e63a5d7d0ec1d60dff47cfab1d95906c37ce5466e47dd9d3573c8
+3d167ab5688cdbb9d63abdb2b28fc9f2affb6d8822aa09f2ee60c4a90af884b2
+66273271b5087ff908eb1249fc083505d1137aa18d921950278fb124bff581bd
+f6ff7e31b5b31208bdb13106de1c9e0f084d1c41ab1b3ae3905fabc85699d85c
+cc598428f12aa27c2fe537bc4a914bc374e4441ae3c0f8fdfbabc3426ae91f3d
+675db64d03a489c6b306643778e6623be6ba3d25ab12b4ce21cda890c91660ca
+10789025d7f66d39750ed3af3c0c74547e0736acc88db6ce994015c530b05bc4
+0c0a38e9b20f217e79a58ff4d2ce38d11b68b3a3095b2a294bd8d1d359b5ea4a
+6dce494ce5f58a395faf6f6befc0413f73a9a7270bfd19e059c49fb68f2da150
+1b1260d330f75b06c53452f5772aecf079451343f437a9b01f48e8cdb3681c65
+442cbbb7e45dd20f37714ae4db403a0c28bb833248cc02b930f46168e781581a
+2b1452e14ebeb81cd296ded4c6d237ab74cdd6e2e30ff9c1090033c77f850eea
+ea7ba1f8ab6dab75e94bc4475c614ffe68fea3543dc37055acc92593f219b531
+7c55aa1af8ebca9cbee2a042bcead2065fe63418ba180279e41123d072ee48d9
+297b7af2404ee444258336fde2ff9ade5b1f2d349a57b9c4e461b6ad24fcdf7f
+696764246af6126ea07011da0b8c6cfaf31b8115163d0dce44224fd8d928d344
+4e29ff22a965233a0a462f1e7a7ff7f97b20846263c0476a6833dd8bc9cb9c25
+43474f8e50fc22862ef63051da645b9bd23288a46c6d85c44d98d37e4503beed
+eb2e228e51e1d4b6830277331f3c6160a5cdfb8965a6f84961c32cb055bc14ce
+0268a87092c0729e8fedc1c8461fb25dc7597aea309d134925218536ab096c4b
+f5702954e957251b53b003c355ef02023520f74df75e9246c07403cfa6cbf2fa
+99a2dad180c2138cdca1aa786199fcbfbdc85962443686384608909dbd0316c8
+0f8df36835d431c3bf059aa4fad08b33fe2be75cdf515dd0e057ff488796921b
+badc3fcf2b3f9ccd45f10e884e519c95f4cc2a46281007f7b818ed45066b295c
+d9019232b28055cfc88a5d3dc62aded6a933cf6ee84e1a8bcb6667af74bda5e7
+ca828d03b8e9f7dbfd40abdb83e58bef4e1a43366a5e248c3dfc001e856fe0f7
+5b3123d3a9bb3a545c344f63b0093cd3f30b7149cff36d6b11df12d217cd9003
+7311866e9910371f6da9e3752d83321fa11d33b4a5674a36989b284c847ef2b9
+bd5e9ae287ab3ab74fe44b4f468666978ee532b2a29d1396ae9a71b38a47d0c7
+a0b89d3118043a87741f2c9e49839e7e01efab65bca1c73065d33890fd9e6780
+5e95150101073a6f8ce403a553542dced6494fec910ad2e1cd26379039f40eaa
+a06e17be3ccbf151552b03b3499417cf065b8412c385b0a9a8b935b5d05d1825
+58524e1344b8743d01b627caa549ed039cfe2f125c65efc3575393ba52460a1a
+ea01a18f4577b51c8fe5f9733fd2212e52e651c700b49399ea0867e3fbe69e08
+92208b27d9aa2b848dc7747781ec1360cc422d98288986dbbe74cfd40bbe127d
+2fb7f152315c5126205e70188a1a87036ac0bd74a7140464280ccfc9778c0ef3
+6910ec5fde266a429fad7011d6e296667febdb5639a3f1481909dfa64b11e23c
+c10c291570349242e8fdc4ab829d9d9c24d05ed176c62b467bf3667faa2a786c
+99423d478ca65eebd383d5965754d4d6ce8edf8f2cd4324aa73d46fef36fbb0c
+9d272a7a15c921f2eb64401cb9b93b7ed999bb451e912b415a54650c261f3a2a
+082c881a4f59954c0c0ed7b35062ab2b3200ab48516c99e0536424665576cb55
+36dbdf4f8080cfbcaa21796a9309a9e889a6143c8b26745cd2b5564f9136ebd7
+3e64f7b17bd362368b91a9b133bdfcd6d199c287db1a6f0562cd8cb1582b82a7
+685d0b8cae142b0c93a3f81f71615d33d4d98a6fd63a54b4f8436061941c6a07
+642a78bb8d6989f782b1453709b632a7cf7680f1ad252909f713dfb74d980849
+ee757530d9b2c052c7dc31800d738b830a5e6e09cd35de400b401250306fddbd
+63b0e86f185ae1dc594e803286c4be7667f92d4c9f3d3c2f385d64afd6367e8d
+a665210d8f408fed61acd98657eea6815d7d15a8f94cca0c90749731bd110f66
+f920e28916f02130cf9737b1242b118f6d7f1d43bd33d1f9e0a1aecd27d7317a
+4881d13e4c21c147ef13dce799310fbc16c848cba44dc4ccfb5a74dca2619ead
+8be1cab0f5097f06701a1a90e154b5d735b8322420514239c1a51ed864c03d66
+eeb4c02e66e8596e8dcee436c69d694a0294874e8ddf1ac893b413fa8af70c99
+4e9ee9cbad088d9890e3dd04721d97a88d8446eb00c3f6e1130635fde9c3b467
+1ea8d6bcb09dc08eff1853ebb36bcc4259172c3bc1a368219796759c91840efb
+ab1cdc82719a3628c6fa50f7148df26b33640d9066e87615240432cc39c4daa3
+367176141d25daf65ad96c1f6b0951af152afcd1a4410d0a6639c018b33a6c4c
+2218bd46dc096684cc8dd7a30ea47fc4ffc8f6e379d84129e55edac8d536456e
+c688009061b25d5a84409592928e849be631632456cb148cece091bbda52b629
+cd12bda77fd3a98eced3a6441eafff0081a8e0e787d72e78fd1f990bb3b96c39
+210e2bf898a4583bb84ae0d2c66efae05957c5d3daf49dab95ef9fd1b6c4ced9
+d143a9108dfd0aea4199254457cc48bb356bb063fa2680c89d02905eac824f35
+0814c82ab9de13cbd49f324c551a1b83bc3f4721810a81ebf66e86e528aa60f5
+f350e3b40751527847e88015b406f79be611acefbca1baa3e61eb2271c71ea64
+28da0d13a4701067bacfa0e797dc1b62ac6e8dfc35ec4dcc75c0bc72c104e3ae
+0ef4488a3f1ab47a1ebf890bba1d51e03730c3decc4ed98914bb05e8e8733bdb
+46453300fe7ee7e560a755e387da382e2ba87a459a6c9b25acc70c2a80a0b08d
+f70a6514c4be83c5d98dbad886357f0a8c8715837dd5e37e0c1ef3e0a13b5cd6
+2ab2c1d5c2743b09dc69013403b4ef9504c91192f96cdadce5576d4c85eac1d5
+0243dc2ad10c1c3b971130697c52827e9db73527a7c17708a23f5c9c3adbcce4
+0041260ec774204a9d96edbe1312aafc416c359d15140cc6a6a4b598f149e762
+3433eb2583a1ae7caf49e00ad70e16cc7ead0685c7c20c0ca76d8efe8591d03e
+006b6247f675c01a90207faf8f9e5974c3f707566ad1c22367ab4c4d91d5d0f5
+ccb9070c15884e46858f00cf9e1d49198f5edb7daa6057fd5f052627ee3d796b
+e82df1bee974bb578d3d6a90c38af24b93fe9c4e3f04fb78da11566f302457eb
+7689ab16e3c6eab9304f823d54fb91d24fc2832008f9cfa6f64190117d40a912
+eb4890d986ed9fcaa2096ff32d2250d6284dd9bf9fe037f09c61d6d256d9f6c9
+2e9f742cd9d42fd505e58f44e51871500a9a4829e525a9b744d7acf709feea80
+7343d416ac38bb406c70467679c46c0f4ab4dda2909dc5fe6768a995c3516d5a
+d7c2fdaa54f6d785fe93b9808c64128f5296834e86f24c8c60cd34586f00912a
+d9e6bb4db7d94b6d9997e5d54290686630fba9e587b415125fd0c817c7159983
+4a53a5e3fe5a840b89652e1a41e8d5a9c3c77c3e890bac0f5f6b48e04429e3d7
+9b99ad4d8592525fc15a602a1e7728c1046febeb12d80e054d72c709d18c3002
+d23456fe77bfa7c1cec74fff1d3de12313f9c6a580267ae3f6c92494cda39b37
+71046ba25ed1f34bcfcf3a09e1baac1ff00e1d2233ed66afe9f32e2f5eaa05fa
+f9b50572314c414915edc196a20dd5a047785bc7f00a745de69fb3cead2bd99e
+4614b3c7f1950cafa4ed99e7fca0deef18263cec137a21722233715e63c0f77c
+b7e55824a3c923033fe00a1980db8cc3bb2c51c7def0bf85f55df6695e3cdb30
+05a62755a4b0b5877f4a0dba02cbcbfb475257d4c5eaa64f2aa3b625da56b8ad
+f3c8fc6e33a5bd9bfda60b5e4b5f3926a50cc46621a9ad614351c2e391d18e4a
+c1dbdccc063fc617498a4c930fe4117c71fd9c975bdef76fee2ca97eff93df3b
+665ce85357ac5e56b8f11bc397a0613f2414f5a478d6f8e92639dce69d515ba3
+f10a8f2a3400638fde8d229cc61c83a1b66db01121c178f89aa52b673654c60f
+38291156913c00ef3e7b2612e69b775558ae8d252cb38fc542905803f9bfb51b
+67ca5e4097816bfb0e0e8f133818c32dc28ee8130b5718b06e15240b0c3c1180
+4174ed77eb6ec79a8dea1a6ee6e4faf3110e79e68b3fa3d811a749d219b38d2d
+f6a3b607591798e6eff2cf84abd2d06c9c9c0e2243e94ffcf05578076062757d
+1ec85e2cccdffdd67ca72476531ca5252011d1895a062efad13957e7bb9c3bec
+3b86a81f265b8857aaddc88e02ed4a416de3d1d72dd09f010a9e5204d6e95f5b
+52b786b2bbddc4c062d40904f31571860a00d08b5fdd1624fdff9d12d73fa5e0
+6f09ecafdca148ff36c56924fad7903b3cd66b6ff97595e5bc558fcbea5809eb
+e80ca90b2fcf3879ce96362f3f6777b8895b14e3792b2711b5e001ca359d575d
+d45c3ebc16f16aef836dd418825c566c227bd19206802dae59a04a45f0a74f16
+b7ccd88d39a5c4f8d5a8a2a0cee300f5933873923965bae0ed196a45a8c3415a
+76282e2c1bdca339eaee832eccbd552fa2fd5a4144149a1604dc41849a57ee33
+024f05daced5a03c49a594c63f58b6a78c3be58f1c06e8cbfc33a43542eee758
+81312857dddebfb7ce8faddf1a92ec22103cc3d88ea078e37c360206f5b275e8
+f99cc3d495f6213a4e0334ce8573ceea91655a4eab08509ffd8c2aee3e41ae3e
+e070597927b4e98de09910a7d31dddb8d4b93fe6fff9e7dc21e6afb5d048562a
+58555433899de541cf7259fe313056777f9724e9d51d36e31e5f903a33626968
+a83c5c51b53c1aa993e0f3392a61001987682133910d575ca99ac9b83ad73955
+d7995e5781fbac24403cf8f0e1c8ce1d8968491b09a6dbfe061c790b8f8b3be5
+afb9f6cdaa74ebd99a4934075597712e6b4384a70574fac36a96aefa428be73e
+9ed39207d6216ac47754c08dbda8af2a287f69c84fcc048bf6da60566cc26432
+960f49d19b2344228cc6ec4acfc7e462a0b8ebf0eb28c08ab5b42740b28a604c
+0ee48bf06a1409fe97711896986626aafd5e417538f775af6b5632016131c703
+ed0b38725da27156e6d36d050fbd81973b50b0c01a0f231d3f3c1a6f63a5a11d
+d0b55d355123238ae3fdf9d6870a156788f7b510b811c5a52f7bec770f8ca7ad
+7caaf2cd51f53567257fdde44d61ce1c5c367bec06077985dd0b7ae94f815b8a
+c4e0db9f1f3dd13fb5834f6b32c60b1e7149bc4a648db2f8314dab873ca58fe0
+0bf1c07da1237f061201a31711b0a684d7a25e3cf8750eb5d32326c51bb6796f
+8325c75a4a8fa3daa8a955e2a4a0bce2610203d9fc8cf1a87fcd32e432f4a23a
+1695f681b8da19eb2cf1e33e53a125ef8186f1cce269f05bb14df549168fe0fc
+b188cda335ed97854ed482741d3c8fea65b00e23707de5e848e9cdffc31a4912
+677b771483c22312b74e916e01d52557f239055ec41d1cf816fdfff0024a5f84
+6bc264d2fda637c7c0a331df55e06c7783755ead8a9ada1c4137c62ccc4a0685
+05bc22abac7e1037d72a9f7e7d6dc4187ebff95e246fe08cd815a8ab6033b0a9
+8b43c1b1cfc6055d5926be96145f7b4c4c32fd62e388a5665d99f4186f87420a
+baefd0a424b52f5e3881e18c54dc8e9b9f353d3de947ace75f38c7eb224ab676
+f8626cb303d5dbd2322c66a07f0e14a65bc144eb19107fbf4c4d2a4bb158192a
+2fd7abba6d5df699f8fefeeb3a59c345d1f393ee5552f73866e7c7a802f17bc8
+2c5d112856628d702a1d2faf3d95323e2f2cc5d0b998bf0396a73339427bb99b
+9786a6563157cc3039dfc7cc389758f8775c95ff82670740bd1b757283f89ca8
+5b77b9d162ff9e3f07881f9ba7c61d90e1780178dc378d7aacf898766fca0ea6
+edeb06542e34cb85cf0de5e2bc75e9841300033184ee8ccb8ab252388a71ecbb
+5714ef467f782ad0eb9bd86e320b26bba53c22351b40f6ec215b2813cfe4e8d8
+27f188dde91d6f8c1e471640434ca3806329fb51f8f3a361f083c84f456c3c9e
+f9153aa3f06ab3045bee0c2b7fa2bce8ee37046a428c19afc4266ea444c123ac
+28aa8436290837fe0fecd0c14b08ed72b85409ea8e6161bfd5526cdcc04bd86d
+db757334684b2ec2a85e95ad0bbce70651450b26148db17f79524191c353a989
+6003807fd71f40801cc945ee4f8aa99ea71a51e129749b7683540236e4f606b2
+1e0e479de54a2f37ed78970e18b9f71fc54f23d7a8cc486d822758b23e227e06
+f9ffc5ed1abd61d92d096bb91f4d0a51a2640745361846f06f08923f9a58ef4e
+517294e341b25f0be2f360f4ce955f5c9836407523031cbb2ba9dc6ee435ce83
+19ba60c0d8040569a7212faeee0da38415440e71055e34f734ab8d352546ae83
+ee4e517f8856765c011caf679c178eecc3892f1af6d99a2c34d3330776d3eb30
+b4e7b3ca70ed24db3a7c29d14a5f9a9520f9edfcab78cadaacd673538e45a6f8
+c81dd4bd3fee28e0d080c2a38c33db77379a67a0f9ab3489cef85144c6b0b073
+5913ffc8159f0fa194be4700fd0866dae09303fc1ff4474037f8969473f52453
+389436c86e997e80f4d508f975400446f3feec236a86ac9446b99dfb9e8b414e
+ee1b5e848c2dc61f9e784907b8ad791322defd12b264aaf973f0efc3482b9cb4
+c4ff0a2ad0828d266c6ece46a1af716e0cae1fc3d48ccb217a5f2df95b838e9b
+edc0d56779c31f4c969c6609dca0016bc5796c9cee91dea186f759379365754c
+f70d319cb01714c9239fab9dde39d12d96f35d3582507622d7398185653c35d2
+b0edd763d619c3ef10a1d9075758e41899c8a3dc129519410c37824e1d4fa063
+426128d067868b6abbd7bcf9d8256c0dc5b3c147aa40e33cd1126e64e96f7237
+c48077759f9f1d57bf89e51d073bb53d2727f96c3f4bd611663204bd07823116
+1c64cd2f2334a460088b30126e20e3fddff3d9e1fe2bdce1bfd181785d8d61d0
+64c77d33c70f1bda7ce402a2a7c04581172fdd7c76d39bf5d2575493b0b81b2d
+ac652b10947dc8d3c0fd4ae3389291c8772b4388b86a019e5676542af1464e18
+aa60545a9c7362ea41a9228816a4815afdc23969f9477144e5d3f761970fd114
+2fe1df10447ebc1edc0dae2f2d20f6a890aa6ee916a65ead0ad8674a2c94adde
+558916c1beb00ea0441e13d35cc0a02f4c9bb9f825aa2282d9dca34b05db1aee
+0b2ea460aa019f2c523683001f886b7de7f127e8cfe1245d5ddc10ff70b74b76
+f69e8a3e4af1b2edd2fa08100fa8b84ecd91b14402c2e805e1d21d7d7664cb7a
+a5d79b9bc597b66274673643302e603603bf6ac63ab59b66afe9efe644c2d5ec
+031bb66c7bf8f2c0978af32b83d659be55e8d7a351a42652559cdee210b70964
+fd7060e29d871669d49bc54085a8bf099e8e475227c81d25167f5e7590c9d952
+e3b9ce8ef5f3550f6ba63ea4afda9d46210b2ad707c8cb3bc37c6ce6b3a2c6a6
+c213e8b95ce3f8dbfc70bfc097476a7d8b546fbf0bbd3a1a928173344ed8eb66
+019d432285dd7cf9fe7b59394aaaf772560f6e4d46ff092bd8aaaa76fdd82fad
+16367700046ac7edb0d9f962c79349c6140c4cf7fa74e3702aed93e03b6c2ad6
+613c9e0ad9d55a3bb0c86f4b4299bbde4aae8bca25e2edbc2270bd72f59fdb24
+d2a8a0d48b79a4e0daeea232190f0325c91be71040ddc6c7acbaabcb0581b8f2
+b4fe9fd22c40bf1ee900f273e08ead7ebceff743bc297ebff17f574fb60c556a
+55534d2d71117d4c4e3bd5eba0445c334706ec66a80e603fe7aed72a965baf24
+001d969143f40bd8e5603b552c892f6c87991650c17112d698d95404f5d126e5
+e1a9a364f156417bc8a4d77d25fdf68e28d229389518194bb37a21fbe3a37d5f
+c5b2a7cd3d54a0df4ddecef025f0185e5a33e5a586aa4248bf1cc792f2284348
+605363c8dc39c05ace021f9374808b92e4d42f7e694f292728b9a129e2546593
+ea960042b5dfb6c5a89f44423c72c9cb4e4bc1be538887ef6940693d20f0c81b
+71269b97272ebfd076a0490d6a589a055b707d4c625f6c98af9428436bccb14d
+c8d8a8de174bda288cde653b26a9c4b79dfabb84d1735531e5d81f963b5b1d67
+928d738db28dca4144cd01a944e26712770b79354315c8e2db5c9a0e7ec4a8dc
+71ec226b3d06aa52e59c577b03ed01b9b6a6670c0d2ce9d72b4440257b1575ce
+0e9dd3790d533cdd2a9db0b370e7eede41b9850f4747c5bd2fe6772d2d543653
+260ecfd0a83c8b9f93f82da36401298edae6b8c371ed53da3d3ce485b81134bc
+3534fde5b12f8537a590ebb8780e6fb267be17e22ecf65b1a58fb6e0d783f80d
+d6b8403ee9d638f54e4972b001d8761938350e645db7525b8233dd1f016c0cc8
+94e9904f12c6819dfede901bf5ea3cb5d5d43ba9ab3ea2e4a21e8355bc949b36
+0ead27d14c4962f3e2d0ff553ddc2bbe81d2ecf1806fc53ddfa0e59ddbda6223
+22fa454a79e3ef6358a8b06344556ab67dd86c1800124654502c926f649f03e4
+475001c2c52345953b28547bbdd401e15cb3706bf0cab14f0d4d3afea5cacd41
+15c5932f0cd430ee256b576d0331d19a62ac1c24ad89d0b238f39b89be36c35e
+4c21f80ebc30fa69133947054bf2afd941234d3abe6d775f80a1b046587d7147
+8a389d0f742aeafdbaf31972b7b88a79ce7693364dd0045f6a4421bc9560e51e
+00b3b101c463b491a12f2976a9560b18312808f410c372ace098cd9bdeba4194
+32c0b493351771279fe8b5aa4168139ffd4a34a9bf79d91e95b5f089496f3f68
+95f7c9e2d595d320cb20f1062a62fa1681f075177e6d5ee17a57e4e00950c21a
+9527f1048f9831f8499a9fdef7d90fff905038fd751cd72d3fe20ce27a01d1ba
+2feef5813a6b69a71a79b37c59f39cbc57fb08cdf5d08db84c21f11327aa0b92
+f32a1215f05cdf4ba2913a0be07c1ca8faf315eaf8046a0e1fa69884b93cb145
+19978f27bef067adde6c7529e3d7aed1ef53d97abe0759868d541c4ae24f0513
+18399ad98871164e3f71124615fe52650b9443a21a2dc9473fc1ba04cd190c33
+90a1dfe4d413c3fe5aa5b51f1df38c98545e865387ff25a210731a8073d6cedf
+0ddae61746995a0af4f770e985df2b0f047829df55771a06bf6ea563c31720ae
+42dc1b7500450eeb0dcab6e3a898c369674943a9dc939f74295f198e3f42542a
+07bc4219651ddd2bf39679e357aa650dbfe6806ecd4178133ec2b694cfce3d6b
+6ec8b2e8398ceface41700526abf7234b29c11c1bb156e8b5bceac9e64b7d4b7
+0cb6736c6787459d883afee846404f80419fc730a776e5679c401f35fcb5b798
+080ea65c9dcc3ce81182735bde9c6de0a3dfafebe7baee8ad903e0f8616a2f5b
+0be0b6bda1219af512bfb6deca45ab43441200c7cbdbc739cc56b60abd9e3b83
+becc94f8b8cfb2d0b8975f3cb1fbd52454c90f962a7de32f6f1fdf48b8e70fa9
+042c7011bc12fa571da6ea956e2ca8cf10dd3ae285b76ce09e5ca01415a3032a
+38c77e32bf10e179dfb16ae0fca60876ea6b67c8413a1fb230a4cb2539daa983
+c34406818878f1406fd26f6fd5c6d84830905acd3e4f8f7f1906589f3ca72bec
+054a6ee80d3b7724d2f37cd6bf64c2a1c1435dbbbf64331b18c80f232898e169
+23db0546fe74ac2c339ad1e28ca3e47e0d468fa1c56d61a18f55578dc5085672
+7a4015a022c3e2d81f27979e187696d8d216f695517e91d4a4c70a395c55306f
+ad9abfa0406c735c6fc505d37aed4127576f39454ee3a1244d7d250862a1c611
+af71e53e98a4e1e610293dfe7b479911cb71a6cfd5cd25f8138ef9e1d5041fa4
+9d0a99dbadb0903419ec07f96d203d00ba370d676f063d2ccfe1c4933cc47815
+c0c1d022a4420bed5fbd3dbfe0bf584463f5bf366bdf95ea55f4c72a805353bd
+7515d5da4b8f74e6ae72315c1e9c468486db1fa847898199b57e2ce6e8bb2d54
+933014c6c0e09427002afe5058c321eacee40afe449f55de9ecfb97b6c7763cc
+a7d255b22a2ea3b6eba4d60d4740e0e0902882f919248bfa6d3ea0c699d9fb28
+c1b08e27e68246ebed1218fd5b7c59c8763ba4d0bbb9ae2de19ae7a81d55fac3
+c91992d093c3c1714e91e2ca5703e25f2efe87366b5d3b94a44ff7128aca3e86
+e42d88d4bd14ce8957a87f466e36199e0a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTI12
+%!PS-AdobeFont-1.1: CMTI12 1.0
+%%CreationDate: 1991 Aug 18 21:06:53
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 167 /Sigma put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 183 /caron put
+dup 184 /breve put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 65 /A put
+dup 67 /C put
+dup 76 /L put
+dup 78 /N put
+dup 83 /S put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 121 /y put
+readonly def
+/FontBBox{-36 -251 1103 750}readonly def
+/UniqueXX 5000829 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd803271dc8bb1656323089e9e2bb50f2b95088
+87d31dc36e555668d9578b338402f8c259f6813b0b71e6cbd95e19c20ced8495
+2559e47577e612a4d94de3c1b4c6c41a6a3fa9e2313457242de74c7e4c0d722b
+3e224d18baa726369542682e9459b951b2ac638494880c42be4e2175a3c067e5
+945bfc1a05d3de8c3e8ab97f80ab6000e1f78fc258b85d3c84b038d7d0f5be85
+0d43fe03e26cdfbb41c36d14cb552e8447ca678efea1d275e85503123a2263b1
+4077587683de69a8f5a88d666172668411d0d0fed3e037ee468627207505dbb3
+59cfdc5d7f526fca5416d741073284f5dd2471e09f5916f4bff1a90eea4d1283
+7731f6a36e5ea695f4efc3bf5669b7f60ab606df5819149c0c8a4817f06dc172
+0543467645daeffe4457293e0c0407c4ec7857558d0452de2ac773f141783edf
+81b30215ae8d2d062aeb3cb69eb0d62bf04780997c9c027a22896f456b784378
+7f2ccdd4804375321e7946d3d254521249a4d28a360f4d3163912a688c16e807
+15d0440bd27bb78fcbc89bc28028aab2f594f8b641e45b9c599180b69663eef0
+03465a2425aa4f8b29dade493002fb335b23eb145108ef3ab828755d3753ea8d
+f0683265497b1cb5cb484c13f7a4e003fa6ab3ed5e24fcc6125cee4e33936122
+3cc907af3c64e5aaad882c356e673e6ca2509a71920e99549d8797e9aea189f7
+fe18bbf718017cd2e32b4652acf12f16e785462980f5895afc917ea83e9c3eab
+6297f1de23785f79172538b39984ab261f14ee296a42cca3159e63fb30583af1
+911646257a99b4162635fb79e25404242cccc3bf224d4c279e731333107ab2cb
+2598dc582dd185669c1fad35d2be0428389a4b175db159508c08a77e842fd400
+bbb81291cbda2d137c403246950ae040b7e572282321ee48d868bd9612de4314
+6ac42fa25332ee887ca3a29ef50b1c499c06c9ad3ac992cdbff6450dc2999cb3
+73bf20165999cd61dad10929568a4d64c2c7b73697b772257eecd2ab4c916ca6
+aa6871233ede9ae267ab62a86535a39ea9dddeed325a1337fe7da7a9fe9f1a77
+d8b58124d37056aede8547ce54442ef4756e36772c04178c2596da8f50854807
+f3cda19a46b57b6d3c78b1d8cf8a46cb243f30a547eeaa97487198719cea2aa3
+35d51958abcd5f200013ed59f073cfc9b4309b17fceaa2e6219b298d922ac8f9
+882505efcab573dd47185ca33ee83bee03ebbf4b55fd60d4726e098ee48f5b65
+b0a6fd67bcfc1c63525e4e2f07e7428e365baae56815de9d34af4bd7db10c5cd
+03a482df5ea7ecf9d6188d3e5df88b549b93e89fb8a05b7447be1744cc0c0733
+4855ea61617169479037bd12f2eb84331bfe9d701c443b23d0e87b62a14de0cd
+65e17c257d154a2192c94fea49ec3f33c3e0f1728bac0a1b81d4c24c1a2841a0
+fb7aeb79533623edd61e70d1611a421d68ffb8eb646aee90b75451c9efe03da2
+9e81fcb466919aa1eb45f2e3ea711fb0b7908f536fd7d7a695ecefc6b5844804
+00cd052869b3961698688d2b6b0e483dcdaea5b412250c43632f8510a529512e
+35f5d411a48214be3522e3f322ad28bfcb4708d2b01e7908778c3691ec7d7513
+569feded440ccd06810714d3e6073e9e1c0a5bcafff3b80458c1251653d085e4
+9a9d1c769d8ee2924ff2d5948f5503cf712559c01e4bea2f3e2c7854f81a45d5
+bd09af9c6f318d2d3ac04bbb24c9337f585a5049648fe9c094a1d9b0b3373899
+8175ccfe27157f3682b705a7c5d668e4fdbd69b4d69cf00388cd72b1cff895ca
+2fcec50db6943f4ce147e1f2c3ad42793af31473f91386da2806b236b43543af
+1c54f2bdce6b8d5a69846cccb9f1a9b58d92c68fd397aba114ad67cc782aaf1c
+bb55da6bee49331d6e4df642f6ff61182e88e9d984425fb0b75bbcc4a55ee6aa
+ac7857bf758be5d14798bd99c5d04468dabf9303fde88059e23b6ba419815435
+151324b6e55192e9f6648213a1415751ab3ca053f273153adcb1c0f8d71a2cfe
+06ef9c05150703e6182e7c0a711b0c41136433a61b4e6fde4b7017a8e7383fd6
+ab96cb8cccb384c4879d75f57c01a9ffbbc310778018ea9f74ee20822c230e84
+40d8f639f46236103b460e6d2b1d8fbd1ccb893916b44ec210c7ba1885ff4b6d
+a581b4f8fabe988abae8b3c253b71544f87cdcd3f4b937bddafc6241475be533
+16c008e0c0521d6f24d620ad5efe4d4200d0064f444b7878883c06ef9841b587
+1729fd793e0991144dc0d106632927526cc5bc6bb62d2c22ddefa7673c908e6e
+eb299d737d5a27be00f95c2c13d562c1bc4dd2587138a2d817ec3c2f6585f0a3
+4f913abc7d26fa4c9bf11f45fa198b499aa6075457963fbe58d66f959a8da5d7
+a2ebc4aa3daa546da3b35f1248b5d40520bd3fd81002459026c9db7dec2fd4fc
+39c65731799b92d483a04b177a610e98bc7b37cb4b2cb003de8396b8ea2255b4
+1e460c4cebaa8517a820cb3b904548e3e78d509e2ac54f7beb81b85cbe9c8bf8
+81901e9e342511a9f2e03ab16a4336dbaf7b6891f526f22828d01504bcd7212d
+4bf1c3db3a20128ca6afbbf1e7bd477446e1eb9039e817036f93dcbcebcc5296
+c42ac075aa70ca823eae23ceba4bbe01671ca0a0ef94209452829c5eccd66d5d
+1093f25a53660fa26339335fea33a0e42cff2da6fc493f03fbf030fd00fd620a
+8291ba5e9aa6a10fa35a58991f2c6706c56c24bf66d77da54a09f45ec99fde32
+509fc38638bcfedd7da95be20a09b7bcb452445f1a1f05ba4e2e12cce784fe2b
+8839e3c52addfaf6caa50aa375a5be7bb781d3398e40c7071a82658bf4e02138
+9033a55e45a5a3500606d342b98845d8241e5edf8c3ee6b404a59b4bce2d86a0
+8e0544451269d4d56d59a9587daf993ba77371c1aec43456aa3fd57c3e67f36d
+7091555db6ea399ae89c05cc6dff8403a3b53f3792d195df7254789742026145
+729104d08d7f93a3a2a93d5e5ed7e519379a6b5db90796cd903f96de6b1c065c
+1c291029ec32f248142a66d6ce0aee2ab004e3b796cc1d497a1b4d6b3a30fd98
+a920d7f728ddf1eb487c0d43a2f9fcc6112c3403fbe9910d7323c7b12cd1a7e4
+e0b9ab1ca8c9847153c63dc348e73a2bdf8e4b0eef1929fde460d233d5da414a
+688c05614c72e4ad23014411e0b605cf212617272ce45e3d9b01cb8c4c47f17e
+36bd4044f8f01558a80549f7878e4e12ebfc4e9c84a4e56af6e377ef0e44d8a1
+a8b13660cba1dc6ccffb0332f2068e7af58ebbb2085cb4d6a24d6430f050a312
+0a07f7bc255755d4895347bf939c531ee3f75ced5834429a7dc1b8cccd7c8f11
+852cd3a18a18a0ad336c7915725686e76a8465f449fe35bf23497eaa1b8d71e1
+53e9e3ee6f5fec0f9941067232a91cbe7a59017e2116f980c2e197d0c1201a19
+bf8224ebb4148acc93dd5c6d3277494601656c5b8060e6d6463b46e734297716
+597bc3072e542eef1a671f23e859a1c262a000eb910f0a22be1bbba951ba0011
+26679a94cd26f1c6fbed5a59cf064e1d3ad08913800a44cbd2e56598ec3ad652
+0f26727b75ac23d9a61f49241d2539db75061ff39e90d7c0d341c57cc9016341
+ba9f550151cf3aa5af0098c24da5b29ceef5b64f14fa1cf9be1d10f475084f0f
+d820471297b963e53c2878931f1a2e7a4501662c890c9532d1d3eb2a1a93bb15
+5c4320ab3c8903eac013b1030e97e054fbcc6260f25b364df8048cab8eed97b7
+cde46154fa5053b68ff96150aebe988a6263c3bed24db03b20e034d866dc8dc8
+73a96b4b3ce3a4ff5d2864403e466f0aab53e31bf891dd239d4c6304f9699706
+cd9dea0eaeb74812be25d7d7946a036a49d6efd1830044ddeccce18ad02143cc
+9e52cdb16d85ab280269389c36a0fe61a3c5393d02ff11f72c4ca939d4a60294
+2609348c08efccc9d1f7321c021989acc463995c53f44d8b5b9b6c012aabcb55
+9ad762514a9489ef24b154b26360bbada53c1e67cfcf412bf5698717000b9646
+834bc86b003d2a580f8c1b3ae73e9597364969437eb497778e6e657f0fbf5053
+132c58c61d9b4382e6bfe5a8f07e1597b7e1bf05ca25122c28c9e75e4d880d05
+4b01f11a75c0fa32fb4d2647153961e0f8fc363ae123d82c7750de81cf364119
+f899596d2ef9b25bfbfc879312eb7fb12c8b8a1fe7e8e95e291293bf13228354
+bdda62320bb515fb11d30b392d640c6fc076202afaee1da506c2684d7d49f45a
+dc241029b2b27296479574c8b8285cb26c1e5ae06454a94e927938536c37520f
+e616280e0e2c68861c024562e55d2c41a6ba3e7bc173ded4b722a3cd51f7c5ae
+131828d65349161fb702aec7d948cc8803405efdc4cd1e527930bb16f9bec0a8
+09011588417262b3ce23044a4238b6d8b57f155bc691d12ce769bfb740bca1f3
+b40944344a4a606fb4e8a08dc17e5666cab61a6b66e32b38cecde9d1a0df45d5
+c2eabc08b59f012df908e04560850ac0e2ea123d8f50d0d8bd2cc9449f5c541a
+e332bc5a2542a294add6f5ea0dc0ce6e8a3db8ca43e664ee9727f37b72a4ac0d
+f351e47b1bcb0ed4cf0cf6b338e69c821420683479d687bfbee763a9575ffca0
+ee382e755bd17bb033434004d88615c198a7f2b6805c9c7591a61c2fa0081aab
+3dd397bf10ba89ae6d3e2aad0a6f93649c9e849df59d436b09b67f2c53caeb4a
+784f8154ebfe20a4ef1270f11a05b7761ea59a5c0bac91fe9baced9062478cb4
+136292e92fb06fd398fcdc542ecb44d71a902ae5514c98055d4a841f9a0505dd
+a78e55eb328672bb29f0af93c114bc0705e9ff3c07cd357b21a796a6c4b796fe
+650d8e3ecb42d074e86f3cc39b50606a1d19da4288ec18b1343408e891e20c71
+d0f62f4b729c0413f4b76dce77258b4c989c5eb7e8024434265f5dfbb5e0a3bb
+b2ae718bb4af607910efb762d9a78b693eec1945d5970b557de79a998edaeeb2
+11bbe8344204d6f4743eac9daf9de5a3e3d98f29cf000de6a210f6fba6920aa5
+7ece753ec36efb5856babbaf8e1e47068be900bf8583b445917aa657616f6e62
+f0650a2d0757dbeaa5e822e1da6bc267b862453b133f0c26f3a3a72c9ba475e8
+da873749e64c5e81dbac4590ce1c9c1a2d5618fd2ae0b660595209424d1462f7
+d380e41e1e5b54e072494a0824dd7d20d053aa4338a85db4ad3d50171b65f215
+44ecbb9be3ab7df4d604214eef1360e8a8aef5ed77d3e63b5c1a7b66a301608c
+17358f863307f9238383bd1b790d4e82afe3f930dba37cfbfc3fe3fdb9a55f9e
+61a16b29f7ae4ab78512338b86ae8e005120c39f459197735b8c9edfc0aecc43
+8e73550b50130cdab30a367e10f3b1260f7f1aa1fa2f2b327f11a8c0aaa1b143
+828c517be8c16de08fd3af7baf3d193d8c273161196bb33092e7ec20446f336d
+8a5dfb12f0b3c3ef58776d5033b5eb529d81ed5fae585fb306850ade09123aa4
+1deb7d721002c64660c3f3c9e296ad7eb4746451ceccc6c102cebee6f09e6d33
+83e54f2bd27731c60c56edb67fbe5cfd3447a7388e1759918e4aab00d96e5b29
+9d0f58ff3da4363db16b3a563621e140dcc259a627ef1a7f14fc1f8fa014e600
+1c3b893d53c8df9c4b4a3e2578ffdfdfd981c68b300a08559706c9404e7f64f7
+728a25c8537d3e92d831c2de05f20c4e3b1ba9f24fb9b3fc55f6128a04f79eb5
+773dae814e210dd472d262f898dbf740acf948214c04d97ac9acd1ff1a46f0e1
+9cddefaa157b09994e2b91533c9758163592f90730066f95141cb83cf4c1dfa4
+1813375503da3f84b5b3e3134af4bea18dcc0e8e52fcf1c5cb8ed2ba43ef12c7
+d00872033bfa574397441322e5b0fb98a8302b5d64c618907ac0cfacdd3ed0d4
+6c4d1b94113a45871e47b6018c8114a3021ceec592256374e04b18b21accc41e
+aacc3c0d5fe1917df96e3baf1865cab3e31b09e22d8f4311bdec4edbd865125c
+a70ba95a31ebfbc898a589fc81f573082ae15d1f185c493315649b6b70195fe5
+ce745533cf38e2af2daa254b1c52a55bf39eb42966d8998433bd6e4ad607e65e
+30efb3b33b98c34a19ce648f631540a31fba80f6eb0706c96a1a18143e61c04b
+087bd091a1b374743f0f2334bc95e4ac97508cf9ce267cdf60e9147244c67f2a
+6685fc77153f96930e7383a25942696140afb2cf31388ea07219e8fd527f3771
+0e6ad9f3e9a995b9aeedc49888e769170fe53e4c1eb5ae350d783015568e4a2a
+8dbdca85218b27f6b6c041036b7397d939321f906f3dd651484d28d576d4385f
+fb5cc9dab21f848971e0ce8dc907bbd1ddfdc47184f20c7ed2cc7f9f177a32c5
+c91a23d0fc6f95e1c3068fcc1969eb2e14015e5ba6d385c01f38b7bc2029c5b9
+7e80babb037756131bf5f6cd478eed6c85780653b06abfad73db377d4e9d38f3
+a1848edbdc8362bd519b8c4b6fcc4e660c325c8ad30e1b301aac8179cc33688f
+9230c1dafac25bed7b81814b7863f3aa88c229418428b2aa21630ba3ab5a8073
+4b93497c57d4b039090fbe81df8b0da1581064bc737c4868f4747a4fac4cd799
+38122d6f87531ba219acd903f45abe664401e808df418ea298c59b130e035b17
+63fdc96c9133754d9a810539a7449c7afeadac9e48a357d8e15441de63df90ae
+b9d21beb4290149e6a1594a639dd1c70a034a11d3342b8d34c149f063ae7001a
+602f72eaeb357bd23ea898e8953bb5d01e7937d5854e1f0df2f34d7e169dec00
+b63146cd0d26bca23152d5a9e3fa9896ba307706ed8e5ecb636f33cd7a87aadb
+adaf1a4c0eb924ba9d42dbf33b03d5cf30acbd0617ef0977fb9ce2127b2a7b20
+a26d343116b338f5b184880a7cbc015a5bf2bbc32301ef9b746fac45f4dfdc61
+bf542a32c6142b2744f738b0c1fbe236bc8c6780a225ad9aa2002d55066e13ab
+b916b943bd768fb5e53f100ebd0bffac4ba944206c798e92d367b71a6f3cc3e7
+f3052f4c8fb0aa8ed1b081ae360d8221dc4b715c9bcccbc73df355a6f19f0dcf
+e7de0a64570e3a0e6fb5694c50f7bf326d451683879613662c24f430510623e4
+13213f2f58aee913a30c8c1b4f141c6031cbd02527af9146369b06dc7bd18bb3
+ae6cfe8852c033be59ba0693f06a019789daff7b4dc583cdd16a6ce8240a1f4d
+1ed904bb957309c699f62e7999500fca93eb36a702dc05fb46515b1914204b2d
+5581cf1bcce85b7befce0d551c55d06005cd95c99fa5c51285b97dabd810694f
+543b68551dff02adc0f3afaf7641454bad5db5b1224209ad72da85150272d40f
+438e6e2e5e7d7e0ce537cb69c7b443bb11b2d6aa0220cf6a606c0ec8e5ab708b
+0cca19d58820d14e12e40b8655d5dc59f51aaf42fffa113d2b3826427f3e7e64
+8299da7da59e3dd7bb024bb49bb210aefffa4e3ef9e3cae1561ce416512a0b6e
+f2df437de380adc3c183c826667e37d223a4481fbdd72156386c1320ef662115
+f550b488ac2529d04e752d01293479608a2f8a0dd3021cf55ecd497feea2901a
+75270069311a9649cc27b9e668a0e5281a31c087ed1f540dfd38d892ee8859ab
+394e861bbebe0fb6eae036f975a7cbac44e9c2acd79541aca70feb2f2fbc9c76
+5e6329fe539be570616749c9cb6a4d74dd6ad00dbd0a955ecd51e965b85f309f
+ccc1b5540118ef0850fbdb2261477d0d92a1efa54b875a60865854ceacbd665b
+8780991259f849bb8e83f8b8ba6e2f40bd34a04dc648bb81fef220e5a20ca514
+7ef436586c88f9e49cbba57d52b18041dae64bc64955ae8b51dbc92baf36b37d
+c11b966cbba82e46418f5e3f4fac15834654bdcbf5160c58e9d0c5810aa5e46e
+65b9d8179989be28b444f6270806165f7d3bcacb8eb1ace9f36ea75f9629b714
+11624f866bad4b6542e7b626d1cf5cb0d3b026dfe4bff2c4f8b95aaac749c2af
+26638b3692fffe4b1cb977151858338c82a5c98c93fdae34019e8c918cc91740
+2263cf6f61c2d76b10000816a1e710bdc56cf7ea91e1346f6347e0a0f93b8ab4
+ab1dfcbd8f8a41210ad2aa4efe27b5acb905b8e2c62e708da5250ab02fea9924
+cf00fd7db40265745bbe9f774f2f9138abe820e8ac06e294e61fbea761d92e73
+9263b4f11c31305d7a0373ce70a47447c63bbe227250ca99a6937212c9c3d22f
+b6a0382a786ee2e686660a33f9f02009823e87e4733b72d6ec0526ae96a33579
+6882473fe3eb285b56eb17fbfcbbbf5f00e717b2889828f08ffb4a243a9e2fd8
+4e91e4102be32a975bd97ac1c501f8a4602d9c4161c2a7d552244f56bf0a3ef0
+d335ceb59f7a381e65aeb72ae2b5fc201a3c8827f245c3fd1c825440369a24a6
+fc29318a12512c44bb25ed299963c5d3e4dc6f6b120f0005cfe31892a3d5db99
+6cf26aed7f729014406e0b7a7e141fe1660df15fda324dc1b2370d200e4e9148
+fe5ccfaf2ec4b128941f6b3dd6de4e23cfcb49956a9d97008341273c83ecc154
+45e06e1c643b598943abb4a2aa515b0a707de5f46a145d93a22c1a1f89031631
+0d19ccea4a21b1bd260633ae2ba992c08dd0a5d2b3a3ebe560956912597b8f46
+70f3f3fb733a8b9bc16784d5b54013be35392d166f635d9394d90d2bc362d878
+2439426ef480a0cd74987cb716ffe003fc0fadd7e579944fb91e0bef4f037d52
+6883febcbf4b9fbca72203394165d349e7668dec32ed3444c23840d7e923652b
+3ebed5431ab4f53ef289bd20dd9421cb78ddaf85d9c551e5edc8a1e6643c5b79
+6f8305f236d75b6e769bdf08ed9defbbdcac8225accde52332e3ff69f0125bb0
+695c98c557a2c67bcc72dc2f881f943cedeced682cb1eebf34e0328726036160
+ae86cc3597156b0dbb4700ed80daabd3c0c5036423cab49f12d39d096b7fc4be
+5905bf41345babdb699f06871b97c9f9e3d1762e6744448cfdd6b7fb960e4d7f
+163a12f99676d2c0e625545ad05b3299039a36c8ef48853f32024cd711c1eb87
+33b3c315cd8a041ccf23a1004e2b43ba97b7c2efbd15d9637bcb9bf58e8ec0ee
+ca80fb7dc21ddc3fc37b638a4a08764cde48b2009a33a44d5a698909ffe84f34
+dd5d5195a39af9ec9ed4803d87da2f8d64f3abf2ae557518b1f9ad717ff7e445
+6eb9c3d787bf1f0bd8c19fc829abba6a4ee263fa3ea23f91a905b9177d37f5e3
+9189870546e30da5eef983b788c1b45bdd617c9b1e58e4515a95a56fc39d92ac
+23a3605ae9c4fe7c3924a94c641b2d73f9a9792551c19b31503aa82f12d31e5f
+0b4c7d7c18eca903448e30d1b6eeaad2b1a3144899ecd8a880452fb100d08ea0
+74fd25e862844ee52d64564ed0b6c6995f6b42aec6b6f87e9dd8468ea2e3da55
+ceee3968e498e3c4e3f7380db2b33b1853844fa993d9c2cf406484e145677d9b
+ec92fd777c8b7137b9bad8c4f8c021b2211da452f369af38e10cc35d922c94c4
+cf1b2b15b35e9b3bd7cb33e7c6bdb1fdd17481e9d736ac92afd11c5323220aa0
+150e0e42bbce666b7b62f7f3112c114f522bc9ebfe762fc5ee5bd180454ac62a
+33b45ff9d284229d92d33b69868019dbda49ed5f6d748706981ec32b3402bc05
+9f01717c07c8220be4eacac40f698a8b67ef9aa71abf79ece8f4d274933d847d
+b94fa7265b1f5d226c30fbc5626d5c0a1f783b0f85d6b65b024d4163c843814e
+dad2d81e17cde9fb3c06dfa350dd39b049f8379df4318606ca73950e2bd340f2
+aca72d8082ddc2c9fa8f5d5b2ee72f7a6f4510600f90b03c5c7e688185540f89
+70d0e030724097397558350bd3d15987b2d05823e5a3af935ed13a1c03a3a3eb
+996753a54cabfed2df2f2e563326bab499c82bd88f85a75a39b936211c872a4c
+82848cb5fdb0f46a3b4925f77c74736497a65b49785c947a26e3c6adf87b4f81
+96c5611e32b3e706db10152691b3cca2cc2e897fadf5201c603b832d4f6fc5a5
+59fea6d6e8570b3f1c61044d0c8210423c4b4a243c054a50922e82a5e0e4a76b
+3f0b504c03b7c3fa0f0b3fe9891fe56ca6d39925717d53794622601b931dbd5d
+18fa0fc17356bbc19fa74c99daf9188c047bf128f065d678d503e2cf62d7ccc7
+10bac420a451fe898dc3d1b56010d4269e5ad66757dac22a8865121e2b58aa88
+f330b1c5474e10cee3c1f9cab515491ed4909d818cc7e7c06aa0f4369841f9fa
+28f310142372873dca8b9392f4bc08ccf50e2208028ad02d9d02a8593a61c78a
+51d4e51049b5bdfb1fa225e0395ee5f2bc03a4a80f724ee8bc5ab61c58ea6121
+3dc0a4199c953e01ed99b01012ee20c9887ba6311f90ea9b3c9e43e180e16135
+5dbf7cc109f6acb69aef5b91cf54f624e867b360ee79e3c2f5011dc78d9ddf08
+7e988f8f4af26ebe0fbb09cd884f387b7a36fee662044ed4c807c5610476dcc3
+6bcd1d00ba03a0f963be37b5eb69de86de2d5d6418455dc5999501be63bce868
+41ba629d874bdb297b2033e8239eb45f34f2453564d46543130e9b1fb64b51cf
+d5044d11938cd1f9dc61172b744caebfed43e598fd56c973fe82a17cd397afdc
+58cd5319e73cd3f624eaeb55aa565f1aa3b47ced17ee6b8d39c9e6bf2922be18
+88ea232ffe2c26bc8dcb56d5c8390794e8a63828950e27976b197a1ad1cc34ad
+8ec274fa3cf55e3689f2b2a02055e35b5105a866fc013f6176f98b8f616a5c9a
+664c0927de1de8b7ec5725c641db3c57795be484281c1a10c37a5eb4dd00a141
+c73b36e1449468568590347a13918d29fe39cf74bfebd97bbadbfa0814646ab0
+b9d342fc38e2afab5ed0783e3a1344828ed499c26d9b2e6a7ed688ed350af88c
+d543b73d9a4705780552f5ea877b8ae234d5c6fe34ed65c8a87eb596fb43d7d9
+e0b0743037c6fde489d5eee6710b3bcf7b3500b9fb8e134579f890eaba6eb9cc
+eeb44a2cc8643e551e264399a26e167dc3e7aa93b44dc6dffde6eb61656e6a8a
+d410aea99af325fe7bede19b1e87d214b3f789055408dbfe4963418db3984900
+606ab7d83e0d26765544ef3b3058a5d351967571f7e80a50aea6144b4caa47ec
+38e8700df75638764d7a537514988d8bd2e481ba53abda9c71b3d8d10f21c752
+320abf690a24882bd1f389320693f546b9fcea9597a23b7191891930b1ce4932
+6e5f9bcb1f1302922a37f081f96e82d48f1557a3c5270973d18be85326e8bd5b
+c439c04996eaedbe508dae1d94d34e3f9c45c994bb629e711d835430c4c0742d
+a927160a6d0ad145afc456d995acd28560282b3b47725ede58dfea3ef7d8d6b1
+156d33761c8def60a8d0e6eb7fb8b9b5cd2860105bfc0dacaeef6c2915cba3fc
+519858b28773245e57ba0f92c9b69b9cf316187d1c3a54de6bbf4a981e5806d0
+77b9ec636083ba9e760cfe19d14c8be995a5965f5baa73073cfae833dabdc512
+ad087a79a50c76d03b07d9e90b9b2cd35f2d50eac834cdce499a03a1ab2c198d
+f5839a22f7264e75845d382c03778f2acd1d7f0e2d15cf955e7cb2285564c59b
+6dc831c83d66b0fe812aa8e1d1f78609f0028f89650c456a8bbea6983866bd12
+910aad32aae77674b2b67911b89ede25fa59e8eb359fb123f103ab11ee1f60f0
+740d0a6bcfa80c72ee18eef8b21347ba6fa74292a311776fd8d2c65b86ff5ac4
+787b29ec6f5ab45b2c9b80d5e6d52412f95f0c23c76635dc0617c371a87734c3
+7ade5d754f126dad6b726406d55545f81d65bfb6ff8bb4f4df9a4bffdd14239e
+68d3f82360f75789ec625c0484946be969d6bf3309b8ac12fb0e00deb705bdd4
+606933e3594a85aa99c92bcb3d1aa444690bc3500e92065e11c1ba13d513bb3a
+5a6c867d5dc1d4e6c4d06178af3649c13fe47a77cd317c2f71b59c38caefc043
+50717a156bb38009a2fcaf1e12aa64f885f6ed4925329e5c22b009a15ab0bd0d
+6b936d9d972aafad96c4e46e6bd0e718c9e83858bc13c91e80024ddf81223a49
+2ccdce03793239919776b39fa16689b2bca3835d6547dee498968ef303edaef5
+86c8db6ec5e40f71fd4d5af8d321cceb3587050293b761397d19739ac9c22546
+204b24f4a6b9122dca1fdabd8c722ffc5b3594d09f49e698b8e11a4a16db93df
+f80863d38b441576d256fa09113f72a210801284984d15b52baaded7a0f60791
+958ba63a744c5d24290daebc496477a4b1b8236f4e5b320b35c5df51bb98782a
+5ae5e3faf23ada881aed14de7d51fa60584796c1e09e0d04baf98003dc45d27f
+152fcee2002551f38df92b0d4d40e5fa876dc542449fae50de3a6ff4896d89b3
+130ced731f4f079f0222d258add1d41d683c457925c7fa1f5c083db4e7bb1700
+c6029278b1e412a1cf7896c8df9667591caa7b49c130e45bfd69cac33c90c536
+3eac6ebc5f42566b4a2e9512552b9901a800551e10b453255d2524415b442b36
+44948eb7ed59cdb7a455e0fe90de032094280d7b74ac18dca4e7c5c13c556a6d
+6b6dedf33fbcf17b9457ef71f8d4f101630be350c4052e327ea814632df7bf78
+bbd894c69697
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR12
+%!PS-AdobeFont-1.1: CMR12 1.0
+%%CreationDate: 1991 Aug 20 16:38:05
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 167 /Sigma put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 183 /caron put
+dup 184 /breve put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 53 /five put
+dup 56 /eight put
+dup 65 /A put
+dup 67 /C put
+dup 72 /H put
+dup 76 /L put
+dup 77 /M put
+dup 82 /R put
+dup 83 /S put
+dup 85 /U put
+dup 97 /a put
+dup 98 /b put
+dup 100 /d put
+dup 101 /e put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 117 /u put
+readonly def
+/FontBBox{-34 -251 988 750}readonly def
+/UniqueXX 5000794 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204a520640fd7c4d05e35ea5486f
+a43d0e970787203855daccb1ed0b16325828b13b7c767a1a58c87902f0546ea5
+404440fa6526975783c2d7a9572b8e5d5176bac598b8960609f49016aebf3763
+89c1adfe6a1ffc0c53b3acd9d168ec3a278fd4f1d9b085dc2df701346c9d0887
+3d230a161692b42a45bb5da343b4edd839dd60685a59aaa49fc65cd8e2ad2a9c
+5cab953495172a1a9f40d5f38e922443a519dd96f667201a408bd1d89e35f4ab
+98e2f68c3366efc14b5afe1018d9c845d808d4f8e07ea8168518a171ab4d6e21
+70eeac099eb7ef46eb9781384da1fac3b3133bb718bc80082eaea88759745188
+f266b31d0c7e791d633f16ed94e05517a32163e74cbd96dc5db066f2a5313d6d
+7f09465608cb404613e0f058073af000e5bdfafbbf9da0c0d5c02a3447f2cdc1
+f56481901e34265c26d331ac3f85bdcbc7c51ef9eddf2b9c189c5253f8e74282
+d6f053d7d183ae17ea175e5ebc401e67d21a9fea139cbbf3bb1358c713a75843
+b39a69aa2b1a7b975f53ff22d1dc3bdf7acd17afa1da21568310c68241b31d3d
+03bf404bd30baf9cc19c75b958bce7155f03cb0cfe2cae0327aad4b603284a51
+7c26de75b8c6f6aaa9debe4aec08ca4b646d787800acdb445bb55d10cbc2237b
+ffab58a0399b8e1a4709eee6012432005487a6979cabfd75caeaa480f411a990
+8b6d3a2e7e6937783279ac9a51ac69390985d83828feeec2ea288a657e0f79e6
+8ac3451a6bb1c8989c512da066d6dc771548f2da3b78d01c03e2f8f20dbe256a
+ecfe723afaf1bd728b86f31fefb6a4cbbca356f80b837c9a5acb8f511a576a6b
+8ca0a701eba732630025a8438d137831678929805a6e8caae351ddbc9a5be60e
+c8290b795df0ddbceaf0159ab4e7756d967bfc714db64bf3d52d3fd48d2bf9fe
+81eddc7b93896bcd6ef31d16318bc66926dec09bdf0f13a926a61f2478fab226
+c0b5cdd5ecb58f80a4c607a6996d0240d5f134164eb3f28f633c5a34ca611568
+66bcedc3f205940ceba743e1bbd6f357c7a0b5721ff28faa8163f43ddc47eb4d
+f843debcf67f545c891d0358fbd5a036b5579f8c7533f2c69c377e3565750812
+23fa8c2bb6c7c09ad2761b777d71b641b3a0f8671180666bab79428a176204a5
+ae6f47c1ea216628aa4b35e1aed2fbc42673cbf627e9caa7be960ef51b59351e
+0fd9e50fc5ac5bcf6c4865b17ca3c46087131b3cc9948271eaf3b13a52dc77c1
+03f0100440420b2ec634ca10151ab258c633aa7ece000efa154f4762bd207d77
+975533231ccef58b3eeafc2f30dadf1cf03dbaf04975f610cdbd7f431364a19f
+c550610c852095ebe09bdd546328f6975552839ea7cbd7a7e0fd757ce9b2a81f
+3ce197b8ecc9bd0b377c9c1e1f53ba887c8c0d324dbf123798da7df428f73e8a
+057c68820c1ae7e4c8ec42bd778b6a4832f564423c3271967353e442cb8f2fbd
+30bd919a004183821b5dc8516d088a016386917b1fcce31721ef3ce83a0bcee7
+dd6ec2df60444b5603cd4296ddaf486f58f4b1843e61f827d70b0abe4f8bedad
+5c926467e458a8993014d4f708e265346e92aebea6927e5a6068052a08f892bd
+01a2f4df66503adea6fff8fd438aae718752732bde0b940de574ab99e2f6f6c6
+3e4ad59be89d63afe741830eaebaf79d2d5ae7fc52a258feb4b2b4b9bc1e13e1
+0d6a09a4fba9519301933eaa24ff0b06c7323de7202b30fce5519327c0b4ae99
+2de3fc986edd86ac55997707565878648f5d7190eb0d8c142d0c30a8a511f3c9
+df9334c0d8d5ad3d19a91283ec2af3751bf83977325e83b2ebe4e5c376fc0054
+2c954bc2ed2b8617815670a88189fe8b3430bfd631bc210e0d6a917c28f710ea
+16d183640a0c7277fd152eb7a2da70c0d8461b084ec8136caa7ce69b692df63e
+53a42d27c271d75f443a8e0817f0bd926e6a7a97c44dccf0241fda6e7be45832
+571a70f192330f1aedcab310714e53fa94fbf974cf6c0de76e939e452dc0814c
+615f9d6fbdefc337866410b74bf29432badff96972dcf7666e945e043a14c46c
+6d5ac50409cd034118a4e553ac885f77dccae46d073b026bd8525c75b7824b38
+f24703e2ec7420c276652b71b91e47274b902bcef485ca1a0494a20878f595b9
+80550811c6484bf1443c947cd4a0066945188bd943163a82dc64e580ca936d95
+85283bd5a80cd3fe2907b356103a56888a365123174d21c35a107100d6d6b411
+b3f25cfd12ac11331584e8073211d516aa7c01a52dfba07f7d64909689725c07
+4529abe49b1c7eb9fee907e3c32cdfb8ac61257d66169d6befcf615e536c7176
+af1e2c5b7f99d06451d14af25fe195730d8109c18b212d4833e2382decad0590
+31d5a09bcb6d73cc863a6bfea62105d1214db757b2e49d7a4420b1a9d4081308
+1784ac2421709aeb91044be23c42a90b9e6ba334390c28c1a115fd9e86e71774
+89d350234a3687b58629a21e7144df3b86a062525555e9b76425f3c3b8f25724
+9d4cae2737d3f57887cf566363ee87ea0684a6435cae977016fd0b5e6d8a7931
+91d4b5bea0aacde57ca893091cc8066232fe4adaa9ad941f887fbc35a40f6955
+e8a334bdda76f35960824c3e526a9c9305545a9b6749989219c57795603262a3
+815cb0425bbaeeb98727c38e9d6baca9f0650e2bede660a06a0f39cda38b6d85
+918187e1272e12e011a3dd803052278af57131223d9348efc3e5ee0306939b32
+6958f242bdeb47b9b9d54a2f28baa2e5dac2eb745b83920c344e3d1271b3acd8
+ecd89c6d5a05016404fc9a3e2ed0f9e424922f4cd70004d93e4b6089bc8fc43a
+d5d365399bb2bae77e01b50e67bc6ed873db69699a6ec4cad9346fa17eb8116d
+8ffa412509c9c4803fd488ab6e91522109135bab78048fcbdfb6cb685b909b7a
+2f9ee859e45a06543ed357f7b2feab6775155706977115b87dc3dfbf071dc171
+901175cdff37c64b777bca819506d9bf916d4bf9c5bf7c869840bf76df0eacf5
+3f13609b46b6640fc9a803579f6b8452be993f2047b95e904f612eda7671d507
+7254f1e1015cd86242ec626f9f56b36e5a81fc52171d6c27373e4b1010a032de
+3bf146628310094707270e25b6ad4f76cfec0288fcdbdcb3eb09b4f4c81d6672
+087c6cb5219c2ef1391bd475ae28a0e2caed1c03602fc5cc839b274ecd4ad8f4
+fb9febf7f91b5460c6a517539305e13d1284e03aafb66af567ae6de1469cecbb
+b8eeb70ce8f22afc3ea8ee9990fffe2e1ffc53671da630d27b655a3d6655b0c1
+3df7e0c6d9b9948677816d075df220b5e3ddb3fd54a17a80c3bc789fc9f1883f
+6f52e2111daa9de880a87f89bf183d6271a1d8ba654be8c34452667391148aeb
+c9c5c7775e1b2676baa9daec7340cb3ae8af6c054fd0c78fcd47612e505ad99b
+dad204973b1f752e446350d061a0e5c5dccb58d151f58e6bb127521abf0d6883
+fdf737550906a67e29a935b5c4b1e62ce838277fe6b5b9f5f0ed6e136149a13e
+b0ded959afb21c3a6955c3d84ad9c5af98276ed891b700700202fefa1ee89541
+8af81a6b2c2326e19d039e69749530d3ecafd7fb746c28804350609f98357e75
+d7789800b7ea042556a79e68ee42b03172047aa8b361b33d07236f8bf7c68722
+3cdeac355c76fa3f03c1acf9ebf7039447dc33cf8d3ce4a1e295f1c99865b0b8
+05b2bcc4dab0240864ed264519148b752d6cfb8f5757270e95206a8836f04e3b
+27b078a644db285372036cbe1d7e47c245be3787e7e1c8f3d40b4f56e4fb4cbf
+a9c456f6ab9760ca45657c9e73e108a1ae124ecd1dcae9bd1a26474c6aafa871
+b14dec020aede33ce08b29db6d66394bfdffb31815b420aff55c9e7d64b66ba0
+c5fb0fef277f9da776df7c0826fc2ed3f07fe154a42cf9b34eb8c0f0f5e34036
+e50cb9cea8fe3f2a4712654bed159b5dc8af473001a686c1a9f679e0a47ddca1
+d6a44ef4fd5fe3640377ce26e4ff4d1cb97ccdb186e32d9a986f18f2a28f0f69
+f5f0e7cafc5311358d2c79531e67ae84e5cb1902e36ec2294bb590e62ad1d6c2
+2e66ece0e4ef7fec162adebe8d00849b277b38c24e4c0a25eda30ff359050bf5
+8ecdee3be3e1acc8fb58ad42af307d9faa53e0fcc0aa78ce9c30c2a6469f127f
+eb5c20232d03e883eba820c3b2ea051d45db5be42a5503739c7d1c99b1650c14
+ea70ce2092794810d9a194cc72ca7cc2d527bc54eb38812d5051b23734a61231
+6b508cd45993f0f0dccc506baa45b82c4d92d3ea4a846b650f07660008d035c4
+86c02ed4c7eb2828487c4b14eef1c1d845280a032652c6cb4e546cdbaae92641
+d3fefb682e8f48dd3802d51e57c00beb872364271f8e9e552b9d5dc67eec4e64
+15088bafd5b517f47e0e1b9bf18bca067d5217d6251ba2af6258c316d21041dc
+9010c0ae256924213522a5fc79bb903e5a91cc44b0d7c32b46256126a43c71d3
+69bbb936974caed4edd52814741b53240014281e4b90b41f68044b7dcf3d272c
+36c9fed734f08f43473ac50d4f776dc53da181a26e45828cfd6c72025a5db34e
+74850e54432fb5882f7935d43c9d3cb8b580dc65a1183c8cb6d36e0d3c84f532
+f14e70ff84032db6929a8458a463c34af52c604f95bc3502161342c4d25613aa
+55daa197e308586ad5cda0b9c2512c87648cfd56a19ce6d23e0e3008f3c60924
+a94c8f0b1a64c986ba041a838c3469da8d29ac7bd4c448b31320e38eff13c684
+c83716a8df972e0ec26c2294cac333b9dc719144c9104d158a9fc7a6bb11e2bc
+aac3de8e39d3ccaa3eb077b23811139ea6a509d6762db01ab3856acba9766d81
+5459252e451eb715c7ab00397c2d43e6cbeb8cc210f5a522958367940f72e361
+89efdf9942d2b5d98bb768a488f12b855aa9adbdd03c9a9973509aa5f7156ede
+609fae5f0b16c552f294097ff05ba7002232ec3de3247199ea2c8c0d2c9ab80f
+bd7894b23da86db7433b1bf3e1c73b86ae47aa7a0c548dc208d7063185104462
+7c11161706ddc399ec3944c4eeeaa8dc4f0aae2892d954858fbe1d2d56dafa44
+e1c92930fb75b4722d66c617363047f75a8c210f73d60174ccbd91a96a210daa
+8306f06fe79a3fdddef6a959964d1503393ae6e4a8cc7bae7cd2aa4ce098a31a
+72fb55dcc3c1b9ee7ba536e850192a6f43d9912a032a3eee186f5b3187730584
+c06a868826d681c53549873c5cdbb4fa5d9485eab50c543b6491c7ab1daef572
+6a6414761c7450289626d967ad45970c0b993c761ce3fda6caa29160bd7317a1
+c7d9fe97bc6acd71dad0226b47ae87d6f6ba8943c3a3c2646a2b8d0b2be8d989
+003b6415ddadda65a9c9298e64819cae9fc77df52b49afdd34e09d6a21da949f
+e38c6105fa941f6ea5765d20559d11be13ac4b409c94c2b61f3f010b8051bea9
+25524acc9124dbc2c55bf4f21903408a21e7b614cfa6435b90a3a445193347ab
+05737975794cefea8d24cdb17fc98b0902a1167697afd4a1ad0acbae6cb267ab
+ae9fe4674816b06cb772dc7f4e90eccdfdf4fad2a422e59f4caa4e52c4b37525
+dbecd68b8ad52cb2fb8b927a695add96abb9291cd5f44ecd684207c4370b773f
+98c710c9f07a5e505b0c9f7d6c408b7edd7a3db56f8913ed7960a2759fb870a4
+a301bc78925907c9ebea0a04466c27ef38bc0e6c004168e8f9dbc26fd19b4c8c
+32421ac267a861b89595875e02e03383eeb658cf81ae5d4989dd5ce39b2da1f4
+668815500a9904f6fabe1b905b606c7e6f34c035143b1319cd78c6886bd46dd2
+8b73e15c90ac31a90f7586531b5a8e5d29c2487aea0940bffe446d1e2e8758dc
+77bc3f29f05318defe0847ddc033e0a8bb9c7ee3a0bf6811bb7e2cc69c4c7b07
+e2d880d6f97e8977a239b21b9147086086753d50b4fbaac5703e523013681084
+037ca988913f4b8957fabd5421cf355a10bb906fb17c5ffc1e180fab7c37ea8d
+f4a2ed14a2045a337e07be924ce0d4f64f655d73c2cd9a7ba793d85ae9e8233a
+0cffe1531abdcd3b91c904569c0afed2163a2e7329e97fb775ce8787ce8cedd3
+3df41c2f90e96f173b57095e3bb27f4b6f28fe0e6b23e1a629545cb9f73b9b4d
+607966e31fc15352f784864cb52998969ebf3dd43777199137d56458a8de590d
+7841c2ca0ead3e83af19cf17a4480f42ef176c5a9d789139e63d66428a232b1a
+08da6cebe2016ac6e5cd29c2350a3cb3457e1f9d27147187aabe253487cc896a
+bc6b171d8265076ca799135b7e2c7381022be814f5e1196fdfe043a81a3d76ef
+e2c3e6f2dfad2141415d164046edfdc53f24132145769333b8728317990676c9
+e550b113dd02bbc6733f3a063e5fa6569c40b141f9c10349dd4f75f2f9c02bdf
+9f27f4271dca97066e92b7fdd2783f0c8b1848f900f4d15300ae29a7bc17f2b4
+7b14f08923dd1206aabea3b3ce5f54c915dfda456db425de1bbbcb06fcad9d46
+63e64606bd96bb28f0c16d7fe0781caa9f23754e6c2a0be125436205b41d9529
+692d83b3c90758a473cc214bc634e339cdf52c94d5205a69f1331ff598eda043
+6efb3277d56a23401fa1666b3b47554b14c9784f41d54decb22b70b5fec8ceee
+6a05206a638027b3348fbf6da271c3adc3dba463a9c7ca5917991e14d38b4eaf
+52245e06ff982314346bb831274de299c79f50fbf949f99700bd4d21ff91be02
+086271eec448140e6a68a708a89c47c7f237c0d88979073e5c61b7147553bc79
+4e32c411f00d13ae6ea3d8e996edc565d518b6688690e57f17c6c44f6f6a95f1
+0ca0352f45c02035d24471154721269fce26e88323a2a1102ec30d9ac15bb70d
+bd542e0d10f8ca796ca5cb175dcb5423a2a4e7696c159837b457d805eebe7d32
+232aa0bc0051878cec1dea99d917cb98c658a28a0faffcae0813b6a20a8125d1
+ebb1a267f39e63e7ea87e66e8d096f36c5561faaacb558166cdcfe0d92ed88a3
+d7af4aa457eb35838cfced44e5e478760f648799299d5b85ee01b65b8b8565ae
+005cda5be193f8bc5afa55060fd20905d2989908fe4b63cd69471bcb099cfb0a
+91dde3f3726c3515e3e58bcde66d9dc54da7abac537c9abd4fbe0f300f793aa7
+8ce256ce74ae4d8793b30f10b6f0801808691424814f4f77a51fe3f1384654e3
+e51b77705a8a24520e2a427f02858c7af6310e64984f8660752f3e13f59c3cc8
+92149f266406e972291d9984159c4247ffa6a8c9862d1e34cc5dbd5397581847
+458d96d14238c06a84685016a18d6b0af30b6d8aa9d267a43158133fc8db6d4f
+ade523173a77ec45249a2316dc488e51140e3d55673414f6c8e3926578b3d06d
+7adf39e9a4840e170c8e562b2a5afa175fedfac5cab24b277af0ae69c31f31b3
+a2fa897fb243b1d8e5c3a9c771ac0fb921317201dd80b7641cad4d82d34030fb
+3ff4ba757904ed2838914a586552d46bb7227915c3218bc276c035511daf1411
+4dc5c4f53fda53a196ac728ecd720dd544b0227d56179f2fc7d4c14874bd01f5
+1439dd18586ad632d288f10f678ee86b03be24590b597a3ba844704d28330f92
+bd630c2d7079be0c0371c6ef3c5c59dd0d10e551abb84eb037afe2c6ff046b20
+817a65eed57a593a2663e533322acc74a145be9b5e9b60410248d45064cd761b
+d045af9d9260c5a45c0e76facadb58cc799b6373fd1996f4d7be59d8a25615ec
+009c5e026dc39bbd4c815f73c22ca55d4ce800ff6938eb55dcd6e101e105893f
+9b1c0b76e3b2f514def82a94ca348f8553798d862dfa1c83051c3ebb63af35d5
+7d1c6a406c4d952f25dbf726a52596f5479e69912f2f133970d12a16f18185df
+336aedbfc09a71adc60ce330dc3de55a86ddfccd67fdef0b0ace85b2be5cfbc6
+e2c961c37b30c46e8a2f33ceb11ce4b2229125f75e05f173f377f4cf09f6e6f0
+75a356d424a22ec59ef0a20640bf1273434e81723951a66897d8efe1b290de99
+74379b6421cefa7e7afe6ab3f09600c4565a0a1df83147edd26d24cb32c2832b
+411c3e846cb61d7f6cc046bba55b6a9eb57372a5a48ba0a31e9b9063e48dfd16
+a7a8d2069d0074e567b616725fd84392a862c822bafe8daea616b7e7c357a42e
+e2a51eff73c3339c99b367851a46925b1c1d8895ccfb099a67e0e1061959134c
+4683e2454f5c37fd2dfe75a5aad26166e341cb14152fd6fc7505fa9fd70e86dd
+e4a6038c72746a152287b505bb84b6ba7dfbc74c9b8cda64facd0db0ac182603
+2399655f48fe7d8803a203cf9b4ccb804520dc862061f45b43019f44c5eb9f94
+21603f09d8737caecf26913a734375c75d089d70a9a0e56feb6fc43db96271c0
+5188c7191f4b09d5279636ca580f9ed8a2a42b3494a759ec82f47d263cced3c7
+c5a509a52630f761d9970c72846fd670c2f7f0f1a1b5733b1619dd5378449748
+d1fc9e727dc280a02e273ffa02d8ab72af54f8b2d482e97db3fed48399680ee7
+5d3c466739091c0eecb8e148799c6da764f6f2e26c806b26557cd358cff18f54
+8cb547387c4df65009b43cb16ecb8f39b64314d7466ccf5a7710b448f66fa6c9
+1fe9ceb06023b580b0cdda4bf04406c409033acdc33361717ba24549dcc97517
+cb9de76f073f972098dbae452ecb5c7f3e8247e44f2c2ae0f9e8d82f8a5cd5d3
+b0ff59afd3854ef560de1c8926115a627b99f0041327b4a8822e555b75287f4b
+fb8c5594992e369410806066d2e868937437095bab136773fd7e1896ff30aee1
+0277fe989daf8de5b82a11954a21d55f9dd6302fbe91e4bdcc4b0f560974e2e9
+e5132fc29f293744231a50ed8cc0c19e649ccc3d39c4a799f8ae1c32b183fb29
+2561b21252caf73cb1977853331e8ec46b2e739c5da79a1a9819f0a3e19b9529
+0b464c7762239be26efb2e2dd3bf0f3a3d801357153f7b487117a1bca690c6a1
+4a3f24abe0278daf02ba99ec3e8fd2a81d649ef8e2bddf8086b8f49f0c040c2d
+d79690de8424d2f0a46100aa0822f3117ab74baab99bc458d11c15084077e9c1
+edf4c66a6f6c4f2d4593d6be0222f2682a0939ef547b65f19fa61b02ba5a5b0d
+3591c5cd777ae31a95484760c7c99f772987bfca0f0109e72cb04d9e44cf210a
+ee67da653a3669d64e4124b278b5b35acc6079df6709a002424544e38073a0ef
+8401c6ffe7b6b301be17ec0835d1d9e3042dc91e7569dfefbdfed781b957ead8
+17d2e42fb2a692ec1b48a3766c26a0ea492895840c066481f0f31ae9fa57fa4d
+ae25790b579abb163828e2d3f66cfccbfed9cf2d828f2f14a6168ba3acf3e87c
+020671d4204ec5e5e9d1f0cb3690b3a125ceb7ded6a41261907c9f63638f071d
+5a690f763594bec70d3b2f42e0e123b0846eaf6fa6fb3ecfd9d0f8eb5e78d5ce
+7300b937efc2122e11c894dbe3c4cca97073e6364705d75ff0ebc0d19780c82c
+87820a6b744e864c9cbbd98115d28d8baa570475e27dc2a788d5f2f112c54608
+b29a31ea9074698910154c39488a90f69cd8a6b6f8b37f717067ad5a738e872a
+a33dddbc8cd8663ba7f4849dc68c1fb14b9229e77afd1e79f34ecd7baace4f51
+170d7396a08002072a1dafd35fbff9ec8c610d42d45daa4c0b5dedc367522ab2
+f4d838ac8d7c9f69b0ed894003ccc342252c12bd713b6d0e21239a814416808a
+fa2c3855a45e2cbfd711cbda36dd3514d2751ea7cbb9025c3faf5ceec707485f
+9a035ae312b10c6ca7b8e2ee8e04111a838f181d42c50772cec5eb1fd85fea11
+c1d3adb7d4488ce5c5ebcbf32322c8026def8f2f4a5283d64d1e2a851f841161
+78506a0e9f2b71c03255323dc25c262685591a00d594f41b9fcf625ed1ce9eb4
+421fb2c6d32021c8b3674f34a63bdfba457b2ec250d33c6a5ecde80c55bc0386
+8943c9d8fb6e16043dc8abecd06cdf0d03b768cf1f78d67706db6d97b5ae0b7c
+812bd55a732e017795bcdc6e18e5a5140ab18072a22b84a8aedc56c764c56c32
+bdcf5b9968e2b98ba5bce8253da0e17c3c5c83d2527aa9e66f996f8917021214
+96e10b64ae23c64938f2f254b6c16c2673e31f466123413aaefe1905b7828e79
+083792cf53cace1bd72ddb8f0cad0ca75c3447b63b46bf6ff51461c493ff8c37
+0fbe08ca618ef35fce4b08c85e551a61e47ee1c6c195a6b7058f6ae1274beea8
+60ba682cdbde1402c5be1d3e88e31629500f8c73ecab791b9be0e2b65de7c3e9
+c478ad651e3fa9c13ef9db768279494513ca48e3f3bab3ddac8ffaefba6d40a7
+54db8e3b0c689808503d9a56aa64703b37182929e8261117f912147b2d62be1d
+de3d5c7af757235b0f4b17b079ae9b624c04638023ae218f8f90ee0d6f54544d
+ea40acd6b1d89a5eee46fec0c3f57f88e2d54688e56c3ba762338a53e2c7ba24
+2a4cccc033f8f66cfa53cb82bdec4b4ed6d9629686343c3ee872bd1d791f7949
+1e81c2673dc38aee1ce77d8919ed1ecf64cae71b78a92f27732c82881ad233fc
+d3b70da9051e345c7a1ced27739e9099aedff2c538ac92d7acb29e5e3a2af2c6
+09ca4409d14893c84401ce7e195099162706e5cb1e2ee1b2868a44c2a9cb4f86
+e7f5dc215bb74dfa2e881ddba0ab2dae5c8cf9119a6ee1a2ace671c6bd29ca91
+66587b594ed6219b2a94f04d0b7e6a6145d254e1d964d02da00ff8aaae3df709
+fd19a774204e9dcf26901da9161d10d63744208068e0e2cb35e199e222d39230
+89a399a3cbbe072e012db9a9405f2c3217c24a52a399bb63f99d44e24e3be20a
+de05e115e1af9cab45835c317ed2231eeec745a4496bbd45d979cd9738d9d79b
+856fa67ee3e3949aadf27f15d4567042959953898ddcf34ebb020e5e582e5b62
+6450e27558b075f69b4a4e74e2b1ccd011d0ae88d66b37aa66681e0f6c4e025f
+1f473d08032e63d058e4a9d067da94966db329c30fb63c851c671dfa3412c769
+2a4d8a059a72781e7d2a3f32787e69fac2290bd9411e695393325ceae6b341fa
+70312462046894bf86f770934e3b7f103e10a3e520a2e865d2effb8fe3e0b7f4
+9efafd820bb0e6f9680e715cf39df299cf76792948de0e2f5d733c334f7bc9d9
+74361915c9472771799d6d034fe868d84428818ac0964d71e70ce2f071e74f75
+58239a909c1a05e3e785dc3bc3d7743bf35626be5a0d847a5480a783468ca128
+69811f122187080b18fed6885d2f998f00cb0b2f5191c2a8b12ba2026d401b07
+69a3122bf7c415731f7c15b6b8f4b88536cc5fb1b6029f1303534d3286c927b5
+e29f9363085396c77713f23c0be37b67326c1e1dd3fa6864f0781d3342f88271
+cbd6bfc34b4f72eab710eda4553b400ef049df5d5eaecc1b7609cc4adf9777ec
+7cabec81620d391bf72a610c39
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR17
+%!PS-AdobeFont-1.1: CMR17 1.0
+%%CreationDate: 1991 Aug 20 16:38:24
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR17) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR17 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 167 /Sigma put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 183 /caron put
+dup 184 /breve put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 46 /period put
+dup 48 /zero put
+dup 50 /two put
+dup 51 /three put
+dup 69 /E put
+dup 80 /P put
+dup 97 /a put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 108 /l put
+dup 109 /m put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 118 /v put
+dup 120 /x put
+readonly def
+/FontBBox{-33 -250 945 749}readonly def
+/UniqueXX 5000795 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be356c29c3aec91ef17f5d31183b1e489f1fa
+559a6693fbdd04d4f7e99886d8cb7cca13d4aa9ceb34a708af22e69ccef0e504
+c3997075243585edf60b6447c8d01cffb04b6e3ddbaa7da5891286861322a795
+e9d990fd56af2f5c2b35801a0b07874e4ac3170481d232e150443253c92a8b05
+513d4a4154a99d91f629ccd30376500f5d16aaa9b203bad6350e4b19424c0e33
+75f2949bc1927a6f6221252f8a96618e646aa1b0810753c98becc26b37837775
+24bca72b818d314074c1c91f4e1f4148d3d703d12d179ee6970bd55d04aa9a9d
+97f63f2c7dbd129ec2ed3ba5f8080270ea5854ea165dbcc061e2f47f1aaf0997
+2ac9a689a2a9620b91b53f6b5092884372f5f7afca495f331138d85a97c5bb83
+d8072dc88010fc89108b60bc06d4f93c722e8908d7ce3c1ea3c70e9e65edd769
+7db17ce0e012ad37d4030f33d30a73fd655b7a2e572f3378ac933dd75082f2f1
+68702be19bc60cef6bd5f0ada180d21408c04b7f7db9b6dbaefe09e809a80ddf
+a5366d10930d3e68ca53e4721ff525853f4c784f2c2c3aa0129a34d9df00debc
+ae4037e4c0fbdce3989f35964b4c07e7817b805bfe8c15f0c0ebf226cff606b6
+2954f0f42dff8c214a6537ab666d25389c44db7b5866440bbfc137712bcdcc89
+c68cd1adfd85648b1ed29bfb45a564b02172137feef782d604e0d7e1f1737c96
+719cca9e4b9dfdc87e5999b886a15ac572183df8607ecfab5eeafed9f2798b3b
+db56dc26f8b6f000eb0ecf24341c969953e317cb01bf72bf002c07632b5195a2
+8995c0b23034671dd2ff7f0334745a5d09646bb6027b54034f376bea19419a61
+757e497a619513e955d2550a1e22208ff446f974f02c629d4eec9342cac41e24
+3eda835485be27f1d1a6f2be3ac82262b74d067752a8dc602ec14c9f3007faa7
+c3db96201a742d9df127da560c6d8562103d07478718f7ceb6cf2247fbdefd09
+808d21db340b46d3ef5e3aa916dd70500ddbda934bf3986fc3d83c428a7cba11
+6b9e119d49a0d478e7c61342d57548ec3121a2d61bea86cc26a705d20449e650
+10828a6858e0167972ea0a733db1df20209184276fd0113dd9e03618c9202822
+38fcab7508bfb54d1908cf37cd04320c804c1b8461d26a46739bf73361dca542
+5798b4d0eb02f9715d1621a5da85758eb7694df4a102e9854f267e545a209d2e
+8a84f213c1d9edced67f16b24f1c21b511aa8faea25e93320e44258779e60db9
+ae6fa83ee5f9874ecb222e50da67abcc91f5c260098d24e2b4b922df204159a8
+ef8b4a6b66d521b6240829071c855d5b1048acca14720f8c31f1fa31140ce83a
+fd4c1c4941df3ec058a034192801c6e7f8ded7a9d89e76455aacd17a4f32d025
+07e1d2aec7ec6aa81d0e8f56ce212981fbe5d5e9ebf642afde085634623c2833
+e970921f3ae86214d7cc9854e381ba0509f0613c403abc8c95f57a3417d6c536
+1976013bf4f519707954ccb6c74e0ad47c52fc5a9890f0e90c2daf9883552167
+8dc3c38a6b53b12588ebae8f9cb56a03f98e6682c08b6e7a70e2e7ceb31584f2
+85eb4c26046c07ab7d406c22ec08cbfd36a8e6acf33ee98f78eb1c236940274d
+4b003c7daf16e1f957596cc484fd53d42d15e171680cf29047c5605bbd5707a8
+5d0352f8ef0462bdaffb533beba268bf2264339f065137171142d263ed1985c7
+f1c6d820df9a2b1115ec47c33b2bc1f32444a4f35e53307440826dad7616050b
+b065a0aed398f0789b7d51960fabd01fa5731534654f2e64e6dae24d4afb9998
+4f7b52f26e7ea97e44013b9c963576d361bb7c35dfa8d27257e3eecea498d4f4
+20a1d7b737fa162cae731121c0c3b3dca986e8402aa699fd2eeee80312dc0ec6
+802f3fb3261866aaa2524a22209f7be90a7c3c6ed6f8144ded76898b18b2654c
+369dd49cbe53394e284c227bf4b589fd159f9ca59a7cc201481bbb2411c27cf0
+a660274e7f320cc87b0f28662ff0b61f1d623b2840026c862d13e38155c4cfb3
+d1ccc3999fa48f97acb28ccf486a9c176a7b9ce685ebc1485e7ba8b8197a3ee8
+84b7fa44b89b13d517a39226ae7c67a645140b03908ab58d4de0213fd34f3885
+2675a0f8509584a64791d525637a249123240d514f283def6b45b1bf2a6b288e
+9414e997f7cf9ca56f8439b8c954f9db9b396825bee484d2b96bfd84218e9835
+b182c13d8b277407f043f4db9915db0d7715a1ef96bbbb6a4fa62034af3e76ae
+4757dfbf0216a6769034a6083d0621ff5c3e48fed7ce466b542091d0c7982689
+f38d4f67b15de7e343c2df735bb0a1cea82647798df758055fef4bbe9ce115fb
+2e38491fae6929efa2812e8c0e51a01b8b76de684e894cad61951bf1bea89273
+ff2616e394adc6efe9ed06f43e922e156e1f50529535d53a1e0e62dacca8f32f
+8f8cf709321e2f1a93e627e82b847f21230acc9e38321d5942431645c0075e13
+2e7c26a1a4731ebaf64517ca58545f90dfc96d7aff418b2d2714bc5c28749898
+5543a1817094a2c536c221caef87c15d5bbe9c302c41eb207624fc1d18eaeb75
+9b93fbe751e973cb76f8fab0f092f85a59f0b7b63308816d5f71e587d3934dcb
+18387462b5d698f222cd25a0730016d6f37ceb4f7322b64d5fde41770179f78b
+974b57156fdc54eb3631ae298fb573ec92cd2f0ecebd8c32852a225e70b6f9c0
+7cca0f1fa17384c7a365ad8bacce51c76aecc3a2648e4224c4e7b2b3f9cb73bd
+4204071811c54a1ff2390afd76bfa5925b1604bc89a3af60472b7dc359e4d428
+2cc24cc3d65877837d692278ea2420b6bb310ebe8d7f7c7f3c7d50e5e759653b
+58615f142d584a6a258bed562d2243ba88494c5b7efaf5146176272d3b9a9b74
+a94304785bb43df9c984efcb29e41027c00c1bcbc50e8abe83148175f83ccc86
+2b59c1ac869a69ebd06983005f60e4144a0e3fd41aba938edabaf785857c27af
+b01c8a3fab9560f83a4e956b875798ef4a50b91c53afcf5d64198c33845bb36f
+5d85b0b87362f6a8b71b1addaa105247e303e8060006007751d52b388587f44d
+417d82fad69ac42ac40a431fb66fa5eff2276f2093a0e32a870cd41a87d6c557
+c8ecc8507eb4f922613723d01caa072f33c929a87b8401a7fc714eb9f741133a
+c77257793958143c3fbcd595a72e640c03d60780f44a288dfdb8179ba17c5990
+8073a86d39a53c7114becfd0706c1192379160637c73b73317ad3b8e6abce0b7
+9f7473f5e2d303d7233d66d53e910464813c8dd87858307f096d59a2faf276f6
+0817759a279230da6cc71b44f036e25992a20dd49974222f16c0257044aba812
+4ff6d4185eaa64425c4d53b960d1886bd9a787c700fd4c75a19873d8b875a168
+4e4237c0785294e7f99d81397feb403c570214793a71a42d7933734dce17836d
+b1c2e81978b65ed0d0690ce627e33e7cfe348dda9bd8ee6519d3b05874e853e8
+d29b3370d0ca408e35305186df451c3d72a978f43115a057ee070442080a5eff
+b7c1613561ca8a6bde67ac3735d3ea44c9272f2aea22c304aac2c96b3de17a9b
+e718c245476539d318583fbc3ed0b43a6b443d4e87811304834829b7ed012922
+120eccc0421eabb1624e7e147fa9346effc79c55bee77e8ef56e97ec52d5e933
+082dd5930d9c71d905107e0e026eae10c333e89814e10e3ff605a6a8ba3db2da
+3ba391dc2bcc6bf4cec11699dde7031121d83c4139afddafa942fe0f743e8219
+e18a2aee2b9b81372d06e65083f54200ef6c0d5d8f23accb9822adb639ab7eef
+4d35a289593951ea0003e816a44bd9cfd37a6147ff97c50b45f05306a43b0115
+9237e5483defa16adf26df8673a2d26ff9108945081c54d25cb23b7783fa4670
+be30650a0fcfc64afedca35addea0a99d9e63f425804e721fa1c4437f757066b
+23b897151f36c94699dfb2663e160ae34414967a45b519a3d1e5e26b3416f9bc
+109a185a595c8bd6da7cb67181e8b1ef811d3594ffcdc35e05c67b961fb72cb3
+e27d25e87ebfa62180e6b556d441f05bf27cf7b5d6292ef6c417a4c6d73fa3ec
+870e127590a0a594bc0094cfe410d0a8be6c70ba9ad0463d608e4693ead6c091
+c0898d020651e9332c6fa2d8d94a51358dc7b04ad4effdba0d497c3f776111d9
+b600712517f0d53b4dbad4ff2120f50d5d4131e823fde4357746f50f2d1be935
+6685624e47db19fbd9165bd17fd84f58d3adbe0af4240102905f10a76353357a
+057c9db8862b6edc248843bc800ab8a4c6f238a23d475e665f2721b74e56a656
+458da8ce1282a06f77dd73c152343607d52868954f9e7a94b4489d5829889d7b
+caf5371f212ad08116060eee18317d1ccfbb21477bcfd2591c4ce4ade7990e45
+d4fec51d91aa72b4af77c610215e8ec2ce354f0cea1ac579ea15ececf2d3d23e
+be2f5ad2c4d694a381a67be3c855b9946a2aec05e0b197998c47d7b6d3322936
+97c9f6ef0aa55ad3d7328ab278e42c16e32305d298283e1cc2f806aef879075c
+ccf7c31c4f814d86b5f2bec6825e8bff927321c847828a744d3098505e89d7f2
+306d3f3bb4d984414b403b6e8fb863701086e0c392f47b6ab546d8e1dfcd9112
+c669d8bb85c33b233f444c6b8828cc75eebe418204ca7a1e840acb204e4da47c
+d208626583d7934eddd19021be7ac29455e3bba603a7e73747c8be6be0924f56
+bb2bfad079916e3b134cbf9e88d175248f80514f6bcabfd28557b8450b44d55c
+ff1212960115103b344e2182d222121d2c56cada83d3653187d852411db9b58d
+d14c128a8dd1c8c820dc35d7cec13c9747f99daa118e4ce036acbbc1c3165633
+b7b0cf23c086e735c0823abcb5f6c25920e5c8063b869dc5a7d0e8dc39e43010
+4ce02dc735b1b35019cf32faf09c7b1677f1c759d5782baaf6d27857154a338d
+0945ba657c7be73c5a9846a50d17755082f0bb5810f17e8166a7da95ce9e4df1
+144801e7bc35fccc1c56a4b349da0208db50cc0dc89b9b0c345885a93e5c2f4d
+fa78b7d1c2948a340fc5d2a569856b9d5b44eeec044c0e5eb0303814d218a4d6
+b435073c7edf5af00379237f9590816617da24295f06d4ba54a24a6c92a3b442
+69b39eab00ed95a004fbf8206f728bb500b3dbfabdfc70eac3b7bf38dc70cd6c
+6c2f003987b4b7016d443dce12ddc079d2bfd93ca0d919a85dccd41b07c590a5
+8c86501bbcbc5db544544d5eaa684bfc78f214d23abc3c7d4e496de0ade489c9
+39bd580c0cf1da4f6c68b60418cd6400ad0ffed78aa45a3aee489e5453e17eea
+7b5f8324497e47ddeb25e4213420622c34cf191002448081c02cfc2fd9111efe
+51ab614106fde3f3d8d218bb4970edb8bb318d84e7640121fde40f9607ffcc64
+3b82aa5304d7c3d5b2a3d5848650eced4246e8b40757c23c92c3b6dcc0cfc86f
+bad937c68ac20930d26ff8727fbd778a17f245d0b6aa74046209af221b68b696
+3579dba6ad90ad8cb30ba2fb628442083d39dd5a4671cf28d11e897635f479e6
+4a64cc42b391fa242898f85fc772008116e2c4a353fc7a2ba3928eede18b7e11
+90218cd4f372dfaac41c1ccd45a851978e05a6a085a721a86724af91772d048c
+b59479bcaac49bbadac6bf4f17f658b9c070258f1bed1c9d4fa06253284c2dad
+00ec4f68300de29b35556a89f3427a77a1d84ec177e1e86c173bb3bf11325274
+92a4f0f85460064a2d4faa03cd4766d471ef229a4b58cd8b5c9f57c0cf99de6b
+e8fddfd54849f69aaac050dfd8d83e95bdf9afc9c8944a1673775093fbaf962b
+ef55d3c0d73f58ba8e1f3b6f17dd6b27296f368fc54dc55ae179507c7f0b2218
+9bc5a28cc55591f949844e35ee4728ee189e0bea801c9fd98510a5cd1f9fce63
+311d4f71fd88b4f1f577854ba662a0255d921526003f32174200a16a794142a4
+5b5d92889e691bc1f7a61962d4a6d6c333ce90bf51990aa4f97c9e5b9198b535
+0531df91d8f67c08a77d1f1d68fec53ef4da902c29111004ec0a38aa9ce9c8e4
+2c788981496d64cc7a1fea622ac77ff07931bcd1c16183c1ed7ca8021320ac0e
+305899539439eb622e7cb7bc0dac716aa0bbd4b99db9ad054761f1d139bb59b9
+be55371c225fa9814dfba4d807f7773ad88df88b0372e0c08a68c551a87ee333
+16d675c987b7b47c9f81b56580f79312372a4dc428bf881462129e6d00b516cf
+2c3d3ba81c6ac934de5549a9715db902a25d95497e37b548554c046b0cca4a4a
+f929467e44101f294a69246c0ca91798b2d5db6fccb5a3da3a127df8de9f1b1a
+86ace489f0dc12c15840a5b00052df7b1645bbe805dcf78fa54ac64af1141228
+4a4fcd64530de42fdced0033834db91269dea199fd2fd4651719d29597cc2ecc
+41acbb6c87bf50a91ffd9975b7503643e27dc91d9b16a30218458099b35c89bf
+955b0f19c2674fdd2bd6b6ee0222e2d62cf0c8f1cdbd1ba9f9af675818bcf9af
+8d24523c0ca328d6ff67b84f3bb62f5fba2281542d026f8b3f54d9ff42268cd7
+c83c382331a430f0b85b5cc3451cf5143ea28f05c309e1f03efb8f3ac0ac1bc2
+2d3d2fc9bee35ed38f28d4e1e7848da511ca8fe9a794a8b03fef3b32ed161c80
+b772386983387985e789472238d067e8ca996318f58e984b78db3b97be9d7a7d
+b7d98b2781b1d04319da5f4462d3a049c8e48703044a94dff884f0ee76f71ea7
+a9425872d44efb6c7b1b00c452423498827547209db7707ffb97775e9442131d
+8d158575b0c47d3aa68ce3ff4ff9e3dfc361f9bc5cfaa84f2850363307a38924
+2d433c5f4aae0d77d9f990210a5492813d73f477871eb801800760728c3834e3
+ae0c518154d88b8dfa025f566ed13fd92369182ae01b5c4816bada240b4d596e
+02fc22c917ee5c402a326f5dc3a7ebac592af723e8410dfffa743fdd19766893
+1a96ed237e811f4d09807a3e676d1585be7c8648d30c44b18837b4ba04de97fd
+193a2f27022dcc5bf72d7b32e20fdec72d7e905a93d2e64b678fdcda3e8df482
+ab34be34fa5592006bcf10a95f618592ec71fe5587bd51977ecb72eba444ed79
+54144da989189786a2f5cee4e1fc9c1e320b087b01a4c50d2c170af944679edb
+9688f8e26afaed037b168c205251c5f06f5ee37220d57830fe5fc51af92b7d25
+a7f56d268828506d51aef3ae94c9bb4f652c7b61a5af073c9d885b078dab0ede
+4261a1fa7860ea5a856baf517849ab037c9529d5a11401cd1557fee2af3b060d
+cefc0a9b15b61770103ed8d32df0e8b4c564e5f9cdb03e3b858e68dd6e58a762
+415ffae5cfa1c141ba6286667f3a876e5d9296fb9c3ced4ffe7df0b0f72ae43c
+94f4de4480797530c3962bf3dac6bccd8acd5eb9c82a7178262ef3787fa4cbb5
+35b5c062e9444c961ab68576167a52de765bba1c9d94238575812283ca7d0259
+d7a5e046e771ddcf75ee87350d4055d649cae41d9e7dcb6bb9dae27b3e56867f
+c260197a10ca189b4a40f3f11811bf9d9e4919bae12718211f9c6b93541cd588
+e6875ae967d891df675727d14c27c7f71718ab0252f9a7f191db7a2abd3311da
+3f5be04f27d697b8dc999a15b8489fdb46614b1e5a750d25f6ec3da3d960e589
+9d34b39c6c9c9228031eb8022dd893e5499ad0fe381b15197e70a33918159cf4
+79ec43cf1c7f41f9218d4b5a5ecfc1ae61c6af76f688e98bdb5fa157a4cc29a8
+488aa7d0c3440aa24938d304a7b64678a910c4701c3dd5b3eb9e0e1becc90f9d
+a63ebb2a96015eaa7ff0fb364418d192e8125e6bcc953a891828edef3e5dbc4f
+03dcaf94ad25584c1d547238b50fbc634995ce3f8ee9c908b5cfbe3c25e8713d
+0bddaba675c544101f042608b3119acd117049905051848b1c88bfafa755145f
+90809c83366e47c78306e737d0f1cc38b2675eb0dd62832d7204b8eb2cd68e1a
+34767f1fcb7517420741a3a8d08fbfefebcacb2572891985d7d3ce3d0d20232a
+1ee178667f867180841148c2e316d1c45773a467b73e366e46a9a78961976a5b
+370f00b07a2a371c27a1e4aa8336b52bfe25782294b1f9e4ee5ce4cb73780e76
+f89a35b41bc3c36f6c70f6a8715e39e954f6bae3b795f4f0f722462cce68713c
+2bdd454b2c0ff8e8cc17d6335f10bf80e5fc455dff20cfba91f04e71f52b4b50
+3a6a89783e4e520928ceb41f832403f06685ce61db5faa99fc3475f86de4f53a
+8f890dd64c3e652fb3471e51373c410a230afdbec9c310644f79b499cb3fa4e5
+09e21b298c0939438e21bdd2855c17e8c5fc3edd598ee0d97cf8b6b0930c0b71
+6778e659c57f1e92bae8f6f35b1830b1498a43140496fafd7307305ac165835e
+1416c8198def10938d48f79305d929323b2cdc24866437cda8f1ae7106bfa8d8
+8531c6d0ce829e168dd4c026cbb1658b071d2bb4a647c7abe057310d595ab8cb
+a4fb17440e90acd5cea8045efd5b4a9a3c99839455801075e17386d81eac3966
+d649e3e46734b9ab0ddd3c355179efb3b769d481c3554d9dd478b29cb413fbdd
+9a3aca421416a42cd0d22b09cf872ff08a1b49dfa2535505891b8a8dbcb7e66a
+aaa03b3cbeb87496b376a0ada8e85d3a3f7a16b6d981b804b47db4baedee2c73
+92a2ebadf556d5963691831ecbc7371a1c5bc16a137c24688b93467be1ce8a1d
+c61ac13eb60f6d41e6f15c56b5152dd836e12541adab648bf7906a3728faf066
+ab249ae9abbc7f065c5f2ad85d834fec4f43ef4837ee679bf503e7e4982b69bb
+fca0376f2edc87743b5350414da9f0407d668e6b7535cee636b8a7aefb59e0d0
+f45c09a5a312f584c606fe117b918ea466e894074bc852e7383cf3729dfbe33b
+ed3b3cd1b104e6c2991b6d73462010b13df075a7b0ae68109ebb35e79fa61b39
+66e47e76d12ce903db15742162560e2f2b14687ae60bd11a8a5e045e8d773d52
+5b780aa8ebc3fa67bf6a3f2e71ed5e385ff66f7697710cbcd3e14fa5f5f94135
+460eeabf3e3a8438a40ae6b74aa3f8ec0cd485b1fd7ddfe469e28b66d6c583b2
+4aaa26b7243199da9e61afcd3678cf3c130eb6c2f0f21d1c815b2b30d41ea179
+cf537a09a32e815fc196bfb60e6e80eed61c1af3d9122cabbe4f2fc63412c1dc
+ac2807eb3dfe29983e30967dc97b802848624f48697273a68cce0b0ab5726bf6
+0536ddfc1f1dc49009fda7484a4127310f5dce535ffbaa00889dc3f44298366c
+64468a278bae80e2e6b96592be719e36204574bfcc048a4f31029c4052b2466e
+92aa888bc6281d6b04771171cd5a2df4b10b631fdfc56a43136a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+TeXDict begin 39158280 55380996 1000 8000 8000 (cv_examples.dvi)
+ at start /Fa 198[406 406 406 406 406 406 406 406 406 406
+48[{}10 664.176 /CMR6 rf /Fb 134[820 820 1[820 3[820
+1[820 1[820 2[820 1[820 1[820 820 1[820 820 820 820 50[820
+46[{}15 1594.02 /CMTT12 rf /Fc 149[340 106[{}1 664.176
+/CMMI6 rf /Fd 228[909 909 4[640 640 20[{}4 1212.12 /CMEX10
+rf /Fe 134[589 4[403 3[620 1[681 991 1[558 5[558 101[{}7
+1212.12 /CMTI10 rf /Ff 207[243 48[{}1 664.176 /CMSY6
+rf /Fg 166[470 470 10[470 77[{}3 885.568 /CMTT8 rf /Fh
+135[530 1[458 11[381 320 542 3[484 1[403 38[261 59[{}8
+885.568 /CMMI8 rf /Fi 130[581 1[581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 1[581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 33[{}91 1106.96 /CMTT10 rf /Fj 207[255 41[732 2[470
+2[732{}4 885.568 /CMSY8 rf /Fk 199[470 470 470 1[470
+470 470 470 470 4[732 1[366 366 40[{}11 885.568 /CMR8
+rf /Fl 133[564 594 693 1[588 694 438 2[541 5[631 499
+418 1[578 593 564 631 525 1[641 10[707 3[920 1[778 1[974
+2[1029 672 533 8[644 1[943 606 1[337 337 24[754 7[691
+11[628 686 775 11[{}33 1212.12 /CMMI10 rf /Fm 134[684
+684 1[684 3[684 1[684 1[684 2[684 1[684 1[684 684 1[684
+684 684 684 97[{}14 1328.35 /CMTT12 rf /Fn 134[789 789
+1[789 830 581 589 610 1[830 747 830 1245 415 2[415 3[682
+830 664 830 726 10[1128 3[1115 1[1021 4[1170 5[981 1145
+1079 1062 1128 6[415 5[747 747 747 747 2[415 34[872 11[{}34
+1328.35 /CMBX12 rf /Fo 135[539 13[337 55[808 24[943 4[943
+4[606 8[943 2[606 943 337 943{}11 1212.12 /CMSY10 rf
+/Fp 137[743 743 716 555 730 1[676 770 743 905 622 2[366
+1[777 649 676 757 716 703 743 26[864 2[953 21[458 45[{}21
+1212.12 /CMCSC10 rf /Fq 133[636 636 636 636 636 636 636
+636 636 636 636 636 636 636 636 636 636 636 636 636 636
+636 636 636 636 636 3[636 1[636 1[636 636 636 636 636
+636 636 636 636 636 636 636 636 636 636 636 636 1[636
+636 636 636 636 636 636 2[636 636 7[636 636 2[636 636
+636 636 636 636 636 636 636 636 1[636 2[636 1[636 33[{}69
+1212.12 /CMTT10 rf /Fr 135[946 2[996 697 707 732 1[996
+897 996 1494 498 2[498 1[897 548 818 996 797 996 872
+13[996 1338 1[1225 3[1077 2[668 1402 1410 1127 1177 1374
+1295 1275 1354 11[897 897 897 897 897 49[{}36 1594.02
+/CMBX12 rf /Fs 131[1212 1[539 640 640 875 640 673 471
+478 475 640 673 606 673 1010 337 640 370 337 673 606
+370 539 673 539 673 606 1[337 1[337 606 337 741 2[1246
+909 909 875 673 892 1[825 943 909 1111 758 943 623 438
+909 951 791 825 926 875 859 909 3[943 1[337 337 606 606
+606 606 606 606 606 606 606 606 606 337 404 337 943 1[471
+471 337 1[1010 2[606 19[1010 673 673 707 9[1010 1[{}82
+1212.12 /CMR10 rf /Ft 135[736 2[774 542 550 574 1[774
+697 774 1162 387 2[387 1[697 426 639 774 620 774 678
+13[774 1045 1[953 1[1091 1323 838 2[529 1091 1096 877
+916 1069 1007 992 1054 8[697 697 697 697 697 697 697
+697 697 48[{}42 1212.12 /CMBX10 rf /Fu 134[631 1[863
+598 697 432 1[548 1[664 664 731 1063 332 2[399 1[598
+399 598 664 598 598 664 13[731 4[966 1[815 8[930 1[966
+52[731 12[{}25 1328.35 /CMTI12 rf /Fv 138[723 1[513 506
+1[723 1[723 1084 361 2[361 723 2[578 723 1[723 650 11[975
+1[723 957 4[1192 813 3[975 4[939 1[975 8[650 2[650 2[650
+650 650 1[361 434 45[{}28 1328.35 /CMR12 rf /Fw 137[1173
+6[1216 9[1067 1194 1131 99[{}5 1912.83 /CMCSC10 rf /Fx
+135[927 1[927 2[687 677 1[977 877 1[1477 478 4[877 527
+777 3[877 16[1202 10[1202 17[877 877 1[877 1[478 46[{}18
+1912.83 /CMR17 rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 8000dpi
+TeXDict begin
+%%PaperSize: A4
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop Black Black Black Black 13644 16715 a Fx(Example)578
+b(Programs)g(for)h Fw(cv)-43 b(ode)578 b Fx(v2.3.0)17257
+21901 y Fv(Alan)434 b(C.)g(Hindmarsh)f(and)g(Radu)h(Serban)16542
+23451 y Fu(Center)463 b(for)i(Applie)-66 b(d)464 b(Scienti\257c)d
+(Computing)16374 25001 y(L)-66 b(awr)g(enc)g(e)463 b(Livermor)-66
+b(e)463 b(National)h(L)-66 b(ab)g(or)g(atory)25020 28317
+y Fv(April)433 b(2005)22816 75587 y(UCRL-SM-208110)p
+Black Black eop
+%%Page: 2 2
+2 1 bop Black Black Black Black 19458 16671 a Ft(DISCLAIMER)0
+19505 y Fs(This)416 b(do)34 b(cumen)-34 b(t)417 b(w)-34
+b(as)417 b(prepared)f(as)g(an)g(accoun)-34 b(t)417 b(of)f(w)-34
+b(ork)416 b(sp)34 b(onsored)416 b(b)-34 b(y)416 b(an)h(agency)e(of)h
+(the)g(United)0 21010 y(States)449 b(Go)-34 b(v)g(ernmen)g(t.)671
+b(Neither)448 b(the)g(United)g(States)h(Go)-34 b(v)g(ernmen)g(t)450
+b(nor)e(the)g(Univ)-34 b(ersit)g(y)448 b(of)g(Califor-)0
+22516 y(nia)508 b(nor)g(an)-34 b(y)509 b(of)f(their)g(emplo)-34
+b(y)g(ees,)533 b(mak)-34 b(es)508 b(an)-34 b(y)509 b(w)-34
+b(arran)g(t)g(y)-101 b(,)535 b(express)507 b(or)h(implied,)533
+b(or)508 b(assumes)g(an)-34 b(y)0 24021 y(legal)376 b(liabilit)-34
+b(y)376 b(or)h(resp)34 b(onsibilit)-34 b(y)376 b(for)h(the)h(accuracy)
+-101 b(,)381 b(completeness,)h(or)376 b(usefulness)i(of)f(an)-34
+b(y)378 b(informa-)0 25527 y(tion,)395 b(apparatus,)i(pro)34
+b(duct,)396 b(or)c(pro)34 b(cess)393 b(disclosed,)i(or)e(represen)-34
+b(ts)393 b(that)h(its)g(use)f(w)-34 b(ould)394 b(not)g(infringe)0
+27032 y(priv)-67 b(ately)308 b(o)-34 b(wned)311 b(righ)-34
+b(ts.)507 b(Reference)309 b(herein)g(to)g(an)-34 b(y)310
+b(sp)34 b(eci\257c)309 b(commercial)e(pro)34 b(duct,)329
+b(pro)34 b(cess,)327 b(or)309 b(ser-)0 28537 y(vice)369
+b(b)-34 b(y)371 b(trade)g(name,)377 b(trademark,)g(man)-34
+b(ufacturer,)378 b(or)370 b(otherwise,)377 b(do)34 b(es)370
+b(not)i(necessarily)d(constitute)0 30043 y(or)448 b(imply)g(its)h
+(endorsemen)-34 b(t,)460 b(recommendation,)g(or)448 b(fa)-34
+b(v)g(oring)449 b(b)-34 b(y)449 b(the)g(United)g(States)h(Go)-34
+b(v)g(ernmen)g(t)0 31548 y(or)543 b(the)g(Univ)-34 b(ersit)g(y)543
+b(of)g(California.)955 b(The)543 b(views)f(and)i(opinions)g(of)f
+(authors)h(expressed)e(herein)h(do)0 33054 y(not)416
+b(necessarily)e(state)h(or)g(re\260ect)g(those)g(of)h(the)f(United)h
+(States)g(Go)-34 b(v)g(ernmen)g(t)416 b(or)f(the)h(Univ)-34
+b(ersit)g(y)415 b(of)0 34559 y(California,)404 b(and)h(shall)f(not)h(b)
+34 b(e)404 b(used)g(for)h(adv)-34 b(ertising)404 b(or)g(pro)34
+b(duct)405 b(endorsemen)-34 b(t)405 b(purp)34 b(oses.)1882
+39076 y(This)456 b(researc)-34 b(h)455 b(w)-34 b(as)457
+b(supp)34 b(orted)457 b(under)f(the)g(auspices)g(of)g(the)g(U.S.)g
+(Departmen)-34 b(t)456 b(of)g(Energy)g(b)-34 b(y)0 40581
+y(the)431 b(Univ)-34 b(ersit)g(y)430 b(of)h(California,)437
+b(La)-34 b(wrence)430 b(Liv)-34 b(ermore)428 b(National)j(Lab)34
+b(oratory)430 b(under)h(con)-34 b(tract)431 b(No.)0 42087
+y(W-7405-Eng-48.)p Black Black 7988 81856 a(Appro)-34
+b(v)g(ed)405 b(for)g(public)f(release;)f(further)h(dissemination)h
+(unlimited)p Black Black eop
+%%Page: 3 3
+3 2 bop Black Black 4000 7638 a Fr(Con)-50 b(ten)g(ts)4000
+10356 y Ft(1)1121 b(In)-39 b(tro)39 b(duction)37801 b(1)4000
+13073 y(2)1121 b(Serial)465 b(example)f(problems)30545
+b(4)5818 14579 y Fs(2.1)1239 b(A)404 b(dense)h(example:)537
+b Fq(cvdx)1227 b Fs(.)606 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p
+Black 2445 w(4)p Black 5818 16084 a(2.2)1239 b(A)404
+b(banded)i(example:)537 b Fq(cvbx)1234 b Fs(.)606 b(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)p Black 2445 w(6)p Black 5818 17590 a(2.3)1239
+b(A)404 b(Krylo)-34 b(v)403 b(example:)538 b Fq(cvkx)523
+b Fs(.)606 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p
+Black 2445 w(9)p Black 4000 20307 a Ft(3)1121 b(P)-39
+b(arallel)465 b(example)f(problems)28643 b(13)5818 21813
+y Fs(3.1)1239 b(A)404 b(nonsti\256)h(example:)538 b Fq(pvnx)1126
+b Fs(.)606 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p Black
+1839 w(13)p Black 5818 23318 a(3.2)1239 b(A)404 b(user)g
+(preconditioner)g(example:)538 b Fq(pvkx)543 b Fs(.)606
+b(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)p Black 1839 w(15)p Black 5818 24824 a(3.3)1239
+b(A)404 b(CVBBDPRE)g(preconditioner)g(example:)538 b
+Fq(pvkxb)759 b Fs(.)606 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)p Black 1839 w(17)p Black 4000 27541 a
+Ft(4)1121 b(F)-116 b(ortran)465 b(example)f(problems)28687
+b(21)5818 29047 y Fs(4.1)1239 b(A)404 b(serial)f(example:)538
+b Fq(cvkryf)1029 b Fs(.)606 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p
+Black 1839 w(21)p Black 5818 30552 a(4.2)1239 b(A)404
+b(parallel)f(example:)538 b Fq(pvdiagkbf)811 b Fs(.)606
+b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)p Black 1839 w(23)p Black
+4000 33270 a Ft(5)1121 b(P)-39 b(arallel)465 b(tests)36856
+b(25)4000 35987 y(References)40061 b(27)4000 38705 y(A)764
+b(Listing)466 b(of)e Fq(cvdx.c)34744 b Ft(28)4000 41422
+y(B)826 b(Listing)466 b(of)e Fq(cvbx.c)34744 b Ft(35)4000
+44140 y(C)811 b(Listing)466 b(of)e Fq(cvkx.c)34744 b
+Ft(44)4000 46858 y(D)749 b(Listing)466 b(of)e Fq(pvnx.c)34744
+b Ft(57)4000 49575 y(E)902 b(Listing)466 b(of)e Fq(pvkx.c)34744
+b Ft(64)4000 52293 y(F)941 b(Listing)466 b(of)e Fq(pvkxb.c)34108
+b Ft(83)4000 55010 y(G)722 b(Listing)466 b(of)e Fq(cvkryf.f)32775
+b Ft(100)4000 57728 y(H)727 b(Listing)466 b(of)e Fq(pvdiagkbf.f)30867
+b Ft(116)p Black Black eop
+%%Page: 4 4
+4 3 bop Black Black Black Black eop
+%%Page: 1 5
+1 4 bop Black Black 4000 7638 a Fr(1)1793 b(In)-50 b(tro)50
+b(duction)4000 10376 y Fs(This)459 b(rep)34 b(ort)459
+b(is)f(in)-34 b(tended)460 b(to)f(serv)-34 b(e)458 b(as)h(a)g
+(companion)g(do)34 b(cumen)-34 b(t)460 b(to)f(the)g(User)g(Do)34
+b(cumen)-34 b(tation)460 b(of)4000 11882 y Fp(cv)-27
+b(ode)484 b Fs([1].)773 b(It)482 b(pro)-34 b(vides)483
+b(details,)502 b(with)483 b(listings,)502 b(on)483 b(the)g(example)f
+(programs)h(supplied)g(with)h(the)4000 13387 y Fp(cv)-27
+b(ode)405 b Fs(distribution)h(pac)-34 b(k)-67 b(age.)5882
+14910 y(The)408 b Fp(cv)-27 b(ode)409 b Fs(distribution)h(con)-34
+b(tains)409 b(examples)e(of)i(four)f(t)-34 b(yp)34 b(es:)546
+b(serial)407 b Fp(C)h Fs(examples,)g(parallel)f Fp(C)4000
+16415 y Fs(examples,)413 b(and)f(serial)f(and)i(parallel)d
+Fp(F)-35 b(or)-81 b(tran)413 b Fs(examples.)561 b(The)412
+b(follo)-34 b(wing)412 b(lists)g(summarize)f(all)h(of)4000
+17920 y(these)404 b(examples.)5882 19443 y(Supplied)539
+b(in)g(the)g Fq(sundials/cvode/examples)p 29474 19443
+382 45 v 466 w(ser)g Fs(directory)f(are)g(the)h(follo)-34
+b(wing)539 b(six)f(serial)4000 20948 y(examples)404 b(\(using)h(the)f
+Fp(nvector)p 20130 20948 403 45 v 485 w(serial)h Fs(mo)34
+b(dule\):)p Black 5818 23866 a Fo(\262)p Black 606 w
+Fq(cvdx)406 b Fs(solv)-34 b(es)404 b(a)g(c)-34 b(hemical)403
+b(kinetics)h(problem)g(consisting)h(of)f(three)g(rate)g(equations.)7030
+25371 y(This)438 b(program)g(solv)-34 b(es)437 b(the)h(problem)f(with)h
+(the)g(BDF)f(metho)34 b(d)438 b(and)g(Newton)h(iteration,)445
+b(with)7030 26877 y(the)573 b Fp(cvdense)h Fs(linear)d(solv)-34
+b(er)572 b(and)h(a)f(user-supplied)h(Jacobian)g(routine.)1043
+b(It)573 b(also)f(uses)g(the)7030 28382 y(ro)34 b(ot\257nding)406
+b(feature)e(of)h Fp(cv)-27 b(ode)p Fs(.)p Black 5818
+30951 a Fo(\262)p Black 606 w Fq(cvbx)406 b Fs(solv)-34
+b(es)404 b(the)g(semi-discrete)f(form)i(of)f(an)h(adv)-34
+b(ection-di\256usion)405 b(equation)g(in)f(2-D.)7030
+32456 y(This)438 b(program)g(solv)-34 b(es)437 b(the)h(problem)f(with)h
+(the)g(BDF)f(metho)34 b(d)438 b(and)g(Newton)h(iteration,)445
+b(with)7030 33962 y(the)405 b Fp(cvband)h Fs(linear)d(solv)-34
+b(er)403 b(and)i(a)f(user-supplied)h(Jacobian)g(routine.)p
+Black 5818 36531 a Fo(\262)p Black 606 w Fq(cvkx)322
+b Fs(solv)-34 b(es)320 b(the)h(semi-discrete)e(form)h(of)h(a)f(t)-34
+b(w)g(o-sp)34 b(ecies)321 b(diurnal)g(kinetics)f(adv)-34
+b(ection-di\256usion)7030 38036 y(PDE)404 b(system)g(in)g(2-D.)7030
+39542 y(The)344 b(problem)f(is)g(solv)-34 b(ed)343 b(with)h(the)g
+(BDF/GMRES)g(metho)34 b(d)344 b(\(i.e.)517 b(using)344
+b(the)g Fp(cvspgmr)g Fs(linear)7030 41047 y(solv)-34
+b(er\))527 b(and)g(the)g(blo)34 b(c)-34 b(k-diagonal)527
+b(part)g(of)h(the)f(Newton)g(matrix)g(as)g(a)f(left)h(preconditioner.)
+7030 42552 y(A)457 b(cop)-34 b(y)457 b(of)g(the)g(blo)34
+b(c)-34 b(k-diagonal)457 b(part)g(of)g(the)g(Jacobian)g(is)f(sa)-34
+b(v)g(ed)458 b(and)f(conditionally)g(reused)7030 44058
+y(within)405 b(the)g(preconditioner)f(setup)h(routine.)p
+Black 5818 46627 a Fo(\262)p Black 606 w Fq(cvkxb)314
+b Fs(solv)-34 b(es)311 b(the)h(same)g(problem)f(as)h
+Fq(cvkx)p Fs(,)331 b(with)313 b(the)f(BDF/GMRES)g(metho)34
+b(d)313 b(and)f(a)g(banded)7030 48132 y(preconditioner,)404
+b(generated)g(b)-34 b(y)405 b(di\256erence)e(quotien)-34
+b(ts,)405 b(using)g(the)f(mo)34 b(dule)405 b Fp(cvbandpre)p
+Fs(.)7030 49638 y(The)g(problem)f(is)g(solv)-34 b(ed)404
+b(t)-34 b(wice:)539 b(with)405 b(preconditioning)g(on)f(the)h(left,)f
+(then)g(on)h(the)g(righ)-34 b(t.)p Black 5818 52206 a
+Fo(\262)p Black 606 w Fq(cvdxe)436 b Fs(is)d(the)i(same)f(as)g
+Fq(cvdx)h Fs(but)g(demonstrates)g(the)f(user-supplied)h(error)d(w)-34
+b(eigh)g(t)436 b(function)7030 53712 y(feature)405 b(of)f
+Fp(cv)-27 b(ode)p Fs(.)p Black 5818 56281 a Fo(\262)p
+Black 606 w Fq(cvdemd)406 b Fs(is)e(a)g(demonstration)i(program)e(for)g
+Fp(cv)-27 b(ode)406 b Fs(with)f(direct)f(linear)f(solv)-34
+b(ers.)7030 57786 y(Tw)g(o)466 b(separate)e(problems)h(are)f(solv)-34
+b(ed)464 b(using)h(b)34 b(oth)466 b(the)f(Adams)g(and)g(BDF)f(linear)g
+(m)-34 b(ultistep)7030 59291 y(metho)34 b(ds)405 b(in)f(com)-34
+b(bination)406 b(with)f(functional)g(and)g(Newton)g(iterations.)7030
+60797 y(The)447 b(\257rst)g(problem)f(is)g(the)h(V)-101
+b(an)446 b(der)g(P)-34 b(ol)446 b(oscillator)g(for)g(whic)-34
+b(h)447 b(the)g(Newton)g(iteration)f(cases)7030 62302
+y(use)591 b(the)g(follo)-34 b(wing)591 b(t)-34 b(yp)34
+b(es)591 b(of)g(Jacobian)g(appro)-34 b(ximations:)913
+b(\(1\))591 b(dense,)637 b(user-supplied,)h(\(2\))7030
+63808 y(dense,)581 b(di\256erence-quotien)-34 b(t)546
+b(appro)-34 b(ximation,)582 b(\(3\))546 b(diagonal)g(appro)-34
+b(ximation.)964 b(The)546 b(second)7030 65313 y(problem)455
+b(is)g(a)g(linear)f(ODE)g(with)i(a)f(banded)h(lo)-34
+b(w)g(er)455 b(triangular)g(matrix)g(deriv)-34 b(ed)454
+b(from)h(a)g(2-D)7030 66819 y(adv)-34 b(ection)511 b(PDE.)f(In)g(this)h
+(case,)536 b(the)511 b(Newton)g(iteration)g(cases)f(use)g(the)h(follo)
+-34 b(wing)511 b(t)-34 b(yp)34 b(es)511 b(of)7030 68324
+y(Jacobian)495 b(appro)-34 b(ximation:)719 b(\(1\))495
+b(banded,)518 b(user-supplied,)f(\(2\))495 b(banded,)518
+b(di\256erence-quotien)-34 b(t)7030 69830 y(appro)g(ximation,)405
+b(\(3\))g(diagonal)g(appro)-34 b(ximation.)p Black 5818
+72399 a Fo(\262)p Black 606 w Fq(cvdemk)406 b Fs(is)e(a)g
+(demonstration)i(program)e(for)g Fp(cv)-27 b(ode)406
+b Fs(with)f(the)f(Krylo)-34 b(v)403 b(linear)h(solv)-34
+b(er.)7030 73904 y(This)484 b(program)g(solv)-34 b(es)483
+b(a)h(sti\256)f(ODE)g(system)h(that)g(arises)f(from)h(a)f(system)h(of)g
+(partial)f(di\256er-)7030 75409 y(en)-34 b(tial)444 b(equations.)657
+b(The)445 b(PDE)e(system)g(is)h(a)f(six-sp)34 b(ecies)443
+b(fo)34 b(o)g(d)443 b(w)-34 b(eb)445 b(p)34 b(opulation)444
+b(mo)34 b(del,)453 b(with)7030 76915 y(predator-prey)405
+b(in)-34 b(teraction)404 b(and)h(di\256usion)g(on)f(the)h(unit)g
+(square)f(in)g(t)-34 b(w)g(o)405 b(dimensions.)7030 78420
+y(The)535 b(ODE)g(system)f(is)h(solv)-34 b(ed)535 b(using)g(Newton)h
+(iteration)e(and)i(the)f Fp(cvspgmr)h Fs(linear)e(solv)-34
+b(er)p Black 27697 81741 a(1)p Black eop
+%%Page: 2 6
+2 5 bop Black Black 3030 7638 a Fs(\(scaled)404 b(preconditioned)h
+(GMRES\).)3030 9143 y(The)503 b(preconditioner)f(matrix)f(used)i(is)e
+(the)i(pro)34 b(duct)502 b(of)h(t)-34 b(w)g(o)503 b(matrices:)734
+b(\(1\))502 b(a)g(matrix,)526 b(only)3030 10649 y(de\257ned)389
+b(implicitly)-101 b(,)389 b(based)f(on)g(a)f(\257xed)h(n)-34
+b(um)g(b)34 b(er)388 b(of)g(Gauss-Seidel)g(iterations)g(using)g(the)f
+(di\256u-)3030 12154 y(sion)458 b(terms)f(only;)484 b(and)458
+b(\(2\))h(a)e(blo)34 b(c)-34 b(k-diagonal)458 b(matrix)f(based)h(on)g
+(the)g(partial)f(deriv)-67 b(ativ)-34 b(es)457 b(of)3030
+13660 y(the)405 b(in)-34 b(teraction)405 b(terms)f(only)-101
+b(,)403 b(using)i(blo)34 b(c)-34 b(k-grouping.)3030 15165
+y(F)-101 b(our)284 b(di\256eren)-34 b(t)283 b(runs)g(are)g(made)g(for)g
+(this)g(problem.)498 b(The)284 b(pro)34 b(duct)283 b(preconditoner)h
+(is)e(applied)i(on)3030 16671 y(the)358 b(left)e(and)i(on)f(the)g(righ)
+-34 b(t.)524 b(In)357 b(eac)-34 b(h)357 b(case,)365 b(b)34
+b(oth)358 b(the)f(mo)34 b(di\257ed)357 b(and)h(classical)d(Gram-Sc)-34
+b(hmidt)3030 18176 y(options)405 b(are)f(tested.)1882
+21028 y(Supplied)275 b(in)f(the)g Fq(sundials/cvode/examples)p
+24680 21028 382 45 v 467 w(par)h Fs(directory)e(are)g(the)h(follo)-34
+b(wing)275 b(three)f(parallel)0 22533 y(examples)404
+b(\(using)h(the)f Fp(nvector)p 16130 22533 403 45 v 485
+w(p)-81 b(arallel)406 b Fs(mo)34 b(dule\):)p Black 1818
+25049 a Fo(\262)p Black 606 w Fq(pvnx)406 b Fs(solv)-34
+b(es)404 b(the)g(semi-discrete)f(form)i(of)f(an)h(adv)-34
+b(ection-di\256usion)405 b(equation)g(in)f(1-D.)3030
+26555 y(This)522 b(program)g(solv)-34 b(es)521 b(the)g(problem)h(with)g
+(the)g(option)g(for)f(nonsti\256)i(systems,)550 b(i.e.)889
+b(Adams)3030 28060 y(metho)34 b(d)405 b(and)g(functional)g(iteration.)p
+Black 1818 30576 a Fo(\262)p Black 606 w Fq(pvkx)h Fs(is)e(the)g
+(parallel)f(implemen)-34 b(tation)406 b(of)e Fq(cvkx)p
+Fs(.)p Black 1818 33092 a Fo(\262)p Black 606 w Fq(pvkxb)364
+b Fs(solv)-34 b(es)361 b(the)h(same)g(problem)f(as)h
+Fq(pvkx)p Fs(,)371 b(with)363 b(the)f(BDF/GMRES)g(metho)34
+b(d)362 b(and)h(a)e(blo)34 b(c)-34 b(k-)3030 34598 y(diagonal)376
+b(matrix)f(with)h(banded)g(blo)34 b(c)-34 b(ks)375 b(as)g(a)g
+(preconditioner,)381 b(generated)375 b(b)-34 b(y)376
+b(di\256erence)e(quo-)3030 36103 y(tien)-34 b(ts,)405
+b(using)g(the)f(mo)34 b(dule)404 b Fp(cvbbdpre)p Fs(.)1882
+38619 y(With)601 b(the)h Fp(f)-27 b(cv)g(ode)602 b Fs(mo)34
+b(dule,)651 b(in)601 b(the)g(directories)f Fq
+(sundials/cvode/fcmix/examples)p 45698 38619 382 45 v
+469 w(ser)0 40125 y Fs(and)417 b Fq(sundials/cvode/fcmix/examples)p
+20889 40125 V 468 w(par)p Fs(,)j(are)c(the)g(follo)-34
+b(wing)417 b(examples)e(for)h(the)h Fp(F)-35 b(or)-81
+b(tran)p Fs(-)0 41630 y Fp(C)404 b Fs(in)-34 b(terface:)p
+Black 1818 44146 a Fo(\262)p Black 606 w Fq(cvdensef)407
+b Fs(is)d(a)g(serial)f(c)-34 b(hemical)404 b(kinetics)f(example)h(\()p
+Fq(BDF)p Fs(/)p Fp(dense)p Fs(\))i(with)f(ro)34 b(ot\257nding.)p
+Black 1818 46662 a Fo(\262)p Black 606 w Fq(cvbandf)407
+b Fs(is)d(a)g(serial)f(adv)-34 b(ection-di\256usion)405
+b(example)f(\()p Fq(BDF)p Fs(/)p Fp(band)p Fs(\).)p Black
+1818 49178 a Fo(\262)p Black 606 w Fq(cvkryf)i Fs(is)e(a)g(serial)g
+(kinetics-transp)34 b(ort)404 b(example)g(\()p Fq(BDF)p
+Fs(/)p Fp(spgmr)p Fs(\).)p Black 1818 51694 a Fo(\262)p
+Black 606 w Fq(cvkrybf)j Fs(is)d(the)g Fq(cvkryf)i Fs(example)e(with)h
+Fp(f)-27 b(cvbp)p Fs(.)p Black 1818 54210 a Fo(\262)p
+Black 606 w Fq(pvdiagnf)407 b Fs(is)d(a)g(parallel)f(diagonal)i(ODE)e
+(example)h(\()p Fq(ADAMS)p Fs(/)p Fq(FUNCTIONAL)p Fs(\).)p
+Black 1818 56727 a Fo(\262)p Black 606 w Fq(pvdiagkf)j
+Fs(is)d(a)g(parallel)f(diagonal)i(ODE)e(example)h(\()p
+Fq(BDF)p Fs(/)p Fp(spgmr)p Fs(\).)p Black 1818 59243
+a Fo(\262)p Black 606 w Fq(pvdiagkbf)k Fs(is)403 b(a)i(parallel)e
+(diagonal)h(ODE)g(example)f(\()p Fq(BDF)p Fs(/)p Fp(spgmr)j
+Fs(with)f Fp(f)-27 b(cvbbd)p Fs(\).)0 63359 y(In)495
+b(the)h(follo)-34 b(wing)496 b(sections,)518 b(w)-34
+b(e)496 b(giv)-34 b(e)494 b(detailed)i(descriptions)f(of)h(some)f
+(\(but)i(not)f(all\))f(of)h(these)g(ex-)0 64864 y(amples.)593
+b(The)423 b(App)34 b(endices)422 b(con)-34 b(tain)424
+b(complete)e(listings)g(of)h(those)g(examples)e(describ)34
+b(ed)422 b(b)34 b(elo)-34 b(w.)594 b(W)-101 b(e)0 66369
+y(also)494 b(giv)-34 b(e)494 b(our)h(output)h(\257les)e(for)h(eac)-34
+b(h)494 b(of)h(these)g(examples,)516 b(but)496 b(users)e(should)h(b)34
+b(e)495 b(cautioned)g(that)0 67875 y(their)396 b(results)g(ma)-34
+b(y)397 b(di\256er)e(sligh)-34 b(tly)397 b(from)f(these.)536
+b(Di\256erences)395 b(in)h(solution)h(v)-67 b(alues)396
+b(ma)-34 b(y)396 b(di\256er)g(within)0 69380 y(the)390
+b(tolerances,)h(and)g(di\256erences)d(in)i(cum)-34 b(ulativ)g(e)390
+b(coun)-34 b(ters,)393 b(suc)-34 b(h)390 b(as)f(n)-34
+b(um)g(b)34 b(ers)391 b(of)f(steps)g(or)f(Newton)0 70886
+y(iterations,)361 b(ma)-34 b(y)351 b(di\256er)f(from)h(one)g(mac)-34
+b(hine)351 b(en)-34 b(vironmen)g(t)351 b(to)h(another)f(b)-34
+b(y)351 b(as)g(m)-34 b(uc)g(h)352 b(as)e(10\045)h(to)g(20\045.)1882
+72395 y(The)406 b(\257nal)g(section)f(of)h(this)g(rep)34
+b(ort)405 b(describ)34 b(es)404 b(a)i(set)f(of)h(tests)g(done)g(with)g
+(the)g(parallel)e(v)-34 b(ersion)406 b(of)0 73900 y(CV)-34
+b(ODE,)404 b(using)h(a)f(problem)g(based)h(on)f(the)h
+Fq(cvkx)p Fs(/)p Fq(pvkx)i Fs(example.)1882 75409 y(In)320
+b(the)g(descriptions)g(b)34 b(elo)-34 b(w,)336 b(w)-34
+b(e)320 b(mak)-34 b(e)320 b(frequen)-34 b(t)320 b(references)f(to)h
+(the)g Fp(cv)-27 b(ode)321 b Fs(User)e(Do)34 b(cumen)-34
+b(t)321 b([1].)0 76915 y(All)423 b(citations)h(to)g(sp)34
+b(eci\257c)423 b(sections)g(\(e.g.)596 b Fo(x)p Fs(5.2\))424
+b(are)f(references)f(to)i(parts)g(of)g(that)h(User)e(Do)34
+b(cumen)-34 b(t,)0 78420 y(unless)404 b(explicitly)f(stated)i
+(otherwise.)p Black 23697 81741 a(2)p Black eop
+%%Page: 3 7
+3 6 bop Black Black 4000 7638 a Ft(Note)p Fs(.)784 b(The)486
+b(examples)g(in)g(the)g Fp(cv)-27 b(ode)487 b Fs(distribution)h(are)d
+(written)i(in)f(suc)-34 b(h)486 b(a)g(w)-34 b(a)g(y)487
+b(as)f(to)h(compile)4000 9143 y(and)582 b(run)g(for)g(an)-34
+b(y)582 b(com)-34 b(bination)582 b(of)g(con\257guration)h(options)f
+(during)g(the)g(installation)g(of)g Fp(sundi-)4000 10649
+y(als)496 b Fs(\(see)f Fo(x)p Fs(2\).)811 b(As)496 b(a)f(consequence,)
+517 b(they)496 b(con)-34 b(tain)496 b(p)34 b(ortions)495
+b(of)h(co)34 b(de)495 b(that)h(will)f(not)h(b)34 b(e)495
+b(t)-34 b(ypically)4000 12154 y(presen)g(t)518 b(in)g(a)g(user)g
+(program.)879 b(F)-101 b(or)518 b(example,)545 b(all)517
+b Fp(C)g Fs(example)g(programs)h(mak)-34 b(e)518 b(use)g(of)g(the)g(v)
+-67 b(ari-)4000 13660 y(able)514 b Fq(SUNDIALS)p 11833
+13660 382 45 v 461 w(EXTENDED)p 17382 13660 V 461 w(PRECISION)j
+Fs(to)d(test)h(if)f(the)g(solv)-34 b(er)513 b(libraries)g(w)-34
+b(ere)514 b(built)h(in)f(extended)4000 15165 y(precision)433
+b(and)g(use)h(the)f(appropriate)h(con)-34 b(v)g(ersion)433
+b(sp)34 b(eci\257ers)433 b(in)g Fq(printf)i Fs(functions.)627
+b(Similarly)-101 b(,)439 b(the)4000 16671 y Fp(F)-35
+b(or)-81 b(tran)301 b Fs(examples)e(in)h Fp(f)-27 b(cv)g(ode)301
+b Fs(are)f(automatically)g(pre-pro)34 b(cessed)299 b(to)h(generate)g
+(source)f(co)34 b(de)300 b(that)4000 18176 y(corresp)34
+b(onds)344 b(to)f(the)h(manner)g(in)g(whic)-34 b(h)344
+b(the)g Fp(cv)-27 b(ode)345 b Fs(libraries)d(w)-34 b(ere)344
+b(built)g(\(see)f Fo(x)p Fs(4)g(in)h(this)g(do)34 b(cumen)-34
+b(t)4000 19682 y(for)404 b(more)g(details\).)p Black
+27697 81741 a(3)p Black eop
+%%Page: 4 8
+4 7 bop Black Black 0 7638 a Fr(2)1793 b(Serial)599 b(example)g
+(problems)0 10550 y Fn(2.1)1495 b(A)499 b(dense)f(example:)665
+b Fm(cvdx)0 13000 y Fs(As)383 b(an)h(initial)e(illustration)i(of)f(the)
+h(use)f(of)g(the)h Fp(cv)-27 b(ode)384 b Fs(pac)-34 b(k)-67
+b(age)383 b(for)g(the)h(in)-34 b(tegration)383 b(of)h(IVP)f(ODEs,)0
+14506 y(w)-34 b(e)509 b(giv)-34 b(e)509 b(a)g(sample)g(program)g
+(called)f Fq(cvdx.c)p Fs(.)855 b(It)509 b(uses)g(the)g
+Fp(cv)-27 b(ode)510 b Fs(dense)g(linear)e(solv)-34 b(er)508
+b(mo)34 b(dule)0 16011 y Fp(cvdense)584 b Fs(and)g(the)f
+Fp(nvector)p 15426 16011 403 45 v 485 w(serial)g Fs(mo)34
+b(dule)583 b(\(whic)-34 b(h)584 b(pro)-34 b(vides)583
+b(a)g(serial)f(implemen)-34 b(tation)584 b(of)0 17517
+y Fp(nvector)p Fs(\))407 b(in)d(the)g(solution)h(of)g(a)f(3-sp)34
+b(ecies)403 b(c)-34 b(hemical)404 b(kinetics)f(problem.)1882
+19106 y(The)h(problem)h(consists)f(of)h(the)f(follo)-34
+b(wing)405 b(three)f(rate)g(equations:)13799 21351 y(_)-554
+b Fl(y)14176 21533 y Fk(1)15038 21351 y Fs(=)337 b Fo(\241)p
+Fs(0)p Fl(:)p Fs(04)269 b Fo(\242)g Fl(y)20885 21533
+y Fk(1)21680 21351 y Fs(+)g(10)24104 20851 y Fk(4)24900
+21351 y Fo(\242)g Fl(y)26100 21533 y Fk(2)26895 21351
+y Fo(\242)g Fl(y)28095 21533 y Fk(3)13799 23317 y Fs(_)-554
+b Fl(y)14176 23499 y Fk(2)15038 23317 y Fs(=)337 b(0)p
+Fl(:)p Fs(04)269 b Fo(\242)g Fl(y)19942 23499 y Fk(1)20738
+23317 y Fo(\241)g Fs(10)23162 22816 y Fk(4)23957 23317
+y Fo(\242)g Fl(y)25157 23499 y Fk(2)25952 23317 y Fo(\242)g
+Fl(y)27152 23499 y Fk(3)27948 23317 y Fo(\241)g Fs(3)g
+Fo(\242)h Fs(10)31854 22816 y Fk(7)32649 23317 y Fo(\242)f
+Fl(y)33892 22816 y Fk(2)33849 23616 y(2)13799 25282 y
+Fs(_)-554 b Fl(y)14176 25464 y Fk(3)15038 25282 y Fs(=)337
+b(3)269 b Fo(\242)g Fs(10)19011 24782 y Fk(7)19807 25282
+y Fo(\242)g Fl(y)21050 24782 y Fk(2)21007 25582 y(2)46451
+23310 y Fs(\(1\))0 28323 y(on)495 b(the)g(in)-34 b(terv)-67
+b(al)494 b Fl(t)487 b Fo(2)g Fs([0)p Fl(;)696 b Fs(4)330
+b Fo(\242)f Fs(10)15433 27883 y Fk(10)16430 28323 y Fs(],)516
+b(with)496 b(initial)e(conditions)h Fl(y)30546 28505
+y Fk(1)31072 28323 y Fs(\(0\))489 b(=)e(1)p Fl(:)p Fs(0,)516
+b Fl(y)37535 28505 y Fk(2)38062 28323 y Fs(\(0\))488
+b(=)f Fl(y)42122 28505 y Fk(3)42648 28323 y Fs(\(0\))h(=)f(0)p
+Fl(:)p Fs(0.)0 29828 y(While)334 b(in)-34 b(tegrating)335
+b(the)f(system,)348 b(w)-34 b(e)335 b(also)f(use)h(the)f(ro)34
+b(ot\257nding)336 b(feature)e(to)h(\257nd)g(the)g(p)34
+b(oin)-34 b(ts)335 b(at)g(whic)-34 b(h)0 31334 y Fl(y)594
+31516 y Fk(1)1457 31334 y Fs(=)336 b(10)3948 30894 y
+Fj(\241)p Fk(4)5610 31334 y Fs(or)404 b(at)g(whic)-34
+b(h)405 b Fl(y)12638 31516 y Fk(3)13501 31334 y Fs(=)337
+b(0)p Fl(:)p Fs(01.)1882 32923 y(F)-101 b(or)383 b(the)h(source,)k
+(listed)383 b(in)h(App)34 b(endix)384 b(A,)j(w)-34 b(e)384
+b(giv)-34 b(e)383 b(a)h(rather)g(detailed)f(explanation)h(of)g(the)g
+(parts)0 34428 y(of)404 b(the)h(program)f(and)h(their)f(in)-34
+b(teraction)405 b(with)g Fp(cv)-27 b(ode)p Fs(.)1882
+36017 y(F)-101 b(ollo)-34 b(wing)285 b(the)f(initial)g(commen)-34
+b(t)285 b(blo)34 b(c)-34 b(k,)307 b(this)285 b(program)f(has)h(a)f(n)
+-34 b(um)g(b)34 b(er)285 b(of)g Fq(#include)i Fs(lines,)307
+b(whic)-34 b(h)0 37523 y(allo)g(w)401 b(access)f(to)h(useful)g(items)f
+(in)h Fp(cv)-27 b(ode)402 b Fs(header)e(\257les.)538
+b(The)401 b Fq(sundialstypes.h)k Fs(\257le)c(pro)-34
+b(vides)401 b(the)0 39028 y(de\257nition)385 b(of)g(the)f(t)-34
+b(yp)34 b(e)384 b Fq(realtype)j Fs(\(see)d Fo(x)p Fs(5.2)g(for)g
+(details\).)532 b(F)-101 b(or)384 b(no)-34 b(w,)389 b(it)384
+b(su\261ces)h(to)f(read)g Fq(realtype)0 40534 y Fs(as)559
+b Fq(double)p Fs(.)1004 b(The)559 b Fq(cvode.h)i Fs(\257le)d(pro)-34
+b(vides)559 b(protot)-34 b(yp)34 b(es)559 b(for)g(the)g
+Fp(cv)-27 b(ode)559 b Fs(functions)i(to)d(b)34 b(e)559
+b(called)0 42039 y(\(excluding)407 b(the)g(linear)g(solv)-34
+b(er)406 b(selection)g(function\),)j(and)f(also)f(a)g(n)-34
+b(um)g(b)34 b(er)408 b(of)f(constan)-34 b(ts)409 b(that)f(are)f(to)0
+43544 y(b)34 b(e)412 b(used)h(in)f(setting)h(input)h(argumen)-34
+b(ts)413 b(and)h(testing)f(the)f(return)h(v)-67 b(alue)411
+b(of)i Fq(CVode)p Fs(.)565 b(The)413 b Fq(cvdense.h)0
+45050 y Fs(\257le)535 b(pro)-34 b(vides)535 b(the)h(protot)-34
+b(yp)34 b(e)536 b(for)f(the)h Fq(CVDense)h Fs(function.)933
+b(The)536 b Fq(nvector)p 36872 45050 382 45 v 461 w(serial.h)i
+Fs(\257le)d(is)g(the)0 46555 y(header)458 b(\257le)g(for)h(the)g
+(serial)e(implemen)-34 b(tation)460 b(of)e(the)h Fp(nvector)i
+Fs(mo)34 b(dule)458 b(and)h(includes)g(de\257nitions)0
+48061 y(of)451 b(the)h Fq(N)p 4274 48061 V 458 w(Vector)h
+Fs(t)-34 b(yp)34 b(e,)463 b(a)451 b(macro)g(to)g(access)f(v)-34
+b(ector)451 b(comp)34 b(onen)-34 b(ts,)464 b(and)451
+b(protot)-34 b(yp)34 b(es)452 b(for)g(the)f(serial)0
+49566 y(implemen)-34 b(tation)296 b(sp)34 b(eci\257c)294
+b(mac)-34 b(hine)295 b(en)-34 b(vironmen)g(t)295 b(memory)f(allo)34
+b(cation)294 b(and)i(freeing)e(functions.)503 b(The)0
+51072 y Fq(dense.h)515 b Fs(\257le)e(pro)-34 b(vides)514
+b(the)f(de\257nition)h(of)g(the)f(dense)g(matrix)g(t)-34
+b(yp)34 b(e)513 b Fq(DenseMat)j Fs(and)e(a)f(macro)g(for)0
+52577 y(accessing)427 b(matrix)f(elemen)-34 b(ts.)608
+b(W)-101 b(e)426 b(ha)-34 b(v)g(e)428 b(explicitly)d(included)i
+Fq(dense.h)p Fs(,)435 b(but)429 b(this)e(is)g(not)h(necessary)0
+54083 y(b)34 b(ecause)404 b(it)g(is)g(included)g(b)-34
+b(y)405 b Fq(cvdense.h)p Fs(.)1882 55672 y(This)433 b(program)g
+(includes)g(t)-34 b(w)g(o)434 b(user-de\257ned)g(accessor)e(macros,)439
+b Fq(Ith)434 b Fs(and)f Fq(IJth)h Fs(that)g(are)e(useful)0
+57177 y(in)331 b(writing)f(the)h(problem)g(functions)h(in)f(a)f(form)h
+(closely)e(matc)-34 b(hing)332 b(the)f(mathematical)g(description)g(of)
+0 58683 y(the)366 b(ODE)g(system,)373 b(i.e.)525 b(with)366
+b(comp)34 b(onen)-34 b(ts)368 b(n)-34 b(um)g(b)34 b(ered)367
+b(from)f(1)g(instead)g(of)g(from)g(0.)526 b(The)366 b
+Fq(Ith)h Fs(macro)0 60188 y(is)393 b(used)g(to)h(access)e(comp)34
+b(onen)-34 b(ts)395 b(of)e(a)g(v)-34 b(ector)393 b(of)g(t)-34
+b(yp)34 b(e)393 b Fq(N)p 26463 60188 V 459 w(Vector)i
+Fs(with)f(a)f(serial)f(implemen)-34 b(tation.)536 b(It)0
+61693 y(is)364 b(de\257ned)h(using)g(the)f Fp(nvector)p
+15667 61693 403 45 v 485 w(serial)h Fs(accessor)e(macro)h
+Fq(NV)p 29700 61693 382 45 v 459 w(Ith)p 32067 61693
+V 459 w(S)g Fs(whic)-34 b(h)365 b(n)-34 b(um)g(b)34 b(ers)366
+b(comp)34 b(onen)-34 b(ts)0 63199 y(starting)561 b(with)f(0.)1006
+b(The)561 b Fq(IJth)g Fs(macro)f(is)f(used)i(to)f(access)f(elemen)-34
+b(ts)560 b(of)h(a)f(dense)g(matrix)f(of)i(t)-34 b(yp)34
+b(e)0 64704 y Fq(DenseMat)p Fs(.)526 b(It)356 b(is)h(de\257ned)h(using)
+f(the)h Fp(dense)f Fs(accessor)f(macro)g Fq(DENSE)p 32909
+64704 V 460 w(ELEM)i Fs(whic)-34 b(h)358 b(n)-34 b(um)g(b)34
+b(ers)358 b(matrix)0 66210 y(ro)-34 b(ws)531 b(and)g(columns)g
+(starting)h(with)f(0.)918 b(The)531 b(macro)f Fq(NV)p
+27390 66210 V 459 w(Ith)p 29757 66210 V 459 w(S)h Fs(is)f(fully)h
+(describ)34 b(ed)530 b(in)g Fo(x)p Fs(6.1.)917 b(The)0
+67715 y(macro)404 b Fq(DENSE)p 6896 67715 V 460 w(ELEM)h
+Fs(is)f(fully)g(describ)34 b(ed)404 b(in)g Fo(x)p Fs(5.6.3.)1882
+69304 y(Next,)421 b(the)e(program)g(includes)g(some)f(problem-sp)34
+b(eci\257c)418 b(constan)-34 b(ts,)424 b(whic)-34 b(h)419
+b(are)f(isolated)h(to)f(this)0 70810 y(early)395 b(lo)34
+b(cation)396 b(to)g(mak)-34 b(e)396 b(it)g(easy)g(to)h(c)-34
+b(hange)396 b(them)h(as)f(needed.)536 b(The)397 b(program)f(prologue)g
+(ends)h(with)0 72315 y(protot)-34 b(yp)34 b(es)464 b(of)f(four)g(priv)
+-67 b(ate)462 b(help)34 b(er)462 b(functions)i(and)g(the)f(three)g
+(user-supplied)g(functions)i(that)e(are)0 73821 y(called)403
+b(b)-34 b(y)405 b Fp(cv)-27 b(ode)p Fs(.)1882 75409 y(The)369
+b Fq(main)h Fs(program)f(b)34 b(egins)369 b(with)g(some)g(dimensions)g
+(and)h(t)-34 b(yp)34 b(e)369 b(declarations,)375 b(including)370
+b(use)f(of)0 76915 y(the)466 b(t)-34 b(yp)34 b(e)467
+b Fq(N)p 5651 76915 V 458 w(Vector)p Fs(.)726 b(The)467
+b(next)f(sev)-34 b(eral)465 b(lines)g(allo)34 b(cate)465
+b(memory)h(for)g(the)g Fq(y)g Fs(and)h Fq(abstol)h Fs(v)-34
+b(ectors)0 78420 y(using)464 b Fq(N)p 3943 78420 V 458
+w(VNew)p 6945 78420 V 460 w(Serial)h Fs(with)f(a)g(length)g(argumen)-34
+b(t)464 b(of)g Fq(NEQ)g Fs(\(=)435 b(3\).)717 b(The)463
+b(lines)g(follo)-34 b(wing)464 b(that)h(load)p Black
+23697 81741 a(4)p Black eop
+%%Page: 5 9
+5 8 bop Black Black 4000 7638 a Fs(the)513 b(initial)f(v)-67
+b(alues)511 b(of)i(the)g(dep)34 b(endenden)-34 b(t)514
+b(v)-67 b(ariable)511 b(v)-34 b(ector)512 b(in)-34 b(to)514
+b Fq(y)e Fs(and)h(the)g(absolute)g(tolerances)4000 9143
+y(in)-34 b(to)405 b Fq(abstol)h Fs(using)f(the)f Fq(Ith)h
+Fs(macro.)5882 10652 y(The)530 b(calls)f(to)h Fq(N)p
+13644 10652 382 45 v 458 w(VNew)p 16646 10652 V 460 w(Serial)p
+Fs(,)562 b(and)531 b(also)e(later)g(calls)g(to)h Fq(CVode***)i
+Fs(functions,)562 b(mak)-34 b(e)530 b(use)g(of)4000 12157
+y(a)483 b(priv)-67 b(ate)483 b(function,)504 b Fq(check)p
+17685 12157 V 460 w(flag)p Fs(,)g(whic)-34 b(h)484 b(examines)e(the)i
+(return)f(v)-67 b(alue)483 b(and)h(prin)-34 b(ts)484
+b(a)f(message)g(if)4000 13663 y(there)309 b(w)-34 b(as)310
+b(a)f(failure.)507 b(The)309 b Fq(check)p 19989 13663
+V 460 w(flag)h Fs(function)h(w)-34 b(as)310 b(written)g(to)f(b)34
+b(e)309 b(used)h(for)f(an)-34 b(y)309 b(serial)f Fp(sundials)4000
+15168 y Fs(application.)5882 16676 y(The)347 b(call)e(to)i
+Fq(CVodeCreate)k Fs(creates)345 b(the)i Fp(cv)-27 b(ode)348
+b Fs(solv)-34 b(er)346 b(memory)g(blo)34 b(c)-34 b(k,)357
+b(sp)34 b(ecifying)346 b(the)h Fq(CV)p 49708 16676 V
+459 w(BDF)4000 18182 y Fs(in)-34 b(tegration)396 b(metho)34
+b(d)396 b(with)g Fq(CV)p 18658 18182 V 459 w(NEWTON)i
+Fs(iteration.)535 b(Its)396 b(return)g(v)-67 b(alue)394
+b(is)h(a)h(p)34 b(oin)-34 b(ter)395 b(to)h(that)h(memory)4000
+19687 y(blo)34 b(c)-34 b(k)447 b(for)g(this)h(problem.)668
+b(In)447 b(the)h(case)f(of)h(failure,)457 b(the)448 b(return)f(v)-67
+b(alue)447 b(is)g Fq(NULL)p Fs(.)h(This)g(p)34 b(oin)-34
+b(ter)448 b(m)-34 b(ust)4000 21193 y(b)34 b(e)404 b(passed)h(in)f(the)g
+(remaining)g(calls)g(to)g Fp(cv)-27 b(ode)406 b Fs(functions.)5882
+22701 y(The)575 b(call)e(to)i Fq(CVodeMalloc)j Fs(allo)34
+b(cates)573 b(the)i(solv)-34 b(er)574 b(memory)f(blo)34
+b(c)-34 b(k.)1049 b(Its)574 b(argumen)-34 b(ts)576 b(include)4000
+24207 y(the)450 b(name)g(of)g(the)g Fp(C)g Fs(function)h
+Fq(f)f Fs(de\257ning)h(the)f(righ)-34 b(t-hand)451 b(side)f(function)h
+Fl(f)130 b Fs(\()p Fl(t;)202 b(y)43 b Fs(\),)463 b(and)450
+b(the)g(initial)4000 25712 y(v)-67 b(alues)433 b(of)h
+Fl(t)f Fs(and)h Fl(y)43 b Fs(.)627 b(The)434 b(argumen)-34
+b(t)435 b Fq(CV)p 23230 25712 V 1095 w(SV)f Fs(sp)34
+b(eci\257es)433 b(a)h(v)-34 b(ector)433 b(of)h(absolute)g(tolerances,)
+440 b(and)434 b(this)4000 27218 y(is)429 b(follo)-34
+b(w)g(ed)430 b(b)-34 b(y)430 b(the)f(v)-67 b(alue)428
+b(of)i(the)f(relativ)-34 b(e)429 b(tolerance)f Fq(reltol)j
+Fs(and)f(the)g(absolute)g(tolerance)e(v)-34 b(ector)4000
+28723 y Fq(abstol)p Fs(.)541 b(See)403 b Fo(x)p Fs(5.5.1)h(for)g(full)g
+(details)g(of)h(this)f(call.)5882 30231 y(The)289 b(call)f(to)h
+Fq(CVodeRootInit)k Fs(sp)34 b(eci\257es)288 b(that)i(a)f(ro)34
+b(ot\257nding)290 b(problem)f(is)f(to)h(b)34 b(e)288
+b(solv)-34 b(ed)289 b(along)g(with)4000 31737 y(the)415
+b(in)-34 b(tegration)415 b(of)f(the)h(ODE)f(system,)j(that)e(the)g(ro)
+34 b(ot)414 b(functions)i(are)d(sp)34 b(eci\257ed)414
+b(in)h(the)f(function)i Fq(g)p Fs(,)4000 33242 y(and)341
+b(that)h(there)f(are)f(t)-34 b(w)g(o)342 b(suc)-34 b(h)342
+b(functions.)518 b(Sp)34 b(eci\257cally)-101 b(,)352
+b(they)341 b(are)f(set)h(to)g Fl(y)39406 33424 y Fk(1)40075
+33242 y Fo(\241)142 b Fs(0)p Fl(:)p Fs(0001)340 b(and)i
+Fl(y)47755 33424 y Fk(3)48423 33242 y Fo(\241)142 b Fs(0)p
+Fl(:)p Fs(01,)4000 34748 y(resp)34 b(ectiv)-34 b(ely)-101
+b(.)537 b(See)404 b Fo(x)p Fs(5.7.1)f(for)h(a)g(detailed)g(description)
+h(of)f(this)h(call.)5882 36256 y(The)291 b(calls)f(to)h
+Fq(CVDense)i Fs(\(see)d Fo(x)p Fs(5.5.2\))h(and)g Fq(CVDenseSetJacFn)
+296 b Fs(\(see)290 b Fo(x)p Fs(5.5.4\))h(sp)34 b(ecify)290
+b(the)h Fp(cvdense)4000 37761 y Fs(linear)403 b(solv)-34
+b(er)404 b(with)h(an)f(analytic)g(Jacobian)g(supplied)h(b)-34
+b(y)405 b(the)f(user-supplied)h(function)h Fq(Jac)p Fs(.)5882
+39270 y(The)440 b(actual)g(solution)h(of)g(the)f(ODE)f(initial)h(v)-67
+b(alue)439 b(problem)h(is)g(accomplished)g(in)g(the)g(lo)34
+b(op)440 b(o)-34 b(v)g(er)4000 40775 y(v)-67 b(alues)460
+b(of)i(the)f(output)i(time)e Fq(tout)p Fs(.)710 b(In)461
+b(eac)-34 b(h)461 b(pass)h(of)f(the)g(lo)34 b(op,)475
+b(the)462 b(program)f(calls)f Fq(CVode)i Fs(in)f(the)4000
+42281 y Fq(CV)p 5348 42281 V 459 w(NORMAL)403 b Fs(mo)34
+b(de,)402 b(meaning)g(that)g(the)g(in)-34 b(tegrator)402
+b(is)f(to)h(tak)-34 b(e)402 b(steps)g(un)-34 b(til)402
+b(it)f(o)-34 b(v)g(ersho)34 b(ots)402 b Fq(tout)h Fs(and)4000
+43786 y(then)386 b(in)-34 b(terp)34 b(olate)386 b(to)g
+Fl(t)337 b Fs(=)p Fq(tout)p Fs(,)390 b(putting)d(the)f(computed)h(v)-67
+b(alue)384 b(of)i Fl(y)43 b Fs(\()p Fq(tout)p Fs(\))389
+b(in)-34 b(to)386 b Fq(y)p Fs(,)j(with)e Fq(t)f Fs(=)f
+Fq(tout)p Fs(.)4000 45292 y(The)f(return)g(v)-67 b(alue)383
+b(in)h(this)g(case)f(is)g Fq(CV)p 22100 45292 V 459 w(SUCCESS)p
+Fs(.)j(Ho)-34 b(w)g(ev)g(er,)388 b(if)383 b Fq(CVode)j
+Fs(\257nds)f(a)e(ro)34 b(ot)384 b(b)34 b(efore)383 b(reac)-34
+b(hing)4000 46797 y(the)369 b(next)f(v)-67 b(alue)367
+b(of)h Fq(tout)p Fs(,)377 b(it)368 b(returns)g Fq(CV)p
+23116 46797 V 459 w(ROOT)p 26119 46797 V 460 w(RETURN)i
+Fs(and)f(stores)f(the)g(ro)34 b(ot)368 b(lo)34 b(cation)368
+b(in)g Fq(t)h Fs(and)f(the)4000 48303 y(solution)361
+b(there)g(in)f Fq(y)p Fs(.)524 b(In)361 b(either)f(case,)368
+b(the)361 b(program)f(prin)-34 b(ts)362 b Fq(t)f Fs(and)g
+Fq(y)p Fs(.)524 b(In)361 b(the)f(case)g(of)h(a)g(ro)34
+b(ot,)368 b(it)361 b(calls)4000 49808 y Fq(CVodeGetRootInfo)366
+b Fs(to)361 b(get)g(a)g(length-2)g(arra)-34 b(y)360 b
+Fq(rootsfound)k Fs(of)d(bits)g(sho)-34 b(wing)363 b(whic)-34
+b(h)361 b(ro)34 b(ot)361 b(function)4000 51314 y(w)-34
+b(as)441 b(found)h(to)e(ha)-34 b(v)g(e)441 b(a)f(ro)34
+b(ot.)647 b(If)440 b Fq(CVode)i Fs(returned)f(an)-34
+b(y)441 b(negativ)-34 b(e)440 b(v)-67 b(alue)439 b(\(indicating)i(a)g
+(failure\),)448 b(the)4000 52819 y(program)527 b(breaks)f(out)h(of)g
+(the)g(lo)34 b(op.)906 b(In)527 b(the)g(case)f(of)h(a)g
+Fq(CV)p 32924 52819 V 459 w(SUCCESS)h Fs(return,)558
+b(the)527 b(v)-67 b(alue)526 b(of)h Fq(tout)4000 54324
+y Fs(is)448 b(adv)-67 b(anced)448 b(\(m)-34 b(ultiplied)449
+b(b)-34 b(y)449 b(10\))g(and)g(a)f(coun)-34 b(ter)449
+b(\()p Fq(iout)p Fs(\))h(is)e(adv)-67 b(anced,)459 b(so)449
+b(that)g(the)g(lo)34 b(op)448 b(can)g(b)34 b(e)4000 55830
+y(ended)374 b(when)g(that)g(coun)-34 b(ter)374 b(reac)-34
+b(hes)373 b(the)g(preset)g(n)-34 b(um)g(b)34 b(er)375
+b(of)e(output)i(times,)k Fq(NOUT)c Fs(=)e(12.)528 b(See)373
+b Fo(x)p Fs(5.5.3)4000 57335 y(for)404 b(full)g(details)h(of)f(the)h
+(call)e(to)h Fq(CVode)p Fs(.)5882 58844 y(Finally)-101
+b(,)321 b(the)302 b(main)f(program)h(calls)f Fq(PrintFinalStats)306
+b Fs(to)c(get)g(and)g(prin)-34 b(t)302 b(all)f(of)h(the)g(relev)-67
+b(an)-34 b(t)300 b(sta-)4000 60349 y(tistical)292 b(quan)-34
+b(tities.)502 b(It)293 b(then)g(calls)f Fq(NV)p 21686
+60349 V 459 w(Destroy)j Fs(to)e(free)f(the)h(v)-34 b(ectors)293
+b Fq(y)f Fs(and)i Fq(abstol)p Fs(,)316 b(and)294 b Fq(CVodeFree)4000
+61855 y Fs(to)404 b(free)g(the)h Fp(cv)-27 b(ode)405
+b Fs(memory)f(blo)34 b(c)-34 b(k.)5882 63363 y(The)455
+b(function)i Fq(PrintFinalStats)j Fs(used)455 b(here)g(is)f(actually)h
+(suitable)g(for)g(general)g(use)g(in)g(appli-)4000 64868
+y(cations)392 b(of)h Fp(cv)-27 b(ode)393 b Fs(to)f(an)-34
+b(y)393 b(problem)f(with)h(a)f(dense)g(Jacobian.)535
+b(It)392 b(calls)f(v)-67 b(arious)391 b Fq(CVodeGet***)396
+b Fs(and)4000 66374 y Fq(CVDenseGet***)482 b Fs(functions)e(to)e
+(obtain)h(the)f(relev)-67 b(an)-34 b(t)477 b(coun)-34
+b(ters,)497 b(and)478 b(then)h(prin)-34 b(ts)479 b(them.)760
+b(Sp)34 b(eci\257-)4000 67879 y(cally)-101 b(,)447 b(these)439
+b(are:)609 b(the)439 b(cum)-34 b(ulativ)g(e)440 b(n)-34
+b(um)g(b)34 b(er)440 b(of)g(steps)g(\()p Fq(nst)p Fs(\),)450
+b(the)439 b(n)-34 b(um)g(b)34 b(er)441 b(of)e Fq(f)h
+Fs(ev)-67 b(aluations)439 b(\()p Fq(nfe)p Fs(\))4000
+69385 y(\(excluding)343 b(those)h(for)f(di\256erence-quotien)-34
+b(t)343 b(Jacobian)g(ev)-67 b(aluations\),)355 b(the)344
+b(n)-34 b(um)g(b)34 b(er)344 b(of)f(matrix)g(factor-)4000
+70890 y(izations)415 b(\()p Fq(nsetups)p Fs(\),)421 b(the)416
+b(n)-34 b(um)g(b)34 b(er)416 b(of)g Fq(f)g Fs(ev)-67
+b(aluations)415 b(for)g(Jacobian)h(ev)-67 b(aluations)415
+b(\()p Fq(nfeD)i Fs(=)e(0)g(here\),)4000 72396 y(the)486
+b(n)-34 b(um)g(b)34 b(er)487 b(of)f(Jacobian)g(ev)-67
+b(aluations)486 b(\()p Fq(njeD)p Fs(\),)i(the)e(n)-34
+b(um)g(b)34 b(er)487 b(of)f(nonlinear)g(\(Newton\))i(iterations)4000
+73901 y(\()p Fq(nni)p Fs(\),)440 b(the)432 b(n)-34 b(um)g(b)34
+b(er)433 b(of)f(nonlinear)g(con)-34 b(v)g(ergence)432
+b(failures)f(\()p Fq(ncfn)p Fs(\),)441 b(the)432 b(n)-34
+b(um)g(b)34 b(er)433 b(of)f(lo)34 b(cal)431 b(error)f(test)4000
+75407 y(failures)554 b(\()p Fq(netf)p Fs(\),)593 b(and)555
+b(the)g(n)-34 b(um)g(b)34 b(er)555 b(of)g Fq(g)f Fs(\(ro)34
+b(ot)554 b(function\))i(ev)-67 b(aluations)554 b(\()p
+Fq(nge)p Fs(\).)991 b(These)554 b(optional)4000 76912
+y(outputs)406 b(are)e(describ)34 b(ed)403 b(in)i Fo(x)p
+Fs(5.5.6.)5882 78420 y(The)498 b(function)h Fq(f)f Fs(is)g(a)f(straigh)
+-34 b(tforw)g(ard)500 b(expression)e(of)g(the)g(ODEs.)819
+b(It)498 b(uses)g(the)g(user-de\257ned)p Black 27697
+81741 a(5)p Black eop
+%%Page: 6 10
+6 9 bop Black Black 0 7638 a Fs(macro)405 b Fq(Ith)i
+Fs(to)f(extract)f(the)h(comp)34 b(onen)-34 b(ts)407 b(of)f
+Fq(y)g Fs(and)g(to)g(load)g(the)g(comp)34 b(onen)-34
+b(ts)407 b(of)f Fq(ydot)p Fs(.)544 b(See)406 b Fo(x)p
+Fs(5.6.1)0 9143 y(for)e(a)g(detailed)g(sp)34 b(eci\257cation)405
+b(of)f Fq(f)p Fs(.)1882 10649 y(Similarly)-101 b(,)547
+b(the)520 b(function)i Fq(g)e Fs(de\257nes)g(the)g(t)-34
+b(w)g(o)522 b(functions,)550 b Fl(g)30629 10831 y Fk(0)31674
+10649 y Fs(and)521 b Fl(g)34725 10831 y Fk(1)35251 10649
+y Fs(,)548 b(whose)521 b(ro)34 b(ots)520 b(are)f(to)h(b)34
+b(e)0 12154 y(found.)540 b(See)404 b Fo(x)p Fs(5.7.2)f(for)i(a)f
+(detailed)g(description)g(of)h(the)f Fq(g)h Fs(function.)1882
+13660 y(The)470 b(function)h Fq(Jac)g Fs(sets)f(the)g(nonzero)g(elemen)
+-34 b(ts)470 b(of)g(the)g(Jacobian)g(as)g(a)g(dense)g(matrix.)735
+b(\(Zero)0 15165 y(elemen)-34 b(ts)332 b(need)h(not)g(b)34
+b(e)331 b(set)i(b)34 b(ecause)332 b Fq(J)g Fs(is)g(preset)g(to)h
+(zero.\))514 b(It)332 b(uses)g(the)h(user-de\257ned)g(macro)f
+Fq(IJth)i Fs(to)0 16671 y(reference)393 b(the)i(elemen)-34
+b(ts)395 b(of)g(a)f(dense)h(matrix)f(of)h(t)-34 b(yp)34
+b(e)395 b Fq(DenseMat)p Fs(.)538 b(Here)393 b(the)i(problem)g(size)e
+(is)i(small,)0 18176 y(so)491 b(w)-34 b(e)492 b(need)g(not)g(w)-34
+b(orry)491 b(ab)34 b(out)493 b(the)e(ine\261ciency)g(of)g(using)h
+Fq(NV)p 30254 18176 382 45 v 459 w(Ith)p 32621 18176
+V 459 w(S)g Fs(and)g Fq(DENSE)p 39832 18176 V 460 w(ELEM)h
+Fs(to)f(access)0 19682 y Fq(N)p 712 19682 V 459 w(Vector)426
+b Fs(and)g Fq(DenseMat)h Fs(elemen)-34 b(ts.)600 b(Note)425
+b(that)h(in)e(this)h(example,)k Fq(Jac)d Fs(only)e(accesses)g(the)h
+Fq(y)g Fs(and)0 21187 y Fq(J)404 b Fs(argumen)-34 b(ts.)540
+b(See)404 b Fo(x)p Fs(5.6.3)f(for)i(a)f(detailed)g(description)g(of)h
+(the)f(dense)h Fq(Jac)g Fs(function.)1882 22693 y(The)490
+b(output)h(generated)e(b)-34 b(y)490 b Fq(cvdx)h Fs(is)e(sho)-34
+b(wn)491 b(b)34 b(elo)-34 b(w.)794 b(It)489 b(sho)-34
+b(ws)491 b(the)f(output)h(v)-67 b(alues)488 b(at)i(the)g(12)0
+24198 y(preset)415 b(v)-67 b(alues)414 b(of)h Fq(tout)p
+Fs(.)571 b(It)415 b(also)f(sho)-34 b(ws)416 b(the)f(t)-34
+b(w)g(o)416 b(ro)34 b(ot)415 b(lo)34 b(cations)414 b(found,)419
+b(\257rst)c(at)g(a)g(ro)34 b(ot)414 b(of)h Fl(g)44767
+24380 y Fk(1)45293 24198 y Fs(,)i(and)0 25704 y(then)405
+b(at)f(a)h(ro)34 b(ot)403 b(of)i Fl(g)9807 25886 y Fk(0)10333
+25704 y Fs(.)p 0 28084 18189 45 v 18770 28150 a Fi(cvdx)581
+b(sample)h(output)p 29811 28084 V 0 28884 45 801 v 47956
+28884 V 0 30213 45 1329 v 47956 30213 V 0 31541 V 844
+31142 a(3-species)h(kinetics)f(problem)p 47956 31541
+V 0 32869 V 47956 32869 V 0 34198 V 844 33799 a(At)g(t)f(=)g
+(2.6391e-01)3489 b(y)581 b(=)1162 b(9.899653e-01)2327
+b(3.470564e-05)f(1.000000e-02)p 47956 34198 V 0 35526
+V 3169 35127 a(rootsfound[])583 b(=)1743 b(0)h(1)p 47956
+35526 V 0 36854 V 844 36456 a(At)582 b(t)f(=)g(4.0000e-01)3489
+b(y)581 b(=)1162 b(9.851641e-01)2327 b(3.386242e-05)f(1.480205e-02)p
+47956 36854 V 0 38183 V 844 37784 a(At)582 b(t)f(=)g(4.0000e+00)3489
+b(y)581 b(=)1162 b(9.055097e-01)2327 b(2.240338e-05)f(9.446793e-02)p
+47956 38183 V 0 39511 V 844 39113 a(At)582 b(t)f(=)g(4.0000e+01)3489
+b(y)581 b(=)1162 b(7.157952e-01)2327 b(9.183486e-06)f(2.841956e-01)p
+47956 39511 V 0 40839 V 844 40441 a(At)582 b(t)f(=)g(4.0000e+02)3489
+b(y)581 b(=)1162 b(4.505420e-01)2327 b(3.222963e-06)f(5.494548e-01)p
+47956 40839 V 0 42168 V 844 41769 a(At)582 b(t)f(=)g(4.0000e+03)3489
+b(y)581 b(=)1162 b(1.831878e-01)2327 b(8.941319e-07)f(8.168113e-01)p
+47956 42168 V 0 43496 V 844 43098 a(At)582 b(t)f(=)g(4.0000e+04)3489
+b(y)581 b(=)1162 b(3.897868e-02)2327 b(1.621567e-07)f(9.610212e-01)p
+47956 43496 V 0 44824 V 844 44426 a(At)582 b(t)f(=)g(4.0000e+05)3489
+b(y)581 b(=)1162 b(4.940023e-03)2327 b(1.985716e-08)f(9.950600e-01)p
+47956 44824 V 0 46153 V 844 45754 a(At)582 b(t)f(=)g(4.0000e+06)3489
+b(y)581 b(=)1162 b(5.165107e-04)2327 b(2.067097e-09)f(9.994835e-01)p
+47956 46153 V 0 47481 V 844 47083 a(At)582 b(t)f(=)g(2.0807e+07)3489
+b(y)581 b(=)1162 b(1.000000e-04)2327 b(4.000395e-10)f(9.999000e-01)p
+47956 47481 V 0 48810 V 3169 48411 a(rootsfound[])583
+b(=)1743 b(1)h(0)p 47956 48810 V 0 50138 V 844 49739
+a(At)582 b(t)f(=)g(4.0000e+07)3489 b(y)581 b(=)1162 b(5.201457e-05)2327
+b(2.080690e-10)f(9.999480e-01)p 47956 50138 V 0 51466
+V 844 51068 a(At)582 b(t)f(=)g(4.0000e+08)3489 b(y)581
+b(=)1162 b(5.207182e-06)2327 b(2.082883e-11)f(9.999948e-01)p
+47956 51466 V 0 52795 V 844 52396 a(At)582 b(t)f(=)g(4.0000e+09)3489
+b(y)581 b(=)1162 b(5.105811e-07)2327 b(2.042325e-12)f(9.999995e-01)p
+47956 52795 V 0 54123 V 844 53724 a(At)582 b(t)f(=)g(4.0000e+10)3489
+b(y)581 b(=)1162 b(4.511312e-08)2327 b(1.804525e-13)f(1.000000e-00)p
+47956 54123 V 0 55451 V 47956 55451 V 0 56780 V 844 56381
+a(Final)582 b(Statistics:)p 47956 56780 V 0 58108 V 844
+57709 a(nst)g(=)f(515)2325 b(nfe)1163 b(=)581 b(754)2325
+b(nsetups)583 b(=)e(110)2325 b(nfeD)582 b(=)f(0)3487
+b(njeD)582 b(=)f(12)p 47956 58108 V 0 59436 V 844 59038
+a(nni)h(=)f(751)2325 b(ncfn)582 b(=)f(0)3487 b(netf)582
+b(=)f(26)2906 b(nge)582 b(=)f(543)p 47956 59436 V 0 60765
+V 47956 60765 V 0 61565 45 801 v 47956 61565 V 0 61609
+48001 45 v 0 64850 a Fn(2.2)1495 b(A)499 b(banded)g(example:)665
+b Fm(cvbx)0 67139 y Fs(The)292 b(example)f(program)h
+Fq(cvbx.c)i Fs(solv)-34 b(es)292 b(the)g(semi-discretized)f(form)h(of)g
+(the)g(2-D)g(adv)-34 b(ection-di\256usion)0 68644 y(equation)13639
+69350 y Fl(@)67 b(v)43 b(=@)67 b(t)337 b Fs(=)f Fl(@)19063
+68849 y Fk(2)19589 69350 y Fl(v)43 b(=@)67 b(x)22230
+68849 y Fk(2)23025 69350 y Fs(+)269 b Fl(:)p Fs(5)p Fl(@)67
+b(v)43 b(=@)67 b(x)268 b Fs(+)h Fl(@)30723 68849 y Fk(2)31249
+69350 y Fl(v)43 b(=@)67 b(y)33834 68849 y Fk(2)46451
+69350 y Fs(\(2\))0 71561 y(on)592 b(a)g(rectangle,)638
+b(with)593 b(zero)e(Diric)-34 b(hlet)592 b(b)34 b(oundary)592
+b(conditions.)1103 b(The)593 b(PDE)e(is)h(discretized)f(with)0
+73066 y(standard)457 b(cen)-34 b(tral)455 b(\257nite)h(di\256erences)f
+(on)h(a)f(\()p Fq(MX)p Fs(+2\))i Fo(\243)e Fs(\()p Fq(MY)p
+Fs(+2\))h(mesh,)468 b(giving)455 b(an)h(ODE)f(system)h(of)0
+74572 y(size)403 b Fq(MX*MY)p Fs(.)j(The)e(discrete)g(v)-67
+b(alue)403 b Fl(v)16884 74754 y Fh(ij)18095 74572 y Fs(appro)-34
+b(ximates)405 b Fl(v)447 b Fs(at)405 b Fl(x)336 b Fs(=)g
+Fl(i)p Fs(\242)p Fl(x)p Fs(,)404 b Fl(y)380 b Fs(=)337
+b Fl(j)69 b Fs(\242)p Fl(y)43 b Fs(.)539 b(The)405 b(ODEs)f(are)3770
+77068 y Fl(dv)4989 77250 y Fh(ij)p 3770 77616 2026 49
+v 4249 78726 a Fl(dt)6265 77895 y Fs(=)337 b Fl(f)8138
+78077 y Fh(ij)9282 77895 y Fs(=)10694 77068 y Fl(v)11282
+77250 y Fh(i)p Fj(\241)p Fk(1)p Fh(;j)13822 77068 y Fo(\241)269
+b Fs(2)p Fl(v)16228 77250 y Fh(ij)17305 77068 y Fs(+)g
+Fl(v)19105 77250 y Fh(i)p Fk(+1)p Fh(;j)p 10694 77616
+10681 49 v 14449 78726 a Fs(\(\242)p Fl(x)p Fs(\))17094
+78376 y Fk(2)21777 77895 y Fs(+)g Fl(:)p Fs(5)24065 77068
+y Fl(v)24653 77250 y Fh(i)p Fk(+1)p Fh(;j)27193 77068
+y Fo(\241)g Fl(v)28993 77250 y Fh(i)p Fj(\241)p Fk(1)p
+Fh(;j)p 24065 77616 7199 49 v 26510 78726 a Fs(2\242)p
+Fl(x)31666 77895 y Fs(+)33011 77068 y Fl(v)33599 77250
+y Fh(i;j)51 b Fj(\241)p Fk(1)36138 77068 y Fo(\241)269
+b Fs(2)p Fl(v)38544 77250 y Fh(ij)39621 77068 y Fs(+)g
+Fl(v)41421 77250 y Fh(i;j)51 b Fk(+1)p 33011 77616 10681
+49 v 36793 78726 a Fs(\(\242)p Fl(y)43 b Fs(\))39382
+78376 y Fk(2)44026 77895 y Fl(;)2088 b Fs(\(3\))p Black
+23697 81741 a(6)p Black eop
+%%Page: 7 11
+7 10 bop Black Black 4000 7638 a Fs(where)441 b(1)398
+b Fo(\267)g Fl(i)f Fo(\267)p Fq(MX)442 b Fs(and)f(1)398
+b Fo(\267)g Fl(j)468 b Fo(\267)p Fq(MY)p Fs(.)441 b(The)g(b)34
+b(oundary)442 b(conditions)g(are)e(imp)34 b(osed)441
+b(b)-34 b(y)441 b(taking)g Fl(v)48848 7820 y Fh(ij)50053
+7638 y Fs(=)398 b(0)4000 9143 y(ab)34 b(o)-34 b(v)g(e)363
+b(if)g Fl(i)336 b Fs(=)h(0)362 b(or)h Fq(MX)p Fs(+1,)371
+b(or)363 b(if)g Fl(j)406 b Fs(=)336 b(0)363 b(or)g Fq(MY)p
+Fs(+1.)525 b(If)363 b(w)-34 b(e)363 b(set)g Fl(u)32691
+9390 y Fk(\()p Fh(j)51 b Fj(\241)p Fk(1\)+\()p Fh(i)p
+Fj(\241)p Fk(1\))p Fj(\244)p Fg(MY)39846 9143 y Fs(=)337
+b Fl(v)41714 9325 y Fh(ij)42521 9143 y Fs(,)370 b(so)363
+b(that)h(the)f(ODE)4000 10649 y(system)388 b(is)599 b(_)-549
+b Fl(u)337 b Fs(=)f Fl(f)130 b Fs(\()p Fl(u)p Fs(\),)392
+b(then)d(the)f(system)f(Jacobian)h Fl(J)453 b Fs(=)337
+b Fl(@)67 b(f)130 b(=@)67 b(u)388 b Fs(is)f(a)h(band)h(matrix)e(with)h
+(upp)34 b(er)388 b(and)4000 12154 y(lo)-34 b(w)g(er)391
+b(half-bandwidths)j(b)34 b(oth)391 b(equal)f(to)h Fq(MY)p
+Fs(.)g(In)f(the)h(example,)i(w)-34 b(e)391 b(tak)-34
+b(e)390 b Fq(MX)h Fs(=)337 b(10)391 b(and)g Fq(MY)g Fs(=)337
+b(5.)533 b(The)4000 13660 y(source)404 b(is)g(listed)g(in)g(App)34
+b(endix)404 b(B.)5882 15170 y(The)303 b Fq(cvbx.c)i Fs(program)e
+(includes)f(\257les)h Fq(cvband.h)i Fs(and)f Fq(band.h)h
+Fs(in)d(order)h(to)g(use)g(the)g Fp(cvband)h Fs(lin-)4000
+16675 y(ear)296 b(solv)-34 b(er.)503 b(The)297 b Fq(cvband.h)j
+Fs(\257le)d(con)-34 b(tains)298 b(the)f(protot)-34 b(yp)34
+b(e)298 b(for)f(the)g Fq(CVBand)j Fs(routine.)503 b(The)297
+b Fq(band.h)i Fs(\257le)4000 18181 y(con)-34 b(tains)349
+b(the)f(de\257nition)h(for)e(band)i(matrix)f(t)-34 b(yp)34
+b(e)347 b Fq(BandMat)j Fs(and)f(the)f Fq(BAND)p 39143
+18181 382 45 v 460 w(COL)g Fs(and)h Fq(BAND)p 46704 18181
+V 459 w(COL)p 49071 18181 V 460 w(ELEM)4000 19686 y Fs(macros)453
+b(for)h(accessing)f(matrix)g(elemen)-34 b(ts)454 b(\(see)f
+Fo(x)p Fs(8.2\).)686 b(W)-101 b(e)453 b(ha)-34 b(v)g(e)454
+b(explicitly)e(included)i Fq(band.h)p Fs(,)468 b(but)4000
+21191 y(this)525 b(is)g(not)h(necessary)e(b)34 b(ecause)524
+b(it)h(is)g(included)g(b)-34 b(y)525 b Fq(cvband.h)p
+Fs(.)904 b(The)525 b(\257le)g Fq(nvector)p 45185 21191
+V 461 w(serial.h)i Fs(is)4000 22697 y(included)404 b(for)h(the)f
+(de\257nition)h(of)g(the)f(serial)g Fq(N)p 25534 22697
+V 458 w(Vector)i Fs(t)-34 b(yp)34 b(e.)5882 24207 y(The)419
+b(include)h(lines)e(at)i(the)g(top)f(of)h(the)g(\257le)e(are)h(follo)
+-34 b(w)g(ed)420 b(b)-34 b(y)420 b(de\257nitions)g(of)g(problem)f
+(constan)-34 b(ts)4000 25712 y(whic)g(h)432 b(include)e(the)i
+Fl(x)e Fs(and)i Fl(y)474 b Fs(mesh)431 b(dimensions,)438
+b Fq(MX)432 b Fs(and)f Fq(MY)p Fs(,)g(the)h(n)-34 b(um)g(b)34
+b(er)432 b(of)f(equations)g Fq(NEQ)p Fs(,)h(the)4000
+27218 y(scalar)403 b(absolute)i(tolerance)f Fq(ATOL)p
+Fs(,)h(the)g(initial)e(time)h Fq(T0)p Fs(,)h(and)g(the)f(initial)g
+(output)i(time)e Fq(T1)p Fs(.)5882 28727 y(Spatial)326
+b(discretization)f(of)g(the)h(PDE)f(naturally)h(pro)34
+b(duces)325 b(an)h(ODE)e(system)i(in)f(whic)-34 b(h)326
+b(equations)4000 30233 y(are)439 b(n)-34 b(um)g(b)34
+b(ered)442 b(b)-34 b(y)440 b(mesh)g(co)34 b(ordinates)440
+b(\()p Fl(i;)202 b(j)69 b Fs(\).)647 b(The)440 b(user-de\257ned)h
+(macro)f Fq(IJth)h Fs(isolates)f(the)g(trans-)4000 31738
+y(lation)418 b(for)h(the)f(mathematical)h(t)-34 b(w)g(o-dimensional)420
+b(index)e(to)h(the)f(one-dimensional)h Fq(N)p 44519 31738
+V 459 w(Vector)h Fs(index)4000 33244 y(and)479 b(allo)-34
+b(ws)478 b(the)h(user)f(to)g(write)g(clean,)496 b(readable)478
+b(co)34 b(de)477 b(to)i(access)e(comp)34 b(onen)-34 b(ts)480
+b(of)e(the)g(dep)34 b(enden)-34 b(t)4000 34749 y(v)-67
+b(ariable.)522 b(The)357 b Fq(NV)p 12797 34749 V 459
+w(DATA)p 15800 34749 V 460 w(S)g Fs(macro)g(returns)g(the)h(comp)34
+b(onen)-34 b(t)358 b(arra)-34 b(y)357 b(for)g(a)h(giv)-34
+b(en)357 b Fq(N)p 42827 34749 V 458 w(Vector)p Fs(,)368
+b(and)358 b(this)4000 36255 y(arra)-34 b(y)404 b(is)g(passed)g(to)h
+Fq(IJth)g Fs(in)g(order)e(to)i(do)f(the)h(actual)f Fq(N)p
+30860 36255 V 459 w(Vector)i Fs(access.)5882 37764 y(The)473
+b(t)-34 b(yp)34 b(e)473 b Fq(UserData)j Fs(is)c(a)h(p)34
+b(oin)-34 b(ter)473 b(to)g(a)g(structure)h(con)-34 b(taining)474
+b(problem)e(data)i(used)g(in)e(the)i Fq(f)4000 39270
+y Fs(and)353 b Fq(Jac)f Fs(functions.)523 b(This)352
+b(structure)g(is)g(allo)34 b(cated)351 b(and)i(initialized)d(at)j(the)f
+(b)34 b(eginning)352 b(of)g Fq(main)p Fs(.)522 b(The)4000
+40775 y(p)34 b(oin)-34 b(ter)463 b(to)g(it,)477 b(called)462
+b Fq(data)p Fs(,)479 b(is)462 b(passed)i(to)f(b)34 b(oth)464
+b Fq(CVodeSetFData)j Fs(and)c Fq(CVBandSetJacData)p Fs(,)483
+b(and)4000 42281 y(as)422 b(a)f(result)g(it)h(will)f(b)34
+b(e)421 b(passed)h(bac)-34 b(k)422 b(to)f(the)h Fq(f)g
+Fs(and)g Fq(Jac)h Fs(functions)g(eac)-34 b(h)421 b(time)g(they)h(are)f
+(called.)590 b(\(If)4000 43786 y(appropriate,)414 b(t)-34
+b(w)g(o)413 b(di\256eren)-34 b(t)412 b(data)h(structures)f(could)g(b)34
+b(e)412 b(de\257ned)h(and)f(passed)h(to)f Fq(f)g Fs(and)h
+Fq(Jac)p Fs(.\))562 b(The)4000 45292 y(use)404 b(of)h(the)f
+Fq(data)i Fs(p)34 b(oin)-34 b(ter)404 b(eliminates)g(the)g(need)h(for)f
+(global)g(program)g(data.)5882 46801 y(The)273 b Fq(main)i
+Fs(program)e(is)g(straigh)-34 b(tforw)g(ard.)497 b(The)274
+b Fq(CVodeCreate)j Fs(call)272 b(sp)34 b(eci\257es)273
+b(the)g Fq(CV)p 45428 46801 V 459 w(BDF)h Fs(metho)34
+b(d)4000 48307 y(with)521 b(a)g Fq(CV)p 9352 48307 V
+459 w(NEWTON)h Fs(iteration.)889 b(In)520 b(the)h Fq(CVodeMalloc)k
+Fs(call,)548 b(the)521 b(parameter)g Fq(SS)g Fs(indicates)g(scalar)4000
+49812 y(relativ)-34 b(e)537 b(and)h(absolute)h(tolerances,)570
+b(and)539 b(p)34 b(oin)-34 b(ters)538 b Fq(&reltol)i
+Fs(and)e Fq(&abstol)i Fs(to)e(these)g(v)-67 b(alues)537
+b(are)4000 51318 y(passed.)841 b(The)505 b(call)f(to)h
+Fq(CVBand)h Fs(\(see)f Fo(x)p Fs(5.5.2\))f(sp)34 b(eci\257es)504
+b(the)h Fp(cvband)h Fs(linear)e(solv)-34 b(er,)529 b(and)505
+b(sp)34 b(eci\257es)4000 52823 y(that)500 b(b)34 b(oth)499
+b(half-bandwidths)i(of)e(the)g(Jacobian)g(are)e(equal)h(to)h
+Fq(MY)p Fs(.)g(The)g(call)e(to)i Fq(CVBandSetJacFn)4000
+54329 y Fs(\(see)480 b Fo(x)p Fs(5.5.4\))g(sp)34 b(eci\257es)480
+b(that)h(a)f(user-supplied)h(Jacobian)g(function)g Fq(Jac)g
+Fs(is)f(to)h(b)34 b(e)480 b(used)h(and)g(that)g(a)4000
+55834 y(p)34 b(oin)-34 b(ter)449 b(to)g Fq(data)h Fs(shold)f(b)34
+b(e)448 b(passed)i(to)f Fq(Jac)g Fs(ev)-34 b(ery)448
+b(time)g(it)h(is)f(called.)671 b(The)449 b(actual)g(solution)h(of)e
+(the)4000 57340 y(problem)357 b(is)g(p)34 b(erformed)358
+b(b)-34 b(y)357 b(the)h(call)f(to)g Fq(CVode)i Fs(within)g(the)e(lo)34
+b(op)358 b(o)-34 b(v)g(er)357 b(the)h(output)h(times)e
+Fq(tout)p Fs(.)524 b(The)4000 58845 y(max-norm)359 b(of)h(the)f
+(solution)h(v)-34 b(ector)359 b(\(from)h(a)f(call)f(to)i
+Fq(N)p 29880 58845 V 458 w(VMaxNorm)p Fs(\))i(and)e(the)g(cum)-34
+b(ulativ)g(e)359 b(n)-34 b(um)g(b)34 b(er)361 b(of)4000
+60351 y(time)d(steps)g(\(from)h(a)f(call)f(to)h Fq(CVodeGetNumSteps)p
+Fs(\))364 b(are)358 b(prin)-34 b(ted)359 b(at)f(eac)-34
+b(h)358 b(output)i(time.)523 b(Finally)-101 b(,)366 b(the)4000
+61856 y(calls)503 b(to)i Fq(PrintFinalStats)p Fs(,)534
+b Fq(N)p 19505 61856 V 459 w(VDestroy)p Fs(,)d(and)505
+b Fq(CVodeFree)i Fs(prin)-34 b(t)506 b(statistics)e(and)h(free)f
+(problem)4000 63361 y(memory)-101 b(.)5882 64871 y(F)g(ollo)-34
+b(wing)424 b(the)g Fq(main)i Fs(program)d(in)h(the)h
+Fq(cvbx.c)g Fs(\257le)f(are)f(de\257nitions)i(of)f(\257v)-34
+b(e)424 b(functions:)580 b Fq(f)p Fs(,)428 b Fq(Jac)p
+Fs(,)4000 66377 y Fq(SetIC)p Fs(,)457 b Fq(PrintFinalStats)p
+Fs(,)473 b(and)456 b Fq(check)p 23988 66377 V 460 w(flag)p
+Fs(.)694 b(The)456 b(last)g(three)f(functions)i(are)e(called)f(only)i
+(from)4000 67882 y(within)600 b(the)g Fq(cvbx.c)h Fs(\257le.)1123
+b(The)600 b Fq(SetIC)h Fs(function)f(sets)g(the)f(initial)g(dep)34
+b(enden)-34 b(t)601 b(v)-67 b(ariable)598 b(v)-34 b(ector;)4000
+69388 y Fq(PrintFinalStats)430 b Fs(gets)425 b(and)h(prin)-34
+b(ts)426 b(statistics)g(at)f(the)h(end)f(of)h(the)f(run;)436
+b(and)425 b Fq(check)p 45116 69388 V 460 w(flag)i Fs(aids)e(in)4000
+70893 y(c)-34 b(hec)g(king)401 b(return)f(v)-67 b(alues.)537
+b(The)401 b(statistics)g(prin)-34 b(ted)402 b(include)e(coun)-34
+b(ters)402 b(suc)-34 b(h)401 b(as)g(the)g(total)g(n)-34
+b(um)g(b)34 b(er)402 b(of)4000 72399 y(steps)425 b(\()p
+Fq(nst)p Fs(\),)431 b Fq(f)425 b Fs(ev)-67 b(aluations)425
+b(\(excluding)g(those)g(for)g(Jaobian)g(ev)-67 b(aluations\))425
+b(\()p Fq(nfe)p Fs(\),)431 b(LU)424 b(decomp)34 b(osi-)4000
+73904 y(tions)410 b(\()p Fq(nsetups)p Fs(\),)k Fq(f)c
+Fs(ev)-67 b(aluations)410 b(for)g(di\256erence-quotien)-34
+b(t)410 b(Jacobians)g(\()p Fq(nfeB)h Fs(=)e(0)h(here\),)h(Jacobian)4000
+75409 y(ev)-67 b(aluations)365 b(\()p Fq(njeB)p Fs(\),)h(and)g
+(nonlinear)e(iterations)h(\()p Fq(nni)p Fs(\).)527 b(These)365
+b(optional)h(outputs)h(are)d(describ)34 b(ed)364 b(in)4000
+76915 y Fo(x)p Fs(5.5.6.)552 b(Note)409 b(that)h Fq(PrintFinalStats)k
+Fs(is)409 b(suitable)g(for)g(general)f(use)h(in)g(applications)g(of)g
+Fp(cv)-27 b(ode)411 b Fs(to)4000 78420 y(an)-34 b(y)405
+b(problem)f(with)h(a)f(banded)h(Jacobian.)p Black 27697
+81741 a(7)p Black eop
+%%Page: 8 12
+8 11 bop Black Black 1882 7638 a Fs(The)452 b Fq(f)h
+Fs(function)g(implemen)-34 b(ts)453 b(the)g(cen)-34 b(tral)452
+b(di\256erence)f(appro)-34 b(ximation)454 b(\(3\))e(with)h
+Fl(u)f Fs(iden)-34 b(tically)0 9143 y(zero)424 b(on)g(the)h(b)34
+b(oundary)-101 b(.)601 b(The)424 b(constan)-34 b(t)427
+b(co)34 b(e\261cien)-34 b(ts)424 b(\(\242)p Fl(x)p Fs(\))28505
+8704 y Fj(\241)p Fk(2)29763 9143 y Fs(,)429 b Fl(:)p
+Fs(5\(2\242)p Fl(x)p Fs(\))34723 8704 y Fj(\241)p Fk(1)35981
+9143 y Fs(,)g(and)d(\(\242)p Fl(y)43 b Fs(\))41714 8704
+y Fj(\241)p Fk(2)43397 9143 y Fs(are)424 b(com-)0 10649
+y(puted)616 b(only)e(once)g(at)g(the)h(b)34 b(eginning)615
+b(of)f Fq(main)p Fs(,)668 b(and)615 b(stored)g(in)f(the)h(lo)34
+b(cations)614 b Fq(data->hdcoef)p Fs(,)0 12154 y Fq(data->hacoef)p
+Fs(,)585 b(and)547 b Fq(data->vdcoef)p Fs(,)586 b(resp)34
+b(ectiv)-34 b(ely)-101 b(.)963 b(When)546 b Fq(f)g Fs(receiv)-34
+b(es)545 b(the)h Fq(data)i Fs(p)34 b(oin)-34 b(ter)546
+b(\(re-)0 13660 y(named)522 b Fq(f)p 4735 13660 382 45
+v 458 w(data)h Fs(here\),)550 b(it)522 b(pulls)f(out)h(these)g(v)-67
+b(alues)520 b(from)i(storage)f(in)h(the)f(lo)34 b(cal)520
+b(v)-67 b(ariables)521 b Fq(hordc)p Fs(,)0 15165 y Fq(horac)p
+Fs(,)377 b(and)369 b Fq(verdc)p Fs(.)528 b(It)368 b(then)h(uses)g
+(these)f(to)h(construct)g(the)f(di\256usion)h(and)g(adv)-34
+b(ection)369 b(terms,)375 b(whic)-34 b(h)0 16671 y(are)404
+b(com)-34 b(bined)404 b(to)h(form)f Fq(udot)p Fs(.)540
+b(Note)404 b(the)h(extra)f(lines)f(setting)i(out-of-b)34
+b(ounds)407 b(v)-67 b(alues)403 b(of)i Fl(u)f Fs(to)g(zero.)1882
+18176 y(The)g Fq(Jac)i Fs(function)f(is)f(an)g(expression)g(of)h(the)f
+(deriv)-67 b(ativ)-34 b(es)8000 20008 y Fl(@)67 b(f)9304
+20190 y Fh(ij)10111 20008 y Fl(=@)g(v)12016 20190 y Fh(ij)13930
+20008 y Fs(=)1107 b Fo(\241)p Fs(2[\(\242)p Fl(x)p Fs(\))20511
+19508 y Fj(\241)p Fk(2)22038 20008 y Fs(+)269 b(\(\242)p
+Fl(y)43 b Fs(\))25839 19508 y Fj(\241)p Fk(2)27098 20008
+y Fs(])6536 21846 y Fl(@)67 b(f)7840 22028 y Fh(ij)8648
+21846 y Fl(=@)g(v)10553 22028 y Fh(i)p Fj(\247)p Fk(1)p
+Fh(;j)13930 21846 y Fs(=)1107 b(\(\242)p Fl(x)p Fs(\))18625
+21346 y Fj(\241)p Fk(2)20153 21846 y Fo(\247)269 b Fl(:)p
+Fs(5\(2\242)p Fl(x)p Fs(\))25559 21346 y Fj(\241)p Fk(1)26817
+21846 y Fl(;)1818 b(@)67 b(f)30276 22028 y Fh(ij)31083
+21846 y Fl(=@)g(v)32988 22028 y Fh(i;j)51 b Fj(\247)p
+Fk(1)35595 21846 y Fs(=)337 b(\(\242)p Fl(y)43 b Fs(\))39464
+21346 y Fj(\241)p Fk(2)41127 21846 y Fl(:)0 24318 y Fs(This)287
+b(function)g(loads)g(the)g(Jacobian)f(b)-34 b(y)287 b(columns,)310
+b(and)287 b(lik)-34 b(e)285 b Fq(f)i Fs(it)f(mak)-34
+b(es)286 b(use)h(of)f(the)h(preset)f(co)34 b(e\261cien)-34
+b(ts)0 25824 y(in)332 b Fq(data)p Fs(.)516 b(It)333 b(lo)34
+b(ops)332 b(o)-34 b(v)g(er)332 b(the)h(mesh)g(p)34 b(oin)-34
+b(ts)333 b(\()p Fq(i)p Fs(,)p Fq(j)p Fs(\).)516 b(F)-101
+b(or)332 b(eac)-34 b(h)332 b(suc)-34 b(h)334 b(mesh)e(p)34
+b(oin)-34 b(t,)348 b(the)332 b(one-dimensional)0 27329
+y(index)459 b Fq(k)636 b(=)h(j-1)g(+)g(\(i-1\)*MY)462
+b Fs(is)c(computed)i(and)f(the)h Fq(k)p Fs(th)f(column)g(of)g(the)h
+(Jacobian)e(matrix)h Fl(J)575 b Fs(is)0 28835 y(set.)738
+b(The)471 b(ro)-34 b(w)471 b(index)g Fl(k)11516 28395
+y Fj(0)12297 28835 y Fs(of)g(eac)-34 b(h)471 b(comp)34
+b(onen)-34 b(t)471 b Fl(f)23392 29038 y Fh(i)23712 28786
+y Ff(0)24011 29038 y Fh(;j)24704 28786 y Ff(0)25528 28835
+y Fs(that)h(dep)34 b(ends)471 b(on)g Fl(v)35312 29017
+y Fh(i;j)36851 28835 y Fs(m)-34 b(ust)472 b(b)34 b(e)470
+b(iden)-34 b(ti\257ed)472 b(in)0 30340 y(order)388 b(to)g(load)g(the)h
+(corresp)34 b(onding)388 b(elemen)-34 b(t.)533 b(The)388
+b(elemen)-34 b(ts)389 b(are)e(loaded)h(with)h(the)g Fq(BAND)p
+42704 30340 V 459 w(COL)p 45071 30340 V 460 w(ELEM)0
+31846 y Fs(macro.)765 b(Note)479 b(that)i(the)f(form)-34
+b(ula)480 b(for)g(the)g(global)g(index)f Fl(k)518 b Fs(implies)479
+b(that)h(decreasing)g(\(increasing\))0 33351 y Fq(i)472
+b Fs(b)-34 b(y)473 b(1)f(corresp)34 b(onds)472 b(to)h(decreasing)f
+(\(increasing\))g Fq(k)h Fs(b)-34 b(y)472 b Fq(MY)p Fs(,)h(while)f
+(decreasing)g(\(increasing\))g Fq(j)h Fs(b)-34 b(y)0
+34857 y(1)583 b(corresp)34 b(onds)583 b(of)g(decreasing)g
+(\(increasing\))g Fq(k)h Fs(b)-34 b(y)583 b(1.)1075 b(These)584
+b(statemen)-34 b(ts)584 b(are)f(re\260ected)f(in)h(the)0
+36362 y(argumen)-34 b(ts)433 b(to)g Fq(BAND)p 10060 36362
+V 459 w(COL)p 12427 36362 V 460 w(ELEM)p Fs(.)g(The)f(\257rst)h
+(argumen)-34 b(t)433 b(passed)g(to)g(the)f Fq(BAND)p
+36751 36362 V 460 w(COL)p 39119 36362 V 459 w(ELEM)h
+Fs(macro)f(is)g(a)0 37867 y(p)34 b(oin)-34 b(ter)408
+b(to)f(the)h(diagonal)g(elemen)-34 b(t)407 b(in)g(the)h(column)g(to)f
+(b)34 b(e)407 b(accessed.)548 b(This)408 b(p)34 b(oin)-34
+b(ter)407 b(is)g(obtained)i(via)0 39373 y(a)473 b(call)f(to)h(the)h
+Fq(BAND)p 9697 39373 V 459 w(COL)g Fs(macro)f(and)g(is)g(stored)g(in)g
+Fq(kthCol)i Fs(in)e(the)h Fq(Jac)g Fs(function.)746 b(When)473
+b(setting)0 40878 y(the)383 b(comp)34 b(onen)-34 b(ts)383
+b(of)f Fl(J)499 b Fs(w)-34 b(e)383 b(m)-34 b(ust)383
+b(b)34 b(e)382 b(careful)g(not)g(to)h(index)f(out)h(of)f(b)34
+b(ounds.)533 b(The)382 b(guards)h Fq(\(i)637 b(!=)g(1\))0
+42384 y Fs(etc.)523 b(in)360 b(fron)-34 b(t)361 b(of)f(the)g(calls)f
+(to)h Fq(BAND)p 16793 42384 V 460 w(COL)p 19161 42384
+V 459 w(ELEM)h Fs(prev)-34 b(en)g(t)361 b(illegal)d(indexing.)524
+b(See)359 b Fo(x)p Fs(5.6.4)g(for)h(a)g(detailed)0 43889
+y(description)404 b(of)h(the)f(banded)i Fq(Jac)f Fs(function.)1882
+45395 y(The)f(output)i(generated)f(b)-34 b(y)404 b Fq(cvbx)i
+Fs(is)e(sho)-34 b(wn)405 b(b)34 b(elo)-34 b(w.)p 0 47552
+18189 45 v 18770 47618 a Fi(cvbx)581 b(sample)h(output)p
+29811 47552 V 0 48352 45 801 v 47956 48352 V 0 49681
+45 1329 v 47956 49681 V 0 51009 V 844 50610 a(2-D)g
+(Advection-Diffusion)i(Equation)p 47956 51009 V 0 52337
+V 844 51939 a(Mesh)e(dimensions)h(=)e(10)g(X)h(5)p 47956
+52337 V 0 53666 V 844 53267 a(Total)g(system)g(size)g(=)f(50)p
+47956 53666 V 0 54994 V 844 54596 a(Tolerance)i(parameters:)g(reltol)f
+(=)f(0)1744 b(abstol)582 b(=)f(1e-05)p 47956 54994 V
+0 56322 V 47956 56322 V 0 57651 V 844 57252 a(At)h(t)f(=)g(0)3487
+b(max.norm\(u\))583 b(=)1163 b(8.954716e+01)p 47956 57651
+V 0 58979 V 844 58581 a(At)582 b(t)f(=)g(0.10)1744 b(max.norm\(u\))583
+b(=)1163 b(4.132889e+00)1745 b(nst)581 b(=)1744 b(85)p
+47956 58979 V 0 60307 V 844 59909 a(At)582 b(t)f(=)g(0.20)1744
+b(max.norm\(u\))583 b(=)1163 b(1.039294e+00)1745 b(nst)581
+b(=)1163 b(103)p 47956 60307 V 0 61636 V 844 61237 a(At)582
+b(t)f(=)g(0.30)1744 b(max.norm\(u\))583 b(=)1163 b(2.979829e-01)1745
+b(nst)581 b(=)1163 b(113)p 47956 61636 V 0 62964 V 844
+62566 a(At)582 b(t)f(=)g(0.40)1744 b(max.norm\(u\))583
+b(=)1163 b(8.765774e-02)1745 b(nst)581 b(=)1163 b(120)p
+47956 62964 V 0 64293 V 844 63894 a(At)582 b(t)f(=)g(0.50)1744
+b(max.norm\(u\))583 b(=)1163 b(2.625637e-02)1745 b(nst)581
+b(=)1163 b(126)p 47956 64293 V 0 65621 V 844 65222 a(At)582
+b(t)f(=)g(0.60)1744 b(max.norm\(u\))583 b(=)1163 b(7.830425e-03)1745
+b(nst)581 b(=)1163 b(130)p 47956 65621 V 0 66949 V 844
+66551 a(At)582 b(t)f(=)g(0.70)1744 b(max.norm\(u\))583
+b(=)1163 b(2.329387e-03)1745 b(nst)581 b(=)1163 b(134)p
+47956 66949 V 0 68278 V 844 67879 a(At)582 b(t)f(=)g(0.80)1744
+b(max.norm\(u\))583 b(=)1163 b(6.953434e-04)1745 b(nst)581
+b(=)1163 b(137)p 47956 68278 V 0 69606 V 844 69207 a(At)582
+b(t)f(=)g(0.90)1744 b(max.norm\(u\))583 b(=)1163 b(2.115983e-04)1745
+b(nst)581 b(=)1163 b(140)p 47956 69606 V 0 70934 V 844
+70536 a(At)582 b(t)f(=)g(1.00)1744 b(max.norm\(u\))583
+b(=)1163 b(6.556853e-05)1745 b(nst)581 b(=)1163 b(142)p
+47956 70934 V 0 72263 V 47956 72263 V 0 73591 V 844 73192
+a(Final)582 b(Statistics:)p 47956 73591 V 0 74919 V 844
+74521 a(nst)g(=)f(142)2325 b(nfe)1163 b(=)581 b(173)2325
+b(nsetups)583 b(=)e(23)2906 b(nfeB)582 b(=)f(0)3487 b(njeB)582
+b(=)f(3)p 47956 74919 V 0 76248 V 844 75849 a(nni)h(=)f(170)2325
+b(ncfn)582 b(=)f(0)3487 b(netf)582 b(=)f(3)p 47956 76248
+V 0 77576 V 47956 77576 V 0 78376 45 801 v 47956 78376
+V 0 78420 48001 45 v Black 23697 81741 a Fs(8)p Black
+eop
+%%Page: 9 13
+9 12 bop Black Black 4000 7638 a Fn(2.3)1495 b(A)499
+b(Krylo)-42 b(v)498 b(example:)665 b Fm(cvkx)4000 9926
+y Fs(W)-101 b(e)355 b(giv)-34 b(e)356 b(here)f(an)h(example)f(that)i
+(illustrates)f(the)h(use)f(of)g Fp(cv)-27 b(ode)357 b
+Fs(with)g(the)f(Krylo)-34 b(v)355 b(metho)34 b(d)356
+b Fp(spgmr)p Fs(,)4000 11432 y(in)459 b(the)g Fp(cvspgmr)h
+Fs(mo)34 b(dule,)473 b(as)459 b(the)g(linear)g(system)g(solv)-34
+b(er.)702 b(The)460 b(source)e(\257le,)473 b Fq(cvkx.c)p
+Fs(,)h(is)459 b(listed)g(in)4000 12937 y(App)34 b(endix)405
+b(C.)5882 14443 y(This)475 b(program)f(solv)-34 b(es)474
+b(the)g(semi-discretized)f(form)i(of)f(a)h(pair)f(of)g(kinetics-adv)-34
+b(ection-di\256usion)4000 15948 y(partial)550 b(di\256eren)-34
+b(tial)551 b(equations,)587 b(whic)-34 b(h)552 b(represen)-34
+b(t)550 b(a)h(simpli\257ed)f(mo)34 b(del)551 b(for)f(the)h(transp)34
+b(ort,)588 b(pro-)4000 17454 y(duction,)466 b(and)453
+b(loss)g(of)g(ozone)g(and)g(the)h(o)-34 b(xygen)452 b(singlet)h(in)g
+(the)g(upp)34 b(er)453 b(atmosphere.)686 b(The)453 b(problem)4000
+18959 y(includes)353 b(nonlinear)h(diurnal)f(kinetics,)363
+b(horizon)-34 b(tal)354 b(adv)-34 b(ection)353 b(and)h(di\256usion,)364
+b(and)354 b(non)-34 b(uniform)355 b(v)-34 b(er-)4000
+20465 y(tical)404 b(di\256usion.)539 b(The)404 b(PDEs)g(can)h(b)34
+b(e)403 b(written)i(as)11127 22607 y Fl(@)67 b(c)12363
+22168 y Fh(i)p 11127 23149 1612 49 v 11359 24259 a Fl(@)g(t)13208
+23427 y Fs(=)337 b Fl(K)15517 23624 y Fh(h)16247 22607
+y Fl(@)16958 22168 y Fk(2)17484 22607 y Fl(c)18009 22168
+y Fh(i)p 16247 23149 2137 49 v 16351 24259 a Fl(@)67
+b(x)17755 23909 y Fk(2)18787 23427 y Fs(+)269 b Fl(V)21108
+22607 y(@)67 b(c)22344 22168 y Fh(i)p 21108 23149 1612
+49 v 21212 24259 a Fl(@)g(x)23121 23427 y Fs(+)24785
+22607 y Fl(@)p 24466 23149 1349 49 v 24466 24259 a(@)g(y)25948
+23427 y(K)26977 23609 y Fh(v)27522 23427 y Fs(\()p Fl(y)43
+b Fs(\))29234 22607 y Fl(@)67 b(c)30470 22168 y Fh(i)p
+29234 23149 1612 49 v 29365 24259 a Fl(@)g(y)31249 23427
+y Fs(+)269 b Fl(R)33390 22927 y Fh(i)33767 23427 y Fs(\()p
+Fl(c)34763 22927 y Fk(1)35288 23427 y Fl(;)202 b(c)36352
+22927 y Fk(2)36877 23427 y Fl(;)g(t)p Fs(\))1212 b(\()p
+Fl(i)337 b Fs(=)f(1)p Fl(;)202 b Fs(2\))405 b Fl(;)5445
+b Fs(\(4\))4000 26454 y(where)489 b(the)h(sup)34 b(erscripts)490
+b Fl(i)f Fs(are)g(used)g(to)h(distinguish)h(the)f(t)-34
+b(w)g(o)491 b(c)-34 b(hemical)488 b(sp)34 b(ecies,)510
+b(and)490 b(where)f(the)4000 27959 y(reaction)404 b(terms)g(are)g(giv)
+-34 b(en)403 b(b)-34 b(y)14152 30384 y Fl(R)15081 29883
+y Fk(1)15608 30384 y Fs(\()p Fl(c)16604 29883 y Fk(1)17130
+30384 y Fl(;)202 b(c)18194 29883 y Fk(2)18719 30384 y
+Fl(;)g(t)p Fs(\))336 b(=)h Fo(\241)p Fl(q)23267 30566
+y Fk(1)23792 30384 y Fl(c)24317 29883 y Fk(1)24843 30384
+y Fl(c)25368 29883 y Fk(3)26163 30384 y Fo(\241)269 b
+Fl(q)27916 30566 y Fk(2)28442 30384 y Fl(c)28967 29883
+y Fk(1)29492 30384 y Fl(c)30017 29883 y Fk(2)30812 30384
+y Fs(+)g(2)p Fl(q)33171 30566 y Fk(3)33697 30384 y Fs(\()p
+Fl(t)p Fs(\))p Fl(c)35602 29883 y Fk(3)36397 30384 y
+Fs(+)g Fl(q)38150 30566 y Fk(4)38676 30384 y Fs(\()p
+Fl(t)p Fs(\))p Fl(c)40581 29883 y Fk(2)41511 30384 y
+Fl(;)14152 32349 y(R)15081 31849 y Fk(2)15608 32349 y
+Fs(\()p Fl(c)16604 31849 y Fk(1)17130 32349 y Fl(;)202
+b(c)18194 31849 y Fk(2)18719 32349 y Fl(;)g(t)p Fs(\))336
+b(=)h Fl(q)22324 32531 y Fk(1)22850 32349 y Fl(c)23375
+31849 y Fk(1)23900 32349 y Fl(c)24425 31849 y Fk(3)25220
+32349 y Fo(\241)269 b Fl(q)26973 32531 y Fk(2)27499 32349
+y Fl(c)28024 31849 y Fk(1)28549 32349 y Fl(c)29074 31849
+y Fk(2)29869 32349 y Fo(\241)g Fl(q)31622 32531 y Fk(4)32148
+32349 y Fs(\()p Fl(t)p Fs(\))p Fl(c)34053 31849 y Fk(2)34983
+32349 y Fl(:)50451 31360 y Fs(\(5\))4000 34828 y(The)553
+b(spatial)g(domain)g(is)f(0)584 b Fo(\267)g Fl(x)g Fo(\267)f
+Fs(20)p Fl(;)786 b Fs(30)584 b Fo(\267)g Fl(y)628 b Fo(\267)584
+b Fs(50)552 b(\(in)h Fe(km)p Fs(\).)984 b(The)553 b(v)-67
+b(arious)552 b(constan)-34 b(ts)554 b(and)4000 36333
+y(parameters)435 b(are:)598 b Fl(K)13891 36530 y Fh(h)14877
+36333 y Fs(=)387 b(4)p Fl(:)p Fs(0)290 b Fo(\242)f Fs(10)19884
+35893 y Fj(\241)p Fk(6)21142 36333 y Fl(;)636 b(V)657
+b Fs(=)387 b(10)26021 35893 y Fj(\241)p Fk(3)27279 36333
+y Fl(;)636 b(K)29281 36515 y Fh(v)30214 36333 y Fs(=)387
+b(10)32756 35893 y Fj(\241)p Fk(8)34216 36333 y Fs(exp\()p
+Fl(y)43 b(=)p Fs(5\))p Fl(;)638 b(q)40375 36515 y Fk(1)41288
+36333 y Fs(=)388 b(1)p Fl(:)p Fs(63)289 b Fo(\242)g Fs(10)46901
+35893 y Fj(\241)p Fk(16)48630 36333 y Fl(;)636 b(q)50144
+36515 y Fk(2)51057 36333 y Fs(=)4000 37839 y(4)p Fl(:)p
+Fs(66)269 b Fo(\242)g Fs(10)8242 37399 y Fj(\241)p Fk(16)9971
+37839 y Fl(;)605 b(c)11438 37399 y Fk(3)12300 37839 y
+Fs(=)337 b(3)p Fl(:)p Fs(7)269 b Fo(\242)g Fs(10)17216
+37399 y Fk(16)18212 37839 y Fl(;)404 b Fs(and)h(the)g(diurnal)f(rate)g
+(constan)-34 b(ts)406 b(are)e(de\257ned)h(as:)12706 41000
+y Fl(q)13247 41182 y Fh(i)13623 41000 y Fs(\()p Fl(t)p
+Fs(\))337 b(=)16619 39291 y Fd(\275)18082 40246 y Fs(exp[)p
+Fo(\241)p Fl(a)21855 40428 y Fh(i)22230 40246 y Fl(=)202
+b Fs(sin)g Fl(!)43 b(t)p Fs(])p Fl(;)1107 b Fs(for)606
+b(sin)202 b Fl(!)43 b(t)338 b(>)e Fs(0)18082 41751 y(0)p
+Fl(;)8719 b Fs(for)606 b(sin)202 b Fl(!)43 b(t)338 b
+Fo(\267)e Fs(0)35503 39291 y Fd(\276)37826 41000 y Fs(\()p
+Fl(i)h Fs(=)f(3)p Fl(;)202 b Fs(4\))404 b Fl(;)4000 44229
+y Fs(where)425 b Fl(!)415 b Fs(=)371 b Fl(\274)43 b(=)p
+Fs(43200)p Fl(;)627 b(a)15984 44411 y Fk(3)16881 44229
+y Fs(=)371 b(22)p Fl(:)p Fs(62)p Fl(;)626 b(a)22560 44411
+y Fk(4)23457 44229 y Fs(=)371 b(7)p Fl(:)p Fs(601)p Fl(:)424
+b Fs(The)i(time)e(in)-34 b(terv)-67 b(al)424 b(of)i(in)-34
+b(tegration)425 b(is)g([0)p Fl(;)202 b Fs(86400],)4000
+45735 y(represen)-34 b(ting)404 b(24)h(hours)f(measured)h(in)f
+(seconds.)5882 47240 y(Homogeneous)483 b(Neumann)g(b)34
+b(oundary)483 b(conditions)h(are)d(imp)34 b(osed)483
+b(on)g(eac)-34 b(h)482 b(b)34 b(oundary)-101 b(,)502
+b(and)483 b(the)4000 48746 y(initial)404 b(conditions)h(are)13210
+50934 y Fl(c)13735 50434 y Fk(1)14261 50934 y Fs(\()p
+Fl(x;)202 b(y)43 b(;)202 b Fs(0\))337 b(=)g(10)21046
+50434 y Fk(6)21571 50934 y Fl(\256)t Fs(\()p Fl(x)p Fs(\))p
+Fl(\257)64 b Fs(\()p Fl(y)43 b Fs(\))407 b Fl(;)1414
+b(c)28997 50434 y Fk(2)29522 50934 y Fs(\()p Fl(x;)202
+b(y)43 b(;)202 b Fs(0\))338 b(=)e(10)36307 50434 y Fk(12)37304
+50934 y Fl(\256)t Fs(\()p Fl(x)p Fs(\))p Fl(\257)64 b
+Fs(\()p Fl(y)43 b Fs(\))406 b Fl(;)15802 52900 y(\256)t
+Fs(\()p Fl(x)p Fs(\))338 b(=)f(1)269 b Fo(\241)g Fs(\(0)p
+Fl(:)p Fs(1)p Fl(x)g Fo(\241)g Fs(1\))27192 52400 y Fk(2)27988
+52900 y Fs(+)g(\(0)p Fl(:)p Fs(1)p Fl(x)h Fo(\241)f Fs(1\))34472
+52400 y Fk(4)34998 52900 y Fl(=)p Fs(2)404 b Fl(;)15887
+54866 y(\257)64 b Fs(\()p Fl(y)43 b Fs(\))338 b(=)f(1)269
+b Fo(\241)g Fs(\(0)p Fl(:)p Fs(1)p Fl(y)313 b Fo(\241)269
+b Fs(4\))27137 54365 y Fk(2)27933 54866 y Fs(+)g(\(0)p
+Fl(:)p Fs(1)p Fl(y)314 b Fo(\241)269 b Fs(4\))34362 54365
+y Fk(4)34888 54866 y Fl(=)p Fs(2)404 b Fl(:)50451 52893
+y Fs(\(6\))4000 57344 y(F)-101 b(or)524 b(this)g(example,)553
+b(the)525 b(equations)f(\(4\))h(are)e(discretized)h(spatially)f(with)i
+(standard)g(cen)-34 b(tral)524 b(\257nite)4000 58849
+y(di\256erences)403 b(on)i(a)f(10)269 b Fo(\243)h Fs(10)404
+b(mesh,)g(giving)g(an)g(ODE)g(system)g(of)g(size)g(200.)5882
+60355 y(Among)649 b(the)h(initial)e Fq(#include)k Fs(lines)c(in)h(this)
+h(case)e(are)g(lines)h(to)g(include)g Fq(cvspgmr.h)j
+Fs(and)4000 61860 y Fq(sundialsmath.h)p Fs(.)1043 b(The)571
+b(\257rst)g(con)-34 b(tains)572 b(constan)-34 b(ts)573
+b(and)e(function)h(protot)-34 b(yp)34 b(es)572 b(asso)34
+b(ciated)570 b(with)4000 63366 y(the)516 b Fp(spgmr)g
+Fs(metho)34 b(d,)544 b(including)516 b(the)g(v)-67 b(alues)515
+b(of)h(the)g Fq(pretype)i Fs(argumen)-34 b(t)516 b(to)g
+Fq(CVSpgmr)p Fs(.)876 b(The)516 b(in-)4000 64871 y(clusion)458
+b(of)f Fq(sundialsmath.h)463 b Fs(is)457 b(done)h(to)g(access)f(the)h
+Fq(SQR)h Fs(macro)e(for)g(the)h(square)g(of)g(a)f Fq(realtype)4000
+66377 y Fs(n)-34 b(um)g(b)34 b(er.)5882 67882 y(The)568
+b Fq(main)i Fs(program)e(calls)f Fq(CVodeCreate)572 b
+Fs(sp)34 b(ecifying)568 b(the)g Fq(CV)p 36495 67882 382
+45 v 459 w(BDF)h Fs(metho)34 b(d)569 b(and)g Fq(CV)p
+47799 67882 V 459 w(NEWTON)4000 69388 y Fs(iteration,)331
+b(and)313 b(then)h(calls)e Fq(CVodeMalloc)317 b Fs(with)d(scalar)e
+(tolerances.)507 b(It)313 b(calls)f Fq(CVSpgmr)j Fs(\(see)e
+Fo(x)p Fs(5.5.2\))g(to)4000 70893 y(sp)34 b(ecify)299
+b(the)h Fp(cvspgmr)g Fs(linear)f(solv)-34 b(er)299 b(with)h(left)g
+(preconditioning,)321 b(and)300 b(the)g(default)g(v)-67
+b(alue)299 b(\(indicated)4000 72399 y(b)-34 b(y)390 b(a)g(zero)g
+(argumen)-34 b(t\))391 b(for)f Fq(maxl)p Fs(.)535 b(The)391
+b(Gram-Sc)-34 b(hmidt)391 b(orthogonalization)g(is)f(set)g(to)g
+Fq(MODIFIED)p 50342 72399 V 461 w(GS)4000 73904 y Fs(through)567
+b(the)f(function)h Fq(CVSpgmrSetGSType)p Fs(.)1029 b(Next,)606
+b(user-supplied)567 b(preconditioner)e(setup)i(and)4000
+75409 y(solv)-34 b(e)466 b(functions,)483 b Fq(Precond)468
+b Fs(and)f Fq(PSolve)p Fs(,)483 b(as)467 b(w)-34 b(ell)466
+b(as)g(the)g Fq(data)i Fs(p)34 b(oin)-34 b(ter)466 b(passed)h(to)g
+Fq(Precond)h Fs(and)4000 76915 y Fq(PSolve)334 b Fs(whenev)-34
+b(er)332 b(these)h(are)e(called,)346 b(See)332 b Fo(x)p
+Fs(5.5.4)f(for)h(details)g(on)h(the)f Fq(CVSpgmrSetPreconditioner)4000
+78420 y Fs(function.)p Black 27697 81741 a(9)p Black
+eop
+%%Page: 10 14
+10 13 bop Black Black 1882 7638 a Fs(Then)611 b(for)g(a)g(sequence)f
+(of)g Fq(tout)i Fs(v)-67 b(alues,)662 b Fq(CVode)612
+b Fs(is)e(called)g(in)h(the)g Fq(CV)p 36830 7638 382
+45 v 458 w(NORMAL)i Fs(mo)34 b(de,)662 b(sam-)0 9143
+y(pled)572 b(output)i(is)e(prin)-34 b(ted,)614 b(and)573
+b(the)f(return)h(v)-67 b(alue)571 b(is)h(tested)g(for)g(error)f
+(conditions.)1043 b(After)572 b(that,)0 10649 y Fq(PrintFinalStats)390
+b Fs(is)385 b(called)f(to)i(get)f(and)h(prin)-34 b(t)385
+b(\257nal)h(statistics,)j(and)d(memory)e(is)h(freed)g(b)-34
+b(y)385 b(calls)g(to)0 12154 y Fq(N)p 712 12154 V 459
+w(VDestroy)p Fs(,)487 b Fq(FreeUserData)p Fs(,)h(and)469
+b Fq(CVodeFree)p Fs(.)735 b(The)469 b(prin)-34 b(ted)470
+b(statistics)f(include)f(v)-67 b(arious)468 b(coun-)0
+13660 y(ters,)575 b(suc)-34 b(h)541 b(as)g(the)g(total)h(n)-34
+b(um)g(b)34 b(ers)542 b(of)f(steps)g(\()p Fq(nst)p Fs(\),)577
+b(of)541 b Fq(f)g Fs(ev)-67 b(aluations)541 b(\(excluding)g(those)g
+(for)g Fl(J)117 b(v)0 15165 y Fs(pro)34 b(duct)502 b(ev)-67
+b(aluations\))502 b(\()p Fq(nfe)p Fs(\),)528 b(of)502
+b Fq(f)g Fs(ev)-67 b(aluations)502 b(for)g Fl(J)117 b(v)544
+b Fs(ev)-67 b(aluations)502 b(\()p Fq(nfel)p Fs(\),)527
+b(of)503 b(nonlinear)e(iter-)0 16671 y(ations)567 b(\()p
+Fq(nni)p Fs(\),)608 b(of)567 b(linear)f(\(Krylo)-34 b(v\))566
+b(iterations)g(\()p Fq(nli)p Fs(\),)608 b(of)567 b(preconditioner)f
+(setups)i(\()p Fq(nsetups)p Fs(\),)610 b(of)0 18176 y(preconditioner)
+479 b(ev)-67 b(aluations)478 b(\()p Fq(npe)p Fs(\),)499
+b(and)480 b(of)f(preconditioner)g(solv)-34 b(es)478 b(\()p
+Fq(nps)p Fs(\),)499 b(among)479 b(others.)763 b(Also)0
+19682 y(prin)-34 b(ted)429 b(are)e(the)i(lengths)f(of)h(the)f
+(problem-dep)34 b(enden)-34 b(t)430 b(real)d(and)h(in)-34
+b(teger)428 b(w)-34 b(orkspaces)429 b(used)f(b)-34 b(y)428
+b(the)0 21187 y(main)481 b(in)-34 b(tegrator)481 b Fq(CVode)p
+Fs(,)501 b(denoted)481 b Fq(lenrw)i Fs(and)e Fq(leniw)p
+Fs(,)501 b(and)481 b(those)h(used)f(b)-34 b(y)481 b Fp(cvspgmr)p
+Fs(,)500 b(denoted)0 22693 y Fq(llrw)311 b Fs(and)e Fq(lliw)p
+Fs(.)509 b(All)308 b(of)i(these)f(optional)h(outputs)h(are)e(describ)34
+b(ed)309 b(in)g Fo(x)p Fs(5.5.6.)506 b(The)310 b Fq(PrintFinalStats)0
+24198 y Fs(function)328 b(is)e(suitable)g(for)h(general)e(use)h(in)h
+(applications)g(of)f Fp(cv)-27 b(ode)328 b Fs(to)e(an)-34
+b(y)327 b(problem)f(with)h(the)g Fp(spgmr)0 25704 y Fs(linear)403
+b(solv)-34 b(er.)1882 27215 y(Mathematically)-101 b(,)424
+b(the)d(dep)34 b(enden)-34 b(t)422 b(v)-67 b(ariable)419
+b(has)j(three)e(dimensions:)572 b(sp)34 b(ecies)420 b(n)-34
+b(um)g(b)34 b(er,)425 b Fl(x)c Fs(mesh)0 28721 y(p)34
+b(oin)-34 b(t,)454 b(and)444 b Fl(y)487 b Fs(mesh)444
+b(p)34 b(oin)-34 b(t.)657 b(But)444 b(in)g Fp(nvector)p
+23001 28721 403 45 v 484 w(serial)p Fs(,)454 b(a)444
+b(v)-34 b(ector)443 b(of)h(t)-34 b(yp)34 b(e)443 b Fq(N)p
+37515 28721 382 45 v 459 w(Vector)i Fs(w)-34 b(orks)444
+b(with)0 30226 y(a)554 b(one-dimensional)g(con)-34 b(tiguous)556
+b(arra)-34 b(y)553 b(of)h(data)h(comp)34 b(onen)-34 b(ts.)989
+b(The)554 b(macro)f Fq(IJKth)j Fs(isolates)d(the)0 31732
+y(translation)415 b(from)g(three)f(dimensions)h(to)g(one.)570
+b(Its)414 b(use)h(results)f(in)h(clearer)d(co)34 b(de)414
+b(and)i(mak)-34 b(es)414 b(it)g(easy)0 33237 y(to)502
+b(c)-34 b(hange)503 b(the)f(underlying)h(la)-34 b(y)g(out)502
+b(of)h(the)f(three-dimensional)g(data.)833 b(Here)502
+b(the)g(problem)g(size)f(is)0 34743 y(200,)516 b(so)494
+b(w)-34 b(e)494 b(use)g(the)g Fq(NV)p 11832 34743 V 459
+w(DATA)p 14835 34743 V 459 w(S)g Fs(macro)f(for)h(e\261cien)-34
+b(t)494 b Fq(N)p 27302 34743 V 458 w(Vector)i Fs(access.)807
+b(The)494 b Fq(NV)p 40248 34743 V 459 w(DATA)p 43251
+34743 V 459 w(S)g Fs(macro)0 36248 y(giv)-34 b(es)370
+b(a)h(p)34 b(oin)-34 b(ter)371 b(to)g(the)g(\257rst)g(comp)34
+b(onen)-34 b(t)372 b(of)f(an)g Fq(N)p 23899 36248 V 458
+w(Vector)i Fs(whic)-34 b(h)372 b(w)-34 b(e)371 b(pass)g(to)g(the)g
+Fq(IJKth)h Fs(macro)f(to)0 37754 y(do)405 b(an)f Fq(N)p
+4079 37754 V 459 w(Vector)i Fs(access.)1882 39266 y(The)431
+b(preconditioner)f(used)h(here)f(is)g(the)h(blo)34 b(c)-34
+b(k-diagonal)430 b(part)h(of)g(the)g(true)g(Newton)g(matrix.)617
+b(It)0 40771 y(is)375 b(generated)g(and)h(factored)g(in)f(the)h
+Fq(Precond)i Fs(routine)d(\(see)g Fo(x)p Fs(5.6.7\))g(and)h(bac)-34
+b(ksolv)g(ed)376 b(in)f(the)h Fq(PSolve)0 42276 y Fs(routine)544
+b(\(see)f Fo(x)p Fs(5.6.6\).)956 b(Its)543 b(diagonal)h(blo)34
+b(c)-34 b(ks)543 b(are)g(2)362 b Fo(\243)g Fs(2)543 b(matrices)g(that)h
+(include)g(the)f(in)-34 b(teraction)0 43782 y(Jacobian)469
+b(elemen)-34 b(ts)469 b(and)g(the)g(diagonal)g(con)-34
+b(tribution)470 b(of)f(the)g(di\256usion)h(Jacobian)e(elemen)-34
+b(ts.)732 b(The)0 45287 y(blo)34 b(c)-34 b(k-diagonal)453
+b(part)h(of)g(the)g(Jacobian)f(itself,)466 b Fl(J)23465
+45484 y Fh(bd)24407 45287 y Fs(,)f(is)453 b(sa)-34 b(v)g(ed)454
+b(in)f(separate)h(storage)f(eac)-34 b(h)454 b(time)f(it)g(is)0
+46793 y(generated,)404 b(on)g(calls)f(to)h Fq(Precond)i
+Fs(with)f Fq(jok)637 b(==)h(FALSE)p Fs(.)405 b(On)f(calls)f(with)h
+Fq(jok)638 b(==)f(TRUE)p Fs(,)405 b(signifying)0 48298
+y(that)342 b(sa)-34 b(v)g(ed)342 b(Jacobian)g(data)g(can)f(b)34
+b(e)341 b(reused,)354 b(the)342 b(preconditioner)f Fl(P)505
+b Fs(=)337 b Fl(I)239 b Fo(\241)144 b Fl(\260)67 b(J)37061
+48495 y Fh(bd)38343 48298 y Fs(is)341 b(formed)h(from)f(the)0
+49804 y(sa)-34 b(v)g(ed)413 b(matrix)f Fl(J)7904 50001
+y Fh(bd)9258 49804 y Fs(and)h(factored.)563 b(\(A)413
+b(call)e(to)i Fq(Precond)i Fs(with)e Fq(jok)637 b(==)g(TRUE)414
+b Fs(can)e(only)g(o)34 b(ccur)412 b(after)0 51309 y(a)397
+b(prior)g(call)g(with)h Fq(jok)637 b(==)g(FALSE)p Fs(.\))399
+b(The)f Fq(Precond)i Fs(routine)d(m)-34 b(ust)399 b(also)e(set)h(the)f
+(v)-67 b(alue)397 b(of)g Fq(jcur)p Fs(,)j(i.e.)0 52815
+y Fq(*jcurPtr)p Fs(,)465 b(to)451 b Fq(TRUE)i Fs(when)e
+Fl(J)14298 53012 y Fh(bd)15691 52815 y Fs(is)g(re-ev)-67
+b(aluated,)462 b(and)451 b Fq(FALSE)i Fs(otherwise,)462
+b(to)452 b(inform)f Fp(cvspgmr)h Fs(of)0 54320 y(the)405
+b(status)g(of)g(Jacobian)f(data.)1882 55832 y(W)-101
+b(e)569 b(need)g(to)h(tak)-34 b(e)569 b(a)h(brief)f(detour)h(to)g
+(explain)f(one)g(last)h(imp)34 b(ortan)-34 b(t)570 b(asp)34
+b(ect)569 b(of)h(the)g Fq(cvkx.c)0 57337 y Fs(program.)528
+b(The)372 b(generic)e Fp(dense)i Fs(solv)-34 b(er)370
+b(con)-34 b(tains)373 b(t)-34 b(w)g(o)373 b(sets)e(of)h(functions:)524
+b(one)371 b(for)h(\\large")e(matrices)0 58843 y(and)531
+b(one)f(for)h(\\small")f(matrices.)916 b(The)531 b(large)e(dense)i
+(functions)h(w)-34 b(ork)530 b(with)h(the)g(t)-34 b(yp)34
+b(e)530 b Fq(DenseMat)p Fs(,)0 60348 y(while)c(the)g(small)g(dense)g
+(functions)h(w)-34 b(ork)526 b(with)h Fq(realtype)639
+b(**)527 b Fs(as)f(the)g(underlying)g(dense)g(matrix)0
+61854 y(t)-34 b(yp)34 b(es.)695 b(The)457 b Fp(cvdense)h
+Fs(linear)e(solv)-34 b(er)455 b(uses)i(the)g(t)-34 b(yp)34
+b(e)456 b Fq(DenseMat)j Fs(for)e(the)g Fl(N)436 b Fo(\243)304
+b Fl(N)588 b Fs(dense)457 b(Jacobian)0 63359 y(and)490
+b(Newton)g(matrices,)509 b(and)490 b(calls)f(the)g(large)f(matrix)h
+(functions.)795 b(But)489 b(to)h(a)-34 b(v)g(oid)489
+b(the)h(extra)e(la)-34 b(y)g(er)0 64865 y(of)555 b(function)h(calls,)
+591 b Fq(cvkx.c)556 b Fs(uses)f(the)g(small)f(dense)h(functions)h(for)e
+(all)g(op)34 b(erations)555 b(on)g(the)g(2)370 b Fo(\243)f
+Fs(2)0 66370 y(preconditioner)507 b(blo)34 b(c)-34 b(ks.)845
+b(Th)-34 b(us)508 b(it)f(includes)f Fq(smalldense.h)p
+Fs(,)536 b(and)508 b(calls)d(the)i(small)f(dense)h(matrix)0
+67876 y(functions)392 b Fq(denalloc)p Fs(,)k Fq(dencopy)p
+Fs(,)g Fq(denscale)p Fs(,)g Fq(denaddI)p Fs(,)d Fq(denfree)p
+Fs(,)i Fq(denfreepiv)p Fs(,)i Fq(gefa)p Fs(,)d(and)e
+Fq(gesl)p Fs(.)0 69381 y(The)343 b(macro)f Fq(IJth)h
+Fs(de\257ned)h(near)e(the)h(top)g(of)f(the)h(\257le)f(is)g(used)h(to)g
+(access)f(individual)g(elemen)-34 b(ts)342 b(in)h(eac)-34
+b(h)0 70887 y(preconditioner)384 b(blo)34 b(c)-34 b(k,)388
+b(n)-34 b(um)g(b)34 b(ered)385 b(from)f(1.)532 b(The)385
+b(small)f(dense)g(functions)i(are)d(a)-34 b(v)-67 b(ailable)383
+b(for)i Fp(cv)-27 b(ode)0 72392 y Fs(user)404 b(programs)g(generally)
+-101 b(,)403 b(and)i(are)e(do)34 b(cumen)-34 b(ted)406
+b(in)e Fo(x)p Fs(8.1.)1882 73904 y(In)554 b(addition)g(to)g(the)g
+(functions)i(called)c(b)-34 b(y)554 b Fp(cv)-27 b(ode)p
+Fs(,)592 b Fq(cvkx.c)556 b Fs(includes)e(de\257nitions)h(of)f(sev)-34
+b(eral)0 75409 y(priv)-67 b(ate)483 b(functions.)778
+b(These)484 b(are:)697 b Fq(AllocUserData)488 b Fs(to)c(allo)34
+b(cate)483 b(space)g(for)h Fl(J)37134 75606 y Fh(bd)38076
+75409 y Fs(,)503 b Fl(P)168 b Fs(,)504 b(and)484 b(the)g(piv)-34
+b(ot)0 76915 y(arra)g(ys;)444 b Fq(InitUserData)435 b
+Fs(to)d(load)f(problem)g(constan)-34 b(ts)433 b(in)e(the)h
+Fq(data)g Fs(blo)34 b(c)-34 b(k;)444 b Fq(FreeUserData)435
+b Fs(to)c(free)0 78420 y(that)483 b(blo)34 b(c)-34 b(k;)521
+b Fq(SetInitialProfiles)489 b Fs(to)483 b(load)f(the)h(initial)f(v)-67
+b(alues)481 b(in)i Fq(y)p Fs(;)521 b Fq(PrintOutput)486
+b Fs(to)d(retreiv)-34 b(e)p Black 23394 81741 a(10)p
+Black eop
+%%Page: 11 15
+11 14 bop Black Black 4000 7638 a Fs(and)436 b(prin)-34
+b(t)436 b(selected)f(solution)h(v)-67 b(alues)434 b(and)j(statistics;)
+451 b Fq(PrintFinalStats)440 b Fs(to)c(prin)-34 b(t)436
+b(statistics;)451 b(and)4000 9143 y Fq(check)p 7256 9143
+382 45 v 460 w(flag)405 b Fs(to)g(c)-34 b(hec)g(k)404
+b(return)g(v)-67 b(alues)404 b(for)g(error)f(conditions.)5882
+10649 y(The)272 b(output)i(generated)e(b)-34 b(y)272
+b Fq(cvkx.c)i Fs(is)d(sho)-34 b(wn)273 b(b)34 b(elo)-34
+b(w.)495 b(Note)272 b(that)h(the)f(n)-34 b(um)g(b)34
+b(er)273 b(of)f(preconditioner)4000 12154 y(ev)-67 b(aluations,)404
+b Fq(npe)p Fs(,)h(is)e(m)-34 b(uc)g(h)406 b(smaller)d(than)i(the)g(n)
+-34 b(um)g(b)34 b(er)405 b(of)f(preconditioner)h(setups,)f
+Fq(nsetups)p Fs(,)j(as)d(a)4000 13660 y(result)g(of)h(the)f(Jacobian)g
+(re-use)g(sc)-34 b(heme.)p 4000 15586 18189 45 v 22770
+15652 a Fi(cvkx)581 b(sample)h(output)p 33811 15586 V
+4000 16386 45 801 v 51956 16386 V 4000 17715 45 1329
+v 51956 17715 V 4000 19043 V 4844 18645 a(2-species)h(diurnal)f
+(advection-diffusion)i(problem)p 51956 19043 V 4000 20371
+V 51956 20371 V 4000 21700 V 4844 21301 a(t)e(=)f(7.20e+03)1745
+b(no.)581 b(steps)h(=)f(219)1744 b(order)582 b(=)f(5)1744
+b(stepsize)582 b(=)g(1.59e+02)p 51956 21700 V 4000 23028
+V 4844 22630 a(c1)g(\(bot.left/middle/top)i(rt.\))e(=)2324
+b(1.047e+04)2907 b(2.964e+04)h(1.119e+04)p 51956 23028
+V 4000 24356 V 4844 23958 a(c2)582 b(\(bot.left/middle/top)i(rt.\))e(=)
+2324 b(2.527e+11)2907 b(7.154e+11)h(2.700e+11)p 51956
+24356 V 4000 25685 V 51956 25685 V 4000 27013 V 4844
+26615 a(t)582 b(=)f(1.44e+04)1745 b(no.)581 b(steps)h(=)f(251)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(3.77e+02)p
+51956 27013 V 4000 28342 V 4844 27943 a(c1)g(\(bot.left/middle/top)i
+(rt.\))e(=)2324 b(6.659e+06)2907 b(5.316e+06)h(7.301e+06)p
+51956 28342 V 4000 29670 V 4844 29271 a(c2)582 b(\(bot.left/middle/top)
+i(rt.\))e(=)2324 b(2.582e+11)2907 b(2.057e+11)h(2.833e+11)p
+51956 29670 V 4000 30998 V 51956 30998 V 4000 32327 V
+4844 31928 a(t)582 b(=)f(2.16e+04)1745 b(no.)581 b(steps)h(=)f(277)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(2.75e+02)p
+51956 32327 V 4000 33655 V 4844 33256 a(c1)g(\(bot.left/middle/top)i
+(rt.\))e(=)2324 b(2.665e+07)2907 b(1.036e+07)h(2.931e+07)p
+51956 33655 V 4000 34983 V 4844 34585 a(c2)582 b(\(bot.left/middle/top)
+i(rt.\))e(=)2324 b(2.993e+11)2907 b(1.028e+11)h(3.313e+11)p
+51956 34983 V 4000 36312 V 51956 36312 V 4000 37640 V
+4844 37241 a(t)582 b(=)f(2.88e+04)1745 b(no.)581 b(steps)h(=)f(301)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(3.72e+02)p
+51956 37640 V 4000 38968 V 4844 38570 a(c1)g(\(bot.left/middle/top)i
+(rt.\))e(=)2324 b(8.702e+06)2907 b(1.292e+07)h(9.650e+06)p
+51956 38968 V 4000 40297 V 4844 39898 a(c2)582 b(\(bot.left/middle/top)
+i(rt.\))e(=)2324 b(3.380e+11)2907 b(5.029e+11)h(3.751e+11)p
+51956 40297 V 4000 41625 V 51956 41625 V 4000 42953 V
+4844 42555 a(t)582 b(=)f(3.60e+04)1745 b(no.)581 b(steps)h(=)f(329)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(8.62e+01)p
+51956 42953 V 4000 44282 V 4844 43883 a(c1)g(\(bot.left/middle/top)i
+(rt.\))e(=)2324 b(1.404e+04)2907 b(2.029e+04)h(1.561e+04)p
+51956 44282 V 4000 45610 V 4844 45212 a(c2)582 b(\(bot.left/middle/top)
+i(rt.\))e(=)2324 b(3.387e+11)2907 b(4.894e+11)h(3.765e+11)p
+51956 45610 V 4000 46938 V 51956 46938 V 4000 48267 V
+4844 47868 a(t)582 b(=)f(4.32e+04)1745 b(no.)581 b(steps)h(=)f(386)1744
+b(order)582 b(=)f(4)1744 b(stepsize)582 b(=)g(4.03e+02)p
+51956 48267 V 4000 49595 V 4844 49197 a(c1)g(\(bot.left/middle/top)i
+(rt.\))e(=)1743 b(-2.083e-07)2326 b(-6.285e-07)g(-2.237e-07)p
+51956 49595 V 4000 50923 V 4844 50525 a(c2)582 b(\(bot.left/middle/top)
+i(rt.\))e(=)2324 b(3.382e+11)2907 b(1.355e+11)h(3.804e+11)p
+51956 50923 V 4000 52252 V 51956 52252 V 4000 53580 V
+4844 53182 a(t)582 b(=)f(5.04e+04)1745 b(no.)581 b(steps)h(=)f(399)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(4.22e+02)p
+51956 53580 V 4000 54909 V 4844 54510 a(c1)g(\(bot.left/middle/top)i
+(rt.\))e(=)1743 b(-5.968e-09)2907 b(5.891e-07)2326 b(-9.151e-09)p
+51956 54909 V 4000 56237 V 4844 55838 a(c2)582 b(\(bot.left/middle/top)
+i(rt.\))e(=)2324 b(3.358e+11)2907 b(4.930e+11)h(3.864e+11)p
+51956 56237 V 4000 57565 V 51956 57565 V 4000 58894 V
+4844 58495 a(t)582 b(=)f(5.76e+04)1745 b(no.)581 b(steps)h(=)f(416)1744
+b(order)582 b(=)f(4)1744 b(stepsize)582 b(=)g(1.05e+02)p
+51956 58894 V 4000 60222 V 4844 59823 a(c1)g(\(bot.left/middle/top)i
+(rt.\))e(=)2324 b(8.838e-08)i(-1.508e-06)2908 b(1.409e-07)p
+51956 60222 V 4000 61550 V 4844 61152 a(c2)582 b(\(bot.left/middle/top)
+i(rt.\))e(=)2324 b(3.320e+11)2907 b(9.650e+11)h(3.909e+11)p
+51956 61550 V 4000 62879 V 51956 62879 V 4000 64207 V
+4844 63808 a(t)582 b(=)f(6.48e+04)1745 b(no.)581 b(steps)h(=)f(432)1744
+b(order)582 b(=)f(4)1744 b(stepsize)582 b(=)g(5.14e+02)p
+51956 64207 V 4000 65535 V 4844 65137 a(c1)g(\(bot.left/middle/top)i
+(rt.\))e(=)2324 b(7.999e-11)i(-2.155e-09)2908 b(1.308e-10)p
+51956 65535 V 4000 66864 V 4844 66465 a(c2)582 b(\(bot.left/middle/top)
+i(rt.\))e(=)2324 b(3.313e+11)2907 b(8.922e+11)h(3.963e+11)p
+51956 66864 V 4000 68192 V 51956 68192 V 4000 69520 V
+4844 69122 a(t)582 b(=)f(7.20e+04)1745 b(no.)581 b(steps)h(=)f(446)1744
+b(order)582 b(=)f(4)1744 b(stepsize)582 b(=)g(5.14e+02)p
+51956 69520 V 4000 70849 V 4844 70450 a(c1)g(\(bot.left/middle/top)i
+(rt.\))e(=)2324 b(7.272e-15)i(-1.817e-13)2908 b(1.188e-14)p
+51956 70849 V 4000 72177 V 4844 71779 a(c2)582 b(\(bot.left/middle/top)
+i(rt.\))e(=)2324 b(3.330e+11)2907 b(6.186e+11)h(4.039e+11)p
+51956 72177 V 4000 73505 V 51956 73505 V 4000 74834 V
+4844 74435 a(t)582 b(=)f(7.92e+04)1745 b(no.)581 b(steps)h(=)f(460)1744
+b(order)582 b(=)f(4)1744 b(stepsize)582 b(=)g(5.14e+02)p
+51956 74834 V 4000 76162 V 4844 75764 a(c1)g(\(bot.left/middle/top)i
+(rt.\))e(=)2324 b(4.110e-18)i(-2.359e-14)2908 b(6.131e-18)p
+51956 76162 V 4000 77491 V 4844 77092 a(c2)582 b(\(bot.left/middle/top)
+i(rt.\))e(=)2324 b(3.334e+11)2907 b(6.669e+11)h(4.120e+11)p
+51956 77491 V 4000 78819 V 51956 78819 V Black 27394
+81741 a Fs(11)p Black eop
+%%Page: 12 16
+12 15 bop Black Black 0 8037 45 1329 v 844 7638 a Fi(t)582
+b(=)f(8.64e+04)1745 b(no.)581 b(steps)h(=)f(474)1744
+b(order)582 b(=)f(4)1744 b(stepsize)582 b(=)g(5.14e+02)p
+47956 8037 V 0 9365 V 844 8966 a(c1)g(\(bot.left/middle/top)i(rt.\))e
+(=)2324 b(7.647e-19)2907 b(1.346e-14)2326 b(-1.473e-17)p
+47956 9365 V 0 10693 V 844 10295 a(c2)582 b(\(bot.left/middle/top)i
+(rt.\))e(=)2324 b(3.352e+11)2907 b(9.108e+11)h(4.163e+11)p
+47956 10693 V 0 12022 V 47956 12022 V 0 13350 V 47956
+13350 V 0 14678 V 844 14280 a(Final)582 b(Statistics..)p
+47956 14678 V 0 16007 V 47956 16007 V 0 17335 V 844 16936
+a(lenrw)1745 b(=)1162 b(2000)2906 b(leniw)582 b(=)2325
+b(10)p 47956 17335 V 0 18663 V 844 18265 a(llrw)h(=)1162
+b(2046)2906 b(lliw)1163 b(=)2325 b(10)p 47956 18663 V
+0 19992 V 844 19593 a(nst)2907 b(=)1743 b(474)p 47956
+19992 V 0 21320 V 844 20922 a(nfe)2907 b(=)1743 b(610)2906
+b(nfel)1163 b(=)1744 b(649)p 47956 21320 V 0 22648 V
+844 22250 a(nni)2907 b(=)1743 b(607)2906 b(nli)1744 b(=)g(649)p
+47956 22648 V 0 23977 V 844 23578 a(nsetups)583 b(=)2324
+b(78)2906 b(netf)1163 b(=)2325 b(27)p 47956 23977 V 0
+25305 V 844 24907 a(npe)2907 b(=)e(8)h(nps)1744 b(=)1163
+b(1204)p 47956 25305 V 0 26633 V 844 26235 a(ncfn)2326
+b(=)2905 b(0)h(ncfl)1163 b(=)2906 b(0)p 47956 26633 V
+0 27962 V 47956 27962 V 0 28762 45 801 v 47956 28762
+V 0 28806 48001 45 v Black 23394 81741 a Fs(12)p Black
+eop
+%%Page: 13 17
+13 16 bop Black Black 4000 7638 a Fr(3)1793 b(P)-50 b(arallel)598
+b(example)i(problems)4000 10410 y Fn(3.1)1495 b(A)499
+b(nonsti\256)g(example:)665 b Fm(pvnx)4000 12721 y Fs(This)405
+b(problem)f(b)34 b(egins)404 b(with)h(a)f(simple)g(di\256usion-adv)-34
+b(ection)405 b(equation)g(for)f Fl(u)337 b Fs(=)f Fl(u)p
+Fs(\()p Fl(t;)202 b(x)p Fs(\))23041 15397 y Fl(@)67 b(u)p
+23041 15938 1405 49 v 23169 17048 a(@)g(t)24915 16217
+y Fs(=)26328 15397 y Fl(@)27039 14957 y Fk(2)27564 15397
+y Fl(u)p 26328 15938 1931 49 v 26329 17048 a(@)g(x)27733
+16698 y Fk(2)28660 16217 y Fs(+)270 b(0)p Fl(:)p Fs(5)31555
+15397 y Fl(@)67 b(u)p 31555 15938 1405 49 v 31556 17048
+a(@)g(x)50451 16217 y Fs(\(7\))4000 19253 y(for)419 b(0)361
+b Fo(\267)f Fl(t)h Fo(\267)g Fs(5)p Fl(;)1039 b Fs(0)361
+b Fo(\267)g Fl(x)f Fo(\267)h Fs(2,)422 b(and)d(sub)67
+b(ject)420 b(to)f(homogeneous)h(Diric)-34 b(hlet)418
+b(b)34 b(oundary)420 b(conditions)f(and)4000 20758 y(initial)404
+b(v)-67 b(alues)403 b(giv)-34 b(en)404 b(b)-34 b(y)20165
+23516 y Fl(u)p Fs(\()p Fl(t;)202 b Fs(0\))1107 b(=)g(0)404
+b Fl(;)1818 b(u)p Fs(\()p Fl(t;)202 b Fs(2\))337 b(=)f(0)404
+b Fl(;)p Black 14563 w Fs(\(8\))p Black 19910 25353 a
+Fl(u)p Fs(\(0)p Fl(;)202 b(x)p Fs(\))1107 b(=)g Fl(x)p
+Fs(\(2)269 b Fo(\241)h Fl(x)p Fs(\))p Fl(e)31521 24853
+y Fk(2)p Fh(x)32981 25353 y Fl(:)4000 28111 y Fs(A)538
+b(system)h(of)g Fq(MX)g Fs(ODEs)f(is)g(obtained)h(b)-34
+b(y)539 b(discretizing)f(the)h Fl(x)p Fs(-axis)e(with)j
+Fq(MX)p Fs(+2)e(grid)h(p)34 b(oin)-34 b(ts)539 b(and)4000
+29616 y(replacing)378 b(the)h(\257rst)g(and)h(second)e(order)h(spatial)
+g(deriv)-67 b(ativ)-34 b(es)377 b(with)i(their)g(cen)-34
+b(tral)379 b(di\256erence)e(appro)-34 b(x-)4000 31121
+y(imations.)528 b(Since)372 b(the)h(v)-67 b(alue)371
+b(of)h Fl(u)g Fs(is)g(constan)-34 b(t)374 b(at)e(the)h(t)-34
+b(w)g(o)373 b(endp)34 b(oin)-34 b(ts,)380 b(the)372 b(semi-discrete)f
+(equations)4000 32627 y(for)448 b(those)g(p)34 b(oin)-34
+b(ts)448 b(can)g(b)34 b(e)447 b(eliminated.)669 b(With)448
+b Fl(u)27156 32809 y Fh(i)27979 32627 y Fs(as)f(the)h(appro)-34
+b(ximation)449 b(to)f Fl(u)p Fs(\()p Fl(t;)202 b(x)44129
+32809 y Fh(i)44504 32627 y Fs(\),)459 b Fl(x)46464 32809
+y Fh(i)47248 32627 y Fs(=)409 b Fl(i)p Fs(\(\242)p Fl(x)p
+Fs(\),)4000 34132 y(and)c(\242)p Fl(x)336 b Fs(=)h(2)p
+Fl(=)p Fs(\()p Fq(MX)p Fs(+1\),)405 b(the)g(resulting)f(system)g(of)h
+(ODEs,)615 b(_)-549 b Fl(u)337 b Fs(=)f Fl(f)130 b Fs(\()p
+Fl(t;)202 b(u)p Fs(\),)405 b(can)f(no)-34 b(w)405 b(b)34
+b(e)404 b(written:)17114 37399 y(_)-549 b Fl(u)17596
+37581 y Fh(i)18308 37399 y Fs(=)19721 36579 y Fl(u)20415
+36761 y Fh(i)p Fk(+1)22262 36579 y Fo(\241)269 b Fs(2)p
+Fl(u)24774 36761 y Fh(i)25419 36579 y Fs(+)g Fl(u)27325
+36761 y Fh(i)p Fj(\241)p Fk(1)p 19721 37120 9183 49 v
+22726 38231 a Fs(\(\242)p Fl(x)p Fs(\))25371 37880 y
+Fk(2)29305 37399 y Fs(+)g(0)p Fl(:)p Fs(5)32199 36579
+y Fl(u)32893 36761 y Fh(i)p Fk(+1)34740 36579 y Fo(\241)g
+Fl(u)36646 36761 y Fh(i)p Fj(\241)p Fk(1)p 32199 37120
+6026 49 v 33586 38231 a Fs(2\(\242)p Fl(x)p Fs(\))38761
+37399 y Fl(:)11353 b Fs(\(9\))4000 40738 y(This)405 b(equation)f(holds)
+h(for)f Fl(i)336 b Fs(=)h(1)p Fl(;)202 b Fs(2)p Fl(;)g(:)g(:)g(:)f(;)
+403 b Fq(MX)p Fs(,)i(with)g(the)f(understanding)i(that)g
+Fl(u)41563 40920 y Fk(0)42425 40738 y Fs(=)337 b Fl(u)44399
+40920 y Fg(MX)p Fk(+1)46934 40738 y Fs(=)f(0)p Fl(:)5882
+42255 y Fs(In)393 b(the)g(parallel)f(pro)34 b(cessing)392
+b(en)-34 b(vironmen)g(t,)396 b(w)-34 b(e)393 b(ma)-34
+b(y)393 b(think)h(of)f(the)g(sev)-34 b(eral)392 b(pro)34
+b(cessors)392 b(as)h(b)34 b(eing)4000 43760 y(laid)559
+b(out)g(on)g(a)g(straigh)-34 b(t)560 b(line)e(with)i(eac)-34
+b(h)559 b(pro)34 b(cessor)558 b(to)h(compute)g(its)g(con)-34
+b(tiguous)561 b(subset)e(of)g(the)4000 45266 y(solution)460
+b(v)-34 b(ector.)704 b(Consequen)-34 b(tly)460 b(the)g(computation)h
+(of)f(the)g(righ)-34 b(t)460 b(hand)g(side)f(of)h(Eq.)704
+b(\(9\))460 b(requires)4000 46771 y(that)343 b(eac)-34
+b(h)343 b(in)-34 b(terior)342 b(pro)34 b(cessor)341 b(m)-34
+b(ust)343 b(pass)g(the)g(\257rst)f(comp)34 b(onen)-34
+b(t)344 b(of)e(its)h(blo)34 b(c)-34 b(k)341 b(of)i(the)f(solution)h(v)
+-34 b(ector)4000 48277 y(to)375 b(its)g(left-hand)h(neigh)-34
+b(b)34 b(or,)381 b(acquire)373 b(the)i(last)g(comp)34
+b(onen)-34 b(t)376 b(of)f(that)h(neigh)-34 b(b)34 b(or's)375
+b(blo)34 b(c)-34 b(k,)379 b(pass)d(the)f(last)4000 49782
+y(comp)34 b(onen)-34 b(t)485 b(of)f(its)f(blo)34 b(c)-34
+b(k)483 b(of)h(the)g(solution)g(v)-34 b(ector)483 b(to)h(its)g(righ)-34
+b(t-hand)485 b(neigh)-34 b(b)34 b(or,)504 b(and)484 b(acquire)e(the)
+4000 51288 y(\257rst)355 b(comp)34 b(onen)-34 b(t)356
+b(of)f(that)h(neigh)-34 b(b)34 b(or's)355 b(blo)34 b(c)-34
+b(k.)522 b(If)355 b(the)g(pro)34 b(cessor)354 b(is)h(the)g(\257rst)g
+(\(0th\))h(or)f(last)g(pro)34 b(cessor,)4000 52793 y(then)405
+b(comm)-34 b(unication)405 b(to)g(the)f(left)g(or)g(righ)-34
+b(t)405 b(\(resp)34 b(ectiv)-34 b(ely\))403 b(is)h(not)h(required.)5882
+54310 y(The)476 b(source)f(\257le)g(for)h(this)g(problem,)493
+b Fq(pvnx.c)p Fs(,)i(is)475 b(listed)h(in)f(App)34 b(endix)476
+b(D.)753 b(It)475 b(uses)h(the)g(Adams)4000 55816 y(\(non-sti\256)94
+b(\))594 b(in)-34 b(tegration)594 b(form)-34 b(ula)593
+b(and)g(functional)g(iteration.)1104 b(This)593 b(problem)f(is)g
+(unrealistically)4000 57321 y(simple,)403 b(but)j(serv)-34
+b(es)403 b(to)i(illustrate)f(use)g(of)g(the)h(parallel)e(v)-34
+b(ersion)404 b(of)g(CV)-34 b(ODE.)5882 58838 y(The)411
+b Fq(pvnx.c)i Fs(\257le)e(b)34 b(egins)411 b(with)h Fq(#include)i
+Fs(lines,)e(whic)-34 b(h)412 b(include)f(lines)f(for)h
+Fq(nvector)p 46524 58838 382 45 v 461 w(parallel)4000
+60343 y Fs(to)350 b(access)f(the)h(parallel)f Fq(N)p
+15959 60343 V 459 w(Vector)i Fs(t)-34 b(yp)34 b(e)350
+b(and)h(related)e(macros,)360 b(and)351 b(for)f Fq(mpi.h)h
+Fs(to)f(access)f(MPI)h(t)-34 b(yp)34 b(es)4000 61849
+y(and)512 b(constan)-34 b(ts.)862 b(F)-101 b(ollo)-34
+b(wing)512 b(that)h(are)e(de\257nitions)i(of)e(problem)h(constan)-34
+b(ts)513 b(and)f(a)g(data)g(blo)34 b(c)-34 b(k)511 b(for)4000
+63354 y(comm)-34 b(unication)470 b(with)f(the)g Fq(f)g
+Fs(routine.)732 b(That)470 b(blo)34 b(c)-34 b(k)468 b(includes)g(the)h
+(n)-34 b(um)g(b)34 b(er)470 b(of)f(PEs,)484 b(the)469
+b(index)g(of)4000 64860 y(the)405 b(lo)34 b(cal)402 b(PE,)i(and)h(the)g
+(MPI)e(comm)-34 b(unicator.)5882 66377 y(The)468 b Fq(main)i
+Fs(program)e(b)34 b(egins)468 b(with)h(MPI)f(calls)f(to)i(initialize)e
+(MPI)g(and)i(to)g(set)f(m)-34 b(ulti-pro)34 b(cessor)4000
+67882 y(en)-34 b(vironmen)g(t)290 b(parameters)f Fq(npes)i
+Fs(\(n)-34 b(um)g(b)34 b(er)290 b(of)g(PEs\))f(and)h
+Fq(my)p 32368 67882 V 459 w(pe)g Fs(\(lo)34 b(cal)288
+b(PE)h(index\).)501 b(The)289 b(lo)34 b(cal)288 b(v)-34
+b(ector)4000 69388 y(length)328 b(is)g(set)f(according)h(to)g
+Fq(npes)h Fs(and)f(the)h(problem)e(size)g Fq(NEQ)i Fs(\(whic)-34
+b(h)329 b(ma)-34 b(y)328 b(or)f(ma)-34 b(y)328 b(not)g(b)34
+b(e)328 b(m)-34 b(ultiple)4000 70893 y(of)384 b Fq(npes)p
+Fs(\).)533 b(The)384 b(v)-67 b(alue)382 b Fq(my)p 16174
+70893 V 459 w(base)j Fs(is)d(the)i(base)g(v)-67 b(alue)382
+b(for)h(computing)i(global)e(indices)g(\(from)h(1)f(to)h
+Fq(NEQ)p Fs(\))4000 72399 y(for)426 b(the)f(lo)34 b(cal)425
+b(v)-34 b(ectors.)602 b(The)426 b(solution)g(v)-34 b(ector)425
+b Fq(u)h Fs(is)f(created)h(with)g(a)f(call)g(to)h Fq(N)p
+41145 72399 V 458 w(VNew)p 44147 72399 V 460 w(Parallel)i
+Fs(and)4000 73904 y(loaded)423 b(with)h(a)f(call)g(to)g
+Fq(SetIC)p Fs(.)i(The)e(calls)g(to)g Fq(CVodeCreate)k
+Fs(and)d Fq(CVodeMalloc)j Fs(sp)34 b(ecify)423 b(a)g
+Fp(cv)-27 b(ode)4000 75409 y Fs(solution)347 b(with)f(the)h(nonsti\256)
+g(metho)34 b(d)346 b(and)h(scalar)e(tolerances.)519 b(The)346
+b(call)f(to)h Fq(CVodeSetFdata)351 b Fs(insures)4000
+76915 y(that)302 b(the)f(p)34 b(oin)-34 b(ter)301 b Fq(data)h
+Fs(is)e(passed)h(to)g(the)g Fq(f)g Fs(routine)g(whenev)-34
+b(er)301 b(it)f(is)h(called.)503 b(A)300 b(heading)i(is)e(prin)-34
+b(ted)302 b(\(if)4000 78420 y(on)318 b(pro)34 b(cessor)317
+b(0\).)510 b(In)318 b(a)g(lo)34 b(op)317 b(o)-34 b(v)g(er)318
+b Fq(tout)h Fs(v)-67 b(alues,)334 b Fq(CVode)319 b Fs(is)e(called,)334
+b(and)319 b(the)f(return)g(v)-67 b(alue)317 b(c)-34 b(hec)g(k)g(ed)318
+b(for)p Black 27394 81741 a(13)p Black eop
+%%Page: 14 18
+14 17 bop Black Black 0 7638 a Fs(errors.)529 b(The)377
+b(max-norm)h(of)g(the)f(solution)h(and)h(the)e(total)h(n)-34
+b(um)g(b)34 b(er)378 b(of)g(time)f(steps)h(so)g(far)f(are)g(prin)-34
+b(ted)0 9143 y(at)446 b(eac)-34 b(h)447 b(output)h(p)34
+b(oin)-34 b(t.)665 b(Finally)-101 b(,)455 b(some)446
+b(statistical)g(coun)-34 b(ters)447 b(are)f(prin)-34
+b(ted,)457 b(memory)445 b(is)h(freed,)456 b(and)0 10649
+y(MPI)404 b(is)g(\257nalized.)1882 12622 y(The)357 b
+Fq(SetIC)i Fs(routine)e(uses)h(the)f(last)g(t)-34 b(w)g(o)359
+b(argumen)-34 b(ts)358 b(passed)g(to)f(it)g(to)g(compute)h(the)g(set)f
+(of)g(global)0 14127 y(indices)404 b(\()p Fq(my)p 5799
+14127 382 45 v 459 w(base)p Fs(+1)h(to)g Fq(my)p 13510
+14127 V 459 w(base+my)p 18421 14127 V 460 w(length)p
+Fs(\))i(corresp)34 b(onding)404 b(to)g(the)h(lo)34 b(cal)403
+b(part)h(of)h(the)f(solution)0 15633 y(v)-34 b(ector)409
+b Fq(u)p Fs(,)j(and)e(then)h(to)f(load)g(the)g(corresp)34
+b(onding)410 b(initial)f(v)-67 b(alues.)555 b(The)411
+b Fq(PrintFinalStats)k Fs(routine)0 17138 y(uses)474
+b Fq(CVodeGet***)k Fs(calls)473 b(to)h(get)g(v)-67 b(arious)474
+b(coun)-34 b(ters,)491 b(and)475 b(then)g(prin)-34 b(ts)475
+b(these.)748 b(The)474 b(coun)-34 b(ters)475 b(are:)0
+18644 y Fq(nst)336 b Fs(\(n)-34 b(um)g(b)34 b(er)337
+b(of)f(steps\),)350 b Fq(nfe)336 b Fs(\(n)-34 b(um)g(b)34
+b(er)337 b(of)f Fq(f)g Fs(ev)-67 b(aluations\),)349 b
+Fq(nni)336 b Fs(\(n)-34 b(um)g(b)34 b(er)337 b(of)f(nonlinear)g
+(iterations\),)0 20149 y Fq(netf)422 b Fs(\(n)-34 b(um)g(b)34
+b(er)421 b(of)g(error)e(test)i(failures\),)j(and)e Fq(ncfn)f
+Fs(\(n)-34 b(um)g(b)34 b(er)422 b(of)f(nonlinear)f(con)-34
+b(v)g(ergence)420 b(failures\).)0 21655 y(This)405 b(routine)f(is)g
+(suitable)h(for)f(general)f(use)h(with)h Fp(cv)-27 b(ode)406
+b Fs(applications)f(to)f(nonsti\256)h(problems.)1882
+23628 y(The)413 b Fq(f)g Fs(function)h(is)f(an)g(implemen)-34
+b(tation)414 b(of)f(Eq.)564 b(\(9\),)415 b(but)f(preceded)e(b)-34
+b(y)414 b(comm)-34 b(unication)413 b(op)34 b(er-)0 25133
+y(ations)379 b(appropriate)g(for)g(the)f(parallel)g(setting.)531
+b(It)378 b(copies)g(the)h(lo)34 b(cal)377 b(v)-34 b(ector)378
+b Fq(u)h Fs(in)-34 b(to)379 b(a)g(larger)e(arra)-34 b(y)378
+b Fq(z)p Fs(,)0 26639 y(shifted)401 b(b)-34 b(y)400 b(1)g(to)g(allo)-34
+b(w)400 b(for)g(the)h(storage)f(of)g(immediate)g(neigh)-34
+b(b)34 b(or)400 b(comp)34 b(onen)-34 b(ts.)538 b(The)401
+b(\257rst)f(and)h(last)0 28144 y(comp)34 b(onen)-34 b(ts)452
+b(of)e Fq(u)h Fs(are)f(sen)-34 b(t)451 b(to)g(neigh)-34
+b(b)34 b(oring)451 b(pro)34 b(cessors)449 b(with)j Fq(MPI)p
+32680 28144 V 459 w(Send)f Fs(calls,)461 b(and)451 b(the)g(immedi-)0
+29650 y(ate)378 b(neigh)-34 b(b)34 b(or)379 b(solution)g(v)-67
+b(alues)378 b(are)f(receiv)-34 b(ed)377 b(from)i(the)g(neigh)-34
+b(b)34 b(or)378 b(pro)34 b(cessors)378 b(with)h Fq(MPI)p
+42060 29650 V 459 w(Recv)h Fs(calls,)0 31155 y(except)413
+b(that)i(zero)e(is)h(loaded)g(in)-34 b(to)414 b Fq(z[0])h
+Fs(or)f Fq(z[my)p 23640 31155 V 459 w(length+1])j Fs(instead)e(if)e(at)
+h(the)g(actual)g(b)34 b(oundary)-101 b(.)0 32661 y(Then)398
+b(the)f(cen)-34 b(tral)397 b(di\256erence)g(expressions)f(are)h(easily)
+f(formed)h(from)g(the)h Fq(z)f Fs(arra)-34 b(y)-101 b(,)398
+b(and)g(loaded)f(in)-34 b(to)0 34166 y(the)405 b(data)f(arra)-34
+b(y)404 b(of)h(the)f Fq(udot)i Fs(v)-34 b(ector.)1882
+36139 y(The)411 b Fq(pvnx.c)h Fs(\257le)e(includes)h(a)f(routine)h
+Fq(check)p 23684 36139 V 460 w(flag)g Fs(that)h(c)-34
+b(hec)g(ks)410 b(the)h(return)f(v)-67 b(alues)410 b(from)h(calls)0
+37645 y(in)404 b Fq(main)p Fs(.)540 b(This)405 b(routine)f(w)-34
+b(as)405 b(written)g(to)f(b)34 b(e)404 b(used)h(b)-34
+b(y)404 b(an)-34 b(y)405 b(parallel)e Fp(sundials)j Fs(application.)
+1882 39618 y(The)380 b(output)i(b)34 b(elo)-34 b(w)380
+b(is)f(for)h Fq(pvnx)h Fs(with)g Fq(MX)f Fs(=)g(10)f(and)i(four)f(pro)
+34 b(cessors.)530 b(V)-101 b(arying)380 b(the)g(n)-34
+b(um)g(b)34 b(er)381 b(of)0 41123 y(pro)34 b(cessors)394
+b(will)g(alter)g(the)i(output,)i(only)c(b)34 b(ecause)395
+b(of)g(roundo\256-lev)-34 b(el)395 b(di\256erences)e(in)i(v)-67
+b(arious)394 b(v)-34 b(ector)0 42629 y(op)34 b(erations.)669
+b(The)449 b(fairly)d(high)j(v)-67 b(alue)447 b(of)h Fq(ncfn)h
+Fs(indicates)e(that)i(this)f(problem)g(is)g(on)g(the)g(b)34
+b(orderline)0 44134 y(of)404 b(b)34 b(eing)404 b(sti\256.)p
+0 48881 18189 45 v 18770 48947 a Fi(pvnx)581 b(sample)h(output)p
+29811 48881 V 0 49681 45 801 v 47956 49681 V 0 51009
+45 1329 v 47956 51009 V 0 52337 V 1425 51939 a(1-D)g
+(advection-diffusion)i(equation,)f(mesh)e(size)h(=)f(10)p
+47956 52337 V 0 53666 V 47956 53666 V 0 54994 V 1425
+54596 a(Number)i(of)e(PEs)h(=)1743 b(4)p 47956 54994
+V 0 56322 V 47956 56322 V 0 57651 V 844 57252 a(At)582
+b(t)f(=)g(0.00)1163 b(max.norm\(u\))583 b(=)1162 b(1.569909e+01)j(nst)
+581 b(=)1744 b(0)p 47956 57651 V 0 58979 V 844 58581
+a(At)582 b(t)f(=)g(0.50)1163 b(max.norm\(u\))583 b(=)1162
+b(3.052881e+00)j(nst)581 b(=)g(113)p 47956 58979 V 0
+60307 V 844 59909 a(At)h(t)f(=)g(1.00)1163 b(max.norm\(u\))583
+b(=)1162 b(8.753188e-01)j(nst)581 b(=)g(191)p 47956 60307
+V 0 61636 V 844 61237 a(At)h(t)f(=)g(1.50)1163 b(max.norm\(u\))583
+b(=)1162 b(2.494926e-01)j(nst)581 b(=)g(265)p 47956 61636
+V 0 62964 V 844 62566 a(At)h(t)f(=)g(2.00)1163 b(max.norm\(u\))583
+b(=)1162 b(7.109707e-02)j(nst)581 b(=)g(339)p 47956 62964
+V 0 64293 V 844 63894 a(At)h(t)f(=)g(2.50)1163 b(max.norm\(u\))583
+b(=)1162 b(2.026223e-02)j(nst)581 b(=)g(418)p 47956 64293
+V 0 65621 V 844 65222 a(At)h(t)f(=)g(3.00)1163 b(max.norm\(u\))583
+b(=)1162 b(5.772861e-03)j(nst)581 b(=)g(481)p 47956 65621
+V 0 66949 V 844 66551 a(At)h(t)f(=)g(3.50)1163 b(max.norm\(u\))583
+b(=)1162 b(1.650209e-03)j(nst)581 b(=)g(551)p 47956 66949
+V 0 68278 V 844 67879 a(At)h(t)f(=)g(4.00)1163 b(max.norm\(u\))583
+b(=)1162 b(4.718756e-04)j(nst)581 b(=)g(622)p 47956 68278
+V 0 69606 V 844 69207 a(At)h(t)f(=)g(4.50)1163 b(max.norm\(u\))583
+b(=)1162 b(1.360229e-04)j(nst)581 b(=)g(695)p 47956 69606
+V 0 70934 V 844 70536 a(At)h(t)f(=)g(5.00)1163 b(max.norm\(u\))583
+b(=)1162 b(4.044654e-05)j(nst)581 b(=)g(761)p 47956 70934
+V 0 72263 V 47956 72263 V 0 73591 V 844 73192 a(Final)h(Statistics:)p
+47956 73591 V 0 74919 V 47956 74919 V 0 76248 V 844 75849
+a(nst)g(=)f(761)2906 b(nfe)1163 b(=)581 b(1380)2326 b(nni)581
+b(=)h(0)4068 b(ncfn)581 b(=)h(128)2906 b(netf)582 b(=)f(5)p
+47956 76248 V 0 77576 V 47956 77576 V 0 78376 45 801
+v 47956 78376 V 0 78420 48001 45 v Black 23394 81741
+a Fs(14)p Black eop
+%%Page: 15 19
+15 18 bop Black Black 4000 7638 a Fn(3.2)1495 b(A)499
+b(user)g(preconditioner)h(example:)665 b Fm(pvkx)4000
+9926 y Fs(As)522 b(an)h(example)e(of)h(using)h Fp(cv)-27
+b(ode)523 b Fs(with)g(the)g(Krylo)-34 b(v)521 b(linear)g(solv)-34
+b(er)522 b Fp(cvspgmr)h Fs(and)f(the)h(parallel)4000
+11432 y(MPI)444 b Fp(nvector)p 11992 11432 403 45 v 484
+w(p)-81 b(arallel)446 b Fs(mo)34 b(dule,)453 b(w)-34
+b(e)445 b(describ)34 b(e)443 b(a)h(test)g(problem)g(based)h(on)f(the)g
+(system)g(PDEs)4000 12937 y(giv)-34 b(en)463 b(ab)34
+b(o)-34 b(v)g(e)463 b(for)f(the)i Fq(cvkx)g Fs(example.)714
+b(As)462 b(b)34 b(efore,)477 b(w)-34 b(e)463 b(discretize)f(the)h(PDE)g
+(system)f(with)i(cen)-34 b(tral)4000 14443 y(di\256erencing,)471
+b(to)458 b(obtain)h(an)f(ODE)f(system)671 b(_)-550 b
+Fl(u)427 b Fs(=)f Fl(f)130 b Fs(\()p Fl(t;)202 b(u)p
+Fs(\))459 b(represen)-34 b(ting)458 b(\(4\).)700 b(But)459
+b(in)e(this)i(case,)471 b(the)4000 15948 y(discrete)445
+b(solution)i(v)-34 b(ector)445 b(is)g(distributed)i(o)-34
+b(v)g(er)446 b(man)-34 b(y)446 b(pro)34 b(cessors.)663
+b(Sp)34 b(eci\257cally)-101 b(,)454 b(w)-34 b(e)446 b(ma)-34
+b(y)446 b(think)h(of)4000 17454 y(the)373 b(pro)34 b(cessors)372
+b(as)h(b)34 b(eing)373 b(laid)f(out)i(in)e(a)h(rectangle,)378
+b(and)c(eac)-34 b(h)373 b(pro)34 b(cessor)372 b(b)34
+b(eing)372 b(assigned)h(a)g(subgrid)4000 18959 y(of)419
+b(size)f Fq(MXSUB)p Fo(\243)p Fq(MYSUB)423 b Fs(of)c(the)g
+Fl(x)279 b Fo(\241)g Fl(y)463 b Fs(grid.)583 b(If)419
+b(there)f(are)h Fq(NPEX)h Fs(pro)34 b(cessors)418 b(in)h(the)h
+Fl(x)e Fs(direction)h(and)4000 20465 y Fq(NPEY)337 b
+Fs(pro)34 b(cessors)336 b(in)g(the)g Fl(y)380 b Fs(direction,)349
+b(then)336 b(the)h(o)-34 b(v)g(erall)335 b(grid)h(size)f(is)h
+Fq(MX)p Fo(\243)p Fq(MY)h Fs(with)g Fq(MX)p Fs(=)p Fq(NPEX)p
+Fo(\243)p Fq(MXSUB)4000 21970 y Fs(and)405 b Fq(MY)p
+Fs(=)p Fq(NPEY)p Fo(\243)p Fq(MYSUB)p Fs(,)i(and)e(the)g(size)e(of)h
+(the)h(ODE)f(system)g(is)g(2)p Fo(\242)p Fq(MX)p Fo(\242)p
+Fq(MY)p Fs(.)5882 23476 y(T)-101 b(o)509 b(compute)g
+Fl(f)639 b Fs(in)508 b(this)h(setting,)535 b(the)508
+b(pro)34 b(cessors)508 b(pass)h(and)g(receiv)-34 b(e)507
+b(information)i(as)g(follo)-34 b(ws.)4000 24981 y(The)515
+b(solution)g(comp)34 b(onen)-34 b(ts)515 b(for)g(the)f(b)34
+b(ottom)516 b(ro)-34 b(w)514 b(of)h(grid)f(p)34 b(oin)-34
+b(ts)515 b(in)g(the)f(curren)-34 b(t)515 b(pro)34 b(cessor)513
+b(are)4000 26486 y(passed)416 b(to)g(the)f(pro)34 b(cessor)415
+b(b)34 b(elo)-34 b(w)415 b(it)g(and)h(the)g(solution)g(for)f(the)h(top)
+g(ro)-34 b(w)415 b(of)h(grid)f(p)34 b(oin)-34 b(ts)416
+b(is)f(receiv)-34 b(ed)4000 27992 y(from)377 b(the)g(pro)34
+b(cessor)377 b(b)34 b(elo)-34 b(w)377 b(the)g(curren)-34
+b(t)377 b(pro)34 b(cessor.)529 b(The)377 b(solution)h(for)f(the)g(top)h
+(ro)-34 b(w)377 b(of)g(grid)g(p)34 b(oin)-34 b(ts)4000
+29497 y(for)522 b(the)h(curren)-34 b(t)522 b(pro)34 b(cessor)521
+b(is)h(sen)-34 b(t)523 b(to)f(the)h(pro)34 b(cessor)521
+b(ab)34 b(o)-34 b(v)g(e)522 b(the)h(curren)-34 b(t)522
+b(pro)34 b(cessor,)551 b(while)521 b(the)4000 31003 y(solution)478
+b(for)g(the)g(b)34 b(ottom)478 b(ro)-34 b(w)478 b(of)g(grid)g(p)34
+b(oin)-34 b(ts)478 b(is)f(receiv)-34 b(ed)477 b(from)g(that)i(pro)34
+b(cessor)477 b(b)-34 b(y)478 b(the)g(curren)-34 b(t)4000
+32508 y(pro)34 b(cessor.)530 b(Similarly)380 b(the)i(solution)g(for)g
+(the)f(\257rst)h(column)g(of)g(grid)f(p)34 b(oin)-34
+b(ts)382 b(is)f(sen)-34 b(t)382 b(from)g(the)g(curren)-34
+b(t)4000 34014 y(pro)34 b(cessor)349 b(to)g(the)h(pro)34
+b(cessor)348 b(to)i(its)f(left)h(and)g(the)f(last)h(column)f(of)h(grid)
+f(p)34 b(oin)-34 b(ts)350 b(is)f(receiv)-34 b(ed)348
+b(from)i(that)4000 35519 y(pro)34 b(cessor)345 b(b)-34
+b(y)346 b(the)g(curren)-34 b(t)346 b(pro)34 b(cessor.)518
+b(The)346 b(comm)-34 b(unication)346 b(for)g(the)g(solution)g(at)g(the)
+g(righ)-34 b(t)346 b(edge)g(of)4000 37025 y(the)406 b(pro)34
+b(cessor)404 b(is)h(similar.)541 b(If)406 b(this)f(is)g(the)h(last)g
+(pro)34 b(cessor)404 b(in)i(a)f(particular)g(direction,)g(then)h
+(message)4000 38530 y(passing)f(and)g(receiving)d(are)i(b)-34
+b(ypassed)405 b(for)f(that)i(direction.)5882 40036 y(The)521
+b(co)34 b(de)521 b(listing)g(for)g(this)g(example)g(is)f(giv)-34
+b(en)521 b(in)g(App)34 b(endix)522 b(E.)889 b(The)521
+b(purp)34 b(ose)522 b(of)f(this)g(co)34 b(de)4000 41541
+y(is)453 b(to)g(pro)-34 b(vide)453 b(a)h(more)e(realistic)g(example)h
+(than)h(that)g(in)f Fq(pvnx)p Fs(,)467 b(and)454 b(to)f(pro)-34
+b(vide)453 b(a)g(template)h(for)f(a)4000 43047 y(sti\256)448
+b(ODE)f(system)h(arising)g(from)g(a)g(PDE)g(system.)669
+b(The)449 b(solution)f(metho)34 b(d)449 b(is)f(BDF)f(with)i(Newton)4000
+44552 y(iteration)550 b(and)i Fp(spgmr)p Fs(.)977 b(The)551
+b(left)f(preconditioner)g(is)g(the)h(blo)34 b(c)-34 b(k-diagonal)551
+b(part)f(of)h(the)g(Newton)4000 46058 y(matrix,)387 b(with)e(2)228
+b Fo(\243)g Fs(2)384 b(blo)34 b(c)-34 b(ks,)387 b(and)d(the)g(corresp)
+34 b(onding)384 b(diagonal)g(blo)34 b(c)-34 b(ks)383
+b(of)h(the)g(Jacobian)g(are)f(sa)-34 b(v)g(ed)4000 47563
+y(eac)g(h)404 b(time)g(the)h(preconditioner)f(is)g(generated,)g(for)g
+(re-use)g(later)f(under)i(certain)f(conditions.)5882
+49068 y(The)481 b(organization)g(of)g(the)h Fq(pvkx)g
+Fs(program)f(deserv)-34 b(es)480 b(some)h(commen)-34
+b(ts.)769 b(The)481 b(righ)-34 b(t-hand)483 b(side)4000
+50574 y(routine)360 b Fq(f)g Fs(calls)f(t)-34 b(w)g(o)361
+b(other)f(routines:)517 b Fq(ucomm)p Fs(,)370 b(whic)-34
+b(h)360 b(carries)e(out)j(in)-34 b(ter-pro)34 b(cessor)359
+b(comm)-34 b(unication;)4000 52079 y(and)365 b Fq(fcalc)p
+Fs(,)373 b(whic)-34 b(h)365 b(op)34 b(erates)363 b(on)i(lo)34
+b(cal)362 b(data)j(only)f(and)g(con)-34 b(tains)365 b(the)f(actual)g
+(calculation)g(of)g Fl(f)130 b Fs(\()p Fl(t;)202 b(u)p
+Fs(\).)4000 53585 y(The)364 b Fq(ucomm)h Fs(function)g(in)e(turn)i
+(calls)e(three)g(routines)h(whic)-34 b(h)364 b(do,)372
+b(resp)34 b(ectiv)-34 b(ely)-101 b(,)370 b(non-blo)34
+b(c)-34 b(king)364 b(receiv)-34 b(e)4000 55090 y(op)34
+b(erations,)379 b(blo)34 b(c)-34 b(king)372 b(send)g(op)34
+b(erations,)379 b(and)373 b(receiv)-34 b(e-w)g(aiting.)527
+b(All)372 b(three)g(use)g(MPI,)g(and)h(transmit)4000
+56596 y(data)443 b(from)f(the)h(lo)34 b(cal)441 b Fq(u)h
+Fs(v)-34 b(ector)442 b(in)-34 b(to)443 b(a)f(lo)34 b(cal)440
+b(w)-34 b(orking)443 b(arra)-34 b(y)442 b Fq(uext)p Fs(,)452
+b(an)443 b(extended)f(cop)-34 b(y)442 b(of)h Fq(u)p Fs(.)652
+b(The)4000 58101 y Fq(fcalc)306 b Fs(function)g(copies)d
+Fq(u)i Fs(in)-34 b(to)305 b Fq(uext)p Fs(,)325 b(so)305
+b(that)g(the)g(calculation)f(of)g Fl(f)130 b Fs(\()p
+Fl(t;)202 b(u)p Fs(\))305 b(can)g(b)34 b(e)304 b(done)g(con)-34
+b(v)g(enien)g(tly)4000 59607 y(b)g(y)405 b(op)34 b(erations)404
+b(on)g Fq(uext)i Fs(only)-101 b(.)538 b(Most)405 b(other)f(features)h
+(of)f Fq(pvkx.c)i Fs(are)e(the)h(same)f(as)g(in)g Fq(cvkx.c)p
+Fs(.)5882 61112 y(The)351 b(follo)-34 b(wing)351 b(is)f(a)g(sample)h
+(output)h(from)f Fq(pvkx)p Fs(,)362 b(for)350 b(four)h(pro)34
+b(cessors)350 b(\(in)h(a)f(2)162 b Fo(\243)g Fs(2)350
+b(arra)-34 b(y\))351 b(with)g(a)4000 62618 y(5)203 b
+Fo(\243)g Fs(5)370 b(subgrid)i(on)f(eac)-34 b(h.)528
+b(The)371 b(output)i(will)d(v)-67 b(ary)370 b(sligh)-34
+b(tly)371 b(if)g(the)g(n)-34 b(um)g(b)34 b(er)372 b(of)f(pro)34
+b(cessors)371 b(is)f(c)-34 b(hanged.)p 4000 64735 18189
+45 v 22770 64801 a Fi(pvkx)581 b(sample)h(output)p 33811
+64735 V 4000 65535 45 801 v 51956 65535 V 4000 66864
+45 1329 v 51956 66864 V 4000 68192 V 4844 67794 a(2-species)h(diurnal)f
+(advection-diffusion)i(problem)p 51956 68192 V 4000 69520
+V 51956 69520 V 4000 70849 V 4844 70450 a(t)e(=)f(7.20e+03)1745
+b(no.)581 b(steps)h(=)f(219)1744 b(order)582 b(=)f(5)1744
+b(stepsize)582 b(=)g(1.59e+02)p 51956 70849 V 4000 72177
+V 4844 71779 a(At)g(bottom)g(left:)1163 b(c1,)581 b(c2)h(=)2325
+b(1.047e+04)h(2.527e+11)p 51956 72177 V 4000 73505 V
+4844 73107 a(At)582 b(top)f(right:)2326 b(c1,)581 b(c2)h(=)2325
+b(1.119e+04)h(2.700e+11)p 51956 73505 V 4000 74834 V
+51956 74834 V 4000 76162 V 4844 75764 a(t)582 b(=)f(1.44e+04)1745
+b(no.)581 b(steps)h(=)f(251)1744 b(order)582 b(=)f(5)1744
+b(stepsize)582 b(=)g(3.77e+02)p 51956 76162 V 4000 77491
+V 4844 77092 a(At)g(bottom)g(left:)1163 b(c1,)581 b(c2)h(=)2325
+b(6.659e+06)h(2.582e+11)p 51956 77491 V 4000 78819 V
+4844 78420 a(At)582 b(top)f(right:)2326 b(c1,)581 b(c2)h(=)2325
+b(7.301e+06)h(2.833e+11)p 51956 78819 V Black 27394 81741
+a Fs(15)p Black eop
+%%Page: 16 20
+16 19 bop Black Black 0 8037 45 1329 v 47956 8037 V 0
+9365 V 844 8966 a Fi(t)582 b(=)f(2.16e+04)1745 b(no.)581
+b(steps)h(=)f(277)1744 b(order)582 b(=)f(5)1744 b(stepsize)582
+b(=)g(2.75e+02)p 47956 9365 V 0 10693 V 844 10295 a(At)g(bottom)g
+(left:)1163 b(c1,)581 b(c2)h(=)2325 b(2.665e+07)h(2.993e+11)p
+47956 10693 V 0 12022 V 844 11623 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(2.931e+07)h(3.313e+11)p 47956
+12022 V 0 13350 V 47956 13350 V 0 14678 V 844 14280 a(t)582
+b(=)f(2.88e+04)1745 b(no.)581 b(steps)h(=)f(306)1744
+b(order)582 b(=)f(4)1744 b(stepsize)582 b(=)g(2.06e+02)p
+47956 14678 V 0 16007 V 844 15608 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(8.702e+06)h(3.380e+11)p 47956
+16007 V 0 17335 V 844 16936 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(9.650e+06)h(3.751e+11)p 47956
+17335 V 0 18663 V 47956 18663 V 0 19992 V 844 19593 a(t)582
+b(=)f(3.60e+04)1745 b(no.)581 b(steps)h(=)f(347)1744
+b(order)582 b(=)f(4)1744 b(stepsize)582 b(=)g(6.76e+01)p
+47956 19992 V 0 21320 V 844 20922 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(1.404e+04)h(3.387e+11)p 47956
+21320 V 0 22648 V 844 22250 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(1.561e+04)h(3.765e+11)p 47956
+22648 V 0 23977 V 47956 23977 V 0 25305 V 844 24907 a(t)582
+b(=)f(4.32e+04)1745 b(no.)581 b(steps)h(=)f(405)1744
+b(order)582 b(=)f(4)1744 b(stepsize)582 b(=)g(3.31e+02)p
+47956 25305 V 0 26633 V 844 26235 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(3.497e-08)h(3.382e+11)p 47956
+26633 V 0 27962 V 844 27563 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(3.674e-07)h(3.804e+11)p 47956
+27962 V 0 29290 V 47956 29290 V 0 30619 V 844 30220 a(t)582
+b(=)f(5.04e+04)1745 b(no.)581 b(steps)h(=)f(419)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(3.76e+02)p
+47956 30619 V 0 31947 V 844 31548 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(6.654e-11)h(3.358e+11)p 47956
+31947 V 0 33275 V 844 32877 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(3.781e-10)h(3.864e+11)p 47956
+33275 V 0 34604 V 47956 34604 V 0 35932 V 844 35533 a(t)582
+b(=)f(5.76e+04)1745 b(no.)581 b(steps)h(=)f(432)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(3.80e+02)p
+47956 35932 V 0 37260 V 844 36862 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)1743 b(-7.307e-11)2327 b(3.320e+11)p
+47956 37260 V 0 38589 V 844 38190 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)1743 b(-4.036e-10)2327 b(3.909e+11)p
+47956 38589 V 0 39917 V 47956 39917 V 0 41245 V 844 40847
+a(t)582 b(=)f(6.48e+04)1745 b(no.)581 b(steps)h(=)f(446)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(6.93e+02)p
+47956 41245 V 0 42574 V 844 42175 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)1743 b(-5.582e-10)2327 b(3.313e+11)p
+47956 42574 V 0 43902 V 844 43504 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)1743 b(-3.105e-09)2327 b(3.963e+11)p
+47956 43902 V 0 45230 V 47956 45230 V 0 46559 V 844 46160
+a(t)582 b(=)f(7.20e+04)1745 b(no.)581 b(steps)h(=)f(457)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(6.93e+02)p
+47956 46559 V 0 47887 V 844 47489 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)1743 b(-2.172e-11)2327 b(3.330e+11)p
+47956 47887 V 0 49215 V 844 48817 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)1743 b(-1.205e-10)2327 b(4.039e+11)p
+47956 49215 V 0 50544 V 47956 50544 V 0 51872 V 844 51474
+a(t)582 b(=)f(7.92e+04)1745 b(no.)581 b(steps)h(=)f(467)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(6.93e+02)p
+47956 51872 V 0 53201 V 844 52802 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(2.011e-12)h(3.334e+11)p 47956
+53201 V 0 54529 V 844 54130 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(1.118e-11)h(4.120e+11)p 47956
+54529 V 0 55857 V 47956 55857 V 0 57186 V 844 56787 a(t)582
+b(=)f(8.64e+04)1745 b(no.)581 b(steps)h(=)f(478)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(6.93e+02)p
+47956 57186 V 0 58514 V 844 58115 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(1.871e-15)h(3.352e+11)p 47956
+58514 V 0 59842 V 844 59444 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(1.007e-14)h(4.163e+11)p 47956
+59842 V 0 61171 V 47956 61171 V 0 62499 V 47956 62499
+V 0 63827 V 844 63429 a(Final)582 b(Statistics:)p 47956
+63827 V 0 65156 V 47956 65156 V 0 66484 V 844 66086 a(lenrw)1745
+b(=)1162 b(2000)2906 b(leniw)582 b(=)2325 b(80)p 47956
+66484 V 0 67812 V 844 67414 a(llrw)h(=)1162 b(2046)2906
+b(lliw)1163 b(=)2325 b(80)p 47956 67812 V 0 69141 V 844
+68742 a(nst)2907 b(=)1743 b(478)p 47956 69141 V 0 70469
+V 844 70071 a(nfe)2907 b(=)1743 b(611)2906 b(nfel)1163
+b(=)1744 b(650)p 47956 70469 V 0 71797 V 844 71399 a(nni)2907
+b(=)1743 b(608)2906 b(nli)1744 b(=)g(650)p 47956 71797
+V 0 73126 V 844 72727 a(nsetups)583 b(=)2324 b(80)2906
+b(netf)1163 b(=)2325 b(28)p 47956 73126 V 0 74454 V 844
+74056 a(npe)2907 b(=)e(9)h(nps)1744 b(=)1163 b(1203)p
+47956 74454 V 0 75782 V 844 75384 a(ncfn)2326 b(=)2905
+b(0)h(ncfl)1163 b(=)2906 b(1)p 47956 75782 V 0 77111
+V 47956 77111 V 0 77911 45 801 v 47956 77911 V 0 77955
+48001 45 v Black 23394 81741 a Fs(16)p Black eop
+%%Page: 17 21
+17 20 bop Black Black 4000 7638 a Fn(3.3)1495 b(A)499
+b(CVBBDPRE)g(preconditioner)h(example:)665 b Fm(pvkxb)4000
+10060 y Fs(In)370 b(this)h(example,)k Fq(pvkxb)p Fs(,)k(w)-34
+b(e)370 b(solv)-34 b(e)370 b(the)g(same)g(problem)g(in)g
+Fq(pvkx)h Fs(ab)34 b(o)-34 b(v)g(e,)377 b(but)371 b(instead)g(of)f
+(supplying)4000 11565 y(the)396 b(preconditioner,)h(w)-34
+b(e)396 b(use)g(the)g Fp(cvbbdpre)g Fs(mo)34 b(dule,)397
+b(whic)-34 b(h)397 b(generates)e(and)i(uses)e(a)h(band-blo)34
+b(c)-34 b(k-)4000 13071 y(diagonal)587 b(preconditioner.)1087
+b(The)587 b(half-bandwidths)j(of)d(the)g(Jacobian)g(blo)34
+b(c)-34 b(k)587 b(on)g(eac)-34 b(h)587 b(pro)34 b(cessor)4000
+14576 y(are)449 b(b)34 b(oth)450 b(equal)f(to)h(2)p Fo(\242)p
+Fq(MXSUB)p Fs(,)g(and)g(that)h(is)e(the)h(v)-67 b(alue)449
+b(supplied)h(as)f Fq(mudq)i Fs(and)f Fq(mldq)h Fs(in)e(the)h(call)f(to)
+4000 16082 y Fq(CVBBDPrecAlloc)p Fs(.)508 b(But)298 b(in)f(order)h(to)f
+(reduce)h(storage)f(and)i(computation)g(costs)f(for)f(preconditioning,)
+4000 17587 y(w)-34 b(e)300 b(supply)h(the)f(v)-67 b(alues)299
+b Fq(mukeep)j Fs(=)d Fq(mlkeep)j Fs(=)d(2)h(\(=)g Fq(NVARS)p
+Fs(\))i(as)d(the)i(half-bandwidths)i(of)d(the)g(retained)4000
+19093 y(band)345 b(matrix)f(blo)34 b(c)-34 b(ks.)518
+b(This)345 b(means)f(that)h(the)g(Jacobian)f(elemen)-34
+b(ts)344 b(are)g(computed)h(with)g(a)f(di\256erence)4000
+20598 y(quotien)-34 b(t)520 b(sc)-34 b(heme)520 b(using)g(the)g(true)f
+(bandwidth)j(of)e(the)g(blo)34 b(c)-34 b(k,)547 b(but)521
+b(only)e(a)h(narro)-34 b(w)520 b(band)g(matrix)4000 22104
+y(\(bandwidth)407 b(5\))d(is)g(k)-34 b(ept)405 b(as)f(the)h
+(preconditioner.)538 b(The)405 b(source)f(is)g(listed)g(in)g(App)34
+b(endix)404 b(F.)5882 23678 y(As)409 b(in)g Fq(pvkx.c)p
+Fs(,)j(the)d Fq(f)g Fs(routine)g(in)g Fq(pvkxb.c)j Fs(simply)c(calls)g
+(a)h(comm)-34 b(unication)410 b(routine,)g Fq(fucomm)p
+Fs(,)4000 25183 y(and)448 b(then)f(a)g(strictly)f(computational)i
+(routine,)458 b Fq(flocal)p Fs(.)668 b(Ho)-34 b(w)g(ev)g(er,)458
+b(the)447 b(call)f(to)h Fq(CVBBDPrecAlloc)4000 26689
+y Fs(sp)34 b(eci\257es)464 b(the)h(pair)f(of)g(routines)h(to)g(b)34
+b(e)464 b(called)g(as)g Fq(ucomm)i Fs(and)f Fq(flocal)p
+Fs(,)481 b(where)465 b Fq(ucomm)h Fs(is)e(an)g Fe(empty)4000
+28194 y Fs(routine.)530 b(This)377 b(is)f(b)34 b(ecause)376
+b(eac)-34 b(h)376 b(call)g(b)-34 b(y)377 b(the)f(solv)-34
+b(er)376 b(to)h Fq(ucomm)h Fs(is)e(preceded)g(b)-34 b(y)377
+b(a)f(call)g(to)h Fq(f)f Fs(with)h(the)4000 29700 y(same)g
+Fq(\(t,u\))h Fs(argumen)-34 b(ts,)383 b(and)378 b(therefore)e(the)h
+(comm)-34 b(unication)378 b(needed)f(for)g Fq(flocal)i
+Fs(in)e(the)g(solv)-34 b(er's)4000 31205 y(calls)403
+b(to)i(it)f(ha)-34 b(v)g(e)405 b(already)e(b)34 b(een)404
+b(done.)5882 32779 y(In)468 b Fq(pvkxb.c)p Fs(,)486 b(the)468
+b(problem)g(is)g(solv)-34 b(ed)468 b(t)-34 b(wice)468
+b(|)g(\257rst)h(with)g(preconditioning)g(on)f(the)g(left,)484
+b(and)4000 34285 y(then)311 b(on)f(the)h(righ)-34 b(t.)507
+b(Th)-34 b(us)312 b(prior)d(to)i(the)f(second)h(solution,)329
+b(calls)309 b(are)g(made)i(to)f(reset)g(the)g(initial)g(v)-67
+b(alues)4000 35790 y(\()p Fq(SetInitialProfiles)p Fs(\),)478
+b(the)458 b(main)g(solv)-34 b(er)458 b(memory)f(\()p
+Fq(CVodeReInit)p Fs(\),)475 b(the)459 b Fp(cvbbdpre)g
+Fs(memory)4000 37296 y(\()p Fq(CVBBDPrecReInit)p Fs(\),)410
+b(as)404 b(w)-34 b(ell)404 b(as)g(the)h(preconditioner)f(t)-34
+b(yp)34 b(e)404 b(\()p Fq(CVSpgmrSetPrecType)p Fs(\).)5882
+38870 y(Sample)371 b(output)i(from)e Fq(pvkxb)i Fs(follo)-34
+b(ws,)378 b(again)371 b(using)g(5)204 b Fo(\243)e Fs(5)371
+b(subgrids)h(on)f(a)g(2)203 b Fo(\243)g Fs(2)371 b(pro)34
+b(cessor)370 b(grid.)4000 40375 y(The)510 b(p)34 b(erformance)508
+b(of)i(the)f(preconditioner,)535 b(as)510 b(measured)f(b)-34
+b(y)509 b(the)h(n)-34 b(um)g(b)34 b(er)510 b(of)g(Krylo)-34
+b(v)508 b(iterations)4000 41881 y(p)34 b(er)359 b(Newton)i(iteration,)
+368 b Fq(nli/nni)p Fs(,)j(is)359 b(v)-34 b(ery)359 b(close)g(to)h(that)
+g(of)g Fq(pvkx)h Fs(when)g(preconditioning)f(is)g(on)g(the)4000
+43386 y(left,)404 b(but)h(sligh)-34 b(tly)404 b(p)34
+b(o)g(orer)403 b(when)i(it)g(is)e(on)i(the)f(righ)-34
+b(t.)p 4000 46138 17898 45 v 22479 46204 a Fi(pvkxb)582
+b(sample)g(output)p 34102 46138 V 4000 46938 45 801 v
+51956 46938 V 4000 48267 45 1329 v 51956 48267 V 4000
+49595 V 4844 49197 a(2-species)h(diurnal)f(advection-diffusion)i
+(problem)p 51956 49595 V 4000 50923 V 6007 50525 a(10)d(by)h(10)f(mesh)
+h(on)f(4)g(processors)p 51956 50923 V 4000 52252 V 6007
+51853 a(Using)h(CVBBDPRE)g(preconditioner)h(module)p
+51956 52252 V 4000 53580 V 7169 53182 a(Difference-quotient)h
+(half-bandwidths)f(are)f(mudq)g(=)f(10,)1163 b(mldq)581
+b(=)h(10)p 51956 53580 V 4000 54909 V 7169 54510 a(Retained)g(band)g
+(block)g(half-bandwidths)h(are)f(mukeep)g(=)f(2,)1163
+b(mlkeep)582 b(=)f(2)p 51956 54909 V 4000 56237 V 51956
+56237 V 4000 57565 V 4844 57167 a(Preconditioner)j(type)d(is:)1163
+b(jpre)582 b(=)f(PREC_LEFT)p 51956 57565 V 4000 58894
+V 51956 58894 V 4000 60222 V 4844 59823 a(t)h(=)f(7.20e+03)1745
+b(no.)581 b(steps)h(=)f(190)1744 b(order)582 b(=)f(5)1744
+b(stepsize)582 b(=)g(1.61e+02)p 51956 60222 V 4000 61550
+V 4844 61152 a(At)g(bottom)g(left:)1163 b(c1,)581 b(c2)h(=)2325
+b(1.047e+04)h(2.527e+11)p 51956 61550 V 4000 62879 V
+4844 62480 a(At)582 b(top)f(right:)2326 b(c1,)581 b(c2)h(=)2325
+b(1.119e+04)h(2.700e+11)p 51956 62879 V 4000 64207 V
+51956 64207 V 4000 65535 V 4844 65137 a(t)582 b(=)f(1.44e+04)1745
+b(no.)581 b(steps)h(=)f(221)1744 b(order)582 b(=)f(5)1744
+b(stepsize)582 b(=)g(3.85e+02)p 51956 65535 V 4000 66864
+V 4844 66465 a(At)g(bottom)g(left:)1163 b(c1,)581 b(c2)h(=)2325
+b(6.659e+06)h(2.582e+11)p 51956 66864 V 4000 68192 V
+4844 67794 a(At)582 b(top)f(right:)2326 b(c1,)581 b(c2)h(=)2325
+b(7.301e+06)h(2.833e+11)p 51956 68192 V 4000 69520 V
+51956 69520 V 4000 70849 V 4844 70450 a(t)582 b(=)f(2.16e+04)1745
+b(no.)581 b(steps)h(=)f(247)1744 b(order)582 b(=)f(5)1744
+b(stepsize)582 b(=)g(3.00e+02)p 51956 70849 V 4000 72177
+V 4844 71779 a(At)g(bottom)g(left:)1163 b(c1,)581 b(c2)h(=)2325
+b(2.665e+07)h(2.993e+11)p 51956 72177 V 4000 73505 V
+4844 73107 a(At)582 b(top)f(right:)2326 b(c1,)581 b(c2)h(=)2325
+b(2.931e+07)h(3.313e+11)p 51956 73505 V 4000 74834 V
+51956 74834 V 4000 76162 V 4844 75764 a(t)582 b(=)f(2.88e+04)1745
+b(no.)581 b(steps)h(=)f(290)1744 b(order)582 b(=)f(3)1744
+b(stepsize)582 b(=)g(1.52e+02)p 51956 76162 V 4000 77491
+V 4844 77092 a(At)g(bottom)g(left:)1163 b(c1,)581 b(c2)h(=)2325
+b(8.702e+06)h(3.380e+11)p 51956 77491 V 4000 78819 V
+4844 78420 a(At)582 b(top)f(right:)2326 b(c1,)581 b(c2)h(=)2325
+b(9.650e+06)h(3.751e+11)p 51956 78819 V Black 27394 81741
+a Fs(17)p Black eop
+%%Page: 18 22
+18 21 bop Black Black 0 8037 45 1329 v 47956 8037 V 0
+9365 V 844 8966 a Fi(t)582 b(=)f(3.60e+04)1745 b(no.)581
+b(steps)h(=)f(342)1744 b(order)582 b(=)f(4)1744 b(stepsize)582
+b(=)g(9.02e+01)p 47956 9365 V 0 10693 V 844 10295 a(At)g(bottom)g
+(left:)1163 b(c1,)581 b(c2)h(=)2325 b(1.404e+04)h(3.387e+11)p
+47956 10693 V 0 12022 V 844 11623 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(1.561e+04)h(3.765e+11)p 47956
+12022 V 0 13350 V 47956 13350 V 0 14678 V 844 14280 a(t)582
+b(=)f(4.32e+04)1745 b(no.)581 b(steps)h(=)f(404)1744
+b(order)582 b(=)f(4)1744 b(stepsize)582 b(=)g(5.15e+02)p
+47956 14678 V 0 16007 V 844 15608 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)1743 b(-1.454e-07)2327 b(3.382e+11)p
+47956 16007 V 0 17335 V 844 16936 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)1743 b(-1.611e-07)2327 b(3.804e+11)p
+47956 17335 V 0 18663 V 47956 18663 V 0 19992 V 844 19593
+a(t)582 b(=)f(5.04e+04)1745 b(no.)581 b(steps)h(=)f(420)1744
+b(order)582 b(=)f(4)1744 b(stepsize)582 b(=)g(3.57e+02)p
+47956 19992 V 0 21320 V 844 20922 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(5.214e-11)h(3.358e+11)p 47956
+21320 V 0 22648 V 844 22250 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)1743 b(-1.638e-11)2327 b(3.864e+11)p
+47956 22648 V 0 23977 V 47956 23977 V 0 25305 V 844 24907
+a(t)582 b(=)f(5.76e+04)1745 b(no.)581 b(steps)h(=)f(433)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(3.98e+02)p
+47956 25305 V 0 26633 V 844 26235 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)1743 b(-1.024e-11)2327 b(3.320e+11)p
+47956 26633 V 0 27962 V 844 27563 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(2.802e-10)h(3.909e+11)p 47956
+27962 V 0 29290 V 47956 29290 V 0 30619 V 844 30220 a(t)582
+b(=)f(6.48e+04)1745 b(no.)581 b(steps)h(=)f(442)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(8.23e+02)p
+47956 30619 V 0 31947 V 844 31548 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(2.478e-09)h(3.313e+11)p 47956
+31947 V 0 33275 V 844 32877 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(3.680e-10)h(3.963e+11)p 47956
+33275 V 0 34604 V 47956 34604 V 0 35932 V 844 35533 a(t)582
+b(=)f(7.20e+04)1745 b(no.)581 b(steps)h(=)f(451)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(8.23e+02)p
+47956 35932 V 0 37260 V 844 36862 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)1743 b(-3.825e-09)2327 b(3.330e+11)p
+47956 37260 V 0 38589 V 844 38190 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)1743 b(-2.335e-10)2327 b(4.039e+11)p
+47956 38589 V 0 39917 V 47956 39917 V 0 41245 V 844 40847
+a(t)582 b(=)f(7.92e+04)1745 b(no.)581 b(steps)h(=)f(459)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(8.23e+02)p
+47956 41245 V 0 42574 V 844 42175 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)1743 b(-3.604e-11)2327 b(3.334e+11)p
+47956 42574 V 0 43902 V 844 43504 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(2.031e-11)h(4.120e+11)p 47956
+43902 V 0 45230 V 47956 45230 V 0 46559 V 844 46160 a(t)582
+b(=)f(8.64e+04)1745 b(no.)581 b(steps)h(=)f(468)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(8.23e+02)p
+47956 46559 V 0 47887 V 844 47489 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)1743 b(-4.944e-13)2327 b(3.352e+11)p
+47956 47887 V 0 49215 V 844 48817 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(1.870e-12)h(4.162e+11)p 47956
+49215 V 0 50544 V 47956 50544 V 0 51872 V 47956 51872
+V 0 53201 V 844 52802 a(Final)582 b(Statistics:)p 47956
+53201 V 0 54529 V 47956 54529 V 0 55857 V 844 55459 a(lenrw)1745
+b(=)1162 b(2000)2906 b(leniw)582 b(=)2325 b(80)p 47956
+55857 V 0 57186 V 844 56787 a(llrw)h(=)1162 b(2046)2906
+b(lliw)1163 b(=)2325 b(80)p 47956 57186 V 0 58514 V 844
+58115 a(nst)2907 b(=)1743 b(468)p 47956 58514 V 0 59842
+V 844 59444 a(nfe)2907 b(=)1743 b(623)2906 b(nfel)1163
+b(=)1744 b(593)p 47956 59842 V 0 61171 V 844 60772 a(nni)2907
+b(=)1743 b(620)2906 b(nli)1744 b(=)g(593)p 47956 61171
+V 0 62499 V 844 62100 a(nsetups)583 b(=)2324 b(88)2906
+b(netf)1163 b(=)2325 b(34)p 47956 62499 V 0 63827 V 844
+63429 a(npe)2907 b(=)e(9)h(nps)1744 b(=)1163 b(1156)p
+47956 63827 V 0 65156 V 844 64757 a(ncfn)2326 b(=)2905
+b(0)h(ncfl)1163 b(=)2906 b(0)p 47956 65156 V 0 66484
+V 47956 66484 V 0 67812 V 844 67414 a(In)582 b(CVBBDPRE:)g
+(real/integer)h(local)f(work)g(space)g(sizes)g(=)f(600,)h(50)p
+47956 67812 V 0 69141 V 8399 68742 a(no.)g(flocal)g(evals.)g(=)f(198)p
+47956 69141 V 0 70469 V 47956 70469 V 0 71797 V 47956
+71797 V 0 73126 V 844 72727 a
+(-------------------------------------------------------------------)p
+47956 73126 V 0 74454 V 47956 74454 V 0 75782 V 47956
+75782 V 0 77111 V 844 76712 a(Preconditioner)j(type)d(is:)1163
+b(jpre)582 b(=)f(PREC_RIGHT)p 47956 77111 V 0 78439 V
+47956 78439 V Black 23394 81741 a Fs(18)p Black eop
+%%Page: 19 23
+19 22 bop Black Black 4000 8037 45 1329 v 4844 7638 a
+Fi(t)582 b(=)f(7.20e+03)1745 b(no.)581 b(steps)h(=)f(191)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(1.22e+02)p
+51956 8037 V 4000 9365 V 4844 8966 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(1.047e+04)h(2.527e+11)p 51956
+9365 V 4000 10693 V 4844 10295 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(1.119e+04)h(2.700e+11)p 51956
+10693 V 4000 12022 V 51956 12022 V 4000 13350 V 4844
+12951 a(t)582 b(=)f(1.44e+04)1745 b(no.)581 b(steps)h(=)f(223)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(2.79e+02)p
+51956 13350 V 4000 14678 V 4844 14280 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(6.659e+06)h(2.582e+11)p 51956
+14678 V 4000 16007 V 4844 15608 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(7.301e+06)h(2.833e+11)p 51956
+16007 V 4000 17335 V 51956 17335 V 4000 18663 V 4844
+18265 a(t)582 b(=)f(2.16e+04)1745 b(no.)581 b(steps)h(=)f(249)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(4.31e+02)p
+51956 18663 V 4000 19992 V 4844 19593 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(2.665e+07)h(2.993e+11)p 51956
+19992 V 4000 21320 V 4844 20922 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(2.931e+07)h(3.313e+11)p 51956
+21320 V 4000 22648 V 51956 22648 V 4000 23977 V 4844
+23578 a(t)582 b(=)f(2.88e+04)1745 b(no.)581 b(steps)h(=)f(306)1744
+b(order)582 b(=)f(3)1744 b(stepsize)582 b(=)g(2.00e+02)p
+51956 23977 V 4000 25305 V 4844 24907 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(8.702e+06)h(3.380e+11)p 51956
+25305 V 4000 26633 V 4844 26235 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(9.650e+06)h(3.751e+11)p 51956
+26633 V 4000 27962 V 51956 27962 V 4000 29290 V 4844
+28892 a(t)582 b(=)f(3.60e+04)1745 b(no.)581 b(steps)h(=)f(350)1744
+b(order)582 b(=)f(4)1744 b(stepsize)582 b(=)g(7.54e+01)p
+51956 29290 V 4000 30619 V 4844 30220 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(1.404e+04)h(3.387e+11)p 51956
+30619 V 4000 31947 V 4844 31548 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(1.561e+04)h(3.765e+11)p 51956
+31947 V 4000 33275 V 51956 33275 V 4000 34604 V 4844
+34205 a(t)582 b(=)f(4.32e+04)1745 b(no.)581 b(steps)h(=)f(410)1744
+b(order)582 b(=)f(4)1744 b(stepsize)582 b(=)g(4.51e+02)p
+51956 34604 V 4000 35932 V 4844 35533 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)1743 b(-3.252e-09)2327 b(3.382e+11)p
+51956 35932 V 4000 37260 V 4844 36862 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)1743 b(-3.998e-09)2327 b(3.804e+11)p
+51956 37260 V 4000 38589 V 51956 38589 V 4000 39917 V
+4844 39518 a(t)582 b(=)f(5.04e+04)1745 b(no.)581 b(steps)h(=)f(427)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(4.57e+02)p
+51956 39917 V 4000 41245 V 4844 40847 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(1.089e-11)h(3.358e+11)p 51956
+41245 V 4000 42574 V 4844 42175 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(7.119e-12)h(3.864e+11)p 51956
+42574 V 4000 43902 V 51956 43902 V 4000 45230 V 4844
+44832 a(t)582 b(=)f(5.76e+04)1745 b(no.)581 b(steps)h(=)f(446)1744
+b(order)582 b(=)f(3)1744 b(stepsize)582 b(=)g(2.05e+02)p
+51956 45230 V 4000 46559 V 4844 46160 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(3.201e-11)h(3.320e+11)p 51956
+46559 V 4000 47887 V 4844 47489 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)1743 b(-7.813e-13)2327 b(3.909e+11)p
+51956 47887 V 4000 49215 V 51956 49215 V 4000 50544 V
+4844 50145 a(t)582 b(=)f(6.48e+04)1745 b(no.)581 b(steps)h(=)f(463)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(5.79e+02)p
+51956 50544 V 4000 51872 V 4844 51474 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)1743 b(-1.682e-15)2327 b(3.313e+11)p
+51956 51872 V 4000 53201 V 4844 52802 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)1743 b(-8.607e-16)2327 b(3.963e+11)p
+51956 53201 V 4000 54529 V 51956 54529 V 4000 55857 V
+4844 55459 a(t)582 b(=)f(7.20e+04)1745 b(no.)581 b(steps)h(=)f(476)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(5.79e+02)p
+51956 55857 V 4000 57186 V 4844 56787 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)1743 b(-2.820e-16)2327 b(3.330e+11)p
+51956 57186 V 4000 58514 V 4844 58115 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)1743 b(-7.249e-18)2327 b(4.039e+11)p
+51956 58514 V 4000 59842 V 51956 59842 V 4000 61171 V
+4844 60772 a(t)582 b(=)f(7.92e+04)1745 b(no.)581 b(steps)h(=)f(488)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(5.79e+02)p
+51956 61171 V 4000 62499 V 4844 62100 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)1743 b(-9.170e-18)2327 b(3.334e+11)p
+51956 62499 V 4000 63827 V 4844 63429 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)1743 b(-3.133e-19)2327 b(4.120e+11)p
+51956 63827 V 4000 65156 V 51956 65156 V 4000 66484 V
+4844 66086 a(t)582 b(=)f(8.64e+04)1745 b(no.)581 b(steps)h(=)f(501)1744
+b(order)582 b(=)f(5)1744 b(stepsize)582 b(=)g(5.79e+02)p
+51956 66484 V 4000 67812 V 4844 67414 a(At)g(bottom)g(left:)1163
+b(c1,)581 b(c2)h(=)2325 b(9.672e-17)h(3.352e+11)p 51956
+67812 V 4000 69141 V 4844 68742 a(At)582 b(top)f(right:)2326
+b(c1,)581 b(c2)h(=)2325 b(4.113e-21)h(4.163e+11)p 51956
+69141 V 4000 70469 V 51956 70469 V 4000 71797 V 51956
+71797 V 4000 73126 V 4844 72727 a(Final)582 b(Statistics:)p
+51956 73126 V 4000 74454 V 51956 74454 V 4000 75782 V
+4844 75384 a(lenrw)1745 b(=)1162 b(2000)2906 b(leniw)582
+b(=)2325 b(80)p 51956 75782 V 4000 77111 V 4844 76712
+a(llrw)h(=)1162 b(2046)2906 b(lliw)1163 b(=)2325 b(80)p
+51956 77111 V 4000 78439 V 4844 78041 a(nst)2907 b(=)1743
+b(501)p 51956 78439 V Black 27394 81741 a Fs(19)p Black
+eop
+%%Page: 20 24
+20 23 bop Black Black 0 8037 45 1329 v 844 7638 a Fi(nfe)2907
+b(=)1743 b(641)2906 b(nfel)1163 b(=)1744 b(821)p 47956
+8037 V 0 9365 V 844 8966 a(nni)2907 b(=)1743 b(638)2906
+b(nli)1744 b(=)g(821)p 47956 9365 V 0 10693 V 844 10295
+a(nsetups)583 b(=)1743 b(102)2906 b(netf)1163 b(=)2325
+b(32)p 47956 10693 V 0 12022 V 844 11623 a(npe)2907 b(=)e(9)h(nps)1744
+b(=)1163 b(1352)p 47956 12022 V 0 13350 V 844 12951 a(ncfn)2326
+b(=)2905 b(0)h(ncfl)1163 b(=)2906 b(0)p 47956 13350 V
+0 14678 V 47956 14678 V 0 16007 V 844 15608 a(In)582
+b(CVBBDPRE:)g(real/integer)h(local)f(work)g(space)g(sizes)g(=)f(600,)h
+(50)p 47956 16007 V 0 17335 V 8399 16936 a(no.)g(flocal)g(evals.)g(=)f
+(198)p 47956 17335 V 0 18663 V 47956 18663 V 0 19463
+45 801 v 47956 19463 V 0 19507 48001 45 v Black 23394
+81741 a Fs(20)p Black eop
+%%Page: 21 25
+21 24 bop Black Black 4000 7638 a Fr(4)1793 b(F)-149
+b(ortran)598 b(example)i(problems)4000 10398 y Fs(The)354
+b Fp(F)-35 b(or)-81 b(tran)354 b Fs(example)e(problem)h(programs)h
+(supplied)g(with)g(the)f Fp(cv)-27 b(ode)354 b Fs(pac)-34
+b(k)-67 b(age)353 b(are)g(all)f(written)4000 11903 y(in)533
+b(standard)h(F77)f(F)-101 b(ortran)534 b(and)f(use)g(double-precision)g
+(arithmetic.)925 b(Ho)-34 b(w)g(ev)g(er,)565 b(when)533
+b(the)g Fp(F)-35 b(or-)4000 13409 y(tran)445 b Fs(examples)e(are)g
+(built,)454 b(the)444 b(source)g(co)34 b(de)443 b(is)g(automatically)h
+(mo)34 b(di\257ed)444 b(according)g(to)g(the)g(con-)4000
+14914 y(\257gure)541 b(options)g(supplied)h(b)-34 b(y)541
+b(the)g(user)f(and)i(the)f(system)f(t)-34 b(yp)34 b(e.)948
+b(In)-34 b(teger)541 b(v)-67 b(ariables)539 b(are)i(declared)4000
+16420 y(as)515 b Fq(INTEGER*)p Fe(n)p Fs(,)545 b(where)515
+b Fe(n)g Fs(denotes)h(the)f(n)-34 b(um)g(b)34 b(er)516
+b(of)f(b)-34 b(ytes)515 b(in)g(the)g(corresp)34 b(onding)515
+b Fp(C)f Fs(t)-34 b(yp)34 b(e)515 b(\()p Fq(long)4000
+17925 y(int)463 b Fs(or)f Fq(int)p Fs(\).)713 b(Floating-p)34
+b(oin)-34 b(t)463 b(v)-67 b(ariable)461 b(declarations)h(remain)f(unc)
+-34 b(hanged)464 b(if)e(double-precision)g(is)4000 19430
+y(used,)507 b(but)487 b(are)e(c)-34 b(hanged)487 b(to)g
+Fq(REAL*)p Fe(n)p Fs(,)508 b(where)486 b Fe(n)g Fs(denotes)h(the)f(n)
+-34 b(um)g(b)34 b(er)487 b(of)g(b)-34 b(ytes)486 b(in)g(the)g
+Fp(sundials)4000 20936 y Fs(t)-34 b(yp)34 b(e)368 b Fq(realtype)p
+Fs(,)377 b(if)368 b(using)h(single-precision.)525 b(Also,)375
+b(if)368 b(using)g(single-precision,)374 b(then)369 b(declarations)f
+(of)4000 22441 y(\260oating-p)34 b(oin)-34 b(t)406 b(constan)-34
+b(ts)406 b(are)e(appropriately)g(mo)34 b(di\257ed;)404
+b(e.g.)538 b Fq(0.5D-4)406 b Fs(is)e(c)-34 b(hanged)405
+b(to)g Fq(0.5E-4)p Fs(.)4000 25846 y Fn(4.1)1495 b(A)499
+b(serial)g(example:)665 b Fm(cvkryf)4000 28188 y Fs(The)431
+b Fq(cvkryf)h Fs(example)d(is)h(a)g(F)-101 b(ortran)431
+b(equiv)-67 b(alen)-34 b(t)429 b(of)i(the)f Fq(cvkx)i
+Fs(problem.)616 b(\(In)431 b(fact,)436 b(it)430 b(w)-34
+b(as)431 b(deriv)-34 b(ed)4000 29693 y(from)470 b(an)g(earlier)e(F)-101
+b(ortran)471 b(example)e(program)h(for)f(V)-34 b(ODPK.\))470
+b(The)g(source)g(program)g Fq(cvkryf.c)i Fs(is)4000 31199
+y(listed)404 b(in)g(App)34 b(endix)405 b(G.)5882 32732
+y(The)412 b(main)f(program)g(b)34 b(egins)412 b(with)g(a)f(call)f(to)i
+Fq(INITKX)p Fs(,)h(whic)-34 b(h)412 b(sets)g(problem)f(parameters,)i
+(loads)4000 34237 y(these)296 b(in)g(a)g(Common)h(blo)34
+b(c)-34 b(k)296 b(for)g(use)g(b)-34 b(y)297 b(other)f(routines,)318
+b(and)297 b(loads)f Fq(Y)g Fs(with)h(its)f(initial)g(v)-67
+b(alues.)502 b(It)296 b(calls)4000 35743 y Fq(FNVINITS)p
+Fs(,)590 b Fq(FCVMALLOC)p Fs(,)g Fq(FCVSPGMR)p Fs(,)g
+Fq(FCVSPGMRSETPSET)p Fs(,)j(and)588 b Fq(FCVSPGMRSETPSOL)k
+Fs(to)c(initialize)4000 37248 y(the)543 b Fp(nvector)p
+11400 37248 403 45 v 485 w(serial)g Fs(mo)34 b(dule,)577
+b(the)542 b(main)h(solv)-34 b(er)542 b(memory)-101 b(,)576
+b(and)543 b(the)g Fp(cvspgmr)g Fs(mo)34 b(dule,)577 b(and)4000
+38754 y(to)439 b(sp)34 b(ecify)438 b(user-supplied)i(preconditioner)e
+(setup)i(and)f(solv)-34 b(e)439 b(routines.)642 b(It)439
+b(calls)f Fq(FCVODE)j Fs(in)d(a)h(lo)34 b(op)4000 40259
+y(o)-34 b(v)g(er)401 b Fq(TOUT)h Fs(v)-67 b(alues,)400
+b(with)i(prin)-34 b(ting)401 b(of)g(selected)f(solution)i(v)-67
+b(alues)400 b(and)h(p)34 b(erformance)401 b(data)g(\(from)h(the)4000
+41765 y Fq(IOPT)424 b Fs(and)g Fq(ROPT)g Fs(arra)-34
+b(ys\).)596 b(A)-34 b(t)423 b(the)h(end,)j(it)c(prin)-34
+b(ts)424 b(a)f(n)-34 b(um)g(b)34 b(er)424 b(of)g(p)34
+b(erformance)422 b(coun)-34 b(ters,)429 b(and)423 b(frees)4000
+43270 y(memory)404 b(with)g(calls)g(to)g Fq(FCVFREE)j
+Fs(and)e Fq(FNVFREES)p Fs(.)5882 44803 y(In)416 b Fq(cvkryf.c)p
+Fs(,)422 b(the)416 b Fq(FCVFUN)i Fs(routine)f(is)f(a)g(stragh)-34
+b(tforw)g(ard)418 b(implemen)-34 b(tation)418 b(of)e(the)h(discretized)
+4000 46309 y(form)444 b(of)g(Eqns.)657 b(\(4\).)h(In)444
+b Fq(FCVPSET)p Fs(,)i(the)e(blo)34 b(c)-34 b(k-diagonal)444
+b(part)g(of)g(the)g(Jacobian,)454 b Fl(J)43824 46506
+y Fh(bd)44766 46309 y Fs(,)f(is)444 b(computed)4000 47814
+y(\(and)427 b(copied)f(to)g Fq(P)p Fs(\))h(if)f Fq(JOK)h
+Fs(=)e(0,)431 b(but)c(is)f(simply)g(copied)f(from)i Fq(BD)f
+Fs(to)g Fq(P)h Fs(if)e Fq(JOK)i Fs(=)f(1.)604 b(In)426
+b(b)34 b(oth)427 b(cases,)4000 49320 y(the)476 b(preconditioner)g
+(matrix)f Fl(P)644 b Fs(is)475 b(formed)h(from)f Fl(J)28734
+49517 y Fh(bd)30152 49320 y Fs(and)h(its)g(2)317 b Fo(\243)g
+Fs(2)475 b(blo)34 b(c)-34 b(ks)475 b(are)g(LU-factored.)753
+b(In)4000 50825 y Fq(FCVPSOL)p Fs(,)381 b(the)f(solution)g(of)g(a)f
+(linear)g(system)g Fl(P)168 b(x)337 b Fs(=)g Fl(z)432
+b Fs(is)379 b(solv)-34 b(ed)379 b(b)-34 b(y)380 b(doing)g(bac)-34
+b(ksolv)g(e)379 b(op)34 b(erations)380 b(on)4000 52331
+y(the)j(blo)34 b(c)-34 b(ks.)531 b(The)382 b(remainder)g(of)h
+Fq(cvkryf.c)i Fs(consists)e(of)f(routines)h(from)g(LINP)-101
+b(A)-34 b(CK)382 b(and)h(the)f(BLAS)4000 53836 y(needed)404
+b(for)h(matrix)e(and)i(v)-34 b(ector)404 b(op)34 b(erations.)5882
+55369 y(The)452 b(follo)-34 b(wing)453 b(is)f(sample)g(output)i(from)f
+Fq(cvkryf)p Fs(,)465 b(using)453 b(a)f(10)302 b Fo(\243)f
+Fs(10)452 b(mesh.)683 b(The)452 b(p)34 b(erformance)4000
+56875 y(of)404 b Fp(f)-27 b(cv)g(ode)406 b Fs(here)e(is)g(quite)g
+(similar)f(to)h(that)h(of)g Fp(cv)-27 b(ode)405 b Fs(on)g(the)f
+Fq(cvkx)i Fs(problem,)e(as)g(exp)34 b(ected.)p 4000 59422
+17608 45 v 22189 59488 a Fi(cvkryf)582 b(sample)g(output)p
+34393 59422 V 4000 60222 45 801 v 51956 60222 V 4000
+61550 45 1329 v 4844 61152 a(Krylov)g(example)h(problem:)p
+51956 61550 V 4000 62879 V 51956 62879 V 4000 64207 V
+5425 63808 a(Kinetics-transport,)h(NEQ)e(=)1162 b(200)p
+51956 64207 V 4000 65535 V 51956 65535 V 4000 66864 V
+51956 66864 V 4000 68192 V 5425 67794 a(t)582 b(=)1743
+b(0.720E+04)2907 b(no.)582 b(steps)g(=)1744 b(219)f(order)582
+b(=)1744 b(5)g(stepsize)582 b(=)1743 b(0.158696E+03)p
+51956 68192 V 4000 69520 V 6007 69122 a(c1)581 b(\(bot.left/middle/top)
+j(rt.\))e(=)1744 b(0.104683E+05)1164 b(0.296373E+05)g(0.111853E+05)p
+51956 69520 V 4000 70849 V 6007 70450 a(c2)581 b(\(bot.left/middle/top)
+j(rt.\))e(=)1744 b(0.252672E+12)1164 b(0.715376E+12)g(0.269977E+12)p
+51956 70849 V 4000 72177 V 51956 72177 V 4000 73505 V
+5425 73107 a(t)582 b(=)1743 b(0.144E+05)2907 b(no.)582
+b(steps)g(=)1744 b(251)f(order)582 b(=)1744 b(5)g(stepsize)582
+b(=)1743 b(0.377205E+03)p 51956 73505 V 4000 74834 V
+6007 74435 a(c1)581 b(\(bot.left/middle/top)j(rt.\))e(=)1744
+b(0.665902E+07)1164 b(0.531602E+07)g(0.730081E+07)p 51956
+74834 V 4000 76162 V 6007 75764 a(c2)581 b(\(bot.left/middle/top)j
+(rt.\))e(=)1744 b(0.258192E+12)1164 b(0.205680E+12)g(0.283286E+12)p
+51956 76162 V 4000 77491 V 51956 77491 V 4000 78819 V
+5425 78420 a(t)582 b(=)1743 b(0.216E+05)2907 b(no.)582
+b(steps)g(=)1744 b(277)f(order)582 b(=)1744 b(5)g(stepsize)582
+b(=)1743 b(0.274583E+03)p 51956 78819 V Black 27394 81741
+a Fs(21)p Black eop
+%%Page: 22 26
+22 25 bop Black Black 0 8037 45 1329 v 2007 7638 a Fi(c1)581
+b(\(bot.left/middle/top)j(rt.\))e(=)1744 b(0.266498E+08)1164
+b(0.103636E+08)g(0.293077E+08)p 47956 8037 V 0 9365 V
+2007 8966 a(c2)581 b(\(bot.left/middle/top)j(rt.\))e(=)1744
+b(0.299279E+12)1164 b(0.102810E+12)g(0.331344E+12)p 47956
+9365 V 0 10693 V 47956 10693 V 0 12022 V 1425 11623 a(t)582
+b(=)1743 b(0.288E+05)2907 b(no.)582 b(steps)g(=)1744
+b(307)f(order)582 b(=)1744 b(4)g(stepsize)582 b(=)1743
+b(0.199394E+03)p 47956 12022 V 0 13350 V 2007 12951 a(c1)581
+b(\(bot.left/middle/top)j(rt.\))e(=)1744 b(0.870209E+07)1164
+b(0.129197E+08)g(0.965002E+07)p 47956 13350 V 0 14678
+V 2007 14280 a(c2)581 b(\(bot.left/middle/top)j(rt.\))e(=)1744
+b(0.338035E+12)1164 b(0.502929E+12)g(0.375096E+12)p 47956
+14678 V 0 16007 V 47956 16007 V 0 17335 V 1425 16936
+a(t)582 b(=)1743 b(0.360E+05)2907 b(no.)582 b(steps)g(=)1744
+b(336)f(order)582 b(=)1744 b(5)g(stepsize)582 b(=)1743
+b(0.112181E+03)p 47956 17335 V 0 18663 V 2007 18265 a(c1)581
+b(\(bot.left/middle/top)j(rt.\))e(=)1744 b(0.140404E+05)1164
+b(0.202903E+05)g(0.156090E+05)p 47956 18663 V 0 19992
+V 2007 19593 a(c2)581 b(\(bot.left/middle/top)j(rt.\))e(=)1744
+b(0.338677E+12)1164 b(0.489443E+12)g(0.376516E+12)p 47956
+19992 V 0 21320 V 47956 21320 V 0 22648 V 1425 22250
+a(t)582 b(=)1743 b(0.432E+05)2907 b(no.)582 b(steps)g(=)1744
+b(389)f(order)582 b(=)1744 b(4)g(stepsize)582 b(=)1743
+b(0.428799E+03)p 47956 22648 V 0 23977 V 2007 23578 a(c1)581
+b(\(bot.left/middle/top)j(rt.\))e(=)1744 b(0.162296E-07)1164
+b(0.195126E-04)g(0.100603E-06)p 47956 23977 V 0 25305
+V 2007 24907 a(c2)581 b(\(bot.left/middle/top)j(rt.\))e(=)1744
+b(0.338233E+12)1164 b(0.135488E+12)g(0.380352E+12)p 47956
+25305 V 0 26633 V 47956 26633 V 0 27962 V 1425 27563
+a(t)582 b(=)1743 b(0.504E+05)2907 b(no.)582 b(steps)g(=)1744
+b(410)f(order)582 b(=)1744 b(4)g(stepsize)582 b(=)1743
+b(0.407135E+03)p 47956 27962 V 0 29290 V 2007 28892 a(c1)581
+b(\(bot.left/middle/top)j(rt.\))e(=)1162 b(-0.176496E-07)583
+b(-0.106959E-04)h(-0.380790E-08)p 47956 29290 V 0 30619
+V 2007 30220 a(c2)d(\(bot.left/middle/top)j(rt.\))e(=)1744
+b(0.335816E+12)1164 b(0.493028E+12)g(0.386445E+12)p 47956
+30619 V 0 31947 V 47956 31947 V 0 33275 V 1425 32877
+a(t)582 b(=)1743 b(0.576E+05)2907 b(no.)582 b(steps)g(=)1744
+b(426)f(order)582 b(=)1744 b(5)g(stepsize)582 b(=)1743
+b(0.192012E+03)p 47956 33275 V 0 34604 V 2007 34205 a(c1)581
+b(\(bot.left/middle/top)j(rt.\))e(=)1744 b(0.303262E-09)1164
+b(0.183370E-06)g(0.673644E-10)p 47956 34604 V 0 35932
+V 2007 35533 a(c2)581 b(\(bot.left/middle/top)j(rt.\))e(=)1744
+b(0.332031E+12)1164 b(0.964982E+12)g(0.390900E+12)p 47956
+35932 V 0 37260 V 47956 37260 V 0 38589 V 1425 38190
+a(t)582 b(=)1743 b(0.648E+05)2907 b(no.)582 b(steps)g(=)1744
+b(444)f(order)582 b(=)1744 b(5)g(stepsize)582 b(=)1743
+b(0.777577E+03)p 47956 38589 V 0 39917 V 2007 39518 a(c1)581
+b(\(bot.left/middle/top)j(rt.\))e(=)1162 b(-0.654307E-10)583
+b(-0.394025E-07)h(-0.153374E-10)p 47956 39917 V 0 41245
+V 2007 40847 a(c2)d(\(bot.left/middle/top)j(rt.\))e(=)1744
+b(0.331303E+12)1164 b(0.892176E+12)g(0.396342E+12)p 47956
+41245 V 0 42574 V 47956 42574 V 0 43902 V 1425 43504
+a(t)582 b(=)1743 b(0.720E+05)2907 b(no.)582 b(steps)g(=)1744
+b(453)f(order)582 b(=)1744 b(5)g(stepsize)582 b(=)1743
+b(0.777577E+03)p 47956 43902 V 0 45230 V 2007 44832 a(c1)581
+b(\(bot.left/middle/top)j(rt.\))e(=)1744 b(0.120278E-10)1164
+b(0.725732E-08)g(0.272181E-11)p 47956 45230 V 0 46559
+V 2007 46160 a(c2)581 b(\(bot.left/middle/top)j(rt.\))e(=)1744
+b(0.332972E+12)1164 b(0.618620E+12)g(0.403885E+12)p 47956
+46559 V 0 47887 V 47956 47887 V 0 49215 V 1425 48817
+a(t)582 b(=)1743 b(0.792E+05)2907 b(no.)582 b(steps)g(=)1744
+b(462)f(order)582 b(=)1744 b(5)g(stepsize)582 b(=)1743
+b(0.777577E+03)p 47956 49215 V 0 50544 V 2007 50145 a(c1)581
+b(\(bot.left/middle/top)j(rt.\))e(=)1744 b(0.204632E-11)1164
+b(0.123056E-08)g(0.490941E-12)p 47956 50544 V 0 51872
+V 2007 51474 a(c2)581 b(\(bot.left/middle/top)j(rt.\))e(=)1744
+b(0.333441E+12)1164 b(0.666890E+12)g(0.412026E+12)p 47956
+51872 V 0 53201 V 47956 53201 V 0 54529 V 1425 54130
+a(t)582 b(=)1743 b(0.864E+05)2907 b(no.)582 b(steps)g(=)1744
+b(471)f(order)582 b(=)1744 b(5)g(stepsize)582 b(=)1743
+b(0.777577E+03)p 47956 54529 V 0 55857 V 2007 55459 a(c1)581
+b(\(bot.left/middle/top)j(rt.\))e(=)1162 b(-0.653325E-13)583
+b(-0.393660E-10)h(-0.151265E-13)p 47956 55857 V 0 57186
+V 2007 56787 a(c2)d(\(bot.left/middle/top)j(rt.\))e(=)1744
+b(0.335178E+12)1164 b(0.910691E+12)g(0.416250E+12)p 47956
+57186 V 0 58514 V 47956 58514 V 0 59842 V 47956 59842
+V 0 61171 V 844 60772 a(Final)582 b(statistics:)p 47956
+61171 V 0 62499 V 47956 62499 V 0 63827 V 1425 63429
+a(number)h(of)e(steps)4650 b(=)1743 b(471)2907 b(number)582
+b(of)f(f)g(evals.)2907 b(=)1163 b(613)p 47956 63827 V
+0 65156 V 1425 64757 a(number)583 b(of)e(prec.)h(setups)g(=)2325
+b(81)p 47956 65156 V 0 66484 V 1425 66086 a(number)583
+b(of)e(prec.)h(evals.)g(=)2906 b(9)g(number)582 b(of)f(prec.)h(solves)g
+(=)1163 b(1187)p 47956 66484 V 0 67812 V 1425 67414 a(number)583
+b(of)e(nonl.)h(iters.)g(=)1743 b(610)2907 b(number)582
+b(of)f(lin.)h(iters.)1163 b(=)1744 b(636)p 47956 67812
+V 0 69141 V 1425 68742 a(average)583 b(Krylov)f(subspace)g(dimension)h
+(\(NLI/NNI\))1163 b(=)1744 b(0.104262E+01)p 47956 69141
+V 0 70469 V 1425 70071 a(number)583 b(of)e(conv.)h(failures..)g
+(nonlinear)h(=)1744 b(0)1162 b(linear)582 b(=)1744 b(0)p
+47956 70469 V 0 71269 45 801 v 47956 71269 V 0 71313
+48001 45 v Black 23394 81741 a Fs(22)p Black eop
+%%Page: 23 27
+23 26 bop Black Black 4000 7638 a Fn(4.2)1495 b(A)499
+b(parallel)g(example:)665 b Fm(pvdiagkbf)4000 9940 y
+Fs(This)596 b(example,)643 b Fq(pvdiagkbf)p Fs(,)j(uses)596
+b(a)g(simple)f(diagonal)h(ODE)f(system)h(to)g(illustrate)g(the)g(use)g
+(of)4000 11446 y Fp(f)-27 b(cv)g(ode)406 b Fs(in)e(a)g(parallel)f
+(setting.)539 b(The)405 b(system)f(is)20668 14191 y(_)-554
+b Fl(y)21045 14373 y Fh(i)21757 14191 y Fs(=)337 b Fo(\241)p
+Fl(\256)408 b(i)c(y)26579 14373 y Fh(i)28167 14191 y
+Fs(\()p Fl(i)337 b Fs(=)f(1)p Fl(;)202 b(:)g(:)g(:)f(;)h(N)132
+b Fs(\))14296 b(\(10\))4000 16935 y(on)523 b(the)f(time)g(in)-34
+b(terv)-67 b(al)522 b(0)533 b Fo(\267)g Fl(t)g Fo(\267)g
+Fs(1.)893 b(In)522 b(this)h(case,)551 b(w)-34 b(e)522
+b(use)g Fl(\256)539 b Fs(=)533 b(10)522 b(and)h Fl(N)665
+b Fs(=)534 b(10)p Fo(\244)p Fq(NPES)p Fs(,)523 b(where)4000
+18441 y Fq(NPES)557 b Fs(is)e(the)h(n)-34 b(um)g(b)34
+b(er)557 b(of)f(pro)34 b(cessors)555 b(and)h(is)g(sp)34
+b(eci\257ed)555 b(at)h(run)g(time.)993 b(The)556 b(linear)f(solv)-34
+b(er)555 b(to)h(b)34 b(e)4000 19946 y(used)365 b(is)f
+Fp(spgmr)g Fs(with)h(the)g Fp(cvbbdpre)g Fs(\(band-blo)34
+b(c)-34 b(k-diagonal\))367 b(preconditioner.)525 b(Since)364
+b(the)h(system)4000 21452 y(Jacobian)329 b(is)f(diagonal,)344
+b(the)329 b(half-bandwidths)j(sp)34 b(eci\257ed)328 b(are)g(all)g
+(zero.)513 b(The)329 b(problem)g(is)f(solv)-34 b(ed)329
+b(t)-34 b(wice)4000 22957 y(|)404 b(with)h(preconditioning)g(on)g(the)f
+(left,)g(then)h(on)f(the)h(righ)-34 b(t.)5882 24470 y(The)544
+b(source)f(\257le,)577 b Fq(pvdiagkbf.f)p Fs(,)582 b(is)543
+b(listed)g(in)h(App)34 b(endix)543 b(H.)956 b(It)544
+b(b)34 b(egins)543 b(with)h(MPI)f(calls)g(to)4000 25975
+y(initialize)469 b(MPI)h(and)h(to)g(get)g(the)f(n)-34
+b(um)g(b)34 b(er)472 b(of)f(pro)34 b(cessors)469 b(and)j(lo)34
+b(cal)469 b(pro)34 b(cessor)470 b(index.)737 b(The)471
+b(linear)4000 27481 y(solv)-34 b(er)584 b(sp)34 b(eci\257cation)585
+b(is)f(done)h(with)h(calls)e(to)h Fq(FCVBBDINIT)j Fs(and)d
+Fq(FCVBBDSPGMR)p Fs(.)j(In)d(a)g(lo)34 b(op)584 b(o)-34
+b(v)g(er)4000 28986 y Fq(TOUT)459 b Fs(v)-67 b(alues,)470
+b(it)458 b(calls)e Fq(FCVODE)k Fs(and)e(prin)-34 b(ts)459
+b(the)f(step)g(and)h Fl(f)588 b Fs(ev)-67 b(aluation)457
+b(coun)-34 b(ters.)700 b(After)458 b(that,)472 b(it)4000
+30492 y(computes)383 b(and)f(prin)-34 b(ts)383 b(the)f(maxim)-34
+b(um)383 b(global)f(error,)j(and)d(all)f(the)i(relev)-67
+b(an)-34 b(t)381 b(p)34 b(erformance)381 b(coun)-34 b(ters.)4000
+31997 y(Those)347 b(sp)34 b(eci\257c)345 b(to)h Fp(cvbbdpre)h
+Fs(are)e(obtained)i(b)-34 b(y)346 b(a)g(call)f(to)i Fq(FCVBBDOPT)p
+Fs(.)h(T)-101 b(o)347 b(prepare)e(for)h(the)h(second)4000
+33503 y(run,)608 b(the)567 b(program)h(calls)e Fq(FCVREINIT)p
+Fs(,)k Fq(FCVBBDREINIT)p Fs(,)h(and)d Fq(FCVSPGMRREINIT)p
+Fs(,)j(in)c(addition)i(to)4000 35008 y(resetting)445
+b(the)h(initial)f(conditions.)663 b(Finally)-101 b(,)454
+b(it)445 b(frees)g(memory)g(and)h(terminates)f(MPI.)g(Notice)g(that)
+4000 36514 y(in)418 b(the)g Fq(FCVFUN)h Fs(routine,)i(the)d(lo)34
+b(cal)417 b(pro)34 b(cessor)417 b(index)g Fq(MYPE)i Fs(and)f(the)g(lo)
+34 b(cal)417 b(v)-34 b(ector)417 b(size)g Fq(NLOCAL)i
+Fs(are)4000 38019 y(used)405 b(to)f(form)g(the)h(global)f(index)g(v)-67
+b(alues)403 b(needed)i(to)f(ev)-67 b(aluate)404 b(the)g(righ)-34
+b(t-hand)406 b(side)e(of)h(Eq.)538 b(\(10\).)5882 39532
+y(The)497 b(follo)-34 b(wing)497 b(is)g(a)f(sample)h(output)h(from)f
+Fq(pvdiagkbf)p Fs(,)523 b(with)497 b Fq(NPES)h Fs(=)e(4.)816
+b(As)497 b(exp)34 b(ected,)519 b(the)4000 41037 y(p)34
+b(erformance)404 b(is)g(iden)-34 b(tical)404 b(for)g(left)g(vs)g(righ)
+-34 b(t)405 b(preconditioning.)p 4000 43482 16736 45
+v 21317 43548 a Fi(pvdiagkbf)582 b(sample)g(output)p
+35264 43482 V 4000 44282 45 801 v 51956 44282 V 4000
+45610 45 1329 v 4844 45212 a(Diagonal)h(test)e(problem:)p
+51956 45610 V 4000 46938 V 51956 46938 V 4000 48267 V
+5425 47868 a(NEQ)h(=)1163 b(40)p 51956 48267 V 4000 49595
+V 5425 49197 a(parameter)583 b(alpha)f(=)1743 b(10.000)p
+51956 49595 V 4000 50923 V 5425 50525 a(ydot_i)583 b(=)e(-alpha*i)h(*)f
+(y_i)h(\(i)f(=)h(1,...,NEQ\))p 51956 50923 V 4000 52252
+V 5425 51853 a(RTOL,)g(ATOL)g(=)2325 b(0.1E-04)1744 b(0.1E-09)p
+51956 52252 V 4000 53580 V 5425 53182 a(Method)583 b(is)e
+(BDF/NEWTON/SPGMR)p 51956 53580 V 4000 54909 V 5425 54510
+a(Preconditioner)j(is)d(band-block-diagonal,)j(using)e(CVBBDPRE)p
+51956 54909 V 4000 56237 V 5425 55838 a(Number)h(of)e(processors)i(=)
+1743 b(4)p 51956 56237 V 4000 57565 V 51956 57565 V 4000
+58894 V 51956 58894 V 4000 60222 V 4844 59823 a(Preconditioning)584
+b(on)d(left)p 51956 60222 V 4000 61550 V 51956 61550
+V 4000 62879 V 5425 62480 a(t)h(=)1743 b(0.10E+00)2907
+b(no.)582 b(steps)g(=)1743 b(221)h(no.)582 b(f-s)f(=)1744
+b(261)p 51956 62879 V 4000 64207 V 5425 63808 a(t)582
+b(=)1743 b(0.20E+00)2907 b(no.)582 b(steps)g(=)1743 b(265)h(no.)582
+b(f-s)f(=)1744 b(307)p 51956 64207 V 4000 65535 V 5425
+65137 a(t)582 b(=)1743 b(0.30E+00)2907 b(no.)582 b(steps)g(=)1743
+b(290)h(no.)582 b(f-s)f(=)1744 b(333)p 51956 65535 V
+4000 66864 V 5425 66465 a(t)582 b(=)1743 b(0.40E+00)2907
+b(no.)582 b(steps)g(=)1743 b(306)h(no.)582 b(f-s)f(=)1744
+b(350)p 51956 66864 V 4000 68192 V 5425 67794 a(t)582
+b(=)1743 b(0.50E+00)2907 b(no.)582 b(steps)g(=)1743 b(319)h(no.)582
+b(f-s)f(=)1744 b(364)p 51956 68192 V 4000 69520 V 5425
+69122 a(t)582 b(=)1743 b(0.60E+00)2907 b(no.)582 b(steps)g(=)1743
+b(329)h(no.)582 b(f-s)f(=)1744 b(374)p 51956 69520 V
+4000 70849 V 5425 70450 a(t)582 b(=)1743 b(0.70E+00)2907
+b(no.)582 b(steps)g(=)1743 b(339)h(no.)582 b(f-s)f(=)1744
+b(385)p 51956 70849 V 4000 72177 V 5425 71779 a(t)582
+b(=)1743 b(0.80E+00)2907 b(no.)582 b(steps)g(=)1743 b(345)h(no.)582
+b(f-s)f(=)1744 b(391)p 51956 72177 V 4000 73505 V 5425
+73107 a(t)582 b(=)1743 b(0.90E+00)2907 b(no.)582 b(steps)g(=)1743
+b(352)h(no.)582 b(f-s)f(=)1744 b(398)p 51956 73505 V
+4000 74834 V 5425 74435 a(t)582 b(=)1743 b(0.10E+01)2907
+b(no.)582 b(steps)g(=)1743 b(359)h(no.)582 b(f-s)f(=)1744
+b(405)p 51956 74834 V 4000 76162 V 51956 76162 V 4000
+77491 V 4844 77092 a(Max.)582 b(absolute)g(error)g(is)1163
+b(0.28E-08)p 51956 77491 V 4000 78819 V 51956 78819 V
+Black 27394 81741 a Fs(23)p Black eop
+%%Page: 24 28
+24 27 bop Black Black 0 8037 45 1329 v 47956 8037 V 0
+9365 V 844 8966 a Fi(Final)582 b(statistics:)p 47956
+9365 V 0 10693 V 47956 10693 V 0 12022 V 1425 11623 a(number)h(of)e
+(steps)4650 b(=)1743 b(359)2907 b(number)582 b(of)f(f)g(evals.)2907
+b(=)1744 b(405)p 47956 12022 V 0 13350 V 1425 12951 a(number)583
+b(of)e(prec.)h(setups)g(=)2325 b(38)p 47956 13350 V 0
+14678 V 1425 14280 a(number)583 b(of)e(prec.)h(evals.)g(=)2906
+b(7)g(number)582 b(of)f(prec.)h(solves)g(=)1744 b(728)p
+47956 14678 V 0 16007 V 1425 15608 a(number)583 b(of)e(nonl.)h(iters.)g
+(=)1743 b(402)2907 b(number)582 b(of)f(lin.)h(iters.)1163
+b(=)1744 b(364)p 47956 16007 V 0 17335 V 1425 16936 a(average)583
+b(Krylov)f(subspace)g(dimension)h(\(NLI/NNI\))f(=)1744
+b(0.9055)p 47956 17335 V 0 18663 V 1425 18265 a(number)583
+b(of)e(conv.)h(failures..)g(nonlinear)h(=)1744 b(0)1162
+b(linear)582 b(=)1744 b(0)p 47956 18663 V 0 19992 V 1425
+19593 a(number)583 b(of)e(error)h(test)g(failures)g(=)1744
+b(5)p 47956 19992 V 0 21320 V 47956 21320 V 0 22648 V
+844 22250 a(In)582 b(CVBBDPRE:)p 47956 22648 V 0 23977
+V 47956 23977 V 0 25305 V 1425 24907 a(real/int)h(local)f(workspace)g
+(=)2325 b(20)1744 b(10)p 47956 25305 V 0 26633 V 1425
+26235 a(number)583 b(of)e(g)g(evals.)h(=)2325 b(14)p
+47956 26633 V 0 27962 V 47956 27962 V 0 29290 V 47956
+29290 V 0 30619 V 844 30220 a
+(------------------------------------------------------------)p
+47956 30619 V 0 31947 V 47956 31947 V 0 33275 V 47956
+33275 V 0 34604 V 844 34205 a(Preconditioning)584 b(on)d(right)p
+47956 34604 V 0 35932 V 47956 35932 V 0 37260 V 1425
+36862 a(t)h(=)1743 b(0.10E+00)2907 b(no.)582 b(steps)g(=)1743
+b(221)h(no.)582 b(f-s)f(=)1744 b(261)p 47956 37260 V
+0 38589 V 1425 38190 a(t)582 b(=)1743 b(0.20E+00)2907
+b(no.)582 b(steps)g(=)1743 b(265)h(no.)582 b(f-s)f(=)1744
+b(307)p 47956 38589 V 0 39917 V 1425 39518 a(t)582 b(=)1743
+b(0.30E+00)2907 b(no.)582 b(steps)g(=)1743 b(290)h(no.)582
+b(f-s)f(=)1744 b(333)p 47956 39917 V 0 41245 V 1425 40847
+a(t)582 b(=)1743 b(0.40E+00)2907 b(no.)582 b(steps)g(=)1743
+b(306)h(no.)582 b(f-s)f(=)1744 b(350)p 47956 41245 V
+0 42574 V 1425 42175 a(t)582 b(=)1743 b(0.50E+00)2907
+b(no.)582 b(steps)g(=)1743 b(319)h(no.)582 b(f-s)f(=)1744
+b(364)p 47956 42574 V 0 43902 V 1425 43504 a(t)582 b(=)1743
+b(0.60E+00)2907 b(no.)582 b(steps)g(=)1743 b(329)h(no.)582
+b(f-s)f(=)1744 b(374)p 47956 43902 V 0 45230 V 1425 44832
+a(t)582 b(=)1743 b(0.70E+00)2907 b(no.)582 b(steps)g(=)1743
+b(339)h(no.)582 b(f-s)f(=)1744 b(385)p 47956 45230 V
+0 46559 V 1425 46160 a(t)582 b(=)1743 b(0.80E+00)2907
+b(no.)582 b(steps)g(=)1743 b(345)h(no.)582 b(f-s)f(=)1744
+b(391)p 47956 46559 V 0 47887 V 1425 47489 a(t)582 b(=)1743
+b(0.90E+00)2907 b(no.)582 b(steps)g(=)1743 b(352)h(no.)582
+b(f-s)f(=)1744 b(398)p 47956 47887 V 0 49215 V 1425 48817
+a(t)582 b(=)1743 b(0.10E+01)2907 b(no.)582 b(steps)g(=)1743
+b(359)h(no.)582 b(f-s)f(=)1744 b(405)p 47956 49215 V
+0 50544 V 47956 50544 V 0 51872 V 844 51474 a(Max.)582
+b(absolute)g(error)g(is)1163 b(0.28E-08)p 47956 51872
+V 0 53201 V 47956 53201 V 0 54529 V 47956 54529 V 0 55857
+V 844 55459 a(Final)582 b(statistics:)p 47956 55857 V
+0 57186 V 47956 57186 V 0 58514 V 1425 58115 a(number)h(of)e(steps)4650
+b(=)1743 b(359)2907 b(number)582 b(of)f(f)g(evals.)2907
+b(=)1744 b(405)p 47956 58514 V 0 59842 V 1425 59444 a(number)583
+b(of)e(prec.)h(setups)g(=)2325 b(38)p 47956 59842 V 0
+61171 V 1425 60772 a(number)583 b(of)e(prec.)h(evals.)g(=)2906
+b(7)g(number)582 b(of)f(prec.)h(solves)g(=)1744 b(728)p
+47956 61171 V 0 62499 V 1425 62100 a(number)583 b(of)e(nonl.)h(iters.)g
+(=)1743 b(402)2907 b(number)582 b(of)f(lin.)h(iters.)1163
+b(=)1744 b(364)p 47956 62499 V 0 63827 V 1425 63429 a(average)583
+b(Krylov)f(subspace)g(dimension)h(\(NLI/NNI\))f(=)1744
+b(0.9055)p 47956 63827 V 0 65156 V 1425 64757 a(number)583
+b(of)e(conv.)h(failures..)g(nonlinear)h(=)1744 b(0)1162
+b(linear)582 b(=)1744 b(0)p 47956 65156 V 0 66484 V 1425
+66086 a(number)583 b(of)e(error)h(test)g(failures)g(=)1744
+b(5)p 47956 66484 V 0 67812 V 47956 67812 V 0 69141 V
+844 68742 a(In)582 b(CVBBDPRE:)p 47956 69141 V 0 70469
+V 47956 70469 V 0 71797 V 1425 71399 a(real/int)h(local)f(workspace)g
+(=)2325 b(20)1744 b(10)p 47956 71797 V 0 73126 V 1425
+72727 a(number)583 b(of)e(g)g(evals.)h(=)2325 b(14)p
+47956 73126 V 0 73926 45 801 v 47956 73926 V 0 73970
+48001 45 v Black 23394 81741 a Fs(24)p Black eop
+%%Page: 25 29
+25 28 bop Black Black 4000 7638 a Fr(5)1793 b(P)-50 b(arallel)598
+b(tests)4000 10348 y Fs(The)499 b(sti\256)f(example)f(problem)i
+Fq(cvkx)g Fs(describ)34 b(ed)498 b(ab)34 b(o)-34 b(v)g(e,)521
+b(or)498 b(rather)g(its)h(parallel)e(v)-34 b(ersion)498
+b Fq(pvkx)p Fs(,)522 b(has)4000 11854 y(b)34 b(een)358
+b(mo)34 b(di\257ed)359 b(and)g(expanded)g(to)g(form)f(a)g(test)h
+(problem)g(for)f(the)h(parallel)e(v)-34 b(ersion)358
+b(of)h Fp(cv)-27 b(ode)p Fs(.)524 b(This)4000 13359 y(w)-34
+b(ork)404 b(w)-34 b(as)405 b(largely)e(carried)g(out)i(b)-34
+b(y)405 b(M.)e(Wittman)i(and)g(rep)34 b(orted)404 b(in)g([2].)5882
+14867 y(T)-101 b(o)403 b(start)h(with,)g(in)f(order)f(to)h(add)h
+(realistic)e(complexit)-34 b(y)402 b(to)i(the)f(solution,)h(the)f
+(initial)g(pro\257le)g(for)4000 16372 y(this)304 b(problem)g(w)-34
+b(as)305 b(altered)f(to)g(include)g(a)f(rather)h(steep)g(fron)-34
+b(t)305 b(in)f(the)h(v)-34 b(ertical)303 b(direction.)504
+b(Sp)34 b(eci\257cally)-101 b(,)4000 17878 y(the)405
+b(function)g Fl(\257)64 b Fs(\()p Fl(y)43 b Fs(\))405
+b(in)f(Eq.)538 b(\(6\))405 b(has)g(b)34 b(een)404 b(replaced)f(b)-34
+b(y:)19008 20608 y Fl(\257)64 b Fs(\()p Fl(y)43 b Fs(\))337
+b(=)g Fl(:)p Fs(75)269 b(+)g Fl(:)p Fs(25)202 b(tanh)q(\(10)p
+Fl(y)314 b Fo(\241)269 b Fs(400\))405 b Fl(:)12852 b
+Fs(\(11\))4000 23338 y(This)455 b(function)g(rises)e(from)i(ab)34
+b(out)455 b(.5)e(to)i(ab)34 b(out)455 b(1.0)e(o)-34 b(v)g(er)454
+b(a)g Fl(y)498 b Fs(in)-34 b(terv)-67 b(al)454 b(of)g(ab)34
+b(out)455 b(.2)f(\(i.e.)687 b(1/100)455 b(of)4000 24843
+y(the)464 b(total)g(span)g(in)g Fl(y)43 b Fs(\).)717
+b(This)464 b(v)-34 b(ertical)462 b(v)-67 b(ariation,)478
+b(together)464 b(with)g(the)g(horizonatal)f(adv)-34 b(ection)464
+b(and)4000 26349 y(di\256usion)316 b(in)g(the)g(problem,)333
+b(demands)316 b(a)g(fairly)e(\257ne)i(spatial)g(mesh)g(to)g(ac)-34
+b(hiev)g(e)315 b(acceptable)g(resolution.)5882 27857
+y(In)606 b(addition,)656 b(an)606 b(alternate)g(c)-34
+b(hoice)605 b(of)h(di\256erencing)g(is)f(used)h(in)g(order)f(to)h(con)
+-34 b(trol)606 b(spurious)4000 29362 y(oscillations)372
+b(resulting)h(from)g(the)g(horizon)-34 b(tal)373 b(adv)-34
+b(ection.)528 b(In)373 b(place)f(of)h(cen)-34 b(tral)373
+b(di\256erencing)f(for)h(that)4000 30868 y(term,)404
+b(a)g(biased)g(up)-34 b(wind)406 b(appro)-34 b(ximation)406
+b(is)d(applied)i(to)f(eac)-34 b(h)405 b(of)f(the)h(terms)f
+Fl(@)67 b(c)42068 30428 y Fh(i)42443 30868 y Fl(=@)g(x)p
+Fs(,)403 b(namely:)16845 34263 y Fl(@)67 b(c=@)g(x)p
+Fo(j)20427 34622 y Fh(x)20957 34757 y Fc(j)21783 34263
+y Fo(\274)23062 32554 y Fd(\267)23835 33443 y Fs(3)p
+23835 33985 607 49 v 23835 35095 a(2)24573 34263 y Fl(c)25098
+34445 y Fh(j)51 b Fk(+1)27057 34263 y Fo(\241)269 b Fl(c)28794
+34445 y Fh(j)29550 34263 y Fo(\241)30894 33443 y Fs(1)p
+30894 33985 V 30894 35095 a(2)31633 34263 y Fl(c)32158
+34445 y Fh(j)51 b Fj(\241)p Fk(1)33847 32554 y Fd(\270)34689
+34263 y Fl(=)p Fs(\(2\242)p Fl(x)p Fs(\))405 b Fl(:)10557
+b Fs(\(12\))5882 37594 y(With)424 b(this)h(mo)34 b(di\257ed)425
+b(form)f(of)h(the)f(problem,)429 b(w)-34 b(e)425 b(p)34
+b(erformed)424 b(tests)h(similar)e(to)i(those)f(describ)34
+b(ed)4000 39100 y(ab)g(o)-34 b(v)g(e)353 b(for)g(the)g(example.)521
+b(Here)352 b(w)-34 b(e)353 b(\257x)g(the)h(subgrid)f(dimensions)h(at)f
+Fq(MXSUB)638 b(=)f(MYSUB)h(=)353 b Fs(50,)363 b(so)353
+b(that)4000 40605 y(the)441 b(lo)34 b(cal)440 b(\(p)34
+b(er-pro)g(cessor\))440 b(problem)h(size)f(is)g(5000,)450
+b(while)441 b(the)g(pro)34 b(cessor)440 b(arra)-34 b(y)440
+b(dimensions,)451 b Fq(NPEX)4000 42111 y Fs(and)338 b
+Fq(NPEY)p Fs(,)h(are)e(v)-67 b(aried.)516 b(In)337 b(one)h(\(t)-34
+b(ypical\))339 b(sequence)e(of)h(tests,)351 b(w)-34 b(e)338
+b(\257x)g Fq(NPEY)h Fs(=)e(8)h(\(for)g(a)g(v)-34 b(ertical)337
+b(mesh)4000 43616 y(size)392 b(of)g Fq(MY)h Fs(=)f(400\),)j(and)f(set)e
+Fq(NPEX)i Fs(=)e(8)g(\()p Fq(MX)i Fs(=)e(400\),)j Fq(NPEX)e
+Fs(=)g(16)f(\()p Fq(MX)h Fs(=)g(800\),)h(and)g Fq(NPEX)f
+Fs(=)f(32)h(\()p Fq(MX)4000 45121 y Fs(=)h(1600\).)536
+b(Th)-34 b(us)397 b(the)e(largest)f(problem)h(size)f
+Fl(N)526 b Fs(is)395 b(2)250 b Fo(\242)h Fs(400)f Fo(\242)g
+Fs(1600)337 b(=)g(1)p Fl(;)202 b Fs(280)p Fl(;)g Fs(000.)535
+b(F)-101 b(or)395 b(these)g(tests,)i(w)-34 b(e)4000 46627
+y(also)404 b(raise)f(the)i(maxim)-34 b(um)404 b(Krylo)-34
+b(v)404 b(dimension,)g Fq(maxl)p Fs(,)h(to)g(10)f(\(from)g(its)h
+(default)g(v)-67 b(alue)403 b(of)i(5\).)5882 48135 y(F)-101
+b(or)279 b(eac)-34 b(h)279 b(of)g(the)h(three)f(test)g(cases,)304
+b(the)279 b(test)h(program)f(w)-34 b(as)280 b(run)g(on)f(a)g(Cra)-34
+b(y-T3D)280 b(\(256)f(pro)34 b(cessors\))4000 49640 y(with)405
+b(eac)-34 b(h)404 b(of)h(three)f(di\256eren)-34 b(t)404
+b(message-passing)h(libraries:)p Black 5818 52485 a Fo(\262)p
+Black 606 w Fs(MPICH:)f(an)h(implemen)-34 b(tation)405
+b(of)f(MPI)g(on)h(top)g(of)f(the)h(Chameleon)f(library)p
+Black 5818 54996 a Fo(\262)p Black 606 w Fs(EPCC:)h(an)f(implemen)-34
+b(tation)405 b(of)g(MPI)f(b)-34 b(y)404 b(the)h(Edin)-34
+b(burgh)406 b(P)-34 b(arallel)403 b(Computer)i(Cen)-34
+b(tre)p Black 5818 57507 a Fo(\262)p Black 606 w Fs(SHMEM:)405
+b(Cra)-34 b(y's)404 b(Shared)h(Memory)e(Library)5882
+60352 y(The)591 b(follo)-34 b(wing)591 b(table)g(giv)-34
+b(es)590 b(the)g(run)h(time)g(and)g(selected)f(p)34 b(erformance)590
+b(coun)-34 b(ters)591 b(for)g(these)4000 61858 y(9)547
+b(runs.)967 b(In)547 b(all)f(cases,)581 b(the)548 b(solutions)f(agreed)
+g(w)-34 b(ell)546 b(with)i(eac)-34 b(h)547 b(other,)582
+b(sho)-34 b(wing)548 b(exp)34 b(ected)546 b(small)4000
+63363 y(v)-67 b(ariations)413 b(with)h(grid)g(size.)566
+b(In)413 b(the)h(table,)i(M-P)d(denotes)h(the)g(message-passing)h
+(library)-101 b(,)414 b(R)-101 b(T)414 b(is)g(the)4000
+64869 y(rep)34 b(orted)427 b(run)h(time)f(in)g(CPU)g(seconds,)434
+b Fq(nst)428 b Fs(is)f(the)g(n)-34 b(um)g(b)34 b(er)429
+b(of)e(time)g(steps,)434 b Fq(nfe)428 b Fs(is)f(the)g(n)-34
+b(um)g(b)34 b(er)429 b(of)4000 66374 y Fl(f)627 b Fs(ev)-67
+b(aluations,)518 b Fq(nni)497 b Fs(is)e(the)i(n)-34 b(um)g(b)34
+b(er)497 b(of)f(nonlinear)g(\(Newton\))h(iterations,)519
+b Fq(nli)497 b Fs(is)e(the)i(n)-34 b(um)g(b)34 b(er)497
+b(of)4000 67880 y(linear)403 b(\(Krylo)-34 b(v\))404
+b(iterations,)g(and)h Fq(npe)g Fs(is)f(the)h(n)-34 b(um)g(b)34
+b(er)405 b(of)f(ev)-67 b(aluations)404 b(of)h(the)f(preconditioner.)
+5882 69388 y(Some)562 b(of)g(the)h(results)f(w)-34 b(ere)562
+b(as)g(exp)34 b(ected,)601 b(and)562 b(some)g(w)-34 b(ere)562
+b(surprising.)1013 b(F)-101 b(or)562 b(a)g(giv)-34 b(en)562
+b(mesh)4000 70893 y(size,)436 b(v)-67 b(ariations)431
+b(in)g(p)34 b(erformance)430 b(coun)-34 b(ts)432 b(w)-34
+b(ere)431 b(small)f(or)h(absen)-34 b(t,)438 b(except)431
+b(for)g(mo)34 b(derate)430 b(\(but)i(still)4000 72399
+y(acceptable\))308 b(v)-67 b(ariations)308 b(for)g(SHMEM)h(in)f(the)h
+(smallest)f(case.)506 b(The)308 b(increase)g(in)g(costs)g(with)h(mesh)g
+(size)4000 73904 y(can)297 b(b)34 b(e)298 b(attributed)g(to)g(a)f
+(decline)g(in)g(the)h(qualit)-34 b(y)298 b(of)f(the)h(preconditioner,)
+319 b(whic)-34 b(h)298 b(neglects)f(most)h(of)f(the)4000
+75409 y(spatial)379 b(coupling.)530 b(The)379 b(preconditioner)f
+(qualit)-34 b(y)379 b(can)f(b)34 b(e)378 b(inferred)h(from)f(the)h
+(ratio)f Fq(nli/nni)p Fs(,)386 b(whic)-34 b(h)4000 76915
+y(is)347 b(the)g(a)-34 b(v)g(erage)347 b(n)-34 b(um)g(b)34
+b(er)348 b(of)g(Krylo)-34 b(v)346 b(iterations)h(p)34
+b(er)346 b(Newton)i(iteration.)520 b(The)347 b(most)h(in)-34
+b(teresting)348 b(\(and)4000 78420 y(unexp)34 b(ected\))411
+b(result)f(is)h(the)f(v)-67 b(ariation)410 b(of)h(run)g(time)f(with)h
+(library:)550 b(SHMEM)411 b(is)f(the)h(most)g(e\261cien)-34
+b(t,)p Black 27394 81741 a(25)p Black eop
+%%Page: 26 30
+26 29 bop Black Black Black Black Black 6771 6465 34055
+45 v 6749 7970 45 1506 v 7435 7518 a Fq(NPEX)p 10622
+7970 V 2475 w Fs(M-P)p 16580 7970 V 3020 w(R)-101 b(T)p
+20670 7970 V 2391 w Fq(nst)p 24422 7970 V 2788 w(nfe)p
+29118 7970 V 1844 w(nni)p 32870 7970 V 2788 w(nli)p 37566
+7970 V 1329 w(npe)p 40803 7970 V 6771 8014 34055 45 v
+6771 8236 V 6749 9741 45 1506 v 8405 9290 a Fs(8)p 10622
+9741 V 2533 w(MPICH)p 16580 9741 V 1868 w(436.)p 20670
+9741 V 1631 w(1391)p 24422 9741 V 2271 w(9907)p 29118
+9741 V 1329 w(1512)p 32870 9741 V 2271 w(8392)p 37566
+9741 V 2026 w(24)p 40803 9741 V 6771 9786 34055 45 v
+6749 11291 45 1506 v 8405 10839 a(8)p 10622 11291 V 2912
+w(EPCC)p 16580 11291 V 2247 w(355.)p 20670 11291 V 1631
+w(1391)p 24422 11291 V 2271 w(9907)p 29118 11291 V 1329
+w(1512)p 32870 11291 V 2271 w(8392)p 37566 11291 V 2026
+w(24)p 40803 11291 V 6771 11335 34055 45 v 6749 12841
+45 1506 v 8405 12389 a(8)p 10622 12841 V 2298 w(SHMEM)p
+16580 12841 V 1632 w(349.)p 20670 12841 V 1631 w(1999)p
+24422 12841 V 1329 w(10,326)p 29118 12841 V 1328 w(2096)p
+32870 12841 V 2271 w(8227)p 37566 12841 V 2026 w(34)p
+40803 12841 V 6771 12885 34055 45 v 6771 13106 V 6749
+14612 45 1506 v 8102 14160 a(16)p 10622 14612 V 2230
+w(MPICH)p 16580 14612 V 1868 w(676.)p 20670 14612 V 1631
+w(2513)p 24422 14612 V 1329 w(14,159)p 29118 14612 V
+1328 w(2583)p 32870 14612 V 1329 w(11,573)p 37566 14612
+V 2025 w(42)p 40803 14612 V 6771 14656 34055 45 v 6749
+16162 45 1506 v 8102 15710 a(16)p 10622 16162 V 2609
+w(EPCC)p 16580 16162 V 2247 w(494.)p 20670 16162 V 1631
+w(2513)p 24422 16162 V 1329 w(14,159)p 29118 16162 V
+1328 w(2583)p 32870 16162 V 1329 w(11,573)p 37566 16162
+V 2025 w(42)p 40803 16162 V 6771 16206 34055 45 v 6749
+17711 45 1506 v 8102 17260 a(16)p 10622 17711 V 1995
+w(SHMEM)p 16580 17711 V 1632 w(471.)p 20670 17711 V 1631
+w(2513)p 24422 17711 V 1329 w(14,160)p 29118 17711 V
+1328 w(2581)p 32870 17711 V 1329 w(11,576)p 37566 17711
+V 2025 w(42)p 40803 17711 V 6771 17756 34055 45 v 6771
+17977 V 6749 19482 45 1506 v 8102 19031 a(32)p 10622
+19482 V 2230 w(MPICH)p 16580 19482 V 1565 w(1367.)p 20670
+19482 V 1328 w(2536)p 24422 19482 V 1329 w(20,153)p 29118
+19482 V 1328 w(2696)p 32870 19482 V 1329 w(17,454)p 37566
+19482 V 2025 w(43)p 40803 19482 V 6771 19527 34055 45
+v 6749 21032 45 1506 v 8102 20581 a(32)p 10622 21032
+V 2609 w(EPCC)p 16580 21032 V 2247 w(737.)p 20670 21032
+V 1631 w(2536)p 24422 21032 V 1329 w(20,153)p 29118 21032
+V 1328 w(2696)p 32870 21032 V 1329 w(17,454)p 37566 21032
+V 2025 w(43)p 40803 21032 V 6771 21077 34055 45 v 6749
+22582 45 1506 v 8102 22130 a(32)p 10622 22582 V 1995
+w(SHMEM)p 16580 22582 V 1632 w(695.)p 20670 22582 V 1631
+w(2536)p 24422 22582 V 1329 w(20,121)p 29118 22582 V
+1328 w(2694)p 32870 22582 V 1329 w(17,424)p 37566 22582
+V 2025 w(43)p 40803 22582 V 6771 22626 34055 45 v Black
+2572 26014 a(T)g(able)405 b(1:)538 b(P)-34 b(arallel)403
+b Fp(cv)-27 b(ode)406 b Fs(test)e(results)g(vs)g(problem)g(size)g(and)h
+(message-passing)g(library)p Black Black 0 29681 a(but)k(EPCC)f(is)f(a)
+h(v)-34 b(ery)407 b(close)g(second,)h(and)h(MPICH)f(loses)f
+(considerable)g(e\261ciency)g(b)-34 b(y)408 b(comparison,)0
+31187 y(as)322 b(the)g(problem)g(size)f(gro)-34 b(ws.)512
+b(This)323 b(means)f(that)h(the)f(highly)g(p)34 b(ortable)322
+b(MPI)g(v)-34 b(ersion)321 b(of)i Fp(cv)-27 b(ode)p Fs(,)339
+b(with)0 32692 y(an)481 b(appropriate)f(c)-34 b(hoice)480
+b(of)g(MPI)g(implemen)-34 b(tation,)500 b(is)480 b(fully)g(comp)34
+b(etitiv)-34 b(e)480 b(with)h(the)f(Cra)-34 b(y-sp)34
+b(eci\257c)0 34198 y(v)-34 b(ersion)431 b(using)i(the)f(SHMEM)g
+(library)-101 b(.)621 b(While)430 b(the)j(o)-34 b(v)g(erall)431
+b(costs)h(do)g(not)g(prepresen)-34 b(t)433 b(a)e(w)-34
+b(ell-scaled)0 35703 y(parallel)336 b(algorithm)h(\(b)34
+b(ecause)337 b(of)h(the)f(preconditioner)h(c)-34 b(hoice\),)350
+b(the)337 b(cost)g(p)34 b(er)337 b(function)h(ev)-67
+b(aluation)337 b(is)0 37209 y(quite)378 b(\260at)h(for)g(EPCC)g(and)g
+(SHMEM,)g(at)f(.033)g(to)h(.037)f(\(for)h(MPICH)g(it)f(ranges)h(from)f
+(.044)g(to)h(.068\).)1882 38714 y(F)-101 b(or)384 b(tests)h(that)h
+(demonstrate)f(sp)34 b(eedup)386 b(from)e(parallelism,)j(w)-34
+b(e)385 b(consider)f(runs)h(with)h(\257xed)e(prob-)0
+40220 y(lem)507 b(size:)743 b Fq(MX)637 b(=)508 b Fs(800,)532
+b Fq(MY)637 b(=)508 b Fs(400.)847 b(Here)506 b(w)-34
+b(e)508 b(also)f(\257x)g(the)g(v)-34 b(ertical)506 b(subgrid)i
+(dimension)g(at)f Fq(MYSUB)0 41725 y(=)470 b Fs(50)f(and)i(the)f(v)-34
+b(ertical)468 b(pro)34 b(cessor)469 b(arra)-34 b(y)469
+b(dimension)i(at)e Fq(NPEY)638 b(=)470 b Fs(8,)486 b(but)470
+b(v)-67 b(ary)469 b(the)h(corresp)34 b(onding)0 43230
+y(horizon)-34 b(tal)377 b(sizes.)528 b(W)-101 b(e)376
+b(tak)-34 b(e)376 b Fq(NPEX)638 b(=)376 b Fs(8,)382 b(16,)f(and)c(32,)
+382 b(with)377 b Fq(MXSUB)638 b(=)376 b Fs(100,)382 b(50,)f(and)c(25,)
+382 b(resp)34 b(ectiv)-34 b(ely)-101 b(.)0 44736 y(The)419
+b(runs)g(for)g(the)g(three)f(cases)g(and)i(three)e(message-passing)h
+(libraries)f(all)g(sho)-34 b(w)420 b(v)-34 b(ery)417
+b(go)34 b(o)g(d)419 b(agree-)0 46241 y(men)-34 b(t)491
+b(in)e(solution)i(v)-67 b(alues)489 b(and)h(p)34 b(erformance)490
+b(coun)-34 b(ts.)796 b(The)490 b(run)g(times)g(for)g(EPCC)g(are)f(947,)
+511 b(494,)0 47747 y(and)370 b(278,)376 b(sho)-34 b(wing)371
+b(sp)34 b(eedups)370 b(of)g(1.92)f(and)h(1.78)f(as)g(the)h(n)-34
+b(um)g(b)34 b(er)371 b(of)e(pro)34 b(cessors)369 b(is)g(doubled)h(\(t)
+-34 b(wice\).)0 49252 y(F)-101 b(or)390 b(the)g(SHMEM)h(runs,)i(the)d
+(times)g(w)-34 b(ere)389 b(sligh)-34 b(tly)390 b(lo)-34
+b(w)g(er)390 b(and)h(the)f(ratios)g(w)-34 b(ere)390 b(1.98)g(and)g
+(1.91.)534 b(F)-101 b(or)0 50758 y(MPICH,)487 b(consisten)-34
+b(t)489 b(with)f(the)g(earlier)e(runs,)508 b(the)488
+b(run)g(times)f(w)-34 b(ere)488 b(considerably)f(higher,)508
+b(and)488 b(in)0 52263 y(fact)405 b(sho)-34 b(w)405 b(sp)34
+b(eedup)405 b(ratios)f(of)g(only)g(1.54)g(and)h(1.03.)p
+Black 23394 81741 a(26)p Black eop
+%%Page: 27 31
+27 30 bop Black Black 4000 7638 a Fr(References)p Black
+4000 10344 a Fs([1])p Black 606 w(A.)475 b(C.)h(Hindmarsh)h(and)g(R.)e
+(Serban.)752 b(User)475 b(Do)34 b(cumen)-34 b(tation)477
+b(for)f(CV)-34 b(ODE)477 b(v2.2.0.)750 b(T)-101 b(ec)-34
+b(hnical)5886 11849 y(Rep)34 b(ort)404 b(UCRL-SM-208108,)h(LLNL,)d
+(2004.)p Black 4000 14351 a([2])p Black 606 w(M.)414
+b(R.)h(Wittman.)571 b(T)-101 b(esting)415 b(of)h(PV)-34
+b(ODE,)414 b(a)h(P)-34 b(arallel)414 b(ODE)h(Solv)-34
+b(er.)569 b(T)-101 b(ec)-34 b(hnical)415 b(Rep)34 b(ort)416
+b(UCRL-)5886 15856 y(ID-125562,)403 b(LLNL,)g(August)i(1996.)p
+Black 27394 81741 a(27)p Black eop
+%%Page: 28 32
+28 31 bop Black Black 0 7638 a Fr(A)1793 b(Listing)600
+b(of)d Fb(cvdx.c)-1734 10674 y Fa(1)1328 b Fi(/*)-1734
+12003 y Fa(2)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)
+-1734 13331 y Fa(3)1909 b Fi(*)581 b($Revision: 1.1 $)-1734
+14659 y Fa(4)1909 b Fi(*)581 b($Date: 2005/10/27 13:20:41 $)-1734
+15988 y Fa(5)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)
+-1734 17316 y Fa(6)1909 b Fi(*)581 b(Programmer\(s\):)j(Scott)e(D.)f
+(Cohen,)h(Alan)g(C.)f(Hindmarsh)i(and)-1734 18645 y Fa(7)1909
+b Fi(*)9299 b(Radu)581 b(Serban)h(@)g(LLNL)-1734 19973
+y Fa(8)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)
+-1734 21301 y Fa(9)1909 b Fi(*)581 b(Example)i(problem:)-2140
+22630 y Fa(10)1909 b Fi(*)-2140 23958 y Fa(11)g Fi(*)581
+b(The)h(following)h(is)e(a)g(simple)h(example)h(problem,)f(with)g(the)f
+(coding)-2140 25286 y Fa(12)1909 b Fi(*)581 b(needed)h(for)g(its)g
+(solution)g(by)f(CVODE.)i(The)e(problem)h(is)g(from)-2140
+26615 y Fa(13)1909 b Fi(*)581 b(chemical)i(kinetics,)f(and)g(consists)g
+(of)g(the)f(following)i(three)f(rate)-2140 27943 y Fa(14)1909
+b Fi(*)581 b(equations:)-2140 29271 y Fa(15)1909 b Fi(*)2325
+b(dy1/dt)582 b(=)f(-.04*y1)h(+)g(1.e4*y2*y3)-2140 30600
+y Fa(16)1909 b Fi(*)2325 b(dy2/dt)582 b(=)f(.04*y1)h(-)g(1.e4*y2*y3)g
+(-)g(3.e7*\(y2\)^2)-2140 31928 y Fa(17)1909 b Fi(*)2325
+b(dy3/dt)582 b(=)f(3.e7*\(y2\)^2)-2140 33256 y Fa(18)1909
+b Fi(*)581 b(on)h(the)f(interval)i(from)f(t)f(=)g(0.0)h(to)f(t)h(=)f
+(4.e10,)h(with)g(initial)-2140 34585 y Fa(19)1909 b Fi(*)581
+b(conditions:)i(y1)f(=)f(1.0,)h(y2)f(=)g(y3)h(=)f(0.)h(The)f(problem)h
+(is)g(stiff.)-2140 35913 y Fa(20)1909 b Fi(*)581 b(While)h(integrating)
+h(the)f(system,)g(we)f(also)h(use)g(the)f(rootfinding)-2140
+37241 y Fa(21)1909 b Fi(*)581 b(feature)i(to)e(find)h(the)f(points)h
+(at)g(which)g(y1)f(=)h(1e-4)f(or)h(at)f(which)-2140 38570
+y Fa(22)1909 b Fi(*)581 b(y3)h(=)f(0.01.)h(This)g(program)g(solves)g
+(the)g(problem)g(with)g(the)f(BDF)h(method,)-2140 39898
+y Fa(23)1909 b Fi(*)581 b(Newton)h(iteration)h(with)f(the)f(CVDENSE)i
+(dense)e(linear)h(solver,)h(and)e(a)-2140 41227 y Fa(24)1909
+b Fi(*)581 b(user-supplied)j(Jacobian)e(routine.)-2140
+42555 y Fa(25)1909 b Fi(*)581 b(It)h(uses)g(a)f(scalar)h(relative)g
+(tolerance)h(and)e(a)h(vector)g(absolute)-2140 43883
+y Fa(26)1909 b Fi(*)581 b(tolerance.)i(Output)f(is)g(printed)g(in)f
+(decades)h(from)g(t)f(=)h(.4)f(to)h(t)f(=)g(4.e10.)-2140
+45212 y Fa(27)1909 b Fi(*)581 b(Run)h(statistics)h(\(optional)f
+(outputs\))h(are)e(printed)h(at)g(the)f(end.)-2140 46540
+y Fa(28)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)
+-2140 47868 y Fa(29)1909 b Fi(*/)-2140 49197 y Fa(30)-2140
+50525 y(31)1328 b Fi(#include)582 b(<stdio.h>)-2140 51853
+y Fa(32)-2140 53182 y(33)1328 b Fi(/*)581 b(Header)h(files)g(with)g(a)f
+(description)i(of)f(contents)g(used)g(in)f(cvdx.c)h(*/)-2140
+54510 y Fa(34)-2140 55838 y(35)1328 b Fi(#include)582
+b("sundialstypes.h")1746 b(/*)582 b(definition)g(of)g(type)g(realtype)
+9299 b(*/)-2140 57167 y Fa(36)1328 b Fi(#include)582
+b("cvode.h")6394 b(/*)582 b(prototypes)g(for)g(CVode*)g(functions)h
+(and)4649 b(*/)-2140 58495 y Fa(37)18181 b Fi(/*)582
+b(constants)g(CV_BDF,)g(CV_NEWTON,)h(CV_SV,)4650 b(*/)-2140
+59823 y Fa(38)18181 b Fi(/*)582 b(CV_NORMAL,)g(CV_SUCCESS,)h(and)f
+(CV_ROOT_RETURN)1164 b(*/)-2140 61152 y Fa(39)1328 b
+Fi(#include)582 b("cvdense.h")5232 b(/*)582 b(prototype)g(for)g
+(CVDense)12786 b(*/)-2140 62480 y Fa(40)1328 b Fi(#include)582
+b("nvector_serial.h")1165 b(/*)582 b(definitions)h(of)e(type)h
+(N_Vector,)g(macro)4650 b(*/)-2140 63808 y Fa(41)18181
+b Fi(/*)582 b(NV_Ith_S,)g(and)g(prototypes)g(for)g(N_VNew_Serial)h(*/)
+-2140 65137 y Fa(42)18181 b Fi(/*)582 b(and)f(N_VDestroy)16855
+b(*/)-2140 66465 y Fa(43)1328 b Fi(#include)582 b("dense.h")6394
+b(/*)582 b(definition)g(of)g(type)g(DenseMat)g(and)g(macro)3487
+b(*/)-2140 67794 y Fa(44)18181 b Fi(/*)582 b(DENSE_ELEM)19179
+b(*/)-2140 69122 y Fa(45)-2140 70450 y(46)1328 b Fi(/*)581
+b(User-defined)i(vector)f(and)g(matrix)g(accessor)g(macros:)h(Ith,)e
+(IJth)h(*/)-2140 71779 y Fa(47)-2140 73107 y(48)1328
+b Fi(/*)581 b(These)h(macros)g(are)g(defined)g(in)g(order)g(to)f(write)
+h(code)g(which)f(exactly)i(matches)-2140 74435 y Fa(49)3071
+b Fi(the)582 b(mathematical)h(problem)f(description)h(given)f(above.)
+-2140 75764 y Fa(50)-2140 77092 y(51)3071 b Fi(Ith\(v,i\))583
+b(references)f(the)g(ith)g(component)g(of)g(the)f(vector)h(v,)g(where)g
+(i)f(is)g(in)-2140 78420 y Fa(52)3071 b Fi(the)582 b(range)g([1..NEQ])g
+(and)g(NEQ)f(is)h(defined)g(below.)g(The)g(Ith)f(macro)h(is)g(defined)p
+Black 23394 81741 a Fs(28)p Black eop
+%%Page: 29 33
+29 32 bop Black Black 1860 7638 a Fa(53)3071 b Fi(using)582
+b(the)g(N_VIth)g(macro)g(in)f(nvector.h.)i(N_VIth)f(numbers)g(the)g
+(components)g(of)1860 8966 y Fa(54)3071 b Fi(a)582 b(vector)g(starting)
+g(from)g(0.)1860 10295 y Fa(55)1860 11623 y(56)3071 b
+Fi(IJth\(A,i,j\))583 b(references)g(the)e(\(i,j\)th)i(element)f(of)f
+(the)h(dense)g(matrix)g(A,)f(where)1860 12951 y Fa(57)3071
+b Fi(i)582 b(and)f(j)h(are)f(in)h(the)f(range)h([1..NEQ].)h(The)e(IJth)
+h(macro)g(is)f(defined)i(using)e(the)1860 14280 y Fa(58)3071
+b Fi(DENSE_ELEM)583 b(macro)f(in)f(dense.h.)i(DENSE_ELEM)f(numbers)h
+(rows)e(and)h(columns)g(of)g(a)1860 15608 y Fa(59)3071
+b Fi(dense)582 b(matrix)g(starting)h(from)e(0.)h(*/)1860
+16936 y Fa(60)1860 18265 y(61)1328 b Fi(#define)582 b(Ith\(v,i\))2326
+b(NV_Ith_S\(v,i-1\))4070 b(/*)582 b(Ith)f(numbers)h(components)h
+(1..NEQ)f(*/)1860 19593 y Fa(62)1328 b Fi(#define)582
+b(IJth\(A,i,j\))h(DENSE_ELEM\(A,i-1,j-1\))h(/*)e(IJth)f(numbers)i
+(rows,cols)f(1..NEQ)g(*/)1860 20922 y Fa(63)1860 22250
+y(64)1860 23578 y(65)1328 b Fi(/*)581 b(Problem)i(Constants)f(*/)1860
+24907 y Fa(66)1860 26235 y(67)1328 b Fi(#define)582 b(NEQ)1744
+b(3)9299 b(/*)581 b(number)h(of)g(equations)1163 b(*/)1860
+27563 y Fa(68)1328 b Fi(#define)582 b(Y1)2325 b(RCONST\(1.0\))3489
+b(/*)581 b(initial)h(y)g(components)g(*/)1860 28892 y
+Fa(69)1328 b Fi(#define)582 b(Y2)2325 b(RCONST\(0.0\))1860
+30220 y Fa(70)1328 b Fi(#define)582 b(Y3)2325 b(RCONST\(0.0\))1860
+31548 y Fa(71)1328 b Fi(#define)582 b(RTOL)1163 b(RCONST\(1.0e-4\))1746
+b(/*)581 b(scalar)h(relative)g(tolerance)6976 b(*/)1860
+32877 y Fa(72)1328 b Fi(#define)582 b(ATOL1)g(RCONST\(1.0e-8\))1746
+b(/*)581 b(vector)h(absolute)g(tolerance)h(components)g(*/)1860
+34205 y Fa(73)1328 b Fi(#define)582 b(ATOL2)g(RCONST\(1.0e-14\))1860
+35533 y Fa(74)1328 b Fi(#define)582 b(ATOL3)g(RCONST\(1.0e-6\))1860
+36862 y Fa(75)1328 b Fi(#define)582 b(T0)2325 b(RCONST\(0.0\))3489
+b(/*)581 b(initial)h(time)6393 b(*/)1860 38190 y Fa(76)1328
+b Fi(#define)582 b(T1)2325 b(RCONST\(0.4\))3489 b(/*)581
+b(first)h(output)g(time)3487 b(*/)1860 39518 y Fa(77)1328
+b Fi(#define)582 b(TMULT)g(RCONST\(10.0\))2908 b(/*)581
+b(output)h(time)g(factor)2906 b(*/)1860 40847 y Fa(78)1328
+b Fi(#define)582 b(NOUT)1163 b(12)8718 b(/*)581 b(number)h(of)g(output)
+g(times)f(*/)1860 42175 y Fa(79)1860 43504 y(80)1860
+44832 y(81)1328 b Fi(/*)581 b(Functions)i(Called)f(by)f(the)h(Solver)g
+(*/)1860 46160 y Fa(82)1860 47489 y(83)1328 b Fi(static)582
+b(void)g(f\(realtype)g(t,)g(N_Vector)g(y,)g(N_Vector)g(ydot,)g(void)g
+(*f_data\);)1860 48817 y Fa(84)1860 50145 y(85)1328 b
+Fi(static)582 b(void)g(g\(realtype)g(t,)g(N_Vector)g(y,)g(realtype)g
+(*gout,)g(void)g(*g_data\);)1860 51474 y Fa(86)1860 52802
+y(87)1328 b Fi(static)582 b(void)g(Jac\(long)g(int)g(N,)f(DenseMat)i
+(J,)e(realtype)h(t,)1860 54130 y Fa(88)10626 b Fi(N_Vector)583
+b(y,)e(N_Vector)i(fy,)e(void)h(*jac_data,)1860 55459
+y Fa(89)10626 b Fi(N_Vector)583 b(tmp1,)f(N_Vector)g(tmp2,)g(N_Vector)g
+(tmp3\);)1860 56787 y Fa(90)1860 58115 y(91)1328 b Fi(/*)581
+b(Private)i(functions)f(to)g(output)g(results)g(*/)1860
+59444 y Fa(92)1860 60772 y(93)1328 b Fi(static)582 b(void)g
+(PrintOutput\(realtype)i(t,)d(realtype)i(y1,)e(realtype)i(y2,)e
+(realtype)i(y3\);)1860 62100 y Fa(94)1328 b Fi(static)582
+b(void)g(PrintRootInfo\(int)h(root_f1,)g(int)e(root_f2\);)1860
+63429 y Fa(95)1860 64757 y(96)1328 b Fi(/*)581 b(Private)i(function)f
+(to)f(print)h(final)g(statistics)h(*/)1860 66086 y Fa(97)1860
+67414 y(98)1328 b Fi(static)582 b(void)g(PrintFinalStats\(void)i
+(*cvode_mem\);)1860 68742 y Fa(99)1454 70071 y(100)1328
+b Fi(/*)581 b(Private)i(function)f(to)f(check)h(function)h(return)f
+(values)g(*/)1454 71399 y Fa(101)1454 72727 y(102)1328
+b Fi(static)582 b(int)g(check_flag\(void)h(*flagvalue,)g(char)f
+(*funcname,)g(int)g(opt\);)1454 74056 y Fa(103)1454 75384
+y(104)1454 76712 y(105)1328 b Fi(/*)1454 78041 y Fa(106)1909
+b Fi(*-------------------------------)p Black 27394 81741
+a Fs(29)p Black eop
+%%Page: 30 34
+30 33 bop Black Black -2546 7638 a Fa(107)1909 b Fi(*)581
+b(Main)h(Program)-2546 8966 y Fa(108)1909 b Fi
+(*-------------------------------)-2546 10295 y Fa(109)g
+Fi(*/)-2546 11623 y Fa(110)-2546 12951 y(111)1328 b Fi(int)582
+b(main\(\))-2546 14280 y Fa(112)1328 b Fi({)-2546 15608
+y Fa(113)2490 b Fi(realtype)583 b(reltol,)f(t,)f(tout;)-2546
+16936 y Fa(114)2490 b Fi(N_Vector)583 b(y,)e(abstol;)-2546
+18265 y Fa(115)2490 b Fi(void)582 b(*cvode_mem;)-2546
+19593 y Fa(116)2490 b Fi(int)582 b(flag,)g(flagr,)g(iout;)-2546
+20922 y Fa(117)2490 b Fi(int)582 b(rootsfound[2];)-2546
+22250 y Fa(118)-2546 23578 y(119)2490 b Fi(y)582 b(=)f(abstol)h(=)f
+(NULL;)-2546 24907 y Fa(120)2490 b Fi(cvode_mem)583 b(=)e(NULL;)-2546
+26235 y Fa(121)-2546 27563 y(122)2490 b Fi(/*)582 b(Create)g(serial)g
+(vector)g(of)f(length)h(NEQ)g(for)g(I.C.)f(and)h(abstol)g(*/)-2546
+28892 y Fa(123)2490 b Fi(y)582 b(=)f(N_VNew_Serial\(NEQ\);)-2546
+30220 y Fa(124)2490 b Fi(if)582 b(\(check_flag\(\(void)h(*\)y,)f
+("N_VNew_Serial",)i(0\)\))d(return\(1\);)-2546 31548
+y Fa(125)2490 b Fi(abstol)582 b(=)g(N_VNew_Serial\(NEQ\);)-2546
+32877 y Fa(126)2490 b Fi(if)582 b(\(check_flag\(\(void)h(*\)abstol,)g
+("N_VNew_Serial",)g(0\)\))f(return\(1\);)-2546 34205
+y Fa(127)-2546 35533 y(128)2490 b Fi(/*)582 b(Initialize)g(y)g(*/)-2546
+36862 y Fa(129)2490 b Fi(Ith\(y,1\))583 b(=)e(Y1;)-2546
+38190 y Fa(130)2490 b Fi(Ith\(y,2\))583 b(=)e(Y2;)-2546
+39518 y Fa(131)2490 b Fi(Ith\(y,3\))583 b(=)e(Y3;)-2546
+40847 y Fa(132)-2546 42175 y(133)2490 b Fi(/*)582 b(Set)f(the)h(scalar)
+g(relative)g(tolerance)h(*/)-2546 43504 y Fa(134)2490
+b Fi(reltol)582 b(=)g(RTOL;)-2546 44832 y Fa(135)2490
+b Fi(/*)582 b(Set)f(the)h(vector)g(absolute)g(tolerance)h(*/)-2546
+46160 y Fa(136)2490 b Fi(Ith\(abstol,1\))583 b(=)f(ATOL1;)-2546
+47489 y Fa(137)2490 b Fi(Ith\(abstol,2\))583 b(=)f(ATOL2;)-2546
+48817 y Fa(138)2490 b Fi(Ith\(abstol,3\))583 b(=)f(ATOL3;)-2546
+50145 y Fa(139)-2546 51474 y(140)2490 b Fi(/*)-2546 52802
+y Fa(141)4234 b Fi(Call)581 b(CVodeCreate)i(to)f(create)g(the)f(solver)
+h(memory:)-2546 54130 y Fa(142)-2546 55459 y(143)4234
+b Fi(CV_BDF)2906 b(specifies)583 b(the)e(Backward)i(Differentiation)g
+(Formula)-2546 56787 y Fa(144)4234 b Fi(CV_NEWTON)1163
+b(specifies)583 b(a)e(Newton)h(iteration)-2546 58115
+y Fa(145)-2546 59444 y(146)4234 b Fi(A)581 b(pointer)h(to)g(the)f
+(integrator)i(problem)f(memory)g(is)g(returned)g(and)g(stored)g(in)f
+(cvode_mem.)-2546 60772 y Fa(147)2490 b Fi(*/)-2546 62100
+y Fa(148)-2546 63429 y(149)g Fi(cvode_mem)583 b(=)e
+(CVodeCreate\(CV_BDF,)j(CV_NEWTON\);)-2546 64757 y Fa(150)2490
+b Fi(if)582 b(\(check_flag\(\(void)h(*\)cvode_mem,)g("CVodeCreate",)h
+(0\)\))d(return\(1\);)-2546 66086 y Fa(151)-2546 67414
+y(152)2490 b Fi(/*)-2546 68742 y Fa(153)4234 b Fi(Call)581
+b(CVodeMalloc)i(to)f(initialize)g(the)g(integrator)h(memory:)-2546
+70071 y Fa(154)-2546 71399 y(155)4234 b Fi(cvode_mem)582
+b(is)g(the)f(pointer)h(to)g(the)g(integrator)g(memory)g(returned)h(by)e
+(CVodeCreate)-2546 72727 y Fa(156)4234 b Fi(f)5230 b(is)582
+b(the)f(user's)h(right)g(hand)g(side)g(function)g(in)f(y'=f\(t,y\))
+-2546 74056 y Fa(157)4234 b Fi(T0)4649 b(is)582 b(the)f(initial)h(time)
+-2546 75384 y Fa(158)4234 b Fi(y)5230 b(is)582 b(the)f(initial)h
+(dependent)h(variable)f(vector)-2546 76712 y Fa(159)4234
+b Fi(CV_SV)2906 b(specifies)583 b(scalar)f(relative)g(and)g(vector)g
+(absolute)g(tolerances)-2546 78041 y Fa(160)4234 b Fi(&reltol)1744
+b(is)582 b(a)f(pointer)h(to)g(the)f(scalar)h(relative)h(tolerance)p
+Black 23394 81741 a Fs(30)p Black eop
+%%Page: 31 35
+31 34 bop Black Black 1454 7638 a Fa(161)4234 b Fi(abstol)2325
+b(is)582 b(the)f(absolute)i(tolerance)f(vector)1454 8966
+y Fa(162)2490 b Fi(*/)1454 10295 y Fa(163)1454 11623
+y(164)g Fi(flag)582 b(=)f(CVodeMalloc\(cvode_mem,)k(f,)c(T0,)h(y,)f
+(CV_SV,)h(reltol,)g(abstol\);)1454 12951 y Fa(165)2490
+b Fi(if)582 b(\(check_flag\(&flag,)i("CVodeMalloc",)f(1\)\))e
+(return\(1\);)1454 14280 y Fa(166)1454 15608 y(167)2490
+b Fi(/*)582 b(Call)f(CVodeRootInit)j(to)d(specify)h(the)g(root)g
+(function)g(g)f(with)h(2)f(components)i(*/)1454 16936
+y Fa(168)2490 b Fi(flag)582 b(=)f(CVodeRootInit\(cvode_mem,)k(2,)d(g,)f
+(NULL\);)1454 18265 y Fa(169)2490 b Fi(if)582 b(\(check_flag\(&flag,)i
+("CVodeRootInit",)f(1\)\))f(return\(1\);)1454 19593 y
+Fa(170)1454 20922 y(171)2490 b Fi(/*)582 b(Call)f(CVDense)i(to)e
+(specify)h(the)g(CVDENSE)g(dense)g(linear)g(solver)g(*/)1454
+22250 y Fa(172)2490 b Fi(flag)582 b(=)f(CVDense\(cvode_mem,)j(NEQ\);)
+1454 23578 y Fa(173)2490 b Fi(if)582 b(\(check_flag\(&flag,)i
+("CVDense",)e(1\)\))g(return\(1\);)1454 24907 y Fa(174)1454
+26235 y(175)2490 b Fi(/*)582 b(Set)f(the)h(Jacobian)g(routine)g(to)g
+(Jac)g(\(user-supplied\))h(*/)1454 27563 y Fa(176)2490
+b Fi(flag)582 b(=)f(CVDenseSetJacFn\(cvode_mem,)k(Jac,)d(NULL\);)1454
+28892 y Fa(177)2490 b Fi(if)582 b(\(check_flag\(&flag,)i
+("CVDenseSetJacFn",)f(1\)\))f(return\(1\);)1454 30220
+y Fa(178)1454 31548 y(179)2490 b Fi(/*)582 b(In)f(loop,)h(call)g
+(CVode,)g(print)g(results,)g(and)g(test)f(for)h(error.)1454
+32877 y Fa(180)4234 b Fi(Break)582 b(out)f(of)h(loop)f(when)h(NOUT)g
+(preset)g(output)g(times)g(have)g(been)f(reached.)1164
+b(*/)1454 34205 y Fa(181)2490 b Fi(printf\(")583 b(\\n3-species)f
+(kinetics)h(problem\\n\\n"\);)1454 35533 y Fa(182)1454
+36862 y(183)2490 b Fi(iout)582 b(=)f(0;)1163 b(tout)582
+b(=)f(T1;)1454 38190 y Fa(184)2490 b Fi(while\(1\))583
+b({)1454 39518 y Fa(185)3653 b Fi(flag)581 b(=)h(CVode\(cvode_mem,)h
+(tout,)f(y,)g(&t,)f(CV_NORMAL\);)1454 40847 y Fa(186)3653
+b Fi(PrintOutput\(t,)583 b(Ith\(y,1\),)f(Ith\(y,2\),)h(Ith\(y,3\)\);)
+1454 42175 y Fa(187)1454 43504 y(188)3653 b Fi(if)581
+b(\(flag)h(==)f(CV_ROOT_RETURN\))j({)1454 44832 y Fa(189)4815
+b Fi(flagr)582 b(=)f(CVodeGetRootInfo\(cvode_mem,)k(rootsfound\);)1454
+46160 y Fa(190)4815 b Fi(check_flag\(&flagr,)584 b("CVodeGetRootInfo",)
+g(1\);)1454 47489 y Fa(191)4815 b Fi
+(PrintRootInfo\(rootsfound[0],rootsfound[1]\);)1454 48817
+y Fa(192)3653 b Fi(})1454 50145 y Fa(193)1454 51474 y(194)g
+Fi(if)581 b(\(check_flag\(&flag,)j("CVode",)e(1\)\))g(break;)1454
+52802 y Fa(195)3653 b Fi(if)581 b(\(flag)h(==)f(CV_SUCCESS\))i({)1454
+54130 y Fa(196)4815 b Fi(iout++;)1454 55459 y Fa(197)g
+Fi(tout)582 b(*=)f(TMULT;)1454 56787 y Fa(198)3653 b
+Fi(})1454 58115 y Fa(199)1454 59444 y(200)g Fi(if)581
+b(\(iout)h(==)f(NOUT\))h(break;)1454 60772 y Fa(201)2490
+b Fi(})1454 62100 y Fa(202)1454 63429 y(203)g Fi(/*)582
+b(Print)g(some)f(final)h(statistics)h(*/)1454 64757 y
+Fa(204)2490 b Fi(PrintFinalStats\(cvode_mem\);)1454 66086
+y Fa(205)1454 67414 y(206)g Fi(/*)582 b(Free)f(y)h(vector)g(*/)1454
+68742 y Fa(207)2490 b Fi(N_VDestroy_Serial\(y\);)1454
+70071 y Fa(208)1454 71399 y(209)g Fi(/*)582 b(Free)f(integrator)i
+(memory)f(*/)1454 72727 y Fa(210)2490 b Fi(CVodeFree\(cvode_mem\);)1454
+74056 y Fa(211)1454 75384 y(212)g Fi(return\(0\);)1454
+76712 y Fa(213)1328 b Fi(})1454 78041 y Fa(214)p Black
+27394 81741 a Fs(31)p Black eop
+%%Page: 32 36
+32 35 bop Black Black -2546 7638 a Fa(215)-2546 8966
+y(216)1328 b Fi(/*)-2546 10295 y Fa(217)1909 b Fi
+(*-------------------------------)-2546 11623 y Fa(218)g
+Fi(*)581 b(Functions)i(called)f(by)f(the)h(solver)-2546
+12951 y Fa(219)1909 b Fi(*-------------------------------)-2546
+14280 y Fa(220)g Fi(*/)-2546 15608 y Fa(221)-2546 16936
+y(222)1328 b Fi(/*)-2546 18265 y Fa(223)1909 b Fi(*)581
+b(f)h(routine.)g(Compute)g(function)h(f\(t,y\).)-2546
+19593 y Fa(224)1909 b Fi(*/)-2546 20922 y Fa(225)-2546
+22250 y(226)1328 b Fi(static)582 b(void)g(f\(realtype)g(t,)g(N_Vector)g
+(y,)g(N_Vector)g(ydot,)g(void)g(*f_data\))-2546 23578
+y Fa(227)1328 b Fi({)-2546 24907 y Fa(228)2490 b Fi(realtype)583
+b(y1,)e(y2,)h(y3,)f(yd1,)h(yd3;)-2546 26235 y Fa(229)-2546
+27563 y(230)2490 b Fi(y1)582 b(=)f(Ith\(y,1\);)i(y2)e(=)g(Ith\(y,2\);)i
+(y3)e(=)h(Ith\(y,3\);)-2546 28892 y Fa(231)-2546 30220
+y(232)2490 b Fi(yd1)582 b(=)f(Ith\(ydot,1\))i(=)e(RCONST\(-0.04\)*y1)j
+(+)d(RCONST\(1.0e4\)*y2*y3;)-2546 31548 y Fa(233)2490
+b Fi(yd3)582 b(=)f(Ith\(ydot,3\))i(=)e(RCONST\(3.0e7\)*y2*y2;)-2546
+32877 y Fa(234)5977 b Fi(Ith\(ydot,2\))583 b(=)e(-yd1)h(-)f(yd3;)-2546
+34205 y Fa(235)1328 b Fi(})-2546 35533 y Fa(236)-2546
+36862 y(237)g Fi(/*)-2546 38190 y Fa(238)1909 b Fi(*)581
+b(g)h(routine.)g(Compute)g(functions)h(g_i\(t,y\))f(for)g(i)f(=)g(0,1.)
+-2546 39518 y Fa(239)1909 b Fi(*/)-2546 40847 y Fa(240)-2546
+42175 y(241)1328 b Fi(static)582 b(void)g(g\(realtype)g(t,)g(N_Vector)g
+(y,)g(realtype)g(*gout,)g(void)g(*g_data\))-2546 43504
+y Fa(242)1328 b Fi({)-2546 44832 y Fa(243)2490 b Fi(realtype)583
+b(y1,)e(y3;)-2546 46160 y Fa(244)-2546 47489 y(245)2490
+b Fi(y1)582 b(=)f(Ith\(y,1\);)i(y3)e(=)g(Ith\(y,3\);)-2546
+48817 y Fa(246)2490 b Fi(gout[0])582 b(=)g(y1)f(-)h(RCONST\(0.0001\);)
+-2546 50145 y Fa(247)2490 b Fi(gout[1])582 b(=)g(y3)f(-)h
+(RCONST\(0.01\);)-2546 51474 y Fa(248)1328 b Fi(})-2546
+52802 y Fa(249)-2546 54130 y(250)g Fi(/*)-2546 55459
+y Fa(251)1909 b Fi(*)581 b(Jacobian)i(routine.)f(Compute)g(J\(t,y\))g
+(=)g(df/dy.)g(*)-2546 56787 y Fa(252)1909 b Fi(*/)-2546
+58115 y Fa(253)-2546 59444 y(254)1328 b Fi(static)582
+b(void)g(Jac\(long)g(int)g(N,)f(DenseMat)i(J,)e(realtype)h(t,)-2546
+60772 y Fa(255)10626 b Fi(N_Vector)583 b(y,)e(N_Vector)i(fy,)e(void)h
+(*jac_data,)-2546 62100 y Fa(256)10626 b Fi(N_Vector)583
+b(tmp1,)f(N_Vector)g(tmp2,)g(N_Vector)g(tmp3\))-2546
+63429 y Fa(257)1328 b Fi({)-2546 64757 y Fa(258)2490
+b Fi(realtype)583 b(y1,)e(y2,)h(y3;)-2546 66086 y Fa(259)-2546
+67414 y(260)2490 b Fi(y1)582 b(=)f(Ith\(y,1\);)i(y2)e(=)g(Ith\(y,2\);)i
+(y3)e(=)h(Ith\(y,3\);)-2546 68742 y Fa(261)-2546 70071
+y(262)2490 b Fi(IJth\(J,1,1\))583 b(=)e(RCONST\(-0.04\);)-2546
+71399 y Fa(263)2490 b Fi(IJth\(J,1,2\))583 b(=)e(RCONST\(1.0e4\)*y3;)
+-2546 72727 y Fa(264)2490 b Fi(IJth\(J,1,3\))583 b(=)e
+(RCONST\(1.0e4\)*y2;)-2546 74056 y Fa(265)2490 b Fi(IJth\(J,2,1\))583
+b(=)e(RCONST\(0.04\);)-2546 75384 y Fa(266)2490 b Fi(IJth\(J,2,2\))583
+b(=)e(RCONST\(-1.0e4\)*y3-RCONST\(6.0e7\)*y2;)-2546 76712
+y Fa(267)2490 b Fi(IJth\(J,2,3\))583 b(=)e(RCONST\(-1.0e4\)*y2;)-2546
+78041 y Fa(268)2490 b Fi(IJth\(J,3,2\))583 b(=)e(RCONST\(6.0e7\)*y2;)p
+Black 23394 81741 a Fs(32)p Black eop
+%%Page: 33 37
+33 36 bop Black Black 1454 7638 a Fa(269)1328 b Fi(})1454
+8966 y Fa(270)1454 10295 y(271)g Fi(/*)1454 11623 y Fa(272)1909
+b Fi(*-------------------------------)1454 12951 y Fa(273)g
+Fi(*)581 b(Private)i(helper)f(functions)1454 14280 y
+Fa(274)1909 b Fi(*-------------------------------)1454
+15608 y Fa(275)g Fi(*/)1454 16936 y Fa(276)1454 18265
+y(277)1328 b Fi(static)582 b(void)g(PrintOutput\(realtype)i(t,)d
+(realtype)i(y1,)e(realtype)i(y2,)e(realtype)i(y3\))1454
+19593 y Fa(278)1328 b Fi({)1454 20922 y Fa(279)g Fi(#if)582
+b(defined\(SUNDIALS_EXTENDED_PRECISION\))1454 22250 y
+Fa(280)2490 b Fi(printf\("At)583 b(t)e(=)h(\0450.4Le)3487
+b(y)582 b(=\04514.6Le)1163 b(\04514.6Le)g(\04514.6Le\\n",)583
+b(t,)f(y1,)f(y2,)h(y3\);)1454 23578 y Fa(281)1328 b Fi(#elif)582
+b(defined\(SUNDIALS_DOUBLE_PRECISION\))1454 24907 y Fa(282)2490
+b Fi(printf\("At)583 b(t)e(=)h(\0450.4le)3487 b(y)582
+b(=\04514.6le)1163 b(\04514.6le)g(\04514.6le\\n",)583
+b(t,)f(y1,)f(y2,)h(y3\);)1454 26235 y Fa(283)1328 b Fi(#else)1454
+27563 y Fa(284)2490 b Fi(printf\("At)583 b(t)e(=)h(\0450.4e)3487
+b(y)581 b(=\04514.6e)1164 b(\04514.6e)f(\04514.6e\\n",)583
+b(t,)e(y1,)h(y2,)f(y3\);)1454 28892 y Fa(285)1328 b Fi(#endif)1454
+30220 y Fa(286)1454 31548 y(287)2490 b Fi(return;)1454
+32877 y Fa(288)1328 b Fi(})1454 34205 y Fa(289)1454 35533
+y(290)g Fi(static)582 b(void)g(PrintRootInfo\(int)h(root_f1,)g(int)e
+(root_f2\))1454 36862 y Fa(291)1328 b Fi({)1454 38190
+y Fa(292)2490 b Fi(printf\(")2326 b(rootsfound[])583
+b(=)e(\0453d)h(\0453d\\n",)g(root_f1,)g(root_f2\);)1454
+39518 y Fa(293)1454 40847 y(294)2490 b Fi(return;)1454
+42175 y Fa(295)1328 b Fi(})1454 43504 y Fa(296)1454 44832
+y(297)g Fi(/*)1454 46160 y Fa(298)1909 b Fi(*)581 b(Get)h(and)g(print)g
+(some)f(final)h(statistics)1454 47489 y Fa(299)1909 b
+Fi(*/)1454 48817 y Fa(300)1454 50145 y(301)1328 b Fi(static)582
+b(void)g(PrintFinalStats\(void)i(*cvode_mem\))1454 51474
+y Fa(302)1328 b Fi({)1454 52802 y Fa(303)2490 b Fi(long)582
+b(int)g(nst,)f(nfe,)h(nsetups,)g(njeD,)g(nfeD,)g(nni,)g(ncfn,)g(netf,)g
+(nge;)1454 54130 y Fa(304)2490 b Fi(int)582 b(flag;)1454
+55459 y Fa(305)1454 56787 y(306)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumSteps\(cvode_mem,)586 b(&nst\);)1454 58115
+y Fa(307)2490 b Fi(check_flag\(&flag,)584 b("CVodeGetNumSteps",)g(1\);)
+1454 59444 y Fa(308)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumRhsEvals\(cvode_mem,)586 b(&nfe\);)1454 60772
+y Fa(309)2490 b Fi(check_flag\(&flag,)584 b("CVodeGetNumRhsEvals",)g
+(1\);)1454 62100 y Fa(310)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumLinSolvSetups\(cvode_mem,)587 b(&nsetups\);)1454
+63429 y Fa(311)2490 b Fi(check_flag\(&flag,)584 b
+("CVodeGetNumLinSolvSetups",)h(1\);)1454 64757 y Fa(312)2490
+b Fi(flag)582 b(=)f(CVodeGetNumErrTestFails\(cvode_mem,)587
+b(&netf\);)1454 66086 y Fa(313)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumErrTestFails",)h(1\);)1454 67414 y Fa(314)2490
+b Fi(flag)582 b(=)f(CVodeGetNumNonlinSolvIters\(cvode_mem,)587
+b(&nni\);)1454 68742 y Fa(315)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumNonlinSolvIters",)h(1\);)1454 70071 y Fa(316)2490
+b Fi(flag)582 b(=)f(CVodeGetNumNonlinSolvConvFails\(cvode_mem,)588
+b(&ncfn\);)1454 71399 y Fa(317)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumNonlinSolvConvFails",)i(1\);)1454 72727
+y Fa(318)1454 74056 y(319)2490 b Fi(flag)582 b(=)f
+(CVDenseGetNumJacEvals\(cvode_mem,)586 b(&njeD\);)1454
+75384 y Fa(320)2490 b Fi(check_flag\(&flag,)584 b
+("CVDenseGetNumJacEvals",)h(1\);)1454 76712 y Fa(321)2490
+b Fi(flag)582 b(=)f(CVDenseGetNumRhsEvals\(cvode_mem,)586
+b(&nfeD\);)1454 78041 y Fa(322)2490 b Fi(check_flag\(&flag,)584
+b("CVDenseGetNumRhsEvals",)h(1\);)p Black 27394 81741
+a Fs(33)p Black eop
+%%Page: 34 38
+34 37 bop Black Black -2546 7638 a Fa(323)-2546 8966
+y(324)2490 b Fi(flag)582 b(=)f(CVodeGetNumGEvals\(cvode_mem,)586
+b(&nge\);)-2546 10295 y Fa(325)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumGEvals",)g(1\);)-2546 11623 y Fa(326)-2546
+12951 y(327)2490 b Fi(printf\("\\nFinal)584 b(Statistics:\\n"\);)-2546
+14280 y Fa(328)2490 b Fi(printf\("nst)583 b(=)e(\045-6ld)h(nfe)1163
+b(=)581 b(\045-6ld)h(nsetups)g(=)g(\045-6ld)g(nfeD)f(=)h(\045-6ld)g
+(njeD)f(=)h(\045ld\\n",)-2546 15608 y Fa(329)6558 b Fi(nst,)582
+b(nfe,)g(nsetups,)g(nfeD,)g(njeD\);)-2546 16936 y Fa(330)2490
+b Fi(printf\("nni)583 b(=)e(\045-6ld)h(ncfn)g(=)f(\045-6ld)h(netf)g(=)f
+(\045-6ld)h(nge)g(=)f(\045ld\\n)h(\\n",)-2546 18265 y
+Fa(331)6558 b Fi(nni,)582 b(ncfn,)g(netf,)g(nge\);)-2546
+19593 y Fa(332)1328 b Fi(})-2546 20922 y Fa(333)-2546
+22250 y(334)g Fi(/*)-2546 23578 y Fa(335)1909 b Fi(*)581
+b(Check)h(function)h(return)f(value...)-2546 24907 y
+Fa(336)1909 b Fi(*)1744 b(opt)581 b(==)h(0)f(means)h(SUNDIALS)g
+(function)h(allocates)f(memory)g(so)g(check)g(if)-2546
+26235 y Fa(337)1909 b Fi(*)6974 b(returned)582 b(NULL)g(pointer)-2546
+27563 y Fa(338)1909 b Fi(*)1744 b(opt)581 b(==)h(1)f(means)h(SUNDIALS)g
+(function)h(returns)f(a)f(flag)h(so)f(check)h(if)-2546
+28892 y Fa(339)1909 b Fi(*)6974 b(flag)582 b(>=)f(0)-2546
+30220 y Fa(340)1909 b Fi(*)1744 b(opt)581 b(==)h(2)f(means)h(function)g
+(allocates)h(memory)f(so)f(check)h(if)g(returned)-2546
+31548 y Fa(341)1909 b Fi(*)6974 b(NULL)582 b(pointer)-2546
+32877 y Fa(342)1909 b Fi(*/)-2546 34205 y Fa(343)-2546
+35533 y(344)1328 b Fi(static)582 b(int)g(check_flag\(void)h
+(*flagvalue,)g(char)f(*funcname,)g(int)g(opt\))-2546
+36862 y Fa(345)1328 b Fi({)-2546 38190 y Fa(346)2490
+b Fi(int)582 b(*errflag;)-2546 39518 y Fa(347)-2546 40847
+y(348)2490 b Fi(/*)582 b(Check)g(if)f(SUNDIALS)h(function)h(returned)f
+(NULL)g(pointer)g(-)f(no)h(memory)g(allocated)g(*/)-2546
+42175 y Fa(349)2490 b Fi(if)582 b(\(opt)f(==)h(0)f(&&)h(flagvalue)g(==)
+g(NULL\))g({)-2546 43504 y Fa(350)3653 b Fi(fprintf\(stderr,)583
+b("\\nSUNDIALS_ERROR:)h(\045s\(\))e(failed)g(-)f(returned)h(NULL)g
+(pointer\\n\\n",)-2546 44832 y Fa(351)8302 b Fi(funcname\);)-2546
+46160 y Fa(352)3653 b Fi(return\(1\);)582 b(})-2546 47489
+y Fa(353)-2546 48817 y(354)2490 b Fi(/*)582 b(Check)g(if)f(flag)h(<)f
+(0)g(*/)-2546 50145 y Fa(355)2490 b Fi(else)582 b(if)f(\(opt)h(==)g
+(1\))f({)-2546 51474 y Fa(356)3653 b Fi(errflag)582 b(=)f(\(int)h(*\))f
+(flagvalue;)-2546 52802 y Fa(357)3653 b Fi(if)581 b(\(*errflag)i(<)e
+(0\))g({)-2546 54130 y Fa(358)4815 b Fi(fprintf\(stderr,)583
+b("\\nSUNDIALS_ERROR:)h(\045s\(\))e(failed)g(with)g(flag)f(=)h
+(\045d\\n\\n",)-2546 55459 y Fa(359)9464 b Fi(funcname,)583
+b(*errflag\);)-2546 56787 y Fa(360)4815 b Fi(return\(1\);)583
+b(}})-2546 58115 y Fa(361)-2546 59444 y(362)2490 b Fi(/*)582
+b(Check)g(if)f(function)h(returned)h(NULL)f(pointer)g(-)f(no)g(memory)h
+(allocated)h(*/)-2546 60772 y Fa(363)2490 b Fi(else)582
+b(if)f(\(opt)h(==)g(2)f(&&)g(flagvalue)i(==)e(NULL\))h({)-2546
+62100 y Fa(364)3653 b Fi(fprintf\(stderr,)583 b("\\nMEMORY_ERROR:)h
+(\045s\(\))d(failed)h(-)g(returned)g(NULL)g(pointer\\n\\n",)-2546
+63429 y Fa(365)8302 b Fi(funcname\);)-2546 64757 y Fa(366)3653
+b Fi(return\(1\);)582 b(})-2546 66086 y Fa(367)-2546
+67414 y(368)2490 b Fi(return\(0\);)-2546 68742 y Fa(369)1328
+b Fi(})p Black 23394 81741 a Fs(34)p Black eop
+%%Page: 35 39
+35 38 bop Black Black 4000 7638 a Fr(B)1793 b(Listing)599
+b(of)f Fb(cvbx.c)2266 10674 y Fa(1)1328 b Fi(/*)2266
+12003 y Fa(2)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)2266
+13331 y Fa(3)1909 b Fi(*)581 b($Revision: 1.1 $)2266
+14659 y Fa(4)1909 b Fi(*)581 b($Date: 2005/10/27 13:20:41 $)2266
+15988 y Fa(5)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)2266
+17316 y Fa(6)1909 b Fi(*)581 b(Programmer\(s\):)j(Scott)e(D.)f(Cohen,)h
+(Alan)g(C.)f(Hindmarsh)i(and)2266 18645 y Fa(7)1909 b
+Fi(*)9299 b(Radu)581 b(Serban)h(@)g(LLNL)2266 19973 y
+Fa(8)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)2266
+21301 y Fa(9)1909 b Fi(*)581 b(Example)i(problem:)1860
+22630 y Fa(10)1909 b Fi(*)1860 23958 y Fa(11)g Fi(*)581
+b(The)h(following)h(is)e(a)g(simple)h(example)h(problem)f(with)f(a)h
+(banded)g(Jacobian,)1860 25286 y Fa(12)1909 b Fi(*)581
+b(with)h(the)g(program)g(for)g(its)f(solution)i(by)e(CVODE.)1860
+26615 y Fa(13)1909 b Fi(*)581 b(The)h(problem)g(is)g(the)f
+(semi-discrete)i(form)f(of)g(the)f(advection-diffusion)1860
+27943 y Fa(14)1909 b Fi(*)581 b(equation)i(in)e(2-D:)1860
+29271 y Fa(15)1909 b Fi(*)1744 b(du/dt)582 b(=)f(d^2)h(u)f(/)g(dx^2)h
+(+)f(.5)h(du/dx)g(+)f(d^2)g(u)h(/)f(dy^2)1860 30600 y
+Fa(16)1909 b Fi(*)581 b(on)h(the)f(rectangle)i(0)e(<=)h(x)f(<=)g(2,)h
+(0)f(<=)h(y)f(<=)g(1,)h(and)f(the)h(time)1860 31928 y
+Fa(17)1909 b Fi(*)581 b(interval)i(0)e(<=)h(t)f(<=)g(1.)h(Homogeneous)h
+(Dirichlet)f(boundary)g(conditions)1860 33256 y Fa(18)1909
+b Fi(*)581 b(are)h(posed,)g(and)g(the)f(initial)h(condition)h(is)1860
+34585 y Fa(19)1909 b Fi(*)1744 b(u\(x,y,t=0\))582 b(=)g
+(x\(2-x\)y\(1-y\)exp\(5xy\).)1860 35913 y Fa(20)1909
+b Fi(*)581 b(The)h(PDE)g(is)f(discretized)i(on)e(a)h(uniform)g(MX+2)g
+(by)f(MY+2)h(grid)f(with)1860 37241 y Fa(21)1909 b Fi(*)581
+b(central)i(differencing,)g(and)e(with)h(boundary)g(values)g
+(eliminated,)1860 38570 y Fa(22)1909 b Fi(*)581 b(leaving)i(an)e(ODE)h
+(system)g(of)f(size)h(NEQ)g(=)f(MX*MY.)1860 39898 y Fa(23)1909
+b Fi(*)581 b(This)h(program)g(solves)g(the)g(problem)g(with)g(the)g
+(BDF)f(method,)h(Newton)1860 41227 y Fa(24)1909 b Fi(*)581
+b(iteration)i(with)f(the)f(CVBAND)h(band)g(linear)g(solver,)g(and)g(a)f
+(user-supplied)1860 42555 y Fa(25)1909 b Fi(*)581 b(Jacobian)i
+(routine.)1860 43883 y Fa(26)1909 b Fi(*)581 b(It)h(uses)g(scalar)g
+(relative)g(and)g(absolute)g(tolerances.)1860 45212 y
+Fa(27)1909 b Fi(*)581 b(Output)h(is)g(printed)g(at)g(t)f(=)g(.1,)h(.2,)
+f(...,)h(1.)1860 46540 y Fa(28)1909 b Fi(*)581 b(Run)h(statistics)h
+(\(optional)f(outputs\))h(are)e(printed)h(at)g(the)f(end.)1860
+47868 y Fa(29)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)1860
+49197 y Fa(30)1909 b Fi(*/)1860 50525 y Fa(31)1860 51853
+y(32)1328 b Fi(#include)582 b(<stdio.h>)1860 53182 y
+Fa(33)1328 b Fi(#include)582 b(<stdlib.h>)1860 54510
+y Fa(34)1328 b Fi(#include)582 b(<math.h>)1860 55838
+y Fa(35)1860 57167 y(36)1328 b Fi(/*)581 b(Header)h(files)g(with)g(a)f
+(description)i(of)f(contents)g(used)g(in)f(cvbx.c)h(*/)1860
+58495 y Fa(37)1860 59823 y(38)1328 b Fi(#include)582
+b("sundialstypes.h")1746 b(/*)582 b(definition)g(of)g(type)g(realtype)
+11043 b(*/)1860 61152 y Fa(39)1328 b Fi(#include)582
+b("cvode.h")6394 b(/*)582 b(prototypes)g(for)g(CVode*)g(functions)h
+(and)e(constants)i(*/)1860 62480 y Fa(40)18181 b Fi(/*)582
+b(CV_BDF,)g(CV_NEWTON,)h(CV_SS,)f(CV_NORMAL,)g(and)3488
+b(*/)1860 63808 y Fa(41)18181 b Fi(/*)582 b(CV_SUCCESS)20923
+b(*/)1860 65137 y Fa(42)1328 b Fi(#include)582 b("cvband.h")5813
+b(/*)582 b(prototype)g(for)g(CVBand)15111 b(*/)1860 66465
+y Fa(43)1328 b Fi(#include)582 b("nvector_serial.h")1165
+b(/*)582 b(definitions)h(of)e(type)h(N_Vector,)g(macro)6394
+b(*/)1860 67794 y Fa(44)18181 b Fi(/*)582 b(NV_DATA_S,)g(and)g
+(prototypes)h(for)e(N_VNew_Serial)1746 b(*/)1860 69122
+y Fa(45)18181 b Fi(/*)582 b(and)f(N_VDestroy_Serial)14532
+b(*/)1860 70450 y Fa(46)1328 b Fi(#include)582 b("band.h")6975
+b(/*)582 b(definitions)h(of)e(type)h(BandMat)g(and)g(macros)4650
+b(*/)1860 71779 y Fa(47)1860 73107 y(48)1328 b Fi(/*)581
+b(Problem)i(Constants)f(*/)1860 74435 y Fa(49)1860 75764
+y(50)1328 b Fi(#define)582 b(XMAX)1163 b(RCONST\(2.0\))2326
+b(/*)582 b(domain)g(boundaries)5232 b(*/)1860 77092 y
+Fa(51)1328 b Fi(#define)582 b(YMAX)1163 b(RCONST\(1.0\))1860
+78420 y Fa(52)1328 b Fi(#define)582 b(MX)2325 b(10)7555
+b(/*)582 b(mesh)g(dimensions)6394 b(*/)p Black 27394
+81741 a Fs(35)p Black eop
+%%Page: 36 40
+36 39 bop Black Black -2140 7638 a Fa(53)1328 b Fi(#define)582
+b(MY)2325 b(5)-2140 8966 y Fa(54)1328 b Fi(#define)582
+b(NEQ)1744 b(MX*MY)5812 b(/*)582 b(number)g(of)f(equations)4070
+b(*/)-2140 10295 y Fa(55)1328 b Fi(#define)582 b(ATOL)1163
+b(RCONST\(1.0e-5\))583 b(/*)f(scalar)g(absolute)g(tolerance)h(*/)-2140
+11623 y Fa(56)1328 b Fi(#define)582 b(T0)2325 b(RCONST\(0.0\))h(/*)582
+b(initial)g(time)8137 b(*/)-2140 12951 y Fa(57)1328 b
+Fi(#define)582 b(T1)2325 b(RCONST\(0.1\))h(/*)582 b(first)g(output)g
+(time)5231 b(*/)-2140 14280 y Fa(58)1328 b Fi(#define)582
+b(DTOUT)g(RCONST\(0.1\))2326 b(/*)582 b(output)g(time)g(increment)2907
+b(*/)-2140 15608 y Fa(59)1328 b Fi(#define)582 b(NOUT)1163
+b(10)7555 b(/*)582 b(number)g(of)f(output)h(times)2326
+b(*/)-2140 16936 y Fa(60)-2140 18265 y(61)1328 b Fi(#define)582
+b(ZERO)g(RCONST\(0.0\))-2140 19593 y Fa(62)1328 b Fi(#define)582
+b(HALF)g(RCONST\(0.5\))-2140 20922 y Fa(63)1328 b Fi(#define)582
+b(ONE)1163 b(RCONST\(1.0\))-2140 22250 y Fa(64)1328 b
+Fi(#define)582 b(TWO)1163 b(RCONST\(2.0\))-2140 23578
+y Fa(65)1328 b Fi(#define)582 b(FIVE)g(RCONST\(5.0\))-2140
+24907 y Fa(66)-2140 26235 y(67)1328 b Fi(/*)581 b(User-defined)i
+(vector)f(access)g(macro)g(IJth)g(*/)-2140 27563 y Fa(68)-2140
+28892 y(69)1328 b Fi(/*)581 b(IJth)h(is)g(defined)g(in)f(order)h(to)g
+(isolate)g(the)f(translation)i(from)f(the)-2140 30220
+y Fa(70)3071 b Fi(mathematical)583 b(2-dimensional)g(structure)g(of)e
+(the)h(dependent)g(variable)h(vector)-2140 31548 y Fa(71)3071
+b Fi(to)582 b(the)f(underlying)i(1-dimensional)g(storage.)-2140
+32877 y Fa(72)3071 b Fi(IJth\(vdata,i,j\))584 b(references)e(the)g
+(element)g(in)g(the)f(vdata)h(array)g(for)-2140 34205
+y Fa(73)3071 b Fi(u)582 b(at)f(mesh)h(point)g(\(i,j\),)g(where)g(1)f
+(<=)h(i)f(<=)g(MX,)h(1)f(<=)h(j)f(<=)g(MY.)-2140 35533
+y Fa(74)3071 b Fi(The)582 b(vdata)g(array)g(is)f(obtained)i(via)e(the)h
+(macro)g(call)f(vdata)h(=)g(NV_DATA_S\(v\),)-2140 36862
+y Fa(75)3071 b Fi(where)582 b(v)g(is)f(an)h(N_Vector.)-2140
+38190 y Fa(76)3071 b Fi(The)582 b(variables)h(are)e(ordered)h(by)g(the)
+f(y)h(index)g(j,)f(then)h(by)f(the)h(x)f(index)h(i.)f(*/)-2140
+39518 y Fa(77)-2140 40847 y(78)1328 b Fi(#define)582
+b(IJth\(vdata,i,j\))i(\(vdata[\(j-1\))f(+)e(\(i-1\)*MY]\))-2140
+42175 y Fa(79)-2140 43504 y(80)1328 b Fi(/*)581 b(Type)h(:)f(UserData)i
+(\(contains)f(grid)g(constants\))h(*/)-2140 44832 y Fa(81)-2140
+46160 y(82)1328 b Fi(typedef)582 b(struct)g({)-2140 47489
+y Fa(83)2490 b Fi(realtype)583 b(dx,)e(dy,)h(hdcoef,)g(hacoef,)g
+(vdcoef;)-2140 48817 y Fa(84)1328 b Fi(})581 b(*UserData;)-2140
+50145 y Fa(85)-2140 51474 y(86)1328 b Fi(/*)581 b(Private)i(Helper)f
+(Functions)g(*/)-2140 52802 y Fa(87)-2140 54130 y(88)1328
+b Fi(static)582 b(void)g(SetIC\(N_Vector)h(u,)e(UserData)i(data\);)
+-2140 55459 y Fa(89)1328 b Fi(static)582 b(void)g
+(PrintHeader\(realtype)i(reltol,)e(realtype)g(abstol,)h(realtype)f
+(umax\);)-2140 56787 y Fa(90)1328 b Fi(static)582 b(void)g
+(PrintOutput\(realtype)i(t,)d(realtype)i(umax,)f(long)f(int)h(nst\);)
+-2140 58115 y Fa(91)1328 b Fi(static)582 b(void)g
+(PrintFinalStats\(void)i(*cvode_mem\);)-2140 59444 y
+Fa(92)-2140 60772 y(93)1328 b Fi(/*)581 b(Private)i(function)f(to)f
+(check)h(function)h(return)f(values)g(*/)-2140 62100
+y Fa(94)-2140 63429 y(95)1328 b Fi(static)582 b(int)g(check_flag\(void)
+h(*flagvalue,)g(char)f(*funcname,)g(int)g(opt\);)-2140
+64757 y Fa(96)-2140 66086 y(97)1328 b Fi(/*)581 b(Functions)i(Called)f
+(by)f(the)h(Solver)g(*/)-2140 67414 y Fa(98)-2140 68742
+y(99)1328 b Fi(static)582 b(void)g(f\(realtype)g(t,)g(N_Vector)g(u,)g
+(N_Vector)g(udot,)g(void)g(*f_data\);)-2546 70071 y Fa(100)1328
+b Fi(static)582 b(void)g(Jac\(long)g(int)g(N,)f(long)h(int)g(mu,)f
+(long)h(int)f(ml,)h(BandMat)g(J,)-2546 71399 y Fa(101)10626
+b Fi(realtype)583 b(t,)e(N_Vector)i(u,)e(N_Vector)h(fu,)g(void)g
+(*jac_data,)-2546 72727 y Fa(102)10626 b Fi(N_Vector)583
+b(tmp1,)f(N_Vector)g(tmp2,)g(N_Vector)g(tmp3\);)-2546
+74056 y Fa(103)-2546 75384 y(104)1328 b Fi(/*)-2546 76712
+y Fa(105)1909 b Fi(*-------------------------------)-2546
+78041 y Fa(106)g Fi(*)581 b(Main)h(Program)p Black 23394
+81741 a Fs(36)p Black eop
+%%Page: 37 41
+37 40 bop Black Black 1454 7638 a Fa(107)1909 b Fi
+(*-------------------------------)1454 8966 y Fa(108)g
+Fi(*/)1454 10295 y Fa(109)1454 11623 y(110)1328 b Fi(int)582
+b(main\(void\))1454 12951 y Fa(111)1328 b Fi({)1454 14280
+y Fa(112)2490 b Fi(realtype)583 b(dx,)e(dy,)h(reltol,)g(abstol,)g(t,)g
+(tout,)g(umax;)1454 15608 y Fa(113)2490 b Fi(N_Vector)583
+b(u;)1454 16936 y Fa(114)2490 b Fi(UserData)583 b(data;)1454
+18265 y Fa(115)2490 b Fi(void)582 b(*cvode_mem;)1454
+19593 y Fa(116)2490 b Fi(int)582 b(iout,)g(flag;)1454
+20922 y Fa(117)2490 b Fi(long)582 b(int)g(nst;)1454 22250
+y Fa(118)1454 23578 y(119)2490 b Fi(u)582 b(=)f(NULL;)1454
+24907 y Fa(120)2490 b Fi(data)582 b(=)f(NULL;)1454 26235
+y Fa(121)2490 b Fi(cvode_mem)583 b(=)e(NULL;)1454 27563
+y Fa(122)1454 28892 y(123)2490 b Fi(/*)582 b(Create)g(a)f(serial)h
+(vector)g(*/)1454 30220 y Fa(124)1454 31548 y(125)2490
+b Fi(u)582 b(=)f(N_VNew_Serial\(NEQ\);)1165 b(/*)581
+b(Allocate)i(u)e(vector)h(*/)1454 32877 y Fa(126)2490
+b Fi(if\(check_flag\(\(void*\)u,)585 b("N_VNew_Serial",)e(0\)\))f
+(return\(1\);)1454 34205 y Fa(127)1454 35533 y(128)2490
+b Fi(reltol)582 b(=)g(ZERO;)1163 b(/*)581 b(Set)h(the)f(tolerances)i
+(*/)1454 36862 y Fa(129)2490 b Fi(abstol)582 b(=)g(ATOL;)1454
+38190 y Fa(130)1454 39518 y(131)2490 b Fi(data)582 b(=)f(\(UserData\))i
+(malloc\(sizeof)g(*data\);)1163 b(/*)582 b(Allocate)g(data)g(memory)g
+(*/)1454 40847 y Fa(132)2490 b Fi(if\(check_flag\(\(void)584
+b(*\)data,)e("malloc",)h(2\)\))f(return\(1\);)1454 42175
+y Fa(133)2490 b Fi(dx)582 b(=)f(data->dx)h(=)g(XMAX/\(MX+1\);)1164
+b(/*)581 b(Set)h(grid)g(coefficients)g(in)g(data)g(*/)1454
+43504 y Fa(134)2490 b Fi(dy)582 b(=)f(data->dy)h(=)g(YMAX/\(MY+1\);)
+1454 44832 y Fa(135)2490 b Fi(data->hdcoef)583 b(=)f(ONE/\(dx*dx\);)
+1454 46160 y Fa(136)2490 b Fi(data->hacoef)583 b(=)f(HALF/\(TWO*dx\);)
+1454 47489 y Fa(137)2490 b Fi(data->vdcoef)583 b(=)f(ONE/\(dy*dy\);)
+1454 48817 y Fa(138)1454 50145 y(139)2490 b Fi(SetIC\(u,)583
+b(data\);)1163 b(/*)581 b(Initialize)i(u)e(vector)h(*/)1454
+51474 y Fa(140)1454 52802 y(141)2490 b Fi(/*)1454 54130
+y Fa(142)4234 b Fi(Call)581 b(CvodeCreate)i(to)f(create)g(integrator)g
+(memory)1454 55459 y Fa(143)1454 56787 y(144)4234 b Fi(CV_BDF)2906
+b(specifies)583 b(the)e(Backward)i(Differentiation)g(Formula)1454
+58115 y Fa(145)4234 b Fi(CV_NEWTON)1163 b(specifies)583
+b(a)e(Newton)h(iteration)1454 59444 y Fa(146)1454 60772
+y(147)4234 b Fi(A)581 b(pointer)h(to)g(the)f(integrator)i(problem)f
+(memory)g(is)g(returned)g(and)1454 62100 y Fa(148)4234
+b Fi(stored)582 b(in)f(cvode_mem.)1454 63429 y Fa(149)2490
+b Fi(*/)1454 64757 y Fa(150)1454 66086 y(151)g Fi(cvode_mem)583
+b(=)e(CVodeCreate\(CV_BDF,)j(CV_NEWTON\);)1454 67414
+y Fa(152)2490 b Fi(if\(check_flag\(\(void)584 b(*\)cvode_mem,)f
+("CVodeCreate",)g(0\)\))f(return\(1\);)1454 68742 y Fa(153)1454
+70071 y(154)2490 b Fi(/*)1454 71399 y Fa(155)4234 b Fi(Call)581
+b(CVodeMalloc)i(to)f(initialize)g(the)g(integrator)h(memory:)1454
+72727 y Fa(156)1454 74056 y(157)4234 b Fi(cvode_mem)582
+b(is)g(the)f(pointer)h(to)g(the)g(integrator)g(memory)g(returned)h(by)e
+(CVodeCreate)1454 75384 y Fa(158)4234 b Fi(f)4068 b(is)581
+b(the)h(user's)g(right)g(hand)g(side)f(function)i(in)e(y'=f\(t,y\))1454
+76712 y Fa(159)4234 b Fi(T0)3487 b(is)581 b(the)h(initial)g(time)1454
+78041 y Fa(160)4234 b Fi(u)4068 b(is)581 b(the)h(initial)g(dependent)h
+(variable)f(vector)p Black 27394 81741 a Fs(37)p Black
+eop
+%%Page: 38 42
+38 41 bop Black Black -2546 7638 a Fa(161)4234 b Fi(CV_SS)1744
+b(specifies)582 b(scalar)g(relative)h(and)e(absolute)i(tolerances)-2546
+8966 y Fa(162)4234 b Fi(reltol)1163 b(is)581 b(the)h(scalar)g(relative)
+g(tolerance)-2546 10295 y Fa(163)4234 b Fi(&abstol)582
+b(is)f(a)h(pointer)g(to)f(the)h(scalar)g(absolute)g(tolerance)-2546
+11623 y Fa(164)2490 b Fi(*/)-2546 12951 y Fa(165)-2546
+14280 y(166)g Fi(flag)582 b(=)f(CVodeMalloc\(cvode_mem,)k(f,)c(T0,)h
+(u,)f(CV_SS,)h(reltol,)g(&abstol\);)-2546 15608 y Fa(167)2490
+b Fi(if\(check_flag\(&flag,)584 b("CVodeMalloc",)g(1\)\))d
+(return\(1\);)-2546 16936 y Fa(168)-2546 18265 y(169)2490
+b Fi(/*)582 b(Set)f(the)h(pointer)g(to)g(user-defined)h(data)e(*/)-2546
+19593 y Fa(170)-2546 20922 y(171)2490 b Fi(flag)582 b(=)f
+(CVodeSetFdata\(cvode_mem,)k(data\);)-2546 22250 y Fa(172)2490
+b Fi(if\(check_flag\(&flag,)584 b("CVodeSetFdata",)g(1\)\))e
+(return\(1\);)-2546 23578 y Fa(173)-2546 24907 y(174)2490
+b Fi(/*)582 b(Call)f(CVBand)i(to)e(specify)h(the)g(CVBAND)g(band)g
+(linear)g(solver)g(*/)-2546 26235 y Fa(175)-2546 27563
+y(176)2490 b Fi(flag)582 b(=)f(CVBand\(cvode_mem,)j(NEQ,)e(MY,)f(MY\);)
+-2546 28892 y Fa(177)2490 b Fi(if\(check_flag\(&flag,)584
+b("CVBand",)f(1\)\))f(return\(1\);)-2546 30220 y Fa(178)-2546
+31548 y(179)2490 b Fi(/*)582 b(Set)f(the)h(user-supplied)h(Jacobian)f
+(routine)h(Jac)e(and)-2546 32877 y Fa(180)4234 b Fi(the)581
+b(pointer)i(to)e(the)h(user-defined)h(block)e(data.)h(*/)-2546
+34205 y Fa(181)-2546 35533 y(182)2490 b Fi(flag)582 b(=)f
+(CVBandSetJacFn\(cvode_mem,)k(Jac,)d(data\);)-2546 36862
+y Fa(183)2490 b Fi(if\(check_flag\(&flag,)584 b("CVBandSetJacFn",)g
+(1\)\))e(return\(1\);)-2546 38190 y Fa(184)-2546 39518
+y(185)2490 b Fi(/*)582 b(In)f(loop)h(over)g(output)g(points:)g(call)g
+(CVode,)g(print)g(results,)g(test)g(for)f(errors)h(*/)-2546
+40847 y Fa(186)-2546 42175 y(187)2490 b Fi(umax)582 b(=)f
+(N_VMaxNorm\(u\);)-2546 43504 y Fa(188)2490 b Fi(PrintHeader\(reltol,)
+584 b(abstol,)e(umax\);)-2546 44832 y Fa(189)2490 b Fi(for\(iout=1,)583
+b(tout=T1;)f(iout)g(<=)g(NOUT;)g(iout++,)g(tout)f(+=)h(DTOUT\))g({)
+-2546 46160 y Fa(190)3653 b Fi(flag)581 b(=)h(CVode\(cvode_mem,)h
+(tout,)f(u,)g(&t,)f(CV_NORMAL\);)-2546 47489 y Fa(191)3653
+b Fi(if\(check_flag\(&flag,)584 b("CVode",)e(1\)\))g(break;)-2546
+48817 y Fa(192)3653 b Fi(umax)581 b(=)h(N_VMaxNorm\(u\);)-2546
+50145 y Fa(193)3653 b Fi(flag)581 b(=)h(CVodeGetNumSteps\(cvode_mem,)j
+(&nst\);)-2546 51474 y Fa(194)3653 b Fi(check_flag\(&flag,)583
+b("CVodeGetNumSteps",)h(1\);)-2546 52802 y Fa(195)3653
+b Fi(PrintOutput\(t,)583 b(umax,)f(nst\);)-2546 54130
+y Fa(196)2490 b Fi(})-2546 55459 y Fa(197)-2546 56787
+y(198)g Fi(PrintFinalStats\(cvode_mem\);)1167 b(/*)581
+b(Print)h(some)g(final)g(statistics)1745 b(*/)-2546 58115
+y Fa(199)-2546 59444 y(200)2490 b Fi(N_VDestroy_Serial\(u\);)1166
+b(/*)581 b(Free)h(the)g(u)f(vector)h(*/)-2546 60772 y
+Fa(201)2490 b Fi(CVodeFree\(cvode_mem\);)1166 b(/*)581
+b(Free)h(the)g(integrator)g(memory)g(*/)-2546 62100 y
+Fa(202)2490 b Fi(free\(data\);)6976 b(/*)581 b(Free)h(the)g(user)f
+(data)h(*/)-2546 63429 y Fa(203)-2546 64757 y(204)2490
+b Fi(return\(0\);)-2546 66086 y Fa(205)1328 b Fi(})-2546
+67414 y Fa(206)-2546 68742 y(207)g Fi(/*)-2546 70071
+y Fa(208)1909 b Fi(*-------------------------------)-2546
+71399 y Fa(209)g Fi(*)581 b(Functions)i(called)f(by)f(the)h(solver)
+-2546 72727 y Fa(210)1909 b Fi(*-------------------------------)-2546
+74056 y Fa(211)g Fi(*/)-2546 75384 y Fa(212)-2546 76712
+y(213)1328 b Fi(/*)581 b(f)h(routine.)g(Compute)g(f\(t,u\).)g(*/)-2546
+78041 y Fa(214)p Black 23394 81741 a Fs(38)p Black eop
+%%Page: 39 43
+39 42 bop Black Black 1454 7638 a Fa(215)1328 b Fi(static)582
+b(void)g(f\(realtype)g(t,)g(N_Vector)g(u,N_Vector)h(udot,)f(void)f
+(*f_data\))1454 8966 y Fa(216)1328 b Fi({)1454 10295
+y Fa(217)2490 b Fi(realtype)583 b(uij,)e(udn,)h(uup,)g(ult,)g(urt,)f
+(hordc,)h(horac,)g(verdc,)g(hdiff,)h(hadv,)e(vdiff;)1454
+11623 y Fa(218)2490 b Fi(realtype)583 b(*udata,)f(*dudata;)1454
+12951 y Fa(219)2490 b Fi(int)582 b(i,)f(j;)1454 14280
+y Fa(220)2490 b Fi(UserData)583 b(data;)1454 15608 y
+Fa(221)1454 16936 y(222)2490 b Fi(udata)582 b(=)f(NV_DATA_S\(u\);)1454
+18265 y Fa(223)2490 b Fi(dudata)582 b(=)g(NV_DATA_S\(udot\);)1454
+19593 y Fa(224)1454 20922 y(225)2490 b Fi(/*)582 b(Extract)g(needed)g
+(constants)g(from)g(data)g(*/)1454 22250 y Fa(226)1454
+23578 y(227)2490 b Fi(data)582 b(=)f(\(UserData\))i(f_data;)1454
+24907 y Fa(228)2490 b Fi(hordc)582 b(=)f(data->hdcoef;)1454
+26235 y Fa(229)2490 b Fi(horac)582 b(=)f(data->hacoef;)1454
+27563 y Fa(230)2490 b Fi(verdc)582 b(=)f(data->vdcoef;)1454
+28892 y Fa(231)1454 30220 y(232)2490 b Fi(/*)582 b(Loop)f(over)h(all)g
+(grid)g(points.)g(*/)1454 31548 y Fa(233)1454 32877 y(234)2490
+b Fi(for)582 b(\(j=1;)g(j)f(<=)h(MY;)f(j++\))h({)1454
+34205 y Fa(235)1454 35533 y(236)3653 b Fi(for)581 b(\(i=1;)h(i)f(<=)h
+(MX;)f(i++\))h({)1454 36862 y Fa(237)1454 38190 y(238)4815
+b Fi(/*)581 b(Extract)i(u)e(at)g(x_i,)h(y_j)g(and)f(four)h(neighboring)
+h(points)f(*/)1454 39518 y Fa(239)1454 40847 y(240)4815
+b Fi(uij)581 b(=)h(IJth\(udata,)h(i,)e(j\);)1454 42175
+y Fa(241)4815 b Fi(udn)581 b(=)h(\(j)f(==)h(1\))1162
+b(?)582 b(ZERO)f(:)h(IJth\(udata,)g(i,)g(j-1\);)1454
+43504 y Fa(242)4815 b Fi(uup)581 b(=)h(\(j)f(==)h(MY\))f(?)h(ZERO)f(:)h
+(IJth\(udata,)g(i,)g(j+1\);)1454 44832 y Fa(243)4815
+b Fi(ult)581 b(=)h(\(i)f(==)h(1\))1162 b(?)582 b(ZERO)f(:)h
+(IJth\(udata,)g(i-1,)g(j\);)1454 46160 y Fa(244)4815
+b Fi(urt)581 b(=)h(\(i)f(==)h(MX\))f(?)h(ZERO)f(:)h(IJth\(udata,)g
+(i+1,)g(j\);)1454 47489 y Fa(245)1454 48817 y(246)4815
+b Fi(/*)581 b(Set)h(diffusion)g(and)g(advection)h(terms)e(and)h(load)g
+(into)f(udot)h(*/)1454 50145 y Fa(247)1454 51474 y(248)4815
+b Fi(hdiff)582 b(=)f(hordc*\(ult)i(-)e(TWO*uij)h(+)g(urt\);)1454
+52802 y Fa(249)4815 b Fi(hadv)582 b(=)f(horac*\(urt)i(-)e(ult\);)1454
+54130 y Fa(250)4815 b Fi(vdiff)582 b(=)f(verdc*\(uup)i(-)e(TWO*uij)h(+)
+g(udn\);)1454 55459 y Fa(251)4815 b Fi(IJth\(dudata,)583
+b(i,)e(j\))h(=)f(hdiff)h(+)f(hadv)h(+)f(vdiff;)1454 56787
+y Fa(252)3653 b Fi(})1454 58115 y Fa(253)2490 b Fi(})1454
+59444 y Fa(254)1328 b Fi(})1454 60772 y Fa(255)1454 62100
+y(256)g Fi(/*)581 b(Jacobian)i(routine.)f(Compute)g(J\(t,u\).)h(*/)1454
+63429 y Fa(257)1454 64757 y(258)1328 b Fi(static)582
+b(void)g(Jac\(long)g(int)g(N,)f(long)h(int)g(mu,)f(long)h(int)f(ml,)h
+(BandMat)g(J,)1454 66086 y Fa(259)10626 b Fi(realtype)583
+b(t,)e(N_Vector)i(u,)e(N_Vector)h(fu,)g(void)g(*jac_data,)1454
+67414 y Fa(260)10626 b Fi(N_Vector)583 b(tmp1,)f(N_Vector)g(tmp2,)g
+(N_Vector)g(tmp3\))1454 68742 y Fa(261)1328 b Fi({)1454
+70071 y Fa(262)2490 b Fi(long)582 b(int)g(i,)f(j,)h(k;)1454
+71399 y Fa(263)2490 b Fi(realtype)583 b(*kthCol,)f(hordc,)g(horac,)g
+(verdc;)1454 72727 y Fa(264)2490 b Fi(UserData)583 b(data;)1454
+74056 y Fa(265)1454 75384 y(266)2490 b Fi(/*)1454 76712
+y Fa(267)3653 b Fi(The)581 b(components)i(of)e(f)h(=)f(udot)h(that)f
+(depend)h(on)g(u\(i,j\))g(are)1454 78041 y Fa(268)3653
+b Fi(f\(i,j\),)582 b(f\(i-1,j\),)g(f\(i+1,j\),)h(f\(i,j-1\),)f
+(f\(i,j+1\),)h(with)p Black 27394 81741 a Fs(39)p Black
+eop
+%%Page: 40 44
+40 43 bop Black Black -2546 7638 a Fa(269)4815 b Fi
+(df\(i,j\)/du\(i,j\))583 b(=)f(-2)f(\(1/dx^2)h(+)g(1/dy^2\))-2546
+8966 y Fa(270)4815 b Fi(df\(i-1,j\)/du\(i,j\))584 b(=)d(1/dx^2)h(+)f
+(.25/dx)1163 b(\(if)582 b(i)f(>)h(1\))-2546 10295 y Fa(271)4815
+b Fi(df\(i+1,j\)/du\(i,j\))584 b(=)d(1/dx^2)h(-)f(.25/dx)1163
+b(\(if)582 b(i)f(<)h(MX\))-2546 11623 y Fa(272)4815 b
+Fi(df\(i,j-1\)/du\(i,j\))584 b(=)d(1/dy^2)6393 b(\(if)582
+b(j)f(>)h(1\))-2546 12951 y Fa(273)4815 b Fi(df\(i,j+1\)/du\(i,j\))584
+b(=)d(1/dy^2)6393 b(\(if)582 b(j)f(<)h(MY\))-2546 14280
+y Fa(274)2490 b Fi(*/)-2546 15608 y Fa(275)-2546 16936
+y(276)g Fi(data)582 b(=)f(\(UserData\))i(jac_data;)-2546
+18265 y Fa(277)2490 b Fi(hordc)582 b(=)f(data->hdcoef;)-2546
+19593 y Fa(278)2490 b Fi(horac)582 b(=)f(data->hacoef;)-2546
+20922 y Fa(279)2490 b Fi(verdc)582 b(=)f(data->vdcoef;)-2546
+22250 y Fa(280)-2546 23578 y(281)2490 b Fi(for)582 b(\(j=1;)g(j)f(<=)h
+(MY;)f(j++\))h({)-2546 24907 y Fa(282)3653 b Fi(for)581
+b(\(i=1;)h(i)f(<=)h(MX;)f(i++\))h({)-2546 26235 y Fa(283)4815
+b Fi(k)581 b(=)g(j-1)h(+)f(\(i-1\)*MY;)-2546 27563 y
+Fa(284)4815 b Fi(kthCol)582 b(=)f(BAND_COL\(J,k\);)-2546
+28892 y Fa(285)-2546 30220 y(286)4815 b Fi(/*)581 b(set)h(the)g(kth)f
+(column)h(of)g(J)f(*/)-2546 31548 y Fa(287)-2546 32877
+y(288)4815 b Fi(BAND_COL_ELEM\(kthCol,k,k\))585 b(=)c
+(-TWO*\(verdc+hordc\);)-2546 34205 y Fa(289)4815 b Fi(if)581
+b(\(i)h(!=)f(1\))1163 b(BAND_COL_ELEM\(kthCol,k-MY,k\))585
+b(=)c(hordc)h(+)g(horac;)-2546 35533 y Fa(290)4815 b
+Fi(if)581 b(\(i)h(!=)f(MX\))h(BAND_COL_ELEM\(kthCol,k+MY,k\))j(=)c
+(hordc)h(-)g(horac;)-2546 36862 y Fa(291)4815 b Fi(if)581
+b(\(j)h(!=)f(1\))1163 b(BAND_COL_ELEM\(kthCol,k-1,k\))j(=)581
+b(verdc;)-2546 38190 y Fa(292)4815 b Fi(if)581 b(\(j)h(!=)f(MY\))h
+(BAND_COL_ELEM\(kthCol,k+1,k\))1166 b(=)581 b(verdc;)-2546
+39518 y Fa(293)3653 b Fi(})-2546 40847 y Fa(294)2490
+b Fi(})-2546 42175 y Fa(295)1328 b Fi(})-2546 43504 y
+Fa(296)-2546 44832 y(297)g Fi(/*)-2546 46160 y Fa(298)1909
+b Fi(*-------------------------------)-2546 47489 y Fa(299)g
+Fi(*)581 b(Private)i(helper)f(functions)-2546 48817 y
+Fa(300)1909 b Fi(*-------------------------------)-2546
+50145 y Fa(301)g Fi(*/)-2546 51474 y Fa(302)-2546 52802
+y(303)1328 b Fi(/*)581 b(Set)h(initial)g(conditions)h(in)e(u)h(vector)g
+(*/)-2546 54130 y Fa(304)-2546 55459 y(305)1328 b Fi(static)582
+b(void)g(SetIC\(N_Vector)h(u,)e(UserData)i(data\))-2546
+56787 y Fa(306)1328 b Fi({)-2546 58115 y Fa(307)2490
+b Fi(int)582 b(i,)f(j;)-2546 59444 y Fa(308)2490 b Fi(realtype)583
+b(x,)e(y,)h(dx,)f(dy;)-2546 60772 y Fa(309)2490 b Fi(realtype)583
+b(*udata;)-2546 62100 y Fa(310)-2546 63429 y(311)2490
+b Fi(/*)582 b(Extract)g(needed)g(constants)g(from)g(data)g(*/)-2546
+64757 y Fa(312)-2546 66086 y(313)2490 b Fi(dx)582 b(=)f(data->dx;)-2546
+67414 y Fa(314)2490 b Fi(dy)582 b(=)f(data->dy;)-2546
+68742 y Fa(315)-2546 70071 y(316)2490 b Fi(/*)582 b(Set)f(pointer)i(to)
+e(data)h(array)g(in)f(vector)h(u.)g(*/)-2546 71399 y
+Fa(317)-2546 72727 y(318)2490 b Fi(udata)582 b(=)f(NV_DATA_S\(u\);)
+-2546 74056 y Fa(319)-2546 75384 y(320)2490 b Fi(/*)582
+b(Load)f(initial)i(profile)f(into)g(u)f(vector)h(*/)-2546
+76712 y Fa(321)-2546 78041 y(322)2490 b Fi(for)582 b(\(j=1;)g(j)f(<=)h
+(MY;)f(j++\))h({)p Black 23394 81741 a Fs(40)p Black
+eop
+%%Page: 41 45
+41 44 bop Black Black 1454 7638 a Fa(323)3653 b Fi(y)581
+b(=)g(j*dy;)1454 8966 y Fa(324)3653 b Fi(for)581 b(\(i=1;)h(i)f(<=)h
+(MX;)f(i++\))h({)1454 10295 y Fa(325)4815 b Fi(x)581
+b(=)g(i*dx;)1454 11623 y Fa(326)4815 b Fi(IJth\(udata,i,j\))583
+b(=)f(x*\(XMAX)g(-)f(x\)*y*\(YMAX)i(-)e(y\)*exp\(FIVE*x*y\);)1454
+12951 y Fa(327)3653 b Fi(})1454 14280 y Fa(328)2490 b
+Fi(})1454 15608 y Fa(329)1328 b Fi(})1454 16936 y Fa(330)1454
+18265 y(331)g Fi(/*)581 b(Print)h(first)g(lines)g(of)g(output)g
+(\(problem)g(description\))h(*/)1454 19593 y Fa(332)1454
+20922 y(333)1328 b Fi(static)582 b(void)g(PrintHeader\(realtype)i
+(reltol,)e(realtype)g(abstol,)h(realtype)f(umax\))1454
+22250 y Fa(334)1328 b Fi({)1454 23578 y Fa(335)2490 b
+Fi(printf\("\\n2-D)583 b(Advection-Diffusion)h(Equation\\n"\);)1454
+24907 y Fa(336)2490 b Fi(printf\("Mesh)583 b(dimensions)g(=)e(\045d)h
+(X)f(\045d\\n",)h(MX,)g(MY\);)1454 26235 y Fa(337)2490
+b Fi(printf\("Total)583 b(system)f(size)g(=)f(\045d\\n",)i(NEQ\);)1454
+27563 y Fa(338)1328 b Fi(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))1454 28892 y
+Fa(339)2490 b Fi(printf\("Tolerance)584 b(parameters:)f(reltol)f(=)f
+(\045Lg)1744 b(abstol)582 b(=)f(\045Lg\\n\\n",)i(reltol,)f(abstol\);)
+1454 30220 y Fa(340)2490 b Fi(printf\("At)583 b(t)e(=)h(\045Lg)3487
+b(max.norm\(u\))583 b(=\04514.6Le)f(\\n",)g(T0,)f(umax\);)1454
+31548 y Fa(341)1328 b Fi(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))1454 32877 y Fa(342)2490
+b Fi(printf\("Tolerance)584 b(parameters:)f(reltol)f(=)f(\045lg)1744
+b(abstol)582 b(=)f(\045lg\\n\\n",)i(reltol,)f(abstol\);)1454
+34205 y Fa(343)2490 b Fi(printf\("At)583 b(t)e(=)h(\045lg)3487
+b(max.norm\(u\))583 b(=\04514.6le)f(\\n",)g(T0,)f(umax\);)1454
+35533 y Fa(344)1328 b Fi(#else)1454 36862 y Fa(345)2490
+b Fi(printf\("Tolerance)584 b(parameters:)f(reltol)f(=)f(\045g)1744
+b(abstol)582 b(=)f(\045g\\n\\n",)i(reltol,)f(abstol\);)1454
+38190 y Fa(346)2490 b Fi(printf\("At)583 b(t)e(=)h(\045g)3487
+b(max.norm\(u\))583 b(=\04514.6e)f(\\n",)f(T0,)h(umax\);)1454
+39518 y Fa(347)1328 b Fi(#endif)1454 40847 y Fa(348)1454
+42175 y(349)2490 b Fi(return;)1454 43504 y Fa(350)1328
+b Fi(})1454 44832 y Fa(351)1454 46160 y(352)g Fi(/*)581
+b(Print)h(current)h(value)e(*/)1454 47489 y Fa(353)1454
+48817 y(354)1328 b Fi(static)582 b(void)g(PrintOutput\(realtype)i(t,)d
+(realtype)i(umax,)f(long)f(int)h(nst\))1454 50145 y Fa(355)1328
+b Fi({)1454 51474 y Fa(356)g Fi(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))1454 52802 y
+Fa(357)2490 b Fi(printf\("At)583 b(t)e(=)h(\0454.2Lf)1744
+b(max.norm\(u\))583 b(=\04514.6Le)1744 b(nst)582 b(=)f(\0454ld\\n",)i
+(t,)e(umax,)h(nst\);)1454 54130 y Fa(358)1328 b Fi(#elif)582
+b(defined\(SUNDIALS_DOUBLE_PRECISION\))1454 55459 y Fa(359)2490
+b Fi(printf\("At)583 b(t)e(=)h(\0454.2f)1744 b(max.norm\(u\))583
+b(=\04514.6le)1744 b(nst)582 b(=)f(\0454ld\\n",)h(t,)g(umax,)g(nst\);)
+1454 56787 y Fa(360)1328 b Fi(#else)1454 58115 y Fa(361)2490
+b Fi(printf\("At)583 b(t)e(=)h(\0454.2f)1744 b(max.norm\(u\))583
+b(=\04514.6e)1744 b(nst)582 b(=)f(\0454ld\\n",)h(t,)g(umax,)g(nst\);)
+1454 59444 y Fa(362)1328 b Fi(#endif)1454 60772 y Fa(363)1454
+62100 y(364)2490 b Fi(return;)1454 63429 y Fa(365)1328
+b Fi(})1454 64757 y Fa(366)1454 66086 y(367)g Fi(/*)581
+b(Get)h(and)g(print)g(some)f(final)h(statistics)h(*/)1454
+67414 y Fa(368)1454 68742 y(369)1328 b Fi(static)582
+b(void)g(PrintFinalStats\(void)i(*cvode_mem\))1454 70071
+y Fa(370)1328 b Fi({)1454 71399 y Fa(371)2490 b Fi(int)582
+b(flag;)1454 72727 y Fa(372)2490 b Fi(long)582 b(int)g(nst,)f(nfe,)h
+(nsetups,)g(netf,)g(nni,)g(ncfn,)g(njeB,)g(nfeB;)1454
+74056 y Fa(373)1454 75384 y(374)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumSteps\(cvode_mem,)586 b(&nst\);)1454 76712
+y Fa(375)2490 b Fi(check_flag\(&flag,)584 b("CVodeGetNumSteps",)g(1\);)
+1454 78041 y Fa(376)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumRhsEvals\(cvode_mem,)586 b(&nfe\);)p Black
+27394 81741 a Fs(41)p Black eop
+%%Page: 42 46
+42 45 bop Black Black -2546 7638 a Fa(377)2490 b Fi(check_flag\(&flag,)
+584 b("CVodeGetNumRhsEvals",)g(1\);)-2546 8966 y Fa(378)2490
+b Fi(flag)582 b(=)f(CVodeGetNumLinSolvSetups\(cvode_mem,)587
+b(&nsetups\);)-2546 10295 y Fa(379)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumLinSolvSetups",)h(1\);)-2546 11623 y Fa(380)2490
+b Fi(flag)582 b(=)f(CVodeGetNumErrTestFails\(cvode_mem,)587
+b(&netf\);)-2546 12951 y Fa(381)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumErrTestFails",)h(1\);)-2546 14280 y Fa(382)2490
+b Fi(flag)582 b(=)f(CVodeGetNumNonlinSolvIters\(cvode_mem,)587
+b(&nni\);)-2546 15608 y Fa(383)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumNonlinSolvIters",)h(1\);)-2546 16936 y
+Fa(384)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumNonlinSolvConvFails\(cvode_mem,)588 b(&ncfn\);)-2546
+18265 y Fa(385)2490 b Fi(check_flag\(&flag,)584 b
+("CVodeGetNumNonlinSolvConvFails",)i(1\);)-2546 19593
+y Fa(386)-2546 20922 y(387)2490 b Fi(flag)582 b(=)f
+(CVBandGetNumJacEvals\(cvode_mem,)586 b(&njeB\);)-2546
+22250 y Fa(388)2490 b Fi(check_flag\(&flag,)584 b
+("CVBandGetNumJacEvals",)h(1\);)-2546 23578 y Fa(389)2490
+b Fi(flag)582 b(=)f(CVBandGetNumRhsEvals\(cvode_mem,)586
+b(&nfeB\);)-2546 24907 y Fa(390)2490 b Fi(check_flag\(&flag,)584
+b("CVBandGetNumRhsEvals",)h(1\);)-2546 26235 y Fa(391)-2546
+27563 y(392)2490 b Fi(printf\("\\nFinal)584 b(Statistics:\\n"\);)-2546
+28892 y Fa(393)2490 b Fi(printf\("nst)583 b(=)e(\045-6ld)h(nfe)1163
+b(=)581 b(\045-6ld)h(nsetups)g(=)g(\045-6ld)g(nfeB)f(=)h(\045-6ld)g
+(njeB)f(=)h(\045ld\\n",)-2546 30220 y Fa(394)6558 b Fi(nst,)582
+b(nfe,)g(nsetups,)g(nfeB,)g(njeB\);)-2546 31548 y Fa(395)2490
+b Fi(printf\("nni)583 b(=)e(\045-6ld)h(ncfn)g(=)f(\045-6ld)h(netf)g(=)f
+(\045ld\\n)h(\\n",)-2546 32877 y Fa(396)6558 b Fi(nni,)582
+b(ncfn,)g(netf\);)-2546 34205 y Fa(397)-2546 35533 y(398)2490
+b Fi(return;)-2546 36862 y Fa(399)1328 b Fi(})-2546 38190
+y Fa(400)-2546 39518 y(401)g Fi(/*)581 b(Check)h(function)h(return)f
+(value...)-2546 40847 y Fa(402)4234 b Fi(opt)581 b(==)h(0)f(means)h
+(SUNDIALS)g(function)h(allocates)f(memory)g(so)g(check)g(if)-2546
+42175 y Fa(403)9464 b Fi(returned)582 b(NULL)g(pointer)-2546
+43504 y Fa(404)4234 b Fi(opt)581 b(==)h(1)f(means)h(SUNDIALS)g
+(function)h(returns)f(a)f(flag)h(so)f(check)h(if)-2546
+44832 y Fa(405)9464 b Fi(flag)582 b(>=)f(0)-2546 46160
+y Fa(406)4234 b Fi(opt)581 b(==)h(2)f(means)h(function)g(allocates)h
+(memory)f(so)f(check)h(if)g(returned)-2546 47489 y Fa(407)9464
+b Fi(NULL)582 b(pointer)g(*/)-2546 48817 y Fa(408)-2546
+50145 y(409)1328 b Fi(static)582 b(int)g(check_flag\(void)h
+(*flagvalue,)g(char)f(*funcname,)g(int)g(opt\))-2546
+51474 y Fa(410)1328 b Fi({)-2546 52802 y Fa(411)2490
+b Fi(int)582 b(*errflag;)-2546 54130 y Fa(412)-2546 55459
+y(413)2490 b Fi(/*)582 b(Check)g(if)f(SUNDIALS)h(function)h(returned)f
+(NULL)g(pointer)g(-)f(no)h(memory)g(allocated)g(*/)-2546
+56787 y Fa(414)-2546 58115 y(415)2490 b Fi(if)582 b(\(opt)f(==)h(0)f
+(&&)h(flagvalue)g(==)g(NULL\))g({)-2546 59444 y Fa(416)3653
+b Fi(fprintf\(stderr,)583 b("\\nSUNDIALS_ERROR:)h(\045s\(\))e(failed)g
+(-)f(returned)h(NULL)g(pointer\\n\\n",)-2546 60772 y
+Fa(417)8302 b Fi(funcname\);)-2546 62100 y Fa(418)3653
+b Fi(return\(1\);)582 b(})-2546 63429 y Fa(419)-2546
+64757 y(420)2490 b Fi(/*)582 b(Check)g(if)f(flag)h(<)f(0)g(*/)-2546
+66086 y Fa(421)-2546 67414 y(422)2490 b Fi(else)582 b(if)f(\(opt)h(==)g
+(1\))f({)-2546 68742 y Fa(423)3653 b Fi(errflag)582 b(=)f(\(int)h(*\))f
+(flagvalue;)-2546 70071 y Fa(424)3653 b Fi(if)581 b(\(*errflag)i(<)e
+(0\))g({)-2546 71399 y Fa(425)4815 b Fi(fprintf\(stderr,)583
+b("\\nSUNDIALS_ERROR:)h(\045s\(\))e(failed)g(with)g(flag)f(=)h
+(\045d\\n\\n",)-2546 72727 y Fa(426)9464 b Fi(funcname,)583
+b(*errflag\);)-2546 74056 y Fa(427)4815 b Fi(return\(1\);)583
+b(}})-2546 75384 y Fa(428)-2546 76712 y(429)2490 b Fi(/*)582
+b(Check)g(if)f(function)h(returned)h(NULL)f(pointer)g(-)f(no)g(memory)h
+(allocated)h(*/)-2546 78041 y Fa(430)p Black 23394 81741
+a Fs(42)p Black eop
+%%Page: 43 47
+43 46 bop Black Black 1454 7638 a Fa(431)2490 b Fi(else)582
+b(if)f(\(opt)h(==)g(2)f(&&)g(flagvalue)i(==)e(NULL\))h({)1454
+8966 y Fa(432)3653 b Fi(fprintf\(stderr,)583 b("\\nMEMORY_ERROR:)h
+(\045s\(\))d(failed)h(-)g(returned)g(NULL)g(pointer\\n\\n",)1454
+10295 y Fa(433)8302 b Fi(funcname\);)1454 11623 y Fa(434)3653
+b Fi(return\(1\);)582 b(})1454 12951 y Fa(435)1454 14280
+y(436)2490 b Fi(return\(0\);)1454 15608 y Fa(437)1328
+b Fi(})p Black 27394 81741 a Fs(43)p Black eop
+%%Page: 44 48
+44 47 bop Black Black 0 7638 a Fr(C)1793 b(Listing)600
+b(of)d Fb(cvkx.c)-1734 10674 y Fa(1)1328 b Fi(/*)-1734
+12003 y Fa(2)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)
+-1734 13331 y Fa(3)1909 b Fi(*)581 b($Revision: 1.1 $)-1734
+14659 y Fa(4)1909 b Fi(*)581 b($Date: 2005/10/27 13:20:41 $)-1734
+15988 y Fa(5)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)
+-1734 17316 y Fa(6)1909 b Fi(*)581 b(Programmer\(s\):)j(Scott)e(D.)f
+(Cohen,)h(Alan)g(C.)f(Hindmarsh)i(and)-1734 18645 y Fa(7)1909
+b Fi(*)9299 b(Radu)581 b(Serban)h(@)g(LLNL)-1734 19973
+y Fa(8)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)
+-1734 21301 y Fa(9)1909 b Fi(*)581 b(Example)i(problem:)-2140
+22630 y Fa(10)1909 b Fi(*)-2140 23958 y Fa(11)g Fi(*)581
+b(An)h(ODE)f(system)i(is)e(generated)h(from)g(the)g(following)g
+(2-species)h(diurnal)-2140 25286 y Fa(12)1909 b Fi(*)581
+b(kinetics)i(advection-diffusion)h(PDE)d(system)h(in)g(2)f(space)h
+(dimensions:)-2140 26615 y Fa(13)1909 b Fi(*)-2140 27943
+y Fa(14)g Fi(*)581 b(dc\(i\)/dt)i(=)e(Kh*\(d/dx\)^2)i(c\(i\))f(+)f
+(V*dc\(i\)/dx)i(+)e(\(d/dy\)\(Kv\(y\)*dc\(i\)/dy\))-2140
+29271 y Fa(15)1909 b Fi(*)9880 b(+)581 b(Ri\(c1,c2,t\))3489
+b(for)581 b(i)h(=)f(1,2,)1744 b(where)-2140 30600 y Fa(16)1909
+b Fi(*)1744 b(R1\(c1,c2,t\))583 b(=)e(-q1*c1*c3)h(-)g(q2*c1*c2)g(+)f
+(2*q3\(t\)*c3)i(+)e(q4\(t\)*c2)i(,)-2140 31928 y Fa(17)1909
+b Fi(*)1744 b(R2\(c1,c2,t\))583 b(=)1162 b(q1*c1*c3)582
+b(-)g(q2*c1*c2)g(-)f(q4\(t\)*c2)i(,)-2140 33256 y Fa(18)1909
+b Fi(*)1744 b(Kv\(y\))582 b(=)f(Kv0*exp\(y/5\))i(,)-2140
+34585 y Fa(19)1909 b Fi(*)581 b(Kh,)h(V,)f(Kv0,)h(q1,)g(q2,)f(and)h(c3)
+f(are)h(constants,)h(and)e(q3\(t\))h(and)g(q4\(t\))-2140
+35913 y Fa(20)1909 b Fi(*)581 b(vary)h(diurnally.)h(The)e(problem)i(is)
+e(posed)h(on)f(the)h(square)-2140 37241 y Fa(21)1909
+b Fi(*)1744 b(0)581 b(<=)g(x)h(<=)f(20,)2325 b(30)582
+b(<=)f(y)g(<=)h(50)1744 b(\(all)581 b(in)h(km\),)-2140
+38570 y Fa(22)1909 b Fi(*)581 b(with)h(homogeneous)h(Neumann)f
+(boundary)h(conditions,)f(and)g(for)f(time)h(t)g(in)-2140
+39898 y Fa(23)1909 b Fi(*)1744 b(0)581 b(<=)g(t)h(<=)f(86400)h(sec)g
+(\(1)f(day\).)-2140 41227 y Fa(24)1909 b Fi(*)581 b(The)h(PDE)g(system)
+g(is)f(treated)h(by)g(central)g(differences)h(on)e(a)g(uniform)-2140
+42555 y Fa(25)1909 b Fi(*)581 b(10)h(x)f(10)h(mesh,)g(with)f(simple)h
+(polynomial)h(initial)f(profiles.)-2140 43883 y Fa(26)1909
+b Fi(*)581 b(The)h(problem)g(is)g(solved)g(with)f(CVODE,)i(with)e(the)h
+(BDF/GMRES)-2140 45212 y Fa(27)1909 b Fi(*)581 b(method)h(\(i.e.)g
+(using)g(the)g(CVSPGMR)g(linear)g(solver\))g(and)g(the)-2140
+46540 y Fa(28)1909 b Fi(*)581 b(block-diagonal)j(part)d(of)h(the)f
+(Newton)i(matrix)f(as)f(a)g(left)-2140 47868 y Fa(29)1909
+b Fi(*)581 b(preconditioner.)j(A)d(copy)h(of)f(the)h(block-diagonal)h
+(part)f(of)f(the)-2140 49197 y Fa(30)1909 b Fi(*)581
+b(Jacobian)i(is)e(saved)h(and)g(conditionally)h(reused)f(within)g(the)f
+(Precond)-2140 50525 y Fa(31)1909 b Fi(*)581 b(routine.)-2140
+51853 y Fa(32)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)
+-2140 53182 y Fa(33)1909 b Fi(*/)-2140 54510 y Fa(34)-2140
+55838 y(35)1328 b Fi(#include)582 b(<stdio.h>)-2140 57167
+y Fa(36)1328 b Fi(#include)582 b(<stdlib.h>)-2140 58495
+y Fa(37)1328 b Fi(#include)582 b(<math.h>)-2140 59823
+y Fa(38)1328 b Fi(#include)582 b("sundialstypes.h")1165
+b(/*)582 b(definitions)g(of)g(realtype,)g(TRUE)g(and)g(FALSE)2906
+b(*/)-2140 61152 y Fa(39)1328 b Fi(#include)582 b("cvode.h")5813
+b(/*)582 b(CVode*)g(prototypes)g(and)g(various)g(constants)2907
+b(*/)-2140 62480 y Fa(40)1328 b Fi(#include)582 b("cvspgmr.h")4651
+b(/*)582 b(prototypes)g(&)g(constants)g(for)g(CVSPGMR)g(solver)1744
+b(*/)-2140 63808 y Fa(41)1328 b Fi(#include)582 b("smalldense.h")2908
+b(/*)582 b(use)f(generic)h(DENSE)g(solver)g(in)g(preconditioning)h(*/)
+-2140 65137 y Fa(42)1328 b Fi(#include)582 b("nvector_serial.h")i(/*)e
+(definitions)g(of)g(type)g(N_Vector)g(and)g(macro)3487
+b(*/)-2140 66465 y Fa(43)17600 b Fi(/*)582 b(NV_DATA_S)20341
+b(*/)-2140 67794 y Fa(44)1328 b Fi(#include)582 b("sundialsmath.h")1746
+b(/*)582 b(contains)g(SQR)g(macro)15110 b(*/)-2140 69122
+y Fa(45)-2140 70450 y(46)1328 b Fi(/*)581 b(Problem)i(Constants)f(*/)
+-2140 71779 y Fa(47)-2140 73107 y(48)1328 b Fi(#define)582
+b(ZERO)g(RCONST\(0.0\))-2140 74435 y Fa(49)1328 b Fi(#define)582
+b(ONE)1163 b(RCONST\(1.0\))-2140 75764 y Fa(50)1328 b
+Fi(#define)582 b(TWO)1163 b(RCONST\(2.0\))-2140 77092
+y Fa(51)-2140 78420 y(52)1328 b Fi(#define)582 b(NUM_SPECIES)1164
+b(2)9880 b(/*)581 b(number)h(of)g(species)5231 b(*/)p
+Black 23394 81741 a Fs(44)p Black eop
+%%Page: 45 49
+45 48 bop Black Black 1860 7638 a Fa(53)1328 b Fi(#define)582
+b(KH)6393 b(RCONST\(4.0e-6\))2327 b(/*)581 b(horizontal)i(diffusivity)g
+(Kh)e(*/)1860 8966 y Fa(54)1328 b Fi(#define)582 b(VEL)5812
+b(RCONST\(0.001\))2908 b(/*)581 b(advection)i(velocity)f(V)3487
+b(*/)1860 10295 y Fa(55)1328 b Fi(#define)582 b(KV0)5812
+b(RCONST\(1.0e-8\))2327 b(/*)581 b(coefficient)i(in)e(Kv\(y\))3488
+b(*/)1860 11623 y Fa(56)1328 b Fi(#define)582 b(Q1)6393
+b(RCONST\(1.63e-16\))1165 b(/*)581 b(coefficients)i(q1,)f(q2,)f(c3)1744
+b(*/)1860 12951 y Fa(57)1328 b Fi(#define)582 b(Q2)6393
+b(RCONST\(4.66e-16\))1860 14280 y Fa(58)1328 b Fi(#define)582
+b(C3)6393 b(RCONST\(3.7e16\))1860 15608 y Fa(59)1328
+b Fi(#define)582 b(A3)6393 b(RCONST\(22.62\))2908 b(/*)581
+b(coefficient)i(in)e(expression)i(for)f(q3\(t\))g(*/)1860
+16936 y Fa(60)1328 b Fi(#define)582 b(A4)6393 b(RCONST\(7.601\))2908
+b(/*)581 b(coefficient)i(in)e(expression)i(for)f(q4\(t\))g(*/)1860
+18265 y Fa(61)1328 b Fi(#define)582 b(C1_SCALE)2907 b(RCONST\(1.0e6\))h
+(/*)581 b(coefficients)i(in)f(initial)g(profiles)2326
+b(*/)1860 19593 y Fa(62)1328 b Fi(#define)582 b(C2_SCALE)2907
+b(RCONST\(1.0e12\))1860 20922 y Fa(63)1860 22250 y(64)1328
+b Fi(#define)582 b(T0)6393 b(ZERO)9880 b(/*)582 b(initial)g(time)g(*/)
+1860 23578 y Fa(65)1328 b Fi(#define)582 b(NOUT)5231
+b(12)11042 b(/*)582 b(number)g(of)f(output)h(times)g(*/)1860
+24907 y Fa(66)1328 b Fi(#define)582 b(TWOHR)4650 b(RCONST\(7200.0\))
+4070 b(/*)582 b(number)g(of)f(seconds)h(in)g(two)f(hours)1163
+b(*/)1860 26235 y Fa(67)1328 b Fi(#define)582 b(HALFDAY)3488
+b(RCONST\(4.32e4\))4070 b(/*)582 b(number)g(of)f(seconds)h(in)g(a)f
+(half)h(day)f(*/)1860 27563 y Fa(68)1328 b Fi(#define)582
+b(PI)4069 b(RCONST\(3.1415926535898\))1165 b(/*)582 b(pi)f(*/)1860
+28892 y Fa(69)1860 30220 y(70)1328 b Fi(#define)582 b(XMIN)5231
+b(ZERO)9880 b(/*)582 b(grid)f(boundaries)i(in)f(x)1162
+b(*/)1860 31548 y Fa(71)1328 b Fi(#define)582 b(XMAX)5231
+b(RCONST\(20.0\))1860 32877 y Fa(72)1328 b Fi(#define)582
+b(YMIN)5231 b(RCONST\(30.0\))h(/*)582 b(grid)f(boundaries)i(in)f(y)1162
+b(*/)1860 34205 y Fa(73)1328 b Fi(#define)582 b(YMAX)5231
+b(RCONST\(50.0\))1860 35533 y Fa(74)1328 b Fi(#define)582
+b(XMID)5231 b(RCONST\(10.0\))h(/*)582 b(grid)f(midpoints)i(in)e(x,y)h
+(*/)1860 36862 y Fa(75)1328 b Fi(#define)582 b(YMID)5231
+b(RCONST\(40.0\))1860 38190 y Fa(76)1860 39518 y(77)1328
+b Fi(#define)582 b(MX)6393 b(10)7555 b(/*)582 b(MX)f(=)h(number)g(of)f
+(x)g(mesh)h(points)g(*/)1860 40847 y Fa(78)1328 b Fi(#define)582
+b(MY)6393 b(10)7555 b(/*)582 b(MY)f(=)h(number)g(of)f(y)g(mesh)h
+(points)g(*/)1860 42175 y Fa(79)1328 b Fi(#define)582
+b(NSMX)5231 b(20)7555 b(/*)582 b(NSMX)g(=)f(NUM_SPECIES*MX)i(*/)1860
+43504 y Fa(80)1328 b Fi(#define)582 b(MM)6393 b(\(MX*MY\))4650
+b(/*)582 b(MM)f(=)h(MX*MY)f(*/)1860 44832 y Fa(81)1860
+46160 y(82)1328 b Fi(/*)581 b(CVodeMalloc)i(Constants)g(*/)1860
+47489 y Fa(83)1860 48817 y(84)1328 b Fi(#define)582 b(RTOL)2325
+b(RCONST\(1.0e-5\))i(/*)582 b(scalar)g(relative)g(tolerance)g(*/)1860
+50145 y Fa(85)1328 b Fi(#define)582 b(FLOOR)1744 b(RCONST\(100.0\))2908
+b(/*)582 b(value)f(of)h(C1)f(or)h(C2)f(at)h(which)g(tolerances)g(*/)
+1860 51474 y Fa(86)21087 b Fi(/*)582 b(change)g(from)f(relative)i(to)e
+(absolute)3488 b(*/)1860 52802 y Fa(87)1328 b Fi(#define)582
+b(ATOL)2325 b(\(RTOL*FLOOR\))3489 b(/*)582 b(scalar)g(absolute)g
+(tolerance)g(*/)1860 54130 y Fa(88)1328 b Fi(#define)582
+b(NEQ)2906 b(\(NUM_SPECIES*MM\))1165 b(/*)582 b(NEQ)f(=)g(number)h(of)g
+(equations)g(*/)1860 55459 y Fa(89)1860 56787 y(90)1328
+b Fi(/*)581 b(User-defined)i(vector)f(and)g(matrix)g(accessor)g
+(macros:)h(IJKth,)f(IJth)f(*/)1860 58115 y Fa(91)1860
+59444 y(92)1328 b Fi(/*)581 b(IJKth)h(is)g(defined)g(in)f(order)h(to)g
+(isolate)g(the)g(translation)g(from)g(the)1860 60772
+y Fa(93)3071 b Fi(mathematical)583 b(3-dimensional)g(structure)g(of)e
+(the)h(dependent)g(variable)h(vector)1860 62100 y Fa(94)3071
+b Fi(to)582 b(the)f(underlying)i(1-dimensional)g(storage.)g(IJth)e(is)h
+(defined)g(in)f(order)h(to)1860 63429 y Fa(95)3071 b
+Fi(write)582 b(code)g(which)g(indexes)g(into)g(small)g(dense)g
+(matrices)g(with)g(a)f(\(row,column\))1860 64757 y Fa(96)3071
+b Fi(pair,)582 b(where)g(1)g(<=)f(row,)h(column)g(<=)f(NUM_SPECIES.)
+1860 66086 y Fa(97)1860 67414 y(98)3071 b Fi(IJKth\(vdata,i,j,k\))584
+b(references)f(the)f(element)g(in)f(the)h(vdata)g(array)g(for)1860
+68742 y Fa(99)3071 b Fi(species)583 b(i)e(at)g(mesh)h(point)g(\(j,k\),)
+g(where)g(1)f(<=)h(i)f(<=)g(NUM_SPECIES,)1454 70071 y
+Fa(100)3071 b Fi(0)582 b(<=)f(j)g(<=)h(MX-1,)g(0)f(<=)h(k)f(<=)g(MY-1.)
+h(The)g(vdata)g(array)g(is)f(obtained)h(via)1454 71399
+y Fa(101)3071 b Fi(the)582 b(macro)g(call)g(vdata)g(=)f
+(NV_DATA_S\(v\),)i(where)f(v)f(is)h(an)f(N_Vector.)1454
+72727 y Fa(102)3071 b Fi(For)582 b(each)g(mesh)g(point)f(\(j,k\),)h
+(the)g(elements)g(for)g(species)g(i)f(and)h(i+1)g(are)1454
+74056 y Fa(103)3071 b Fi(contiguous)583 b(within)f(vdata.)1454
+75384 y Fa(104)1454 76712 y(105)3071 b Fi(IJth\(a,i,j\))583
+b(references)g(the)e(\(i,j\)th)i(entry)f(of)f(the)h(small)f(matrix)i
+(realtype)f(**a,)1454 78041 y Fa(106)3071 b Fi(where)582
+b(1)g(<=)f(i,j)h(<=)f(NUM_SPECIES.)i(The)f(small)g(matrix)g(routines)g
+(in)f(dense.h)p Black 27394 81741 a Fs(45)p Black eop
+%%Page: 46 50
+46 49 bop Black Black -2546 7638 a Fa(107)3071 b Fi(work)582
+b(with)g(matrices)g(stored)g(by)g(column)g(in)f(a)h(2-dimensional)h
+(array.)f(In)f(C,)-2546 8966 y Fa(108)3071 b Fi(arrays)582
+b(are)g(indexed)g(starting)h(at)e(0,)h(not)f(1.)h(*/)-2546
+10295 y Fa(109)-2546 11623 y(110)1328 b Fi(#define)582
+b(IJKth\(vdata,i,j,k\))i(\(vdata[i-1)f(+)e(\(j\)*NUM_SPECIES)i(+)f
+(\(k\)*NSMX]\))-2546 12951 y Fa(111)1328 b Fi(#define)582
+b(IJth\(a,i,j\))4651 b(\(a[j-1][i-1]\))-2546 14280 y
+Fa(112)-2546 15608 y(113)1328 b Fi(/*)581 b(Type)h(:)f(UserData)-2546
+16936 y Fa(114)3071 b Fi(contains)583 b(preconditioner)g(blocks,)f
+(pivot)g(arrays,)g(and)g(problem)g(constants)h(*/)-2546
+18265 y Fa(115)-2546 19593 y(116)1328 b Fi(typedef)582
+b(struct)g({)-2546 20922 y Fa(117)2490 b Fi(realtype)583
+b(**P[MX][MY],)g(**Jbd[MX][MY];)-2546 22250 y Fa(118)2490
+b Fi(long)582 b(int)g(*pivot[MX][MY];)-2546 23578 y Fa(119)2490
+b Fi(realtype)583 b(q4,)e(om,)h(dx,)f(dy,)h(hdco,)g(haco,)g(vdco;)-2546
+24907 y Fa(120)1328 b Fi(})581 b(*UserData;)-2546 26235
+y Fa(121)-2546 27563 y(122)1328 b Fi(/*)581 b(Private)i(Helper)f
+(Functions)g(*/)-2546 28892 y Fa(123)-2546 30220 y(124)1328
+b Fi(static)582 b(UserData)g(AllocUserData\(void\);)-2546
+31548 y Fa(125)1328 b Fi(static)582 b(void)g(InitUserData\(UserData)i
+(data\);)-2546 32877 y Fa(126)1328 b Fi(static)582 b(void)g
+(FreeUserData\(UserData)i(data\);)-2546 34205 y Fa(127)1328
+b Fi(static)582 b(void)g(SetInitialProfiles\(N_Vector)j(u,)c(realtype)i
+(dx,)e(realtype)i(dy\);)-2546 35533 y Fa(128)1328 b Fi(static)582
+b(void)g(PrintOutput\(void)h(*cvode_mem,)g(N_Vector)f(u,)g(realtype)g
+(t\);)-2546 36862 y Fa(129)1328 b Fi(static)582 b(void)g
+(PrintFinalStats\(void)i(*cvode_mem\);)-2546 38190 y
+Fa(130)1328 b Fi(static)582 b(int)g(check_flag\(void)h(*flagvalue,)g
+(char)f(*funcname,)g(int)g(opt\);)-2546 39518 y Fa(131)-2546
+40847 y(132)1328 b Fi(/*)581 b(Functions)i(Called)f(by)f(the)h(Solver)g
+(*/)-2546 42175 y Fa(133)-2546 43504 y(134)1328 b Fi(static)582
+b(void)g(f\(realtype)g(t,)g(N_Vector)g(u,)g(N_Vector)g(udot,)g(void)g
+(*f_data\);)-2546 44832 y Fa(135)-2546 46160 y(136)1328
+b Fi(static)582 b(int)g(Precond\(realtype)h(tn,)f(N_Vector)g(u,)g
+(N_Vector)g(fu,)-2546 47489 y Fa(137)12370 b Fi(booleantype)583
+b(jok,)e(booleantype)i(*jcurPtr,)g(realtype)f(gamma,)-2546
+48817 y Fa(138)12370 b Fi(void)582 b(*P_data,)g(N_Vector)g(vtemp1,)g
+(N_Vector)h(vtemp2,)-2546 50145 y Fa(139)12370 b Fi(N_Vector)582
+b(vtemp3\);)-2546 51474 y Fa(140)-2546 52802 y(141)1328
+b Fi(static)582 b(int)g(PSolve\(realtype)h(tn,)f(N_Vector)g(u,)f
+(N_Vector)i(fu,)-2546 54130 y Fa(142)11789 b Fi(N_Vector)582
+b(r,)f(N_Vector)i(z,)-2546 55459 y Fa(143)11789 b Fi(realtype)582
+b(gamma,)g(realtype)g(delta,)-2546 56787 y Fa(144)11789
+b Fi(int)581 b(lr,)h(void)g(*P_data,)g(N_Vector)g(vtemp\);)-2546
+58115 y Fa(145)-2546 59444 y(146)-2546 60772 y(147)1328
+b Fi(/*)-2546 62100 y Fa(148)1909 b Fi
+(*-------------------------------)-2546 63429 y Fa(149)g
+Fi(*)581 b(Main)h(Program)-2546 64757 y Fa(150)1909 b
+Fi(*-------------------------------)-2546 66086 y Fa(151)g
+Fi(*/)-2546 67414 y Fa(152)-2546 68742 y(153)1328 b Fi(int)582
+b(main\(\))-2546 70071 y Fa(154)1328 b Fi({)-2546 71399
+y Fa(155)2490 b Fi(realtype)583 b(abstol,)f(reltol,)g(t,)f(tout;)-2546
+72727 y Fa(156)2490 b Fi(N_Vector)583 b(u;)-2546 74056
+y Fa(157)2490 b Fi(UserData)583 b(data;)-2546 75384 y
+Fa(158)2490 b Fi(void)582 b(*cvode_mem;)-2546 76712 y
+Fa(159)2490 b Fi(int)582 b(iout,)g(flag;)-2546 78041
+y Fa(160)p Black 23394 81741 a Fs(46)p Black eop
+%%Page: 47 51
+47 50 bop Black Black 1454 7638 a Fa(161)2490 b Fi(u)582
+b(=)f(NULL;)1454 8966 y Fa(162)2490 b Fi(data)582 b(=)f(NULL;)1454
+10295 y Fa(163)2490 b Fi(cvode_mem)583 b(=)e(NULL;)1454
+11623 y Fa(164)1454 12951 y(165)2490 b Fi(/*)582 b(Allocate)g(memory,)g
+(and)g(set)f(problem)i(data,)f(initial)g(values,)g(tolerances)h(*/)1454
+14280 y Fa(166)2490 b Fi(u)582 b(=)f(N_VNew_Serial\(NEQ\);)1454
+15608 y Fa(167)2490 b Fi(if\(check_flag\(\(void)584 b(*\)u,)e
+("N_VNew_Serial",)i(0\)\))d(return\(1\);)1454 16936 y
+Fa(168)2490 b Fi(data)582 b(=)f(AllocUserData\(\);)1454
+18265 y Fa(169)2490 b Fi(if\(check_flag\(\(void)584 b(*\)data,)e
+("AllocUserData",)i(2\)\))e(return\(1\);)1454 19593 y
+Fa(170)2490 b Fi(InitUserData\(data\);)1454 20922 y Fa(171)g
+Fi(SetInitialProfiles\(u,)585 b(data->dx,)d(data->dy\);)1454
+22250 y Fa(172)2490 b Fi(abstol=ATOL;)1454 23578 y Fa(173)g
+Fi(reltol=RTOL;)1454 24907 y Fa(174)1454 26235 y(175)g
+Fi(/*)582 b(Call)f(CvodeCreate)i(to)f(create)g(the)f(solver)h(memory)
+1454 27563 y Fa(176)1454 28892 y(177)4234 b Fi(CV_BDF)2906
+b(specifies)583 b(the)e(Backward)i(Differentiation)g(Formula)1454
+30220 y Fa(178)4234 b Fi(CV_NEWTON)1163 b(specifies)583
+b(a)e(Newton)h(iteration)1454 31548 y Fa(179)1454 32877
+y(180)4234 b Fi(A)581 b(pointer)h(to)g(the)f(integrator)i(memory)f(is)f
+(returned)i(and)e(stored)h(in)g(cvode_mem.)g(*/)1454
+34205 y Fa(181)2490 b Fi(cvode_mem)583 b(=)e(CVodeCreate\(CV_BDF,)j
+(CV_NEWTON\);)1454 35533 y Fa(182)2490 b Fi(if\(check_flag\(\(void)584
+b(*\)cvode_mem,)f("CVodeCreate",)g(0\)\))f(return\(1\);)1454
+36862 y Fa(183)1454 38190 y(184)2490 b Fi(/*)582 b(Set)f(the)h(pointer)
+g(to)g(user-defined)h(data)e(*/)1454 39518 y Fa(185)2490
+b Fi(flag)582 b(=)f(CVodeSetFdata\(cvode_mem,)k(data\);)1454
+40847 y Fa(186)2490 b Fi(if\(check_flag\(&flag,)584 b("CVodeSetFdata",)
+g(1\)\))e(return\(1\);)1454 42175 y Fa(187)1454 43504
+y(188)2490 b Fi(/*)582 b(Call)f(CVodeMalloc)i(to)f(initialize)g(the)g
+(integrator)h(memory:)1454 44832 y Fa(189)1454 46160
+y(190)4234 b Fi(f)4068 b(is)581 b(the)h(user's)g(right)g(hand)g(side)f
+(function)i(in)e(u'=f\(t,u\))1454 47489 y Fa(191)4234
+b Fi(T0)3487 b(is)581 b(the)h(initial)g(time)1454 48817
+y Fa(192)4234 b Fi(u)4068 b(is)581 b(the)h(initial)g(dependent)h
+(variable)f(vector)1454 50145 y Fa(193)4234 b Fi(CV_SS)1744
+b(specifies)582 b(scalar)g(relative)h(and)e(absolute)i(tolerances)1454
+51474 y Fa(194)4234 b Fi(reltol)1163 b(is)581 b(the)h(relative)g
+(tolerance)1454 52802 y Fa(195)4234 b Fi(&abstol)582
+b(is)f(a)h(pointer)g(to)f(the)h(scalar)g(absolute)g(tolerance)3489
+b(*/)1454 54130 y Fa(196)2490 b Fi(flag)582 b(=)f
+(CVodeMalloc\(cvode_mem,)k(f,)c(T0,)h(u,)f(CV_SS,)h(reltol,)g
+(&abstol\);)1454 55459 y Fa(197)2490 b Fi(if\(check_flag\(&flag,)584
+b("CVodeMalloc",)g(1\)\))d(return\(1\);)1454 56787 y
+Fa(198)1454 58115 y(199)2490 b Fi(/*)582 b(Call)f(CVSpgmr)i(to)e
+(specify)h(the)g(linear)g(solver)g(CVSPGMR)1454 59444
+y Fa(200)4234 b Fi(with)581 b(left)h(preconditioning)i(and)d(the)h
+(maximum)g(Krylov)g(dimension)h(maxl)e(*/)1454 60772
+y Fa(201)2490 b Fi(flag)582 b(=)f(CVSpgmr\(cvode_mem,)j(PREC_LEFT,)f
+(0\);)1454 62100 y Fa(202)2490 b Fi(if\(check_flag\(&flag,)584
+b("CVSpgmr",)f(1\)\))f(return\(1\);)1454 63429 y Fa(203)1454
+64757 y(204)2490 b Fi(/*)582 b(Set)f(modified)i(Gram-Schmidt)g
+(orthogonalization,)g(preconditioner)1454 66086 y Fa(205)4234
+b Fi(setup)582 b(and)f(solve)h(routines)g(Precond)h(and)e(PSolve,)h
+(and)g(the)g(pointer)1454 67414 y Fa(206)4234 b Fi(to)581
+b(the)h(user-defined)h(block)f(data)f(*/)1454 68742 y
+Fa(207)2490 b Fi(flag)582 b(=)f(CVSpgmrSetGSType\(cvode_mem,)586
+b(MODIFIED_GS\);)1454 70071 y Fa(208)2490 b Fi(if\(check_flag\(&flag,)
+584 b("CVSpgmrSetGSType",)g(1\)\))e(return\(1\);)1454
+71399 y Fa(209)1454 72727 y(210)2490 b Fi(flag)582 b(=)f
+(CVSpgmrSetPreconditioner\(cvode_mem,)587 b(Precond,)582
+b(PSolve,)g(data\);)1454 74056 y Fa(211)2490 b Fi
+(if\(check_flag\(&flag,)584 b("CVSpgmrSetPreconditioner",)i(1\)\))581
+b(return\(1\);)1454 75384 y Fa(212)1454 76712 y(213)2490
+b Fi(/*)582 b(In)f(loop)h(over)g(output)g(points,)g(call)g(CVode,)g
+(print)g(results,)g(test)g(for)f(error)h(*/)1454 78041
+y Fa(214)2490 b Fi(printf\(")583 b(\\n2-species)f(diurnal)h
+(advection-diffusion)h(problem\\n\\n"\);)p Black 27394
+81741 a Fs(47)p Black eop
+%%Page: 48 52
+48 51 bop Black Black -2546 7638 a Fa(215)2490 b Fi(for)582
+b(\(iout=1,)g(tout)g(=)f(TWOHR;)h(iout)g(<=)g(NOUT;)f(iout++,)i(tout)e
+(+=)h(TWOHR\))g({)-2546 8966 y Fa(216)3653 b Fi(flag)581
+b(=)h(CVode\(cvode_mem,)h(tout,)f(u,)g(&t,)f(CV_NORMAL\);)-2546
+10295 y Fa(217)3653 b Fi(PrintOutput\(cvode_mem,)584
+b(u,)d(t\);)-2546 11623 y Fa(218)3653 b Fi(if\(check_flag\(&flag,)584
+b("CVode",)e(1\)\))g(break;)-2546 12951 y Fa(219)2490
+b Fi(})-2546 14280 y Fa(220)-2546 15608 y(221)g Fi
+(PrintFinalStats\(cvode_mem\);)-2546 16936 y Fa(222)-2546
+18265 y(223)g Fi(/*)582 b(Free)f(memory)i(*/)-2546 19593
+y Fa(224)2490 b Fi(N_VDestroy_Serial\(u\);)-2546 20922
+y Fa(225)g Fi(FreeUserData\(data\);)-2546 22250 y Fa(226)g
+Fi(CVodeFree\(cvode_mem\);)-2546 23578 y Fa(227)-2546
+24907 y(228)g Fi(return\(0\);)-2546 26235 y Fa(229)1328
+b Fi(})-2546 27563 y Fa(230)-2546 28892 y(231)g Fi(/*)-2546
+30220 y Fa(232)1909 b Fi(*-------------------------------)-2546
+31548 y Fa(233)g Fi(*)581 b(Private)i(helper)f(functions)-2546
+32877 y Fa(234)1909 b Fi(*-------------------------------)-2546
+34205 y Fa(235)g Fi(*/)-2546 35533 y Fa(236)-2546 36862
+y(237)1328 b Fi(/*)581 b(Allocate)i(memory)f(for)f(data)h(structure)h
+(of)e(type)h(UserData)g(*/)-2546 38190 y Fa(238)-2546
+39518 y(239)1328 b Fi(static)582 b(UserData)g(AllocUserData\(void\))
+-2546 40847 y Fa(240)1328 b Fi({)-2546 42175 y Fa(241)2490
+b Fi(int)582 b(jx,)f(jy;)-2546 43504 y Fa(242)2490 b
+Fi(UserData)583 b(data;)-2546 44832 y Fa(243)-2546 46160
+y(244)2490 b Fi(data)582 b(=)f(\(UserData\))i(malloc\(sizeof)g
+(*data\);)-2546 47489 y Fa(245)-2546 48817 y(246)2490
+b Fi(for)582 b(\(jx=0;)g(jx)f(<)h(MX;)f(jx++\))h({)-2546
+50145 y Fa(247)3653 b Fi(for)581 b(\(jy=0;)h(jy)g(<)f(MY;)h(jy++\))f({)
+-2546 51474 y Fa(248)4815 b Fi(\(data->P\)[jx][jy])584
+b(=)d(denalloc\(NUM_SPECIES\);)-2546 52802 y Fa(249)4815
+b Fi(\(data->Jbd\)[jx][jy])584 b(=)d(denalloc\(NUM_SPECIES\);)-2546
+54130 y Fa(250)4815 b Fi(\(data->pivot\)[jx][jy])584
+b(=)d(denallocpiv\(NUM_SPECIES\);)-2546 55459 y Fa(251)3653
+b Fi(})-2546 56787 y Fa(252)2490 b Fi(})-2546 58115 y
+Fa(253)-2546 59444 y(254)g Fi(return\(data\);)-2546 60772
+y Fa(255)1328 b Fi(})-2546 62100 y Fa(256)-2546 63429
+y(257)g Fi(/*)581 b(Load)h(problem)g(constants)h(in)e(data)h(*/)-2546
+64757 y Fa(258)-2546 66086 y(259)1328 b Fi(static)582
+b(void)g(InitUserData\(UserData)i(data\))-2546 67414
+y Fa(260)1328 b Fi({)-2546 68742 y Fa(261)2490 b Fi(data->om)583
+b(=)e(PI/HALFDAY;)-2546 70071 y Fa(262)2490 b Fi(data->dx)583
+b(=)e(\(XMAX-XMIN\)/\(MX-1\);)-2546 71399 y Fa(263)2490
+b Fi(data->dy)583 b(=)e(\(YMAX-YMIN\)/\(MY-1\);)-2546
+72727 y Fa(264)2490 b Fi(data->hdco)583 b(=)e(KH/SQR\(data->dx\);)-2546
+74056 y Fa(265)2490 b Fi(data->haco)583 b(=)e(VEL/\(TWO*data->dx\);)
+-2546 75384 y Fa(266)2490 b Fi(data->vdco)583 b(=)e
+(\(ONE/SQR\(data->dy\)\)*KV0;)-2546 76712 y Fa(267)1328
+b Fi(})-2546 78041 y Fa(268)p Black 23394 81741 a Fs(48)p
+Black eop
+%%Page: 49 53
+49 52 bop Black Black 1454 7638 a Fa(269)1328 b Fi(/*)581
+b(Free)h(data)g(memory)g(*/)1454 8966 y Fa(270)1454 10295
+y(271)1328 b Fi(static)582 b(void)g(FreeUserData\(UserData)i(data\))
+1454 11623 y Fa(272)1328 b Fi({)1454 12951 y Fa(273)2490
+b Fi(int)582 b(jx,)f(jy;)1454 14280 y Fa(274)1454 15608
+y(275)2490 b Fi(for)582 b(\(jx=0;)g(jx)f(<)h(MX;)f(jx++\))h({)1454
+16936 y Fa(276)3653 b Fi(for)581 b(\(jy=0;)h(jy)g(<)f(MY;)h(jy++\))f({)
+1454 18265 y Fa(277)4815 b Fi(denfree\(\(data->P\)[jx][jy]\);)1454
+19593 y Fa(278)g Fi(denfree\(\(data->Jbd\)[jx][jy]\);)1454
+20922 y Fa(279)g Fi(denfreepiv\(\(data->pivot\)[jx][jy]\);)1454
+22250 y Fa(280)3653 b Fi(})1454 23578 y Fa(281)2490 b
+Fi(})1454 24907 y Fa(282)1454 26235 y(283)g Fi(free\(data\);)1454
+27563 y Fa(284)1328 b Fi(})1454 28892 y Fa(285)1454 30220
+y(286)g Fi(/*)581 b(Set)h(initial)g(conditions)h(in)e(u)h(*/)1454
+31548 y Fa(287)1454 32877 y(288)1328 b Fi(static)582
+b(void)g(SetInitialProfiles\(N_Vector)j(u,)c(realtype)i(dx,)e(realtype)
+i(dy\))1454 34205 y Fa(289)1328 b Fi({)1454 35533 y Fa(290)2490
+b Fi(int)582 b(jx,)f(jy;)1454 36862 y Fa(291)2490 b Fi(realtype)583
+b(x,)e(y,)h(cx,)f(cy;)1454 38190 y Fa(292)2490 b Fi(realtype)583
+b(*udata;)1454 39518 y Fa(293)1454 40847 y(294)2490 b
+Fi(/*)582 b(Set)f(pointer)i(to)e(data)h(array)g(in)f(vector)h(u.)g(*/)
+1454 42175 y Fa(295)1454 43504 y(296)2490 b Fi(udata)582
+b(=)f(NV_DATA_S\(u\);)1454 44832 y Fa(297)1454 46160
+y(298)2490 b Fi(/*)582 b(Load)f(initial)i(profiles)f(of)f(c1)h(and)g
+(c2)f(into)h(u)f(vector)h(*/)1454 47489 y Fa(299)1454
+48817 y(300)2490 b Fi(for)582 b(\(jy=0;)g(jy)f(<)h(MY;)f(jy++\))h({)
+1454 50145 y Fa(301)3653 b Fi(y)581 b(=)g(YMIN)h(+)f(jy*dy;)1454
+51474 y Fa(302)3653 b Fi(cy)581 b(=)g(SQR\(RCONST\(0.1\)*\(y)j(-)d
+(YMID\)\);)1454 52802 y Fa(303)3653 b Fi(cy)581 b(=)g(ONE)h(-)f(cy)h(+)
+f(RCONST\(0.5\)*SQR\(cy\);)1454 54130 y Fa(304)3653 b
+Fi(for)581 b(\(jx=0;)h(jx)g(<)f(MX;)h(jx++\))f({)1454
+55459 y Fa(305)4815 b Fi(x)581 b(=)g(XMIN)h(+)g(jx*dx;)1454
+56787 y Fa(306)4815 b Fi(cx)581 b(=)h(SQR\(RCONST\(0.1\)*\(x)h(-)f
+(XMID\)\);)1454 58115 y Fa(307)4815 b Fi(cx)581 b(=)h(ONE)f(-)h(cx)f(+)
+g(RCONST\(0.5\)*SQR\(cx\);)1454 59444 y Fa(308)4815 b
+Fi(IJKth\(udata,1,jx,jy\))584 b(=)d(C1_SCALE*cx*cy;)1454
+60772 y Fa(309)4815 b Fi(IJKth\(udata,2,jx,jy\))584 b(=)d
+(C2_SCALE*cx*cy;)1454 62100 y Fa(310)3653 b Fi(})1454
+63429 y Fa(311)2490 b Fi(})1454 64757 y Fa(312)1328 b
+Fi(})1454 66086 y Fa(313)1454 67414 y(314)g Fi(/*)581
+b(Print)h(current)h(t,)e(step)h(count,)g(order,)g(stepsize,)g(and)g
+(sampled)g(c1,c2)g(values)g(*/)1454 68742 y Fa(315)1454
+70071 y(316)1328 b Fi(static)582 b(void)g(PrintOutput\(void)h
+(*cvode_mem,)g(N_Vector)f(u,)g(realtype)g(t\))1454 71399
+y Fa(317)1328 b Fi({)1454 72727 y Fa(318)2490 b Fi(long)582
+b(int)g(nst;)1454 74056 y Fa(319)2490 b Fi(int)582 b(qu,)f(flag;)1454
+75384 y Fa(320)2490 b Fi(realtype)583 b(hu,)e(*udata;)1454
+76712 y Fa(321)2490 b Fi(int)582 b(mxh)f(=)h(MX/2)g(-)f(1,)g(myh)h(=)f
+(MY/2)h(-)f(1,)h(mx1)f(=)h(MX)f(-)g(1,)h(my1)f(=)h(MY)f(-)g(1;)1454
+78041 y Fa(322)p Black 27394 81741 a Fs(49)p Black eop
+%%Page: 50 54
+50 53 bop Black Black -2546 7638 a Fa(323)2490 b Fi(udata)582
+b(=)f(NV_DATA_S\(u\);)-2546 8966 y Fa(324)-2546 10295
+y(325)2490 b Fi(flag)582 b(=)f(CVodeGetNumSteps\(cvode_mem,)586
+b(&nst\);)-2546 11623 y Fa(326)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumSteps",)g(1\);)-2546 12951 y Fa(327)2490
+b Fi(flag)582 b(=)f(CVodeGetLastOrder\(cvode_mem,)586
+b(&qu\);)-2546 14280 y Fa(328)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetLastOrder",)g(1\);)-2546 15608 y Fa(329)2490
+b Fi(flag)582 b(=)f(CVodeGetLastStep\(cvode_mem,)586
+b(&hu\);)-2546 16936 y Fa(330)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetLastStep",)g(1\);)-2546 18265 y Fa(331)-2546
+19593 y(332)1328 b Fi(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))
+-2546 20922 y Fa(333)2490 b Fi(printf\("t)583 b(=)e(\045.2Le)1744
+b(no.)582 b(steps)g(=)f(\045ld)1744 b(order)582 b(=)f(\045d)1744
+b(stepsize)582 b(=)g(\045.2Le\\n",)-2546 22250 y Fa(334)6558
+b Fi(t,)582 b(nst,)g(qu,)f(hu\);)-2546 23578 y Fa(335)2490
+b Fi(printf\("c1)583 b(\(bot.left/middle/top)h(rt.\))e(=)f(\04512.3Le)
+1163 b(\04512.3Le)h(\04512.3Le\\n",)-2546 24907 y Fa(336)6558
+b Fi(IJKth\(udata,1,0,0\),)584 b(IJKth\(udata,1,mxh,myh\),)h
+(IJKth\(udata,1,mx1,my1\)\);)-2546 26235 y Fa(337)2490
+b Fi(printf\("c2)583 b(\(bot.left/middle/top)h(rt.\))e(=)f(\04512.3Le)
+1163 b(\04512.3Le)h(\04512.3Le\\n\\n",)-2546 27563 y
+Fa(338)6558 b Fi(IJKth\(udata,2,0,0\),)584 b(IJKth\(udata,2,mxh,myh\),)
+h(IJKth\(udata,2,mx1,my1\)\);)-2546 28892 y Fa(339)1328
+b Fi(#elif)582 b(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546
+30220 y Fa(340)2490 b Fi(printf\("t)583 b(=)e(\045.2le)1744
+b(no.)582 b(steps)g(=)f(\045ld)1744 b(order)582 b(=)f(\045d)1744
+b(stepsize)582 b(=)g(\045.2le\\n",)-2546 31548 y Fa(341)6558
+b Fi(t,)582 b(nst,)g(qu,)f(hu\);)-2546 32877 y Fa(342)2490
+b Fi(printf\("c1)583 b(\(bot.left/middle/top)h(rt.\))e(=)f(\04512.3le)
+1163 b(\04512.3le)h(\04512.3le\\n",)-2546 34205 y Fa(343)6558
+b Fi(IJKth\(udata,1,0,0\),)584 b(IJKth\(udata,1,mxh,myh\),)h
+(IJKth\(udata,1,mx1,my1\)\);)-2546 35533 y Fa(344)2490
+b Fi(printf\("c2)583 b(\(bot.left/middle/top)h(rt.\))e(=)f(\04512.3le)
+1163 b(\04512.3le)h(\04512.3le\\n\\n",)-2546 36862 y
+Fa(345)6558 b Fi(IJKth\(udata,2,0,0\),)584 b(IJKth\(udata,2,mxh,myh\),)
+h(IJKth\(udata,2,mx1,my1\)\);)-2546 38190 y Fa(346)1328
+b Fi(#else)-2546 39518 y Fa(347)2490 b Fi(printf\("t)583
+b(=)e(\045.2e)1744 b(no.)582 b(steps)g(=)f(\045ld)1744
+b(order)582 b(=)f(\045d)1744 b(stepsize)582 b(=)f(\045.2e\\n",)-2546
+40847 y Fa(348)6558 b Fi(t,)582 b(nst,)g(qu,)f(hu\);)-2546
+42175 y Fa(349)2490 b Fi(printf\("c1)583 b(\(bot.left/middle/top)h
+(rt.\))e(=)f(\04512.3e)1163 b(\04512.3e)g(\04512.3e\\n",)-2546
+43504 y Fa(350)6558 b Fi(IJKth\(udata,1,0,0\),)584 b
+(IJKth\(udata,1,mxh,myh\),)h(IJKth\(udata,1,mx1,my1\)\);)-2546
+44832 y Fa(351)2490 b Fi(printf\("c2)583 b(\(bot.left/middle/top)h
+(rt.\))e(=)f(\04512.3e)1163 b(\04512.3e)g(\04512.3e\\n\\n",)-2546
+46160 y Fa(352)6558 b Fi(IJKth\(udata,2,0,0\),)584 b
+(IJKth\(udata,2,mxh,myh\),)h(IJKth\(udata,2,mx1,my1\)\);)-2546
+47489 y Fa(353)1328 b Fi(#endif)-2546 48817 y Fa(354)g
+Fi(})-2546 50145 y Fa(355)-2546 51474 y(356)g Fi(/*)581
+b(Get)h(and)g(print)g(final)f(statistics)i(*/)-2546 52802
+y Fa(357)-2546 54130 y(358)1328 b Fi(static)582 b(void)g
+(PrintFinalStats\(void)i(*cvode_mem\))-2546 55459 y Fa(359)1328
+b Fi({)-2546 56787 y Fa(360)2490 b Fi(long)582 b(int)g(lenrw,)g(leniw)g
+(;)-2546 58115 y Fa(361)2490 b Fi(long)582 b(int)g(lenrwSPGMR,)g
+(leniwSPGMR;)-2546 59444 y Fa(362)2490 b Fi(long)582
+b(int)g(nst,)f(nfe,)h(nsetups,)g(nni,)g(ncfn,)g(netf;)-2546
+60772 y Fa(363)2490 b Fi(long)582 b(int)g(nli,)f(npe,)h(nps,)g(ncfl,)g
+(nfeSPGMR;)-2546 62100 y Fa(364)2490 b Fi(int)582 b(flag;)-2546
+63429 y Fa(365)-2546 64757 y(366)2490 b Fi(flag)582 b(=)f
+(CVodeGetWorkSpace\(cvode_mem,)586 b(&lenrw,)c(&leniw\);)-2546
+66086 y Fa(367)2490 b Fi(check_flag\(&flag,)584 b("CVodeGetWorkSpace",)
+g(1\);)-2546 67414 y Fa(368)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumSteps\(cvode_mem,)586 b(&nst\);)-2546 68742
+y Fa(369)2490 b Fi(check_flag\(&flag,)584 b("CVodeGetNumSteps",)g(1\);)
+-2546 70071 y Fa(370)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumRhsEvals\(cvode_mem,)586 b(&nfe\);)-2546
+71399 y Fa(371)2490 b Fi(check_flag\(&flag,)584 b
+("CVodeGetNumRhsEvals",)g(1\);)-2546 72727 y Fa(372)2490
+b Fi(flag)582 b(=)f(CVodeGetNumLinSolvSetups\(cvode_mem,)587
+b(&nsetups\);)-2546 74056 y Fa(373)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumLinSolvSetups",)h(1\);)-2546 75384 y Fa(374)2490
+b Fi(flag)582 b(=)f(CVodeGetNumErrTestFails\(cvode_mem,)587
+b(&netf\);)-2546 76712 y Fa(375)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumErrTestFails",)h(1\);)-2546 78041 y Fa(376)2490
+b Fi(flag)582 b(=)f(CVodeGetNumNonlinSolvIters\(cvode_mem,)587
+b(&nni\);)p Black 23394 81741 a Fs(50)p Black eop
+%%Page: 51 55
+51 54 bop Black Black 1454 7638 a Fa(377)2490 b Fi(check_flag\(&flag,)
+584 b("CVodeGetNumNonlinSolvIters",)h(1\);)1454 8966
+y Fa(378)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumNonlinSolvConvFails\(cvode_mem,)588 b(&ncfn\);)1454
+10295 y Fa(379)2490 b Fi(check_flag\(&flag,)584 b
+("CVodeGetNumNonlinSolvConvFails",)i(1\);)1454 11623
+y Fa(380)1454 12951 y(381)2490 b Fi(flag)582 b(=)f
+(CVSpgmrGetWorkSpace\(cvode_mem,)586 b(&lenrwSPGMR,)d(&leniwSPGMR\);)
+1454 14280 y Fa(382)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetWorkSpace",)g(1\);)1454 15608 y Fa(383)2490
+b Fi(flag)582 b(=)f(CVSpgmrGetNumLinIters\(cvode_mem,)586
+b(&nli\);)1454 16936 y Fa(384)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetNumLinIters",)h(1\);)1454 18265 y Fa(385)2490
+b Fi(flag)582 b(=)f(CVSpgmrGetNumPrecEvals\(cvode_mem,)586
+b(&npe\);)1454 19593 y Fa(386)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetNumPrecEvals",)h(1\);)1454 20922 y Fa(387)2490
+b Fi(flag)582 b(=)f(CVSpgmrGetNumPrecSolves\(cvode_mem,)587
+b(&nps\);)1454 22250 y Fa(388)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetNumPrecSolves",)h(1\);)1454 23578 y Fa(389)2490
+b Fi(flag)582 b(=)f(CVSpgmrGetNumConvFails\(cvode_mem,)586
+b(&ncfl\);)1454 24907 y Fa(390)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetNumConvFails",)h(1\);)1454 26235 y Fa(391)2490
+b Fi(flag)582 b(=)f(CVSpgmrGetNumRhsEvals\(cvode_mem,)586
+b(&nfeSPGMR\);)1454 27563 y Fa(392)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetNumRhsEvals",)h(1\);)1454 28892 y Fa(393)1454
+30220 y(394)2490 b Fi(printf\("\\nFinal)584 b(Statistics..)f
+(\\n\\n"\);)1454 31548 y Fa(395)2490 b Fi(printf\("lenrw)1746
+b(=)581 b(\0455ld)2906 b(leniw)582 b(=)g(\0455ld\\n",)g(lenrw,)g
+(leniw\);)1454 32877 y Fa(396)2490 b Fi(printf\("llrw)2327
+b(=)581 b(\0455ld)2906 b(lliw)1163 b(=)582 b(\0455ld\\n",)g
+(lenrwSPGMR,)h(leniwSPGMR\);)1454 34205 y Fa(397)2490
+b Fi(printf\("nst)2908 b(=)581 b(\0455ld\\n")10462 b(,)581
+b(nst\);)1454 35533 y Fa(398)2490 b Fi(printf\("nfe)2908
+b(=)581 b(\0455ld)2906 b(nfel)1163 b(=)582 b(\0455ld\\n")1163
+b(,)581 b(nfe,)h(nfeSPGMR\);)1454 36862 y Fa(399)2490
+b Fi(printf\("nni)2908 b(=)581 b(\0455ld)2906 b(nli)1744
+b(=)582 b(\0455ld\\n")1163 b(,)581 b(nni,)h(nli\);)1454
+38190 y Fa(400)2490 b Fi(printf\("nsetups)584 b(=)d(\0455ld)2906
+b(netf)1163 b(=)582 b(\0455ld\\n")1163 b(,)581 b(nsetups,)h(netf\);)
+1454 39518 y Fa(401)2490 b Fi(printf\("npe)2908 b(=)581
+b(\0455ld)2906 b(nps)1744 b(=)582 b(\0455ld\\n")1163
+b(,)581 b(npe,)h(nps\);)1454 40847 y Fa(402)2490 b Fi(printf\("ncfn)
+2327 b(=)581 b(\0455ld)2906 b(ncfl)1163 b(=)582 b(\0455ld\\n\\n",)g
+(ncfn,)g(ncfl\);)1454 42175 y Fa(403)1328 b Fi(})1454
+43504 y Fa(404)1454 44832 y(405)g Fi(/*)581 b(Check)h(function)h
+(return)f(value...)1454 46160 y Fa(406)4234 b Fi(opt)581
+b(==)h(0)f(means)h(SUNDIALS)g(function)h(allocates)f(memory)g(so)g
+(check)g(if)1454 47489 y Fa(407)9464 b Fi(returned)582
+b(NULL)g(pointer)1454 48817 y Fa(408)4234 b Fi(opt)581
+b(==)h(1)f(means)h(SUNDIALS)g(function)h(returns)f(a)f(flag)h(so)f
+(check)h(if)1454 50145 y Fa(409)9464 b Fi(flag)582 b(>=)f(0)1454
+51474 y Fa(410)4234 b Fi(opt)581 b(==)h(2)f(means)h(function)g
+(allocates)h(memory)f(so)f(check)h(if)g(returned)1454
+52802 y Fa(411)9464 b Fi(NULL)582 b(pointer)g(*/)1454
+54130 y Fa(412)1454 55459 y(413)1328 b Fi(static)582
+b(int)g(check_flag\(void)h(*flagvalue,)g(char)f(*funcname,)g(int)g
+(opt\))1454 56787 y Fa(414)1328 b Fi({)1454 58115 y Fa(415)2490
+b Fi(int)582 b(*errflag;)1454 59444 y Fa(416)1454 60772
+y(417)2490 b Fi(/*)582 b(Check)g(if)f(SUNDIALS)h(function)h(returned)f
+(NULL)g(pointer)g(-)f(no)h(memory)g(allocated)g(*/)1454
+62100 y Fa(418)2490 b Fi(if)582 b(\(opt)f(==)h(0)f(&&)h(flagvalue)g(==)
+g(NULL\))g({)1454 63429 y Fa(419)3653 b Fi(fprintf\(stderr,)583
+b("\\nSUNDIALS_ERROR:)h(\045s\(\))e(failed)g(-)f(returned)h(NULL)g
+(pointer\\n\\n",)1454 64757 y Fa(420)8302 b Fi(funcname\);)1454
+66086 y Fa(421)3653 b Fi(return\(1\);)582 b(})1454 67414
+y Fa(422)1454 68742 y(423)2490 b Fi(/*)582 b(Check)g(if)f(flag)h(<)f(0)
+g(*/)1454 70071 y Fa(424)2490 b Fi(else)582 b(if)f(\(opt)h(==)g(1\))f
+({)1454 71399 y Fa(425)3653 b Fi(errflag)582 b(=)f(\(int)h(*\))f
+(flagvalue;)1454 72727 y Fa(426)3653 b Fi(if)581 b(\(*errflag)i(<)e
+(0\))g({)1454 74056 y Fa(427)4815 b Fi(fprintf\(stderr,)583
+b("\\nSUNDIALS_ERROR:)h(\045s\(\))e(failed)g(with)g(flag)f(=)h
+(\045d\\n\\n",)1454 75384 y Fa(428)9464 b Fi(funcname,)583
+b(*errflag\);)1454 76712 y Fa(429)4815 b Fi(return\(1\);)583
+b(}})1454 78041 y Fa(430)p Black 27394 81741 a Fs(51)p
+Black eop
+%%Page: 52 56
+52 55 bop Black Black -2546 7638 a Fa(431)2490 b Fi(/*)582
+b(Check)g(if)f(function)h(returned)h(NULL)f(pointer)g(-)f(no)g(memory)h
+(allocated)h(*/)-2546 8966 y Fa(432)2490 b Fi(else)582
+b(if)f(\(opt)h(==)g(2)f(&&)g(flagvalue)i(==)e(NULL\))h({)-2546
+10295 y Fa(433)3653 b Fi(fprintf\(stderr,)583 b("\\nMEMORY_ERROR:)h
+(\045s\(\))d(failed)h(-)g(returned)g(NULL)g(pointer\\n\\n",)-2546
+11623 y Fa(434)8302 b Fi(funcname\);)-2546 12951 y Fa(435)3653
+b Fi(return\(1\);)582 b(})-2546 14280 y Fa(436)-2546
+15608 y(437)2490 b Fi(return\(0\);)-2546 16936 y Fa(438)1328
+b Fi(})-2546 18265 y Fa(439)-2546 19593 y(440)g Fi(/*)-2546
+20922 y Fa(441)1909 b Fi(*-------------------------------)-2546
+22250 y Fa(442)g Fi(*)581 b(Functions)i(called)f(by)f(the)h(solver)
+-2546 23578 y Fa(443)1909 b Fi(*-------------------------------)-2546
+24907 y Fa(444)g Fi(*/)-2546 26235 y Fa(445)-2546 27563
+y(446)1328 b Fi(/*)581 b(f)h(routine.)g(Compute)g(RHS)g(function)g
+(f\(t,u\).)g(*/)-2546 28892 y Fa(447)-2546 30220 y(448)1328
+b Fi(static)582 b(void)g(f\(realtype)g(t,)g(N_Vector)g(u,)g(N_Vector)g
+(udot,)g(void)g(*f_data\))-2546 31548 y Fa(449)1328 b
+Fi({)-2546 32877 y Fa(450)2490 b Fi(realtype)583 b(q3,)e(c1,)h(c2,)f
+(c1dn,)h(c2dn,)g(c1up,)g(c2up,)g(c1lt,)g(c2lt;)-2546
+34205 y Fa(451)2490 b Fi(realtype)583 b(c1rt,)f(c2rt,)f(cydn,)h(cyup,)g
+(hord1,)g(hord2,)g(horad1,)g(horad2;)-2546 35533 y Fa(452)2490
+b Fi(realtype)583 b(qq1,)e(qq2,)h(qq3,)g(qq4,)g(rkin1,)g(rkin2,)g(s,)f
+(vertd1,)h(vertd2,)h(ydn,)e(yup;)-2546 36862 y Fa(453)2490
+b Fi(realtype)583 b(q4coef,)f(dely,)g(verdco,)g(hordco,)g(horaco;)-2546
+38190 y Fa(454)2490 b Fi(realtype)583 b(*udata,)f(*dudata;)-2546
+39518 y Fa(455)2490 b Fi(int)582 b(jx,)f(jy,)h(idn,)g(iup,)g(ileft,)g
+(iright;)-2546 40847 y Fa(456)2490 b Fi(UserData)583
+b(data;)-2546 42175 y Fa(457)-2546 43504 y(458)2490 b
+Fi(data)582 b(=)f(\(UserData\))i(f_data;)-2546 44832
+y Fa(459)2490 b Fi(udata)582 b(=)f(NV_DATA_S\(u\);)-2546
+46160 y Fa(460)2490 b Fi(dudata)582 b(=)g(NV_DATA_S\(udot\);)-2546
+47489 y Fa(461)-2546 48817 y(462)2490 b Fi(/*)582 b(Set)f(diurnal)i
+(rate)e(coefficients.)i(*/)-2546 50145 y Fa(463)-2546
+51474 y(464)2490 b Fi(s)582 b(=)f(sin\(data->om*t\);)-2546
+52802 y Fa(465)2490 b Fi(if)582 b(\(s)f(>)g(ZERO\))h({)-2546
+54130 y Fa(466)3653 b Fi(q3)581 b(=)g(exp\(-A3/s\);)-2546
+55459 y Fa(467)3653 b Fi(data->q4)582 b(=)f(exp\(-A4/s\);)-2546
+56787 y Fa(468)2490 b Fi(})582 b(else)f({)-2546 58115
+y Fa(469)4815 b Fi(q3)581 b(=)h(ZERO;)-2546 59444 y Fa(470)4815
+b Fi(data->q4)582 b(=)g(ZERO;)-2546 60772 y Fa(471)2490
+b Fi(})-2546 62100 y Fa(472)-2546 63429 y(473)g Fi(/*)582
+b(Make)f(local)h(copies)g(of)g(problem)g(variables,)h(for)e
+(efficiency.)i(*/)-2546 64757 y Fa(474)-2546 66086 y(475)2490
+b Fi(q4coef)582 b(=)g(data->q4;)-2546 67414 y Fa(476)2490
+b Fi(dely)582 b(=)f(data->dy;)-2546 68742 y Fa(477)2490
+b Fi(verdco)582 b(=)g(data->vdco;)-2546 70071 y Fa(478)2490
+b Fi(hordco)1163 b(=)582 b(data->hdco;)-2546 71399 y
+Fa(479)2490 b Fi(horaco)1163 b(=)582 b(data->haco;)-2546
+72727 y Fa(480)-2546 74056 y(481)2490 b Fi(/*)582 b(Loop)f(over)h(all)g
+(grid)g(points.)g(*/)-2546 75384 y Fa(482)-2546 76712
+y(483)2490 b Fi(for)582 b(\(jy=0;)g(jy)f(<)h(MY;)f(jy++\))h({)-2546
+78041 y Fa(484)p Black 23394 81741 a Fs(52)p Black eop
+%%Page: 53 57
+53 56 bop Black Black 1454 7638 a Fa(485)3653 b Fi(/*)581
+b(Set)h(vertical)g(diffusion)g(coefficients)h(at)f(jy)f(+-)h(1/2)f(*/)
+1454 8966 y Fa(486)1454 10295 y(487)3653 b Fi(ydn)581
+b(=)g(YMIN)h(+)g(\(jy)f(-)g(RCONST\(0.5\)\)*dely;)1454
+11623 y Fa(488)3653 b Fi(yup)581 b(=)g(ydn)h(+)f(dely;)1454
+12951 y Fa(489)3653 b Fi(cydn)581 b(=)h
+(verdco*exp\(RCONST\(0.2\)*ydn\);)1454 14280 y Fa(490)3653
+b Fi(cyup)581 b(=)h(verdco*exp\(RCONST\(0.2\)*yup\);)1454
+15608 y Fa(491)3653 b Fi(idn)581 b(=)g(\(jy)h(==)g(0\))f(?)g(1)h(:)f
+(-1;)1454 16936 y Fa(492)3653 b Fi(iup)581 b(=)g(\(jy)h(==)g(MY-1\))f
+(?)h(-1)f(:)g(1;)1454 18265 y Fa(493)3653 b Fi(for)581
+b(\(jx=0;)h(jx)g(<)f(MX;)h(jx++\))f({)1454 19593 y Fa(494)1454
+20922 y(495)4815 b Fi(/*)581 b(Extract)i(c1)e(and)h(c2,)f(and)h(set)f
+(kinetic)i(rate)e(terms.)h(*/)1454 22250 y Fa(496)1454
+23578 y(497)4815 b Fi(c1)581 b(=)h(IJKth\(udata,1,jx,jy\);)1454
+24907 y Fa(498)4815 b Fi(c2)581 b(=)h(IJKth\(udata,2,jx,jy\);)1454
+26235 y Fa(499)4815 b Fi(qq1)581 b(=)h(Q1*c1*C3;)1454
+27563 y Fa(500)4815 b Fi(qq2)581 b(=)h(Q2*c1*c2;)1454
+28892 y Fa(501)4815 b Fi(qq3)581 b(=)h(q3*C3;)1454 30220
+y Fa(502)4815 b Fi(qq4)581 b(=)h(q4coef*c2;)1454 31548
+y Fa(503)4815 b Fi(rkin1)582 b(=)f(-qq1)h(-)f(qq2)h(+)f(TWO*qq3)h(+)g
+(qq4;)1454 32877 y Fa(504)4815 b Fi(rkin2)582 b(=)f(qq1)h(-)f(qq2)h(-)f
+(qq4;)1454 34205 y Fa(505)1454 35533 y(506)4815 b Fi(/*)581
+b(Set)h(vertical)g(diffusion)h(terms.)f(*/)1454 36862
+y Fa(507)1454 38190 y(508)4815 b Fi(c1dn)582 b(=)f
+(IJKth\(udata,1,jx,jy+idn\);)1454 39518 y Fa(509)4815
+b Fi(c2dn)582 b(=)f(IJKth\(udata,2,jx,jy+idn\);)1454
+40847 y Fa(510)4815 b Fi(c1up)582 b(=)f(IJKth\(udata,1,jx,jy+iup\);)
+1454 42175 y Fa(511)4815 b Fi(c2up)582 b(=)f
+(IJKth\(udata,2,jx,jy+iup\);)1454 43504 y Fa(512)4815
+b Fi(vertd1)582 b(=)f(cyup*\(c1up)i(-)e(c1\))h(-)f(cydn*\(c1)h(-)g
+(c1dn\);)1454 44832 y Fa(513)4815 b Fi(vertd2)582 b(=)f(cyup*\(c2up)i
+(-)e(c2\))h(-)f(cydn*\(c2)h(-)g(c2dn\);)1454 46160 y
+Fa(514)1454 47489 y(515)4815 b Fi(/*)581 b(Set)h(horizontal)h
+(diffusion)f(and)g(advection)g(terms.)g(*/)1454 48817
+y Fa(516)1454 50145 y(517)4815 b Fi(ileft)582 b(=)f(\(jx)h(==)f(0\))h
+(?)f(1)g(:)g(-1;)1454 51474 y Fa(518)4815 b Fi(iright)582
+b(=\(jx)g(==)f(MX-1\))h(?)f(-1)h(:)f(1;)1454 52802 y
+Fa(519)4815 b Fi(c1lt)582 b(=)f(IJKth\(udata,1,jx+ileft,jy\);)1454
+54130 y Fa(520)4815 b Fi(c2lt)582 b(=)f(IJKth\(udata,2,jx+ileft,jy\);)
+1454 55459 y Fa(521)4815 b Fi(c1rt)582 b(=)f
+(IJKth\(udata,1,jx+iright,jy\);)1454 56787 y Fa(522)4815
+b Fi(c2rt)582 b(=)f(IJKth\(udata,2,jx+iright,jy\);)1454
+58115 y Fa(523)4815 b Fi(hord1)582 b(=)f(hordco*\(c1rt)i(-)e(TWO*c1)h
+(+)g(c1lt\);)1454 59444 y Fa(524)4815 b Fi(hord2)582
+b(=)f(hordco*\(c2rt)i(-)e(TWO*c2)h(+)g(c2lt\);)1454 60772
+y Fa(525)4815 b Fi(horad1)582 b(=)f(horaco*\(c1rt)i(-)e(c1lt\);)1454
+62100 y Fa(526)4815 b Fi(horad2)582 b(=)f(horaco*\(c2rt)i(-)e(c2lt\);)
+1454 63429 y Fa(527)1454 64757 y(528)4815 b Fi(/*)581
+b(Load)h(all)g(terms)g(into)f(udot.)h(*/)1454 66086 y
+Fa(529)1454 67414 y(530)4815 b Fi(IJKth\(dudata,)583
+b(1,)e(jx,)h(jy\))g(=)f(vertd1)h(+)f(hord1)h(+)f(horad1)h(+)g(rkin1;)
+1454 68742 y Fa(531)4815 b Fi(IJKth\(dudata,)583 b(2,)e(jx,)h(jy\))g(=)
+f(vertd2)h(+)f(hord2)h(+)f(horad2)h(+)g(rkin2;)1454 70071
+y Fa(532)3653 b Fi(})1454 71399 y Fa(533)2490 b Fi(})1454
+72727 y Fa(534)1454 74056 y(535)1328 b Fi(})1454 75384
+y Fa(536)1454 76712 y(537)g Fi(/*)581 b(Preconditioner)j(setup)e
+(routine.)g(Generate)g(and)g(preprocess)g(P.)g(*/)1454
+78041 y Fa(538)p Black 27394 81741 a Fs(53)p Black eop
+%%Page: 54 58
+54 57 bop Black Black -2546 7638 a Fa(539)1328 b Fi(static)582
+b(int)g(Precond\(realtype)h(tn,)f(N_Vector)g(u,)g(N_Vector)g(fu,)-2546
+8966 y Fa(540)12370 b Fi(booleantype)583 b(jok,)e(booleantype)i
+(*jcurPtr,)g(realtype)f(gamma,)-2546 10295 y Fa(541)12370
+b Fi(void)582 b(*P_data,)g(N_Vector)g(vtemp1,)g(N_Vector)h(vtemp2,)
+-2546 11623 y Fa(542)12370 b Fi(N_Vector)582 b(vtemp3\))-2546
+12951 y Fa(543)1328 b Fi({)-2546 14280 y Fa(544)2490
+b Fi(realtype)583 b(c1,)e(c2,)h(cydn,)g(cyup,)g(diag,)g(ydn,)f(yup,)h
+(q4coef,)g(dely,)g(verdco,)g(hordco;)-2546 15608 y Fa(545)2490
+b Fi(realtype)583 b(**\(*P\)[MY],)f(**\(*Jbd\)[MY];)-2546
+16936 y Fa(546)2490 b Fi(long)582 b(int)g(*\(*pivot\)[MY],)h(ier;)-2546
+18265 y Fa(547)2490 b Fi(int)582 b(jx,)f(jy;)-2546 19593
+y Fa(548)2490 b Fi(realtype)583 b(*udata,)f(**a,)g(**j;)-2546
+20922 y Fa(549)2490 b Fi(UserData)583 b(data;)-2546 22250
+y Fa(550)-2546 23578 y(551)2490 b Fi(/*)582 b(Make)f(local)h(copies)g
+(of)g(pointers)g(in)g(P_data,)g(and)f(of)h(pointer)g(to)g(u's)f(data)h
+(*/)-2546 24907 y Fa(552)-2546 26235 y(553)2490 b Fi(data)582
+b(=)f(\(UserData\))i(P_data;)-2546 27563 y Fa(554)2490
+b Fi(P)582 b(=)f(data->P;)-2546 28892 y Fa(555)2490 b
+Fi(Jbd)582 b(=)f(data->Jbd;)-2546 30220 y Fa(556)2490
+b Fi(pivot)582 b(=)f(data->pivot;)-2546 31548 y Fa(557)2490
+b Fi(udata)582 b(=)f(NV_DATA_S\(u\);)-2546 32877 y Fa(558)-2546
+34205 y(559)2490 b Fi(if)582 b(\(jok\))g({)-2546 35533
+y Fa(560)-2546 36862 y(561)3653 b Fi(/*)581 b(jok)h(=)f(TRUE:)h(Copy)g
+(Jbd)f(to)h(P)f(*/)-2546 38190 y Fa(562)-2546 39518 y(563)3653
+b Fi(for)581 b(\(jy=0;)h(jy)g(<)f(MY;)h(jy++\))-2546
+40847 y Fa(564)4815 b Fi(for)581 b(\(jx=0;)i(jx)e(<)g(MX;)h(jx++\))
+-2546 42175 y Fa(565)5977 b Fi(dencopy\(Jbd[jx][jy],)584
+b(P[jx][jy],)f(NUM_SPECIES\);)-2546 43504 y Fa(566)-2546
+44832 y(567)3653 b Fi(*jcurPtr)582 b(=)f(FALSE;)-2546
+46160 y Fa(568)-2546 47489 y(569)2490 b Fi(})-2546 48817
+y Fa(570)-2546 50145 y(571)g Fi(else)582 b({)-2546 51474
+y Fa(572)3653 b Fi(/*)581 b(jok)h(=)f(FALSE:)h(Generate)g(Jbd)g(from)g
+(scratch)g(and)f(copy)h(to)g(P)f(*/)-2546 52802 y Fa(573)-2546
+54130 y(574)3653 b Fi(/*)581 b(Make)h(local)g(copies)g(of)f(problem)h
+(variables,)h(for)f(efficiency.)g(*/)-2546 55459 y Fa(575)-2546
+56787 y(576)3653 b Fi(q4coef)582 b(=)f(data->q4;)-2546
+58115 y Fa(577)3653 b Fi(dely)581 b(=)h(data->dy;)-2546
+59444 y Fa(578)3653 b Fi(verdco)582 b(=)f(data->vdco;)-2546
+60772 y Fa(579)3653 b Fi(hordco)1163 b(=)581 b(data->hdco;)-2546
+62100 y Fa(580)-2546 63429 y(581)3653 b Fi(/*)581 b(Compute)h(2x2)g
+(diagonal)g(Jacobian)h(blocks)f(\(using)g(q4)f(values)-2546
+64757 y Fa(582)5396 b Fi(computed)582 b(on)g(the)f(last)h(f)f(call\).)
+1164 b(Load)581 b(into)h(P.)g(*/)-2546 66086 y Fa(583)-2546
+67414 y(584)3653 b Fi(for)581 b(\(jy=0;)h(jy)g(<)f(MY;)h(jy++\))f({)
+-2546 68742 y Fa(585)4815 b Fi(ydn)581 b(=)h(YMIN)g(+)f(\(jy)g(-)h
+(RCONST\(0.5\)\)*dely;)-2546 70071 y Fa(586)4815 b Fi(yup)581
+b(=)h(ydn)f(+)h(dely;)-2546 71399 y Fa(587)4815 b Fi(cydn)582
+b(=)f(verdco*exp\(RCONST\(0.2\)*ydn\);)-2546 72727 y
+Fa(588)4815 b Fi(cyup)582 b(=)f(verdco*exp\(RCONST\(0.2\)*yup\);)-2546
+74056 y Fa(589)4815 b Fi(diag)582 b(=)f(-\(cydn)h(+)f(cyup)h(+)f
+(TWO*hordco\);)-2546 75384 y Fa(590)4815 b Fi(for)581
+b(\(jx=0;)i(jx)e(<)g(MX;)h(jx++\))g({)-2546 76712 y Fa(591)5977
+b Fi(c1)582 b(=)f(IJKth\(udata,1,jx,jy\);)-2546 78041
+y Fa(592)5977 b Fi(c2)582 b(=)f(IJKth\(udata,2,jx,jy\);)p
+Black 23394 81741 a Fs(54)p Black eop
+%%Page: 55 59
+55 58 bop Black Black 1454 7638 a Fa(593)5977 b Fi(j)581
+b(=)h(Jbd[jx][jy];)1454 8966 y Fa(594)5977 b Fi(a)581
+b(=)h(P[jx][jy];)1454 10295 y Fa(595)5977 b Fi(IJth\(j,1,1\))583
+b(=)e(\(-Q1*C3)h(-)g(Q2*c2\))g(+)f(diag;)1454 11623 y
+Fa(596)5977 b Fi(IJth\(j,1,2\))583 b(=)e(-Q2*c1)h(+)g(q4coef;)1454
+12951 y Fa(597)5977 b Fi(IJth\(j,2,1\))583 b(=)e(Q1*C3)h(-)f(Q2*c2;)
+1454 14280 y Fa(598)5977 b Fi(IJth\(j,2,2\))583 b(=)e(\(-Q2*c1)h(-)g
+(q4coef\))g(+)f(diag;)1454 15608 y Fa(599)5977 b Fi(dencopy\(j,)583
+b(a,)e(NUM_SPECIES\);)1454 16936 y Fa(600)4815 b Fi(})1454
+18265 y Fa(601)3653 b Fi(})1454 19593 y Fa(602)1454 20922
+y(603)g Fi(*jcurPtr)582 b(=)f(TRUE;)1454 22250 y Fa(604)1454
+23578 y(605)2490 b Fi(})1454 24907 y Fa(606)1454 26235
+y(607)g Fi(/*)582 b(Scale)g(by)f(-gamma)h(*/)1454 27563
+y Fa(608)1454 28892 y(609)2490 b Fi(for)582 b(\(jy=0;)g(jy)f(<)h(MY;)f
+(jy++\))1454 30220 y Fa(610)3653 b Fi(for)581 b(\(jx=0;)h(jx)g(<)f(MX;)
+h(jx++\))1454 31548 y Fa(611)4815 b Fi(denscale\(-gamma,)583
+b(P[jx][jy],)g(NUM_SPECIES\);)1454 32877 y Fa(612)1454
+34205 y(613)2490 b Fi(/*)582 b(Add)f(identity)i(matrix)f(and)f(do)h(LU)
+f(decompositions)i(on)f(blocks)g(in)f(place.)h(*/)1454
+35533 y Fa(614)1454 36862 y(615)2490 b Fi(for)582 b(\(jx=0;)g(jx)f(<)h
+(MX;)f(jx++\))h({)1454 38190 y Fa(616)3653 b Fi(for)581
+b(\(jy=0;)h(jy)g(<)f(MY;)h(jy++\))f({)1454 39518 y Fa(617)4815
+b Fi(denaddI\(P[jx][jy],)584 b(NUM_SPECIES\);)1454 40847
+y Fa(618)4815 b Fi(ier)581 b(=)h(gefa\(P[jx][jy],)h(NUM_SPECIES,)g
+(pivot[jx][jy]\);)1454 42175 y Fa(619)4815 b Fi(if)581
+b(\(ier)h(!=)g(0\))f(return\(1\);)1454 43504 y Fa(620)3653
+b Fi(})1454 44832 y Fa(621)2490 b Fi(})1454 46160 y Fa(622)1454
+47489 y(623)g Fi(return\(0\);)1454 48817 y Fa(624)1328
+b Fi(})1454 50145 y Fa(625)1454 51474 y(626)g Fi(/*)581
+b(Preconditioner)j(solve)e(routine)g(*/)1454 52802 y
+Fa(627)1454 54130 y(628)1328 b Fi(static)582 b(int)g(PSolve\(realtype)h
+(tn,)f(N_Vector)g(u,)f(N_Vector)i(fu,)1454 55459 y Fa(629)11789
+b Fi(N_Vector)582 b(r,)f(N_Vector)i(z,)1454 56787 y Fa(630)11789
+b Fi(realtype)582 b(gamma,)g(realtype)g(delta,)1454 58115
+y Fa(631)11789 b Fi(int)581 b(lr,)h(void)g(*P_data,)g(N_Vector)g
+(vtemp\))1454 59444 y Fa(632)1328 b Fi({)1454 60772 y
+Fa(633)2490 b Fi(realtype)583 b(**\(*P\)[MY];)1454 62100
+y Fa(634)2490 b Fi(long)582 b(int)g(*\(*pivot\)[MY];)1454
+63429 y Fa(635)2490 b Fi(int)582 b(jx,)f(jy;)1454 64757
+y Fa(636)2490 b Fi(realtype)583 b(*zdata,)f(*v;)1454
+66086 y Fa(637)2490 b Fi(UserData)583 b(data;)1454 67414
+y Fa(638)1454 68742 y(639)2490 b Fi(/*)582 b(Extract)g(the)g(P)f(and)g
+(pivot)h(arrays)g(from)g(P_data.)g(*/)1454 70071 y Fa(640)1454
+71399 y(641)2490 b Fi(data)582 b(=)f(\(UserData\))i(P_data;)1454
+72727 y Fa(642)2490 b Fi(P)582 b(=)f(data->P;)1454 74056
+y Fa(643)2490 b Fi(pivot)582 b(=)f(data->pivot;)1454
+75384 y Fa(644)2490 b Fi(zdata)582 b(=)f(NV_DATA_S\(z\);)1454
+76712 y Fa(645)1454 78041 y(646)2490 b Fi(N_VScale\(ONE,)583
+b(r,)f(z\);)p Black 27394 81741 a Fs(55)p Black eop
+%%Page: 56 60
+56 59 bop Black Black -2546 7638 a Fa(647)-2546 8966
+y(648)2490 b Fi(/*)582 b(Solve)g(the)f(block-diagonal)i(system)g(Px)e
+(=)g(r)h(using)f(LU)h(factors)g(stored)-2546 10295 y
+Fa(649)4234 b Fi(in)581 b(P)g(and)h(pivot)g(data)g(in)f(pivot,)h(and)g
+(return)g(the)f(solution)i(in)e(z.)h(*/)-2546 11623 y
+Fa(650)-2546 12951 y(651)2490 b Fi(for)582 b(\(jx=0;)g(jx)f(<)h(MX;)f
+(jx++\))h({)-2546 14280 y Fa(652)3653 b Fi(for)581 b(\(jy=0;)h(jy)g(<)f
+(MY;)h(jy++\))f({)-2546 15608 y Fa(653)4815 b Fi(v)581
+b(=)g(&\(IJKth\(zdata,)j(1,)d(jx,)h(jy\)\);)-2546 16936
+y Fa(654)4815 b Fi(gesl\(P[jx][jy],)583 b(NUM_SPECIES,)g
+(pivot[jx][jy],)g(v\);)-2546 18265 y Fa(655)3653 b Fi(})-2546
+19593 y Fa(656)2490 b Fi(})-2546 20922 y Fa(657)-2546
+22250 y(658)g Fi(return\(0\);)-2546 23578 y Fa(659)1328
+b Fi(})p Black 23394 81741 a Fs(56)p Black eop
+%%Page: 57 61
+57 60 bop Black Black 4000 7638 a Fr(D)1794 b(Listing)599
+b(of)e Fb(pvnx.c)2266 10674 y Fa(1)1328 b Fi(/*)2266
+12003 y Fa(2)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)2266
+13331 y Fa(3)1909 b Fi(*)581 b($Revision: 1.1 $)2266
+14659 y Fa(4)1909 b Fi(*)581 b($Date: 2005/10/27 13:20:41 $)2266
+15988 y Fa(5)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)2266
+17316 y Fa(6)1909 b Fi(*)581 b(Programmer\(s\):)j(Scott)e(D.)f(Cohen,)h
+(Alan)g(C.)f(Hindmarsh,)i(George)f(Byrne,)2266 18645
+y Fa(7)1909 b Fi(*)9299 b(and)581 b(Radu)h(Serban)g(@)f(LLNL)2266
+19973 y Fa(8)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)2266
+21301 y Fa(9)1909 b Fi(*)581 b(Example)i(problem:)1860
+22630 y Fa(10)1909 b Fi(*)1860 23958 y Fa(11)g Fi(*)581
+b(The)h(following)h(is)e(a)g(simple)h(example)h(problem,)f(with)g(the)f
+(program)h(for)1860 25286 y Fa(12)1909 b Fi(*)581 b(its)h(solution)g
+(by)g(CVODE.)g(The)f(problem)i(is)e(the)h(semi-discrete)1860
+26615 y Fa(13)1909 b Fi(*)581 b(form)h(of)g(the)f(advection-diffusion)j
+(equation)f(in)e(1-D:)1860 27943 y Fa(14)1909 b Fi(*)1744
+b(du/dt)582 b(=)f(d^2)h(u)f(/)g(dx^2)h(+)f(.5)h(du/dx)1860
+29271 y Fa(15)1909 b Fi(*)581 b(on)h(the)f(interval)i(0)e(<=)h(x)f(<=)g
+(2,)h(and)f(the)h(time)g(interval)g(0)f(<=)h(t)f(<=)h(5.)1860
+30600 y Fa(16)1909 b Fi(*)581 b(Homogeneous)i(Dirichlet)g(boundary)f
+(conditions)h(are)e(posed,)h(and)g(the)1860 31928 y Fa(17)1909
+b Fi(*)581 b(initial)i(condition)f(is)g(the)f(following:)1860
+33256 y Fa(18)1909 b Fi(*)1744 b(u\(x,t=0\))582 b(=)f
+(x\(2-x\)exp\(2x\))i(.)1860 34585 y Fa(19)1909 b Fi(*)581
+b(The)h(PDE)g(is)f(discretized)i(on)e(a)h(uniform)g(grid)g(of)f(size)h
+(MX+2)f(with)1860 35913 y Fa(20)1909 b Fi(*)581 b(central)i
+(differencing,)g(and)e(with)h(boundary)g(values)g(eliminated,)1860
+37241 y Fa(21)1909 b Fi(*)581 b(leaving)i(an)e(ODE)h(system)g(of)f
+(size)h(NEQ)g(=)f(MX.)1860 38570 y Fa(22)1909 b Fi(*)581
+b(This)h(program)g(solves)g(the)g(problem)g(with)g(the)g(option)g(for)f
+(nonstiff)1860 39898 y Fa(23)1909 b Fi(*)581 b(systems:)i(ADAMS)f
+(method)g(and)f(functional)i(iteration.)1860 41227 y
+Fa(24)1909 b Fi(*)581 b(It)h(uses)g(scalar)g(relative)g(and)g(absolute)
+g(tolerances.)1860 42555 y Fa(25)1909 b Fi(*)581 b(Output)h(is)g
+(printed)g(at)g(t)f(=)g(.5,)h(1.0,)g(...,)f(5.)1860 43883
+y Fa(26)1909 b Fi(*)581 b(Run)h(statistics)h(\(optional)f(outputs\))h
+(are)e(printed)h(at)g(the)f(end.)1860 45212 y Fa(27)1909
+b Fi(*)1860 46540 y Fa(28)g Fi(*)581 b(This)h(version)g(uses)g(MPI)g
+(for)f(user)h(routines.)1860 47868 y Fa(29)1909 b Fi(*)581
+b(Execute)i(with)e(Number)h(of)g(Processors)h(=)e(N,)1162
+b(with)582 b(1)f(<=)h(N)f(<=)h(MX.)1860 49197 y Fa(30)1909
+b Fi(*)581 b
+(-----------------------------------------------------------------)1860
+50525 y Fa(31)1909 b Fi(*/)1860 51853 y Fa(32)1860 53182
+y(33)1328 b Fi(#include)582 b(<stdio.h>)1860 54510 y
+Fa(34)1328 b Fi(#include)582 b(<stdlib.h>)1860 55838
+y Fa(35)1328 b Fi(#include)582 b(<math.h>)1860 57167
+y Fa(36)1328 b Fi(#include)582 b("sundialstypes.h")2909
+b(/*)581 b(definition)i(of)e(realtype)12787 b(*/)1860
+58495 y Fa(37)1328 b Fi(#include)582 b("cvode.h")7557
+b(/*)581 b(prototypes)i(for)e(CVode*)h(and)g(various)g(constants)h(*/)
+1860 59823 y Fa(38)1328 b Fi(#include)582 b("nvector_parallel.h")1166
+b(/*)581 b(definitions)i(of)e(type)h(N_Vector)g(and)g(vector)2907
+b(*/)1860 61152 y Fa(39)19344 b Fi(/*)581 b(macros,)h(and)g(prototypes)
+g(for)g(N_Vector)5232 b(*/)1860 62480 y Fa(40)19344 b
+Fi(/*)581 b(functions)20342 b(*/)1860 63808 y Fa(41)1328
+b Fi(#include)582 b("mpi.h")8719 b(/*)581 b(MPI)h(constants)g(and)g
+(types)12205 b(*/)1860 65137 y Fa(42)1860 66465 y(43)1328
+b Fi(/*)581 b(Problem)i(Constants)f(*/)1860 67794 y Fa(44)1860
+69122 y(45)1328 b Fi(#define)582 b(ZERO)1163 b(RCONST\(0.0\))1860
+70450 y Fa(46)1860 71779 y(47)1328 b Fi(#define)582 b(XMAX)1163
+b(RCONST\(2.0\))2326 b(/*)582 b(domain)g(boundary)6394
+b(*/)1860 73107 y Fa(48)1328 b Fi(#define)582 b(MX)2325
+b(10)7555 b(/*)582 b(mesh)g(dimension)6975 b(*/)1860
+74435 y Fa(49)1328 b Fi(#define)582 b(NEQ)1744 b(MX)7555
+b(/*)582 b(number)g(of)f(equations)4070 b(*/)1860 75764
+y Fa(50)1328 b Fi(#define)582 b(ATOL)1163 b(RCONST\(1.0e-5\))583
+b(/*)f(scalar)g(absolute)g(tolerance)h(*/)1860 77092
+y Fa(51)1328 b Fi(#define)582 b(T0)2325 b(ZERO)6393 b(/*)582
+b(initial)g(time)8137 b(*/)1860 78420 y Fa(52)1328 b
+Fi(#define)582 b(T1)2325 b(RCONST\(0.5\))h(/*)582 b(first)g(output)g
+(time)5231 b(*/)p Black 27394 81741 a Fs(57)p Black eop
+%%Page: 58 62
+58 61 bop Black Black -2140 7638 a Fa(53)1328 b Fi(#define)582
+b(DTOUT)g(RCONST\(0.5\))2326 b(/*)582 b(output)g(time)g(increment)2907
+b(*/)-2140 8966 y Fa(54)1328 b Fi(#define)582 b(NOUT)1163
+b(10)7555 b(/*)582 b(number)g(of)f(output)h(times)2326
+b(*/)-2140 10295 y Fa(55)-2140 11623 y(56)1328 b Fi(/*)581
+b(Type)h(:)f(UserData)-2140 12951 y Fa(57)3071 b Fi(contains)583
+b(grid)f(constants,)g(parallel)h(machine)f(parameters,)g(work)g(array.)
+g(*/)-2140 14280 y Fa(58)-2140 15608 y(59)1328 b Fi(typedef)582
+b(struct)g({)-2140 16936 y Fa(60)2490 b Fi(realtype)583
+b(dx,)e(hdcoef,)h(hacoef;)-2140 18265 y Fa(61)2490 b
+Fi(int)582 b(npes,)g(my_pe;)-2140 19593 y Fa(62)2490
+b Fi(MPI_Comm)583 b(comm;)-2140 20922 y Fa(63)2490 b
+Fi(realtype)583 b(z[100];)-2140 22250 y Fa(64)1328 b
+Fi(})581 b(*UserData;)-2140 23578 y Fa(65)-2140 24907
+y(66)1328 b Fi(/*)581 b(Private)i(Helper)f(Functions)g(*/)-2140
+26235 y Fa(67)-2140 27563 y(68)1328 b Fi(static)582 b(void)g
+(SetIC\(N_Vector)h(u,)e(realtype)i(dx,)e(long)h(int)g(my_length,)-2140
+28892 y Fa(69)11789 b Fi(long)581 b(int)h(my_base\);)-2140
+30220 y Fa(70)-2140 31548 y(71)1328 b Fi(static)582 b(void)g
+(PrintIntro\(int)h(npes\);)-2140 32877 y Fa(72)-2140
+34205 y(73)1328 b Fi(static)582 b(void)g(PrintData\(realtype)i(t,)d
+(realtype)h(umax,)g(long)g(int)g(nst\);)-2140 35533 y
+Fa(74)-2140 36862 y(75)1328 b Fi(static)582 b(void)g
+(PrintFinalStats\(void)i(*cvode_mem\);)-2140 38190 y
+Fa(76)-2140 39518 y(77)1328 b Fi(/*)581 b(Functions)i(Called)f(by)f
+(the)h(Solver)g(*/)-2140 40847 y Fa(78)-2140 42175 y(79)1328
+b Fi(static)582 b(void)g(f\(realtype)g(t,)g(N_Vector)g(u,)g(N_Vector)g
+(udot,)g(void)g(*f_data\);)-2140 43504 y Fa(80)-2140
+44832 y(81)1328 b Fi(/*)581 b(Private)i(function)f(to)f(check)h
+(function)h(return)f(values)g(*/)-2140 46160 y Fa(82)-2140
+47489 y(83)1328 b Fi(static)582 b(int)g(check_flag\(void)h(*flagvalue,)
+g(char)f(*funcname,)g(int)g(opt,)g(int)f(id\);)-2140
+48817 y Fa(84)-2140 50145 y(85)1328 b Fi
+(/*****************************)586 b(Main)581 b(Program)i
+(******************************/)-2140 51474 y Fa(86)-2140
+52802 y(87)1328 b Fi(int)582 b(main\(int)g(argc,)g(char)g(*argv[]\))
+-2140 54130 y Fa(88)1328 b Fi({)-2140 55459 y Fa(89)2490
+b Fi(realtype)583 b(dx,)e(reltol,)h(abstol,)h(t,)e(tout,)h(umax;)-2140
+56787 y Fa(90)2490 b Fi(N_Vector)583 b(u;)-2140 58115
+y Fa(91)2490 b Fi(UserData)583 b(data;)-2140 59444 y
+Fa(92)2490 b Fi(void)582 b(*cvode_mem;)-2140 60772 y
+Fa(93)2490 b Fi(int)582 b(iout,)g(flag,)g(my_pe,)g(npes;)-2140
+62100 y Fa(94)2490 b Fi(long)582 b(int)g(local_N,)g(nperpe,)g(nrem,)g
+(my_base,)g(nst;)-2140 63429 y Fa(95)-2140 64757 y(96)2490
+b Fi(MPI_Comm)583 b(comm;)-2140 66086 y Fa(97)-2140 67414
+y(98)2490 b Fi(u)582 b(=)f(NULL;)-2140 68742 y Fa(99)2490
+b Fi(data)582 b(=)f(NULL;)-2546 70071 y Fa(100)2490 b
+Fi(cvode_mem)583 b(=)e(NULL;)-2546 71399 y Fa(101)-2546
+72727 y(102)2490 b Fi(/*)582 b(Get)f(processor)i(number,)f(total)g
+(number)g(of)f(pe's,)h(and)g(my_pe.)g(*/)-2546 74056
+y Fa(103)2490 b Fi(MPI_Init\(&argc,)584 b(&argv\);)-2546
+75384 y Fa(104)2490 b Fi(comm)582 b(=)f(MPI_COMM_WORLD;)-2546
+76712 y Fa(105)2490 b Fi(MPI_Comm_size\(comm,)584 b(&npes\);)-2546
+78041 y Fa(106)2490 b Fi(MPI_Comm_rank\(comm,)584 b(&my_pe\);)p
+Black 23394 81741 a Fs(58)p Black eop
+%%Page: 59 63
+59 62 bop Black Black 1454 7638 a Fa(107)1454 8966 y(108)2490
+b Fi(/*)582 b(Set)f(local)h(vector)g(length.)g(*/)1454
+10295 y Fa(109)2490 b Fi(nperpe)582 b(=)g(NEQ/npes;)1454
+11623 y Fa(110)2490 b Fi(nrem)582 b(=)f(NEQ)h(-)f(npes*nperpe;)1454
+12951 y Fa(111)2490 b Fi(local_N)582 b(=)g(\(my_pe)g(<)f(nrem\))h(?)f
+(nperpe+1)i(:)e(nperpe;)1454 14280 y Fa(112)2490 b Fi(my_base)582
+b(=)g(\(my_pe)g(<)f(nrem\))h(?)f(my_pe*local_N)i(:)f(my_pe*nperpe)h(+)e
+(nrem;)1454 15608 y Fa(113)1454 16936 y(114)2490 b Fi(data)582
+b(=)f(\(UserData\))i(malloc\(sizeof)g(*data\);)1163 b(/*)582
+b(Allocate)g(data)g(memory)g(*/)1454 18265 y Fa(115)2490
+b Fi(if\(check_flag\(\(void)584 b(*\)data,)e("malloc",)h(2,)e
+(my_pe\)\))i(MPI_Abort\(comm,)g(1\);)1454 19593 y Fa(116)1454
+20922 y(117)2490 b Fi(data->comm)583 b(=)e(comm;)1454
+22250 y Fa(118)2490 b Fi(data->npes)583 b(=)e(npes;)1454
+23578 y Fa(119)2490 b Fi(data->my_pe)583 b(=)e(my_pe;)1454
+24907 y Fa(120)1454 26235 y(121)2490 b Fi(u)582 b(=)f
+(N_VNew_Parallel\(comm,)j(local_N,)f(NEQ\);)1163 b(/*)581
+b(Allocate)h(u)g(vector)g(*/)1454 27563 y Fa(122)2490
+b Fi(if\(check_flag\(\(void)584 b(*\)u,)e("N_VNew",)h(0,)e(my_pe\)\))h
+(MPI_Abort\(comm,)i(1\);)1454 28892 y Fa(123)1454 30220
+y(124)2490 b Fi(reltol)582 b(=)g(ZERO;)1163 b(/*)581
+b(Set)h(the)f(tolerances)i(*/)1454 31548 y Fa(125)2490
+b Fi(abstol)582 b(=)g(ATOL;)1454 32877 y Fa(126)1454
+34205 y(127)2490 b Fi(dx)582 b(=)f(data->dx)h(=)g
+(XMAX/\(\(realtype\)\(MX+1\)\);)1166 b(/*)581 b(Set)h(grid)f
+(coefficients)i(in)f(data)f(*/)1454 35533 y Fa(128)2490
+b Fi(data->hdcoef)583 b(=)f(RCONST\(1.0\)/\(dx*dx\);)1454
+36862 y Fa(129)2490 b Fi(data->hacoef)583 b(=)f
+(RCONST\(0.5\)/\(RCONST\(2.0\)*dx\);)1454 38190 y Fa(130)1454
+39518 y(131)2490 b Fi(SetIC\(u,)583 b(dx,)e(local_N,)i(my_base\);)1163
+b(/*)582 b(Initialize)g(u)g(vector)g(*/)1454 40847 y
+Fa(132)1454 42175 y(133)2490 b Fi(/*)1454 43504 y Fa(134)4234
+b Fi(Call)581 b(CVodeCreate)i(to)f(create)g(the)f(solver)h(memory:)1454
+44832 y Fa(135)1454 46160 y(136)4234 b Fi(CV_ADAMS)1744
+b(specifies)583 b(the)e(Adams)h(Method)1454 47489 y Fa(137)4234
+b Fi(CV_FUNCTIONAL)1164 b(specifies)582 b(functional)h(iteration)1454
+48817 y Fa(138)1454 50145 y(139)4234 b Fi(A)581 b(pointer)h(to)g(the)f
+(integrator)i(memory)f(is)f(returned)i(and)e(stored)h(in)g(cvode_mem.)
+1454 51474 y Fa(140)2490 b Fi(*/)1454 52802 y Fa(141)1454
+54130 y(142)g Fi(cvode_mem)583 b(=)e(CVodeCreate\(CV_ADAMS,)j
+(CV_FUNCTIONAL\);)1454 55459 y Fa(143)2490 b Fi(if\(check_flag\(\(void)
+584 b(*\)cvode_mem,)f("CVodeCreate",)g(0,)f(my_pe\)\))g
+(MPI_Abort\(comm,)h(1\);)1454 56787 y Fa(144)1454 58115
+y(145)2490 b Fi(flag)582 b(=)f(CVodeSetFdata\(cvode_mem,)k(data\);)1454
+59444 y Fa(146)2490 b Fi(if\(check_flag\(&flag,)584 b("CVodeSetFdata",)
+g(1,)d(my_pe\)\))i(MPI_Abort\(comm,)g(1\);)1454 60772
+y Fa(147)1454 62100 y(148)2490 b Fi(/*)1454 63429 y Fa(149)4234
+b Fi(Call)581 b(CVodeMalloc)i(to)f(initialize)g(the)g(integrator)h
+(memory:)1454 64757 y Fa(150)1454 66086 y(151)4234 b
+Fi(cvode_mem)582 b(is)g(the)f(pointer)h(to)g(the)g(integrator)g(memory)
+g(returned)h(by)e(CVodeCreate)1454 67414 y Fa(152)4234
+b Fi(f)4068 b(is)581 b(the)h(user's)g(right)g(hand)g(side)f(function)i
+(in)e(y'=f\(t,y\))1454 68742 y Fa(153)4234 b Fi(T0)3487
+b(is)581 b(the)h(initial)g(time)1454 70071 y Fa(154)4234
+b Fi(u)4068 b(is)581 b(the)h(initial)g(dependent)h(variable)f(vector)
+1454 71399 y Fa(155)4234 b Fi(CV_SS)1744 b(specifies)582
+b(scalar)g(relative)h(and)e(absolute)i(tolerances)1454
+72727 y Fa(156)4234 b Fi(reltol)1163 b(is)581 b(the)h(relative)g
+(tolerance)1454 74056 y Fa(157)4234 b Fi(&abstol)582
+b(is)f(a)h(pointer)g(to)f(the)h(scalar)g(absolute)g(tolerance)1454
+75384 y Fa(158)2490 b Fi(*/)1454 76712 y Fa(159)1454
+78041 y(160)g Fi(flag)582 b(=)f(CVodeMalloc\(cvode_mem,)k(f,)c(T0,)h
+(u,)f(CV_SS,)h(reltol,)g(&abstol\);)p Black 27394 81741
+a Fs(59)p Black eop
+%%Page: 60 64
+60 63 bop Black Black -2546 7638 a Fa(161)2490 b Fi
+(if\(check_flag\(&flag,)584 b("CVodeMalloc",)g(1,)d(my_pe\)\))h
+(MPI_Abort\(comm,)i(1\);)-2546 8966 y Fa(162)-2546 10295
+y(163)2490 b Fi(if)582 b(\(my_pe)g(==)f(0\))h(PrintIntro\(npes\);)-2546
+11623 y Fa(164)-2546 12951 y(165)2490 b Fi(umax)582 b(=)f
+(N_VMaxNorm\(u\);)-2546 14280 y Fa(166)-2546 15608 y(167)2490
+b Fi(if)582 b(\(my_pe)g(==)f(0\))h(PrintData\(t,)h(umax,)f(0\);)-2546
+16936 y Fa(168)-2546 18265 y(169)2490 b Fi(/*)582 b(In)f(loop)h(over)g
+(output)g(points,)g(call)g(CVode,)g(print)g(results,)g(test)g(for)f
+(error)h(*/)-2546 19593 y Fa(170)-2546 20922 y(171)2490
+b Fi(for)582 b(\(iout=1,)g(tout=T1;)h(iout)e(<=)h(NOUT;)g(iout++,)g
+(tout)g(+=)f(DTOUT\))h({)-2546 22250 y Fa(172)3653 b
+Fi(flag)581 b(=)h(CVode\(cvode_mem,)h(tout,)f(u,)g(&t,)f(CV_NORMAL\);)
+-2546 23578 y Fa(173)3653 b Fi(if\(check_flag\(&flag,)584
+b("CVode",)e(1,)g(my_pe\)\))g(break;)-2546 24907 y Fa(174)3653
+b Fi(umax)581 b(=)h(N_VMaxNorm\(u\);)-2546 26235 y Fa(175)3653
+b Fi(flag)581 b(=)h(CVodeGetNumSteps\(cvode_mem,)j(&nst\);)-2546
+27563 y Fa(176)3653 b Fi(check_flag\(&flag,)583 b("CVodeGetNumSteps",)h
+(1,)e(my_pe\);)-2546 28892 y Fa(177)3653 b Fi(if)581
+b(\(my_pe)h(==)g(0\))f(PrintData\(t,)i(umax,)f(nst\);)-2546
+30220 y Fa(178)2490 b Fi(})-2546 31548 y Fa(179)-2546
+32877 y(180)g Fi(if)582 b(\(my_pe)g(==)f(0\))-2546 34205
+y Fa(181)3653 b Fi(PrintFinalStats\(cvode_mem\);)1166
+b(/*)581 b(Print)h(some)g(final)g(statistics)h(*/)-2546
+35533 y Fa(182)-2546 36862 y(183)2490 b Fi(N_VDestroy_Parallel\(u\);)
+4653 b(/*)581 b(Free)h(the)g(u)f(vector)h(*/)-2546 38190
+y Fa(184)2490 b Fi(CVodeFree\(cvode_mem\);)5815 b(/*)581
+b(Free)h(the)g(integrator)g(memory)g(*/)-2546 39518 y
+Fa(185)2490 b Fi(free\(data\);)11625 b(/*)581 b(Free)h(user)g(data)g
+(*/)-2546 40847 y Fa(186)-2546 42175 y(187)2490 b Fi(MPI_Finalize\(\);)
+-2546 43504 y Fa(188)-2546 44832 y(189)g Fi(return\(0\);)-2546
+46160 y Fa(190)1328 b Fi(})-2546 47489 y Fa(191)-2546
+48817 y(192)g Fi(/************************)585 b(Private)d(Helper)g
+(Functions)h(***********************/)-2546 50145 y Fa(193)-2546
+51474 y(194)1328 b Fi(/*)581 b(Set)h(initial)g(conditions)h(in)e(u)h
+(vector)g(*/)-2546 52802 y Fa(195)-2546 54130 y(196)1328
+b Fi(static)582 b(void)g(SetIC\(N_Vector)h(u,)e(realtype)i(dx,)e(long)h
+(int)g(my_length,)-2546 55459 y Fa(197)11789 b Fi(long)581
+b(int)h(my_base\))-2546 56787 y Fa(198)1328 b Fi({)-2546
+58115 y Fa(199)2490 b Fi(int)582 b(i;)-2546 59444 y Fa(200)2490
+b Fi(long)582 b(int)g(iglobal;)-2546 60772 y Fa(201)2490
+b Fi(realtype)583 b(x;)-2546 62100 y Fa(202)2490 b Fi(realtype)583
+b(*udata;)-2546 63429 y Fa(203)-2546 64757 y(204)2490
+b Fi(/*)582 b(Set)f(pointer)i(to)e(data)h(array)g(and)f(get)h(local)g
+(length)g(of)f(u.)h(*/)-2546 66086 y Fa(205)2490 b Fi(udata)582
+b(=)f(NV_DATA_P\(u\);)-2546 67414 y Fa(206)2490 b Fi(my_length)583
+b(=)e(NV_LOCLENGTH_P\(u\);)-2546 68742 y Fa(207)-2546
+70071 y(208)2490 b Fi(/*)582 b(Load)f(initial)i(profile)f(into)g(u)f
+(vector)h(*/)-2546 71399 y Fa(209)2490 b Fi(for)582 b(\(i=1;)g
+(i<=my_length;)h(i++\))f({)-2546 72727 y Fa(210)3653
+b Fi(iglobal)582 b(=)f(my_base)h(+)g(i;)-2546 74056 y
+Fa(211)3653 b Fi(x)581 b(=)g(iglobal*dx;)-2546 75384
+y Fa(212)3653 b Fi(udata[i-1])582 b(=)g(x*\(XMAX)g(-)f
+(x\)*exp\(RCONST\(2.0\)*x\);)-2546 76712 y Fa(213)2490
+b Fi(})-2546 78041 y Fa(214)1328 b Fi(})p Black 23394
+81741 a Fs(60)p Black eop
+%%Page: 61 65
+61 64 bop Black Black 1454 7638 a Fa(215)1454 8966 y(216)1328
+b Fi(/*)581 b(Print)h(problem)h(introduction)f(*/)1454
+10295 y Fa(217)1454 11623 y(218)1328 b Fi(static)582
+b(void)g(PrintIntro\(int)h(npes\))1454 12951 y Fa(219)1328
+b Fi({)1454 14280 y Fa(220)2490 b Fi(printf\("\\n)583
+b(1-D)f(advection-diffusion)i(equation,)e(mesh)g(size)f(=\0453d)h
+(\\n",)g(MX\);)1454 15608 y Fa(221)2490 b Fi(printf\("\\n)583
+b(Number)f(of)f(PEs)h(=)f(\0453d)h(\\n\\n",)g(npes\);)1454
+16936 y Fa(222)1454 18265 y(223)2490 b Fi(return;)1454
+19593 y Fa(224)1328 b Fi(})1454 20922 y Fa(225)1454 22250
+y(226)g Fi(/*)581 b(Print)h(data)g(*/)1454 23578 y Fa(227)1454
+24907 y(228)1328 b Fi(static)582 b(void)g(PrintData\(realtype)i(t,)d
+(realtype)h(umax,)g(long)g(int)g(nst\))1454 26235 y Fa(229)1328
+b Fi({)1454 27563 y Fa(230)1454 28892 y(231)g Fi(#if)582
+b(defined\(SUNDIALS_EXTENDED_PRECISION\))1454 30220 y
+Fa(232)2490 b Fi(printf\("At)583 b(t)e(=)h(\0454.2Lf)1163
+b(max.norm\(u\))583 b(=\04514.6Le)1163 b(nst)582 b(=\0454ld)f(\\n",)h
+(t,)g(umax,)g(nst\);)1454 31548 y Fa(233)1328 b Fi(#elif)582
+b(defined\(SUNDIALS_DOUBLE_PRECISION\))1454 32877 y Fa(234)2490
+b Fi(printf\("At)583 b(t)e(=)h(\0454.2f)1163 b(max.norm\(u\))582
+b(=\04514.6le)1164 b(nst)581 b(=\0454ld)h(\\n",)g(t,)g(umax,)f(nst\);)
+1454 34205 y Fa(235)1328 b Fi(#else)1454 35533 y Fa(236)2490
+b Fi(printf\("At)583 b(t)e(=)h(\0454.2f)1163 b(max.norm\(u\))582
+b(=\04514.6e)1164 b(nst)581 b(=\0454ld)h(\\n",)g(t,)f(umax,)h(nst\);)
+1454 36862 y Fa(237)1328 b Fi(#endif)1454 38190 y Fa(238)1454
+39518 y(239)2490 b Fi(return;)1454 40847 y Fa(240)1328
+b Fi(})1454 42175 y Fa(241)1454 43504 y(242)g Fi(/*)581
+b(Print)h(some)g(final)g(statistics)h(located)f(in)f(the)h(iopt)g
+(array)f(*/)1454 44832 y Fa(243)1454 46160 y(244)1328
+b Fi(static)582 b(void)g(PrintFinalStats\(void)i(*cvode_mem\))1454
+47489 y Fa(245)1328 b Fi({)1454 48817 y Fa(246)2490 b
+Fi(long)582 b(int)g(nst,)f(nfe,)h(nni,)g(ncfn,)g(netf;)1454
+50145 y Fa(247)2490 b Fi(int)582 b(flag;)1454 51474 y
+Fa(248)1454 52802 y(249)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumSteps\(cvode_mem,)586 b(&nst\);)1454 54130
+y Fa(250)2490 b Fi(check_flag\(&flag,)584 b("CVodeGetNumSteps",)g(1,)d
+(0\);)1454 55459 y Fa(251)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumRhsEvals\(cvode_mem,)586 b(&nfe\);)1454 56787
+y Fa(252)2490 b Fi(check_flag\(&flag,)584 b("CVodeGetNumRhsEvals",)g
+(1,)e(0\);)1454 58115 y Fa(253)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumErrTestFails\(cvode_mem,)587 b(&netf\);)1454
+59444 y Fa(254)2490 b Fi(check_flag\(&flag,)584 b
+("CVodeGetNumErrTestFails",)h(1,)c(0\);)1454 60772 y
+Fa(255)2490 b Fi(flag)582 b(=)f(CVodeGetNumNonlinSolvIters\(cvode_mem,)
+587 b(&nni\);)1454 62100 y Fa(256)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumNonlinSolvIters",)h(1,)d(0\);)1454 63429
+y Fa(257)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumNonlinSolvConvFails\(cvode_mem,)588 b(&ncfn\);)1454
+64757 y Fa(258)2490 b Fi(check_flag\(&flag,)584 b
+("CVodeGetNumNonlinSolvConvFails",)i(1,)581 b(0\);)1454
+66086 y Fa(259)1454 67414 y(260)2490 b Fi(printf\("\\nFinal)584
+b(Statistics:)e(\\n\\n"\);)1454 68742 y Fa(261)2490 b
+Fi(printf\("nst)583 b(=)e(\045-6ld)1163 b(nfe)g(=)581
+b(\045-6ld)1164 b(",)581 b(nst,)h(nfe\);)1454 70071 y
+Fa(262)2490 b Fi(printf\("nni)583 b(=)e(\045-6ld)1163
+b(ncfn)582 b(=)f(\045-6ld)1164 b(netf)581 b(=)h(\045ld\\n)f(\\n",)h
+(nni,)g(ncfn,)g(netf\);)1454 71399 y Fa(263)1328 b Fi(})1454
+72727 y Fa(264)1454 74056 y(265)g Fi(/*****************)584
+b(Function)e(Called)g(by)g(the)f(Solver)h(***********************/)1454
+75384 y Fa(266)1454 76712 y(267)1328 b Fi(/*)581 b(f)h(routine.)g
+(Compute)g(f\(t,u\).)g(*/)1454 78041 y Fa(268)p Black
+27394 81741 a Fs(61)p Black eop
+%%Page: 62 66
+62 65 bop Black Black -2546 7638 a Fa(269)1328 b Fi(static)582
+b(void)g(f\(realtype)g(t,)g(N_Vector)g(u,)g(N_Vector)g(udot,)g(void)g
+(*f_data\))-2546 8966 y Fa(270)1328 b Fi({)-2546 10295
+y Fa(271)2490 b Fi(realtype)583 b(ui,)e(ult,)h(urt,)g(hordc,)g(horac,)g
+(hdiff,)g(hadv;)-2546 11623 y Fa(272)2490 b Fi(realtype)583
+b(*udata,)f(*dudata,)g(*z;)-2546 12951 y Fa(273)2490
+b Fi(int)582 b(i;)-2546 14280 y Fa(274)2490 b Fi(int)582
+b(npes,)g(my_pe,)g(my_length,)g(my_pe_m1,)h(my_pe_p1,)f(last_pe,)h
+(my_last;)-2546 15608 y Fa(275)2490 b Fi(UserData)583
+b(data;)-2546 16936 y Fa(276)2490 b Fi(MPI_Status)583
+b(status;)-2546 18265 y Fa(277)2490 b Fi(MPI_Comm)583
+b(comm;)-2546 19593 y Fa(278)-2546 20922 y(279)2490 b
+Fi(udata)582 b(=)f(NV_DATA_P\(u\);)-2546 22250 y Fa(280)2490
+b Fi(dudata)582 b(=)g(NV_DATA_P\(udot\);)-2546 23578
+y Fa(281)-2546 24907 y(282)2490 b Fi(/*)582 b(Extract)g(needed)g
+(problem)g(constants)h(from)e(data)h(*/)-2546 26235 y
+Fa(283)2490 b Fi(data)582 b(=)f(\(UserData\))i(f_data;)-2546
+27563 y Fa(284)2490 b Fi(hordc)582 b(=)f(data->hdcoef;)-2546
+28892 y Fa(285)2490 b Fi(horac)582 b(=)f(data->hacoef;)-2546
+30220 y Fa(286)-2546 31548 y(287)2490 b Fi(/*)582 b(Extract)g
+(parameters)h(for)e(parallel)i(computation.)f(*/)-2546
+32877 y Fa(288)2490 b Fi(comm)582 b(=)f(data->comm;)-2546
+34205 y Fa(289)2490 b Fi(npes)582 b(=)f(data->npes;)6395
+b(/*)581 b(Number)h(of)g(processes.)g(*/)-2546 35533
+y Fa(290)2490 b Fi(my_pe)582 b(=)f(data->my_pe;)5233
+b(/*)581 b(Current)h(process)g(number.)h(*/)-2546 36862
+y Fa(291)2490 b Fi(my_length)583 b(=)e(NV_LOCLENGTH_P\(u\);)j(/*)d
+(Number)h(of)g(local)g(elements)g(of)g(u.)f(*/)-2546
+38190 y Fa(292)2490 b Fi(z)582 b(=)f(data->z;)-2546 39518
+y Fa(293)-2546 40847 y(294)2490 b Fi(/*)582 b(Compute)g(related)g
+(parameters.)h(*/)-2546 42175 y Fa(295)2490 b Fi(my_pe_m1)583
+b(=)e(my_pe)h(-)f(1;)-2546 43504 y Fa(296)2490 b Fi(my_pe_p1)583
+b(=)e(my_pe)h(+)f(1;)-2546 44832 y Fa(297)2490 b Fi(last_pe)582
+b(=)g(npes)g(-)f(1;)-2546 46160 y Fa(298)2490 b Fi(my_last)582
+b(=)g(my_length)g(-)g(1;)-2546 47489 y Fa(299)-2546 48817
+y(300)2490 b Fi(/*)582 b(Store)g(local)g(segment)g(of)f(u)g(in)h(the)g
+(working)g(array)g(z.)f(*/)-2546 50145 y Fa(301)3071
+b Fi(for)582 b(\(i)f(=)h(1;)f(i)h(<=)f(my_length;)i(i++\))-2546
+51474 y Fa(302)4234 b Fi(z[i])581 b(=)h(udata[i)g(-)f(1];)-2546
+52802 y Fa(303)-2546 54130 y(304)2490 b Fi(/*)582 b(Pass)f(needed)i
+(data)e(to)h(processes)g(before)g(and)g(after)g(current)g(process.)g
+(*/)-2546 55459 y Fa(305)3071 b Fi(if)582 b(\(my_pe)g(!=)f(0\))-2546
+56787 y Fa(306)4234 b Fi(MPI_Send\(&z[1],)583 b(1,)f
+(PVEC_REAL_MPI_TYPE,)i(my_pe_m1,)e(0,)f(comm\);)-2546
+58115 y Fa(307)3071 b Fi(if)582 b(\(my_pe)g(!=)f(last_pe\))-2546
+59444 y Fa(308)4234 b Fi(MPI_Send\(&z[my_length],)584
+b(1,)e(PVEC_REAL_MPI_TYPE,)i(my_pe_p1,)e(0,)g(comm\);)-2546
+60772 y Fa(309)-2546 62100 y(310)2490 b Fi(/*)582 b(Receive)g(needed)g
+(data)g(from)f(processes)i(before)f(and)g(after)f(current)i(process.)f
+(*/)-2546 63429 y Fa(311)3071 b Fi(if)582 b(\(my_pe)g(!=)f(0\))-2546
+64757 y Fa(312)4234 b Fi(MPI_Recv\(&z[0],)583 b(1,)f
+(PVEC_REAL_MPI_TYPE,)i(my_pe_m1,)e(0,)f(comm,)h(&status\);)-2546
+66086 y Fa(313)3071 b Fi(else)582 b(z[0])g(=)f(ZERO;)-2546
+67414 y Fa(314)3071 b Fi(if)582 b(\(my_pe)g(!=)f(last_pe\))-2546
+68742 y Fa(315)4234 b Fi(MPI_Recv\(&z[my_length+1],)585
+b(1,)c(PVEC_REAL_MPI_TYPE,)j(my_pe_p1,)f(0,)e(comm,)-2546
+70071 y Fa(316)9464 b Fi(&status\);)-2546 71399 y Fa(317)3071
+b Fi(else)582 b(z[my_length)h(+)e(1])h(=)f(ZERO;)-2546
+72727 y Fa(318)-2546 74056 y(319)2490 b Fi(/*)582 b(Loop)f(over)h(all)g
+(grid)g(points)g(in)f(current)h(process.)h(*/)-2546 75384
+y Fa(320)2490 b Fi(for)582 b(\(i=1;)g(i<=my_length;)h(i++\))f({)-2546
+76712 y Fa(321)-2546 78041 y(322)3653 b Fi(/*)581 b(Extract)h(u)g(at)f
+(x_i)h(and)f(two)h(neighboring)h(points)f(*/)p Black
+23394 81741 a Fs(62)p Black eop
+%%Page: 63 67
+63 66 bop Black Black 1454 7638 a Fa(323)3653 b Fi(ui)581
+b(=)g(z[i];)1454 8966 y Fa(324)3653 b Fi(ult)581 b(=)g(z[i-1];)1454
+10295 y Fa(325)3653 b Fi(urt)581 b(=)g(z[i+1];)1454 11623
+y Fa(326)1454 12951 y(327)3653 b Fi(/*)581 b(Set)h(diffusion)g(and)g
+(advection)g(terms)g(and)g(load)f(into)h(udot)g(*/)1454
+14280 y Fa(328)3653 b Fi(hdiff)581 b(=)h(hordc*\(ult)g(-)g
+(RCONST\(2.0\)*ui)h(+)e(urt\);)1454 15608 y Fa(329)3653
+b Fi(hadv)581 b(=)h(horac*\(urt)g(-)g(ult\);)1454 16936
+y Fa(330)3653 b Fi(dudata[i-1])582 b(=)g(hdiff)g(+)f(hadv;)1454
+18265 y Fa(331)2490 b Fi(})1454 19593 y Fa(332)1328 b
+Fi(})1454 20922 y Fa(333)1454 22250 y(334)g Fi(/*)581
+b(Check)h(function)h(return)f(value...)1454 23578 y Fa(335)4234
+b Fi(opt)581 b(==)h(0)f(means)h(SUNDIALS)g(function)h(allocates)f
+(memory)g(so)g(check)g(if)1454 24907 y Fa(336)9464 b
+Fi(returned)582 b(NULL)g(pointer)1454 26235 y Fa(337)4234
+b Fi(opt)581 b(==)h(1)f(means)h(SUNDIALS)g(function)h(returns)f(a)f
+(flag)h(so)f(check)h(if)1454 27563 y Fa(338)9464 b Fi(flag)582
+b(>=)f(0)1454 28892 y Fa(339)4234 b Fi(opt)581 b(==)h(2)f(means)h
+(function)g(allocates)h(memory)f(so)f(check)h(if)g(returned)1454
+30220 y Fa(340)9464 b Fi(NULL)582 b(pointer)g(*/)1454
+31548 y Fa(341)1454 32877 y(342)1328 b Fi(static)582
+b(int)g(check_flag\(void)h(*flagvalue,)g(char)f(*funcname,)g(int)g
+(opt,)g(int)f(id\))1454 34205 y Fa(343)1328 b Fi({)1454
+35533 y Fa(344)2490 b Fi(int)582 b(*errflag;)1454 36862
+y Fa(345)1454 38190 y(346)2490 b Fi(/*)582 b(Check)g(if)f(SUNDIALS)h
+(function)h(returned)f(NULL)g(pointer)g(-)f(no)h(memory)g(allocated)g
+(*/)1454 39518 y Fa(347)2490 b Fi(if)582 b(\(opt)f(==)h(0)f(&&)h
+(flagvalue)g(==)g(NULL\))g({)1454 40847 y Fa(348)3653
+b Fi(fprintf\(stderr,)583 b("\\nSUNDIALS_ERROR\(\045d\):)h(\045s\(\))e
+(failed)g(-)f(returned)i(NULL)f(pointer\\n\\n",)1454
+42175 y Fa(349)8302 b Fi(id,)581 b(funcname\);)1454 43504
+y Fa(350)3653 b Fi(return\(1\);)582 b(})1454 44832 y
+Fa(351)1454 46160 y(352)2490 b Fi(/*)582 b(Check)g(if)f(flag)h(<)f(0)g
+(*/)1454 47489 y Fa(353)2490 b Fi(else)582 b(if)f(\(opt)h(==)g(1\))f({)
+1454 48817 y Fa(354)3653 b Fi(errflag)582 b(=)f(\(int)h(*\))f
+(flagvalue;)1454 50145 y Fa(355)3653 b Fi(if)581 b(\(*errflag)i(<)e
+(0\))g({)1454 51474 y Fa(356)4815 b Fi(fprintf\(stderr,)583
+b("\\nSUNDIALS_ERROR\(\045d\):)i(\045s\(\))c(failed)h(with)g(flag)g(=)f
+(\045d\\n\\n",)1454 52802 y Fa(357)9464 b Fi(id,)582
+b(funcname,)g(*errflag\);)1454 54130 y Fa(358)4815 b
+Fi(return\(1\);)583 b(}})1454 55459 y Fa(359)1454 56787
+y(360)2490 b Fi(/*)582 b(Check)g(if)f(function)h(returned)h(NULL)f
+(pointer)g(-)f(no)g(memory)h(allocated)h(*/)1454 58115
+y Fa(361)2490 b Fi(else)582 b(if)f(\(opt)h(==)g(2)f(&&)g(flagvalue)i
+(==)e(NULL\))h({)1454 59444 y Fa(362)3653 b Fi(fprintf\(stderr,)583
+b("\\nMEMORY_ERROR\(\045d\):)h(\045s\(\))e(failed)g(-)f(returned)i
+(NULL)e(pointer\\n\\n",)1454 60772 y Fa(363)8302 b Fi(id,)581
+b(funcname\);)1454 62100 y Fa(364)3653 b Fi(return\(1\);)582
+b(})1454 63429 y Fa(365)1454 64757 y(366)2490 b Fi(return\(0\);)1454
+66086 y Fa(367)1328 b Fi(})p Black 27394 81741 a Fs(63)p
+Black eop
+%%Page: 64 68
+64 67 bop Black Black 0 7638 a Fr(E)1793 b(Listing)599
+b(of)f Fb(pvkx.c)-1734 10674 y Fa(1)1328 b Fi(/*)-1734
+12003 y Fa(2)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)
+-1734 13331 y Fa(3)1909 b Fi(*)581 b($Revision: 1.1 $)-1734
+14659 y Fa(4)1909 b Fi(*)581 b($Date: 2005/10/27 13:20:41 $)-1734
+15988 y Fa(5)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)
+-1734 17316 y Fa(6)1909 b Fi(*)581 b(Programmer\(s\):)j(S.)d(D.)h
+(Cohen,)g(A.)f(C.)h(Hindmarsh,)g(M.)g(R.)f(Wittman,)h(and)-1734
+18645 y Fa(7)1909 b Fi(*)9299 b(Radu)581 b(Serban)1164
+b(@)581 b(LLNL)-1734 19973 y Fa(8)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)
+-1734 21301 y Fa(9)1909 b Fi(*)581 b(Example)i(problem:)-2140
+22630 y Fa(10)1909 b Fi(*)-2140 23958 y Fa(11)g Fi(*)581
+b(An)h(ODE)f(system)i(is)e(generated)h(from)g(the)g(following)g
+(2-species)h(diurnal)-2140 25286 y Fa(12)1909 b Fi(*)581
+b(kinetics)i(advection-diffusion)h(PDE)d(system)h(in)g(2)f(space)h
+(dimensions:)-2140 26615 y Fa(13)1909 b Fi(*)-2140 27943
+y Fa(14)g Fi(*)581 b(dc\(i\)/dt)i(=)e(Kh*\(d/dx\)^2)i(c\(i\))f(+)f
+(V*dc\(i\)/dx)i(+)e(\(d/dy\)\(Kv\(y\)*dc\(i\)/dy\))-2140
+29271 y Fa(15)1909 b Fi(*)9880 b(+)581 b(Ri\(c1,c2,t\))3489
+b(for)581 b(i)h(=)f(1,2,)1744 b(where)-2140 30600 y Fa(16)1909
+b Fi(*)1744 b(R1\(c1,c2,t\))583 b(=)e(-q1*c1*c3)h(-)g(q2*c1*c2)g(+)f
+(2*q3\(t\)*c3)i(+)e(q4\(t\)*c2)i(,)-2140 31928 y Fa(17)1909
+b Fi(*)1744 b(R2\(c1,c2,t\))583 b(=)1162 b(q1*c1*c3)582
+b(-)g(q2*c1*c2)g(-)f(q4\(t\)*c2)i(,)-2140 33256 y Fa(18)1909
+b Fi(*)1744 b(Kv\(y\))582 b(=)f(Kv0*exp\(y/5\))i(,)-2140
+34585 y Fa(19)1909 b Fi(*)581 b(Kh,)h(V,)f(Kv0,)h(q1,)g(q2,)f(and)h(c3)
+f(are)h(constants,)h(and)e(q3\(t\))h(and)g(q4\(t\))-2140
+35913 y Fa(20)1909 b Fi(*)581 b(vary)h(diurnally.)h(The)e(problem)i(is)
+e(posed)h(on)f(the)h(square)-2140 37241 y Fa(21)1909
+b Fi(*)1744 b(0)581 b(<=)g(x)h(<=)f(20,)2325 b(30)582
+b(<=)f(y)g(<=)h(50)1744 b(\(all)581 b(in)h(km\),)-2140
+38570 y Fa(22)1909 b Fi(*)581 b(with)h(homogeneous)h(Neumann)f
+(boundary)h(conditions,)f(and)g(for)f(time)h(t)g(in)-2140
+39898 y Fa(23)1909 b Fi(*)1744 b(0)581 b(<=)g(t)h(<=)f(86400)h(sec)g
+(\(1)f(day\).)-2140 41227 y Fa(24)1909 b Fi(*)581 b(The)h(PDE)g(system)
+g(is)f(treated)h(by)g(central)g(differences)h(on)e(a)g(uniform)-2140
+42555 y Fa(25)1909 b Fi(*)581 b(mesh,)h(with)g(simple)g(polynomial)h
+(initial)f(profiles.)-2140 43883 y Fa(26)1909 b Fi(*)-2140
+45212 y Fa(27)g Fi(*)581 b(The)h(problem)g(is)g(solved)g(by)f(CVODE)h
+(on)g(NPE)f(processors,)i(treated)-2140 46540 y Fa(28)1909
+b Fi(*)581 b(as)h(a)f(rectangular)i(process)f(grid)g(of)f(size)h(NPEX)g
+(by)f(NPEY,)h(with)-2140 47868 y Fa(29)1909 b Fi(*)581
+b(NPE)h(=)f(NPEX*NPEY.)i(Each)f(processor)g(contains)h(a)e(subgrid)h
+(of)f(size)h(MXSUB)-2140 49197 y Fa(30)1909 b Fi(*)581
+b(by)h(MYSUB)g(of)f(the)h(\(x,y\))g(mesh.)1163 b(Thus)582
+b(the)f(actual)h(mesh)g(sizes)g(are)-2140 50525 y Fa(31)1909
+b Fi(*)581 b(MX)h(=)f(MXSUB*NPEX)i(and)e(MY)h(=)f(MYSUB*NPEY,)i(and)f
+(the)f(ODE)h(system)g(size)g(is)-2140 51853 y Fa(32)1909
+b Fi(*)581 b(neq)h(=)f(2*MX*MY.)-2140 53182 y Fa(33)1909
+b Fi(*)-2140 54510 y Fa(34)g Fi(*)581 b(The)h(solution)g(is)g(done)g
+(with)f(the)h(BDF/GMRES)g(method)g(\(i.e.)g(using)g(the)-2140
+55838 y Fa(35)1909 b Fi(*)581 b(CVSPGMR)i(linear)f(solver\))g(and)f
+(the)h(block-diagonal)h(part)f(of)f(the)-2140 57167 y
+Fa(36)1909 b Fi(*)581 b(Newton)h(matrix)h(as)e(a)g(left)h
+(preconditioner.)h(A)f(copy)f(of)h(the)-2140 58495 y
+Fa(37)1909 b Fi(*)581 b(block-diagonal)j(part)d(of)h(the)f(Jacobian)i
+(is)e(saved)h(and)g(conditionally)-2140 59823 y Fa(38)1909
+b Fi(*)581 b(reused)h(within)h(the)e(preconditioner)i(routine.)-2140
+61152 y Fa(39)1909 b Fi(*)-2140 62480 y Fa(40)g Fi(*)581
+b(Performance)i(data)f(and)g(sampled)g(solution)g(values)g(are)g
+(printed)g(at)-2140 63808 y Fa(41)1909 b Fi(*)581 b(selected)i(output)f
+(times,)g(and)f(all)h(performance)h(counters)f(are)g(printed)-2140
+65137 y Fa(42)1909 b Fi(*)581 b(on)h(completion.)-2140
+66465 y Fa(43)1909 b Fi(*)-2140 67794 y Fa(44)g Fi(*)581
+b(This)h(version)g(uses)g(MPI)g(for)f(user)h(routines.)-2140
+69122 y Fa(45)1909 b Fi(*)-2140 70450 y Fa(46)g Fi(*)581
+b(Execution:)i(mpirun)f(-np)g(N)f(pvkx)1744 b(with)582
+b(N)f(=)g(NPEX*NPEY)i(\(see)f(constants)-2140 71779 y
+Fa(47)1909 b Fi(*)581 b(below\).)-2140 73107 y Fa(48)1909
+b Fi(*)581 b
+(-----------------------------------------------------------------)
+-2140 74435 y Fa(49)1909 b Fi(*/)-2140 75764 y Fa(50)-2140
+77092 y(51)1328 b Fi(#include)582 b(<stdio.h>)-2140 78420
+y Fa(52)1328 b Fi(#include)582 b(<stdlib.h>)p Black 23394
+81741 a Fs(64)p Black eop
+%%Page: 65 69
+65 68 bop Black Black 1860 7638 a Fa(53)1328 b Fi(#include)582
+b(<math.h>)1860 8966 y Fa(54)1328 b Fi(#include)582 b
+("sundialstypes.h")2909 b(/*)581 b(definitions)i(of)e(realtype,)i
+(booleantype,)g(TRUE,)f(*/)1860 10295 y Fa(55)19344 b
+Fi(/*)581 b(and)h(FALSE)20341 b(*/)1860 11623 y Fa(56)1328
+b Fi(#include)582 b("sundialsmath.h")3490 b(/*)581 b(definition)i(of)e
+(macro)h(SQR)12205 b(*/)1860 12951 y Fa(57)1328 b Fi(#include)582
+b("cvode.h")7557 b(/*)581 b(prototypes)i(for)e(CVode*)h(and)g(various)g
+(constants)h(*/)1860 14280 y Fa(58)1328 b Fi(#include)582
+b("cvspgmr.h")6395 b(/*)581 b(prototypes)i(and)e(constants)i(for)e
+(CVSPGMR)i(solver)f(*/)1860 15608 y Fa(59)1328 b Fi(#include)582
+b("smalldense.h")4652 b(/*)581 b(prototypes)i(for)e(small)h(dense)g
+(matrix)g(functions)h(*/)1860 16936 y Fa(60)1328 b Fi(#include)582
+b("nvector_parallel.h")1166 b(/*)581 b(definition)i(of)e(type)h
+(N_Vector)g(and)g(macro)4069 b(*/)1860 18265 y Fa(61)19344
+b Fi(/*)581 b(NV_DATA_P)20342 b(*/)1860 19593 y Fa(62)1328
+b Fi(#include)582 b("mpi.h")8719 b(/*)581 b(MPI)h(constants)g(and)g
+(types)12205 b(*/)1860 20922 y Fa(63)1860 22250 y(64)1328
+b Fi(/*)581 b(Problem)i(Constants)f(*/)1860 23578 y Fa(65)1860
+24907 y(66)1328 b Fi(#define)582 b(NVARS)4650 b(2)11623
+b(/*)582 b(number)g(of)f(species)5232 b(*/)1860 26235
+y Fa(67)1328 b Fi(#define)582 b(KH)6393 b(RCONST\(4.0e-6\))4070
+b(/*)582 b(horizontal)g(diffusivity)h(Kh)f(*/)1860 27563
+y Fa(68)1328 b Fi(#define)582 b(VEL)5812 b(RCONST\(0.001\))4651
+b(/*)582 b(advection)g(velocity)h(V)3487 b(*/)1860 28892
+y Fa(69)1328 b Fi(#define)582 b(KV0)5812 b(RCONST\(1.0e-8\))4070
+b(/*)582 b(coefficient)g(in)g(Kv\(y\))3488 b(*/)1860
+30220 y Fa(70)1328 b Fi(#define)582 b(Q1)6393 b(RCONST\(1.63e-16\))2908
+b(/*)582 b(coefficients)h(q1,)e(q2,)h(c3)1744 b(*/)1860
+31548 y Fa(71)1328 b Fi(#define)582 b(Q2)6393 b(RCONST\(4.66e-16\))1860
+32877 y Fa(72)1328 b Fi(#define)582 b(C3)6393 b(RCONST\(3.7e16\))1860
+34205 y Fa(73)1328 b Fi(#define)582 b(A3)6393 b(RCONST\(22.62\))2908
+b(/*)581 b(coefficient)i(in)e(expression)i(for)f(q3\(t\))g(*/)1860
+35533 y Fa(74)1328 b Fi(#define)582 b(A4)6393 b(RCONST\(7.601\))2908
+b(/*)581 b(coefficient)i(in)e(expression)i(for)f(q4\(t\))g(*/)1860
+36862 y Fa(75)1328 b Fi(#define)582 b(C1_SCALE)2907 b(RCONST\(1.0e6\))h
+(/*)581 b(coefficients)i(in)f(initial)g(profiles)2326
+b(*/)1860 38190 y Fa(76)1328 b Fi(#define)582 b(C2_SCALE)2907
+b(RCONST\(1.0e12\))1860 39518 y Fa(77)1860 40847 y(78)1328
+b Fi(#define)582 b(T0)6393 b(RCONST\(0.0\))5813 b(/*)582
+b(initial)g(time)g(*/)1860 42175 y Fa(79)1328 b Fi(#define)582
+b(NOUT)5231 b(12)11042 b(/*)582 b(number)g(of)f(output)h(times)g(*/)
+1860 43504 y Fa(80)1328 b Fi(#define)582 b(TWOHR)4650
+b(RCONST\(7200.0\))4070 b(/*)582 b(number)g(of)f(seconds)h(in)g(two)f
+(hours)1163 b(*/)1860 44832 y Fa(81)1328 b Fi(#define)582
+b(HALFDAY)3488 b(RCONST\(4.32e4\))4070 b(/*)582 b(number)g(of)f
+(seconds)h(in)g(a)f(half)h(day)f(*/)1860 46160 y Fa(82)1328
+b Fi(#define)582 b(PI)4069 b(RCONST\(3.1415926535898\))1165
+b(/*)582 b(pi)f(*/)1860 47489 y Fa(83)1860 48817 y(84)1328
+b Fi(#define)582 b(XMIN)5231 b(RCONST\(0.0\))5813 b(/*)582
+b(grid)f(boundaries)i(in)f(x)1162 b(*/)1860 50145 y Fa(85)1328
+b Fi(#define)582 b(XMAX)5231 b(RCONST\(20.0\))1860 51474
+y Fa(86)1328 b Fi(#define)582 b(YMIN)5231 b(RCONST\(30.0\))h(/*)582
+b(grid)f(boundaries)i(in)f(y)1162 b(*/)1860 52802 y Fa(87)1328
+b Fi(#define)582 b(YMAX)5231 b(RCONST\(50.0\))1860 54130
+y Fa(88)1860 55459 y(89)1328 b Fi(#define)582 b(NPEX)5231
+b(2)8136 b(/*)582 b(no.)f(PEs)h(in)f(x)h(direction)g(of)g(PE)f(array)h
+(*/)1860 56787 y Fa(90)1328 b Fi(#define)582 b(NPEY)5231
+b(2)8136 b(/*)582 b(no.)f(PEs)h(in)f(y)h(direction)g(of)g(PE)f(array)h
+(*/)1860 58115 y Fa(91)22249 b Fi(/*)582 b(Total)g(no.)f(PEs)h(=)f
+(NPEX*NPEY)i(*/)1860 59444 y Fa(92)1328 b Fi(#define)582
+b(MXSUB)4650 b(5)8136 b(/*)582 b(no.)f(x)h(points)g(per)f(subgrid)i(*/)
+1860 60772 y Fa(93)1328 b Fi(#define)582 b(MYSUB)4650
+b(5)8136 b(/*)582 b(no.)f(y)h(points)g(per)f(subgrid)i(*/)1860
+62100 y Fa(94)1860 63429 y(95)1328 b Fi(#define)582 b(MX)6393
+b(\(NPEX*MXSUB\))1745 b(/*)582 b(MX)f(=)h(number)g(of)f(x)g(mesh)h
+(points)g(*/)1860 64757 y Fa(96)1328 b Fi(#define)582
+b(MY)6393 b(\(NPEY*MYSUB\))1745 b(/*)582 b(MY)f(=)h(number)g(of)f(y)g
+(mesh)h(points)g(*/)1860 66086 y Fa(97)22249 b Fi(/*)582
+b(Spatial)g(mesh)g(is)f(MX)h(by)f(MY)h(*/)1860 67414
+y Fa(98)1328 b Fi(/*)581 b(CVodeMalloc)i(Constants)g(*/)1860
+68742 y Fa(99)1454 70071 y(100)1328 b Fi(#define)582
+b(RTOL)2325 b(RCONST\(1.0e-5\))i(/*)582 b(scalar)g(relative)g
+(tolerance)g(*/)1454 71399 y Fa(101)1328 b Fi(#define)582
+b(FLOOR)1744 b(RCONST\(100.0\))2908 b(/*)582 b(value)f(of)h(C1)f(or)h
+(C2)f(at)h(which)g(tolerances)g(*/)1454 72727 y Fa(102)21087
+b Fi(/*)582 b(change)g(from)f(relative)i(to)e(absolute)3488
+b(*/)1454 74056 y Fa(103)1328 b Fi(#define)582 b(ATOL)2325
+b(\(RTOL*FLOOR\))3489 b(/*)582 b(scalar)g(absolute)g(tolerance)g(*/)
+1454 75384 y Fa(104)1454 76712 y(105)1454 78041 y(106)1328
+b Fi(/*)581 b(User-defined)i(matrix)f(accessor)h(macro:)f(IJth)g(*/)p
+Black 27394 81741 a Fs(65)p Black eop
+%%Page: 66 70
+66 69 bop Black Black -2546 7638 a Fa(107)-2546 8966
+y(108)1328 b Fi(/*)581 b(IJth)h(is)g(defined)g(in)f(order)h(to)g(write)
+g(code)f(which)h(indexes)g(into)g(small)g(dense)-2546
+10295 y Fa(109)3071 b Fi(matrices)583 b(with)f(a)f(\(row,column\))i
+(pair,)f(where)g(1)f(<=)g(row,column)i(<=)e(NVARS.)-2546
+11623 y Fa(110)-2546 12951 y(111)3071 b Fi(IJth\(a,i,j\))583
+b(references)g(the)e(\(i,j\)th)i(entry)f(of)f(the)h(small)f(matrix)i
+(realtype)f(**a,)-2546 14280 y Fa(112)3071 b Fi(where)582
+b(1)g(<=)f(i,j)h(<=)f(NVARS.)h(The)g(small)g(matrix)g(routines)g(in)f
+(dense.h)-2546 15608 y Fa(113)3071 b Fi(work)582 b(with)g(matrices)g
+(stored)g(by)g(column)g(in)f(a)h(2-dimensional)h(array.)f(In)f(C,)-2546
+16936 y Fa(114)3071 b Fi(arrays)582 b(are)g(indexed)g(starting)h(at)e
+(0,)h(not)f(1.)h(*/)-2546 18265 y Fa(115)-2546 19593
+y(116)1328 b Fi(#define)582 b(IJth\(a,i,j\))h(\(a[j-1][i-1]\))-2546
+20922 y Fa(117)-2546 22250 y(118)1328 b Fi(/*)581 b(Type)h(:)f
+(UserData)-2546 23578 y Fa(119)3071 b Fi(contains)583
+b(problem)f(constants,)h(preconditioner)g(blocks,)f(pivot)g(arrays,)
+-2546 24907 y Fa(120)3071 b Fi(grid)582 b(constants,)h(and)e(processor)
+i(indices)f(*/)-2546 26235 y Fa(121)-2546 27563 y(122)1328
+b Fi(typedef)582 b(struct)g({)-2546 28892 y Fa(123)2490
+b Fi(realtype)583 b(q4,)e(om,)h(dx,)f(dy,)h(hdco,)g(haco,)g(vdco;)-2546
+30220 y Fa(124)2490 b Fi(realtype)583 b
+(uext[NVARS*\(MXSUB+2\)*\(MYSUB+2\)];)-2546 31548 y Fa(125)2490
+b Fi(int)582 b(my_pe,)g(isubx,)g(isuby;)-2546 32877 y
+Fa(126)2490 b Fi(long)582 b(int)g(nvmxsub,)g(nvmxsub2;)-2546
+34205 y Fa(127)2490 b Fi(MPI_Comm)583 b(comm;)-2546 35533
+y Fa(128)1328 b Fi(})581 b(*UserData;)-2546 36862 y Fa(129)-2546
+38190 y(130)1328 b Fi(typedef)582 b(struct)g({)-2546
+39518 y Fa(131)2490 b Fi(void)582 b(*f_data;)-2546 40847
+y Fa(132)2490 b Fi(realtype)583 b(**P[MXSUB][MYSUB],)g
+(**Jbd[MXSUB][MYSUB];)-2546 42175 y Fa(133)2490 b Fi(long)582
+b(int)g(*pivot[MXSUB][MYSUB];)-2546 43504 y Fa(134)1328
+b Fi(})581 b(*PreconData;)-2546 44832 y Fa(135)-2546
+46160 y(136)-2546 47489 y(137)1328 b Fi(/*)581 b(Private)i(Helper)f
+(Functions)g(*/)-2546 48817 y Fa(138)-2546 50145 y(139)1328
+b Fi(static)582 b(PreconData)h(AllocPreconData\(UserData)h(data\);)
+-2546 51474 y Fa(140)1328 b Fi(static)582 b(void)g(InitUserData\(int)h
+(my_pe,)f(MPI_Comm)h(comm,)f(UserData)g(data\);)-2546
+52802 y Fa(141)1328 b Fi(static)582 b(void)g
+(FreePreconData\(PreconData)j(pdata\);)-2546 54130 y
+Fa(142)1328 b Fi(static)582 b(void)g(SetInitialProfiles\(N_Vector)j(u,)
+c(UserData)i(data\);)-2546 55459 y Fa(143)1328 b Fi(static)582
+b(void)g(PrintOutput\(void)h(*cvode_mem,)g(int)f(my_pe,)g(MPI_Comm)g
+(comm,)-2546 56787 y Fa(144)15276 b Fi(N_Vector)582 b(u,)f(realtype)i
+(t\);)-2546 58115 y Fa(145)1328 b Fi(static)582 b(void)g
+(PrintFinalStats\(void)i(*cvode_mem\);)-2546 59444 y
+Fa(146)1328 b Fi(static)582 b(void)g(BSend\(MPI_Comm)h(comm,)-2546
+60772 y Fa(147)11789 b Fi(int)581 b(my_pe,)h(int)g(isubx,)g(int)g
+(isuby,)-2546 62100 y Fa(148)11789 b Fi(long)581 b(int)h(dsizex,)g
+(long)g(int)g(dsizey,)-2546 63429 y Fa(149)11789 b Fi(realtype)582
+b(udata[]\);)-2546 64757 y Fa(150)1328 b Fi(static)582
+b(void)g(BRecvPost\(MPI_Comm)i(comm,)e(MPI_Request)g(request[],)-2546
+66086 y Fa(151)14113 b Fi(int)582 b(my_pe,)g(int)g(isubx,)g(int)f
+(isuby,)-2546 67414 y Fa(152)14113 b Fi(long)582 b(int)g(dsizex,)g
+(long)g(int)f(dsizey,)-2546 68742 y Fa(153)14113 b Fi(realtype)583
+b(uext[],)f(realtype)g(buffer[]\);)-2546 70071 y Fa(154)1328
+b Fi(static)582 b(void)g(BRecvWait\(MPI_Request)i(request[],)-2546
+71399 y Fa(155)14113 b Fi(int)582 b(isubx,)g(int)g(isuby,)-2546
+72727 y Fa(156)14113 b Fi(long)582 b(int)g(dsizex,)g(realtype)g
+(uext[],)-2546 74056 y Fa(157)14113 b Fi(realtype)583
+b(buffer[]\);)-2546 75384 y Fa(158)1328 b Fi(static)582
+b(void)g(ucomm\(realtype)h(t,)e(N_Vector)i(u,)e(UserData)i(data\);)
+-2546 76712 y Fa(159)1328 b Fi(static)582 b(void)g(fcalc\(realtype)h
+(t,)e(realtype)i(udata[],)f(realtype)g(dudata[],)-2546
+78041 y Fa(160)11789 b Fi(UserData)582 b(data\);)p Black
+23394 81741 a Fs(66)p Black eop
+%%Page: 67 71
+67 70 bop Black Black 1454 7638 a Fa(161)1454 8966 y(162)1454
+10295 y(163)1328 b Fi(/*)581 b(Functions)i(Called)f(by)f(the)h(Solver)g
+(*/)1454 11623 y Fa(164)1454 12951 y(165)1328 b Fi(static)582
+b(void)g(f\(realtype)g(t,)g(N_Vector)g(u,)g(N_Vector)g(udot,)g(void)g
+(*f_data\);)1454 14280 y Fa(166)1454 15608 y(167)1328
+b Fi(static)582 b(int)g(Precond\(realtype)h(tn,)f(N_Vector)g(u,)g
+(N_Vector)g(fu,)1454 16936 y Fa(168)12370 b Fi(booleantype)583
+b(jok,)e(booleantype)i(*jcurPtr,)1454 18265 y Fa(169)12370
+b Fi(realtype)582 b(gamma,)g(void)g(*P_data,)1454 19593
+y Fa(170)12370 b Fi(N_Vector)582 b(vtemp1,)g(N_Vector)h(vtemp2,)f
+(N_Vector)g(vtemp3\);)1454 20922 y Fa(171)1454 22250
+y(172)1328 b Fi(static)582 b(int)g(PSolve\(realtype)h(tn,)f(N_Vector)g
+(u,)f(N_Vector)i(fu,)1454 23578 y Fa(173)11789 b Fi(N_Vector)582
+b(r,)f(N_Vector)i(z,)1454 24907 y Fa(174)11789 b Fi(realtype)582
+b(gamma,)g(realtype)g(delta,)1454 26235 y Fa(175)11789
+b Fi(int)581 b(lr,)h(void)g(*P_data,)g(N_Vector)g(vtemp\);)1454
+27563 y Fa(176)1454 28892 y(177)1454 30220 y(178)1328
+b Fi(/*)581 b(Private)i(function)f(to)f(check)h(function)h(return)f
+(values)g(*/)1454 31548 y Fa(179)1454 32877 y(180)1328
+b Fi(static)582 b(int)g(check_flag\(void)h(*flagvalue,)g(char)f
+(*funcname,)g(int)g(opt,)g(int)f(id\);)1454 34205 y Fa(181)1454
+35533 y(182)1454 36862 y(183)1328 b Fi(/*****************************)
+586 b(Main)581 b(Program)i(******************************/)1454
+38190 y Fa(184)1454 39518 y(185)1328 b Fi(int)582 b(main\(int)g(argc,)g
+(char)g(*argv[]\))1454 40847 y Fa(186)1328 b Fi({)1454
+42175 y Fa(187)2490 b Fi(realtype)583 b(abstol,)f(reltol,)g(t,)f(tout;)
+1454 43504 y Fa(188)2490 b Fi(N_Vector)583 b(u;)1454
+44832 y Fa(189)2490 b Fi(UserData)583 b(data;)1454 46160
+y Fa(190)2490 b Fi(PreconData)583 b(predata;)1454 47489
+y Fa(191)2490 b Fi(void)582 b(*cvode_mem;)1454 48817
+y Fa(192)2490 b Fi(int)582 b(iout,)g(flag,)g(my_pe,)g(npes;)1454
+50145 y Fa(193)2490 b Fi(long)582 b(int)g(neq,)f(local_N;)1454
+51474 y Fa(194)2490 b Fi(MPI_Comm)583 b(comm;)1454 52802
+y Fa(195)1454 54130 y(196)2490 b Fi(u)582 b(=)f(NULL;)1454
+55459 y Fa(197)2490 b Fi(data)582 b(=)f(NULL;)1454 56787
+y Fa(198)2490 b Fi(predata)582 b(=)g(NULL;)1454 58115
+y Fa(199)2490 b Fi(cvode_mem)583 b(=)e(NULL;)1454 59444
+y Fa(200)1454 60772 y(201)2490 b Fi(/*)582 b(Set)f(problem)i(size)e
+(neq)h(*/)1454 62100 y Fa(202)2490 b Fi(neq)582 b(=)f(NVARS*MX*MY;)1454
+63429 y Fa(203)1454 64757 y(204)2490 b Fi(/*)582 b(Get)f(processor)i
+(number)f(and)f(total)h(number)g(of)g(pe's)g(*/)1454
+66086 y Fa(205)2490 b Fi(MPI_Init\(&argc,)584 b(&argv\);)1454
+67414 y Fa(206)2490 b Fi(comm)582 b(=)f(MPI_COMM_WORLD;)1454
+68742 y Fa(207)2490 b Fi(MPI_Comm_size\(comm,)584 b(&npes\);)1454
+70071 y Fa(208)2490 b Fi(MPI_Comm_rank\(comm,)584 b(&my_pe\);)1454
+71399 y Fa(209)1454 72727 y(210)2490 b Fi(if)582 b(\(npes)g(!=)f
+(NPEX*NPEY\))i({)1454 74056 y Fa(211)3653 b Fi(if)581
+b(\(my_pe)h(==)g(0\))1454 75384 y Fa(212)4815 b Fi(fprintf\(stderr,)583
+b("\\nMPI_ERROR\(0\):)h(npes)e(=)f(\045d)g(is)h(not)f(equal)h(to)g
+(NPEX*NPEY)g(=)f(\045d\\n\\n",)1454 76712 y Fa(213)9464
+b Fi(npes,NPEX*NPEY\);)1454 78041 y Fa(214)3653 b Fi(MPI_Finalize\(\);)
+p Black 27394 81741 a Fs(67)p Black eop
+%%Page: 68 72
+68 71 bop Black Black -2546 7638 a Fa(215)3653 b Fi(return\(1\);)-2546
+8966 y Fa(216)2490 b Fi(})-2546 10295 y Fa(217)-2546
+11623 y(218)g Fi(/*)582 b(Set)f(local)h(length)g(*/)-2546
+12951 y Fa(219)2490 b Fi(local_N)582 b(=)g(NVARS*MXSUB*MYSUB;)-2546
+14280 y Fa(220)-2546 15608 y(221)2490 b Fi(/*)582 b(Allocate)g(and)g
+(load)f(user)h(data)g(block;)g(allocate)g(preconditioner)i(block)d(*/)
+-2546 16936 y Fa(222)2490 b Fi(data)582 b(=)f(\(UserData\))i
+(malloc\(sizeof)g(*data\);)-2546 18265 y Fa(223)2490
+b Fi(if)582 b(\(check_flag\(\(void)h(*\)data,)g("malloc",)f(2,)g
+(my_pe\)\))g(MPI_Abort\(comm,)h(1\);)-2546 19593 y Fa(224)2490
+b Fi(InitUserData\(my_pe,)584 b(comm,)e(data\);)-2546
+20922 y Fa(225)2490 b Fi(predata)582 b(=)g(AllocPreconData)h(\(data\);)
+-2546 22250 y Fa(226)-2546 23578 y(227)2490 b Fi(/*)582
+b(Allocate)g(u,)g(and)f(set)h(initial)g(values)g(and)g(tolerances)g(*/)
+-2546 24907 y Fa(228)2490 b Fi(u)582 b(=)f(N_VNew_Parallel\(comm,)j
+(local_N,)f(neq\);)-2546 26235 y Fa(229)2490 b Fi(if)582
+b(\(check_flag\(\(void)h(*\)u,)f("N_VNew",)h(0,)e(my_pe\)\))h
+(MPI_Abort\(comm,)i(1\);)-2546 27563 y Fa(230)2490 b
+Fi(SetInitialProfiles\(u,)585 b(data\);)-2546 28892 y
+Fa(231)2490 b Fi(abstol)582 b(=)g(ATOL;)g(reltol)g(=)f(RTOL;)-2546
+30220 y Fa(232)-2546 31548 y(233)2490 b Fi(/*)-2546 32877
+y Fa(234)4234 b Fi(Call)581 b(CVodeCreate)i(to)f(create)g(the)f(solver)
+h(memory:)-2546 34205 y Fa(235)-2546 35533 y(236)4234
+b Fi(CV_BDF)2906 b(specifies)583 b(the)e(Backward)i(Differentiation)g
+(Formula)-2546 36862 y Fa(237)4234 b Fi(CV_NEWTON)1163
+b(specifies)583 b(a)e(Newton)h(iteration)-2546 38190
+y Fa(238)-2546 39518 y(239)4234 b Fi(A)581 b(pointer)h(to)g(the)f
+(integrator)i(memory)f(is)f(returned)i(and)e(stored)h(in)g(cvode_mem.)
+-2546 40847 y Fa(240)2490 b Fi(*/)-2546 42175 y Fa(241)g
+Fi(cvode_mem)583 b(=)e(CVodeCreate\(CV_BDF,)j(CV_NEWTON\);)-2546
+43504 y Fa(242)2490 b Fi(if)582 b(\(check_flag\(\(void)h(*\)cvode_mem,)
+g("CVodeCreate",)h(0,)d(my_pe\)\))h(MPI_Abort\(comm,)i(1\);)-2546
+44832 y Fa(243)-2546 46160 y(244)2490 b Fi(/*)582 b(Set)f(the)h
+(pointer)g(to)g(user-defined)h(data)e(*/)-2546 47489
+y Fa(245)2490 b Fi(flag)582 b(=)f(CVodeSetFdata\(cvode_mem,)k(data\);)
+-2546 48817 y Fa(246)2490 b Fi(if)582 b(\(check_flag\(&flag,)i
+("CVodeSetFdata",)f(1,)f(my_pe\)\))g(MPI_Abort\(comm,)h(1\);)-2546
+50145 y Fa(247)-2546 51474 y(248)2490 b Fi(/*)-2546 52802
+y Fa(249)4234 b Fi(Call)581 b(CVodeMalloc)i(to)f(initialize)g(the)g
+(integrator)h(memory:)-2546 54130 y Fa(250)-2546 55459
+y(251)4234 b Fi(cvode_mem)582 b(is)g(the)f(pointer)h(to)g(the)g
+(integrator)g(memory)g(returned)h(by)e(CVodeCreate)-2546
+56787 y Fa(252)4234 b Fi(f)4068 b(is)581 b(the)h(user's)g(right)g(hand)
+g(side)f(function)i(in)e(y'=f\(t,y\))-2546 58115 y Fa(253)4234
+b Fi(T0)3487 b(is)581 b(the)h(initial)g(time)-2546 59444
+y Fa(254)4234 b Fi(u)4068 b(is)581 b(the)h(initial)g(dependent)h
+(variable)f(vector)-2546 60772 y Fa(255)4234 b Fi(CV_SS)1744
+b(specifies)582 b(scalar)g(relative)h(and)e(absolute)i(tolerances)-2546
+62100 y Fa(256)4234 b Fi(reltol)1163 b(is)581 b(the)h(relative)g
+(tolerance)-2546 63429 y Fa(257)4234 b Fi(&abstol)582
+b(is)f(a)h(pointer)g(to)f(the)h(scalar)g(absolute)g(tolerance)-2546
+64757 y Fa(258)2490 b Fi(*/)-2546 66086 y Fa(259)g Fi(flag)582
+b(=)f(CVodeMalloc\(cvode_mem,)k(f,)c(T0,)h(u,)f(CV_SS,)h(reltol,)g
+(&abstol\);)-2546 67414 y Fa(260)2490 b Fi(if)582 b
+(\(check_flag\(&flag,)i("CVodeMalloc",)f(1,)e(my_pe\)\))h
+(MPI_Abort\(comm,)i(1\);)-2546 68742 y Fa(261)-2546 70071
+y(262)2490 b Fi(/*)582 b(Call)f(CVSpgmr)i(to)e(specify)h(the)g(linear)g
+(solver)g(CVSPGMR)-2546 71399 y Fa(263)4234 b Fi(with)581
+b(left)h(preconditioning)i(and)d(the)h(maximum)g(Krylov)g(dimension)h
+(maxl)e(*/)-2546 72727 y Fa(264)2490 b Fi(flag)582 b(=)f
+(CVSpgmr\(cvode_mem,)j(PREC_LEFT,)f(0\);)-2546 74056
+y Fa(265)2490 b Fi(if)582 b(\(check_flag\(&flag,)i("CVSpgmr",)e(1,)g
+(my_pe\)\))g(MPI_Abort\(comm,)h(1\);)-2546 75384 y Fa(266)-2546
+76712 y(267)2490 b Fi(/*)582 b(Set)f(preconditioner)j(setup)d(and)h
+(solve)g(routines)g(Precond)g(and)g(PSolve,)-2546 78041
+y Fa(268)4234 b Fi(and)581 b(the)h(pointer)g(to)g(the)f(user-defined)i
+(block)f(data)g(*/)p Black 23394 81741 a Fs(68)p Black
+eop
+%%Page: 69 73
+69 72 bop Black Black 1454 7638 a Fa(269)2490 b Fi(flag)582
+b(=)f(CVSpgmrSetPreconditioner\(cvode_mem,)587 b(Precond,)582
+b(PSolve,)g(predata\);)1454 8966 y Fa(270)2490 b Fi(if)582
+b(\(check_flag\(&flag,)i("CVSpgmrSetPreconditioner",)h(1,)c(my_pe\)\))h
+(MPI_Abort\(comm,)i(1\);)1454 10295 y Fa(271)1454 11623
+y(272)2490 b Fi(if)582 b(\(my_pe)g(==)f(0\))1454 12951
+y Fa(273)3653 b Fi(printf\("\\n2-species)584 b(diurnal)e
+(advection-diffusion)i(problem\\n\\n"\);)1454 14280 y
+Fa(274)1454 15608 y(275)2490 b Fi(/*)582 b(In)f(loop)h(over)g(output)g
+(points,)g(call)g(CVode,)g(print)g(results,)g(test)g(for)f(error)h(*/)
+1454 16936 y Fa(276)2490 b Fi(for)582 b(\(iout=1,)g(tout)g(=)f(TWOHR;)h
+(iout)g(<=)g(NOUT;)f(iout++,)i(tout)e(+=)h(TWOHR\))g({)1454
+18265 y Fa(277)3653 b Fi(flag)581 b(=)h(CVode\(cvode_mem,)h(tout,)f(u,)
+g(&t,)f(CV_NORMAL\);)1454 19593 y Fa(278)3653 b Fi(if)581
+b(\(check_flag\(&flag,)j("CVode",)e(1,)g(my_pe\)\))g(break;)1454
+20922 y Fa(279)3653 b Fi(PrintOutput\(cvode_mem,)584
+b(my_pe,)e(comm,)g(u,)f(t\);)1454 22250 y Fa(280)2490
+b Fi(})1454 23578 y Fa(281)1454 24907 y(282)g Fi(/*)582
+b(Print)g(final)g(statistics)g(*/)1454 26235 y Fa(283)2490
+b Fi(if)582 b(\(my_pe)g(==)f(0\))h(PrintFinalStats\(cvode_mem\);)1454
+27563 y Fa(284)1454 28892 y(285)2490 b Fi(/*)582 b(Free)f(memory)i(*/)
+1454 30220 y Fa(286)2490 b Fi(N_VDestroy_Parallel\(u\);)1454
+31548 y Fa(287)g Fi(free\(data\);)1454 32877 y Fa(288)g
+Fi(FreePreconData\(predata\);)1454 34205 y Fa(289)g Fi
+(CVodeFree\(cvode_mem\);)1454 35533 y Fa(290)1454 36862
+y(291)g Fi(MPI_Finalize\(\);)1454 38190 y Fa(292)1454
+39518 y(293)g Fi(return\(0\);)1454 40847 y Fa(294)1328
+b Fi(})1454 42175 y Fa(295)1454 43504 y(296)1454 44832
+y(297)g Fi(/***********************)585 b(Private)d(Helper)g(Functions)
+g(************************/)1454 46160 y Fa(298)1454
+47489 y(299)1328 b Fi(/*)581 b(Allocate)i(memory)f(for)f(data)h
+(structure)h(of)e(type)h(UserData)g(*/)1454 48817 y Fa(300)1454
+50145 y(301)1328 b Fi(static)582 b(PreconData)h
+(AllocPreconData\(UserData)h(fdata\))1454 51474 y Fa(302)1328
+b Fi({)1454 52802 y Fa(303)2490 b Fi(int)582 b(lx,)f(ly;)1454
+54130 y Fa(304)2490 b Fi(PreconData)583 b(pdata;)1454
+55459 y Fa(305)1454 56787 y(306)2490 b Fi(pdata)582 b(=)f
+(\(PreconData\))i(malloc\(sizeof)h(*pdata\);)1454 58115
+y Fa(307)1454 59444 y(308)2490 b Fi(pdata->f_data)583
+b(=)f(fdata;)1454 60772 y Fa(309)1454 62100 y(310)2490
+b Fi(for)582 b(\(lx)f(=)h(0;)f(lx)h(<)f(MXSUB;)h(lx++\))g({)1454
+63429 y Fa(311)3653 b Fi(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))g({)1454 64757 y Fa(312)4815 b Fi(\(pdata->P\)[lx][ly])584
+b(=)d(denalloc\(NVARS\);)1454 66086 y Fa(313)4815 b Fi
+(\(pdata->Jbd\)[lx][ly])584 b(=)d(denalloc\(NVARS\);)1454
+67414 y Fa(314)4815 b Fi(\(pdata->pivot\)[lx][ly])584
+b(=)e(denallocpiv\(NVARS\);)1454 68742 y Fa(315)3653
+b Fi(})1454 70071 y Fa(316)2490 b Fi(})1454 71399 y Fa(317)1454
+72727 y(318)g Fi(return\(pdata\);)1454 74056 y Fa(319)1328
+b Fi(})1454 75384 y Fa(320)1454 76712 y(321)g Fi(/*)581
+b(Load)h(constants)h(in)e(data)h(*/)1454 78041 y Fa(322)p
+Black 27394 81741 a Fs(69)p Black eop
+%%Page: 70 74
+70 73 bop Black Black -2546 7638 a Fa(323)1328 b Fi(static)582
+b(void)g(InitUserData\(int)h(my_pe,)f(MPI_Comm)h(comm,)f(UserData)g
+(data\))-2546 8966 y Fa(324)1328 b Fi({)-2546 10295 y
+Fa(325)2490 b Fi(int)582 b(isubx,)g(isuby;)-2546 11623
+y Fa(326)-2546 12951 y(327)2490 b Fi(/*)582 b(Set)f(problem)i
+(constants)f(*/)-2546 14280 y Fa(328)2490 b Fi(data->om)583
+b(=)e(PI/HALFDAY;)-2546 15608 y Fa(329)2490 b Fi(data->dx)583
+b(=)e(\(XMAX-XMIN\)/\(\(realtype\)\(MX-1\)\);)-2546 16936
+y Fa(330)2490 b Fi(data->dy)583 b(=)e
+(\(YMAX-YMIN\)/\(\(realtype\)\(MY-1\)\);)-2546 18265
+y Fa(331)2490 b Fi(data->hdco)583 b(=)e(KH/SQR\(data->dx\);)-2546
+19593 y Fa(332)2490 b Fi(data->haco)583 b(=)e
+(VEL/\(RCONST\(2.0\)*data->dx\);)-2546 20922 y Fa(333)2490
+b Fi(data->vdco)583 b(=)e(\(RCONST\(1.0\)/SQR\(data->dy\)\)*KV0;)-2546
+22250 y Fa(334)-2546 23578 y(335)2490 b Fi(/*)582 b(Set)f
+(machine-related)j(constants)e(*/)-2546 24907 y Fa(336)2490
+b Fi(data->comm)583 b(=)e(comm;)-2546 26235 y Fa(337)2490
+b Fi(data->my_pe)583 b(=)e(my_pe;)-2546 27563 y Fa(338)-2546
+28892 y(339)2490 b Fi(/*)582 b(isubx)g(and)f(isuby)h(are)g(the)f(PE)h
+(grid)g(indices)g(corresponding)h(to)e(my_pe)h(*/)-2546
+30220 y Fa(340)2490 b Fi(isuby)582 b(=)f(my_pe/NPEX;)-2546
+31548 y Fa(341)2490 b Fi(isubx)582 b(=)f(my_pe)h(-)g(isuby*NPEX;)-2546
+32877 y Fa(342)2490 b Fi(data->isubx)583 b(=)e(isubx;)-2546
+34205 y Fa(343)2490 b Fi(data->isuby)583 b(=)e(isuby;)-2546
+35533 y Fa(344)-2546 36862 y(345)2490 b Fi(/*)582 b(Set)f(the)h(sizes)g
+(of)f(a)h(boundary)g(x-line)g(in)f(u)h(and)f(uext)h(*/)-2546
+38190 y Fa(346)2490 b Fi(data->nvmxsub)583 b(=)f(NVARS*MXSUB;)-2546
+39518 y Fa(347)2490 b Fi(data->nvmxsub2)584 b(=)d(NVARS*\(MXSUB+2\);)
+-2546 40847 y Fa(348)1328 b Fi(})-2546 42175 y Fa(349)-2546
+43504 y(350)g Fi(/*)581 b(Free)h(preconditioner)h(data)f(memory)g(*/)
+-2546 44832 y Fa(351)-2546 46160 y(352)1328 b Fi(static)582
+b(void)g(FreePreconData\(PreconData)j(pdata\))-2546 47489
+y Fa(353)1328 b Fi({)-2546 48817 y Fa(354)2490 b Fi(int)582
+b(lx,)f(ly;)-2546 50145 y Fa(355)-2546 51474 y(356)2490
+b Fi(for)582 b(\(lx)f(=)h(0;)f(lx)h(<)f(MXSUB;)h(lx++\))g({)-2546
+52802 y Fa(357)3653 b Fi(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))g({)-2546 54130 y Fa(358)4815 b Fi
+(denfree\(\(pdata->P\)[lx][ly]\);)-2546 55459 y Fa(359)g
+Fi(denfree\(\(pdata->Jbd\)[lx][ly]\);)-2546 56787 y Fa(360)g
+Fi(denfreepiv\(\(pdata->pivot\)[lx][ly]\);)-2546 58115
+y Fa(361)3653 b Fi(})-2546 59444 y Fa(362)2490 b Fi(})-2546
+60772 y Fa(363)-2546 62100 y(364)g Fi(free\(pdata\);)-2546
+63429 y Fa(365)1328 b Fi(})-2546 64757 y Fa(366)-2546
+66086 y(367)g Fi(/*)581 b(Set)h(initial)g(conditions)h(in)e(u)h(*/)
+-2546 67414 y Fa(368)-2546 68742 y(369)1328 b Fi(static)582
+b(void)g(SetInitialProfiles\(N_Vector)j(u,)c(UserData)i(data\))-2546
+70071 y Fa(370)1328 b Fi({)-2546 71399 y Fa(371)2490
+b Fi(int)582 b(isubx,)g(isuby,)g(lx,)g(ly,)f(jx,)h(jy;)-2546
+72727 y Fa(372)2490 b Fi(long)582 b(int)g(offset;)-2546
+74056 y Fa(373)2490 b Fi(realtype)583 b(dx,)e(dy,)h(x,)f(y,)h(cx,)f
+(cy,)h(xmid,)g(ymid;)-2546 75384 y Fa(374)2490 b Fi(realtype)583
+b(*udata;)-2546 76712 y Fa(375)-2546 78041 y(376)2490
+b Fi(/*)582 b(Set)f(pointer)i(to)e(data)h(array)g(in)f(vector)h(u)f(*/)
+p Black 23394 81741 a Fs(70)p Black eop
+%%Page: 71 75
+71 74 bop Black Black 1454 7638 a Fa(377)2490 b Fi(udata)582
+b(=)f(NV_DATA_P\(u\);)1454 8966 y Fa(378)1454 10295 y(379)2490
+b Fi(/*)582 b(Get)f(mesh)h(spacings,)h(and)e(subgrid)h(indices)h(for)e
+(this)h(PE)f(*/)1454 11623 y Fa(380)2490 b Fi(dx)582
+b(=)f(data->dx;)5232 b(dy)581 b(=)g(data->dy;)1454 12951
+y Fa(381)2490 b Fi(isubx)582 b(=)f(data->isubx;)1746
+b(isuby)582 b(=)f(data->isuby;)1454 14280 y Fa(382)1454
+15608 y(383)2490 b Fi(/*)582 b(Load)f(initial)i(profiles)f(of)f(c1)h
+(and)g(c2)f(into)h(local)g(u)f(vector.)1454 16936 y Fa(384)2490
+b Fi(Here)582 b(lx)f(and)h(ly)g(are)f(local)h(mesh)g(point)g(indices)g
+(on)f(the)h(local)g(subgrid,)1454 18265 y Fa(385)2490
+b Fi(and)582 b(jx)f(and)h(jy)f(are)h(the)g(global)g(mesh)f(point)h
+(indices.)h(*/)1454 19593 y Fa(386)2490 b Fi(offset)582
+b(=)g(0;)1454 20922 y Fa(387)2490 b Fi(xmid)582 b(=)f
+(RCONST\(0.5\)*\(XMIN)j(+)d(XMAX\);)1454 22250 y Fa(388)2490
+b Fi(ymid)582 b(=)f(RCONST\(0.5\)*\(YMIN)j(+)d(YMAX\);)1454
+23578 y Fa(389)2490 b Fi(for)582 b(\(ly)f(=)h(0;)f(ly)h(<)f(MYSUB;)h
+(ly++\))g({)1454 24907 y Fa(390)3653 b Fi(jy)581 b(=)g(ly)h(+)f
+(isuby*MYSUB;)1454 26235 y Fa(391)3653 b Fi(y)581 b(=)g(YMIN)h(+)f
+(jy*dy;)1454 27563 y Fa(392)3653 b Fi(cy)581 b(=)g
+(SQR\(RCONST\(0.1\)*\(y)j(-)d(ymid\)\);)1454 28892 y
+Fa(393)3653 b Fi(cy)581 b(=)g(RCONST\(1.0\))i(-)e(cy)h(+)f
+(RCONST\(0.5\)*SQR\(cy\);)1454 30220 y Fa(394)3653 b
+Fi(for)581 b(\(lx)h(=)f(0;)h(lx)f(<)g(MXSUB;)h(lx++\))g({)1454
+31548 y Fa(395)4815 b Fi(jx)581 b(=)h(lx)f(+)g(isubx*MXSUB;)1454
+32877 y Fa(396)4815 b Fi(x)581 b(=)g(XMIN)h(+)g(jx*dx;)1454
+34205 y Fa(397)4815 b Fi(cx)581 b(=)h(SQR\(RCONST\(0.1\)*\(x)h(-)f
+(xmid\)\);)1454 35533 y Fa(398)4815 b Fi(cx)581 b(=)h(RCONST\(1.0\))g
+(-)g(cx)f(+)g(RCONST\(0.5\)*SQR\(cx\);)1454 36862 y Fa(399)4815
+b Fi(udata[offset)1164 b(])581 b(=)h(C1_SCALE*cx*cy;)1454
+38190 y Fa(400)4815 b Fi(udata[offset+1])583 b(=)f(C2_SCALE*cx*cy;)1454
+39518 y Fa(401)4815 b Fi(offset)582 b(=)f(offset)h(+)g(2;)1454
+40847 y Fa(402)3653 b Fi(})1454 42175 y Fa(403)2490 b
+Fi(})1454 43504 y Fa(404)1328 b Fi(})1454 44832 y Fa(405)1454
+46160 y(406)g Fi(/*)581 b(Print)h(current)h(t,)e(step)h(count,)g
+(order,)g(stepsize,)g(and)g(sampled)g(c1,c2)g(values)g(*/)1454
+47489 y Fa(407)1454 48817 y(408)1328 b Fi(static)582
+b(void)g(PrintOutput\(void)h(*cvode_mem,)g(int)f(my_pe,)g(MPI_Comm)g
+(comm,)1454 50145 y Fa(409)15276 b Fi(N_Vector)582 b(u,)f(realtype)i
+(t\))1454 51474 y Fa(410)1328 b Fi({)1454 52802 y Fa(411)2490
+b Fi(int)582 b(qu,)f(flag;)1454 54130 y Fa(412)2490 b
+Fi(realtype)583 b(hu,)e(*udata,)h(tempu[2];)1454 55459
+y Fa(413)2490 b Fi(int)582 b(npelast;)1454 56787 y Fa(414)2490
+b Fi(long)582 b(int)g(i0,)f(i1,)h(nst;)1454 58115 y Fa(415)2490
+b Fi(MPI_Status)583 b(status;)1454 59444 y Fa(416)1454
+60772 y(417)2490 b Fi(npelast)582 b(=)g(NPEX*NPEY)g(-)g(1;)1454
+62100 y Fa(418)2490 b Fi(udata)582 b(=)f(NV_DATA_P\(u\);)1454
+63429 y Fa(419)1454 64757 y(420)2490 b Fi(/*)582 b(Send)f(c1,c2)h(at)g
+(top)f(right)h(mesh)g(point)g(to)f(PE)h(0)f(*/)1454 66086
+y Fa(421)2490 b Fi(if)582 b(\(my_pe)g(==)f(npelast\))i({)1454
+67414 y Fa(422)3653 b Fi(i0)581 b(=)g(NVARS*MXSUB*MYSUB)j(-)d(2;)1454
+68742 y Fa(423)3653 b Fi(i1)581 b(=)g(i0)h(+)f(1;)1454
+70071 y Fa(424)3653 b Fi(if)581 b(\(npelast)h(!=)g(0\))1454
+71399 y Fa(425)4815 b Fi(MPI_Send\(&udata[i0],)584 b(2,)d
+(PVEC_REAL_MPI_TYPE,)j(0,)e(0,)f(comm\);)1454 72727 y
+Fa(426)3653 b Fi(else)581 b({)1454 74056 y Fa(427)4815
+b Fi(tempu[0])582 b(=)g(udata[i0];)1454 75384 y Fa(428)4815
+b Fi(tempu[1])582 b(=)g(udata[i1];)1454 76712 y Fa(429)3653
+b Fi(})1454 78041 y Fa(430)2490 b Fi(})p Black 27394
+81741 a Fs(71)p Black eop
+%%Page: 72 76
+72 75 bop Black Black -2546 7638 a Fa(431)-2546 8966
+y(432)2490 b Fi(/*)582 b(On)f(PE)h(0,)f(receive)h(c1,c2)g(at)g(top)f
+(right,)h(then)g(print)g(performance)h(data)-2546 10295
+y Fa(433)4234 b Fi(and)581 b(sampled)i(solution)f(values)g(*/)-2546
+11623 y Fa(434)2490 b Fi(if)582 b(\(my_pe)g(==)f(0\))h({)-2546
+12951 y Fa(435)3653 b Fi(if)581 b(\(npelast)h(!=)g(0\))-2546
+14280 y Fa(436)4815 b Fi(MPI_Recv\(&tempu[0],)584 b(2,)d
+(PVEC_REAL_MPI_TYPE,)j(npelast,)f(0,)e(comm,)h(&status\);)-2546
+15608 y Fa(437)3653 b Fi(flag)581 b(=)h(CVodeGetNumSteps\(cvode_mem,)j
+(&nst\);)-2546 16936 y Fa(438)3653 b Fi(check_flag\(&flag,)583
+b("CVodeGetNumSteps",)h(1,)e(my_pe\);)-2546 18265 y Fa(439)3653
+b Fi(flag)581 b(=)h(CVodeGetLastOrder\(cvode_mem,)j(&qu\);)-2546
+19593 y Fa(440)3653 b Fi(check_flag\(&flag,)583 b("CVodeGetLastOrder",)
+h(1,)e(my_pe\);)-2546 20922 y Fa(441)3653 b Fi(flag)581
+b(=)h(CVodeGetLastStep\(cvode_mem,)j(&hu\);)-2546 22250
+y Fa(442)3653 b Fi(check_flag\(&flag,)583 b("CVodeGetLastStep",)h(1,)e
+(my_pe\);)-2546 23578 y Fa(443)-2546 24907 y(444)1328
+b Fi(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546
+26235 y Fa(445)3653 b Fi(printf\("t)582 b(=)f(\045.2Le)1745
+b(no.)581 b(steps)h(=)f(\045ld)1744 b(order)582 b(=)f(\045d)1744
+b(stepsize)583 b(=)e(\045.2Le\\n",)-2546 27563 y Fa(446)7721
+b Fi(t,)581 b(nst,)h(qu,)f(hu\);)-2546 28892 y Fa(447)3653
+b Fi(printf\("At)582 b(bottom)g(left:)1163 b(c1,)582
+b(c2)f(=)h(\04512.3Le)g(\04512.3Le)g(\\n",)g(udata[0],)g(udata[1]\);)
+-2546 30220 y Fa(448)3653 b Fi(printf\("At)582 b(top)g(right:)2325
+b(c1,)582 b(c2)f(=)h(\04512.3Le)g(\04512.3Le)g(\\n\\n",)g(tempu[0],)h
+(tempu[1]\);)-2546 31548 y Fa(449)1328 b Fi(#elif)582
+b(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546 32877 y
+Fa(450)3653 b Fi(printf\("t)582 b(=)f(\045.2le)1745 b(no.)581
+b(steps)h(=)f(\045ld)1744 b(order)582 b(=)f(\045d)1744
+b(stepsize)583 b(=)e(\045.2le\\n",)-2546 34205 y Fa(451)7721
+b Fi(t,)581 b(nst,)h(qu,)f(hu\);)-2546 35533 y Fa(452)3653
+b Fi(printf\("At)582 b(bottom)g(left:)1163 b(c1,)582
+b(c2)f(=)h(\04512.3le)g(\04512.3le)g(\\n",)g(udata[0],)g(udata[1]\);)
+-2546 36862 y Fa(453)3653 b Fi(printf\("At)582 b(top)g(right:)2325
+b(c1,)582 b(c2)f(=)h(\04512.3le)g(\04512.3le)g(\\n\\n",)g(tempu[0],)h
+(tempu[1]\);)-2546 38190 y Fa(454)1328 b Fi(#else)-2546
+39518 y Fa(455)3653 b Fi(printf\("t)582 b(=)f(\045.2e)1744
+b(no.)582 b(steps)g(=)f(\045ld)1744 b(order)582 b(=)f(\045d)1744
+b(stepsize)582 b(=)g(\045.2e\\n",)-2546 40847 y Fa(456)7721
+b Fi(t,)581 b(nst,)h(qu,)f(hu\);)-2546 42175 y Fa(457)3653
+b Fi(printf\("At)582 b(bottom)g(left:)1163 b(c1,)582
+b(c2)f(=)h(\04512.3e)g(\04512.3e)g(\\n",)f(udata[0],)i(udata[1]\);)
+-2546 43504 y Fa(458)3653 b Fi(printf\("At)582 b(top)g(right:)2325
+b(c1,)582 b(c2)f(=)h(\04512.3e)g(\04512.3e)g(\\n\\n",)g(tempu[0],)g
+(tempu[1]\);)-2546 44832 y Fa(459)1328 b Fi(#endif)-2546
+46160 y Fa(460)2490 b Fi(})-2546 47489 y Fa(461)1328
+b Fi(})-2546 48817 y Fa(462)-2546 50145 y(463)g Fi(/*)581
+b(Print)h(final)g(statistics)h(contained)f(in)g(iopt)g(*/)-2546
+51474 y Fa(464)-2546 52802 y(465)1328 b Fi(static)582
+b(void)g(PrintFinalStats\(void)i(*cvode_mem\))-2546 54130
+y Fa(466)1328 b Fi({)-2546 55459 y Fa(467)2490 b Fi(long)582
+b(int)g(lenrw,)g(leniw)g(;)-2546 56787 y Fa(468)2490
+b Fi(long)582 b(int)g(lenrwSPGMR,)g(leniwSPGMR;)-2546
+58115 y Fa(469)2490 b Fi(long)582 b(int)g(nst,)f(nfe,)h(nsetups,)g
+(nni,)g(ncfn,)g(netf;)-2546 59444 y Fa(470)2490 b Fi(long)582
+b(int)g(nli,)f(npe,)h(nps,)g(ncfl,)g(nfeSPGMR;)-2546
+60772 y Fa(471)2490 b Fi(int)582 b(flag;)-2546 62100
+y Fa(472)-2546 63429 y(473)2490 b Fi(flag)582 b(=)f
+(CVodeGetWorkSpace\(cvode_mem,)586 b(&lenrw,)c(&leniw\);)-2546
+64757 y Fa(474)2490 b Fi(check_flag\(&flag,)584 b("CVodeGetWorkSpace",)
+g(1,)e(0\);)-2546 66086 y Fa(475)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumSteps\(cvode_mem,)586 b(&nst\);)-2546 67414
+y Fa(476)2490 b Fi(check_flag\(&flag,)584 b("CVodeGetNumSteps",)g(1,)d
+(0\);)-2546 68742 y Fa(477)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumRhsEvals\(cvode_mem,)586 b(&nfe\);)-2546
+70071 y Fa(478)2490 b Fi(check_flag\(&flag,)584 b
+("CVodeGetNumRhsEvals",)g(1,)e(0\);)-2546 71399 y Fa(479)2490
+b Fi(flag)582 b(=)f(CVodeGetNumLinSolvSetups\(cvode_mem,)587
+b(&nsetups\);)-2546 72727 y Fa(480)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumLinSolvSetups",)h(1,)d(0\);)-2546 74056
+y Fa(481)2490 b Fi(flag)582 b(=)f(CVodeGetNumErrTestFails\(cvode_mem,)
+587 b(&netf\);)-2546 75384 y Fa(482)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumErrTestFails",)h(1,)c(0\);)-2546 76712
+y Fa(483)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumNonlinSolvIters\(cvode_mem,)587 b(&nni\);)-2546
+78041 y Fa(484)2490 b Fi(check_flag\(&flag,)584 b
+("CVodeGetNumNonlinSolvIters",)h(1,)d(0\);)p Black 23394
+81741 a Fs(72)p Black eop
+%%Page: 73 77
+73 76 bop Black Black 1454 7638 a Fa(485)2490 b Fi(flag)582
+b(=)f(CVodeGetNumNonlinSolvConvFails\(cvode_mem,)588
+b(&ncfn\);)1454 8966 y Fa(486)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumNonlinSolvConvFails",)i(1,)581 b(0\);)1454
+10295 y Fa(487)1454 11623 y(488)2490 b Fi(flag)582 b(=)f
+(CVSpgmrGetWorkSpace\(cvode_mem,)586 b(&lenrwSPGMR,)d(&leniwSPGMR\);)
+1454 12951 y Fa(489)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetWorkSpace",)g(1,)e(0\);)1454 14280 y Fa(490)2490
+b Fi(flag)582 b(=)f(CVSpgmrGetNumLinIters\(cvode_mem,)586
+b(&nli\);)1454 15608 y Fa(491)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetNumLinIters",)h(1,)c(0\);)1454 16936 y Fa(492)2490
+b Fi(flag)582 b(=)f(CVSpgmrGetNumPrecEvals\(cvode_mem,)586
+b(&npe\);)1454 18265 y Fa(493)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetNumPrecEvals",)h(1,)c(0\);)1454 19593 y
+Fa(494)2490 b Fi(flag)582 b(=)f(CVSpgmrGetNumPrecSolves\(cvode_mem,)587
+b(&nps\);)1454 20922 y Fa(495)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetNumPrecSolves",)h(1,)c(0\);)1454 22250 y
+Fa(496)2490 b Fi(flag)582 b(=)f(CVSpgmrGetNumConvFails\(cvode_mem,)586
+b(&ncfl\);)1454 23578 y Fa(497)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetNumConvFails",)h(1,)c(0\);)1454 24907 y
+Fa(498)2490 b Fi(flag)582 b(=)f(CVSpgmrGetNumRhsEvals\(cvode_mem,)586
+b(&nfeSPGMR\);)1454 26235 y Fa(499)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetNumRhsEvals",)h(1,)c(0\);)1454 27563 y Fa(500)1454
+28892 y(501)2490 b Fi(printf\("\\nFinal)584 b(Statistics:)e(\\n\\n"\);)
+1454 30220 y Fa(502)2490 b Fi(printf\("lenrw)1746 b(=)581
+b(\0455ld)2906 b(leniw)582 b(=)g(\0455ld\\n",)g(lenrw,)g(leniw\);)1454
+31548 y Fa(503)2490 b Fi(printf\("llrw)2327 b(=)581 b(\0455ld)2906
+b(lliw)1163 b(=)582 b(\0455ld\\n",)g(lenrwSPGMR,)h(leniwSPGMR\);)1454
+32877 y Fa(504)2490 b Fi(printf\("nst)2908 b(=)581 b(\0455ld\\n")10462
+b(,)581 b(nst\);)1454 34205 y Fa(505)2490 b Fi(printf\("nfe)2908
+b(=)581 b(\0455ld)2906 b(nfel)1163 b(=)582 b(\0455ld\\n")1163
+b(,)581 b(nfe,)h(nfeSPGMR\);)1454 35533 y Fa(506)2490
+b Fi(printf\("nni)2908 b(=)581 b(\0455ld)2906 b(nli)1744
+b(=)582 b(\0455ld\\n")1163 b(,)581 b(nni,)h(nli\);)1454
+36862 y Fa(507)2490 b Fi(printf\("nsetups)584 b(=)d(\0455ld)2906
+b(netf)1163 b(=)582 b(\0455ld\\n")1163 b(,)581 b(nsetups,)h(netf\);)
+1454 38190 y Fa(508)2490 b Fi(printf\("npe)2908 b(=)581
+b(\0455ld)2906 b(nps)1744 b(=)582 b(\0455ld\\n")1163
+b(,)581 b(npe,)h(nps\);)1454 39518 y Fa(509)2490 b Fi(printf\("ncfn)
+2327 b(=)581 b(\0455ld)2906 b(ncfl)1163 b(=)582 b(\0455ld\\n\\n",)g
+(ncfn,)g(ncfl\);)1454 40847 y Fa(510)1328 b Fi(})1454
+42175 y Fa(511)1454 43504 y(512)g Fi(/*)581 b(Routine)i(to)e(send)h
+(boundary)g(data)g(to)f(neighboring)i(PEs)f(*/)1454 44832
+y Fa(513)1454 46160 y(514)1328 b Fi(static)582 b(void)g
+(BSend\(MPI_Comm)h(comm,)1454 47489 y Fa(515)11789 b
+Fi(int)581 b(my_pe,)h(int)g(isubx,)g(int)g(isuby,)1454
+48817 y Fa(516)11789 b Fi(long)581 b(int)h(dsizex,)g(long)g(int)g
+(dsizey,)1454 50145 y Fa(517)11789 b Fi(realtype)582
+b(udata[]\))1454 51474 y Fa(518)1328 b Fi({)1454 52802
+y Fa(519)2490 b Fi(int)582 b(i,)f(ly;)1454 54130 y Fa(520)2490
+b Fi(long)582 b(int)g(offsetu,)g(offsetbuf;)1454 55459
+y Fa(521)2490 b Fi(realtype)583 b(bufleft[NVARS*MYSUB],)h
+(bufright[NVARS*MYSUB];)1454 56787 y Fa(522)1454 58115
+y(523)2490 b Fi(/*)582 b(If)f(isuby)h(>)f(0,)h(send)g(data)f(from)h
+(bottom)g(x-line)g(of)g(u)f(*/)1454 59444 y Fa(524)2490
+b Fi(if)582 b(\(isuby)g(!=)f(0\))1454 60772 y Fa(525)3653
+b Fi(MPI_Send\(&udata[0],)584 b(dsizex,)e(PVEC_REAL_MPI_TYPE,)i
+(my_pe-NPEX,)f(0,)e(comm\);)1454 62100 y Fa(526)1454
+63429 y(527)2490 b Fi(/*)582 b(If)f(isuby)h(<)f(NPEY-1,)i(send)e(data)h
+(from)g(top)f(x-line)h(of)g(u)f(*/)1454 64757 y Fa(528)2490
+b Fi(if)582 b(\(isuby)g(!=)f(NPEY-1\))h({)1454 66086
+y Fa(529)3653 b Fi(offsetu)582 b(=)f(\(MYSUB-1\)*dsizex;)1454
+67414 y Fa(530)3653 b Fi(MPI_Send\(&udata[offsetu],)584
+b(dsizex,)f(PVEC_REAL_MPI_TYPE,)h(my_pe+NPEX,)e(0,)g(comm\);)1454
+68742 y Fa(531)2490 b Fi(})1454 70071 y Fa(532)1454 71399
+y(533)g Fi(/*)582 b(If)f(isubx)h(>)f(0,)h(send)g(data)f(from)h(left)g
+(y-line)g(of)f(u)h(\(via)f(bufleft\))i(*/)1454 72727
+y Fa(534)2490 b Fi(if)582 b(\(isubx)g(!=)f(0\))h({)1454
+74056 y Fa(535)3653 b Fi(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))g({)1454 75384 y Fa(536)4815 b Fi(offsetbuf)582
+b(=)g(ly*NVARS;)1454 76712 y Fa(537)4815 b Fi(offsetu)582
+b(=)f(ly*dsizex;)1454 78041 y Fa(538)4815 b Fi(for)581
+b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)h(i++\))p Black 27394
+81741 a Fs(73)p Black eop
+%%Page: 74 78
+74 77 bop Black Black -2546 7638 a Fa(539)5977 b Fi
+(bufleft[offsetbuf+i])584 b(=)e(udata[offsetu+i];)-2546
+8966 y Fa(540)3653 b Fi(})-2546 10295 y Fa(541)g Fi
+(MPI_Send\(&bufleft[0],)584 b(dsizey,)e(PVEC_REAL_MPI_TYPE,)i(my_pe-1,)
+e(0,)g(comm\);)-2546 11623 y Fa(542)2490 b Fi(})-2546
+12951 y Fa(543)-2546 14280 y(544)g Fi(/*)582 b(If)f(isubx)h(<)f
+(NPEX-1,)i(send)e(data)h(from)g(right)g(y-line)g(of)f(u)g(\(via)h
+(bufright\))h(*/)-2546 15608 y Fa(545)2490 b Fi(if)582
+b(\(isubx)g(!=)f(NPEX-1\))h({)-2546 16936 y Fa(546)3653
+b Fi(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h(ly++\))g({)-2546
+18265 y Fa(547)4815 b Fi(offsetbuf)582 b(=)g(ly*NVARS;)-2546
+19593 y Fa(548)4815 b Fi(offsetu)582 b(=)f(offsetbuf*MXSUB)j(+)d
+(\(MXSUB-1\)*NVARS;)-2546 20922 y Fa(549)4815 b Fi(for)581
+b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)h(i++\))-2546 22250 y
+Fa(550)5977 b Fi(bufright[offsetbuf+i])584 b(=)e(udata[offsetu+i];)
+-2546 23578 y Fa(551)3653 b Fi(})-2546 24907 y Fa(552)g
+Fi(MPI_Send\(&bufright[0],)584 b(dsizey,)e(PVEC_REAL_MPI_TYPE,)i
+(my_pe+1,)f(0,)e(comm\);)-2546 26235 y Fa(553)2490 b
+Fi(})-2546 27563 y Fa(554)1328 b Fi(})-2546 28892 y Fa(555)-2546
+30220 y(556)g Fi(/*)581 b(Routine)i(to)e(start)h(receiving)g(boundary)h
+(data)f(from)f(neighboring)i(PEs.)-2546 31548 y Fa(557)3071
+b Fi(Notes:)-2546 32877 y Fa(558)g Fi(1\))582 b(buffer)g(should)g(be)f
+(able)h(to)g(hold)f(2*NVARS*MYSUB)i(realtype)g(entries,)f(should)g(be)
+-2546 34205 y Fa(559)3071 b Fi(passed)582 b(to)g(both)g(the)f
+(BRecvPost)i(and)e(BRecvWait)i(functions,)f(and)g(should)g(not)-2546
+35533 y Fa(560)3071 b Fi(be)582 b(manipulated)h(between)f(the)f(two)h
+(calls.)-2546 36862 y Fa(561)3071 b Fi(2\))582 b(request)g(should)g
+(have)g(4)f(entries,)i(and)e(should)h(be)g(passed)g(in)f(both)h(calls)g
+(also.)g(*/)-2546 38190 y Fa(562)-2546 39518 y(563)1328
+b Fi(static)582 b(void)g(BRecvPost\(MPI_Comm)i(comm,)e(MPI_Request)g
+(request[],)-2546 40847 y Fa(564)14113 b Fi(int)582 b(my_pe,)g(int)g
+(isubx,)g(int)f(isuby,)-2546 42175 y Fa(565)14113 b Fi(long)582
+b(int)g(dsizex,)g(long)g(int)f(dsizey,)-2546 43504 y
+Fa(566)14113 b Fi(realtype)583 b(uext[],)f(realtype)g(buffer[]\))-2546
+44832 y Fa(567)1328 b Fi({)-2546 46160 y Fa(568)2490
+b Fi(long)582 b(int)g(offsetue;)-2546 47489 y Fa(569)2490
+b Fi(/*)582 b(Have)f(bufleft)i(and)e(bufright)i(use)e(the)h(same)g
+(buffer)g(*/)-2546 48817 y Fa(570)2490 b Fi(realtype)583
+b(*bufleft)f(=)f(buffer,)h(*bufright)h(=)e(buffer+NVARS*MYSUB;)-2546
+50145 y Fa(571)-2546 51474 y(572)2490 b Fi(/*)582 b(If)f(isuby)h(>)f
+(0,)h(receive)g(data)g(for)f(bottom)h(x-line)g(of)g(uext)g(*/)-2546
+52802 y Fa(573)2490 b Fi(if)582 b(\(isuby)g(!=)f(0\))-2546
+54130 y Fa(574)3653 b Fi(MPI_Irecv\(&uext[NVARS],)584
+b(dsizex,)e(PVEC_REAL_MPI_TYPE,)-2546 55459 y Fa(575)27480
+b Fi(my_pe-NPEX,)582 b(0,)g(comm,)g(&request[0]\);)-2546
+56787 y Fa(576)-2546 58115 y(577)2490 b Fi(/*)582 b(If)f(isuby)h(<)f
+(NPEY-1,)i(receive)f(data)g(for)f(top)h(x-line)g(of)f(uext)h(*/)-2546
+59444 y Fa(578)2490 b Fi(if)582 b(\(isuby)g(!=)f(NPEY-1\))h({)-2546
+60772 y Fa(579)3653 b Fi(offsetue)582 b(=)f(NVARS*\(1)i(+)e
+(\(MYSUB+1\)*\(MXSUB+2\)\);)-2546 62100 y Fa(580)3653
+b Fi(MPI_Irecv\(&uext[offsetue],)585 b(dsizex,)d(PVEC_REAL_MPI_TYPE,)
+-2546 63429 y Fa(581)25155 b Fi(my_pe+NPEX,)583 b(0,)e(comm,)h
+(&request[1]\);)-2546 64757 y Fa(582)2490 b Fi(})-2546
+66086 y Fa(583)-2546 67414 y(584)g Fi(/*)582 b(If)f(isubx)h(>)f(0,)h
+(receive)g(data)g(for)f(left)h(y-line)g(of)g(uext)f(\(via)h(bufleft\))g
+(*/)-2546 68742 y Fa(585)2490 b Fi(if)582 b(\(isubx)g(!=)f(0\))h({)
+-2546 70071 y Fa(586)3653 b Fi(MPI_Irecv\(&bufleft[0],)584
+b(dsizey,)e(PVEC_REAL_MPI_TYPE,)-2546 71399 y Fa(587)25155
+b Fi(my_pe-1,)582 b(0,)g(comm,)g(&request[2]\);)-2546
+72727 y Fa(588)2490 b Fi(})-2546 74056 y Fa(589)-2546
+75384 y(590)g Fi(/*)582 b(If)f(isubx)h(<)f(NPEX-1,)i(receive)f(data)g
+(for)f(right)h(y-line)g(of)f(uext)h(\(via)g(bufright\))g(*/)-2546
+76712 y Fa(591)2490 b Fi(if)582 b(\(isubx)g(!=)f(NPEX-1\))h({)-2546
+78041 y Fa(592)3653 b Fi(MPI_Irecv\(&bufright[0],)584
+b(dsizey,)e(PVEC_REAL_MPI_TYPE,)p Black 23394 81741 a
+Fs(74)p Black eop
+%%Page: 75 79
+75 78 bop Black Black 1454 7638 a Fa(593)25155 b Fi(my_pe+1,)582
+b(0,)g(comm,)g(&request[3]\);)1454 8966 y Fa(594)2490
+b Fi(})1454 10295 y Fa(595)1328 b Fi(})1454 11623 y Fa(596)1454
+12951 y(597)g Fi(/*)581 b(Routine)i(to)e(finish)h(receiving)h(boundary)
+f(data)g(from)f(neighboring)i(PEs.)1454 14280 y Fa(598)3071
+b Fi(Notes:)1454 15608 y Fa(599)g Fi(1\))582 b(buffer)g(should)g(be)f
+(able)h(to)g(hold)f(2*NVARS*MYSUB)i(realtype)g(entries,)f(should)g(be)
+1454 16936 y Fa(600)3071 b Fi(passed)582 b(to)g(both)g(the)f(BRecvPost)
+i(and)e(BRecvWait)i(functions,)f(and)g(should)g(not)1454
+18265 y Fa(601)3071 b Fi(be)582 b(manipulated)h(between)f(the)f(two)h
+(calls.)1454 19593 y Fa(602)3071 b Fi(2\))582 b(request)g(should)g
+(have)g(4)f(entries,)i(and)e(should)h(be)g(passed)g(in)f(both)h(calls)g
+(also.)g(*/)1454 20922 y Fa(603)1454 22250 y(604)1328
+b Fi(static)582 b(void)g(BRecvWait\(MPI_Request)i(request[],)1454
+23578 y Fa(605)14113 b Fi(int)582 b(isubx,)g(int)g(isuby,)1454
+24907 y Fa(606)14113 b Fi(long)582 b(int)g(dsizex,)g(realtype)g
+(uext[],)1454 26235 y Fa(607)14113 b Fi(realtype)583
+b(buffer[]\))1454 27563 y Fa(608)1328 b Fi({)1454 28892
+y Fa(609)2490 b Fi(int)582 b(i,)f(ly;)1454 30220 y Fa(610)2490
+b Fi(long)582 b(int)g(dsizex2,)g(offsetue,)g(offsetbuf;)1454
+31548 y Fa(611)2490 b Fi(realtype)583 b(*bufleft)f(=)f(buffer,)h
+(*bufright)h(=)e(buffer+NVARS*MYSUB;)1454 32877 y Fa(612)2490
+b Fi(MPI_Status)583 b(status;)1454 34205 y Fa(613)1454
+35533 y(614)2490 b Fi(dsizex2)582 b(=)g(dsizex)g(+)f(2*NVARS;)1454
+36862 y Fa(615)1454 38190 y(616)2490 b Fi(/*)582 b(If)f(isuby)h(>)f(0,)
+h(receive)g(data)g(for)f(bottom)h(x-line)g(of)g(uext)g(*/)1454
+39518 y Fa(617)2490 b Fi(if)582 b(\(isuby)g(!=)f(0\))1454
+40847 y Fa(618)3653 b Fi(MPI_Wait\(&request[0],&status\);)1454
+42175 y Fa(619)1454 43504 y(620)2490 b Fi(/*)582 b(If)f(isuby)h(<)f
+(NPEY-1,)i(receive)f(data)g(for)f(top)h(x-line)g(of)f(uext)h(*/)1454
+44832 y Fa(621)2490 b Fi(if)582 b(\(isuby)g(!=)f(NPEY-1\))1454
+46160 y Fa(622)3653 b Fi(MPI_Wait\(&request[1],&status\);)1454
+47489 y Fa(623)1454 48817 y(624)2490 b Fi(/*)582 b(If)f(isubx)h(>)f(0,)
+h(receive)g(data)g(for)f(left)h(y-line)g(of)g(uext)f(\(via)h(bufleft\))
+g(*/)1454 50145 y Fa(625)2490 b Fi(if)582 b(\(isubx)g(!=)f(0\))h({)1454
+51474 y Fa(626)3653 b Fi(MPI_Wait\(&request[2],&status\);)1454
+52802 y Fa(627)1454 54130 y(628)g Fi(/*)581 b(Copy)h(the)f(buffer)h(to)
+g(uext)g(*/)1454 55459 y Fa(629)3653 b Fi(for)581 b(\(ly)h(=)f(0;)h(ly)
+f(<)g(MYSUB;)h(ly++\))g({)1454 56787 y Fa(630)4815 b
+Fi(offsetbuf)582 b(=)g(ly*NVARS;)1454 58115 y Fa(631)4815
+b Fi(offsetue)582 b(=)g(\(ly+1\)*dsizex2;)1454 59444
+y Fa(632)4815 b Fi(for)581 b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)h(i++\))1454
+60772 y Fa(633)5977 b Fi(uext[offsetue+i])584 b(=)d
+(bufleft[offsetbuf+i];)1454 62100 y Fa(634)3653 b Fi(})1454
+63429 y Fa(635)2490 b Fi(})1454 64757 y Fa(636)1454 66086
+y(637)g Fi(/*)582 b(If)f(isubx)h(<)f(NPEX-1,)i(receive)f(data)g(for)f
+(right)h(y-line)g(of)f(uext)h(\(via)g(bufright\))g(*/)1454
+67414 y Fa(638)2490 b Fi(if)582 b(\(isubx)g(!=)f(NPEX-1\))h({)1454
+68742 y Fa(639)3653 b Fi(MPI_Wait\(&request[3],&status\);)1454
+70071 y Fa(640)1454 71399 y(641)g Fi(/*)581 b(Copy)h(the)f(buffer)h(to)
+g(uext)g(*/)1454 72727 y Fa(642)3653 b Fi(for)581 b(\(ly)h(=)f(0;)h(ly)
+f(<)g(MYSUB;)h(ly++\))g({)1454 74056 y Fa(643)4815 b
+Fi(offsetbuf)582 b(=)g(ly*NVARS;)1454 75384 y Fa(644)4815
+b Fi(offsetue)582 b(=)g(\(ly+2\)*dsizex2)h(-)e(NVARS;)1454
+76712 y Fa(645)4815 b Fi(for)581 b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)h
+(i++\))1454 78041 y Fa(646)5977 b Fi(uext[offsetue+i])584
+b(=)d(bufright[offsetbuf+i];)p Black 27394 81741 a Fs(75)p
+Black eop
+%%Page: 76 80
+76 79 bop Black Black -2546 7638 a Fa(647)3653 b Fi(})-2546
+8966 y Fa(648)2490 b Fi(})-2546 10295 y Fa(649)1328 b
+Fi(})-2546 11623 y Fa(650)-2546 12951 y(651)g Fi(/*)581
+b(ucomm)h(routine.)1164 b(This)582 b(routine)g(performs)g(all)g
+(communication)-2546 14280 y Fa(652)3071 b Fi(between)583
+b(processors)f(of)g(data)f(needed)i(to)e(calculate)h(f.)g(*/)-2546
+15608 y Fa(653)-2546 16936 y(654)1328 b Fi(static)582
+b(void)g(ucomm\(realtype)h(t,)e(N_Vector)i(u,)e(UserData)i(data\))-2546
+18265 y Fa(655)1328 b Fi({)-2546 19593 y Fa(656)-2546
+20922 y(657)2490 b Fi(realtype)583 b(*udata,)f(*uext,)g
+(buffer[2*NVARS*MYSUB];)-2546 22250 y Fa(658)2490 b Fi(MPI_Comm)583
+b(comm;)-2546 23578 y Fa(659)2490 b Fi(int)582 b(my_pe,)g(isubx,)g
+(isuby;)-2546 24907 y Fa(660)2490 b Fi(long)582 b(int)g(nvmxsub,)g
+(nvmysub;)-2546 26235 y Fa(661)2490 b Fi(MPI_Request)583
+b(request[4];)-2546 27563 y Fa(662)-2546 28892 y(663)2490
+b Fi(udata)582 b(=)f(NV_DATA_P\(u\);)-2546 30220 y Fa(664)-2546
+31548 y(665)2490 b Fi(/*)582 b(Get)f(comm,)h(my_pe,)g(subgrid)g
+(indices,)h(data)f(sizes,)g(extended)g(array)g(uext)g(*/)-2546
+32877 y Fa(666)2490 b Fi(comm)582 b(=)f(data->comm;)1164
+b(my_pe)582 b(=)f(data->my_pe;)-2546 34205 y Fa(667)2490
+b Fi(isubx)582 b(=)f(data->isubx;)1746 b(isuby)582 b(=)f(data->isuby;)
+-2546 35533 y Fa(668)2490 b Fi(nvmxsub)582 b(=)g(data->nvmxsub;)-2546
+36862 y Fa(669)2490 b Fi(nvmysub)582 b(=)g(NVARS*MYSUB;)-2546
+38190 y Fa(670)2490 b Fi(uext)582 b(=)f(data->uext;)-2546
+39518 y Fa(671)-2546 40847 y(672)2490 b Fi(/*)582 b(Start)g(receiving)g
+(boundary)g(data)g(from)g(neighboring)h(PEs)e(*/)-2546
+42175 y Fa(673)2490 b Fi(BRecvPost\(comm,)584 b(request,)e(my_pe,)g
+(isubx,)g(isuby,)g(nvmxsub,)g(nvmysub,)h(uext,)f(buffer\);)-2546
+43504 y Fa(674)-2546 44832 y(675)2490 b Fi(/*)582 b(Send)f(data)h(from)
+g(boundary)g(of)g(local)g(grid)f(to)h(neighboring)h(PEs)e(*/)-2546
+46160 y Fa(676)2490 b Fi(BSend\(comm,)583 b(my_pe,)f(isubx,)g(isuby,)g
+(nvmxsub,)h(nvmysub,)f(udata\);)-2546 47489 y Fa(677)-2546
+48817 y(678)2490 b Fi(/*)582 b(Finish)g(receiving)g(boundary)h(data)e
+(from)h(neighboring)h(PEs)e(*/)-2546 50145 y Fa(679)2490
+b Fi(BRecvWait\(request,)584 b(isubx,)e(isuby,)g(nvmxsub,)h(uext,)e
+(buffer\);)-2546 51474 y Fa(680)1328 b Fi(})-2546 52802
+y Fa(681)-2546 54130 y(682)g Fi(/*)581 b(fcalc)h(routine.)h(Compute)f
+(f\(t,y\).)1163 b(This)582 b(routine)g(assumes)g(that)g(communication)
+-2546 55459 y Fa(683)3071 b Fi(between)583 b(processors)f(of)g(data)f
+(needed)i(to)e(calculate)h(f)g(has)f(already)i(been)e(done,)-2546
+56787 y Fa(684)3071 b Fi(and)582 b(this)g(data)g(is)f(in)g(the)h(work)g
+(array)g(uext.)g(*/)-2546 58115 y Fa(685)-2546 59444
+y(686)1328 b Fi(static)582 b(void)g(fcalc\(realtype)h(t,)e(realtype)i
+(udata[],)-2546 60772 y Fa(687)11789 b Fi(realtype)582
+b(dudata[],)h(UserData)f(data\))-2546 62100 y Fa(688)1328
+b Fi({)-2546 63429 y Fa(689)2490 b Fi(realtype)583 b(*uext;)-2546
+64757 y Fa(690)2490 b Fi(realtype)583 b(q3,)e(c1,)h(c2,)f(c1dn,)h
+(c2dn,)g(c1up,)g(c2up,)g(c1lt,)g(c2lt;)-2546 66086 y
+Fa(691)2490 b Fi(realtype)583 b(c1rt,)f(c2rt,)f(cydn,)h(cyup,)g(hord1,)
+g(hord2,)g(horad1,)g(horad2;)-2546 67414 y Fa(692)2490
+b Fi(realtype)583 b(qq1,)e(qq2,)h(qq3,)g(qq4,)g(rkin1,)g(rkin2,)g(s,)f
+(vertd1,)h(vertd2,)h(ydn,)e(yup;)-2546 68742 y Fa(693)2490
+b Fi(realtype)583 b(q4coef,)f(dely,)g(verdco,)g(hordco,)g(horaco;)-2546
+70071 y Fa(694)2490 b Fi(int)582 b(i,)f(lx,)h(ly,)g(jx,)f(jy;)-2546
+71399 y Fa(695)2490 b Fi(int)582 b(isubx,)g(isuby;)-2546
+72727 y Fa(696)2490 b Fi(long)582 b(int)g(nvmxsub,)g(nvmxsub2,)g
+(offsetu,)h(offsetue;)-2546 74056 y Fa(697)-2546 75384
+y(698)2490 b Fi(/*)582 b(Get)f(subgrid)i(indices,)f(data)g(sizes,)g
+(extended)g(work)g(array)g(uext)f(*/)-2546 76712 y Fa(699)2490
+b Fi(isubx)582 b(=)f(data->isubx;)1746 b(isuby)582 b(=)f(data->isuby;)
+-2546 78041 y Fa(700)2490 b Fi(nvmxsub)582 b(=)g(data->nvmxsub;)h
+(nvmxsub2)f(=)g(data->nvmxsub2;)p Black 23394 81741 a
+Fs(76)p Black eop
+%%Page: 77 81
+77 80 bop Black Black 1454 7638 a Fa(701)2490 b Fi(uext)582
+b(=)f(data->uext;)1454 8966 y Fa(702)1454 10295 y(703)2490
+b Fi(/*)582 b(Copy)f(local)h(segment)h(of)e(u)g(vector)h(into)g(the)g
+(working)g(extended)g(array)g(uext)g(*/)1454 11623 y
+Fa(704)2490 b Fi(offsetu)582 b(=)g(0;)1454 12951 y Fa(705)2490
+b Fi(offsetue)583 b(=)e(nvmxsub2)h(+)g(NVARS;)1454 14280
+y Fa(706)2490 b Fi(for)582 b(\(ly)f(=)h(0;)f(ly)h(<)f(MYSUB;)h(ly++\))g
+({)1454 15608 y Fa(707)3653 b Fi(for)581 b(\(i)h(=)f(0;)g(i)h(<)f
+(nvmxsub;)h(i++\))g(uext[offsetue+i])i(=)d(udata[offsetu+i];)1454
+16936 y Fa(708)3653 b Fi(offsetu)582 b(=)f(offsetu)h(+)g(nvmxsub;)1454
+18265 y Fa(709)3653 b Fi(offsetue)582 b(=)f(offsetue)i(+)e(nvmxsub2;)
+1454 19593 y Fa(710)2490 b Fi(})1454 20922 y Fa(711)1454
+22250 y(712)g Fi(/*)582 b(To)f(facilitate)i(homogeneous)g(Neumann)f
+(boundary)g(conditions,)h(when)f(this)f(is)1454 23578
+y Fa(713)2490 b Fi(a)582 b(boundary)g(PE,)g(copy)f(data)h(from)g(the)f
+(first)h(interior)h(mesh)e(line)h(of)g(u)f(to)g(uext)h(*/)1454
+24907 y Fa(714)1454 26235 y(715)2490 b Fi(/*)582 b(If)f(isuby)h(=)f(0,)
+h(copy)g(x-line)g(2)f(of)g(u)h(to)f(uext)h(*/)1454 27563
+y Fa(716)2490 b Fi(if)582 b(\(isuby)g(==)f(0\))h({)1454
+28892 y Fa(717)3653 b Fi(for)581 b(\(i)h(=)f(0;)g(i)h(<)f(nvmxsub;)h
+(i++\))g(uext[NVARS+i])h(=)e(udata[nvmxsub+i];)1454 30220
+y Fa(718)2490 b Fi(})1454 31548 y Fa(719)1454 32877 y(720)g
+Fi(/*)582 b(If)f(isuby)h(=)f(NPEY-1,)i(copy)e(x-line)h(MYSUB-1)h(of)e
+(u)g(to)h(uext)f(*/)1454 34205 y Fa(721)2490 b Fi(if)582
+b(\(isuby)g(==)f(NPEY-1\))h({)1454 35533 y Fa(722)3653
+b Fi(offsetu)582 b(=)f(\(MYSUB-2\)*nvmxsub;)1454 36862
+y Fa(723)3653 b Fi(offsetue)582 b(=)f(\(MYSUB+1\)*nvmxsub2)j(+)d
+(NVARS;)1454 38190 y Fa(724)3653 b Fi(for)581 b(\(i)h(=)f(0;)g(i)h(<)f
+(nvmxsub;)h(i++\))g(uext[offsetue+i])i(=)d(udata[offsetu+i];)1454
+39518 y Fa(725)2490 b Fi(})1454 40847 y Fa(726)1454 42175
+y(727)g Fi(/*)582 b(If)f(isubx)h(=)f(0,)h(copy)g(y-line)g(2)f(of)g(u)h
+(to)f(uext)h(*/)1454 43504 y Fa(728)2490 b Fi(if)582
+b(\(isubx)g(==)f(0\))h({)1454 44832 y Fa(729)3653 b Fi(for)581
+b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h(ly++\))g({)1454 46160
+y Fa(730)4815 b Fi(offsetu)582 b(=)f(ly*nvmxsub)i(+)e(NVARS;)1454
+47489 y Fa(731)4815 b Fi(offsetue)582 b(=)g(\(ly+1\)*nvmxsub2;)1454
+48817 y Fa(732)4815 b Fi(for)581 b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)h
+(i++\))g(uext[offsetue+i])i(=)d(udata[offsetu+i];)1454
+50145 y Fa(733)3653 b Fi(})1454 51474 y Fa(734)2490 b
+Fi(})1454 52802 y Fa(735)1454 54130 y(736)g Fi(/*)582
+b(If)f(isubx)h(=)f(NPEX-1,)i(copy)e(y-line)h(MXSUB-1)h(of)e(u)g(to)h
+(uext)f(*/)1454 55459 y Fa(737)2490 b Fi(if)582 b(\(isubx)g(==)f
+(NPEX-1\))h({)1454 56787 y Fa(738)3653 b Fi(for)581 b(\(ly)h(=)f(0;)h
+(ly)f(<)g(MYSUB;)h(ly++\))g({)1454 58115 y Fa(739)4815
+b Fi(offsetu)582 b(=)f(\(ly+1\)*nvmxsub)j(-)d(2*NVARS;)1454
+59444 y Fa(740)4815 b Fi(offsetue)582 b(=)g(\(ly+2\)*nvmxsub2)h(-)e
+(NVARS;)1454 60772 y Fa(741)4815 b Fi(for)581 b(\(i)h(=)f(0;)h(i)f(<)g
+(NVARS;)h(i++\))g(uext[offsetue+i])i(=)d(udata[offsetu+i];)1454
+62100 y Fa(742)3653 b Fi(})1454 63429 y Fa(743)2490 b
+Fi(})1454 64757 y Fa(744)1454 66086 y(745)g Fi(/*)582
+b(Make)f(local)h(copies)g(of)g(problem)g(variables,)h(for)e(efficiency)
+i(*/)1454 67414 y Fa(746)2490 b Fi(dely)582 b(=)f(data->dy;)1454
+68742 y Fa(747)2490 b Fi(verdco)582 b(=)g(data->vdco;)1454
+70071 y Fa(748)2490 b Fi(hordco)1163 b(=)582 b(data->hdco;)1454
+71399 y Fa(749)2490 b Fi(horaco)1163 b(=)582 b(data->haco;)1454
+72727 y Fa(750)1454 74056 y(751)2490 b Fi(/*)582 b(Set)f(diurnal)i
+(rate)e(coefficients)i(as)f(functions)g(of)g(t,)f(and)h(save)f(q4)h(in)
+1454 75384 y Fa(752)2490 b Fi(data)582 b(block)g(for)g(use)f(by)h
+(preconditioner)h(evaluation)f(routine)h(*/)1454 76712
+y Fa(753)2490 b Fi(s)582 b(=)f(sin\(\(data->om\)*t\);)1454
+78041 y Fa(754)2490 b Fi(if)582 b(\(s)f(>)g(RCONST\(0.0\)\))i({)p
+Black 27394 81741 a Fs(77)p Black eop
+%%Page: 78 82
+78 81 bop Black Black -2546 7638 a Fa(755)3653 b Fi(q3)581
+b(=)g(exp\(-A3/s\);)-2546 8966 y Fa(756)3653 b Fi(q4coef)582
+b(=)f(exp\(-A4/s\);)-2546 10295 y Fa(757)2490 b Fi(})582
+b(else)f({)-2546 11623 y Fa(758)3653 b Fi(q3)581 b(=)g(RCONST\(0.0\);)
+-2546 12951 y Fa(759)3653 b Fi(q4coef)582 b(=)f(RCONST\(0.0\);)-2546
+14280 y Fa(760)2490 b Fi(})-2546 15608 y Fa(761)g Fi(data->q4)583
+b(=)e(q4coef;)-2546 16936 y Fa(762)-2546 18265 y(763)2490
+b Fi(/*)582 b(Loop)f(over)h(all)g(grid)g(points)g(in)f(local)h(subgrid)
+g(*/)-2546 19593 y Fa(764)2490 b Fi(for)582 b(\(ly)f(=)h(0;)f(ly)h(<)f
+(MYSUB;)h(ly++\))g({)-2546 20922 y Fa(765)-2546 22250
+y(766)3653 b Fi(jy)581 b(=)g(ly)h(+)f(isuby*MYSUB;)-2546
+23578 y Fa(767)-2546 24907 y(768)3653 b Fi(/*)581 b(Set)h(vertical)g
+(diffusion)g(coefficients)h(at)f(jy)f(+-)h(1/2)f(*/)-2546
+26235 y Fa(769)3653 b Fi(ydn)581 b(=)g(YMIN)h(+)g(\(jy)f(-)g
+(RCONST\(0.5\)\)*dely;)-2546 27563 y Fa(770)3653 b Fi(yup)581
+b(=)g(ydn)h(+)f(dely;)-2546 28892 y Fa(771)3653 b Fi(cydn)581
+b(=)h(verdco*exp\(RCONST\(0.2\)*ydn\);)-2546 30220 y
+Fa(772)3653 b Fi(cyup)581 b(=)h(verdco*exp\(RCONST\(0.2\)*yup\);)-2546
+31548 y Fa(773)3653 b Fi(for)581 b(\(lx)h(=)f(0;)h(lx)f(<)g(MXSUB;)h
+(lx++\))g({)-2546 32877 y Fa(774)-2546 34205 y(775)4815
+b Fi(jx)581 b(=)h(lx)f(+)g(isubx*MXSUB;)-2546 35533 y
+Fa(776)-2546 36862 y(777)4815 b Fi(/*)581 b(Extract)i(c1)e(and)h(c2,)f
+(and)h(set)f(kinetic)i(rate)e(terms)h(*/)-2546 38190
+y Fa(778)4815 b Fi(offsetue)582 b(=)g(\(lx+1\)*NVARS)g(+)g
+(\(ly+1\)*nvmxsub2;)-2546 39518 y Fa(779)4815 b Fi(c1)581
+b(=)h(uext[offsetue];)-2546 40847 y Fa(780)4815 b Fi(c2)581
+b(=)h(uext[offsetue+1];)-2546 42175 y Fa(781)4815 b Fi(qq1)581
+b(=)h(Q1*c1*C3;)-2546 43504 y Fa(782)4815 b Fi(qq2)581
+b(=)h(Q2*c1*c2;)-2546 44832 y Fa(783)4815 b Fi(qq3)581
+b(=)h(q3*C3;)-2546 46160 y Fa(784)4815 b Fi(qq4)581 b(=)h(q4coef*c2;)
+-2546 47489 y Fa(785)4815 b Fi(rkin1)582 b(=)f(-qq1)h(-)f(qq2)h(+)f
+(RCONST\(2.0\)*qq3)i(+)f(qq4;)-2546 48817 y Fa(786)4815
+b Fi(rkin2)582 b(=)f(qq1)h(-)f(qq2)h(-)f(qq4;)-2546 50145
+y Fa(787)-2546 51474 y(788)4815 b Fi(/*)581 b(Set)h(vertical)g
+(diffusion)h(terms)f(*/)-2546 52802 y Fa(789)4815 b Fi(c1dn)582
+b(=)f(uext[offsetue-nvmxsub2];)-2546 54130 y Fa(790)4815
+b Fi(c2dn)582 b(=)f(uext[offsetue-nvmxsub2+1];)-2546
+55459 y Fa(791)4815 b Fi(c1up)582 b(=)f(uext[offsetue+nvmxsub2];)-2546
+56787 y Fa(792)4815 b Fi(c2up)582 b(=)f(uext[offsetue+nvmxsub2+1];)
+-2546 58115 y Fa(793)4815 b Fi(vertd1)582 b(=)f(cyup*\(c1up)i(-)e(c1\))
+h(-)f(cydn*\(c1)h(-)g(c1dn\);)-2546 59444 y Fa(794)4815
+b Fi(vertd2)582 b(=)f(cyup*\(c2up)i(-)e(c2\))h(-)f(cydn*\(c2)h(-)g
+(c2dn\);)-2546 60772 y Fa(795)-2546 62100 y(796)4815
+b Fi(/*)581 b(Set)h(horizontal)h(diffusion)f(and)g(advection)g(terms)g
+(*/)-2546 63429 y Fa(797)4815 b Fi(c1lt)582 b(=)f(uext[offsetue-2];)
+-2546 64757 y Fa(798)4815 b Fi(c2lt)582 b(=)f(uext[offsetue-1];)-2546
+66086 y Fa(799)4815 b Fi(c1rt)582 b(=)f(uext[offsetue+2];)-2546
+67414 y Fa(800)4815 b Fi(c2rt)582 b(=)f(uext[offsetue+3];)-2546
+68742 y Fa(801)4815 b Fi(hord1)582 b(=)f(hordco*\(c1rt)i(-)e
+(RCONST\(2.0\)*c1)j(+)d(c1lt\);)-2546 70071 y Fa(802)4815
+b Fi(hord2)582 b(=)f(hordco*\(c2rt)i(-)e(RCONST\(2.0\)*c2)j(+)d
+(c2lt\);)-2546 71399 y Fa(803)4815 b Fi(horad1)582 b(=)f(horaco*\(c1rt)
+i(-)e(c1lt\);)-2546 72727 y Fa(804)4815 b Fi(horad2)582
+b(=)f(horaco*\(c2rt)i(-)e(c2lt\);)-2546 74056 y Fa(805)-2546
+75384 y(806)4815 b Fi(/*)581 b(Load)h(all)g(terms)g(into)f(dudata)h(*/)
+-2546 76712 y Fa(807)4815 b Fi(offsetu)582 b(=)f(lx*NVARS)i(+)e
+(ly*nvmxsub;)-2546 78041 y Fa(808)4815 b Fi(dudata[offsetu])1746
+b(=)581 b(vertd1)h(+)f(hord1)h(+)f(horad1)h(+)g(rkin1;)p
+Black 23394 81741 a Fs(78)p Black eop
+%%Page: 79 83
+79 82 bop Black Black 1454 7638 a Fa(809)4815 b Fi(dudata[offsetu+1])
+584 b(=)d(vertd2)h(+)f(hord2)h(+)f(horad2)h(+)g(rkin2;)1454
+8966 y Fa(810)3653 b Fi(})1454 10295 y Fa(811)2490 b
+Fi(})1454 11623 y Fa(812)1328 b Fi(})1454 12951 y Fa(813)1454
+14280 y(814)1454 15608 y(815)g Fi(/*****************)584
+b(Functions)e(Called)g(by)g(the)f(Solver)h(*************************/)
+1454 16936 y Fa(816)1454 18265 y(817)1328 b Fi(/*)581
+b(f)h(routine.)1163 b(Evaluate)583 b(f\(t,y\).)1163 b(First)582
+b(call)g(ucomm)f(to)h(do)f(communication)i(of)1454 19593
+y Fa(818)3071 b Fi(subgrid)583 b(boundary)f(data)g(into)f(uext.)1164
+b(Then)581 b(calculate)i(f)e(by)g(a)h(call)g(to)f(fcalc.)h(*/)1454
+20922 y Fa(819)1454 22250 y(820)1328 b Fi(static)582
+b(void)g(f\(realtype)g(t,)g(N_Vector)g(u,)g(N_Vector)g(udot,)g(void)g
+(*f_data\))1454 23578 y Fa(821)1328 b Fi({)1454 24907
+y Fa(822)2490 b Fi(realtype)583 b(*udata,)f(*dudata;)1454
+26235 y Fa(823)2490 b Fi(UserData)583 b(data;)1454 27563
+y Fa(824)1454 28892 y(825)2490 b Fi(udata)582 b(=)f(NV_DATA_P\(u\);)
+1454 30220 y Fa(826)2490 b Fi(dudata)582 b(=)g(NV_DATA_P\(udot\);)1454
+31548 y Fa(827)2490 b Fi(data)582 b(=)f(\(UserData\))i(f_data;)1454
+32877 y Fa(828)1454 34205 y(829)2490 b Fi(/*)582 b(Call)f(ucomm)h(to)g
+(do)f(inter-processor)j(communication)f(*/)1454 35533
+y Fa(830)2490 b Fi(ucomm)582 b(\(t,)g(u,)f(data\);)1454
+36862 y Fa(831)1454 38190 y(832)2490 b Fi(/*)582 b(Call)f(fcalc)h(to)g
+(calculate)g(all)g(right-hand)h(sides)e(*/)1454 39518
+y Fa(833)2490 b Fi(fcalc)582 b(\(t,)g(udata,)g(dudata,)g(data\);)1454
+40847 y Fa(834)1328 b Fi(})1454 42175 y Fa(835)1454 43504
+y(836)g Fi(/*)581 b(Preconditioner)j(setup)e(routine.)g(Generate)g(and)
+g(preprocess)g(P.)g(*/)1454 44832 y Fa(837)1328 b Fi(static)582
+b(int)g(Precond\(realtype)h(tn,)f(N_Vector)g(u,)g(N_Vector)g(fu,)1454
+46160 y Fa(838)12370 b Fi(booleantype)583 b(jok,)e(booleantype)i
+(*jcurPtr,)1454 47489 y Fa(839)12370 b Fi(realtype)582
+b(gamma,)g(void)g(*P_data,)1454 48817 y Fa(840)12370
+b Fi(N_Vector)582 b(vtemp1,)g(N_Vector)h(vtemp2,)f(N_Vector)g(vtemp3\))
+1454 50145 y Fa(841)1328 b Fi({)1454 51474 y Fa(842)2490
+b Fi(realtype)583 b(c1,)e(c2,)h(cydn,)g(cyup,)g(diag,)g(ydn,)f(yup,)h
+(q4coef,)g(dely,)g(verdco,)g(hordco;)1454 52802 y Fa(843)2490
+b Fi(realtype)583 b(**\(*P\)[MYSUB],)g(**\(*Jbd\)[MYSUB];)1454
+54130 y Fa(844)2490 b Fi(long)582 b(int)g(nvmxsub,)g
+(*\(*pivot\)[MYSUB],)i(ier,)d(offset;)1454 55459 y Fa(845)2490
+b Fi(int)582 b(lx,)f(ly,)h(jx,)g(jy,)f(isubx,)h(isuby;)1454
+56787 y Fa(846)2490 b Fi(realtype)583 b(*udata,)f(**a,)g(**j;)1454
+58115 y Fa(847)2490 b Fi(PreconData)583 b(predata;)1454
+59444 y Fa(848)2490 b Fi(UserData)583 b(data;)1454 60772
+y Fa(849)1454 62100 y(850)2490 b Fi(/*)582 b(Make)f(local)h(copies)g
+(of)g(pointers)g(in)g(P_data,)g(pointer)g(to)f(u's)h(data,)1454
+63429 y Fa(851)4234 b Fi(and)581 b(PE)h(index)g(pair)f(*/)1454
+64757 y Fa(852)2490 b Fi(predata)582 b(=)g(\(PreconData\))h(P_data;)
+1454 66086 y Fa(853)2490 b Fi(data)582 b(=)f(\(UserData\))i
+(\(predata->f_data\);)1454 67414 y Fa(854)2490 b Fi(P)582
+b(=)f(predata->P;)1454 68742 y Fa(855)2490 b Fi(Jbd)582
+b(=)f(predata->Jbd;)1454 70071 y Fa(856)2490 b Fi(pivot)582
+b(=)f(predata->pivot;)1454 71399 y Fa(857)2490 b Fi(udata)582
+b(=)f(NV_DATA_P\(u\);)1454 72727 y Fa(858)2490 b Fi(isubx)582
+b(=)f(data->isubx;)1746 b(isuby)582 b(=)f(data->isuby;)1454
+74056 y Fa(859)2490 b Fi(nvmxsub)582 b(=)g(data->nvmxsub;)1454
+75384 y Fa(860)1454 76712 y(861)2490 b Fi(if)582 b(\(jok\))g({)1454
+78041 y Fa(862)p Black 27394 81741 a Fs(79)p Black eop
+%%Page: 80 84
+80 83 bop Black Black -2546 7638 a Fa(863)2490 b Fi(/*)582
+b(jok)f(=)h(TRUE:)g(Copy)f(Jbd)h(to)f(P)h(*/)-2546 8966
+y Fa(864)3653 b Fi(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h(ly++\))
+-2546 10295 y Fa(865)4815 b Fi(for)581 b(\(lx)h(=)f(0;)h(lx)f(<)h
+(MXSUB;)g(lx++\))-2546 11623 y Fa(866)5977 b Fi(dencopy\(Jbd[lx][ly],)
+584 b(P[lx][ly],)f(NVARS\);)-2546 12951 y Fa(867)-2546
+14280 y(868)2490 b Fi(*jcurPtr)583 b(=)e(FALSE;)-2546
+15608 y Fa(869)-2546 16936 y(870)2490 b Fi(})-2546 18265
+y Fa(871)-2546 19593 y(872)g Fi(else)582 b({)-2546 20922
+y Fa(873)-2546 22250 y(874)2490 b Fi(/*)582 b(jok)f(=)h(FALSE:)g
+(Generate)g(Jbd)g(from)f(scratch)i(and)e(copy)h(to)f(P)h(*/)-2546
+23578 y Fa(875)-2546 24907 y(876)2490 b Fi(/*)582 b(Make)f(local)h
+(copies)g(of)g(problem)g(variables,)h(for)e(efficiency)i(*/)-2546
+26235 y Fa(877)2490 b Fi(q4coef)582 b(=)g(data->q4;)-2546
+27563 y Fa(878)2490 b Fi(dely)582 b(=)f(data->dy;)-2546
+28892 y Fa(879)2490 b Fi(verdco)582 b(=)g(data->vdco;)-2546
+30220 y Fa(880)2490 b Fi(hordco)1163 b(=)582 b(data->hdco;)-2546
+31548 y Fa(881)-2546 32877 y(882)2490 b Fi(/*)582 b(Compute)g(2x2)g
+(diagonal)g(Jacobian)g(blocks)g(\(using)g(q4)g(values)-2546
+34205 y Fa(883)4234 b Fi(computed)582 b(on)g(the)f(last)h(f)f(call\).)
+1163 b(Load)582 b(into)g(P.)f(*/)-2546 35533 y Fa(884)3653
+b Fi(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h(ly++\))g({)-2546
+36862 y Fa(885)4815 b Fi(jy)581 b(=)h(ly)f(+)g(isuby*MYSUB;)-2546
+38190 y Fa(886)4815 b Fi(ydn)581 b(=)h(YMIN)g(+)f(\(jy)g(-)h
+(RCONST\(0.5\)\)*dely;)-2546 39518 y Fa(887)4815 b Fi(yup)581
+b(=)h(ydn)f(+)h(dely;)-2546 40847 y Fa(888)4815 b Fi(cydn)582
+b(=)f(verdco*exp\(RCONST\(0.2\)*ydn\);)-2546 42175 y
+Fa(889)4815 b Fi(cyup)582 b(=)f(verdco*exp\(RCONST\(0.2\)*yup\);)-2546
+43504 y Fa(890)4815 b Fi(diag)582 b(=)f(-\(cydn)h(+)f(cyup)h(+)f
+(RCONST\(2.0\)*hordco\);)-2546 44832 y Fa(891)4815 b
+Fi(for)581 b(\(lx)h(=)f(0;)h(lx)f(<)h(MXSUB;)g(lx++\))g({)-2546
+46160 y Fa(892)5977 b Fi(jx)582 b(=)f(lx)g(+)h(isubx*MXSUB;)-2546
+47489 y Fa(893)5977 b Fi(offset)582 b(=)g(lx*NVARS)g(+)f(ly*nvmxsub;)
+-2546 48817 y Fa(894)5977 b Fi(c1)582 b(=)f(udata[offset];)-2546
+50145 y Fa(895)5977 b Fi(c2)582 b(=)f(udata[offset+1];)-2546
+51474 y Fa(896)5977 b Fi(j)581 b(=)h(Jbd[lx][ly];)-2546
+52802 y Fa(897)5977 b Fi(a)581 b(=)h(P[lx][ly];)-2546
+54130 y Fa(898)5977 b Fi(IJth\(j,1,1\))583 b(=)e(\(-Q1*C3)h(-)g
+(Q2*c2\))g(+)f(diag;)-2546 55459 y Fa(899)5977 b Fi(IJth\(j,1,2\))583
+b(=)e(-Q2*c1)h(+)g(q4coef;)-2546 56787 y Fa(900)5977
+b Fi(IJth\(j,2,1\))583 b(=)e(Q1*C3)h(-)f(Q2*c2;)-2546
+58115 y Fa(901)5977 b Fi(IJth\(j,2,2\))583 b(=)e(\(-Q2*c1)h(-)g
+(q4coef\))g(+)f(diag;)-2546 59444 y Fa(902)5977 b Fi(dencopy\(j,)583
+b(a,)e(NVARS\);)-2546 60772 y Fa(903)4815 b Fi(})-2546
+62100 y Fa(904)3653 b Fi(})-2546 63429 y Fa(905)-2546
+64757 y(906)2490 b Fi(*jcurPtr)583 b(=)e(TRUE;)-2546
+66086 y Fa(907)-2546 67414 y(908)2490 b Fi(})-2546 68742
+y Fa(909)-2546 70071 y(910)g Fi(/*)582 b(Scale)g(by)f(-gamma)h(*/)-2546
+71399 y Fa(911)3653 b Fi(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))-2546 72727 y Fa(912)4815 b Fi(for)581 b(\(lx)h(=)f(0;)h(lx)f
+(<)h(MXSUB;)g(lx++\))-2546 74056 y Fa(913)5977 b Fi(denscale\(-gamma,)
+584 b(P[lx][ly],)e(NVARS\);)-2546 75384 y Fa(914)-2546
+76712 y(915)2490 b Fi(/*)582 b(Add)f(identity)i(matrix)f(and)f(do)h(LU)
+f(decompositions)i(on)f(blocks)g(in)f(place)h(*/)-2546
+78041 y Fa(916)2490 b Fi(for)582 b(\(lx)f(=)h(0;)f(lx)h(<)f(MXSUB;)h
+(lx++\))g({)p Black 23394 81741 a Fs(80)p Black eop
+%%Page: 81 85
+81 84 bop Black Black 1454 7638 a Fa(917)3653 b Fi(for)581
+b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h(ly++\))g({)1454 8966
+y Fa(918)4815 b Fi(denaddI\(P[lx][ly],)584 b(NVARS\);)1454
+10295 y Fa(919)4815 b Fi(ier)581 b(=)h(gefa\(P[lx][ly],)h(NVARS,)f
+(pivot[lx][ly]\);)1454 11623 y Fa(920)4815 b Fi(if)581
+b(\(ier)h(!=)g(0\))f(return\(1\);)1454 12951 y Fa(921)3653
+b Fi(})1454 14280 y Fa(922)2490 b Fi(})1454 15608 y Fa(923)1454
+16936 y(924)g Fi(return\(0\);)1454 18265 y Fa(925)1328
+b Fi(})1454 19593 y Fa(926)1454 20922 y(927)g Fi(/*)581
+b(Preconditioner)j(solve)e(routine)g(*/)1454 22250 y
+Fa(928)1328 b Fi(static)582 b(int)g(PSolve\(realtype)h(tn,)f(N_Vector)g
+(u,)f(N_Vector)i(fu,)1454 23578 y Fa(929)11789 b Fi(N_Vector)582
+b(r,)f(N_Vector)i(z,)1454 24907 y Fa(930)11789 b Fi(realtype)582
+b(gamma,)g(realtype)g(delta,)1454 26235 y Fa(931)11789
+b Fi(int)581 b(lr,)h(void)g(*P_data,)g(N_Vector)g(vtemp\))1454
+27563 y Fa(932)1328 b Fi({)1454 28892 y Fa(933)2490 b
+Fi(realtype)583 b(**\(*P\)[MYSUB];)1454 30220 y Fa(934)2490
+b Fi(long)582 b(int)g(nvmxsub,)g(*\(*pivot\)[MYSUB];)1454
+31548 y Fa(935)2490 b Fi(int)582 b(lx,)f(ly;)1454 32877
+y Fa(936)2490 b Fi(realtype)583 b(*zdata,)f(*v;)1454
+34205 y Fa(937)2490 b Fi(PreconData)583 b(predata;)1454
+35533 y Fa(938)2490 b Fi(UserData)583 b(data;)1454 36862
+y Fa(939)1454 38190 y(940)2490 b Fi(/*)582 b(Extract)g(the)g(P)f(and)g
+(pivot)h(arrays)g(from)g(P_data)g(*/)1454 39518 y Fa(941)2490
+b Fi(predata)582 b(=)g(\(PreconData\))h(P_data;)1454
+40847 y Fa(942)2490 b Fi(data)582 b(=)f(\(UserData\))i
+(\(predata->f_data\);)1454 42175 y Fa(943)2490 b Fi(P)582
+b(=)f(predata->P;)1454 43504 y Fa(944)2490 b Fi(pivot)582
+b(=)f(predata->pivot;)1454 44832 y Fa(945)1454 46160
+y(946)2490 b Fi(/*)582 b(Solve)g(the)f(block-diagonal)i(system)g(Px)e
+(=)g(r)h(using)f(LU)h(factors)g(stored)1454 47489 y Fa(947)4234
+b Fi(in)581 b(P)g(and)h(pivot)g(data)g(in)f(pivot,)h(and)g(return)g
+(the)f(solution)i(in)e(z.)1454 48817 y Fa(948)4234 b
+Fi(First)582 b(copy)f(vector)h(r)g(to)f(z.)h(*/)1454
+50145 y Fa(949)2490 b Fi(N_VScale\(RCONST\(1.0\),)585
+b(r,)c(z\);)1454 51474 y Fa(950)1454 52802 y(951)2490
+b Fi(nvmxsub)582 b(=)g(data->nvmxsub;)1454 54130 y Fa(952)2490
+b Fi(zdata)582 b(=)f(NV_DATA_P\(z\);)1454 55459 y Fa(953)1454
+56787 y(954)2490 b Fi(for)582 b(\(lx)f(=)h(0;)f(lx)h(<)f(MXSUB;)h
+(lx++\))g({)1454 58115 y Fa(955)3653 b Fi(for)581 b(\(ly)h(=)f(0;)h(ly)
+f(<)g(MYSUB;)h(ly++\))g({)1454 59444 y Fa(956)4815 b
+Fi(v)581 b(=)g(&\(zdata[lx*NVARS)j(+)d(ly*nvmxsub]\);)1454
+60772 y Fa(957)4815 b Fi(gesl\(P[lx][ly],)583 b(NVARS,)f
+(pivot[lx][ly],)i(v\);)1454 62100 y Fa(958)3653 b Fi(})1454
+63429 y Fa(959)2490 b Fi(})1454 64757 y Fa(960)1454 66086
+y(961)g Fi(return\(0\);)1454 67414 y Fa(962)1328 b Fi(})1454
+68742 y Fa(963)1454 70071 y(964)1454 71399 y(965)g Fi
+(/***********************)585 b(Private)d(Helper)g(Function)g
+(************************/)1454 72727 y Fa(966)1454 74056
+y(967)1328 b Fi(/*)581 b(Check)h(function)h(return)f(value...)1454
+75384 y Fa(968)4234 b Fi(opt)581 b(==)h(0)f(means)h(SUNDIALS)g
+(function)h(allocates)f(memory)g(so)g(check)g(if)1454
+76712 y Fa(969)9464 b Fi(returned)582 b(NULL)g(pointer)1454
+78041 y Fa(970)4234 b Fi(opt)581 b(==)h(1)f(means)h(SUNDIALS)g
+(function)h(returns)f(a)f(flag)h(so)f(check)h(if)p Black
+27394 81741 a Fs(81)p Black eop
+%%Page: 82 86
+82 85 bop Black Black -2546 7638 a Fa(971)9464 b Fi(flag)582
+b(>=)f(0)-2546 8966 y Fa(972)4234 b Fi(opt)581 b(==)h(2)f(means)h
+(function)g(allocates)h(memory)f(so)f(check)h(if)g(returned)-2546
+10295 y Fa(973)9464 b Fi(NULL)582 b(pointer)g(*/)-2546
+11623 y Fa(974)-2546 12951 y(975)1328 b Fi(static)582
+b(int)g(check_flag\(void)h(*flagvalue,)g(char)f(*funcname,)g(int)g
+(opt,)g(int)f(id\))-2546 14280 y Fa(976)1328 b Fi({)-2546
+15608 y Fa(977)2490 b Fi(int)582 b(*errflag;)-2546 16936
+y Fa(978)-2546 18265 y(979)2490 b Fi(/*)582 b(Check)g(if)f(SUNDIALS)h
+(function)h(returned)f(NULL)g(pointer)g(-)f(no)h(memory)g(allocated)g
+(*/)-2546 19593 y Fa(980)2490 b Fi(if)582 b(\(opt)f(==)h(0)f(&&)h
+(flagvalue)g(==)g(NULL\))g({)-2546 20922 y Fa(981)3653
+b Fi(fprintf\(stderr,)583 b("\\nSUNDIALS_ERROR\(\045d\):)h(\045s\(\))e
+(failed)g(-)f(returned)i(NULL)f(pointer\\n\\n",)-2546
+22250 y Fa(982)8302 b Fi(id,)581 b(funcname\);)-2546
+23578 y Fa(983)3653 b Fi(return\(1\);)582 b(})-2546 24907
+y Fa(984)-2546 26235 y(985)2490 b Fi(/*)582 b(Check)g(if)f(flag)h(<)f
+(0)g(*/)-2546 27563 y Fa(986)2490 b Fi(else)582 b(if)f(\(opt)h(==)g
+(1\))f({)-2546 28892 y Fa(987)3653 b Fi(errflag)582 b(=)f(\(int)h(*\))f
+(flagvalue;)-2546 30220 y Fa(988)3653 b Fi(if)581 b(\(*errflag)i(<)e
+(0\))g({)-2546 31548 y Fa(989)4815 b Fi(fprintf\(stderr,)583
+b("\\nSUNDIALS_ERROR\(\045d\):)i(\045s\(\))c(failed)h(with)g(flag)g(=)f
+(\045d\\n\\n",)-2546 32877 y Fa(990)9464 b Fi(id,)582
+b(funcname,)g(*errflag\);)-2546 34205 y Fa(991)4815 b
+Fi(return\(1\);)583 b(}})-2546 35533 y Fa(992)-2546 36862
+y(993)2490 b Fi(/*)582 b(Check)g(if)f(function)h(returned)h(NULL)f
+(pointer)g(-)f(no)g(memory)h(allocated)h(*/)-2546 38190
+y Fa(994)2490 b Fi(else)582 b(if)f(\(opt)h(==)g(2)f(&&)g(flagvalue)i
+(==)e(NULL\))h({)-2546 39518 y Fa(995)3653 b Fi(fprintf\(stderr,)583
+b("\\nMEMORY_ERROR\(\045d\):)h(\045s\(\))e(failed)g(-)f(returned)i
+(NULL)e(pointer\\n\\n",)-2546 40847 y Fa(996)8302 b Fi(id,)581
+b(funcname\);)-2546 42175 y Fa(997)3653 b Fi(return\(1\);)582
+b(})-2546 43504 y Fa(998)-2546 44832 y(999)2490 b Fi(return\(0\);)-2952
+46160 y Fa(1000)1328 b Fi(})p Black 23394 81741 a Fs(82)p
+Black eop
+%%Page: 83 87
+83 86 bop Black Black 4000 7638 a Fr(F)1794 b(Listing)599
+b(of)e Fb(pvkxb.c)2266 10674 y Fa(1)1328 b Fi(/*)2266
+12003 y Fa(2)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)2266
+13331 y Fa(3)1909 b Fi(*)581 b($Revision: 1.1 $)2266
+14659 y Fa(4)1909 b Fi(*)581 b($Date: 2005/10/27 13:20:41 $)2266
+15988 y Fa(5)1909 b Fi(*)581 b
+(-----------------------------------------------------------------)2266
+17316 y Fa(6)1909 b Fi(*)581 b(Programmer\(s\):)j(S.)d(D.)h(Cohen,)g
+(A.)f(C.)h(Hindmarsh,)g(M.)g(R.)f(Wittman,)h(and)2266
+18645 y Fa(7)1909 b Fi(*)9299 b(Radu)581 b(Serban)1164
+b(@)581 b(LLNL)2266 19973 y Fa(8)1909 b Fi(*)581 b
+(-------------------------------------------------------------------)p
+(-)2266 21301 y Fa(9)1909 b Fi(*)581 b(Example)i(problem:)1860
+22630 y Fa(10)1909 b Fi(*)1860 23958 y Fa(11)g Fi(*)581
+b(An)h(ODE)f(system)i(is)e(generated)h(from)g(the)g(following)g
+(2-species)h(diurnal)1860 25286 y Fa(12)1909 b Fi(*)581
+b(kinetics)i(advection-diffusion)h(PDE)d(system)h(in)g(2)f(space)h
+(dimensions:)1860 26615 y Fa(13)1909 b Fi(*)1860 27943
+y Fa(14)g Fi(*)581 b(dc\(i\)/dt)i(=)e(Kh*\(d/dx\)^2)i(c\(i\))f(+)f
+(V*dc\(i\)/dx)i(+)e(\(d/dy\)\(Kv\(y\)*dc\(i\)/dy\))1860
+29271 y Fa(15)1909 b Fi(*)9880 b(+)581 b(Ri\(c1,c2,t\))3489
+b(for)581 b(i)h(=)f(1,2,)1744 b(where)1860 30600 y Fa(16)1909
+b Fi(*)1744 b(R1\(c1,c2,t\))583 b(=)e(-q1*c1*c3)h(-)g(q2*c1*c2)g(+)f
+(2*q3\(t\)*c3)i(+)e(q4\(t\)*c2)i(,)1860 31928 y Fa(17)1909
+b Fi(*)1744 b(R2\(c1,c2,t\))583 b(=)1162 b(q1*c1*c3)582
+b(-)g(q2*c1*c2)g(-)f(q4\(t\)*c2)i(,)1860 33256 y Fa(18)1909
+b Fi(*)1744 b(Kv\(y\))582 b(=)f(Kv0*exp\(y/5\))i(,)1860
+34585 y Fa(19)1909 b Fi(*)581 b(Kh,)h(V,)f(Kv0,)h(q1,)g(q2,)f(and)h(c3)
+f(are)h(constants,)h(and)e(q3\(t\))h(and)g(q4\(t\))1860
+35913 y Fa(20)1909 b Fi(*)581 b(vary)h(diurnally.)h(The)e(problem)i(is)
+e(posed)h(on)f(the)h(square)1860 37241 y Fa(21)1909 b
+Fi(*)1744 b(0)581 b(<=)g(x)h(<=)f(20,)2325 b(30)582 b(<=)f(y)g(<=)h(50)
+1744 b(\(all)581 b(in)h(km\),)1860 38570 y Fa(22)1909
+b Fi(*)581 b(with)h(homogeneous)h(Neumann)f(boundary)h(conditions,)f
+(and)g(for)f(time)h(t)g(in)1860 39898 y Fa(23)1909 b
+Fi(*)1744 b(0)581 b(<=)g(t)h(<=)f(86400)h(sec)g(\(1)f(day\).)1860
+41227 y Fa(24)1909 b Fi(*)581 b(The)h(PDE)g(system)g(is)f(treated)h(by)
+g(central)g(differences)h(on)e(a)g(uniform)1860 42555
+y Fa(25)1909 b Fi(*)581 b(mesh,)h(with)g(simple)g(polynomial)h(initial)
+f(profiles.)1860 43883 y Fa(26)1909 b Fi(*)1860 45212
+y Fa(27)g Fi(*)581 b(The)h(problem)g(is)g(solved)g(by)f(CVODE)h(on)g
+(NPE)f(processors,)i(treated)1860 46540 y Fa(28)1909
+b Fi(*)581 b(as)h(a)f(rectangular)i(process)f(grid)g(of)f(size)h(NPEX)g
+(by)f(NPEY,)h(with)1860 47868 y Fa(29)1909 b Fi(*)581
+b(NPE)h(=)f(NPEX*NPEY.)i(Each)f(processor)g(contains)h(a)e(subgrid)h
+(of)f(size)h(MXSUB)1860 49197 y Fa(30)1909 b Fi(*)581
+b(by)h(MYSUB)g(of)f(the)h(\(x,y\))g(mesh.)g(Thus)f(the)h(actual)g(mesh)
+g(sizes)g(are)1860 50525 y Fa(31)1909 b Fi(*)581 b(MX)h(=)f(MXSUB*NPEX)
+i(and)e(MY)h(=)f(MYSUB*NPEY,)i(and)f(the)f(ODE)h(system)g(size)g(is)
+1860 51853 y Fa(32)1909 b Fi(*)581 b(neq)h(=)f(2*MX*MY.)1860
+53182 y Fa(33)1909 b Fi(*)1860 54510 y Fa(34)g Fi(*)581
+b(The)h(solution)g(is)g(done)g(with)f(the)h(BDF/GMRES)g(method)g
+(\(i.e.)g(using)g(the)1860 55838 y Fa(35)1909 b Fi(*)581
+b(CVSPGMR)i(linear)f(solver\))g(and)f(a)h(block-diagonal)h(matrix)f
+(with)g(banded)1860 57167 y Fa(36)1909 b Fi(*)581 b(blocks)h(as)g(a)f
+(preconditioner,)j(using)e(the)f(CVBBDPRE)h(module.)1860
+58495 y Fa(37)1909 b Fi(*)581 b(Each)h(block)g(is)g(generated)g(using)g
+(difference)h(quotients,)f(with)1860 59823 y Fa(38)1909
+b Fi(*)581 b(half-bandwidths)j(mudq)e(=)f(mldq)h(=)f(2*MXSUB,)h(but)g
+(the)f(retained)i(banded)1860 61152 y Fa(39)1909 b Fi(*)581
+b(blocks)h(have)g(half-bandwidths)i(mukeep)e(=)f(mlkeep)h(=)f(2.)1860
+62480 y Fa(40)1909 b Fi(*)581 b(A)h(copy)f(of)h(the)g(approximate)g
+(Jacobian)h(is)e(saved)h(and)g(conditionally)1860 63808
+y Fa(41)1909 b Fi(*)581 b(reused)h(within)h(the)e(preconditioner)i
+(routine.)1860 65137 y Fa(42)1909 b Fi(*)1860 66465 y
+Fa(43)g Fi(*)581 b(The)h(problem)g(is)g(solved)g(twice)g(--)f(with)h
+(left)g(and)f(right)h(preconditioning.)1860 67794 y Fa(44)1909
+b Fi(*)1860 69122 y Fa(45)g Fi(*)581 b(Performance)i(data)f(and)g
+(sampled)g(solution)g(values)g(are)g(printed)g(at)1860
+70450 y Fa(46)1909 b Fi(*)581 b(selected)i(output)f(times,)g(and)f(all)
+h(performance)h(counters)f(are)g(printed)1860 71779 y
+Fa(47)1909 b Fi(*)581 b(on)h(completion.)1860 73107 y
+Fa(48)1909 b Fi(*)1860 74435 y Fa(49)g Fi(*)581 b(This)h(version)g
+(uses)g(MPI)g(for)f(user)h(routines.)1860 75764 y Fa(50)1909
+b Fi(*)581 b(Execute)i(with)e(number)h(of)g(processors)h(=)e(NPEX*NPEY)
+h(\(see)g(constants)h(below\).)1860 77092 y Fa(51)1909
+b Fi(*)581 b
+(-------------------------------------------------------------------)p
+(-)1860 78420 y Fa(52)1909 b Fi(*/)p Black 27394 81741
+a Fs(83)p Black eop
+%%Page: 84 88
+84 87 bop Black Black -2140 7638 a Fa(53)-2140 8966 y(54)1328
+b Fi(#include)582 b(<stdio.h>)-2140 10295 y Fa(55)1328
+b Fi(#include)582 b(<stdlib.h>)-2140 11623 y Fa(56)1328
+b Fi(#include)582 b(<math.h>)-2140 12951 y Fa(57)1328
+b Fi(#include)582 b("sundialstypes.h")2909 b(/*)581 b(definition)i(of)e
+(type)h(realtype)9881 b(*/)-2140 14280 y Fa(58)1328 b
+Fi(#include)582 b("sundialsmath.h")3490 b(/*)581 b(definition)i(of)e
+(macro)h(SQR)12205 b(*/)-2140 15608 y Fa(59)1328 b Fi(#include)582
+b("cvode.h")7557 b(/*)581 b(prototypes)i(for)e(CVode*)h(and)g(various)g
+(constants)h(*/)-2140 16936 y Fa(60)1328 b Fi(#include)582
+b("cvspgmr.h")6395 b(/*)581 b(prototypes)i(and)e(constants)i(for)e
+(CVSPGMR)i(solver)f(*/)-2140 18265 y Fa(61)1328 b Fi(#include)582
+b("cvbbdpre.h")5814 b(/*)581 b(prototypes)i(for)e(CVBBDPRE)i(module)
+8137 b(*/)-2140 19593 y Fa(62)1328 b Fi(#include)582
+b("nvector_parallel.h")1166 b(/*)581 b(definition)i(of)e(type)h
+(N_Vector)g(and)g(macro)4069 b(*/)-2140 20922 y Fa(63)19344
+b Fi(/*)581 b(NV_DATA_P)20342 b(*/)-2140 22250 y Fa(64)1328
+b Fi(#include)582 b("mpi.h")8719 b(/*)581 b(MPI)h(constants)g(and)g
+(types)12205 b(*/)-2140 23578 y Fa(65)-2140 24907 y(66)-2140
+26235 y(67)1328 b Fi(/*)581 b(Problem)i(Constants)f(*/)-2140
+27563 y Fa(68)-2140 28892 y(69)1328 b Fi(#define)582
+b(ZERO)5231 b(RCONST\(0.0\))-2140 30220 y Fa(70)-2140
+31548 y(71)1328 b Fi(#define)582 b(NVARS)4650 b(2)9880
+b(/*)581 b(number)h(of)g(species)5231 b(*/)-2140 32877
+y Fa(72)1328 b Fi(#define)582 b(KH)6393 b(RCONST\(4.0e-6\))2327
+b(/*)581 b(horizontal)i(diffusivity)g(Kh)e(*/)-2140 34205
+y Fa(73)1328 b Fi(#define)582 b(VEL)5812 b(RCONST\(0.001\))2908
+b(/*)581 b(advection)i(velocity)f(V)3487 b(*/)-2140 35533
+y Fa(74)1328 b Fi(#define)582 b(KV0)5812 b(RCONST\(1.0e-8\))2327
+b(/*)581 b(coefficient)i(in)e(Kv\(y\))3488 b(*/)-2140
+36862 y Fa(75)1328 b Fi(#define)582 b(Q1)6393 b(RCONST\(1.63e-16\))1165
+b(/*)581 b(coefficients)i(q1,)f(q2,)f(c3)1744 b(*/)-2140
+38190 y Fa(76)1328 b Fi(#define)582 b(Q2)6393 b(RCONST\(4.66e-16\))
+-2140 39518 y Fa(77)1328 b Fi(#define)582 b(C3)6393 b(RCONST\(3.7e16\))
+-2140 40847 y Fa(78)1328 b Fi(#define)582 b(A3)6393 b(RCONST\(22.62\))
+2908 b(/*)581 b(coefficient)i(in)e(expression)i(for)f(q3\(t\))g(*/)
+-2140 42175 y Fa(79)1328 b Fi(#define)582 b(A4)6393 b(RCONST\(7.601\))
+2908 b(/*)581 b(coefficient)i(in)e(expression)i(for)f(q4\(t\))g(*/)
+-2140 43504 y Fa(80)1328 b Fi(#define)582 b(C1_SCALE)2907
+b(RCONST\(1.0e6\))h(/*)581 b(coefficients)i(in)f(initial)g(profiles)
+2326 b(*/)-2140 44832 y Fa(81)1328 b Fi(#define)582 b(C2_SCALE)2907
+b(RCONST\(1.0e12\))-2140 46160 y Fa(82)-2140 47489 y(83)1328
+b Fi(#define)582 b(T0)6393 b(ZERO)9299 b(/*)582 b(initial)g(time)f(*/)
+-2140 48817 y Fa(84)1328 b Fi(#define)582 b(NOUT)5231
+b(12)10461 b(/*)582 b(number)g(of)f(output)h(times)g(*/)-2140
+50145 y Fa(85)1328 b Fi(#define)582 b(TWOHR)4650 b(RCONST\(7200.0\))
+3489 b(/*)582 b(number)g(of)f(seconds)h(in)g(two)f(hours)1163
+b(*/)-2140 51474 y Fa(86)1328 b Fi(#define)582 b(HALFDAY)3488
+b(RCONST\(4.32e4\))h(/*)582 b(number)g(of)f(seconds)h(in)g(a)f(half)h
+(day)f(*/)-2140 52802 y Fa(87)1328 b Fi(#define)582 b(PI)4069
+b(RCONST\(3.1415926535898\))584 b(/*)e(pi)f(*/)-2140
+54130 y Fa(88)-2140 55459 y(89)1328 b Fi(#define)582
+b(XMIN)5231 b(ZERO)9299 b(/*)582 b(grid)f(boundaries)i(in)e(x)1163
+b(*/)-2140 56787 y Fa(90)1328 b Fi(#define)582 b(XMAX)5231
+b(RCONST\(20.0\))-2140 58115 y Fa(91)1328 b Fi(#define)582
+b(YMIN)5231 b(RCONST\(30.0\))4651 b(/*)582 b(grid)f(boundaries)i(in)e
+(y)1163 b(*/)-2140 59444 y Fa(92)1328 b Fi(#define)582
+b(YMAX)5231 b(RCONST\(50.0\))-2140 60772 y Fa(93)-2140
+62100 y(94)1328 b Fi(#define)582 b(NPEX)5231 b(2)8136
+b(/*)582 b(no.)f(PEs)h(in)f(x)h(direction)g(of)g(PE)f(array)h(*/)-2140
+63429 y Fa(95)1328 b Fi(#define)582 b(NPEY)5231 b(2)8136
+b(/*)582 b(no.)f(PEs)h(in)f(y)h(direction)g(of)g(PE)f(array)h(*/)-2140
+64757 y Fa(96)22249 b Fi(/*)582 b(Total)g(no.)f(PEs)h(=)f(NPEX*NPEY)i
+(*/)-2140 66086 y Fa(97)1328 b Fi(#define)582 b(MXSUB)4650
+b(5)8136 b(/*)582 b(no.)f(x)h(points)g(per)f(subgrid)i(*/)-2140
+67414 y Fa(98)1328 b Fi(#define)582 b(MYSUB)4650 b(5)8136
+b(/*)582 b(no.)f(y)h(points)g(per)f(subgrid)i(*/)-2140
+68742 y Fa(99)-2546 70071 y(100)1328 b Fi(#define)582
+b(MX)6393 b(\(NPEX*MXSUB\))1745 b(/*)582 b(MX)f(=)h(number)g(of)f(x)g
+(mesh)h(points)g(*/)-2546 71399 y Fa(101)1328 b Fi(#define)582
+b(MY)6393 b(\(NPEY*MYSUB\))1745 b(/*)582 b(MY)f(=)h(number)g(of)f(y)g
+(mesh)h(points)g(*/)-2546 72727 y Fa(102)22249 b Fi(/*)582
+b(Spatial)g(mesh)g(is)f(MX)h(by)f(MY)h(*/)-2546 74056
+y Fa(103)1328 b Fi(/*)581 b(CVodeMalloc)i(Constants)g(*/)-2546
+75384 y Fa(104)-2546 76712 y(105)1328 b Fi(#define)582
+b(RTOL)2325 b(RCONST\(1.0e-5\))i(/*)582 b(scalar)g(relative)g
+(tolerance)g(*/)-2546 78041 y Fa(106)1328 b Fi(#define)582
+b(FLOOR)1744 b(RCONST\(100.0\))2908 b(/*)582 b(value)f(of)h(C1)f(or)h
+(C2)f(at)h(which)g(tolerances)g(*/)p Black 23394 81741
+a Fs(84)p Black eop
+%%Page: 85 89
+85 88 bop Black Black 1454 7638 a Fa(107)21087 b Fi(/*)582
+b(change)g(from)f(relative)i(to)e(absolute)3488 b(*/)1454
+8966 y Fa(108)1328 b Fi(#define)582 b(ATOL)2325 b(\(RTOL*FLOOR\))3489
+b(/*)582 b(scalar)g(absolute)g(tolerance)g(*/)1454 10295
+y Fa(109)1454 11623 y(110)1328 b Fi(/*)581 b(Type)h(:)f(UserData)1454
+12951 y Fa(111)3071 b Fi(contains)583 b(problem)f(constants,)h
+(extended)f(dependent)g(variable)h(array,)1454 14280
+y Fa(112)3071 b Fi(grid)582 b(constants,)h(processor)f(indices,)h(MPI)e
+(communicator)i(*/)1454 15608 y Fa(113)1454 16936 y(114)1328
+b Fi(typedef)582 b(struct)g({)1454 18265 y Fa(115)2490
+b Fi(realtype)583 b(q4,)e(om,)h(dx,)f(dy,)h(hdco,)g(haco,)g(vdco;)1454
+19593 y Fa(116)2490 b Fi(realtype)583 b
+(uext[NVARS*\(MXSUB+2\)*\(MYSUB+2\)];)1454 20922 y Fa(117)2490
+b Fi(int)582 b(my_pe,)g(isubx,)g(isuby;)1454 22250 y
+Fa(118)2490 b Fi(long)582 b(int)g(nvmxsub,)g(nvmxsub2,)g(Nlocal;)1454
+23578 y Fa(119)2490 b Fi(MPI_Comm)583 b(comm;)1454 24907
+y Fa(120)1328 b Fi(})581 b(*UserData;)1454 26235 y Fa(121)1454
+27563 y(122)1328 b Fi(/*)581 b(Prototypes)i(of)f(private)g(helper)g
+(functions)g(*/)1454 28892 y Fa(123)1454 30220 y(124)1328
+b Fi(static)582 b(void)g(InitUserData\(int)h(my_pe,)f(long)g(int)g
+(local_N,)g(MPI_Comm)g(comm,)1454 31548 y Fa(125)15857
+b Fi(UserData)582 b(data\);)1454 32877 y Fa(126)1328
+b Fi(static)582 b(void)g(SetInitialProfiles\(N_Vector)j(u,)c(UserData)i
+(data\);)1454 34205 y Fa(127)1328 b Fi(static)582 b(void)g
+(PrintIntro\(int)h(npes,)f(long)g(int)f(mudq,)h(long)g(int)f(mldq,)1454
+35533 y Fa(128)14694 b Fi(long)582 b(int)g(mukeep,)g(long)g(int)f
+(mlkeep\);)1454 36862 y Fa(129)1328 b Fi(static)582 b(void)g
+(PrintOutput\(void)h(*cvode_mem,)g(int)f(my_pe,)g(MPI_Comm)g(comm,)1454
+38190 y Fa(130)15276 b Fi(N_Vector)582 b(u,)f(realtype)i(t\);)1454
+39518 y Fa(131)1328 b Fi(static)582 b(void)g(PrintFinalStats\(void)i
+(*cvode_mem,)f(void)e(*pdata\);)1454 40847 y Fa(132)1328
+b Fi(static)582 b(void)g(BSend\(MPI_Comm)h(comm,)1454
+42175 y Fa(133)11789 b Fi(int)581 b(my_pe,)h(int)g(isubx,)g(int)g
+(isuby,)1454 43504 y Fa(134)11789 b Fi(long)581 b(int)h(dsizex,)g(long)
+g(int)g(dsizey,)1454 44832 y Fa(135)11789 b Fi(realtype)582
+b(uarray[]\);)1454 46160 y Fa(136)1328 b Fi(static)582
+b(void)g(BRecvPost\(MPI_Comm)i(comm,)e(MPI_Request)g(request[],)1454
+47489 y Fa(137)14113 b Fi(int)582 b(my_pe,)g(int)g(isubx,)g(int)f
+(isuby,)1454 48817 y Fa(138)14113 b Fi(long)582 b(int)g(dsizex,)g(long)
+g(int)f(dsizey,)1454 50145 y Fa(139)14113 b Fi(realtype)583
+b(uext[],)f(realtype)g(buffer[]\);)1454 51474 y Fa(140)1328
+b Fi(static)582 b(void)g(BRecvWait\(MPI_Request)i(request[],)1454
+52802 y Fa(141)14113 b Fi(int)582 b(isubx,)g(int)g(isuby,)1454
+54130 y Fa(142)14113 b Fi(long)582 b(int)g(dsizex,)g(realtype)g
+(uext[],)1454 55459 y Fa(143)14113 b Fi(realtype)583
+b(buffer[]\);)1454 56787 y Fa(144)1454 58115 y(145)1328
+b Fi(static)582 b(void)g(fucomm\(realtype)h(t,)f(N_Vector)g(u,)f(void)h
+(*f_data\);)1454 59444 y Fa(146)1454 60772 y(147)1328
+b Fi(/*)581 b(Prototype)i(of)e(function)i(called)f(by)f(the)h(solver)g
+(*/)1454 62100 y Fa(148)1454 63429 y(149)1328 b Fi(static)582
+b(void)g(f\(realtype)g(t,)g(N_Vector)g(u,)g(N_Vector)g(udot,)g(void)g
+(*f_data\);)1454 64757 y Fa(150)1454 66086 y(151)1328
+b Fi(/*)581 b(Prototype)i(of)e(functions)i(called)f(by)f(the)h
+(CVBBDPRE)g(module)g(*/)1454 67414 y Fa(152)1454 68742
+y(153)1328 b Fi(static)582 b(void)g(flocal\(long)h(int)e(Nlocal,)h
+(realtype)h(t,)e(N_Vector)h(u,)1454 70071 y Fa(154)12370
+b Fi(N_Vector)582 b(udot,)g(void)g(*f_data\);)1454 71399
+y Fa(155)1454 72727 y(156)1328 b Fi(/*)581 b(Private)i(function)f(to)f
+(check)h(function)h(return)f(values)g(*/)1454 74056 y
+Fa(157)1454 75384 y(158)1328 b Fi(static)582 b(int)g(check_flag\(void)h
+(*flagvalue,)g(char)f(*funcname,)g(int)g(opt,)g(int)f(id\);)1454
+76712 y Fa(159)1454 78041 y(160)1328 b Fi
+(/*****************************)586 b(Main)581 b(Program)i
+(******************************/)p Black 27394 81741
+a Fs(85)p Black eop
+%%Page: 86 90
+86 89 bop Black Black -2546 7638 a Fa(161)-2546 8966
+y(162)1328 b Fi(int)582 b(main\(int)g(argc,)g(char)g(*argv[]\))-2546
+10295 y Fa(163)1328 b Fi({)-2546 11623 y Fa(164)2490
+b Fi(UserData)583 b(data;)-2546 12951 y Fa(165)2490 b
+Fi(void)582 b(*cvode_mem;)-2546 14280 y Fa(166)2490 b
+Fi(void)582 b(*pdata;)-2546 15608 y Fa(167)2490 b Fi(realtype)583
+b(abstol,)f(reltol,)g(t,)f(tout;)-2546 16936 y Fa(168)2490
+b Fi(N_Vector)583 b(u;)-2546 18265 y Fa(169)2490 b Fi(int)582
+b(iout,)g(my_pe,)g(npes,)g(flag,)g(jpre;)-2546 19593
+y Fa(170)2490 b Fi(long)582 b(int)g(neq,)f(local_N,)i(mudq,)f(mldq,)g
+(mukeep,)g(mlkeep;)-2546 20922 y Fa(171)2490 b Fi(MPI_Comm)583
+b(comm;)-2546 22250 y Fa(172)-2546 23578 y(173)2490 b
+Fi(data)582 b(=)f(NULL;)-2546 24907 y Fa(174)2490 b Fi(cvode_mem)583
+b(=)e(pdata)h(=)f(NULL;)-2546 26235 y Fa(175)2490 b Fi(u)582
+b(=)f(NULL;)-2546 27563 y Fa(176)-2546 28892 y(177)2490
+b Fi(/*)582 b(Set)f(problem)i(size)e(neq)h(*/)-2546 30220
+y Fa(178)2490 b Fi(neq)582 b(=)f(NVARS*MX*MY;)-2546 31548
+y Fa(179)-2546 32877 y(180)2490 b Fi(/*)582 b(Get)f(processor)i(number)
+f(and)f(total)h(number)g(of)g(pe's)g(*/)-2546 34205 y
+Fa(181)2490 b Fi(MPI_Init\(&argc,)584 b(&argv\);)-2546
+35533 y Fa(182)2490 b Fi(comm)582 b(=)f(MPI_COMM_WORLD;)-2546
+36862 y Fa(183)2490 b Fi(MPI_Comm_size\(comm,)584 b(&npes\);)-2546
+38190 y Fa(184)2490 b Fi(MPI_Comm_rank\(comm,)584 b(&my_pe\);)-2546
+39518 y Fa(185)-2546 40847 y(186)2490 b Fi(if)582 b(\(npes)g(!=)f
+(NPEX*NPEY\))i({)-2546 42175 y Fa(187)3653 b Fi(if)581
+b(\(my_pe)h(==)g(0\))-2546 43504 y Fa(188)4815 b Fi(fprintf\(stderr,)
+583 b("\\nMPI_ERROR\(0\):)h(npes)e(=)f(\045d)g(is)h(not)f(equal)h(to)g
+(NPEX*NPEY)g(=)f(\045d\\n\\n",)-2546 44832 y Fa(189)9464
+b Fi(npes,)582 b(NPEX*NPEY\);)-2546 46160 y Fa(190)3653
+b Fi(MPI_Finalize\(\);)-2546 47489 y Fa(191)g Fi(return\(1\);)-2546
+48817 y Fa(192)2490 b Fi(})-2546 50145 y Fa(193)-2546
+51474 y(194)g Fi(/*)582 b(Set)f(local)h(length)g(*/)-2546
+52802 y Fa(195)2490 b Fi(local_N)582 b(=)g(NVARS*MXSUB*MYSUB;)-2546
+54130 y Fa(196)-2546 55459 y(197)2490 b Fi(/*)582 b(Allocate)g(and)g
+(load)f(user)h(data)g(block)g(*/)-2546 56787 y Fa(198)2490
+b Fi(data)582 b(=)f(\(UserData\))i(malloc\(sizeof)g(*data\);)-2546
+58115 y Fa(199)2490 b Fi(if\(check_flag\(\(void)584 b(*\)data,)e
+("malloc",)h(2,)e(my_pe\)\))i(MPI_Abort\(comm,)g(1\);)-2546
+59444 y Fa(200)2490 b Fi(InitUserData\(my_pe,)584 b(local_N,)f(comm,)f
+(data\);)-2546 60772 y Fa(201)-2546 62100 y(202)2490
+b Fi(/*)582 b(Allocate)g(and)g(initialize)g(u,)g(and)f(set)h
+(tolerances)h(*/)-2546 63429 y Fa(203)2490 b Fi(u)582
+b(=)f(N_VNew_Parallel\(comm,)j(local_N,)f(neq\);)-2546
+64757 y Fa(204)2490 b Fi(if\(check_flag\(\(void)584 b(*\)u,)e
+("N_VNew_Parallel",)i(0,)d(my_pe\)\))h(MPI_Abort\(comm,)i(1\);)-2546
+66086 y Fa(205)2490 b Fi(SetInitialProfiles\(u,)585 b(data\);)-2546
+67414 y Fa(206)2490 b Fi(abstol)582 b(=)g(ATOL;)-2546
+68742 y Fa(207)2490 b Fi(reltol)582 b(=)g(RTOL;)-2546
+70071 y Fa(208)-2546 71399 y(209)2490 b Fi(/*)-2546 72727
+y Fa(210)4234 b Fi(Call)581 b(CVodeCreate)i(to)f(create)g(the)f(solver)
+h(memory:)-2546 74056 y Fa(211)-2546 75384 y(212)4234
+b Fi(CV_BDF)2906 b(specifies)583 b(the)e(Backward)i(Differentiation)g
+(Formula)-2546 76712 y Fa(213)4234 b Fi(CV_NEWTON)1163
+b(specifies)583 b(a)e(Newton)h(iteration)-2546 78041
+y Fa(214)p Black 23394 81741 a Fs(86)p Black eop
+%%Page: 87 91
+87 90 bop Black Black 1454 7638 a Fa(215)4234 b Fi(A)581
+b(pointer)h(to)g(the)f(integrator)i(memory)f(is)f(returned)i(and)e
+(stored)h(in)g(cvode_mem.)1454 8966 y Fa(216)2490 b Fi(*/)1454
+10295 y Fa(217)1454 11623 y(218)g Fi(cvode_mem)583 b(=)e
+(CVodeCreate\(CV_BDF,)j(CV_NEWTON\);)1454 12951 y Fa(219)2490
+b Fi(if\(check_flag\(\(void)584 b(*\)cvode_mem,)f("CVodeCreate",)g(0,)f
+(my_pe\)\))g(MPI_Abort\(comm,)h(1\);)1454 14280 y Fa(220)1454
+15608 y(221)2490 b Fi(/*)582 b(Set)f(the)h(pointer)g(to)g(user-defined)
+h(data)e(*/)1454 16936 y Fa(222)2490 b Fi(flag)582 b(=)f
+(CVodeSetFdata\(cvode_mem,)k(data\);)1454 18265 y Fa(223)2490
+b Fi(if\(check_flag\(&flag,)584 b("CVodeSetFdata",)g(1,)d(my_pe\)\))i
+(MPI_Abort\(comm,)g(1\);)1454 19593 y Fa(224)1454 20922
+y(225)2490 b Fi(/*)1454 22250 y Fa(226)4234 b Fi(Call)581
+b(CVodeMalloc)i(to)f(initialize)g(the)g(integrator)h(memory:)1454
+23578 y Fa(227)1454 24907 y(228)4234 b Fi(cvode_mem)582
+b(is)g(the)f(pointer)h(to)g(the)g(integrator)g(memory)g(returned)h(by)e
+(CVodeCreate)1454 26235 y Fa(229)4234 b Fi(f)4068 b(is)581
+b(the)h(user's)g(right)g(hand)g(side)f(function)i(in)e(y'=f\(t,y\))1454
+27563 y Fa(230)4234 b Fi(T0)3487 b(is)581 b(the)h(initial)g(time)1454
+28892 y Fa(231)4234 b Fi(u)4068 b(is)581 b(the)h(initial)g(dependent)h
+(variable)f(vector)1454 30220 y Fa(232)4234 b Fi(CV_SS)1744
+b(specifies)582 b(scalar)g(relative)h(and)e(absolute)i(tolerances)1454
+31548 y Fa(233)4234 b Fi(reltol)1163 b(is)581 b(the)h(relative)g
+(tolerance)1454 32877 y Fa(234)4234 b Fi(&abstol)582
+b(is)f(a)h(pointer)g(to)f(the)h(scalar)g(absolute)g(tolerance)1454
+34205 y Fa(235)2490 b Fi(*/)1454 35533 y Fa(236)1454
+36862 y(237)g Fi(flag)582 b(=)f(CVodeMalloc\(cvode_mem,)k(f,)c(T0,)h
+(u,)f(CV_SS,)h(reltol,)g(&abstol\);)1454 38190 y Fa(238)2490
+b Fi(if\(check_flag\(&flag,)584 b("CVodeMalloc",)g(1,)d(my_pe\)\))h
+(MPI_Abort\(comm,)i(1\);)1454 39518 y Fa(239)1454 40847
+y(240)2490 b Fi(/*)582 b(Allocate)g(preconditioner)h(block)f(*/)1454
+42175 y Fa(241)2490 b Fi(mudq)582 b(=)f(mldq)h(=)f(NVARS*MXSUB;)1454
+43504 y Fa(242)2490 b Fi(mukeep)582 b(=)g(mlkeep)g(=)f(NVARS;)1454
+44832 y Fa(243)2490 b Fi(pdata)582 b(=)f(CVBBDPrecAlloc\(cvode_mem,)k
+(local_N,)e(mudq,)f(mldq,)1454 46160 y Fa(244)15857 b
+Fi(mukeep,)582 b(mlkeep,)g(ZERO,)g(flocal,)g(NULL\);)1454
+47489 y Fa(245)2490 b Fi(if\(check_flag\(\(void)584 b(*\)pdata,)f
+("CVBBDPrecAlloc",)g(0,)f(my_pe\)\))g(MPI_Abort\(comm,)h(1\);)1454
+48817 y Fa(246)1454 50145 y(247)2490 b Fi(/*)582 b(Call)f(CVBBDSpgmr)i
+(to)f(specify)g(the)f(linear)h(solver)g(CVSPGMR)h(using)f(the)1454
+51474 y Fa(248)4234 b Fi(CVBBDPRE)582 b(preconditioner,)h(with)f(left)g
+(preconditioning)h(and)f(the)1454 52802 y Fa(249)4234
+b Fi(default)582 b(maximum)g(Krylov)g(dimension)h(maxl)1163
+b(*/)1454 54130 y Fa(250)2490 b Fi(flag)582 b(=)f
+(CVBBDSpgmr\(cvode_mem,)k(PREC_LEFT,)d(0,)g(pdata\);)1454
+55459 y Fa(251)2490 b Fi(if\(check_flag\(&flag,)584 b("CVBBDSpgmr",)g
+(1,)d(my_pe\)\))h(MPI_Abort\(comm,)i(1\);)1454 56787
+y Fa(252)1454 58115 y(253)2490 b Fi(/*)582 b(Print)g(heading)g(*/)1454
+59444 y Fa(254)2490 b Fi(if)582 b(\(my_pe)g(==)f(0\))h
+(PrintIntro\(npes,)h(mudq,)f(mldq,)g(mukeep,)g(mlkeep\);)1454
+60772 y Fa(255)1454 62100 y(256)2490 b Fi(/*)582 b(Loop)f(over)h(jpre)g
+(\(=)f(PREC_LEFT,)i(PREC_RIGHT\),)g(and)f(solve)f(the)h(problem)g(*/)
+1454 63429 y Fa(257)2490 b Fi(for)582 b(\(jpre)g(=)f(PREC_LEFT;)i(jpre)
+e(<=)h(PREC_RIGHT;)h(jpre++\))f({)1454 64757 y Fa(258)1454
+66086 y(259)2490 b Fi(/*)582 b(On)f(second)h(run,)g(re-initialize)h(u,)
+f(the)f(integrator,)i(CVBBDPRE,)f(and)g(CVSPGMR)g(*/)1454
+67414 y Fa(260)1454 68742 y(261)2490 b Fi(if)582 b(\(jpre)g(==)f
+(PREC_RIGHT\))i({)1454 70071 y Fa(262)1454 71399 y(263)3653
+b Fi(SetInitialProfiles\(u,)584 b(data\);)1454 72727
+y Fa(264)1454 74056 y(265)3653 b Fi(flag)581 b(=)h
+(CVodeReInit\(cvode_mem,)i(f,)e(T0,)f(u,)h(CV_SS,)g(reltol,)g
+(&abstol\);)1454 75384 y Fa(266)3653 b Fi(if\(check_flag\(&flag,)584
+b("CVodeReInit",)f(1,)e(my_pe\)\))i(MPI_Abort\(comm,)g(1\);)1454
+76712 y Fa(267)1454 78041 y(268)3653 b Fi(flag)581 b(=)h
+(CVBBDPrecReInit\(pdata,)i(mudq,)e(mldq,)g(ZERO,)g(flocal,)g(NULL\);)p
+Black 27394 81741 a Fs(87)p Black eop
+%%Page: 88 92
+88 91 bop Black Black -2546 7638 a Fa(269)3653 b Fi
+(if\(check_flag\(&flag,)584 b("CVBBDPrecReInit",)g(1,)d(my_pe\)\))h
+(MPI_Abort\(comm,)i(1\);)-2546 8966 y Fa(270)-2546 10295
+y(271)3653 b Fi(flag)581 b(=)h(CVSpgmrSetPrecType\(cvode_mem,)j
+(PREC_RIGHT\);)-2546 11623 y Fa(272)3653 b Fi(check_flag\(&flag,)583
+b("CVSpgmrSetPrecType",)i(1,)c(my_pe\);)-2546 12951 y
+Fa(273)-2546 14280 y(274)3653 b Fi(if)581 b(\(my_pe)h(==)g(0\))f({)
+-2546 15608 y Fa(275)4815 b Fi
+(printf\("\\n\\n----------------------------------------------------)p
+(---"\);)-2546 16936 y Fa(276)g Fi(printf\("------------\\n"\);)-2546
+18265 y Fa(277)3653 b Fi(})-2546 19593 y Fa(278)-2546
+20922 y(279)2490 b Fi(})-2546 22250 y Fa(280)-2546 23578
+y(281)-2546 24907 y(282)g Fi(if)582 b(\(my_pe)g(==)f(0\))h({)-2546
+26235 y Fa(283)3653 b Fi(printf\("\\n\\nPreconditioner)585
+b(type)c(is:)1163 b(jpre)582 b(=)f(\045s\\n\\n",)-2546
+27563 y Fa(284)7721 b Fi(\(jpre)582 b(==)f(PREC_LEFT\))i(?)e
+("PREC_LEFT")i(:)e("PREC_RIGHT"\);)-2546 28892 y Fa(285)2490
+b Fi(})-2546 30220 y Fa(286)-2546 31548 y(287)g Fi(/*)582
+b(In)f(loop)h(over)g(output)g(points,)g(call)g(CVode,)g(print)g
+(results,)g(test)g(for)f(error)h(*/)-2546 32877 y Fa(288)-2546
+34205 y(289)2490 b Fi(for)582 b(\(iout)g(=)f(1,)h(tout)f(=)h(TWOHR;)g
+(iout)f(<=)h(NOUT;)g(iout++,)g(tout)g(+=)f(TWOHR\))h({)-2546
+35533 y Fa(290)3653 b Fi(flag)581 b(=)h(CVode\(cvode_mem,)h(tout,)f(u,)
+g(&t,)f(CV_NORMAL\);)-2546 36862 y Fa(291)3653 b Fi
+(if\(check_flag\(&flag,)584 b("CVode",)e(1,)g(my_pe\)\))g(break;)-2546
+38190 y Fa(292)3653 b Fi(PrintOutput\(cvode_mem,)584
+b(my_pe,)e(comm,)g(u,)f(t\);)-2546 39518 y Fa(293)2490
+b Fi(})-2546 40847 y Fa(294)-2546 42175 y(295)g Fi(/*)582
+b(Print)g(final)g(statistics)g(*/)-2546 43504 y Fa(296)-2546
+44832 y(297)2490 b Fi(if)582 b(\(my_pe)g(==)f(0\))h
+(PrintFinalStats\(cvode_mem,)j(pdata\);)-2546 46160 y
+Fa(298)-2546 47489 y(299)2490 b Fi(})582 b(/*)f(End)h(of)f(jpre)h(loop)
+g(*/)-2546 48817 y Fa(300)-2546 50145 y(301)2490 b Fi(/*)582
+b(Free)f(memory)i(*/)-2546 51474 y Fa(302)2490 b Fi
+(N_VDestroy_Parallel\(u\);)-2546 52802 y Fa(303)g Fi
+(CVBBDPrecFree\(pdata\);)-2546 54130 y Fa(304)g Fi(free\(data\);)-2546
+55459 y Fa(305)g Fi(CVodeFree\(cvode_mem\);)-2546 56787
+y Fa(306)-2546 58115 y(307)g Fi(MPI_Finalize\(\);)-2546
+59444 y Fa(308)-2546 60772 y(309)g Fi(return\(0\);)-2546
+62100 y Fa(310)1328 b Fi(})-2546 63429 y Fa(311)-2546
+64757 y(312)g Fi(/***********************)585 b(Private)d(Helper)g
+(Functions)g(************************/)-2546 66086 y
+Fa(313)-2546 67414 y(314)1328 b Fi(/*)581 b(Load)h(constants)h(in)e
+(data)h(*/)-2546 68742 y Fa(315)-2546 70071 y(316)1328
+b Fi(static)582 b(void)g(InitUserData\(int)h(my_pe,)f(long)g(int)g
+(local_N,)g(MPI_Comm)g(comm,)-2546 71399 y Fa(317)15857
+b Fi(UserData)582 b(data\))-2546 72727 y Fa(318)1328
+b Fi({)-2546 74056 y Fa(319)2490 b Fi(int)582 b(isubx,)g(isuby;)-2546
+75384 y Fa(320)-2546 76712 y(321)2490 b Fi(/*)582 b(Set)f(problem)i
+(constants)f(*/)-2546 78041 y Fa(322)2490 b Fi(data->om)583
+b(=)e(PI/HALFDAY;)p Black 23394 81741 a Fs(88)p Black
+eop
+%%Page: 89 93
+89 92 bop Black Black 1454 7638 a Fa(323)2490 b Fi(data->dx)583
+b(=)e(\(XMAX-XMIN\)/\(\(realtype\)\(MX-1\)\);)1454 8966
+y Fa(324)2490 b Fi(data->dy)583 b(=)e
+(\(YMAX-YMIN\)/\(\(realtype\)\(MY-1\)\);)1454 10295 y
+Fa(325)2490 b Fi(data->hdco)583 b(=)e(KH/SQR\(data->dx\);)1454
+11623 y Fa(326)2490 b Fi(data->haco)583 b(=)e
+(VEL/\(RCONST\(2.0\)*data->dx\);)1454 12951 y Fa(327)2490
+b Fi(data->vdco)583 b(=)e(\(RCONST\(1.0\)/SQR\(data->dy\)\)*KV0;)1454
+14280 y Fa(328)1454 15608 y(329)2490 b Fi(/*)582 b(Set)f
+(machine-related)j(constants)e(*/)1454 16936 y Fa(330)2490
+b Fi(data->comm)583 b(=)e(comm;)1454 18265 y Fa(331)2490
+b Fi(data->my_pe)583 b(=)e(my_pe;)1454 19593 y Fa(332)2490
+b Fi(data->Nlocal)583 b(=)f(local_N;)1454 20922 y Fa(333)2490
+b Fi(/*)582 b(isubx)g(and)f(isuby)h(are)g(the)f(PE)h(grid)g(indices)g
+(corresponding)h(to)e(my_pe)h(*/)1454 22250 y Fa(334)2490
+b Fi(isuby)582 b(=)f(my_pe/NPEX;)1454 23578 y Fa(335)2490
+b Fi(isubx)582 b(=)f(my_pe)h(-)g(isuby*NPEX;)1454 24907
+y Fa(336)2490 b Fi(data->isubx)583 b(=)e(isubx;)1454
+26235 y Fa(337)2490 b Fi(data->isuby)583 b(=)e(isuby;)1454
+27563 y Fa(338)2490 b Fi(/*)582 b(Set)f(the)h(sizes)g(of)f(a)h
+(boundary)g(x-line)g(in)f(u)h(and)f(uext)h(*/)1454 28892
+y Fa(339)2490 b Fi(data->nvmxsub)583 b(=)f(NVARS*MXSUB;)1454
+30220 y Fa(340)2490 b Fi(data->nvmxsub2)584 b(=)d(NVARS*\(MXSUB+2\);)
+1454 31548 y Fa(341)1328 b Fi(})1454 32877 y Fa(342)1454
+34205 y(343)g Fi(/*)581 b(Set)h(initial)g(conditions)h(in)e(u)h(*/)1454
+35533 y Fa(344)1454 36862 y(345)1328 b Fi(static)582
+b(void)g(SetInitialProfiles\(N_Vector)j(u,)c(UserData)i(data\))1454
+38190 y Fa(346)1328 b Fi({)1454 39518 y Fa(347)2490 b
+Fi(int)582 b(isubx,)g(isuby;)1454 40847 y Fa(348)2490
+b Fi(int)582 b(lx,)f(ly,)h(jx,)g(jy;)1454 42175 y Fa(349)2490
+b Fi(long)582 b(int)g(offset;)1454 43504 y Fa(350)2490
+b Fi(realtype)583 b(dx,)e(dy,)h(x,)f(y,)h(cx,)f(cy,)h(xmid,)g(ymid;)
+1454 44832 y Fa(351)2490 b Fi(realtype)583 b(*uarray;)1454
+46160 y Fa(352)1454 47489 y(353)2490 b Fi(/*)582 b(Set)f(pointer)i(to)e
+(data)h(array)g(in)f(vector)h(u)f(*/)1454 48817 y Fa(354)1454
+50145 y(355)2490 b Fi(uarray)582 b(=)g(NV_DATA_P\(u\);)1454
+51474 y Fa(356)1454 52802 y(357)2490 b Fi(/*)582 b(Get)f(mesh)h
+(spacings,)h(and)e(subgrid)h(indices)h(for)e(this)h(PE)f(*/)1454
+54130 y Fa(358)1454 55459 y(359)2490 b Fi(dx)582 b(=)f(data->dx;)5232
+b(dy)581 b(=)g(data->dy;)1454 56787 y Fa(360)2490 b Fi(isubx)582
+b(=)f(data->isubx;)1746 b(isuby)582 b(=)f(data->isuby;)1454
+58115 y Fa(361)1454 59444 y(362)2490 b Fi(/*)582 b(Load)f(initial)i
+(profiles)f(of)f(c1)h(and)g(c2)f(into)h(local)g(u)f(vector.)1454
+60772 y Fa(363)2490 b Fi(Here)582 b(lx)f(and)h(ly)g(are)f(local)h(mesh)
+g(point)g(indices)g(on)f(the)h(local)g(subgrid,)1454
+62100 y Fa(364)2490 b Fi(and)582 b(jx)f(and)h(jy)f(are)h(the)g(global)g
+(mesh)f(point)h(indices.)h(*/)1454 63429 y Fa(365)1454
+64757 y(366)2490 b Fi(offset)582 b(=)g(0;)1454 66086
+y Fa(367)2490 b Fi(xmid)582 b(=)f(RCONST\(0.5\)*\(XMIN)j(+)d(XMAX\);)
+1454 67414 y Fa(368)2490 b Fi(ymid)582 b(=)f(RCONST\(0.5\)*\(YMIN)j(+)d
+(YMAX\);)1454 68742 y Fa(369)2490 b Fi(for)582 b(\(ly)f(=)h(0;)f(ly)h
+(<)f(MYSUB;)h(ly++\))g({)1454 70071 y Fa(370)3653 b Fi(jy)581
+b(=)g(ly)h(+)f(isuby*MYSUB;)1454 71399 y Fa(371)3653
+b Fi(y)581 b(=)g(YMIN)h(+)f(jy*dy;)1454 72727 y Fa(372)3653
+b Fi(cy)581 b(=)g(SQR\(RCONST\(0.1\)*\(y)j(-)d(ymid\)\);)1454
+74056 y Fa(373)3653 b Fi(cy)581 b(=)g(RCONST\(1.0\))i(-)e(cy)h(+)f
+(RCONST\(0.5\)*SQR\(cy\);)1454 75384 y Fa(374)3653 b
+Fi(for)581 b(\(lx)h(=)f(0;)h(lx)f(<)g(MXSUB;)h(lx++\))g({)1454
+76712 y Fa(375)4815 b Fi(jx)581 b(=)h(lx)f(+)g(isubx*MXSUB;)1454
+78041 y Fa(376)4815 b Fi(x)581 b(=)g(XMIN)h(+)g(jx*dx;)p
+Black 27394 81741 a Fs(89)p Black eop
+%%Page: 90 94
+90 93 bop Black Black -2546 7638 a Fa(377)4815 b Fi(cx)581
+b(=)h(SQR\(RCONST\(0.1\)*\(x)h(-)f(xmid\)\);)-2546 8966
+y Fa(378)4815 b Fi(cx)581 b(=)h(RCONST\(1.0\))g(-)g(cx)f(+)g
+(RCONST\(0.5\)*SQR\(cx\);)-2546 10295 y Fa(379)4815 b
+Fi(uarray[offset)1164 b(])581 b(=)h(C1_SCALE*cx*cy;)-2546
+11623 y Fa(380)4815 b Fi(uarray[offset+1])583 b(=)f(C2_SCALE*cx*cy;)
+-2546 12951 y Fa(381)4815 b Fi(offset)582 b(=)f(offset)h(+)g(2;)-2546
+14280 y Fa(382)3653 b Fi(})-2546 15608 y Fa(383)2490
+b Fi(})-2546 16936 y Fa(384)1328 b Fi(})-2546 18265 y
+Fa(385)-2546 19593 y(386)g Fi(/*)581 b(Print)h(problem)h(introduction)f
+(*/)-2546 20922 y Fa(387)-2546 22250 y(388)1328 b Fi(static)582
+b(void)g(PrintIntro\(int)h(npes,)f(long)g(int)f(mudq,)h(long)g(int)f
+(mldq,)-2546 23578 y Fa(389)14694 b Fi(long)582 b(int)g(mukeep,)g(long)
+g(int)f(mlkeep\))-2546 24907 y Fa(390)1328 b Fi({)-2546
+26235 y Fa(391)2490 b Fi(printf\("\\n2-species)584 b(diurnal)e
+(advection-diffusion)i(problem\\n"\);)-2546 27563 y Fa(392)2490
+b Fi(printf\(")1164 b(\045d)581 b(by)h(\045d)f(mesh)h(on)f(\045d)h
+(processors\\n",)h(MX,)f(MY,)f(npes\);)-2546 28892 y
+Fa(393)2490 b Fi(printf\(")1164 b(Using)582 b(CVBBDPRE)g
+(preconditioner)h(module\\n"\);)-2546 30220 y Fa(394)2490
+b Fi(printf\(")2326 b(Difference-quotient)584 b(half-bandwidths)f
+(are"\);)-2546 31548 y Fa(395)2490 b Fi(printf\(")583
+b(mudq)e(=)h(\045ld,)1163 b(mldq)581 b(=)h(\045ld\\n",)g(mudq,)g
+(mldq\);)-2546 32877 y Fa(396)2490 b Fi(printf\(")2326
+b(Retained)582 b(band)g(block)g(half-bandwidths)h(are"\);)-2546
+34205 y Fa(397)2490 b Fi(printf\(")583 b(mukeep)f(=)f(\045ld,)1163
+b(mlkeep)582 b(=)f(\045ld",)h(mukeep,)g(mlkeep\);)-2546
+35533 y Fa(398)-2546 36862 y(399)2490 b Fi(return;)-2546
+38190 y Fa(400)1328 b Fi(})-2546 39518 y Fa(401)-2546
+40847 y(402)g Fi(/*)581 b(Print)h(current)h(t,)e(step)h(count,)g
+(order,)g(stepsize,)g(and)g(sampled)g(c1,c2)g(values)g(*/)-2546
+42175 y Fa(403)-2546 43504 y(404)1328 b Fi(static)582
+b(void)g(PrintOutput\(void)h(*cvode_mem,)g(int)f(my_pe,)g(MPI_Comm)g
+(comm,)-2546 44832 y Fa(405)15276 b Fi(N_Vector)582 b(u,)f(realtype)i
+(t\))-2546 46160 y Fa(406)1328 b Fi({)-2546 47489 y Fa(407)2490
+b Fi(int)582 b(qu,)f(flag,)h(npelast;)-2546 48817 y Fa(408)2490
+b Fi(long)582 b(int)g(i0,)f(i1,)h(nst;)-2546 50145 y
+Fa(409)2490 b Fi(realtype)583 b(hu,)e(*uarray,)i(tempu[2];)-2546
+51474 y Fa(410)2490 b Fi(MPI_Status)583 b(status;)-2546
+52802 y Fa(411)-2546 54130 y(412)2490 b Fi(npelast)582
+b(=)g(NPEX*NPEY)g(-)g(1;)-2546 55459 y Fa(413)2490 b
+Fi(uarray)582 b(=)g(NV_DATA_P\(u\);)-2546 56787 y Fa(414)-2546
+58115 y(415)2490 b Fi(/*)582 b(Send)f(c1,c2)h(at)g(top)f(right)h(mesh)g
+(point)g(to)f(PE)h(0)f(*/)-2546 59444 y Fa(416)2490 b
+Fi(if)582 b(\(my_pe)g(==)f(npelast\))i({)-2546 60772
+y Fa(417)3653 b Fi(i0)581 b(=)g(NVARS*MXSUB*MYSUB)j(-)d(2;)-2546
+62100 y Fa(418)3653 b Fi(i1)581 b(=)g(i0)h(+)f(1;)-2546
+63429 y Fa(419)3653 b Fi(if)581 b(\(npelast)h(!=)g(0\))-2546
+64757 y Fa(420)4815 b Fi(MPI_Send\(&uarray[i0],)584 b(2,)e
+(PVEC_REAL_MPI_TYPE,)i(0,)d(0,)g(comm\);)-2546 66086
+y Fa(421)3653 b Fi(else)581 b({)-2546 67414 y Fa(422)4815
+b Fi(tempu[0])582 b(=)g(uarray[i0];)-2546 68742 y Fa(423)4815
+b Fi(tempu[1])582 b(=)g(uarray[i1];)-2546 70071 y Fa(424)3653
+b Fi(})-2546 71399 y Fa(425)2490 b Fi(})-2546 72727 y
+Fa(426)-2546 74056 y(427)g Fi(/*)582 b(On)f(PE)h(0,)f(receive)h(c1,c2)g
+(at)g(top)f(right,)h(then)g(print)g(performance)h(data)-2546
+75384 y Fa(428)4234 b Fi(and)581 b(sampled)i(solution)f(values)g(*/)
+-2546 76712 y Fa(429)2490 b Fi(if)582 b(\(my_pe)g(==)f(0\))h({)-2546
+78041 y Fa(430)3653 b Fi(if)581 b(\(npelast)h(!=)g(0\))p
+Black 23394 81741 a Fs(90)p Black eop
+%%Page: 91 95
+91 94 bop Black Black 1454 7638 a Fa(431)4815 b Fi
+(MPI_Recv\(&tempu[0],)584 b(2,)d(PVEC_REAL_MPI_TYPE,)j(npelast,)f(0,)e
+(comm,)h(&status\);)1454 8966 y Fa(432)3653 b Fi(flag)581
+b(=)h(CVodeGetNumSteps\(cvode_mem,)j(&nst\);)1454 10295
+y Fa(433)3653 b Fi(check_flag\(&flag,)583 b("CVodeGetNumSteps",)h(1,)e
+(my_pe\);)1454 11623 y Fa(434)3653 b Fi(flag)581 b(=)h
+(CVodeGetLastOrder\(cvode_mem,)j(&qu\);)1454 12951 y
+Fa(435)3653 b Fi(check_flag\(&flag,)583 b("CVodeGetLastOrder",)h(1,)e
+(my_pe\);)1454 14280 y Fa(436)3653 b Fi(flag)581 b(=)h
+(CVodeGetLastStep\(cvode_mem,)j(&hu\);)1454 15608 y Fa(437)3653
+b Fi(check_flag\(&flag,)583 b("CVodeGetLastStep",)h(1,)e(my_pe\);)1454
+16936 y Fa(438)1328 b Fi(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))1454 18265 y
+Fa(439)3653 b Fi(printf\("t)582 b(=)f(\045.2Le)1745 b(no.)581
+b(steps)h(=)f(\045ld)1744 b(order)582 b(=)f(\045d)1744
+b(stepsize)583 b(=)e(\045.2Le\\n",)1454 19593 y Fa(440)7721
+b Fi(t,)581 b(nst,)h(qu,)f(hu\);)1454 20922 y Fa(441)3653
+b Fi(printf\("At)582 b(bottom)g(left:)1163 b(c1,)582
+b(c2)f(=)h(\04512.3Le)g(\04512.3Le)g(\\n",)g(uarray[0],)g(uarray[1]\);)
+1454 22250 y Fa(442)3653 b Fi(printf\("At)582 b(top)g(right:)2325
+b(c1,)582 b(c2)f(=)h(\04512.3Le)g(\04512.3Le)g(\\n\\n",)g(tempu[0],)h
+(tempu[1]\);)1454 23578 y Fa(443)1328 b Fi(#elif)582
+b(defined\(SUNDIALS_DOUBLE_PRECISION\))1454 24907 y Fa(444)3653
+b Fi(printf\("t)582 b(=)f(\045.2le)1745 b(no.)581 b(steps)h(=)f(\045ld)
+1744 b(order)582 b(=)f(\045d)1744 b(stepsize)583 b(=)e(\045.2le\\n",)
+1454 26235 y Fa(445)7721 b Fi(t,)581 b(nst,)h(qu,)f(hu\);)1454
+27563 y Fa(446)3653 b Fi(printf\("At)582 b(bottom)g(left:)1163
+b(c1,)582 b(c2)f(=)h(\04512.3le)g(\04512.3le)g(\\n",)g(uarray[0],)g
+(uarray[1]\);)1454 28892 y Fa(447)3653 b Fi(printf\("At)582
+b(top)g(right:)2325 b(c1,)582 b(c2)f(=)h(\04512.3le)g(\04512.3le)g
+(\\n\\n",)g(tempu[0],)h(tempu[1]\);)1454 30220 y Fa(448)1328
+b Fi(#else)1454 31548 y Fa(449)3653 b Fi(printf\("t)582
+b(=)f(\045.2e)1744 b(no.)582 b(steps)g(=)f(\045ld)1744
+b(order)582 b(=)f(\045d)1744 b(stepsize)582 b(=)g(\045.2e\\n",)1454
+32877 y Fa(450)7721 b Fi(t,)581 b(nst,)h(qu,)f(hu\);)1454
+34205 y Fa(451)3653 b Fi(printf\("At)582 b(bottom)g(left:)1163
+b(c1,)582 b(c2)f(=)h(\04512.3e)g(\04512.3e)g(\\n",)f(uarray[0],)i
+(uarray[1]\);)1454 35533 y Fa(452)3653 b Fi(printf\("At)582
+b(top)g(right:)2325 b(c1,)582 b(c2)f(=)h(\04512.3e)g(\04512.3e)g
+(\\n\\n",)g(tempu[0],)g(tempu[1]\);)1454 36862 y Fa(453)1328
+b Fi(#endif)1454 38190 y Fa(454)2490 b Fi(})1454 39518
+y Fa(455)1328 b Fi(})1454 40847 y Fa(456)1454 42175 y(457)g
+Fi(/*)581 b(Print)h(final)g(statistics)h(contained)f(in)g(iopt)g(*/)
+1454 43504 y Fa(458)1454 44832 y(459)1328 b Fi(static)582
+b(void)g(PrintFinalStats\(void)i(*cvode_mem,)f(void)e(*pdata\))1454
+46160 y Fa(460)1328 b Fi({)1454 47489 y Fa(461)2490 b
+Fi(long)582 b(int)g(lenrw,)g(leniw)g(;)1454 48817 y Fa(462)2490
+b Fi(long)582 b(int)g(lenrwSPGMR,)g(leniwSPGMR;)1454
+50145 y Fa(463)2490 b Fi(long)582 b(int)g(lenrwBBDP,)g(leniwBBDP,)h
+(ngevalsBBDP;)1454 51474 y Fa(464)2490 b Fi(long)582
+b(int)g(nst,)f(nfe,)h(nsetups,)g(nni,)g(ncfn,)g(netf;)1454
+52802 y Fa(465)2490 b Fi(long)582 b(int)g(nli,)f(npe,)h(nps,)g(ncfl,)g
+(nfeSPGMR;)1454 54130 y Fa(466)2490 b Fi(int)582 b(flag;)1454
+55459 y Fa(467)1454 56787 y(468)2490 b Fi(flag)582 b(=)f
+(CVodeGetWorkSpace\(cvode_mem,)586 b(&lenrw,)c(&leniw\);)1454
+58115 y Fa(469)2490 b Fi(check_flag\(&flag,)584 b("CVodeGetWorkSpace",)
+g(1,)e(0\);)1454 59444 y Fa(470)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumSteps\(cvode_mem,)586 b(&nst\);)1454 60772
+y Fa(471)2490 b Fi(check_flag\(&flag,)584 b("CVodeGetNumSteps",)g(1,)d
+(0\);)1454 62100 y Fa(472)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumRhsEvals\(cvode_mem,)586 b(&nfe\);)1454 63429
+y Fa(473)2490 b Fi(check_flag\(&flag,)584 b("CVodeGetNumRhsEvals",)g
+(1,)e(0\);)1454 64757 y Fa(474)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumLinSolvSetups\(cvode_mem,)587 b(&nsetups\);)1454
+66086 y Fa(475)2490 b Fi(check_flag\(&flag,)584 b
+("CVodeGetNumLinSolvSetups",)h(1,)d(0\);)1454 67414 y
+Fa(476)2490 b Fi(flag)582 b(=)f(CVodeGetNumErrTestFails\(cvode_mem,)587
+b(&netf\);)1454 68742 y Fa(477)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumErrTestFails",)h(1,)c(0\);)1454 70071 y
+Fa(478)2490 b Fi(flag)582 b(=)f(CVodeGetNumNonlinSolvIters\(cvode_mem,)
+587 b(&nni\);)1454 71399 y Fa(479)2490 b Fi(check_flag\(&flag,)584
+b("CVodeGetNumNonlinSolvIters",)h(1,)d(0\);)1454 72727
+y Fa(480)2490 b Fi(flag)582 b(=)f
+(CVodeGetNumNonlinSolvConvFails\(cvode_mem,)588 b(&ncfn\);)1454
+74056 y Fa(481)2490 b Fi(check_flag\(&flag,)584 b
+("CVodeGetNumNonlinSolvConvFails",)i(1,)581 b(0\);)1454
+75384 y Fa(482)1454 76712 y(483)2490 b Fi(flag)582 b(=)f
+(CVSpgmrGetWorkSpace\(cvode_mem,)586 b(&lenrwSPGMR,)d(&leniwSPGMR\);)
+1454 78041 y Fa(484)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetWorkSpace",)g(1,)e(0\);)p Black 27394 81741
+a Fs(91)p Black eop
+%%Page: 92 96
+92 95 bop Black Black -2546 7638 a Fa(485)2490 b Fi(flag)582
+b(=)f(CVSpgmrGetNumLinIters\(cvode_mem,)586 b(&nli\);)-2546
+8966 y Fa(486)2490 b Fi(check_flag\(&flag,)584 b
+("CVSpgmrGetNumLinIters",)h(1,)c(0\);)-2546 10295 y Fa(487)2490
+b Fi(flag)582 b(=)f(CVSpgmrGetNumPrecEvals\(cvode_mem,)586
+b(&npe\);)-2546 11623 y Fa(488)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetNumPrecEvals",)h(1,)c(0\);)-2546 12951 y
+Fa(489)2490 b Fi(flag)582 b(=)f(CVSpgmrGetNumPrecSolves\(cvode_mem,)587
+b(&nps\);)-2546 14280 y Fa(490)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetNumPrecSolves",)h(1,)c(0\);)-2546 15608
+y Fa(491)2490 b Fi(flag)582 b(=)f(CVSpgmrGetNumConvFails\(cvode_mem,)
+586 b(&ncfl\);)-2546 16936 y Fa(492)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetNumConvFails",)h(1,)c(0\);)-2546 18265 y
+Fa(493)2490 b Fi(flag)582 b(=)f(CVSpgmrGetNumRhsEvals\(cvode_mem,)586
+b(&nfeSPGMR\);)-2546 19593 y Fa(494)2490 b Fi(check_flag\(&flag,)584
+b("CVSpgmrGetNumRhsEvals",)h(1,)c(0\);)-2546 20922 y
+Fa(495)-2546 22250 y(496)2490 b Fi(printf\("\\nFinal)584
+b(Statistics:)e(\\n\\n"\);)-2546 23578 y Fa(497)2490
+b Fi(printf\("lenrw)1746 b(=)581 b(\0455ld)2906 b(leniw)582
+b(=)g(\0455ld\\n",)g(lenrw,)g(leniw\);)-2546 24907 y
+Fa(498)2490 b Fi(printf\("llrw)2327 b(=)581 b(\0455ld)2906
+b(lliw)1163 b(=)582 b(\0455ld\\n",)g(lenrwSPGMR,)h(leniwSPGMR\);)-2546
+26235 y Fa(499)2490 b Fi(printf\("nst)2908 b(=)581 b(\0455ld\\n")10462
+b(,)581 b(nst\);)-2546 27563 y Fa(500)2490 b Fi(printf\("nfe)2908
+b(=)581 b(\0455ld)2906 b(nfel)1163 b(=)582 b(\0455ld\\n")1163
+b(,)581 b(nfe,)h(nfeSPGMR\);)-2546 28892 y Fa(501)2490
+b Fi(printf\("nni)2908 b(=)581 b(\0455ld)2906 b(nli)1744
+b(=)582 b(\0455ld\\n")1163 b(,)581 b(nni,)h(nli\);)-2546
+30220 y Fa(502)2490 b Fi(printf\("nsetups)584 b(=)d(\0455ld)2906
+b(netf)1163 b(=)582 b(\0455ld\\n")1163 b(,)581 b(nsetups,)h(netf\);)
+-2546 31548 y Fa(503)2490 b Fi(printf\("npe)2908 b(=)581
+b(\0455ld)2906 b(nps)1744 b(=)582 b(\0455ld\\n")1163
+b(,)581 b(npe,)h(nps\);)-2546 32877 y Fa(504)2490 b Fi(printf\("ncfn)
+2327 b(=)581 b(\0455ld)2906 b(ncfl)1163 b(=)582 b(\0455ld\\n\\n",)g
+(ncfn,)g(ncfl\);)-2546 34205 y Fa(505)-2546 35533 y(506)2490
+b Fi(flag)582 b(=)f(CVBBDPrecGetWorkSpace\(pdata,)586
+b(&lenrwBBDP,)c(&leniwBBDP\);)-2546 36862 y Fa(507)2490
+b Fi(check_flag\(&flag,)584 b("CVBBDPrecGetWorkSpace",)h(1,)c(0\);)
+-2546 38190 y Fa(508)2490 b Fi(flag)582 b(=)f
+(CVBBDPrecGetNumGfnEvals\(pdata,)586 b(&ngevalsBBDP\);)-2546
+39518 y Fa(509)2490 b Fi(check_flag\(&flag,)584 b
+("CVBBDPrecGetNumGfnEvals",)h(1,)c(0\);)-2546 40847 y
+Fa(510)2490 b Fi(printf\("In)583 b(CVBBDPRE:)f(real/integer)h(local)f
+(work)g(space)g(sizes)g(=)f(\045ld,)h(\045ld\\n",)-2546
+42175 y Fa(511)6558 b Fi(lenrwBBDP,)583 b(leniwBBDP\);)-2546
+43504 y Fa(512)2490 b Fi(printf\(")7556 b(no.)582 b(flocal)g(evals.)g
+(=)f(\045ld\\n",ngevalsBBDP\);)-2546 44832 y Fa(513)1328
+b Fi(})-2546 46160 y Fa(514)-2546 47489 y(515)g Fi(/*)581
+b(Routine)i(to)e(send)h(boundary)g(data)g(to)f(neighboring)i(PEs)f(*/)
+-2546 48817 y Fa(516)-2546 50145 y(517)1328 b Fi(static)582
+b(void)g(BSend\(MPI_Comm)h(comm,)-2546 51474 y Fa(518)11789
+b Fi(int)581 b(my_pe,)h(int)g(isubx,)g(int)g(isuby,)-2546
+52802 y Fa(519)11789 b Fi(long)581 b(int)h(dsizex,)g(long)g(int)g
+(dsizey,)-2546 54130 y Fa(520)11789 b Fi(realtype)582
+b(uarray[]\))-2546 55459 y Fa(521)1328 b Fi({)-2546 56787
+y Fa(522)2490 b Fi(int)582 b(i,)f(ly;)-2546 58115 y Fa(523)2490
+b Fi(long)582 b(int)g(offsetu,)g(offsetbuf;)-2546 59444
+y Fa(524)2490 b Fi(realtype)583 b(bufleft[NVARS*MYSUB],)h
+(bufright[NVARS*MYSUB];)-2546 60772 y Fa(525)-2546 62100
+y(526)2490 b Fi(/*)582 b(If)f(isuby)h(>)f(0,)h(send)g(data)f(from)h
+(bottom)g(x-line)g(of)g(u)f(*/)-2546 63429 y Fa(527)-2546
+64757 y(528)2490 b Fi(if)582 b(\(isuby)g(!=)f(0\))-2546
+66086 y Fa(529)3653 b Fi(MPI_Send\(&uarray[0],)584 b(dsizex,)e
+(PVEC_REAL_MPI_TYPE,)i(my_pe-NPEX,)f(0,)e(comm\);)-2546
+67414 y Fa(530)-2546 68742 y(531)2490 b Fi(/*)582 b(If)f(isuby)h(<)f
+(NPEY-1,)i(send)e(data)h(from)g(top)f(x-line)h(of)g(u)f(*/)-2546
+70071 y Fa(532)-2546 71399 y(533)2490 b Fi(if)582 b(\(isuby)g(!=)f
+(NPEY-1\))h({)-2546 72727 y Fa(534)3653 b Fi(offsetu)582
+b(=)f(\(MYSUB-1\)*dsizex;)-2546 74056 y Fa(535)3653 b
+Fi(MPI_Send\(&uarray[offsetu],)585 b(dsizex,)d(PVEC_REAL_MPI_TYPE,)i
+(my_pe+NPEX,)f(0,)e(comm\);)-2546 75384 y Fa(536)2490
+b Fi(})-2546 76712 y Fa(537)-2546 78041 y(538)g Fi(/*)582
+b(If)f(isubx)h(>)f(0,)h(send)g(data)f(from)h(left)g(y-line)g(of)f(u)h
+(\(via)f(bufleft\))i(*/)p Black 23394 81741 a Fs(92)p
+Black eop
+%%Page: 93 97
+93 96 bop Black Black 1454 7638 a Fa(539)1454 8966 y(540)2490
+b Fi(if)582 b(\(isubx)g(!=)f(0\))h({)1454 10295 y Fa(541)3653
+b Fi(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h(ly++\))g({)1454
+11623 y Fa(542)4815 b Fi(offsetbuf)582 b(=)g(ly*NVARS;)1454
+12951 y Fa(543)4815 b Fi(offsetu)582 b(=)f(ly*dsizex;)1454
+14280 y Fa(544)4815 b Fi(for)581 b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)h
+(i++\))1454 15608 y Fa(545)5977 b Fi(bufleft[offsetbuf+i])584
+b(=)e(uarray[offsetu+i];)1454 16936 y Fa(546)3653 b Fi(})1454
+18265 y Fa(547)g Fi(MPI_Send\(&bufleft[0],)584 b(dsizey,)e
+(PVEC_REAL_MPI_TYPE,)i(my_pe-1,)e(0,)g(comm\);)1454 19593
+y Fa(548)2490 b Fi(})1454 20922 y Fa(549)1454 22250 y(550)g
+Fi(/*)582 b(If)f(isubx)h(<)f(NPEX-1,)i(send)e(data)h(from)g(right)g
+(y-line)g(of)f(u)g(\(via)h(bufright\))h(*/)1454 23578
+y Fa(551)1454 24907 y(552)2490 b Fi(if)582 b(\(isubx)g(!=)f(NPEX-1\))h
+({)1454 26235 y Fa(553)3653 b Fi(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g
+(MYSUB;)h(ly++\))g({)1454 27563 y Fa(554)4815 b Fi(offsetbuf)582
+b(=)g(ly*NVARS;)1454 28892 y Fa(555)4815 b Fi(offsetu)582
+b(=)f(offsetbuf*MXSUB)j(+)d(\(MXSUB-1\)*NVARS;)1454 30220
+y Fa(556)4815 b Fi(for)581 b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)h(i++\))1454
+31548 y Fa(557)5977 b Fi(bufright[offsetbuf+i])584 b(=)e
+(uarray[offsetu+i];)1454 32877 y Fa(558)3653 b Fi(})1454
+34205 y Fa(559)g Fi(MPI_Send\(&bufright[0],)584 b(dsizey,)e
+(PVEC_REAL_MPI_TYPE,)i(my_pe+1,)f(0,)e(comm\);)1454 35533
+y Fa(560)2490 b Fi(})1454 36862 y Fa(561)1454 38190 y(562)1328
+b Fi(})1454 39518 y Fa(563)1454 40847 y(564)g Fi(/*)581
+b(Routine)i(to)e(start)h(receiving)g(boundary)h(data)f(from)f
+(neighboring)i(PEs.)1454 42175 y Fa(565)3071 b Fi(Notes:)1454
+43504 y Fa(566)g Fi(1\))582 b(buffer)g(should)g(be)f(able)h(to)g(hold)f
+(2*NVARS*MYSUB)i(realtype)g(entries,)f(should)g(be)1454
+44832 y Fa(567)3071 b Fi(passed)582 b(to)g(both)g(the)f(BRecvPost)i
+(and)e(BRecvWait)i(functions,)f(and)g(should)g(not)1454
+46160 y Fa(568)3071 b Fi(be)582 b(manipulated)h(between)f(the)f(two)h
+(calls.)1454 47489 y Fa(569)3071 b Fi(2\))582 b(request)g(should)g
+(have)g(4)f(entries,)i(and)e(should)h(be)g(passed)g(in)f(both)h(calls)g
+(also.)g(*/)1454 48817 y Fa(570)1454 50145 y(571)1328
+b Fi(static)582 b(void)g(BRecvPost\(MPI_Comm)i(comm,)e(MPI_Request)g
+(request[],)1454 51474 y Fa(572)14113 b Fi(int)582 b(my_pe,)g(int)g
+(isubx,)g(int)f(isuby,)1454 52802 y Fa(573)14113 b Fi(long)582
+b(int)g(dsizex,)g(long)g(int)f(dsizey,)1454 54130 y Fa(574)14113
+b Fi(realtype)583 b(uext[],)f(realtype)g(buffer[]\))1454
+55459 y Fa(575)1328 b Fi({)1454 56787 y Fa(576)2490 b
+Fi(long)582 b(int)g(offsetue;)1454 58115 y Fa(577)2490
+b Fi(/*)582 b(Have)f(bufleft)i(and)e(bufright)i(use)e(the)h(same)g
+(buffer)g(*/)1454 59444 y Fa(578)2490 b Fi(realtype)583
+b(*bufleft)f(=)f(buffer,)h(*bufright)h(=)e(buffer+NVARS*MYSUB;)1454
+60772 y Fa(579)1454 62100 y(580)2490 b Fi(/*)582 b(If)f(isuby)h(>)f(0,)
+h(receive)g(data)g(for)f(bottom)h(x-line)g(of)g(uext)g(*/)1454
+63429 y Fa(581)2490 b Fi(if)582 b(\(isuby)g(!=)f(0\))1454
+64757 y Fa(582)3653 b Fi(MPI_Irecv\(&uext[NVARS],)584
+b(dsizex,)e(PVEC_REAL_MPI_TYPE,)1454 66086 y Fa(583)27480
+b Fi(my_pe-NPEX,)582 b(0,)g(comm,)g(&request[0]\);)1454
+67414 y Fa(584)1454 68742 y(585)2490 b Fi(/*)582 b(If)f(isuby)h(<)f
+(NPEY-1,)i(receive)f(data)g(for)f(top)h(x-line)g(of)f(uext)h(*/)1454
+70071 y Fa(586)2490 b Fi(if)582 b(\(isuby)g(!=)f(NPEY-1\))h({)1454
+71399 y Fa(587)3653 b Fi(offsetue)582 b(=)f(NVARS*\(1)i(+)e
+(\(MYSUB+1\)*\(MXSUB+2\)\);)1454 72727 y Fa(588)3653
+b Fi(MPI_Irecv\(&uext[offsetue],)585 b(dsizex,)d(PVEC_REAL_MPI_TYPE,)
+1454 74056 y Fa(589)25155 b Fi(my_pe+NPEX,)583 b(0,)e(comm,)h
+(&request[1]\);)1454 75384 y Fa(590)2490 b Fi(})1454
+76712 y Fa(591)1454 78041 y(592)g Fi(/*)582 b(If)f(isubx)h(>)f(0,)h
+(receive)g(data)g(for)f(left)h(y-line)g(of)g(uext)f(\(via)h(bufleft\))g
+(*/)p Black 27394 81741 a Fs(93)p Black eop
+%%Page: 94 98
+94 97 bop Black Black -2546 7638 a Fa(593)2490 b Fi(if)582
+b(\(isubx)g(!=)f(0\))h({)-2546 8966 y Fa(594)3653 b Fi
+(MPI_Irecv\(&bufleft[0],)584 b(dsizey,)e(PVEC_REAL_MPI_TYPE,)-2546
+10295 y Fa(595)25155 b Fi(my_pe-1,)582 b(0,)g(comm,)g(&request[2]\);)
+-2546 11623 y Fa(596)2490 b Fi(})-2546 12951 y Fa(597)-2546
+14280 y(598)g Fi(/*)582 b(If)f(isubx)h(<)f(NPEX-1,)i(receive)f(data)g
+(for)f(right)h(y-line)g(of)f(uext)h(\(via)g(bufright\))g(*/)-2546
+15608 y Fa(599)2490 b Fi(if)582 b(\(isubx)g(!=)f(NPEX-1\))h({)-2546
+16936 y Fa(600)3653 b Fi(MPI_Irecv\(&bufright[0],)584
+b(dsizey,)e(PVEC_REAL_MPI_TYPE,)-2546 18265 y Fa(601)25155
+b Fi(my_pe+1,)582 b(0,)g(comm,)g(&request[3]\);)-2546
+19593 y Fa(602)2490 b Fi(})-2546 20922 y Fa(603)-2546
+22250 y(604)1328 b Fi(})-2546 23578 y Fa(605)-2546 24907
+y(606)g Fi(/*)581 b(Routine)i(to)e(finish)h(receiving)h(boundary)f
+(data)g(from)f(neighboring)i(PEs.)-2546 26235 y Fa(607)3071
+b Fi(Notes:)-2546 27563 y Fa(608)g Fi(1\))582 b(buffer)g(should)g(be)f
+(able)h(to)g(hold)f(2*NVARS*MYSUB)i(realtype)g(entries,)f(should)g(be)
+-2546 28892 y Fa(609)3071 b Fi(passed)582 b(to)g(both)g(the)f
+(BRecvPost)i(and)e(BRecvWait)i(functions,)f(and)g(should)g(not)-2546
+30220 y Fa(610)3071 b Fi(be)582 b(manipulated)h(between)f(the)f(two)h
+(calls.)-2546 31548 y Fa(611)3071 b Fi(2\))582 b(request)g(should)g
+(have)g(4)f(entries,)i(and)e(should)h(be)g(passed)g(in)f(both)h(calls)g
+(also.)g(*/)-2546 32877 y Fa(612)-2546 34205 y(613)1328
+b Fi(static)582 b(void)g(BRecvWait\(MPI_Request)i(request[],)-2546
+35533 y Fa(614)14113 b Fi(int)582 b(isubx,)g(int)g(isuby,)-2546
+36862 y Fa(615)14113 b Fi(long)582 b(int)g(dsizex,)g(realtype)g
+(uext[],)-2546 38190 y Fa(616)14113 b Fi(realtype)583
+b(buffer[]\))-2546 39518 y Fa(617)1328 b Fi({)-2546 40847
+y Fa(618)2490 b Fi(int)582 b(i,)f(ly;)-2546 42175 y Fa(619)2490
+b Fi(long)582 b(int)g(dsizex2,)g(offsetue,)g(offsetbuf;)-2546
+43504 y Fa(620)2490 b Fi(realtype)583 b(*bufleft)f(=)f(buffer,)h
+(*bufright)h(=)e(buffer+NVARS*MYSUB;)-2546 44832 y Fa(621)2490
+b Fi(MPI_Status)583 b(status;)-2546 46160 y Fa(622)-2546
+47489 y(623)2490 b Fi(dsizex2)582 b(=)g(dsizex)g(+)f(2*NVARS;)-2546
+48817 y Fa(624)-2546 50145 y(625)2490 b Fi(/*)582 b(If)f(isuby)h(>)f
+(0,)h(receive)g(data)g(for)f(bottom)h(x-line)g(of)g(uext)g(*/)-2546
+51474 y Fa(626)2490 b Fi(if)582 b(\(isuby)g(!=)f(0\))-2546
+52802 y Fa(627)3653 b Fi(MPI_Wait\(&request[0],&status\);)-2546
+54130 y Fa(628)-2546 55459 y(629)2490 b Fi(/*)582 b(If)f(isuby)h(<)f
+(NPEY-1,)i(receive)f(data)g(for)f(top)h(x-line)g(of)f(uext)h(*/)-2546
+56787 y Fa(630)2490 b Fi(if)582 b(\(isuby)g(!=)f(NPEY-1\))-2546
+58115 y Fa(631)3653 b Fi(MPI_Wait\(&request[1],&status\);)-2546
+59444 y Fa(632)-2546 60772 y(633)2490 b Fi(/*)582 b(If)f(isubx)h(>)f
+(0,)h(receive)g(data)g(for)f(left)h(y-line)g(of)g(uext)f(\(via)h
+(bufleft\))g(*/)-2546 62100 y Fa(634)2490 b Fi(if)582
+b(\(isubx)g(!=)f(0\))h({)-2546 63429 y Fa(635)3653 b
+Fi(MPI_Wait\(&request[2],&status\);)-2546 64757 y Fa(636)-2546
+66086 y(637)g Fi(/*)581 b(Copy)h(the)f(buffer)h(to)g(uext)g(*/)-2546
+67414 y Fa(638)3653 b Fi(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))g({)-2546 68742 y Fa(639)4815 b Fi(offsetbuf)582
+b(=)g(ly*NVARS;)-2546 70071 y Fa(640)4815 b Fi(offsetue)582
+b(=)g(\(ly+1\)*dsizex2;)-2546 71399 y Fa(641)4815 b Fi(for)581
+b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)h(i++\))-2546 72727 y
+Fa(642)5977 b Fi(uext[offsetue+i])584 b(=)d(bufleft[offsetbuf+i];)-2546
+74056 y Fa(643)3653 b Fi(})-2546 75384 y Fa(644)2490
+b Fi(})-2546 76712 y Fa(645)-2546 78041 y(646)g Fi(/*)582
+b(If)f(isubx)h(<)f(NPEX-1,)i(receive)f(data)g(for)f(right)h(y-line)g
+(of)f(uext)h(\(via)g(bufright\))g(*/)p Black 23394 81741
+a Fs(94)p Black eop
+%%Page: 95 99
+95 98 bop Black Black 1454 7638 a Fa(647)2490 b Fi(if)582
+b(\(isubx)g(!=)f(NPEX-1\))h({)1454 8966 y Fa(648)3653
+b Fi(MPI_Wait\(&request[3],&status\);)1454 10295 y Fa(649)1454
+11623 y(650)g Fi(/*)581 b(Copy)h(the)f(buffer)h(to)g(uext)g(*/)1454
+12951 y Fa(651)3653 b Fi(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))g({)1454 14280 y Fa(652)4815 b Fi(offsetbuf)582
+b(=)g(ly*NVARS;)1454 15608 y Fa(653)4815 b Fi(offsetue)582
+b(=)g(\(ly+2\)*dsizex2)h(-)e(NVARS;)1454 16936 y Fa(654)4815
+b Fi(for)581 b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)h(i++\))1454
+18265 y Fa(655)5977 b Fi(uext[offsetue+i])584 b(=)d
+(bufright[offsetbuf+i];)1454 19593 y Fa(656)3653 b Fi(})1454
+20922 y Fa(657)2490 b Fi(})1454 22250 y Fa(658)1328 b
+Fi(})1454 23578 y Fa(659)1454 24907 y(660)g Fi(/*)581
+b(fucomm)h(routine.)1164 b(This)582 b(routine)g(performs)g(all)g
+(inter-processor)1454 26235 y Fa(661)3071 b Fi(communication)584
+b(of)d(data)h(in)f(u)g(needed)i(to)e(calculate)h(f.)5231
+b(*/)1454 27563 y Fa(662)1454 28892 y(663)1328 b Fi(static)582
+b(void)g(fucomm\(realtype)h(t,)f(N_Vector)g(u,)f(void)h(*f_data\))1454
+30220 y Fa(664)1328 b Fi({)1454 31548 y Fa(665)2490 b
+Fi(UserData)583 b(data;)1454 32877 y Fa(666)2490 b Fi(realtype)583
+b(*uarray,)f(*uext,)g(buffer[2*NVARS*MYSUB];)1454 34205
+y Fa(667)2490 b Fi(MPI_Comm)583 b(comm;)1454 35533 y
+Fa(668)2490 b Fi(int)582 b(my_pe,)g(isubx,)g(isuby;)1454
+36862 y Fa(669)2490 b Fi(long)582 b(int)g(nvmxsub,)g(nvmysub;)1454
+38190 y Fa(670)2490 b Fi(MPI_Request)583 b(request[4];)1454
+39518 y Fa(671)1454 40847 y(672)2490 b Fi(data)582 b(=)f(\(UserData\))i
+(f_data;)1454 42175 y Fa(673)2490 b Fi(uarray)582 b(=)g
+(NV_DATA_P\(u\);)1454 43504 y Fa(674)1454 44832 y(675)2490
+b Fi(/*)582 b(Get)f(comm,)h(my_pe,)g(subgrid)g(indices,)h(data)f
+(sizes,)g(extended)g(array)g(uext)g(*/)1454 46160 y Fa(676)1454
+47489 y(677)2490 b Fi(comm)582 b(=)f(data->comm;)1164
+b(my_pe)582 b(=)f(data->my_pe;)1454 48817 y Fa(678)2490
+b Fi(isubx)582 b(=)f(data->isubx;)1746 b(isuby)582 b(=)f(data->isuby;)
+1454 50145 y Fa(679)2490 b Fi(nvmxsub)582 b(=)g(data->nvmxsub;)1454
+51474 y Fa(680)2490 b Fi(nvmysub)582 b(=)g(NVARS*MYSUB;)1454
+52802 y Fa(681)2490 b Fi(uext)582 b(=)f(data->uext;)1454
+54130 y Fa(682)1454 55459 y(683)2490 b Fi(/*)582 b(Start)g(receiving)g
+(boundary)g(data)g(from)g(neighboring)h(PEs)e(*/)1454
+56787 y Fa(684)1454 58115 y(685)2490 b Fi(BRecvPost\(comm,)584
+b(request,)e(my_pe,)g(isubx,)g(isuby,)g(nvmxsub,)g(nvmysub,)h(uext,)f
+(buffer\);)1454 59444 y Fa(686)1454 60772 y(687)2490
+b Fi(/*)582 b(Send)f(data)h(from)g(boundary)g(of)g(local)g(grid)f(to)h
+(neighboring)h(PEs)e(*/)1454 62100 y Fa(688)1454 63429
+y(689)2490 b Fi(BSend\(comm,)583 b(my_pe,)f(isubx,)g(isuby,)g(nvmxsub,)
+h(nvmysub,)f(uarray\);)1454 64757 y Fa(690)1454 66086
+y(691)2490 b Fi(/*)582 b(Finish)g(receiving)g(boundary)h(data)e(from)h
+(neighboring)h(PEs)e(*/)1454 67414 y Fa(692)1454 68742
+y(693)2490 b Fi(BRecvWait\(request,)584 b(isubx,)e(isuby,)g(nvmxsub,)h
+(uext,)e(buffer\);)1454 70071 y Fa(694)1328 b Fi(})1454
+71399 y Fa(695)1454 72727 y(696)g Fi(/*****************)584
+b(Function)e(called)g(by)g(the)f(solver)h(**************************/)
+1454 74056 y Fa(697)1454 75384 y(698)1328 b Fi(/*)581
+b(f)h(routine.)1163 b(Evaluate)583 b(f\(t,y\).)1163 b(First)582
+b(call)g(fucomm)g(to)f(do)g(communication)j(of)1454 76712
+y Fa(699)3071 b Fi(subgrid)583 b(boundary)f(data)g(into)f(uext.)1164
+b(Then)581 b(calculate)i(f)e(by)g(a)h(call)g(to)f(flocal.)h(*/)1454
+78041 y Fa(700)p Black 27394 81741 a Fs(95)p Black eop
+%%Page: 96 100
+96 99 bop Black Black -2546 7638 a Fa(701)1328 b Fi(static)582
+b(void)g(f\(realtype)g(t,)g(N_Vector)g(u,)g(N_Vector)g(udot,)g(void)g
+(*f_data\))-2546 8966 y Fa(702)1328 b Fi({)-2546 10295
+y Fa(703)2490 b Fi(UserData)583 b(data;)-2546 11623 y
+Fa(704)-2546 12951 y(705)2490 b Fi(data)582 b(=)f(\(UserData\))i
+(f_data;)-2546 14280 y Fa(706)-2546 15608 y(707)2490
+b Fi(/*)582 b(Call)f(fucomm)i(to)e(do)g(inter-processor)j
+(communication)f(*/)-2546 16936 y Fa(708)-2546 18265
+y(709)2490 b Fi(fucomm)582 b(\(t,)g(u,)f(f_data\);)-2546
+19593 y Fa(710)-2546 20922 y(711)2490 b Fi(/*)582 b(Call)f(flocal)i(to)
+e(calculate)h(all)g(right-hand)h(sides)f(*/)-2546 22250
+y Fa(712)-2546 23578 y(713)2490 b Fi(flocal)582 b(\(data->Nlocal,)i(t,)
+d(u,)g(udot,)h(f_data\);)-2546 24907 y Fa(714)1328 b
+Fi(})-2546 26235 y Fa(715)-2546 27563 y(716)g Fi(/*****************)584
+b(Functions)e(called)g(by)g(the)f(CVBBDPRE)i(module)f
+(****************/)-2546 28892 y Fa(717)-2546 30220 y(718)1328
+b Fi(/*)581 b(flocal)h(routine.)1164 b(Compute)582 b(f\(t,y\).)1164
+b(This)581 b(routine)h(assumes)h(that)e(all)-2546 31548
+y Fa(719)3071 b Fi(inter-processor)584 b(communication)f(of)e(data)h
+(needed)g(to)g(calculate)g(f)f(has)h(already)-2546 32877
+y Fa(720)3071 b Fi(been)582 b(done,)g(and)g(this)f(data)h(is)g(in)f
+(the)h(work)f(array)h(uext.)11624 b(*/)-2546 34205 y
+Fa(721)-2546 35533 y(722)1328 b Fi(static)582 b(void)g(flocal\(long)h
+(int)e(Nlocal,)h(realtype)h(t,)e(N_Vector)h(u,)-2546
+36862 y Fa(723)12370 b Fi(N_Vector)582 b(udot,)g(void)g(*f_data\))-2546
+38190 y Fa(724)1328 b Fi({)-2546 39518 y Fa(725)2490
+b Fi(realtype)583 b(*uext;)-2546 40847 y Fa(726)2490
+b Fi(realtype)583 b(q3,)e(c1,)h(c2,)f(c1dn,)h(c2dn,)g(c1up,)g(c2up,)g
+(c1lt,)g(c2lt;)-2546 42175 y Fa(727)2490 b Fi(realtype)583
+b(c1rt,)f(c2rt,)f(cydn,)h(cyup,)g(hord1,)g(hord2,)g(horad1,)g(horad2;)
+-2546 43504 y Fa(728)2490 b Fi(realtype)583 b(qq1,)e(qq2,)h(qq3,)g
+(qq4,)g(rkin1,)g(rkin2,)g(s,)f(vertd1,)h(vertd2,)h(ydn,)e(yup;)-2546
+44832 y Fa(729)2490 b Fi(realtype)583 b(q4coef,)f(dely,)g(verdco,)g
+(hordco,)g(horaco;)-2546 46160 y Fa(730)2490 b Fi(int)582
+b(i,)f(lx,)h(ly,)g(jx,)f(jy;)-2546 47489 y Fa(731)2490
+b Fi(int)582 b(isubx,)g(isuby;)-2546 48817 y Fa(732)2490
+b Fi(long)582 b(int)g(nvmxsub,)g(nvmxsub2,)g(offsetu,)h(offsetue;)-2546
+50145 y Fa(733)2490 b Fi(UserData)583 b(data;)-2546 51474
+y Fa(734)2490 b Fi(realtype)583 b(*uarray,)f(*duarray;)-2546
+52802 y Fa(735)-2546 54130 y(736)2490 b Fi(uarray)582
+b(=)g(NV_DATA_P\(u\);)-2546 55459 y Fa(737)2490 b Fi(duarray)582
+b(=)g(NV_DATA_P\(udot\);)-2546 56787 y Fa(738)-2546 58115
+y(739)2490 b Fi(/*)582 b(Get)f(subgrid)i(indices,)f(array)g(sizes,)g
+(extended)g(work)g(array)g(uext)g(*/)-2546 59444 y Fa(740)-2546
+60772 y(741)2490 b Fi(data)582 b(=)f(\(UserData\))i(f_data;)-2546
+62100 y Fa(742)2490 b Fi(isubx)582 b(=)f(data->isubx;)1746
+b(isuby)582 b(=)f(data->isuby;)-2546 63429 y Fa(743)2490
+b Fi(nvmxsub)582 b(=)g(data->nvmxsub;)h(nvmxsub2)f(=)g(data->nvmxsub2;)
+-2546 64757 y Fa(744)2490 b Fi(uext)582 b(=)f(data->uext;)-2546
+66086 y Fa(745)-2546 67414 y(746)2490 b Fi(/*)582 b(Copy)f(local)h
+(segment)h(of)e(u)g(vector)h(into)g(the)g(working)g(extended)g(array)g
+(uext)g(*/)-2546 68742 y Fa(747)-2546 70071 y(748)2490
+b Fi(offsetu)582 b(=)g(0;)-2546 71399 y Fa(749)2490 b
+Fi(offsetue)583 b(=)e(nvmxsub2)h(+)g(NVARS;)-2546 72727
+y Fa(750)2490 b Fi(for)582 b(\(ly)f(=)h(0;)f(ly)h(<)f(MYSUB;)h(ly++\))g
+({)-2546 74056 y Fa(751)3653 b Fi(for)581 b(\(i)h(=)f(0;)g(i)h(<)f
+(nvmxsub;)h(i++\))g(uext[offsetue+i])i(=)d(uarray[offsetu+i];)-2546
+75384 y Fa(752)3653 b Fi(offsetu)582 b(=)f(offsetu)h(+)g(nvmxsub;)-2546
+76712 y Fa(753)3653 b Fi(offsetue)582 b(=)f(offsetue)i(+)e(nvmxsub2;)
+-2546 78041 y Fa(754)2490 b Fi(})p Black 23394 81741
+a Fs(96)p Black eop
+%%Page: 97 101
+97 100 bop Black Black 1454 7638 a Fa(755)1454 8966 y(756)2490
+b Fi(/*)582 b(To)f(facilitate)i(homogeneous)g(Neumann)f(boundary)g
+(conditions,)h(when)f(this)f(is)1454 10295 y Fa(757)2490
+b Fi(a)582 b(boundary)g(PE,)g(copy)f(data)h(from)g(the)f(first)h
+(interior)h(mesh)e(line)h(of)g(u)f(to)g(uext)h(*/)1454
+11623 y Fa(758)1454 12951 y(759)2490 b Fi(/*)582 b(If)f(isuby)h(=)f(0,)
+h(copy)g(x-line)g(2)f(of)g(u)h(to)f(uext)h(*/)1454 14280
+y Fa(760)2490 b Fi(if)582 b(\(isuby)g(==)f(0\))h({)1454
+15608 y Fa(761)3653 b Fi(for)581 b(\(i)h(=)f(0;)g(i)h(<)f(nvmxsub;)h
+(i++\))g(uext[NVARS+i])h(=)e(uarray[nvmxsub+i];)1454
+16936 y Fa(762)2490 b Fi(})1454 18265 y Fa(763)1454 19593
+y(764)g Fi(/*)582 b(If)f(isuby)h(=)f(NPEY-1,)i(copy)e(x-line)h(MYSUB-1)
+h(of)e(u)g(to)h(uext)f(*/)1454 20922 y Fa(765)2490 b
+Fi(if)582 b(\(isuby)g(==)f(NPEY-1\))h({)1454 22250 y
+Fa(766)3653 b Fi(offsetu)582 b(=)f(\(MYSUB-2\)*nvmxsub;)1454
+23578 y Fa(767)3653 b Fi(offsetue)582 b(=)f(\(MYSUB+1\)*nvmxsub2)j(+)d
+(NVARS;)1454 24907 y Fa(768)3653 b Fi(for)581 b(\(i)h(=)f(0;)g(i)h(<)f
+(nvmxsub;)h(i++\))g(uext[offsetue+i])i(=)d(uarray[offsetu+i];)1454
+26235 y Fa(769)2490 b Fi(})1454 27563 y Fa(770)1454 28892
+y(771)g Fi(/*)582 b(If)f(isubx)h(=)f(0,)h(copy)g(y-line)g(2)f(of)g(u)h
+(to)f(uext)h(*/)1454 30220 y Fa(772)2490 b Fi(if)582
+b(\(isubx)g(==)f(0\))h({)1454 31548 y Fa(773)3653 b Fi(for)581
+b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h(ly++\))g({)1454 32877
+y Fa(774)4815 b Fi(offsetu)582 b(=)f(ly*nvmxsub)i(+)e(NVARS;)1454
+34205 y Fa(775)4815 b Fi(offsetue)582 b(=)g(\(ly+1\)*nvmxsub2;)1454
+35533 y Fa(776)4815 b Fi(for)581 b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)h
+(i++\))g(uext[offsetue+i])i(=)d(uarray[offsetu+i];)1454
+36862 y Fa(777)3653 b Fi(})1454 38190 y Fa(778)2490 b
+Fi(})1454 39518 y Fa(779)1454 40847 y(780)g Fi(/*)582
+b(If)f(isubx)h(=)f(NPEX-1,)i(copy)e(y-line)h(MXSUB-1)h(of)e(u)g(to)h
+(uext)f(*/)1454 42175 y Fa(781)2490 b Fi(if)582 b(\(isubx)g(==)f
+(NPEX-1\))h({)1454 43504 y Fa(782)3653 b Fi(for)581 b(\(ly)h(=)f(0;)h
+(ly)f(<)g(MYSUB;)h(ly++\))g({)1454 44832 y Fa(783)4815
+b Fi(offsetu)582 b(=)f(\(ly+1\)*nvmxsub)j(-)d(2*NVARS;)1454
+46160 y Fa(784)4815 b Fi(offsetue)582 b(=)g(\(ly+2\)*nvmxsub2)h(-)e
+(NVARS;)1454 47489 y Fa(785)4815 b Fi(for)581 b(\(i)h(=)f(0;)h(i)f(<)g
+(NVARS;)h(i++\))g(uext[offsetue+i])i(=)d(uarray[offsetu+i];)1454
+48817 y Fa(786)3653 b Fi(})1454 50145 y Fa(787)2490 b
+Fi(})1454 51474 y Fa(788)1454 52802 y(789)g Fi(/*)582
+b(Make)f(local)h(copies)g(of)g(problem)g(variables,)h(for)e(efficiency)
+i(*/)1454 54130 y Fa(790)1454 55459 y(791)2490 b Fi(dely)582
+b(=)f(data->dy;)1454 56787 y Fa(792)2490 b Fi(verdco)582
+b(=)g(data->vdco;)1454 58115 y Fa(793)2490 b Fi(hordco)582
+b(=)g(data->hdco;)1454 59444 y Fa(794)2490 b Fi(horaco)582
+b(=)g(data->haco;)1454 60772 y Fa(795)1454 62100 y(796)2490
+b Fi(/*)582 b(Set)f(diurnal)i(rate)e(coefficients)i(as)f(functions)g
+(of)g(t,)f(and)h(save)f(q4)h(in)1454 63429 y Fa(797)2490
+b Fi(data)582 b(block)g(for)g(use)f(by)h(preconditioner)h(evaluation)f
+(routine)6975 b(*/)1454 64757 y Fa(798)1454 66086 y(799)2490
+b Fi(s)582 b(=)f(sin\(\(data->om\)*t\);)1454 67414 y
+Fa(800)2490 b Fi(if)582 b(\(s)f(>)g(ZERO\))h({)1454 68742
+y Fa(801)3653 b Fi(q3)581 b(=)g(exp\(-A3/s\);)1454 70071
+y Fa(802)3653 b Fi(q4coef)582 b(=)f(exp\(-A4/s\);)1454
+71399 y Fa(803)2490 b Fi(})582 b(else)f({)1454 72727
+y Fa(804)3653 b Fi(q3)581 b(=)g(ZERO;)1454 74056 y Fa(805)3653
+b Fi(q4coef)582 b(=)f(ZERO;)1454 75384 y Fa(806)2490
+b Fi(})1454 76712 y Fa(807)g Fi(data->q4)583 b(=)e(q4coef;)1454
+78041 y Fa(808)p Black 27394 81741 a Fs(97)p Black eop
+%%Page: 98 102
+98 101 bop Black Black -2546 7638 a Fa(809)-2546 8966
+y(810)2490 b Fi(/*)582 b(Loop)f(over)h(all)g(grid)g(points)g(in)f
+(local)h(subgrid)g(*/)-2546 10295 y Fa(811)-2546 11623
+y(812)2490 b Fi(for)582 b(\(ly)f(=)h(0;)f(ly)h(<)f(MYSUB;)h(ly++\))g({)
+-2546 12951 y Fa(813)-2546 14280 y(814)3653 b Fi(jy)581
+b(=)g(ly)h(+)f(isuby*MYSUB;)-2546 15608 y Fa(815)-2546
+16936 y(816)3653 b Fi(/*)581 b(Set)h(vertical)g(diffusion)g
+(coefficients)h(at)f(jy)f(+-)h(1/2)f(*/)-2546 18265 y
+Fa(817)-2546 19593 y(818)3653 b Fi(ydn)581 b(=)g(YMIN)h(+)g(\(jy)f(-)g
+(RCONST\(0.5\)\)*dely;)-2546 20922 y Fa(819)3653 b Fi(yup)581
+b(=)g(ydn)h(+)f(dely;)-2546 22250 y Fa(820)3653 b Fi(cydn)581
+b(=)h(verdco*exp\(RCONST\(0.2\)*ydn\);)-2546 23578 y
+Fa(821)3653 b Fi(cyup)581 b(=)h(verdco*exp\(RCONST\(0.2\)*yup\);)-2546
+24907 y Fa(822)3653 b Fi(for)581 b(\(lx)h(=)f(0;)h(lx)f(<)g(MXSUB;)h
+(lx++\))g({)-2546 26235 y Fa(823)-2546 27563 y(824)4815
+b Fi(jx)581 b(=)h(lx)f(+)g(isubx*MXSUB;)-2546 28892 y
+Fa(825)-2546 30220 y(826)4815 b Fi(/*)581 b(Extract)i(c1)e(and)h(c2,)f
+(and)h(set)f(kinetic)i(rate)e(terms)h(*/)-2546 31548
+y Fa(827)-2546 32877 y(828)4815 b Fi(offsetue)582 b(=)g(\(lx+1\)*NVARS)
+g(+)g(\(ly+1\)*nvmxsub2;)-2546 34205 y Fa(829)4815 b
+Fi(c1)581 b(=)h(uext[offsetue];)-2546 35533 y Fa(830)4815
+b Fi(c2)581 b(=)h(uext[offsetue+1];)-2546 36862 y Fa(831)4815
+b Fi(qq1)581 b(=)h(Q1*c1*C3;)-2546 38190 y Fa(832)4815
+b Fi(qq2)581 b(=)h(Q2*c1*c2;)-2546 39518 y Fa(833)4815
+b Fi(qq3)581 b(=)h(q3*C3;)-2546 40847 y Fa(834)4815 b
+Fi(qq4)581 b(=)h(q4coef*c2;)-2546 42175 y Fa(835)4815
+b Fi(rkin1)582 b(=)f(-qq1)h(-)f(qq2)h(+)f(2.0*qq3)h(+)g(qq4;)-2546
+43504 y Fa(836)4815 b Fi(rkin2)582 b(=)f(qq1)h(-)f(qq2)h(-)f(qq4;)-2546
+44832 y Fa(837)-2546 46160 y(838)4815 b Fi(/*)581 b(Set)h(vertical)g
+(diffusion)h(terms)f(*/)-2546 47489 y Fa(839)-2546 48817
+y(840)4815 b Fi(c1dn)582 b(=)f(uext[offsetue-nvmxsub2];)-2546
+50145 y Fa(841)4815 b Fi(c2dn)582 b(=)f(uext[offsetue-nvmxsub2+1];)
+-2546 51474 y Fa(842)4815 b Fi(c1up)582 b(=)f(uext[offsetue+nvmxsub2];)
+-2546 52802 y Fa(843)4815 b Fi(c2up)582 b(=)f
+(uext[offsetue+nvmxsub2+1];)-2546 54130 y Fa(844)4815
+b Fi(vertd1)582 b(=)f(cyup*\(c1up)i(-)e(c1\))h(-)f(cydn*\(c1)h(-)g
+(c1dn\);)-2546 55459 y Fa(845)4815 b Fi(vertd2)582 b(=)f(cyup*\(c2up)i
+(-)e(c2\))h(-)f(cydn*\(c2)h(-)g(c2dn\);)-2546 56787 y
+Fa(846)-2546 58115 y(847)4815 b Fi(/*)581 b(Set)h(horizontal)h
+(diffusion)f(and)g(advection)g(terms)g(*/)-2546 59444
+y Fa(848)-2546 60772 y(849)4815 b Fi(c1lt)582 b(=)f(uext[offsetue-2];)
+-2546 62100 y Fa(850)4815 b Fi(c2lt)582 b(=)f(uext[offsetue-1];)-2546
+63429 y Fa(851)4815 b Fi(c1rt)582 b(=)f(uext[offsetue+2];)-2546
+64757 y Fa(852)4815 b Fi(c2rt)582 b(=)f(uext[offsetue+3];)-2546
+66086 y Fa(853)4815 b Fi(hord1)582 b(=)f(hordco*\(c1rt)i(-)e
+(RCONST\(2.0\)*c1)j(+)d(c1lt\);)-2546 67414 y Fa(854)4815
+b Fi(hord2)582 b(=)f(hordco*\(c2rt)i(-)e(RCONST\(2.0\)*c2)j(+)d
+(c2lt\);)-2546 68742 y Fa(855)4815 b Fi(horad1)582 b(=)f(horaco*\(c1rt)
+i(-)e(c1lt\);)-2546 70071 y Fa(856)4815 b Fi(horad2)582
+b(=)f(horaco*\(c2rt)i(-)e(c2lt\);)-2546 71399 y Fa(857)-2546
+72727 y(858)4815 b Fi(/*)581 b(Load)h(all)g(terms)g(into)f(duarray)i
+(*/)-2546 74056 y Fa(859)-2546 75384 y(860)4815 b Fi(offsetu)582
+b(=)f(lx*NVARS)i(+)e(ly*nvmxsub;)-2546 76712 y Fa(861)4815
+b Fi(duarray[offsetu])1746 b(=)581 b(vertd1)h(+)f(hord1)h(+)g(horad1)g
+(+)f(rkin1;)-2546 78041 y Fa(862)4815 b Fi(duarray[offsetu+1])584
+b(=)d(vertd2)h(+)f(hord2)h(+)g(horad2)g(+)f(rkin2;)p
+Black 23394 81741 a Fs(98)p Black eop
+%%Page: 99 103
+99 102 bop Black Black 1454 7638 a Fa(863)3653 b Fi(})1454
+8966 y Fa(864)2490 b Fi(})1454 10295 y Fa(865)1328 b
+Fi(})1454 11623 y Fa(866)1454 12951 y(867)g Fi(/*)581
+b(Check)h(function)h(return)f(value...)1454 14280 y Fa(868)4234
+b Fi(opt)581 b(==)h(0)f(means)h(SUNDIALS)g(function)h(allocates)f
+(memory)g(so)g(check)g(if)1454 15608 y Fa(869)9464 b
+Fi(returned)582 b(NULL)g(pointer)1454 16936 y Fa(870)4234
+b Fi(opt)581 b(==)h(1)f(means)h(SUNDIALS)g(function)h(returns)f(a)f
+(flag)h(so)f(check)h(if)1454 18265 y Fa(871)9464 b Fi(flag)582
+b(>=)f(0)1454 19593 y Fa(872)4234 b Fi(opt)581 b(==)h(2)f(means)h
+(function)g(allocates)h(memory)f(so)f(check)h(if)g(returned)1454
+20922 y Fa(873)9464 b Fi(NULL)582 b(pointer)g(*/)1454
+22250 y Fa(874)1454 23578 y(875)1328 b Fi(static)582
+b(int)g(check_flag\(void)h(*flagvalue,)g(char)f(*funcname,)g(int)g
+(opt,)g(int)f(id\))1454 24907 y Fa(876)1328 b Fi({)1454
+26235 y Fa(877)2490 b Fi(int)582 b(*errflag;)1454 27563
+y Fa(878)1454 28892 y(879)2490 b Fi(/*)582 b(Check)g(if)f(SUNDIALS)h
+(function)h(returned)f(NULL)g(pointer)g(-)f(no)h(memory)g(allocated)g
+(*/)1454 30220 y Fa(880)2490 b Fi(if)582 b(\(opt)f(==)h(0)f(&&)h
+(flagvalue)g(==)g(NULL\))g({)1454 31548 y Fa(881)3653
+b Fi(fprintf\(stderr,)583 b("\\nSUNDIALS_ERROR\(\045d\):)h(\045s\(\))e
+(failed)g(-)f(returned)i(NULL)f(pointer\\n\\n",)1454
+32877 y Fa(882)8302 b Fi(id,)581 b(funcname\);)1454 34205
+y Fa(883)3653 b Fi(return\(1\);)582 b(})1454 35533 y
+Fa(884)1454 36862 y(885)2490 b Fi(/*)582 b(Check)g(if)f(flag)h(<)f(0)g
+(*/)1454 38190 y Fa(886)2490 b Fi(else)582 b(if)f(\(opt)h(==)g(1\))f({)
+1454 39518 y Fa(887)3653 b Fi(errflag)582 b(=)f(\(int)h(*\))f
+(flagvalue;)1454 40847 y Fa(888)3653 b Fi(if)581 b(\(*errflag)i(<)e
+(0\))g({)1454 42175 y Fa(889)4815 b Fi(fprintf\(stderr,)583
+b("\\nSUNDIALS_ERROR\(\045d\):)i(\045s\(\))c(failed)h(with)g(flag)g(=)f
+(\045d\\n\\n",)1454 43504 y Fa(890)9464 b Fi(id,)582
+b(funcname,)g(*errflag\);)1454 44832 y Fa(891)4815 b
+Fi(return\(1\);)583 b(}})1454 46160 y Fa(892)1454 47489
+y(893)2490 b Fi(/*)582 b(Check)g(if)f(function)h(returned)h(NULL)f
+(pointer)g(-)f(no)g(memory)h(allocated)h(*/)1454 48817
+y Fa(894)2490 b Fi(else)582 b(if)f(\(opt)h(==)g(2)f(&&)g(flagvalue)i
+(==)e(NULL\))h({)1454 50145 y Fa(895)3653 b Fi(fprintf\(stderr,)583
+b("\\nMEMORY_ERROR\(\045d\):)h(\045s\(\))e(failed)g(-)f(returned)i
+(NULL)e(pointer\\n\\n",)1454 51474 y Fa(896)8302 b Fi(id,)581
+b(funcname\);)1454 52802 y Fa(897)3653 b Fi(return\(1\);)582
+b(})1454 54130 y Fa(898)1454 55459 y(899)2490 b Fi(return\(0\);)1454
+56787 y Fa(900)1328 b Fi(})p Black 27394 81741 a Fs(99)p
+Black eop
+%%Page: 100 104
+100 103 bop Black Black 0 7638 a Fr(G)1793 b(Listing)599
+b(of)e Fb(cvkryf.f)-1734 10674 y Fa(1)1328 b Fi(C)2906
+b(----------------------------------------------------------------)
+-1734 12003 y Fa(2)1328 b Fi(C)2906 b($Revision:)583
+b(1.20.2.1)f($)-1734 13331 y Fa(3)1328 b Fi(C)2906 b($Date:)582
+b(2005/04/06)h(23:33:02)f($)-1734 14659 y Fa(4)1328 b
+Fi(C)2906 b
+(----------------------------------------------------------------)-1734
+15988 y Fa(5)1328 b Fi(C)2906 b(FCVODE)582 b(Example)g(Problem:)g(2D)g
+(kinetics-transport,)i(precond.)e(Krylov)-1734 17316
+y Fa(6)1328 b Fi(C)2906 b(solver.)-1734 18645 y Fa(7)1328
+b Fi(C)-1734 19973 y Fa(8)g Fi(C)2906 b(An)581 b(ODE)h(system)g(is)f
+(generated)i(from)f(the)f(following)i(2-species)f(diurnal)-1734
+21301 y Fa(9)1328 b Fi(C)2906 b(kinetics)582 b(advection-diffusion)i
+(PDE)e(system)g(in)f(2)h(space)f(dimensions:)-2140 22630
+y Fa(10)1328 b Fi(C)-2140 23958 y Fa(11)g Fi(C)2906 b(dc\(i\)/dt)582
+b(=)g(Kh*\(d/dx\)**2)g(c\(i\))g(+)g(V*dc\(i\)/dx)g(+)f
+(\(d/dy\)\(Kv\(y\)*dc\(i\)/dy\))-2140 25286 y Fa(12)1328
+b Fi(C)15691 b(+)581 b(Ri\(c1,c2,t\))3489 b(for)582 b(i)f(=)g(1,2,)1744
+b(where)-2140 26615 y Fa(13)1328 b Fi(C)2906 b(R1\(c1,c2,t\))583
+b(=)e(-q1*c1*c3)h(-)g(q2*c1*c2)g(+)f(2*q3\(t\)*c3)i(+)e(q4\(t\)*c2)i(,)
+-2140 27943 y Fa(14)1328 b Fi(C)2906 b(R2\(c1,c2,t\))583
+b(=)1162 b(q1*c1*c3)582 b(-)g(q2*c1*c2)g(-)f(q4\(t\)*c2)i(,)-2140
+29271 y Fa(15)1328 b Fi(C)2906 b(Kv\(y\))582 b(=)f(Kv0*exp\(y/5\))i(,)
+-2140 30600 y Fa(16)1328 b Fi(C)2906 b(Kh,)581 b(V,)h(Kv0,)g(q1,)f(q2,)
+h(and)f(c3)h(are)g(constants,)g(and)g(q3\(t\))g(and)f(q4\(t\))-2140
+31928 y Fa(17)1328 b Fi(C)2906 b(vary)582 b(diurnally.)-2140
+33256 y Fa(18)1328 b Fi(C)-2140 34585 y Fa(19)g Fi(C)2906
+b(The)581 b(problem)i(is)e(posed)h(on)f(the)h(square)-2140
+35913 y Fa(20)1328 b Fi(C)2906 b(0)581 b(.le.)h(x)f(.le.)h(20,)2325
+b(30)581 b(.le.)h(y)g(.le.)f(50)1744 b(\(all)582 b(in)f(km\),)-2140
+37241 y Fa(21)1328 b Fi(C)2906 b(with)582 b(homogeneous)g(Neumann)h
+(boundary)f(conditions,)h(and)e(for)h(time)g(t)-2140
+38570 y Fa(22)1328 b Fi(C)2906 b(in)581 b(0)h(.le.)f(t)h(.le.)f(86400)h
+(sec)g(\(1)f(day\).)-2140 39898 y Fa(23)1328 b Fi(C)2906
+b(The)581 b(PDE)h(system)g(is)g(treated)g(by)f(central)h(differences)h
+(on)f(a)f(uniform)-2140 41227 y Fa(24)1328 b Fi(C)2906
+b(10)581 b(x)h(10)f(mesh,)h(with)g(simple)g(polynomial)g(initial)h
+(profiles.)-2140 42555 y Fa(25)1328 b Fi(C)2906 b(The)581
+b(problem)i(is)e(solved)h(with)g(CVODE,)g(with)g(the)f(BDF/GMRES)i
+(method)f(and)-2140 43883 y Fa(26)1328 b Fi(C)2906 b(the)581
+b(block-diagonal)j(part)d(of)h(the)g(Jacobian)g(as)f(a)h(left)-2140
+45212 y Fa(27)1328 b Fi(C)2906 b(preconditioner.)-2140
+46540 y Fa(28)1328 b Fi(C)-2140 47868 y Fa(29)g Fi(C)2906
+b(Note:)582 b(this)g(program)g(requires)g(the)g(dense)g(linear)g
+(solver)g(routines)-2140 49197 y Fa(30)1328 b Fi(C)2906
+b(DGEFA)582 b(and)f(DGESL)h(from)g(LINPACK,)g(and)g(BLAS)g(routines)g
+(DCOPY)g(and)g(DSCAL.)-2140 50525 y Fa(31)1328 b Fi(C)-2140
+51853 y Fa(32)g Fi(C)2906 b(The)581 b(second)i(and)e(third)h
+(dimensions)h(of)e(U)g(here)h(must)g(match)g(the)f(values)-2140
+53182 y Fa(33)1328 b Fi(C)2906 b(of)581 b(MESHX)h(and)g(MESHY,)g(for)f
+(consistency)i(with)f(the)g(output)g(statements)-2140
+54510 y Fa(34)1328 b Fi(C)2906 b(below.)-2140 55838 y
+Fa(35)1328 b Fi(C)2906 b
+(----------------------------------------------------------------)-2140
+57167 y Fa(36)1328 b Fi(C)-2140 58495 y Fa(37)4815 b
+Fi(IMPLICIT)582 b(NONE)-2140 59823 y Fa(38)1328 b Fi(C)-2140
+61152 y Fa(39)4815 b Fi(INTEGER)582 b(METH,)g(ITMETH,)g(IATOL,)g
+(INOPT,)g(ITASK,)g(IER,)g(LNCFL,)g(LNPS)-2140 62480 y
+Fa(40)4815 b Fi(INTEGER)582 b(LNST,)g(LNFE,)g(LNSETUP,)g(LNNI,)g(LNCF,)
+g(LQ,)g(LH,)f(LNPE,)h(LNLI)-2140 63808 y Fa(41)4815 b
+Fi(INTEGER)582 b(IOUT,)g(JPRETYPE,)g(IGSTYPE,)h(MAXL)-2140
+65137 y Fa(42)4815 b Fi(INTEGER*4)582 b(IOPT\(40\))-2140
+66465 y Fa(43)4815 b Fi(INTEGER*4)582 b(NEQ,)g(MESHX,)g(MESHY,)g(NST,)g
+(NFE,)g(NPSET,)g(NPE,)f(NPS,)h(NNI)-2140 67794 y Fa(44)4815
+b Fi(INTEGER*4)582 b(NLI,)g(NCFN,)g(NCFL)-2140 69122
+y Fa(45)4815 b Fi(DOUBLE)582 b(PRECISION)g(ATOL,)g(AVDIM,)g(T,)g(TOUT,)
+g(TWOHR,)g(RTOL,)g(FLOOR,)g(DELT)-2140 70450 y Fa(46)4815
+b Fi(DOUBLE)582 b(PRECISION)g(U\(2,10,10\),)h(ROPT\(40\))-2140
+71779 y Fa(47)1328 b Fi(C)-2140 73107 y Fa(48)4815 b
+Fi(DATA)582 b(TWOHR/7200.0D0/,)h(RTOL/1.0D-5/,)g(FLOOR/100.0D0/,)-2140
+74435 y Fa(49)4234 b Fi(1)2906 b(JPRETYPE/1/,)583 b(IGSTYPE/1/,)f
+(MAXL/0/,)h(DELT/0.0D0/)-2140 75764 y Fa(50)4815 b Fi(DATA)582
+b(LNST/4/,)g(LNFE/5/,)g(LNSETUP/6/,)h(LNNI/7/,)f(LNCF/8/,)-2140
+77092 y Fa(51)4234 b Fi(1)2906 b(LQ/11/,)582 b(LH/5/,)g(LNPE/18/,)g
+(LNLI/19/,)h(LNPS/20/,)f(LNCFL/21/)-2140 78420 y Fa(52)4815
+b Fi(COMMON)582 b(/PBDIM/)g(NEQ)p Black 23091 81741 a
+Fs(100)p Black eop
+%%Page: 101 105
+101 104 bop Black Black 1860 7638 a Fa(53)1328 b Fi(C)1860
+8966 y Fa(54)g Fi(C)581 b(Set)h(mesh)g(sizes)1860 10295
+y Fa(55)4815 b Fi(MESHX)582 b(=)f(10)1860 11623 y Fa(56)4815
+b Fi(MESHY)582 b(=)f(10)1860 12951 y Fa(57)1328 b Fi(C)581
+b(Load)h(Common)g(and)g(initial)g(values)g(in)f(Subroutine)i(INITKX)
+1860 14280 y Fa(58)4815 b Fi(CALL)582 b(INITKX\(MESHX,)h(MESHY,)f(U\))
+1860 15608 y Fa(59)1328 b Fi(C)581 b(Set)h(other)g(input)g(arguments.)
+1860 16936 y Fa(60)4815 b Fi(NEQ)581 b(=)h(2)f(*)g(MESHX)h(*)g(MESHY)
+1860 18265 y Fa(61)4815 b Fi(T)581 b(=)g(0.0D0)1860 19593
+y Fa(62)4815 b Fi(METH)582 b(=)f(2)1860 20922 y Fa(63)4815
+b Fi(ITMETH)582 b(=)f(2)1860 22250 y Fa(64)4815 b Fi(IATOL)582
+b(=)f(1)1860 23578 y Fa(65)4815 b Fi(ATOL)582 b(=)f(RTOL)h(*)f(FLOOR)
+1860 24907 y Fa(66)4815 b Fi(INOPT)582 b(=)f(0)1860 26235
+y Fa(67)4815 b Fi(ITASK)582 b(=)f(1)1860 27563 y Fa(68)1328
+b Fi(C)1860 28892 y Fa(69)4815 b Fi(WRITE\(6,10\))583
+b(NEQ)1860 30220 y Fa(70)1909 b Fi(10)1744 b(FORMAT\('Krylov)583
+b(example)f(problem:'//)1860 31548 y Fa(71)4234 b Fi(1)4068
+b(')581 b(Kinetics-transport,)j(NEQ)e(=)f(',)h(I4/\))1860
+32877 y Fa(72)1328 b Fi(C)1860 34205 y Fa(73)4815 b Fi(CALL)582
+b(FNVINITS\(NEQ,)h(IER\))1860 35533 y Fa(74)4815 b Fi(IF)581
+b(\(IER)h(.NE.)g(0\))f(THEN)1860 36862 y Fa(75)5977 b
+Fi(WRITE\(6,20\))583 b(IER)1860 38190 y Fa(76)1909 b
+Fi(20)2906 b(FORMAT\(///')583 b(SUNDIALS_ERROR:)g(FNVINITS)g(returned)f
+(IER)g(=)f(',)g(I5\))1860 39518 y Fa(77)5977 b Fi(STOP)1860
+40847 y Fa(78)4815 b Fi(ENDIF)1860 42175 y Fa(79)1328
+b Fi(C)1860 43504 y Fa(80)4815 b Fi(CALL)582 b(FCVMALLOC\(T,)h(U,)e
+(METH,)h(ITMETH,)g(IATOL,)g(RTOL,)g(ATOL,)1860 44832
+y Fa(81)4234 b Fi(1)8717 b(INOPT,)582 b(IOPT,)g(ROPT,)g(IER\))1860
+46160 y Fa(82)4815 b Fi(IF)581 b(\(IER)h(.NE.)g(0\))f(THEN)1860
+47489 y Fa(83)5977 b Fi(WRITE\(6,30\))583 b(IER)1860
+48817 y Fa(84)1909 b Fi(30)2906 b(FORMAT\(///')583 b(SUNDIALS_ERROR:)g
+(FCVMALLOC)g(returned)f(IER)g(=)f(',)h(I5\))1860 50145
+y Fa(85)5977 b Fi(CALL)582 b(FNVFREES)1860 51474 y Fa(86)5977
+b Fi(STOP)1860 52802 y Fa(87)g Fi(ENDIF)1860 54130 y
+Fa(88)1328 b Fi(C)1860 55459 y Fa(89)4815 b Fi(CALL)582
+b(FCVSPGMR\(JPRETYPE,)h(IGSTYPE,)g(MAXL,)f(DELT,)g(IER\))1860
+56787 y Fa(90)4815 b Fi(IF)581 b(\(IER)h(.NE.)g(0\))f(THEN)1860
+58115 y Fa(91)5977 b Fi(WRITE\(6,40\))583 b(IER)1860
+59444 y Fa(92)1909 b Fi(40)2906 b(FORMAT\(///')583 b(SUNDIALS_ERROR:)g
+(FCVSPGMR)g(returned)f(IER)g(=)f(',)g(I5\))1860 60772
+y Fa(93)5977 b Fi(CALL)582 b(FNVFREES)1860 62100 y Fa(94)5977
+b Fi(CALL)582 b(FCVFREE)1860 63429 y Fa(95)5977 b Fi(STOP)1860
+64757 y Fa(96)4815 b Fi(ENDIF)1860 66086 y Fa(97)1328
+b Fi(C)1860 67414 y Fa(98)4815 b Fi(CALL)582 b(FCVSPGMRSETPREC\(1,)h
+(IER\))1860 68742 y Fa(99)1328 b Fi(C)1454 70071 y Fa(100)g
+Fi(C)581 b(Loop)h(over)g(output)g(points,)g(call)g(FCVODE,)g(print)g
+(sample)g(solution)g(values.)1454 71399 y Fa(101)4815
+b Fi(TOUT)582 b(=)f(TWOHR)1454 72727 y Fa(102)4815 b
+Fi(DO)581 b(70)h(IOUT)g(=)f(1,)g(12)1454 74056 y Fa(103)1328
+b Fi(C)1454 75384 y Fa(104)5977 b Fi(CALL)582 b(FCVODE\(TOUT,)h(T,)e
+(U,)h(ITASK,)g(IER\))1454 76712 y Fa(105)1328 b Fi(C)1454
+78041 y Fa(106)5977 b Fi(WRITE\(6,50\))583 b(T,)e(IOPT\(LNST\),)i
+(IOPT\(LQ\),)g(ROPT\(LH\))p Black 27091 81741 a Fs(101)p
+Black eop
+%%Page: 102 106
+102 105 bop Black Black -2546 7638 a Fa(107)1909 b Fi(50)2906
+b(FORMAT\(/')583 b(t)e(=)g(',)h(E11.3,)g(5X,)f('no.)h(steps)g(=)f(',)h
+(I5,)-2546 8966 y Fa(108)4234 b Fi(1)5230 b(')1744 b(order)582
+b(=)f(',)g(I3,)h(')1744 b(stepsize)582 b(=)f(',)h(E14.6\))-2546
+10295 y Fa(109)5977 b Fi(WRITE\(6,55\))583 b(U\(1,1,1\),)f(U\(1,5,5\),)
+h(U\(1,10,10\),)-2546 11623 y Fa(110)4234 b Fi(1)8136
+b(U\(2,1,1\),)582 b(U\(2,5,5\),)h(U\(2,10,10\))-2546
+12951 y Fa(111)1909 b Fi(55)2906 b(FORMAT\(')1164 b(c1)581
+b(\(bot.left/middle/top)j(rt.\))e(=)f(',)h(3E14.6/)-2546
+14280 y Fa(112)4234 b Fi(1)5230 b(')1163 b(c2)581 b
+(\(bot.left/middle/top)j(rt.\))e(=)f(',)h(3E14.6\))-2546
+15608 y Fa(113)1328 b Fi(C)-2546 16936 y Fa(114)5977
+b Fi(IF)582 b(\(IER)f(.NE.)h(0\))g(THEN)-2546 18265 y
+Fa(115)7139 b Fi(WRITE\(6,60\))583 b(IER,)f(IOPT\(26\))-2546
+19593 y Fa(116)1909 b Fi(60)4068 b(FORMAT\(///')583 b(SUNDIALS_ERROR:)h
+(FCVODE)e(returned)g(IER)g(=)f(',)g(I5,)h(/,)-2546 20922
+y Fa(117)4234 b Fi(1)6393 b(')9879 b(Linear)582 b(Solver)g(returned)h
+(IER)e(=)h(',)f(I5\))-2546 22250 y Fa(118)7139 b Fi(CALL)582
+b(FNVFREES)-2546 23578 y Fa(119)7139 b Fi(CALL)582 b(FCVFREE)-2546
+24907 y Fa(120)7139 b Fi(STOP)-2546 26235 y Fa(121)g
+Fi(ENDIF)-2546 27563 y Fa(122)1328 b Fi(C)-2546 28892
+y Fa(123)5977 b Fi(TOUT)582 b(=)f(TOUT)h(+)f(TWOHR)-2546
+30220 y Fa(124)1909 b Fi(70)2906 b(CONTINUE)-2546 31548
+y Fa(125)-2546 32877 y(126)1328 b Fi(C)581 b(Print)h(final)g
+(statistics.)-2546 34205 y Fa(127)4815 b Fi(NST)581 b(=)h(IOPT\(LNST\))
+-2546 35533 y Fa(128)4815 b Fi(NFE)581 b(=)h(IOPT\(LNFE\))-2546
+36862 y Fa(129)4815 b Fi(NPSET)582 b(=)f(IOPT\(LNSETUP\))-2546
+38190 y Fa(130)4815 b Fi(NPE)581 b(=)h(IOPT\(LNPE\))-2546
+39518 y Fa(131)4815 b Fi(NPS)581 b(=)h(IOPT\(LNPS\))-2546
+40847 y Fa(132)4815 b Fi(NNI)581 b(=)h(IOPT\(LNNI\))-2546
+42175 y Fa(133)4815 b Fi(NLI)581 b(=)h(IOPT\(LNLI\))-2546
+43504 y Fa(134)4815 b Fi(AVDIM)582 b(=)f(DBLE\(NLI\))i(/)e(DBLE\(NNI\))
+-2546 44832 y Fa(135)4815 b Fi(NCFN)582 b(=)f(IOPT\(LNCF\))-2546
+46160 y Fa(136)4815 b Fi(NCFL)582 b(=)f(IOPT\(LNCFL\))-2546
+47489 y Fa(137)4815 b Fi(WRITE\(6,80\))583 b(NST,)e(NFE,)h(NPSET,)g
+(NPE,)g(NPS,)g(NNI,)f(NLI,)h(AVDIM,)g(NCFN,)-2546 48817
+y Fa(138)4234 b Fi(1)2906 b(NCFL)-2546 50145 y Fa(139)2490
+b Fi(80)1163 b(FORMAT\(//'Final)583 b(statistics:'//)-2546
+51474 y Fa(140)4234 b Fi(1)581 b(')g(number)h(of)g(steps)4650
+b(=)581 b(',)h(I5,)f(5X,)-2546 52802 y Fa(141)4234 b
+Fi(2)581 b('number)h(of)g(f)f(evals.)2907 b(=',)581 b(I5/)-2546
+54130 y Fa(142)4234 b Fi(3)581 b(')g(number)h(of)g(prec.)g(setups)g(=)f
+(',)h(I5/)-2546 55459 y Fa(143)4234 b Fi(4)581 b(')g(number)h(of)g
+(prec.)g(evals.)g(=)f(',)h(I5,)f(5X,)-2546 56787 y Fa(144)4234
+b Fi(5)581 b('number)h(of)g(prec.)g(solves)g(=)f(',)g(I5/)-2546
+58115 y Fa(145)4234 b Fi(6)581 b(')g(number)h(of)g(nonl.)g(iters.)g(=)f
+(',)h(I5,)f(5X,)-2546 59444 y Fa(146)4234 b Fi(7)581
+b('number)h(of)g(lin.)f(iters.)1164 b(=)581 b(',)g(I5/)-2546
+60772 y Fa(147)4234 b Fi(8)581 b(')g(average)i(Krylov)f(subspace)g
+(dimension)g(\(NLI/NNI\))1164 b(=)581 b(',)h(E14.6/)-2546
+62100 y Fa(148)4234 b Fi(9)581 b(')g(number)h(of)g(conv.)g(failures..)g
+(nonlinear)h(=)e(',)h(I3,')1162 b(linear)583 b(=)e(',)g(I3\))-2546
+63429 y Fa(149)1328 b Fi(C)-2546 64757 y Fa(150)4815
+b Fi(CALL)582 b(FCVFREE)-2546 66086 y Fa(151)4815 b Fi(CALL)582
+b(FNVFREES)-2546 67414 y Fa(152)1328 b Fi(C)-2546 68742
+y Fa(153)4815 b Fi(STOP)-2546 70071 y Fa(154)g Fi(END)-2546
+71399 y Fa(155)-2546 72727 y(156)g Fi(SUBROUTINE)583
+b(INITKX\(MESHX,)g(MESHY,)f(U0\))-2546 74056 y Fa(157)1328
+b Fi(C)581 b(Routine)h(to)g(set)g(problem)g(constants)g(and)g(initial)g
+(values)-2546 75384 y Fa(158)1328 b Fi(C)-2546 76712
+y Fa(159)4815 b Fi(IMPLICIT)582 b(NONE)-2546 78041 y
+Fa(160)1328 b Fi(C)p Black 23091 81741 a Fs(102)p Black
+eop
+%%Page: 103 107
+103 106 bop Black Black 1454 7638 a Fa(161)4815 b Fi(INTEGER*4)582
+b(MESHX,)g(MESHY)1454 8966 y Fa(162)4815 b Fi(INTEGER*4)582
+b(MX,)g(MY,)g(MM,)f(JY,)h(JX,)f(NEQ)1454 10295 y Fa(163)4815
+b Fi(DOUBLE)582 b(PRECISION)g(U0)1454 11623 y Fa(164)4815
+b Fi(DIMENSION)582 b(U0\(2,MESHX,MESHY\))1454 12951 y
+Fa(165)4815 b Fi(DOUBLE)582 b(PRECISION)g(Q1,)g(Q2,)g(Q3,)f(Q4,)h(A3,)f
+(A4,)h(OM,)g(C3,)f(DY,)h(HDCO)1454 14280 y Fa(166)4815
+b Fi(DOUBLE)582 b(PRECISION)g(VDCO,)g(HACO,)g(X,)g(Y)1454
+15608 y Fa(167)4815 b Fi(DOUBLE)582 b(PRECISION)g(CX,)g(CY,)g(DKH,)f
+(DKV0,)h(DX,)g(HALFDA,)g(PI,)g(VEL)1454 16936 y Fa(168)1328
+b Fi(C)1454 18265 y Fa(169)4815 b Fi(COMMON)582 b(/PCOM/)g(Q1,)g(Q2,)f
+(Q3,)h(Q4,)f(A3,)h(A4,)g(OM,)f(C3,)h(DY)1454 19593 y
+Fa(170)4815 b Fi(COMMON)582 b(/PCOM/)g(HDCO,)g(VDCO,)g(HACO,)g(MX,)f
+(MY,)h(MM)1454 20922 y Fa(171)4815 b Fi(DATA)582 b(DKH/4.0D-6/,)h
+(VEL/0.001D0/,)g(DKV0/1.0D-8/,)g(HALFDA/4.32D4/,)1454
+22250 y Fa(172)4234 b Fi(1)2906 b(PI/3.1415926535898D0/)1454
+23578 y Fa(173)1328 b Fi(C)1454 24907 y Fa(174)g Fi(C)581
+b(Load)h(Common)g(block)g(of)f(problem)i(parameters.)1454
+26235 y Fa(175)4815 b Fi(MX)581 b(=)h(MESHX)1454 27563
+y Fa(176)4815 b Fi(MY)581 b(=)h(MESHY)1454 28892 y Fa(177)4815
+b Fi(MM)581 b(=)h(MX)f(*)g(MY)1454 30220 y Fa(178)4815
+b Fi(NEQ)581 b(=)h(2)f(*)g(MM)1454 31548 y Fa(179)4815
+b Fi(Q1)581 b(=)h(1.63D-16)1454 32877 y Fa(180)4815 b
+Fi(Q2)581 b(=)h(4.66D-16)1454 34205 y Fa(181)4815 b Fi(A3)581
+b(=)h(22.62D0)1454 35533 y Fa(182)4815 b Fi(A4)581 b(=)h(7.601D0)1454
+36862 y Fa(183)4815 b Fi(OM)581 b(=)h(PI)f(/)g(HALFDA)1454
+38190 y Fa(184)4815 b Fi(C3)581 b(=)h(3.7D16)1454 39518
+y Fa(185)4815 b Fi(DX)581 b(=)h(20.0D0)g(/)f(\(MX)h(-)f(1.0D0\))1454
+40847 y Fa(186)4815 b Fi(DY)581 b(=)h(20.0D0)g(/)f(\(MY)h(-)f(1.0D0\))
+1454 42175 y Fa(187)4815 b Fi(HDCO)582 b(=)f(DKH)h(/)f(DX**2)1454
+43504 y Fa(188)4815 b Fi(HACO)582 b(=)f(VEL)h(/)f(\(2.0D0)h(*)f(DX\))
+1454 44832 y Fa(189)4815 b Fi(VDCO)582 b(=)f(\(1.0D0)h(/)f(DY**2\))h(*)
+g(DKV0)1454 46160 y Fa(190)1328 b Fi(C)1454 47489 y Fa(191)g
+Fi(C)581 b(Set)h(initial)g(profiles.)1454 48817 y Fa(192)4815
+b Fi(DO)581 b(20)h(JY)f(=)h(1,)f(MY)1454 50145 y Fa(193)5977
+b Fi(Y)581 b(=)h(30.0D0)g(+)f(\(JY)h(-)f(1.0D0\))h(*)f(DY)1454
+51474 y Fa(194)5977 b Fi(CY)582 b(=)f(\(0.1D0)h(*)f(\(Y)h(-)f
+(40.0D0\)\)**2)1454 52802 y Fa(195)5977 b Fi(CY)582 b(=)f(1.0D0)h(-)f
+(CY)h(+)f(0.5D0)h(*)f(CY**2)1454 54130 y Fa(196)5977
+b Fi(DO)582 b(10)f(JX)h(=)f(1,)g(MX)1454 55459 y Fa(197)7139
+b Fi(X)582 b(=)f(\(JX)h(-)f(1.0D0\))h(*)f(DX)1454 56787
+y Fa(198)7139 b Fi(CX)582 b(=)f(\(0.1D0)h(*)g(\(X)f(-)g(10.0D0\)\)**2)
+1454 58115 y Fa(199)7139 b Fi(CX)582 b(=)f(1.0D0)h(-)f(CX)h(+)f(0.5D0)h
+(*)f(CX**2)1454 59444 y Fa(200)7139 b Fi(U0\(1,JX,JY\))583
+b(=)f(1.0D6)f(*)h(CX)f(*)h(CY)1454 60772 y Fa(201)7139
+b Fi(U0\(2,JX,JY\))583 b(=)f(1.0D12)g(*)f(CX)g(*)h(CY)1454
+62100 y Fa(202)1909 b Fi(10)4068 b(CONTINUE)1454 63429
+y Fa(203)1909 b Fi(20)2906 b(CONTINUE)1454 64757 y Fa(204)1328
+b Fi(C)1454 66086 y Fa(205)4815 b Fi(RETURN)1454 67414
+y Fa(206)g Fi(END)1454 68742 y Fa(207)1454 70071 y(208)g
+Fi(SUBROUTINE)583 b(FCVFUN\(T,)f(U,)f(UDOT\))1454 71399
+y Fa(209)1328 b Fi(C)581 b(Routine)h(for)g(right-hand)h(side)e
+(function)i(f)1454 72727 y Fa(210)1328 b Fi(C)1454 74056
+y Fa(211)4815 b Fi(IMPLICIT)582 b(NONE)1454 75384 y Fa(212)1328
+b Fi(C)1454 76712 y Fa(213)4815 b Fi(INTEGER)582 b(ILEFT,)g(IRIGHT)1454
+78041 y Fa(214)4815 b Fi(INTEGER*4)582 b(JX,)g(JY,)g(MX,)f(MY,)h(MM,)f
+(IBLOK0,)i(IBLOK,)f(IDN,)f(IUP)p Black 27091 81741 a
+Fs(103)p Black eop
+%%Page: 104 108
+104 107 bop Black Black -2546 7638 a Fa(215)4815 b Fi(DOUBLE)582
+b(PRECISION)g(T,)g(U\(2,*\),)g(UDOT\(2,*\))-2546 8966
+y Fa(216)4815 b Fi(DOUBLE)582 b(PRECISION)g(Q1,)g(Q2,)g(Q3,)f(Q4,)h
+(A3,)f(A4,)h(OM,)g(C3,)f(DY,)h(HDCO)-2546 10295 y Fa(217)4815
+b Fi(DOUBLE)582 b(PRECISION)g(VDCO,)g(HACO)-2546 11623
+y Fa(218)4815 b Fi(DOUBLE)582 b(PRECISION)g(C1,)g(C2,)g(C1DN,)g(C2DN,)f
+(C1UP,)h(C2UP,)g(C1LT,)g(C2LT)-2546 12951 y Fa(219)4815
+b Fi(DOUBLE)582 b(PRECISION)g(C1RT,)g(C2RT,)g(CYDN,)g(CYUP,)g(HORD1,)g
+(HORD2,)g(HORAD1)-2546 14280 y Fa(220)4815 b Fi(DOUBLE)582
+b(PRECISION)g(HORAD2,)h(QQ1,)e(QQ2,)h(QQ3,)g(QQ4,)g(RKIN1,)g(RKIN2,)g
+(S)-2546 15608 y Fa(221)4815 b Fi(DOUBLE)582 b(PRECISION)g(VERTD1,)h
+(VERTD2,)f(YDN,)g(YUP)-2546 16936 y Fa(222)1328 b Fi(C)-2546
+18265 y Fa(223)4815 b Fi(COMMON)582 b(/PCOM/)g(Q1,)g(Q2,)f(Q3,)h(Q4,)f
+(A3,)h(A4,)g(OM,)f(C3,)h(DY)-2546 19593 y Fa(224)4815
+b Fi(COMMON)582 b(/PCOM/)g(HDCO,)g(VDCO,)g(HACO,)g(MX,)f(MY,)h(MM)-2546
+20922 y Fa(225)1328 b Fi(C)-2546 22250 y Fa(226)g Fi(C)581
+b(Set)h(diurnal)g(rate)g(coefficients.)-2546 23578 y
+Fa(227)4815 b Fi(S)581 b(=)g(SIN\(OM)i(*)e(T\))-2546
+24907 y Fa(228)4815 b Fi(IF)581 b(\(S)h(.GT.)g(0.0D0\))g(THEN)-2546
+26235 y Fa(229)5977 b Fi(Q3)582 b(=)f(EXP\(-A3)h(/)f(S\))-2546
+27563 y Fa(230)5977 b Fi(Q4)582 b(=)f(EXP\(-A4)h(/)f(S\))-2546
+28892 y Fa(231)4815 b Fi(ELSE)-2546 30220 y Fa(232)5977
+b Fi(Q3)582 b(=)f(0.0D0)-2546 31548 y Fa(233)5977 b Fi(Q4)582
+b(=)f(0.0D0)-2546 32877 y Fa(234)4815 b Fi(ENDIF)-2546
+34205 y Fa(235)1328 b Fi(C)-2546 35533 y Fa(236)g Fi(C)581
+b(Loop)h(over)g(all)f(grid)h(points.)-2546 36862 y Fa(237)4815
+b Fi(DO)581 b(20)h(JY)f(=)h(1,)f(MY)-2546 38190 y Fa(238)5977
+b Fi(YDN)582 b(=)f(30.0D0)h(+)f(\(JY)h(-)f(1.5D0\))h(*)g(DY)-2546
+39518 y Fa(239)5977 b Fi(YUP)582 b(=)f(YDN)h(+)f(DY)-2546
+40847 y Fa(240)5977 b Fi(CYDN)582 b(=)f(VDCO)h(*)f(EXP\(0.2D0)i(*)e
+(YDN\))-2546 42175 y Fa(241)5977 b Fi(CYUP)582 b(=)f(VDCO)h(*)f
+(EXP\(0.2D0)i(*)e(YUP\))-2546 43504 y Fa(242)5977 b Fi(IBLOK0)582
+b(=)g(\(JY)f(-)g(1\))h(*)f(MX)-2546 44832 y Fa(243)5977
+b Fi(IDN)582 b(=)f(-MX)-2546 46160 y Fa(244)5977 b Fi(IF)582
+b(\(JY)f(.EQ.)h(1\))f(IDN)h(=)f(MX)-2546 47489 y Fa(245)5977
+b Fi(IUP)582 b(=)f(MX)-2546 48817 y Fa(246)5977 b Fi(IF)582
+b(\(JY)f(.EQ.)h(MY\))g(IUP)f(=)g(-MX)-2546 50145 y Fa(247)5977
+b Fi(DO)582 b(10)f(JX)h(=)f(1,)g(MX)-2546 51474 y Fa(248)7139
+b Fi(IBLOK)582 b(=)g(IBLOK0)g(+)f(JX)-2546 52802 y Fa(249)7139
+b Fi(C1)582 b(=)f(U\(1,IBLOK\))-2546 54130 y Fa(250)7139
+b Fi(C2)582 b(=)f(U\(2,IBLOK\))-2546 55459 y Fa(251)1328
+b Fi(C)581 b(Set)h(kinetic)g(rate)g(terms.)-2546 56787
+y Fa(252)7139 b Fi(QQ1)582 b(=)f(Q1)h(*)f(C1)h(*)f(C3)-2546
+58115 y Fa(253)7139 b Fi(QQ2)582 b(=)f(Q2)h(*)f(C1)h(*)f(C2)-2546
+59444 y Fa(254)7139 b Fi(QQ3)582 b(=)f(Q3)h(*)f(C3)-2546
+60772 y Fa(255)7139 b Fi(QQ4)582 b(=)f(Q4)h(*)f(C2)-2546
+62100 y Fa(256)7139 b Fi(RKIN1)582 b(=)g(-QQ1)f(-)h(QQ2)f(+)h(2.0D0)g
+(*)f(QQ3)g(+)h(QQ4)-2546 63429 y Fa(257)7139 b Fi(RKIN2)582
+b(=)g(QQ1)f(-)h(QQ2)f(-)g(QQ4)-2546 64757 y Fa(258)1328
+b Fi(C)581 b(Set)h(vertical)g(diffusion)h(terms.)-2546
+66086 y Fa(259)7139 b Fi(C1DN)582 b(=)g(U\(1,IBLOK)g(+)f(IDN\))-2546
+67414 y Fa(260)7139 b Fi(C2DN)582 b(=)g(U\(2,IBLOK)g(+)f(IDN\))-2546
+68742 y Fa(261)7139 b Fi(C1UP)582 b(=)g(U\(1,IBLOK)g(+)f(IUP\))-2546
+70071 y Fa(262)7139 b Fi(C2UP)582 b(=)g(U\(2,IBLOK)g(+)f(IUP\))-2546
+71399 y Fa(263)7139 b Fi(VERTD1)583 b(=)e(CYUP)h(*)f(\(C1UP)h(-)f(C1\))
+h(-)f(CYDN)h(*)f(\(C1)h(-)f(C1DN\))-2546 72727 y Fa(264)7139
+b Fi(VERTD2)583 b(=)e(CYUP)h(*)f(\(C2UP)h(-)f(C2\))h(-)f(CYDN)h(*)f
+(\(C2)h(-)f(C2DN\))-2546 74056 y Fa(265)1328 b Fi(C)581
+b(Set)h(horizontal)h(diffusion)f(and)g(advection)g(terms.)-2546
+75384 y Fa(266)7139 b Fi(ILEFT)582 b(=)g(-1)-2546 76712
+y Fa(267)7139 b Fi(IF)582 b(\(JX)g(.EQ.)f(1\))h(ILEFT)g(=)f(1)-2546
+78041 y Fa(268)7139 b Fi(IRIGHT)583 b(=)e(1)p Black 23091
+81741 a Fs(104)p Black eop
+%%Page: 105 109
+105 108 bop Black Black 1454 7638 a Fa(269)7139 b Fi(IF)582
+b(\(JX)g(.EQ.)f(MX\))h(IRIGHT)g(=)f(-1)1454 8966 y Fa(270)7139
+b Fi(C1LT)582 b(=)g(U\(1,IBLOK)g(+)f(ILEFT\))1454 10295
+y Fa(271)7139 b Fi(C2LT)582 b(=)g(U\(2,IBLOK)g(+)f(ILEFT\))1454
+11623 y Fa(272)7139 b Fi(C1RT)582 b(=)g(U\(1,IBLOK)g(+)f(IRIGHT\))1454
+12951 y Fa(273)7139 b Fi(C2RT)582 b(=)g(U\(2,IBLOK)g(+)f(IRIGHT\))1454
+14280 y Fa(274)7139 b Fi(HORD1)582 b(=)g(HDCO)f(*)h(\(C1RT)g(-)f(2.0D0)
+h(*)f(C1)h(+)f(C1LT\))1454 15608 y Fa(275)7139 b Fi(HORD2)582
+b(=)g(HDCO)f(*)h(\(C2RT)g(-)f(2.0D0)h(*)f(C2)h(+)f(C2LT\))1454
+16936 y Fa(276)7139 b Fi(HORAD1)583 b(=)e(HACO)h(*)f(\(C1RT)h(-)f
+(C1LT\))1454 18265 y Fa(277)7139 b Fi(HORAD2)583 b(=)e(HACO)h(*)f
+(\(C2RT)h(-)f(C2LT\))1454 19593 y Fa(278)1328 b Fi(C)581
+b(Load)h(all)g(terms)g(into)f(UDOT.)1454 20922 y Fa(279)7139
+b Fi(UDOT\(1,IBLOK\))584 b(=)d(VERTD1)h(+)f(HORD1)h(+)f(HORAD1)h(+)g
+(RKIN1)1454 22250 y Fa(280)7139 b Fi(UDOT\(2,IBLOK\))584
+b(=)d(VERTD2)h(+)f(HORD2)h(+)f(HORAD2)h(+)g(RKIN2)1454
+23578 y Fa(281)1909 b Fi(10)4068 b(CONTINUE)1454 24907
+y Fa(282)1909 b Fi(20)2906 b(CONTINUE)1454 26235 y Fa(283)4815
+b Fi(RETURN)1454 27563 y Fa(284)g Fi(END)1454 28892 y
+Fa(285)1454 30220 y(286)g Fi(SUBROUTINE)583 b(FCVPSET\(T,)f(U,)g(FU,)f
+(JOK,)h(JCUR,)g(GAMMA,)g(EWT,)g(H,)1454 31548 y Fa(287)4234
+b Fi(1)11042 b(V1,)581 b(V2,)h(V3,)g(IER\))1454 32877
+y Fa(288)1328 b Fi(C)581 b(Routine)h(to)g(set)g(and)f(preprocess)i
+(block-diagonal)g(preconditioner.)1454 34205 y Fa(289)1328
+b Fi(C)581 b(Note:)h(The)g(dimensions)g(in)g(/BDJ/)g(below)g(assume)g
+(at)f(most)h(100)f(mesh)h(points.)1454 35533 y Fa(290)1328
+b Fi(C)1454 36862 y Fa(291)4815 b Fi(IMPLICIT)582 b(NONE)1454
+38190 y Fa(292)1328 b Fi(C)1454 39518 y Fa(293)4815 b
+Fi(INTEGER)582 b(IER,)g(JOK,)g(JCUR,)f(H)1454 40847 y
+Fa(294)4815 b Fi(INTEGER*4)582 b(LENBD,)g(JY,)g(JX,)g(IBLOK,)g(MX,)f
+(MY,)h(MM)1454 42175 y Fa(295)4815 b Fi(INTEGER*4)582
+b(IBLOK0,)h(IPP)1454 43504 y Fa(296)4815 b Fi(DOUBLE)582
+b(PRECISION)g(T,)g(U\(2,*\),)g(GAMMA)1454 44832 y Fa(297)4815
+b Fi(DOUBLE)582 b(PRECISION)g(Q1,)g(Q2,)g(Q3,)f(Q4,)h(A3,)f(A4,)h(OM,)g
+(C3,)f(DY,)h(HDCO)1454 46160 y Fa(298)4815 b Fi(DOUBLE)582
+b(PRECISION)g(VDCO,)g(HACO)1454 47489 y Fa(299)4815 b
+Fi(DOUBLE)582 b(PRECISION)g(BD,)g(P,)f(FU,)h(EWT,)g(V1,)f(V2,)h(V3)1454
+48817 y Fa(300)4815 b Fi(DOUBLE)582 b(PRECISION)g(C1,)g(C2,)g(CYDN,)g
+(CYUP,)f(DIAG,)h(TEMP,)g(YDN,)g(YUP)1454 50145 y Fa(301)1328
+b Fi(C)1454 51474 y Fa(302)4815 b Fi(COMMON)582 b(/PCOM/)g(Q1,)g(Q2,)f
+(Q3,)h(Q4,)f(A3,)h(A4,)g(OM,)f(C3,)h(DY)1454 52802 y
+Fa(303)4815 b Fi(COMMON)582 b(/PCOM/)g(HDCO,)g(VDCO,)g(HACO,)g(MX,)f
+(MY,)h(MM)1454 54130 y Fa(304)4815 b Fi(COMMON)582 b(/BDJ/)g
+(BD\(2,2,100\),)h(P\(2,2,100\),)g(IPP\(2,100\))1454 55459
+y Fa(305)1328 b Fi(C)1454 56787 y Fa(306)4815 b Fi(IER)581
+b(=)h(0)1454 58115 y Fa(307)4815 b Fi(LENBD)582 b(=)f(4)g(*)h(MM)1454
+59444 y Fa(308)1328 b Fi(C)1454 60772 y Fa(309)g Fi(C)581
+b(If)h(JOK)f(=)h(1,)f(copy)h(BD)f(to)h(P.)1454 62100
+y Fa(310)4815 b Fi(IF)581 b(\(JOK)h(.EQ.)g(1\))f(THEN)1454
+63429 y Fa(311)5977 b Fi(CALL)582 b(DCOPY\(LENBD,)h(BD\(1,1,1\),)g(1,)e
+(P\(1,1,1\),)h(1\))1454 64757 y Fa(312)5977 b Fi(JCUR)582
+b(=)f(0)1454 66086 y Fa(313)4815 b Fi(ELSE)1454 67414
+y Fa(314)1328 b Fi(C)1454 68742 y Fa(315)g Fi(C)581 b(JOK)h(=)f(0.)1163
+b(Compute)582 b(diagonal)g(Jacobian)h(blocks)f(and)f(copy)h(to)f(P.)
+1454 70071 y Fa(316)1328 b Fi(C)1744 b(\(using)582 b(q4)f(value)h
+(computed)g(on)g(last)g(FCVFUN)g(call\).)1454 71399 y
+Fa(317)4815 b Fi(DO)581 b(20)h(JY)f(=)h(1,)f(MY)1454
+72727 y Fa(318)5977 b Fi(YDN)582 b(=)f(30.0D0)h(+)f(\(JY)h(-)f(1.5D0\))
+h(*)g(DY)1454 74056 y Fa(319)5977 b Fi(YUP)582 b(=)f(YDN)h(+)f(DY)1454
+75384 y Fa(320)5977 b Fi(CYDN)582 b(=)f(VDCO)h(*)f(EXP\(0.2D0)i(*)e
+(YDN\))1454 76712 y Fa(321)5977 b Fi(CYUP)582 b(=)f(VDCO)h(*)f
+(EXP\(0.2D0)i(*)e(YUP\))1454 78041 y Fa(322)5977 b Fi(DIAG)582
+b(=)f(-\(CYDN)h(+)g(CYUP)f(+)h(2.0D0)g(*)f(HDCO\))p Black
+27091 81741 a Fs(105)p Black eop
+%%Page: 106 110
+106 109 bop Black Black -2546 7638 a Fa(323)5977 b Fi(IBLOK0)582
+b(=)g(\(JY)f(-)g(1\))h(*)f(MX)-2546 8966 y Fa(324)5977
+b Fi(DO)582 b(10)f(JX)h(=)f(1,)g(MX)-2546 10295 y Fa(325)7139
+b Fi(IBLOK)582 b(=)g(IBLOK0)g(+)f(JX)-2546 11623 y Fa(326)7139
+b Fi(C1)582 b(=)f(U\(1,IBLOK\))-2546 12951 y Fa(327)7139
+b Fi(C2)582 b(=)f(U\(2,IBLOK\))-2546 14280 y Fa(328)7139
+b Fi(BD\(1,1,IBLOK\))584 b(=)d(\(-Q1)h(*)f(C3)g(-)h(Q2)f(*)g(C2\))h(+)f
+(DIAG)-2546 15608 y Fa(329)7139 b Fi(BD\(1,2,IBLOK\))584
+b(=)d(-Q2)g(*)h(C1)f(+)h(Q4)-2546 16936 y Fa(330)7139
+b Fi(BD\(2,1,IBLOK\))584 b(=)1162 b(Q1)581 b(*)h(C3)f(-)h(Q2)f(*)g(C2)
+-2546 18265 y Fa(331)7139 b Fi(BD\(2,2,IBLOK\))584 b(=)d(\(-Q2)h(*)f
+(C1)g(-)h(Q4\))f(+)h(DIAG)-2546 19593 y Fa(332)1909 b
+Fi(10)4068 b(CONTINUE)-2546 20922 y Fa(333)1909 b Fi(20)2906
+b(CONTINUE)-2546 22250 y Fa(334)4815 b Fi(CALL)582 b(DCOPY\(LENBD,)h
+(BD\(1,1,1\),)f(1,)g(P\(1,1,1\),)g(1\))-2546 23578 y
+Fa(335)4815 b Fi(JCUR)582 b(=)f(1)-2546 24907 y Fa(336)4815
+b Fi(ENDIF)-2546 26235 y Fa(337)1328 b Fi(C)-2546 27563
+y Fa(338)g Fi(C)581 b(Scale)h(P)f(by)h(-GAMMA.)-2546
+28892 y Fa(339)4815 b Fi(TEMP)582 b(=)f(-GAMMA)-2546
+30220 y Fa(340)4815 b Fi(CALL)582 b(DSCAL\(LENBD,)h(TEMP,)e(P,)h(1\))
+-2546 31548 y Fa(341)1328 b Fi(C)-2546 32877 y Fa(342)g
+Fi(C)581 b(Add)h(identity)g(matrix)g(and)g(do)f(LU)h(decompositions)h
+(on)e(blocks,)i(in)e(place.)-2546 34205 y Fa(343)4815
+b Fi(DO)581 b(40)h(IBLOK)g(=)f(1,)g(MM)-2546 35533 y
+Fa(344)5977 b Fi(P\(1,1,IBLOK\))583 b(=)e(P\(1,1,IBLOK\))i(+)f(1.0D0)
+-2546 36862 y Fa(345)5977 b Fi(P\(2,2,IBLOK\))583 b(=)e(P\(2,2,IBLOK\))
+i(+)f(1.0D0)-2546 38190 y Fa(346)5977 b Fi(CALL)582 b
+(DGEFA\(P\(1,1,IBLOK\),)i(2,)d(2,)h(IPP\(1,IBLOK\),)h(IER\))-2546
+39518 y Fa(347)5977 b Fi(IF)582 b(\(IER)f(.NE.)h(0\))g(RETURN)-2546
+40847 y Fa(348)1909 b Fi(40)2906 b(CONTINUE)-2546 42175
+y Fa(349)1328 b Fi(C)-2546 43504 y Fa(350)4815 b Fi(RETURN)-2546
+44832 y Fa(351)g Fi(END)-2546 46160 y Fa(352)-2546 47489
+y(353)g Fi(SUBROUTINE)583 b(FCVPSOL\(T,)f(U,)g(FU,)f(VTEMP,)h(GAMMA,)g
+(EWT,)g(DELTA,)-2546 48817 y Fa(354)4234 b Fi(1)11042
+b(R,)581 b(LR,)h(Z,)f(IER\))-2546 50145 y Fa(355)1328
+b Fi(C)581 b(Routine)h(to)g(solve)g(preconditioner)h(linear)f(system.)
+-2546 51474 y Fa(356)1328 b Fi(C)581 b(Note:)h(The)g(dimensions)g(in)g
+(/BDJ/)g(below)g(assume)g(at)f(most)h(100)f(mesh)h(points.)-2546
+52802 y Fa(357)1328 b Fi(C)-2546 54130 y Fa(358)4815
+b Fi(IMPLICIT)582 b(NONE)-2546 55459 y Fa(359)1328 b
+Fi(C)-2546 56787 y Fa(360)4815 b Fi(INTEGER)582 b(IER)-2546
+58115 y Fa(361)4815 b Fi(INTEGER*4)582 b(I,)g(NEQ,)g(MX,)f(MY,)h(MM,)f
+(LR,)h(IPP)-2546 59444 y Fa(362)4815 b Fi(DOUBLE)582
+b(PRECISION)g(R\(*\),)g(Z\(2,*\))-2546 60772 y Fa(363)4815
+b Fi(DOUBLE)582 b(PRECISION)g(Q1,)g(Q2,)g(Q3,)f(Q4,)h(A3,)f(A4,)h(OM,)g
+(C3,)f(DY,)h(HDCO)-2546 62100 y Fa(364)4815 b Fi(DOUBLE)582
+b(PRECISION)g(VDCO,)g(HACO)-2546 63429 y Fa(365)4815
+b Fi(DOUBLE)582 b(PRECISION)g(BD,)g(P,)f(T,)h(U,)f(FU,)h(VTEMP,)g(EWT,)
+g(DELTA,)g(GAMMA)-2546 64757 y Fa(366)1328 b Fi(C)-2546
+66086 y Fa(367)4815 b Fi(COMMON)582 b(/PCOM/)g(Q1,)g(Q2,)f(Q3,)h(Q4,)f
+(A3,)h(A4,)g(OM,)f(C3,)h(DY)-2546 67414 y Fa(368)4815
+b Fi(COMMON)582 b(/PCOM/)g(HDCO,)g(VDCO,)g(HACO,)g(MX,)f(MY,)h(MM)-2546
+68742 y Fa(369)4815 b Fi(COMMON)582 b(/BDJ/)g(BD\(2,2,100\),)h
+(P\(2,2,100\),)g(IPP\(2,100\))-2546 70071 y Fa(370)4815
+b Fi(COMMON)582 b(/PBDIM/)g(NEQ)-2546 71399 y Fa(371)1328
+b Fi(C)-2546 72727 y Fa(372)g Fi(C)581 b(Solve)h(the)g(block-diagonal)h
+(system)f(Px)g(=)f(r)g(using)h(LU)f(factors)i(stored)f(in)f(P)-2546
+74056 y Fa(373)1328 b Fi(C)581 b(and)h(pivot)g(data)g(in)f(IPP,)h(and)f
+(return)h(the)g(solution)g(in)g(Z.)-2546 75384 y Fa(374)4815
+b Fi(IER)581 b(=)h(0)-2546 76712 y Fa(375)4815 b Fi(CALL)582
+b(DCOPY\(NEQ,)g(R,)g(1,)f(Z,)h(1\))-2546 78041 y Fa(376)4815
+b Fi(DO)581 b(10)h(I)f(=)g(1,)h(MM)p Black 23091 81741
+a Fs(106)p Black eop
+%%Page: 107 111
+107 110 bop Black Black 1454 7638 a Fa(377)5977 b Fi(CALL)582
+b(DGESL\(P\(1,1,I\),)h(2,)f(2,)f(IPP\(1,I\),)i(Z\(1,I\),)f(0\))1454
+8966 y Fa(378)1909 b Fi(10)2906 b(CONTINUE)1454 10295
+y Fa(379)4815 b Fi(RETURN)1454 11623 y Fa(380)g Fi(END)1454
+12951 y Fa(381)1454 14280 y(382)g Fi(subroutine)583 b(dgefa\(a,)f(lda,)
+g(n,)f(ipvt,)h(info\))1454 15608 y Fa(383)1328 b Fi(c)1454
+16936 y Fa(384)4815 b Fi(implicit)582 b(none)1454 18265
+y Fa(385)1328 b Fi(c)1454 19593 y Fa(386)4815 b Fi(integer)582
+b(info,)g(idamax,)g(j,)g(k,)f(kp1,)h(l,)f(nm1,)h(n)1454
+20922 y Fa(387)4815 b Fi(integer*4)582 b(lda,)g(ipvt\(1\))1454
+22250 y Fa(388)4815 b Fi(double)582 b(precision)g(a\(lda,1\),)h(t)1454
+23578 y Fa(389)1328 b Fi(c)1454 24907 y Fa(390)g Fi(c)2906
+b(dgefa)582 b(factors)g(a)f(double)h(precision)h(matrix)f(by)f
+(gaussian)i(elimination.)1454 26235 y Fa(391)1328 b Fi(c)1454
+27563 y Fa(392)g Fi(c)2906 b(dgefa)582 b(is)f(usually)h(called)g(by)g
+(dgeco,)g(but)g(it)f(can)h(be)f(called)1454 28892 y Fa(393)1328
+b Fi(c)2906 b(directly)582 b(with)g(a)f(saving)h(in)g(time)g(if)1162
+b(rcond)h(is)582 b(not)f(needed.)1454 30220 y Fa(394)1328
+b Fi(c)2906 b(\(time)582 b(for)f(dgeco\))h(=)g(\(1)f(+)g(9/n\)*\(time)i
+(for)f(dgefa\))g(.)1454 31548 y Fa(395)1328 b Fi(c)1454
+32877 y Fa(396)g Fi(c)2906 b(on)581 b(entry)1454 34205
+y Fa(397)1328 b Fi(c)1454 35533 y Fa(398)g Fi(c)4649
+b(a)4069 b(double)582 b(precision\(lda,)h(n\))1454 36862
+y Fa(399)1328 b Fi(c)9299 b(the)581 b(matrix)h(to)g(be)f(factored.)1454
+38190 y Fa(400)1328 b Fi(c)1454 39518 y Fa(401)g Fi(c)4649
+b(lda)2907 b(integer)1454 40847 y Fa(402)1328 b Fi(c)9299
+b(the)581 b(leading)h(dimension)h(of)e(the)h(array)1163
+b(a)581 b(.)1454 42175 y Fa(403)1328 b Fi(c)1454 43504
+y Fa(404)g Fi(c)4649 b(n)4069 b(integer)1454 44832 y
+Fa(405)1328 b Fi(c)9299 b(the)581 b(order)h(of)f(the)h(matrix)1163
+b(a)582 b(.)1454 46160 y Fa(406)1328 b Fi(c)1454 47489
+y Fa(407)g Fi(c)2906 b(on)581 b(return)1454 48817 y Fa(408)1328
+b Fi(c)1454 50145 y Fa(409)g Fi(c)4649 b(a)4069 b(an)581
+b(upper)h(triangular)h(matrix)f(and)f(the)h(multipliers)1454
+51474 y Fa(410)1328 b Fi(c)9299 b(which)581 b(were)h(used)g(to)f
+(obtain)h(it.)1454 52802 y Fa(411)1328 b Fi(c)9299 b(the)581
+b(factorization)i(can)f(be)f(written)1164 b(a)581 b(=)g(l*u)1163
+b(where)1454 54130 y Fa(412)1328 b Fi(c)9299 b(l)1162
+b(is)581 b(a)h(product)g(of)f(permutation)i(and)f(unit)f(lower)1454
+55459 y Fa(413)1328 b Fi(c)9299 b(triangular)582 b(matrices)h(and)1162
+b(u)h(is)581 b(upper)h(triangular.)1454 56787 y Fa(414)1328
+b Fi(c)1454 58115 y Fa(415)g Fi(c)4649 b(ipvt)2326 b(integer\(n\))1454
+59444 y Fa(416)1328 b Fi(c)9299 b(an)581 b(integer)h(vector)g(of)g
+(pivot)g(indices.)1454 60772 y Fa(417)1328 b Fi(c)1454
+62100 y Fa(418)g Fi(c)4649 b(info)2326 b(integer)1454
+63429 y Fa(419)1328 b Fi(c)9299 b(=)581 b(0)1162 b(normal)582
+b(value.)1454 64757 y Fa(420)1328 b Fi(c)9299 b(=)581
+b(k)1162 b(if)h(u\(k,k\))582 b(.eq.)g(0.0)f(.)1163 b(this)581
+b(is)h(not)f(an)h(error)1454 66086 y Fa(421)1328 b Fi(c)12204
+b(condition)583 b(for)e(this)h(subroutine,)h(but)e(it)h(does)1454
+67414 y Fa(422)1328 b Fi(c)12204 b(indicate)583 b(that)e(dgesl)h(or)g
+(dgedi)g(will)f(divide)h(by)g(zero)1454 68742 y Fa(423)1328
+b Fi(c)12204 b(if)582 b(called.)1163 b(use)g(rcond)g(in)581
+b(dgeco)h(for)g(a)f(reliable)1454 70071 y Fa(424)1328
+b Fi(c)12204 b(indication)583 b(of)e(singularity.)1454
+71399 y Fa(425)1328 b Fi(c)1454 72727 y Fa(426)g Fi(c)2906
+b(linpack.)582 b(this)g(version)g(dated)g(08/14/78)g(.)1454
+74056 y Fa(427)1328 b Fi(c)2906 b(cleve)582 b(moler,)g(university)g(of)
+g(new)g(mexico,)g(argonne)g(national)g(lab.)1454 75384
+y Fa(428)1328 b Fi(c)1454 76712 y Fa(429)g Fi(c)2906
+b(subroutines)583 b(and)e(functions)1454 78041 y Fa(430)1328
+b Fi(c)p Black 27091 81741 a Fs(107)p Black eop
+%%Page: 108 112
+108 111 bop Black Black -2546 7638 a Fa(431)1328 b Fi(c)2906
+b(blas)582 b(daxpy,dscal,idamax)-2546 8966 y Fa(432)1328
+b Fi(c)-2546 10295 y Fa(433)g Fi(c)2906 b(internal)582
+b(variables)-2546 11623 y Fa(434)1328 b Fi(c)-2546 12951
+y Fa(435)g Fi(c)2906 b(gaussian)582 b(elimination)h(with)f(partial)g
+(pivoting)-2546 14280 y Fa(436)1328 b Fi(c)-2546 15608
+y Fa(437)4815 b Fi(info)582 b(=)f(0)-2546 16936 y Fa(438)4815
+b Fi(nm1)581 b(=)h(n)f(-)g(1)-2546 18265 y Fa(439)4815
+b Fi(if)581 b(\(nm1)h(.lt.)g(1\))f(go)h(to)f(70)-2546
+19593 y Fa(440)4815 b Fi(do)581 b(60)h(k)f(=)g(1,)h(nm1)-2546
+20922 y Fa(441)6558 b Fi(kp1)582 b(=)f(k)h(+)f(1)-2546
+22250 y Fa(442)1328 b Fi(c)-2546 23578 y Fa(443)g Fi(c)4649
+b(find)582 b(l)f(=)h(pivot)g(index)-2546 24907 y Fa(444)1328
+b Fi(c)-2546 26235 y Fa(445)6558 b Fi(l)582 b(=)f(idamax\(n)h(-)g(k)f
+(+)g(1,)h(a\(k,k\),)g(1\))f(+)h(k)f(-)g(1)-2546 27563
+y Fa(446)6558 b Fi(ipvt\(k\))583 b(=)e(l)-2546 28892
+y Fa(447)1328 b Fi(c)-2546 30220 y Fa(448)g Fi(c)4649
+b(zero)582 b(pivot)g(implies)g(this)g(column)g(already)g
+(triangularized)-2546 31548 y Fa(449)1328 b Fi(c)-2546
+32877 y Fa(450)6558 b Fi(if)582 b(\(a\(l,k\))g(.eq.)g(0.0d0\))g(go)f
+(to)h(40)-2546 34205 y Fa(451)1328 b Fi(c)-2546 35533
+y Fa(452)g Fi(c)6393 b(interchange)583 b(if)e(necessary)-2546
+36862 y Fa(453)1328 b Fi(c)-2546 38190 y Fa(454)8302
+b Fi(if)581 b(\(l)h(.eq.)f(k\))h(go)f(to)h(10)-2546 39518
+y Fa(455)10045 b Fi(t)582 b(=)f(a\(l,k\))-2546 40847
+y Fa(456)10045 b Fi(a\(l,k\))582 b(=)g(a\(k,k\))-2546
+42175 y Fa(457)10045 b Fi(a\(k,k\))582 b(=)g(t)-2546
+43504 y Fa(458)3071 b Fi(10)4069 b(continue)-2546 44832
+y Fa(459)1328 b Fi(c)-2546 46160 y Fa(460)g Fi(c)6393
+b(compute)582 b(multipliers)-2546 47489 y Fa(461)1328
+b Fi(c)-2546 48817 y Fa(462)8302 b Fi(t)581 b(=)g(-1.0d0)h(/)g
+(a\(k,k\))-2546 50145 y Fa(463)8302 b Fi(call)582 b(dscal\(n)g(-)f(k,)g
+(t,)h(a\(k)g(+)f(1,k\),)h(1\))-2546 51474 y Fa(464)1328
+b Fi(c)-2546 52802 y Fa(465)g Fi(c)6393 b(row)581 b(elimination)i(with)
+f(column)g(indexing)-2546 54130 y Fa(466)1328 b Fi(c)-2546
+55459 y Fa(467)8302 b Fi(do)581 b(30)h(j)f(=)g(kp1,)h(n)-2546
+56787 y Fa(468)10045 b Fi(t)582 b(=)f(a\(l,j\))-2546
+58115 y Fa(469)10045 b Fi(if)582 b(\(l)f(.eq.)h(k\))f(go)h(to)f(20)
+-2546 59444 y Fa(470)11789 b Fi(a\(l,j\))582 b(=)f(a\(k,j\))-2546
+60772 y Fa(471)11789 b Fi(a\(k,j\))582 b(=)f(t)-2546
+62100 y Fa(472)3071 b Fi(20)5812 b(continue)-2546 63429
+y Fa(473)10045 b Fi(call)582 b(daxpy\(n)g(-)f(k,)h(t,)f(a\(k)h(+)f
+(1,k\),)h(1,)g(a\(k)f(+)g(1,j\),)h(1\))-2546 64757 y
+Fa(474)3071 b Fi(30)4069 b(continue)-2546 66086 y Fa(475)6558
+b Fi(go)582 b(to)f(50)-2546 67414 y Fa(476)3071 b Fi(40)2325
+b(continue)-2546 68742 y Fa(477)8302 b Fi(info)582 b(=)f(k)-2546
+70071 y Fa(478)3071 b Fi(50)2325 b(continue)-2546 71399
+y Fa(479)3071 b Fi(60)582 b(continue)-2546 72727 y Fa(480)3071
+b Fi(70)582 b(continue)-2546 74056 y Fa(481)4815 b Fi(ipvt\(n\))582
+b(=)f(n)-2546 75384 y Fa(482)4815 b Fi(if)581 b(\(a\(n,n\))i(.eq.)e
+(0.0d0\))h(info)g(=)f(n)-2546 76712 y Fa(483)4815 b Fi(return)-2546
+78041 y Fa(484)g Fi(end)p Black 23091 81741 a Fs(108)p
+Black eop
+%%Page: 109 113
+109 112 bop Black Black 1454 7638 a Fa(485)1328 b Fi(c)1454
+8966 y Fa(486)4815 b Fi(subroutine)583 b(dgesl\(a,)f(lda,)g(n,)f(ipvt,)
+h(b,)f(job\))1454 10295 y Fa(487)1328 b Fi(c)1454 11623
+y Fa(488)4815 b Fi(implicit)582 b(none)1454 12951 y Fa(489)1328
+b Fi(c)1454 14280 y Fa(490)4815 b Fi(integer)582 b(lda,)g(n,)f(job,)h
+(k,)f(kb,)h(l,)g(nm1)1454 15608 y Fa(491)4815 b Fi(integer*4)582
+b(ipvt\(1\))1454 16936 y Fa(492)4815 b Fi(double)582
+b(precision)g(a\(lda,1\),)h(b\(1\),)f(ddot,)g(t)1454
+18265 y Fa(493)1328 b Fi(c)1454 19593 y Fa(494)g Fi(c)2906
+b(dgesl)582 b(solves)g(the)f(double)h(precision)h(system)1454
+20922 y Fa(495)1328 b Fi(c)2906 b(a)581 b(*)g(x)h(=)f(b)1163
+b(or)f(trans\(a\))582 b(*)g(x)f(=)g(b)1454 22250 y Fa(496)1328
+b Fi(c)2906 b(using)582 b(the)f(factors)i(computed)f(by)f(dgeco)h(or)g
+(dgefa.)1454 23578 y Fa(497)1328 b Fi(c)1454 24907 y
+Fa(498)g Fi(c)2906 b(on)581 b(entry)1454 26235 y Fa(499)1328
+b Fi(c)1454 27563 y Fa(500)g Fi(c)4649 b(a)4069 b(double)582
+b(precision\(lda,)h(n\))1454 28892 y Fa(501)1328 b Fi(c)9299
+b(the)581 b(output)h(from)g(dgeco)g(or)f(dgefa.)1454
+30220 y Fa(502)1328 b Fi(c)1454 31548 y Fa(503)g Fi(c)4649
+b(lda)2907 b(integer)1454 32877 y Fa(504)1328 b Fi(c)9299
+b(the)581 b(leading)h(dimension)h(of)e(the)h(array)1163
+b(a)581 b(.)1454 34205 y Fa(505)1328 b Fi(c)1454 35533
+y Fa(506)g Fi(c)4649 b(n)4069 b(integer)1454 36862 y
+Fa(507)1328 b Fi(c)9299 b(the)581 b(order)h(of)f(the)h(matrix)1163
+b(a)582 b(.)1454 38190 y Fa(508)1328 b Fi(c)1454 39518
+y Fa(509)g Fi(c)4649 b(ipvt)2326 b(integer\(n\))1454
+40847 y Fa(510)1328 b Fi(c)9299 b(the)581 b(pivot)h(vector)g(from)g
+(dgeco)g(or)f(dgefa.)1454 42175 y Fa(511)1328 b Fi(c)1454
+43504 y Fa(512)g Fi(c)4649 b(b)4069 b(double)582 b(precision\(n\))1454
+44832 y Fa(513)1328 b Fi(c)9299 b(the)581 b(right)h(hand)g(side)g
+(vector.)1454 46160 y Fa(514)1328 b Fi(c)1454 47489 y
+Fa(515)g Fi(c)4649 b(job)2907 b(integer)1454 48817 y
+Fa(516)1328 b Fi(c)9299 b(=)581 b(0)5230 b(to)582 b(solve)1163
+b(a*x)581 b(=)h(b)f(,)1454 50145 y Fa(517)1328 b Fi(c)9299
+b(=)581 b(nonzero)1744 b(to)582 b(solve)1163 b(trans\(a\)*x)582
+b(=)g(b)1162 b(where)1454 51474 y Fa(518)1328 b Fi(c)16272
+b(trans\(a\))1164 b(is)581 b(the)h(transpose.)1454 52802
+y Fa(519)1328 b Fi(c)1454 54130 y Fa(520)g Fi(c)2906
+b(on)581 b(return)1454 55459 y Fa(521)1328 b Fi(c)1454
+56787 y Fa(522)g Fi(c)4649 b(b)4069 b(the)581 b(solution)h(vector)1164
+b(x)581 b(.)1454 58115 y Fa(523)1328 b Fi(c)1454 59444
+y Fa(524)g Fi(c)2906 b(error)582 b(condition)1454 60772
+y Fa(525)1328 b Fi(c)1454 62100 y Fa(526)g Fi(c)4649
+b(a)582 b(division)g(by)f(zero)h(will)g(occur)g(if)f(the)h(input)g
+(factor)g(contains)g(a)1454 63429 y Fa(527)1328 b Fi(c)4649
+b(zero)582 b(on)g(the)f(diagonal.)1164 b(technically)583
+b(this)e(indicates)i(singularity)1454 64757 y Fa(528)1328
+b Fi(c)4649 b(but)582 b(it)f(is)h(often)g(caused)g(by)f(improper)i
+(arguments)f(or)f(improper)1454 66086 y Fa(529)1328 b
+Fi(c)4649 b(setting)583 b(of)e(lda)h(.)1162 b(it)581
+b(will)h(not)g(occur)g(if)f(the)h(subroutines)h(are)1454
+67414 y Fa(530)1328 b Fi(c)4649 b(called)582 b(correctly)h(and)e(if)h
+(dgeco)g(has)f(set)h(rcond)g(.gt.)g(0.0)1454 68742 y
+Fa(531)1328 b Fi(c)4649 b(or)582 b(dgefa)g(has)f(set)h(info)g(.eq.)f(0)
+h(.)1454 70071 y Fa(532)1328 b Fi(c)1454 71399 y Fa(533)g
+Fi(c)2906 b(to)581 b(compute)1164 b(inverse\(a\))582
+b(*)g(c)1162 b(where)h(c)g(is)581 b(a)g(matrix)1454 72727
+y Fa(534)1328 b Fi(c)2906 b(with)1163 b(p)f(columns)1454
+74056 y Fa(535)1328 b Fi(c)6393 b(call)582 b
+(dgeco\(a,lda,n,ipvt,rcond,z\))1454 75384 y Fa(536)1328
+b Fi(c)6393 b(if)581 b(\(rcond)h(is)g(too)f(small\))h(go)g(to)f(...)
+1454 76712 y Fa(537)1328 b Fi(c)6393 b(do)581 b(10)h(j)f(=)g(1,)h(p)
+1454 78041 y Fa(538)1328 b Fi(c)8136 b(call)582 b
+(dgesl\(a,lda,n,ipvt,c\(1,j\),0\))p Black 27091 81741
+a Fs(109)p Black eop
+%%Page: 110 114
+110 113 bop Black Black -2546 7638 a Fa(539)1328 b Fi(c)4649
+b(10)582 b(continue)-2546 8966 y Fa(540)1328 b Fi(c)-2546
+10295 y Fa(541)g Fi(c)2906 b(linpack.)582 b(this)g(version)g(dated)g
+(08/14/78)g(.)-2546 11623 y Fa(542)1328 b Fi(c)2906 b(cleve)582
+b(moler,)g(university)g(of)g(new)g(mexico,)g(argonne)g(national)g(lab.)
+-2546 12951 y Fa(543)1328 b Fi(c)-2546 14280 y Fa(544)g
+Fi(c)2906 b(subroutines)583 b(and)e(functions)-2546 15608
+y Fa(545)1328 b Fi(c)-2546 16936 y Fa(546)g Fi(c)2906
+b(blas)582 b(daxpy,ddot)-2546 18265 y Fa(547)1328 b Fi(c)-2546
+19593 y Fa(548)g Fi(c)2906 b(internal)582 b(variables)-2546
+20922 y Fa(549)1328 b Fi(c)-2546 22250 y Fa(550)4815
+b Fi(nm1)581 b(=)h(n)f(-)g(1)-2546 23578 y Fa(551)4815
+b Fi(if)581 b(\(job)h(.ne.)g(0\))f(go)h(to)f(50)-2546
+24907 y Fa(552)1328 b Fi(c)-2546 26235 y Fa(553)g Fi(c)4649
+b(job)582 b(=)f(0)h(,)f(solve)1163 b(a)581 b(*)g(x)h(=)f(b)-2546
+27563 y Fa(554)1328 b Fi(c)4649 b(first)582 b(solve)1163
+b(l*y)582 b(=)f(b)-2546 28892 y Fa(555)1328 b Fi(c)-2546
+30220 y Fa(556)6558 b Fi(if)582 b(\(nm1)g(.lt.)f(1\))h(go)f(to)h(30)
+-2546 31548 y Fa(557)6558 b Fi(do)582 b(20)f(k)h(=)f(1,)g(nm1)-2546
+32877 y Fa(558)8302 b Fi(l)581 b(=)g(ipvt\(k\))-2546
+34205 y Fa(559)8302 b Fi(t)581 b(=)g(b\(l\))-2546 35533
+y Fa(560)8302 b Fi(if)581 b(\(l)h(.eq.)f(k\))h(go)f(to)h(10)-2546
+36862 y Fa(561)10045 b Fi(b\(l\))582 b(=)f(b\(k\))-2546
+38190 y Fa(562)10045 b Fi(b\(k\))582 b(=)f(t)-2546 39518
+y Fa(563)3071 b Fi(10)4069 b(continue)-2546 40847 y Fa(564)8302
+b Fi(call)582 b(daxpy\(n)g(-)f(k,)g(t,)h(a\(k)g(+)f(1,k\),)h(1,)f(b\(k)
+h(+)f(1\),)h(1\))-2546 42175 y Fa(565)3071 b Fi(20)2325
+b(continue)-2546 43504 y Fa(566)3071 b Fi(30)2325 b(continue)-2546
+44832 y Fa(567)1328 b Fi(c)-2546 46160 y Fa(568)g Fi(c)4649
+b(now)582 b(solve)1163 b(u*x)582 b(=)f(y)-2546 47489
+y Fa(569)1328 b Fi(c)-2546 48817 y Fa(570)6558 b Fi(do)582
+b(40)f(kb)h(=)f(1,)g(n)-2546 50145 y Fa(571)8302 b Fi(k)581
+b(=)g(n)h(+)f(1)g(-)h(kb)-2546 51474 y Fa(572)8302 b
+Fi(b\(k\))582 b(=)f(b\(k\))h(/)f(a\(k,k\))-2546 52802
+y Fa(573)8302 b Fi(t)581 b(=)g(-b\(k\))-2546 54130 y
+Fa(574)8302 b Fi(call)582 b(daxpy\(k)g(-)f(1,)g(t,)h(a\(1,k\),)g(1,)g
+(b\(1\),)f(1\))-2546 55459 y Fa(575)3071 b Fi(40)2325
+b(continue)-2546 56787 y Fa(576)4815 b Fi(go)581 b(to)h(100)-2546
+58115 y Fa(577)3071 b Fi(50)582 b(continue)-2546 59444
+y Fa(578)1328 b Fi(c)-2546 60772 y Fa(579)g Fi(c)4649
+b(job)582 b(=)f(nonzero,)i(solve)1163 b(trans\(a\))582
+b(*)f(x)h(=)f(b)-2546 62100 y Fa(580)1328 b Fi(c)4649
+b(first)582 b(solve)1163 b(trans\(u\)*y)583 b(=)e(b)-2546
+63429 y Fa(581)1328 b Fi(c)-2546 64757 y Fa(582)6558
+b Fi(do)582 b(60)f(k)h(=)f(1,)g(n)-2546 66086 y Fa(583)8302
+b Fi(t)581 b(=)g(ddot\(k)h(-)g(1,)f(a\(1,k\),)h(1,)g(b\(1\),)g(1\))
+-2546 67414 y Fa(584)8302 b Fi(b\(k\))582 b(=)f(\(b\(k\))h(-)f(t\))g(/)
+h(a\(k,k\))-2546 68742 y Fa(585)3071 b Fi(60)2325 b(continue)-2546
+70071 y Fa(586)1328 b Fi(c)-2546 71399 y Fa(587)g Fi(c)4649
+b(now)582 b(solve)g(trans\(l\)*x)g(=)g(y)-2546 72727
+y Fa(588)1328 b Fi(c)-2546 74056 y Fa(589)6558 b Fi(if)582
+b(\(nm1)g(.lt.)f(1\))h(go)f(to)h(90)-2546 75384 y Fa(590)6558
+b Fi(do)582 b(80)f(kb)h(=)f(1,)g(nm1)-2546 76712 y Fa(591)8302
+b Fi(k)581 b(=)g(n)h(-)f(kb)-2546 78041 y Fa(592)8302
+b Fi(b\(k\))582 b(=)f(b\(k\))h(+)f(ddot\(n)h(-)f(k,)h(a\(k)f(+)h
+(1,k\),)f(1,)h(b\(k)f(+)h(1\),)f(1\))p Black 23091 81741
+a Fs(110)p Black eop
+%%Page: 111 115
+111 114 bop Black Black 1454 7638 a Fa(593)8302 b Fi(l)581
+b(=)g(ipvt\(k\))1454 8966 y Fa(594)8302 b Fi(if)581 b(\(l)h(.eq.)f(k\))
+h(go)f(to)h(70)1454 10295 y Fa(595)10045 b Fi(t)582 b(=)f(b\(l\))1454
+11623 y Fa(596)10045 b Fi(b\(l\))582 b(=)f(b\(k\))1454
+12951 y Fa(597)10045 b Fi(b\(k\))582 b(=)f(t)1454 14280
+y Fa(598)3071 b Fi(70)4069 b(continue)1454 15608 y Fa(599)3071
+b Fi(80)2325 b(continue)1454 16936 y Fa(600)3071 b Fi(90)2325
+b(continue)1454 18265 y Fa(601)2490 b Fi(100)582 b(continue)1454
+19593 y Fa(602)4815 b Fi(return)1454 20922 y Fa(603)g
+Fi(end)1454 22250 y Fa(604)1328 b Fi(c)1454 23578 y Fa(605)4815
+b Fi(subroutine)583 b(daxpy\(n,)f(da,)f(dx,)h(incx,)g(dy,)g(incy\))1454
+24907 y Fa(606)1328 b Fi(c)1454 26235 y Fa(607)g Fi(c)2906
+b(constant)582 b(times)g(a)f(vector)h(plus)g(a)g(vector.)1454
+27563 y Fa(608)1328 b Fi(c)2906 b(uses)582 b(unrolled)g(loops)g(for)f
+(increments)i(equal)f(to)f(one.)1454 28892 y Fa(609)1328
+b Fi(c)2906 b(jack)582 b(dongarra,)g(linpack,)g(3/11/78.)1454
+30220 y Fa(610)1328 b Fi(c)1454 31548 y Fa(611)4815 b
+Fi(implicit)582 b(none)1454 32877 y Fa(612)1328 b Fi(c)1454
+34205 y Fa(613)4815 b Fi(integer)582 b(i,)g(incx,)f(incy,)h(ix,)g(iy,)g
+(m,)f(mp1)1454 35533 y Fa(614)4815 b Fi(integer*4)582
+b(n)1454 36862 y Fa(615)4815 b Fi(double)582 b(precision)g(dx\(1\),)g
+(dy\(1\),)h(da)1454 38190 y Fa(616)1328 b Fi(c)1454 39518
+y Fa(617)4815 b Fi(if)581 b(\(n)h(.le.)g(0\))f(return)1454
+40847 y Fa(618)4815 b Fi(if)581 b(\(da)h(.eq.)g(0.0d0\))g(return)1454
+42175 y Fa(619)4815 b Fi(if)581 b(\(incx)h(.eq.)g(1)f(.and.)h(incy)g
+(.eq.)g(1\))f(go)h(to)f(20)1454 43504 y Fa(620)1328 b
+Fi(c)1454 44832 y Fa(621)g Fi(c)4649 b(code)582 b(for)g(unequal)g
+(increments)h(or)e(equal)h(increments)1454 46160 y Fa(622)1328
+b Fi(c)4649 b(not)582 b(equal)g(to)f(1)1454 47489 y Fa(623)1328
+b Fi(c)1454 48817 y Fa(624)4815 b Fi(ix)581 b(=)h(1)1454
+50145 y Fa(625)4815 b Fi(iy)581 b(=)h(1)1454 51474 y
+Fa(626)4815 b Fi(if)581 b(\(incx)h(.lt.)g(0\))f(ix)h(=)f(\(-n)h(+)f
+(1\))h(*)f(incx)h(+)f(1)1454 52802 y Fa(627)4815 b Fi(if)581
+b(\(incy)h(.lt.)g(0\))f(iy)h(=)f(\(-n)h(+)f(1\))h(*)f(incy)h(+)f(1)1454
+54130 y Fa(628)4815 b Fi(do)581 b(10)h(i)f(=)g(1,)h(n)1454
+55459 y Fa(629)5977 b Fi(dy\(iy\))582 b(=)g(dy\(iy\))g(+)f(da)g(*)h
+(dx\(ix\))1454 56787 y Fa(630)5977 b Fi(ix)582 b(=)f(ix)g(+)h(incx)1454
+58115 y Fa(631)5977 b Fi(iy)582 b(=)f(iy)g(+)h(incy)1454
+59444 y Fa(632)3071 b Fi(10)582 b(continue)1454 60772
+y Fa(633)4815 b Fi(return)1454 62100 y Fa(634)1328 b
+Fi(c)1454 63429 y Fa(635)g Fi(c)4649 b(code)582 b(for)g(both)f
+(increments)i(equal)f(to)f(1)1454 64757 y Fa(636)1328
+b Fi(c)1454 66086 y Fa(637)g Fi(c)1454 67414 y Fa(638)g
+Fi(c)4649 b(clean-up)583 b(loop)1454 68742 y Fa(639)1328
+b Fi(c)1454 70071 y Fa(640)3071 b Fi(20)582 b(m)f(=)g(mod\(n,)i(4\))
+1454 71399 y Fa(641)4815 b Fi(if)581 b(\()h(m)f(.eq.)h(0)f(\))g(go)h
+(to)f(40)1454 72727 y Fa(642)4815 b Fi(do)581 b(30)h(i)f(=)g(1,)h(m)
+1454 74056 y Fa(643)5977 b Fi(dy\(i\))582 b(=)f(dy\(i\))h(+)g(da)f(*)g
+(dx\(i\))1454 75384 y Fa(644)3071 b Fi(30)582 b(continue)1454
+76712 y Fa(645)4815 b Fi(if)581 b(\()h(n)f(.lt.)h(4)f(\))g(return)1454
+78041 y Fa(646)3071 b Fi(40)582 b(mp1)f(=)h(m)f(+)g(1)p
+Black 27091 81741 a Fs(111)p Black eop
+%%Page: 112 116
+112 115 bop Black Black -2546 7638 a Fa(647)4815 b Fi(do)581
+b(50)h(i)f(=)g(mp1,)h(n,)g(4)-2546 8966 y Fa(648)5977
+b Fi(dy\(i\))582 b(=)f(dy\(i\))h(+)g(da)f(*)g(dx\(i\))-2546
+10295 y Fa(649)5977 b Fi(dy\(i)582 b(+)f(1\))h(=)f(dy\(i)h(+)f(1\))g(+)
+h(da)f(*)h(dx\(i)f(+)h(1\))-2546 11623 y Fa(650)5977
+b Fi(dy\(i)582 b(+)f(2\))h(=)f(dy\(i)h(+)f(2\))g(+)h(da)f(*)h(dx\(i)f
+(+)h(2\))-2546 12951 y Fa(651)5977 b Fi(dy\(i)582 b(+)f(3\))h(=)f
+(dy\(i)h(+)f(3\))g(+)h(da)f(*)h(dx\(i)f(+)h(3\))-2546
+14280 y Fa(652)3071 b Fi(50)582 b(continue)-2546 15608
+y Fa(653)4815 b Fi(return)-2546 16936 y Fa(654)g Fi(end)-2546
+18265 y Fa(655)1328 b Fi(c)-2546 19593 y Fa(656)4815
+b Fi(subroutine)583 b(dscal\(n,)f(da,)f(dx,)h(incx\))-2546
+20922 y Fa(657)1328 b Fi(c)-2546 22250 y Fa(658)g Fi(c)2906
+b(scales)582 b(a)f(vector)h(by)g(a)f(constant.)-2546
+23578 y Fa(659)1328 b Fi(c)2906 b(uses)582 b(unrolled)g(loops)g(for)f
+(increment)i(equal)f(to)f(one.)-2546 24907 y Fa(660)1328
+b Fi(c)2906 b(jack)582 b(dongarra,)g(linpack,)g(3/11/78.)-2546
+26235 y Fa(661)1328 b Fi(c)-2546 27563 y Fa(662)4815
+b Fi(implicit)582 b(none)-2546 28892 y Fa(663)1328 b
+Fi(c)-2546 30220 y Fa(664)4815 b Fi(integer)582 b(i,)g(incx,)f(m,)h
+(mp1,)g(nincx)-2546 31548 y Fa(665)4815 b Fi(integer*4)582
+b(n)-2546 32877 y Fa(666)4815 b Fi(double)582 b(precision)g(da,)g
+(dx\(1\))-2546 34205 y Fa(667)1328 b Fi(c)-2546 35533
+y Fa(668)4815 b Fi(if)581 b(\(n.le.0\))i(return)-2546
+36862 y Fa(669)4815 b Fi(if)581 b(\(incx)h(.eq.)g(1\))f(go)h(to)f(20)
+-2546 38190 y Fa(670)1328 b Fi(c)-2546 39518 y Fa(671)g
+Fi(c)4649 b(code)582 b(for)g(increment)g(not)g(equal)g(to)f(1)-2546
+40847 y Fa(672)1328 b Fi(c)-2546 42175 y Fa(673)4815
+b Fi(nincx)582 b(=)f(n)g(*)h(incx)-2546 43504 y Fa(674)4815
+b Fi(do)581 b(10)h(i)f(=)g(1,)h(nincx,)g(incx)-2546 44832
+y Fa(675)5977 b Fi(dx\(i\))582 b(=)f(da)h(*)f(dx\(i\))-2546
+46160 y Fa(676)3071 b Fi(10)582 b(continue)-2546 47489
+y Fa(677)4815 b Fi(return)-2546 48817 y Fa(678)1328 b
+Fi(c)-2546 50145 y Fa(679)g Fi(c)4649 b(code)582 b(for)g(increment)g
+(equal)g(to)g(1)-2546 51474 y Fa(680)1328 b Fi(c)-2546
+52802 y Fa(681)g Fi(c)-2546 54130 y Fa(682)g Fi(c)4649
+b(clean-up)583 b(loop)-2546 55459 y Fa(683)1328 b Fi(c)-2546
+56787 y Fa(684)3071 b Fi(20)582 b(m)f(=)g(mod\(n,)i(5\))-2546
+58115 y Fa(685)4815 b Fi(if)581 b(\()h(m)f(.eq.)h(0)f(\))g(go)h(to)f
+(40)-2546 59444 y Fa(686)4815 b Fi(do)581 b(30)h(i)f(=)g(1,)h(m)-2546
+60772 y Fa(687)5977 b Fi(dx\(i\))582 b(=)f(da)h(*)f(dx\(i\))-2546
+62100 y Fa(688)3071 b Fi(30)582 b(continue)-2546 63429
+y Fa(689)4815 b Fi(if)581 b(\()h(n)f(.lt.)h(5)f(\))g(return)-2546
+64757 y Fa(690)3071 b Fi(40)582 b(mp1)f(=)h(m)f(+)g(1)-2546
+66086 y Fa(691)4815 b Fi(do)581 b(50)h(i)f(=)g(mp1,)h(n,)g(5)-2546
+67414 y Fa(692)5977 b Fi(dx\(i\))582 b(=)f(da)h(*)f(dx\(i\))-2546
+68742 y Fa(693)5977 b Fi(dx\(i)582 b(+)f(1\))h(=)f(da)g(*)h(dx\(i)f(+)h
+(1\))-2546 70071 y Fa(694)5977 b Fi(dx\(i)582 b(+)f(2\))h(=)f(da)g(*)h
+(dx\(i)f(+)h(2\))-2546 71399 y Fa(695)5977 b Fi(dx\(i)582
+b(+)f(3\))h(=)f(da)g(*)h(dx\(i)f(+)h(3\))-2546 72727
+y Fa(696)5977 b Fi(dx\(i)582 b(+)f(4\))h(=)f(da)g(*)h(dx\(i)f(+)h(4\))
+-2546 74056 y Fa(697)3071 b Fi(50)582 b(continue)-2546
+75384 y Fa(698)4815 b Fi(return)-2546 76712 y Fa(699)g
+Fi(end)-2546 78041 y Fa(700)1328 b Fi(c)p Black 23091
+81741 a Fs(112)p Black eop
+%%Page: 113 117
+113 116 bop Black Black 1454 7638 a Fa(701)4815 b Fi(double)582
+b(precision)g(function)h(ddot\(n,)f(dx,)g(incx,)f(dy,)h(incy\))1454
+8966 y Fa(702)1328 b Fi(c)1454 10295 y Fa(703)g Fi(c)2906
+b(forms)582 b(the)f(dot)h(product)g(of)g(two)f(vectors.)1454
+11623 y Fa(704)1328 b Fi(c)2906 b(uses)582 b(unrolled)g(loops)g(for)f
+(increments)i(equal)f(to)f(one.)1454 12951 y Fa(705)1328
+b Fi(c)2906 b(jack)582 b(dongarra,)g(linpack,)g(3/11/78.)1454
+14280 y Fa(706)1328 b Fi(c)1454 15608 y Fa(707)4815 b
+Fi(implicit)582 b(none)1454 16936 y Fa(708)1328 b Fi(c)1454
+18265 y Fa(709)4815 b Fi(integer)582 b(i,)g(incx,)f(incy,)h(ix,)g(iy,)g
+(m,)f(mp1)1454 19593 y Fa(710)4815 b Fi(integer*4)582
+b(n)1454 20922 y Fa(711)4815 b Fi(double)582 b(precision)g(dx\(1\),)g
+(dy\(1\),)h(dtemp)1454 22250 y Fa(712)1328 b Fi(c)1454
+23578 y Fa(713)4815 b Fi(ddot)582 b(=)f(0.0d0)1454 24907
+y Fa(714)4815 b Fi(dtemp)582 b(=)f(0.0d0)1454 26235 y
+Fa(715)4815 b Fi(if)581 b(\(n)h(.le.)g(0\))f(return)1454
+27563 y Fa(716)4815 b Fi(if)581 b(\(incx)h(.eq.)g(1)f(.and.)h(incy)g
+(.eq.)g(1\))f(go)h(to)f(20)1454 28892 y Fa(717)1328 b
+Fi(c)1454 30220 y Fa(718)g Fi(c)4649 b(code)582 b(for)g(unequal)g
+(increments)h(or)e(equal)h(increments)1454 31548 y Fa(719)1328
+b Fi(c)5812 b(not)581 b(equal)h(to)g(1)1454 32877 y Fa(720)1328
+b Fi(c)1454 34205 y Fa(721)4815 b Fi(ix)581 b(=)h(1)1454
+35533 y Fa(722)4815 b Fi(iy)581 b(=)h(1)1454 36862 y
+Fa(723)4815 b Fi(if)581 b(\(incx)h(.lt.)g(0\))f(ix)h(=)f(\(-n)h(+)f
+(1\))h(*)f(incx)h(+)f(1)1454 38190 y Fa(724)4815 b Fi(if)581
+b(\(incy)h(.lt.)g(0\))f(iy)h(=)f(\(-n)h(+)f(1\))h(*)f(incy)h(+)f(1)1454
+39518 y Fa(725)4815 b Fi(do)581 b(10)h(i)f(=)g(1,)h(n)1454
+40847 y Fa(726)5977 b Fi(dtemp)582 b(=)f(dtemp)h(+)g(dx\(ix\))g(*)f
+(dy\(iy\))1454 42175 y Fa(727)5977 b Fi(ix)582 b(=)f(ix)g(+)h(incx)1454
+43504 y Fa(728)5977 b Fi(iy)582 b(=)f(iy)g(+)h(incy)1454
+44832 y Fa(729)3071 b Fi(10)582 b(continue)1454 46160
+y Fa(730)4815 b Fi(ddot)582 b(=)f(dtemp)1454 47489 y
+Fa(731)4815 b Fi(return)1454 48817 y Fa(732)1328 b Fi(c)1454
+50145 y Fa(733)g Fi(c)4649 b(code)582 b(for)g(both)f(increments)i
+(equal)f(to)f(1)1454 51474 y Fa(734)1328 b Fi(c)1454
+52802 y Fa(735)g Fi(c)1454 54130 y Fa(736)g Fi(c)4649
+b(clean-up)583 b(loop)1454 55459 y Fa(737)1328 b Fi(c)1454
+56787 y Fa(738)3071 b Fi(20)582 b(m)f(=)g(mod\(n,)i(5\))1454
+58115 y Fa(739)4815 b Fi(if)581 b(\()h(m)f(.eq.)h(0)f(\))g(go)h(to)f
+(40)1454 59444 y Fa(740)4815 b Fi(do)581 b(30)h(i)f(=)g(1,m)1454
+60772 y Fa(741)5977 b Fi(dtemp)582 b(=)f(dtemp)h(+)g(dx\(i\))f(*)h
+(dy\(i\))1454 62100 y Fa(742)3071 b Fi(30)582 b(continue)1454
+63429 y Fa(743)4815 b Fi(if)581 b(\()h(n)f(.lt.)h(5)f(\))g(go)h(to)f
+(60)1454 64757 y Fa(744)3071 b Fi(40)582 b(mp1)f(=)h(m)f(+)g(1)1454
+66086 y Fa(745)4815 b Fi(do)581 b(50)h(i)f(=)g(mp1,)h(n,)g(5)1454
+67414 y Fa(746)5977 b Fi(dtemp)582 b(=)f(dtemp)h(+)g(dx\(i\))f(*)h
+(dy\(i\))g(+)f(dx\(i)h(+)f(1\))g(*)h(dy\(i)f(+)h(1\))f(+)1454
+68742 y Fa(747)4234 b Fi(*)5811 b(dx\(i)582 b(+)f(2\))h(*)f(dy\(i)h(+)f
+(2\))h(+)f(dx\(i)h(+)f(3\))g(*)h(dy\(i)f(+)h(3\))f(+)1454
+70071 y Fa(748)4234 b Fi(*)5811 b(dx\(i)582 b(+)f(4\))h(*)f(dy\(i)h(+)f
+(4\))1454 71399 y Fa(749)3071 b Fi(50)582 b(continue)1454
+72727 y Fa(750)3071 b Fi(60)582 b(ddot)g(=)f(dtemp)1454
+74056 y Fa(751)4815 b Fi(return)1454 75384 y Fa(752)g
+Fi(end)1454 76712 y Fa(753)1328 b Fi(c)1454 78041 y Fa(754)4815
+b Fi(integer)582 b(function)g(idamax\(n,)h(dx,)f(incx\))p
+Black 27091 81741 a Fs(113)p Black eop
+%%Page: 114 118
+114 117 bop Black Black -2546 7638 a Fa(755)1328 b Fi(c)-2546
+8966 y Fa(756)g Fi(c)2906 b(finds)582 b(the)f(index)h(of)g(element)g
+(having)g(max.)g(absolute)g(value.)-2546 10295 y Fa(757)1328
+b Fi(c)2906 b(jack)582 b(dongarra,)g(linpack,)g(3/11/78.)-2546
+11623 y Fa(758)1328 b Fi(c)-2546 12951 y Fa(759)4815
+b Fi(implicit)582 b(none)-2546 14280 y Fa(760)1328 b
+Fi(c)-2546 15608 y Fa(761)4815 b Fi(integer)582 b(i,)g(incx,)f(ix)-2546
+16936 y Fa(762)4815 b Fi(integer*4)582 b(n)-2546 18265
+y Fa(763)4815 b Fi(double)582 b(precision)g(dx\(1\),)g(dmax)-2546
+19593 y Fa(764)1328 b Fi(c)-2546 20922 y Fa(765)4815
+b Fi(idamax)582 b(=)f(0)-2546 22250 y Fa(766)4815 b Fi(if)581
+b(\(n)h(.lt.)g(1\))f(return)-2546 23578 y Fa(767)4815
+b Fi(idamax)582 b(=)f(1)-2546 24907 y Fa(768)4815 b Fi(if)581
+b(\(n)h(.eq.)g(1\))f(return)-2546 26235 y Fa(769)4815
+b Fi(if)581 b(\(incx)h(.eq.)g(1\))f(go)h(to)f(20)-2546
+27563 y Fa(770)1328 b Fi(c)-2546 28892 y Fa(771)g Fi(c)4649
+b(code)582 b(for)g(increment)g(not)g(equal)g(to)f(1)-2546
+30220 y Fa(772)1328 b Fi(c)-2546 31548 y Fa(773)4815
+b Fi(ix)581 b(=)h(1)-2546 32877 y Fa(774)4815 b Fi(dmax)582
+b(=)f(abs\(dx\(1\)\))-2546 34205 y Fa(775)4815 b Fi(ix)581
+b(=)h(ix)f(+)g(incx)-2546 35533 y Fa(776)4815 b Fi(do)581
+b(10)h(i)f(=)g(2,)h(n)-2546 36862 y Fa(777)6558 b Fi(if)582
+b(\(abs\(dx\(ix\)\))h(.le.)e(dmax\))h(go)g(to)f(5)-2546
+38190 y Fa(778)6558 b Fi(idamax)582 b(=)g(i)-2546 39518
+y Fa(779)6558 b Fi(dmax)582 b(=)f(abs\(dx\(ix\)\))-2546
+40847 y Fa(780)3653 b Fi(5)2324 b(ix)582 b(=)f(ix)h(+)f(incx)-2546
+42175 y Fa(781)3071 b Fi(10)582 b(continue)-2546 43504
+y Fa(782)4815 b Fi(return)-2546 44832 y Fa(783)1328 b
+Fi(c)-2546 46160 y Fa(784)g Fi(c)4649 b(code)582 b(for)g(increment)g
+(equal)g(to)g(1)-2546 47489 y Fa(785)1328 b Fi(c)-2546
+48817 y Fa(786)3071 b Fi(20)582 b(dmax)g(=)f(abs\(dx\(1\)\))-2546
+50145 y Fa(787)4815 b Fi(do)581 b(30)h(i)f(=)g(2,)h(n)-2546
+51474 y Fa(788)6558 b Fi(if)582 b(\(abs\(dx\(i\)\))h(.le.)e(dmax\))h
+(go)g(to)f(30)-2546 52802 y Fa(789)6558 b Fi(idamax)582
+b(=)g(i)-2546 54130 y Fa(790)6558 b Fi(dmax)582 b(=)f(abs\(dx\(i\)\))
+-2546 55459 y Fa(791)3071 b Fi(30)582 b(continue)-2546
+56787 y Fa(792)4815 b Fi(return)-2546 58115 y Fa(793)g
+Fi(end)-2546 59444 y Fa(794)1328 b Fi(c)-2546 60772 y
+Fa(795)4815 b Fi(subroutine)1164 b(dcopy\(n,)582 b(dx,)g(incx,)g(dy,)f
+(incy\))-2546 62100 y Fa(796)1328 b Fi(c)-2546 63429
+y Fa(797)g Fi(c)2906 b(copies)582 b(a)f(vector,)h(x,)g(to)f(a)h
+(vector,)g(y.)-2546 64757 y Fa(798)1328 b Fi(c)2906 b(uses)582
+b(unrolled)g(loops)g(for)f(increments)i(equal)f(to)f(one.)-2546
+66086 y Fa(799)1328 b Fi(c)2906 b(jack)582 b(dongarra,)g(linpack,)g
+(3/11/78.)-2546 67414 y Fa(800)1328 b Fi(c)-2546 68742
+y Fa(801)4815 b Fi(implicit)582 b(none)-2546 70071 y
+Fa(802)1328 b Fi(c)-2546 71399 y Fa(803)4815 b Fi(integer)582
+b(i,)g(incx,)f(incy,)h(ix,)g(iy,)g(m,)f(mp1)-2546 72727
+y Fa(804)4815 b Fi(integer*4)582 b(n)-2546 74056 y Fa(805)4815
+b Fi(double)582 b(precision)g(dx\(1\),)g(dy\(1\))-2546
+75384 y Fa(806)1328 b Fi(c)-2546 76712 y Fa(807)4815
+b Fi(if)581 b(\(n)h(.le.)g(0\))f(return)-2546 78041 y
+Fa(808)4815 b Fi(if)581 b(\(incx)h(.eq.)g(1)f(.and.)h(incy)g(.eq.)g
+(1\))f(go)h(to)f(20)p Black 23091 81741 a Fs(114)p Black
+eop
+%%Page: 115 119
+115 118 bop Black Black 1454 7638 a Fa(809)1328 b Fi(c)1454
+8966 y Fa(810)g Fi(c)4649 b(code)582 b(for)g(unequal)g(increments)h(or)
+e(equal)h(increments)1454 10295 y Fa(811)1328 b Fi(c)5812
+b(not)581 b(equal)h(to)g(1)1454 11623 y Fa(812)1328 b
+Fi(c)1454 12951 y Fa(813)4815 b Fi(ix)581 b(=)h(1)1454
+14280 y Fa(814)4815 b Fi(iy)581 b(=)h(1)1454 15608 y
+Fa(815)4815 b Fi(if)581 b(\(incx)h(.lt.)g(0\))f(ix)h(=)f(\(-n)h(+)f
+(1\))h(*)f(incx)h(+)f(1)1454 16936 y Fa(816)4815 b Fi(if)581
+b(\(incy)h(.lt.)g(0\))f(iy)h(=)f(\(-n)h(+)f(1\))h(*)f(incy)h(+)f(1)1454
+18265 y Fa(817)4815 b Fi(do)581 b(10)h(i)f(=)g(1,)h(n)1454
+19593 y Fa(818)5977 b Fi(dy\(iy\))582 b(=)g(dx\(ix\))1454
+20922 y Fa(819)5977 b Fi(ix)582 b(=)f(ix)g(+)h(incx)1454
+22250 y Fa(820)5977 b Fi(iy)582 b(=)f(iy)g(+)h(incy)1454
+23578 y Fa(821)3071 b Fi(10)582 b(continue)1454 24907
+y Fa(822)4815 b Fi(return)1454 26235 y Fa(823)1328 b
+Fi(c)1454 27563 y Fa(824)g Fi(c)4649 b(code)582 b(for)g(both)f
+(increments)i(equal)f(to)f(1)1454 28892 y Fa(825)1328
+b Fi(c)1454 30220 y Fa(826)g Fi(c)1454 31548 y Fa(827)g
+Fi(c)4649 b(clean-up)583 b(loop)1454 32877 y Fa(828)1328
+b Fi(c)1454 34205 y Fa(829)3071 b Fi(20)582 b(m)f(=)g(mod\(n,)i(7\))
+1454 35533 y Fa(830)4815 b Fi(if)581 b(\()h(m)f(.eq.)h(0)f(\))g(go)h
+(to)f(40)1454 36862 y Fa(831)4815 b Fi(do)581 b(30)h(i)f(=)g(1,)h(m)
+1454 38190 y Fa(832)5977 b Fi(dy\(i\))582 b(=)f(dx\(i\))1454
+39518 y Fa(833)3071 b Fi(30)582 b(continue)1454 40847
+y Fa(834)4815 b Fi(if)581 b(\()h(n)f(.lt.)h(7)f(\))g(return)1454
+42175 y Fa(835)3071 b Fi(40)582 b(mp1)f(=)h(m)f(+)g(1)1454
+43504 y Fa(836)4815 b Fi(do)581 b(50)h(i)f(=)g(mp1,)h(n,)g(7)1454
+44832 y Fa(837)5977 b Fi(dy\(i\))582 b(=)f(dx\(i\))1454
+46160 y Fa(838)5977 b Fi(dy\(i)582 b(+)f(1\))h(=)f(dx\(i)h(+)f(1\))1454
+47489 y Fa(839)5977 b Fi(dy\(i)582 b(+)f(2\))h(=)f(dx\(i)h(+)f(2\))1454
+48817 y Fa(840)5977 b Fi(dy\(i)582 b(+)f(3\))h(=)f(dx\(i)h(+)f(3\))1454
+50145 y Fa(841)5977 b Fi(dy\(i)582 b(+)f(4\))h(=)f(dx\(i)h(+)f(4\))1454
+51474 y Fa(842)5977 b Fi(dy\(i)582 b(+)f(5\))h(=)f(dx\(i)h(+)f(5\))1454
+52802 y Fa(843)5977 b Fi(dy\(i)582 b(+)f(6\))h(=)f(dx\(i)h(+)f(6\))1454
+54130 y Fa(844)3071 b Fi(50)582 b(continue)1454 55459
+y Fa(845)4815 b Fi(return)1454 56787 y Fa(846)g Fi(end)p
+Black 27091 81741 a Fs(115)p Black eop
+%%Page: 116 120
+116 119 bop Black Black 0 7638 a Fr(H)1793 b(Listing)600
+b(of)d Fb(pvdiagkbf.f)-1734 10674 y Fa(1)1328 b Fi(C)2906
+b(----------------------------------------------------------------)
+-1734 12003 y Fa(2)1328 b Fi(C)2906 b($Revision:)583
+b(1.18)e($)-1734 13331 y Fa(3)1328 b Fi(C)2906 b($Date:)582
+b(2004/10/21)h(18:58:44)f($)-1734 14659 y Fa(4)1328 b
+Fi(C)2906 b
+(----------------------------------------------------------------)-1734
+15988 y Fa(5)1328 b Fi(C)2906 b(Diagonal)582 b(ODE)g(example.)1163
+b(Stiff)582 b(case,)g(with)g(diagonal)g(preconditioner.)-1734
+17316 y Fa(6)1328 b Fi(C)2906 b(Uses)582 b(FCVODE)g(interfaces)g(and)g
+(FCVBBD)g(interfaces.)-1734 18645 y Fa(7)1328 b Fi(C)2906
+b(Solves)582 b(problem)g(twice)g(--)f(with)h(left)g(and)g(right)f
+(preconditioning.)-1734 19973 y Fa(8)1328 b Fi(C)2906
+b(----------------------------------------------------------------)
+-1734 21301 y Fa(9)1328 b Fi(C)-2140 22630 y Fa(10)g
+Fi(C)2906 b(Include)582 b(MPI-Fortran)h(header)f(file)g(for)f
+(MPI_COMM_WORLD,)j(MPI)d(types.)-2140 23958 y Fa(11)-2140
+25286 y(12)4815 b Fi(INCLUDE)582 b("mpif.h")-2140 26615
+y Fa(13)1328 b Fi(C)-2140 27943 y Fa(14)4815 b Fi(INTEGER)582
+b(NOUT,)g(LNST,)g(LNFE,)g(LNSETUP,)g(LNNI,)g(LNCF,)g(LNETF,)g(LNPE)
+-2140 29271 y Fa(15)4815 b Fi(INTEGER)582 b(LNLI,)g(LNPS,)g(LNCFL,)g
+(MYPE,)g(IER,)g(NPES,)f(METH,)h(ITMETH)-2140 30600 y
+Fa(16)4815 b Fi(INTEGER)582 b(IATOL,)g(INOPT,)g(ITASK,)g(IPRE,)g(IGS,)g
+(IOUT)-2140 31928 y Fa(17)4815 b Fi(INTEGER*4)582 b(IOPT\(40\))-2140
+33256 y Fa(18)4815 b Fi(INTEGER*4)582 b(NEQ,)g(NLOCAL,)g(I,)g(MUDQ,)g
+(MLDQ,)g(MU,)f(ML,)h(NETF)-2140 34585 y Fa(19)4815 b
+Fi(INTEGER*4)582 b(NST,)g(NFE,)g(NPSET,)g(NPE,)g(NPS,)f(NNI,)h(NLI,)g
+(NCFN,)g(NCFL)-2140 35913 y Fa(20)4815 b Fi(INTEGER*4)582
+b(LENRPW,)h(LENIPW,)f(NGE)-2140 37241 y Fa(21)4815 b
+Fi(DOUBLE)582 b(PRECISION)g(ALPHA,)g(TOUT,)g(ERMAX,)g(AVDIM)-2140
+38570 y Fa(22)4815 b Fi(DOUBLE)582 b(PRECISION)g(ATOL,)g(ERRI,)g(RTOL,)
+g(GERMAX,)g(DTOUT,)g(Y,)g(ROPT,)g(T)-2140 39898 y Fa(23)4815
+b Fi(DIMENSION)582 b(Y\(1024\),)h(ROPT\(40\))-2140 41227
+y Fa(24)1328 b Fi(C)-2140 42555 y Fa(25)4815 b Fi(DATA)582
+b(ATOL/1.0D-10/,)h(RTOL/1.0D-5/,)g(DTOUT/0.1D0/,)g(NOUT/10/)-2140
+43883 y Fa(26)4815 b Fi(DATA)582 b(LNST/4/,)g(LNFE/5/,)g(LNSETUP/6/,)h
+(LNNI/7/,)f(LNCF/8/,)h(LNETF/9/,)-2140 45212 y Fa(27)4234
+b Fi(1)2906 b(LNPE/18/,)582 b(LNLI/19/,)h(LNPS/20/,)f(LNCFL/21/)-2140
+46540 y Fa(28)1328 b Fi(C)-2140 47868 y Fa(29)4815 b
+Fi(COMMON)582 b(/PCOM/)g(ALPHA,)g(NLOCAL,)g(MYPE)-2140
+49197 y Fa(30)1328 b Fi(C)-2140 50525 y Fa(31)g Fi(C)2906
+b(Get)581 b(NPES)h(and)g(MYPE.)1163 b(Requires)582 b(initialization)h
+(of)f(MPI.)-2140 51853 y Fa(32)4815 b Fi(CALL)582 b(MPI_INIT\(IER\))
+-2140 53182 y Fa(33)4815 b Fi(IF)581 b(\(IER)h(.NE.)g(0\))f(THEN)-2140
+54510 y Fa(34)6558 b Fi(WRITE\(6,5\))583 b(IER)-2140
+55838 y Fa(35)1909 b Fi(5)4068 b(FORMAT\(///')583 b(MPI_ERROR:)g
+(MPI_INIT)f(returned)g(IER)g(=)f(',)h(I5\))-2140 57167
+y Fa(36)6558 b Fi(STOP)-2140 58495 y Fa(37)4815 b Fi(ENDIF)-2140
+59823 y Fa(38)g Fi(CALL)582 b(MPI_COMM_SIZE\(MPI_COMM_WORLD,)j(NPES,)d
+(IER\))-2140 61152 y Fa(39)4815 b Fi(IF)581 b(\(IER)h(.NE.)g(0\))f
+(THEN)-2140 62480 y Fa(40)6558 b Fi(WRITE\(6,6\))583
+b(IER)-2140 63808 y Fa(41)1909 b Fi(6)4068 b(FORMAT\(///')583
+b(MPI_ERROR:)g(MPI_COMM_SIZE)g(returned)f(IER)g(=)f(',)h(I5\))-2140
+65137 y Fa(42)6558 b Fi(CALL)582 b(MPI_ABORT\(MPI_COMM_WORLD,)j(1,)c
+(IER\))-2140 66465 y Fa(43)6558 b Fi(STOP)-2140 67794
+y Fa(44)4815 b Fi(ENDIF)-2140 69122 y Fa(45)g Fi(CALL)582
+b(MPI_COMM_RANK\(MPI_COMM_WORLD,)j(MYPE,)d(IER\))-2140
+70450 y Fa(46)4815 b Fi(IF)581 b(\(IER)h(.NE.)g(0\))f(THEN)-2140
+71779 y Fa(47)6558 b Fi(WRITE\(6,7\))583 b(IER)-2140
+73107 y Fa(48)1909 b Fi(7)4068 b(FORMAT\(///')583 b(MPI_ERROR:)g
+(MPI_COMM_RANK)g(returned)f(IER)g(=)f(',)h(I5\))-2140
+74435 y Fa(49)6558 b Fi(CALL)582 b(MPI_ABORT\(MPI_COMM_WORLD,)j(1,)c
+(IER\))-2140 75764 y Fa(50)6558 b Fi(STOP)-2140 77092
+y Fa(51)4815 b Fi(ENDIF)-2140 78420 y Fa(52)p Black 23091
+81741 a Fs(116)p Black eop
+%%Page: 117 121
+117 120 bop Black Black 1860 7638 a Fa(53)1328 b Fi(C)1860
+8966 y Fa(54)g Fi(C)2906 b(Set)581 b(input)h(arguments.)1860
+10295 y Fa(55)4815 b Fi(NLOCAL)582 b(=)f(10)1860 11623
+y Fa(56)4815 b Fi(NEQ)581 b(=)h(NPES)g(*)f(NLOCAL)1860
+12951 y Fa(57)4815 b Fi(T)581 b(=)g(0.0D0)1860 14280
+y Fa(58)4815 b Fi(METH)582 b(=)f(2)1860 15608 y Fa(59)4815
+b Fi(ITMETH)582 b(=)f(2)1860 16936 y Fa(60)4815 b Fi(IATOL)582
+b(=)f(1)1860 18265 y Fa(61)4815 b Fi(INOPT)582 b(=)f(0)1860
+19593 y Fa(62)4815 b Fi(ITASK)582 b(=)f(1)1860 20922
+y Fa(63)4815 b Fi(IPRE)582 b(=)f(1)1860 22250 y Fa(64)4815
+b Fi(IGS)581 b(=)h(1)1860 23578 y Fa(65)1328 b Fi(C)2906
+b(Set)581 b(parameter)i(alpha)1860 24907 y Fa(66)4815
+b Fi(ALPHA)1163 b(=)581 b(10.0D0)1860 26235 y Fa(67)1328
+b Fi(C)1860 27563 y Fa(68)4815 b Fi(DO)581 b(I)h(=)f(1,)g(NLOCAL)1860
+28892 y Fa(69)6558 b Fi(Y\(I\))582 b(=)f(1.0D0)1860 30220
+y Fa(70)4815 b Fi(ENDDO)1860 31548 y Fa(71)1328 b Fi(C)1860
+32877 y Fa(72)4815 b Fi(IF)581 b(\(MYPE)h(.EQ.)g(0\))f(THEN)1860
+34205 y Fa(73)6558 b Fi(WRITE\(6,15\))583 b(NEQ,)f(ALPHA,)g(RTOL,)g
+(ATOL,)g(NPES)1860 35533 y Fa(74)1909 b Fi(15)3487 b(FORMAT\('Diagonal)
+584 b(test)e(problem:'//')h(NEQ)e(=)g(',)h(I3,)f(/)1860
+36862 y Fa(75)4234 b Fi(&)5811 b(')582 b(parameter)g(alpha)g(=)f(',)h
+(F8.3/)1860 38190 y Fa(76)4234 b Fi(&)5811 b(')582 b(ydot_i)g(=)f
+(-alpha*i)h(*)g(y_i)f(\(i)h(=)f(1,...,NEQ\)'/)1860 39518
+y Fa(77)4234 b Fi(&)5811 b(')582 b(RTOL,)g(ATOL)f(=)h(',)f(2E10.1/)1860
+40847 y Fa(78)4234 b Fi(&)5811 b(')582 b(Method)g(is)f
+(BDF/NEWTON/SPGMR'/)1860 42175 y Fa(79)4234 b Fi(&)5811
+b(')582 b(Preconditioner)h(is)e(band-block-diagonal,)j(using)e
+(CVBBDPRE')1860 43504 y Fa(80)4234 b Fi(&)5811 b(/')582
+b(Number)g(of)f(processors)i(=)e(',)h(I3/\))1860 44832
+y Fa(81)4815 b Fi(ENDIF)1860 46160 y Fa(82)1328 b Fi(C)1860
+47489 y Fa(83)4815 b Fi(CALL)582 b(FNVINITP\(NLOCAL,)h(NEQ,)f(IER\))
+1860 48817 y Fa(84)1328 b Fi(C)1860 50145 y Fa(85)4815
+b Fi(IF)581 b(\(IER)h(.NE.)g(0\))f(THEN)1860 51474 y
+Fa(86)6558 b Fi(WRITE\(6,20\))583 b(IER)1860 52802 y
+Fa(87)1909 b Fi(20)3487 b(FORMAT\(///')583 b(SUNDIALS_ERROR:)h
+(FNVINITP)e(returned)g(IER)g(=)f(',)h(I5\))1860 54130
+y Fa(88)6558 b Fi(CALL)582 b(MPI_FINALIZE\(IER\))1860
+55459 y Fa(89)6558 b Fi(STOP)1860 56787 y Fa(90)4815
+b Fi(ENDIF)1860 58115 y Fa(91)1328 b Fi(C)1860 59444
+y Fa(92)4815 b Fi(CALL)582 b(FCVMALLOC\(T,)h(Y,)e(METH,)h(ITMETH,)g
+(IATOL,)g(RTOL,)g(ATOL,)1860 60772 y Fa(93)4234 b Fi(&)8717
+b(INOPT,)582 b(IOPT,)g(ROPT,)g(IER\))1860 62100 y Fa(94)1328
+b Fi(C)1860 63429 y Fa(95)4815 b Fi(IF)581 b(\(IER)h(.NE.)g(0\))f(THEN)
+1860 64757 y Fa(96)6558 b Fi(WRITE\(6,30\))583 b(IER)1860
+66086 y Fa(97)1909 b Fi(30)3487 b(FORMAT\(///')583 b(SUNDIALS_ERROR:)h
+(FCVMALLOC)e(returned)g(IER)g(=)f(',)h(I5\))1860 67414
+y Fa(98)6558 b Fi(CALL)582 b(MPI_ABORT\(MPI_COMM_WORLD,)j(1,)c(IER\))
+1860 68742 y Fa(99)6558 b Fi(STOP)1454 70071 y Fa(100)4815
+b Fi(ENDIF)1454 71399 y Fa(101)1328 b Fi(C)1454 72727
+y Fa(102)4815 b Fi(MUDQ)582 b(=)f(0)1454 74056 y Fa(103)4815
+b Fi(MLDQ)582 b(=)f(0)1454 75384 y Fa(104)4815 b Fi(MU)581
+b(=)h(0)1454 76712 y Fa(105)4815 b Fi(ML)581 b(=)h(0)1454
+78041 y Fa(106)4815 b Fi(CALL)582 b(FCVBBDINIT\(NLOCAL,)h(MUDQ,)f
+(MLDQ,)g(MU,)g(ML,)f(0.0D0,)h(IER\))p Black 27091 81741
+a Fs(117)p Black eop
+%%Page: 118 122
+118 121 bop Black Black -2546 7638 a Fa(107)4815 b Fi(IF)581
+b(\(IER)h(.NE.)g(0\))f(THEN)-2546 8966 y Fa(108)6558
+b Fi(WRITE\(6,35\))583 b(IER)-2546 10295 y Fa(109)1909
+b Fi(35)3487 b(FORMAT\(///')583 b(SUNDIALS_ERROR:)h(FCVBBDINIT)e
+(returned)g(IER)g(=)f(',)h(I5\))-2546 11623 y Fa(110)6558
+b Fi(CALL)582 b(MPI_ABORT\(MPI_COMM_WORLD,)j(1,)c(IER\))-2546
+12951 y Fa(111)6558 b Fi(STOP)-2546 14280 y Fa(112)4815
+b Fi(ENDIF)-2546 15608 y Fa(113)1328 b Fi(C)-2546 16936
+y Fa(114)4815 b Fi(CALL)582 b(FCVBBDSPGMR\(IPRE,)h(IGS,)f(0,)g(0.0D0,)g
+(IER\))-2546 18265 y Fa(115)4815 b Fi(IF)581 b(\(IER)h(.NE.)g(0\))f
+(THEN)-2546 19593 y Fa(116)6558 b Fi(WRITE\(6,36\))583
+b(IER)-2546 20922 y Fa(117)1909 b Fi(36)3487 b(FORMAT\(///')583
+b(SUNDIALS_ERROR:)h(FCVBBDSPGMR)e(returned)h(IER)e(=)h(',)f(I5\))-2546
+22250 y Fa(118)6558 b Fi(CALL)582 b(MPI_ABORT\(MPI_COMM_WORLD,)j(1,)c
+(IER\))-2546 23578 y Fa(119)6558 b Fi(STOP)-2546 24907
+y Fa(120)4815 b Fi(ENDIF)-2546 26235 y Fa(121)1328 b
+Fi(C)-2546 27563 y Fa(122)4815 b Fi(IF)581 b(\(MYPE)h(.EQ.)g(0\))f
+(WRITE\(6,38\))-2546 28892 y Fa(123)1909 b Fi(38)1744
+b(FORMAT\(/'Preconditioning)585 b(on)c(left'/\))-2546
+30220 y Fa(124)1328 b Fi(C)-2546 31548 y Fa(125)g Fi(C)2906
+b(Looping)582 b(point)g(for)g(cases)f(IPRE)h(=)g(1)f(and)g(2.)-2546
+32877 y Fa(126)1328 b Fi(C)-2546 34205 y Fa(127)1909
+b Fi(40)1744 b(CONTINUE)-2546 35533 y Fa(128)1328 b Fi(C)-2546
+36862 y Fa(129)g Fi(C)2906 b(Loop)582 b(through)g(tout)g(values,)g
+(call)g(solver,)g(print)g(output,)g(test)g(for)f(failure.)-2546
+38190 y Fa(130)4815 b Fi(TOUT)582 b(=)f(DTOUT)-2546 39518
+y Fa(131)4815 b Fi(DO)581 b(60)h(IOUT)g(=)f(1,)g(NOUT)-2546
+40847 y Fa(132)1328 b Fi(C)-2546 42175 y Fa(133)6558
+b Fi(CALL)582 b(FCVODE\(TOUT,)h(T,)e(Y,)h(ITASK,)g(IER\))-2546
+43504 y Fa(134)1328 b Fi(C)-2546 44832 y Fa(135)6558
+b Fi(IF)582 b(\(MYPE)g(.EQ.)f(0\))h(WRITE\(6,45\))h(T,)e(IOPT\(LNST\),)
+i(IOPT\(LNFE\))-2546 46160 y Fa(136)1909 b Fi(45)3487
+b(FORMAT\(')583 b(t)e(=)g(',)h(E10.2,)g(5X,)f('no.)h(steps)g(=)f(',)h
+(I5,)-2546 47489 y Fa(137)4234 b Fi(&)5811 b(')1744 b(no.)582
+b(f-s)f(=)g(',)h(I5\))-2546 48817 y Fa(138)1328 b Fi(C)-2546
+50145 y Fa(139)6558 b Fi(IF)582 b(\(IER)g(.NE.)f(0\))h(THEN)-2546
+51474 y Fa(140)8302 b Fi(WRITE\(6,50\))583 b(IER,)e(IOPT\(26\))-2546
+52802 y Fa(141)1909 b Fi(50)5231 b(FORMAT\(///')583 b(SUNDIALS_ERROR:)g
+(FCVODE)f(returned)g(IER)g(=)f(',)h(I5,)f(/,)-2546 54130
+y Fa(142)4234 b Fi(&)7555 b(')9880 b(Linear)582 b(Solver)g(returned)g
+(IER)g(=)f(',)g(I5\))-2546 55459 y Fa(143)8302 b Fi(CALL)582
+b(MPI_ABORT\(MPI_COMM_WORLD,)i(1,)e(IER\))-2546 56787
+y Fa(144)8302 b Fi(STOP)-2546 58115 y Fa(145)6558 b Fi(ENDIF)-2546
+59444 y Fa(146)1328 b Fi(C)-2546 60772 y Fa(147)6558
+b Fi(TOUT)582 b(=)f(TOUT)h(+)f(DTOUT)-2546 62100 y Fa(148)1909
+b Fi(60)1744 b(CONTINUE)-2546 63429 y Fa(149)1328 b Fi(C)-2546
+64757 y Fa(150)g Fi(C)2906 b(Get)581 b(max.)h(absolute)h(error)e(in)h
+(the)g(local)f(vector.)-2546 66086 y Fa(151)4815 b Fi(ERMAX)582
+b(=)f(0.0D0)-2546 67414 y Fa(152)4815 b Fi(DO)581 b(65)h(I)f(=)g(1,)h
+(NLOCAL)-2546 68742 y Fa(153)6558 b Fi(ERRI)1163 b(=)582
+b(Y\(I\))f(-)h(EXP\(-ALPHA)g(*)g(\(MYPE)f(*)h(NLOCAL)g(+)f(I\))g(*)h
+(T\))-2546 70071 y Fa(154)6558 b Fi(ERMAX)582 b(=)g(MAX\(ERMAX,)g
+(ABS\(ERRI\)\))-2546 71399 y Fa(155)1909 b Fi(65)1744
+b(CONTINUE)-2546 72727 y Fa(156)1328 b Fi(C)2906 b(Get)581
+b(global)i(max.)e(error)h(from)g(MPI_REDUCE)h(call.)-2546
+74056 y Fa(157)4815 b Fi(CALL)582 b(MPI_REDUCE\(ERMAX,)h(GERMAX,)g(1,)e
+(MPI_DOUBLE_PRECISION,)j(MPI_MAX,)-2546 75384 y Fa(158)4234
+b Fi(&)9298 b(0,)582 b(MPI_COMM_WORLD,)h(IER\))-2546
+76712 y Fa(159)4815 b Fi(IF)581 b(\(IER)h(.NE.)g(0\))f(THEN)-2546
+78041 y Fa(160)6558 b Fi(WRITE\(6,70\))583 b(IER)p Black
+23091 81741 a Fs(118)p Black eop
+%%Page: 119 123
+119 122 bop Black Black 1454 7638 a Fa(161)1909 b Fi(70)3487
+b(FORMAT\(///')583 b(MPI_ERROR:)g(MPI_REDUCE)f(returned)h(IER)e(=)h(',)
+f(I5\))1454 8966 y Fa(162)6558 b Fi(CALL)582 b
+(MPI_ABORT\(MPI_COMM_WORLD,)j(1,)c(IER\))1454 10295 y
+Fa(163)6558 b Fi(STOP)1454 11623 y Fa(164)4815 b Fi(ENDIF)1454
+12951 y Fa(165)g Fi(IF)581 b(\(MYPE)h(.EQ.)g(0\))f(WRITE\(6,75\))i
+(GERMAX)1454 14280 y Fa(166)1909 b Fi(75)1744 b(FORMAT\(/'Max.)583
+b(absolute)f(error)g(is',)g(E10.2/\))1454 15608 y Fa(167)1328
+b Fi(C)1454 16936 y Fa(168)g Fi(C)2906 b(Print)582 b(final)g
+(statistics.)1454 18265 y Fa(169)4815 b Fi(IF)581 b(\(MYPE)h(.EQ.)g
+(0\))f(THEN)1454 19593 y Fa(170)6558 b Fi(NST)582 b(=)f(IOPT\(LNST\))
+1454 20922 y Fa(171)6558 b Fi(NFE)582 b(=)f(IOPT\(LNFE\))1454
+22250 y Fa(172)6558 b Fi(NPSET)582 b(=)g(IOPT\(LNSETUP\))1454
+23578 y Fa(173)6558 b Fi(NPE)582 b(=)f(IOPT\(LNPE\))1454
+24907 y Fa(174)6558 b Fi(NPS)582 b(=)f(IOPT\(LNPS\))1454
+26235 y Fa(175)6558 b Fi(NNI)582 b(=)f(IOPT\(LNNI\))1454
+27563 y Fa(176)6558 b Fi(NLI)582 b(=)f(IOPT\(LNLI\))1454
+28892 y Fa(177)6558 b Fi(AVDIM)582 b(=)g(DBLE\(NLI\))g(/)f(DBLE\(NNI\))
+1454 30220 y Fa(178)6558 b Fi(NCFN)582 b(=)f(IOPT\(LNCF\))1454
+31548 y Fa(179)6558 b Fi(NCFL)582 b(=)f(IOPT\(LNCFL\))1454
+32877 y Fa(180)6558 b Fi(NETF)582 b(=)f(IOPT\(LNETF\))1454
+34205 y Fa(181)6558 b Fi(WRITE\(6,80\))583 b(NST,)f(NFE,)g(NPSET,)g
+(NPE,)f(NPS,)h(NNI,)g(NLI,)g(AVDIM,)g(NCFN,)1454 35533
+y Fa(182)4234 b Fi(&)8717 b(NCFL,)582 b(NETF)1454 36862
+y Fa(183)1909 b Fi(80)3487 b(FORMAT\(/'Final)584 b(statistics:'//)1454
+38190 y Fa(184)4234 b Fi(&)5811 b(')582 b(number)g(of)f(steps)4650
+b(=)581 b(',)h(I5,)f(4X,)1454 39518 y Fa(185)4234 b Fi(&)5811
+b(')582 b(number)g(of)f(f)g(evals.)2907 b(=)581 b(',)h(I5/)1454
+40847 y Fa(186)4234 b Fi(&)5811 b(')582 b(number)g(of)f(prec.)h(setups)
+g(=)f(',)h(I5/)1454 42175 y Fa(187)4234 b Fi(&)5811 b(')582
+b(number)g(of)f(prec.)h(evals.)g(=)f(',)h(I5,)f(4X,)1454
+43504 y Fa(188)4234 b Fi(&)5811 b(')582 b(number)g(of)f(prec.)h(solves)
+g(=)f(',)h(I5/)1454 44832 y Fa(189)4234 b Fi(&)5811 b(')582
+b(number)g(of)f(nonl.)h(iters.)g(=)f(',)h(I5,)f(4X,)1454
+46160 y Fa(190)4234 b Fi(&)5811 b(')582 b(number)g(of)f(lin.)h(iters.)
+1163 b(=)581 b(',)h(I5/)1454 47489 y Fa(191)4234 b Fi(&)5811
+b(')582 b(average)g(Krylov)g(subspace)g(dimension)h(\(NLI/NNI\))f(=)g
+(',)f(F8.4/)1454 48817 y Fa(192)4234 b Fi(&)5811 b(')582
+b(number)g(of)f(conv.)h(failures..)h(nonlinear)f(=)f(',)h(I3,)1454
+50145 y Fa(193)4234 b Fi(&)5811 b(')1163 b(linear)582
+b(=)f(',)h(I3/)1454 51474 y Fa(194)4234 b Fi(&)5811 b(')582
+b(number)g(of)f(error)h(test)g(failures)g(=)f(',)h(I3/\))1454
+52802 y Fa(195)6558 b Fi(CALL)582 b(FCVBBDOPT\(LENRPW,)i(LENIPW,)e
+(NGE\))1454 54130 y Fa(196)6558 b Fi(WRITE\(6,82\))583
+b(LENRPW,)f(LENIPW,)h(NGE)1454 55459 y Fa(197)1909 b
+Fi(82)3487 b(FORMAT\('In)583 b(CVBBDPRE:'//)1454 56787
+y Fa(198)4234 b Fi(&)5811 b(')582 b(real/int)g(local)g(workspace)g(=)g
+(',)f(2I5/)1454 58115 y Fa(199)4234 b Fi(&)5811 b(')582
+b(number)g(of)f(g)g(evals.)i(=)e(',)g(I5\))1454 59444
+y Fa(200)4815 b Fi(ENDIF)1454 60772 y Fa(201)1328 b Fi(C)1454
+62100 y Fa(202)g Fi(C)2906 b(If)581 b(IPRE)h(=)f(1,)h(re-initialize)h
+(T,)e(Y,)h(and)f(the)h(solver,)g(and)g(loop)g(for)f(case)h(IPRE)g(=)f
+(2.)1454 63429 y Fa(203)1328 b Fi(C)2906 b(Otherwise)582
+b(jump)g(to)g(final)f(block.)1454 64757 y Fa(204)4815
+b Fi(IF)581 b(\(IPRE)h(.EQ.)g(2\))f(GO)h(TO)f(99)1454
+66086 y Fa(205)1328 b Fi(C)1454 67414 y Fa(206)4815 b
+Fi(T)581 b(=)g(0.0D0)1454 68742 y Fa(207)4815 b Fi(DO)581
+b(I)h(=)f(1,)g(NLOCAL)1454 70071 y Fa(208)6558 b Fi(Y\(I\))582
+b(=)f(1.0D0)1454 71399 y Fa(209)4815 b Fi(ENDDO)1454
+72727 y Fa(210)1328 b Fi(C)1454 74056 y Fa(211)4815 b
+Fi(CALL)582 b(FCVREINIT\(T,)h(Y,)e(IATOL,)h(RTOL,)g(ATOL,INOPT,)h
+(IOPT,)f(ROPT,)g(IER\))1454 75384 y Fa(212)4815 b Fi(IF)581
+b(\(IER)h(.NE.)g(0\))f(THEN)1454 76712 y Fa(213)6558
+b Fi(WRITE\(6,91\))583 b(IER)1454 78041 y Fa(214)1909
+b Fi(91)3487 b(FORMAT\(///')583 b(SUNDIALS_ERROR:)h(FCVREINIT)e
+(returned)g(IER)g(=)f(',)h(I5\))p Black 27091 81741 a
+Fs(119)p Black eop
+%%Page: 120 124
+120 123 bop Black Black -2546 7638 a Fa(215)6558 b Fi(CALL)582
+b(MPI_ABORT\(MPI_COMM_WORLD,)j(1,)c(IER\))-2546 8966
+y Fa(216)6558 b Fi(STOP)-2546 10295 y Fa(217)4815 b Fi(ENDIF)-2546
+11623 y Fa(218)1328 b Fi(C)-2546 12951 y Fa(219)4815
+b Fi(IPRE)582 b(=)f(2)-2546 14280 y Fa(220)1328 b Fi(C)-2546
+15608 y Fa(221)4815 b Fi(CALL)582 b(FCVBBDREINIT\(NLOCAL,)i(MUDQ,)e
+(MLDQ,)g(0.0D0,)g(IER\))-2546 16936 y Fa(222)4815 b Fi(IF)581
+b(\(IER)h(.NE.)g(0\))f(THEN)-2546 18265 y Fa(223)6558
+b Fi(WRITE\(6,92\))583 b(IER)-2546 19593 y Fa(224)1909
+b Fi(92)3487 b(FORMAT\(///')583 b(SUNDIALS_ERROR:)h(FCVBBDREINIT)e
+(returned)h(IER)e(=)h(',)f(I5\))-2546 20922 y Fa(225)6558
+b Fi(CALL)582 b(MPI_ABORT\(MPI_COMM_WORLD,)j(1,)c(IER\))-2546
+22250 y Fa(226)6558 b Fi(STOP)-2546 23578 y Fa(227)4815
+b Fi(ENDIF)-2546 24907 y Fa(228)1328 b Fi(C)-2546 26235
+y Fa(229)4815 b Fi(CALL)582 b(FCVSPGMRREINIT\(IPRE,)i(IGS,)e(0.0D0,)g
+(IER\))-2546 27563 y Fa(230)4815 b Fi(IF)581 b(\(IER)h(.NE.)g(0\))f
+(THEN)-2546 28892 y Fa(231)6558 b Fi(WRITE\(6,93\))583
+b(IER)-2546 30220 y Fa(232)1909 b Fi(93)3487 b(FORMAT\(///')583
+b(SUNDIALS_ERROR:)h(FCVSPGMRREINIT)f(returned)f(IER)g(=)f(',I5\))-2546
+31548 y Fa(233)6558 b Fi(CALL)582 b(MPI_ABORT\(MPI_COMM_WORLD,)j(1,)c
+(IER\))-2546 32877 y Fa(234)6558 b Fi(STOP)-2546 34205
+y Fa(235)4815 b Fi(ENDIF)-2546 35533 y Fa(236)1328 b
+Fi(C)-2546 36862 y Fa(237)4815 b Fi(IF)581 b(\(MYPE)h(.EQ.)g(0\))f
+(WRITE\(6,95\))-2546 38190 y Fa(238)1909 b Fi(95)1744
+b(FORMAT\(//60\('-'\)///'Preconditioning)586 b(on)c(right'/\))-2546
+39518 y Fa(239)4815 b Fi(GO)581 b(TO)h(40)-2546 40847
+y Fa(240)1328 b Fi(C)-2546 42175 y Fa(241)g Fi(C)2906
+b(Free)582 b(the)f(memory)h(and)g(finalize)g(MPI.)-2546
+43504 y Fa(242)1909 b Fi(99)1744 b(CALL)582 b(FCVBBDFREE)-2546
+44832 y Fa(243)4815 b Fi(CALL)582 b(FCVFREE)-2546 46160
+y Fa(244)4815 b Fi(CALL)582 b(FNVFREEP)-2546 47489 y
+Fa(245)4815 b Fi(CALL)582 b(MPI_FINALIZE\(IER\))-2546
+48817 y Fa(246)1328 b Fi(C)-2546 50145 y Fa(247)4815
+b Fi(STOP)-2546 51474 y Fa(248)g Fi(END)-2546 52802 y
+Fa(249)1328 b Fi(C)-2546 54130 y Fa(250)4815 b Fi(SUBROUTINE)583
+b(FCVFUN\(T,)f(Y,)f(YDOT\))-2546 55459 y Fa(251)1328
+b Fi(C)2906 b(Routine)582 b(for)g(right-hand)g(side)g(function)g(f)
+-2546 56787 y Fa(252)1328 b Fi(C)-2546 58115 y Fa(253)4815
+b Fi(IMPLICIT)582 b(NONE)-2546 59444 y Fa(254)1328 b
+Fi(C)-2546 60772 y Fa(255)4815 b Fi(INTEGER)582 b(MYPE)-2546
+62100 y Fa(256)4815 b Fi(INTEGER*4)582 b(I,)g(NLOCAL)-2546
+63429 y Fa(257)4815 b Fi(DOUBLE)582 b(PRECISION)g(Y,)g(YDOT,)g(ALPHA,)g
+(T)-2546 64757 y Fa(258)4815 b Fi(DIMENSION)582 b(Y\(*\),)g(YDOT\(*\))
+-2546 66086 y Fa(259)1328 b Fi(C)-2546 67414 y Fa(260)4815
+b Fi(COMMON)582 b(/PCOM/)g(ALPHA,)g(NLOCAL,)g(MYPE)-2546
+68742 y Fa(261)1328 b Fi(C)-2546 70071 y Fa(262)4815
+b Fi(DO)581 b(I)h(=)f(1,)g(NLOCAL)-2546 71399 y Fa(263)6558
+b Fi(YDOT\(I\))583 b(=)e(-ALPHA)h(*)f(\(MYPE)h(*)f(NLOCAL)h(+)g(I\))f
+(*)g(Y\(I\))-2546 72727 y Fa(264)4815 b Fi(ENDDO)-2546
+74056 y Fa(265)1328 b Fi(C)-2546 75384 y Fa(266)4815
+b Fi(RETURN)-2546 76712 y Fa(267)g Fi(END)-2546 78041
+y Fa(268)1328 b Fi(C)p Black 23091 81741 a Fs(120)p Black
+eop
+%%Page: 121 125
+121 124 bop Black Black 1454 7638 a Fa(269)4815 b Fi(SUBROUTINE)583
+b(FCVGLOCFN\(NLOC,)g(T,)e(YLOC,)h(GLOC\))1454 8966 y
+Fa(270)1328 b Fi(C)2906 b(Routine)582 b(to)g(define)g(local)f
+(approximate)i(function)g(g,)e(here)h(the)f(same)h(as)g(f.)1454
+10295 y Fa(271)4815 b Fi(IMPLICIT)582 b(NONE)1454 11623
+y Fa(272)1328 b Fi(C)1454 12951 y Fa(273)4815 b Fi(INTEGER*4)582
+b(NLOC)1454 14280 y Fa(274)4815 b Fi(DOUBLE)582 b(PRECISION)g(YLOC,)g
+(GLOC,)g(T)1454 15608 y Fa(275)4815 b Fi(DIMENSION)582
+b(YLOC\(*\),)h(GLOC\(*\))1454 16936 y Fa(276)1328 b Fi(C)1454
+18265 y Fa(277)4815 b Fi(CALL)582 b(FCVFUN\(T,)g(YLOC,)g(GLOC\))1454
+19593 y Fa(278)1328 b Fi(C)1454 20922 y Fa(279)4815 b
+Fi(RETURN)1454 22250 y Fa(280)g Fi(END)1454 23578 y Fa(281)1454
+24907 y(282)g Fi(SUBROUTINE)583 b(FCVCOMMFN\(NLOC,)g(T,)e(YLOC\))1454
+26235 y Fa(283)1328 b Fi(C)2906 b(Routine)582 b(to)g(perform)g
+(communication)h(required)f(for)g(evaluation)g(of)g(g.)1454
+27563 y Fa(284)4815 b Fi(RETURN)1454 28892 y Fa(285)g
+Fi(END)p Black 27091 81741 a Fs(121)p Black eop
+%%Page: 122 126
+122 125 bop Black Black Black Black eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/Win32/WinCVODE/sundials/cvode/doc/cv_guide.pdf b/Win32/WinCVODE/sundials/cvode/doc/cv_guide.pdf
new file mode 100644
index 0000000..6238f2e
Binary files /dev/null and b/Win32/WinCVODE/sundials/cvode/doc/cv_guide.pdf differ
diff --git a/Win32/WinCVODE/sundials/cvode/doc/cv_guide.ps b/Win32/WinCVODE/sundials/cvode/doc/cv_guide.ps
new file mode 100644
index 0000000..1ea2209
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/doc/cv_guide.ps
@@ -0,0 +1,22383 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Title: cv_guide.dvi
+%%Pages: 124
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: CMR17 CMCSC10 CMR12 CMTI12 CMBX10 CMR10 CMBX12 CMTT10
+%%+ CMR5 CMSY10 CMTI10 CMITT10 CMMI10 CMR7 CMMI7 CMEX10 CMSY7 CMSY5 CMR8
+%%+ CMR9 CMTT8 CMSL9 MSAM10 CMTT12
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -Ppdf cv_guide
+%DVIPSParameters: dpi=8000, compressed
+%DVIPSSource:  TeX output 2005.05.18:1633
+%%BeginProcSet: tex.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true 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/IEn 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 IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/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 A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
+/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
+setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
+restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/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{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: alt-rule.pro
+%!
+% Patch by TVZ
+% Makes dvips files draw rules with stroke rather than fill.
+% Makes narrow rules more predictable at low resolutions
+% after distilling to PDF.
+% May have unknown consequences for very thick rules.
+% Tested only with dvips 5.85(k).
+TeXDict begin
+/QV {
+  gsave newpath /ruleY X /ruleX X
+  Rx Ry gt
+  { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry }
+  { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx }
+  ifelse
+  setlinewidth 0 setlinecap stroke grestore
+} bind def
+end
+
+%%EndProcSet
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true 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/IEn 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 IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/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 A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A 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/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/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{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: pstricks.pro
+%!
+% PostScript prologue for pstricks.tex.
+% Version 97 patch 3, 98/06/01
+% For distribution, see pstricks.tex.
+%
+/tx at Dict 200 dict def tx at Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/TMatrix { } def
+/RAngle { 0 } def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+/pathforall load stopped { pop pop pop pop } if z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP  } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ]
+0 } ifelse setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { gsave abs CLW add /a ED a 0 dtransform round exch round exch
+2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25
+% DG/SR modification begin - Dec. 12, 1997 - Patch 2
+%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+% DG/SR modification end
+Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict
+/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1
+% DG/SR modification begin - Jun.  1, 1998 - Patch 3 (from Michael Vulis)
+% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore }
+% def
+a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore
+pop pop } def
+% DG/SR modification end
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
+div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
+CLW moveto } def
+/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
+2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
+curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
+def
+/SD { 0 360 arc fill } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto
+load } if ] cvx newpath 3 1 roll T exec } def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/Diamond { /mtrx CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul
+neg /d ED /a w h Atan def /h d a sin Div h add def /w d a cos Div w add
+def } ifelse mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2
+div /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+setmatrix } def
+% DG modification begin - Jan. 15, 1997
+%/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq {
+%pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+%div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0
+%d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+%setmatrix } def
+/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup
+CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0
+d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+% DG/SR modification begin - Jun.  1, 1998 - Patch 3 (from Michael Vulis)
+% setmatrix } def
+setmatrix pop } def
+% DG/SR modification end
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix
+rotate matrix concatmatrix exch findfont exch makefont setfont } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop
+} if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ]
+aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6
+2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto }
+ifelse } def
+/ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv {
+6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def
+/BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1
+sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore }
+def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 }
+if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if
+/dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div
+round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div
+round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub
+0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def
+/Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def }
+if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def }
+{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add
+exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n
+div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1
+dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt {
+dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt {
+pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup
+stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg}
+{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i
+w add def } repeat grestore gsave n 0 gt
+% DG/SR modification begin - Nov. 7, 1997 - Patch 1
+%{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash }
+{ 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash }
+% DG/SR modification end
+{ 2 setlinecap } ifelse /i y1 def /f x1 dx mul
+n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n
+div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop
+1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs
+dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt
+{z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g
+exch t L stroke /i i h add def } repeat grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET  } def
+/RotBegin { tx at Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 }
+def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle
+dup a add ] cvx def } def
+/RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ]
+cvx def } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def
+/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible
+/IfVisible true def } if } { IfVisible { Invisible /IfVisible false def
+} if } ifelse } def
+/InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def
+/Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit
+neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def
+/IfVisible true def } def
+end
+% END pstricks.pro
+
+%%EndProcSet
+%%BeginProcSet: pst-dots.pro
+%!PS-Adobe-2.0
+%%Title: Dot Font for PSTricks 97 - Version 97, 93/05/07.
+%%Creator: Timothy Van Zandt <tvz at Princeton.EDU>
+%%Creation Date: May 7, 1993
+10 dict dup begin
+  /FontType 3 def
+  /FontMatrix [ .001 0 0 .001 0 0 ] def
+  /FontBBox [ 0 0 0 0 ] def
+  /Encoding 256 array def
+  0 1 255 { Encoding exch /.notdef put } for
+  Encoding
+    dup (b) 0 get /Bullet put
+    dup (c) 0 get /Circle put
+    dup (C) 0 get /BoldCircle put
+    dup (u) 0 get /SolidTriangle put
+    dup (t) 0 get /Triangle put
+    dup (T) 0 get /BoldTriangle put
+    dup (r) 0 get /SolidSquare put
+    dup (s) 0 get /Square put
+    dup (S) 0 get /BoldSquare put
+    dup (q) 0 get /SolidPentagon put
+    dup (p) 0 get /Pentagon put
+    (P) 0 get /BoldPentagon put
+  /Metrics 13 dict def
+  Metrics begin
+    /Bullet 1000 def
+    /Circle 1000 def
+    /BoldCircle 1000 def
+    /SolidTriangle 1344 def
+    /Triangle 1344 def
+    /BoldTriangle 1344 def
+    /SolidSquare 886 def
+    /Square 886 def
+    /BoldSquare 886 def
+    /SolidPentagon 1093.2 def
+    /Pentagon 1093.2 def
+    /BoldPentagon 1093.2 def
+    /.notdef 0 def
+  end
+  /BBoxes 13 dict def
+  BBoxes begin
+    /Circle { -550 -550 550 550 } def
+    /BoldCircle /Circle load def
+    /Bullet /Circle load def
+    /Triangle { -571.5 -330 571.5 660 } def
+    /BoldTriangle /Triangle load def
+    /SolidTriangle /Triangle load def
+    /Square { -450 -450 450 450 } def
+    /BoldSquare /Square load def
+    /SolidSquare /Square load def
+    /Pentagon { -546.6 -465 546.6 574.7 } def
+    /BoldPentagon /Pentagon load def
+    /SolidPentagon /Pentagon load def
+    /.notdef { 0 0 0 0 } def
+  end
+  /CharProcs 20 dict def
+  CharProcs begin
+    /Adjust {
+      2 copy dtransform floor .5 add exch floor .5 add exch idtransform
+      3 -1 roll div 3 1 roll exch div exch scale
+    } def
+    /CirclePath { 0 0 500 0 360 arc closepath } def
+    /Bullet { 500 500 Adjust CirclePath fill } def
+    /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath eofill } def
+    /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath eofill } def
+    /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def
+    /TrianglePath {
+      0  660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath
+    } def
+    /SolidTriangle { TrianglePath fill } def
+    /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def
+    /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def
+    /SquarePath {
+      -450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto
+      closepath
+    } def
+    /SolidSquare { SquarePath fill } def
+    /Square { SquarePath .89 .89 scale SquarePath eofill } def
+    /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def
+    /PentagonPath {
+      -337.8 -465   moveto
+       337.8 -465   lineto
+       546.6  177.6 lineto
+         0    574.7 lineto
+      -546.6  177.6 lineto
+      closepath
+    } def
+    /SolidPentagon { PentagonPath fill } def
+    /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def
+    /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def
+    /.notdef { } def
+  end
+  /BuildGlyph {
+    exch
+    begin
+      Metrics 1 index get exec 0
+      BBoxes 3 index get exec
+      setcachedevice
+      CharProcs begin load exec end
+    end
+  } def
+  /BuildChar {
+    1 index /Encoding get exch get
+    1 index /BuildGlyph get exec
+  } bind def
+end
+/PSTricksDotFont exch definefont pop
+% END pst-dots.pro
+
+%%EndProcSet
+%%BeginProcSet: pst-node.pro
+%!
+% PostScript prologue for pst-node.tex.
+% Version 97 patch 1, 97/05/09.
+% For distribution, see pstricks.tex.
+%
+/tx at NodeDict 400 dict def tx at NodeDict begin
+tx at Dict begin /T /translate load def end
+/NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def }
+if begin tx at Dict begin STV CP T exec end /NodeMtrx CM def next end
+grestore } def
+/InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def
+} def
+/InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch
+Sin mul } def } def
+/GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def
+} ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def }
+ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx
+dup Sin mul Cos Div } ifelse } def
+/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub
+/u ED /NodePos { GetRnodePos } def } def
+/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup
+Cos mul exch Sin mul } def
+/TriNodePos { Sin s lt { d NodeSep sub dup Cos mul Sin Div exch } { w h
+mul w Sin mul h Cos abs mul add Div NodeSep add dup Cos mul exch Sin mul
+} ifelse } def
+/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d
+ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d
+sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan
+sin def /NodePos { TriNodePos } def } def
+/OvalNodePos { /ww w NodeSep add def /hh h NodeSep add def Sin ww mul Cos
+hh mul Atan dup cos ww mul exch sin hh mul } def
+/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
+/XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist
+Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg }
+{ 0 Dist Sin mul } ifelse } ifelse Do } def
+/GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform
+exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx
+dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop
+XYPos } ifelse } def
+/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1
+roll sin mul sub exch } ifelse } def
+/GetEdgeA { NodeSepA AngleA NodeA NodeSepTypeA GetEdge OffsetA AngleA
+AddOffset yA add /yA1 ED xA add /xA1 ED } def
+/GetEdgeB { NodeSepB AngleB NodeB NodeSepTypeB GetEdge OffsetB AngleB
+AddOffset yB add /yB1 ED xB add /xB1 ED } def
+/GetArmA { ArmTypeA 0 eq { /xA2 ArmA AngleA cos mul xA1 add def /yA2 ArmA
+AngleA sin mul yA1 add def } { ArmTypeA 1 eq {{exch}} {{}} ifelse /Do ED
+ArmA AngleA XYPos OffsetA AngleA AddOffset yA add /yA2 ED xA add /xA2 ED
+} ifelse } def
+/GetArmB { ArmTypeB 0 eq { /xB2 ArmB AngleB cos mul xB1 add def /yB2 ArmB
+AngleB sin mul yB1 add def } { ArmTypeB 1 eq {{exch}} {{}} ifelse /Do ED
+ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED
+} ifelse } def
+/InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED
+/NodeSepA ED /OffsetB ED /OffsetA ED tx at NodeDict a known tx at NodeDict b
+known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA
+ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def
+/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub
+mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def
+/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt
+{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop
+} repeat LPutLine cleartomark } def
+/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
+/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
+mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
+sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
+add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
+y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
+mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def
+/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def
+} def
+/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def
+/NAngle yyB yyA sub xxB xxA sub Atan def } def
+/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd  } def
+/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def
+} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit
+} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd 
+} def
+/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def
+} def
+/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def
+/NAngle yyB yyA sub xxB xxA sub Atan def } def
+/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd  } def
+/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def
+} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check {
+exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark
+VPosEnd  } def
+/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2
+roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx
+def grestore exec /LPutVar /SaveLPutVar load def } def
+/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def
+GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos {
+LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos {
+LPutVar VPutLine } def LPutVar } def
+/NCLine { NCCoor tx at Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop
+end } def
+/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub
+Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan
+/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1
+yA1 ] cvx def mark LPutVar tx at Dict begin false Line end /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+ifelse } def
+/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1
+roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA
+GetArmB xA2 yA2 xA1 yA1 tx at Dict begin ArrowA end xB2 yB2 xB1 yB1 tx at Dict
+begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ]
+cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines
+} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def
+/NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
+def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx
+itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2
+yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false Line end /LPutVar [ xB1
+yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def
+/HPutPos { HPutLines } def /VPutPos { VPutLines } def } def
+/NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2
+yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform
+/y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1
+tx at Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ]
+cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCBar { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def
+xA2 yA2 mtrx itransform pop xB2 yB2 mtrx itransform pop sub dup 0 mtrx
+transform 3 -1 roll 0 gt { /yB2 exch yB2 add def /xB2 exch xB2 add def }
+{ /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse mark ArmB
+0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict
+begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx
+def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCDiag { GetEdgeA GetEdgeB GetArmA GetArmB mark ArmB 0 ne { xB1 yB1 } if
+xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false Line end
+/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCDiagg { GetEdgeA GetArmA yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED
+GetEdgeB mark xB1 yB1 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin
+false Line end /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCLoop { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
+def xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED /xB3 xB2 yB2
+mtrx transform pop def xB3 yA3 mtrx itransform /yB3 ED /xB3 ED xA3 yA3
+mtrx itransform /yA3 ED /xA3 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2
+xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false
+Line end /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ]
+cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+% DG/SR modification begin - May 9, 1997 - Patch 1
+%/NCCircle { 0 0 NodesepA nodeA \tx at GetEdge pop xA sub 2 div dup 2 exp r
+%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
+%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
+%mul add dup 5 1 roll 90 sub \tx at PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
+/NCCircle { NodeSepA 0 NodeA 0 GetEdge pop 2 div dup 2 exp r
+r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
+exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
+mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
+% DG/SR modification end
+} def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA 90 sub a add
+AngleA 270 add a sub tx at Dict begin /angleB ED /angleA ED /r ED /c 57.2957 r
+Div def /y ED /x ED } def
+/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB
+180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos
+mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def
+/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy
+add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos
+{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar
+tx at Dict begin false Polygon end } def
+/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan
+def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2
+mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def
+/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div
+def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def
+GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul
+sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0
+eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn }
+{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def
+0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2
+roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0
+0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2
+roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat }
+ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos
+{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le {
+r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC }
+{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add
+add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub
+mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t
+sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse
+y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos {
+LPutPos } def } def
+/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB
+sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1
+ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB
+w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos
+{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop }
+{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine }
+def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx at Dict begin
+/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def
+/LPutCoor { NAngle tx at Dict begin /NAngle ED end gsave CM STV CP Y sub neg
+exch X sub neg exch moveto setmatrix CP grestore } def
+/LPut { tx at NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0
+def } ifelse LPutCoor  } def
+/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg }
+if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED }
+def
+/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if
+r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED }
+def
+end
+% END pst-node.pro
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
+exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub
+dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
+ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict
+end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{
+dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1
+roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def
+dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}
+if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}
+def 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 0 N/rwiSeen false N
+/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
+/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
+/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
+X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
+/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
+/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
+{userdict/md get type/dicttype eq{userdict begin md length 10 add md
+maxlength ge{/md md dup length 20 add dict copy def}if end 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 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
+save N userdict maxlength dict begin/magscale true 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
+ at SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{
+CLIP 1 eq{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 rwiSeen{rwi urx llx
+sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
+}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
+CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
+lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
+/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
+repeat grestore 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
+%%BeginProcSet: color.pro
+%!
+TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
+setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
+}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
+/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
+setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
+/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
+known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
+/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
+/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
+setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
+setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
+0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
+/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
+setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
+0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
+0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
+0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
+/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
+setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
+setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
+0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
+/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
+setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
+0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
+0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
+0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
+/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
+setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
+/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
+0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
+0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
+0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
+setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
+0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
+/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
+setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
+0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
+1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
+/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
+setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
+0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
+DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
+setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
+setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
+setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
+
+%%EndProcSet
+%%BeginFont: CMTT12
+%!PS-AdobeFont-1.1: CMTT12 1.0
+%%CreationDate: 1991 Aug 20 16:45:46
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 66 /B put
+dup 68 /D put
+dup 77 /M put
+dup 97 /a put
+dup 100 /d put
+dup 101 /e put
+dup 110 /n put
+dup 115 /s put
+dup 116 /t put
+readonly def
+/FontBBox{-1 -234 524 695}readonly def
+/UniqueXX 5000833 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be79011d1f5b667eed85fade30ab2ec4e1c2f
+4fe750cf9a69506458071de8896261c001b1c290937fa42a1fa87de406e9f86a
+4c9c0f03f69fba719114f8ae51040a4c03a58b6f3de027f6726f32743dce7395
+14c2c6f3c2de1aeddcfa8eed7da56dd68dbcde33c29ff7a694769049e4325ec9
+61b2df16add2ad46f18781fbd63eec62c26f1db41e6a666a09886382dceba91d
+8ff7cedd64ddc8a2f15fe34076a064c46febd1f4dc3707aede0ce8af161bcb8e
+4ada202d0954baca5be71c28ab8bf32fd72029aa07f27d658a68f454a4bf386f
+6314224d16c7f0a8624f6b86319a4e2fd178f596f3b20db032ea28c157a68a69
+fad2bc88881658d2286c0d4ef061bc070c3145f2a37ebec03f51de7cda34cd97
+7eeebd86b00f9758b3a496f41d9a74279ef3c6322dc54945f95062c5f37a1e51
+cf7eaf45f2b3634b2d7d01ec3b298ff35b6616cd3020e096f6c6aa2bf04c4a93
+61c19f3c67a28d936ffc8120f1e46980b29bf54047c5f1fa48e67611a74fa434
+3384f802a4079b28b94681e119ab0c1692de5bbf426440ad1023506cb80732de
+c64d9061869cb34de924d2c26e404b7dbd9be55b9c0c5ae3095c15d278adbb49
+12df1484ed2d73128e5d9c1f1a3b9ac19e2ce5366c96644f5b3d3eea589caedb
+586fd9b8f4df32ec910e9b7434d5bbe57e03892eb03890567df5b811afa0da5e
+929d456af362fda0789aa0cff464e238029294fde86cfc8d7d33d5c98b18c76c
+319811e4d3d49560f2ac39103594ec513e0b1377c2c3e22979866c19b61448d5
+a7201ca4b7538aa370f6347253b0853d4c5d575a7572f93cb73a598e2e26b11a
+d46a1126e44e7e1795dff01562316b6ccc6678663e66a73db285746df3f4405d
+d51714679581946ef72104f6915fa0e3e31d40e5c09962bb071055a7b8e6a533
+e288dd79c77bb5c41a82633f7ca8e6f039766d53920aed04f9528c4529e96afa
+18fddccf30774b21fded23cddf6f9a78ae6edb1db56e9e3f45e5721f7b7c0e8d
+17bfb449b0a02edc1038f3257089e190d8e3dc5b30e7a16b556c3f2ef19f80bf
+b796635b00b9f0b0a172917069a9362e5ab7d7ed9644f1f711ce997d7dd14519
+1d86e8b8bcfcae86776d342aefb684519942d2b5d9a7429517b10242ad7d689a
+545595b8c87eb5f060ed4fa25977882071f34e485e5c3ef37d106c398bce1970
+2bfb26aa1e289c87425e06c0b4f107df69d4f5e4962b73de6874c56015b5e316
+e5b8f485ba437172803e0e7d044c301fab0f7c064e52f70e7243d76a9b5b1b93
+81c545874f3b4d3c1cc4c097a87452694bfc7fb289480292bc23a5bd6f6f0201
+cb9f0847555984636b3e91875f57a107d76ba61003d3b27b79c381467cc6294a
+192ad6ad34e3f866dd58e4de36205f82a93295a3378e490c691b8d02ca7896c4
+bbbf11713da29f575409826d733ce4737bb5802f7bec1f353742a1f80d90604d
+d40783b6011189697f28f3b0910f52fbfd05e7f74395a8825bed352b7d31399b
+bb5bc4b458f963840fd759fbe4961021f88fbadb9940bacf7eb9e7e81163a1de
+e96fe6b7c4f293a14ac40717802532c43b61a30f2af752daa01d59d0d3ba8d31
+2ec42e0b866d24948794b02d90ee6e7b408560d768e51d7be76a2979f2e13b81
+ebe7c7903928a071251d39c5d11e5fa50fe943dbc6eee23c6e8d79d13de7b956
+ea7217a7be2f5c52ee6ed7d2b89d436f5ac970552a28b1dcf7823db8cd4fc835
+7d0510b5ad0486998c4ba8eb9d77543369501a8ed54081abe39992cb043c4838
+a3b0a03bf2e6833cbdad59ab3f91322f83f46ee4f326fa9803b3ca9e4c77433f
+1a0a8a39459ca87732924faeaf9e9909ee10a312a2c2e475fe1441923e12253b
+dddb15c922c399ef5c599036b7a3d5737dcd466830faa8516120d3e7eb5881b4
+7d8b92a4b49c4285148fbb3bb84f9540f43ef393d4d11e17576da66bb68a7e93
+2347b293cb01f4b4927d23b616a05377cd8f77df773b3ab017bcf2586d2e06e7
+96db4a7472c0d68666376760ba4cf095f99dc0cff3ab8be353cb8595a0b4605a
+00d67efe102b19fcb371539ad1600e05b23c7dba7d3c3934c2b962d59d9d51fd
+6a8e55176855f42ca6c8ceb2c7766203fb25fa14617ff7d3ca3a36ce57f43f46
+b8239c8af16eb7d805a73de8364fb38de9afdbe326d9070650b1611e82006a37
+2821bed2978122f619c18ab3de28446c29b179a312b97da9539b3666d468a92f
+9b53b3d428bb77c517eb0b08fa9c21f2c55dfce4439e24f59df02309a4c06f92
+c60b50763f5753cbe70bff6247390c1fc5cabfdbc6668de35efecb1755d78d56
+a216caa804f93489ae155e1eb3d6fd6a588e3f3b9e03166b3bf2eab3b1914841
+c8b55c82c4299034c3aa6647946f94a995299d932d96660ec8b68ebf1456486b
+078280557f069676038893f370115644a53cfc22068fbfd9230ad073e358d762
+3de3e8134f33b17f82f6a59dab17d51ee2eb1af3c8c0fff32d1e309342332505
+5ba5f356aa0de903dcd808f99e595165ac91e91ce5e8e1c465868649018755ca
+0314a1b14e663bbace896035c0be9933db7c3219927c61abc14e8a4d865e9526
+b7436812364e353bd649ca16beb2b804726aca9193974825a2b356640bbc0a74
+4bed3f3fc201d8387b8c6df4fb207177cbf5152129639f62c841ae42139f5f51
+cf2f86e5a06f044897c57b1a948f8c88d116ee6f4a861af1b7aab54e8f439ca8
+4d607cf0fc63f0469e6c99d3ee3e5d3a6bffb6928ab91c8c24226d8a66097feb
+305d45868c99fa4c076e0247247c23d8204dbfdcd3c9d3072aa030747d6f72d2
+abad4002d9b3c64f520a5a5a03577dc838e616add00b4b830429c80df57b86da
+0b27ad1363a7efa336b1e1df377996a48da79a01b5813eebab2059addaac1d76
+569082eef0fd99fafeb574e9f05997f00392a4b5fe54e948d757c021af71b77a
+15521ac7710e72c3881fc95b3a7d234486f774a80bc7332a4abaf0934f8d05ef
+2e99706849db4215c08d09bcb9c22058f844cc52edb10b0d0bf80bf70fdaa22a
+df00d6c8812df422557f606e50de8bc6c521141d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: MSAM10
+%!PS-AdobeFont-1.1: MSAM10 2.1
+%%CreationDate: 1993 Sep 17 09:05:00
+
+% Math Symbol fonts were designed by the American Mathematical Society.
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (2.1) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (MSAM10) readonly def
+/FamilyName (Euler) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /MSAM10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 88 /check put
+readonly def
+/FontBBox{8 -463 1331 1003}readonly def
+/UniqueXX 5031981 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a
+e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4
+d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828
+e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4
+7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80
+523f59a30d195fcf9b9fce4ffafc6f33457e3200f0935ea98f1a0cfaff49cfa2
+d877ff805620cba84126dfd175a82e1b4c6ec58461fce97cdd749a012e2c4243
+86b199a97c306b282350cbe5af90cf1d8e7371dcaedbd5fa3346dd3e558072c5
+fd51a2edfee6890f62efd1b552699123f4f52c2817dadd5ece30b3bc178a3ef4
+f45fd8ad0ee5bf30db5f9eee9ddefe249f3c349a886cf9130cba68ae559ad719
+c439930ece1d52d38366116c390cbeabb8fdb36811cf3b8e2416825e8c880b24
+6521ec6880ebe7f127c8741c756b29e1f89e3fd5d638a7bbade8c3a0fdbbf7ba
+ec37cd372afb2d9dd25d509726d20a05914e418f6b7e759c440beb61519df02a
+06734ec1226890d17c51f25f775e6879fdc231bc4d7fcb4b33d04fa273bdb8e8
+f124171714614f8a94e98a6c2d6bdc1254913999f9c181e42c0886556cdf48af
+92a265c1eb06bb30fb2745840c17bd31c7b8bdfd37dfb9643a418a2eaae14094
+6752e0a315207aef85c3c2630538907971ec1b05687208571a3504bb3369b5c8
+9a43e5abe343d0599fd8d41a1bf01de49f5856bdd67d63a2b3ecea75d721a6ca
+0c8751ab41e892e9cf674218dd44acfd40019bf59f4d69ea40d5cf9068a6ff96
+9f8cc772b920baf17334833d732431a2969b9a30fe38bd44772cef653935a957
+af61dd568f041847ccce3c587656cba7bbf46d8cefec936c6d34dbe51bc04929
+0440354f3b29ed8e6b4f21ad53b5809779d67339f284563d54ed4d2a504b014d
+974a31c0ceb57b364af519bad4e85c41d521a3ffc26dbac555b42dc191367152
+1d60c30b95b5bbafb3c7d87a1c043ea5f0e6dab83a4de99a742e75f02837b923
+c50eb478ac4131ee604e3d7b784bd8c93eb9430291d452c21be0495718546333
+66a602a9f142a563fdae3c8d40de6a8aa581ff3172367ca325e6d23102c5c6a2
+02cc995812b50988ff4b5f53a79b9cab51abb0549384b2fb5c119db69e57acd0
+f823a4543b5bf49c4af0a8c247f64c26bdac42b45a88c1af99459bf6c9b57567
+d71aead98624c118336ea8df06f7d21bf526fd146344a42218e2fa3d4f8e30a1
+65f5c085f649d43110877bd3a7359e35cc6df30d1730fbfde1896822291d1513
+576a5a779b9259e3e032bbd12057c8b17d7bbddf8ca3511925d2b8ad09ba796a
+ba33243f8bd40a7d6839f579ff77ea17da0b98f2298332307eac40a8a9c3fe24
+815b864c6c6b0cafe94b92c1ecb5709a5f85fd9837e560b7d47e784225387ae2
+b633c40f52a6d55606af9548ef6d8e04cef04fe05a84394654d4acf8496e2cb3
+dbfa14ba5798f7837bd0ca59b3b5acd45b9c76f1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSL9
+%!PS-AdobeFont-1.1: CMSL9 1.0
+%%CreationDate: 1991 Aug 20 16:41:23
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSL9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSL9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 97 /a put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 120 /x put
+readonly def
+/FontBBox{-61 -250 1150 750}readonly def
+/UniqueXX 5000797 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd800bcb325468c79ffacb9cd3036f2ed7bb65d
+c6f12e33dd6d45b61272314f98990d08c0f8274e999f4b46af4b5c5da923683c
+960face50087915d2044d7211a18e0c22967ef89552662ba990e2dfb9267e09e
+354f41e871e612a4d94de3c1b4c6c54c7a054fd7cc0696a89c7a397b1d624505
+2e0c0ad0c5ce92a01bd0890730e2863ea92bbc1e036dbbd96c7f4f618a83417b
+9d46dcc4c226c30353b46dcd3d7f12dcadcd658fb2fa858840c4a0b11ed519ee
+b77ad0fbfd18b449569ef3b18afcbd697d436ea1bc3234bd0aeec1aac6eaa487
+043657562d0042f41fd9c42dd2b59f4aaef65a9ff83abcefd8f6df3748cf9dbb
+bda9e56e15ae7a6081894bb385baeeada06923f9c1948ca5076b83ca75d17844
+83cf2522178ec7a96a495a21f9188c0c190651ae49eadfcb5a1574032e34137d
+29bd1dfac2cc8b2f3e0b31491cb4faa1d861839f6ab105692e579a236a85a4a2
+dec3274ee7e793af7946191bcb7cd853fd38dcc02266138af3ba0de0741ac0e7
+4d83d57e5a522a7ed1ef9774b6b913e10081436d2f3beea6722d2e285ce94d15
+8511306020455c85e6698dd9ce31711423e1f09e7178ea99f7b0aa452e1abaa2
+263a474a7804c21b5687d42443e071736a6bb3ea787a0e632785b252d4f83484
+1f630abb6a705ca58310a344acd2e9996f2c374c618758d9ebd68703cd1eced0
+9b6d2c7de8158dc15d8330e5efd3bec45d193baf0c36c98e0d23ce267a2c99af
+6b003f14b42e6ce4c82ee16010685c7eeca24d7c5794bf91fe7034b551077511
+45c7cf84e39cc38f909251caf99c29dc463c1510c782fd92902761f7557fde57
+7e5ba583cadc053198a401763b8d02c261407bda072acb6ae6c78a050419d8bd
+260d4013d28e62f8ec13f965e07ac03394b55c9ab8e069c8c445cc50fe136e82
+2ba18d6c612b3133654dd80f2410633de88ddb9df406813e9d04e437a14f54a2
+41a3b393f56f4d238df5695e67f529c60f52e341c1d622c2b950bd8633461259
+ff9c502bf78d13b5670478844bcc4e8441ec80735182826f440b700e199a872c
+31d276f977ae221466f509f46220b01fb1e42b23bec4fe280fa96dff0c92b4fb
+cf36f7dd85bcfc099d9af8f45dd7eafd10aaf796271c1236d6f976c8a430a846
+797b61c25b22d7be4eaeb34e7dad9669790a0b13172380d38e3c253d46b8c902
+723a82a834f7749f34643745ec94f30a455b81cffb80d4ae9dbe0a46084eeb0c
+52cb3231ae73a6278f3349e73a9d5d99bbac59408dc1304ebbc9ab0977c20b5d
+8ae64bd6cff5b66c3e30f495cebae55929fba03d126b17d1f5f236158e56b488
+76267fbfe697302e4889655b1f423f1b389617691d00913b69f8223ccbb0373d
+93062841650bde4d366a84859718516bdc78310d7b371f69fd970e1fc0e71cb6
+e98ca35a9806f8078882db7d48e62f184454e216581b4543b3d844bd49144ae1
+01b486777e87e692f1c048ceab45fb98e79eb7c8edab2f113a5fafb940d78b96
+0b1f900dcd2acb49164d1dc639f4a157562c5a4296872e018256165d765ec220
+c52391bf4d19153187d1bc489a9d2d74f7f0e9f0cb047ee5cffb659c54c7ed5c
+ae73c126a316bf1a591478de15fcf1c3f9d6ab07acd538f6280013b36f41e8f4
+79401a6534fe966ac101fc5a91bbfeccebfb9bfe1b42cca1ddbfc97fe34e50b3
+505e7972827a88ec9072e5bd600f5bd802449268a179b1fea85acc34a8a51471
+9c4d9e5347cd3a56b9b1f495d89fbca73a3527eded861407a27fbc9fae3679e4
+2e7026dfcc0c31eb9dad362dbfc6e6ff30b4243d42614ffa33ac4e2630ad689f
+dec962166c7b937e59a9ea26a8f11f0d4ff1608e9694e37ecc30721d1615bbbc
+a5fb2ed187ce4cde0b97d7f82b04bda4301b47ef64306036810c5123bc13d631
+05339f674e3b444450fe5aa618645a51074112fba78d2a22e3767f319223246f
+9e1b335f8c56dba72ced8db92d2da21240730edc0222134d9379fd19e0899a5f
+5343db13440e907c6ca0816649eafca9a85f2cbaceecd8c0e01a83bd2fe956b8
+8cae5aab71bfce058f4aa07ae4e691113a1bbf269aed3c5063d4fad1c6aefbbc
+a1af54017efbb32af1e267015db0f2076201310bd6df14996f9f9d63db28c08e
+5aeb99894dee28dfa09baf88ba136e9adbcc969c25998a48a2759103ae8a8355
+9d058137f53c64a4fc3b62c6a56a959bf96cab96879c1a9f8b831c3f87078591
+47cb9d10b1b10ad935d226956cacc96371822b24da9ffdadb9f60b24ec873446
+3e03da25ad177fffebe151bd869f3ece9037c8381b222e434ad3abc0e71a25fe
+647008833729ee28c82440b9de20d363747c9f6d932167a54e8165acfbeb7610
+82085cc42a4967c67c362670289f6b41e6f1f5158d3f36097277c1a4c6b95e8b
+2e2a0a855f0a0e54acac887de7de397d4cb50255e82c9bf8f7394ab4769db954
+28de36dcc09bca0fbc95d7954e3d2e33619bfb177d008d3a020439cba08ee0fa
+69414f02a2e9264de7f49224a676f907c08b6e605a253cabc69599e9dfc4800f
+1aa754b0cb83dab6c83164230f776e276f381c371093b6624c6f056829b5180b
+c9e806b1278304dbfc8b4f2ae668be633efe6a0e990b33d96bf202bc0ffb9734
+addfae7f3ea87b0d3febb39ee973fb13f0f2d64128a7871b6ca98bc4f5d8b2d1
+899c9468ca97575f4daa95430d6f04edaf9117832407bc6e34bedc03b48b24c7
+9d93f88fa301061f96a05d491d0040602854a97a91500f9c0a4705166c4f38da
+007882c49e8129bc95b8b83222acf1ae2809eb5b0341bc5e5db5a5d90a30e62c
+4ec45729c835855be78b7934d125f14c02374c858e9b5c12a7c3f6e120332858
+7dd40d873d9b296f72d7e73ac8544afae0164e7e43644a5a8850e656fe9605f7
+3170659b573cd73c3c774d8fc56733a75ce19a8c83e9462e0c8abf4bf6cc26eb
+49435dc2f9fb18a71519853d98bac23f7ea1436b53c427c817ef8c639cb666b1
+1b8027d0205cc419496802c6ab151adaae55456df8f9c0bec1b3b3249af4fd3b
+15e2c2d628619a26c42d4af48870e7307b83716bdc3c10914b961ee54f95ce07
+e34ad853c93c0630abc3897ca72a0b35743355a379416671a5376bd7a8bec4e6
+7e48a50b52fe8769765ba4710382df144b3d71cea61ab3eb9f7b8ba308a0f8f6
+c30341d80c0649fd596a156d553cc7ea5b6d03b6df376d8b15d59fab6c835184
+ed84801e845a079e2ede1484ff9aa429c89beaf072c1db8f5b23ee573e848fbb
+46e5051daa559862357c55f039d8feee8979f62007ef9951c8e8e2a07c740806
+bce0beccb327a9ac360a6aaef0c4f4e31a2cbfb1227f67220acbd4c6fcaf53ce
+ea35226e5dbd6842d106b72bb363c6f7750dcce668de7895adca3b8dff795a71
+19eaae1f254ad3903af0ebf049a67c9936aa1b2e13d7f3dc8d8cf87b05259605
+2a26574c426c41967ad095c580c1dae2b1e05bb6097e209949dbd35e32c9459b
+14f32133be1784ade6ca925988d0e7221130cdc9e02012036051712f1410de1f
+c2a4ee597a856964abbfaa7af9961f67ddf80696fd3f62b589f62d8eb55861ca
+3572691e8d780b1a96d80de3e2851368b04c1d423f67fa50a7d9014a80ecc3b2
+b41abc6a549f40c449dc81e48fb5f93a4b702fb956ccd620b0885a3f14422b3d
+eef64ea2fcd5dd55abbea8d62b74c54c5692038c6c9c1a947f0d5ed1b5795151
+9a77aeb0e5c8a1adbcbf44f55153713d5f2b098514bbb3e236c5acda352567c6
+8ec4a47b842e09c76f6d7fdf1215f48292896d148b36e02b1b900dab8ea83634
+9e6238fa6b3cc465d194e36c04edc415662005dbd87c02d789cab736ff0cc96e
+a96960347880470a0667ce31ac0ef66e69450566e911dd9c2bbb1c96e11627e5
+be53892a8b1eae82eee3bdc4524464c9fcb6143ab0d83e89fd537ea706072c99
+df6dbb577871d9d36e85f539c92a1fd347a1c28cbda448063e84ba887d61dfb9
+959a985fd3f7edfeaeeea63f0467dad457560172766ade0844c4b9678ae078c9
+2dcbeb7f52a19ed3335284c1cf69922ca952ac6a5b9d341efa7529308edd1ec7
+50e14d44e83d3f4e72a8bc178f25f74cbebf523c07c526d00639c0478f32e4a9
+60a9f96f72a2355512b4f591c8952b9c57aede14dd12d91fb6a176667b391b0b
+8bf45da0f81cd11d9493fe4d0e6082459e5270bd54d2f56725569c65c30de7c3
+3bcb22d9cf7ab085aa035f96728c3183a6a4827a36bb3bb5c071d7b292616b61
+10a249c86cfb502f1aac1fdba5b665ad95271fe5a2f83242db75008685bf673f
+06857d2aa33526907022d9927b865706388bc5cb6e799ab3d4a9b92b19493f32
+e70478db69c2f659038744646f976917fac93fc65136357b0469046d92f2676e
+4545232bd46adebdc0677b223bb963540f715bfd12c37ce7dcd375450f898e0d
+e7a5109cbc7604f3ed6a91e28941d000b08432f8efb40c1bab76d486d84db2a2
+7b570d229f6f5be12e6c27883ac5a959eecad10aa2ce003a783c1646f9040f99
+29a68ed5c05adb2d57a915765cb39cf1f45bfd9a833fa8b7581d09b4ba9f90bf
+9e28c42db2171865fa68db1f7e84c72152bdbd90a55e2897054d3e9f9fad73d4
+6ce3bd37c974ea48fe12fa5a24d182ab646aa14d7cd54adead0f2aaef5a82297
+60da722784110a26ea02b83073e39e4298332ebcc664c2a518fc2742a66ebf3b
+cef1ebbee54fb11b2484dc959c4b34400298f439ced15747ce5b7f349ec1db53
+f32698aeb6e6195de7754ddd8d4f0e77208a7dae8b1c627baf13ae4e639b4362
+9cd0b00cae66dba17f6d6d960fd88ab45641bebc903827e5a9e2bf918d4ecc33
+e16b7246eb0d0ceb88ce2400b4f8e25e977b52100a6110e645ad54460b6608ca
+17851976e84fd127ba681dbf1c6842a79982f0b034ebdd25f5ababb5ea7f620f
+8cafcf92da73ff1c867ae40fefef702273d9bc18c3e4202a17814861b70051fc
+bffd038d8bce5370dbe1cc3632dfeca7f66c1f9f5377a9e1b6e3fa5079fdd460
+fedf7acbc89c9e02d28327031547a0b3200134bcbb02d18d9146de7381939a5a
+0101d60bb37ab2352ccf4988375ca2f2a8dd34e8b67a748f5785c1fb44975832
+3436035d298c832269016a09d1587c39b24d6ca6fcbd1d3cc2497151c102a658
+567e36b8150de89e46556159cc0bda983c7d55124d34c0c90f2d554b28981209
+0c20e0fba1191ff6d20cb30b86b918355f163e3356893230cb3d48df4405decc
+10eb22311fc26cc82ef2477cb5f69798ffd04d0de6a654d6f6b63ce3e6e0f9b5
+94ea24870690c5f41301e822b9e820dd6d2b589da12e3d9b63d5987ac5c85218
+99f869e9806965235b9dd9960506fdf27ee32a814226c71a920c925ac6338a5c
+721a29a92e66f554cd5228cb7b1296e819532ee001f59ddae6ea39eedb73f785
+4593e198e395ff470176c295b723435dc5095f10e5dbfa
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTT8
+%!PS-AdobeFont-1.1: CMTT8 1.0
+%%CreationDate: 1991 Aug 20 16:46:05
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 105 /i put
+readonly def
+/FontBBox{-5 -232 545 699}readonly def
+/UniqueXX 5000830 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be533de8dbe3ccd493ef4c9656d5d5b76d531
+9e704539dd76b065f45e6d6f62ec499c9ab91923a364237ef75e1d62d52df3a9
+43713cbc63b16c1880feedd1633766248fed9d060ff709951f2ec84ecdc06bbd
+9cc4a865e1f275455525e5ac7e2e6289615e98cf7ce3763b6914d3a4c5b75b29
+b8043dbd898ccd5be448064cf1af2f80f969a44b4f9b801c42f6d6a6d0c3ff42
+e0b1cff748c1fc49b598eadde0c2802dd591c54b802ffd24cb7a7639295713d5
+4e639514ac78460672c9c51742ae2014e4137ba4303051c06f686395aaef86c9
+9d7f9a97009436c2ff55b770de3e80cef0d53f4df46aacecc21632c0c676e2f5
+ca7bb101a239a0ff67ebd37a6b8c4c8246dc2c90b759dc03fb26bde8f134f552
+23ef3d6496aa0c4a2d7b6398de6e6a0474ee1b0d78b2d865614609f1db92fc56
+4ab5921078b4944e11a2162902f0e04f4b29448aaa22b4ea92fac48f8dc47535
+d717dc7acd08b25d391c97c6c540ae0a98be5d6a8da564ab73e8b5d3b5e1989d
+6e25c3a35ea44d596b5fd6b2373b30de7d59c1831245edb76d6a67816ab91a80
+a27a6597c6dfd274db8b3e45cb01aedee59ba6efa1428e41ed557f051012a389
+9b195ea44a4e4d0067398d9d40ea26195efbffd2cf785540bbeb8964f6391361
+904fa5e187e4af3baeb4e8cbe7558fb7049c94a1769a2ff0b44f679bf6f14d8a
+974bb8bdc735d5a9798c89d7d81176ba98dc22dddf6766acd52020e3ddcbc94b
+71ad8a336dbe9262f302d8e8d5ced4481b19a586e1d73d0138ab0b732226185e
+8cfb8408890ecb590f032a5633352c42df62a7dd1a3cb4fb12083709edc26146
+f31161bae67a54aa5b41ca7af61b515c100b38a01b77f831245a013f804584b7
+bb764dab019978bf8edd2cbaba7928383b1bb7dfc926fb6ddac63b607925c719
+19a17b497ce7a5505659ceb379d2abc935d044643a548c4059fb988c308ba5fe
+f65b60065d00f0e9cca27f5eb772fd484e216cf2eccb9f2631ebfb46c470c08a
+06631dbb0cec70303f84f9efe53ffd5d8008baf36b615597264ee0d62062f297
+b4bfb613634c0ae5eb66fb028b9f9843b50604a19b635395de6df49f24573309
+e7c024d306679eafb633639261a436491581f8105afc26301bc5237cfeecef4b
+b1be98fb883c15e8da172301fcb00a36ff3be5618ec991b1805ec301a7f0eaab
+2dbef513096a7db0e22da0abf838db496179760ab4fbc7510c63644430dda444
+3801d4abf6ed78a31b41e34b72719c6b5f23e50794ea0dff30d99a6eb3c7d7ac
+03af
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMCSC10
+%!PS-AdobeFont-1.1: CMCSC10 1.0
+%%CreationDate: 1991 Aug 18 17:46:49
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMCSC10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMCSC10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 45 /hyphen put
+dup 67 /C put
+dup 70 /F put
+dup 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 80 /P put
+dup 85 /U put
+dup 88 /X put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+readonly def
+/FontBBox{14 -250 1077 750}readonly def
+/UniqueXX 5000772 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd800bcb325468c79ffacb9cd3037a112066957
+7889d67fff57549064b985d67ede2fb03272083723541051ebe936eff01a4ab3
+cd845d565dfdf25d9ddd2792db17f52f894bea484480f06c832140fdd6c3af0e
+fef0584c6b78b5e2bbb9a752f10581fd1c48cb498a822afb18cddebba34695b9
+b418010368fdfb7bf758d50f3af03360b81c776325c33c9c81130b1e1be840cf
+68c71ffd091dccc0df7b507fe8953dc3836af0da08ff9ff3e9cf7288d9eb8baf
+ffac546a0fd987ae8e0bcf7b759f4408e13524f478de5896d816cb0ad2904271
+cbec82a5ca50f0598502b434ecd94531b4a65181b5b3afcb650904b15157737a
+a4386f1a7f1252caf2adbd5c8162bf3b065c01ca471d520c884ebbe1b29f9549
+134e285dea2fe158c15a08a744cdda00bb6c62158262e24702803d9e1dc1d3a3
+1383085631154b077fc20488ee3aa03f47ed2766644330b94133f2f9389b99b8
+96d3707d1c5bb227fd3bbdf3a6ff572bf07164107c7a1c0710a5c7cfb67282f9
+c238100fa138b75c553d7cbef17e2292a320d3d86a6210e6e3a1e590b10dac6e
+177094d5dd163db623d7b344478752f6f3d7d5b3fa92e6bc72dc6fc343d2f946
+9153e3d14c5a6d6b1d9ca52947b789cb4cf6196a02973aff0b097333f8d615c0
+a1726ab7e31c378eab77150faa28cce535afe3ae5798402ca51cbd18dedc2c43
+5281d0781351df30f4d11761579676449ae4a47a10f677cdd31ca9120fc2606a
+9025d3cc09d58856a9bbfb17669f706ff8c7efe37a3656c9b20609cccb58b309
+0595ca5666833f2bbf884aac1cd632fce69b4e0ea2e0a25b9c4d471f0e322e09
+4cefda321359fdbe0a82656d3ecaeb68b7e0c7e733d85066ed7474c22b67169a
+1bf1bdf7dfd0ce0aaeef78ee393ce6ea65edc1fdcdf3f744f714005d8221a156
+4e70fa7a2c0c8fd9822d077bc18f3310686f541fa73a7ba0438177a82e8ccdba
+9263126527255cf474477776ad9a83dbb93e91904be346d45aa0ef44288957ba
+49a664180f3ba7f3f6f899c75aa8a5951992a2a1cee19ba804e6708f934a225b
+8063058cb1e9bdf1c1051c3105fdd521ae51035244f34b0aeeb5f10a57c52982
+82751e35bda3016006b85fc32a4ca6bd3cf142e3ef618693e9feb01eb3a2c86b
+fc4fa44554d23550b3e718de52add487e361dd43b8f69413217f16578f5793e7
+e4bf5aca8a35576ea2138d7317199d74702548eab726f15eaf539891747e9460
+2109a23624a1ed914f874a723d6e8d7261edbabde65cb9cd9c651924956cabe6
+64925b4e2062e8ba5bf8422711a838217be4f58e360a014eb7a971ccf911f979
+0c291d75da94f908226b56560ad8b0de7a605a7030a415b5f9e7a02484e57d9c
+95f56d20151a0ec88d2de994653eefff01de8f3a1b1b7cf77447ed0f077a3850
+1341f5f8d0b06d9b1d1ff46c6ad32575140cca246db9f58a1c9a06d7692bdc2c
+ae721e7302eb4fd161a364bfb033cb57cb4438f50753b0f05fd7e4d29567e0cd
+388ab7d2da0f9a8fe58fae3f725867df43561f6eba744e96e14865986641c779
+1982f261568071f13a5d2fe42d2c1273183c2e60e5eaccdeeea4b5ad77206abf
+463d9a994cebc52835dd6553dc9e4e600f3aa30286d3ab905eaf2b31c6608131
+6190a52cb0e46bbc1ef47ae8be80e8ac4db2f75a8a12801eb2da32f9781b7df5
+bc3578ea8a529ac152ba301446c806938eef1e8b169ef08ff60e2e0917727b16
+0ad9c6d304b56e25f9b678231f6c1d1bf1165e918159ba384b38a3d9e58cceda
+ec634f00a01058ef9d8514e57e3cd8e1dea6b9f32a94db9028739d93bbd3d9ab
+5ec9837b5039c9ef00ecfd8e963bbaae1dd7dbfc0fa840d547b7ec06fd742959
+a9cad8f07df49e0a8582d3b0d8dd57e637b2ad0389dcd0f8170393a869a0fde7
+33878617d93a6f3e7b3e3d1c2015a364c780779a35dc5487c6c27dbc837d0cb9
+e75397378639d51f65f36d0ffb3c13b9b7b6e33d8dbcd7a59864cd2a0335dbd1
+6ff518d4ab0766fc1bfc1bc44171ecb16028413235a6c5d21e21c33bd35fb29b
+08baae71b87e49ddf95bae367074fedaebccca1ec6d3c77fc62ad73e7888d526
+7c3e88c76a21c2f6738e6e24635a81a7330ea3415ad9e1714d5616da67790753
+f8ec017f77dd351225ed9ebe4b6ca7327f93bb421786e35007fae5f49fdcb60f
+d8a3ee61680f11a234d935240799a0c14589ab7d43c804235bad1287767d7664
+dbf1cc3479281b023c17b91b3ff0b40a38798cb4fe23bbb4cca7e852a03676f2
+784b6eddb7aeb4eeba73348adcbe3bf72a004521a0923b7071d10f3d086d86f4
+11527968a9cb9538c927322dd2b0ccb0f348e1c03f73768e4c1d9f40bcddb806
+8b36cf94b5a599263004f1b36b417e96d8d937c983f9a151c8ae6d0523b2487a
+c23cb3ca5a6974a3f48b0493731a501711d9364e1ddb9ba5ec452fc36f8fb894
+0a5388198e262fcddc921493ee408e2983830a68e4e327f4cd2534b61d7fa160
+bac81de7404b95151ba21cc6dd08fc6f24e63c0c4fbe7ea7745adf93aeb17268
+c58f3baa613b131c6e683679daed5e74e16c11f15d1cad0b3382faa21cb52b1b
+72f6843ef3977047e757de59cf7c3e7bae33db4488b283b432ef30e87fcb3975
+a95448e2c2265293c4e8a4f95965aed326acf103029b6a19731dfb4fb93bf183
+a9f7becce43adef1d716f3a09c73f830fe163cb85fe568f8f5a7a7c3aeafea81
+1c4cb2fcbd08c7c3ddfd84d786e11a788bac8bcbecab7e8d6dbe13dafaea92c8
+a24d9a90f7acb14c56ea1a9df6b85567c60da3e2ff827e74dc767bf932f38203
+e26c8028104019f0481978b86741f390ef1f6634f023a5600e4c5ec819ad5874
+e70822cc62330fe2574bae4e185dc2db596dff91a871ee4428451db09c8141f9
+d515bf2ac1ebf7b0093a4ce22406fcda2781e2cde12204c461e6825d6125be99
+48bb7ff2d2e9b33eb94965d9082670b6f71123d49688603e48fcce75d355a5de
+cf5052c36c5eae9a0a32e889c40027d8e83aade691f92b142411d8629f71fe92
+672104d1c18756f4c383d75188675d289db0d0aae23776565ab83dcce1eef649
+170efae03c7da5452744f1acb2fc9f249863a75a7c75192cacaa0d6fc0a524e9
+bdd70f8ec9785bc19f0ad3ab7aa89ca612e46e0e6d364dba1e67ab1319846644
+1c728e1a253c40b4cca0a9e161940aee401b4319a03287736436cd654d6874c6
+8d35e76f5707ea28c99e1b3e9f573978c27d956a09e28fbec7fbaf8b44f277d0
+6554fd38661c0d035cb402add6ff580b87783b8ee8982dad42fd4cf4dc035b1b
+e302558c4f3f4aa66f11381ac345f56dd820fe701d4f26aa8130a9217dbbfc7f
+6591c186470e6b37349684dba3b5dea89135f4dc13164f428859606e7d833df2
+da2e9c905e7a41e8aa572de7440f266a07e5e6fc39cc81d98d1beb659c971dc3
+b4d61dbda3cf380d41f8e25c64798b47da9eb39f0a0c1fbb4b59a69f195a98eb
+bb6fab0c3af6a4c79a8409a7a4a8227bec6e29de1ba4f764b5fdad790c5069e0
+fda90ad10f7ef51a9891fc56a083d048855c0b2cf66132a5543f00245cb2f062
+f43a1491b12cd5d60704973514dc9b0085179de9ca8b0d2af8fc1a9af6f72741
+fd2f8289841bb5fa5cfeadfcc9c56d868baf46be98d060bdf20d1809472ded71
+39c676c0eae0676b5078fee171846010fc97280d4740742b063a850d0d3b4f7a
+56efe928443293d336482a88a2afb6a01448c577fe1c8686f9b074e76449fc7c
+834d7e6fc47a5d285372dbbc8426f99a154e5145920ae858eea58d061c34b04e
+3192d12de16eb7efd65111302ec1066619ae8fd70e16cd67372a97cc2b05cbdb
+a411fb5a390fab3af7c21d69ee8b408f5da8c51eba18a934dea0c1cbe903f32f
+71933e8bacae01416ef717285c024ed4a06670ba0c9a0f497a817cd0950ec12b
+2a2a2e99c0b916eeb7123b0e9ca206968b0d387425af70065da9a4084cfe7fac
+3385a02055b03817b8bfcb18aff3036357946bd54aa3772b8d4936249e692013
+ecf7d1a4bbf8846a08459411d7349c0ed85e24f63ee9432d1338401e7c81586a
+a7cfd076b7af24d849bb8cd1e48a5a521e836a725001826f9d6b900261580b7f
+2f144af115bac63822fcdec2d006d3a26f151bb29a8f99902fce6452f3669ac1
+332e5f034ad5028de45946efa57b5fbf5924199bf2bc88c35a80d90c051fd8cc
+38f446110bcb04d27b0f96e890228373f7b9e2ab360b9bcbf63823638518b4a0
+865852086d56ccf705c7d8d0f817862c314c48f35505e24b16dac0c107e8d4b6
+82a11b333defd471e5e83b8ca9dc3d96f5b3458eafa524c05d13cc28384368f5
+168ddbbcc550941b21bee54b9d256d92fa41d631d24cdc0c33c5dcab9e9c72be
+3a49b3198dab45c10ca9a9adc23fc0184f5d9b3e1f41246efe1bc698c81ccd84
+cb0e1c7ecb4932da8946ea40410211ad1d81d16dd7ce25e3a918d661d869daa9
+a2a1c4d77b088efc553372f8487c2cefd8bc2bf9ec9250d0e621458dc9efc76f
+7fd6d61e2f6338c7df31651e25b32d82b581cb53722249f4ec1279febb23258c
+8be9045abbf52b6ee3d84593dd997fe509fac37e7bf995ba46b4a4d7b6168a38
+bac392fdef873ddbd99883251db1048206a213a8525a62428d60d3308768ecb8
+c8aea6532cc62315172919ecb900c5fda5050bf854817d898f022fe9b611a5ef
+dd107de4cd37372160660422c2458322d3d043e608d0fb0f89ce73cd4217fbe2
+2886813d9acf13fe9f85c957ea575c4ae17d877074ad5f34479d6b2c4361481b
+a2d22d0039ea9dff02accf292d4ded380380992d42b78774f58b17e3a5f7b114
+412fa347f8917b5491c00a47ffbc6c6215e3f6eecb7b4153767ef43c9059979b
+a51032a1602bcb3cc4eab7a137b7a3e8e4df6677784c9f471f51f44c5a511705
+d729b35cad9429ff73bfab57908356cba0318fdf6828de7c3ff7266066089776
+777122fc50c8fde49cf7e649449da981b950e277e20e86982bcb6616973be9c9
+94106b4070b83602525f8caa0aea98530dea8bd9ec842bbb2c6e40a3bbcdcd36
+e649337fb117c6a73bb2b36a33ba305d42fecfa9042de944683fbed160a89308
+079f7c9684f389c8a53b545391edf902b4f4d67d1ac0cc17e5e0845c40dcbbfa
+b4feb3db620a6b6331a6e455a05ad2c7fc29cfa3b4d291531080b27de61c69da
+487f8351399895d4a1cc0d05d6f589f2fd52e0772073f4b53bdc301769b2f4d3
+b8eec6946faf67320ad1bf72e6e8dcc9aad05037cc9eeecf63f7b4c892989ca4
+2311dd09b88e0a128f4420733bfebe6eb5b74912be5a080181d209b55f010174
+a5a373a7e4b51adc8c7edcc4d28df44a5254efba06b0d47d210b9555bd7dfa39
+28307a06947c6c0020a066e297bdb7aaff2401a7974b7530769602fdedef7306
+f910a25f3fea969848edc51a9fb75e5dac1ab32c9e4d294226f7434c9c31d321
+a1de3d15d0a75faba4dad992d395447f12329a9318289fbf95b37fec4cb78b78
+542b7b6ae1680d466e6771f36d2583ca7f47f0b2c4186107aafbad1567655228
+0db778c48176ba44ab7c4363b5a5ae1c25b2b8a28510f80616e9bd99ca64a8f2
+41cfcda962740db263594c0074670d4ed10ddada0b378eb8dc7693d1206ed979
+10045814120ecf35bb397ac0f7d6f6b2ac1a91b4e69924f0b6784d56ce3ee555
+042284950cf2896fa6ba08e4d17441e95d8571d1017ad133e6ad4639d10228fd
+f56593a44e14a330245261e29020d52907d97d30a0379db22200961a6487f66b
+f49ddd6e2c607cb9d940723f8fdeb6f6a52186ccee44066661038c9c08dc1a97
+3ff795e25ff3e8f5696e705e807e76941b6b884982b52622fa1787fef9f19c82
+8c6ac13a9df2f0164897e0d7ccd90788117d40cf5773b373a7cca13ab055a53e
+bec9ff2115fa1cc00065949f3d7cdd6c06742814893d255ce5b9ed962eecb83b
+c14e476623cb5c0fcb63de84971594f7c92deafbae1bef08def752a9db9ae0f3
+221fdd187d5defd108622bdcd61d28c5f984daa9af1ad2da693c045fe2316438
+7e97e7215641dde7b99feaada66c2be3855da8c788d8e63de8ffe056d163a9d6
+b757f856eb52b2e550cbb4f6f1afc24e0a8edaff86ac9cb894076c63ae449aab
+cb326060dc96be88665eafd32ac88c3106d02d940b36330a478d1955c34efdfe
+4a5a50a5d3e0aa6f6731b6c13f3a215a8d89ed7d9537fc2623e06335edfa0c3e
+7b71a3c0df64998f54037822bd3e8e89050fed9eff72265ff73b13db014930dd
+32d073356ed2eaa6a8073f43621c9ee388fcdab86fb0aa0b6b59905ad36296c5
+9d5c82d3fd2ce4aa7d1c8ea0e60e0f39a887f3dacdafa35caa50205fe4e866d2
+d16b74e81a0a7a449039b0b1fb32facc858afdb9dd42e438508674ded42e6f47
+24d5f61099cc9e7d44e51e0b46f26996e96f0a13d1b161390406c441423a6827
+198792cbc3f7cbe40a4ea48095d13b7a36d072030cad912e2383457ae4a62d90
+e28a2de88cc504e03a703eb7c3527182f8d5fd8f9b370674acbc9458040ed67b
+b46537057f358bde528c0df8a4592b7c26d31e65c30e5c381b4fd889f798c190
+241b2ff4c92938d9087b02a2d18ea2f2c0fee5c22986c58c45cf520e4645a74e
+6779c5d2ad38ad5574b99b9230b9b95c016e2d283f29113a99de8b8c14a5b354
+9cabd67d215eab6b6b10a7697a509101e0808030cc8de297d3d3188d845618f9
+1680e2fda14d347d0294e132e4c99c19f60dfdd9c50cb9035948836c5521db49
+d995636dbf1146211c325e5c449d02f7912ff99876c81aeeadcfe8f85ca8f4e2
+e9cba36bbf1f84745f5d4df7aa5c0798d6f2cd384e396a432b8cf8cab1ecf5c9
+30bd3f212a068fbf1116d561ae8a7935d4877befc83b89df63627333e88d2445
+c1b8cc397f14003a17ba1916154b5751378b759048d6029daf01d0bd21cb2cfe
+3c076374cc8cda3c1c1f594f2966329b73262ec74813c07af9c48d8d2a646f24
+2777876e4103455a9fb8f461c46dbd778e3a169a8cd7ab164aaee44c6b810231
+8df75ecf526fad212a76ef65cf45688a3dd2e9e5e18d035586de4c61da9d077e
+35a9fafdb861b74589927825e7536ea96070ab3943e7ea56d1fc906d6063a11a
+41cf23d8cd7c6d801d499265fcc678aaf5ee435b06cd67e506d4b94f56d9b376
+dc8ee8579f2effaae22ce317bd56b47f53ea230aa647d475144fda7990b19284
+649a33a2589982e2317772a45246595bf9d4c56c50395a077bbe3bd98b4430e9
+1fe0e8a296129168526e7e95fc95eff9ef9270448e9d9829b9a85fa8fd3456f0
+46b53fe33cf3b1bfe40b6ee48bce1bee36c557ad9b461e75ecbd7b2c1cc14ab6
+0e8cf61ca7bd0c3d33bfc561a48bbbd7dd339cfb99594a1c79a9603d828b311f
+88076d5853e33edad418db09f9f983f4679b9459c6fa37b99d6c52a1563b85dd
+bcea0067e000c90880ca366b6008400f845349376c5897974f820687cc3a8318
+a6d176cd93b33b6fb4b9a61266704e9288d4a6432c2381cdb3105d71ec7d20ad
+20eb7cefbf11f679bc632f86f96826189f445b8196a952d7751b279523
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR9
+%!PS-AdobeFont-1.1: CMR9 1.0
+%%CreationDate: 1991 Aug 20 16:39:59
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+readonly def
+/FontBBox{-39 -250 1036 750}readonly def
+/UniqueXX 5000792 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b448685bdd20eb05d5e7c2126132e33a59a7170609
+dcf4871a5d023c9ef57d3362d9f2d7a440bb69bf653364105f16f4d0f03582f9
+aced3d05cc76489b16e3fa8a446094d30038b06ecceda269f2eab9d19a99c7f9
+39f9548f206c5a457a19270b2b82c43b091dfc5573468eaa3e7a4a32f8042891
+d85e4b180fcbcb3091d2800e54c87d84ce9cad6869b5aabbbe47f40c68799893
+d22b765295e1e69e33aa048b7ed98ba480ceca91f3ebf8ef85fe9a3976909626
+b95ac5940d53f9b02215d84a44837ba25ed15cce0d504f1d335065594f3bc824
+5405407591cccb11cfd4645da60d960c0b93f187b0cf7b105543c0b70f89af5d
+264b6c026e3ae646acf145950202ec73282111e3e601cf2bcde22ce3edf6db23
+516481420f26552ff4472d749811f27768150450d0d0ebe3c79f999e99b5c0f2
+2eaebb12d97782b1bd91b2a1f62a76412548ad53c0dd411d4a08c0f071c2c218
+63d9adb75a4621803ecb84c2bb235b620b658984b2d8e0c4637e2811bc8f0d04
+6c8935afc70141e1b2d9c23bdb251d304b3378faf8928bd09686aa0340fb0cb1
+dc48c996ef91530ff078666fad227a3589f50b605267212d3a65ebc1019a8eec
+9a0739a00279471a01e1505c17658c10030fae32f274fdc8c8774b0d5406c384
+a1d17068dcb0c2575c562fdc5a2176609bad9a2c255e426a4325a4fc3053c7b3
+2f35f7bbc9aa50135f30223360fa2fbf019294b3af98224c5c05d6038db08bc1
+4103010094dc215ef9ccfb96b237851332c8ed81a9184cced4edbda26b381f0c
+73a2bc4a92533b0e667e82ce49ddd8ac9e34d9d40fd4b5b9910eab3b1234bbf3
+af6608d66eaa424c158eddb75fbe39462708da8f5c18d92fbdb2f534598a844a
+e076f96a741f8002af3b38d7e4bfa363f5f5d1193014f71b97d4b3e6b49bf0d4
+e71db7a5d500ea99a03dba48b2cb68bd7fb7cc8610de7110c0cfe02944974e5d
+c7167dae756ed770a4230cc4476ed4879a0abf80e1879513c625f0bbb3f365de
+eddbbf53a0fe3e00eebca1129eb16003fb7ebeecd007460cb02c55a0f8cf92bc
+d75a91d576f7a04c064090482b417c14809c0123dec9b8808a5c680aa41e7ac8
+76534db8f4c55283cbbdde1069db82cfdab8ff45efebddbef77a76b93b5dbfe1
+cfddea913d9ac4c5bdb3532c767da841b121881a9fb483053133b0334995cea6
+693c0e0fc4c91af19602f5b444206ae955757e4fab2022d71737d156e3603a8c
+d90b4f7e014940ab180eb2711ca8310f20bdc3cff37ec1d25d88b5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR8
+%!PS-AdobeFont-1.1: CMR8 1.0
+%%CreationDate: 1991 Aug 20 16:39:40
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 45 /hyphen put
+dup 68 /D put
+dup 72 /H put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 111 /o put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 121 /y put
+readonly def
+/FontBBox{-36 -250 1070 750}readonly def
+/UniqueXX 5000791 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204b094541f345ec367ae85ca9bd
+24568a01d3b9f8095f7420e6c423c414b3dcce6da48dd1c89a56d078e0d0e2f2
+62a13640a06d17e44ee3866c3471fb58fedf5a3b77294517651c16bdd7267d39
+a54e7171752dbde63ac19bb4b3021ce95eb5fe67390b09ae4d9ed4d704a67443
+f55dce17acd996c1f5e023c9e5a18cbeecc3097f23763acb86cdd7cd13381ae7
+4e48495ec7fa520539d87f8a8dcb3c826275469b6800876a457e7d1e5be867c7
+b1ccad69742a8c9b0ad943482bf2a4ad0aed40baeb69a0233bad36b4ca2d2da7
+322956c70375d152653500b2f22d2ab6990cadde2da14b4917f7515e64bc3d96
+bf775258fc7dae4e42a4c9b6da8eddec4a800c8aadc8d75e48cae52137e05c03
+677f5d6a82fa46d9f2fc7f56d62e5c605a1b7898b8d1401c2cac1a0122a2c8a7
+aae09607f2c5f29293a09b9959399283be89051452898238b777db9830ff4318
+a298b221c4a820c700ca964fc99e6b1d9eb0bafc39be9aa9dffa2fa326b2a466
+1e67261bb3dbc85844e76f9313ab533ee16bcb478166de5502b68e6ec1ea6110
+f53206cf1cfea419571b0243244b32ea38b828a01e62b03bcf476a32c2341cec
+b8a0fa2a3f3f339315d5f3aa7704408f6617d026ffee4925aa48537a4b2e556d
+225be09392546ad561cd46cf766f0ba14c6854c5af1a528c3842b0c5aeefefcf
+19f19cbce5d967153c4f88e51c776cfbe10d39328466f7a3b83d85601ef4d1ce
+0cc136610fa6a74d9676e4e99291d565cad27b9eb2337b0eba4148efd0eb2866
+ebf0a4209ba135ad1376cf9cc2d4110f36121055caa3f2e63e91db975ab8bb1e
+288972ead80a8b227ca1ecadde1c7af803855d4ab5e37cdcdf3f331663fa6065
+12dccf7d1468696dbcc7de16ba340ed903ebf412681a1122a411bb60b50fd173
+0fd0824c9226d6a5ab20f9c72e7ecf64b4a404964f2da25311f4f4cc09f7c4f4
+9d39556d4ae3938d444b7ad94cd67ed58340ce5574a9311347dc9d8a7be77edb
+48335dbd05bb1634497817224abc7075d3b18a884324c2d5dd6a791051681eb0
+f0e090c54ef09325e30a4fe320f082b8ec047473b0283a724eff672fabffdf6e
+1892f308c50ca9a1ee2c8fc6f8d38d1a8e5659e8f1d37f803fb9b2575a5ad6fa
+9f1463b18d84bb0d4b405b3bfaeefdab799ad2575d9620eb8f6fbb5d99f02a4d
+bfb8b51a3829417485c2bad03241366ae2c8ebe8f7781e5b99e405290566a3a8
+de3d32a3c82638dddf52f018f63e86103b245bcc40bfd229b595f66c695a5818
+7ad072ef6dc26c16b1411d95b5a683ede28cf041956961947dd301162a6d6c40
+7d51d9110ff322b9f3510607b6ee7926eafc8a05f17e12ecf9568647e47a02cc
+d6f647cc12ecbf0aadc94b497485a33ff61bdf145f98d3d0119ec9a996e8c08f
+1a79914d3d75691362c753d73d18fcd5424f95142acf1d5a67348de8013d901b
+9b10ebf008169f9792df20798b6d6013e162dd4f1bdff6c3160a4206f98ba0b6
+fc67baef74115a1dc6d7ef758c42845c8317ebefc2dca275f207e72a2884aa3c
+80a6b01e6365d0bd010aec30e48f512f0dab59e62f9546974fd9bf6b5ba433e1
+24f5b7a8d20319e52b9cb7059b2cfd3e09a4e6a9e59db49c647ba9fc345a0853
+5735ca446d8a1fc91dd5b52386c6e9fac5cae07c3a01fa8f805813fea5f01650
+3b2804106bad822e6b7f9d78277efbe4a154b7a1ccc226d4335022bbe34d2506
+9e5442e1cae338b214351251bb6ab72fd492b6a03fa211091f3bad94528906bf
+9bba27f0c91ffc7aa16e76501c8c631a36c343856d73f485b2b1d60554070109
+fe8423adea53f9dd59868c3e4645a034c6477d6d5f50242c0027ecc41d242da1
+c4ca765b71ef3541439ec8e3aff1a039e9b0fb94ff3ba90f4f99806228da7c9c
+0f7245e1870cd94b2e3fa34ff1801a621dea2a9949e5568773f0e124e01132f4
+04e6ce011dc6cebc88519c2904ce1c39de6698aa024d0120555ba6e25274f41a
+58143e8067cac5956816e269b6efd9fecd62775f0645d7820670c08250788b5b
+b0455105886b9757bcc1986d8141b64087d4f990d2abd61495bc1eb58467cbed
+154b8ec2ebc462196e114c0579a906fd9517843b4c01fa135ca265b6d79fe271
+daab92bb805a332563b5f64b6c08f0f87d0bdf02c248f1b49bbc0d696af3c3b1
+3264650364141a43110f3deb7dcd6ef54ddae7ba5f6e111a6a76091865a6b220
+7ac41174e030753193f80c044425680fb06a87b21e667f4eaa37d260267db213
+54c445e0753dab0936976a2da30f19ed4dc36862ed2f44089626cfae6e92b68b
+9443eb8c1f6dcec0dd998a27b6a63bf2275df0c081760cf3df32cdd5eb0fadcc
+7be7b1aa745556521151f2f4902f19b0d7f2aaa25abc2c3e7897002201ae8425
+d12659b7e3a84098ffe9481902027e1dbdec029e99acd6933da6fbcdc7cbc94a
+cfc8f718e0238cd1ef188cdd32c7d7dc145d68daf20f816ef19b6f2c0d024439
+196ba6c19ecdf24cdbc642c21a6f6ccbad24ddfff0d738bcc35dc08b13a033db
+91670b285dc3c9e0f8ef361232a9ba4f6cc6b79759ce9d4ac7ff912aa841c695
+254a292f005a5c1596a24dd4cdbae8441e26131e879618095aece2e62a237da1
+2440dc090ca1bb5b557176868a80d6dc19c37651ce770556fdf34cabca4954ad
+904927fd523693163387cc1f344f8dd51e3224d183c0b82c38677d34cea4a885
+0b3062d4a76d8985132eb2dcfd97b27fd9380a9356501f2fe9364b857e13326a
+1264e2ebec890b85309f786e71d7af6ae0524e51f86601bd33a50d9853ed01e4
+f0cf9f108a6d88c44b0deb21c5004028930c514ae9b7d49458fd793033f82e76
+d7ac84221c71bcde07ea3a7d3d3c3e6d3668ab4212acfda930e3d31f87617653
+3a32966f03c31bfdc69326493e7400b24a86416d495863771371b2a72edc914a
+67f20f50883a97cfed09e53148e8b8063644bf8f38dce9942abb5019128cf335
+aa093338377350d00a19b8dc3b0621695e28704361633295afeb4a50c7aaa97b
+a8faafdd18cdacc3cc2e0c89488e408e9195efb0fc94e768a9e178438a6279bd
+ad34b8acea8afa16dd836d920a56b236e05e8e0542802bb0045f0094dc6c8f58
+d6336087dc026d0441b020b49937b486e8031fbbf57f07c361d7744858f4764c
+c5cd18598e825377ebfcfe236dc8db05df1060576958614ce198deac5ef7069c
+e71489db1e6f1ba9af3a5625c8a0a9c2198f13f61d1d2d9c97fe5c39f9e3e1a8
+a15a86e27b768875e700eb900b824f8c64e0404bb16d573be4aaee1dd630f07f
+efc05b0ea9f3b20a9861e9ccd4b20c663daac2d5fab4052726fdbe8704764c3b
+45f1522648a38a3219053cefbc74e7a3c5dc218e957b6456e1de58dd254ff355
+9b124089c0c648aa0744f9a035860b3d25c2b4de907078584160a5eb896ba041
+5ad7f066ac40d70f7e9902b321513cd66fe3cc18ad2eb92f4579abaf37ea9dff
+28621653f8470edbb30f4a50e8fdfa6e4909b7a9094854fc5c1213b9242d684f
+113dba31f99f8143d13ba443fc4e9ea2a14506e7038256de1b87f55f46ad2870
+c383b88927f1f90f198d6201efe4b3a38c36f03da80cd14f7bcdf0cb0b395537
+d1efd0520846e32747aaa7537ce61daaf125100bf7a4ae3a149ad79c861ed340
+582a54d7918b232c6290e52be2a606e5f2f2c128af48f60f9b800185ad42c40b
+3ffa5a522d91c9634eff67f128f21087a82fd8406be136a8208a7230cf91cbb5
+e1fc7a24828a539b3a9fdb8455f49d37e1ba38107780a3c13c60cf084f63c0db
+44c62099f4466466afc75499513cb555307e5bf210d1e4c4853a46874021b61d
+21ec8c65c1d709a75f838905f8651b0bf49888a17e8acf293d5d2dea413732fe
+9c6b18c5e72f4cf2d3d12bc61a4eff24d17c878f62c31445da13e92f889a1cea
+336558cec89659076a11321110b2f64950750035c923e62269386860dfdf4374
+4c1a16511326e7fe919b7a6d750ac31f1f24cc3b470c541e07c091fd50117968
+e59e27ec04859b767c3ca9499dfe0deeef824509b158c89dc0ff157622d2c1c7
+beb156f23c0f28fc144ed0e9c6075e8c79c575084e67373c92d2801e8dbc6e6b
+e0f1cf2639e0da567d1c16e2798b69e3cb1b9e0bf4bfa9ea25115072e5069b1a
+974ec72c96f3dc4cb4f8071ac8a962a7f63a88768c8f3d5431c8aa8d4c333fac
+1b50a049d364b0439a08691930c1e66395b6ebb0317c5eb66c628898faecf932
+d5b6e94f762e082a40c6e48bdbecfe2e571fba3ff5a6425a41422ab365e18ffb
+9888e47a08f2509f7556cf5f40d584b2e8effda2bd4032edd53b771175415bdf
+36f23a148b98ad18e79041580870fab607d89e27788d928580a2104f51ba5eec
+e56664f3e8a7993e5e89f18df12af66f5f20cc30a4c0703cb9dc1c0e097c366d
+7f4d9c23b6c5ae7cd3724b9d738c060418350ecf194d421c765390032c9d296f
+f628c8f9ae974febbc0547ef9ae8f421fc46151958a5277eb4adb53afdbea129
+d3a71968640666059a0d01f9e65a51e502466f0adb82280b57187b98f69e68c2
+b0b561d2328339dfa822cbc722ac41dbac2852689d93ce6fb448b2158abfcab2
+e3981b437c1f4288ad1fcd429157745bc7544d5afc6f28177133ab8e9293d024
+d2aa5911f151f5c4578291cafa23f1c13e61b905c011fc5d9ffa15ed64ce2967
+fb4028b82716ab78aa758e4452ee8707d2ca971c7ec77a568098192d8dc6c150
+cf66d95620c292f4389b0f0825ee98f73aa89bf78c36f08e268a9fa6e3e8bfc3
+165394c009dedab77fde55ccea4f018622ea7cb7abc229709b81ecf93847a916
+2bc13e1f7c42856c319cd1a83a64ed410a7ae3433e450d75f4e83aad971c6187
+aa672b92db5b12e5bf9ec05887db52a4b7e9916079da5755fbf81096cca1a3d4
+50a3fda4babd4e1bc605969cb9f876d447398609ee0789ae8ce103f06fae303b
+2729be6e937b5245b62b8b0389a0861e31f10537614074d91957fd6e320e0a25
+a2ca0d31a480d9b62ea15276f71d106c6f1970100d7d89082d01e2103dd5399f
+638e25f6ed817d561812a2494b3b2c28d1ab8df895dc51ac5d194b4af292f5b5
+745b766e6de0d806c65037fa85bc8aa403eaf1a56f3fdc30e5808dd9785dacf1
+9af0162c38e1176262d6b9ead802075080fd3104c3dee3b98b7c6ffa51aaab57
+38a28b2463cbd8227146373c4ed67233f8a3f2f2104c4c4f6e0936422c962c29
+ea46d71c1fa8ee77f9fe454c72c54656bddac9538b660c0356a4a0b76c8d967c
+512b08f532df4d1c7abc800755cddf0557182bb5bd9d50725bc7e078c72120ef
+235dc90a563c905913bf6cce0a5cfeaf2826b5bfea33af73a50a0ffd887d5d7f
+50df4f6495298fd602a0deb61b075223f1686c206a3bc63193a3283815dbdbc9
+2cf6bfe5c2dd424e5ec07ecdb16a6490e27e3172d94b8e09ceb671fa73151249
+f1d062e3042f1983753e3fb0d2085e662f6243ab3713af12d936b0635cc2feeb
+3b581966675819e201985be46d083a9b7e889e5e5e2e07a40f110e7ac88b4597
+345450633a74359417836c33fbcf8420a4104b7e38115c5d838a95091dbff127
+48532fc049f5fee557c6cc901bc2d24527546974e604bbaadb77cd312f4b61ac
+912e1e8624e46a658ed0e50d4132f88e447ea73d15160158
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY5
+%!PS-AdobeFont-1.1: CMSY5 1.0
+%%CreationDate: 1991 Aug 15 07:21:16
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY5) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 48 /prime put
+readonly def
+/FontBBox{21 -944 1448 791}readonly def
+/UniqueXX 5000815 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f059084178f5ab59e11b6784decd2fb36dec8f
+7478da853762e00bc9c52ba86ef50d222ff142abc18e4fb95b86b3e57d9390ca
+86e8de6347bf7f48f93322a372c5d7830521b14e8fa0771961b027c81365426d
+d95d16b950e216a90f28ce806244ff28dd969cb512a23e05045e7b2bcaf7d6f0
+ca8b51494f2ec0681bdfde60420628d9bce98a0ca1ecca9140f452a88db19a30
+ed46ae881b098c843a51d06f9a153489357fd24de6a0c36cb5a9eb9b3b64dd75
+18f83018ae7cefa1c12fd205df6880a705e28457af7b869a6dd28f6b37d82cc3
+e51cba348dcdb34efb119b8ce5a996f15492b0f5d34538850a2c1b6a509fe5fa
+015eceaf28b787e54f5f78aa5a89e3ed380237c85d8bf04e236d634a9c60efa7
+d84487b7bbaefe0625cb7390481d83cc0abbc78cc0f13d7fc52e3f2da6a2d105
+535fe80d88ea978cd8a6dd0459c8a40c8413471e941e28663c279f8ea894d21c
+61977969552752acd39fa5f92193c6bf0551297bf4b178d6240ab58e8313efa7
+e4aa0b4438679e8333da67d84273283abb78e2d38074f19b4dc66ea1c1b9a730
+2565c561ba2fda2b3916a4d03149fa04b4821450b6bb7794dec0931421cf2e20
+17a240c331a0779bc8782bf8ea0e9da85ce4b59cc531a6564bc41792a2b39a08
+13d47899a72549100eeb9f89016e3a0a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY7
+%!PS-AdobeFont-1.1: CMSY7 1.0
+%%CreationDate: 1991 Aug 15 07:21:52
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+dup 48 /prime put
+readonly def
+/FontBBox{-15 -951 1252 782}readonly def
+/UniqueXX 5000817 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f73e9b697ddc0351763500e23c4d170ea8a2d2
+75ad0b6b23097f02fa803c1f46f9ac10fe0e527c431b11b1b9a50e874896cca6
+17fe3e255960846bc319ca68b9b930a45d5d0fc36b352c3443ab6f7793b38d2c
+7fb9c409ab7980ead55e9f8f6b83c70088d1fa6d7f2214da8928e40b96334ad2
+72d1b5db9d1355a579b26a8dac21f021e393d7d837a95deb8de92ed818a8b80b
+98ee9cdd8a3c57ad7d6eb7a82f43eaa6ec520eefa7302e750edc4b495f70bba2
+24a2182eec37f1a1c5dc8e20973007150237daa6bf03d498826777eeebe09014
+ebfe05a8731e1a421cfc513d47d673e3d94d805f5d0668ffa265e0962cb5a75a
+4a93d9b873912be368f3f300b584a7c5dcdc5e3f796d62bd191959cd043bc0a0
+108ac1860e97e05173d3b979ffeaa815405d9db68a72c102cca8b3becc60437a
+946131e0670abd3348ce6dcbd3bdd4797f83472f944778fbeb0a0b93d8a4c1a5
+4a5e11f98a2eb451efdfe6385132d454f31b743825bfb1b7ef31c343f048b357
+b7b949dff676d3096cfcc41c972eedf80c7f0b81cd76fa7a542c3bdffe7803a7
+d95087f76d92bb9e6f6f1cd84d93fde7ee53f1591147acde81979edcf2f614ef
+da19230ca34e3c6668ab22613f4fc1668e4e00e90ec13712e73809af730df1fa
+85b51ba5e8379ea80b7c2c0d5e4ee23348798118067a52e1ed100bc1f84b6fff
+5dd33699911bd31b083f02d54ce14b825ad5a76d39ae50d43767be3e55038b1f
+26f64d0225d3368cc7634c371413e5f572f614f1af
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMEX10
+%!PS-AdobeFont-1.1: CMEX10 1.00
+%%CreationDate: 1992 Jul 23 21:22:48
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMEX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMEX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /parenleftbig put
+dup 179 /parenleftBig put
+dup 180 /parenrightBig put
+dup 80 /summationtext put
+dup 88 /summationdisplay put
+dup 110 /braceleftBig put
+dup 111 /bracerightBig put
+dup 112 /radicalbig put
+dup 113 /radicalBig put
+dup 114 /radicalbigg put
+readonly def
+/FontBBox{-24 -2960 1454 772}readonly def
+/UniqueXX 5000774 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a
+e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4
+d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828
+e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4
+7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80
+523f59a30d195fcf9b9fce4ffafc6d5649664203ab24acb938d58d246707ffe7
+d62f04bec4b70c21ef75beb2b812622b3c74e969d72d3cd11bd7106294a99caf
+0b1629bc7d4de6b96ca82930831d64575f23f4ad06a0e45e315b1d392411be8d
+6d73c998789ff258a07a3c8c2057325784514c845500bfd1a971310cfc11d41c
+1a167dbd5ff012c60add4e87325f6e5299032a839de65fb1473a166aae1876a4
+414a434f22c1d241591fb36f857df6fa930608750ffc0c54f44994662b1f00f1
+400bf752ea8d83ffc4cb77a290bc2d99981ae59a191748ba5c7ba1a9d2583fd2
+1398452b6ff5d83a059f7eadcd2ef744e9dd22bdf9c79d049bf06835e878c32b
+7765c69bdd8ef4deb4ea7cfff4cf9354a4ddffa689de961d16772491c7afbd7f
+ffde42400764c68e954ee5c455a5687959829bc3b319b2147deaab3628662c80
+30c5e02fea09609abe4eaa12e217bc3af673f1bc36a7039eb13fcacb4218fe0f
+c5a3f9452d4edf46cc91db67b624d4f2d37502fb9f11af4da18ca40b61097f95
+d44329375467ed13c5cb585ec53f62b83ef9502cc755af44bf32b87b8ae9f3f2
+f8dbf72dab90acafbacd280db6aaffaefdff6d5eff26669bac56280a950560e3
+d01714ba38659b0e4e28bf8cdc1f15ff7e3ea9d95a6afbbe3d8e6905aa6d531d
+6b6dcab89e2036cc492c65f76ddcc3cfcff33fde3d9ffd10f7a90530fd5c7683
+4329baa902e701ca42717476298c9ff511b1941244bb1dfd0e5cab92a43970cd
+1bdb292eadd055c97972844fdcdb0aa06401e7b2632b9d134f96bce0064860f3
+9859da7a9a82be0a840672a1331212752ae1b521b693b384a72dba8d37a86eaf
+a0341e7fc5f6ef7a8c566aacb91e8bf5005c18837894c4eacff41dba54e071ca
+83fd079edb34a91f29fb5cfe125a87634c8e13a562a8dac441e788878b15d83b
+8671b22c5d8dfd10032c0f5267f45296cd3e018ec1b71688d903a9dc220d46dc
+b3940224bd73b74d0f1c37ba706ab1c76a28e11b065890ea065b0e00c38d7802
+a8121ee6988d34646bb1781d36674f70f25731f0d30f006486224cd5c8506ee4
+0443666a412a24c9fca1613457ea8b93fbe521c0b1517e365ddea9a5289f545a
+78c6c2e24f0a9c6b27fc6009daa8f91e4a2b0823d0ce62576c5413a6320e95f7
+1e190473c28e005a8bcfa1174564f5a4baa6341ed31d8b5a9fc98bd6e60d0061
+4610ec5b9231c8c8d6a114721e06158348b0e246f4163c6e5ea871c7994b37d6
+63fdf845e77b0cd00a73dc1257eedefdcb67eb6baa0df199bb7e49f170bc0434
+0e58be7b9a45de3b065527b587bff96c8f5954fa0a653b62cc97e0b12a076afa
+0c46865e0fcbd806a27581c16a473be4276496dcda024e8fcdc1e39f73847a04
+148d509ab54613e7294ae2c9cdf1c92e99470b0b1e0c9065e4e6522b3ad1698e
+d2a5bec167df14bb452e28cac37ecf7688ad6ee9969c6d62d26cbdd519402b15
+59ec6a6ba674eedeb615c720f53fb224e4c6289b45f0f8b8a186cc14573a9b66
+534bc44055ef174c0f457cad821f101f4c70920f932715ab38c641c11b90059c
+997708833bd5ece319170ae1223b42bdd521e9c5377933b4f82eb6fdfca57c3d
+295cd9ca530da09638e39c551ad4899e0d667ed91c89a26c387b688da596d240
+ae0d01f498431d0376e49f0ea4e6cf097c1470769281f54433733592aafb81ae
+3aafa7c2c420ef15d506f086557a17375fc1e5d64f1c325e965a573ba39c69e9
+69a4315c70542530992e144c391fce75a8eb757206a4801a3ff01cad4fe9b315
+055c404e696e5cae639286259771a5e2fd21e58a6f084c75a3dd5a931d889795
+f84c897274e6b6512ffb6c882f92079e1def3a945d4dc53eb7865460de59cfc7
+d74aeaae1878842dfd119a7d75167f45c7ea5c5d9900dacb7ff91860cd02aaea
+3c899c70074d0ec27a83b0510fdb05294d285202695b657d7093615631d71ea5
+0b49b5d89a4abafe111839241598511270078f26b182e53c07f8106d33b3b74d
+e6731dbc8da4cfe42c5ed9b3dd21a0df5c8a283487b305584cbdce0c47c1801a
+614ae5827f45150908d28e849c9218fc108d5d856042770fa3387c0e0ed34b23
+2cb425bc6337d2bde98e683dee59a708597496d8d7e252f788e5bea2d10b39d0
+a4f90aa5d9c92e5cd9026ebe8022353d1aec35ca1a021d9c39f42f429e7259c4
+83236459868feaf94a85e61745e3af5f44bf999d2691407d9836070820fc9744
+52accbedccbc21e24510ad2c2d1f9443494aab6178d8fd4fa95035382dd4a5f8
+21288e8bb7acf8d68813b018e743712d63768dd07642ae42c1af4a9b826041b6
+dcc4038037426a68ee562196ee60eea1fb228a5a18fce3f6e84d22ab4686cbb0
+418079ca4b17644783bcc7665549f1c8b37a6589d25ad64ccf4baac8ecc68c4e
+d8ed1df51170a30b92e1ba76e8863a5f13495a78e0587d3d40e3a6ed34f6a78b
+c468abae0daf11d785b6889f99d32181a2b9093c9f236190babea6e63ab8938e
+642c82d6b8820142ee9d0c052b30f0214c424dca7df23a1d64b4c14d056a9a59
+4579f5bb109d7bc646da3d2d21fcf04da4e83109521209fe51214fa5e9323121
+df7f88c55eaec4a723d4dd27a22d760c1c201aaaf893c181363151e2e44b24ad
+467e867d4c18ffa0717ed35331c89866ee508c5afa4d274eb0a4ca09db92a3b5
+01f6bce444c11b0167990b492d4a99292471d81fe413e2597750ed6f46fcdb85
+1fad2f16bd34ae8e63fef77cc74ad15a872a68bf1c9a30c0eb281f803b3e2fd4
+106183159b573f2e8eeca2e020bf48c6508502c105e77783b5964fa958b1f454
+3e6afcd32e9560ce30e9713494f3d69a76d4224f10c7285ee6f156eb73328430
+82a6edb74ec374f68d5be8d6fda804c4c2f52a6bfed8eb3cff628490871dd2fc
+461a3442f8ae1b184b201e12a8503d43304e471fffdaac24816904d28021cb0b
+7f2d4d11ac00965577e066f88be826842c4aeec6b097437188382b62b1dabd0a
+ca30cb8ac61dbe223b93c11173310caaa36d7e635cda21245dfb68d9fc4fcc3d
+1dd83de85b2ec589348f7eea751f5c45b99fd7d2914785ec0d76ea8eaf09ead6
+a1627c69c288de7cb964891b9ddb3379254fb47703713da62ac634a6e51d2d0a
+299d533e35ceb215b3e53e4936c04b453ce1621789fe6a59d4e210decd1bca58
+f7d3b170308e0d2dff5796330e8aa6b0e1f7c87e88a6601b442659bce06eef2d
+3f5952ebdbbe3736e91f07e89a720bd6788b73201f9579d40dfdf6160c421e10
+f2f3a28a613fe08cd6d239416c883165131055be72c5ce2d319908473a4b8586
+1f6ce3485b948d1dea3d3ef2609f7792e88db5aafb31dc3ce7e1ef1c9b9536b3
+c5bf838462652174c182
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI7
+%!PS-AdobeFont-1.1: CMMI7 1.100
+%%CreationDate: 1996 Jul 23 07:53:53
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 179 /zeta put
+dup 180 /eta put
+dup 59 /comma put
+dup 61 /slash put
+dup 62 /greater put
+dup 75 /K put
+dup 77 /M put
+dup 78 /N put
+dup 84 /T put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+readonly def
+/FontBBox{0 -250 1171 750}readonly def
+/UniqueXX 5087382 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930f01bdaae649990604a33aa9eaffbe5b5489
+e5c7c9ff9d9be01b08220832c41caac64816b53bbc087ae4b621d2b44b21ae5e
+3f7fe4ddb05c675abfe30510eee4a7c874bb57b2ffe521a6875eddfdfd18c781
+25bfca5a097aad361dd94df46f14026c25ea988194899b95001209cb7009cead
+4b4ea03473ea120e7a7e341d4e3926796347fdb3a124c29660ac09f4648b313c
+b58e824884382f24ce08d2edc686923acace1201c16a07a42803288cd0b946f7
+546510e95b1fa1cc96f0bf72aa823d8e83d7c68c752c82a54c752eed2b1e699d
+e9db1830272ffbf2f4996ccc2d6fe2ae272798989525ef3b67b0d09bffcef749
+a805e5f76578222b9c4a8a09b13189a16ab746ddef7875f1ecf83e568f493d82
+ff729baa1e0834dbec30a35d3c49c9b10c5e1d90c6e3c8fb737df5ceb3299d96
+0fb79632f91f257753b4d2e34e3f54a26c7b950981fb7fe4dee3315db63e75b0
+24b4d318baec8aac9cde186f6d65767df1dba35124287c2e805bc660a3a22772
+0ae4fa097f1d75107441c0a0fbb9eec17d5516fa03b98756b7df7ac7eff9c7a2
+364b9f691ed5cb692dfff9dd80c761e9c4d5d6061782b327302c053ce1cd09ba
+0605ebf761cf9b730524e1994e7dfaa956799d522ec53d5acba27a35c4d28279
+617771938ece58c5ab664aa00c1bc4efba2d15504247a68e3af0f9bd59a387b3
+80db88cca083b06f5af70d768d1699826fb12ce12efc2b4c70923e052dbb964f
+5fa957c3ce225c0fda64d9b5321ee1ade207c1cc93105096cc73118f4082594c
+8ecddeb0d7bfde6f70bc62f10407c26a476ed88be7999d64a15912493829a9de
+62c71f5a34fbf5a843e311873cd98817dc9f8a4aeb7e0738b5de10043f5cfea7
+147f28812a2853cc2105c469cc0358620981d706c74dc1c722498e53afdd359c
+27016190ed6983ae99ef637119da6f9ebfb22e33f90a9b9d937f2453ea16c084
+8d726e9c96abc9187b875268bccfcf4b4dbc464224772eb2885a7731a1f34c71
+56c8d7aab1c9c5940107bd50dc87c017c33a726fa15b4372da8d6fc5c04daf7b
+d8cd02541b5f8ec7e4aeba3a87ba09c2d39e863d558ab8a431ac3bf9fd18456e
+5799c7a262cfced0eec510576660176494516aed9200b94002b8f3cded14c1db
+511d9ee59d630cfe65aeff618703906d0991503dbc09dbc805467c723318d635
+70b8737f35210037fbaa0584cedaecf95f943ff1372000df4be466120a0f8763
+42aadf36a085c3234ec571276cb02aa12a70c158b210f55d176729102d195d96
+a2cbf762aecfdbdede741aa0ad0f152b27788b174acdc03fda2a47bbfd8ea997
+db2b3942b849946c62f35a3b3abf0055a6bb0035743fac70ec56e9b1c95986e9
+535ed7d16c28835fd51da271341c480e7acc53f016fd474077d2da8cb10e94dd
+4ab5799e99b959339bc76b9661c0f60c8880bff50a43649df30c4ef990f30705
+5bfaa14d6156e5559a8a08451d331ba2577685c867642ab0cc72c2785c494213
+eb272b89e933c6a99cfcd6e0073607597ca71c1402eb2652122a6e27ed0b6afb
+a84b4fd6abcadc529a4a0abd963f07af12965617309c26b9fd1e02e8aada697a
+808a8a2b1fb2598e2a0ea81acca988dff22ab12df1db5e45d0307927c2ca71d8
+5589ca1811621587e47e8a5887b6274110b4a9ed0267db7fc0cd2b69329727c8
+a8e7820c8b56fdc5f584e4d270c4e2817aecc1b77239b92d016def178a68495f
+97ec8f41ff5e3282a835c994ff527f822425fa7d6adac657488018c774cdc7a4
+536c218ddfdf76a747332c51ae4083eb7d29225b452da01f72ab254bfb330ccd
+90b261517ac2acc5e1de622e5bc6c01ea59e9b8c274b316512c253ff16a86a42
+5a76d2bd5cb31fa8503e1cb0cbf231e0fac7ea0d0bb1105d38c44b53b47b10b5
+2277a46c670ad9dea9a5f332e92565e937d79eddd7a6e929e65cb4b0fa375535
+1b6b32e7f7a732d07fb7779ab46c531cd76d5b56dc53cecf0d13eb902d22161f
+980d5d554bfb79399fe737a8479bca84b8e688fe7f27a005fd0ff849cfd6b945
+0280e326a3dc42a687aade89eb503b36a552cb6723618352f735e623bd58db4b
+b34b5bae0b7843e1a6f8f59d30a2883fb2c744e059f74b3e56164a128cb8687f
+3e94033697fb50de2027b0ae7dfbb74c29e4dc21d66843fa5b19ec702169ed6a
+27517066a8f2de40320e9328c7f74d377f0b5723d021527bdcd75bfb966a803f
+3494df1c733f8ce4c6db20520189e4c91ecfb438964525da030bb55430b0e789
+4eb7057d4d63e9e7bc13430799ca3fbcf69fb9a2821612656790d7c9076f94b3
+1ac46af6533eff21adb70f99ad7b94be92e0e2f2a084013ed419d47b6122c99f
+23dede95014499501e2433163f084c128ef610a8dbc45e29f07e267e8c88e790
+5d5acfa853e0cd1f2c68f0b90aaea28afdf71fab4282b2ff90f89f305e36a4e3
+49848e7c14b6bbd7979a4b251d646e2c450cd25020c9354458366d4b991aa18f
+978c90ba0f1ec134bbb2e3ab18c4c37ec8b63bd86c7ff63b2198e95163c188c5
+58ad38b01b254118ec5f7f6d5fb484717008311a0437b756dec384c468dcfbdf
+7a37de543fd3df8bb7f6e41b23cc78ff278f85e5c66ad597fa3f0b9341dcbd10
+371deb6c9a7366b4b2106a581622f30612c9a28de09c235f76eae51f67b68c01
+bee24a6bcfc83ba01561ea7fd5c70c287474c058b37d7f918e126adf337fa0c9
+c5aa4eaa97ca5980290e380c1b8d7f6dc570f5735f4cb63975b19debe5aba1e5
+c3570b4f2603c4d8a0edd3c062d9b52fadf4f9ac12fbf79e84dc4b61da3293a0
+db3238c98816b64810a45368afc59db82d8d0b866a450ba2acd0065ff6699e23
+9f71ac66c46cbb7afeeb5120f72a7193024a96fc406881f075a36521ebc58cdf
+cece4035be5ed661f4e1b92b4afef87a3e104e1c6d5079b2428dafc752302d20
+b9337fd8cc008e68d23d1d6a9b5d9ef9e0a5ddfe33dd3c2c8e1c6b07579a21fd
+d958717b823fe1f809d6eda566c06d598b12b0280c94d8587ece32d623fe3661
+861b808b080b8e7a7e891e41b9b54bc1267647f3fd1e43976f0f4ed78c29e226
+5cb7e8f76f15a07cfd2d0c9ef50ebfa0b52449e3e5cc3b91248b3d8a25292a9d
+bbf565d08865a4828b2bd0d2a7db5a6349163befcc76a3212bc29c28ea2a92fb
+436df23800c52054e36de1a2b97992830ac58fb2dacf2283ce94d03fc32042a6
+251ea06bea6f5a826beb07cb007f349cd45636e281921f52c34c12a3cf10f461
+dc455e0a18243e2d5ccc02743947e45f61f385ef3ff0c5be83882864ebf54932
+770179b797e8f7345d16c4aeb0d81f84d2fd0cad49e077dc66349e96e8e24d34
+b56b9c1082e7883fef4760b1936dd4776f542a7767d6411305f94cdd35e3068a
+07ab9a8daa08ead274498e6be7c530252a12c513e58b80c717f29d7bd7c6f326
+826957584386ed2c80519d32c0f018f96386d162a51a7cb3f11d47b2eeecd061
+0a00863c59f7a1ab05ebdfd7d0d57df506ef4894cdad8bd21f5fbcfbcae0305e
+e9b3a733c27f2562838646b8204b565e67bce78213101e0162f2451435b302a0
+84e2afbc3ebc8d24856df6f8eacf4c5fdaebba9bd54ab617807c977a383d098a
+75c1e6c1fa59ad65996da4951df43a40af43129456fd73f0e73fd78afb33bc91
+f1e38f6c7690fdef56ffe7c2efc5542a2cc869df20780570c5b47c599d0e8db0
+59d0758ec9d452e7013e5bf3d57c7f45fc4f73fa6d7321e133e1425593d430b1
+7cde6beeba83f254923005975dee80f9422862e927f675848224cebb00a93871
+57b58f5d85cc3ff4807dd914fea14d0be253bce3c8850e566abb1f45426d9848
+bbc8a9330521754c77d07c90dd0851b36bc99a85bb70a7fa1fdfcede0483ff9f
+2141f9fd9fd61e1d38da16d41a8c58b90222121f11fd4dda0ab0a473f23d07e1
+4fb06bcc17836275ab8788fca6b67e1c4d4d0c7e131ab28492f364dc1dbbd5d5
+9fc8034e5cf79fad0366c51604d7e550bcd9e3d81bba225d5c22ab7cacabc38e
+0f4ac24620fe21ea8a15e0dbc1cb0b5a264427cd54312b674373c0e06a8a826f
+3ff90e41f3024f5694a930b3da945e8e870d70722845b701c5a7adf44336024e
+8f55317e039bdb7f08a80f81161b43c41bc2d68ef0c6f026d3cb5030cea75a07
+38bc5d7edf5132d0cf2c297c39994e63e581510e4aace2105ec7baea5c996e75
+f62d577a652e27b92144cc709561f940e095e5fffbad310f245003547020f42d
+64af3d6e005209689b0bcb2da4047f153644c41af521d6741c4f91521bd5805c
+f21eb11a75c24350fda6dcd7947171be36f679c5b99ad13c017616719a06ab0c
+7b5adbb87dc93697c2ee47dec454117f102825a58adcf0a46efa4a7f986f59d7
+2bf22659fd3ed57c67a8c3c6646aa8b888c8ec09fed798de5a0fc5c4e0543b63
+c12aaaa8cb6c177b1ca067c62ee8f8c798d8ddb2eae7d185fd0580e69edfa6fd
+e9733992e7b27b83d9555f4dc73b34c3c73a4cb8cca780548e969557241557fa
+21486af1bc84036b368a30e9b400eb69b428e7e4caf0c8871957b630d5296166
+d7d863a05c32af10f3adb58cc82bac3cfebd4c9e98d782fddfd611b76c580611
+847c7a5a5e0a4a16be8fb642d149fe5c9a4efaa8bfb9457f6b0d0666cf8b8f2e
+c39875a73be18bc3819983601aeab0c68ede10b4a38b2e67158d7fb5381ba8ee
+15b2f7d279c155c5747a624e842dde88934078de238099a7f90f730646eb60d9
+e705fab91fa0f99364257c95d7c4fa68d44fb3ca239eda52feafebdfdadc323c
+8f5f3feb255c4d713ecdab7195a2e38236f7b79f8a390e03c2eb08883bffda57
+994ccb7262e8bfc8047d868540e8c3051becc3aab32ad8eedd5ef5980350d398
+eba74797c854ca9dbb01efeeef0aa222e56b57fa8ce8fb3fa0bac67902dd2e2e
+16101f39c638ab173e98920ed5a701840825608d47cd736635cdeccdc7560ab0
+cca84a2b6d9c8fafe85e1fb0ce0d7b6703e1f6808510ed35b5a4bca55bc1ecb6
+cc57279f917f28506e0ab5c47caa03642b68665087324195c633e8affad97fb0
+f7cdda137abfbc36766696dea59c682c9309966b62a9e2225351c32876970769
+6dcd841f4773eb0307367f13e835cbe93c0f91bdc3db2fc11b3f9711f73703c3
+0b5d4ffb01dfa82dccd6981cc797cbfa406eabe6398878409265a0cdd292ff5c
+9ef7d0d5c19653ddd64376ee8c8b872bc8674202704bbdc79789a61c3999c440
+b71e00cf234393bb32e11c3533ecda1ad66a33d0c72e7bd9463ffe725549249f
+8fd114a6772779070cad035d218ab453ab6fb136391e5bb4515e25185c6a86c1
+610e701c52f88702dada541bfe99498573d9895a8a63603384ef2aec70ce38a3
+bba6a24b974506725550df96a95c7180888c1ed54afc8d5588db1adcef7b603e
+a13601ceff6f6b65d1bfdb1b01c0b8215045841d3ad12dc77a73fcdbb221fd88
+a95afa58f3f0277d9b5541c4f64cb7eeafd609a3ce020eeb2a1992301ebb4fce
+c47b4f76fbd25e2fe36a6425667591f749994040bd5c190464aa1a9841892425
+726ad3dcd08bc2b73b081069062adea0b39a1cb0a532471b313291c330b783a2
+fd91f212eb3cc954a9d642b46e4b906b2bd31d6c62351179e48864f7d0dca002
+d30c081d28a088bcabada8f58d83aeddf16bdbd7952a2e4281dc64b727a54d2c
+0d7b47ac6c0296533cb358a879634403e867d893630923cd0697c5263c4f59e5
+33ed3d4d836ae80348af5b226f0c95279e28662edd4ab67ff4d1043e0a8ef2dd
+4ae44325a1d224b8ac4ddcac0b380f99dd03a4401e2a8421ed3fd3ced435baab
+bc70cbfa6b04c4ffaf6edd8e2c1e10a5fdd0b634a54f4a071fef426fff298aef
+422bec6e6c18f7a1004f374078b49fdad43c79c8d7a79cc36ca54f00449bc25e
+fe8b0d854d30d839fd3ff622a5c4c13d63889d1394100a28e4655873d15cdeb7
+2bd00bec8c9dd4db7a085340506b9bb77fc633227c8cefd5f74e516b82ab1906
+f246610a04fd691b8c10c8c0992cad281294a3cdcaf0630ec0100d1811988fd4
+dd620f5206455df5e80a980ded02cb6a2b24fbb3ffe8e68a6fbe515486a28576
+f485f8a20fe7337c6e9d7f2aee73f9a299a41bf89de2306babb528a00a9f35f3
+b207c7d5d7a2f4eb490f3679bebde8d12001343c44bee7a5cfdc26c801d8110b
+51482e0eaf1194d0f1b1eaaec2ab074280eceda36ec53058d4b7679e80006131
+a51ee8c4247910b61be92b8e3ec59c49c3e5c3de1f4288a31cea7d8712d6340f
+53eba6ee93a948b2adc5127f4c2b64cc905ff5a55b5ed900ff962685179a5553
+b213c1df4a4471ad17f76841fb576e0339f4c9dbd436df5d6ed8d9b72d6bd4cd
+7b035f7d866aa06e0f3481146f8b3e97ff8b58ed41aa1a1c5335b5e5ca5d3695
+8a89db1568b25de2f08f1ac8b2f72685fa5890d9d6d5403e7ad5e01a35e326ba
+e06adee1a0d72619f61a67f04200aee883f702159d94768ce47e4063623e48b1
+939e0702a61b9897cddb10c5d617ebbd1b5a4f00519f37b000bbfd8744a243d8
+a411296c52f12323b53c313609bb381e5c66243f739aaf36ea22808a2beb138d
+da3a33b3e1611f368cbf7fa02bdc3137c33add3843f423f6979daa9db491742c
+2ecfb3742c97a6e6f901eda977021bbb4bea6211978560bed6870b4f1c3b5a13
+72a8d739e4e27a8263d1dce945edce2925adcdc72de8d1887c39d10f838af3a5
+5aa1c300e4dd4e47594b004ef6920e537f40d3317807f242cbdf4443641e5951
+3ed54c0e6fabffe6e326f0e99fc201fabdcac59f80cc11de089a17317b80901d
+deb4de5ceeb0ac2cfa9a9e897cc1c45ce14aab8562ddbad931442b628986a460
+d758787b435dab851e974bc0c2dc63016b8a743bf7a303ccf35c0b414b9c3f31
+0ba3d26068bb935d5ec71a211f381d12f644936f7e457f06b04a69544eda2851
+00508fa6d0dd5a88144afe31c121b03b0f73a4878d179087b426e7c9f675008f
+dd8391056e1221e1eaf669dc051266e48617b0fd2408426a13a0bec7c9735e36
+f240b6ed20df05cc989f6ceed8691a6af1cb614bb1f75c6ea75264fd34729bd0
+2aa8f4a13dfd617abb06964dec0cd3916033cccc2b57f63f3e4549db2849175a
+8e006c34cc099868a51011a609bc5033fea6f16e0cd60d074f00fbd2e62203e1
+70248b02efa96742956efc6f8a6b6999844aa610f1cdb070d18e664d4d5a520f
+64f5f101a5abc897c9ebe9c67785128c7ade6117803856d89ab857c639fd2a39
+9fff033364cd24243cbc54710b0204413818642ecdfe91b393047ede8e70919e
+0087e3ce11ba8e870edaa5f731733f2c9f4dc01cf46d85777a31a95ec309ad9e
+95bea415afd6329c695be36ee72c1ee09f853555deeab3c724183e60bd393eee
+a2655fceb9c80dd2927473188dd029332ddc846011f85b402fd4fb17cfa55a97
+9228bac2f83ce7dc9f1a8806cfb4b20ed952e50354440751b5b2a9f7dfa2321b
+464629c6abe4643a25170621e27d768e5469ca40da41233a16750bebf3f9905d
+0f1b3f24efdf47620d76fac7a05149ac233c2f2db178452c9a57a02323e6b21e
+57dd637cd0d9c25ac9aa37ff24ee87b65af5a6e903c5277460730155a88eb0b6
+aa6e2e09cf61496d8b1a8fedb93b5380e2e878327543715d3ae4129dfe450d5f
+2dc4b3e72769420b881547672f3f722b99d983bb06a1f493feff67c928fcb11d
+667689c3ad5189ebb03fd8a1b69b76785e7e03a1dec6611365c33c3c0afd9f2a
+c90c7249d613e380ceb4ce5381b1d9f2dc94fb537b33da4238181f332186bfb3
+092ca851cfb3ee0360da62c0e0f7cd8d7a1b7a59443e5293e438180fccd70f34
+8b4f3fbbbdf0c3955fa1cce5e30fe5a3c845d7efd38a41dc0cf7cb88215ec041
+3db8b30041a8e6025c7abdfab242b230345534d93a138bd8759fbf145d1bf1a2
+e06eb950c0e6019cc83f916139474087ac87fec5723dc98efbc2af5a07e20666
+edd139ba8b931eeeeb044998df61dd9962cb98f9ff0785ecffb9a1b1e1a5b772
+38a944f9eda252af7915750e9d250cefc4f9d6161a679303486fba240c9559da
+e6a46d52ed7316119d4e58fa905314242e6f12877ac8bf72de664d230bc4df03
+e52f95ac3c854cdb37c4145fa9e5b531cdfa2721784b8cb33dc73bbd50700959
+cdc46a041add38618f31061d5ef57a174a2f92da164d7d8d3397c45fcfb578c6
+ec47308d447f0266672d4598c27eb5de43b94d25aae6aa803295d17ebc65f50b
+828e0c6d7a36a8faa880814db97a78066eebb5986e71761ad968810cd2ab9a8a
+8418372270ff2f23ba3c1dcc96dd1f478bc3fd3c6aaa18603de4bbbe0b549d13
+2f0ee661ea8d065b5b9f908c8bc1ce0086fe1682bfbcd001ad6233afff0ecab9
+b39a4ec816600dcd6fde56b1ff6b734121b6ccd66329a12cf49e7d66a657ec4f
+8bb6e9e816b7db467c4114e519e790c422dee2ae4a770540f44148ed67e989bf
+4e8a4fd1cfb6a4a6da96ea5cf0792598bbd16c4d4d97e3c167f0dca4f161f150
+6ef1e3f372553de60ef48f31f27985857844f75ec1e640bfc5f09c0c2a2c5e0d
+d0f212a14fa7586a21f9a3c5d5d0b9fd9e9aa3266676688e4fd0a5f8a6bd9397
+d232fbd4eb232a94946a0da5362c11bc897d0979d5271e6b9e3f2171ba0e21ea
+c24f22fe4c367c31a1603b6d6417831b8f529d12305332ab018d4212282bfd6b
+5bc608ca88b4c47611014c5d21279597aa372d7df72ee27b0455f27eec4f13fe
+39ed90bab2ed272800087398838dc481afc87edae327fa40e4578a613411bfe1
+f202ff27f5cd55cea61117cb9b4fa31e0338ac8e9d05732778a6fe540a64b32a
+e9305de0a9c47b8820531d77a219e2da196d680ebb161adf90136c57067d844b
+f3d7efaeb3d29e0c6c4fcbeb321b53e30b063092d9b58249d44063079b9c2393
+9c8ca47b14c8e8b14451fd37b4cd2cc1ac8c4ec067f1d0566350a8aa14a20895
+13240857ad99f8f11b8bc4a3704f893f7ba67f50d5af41d64fc8d673c1b2c818
+6d63b245d9b2e80d58d01d97e9347a9e95373bd8f02de3a22d99ecb478b84a18
+2cb67302d7a4a3cd4c92b8cc023a90e7851b36c6c15d2c773f59be5416fe834e
+784d2d9e331a62fdcbba6d5b51c3feb49153fff9d1a04f207ba62c617e086089
+cf678b252f3d090ca5a3f88eeee2fabfda589caf5dd06672b875f8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR7
+%!PS-AdobeFont-1.1: CMR7 1.0
+%%CreationDate: 1991 Aug 20 16:39:21
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 43 /plus put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 52 /four put
+dup 61 /equal put
+dup 77 /M put
+dup 82 /R put
+dup 83 /S put
+dup 87 /W put
+dup 97 /a put
+dup 105 /i put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 120 /x put
+readonly def
+/FontBBox{-27 -250 1122 750}readonly def
+/UniqueXX 5000790 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b448685940729e6e22f4be0e08c6505cba868f7950
+93f556b64b808dd710eb936d3ac83e5783b5f7e56d363a59a026a5619a357d21
+c4e77bea121eb24b09027d1aad93158edf912940e91cd2f17922b35885894644
+7773730bb19af9e70453e1b78d5edc123b273a979891d6d5e624f4a388f3897e
+13b045e34b4ee2f5e4fc5e996d3549640010c671de14d18b0b3cd300e57dac03
+22e59bfbf7b29422230870f5897fcfaad4b50c7c1c58edcd119218163d6f6e56
+25ccb882db7b6d09a1586508e8cb642a11c29a46915e4a96e282079cb21922c1
+c2e360b487a45302fd22ec8c5fab63e54b5e844d4b17ca2fff37c69c366dd72a
+d02922c14c0932f65ed03e4219c117962edbad2dcdeaa9c10ce8af38a4ae52e2
+b377245b0be19a77d6c936e7530cc4d0b78d0cc4a92698fa2870fa54f2d8503e
+2d17b3d52fb2febb09f2b2af0c2a1892039ebe19a690098799a858e3d39631bd
+6925a154d161df3918074ada6bd52baddd0adc3f07e2d9f15e27cbf7fe8b98c4
+07205c811121fa91e059f2f99322fed63f359ac9da97aec383f067f23e5de331
+51e80f0a88ab50fe8fdae4a5de93c1ae2fdca06150b37246140c0e87cb2325a6
+0d2349162ae3ac93144eee1e665a1289105318fdfe86b6e76251cb25adc967d3
+d0b97fe5e279e1161736ab22b4ca510b964342383a840defd38f96a7280e6ac1
+34e48d740607ff2e7804164a16d47735864db8463a486ce4314ce68a4abbfd0c
+1d8090a1146e51c1147146f1189098b0ac1b31819e481ca297840873961ddd87
+af46c4d818cc252607802320dde80926c63221841035992073004f7dc1ec8b82
+581e2e62ed4d0cc3ef0599b2dee151270a188a7649e96e60b4578236e03bb332
+6e18e077fa8af24e434ae05a3139f24b6da32f4ae82a86570b3f933c7c8ab503
+7809a99ab190d89e32c8f9a62383c0b3ef7ec5822b4938ad704a2df97a9c4e74
+d8f655a70c52c84d1a31ffbadcb9cfd804970b7857a04ae38b96bf212fded6e9
+a957560b7dc52cecfecd44a7e8863b544adf8e28350e9ab041eb69f4533d99af
+170c566ef536abbd5e792ec9f4d011bb04c95c9b1d12866d35311a880c43b32b
+dde23669e11d825f89fca26af263ff404e82ab3de730f58ce780949911087b57
+a15ecdb3da6b1b40405748d02daf385eced71dad38b54f056fbe93c6def6e420
+bab465f21b5e25b55d949b6102cea7aec1f6c8a7cf7d478d2d1aec4019303380
+6523e3048a7946d199293c26271efbde6256473ae00ec9e4a657273c4fe223e7
+b5bff3e3c72b18f797db98ce28da1c72e9e800a28019ce93994039965b599b29
+9ec3a625bd159a61efb9830f25ab0e5dcfb139452d6415f89b2a641b61618015
+5b9095887f8dd87e8580b24ab3538dc37377624a86193f7502be012ac5a2d5a0
+c59fff556a38008510f88f46e66240c06214a07d531694d3aeade323aefa3fba
+8e0ad82fbfc3474b3b3282efaaa745eab875c06ffabbb23e8f1e5266cf662cf8
+a2ffee800ec1553b8b995d43fb908342ccabdf3feb04e3abe0512b7546364eb7
+373f09211265252c760cd6bcb1818e08d1b958de2d16e9416479d64e5ad3ca7f
+47bebb8418a8cd8447c73b04a63cf938f32b51b6db81f452e35aa2a172ef16d4
+3ded2072894ff0af4e216b075e67a470a6f6cc80704dfbaed750d79887a27d96
+3d7dc5e1254c48f8c116a4f8ee70d7a22a4575cc96d4b61d2e44f4aec9b6b3f9
+18197be2f4ad4306c324b7abf8cc9eb0e6776d8566587ecfa739e3179657e984
+7406239e72b1f5b2fe5f24c69a61860510951a519d962fff42bfe173292141e0
+cf1174f6e1f7c40a6b9649c1ab2aeb2f7292c20d0f01d08c80f6688596e489b9
+1e3b958316d4d0cb22451a72431390f5a63889757e07fbd8e7ffb5a97e632e54
+3c0c6f4f9b4a991fa9ace4b3cddd70a74d973d172096c0e77718b2733b0b7d52
+30e7d88d26182fd67a1b992ec01f908f075da98d8f858b2b71059de2cba5c962
+f4e5a084afc887b9f1588e138b50e9f50ba6faec6d48f71a0dc1543a8d7360e8
+5b7fefbc8d5a5605ba6ee4dfc183e6835d973c1034259f573b2cd5730df47695
+27b12f96a7cd3673a082247eab61e1cf6432da0a339ae1d2db0fd55734e16110
+4a8322ee06fffa3f13597d38a3cfa5273299230e2a90619f326367fd209297fa
+9df6a66ad0c4e9beeaa38613f239dc7ce48c5fdc2c4b8e6349f7d3ad7000919c
+a6db1ad3f0debc4b04c52f045ff04f3852fa7605a5a3b1940967a7dd43249556
+5611d4724b9a74908c4d2c9e1b7f65ba4bea8895410029d30370c62062f9b1e8
+3e54d046d0c8c91c1b9a3ac3184971793df87e7c9db886b1f4fea56dbaff912e
+a38425b9ddc721606bcd2b5f667bb0c51c412514441644accefcadcb9b26dc36
+e52c37f6df4841562733dfa9aaddee8ef2e6f4b6212852e3d631f3679a321a51
+7e81fbd769affb3fc930fcd61cb21814bbcc0ec7286bae499e79afd331bc4227
+fc566d4a0dec52819bc08a92a1ddd3685142890cfb5cfcac246b03e4de9585df
+5799bc20513874cc0d0d1fbfce70d11006b9bc6cef6d4fc329631df5b5e56f58
+652f2e0e45641bbacb4c5bcedd4b0f2410b69be95960e0d50d1aec97599ebd9e
+752ea56f48568176d34cf04c702e20049931b93fd6562fe01245e4e41d3c336b
+7648fe3083a45bbc8c94dba83f2e488d61444093d80e30978e7756c076ec4299
+293d1020e46e7404102bddc0b754b144474f4a665ed8bac429c1e9545e1022f6
+bca4790b14ae8cbe6bfcfcecc97e71cecf23c97968677d194fea4839ed392ffd
+3d1ba786ef7e9c88f61f846425db8debc070ac653942fe7514720320f395b04b
+0ca0cddd4a80716d7162bf2d24649d36d93529745e68f837c4d34ff4c4269c26
+e3d2bb371929b34bac8bb0bf7f4e7c15b6eade81c018e963f7f55dcfb080293b
+e574810dd75c34f32722d36a5ec939e2e53a55aceeece9f43ebbbbe3d6381bfc
+b623c4980e7a9a0e7d725d489245339cb9ab9251964daa0bf9328dbe5969cf92
+d4a4eda9b4edc20cd8d8b32c63c3b9c59322635b7accbe824d255efa59093879
+30c7f8b7e72414bb3d680012fe00718072e76e1fffae82cbec8ef57e51a3ee2c
+330b4f75d7093e0b551277899162539a2c6371151ca44a893b68f5ca8ecb12c3
+d15680728e4c716be352d7ab411c9c776f4f10ae1f331017103d7fcf6cb72a2d
+a4bf968513c132ce7d757f2288365e70fffc2f4ab114767c24ea1977b8957179
+9ebd7ec4d5de46ba6548844114a0491c18ab3af7b19430f5f7065c709eefd64a
+355a45b1fa1d0f91dc7d01add2408ffbcd7cf345f95ac8543354aef6aca1ecc5
+2313f5e69f15c78fa6ec73b49fe25d08f1d7969e1b218e011c4abd1738a000e4
+9de7ee608b20c89182cb752c10b9636d8efe64c00ee8ed44b8a907acaceb6538
+6019e0182ac4a00ae18ff28a2fb227fb81eb16b119fe1d4f2c3e16bf925f31f4
+6221aab892cb91375dca22b74e37c4960092183bdfc9ac53a49403e2355921c6
+2ab43c4f3df974115157921dc29a7f7e22def052b3104d8c3dee5ca79dc8bdc4
+e9499a5c6d76c197f6c6bfde07504fe6cd40bcc156a4539acd6e93b118c60abe
+16722f32430f1416b17d4f72e4407853ad4d9657eefe046a7f4e6dfbe25a5e01
+3f70e7cfede94256d10c40e3694787f562ac4bffb78a431a484879b350cac898
+eafad5db454a824e12772bbeafbf578c638580267c83e4cebdc362b7aaa5aff3
+f8387dd8b9835f76845e71e582310ba1c5399630a3cbd680386f37c2700030e9
+31cb03a45deaa3f4caa7df1c6294d0b2bdcda52d68016d1b3b3735269d327205
+68b6087ad1e3c935cdc24da01e80b4bc72f4f4d85d9778c5286460d79e0352ed
+551ecaae214fdb14f056f2c0a1e16ac1b8825b3dd320843c263cc29d68900140
+59f253486c31b3222d9d3a12376a31d68008d16ab104de61e206dd04859dbabb
+53153c9c85426d1a5dd569ef4c4f74bc4457298cfc86abbb9132e4f942a2cbec
+786aef3089f0ee702b9d98565fad94140eb96c8a738b5cd5fc90f498cf6ee287
+ec48b4d41f99568f27b66cd986fef7a2477b0f0363331512a7dae9bad46fc410
+e14169dcecfb52bd736c9925eedf51409079fdb9c56f71c06475f0185bc6007c
+d5335df0bc97824772ae3bf245c4bd9f392029e735f1ecb6b2f3f42f277a9255
+87cc1ec52e1c01193eea4404f852644ab24a5a896c54eb0031f39444e5eaa785
+fecf98f783360956dac87641512f3f85ef090d2eaafdde6a6f6c0f1ab93dd79f
+11efff9ae48a391ec01d3db42112e4679cbe3118e4f015f486829ca4a4d87fc5
+e82ad70235189d864081f10964513e4aa4e42939f54687585ab1f31a23368e5e
+4ef830ffc383038b4cc5cdeab206470c785658c7fd8cdadd5c4eb1a3f2aa4eaf
+623af46b6e1d1a8ab929c76439d6132f38ae26eb4c1362c40986fa999d27b597
+3d5684f5a81b88fd828139025bca8ff3aa6351a047bee62da9aad62b54943d6e
+cfd509ab5db519fdcf216f870a2f49f694a592d1da3cba5df14cc4975abcd093
+d5baf5d83a281ebc795aad8ba1665f1701d17b9c7c671973187a7c4b885103d2
+ac1772bf043758e05b03211b7f8e4dda59ecd3ec2160809535bf70b10525a72d
+946f6927708ce797f74615b997b38fb5bd55abfb6dd325008fb25734864ef763
+3e2d931aca8ebea7cf350824ffe1388ca38498046efbdef32b3ef859a503035e
+4da87e2c6ebf56bbbad2d962740a85335c3389b71ae98b2d44c0c99d8cc50ccc
+fdf3b0420a4d62d6fd40456d7c5eee32bb541241dea5dadbb30b75ea63e0e381
+003237781093d7773d59a8f09789eaadb9087cfa68d6ae26ac07ddee3dd14093
+cc88547f545ab711e45fa28d36619d9168d599fb27cc2ff48db1d19afddcc161
+15eb0decb40152f525c922a4122fab8be7864bb5ec6e272ec453df2b985059aa
+1ef6b413964679ee9811571a31f1318ded6e7007961767fefaefa9279c3f4951
+a4da6849fa80ccfd0f940be7fac51bfcb93746346e2822345d4af8c8b1a00c5c
+aa7ea5a48f6c84f6460ace0afee414b3c5bcda8eff7c1ca5c9609a11c3e2daa1
+fdf15648d6ee5b924081cd337b69e736cf8b5692c078dfc06d498d4ea2a83311
+2ba0d9f74f1a8a5e74d5840298b507069e9a6c92a3ac531e756a1b4428348138
+7acdce1882ca180f6b21e85f66e30ed5a829359fa8d4dd4340d517e13d4424c3
+848d48e7bdd17f7fd8cef929ccb0cc176d4843ec17b7ba2d3b3f90e3fcdd2db6
+dc7da02d5fa141865d2ff1a6558d304d8607261b497803e9604b9889d736a67b
+67230e39daf43d31c5b19bb4b79a2cc5791d45fa3deaa3f5ad630600606a7364
+82ef8b8cc9f770857e78a124e99dc310933d98f7a8d7eb2d9849f3474ec13d9b
+bd8453fb0c8c468f0e546835a9e97d1d9f0556c4ae1748d5c3b1b93b117a4ffa
+dd2b1f24d93ff2a2a20a1dcdb0372bd1083b252e44700e5872071ff928fdbcda
+24ca41ad15e1815642e742ce95b25fc3192a7b77a82efb8deb6c48692ce1a389
+6a60c76cc3ff8822bd142a5a617181c82b601cc4465a3d545b8a489646532f13
+3960c29c471a07d76cadf0367e46ead9c431b879fe107164cfb0f5a7420547d7
+3f625bad921547858d740116938c48f3db13d4701e1c63cf610d4a6bf80df9ca
+adf9b1787ea179a3ac860b9c93f55889a494f348e555689b827d32851248dc18
+1c1010fc9b7930798dc4d0e8a71089663f5d99fe975b8778c50b14fe492613be
+f7c024b3d5bf04ed9cafa76c277b9c5e3eee67e85b4acdef70a5ad5460533472
+1a55161303df32d874516a965501e04e7c5c7c106f2531d0a18d4cbf91f7f553
+0a660ded4c6c065d988938070353653d990ea24978dba7870ab0c79752a650e6
+4785bba1325cfdc6e1c1d8e38b15f7db3fd2208ab9e58359e487ee1bac2e8cfa
+afa455d46841efe2aaa228ce3cb52e0d1ae1aef09c5f4bc63baa4aa70c949f01
+dd1a2901267a635b216d8d051db56f615d5cab51841a2a27d85551862eb39ae8
+4b5e60609cddca74c393ecedc9f7790ce70449b4aa56fd71a6c6c8dcbf228ad3
+01e77a560b0f5ada3dd5314b1fb045ac224ce289ea5129eeccc7afef6d703fea
+12f53b2e405eedcccabef58b4cd8c640cf98a95e2e3aaff2b4053ff69bebbfe2
+3d761f0006796d148f5f4eaf435cb4999cc1139e72f1267534287dff11a743eb
+d0d0ae537ef1c3111e5146528f558e61890125f20962fd78b83a68cd5f755dc7
+e730e1839c35c9523fcee6b2281a88a2c4e5ae3277541b31efa065d2ea9ffeb3
+92b609e9772b96b3866f65b1010082734376b876854550884d645767ea43c8b5
+31d0d9a8bb76b1d09ab23e114bed0a3b30e76dcd3a42b28a82cf2b0a419d5e28
+cef4f864e980b4d6669474b68a2b5dbf0a6ba8d79d6b0135a8f09a938fc01a00
+9901d2f91121f7cdb575834417480074853fbfb7db98415758f174555f6454dc
+560d776f53d33fb006b3de9b991a0b85f43ef75a6a83bdb6f4d85929d98c1b62
+20
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 174 /alpha put
+dup 175 /beta put
+dup 176 /gamma put
+dup 177 /delta put
+dup 178 /epsilon1 put
+dup 179 /zeta put
+dup 180 /eta put
+dup 184 /lambda put
+dup 186 /nu put
+dup 189 /rho put
+dup 190 /sigma put
+dup 191 /tau put
+dup 58 /period put
+dup 59 /comma put
+dup 60 /less put
+dup 61 /slash put
+dup 62 /greater put
+dup 64 /partialdiff put
+dup 65 /A put
+dup 67 /C put
+dup 70 /F put
+dup 71 /G put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 85 /U put
+dup 87 /W put
+dup 96 /lscript put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+/UniqueXX 5087385 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930da4f8d58abefd45db119b10eb409dd89792
+3c6e705479464a4b310b58348c4b42393988fef4925cf984423aaf65fea9f0e6
+4629953bcf50b919d968d99bd185f83112b2759cc411764e9bde677f57c5ee5a
+c555448d5f81a16259ded1e11bf4119d53e8ab07a802df900d3a2d5ccc1c6876
+d29c5e9effb7af3ef83400b0910c07873a8c56fa7b1eb1ba426043b00cc95dbe
+dc6e136cbbbcb3f67509964f9f281ebf81fe5b018122eaf66c4a838487e82e18
+6e006093042848a903efb3469ab6b4049767aadb95c30408dfd58d8a10f4cb22
+168decd9f3ee100f07b49aa44c92139b669cc312ba20192454eb2375be6284b0
+26659d964b96ae82d4942e758027fcf23c25ed01115af27ce7f20efe2a822bb6
+84004f20243a49c9e93301fc21b80815c033c3e2ba58ef53da2157d524b395f2
+b37abca13bc6a2f42e824ab7e47106176b0d6db267fbb795ac7425582df2e3dc
+55863468a9200742bd7b552c48f8cf58bc21343bd3b95abfa140f33f37c6f3f7
+8b0d8a5154eb7c1f62ec598267f13e841a3e64172663935ac8b665d86540d316
+ddece329c008049c5e74b27d59022c5515059bc3b89370b1bc6a169c888bb325
+e0b74282d6f053a50da4024ed1e433271a32ab8c17d41c632b41cf9f3ecd5fe1
+24daf7aea7ce8a63047b245822930d517df7baaafa69d2d17f7d93cebd47deb8
+5405d720de0bb4dcae731a8e27bdbb6e6be38d168b7daff815acfc32ce367374
+bf9fd98c0ae5ba1bccdb84d94b5c173abc92f7d18e19a68f64a2241a0a163910
+8dc46b8a04ead17662b7bbff3d3d9a95d5937698573bfac64973dc8d8b8d9f68
+c52d0c133119eca4fae72f7553d276c817003234a98337d7c037c0f1bce8a804
+57113bcd97515c002d20f836fa086a3277727873ec2b64a92bedb01193491134
+b6692a08de4a201a3f11dbe070d797f7629ad487d2b8dbf89a0631956c93864a
+43b5aa034d4927064d5b2f7e4f371223956f18df50ed2836ce87195686e14282
+981c2fd2571b95252d277aeba07aa9cf4510fac3bd238722233ff16d3a01221a
+01ad59735e398febe1423c0f2f98e473b846fa12a320abdeb47df15f64ef4819
+29eadefd43cf74cc41049321d061003b629c8c0f29bf81d82dfed7c4ead9bf94
+a63f58687479adc14a75b6ba128537e73b928393667a1a4ea6c13f253e313062
+2b3cf7ec2a295a3cbd6236dcf2359677ba1da492de658d74cd972f06c623e07d
+2fe6d4eb9390261ac4fceff1c45ad9a954727993a822b5567620937f78b429a4
+3819caf2549da1cc534c1f73d82096abbd9b5c6bbd79b85f493bbabbce470046
+524803701dcbd0e64db6dea924d384372d0055158c3a626b86981acb8410063e
+b530036a223e861d162aa911bcbd090bbbec002a24f74725cd8cc20df1047d7a
+f3fa5eb42bec2d89ac8e5fbd99269a2061e5115d5abad4c4a92f3073b79073bd
+210b2d31e873678890438f33dd418b38f5c6acf365df07b669ddc229bc29ad49
+8b0838821ba59d0ea4a2dc46a678d0fd379b4861dec27dcb5fd91be5bf68b1fc
+e26a0b2cf69ec169375d4a19a371c3b3f5e2f80d83593957fb6cd6f93a34ff0f
+cb28be988c1921310d4640c60838bdfe00d613d27a6076a5fc9fa6b5e40d0b71
+6f13e6aca280126d512e977eb095d9175ccebedef55f97d65a5ffe8887221058
+2516a2a9e237157232725b0c53ead77ca7bf8475525bbe16edfe1f1ee3041d37
+4c4c5697e9e44b245e09478bcbd80aff33be6993859de0b60055d3c20ec4afdf
+c555b96469b51937bb77ce913caa9987c3f5e23e756be232e9b26e9e2b63cc04
+776e9efb7ea11d0a9140d8e4c94f1823c505ba0e63fcd9b7fb080fc95ef9253f
+e900e6106eb2cc6cd4b8df02240dedb00779bfa6ca0202cf54e391aeb61a00e1
+bb27c62c9c77523a5fae37bc829fa68a9ea090e760f48aeeaa114cf07fba230f
+53f9b6ce5a0c5aad384e269f38acadb331e01a668c2f719a5f1a4ca289730705
+dda33b9b94a52028164eb3e34fce2eaf4be3bd3a885e03cdef4b5ce0df1c905c
+1ac716c675bada18a6a2db10756132a75c46c9389077a55965eb074c7654a3e9
+00239c47d04b467bb0d56bf8df1295ea2c54be657b7740706448053fc75590d2
+548b79697f7da7db7afa7b44e049e935475dd09288c3ef3869c3d4e0cd25a648
+f630b9c913ff6019d80283985b79ded9af77714fc15601fc0df38b3f71b8b3cf
+a577588a88059da396f399e0bf768d0e2f1f915113637c709c595e785cad89df
+1cdf3b1407272bac9027bd0d03f3bb05eaf128436559c65ee8b954c6205a0a3e
+668e3c86e5270f229ec504607643177d5e84c81b41e2f20016f364aea9b6831c
+695805399a2efbc0094f93712b0d09c69fe43c3f6af252f77fee15a8688a99ca
+79335e29aafbdd4431a40233d99696ade36dab72c9feebbaed369c10e1175881
+c500de44958e04f54d7b8b92a04855aa37bd8e2ce92c31d420c596c6becc7fed
+bdc394bf4ebae169d84762982cd9f7b6f1c7d8915b132aceaa23e5d16e9dcc77
+5ffe1cd5cf29d2ac8656b3b69fe024a87d46700f1fcbd228b74f32e5428d99a1
+baca354429f14b44350977cdfcb79818d38ffee975d5fe5b61fc9f9f6932632e
+58f5cfb91aa0609beb4ad1ffcbec94392c09597d70bacbb0e977490387e2cd3a
+3751ed55c575b044856870a601568190ee28e9e048fefab5dcca34cefdf4310b
+c703591caae541dcd0073a3c5a24837bbd8d1259b30145f34b0f3cae557cba8e
+15f0e28706919c18ead6f8137124c6847dd81957336a83b6b40eb0e64d9f8b7b
+07e1efb71bd7e691c5ea24d4d2ad5916df52ee7a0528f5828f323d9f26db3727
+401e779b0abf7fcdccd090d1a34e24a5802f84f40db0468f4885c198bc9e01d0
+82912f306a2b5711b7e771c771eeb5aa4ca98755512a27ba8e240d501f70adb7
+5eebc21211b9f32c2bb3c481a7481be0ca78b1b85137453f4e4027ddf8524992
+45f596e12dac331c2bed7674f9ee667d5e2e8b3fe0ba869f8d4f1717e928fde1
+c44ff16e6a8cc12d4a89b9d70b45236ad793db46017901df379f0ef13dac8109
+04f67480b5afd88a9bdb40bc8c1520664058da590448d8662639fcb253101d58
+5d32bba35d2cb914086493b3eec6466eee84a816e60df0bbcfe7983b582b9017
+80983a89eb02cd54238e27dca2f58019a5de7725882677b5760af63b192241ee
+69bda00d5674285472a2fe66eb85b124274856dc09fd32cc86723f3794b9a59a
+ffbc051609f5a720685033478f1075d0a65281d68252670e2f82bab822366f77
+8783b409e56885a4c56b684d1279a88693eff8c3f56ef3e6c01759d45d085452
+4646b9da54a45e401068f55d6265e7f400d58f48424767390a4f7ac551f7ba31
+45a40bb75966c448d3a680d5a981dac3c6014d45b7becd86e37fadf4b44125f6
+c0427d1498c9c13a6c0778bfd006e16b1c52f40c89b2775eb5f090945dacb803
+2d91bc14d29e1e9ec373350c232c9612534a33abc04750282fee09ce9017f9af
+1cc61a92a382369a84a5186fef33edb5658a7bc84e1866428b9fdd41033e3c55
+970ac0cf0de400f17d3004415f61260202f5b8246555a29aa5a9428358e3bdd7
+3d2735a7274f8dba8e87d4ed595daf34c24e0d22c5eec90d90d8b841c7483282
+602d888ea721e97643a6b36e56b4ee403730d740dcb55c919bbddcca44cc1e18
+be4d34abffa23f7f75effa2c724de393d671b1d380bce3c98704827b14e8d82c
+1f942ff4fc9952787620151c5699027fbd5464279db18fb43621f05a5b11affd
+983d424604c89bac00f454959018973c179242ca2c90ba3de0ca5bbc1548b120
+62fa39166a8694b4e911ff884c72cfcb409c259bb991f465c24d8014b37affb9
+27f677ec0c2d1a859e8c64266dfa7ca720351db1478c5f0e63e6d32073f9bd43
+482416cfb2329051b0aa0d4e281378ab81f0878f3ec25c8cda019e66e78013bd
+35e35876f61fa622ce396eef4e4a3c2d1fef0aa01e55fa9d517cb1b11a7229b3
+43f7e060fbb7a8e77581017abd730ae481550737bb9f7daed46ebdc6fd530a3c
+53fd5c1d31dcadc510ec9716b984a78cbe1e0cd5a4e263bc0a74de1a048ac8fb
+17a02156bcf7a632ec98285a3f857ccba4134186dc145f4e737eb65b5f9a7c08
+6bbf1cf4ad8d142adce016b92fa764afcea5c8c7d37073ceda482a2af1962c68
+427e17141cf9d04a160fe2a606fb60995eae751bf55ba1812b2cb984530d93b9
+bdee12fb7d8536d8d8f7e31ea8eee907585d7df272cfbfda1824f5279b0f0921
+4de33737faf8e208a68265cebbe96c1849d36c73381eaf05558276d14a97ba9d
+4cefcc60a6a987b5abdab06c09701e30a34da7ee4a304dee8e58570d4389899f
+d9e7ea55d7591ea176d7ab0320c2dd7016cd1d0e2f01fc4606dbe8dec64e899d
+a95fd44fa38d083a8db643ecd41ef9a5e7c5e19cf522ee151c64e76a11430b1d
+057ada422137788ab2ba099c44d0883880c143c3207c16d2cf8d60c48e5e6a84
+634ae28686f35d28f316a2fc16c4b33c4c70f7d1b42c30f894b8ce9f83b4cc38
+0db8ec23c47e53dec4423e7a93ffbb21b7834599dd03313faae1946a81bcc95d
+e7a407dc122ed5739c93d5a2505dac60eaacd5c4f01521d15989c976f898b1f7
+806269362ca317c7a87d9de1db273a96c91ec9c3ccd3567eecdfc808f9caaf2a
+11b28c91c13c0ee13fbb1e5fd51ae4213c889b987312d399bffdec9916aa57f9
+f143cd872689b15cd0b63f72cdd17a2111d82e22722f2a8339eca28a80f6d526
+bd9d13dc12094c413e7a709fd9ebaa164be46e7e7880f26cfed20b82ba155d7b
+45a37880cb5dcd587231fea1639d356ae47144f504bd53e453dbb520eb0311fa
+e46b3c337fd72bffd427cfdfaceabca1c8e4f7f332f863e0eb44f2d1b74f610a
+23a3223a02ec02515b9820abbd1a9f675f57a57b6160c6c6747ca26ef068e16c
+25b6cb5cbee490f8d48db5abc9a25fc6ec98c24e88ebbf0ab2cc9eb72acf8dab
+a9a91cc1e3b37f73577a119cac41525682f33e6f0ad168f9b664f51785ca6f4e
+5d5fdec0debea0c5185d55b0e01e36faf1bb9f5a006a19f15f8138f1d7933d01
+ce794c6d127a6b345d14c809353f268b26c29988262ce51b27afa2cf3794694c
+7b64db29ade16bc39b3e11866d480ee38db011040d45c48513e25fb4fbf627ff
+7465c2e6aea5c467b0ebedda1352cdb6355a3044b29d7cd313dcb671afa8a501
+94bbc2cd2e0e915cfb0d190079cadc548fba75f3ac2a41f9bb39b2f097985bb6
+6825d846e771187ed238f377a823b0fc933da18110f9d367ed415c31c188ac8b
+246947f8b84d54f25414306baa8c182911861076b18410c327aa7d5e6018f81a
+00f36cbb11e6e49d563c93487e5b53eec7b9283ce118680f6206634f0c3fad38
+f3f44b71e99678366ca4dfeb5bbe1028ded7cef65be02739708ee0dc02dc554e
+d0fd0dfde69ce8cba1ba0d98a3e3567c2a58fa55045fbf60a81e785405b2ffc0
+7f55aff247bd893650a4626bb10e99b5e004f103c67b341d5801d4b1e14fa716
+b25b504e94bf8c4e14519366700ce94946b6fc05d342e9b42d0d8f975bd6a7bd
+fb084cee628903217e5c559081e92d55a7360f6815f36677aa5982c0500547c7
+351f71d30f228caff2f4df653461c367e17fd7657b7a95a47126ae61d136d388
+6bed7b7894ea9c26bbeaa9d5d02de248a9a4bf08ac221c7fd1b8c193e0249aa8
+504f664e07545cc0ff372d5f2d509a376c03609069c93bbf0a55dc42b29d4b98
+d931e762648f8bb22f4751cd248c0e59cc8cde8a0279ce29197b169347f99d7d
+1cda283b0ddee4afe9d556d244a59b31702d53696cfb5568aa52a704d54e23c5
+a6dd98aa47b8f6cd485c851efa9d51fde9604d59b2d75d64cf8243d479f03e3f
+1a96fa3f09ec3b471aa98c9701ae84012ad850e8696eb0f7c014294b35e722d1
+d150cd81190a71be77e06232b54e3de395440cc3c5bff59df90a2f0032a63bd3
+b1021f9b3976678ab2545665e96a8455c5347e1aacae1c09c073d9307bc75339
+c2d4f6bb85c92a90b8bdeafafcde93224432fd7d08a8e2b474b706f3286830c4
+e8a302935e8f2eaa674a080a7d05c3023d92a42237f81b810d78a7d8cf4283b3
+c77bb2a3f85e51e80ec09ef64d9a099ccdbd99a1b6fdda774a753585a18fe2f2
+2c823cb63cc65aa4998975069592492e2d7f903e51395284f11db8cdb41b8149
+28e59086789e7c7cbc7e74a5e6744c9aca8320d33a502648669ad377efc70c69
+4ffa6fb595fdc69210ee44aeb4cfb6d4234cf2dab985e786aff41f1fa1c83f76
+b33dd850bb9b55f5f81f3413e91ddae6c503981d7062af5d05a477edf12e9b73
+be27ab6501b435dc6925ef3cc893f42b99b8f6b2bd4488ac2e27d25d88859cfe
+ba66b1477ac516ac206493611dba5e43d4054304916cde13b8c58edf3b6e5fca
+c50786a0a068df8bbe4c5934dc3db69b273e00a3d82fb48fdbd654a9e89eafe3
+594a8a042d004d0e97f5e4b0834b29be3c1a2de701a341c7fc9b3e873bdcb3e8
+b9b18ee87cc49170b02cb4e994cdeaac1952aab6095924f61123148fb090fb07
+191b2ec041a38c13c01c89b3be7888c6963e3d4859e700ba3aca640c42608f20
+e0909c11a1aa91ad097a41686dd6f101a73892c617f488e5b40104048c1aa4cd
+bdb9df5c0e7ebb15c981b7164f3bf096b2009f33459b2c6bfb5b7ff19b5c1c7c
+e3f906082ce2fe935bec2b126217c3ab751ab65a2ee9da55e09e448bb484983f
+59c380ecafc5a741736f07ae0293e161bb1188ba1917c8a4308d649bf724d820
+1ef38f4425f1391267febd87e6bfbd94a00eab32a195164334ffc045584a92eb
+f7a9f9c9d8e9c6eba182af98e7e21ffa7afde5ea8899ff9f4411fbe158dcd31d
+bba0b78b6629bf60be41b2329a6a9243b362363543f06dc6c9ed455d37f2e597
+1fc42eb3eb27675ccda00657a5c8fb575e65938823e5a6f69d8e6f205560d450
+be7556e9d4793a7c332ae1df97b6902f2cd772df50e48e5db5d8cd5c5c10a803
+e301cf6703e4e926c7e416aeaf6f32b6fedd2dbddfc7a5c47f9031715d7c7a51
+d6af24c7bd2af96a1b9c1f65dc5abf9e1266ef129f9ef999ee98c100701e6fd5
+f63bb4f004a405e2122bce91cba1a254de1be94db6b6e2a3ba06f364645858a0
+6cbdd6abea778127aa75c1516b80f4d5f199fa817378a98fc81441d53b58f79d
+b5efa5fbb91c88138267780fc414aa947247a8cc5d2a24a7d442803008bb2096
+8e954ae53a4d933036de7c232b2567caadda124920d78520e96c52b8393264c2
+625182de872a00e3cf3d68a9ecfca397f1464c3d4ed7b3c8a43e1c283f620871
+cdee82ba899e251356d0e354a6451c7aced5ab73201f6d6770fb40f552f40541
+9bd510b167eda0f0e3a6b8a1bcea256a3c9ba6d490f29e9f0179eb0c6e9357d2
+ce1b4fe28ab878de7a0aac4a69a0e40948546e4ceebf7a67ce228314a36e3efe
+8be72534ca312ab1babeab0ffdb08eb6a3c02aa2c6dcaae39962c05d44f45dd6
+6c177c0f85d75d943b04d15a558b0b2bdd84a9d1aefceb1fcf8ec2e84ec4e22d
+15465cc8ff5e2f85950b5fcb544c9cf547986e403b6d6fd67a6c4919ef3f84cb
+2d4d725269235014a595613629aea4fa896b1334bedee00dbd47619a4f010a79
+c24de0224349e3bcaf32f7349399c2e5159aaf4ad2b665b86d9260e852cd55da
+50c5c20e6041be3aa63ac5d25b9f7da4291c34df4adfb3f33f795eae774fccc6
+72535c61d273788489fc2fbaf8df062d5e74ce9cca78e73cb21522d35617a1ff
+9171bfa935a28a9b80f480a9eef734f01abf2f09cdfa709da68c3a4889c8509b
+820bfbbfc8f2bcaedfdf465132fee5a1bfbd0d108a3a4c2bad89100ca053c652
+d0676cd6f235a7eea702bf3c261c95202cb918d0b4968f879435c1caa4d0e19d
+87e191c0a2cf5cdda650265e5b8d84b5d14c7262e54ca1545c1ef88c0834b138
+fac846dc6d9c0e101a88ec8f56fd272edb7fb4b0d688077474b08f2fa7d93d0c
+fe8a5b983732e575104930726e783951b33a99f9ff0a77fbfed44ca3379e0d7e
+45ac41b13b441988ca769f047dfd28203f43f354aea9d2fac90360ba114df1ea
+0f8a00f9d58efe9022f990627f199315fb2fafd9672b3232c86dab3e17993a60
+119ac7ae2967b4b532246c1848509c7199a144b96bb8ef7de43d26277b1260d2
+1fe6452619bd4d5495f6f48c3a657abc1cc2d418750c38001ac4bbb65a372457
+c8a0364477be0b10f3902ba2c53e5c0dcef7206b6e8ad9ffa38f44d83c195f82
+fca3417cc944ca4308f41a33f01ffa3f53cf68a2a81009517bfed2f60b4688f4
+25f9d6fa72e31c215bb39bc708398007b3c949569a4c94ef8d69c9ae5f0d9a3f
+f4d70d7d18a45f93d74cf0bed169a3e12d1b2ee64586563121559e4aa8bd0a86
+309113b472178600e65f245757f5c170660c71f121c36c7073975a0afcecdd9e
+629a5a1b8b8922d71acae601bc742fb5229cf9afd1249212ae6ce953fdf1de66
+4eba6dbab1768d02e53f25bc99d34fedc1aeba71c0712865b3fea83ec1f90e8a
+0c4fc739e886852b387e300897840fa9d3f2e312d87c7ddba5a9f92c6848bb10
+5382214576ece6dbd52d512c6d677a8f060f4e12126510284589bcfa16d0ccca
+f7798f8641389aec5b460bcd1f906d922b87e6f3dff2f42111d8c39020c8c32d
+9646b9f642335959a55dd6f1bbbd87b64ce7ef03299a1a40b8d4a337ee1b5ea2
+6ec6f36c6439c4c83f92c99010fc8ebbaa1d437bea1741579f72d53a4f86d5ef
+64a72409b224df1b20941525fc69c9d404ee78be12b3ee0ced88b296663f82a8
+0004abd5bed13afdbe8f9dd88c047fc698a7a8324ec8df3bfcf242d53b2bdb4a
+e74e406bdb6e71f0657a3c7eb1a8074ccdec34f4a39ccfff5ee1b6f79ce9a0cf
+abf3b329e82a3f50a6185c84d8ac79dcc32f7c3efef513582102727d7e14023f
+c7f245494f7425ce9ee1809f8761b0311369530034a42e0334e38b035050e18d
+2340406bd3cd4af9ffd0b744a2ffbb2d0051b963ee2cf3fb0cb04b57a7463459
+00e02c3e02ef7d0f8fb875862e4d5746a90453146c1813d0df5b0c6c30bae124
+6b15f2fc2fb1e8d29cbd4e45c834f5b4cc721fb9d0c77a6cb9382ccd49887f32
+27ef81b59380036e523ef1e9aa8a044c58771f733389d3e006ee748807df9105
+d9cbe682dd7369a02b9d5e8e7f0d28ceb6d17d2000692c915a1df4fbbb883c84
+323bdd33b1c079d31f1233bc1ebb991e22c5da49e1013c5a324070325529a3ea
+9daedee7545edca4daaf9d732cc327e91f5e08fa78a383fbc1270b9dba28b90d
+9577ebe8b1af8b0d28fea6c6ef97b77d487c30ca8857a9c2223ff4d5b46c3817
+fa86098d5c295fe8843ac40bf99ce6e6091b7e063c5398861cb147f86ccb0e9a
+5fc1f52741be1c6d9bd2088b6d19ee40e3d33374fad2d5762cd4ffe2db759ef4
+4c5e9c1a55600ec59795e961f97be00864ca099797e814bb4fce34e8d712af7c
+f1a86e49e1e71355bc9e2bea70819bd8eb3d2cf30358c4897cf1ea2a75c891c3
+40178ca6ba549712633f70929605127fb6dbd18f22a84b759be3ef370f452f22
+a6a9f3942604d1703eff6b6d8f442c25d5ff3d15a5cb4cbe368c50ad91556d07
+fa7e33fb121f44c67beb79b348efd642e782f2f197e9f810d4d9412f2231482d
+08322eb161802df8e3a0e17e996777e4c6b5372393c42e3b4b11ac77887e2b71
+4b2095ccd139454a9cff336a98ea924866d67dcb95fc17fabe3020757405f4e1
+02b145b066d029b7736a5d54b257e5fdf2115284e792de8b46a5219965794c7c
+14f45b878f5b621f4efc6b43f64d00aa9021e03a2f118325c84e3d6056fbd713
+9a5a141d03597508fc7012b5bcf69dd7def06497413d70c3e6bc975181d1a1d2
+9782c733feca884d8cedc3c1dd0ca518a06217c7187926080659ddba9d4ebd45
+a6abc029f4b2ab8e13096158303daa6b0670ad48d36398b13179b5bbfd0aefd8
+3f2d1fb4ca23737f3d207ca44d8074e6ed15a0b783fcc245082e50fddc740b63
+73d8eb23447995eccb2ba7651280c7fdf968bdb737fbe2a5ec43e686909bc52d
+4accee85a67c5ab7170af54eec9c344d6957db5ee7a7b8f80e970105d27f83ef
+99ad7d66456dd860d8083ab7cbdec44cb577ecfca580ef682617675e05a60664
+60e275dce5e913e24ffc7561156952cfb0cef79b002fd985a26f1210ec4075fe
+1d72fa53177a984b174c9ca4f3eb0a34648b2059f610ebc8c36835125217c0e0
+e17955e82a8d4e9ff53deb771c11c7f2410b46d3b545638892ab595412724c9b
+0c2b4d5d9e770013d2b17217cb5497792e13a38441a67963d01fa2618f8c6f7c
+fe078827b5766af8f83f30971d14698bfd95086ead9584c07993f3b15ea55b6e
+7afd05f584ad8df506e026f28b93700bf9aabbcbf5fe9c274012a257107b02d8
+559dff320b035f5506bab6d020dee111591b03fe56e3d1ff377a7af75ac8043a
+d62a06f1fdc743b82be7996a0d397cb644e37a1b9341a445134cb6a0edce8d78
+b0023bff4b35d33ae3345f658fa2fc7fcf210df5d2ca298feee52ffcbc726360
+4b4a54cdce075f7b49a3b76cb481e679f2e92fc525f6f86e0a9c08505bd5fc4e
+5e000dc2b7a3c14ce373fea9a752cc430e11882bee06636498cc4b467a735f09
+21ce26da11241e0c3fe1389d41a60b1446df4256464b00185ae80d690d8c092a
+d6acfe390afac3c04ce0cf91396edf6f7b5c8933890bd0ba95e5811bb35e306f
+e8ec993312b0499df06752ee56f7c7265ee69b1f6b82d1c894c228780e19fab6
+0c73d807b066d4402fb0f883b0c06e5b9c2ccf341f31a2d7cfd8dbbedf1fb3eb
+9fe293f36b2094baa78f5b4e68a1f45e1ecf3cd854e559b314620733dd169862
+a7cdc8b5c6502e9ab9069a4b7244d8b554aebe5fa6eed57c087c767bbe4f2011
+d17ce00d2eaa2af5abc754699630ca47296c726febb4f94774a41ac7b4f5169d
+5e8cca02834eb31884559a501315038a68b4070be2d9d24e4a7146e4f3d14c52
+4647a693606e7144aa9014eacb183d1239540198255701e220ea7536aff88142
+5ac8e44b91eed479c65ba9cd8c0cdf960f2da459b801ad3af521ac2335c14d0e
+6adc779851588375cf5c9f667b532ef396080514f14605961bd316ed43454511
+480b3104bc8e40dbeda1105dfe64288e97b37bc3dfbc28829473fb05fbd316e7
+5c7c90498869844f29596eeada0c4c3c0b6ab9269e6c90aacb652e455d5df1c8
+4e36493f4b40abd88998d80af2820f4eba254865a3d2df13ddcff43831e85b38
+238dd0e8680fe174565720144b58faaf202b987e3e289dc2695ee3bf97a4f8bb
+5ec30b0d024809b8e8c380df0c79e254b2decd201efd876c1d9cab5cdd20d9c2
+3d59ab86a18ffdc93c5cc7fe3bf85aab2259f28cacedd0c4fc621c2c17044991
+819b1d0de7c86d71eb1206eb2758e3f55b53163006ba872eb3a749f097700a49
+c26d6d503f9d466b3e07d1f399b8429a94598be9387b50ccda50f09da14e32c3
+206bdf8ad8fd0934e26d4635c5848d2102e7091fe7a8c60305bbb25ffde914de
+bcc02f18a17bc15e85c103eb830065ef26e79c656b4d68758db957b1591474db
+375e8e63638584d9c3ae8802e4c1e1c2159ecf596ddb2c565ec45352d4595505
+a6f41664802c84e91ae24da41b46f8336255fcc1359ce3ac37ae61f928f9acd6
+a4eb885c5b5e2bb356a710e25e48eed5f6bd3eb2864175717e35bbc0a83d0a17
+49b9c588237041736d2ec04ceab3c3898e93cffee11e35a4e92a98f00824d374
+9b83729e4378c7e399fef1a010d951de97fdc0feb80115ae8def802fa77d8bf8
+cde2b159d661218f8e9bd328b7570b09ad2ca9442230bbd262d13f677970fad9
+d7b2d04c2018a11d6cc947458a141f752d7303e93729d4cd56311724dafea37b
+5695153a7fe3e12c84dab9707cda6b7789806850d9464d71067b7e4853134b1c
+a00ff1d60263e6c8b2f81a7ef22fdded8ff551bf41768c7ab7893b2b0b721a9b
+59ea0f84519958d90f52eadb0420cdf71aed1136a75185c88ef5eb93e0b6a003
+255306695c9c686949170608631561055b62f8743a9b1a0020bc6fe0eabfca6c
+a0708edc4c9be578f9f3ebd26341095277b86bc5b37cea6817b2c702c73bbfe7
+d96e1e731ab4c76130d7ef293d3a871926010c171ca876cfc9fc6b199e8e699e
+2d6ccb5db482a935b8977cfa2c405e293f15ae778c795176ba7467691bdda9f5
+90cdb6cb765c692d4debe6dc3df90d4c0fd778b2e96cd744cfd86d3b4068df0d
+0177ca5c3f1a9fa9ead4620d3fbeb8df1d978a324d89e48a66f614947c4b67db
+60d8dfc0052942c7fdf052324b549f3a0bc2b5857eff547f7495b536cc37c3ca
+754a366ba3d1bea74ca85a9694ecea079ab3dea3e4ca7f5d77b1699640b72346
+a4219468185402986aebef94458d117209b4db816b514c9d9c13e91022fdb688
+8492dc66bdd837feabce84b684c460b88625dc379ed4d598b1a9a52c84520eb6
+08069268207b37c88bdc4bcb3a35ba32cac4c7ce18ef60b2a50525f804c422c2
+d907da1218f389755d2cc2fa804aec6fe8ba51410fe44b71452ec5824641e1ec
+ec0cb402b7ca1f77c3e72a338184f4b20ef4cae843ff10ae4a335949e8c9a095
+39e3fbceab686e718f6047bed83d22b331fd2e084d680e2d4eda0bfc433c3c57
+2ddc4f08599cfcf0aa282bb3edd0fe34b7ad43cbbed83050948f35fe09b84611
+12da76cbe9a7e7f0577c2373b114f50db5c4114af27521d2b0ba128c721f59cd
+69d0ba1bd79275e6e4870d9d7348969b12ad3872bcf7180d7ac168600e867375
+31c3cac401709d347ce308e7a67381f9d996afc50097e02b6ff921764e6f57f3
+1024f772942a6d15477b6d2f39056f4b8e4b0136c54bc8de2597ac9de212f5d2
+fb55ec63316bba3745f4e4bcf337b019b1c4748265b1b6a1581b10ad04b30216
+4eef14189729f321c3f4ec7bc17120f2f8f037879892d9802a2b79c3167a42a7
+ed26590cc7c9109a3eaa9ed9d3e66e044905104253358e525a08b1d951868a12
+607e2b6605d3a0955722acfccf4c271ec206cfd3a565146385c5fe260ba625d4
+e0939bd8e3e9921c7218a502b0d10701219420b43607c92a74b891494225931c
+04dbef022155fb4a4bfef0d210bbfffb8b6a1b972e38cf2be90889d0fd4f6a8a
+ef5b94500a4bb0aaaed2bcb7bdd35b1c324cf17f4f255612aef7b11401182e84
+be68947399a7b56e3673a30558b9d32fc829f1d03d55c8afaf361970b658ae35
+9bf526975b0371025ec2c4e0531b7f1119175567b1309aa4bfbe971d205d18db
+f27bb01ac3fa7c9a91f152108bfb363e06b737a2e950c54b4a5e60d6f8869bcf
+67a9f310794b4c7cb004b18889f72ddab2186b828d8e4710624c8e727c2ce686
+cfe23a4c2490b1e3f54a86871469f3d48f12ebc5da1afecc37a9e43b99469000
+dd01455c93eaaefdf4f909e0c93a5715382b3ffac289d22af5b0a9ad4a0ac656
+a1841068a3179fd89859f7ae95a11d432c19bd4f9f6b3a1f9fdaa1c9ddc0096c
+c8c691c66d6b915a5e536d8ee4097768056e75062b25029a088a4a1c7a687125
+ada534aec5cfd48a663e8977164690383535e232cb1dd716cd69b8375bac8275
+1e932e81b6298513fcf1b9d798c9965c43322c0e6ea84bdeb1d2cd9c7f7e4761
+9cf428c29029be66e4624b812092f93a678151e3b0aace86fadc37cbfc31eb84
+0b691277b0be77ac011edf2f64fa6595394da33021e0fc92d8326b9634f4d579
+c6a60176e100722043add22e9fcf10bcc04d0060cbade469dd1ebddad3808ad1
+fe19471129b1bb04991c9dde3913b974c61af62eb47d0ce19346f995bc894bdf
+5984f2afd88ce37f4c579554af528ac4208a6b967a9846911c0b2baec4b8f252
+d7362fa7755fddd74c1ffaaa7938a17757185950ddc388990a1b77e532fb0bf5
+28ef935519d09624f5e00ceebd1f0df890a5337ef1fba7d7ed9e061d8ca96601
+5a3e796ebfec7ffc63f7c169ee29108411d166ae5afe0363c2ef4a9685f62f9f
+496d3cf9a79a3ffb92051961ff24964c90ca293599513f173a4d7e1786669e28
+6245a3d45f3c6474f1123eb60118ca69aa20097b2f0b15be775da8d03ae3d07b
+466eefa1eee04ebadc3759f148cf9eb0edbdfb2babdadc08e65c5cbc0fddd0ba
+bc87c0a155a450258b0815561546fc37cd4d1da2e161b4fec7e99262bfd5859e
+21f5dd9e902cd0c9417b96662cf2fe9496d95ad92b748170142e48eb11816ff5
+f890071ffdf4d1e11a6a70e2eb923e76bd523ce94d1f01115a2dbc31377dbe46
+eafe79502d993f4c2a9369153933ed2f97648ede12d4fbbb6a528bf8043ab87b
+1b28625da66094ee5a4be90eeaf7609d8659682cab779d08bf315a352c7ee84e
+5c2c3e3ed3cf62f1fc1a9ecac50546801b77132360865e0d78ebdb7ae9a1e813
+9b103a5de46b3081d38eafc1a2c43c2e42d27a840539b49a7c8003d988f46fd8
+7d4c40b40576ffbb055cebf9fe0495b577a098293bcccf2580df03fca819c3ab
+a8220beb3d7e75633a548e4ff8bd44da891a5d39fee83c02c0a3b72782f468d2
+77814c9eb112c6e7b19f356fe7f97aad1b1da530040e9b7ca5ee22487a59335c
+d1a96a87478f1da0839276e7b4ef1f7c4d565d809c67d795a43e686e16948d0c
+cb0ef87508c1029c5a7474cb5f8094920b4a09789f5e18fd31fd526fd8931e23
+0b3d60de7d725c5518e935a7ff5642af0764b8c3e26fafd17252728452668284
+7cbca3cf0768362fdab9c58417ddaead635931c4cd00c512fb64c68deecb038f
+3a59cb410c02ba6743965426b2cb8bfc7e10275830970c533f7da68a92b8c43b
+2fd526c2803343df4887b53233080ae5d57c703c6df89c6bc70ad13557bf5c15
+c4106216202e2be95e8a443a91eab7294e18f07db9b9b1930cab03d03aabeb2f
+79e08faf24f5a7c6f3b78c2309066604460303a05d5cc9a2d366fa038541c1b3
+0f27f784f0d807d3650cc5afa7a6efe4f26ea0861973a64a3b8f500a6f40c33d
+1b849e898a302ae7f6c3dce2e68b3c2c7ff851e0d91877406e294e88c9e0579b
+d83c169ff48dfe1da5808f5234a6718616976538c3ba2cc00ca662c99f90ccaf
+1c7490d09219ebf7f7a7dc56b5ab775d1722277696f59d7c805bfaeff2936369
+ac70f9ed14d346bb7d4ada80a7e9dd11032d540e1b0a877f478b649903b70f17
+d8c407d9af49421c3de55530811b63f7e4ac016a7271ad9f59286d36d4e2348f
+7e9c9df346e30464180951a53e007326a5abc12c02d9d6649d8b632af554fb9a
+7506e28ec4f953cbea962ba8449fc5e48301698b82733f6af2b9f2e5325fcc5a
+c3107efe92c519c8717bbb59d1b6db60f5a413a52cfea792e9d5fa2e2110e1ef
+1c02d74124dbd49468fc85b9159731ff66bcd9eed96668bf3c6a67971c59a838
+785e371f2fc9781190ca90d9de9edb639ada759beb8b482e26fb5dea20eacf14
+7cca8c429c0b4f677dc31073e816cf4badabcf1547a5a17edb2190bd1f672715
+8836e8283579339c938e33ba78df6eeb4709cfab16652570eac7dedecb84e97e
+b2ede5e8254a7e532ff3e946fe6727d40332e4c538ca28f1cfb40542e37dc6cb
+984e9b0482195ccf4aec64956fab2976733167c07a3e82f7ae187e041dc279db
+5e08d675297aeda9da07fd6e3d6e923778e5917af8f0a1f455d02dbb33cac7d7
+222d14b889bb2fcba6713c6f04b6ea09f4b2971c22b48585c075c558d5f80016
+910304c9ee74a4b11cbc1fcb08a4da3565d04360068800f084dc130af04cf6e9
+2d9b541256435a2d69f8b5507347e594ad26ca118eec313157c8ce00e2ac9803
+a52220703dce2aa58b5be5c973c3ff8b9d8ebb86982f28e3be0ca7e706968d38
+2296b5b028aa9bd29b1259c1a418ceda1fc9285f60ff1aec177f9348ec25aae2
+8905263313514f7d00d9f1fed69cc1753bd5baaadfe7d3a8dded28bf67e12cb8
+bec7b0e657528c0049fd90845da07c541d56f7b368e722dc2d40e02452d390f4
+36c2d5a593665a3ac48c5afde2518fee6680be9d50d555b17dd4321d7c74db27
+e4024f6d743872454e13568b3b290db9503143350ae15ab7869751fcd1287e15
+90f056170a2de8f992fcca9a8f79de7f82ccaeb1243ed2960d17f0e636a6bf5e
+9988d56c347dc44fc57403cce284cc13cd34bc14a8ab816876f4ef1faa80961c
+797dd74c94a746870a8b6e0c2905b300fcdfc349a4bc49b424d5d19844af0ff2
+897b77b1a22883b8ff54309b1fd627505cdb4e0ad49cf5c0c92e564268bd2f5c
+4caf5a3d7298bab7b270bbd362481d920e9f0505a0ada76eefb6531e64c779f7
+60b009be0b7d3dbf8227ade93cdaeaa7cd02777a28f96dc2626477d83f0fceed
+85e8e8deca327bd6c47c3219ec96c0440384c41f32f13a003face7a5fff2ce73
+7ba7863526afdb49e8d39d723c2bbfac37cc2b8a64fbdfd84095d54300d7ba09
+7d9e4960634fc33a4ff9a19e5f649ccd436a80dd2d1b340ba4a4fa5965ed88a6
+3c02d2d54d2bde4f1a26bf777fa93e3e3f811e4f5d0a6db01899954c192018ae
+b7323356f5cb2523c08e4ccf4beb49f8e0b832c0c85656ec7fb4dab628e1f84c
+f87f5684524ec9f7ee5d4d50127168e83c2cf1d967fd6048a6addc1f078f240e
+f5ea6b57b542c8c9103b469862a7f4047db26b8b14992058a920f0cab985b155
+a051bc7f4af411737ae3349fb4009fe8bd341682816721590de989ce53589fd3
+c95366b1870307b7c489f429012741cbeca471d37f18f263b9c5898ff6d74bd7
+d1ee984d13b5a9eda0e6202ac9702b3da479db346d011f0ae0fb72bd2b7993d7
+18ab2a4d88d567848112f6a4db8fb33efad28f31b19d0fec48ee9d00f7170a2e
+b70746361ed95df9cad0953dafb6647603579ccef8286c51ca0aa2111deb9a28
+8a23140ed9fcdd03b10d0cc330d864be7da9a0ea536adb75cc22b95e148c465b
+c22e40ac44ec8ef708edd0668298fe832bf03119fe8e70808005b21f06c60de9
+4c8404cb9563c9db8c85e642d955a678d3f8c80580ba37ee5c3848382b8945d1
+b2cc685de1d32a2b8ed09191842ce1806966543d7e6f7398e9d0b35d2685d3ac
+8ec08514172a41c639bbf1b8eef01af41fe2f65dfdd14e95a0c8466409345b47
+d9560e76ec27f79524ad9d494fb1cf28dde22e5b9be07977909b16944d58cc42
+88d062dd2091869991c21aeca6cf4cf180d43bbcaa4b9225fd19002b49603325
+758c6442552e5cafaaa725e0e9b266f28d7401db043d39b85b76fb336f29cb93
+5fb3efed0c89de68786b6022e8cf606b2e822f55dc3c25cfaac9c325eb8cec2d
+be5e0f7b4738164120b01adeeefb7264366bcc6adda20b9462da74d364e17bea
+e7c50a4551c2efd208b4fe8d18ef51622eb549769079e68ca57fc44b2da3478c
+ef6854b8fff09c5fa73f67c588174d1fd1d1cd23ce284a94153e31846fcc06b1
+8b8502bcbd94f7471e6398e998c474ee11f020f0e75553f5e71989edf4ed4996
+9c62715e50c7b11ef2a2b9f94237711ff958987fda49ad348e1d3fd0bdc9b3f6
+66a24f650d68b4cf7e0bcf222ab2a3f0ee733beec3c9169a23bb4afe24156fa7
+7584babc67ad9218dc5e4aee02a32956a1c4c5920004d5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMITT10
+%!PS-AdobeFont-1.1: CMITT10 1.0
+%%CreationDate: 1991 Aug 18 17:48:50
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMITT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMITT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 174 /arrowup put
+dup 175 /arrowdown put
+dup 176 /quotesingle put
+dup 177 /exclamdown put
+dup 178 /questiondown put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 184 /breve put
+dup 186 /ring put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 98 /b put
+dup 105 /i put
+dup 108 /l put
+readonly def
+/FontBBox{11 -233 669 696}readonly def
+/UniqueXX 5000779 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cdbafa8977dcfa841fdff9afd3a7a7c7905c219
+28506d4d50a72fd1db1b54a855775831bec099a567f3f795b812ed5e145213c6
+d5d27f9ec6709245e9e4068a6606742aef616dfcfc9e0b9af7e687fdcda43c51
+81a08d6ab72b86fb38756fec992191c1b3fd151c417125d4777f0bd0c57d2959
+0db35f1e9e27945498a3f7dd60bc54d72bc8a573457c16796914029dc282aaea
+fdaa4b1439f4125add4b7399be6fc68e4d5a766cbe5ddd161180d4e1ee3c95d8
+64e79fd0c65b8f459336e99827454d662768df3e6c1c3647b00b70b5f96a3944
+b7a197be0f58a1e995a77221bd374a40159d81c7196c94e8af7c3392255ee6dd
+0663e05998ff917a62d635ca45e952252342507d6b4d28833c7809c1b88400ea
+50c652efc339a66355c8017651fd24d9a5cc51ecb55bbe64ea523b094332c832
+52f7b426909808ae113c1e5601b0e081fa8e7777ab93b42207100f43abbb9ce4
+ebbf51e584299a06fbea62b8ad3632ff0f281ebf9503ba6b8ae4f3b57f650388
+df63eea9e1ef1e08f7a2c6e4f5cae2c4dc7b42726a6ea6b7592e9355a01fe517
+12264a713ba83c057cb5f663045791d4c7598b246cd3b8466a1130249568e95d
+ee2c0b4abfabc8e362b78d9fdc025fc19cdf1887997d32fd1487cf2bf0ccc966
+319e3e3cf4add90ab51f0c3e918a00e5726ee346ae410ec3ce90404580c47572
+35b3ec4f5ddf23dd43224d90d8dc932ec7f0acfbbcdaf80f261482ea4a2a2644
+129c27fb4b44ba8c78d23273122cbf1ca49ae879ddeb6991b87ce2ff25c655e6
+b5ad950028de17f6628f9eec6842b79f69c84b6c55ae423714e622eb4e47f9fb
+c30a71808d70b89cc1a9b60f0ef21ad074a63d38344446947c480523a32c3122
+3cccec0d2fdf005c2e6b7927a17a52cd790119d6bb0f5f857694477ef22d3f4e
+e60edbc0c489ff3eace0a7c87a516250155b134014bf346b46a39c76c687f44f
+224e7e297ed6a26cddbb54c61845d190fc86b929eda89c0955411ea2bfd97579
+8f87660f7cbc10e3bad1cb2a76fee4bf293df6157e7410108d1eb48cf79c4ede
+1ea15ffaae889060aaf167df36a29c3ef38048e4f7ac5236b35b3bea3fa549b9
+8db99a8b27ba100db64ede19ac2a88dbe1fdb6eb6fe1d24707b14ea6f6d264ae
+8eae156ba143148bdf4aa0faffc366f414e8dff2841dd91f601202c03633507b
+fd1edab633fb51ba7d1ddb601aebb53bc8e0c3b753c6782fb671fde6620a60e8
+74d59808343abe6965a2307a41be977e638e0ce20cc0e765320e54d9b8758e21
+f9e62d92eb12e57fd5a46427b20a12afcfcf990eaa56150868742a012a3f4b86
+8e1d1fc8cbfba6285949d1febcc78b23b5a8b8e74c710e5efc0e582d7af120a5
+a2c48e78ec1860963641fb99a3a30ac2bd4b230e39ab15201c54d540ff090c6b
+a8a5eb5fcead6b933ad7a38abca59405bcfc06cbdfbe1d44aa18fd1c620f0f0b
+b5705b5fafe852e502ddb4ecd5a68be14e9ada184c7058b4090d3d4341a7684c
+e2a89ce233c05d9911be91f0cb2de9d841a59262cf888a4ce5b9bdd480dcf0bf
+a90239491fe744e859ee9723380458fea0733fbf0d348eb1e2be4a642dfd5180
+f71a8032b3f9d4fa70f52225e8aede019f16a6034d3e4cc60802f0d778782106
+edcbbbab986b60047751956aba85fffad2cbe65c0ce52d65a0db035c15654b89
+d87904849e0d9b2fceeed77f772a8c77ddcd967af02cdff3a2e9ba6f031cee8d
+0b3f0f73a9c550a18047d0f4539d8c1072897c9bc8d4aad5ceaa56b6aa8c11fc
+b7e3f5036953bb180f23aae8bb56631ba618c66a22ea4147eb717aa8d8697b98
+3cf8eea3aa86a28d138445822bc190d9380bd603753eed9364908633c763e70b
+b6caad83627cd343cf037165365db6309fb4be104991b175d1bbe06f90b7e496
+14d7111f0f0dfddbd79fbb021cec13647ef3845c6e6b0fcf526e609bf36c9368
+6354c30f398096cb1f75aaba57e15aceda1e42d8899125a007db26db551b7682
+cdd0ea96fbde468f927b88a664b31a3f1a3218449a8db397617d830e62ea52b6
+b55335906ea8cc88b652b3516efb0d48c9790ad95ec5e7891848b94f1ecd95bc
+06eff672e3c152cfc01a3c40d786a2eb3328121b7d06f168c8a057d781b80ec3
+53908af37866ba1464c0fcb817f6c4823f12cf3cfa4cf50f7c842c246d856ad8
+9e61c56706ecded9f0471b4d962fb0d1f6628cf59c990c2d938cc353c56a6bf5
+9b79d8477db780af5112850bdf66544fcb8330c9cfcca8757bdcef6cef5567d5
+4a8273c4639377da0d45680b7dcaf40ee1d0d136f128c354759f13bc4c484294
+f9955d691f9a8cc790e5d0e26cf6c12a732e6eaa80aeed480f61f5d2e2b88134
+2fb336ee0a2018ee882c6695cd19725d378fbc6cf62065221a68a5605061056e
+898bac6a429acb27e465c566a21b3a02c239e9316261ffe683580297916d1f96
+ca339dc6ccf432abaec15546db11fa38ccdc09f9197d1cd54da4460009bb308c
+77b6a70defa946d021c080cb70b3379e5584713b0b0bcb484d703218d5fcefd2
+6c34b07a83c4b3c4eeea46a5d1837ea25c1623a6c98f334a1d2a2669eea5b324
+f4c6261605e3abb19f404550a5ef13f30f995c00736a30bf9798a6a486398cd6
+2d0b164793233ea4da9b3427413ad3b22072914ac3eac062d6a4706c9b51b75c
+a16c20e536b07598c813415bece7434820a6200352078a8e2f8d507ec220d706
+5884e29836cf89819e52be9bdd3af03d30cea7543081e61e382b8b23d88feec2
+d5d89cbd2b02eb121deba70bb56c69a3d9faae1fc02e6476592597024e906865
+26fc55bb63036757f027bf8844f67953e6c497c28ece97a6f3f8e2a74af21250
+1f5347790a0e8fc169a9b8ba502a9014dd2d8a8a14d26b909b12fb94d65044db
+31dfca5ed90cbe7b3922b26efbd3a2e7d7ae3058cbba4b41a6028c61f74e51e9
+5bcd3c6bac58d44e5a555d79972242fda6ec2c72e9fbc210b1c359e6148caf14
+78d35af6788875bb026f9d71c53453b4c204a37ac69a4e56587da2673e6d28ef
+b32c0cb0a7b02bd1e35c1d52d5171819d492c3905230ffd8510048952d98b610
+eed26a1a489688cf261b5aa644b33e987147f18a1ea35c1a739a6e9834e5ccc0
+c8e6e3aee8681ed7ba974707ae2834d7829ef085bf2aab107a6e67b5e906acf6
+525396ff63bd25f2c343da3178faabe133f8007f3a2b23e89d62e43f66accb0c
+d81d85c1bad652d2f894289140ba81fb94c7f0452f21dc46da899dab4fc25100
+ad2f5a2cd283ad6997c3d5ec34a168d8aca9224a08ddc24a27e772d391c1b1ee
+89faa9b985fa9d12eeb278162fea3dc48e53fe3d03b816ca3d301cf7731826d1
+dc683ab703f59b6c5e6c26b84d5a4c9ca9cc87c6d780c2f9eca7a53a333dbc2e
+534640ff39ed333b96fb8cb532cf5c0e5605df7558f3e89821be22ca4344f437
+8412ed6a5bfad9b057a4d71e81714caf97c132ac2b9c358910d9498d2105a35a
+5594dc929a09c35587191311a2e8c9872c8d6b956cc29521a52c080844beb447
+d9aaf646f86430af25f922cea4365fb824f6c57807a0ae0d7f572654a9c7b736
+e9b22b9e4bc13426e05d8960a0f4cd98eabada0cdff0641550af93c02b94c210
+11ee3c03d80b99426330a422f2d4008719f26f76827f802c677148e3baef29ed
+c68d578477c79d286d2775f41aafa93ac79ac3f41dc73e7cab2ee94537e2f075
+28c45b66c9a0bee5ebe66d74b1d3581c0212707a6fe1793f52ac3c0fed1977b9
+70d54d948f5fb5ceaa27d628fea439cf8d70629a6060089a085f3b7a614f3fb2
+8a9b26c5ec52903f1ac128ae79271e2dbecb21e0cd4c20f9b851fffc893a78fe
+13e758caaf86770161e78efcf714421707383f642a8ed41e7c23852ffeed1b1f
+71626e5369b3c1c044ae6179674f60b20a488a969fb65641311c5ab397d77352
+4b27ba28a6ecd8efe56b8ed3ba199f9686b8fd3f15110a2ef51dac0c5f0ddf60
+bfafde93020bfe90b16a11a4169aca8fc7241cdbd6ce8f7f65ee4c9628d6709d
+39c4666f3bbce165e30f0e67beac059a7e82df1c9d7573f732720121713ba4f3
+ae149e963ffcd87c041e1583494efc2bb87d279b3d095cb517045bdca295b87e
+1b8c8a06c321d03a3b6256143314569a2536017a199f4eaae210a23968e0d4a9
+53695d0c6c5d05616a2c2a9e2155abcb3cd4e2abe00ee5f033b1a5f22597881b
+d00524a7d4ac5062c742fa7f866569c338dcae5a6867c7c4c272b0f90bb33361
+2de348609bfeb118b6a40022e232a7e1b7819c656048a6d7dbe2d941f58a7898
+4f21f2b3fd9f87a4fc6bfef62d4326932715990f55d124aa17f7a78580dd1d87
+bdd133c4a968a5b824372c4519fbbf83687ee66f5ab7f9e19b40066fe24e3349
+341d64
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.1: CMTI10 1.00B
+%%CreationDate: 1992 Feb 19 19:56:16
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 184 /breve put
+dup 186 /ring put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 38 /ampersand put
+dup 43 /plus put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 65 /A put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 83 /S put
+dup 84 /T put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-163 -250 1146 969}readonly def
+/UniqueXX 5000828 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3ffd20326947b1065649b533eb5e9e3
+a88a87fe987918a687950b26f647d6e08bf14d983ed1d4a8ca1e2da8d985f944
+2eb916f5b6ed0697ac7c33e1e36a3bf460d34ce45f1631871097cb04f18e3889
+4cf4ac1538eb19481311d24fe3be7beaa4a3730e8b4831fe59d6d9ce2e46116b
+629c7ba2f9ce3ecba2f43bc162a5a077ca1b2882a42afdcec3f4b75b5d63e0bc
+8e5dc95257766d8ea467ad9cbaf47be60f797580cced6884b3a68f70c91f4fdf
+80fd00ed9139e7f480dc3a76af72ad9b434187730bdfaefe4cbfe5c7edcaaf24
+9204fd703011932e5a3c27be468b7dab69daa18dbbb6335ab8ddfdc607961c7c
+02582763fa069d43563ba17704029945cf42fcb19cf78c51df0ec4d851086d43
+c1ab38e865ef36865fff3a08b01cbcb070ba4893f7482dc7819ad03d337e520e
+7d8cd83bb8ac7aff4df36751f4f12aaaea2b6d7260c09a26e987c904003e0723
+7dbcc4a8e4e85cd3259f40d3caf55c742cbb40ad0db1044c20a4f122a63f7b81
+1d945bfa69662189ce4d089464d2ead9f6ed60b581b04114d5d45e97be27a576
+35154e9b8464f2a0df18da855eb51b8f64d3054b0b2e84621f025a0776d16fed
+b988a43d2d64c32768dd106b9f541ae8e68ac0bb7399e16f4d4ba074b2152d0a
+4e9b5bfc21bfa0d531e28165e518ffc054dd4ed0d74eca079d20e79670419f92
+e03bcbfeecf3554d661596f6f29e12170804d15a250d917ffe7a8b6e8fa53047
+1ed97ba56481589a65ca13619129f1e26affe6c22f0c38540f8ce37efb6e9e9b
+60b51a5a9cb4454fd7c7f92f2f9437159687ab590f35b946a54491a7739c9269
+e0f1fb48b129811c82edb3171cbd5105fe65906974db8a7da92f4f43dc7f6b36
+6981146d86d23613a0b38d9d6191db9fea0172e982cb1cc50e382f69da1b377c
+1be9407f88a2a761b56f398467a057f35d18c01cc377e006182c891ec80272e2
+2e3a5c7123cd27eccdc87392a9fdf63bb40f02b7649cfc53ef933c6518744cb8
+9cbbd437830ef5b1d58b00b67bbcf4426dc1e6ef583b0b4ad3aebd741e3ff0f7
+29ae271f032019b1e7268043fd215be590f9cf24da14a90f1683afcba8006cef
+5d5632c2481fbc1bd8224e8952debb7c4596a237e5505ac143180956ca1f603e
+ec70cdb4a33e1c4ca1744adab17c56e805c5a53b130f561cf0b9bfc0a5c7fabf
+7f588769860fcf171d1ec8dde503be1d5bc14661ee0b58b3e0b44105ffdcdde7
+226998c87327263eb3068901eab9346948123542562a692428d4c5bdf5383a89
+e91b0f3c4a3a8d354a8f65db222c6ce68a24ea5a7c6e1f74a9949c0bf558bdd4
+fed9f763a1cf051a2ef3f1590ea34571e5cf76a6b3356731ca29b705c055fbc1
+8a1d4bb173dffa190ce8828f3846eae57f6f0fb35633534e52ab09708942aa24
+fa916c5d9f4836f8680a193e0dce1066e59e4c78bc7a2ea7dc16b187c26f462e
+4646b18c3d9a3a9eb1cc7bd89c5cb7e5f260f6b5c6485493b47e1514edb7e87d
+c9224ee6ba5a4de1e422d663cb256b6d68e0c68df8535beae3fa13d9d37dcef6
+3585329b8e8aa3c08d44ff04a50596faae5b3e5b0b4cc4162390b43bc968cabb
+bdb8c0c7153a96020d7b8e9796bae1fadfa730712c0db7b05f46c4bfa9bb4e08
+302256f46dd26f107867eae5c644650ecbc6237830b773c02e03c1a12e930d1a
+b2d059f532a802cea8f6a223eb66f80be038a4e1d7f05313ece520396403bbc6
+72cb938169754e930b2b1f83ef52d95836618492be2e14c858c1aacf2655e63a
+1a7b4809a7d9fa13c9ecb5b7c713a8669b2a41854853845605c2e1019b6340ee
+cc38f4195dd51dc5a8bf76e02a664f8499c6a6c4610f0e437670731abbde2bde
+36864e7bec1d1f4ce7e270b2505f07311c718a27e5cfcc2ef61a06f7073cd971
+23ca584e685f07b140e90a71fdb748922fa18312310a448499b1a51ba6c0eed3
+85d42dd5549edad76deb3afac9e69b81594e8cfd3d630ddd5ae6945e6954ed9a
+f4c7061434bbf9332c6abf12a9e0cac904d1f94a05f4f394b9d02d0180aeae13
+0be477bfc15750645c9baaf62fae64b792c7bfe9bda89378c70b4f71ddc6c420
+b97bcde293b94ffc95b86909ecf6ddb66ddd9d96a3f27a5f27df5cd2f58ca5b3
+431e0cabbf3dd16ede8aedc36ef79fafabfda600035eeed1a8e12de08858f5f0
+77eacd622ccc0002cc286d5799fc34e92a8e0cdd52c1868d9e0c495d17e2c752
+9a88eb676c853ec708d70ea5ec63b7ab8030555f174f17f34efd5ab2f8ecb43f
+a7a8fc547bf54af8b432268ad06c25cfeb544c3df96203570f2369fe084b5969
+ae9fe4eecd7cdd81a68f5c991781b9662ff6acdd98dfa447b5c64241fcdbc867
+b883a672a2d7caf084c4c6c562dd6c1d0006ae933c998fff79a5760e839f958a
+4344f0f6c97c5ab81f69e8b6d99b30230a87ed87b8e9ef6b21da80b9ca3aa390
+6dae0d8f4acf960fd8ba8f4de05ee82f1c9cdd61339ff97578b41800e691dc28
+d9296c434901624a26d65408ec969fdcc00d9466582f61f62436790df23e58f8
+2bc26cb183ad4689cf3504f3b1a0aa9d42954c3478c9124277a2859b8c6af32e
+5274fc7c22cd8aa1affeb4b9318551f5bce47e0bff26b5afa460587d59b39a49
+2c36c3bf9cd54ae6c8ee56c20f2b23c09998d15329d2e28d6f66a4498b8d0212
+003edf9c4272c3c65877bfe53536f774365c2faccfcbd7bdc2dcc0fab6a74833
+05f57f00796438bcbc94fa07600669395171c0b51dba3b69e083ed60cc3b64de
+8b902a43ca37ccd73b108d799bbe8608f466e46adb82b9b8d7410f4d76b10b30
+e8947fe0c655ed6d7524877b9aa34d1d75449589e059cfc9b9e33dc6191630f9
+9c088e0e8ca2826295494f8adc2c4fcfdaebb6efc19e81735d00cbc5af2ab9ec
+a9b7626ed1bad31e78589120e4f8554ca9c5b85ef839e4bb242e780b931d51f3
+51f482746ca802005722ea1e218e57f6163f2dd2445344c4aa9659161e67637a
+1796309e8f032c03fb700dbe8ce4f308ea2bab4fe6ce37ccf9d40b94ce72cea9
+5b1ca9f0df69983e39e4ad0bcd090637334d1bc9c71e29c7fa4c34b00d9e4fc4
+61331fe7d529b706c5ec8932661cdf996f87a0818b93be2870ae32d9fd1025d3
+7d7f3f53d941efee90059f81d46751fa5e8e454812828f5d9169130da9603c42
+f9e6f1834f17a9c8155bbf7eeec04fa16cd4ef139ef0d3a48e21558dda8591f3
+93cd6cf049c3e6b2ae3c2b5521e4972751b4b9ade1570285433f7aa22a224565
+208cdb1c2832f67f34d66999f2d7ebdbfd41487a74df41668c201d2cea74b77e
+4292835daeae0904dcbb47d109bd2c3fd9f04d988f1a5171ba7e46789c1be17a
+3832ebbd62e37f10d29598d08b5704a1e0fc0c05079ef3ab535532dcf3a82636
+0a27987c15661e97f29f5b3dbe21d1aef12b78ef47bc13205605b09e16067699
+e3d797833295d974cc45f8332ea956246476cf1f8580bf31b43499354c6967e0
+3e9cc60b23fe010bfe4fdf357d40a6e9c5be502731191bac23a97a720e55bb20
+e221f8dff6c1865e34eaa10f9d1c78fbf2ab46a72c75c1c2603758d4d36169ae
+53f9daa70625c6c5dd9d35bd5fb47a2786fc7426cf6d748f7619a646de3390ca
+ce4b2ae0aae5c325b3b8e927281c7b15e55c8488d1adce99b6b5b6b03e129b81
+0937665e918397cd8149b4bf8b3eeaf8da489d5ae1654a0f34a8478d118aecdc
+c79c15f5882cc7f707522ba993449e9aa2161ee5c76c057c077356fb34fd1abd
+95d400245cd735d14e886c7036c301cf40af15a85d9d69f7a2aaf03dd7e87d14
+40ec0611ac88f4c654fc2b526cd6da51bdc286febb6148acdf776ec4877f198b
+70a6c26602959e8176934cc1bbdb5c51650167c01feb44fa7aa0b50e1c31bb8a
+0a9f0d3f6fa210ade8316724e61980239daadb67b22002df0a1d59e647f7ae12
+e675b469ada882a6ea4fe2edf070799cb255f03fc536de71f785047f6c94ca13
+56279903e86e8e9be360c12798bead4b363937d92a9c098c9db390f85b0ad3d0
+df5a61e554f393569bed9f686568d7320baabd2f9adabd9255c2dc6b124c5651
+1a1841c0c93e451bc5b24d945164c0fa141f805844a9d15f81c1a8a8a56528d1
+94f64807c2a3ca2a57d9a367833754c132cfcf62a8033827006d43db52d0d7ed
+33f9b068839d2a1491dd1a56f55d745ce4fb9f6be5c6395acaf9591961259eec
+02ada73bbeab87aea81c3f3123600346c1b75050cc4bc28b490e9ea906f26509
+331c48c34d3406dc9ff786a24a7bbceea91df3b613fdb0432e81b12d56a6e570
+80ae6c6a554be17d77979b24cee8ae1dfec71eec2c4b352adaef0d18a3476d6f
+5ce72ea4d7528d337c009a8aa5c9ad4c73c21dbb1d398cf3f673d2e8a384e654
+0d7b70bfe37f6e63d615002ceb649e3c4cd6b0e2b1c12bbfc676d4ff50cd9d90
+c65570666a16f440de33df8bd9d47c731a1d415ed5b99228bf2463e8b5320062
+85f7b0c11d54e4e8c204d30ab8370ce70107272b950aeb3a553043ab271e6811
+41c870b794fce7aeaf68b290f4402586f3e2ba46ec042bde2e72a1f4084a3100
+b3e2f7b64f9c04ffc68ebae1cc83f2bb2fd19ccc12fe36becf8fb8cf1d46f69c
+c7ed98160dbfa950ce72131a5c691d3b6cbc19eeca5bf09ccdc9d9a61f73460e
+5c2ccc54a26217024f1f7ecffe3b19ad696112b66b940f229072d3868ad4646a
+99cff1e2c657fce9f6b174b8945bf3738909ee07fc274a72de02b016b4460a8a
+d729e9b9235904cfbf0d45fe5f8ee0afe9fda9f6064f50894fcd94c2a2a4fa67
+847594705f4f3e9c42d251b5b8c0becb31c4e0080e7a2bce1b38460cec806b16
+9e85d6557dea721326e930f1fb5fd96a8d55c2919e3f5b4d092975afe4189ea4
+9f977c8d678750bba06cb358ca656596c95d156693036d17f4ea336993d67606
+f9a38eb21bb29813ddff4e9aaa6cb0fa695dd52ab9afdaa1729318eff525fa61
+6144d7d4e7405c74d0c7bb2b3b707f3df26509331c48c6e82b6e54132f185fc8
+f5417ad3e13f5bda53695340de2ae368b2ea53749684d726e1d2618132fdcb03
+8e3d051bd4ea46b6d48b2447320fe373b6ecc306ac0e5066803ad485c6878688
+5df90984915d95f4d760e6839afe35371d13c9d9554e86a790723593e5c96b54
+ad4f3518a3a5d7d0ac85d29c883f9761967cf44263440c46fe7fd1c354473c18
+e71cb06d769d62dc32b8ab348d99566ec9e670c4e3be66da5783502f49f48c19
+0486835624f0c19510019bce88e1ebbb0d7a7944c3b90a5b94e99d0babde1b3c
+935ea3574290e6e60893572e10e0857ed4822f6d5fa60fe2f0488c727bfa4e37
+2dc39db79690ea25ded97b91667f678cae5c78c0d3aafe617c278cb9645fcefd
+9339112b63bbbce7e5eea6a2459d3b87fbca0515a115f70eb1010292b37a5223
+36c9dad75ff24085928488b5c34d851f016627850eb66b016d0e97b35d5a2efc
+b0afb607cadb39724c63da490d7a44da59d5425d387ee768df57191cffe11cdd
+87a4ed017393a2f6424c887d99ee0d167ca9951bef64c8b04c44aa409349d0bb
+a085076c56e4c525ba6fde215cfb9d902ef53af79e7a8641006561671d548cdf
+e2f57c81860fb90252ef83f6ea5104a473f864e6e47736fd31f7f02fa463c1be
+e008ad6770607a3352d9a1139dcd6d0d246eb15ee29a32a002143d9a9a5e889d
+8075ae68b3e75f97dff5c957e24f145ee92891b6127ee6a9d9a1df02ebe5d245
+a24cba1d684516b5d418e050e3b9453b2e115636c2a5804987a480c7ecd76c9e
+1a29d2e9cd6f05f4a4026651552f3e0d6b75c083faa66c0333a75d78cf202f13
+570c6db3acb2ec0cb8fd209fc5c507f56ab41673fed3ca7cb093c4f6a3dc7deb
+b50f6a2db712e488d5bcb08714a74e784aac6bac9d8ad3d83441bae2780119c1
+60bf1b11398297f910b566e5cce14aeb78bc02314c4bcb39c20e395a5f20c01e
+079100a05570aa96c3d87047970a850b2d913527f054dcb3969ed74b938aa846
+ff19953c72e1b8ca21b32ebe21b7f37ac82d421da2731c5a22517337b5c51e97
+2aaff5c72faec503525c4d65cd995c4dbaaed67dab66a1cc1d2c31b4005ab933
+f2570aaf400e504ebaf2e38b2986f64912da32a22ff69274cd6505507aa3dee7
+0e14fc0c63bcbbd820721a1e525d5c0ea710bfe2e0003b5cff93818adc36bb4f
+4dbc875fadbe636ba32d39e1090e4a513d5a4764d3ebe95bda013ed34bbbcc13
+6f4227396912ac1708e890124a82b3a874e4419a2171f6f60c2d4170a81e1f60
+b2b0a534aef8a56a3ff7f8e66d2d88e3b69ad81b24adcf04cee66317b29c10eb
+0b47d8dc102a2409fc38a27893a9caeea8fb8050adaf4edb84bc645f61c23b9c
+066eef8297896dea8ae8b47acd0c637cf70093edba5cb95c0d0dd0243bb602e5
+8e6de36d6aefaaa0edd9711f4e2fad186dfcf0c70579428f01aa9b6b57985471
+3ef38e795451a51da1879a3728a3532e1c6eadfad8d574b5072af605779f34a5
+02e339b448b7011cad3a515db90dfc48b30a12d50da94535cb18404f07eb6af1
+03e00425ffacac0ff1543a7aceb0c4058527e0e3adc23f7af6efe8d9aa82d97f
+0b97b838b44d35978bf22d53890d4329d2a6103e4c2d09030f5af4758093e036
+e50e267b3847b8ddf01e182b0722c28c6a3bac1af2592f11be3b19924efe9c63
+3cf5e389658cfac934556d62dfd9fc6a6b8779c086d575befb4bfbf635182f8e
+a2a18ec3033a0b047b470cbae295057e87e89476b6828f10b2bbc8966a2570df
+350a2f2d77d63d85fc39dd6b886ace95fcfd1a2eae9f691aa1c21ca4089385c5
+bea2c4c85f5c7e623fab0b93615747a5c35c1e6ce5cbde12afe583867745b2fb
+26d99cd024a17e45b39aca103ecaefbfa27498caebe857ea2ed28a17921696d1
+24319777ae7b725e3fc87b5d5cc6f7f65907f1c2cc0f09b7478542997fd761f7
+64b8b54d08190c27fcddbb02d4b69911fea49879cd5db78e2d263106f43d9263
+aebf1944a7f44825b0052c88c8cf9e330207b5cd25e84e2863a2015057761468
+044d7fc92a61376cb089da66ec4cc6b775a475ac621ae805d009fc3f1b572298
+c3a6b7e85644d36a06dd4247de72c4409ef633b538d81d8fd4cefada4e6e969a
+cabf58787d3fc21f389f6aea208b07eeebfeffba3bdb861743cb92cf74f65174
+a69158d905a4cc6f397425d6857a8044bdcdf9c1fe8c05f64c66719f75d43447
+96cfffd86527921fd11fe6b383dcb00c8fe3b82a0009b1fa444e0b5ec854bfc0
+064c6de34c4f67a17b7a6f614e54ae32926a7003779b8dbe67b76c85992053e4
+afc9382a39a8c7eb673315780155bab251411a55f83b875462b2379d00fc9f99
+bae235ff5c94acd14db9aa5d30dfb143d3950adc3146e2b3ba2dd150d470079c
+9a6af5ef77ce7fed79940c45827c09d5bf47876e40559f3b8570b194de1806ca
+9427eec4eb1e750261dc2fa918c8cc459053d6d01ac9461782fb26b74f4a39ca
+12430e8893543af50d977cb6071d32f10383b3ee88268c52fa680a8daa021d74
+e674f18b01d146221e4258b2a9d4ae2bf47cba15bf8a60b95a8b7670f9ccda5f
+76aa221f9bcecc7bbda4cebf319d04434ecd9f5e42db570649ea056834bfdf80
+8914de24ae2381e44adc11693f2410254031b6499d68ecbec7ae6654f5e7ed90
+119d2cb28a4792798a8e3af83e3828f3f4efcba976f4abab1601c1720f63b499
+47a86645a3877ca36ccda4bfac96877f1e3a5db3797ec51e3c760f594ae107cc
+c278c2888f473d624382e69077216094658642cd8ba69c58562c6342d1dd772e
+b50c8d49b6cfbe8b663f3c647b0f28262c87933dbed4d70be1c7d8c33bf1fc71
+f856dd42cc37c1f538590e161e8fbcf85572ccadbac48160c81ae17f3d6d31af
+2ea4ba110f68abc60f0d4179bd980b0bfa8d6bcf6a4bb17fda5acbfb5c2ef947
+b0d283b13b8d991fb2c0b118b4c1c18fc0ba1b044070322a3ec57699b29a818b
+0f88165d5990a582d59d53386e7219b1794cd04c6fbdb8d3946b051062795455
+1bdd07cc68275ebbf61018c1916a1d12135ae9898b514064780a0cbf7b9827aa
+ad9a4923f3a73dc3e4433d5aba2c06082efe10a9984870392be6d85f31658b0c
+05dd8f2092712802dd375ef5d45f701af0f49ca944393c413b034d4d2fdcb309
+a0cdc247c87175a01b42ad37c4aa6e86224acc1edfae45a54bfbf268f5670c55
+ec6b8acca6db63961be9f0f15cff90ea7fe3a029b51312170dee8249159aa569
+34d27d929afaeb42c5559a3883fac246001cf10ae8c8309b629c179b0d0f8bc2
+c58194d01604391f48aca65b7d21a354ff36f3756bb28181c0cc40bb209d3886
+86a39521b6ae751107f7668959d3a0f668f46d769339ff619310294a1a28129d
+c5b43ec3479ca8f1044d382ecf3277b1cfa6cc230bcd8a6a7b1eff0d06081357
+ed15d3fb74e795d3e5eef12bf3e1b86bcd5c929ac75b54eea71e103202fec1aa
+6fd0700245bfea40fbd431047ccf5b466f02b67ca1ab61e1aeaf7aefdaece3f0
+10f8224a491be553a38236f45c89219dcddea1af092422f8326e93d292db8dce
+6ebd074340bed6e9753ef212b1956d787c2ba0c72e6c6d3f5cedc462a458512a
+3b9ca87c121ad112803c5f10d0f3b28472c82c5dcba7c90ffb6d5c10b76942f6
+a0a144789fac9d53f69b5448eaa8e856e65a2275c3b8b0b7aaf4bf75447ecf22
+05d90b22ac7b5b5b998bf5c655d0a78e224649a9c654dd4dcb997cb0c000a680
+013bc2989665798908a4dafba855e80a7cb04ee1c35794b6a4d7fa9c3a5fe5f9
+6bb4a1f2f02798e6e4867db1ce5ffeb76004764348e891390526e3957a296404
+51b7ad056cac7b4c537c4d401602e3d719241ec13fd2f40054647091f4ca3b78
+696c931b63dbc52c74f5cc4c3bc58f23e435ad21bab2e44553dd565e203aa6ee
+a142377f0d05889c78461f48f707b1595e1ad70ac7fa44ea9341a8b5239f767c
+3e222deef15cb5621006a71a532d6901ee6aa0401c5424cc0c2f1887984b3e3a
+1a5b494f430f0a62fceea691c08322a01cea32a59757a34feed7aba99aaa7c7f
+2b1038c2a88c89cba837729da96388ace7ded608e3805db6cf1ad140e9b0f0f0
+aaf61607f460a12d581720e91ccee47ead25f6b616953b2846ed89dcc497ea45
+7040b4f8f914a7973f190116ff42dd396a077c11bbf5fe366b7b584b891e2982
+646301e38bff4e57d8aa232f8d3eb109edf4d64b45b33793a4799eafa53bfaa2
+6cc7278d0f69acac4995e5ca9c38b146e52b698040bd0e50396732216d4aecea
+51cafe9cdbb6c43dcd77a9518ec4451b418b5071cad76a3901be8e76b34b0c70
+e27548b51b98bf4d75c5be1e81d004c1bf7c77f4068d1bd2df492a84055f6572
+db4542bd0ed4286234e3b5bbf0b7141aec8cb25a515901389bcb6d714870c6b7
+36c502eaadb38d9985571ee1c2e70699ed4a5c572891fb32701470a7a5423759
+c50e12af6a750d83859183d37dd75d0a9068c5846b3f7731b5fd4e2aa428e73e
+5a753f9efba676040e7621871572c0ba19faa6cd220fe8d057d33ab7d69bbec5
+cc1a955204395716e230352c8075c087664fb15cc40db43f98148eceb5701f90
+ec3b452c6c85686b6fe94b1ec42ed31dc202484eeecb4edc6d8c897b6e3ea18f
+521a63f24c1d9d79269159898470ca332eee17918133252e2f41886eeda24f0f
+56a44c9c163ade43e6d924e402e5b93e15cc12781364a3d45c646b9a129ee489
+7e72ef4ce178a16fd71dd053681850f7fc71ea2360a9831d8d0d46e725c91f09
+15b7b6703a77474a44a9e6ee9d44fd9263fb776cf2b7aae776d9722990390891
+9a6639c03cf98cc34cee732be3ef38a48a30b296290ad6448378f47db26cb29f
+d0a2e7ac9041c143c34e3387af0af26e89a5a0ce8bc2f5c6671d6944f63a6cfb
+eec298f49040d6b5c82a4f513ac67a9c311f68801b9dd1079ad75ba8b205a579
+a748c75b2e0f26c3a2cce73c5b03d639ff8a0ba767c449f7794b132090254d67
+d05df0ac63957c586930c5ca3050b629dc427b154f952cd7ab53d25a145ebb39
+b89ebac22cec98e6182260c010160e2af9502eb536df95b5f313f44ea48615ea
+ae4e2b1119c3af7c7a0c7cc4b67259e25c32b1524fe4ec90ae7438e694141d2a
+30e4f2ac71e801d1e64e2ceb21bd32ba3251ce1236ed678ed189ca0b199701b2
+22815688d8fb97f8cfff7a5592847f9eebd46516d27cc4930a2d77cb4a2c6897
+c742c70ccc51487f6a8b6fff4e3e5f45edb95d0ede1b0dc635f6c0c9b312bb7b
+0b4d346ffbbdde01db47061f2a7888a33d1b9daced2ead30cb197d35bcc0110c
+b9627cbcfa39d58974e75fd109c0614d529903ca3679f27e9d245a35cbd8f072
+375db9a885906a366fd558d3295cac9acabcae9c99c7e290cf9891df076e5f64
+a5d5b8a79485eecbe112e11cc8cd353648540775dedd61eba6d1eab0fa7d0f5a
+ddca953a458265f9675725e6bc4c9e3fafc8e882df1920a438463b809b94677b
+057c3a225f989b78b8132a1e6f6c0d867dcf6b20c93dd1d6cf061ee12ae909f2
+eab9d3468aef92c12811c09dc20ecdf52daa80c5cdd22eb5a66efac6e4cd12b9
+b1ca7f6f69eda86b60c594a56c02eba5858be02907f82709becdb8093ad90661
+51d720b8e16850fb934ddca9f31d39f1dc1f0058f9f293e0fc53f0802aec5c1d
+1e6f38bef85581ca90ce89374ba826ab33e857bd945e3cae2b7e3d63c09cb41a
+1c7fde298a5d3caf5bf97d6d68adf16679800aa2471ab34818d6603356b4eec4
+25703d2f33ff23a050acf8ef0c4c296e1100f77a0355b56c3e59b4416cbbe9fc
+16721d142afc3ea7943aae8b894334dabc0b84f5bab0ef676d9730cd07c3ada5
+20dc47104d9bb6b27f9b7e63b0a09c6f14002f1ceeb334f729ae13cde93a4c50
+8a24284f2b304cce0d7087137308ab8b3bed1fb6e20170c8eb6123fd97b8902c
+3ea839288b1f40813df4e426417c84e3adc3ae533c3fb4b713d74ab0b8ba1fcc
+2e7d08ac2478b9e877834f273bb48632b616723d5bfc9bf1cd9f7926e4645cc6
+fb31586b4522811863a9a3927152142acbfb533beaebf310876bde1aa57d19f7
+f94a7bc529c5ac46cb6a56c6e1dc60c4a27d88deadf3ae0001424aa38ad8b815
+7264ee66ab945f166df240a637348a31445f380f3ce8f0ee84638aa51e68edf4
+04153570c132e8120110323fcc69d3d70f416ca8e68d9392682298df972ed5c9
+988f59b64ab82ee3d2c11936ebde27233d7a76aa6cfa6a716f1766088450808d
+b2d55fe768ef73d5da814d9cf20f93f02e13b4f81645bc655ae5bb4192b255d5
+2057111134995c38665d274aaa65206ebee4c64d28fb8d15ebfeb09ce83ae131
+715d6bdda17230285f83c125690c55d0ae0e086803d59927a58bb16d0955be67
+cf758278ca3510fd5b0de4565cd9f85acf63be13cf803bd41750db4daeb6480b
+86cb7c527cbd4a971ddd1569f00b7f879d8fa6c536b74c0d46a7c643714f94e3
+24c77e08f9fe6a781cd8cf0066256c9ea8110146f6ac48be2d23bb941e4f7ac2
+5da6b849be1441e14a6b79be04cc805d179816609545d398b5fc9e7152b2b1c2
+6a0b96bd9fc8e44e3dfb2ba3ff3bc5bdd9d6f314447c808256e30970f44ed0b1
+6b48b2150abeddaa29af40aa7c681f7e9c22d7e4c7b79ff4b74fdac338f5aa3e
+227c80dfb6cbe53dcf3f62335fe7395635092a63952dbf402652d50a33cee650
+a42b1c70f59e2cecaacd6390f86b669a088d3401945094e592cf942b6d3b2922
+d5351cf91c5219454ca08f052d2ea765bfc27cdd00e94b3175889d5f871967cf
+403af52c9fc2ef6972d788670878073ffb56b20f02379abea2d28f20d07131cb
+b7bd7e309ffca606d787f13e591e8d1c9f94a5751248af7589f2179647f3fa7b
+c5115944458d1d1b96c460fe0615de4ba7c41c860b243bad52901dd9c8c6b925
+85854268e8f11586c67f7b878251acd46f0a523c085e370b99276115e62f6cb6
+ab7b71efc94b65e1e032174ab38ae8d8584bc4d93e6b42a8d486e6af6f47edf3
+e3ed3e537c4c9f14e5fb78a8545c217f7c8cb4cba0ab135c7f5ef9447a151649
+4d5ce3a08b0e56798bec8a109ebb8aff780fd5b8241b22f2d92e2f649d23dc47
+99a2673a5d891a1ee70fa2c07fb69316d09c2ce2ec4aaa47b0862cc3ddac5c47
+81be3bb33dfd865ca293375f96e31301b5ee6582c079ab7ea9c7449d8fab075d
+a8833ee2653f3ff48d04333c49cc44100e6695393682e3663baea94367745891
+7a1c5b1d0031cf8e89c6eae92fca39804378c7a20fddd3ddea6bb92b2cb7c283
+f2e2aca4e7ba3e0e6fe2b138fbd5e6701147240342a6ab634d9f8310ceab7123
+041426a184249a150305ca67477b5e3c058be0d9fae102d5b8c8b0cae65bdbcb
+f5beba5ddb684d26fbbec5d29f813fd2ebe2379ec2557dfd2826b737fcce3013
+742abe3eb30b0780e8b6e3610dfde09e1560e0bddd8239a4a41b04742dacdcb0
+13b07728336775d6f52affacf93a5345e2e535c9fc7ad59d567e7f4d8f39628f
+5e9a1c906330c42d794e52dcaf2a29ff0df763cce67cb65f21112332da175926
+97378500fbcf11d7a5087332084dbf8efc917f011b33b73f66500b4f186b5028
+1f90cc80d3a6c0c4982069970380cbbcbba78a1526a6173291f5dcca3d9e79df
+45a32f53bdc7ba76fceafc2a1ad26ba6cf3c985fc27ffa5fe267891288e8e353
+d8a2f0a046613d85433f3acc1c7a93ecc77ae2b1c271b0c6a80967b2f96af02b
+74138fff15557e21a1583ba01c2070f52968bff16b2f5cf84c9080f0e05fbcfc
+8184b2d1f5c9fe0e06b4e50a6bc503610dc93c7b45db3c4a3fcded3465a5b8ff
+27f265173944e784f815618b71f3ace5e1f44f404a5f7490fb7c832650927f19
+73dd5bc2de4630a522e71aeaa6c28b22f39151c87c1ab341fd62f9a71b4a76e3
+9a0c11f525cec452885cbb03c91a9fec99e332582a87e684e3bd032ddbeeb649
+859c957fc8e9006355c8eddd8df872941ecef77779ed5376ff7f5596b6d729d1
+78817e5bc8d2757fa15347daa7f4bbacefb40bcc56a8f30d34af4ba01f6ac7a7
+3ede4bdef3e41d87a8bcf931ce9e0147da6ba50f33b397d23a96c8ef1fd4a3d1
+dadf506afbfc0fa99264403b0c8542578606cd47762e16db682aabc0badbe85d
+972e47e02b6607d281de643db5df54f11b6a77ebed2e43692eefcc722d6334a4
+1b6add51d319d9aa6d121daa0bebdda4496d093ccaac738459883bc630b402eb
+2fd46f64c94c903dc320f7d0139adf18a3c3355c5a4b67f59c76974b37242512
+acd2d93ebc8a450190ce16576fe3e2562f1bec0ade2302be55b9c182f710a002
+a08c48b49df86efae68c566c4e5a5830fcdaa28eae561cb35374e3e7f88a39b9
+ea8c05d773925d165accbb910ad18811932e35bd6022ce544438f040944ce482
+6d84a8f4d7bb2c237bd43d77f384daab931c0a8a0bb6fc4b034b3f2ab76f7e69
+19397997a0169b1159ac48206bbb48b3b21c1eddfc4f61d6119cdfcb64cbe50c
+a0a9595cb73cd6b24337f187c1e15d68639c93124f0dbd94a4fc880250f69fbc
+071e69b3034c964d1de019505d2bd57d3355bdb1422d9ed804b59f1c03950d62
+2b772eb7a8077bc800c544e7adfa13b61ed63d76ad7b9c66c5dc17020694cbcb
+c0fec80e7b0dbff4c805f19f5dfc11afc02dbe4bc31e088dd4e80fa9f0e389a5
+fdcdd2d095fda90a44ccf95ec19eae29ca7fab0333d8232ba230d6123bafffb1
+cd4d690d149829167db9ffb10bcb00c9d443fb6cad59182ac49aca89f9db0e8a
+e735b99236858436b5546c5d840bba770ac985e9b5882de41ddf68359c4a8e06
+c8e6f097b2d34dbf8994bb007c234d24034e0573be36dadc9c1f8a978de9a364
+3d634f916eb1bf8a0f3952417e97147766b5752f6ad244ac2a68ce12d04f1b9b
+1eb0785ca1530536102b0a5b2820bba76b3bca31c549c4669eb1e49ea679d258
+c7c021e62180fea2b76745271e956fe89c2fc05698e7d8169f89ed206dc9cc54
+0dc5322a81b7d25d3a6eab98063a0ad0d29421da33a149f5004f07278baf7b00
+385e84c665ef4cdb8f5fc18b7fdba6d948b7f23d1288c57c0cb4364c7e66e7da
+773d3424090cf247b6948dfc042d3fa14d26ee22495aa15c143bf7df40957685
+9199ae046e278ed3a53f066b823dbff6e7bf9253cf8b4a65d4bbf7658aed1c94
+2f4096e8bfa629862f8caf6ff3fae01b245b44ad0f7e44659bdac2ce09523257
+f017554a07d430a0bdc0c467b481030b2c5e2dce42bc101a962015395982e473
+cb138a1e7c9140b6fe607084ea7d5025d7b9d101fae6b80fb84bf0f28fba67ed
+e2370a4a38930079ba233d0d8e25a0fb0ac0454f7e8caf47f7df79342210ecaf
+9d08e521f21831a837874894976cfcfb78bbd25d81f5f11e9fbfd44564950bf9
+cb8dc26b70b73f73e6ef37db809f15a66f2e3a426e94113973fd7867ae36eccd
+b524fb5daa481f532a8465de54fa8f4bc3591ae7b2dc5f5601dd30f6f715f5fa
+b800ea772aaeb646d61279bfb2fd240d651a2439506cb90d52af99ef4c6567ca
+d8d4b3c5465fdc3dc5c675fd05922e3a3ecfa8554c77d30fbb983614f42c1adf
+72ad6250876922c10f352972a49bc9f580e60fcce5cf4f3d407f8b97de6d6317
+a3917d286b4470b8cb8935765ca27a5d6d7c63ebc61d4bbd1503819b3f8c88f5
+26fd2f8d0829927af67914b6bcd195af1c68cba7cd8ab5c70864fe85db1b697d
+972f64957ae13b6a745dbf4c6d83a3dceb43f56c037a101792814fc0c8b365c0
+41ca910cbf90b27205b48e88669185986dcb8ee9791bee9fc4d07a2c430270a0
+7fd14af117eebc3bd2752c9a32b90fa78c9ea3ef3ef000e73cd07d90466418c8
+1a89604bde55d8da673552abe3ca698b55738ebe1fbb92cf858ce2e73044d253
+6015e08267d0d5b953ae5d52d03521b8db1b2dc1d36161c8ca0ab6b16371d485
+953035710ce65cdc28a647c1bb84a136424d9f11661e4cc6f657e0d364a7d878
+2eeb932efbd2780e5fdf2edbd782b3a8625b431dd24ad17c6bef574e986c7e90
+94a9df2e3d00f97236df203ba29f6cbd59957ced36e6b32b26b50962be5b02b7
+339c0d2ad09e900f47e0a662f55db36f0190b8541de189745a7ef82c5b926df5
+723d84b1c232c5289a5ccb45d6d74b9935ed7852673d88d88387516920e9001c
+3c68bd323cca40a1bbec69dc25f9bd768a93a8eb01a14c62d4003184a5aac650
+69055cc244af88e1ba2f561116bec840507dca28d7664969616aa9f6ecf19f9e
+72f6b2c2f5f3c22f42c5e94a4c18b9138548f12e72a14869c1414943140cbad3
+fecfa5f878ee4fe76c6138bd4a45d83784967740d81792fba8899db2e760e328
+cf09276afc20b24d36162a1764b35b5d2aae79377f303657335fd39b1de6e906
+af5f070fe301a3ebfb0fcf64e264a46b2ca39899ec505b8d27e307b6d86c55c9
+8dc7c6ba86a734db20c4351852969e8f18cae407227fc1a98fcbd49dc753e7c5
+d224a733a0beb0707d2b58ae023e8670baea8bf0a47eeb789826f74b06735c05
+2dd9d196f731a55a046a9dc89464e5e03a2b3b853dea57910b9be7c5958b807b
+8d7fac9f8c2c1556f6fcd797434f273d57f4344b973f0dcaefa2a2652f92353b
+4f68808e9a5c734e3205ba9b07efdeba03645f0e76703ab092571f3f8d10604c
+f811b503beed49fe7692b95e0a43383ead65b9279620968ac61191aa72390119
+5f77670e0b1f9ad52191d95d0f3a23b68e203887caeecbbd1f947d4366e42f90
+f23cc56fa3618423ac486fb437bad866c96ce91d122559dbeb825cc9d46c049a
+06f58719c3ef8e51320d1ff81aa186538caba29b34dbf09969dc3692dc330a54
+ac69f347d780e4df7a5c486bdc8d2b5071e7d20269f815325bc08aac4ce1ad2e
+35d1abc7f95d6465f24180ad62c9e4551423a5abab4c7aeaffaf895524b49a71
+ead42503ee16617895b0f4e839348f08373913ba22324ad415c84d6669996800
+6801aee63e1feff8fa0157fc96ca445c70d9513d984f87bb46890fcabf9b12b8
+fb23b10a29eed95d8e8246a691182faf32070895d40ef1ecc63edd75fe29df3d
+167e1bf283badf2a3607e1f45f43fd753ccd9a0b3f825a8f8d0d2f8d5924fdfb
+20500881191124001f4727b11f59ad55cca77d4ac75dae0a76252e94e60cdfa8
+151b3f7530ef46375a764a73e53871271368db11fe35e85f0c8ff9c580ac847d
+1849c97d5f99365bed742b37eacd0edc9ca1b7e2c165dc08288bddac6506709e
+841dabf092f2ff1f259f05f3c3e1d925e2350fb10bd422875f397ab7cae3d401
+4821abb9ce59aa38b2de6fc05842f4a728a79ba86778be16399d4fed3e9995b6
+d789b221d5109db061e9f5cbc57b052f9b856902865709edb8925e4e3f778420
+e7a1650f4f0345567504f397f48480d4553aaca1fe982134e16487c6f4679dcd
+c35ae71a3425b92bc5e18c1a8b311b8068c90c8862ba29c644f522e872765fbe
+da0273d8dd8c2731ec7a51f673078326239e8b9b520cfae65f308b120c18eb94
+5bb6228e127adf7e9168ee4e9722bfa16d6f390fa34f858ece5f54f7c3edb2c8
+021c495bff498810063d6edba1fff3ad3f97aa721ba3f817242971b4be0daaa0
+991a1e99f301a1efa481978ae34cfc52eb7c7309ee5c7178144729ea7fdad825
+ed7e7a8024ac7e74a29d4cd8676ab05fee0d7e6ac395862b3e4b5bb1237c7ccd
+09a8c7d3020665580ad5b3daa8a2669ffc542ce0710546c52d5de733a209a945
+5ee57ed98150ec087ba32f032d79043123182f56ba0471b4f08fc46a5d7a870f
+c726110ef7f0da0c1d21b07bcb9beddbaa810f5c92caa320961fea17d27229e5
+be6a6438d04bdbb3bb41b98c8e123ea905ca4abdb294f06423f3d2f3d750c8a8
+5989aad02a48a5e954d5cb293a2d144e25ed3c012cb1eacf2e4a9a8371c858a8
+3ab1a09a0fbf7e606a1b12a1233c9f336a36ecfdbd20bd5f6d789ae502f06773
+2925297029eb9fb15e8fdf1da45b707f20c7bb9424e578061ad7cd1bbe13d48b
+e6431e8c37203dd4205e2ab78f36860f8c8ec7678e3a6c6f561f7ffdefb4d4b2
+ed5547210f50d30745247158de1b58509ab8113f096c32d7798239fee7d2787b
+e9ca4a5e870318cc7cbbefa496721f804658160abbb573388c7234b8557ee15d
+87245a71d0a45181b39cdb5780aa00b232b93703c8f4f7304d3f3fad773bf7ee
+60a5ad9ecf7f618bd21caa9bd82b5df1729efc0d9fcb22c86b9ba3ac7605df8f
+d6f7053d844da14e9d05859c7c53e14d94a3931061f7ffeb74a28bdc0bbe35ba
+3fac5595adb3126a0d38c58a94532401b9080aa32347ddb67dfa5991d69c156b
+28b42e000bf7b1f96d852769e2e4c87d0c8987c45e333db7efe021c9a9e48a55
+86f0881c10ac1ba40c96c3bb3f42b72ac21071fa40dddb86a5830dbb928c5e60
+f32ebfebc861c19d608fbad4f5e845264f3fb26b72d9533b1e8258c403e99a51
+5e28a2f2a42d85710df2780a8f87c3741de0919c81efcc2b1e1af07e19105ad8
+956c173009d1b7d86b9e768281b075e157d74c909ec98e2961860eeb19fc3a18
+769d2563a8fe05e74085a9dbd41503a817c9eb1da6b92c18dc44cbea6f091614
+187b3f61203f9033bde1808a6853a7a6e15022fb0e0141479941b2c58816669b
+d87ff20d736cc9d31bf74ced586da55b4ac2746126ee116841acd1eb01b660cf
+592075a8ba527d244e401fec6cc2812a0f5e3b640e82a6a6d1525bd20f2000bc
+9457d06a5382eb31a2cf216c6b59153f3c8cbdb52706e034b8aba5c8c05bfc93
+2267c9aeb45b64e3c02f71ae15c2d04e6aa1510a748ceb406c75537849478fc1
+8c702f99b181c0e768808a4aad7e64f51f7368045c448fbc6d77b907f62ed52f
+6c2c084de7d8bb1757b46209477914a781489444b9fada414c2bebf6522f7d89
+4828b28dd78f8b7e2700b9d7e163ba84ac04c6e060cd4f77a35bab1199ac0507
+b8742db4bc69340ef6e56f832112c7cd4a9247b51648faf9456df25f02e03e82
+8a217250abc0916451ae60a2297648e0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+dup 162 /periodcentered put
+dup 163 /multiply put
+dup 164 /asteriskmath put
+dup 174 /circledivide put
+dup 175 /circledot put
+dup 176 /circlecopyrt put
+dup 177 /openbullet put
+dup 178 /bullet put
+dup 179 /equivasymptotic put
+dup 180 /equivalence put
+dup 183 /lessequal put
+dup 184 /greaterequal put
+dup 186 /followsequal put
+dup 187 /similar put
+dup 188 /approxequal put
+dup 189 /propersubset put
+dup 190 /propersuperset put
+dup 191 /lessmuch put
+dup 195 /arrowleft put
+dup 49 /infinity put
+dup 50 /element put
+dup 54 /negationslash put
+dup 102 /braceleft put
+dup 103 /braceright put
+dup 106 /bar put
+dup 107 /bardbl put
+dup 112 /radical put
+dup 120 /section put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+/UniqueXX 5000820 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f67052788e6703bb5ee49533870bca1f113ad8
+3750d597b842d8d96c423ba1273ddd32f3a54a912a443fcd44f7c3a6fe3956b0
+aa1e784aaec6fce08dae0c76da9d0a3eba57b98a6233d9e9f0c3f00fcc6b2c6a
+9ba23af389e6dfff4efec3de05d6276c6be417703ce508377f25960ef4ed83b4
+9b01b873f3a639ce00f356229b6477a081933fef3bb80e2b9dffa7f75567b1fa
+4d739b772f8d674e567534c6c5bbf1cf615372be20b18472f7aa58be8c216dbd
+df81cc0a86b6d8318ca68fe22c8af13b54d7576fe4ca5a7af9005ea5cc4edb79
+c0ab668e4fec4b7f5a9eb5f0e4c088cd818ecc4feb4b40ec8bd2981bf2336074
+b64c43002591893a571bbe4dd05506a93c40f517d06cb123975ca3614a4e4dad
+46370c34f8d1b9212235a51bf544f5601e8b068a3bc1c9d55b08d2115eae8b2f
+c460cfd0316bcb531869e2fa9a909134580c9c7a1cc20aea7cd103ce37b64831
+7b452e029ba1099d3683220ad92791ab32ea08f4894258ed244f4505393a6dfb
+de8da7c6c514d5a13c2a3b627521f9f56e1e7e79d8decaf64d752f82b21990fd
+3ec95910a8ee3537f5833968c018338eb7d6e9979576f1b4da14e21b913105aa
+5323c55c4b3bfd8b327b93bc239f83af98c2ef99eef48c61a7799b69a22a8874
+d048211f016536ab1e46a861519f59fc03fd4c62d85fd9fd13b00531614ee78e
+485ee532e760b66af956dcccbc06469cb7d2d23c2d1814d0a548d1c646d80b26
+0270e661571028df79a0a4a1654955147eba5bd760c55aa20e6ff116e6717a5f
+03b4a8da867cd14e5ee69bb63b32ed877af39a9e14905d84f586ec8b89272c70
+33a90cabf0defb337956da64e790c5ec2f25646e780747c648076566521ddec4
+b4dc5c5c1650fb821e6baa37aa4e1c7e23141365fb50781c4fc8afe7423ca2dc
+9ebbd329256f421d2c67c7a77ac72fe09fe1ed2f2cb89577749c33ffdbfa4eba
+0aa8a6ba019d96153e6c42811786eff6ee05aac66f58c9bdf52cb325f83144b4
+8e93e2b2ce2e52f1216bdedf0f091d9772709e6da34be3687b3fb8fdad6138b8
+6f85a18cdba0e622905cf7186d6292bf6f43a672ca80f670ed2eb9c2343565ae
+528f2b431cba0f4b6e91133c3b4474327c2468d259d274a7b27380e00d7bf3ea
+d2eb464b112e01c6ab8802c437080e1decaab7e52d99788b3859cfd7237a7187
+bb4d2e9a19ec66612677b2d19fc6ea5d0b115ba905c503f4068c42c3d3df725a
+91bfe5c1377ab7db3fa68692f2a7c2110f26d5574d145e3fbd9c2370782f52ca
+34c358331bea1683be7c4dcf877be2f1f7f316c95c12bad12cb5ebf72c86dce8
+5995181c9db0161b7d9909a9de561a65f781a6880e0faecee021643b62495e10
+6c4f4f446652164d7d8d4b5d93cbd35ba98f4d50b9d17c018025d4aff2f56a0f
+0a5c7781fa80598211b9e633a5f9c07010fc2e41e3f14efa64630386f86afa03
+77681d789f0583604fde84f266ac756b85237985cbba273a047a8ccd3520c467
+9f6a225c51dc49150d1838fa881e4df026898af7cc14cd15ee7c396233390c0a
+4614fe054ce795d7a8e9420bfaeeda1d2ac534b7e014d5ca73331ea7431dc71e
+bcc6fa313ea13a7a6a3708509d238efb41c53075ee3a9facb412f5273bb9fa3d
+d8c14479843848fecbe3fa538ce20a4c53e79e7aa34c14b67b72e370ae29abe5
+1e7c6248bf4197dcc2e4b29009374df21442fbfa9f508469dc3ed69269d28777
+458eec8bb2ad48b48fddc96ca8bc0c13303a5038eac054da4b868713e1d2ef20
+7cea33130c4ff26dc36352b759cd61ef9675a62e593dddd14f045d9b27a0bb7c
+4020c117070b38ccbc141935d1efa456378259b16b995676a9396e3177245aaa
+24b497154723068e0f05c911137f15e40f004cd1b4935b54af97a03d8d5b1cae
+68e5d365b1f491c4b36a2860e8d2bf4515655e502dc07df0051d974b98979415
+af727e828fa0b0d41ac37c5afba0156b261993b4e16ff0d7e3e6f30d740d19fe
+8dd29965ab06703ad28ddff7ecd354ddc82bd8eeaed7daacd6b1b8d9df9deff6
+f470baf2d4f37e10882545f84439811c5713ca0863bce38be2e6ed09c9ae6a67
+7814dff02ae74f287930c8ba9376f0ccbb4c833a44b2a365029c7e22e554206f
+9286e794017d2df8ffadd4dc8cbdb769c7740993a7f360ab99b2cb18e6c9bb46
+3e5c197d001c5ca76072f71b9e5ccf80330fa0efef96de35c7e5da2e2b768388
+0fb4c3b1dcaeb3d9873aa116ac1614ebf35f6eea68947479fa73b91b0d0104a0
+f02bef198632cc1424f6d66f449f574d1a1bba225b81c39c87c3d4a99cd40981
+32bd41ad4a1c3477c5943e94448addd6d87103fb449fc71efe206c50b7b289a2
+68eeda329cd5169c4bef4e1253eae1d589cc0fac65a9df3c517123ec3d61aa2b
+e9532a9c3aa5903fbbf1fc893372532ab1f368185265d9ebf7a303a53757897c
+b4729d802f9fd5a5e77b5c7e33573daa11c88c87375ebe3433152f1eea3c31a7
+51db8435eec3f1e18f748b575e22e578f49bc0bb27207b21fe884b1546d2f146
+754a3d69d21e515855f9c469e99786ca873c00eb2d7129d68e9f30331e8bbb6a
+8871f1ab267b0c9997935f15bb1eeca75ed233a822c30630d93b7d8e6256c5b3
+d4462344576ca47ad7758f9f43ae49bcd28fe14d1b16b44ec210c67f6e5d9a5e
+18251d582c1a9c0143987880f8a535495d2647c2dcc250c84972d978abd9df6a
+d1dc2b5b7e49a2de23f0f2e4a804cb3bb23324cf9d93bad03d72d92a907e4e01
+d31438d419b3a5ad74cc547e75417c22f6cfef5f622687e356ac45db516d38e5
+deb8d31e73577bbe1e6566bd930b18608362d05a1f83a58841c095401ad58839
+6b1ffec91f52667fdeea0eceaf5457e42e5731b84a6a82417ef92b61c3f297ca
+a3f9d22a6007f759b81d0be026140bbb13ea69a70f1807e6ce6fae697e2be767
+45cb9688b055a1ce3089c7bc1060a8332f9aa99f96aed712e1a36d83af80be54
+7e13517ec175bb6e2121885069c73af6b5fe42164a7e94e9c06235c08bcdc6e9
+5f1ea33aab4ab3e4eabafacc6a85a2d0980020ed966c29db875bdeb61d3d6b3d
+90322868a0ed6722abe07fe7c382ee77a48443b478312feafb87466ec41c8287
+8707ff9bc6b5adb1c108799b3dde9194c3c59a31924a8870e0170566029ef9b7
+cb0b0299567329b69db18cd191b94771810ca8585c90975b16c5697e4c33342f
+d1965531847b64be078b2ab424a55ca9a2b88c2f58370e8c1f7c84da4b1ea71e
+61f37692808645e82d20cf69381a7eba5a57fe881d82617cb0ab8210eb41bdb7
+0cbce4087c232ff29346be36092f110a63e95abc8b0ac6a84cfd4d3f1003ffad
+74cc036ba1b31186227853c4c3a4040323128672d3a41a5c6540e45b0400a4dd
+e00eb6da403a123cc3d66f4216cb2bfbbc3e15983fa0bb0246a9f55dea3b35f4
+ffe1b16f349eefb1721efb8f05614db3024160fb914beedafeb96612b379877a
+25aeafb94a0dd6d4863c1ebbddb09789627702bf9385c8ff4ca769e112b8e611
+271bf85c271bc4b39005ea387c1904b8935c7291f515ea48be00598be27314c4
+d4191408141341ed0d6ab45244321b2a9ceaed191e98a753e9fb21f27fddb9e3
+57addea67c83af6c10ca9a87b6ac9ea54fe0e27b9af6b2a55e1905bb147bcfa9
+a76edb836d208649e054b4fcd4d3a1ba378900643e4fc1208e4eef074eada3bb
+ccfe554866be9cc340e63770246aeed58186ffba44d1790081af8bb8b7b8b042
+c2bf5db82e1438d908de0f7eb7cda50c370fc4ec5ead7f2713251ab8b762c2e9
+9ceca287ec000c26b6b1ee959daf156e38160fce7e8e80a64126d6c308679151
+78c7e863540a3c2fa18ca3a6cbf0016ff42b8106fbf83c9a2dd780c09f4fb0d6
+3260e05da1447a8dce8d94901dd79b0f8dde1b1c0f06b887a3988107842839d6
+0b02ef4f8a7042db331e33ba0162a5c5000a0a4ae4f56c57e33150d0f79eb34d
+9319f347261fbec1f6bf0447fffee6e002717020d838c6acd76b74a329852604
+f1e819fb7f3ee43d5a3b9366ed6a6b3d781fe3101d01bde699a40fc77360c430
+2a862b260177578d82ea7dc4fbd76ebc9423e361d75f97c08b46a984e20bb80a
+1fa97e3fe59777b6961a327d75a57825015dfca3c53dbe94fe5e9164886ca39a
+2c9066a242eec737c6fa20fee4bbd9a29ea7d01bf11ebc313fb674cbfd51b252
+540fbce3f5aa51e24584efd0a4781396e129af387ba06ebb0df421a16008b7c8
+3f9119567447b471acc4ca697693a954c91a08dc79cddd06e2b9d0801433d848
+686f20f82057dba3b24eb12c9bbdb316f43fedcd04179acf3066fcdfa3c37493
+55163d12ed0e653f38a35b34c6b6fde059a6e46100f9227d265aded38cf11e1d
+66063235a81ae17286cfccc44fad4a5f4429d4a224cd9571bebf80923da44a85
+b523517e88220804ca902c9f1bb2f467b2c743c05f18d5de087c554e4232e72f
+793b2bbbf169c43727fc6eb9ac1c6fea097b7ab54a91e04da15df1c6f4423d81
+2458bfd293bc53e6857cbc7bf5b4f4e26fa17fd8000b0333b70b71b283c75f9b
+9a3ef32dbdd115a70e5225f1df356a48d6d6e44b460e6a61c2f28faf44111be6
+57b3f7c6eb11a441d9ca55dd19c1a089488f6a501a2b4352db49e587a1dccd4a
+059c51d3f0ab923af3d5399072249994b8257472c3ce331a10f7d381d6e87af3
+d730c292a5891068ddb89232b99defce76f5df3eb78e961496361e5fbbdab208
+086e65c08c207b2ce7b843f8307792d4aca49da14acb3a7b55cc431286892825
+8ff092d6110ba38d8995b71d7a4c2739d0574988cf1b6373d76a67cf8c705afd
+4a00d23b73b1b2094da23759043d3922ff01e111d741c5e15703d4bef35d7f56
+4bf3b7810b1447a35a92509173c334b61d743fbac1a3b422e6e2918c21e311f5
+148e9fadae30920dedfa7033276fcee93293aecbc8c996b022de288d9a3ebd84
+a8980a602ace87685cc781f24590f88cf528065692a434d14632f14cbcd2e9c2
+c66b6bd14c3f4994536e2aa26ba6c9d205d656e524fb47a6fd2fa901a928e7e5
+d0fc124b3c2b02a6563fc2c0357623dbb93edde2c16114ade852742c11cbe9d0
+1b86751aef7d3f98780588bef2a88f8b33d1ef540baca0897b3aee87d76c798c
+43f2ab722edbc8de70a46b35c322057c5b9649716278e7484a24e89de76a66a1
+5e4f1c09aaddb19771982bf32bf592b6815176015239d70707ecc4bf35544680
+b3d019b6cd60fa32631e5bed3fc9aed2c3bd2ece1fc11f4824100c07cc0b2d84
+d4f84f12652f353a84f3b32d6006642ab13a9f532a31c5b2f0614c7862a95de2
+d09803412c56b5f5752a8d12b1c604246f26b0a248b44a0de6ce603203d50878
+a5a7055aac7da3d72db5cd7751a80ff018c352bdc33a8399394231152968614d
+474dee49013f785a002dd97ac40843bec081e8035f09e8ea4311965f365479a8
+fe80e7aa1009284da80ca441b2550101f54498d1ff943034e87b9313eb6f17d7
+9df7064cc00962e29a0de9d441dc63d2864ab1060fee881f239e16815ee0d357
+6962a81c46c076341d7539e5a5983385546181219802d5a11446109dc548701e
+fb811ca29095e25ab148a80a80fc986f652f2c8ebe1f8ebe1623a95bf63199ea
+ffb6eb9f29bab6fc357d51200af2a0132be442091e8d7a9f6262899f9281f4ca
+6f0c3faaab38592a3932c4589d5773722a1b39e499ec0626a9e7a3c4463c4205
+cca63705a47ebef6ca45054fe4a4960609ce93791203186f1f6c2ccd19a891df
+27f2631a87ea006236ad0343140e35a79bc064bbfe0d15c5fc767a9b55c1b0ab
+f37c6c8754b0189e9a7eab7dbb2328a48a32d174b39ac6d0eab4ee16a3af33be
+a276347629ca9d0712f6a8ff405752b05a17095fb412a540624176facf799dde
+1f9a2b85c39e0913cf998a8783ee71ebb75c8592f8039776f3ab0cda1743ddcb
+c1b65640e76476bbb2fefe1dc445306174827b93c62ac29b02820548dfec7080
+cab5c7d0d3ff6ef7e9bb2ee8e358cf6bd9968de439017f3d52f6f0ce7f3d55c7
+b611bd4d7d36a2ae0829d5b3497b80b09657559805db88baa01dbade7b2fb63a
+52e112588ca01b894168f33d9f1cc21c2e673d73d30921d8454b17bab231e874
+500e7e36bbc986c93dd27f14ccf4beac503079ddaa49d64cee602658698517e3
+c572b74fb1b818581dbca00921a3e54dc612e38857b6be9264716c4a38dd141d
+611bb7418808ff6e1a671121c496bc7a6d50b2678be312516086f1b117685c65
+a8ed415d0614a020c7a49af4861b651b110648736f9dee37b5bb787cd5898f20
+9891c452eae8b654c401baf2909f872d9c6520bbbc195d2b0eb80017a0b00724
+9c5c3a2e918a0dc8f4ff80d7cda7a303c2703bd5edd9008025634a1b87a86863
+fedddd795984c0abcdc3fc74a7934374289ee2e0e49393e10c6e229253d10931
+98c6ad16c3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 183 /caron put
+dup 184 /breve put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+/UniqueXX 5000769 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be79011d1f5bfae5c1f476ee6f05eb1d2caeb
+269958b194521197b312fcced4867f3c8fbd030bd715d8ffda1dcd454b174e7a
+1a97b59fe770e67702519d9d9b23d61ac08424d555242a8ca08c49aef300945d
+99b999a79ce74804ae6bfde623f4463371442f6523a5f6ce19c839a708c02513
+2e22c696c8ccade45680e5197189d0f98e7f0d5f955e353970b392cf530a68cc
+56b0035ddfbf206c3074beeb0739dcbca272a6e629fb7aea2c5ba7bae50c7b4c
+a595df78200c352997ec3ee564df229fbb5473f5e8ccb1cc0153e9a7e299a8ea
+a29b69d1b622b1f0cffc58291248759607d91150cb0651120970dc9f743bebef
+44f6ae92facec57658999c8bf01f60611560043962c0695e1bb87d090e0fdaab
+659d6557208a660be9aeef8ae55f71b8bc76394d792967e41bd8023b6e7f8c3d
+9987d5e54c53bf2bbb32855b946473b44833bd78873df8e4c7e668ffff25aabb
+8da4148f744b9d0524d6cb8281247b3052cc5d66f3f1bcf8a56a3fb446ea587b
+d8be30257652cee035628aeddfd8283b5ad21b8b1480ad24d898970ac8a1e33e
+543ce4e3c48f9ee621c5ce3e8ae930f890011b630866c988606068d9e92396eb
+f51bb3db204505fc3d09d4701ac703a14d92bbfe27bd7411b363a88e33a8e9a8
+025ac31f21e73dc52b333b918d0b1270c54873a490222d041a66e0192612be6d
+2c88958a8f70c10390146ee5091df020ab97675e8e6901226eed50125d36c221
+be8f20647442444b13f0325f899b8fa15e1414119b45f920f73dc3496f6de0dd
+4418a1181e791b49a52866c79d377494beff7f1b444111bca4fc2bfb7279fa29
+38fa9be2de762f20d470813c4ee0034371812efb9f87014528b7a09be4f01f1f
+84de922d6c66d7f6ff96a49233b2396d9c19b85b132ff565893ad3a11ddb88e4
+69fc1decd51e5b3fadfd1e3e50914839dee5d5d2b63f83e8a7953833efe2492a
+30314f32e2bd9a758f2abda8107618eef886f13905eece29e3a0267fa506a772
+71c89450b6cb4320ebed4816d28ca93f9f45fd263605c532a51968e7cda65a24
+4d9aaa06c49e10092e6847add26deeb0ff2ab45db69a04951c754590ba3fcad0
+9ca3cc148a1b25c124849baccba968e89cbbb471e0caec2c59987cc379923d87
+4b81f25892e2cc5cc121193d1d8cfa296235c88b207e87969f993f72350a2b3b
+82d38b977e6adac260d33cf00cb3751aae0ab09236842fd2711036ddd098a8ca
+695dd0b21bd5c0c2f4d9d994f96595931a0178396350fa20d5aa5ea05f163291
+5f61cfe2d4227bd666e8cf6c218d5d2625f8ebc48c6b2137fcc321bd94678db6
+121845f7938623b02241b71bb69380061e75bf7d5ee5f1ef6e7400cec3280fbb
+f8d7c3d5ba5b65afcabb52fa34856d41de0606f69a6545adf92ce7269852fb75
+5ac0fd9b1741e46013890ec47392e0a34dc5134dac088fb6723f6219660fa41f
+06bb5d82d108b01a5ec938918f395ca2f032ea55c05e095763cbd8571cfda58d
+f9d866a3306196b190671fb62c499f2fa4385c55b8233daa48e0bb11915a23d3
+4153da7cdbe4d593222f0f527da855652348842c5c79b7faf385b4a428addb70
+1ab67ba9c48e181f54ac966aa515b5d1d94008f54200a8f7aaadc3759efa2925
+b8bdc6c59b765133721cb850e7ee9668df68d76c30d3d79d030747c41b2c0f42
+58c32baee8a42a8b3324134a94463dbfdf79474b5fa384ce22f1270e206d4903
+f5f9066abcd2ff0ad32fcbf36da5418957cec0a0072ac0d64c6976baccffeb01
+c196f85bddf3be5945dafadcb4efa56c2aa69eca3190f4f9d6bde71a36119828
+99815206cdd4307e8c0d974ab9c0399b9d8c8c7cff7c8e4b3785cc0eabca6ce5
+cdd7726ba9de5e3d11bcb77616db5b1c65e56eed0aa4cf07b87f40bd3376fd9c
+ec1c080ba9be908fb28c2331425b95063ab3a04f88ec9144bc6b8f68ae9ceb89
+d8d70d399890b75ca962ba13e2751dc35e0c8961080062de8a21f1c1715479d5
+e28690497026352fe63739f385ab96affec5881042c95a00fcd44b4104261c42
+61d8b8486fc84cf1fe1bb01912f896afaba117383b18b9cf53b031bad6e0bcc9
+fbe76a69a315928ae9aacafd93030a9d9c2bd4285030b5eb40d5ce34cccf6cfe
+22a3490a4fa4148731f9ae98ea557dbe25132a5939e4fda6a01164cd3093b49b
+547883c7ae6a910e5ff978520020c42efddf5398abf56d94dd460301cacec667
+348d9ef2d76bf58f4c5992eacda761934577887e30b46787326a097557726d3f
+3ab4f9c258063784bbba6c07c96e536742949a9335e91a1df69f88c5dac50627
+25d23932c313fd71148bd92871a96df8a1132dee53355e05a57d2c129784cc41
+20ac6f305b9b7a111b6b7f39990aaa2bdac4e379d9571b52490f839c71101bcb
+67c6c3f1ab7f309edb67c16611a7822107d50f9cf4c1a2cd148018f0c050e489
+e8daa28ed8264c0ca2e3308fa2f54efa90cf7a6794b159b3acbf03fb5ed0cbb9
+787b6daf1c6bec5e825a883d6edfdb4345bfedd6ee44851a61996af8626abbc6
+8283af1e0e8b02eb27dfbe6cd2be0373ac25413d2a2038afd41f8d23cb846a56
+827310d47aefae3360ab92ea64317b010edf633622145e05a606646701669f80
+ffa4745e4f1ec09a2c0721519493467c0b744259edaaff94d28c9ef0687221b0
+5755adad9eb9432d6346637a820e3137a15d824a6104e2f635cafcc060dd6563
+2f68fdd27d69c8079a7644be2bc794f95f63e4e2f87563e9f7a6fd00815dc8b7
+577ff4b6ed0612494c4592b3ca7725c363e50fd5995a7a616e4ed84b4ec7f3f4
+cc84828fc0f6d0c4dadeb76f31c86f9d056c5ae42d9ca6912f9e022437f5f06a
+5975132da9d24c2373ceeda8fd9458dfa822d1bd5e5aaf66b73b8b88a3e31b1e
+2f7dcbe49c0cbe66af6cb664202dd335368a6f97c6ae6f313bfa825e3a6f1bcb
+167d10c21e8f08e8fd5c2ef85e136da737dc625064415c9e20a0fbeba375f33c
+9b649ff085ed4c0333fd03ba1d4bc720d88f2a462a38457bc96370ad9037976b
+5b71df8bddcee1851289f0a834b8fd9e8dfecc5244509c3a48b77f482c03600b
+937940b9cea9dd844c0d891c7fa735a19a5ca52a58b5439b3d96b5d03da2dd7c
+4b5886e6daaf0689cc248efbd3e29864f704b2001143592f9871755388d803c8
+06a788a9f2a45e99690df9ae2793e0575e013b361f1020810c4135df2aa21d00
+5d3970caceb2a9bf9cf70ca8cf18e054a0162821f49fd5d5aba0a3bc48be6616
+a023570f3f6b2320e437435470ea4ef9b5f06986469b5a1f6c5b0d7f09746f0f
+09050a0e3ad9ce5907a36b9e9cef1bf7eee7313bd3a845c7c63c9c203b9ca4c0
+8be6b6b15d5437d5e8fc903abf609793f5053ed315e0199e90616fd11e05ed92
+a653429a85cdf2eb38996a8602587192b906de0473ea94163f0d6bbfa4ac4284
+883e19ac136d090696adae867936089109644b1ec10a73f909e19e2c12799206
+973e79b5ad622ef22f34c681940009720121e87b37d9f59d56fe022c61b9b7f1
+a10905c0b45ab5740d6a51333cc4482d53ccc5704f1e7f319d132f06a779128d
+6e0ae0a99f7042085e0a25fed1aeeb88023b56a1fd74e6b4f2d9b51612fc59e9
+de9972d5ad452f3ed7cf299caed38d162bb8d2f3acf15688168e98039d2651e6
+17955b2d2b778cfb4285c7313519f18cac42e16e1acbb50aaecb92539ee77b68
+1abf927e15a92d2c879aa8c5cc523ee2a6e5e3daa3b8bb20c171b0fd39495563
+628c6394b1ca4843c2da4c4dbe2fbdde7e82f31df8bd59c0c24c57dbf405f631
+1cc5f9d03cfcdfb2cb35eefc3bc1e33dde8bed9e9fdcf822e2350fe1d3d24521
+af12e62da24a3029e6af6a83f92700d1ce93cffef0db2421b0fbab709212e863
+0639ce0330816cf36d650a02720319a0c66f9dd72156954e0538f581204cff25
+9dd98daba604445177b151248af82e6ae07b14f27bbc6dd0973608685ef4c587
+2e4be5ef09ed77ac892bab42b8e57302dccface0e97fe168614881717b868446
+698e88a253d729c9965029d0caf759ce0ab88b34d4e4d336f984c2355bfd329a
+cadac6b937f1ad014324244b989fd11ee203bb0cbac720df293d83aeca5b8ea7
+efd3deb73b244e74a148d3d1b6444009fa75d6cd96831f23dac878b1754f392c
+b86c4bc52f924fdaa2e2418677291d604273e568654bf582c1ad861ac4a32464
+393d745d7eb59662916ccec3a00790d8769843c9ba7fb9728bc63f858bc3b46a
+f9d30a73b105f16fa38ec022b25542d2137b33794139f87ae143e5922978f8f3
+064e1cd0e4ddde25013f05d6b27e516b0c34394663921c128bb3ce04c9898905
+43542f9c3481cfd6c4eec7d945f48869e3c920fea7117aeebda4d1d8917d8638
+af0a95c8258dc58bc5d12eb8162b696de1afb13eb031fa921bfe0bb92bed606d
+39f9414392cb83d9ffa5f4c947faaf3ac30a0c0f28dd1b9bd9bdb491b745513f
+883e571c38e7161037026929a19a077d46af9c97c8b66e88dc0263bf6b03c209
+7ec6811af0e63108b963dbaeb4b434654be87e4f1665aba299d1a567c8d12a80
+9538fc5d5aec586202f0851ef444ca1688d56948d32d3aa69ec839514539f932
+ead96b20f1870332d9742a84fa25bc50c18cea210b62edddee66558952870d13
+05c60bf91f964d16fb8aa4f1b31e97aa619aa0301406b51b4555676f76d5b1f8
+d397f4c01ee618355ba909df6abf9aafdc2dc37eec111fde9cb809ea9c9f02f9
+1c0fd40626c62e1dc45f9b9d55cffa992d94af564970ed3cbe9095681152b2f4
+b81670bb77430f0d19a5be85b84c98010dde060acd828df44ed56d225298265b
+8a6991c5301889ae70d0ff8cb07924fcebd9a13ad3711655844787f186092202
+25267cbe03c0b7acbc8fa043eb0588ad85f1b228948c02472a6fb125438c2e66
+f530450b4aae81e85ee4465fd6350afeb150b80699afc03576a2c4f002116b86
+c6c05e52608e11c6c7df5605f229a7b564898b577144f5ed320a8d318fa8aca6
+30f385518e801c7a840f55a031e6e31f03283eb9e7a21eb5cf12e159f9176298
+f1e40d6b491fab594bf546f3a50792b0c93cfde1c4403600c8989ea0693bc37f
+25deabcff4eb979701533fb4b03a2a37ad7d40f85324cf962f758535fc0d9571
+4a6f1b4516ea54e5cf4d3968e635095f04024adf3bbedd804c9f08d6857c7887
+f521bdc08a8af75f199614f8595e2e3acf1f8848e9b5f448e89b2b7ce906004b
+3bdb45faedac787decf99ff41b2844fd84558f0a288ddc66c6e42774ff995da5
+938d0e6408eadb069a3b472e689e6c28e047240cc2ca962d324592bd91fb6216
+04c3cf147c3dde2a257092b941c664e034f2b3a23f5bae8d4f881d8869ef8af1
+d79d9bb68e77e5cfe035525317218e3584423b169d791c2221a5e7e073faef7d
+8648f31ec38209e8b4965b25d707b51afb11b6d80b36fcaf3add0703b4cac805
+e54778b54762526f2a7fe1cdfc463531d96065b7e4a99067f48ecfb24689b1f3
+6db3118956baa8aa1b6a644f867a63eb24cb97316e4f99868fc104940df59673
+34eea5a381e16986cdee5721497ab38ce0a4cd229806519310ac0850927b29f0
+0d00b8dba15446f595fd13d31e67411a45e8a958cbd06106cf5af3cc876ccdbf
+c25e574380a89a502310e5bf7347e47ce88dff98175c936d63255ca71b28c685
+99c879354721bfbd83f82ebc9a799a1f4f710e13d9b532c2ab7d4339a72bf149
+90c01592376e781a6e86baa0cb2ebf4ee9148a4321677ca7c3cc70d009b91bd8
+d6f85014d15c263abdd5146f15c34997b5ae30f529507758fb7017a0cf86edfd
+5215db37a2c3d34554fbd2ffebe3374b3326b310d70f27bb1507d07309d2bbc1
+cc23a15c9c73ea94ba7b3d6a5e0af4491f86ffec3f63e53a198064e506f2fa9b
+0454ce9a03a0cd4460d9d15c760fbed41399877c6752eaa8eb3b15af0d233ea0
+df67179ceaa5aa98d431264c069fc9d86ef1226e88cc115665a075b7b741c6f4
+c8c5a97034fb06b6ad2478ebb11b199e12a1f33df0bbbb7b7daa104a8fc14dd1
+95a49f8becec55423e08d4edc7d62407c1517613afe61ed172b353acabe1a049
+9b1eb277be9f267677f07997a604dda64be6bd7dd1dba35e0e16744c0e2d0575
+2f37c963a58fa4b93e40d08d29b8ce2151c3925fdc498303aac89b87a2cb0f69
+6cd9970606d4ee80d0ae6fcfe8dad3dd51286af0043769f4868b5a892f33ecae
+75154b9dbb23c444fd4488591d33582b6b526f51e9e319b58e5eed8fd4393aaa
+26b01b64a6d50484783b5e6ed5e16f43d9d1d0de8004ead1bc046bd25046e95f
+10ce0fd3a8387edd215035660cb56b7b2868412899507009bae4ed464e323242
+1f4e3fa860125242b5500c2e489f4d65252eab6c9fb902d9bc863a01d61e597a
+ae1f54c422d05e86d32c7aa40d60668523d68b549b93e8a4b64814fa9ad08c95
+134636b9c1458904dd1fd79d89aca374d54011f8e97512ae9645364e32c7c1b2
+6405ca13e88a23deb8d5f5bb292908e9669f439a8df1109c56f6bdd71e888401
+b1c29a4a0853503e40e8248928957a5b0da3921116d132a19a4cffe42122c472
+8464faac5c75aa37d07f38c60dc2dd67b8f12a4ceea5d7b7d10dd2ecbbf0c80c
+92e0208c75cb523e30ef7a593d38940e5b30d3e1430438d6fad536ad00972029
+4800750f716796b091f85d01142a56320b5b4a475f85c07d82c64ae6660a5bab
+54c0de643ee05d149d7654d46f1a68c20de9ca157bad01ac881a8362572a1d67
+83830fd26f8efff07b7da531c1535ffb30c1d41dc74bc5b4acbcfc394d8fa2fd
+b8ddfc8afbf4e46ab28845f2033ccb32564bbe78dc960148923edf17c2c1f57f
+8f2735e12db86b690605356f78bb57898a7301e0f8db7384a569f3994278ca31
+c8301a62b599ecece5c6b75d79630da11f6018736cd12a28d1bc5ad320e61717
+5790506f06af1e8747de6d1da749d565068cd99a91e77afd90c4c8de75a0ac27
+e4277702b4d03906e7629d9ccd93b0d0947bfe8ced50ad45dd1c2dd5350ba03d
+f83f1713d7bce3465a90dc16a10bc57268ea0317bef379b18f41362ad2cbde14
+cb27508511da7b8b698997a7684aeb4d5c01871120692bd6c4ac288efbab3ba4
+ad6f3ff6b2dea321a0c5a5bb6d0e4161ed1ee5d232edc3107647fc91ba72dbc4
+172b1d873b859553343a0cab6d51ffbca67ce3714c9f60e049ad9f5700411419
+e6674c61ff7961b9512879b8fdcfb58dbb0e3435c771352d24b8e002f1b98f2d
+372c9179bd833e24ea39098fe78a0a033b103c6bb4613b16e7060eb6246f347e
+f94ce2dfc5ea257b25cf478934254f1856074ad3833468faa587078805bac9a6
+35803c61cd76101db0fb3db9b37de7fbd283febbafa846b314b2f26f70d7434d
+e12460873466932f395e455367177fea70e1445ee03cfe4cbd8f7143c4dd2733
+5b7e2750f1408e0ad360da6a5db9cb350a15e13f5378151dbe7ddd5fd93e714f
+4ba962a022faa6d9fa9500c2eb8e5ddd0edc10ec9dccda834616b9640706acdd
+671adaef75cf878985b47a71b835fc4db5b7439af2133aa2ad9f777bb0bea824
+b2b6584a653bbb2d9d1d812266aaf416190d8e7035aa69ea537324084853aa35
+5b175f49f811904176886ca13309f022716840753a9f77996dbe77ac171464e4
+4764585c9e43cf9b54443c2b6ddc4542203bd278e2d7bf64fb0b612b774af879
+d7e28b50b36a8236fffd31edd8708fcc92e696e54bed612ef4791959c4826ba7
+4dadb2e3dcf5ac76aa7f836dc3394e7e793dd9ac6cc14034a50d75314bd778fc
+df2d0a61fc86f5f6a8d4ff4a93c3b65ad25d1e028d09be630551b65c73b83d7e
+a5fce6619ca46ff775854d845af8d20ee985e10115738ba9adfdce87c80e0126
+6283b4c4755c3dc3e8ea6978b8ae68373de22d1045f682a994b7529ee07c67d2
+8876cc1810f7318dda88f98c84d00a1ace09a8d3e16a0696eac3a984281466a6
+a9a3fe39319c14f73871f7be8f30306573692f213e44abd8c98b4ef2907b75db
+f65fdbf04d746bec5b3d503a694c029ae055fa1edfb43d6e7dcb5b82e2c54f60
+3aff715ba9f883e88bcc3f27fd423e9b264d9e722fc72a22182b1fa41bec7f6c
+0271c6d9cb087af037bd20b20aa7d9f105d4893ba297dddb90998fa1f4ca6a6c
+2d53ca489a9ec0ed0556f7719e3ea323c6a1448f7c188eca317faff05f4399df
+a42e6814ca6bd84ca9ab83b4c4fbbccdea58b7de23b86c658576843453c36077
+c526137891c38f234d681ac21545289a6cc947228b6a458c71b74baae3ab364c
+7e171ee55bfb6aead61ef91641eed166cb9be3572ec7a51c623ed55c855934b3
+77fcd4e6b5f8888cba436bf9a44e9338e912d82caaa57ed228290ed813cdeaa3
+982db695e616fd2e2ff47f77cd79564d27205d74d1dec159fdd94c52eec1f020
+8ebc477ea9410ef86e45ebe08bf9fd78525ca05f41de83f0b0bf1a93bf52dd41
+d84021cff9b754f41d9cfc2c1f9d06d77df649300679eee8a176f1fbc6d55173
+6f125344aabc9b4359af4b9bdb85248a6a2ac6a3bf1c147f64963c49cd6f9155
+45f638b366f6b0c8093cb7798f0ae7226410580831a14c934556a3c1c76bb4fb
+58f0db91de39135c80cdec181069589cf34af57050a7bb6f455a7af2560f624c
+39bdaf45dc64f8df51b8b62e258eb1a7e15476bef6dace8c0fe7088bf9814059
+507e97eed89d745634796174ba9d22180dd7161519f34739e4b2618cfe762f65
+8d84c145c533d6eb543bdc9e41ad085f632378b3e1f3bd0f0083cce578782f8b
+5849f1e62974b5f5dc976b41fbb3b7044e5ed7e37d4d923338e408473b184eca
+261ed76fcc3002fbd2f3a667145739959a24d73b224ca64006dfa2ea08cbc37b
+1c326021a531d337b7732254db505a1121de5adba19c639a3071565e991bf42d
+970c3585d5e9b4f8eed928c8069bdfde75e4c39bd3656132c1e2365574bea13d
+cc3d63e9df02ed8cbf29f807794579e6f19b9262ba2b6701c1821ec6d0585d4e
+ece7e8d7ca48fbfa450c17adb040bbd691c2b42d8bb242e08d263bfcc5249145
+fef683bbc0584b5568eb0ce727c1b7607fa20bd0ec58eab7bc52b20dfc5930ac
+b039afc4d005f5bd1e841734ed33b78a5d841c4ef427464e88d740c7715923d6
+c9dec3754799f73134eb201696052b5f23c8d9c915b8411be17d2774f44261d8
+87cf230d4d4ff904bf0e7ed2016169ee6104b84eccd1726fdea306f1f50056a5
+cc50338624a3a9b32e0c739c1beb45855752dc1d42f427c1fb731756634cf26f
+e8794be99c8e31a694e6407ae3d5cb9cdaf9d73c8d0b7e4866a780138161034d
+1d3628286ab0a281613902dc4dacef59fdfb3ffa4024ea3e9124f78226f5413c
+b737f69b626507db71cad34101d780bbc93ad2fb6aae5125c1ca42c280c2a65e
+ad0fb23ada752ad26639cdea27ed4b5ac38fb8bab916b41edc4aa672e5251fbc
+c1b62c11e0f3200f1581fdc63ecdbd268921fd99848d48a7e9f8c5fc3e417b84
+df31ac2ac24ccee8b36b78f83b52f60c88806581fed1247aaf932911e777c204
+90751ab9cedab35389f6d3ebde4aee4801cd80b2d88635eb1890fee05d944857
+264fafea20e4344f767b7d33748859e77143a256fc766ccfc08c1ff14d91184d
+d844067aa152af9514ccb6a262a0848ecd7b9b38686d5f0fd13e39b91bf5a320
+17b7b05e12d5d3e763650f5a89d9e24a458fc513f7c97d4a346c843348ced904
+b3fda3838915bfe49d0ff8059c7cd33078583e9a78ec433d2cdc45983ab980c5
+3b5854dfc6dd04a422d03ac49a3a8fad8e8963ade32cd52885f418d576ae6a6e
+ecc368854a1d152bf1adaaf2ee7acb50cbe5333efb87ece707b9a863acf4dd6b
+432c5b7a292508580682091320c89a32ab9c6612bf5f3712eacede2169b3e7bf
+78968f9ddb054333733890bcf698e42a679fd69b34467d3cf61c5c7cd2a7a77c
+4138a28559b5cafa565e20b7dbe83f9fd0db1b22503ce7ac1d83996d167064fd
+03b57aec675b139ee77d926309c9a934628a6507ba04a56790ced604140f816e
+2d8b06eef474ca75be463ae29b5c5cceeabb14de3597fca2ff765c55fdedafb6
+e9621c4cb3133f65a6edd4c1f5a19da469aaf3a9c1951a6463284487ac8eee3f
+ef5b04d880a64fb693974ffcd65dfaac9abfb25e2b1cb0545ac87bbd68401025
+f05bd01d167e7d18eb03eb815ff9dfbc66d8db2242d497066ecdaffb48e3b6e1
+f1361b93ae3de1ee297e3c28901baa190965fca5455c55628b76d224c9616bfa
+422f9f0c221946592365ad6288a4546e90bf80fd859aef0769c18576ace052e4
+7e27d3a949d46ef4438172bd443c8541f94aff82c64d342079b8cc002fe4ea84
+bde116d43d6c340c87a2c56fec4563acfde9f3eb18d1fd2855c960c65abb903d
+f0a17be7ece5b5409aa3ce2aea1854b639fdac6388ed6f1bd63c96a75cfdc3e2
+f7cadffb43844ec932648372f1354934047317078eac45e9fdb23edee85ce65b
+7c0daacffacb59137c2fa96b6ba84dff8568b6ca07f0004cc129a6931e5fb537
+d7dbd3925428571e336f7a5d224d3203f8920cd212d897c8d26add1ed40cf224
+10dfd1c91a11f63efb1f9841c6482474fb2c500d9255a783eceef6f1599a02f2
+8f7338ffe4495512ec5f29b91f2b021fa183420dbb015f10c6a4e1dbae3ab948
+a908f0ce2170471fcc5c744ec9dc5ff8984b489baac1f9cb8bbb8b7e8b1e7467
+0ae59cdd06c017e793363ede3c019ea09a3a89d48a6e1950a1f4175d552c6fb6
+5d4751318474e3e8d5d1f19d0abfe30516011defa9a049552be13787a8fe83e6
+0b79abd2568d0a8675b71325385bb8770e35ff66ab16f1904899418aee75d219
+e07a3656bde48794df1b0d578e5d8ec58e2f7ade1f77fb4943cf805ddc6873d5
+ce09638bcf24a896d765874e36b9a493bf30eecebff3b9be20dddfe59bb6fdcd
+f2be484531f279710dd3d6dde0ccd05ca52ad402fdf8dffde7ffcaab80688e81
+84fef0acf7ed327c043d67a19f7c1ecdab5be6861a20c85d9b304497cda61dc0
+fc240e3ae5b60222077bd54239627234bb25c37be9a99fe9d4cd053d66235d7d
+08ef00b2b07697902f9bce3aab0b71740864082cca1109e12d32a0f755166854
+5bae2f2a9be8357f0a56abadd7d6dc38fd6fd3a2643f52087788d617cced6775
+69c629d543e17baa52cb4bd70e546cf7b1909bbbf9956e24cc0bedb7afe74c61
+d88d0f302f67ca2260fd8957bc49f92b12a9cdad05b8a51cdc0cb68837c9e507
+31274a1a4afaf60988f15ff31eac2b0358c641939aa2813312c8d521f185966a
+9edf1d312d3d3635c2380e0cf483e3dc21531da9b9f1973e730ba19d9ddd71ce
+fc433b7c26a7d82d499577a8e7c034bf0517888d945fe4b4d0af7b7d75495390
+7999975213ae270676cebd26a5ca2651bcb24f7bfac45f81afb8b448d0cd7536
+5cb076143358e789ae1b575ddbe8bce5966ccd099b629fceca67eefb50f684b7
+6f648f94beac41078728a49ee1e7e1d197b56b4e679f3a365f9304de4cd514a3
+103b4aac731db5043e2470a7c7b7a6e613a463567df975f791578ad481e01a5b
+857b5132e32546ed431feb15796fde5ed21bcaa03f77be594b4010052557cabc
+bcc95c6504c079d0251f13379949ede1fc2afbde935abc942ee2e18735da1874
+039af87ca79acca22d5b0644095ec89dadb9a15c7c83f0446a9ab9ecb981239b
+b0c4cabe959624e995c6653e0a74678f1fa249bcac304a5710652bc6faa5c58f
+596312e66a9f2725f0884fa4e927e22724ac6067076968767480ebbcff855eb0
+e6802d426f271f6367a2cb6982cfa14ec6acd19dcada8c8656d4e9355fc9f31e
+b6eab328e08aafa5b4e51da1f3a58fe7db19bf198e2fc2a01ed4599156d82254
+0344a380b56552dc02b6b200841138012223763681561db9f9decc2b5e9e2ca8
+b8ee939e1a4e717f9614071bb4a432b39230d7afdaf4e91c9c366e18d334e533
+337b411deb363ae935c9562b02bfae5dd8bfd5391554d2e460dd3fa2bf7987f6
+8db1c6ea7fc9d49d8c72762252be696ac52f22dda3392c503359b532f6180e3e
+9225756fdfc09c53d4effe2dc37ceea8ca929f51bb38fd793bf694b5853fe145
+1d77e4426db489c5096c97a25ed2075eef8c328ef22b22c1ca6a87d553a42a21
+90851f448237f33f10cff1933e21622e76f51895c74a471b69c73d69b1eec01e
+f9557a3638af6f0716891d258d2bde7ba8acefa8bbe55f091304f6b34b418a63
+0ab431c2756a980461fbe3f83c8058d6fd219c7a722e7216feb56ec0c89f64b7
+2dc6c7f1a5c9422f9a3b2edf1d7bd0a3f5b09723c435145a4fb88a48b09b43c6
+eb767e9aaf375204b4105bec6d44a70029b91c47fc06c6a29be353ca6c6c3eed
+ebaf702cabd1e89713063b9da0056bacbc1ef82fd4d3c418364252416ce24ebf
+96119b984693e81712b452907b145a7d47c16de5b94f97bdc594b67aef7f20e5
+8ce81f3087aeca44f988a14ffee45233b566e6d46c4d1b94061c90b42b711255
+ad30589fab69e841e52cbc7d7076c9dafe04c935dd4e2df0c55569c7fb23eaea
+33d6de97a5ed1f64659d69988c67a570abc274c57cd27209f181bf76214c9a06
+15b54354179c1b2fcf6abcd3a8d3a27086dcd54163b6e5ec8c4bcaa370016fb7
+fecc591ed693711e3fb1e1fa1aee6069a876bdca03c56b506c3ace1f5564ede5
+7c27b1a81098e68f7a1b399f86f97549da77ee51bb6f58689244a1281ac91e4a
+776c6fb7cdddd4da49b28c37538843efb17da23f1e7da224de997e79d57cd1d9
+dd9838694d2a63211f606a3a176c2c22dd05a5803db609d961181c0aad6a617e
+62e28c6fd474a40c3daa015a10364354fa420bd5f015201a2903a8ad7d19b942
+49c8446e4c63421dda755a65e026cc0e2b66ce9c27c1e99892db7ea9fa40f303
+9bc84f6f7815c7ee36512e900e29cc93a71e7add44206844a88251a1b2b447dc
+bd1932d3c24b7afd8c21f24412ff067f9a09d3501362664dd88e83fd38090b79
+4160ab53b991347f71403de9971959fe43e092d9c0e770c31f87238d79a25bd0
+1be42755dcb8d88cecaeff54f6e449f7489ba5fe6577cbc07632809e17f23b78
+029cf4511f4f59b1c162bc6560dda8308c910e3cd82e9871089fd69cbc413d09
+c91778093405fc8e9e9f496314adc55d4ec6b6aa732690c9cd695b28515ae23f
+9b7336b161990d7c3f67c21e95f936101e564694949535ea098754ce632e86cb
+944ad29c6972ff2c492c8194f449337ee1f3530ee841f47281addd1f032f19e0
+43cb4030d94d297af1b47f28017d31fe969ba7cb6feac962ff2192bc148f2214
+fb7bcd622e957297d490bf9036f5f6422b1385d5f76710f673307072edfdf40c
+57534061a3e88e4087aabfd98db54addc5f08b98c7a6a8d52967af5d5951b098
+553240920610a66441235791867f738a0753cd353e92c1c9f784051705c92eca
+9a07b133b1dc1aa73b8f693ddab23899fffe932fb682ec2eb220e565dea41fa5
+b744759abb9381d8058159a4fe494d77b0b7129a0865fd14123fb11023ffd80c
+e9b47fa00a022d0dfe94cecac2d070c6f93e5a434519868dcee668912a42f885
+5b94cc2ac592e9a70ef77b456c9355e0e24c0644660f984fac532b6bf8176b86
+dde81e0719a7619c99cdc1202e4b7dc346d5dcae6ca3c3eae52984aa7d33f72a
+09f9a6da24245657d8fc39a287bf8317b3518549cd5901bff987b4121b77bf12
+2c045b18ce77395663bcbfb39fba8906e7b953a95f4d9c556a69a346ea466239
+44fc17274bf1d95048dc3fccf98d3eca0950fc39bf5469aeedfbff71d9baa089
+78201e6db9d10f4194ccffa4664737da637c0978ec1c53fb9209418913f6ae30
+9b750d4212a10aabb5885856c86682cd4104ecebf0f9291ab18c148a28ed9f5a
+acf76de5324054e227987fe22ece9633c809ac3efaafbfad49b7dc800d45f4c1
+3f23ee603502e26beb95d80ef8e7ac770e82217ce09831ea17775c589ddb88af
+e940636db84dd9d61caab7a949458f62b13309790c9623359d1a63846382ef13
+6bd8b9a3ce73afc0226527944726def62e99dfbe5f438c8604b8a32f881595f3
+305f1cb553382696a486c85c7b922408e0591c6a812a9bcde3886cdc60153c7a
+5aabfd83c83c37f9d1829d44c40a55991baceb4bffbc57cefc74a2627c1c0a87
+3d5ca30201457688ee732428ac6bb6a7fbad8fc252e138f88c8abd1980958241
+398b37112c673c42eff01cfee900ed05c33db0fcbefd574e47f4fb3de8c4fee9
+6ce55c24dcb9676d652fc2ca04b283d6c4bf1f7983b858c29dab780b7137bc95
+2609396027196e1a2125e609e9acbb0e52f65dbe3e31fc123473178d9d3f90d3
+974dfd098ff88f3c9255826cd3c653d6587374d905a76e770e1fa072201af37c
+5853e1e82c64be44a29bf34e7e7ea629eb436a59873d1c44b7322e601883c092
+cd4a9ceed857349c11670813532c818e7a76cabb8d39480c8f2f68034893b00b
+c7c527e12058c72355b9bd5a8ca3b768c0fb61dfb99e4cf16e770ee731e4b731
+985696793e55130801616d48c4c2ba2625cbdddc88eb4d1e3bfae57944b228f2
+3d1e035bf3d7dc29e0a7efcb0b2c0a6dc17bf03b24dd607bb4e0c55ef13cb7c6
+ff12c2a352d659d8910ae658807d55b79f1d1e4c9806501f46b49ba860e44c89
+5a3e97c208aeead771f9d64969d20cb7e25d4276d4bf6533e18e194c48f73811
+3ab60a274461254c56d11babf71259505e81d9010435e276ea3abe00458c81e5
+43b4d486723460090a4f3761557ff8642137fe7a55799b497f3d868f59f649e8
+7976f61bba96ce03f664f37b33fda348d285ccb0862593991715cf65f3e6d21c
+7479714d81bbb97e523f524fb2d474ccd14041e01660508b1e198ff4a6d4c67d
+446c11706c66e90841dbe14c4c5fb7d370265295f4e92ff92bbe828f2e483cc6
+ee326b12c5dd7387bc40363ad565df99c4759512b1ca37778d18145e93c92a5f
+d0336ad572cc4c3ebecfc8900f86412bf82106b2c1d17ea375c32767a65d3019
+f154a8add7278d3ed6c639a7e9578f65ae3630a96b99574509ab8a9a85efa3d4
+640383a2e454389e37a67adc10ccdffa415c37a9357e269415337d856b8baca7
+ac4e8f4fcad2a5f092bf1615cd371a1366b94fe95bdb17fa3851f9b79818e323
+0443a4b7363ddcb652fc18da1059b90d782784b48c6406b713d9cf68f4dab302
+08bc6838e645d86ac568641e7adf93a96de7b9f310726352112df9c7b250eda5
+d92f62a1f10965e2923cd7837867f1459f36caeafd7be196ceddbd6c88e8c838
+c53e4de2e372582401cd132bd32391483fbd5f6afd0624713fc655d78db1c0d8
+dd749d489db2bc5c5f1a43f80e9254d6da4b5494e72a87d948f79f79018ce18c
+11b28962206cb577ed4733c0fddb97a2bd110d4bb50caa1d4105d5e20eaf04f0
+545010df87a5a9545dac8e5045595f18b60fddcad9e67cc65f1edc32b4b18eef
+83da3d0e3ba5191a4f2df4c0db93c0dd71a8d746d9cd80eb09a7e28895ddb331
+c9adcd67cdfb03c2eb9c8af4ff147f4fb7e0043e43880ac9b68512dcf619cf73
+c1703689efcc566dad40d31b98f136393a864d68400902e9c3a3f55e1a32776a
+c6e971cbabe7be5a1139dcee6f4c5796eb4a1a578198feca66be366cdae67d3d
+4f5b2c029763d16ea199d9687aabf4eecc66672172ab06bb5143e695997d43d8
+eff8064f6062aa7f77405d1219e164c8f802fa47d137e7d690e75895a3265e1b
+667ea127fd41cec5e4f81379bc61d89002cdfd9d1b7bada081413340e0ef4c04
+d0504fde1c6d7bcdecb00e6210823142114b5d3372ab159dcd167d0cd81f298b
+e5fec3e8e5de8540fa56f217174da461267c7e98ff724f71d890670b47445556
+a793b8486e58a0d819d84512b25a9e44647318a44ed6daab53eb794510d592ae
+9bfba2c018f67f0cd0a46ad0c4cdc9fdbc946acc3add3b38f9d1e106a7531e8b
+43fd17b4dafa410fb754d4f05a5977670a9b8e140beff771b7b547d7c4d3bf47
+c6db9276040a92cec7a3f78ca335701501092e66e3428937e5b2935d459a3c3f
+f646f82c80561db87e1b703d17df82c2fa4ddacf913875cf2c6209c1b4afcd25
+dbfc1f3e7a5bfc81b9917580f50ac1ed96d788c085b9bc94b3e04cc3579db973
+fa1474f0aa26bfda4de480e885ca7c1c99ca285907b7a0df76d446a4ea16dcd9
+9dabf2146f84925ed94b6bddd12a677653b8675ac5212b074c0787ca7c84ac66
+34f39ab6a3128b8c08c02c2d3d129fdb246d322ef0970d9a52d0c5b187e97e61
+29552a1d13c9934242f2cb426186feb35c381f7420acd001559ccbdf7406baaf
+3688cf96005126229580fbeba5155da80704459b7551ba27c04489fd6d58f66e
+d09d57195e97b9447d079f6243b68edef119137208900eaebfed7deb92dfa1d5
+0f53b7092e5d9c67addcbb4163f777c61efd4ea7a94324b3b4ea1278e25d5cf1
+fe3228725ae2f5438aa6dfa881ee818623277104293bce534dc3e021db8f3e3f
+3b72a691d4d5bb0b5fa3244b0c5469a199c0d4afd068efb175205e7a76d38ab2
+b686b5d1430e06820d465c472f50622327e842eb21d71be6c07979ad16fec579
+5375632238991db515de4271270525a921c1f813b609f1e849af7ac0be9836c2
+ab922b1b33c618c196dc68d770b1e86fa50c807d72945efe05a54773cd625704
+89bc88dc617bed414911249345e711ce03f5e71cda6a8cc75ec2791f0fd6d611
+f7660db4aa8af9ce80f4921c50269f941f1e21b1a2830b3e9732804da835c4c1
+f84bb7ac3db349c93248a649c4de54d58cb8adf8c18d9b6dfba45037ac18fe93
+abb172287b0c82d0d6aa600545111d4cd5755605b924df937a23e1c2efd89248
+4353626e331f52a661d78d4b85fa498b7388b4aec9b3f267354cc2c579da015a
+5e3c23fe7d5ab48d05b55f70beca74683abef102ac25a4d757c700570419481e
+05753015ce4073aaab62300b85bb209556a3580f830f3efc8bc6fe352cd9574b
+8bd47dce09819dd59e0637bcff9fbfbe9685a343b2762215d3f0e6a03b0b9145
+e47b136f3b038b81a73447a0b4d226ffe7729f840e76668e0e69fc7d5accad62
+07f81091d4eb0a4b9badb19c38f3ab299c5772172ecd5d5bfc77794e6243c200
+aaf8b30406fd49b32acfe5c28c4450c4152bfa303e0425c4903d1f286d8d3a30
+2ba5fe1d8ce79d8b117bd5f4092032a1962a0eacc792e28c271252561f0ad261
+a60774752ac14293911e0d8ab03379a57294a91faf65dff4594a9b7f5007f13d
+7148ee0fabb39d8e1bad16502d5fc0bded7eb787ef67b2e811118f8cb1ba6424
+7e05acfa861f9f594a8d233571e74e93e8b80901f9456b3307a6e5993ca341a6
+0b1fb4629c031c47c0eb2d87692a9a3ef569991fbc9370d5e1e761fd5f6d6b6c
+8004a077fcb4ceb554b65ebe0b152e98bdf1db43bca09ac2bb33895a67e09614
+288681c520669ee6141168137d7fe5dec0a78409b76f4105bf49eea1443b4e04
+1499f0088358a235bac258260c5cbf2edacf3553f462577040b27741eacb2a30
+cd297b61fd053d5f34cc07812a9a02c48a26cd52ba6a181efb4741512d4b62bf
+892efa5fff635c8e624bfadeae5758a92b45ba3ca8a1f8383d8f341da3ea4ac6
+b95ae25bec85bbf7a9a76aeb1bc083130d9adc609310242dcdc39549e28467b4
+67ba43d74be781306928c6f8e1d99438e86b3fe6cefe5288c19407eac2d7e54c
+7c5bdbb813aecb6cbe5ba9c185cfec140681644844abddc19c06ad06a04cec4d
+e8f5c44285e71d13b816176036355522c366eabedb22ca478e898b2f928bd7d8
+93a093c1aa3f25802d9eef393560ce0e7def6ea2f63a7269ae11dd2753f37944
+a708ec6ce66aedd10b98441c5b9567501dc3933a7b5b55764027b5a0cafc369a
+c352
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR5
+%!PS-AdobeFont-1.1: CMR5 1.00B
+%%CreationDate: 1992 Feb 19 19:55:02
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR5) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /arrowup put
+dup 175 /arrowdown put
+dup 176 /quotesingle put
+dup 177 /exclamdown put
+dup 178 /questiondown put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 183 /caron put
+dup 184 /breve put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 43 /plus put
+dup 49 /one put
+dup 50 /two put
+readonly def
+/FontBBox{-341 -250 1304 965}readonly def
+/UniqueXX 5000788 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306457c7e62c1d269f306bd3402e266de
+fc3b5e7d8a8d2f5bf0fe6ddd40d07391df4fad4a6018dce29a2b8f692b29f202
+3a7c0e66de8ed85c14f1f8492167357f51a7e84cc5d92e0fee4a71813d2ffb26
+445026f89b4787516ecd1afc78f8bd19e91e9ccc9402e8c36d2449c1ff850a8a
+f61165aac3fe931332dd28e261b91b05edd18f44ea7d58a8f35fe88493b64aad
+6bfac3a0136215fc2f4ca8e91d70c5010e6f4013e6d63b44f6fb00afdbd7cdb4
+5ec5b1d9736f45cefc8a0124b815987cebd81bbe0d44dedb2d5ef37923b3d551
+abb6a1cefca7868fc7bf3814ef7d7b6b1ae6e869cb77aa29e3d90b12b0dc3ff6
+ec945922b5899bbf2f12e92731486d2ef1230c528bf8d7e0ae09ad7632a38966
+5963de49d1ef3d65bc483e4a577b927c940f5e121169ba52f6576c85793e5fd7
+7f5863c488e55bdefd5d8b2514795533aabbc12e7f51816c7e1484f1c441aa9a
+66a5dc77158e79cd6692d299b95e8058b35e771a6972d2b5eb1cd6d2bb8e835d
+361a6eac0c90c906aea1cd75c4412a1339dc1439f93e59917311bf20af4f2bc8
+bba5a4626f75f28a47d4595c37f4019df480d9385975159142618e22e964f019
+d88125210e2ef21d65baf500adf802297b24eebbf4e93c617a613f856bd0d45f
+e17a9480980ef83950bdb8ebf208c895ebc4a7132f0765b7c19a332ebbf8a3c9
+ab65063a42e19ca9d43dec3de7aba46b9a5d24fb93d615c0a1726ab7e31c378e
+ab77150858535b91362ab0e2b968dee1c53aa5b2c9238a0101c8cfb01373d08f
+52239f322b3471cd68ad14cdba2ed6a538144bcac6f7305333f7c16e03198444
+f0383a1ff8aa78248d6d06328116d2e91c120f84259eed33be934353d9022af5
+fba4492ac1c24f555c1005677d93ade147b9a96fb08fd0c266c8a789b454d888
+905084c826ae1e0f812d14eab6899d3fa6751f25c361ad2c29b9b9add3b1c6f6
+ca9d5e1cc42a2095b90d747affeec50e572bb702cc540c8d9c7021b8cae1de38
+cc765d4af5bc219007c0c4c7c6d2f3da5b36450f3c5a02dce15626e604c1d036
+91c5ddeb73a6d93dc8d2909a4ffdc5b52ef068d221b9d76e27092d43f6e9b3fb
+a779b03cd28ac21db0388dc5d6a9049e074c419ea936715132081f3bafeb46b5
+3cbbdf1ce9f837c77c8e82d20a66c1c0b42fc2aec74834ead59422c5d9466fba
+6610f6d954763725e3533768ddac3810bad238b7474f34a6d7bfb7b4f97111b6
+33b7325bea0d2c002042c217e399cbb206012a9649c05e31c7ec8e01082faffc
+9f677cd76bb9365c0f853f65f6e8a9c683c0d3ddf66d1521485bec32f91e05f7
+2c98605995c732d1f4c49e395424a6932f1f123acde5ebe0fb6c82447701ba65
+7d11776764a3389c5a6be54b33d7ddaf990a2cc35b43b3ae39581a3034f4435e
+0544fba5eb4f57061f7879d13957702733d7d591d14dbdb504498cda59006c89
+fa3efd158f789774fa13674f6e18625b677517fd12f49d6131f8355d3787e47b
+f5ae89b7a69063e1ea3ba93139b7ed8877f5f47b4fe236ce5119d0e6ff7dfa65
+bc5f4c317ab6e1015916d2f95a72014a8d3c060828c8e278a27a2072fb368cd5
+b60ff408b6e9faf7fd14d112b6ac7515399204dc8c95091586d469632d8814bf
+c83e76b953685a6ea34570198a45318f50a37ec1ba1cfe349a9e86aad361812e
+d2d56cb4db57a94a31879486c5a1527d1e325c36dc65b318dcefd790243e8692
+9a78af7a7ef8556b376e5b02f9ff2d93368d0d06fa8e709a8c8f7dd53a09bdce
+31f10712e39f512f6804baa67abd9b8ced926b0779757ca788b5e99afb552af0
+555c89e12208ce7fd1419f8e4ded089391d48443c214a1f83f414bde2391c2ba
+f59baf55263ff0bd39bf564b9500cb8a2c8409740fa48ee4d6a64a8fe3f0ea7b
+e02c523302c2b0b64ba53f0253e8846cca7e96aef05da2b525ef30c97e458575
+1a6a1fb08d4cfc9308f8ab04504610208a356fed3f774380dedbbe7abd10f24c
+35bcd33dff97a10d7c5edde2f341c9c2c64a3002baa1e9ec2368e016d9ef08d6
+87b761b1f0057f4f96093790025eba9f770bb0c93eba997fd1bbb5e2c9d6f2e1
+adaec54dd5e8bce631d2b462296f96e30d6c7989a8da40f3a1124ad740fdd1f8
+cd41b3f2665f0e0b9140d9400e637bc22c09e59d5aab1362d7a3af04e3c39f4c
+2245bea21f8f81329e46912aa618ba08c887889093812c3a0b8e5e1f73ebccf0
+0f2c7e7e582c37f7f50935f9d5bda6c6e38ee3bcfb8da57fb1c74b8b4a4f0e38
+31f87f49ae6b327f290358b3ac79057c2c5c29f6a96647993d1cd6304b34097b
+63c5faed282582d883d4d33b090b189226996b4b5d21472dfdfdc2dc6912da54
+1a0c946140769f29012e3a29133c5aa56660e7617ccd2a5e2c07449572efb257
+c8b93ddc4b0c290d4334bc0c5f29b98fb2a646d21475282f30a00b1a6cd38659
+fc5494fa69f9c112a3b343c618b1441c485ac39fb2789de8066ca084f3edc1d6
+d3c81329bdf8d24b8619ab2aecbdbb40689b963811e5868ceaa80be3ae0a1288
+9252a64d673b88dd36d84c9b8d6fa7194dd78daf076060c58a56934e6f0406c3
+168ea191200d620991a6aba1f30e6933cafa3a1fdf8fd0ea500af0587a88da47
+94d9c30872e67eb5ee903fae2f64cae74f7e0ef040a5183a0aa22b4a41cd2bfb
+514a38f2d9e91bec967fecb36cb12acc53596605c7b06cc9b1f697d86a8efab2
+d8a69ffd8689cef7db4c0368ac9191f69ecfbac041e23e1fbcc48b2700b8ef16
+51d3297a8c490b93992df6ae02c02eb16eabc7e3382906c9a0cc27a8ddb440f3
+573003a2bae8da86fec6d53a6475f6623981453dbdd4480959c5fab5967e0908
+d16757744cb43b7759c38a831cc3d8223aee724532e7cd208c16ece191c3c6e8
+92d8dacf495471da556f361bad9eac47a4a189bae0290d767aaca0b3905a5a9a
+332fc8dfa65c680507dee2206b515000267b1cac7d2e053198db99308848a075
+992c56377d316f65461feb28130a14cdaa8fefe7f99818793132869e8a0d8416
+f87a8418816591e8f0e2fa6226ef564f6d6f3d2a047311fbf203b6a106a40d37
+d9749f2b1f36c268c6bb0070203e1b2697d476369d006298e346a5878c7ea161
+c32c675d186570406d989d53e9c4a6abfff825aac8677b434fd40eb337db3859
+8540b5877e06ca7dd5337dd23ea7a7b55d336a5b7ec1554f4a4e5b369207a5e1
+18d4524d7266cae1d19cc1853edc315122bb24f9554faa80ac9db3f607506bed
+bc5fe4e960fbb6e5550e81c02c311ac1b1bc83d564436cd9fafd3edc042fc609
+f3080b6f6438303ddee868cad7c4ecc437c77cb96a9b30c1f81966fb2493fec7
+524ee520c588d5cf0571db0c79fcbde7e463f17648ae555316c4d601447186fd
+4e9adc3242e7be2cf682873238742963c0ea6eeef20ad0114f60ad324b26b4d8
+4ed02ef403cfa448b8e980fcf78abd28f72da3a541b57e4aed327f45c2e7d4c2
+5df73736b5b03d4de711b6df7c6a7efe9b1a0cafe90ba7c2dcb514041a22c2a5
+0f3aac813c190cf111b7332375dc4b7de75652b0b49d3aa27a29537d8b8c283b
+6616e38f30537d5f8ef3b7c0a029d7f940203b9c9b48aa215345f566dbfa872c
+00b882cb24c7a4e9f762b3c39061095b00f9ef5d2ed29864dd876e595ad4c55d
+02e42e19d994a9a7fc967d3b9895ba7a098e9c8059a1985293f61819685874f6
+ef97a496d500a4eb66cf81cbdc60982329cd66b6e881370783d6e8a5578945ae
+adb35f2f1c52295e301b3d8fd37f64f20aaba63476eee35ba3e54439454342ca
+935529304c89fc24a6d17a755be03224e718d60b3b2d4e7f89e1e5dbc386143c
+f006286e7baf61cae68785b0046f36e4a7ccfaf15c60ee2beed719774090623e
+5f9c812afc6cc12afc389cd0558724f655612980360010729c916f663e21462f
+fc87286da0a657291532b20817bbe0f987701db16957db58a3370178b463299d
+3dd2882473c8017b6603097fc5ac13d4b6cb781169111fdfb39aed2e04ba5ae8
+766bc32564c3145fea60ba4421240ce42e12686069aa60c6f4a313305c04ba53
+1bff16c88d10655a0e25a4f0a9a0c6366a6b40172cf96301fbd6c468d5061306
+9110acce9e1cf1c2b016af8363985f8d73a4cc7266008464abb34189e5b6201c
+3935d58038373b8ba55dccff6b2da4d870968e61c3e765274466875e18ea20ce
+7263ea827e85c86eb8a730e4530c8f39ac7394408d5f66b582d25479b806a1ef
+c52d12f0237f632708a7eadee4d14d9eb7fa1934b8c4557eb65d6bc660888edf
+21f584eb537844c8b67f717f7bffa38484b71014e794c7e67e99de1af6f4fc7c
+cdb65fc12c0c9a005768cd1a9dea99393848fed6384aaed5c165b3d67f3c5390
+396881069b06217a13b249420a2d85665d674049b5d3ef33cbb838f68bdbc1b8
+332bc962c97d5a2b880355abdeb53c26e3dc6db5b19e4239ddafa5de21a3e8b5
+204443054b1ce17660c69b341ffebb7ce3be7b165580b2019d3a1507212647a2
+eb96c8beb9645f5b4d52156a8e9f01be1331138f995e6502ef892c21378b1759
+0b335a8df8281e9e06df1af3beb9400a529379edb3e823f01111e878d6212f23
+ef289a7721082adc725e37c71311736f117f0434c001907ac433a3698a76593b
+c6dc424475189023dd45e25bdea408bb0aff18accd3ecf19e042907e85eeb135
+1272d072cd605f3bb2ff62daf45828b6483a08761a7bdeb5611f58bc538e6987
+12b0d82591731b5c8851d6a184f86288716695393697de8f7cdcb9f1cd16e95c
+f2cc664a0f4456a37be6b6bb86f2a6d470a19394776a9799049fa6366826d50c
+783d482300a43c77bc422e9aef79330d1b18818a9597ef8e887da37e1eeb92fb
+9262dc37dde4dfce928e673f0b49a3b78ee44919916c2fc2fd740ca8bed7b9f7
+1651fbe862bcf70ef26f8b45c927a1237a2a6bd6cae99db62b3a5e7fd830df82
+1325f0f7d4f3495c0d2b825cd71b0de14d846bf209d5d803c2c6729e72d05776
+f9caa3001d20de9035a5a77f331cecc431b649c24ccf0220a9fbb26d7de61edf
+9fbe21a6d344268a86ed5dac64a5c0837ba5d3ae276e21f416bea9b4aab5960d
+27b7f42eec87be4b86bf98adca0a97fc075e939964f46df79082830eb3770128
+4a0d879624aea5af2ad5288cd761a0bc2283d38ff74a8ab7e2ad87f3cd257e29
+4f6415ab1d0d3243cbd8e366f6512e1ff7002d2be75e529f8d8400f08118de04
+7637f372c1ccc6072d0b2fc4511ed6ccf9c1672b4d2ac71381c46598ace5660d
+d2586a8dec545460b39c7a10dbf6cc1bc7d2eaa3f65dbccdd118668b0d32ced3
+fe343e48ea15c8c1ad4ff1a5d3a0d4d2ae3fe15f54fa2057da0b04748ce30a86
+6aedb26ed313980d9e4823f475fc8531568a0ab63535fc7e2458833aa29f8c67
+4ee7d7eb59d877ceb9efacc851b73037e126c4e07a725ceaaf027ba600825cbe
+dbcdcbc12757f172e8c93958226b4b26115cc07acbe29071bf7c282ee5b7b6be
+d9a9d9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /arrowup put
+dup 175 /arrowdown put
+dup 176 /quotesingle put
+dup 177 /exclamdown put
+dup 178 /questiondown put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 183 /caron put
+dup 184 /breve put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /visiblespace put
+dup 35 /numbersign put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 125 /braceright put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+/UniqueXX 5000832 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306462c563d51ecefaacd079732f12c29
+315e4b9623a5752c6f1d8145869e120d910b2644887cea7e30b15676a92537c2
+9d3aa80dc30082aba94b40990b82fb1a877e805e0c8c48f61e9f2edac05b944e
+e4d8084ec1d5cc517aaeec5b3ea379dd011eeb454cecab3ad2443c887c582789
+72355673e503affe0394fc7db31de364e4f56c24033c7df2265c56445ec63a1d
+5695a6041ea1b94407e1cdb7c5635603a4fd047e6edcaeb2d0da6c9e0e9396d5
+1a4a58e8fdc1578730f992435560a6e2d3e3687703ee2f78f5896389ac8470bc
+806169eb01762e89b6dc9adf857ead656620e2589aae722c37a2ed7a2941c360
+b067ee34d8d5ca3bf68db725614d936bcb207781f4d4ec2ac67b13a5ad161f3f
+059add7b5e3d904831e31c20c04546fae83ca93a35989e65c201756888f727b9
+7e5313c9870ec96e4cec3901ea03a5c744754485e7d169bbc98bf872d0796e18
+9d43b712950c3786257d8be06ab6080b9d9392313298327549a8a41c00a2cea3
+690b4a333e45aa815a64facae1c2b44640860b8b8687afbefdbd5b4a541a7251
+4ee7d3e0752af3e96a88c95d31fa16d34ba2f02fdb0088b165844f02611c734a
+dbcc2037bf741fdea7e8bcdc130c70c33772f777d8bcddf4611db99001ccff14
+d7af2bb05defc3480bdab312a0eff2f375afb4e0df2f803c594b7c93f71ca4af
+861ae1711932fef19bfe2f9b7adb69d68e5a70ea4d1a3d5bd85231b16993f65e
+fb37a0a823f0542f8c2340a073dc1be4a8347f9d3068a6435cd8278b0db1809e
+8af9664c2c989b9f16873c009449b6284b85da4dee11c96a05ba83292f0edbd9
+2cf674aad6ac1a5ff966ffc37e88a66048deed053565b55ef6bdb8c2f2f67832
+f8939a32442ea54f13d003494d6350a2864b427a9126a9c26a031909fe53fa84
+63b80c3ffd536c9a5dd29ceb03148dbc24c0033aee72ddd159f2e8a6fc113f42
+8070eb36ce5a38a72ed5bd94d81ab4daf08ebd42c8e5bc695622e02aecd4004e
+637c4a864dfba4d87ffc4aa8f0905499ca682fadcc7f0bbefede05b2dfb0860e
+135749de737964eb164de1ab080f5b1cc7a359ecd1a1c35fcc5150f479650937
+28fe7afdead651eaf453a1be33353764371195227d2e10b6200555e608141a80
+5f3edfc30d96ec74daac287ef40f326ccf39b45c4f757fd2d922ae98b84ef085
+48055bda345208f72e08fca8aa588c39d733d29de7b0dab37f2ca82055d6d731
+c47d6487cd08f7f9d60352d014eda18589b477df24718885930990f397a2f7aa
+a03b8ceed146407d44468b5d7cc38e51fa2e8e95ec653a05587551786f1aae90
+3a9093de515810c1e2d2ed75778c70a39d9d7457916cc7bb0c5a7e652c05b02d
+4c021de09853598764160eb120a3afda23c57d96ee4433873ca3f17c9fdf5708
+381acf661cd21d6cf42d29ff385a9b7e51be10864a4d02d0c03746a4deadf98b
+2ba4038ca48f26ae6be968052f366e2674e24818dd90511d11174c4d62d36e79
+c8bc1c1df6c89c24f3cf54451c32e9d0ef916a19c5dd70335e9e71caebbca51b
+9b7b26c8b1a66254dd265c54218a6993e7459570bc636618dbb01e4b3bc4067e
+7fed74de897bd2eec5c2760f33cdf0b9ffd933e200bf1737068cede9fe63a64e
+3fa299289b22cd47e36053291395efe3c2a4dff57bc90806b56426c2273b96f8
+359f3ddbe2d891f31b6b4a256108a4ee68c37842c492dd3b5d22bf46ba45092c
+ca55dcf5cf39888b323aa21c2b9a67f7609923afc9caa7d9f7d46c06cf68c65a
+52c32644649dee4df40edab56e68db00e0b330d97961a97a57da945abe521e2d
+7b5990ebe5d702c8e8b50572314c41584674de2cfb1be8079cf86f639b320b5d
+b63300bb7c93508412d330d412a44ee16106810e067e2a529186194c9bf5bf01
+8ddddf75c5045060348e688c56f63ab0d27866e2f80859d837e623426189ffb0
+355e79e391932a12b508dbea49a1295cfce7dac38a60b56456b993ff4e70d72b
+d1082183d57fcfd161abb8769b28f07e1f960b2eac1625f6fff7e92558e57a55
+6fb22612b3a0dfc00afc2b40765f60713f90a45560d6aac1583fe7c86d412fb5
+69bd40510b86d5c668fa56596327478dcc2206eaa30d4e476fdb70b0b0534b1e
+c9838bb2885d8127fcf51c8e48f074142381031268a058a76bafee69381e9b96
+7cf598296d6b6646141c9b26c3eea9fcf02eeef69f5591c37e27049f99b82e9a
+e9e79492bb6213d0dbc447edfd847de0386d658d488096b12741921b9b628a66
+46d2acee3835822bf7cf532065f6d5788c0d33275425216470d2cf671725752f
+8ab7799a98820382360f373043e84c49c88aa41a23957505fee78601611513cc
+875b9a68ca60c29d3597666e54f33cbc74501785b4ae7ae65b953fc192160583
+4e84b3f911904b5f29adf19548f7aa58225885e0fe2a3657dc965a6e478a0384
+1110dc06a094bda390b6bf436b2c518107ca03a346c84c41f8e54a7fd4aecdcf
+400ebd4a434221de41e131dc716f7d86bc736e8a85ca75241718290267d21b04
+aee4b02735be6d506361c3fdfdab9ee59868c5680e179f0059fbfda989c067a9
+c64b850bccb7eb6db17f2c737085cd4707405d03a6bb2224c78bff7a4644d3e6
+e59453297ff1a3a1f6b84bc344f91786c80c6e939144322c89fdffc5f7e1ceed
+39d62245e2645238ce66ed30b9d66def5f90298cc71c7a46681b82cecc54ecf1
+1896963e9dacb1ebddab76927a089979b68e93f455ce722b34e583376725196c
+8b73330859bfca6114b7aaf8f9d044f98bbab5059ae77adb8e0c18870ae9417a
+fa85ebcd92085d6aaa2af8081360ea5ebcaa42f872b5e4c5122d1d8a342c5b55
+87903d9599bf7540a901c56777d723224d6821dd7baa86e746320fe6b2db9c60
+5687f053119f1ac85f753c539dda0aee5cfb3e8239544209672a833d79b83957
+56e3641b334f7dbe8d98b69d4c918bc2193bb5bb472ae56198f059b8e05abdf6
+fd27b1cc05cc1cb1f4928761388f460e3a53800a6ff3aa22552525a62cde65fc
+10629cf23e9df5417c3918b7ae5631a487a9cdc69d59e332c2c45a3b408ecd38
+5ef709379cbc81e85f662255ff02e6500dc9e74c028736c6559a6a2b35957f1f
+45aed3a88d60dbff6b623ad1bc4d5a30677c98be88d3cc3975f8667d29e00663
+a4a91c345ee1a122a72f1c63813a24e700a3d74a0de23406422089bf2184be50
+7eef0f65689c757ded17db4e2e6624b023ce3482da21fd365ccf967050884881
+0b72535bde19f186a0379460a8d56d3eac1ce5728f2956e4ad20c21153f6b13a
+06af200b5e40d3856743c68418d38941d0bef88e5c7198be41fafe3fdbd2642d
+3c615ba8c45c127d4555f6d5413e343555218e653a16dc6696e01a19e3be4ba4
+0bef94dc8fcc0e50d5b7f02a1f746156988e5fbe35bc1df130ab26513c6f8bb4
+74eaa8cd597cd5d5b7e4dc46df29b4d6f0f1663144f0254f8c1bb00fb3f299b8
+96431d2a69e65d1eb75e7df8d1259a6498afa79af9f334c04a4e56dc679cd9ea
+250a32a075275b70a36025c74e06c70b1b5aafc56ff01117f864245427a1fe86
+7aca2a9c1b82640621425f74a72cf98a34f7d0e1e5b0eabce1f9bf89246d8a07
+fe69b5cddf0a593ed37e7ce19e87ba3df2f04b0eb787feeff1c3bc3409ef042d
+7ee23e575689cf58df12413e061d90025cd569dc51a7d2fc3d02397645b2166a
+fa69e0425e0eb14cbbc59ce6aff7323978ee9d558342c536d756b78204f8a859
+69292015c6b296a1a2c0d3c956eeab2fc6b7533b75820b5c5f64fc3ee94b4cbe
+e1deda6cdc3b3a45cf025e762b0795c2978845c9dc842aed6fdee9424f6bf7b3
+3a68be850d4ba6d04570a3ecea37326a1dd78c38db876ff4b1b0327916e6f991
+63e99e828542c54bdd96e4c7b87d7e8645e27c4e0631d925d0dd704dff239f7c
+9f8754d0576ee1bf0847e85a46963206ca90aa839fffdd38873fb5174bca173d
+87ae6aeb2485143d53bd062d373b22831205244b1833ab4866f1b3bcd016fb0a
+a258d2b564ce759df52cd4b454fb16f93439a4c417ab8c74d8f77078394a7082
+445670ab149780a7c85169b059aef17cd0c3801fb96d3ebd6cf9bb719e905cdb
+a0aac7efbef2224f770ca1be4af013ace53a41ba7157a49b7374903d34f62c70
+9304cdbf4a9857483562434ce9dd66b350a12c6dcff85020176d99ac59fc9b67
+88d84a1b6eb5b36dbe467b1457d8fee10e4bbd36af4af4c2690b45fb4682ed4a
+322c5fb0e0c76aefd2bac6f90c9a029eb6f33a0a41d170d2935e3947e8b22b39
+949f750fc397a0bdf6e66bb96e0aa4a03345e3ef34edc64eca91623fbd7e9b0c
+a24e5bba284ec8ce1b89628a8a70e81550fa9174f65a427c3f035682afe56b1a
+571005405eafb058dd905f57efe40eb6e5e5367c182c0355856da7cc4c85321d
+5fc9cb51a549f8a4e6e776a156b0085c6d0e635fdd0db58e9d517dd913458e07
+6ba9db51b92775ae0fa4d2997c60e1f8f0aeba7a229950bc2f32376174281513
+41273b00ec5da0cb39ca12783242413de2f598d7841d72f80ba59d602533bc9e
+76eef2e607bb78237607ab2e937ec7b07a28551a645e69b4b41ba7f6af4b07ce
+a70f9a9753a385290f52a044b81ada3bb339b60e0ea5b09b73bdc22a011f5a28
+d9d5608949c88714d8e269a3e76831c3499b60569cf019d8adb30de71095d358
+bf6867f096511fae095004509d72a4d5921c3f45788abbb4004b8e2ca7b06db8
+49b37e46d97f8ec161e9b466efacfb49b916349fabda4b000b6548f8fe0d95df
+a19ceb368f405a793f96ecc7314deea3cf824eb1e7c90382bd04f1340b019ea6
+c66555e14950a8602f5bead100a93ea3f504d1e7e18bd7076f13d139295e6ca7
+da00e2212a9bbfc602fc676cff36466e6270c78a2c73cd39ecb801d15c54d677
+0b5c384cbb4307cdeeb78e57085a9c6cae92a9570b5915bf6ab8bac7d735b818
+95f2925d1e5382a04b05842fea91ca88b9c19299ef1128081468552ca4c248c5
+95ee10ee8fb4b9cf35310050be25e7fe4f8068f65600c9645fe81d981c033539
+1ad6da67302b8f6c4c5654d25827e7b8d7e57638593acc1f14271996fe448d5d
+486ee8ce7d3c3a6471049ea2253b6d8e48c77e2d8fe7861bbe79c233adefdfca
+362394bcdd0ca5eefa980e0b76260df2e3c779c4f4f8dc80106b76b5833d40e1
+d2db412b66f5fcee6207c85034cfda0caf4206ec6f5db90551836c5c490c4deb
+c7486c3c469c348c925b2dfebf2b7d935113ee84c8d8c90b4b2415a7594156aa
+da71ebabc7778c5daa5ff91f4a0da8f6c3e401f71c184a9762d99246b4192a05
+e8592172dda257912477304837d9e2e8c4c7797c79d08fab7f41623d407be16b
+7524966b2799d3f63915dd627a3e7a23fe653b7b95aaf4da255985abed7657af
+9210ac6a2eac9a2aab5dbc6158a8662f7f72c6c832c6418bfe518ad53e6b8ebc
+c39bf8071598c2e581e70e255d458c95ea85612c9e61f49aa584778a55493574
+aacbc3513102d87ee40012545d1be245cb4ce01222b380338b7f7d00142106a0
+fbcca63cba6caf4f5bfea4530b095210f5ff855976bf38f1a579cd4ac47bb25c
+66c7d330ad0f1ecd9bb332d9c4e2e5bf1ab512772dcf1377f3529260a8d0a919
+08750e940fdfb1d19138662f0da2ce476f13dad952222eec56c7d58542ad4d00
+73d773c1a3b36d521a527791b22f2a5e91da8265dd4478e7e1d9e47ddfc23c00
+8df5dc4e6062c0947159d3c7bdb13ed1f8b3867954b43aa8b82b59ef92130301
+78873be812707a677c94d4fbecb194095dc56030f58fe8c74c3f6ad60ec9dd2a
+01a414bebf65188da8de896c68b8f8fff02b72b5fb7101b878b3dd5f2d8af4df
+9e22a4f9d6301a00c5ae7c3501fddb5a21e55dcd36d97c592ee0c744c137608c
+0dfda8f542946896496fc436434ffca3b66048cf634defe644ac31101f514ab3
+da2b017d3e096b6601d3c90ff3c67955ede55fce349e9a9c043b875153c3a2af
+cdda35e09de0eb3d192aebf442122e2658f1f675f9e292715fbf07c08b84350b
+2c19e3226a04845fc80cbff9dd56245d3ea0031d7782deb309fd09e864641b8a
+41ad71f7360563563975e94db1dff39c74ab87e1a573a29872e3a3a8be5d8b37
+eebdbd42f4450054cceba54fa6a275ddfeb97844fd01e1e0802cb48ac87f12d6
+143e5660aadd0f8ba3fdf56f92d096ded176fb98dcfdb5a2199f87d68b48ccd9
+00e8c09d077933fff88b75717abc693d494368e0ef3efccf32a2b69dbafaa3fe
+54c4fa073934b0db08709461ddb4cddafd1a47d62d20383ce62a42ed2a5d3083
+53ca4103ad9be3a655501fc4be5acd396b5df363140a57c77f3d6faf8a7511f6
+ab1aa7dcece0a9f855583b69c910ed7560d671ee856e4c16c76505901079ba94
+e2594107f0ba4db01fb15a513efba266a5cf981e27699bfa03519cd0702a97de
+fc09d3eace3e1171b66ce126e9645c1be55444e19ec7395927c9e7fcd484b090
+102e2863954682c6141f30ed34fd07610b40769d3f1c52c538ad834059ab5608
+8b14446db2156ac9101307a4b71f751fb34a0a69b6c2af456254459dcfe4a9fd
+d6f11f121b05a778fc37eb6827747131e50c10d559c2b5f136e8d1369162c190
+13919bba8cab1be3eb4453215589fc4ac676f1a7849813ecf1242fda045443a3
+37962ebc416a830195c0d085516509799832fcc9670dda1ebf9defe54a8a01df
+ce62491a2d9718d2f8e8f78cc16e8e19e39804b06d168eeeac034956be3257c1
+363d55280e10347867845a01a64b8aab213f3c287b1887649f67a9315dccada5
+4f330d9dc727187e6a23f4a1776280e8a4852d5d39d7608a955981be92bd3c00
+c7c1637626f38116d6cddb704de84e26f0110c91e435158b148d40f143c8f2e8
+4e0ecce88616e2163e740069a052f5ff15ef32226aaf35941d6175c721b5de85
+ccad8d8b14db2603fd40adba53a92bf2d8e0c79dd17bfea412f4c79ebc08db0f
+f3cc7e29c669f60edaaaa286aafa8489ad275af6e678b1cc557f710fb84e02b7
+8e955e669f8e36899df3dece7058e3ee5706d40e00275ea4138f176fcd487bfa
+8ad7d53985be1bc4b63412e7633f6bb7e7a03341b30399dc2baf36d36adcc589
+a943e21d473cf8fedc256a011c8d3bd7ddda44643d70337a3a9165e56becb0b2
+35eaf48b51b0c963d5b0a1835e88cd5e0f2de788f3fd06ad1d1c506b5afb0b51
+c21c80b85dfd1556d0c541bc42c2fd77e28cf4d83f93d28f7744cf3e3b37d01d
+5698a06073fe43e9304c919575c97684b0098f1a057923b572351db9eac093c7
+3726380f265261e672ce82e057cfd1e7f3e0ed12623972d44d666ead74e222b3
+8ee12261dfd2e7a3da4460c4a5d69b418d6246cf666d67407681a2f4cdffca45
+487910dad054aa6f2c913628965285dfdcc29dbf126871e168abae794ee51f44
+ecc1d64397beafad8526d41c6f1d772ecc9ba953d146f3ef89de77a7b9501656
+d919de682c3300946d351f5bc81ec2d60b605f478a3cef28e76504468875defc
+9aab152ea0f062610a28392755b4e3ade74506b38bd546bd693499049ea62d5c
+b6ee1b406712ff1d4fd9b5719624b6729f16425c0710a3d076a99148462e4b5e
+a776082d847ab6c875c824a50c397c33d265989c3802c236c7c506780da894f8
+8156dec09cbdb8156d60621637ba8d4e21bcc4e5a08272f54f6ba3577c6033bd
+f67b34328999875e70d6a0ddd77af46f1488674286d4c3e452545c91d0526a45
+aae909d0d885997c93379aaf16d4d1c00258487a35e0c4058bdfa02275ee3721
+ae1c9ca5a9d5d11ae5b8060c462a7c2a0ad821f625ed37b41035af5797c3421c
+8e48b071e2ccbd866dd5d3b0139e4b0f892d688675dc89c44dda0157d8a2eefb
+3e7aebf5121c72d7a06f6154827fbbfa6048a0bfb092632fff9e82cbccb71077
+ddc117ec2e87d28dca05f7d3eda3226cae2f8add35f1be133896522485a68e36
+9310d3ffcff21b564504b0fe551721ef25b02b34e1993440cc624feb6750c041
+9cb6128cb86fffe77a5708dd294c4c8857e921e7725300f5658a30c5117fbc17
+5f16d154981ee2787a2fa379396bb64153ca67d82fbfbff89c5bfc10ce49ec05
+4535e345f3bacd688755cb88af74723fb40b07c3d3f08446d959705817469086
+d0572121d69ec7fb6b0e3aafe1ae1d9022851b5ec7870680e6f454e15135d6be
+7be52d710a705dd6336b31a7b389f9fb75aadfe9f74ee8e9a84128ce5e46513c
+37d663a6e06cccab48638d8668a8ca4f826dcda51138c20fa2d023bf0ff76b4a
+597b428340fb6790491eee7c85a3e8203822869fe5e46088481615fa79829dcd
+d117f80fd589bde64fe2ea42b02186faafb94151b500dbef5aad943e9e722508
+65d2c07b4de5824d94fdfd0bb94815e7a444920c2bc3ed3f3f272a005ea4dda1
+47cec2311177307fc04df1954006e9ab4038128506bbcb591accbb10897a8e4e
+526091d335f05c6004c6078fdda3afea6c2d2725294c8bc4ab81d6b296781718
+5f9517bbd45e9f20f29582f77b95b31fe32473faf822983b9707e24cfedb2742
+f75ac3a4f1198d1c7dc6edc02d652a8eff721cf2f32dace35f2759316f98416b
+caa2a955d8352cbf429dac18823a4c17833b506fc9c67c1010bd4c9bbde1311f
+68906bd231efba58d1b7757752fb89bc4700eb78c59b637cdc77c47729b294c9
+4143a3219bed2bfb8e05b16aa1db691618d9bfa3b15ecae3470e9e038ed748d1
+360af2c86dba7019347be3081410e7fe16f740b95ac6b30a35c112a63e717af0
+a7256fd8d92ddf6dbc9a255b12babee4e8ab18f5d1b206243ce1dfc5764921fd
+d814425233ab50509cb7f54b78db4054be1fb8f94f4d08e1c6d330372d032444
+b9ccb00ec749164ab5f78156d298c1832c3f55ab4294bacb43c3ec3ea445f9ca
+b9e46384480a4137aba28906d6b975deba7970f489c52c1626ed2ac2ef9af94f
+b92883442ae75986f48e76a515201c66dd954287d2616501100044d686baf786
+f74db737caa0a7ab62bc2a4029b94395850029f15845f8612468f6e8a2aa915b
+29ff839f2e1f30befcdf7a2118f867d25fc8a156e189d5cd9fe64c7c0a61eab1
+f83dbf874315c8482b6f715b1ec0ca120f603f807b942183c9afe4627c333a63
+5471741f258ed89934cafed656149bf8b8a340fc23e8f82950a86834f3d847b4
+8f0057a9de2a2be9a7df68b99347972500e52a643323d87162cfef637550e99d
+de547a1cb76d23cb00d4ace009253065c89e9d5bc6fa08739e11feb8b5a7824e
+4e2e901b505a7afc591ee5314003af1770041946a3666207bfbce8435ebaec88
+2ed2b8d131ba71d2e8ff67850fad44ba377826f1925ca5586db0443396abc430
+0656b1c12b73a7227c172d1bec8909d59e88fdca8166075e0e567d78de43f530
+dd484e200a6ff677463bd512423b9a00c7c64724c4ab42dbe0729d4a21ec4b0e
+1a2e05dfffd5c3db016d91e24e55014c898928f7b9e2a6c540ed087ce4536606
+5b2e291a9f8422d54704103552e5c635b058b4599ed4d90d1dc43e18c2b24b4a
+be502c956a02d57a7afb889cf62487d1b4fb46a8384d834eff141f73d025db42
+64ab6d3477fe7f3bfbc96329c4eb6bcd95c287b37ead7228aae4fd19a5239fad
+96a80a1068fd3410b5f8d65c236b8b2bf0e4a471274c485fc7ced7fd1147596e
+47893546f3f84a03d23c27f8215193cad1c5b3a52d335644a2d3a50ad4ef5325
+81530cd8983c163898a30bd177acbf4c37db86412ec1745c3dd19f781da75b79
+e561584f8ec218ef66d0558c8689baf64ba839040b24d1a3eb8ecefe95b75f3a
+c414ac45eb75cc4d649930dd0e9a7ca625ffbc695e41092ad764e4da6d26a356
+3d0d0268b26f86eb9744711629288dd1acb899bb0d08f69608a7e188cafcaca2
+d75b5ce8ee0d5011ee36d5fa6e06e1bf8f3489d75a07c3a75c07607cabd83e8e
+1b81d63646ccb39f5591ceafc0cfdb063c0b5347e25323d7a94a4306471311bb
+92d36d8f15f08e642840edb7c731a6fe855174f9748a5e624dad67542f7eb15f
+d04e3cfa5bacf798cab6e2581532a44694fc95c499cd88f21258c1dc2d87a08b
+979828c53868ed16f163820b3a79423b4872b2f48adad5b49b1a5cc406360ec4
+6b4ab26fc5efdd8f39232e6436c59c75866cd30ba6c1f0fc2d94d09f97efa64d
+061f9bc7c5bde8c2d26efbb402394b33e7671aaa7c0fd389b1806599adc81405
+834f8bfdd6cddd4a7435bbf92622022f51cfe79433edb42278cdf0e574747740
+3f41c3ee96f4d4b1950cbc236eb726a633d1f40c3600d6c1eb8a4548968237be
+214c39982164e8e7e8166a13cd68f039281ef453f6e92a700c98f4ca31099423
+a181d785a2ca626f7df01ec2c105cded171076d89daabd44f74d639f5525de50
+8ae93644df99128ee7d7fb7c0ca459b222649853d695adaeefb0eb2f4dd762a1
+eec1175e73bf1c3194c7b3276779965a19c542b1726c71bb0ded12da47f887d0
+07b2b1d7a014b55a0db7493ccb7a29b708c283382b555c0694f4cb260e0a5762
+877a0a19db4d6f3b4c80885b02fd6ef48dc1a53fb097c0380fe3f1c4272eaf0c
+f38cd90f7a8edc44ab9007b7f45734af408d05eb030bb4daad3e36dece0cbc9f
+59dff73f5c2997dcbeb48c6c15980f9d69f7d68f2b8d8487af6b0d55d03d6eca
+06a167e18150153a154f4c9e46c0d932fee8daccef05d765efbe23b83df82861
+866ade6e87e49b730cf740f7dd5f370ee4309a5425b0e482c2a70bdc6f1df5c5
+1cb97cb60fba6d556c644cf6ab18b740238b18d03968f902850dcf01346959d7
+7f77ca7a2378af4ea5a3b7c0b459538228c5cb7dbbde56c5cbc5739338913c0c
+c6846d330c1649c1076074cfa277d427dd50b11d5e0e7c77eee8a159dfa91579
+414b146933a2fe711ebc5beeb89f154e95278d140d67f53ac0097bc235ef1264
+8e761fb3b2b87efdafe27df316578db522b0ad2719551f1c9e50266f5cf96fa3
+52d5e25c93781bc1967752c437746e2cc1f9b6542b1b44abc8c6def00ef68979
+d603940784764efde9013d09cdd7e063d73333ea48d215c1b4011dddd3ebc72f
+3d0c593af3349940c37ad43d713543cdb43850d117feefabea1c25984cd94445
+f9cdbdd753ce4fe2b74d4c141151af0494bd3a536d815fd2cd792c45918f768a
+efa3d37f08e32eedacacefb4f2ed1c17afd9c1879057a9bf8e833da2f3bde1bb
+46e1ea1876a9ab1004f09692cdbf7c5c0adf1a23a198bd3477436c37da10a714
+ac88381d672d97b24fb0a32bb41d18cbfa18673d107681c7e6a569114be02b3d
+e63ac28fa9f9072b93a7db4e6b98f6ae0c15803ce58d3c31c13016b2455bd91b
+292e61cd0d5bf8020926b5b5e0cf2201c7d96789425b2fb155d3bc2e78cf03ee
+9472c77287b0e1c8919ecb3de24e1a6187238005f27f1e1103341338340fdd16
+361af1af7c5a4a79ecded227d93b9e6f9d671955396f11247ed0507fbcc949ff
+d7ce8f192c7bf7e2ed7be79c4074b90c56a706c9899b6e1d2a95bae7d1eb3a43
+8255710e510267a6b120b23686efc061e02511e140bac87976601be1978f0d03
+192f43438621692d2485dc693d8a735eff59d0238aac71ff9a3b79e475827b5e
+bdb11c356f7311ea35d72c2092fa44f6b5ab7a3ad3f15217a8c4928a8b338a1a
+809c2a24e6a42c1d963a88a47350fdcb8058063e3ff5b319c28ab32e80bdcd77
+2a1bba126fd4d9c45ad37554ce63ea6de27ae2c30dd1849867173ae721305239
+b463aa66d6f79561dc83c6c82cf8c820026baf40418b95734298d35d70ecdd24
+62cfab63eaf9b1e6ecb3ee4a3ab8ac84b031d368a32ac136430991710638e5f7
+4322ae543072c05914ee393cf9ed39f6aab6a089748efdf91357f070d0e21d58
+3fcea3e790f87753ab971ca7d861b7ffcaa7689b1923604c4578cba1d29f357c
+dfd618e50f4ee8ebb81ac74a750185fc7ac1b970e303c9961ff094883dde07a3
+2107eac3cbd352192cf112aa24396a95bc9ae9c6a13c5b4d5a26af0c41657517
+f1fc1a4ea101895b36946bb07d000ae034db3a3a3777ab32c6e737f86f7f133a
+112573ac4473bca23b66b5169dfcaf22b097f5e7ec4aff3d1bfb6a655e2ea9a4
+83921ea3827feea7831a358ff030c9b05a419cb5e96f267f03136fb6ff98b857
+20013b95603375a13628dbbff1c3c812e82c06fe8c4c37a32a10c1a3ef9816b1
+de93dcf66fcfdc38b163168aca4e6f0342786092100b7533dd54091bc6621b0c
+ddbcf7312f8d369f7dc8ff07622a9c43eb7c8e683a611d673e487330ac69a026
+3d9954d4aa0b93c1bc9d00936ed6cf74c751976133adfb63ec1805ef4e3550bc
+95edaf25b5ee783666c597f9bb6dc4f7a55242afebe40edc08042c88270e6d7f
+01499df4737c76baa534f95207130ae25951c8f773574429eaf2a06ee2fa6898
+532090c66f3e24bf392f9bf4f709a5aba012bd748eaa89273dc853ab3d406c1b
+b79840f2661b34d8352e6a4cf12a3e2a35ffb0e1d499d73c6864c149dd59ab76
+4c8fe78eb84649e6cf8e0219c889ce5612d507ebdefbdae3505b6d6980135329
+a12982a6d956fc88d6c8140a63a4f9ba0c96ce9495c87360e27aceb554991b8f
+76359da3c1ba38932438a152bd247760794603bd9a08d14fa91974af64f513d7
+6ec16959d0184e2fe9ace0ebbaf25371b51324b43ed6d20f7124001553399b5b
+2b450b1cc71c6b8de0bd43b84e10816f7d9eed1ec094c18015e62b3b44295c73
+0f9a00d8cfab402fb9fd2c7357e4adb0034567ab5b101feeef12a697c60e922f
+2c8117947137f27416a9c80981f425e64911dbf1062c16621939529e680deb49
+8ef93e58f5dcae16c885780ea8164efa47d87fac762d08cd5de54a7bdbfe8134
+47446a8d5073fa678b580873025bc55625a72bd6cdcd22fedfba58379c477576
+a76cf589f1f5d9d6f3a027fd96b48b8568bfb9fe166cf8cb428809c9c6a07a51
+3526da7ec87ff393c6a91dcdf492ef13cc88ad6630b9a3071e44c2e4f53b66c0
+8257fe7b4b33e9788521f29d29f7e4eb4c0ed2b12fb1dca1f1c94cd92bfc13cf
+250d91625fde5ab6e73ece832a7196d9ffd1f62e28ee2d53280f9db4b88f3d8c
+c2a30cff7927d9345f19f62e09eb5640718305ea18c96c6646aae1d978c9bb05
+ebf7f8562d30fe4d3596098601845d9c4bba160eee849e63e777ec45625ee5d6
+2fcbd3743d46faf4caf442a9c46f41d286e6540147218569259d425929d2ca6a
+d0f644e41f271db82a8ba9d30e6dff3801784d530c62fda1718198d76daf7a95
+aa9b395fd3d33d8ec0775720d9e5ac6147170d0642fb56c39683ec7f3700ed7e
+a4abaa592912da3ff214975388d3b3a43cbddce8d9bad36605e4acfb8dea96ba
+6d1032a0554ea68cf2b88d1fcbdd47d68292824a7234c3540849b042b5ec7c57
+cf16e4d8dc53e996d9b919f435a87d5cc0dbee603c0d971b138774a0996d3e2f
+00566ea3913e35034401595ee4ff144ad64ed7af22e9693ba0c0bb3144885c35
+896710fbc89c99fc6a1f967455b12f1a189812dc48b0bbf4682f59843dbf1505
+8465ebb8547db9c3ab1601b94b2c101e41c2c3aa4ed685a8c640f11115566908
+82081c91fbb3efb6deac0da44adb3a53226aa649f63bd8aceaa307532edc2034
+e0c64ffc1911e025b5126220ec45b1fdfa99245f61a6e45d5acfe820b9760482
+73b73ab16f94c6dae6814105c4d1b88a71efbf465a927111527b4ced8e438ca5
+7e77e6f5a2b402455e791e64acbf8c35ac4bba8635032941462b3994714f1ca2
+abbaf0446e5027ab044c2246a37cedb880a62cd3599f5864feac1a851a02fbaa
+d2c6232b4ad17267e38c6815f71d17b6aa94a21ebaa5e6cf6aaa1c28afc0ae28
+eaff7be0ce9656d4739d3a301f5e331ff2d403e129b34fb7ab7deab2bb64a84f
+e65c626b9c9eb319c3e66f72fdd16b408c891b6fea1368f3612164867f027fe7
+ae240c16d7e42a5b307f2c266a99ec158c69f758ba17f7c5f73d684353d2cdbf
+5160f56e1784fb8363f0437c7db008d85914c8f84e1fca170dc4761b1f3d95f4
+da48975380ce2bc0df1e7b553da73ed294a769a5499b825173995282a4f4f7d3
+4eaf5f2e884cd85d03f1b3b288fa49909d6ed4078b1318211bad4c108c322129
+f7e8d65a93b80271a1ba4aa2fd0c2a91a98d972011e4836eaa69fc60860b3cd8
+099ea2031617211f384016bf88567a292f1c31bfc96dc30aeb689da939410465
+6d2a45083c1508bfb962a4f681bb7c2c4479a1d44c5159f8ca91b17054cb3d41
+7e13709e4a8ca37a3c94573a75c3c1909c8ff7451c2c78653c6be365104aaf47
+a527af4010ceede846284cc1cd510c585ff362928de99d9e5e5e5a947c51e04f
+5c4ba85a4050bf959e57aecef8179094c0adb100ff001f4db2f8237f9bfc69ae
+a9ac20366b68359458f52c739f31364e835f78a814e82d02aeea64815b9bf355
+643885d76e257b894f6aae9b88f2e34e0dd96639d9e2c78ff050ba1f2ef7bf4a
+cb9a101b7ab94faf1dc26489990a469d8cf8ffd438ce0d5e45fa81b89ccc3ff8
+2e192f1e91a68e527e8be1a3d20917888858b639e170521cc3eba964654b30d2
+b31350aacfdac9021432c41ecfc68cf31404fcb7fdf5328ce7e2c46acd4fd774
+d62a145933b1619f7c307a572d7d73751edc2bb81b927d37acde4dabd656e42f
+d131bec80774e9fa27c7b8acd7953a81219604da7c2cd2bc08115fe6d6f1eb29
+6bb038bf1429b6c7450496b6dd093012ab9e641e648c7b23a11e99e57b4ba0d9
+c257bf6b46668ca17bd42ccd8c87f6acb7e15e93ec11e6c9678928d4a567c644
+dcf3e48db1cd8a5e2238d16ed076089c42a3d208cb6ff08c6ecda69f67bc9e95
+aa05aeed43478724c08ffa5ba03a1a084e529f0d4e5beca95246366f10947f15
+c9a592b4beb565d648fb8c9d03b6a44b03e90f24bf59e0d8b536b127c021f8bf
+cc656b901e0f384713d629c0b2762df530f28579ac7445281128d37f8793f250
+de6113965077908f31ebab74745aa76ad1f1f5322ecede37e431c8456e1657d5
+14cc1a469887e6f47f69e1018fe1d140bf4bfeed962a0d771f9d3190cb91f269
+cf19dcc198aad6f574480b506fbef9067a80297f17ada063a73d982c5bebd950
+0d14e860b5cfafa030bfb6e468529eedf56a2790f34636651e5832dbe8810549
+e835481e0b0bda010ee26e4f1a0b3716851af0ae51bc8aa9df0d11e335829d34
+cc3888fe8d48a4fbf703646ae5d463f05e3ebeec2fb074cf6b32a5f03d8a6aa6
+adb507fad77ccc3eb70965f20d4229c7ea162b25ea5d8f723815a80a9a340070
+6819d93acb8862606a35812b44b936c654abd82f81b61abf5f843518d239d040
+2791974e09c22fe8b039166df39a128ff6fde91967c6fe8d4c488a52aa35baf0
+77a41dce3ca45bef2f60a233cd66797fb3a7c307969fcdfab2a6801fd4b0e3a1
+0edf83edf7598d4e09d17058a99c91cd35fb2996b2eddb00e5339257e4685c7c
+9cf36c54c69335d9902eb9054751be46ec68fca4a35189e37644a939d96514ff
+99880abc4f624fbc4c706919ae85dad5070041939a26c038bf7e60e204ebb7b1
+6e4e9c6e735cf3dbe628c1a056fcdd8436a172b95d844feb0fc1066d63b16a19
+12d1e3f15b50ce2218547740dde858bfa634864692e4f4515eeeb93a4cb2d887
+bc97b366b7704983d37e9aad90290f949d678b318045022748a428c21d2c7b75
+41948ab2a882e64960c3fe45452f328a3b8a46254e20752ed6699664512b666d
+b6880093836866dedd98039fa03c414a52b93fb79d8726a2ff57b6d7b7848c67
+eb032b27eb6b7855b9f79bf7a8bbedbe8f3cfd6ec9f0aa296e8e87c274d40c05
+4a18f65c8869f1343bb3587479aca5822b10b814b7db8035b193923b077f6326
+7f46f44eb9f964503daa17caac777e962da5cfc6f23aa4a01647b67e4a3d6d64
+39fa070ee0763bc98207e2ca2b1e0443b45f89427fff52b18e57fd913c8e33f1
+bf2fad76712a73b58498333a206223aabea217fc38860ac7b0d2e9a85d1e9253
+1ad1b815b9317d805e4804a5a4287de99a324d58e0d2406cfcea9418a80c3d5c
+0dd0110be2e53609d60524789584e4517b3aa855d5aeaf226860f711c9b4a4ee
+5247b3917395f816cb9edc91c65f631d55efa15273ef9a1dbbd19bfb2c64714b
+e655a9a6e42632706827718421d09a70a5a4c8ddce7dc3443c4e2154d60b888c
+f126769405e1c524e34fb59d6194be1db3b2a46046b23da82f4566e0a88920e4
+764ff209ad55baaceec5fe50ea47179c7b8bc93f06eb642241202280b87edde3
+3cfcfb7abb60acaf8970c3c5da068620fc54d45f3cba63e558897fc7da1367f4
+59469e1abb8e63fa46d05b0915f89c32e195f31cf3343114ba3eabe869aa31d4
+08714ed615bfe546f5e920eb3b3da2db73638142f13386e8126d30444a3956cd
+9ab91a6d91655f9452d2a000e5db1010c7c53f003c9ecfd461cab2c83e3c5d97
+82f5d70dc186d2fac8d2e481aed824e8a0b429d370df36e68c76538c1ddb7b0e
+c69426e06850603ed3e99cee3d16d4bcda5f7905355e64902b5ff68467e3a19d
+ed315f51cc1cf0e39d8d41cf151de71c798ef7d86dd48d1b62188901b14dd37d
+e0e49502b7f49431c146c242dd54de79fd124f0ac7dad00aaec67cfa2fc6b8b3
+195e410ad7583968eff70f89131e3f8f9036e499300d000035cebfb80c63682e
+bc042c7cdcf1d2d2e7db8732b0c29426a67fd72e7d3bb63fb1f2f4760540c1c2
+98da01a0638f3914dfe499a7c17bd20cd0947e6e463d2468498e6f6314ed2491
+822a75de72449d51d9ccd92d95be4e5be15422a56f3a3a0ff674dfd6d6d06fbe
+b725fe26e8ba12640acd7c2d50aa643b1121855c5912b1dc8075a24be6eaf895
+198965d93bd78b7fd04449b818da2e47c112bde2f19ccf866d943d060a43474d
+2fc40e913b8d1e8841dde17753d9a1865245f9b6422b327aadaf5afa340fe93e
+91330acf16ef9811fc950f3cbd4e8607ee7754b956b29ff0cab3102634af063a
+0a6b2f225b5f93111f7ae2bde0fb4fc839788f73a395ac3a3b789a3b23d85b60
+de29b37ff18bc98e86b5982df8bd0baf74a10f8609f4757efba28d5c020a36fb
+04be7427d2f9f27310071403ebcf28ec441530789319f856cdb1abb71bae1815
+59ae9332217fd2a3473b17464b437db9ffc540a03b8dcb57bba4679819bc0fac
+9379b564b24c6f798ab6d27e035ac9f211e9b3f000fdc846da661cd591fa15e1
+e38003ed42c6c1b1dbe2504d7a489088d7ab72f27854e22178e2bb4a0740489f
+f81e4be8ab410ff20ceffae9eb15c2bc5749a6a23c0ff145b8a1e4d1cf5c5daa
+3d1c8346cf75b02c1f09d32f3d99ac406f04121ee036d86f409159720c54f58f
+75f24e08e07dd6ee088ab385cd920ee95169b3df4d67901830dc7af47ea1d02e
+a5beb3e43b4385e4678b9aae20422bba7661ec05426cf4862b611a8cdb9511f8
+c360ebf887e9f4691256e002efc0f2520c6170da441f11890e2e7ef2e1a10019
+84c678990aa77ad28fdafea196021159ae9e91df69484311964fed02e1411da1
+6758dfa0db49e63bd329bd82cf61b3b4291da78a656ba197822ade0b758e164a
+1b796ebb87b777f42d791f11a5e8e3dd8b53a275b067c8e609274d347c7d00cf
+185acc7aab53e8666d9cb8914afe2cb3fdd1731cf951ba641e1c15097c3e7fb9
+aec2867ce4559368aedd297d54d5a56f75c92657a2cbbac433110bf2ea354ea1
+60e886094e0db290f01d294a2e4d23b65a0ee52596c05899af01234352cd737b
+99d6c3720b13e581fbc39ae682c68b1bc195ab2ba6873a40e51c111efcca2d25
+ae4eea20ee0043db6c9856fd8ffa6a7743edcde412a8609399d8efd153b0967b
+a2c9d6cb044f121a8f14c468ea41344ff7bd932770dc0fde4fef4a748c632c39
+1f7931648bb59f994eeef817870621a2c9bd491efa23ec83ff45dcf56a5f1cba
+5f95fa6412f2a2eb5672abad023d0f8c3baf0002c4af9cbd04c63a5577b1194e
+14140899d32761f591e750a663d79fcc56308eaa4c900e0297aeba80163bfff4
+ee1667e8a9a8e0f4da97505b2e00a39d7b67828726fa7dbcfe5a3471ecb4a614
+78155943f7e49693c7158212b49292d987b0661b4be2161ffaa3679f318bb9e9
+ab7a7ea702f617ed4d9023570f1ea14fa83c2e850953c2ac0682355925df4689
+4187c87c0720f0274c5056af3fd6e0dfd09c377b78f7da17ee76399cb172a340
+570b6ef06f01f639f387d6bf10b675b98b134fdac6a05241769ee94586cc74e1
+4c50f98c70dcc36bcd1d13131fd63ad4749b33436831e6d2bae2262a3289d2ec
+0b768c8b2ab6c01aca6c59a34f246f9fc6c8670bce834da6c148293bd6794833
+780a9f15debd303badf240b4c8698619c1670d3b4749aa26d9b68304b3e2dcce
+e9777fb8cd23438c39d60bb33108d698de17824bf0de8d7a39467a89cf7241ee
+100bf1d762f90e298cfa66b07ca1a0b5c551d21247da30fc7a848b1e277b728d
+24e0d81e8887ce8dff542a5b6d16072c5a351f8347eb1e0cad25a429b55611f4
+6f604d9bc775746db72803a535f84fc894667ef92c283ebcd3b2f36e4fa01a5a
+30b3f06100288a5c4c7cb96c6826fc120aaa41d63d2fb4592c92c290e77a7848
+1614a62d647a5f232f178ff3afd56840a5b619d64f9f3c1cbcdf32b0743143f2
+d1191c14b9b0f6ec3b773b155564d9bb7494eccdb26b5cb593be48467411a40f
+279c7b8ee3e76ac8c8ba3c527f6a726ce067bc91a0a9561896a944d964aa7e9c
+f3a56f4ca99521d482e191593b09dfa58d8e12901af663d3b2be43d308139340
+6b31493b7107d4dd127a5047dcb85d02c005334c64ba6b8b4cd792894ae24d97
+c90b3de0199075bee15386e0dc17d99f308216824e458fcde03a576f20ecbe63
+a703f78f1a017f3062b8651969719d179c15ecb1684016dbbffd91f9a560d6cd
+f2e42f027a7deed24e9dc6d183fccb33b7148958481d599354c2b24c8602efa2
+58039c2397b9fad1dd1a03d57127ec107c534f7a9c5dc0b884a9bca3d64973ea
+0ba071ba947be8238a822da1626d0e0a28a06f6eaea2bfb6b4c4796eabe45199
+22731778d4d4d0d0f37f2a76790c4614562c1cf1fc8deef7b1bd3164e899e5a6
+ff918e90f0b2fac8062643e7df42809a9f5b40b072f2e9dbcd4dc2f20f1a804d
+14971bd1f2c74e38cdc8d3ab1e7b1a980808d48c65e7adfbf7fbb1edfee65855
+8bc0db31e833c6ab8dc2fa59c0a64fda5e43b11603eae59d2099f842c8acb933
+79b3214bd821cf986c42e0d84cb4b19891a6b056bece9878dfb964ba9a8fbcfd
+987c70c067f27f6124fe25ee904b58fd084dafd92ef60e7b9565d72d92720096
+3c7c1484128c15650c89595755c5448231955012c2e3d133105440f25b608e6e
+373f191b0d330ccfdcc026a6e46424fd6009fd56eea4bd81b279e9ac75f044d9
+81e1e265847d6f87a5d2e13dc07d48833ecbcc557db5fd892b08cfc444dfd310
+ee106d808d6e5fe0f27381e1647c68dd8119a77a982ec3bc15a07e375690b8f4
+110beb9c25242db78c96f24c3241bea31ae65e5e6d4846056a5a872750753dfb
+62eb035ed491e3e1d255d5ddb4c84e6d8a6a6294cd97be2e56feac2874c97b1d
+5f2aff7e402ee00a338e7e99c493df1fa5aeb5f6166bbb4e62ca7d636d6eb231
+5e1fe3309159d8d7db161f0512c1533e8d76979cb2b54d436087f7c03d7c006d
+ef3b342d4c419f42c27085b74ce7afee8d0da50aa13463d46d2489c6666738b3
+57fc3f2e6066a9976370cab5fca14f6c6ca405e2fd2ab1b5e7c50f053f2d6fbe
+305cd59e726dc793cc6401a92ff2485d6225da4ba60b29536464be8a1d42182c
+69d64b20045d61e0fd432b7bff59fdcdbb3c41e93eff216edc432dd96fd555ca
+dd184f6e338e5d56329de5e83d2a5090616c532bee801d7b5ca0e9c9bf555eb4
+365620e61711370c6ccad81bd831331fb332a4ef554e74a116c518f46abc9686
+f3b96b1b64beb60443abf4f5aabc3d312a1f525f9eb73f9d7e729e0eee244972
+5effb5210b9f8144a7ee0ac05dc7a384cea2d8df9177b1862a8c7b683c773240
+e4a4856625be370c21a3078a6f0a5b0b3d3b74f5868e7fdb7714123dca8b3f23
+c03b25a81a2c98e28e75f2689a360bd13224f39cf33e3c634a3c86a96e03cabb
+128435eac146de810ad4bd497e39070fe055749ff5bd8b85d21dc9616517d75b
+e56535f8bcd4858cfff9d6589d0c2f95d5154d6becad7b65fbcfff40fdc0d0d9
+5628f98b53d9134cbb1f05c92ca5f897c19bc608f869160ceb6fb3d7ec777415
+a1ce25c55aae742937214338b5108967493012b0138d8d676ff6e6725135b0a1
+411b93501e6cdccaed1aa4641e28c0d44f681562861f316bb1197b7e0b38d8e7
+77d780e6631ac904be7580e02e373a07a10eb516a453791241566fd836e6dd9b
+2c61592d9905009cc29f7bf153a2c021bbe6e66f139e335f7973239937a9add6
+dc45a2bdb51f9d3196fc4f66d74e9494ae993ceac8192100994ca0cc1ff02282
+b92d906918ea1fc1684dea2b4be144fa39761c092bf52ca4546444536e1a94e7
+5557f76c1cba7455d59fe66312e9d4632ffa3c80a4342d55fb97d90ca87481a9
+3ee4720d7acfbf0b87b8605872c0b924eeac498e0347b541b85a72baf3ad047c
+1c5e75cfff0d6bb0bd3490a8e4b12417a1ac194365d28d59404de7b5e8486c31
+4ca4f1273df0a880c6334de3c99e19b67a95a7990a62f110149aaffc7701134a
+5402cc906c14ca91f89bd62c68f2eb2d0153dbf44863ed597763f80e10a5439f
+4935ef5f59787ddcb3d64005076b34b5eeb48f990a40f8b0fd83c735f350b696
+d6eed3c9438211b3c7dd55f4153a94c998e0147268c35861ed6a0df55f1bab49
+78630efc39a4fe307e5ee1edd4af57169ffdab4b35b63e9d066698939f0a9c1d
+3b49ad71f17e0c07fe77bcfd3f2cb18e430d578d7c5806ae72eb108142701de7
+3f586e0e450fc16234f5744d82aebd8eaed7db71914c904921e224e80b37898d
+a636c181ffd471d155b7659e192630de41085ba3c75810478187c63366329c42
+a6db21ee39960abdfc36473aec69e34a676209e013029007c8dabae8fe524ab9
+2e3b0c76ff647fed0a96f2d8ce45035d70a8f739080e98e06cf60cb560757037
+7dfdc5848bc87e4c1b468c1b00b8036753209b8b34211b5d3798e1bbeaa9e24c
+f0a44bf47928d66eb503ab1fcbd91674b6c5d8be73b5d1bed1b7d5d0a24d4419
+a4501972477de1210f2422f2c61bc64f72110b92e3a64f1ba78b19013bd36db8
+e9fdca976ef77c95019a5f1c90a127b8937cef4818fc5b3a95307be3219b40ab
+08cb228966f5794bfa09939ce7f5c64fd1019ba89df097aef4b22f54a125778a
+d81d07a914811ebef2202023fd663bcdca7aa025f4810a66d182790a551c1fdb
+664f6f58fb2ec876b4fcb4c4af814fa40dc2c6001bbc7a386c1a6a4d903838e5
+3d19d6968e11686efadf70b168b592708d4a549f9702c1bf3707abc86dfeeb00
+4cabc3e224bc2123bc05b0dd8a015e4ac1817b67cad74e24aa1a66d012677c6e
+61e194afa7b0ec999abafac0c038daba2fcc9438fc776f36274276a53154190e
+edf82b625cb2b3d429e881d52556419441085184789d7b49a4a409f69267df28
+4d11427ec6a266784626f45edfb9aa7b7092b05280769816bcf85b5ccdf5b6cf
+a1c1e8de8a52d6231c8f4770e29428a8aad710a447c3733c82f368031f32485e
+aa0bfab74e53759b4b10ff8eb5e985109b1154f0b30ebd1b20ade2e71c601693
+36a843a634ce0b60a9b5523753c251bcbc6fc765289cfe94c32ccb98c04bb63c
+603c2efe49ad4b821f663907b35ca622c5c8c36c645f3b71cc79eac97810be86
+2901c90fb90556ecdb3d2a3c842ab84bf4b6f0cb481e3a4018989e8d1e7e36d0
+903acba0e456f8ba1a64979a2cf20d9ca5d4a47ef035fbb7fa00d3c0d8cadf4c
+3a78ace6323864c547deacf4b7493577e1745185fed6e71848b2d6814c1e2697
+c3dc2a777030c436d7c7f1023969e498ba562e720987849891311c923a0e0742
+22923299fba47b65620c51380a7f788689775b9daf6cc2950db825f5de71e04e
+81f4c40c299b18dc87725e9e9ef711355cc5304461f2800fd3f6bf080656b9a8
+3b30d75d18ea8da2425920fc3dbb50ff76a62899daa91f29c18c8a7ef57bb201
+12614af06d9a1db9f2c1d5ebc87d87228ed10f5d038bfbbf0bf3bac39d9c4e7f
+1512731ac673569146a2fe2f78bd2fb6a1a11415287300e1d0d941d5f9217c16
+c34d4b6fd7418fb2dd366f23ab18babe39ddb3ee9482c3126ac7599a88e2f971
+821197dbb697323fdbb49a55a30732a52f9847855b90d323f8788f4296ec3ed3
+4bb144090ebefc72052551a259d2251b42aceea3a3826174dee662ad26001d71
+ce2f6ddc236521a560578ed66e2438b7cad4be09d2cc341f588c52966f45b98b
+40198764d9b6ebf92e28424f719293a07eccb69c4696499948a4a5fd86b29c95
+e07c3e1f6d42823862c1a3531f6dd9b1d614dcb50147f90aa159e975c2fbe77d
+3c63f0836902fd537fdbb9f51e232ed1fc0a05ebb5a9aca921046b038e325172
+04fbf5e1d6bcf27027ff52dc6af3cdcae73c39efb6538a938e52287c75b5aa64
+f3ffbf6b24f21ca55e77deef3b4de85111cca1912c1f5591a443deffae668ba4
+4119dc0f26006a2e4069c64ac8f3f670c751f69233dc2e1853de6ca8bd4c1cab
+ac45205d9af77cf7bd0293bdaf1795f1da1fdba2ada4e24f7ee6d3b9f4300d97
+41dc5f168052e5ea46324985d4af6be52b26e45f1368f929ae47a25ad81e36ff
+f85b048878ba7e500d22bdaf3d3c08bc501f518cd67ed2506c00f05df6b69e81
+e00c7afed61e8771973db472e3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 34 /quotedblright put
+dup 37 /percent put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 61 /equal put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 91 /bracketleft put
+dup 92 /quotedblleft put
+dup 93 /bracketright put
+dup 95 /dotaccent put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
+dup 124 /emdash put
+dup 196 /dieresis put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+/UniqueXX 5000793 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306457c7e62c1d269f306bd3402e266de
+fc3b5e7d8a8d2f5bf0fe6ddd40d07391df4fad4a6018dce29a2b8f692b29f202
+3a7c0e66de8ed85c14f1f8492167357f51a7e84cc5d92e0fee4d81cf7fbc8de5
+2d2e7bb57142033993f9c08c315abade8dbc4a732e84e142d3bee51557910e12
+cd8aa37c459a5e6b7f5269f59078aba3be4641a11ac48d0b625c8325b38ec08e
+4c9e5e7fed976a5650d99d82114f449b9ca14c4ec957702295a39a93ef93f618
+99b8ea06b092c3c1e503e6e436e0a9fa22576c8930ab3dc8c20f5d82b69cddf8
+ff4dacfa9c54bed5a3aa3ea5b129fe96be632843b9b6bc91b615581a985db56b
+1e01ca60ee69ca92cf5c0882ece62edad3e106d835348822400f0b66af658f2a
+e56ed08f8b0010571807009b73ab12a8cf14ca6c71f03c2a48c500f9d62266af
+154a6375ff600d9bac3f05ce34142d6867a79581c533176bb2f3117336671e2e
+44638a97167e2ea9644e31ea16c2ad2990ea33c54001e0c8156e6de8ab6a4d40
+a7137ba275f39589fea2e2db8256adc103d6f9cc038037a47e8fd469c5f98a5e
+3c15bd4ace40d340018b1cff7d1ed8abb0ac57b5b5a2c20a51957b96c453edb7
+dae5affd91a46d938fe0a13363001d844ded4323f1ee6d30012aea19b024a552
+315505535c85dc26bad31e09c50e6512802976d298c4e90d0044c362e6bf3ab3
+62a454ee93de25ce54411090c29e9d75c80ce26a84404bd9de3aee0e3f921ac5
+87f907572b8354a5c3165eea7e8b2ba4e333802132f760b41a900c698eb3d273
+8bea0aaf7aae96a558f08b61aec7c7d65b2889bb7b99800cffee5ba19ac90fce
+11437be1ddfcf0bca5670b543b9644a71c8726d0c1005abdb96f6e0cf7caaa31
+95017ca81519151c2c0b04f81e717c0691b63a76e9b25329ce2625b711cb7bf9
+9d23ec2bb5ec8aefb8c1a3b422ad617b3da4d49685fd44cc21a1fe5e1541163a
+b3e1594601d63c7e98801d7746474377ce93f81404f3570afbd5dbfe77578605
+917ab96963987e6efc2d3f99fa56ecae6422579852567f90cc90e4ef6d6f71d1
+858270205477e221018a375ca83c572b3f972c5181d18643cecb04909d84cf76
+7174b3c0c8ec69bf1e9fdfbc0fc7ed97ec67d878ea4ddac8caa522fdc6932df7
+21b81af837ab56b547d4799241310d6692918fcf8a46189a78d6638aad7cb446
+2d8774ec73d184076595c94c0b4a8233cd34f2d92f6ff94f941dfd589def2ce7
+90d5cb2159b953338c7384cb68c11779120a68bfa20b993d8c0313987eb96a2e
+aa2c11cfd838e6aa48a89e6ddef3fae1a1b078be9787140270556a96e2725a8c
+f1ad46fb52938900730154aec60f544c3d4b4e3ae36a29b707853221f9fc218b
+2f527b97f773dd43a549d2cfa221d75c0663d796c562341d950ee0663047b0c4
+cc2dd64bdf04fc46958cd50f4b6e922f609d4bd19b51bf81d9d23acf907bfc1f
+362beed8b6d547d04c7b02c129ee44a8b5e6d2139cb662989e1aef41c1ba3cce
+93398d15717dd541df07668c92881f4710fbc72e4bdb87e676823f5b4a07ab39
+10ba3eccbdeebdc39e2b05e0ebf8366a2db8698169b35dc9b955be8ab67bdcfb
+4952f1f542f3201d2a49483821b4ec1661a8d1c36b7a217c80c87f36949fbd9b
+e98601e6a6d3499dbc3033b9c3a704e6dbaaa701141598fc35541cdedd6a7910
+51681eb04247ea0f800b0887210297f79e905c55dc4e3936bb6907872d6f5319
+a3d6440478573e158e9150b94898c64820649182b4a17ee073c68ab449cca6e8
+459387521cea49ea484c53bdd8eb2dccd7b18b480babbbcdbaf995bd078b9643
+e43a90fa2bfd75608f95223c324189edb38d8be5f87bcb6631d3ce13765ebbc9
+854a6ff2125f51e07c64c4367fbbcf5186d9661b247f49979e2086c054407b87
+0828e5d7f6b92c4521dfd979cd0a9d9c23b2f79252328a95d3b3b137fcb91b69
+436480b999219fb9f41e423df20703a8d6f4d5c8b3f4160767909db2367eb355
+f30864def5869f5ff9cb6bec0c24b7a1d31c47b0903054e15369770d9e88b4a1
+4ddc22922c21f139659833837e663947895400da94d4358cb1fbe462e14787d5
+53ce658c6fdf3af9f6d35e4b153573f7c9b7a89885dc0ce7e03317f820fbe9bd
+962d8599d51dbc73960b35fa23f3def26ac4f518fa177bb12fe49fb8ac82f334
+8a5a347e0b72f58acd0813ee308ac29cad1c64ace928d140c84802f90066dbf4
+254052641b5906cbaab58e2b631816dd8b9a88897da3b6b881db49c5eb8d4622
+43461bb6758adebb551114d9a85c76f9bb9edf78251fa2462a14a1d0f5ae1bea
+97194db98669c92de6fff8c1e159847257ccc491757e9408b6dfa5fd2c711585
+a1ad35a348451c9fb7fe92092c82e0b5aadebbcde601eccc9101c093e064cd1a
+6cbd28e800219b8b39f7cafee8710eaf315579a85cf598bedcd1d77996067dab
+c097e1db4ae3e754f71ab628f56be4c0a48bd6e8611c39eb91166245a8e40bd5
+0485ee0cc8aaaea224b10863f634161592815a1689a891d7f179a814db3edaf5
+e1bb471640e8a58becb50619156ff9d6ac69d56b5c1a4c22b1b507608fc3e647
+ae43d8401689655827cb6d03bf5ec2a9b785a138cae2d347d306bfe89671d6f5
+606d60460bf6ce588f87b2abc37f503c98651fbfd3d300cc780631e360cbec31
+de91613076cfbd804715a45d9af8fefdf09bb2fcbea4e6e3e77dcc23876540ca
+e8f81f208155da6ba34a167200ff9bffd1ee455586eeefcf84e6fd0784cd983b
+6ac6636c713072a9efd03251edb2be349f9463f967b59a62936cbc463d57f8df
+296a27fc7cc91a19eb0ea411a14a5eeb6bc106973e4eafa537fb1d5ab39bd001
+35eaf9e39819bf958ee8212985d6bf6dd1515589e279d247b61c109cfac927ba
+99142b6130c2744489a34df3c805964c8372d37bdedb07630d36c22001319ee8
+37ddd6b83547c7f8c25c578024122837b3037d8f4d2feb107bfad37e234b245a
+722ae7b550cabbea10f280fecda986b518b6413550b022f533bd4b07fd4a74bc
+43c34ea8ec86eda2a7387aa3a2a2503df9c36fa89b7b050a21a78097b04f5673
+90fe6bea15742018498cfe5b7a581de9ba1f5c78d9741cedad790a1fdb3406cd
+56311e430e76345630c5e9998219325087a0b35d9a3fd4be5a7102209db67241
+d1311f0fe3f42cb4ef45e4c85f5f813c8d63cc2e547593fd52ec824a9a992e74
+2c03e91a9f142fb6100a9502a236dc434643a89462422653b9a0315c91266ec1
+afd4864a48cbec8131b0de25f8e20f39d01b043934f465556ce0e4623169f424
+cc38cdaebe211cad0dd84bea0d63d4eeaace76f91f1c017d1aa85ff74cf76380
+3085bd60be3d6351316eaf002e5a91dfa62faed810f38af3b148133f7ee4e30b
+d4b054efeaf71a462a1c0a26f9105e62c16e6929ab69f967a28bd26b2073ef04
+b861a20d409b0a3c7b57cd044f0c26c522bc0b9abbcf72d7bb8e7f7644a7c767
+8e136b8747e1f552f4722bdca074490a6a6fb24dc72b821719c8257b49bd635a
+bf0f14b4e5fe02998c9d6305715b9e8fe33c0d7115c33888976294d6f7151850
+b29d9b905580a75a2a502cdde6b7239ddc7f6a6be90eb38d6a09ec36af46ad71
+85e292114f8798869d4dc89c298f7e5640604eb00697082be1c1ee851253d618
+7c52a0683332cd7ea919604d863e9e363905773077c6f084b472a76cfbcbe01a
+420740469ecff6813b70e26dfc6c28812eb07bfdc8371a243f8dcbab8b6f0a67
+d045280bd9841277d15b23b9ac6a530a389c16566bce044709771b124ed21001
+5ff406a08bdd6956126bcc6987e341e3822117b3631441c905c96959e7f77733
+e95e6e9807de86d9ce85749af04d0cdf190e4b72e252ceafa5cfb13b8287c57e
+a132af0fdd6e2aab1c7fdc0b3af2941fc33ba3f632ed87f0d41c665e76e64c84
+0ee2fecc5f9bada0131b100516cbece20cfba7f6dda06306d978025e29d3abed
+8ccf6705c1627b1ed7bba5d57c15d760753e53fba7f5d9067db3feb783757252
+1d1dbce5e34c0798c14866dafd0c8e2d8a293f8106a200514bee653b72f3fe06
+487f7755b95ac2fac9162c6e5cae29fc6dadb3dea54b6a77ec7207afdfdda35c
+b91e4f977ff0d18474252e3184914164b18d41c766cd4985bda9e17d1d69d3eb
+039c9568d86b04e0036b7c5d3afd6a23224d94604d3d22c85b9d4f20d9449c63
+03f252444d55695091549b51ecb46a88b3e43556426e14446be2cc044612e89f
+c118042f5c84d603ab2cb1fdf46da035ad80e0939ca4fb3ce8217b0896b179c8
+73c200c214114d18d1d36b573be34264b2be955252c63a7eb184b52ecdb3b073
+724a63fd6997584cf1d7de0df98f3d7af0746f411a617a3fc14f2e7ee035564e
+1505222a3f3d4967a47ba5a81daf04a8d6aea5767e0c9c4559105b216c70876d
+0b2d5e8373aa566dff8cfdbcf6b7131120e2b3e1eb0c10fc328dc7edb8674202
+727a9069df4f14c7b19ebdc7e5927ad94d9eaa79c94cea630c5cc01ea81e4de9
+28f6a7811308bf33b946b4bd93c44c704f60d64401d5eb1caedd288754837b14
+02fecce4e936fb9437aaab13184e720de6ef18ab1277fbdb968f8e97ea48c7dc
+235872a4b0ba930af0de9519c8ce91f3acb45eced82609df6543afd684ad32e0
+eae011f0af96ced3adfaf7cc8e3b5f0466c128ca38cadbddbcc835b76cb6f60f
+d204de0efa951ba7487858107b6fcabfee8b5702ea812b1bdf16c18dd5b4940d
+06e90eeb19abc5ec902866ba27c43aa509def7b05a8daa13ca0264d3df4a426d
+28e28b24741c50896cb27236225404864bf598b4dd0b65bda13319767adf11cf
+67428fd37083ae79567c45eb93e900c93ae5f46475bcf0d0bc11fb4e3db37b07
+4b6620604f9c395c6ee48cb0b7b06a175cdb876ea82906d7fd61f6f30a425b09
+3944e42f8912fbdc67b51d9e8e5dd917a84a3740ab0f51070f8b9baa325f10b4
+3dc8978fe4d011de898f9e8148480d02b01b1a949a795f45fb75e44ccf18cab8
+980440fb9e06d88fb65c800086252868ae1cdc71e914120c1dd6a08f2cacb17f
+962de63a688ac2a095be72beebb02b9b5f8237e431dad61ebbc3484399cd811b
+89006eea71494874289677d5121b0418d988526b6be7f636d97410f822cbc253
+6ba0a4950c17287eafd5a98ada90ee20e08e912b8c37fdbf4399544b1b2ba4b2
+a62c8f5985698c96dcf3e6430c5c84949e529f053c9e5ea6737d77eb6f5031fd
+5d5b32d1784cd31dea3db41273fbf192d5a8e6257c89897af52522cccd33bed1
+449c53a497352b7fd7e6b9807bd5eafb64f0c61ca48b80dbe87b80c71a53be61
+2d77d0eee9a04ca96b7a89be55bc6e6e5370ea408e298383007f6d833badf8ad
+46ccc8985603efba193cbae416da7d62dfcbd442df7f8d0c0b19a21d9e5c13af
+c1d51e5992457f66ff17b1141529d718a4592b5735bcd55f554f453b54bd0bcf
+3461b1885c379cb011209510ea6d45ec6bdcea3372176defa8557e0328f90226
+53c1a07e3627bb5461d1cceef122e8089b240d0bfc4f69ab08ee538fe9060c95
+06d419c07378f6c47e9f6830a5f4859c30ed51f4fffea680753110ec7b4cab5d
+b539cf94e1023b1c6cc7082c2ad5855509297a879149e30c9f29ccbac82263ae
+cc1665e3ffb837c702db3822d677e9973dd73c2d7bc1f2d378e7f2d73cd832a2
+1e9ede065c82affdcbdd15db09bdb67d2558f0c8985e0e705119bc350d6bf39d
+ff48deb0fcf761fe798a69240f869e6ac480e1c5043fff6cedf22fc305faa2c9
+945e4d427617ed537bdaf0e6729bcb0dcc08ae3204557dbc8ab30d25daec40fe
+59b18d27cce07d95ce24481a880c3621b9524c6b50050e205cb87b1291c8143b
+318db5ca2b90c436cf5317f83ae1ef8c4fe45d8d77c8dba47773d78d390ea59c
+d9930c9e77ae873eaf6c63b7ee0e1f3e390f0a46d359877f04ead29441ba5daf
+79935409ec72c11c7743bd6abac1d2f943d85cc2ac1a19acb487fb7a880a06ec
+fb8ad4610a3d268f933ab9f7ba63c25aa2c6dc0adeeba564409c0ac9b4b19adb
+1854f156f8cf6ef177937cec949e030ce4d133266d41f58f778c7d23f7b90c4a
+fdf6f57ed81f736b9d3ad6323c7faddc5147ef9a0a682048257d8b4569260233
+342e1bd97731d589a8b903c16db49a6b578f6aaedcdbd5e293c1e3cf85f03107
+5dd11128c760d770461005a20a87d481ef4849b892772097f1c626a0cd5c65f3
+3c11fdf3bac6ea95a72b771c3b72669c57b7cdae7d55833ef9dc71a3e7219c2d
+6349791b86ff1f15e429bf7c659901b7cdca890ad9895f5f7d4c3d6ad1377514
+7d30c10601cf00efa368fb84cf588a1b6acbd0b900d19985f6ead09462ae9634
+0449f4adb4d9f46da270d3c438e5f095e9f53185660adb4ae6adecb3e5880f61
+aaecd9e1acd5749ff974f35559a57cc663bfaf216826c208e0b86a81d5c9cc0f
+07724d424b5024c9444349fa4acba679e61c73598d53daf2f02fa22089b918af
+cc4aefac1b2f46d962a7a6ed4b5466564ec4e2d65e548233b818d0b590fc2346
+a881c8f80c840d42cb7cc9579693c0b6487aa73d28a108067ff88249d28be6be
+f9eabcc35848ac32741583dbf4516ed6ce5a555508aee460d362627d59aa0350
+c3125d0b8b1c4cbd9dcfd6052ec71461d6e0e742b3cb7c81459ebd9ecee9f06a
+89a262a7baa260eef122af5238548090f9d6a426a6563c355a718895e91cd248
+c2f946f48326c852e2add724896b128afbf4defce92d90740f352cbf2ea2e01d
+3173bc3aa9a8c503d782fb768c18864984f0a31f573f4e23a94bf6c10b772335
+94f6db7fca8831991d7c999be98639533f5f04e8da4c0b7cef52d4a0e86a76a6
+4c2b16e627662d3b0f1d972797d23fb5977d15ef9a63b21b64c9f0c2e93b8da0
+df2106925f0c16d72365984ee4e050340ce09354b9553d0e209234f26139786e
+f02e2cec2c619a15a834b92e4cf2dd5bf0b0b7d56072d0b814a92a6ff5da82b8
+d3921865b7e4071928fb00207947e040178839c978fc47b30cfb25e0c118f621
+107b570e89a41bf0783c27610b22d0147bd8c7c5789506bd6e8b8c4bf0fcf951
+b59c87da84244e99e872e6a7b538e5b3c8f79a6611d567eea16a961ef31df830
+623fe8926ac7038baf382ecb478e21179c5fcd10d3697e0a085bdf92496da930
+df9d688998c0f8d859269223245f1685c6ceaeb340e76ed1c9fa687816063d36
+b9e386ade4c1e62cc5912bb67d4c3acd93d8de4f41fb8e72343e67f7b66a91a9
+1ec019f49bdb43d840569bc959e3cd0af854fe2012f6a4b329e4556d1cf2eb18
+bb078d5f1f2eb2379edaf59bd0c8939810d2cc481279feb2adb69983e982f2d8
+e7f8edb5b45144b9f09a938f843e6adac40c63d6032261a433c38237b60e3922
+aa64090fa7540f469b5263cc709dbdbe2ab9c8a0a123752594dbd3a78a7357de
+8be522f29401ae793fd61ec02a788be914fa42c53dab68bee74ea0c39f95a1c5
+ad5c3feef464b56a8d86f18d99cc1984f0b5b962898d946b72c363e20b50d185
+885629dc611d61c6af5af35ec56310b83a70e8c145e059730b66e4308546eb3d
+38e6f0ceee49b87ec29571f8c86abe2bf20e162b050208aead3f581be9f7e7a2
+dda8360527c46c21537a8079c3b528b92181f87703473bf2074b6e8ef3ae72a1
+6a50e1bad9c21c83044054ef9a51855157e68fd09700b399d1deb232f1a62c27
+3b2e315c9e026018448d94d2a8074cb190e873a52c6c0a8d7838094584d58778
+22c649186b2ec7bfa4ce5a267c4bb3605c4ceca9d54f7add7072dde618e750df
+71aadeade0af0f7c6fddf2c523e35f79c4806cd199345e92413fce37f8881090
+8d052b420be35fc1c53fc351b2ebd72ad49fcbd801fa81c004a59541c86eacd5
+1314a2628b2d13e7f360757f8f51e719eda2bea7e7cdf0acaa66f2f854fb6992
+9b0c149f767696b7296ad8f287ecbe47645f69422d2a3262be7a9808937a8cd1
+cdcfd43751b297617d019e5eea049ea3511edbcc80b0f34b55e652ebaa1cd83e
+552e5b32f91cf9d84844eeab46dad0f8fa779365efc43111ebb642a65c4c6fc0
+848f5061134e12ff51731d9f47e871b03bba6d14280f93f64fc9fd6f23c1c21c
+1c2294045707aa0694b382a46174f7e0ca7c7979293a1bd1b1c0eca4aeb858b3
+fd56f81a378d253180fcc775ebdcef9af58537198018c7b80c348f8b592f83ff
+026e5ee2d87d6874de5b3af43999d8657b8efe9381dda4fdfdcb43682f45849b
+0c4b67872d0deb22407ea656d4ebe5dbc4270221bcd0112d3776a4dddd833a19
+672355ceb05f0729c130e94a7495ae10148230686abf7bcf30a9786fbea97e84
+1a7e632b0b6bd988e503aef57e8832a7f6cb5e81b6354cc93f8768a82a114648
+53bfb5b2f925e879b9862ab5bfda91b69cef642f63bf6d7391bd2cd37959d569
+c9134ffbc1fab468fc7ad643fbdaf00fa10ba9a992e98060d7aab48bf216dbba
+e9beac357fc627d3fd6e727a5f49f7615f272f6a5567ff426505b6921bcae395
+907cfa419ac12149dd8e5d1372a5c65c024180ecbe3aaf65e3c4a925d0fe6c49
+c8033ce063cbaa93e11fa5f41bc774e08e8a3eb8de9edbe3b08f993308ba3f60
+769daf6de48e7b0c74b626402dfdc0a96d88f74a26ba88ee46c6d35dc78a952f
+24ca414561d196acca081db4d258ffd3f360dbc7c804b381bcaaa091530d5888
+fc1fa2b068f6167014676f7d2dbecf35f6ffedc6e5e4516735e69fb8baaf24cc
+a8f6ae22d2e294c11582ed8e3752f4d3d227443416ce5f9e8bcb784fa3ba2d7d
+a7170f45a290e03f8cac9c5dceff07701c02a1ef569b5ce9feeedecea7867dc0
+94e7ce4ef1834779348c7c72fa3d2b9efe32a80f7d9e523b79e38406b841c4f0
+fed20a4229c35b6f5ee2735d3640bdee6cb50a08296b59e68c007b7ae6394606
+08d413e502c235d715a51f2473f7f524c7cfd1841f914cfa5fdcac4394b9e010
+213736d754095defdb9a144c4cadd16556578bdbcd241311355bca2e08f8b319
+fa5aa588f9f7fcb8ec6c6fab175c25a8c6894dc4293fbe7061d7aa0c422ea749
+65c5f6c32e17e2ca59c70ff23bbaad368384b63756bcd31d8151f6428d4c4395
+a6322954333df25f46459b2d56452d405b2ae2f80b68e19831abe44248125138
+20f9deb362440566350a3fb23756ae09a7a1a938ee52eff47259bffd7022e26f
+28bb0ddc10aa2c2862d5ff6055b48707ff589042c112e27602b8a62f129788de
+313d0284eefafbae8fff6922221bfea211c30c41187f5478244659292645fdf5
+8845232a1e6cf50af95070403e635ebd4b05e6bc1147394e28dcca58f87793f9
+b12d817b94c24235ee028d7012a713ceb9a521baab6963dfea650a3f90866235
+c058f43695861e62ba6eb157e01d3cfee337ab82e102623f4f02984e6089cd3b
+0a5ea2fb70aa18028543cf0a2728379f053c4666dfa7b70ec8ee06f7f4a8fc4e
+60e284ff306d87fe34ae8376d4241cb4eea242f2f6eb4db3e98e4e33efbbf1b6
+7b81fc95b6b10a46aa1eff60dae62345d927feeea6c42abc8775c796ae3ba279
+5e7ede68d38866fd0c107b3db69116a840cd62aed06eee587c71dd6ce186c57b
+00fe8a526eb2cc0ad14176edb0c712df63a59bffe52f517d7111c564d117532d
+14ccd90c1239b10b57323b9e005a9437e1a63ab3318c7bbd11eda794c42e326c
+449ebd1a93dfed47254ff2d2b716bde8110b540ce7f23ac0dcc1b3f6d259617a
+4a83b5159f2033eb7208c4142e709cfbdc993cd889d56a59b0be9f0d4fc2bfcf
+cc8725105717baec86beae6470f07a0fbbdf32d26d7dd532b7248086125e23c2
+13a2fa898070523a131548b68b4f5bc70630c025e02113432e1514165fc57e54
+dac743a5d07a7aa5cd0630fcc55b6fcbdde4ec16ca9a2f9b3e07b845cb996a76
+3a2150135f06bef1c9e47a4ec16f84750ffa0d083cf349c1e46ef59914f5a97c
+6e5163d8cda974a4937eefdb6178441078e309a063ca1a7a1037a085845f2ee7
+f035845b672979522adf54fccae6cef59d0e9ac7b8014598c74afa4291a96b98
+1a3cdda9597b31b60650bc0063c389807ab38aa5531020ec3cb31f766e744fef
+4e779e5c1dc88cba32cdda8d91033df35d35a283479463cd1bf598e6c0b8b710
+dcf1dbc3bdb60dae0b2fb95c3829cea986dfb19e1e24b7e0542db84bc626294a
+9c100ff6a802f16d2863b9d0d33053db024d44b275069d98311303fb19c9c35c
+9fbb5dc2be3532a5524cf86e80a348c765538bb7e41abc9af6340381c65cf23f
+470c052c6d53ec5f2b806fdb5790c41eaf66bf89ee1fa4a67d3ece8827da2f5f
+6545f154468c4f2879900bbf8c2e5192fa0851ddfd1b2b9f0ca2d9d751143d69
+877af81588bb39473f0c8b17338d4d6385d0e132a8169c1e70e2d4f4a2e8e772
+2b359fc83c3c1cfcb3277faf7fadf4a73aaf1f8cdbd4a6646154d8a63fd4c2f6
+f705c32e3d5524992e39a016dc86ae886763da71de963c7f888849731acb742e
+8823021ab9f346ef961b928f38e28b64aa40404b9aed0f0248a1b0326f2371a7
+2eb44132fa575d10f05ea567cfd4b65007a4818e1df13403862373213b322b43
+eddf08fb7158f1785ef696cd2704ed1ac30b4dce8f9bf8a87660e2c89656c4e1
+30063cf9000944aa5b9d442ec5e0b0f140b83d8ebfdf885b1c646c7d439a3f59
+05862441316332ce5b52123e86a19f945fdf718733a9b2785444cedb5fb4bade
+aaedba8b9e55982fc5008c308675d1c171bec5eda5052bc9aa3c8931c89f6e2d
+8a7cdd1a3141eeacfeb16272edfe760244aa9319b1d420d0f502a98dcdc10b9b
+8eaffdfc504d14f77904d85df0d46a08395288dc189b2cf6c8a94d2844930e75
+15954543091309e2c1ff18f65282c24b6f67f86547fac82ae8a1147966c898bd
+7f53e3e67d186b84867e2e50df364d6e6682f92b3439f98529981c29814bba40
+2a474c482b19d248dbe6e4adb416070170d847799e348f722349cbaa03c7d845
+ee33304b34ceaae24d79f422e1030146468fb4604fb1f0f86c368d9617bc2c8a
+7606305f1a8ff2ae136118d3c3c696f1f20ccddf23a0592e1879944d74a8e15b
+f2c22e3c013ee06af6a03b6205269ef7b3d1f3e98d6c25bed5a1566ea70fdf7a
+01bc81afcee9bf01bd7f4eff788d88edf68fa545dd5e00bacd7dca5a3a8e6f31
+f9f505c3552d9f911eae284d01c806e15d5032fabcfe7fdbc5f25eb664227656
+f6cb8c63e8f7aa0efcf61f4fc1b0dffa6117ea1cddc88878748fb3df6d96dd82
+7863cc28f6245a17e9e09be9f48bf2f36a517a1449201b11d350497465b7dc31
+f9d83462faa7562926c29e7487e4a635953813d406fb23409fa957273495771a
+bab7f42c11320c8e8540a031ee60f5a0563d881223d4894044360bd2353ba5b4
+8692ad5be40889eec5fe7f00d39a8181227d337d314b435aafcaceb6154a622e
+c1eddc1c3ef41a4ed264b3966716fb63b2ad074e606ef5c2cea2c1b5f251cfaf
+a03d5e1e2c3be9458cbf4a00f3da84e803635ae523b94b29a6c84aceabe22acd
+10d4b0bcc81f02b13f486a3ad22cab8c347bbf559e462cc8ecbd444c3bbff882
+02b4f934f7220d65bbd3bd0eb9d9b1280188f871e06ce94d0a28c7b778cc09a9
+7e516a48ba69363fabb83320c7af738dcd25c15aee6d5c7d3287fbcb514562c5
+0375b2b77d077267a3aff19d45f5bca2757ff144121cdd4db26e06f76e1ad2c4
+48c336beafa48074087455b01cacbd0e3165332aad2e7e8c35eaaad896fe3f70
+cfbf08ca6104d1a151cc4eeea2ce35039e4eb641d03ef76625a023984d23df93
+8b720c5209328343bf10153abb69177a3519f26049f6b08650e8f2a3d772615d
+1f13225a8eaa5905ea1739b863a94b97d41d87f562296b6dfd285e330e95a883
+98b8b48e64e1d1a0d5d91c3f55456a560a087f3038746b59717ea12e15a05a26
+2b3923c84f23cce2478180d62aa469ec5c6e1236da1b1537c915f835655033d0
+316206a37e2d94288e51d896234cc9181821695e4e727bfffa2a267528fc02ba
+305d1ca2ad48272ff96623e0bf283d18e9d56606411c8b7855f92890dfe303ae
+1e4bc1c891508756e8ab50c83e09256a44e10df24adef9b13b03cba0e36c5d96
+68f49ece0ae76c88aabccce20024764fc741b4ce82bdaf37dc7463ac36addb22
+134051a0d49fd5abc3af12298c70f3491d622c1bfdf9c0fe2a0a0a9c89a84981
+53e23e9ad5cf17927af01f65c8c08c87c42539abf62cc49b9876bf66de800c38
+3f4ed69902816c83a64660027df3d885c58883d0eb66c2b667cbde62e52467d0
+87b99242a8df5a9ceb25f9ee474b4a3ca8abae76fed4edf67f5f1778ed8f56c6
+dc5f67c73fdb9aa21efed7488c66f4859394158cf8101684c6eeeb2b04101a08
+1f87f194b06c1c2d52316a183a525cc96974ebd816ff7e2bec20ea9713ba5357
+184d02c615ac71aaaf37ddb9bfbee52acb4e9097bb8f58b90cc6161e01fb0090
+996cbf5a82e0b52dfa558b7897d0742231efd066d8c3daf0b2cb0914d57465bc
+65002136c3416e49571f0f4738bc1e0b07b28a9f0e2b79f805eb526ac2aabcb6
+6a7d1ec9ac4ccf9f66131fee91ea82138e2024a7308b5604fd163a23bab985c1
+a7413fcd7e7394b34cdd8a1a69291e1f73a8b0706db4d2f745b6a0194ca0c440
+1ca200b2a85830b7877b947492eb034f213a4ed4b5706dc92a555963d47d25b1
+c2065c6aa4fa00708f24fc00998d55317aeeca01bbc79dc9ad3693e6ece2f051
+e86023c2cd8ec454856923a2e5fa4ff7cd5cbf5767a8afaff45e60df87741d96
+c14832524fdc9348f2ca879366fdef3e8fd95369ddda58385d166078194ee1ed
+7086dc311e83358c4847477dfbb2b4e6ce9c9f225638400713e860636d71ea69
+047c9f37ba2dc128638fce4f9c09585b964c9b4d6e2f6322a1ad29f8c93db3a2
+2ea0f73a23b9c9d8e6534e1f981e89afd8ce1dd446437580f065c1319f2beb79
+84027f615968c422c0b7e2dc79bf482a76ef055d37e7697fba3562c5b643fabc
+e989e50ec31cdd0717fe1a8dd520d64fe360e17b36061f98da4ad1bc53b0edf2
+48a472c83a5512fcc2e5f315421d10418a9b5c23587a5d6fe16a723c27547da5
+2a21702603b44eea12de2efcf092aeb20cba4b6a05fb69cb1f3fe3d25df5769e
+4fb90e1cd196349a23a124702d7cca5a8872372bca27851cd5d99683210beb9c
+7a892b27d63293fd37a1b08075e36c00203893864297880dda527bed8e7ab9ee
+e3f8224e74720e4965af1eefb99d8c7ba8d6f00908dbef272c089f68fc8fe65d
+f34422c9dd42ade70a9ef6b2480f9e62e07544dfd57155325fd1357432106691
+6418399adcfcf26c53c909b3420198d69a156b95ed6a76cc42450fd0df22b6bc
+1c968069a1b553b4cec5b957188aede2bd1e9015f872e6d711d3ab5eb5e5fcdb
+207cddc45ffb027380e14f730e57716d7832671dab539735ea9a3cb80130a11e
+01c40d75541f9b41ae2583ab51e19cf92d2510a4c3adb4c0df66b1aef5d2b822
+68b71a67047e3b81bcb5a8ed865d851db5977df6b571071129db479bc87862d9
+a2522d75460d650252e60be250ef6dc0ddb23d993b9148708e141a309ef666c7
+84947e3215bcce5d76ad256715300c68f850d5a740cd524efe327d2370db326d
+89a1d70af3d3cdff3c239297ebfb9df2c718dc61546eb2c222759a1291f3782c
+71741d36b90294e65d1f8174cae14276b203c20b9d857d8114c3052f6fe221c3
+bf6706e023cc98f6f066dc24386ccc063150013d564b84241077f16eed7692a9
+0f2030c06b98e92a1977608f60c7f9646967e9544fb71bd3e139b894d7d9640b
+fbd1d5c66892cc3846f9db988e90e1c2a78de50df122d92af265af565ee407ef
+e1c259278deb5af1ed3b513a5c205ec752fbc2ac9ef4b7ba7216e77cf1da5723
+44122dcb23833f5157819e670ed6f42b3d04eb917ed29e977cfc546aa7e6fe59
+40df5f876135f4262c260e150e3fe8745d54f959e03846bdb65355821051ec43
+193079c2c191ad5ba8cc30ef017f70edfee0ae6b056e132458a78964c75fb1dc
+37a422289231142fc08a477a185976768638f34f4dec76a6c21106796196e380
+1b07458958b3b571f82d0b9c8ab7a82ce852345202660dcedb2af84f201bb58e
+6787ab851e5c5a1234def1fa9c255675fa3d321f7008156098f0295e05f08167
+649b2a68945b62b9e73b4aa3e4eb5fb6ee002c13c2faa3ef95b71a07e3ac8a38
+f3e0a00a82228f33919fec6e2846baab35596b38f254c3c9d643902aa79f469c
+85c1bb6f401c06c19f48db7ac94796163986899231b43a257c3c8ae2ad529bf9
+03185c12486d40ffe933471f9a80ae3f1bbdab1aaea36d9c6aeb05bc397cb913
+6c42a4029bb26b9dd02358ffb0259d3e7f1564fc38aa451501ad241673aaa0c6
+0910f96c8826ef0116d3425bdba155d33be1b814ad233517d61b75eb9daf82a3
+1af68a03f8e3d46030457dc89520276876163281dfd1430f50e7b6164a3e3ecf
+f1d21e8ce5ff8f4c41eecbbd74a01c4b297d49c0c491a143f65c66ab4e35c7b5
+0544178363deb68e5abc77a5861b9e694a7f6ce646b127bd414889a28f473d4b
+40d2c35fccdb9641c0d3e3224ac74ad4fcc01f16a2ae3d71b3992e69f2c9ffc6
+d8b32d2c4b9b879cb24464da45bcf10ac761164235e7d52bffddd695c498fdd0
+d5f131ee22a9683c4721521bf2f0bd66985f3f5e02913cc40347c83e2e594ae9
+674be180f2aa237e750e392e96555f92d4a4d658fc23fe446b4fab5f8d441f92
+f68cd181a36700b0aed2b9b41f6f4e794c789b3417d20f77212c9f0de5e4d69e
+6c47d20c4f75e220172bb33e4f52fb892e6829dbf5cea7398b4096d00e7a68b7
+df090cf9a163650f5e97bd192ea231425deb05e0d537b79f74bbd3897dc4eccc
+f512a268dac5b503f21b71d835ec0adee030af91fb918bb6ab3f443ddab6f805
+fb6abc8551c6a38689ac364f22420a62bc81208bc963d4df4e8411b953370283
+81cd9e9a9d38a9fa98ab55c79eff736ddcaedc6d0a9bb6ef1e397ec7efd136ba
+462acd5d4b1488c0262d91525f052937280105a3c9b3dfd01a8fc7adef1a888b
+a077e5451753d0312b664211829d801a0e9d55d295c965317b157a9ae6e64cf3
+c812fa3874b429259844a4737ebd03b06cb789953fb644d7004ca9ea7f106412
+d1b19eb3eb0fe8498cc1b8f0caccfb21201d6111bf343f54a372808a0f71af78
+e4da9e9366b30f73c884b4dcc25e1f7d13fc2afefd34bc5ba2c828a6ad8a8eba
+ba378459586521833d6487003af32ff4cf98236857b2fa00a9afb75a5c64be51
+774c7521acff2c09c3c90b446a30aaf7adfd46866917aa3e795bacd9009119ea
+498f2e30ea715eca217e63bf70288c0c10d779dd25ea0217e7d9cbcb3ed89190
+1f8b79ec75b5b75fc5fb4832eb0ae9f8a6ce8085045975e8b3d178fc0d6bb686
+40d84c3fa8e70f837b057f4a7399e269cca75c8873f0e9d6865c164a788b4cc0
+85aeaf24ac26b5daaeda916b4c5d4908d064b1d1724a6fc3123b604ee124b4da
+355f23d8a2d6f9e39179c83b3cab08009df5872a594c2758452d310182d175b5
+58301669cea6d1d0b1a5a72e51ae319bf5f6c23655ac4b9330cfabb74dc3f029
+51905306b5b2013da7e6b059dc1cbb50c9a0699703885b574464e58e0ba9e855
+7f0a2c91e88c10e5a9f528c4773d226c04e5d388f08cc7642118ccbd2af9e33f
+a9e9aefdc13205237cd82e31d425d63eea2c160e103c4afdd7767860c88b0d67
+f6b7bcf37836b1e217c7433e3014b69113c6fee81037cf0fa4c49cbf27017d73
+4909c01cbe03426acdcde0ffcbd6fcdbf9f2189fe257ff940aa77e17ee964b05
+dc4fa615bcc02423bcdd0720e6fbf0a43115cfca27ea363ac1c74bb94580de19
+765a627e75f18e8f753a13fda56464be7fc12c736a5528fb3b1066a8a406cbd4
+b0bd959f480eb48f5c50a5df3ab114fad424628d6cacb8859275035bb101463f
+716e1d3acd683823bd7f419984dbfb60eb139797fb872cdd6ae40343cce47058
+6d90a8ca961d86edfdb188dd71905bb9b00bdc4a27d0652e989ae10be5d23a5c
+3375ab0d396070207baf1328006563e21fa97bfd3defbdb0dee978fc62b2f053
+a93cbb6281240474c662984bb4aacc69dfa464b1fc3f1aa5771c23c743b05fb3
+f25f3fa02c35a688889b9d79cedac84190ef737dc52ad3f9caa5cf98dbeccc22
+2471f641b07eeefc8f177770476fc0eea7611208987def1ec576fd9fbd8a8ffb
+82296b45fcacf48f70e23f79a973089ed5fcce7df239b9769d1f1acb12831ad6
+f1309cb917c7ab9b9e6bd6b861d1e32be6226a4144866be778340230248fc334
+79e9e38d047037dcfe47f414b5ad01ed88a6b70a052c09601b75ffab529754c3
+a77deccd846a6d5b26f43d290ad5eca1a3ecfcda737760993ea52291f539cbc7
+851435d1663443f610237a5213582724def937d6841a26547a978ed3dc42c447
+d114d0f9b6cac685c3f5a8bb5d9a2ad5b4cc18b7c13ac316c99ecba58e7f09fc
+4e0a3fc220fec6762b80fd2b2bf8c6e72da4a15c3e64b93322d4fc96695e2216
+005514811097f4c7d393c901742e89232e63618ad4b2c9a21e14073ac4315d1e
+34fd963c80d437fac860467b2c8cb2c3dd8300e4f5697e56b588ca2e60e9acfc
+b95d5dba9345cf1a394aa738e6bccbb1832f30afdad30ffeb4e8d383c19a5849
+49ee2cee322ebc8f6f8189a3cbf793f26c25d3f40e510874bef5c87e6322399a
+50718ac83751ddb332731d6879b8b9f173a29093e6ad1b7ff008c44dfadbb92b
+92132467e894b6b9656e08716b9f66c2922c39e461d29b1b711c6a845aecc9cd
+90b14ecbd76c0a1906f43f4933669803745b39eaa0d7cab73e7f2c23eb4d0887
+924b9c893ef5f6fe0b01d3a485c06c2ca0d832609318c6d8562a08f35a793854
+246b30ff51cf00c946a234356dde840459ea000efa41b528637baf5db83213cd
+ae176086224919823b10b8939415e2b955f6b9ff8f6099a540f3851136459921
+08a7f2842dbb5556d008f8134aa85e4a96b9bfaae729c81243e8d7897d307207
+c004f15bca4e87e53ab947272990cd430a0242e65c62cb37dbc94cf26afa8345
+c0534a0f0a3ad11fa9d1d703f75bdcb8a04845c6d61a12685d011bcf04a6872a
+d791eb6bedd25d76b26b230f2ba217c4e878da12902f4c756d4170c1457f4408
+ef60329ca9ee17044a84a0174946c1bc186b5be4ef5f94abb649215270e7f169
+854ef1340ed51d62228ec5d1d1ee0467d77e23e2f83729a703c4f4dd3aedda64
+6f975faed56a07e9c09425b320c072fb376db379d4180211c7ce2d528585b4aa
+a666ab10ecce40c6652e91a7739e76a4959c505e4863b553d73a050c1cc3a732
+de6391010fbc5fc7ab13d2f242b9b57186f0471fa51002ab02cfcec51fb93edc
+2b03a5d5c4be69359f43e3816e895c3bb7c9f8e266d1163ceb270284e5df9e96
+cd1160fc1e8db8f73963533004c9dc5eae86bfd69fe7a5c1ecc635885180832f
+5b9744892f1404276cd670e61cc79958bc31a52702d7068cf121141cacd6b933
+242398a6ff334a426293aa60c69f775e559a8503ecc20cfd655b7b996ea82c5a
+a4b9e1669a779124d6e1995d9a38e537898a7ae5038f4a42dedd3442329a50f9
+b48fc12cd40ac896abd7ba162ce9ca19fd95965ce1b0c08637f9eb9c598179dc
+044243e6a3dcbc2a729454efac3b389d6d6d59c1ea600b8bead7cf09f7f979ee
+0943f3e72771f491b946be7bf2547b14844a324a8da2fb62857f888fd02fbce0
+108f27fbe2a6d54d2262a12c621be605eff3ce100d61ee5c2f3d699f54393590
+1d145f1f7c260e39821f8b807bfb88d038904d2d6cb4aa6a8f139217f2e5b682
+b98b63751f634843c2f5aae82497b12381e1d6b01b9be8fd9aebb038a982bfa6
+e9ec56d730dd2122b3e6ed317d76a0178339034f6f43a637e9b81fb8ea66633d
+a4952a466b023cc571aec7916f89553327c617d16b98e3ef99651dbb89cee8fe
+675b653e0ded16bc637cf12214c12eae8093d0ef571ccf9d4d06c664363a81f4
+8a812279c49a27f9757937615e5b7fc5d7c6c198a4c7019d1a8cbf61594f6051
+dac8f1c71aaf6c15451320ae66aa7fcb11385bb7677096cfb7fb84e53619f9c4
+359a539b09f05492ca0c6bfd5779b036cf15759e9c9fda7ae46337665e1e40b6
+c2befb22a7b60ba77b1d6bb4d1f395e4e96a9e1b967dd184043260278bcb1124
+2b4f21f38ab33c5d42182a00839dad8705f4c4ec2659215b6a0fa5685fdf446b
+01a1d2964f670fbf3e31da667eb4e054cd05419f0eea1d770cc8a9ce3553eb9e
+83b7bac8da4a6145985e0059b266a2694757c125c51a79412e799e54a4972354
+c7c377957a8b18eb4a2a2305cd257ad4fb79e1a1d47bb7aef5b9178a38c34909
+3feda8083c7d31720ae7006692d7687fba607eac1e5a592fb07f15d3fddbd73d
+9f0c1649c385e079a3b85b73055689d08a3ee6fedc1c51909dd4352296df8bb3
+350280a970d44b2d0c7eaba9548f7aa4e521227e6b8d02452d162299b9775318
+37e6d611d19b1bbfd9c30093a046595c2fa1fc83235f87a2eb073d494ac3f944
+70e42ee91fc5d40a5999bc1d84d4c5fee20b841ba06f3eb25e27cbb9f2079fa1
+9bc5ca7b0b3339cbffc6ff0f2c31994364ae57b0756b1e4fb666931f10454a63
+de8a63c54e6c164b14881d44346671d6667a553259a3df1aada13181a4eb44eb
+f6797de1d80812479f9dc8d5350a3fab904715e69a9cab9ee6060cd9ce60c58d
+a42b4c8311f382e659da6df13802017ebbc224bda97ec733b87c971c91ca9b81
+fd2f74960888c251d0f92f041066f03fb0ef9e68a3d48f98edb1541a19e6ab7f
+e49380076ca4c40f892a1bf95ccd329403a245b175a4ad11eac3f87636ff3b47
+d5ed57a6872d19eaba5b584522f6bbd563bf6feb41a8a8330df8fa4f2acb47b7
+aaf085c02ff26dcaf2604396cd1e8a3164e93aaa1169b659394063ee16320383
+e48992591b68e5c5b141c520f4cbdac80c8e0cf1bd307433a33b66964d77a54e
+9d77def9ac42ecfd704f90cb8017ad806cd1b93d10d040f3dd92474a84023344
+a91b338029b4b230c8757094d3d2047e50a0ab63876c0e8544f2c60bca9eb7c7
+23aebbf5b67e8b6679615a55fcdde034d8419fa322481dd7af29a1fba694564b
+75743ce2626d2b0fb776cf355aef36c266894bfb5d1c109a341531a1605528d4
+cd622ceec316d4762c7c1eccc8b25793263f2de98e0b81f3a267b86d7b24f546
+71738eb81347b75c2077e5440180bab5a3b7118b6d547c64c4c5ae4657e9570e
+9917602246430b7d6afac7de6df232a6d540bb1d18df6c37bd23d9970c852284
+03eb888a2504d867a0e1a83c346138639124dd9d4d310182f66b648bc87146af
+6db976b8b10c146cb8ccb2f0bcfa2df8845934241fe50b225b8ccd4e820c52c6
+a45482d7156afb64f3bf9cb263e0a121108b507293c4041a9937e6063b53c505
+b01e0a6f4effb3ab0030efd8828dd210390b227c28c87578c264d108a698452c
+1a43baed44caf30286165eb9a1bcf616f8ad5ddbcf17c2c2609f86d37eaa84ba
+d6cc3cc6aa0aa06b647b879a59607e74e693d702c9ea393b7c7d46dbf34ef0dd
+b2df42702845e5158265c06c8a9c6e169a1cb6ae08ec64d065353f78cbbac3de
+4b92798a8f32a5630a9afb38d99ad84e72f63b2a22cf1180e95272513504d0a7
+755c4a36685ff38d4b951a6b6d729e0faa473401ee21f3be48caafab90b3f788
+77e7e53a3e42bd15be795b7f9f0b5262ca2b2330e5d2a59691c4f29c2b9d9090
+779677255e6f92ff26ecd354d54d69bd30568ac11be7b024a1ab6ada95f693b0
+6a5fcc9eb26a39b1ffd031d8f6b3577081ce0c43d9dd27fab369b387974b3fe1
+a94d59263e6c114c8bb676fcb8cfa9dd2b6809a1b0c90129567662193021c429
+d6d75701107551b81715fe699d9209535f8980107cafd3a7c491e708bcd47a81
+3724282b3c527a6f40e9a360cfcbd3cd37bfb6931df15bd315bad26b079159bc
+d5bade4ab7433872fd17e8fb7af396e837eb8681b9393affcc42b762d76e72b3
+e6a285539e16956c06b9799f77033872a56bb7eb84a61fa2d80eb91a51f45925
+65512d159c9e4177467d7feab02021697207470242c041f2e5708e3d8ea5d0ac
+39efed2f0d0862eedcb33f3a9e49422301049fe66b58fc4abe1a9bd3ab4a8365
+7fccfc359e312eec875454d0acf53fbc658aae4420198bf438f19e9fa1f02c24
+cd021ef4c5446b7a291543a4ab3e57722c50a61e9925dc79fb506dd87f611029
+4d8c796e500fe2b2563adff714427ae14772fad7344a45c54efccdcfcf87259b
+01938ee5df82532e74970c9d2b27b5818a700c98bdac7596a163cf89e8f317aa
+1426ea8ccde42dbacf2225451ba218307614d3e592a36802f91466a5a72090f0
+7441a4b5716a4afcdcd7e20117d7a95cfa0edddabf8de804f4bf173e9c0c34ef
+95b9bb2df461b13211ace8f840763373b12aeaf3a770b09447979081e4d9c964
+ae4ae1c229599797b21edf7d4a1d973611d8204c6c570d943cd6cc7d764a8f68
+ef119b16c9c00ee6b995deed2fb2506927f22d6ffa77514568f6cc36f098534e
+8ed68997d95de305b988568812b98f5314a8780682892d4772a0e23d4e37ebbb
+ce5292ec124c3c04bd472f83c7d5086a4b5e65ff049ad284a4cd418f5331ac56
+1df9d20628912e6fdf3f1a3c8db0c7562613f41536797a659128c35a94defcd2
+0710b926a7ceadebd48635beed52427e7599a80dabfd19d0f648214290ed5398
+1e26a488068060feb44485215823eb822226fc001d333ad02e3f76a0de783b70
+737a54be7374bda3347b81ee29280d08b03a6287f4d19cf66114a09fc769f9cd
+7d022a8b8e2949647151b279a7ad7897f41c1d9feeed070e9e8920e916370095
+f7a3f9000b01b23c472565b40b2a209468af7b2e1a12e26df03778b42c5add68
+c0ffa1df9cdd2cc8a0b79a729dbe932f2369ed3e4670cc9b7889f7a44f56a54b
+df4e36045500208bcfcf536286e6da21ced2c742f02d90fc4733a7f8a298211d
+bdac1124ef67278ad900d2e5424fbd78599cd58e9ac5631977c4a5e158fe3234
+26b80e8f59d2cb66247057ca6a7129dbea5734ad0b2c970d729232bd9e6d1835
+b0675168fdbd4c916e757882869bb875bceb6676e1c10bf9f493419791a3a665
+13ad90284107f9c4def251efd981e39ac71c2148ccabb1b92db9de310c21f61b
+5cd6d2d89a50f3a0a1915a7de49c3d8a88ce0968ae296ee63600a71cde306d86
+0cb4fc0f1e59421f2f45507467ec59cac3f9b96ec1ae4d730f5e1eaf635d2495
+96ec2bfcc69242e5a5d7dabaab876ab434bf377f406d9dcd7db173696c61f78c
+973bac8d4ee715990d1a3821b87fdea458ab8ca9e64a2e94bb255ec77e725884
+463eec21dbc1d1f8b1a551b47e42117369144f05a2787ed3238cb4a52ff43cf2
+db33db98e16a324cd85f61df2c78877f215e96f631c3803b5a807f8b5a5c9b43
+3425b47e57dd7cff3b6dcbdb799fb09f7d94ff5c4b9186e7ffbe0eac5d21dcff
+6db09d6f48f688c11cb6e71309b73dd09342d73c16264395e9132add5a6b6779
+d4cf313818ffcc5b6ba335334ad4b640a7e2575f02c6ac4e28b2070d8816fffe
+c577abef9ad1208a29545962d858ecf9b771bceedbb4938c8b789a24c65089b6
+0b5f7c2866bcca2128900fa81fe68f55b06fe80a7d60a721aec75739de835292
+205596b9d88e708659f4d96c53ccd3490f4f433c85d16f2355913a052147f78c
+8079e17e5d2151cd2e10104534afbfe42003ff84b136d751bbe8e24615758953
+4659e85aec75c4eb35143fdb66aa3ff692e3e132979966507ff9140624037ac4
+b0f9c29a124de4a53cab99880e8a9be643612a3c4a16a88fa0371ca65d98541d
+ca1cf537534f2952f29ab821f074d2afba70962604df75c4eaad509cf2d0b413
+dc0b84d478e2231a64632305455472355bec1399f4aa93fa8604120b3789853b
+3dc7016b8ff2ea2b36209e56d447411a529e4054fbd3558a11c25c55413e4385
+b8f81761b67f817be6e87334d120d1852534476cb647692339af03f4c8bf7847
+ab2f9fdec998466e1d450fb908d0e4dcf5485345548556b3b7e9346bb6a3e980
+85b3c7f5e49128b2aa412de298f58dea8b322beeecccccec88948da75cd42905
+8139d1e77508473fa5cc07c982410b9761f00621c423d199141dc9662049ec58
+fd192c688c33140e5eea229b7b7108a7ebcaf45dd88270d527c4b57e7ee21a4f
+03693f0ba4d4dc360c897a44d14e7d7c67bfb7f76d0c0e246eefed286a7a8469
+6298a547fa4bc8e4680abf0c3b45d9c53ba061fb51d0a5085c3d5e8050215bee
+8d9897f27dd4e1c5809f527baeeb268db550d726d741f296f804af79c5b6da42
+214c2a59ea26aabc102aa48872de47f38fa2db09c34994fcecfe5d71cf90a626
+437120fa5fb1e1f38e70395eb98e7e0dab3fa8a15c0a6fd52324ab6c9873fae4
+ba9d62928167dcbf9299f15e5c4cf16e52eec99703299a26560b093b6ab0b9f0
+a5feebea2b437e69e24d29b1a228bbb25e2b241cc83512379a35378495c9f3b4
+fa331b238b975164bba6ab7a0e36c7564ef01ba2b3ee26a190a7af58a9933c26
+ba3155edc31b6a2af1ff5fb5029f148b279e45438c23293565d6a538e50c9be7
+96cc5ab17bf35175ca6b4f46642befa57b80065ef60a64b4713c558626267a96
+ff0072bb3cb4a9aa7b9ac482aea943f5eb25ee09b3a1c9043a26b95da72c0705
+b488ddb4c8a1156d457ea0106aae33c9938eb7cc07f3a0dd86504daa4ea80d10
+12ff5700a48e58c19132e5768a24781672994ff4c42d75b949e92a22a68e7c16
+af830bf74f14add8be842fcfa7dcea7601b53e7d3f201cd699a76c5b74eda63d
+dfd7c122ae5bdecdbbf987dce62149061ff783e176ec0e959b20fa8eb0004e32
+34109670805e4d6e53aae067efd3397caf4bcc676516a70639747e80051930ca
+3fd0dd3c99d533e3067a7dbe5b6267439f66f720bfd5fa66550a5ebb0ebba5c5
+44831aa41b017259f4649ff0f128a64c56abd14b46e0ad1662a5b58c6d742734
+6716b24290aa35a20f240795bcb060e08ea981654236c1f5288a3e384c201ecd
+490823066fe4d3bd18a8aecb272bb2b71d5b3138b34888b3f71ac3017c4a4ede
+54c737c430ada6e76b2fa1bd7bcac79169fdbe5276392af369eaf4f160f0058c
+4b72b24fa775de889353e3b5aa180a8798c65e62625a101027b701bbe29bb699
+f9a2867d7cc4b2d172b74a38a35954cdbb3d7236b9672d836ddf8f2726353226
+4019d9d06ab63b43b510046c9426bcba6cd94abedd79e6cb4d0a6b39ae59f53b
+3e758bc6b8e424941e06437e4a67db43fe3128cb721280876f947549fa54855a
+a8d1df6ab5f003b4141c24079f3b62fbb19457d1a8214adc2a020af5c470dca2
+751a7fe3c959cb13ca28b3ab9339dd93351fcde6ac21490aa5ae06561e377c92
+05efb8499afcd2932d316693950b21a6651c3de207f5cb6bbb84fe864070b76c
+565212e62e273ad22eae022fa4d8756137cd1f37d826215a7f5c8b94a3e05014
+3090adfd0a7a0b09a65d82061d8627ad80cbc9aeeb2ee46f68b2ccb9247a2f20
+a16f9b34d7313336553773cc815199ce1eea3a336ab40b0cbeab03691c49ebc9
+858e5164dd0c1bcb6b1c2bc8d917370af7d114e525bb2c39d79da92f3620eaf3
+47b8475a2ae4a1de830a250aea24091ab35b0bc1d6c69bfbad7fe41d494fb5d8
+dc71560b1fe49183ed1ec5f21be903fcfbc8296688a79c08c570ed9e36ad8c87
+9bb3fdd86598e309f222b02fe351947cad7015f8752a61324e1ac3ec6e54f590
+e7a51d4d48a8d0a346aeddec7d4afd755518067ece1512690fdc8c8fe5c9584d
+c06bb4051a75385925f78a1ecead3921f0cba2fe4b3b9739edec905b0b723336
+656e7d24e68f03b0d08c6ea3b995ba365dbc150625ad1dac1fa92b96dd730374
+1c1d737c825a653158f712196fb0127089456bb428c2ada8a77427fdf022fd12
+4f8c8b9fb0b9cbf4e762dfc3f367580dfba481d698813eaee6aa205fb3189593
+4f3ab2595124c5671d76a02e9f2fc9c52aaa28e1058e1efb7d127af57fa115ea
+18f2aabeb758e37ed619f1b02a969eb0b7cf8fbfe89235bc872a5e3294fca742
+854c68377ae50cb2542cb70779d7b4170c6494616e6f2dc8b7d9d690273ae7a3
+7ee51baf8db3b5a12b5f615e047d47634aa47e6787df9ee8683827a160320260
+ca961353d5b32ed154ba01d3360290cc1af2e7aee7e1cd73656285486b9955e0
+1867dfd92e081ccabc979de37a749bb981f6adf0e77bbf73f072b519dc808e7d
+d997421c7c6e4026d118adc872ea7d63956935f3bb0bb25c4db38fdf3090fb2b
+13d0790c3d0e6cd005bba5d76467cb418d072dab4d38b605399a05dbcd418003
+8de64c29b93845b3d89692a04a4340e49a5f1add8a64ef604e6b43013acb28d1
+cefeb29e9f6c71d2cf3e678b51f5c573976a1a24f03bd816c7ec9792ee51c7d6
+e4b4adada5c4bf16b5ee10b245c790357045ef7baeb6d31a1290313b7cded163
+ecdeeca7169f94ff1b3c32ff7fcbdaca54d199bfe4f6e8431ac9da43403860c5
+6981bec2bb195591d9bf0c5c062d24e2cf281ffce9d2bffe8b97e7124325bf12
+09dd13b4922a7d6c2188956e12ef0210326d4ed8e2787f77f71c4690ef9868f8
+e9a714f8cf7278d84907520482e69f0edde959752b86ae60785074c4d785b384
+35
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMBX10
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 39 /quoteright put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 88 /X put
+dup 89 /Y put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
+dup 196 /dieresis put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+/UniqueXX 5000768 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306462c563d51ece66fcc9c831843ecae
+1fefc1a232e2724f7baee428ae03aadb95c3035345c15e9922fe49e1f2cfc980
+237316572dbc57064edac9b0db8913a5e2d45e97e19a91435ccf8adfc835b585
+48e74b291446d689c7f2f8c4325e8356e974ae30c3e2977477baeaa33d141fb7
+80f59351e84bfc88c87b3a4a1d25e168b9d134554f6a581378c7d2d6eca8ac09
+045cc3a5e0ed86f147133f094029e3483bebc81cfde69942cf645ea20d0a2b64
+5140ccc2f9cb4a3d969f4b0a79cd3329b440dfcff5285494406f3dd08d804c86
+df191e57232f6f1f83df6430f214e03fa5412b1e13d83c60c52a698bc9a38159
+19a64162af7b83a9468fae9507c6cb55ea80df8c696dfbc3296c663902d77e89
+a181502627281181ac8624f65be9de5fb32f056cc7dd7cbc7366a91717b5892a
+34ef6b441871c6993da3a81afc9bf70ff3842a21a29c0e49da1ccba37dd6b920
+2702db510b8b1109acf4c27ee8d676bdbd16abe189f34a9b61532eb777457698
+cee0561838eaab2d3939c5093afbb215bac433d1918c739b62566906bb2187f3
+378521fb52e70c18886e1aa15f53a1f8a169528cf2ddd54c203613ff88e619f2
+6c9c50c2c3b8b8c868a88afab1dc8472e7b6f3f992a161723a3c0904865a7c42
+3281601eee91f35222c4a71f343739f102eb43145a47e4fac3bd666e4c114a90
+5950618ecb1bdc29f90f6ebed1d8325fe6b52e14a8870e9b4bb088e585c71b91
+493c12845a101937e3473ac5e9ae24f7c358f06d590d7618e1a1d5834d87621f
+e3f5432b655eebd4ca61a7b00dde0aa740796ce88a43d1c6952f8d2ca63d30b6
+dcbadbb0dadf13150a442714675dbe51ff838f2e47ebe8cd44f1eac6ae5b6ceb
+0b07af03f5d3896ff935a198aa635e337e367e1e128d15e31afe3ffca8245e41
+a3e17011340e49d52fa1e322b435b4f7f2f49ae01f6a319f68d3d786c24be810
+1e1c975a8feb5dd7e4922e00e3a08cacae5a945e1e8f8a20f1fe9534153307aa
+5ac7424759743e08af90b9bcca7447375222a66e2edd1bfd423b1bc50ba0e544
+68ef45c89036a20c01e4a5f27f9fe3e02cab3033c6d87574bab265c69d05af1d
+48b6ada1cd04622b62b82d646cfeeea510fffe46b3992356b9a78216dceda375
+1e3f6670d9ae871731741105c99a03b430ef00e0ba2687c8c18b520ad8466ef2
+e5d4c5d11165e1582855bb54fa9fec61cb41dd05a5e4e26e4dabc7ecc147b933
+2811e4cd7fe4f2f9281a740c606140afb28a9748965eac6028273fcdbaf40635
+732a68509e0da5b482ea3df988e4df9874ad69ac20bcad8782a215484e6e98e5
+fb69df4d50fbc249bb3a785a9b851a861ee3a660279594b07c85fb16fbede6ef
+a58ccfa7988f74c15a0ff2df7b21c73a29a1d650a588129826843432db2a459f
+d27b1aca6de903be72229b9acf4c51dd5e6e8992c9834a8df850c0fb6dc58261
+beff16da6f2b7eaa38ceb4db83b6f2c8294e84bb9cecc8f47839fd66362f605a
+d4f388d99347bf6c5febf6250c0cfac73ca22beedb843b9e70a1574e032f41b5
+ba06e192a9e3d3d34ccc4b266dd865336745295d76b1d846182adbadcea9ac64
+2d66bf439bf259720d801d2f853285e75acebccd2d30c748204821d5931c0f8f
+a7fec8f4be3ead4ef06911064a7263b1d97f957ea930e6b542deeba619dbddb4
+84f649b91f77ac3a5e04e82063dbc0864d90f0c64d57ee000b5e1a4a8efdd8be
+5c678f54658902071136709c64b6083a7828d7cb33e3989ccb29a5ceb05ecff7
+696120b142a411dcd588028a56af4496d0c8b621dcde899eb2d2b67a0f5c0586
+04d7bc72d8dbfe8d44ef6ca2609d5f5ed9ef66b91e005dcfdc0dbfb7104e3abc
+4e02a68b43b1236c337cbeb3b0d1968e577d8102834dd572d35536e4bf7899d3
+a7402ef6a7b0c044b16eb26a2b902b02429bb13c6143a80ee8b38baf69bd0469
+591297fba96b2600f5b35c99d4ff7fbcfd89733518c044731b02f27b415a9327
+f86cb54833a2c171fc0b5e022ac138057e4b6c6fba8dffe4b2f5193cb4967cff
+2e38befb0dd732c63ddecba643a93e3392c37ec994279af06b3f23892bbfb8e7
+01c7c0e4b8db7f09838f839eadd26ad23639c66640ad571cfac2a96665a4060a
+c8fa4f9f16ea231aabfe85b29f6788940c2e90864e438786ef38f5d16f9a5b01
+c5a050b5dfcf4975074439cc24948c61344d833266c0f8d3fd8b73ce70815ed6
+84779f20ca3a80a365f6891aa2c7245d2b77bcfb5e411aeb074a9d36c803faf5
+e3299c87a4e5ef035175478b68e8be4168922c7efc48fbc4842f2441e5aa7f05
+955c4884e17a1ad99adc69364b2f2784d24edf6ae042830c6ee7039923665164
+5d4b3644b08615403a961ec104f0e17796eca34b98130ede0811300cb5ab593e
+362353c0ffb6d50b08ee965c55d66e3b54795dc06a7703545c908df51d7e4b11
+68f9dde45c5b76b3dc277c3989fb2ff2f0902647f93be26b3f7732f982ac1224
+1d47615b2fd805839c44bfedbbeea87ab08422ba00c56256fdd282dfa48c0124
+fbfb586f5518d05c664ddd2d597a5fd626e103e45b7aa9791c12433eabf716c0
+de5c7fcff4fa197092e6094bd8783ab6ffbe1382588ac186c94d6bdf5be471a6
+abb0d7d081564865952558972c7a0f8e6a78e24a157d1302a9e5eab30adc5159
+8f1aba3bd96375e22bddeadfdc8147ff0035cc319ba642fcbc7f7b3048e2e96a
+6cf2cc415fb9bc1b29fd22e5264dc96d692aaf635831897d222a482941e01a83
+2eee06a63870f6e357234d4b152fa5a38e1716db226dd0616af7fa88eb1cba04
+bac02db38849237489f2d34439f2c3a494f76579e71955e0531266acae2e97cc
+ace630d2c4e10a75d8c983c9919bf3267b0d40cce72da9f3ea73002cc024c5b6
+6f9a3a54881e753a20e5c0d768d9803021cec07f4d3bc215b605a9a9ce4fb720
+0ab8ea0fdcc68b021afb1d88f17a1bf5c6f9c0e2634feec9407bb54457a1e848
+13d15df26e5b9a4bfce85abf503cc4696d46532eddb8bd811530f5722772eb22
+e1c1a6a6e42dffeff3ea7a87461e35ba5aa66c5efcc1459444120dfe60c45e5a
+b9688289252f67fb961ca3ce89b345f8de0c77414c808346bdc572e14ed8441e
+d1ca4b620a5460a7e030c6a52705925017c47283ea9bfba82e03a9810a56f305
+e2ec4cf0d415891cebd18b97c5dc1c4e6e93874cc0fe93370964ccee491ce9e6
+7b8021ef1d640b0156486558b0115819c7c223531feb48205b88787a78ef9617
+8dffe49355fe48ffb8be780e555b7a64cfd92448984a82f4ecaaabbb92a38e4e
+f0c83262dec46cb29dd349aa3da7b65fe526f9af7b265685b0c5ea4f3415a8a0
+a4e99dd1c1fe424c2a0c6758b46c2fe20915149a290601e7bd4826373543a2b5
+d7bcd7b723185ead5b5ee25dfb3b257a732a316c8d1faf912856278d99ad1c89
+0e31b43312aa42fdd2f01ee2bb7be74d23d0e130afa7b61044204bf1d5e65a6f
+6d09b3127eec4ac74f743ec1c51711484d5fdf2244cdd18522f369631e1957f3
+bb33f845e18a9734d6cef0ec3b331b6ba6910d95d38d4215eae7172934160b71
+be74b4fa168bb7a217d32734d447c1f010671c0343218127c55ff2977ea4a361
+ac51d1140835f4f9e85f4ff64d67027d8ce637b016fdfe4544889f1c8788697c
+59dce9a74510f364674e9ff3ef0491c96a815e4daa8ff64a1d7c707d8076111a
+9bce0582f80bfcd3a6b68b519cadaeafa64590529dc08735092a985e45c9d64c
+8109bfc679d6d163afb64e51d7ee05cc273aa1838eb62540a6b032c3e14a1b1e
+a3246f90b23b725918b8a5d233313af4de3706e4e4bab36162c7d8b883fd65a4
+cdbc662a509b2215fb22468f6d89202026735776f56a7a172f97dd0c69afcf8b
+31510c6303349a0f24828cfd75db5e16e77d301126704ac6da946ecb46867407
+ebac4fbeed701d55a86d9e3b744d5f0665a787d94cb4d30148fcdf2b9c229fea
+1026ca4a21b798687b03d2b37a9b2c44ae905827ea39badf8c7a4b89d669364f
+82489981bac1ff454a37c9f54214444d17485e618a21a2c338a32ec7e4205e97
+a2f82237ebddd5a2cb917ad7c318119f9ae826618c8f8c466eaf1ebad37637a7
+8577dfe5794108070f47845bffc2bd1ac30d0961c818242629980134bf26c164
+cb4e5d23fb0b88f49f60143d812bfe3ce783a50fd567018d706caa01053e1d0c
+5a4d17bab1d2abde49d719d76b15e83b283a738b9f967f070989c4424c9ec564
+3c7552aebf5c5c366dd50dfa0725272db99a3c4a92b2ef0699072e7c68858aa2
+48f56c09f263d70aad1d0f62899253cc874958c606c94ebf765c03d41d5da545
+e0188603908e6241ad6d30d39f65d487c4465ef0ef163e6fc6db32bb423f003e
+2b5e9e65d77de2ebdf034ff93aa88f536656d30f6352e063c5f419544f9c3cc1
+6b502c9cbfe2c2cfb5d7c606d168c1a9c58c33de07e4db82c3801c57f85363eb
+e19d6dae71ae9bbf0a6a9240f4f7b0f70f55e310bcbd0f30076dc5df7fe9a91a
+12cfe710b2039e8269c96357f248866f32d18fa747b28ea3fd59c582ca44dc8a
+9c86c8d12bb192763d45b8cbca6990a407e2f791f4df2db9760d2a64f8d9d728
+03c433b5ad7b2d6e52046851d2aec2eb10b683cbe3b50f0349bada0783826fd8
+3df44c920b65960a0357c14ff754b639465bd10860f15bdb8db34fc49e75764d
+6213c99126beb2bf3f60d94b4526d8447cbebc5003108b8137b2f982cdb2fd04
+deb7602fcae51daeee30e500ae49abd2316bc7d4446d9f22bb877c6a620c7c3d
+579b7fc48188e33189e027d19de75c3219b3d8dc5f7de90289b1c172c5c0e190
+bc2d5839b3c338256c837e6c2f277a94168b58ed240a30f3a4358a26fc581a32
+92855bec1da63ea5b00c3f5efc24b5cc73370c0544c61043167e3542c9860d92
+f265f053420a8880c8db28c41c12da3e4112e725e7e91b07aaebe96fd931d3b9
+cba34ccd6747ca5fca7fab727d15ae27e0719ded5bc6c0c1890b6fa3b3cafb7b
+070d40c94badf1e1338cffe6b5fcc59a1ed5ba7e1f946528f7eb630f21445585
+377ef8a94ab18bfb841b4fbfa1bf1231b6cb56524ac03db13cd6ed75c32e1c35
+e2863e45ef6b50c2ffd84014dfb5b197fad4893914cb6ca40e540a261325dc9f
+0696698d7718e8bd558e5f9f91240edc4091996252f5e2a6064097d7a9d26ad2
+9f0fabee685383f33f7a9e15b987b9c29baa54c71a77a3d85e485701603a7eac
+f2f894728211a23ce33145a58a086b8b7a15bea015915974d513830d5bea27ed
+5e42525cbfd860285b115d883a755f60b5bc52a898746a5758b846e411b1405e
+385b71d6d47f2f511755de8bbd9b9f7bd05d9d9c2bd33355a31e26e7bb97ccf3
+0bc4155b123171d4868ebb29921bd2668c7ff8622c147d4d5bb4ec85fb22f9de
+64b7f02d5d15f0e71aa48f5d1ed6f6b1eaaafa87531ca81ccc05a321abf41436
+5d4f82dee38f71cef1d4e232036242bc4a855107c19c5f5b145e8f6ca7daa6e7
+fe3de54b4e25ca47db87ad549e3b03917c9a7bab5c39672cfae07d32de28c627
+16a4cff83de968410091052362cdf10923fbae72c4457e3b62030871cc9c5e27
+3c79f480502eb2273be5117752fbce70adbeaf6f6b4359196a102546fb2758e5
+d8579c417cf2cff05eb767b33eedf68588eb427140f73707a78c45fea646874e
+3d2e081e19a375308c2ef4578259b2fecb45b0b9d7a43b1643425144971914ea
+c798235f390aa1ed7904b3bdc0b3c7eceed661cc5ff1ad67729b1e334239b578
+317b9954f68d48f48281e2b1a28a4a5d237992c6d21d089ea0ec21172cc5a639
+3838f34adf2feb9243e6262a7ff3d266038320478ebb5c2d285e31ae6a740628
+ca268497ffee9ee44bba55ac39c8267127ec2128b202afdff196c0b80d9d3214
+03ad9c6d63c1016c3a6b0ec297e064ae410a59d5338fdb76397355ff00a37d8f
+d29f50dd9c5f8b9610136b0d22041c0e2ca125c96a927ba84cccbd6b0c22563b
+5df827ecbe4787edfadc858e3a03a14d45de9e206104085616e7f91e518c4a9a
+920d7424e21add745c92b71e68ff5afb75d8c9e8413b0d0f22a9eea0aee948fc
+ae9352ec305286bacfe131daccfbd2a053290374637591c92b60ec22ac26ad4e
+f8661cfcd091289e06ed63ea765437cb4b4142425166f47e0509f2a3a0736ce0
+8e5863d83d485b781bfbf3a08b496fdfa0d66954f0db14e3a4ce0ad2966f6488
+55f0d2bf02d30ac959436df8cb9cc90a416fbb979432638bfcf7218214e4f009
+c8ca5eb87ff5166130149e16bffd1308ab096e92ed3010a36645fbd69ac39089
+6819de85cebb3ffb3a61b456abc4bb9d72febf2a6c6642db61a3ba55e779dcab
+bc92829a46834e2253f66f2ba925e503092ed84ab253cf5dc60c881a2bfa595f
+1a0212656096911cc28781d6b7e30b1bb55bf551bb4c1995c08c8e722bc23bcd
+49e3aa9469eda76bb8420a309106667d36b4f48f519c3c73110b64b22d0688f3
+bf5e3c444ffe4db6361e05af4aec4a1ed9203c9b9308cb895c7f29e520179ef3
+436103e08c70c6cfda98cea414b2f9262123ab95ff99ad24a377c0c703f8046e
+2acf942356441167ec3ae24512f5fd3e3d95500f9d142b3bda175edfb3534d93
+8ae6a5a78c00d8109d742a31434e2303c40a46536773da77b391374f7541ea20
+ee4ead590012db71cbe4aa31d598877b23afc00b0a756a176627e4628c5b3df9
+4faed6a6e497950fefcaef16d68a5abba241063ebd7d83ee2268bfd77e673b9b
+3a9f5c20eb62475ab048a8f788589faddf56897a8e6a6f0ababad89e52b24c78
+b99338fb9ca995b3790435533bdf12ca07da7de89fc6d3106edda465a54fef80
+96e56f1ba26fde6fd71f8d4f39d45bc1b22d289e2feb2219caca98d72f9fed6e
+5536a66b42dedb382688fcae608033cfe071e170c44d57f8f83053d881ca16f2
+7cd4e1a270bda1c853ddc6e4c3dd02f99bcbd51e1593e2f23a7380bb302c41f0
+570f6b3d7d5272c758015753e9e37171e4d795a2f4677386e40406c8010892d8
+af66c9cd7a0321b706e6eb5d224f2b5b02efdefd340e54216fd7e4f2109defb3
+d87cb9096b0b49c5653ef4811f79961c8a7a9efb1cd498753c0b9c17ec26d329
+3ceb07aa537249c265f22c28f6880875798fb830db36582876f5dd8e5c15d7b5
+144a321183b3905892026d59443eddc43e27c368a3cb7efd88667feae1dbf9cb
+c47dc232edb23fc849922313c5a39db893344c75ed53cdd67e3257d95f914aa3
+462ba85014352f6f77ebb2f28c472bff1164d776d7c658e9cf61e0b61f04e84e
+55b05f8448dde99a3c368f0a065f4fb0b94050524267a88b65b9f6724c6e4c1d
+9dd15b6e4d6b1d4f3e3101b93d1c0746d2dd714f42fb998f24e4a39f924cfa1b
+0359d6ad0dfbbefe4b1f064434cef6b9d18587b64f05551a21651e6698ddd17f
+1479dbe268084cc6d069558cff520c1351cc7f20fbacdcb80e34a7c13805681d
+70c6ebf2d459277dc06e353f682142121e810eca2e31087cd5d6899812aacc4d
+804cb90b7923f77a88237994161a3654e914adb3dff30f04e5b4eac2c193c88a
+60223e9a51812e9359ad3c9bcba1e88ef0e3d0db521907a6d65f63e56adb73bc
+acabf570334133d65a68fe91150d90fda5c69838ddde3cf9309a8368c3ad733c
+a5349f9eba7f2cd7cc0cf062b899af0fe4d4322015960a63e0215019129784dd
+7823fc7fc67e1b72464df9bb8b6eb35cdbd74627c40f151ea928ec1fce11d6d8
+15fea31a90bd30f8ce403a32fbbf18dd41323c7a775de11a107264b83c6056bb
+fbb91f7454bd58082399d11195b9fb89d670e08ce526f015f3d3f83c52287b37
+40ad0a88e69afaa054a3b04075039a02d27d7a0fbdce93024dd668d05790bf7c
+ef168ab6bb0d536efd48d39eff1e8addb7ea3bcf22dc7122987636264b37cb53
+5055dfb3e671a35c969115873331f361abbaeb8e48aab75d2507f8530676bb1e
+31caac32708b7148d0c1bba9ff4c51424bb536c105f2b82f6e620d0b822f5957
+5d31ca2c243c2e8ec81f8b78458460eafbd939578a839753e36fe1a13ed80cf5
+a6aa2cf780bf8f05754cefabaf1a12ad7ef773eaefb60df3ce33cf6be3d4874f
+8fd9fa1d2e663ec261ed30bb40b694c1d34bdfc6d5d9f94265c0ba782e0b5320
+7b682be617368b4146d031e9768f53b4ddce33fe25b09dea77f800b51e7a8149
+33e6eed6aabd8c2760a938b3f1f3cec348353fa00935daa84918d230a2ccdddb
+9a0580b52c03e9bbcb4b9f45ba6412c7d155fe8c75e825cdb4ab105b6d03f820
+1f7ccc89fcaad97eccd628f3b6cea8db82602d1d805bb6a1ab5a0a2e389efdbf
+096578920d9782da59ad96e0305dbb3bb25694c0b75fe5258bff46101f62a2e2
+a6ab9e10e3f82444dcffab5bc4c91f768858cf1c1fcef7dbc3e9509a7636d6a2
+5fdf6b87702894c8795a084e974afadfca7fb26391720f84bb602eac5d69099e
+8e43cf5af08529aa09b5847b97244e45ebc177ed3ca002a34dc66125df70c909
+e9ac2e2a472e4a4b344c11c757fa0208d1a9e98891d87d141f996f68f6bdb168
+cac4f0247f5b9ff630c4635cacc9bf0944b241597e7dd2581c749aea5d70f846
+f52a1d847c8f5de01fd9c1f54ff9fd0a943809078ac0327d92d908a43a29168a
+01220ec3a073815dc42a7deb0e855e4ec6d8cc9872dcfb9c954aab4842876aff
+7f4ffc1d96d2baae3f21c577f242b92f71765b1ab82b9411b53d84ddde4cce6d
+c15d64a77fb397cf2bf07057fa9daa8b49372d3db1ba944a7b0a2f084835f873
+4136665df6f33564c5460e4166d0779c1a37033663f2a21ad211f0fa57f87ad6
+6dfe5c491ccf6d5b908823b302313ca7f47e8837e5118666e4c7796f0392efba
+032ada72f9a902184d770cfef662ebbf6ee57b242aacc50950a803e112b8ca2c
+cf3046568b58565c423e6443a0ccca1bc13d4649b022cb3eac7f21cb07ad2f19
+8d1680b3c8fb025111b8ac6afc180c73e250ad25134734ca51e7b59a7052b0d5
+760541ce58808702167054be1c8764c078acda7a5ab00a4e8888ea995e64157e
+a156b40df859f3b1b259403fe1e6de861707ced19b8dc1ec1e1582ca6616325c
+7880178f8f61d828683410a675fdd15bd9acf3549fd97f5863bdd159faa3e98d
+53fa9247b9180a4e431d3e0af60d998103a8523a034823efea228e31259937b7
+9e7a5b384249e6460809319c653f0038300a90bbbdb2556216e0c853b73eb078
+ce6ee89d17d944558d974a4aa0cd2a089bbc5b51a4f1b78b6559e99f5a0e40b8
+0ccdede0c63156dabcdd8b0f8d1d4d09c73407c365a2637828b66e9158d55c62
+ac30b79e4d9c71ec368850ffb30d2446d95d55d08e96a65e4f4142ebc89cfe9d
+47294a78a73be09e3b11db3263962c051abbbebc34ea3154bfde8eab1946e5b8
+92380743dfe93c24daa8dbd88d15a08862167905376b628ba4c87b54b0d7f486
+69d9ff0225e3f13c892adf0e4fb65cb731254783ee07ab92b22a79d736701e2b
+ab87143139178c689e3f2bea2587270ab44c460c34fde92592a1a7667427effb
+d829822b8c0d07d151994fba87cad39f54e0f47c7c9d8fe2d18d65ecf0ac5d07
+c34dd3462aff8f8666b920e393dcf9cfeadce6b390f55d2e4a88caca5d971c32
+ee16de3f1d495e1a00a9148aa5bb3261c12d5bd4c7512f9a95a8ca37998076d8
+d3875bc0533bc64e3beaf59c1dc570f81d2f7f86ae577761abfa7ae407cfc18f
+24bd6bf1e6b17d6154caa4536d170d2cc2a0ca818ae4eca827d864563ba47281
+9bf8a1b904a7eee251187f84b6751e7f1b4a0d89c371f83da91f5cf4d5de3600
+2563f2b8f41e6f6ee186a9475c2199c016385402a3a26b6dc4930adbd687acfc
+9ed63b3c57f706d5312a8697b2c53cb02daf389ab893cf7ed56581a347e7627c
+c6b513f04adbaa119972254c09afcedaa3fce2a8ac957363a5cc2aaf5892c17a
+39bee2a8ab4c05bca740dac30d3ff56b712b4c925034bf5b5f9e47835229976a
+2b40f992252c7afbc3872a58bed9bfda62fd47f271544848984e541e983e7ea2
+68eca7c6a599dd54c6fae343ce2fffef0a320f350ffbe0f135d7e2610c84a437
+1e81c4a780fd6faa3758ecd70817b29e963c1b945c5f27835e8bdea73864e9eb
+5a44e1d1cd3a2851d9277aa30b51a8376363c0e1d58f64bc0d243410eb551889
+b3f6e91d6f5f2ee4b2b0202c9e944549fad3727a56eb1f7ac8401dd8e0c8d3ab
+17caf3fda3d1910c676e14fc5aab8696ce3ac3a719566b74304811359ba6c480
+09d950cf955f0e091d602480e092695d047852ee1e7a99c2c5c088497ce0b53e
+7c9e46368b95402e1a776b492c0fd36d3f0e1d7008b120294062b5340c790273
+4a500d1087b47a1e360b7888ab2026b548f6a81782b8f01707f35b7fdcae8463
+b9e8534d38100be88c9c7c6fd7fc26ef74c54da459b3a4eab4803f7fe6ee7ee9
+fb4fd6d10cc815cd8f84a69af7d31aeadea72c53f34393e34a8b5e203243d4cc
+b10d843462be7bff0de6457f4e6797c39df89295a71f052e25ab878136afdbcc
+8aa10f9d9fc963458b49695e1f58224108ed752dbc9a5d58b88b33c69a1cd992
+2a6b976b0e2c6bc7ec573fb5aa3648f27660947f9c7a595623c4cce4b4d2d795
+1db8a056e5144edc08d2d6bca68f0f68f86c2e51ac6072bd12772d8e35134f9b
+d0a6a7e863151d53bb00e4887113c654132bde8f993408224cc9f486b5f6ec7a
+d43d5a6678ca44542a46d8fed375357b306cc64a024400d74061135cd7365415
+24e321fe706fea734a307f2bc016fd4afdb87dd4d4b72c48c4061bd48e4fe50b
+e38c239770a3f264065b32529ad75b1d300d949980ce0597a58e4e979cd1a805
+ccfb96d93c134cc504a2739fcb597190067e7f7f32f94ee13e851dcb6a19ee92
+94d84261ee446df9a230656bcae8edce7b7f42ea301608ed2b08e583a37a585e
+bbb48a8e8c8aeda50eb0441c3db321d6acc5ffc8c54b529da4ce198acd710790
+b0b1ef58ff10da7d24360f30690bd65e48ff5c18bfd63b6e07ecccc97fa81d29
+acfbbd0b10c0060fe54d0075a4d0567d4a4bb2451824eea13e0a95b6aeb4f515
+4fddc097c24325381539ff10d4e7500c127b0ed56be28521314f2a314d3caa7b
+2882aa70a5fab2410e77780ed2f8221b1a87f8974da5b2886dd473b9d057fbd6
+76bb03d14a38673cadc049befacbd683b8a1fd21586b8ba832d382d3307b13e4
+fdf2eb139b8711e9c3b1d445bdaff48dae6c5f714a6874462b1fdd717771a94b
+c908016e38965fa7202e02a937b6b757eb07c014503e7ac4c7e16e43ee6c017c
+84f68b19585e5f23cd0cacdc5e351e6e99870eaae07704dd03f5d659346c7afc
+a144d8a2d3bb9c4a701ace4f06ee61c80d48a7c31aaa8ed58b438c109d261823
+347ea6352f6889d26bb436a1a1fac817373bbccc002c6e9733f8c4ae3202c873
+16ca4ea4024089da29d82404ae68229e63cd2a47e73d466f0f90019f45a92546
+8a8bfe3f046db34d6dc288765375f64351af58f8e54898a6bd96a63fdb0b28b6
+c24643f23ec3a398505f8204a1a657cb880d08264a4d018b42130ccb689f4956
+c1a4be52aeea92ec3f183dba2eb69f18dcefd3695b0e766cde42825d46c49f51
+809ba731422372112a4831a6b7b0b16aa26ecb628a4f2cd71139159ab64ffa76
+34bc0bfdc10750137fdd6b822e4063c5e6d398e5109d874cf3ef3b2b1e8c6ecb
+581bda5188b778c6b8bef7abce2a0569d2907e959888aa6dd98a01a5f37da71a
+037114de04bb83322805caf0b89d29a2f0303886d263625f9b66af8ecf29163d
+7a2f79fb08e2c49166cdd50c77737690a2283498e611c0ba47d07abf61b025cc
+4ff65b78d6854784a4009a670a93ca41d4ad6d71055baa883947c923eb203155
+5de679009aabcd7f03167af9fb099b929f35321af8432151f79acd622a2f32dc
+b698d28d5f6b3290ff2c85181c75f894d848d6803e70585a95838599e8c3921b
+6fcdd22624f1414c9febbb7ec12146889ba9bafe4fc52b355c566eee19570db5
+a8506d880f2e6adceb727a9b43ab7299041670cdbfb5c0680d17b2b9c12988c9
+64818e1c7af83aab93cda30a743674709326af47d72914482455f4ad2561c420
+09e3767debda0c67f08f044338116a0596dd681e20fa0ceea9388611cbf9d559
+f19f6f9bb5655218a66744d7d1edded5a201eb483f8e077d5c3c50aa242908ca
+31391472e0c875e8f6a4d3ae15e69aa6049835067fca19497885f473a1985763
+6becc2fbea627b1958967da11ec9efe3249ac2c23bb8afcff6ad677be7e993de
+5da5b21291af976629753d584e044a369bcd4ea4c067e79dcf15baad825a509d
+17c2ca7668b5dbf0d3471ab34083a25deff5de0e28b419af3697f2fbc8e560e4
+4257e3ab575b84e8cb50af1df4e2f609ebad7ba2914b40f9e50062ff718050df
+4461c9d7bbc3ba3bc6d0aba1ed1f6fc634bc5d503b4b20a3326337231f5c0381
+d26c9bc3ccc6a1e3722ad70c71b222ab00c796cc86f5f0b9331fdd017ef1b2d2
+6d914c9a06bcafeb88ccd48cb34dbd5f58eef6823a56f877ba47ea3c5f66c384
+7e8b78afbdb1386e44b36d3d6d8f2ec12c5f50fd952e5738254e6013220dbf31
+7bfcde949a8471c30a98a9fe062b06a959b64794ab797831eed532de7f475e0b
+5db02a4debbc10670ab852a2ca73798dfc4b2d37c76e6d1c6bea1f02170171ff
+99be79a92e0c5c1caaa4b8c4a7f45643771b8971d5bd0294849f9379d4c66b14
+6be221bdf35633fbd658170c78ae1a975e453244765163d6714e2723883638d4
+4af4c046917cb640531336ef5565ed35fa55303428122d4625fa3c420467eb3d
+173dfab4db16732ba2ee4d5c46559e2bf66b807c23f92f74470463b51512eba0
+1d524b223208efe7c977a5eb0bb4f2a181833a2b5a7892c852f29d2f234bf3c4
+dfe75dd094f8a2dc4cbe2694937ebd8e8a40f0a95ce72a7e06a87b6b94550a29
+acf15c47a9071df1f4a6422f070d25dad27dd596c1ae7732141dc2a21f257a41
+5a9c61b3d18c81b237e0f50081ac14d8b562b45466a7d1913a3691757b871467
+50df4fc140facaf70613c89971118ed47c205baa58fd46292b1dd79afe1532ba
+7f8147a341c28f2b05483fb63415bde2f0b3e6deada02bf6dbbc30567b8cd3e0
+e0cb573a6c9e4c21c2d2aacf8b73c9257698ecac0d532490b55f464a504d666d
+5cbdddd3b030062d6feb8ea50e0a03b3abaf26a3445b331b92741ae1c56b8263
+f95cf228584e78e6ea571ae18fa4d4ec5546b59335de3d353df44e313d8df2cc
+b3b5466a9542502a30f5c72c601e77725bb4e829666fbd82aac5149c8c423227
+d47a41992b4bd261e7c5e739c2a349360491f2dfa40a779be7f561d8d203e141
+2746c3888662188b6fb5536fa34e989412c86b257bdc1fd62e5ce5dee5e135c4
+7ab30455dbc0c5d68e51c13fcb589793fc7c5c92a749db525fb09efa81d4eef2
+de8d7e4f72d325ac639ac6800dda074b10c8c2d67dbc9753cc3856f9d832da1a
+a57f5eb7af2f49332ec1008981e9d32a7d9bc5fd17e1341c6cfd3f8c285df5eb
+830062245ab98fa68b6f2f0d647e8e316489482e7ce31d809a94f1ea38c0e519
+a54f7e55788d18bd2a8927c7561350830c70f7aac565b488460ffa3c1a51c1c6
+ac7d9d68eba16540a10cd557d19f48a4b04c711a50757ac462db3157ff190cc1
+855d5c0c35e6ef4390980ffdb5737a2599902d1dd757d7d82497e56a52036f89
+ff1c442b2391dd7b1eba2d29d9b850c104af346673c3faf060cec690ee6d76af
+c3faf8795509fa7fb85c30c271ea9de3d49783f4f9200debe43d1f0fd7cf9d0b
+e2fe8c08e94156a1b979c28ab24642ccf366f2d20ab5fbd7f24dc9dd820a0c3a
+455fd0b4d75f9594d1457efe3a7fc239e318439ed582eff8507791367c6ff136
+4b2fe98702c141e4866704804371594949d568605218ae98bc8bc036c2ad539a
+c92f58793125e561194ccec4a475ee8fa74cda7801d1bd25a35c3a4112cbcc5a
+db425e1ad745dc7b5dcb272231bdc7fcc3bf20e6857ab753c3e1b96f00e8e9b0
+d4de7afb4aaa8f6cb2fa64bb7be9eb308d7c4422d82d88e157c69bf9976e9554
+65250af811c67b325f42bdd0d41b59cf3f2eff4f3083fb75c0fea62dce3b6159
+edabd2ebda2ba988b0ccf588f7c31d4ce794713903fcaea593e9c4a340c5b8e4
+5c856da635c050d73878821743e9c5223b158fd3d1815217dcf5d4d4507d9540
+6fe5292fbd658360c0aa3969001ed930b82d1aad45b9d421e0d55454bdac5dec
+5af6b98c1a015b1a42c0e3c0256da6b3fcea6f421cf6bc419ce8f8e0fbf13515
+f5b6f7d8a7019e6ca708017499c5a251fd2a9ba94623703591c587988b933b38
+45421b45495a70cc9a58eda01dbd2bef7be1e0bf85bc9a782cf0b150bf6aff39
+c492dd7f0b6c76fbc95abff255b76fc10bb2cb8d57024692bdbd016d664503fe
+c31b6f5583926a2514d7b6e2740efe621ca6611552a6710bd6dea350baac5a4a
+9aface408cd69d5d46dc57e450b5fa707dd281db2e36271ce5ae722bb69e7da0
+e782f5910876f33d8a83133e668e570c1f736a81cb690a79fe62ddd514c3a1bc
+09be234e3d618b8e261fd64aeab1227f42c27207cc62c3ea20b1635dab1752e4
+4d78f3a0a0f90643823074243ba3b61f84b55780e6c580c51aab7e676bff9f29
+e71553ad7ad39eee38d292f632f2932dd1568ef3a9943a6d4fd6cc02bd21bbd4
+6f85da5aab99141dfc620f941facafe654c53cb254bd000012fe732ebb6c3c71
+33fad9fb1a77b3babfbacdb214da0fa7e4bceadc1eb3d31c6f1a78bd1bf8df25
+8e89d3666c6438fb8f9af4a2a0a7d4b0ee454e0fe3dbc01702e7ecaf1f8a4db6
+ea2cf8943dda5da0bb975a5d18fbada9f9cf34192f1a0269d71d55e394b39390
+0a706305f9d3900c0ae05b68ae9d73b2e906f402f9b75c09be458bc26bf5d08b
+f67ed76b2508ce41b48e21c03e78b187a74f8b5502235ec43646ba662a02b649
+148d4519dd1396f83789b459acf64f541eea0d78d1486b93612fe4ce744c6873
+7cc339caf9e3db71b08ef4d45f93a2414edd7742351924ecec191c2c1faa645e
+f1bf705d4346d2e2e7060cfb669b211d9eb1c4b4f322185dec8f1ad70c715979
+77eb09c97dd4e06247f8f056cd6cb30b3b9df4a5deb61e1c8bd35eda5d295ad4
+cf90f76244eccea7b70f633c7d78f8950b936c38f93808d035cab2afab5d08d3
+9826d123f509cbeaa95b020884d9bfc86908d43e2720d286145a4bb7dc9b30cb
+d89a1adb0d5c5f86070dde5415205f057d29bfc56dcc1c5f6d210b39078aea44
+cde79a6f6fd5ba07fb8898795fc1b8ee6c91281f86f2d48105687333bf7406f7
+dbb90052ac0884c307f7d617ab600d37feee7faf93eb19e1bdf2e5cf1e9f0420
+4f41837a68169a4a22b36d7f35f483e65f3aae970090b5511f3400e2e82d108e
+d2d07f056fe5285da00955a4fa311339b9c006bd45751681f9370bb28ff072e7
+a93af0088b4595a1311d5048d64b40eba7597d7f6c9fe7805ee6c8fcfab21376
+e319bdc0459d6748abd25fad1a3e11d418152300f4b05cc40707720526f2f626
+de709971704b80810d6a64a9510f6fb60e0230e0db8f986170e12f79bf024a32
+2f32f439f0ee109cb4885ce5cb1c3b1e76a70b25b4721b5c3fa2baec99791147
+7a9290ddf502616ce3cac57a59690b97e76245d8f22479c30588090e1525cd09
+e76acd5c1d1a212a71ce257e875a428d9f769500c64d02655737c3e38969dadf
+1456dce0b6accbb080b4b49359e67d9b1ef613127694c9bf8880c28d90a988b9
+05a95cdbc9e4e8f03a0c7fdbb114ea1e07877f3eb959645422048997228b92e9
+04944aafb8cf3833397e4610a51f7aa114df543c8de16916446c7d3f68c93b6a
+eb35fb5c15aa0d19a610aca7f13b163f69ff1809c7e8e414a6bb9c648e995d0d
+6317704dc8462478e407479930b497256f43b01c5111314fd99a25e18ccafaf2
+a43e61ed1bbb14d1bceab05a335da42dd5e9f710aadfe272fe061ea204658a7d
+a533de2f98362c65bea378e4407d67c21d90d020aed23968bdbb2361dec3ed35
+8c0fb9dc80861776fd8cb95fbc0275329ffa13bcba447dae29dae14526cc51b2
+14fed58d00ce2c9768373effb5236297e4e8822a8b8c66f9ce5dd7d002070486
+34bb809c94b0aa157fba1b42a5129e8ce99c8e730ff4c19a8fe9cba7c280ffde
+71d3a2b9d932553f1a7ba8a50a9cb6d6c7f09ffe71298b04e346272fa95cf0e0
+ca7191a57811aa94a079e2054e450c56c758b98dd8b49f86ec400825624b7347
+1c1cb23274394312f7ff35f52a803586541f560998918db1123a12501aa7487c
+d5110bd8b39aff1c217cc016ce6886ba5608b2e874a607a7a836f8644ee795f1
+a3951722d14e1eea45f768160c487922daab222e4443fecac35d0d6e2b3eab17
+e969d61c75979fd8ccb181c082fd7fc36c8cacb92a88a20607268f31948b7a10
+ccf43a5b1d820e31f95908727276dfff411fceb1f54ba5aaa660a34cbf2b17ef
+b929ad09876a4442803dbb8b9d93aceb81f46fe60b2faa0f068a6c7fe742571e
+0ab3225fd2d1595f031aefe98d04f31c852ad24b1cb80847a5b1d6252bfa739c
+fd42417a60f1b4ca5626c835ef33dfdf70e11da6106113065fbc641dc98d96c6
+64c254d1ab3250bde5b16b1a5bda98380be4af4c951bb4a53fb15e0027fd6ac2
+ef064af3b3427ab58e23d7a8ca09304c87aa06c1b268976f31ac5139f6997022
+7ff4ad7043864efc5c882591d3216ec651a13dbada4bc67778895bd264565cdd
+bf6781119d414751310e3058598a596d21c332f2b68c90523abc0d6a60d4ef0d
+907f9be3cb8a42581a20b52bba86db4a7c736bd3d3e6be1ae093103e1c0a4f85
+177c8f48bab0687231fe60222dd0f15912fa1ace44b59ac7a2c7989bd416e9ea
+8a6f71b7eeb15d0daa568709c9d31f034292aa52fafcb741595a7421fdfbfbd2
+e30f831f3f58f65eca6a9bca270281aeb665baadeb969b7d484747ad31bc8977
+de801c75f5354ac234519a46597c88977366888cc85591e09c9c14a8db23945d
+40e56233d882aaf5cf59448f93a90dc22e5a5fea2a542f814725aa4188be72c2
+6583461df29b708d4bc3e03431de94ef610d2f225f40ae16e2c8f61639a65dfa
+4a1d526ac1b04c74a6facb72f3c6e7e9b652f1edebc48ca6ad56cc0aea3e5e17
+898d10d6f91cd526bf39086c386c582c299948685b6a892a1317d3642c10f4da
+746e0dec052376c7537f4cb0c0852265e75f49f63721b5924f531652374de5b9
+d9562b01bf1ccea985d4f7fdda37bac8b7f8ee4bb51d3584e5ea919fd734fc3c
+ed40a6937ec6aae53665746d2915ec2b1de4474956548e0d0f6b70d00d59e303
+769abe7c06ca366c7c311f2cae5e912ba29559fe9262543fc9716c28a12ccf1c
+86fb4c41f33a8d886d8dbfc97a8a9ea732ee3024e0b7927889266349d906ce5f
+a57e17a1bedb73ce2fb48992961522f1461c115af0905e9fdf653ff7f1b70256
+26ae99ff9afa6c29150ab6544213da023d1295fa3c3043d946e74ca55e6441bb
+650de44efc34be7dd388f6bb6c8cc2515f0fa4b54a719c221d29c376a55b72c9
+55fbf1830849dd6deec8112ebb37b5117077f0472f42baa5f67ae832d28de4cc
+10ae2ce8de96c63c4346ea4a7033e5494e710d8e50904bf3bb23d7f2be79c717
+1c59c5b58377d010853d0d9c0ae1522bb5b8e170e4b13d09b1a981d7e59509e3
+37480132811754a2f650ad9b75a37955d8ef9af72368c4c19dc434b4487bbd40
+da9a92307ef6e0c52361b0001a7b7e6e7277ad5b377999a6531fdd78e485f5af
+9f0b7f8f8acc9d477374086a2af5bd730859a27807476790083b260c08c58be6
+9fb16d993a6cb04fe7c8b06af603bb0f390737d8426784719919f7ccff139e6e
+307885b30bb91f8bb55cb8576cde9d4f3579af7e1c15e3f4be86d884573766d4
+61cbee0dea994c29bbc8e90d287b80e1a76b4efa409a9eced1c9517fa7d245d4
+6e7a48179fd36634cff921bc444dd04f2529fba5024cfb6ce3f87521dfbdc9e7
+1430686472ac7ff9a92547c0ac0c47f16710ad60b6a8ef0ab069ff91cd5eb432
+b05c63c2522775ad809b4bc44e4c3af6a29ce2dd935765480c68dfff694164cc
+c7b86d0ae9f5ce5e729b7c9baea2aab5cd422b30b3ad9c5be63f0d0b518007fb
+461a95b3cc80a3f049a2c88d25b7f2b2be84de4dab729fb1d8f13b25c80c1e78
+48b8c02daf69641ad4140de56503f28cf3fc6818b1691dc5b8c8405a938bd428
+3de3a854d84847fffa71202a0b70946ad723cbbda2d9e4b328f7dbce2d80e73b
+e0097a64675190858b22c123cb1b7b615ba511c38c31dc56eb8e3532c02d7079
+8df6721072f346bf7218a6f05f7d0293d0464628d3e6f414862d48ea8b70ddec
+f6bff5bb9c345f23b15fdb246284e3f21dda46691615a2ded85d410ba4fb1846
+4c79908d5cf3553c7f4bf45b82ba4226e74bdd8711d2b98376453c2b9518a22a
+1ed7fb6bc4976b34423f11493bcfad23acd36747100e8752cc886bbb320479ef
+9961e3ab90c678da025a81229c151895e5e662c46cee9e9c6dbfa3a9fd025b02
+92aca8d659d4cd1b8ce74157a6acaf9a94af9ef497823592510c72e0f604446e
+549313adf10ceed45a8afa1952d5c2ac7b4f409dc771c8d2949f889b2e1acc1b
+d08da75c454cc9c1a77de18444970c100e08794728827f6f47fb582d457da205
+6e75272a6359d25a3e2826ba38ab38ec25101d623273f5aa13779c7d857235bf
+828503a67dd481f98bebd3dbd8e2c0aedd2c1f675b5d5593f639e3d504c952d8
+ef88d804b396fbb6858a12fa804e65c4fe196e26ee105bb1bad1dbdad12421f2
+e793857006cd44ef1353b72d61e87138b5f834610a60489ab77f714e61971bcf
+ca5b520541cb0b4e7fe803fe2e9846bb154f4765f7271f9d91e75896174de5ef
+f7b075b856b2d7fa8178198351847c72d020e3466968654277df016c4fd4e2e8
+5427d2d56fca642f7de196eec44cfe77e74166994a5049cece9218affe5ea6ef
+e590f5e14dd077aaaff7537a7cf9532d0b43d8816201e4c1bab2bfb527652463
+0097f2ac0e64a149fe06790d065090f1f8016180205fd79072cbca69ea079590
+449234e7bd834d16ae0bea107a1e5c621380b2904967ede34eb2f5938e1bcf69
+1300a2d9b5b42181918eb36018bbe1b33d6423756f5209cd48b86d85eca61d31
+08f5a7d656a1626b2f0e265c8af8f8dc68654fc369fda347ecd0d669851a7c86
+02fda74472d0643a857d0ac580747f2561efd3c1559efd0420bb020f538019ba
+854148c6fdfea52425007abcd53e96f2d8d5f402660980a111b02e05c88c6169
+e0ec31db155e1848214b2ebe8e3ca7c41785eb2ef6825a5cfd7908ce3dcaabbd
+a256e8c7e1b95580ee19940b7e33829487a6f7546fd4688860dedeb94145bd41
+e7d2e2bfe348080184bb637618e14166aa030c3ee46f0bf2d815b3cf74434b54
+d023143cc23cf3c27b6097c3b02fe0d2cf3310aca615cf5392ed719092173a4f
+a9dcbd289178164206b825e8a28277f10b331d854fa8ee38bf7ebb5d78cc88cb
+0358702bd95b674de51fb16cd7af4581346583d173227b79aaf70fa2d586c916
+4a090acacf48ee8aeff961af297d10c3bacb586e5fed9fa215dd4e4a13897696
+45a72e2cec8fa8b53b13de5f6b4aa0d1766df85f1d5c37febaf001d71974c45a
+76214d718b97bece7cd9ff2d417a54cb9fc62c0c6c22421b65e01e959e6c11f8
+bcf68a2f86a49ccf4dfd9c797e9c51501221ce06a4a0d6248f8c0cd0e166fbd9
+c3af68ef7ad1cabfd56eda873b2d5177b5ddc763e852b3d4103a80a82cce362b
+1f64cc7afb541ee4a1ff92c0c3a3cbfbe948e5856ac8f6c5ad6c479070bcda66
+04f5668d342436b6b7516d8d293c0bf5916c4941457fcae0ad35b591f5f59500
+97504919a8197c77b165786d9feedc12c189c479f2af460523d2816e0d4d40b2
+6af808cd3106aeceb59fa7a5de415cbd3459a0ade817e4a14ffd563d23ed5ee7
+bbc90a494ca88367e5b873994a20794f592178c15a96f3a843f9c9904bb5d487
+e88ee7f38f1b640277195dc9da6f4a7fe9adf015160fc831206d87d236fc501a
+8a6a890f74a9958fc1429ccb2fffa1d89f0be82e3f93ea50cc40906ac3060e18
+9e9ad83a779c527245f85698fa11c9b4c158ac90ae75d9ee19dcd9127fa69a2b
+bd8b04ce4901f8cbcc1bfa360b96b668fee3ed6a8849a412fc40207d33c256a7
+ed179bef740ca0140bbae036db83b4088b876d867d53afbaa821ed61dd37ef5a
+43fe158afe8509cd8d17f32470586c00eab8712862b45b7cc2116baeb3cca322
+3d02bc4557e255d5618efcb9394d80179a5732bcb865f5700c9d93e58a6979c7
+223a0642c6c15b67345469e9e35bfec569c8faf334782e12d7388910e4e28215
+da9256e73c04ca1d51b1c8db41b1ca3075b52c5369e4d099df51ebfbe835ab95
+ea4e415356becde955f5b1eb774d74cfb0c8ac7ac6774c09da7915b4b2272084
+72188636e8628f18dcccf86301c1a481c74cfa9ab77161f0ad2db3f2b1a1884c
+4576d94f4d56f46c072db31e3f567ec24b65d08a9585e85efb1bd885409bfb8d
+a3d2b80fb2973f569aed518e3a46bbe181e3fba12955686f097815ce2948f019
+54b32e4f097b0f50f36774a92fa2ed0a9ffeae59e80da02f06fb9c8ac6bad226
+2278a20b98bda79be29bf5c687f4c1625e5550554142c8840bead1de156e81ce
+d78fc6b146d91347bddeef37eaaa6c072763a24e5b0615f0a1aaa3bfd0aaca18
+30ebcff421aad18fa0988aee44e2d586a8fa7873b5de83905d4aa99fd9064d4d
+6695ddbc38c0cd686bef9a0fa70d1d69acc3956db090bdfe3c8c305277ba29e2
+fb6bb13cf5fdd98c12451b090ebc5b48299dd9529cb469739cd0ea72321b3a7e
+cff34eddec290536e50e125186672304cbb6431dc9b690091583b8f4cfbb4e87
+680fa6d3f8fbb6851335698e75d4ed907ee8da67d664fd9d4d873856a0def9e9
+e61751e6240b9878b80690a4fefbd5cd0206010f1d3db6d2df997bf2edb7687a
+3ac1a8391642e1bd0630b30ba443762ffc49
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTI12
+%!PS-AdobeFont-1.1: CMTI12 1.0
+%%CreationDate: 1991 Aug 18 21:06:53
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 65 /A put
+dup 67 /C put
+dup 76 /L put
+dup 78 /N put
+dup 83 /S put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 121 /y put
+dup 196 /dieresis put
+readonly def
+/FontBBox{-36 -251 1103 750}readonly def
+/UniqueXX 5000829 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd803271dc8bb1656323089e9e2bb50f2b95088
+87d31dc36e555668d9578b338402f8c259f6813b0b71e6cbd95e19c20ced8495
+2559e47577e612a4d94de3c1b4c6c41a6a3fa9e2313457242de74c7e4c0d722b
+3e224d18baa726369542682e9459b951b2ac638494880c42be4e2175a3c067e5
+945bfc1a05d3de8c3e8ab97f80ab6000e1f78fc258b85d3c84b038d7d0f5be85
+0d43fe03e26cdfbb41c36d14cb552e8447ca678efea1d275e85503123a2263b1
+4077587683de69a8f5a88d666172668411d0d0fed3e037ee468627207505dbb3
+59cfdc5d7f526fca5416d741073284f5dd2471e09f5916f4bff1a90eea4d1283
+7731f6a36e5ea695f4efc3bf5669b7f60ab606df5819149c0c8a4817f06dc172
+0543467645daeffe4457293e0c0407c4ec7857558d0452de2ac773f141783edf
+81b30215ae8d2d062aeb3cb69eb0d62bf04780997c9c027a22896f456b784378
+7f2ccdd4804375321e7946d3d254521249a4d28a360f4d3163912a688c16e807
+15d0440bd27bb78fcbc89bc28028aab2f594f8b641e45b9c599180b69663eef0
+03465a2425aa4f8b29dade493002fb335b23eb145108ef3ab828755d3753ea8d
+f0683265497b1cb5cb484c13f7a4e003fa6ab3ed5e24fcc6125cee4e33936122
+3cc907af3c64e5aaad882c356e673e6ca2509a71920e99549d8797e9aea189f7
+fe18bbf718017cd2e32b4652acf12f16e785462980f5895afc917ea83e9c3eab
+6297f1de23785f79172538b39984ab261f14ee296a42cca3159e63fb30583af1
+911646257a99b4162635fb79e25404242cccc3bf224d4c279e731333107ab2cb
+2598dc582dd185669c1fad35d2be0428389a4b175db159508c08a77e842fd400
+bbbff7b121da1cbe3bde781ea5214575981e6d8cd3b76b2f22f260122ec744a1
+fdc7d97d8a3c7a91c97b8fb4dbd0a2f06002b7281e3f03289553db4651e11a09
+b1b3c3032ae372c1c4a1cbe258f17f85b083f9e690e7e5bf9fef22c66738f0b1
+0af9bac62f070f2ebe655185df4617199039b4277916236f900e032a7315b269
+9ed92bb05ed5607e44a4ccc40886ea1d5151a03b91dde7bbebb495ec760ec984
+88d308297f5824f10743f16dc73c6b0a06ff6708a90072a06503d63a2134bf1a
+dd7091aa9456bd14178f62201d222e40d0395c1544ea576ca49ea08827b38d17
+a9b238dddbb51517530caef57a539813af8ac920808d6270cfd4533e35528343
+520a6f7a61edcb4b7c5192f3f912bca484cd6c25abdaa2d87c332b9a52676ceb
+e2decae47c0d1234b63d1f0240cfa9934e1ab0020ed1fa58a8e6c45d8b9e0da5
+b6abcb5e4b218cb38a29fd797b6e0b649da379927bb487ec9cb8ebab9b16df32
+f1553aeb87644f31346b5d86f2ecb4d5ad53c25cca43306ee6dd323641c5b217
+a5c20bfe4e385d9cbee610c631954808c37a4bd858915615207ca2c6d5817eaf
+a099613bf44a700d659866c12bf78f94cb0e7a2655e59a8c268c8d9edb62b293
+e3461225d6ffe216d93f20e012a1190d039f0d47c8bcb38908b6c146a2f7f807
+6a62ebfe1e8cfa01f4d70084bd0eb1707b5be619dfad1abb8eb6e90e1137fd8a
+5ed78db52be7b6a0fd43cdb10b31a6cff68d3b6a139ded9d8bd0d53cceee44a8
+bb6bc1e8177cff511cc1a8318d4b73912337d557ba1dc2d4e2bec8b3256289db
+ab15b02137ee29555f0335b761afb5749f8f10e928ed48976ba600c896d05805
+5bd1eaf13fce2ae63a46ddbfac8b8ad6a9a6fb3089c0853236339560c299fd14
+4f8c138653d27d75c5dd7c6ccc6790b6eb900f43aaaf9dca4d1ec96fb89ffe6f
+4249f4757b411bb35cea1992b34faa72e79e093a1935bb92957a41f2a6db3ff1
+6607229d7be3eabe7a802efbd212b11f029d08bd8d178984d293147c05f049b6
+b2f6296b03228eb78eab7f551182a62aca4581a3ebe0c18c50dce70d0b38ce4e
+f1cb4ace91d1de8cdb6d496374ccb65d49d4f61be661c56cfbac87ace97f0b12
+f3ea77cf70e426ab9527d1d1f95d8f875ae7b503a50a0e8781da41152c8563e5
+2709a1d49042fb9208ffcb961f706839b20b90646d6077d202b2857474c5d653
+feff25bd2b3d9762e6c7544dbe9b0c7a3b4555773fcb820887977af3783a460f
+a449d1a65dd15cd3918da2699d324d0c230d7a4cf91cf0fc0bbacc462144b4dc
+49cce608c88fbef43a82370666872b5ba186b53165ed9dfe530217abedf5ed9e
+d879a96bf2e5ece6ecc1db26f0914003ec2a5427b3d790f0b78f3c2a5cfb12cc
+6923a7b733de712e3c845b020291465804266ba4e8f058b999f5379c76af7d7e
+6faf22c4751090f89f4f5ace074c79de5924d2145d058744039f2e739c8f2897
+d46bbd8f1c3398656f8d853fc010096cdebd268001fc93cfc638c5e6ddfcd626
+051c5f9f47c275f346389c853bb029adb02484c78bb826d99acda6d6ed318b9f
+24d9bbf623c7d1399c8e358644f0aed2d5460d6c1fb26d0b93559ddbb769622c
+35745b0a9cf90a45e2820713360d135de1d5ad31742a6d0e7c4420021fb4e8a0
+c650922479a7ffced33821b38ecfe6903e15182476755133b12b9c6952fcddff
+4f6df5be911a27dd5cd2ac152ee444f62f83c7c6c8d03713f99f7fc219998c09
+d419139f0f6387562d9656fab92ea640e5dcb960b810ce6783f4b5fd5e23788d
+d3f48c059922492907b23f2278b6d8b53f3c61e7ebc72583f898845c2810c70c
+1c0386265c6c1e292d682bccbcd41bc10a05cc8fa465caeef4383b8dc86f91aa
+2a1736f4494608ed1bec635a26028343999d12953ad67d1a3bb6b3fc18ba9ae9
+1d7b4b096b7291e7eb76ca9b306b39e86a2d6c2c283c719b2bf099ce075d976c
+6873ddc3a90e60b678d1859d204663b08d3d4b608bf70adb3a8ef41e3fdd63a7
+1524eb7eb0911daa6350223e00d94aca4f4f1edeaa4c844567ef9512eee028e2
+c6ae1ee48d5dbc9113aba43924f252102e90fa5fa217da6a4e6557801eb28a3e
+f8557cf8f026ab731e2b971479514f74b8781c01f767463b94ea3b9f117e5754
+2d36ddb068729a23ffeeee94bd5018a3c9221051282909c289cb0a6f270f296e
+b43b519e8ccfc7c7752f42a828e9a84e447ba0ad1d02557bfd144ab5696378d0
+6224b80579feebbd8a5665dcb10586bc55508e03269d9725c51ff3f5c2e8d46b
+a5e226872a1933931a2daac98b37034e59c3bf2ca42939a5aaa7ba2ac166fc81
+f8acec7453b28012075415e802ae826a324639311e330e744b2b6400d793bdd0
+77b08b488bdd6caf17091bfae1ee44153ef505cdd978f4e23e73a493b751bf93
+d01c0ede02404ff98c7ad9a1ed80710d466f428ac7a1f5ff158f36399105a4d6
+28ab74c163ce4d22e4544ed9a5c82633c57c8cd61d99f1ca2b787b2207bdc991
+95fdc60d1631166aed51727db1f7a85981d77142e3e4a515447823403d729233
+b13a3fd3a150f56ab0533eeda7419e5014c2768e803ebff125dbe065a250ef15
+14b0adf7e53d06da5f1650694b22adfbfa47a7e9ee4a1af860cf0804efa7dbdf
+c0811aa78701a7be37f460b4719e2ba4c41527dc6d45cbfb0f96b48e57b290f1
+5e7fb0e10e9beb4ac05d2838fb7185eeb1fb6210f0cafc01e704f214dd4fd1df
+44b31791e0ccfc8156f4953861e064d9f0bdc32aaba6e678a66f4d06b1287f0e
+29cbf3cadc14c308f2d4811a843802a2f8476def8b005e3b6963815f531b32a7
+e76e502d732b12ba7caf143ff5d9054be78e49c8921c505d562702eff8fc024a
+5f6a0e5fb64aa1b48332fff41a734328fb89b39124a9cb5dfa210dedca60f378
+0ddb01cafddbb1fddc0254e031f33f097de51ef8aaa8295799c1fc430e123b1b
+14acfd14d7d63ce78f9c89a3a63c8c0740e82a53a85dfe791b68042d00dfd285
+aaba2f26fcf06b030bd4f720e43c56b9b1d360821ad0d94d0ceb4a3f2923dcc4
+e61bec0ad3b270be1aab17eb3a059953cadf2db4c4caf3bf9309d139fd2757a9
+af875934c69fdbb12c3699d1242b6d470823fe61a004b09b2003c15900659d6a
+9bf66fcd4ba317e555e13b3c97827737b70526f85bcbf15b8de8479e88b03ec9
+7621c90df483489233e249e357d7deeb16dabbf89f946bf958c05d33316fbb93
+e0767bcde1b70a02406f06c6547c326892fe71d6b632150c1eb7ce9e14b170c0
+9143f8df771da6aa6e53fe9f58c19c71c2cd3a5fcd5373a7c9b24b50c89d3393
+0fb93db55f5e2109ae148994259afeabe0ff6e3db647cbe07e95676ed5a43d81
+8bbba8b4e9100f36c77329ff86abd14d5824a9b02952756034ccb3f446e9187c
+4509d9acdb3594f43d05588509d276645ddd2ff0522e6b53440c801c1c1056b3
+0b65a8410abb86032d922998950195333e835644bc66fa8d07b8a4f12acc0d44
+fbc7836de81060b663c4d6ba679ec2644ab3ae0ef44d3b6fad34f48aaa6e62ee
+da11cebec486e9dd90741d2a62c615b0b7535aa7e1de00ab11939d0ba6ab0e0f
+84a65b6a33e7b9a763d745deee6ab87db70b602b9e8305ecd0ddbec1538238d8
+38bb14594e1501edab6ddb0deeac6a7a440dd368348fe702ace5df96a30f8dce
+679e45b10582a2c0164155779ec0910c6deeec87ae1908e9ed89290fd2a8ace5
+5e6a02a8cdfbdc3fd9a2e988b1478e7701b1673517bef4c5d308b62accb33955
+6fe89497715e48be79404aa07d059c405789827766282b297d6413574ae426fd
+aac81899adaa49dcec051178dee98d62d86f12a5adf1d9a975a3011ec86fe20c
+8202e082e4adc80f93e8dbb182f142d5bc4ef4505c7b236e6c7e8803053cd955
+62c484e382258d4ab0f57fadd760e3959a81a8ebe7143b05c882194aa3a9f325
+8e68ade112c29e877385a6f355e0920a00e2e8496a1c126e15e970b7319b0ae9
+3fa1f10d9626bce6db6bbd5918390cdb53b00ab44205fd9fccdef1866553f52e
+fc3faa3e70134650f30ab0144a7c07d5dbe17e059e4edde2cc95a0c6692af0a0
+d901e073b6027e5a95f0db88d231ec923b823a1e66215dbca94793b480e26f52
+3046665d8dcd7cafc3dca29cb534587f2713978682a99c9a12b074e7e7682d9b
+53126bb605f781f4e81e17dd2759532c83d05962e14157d004b8e64874c272a5
+ab7cb1db4db7dabd1d4b7f9da1e15f2c354f32e0c79e68cad5796cca2252127c
+fa07faa10db225b05991bd214e625e1276ed767008d63e72a4a31f6c82364d7b
+d2f728681403362a3b259a78fc3b8b992d71957788d2eef096b3972133fb7c22
+82be3517e8dd956a95bbb8d0e95655bb444af63e298126d6d6f52c5c7754f099
+4be6db71111c876819f7b1f6e86d9c2cf829ea75b1d0f6ffacbb636942453c02
+a40b9cbc7a51e21bb75e6d9335b26ed6db827b2c36b09585dfbb9c28f692e3d3
+fae8cddf72ad0135893dba615e6bda047ace12a20951440c5a1242eea3f51a01
+de521c3e492c69d8b3cbddc561e0bc96c15699893840cc0a4753623824020121
+344152dc5a4ecd61dddad97e4561c75cc1ef6718825b99c2e385bdeb91b5922c
+7f7e3e9f8343be31c409f65f24cd29cbf663168c9ba4c4b0367522df2fb0d572
+33b561f10b48b98e5aba276810dccfbba96b0709ab9c8b66e7e0b84c879055bf
+34dbb700deeb4c1c594ab6c5af191709661c94ad38c28b417536cd8eb327853b
+3e55780d9370c12e07ada6914ed85294fae0e52508b6f4346b9773b6918bef6d
+83d54c1f876df4c845020eaf1f7f68ad4c153eae7141ca1fddfb890d99cfba4a
+b4dbfbcfe55625a544c11a928ae7098570ef01acda00f88d9e964bf9027fc69c
+51eff92a44982547f9d559244580967ae314ee113a678b2925833559cad2a1d8
+1ccc677e29eb948c7aa90ee1dc17163e3cb5444908d54b58678438145c52fb9a
+21daa039d06918a90b24b2200ebb8534efa7c00253d955185ad09eb3859b76ff
+ce8644e28c3dccef10141e51d3a1040ae9df38100191e0369dfa388989121814
+6ee9029eed534e2386a1e69134ff55dc5f83f5cf89ea62a8601317eecf54f834
+68fe8aab164c85d111a628619c207496d220bac44a740bb13b71a8182425bbe4
+c19ed65e64381200b3340ffd4b57633d0a408802e7f36b83a6fa5f4964d2ce0f
+f3686b039e71138cf3c150508aeacc7968acebe5de88e3817103bdee7ce771eb
+d53ae3d05cb7e39dec04b50e245c4c0f382e7f34cb3dd54e6c96f46d338f7e93
+4890766db7c9217278442d6a4d8fb07b2591e9b24a2ba9b0b394fb97083b0a31
+429261b7bed867f94c3cc0c795c8f6906b03694f497b31c3c5b747d6951fdd63
+49145a4bf9a9802ca0dd56a8cc6457b6c083c4eff8886212e9618c91e1aed95a
+0c7291f49a37a29d36a3ed12d1d9380884891a1a003e7e6f05e5f2d5a2591fb1
+be646991c3b7694d96c2d4442310ff36a725e00bdc1caf2a318565bb52b9cd0e
+151c4845ac26e0fc69a524d114723d7933fdfb6e2e5ca3059407d8ad8649e34e
+756e5b2a79216435c2c7fd3a99555af250b3e53a3d7631cbdc9f0c8285f35113
+72ec0f00b7799f2530f69840e634b68d4d6d62c8aed4c1e6943a07d11a3497a7
+d100f205deb01abb61f1ade3ccae93a0d44641992fc0ab03eb88d53335533779
+9ba7abc3642b2dc7e7ac82aab1e15f8cffba80d72097e51cdbda40381f62feb7
+d127554ad284f8d316a82deecd70c1442fda02cf8881ada00eff708df98e006c
+ebad986897626c478de2863773a3ce2c2cdcea20b62fe6d9ab83f98a765534f6
+1e5fba879398d975c49a358577282d8680c250a4be89dea5b835504c0b5c9834
+e495eb9f81d2f37b51697311a1931cd5050b4ff3d0282db68e748116bd019122
+ee08ee733a187629597e94d406379845a5849424af93a939b1669321b32ad495
+ff819d29ef4607eddcf8d07952431db7cb3d6954b89df29b009fc926185ae932
+ef0fbb1d7cd3bfce6e845338f48589a317a40167ef92546519141eb5eafc34c3
+a52782f97064394118967693f64d672266b960e41f3810db9d3809ae41ca3969
+135c8a1cb9745e5cc79a087b2aa9116416e09f8b699b116875526829b34aa494
+bcebdc148ad019e3b56bbd7c99ef9605664873feddf78a86a3e35a4d62b3229c
+8bcd7521772db9cde2b9bf41dd06e048f5370d953f10da256ab6c95b173765d1
+fa5a7a8e196e238cec69ea672f154f5919c11707045862b16bfd29349fb56705
+8725a4644875241e3acb92833934a1502d4c5637c5a820ee116b90f1edd67667
+511ca78755112cf6e0df8036e72bcc17a936f01b75e45b65f2cd731e5e86c7de
+48ad6b18fff01a78050867940fff04ea894d350e33ad85c1c789b8beb0e8bf3f
+1fa0363128bb0ed9623d8c1e6915556f6376449dbfca2a91e41e16891906ed82
+85997a06438023476260f6fe0c9183f46bb48fc75733b9c619f2786599781d7f
+8ed51555e443e47be7312e449cb7723d74c8f24a3e34fbe065d6a6d4938da876
+c042eeaa36cd576ec3970340ed90c7596faaa6c75b70548083d8ab31e87b71dc
+45bc6956c1860117eca3198adfa9576b95fb57345c4652189545d310f2839445
+a6dfe5ba7e134df6bb47f3190b5b5c6ec6f7f81d17c80d39ea7dc0cf51df644d
+6ab36cc8b2170a5aea614578bea4b7be7b14f4b4dd2a2b2dc8737ab852905677
+e88b81c501eeab9d97a1e4f71a90c4f614ad33a75cffcdee0ee08b723257fb5e
+959cefd54ce0d2a7ed67b512208bb8d17236a4e47fb177b84df3c0eeb060ec0f
+2096d55d0dd865de9bbeba18520f56b1ea506a7592feccdc7f946ea8e805b48a
+436431f2161839753b5a5983653da96161239cf587c6be4e6d1cbaaa227258f7
+89a04ef0ba3047f759b7f9bb63e8bf0b4c7fa0fa7d0394384501bd4ab474d948
+bef10b0550cc792bbbeea57cea3d2add732c9b2cb2da2968b6f913c3edeae99b
+c89887b3aceb9b0bcb9d33c747b471cd806fe97134cab1f2cba1e28b26d86e58
+502511661552bda0b66ba5f0138a1fae3469cabfe271c4b77eae08eb0a4cdc32
+d7a00e0affa6dc8be914e266a1aebe6069c6ee03a8a6638a02d6e8ecb68be52c
+869c8af9356704acb203244699ad83de65d85cfe461daccbee9579e0b5dd9701
+b6cde371499563df13027ae71a18db4e699d8e4ffb51f8254c0a587818f0a87d
+a81a3630f006c52665e3b82e64c2eec5fd1b900c69511e7d3d419b31f6cc7121
+3e2fd1ae60bf87ab1962925407101fe5def0867ba071abc022b794593af99cf4
+bf5f2fbd188bf92db4392651d27f9588c67165a2fa651c422b458b6b94ac39ba
+069cfa2c935fb8b98fa16785381fdb98f2dbe3f2553fa501fbd5b5a310e65595
+12213d56565edee6c11d81ef334b2c236b7155cd46fa9c8194511345b44c52f4
+d36e57fa7fb8014957c4eb9a4660f944563cb1fcc133e8390c88d57d52004141
+9588ea32e86cd5e39045889be06cd125b0878523285cebcdb6136b740ba8f340
+664af3139d7abc3f5eb137b5a119a3ef2093f42c888601fae331d871393765b6
+ec9341372f0add5c442003f7d0ffdb177930f8d238267eaf69608c4f61b801d1
+a0b1ee2df802f6fde8351108cc50408209f3f6106b743f8d7272c05d9e9c184b
+3a8be199f8ff51141a39210f523ccbd9c8b80b3dd024244439172d18357d1c20
+d9d10624ecbb2daf84868988c2f7c64b9ecb409d3641f249beaa95b61eba51fe
+e2792ccd39deeedfb97c1bdfedd1920c8f43a0955f4f2ec27edead842ef6a1ab
+aa8fe9675d2cf0a3b9df04a4253bfaa7eafff51c5d8cacdf9540f72181343e44
+28f72a8c5f0ed9e3558b4e33d20d30269dbd553971c65134fbc4af8e2c8caa85
+082c0a1d30a24054cfe656d53a14f79a15b185a167398960defa4b2eae647158
+0660e698a554983db7ff39cedd513c366c2bd8b20eca4c10a8146f655c25a1ec
+fdc5b11a46010f9dc4e491ee9cd914fc4b1ddbd0252bec7e0b43db09b481f85f
+4d50be61900ee3f848653bf44e20dabd6cbb27087fad9d3df5943443f5e9b4c4
+5185f266f128a0d57d2498f11ce48a2873ba1f2a0b6f0045d710532686a48303
+d0cf877697b1bd993d7f37a819305111dc852f851bb0f0776a87699fb8421f6a
+583b9b183ffcdf9bb9af2651509d1cac00cc9a0d37f675332c4577cba4ff40ce
+d08c080e4f37ff2d1c5f8eaf0a7490fd54bef2707b8caeef2034cf80700713d1
+7e5329fcc3e2bbe636de6019b2aebf376b3d34c145329d6543b9fa2e09bbe7ac
+62c8e0243e9c2b8f1a6cb9b12b3720b57e57a0fa80d690670a510de8162dbd78
+2eb77d018c7979302718689beb130fcd955ed033a985a438b9be914e7b791ed3
+0b7544b261cfcc21bc3e710952a44d510629a6623d5f935d1973adeec058aa12
+508e363bab2860c65d4e3378978e60d8379a324bf5f198e3cdf9a006ae6cfcdf
+179e3ffef5fedc5b3dd348932f947d2566672b0aeaddb3db94c7be1db3b5360a
+087bc0ebc575faee3b70e10b84f348e379681e4fffb56b5ae2e4f9ab7a5a5d23
+2bd6b9a20b0739d769996d896a907ced09eff0f3b4b0563f6dbae26023daa2ad
+e04dfcea6997ed43de153358a6ac0b87cb88fee82f3c787394a7d7c4237abb39
+7427cbe77cf32a55ed6ce6998767c664eeadf2d1584330b1b8d98b81c6379cd3
+8af58b1341871276bd5273c1c893f3b09d20df5c9f1c6044c987f0079cd6ac72
+5cfaea7bb13b3bb424b09c1586bcde94e69b9d883dac78a2f008e66be6419d5d
+e058806a15774217d2f4dea4c89439ac4adf99815360e6d922a0d7ef2c3f5d6c
+71db5fc1d26ad61332690638d5690aa6463a3764daffcbc0c6ad05913148c509
+2cd123fccdfcff6073e0ef68329a011daf0d722493bd99586fba685e9bc53da9
+82c4429bb18621f90de6f0e3dcbdd8d157028619b8c67ed90ae654861ee52361
+37aecd737ec58f3019e1c6ac5c388d90d1eef158b383a5003ddf9d7385732bab
+54bed67ebb054d06036ab9fb0be346b30aef7b7e19e770b4acbf652982ccec0b
+8824329c4765aab27a9da56282e1a4ab5a4fcb619b9123bc90002825a0db1821
+9d82a6f65ba0e41e4aaecb13f721e57d1ca655a7e3e867749d19af9bd896c604
+930e495dcf7fbff4a06d37e43088d300c70a492b12c650aeaf464a7b87b99e13
+e3de32a6d9e600ac870976dc0ff2fff73fc1ed17015b90769f2f6677d989e54e
+44203bc1f986782beab05f4ab9b74bb1132eba672a7adb337c341f53a7ae71b7
+2285acea9299d0358c8808a5f91eb36b758a526458b5050bd04d27205f85dcb3
+6c600bf79b0fba570cef267986b66f4582646e77258ec1c4f8e9920c1708c6bc
+51d9d1192bffd3e9e1e6643729c8447441eaa181281fc59123a8d65b91ab83ba
+11922642298a1cedcca82790d8e0173705b13a7b1a5840302706cb6301544b0b
+e795fbaea6d739a8744608e3583b91eb00ef20e5d2fabfdde5760092a6cce59a
+5e5849fae16aa7389d7cf2250a1d34caaa891e041eb232ec873747236a5f06c8
+8fa26edd5318d460f7ae1e4ae4930c124429fff5514a8e43b5010f8eab703249
+2bc315a2fa640a7a8d6daac53ba0f3f24782af5a8438cfb2c3dca05f411f23f2
+c24c528799a9c67317fe23dad6c0c7bfbb6f595ca4b72829229cb9aae4269c9d
+d311492d3c9f59a0df4dec986dd5e6736ce554bb5a7d2a2d26f0cfdaa4193d07
+64381e167a91a8e6f8fbdc7af252db41b46d8df88ea86c4208ec39de17cd273a
+40a54101900437fd09e93bb5e15bf98e6b9f976387c8f4d9f8b4ad95eff93cdb
+ec5cee98a981ff13bd676cbff069c0bd37a8ec838871e2a5fb1e521a9594e7c6
+b9020cd4477cf665e3cf235e11e08f6798cd490d189b6a91ac3a55746e93aedc
+eae09a8d5be34a41164645abfcd44e4999672a7f042705742e3615d1008e7d39
+282047769e7673fee34a7719a951275c1c8f8265362ef5227796ec0068b08e04
+eccfd93eb5052464560fba36a785276b313b4314134743e43284cf202272b1fd
+00ffb172aa5f269bb79398515f2ca336bd596f03dcb2a985d4fad56f39f6935a
+fed55d51a40dce83d784df927362021ecebfea740016fb30970e3ca872e4b765
+c03247b759355ab44af2c98d936dafdc98be90671de5f2cbb8e0e580490c150e
+892861d2ee382866ec1854fb46a636fef8370a38cfa58cda619592a0e19945b8
+493b48aef90f2acb19066f6b7460e39b219e6d1376e2305bed665956b504f850
+3eac575b866ce22f9f140905d1869c79cff565547794699c0ef808aa8d61ac31
+3d8ea0b440d261b2ac9242fc0a0d3de9db31c59a3e7f1cf1c1996a054bc57aa3
+1254e03eae1e021e4d789fbb8f84df7e4da8a0759cf8924c005beff364424826
+19038da0dcd2429968e508036d084c5df2950d89fcaae09c104450bce1d4a31d
+c46ef022230bbf40318b759d9275dede7c0f30a4cecacfcdcde21157713f3d58
+cbe31dd7b8dc11b62020c34e6a3aa74501e4afca8c28740cd824bd2262363f74
+ef3ff0348bb9a0e5e1db5ddc181d49c5aa26494ca81dd4c15c283d9795995e79
+156fa949f1d21d3c5d6db33d5624b7e1208a4acc5fbfa809a28894033b05685e
+f371d86f6236f1dc5c2cac4eab9c3cb1c99f91237fad9b447e09d92e7aedd340
+30501af12e9489516de00ef0b27d06ceabf5c1c91ab393208f6b25b92b1d2c83
+191138218e564837c118ec0cc1e0b5c545935681acdf575c953a55df1dfc5124
+77ee2d5e1ab487c3829b93fb31b24f5afa5f6d0980da469d0fe0714990e1b576
+247995b2c97651a6ca746185b0a8d00f86c8f9c3be355aa3762337bc6a69588f
+a5a31489bb925a4a916a6d14049dca8b58d787fc4495b68655c0089fb13d3c1b
+b4fd03bab97277df94b04902a7567e12736115c48e2fbd225a80056de046196f
+5c4540f3054f4e80ca2c247462db81208b77836c633e14736c19a9aa881a6505
+e739ef6aa5d563b4de5c397154a9c9078ff3af1dad6c37134165838ded769049
+cf13fe3f723377d9e7cdfdabb2db45c36eaccb5124ff9bb34abb1281486b1da2
+841ed171c7e81d080a2509899cf10ecd1d50a1743489e609454691fc939811c2
+8ac1f7d740a184af3fa56554076e52aecf3962a981c4663abf2554e429ee5602
+1461128fe640b8430fdb57ec54e53963697f08aa62c390e471b54db56d8e7f3d
+629cb3e390b3e336f405ede83aafb1f20079785b78805031a553a60cc3548835
+4311365118dcbb3a5f99773ec6b5e9bbc80662eb55d96d54729401a6974cc562
+01f8d58cca49572a37a0db3f3491b2417621d5625e6f3b39353645800c3c6600
+6fddba8ee754c4973974cdc7b6c7e72141d7cdfcdee5df352850d24e27f8b3ce
+8fb71102d6b4d0976be749059c057da8a7c9ecfee58727efe968a03a31c5c4d3
+8b505d615883d3a104027be064d6a6e7951954cabc4f7902d71c4e56079b67c8
+bdf6d9d5e6de5226e1f61c21e3f49ae44e6700b7eb1c8223443fe61c19792f83
+6fc504d2821284535607e7ca3b3221f9628e193667a67fe6c6d59a2281e89cd1
+9dd99077815039dd14933c0a83500e40326cc921a9eb469f24c4ea90375bbcc8
+153b17fe9f6d06938f1b8ae24dfcdb3aabecf3fef8041cba97a74e77a8775c89
+3bff97e829a4a26cc41a48efa87d9d7505e32c6fc22ccbf7772e75955753ef4e
+2d25a280c5c6fadd52bbc41130821241b02cf3e23076c4db8f8b2f536df86fd9
+978c4e5acbfc8b8c7d47b401e36a5ddb784103d0c76776d36a39e71fcce76992
+3ea663d22b741965ccaf50fb56a5128324a6c90095547beae63d69d5474c05de
+74cdb71e489e0ad55bd4be333627b6d5644813497a73e63b3c75484db9b7db15
+d7f6c1d47f66609afa41a38436daa127b4aa31c0746c941068e472b451ef2f06
+b90dda9a1f013d484bba0116a6f32923e8380dfbbcaf2331a756d732f8041f11
+75f6c067c16137100af947a2e645288c09dbaf7f68fd2fc2dab0dfce80ce7ec5
+e7e1061eb6e86e2c21d56036e3692dacc1f317077d3ccc06c353cd4e46fb0769
+c37050107a9b47d23878ffdfc618998be23b09963727c35aa77033e671c7b510
+8f7bc907067075250853f0426406bacf7e9946ed23c01d9437746f83984aa4f3
+5ac1585ad02c8cec492d76d3e6cbe44b73aefa207c991e01e36e99864f783254
+cf65f8730962b34ce26ee097d845d08ffd74879db8ec60f19db030915fc1cf2d
+7bbac3eccffec58b78542627154dba7260b0ae5ee4f2f3fadb19a7fda55017a9
+939444914b062e548d2cfb9178153b6bf9c398a21b400948c834d10aeb43ca9d
+f9b005e3a1df4acdc3a0bcc9ae47d1455816e327689be3e976f628ef8b0f8a04
+4e24305b42782a14c1f3495dbbd645aaa493179e812279c49a3a9fb260cbf5b7
+4e9dff0ce22b832648fe7cbce2cee3ba737584c30486d2c204e33143e6417555
+dd1f62b5f73c3ebdfbba9d68fcdf0cf456999542294e9224c998eae531a3af07
+837672418760aed64a50bfc5b45ac9695d76274040ac7bdba4aafbb1a9b40ac3
+91e8150f06149ace0f
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR12
+%!PS-AdobeFont-1.1: CMR12 1.0
+%%CreationDate: 1991 Aug 20 16:38:05
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 53 /five put
+dup 56 /eight put
+dup 65 /A put
+dup 67 /C put
+dup 72 /H put
+dup 76 /L put
+dup 77 /M put
+dup 82 /R put
+dup 83 /S put
+dup 85 /U put
+dup 97 /a put
+dup 98 /b put
+dup 100 /d put
+dup 101 /e put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 117 /u put
+dup 196 /dieresis put
+readonly def
+/FontBBox{-34 -251 988 750}readonly def
+/UniqueXX 5000794 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204a520640fd7c4d05e35ea5486f
+a43d0e970787203855daccb1ed0b16325828b13b7c767a1a58c87902f0546ea5
+404440fa6526975783c2d7a9572b8e5d5176bac598b8960609f49016aebf3763
+89c1adfe6a1ffc0c53b3acd9d168ec3a278fd4f1d9b085dc2df701346c9d0887
+3d230a161692b42a45bb5da343b4edd839dd60685a59aaa49fc65cd8e2ad2a9c
+5cab953495172a1a9f40d5f38e922443a519dd96f667201a408bd1d89e35f4ab
+98e2f68c3366efc14b5afe1018d9c845d808d4f8e07ea8168518a171ab4d6e21
+70eeac099eb7ef46eb9781384da1fac3b3133bb718bc80082eaea88759745188
+f266b31d0c7e791d633f16ed94e05517a32163e74cbd96dc5db066f2a5313d6d
+7f09465608cb404613e0f058073af000e5bdfafbbf9da0c0d5c02a3447f2cdc1
+f56481901e34265c26d331ac3f85bdcbc7c51ef9eddf2b9c189c5253f8e74282
+d6f053d7d183ae17ea175e5ebc401e67d21a9fea139cbbf3bb1358c713a75843
+b39a69aa2b1a7b975f53ff22d1dc3bdf7acd17afa1da21568310c68241b31d3d
+03bf404bd30baf9cc19c75b958bce7155f03cb0cfe2cae0327aad4b603284a51
+7c26de75b8c6f6aaa9debe4aec08ca4b646d787800acdb445bb55d10cbc2237b
+ffab58a0399b8e1a4709eee6012432005487a6979cabfd75caeaa480f411a990
+8b6d3a2e7e6937783279ac9a51ac69390985d83828feeec2ea288a657e0f79e6
+8ac3451a6bb1c8989c512da066d6dc771548f2da3b78d01c03e2f8f20dbe256a
+ecfe723afaf1bd728b86f31fefb6a4cbbca356f80b837c9a5acb8f511a576a6b
+8ca0a701eba732630025a8438d137831678929805a6e8caae351ddbc9a5be60e
+c8290b795df0ddbceaf0159ab4e7756d967bfc714db64bf3d52d3fd48d2bf9fe
+81eddc7b93896bcd6fa404838ccf381a4212d4676f6e2718ac78146855e9b41f
+a60ff2e5678aca199ac8fcc7aae05b4a426737d2b76817b4a8eafc44c9157bd0
+dc09654583381125063c13cb6d384f562b58832ba16fdb62676cf75321620437
+2572a5c9bda7de4ca36253102e41eef93169921b9e692ce0941a071079d1492e
+1c3f16579fd8fd4385f83c2e76017b58f874d9fdb551f7054dd39c3c570e2a5b
+fedcb669ae17ea671a99187de542c8985d817fa78aa1e80b43e300aeec3a7aed
+53f8bdfec1857d899680e863efcbd1ccdbd7a8471b0e1fc2be55e75476ae335b
+733a1e959420918c2927f30ff1e76b9a2d2cc4f110c88765d4f773c28fb9a8e9
+3343e044fd038287ea387aafc874fb20173ffa90253c78475699d7dd5a4a78e9
+51324dcee3c4411b48b385497e146ceaab2b4c5c4dcf25eb4781b8afdb19df15
+e5076f781d8b9b067be59d2500303d0932d5e5c5947164382237522677ecda55
+eafe55e2763093e8169c5146aaf34b8d80dc0e5053b0690e9182a2245a5125a7
+b8edd5d2d8a3db0563a6ddd04b2de077e083805db377ec2dfbb7e8de8645db4d
+063cd95c1f378da0f810e5501b5027db0202de00a4b7963cdbefb7138221ac8f
+9d93bb9e6a2a13f3298141adda3673ec9d75fd4f77dc2b8f383a57f6522ea0b1
+9b990da31a5bd1fa628a1e6b3faba9d1877f32be82f4bd5cc3712a9659dd2408
+3ae018c98b5cae961c35a8dbff00a520e258dd43a1fb95a38f1cc345fa86b120
+8172d6c437d399dacde79e63a4ce754020f20e85603a64cf7efea736b2032ba9
+79ca5a253ea2d3a7c72f1277a9510e025dd0ed29caf04d90e2b355ecf59b6685
+2757f95a5af508bf9cbc6d48446f642dbcd215dae89bb96b586c0199b020ddce
+6624da220186d34405cf5213796a4631082b994cb6f4970ad162a9f6814d0dc4
+710bca11b8dd454e5c0e6be063a3e6a4b92080be43b625a664ab132b820c9273
+2048c3d345c3c6d61293ee45ec4f0dc5ea0766402df7744105d03f9bdd22d1e0
+4ba0c5289b9564e614dfd02a43e30c2eeb84d1986c8e9e372974e2ba1edb3c68
+0909522397f72122ba81b4bc72da9ef67b760ab71a2e1a8885d78063ab9d9010
+29acdd6404b191ac860fbec496910c1eb97310d873529b8a8e7729f6528f5147
+bc6443473c0e1d42ccb9c150b3ebc7bb34487f42e03e73345334d0da38af469f
+7597d2e515e0c93fb3e5e3ccbd7b511fe60c14a40d524e66476d1a60e1df7d54
+aaa26fd5b0bd691bfff1df3db2d2601d21211ac9cb419103c39a4c7dabedbbc2
+c7a4f4baa8415ecd3bc8367d20bb9a1f27ad09c53eef850fb6405566eca6c1cc
+51317f7d2aafcff43db24576bc6f5d4c174046fee752a0fd91495639ac0dbcbf
+29b0d69861c8b5de08fe3d46ed8838a2e907cd23884f0b60987145912c676267
+cf6cb3d1d25944fc96d0c595a9853a685e82f4ffe3cc866bc723d2252f8e8c53
+1ec39778dc2fc5a1f340f468295faaace0a159a0ee617511368dabb929c62549
+bf723480b09d7fca485be8f657c311b58ec8ae57e1e9146033310f7bc29cfc86
+10b56bd8987e40669ba024c9c96a19d3aa7f2056bd5969cc992ac07375010184
+43f92a4a67c42a5c85fbc9ea9d3306473c21dbcaf59f6cd40b7baf1738b2ba09
+04965184669c5f1dfc15bc52cadec5ae07595b6aacb068e0227ee572ddefda13
+b2436198acc37fff447d2d6918c236702ad876ba28451fa4c2ed733c5c23e9ab
+d331870717021ce31757d94cc2a3203c47b54cc318881df5450709697346e6a1
+f06ab28362ebefda82b600a4ba5b24242d4906eadddcf0c847e38370606060b4
+1812406f803b39d6e6500aa2deb4a211acdfffceae2fd8167532b8330c93419a
+48b7bde324a9985b5a97818cb06e8132f0ef20f2386752bf2a22e6d0dabb0908
+8a7277d73c2faf871bb074b029b733797313abd8795fb3b9182bd9dc26c1f107
+658a17eb2ac2d6631922929048ddbf7019e66d3dc384274a7335ad7ab8eea108
+81f39f4954159da7b57564ab3774d6a53d4cb965987766c96495c097225caa1b
+6675ab584d4373b7ce209fc4b3be1c35e57e08a19c20d8ac47d360e37b3543da
+ab1c87d99b53f643d70eb13b58de9e286b8cb1645fa54cb0769bcec615217db3
+c031f02e0179447320c5fcc9cd2009767c7cf7a71192b106eb74922b7e46a705
+4793306f80929e09aa7c797d62b55b16ba657f76657dbff86e243d18747a1d5d
+5521a67bcdb27bf7cc5bac7faee3527355070abac800f88aa16cc5eb381e6022
+5e26e89b05ca3da2703b3bb9ee83e3361da0a78719e4c39cb5eb10830d957513
+ff5583f901dbaf90426953c09744f9e3c88e2b4f3c6e74a79a8c9e2e77bfb5d2
+987f2850632a202ca548d6ba4ee3513bd4a0d69762adbe4c5ac50dd126352fa1
+9ef9b97cc4b9aa8e8c658a71b1d4c2e896a5b2d1ef41ddde2f7fae85051f1efd
+d901d594dc604efa6e37ba5036a7d7fbaaf00c126a7042240ed8bbc34a6d8c32
+0261105c3c21637960bfef6a13667c73364be2ca0016a5ec15a9e40f07019de8
+9fcd2dc6cac8dcda2f1ecd4a3656560c5536817d4c9d12e74cb7b2edf797d940
+29dc7591b2f95380ebca7a620243b38fd16e111433d2f109a6e3f7d2587eb5a9
+9ab473eb9fc93f8f584c1a7e56ab560878fea16c41bf259e9cc4c768b0017ff2
+c572ea708396f2e24bbc5e061447e6d1cd7cdff04e1d37f5d599878bb73d017e
+3bbdae200e7115c2cbb4d326ed5ef68124b78377cf52be19754f9a6c76eca5ff
+0a783414d1f7bfa3ad1ab214e04ce1095f6150e8dfdb079d6086a299d11d192c
+46933ac85ab36f90961c09f00bd78f2e142addfa92a9101b99336d7bb1e793a3
+16015753cc6b92e0aa8494bfc22243d8225e80af6451be7e6d3272ef4b7b8fa7
+d8cf10803766afa3f3764fd93ea36f1d582aa76c8e0fc0e4d331967aef3b3dd7
+4098b9e5f9674d42a3230311473d93128c60d49bd1d8027a0effdea73c113c37
+21d551233d799af2db351b8c4005e7ff1345bdcefa7c5fa7e7213495b3cf97bc
+ff747599652e243fa098f5ea22a318d3698dbe9779e971732c965dff92c0892b
+a3a1cb57266adf6e9b79a7035fb75f7583d318950b1a1efaee1f7692e0cc6a5f
+c546e8728ce599bfaabd0ef0c04da74c1adfeae1e0536c46ebb23b36af705184
+4fbd10e464fbb173d4d7cca8d62f324e477303c573d7ffba1e677122c8d95dde
+f9e093a80873ba7e4c66bb140c0f09c49276625f3a7e86550fdb5cf5acc4c1b2
+373e8fbc66dde4eeeb1eab1e5353e845e58ae9c59f5986de2f3a0ff29745d815
+c2e395b792fa3c98846d4503bb12c171bf58ebaf3c354d2e4b96c48c2fd88183
+5a7215403945d0d301e74d46143574a185b1a825c13628d18e159375c01d6edf
+4c975f8f655bf7bc29a73c4b2a67aca795306461b62fec9b9f619670ec5f04cd
+837a9c34fe915cd82fd8d6adb58506c3b511f365f416b12ab794de753152d493
+bb26d8bd3b80a88e2050a5c71ccce36d2fc2ce8c4e8362e47bf0b9a593f9f4ea
+212653ca0490465a22a96d80d5fcb0978ff86beeb57b34338da2058e9444e2bf
+f72d562ebe5e56432bce1930553218f4cb1b78124a9ee0e629f7a7dd6207cc85
+53a447103a546e89e0812e6c62fc8a66ff3c04b244205ded8ce487eda2747911
+3027ca3e3faac7492ce47e81142e0b13f7c24691ae661a3b681634dec15528c2
+c2e33b6e0340df3a11037e17afddac4bc9b85284ffa74f99d7bdb7f5d04b4377
+251ab603802fe3d25be4a0ede179dc2a346aea72d3f2d6064161fa9ae5818639
+edac01775ee73683f1d2707f25b105d17dfdf6ca6d35829293a1fbc0233c4dff
+878c298cd20169973bdd5f8f231d7d64e71de6e3ebec24dd5181b6862b5443f0
+a770137f3d0915d5e5b3f29456d5c5e94bb7e73cdbc0e9628ff4c1b8eb61907e
+04a4eef522fdff926debd6ee13263506f668e29edc98d9fb4617fb1747e32df7
+23ef54f64881e7266a4df092c4641f05821b7352976f2e88e87d5f4a656144e0
+61dd1ec4f879d075231f8d58a999404511db45a3519f517a555ee5f15bb12207
+ce96534cd56e3585e0c9991be9e46ae1ef1fc5b34c183dae6377d8e23cd6ad1f
+3025ff61f296cb90e22616fc701596818bd3f0983b6acc6a509a6cf5c8a0302f
+438a856b3eba9cccb45367da03c918a906cc5b8037b1036ca9ac2b90718f9bcf
+60ab5093eb533b716b61ebd665e8a62bd9326d496f11e13cac7773c002ab4abd
+9e6aeab7f48c2258aaaf4f5f5405c4947c5ddf22e11dd50e07039b8d6f1b4675
+75690ca56d720810c06a3f45347c4c6dbf7755b1be83371ba4717e74870d1b94
+8ab7f3a55a241fe395c63314fd9217cfdbaf1efec09ec8b53835682c45811deb
+38bb64f7f893e4dc10a023a0a857a0460e080b983a834e146e29e46bf8111dd5
+5515ade4df04377b665a9f1d3acc7d32db993a8eed65f2dadde434f95c7ce09e
+89b0b295dfc1d89c4152a57d7012b50b9a0835576a25cdbb5085ee506fe4b2f5
+db5d7d0ee0610c24b127c7eb061e683d920d7883d0c9b9bd5dfdb00cdfe4a49c
+bd6aeadc8b21a6a2f4751c75866cfdf84fdc481002b8e25c9e92389a16dacf1a
+951e887e7251f24035520a0a4e59689dc4d0d3673376061173780e16a2e4f1a0
+339aa71ea1d6e9cbf6561451e40a86c9ce61af255f5a478b323bc38e4bd51c6c
+b6a7d0113f8bb77a8f7dce26c1c5b5351ebda1d96d8f55ee24e3b090a120cae9
+cd40c54edbc0e5d03948307dbfa28051eb08e82529bbaa82c5903f9ae8f1f759
+8498c941d9d6affb966412830b441a49ef4ec8ca1807e7992ea10b41e257540f
+c90bf1a0fc2d9c35291fd33e99b7e960d798a7141f7ccadd0e85913ff31667f4
+24283429ed66bf3e15b6515c6923d8ccfc21f28732204a5e5028ab04cf26d73f
+4d1f6cd2240fba5bf619569e1f046827ce15bd61d62b72ca3d3e4fee229a73dc
+cab741105f7c0cf8d7797957fd1caf35b874b7da8d021d57cdcee0a6d90437a2
+495143ba86bf27a11fd15d811b981bfd8571f2369402119e574d5e5fe572fedb
+a9bbbf31e94981e7b23464c3b88933f27eb626924fc5689401be655bcc9d2dad
+f6fb320e614594db82e7e765b785739b727bb14ab0459c2f4ade0d666880303b
+4b2019176ddb8a5b4856c9b75395efda97d7561e5a85bb1651b15c5a262dbc35
+5476cada3edc0241d42cef0a601a9bc6f7607d65deeea22138ae777872669087
+530c3ac4f2b9ffc3e67c2316cd2fa602412e7bc46e318999c9c28e70ea275473
+36f4bbb8ca7663f5e177db33e086466511e27bf7f0645c28832a4110b6ce9b55
+798e21e0b8450f6abaf1186a06da2a091188c1d32e3a5abed1e709ff3c4e16ca
+fcc86f31a31ee31f7f10e547f3f4a779f2ae12c756981a39a6748cab3802e0f5
+e944bf4bc77b4469d42c92a505390ce9a00e82dfd9878093c40aadbe5e0f8498
+2995a248540d3510e482d056dda2f0179dc4a75bce9e23a86cf2bd13b565d81e
+7f489e773830fa86ecba3e41eb824c0a66df65e8491179c94d49924a69054ee3
+c164772fa5dd1c9063bfa4e4279ac987c7f0a85bc587ea899af4262668d73fdb
+857bffdefa042a873a8bfb7cc487819afa965bf1ad10f04af0086373ab9c3f00
+19d53b49df314989744b53ffbf0c7710d44439689ed30db67e21ba2c6576d01b
+3334620ccc90f2d3a1e7ca9da26634d59a15705db8351c7aa3e3f93ad9f9febc
+079021b7fd602dfb8e101b22d80ec05cb10478103fd10adff0629369786f31e3
+40dc42f2e66ac5d95031d59b6632b2326bf5768b17a5096b9b756f6e8b0d1c55
+551fd07732b42f1eabedebee841bbad3c84dfeed3b50a734963a9c0879169a37
+a82cc75b6e04083549006fa7a7d3cc04de17ed9998143deff3a0f7f31005d695
+8485a563a9cdd6262b24556f7aeb062521155c147c0d62ca2b55507b50a27ace
+ca997e5c928acf0028949dee1ee526dce1cfb7dcde52b8cdba7d9e6340742185
+3b4f212454e12fa02f1c93b60fda910f8f46f5e9e9b3466edc9f6cdeb6117630
+81ba252673a033227edb6758078c95af49b844d30a4b8d2e4d4b3e23d5eaf725
+6ff7a4f9bc6febd6cd98ad7d9ff14c6237509e098c78f3c544235eccf5bc812a
+88b1d9f2edc741c7980a3f2b09a91da900932f88011f71952475a1d97ceba422
+8b9f92d2fbc86e6caea44061c9f7eac1f3d68cf8d2b6631d53161ea4cfe8a12a
+38231150479cd5cbe9d9a4b52e82d4fe3f6f314ec6dd84a6d38610988861e09d
+0948e69535a6348772c6ab80120c56dc377367d93542374b09105026a26a3fea
+2ffa4f2861f0109a72c5ff03af90b2610f9680a94518cbccb23149e9928d1ba0
+9600210e9255285ea311ee5bb31ee17c19ae2d27ed684436ca31b71646725ac1
+80c591280bbf784ac5a8f445ecf872178bc1a936e6e25c38f274958018200f68
+d944cc49eda12a8220918ee9b0f1fdf29ee39857aef2778eb1d7b016c0ebabc2
+61f2e64c0bb5989dcd50c1d894a3f2e655d1f13c414df922df7be6599b8fb957
+848016c0e79511da52186ab378bdee7cfcdd333a0c12d6a3d7e1d055664119eb
+12b8ddc059b9eae94fcb9f42f51cb2dccea5d83cd6c0ec513e51fc732922b6f5
+e036ae1a2b5c6343c5c4e19ee2e435f659a4fc2282e6736ec254efc11eb94437
+6681486cd6b7007618c9602205786ff7d1560651b9f1d2e00af2bd088035a7b8
+fbb6fea0a813b04ac133e12cd469cba42a1d0032005f9883c865ecef572ee7a5
+f1782875541e3da8864f04ac7f22f4083062b47c815174f61e6249e16a234a7b
+d2510b27ca1e07e75f3ec2aab725d814403d74e119a8b787c303895268f453e0
+2f008b4b9da722ac91735bf9f2f9a177ea2494030934d96ff7eec0365a6db9a2
+a1d77c30fb368670d5997e53764db6a47016b420e58458a547602d0f2f84d096
+922e462a6b0e2c4feaff9ec253d0e6a86a47d397d3024c71aed97aacf0263a9a
+76a5a602978c92b416a13fcdf42d318bc86d65449abf9df4eafd6c4e0da87d23
+3795cff9b1d050700346c24174ab5e524ad7e3812dc30071d7da3cf12d68781a
+d717e13d6ebd0d32b559e18d2bbe32829d324c2eae2bfcecccf8a3cb6ae0156b
+bb6c86f35de0e9a1a8a33f53e362c3f1aed2336a1ac4f6603f5dc2c7beb53e9a
+b2350eee78a73e4494fbf2c5ae3643bab9a835cbb92af575f049f3ccb8d71fb6
+1a503248338210c2529875528ffd375299f953871e30c23bd7b88dc9e00bd86a
+812b5dd86226330208941db17e8945052d5bc2dd7867419c865f9a5abfd685e2
+dc4be7ffc14c83d0742f31cf7e2f26a4e6957bd4e19e9f9879ba2fde46e0ce2b
+28eab00eafd804f9c1120c6612f18948a49949183df46978c7c1467a4ad4aea8
+8ff9580251d17cc9b9a9dd5bc7a90a1bdff394b6eddc440165b85acd84cdb585
+d24824d61b7e1c2631ed7725c9b40c325c29d6f2047e95a642fa9a8efa698e75
+fe91cca64206e18bca925aeddec264a197472f5cc6bd8e963dbc32ec69e9d4e8
+b94b1177847597a8cdd70edb833725aa0c784326f22a55b7d5350d71faf89ac3
+afe1e47887a67fbbb377c649ec2e722ece6241e50326a445209f1f60119f03bb
+88f41887cd261bda97d3c4ac71433e8133ebb4522517d23bbc52dc90e04f6651
+2a5211be58196e36b8c5449c57eca0d786f73f32db81cb18532f4310322f0213
+da64a4955bb87e930d55f52f03fe478e5cf534dfefe728c75e84de11f7aec463
+26f1561de8c5e065c1f60f4b154c5125d837735b1250b86bcff4fbee07d3e509
+ec5b600f38cea8dcf5a5690cd0b1748fc55edac37033f0ebf66ed148b13c11e9
+2cce28ffb4dec08d4547a2441bc4f033e7ef0ef8e6ea5b2edb5006cda58d6396
+c89a2951da7cbf4f767661d5f850c797e8d0d8421b846a9bc0d2ead55040c1f9
+7181d18c601bedf53028494761c5e82dc0f3574af7255086c9bf6760a44bb742
+41dd8c31b0e36214be97d532f05b974b9bc84fefc919ade78170f18bff89a0aa
+3b3ea0579867a1a68730c8a598971728968e0badc8459ddd2481e7ce088f8f55
+7f47991a131a193c883aec859048e51fdea215ab80bc08e1f7f7c21596abeba1
+9107020ec7a1e42d7b7521eeda04027e91a8d17152f46410e66d27d98af4d380
+e181bd771eb2f4de1b6304fed4534e8f41c9e544c75ca81f9a613bf1b8a19355
+60a9db695d0ec00e24efa13dfa59c566ee06a82421c8ecb3f5e3b0755cdbb0cb
+26f54a64e24629fb04f0de465ef53f1a88cf293fc1e872927dea42c5ee1c762d
+f88bcc8bd83049f2f3e1214d1ab38fde8b88ee4953a9a55fa03a2d3754e627dd
+85323d052184c2b7c36b754365b377328dfcd74407a7d32128a5cb846bae4b8b
+2378d98216573ce6dfd483d9d0097935c48a5143ec405f98a28247971fef6aad
+2180619fb984ef5402660ab4306c02449df3728a92ee4e627efe4d4171b0a041
+9d26847384d2adda70e7c0ecdd1e86511e397b19ab5fb84561800a37b6af97b2
+b64018ad278b1fbb61802f357ab01fcf6738fac3fceb0ad95e6824b8a8f6f33c
+4abffb4782c7492dde4002bec3687266e1b8813a8a5155df4de8a769f5c030ee
+281a5faf7bfc9f4b10ee582cc4b55292650dd2ccc6c3ad55a8c159cfdf65342c
+66bcc6e87c18bd0609e56dc5851f2ba81697f0aae163757590dfdc2341d62341
+4d74c3224fdedf38b02efc2b1403559806ed56c37a5b24093382f6d402756f5d
+84e0302946c3915b2954ef5a0a3e97167a638cf8e83453842ee4daba691e3122
+29e91186305f1c05926494780a3b3be0a43769afff974ef21f2dd6031d0bbed3
+6deed988fbdfe9f6ceb0c72f081493a06d09d67c709b3b85556401d82917c29a
+c60157149d7976b76c002027a0e5371d293f9c6d3c78e08695c5cff3aa5a6b45
+2aff79d17fd9cc921ff4dbfcd4defd88df799ec66e7aca77ba6d4dc0f1e5a362
+dc6d84e04a3a490349d1e81c3df0bb54ebc54f3d1d228c310018a2ab5c9924b4
+8bf401180656a8035a264e4c869b261351b46534f9fe75a9c44c4374dc8f5f94
+e75e5ceb2f744f41318c355575bef67707f5bc94e18e932a9419bf466830868e
+e2a9732fe2911842b78442d670b99c31e1142c8121fbb11248e5093dc4b8a9f5
+593d21ad6293b827074cdcd161c80f6d59d0a7cd59008d63da8cf17dc3bc3f30
+8c30ff73bfc21285d6a13778367ecb7517f16d186ab7eb02b46c9efd3de824d6
+15eafad1d1c992391369b220cacd6c3a7e138376fe4490de6cdb564cd1054f2a
+2c377df9d9bca230c56cc10396c71216f3afc46d592bad2c32bebc5cec79fe8c
+07e407b907b88c445c71ebe4291b729adc351839f79606c7f8c69e39a3a04829
+0f61e1e067576a57f998402be529074399066220b59bcc16869b97de57d2177c
+77095a0d4f690e6fd4b2255f305a835582332a9cd7e5f82beb0998a17111c3ea
+9cbb8ced06cdea1765d2f311660abdeac0791b82a4e746f363330ab051952851
+18e52e60404d6f976496c28d2dd6ab89e6e6e62e93f923ca55f4b8dd6278f265
+c56b0cb4965c3f9f1a8b66c50cc3c92c414e419cafa7b18fdcc15c3ff45619b4
+5ca6314b7cbf5641ee725df62944b878d190a383e5323c45b95bc72dd400be62
+d1fd33283d96424f0c6e402f991966fea3cae6a4c26bebefe8ea79e7268d3493
+80a4a948172e2631324aa6101b630f956a339496b7e1c91a0d69e20f3911e3cb
+cbbb97a5d8fecc0dd528556509a115fe313f8fda0fff3ac14357a7fe44ca8d8d
+bbbb218d95f7c56063be1075428eeda704c2ef43811b896d66a6fc9e2147f537
+7ae897505935f46f01dd1d98196c6d755086ef8d96f3a6ffccb72e98c45ce1c5
+f32cbcf85717d9e05b201b851c16b202649968a34e8fbac59b3288cbb8358e22
+1f32403f59dca776c7f6aa97fa2255bee3bc078d33aa18d106115a0f49b0e30c
+6afbdc720f1134747b6c5860fef0be7a5fe3a19cd622d229d2a0dec4d4218950
+bf0f6494dcbf4d88fb1672063c094881b30b71d35b38fc6eec2bf83ddff2552f
+1130ca0ec44947011b694bdd26ea7f5aff121241b8f44a259e789290f7b20c13
+a8c1787bdc62d57cf1fd1b4e7cd9f964db1178b051b3f8b927df17322abd4771
+149d4ed10dfdb29629da547e996c1fd4aecf143762a713394c9f5f578e472073
+dee740c73207c9762a7a53f45230b38682415d1443c9ba377c921be77c276417
+780bd6aae29c968a5959f913c3bdd3a65a101b0d0f424f9e500f92aff1e03f80
+afc328928bf6f185025f4a9d68247bd45c50e0ec2539f99d4843cc011df3d27c
+00f0a7f4092fd18f82a2e1c0ba7237a038fada77930c55649c0abf728974f5ca
+eddb3e5c216654121294715855505a72b6d184952c16605a2b3747abff9d04aa
+f08a3bfd96c423310402e81101d4f19d1e5947c98616bfb9dd57c939b27fc4df
+e1911a34cb755998a589772dd485d54d1fb2a9848ebd4dc21642eb3f945e3983
+f0fcfddbb3f74c4631c7bc9852fb322ae334a18dacf37ab164f905be956a734a
+f12d0113bc5f9f5013a02c7090c808087c86fb7ee21b62a9fb4f76e773d930eb
+6c177ba939eccb81902344bca6212bf670146fa60dc4e3752f289f2be318506b
+c7d24a05487daa435d6903c71ea03b5d2aef6b6822a275f4b2f5dc8c9eb6ceda
+4dabd45786544f560b932293be2c8ac05cb724e9eb1938a338757834d001a9c6
+63e0b3c1c7655073db73e0d71377432871e9efe18964a67e05e7dd458d9d39ec
+88c79345533713af09838a60822e72350e86de4c6bffae66c5736676335c7de3
+48dfe9cebc8276565eeb1fd2f44cc361680980306bfc5e7e85e0d777ed4ba7f2
+ec25203da78bb3f2869aec39556b4da2e0413dd3db1a128722b12adc9cfee672
+8f514934c7b0aac02c9ea94e04c192040b12593d7e3dbf40e2d04f87ed165002
+f4cf8eaffb394ee49d0bc055f865e28515e5de861d1c081b631295576a442cc2
+1ca8645a44a02599d03817b9a155c34cba9d3ec95910a8adb8a71e833d9d124a
+0c143f7d899a993962c789b6b3540d1d80d2bf9e2b9688e614811ed9b896254f
+b6b0ec1c1b54b5a8cd58040fb12b2efb972a29eaa2ea64bdb1ed5824e00e02da
+6a7548142bbece71129cbbd6b60a4a16f3135f1462dea357adf63c2ee351df5d
+02393b4a36c5dea555f1b011c1ee14eec89d85ae8c79724a9c0f39
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR17
+%!PS-AdobeFont-1.1: CMR17 1.0
+%%CreationDate: 1991 Aug 20 16:38:24
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR17) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR17 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 46 /period put
+dup 48 /zero put
+dup 50 /two put
+dup 51 /three put
+dup 68 /D put
+dup 85 /U put
+dup 97 /a put
+dup 99 /c put
+dup 101 /e put
+dup 102 /f put
+dup 105 /i put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 196 /dieresis put
+readonly def
+/FontBBox{-33 -250 945 749}readonly def
+/UniqueXX 5000795 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be356c29c3aec91ef17f5d31183b1e489f1fa
+559a6693fbdd04d4f7e99886d8cb7cca13d4aa9ceb34a708af22e69ccef0e504
+c3997075243585edf60b6447c8d01cffb04b6e3ddbaa7da5891286861322a795
+e9d990fd56af2f5c2b35801a0b07874e4ac3170481d232e150443253c92a8b05
+513d4a4154a99d91f629ccd30376500f5d16aaa9b203bad6350e4b19424c0e33
+75f2949bc1927a6f6221252f8a96618e646aa1b0810753c98becc26b37837775
+24bca72b818d314074c1c91f4e1f4148d3d703d12d179ee6970bd55d04aa9a9d
+97f63f2c7dbd129ec2ed3ba5f8080270ea5854ea165dbcc061e2f47f1aaf0997
+2ac9a689a2a9620b91b53f6b5092884372f5f7afca495f331138d85a97c5bb83
+d8072dc88010fc89108b60bc06d4f93c722e8908d7ce3c1ea3c70e9e65edd769
+7db17ce0e012ad37d4030f33d30a73fd655b7a2e572f3378ac933dd75082f2f1
+68702be19bc60cef6bd5f0ada180d21408c04b7f7db9b6dbaefe09e809a80ddf
+a5366d10930d3e68ca53e4721ff525853f4c784f2c2c3aa0129a34d9df00debc
+ae4037e4c0fbdce3989f35964b4c07e7817b805bfe8c15f0c0ebf226cff606b6
+2954f0f42dff8c214a6537ab666d25389c44db7b5866440bbfc137712bcdcc89
+c68cd1adfd85648b1ed29bfb45a564b02172137feef782d604e0d7e1f1737c96
+719cca9e4b9dfdc87e5999b886a15ac572183df8607ecfab5eeafed9f2798b3b
+db56dc26f8b6f000eb0ecf24341c969953e317cb01bf72bf002c07632b5195a2
+8995c0b23034671dd2ff7f0334745a5d09646bb6027b54034f376bea19419a61
+757e497a619513e955d2550a1e22208ff446f974f02c629d4eec9342cac41e24
+3eda835485be27f1d1a6f2be3ac82262b74d067752a8dc602ec14c9f3007faa7
+c3db96201a742d9df127da560c6d8562103d07478718f7ceb6cf2247fbdefd09
+808a98017cdffc586a723f3b9eef5b0536a2aca182cb6bc6f0568d9b4d506c85
+473549ffa1a6d8b9567846f417e8b7c420c9f9ee65a8bbb3054f73fe4f463c3d
+5adde214af4748fa0dd2320f2c8ac5f05e43a7d03b573c2fe8ed7307ba3330ed
+f5fe79aa92a533d285c1897b0b4f03eeda82c0c0167dca4e7395adccca2d26b5
+bf10d2066f69eaf385850f4777c81229d9ba323acaa9df7f8113acfbaf31ef98
+1b23d51e7b1bc32172d7be3af8a17fad1d9d83526c098a411261084508443fdc
+0bcfdbb350f502205b37a1000ba32ee3f9f735e8457cec0cb4d25053767186f0
+855bf5773d01e0502a1a4b961495ed52d5631f8faa0c6e0b7b37e88a38ee9a2c
+25147c363979235b59d0ee00cf3e03362d5ded251030abd3cbc6c33fcc1c9b96
+b96eac27b5be42ac2f58648cf8123ab86588f9c26ea6393db64f7e709f651715
+6ed7e55c0400761d847082a2fe71dfb829c92728698f95c0172b396c5a24d355
+93cda220f741ffd532d3ea29823a05f3a53885757c4378efd2d7919f40052da0
+74ea9d9b06a652b459e50e76e7295ade2fb1c168dde4a490710a9b73751599a9
+4df7e2d378d6dd0d7893b93ba8eae381b2c2453c911a94e84c1798d3d83928a5
+13ef99207d661b47e335410ac1eb7f09028b4c0d2ec0f9f3a10f80b6babe6aee
+9dbf24cad7384093c9d01b945ad39b1b0410254930fe0f2320a92c5f4032c1a3
+e0bb9d464b65d37282c397b4cf412e21c16dabc4be7b7ef83c48680247346573
+6678e2b53bc0384db254c979eab98352532a682c65b6ea42b5dcb3a883b190a4
+b21eb035c44b1b37c279672809507689a98b877c5be3cdd9550de661e0506032
+c9c1a528b28ca06244770cd573aef40cb7b08eff3dc9e460370f9ca3f9bdeecb
+5d73c5d2b8d48692c97949d374046a7998e4ee3252f1bd0cc024d27342844391
+d79e3fd5cc2b5a2af528fcd3b8c73446d4b719efb0534d444f7bc3eccc7994c9
+29e8e00c8a4e47da85a6533c127c6de55fbb8b2574e52aa689fbcd4ebcbaf820
+91ae1a0e9b3e2cd61af5af1c67749ac663a448ee298189ba145af2132b1947d1
+bdd154241e830e5ce0652a89a0662422d894db50485b1628acdc7259bd95deb9
+3688109b2d0bbc758b783d9bbd8453eed84505510fc09260150107249059f555
+824c68202ab6aeef92e6508c20871ad7397ecda02b17ac055ea648113f096258
+7cf08b39fa531f6a34e672b5bed027019d9596ce050e5a59feec1b672ba58797
+5c6e5200c78f66769880a18d78dbad6004d4d90b32069ba84de4894da884dad7
+aabbc00d1ed4b7fb25f45f872e4d04adf1dae1ec262308ee024f96d28c43c979
+ef5ef37c9356e5f36d3b70dcabe7e43420a55ce4803dc58d605267d24813af09
+5f7418105b9fa8ac148e9d19d62787044be29e65ba392064233e69cec288fd26
+cd0b01d7c56c2ad08db6901dbc0c16747eb85a16a683a1e5b536e8e85cf1add9
+93224dad594648424cabd76252b656e7c19d93141640124116d4e64a42f4c06e
+f625c2d82c95687302ef22866bda45d03b3ded8b46620f3b2f8564f59b095288
+28d18dea0c081956f9196f6acad9b7bc6ce1974f029d1f8ee452d1511573f838
+7f67c72e11f0e0a44d4794d2bd73a56bffbb5fe51fbc973c9718908037328b5d
+8ce43f84adcd69766e03d0e17e64b29551c71f854166d04b37bf7cdd7d367257
+f5d18bed5a6332eec63c501d960d5750fb28ef614b96c1a0ff32cdfe5bdf64a2
+6ae25455ceab8f965cd41fa639f6757a89d783b488c20d5d32f6d390bd1b5395
+6215f4694d43bcfe2267e5c161ea2a7614b7f82c79aba751ad8b19e88d5679aa
+a686856fd384af619f4faeaeeb386c28140ddf2d8ef0282d3cdf7b44bdd0af54
+1f17a7a1c330351b89e45e3688bb0e2fa78687e46aff90597a2f3df2929981df
+18589bfc0764222e0a80b044b8d92c92e96808fa98c704b9262b4d430cc946d9
+c5512665a4752b466f53e75afca1ebebc74ca9b8b9cb634b09e7bb4ecf485097
+516c07fcf921348d34c62f659d2daa0e5f9103fad71c31d07ff5407660560c15
+6baca5a82a31e6e8dec9fe191d11d5ad4c9fe8d15b423ac48cdb2c2545c40ec9
+3869a77e49fbba4dcb60f05c79ba70cdd03f2144dfcb6674c09af4ab52eece73
+4e775ec93c0b5726d2974c1f56d2eff0c774e388a9fb7f92ebab8893f1623920
+fa8dd17d55ddb09eb06454e88c769b65ed6d0d2c07c7730eaa161578c9a329ee
+d189ad0dfe8e5bf6c963927eaf09c88be225ef0797245ddb95775e68f775b739
+296495354fb5688e6a98192215d748bf92d935c2ce45b3488df328b1ad75debd
+32a3320d123a13978ac313abfa20062e3e303b00541a40a84e2b27a402a7920c
+a817097af7dc3abc4884b87e196b1d372847143669b494f841accec68a53133d
+7358fc16753015bc3fa4d4130286774faeb25c7b5a0c88d90bca2390489b39de
+42ed46d5ec9822dc5c8ed0f4cf35960ceb15163df88472de49c94561dcab39c2
+fb7d021870dc9ab372fa61ae34de1a0dd7ee234c9efeced74903e428bc47c9dc
+3e86546c1f0d174faf89177c14ecd4b16501c5604d8ede87f16b95e76eb2ddbf
+dfb8a05a36f2f66c597846db8cfd452952f4130040511866ec1fc7a924b65f5b
+17900b21895ba7707f498f2d314b817ef7f909a7558484a50df85c2b33060ddf
+16d5aad8413de9c1805c5899ea485c91a05cf1bd8d722decd3b4a5618ec4ffcd
+d80aa316dff4ec69dea050eb98952b36a6c8b5438ff4cf642e6618c344c3ea60
+9982b2a59b5c35c15e3fc27efae6a9493d5e1852a021f8dc7a2668c280125320
+37b7570e5d057bf8dac942168babf1553e892131cc4d0202a82b5ddbbba71b22
+1845492fbe892daf8286a03e65b12c2a1ab133fe335b1855fbfc89d7841b2fe3
+5a1c843b4931db71654bf36ab674bbb847b3479457df9032d827510d7a8c0ae7
+16231e08b1e6d953b193710618b1690e7624438eefc06397388d39caa140c80d
+ca56cfae153f8bcede25e0eb08ce7a49752d967f1589c2c6cdfc811896ea9ce6
+cb81ee40dc757d4d3436ae37090853d5ba4627f25960a3a41f3b6e29b3d86bb6
+a4c559ad8dbbd7c6eaef10245039b63326db9bc97941856c749c69155cb9d632
+ac1851dd484aa978b233a5b779d44374abc7723627e79a9122e8b1ffe2130e01
+81756f8872858d7bdad471dddc03ac1853e3c4d43c38568b88eafeec2732c1aa
+b7528ce102c42e6d4356d0df41715b9b2c78968712cbfae79c77a50c8c39c26d
+3e161b9b99742e51e8fd3f454f2174fa4d89e3167af5d3a9728235b07fc38e27
+04395211c0e6c1dd2b66edfc3ab5155b787f477c32aabf4ac21a61308a67e2fd
+b9b5c7340b97665bcb60e374aaeb0062ea7b0731e555397afd843eaf68c558c7
+ad7a9d41908da871aa05c464328f089797844a3303b9188a2fbc9bba68bf0842
+21f2bae0038719babd82d6e8cfee911c2e027459d00a05772d48b7cfc830bde1
+abffce40498a7e740edea20dea5fc1347c4e5902980e56c20697b30037cc666e
+e94a08b1b0bdd202542282b6f48cdfd4029253c2e3fb327f0b845b66f714be7e
+c5bdee81ab9b79c9e6cb6bace00c3d6e86590c541dfe70520345ec63ae27fdf1
+f642d79cd317eab2a1b829a38ac02aa7b9e0dbc8acf9c1cfc1421d3d7510c549
+735d13c04448e949beb8e064ab5d2141652d481a3530f60c596ccece6a2ec611
+6ce11cfddd7838e5fc2d1af6b42efcdc441b6fa3376ef485a401cc0a2bf84551
+1b5324ecc8430102711bfdce755e579bc5ec687035158e22e267f6b34a35689f
+7aaa9501f681116f06d74283ab42b8f7d29a8c40798fe2d7a6542dd56ac0037a
+6806c5707b7ae7e6dad305e6b29b45fd4b2ad843ce3d15270da84d8633252103
+80633b49e13f451222d90e64e1a1a531094b51db9e1fc93ab906809e4de2126c
+b49716889c901539de20f10e92dc2ce3692a1cd90dfa98b1680f8cd7525a7d79
+c4c47896232d9c1d51f35339b44068d16da48ae46dd6cf7fa1c6dfa90d51a515
+73285ec54020a2fa0387e264a5e6cbe10b32500219feade33d61c55587a4b1b4
+6fc124c42015d7e208f1e5606a593950981ea09ae2cbee8f479664d843722641
+25bd5ba128f60f5400ec5a9f8943c950873722fb085d3fafa2389c82f3076ae7
+09f7fb9a3d129954b7577bf1c042b09ad565ea661b15a4bcc92949ed97117910
+5fc482f043065641387fa68487d572853b5190abec8f33eb1ac823e2163c1b8c
+0ab8dd1eca75aa4b3d378da6882c90563043bab28cc6cbcd7f0048bc0ada8e33
+3c5df8da7f07e2bb18a34c7d76810488efaaf76db0ea8a6d3bc514098a39683d
+5e53666e5ec457c2885726ad0aa877f2589e0e38e718b16a85057e9903023cd7
+b670a219ea0886ee324c5ab35e29691146395f51b7e0c5bdfc867e3043684505
+218e017fc89a8ef8e613720d6c9e3eda52566974c5f8843d2c843a8ebef218cd
+7b62c241b1604b72e0ac7a7f6e7fce9731959734962a4fac8b919c1650ee630d
+f1ccbb2cfe49d5da23f404c5f6bce0f0c83089dd51ec05963b8416183fcc45f0
+354ad8b2f7d40f45ad68a7b8b37403979ade584fa50bc5ffbd1262b3839cd20d
+5fe61bdd1171ab86b7c46972afdf3784a8f1f5e881e502c6b22816b2a15941a2
+57224c2798640188add1bbdae15222886fc375aa52d5a23d3c01afa3f2c3a216
+c44f00c5ddb49eb66c3f4e692b8eb180cf260f2a0d923f8c417d0df96f609323
+44fd6a7646db9abb7f28385d48ee228272ac62e3676b12b987c014e4786cd7d1
+43d9f8427d1a6a0fd29be2bc20dd95c4cd794ea30c6318d81151e9cad37966f9
+9dde5dfdb35ff7c4c07057ac56f471e56127e6b47dcb94437683fcf985c37a5b
+0aa9e65513289a4bb071107b670d02043278bb0b24a32a419616217ad9f7f9f9
+e804f943d2d932ee2b2bf56b79eb25732356a45d9b390b0fc26398aff143518a
+f1073d26dd61c82679186e56931d9767312844cda47fddd87e6121b57ec9ba7a
+9484c7ecd26a841a026f565905d0fd3dfccafc5260ede56e7d3b6e34b2fe0288
+b9373df8404ce176b1e61fde60d14a35d196a8eb69eb8a24edbee22aa5306d5e
+f54eaf0fd6cfc581397f48a4fc770fdc828271d43f0af174a1bd1f72720b911a
+80c7e267a4e8e9f0b2b8659c560a2def556956c9676d3ae9bb65bb929f13fa17
+2df6d7af1237822169b00e0d07f3cde3e083213cfddeb43e477de2a83753a8d2
+8fdda61cc69f71d41bb6dacdc3b8fdd6b24468290f66c08b0e7f3d54b396ba3d
+9b48ebbc97c7350878ad64d3118d13a250ad35a3e6e6f16178b3c7e3dc04af89
+f7478604813a54516864d697ca13ffe82a926249bb838658ab683c01adb6d2cc
+11316739dca851f46a3ca073d98cd42fc7ffc65a1c1863c7c04c766b48425543
+884d8cdd98c395e95922afa6d559132f5edc9d72df09348b6bdd11a8a408aaa0
+e05b1dcbc14263eb8b10edee56200600afd4187a1b536ff92c44c3123867296d
+b77aed6290a5ad8ce615eb81aed8446253e373a98d9764200546209c2f59ec3b
+7549e46ece3b7c4586fd750bfda5dff68f660b3822844ddc0652bfa39e7cef50
+acc0e2978ff53528d7c52be34507daaaf1be95a98fcb56bd0a2cfd338156195e
+973d3ae3881ec2d69cb4a4023befcaeb27764fb2fd6fe8980c88af35ec0106eb
+46d70c30c2ef6c6b236e8f6844db84841268f709c41b5ab9f7cea4f40008b81f
+63284db93562dda79d2601d69bf600b0fd80cb249c35acf8e23ab38d5d4133ec
+58fac18027a09ac20adefbf81b932a57d7b418882bf4bfda0f1fdaecb4b72bf6
+07cf0e16b4a91bf0aee70196862aae5c829a16ce1e517798f9768547afdc2c2c
+50859c4268242859f33a514f9baecf84e9e336e2d04db6a637197af091c695d6
+55ee949a6f977a55633ceacffbc8e658311ffaddb7e919583de33c9a5f425ca9
+7b672a312caca70f156a3b8a5ecf0cacb19a5ecfdee6042057f9be08e38d2d25
+1b71c780c90c26f46a65d90b34e1186da7b6c05779be5390e845108d166a7343
+761b2331908cb024b9abad0bb395e7e55812c04af11c0dc00d0f4c16228aef31
+ec3a6483645e1db1a630af4f32461686ecdded46bd08fbd928a69a323eca7f5a
+3ef83f6f02346f53fb39f7d484c5a5c8809a2923393edb66723584f7c759190d
+9c93d77cef1bbff560bed56b207dc91ac8cab39788d0ac1e15ce4be416bc4044
+a35127f92ee9fb7933a2e815abc067ec1d315cafc38bf4ffd146be3a7716c444
+ea9173372018ee72323b4952920be8185772ebd01ac8ee28ea85941c51ab81e2
+0238fc9f8260f00c18b4ed41c366d14f88268f769efe693395f22104da036a07
+2d40ff48f9032a9f615b1f37d4a8618d2421ced11380467f5ad4b1d8bada49a5
+48a481f7449069e9fa353bfd2d0fe426a23b266e0a19fe7729eabb9ce1b87f45
+9a84b99a6089bfa9b7645a7cd657892d2f4a3539b9dc9a63278185fd7459905e
+0b63961825b7f9b6f88844352f1708b6a4b776fa0753f4252be68ee262220c01
+0e72e09f79f0b9e0aa89652a9647299c0b82bddb37443947ef71f4b0545b6341
+ef842a8ed89a8a15a3f7e167ab7fead6c1b12c2325220a83e9dfbead6c1aab63
+81dda1e7b05bc6c75bb462d3ffa765681386d298e36ab38bb7d786a8b924015c
+eeb8621cd911aef44483f29fa1d746cb692e2e6028412382bb4ef82753c97ab9
+d0edd71a7dc06ca2439e690c6bbc9df84889f552c5e29b95d5071656f531cfa0
+d61047ebfdb7a85f67fcecbcaf5dcafca0e8ddaaf66c34edec049586ed8af35b
+829c8a8479c9826ded3a0139516ffa70de7c924ca192b61d940638da2c88d604
+e1355f6fceab05ee7fd5f000aa1feb7d6b4ab59524e260b315a80900f273d882
+2f1711f72a56e4bee6b75fb27bc17fa81ba8c4b30ed5b83534bd2d28ebbe6cdb
+de5560a24c2c542506ce51c97565202f2121e0c201047beae0ffcff2f5822352
+810b3e4271af917a328dc120204dd2ac4a64476d2bf9259b2f4f115593f3dd40
+66cd7f0a8d2a783d411f04db56f183fec54b2ce9022cdf40139d59d98769005e
+a6146cd1d8150be9caf7757d85550c26963e03878d69e3cd13218b9fdf907da1
+e818ed98c051e618902251e69e81506f916671f87f54c214363b0c75cfd54922
+38c4307000636c13c4cd64e6f3558ce568bd5dc21e19f1e2d9b87ce871bcebf0
+57a378316f7f9094361c0179a5a76c0971c9b93e6ac6c2a53aa2da7c2917c199
+b3326504fb5529124b1fa6cd57af0717beeea5f957aa9b95021300bdaacc80f6
+507fb969b17f69ee3c26e7b9910907264cb3a758222bb1879df9c869c8c87ed0
+52b68014a22cc4fc0d03d7ab307d0906b2c79bdd6978ee0eb2a3fed38bad82c3
+0f517d24a0d5d9386b24cf4821dea3298653760bf8cc63e7ac7aa42b632a819c
+91540a285bb01fd1cdb312e644149d6416318058bb1660f5e4d466a390c6648b
+d6782b3afef4d8f9a5b3b3360baed027d142c0ffb61ff40d27a939877b6a5bbe
+a8cfe029f59bb236f9d0689881b04e54b214534a68b2134433c22200f7b9289e
+a7b72000cd26f4c33f3b5e4757aa34b04363dc2ecfd85ba566d6905d52fdc759
+69a97dc6a4ba5ec12575fddca226252b3bdb2182951a524189981101031b0fdd
+34815d45fd6fff999a37e9c083cb3786c96388acede4cdd24027f7c98d6ff89f
+e4a338f7cfe5de125967f4816635b5e527190a3defdc4b2c0b191eb2ec253371
+dff805803f878f49c81270d62d076e744154d2f11e8adc2a493f77bdbb835511
+46a7812aaa4642d7d657b5c178999514ad3ef6c1443b6086236a570eb0a42522
+9ad88e9696ca75b3330d54326533245c5dcbebf578b7bd5fa275db18bcc28e1c
+63c3bb080d0b129d97de0bc320afad1e06b63f865a6143aec1de57235388cc11
+a572a8f9d97f56743f26cc84049aedd9849eae8187c7d4d5125902cc98ce07df
+f7e22c7dd31a3714ac09f92898a0967e4ade2acd85864dba10d6e7a90afa055b
+e074a0a4ef0dd8189ddb0964ec1a52abcfeb07a5d7d9d832499fb142c00636a6
+fb27c210eca9f2f1e83ca5a5452a4a4665fa1e23dc6a6830ccfa575d2a846665
+9a8407c7273a217740e76ad015c5f82223136dbcc267d4b0fa979814c2255190
+798e468c61085a8f875c49f33f2b0fd7addee0bc94ff804af657ca0e333fd391
+ba5e7d28cbe9c932ff401276ec801ddb92fd9021f7298a6ee0ae8b294a86829f
+c437eec66878c1008c4a115824f7ab708d916f3fc0d3b4cea7231d6c931d07db
+f29f7c5e36e43906529756b10978a28b0f64200d84ccfd610890b65c0e247270
+11f381d73fb0987d5bd64d2ab12a13b3851fdcbf43db6e8cd29cbb7f1c2b6064
+731e34fd06941f8febbc3856f93f0ad92e6dbecd9545bab54f9185a1f7016ebb
+c38ba82d76568a3c10c3e693fe907f42980627c08a041ff4aea5436584295a66
+00989733b0150883af223b111e6a638864b57d67515dbd9136fc80d537b07201
+6cb01e1498c311bc270d082c8cf841ba40241b82e3cd8f591e81294a1f17841d
+b7c990465a9f7242bc454d00c52054e34775eb4da314cae096c268f2f700f592
+20bbc07f232b2bc74bb2f29a97e5b8bb43bd2983b6d175a805cef3888b60ba36
+bcb5916f2fa99878be13ce9e539b8e9985b60ee0a2acdaf074f0515342324270
+e306d19785d1baccd35e641af628e6b3d1568843a687cacb05386beacc5d6dd8
+9a2bd30ed7522035d35983f2d83d0d1a07a24d27290035f37b4f756ed81c9e70
+0fedf9d198decfef813f7d3f4c4519360fc6d925a31d854e764f79403b30ae39
+e581fb941615aa3c86287f7cf79b84e95db76ec8f15c8b43029a6ce93ae76e03
+20d0daece8c62f7f4d189fefdbb7bbdb43cb87
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+TeXDict begin 39158280 55380996 1000 8000 8000 (cv_guide.dvi)
+ at start /Fa 139[684 684 4[684 8[684 684 2[684 19[684 8[684
+1[684 66[{}9 1328.35 /CMTT12 rf /Fb 167[922 88[{}1 1106.96
+/MSAM10 rf /Fc 135[540 2[569 398 404 401 1[569 512 569
+853 284 2[284 1[512 313 455 569 455 1[512 97[{}17 996.264
+/CMSL9 rf /Fd 150[412 105[{}1 774.872 /CMTT8 rf /Fe 139[942
+1[960 2[1013 978 12[978 26[1136 2[1253 67[{}7 1594.02
+/CMCSC10 rf /Ff 222[284 33[{}1 996.264 /CMR9 rf /Fg 134[497
+2[497 523 366 371 367 2[470 1[784 261 2[261 523 470 1[418
+523 418 523 470 24[705 3[718 22[314 3[366 366 40[{}22
+885.568 /CMR8 rf /Fh 207[244 48[{}1 553.48 /CMSY5 rf
+/Fi 207[255 47[692{}2 774.872 /CMSY7 rf /Fj 141[1107
+1107 1107 738 738 21[1599 7[1168 62[661 661 16[{}9 1106.96
+/CMEX10 rf /Fk 138[523 334 418 411 406 456 437 547 786
+280 471 366 313 518 432 1[420 461 396 14[523 5[701 844
+1[744 12[692 454 1[263 59[{}25 774.872 /CMMI7 rf /Fl
+135[465 2[489 346 351 2[489 441 489 727 3[251 7[441 9[892
+3[489 643 4[796 15[680 8[441 1[441 441 441 4[680 1[346
+346 40[{}22 774.872 /CMR7 rf /Fm 133[515 543 633 792
+537 634 400 519 499 494 557 1[664 972 330 576 456 381
+638 528 542 515 576 479 475 585 461 8[1045 1[756 2[841
+1[711 844 889 1074 753 940 614 487 1[870 712 2[791 1[830
+588 1[861 553 861 307 307 29[484 633 572 2[547 1[646
+3[550 1[449 492 573 626 708 11[{}58 1106.96 /CMMI10 rf
+/Fn 147[581 2[581 6[581 98[{}3 1106.96 /CMITT10 rf /Fo
+133[453 537 1[736 509 594 368 453 467 509 566 566 622
+905 283 1[339 339 566 509 339 509 566 509 509 566 3[339
+1[339 6[792 622 2[751 849 823 993 2[581 427 823 2[751
+836 792 1[823 16[566 1[339 396 1[849 4[849 22[990 2[622
+679 11[{}47 1106.96 /CMTI10 rf /Fp 135[492 7[922 4[553
+307 2[553 553 47[0 3[738 1107 16[1107 6[861 861 2[861
+861 2[861 1[553 11[553 861 307 861{}20 1106.96 /CMSY10
+rf /Fq 133[664 789 789 1079 789 830 581 589 610 1[830
+747 830 1245 415 789 1[415 830 747 457 682 830 664 830
+726 10[1128 1148 1039 830 1115 1[1021 1122 1168 1418
+898 1[772 557 1[1175 939 981 1145 1079 1062 1128 7[747
+747 747 747 747 747 747 747 747 747 1[415 498 3[581 581
+27[830 12[{}58 1328.35 /CMBX12 rf /Fr 205[377 377 5[569
+43[{}3 553.48 /CMR5 rf /Fs 133[797 946 946 1[946 996
+697 707 732 1[996 897 996 1494 498 946 1[498 996 897
+548 818 996 797 996 872 10[1354 1378 1247 996 1338 1[1225
+1347 1402 1701 1077 2[668 1402 1410 1127 1177 1374 1295
+1275 1354 7[897 897 897 897 897 897 897 897 897 2[498
+598 498 4[498 26[996 12[{}56 1594.02 /CMBX12 rf /Ft 139[1004
+1[1055 1[1435 7[1435 2[1178 3[1256 29[1865 9[1291 1291
+1291 1291 1291 1291 1291 1291 1291 49[{}16 2295.84 /CMBX12
+rf /Fu 130[581 1[581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 1[581 1[581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 2[581 581 581 581 2[581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 1[581 581 1[581 35[{}82 1106.96 /CMTT10 rf /Fv 137[679
+679 654 507 667 1[617 704 679 827 568 704 1[335 679 710
+593 617 691 654 642 679 8[901 2[901 4[821 1[901 1095
+756 2[449 2[789 2[870 21[418 45[{}30 1106.96 /CMCSC10
+rf /Fw 133[1377 1635 1635 1[1635 1721 1205 1222 1265
+1[1721 1549 1721 2582 861 2[861 1721 1549 947 1414 1721
+1377 1721 1506 10[2340 2381 2155 1721 2311 1[2117 2327
+2423 2939 1862 2[1154 1[2435 1948 2034 2375 2238 2203
+2340 65[{}40 2754.12 /CMBX12 rf /Fx 128[553 2[1107 553
+492 584 584 799 584 615 430 437 434 584 615 553 615 922
+307 584 338 307 615 553 338 492 615 492 615 553 1[307
+1[307 553 307 3[1138 830 830 799 615 815 861 753 861
+830 1015 692 861 569 400 830 869 723 753 846 799 784
+830 3[861 1[307 307 553 553 553 553 553 553 553 553 553
+553 553 307 369 307 861 553 430 430 307 1[922 2[553 11[553
+7[922 615 615 646 9[922 1[{}86 1106.96 /CMR10 rf /Fy
+132[636 566 672 672 919 672 707 495 502 524 1[707 636
+707 1061 354 672 389 354 707 636 389 583 707 566 707
+619 3[354 1[354 1[962 962 1[962 979 886 707 955 1[870
+956 996 1208 766 1[658 483 996 1001 801 836 976 919 906
+962 7[636 636 636 636 636 636 636 636 636 636 1[354 424
+354 4[354 26[707 12[{}65 1106.96 /CMBX10 rf /Fz 134[631
+1[863 598 697 432 1[548 1[664 664 731 1063 332 2[399
+1[598 399 598 664 598 598 664 13[731 4[966 1[815 8[930
+1[966 52[731 12[{}25 1328.35 /CMTI12 rf /FA 138[723 1[513
+506 1[723 1[723 1084 361 2[361 723 2[578 723 1[723 650
+11[975 1[723 957 4[1192 813 3[975 4[939 1[975 8[650 2[650
+2[650 650 650 1[361 434 45[{}28 1328.35 /CMR12 rf /FB
+137[1173 6[1216 9[1067 1194 1131 99[{}5 1912.83 /CMCSC10
+rf /FC 137[927 977 677 687 677 2[877 977 1477 3[478 2[527
+777 1[777 1[877 11[1326 16[1352 16[877 877 1[877 1[478
+46[{}19 1912.83 /CMR17 rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 8000dpi
+TeXDict begin
+%%PaperSize: A4
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop Black Black Black Black 13054 16051 a FC(User)579
+b(Do)50 b(cumen)-50 b(tation)579 b(for)g FB(cv)-43 b(ode)578
+b FC(v2.3.0)17257 20922 y FA(Alan)434 b(C.)g(Hindmarsh)f(and)g(Radu)h
+(Serban)16542 22471 y Fz(Center)463 b(for)i(Applie)-66
+b(d)464 b(Scienti\257c)d(Computing)16374 24021 y(L)-66
+b(awr)g(enc)g(e)463 b(Livermor)-66 b(e)463 b(National)h(L)-66
+b(ab)g(or)g(atory)25020 27180 y FA(April)433 b(2005)22816
+75432 y(UCRL-SM-208108)p Black Black eop
+%%Page: 2 2
+2 1 bop Black Black Black Black 19852 14944 a Fy(DISCLAIMER)0
+17379 y Fx(This)432 b(do)31 b(cumen)-31 b(t)433 b(w)-31
+b(as)432 b(prepared)e(as)i(an)g(accoun)-31 b(t)433 b(of)f(w)-31
+b(ork)432 b(sp)31 b(onsored)431 b(b)-31 b(y)432 b(an)f(agency)i(of)f
+(the)g(United)g(States)0 18708 y(Go)-31 b(v)g(ernmen)g(t.)467
+b(Neither)290 b(the)g(United)g(States)g(Go)-31 b(v)g(ernmen)g(t)290
+b(nor)f(the)h(Univ)-31 b(ersit)g(y)291 b(of)f(California)i(nor)d(an)-31
+b(y)290 b(of)g(their)0 20036 y(emplo)-31 b(y)g(ees,)423
+b(mak)-31 b(es)411 b(an)-31 b(y)412 b(w)-31 b(arran)g(t)g(y)-92
+b(,)423 b(express)409 b(or)i(implied,)423 b(or)410 b(assumes)h(an)-31
+b(y)411 b(legal)h(liabilit)-31 b(y)415 b(or)410 b(resp)31
+b(onsibilit)-31 b(y)0 21364 y(for)496 b(the)g(accuracy)-92
+b(,)529 b(completeness,)g(or)495 b(usefulness)h(of)g(an)-31
+b(y)497 b(information,)531 b(apparatus,)e(pro)31 b(duct,)528
+b(or)496 b(pro)31 b(cess)0 22693 y(disclosed,)409 b(or)400
+b(represen)-31 b(ts)399 b(that)i(its)f(use)g(w)-31 b(ould)401
+b(not)g(infringe)g(priv)-61 b(ately)402 b(o)-31 b(wned)401
+b(righ)-31 b(ts.)586 b(Reference)399 b(herein)h(to)0
+24021 y(an)-31 b(y)454 b(sp)31 b(eci\257c)452 b(commercial)k(pro)31
+b(duct,)474 b(pro)31 b(cess,)473 b(or)453 b(service)g(b)-31
+b(y)453 b(trade)h(name,)475 b(trademark,)g(man)-31 b(ufacturer,)476
+b(or)0 25349 y(otherwise,)329 b(do)31 b(es)318 b(not)g(necessarily)g
+(constitute)i(or)d(imply)j(its)e(endorsemen)-31 b(t,)329
+b(recommendation,)i(or)318 b(fa)-31 b(v)g(oring)320 b(b)-31
+b(y)0 26678 y(the)414 b(United)h(States)g(Go)-31 b(v)g(ernmen)g(t)415
+b(or)f(the)g(Univ)-31 b(ersit)g(y)416 b(of)e(California.)630
+b(The)414 b(views)h(and)f(opinions)h(of)f(authors)0 28006
+y(expressed)439 b(herein)h(do)h(not)g(necessarily)f(state)h(or)f
+(re\260ect)h(those)f(of)h(the)f(United)i(States)f(Go)-31
+b(v)g(ernmen)g(t)441 b(or)g(the)0 29334 y(Univ)-31 b(ersit)g(y)371
+b(of)e(California,)k(and)d(shall)g(not)g(b)31 b(e)368
+b(used)h(for)g(adv)-31 b(ertising)371 b(or)e(pro)31 b(duct)369
+b(endorsemen)-31 b(t)370 b(purp)31 b(oses.)1660 33319
+y(This)399 b(researc)-31 b(h)398 b(w)-31 b(as)399 b(supp)31
+b(orted)398 b(under)f(the)i(auspices)f(of)h(the)g(U.S.)g(Departmen)-31
+b(t)399 b(of)g(Energy)g(b)-31 b(y)399 b(the)f(Uni-)0
+34648 y(v)-31 b(ersit)g(y)346 b(of)g(California,)354
+b(La)-31 b(wrence)346 b(Liv)-31 b(ermore)346 b(National)i(Lab)31
+b(oratory)346 b(under)f(con)-31 b(tract)347 b(No.)485
+b(W-7405-Eng-48.)p Black Black 9377 81545 a(Appro)-31
+b(v)g(ed)370 b(for)g(public)f(release;)h(further)f(dissemination)i
+(unlimited)p Black Black eop
+%%Page: 3 3
+3 2 bop Black Black 4000 15843 a Fw(Con)-86 b(ten)g(ts)4000
+22735 y Fy(List)424 b(of)h(T)-106 b(ables)39792 b(v)4000
+25198 y(List)424 b(of)h(Figures)38523 b(vii)4000 27661
+y(1)1024 b(In)-35 b(tro)35 b(duction)38687 b(1)5660 29006
+y Fx(1.1)1133 b(Historical)372 b(Bac)-31 b(kground)779
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+f(.)p Black 2094 w(1)p Black 5660 30351 a(1.2)1133 b(Changes)370
+b(from)g(previous)g(v)-31 b(ersions)587 b(.)554 b(.)g(.)g(.)g(.)g(.)f
+(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)f(.)p Black 2094 w(2)p Black 5660
+31696 a(1.3)1133 b(Reading)371 b(this)e(User)g(Guide)490
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)
+p Black 2094 w(2)p Black 4000 34160 a Fy(2)1024 b(CV)-35
+b(ODE)426 b(Installation)e(Pro)35 b(cedure)28180 b(5)5660
+35505 y Fx(2.1)1133 b(Installation)373 b(steps)694 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 2094 w(5)p Black 5660 36850 a(2.2)1133
+b(Con\257guration)372 b(options)1044 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 2094
+w(6)p Black 5660 38195 a(2.3)1133 b(Con\257guration)372
+b(examples)1013 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)f(.)p Black 1540 w(10)p Black 4000 40658
+a Fy(3)1024 b(Mathematical)424 b(Considerations)28718
+b(11)5660 42003 y Fx(3.1)1133 b(IVP)370 b(solution)1093
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
+(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(11)p Black 5660
+43348 a(3.2)1133 b(BDF)369 b(stabilit)-31 b(y)372 b(limit)f(detection)
+909 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(14)p Black 5660 44693 a(3.3)1133 b(Ro)31
+b(ot\257nding)700 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540
+w(15)p Black 4000 47157 a Fy(4)1024 b(Co)35 b(de)427
+b(Organization)34587 b(17)5660 48502 y Fx(4.1)1133 b(SUNDIALS)369
+b(organization)437 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)f(.)p Black 1540 w(17)p Black 5660 49847
+a(4.2)1133 b(CV)-31 b(ODE)370 b(organization)314 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)
+p Black 1540 w(17)p Black 4000 52310 a Fy(5)1024 b(Using)426
+b(CV)-35 b(ODE)36849 b(21)5660 53655 y Fx(5.1)1133 b(Access)369
+b(to)h(library)g(and)f(header)g(\257les)655 b(.)554 b(.)g(.)g(.)g(.)f
+(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(21)p Black 5660
+55000 a(5.2)1133 b(Data)370 b(t)-31 b(yp)31 b(es)1092
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(22)p Black
+5660 56345 a(5.3)1133 b(Header)370 b(\257les)765 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)f(.)p Black 1540 w(22)p Black 5660 57690
+a(5.4)1133 b(A)370 b(sk)-31 b(eleton)370 b(of)g(the)f(user's)g(main)h
+(program)779 b(.)554 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(23)p Black 5660 59036 a(5.5)1133 b(User-callable)371
+b(functions)607 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)f(.)p Black 1540 w(25)p Black 8206 60381
+a(5.5.1)1270 b(CV)-31 b(ODE)370 b(initialization)k(and)369
+b(deallo)31 b(cation)373 b(functions)763 b(.)554 b(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(25)p
+Black 8206 61726 a(5.5.2)1270 b(Linear)369 b(solv)-31
+b(er)370 b(sp)31 b(eci\257cation)370 b(functions)1037
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(27)p Black
+8206 63071 a(5.5.3)1270 b(CV)-31 b(ODE)370 b(solv)-31
+b(er)369 b(function)792 b(.)554 b(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 1540 w(29)p Black 8206 64416 a(5.5.4)1270
+b(Optional)371 b(input)f(functions)364 b(.)554 b(.)g(.)g(.)g(.)g(.)f(.)
+h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(30)p Black 8206
+65761 a(5.5.5)1270 b(In)-31 b(terp)31 b(olated)370 b(output)h(function)
+1013 b(.)554 b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black
+1540 w(40)p Black 8206 67106 a(5.5.6)1270 b(Optional)371
+b(output)f(functions)549 b(.)554 b(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+f(.)p Black 1540 w(40)p Black 8206 68451 a(5.5.7)1270
+b(CV)-31 b(ODE)370 b(reinitialization)j(function)860
+b(.)553 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(53)p
+Black 5660 69796 a(5.6)1133 b(User-supplied)369 b(functions)1093
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)
+p Black 1540 w(54)p Black 8206 71141 a(5.6.1)1270 b(ODE)369
+b(righ)-31 b(t-hand)370 b(side)483 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)
+f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(54)p Black
+8206 72487 a(5.6.2)1270 b(Error)368 b(w)-31 b(eigh)g(t)372
+b(function)1022 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+f(.)p Black 1540 w(54)p Black 8206 73832 a(5.6.3)1270
+b(Jacobian)370 b(information)j(\(direct)d(metho)31 b(d)370
+b(with)g(dense)f(Jacobian\))1096 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)f(.)p Black 1540 w(55)p Black 8206 75177 a(5.6.4)1270
+b(Jacobian)370 b(information)j(\(direct)d(metho)31 b(d)370
+b(with)g(banded)f(Jacobian\))1103 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)f
+(.)p Black 1540 w(56)p Black 8206 76522 a(5.6.5)1270
+b(Jacobian)370 b(information)j(\(SPGMR)c(matrix-v)-31
+b(ector)371 b(pro)31 b(duct\))334 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)f(.)p Black 1540 w(57)p Black 8206 77867
+a(5.6.6)1270 b(Preconditioning)372 b(\(SPGMR)d(linear)h(system)f
+(solution\))508 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)f(.)p Black 1540 w(57)p Black Black 27539
+81188 a(iii)p Black eop
+%%Page: 4 4
+4 3 bop Black Black 4206 6974 a Fx(5.6.7)1270 b(Preconditioning)372
+b(\(SPGMR)d(Jacobian)i(data\))851 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black
+1540 w(58)p Black 1660 8302 a(5.7)1133 b(Ro)31 b(ot\257nding)700
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(59)p Black
+4206 9631 a(5.7.1)1270 b(User-callable)370 b(functions)h(for)e(ro)31
+b(ot\257nding)871 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(59)p
+Black 4206 10959 a(5.7.2)1270 b(User-supplied)369 b(function)h(for)f
+(ro)31 b(ot\257nding)933 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black
+1540 w(60)p Black 1660 12287 a(5.8)1133 b(Preconditioner)371
+b(mo)31 b(dules)994 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)f(.)p Black 1540 w(61)p Black 4206 13616
+a(5.8.1)1270 b(A)369 b(serial)h(banded)f(preconditioner)h(mo)31
+b(dule)385 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(61)p Black
+4206 14944 a(5.8.2)1270 b(A)369 b(parallel)i(band-blo)31
+b(c)-31 b(k-diagonal)373 b(preconditioner)e(mo)31 b(dule)852
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(63)p Black 1660 16272 a(5.9)1133 b(F)-31
+b(CV)g(ODE,)371 b(a)e Fv(F)-32 b(or)-74 b(tran)p Fx(-)p
+Fv(C)368 b Fx(in)-31 b(terface)370 b(mo)31 b(dule)321
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(69)p Black
+4206 17601 a(5.9.1)1270 b(F)-31 b(CV)g(ODE)369 b(routines)745
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(69)p Black 4206 18929 a(5.9.2)1270 b(F)-31
+b(CV)g(ODE)369 b(optional)j(input)e(and)g(output)569
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(70)p Black
+4206 20257 a(5.9.3)1270 b(Usage)370 b(of)f(the)h(F)-31
+b(CV)g(ODE)369 b(in)-31 b(terface)371 b(mo)31 b(dule)529
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)f(.)p Black 1540 w(70)p Black 4206 21586
+a(5.9.4)1270 b(Usage)370 b(of)f(the)h(F)-31 b(CVR)g(OOT)370
+b(in)-31 b(terface)370 b(to)g(ro)31 b(ot\257nding)819
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(77)p Black 4206 22914 a(5.9.5)1270 b(Usage)370
+b(of)f(the)h(F)-31 b(CVBP)370 b(in)-31 b(terface)370
+b(to)g(CVBANDPRE)668 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)f(.)p Black 1540 w(78)p Black 4206 24242
+a(5.9.6)1270 b(Usage)370 b(of)f(the)h(F)-31 b(CVBBD)369
+b(in)-31 b(terface)370 b(to)g(CVBBDPRE)668 b(.)554 b(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540
+w(79)p Black 0 26678 a Fy(6)1024 b(Description)426 b(of)f(the)g
+(NVECTOR)g(mo)35 b(dule)23559 b(83)1660 28006 y Fx(6.1)1133
+b(The)370 b(NVECTOR)p 12235 28006 333 45 v 400 w(SERIAL)f(implemen)-31
+b(tation)672 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540
+w(87)p Black 1660 29334 a(6.2)1133 b(The)370 b(NVECTOR)p
+12235 29334 V 400 w(P)-92 b(ARALLEL)369 b(implemen)-31
+b(tation)534 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(89)p
+Black 1660 30663 a(6.3)1133 b(NVECTOR)371 b(functions)f(used)f(b)-31
+b(y)369 b(CV)-31 b(ODE)364 b(.)554 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(91)p Black 0 33098 a Fy(7)1024 b(Pro)-35
+b(viding)425 b(Alternate)h(Linear)e(Solv)-35 b(er)425
+b(Mo)35 b(dules)20894 b(93)0 35533 y(8)1024 b(Generic)425
+b(Linear)g(Solv)-35 b(ers)425 b(in)f(SUNDIALS)23917 b(97)1660
+36862 y Fx(8.1)1133 b(The)370 b(DENSE)f(mo)31 b(dule)730
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 1540 w(97)p Black 4206 38190 a(8.1.1)1270
+b(T)-31 b(yp)31 b(e)369 b Fu(DenseMat)518 b Fx(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(97)p Black 4206 39518 a(8.1.2)1270 b(Accessor)368
+b(Macros)867 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)f(.)p Black 1540 w(98)p Black 4206 40847 a(8.1.3)1270
+b(F)-92 b(unctions)747 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(98)p
+Black 4206 42175 a(8.1.4)1270 b(Small)371 b(Dense)d(Matrix)i(F)-92
+b(unctions)1061 b(.)554 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(98)p Black 1660 43504 a(8.2)1133 b(The)370
+b(BAND)f(mo)31 b(dule)376 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987 w(100)p
+Black 4206 44832 a(8.2.1)1270 b(T)-31 b(yp)31 b(e)369
+b Fu(BandMat)1099 b Fx(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
+(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)f(.)p Black 987 w(100)p Black 4206
+46160 a(8.2.2)1270 b(Accessor)368 b(Macros)867 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 987 w(100)p Black 4206 47489 a(8.2.3)1270 b(F)-92
+b(unctions)747 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987 w(102)p Black
+1660 48817 a(8.3)1133 b(The)370 b(SPGMR)e(mo)31 b(dule)461
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 987 w(102)p Black 0 51252 a Fy(9)1024
+b(CV)-35 b(ODE)426 b(Constan)-35 b(ts)33844 b(105)1660
+52581 y Fx(9.1)1133 b(CV)-31 b(ODE)370 b(input)g(constan)-31
+b(ts)518 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 987 w(105)p Black 1660 53909 a(9.2)1133
+b(CV)-31 b(ODE)370 b(output)h(constan)-31 b(ts)702 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 987 w(105)p Black 0 56344 a Fy(Bibliograph)-35
+b(y)38950 b(109)0 58780 y(Index)42939 b(111)p Black 23554
+81188 a Fx(iv)p Black eop
+%%Page: 5 5
+5 4 bop Black Black 4000 15830 a Fw(List)1032 b(of)h(T)-258
+b(ables)5660 22693 y Fx(2.1)1133 b(SUNDIALS)369 b(libraries)h(and)f
+(header)g(\257les)600 b(.)554 b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 2094 w(7)p Black 5660 25128 a(5.1)1133 b(Optional)372
+b(inputs)d(for)h Fv(cv)-25 b(ode)p Fx(,)370 b Fv(cvdense)p
+Fx(,)g Fv(cvband)p Fx(,)g(and)g Fv(cvspgmr)1041 b Fx(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540
+w(31)p Black 5660 26456 a(5.2)1133 b(Optional)372 b(outputs)e(from)g
+Fv(cv)-25 b(ode)p Fx(,)370 b Fv(cvdense)p Fx(,)g Fv(cvband)p
+Fx(,)g Fv(cvdia)-25 b(g)p Fx(,)370 b(and)f Fv(cvspgmr)1070
+b Fx(.)554 b(.)g(.)g(.)f(.)p Black 1540 w(41)p Black
+5660 27785 a(5.3)1133 b(Description)370 b(of)g(the)f
+Fv(f)-25 b(cv)g(ode)370 b Fx(optional)i(input-output)f(arra)-31
+b(ys)370 b Fu(IOPT)f Fx(and)h Fu(ROPT)963 b Fx(.)554
+b(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(71)p Black 5660
+30220 a(6.1)1133 b(Description)370 b(of)g(the)f(NVECTOR)i(op)31
+b(erations)895 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540
+w(85)p Black 5660 31548 a(6.2)1133 b(List)370 b(of)g(v)-31
+b(ector)370 b(functions)g(usage)f(b)-31 b(y)370 b Fv(cv)-25
+b(ode)370 b Fx(co)31 b(de)369 b(mo)31 b(dules)701 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(92)p Black Black 27708 81188 a(v)p Black
+eop
+%%Page: 6 6
+6 5 bop Black Black Black Black eop
+%%Page: 7 7
+7 6 bop Black Black 4000 15830 a Fw(List)1032 b(of)h(Figures)5660
+22693 y Fx(4.1)1133 b(Organization)372 b(of)e(the)f(SUNDIALS)g(suite)
+336 b(.)554 b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black
+1540 w(18)p Black 5660 24021 a(4.2)1133 b(Ov)-31 b(erall)371
+b(structure)e(diagram)h(of)g(the)g Fv(cv)-25 b(ode)369
+b Fx(pac)-31 b(k)-61 b(age)942 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540
+w(19)p Black 5660 26456 a(5.1)1133 b(Diagram)371 b(of)f(the)f(user)f
+(program)i(and)g Fv(cv)-25 b(ode)370 b Fx(pac)-31 b(k)-61
+b(age)370 b(for)f(in)-31 b(tegration)372 b(of)e(IVP)658
+b(.)554 b(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(23)p Black
+5660 28892 a(8.1)1133 b(Diagram)371 b(of)f(the)f(storage)h(for)g(a)f
+(matrix)i(of)e(t)-31 b(yp)31 b(e)370 b Fu(BandMat)640
+b Fx(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 987 w(101)p Black Black 27400 81188 a(vii)p
+Black eop
+%%Page: 8 8
+8 7 bop Black Black Black Black eop
+%%Page: 1 9
+1 8 bop Black Black 4000 15583 a Ft(Chapter)861 b(1)4000
+21424 y Fw(In)-86 b(tro)86 b(duction)4000 27487 y Fv(cv)-25
+b(ode)350 b Fx(is)g(part)g(of)g(a)g(soft)-31 b(w)g(are)352
+b(family)g(called)f Fv(sundials)p Fx(:)482 b(SUite)350
+b(of)h(Nonlinear)g(and)f(DI\256eren)-31 b(tial/ALgebraic)4000
+28815 y(equation)398 b(Solv)-31 b(ers.)574 b(This)396
+b(suite)h(consists)f(of)g Fv(cv)-25 b(ode)p Fx(,)404
+b Fv(kinsol)p Fx(,)e(and)396 b Fv(id)-25 b(a)p Fx(,)403
+b(and)397 b(v)-61 b(arian)-31 b(ts)397 b(of)f(these)g(with)h(sensi-)
+4000 30143 y(tivit)-31 b(y)372 b(analysis)e(capabilities.)4000
+35430 y Fs(1.1)1793 b(Historical)599 b(Bac)-50 b(kground)4000
+38425 y Fv(F)-32 b(or)-74 b(tran)324 b Fx(solv)-31 b(ers)326
+b(for)g(ODE)f(initial)k(v)-61 b(alue)326 b(problems)g(are)f(widespread)
+h(and)g(hea)-31 b(vily)328 b(used.)478 b(Tw)-31 b(o)327
+b(solv)-31 b(ers)326 b(that)4000 39753 y(ha)-31 b(v)g(e)459
+b(b)31 b(een)457 b(written)h(at)h(LLNL)e(in)h(the)g(past)g(are)f
+Fv(v)-25 b(ode)458 b Fx([1)q(])g(and)f Fv(v)-25 b(odpk)458
+b Fx([3)q(].)758 b Fv(v)-25 b(ode)458 b Fx(is)f(a)h(general)h(purp)31
+b(ose)4000 41082 y(solv)-31 b(er)360 b(that)h(includes)f(metho)31
+b(ds)360 b(for)g(sti\256)g(and)g(nonsti\256)g(systems,)i(and)e(in)g
+(the)g(sti\256)g(case)g(uses)e(direct)i(metho)31 b(ds)4000
+42410 y(\(full)420 b(or)e(banded\))h(for)g(the)f(solution)j(of)e(the)f
+(linear)i(systems)e(that)i(arise)e(at)h(eac)-31 b(h)419
+b(implicit)i(step.)640 b(Externally)-92 b(,)4000 43739
+y Fv(v)-25 b(ode)394 b Fx(is)g(v)-31 b(ery)395 b(similar)g(to)g(the)f
+(w)-31 b(ell)396 b(kno)-31 b(wn)395 b(solv)-31 b(er)394
+b Fv(lsode)g Fx([17)r(].)568 b Fv(v)-25 b(odpk)393 b
+Fx(is)h(a)h(v)-61 b(arian)-31 b(t)395 b(of)g Fv(v)-25
+b(ode)394 b Fx(that)h(uses)f(a)4000 45067 y(preconditioned)304
+b(Krylo)-31 b(v)302 b(\(iterativ)-31 b(e\))306 b(metho)31
+b(d)302 b(for)g(the)h(solution)g(of)g(the)f(linear)h(systems.)470
+b Fv(v)-25 b(odpk)302 b Fx(is)f(a)i(p)31 b(o)-31 b(w)g(erful)4000
+46395 y(to)31 b(ol)418 b(for)f(large)h(sti\256)f(systems)g(b)31
+b(ecause)416 b(it)i(com)-31 b(bines)417 b(established)h(metho)31
+b(ds)418 b(for)e(sti\256)h(in)-31 b(tegration,)433 b(nonlinear)4000
+47724 y(iteration,)360 b(and)355 b(Krylo)-31 b(v)356
+b(\(linear\))g(iteration)h(with)f(a)f(problem-sp)31 b(eci\257c)355
+b(treatmen)-31 b(t)356 b(of)f(the)g(dominan)-31 b(t)357
+b(source)d(of)4000 49052 y(sti\256ness,)394 b(in)c(the)f(form)h(of)g
+(the)f(user-supplied)g(preconditioner)h(matrix)h([2)q(].)553
+b(The)390 b(capabilities)i(of)e(b)31 b(oth)389 b Fv(v)-25
+b(ode)4000 50380 y Fx(and)369 b Fv(v)-25 b(odpk)369 b
+Fx(ha)-31 b(v)g(e)371 b(b)31 b(een)368 b(com)-31 b(bined)371
+b(in)e(the)h Fv(C)p Fx(-language)h(pac)-31 b(k)-61 b(age)371
+b Fv(cv)-25 b(ode)369 b Fx([8)q(].)5660 52015 y(In)349
+b(the)g(pro)31 b(cess)348 b(of)h(translating)i(the)f
+Fv(v)-25 b(ode)349 b Fx(and)g Fv(v)-25 b(odpk)349 b Fx(algorithms)i(in)
+-31 b(to)350 b Fv(C)p Fx(,)g(the)f(o)-31 b(v)g(erall)351
+b Fv(cv)-25 b(ode)350 b Fx(organi-)4000 53344 y(zation)i(has)d(b)31
+b(een)350 b(c)-31 b(hanged)351 b(considerably)-92 b(.)487
+b(One)350 b(k)-31 b(ey)350 b(feature)g(of)h(the)f Fv(cv)-25
+b(ode)351 b Fx(organization)i(is)d(that)h(the)f(linear)4000
+54672 y(system)422 b(solv)-31 b(ers)421 b(comprise)h(a)f(la)-31
+b(y)g(er)423 b(of)e(co)31 b(de)422 b(mo)31 b(dules)422
+b(that)g(is)f(separated)h(from)g(the)f(in)-31 b(tegration)425
+b(algorithm,)4000 56000 y(allo)-31 b(wing)433 b(for)d(easy)g(mo)31
+b(di\257cation)432 b(and)e(expansion)h(of)f(the)g(linear)h(solv)-31
+b(er)430 b(arra)-31 b(y)-92 b(.)674 b(A)430 b(second)f(k)-31
+b(ey)431 b(feature)f(is)g(a)4000 57329 y(separate)375
+b(mo)31 b(dule)375 b(dev)-31 b(oted)376 b(to)f(v)-31
+b(ector)375 b(op)31 b(erations;)379 b(this)c(facilitated)i(the)e
+(extension)h(to)f(m)-31 b(ultiprosessor)375 b(en)-31
+b(vi-)4000 58657 y(ronmen)g(ts)332 b(with)g(minimal)i(impacts)e(on)f
+(the)g(rest)g(of)g(the)h(solv)-31 b(er,)339 b(resulting)332
+b(in)f Fv(pv)-25 b(ode)332 b Fx([6)q(],)340 b(the)331
+b(parallel)i(v)-61 b(arian)-31 b(t)4000 59985 y(of)370
+b Fv(cv)-25 b(ode)p Fx(.)5660 61620 y(Recen)-31 b(tly)-92
+b(,)340 b(the)332 b(functionalit)-31 b(y)335 b(of)c Fv(cv)-25
+b(ode)332 b Fx(and)f Fv(pv)-25 b(ode)332 b Fx(has)f(b)31
+b(een)330 b(com)-31 b(bined)333 b(in)-31 b(to)332 b(one)g(single)g(co)
+31 b(de,)339 b(simply)4000 62948 y(called)473 b Fv(cv)-25
+b(ode)p Fx(.)800 b(Dev)-31 b(elopmen)g(t)473 b(of)f(the)g(new)f(v)-31
+b(ersion)472 b(of)g Fv(cv)-25 b(ode)472 b Fx(w)-31 b(as)472
+b(concurren)-31 b(t)472 b(with)h(a)e(redesign)h(of)g(the)4000
+64277 y(v)-31 b(ector)377 b(op)31 b(erations)376 b(mo)31
+b(dule)377 b(across)f(the)g Fv(sundials)e Fx(suite.)513
+b(The)376 b(k)-31 b(ey)377 b(feature)f(of)g(the)g(new)g
+Fv(nvector)g Fx(mo)31 b(dule)4000 65605 y(is)419 b(that)i(it)f(is)f
+(written)i(in)f(terms)f(of)h(abstract)g(v)-31 b(ector)421
+b(op)31 b(erations)420 b(with)h(the)e(actual)i(v)-31
+b(ector)421 b(k)-31 b(ernels)419 b(attac)-31 b(hed)4000
+66934 y(b)g(y)477 b(a)g(particular)i(implemen)-31 b(tation)481
+b(\(suc)-31 b(h)477 b(as)g(serial)g(or)g(parallel\))i(of)f
+Fv(nvector)p Fx(.)815 b(This)478 b(allo)-31 b(ws)479
+b(writing)g(the)4000 68262 y Fv(sundials)425 b Fx(solv)-31
+b(ers)426 b(in)h(a)f(manner)g(indep)31 b(enden)-31 b(t)427
+b(of)f(the)h(actual)g Fv(nvector)f Fx(implemen)-31 b(tation)431
+b(\(whic)-31 b(h)427 b(can)f(b)31 b(e)4000 69590 y(user-supplied\),)370
+b(as)f(w)-31 b(ell)370 b(as)f(allo)-31 b(wing)373 b(more)d(than)f(one)h
+Fv(nvector)f Fx(mo)31 b(dule)370 b(link)-31 b(ed)371
+b(in)-31 b(to)370 b(an)g(executable)g(\257le.)5660 71225
+y(There)448 b(are)g(sev)-31 b(eral)449 b(motiv)-61 b(ations)451
+b(for)d(c)-31 b(ho)31 b(osing)450 b(the)e Fv(C)g Fx(language)j(for)d
+Fv(cv)-25 b(ode)p Fx(.)730 b(First,)468 b(a)448 b(general)h(mo)-31
+b(v)g(e-)4000 72553 y(men)g(t)397 b(a)-31 b(w)g(a)g(y)398
+b(from)e Fv(F)-32 b(or)-74 b(tran)394 b Fx(and)i(to)-31
+b(w)g(ard)398 b Fv(C)e Fx(in)g(scien)-31 b(ti\257c)396
+b(computing)i(is)e(apparen)-31 b(t.)573 b(Second,)404
+b(the)396 b(p)31 b(oin)-31 b(ter,)4000 73882 y(structure,)505
+b(and)478 b(dynamic)h(memory)g(allo)31 b(cation)481 b(features)d(in)g
+(C)g(are)g(extremely)h(useful)f(in)g(soft)-31 b(w)g(are)479
+b(of)f(this)4000 75210 y(complexit)-31 b(y)-92 b(,)511
+b(with)481 b(the)f(great)h(v)-61 b(ariet)-31 b(y)481
+b(of)f(metho)31 b(d)481 b(options)g(o\256ered.)825 b(Finally)-92
+b(,)509 b(w)-31 b(e)481 b(prefer)e Fv(C)h Fx(o)-31 b(v)g(er)480
+b Fv(C)49057 74989 y Fr(++)50675 75210 y Fx(for)4000
+76539 y Fv(cv)-25 b(ode)373 b Fx(b)31 b(ecause)372 b(of)h(the)g(wider)g
+(a)-31 b(v)-61 b(ailabilit)-31 b(y)377 b(of)c Fv(C)f
+Fx(compilers,)j(the)e(p)31 b(oten)-31 b(tially)375 b(greater)e
+(e\261ciency)h(of)f Fv(C)p Fx(,)g(and)4000 77867 y(the)c(greater)h
+(ease)f(of)h(in)-31 b(terfacing)371 b(the)f(solv)-31
+b(er)369 b(to)h(applications)i(written)e(in)g(extended)g
+Fv(F)-32 b(or)-74 b(tran)p Fx(.)p Black Black eop
+%%Page: 2 10
+2 9 bop Black 0 2701 a Fy(2)40346 b(In)-35 b(tro)35 b(duction)p
+0 3144 48001 45 v Black 0 6974 a Fs(1.2)1793 b(Changes)598
+b(from)g(previous)i(v)-50 b(ersions)0 9620 y Fq(Changes)500
+b(in)e(v2.3.0)0 11663 y Fx(The)381 b(user)f(in)-31 b(terface)382
+b(has)e(b)31 b(een)381 b(further)f(re\257ned.)527 b(Sev)-31
+b(eral)381 b(functions)h(used)e(for)h(setting)h(optional)i(inputs)d(w)
+-31 b(ere)0 12991 y(com)g(bined)392 b(in)-31 b(to)391
+b(a)g(single)g(one.)556 b(Additionally)-92 b(,)400 b(to)391
+b(resolv)-31 b(e)390 b(p)31 b(oten)-31 b(tial)393 b(v)-61
+b(ariable)392 b(scop)31 b(e)389 b(issues,)396 b(all)391
+b(SUNDIALS)0 14320 y(solv)-31 b(ers)400 b(release)h(user)e(data)i(righ)
+-31 b(t)402 b(after)f(its)f(use.)586 b(The)401 b(build)g(systems)f(has)
+g(b)31 b(een)400 b(further)g(impro)-31 b(v)g(ed)401 b(to)h(mak)-31
+b(e)0 15648 y(it)370 b(more)f(robust.)0 18683 y Fq(Changes)500
+b(in)e(v2.2.0)0 20726 y Fx(The)296 b(ma)61 b(jor)297
+b(c)-31 b(hanges)296 b(from)g(the)g(previous)g(v)-31
+b(ersion)296 b(in)-31 b(v)g(olv)g(e)298 b(a)e(redesign)g(of)g(the)g
+(user)e(in)-31 b(terface)297 b(across)e(the)h(en)-31
+b(tire)0 22054 y Fv(sundials)476 b Fx(suite.)817 b(W)-92
+b(e)477 b(ha)-31 b(v)g(e)478 b(eliminated)i(the)d(mec)-31
+b(hanism)479 b(of)f(pro)-31 b(viding)479 b(optional)h(inputs)d(and)h
+(extracting)0 23383 y(optional)355 b(statistics)f(from)f(the)g(solv)-31
+b(er)353 b(through)g(the)f Fu(iopt)h Fx(and)g Fu(ropt)g
+Fx(arra)-31 b(ys.)487 b(Instead,)356 b Fv(cv)-25 b(ode)353
+b Fx(no)-31 b(w)353 b(pro)-31 b(vides)0 24711 y(a)280
+b(set)g(of)g(routines)g(\(with)h(pre\257x)e Fu(CVodeSet)p
+Fx(\))i(to)g(c)-31 b(hange)281 b(the)e(default)j(v)-61
+b(alues)279 b(for)h(v)-61 b(arious)280 b(quan)-31 b(tities)282
+b(con)-31 b(trolling)0 26039 y(the)400 b(solv)-31 b(er)400
+b(and)g(a)g(set)f(of)h(extraction)i(routines)e(\(with)h(pre\257x)e
+Fu(CVodeGet)p Fx(\))i(to)g(extract)f(statistics)h(after)f(return)0
+27368 y(from)386 b(the)g(main)g(solv)-31 b(er)386 b(routine.)542
+b(Similarly)-92 b(,)392 b(eac)-31 b(h)386 b(linear)g(solv)-31
+b(er)386 b(mo)31 b(dule)387 b(pro)-31 b(vides)385 b(its)h(o)-31
+b(wn)387 b(set)e(of)h Fu(Set)p Fx(-)g(and)0 28696 y Fu(Get)p
+Fx(-t)-31 b(yp)31 b(e)370 b(routines.)493 b(F)-92 b(or)369
+b(more)g(details)i(see)d Fp(x)p Fx(5.5.4)k(and)d Fp(x)p
+Fx(5.5.6.)1660 30024 y(Additionally)-92 b(,)388 b(the)381
+b(in)-31 b(terfaces)382 b(to)f(sev)-31 b(eral)381 b(user-supplied)f
+(routines)i(\(suc)-31 b(h)380 b(as)h(those)g(pro)-31
+b(viding)383 b(Jacobians)0 31353 y(and)428 b(preconditioner)h
+(information\))j(w)-31 b(ere)427 b(simpli\257ed)j(b)-31
+b(y)428 b(reducing)g(the)g(n)-31 b(um)g(b)31 b(er)428
+b(of)g(argumen)-31 b(ts.)670 b(The)428 b(same)0 32681
+y(information)447 b(that)f(w)-31 b(as)445 b(previously)g(accessible)g
+(through)g(suc)-31 b(h)444 b(argumen)-31 b(ts)445 b(can)g(no)-31
+b(w)445 b(b)31 b(e)444 b(obtained)i(through)0 34010 y
+Fu(Get)p Fx(-t)-31 b(yp)31 b(e)370 b(functions.)1660
+35338 y(Installation)432 b(of)c Fv(cv)-25 b(ode)429 b
+Fx(\(and)g(all)h(of)f Fv(sundials)p Fx(\))e(has)i(b)31
+b(een)427 b(completely)k(redesigned)d(and)h(is)f(no)-31
+b(w)429 b(based)0 36666 y(on)369 b(con\257gure)h(scripts.)0
+39701 y Fq(Changes)500 b(in)e(v2.2.1)0 41744 y Fx(The)369
+b(c)-31 b(hanges)370 b(in)g(this)f(minor)h Fv(sundials)e
+Fx(release)i(a\256ect)f(only)h(the)g(build)g(system.)0
+45341 y Fs(1.3)1793 b(Reading)597 b(this)i(User)g(Guide)0
+47765 y Fx(This)402 b(user)f(guide)h(is)g(a)g(com)-31
+b(bination)405 b(of)d(general)h(usage)f(instructions)g(and)g(sp)31
+b(eci\257c)402 b(example)h(programs.)591 b(W)-92 b(e)0
+49094 y(exp)31 b(ect)322 b(that)h(some)f(readers)f(will)j(w)-31
+b(an)g(t)324 b(to)e(concen)-31 b(trate)323 b(on)g(the)f(general)g
+(instructions,)333 b(while)323 b(others)f(will)i(refer)0
+50422 y(mostly)371 b(to)f(the)f(examples,)i(and)e(the)h(organization)i
+(is)d(in)-31 b(tended)370 b(to)g(accommo)31 b(date)372
+b(b)31 b(oth)370 b(st)-31 b(yles.)1660 51750 y(There)416
+b(are)f(di\256eren)-31 b(t)416 b(p)31 b(ossible)416 b(lev)-31
+b(els)416 b(of)g(usage)g(of)g Fv(cv)-25 b(ode)p Fx(.)633
+b(The)416 b(most)g(casual)g(user,)427 b(with)417 b(a)f(small)h(IVP)0
+53079 y(problem)481 b(only)-92 b(,)510 b(can)480 b(get)i(b)-31
+b(y)480 b(with)i(reading)f Fp(x)p Fx(3.1,)510 b(then)481
+b(Chapter)g(5)g(through)g Fp(x)p Fx(5.5.3)i(only)-92
+b(,)510 b(and)480 b(lo)31 b(oking)483 b(at)0 54407 y(examples)449
+b(in)g([14)q(].)731 b(In)448 b(a)g(di\256eren)-31 b(t)449
+b(direction,)469 b(a)449 b(more)g(exp)31 b(ert)448 b(user)f(with)j(an)e
+(IVP)g(problem)h(ma)-31 b(y)450 b(w)-31 b(an)g(t)450
+b(to)0 55735 y(\(a\))354 b(use)e(a)g(pac)-31 b(k)-61
+b(age)354 b(preconditioner)g(\()p Fp(x)p Fx(5.8\),)k(\(b\))353
+b(supply)g(his/her)f(o)-31 b(wn)354 b(Jacobian)f(or)g(preconditioner)g
+(routines)0 57064 y(\()p Fp(x)p Fx(5.6\),)324 b(\(c\))309
+b(do)h(m)-31 b(ultiple)311 b(runs)d(of)h(problems)h(of)f(the)g(same)g
+(size)g(\()p Fp(x)p Fx(5.5.7\),)325 b(\(d\))310 b(supply)f(a)g(new)g
+Fv(nvector)g Fx(mo)31 b(dule)0 58392 y(\(Chapter)370
+b(6\),)h(or)e(ev)-31 b(en)369 b(\(e\))h(supply)g(a)f(di\256eren)-31
+b(t)369 b(linear)h(solv)-31 b(er)370 b(mo)31 b(dule)370
+b(\()p Fp(x)p Fx(4.2)h(and)e(Chapter)h(8\).)1660 59720
+y(The)g(structure)e(of)i(this)g(do)31 b(cumen)-31 b(t)370
+b(is)f(as)g(follo)-31 b(ws:)p Black 1660 61637 a Fp(\262)p
+Black 554 w Fx(In)356 b(Chapter)h(2)f(w)-31 b(e)357 b(b)31
+b(egin)357 b(with)g(instructions)g(for)f(the)h(installation)j(of)c
+Fv(cv)-25 b(ode)p Fx(,)360 b(within)e(the)f(structure)e(of)2767
+62965 y Fv(sundials)p Fx(.)p Black 1660 65030 a Fp(\262)p
+Black 554 w Fx(In)344 b(Chapter)h(3,)350 b(w)-31 b(e)344
+b(giv)-31 b(e)346 b(short)e(descriptions)g(of)h(the)f(n)-31
+b(umerical)346 b(metho)31 b(ds)344 b(implemen)-31 b(ted)347
+b(b)-31 b(y)344 b Fv(cv)-25 b(ode)345 b Fx(for)2767 66358
+y(the)370 b(solution)h(of)f(initial)h(v)-61 b(alue)370
+b(problems)g(for)f(systems)g(of)h(ODEs.)p Black 1660
+68423 a Fp(\262)p Black 554 w Fx(The)401 b(follo)-31
+b(wing)404 b(c)-31 b(hapter)402 b(describ)31 b(es)399
+b(the)i(structure)f(of)h(the)g Fv(sundials)e Fx(suite)i(of)g(solv)-31
+b(ers)401 b(\()p Fp(x)p Fx(4.1\))i(and)e(the)2767 69752
+y(soft)-31 b(w)g(are)371 b(organization)i(of)c(the)h
+Fv(cv)-25 b(ode)370 b Fx(solv)-31 b(er)369 b(\()p Fp(x)p
+Fx(4.2\).)p Black 1660 71817 a Fp(\262)p Black 554 w
+Fx(In)355 b(Chapter)h(5,)j(w)-31 b(e)355 b(giv)-31 b(e)356
+b(an)g(o)-31 b(v)g(erview)357 b(of)e(the)h(usage)f(of)h
+Fv(cv)-25 b(ode)p Fx(,)359 b(as)c(w)-31 b(ell)356 b(as)f(a)h(complete)g
+(description)g(of)2767 73145 y(the)370 b(user)e(in)-31
+b(terface)370 b(and)g(of)g(the)f(user-de\257ned)f(routines)i(for)f(in)
+-31 b(tegration)372 b(of)e(IVP)f(ODEs.)p Black 1660 75210
+a Fp(\262)p Black 554 w Fx(Chapter)442 b(6)e(giv)-31
+b(es)442 b(a)f(brief)f(o)-31 b(v)g(erview)442 b(of)f(the)g(generic)g
+Fv(nvector)f Fx(mo)31 b(dule)442 b(shared)e(among)i(the)f(v)-61
+b(arious)2767 76539 y(comp)31 b(onen)-31 b(ts)485 b(of)g
+Fv(sundials)p Fx(,)512 b(and)484 b(details)h(on)f(the)g(t)-31
+b(w)g(o)486 b Fv(nvector)d Fx(implemen)-31 b(tations)488
+b(pro)-31 b(vided)485 b(with)2767 77867 y Fv(sundials)p
+Fx(:)e(a)350 b(serial)h(implemen)-31 b(tation)354 b(\()p
+Fp(x)p Fx(6.1\))f(and)d(a)g(parallel)i(implemen)-31 b(tation)355
+b(based)350 b(on)g(MPI)g(\()p Fp(x)p Fx(6.2\).)p Black
+Black eop
+%%Page: 3 11
+3 10 bop Black 4000 2701 a Fy(1.3)425 b(Reading)g(this)f(User)i(Guide)
+31479 b(3)p 4000 3144 48001 45 v Black Black 5660 6974
+a Fp(\262)p Black 554 w Fx(Chapter)481 b(7)f(describ)31
+b(es)479 b(the)h(in)-31 b(terfaces)481 b(to)g(the)f(linear)h(solv)-31
+b(er)480 b(mo)31 b(dules,)509 b(so)480 b(that)h(a)f(user)f(can)h(pro)
+-31 b(vide)6767 8302 y(his/her)369 b(o)-31 b(wn)371 b(suc)-31
+b(h)368 b(mo)31 b(dule.)p Black 5660 10516 a Fp(\262)p
+Black 554 w Fx(Chapter)370 b(8)g(describ)31 b(es)368
+b(in)h(detail)i(the)f(generic)f(linear)h(solv)-31 b(ers)369
+b(shared)g(b)-31 b(y)369 b(all)i Fv(sundials)d Fx(solv)-31
+b(ers.)p Black 5660 12730 a Fp(\262)p Black 554 w Fx(Finally)-92
+b(,)371 b(Chapter)f(9)g(lists)g(the)f(constan)-31 b(ts)370
+b(used)f(for)g(input)h(to)g(and)f(output)i(from)f Fv(cv)-25
+b(ode)p Fx(.)5660 14944 y(Finally)-92 b(,)469 b(the)448
+b(reader)f(should)h(b)31 b(e)447 b(a)-31 b(w)g(are)449
+b(of)f(the)g(follo)-31 b(wing)451 b(notational)g(con)-31
+b(v)g(en)g(tions)450 b(in)e(this)g(user)f(guide:)4000
+16272 y(program)369 b(listings)g(and)f(iden)-31 b(ti\257ers)369
+b(\(suc)-31 b(h)368 b(as)g Fu(CVodeMalloc)p Fx(\))i(within)g(textual)g
+(explanations)g(app)31 b(ear)368 b(in)g(t)-31 b(yp)31
+b(e-)4000 17601 y(writer)330 b(t)-31 b(yp)31 b(e)330
+b(st)-31 b(yle;)344 b(\257elds)330 b(in)f Fv(C)h Fx(structures)f(\(suc)
+-31 b(h)329 b(as)h Fo(c)-57 b(ontent)p Fx(\))331 b(app)31
+b(ear)329 b(in)h(italics;)345 b(and)330 b(pac)-31 b(k)-61
+b(ages)330 b(or)g(mo)31 b(dules,)4000 18929 y(suc)-31
+b(h)281 b(as)f Fv(cvdense)p Fx(,)300 b(are)281 b(written)h(in)f(all)i
+(capitals.)465 b(In)280 b(the)h(Index,)299 b(page)282
+b(n)-31 b(um)g(b)31 b(ers)280 b(that)j(app)31 b(ear)281
+b(in)g(b)31 b(old)281 b(indicate)4000 20257 y(the)369
+b(main)i(reference)d(for)h(that)i(en)-31 b(try)-92 b(.)4000
+23135 y Fy(Ac)-35 b(kno)g(wledgmen)g(ts.)1108 b Fx(W)-92
+b(e)306 b(wish)g(to)h(ac)-31 b(kno)g(wledge)309 b(the)d(con)-31
+b(tributions)309 b(to)e(previous)f(v)-31 b(ersions)306
+b(of)h(the)f Fv(cv)-25 b(ode)4000 24463 y Fx(and)369
+b Fv(pv)-25 b(ode)370 b Fx(co)31 b(des)369 b(and)h(user)e(guides)h(of)h
+(Scott)g(D.)f(Cohen)h([7)q(])g(and)f(George)g(D.)g(Byrne)g([5)q(].)p
+Black Black eop
+%%Page: 4 12
+4 11 bop Black Black Black Black eop
+%%Page: 5 13
+5 12 bop Black Black 4000 15276 a Ft(Chapter)861 b(2)4000
+20811 y Fw(CV)-86 b(ODE)1032 b(Installation)g(Pro)86
+b(cedure)4000 26567 y Fx(The)429 b(installation)k(of)c
+Fv(cv)-25 b(ode)430 b Fx(is)f(accomplished)h(b)-31 b(y)430
+b(installing)h(the)f Fv(sundials)e Fx(suite)h(as)g(a)g(whole,)446
+b(according)4000 27895 y(to)485 b(the)f(instructions)h(that)g(follo)-31
+b(w.)840 b(The)484 b(same)g(pro)31 b(cedure)483 b(applies)i(whether)f
+(or)g(not)h(the)f(do)-31 b(wnloaded)487 b(\257le)4000
+29224 y(con)-31 b(tains)371 b(solv)-31 b(ers)369 b(other)g(than)h
+Fv(cv)-25 b(ode)p Fx(.)5660 30552 y(Generally)443 b(sp)31
+b(eaking,)461 b(the)443 b(installation)i(pro)31 b(cedure)441
+b(outlined)j(in)e Fp(x)p Fx(2.1)h(b)31 b(elo)-31 b(w)443
+b(will)h(w)-31 b(ork)443 b(on)f(commo)31 b(dit)-31 b(y)4000
+31880 y Fv(LINUX)p Fx(/)p Fv(UNIX)309 b Fx(systems)g(without)j(mo)31
+b(di\257cation.)475 b(Users)308 b(are)i(still)g(encouraged,)323
+b(ho)-31 b(w)g(ev)g(er,)323 b(to)310 b(carefully)g(read)4000
+33209 y(the)419 b(en)-31 b(tire)419 b(c)-31 b(hapter)418
+b(b)31 b(efore)419 b(attempting)i(to)e(install)h(the)f
+Fv(sundials)e Fx(suite,)432 b(in)419 b(case)f(non-default)i(c)-31
+b(hoices)419 b(are)4000 34537 y(desired)396 b(for)h(compilers,)405
+b(compilation)400 b(options,)405 b(or)397 b(the)f(lik)-31
+b(e.)577 b(In)396 b(lieu)h(of)g(reading)h(the)f(option)h(list)f(b)31
+b(elo)-31 b(w,)406 b(the)4000 35866 y(user)428 b(ma)-31
+b(y)430 b(in)-31 b(v)g(ok)g(e)431 b(the)e(con\257guration)j(script)d
+(with)h(the)f(help)g(\260ag)h(to)g(view)g(a)f(complete)i(listing)g(of)e
+(a)-31 b(v)-61 b(ailable)4000 37194 y(options,)371 b(whic)-31
+b(h)370 b(ma)-31 b(y)371 b(b)31 b(e)368 b(done)i(b)-31
+b(y)369 b(issuing)p Black Black 5743 39210 a Fu(\045)582
+b(./configure)h(--help)4000 41226 y Fx(from)370 b(within)h(the)e
+Fu(sundials)h Fx(directory)-92 b(.)5660 42554 y(In)383
+b(the)h(descriptions)f(b)31 b(elo)-31 b(w,)389 b Fo(build)p
+20917 42554 340 45 v 408 w(tr)-57 b(e)g(e)384 b Fx(refers)e(to)i(the)f
+(directory)h(under)e(whic)-31 b(h)385 b(the)e(user)f(w)-31
+b(an)g(ts)385 b(to)f(build)4000 43882 y(and/or)272 b(install)h(the)e
+Fv(sundials)g Fx(pac)-31 b(k)-61 b(age.)461 b(By)271
+b(default,)293 b(the)271 b Fv(sundials)g Fx(libraries)g(and)h(header)f
+(\257les)g(are)g(installed)4000 45211 y(under)311 b(the)g(sub)31
+b(directories)311 b Fo(build)p 18291 45211 V 408 w(tr)-57
+b(e)g(e)p Fu(/lib)312 b Fx(and)g Fo(build)p 27460 45211
+V 407 w(tr)-57 b(e)g(e)p Fu(/include)p Fx(,)326 b(resp)31
+b(ectiv)-31 b(ely)-92 b(.)473 b(Also,)324 b Fo(sour)-57
+b(c)g(e)p 46983 45211 V 408 w(tr)g(e)g(e)312 b Fx(refers)4000
+46539 y(to)373 b(the)f(directory)h(where)e(the)h Fv(sundials)g
+Fx(source)f(co)31 b(de)372 b(is)g(lo)31 b(cated.)502
+b(The)373 b(c)-31 b(hosen)372 b Fo(build)p 41638 46539
+V 407 w(tr)-57 b(e)g(e)373 b Fx(ma)-31 b(y)373 b(b)31
+b(e)372 b(di\256eren)-31 b(t)4000 47867 y(from)467 b(the)g
+Fo(sour)-57 b(c)g(e)p 11770 47867 V 408 w(tr)g(e)g(e)p
+Fx(,)492 b(th)-31 b(us)467 b(allo)-31 b(wing)470 b(for)d(m)-31
+b(ultiple)469 b(installations)h(of)d(the)g Fv(sundials)f
+Fx(suite)h(with)h(di\256eren)-31 b(t)4000 49196 y(con\257guration)371
+b(options.)5660 50524 y(Concerning)349 b(the)f(installation)k(pro)31
+b(cedure)346 b(outlined)k(b)31 b(elo)-31 b(w,)353 b(after)348
+b(in)-31 b(v)g(oking)351 b(the)d Fu(tar)f Fx(command)j(with)f(the)4000
+51852 y(appropriate)405 b(options,)415 b(the)405 b(con)-31
+b(ten)g(ts)405 b(of)g(the)f Fv(sundials)f Fx(arc)-31
+b(hiv)g(e)405 b(\(or)g(the)f Fo(sour)-57 b(c)g(e)p 39507
+51852 V 408 w(tr)g(e)g(e)p Fx(\))405 b(will)h(b)31 b(e)404
+b(extracted)h(to)4000 53181 y(a)387 b(directory)f(named)h
+Fu(sundials)p Fx(.)545 b(Since)387 b(the)f(name)h(of)g(the)f(extracted)
+h(directory)g(is)f(not)h(v)-31 b(ersion-sp)31 b(eci\257c)387
+b(it)g(is)4000 54509 y(recommended)362 b(that)h(the)f(user)f(refrain)h
+(from)g(extracting)i(the)e(arc)-31 b(hiv)g(e)363 b(to)g(a)f(directory)g
+(con)-31 b(taining)365 b(a)d(previous)4000 55837 y(v)-31
+b(ersion/release)366 b(of)g(the)f Fv(sundials)f Fx(suite.)492
+b(If)365 b(the)g(user)f(is)h(only)h(upgrading)h(and)e(the)g(previous)g
+(installation)k(of)4000 57166 y Fv(sundials)f Fx(is)h(not)h(needed,)g
+(then)f(the)h(user)e(ma)-31 b(y)370 b(remo)-31 b(v)g(e)370
+b(the)g(previous)f(installation)k(b)-31 b(y)369 b(issuing)p
+Black Black 5743 59182 a Fu(\045)582 b(rm)f(-rf)h(sundials)4000
+61198 y Fx(from)370 b(a)f(shell)h(command)h(prompt.)5660
+62526 y(Ev)-31 b(en)291 b(though)g(the)f(installation)k(pro)31
+b(cedure)289 b(giv)-31 b(en)291 b(b)31 b(elo)-31 b(w)291
+b(presupp)31 b(oses)289 b(that)i(the)f(user)f(will)j(use)d(the)h
+(default)4000 63854 y(v)-31 b(ector)339 b(mo)31 b(dules)339
+b(supplied)g(with)h(the)e(distribution,)347 b(using)339
+b(the)g Fv(sundials)e Fx(suite)i(with)g(a)g(user-supplied)f(v)-31
+b(ector)4000 65183 y(mo)31 b(dule)370 b(normally)h(will)g(not)f
+(require)f(an)-31 b(y)370 b(c)-31 b(hanges)370 b(to)g(the)f(build)h
+(pro)31 b(cedure.)4000 68801 y Fs(2.1)1793 b(Installation)598
+b(steps)4000 71225 y Fx(T)-92 b(o)261 b(install)i(the)e
+Fv(sundials)f Fx(suite,)283 b(giv)-31 b(en)263 b(a)e(do)-31
+b(wnloaded)263 b(\257le)e(named)g Fo(sundials)p 36937
+71225 V 407 w(\257le)p Fu(.tar.gz)p Fx(,)285 b(issue)260
+b(the)h(follo)-31 b(wing)4000 72553 y(commands)504 b(from)g(a)f(shell)h
+(command)g(prompt,)538 b(while)505 b(within)f(the)g(directory)f(where)g
+Fo(sour)-57 b(c)g(e)p 45546 72553 V 408 w(tr)g(e)g(e)503
+b Fx(is)g(to)h(b)31 b(e)4000 73882 y(lo)g(cated.)557
+b(The)391 b(names)g(of)f(installed)j(libraries)d(and)h(header)f
+(\257les)g(are)g(listed)h(in)g(T)-92 b(able)391 b(2.1)h(for)e
+(reference.)555 b(\(F)-92 b(or)4000 75210 y(brevit)-31
+b(y)-92 b(,)511 b(the)482 b(corresp)31 b(onding)482 b
+Fu(.c)g Fx(\257les)g(are)g(not)g(listed.\))832 b(Regarding)483
+b(the)f(\257le)g(extension)h(.)p Fo(lib)g Fx(app)31 b(earing)483
+b(in)4000 76539 y(T)-92 b(able)369 b(2.1,)h(shared)e(libraries)h
+(generally)g(ha)-31 b(v)g(e)369 b(an)g(extension)g(of)g
+Fu(.so)f Fx(and)h(static)g(libraries)g(ha)-31 b(v)g(e)369
+b(an)g(extension)4000 77867 y(of)h Fu(.a)p Fx(.)492 b(\(See)370
+b Fo(Options)395 b(for)h(libr)-57 b(ary)397 b(supp)-57
+b(ort)368 b Fx(for)h(additional)k(details.\))p Black
+Black eop
+%%Page: 6 14
+6 13 bop Black 0 2701 a Fy(6)29838 b(CV)-35 b(ODE)426
+b(Installation)d(Pro)35 b(cedure)p 0 3144 48001 45 v
+Black Black 1353 6974 a Fx(1.)p Black 554 w Fu(gunzip)370
+b Fo(sundials)p 10567 6974 340 45 v 407 w(\257le)p Fu(.tar.gz)p
+Black 1353 9140 a Fx(2.)p Black 554 w Fu(tar)582 b(-xf)369
+b Fo(sundials)p 11148 9140 V 407 w(\257le)p Fu(.tar)2584
+b Fx([creates)370 b Fu(sundials)g Fx(directory])p Black
+1353 11306 a(3.)p Black 554 w Fu(cd)g Fo(build)p 6658
+11306 V 407 w(tr)-57 b(e)g(e)p Black 1353 13473 a Fx(4.)p
+Black 554 w Fo(p)g(ath)p 4844 13473 V 407 w(to)p 6185
+13473 V 407 w(sour)g(c)g(e)p 9576 13473 V 408 w(tr)g(e)g(e)p
+Fu(/configure)371 b Fo(options)2583 b Fx([options)371
+b(can)e(b)31 b(e)369 b(absen)-31 b(t])p Black 1353 15639
+a(5.)p Black 554 w Fu(make)p Black 1353 17805 a Fx(6.)p
+Black 554 w Fu(make)582 b(install)p Black 1353 19971
+a Fx(7.)p Black 554 w Fu(make)g(examples)p Black 1353
+22138 a Fx(8.)p Black 554 w(If)369 b(system)h(storage)g(space)f
+(conserv)-61 b(ation)370 b(is)f(a)h(priorit)-31 b(y)-92
+b(,)371 b(then)e(issue)4511 23466 y Fu(\045)581 b(make)h(clean)2767
+24794 y Fx(and/or)4511 26123 y Fu(\045)f(make)h(examples_clean)2767
+27451 y Fx(from)370 b(a)g(shell)f(command)i(prompt)f(to)g(remo)-31
+b(v)g(e)370 b(unneeded)f(ob)61 b(ject)371 b(\257les.)0
+31882 y Fs(2.2)1793 b(Con\257guration)598 b(options)0
+34306 y Fx(The)476 b(installation)k(pro)31 b(cedure)475
+b(giv)-31 b(en)478 b(ab)31 b(o)-31 b(v)g(e)477 b(will)h(generally)f(w)
+-31 b(ork)477 b(without)h(mo)31 b(di\257cation;)533 b(ho)-31
+b(w)g(ev)g(er,)505 b(if)477 b(the)0 35634 y(system)440
+b(includes)g(m)-31 b(ultiple)442 b Fv(MPI)d Fx(implemen)-31
+b(tations,)462 b(then)440 b(certain)h(con\257gure)f(script-related)g
+(options)i(ma)-31 b(y)0 36963 y(b)31 b(e)508 b(used)g(to)h(indicate)h
+(whic)-31 b(h)509 b Fv(MPI)f Fx(implemen)-31 b(tation)513
+b(should)508 b(b)31 b(e)508 b(used.)910 b(Also,)544 b(if)509
+b(the)g(user)e(w)-31 b(an)g(ts)510 b(to)f(use)0 38291
+y(non-default)542 b(language)h(compilers,)584 b(then,)g(again,)i(the)
+540 b(necessary)g(shell)h(en)-31 b(vironmen)g(t)542 b(v)-61
+b(ariables)541 b(m)-31 b(ust)541 b(b)31 b(e)0 39620 y(appropriately)398
+b(rede\257ned.)574 b(The)397 b(remainder)g(of)g(this)f(section)i(pro)
+-31 b(vides)397 b(explanations)h(of)f(a)-31 b(v)-61 b(ailable)400
+b(con\257gure)0 40948 y(script)369 b(options.)0 44026
+y Fq(General)499 b(options)p Black Black 0 46069 a Fu(--prefix=PREFIX)
+2214 47817 y Fx(Lo)31 b(cation)371 b(for)e(arc)-31 b(hitecture-indep)31
+b(enden)-31 b(t)371 b(\257les.)2214 49564 y(Default:)494
+b Fu(PREFIX=)p Fo(build)p 13022 49564 V 408 w(tr)-57
+b(e)g(e)p Black Black 0 51711 a Fu(--includedir=DIR)2214
+53459 y Fx(Alternate)371 b(lo)31 b(cation)371 b(for)e(installation)k
+(of)d(header)f(\257les.)2214 55206 y(Default:)494 b Fu
+(DIR=PREFIX/include)p Black Black 0 57353 a(--libdir=DIR)2214
+59101 y Fx(Alternate)371 b(lo)31 b(cation)371 b(for)e(installation)k
+(of)d(libraries.)2214 60848 y(Default:)494 b Fu(DIR=PREFIX/lib)p
+Black Black 0 62995 a(--disable-examples)2214 64743 y
+Fx(All)305 b(a)-31 b(v)-61 b(ailable)306 b(example)f(programs)f(are)g
+(automatically)k(built)d(unless)e(this)h(option)i(is)d(giv)-31
+b(en.)472 b(The)304 b(example)2214 66071 y(executables)370
+b(are)f(stored)g(under)g(the)g(follo)-31 b(wing)373 b(sub)31
+b(directories)369 b(of)h(the)f(asso)31 b(ciated)370 b(solv)-31
+b(er:)p Black Black 2214 68416 a Fo(build)p 4573 68416
+V 408 w(tr)-57 b(e)g(e)p Fx(/)p Fo(solver)p Fx(/)p Fu(examples)p
+15263 68416 349 45 v 420 w(ser)370 b Fx(:)492 b(serial)370
+b Fv(C)f Fx(examples)p Black Black 2214 70342 a Fo(build)p
+4573 70342 340 45 v 408 w(tr)-57 b(e)g(e)p Fx(/)p Fo(solver)p
+Fx(/)p Fu(examples)p 15263 70342 349 45 v 420 w(par)370
+b Fx(:)492 b(parallel)371 b Fv(C)e Fx(examples)i(\()p
+Fv(MPI)p Fx(-enabled\))p Black Black 2214 72268 a Fo(build)p
+4573 72268 340 45 v 408 w(tr)-57 b(e)g(e)p Fx(/)p Fo(solver)p
+Fx(/)p Fu(fcmix)p Fx(/)p Fu(examples)p 18721 72268 349
+45 v 422 w(ser)369 b Fx(:)493 b(serial)369 b Fv(F)-32
+b(or)-74 b(tran)368 b Fx(examples)p Black Black 2214
+74194 a Fo(build)p 4573 74194 340 45 v 408 w(tr)-57 b(e)g(e)p
+Fx(/)p Fo(solver)p Fx(/)p Fu(fcmix)p Fx(/)p Fu(examples)p
+18721 74194 349 45 v 422 w(par)369 b Fx(:)493 b(parallel)371
+b Fv(F)-32 b(or)-74 b(tran)367 b Fx(examples)j(\()p Fv(MPI)p
+Fx(-enabled\))2214 76539 y Fo(Note)p Fx(:)479 b(Some)345
+b(of)g(these)f(sub)31 b(directories)343 b(ma)-31 b(y)346
+b(not)e(exist)h(dep)31 b(ending)344 b(up)31 b(on)344
+b(the)h(solv)-31 b(er)344 b(and/or)h(the)f(con\257g-)2214
+77867 y(uration)370 b(options)h(giv)-31 b(en.)p Black
+Black eop
+%%Page: 7 15
+7 14 bop Black 4000 2701 a Fy(2.2)425 b(Con\257guration)i(options)33202
+b(7)p 4000 3144 48001 45 v Black Black Black 16443 17644
+a Fx(T)-92 b(able)370 b(2.1:)494 b(SUNDIALS)369 b(libraries)h(and)f
+(header)g(\257les)p Black 7811 18463 40378 45 v 7789
+19791 45 1329 v 8475 19393 a Fy(Mo)35 b(dule)p 19102
+19791 V 7084 w(Libraries)p 36540 19791 V 12505 w(Header)425
+b(\257les)p 48167 19791 V 7811 19835 40378 45 v 7789
+21164 45 1329 v 8475 20765 a Fv(shared)p 19102 21164
+V 7474 w Fu(libsundials)p 26250 20765 349 45 v 420 w(shared.)p
+Fn(lib)p 36540 21164 45 1329 v 4817 w Fu(sundialstypes.h)p
+48167 21164 V 7789 22492 V 19102 22492 V 36540 22492
+V 37227 22094 a(sundialsmath.h)p 48167 22492 V 7789 23820
+V 19102 23820 V 36540 23820 V 37227 23422 a(sundials)p
+41945 23422 349 45 v 419 w(config.h)p 48167 23820 45
+1329 v 7789 25149 V 19102 25149 V 36540 25149 V 37227
+24750 a(dense.h)p 48167 25149 V 7789 26477 V 19102 26477
+V 36540 26477 V 37227 26079 a(smalldense.h)p 48167 26477
+V 7789 27805 V 19102 27805 V 36540 27805 V 37227 27407
+a(band.h)p 48167 27805 V 7789 29134 V 19102 29134 V 36540
+29134 V 37227 28735 a(spgmr.h)p 48167 29134 V 7789 30462
+V 19102 30462 V 36540 30462 V 37227 30064 a(iterative.h)p
+48167 30462 V 7789 31790 V 19102 31790 V 36540 31790
+V 37227 31392 a(nvector.h)p 48167 31790 V 7811 31835
+40378 45 v 7789 33163 45 1329 v 8475 32765 a Fv(nvector)p
+13202 32765 368 45 v 441 w(serial)p 19102 33163 45 1329
+v 2846 w Fu(libsundials)p 26250 32765 349 45 v 420 w(nvecserial.)p
+Fn(lib)p 36540 33163 45 1329 v 2493 w Fu(nvector)p 41364
+32765 349 45 v 419 w(serial.h)p 48167 33163 45 1329 v
+7789 34491 V 19102 34491 V 19789 34093 a(libsundials)p
+26250 34093 349 45 v 420 w(fnvecserial.a)p 36540 34491
+45 1329 v 48167 34491 V 7811 34536 40378 45 v 7789 35864
+45 1329 v 8475 35466 a Fv(nvector)p 13202 35466 368 45
+v 441 w(p)-74 b(arallel)p 19102 35864 45 1329 v 1330
+w Fu(libsundials)p 26250 35466 349 45 v 420 w(nvecparallel.)p
+Fn(lib)p 36540 35864 45 1329 v 1331 w Fu(nvector)p 41364
+35466 349 45 v 419 w(parallel.h)p 48167 35864 45 1329
+v 7789 37192 V 19102 37192 V 19789 36794 a(libsundials)p
+26250 36794 349 45 v 420 w(fnvecparallel.a)p 36540 37192
+45 1329 v 48167 37192 V 7811 37237 40378 45 v 7789 38565
+45 1329 v 8475 38167 a Fv(cv)-25 b(ode)p 19102 38565
+V 7994 w Fu(libsundials)p 26250 38167 349 45 v 420 w(cvode.)p
+Fn(lib)p 36540 38565 45 1329 v 5398 w Fu(cvode.h)p 48167
+38565 V 7789 39893 V 19102 39893 V 19789 39495 a(libsundials)p
+26250 39495 349 45 v 420 w(fcvode.a)p 36540 39893 45
+1329 v 5979 w(cvdense.h)p 48167 39893 V 7789 41222 V
+19102 41222 V 36540 41222 V 37227 40823 a(cvband.h)p
+48167 41222 V 7789 42550 V 19102 42550 V 36540 42550
+V 37227 42152 a(cvdiag.h)p 48167 42550 V 7789 43878 V
+19102 43878 V 36540 43878 V 37227 43480 a(cvspgmr.h)p
+48167 43878 V 7789 45207 V 19102 45207 V 36540 45207
+V 37227 44808 a(cvbandpre.h)p 48167 45207 V 7789 46535
+V 19102 46535 V 36540 46535 V 37227 46137 a(cvbbdpre.h)p
+48167 46535 V 7811 46579 40378 45 v 7789 47908 45 1329
+v 8475 47509 a Fv(cv)g(odes)p 19102 47908 V 7487 w Fu(libsundials)p
+26250 47509 349 45 v 420 w(cvodes.)p Fn(lib)p 36540 47908
+45 1329 v 4817 w Fu(cvodes.h)p 48167 47908 V 7789 49236
+V 19102 49236 V 36540 49236 V 37227 48838 a(cvodea.h)p
+48167 49236 V 7789 50565 V 19102 50565 V 36540 50565
+V 37227 50166 a(cvdense.h)p 48167 50565 V 7789 51893
+V 19102 51893 V 36540 51893 V 37227 51494 a(cvband.h)p
+48167 51893 V 7789 53221 V 19102 53221 V 36540 53221
+V 37227 52823 a(cvdiag.h)p 48167 53221 V 7789 54550 V
+19102 54550 V 36540 54550 V 37227 54151 a(cvspgmr.h)p
+48167 54550 V 7789 55878 V 19102 55878 V 36540 55878
+V 37227 55479 a(cvbandpre.h)p 48167 55878 V 7789 57206
+V 19102 57206 V 36540 57206 V 37227 56808 a(cvbbdpre.h)p
+48167 57206 V 7811 57251 40378 45 v 7789 58579 45 1329
+v 8475 58180 a Fv(id)g(a)p 19102 58579 V 9634 w Fu(libsundials)p
+26250 58180 349 45 v 420 w(ida.)p Fn(lib)p 36540 58579
+45 1329 v 6560 w Fu(ida.h)p 48167 58579 V 7789 59907
+V 19102 59907 V 36540 59907 V 37227 59509 a(idadense.h)p
+48167 59907 V 7789 61236 V 19102 61236 V 36540 61236
+V 37227 60837 a(idaband.h)p 48167 61236 V 7789 62564
+V 19102 62564 V 36540 62564 V 37227 62165 a(idaspgmr.h)p
+48167 62564 V 7789 63892 V 19102 63892 V 36540 63892
+V 37227 63494 a(idabbdpre.h)p 48167 63892 V 7811 63937
+40378 45 v 7789 65265 45 1329 v 8475 64866 a Fv(kinsol)p
+19102 65265 V 7817 w Fu(libsundials)p 26250 64866 349
+45 v 420 w(kinsol.)p Fn(lib)p 36540 65265 45 1329 v 4817
+w Fu(kinsol.h)p 48167 65265 V 7789 66593 V 19102 66593
+V 19789 66195 a(libsundials)p 26250 66195 349 45 v 420
+w(fkinsol.a)p 36540 66593 45 1329 v 5398 w(kinspgmr.h)p
+48167 66593 V 7789 67922 V 19102 67922 V 36540 67922
+V 37227 67523 a(kinbbdpre.h)p 48167 67922 V 7811 67966
+40378 45 v Black Black Black eop
+%%Page: 8 16
+8 15 bop Black 0 2701 a Fy(8)29838 b(CV)-35 b(ODE)426
+b(Installation)d(Pro)35 b(cedure)p 0 3144 48001 45 v
+Black Black Black 0 6974 a Fu(--disable-)p Fo(solver)2214
+8733 y Fx(Although)503 b(eac)-31 b(h)502 b(existing)h(solv)-31
+b(er)502 b(mo)31 b(dule)503 b(is)e(built)i(b)-31 b(y)502
+b(default,)536 b(supp)31 b(ort)501 b(for)h(a)g(giv)-31
+b(en)503 b(solv)-31 b(er)502 b(can)f(b)31 b(e)2214 10061
+y(explicitly)396 b(disabled)e(using)f(this)h(option.)566
+b(The)393 b(v)-61 b(alid)394 b(v)-61 b(alues)393 b(for)h
+Fo(solver)e Fx(are:)540 b Fu(cvode)p Fx(,)400 b Fu(cvodes)p
+Fx(,)h Fu(ida)p Fx(,)f(and)2214 11389 y Fu(kinsol)p Fx(.)p
+Black Black 0 13548 a Fu(--with-cppflags=ARG)2214 15307
+y Fx(Sp)31 b(ecify)310 b(additional)j Fv(C)d Fx(prepro)31
+b(cessor)308 b(\260ags)i(\(e.g.,)324 b Fu(ARG=-I<include)p
+32065 15307 349 45 v 420 w(dir>)310 b Fx(if)h(necessary)e(header)g
+(\257les)h(are)2214 16635 y(lo)31 b(cated)371 b(in)e(nonstandard)h(lo)
+31 b(cations\).)p Black Black 0 18794 a Fu(--with-cflags=ARG)2214
+20553 y Fx(Sp)g(ecify)370 b(additional)i Fv(C)d Fx(compilation)k
+(\260ags.)p Black Black 0 22712 a Fu(--with-ldflags=ARG)2214
+24471 y Fx(Sp)31 b(ecify)424 b(additional)j(link)-31
+b(er)425 b(\260ags)g(\(e.g.,)439 b Fu(ARG=-L<lib)p 25825
+24471 V 420 w(dir>)425 b Fx(if)f(required)g(libraries)g(are)g(lo)31
+b(cated)425 b(in)g(non-)2214 25799 y(standard)369 b(lo)31
+b(cations\).)p Black Black 0 27958 a Fu(--with-libs=ARG)2214
+29717 y Fx(Sp)g(ecify)579 b(additional)j(libraries)d(to)h(b)31
+b(e)578 b(used)h(\(e.g.,)633 b Fu(ARG=-l<foo>)580 b Fx(to)g(link)g
+(with)g(the)f(library)g(named)2214 31045 y Fu(libfoo.a)370
+b Fx(or)f Fu(libfoo.so)p Fx(\).)p Black Black 0 33204
+a Fu(--with-precision=ARG)2214 34963 y Fx(By)469 b(default,)496
+b Fv(sundials)468 b Fx(will)j(de\257ne)d(a)i(real)f(n)-31
+b(um)g(b)31 b(er)469 b(\(in)-31 b(ternally)472 b(referred)467
+b(to)j(as)f Fu(realtype)p Fx(\))h(to)g(b)31 b(e)469 b(a)2214
+36291 y(double-precision)421 b(\260oating-p)31 b(oin)-31
+b(t)423 b(n)-31 b(umeric)420 b(data)h(t)-31 b(yp)31 b(e)420
+b(\()p Fu(double)h Fv(C)p Fx(-t)-31 b(yp)31 b(e\);)446
+b(ho)-31 b(w)g(ev)g(er,)434 b(this)420 b(option)i(ma)-31
+b(y)2214 37619 y(b)31 b(e)435 b(used)f(to)i(build)g Fv(sundials)f
+Fx(with)h Fu(realtype)h Fx(alternativ)-31 b(ely)438 b(de\257ned)d(as)g
+(a)h(single-precision)h(\260oating-)2214 38948 y(p)31
+b(oin)-31 b(t)370 b(n)-31 b(umeric)370 b(data)g(t)-31
+b(yp)31 b(e)370 b(\()p Fu(float)g Fv(C)p Fx(-t)-31 b(yp)31
+b(e\))371 b(if)e Fu(ARG=single)p Fx(,)i(or)e(as)g(a)h
+Fu(long)582 b(double)370 b Fv(C)p Fx(-t)-31 b(yp)31 b(e)369
+b(if)2214 40276 y Fu(ARG=extended)p Fx(.)2214 42035 y(Default:)494
+b Fu(ARG=double)0 45123 y Fq(Options)500 b(for)e(F)-125
+b(ortran)501 b(supp)42 b(ort)p Black Black 0 47166 a
+Fu(--disable-f77)2214 48925 y Fx(Using)469 b(this)h(option)g(will)h
+(disable)e(all)h Fv(F)-32 b(or)-74 b(tran)468 b Fx(supp)31
+b(ort.)791 b(The)469 b Fv(f)-25 b(cv)g(ode)p Fx(,)495
+b Fv(fkinsol)467 b Fx(and)i Fv(fnvector)2214 50253 y
+Fx(mo)31 b(dules)370 b(will)h(not)f(b)31 b(e)368 b(built)j(regardless)d
+(of)i(a)-31 b(v)-61 b(ailabilit)-31 b(y)-92 b(.)p Black
+Black 0 52412 a Fu(--with-fflags=ARG)2214 54171 y Fx(Sp)31
+b(ecify)370 b(additional)i Fv(F)-32 b(or)-74 b(tran)367
+b Fx(compilation)373 b(\260ags.)0 56109 y(The)260 b(con\257guration)i
+(script)e(will)h(attempt)h(to)f(automatically)k(determine)260
+b(the)g(function)i(name)e(mangling)j(sc)-31 b(heme)0
+57437 y(required)344 b(b)-31 b(y)345 b(the)f(sp)31 b(eci\257ed)344
+b Fv(F)-32 b(or)-74 b(tran)343 b Fx(compiler,)351 b(but)344
+b(the)h(follo)-31 b(wing)348 b(t)-31 b(w)g(o)346 b(options)g(ma)-31
+b(y)346 b(b)31 b(e)343 b(used)h(to)h(o)-31 b(v)g(erride)0
+58765 y(the)369 b(default)i(b)31 b(eha)-31 b(vior.)p
+Black Black 0 60703 a Fu(--with-f77underscore=ARG)2214
+62461 y Fx(This)430 b(option)g(p)31 b(ertains)430 b(to)g(the)f
+Fv(fkinsol)p Fx(,)443 b Fv(f)-25 b(cv)g(ode)430 b Fx(and)g
+Fv(fnvector)f(F)-32 b(or)-74 b(tran)p Fx(-)p Fv(C)428
+b Fx(in)-31 b(terface)430 b(mo)31 b(dules)2214 63790
+y(and)460 b(is)h(used)e(to)i(sp)31 b(ecify)461 b(the)f(n)-31
+b(um)g(b)31 b(er)461 b(of)g(underscores)d(to)j(app)31
+b(end)461 b(to)g(function)h(names)e(so)g Fv(F)-32 b(or)-74
+b(tran)2214 65118 y Fx(routines)483 b(can)h(prop)31 b(erly)483
+b(link)h(with)g(the)g(asso)31 b(ciated)484 b Fv(sundials)e
+Fx(libraries.)835 b(V)-92 b(alid)485 b(v)-61 b(alues)483
+b(for)g Fu(ARG)g Fx(are:)2214 66447 y Fu(none)p Fx(,)370
+b Fu(one)f Fx(and)h Fu(two)p Fx(.)2214 68205 y(Default:)494
+b Fu(ARG=one)p Black Black 0 70364 a(--with-f77case=ARG)2214
+72123 y Fx(Use)342 b(this)h(option)h(to)f(sp)31 b(ecify)342
+b(whether)h(the)f(external)i(names)e(of)h(the)g Fv(fkinsol)p
+Fx(,)j Fv(f)-25 b(cv)g(ode)343 b Fx(and)g Fv(fnvector)2214
+73451 y(F)-32 b(or)-74 b(tran)p Fx(-)p Fv(C)497 b Fx(in)-31
+b(terface)500 b(functions)f(should)g(b)31 b(e)498 b(lo)-31
+b(w)g(ercase)500 b(or)f(upp)31 b(ercase)497 b(so)i Fv(F)-32
+b(or)-74 b(tran)497 b Fx(routines)i(can)2214 74780 y(prop)31
+b(erly)522 b(link)g(with)h(the)f(asso)31 b(ciated)523
+b Fv(sundials)e Fx(libraries.)951 b(V)-92 b(alid)523
+b(v)-61 b(alues)522 b(for)g Fu(ARG)g Fx(are:)797 b Fu(lower)523
+b Fx(and)2214 76108 y Fu(upper)p Fx(.)2214 77867 y(Default:)494
+b Fu(ARG=lower)p Black Black eop
+%%Page: 9 17
+9 16 bop Black 4000 2701 a Fy(2.2)425 b(Con\257guration)i(options)33202
+b(9)p 4000 3144 48001 45 v Black 4000 6974 a Fq(Options)500
+b(for)e(MPI)f(supp)42 b(ort)4000 9205 y Fx(The)369 b(follo)-31
+b(wing)373 b(con\257guration)f(options)e(are)f(only)h(applicable)i(to)e
+(the)f(parallel)i Fv(sundials)d Fx(pac)-31 b(k)-61 b(ages:)p
+Black Black 4000 11357 a Fu(--disable-mpi)6214 13330
+y Fx(Using)370 b(this)f(option)i(will)g(completely)h(disable)e
+Fv(MPI)e Fx(supp)31 b(ort.)p Black Black 4000 15703 a
+Fu(--with-mpicc=ARG)p Black Black 4000 18076 a(--with-mpif77=ARG)6214
+20049 y Fx(By)349 b(default,)355 b(the)349 b(con\257guration)i(utilit)
+-31 b(y)352 b(script)d(will)i(use)d(the)h Fv(MPI)g Fx(compiler)h
+(scripts)e(named)i Fu(mpicc)g Fx(and)6214 21377 y Fu(mpif77)324
+b Fx(to)f(compile)i(the)e(parallelized)j Fv(sundials)c
+Fx(subroutines;)339 b(ho)-31 b(w)g(ev)g(er,)334 b(for)323
+b(reasons)f(of)i(compatibilit)-31 b(y)-92 b(,)6214 22705
+y(di\256eren)-31 b(t)412 b(executable)h(names)f(ma)-31
+b(y)413 b(b)31 b(e)412 b(sp)31 b(eci\257ed)411 b(via)i(the)f(ab)31
+b(o)-31 b(v)g(e)413 b(options.)622 b(Also,)424 b Fu(ARG=no)412
+b Fx(can)g(b)31 b(e)411 b(used)6214 24034 y(to)394 b(disable)g(the)g
+(use)e(of)i Fv(MPI)f Fx(compiler)h(scripts,)400 b(th)-31
+b(us)393 b(causing)h(the)g(serial)f Fv(C)h Fx(and)f Fv(F)-32
+b(or)-74 b(tran)392 b Fx(compilers)6214 25362 y(to)370
+b(b)31 b(e)369 b(used)f(to)i(compile)h(the)e(parallelized)j
+Fv(sundials)c Fx(functions)i(and)g(examples.)p Black
+Black 4000 27735 a Fu(--with-mpi-root=MPIDIR)6214 29708
+y Fx(This)496 b(option)i(ma)-31 b(y)497 b(b)31 b(e)495
+b(used)g(to)i(sp)31 b(ecify)496 b(whic)-31 b(h)497 b
+Fv(MPI)e Fx(implemen)-31 b(tation)500 b(should)c(b)31
+b(e)495 b(used.)872 b(The)496 b Fv(sun-)6214 31036 y(dials)430
+b Fx(con\257guration)i(script)f(will)h(automatically)j(c)-31
+b(hec)g(k)431 b(under)f(the)h(sub)31 b(directories)430
+b Fu(MPIDIR/include)6214 32365 y Fx(and)510 b Fu(MPIDIR/lib)h
+Fx(for)e(the)h(necessary)f(header)g(\257les)g(and)h(libraries.)914
+b(The)510 b(sub)31 b(directory)510 b Fu(MPIDIR/bin)6214
+33693 y Fx(will)558 b(also)f(b)31 b(e)555 b(searc)-31
+b(hed)556 b(for)g(the)g Fv(C)g Fx(and)g Fv(F)-32 b(or)-74
+b(tran)555 b(MPI)g Fx(compiler)i(scripts,)603 b(unless)556
+b(the)g(user)f(uses)6214 35021 y Fu(--with-mpicc=no)371
+b Fx(or)e Fu(--with-mpif77=no)p Fx(.)p Black Black 4000
+37394 a Fu(--with-mpi-incdir=INCDIR)p Black Black 4000
+39767 a(--with-mpi-libdir=LIBDIR)p Black Black 4000 42140
+a(--with-mpi-libs=LIBS)6214 44113 y Fx(These)491 b(options)h(ma)-31
+b(y)493 b(b)31 b(e)490 b(used)h(if)g(the)h(user)e(w)-31
+b(ould)492 b(prefer)e(not)i(to)g(use)f(a)g(preexisting)h
+Fv(MPI)f Fx(compiler)6214 45442 y(script,)331 b(but)322
+b(instead)g(w)-31 b(ould)322 b(rather)g(use)e(a)i(serial)f(complier)i
+(and)e(pro)-31 b(vide)322 b(the)g(\260ags)g(necessary)e(to)i(compile)
+6214 46770 y(the)369 b Fv(MPI)p Fx(-a)-31 b(w)g(are)370
+b(subroutines)g(in)f Fv(sundials)p Fx(.)6214 48743 y(Often)427
+b(an)g Fv(MPI)f Fx(implemen)-31 b(tation)431 b(will)d(ha)-31
+b(v)g(e)428 b(unique)f(library)g(names)g(and)g(so)g(it)g(ma)-31
+b(y)428 b(b)31 b(e)426 b(necessary)g(to)6214 50071 y(sp)31
+b(ecify)369 b(the)h(appropriate)g(libraries)g(to)g(use)e(\(e.g.,)k
+Fu(LIBS=-lmpich)p Fx(\).)6214 52044 y(Default:)494 b
+Fu(INCDIR=MPIDIR/include)p Fx(,)372 b Fu(LIBDIR=MPIDIR/lib)g
+Fx(and)d Fu(LIBS=-lmpi)p Black Black 4000 54417 a(--with-mpi-flags=ARG)
+6214 56390 y Fx(Sp)31 b(ecify)370 b(additional)i Fv(MPI)p
+Fx(-sp)31 b(eci\257c)368 b(\260ags.)4000 60025 y Fq(Options)500
+b(for)e(library)i(supp)42 b(ort)4000 62256 y Fx(By)485
+b(default,)517 b(only)486 b(static)h(libraries)f(are)f(built,)516
+b(but)485 b(the)h(follo)-31 b(wing)489 b(option)e(ma)-31
+b(y)487 b(b)31 b(e)485 b(used)f(to)i(build)g(shared)4000
+63584 y(libraries)370 b(on)f(supp)31 b(orted)369 b(platforms.)p
+Black Black 4000 65736 a Fu(--enable-shared)6214 67709
+y Fx(Using)g(this)h(particular)g(option)h(will)f(result)f(in)h(b)31
+b(oth)369 b(static)h(and)g(shared)e(v)-31 b(ersions)369
+b(of)g(the)h(a)-31 b(v)-61 b(ailable)371 b Fv(sun-)6214
+69037 y(dials)304 b Fx(libraries)h(b)31 b(eing)305 b(built)g(if)g(the)g
+(system)g(supp)31 b(orts)303 b(shared)h(libraries.)472
+b(T)-92 b(o)305 b(build)g(only)g(shared)f(libraries)6214
+70365 y(also)370 b(sp)31 b(ecify)369 b Fu(--disable-static)p
+Fx(.)6214 72338 y Fo(Note)p Fx(:)740 b(The)494 b Fv(f)-25
+b(cv)g(ode)494 b Fx(and)f Fv(fkinsol)f Fx(libraries)h(can)h(only)g(b)31
+b(e)493 b(built)h(as)f(static)i(libraries)f(b)31 b(ecause)492
+b(they)6214 73667 y(con)-31 b(tain)415 b(references)d(to)i(externally)h
+(de\257ned)e(sym)-31 b(b)31 b(ols,)425 b(namely)415 b(user-supplied)e
+Fv(F)-32 b(or)-74 b(tran)411 b Fx(subroutines.)6214 74995
+y(Although)471 b(the)f Fv(F)-32 b(or)-74 b(tran)467 b
+Fx(in)-31 b(terfaces)470 b(to)g(the)g(serial)g(and)f(parallel)i
+(implemen)-31 b(tations)473 b(of)d(the)f(supplied)6214
+76323 y Fv(nvector)353 b Fx(mo)31 b(dule)353 b(do)g(not)h(con)-31
+b(tain)355 b(an)-31 b(y)353 b(unresolv)-61 b(able)353
+b(external)h(sym)-31 b(b)31 b(ols,)358 b(the)353 b(libraries)g(are)f
+(still)j(built)6214 77652 y(as)369 b(static)i(libraries)e(for)g(the)h
+(purp)31 b(ose)368 b(of)i(consistency)-92 b(.)p Black
+Black eop
+%%Page: 10 18
+10 17 bop Black 0 2701 a Fy(10)29202 b(CV)-35 b(ODE)426
+b(Installation)d(Pro)35 b(cedure)p 0 3144 48001 45 v
+Black 0 6974 a Fq(Options)500 b(for)e(cross-compilation)0
+9017 y Fx(If)340 b(the)h Fv(sundials)f Fx(suite)h(will)i(b)31
+b(e)340 b(cross-compiled)h(\(meaning)i(the)e(build)h(pro)31
+b(cedure)339 b(will)k(not)e(b)31 b(e)340 b(completed)j(on)0
+10345 y(the)353 b(actual)h(destination)g(system,)j(but)352
+b(rather)g(on)h(an)f(alternate)j(system)d(with)i(a)e(di\256eren)-31
+b(t)353 b(arc)-31 b(hitecture\))354 b(then)0 11674 y(the)369
+b(follo)-31 b(wing)373 b(t)-31 b(w)g(o)371 b(options)g(should)e(b)31
+b(e)369 b(used:)p Black Black 0 13624 a Fu(--build=BUILD)2214
+15395 y Fx(This)515 b(particular)h(option)g(is)e(used)g(to)h(sp)31
+b(ecify)515 b(the)g(canonical)h(system/platform)i(name)d(for)f(the)h
+(build)2214 16723 y(system.)p Black Black 0 18894 a Fu(--host=HOST)2214
+20665 y Fx(If)352 b(cross-compiling,)358 b(then)352 b(the)h(user)e(m)
+-31 b(ust)353 b(use)e(this)i(option)h(to)f(sp)31 b(ecify)352
+b(the)h(canonical)h(system/platform)2214 21994 y(name)370
+b(for)f(the)h(destination)h(system.)0 25092 y Fq(En)-42
+b(vironmen)g(t)500 b(v)-83 b(ariables)0 27136 y Fx(The)433
+b(follo)-31 b(wing)437 b(en)-31 b(vironmen)g(t)435 b(v)-61
+b(ariables)434 b(can)f(b)31 b(e)433 b(lo)31 b(cally)435
+b(\(re\)de\257ned)f(for)f(use)f(during)i(the)f(con\257guration)i(of)0
+28464 y Fv(sundials)p Fx(.)492 b(See)369 b(the)g(next)h(section)g(for)f
+(illustrations)j(of)d(these.)p Black Black 0 30414 a
+Fu(CC)p Black Black 0 32585 a(F77)2214 34356 y Fx(Since)473
+b(the)g(con\257guration)i(script)e(uses)f(the)i(\257rst)e
+Fv(C)h Fx(and)g Fv(F)-32 b(or)-74 b(tran)471 b Fx(compilers)j(found)g
+(in)f(the)g(curren)-31 b(t)2214 35684 y(executable)267
+b(searc)-31 b(h)265 b(path,)288 b(then)266 b(eac)-31
+b(h)266 b(relev)-61 b(an)-31 b(t)266 b(shell)g(v)-61
+b(ariable)267 b(\()p Fu(CC)f Fx(and)g Fu(F77)p Fx(\))g(m)-31
+b(ust)267 b(b)31 b(e)265 b(lo)31 b(cally)268 b(\(re\)de\257ned)2214
+37013 y(in)535 b(order)f(to)h(use)f(a)g(di\256eren)-31
+b(t)535 b(compiler.)990 b(F)-92 b(or)534 b(example,)577
+b(to)536 b(use)d Fu(xcc)i Fx(\(executable)i(name)e(of)g(c)-31
+b(hosen)2214 38341 y(compiler\))371 b(as)e(the)g Fv(C)h
+Fx(language)h(compiler,)g(use)d Fu(CC=xcc)i Fx(in)g(the)f(con\257gure)h
+(step.)p Black Black 0 40512 a Fu(CFLAGS)p Black Black
+0 42683 a(FFLAGS)2214 44455 y Fx(Use)f(these)g(en)-31
+b(vironmen)g(t)371 b(v)-61 b(ariables)370 b(to)g(o)-31
+b(v)g(erride)369 b(the)h(default)g Fv(C)g Fx(and)f Fv(F)-32
+b(or)-74 b(tran)368 b Fx(compilation)k(\260ags.)0 48115
+y Fs(2.3)1793 b(Con\257guration)598 b(examples)0 50540
+y Fx(The)369 b(follo)-31 b(wing)373 b(examples)d(are)g(mean)-31
+b(t)370 b(to)g(help)g(demonstrate)g(prop)31 b(er)368
+b(usage)i(of)g(the)f(con\257gure)g(options:)p Black Black
+0 52975 a Fu(\045)581 b(configure)i(CC=gcc)f(F77=g77)g
+(--with-cflags=-g3)i(--with-fflags=-g3)f(\\)6974 54303
+y(--with-mpicc=/usr/apps/mpich/1.2.4/bin/mpicc)k(\\)6974
+55632 y(--with-mpif77=/usr/apps/mpich/1.2.4/bin/mpif77)0
+58067 y Fx(The)354 b(ab)31 b(o)-31 b(v)g(e)354 b(example)h(builds)f
+Fv(sundials)f Fx(using)g Fu(gcc)h Fx(as)f(the)h(serial)g
+Fv(C)f Fx(compiler,)359 b Fu(g77)353 b Fx(as)h(the)g(serial)f
+Fv(F)-32 b(or)-74 b(tran)0 59395 y Fx(compiler,)347 b
+Fu(mpicc)339 b Fx(as)g(the)h(parallel)g Fv(C)f Fx(compiler,)347
+b Fu(mpif77)340 b Fx(as)f(the)g(parallel)i Fv(F)-32 b(or)-74
+b(tran)337 b Fx(compiler,)347 b(and)339 b(app)31 b(ends)0
+60724 y(the)369 b Fu(-g3)h Fx(compilaton)i(\260ag)e(to)g(the)f(list)i
+(of)e(default)i(\260ags.)p Black Black 0 63159 a Fu(\045)581
+b(configure)i(CC=gcc)f(--disable-examples)i(--with-mpicc=no)f(\\)6974
+64488 y(--with-mpi-root=/usr/apps/mpich/1.2.4)j(\\)6974
+65816 y(--with-mpi-libs=-lmpich)0 68251 y Fx(This)372
+b(example)i(again)f(builds)g Fv(sundials)e Fx(using)h
+Fu(gcc)g Fx(as)g(the)h(serial)f Fv(C)g Fx(compiler,)i(but)f(the)f
+Fu(--with-mpicc=no)0 69580 y Fx(option)527 b(explicitly)h(disables)e
+(the)g(use)f(of)h(the)g(corresp)31 b(onding)526 b Fv(MPI)e
+Fx(compiler)j(script.)962 b(In)525 b(addition,)567 b(since)0
+70908 y(the)464 b Fu(--with-mpi-root)h Fx(option)g(is)e(giv)-31
+b(en,)488 b(the)464 b(compilation)j(\260ags)c Fu
+(-I/usr/apps/mpich/1.2.4/include)0 72236 y Fx(and)331
+b Fu(-L/usr/apps/mpich/1.2.4/lib)j Fx(are)d(passed)f(to)h
+Fu(gcc)g Fx(when)f(compiling)k(the)c Fv(MPI)p Fx(-enabled)h(functions.)
+0 73565 y(The)405 b Fu(--disable-examples)i Fx(option)f(disables)g(the)
+f(examples)g(\(whic)-31 b(h)406 b(means)f(a)g Fv(F)-32
+b(or)-74 b(tran)404 b Fx(compiler)h(is)g(not)0 74893
+y(required\).)487 b(The)354 b Fu(--with-mpi-libs)h Fx(option)h(is)d
+(still)i(needed)e(so)g(that)i(the)e(con\257gure)h(script)f(can)h(c)-31
+b(hec)g(k)354 b(if)g Fu(gcc)0 76221 y Fx(can)369 b(link)i(with)f(the)f
+(appropriate)i Fv(MPI)d Fx(library)i(as)f Fu(-lmpi)h
+Fx(is)f(the)h(in)-31 b(ternal)370 b(default.)p Black
+Black eop
+%%Page: 11 19
+11 18 bop Black Black 4000 15276 a Ft(Chapter)861 b(3)4000
+20811 y Fw(Mathematical)1033 b(Considerations)4000 26567
+y Fv(cv)-25 b(ode)437 b Fx(solv)-31 b(es)436 b(ODE)f(initial)k(v)-61
+b(alue)436 b(problems)h(\(IVPs\))f(in)g(real)h Fm(N)121
+b Fx(-space,)453 b(whic)-31 b(h)437 b(w)-31 b(e)436 b(write)h(in)f(the)
+g(abstract)4000 27895 y(form)22106 29224 y(_)-506 b Fm(y)347
+b Fx(=)308 b Fm(f)119 b Fx(\()p Fm(t;)184 b(y)40 b Fx(\))184
+b Fm(;)1294 b(y)40 b Fx(\()p Fm(t)30159 29390 y Fl(0)30655
+29224 y Fx(\))308 b(=)f Fm(y)33104 29390 y Fl(0)33785
+29224 y Fm(;)15633 b Fx(\(3.1\))4000 31131 y(where)370
+b Fm(y)348 b Fp(2)309 b Fy(R)10095 30645 y Fk(N)10934
+31131 y Fx(.)495 b(Here)370 b(w)-31 b(e)371 b(use)568
+b(_)-506 b Fm(y)409 b Fx(to)371 b(denote)g Fm(dy)40 b(=dt)p
+Fx(.)495 b(While)370 b(w)-31 b(e)371 b(use)e Fm(t)h Fx(to)h(denote)f
+(the)h(indep)31 b(enden)-31 b(t)370 b(v)-61 b(ariable,)4000
+32459 y(and)477 b(usually)h(this)f(is)g(time,)506 b(it)477
+b(certainly)i(need)d(not)i(b)31 b(e.)815 b Fv(cv)-25
+b(ode)478 b Fx(solv)-31 b(es)477 b(b)31 b(oth)478 b(sti\256)f(and)g
+(nonsti\256)g(systems.)4000 33788 y(Roughly)417 b(sp)31
+b(eaking,)429 b(sti\256ness)416 b(is)g(c)-31 b(haracterized)417
+b(b)-31 b(y)416 b(the)h(presence)e(of)h(at)h(least)g(one)f(rapidly)h
+(damp)31 b(ed)417 b(mo)31 b(de,)4000 35116 y(whose)370
+b(time)g(constan)-31 b(t)371 b(is)e(small)h(compared)g(to)g(the)g(time)
+g(scale)g(of)f(the)h(solution)h(itself.)4000 38752 y
+Fs(3.1)1793 b(IVP)598 b(solution)4000 41177 y Fx(The)338
+b(metho)31 b(ds)338 b(used)f(in)g Fv(cv)-25 b(ode)338
+b Fx(are)g(v)-61 b(ariable-order,)345 b(v)-61 b(ariable-step)338
+b(m)-31 b(ultistep)340 b(metho)31 b(ds,)344 b(based)338
+b(on)f(form)-31 b(ulas)4000 42505 y(of)370 b(the)f(form)19743
+43256 y Fk(K)20487 43367 y Fr(1)19531 43600 y Fj(X)19614
+45958 y Fk(i)p Fl(=0)21315 44652 y Fm(\256)22023 44818
+y Fk(n;i)23201 44652 y Fm(y)23784 44195 y Fk(n)p Fi(\241)p
+Fk(i)25637 44652 y Fx(+)246 b Fm(h)27382 44818 y Fk(n)28381
+43256 y(K)29125 43367 y Fr(2)28169 43600 y Fj(X)28252
+45958 y Fk(i)p Fl(=0)29953 44652 y Fm(\257)30579 44818
+y Fk(n;i)31956 44652 y Fx(_)-506 b Fm(y)32340 44195 y
+Fk(n)p Fi(\241)p Fk(i)34255 44652 y Fx(=)307 b(0)184
+b Fm(:)13258 b Fx(\(3.2\))4000 47589 y(Here)405 b(the)i
+Fm(y)9180 47187 y Fk(n)10187 47589 y Fx(are)f(computed)h(appro)-31
+b(ximations)409 b(to)e Fm(y)40 b Fx(\()p Fm(t)27872 47755
+y Fk(n)28474 47589 y Fx(\),)416 b(and)406 b Fm(h)32454
+47755 y Fk(n)33425 47589 y Fx(=)369 b Fm(t)35055 47755
+y Fk(n)35928 47589 y Fp(\241)270 b Fm(t)37459 47755 y
+Fk(n)p Fi(\241)p Fl(1)39600 47589 y Fx(is)406 b(the)g(step)g(size.)603
+b(The)406 b(user)4000 48917 y(of)398 b Fv(cv)-25 b(ode)398
+b Fx(m)-31 b(ust)398 b(c)-31 b(ho)31 b(ose)397 b(appropriately)i(one)f
+(of)g(t)-31 b(w)g(o)399 b(m)-31 b(ultistep)399 b(metho)31
+b(ds.)578 b(F)-92 b(or)396 b(nonsti\256)i(problems,)405
+b Fv(cv)-25 b(ode)4000 50245 y Fx(includes)485 b(the)h(Adams-Moulton)h
+(form)-31 b(ulas)486 b(,)515 b(c)-31 b(haracterized)486
+b(b)-31 b(y)485 b Fm(K)33574 50411 y Fl(1)34571 50245
+y Fx(=)501 b(1)485 b(and)g Fm(K)40179 50411 y Fl(2)41177
+50245 y Fx(=)500 b Fm(q)525 b Fx(ab)31 b(o)-31 b(v)g(e,)516
+b(where)485 b(the)4000 51574 y(order)408 b Fm(q)448 b
+Fx(v)-61 b(aries)408 b(b)31 b(et)-31 b(w)g(een)409 b(1)f(and)h(12.)611
+b(F)-92 b(or)407 b(sti\256)i(problems,)419 b Fv(cv)-25
+b(ode)409 b Fx(includes)f(the)h(Bac)-31 b(kw)g(ard)410
+b(Di\256eren)-31 b(tiation)4000 52902 y(F)-92 b(orm)-31
+b(ulas)309 b(\(BDFs\))g(in)g(so-called)h(\257xed-leading)g(co)31
+b(e\261cien)-31 b(t)311 b(form,)321 b(giv)-31 b(en)310
+b(b)-31 b(y)309 b Fm(K)38010 53068 y Fl(1)38814 52902
+y Fx(=)f Fm(q)348 b Fx(and)309 b Fm(K)43857 53068 y Fl(2)44661
+52902 y Fx(=)f(0,)322 b(with)309 b(order)4000 54230 y
+Fm(q)396 b Fx(v)-61 b(arying)357 b(b)31 b(et)-31 b(w)g(een)358
+b(1)f(and)f(5.)489 b(The)357 b(co)31 b(e\261cien)-31
+b(ts)358 b(are)e(uniquely)i(determined)f(b)-31 b(y)357
+b(the)g(metho)31 b(d)357 b(t)-31 b(yp)31 b(e,)360 b(its)d(order,)4000
+55559 y(the)369 b(recen)-31 b(t)370 b(history)f(of)h(the)g(step)f
+(sizes,)g(and)g(the)h(normalization)j Fm(\256)33062 55725
+y Fk(n;)p Fl(0)34676 55559 y Fx(=)307 b Fp(\241)p Fx(1.)493
+b(See)369 b([4)q(])h(and)f([16)r(].)5660 56887 y(F)-92
+b(or)369 b(either)g(c)-31 b(hoice)370 b(of)g(form)-31
+b(ula,)372 b(the)d(nonlinear)h(system)18317 59180 y Fm(G)p
+Fx(\()p Fm(y)20200 58723 y Fk(n)20802 59180 y Fx(\))308
+b Fp(\264)g Fm(y)23292 58723 y Fk(n)24140 59180 y Fp(\241)246
+b Fm(h)25885 59346 y Fk(n)26487 59180 y Fm(\257)27113
+59346 y Fk(n;)p Fl(0)28420 59180 y Fm(f)119 b Fx(\()p
+Fm(t)29911 59346 y Fk(n)30514 59180 y Fm(;)184 b(y)31588
+58723 y Fk(n)32191 59180 y Fx(\))246 b Fp(\241)g Fm(a)34559
+59346 y Fk(n)35469 59180 y Fx(=)308 b(0)184 b Fm(;)12043
+b Fx(\(3.3\))4000 61473 y(where)352 b Fm(a)7769 61639
+y Fk(n)8679 61473 y Fp(\264)9847 60643 y Fj(P)11016 61806
+y Fk(i>)p Fl(0)12517 61473 y Fx(\()p Fm(\256)13655 61639
+y Fk(n;i)14835 61473 y Fm(y)15418 61072 y Fk(n)p Fi(\241)p
+Fk(i)17236 61473 y Fx(+)212 b Fm(h)18947 61639 y Fk(n)19549
+61473 y Fm(\257)20175 61639 y Fk(n;i)21553 61473 y Fx(_)-506
+b Fm(y)21937 61072 y Fk(n)p Fi(\241)p Fk(i)23544 61473
+y Fx(\),)356 b(m)-31 b(ust)353 b(b)31 b(e)351 b(solv)-31
+b(ed)353 b(\(appro)-31 b(ximately\))356 b(at)d(eac)-31
+b(h)353 b(in)-31 b(tegration)354 b(step.)4000 62802 y(F)-92
+b(or)444 b(this,)465 b Fv(cv)-25 b(ode)445 b Fx(o\256ers)g(the)g(c)-31
+b(hoice)446 b(of)f(either)g Fo(functional)467 b(iter)-57
+b(ation)p Fx(,)465 b(suitable)446 b(only)g(for)f(nonsti\256)g(systems,)
+4000 64130 y(and)369 b(v)-61 b(arious)370 b(v)-31 b(ersions)369
+b(of)h Fo(Newton)395 b(iter)-57 b(ation)p Fx(.)493 b(F)-92
+b(unctional)371 b(iteration,)h(giv)-31 b(en)370 b(b)-31
+b(y)19428 66423 y Fm(y)20011 65966 y Fk(n)p Fl(\()p Fk(m)p
+Fl(+1\))23519 66423 y Fx(=)307 b Fm(h)25325 66589 y Fk(n)25928
+66423 y Fm(\257)26554 66589 y Fk(n;)p Fl(0)27860 66423
+y Fm(f)119 b Fx(\()p Fm(t)29351 66589 y Fk(n)29954 66423
+y Fm(;)184 b(y)31028 65966 y Fk(n)p Fl(\()p Fk(m)p Fl(\))33109
+66423 y Fx(\))246 b(+)g Fm(a)35477 66589 y Fk(n)36264
+66423 y Fm(;)4000 68717 y Fx(in)-31 b(v)g(olv)g(es)371
+b(ev)-61 b(aluations)371 b(of)f Fm(f)488 b Fx(only)-92
+b(.)494 b(In)368 b(con)-31 b(trast,)371 b(Newton)g(iteration)g
+(requires)e(the)g(solution)i(of)f(linear)g(systems)19585
+71010 y Fm(M)121 b Fx([)p Fm(y)21670 70553 y Fk(n)p Fl(\()p
+Fk(m)p Fl(+1\))25116 71010 y Fp(\241)246 b Fm(y)26806
+70553 y Fk(n)p Fl(\()p Fk(m)p Fl(\))28885 71010 y Fx(])308
+b(=)g Fp(\241)p Fm(G)p Fx(\()p Fm(y)33413 70553 y Fk(n)p
+Fl(\()p Fk(m)p Fl(\))35493 71010 y Fx(\))184 b Fm(;)13311
+b Fx(\(3.4\))4000 73303 y(in)369 b(whic)-31 b(h)16262
+74631 y Fm(M)428 b Fp(\274)307 b Fm(I)333 b Fp(\241)246
+b Fm(\260)61 b(J)291 b(;)1292 b(J)414 b Fx(=)307 b Fm(@)61
+b(f)119 b(=@)61 b(y)225 b(;)1292 b Fx(and)1108 b Fm(\260)369
+b Fx(=)307 b Fm(h)36711 74797 y Fk(n)37313 74631 y Fm(\257)37939
+74797 y Fk(n;)p Fl(0)39431 74631 y Fm(:)9987 b Fx(\(3.5\))4000
+76539 y(The)401 b(initial)j(guess)d(for)h(the)f(iteration)j(is)d(a)g
+(predicted)h(v)-61 b(alue)401 b Fm(y)31129 76137 y Fk(n)p
+Fl(\(0\))33266 76539 y Fx(computed)h(explicitly)i(from)e(the)f(a)-31
+b(v)-61 b(ailable)4000 77867 y(history)370 b(data.)494
+b(F)-92 b(or)368 b(the)i(Newton)g(corrections,)g Fv(cv)-25
+b(ode)370 b Fx(pro)-31 b(vides)370 b(a)f(c)-31 b(hoice)370
+b(of)g(four)f(metho)31 b(ds:)p Black Black eop
+%%Page: 12 20
+12 19 bop Black 0 2701 a Fy(12)30377 b(Mathematical)424
+b(Considerations)p 0 3144 48001 45 v Black Black 1660
+6974 a Fp(\262)p Black 554 w Fx(a)370 b(dense)e(direct)i(solv)-31
+b(er)369 b(\(serial)i(v)-31 b(ersion)369 b(only\),)p
+Black 1660 9249 a Fp(\262)p Black 554 w Fx(a)h(band)f(direct)h(solv)-31
+b(er)369 b(\(serial)h(v)-31 b(ersion)370 b(only\),)p
+Black 1660 11524 a Fp(\262)p Black 554 w Fx(a)g(diagonal)i(appro)-31
+b(ximate)372 b(Jacobian)e(solv)-31 b(er,)370 b(or)p Black
+1660 13799 a Fp(\262)p Black 554 w Fv(spgmr)e Fx(=)h(Scaled)h
+(Preconditioned)h(GMRES,)e(without)j(restarts.)0 16059
+y(F)-92 b(or)367 b(large)h(sti\256)f(systems,)h(where)f(direct)h(metho)
+31 b(ds)368 b(are)f(not)h(feasible,)i(the)d(com)-31 b(bination)371
+b(of)d(a)f(BDF)g(in)-31 b(tegrator)0 17387 y(and)527
+b(a)g(preconditioned)h(GMRES)e(algorithm)k(yields)d(a)g(p)31
+b(o)-31 b(w)g(erful)528 b(to)31 b(ol)528 b(b)31 b(ecause)527
+b(it)g(com)-31 b(bines)528 b(established)0 18716 y(metho)31
+b(ds)534 b(for)g(sti\256)g(in)-31 b(tegration,)578 b(nonlinear)534
+b(iteration,)578 b(and)534 b(Krylo)-31 b(v)534 b(\(linear\))i
+(iteration)f(with)g(a)f(problem-)0 20044 y(sp)31 b(eci\257c)304
+b(treatmen)-31 b(t)307 b(of)e(the)g(dominan)-31 b(t)307
+b(source)d(of)h(sti\256ness,)317 b(in)305 b(the)g(form)g(of)h(the)f
+(user-supplied)f(preconditioner)0 21372 y(matrix)371
+b([2)q(].)1660 22716 y(In)433 b(the)h(pro)31 b(cess)432
+b(of)i(con)-31 b(trolling)436 b(errors)c(at)i(v)-61 b(arious)433
+b(lev)-31 b(els,)451 b Fv(cv)-25 b(ode)434 b Fx(uses)e(a)i(w)-31
+b(eigh)g(ted)435 b(ro)31 b(ot-mean-square)0 24044 y(norm,)443
+b(denoted)428 b Fp(k)286 b(\242)f(k)9498 24210 y Fl(WRMS)12374
+24044 y Fx(,)443 b(for)427 b(all)i(error-lik)-31 b(e)428
+b(quan)-31 b(tities.)671 b(The)428 b(w)-31 b(eigh)g(ts)429
+b(used)e(are)h(based)f(on)h(the)g(curren)-31 b(t)0 25373
+y(solution)371 b(and)e(on)h(the)f(relativ)-31 b(e)371
+b(and)f(absolute)g(tolerances)g(input)g(b)-31 b(y)370
+b(the)f(user,)g(namely)17760 27839 y Fm(W)18805 28005
+y Fk(i)19482 27839 y Fx(=)307 b Fv(r)-74 b(tol)246 b
+Fp(\242)h(j)p Fm(y)24819 28005 y Fk(i)25187 27839 y Fp(j)g
+Fx(+)f Fv(a)-74 b(tol)29379 28005 y Fk(i)29932 27839
+y Fm(:)15486 b Fx(\(3.6\))0 30305 y(Because)460 b Fm(W)5370
+30471 y Fk(i)6198 30305 y Fx(represen)-31 b(ts)459 b(a)h(tolerance)h
+(in)f(the)g(comp)31 b(onen)-31 b(t)461 b Fm(y)27016 30471
+y Fk(i)27385 30305 y Fx(,)482 b(a)460 b(v)-31 b(ector)461
+b(whose)f(norm)g(is)g(1)g(is)f(regarded)h(as)0 31633
+y(\\small.")495 b(F)-92 b(or)368 b(brevit)-31 b(y)-92
+b(,)371 b(w)-31 b(e)370 b(will)g(usually)h(drop)e(the)g(subscript)g
+(WRMS)f(on)i(norms)f(in)g(what)h(follo)-31 b(ws.)1660
+32977 y(In)469 b(the)h(cases)f(of)h(a)g(direct)g(solv)-31
+b(er)470 b(\(dense,)494 b(band,)i(or)469 b(diagonal\),)498
+b(the)470 b(iteration)i(is)d(a)h(Mo)31 b(di\257ed)469
+b(Newton)0 34305 y(iteration,)384 b(in)378 b(that)i(the)f(iteration)h
+(matrix)g Fm(M)499 b Fx(is)379 b(\257xed)f(throughout)i(the)f
+(nonlinear)h(iterations.)522 b(Ho)-31 b(w)g(ev)g(er,)383
+b(for)0 35633 y(SPGMR,)446 b(it)g(is)g(an)g(Inexact)h(Newton)g
+(iteration,)468 b(in)446 b(whic)-31 b(h)447 b Fm(M)566
+b Fx(is)445 b(applied)j(in)e(a)g(matrix-free)h(manner,)466
+b(with)0 36962 y(matrix-v)-31 b(ector)421 b(pro)31 b(ducts)417
+b Fm(J)106 b(v)458 b Fx(obtained)419 b(b)-31 b(y)419
+b(either)f(di\256erence)g(quotien)-31 b(ts)420 b(or)e(a)g
+(user-supplied)f(routine.)641 b(The)0 38290 y(matrix)439
+b Fm(M)557 b Fx(\(direct)438 b(cases\))f(or)g(preconditioner)h(matrix)h
+Fm(P)590 b Fx(\(SPGMR)437 b(case\))h(is)f(up)31 b(dated)437
+b(as)g(infrequen)-31 b(tly)439 b(as)0 39618 y(p)31 b(ossible)362
+b(to)h(balance)f(the)g(high)h(costs)f(of)g(matrix)h(op)31
+b(erations)363 b(against)h(other)e(costs.)490 b(Sp)31
+b(eci\257cally)-92 b(,)365 b(this)d(matrix)0 40947 y(up)31
+b(date)370 b(o)31 b(ccurs)368 b(when:)p Black 1660 43207
+a Fp(\262)p Black 554 w Fx(starting)j(the)e(problem,)p
+Black 1660 45482 a Fp(\262)p Black 554 w Fx(more)h(than)g(20)g(steps)e
+(ha)-31 b(v)g(e)371 b(b)31 b(een)368 b(tak)-31 b(en)371
+b(since)e(the)g(last)h(up)31 b(date,)p Black 1660 47757
+a Fp(\262)p Black 554 w Fx(the)370 b(v)-61 b(alue)410
+b(\271)-594 b Fm(\260)431 b Fx(of)370 b Fm(\260)430 b
+Fx(at)370 b(the)g(last)g(up)31 b(date)369 b(satis\257es)h
+Fp(j)p Fm(\260)61 b(=)41 b Fx(\271)-594 b Fm(\260)309
+b Fp(\241)246 b Fx(1)p Fp(j)308 b Fm(>)g Fx(0)p Fm(:)p
+Fx(3,)p Black 1660 50032 a Fp(\262)p Black 554 w Fx(a)370
+b(non-fatal)h(con)-31 b(v)g(ergence)371 b(failure)f(just)f(o)31
+b(ccurred,)369 b(or)p Black 1660 52307 a Fp(\262)p Black
+554 w Fx(an)h(error)e(test)i(failure)g(just)f(o)31 b(ccurred.)0
+54567 y(When)361 b(forced)g(b)-31 b(y)362 b(a)f(con)-31
+b(v)g(ergence)363 b(failure,)h(an)e(up)31 b(date)362
+b(of)f Fm(M)482 b Fx(or)361 b Fm(P)515 b Fx(ma)-31 b(y)363
+b(or)e(ma)-31 b(y)362 b(not)g(in)-31 b(v)g(olv)g(e)364
+b(a)e(reev)-61 b(aluation)0 55895 y(of)328 b Fm(J)434
+b Fx(\(in)329 b Fm(M)121 b Fx(\))328 b(or)f(of)i(Jacobian)g(data)g
+(\(in)g Fm(P)154 b Fx(\),)336 b(dep)31 b(ending)329 b(on)f(whether)g
+(Jacobian)h(error)e(w)-31 b(as)329 b(the)f(lik)-31 b(ely)330
+b(cause)d(of)0 57223 y(the)357 b(failure.)490 b(More)356
+b(generally)-92 b(,)362 b(the)357 b(decision)h(is)f(made)g(to)h(reev)
+-61 b(aluate)358 b Fm(J)463 b Fx(\(or)357 b(instruct)h(the)f(user)f(to)
+i(re-ev)-61 b(aluate)0 58552 y(Jacobian)371 b(data)f(in)g
+Fm(P)154 b Fx(\))368 b(when:)p Black 1660 60812 a Fp(\262)p
+Black 554 w Fx(starting)j(the)e(problem,)p Black 1660
+63087 a Fp(\262)p Black 554 w Fx(more)h(than)g(50)g(steps)e(ha)-31
+b(v)g(e)371 b(b)31 b(een)368 b(tak)-31 b(en)371 b(since)e(the)g(last)h
+(ev)-61 b(aluation,)p Black 1660 65362 a Fp(\262)p Black
+554 w Fx(a)293 b(con)-31 b(v)g(ergence)293 b(failure)h(o)31
+b(ccurred)291 b(with)j(an)f(outdated)h(matrix,)309 b(and)293
+b(the)g(v)-61 b(alue)333 b(\271)-593 b Fm(\260)353 b
+Fx(of)293 b Fm(\260)354 b Fx(at)293 b(the)g(last)g(up)31
+b(date)2767 66690 y(satis\257es)370 b Fp(j)p Fm(\260)61
+b(=)41 b Fx(\271)-594 b Fm(\260)309 b Fp(\241)246 b Fx(1)p
+Fp(j)308 b Fm(<)g Fx(0)p Fm(:)p Fx(2,)371 b(or)p Black
+1660 68965 a Fp(\262)p Black 554 w Fx(a)f(con)-31 b(v)g(ergence)370
+b(failure)g(o)31 b(ccurred)368 b(that)j(forced)e(a)h(step)f(size)g
+(reduction.)1660 71225 y(The)347 b(stopping)h(test)e(for)h(the)f
+(Newton)i(iteration)g(is)f(related)g(to)g(the)f(subsequen)-31
+b(t)346 b(lo)31 b(cal)348 b(error)d(test,)352 b(with)c(the)0
+72553 y(goal)360 b(of)e(k)-31 b(eeping)359 b(the)f(nonlinear)i
+(iteration)g(errors)c(from)j(in)-31 b(terfering)359 b(with)g(lo)31
+b(cal)360 b(error)d(con)-31 b(trol.)490 b(As)358 b(describ)31
+b(ed)0 73882 y(b)g(elo)-31 b(w,)481 b(the)457 b(\257nal)g(computed)h(v)
+-61 b(alue)458 b Fm(y)16818 73480 y Fk(n)p Fl(\()p Fk(m)p
+Fl(\))19354 73882 y Fx(will)g(ha)-31 b(v)g(e)458 b(to)g(satisfy)g(a)f
+(lo)31 b(cal)458 b(error)e(test)i Fp(k)p Fm(y)39054 73480
+y Fk(n)p Fl(\()p Fk(m)p Fl(\))41438 73882 y Fp(\241)304
+b Fm(y)43186 73480 y Fk(n)p Fl(\(0\))44921 73882 y Fp(k)455
+b(\267)e Fm(\262)p Fx(.)0 75210 y(Letting)313 b Fm(y)4415
+74808 y Fk(n)5328 75210 y Fx(denote)f(the)f(exact)h(solution)h(of)f
+(\(3.3\),)325 b(w)-31 b(e)312 b(w)-31 b(an)g(t)313 b(to)f(ensure)e
+(that)j(the)e(iteration)i(error)e Fm(y)42560 74808 y
+Fk(n)43292 75210 y Fp(\241)130 b Fm(y)44866 74808 y Fk(n)p
+Fl(\()p Fk(m)p Fl(\))47256 75210 y Fx(is)0 76539 y(small)341
+b(relativ)-31 b(e)341 b(to)f Fm(\262)p Fx(,)346 b(sp)31
+b(eci\257cally)340 b(that)h(it)f(is)f(less)g(than)h(0)p
+Fm(:)p Fx(1)p Fm(\262)p Fx(.)485 b(\(The)340 b(safet)-31
+b(y)340 b(factor)h(0)p Fm(:)p Fx(1)f(can)g(b)31 b(e)339
+b(c)-31 b(hanged)340 b(b)-31 b(y)340 b(the)0 77867 y(user.\))540
+b(F)-92 b(or)384 b(this,)390 b(w)-31 b(e)385 b(also)h(estimate)h(the)e
+(linear)h(con)-31 b(v)g(ergence)386 b(rate)f(constan)-31
+b(t)386 b Fm(R)393 b Fx(as)385 b(follo)-31 b(ws.)543
+b(W)-92 b(e)384 b(initialize)k Fm(R)p Black Black eop
+%%Page: 13 21
+13 20 bop Black 4000 2701 a Fy(3.1)425 b(IVP)g(solution)37545
+b(13)p 4000 3144 48001 45 v Black 4000 6974 a Fx(to)318
+b(1,)328 b(and)317 b(reset)f Fm(R)g Fx(=)307 b(1)318
+b(when)f Fm(M)437 b Fx(or)317 b Fm(P)470 b Fx(is)317
+b(up)31 b(dated.)476 b(After)317 b(computing)i(a)e(correction)h
+Fm(\261)41774 7140 y Fk(m)42922 6974 y Fx(=)308 b Fm(y)44674
+6572 y Fk(n)p Fl(\()p Fk(m)p Fl(\))46895 6974 y Fp(\241)142
+b Fm(y)48481 6572 y Fk(n)p Fl(\()p Fk(m)p Fi(\241)p Fl(1\))51693
+6974 y Fx(,)4000 8302 y(w)-31 b(e)370 b(up)31 b(date)369
+b Fm(R)377 b Fx(if)370 b Fm(m)307 b(>)h Fx(1)369 b(as)20224
+9631 y Fm(R)316 b Fp(\303)307 b Fx(max)q Fp(f)p Fx(0)p
+Fm(:)p Fx(3)p Fm(R)9 b(;)184 b Fp(k)p Fm(\261)29207 9797
+y Fk(m)30051 9631 y Fp(k)p Fm(=)p Fp(k)p Fm(\261)32202
+9797 y Fk(m)p Fi(\241)p Fl(1)34177 9631 y Fp(kg)g Fm(:)4000
+11580 y Fx(No)-31 b(w)370 b(w)-31 b(e)370 b(use)f(the)g(estimate)11406
+13944 y Fp(k)p Fm(y)12542 13487 y Fk(n)13390 13944 y
+Fp(\241)246 b Fm(y)15080 13487 y Fk(n)p Fl(\()p Fk(m)p
+Fl(\))17160 13944 y Fp(k)308 b(\274)f(k)p Fm(y)20325
+13487 y Fk(n)p Fl(\()p Fk(m)p Fl(+1\))23772 13944 y Fp(\241)246
+b Fm(y)25462 13487 y Fk(n)p Fl(\()p Fk(m)p Fl(\))27541
+13944 y Fp(k)308 b(\274)g Fm(R)9 b Fp(k)p Fm(y)31557
+13487 y Fk(n)p Fl(\()p Fk(m)p Fl(\))33881 13944 y Fp(\241)246
+b Fm(y)35571 13487 y Fk(n)p Fl(\()p Fk(m)p Fi(\241)p
+Fl(1\))38784 13944 y Fp(k)308 b Fx(=)f Fm(R)9 b Fp(k)p
+Fm(\261)42708 14110 y Fk(m)43549 13944 y Fp(k)184 b Fm(:)4000
+16307 y Fx(Therefore)369 b(the)h(con)-31 b(v)g(ergence)370
+b(\(stopping\))h(test)f(is)24440 18671 y Fm(R)9 b Fp(k)p
+Fm(\261)26335 18837 y Fk(m)27175 18671 y Fp(k)308 b Fm(<)g
+Fx(0)p Fm(:)p Fx(1)p Fm(\262)184 b(:)4000 21035 y Fx(W)-92
+b(e)477 b(allo)-31 b(w)481 b(at)d(most)h(3)f(iterations)i(\(but)f(this)
+f(limit)i(can)e(b)31 b(e)478 b(c)-31 b(hanged)479 b(b)-31
+b(y)478 b(the)g(user\).)818 b(W)-92 b(e)478 b(also)g(declare)h(the)4000
+22363 y(iteration)422 b(div)-31 b(erged)421 b(if)g(an)-31
+b(y)421 b Fp(k)p Fm(\261)17278 22529 y Fk(m)18119 22363
+y Fp(k)p Fm(=)p Fp(k)p Fm(\261)20270 22529 y Fk(m)p Fi(\241)p
+Fl(1)22245 22363 y Fp(k)393 b Fm(>)g Fx(2)420 b(with)h
+Fm(m)393 b(>)f Fx(1.)646 b(If)420 b(con)-31 b(v)g(ergence)421
+b(fails)g(with)g Fm(J)526 b Fx(or)420 b Fm(P)574 b Fx(curren)-31
+b(t,)4000 23692 y(w)g(e)384 b(are)g(forced)g(to)h(reduce)e(the)h(step)g
+(size,)k(and)c(w)-31 b(e)384 b(replace)g Fm(h)30626 23858
+y Fk(n)31612 23692 y Fx(b)-31 b(y)384 b Fm(h)33802 23858
+y Fk(n)34405 23692 y Fm(=)p Fx(4.)537 b(The)384 b(in)-31
+b(tegration)387 b(is)d(halted)h(after)g(a)4000 25020
+y(preset)373 b(n)-31 b(um)g(b)31 b(er)374 b(of)g(con)-31
+b(v)g(ergence)375 b(failures;)i(the)d(default)h(v)-61
+b(alue)374 b(of)h(this)f(limit)i(is)d(10,)k(but)d(this)g(can)g(b)31
+b(e)373 b(c)-31 b(hanged)4000 26348 y(b)g(y)369 b(the)h(user.)5660
+27677 y(When)457 b(SPGMR)g(is)g(used)g(to)h(solv)-31
+b(e)458 b(the)f(linear)i(system,)480 b(its)457 b(errors)f(m)-31
+b(ust)458 b(also)g(b)31 b(e)457 b(con)-31 b(trolled,)482
+b(and)457 b(this)4000 29005 y(also)j(in)-31 b(v)g(olv)g(es)461
+b(the)e(lo)31 b(cal)461 b(error)d(test)h(constan)-31
+b(t.)764 b(The)459 b(linear)h(iteration)h(error)d(in)h(the)h(solution)g
+(v)-31 b(ector)460 b Fm(\261)49956 29171 y Fk(m)51256
+29005 y Fx(is)4000 30333 y(appro)-31 b(ximated)322 b(b)-31
+b(y)320 b(the)g(preconditioned)h(residual)g(v)-31 b(ector.)476
+b(Th)-31 b(us)320 b(to)h(ensure)d(\(or)i(attempt)i(to)f(ensure\))e
+(that)i(the)4000 31662 y(linear)383 b(iteration)i(errors)c(do)i(not)g
+(in)-31 b(terfere)382 b(with)i(the)f(nonlinear)g(error)f(and)h(lo)31
+b(cal)383 b(in)-31 b(tegration)386 b(error)381 b(con)-31
+b(trols,)4000 32990 y(w)g(e)370 b(require)e(that)j(the)e(norm)h(of)f
+(the)h(preconditioned)h(residual)e(in)h(SPGMR)e(is)h(less)g(than)h(0)p
+Fm(:)p Fx(05)248 b Fp(\242)e Fx(\(0)p Fm(:)p Fx(1)p Fm(\262)p
+Fx(\).)5660 34318 y(With)430 b(the)g(direct)g(dense)f(and)g(band)h
+(metho)31 b(ds,)445 b(the)430 b(Jacobian)h(ma)-31 b(y)431
+b(b)31 b(e)429 b(supplied)g(b)-31 b(y)430 b(a)g(user)e(routine,)446
+b(or)4000 35647 y(appro)-31 b(ximated)499 b(b)-31 b(y)497
+b(di\256erence)f(quotien)-31 b(ts,)530 b(at)498 b(the)e(user's)g
+(option.)876 b(In)496 b(the)h(latter)g(case,)529 b(w)-31
+b(e)497 b(use)f(the)g(usual)4000 36975 y(appro)-31 b(ximation)19547
+38303 y Fm(J)20161 38469 y Fk(ij)21248 38303 y Fx(=)307
+b([)p Fm(f)23265 38469 y Fk(i)23634 38303 y Fx(\()p Fm(t;)184
+b(y)287 b Fx(+)246 b Fm(\276)27525 38469 y Fk(j)27991
+38303 y Fm(e)28506 38469 y Fk(j)28972 38303 y Fx(\))h
+Fp(\241)f Fm(f)31298 38469 y Fk(i)31666 38303 y Fx(\()p
+Fm(t;)184 b(y)40 b Fx(\)])p Fm(=\276)35493 38469 y Fk(j)36146
+38303 y Fm(:)4000 40253 y Fx(The)369 b(incremen)-31 b(ts)370
+b Fm(\276)12483 40419 y Fk(j)13318 40253 y Fx(are)f(giv)-31
+b(en)371 b(b)-31 b(y)21082 42989 y Fm(\276)21715 43155
+y Fk(j)22489 42989 y Fx(=)307 b(max)25902 41760 y Fj(n)26640
+41998 y Fp(p)p 27562 41998 877 45 v 991 x Fm(U)428 b
+Fp(j)p Fm(y)29596 43155 y Fk(j)30063 42989 y Fp(j)p Fm(;)184
+b(\276)31494 43155 y Fl(0)31991 42989 y Fm(W)33036 43155
+y Fk(j)33503 41760 y Fj(o)34610 42989 y Fm(;)4000 45623
+y Fx(where)470 b Fm(U)591 b Fx(is)470 b(the)h(unit)g(roundo\256,)497
+b Fm(\276)19777 45789 y Fl(0)20743 45623 y Fx(is)470
+b(a)h(dimensionless)h(v)-61 b(alue,)496 b(and)471 b Fm(W)36581
+45789 y Fk(j)37518 45623 y Fx(is)g(the)f(error)g(w)-31
+b(eigh)g(t)472 b(de\257ned)f(in)4000 46951 y(\(3.6\).)537
+b(In)383 b(the)g(dense)g(case,)k(this)d(sc)-31 b(heme)383
+b(requires)g Fm(N)504 b Fx(ev)-61 b(aluations)385 b(of)f
+Fm(f)119 b Fx(,)387 b(one)c(for)h(eac)-31 b(h)384 b(column)g(of)g
+Fm(J)106 b Fx(.)535 b(In)383 b(the)4000 48280 y(band)338
+b(case,)345 b(the)338 b(columns)h(of)g Fm(J)444 b Fx(are)337
+b(computed)j(in)e(groups,)345 b(b)-31 b(y)338 b(the)g(Curtis-P)-31
+b(o)g(w)g(ell-Reid)342 b(algorithm,)347 b(with)340 b(the)4000
+49608 y(n)-31 b(um)g(b)31 b(er)369 b(of)h Fm(f)488 b
+Fx(ev)-61 b(aluations)371 b(equal)f(to)g(the)g(bandwidth.)5660
+50936 y(In)473 b(the)h(case)f(of)h(SPGMR,)f(preconditioning)j(ma)-31
+b(y)474 b(b)31 b(e)473 b(used)g(on)g(the)h(left,)500
+b(on)474 b(the)f(righ)-31 b(t,)501 b(or)473 b(b)31 b(oth,)501
+b(with)4000 52265 y(user-supplied)309 b(routines)g(for)h(the)f
+(preconditioning)j(setup)d(and)g(solv)-31 b(e)310 b(op)31
+b(erations,)323 b(and)310 b(optionally)i(also)e(for)g(the)4000
+53593 y(required)303 b(matrix-v)-31 b(ector)306 b(pro)31
+b(ducts)303 b Fm(J)106 b(v)40 b Fx(.)470 b(If)303 b(a)h(routine)g(for)g
+Fm(J)106 b(v)343 b Fx(is)303 b(not)i(supplied,)317 b(these)303
+b(pro)31 b(ducts)303 b(are)h(computed)4000 54922 y(as)20474
+56250 y Fm(J)106 b(v)347 b Fx(=)307 b([)p Fm(f)119 b
+Fx(\()p Fm(t;)184 b(y)288 b Fx(+)246 b Fm(\276)40 b(v)g
+Fx(\))245 b Fp(\241)h Fm(f)119 b Fx(\()p Fm(t;)184 b(y)40
+b Fx(\)])p Fm(=\276)226 b(:)14199 b Fx(\(3.7\))4000 58199
+y(The)369 b(incremen)-31 b(t)371 b Fm(\276)408 b Fx(is)369
+b(1)p Fm(=)p Fp(k)p Fm(v)40 b Fp(k)p Fx(,)371 b(so)e(that)h
+Fm(\276)40 b(v)408 b Fx(has)369 b(norm)g(1.)5660 59528
+y(A)364 b(critical)h(part)f(of)g Fv(cv)-25 b(ode)364
+b Fx(|)g(making)h(it)f(an)g(ODE)g(\\solv)-31 b(er")364
+b(rather)g(than)g(just)g(an)g(ODE)f(metho)31 b(d,)366
+b(is)d(its)4000 60856 y(con)-31 b(trol)426 b(of)f(lo)31
+b(cal)427 b(error.)658 b(A)-31 b(t)425 b(ev)-31 b(ery)425
+b(step,)439 b(the)425 b(lo)31 b(cal)426 b(error)d(is)i(estimated)h(and)
+f(required)f(to)i(satisfy)g(tolerance)4000 62184 y(conditions,)479
+b(and)455 b(the)g(step)f(is)h(redone)g(with)h(reduced)e(step)h(size)f
+(whenev)-31 b(er)455 b(that)h(error)e(test)h(fails.)751
+b(As)455 b(with)4000 63513 y(an)-31 b(y)359 b(linear)g(m)-31
+b(ultistep)360 b(metho)31 b(d,)362 b(the)c(lo)31 b(cal)360
+b(truncation)f(error)f(L)-92 b(TE,)358 b(at)h(order)f
+Fm(q)398 b Fx(and)358 b(step)g(size)g Fm(h)p Fx(,)i(satis\257es)f(an)
+4000 64841 y(asymptotic)372 b(relation)20517 66170 y(L)-92
+b(TE)308 b(=)f Fm(C)79 b(h)25653 65712 y Fk(q)28 b Fl(+1)27263
+66170 y Fm(y)27846 65712 y Fl(\()p Fk(q)g Fl(+1\))30393
+66170 y Fx(+)246 b Fm(O)31 b Fx(\()p Fm(h)33443 65712
+y Fk(q)d Fl(+2)35053 66170 y Fx(\))4000 68119 y(for)312
+b(some)g(constan)-31 b(t)314 b Fm(C)79 b Fx(,)324 b(under)311
+b(mild)i(assumptions)g(on)f(the)g(step)g(sizes.)473 b(A)312
+b(similar)h(relation)h(holds)e(for)g(the)g(error)4000
+69447 y(in)369 b(the)h(predictor)f Fm(y)12522 69046 y
+Fk(n)p Fl(\(0\))14257 69447 y Fx(.)493 b(These)369 b(are)g(com)-31
+b(bined)371 b(to)f(get)f(a)h(relation)19946 71811 y(L)-92
+b(TE)308 b(=)f Fm(C)24444 71354 y Fi(0)24755 71811 y
+Fx([)p Fm(y)25645 71354 y Fk(n)26493 71811 y Fp(\241)246
+b Fm(y)28183 71354 y Fk(n)p Fl(\(0\))29918 71811 y Fx(])h(+)f
+Fm(O)31 b Fx(\()p Fm(h)33522 71354 y Fk(q)d Fl(+2)35132
+71811 y Fx(\))184 b Fm(:)4000 74175 y Fx(The)300 b(lo)31
+b(cal)301 b(error)e(test)h(is)f(simply)i Fp(k)p Fx(L)-92
+b(TE)q Fp(k)308 b(\267)f Fx(1.)470 b(Using)300 b(the)g(ab)31
+b(o)-31 b(v)g(e,)315 b(it)301 b(is)e(p)31 b(erformed)300
+b(on)g(the)f(predictor-corrector)4000 75503 y(di\256erence)369
+b(\242)9876 75669 y Fk(n)10786 75503 y Fp(\264)308 b
+Fm(y)12538 75101 y Fk(n)p Fl(\()p Fk(m)p Fl(\))14863
+75503 y Fp(\241)246 b Fm(y)16553 75101 y Fk(n)p Fl(\(0\))18657
+75503 y Fx(\(with)371 b Fm(y)22192 75101 y Fk(n)p Fl(\()p
+Fk(m)p Fl(\))24640 75503 y Fx(the)f(\257nal)g(iterate)g(computed\),)h
+(and)f(tak)-31 b(es)370 b(the)f(form)23286 77867 y Fp(k)p
+Fx(\242)24761 78033 y Fk(n)25365 77867 y Fp(k)307 b(\267)h
+Fm(\262)g Fp(\264)f Fx(1)p Fm(=)p Fp(j)p Fm(C)31602 77410
+y Fi(0)31915 77867 y Fp(j)184 b Fm(:)p Black Black eop
+%%Page: 14 22
+14 21 bop Black 0 2701 a Fy(14)30377 b(Mathematical)424
+b(Considerations)p 0 3144 48001 45 v Black 0 6974 a Fx(If)416
+b(this)g(test)h(passes,)427 b(the)417 b(step)f(is)g(considered)g
+(successful.)633 b(If)416 b(it)h(fails,)429 b(the)417
+b(step)f(is)g(rejected)g(and)g(a)h(new)f(step)0 8302
+y(size)369 b Fm(h)2735 7900 y Fi(0)3414 8302 y Fx(is)h(computed)g
+(based)f(on)g(the)h(asymptotic)h(b)31 b(eha)-31 b(vior)371
+b(of)e(the)h(lo)31 b(cal)370 b(error,)f(namely)i(b)-31
+b(y)369 b(the)h(equation)18617 10699 y(\()p Fm(h)19685
+10242 y Fi(0)19996 10699 y Fm(=h)p Fx(\))21617 10242
+y Fk(q)28 b Fl(+1)23227 10699 y Fp(k)p Fx(\242)24702
+10865 y Fk(n)25306 10699 y Fp(k)308 b Fx(=)f Fm(\262=)p
+Fx(6)184 b Fm(:)0 13096 y Fx(Here)415 b(1/6)i(is)e(a)h(safet)-31
+b(y)416 b(factor.)632 b(A)416 b(new)f(attempt)j(at)e(the)g(step)f(is)g
+(made,)428 b(and)416 b(the)g(error)e(test)i(rep)31 b(eated.)631
+b(If)415 b(it)0 14425 y(fails)376 b(three)g(times,)i(the)d(order)g
+Fm(q)415 b Fx(is)375 b(reset)g(to)h(1)g(\(if)g Fm(q)358
+b(>)318 b Fx(1\),)378 b(or)d(the)h(step)f(is)g(restarted)g(from)h
+(scratc)-31 b(h)376 b(\(if)g Fm(q)358 b Fx(=)318 b(1\).)0
+15753 y(The)439 b(ratio)h Fm(h)5700 15351 y Fi(0)6010
+15753 y Fm(=h)e Fx(is)h(limited)i(ab)31 b(o)-31 b(v)g(e)439
+b(to)h(0.2)f(after)g(t)-31 b(w)g(o)441 b(error)c(test)i(failures,)457
+b(and)439 b(limited)i(b)31 b(elo)-31 b(w)439 b(to)h(0.1)f(after)0
+17082 y(three.)492 b(After)370 b(sev)-31 b(en)369 b(failures,)h
+Fv(cv)-25 b(ode)370 b Fx(returns)e(to)i(the)g(user)e(with)i(a)g(giv)-31
+b(e-up)370 b(message.)1660 18410 y(In)323 b(addition)j(to)e(adjusting)h
+(the)e(step)g(size)h(to)g(meet)g(the)f(lo)31 b(cal)325
+b(error)d(test,)334 b Fv(cv)-25 b(ode)324 b Fx(p)31 b(erio)g(dically)
+325 b(adjusts)f(the)0 19738 y(order,)k(with)319 b(the)f(goal)h(of)g
+(maximizing)i(the)d(step)f(size.)476 b(The)318 b(in)-31
+b(tegration)320 b(starts)e(out)h(at)f(order)f(1)h(and)g(v)-61
+b(aries)318 b(the)0 21067 y(order)334 b(dynamically)j(after)d(that.)483
+b(The)334 b(basic)h(idea)f(is)g(to)h(pic)-31 b(k)335
+b(the)g(order)e Fm(q)374 b Fx(for)334 b(whic)-31 b(h)335
+b(a)g(p)31 b(olynomial)337 b(of)e(order)e Fm(q)0 22395
+y Fx(b)31 b(est)325 b(\257ts)g(the)g(discrete)g(data)h(in)-31
+b(v)g(olv)g(ed)328 b(in)d(the)h(m)-31 b(ultistep)327
+b(metho)31 b(d.)479 b(Ho)-31 b(w)g(ev)g(er,)335 b(if)326
+b(either)f(a)h(con)-31 b(v)g(ergence)326 b(failure)0
+23723 y(or)361 b(an)g(error)e(test)i(failure)h(o)31 b(ccurred)360
+b(on)h(the)g(step)f(just)h(completed,)k(no)c(c)-31 b(hange)362
+b(in)f(step)f(size)h(or)f(order)g(is)h(done.)0 25052
+y(A)-31 b(t)383 b(the)g(curren)-31 b(t)383 b(order)f
+Fm(q)40 b Fx(,)386 b(selecting)e(a)f(new)g(step)f(size)h(is)g(done)g
+(exactly)h(as)f(when)f(the)h(error)f(test)h(fails,)388
+b(giving)0 26380 y(a)369 b(ten)-31 b(tativ)g(e)373 b(step)c(size)g
+(ratio)16566 27708 y Fm(h)17204 27251 y Fi(0)17515 27708
+y Fm(=h)307 b Fx(=)h(\()p Fm(\262=)p Fx(6)p Fp(k)p Fx(\242)23642
+27874 y Fk(n)24247 27708 y Fp(k)p Fx(\))25230 27251 y
+Fl(1)p Fk(=)p Fl(\()p Fk(q)28 b Fl(+1\))28735 27708 y
+Fp(\264)307 b Fm(\264)30453 27874 y Fk(q)31126 27708
+y Fm(:)0 29678 y Fx(W)-92 b(e)307 b(consider)h(c)-31
+b(hanging)309 b(order)e(only)i(after)f(taking)i Fm(q)163
+b Fx(+)123 b(1)308 b(steps)f(at)h(order)f Fm(q)40 b Fx(,)320
+b(and)308 b(then)g(w)-31 b(e)309 b(consider)e(only)i(orders)0
+31006 y Fm(q)534 30605 y Fi(0)1152 31006 y Fx(=)e Fm(q)215
+b Fp(\241)175 b Fx(1)333 b(\(if)i Fm(q)347 b(>)307 b
+Fx(1\))335 b(or)e Fm(q)11542 30605 y Fi(0)12160 31006
+y Fx(=)307 b Fm(q)215 b Fx(+)175 b(1)333 b(\(if)h Fm(q)348
+b(<)307 b Fx(5\).)482 b(The)333 b(lo)31 b(cal)335 b(truncation)h(error)
+c(at)i(order)f Fm(q)38738 30605 y Fi(0)39382 31006 y
+Fx(is)g(estimated)i(using)0 32335 y(the)354 b(history)g(data.)488
+b(Then)354 b(a)f(ten)-31 b(tativ)g(e)356 b(step)e(size)f(ratio)h(is)g
+(computed)g(on)g(the)f(basis)h(that)g(this)g(error,)i(L)-92
+b(TE\()p Fm(q)46951 31933 y Fi(0)47262 32335 y Fx(\),)0
+33663 y(b)31 b(eha)-31 b(v)g(es)370 b(asymptotically)j(as)c
+Fm(h)13571 33261 y Fk(q)14005 32927 y Fh(0)14304 33261
+y Fl(+1)15480 33663 y Fx(.)492 b(With)370 b(safet)-31
+b(y)370 b(factors)g(of)g(1/6)g(and)g(1/10)h(resp)31 b(ectiv)-31
+b(ely)-92 b(,)370 b(these)f(ratios)h(are:)15259 36060
+y Fm(h)15897 35603 y Fi(0)16207 36060 y Fm(=h)308 b Fx(=)f([1)p
+Fm(=)p Fx(6)p Fp(k)p Fx(L)-92 b(TE)s(\()p Fm(q)286 b
+Fp(\241)246 b Fx(1\))p Fp(k)p Fx(])27708 35603 y Fl(1)p
+Fk(=q)29401 36060 y Fp(\264)308 b Fm(\264)31120 36226
+y Fk(q)28 b Fi(\241)p Fl(1)0 38457 y Fx(and)13836 39786
+y Fm(h)14474 39329 y Fi(0)14784 39786 y Fm(=h)308 b Fx(=)f([1)p
+Fm(=)p Fx(10)p Fp(k)p Fx(L)-92 b(TE)t(\()p Fm(q)286 b
+Fx(+)246 b(1\))p Fp(k)p Fx(])26839 39329 y Fl(1)p Fk(=)p
+Fl(\()p Fk(q)28 b Fl(+2\))30345 39786 y Fp(\264)307 b
+Fm(\264)32063 39952 y Fk(q)28 b Fl(+1)33857 39786 y Fm(:)0
+41755 y Fx(The)369 b(new)h(order)e(and)i(step)f(size)g(are)g(then)g
+(set)g(according)i(to)15336 44152 y Fm(\264)347 b Fx(=)307
+b(max)q Fp(f)p Fm(\264)20564 44318 y Fk(q)28 b Fi(\241)p
+Fl(1)22186 44152 y Fm(;)184 b(\264)23227 44318 y Fk(q)23717
+44152 y Fm(;)g(\264)24758 44318 y Fk(q)28 b Fl(+1)26368
+44152 y Fp(g)370 b Fm(;)923 b(h)29159 43695 y Fi(0)29777
+44152 y Fx(=)307 b Fm(\264)40 b(h)184 b(;)0 46550 y Fx(with)450
+b Fm(q)3135 46148 y Fi(0)3894 46550 y Fx(set)f(to)g(the)g(index)h(ac)
+-31 b(hieving)450 b(the)f(ab)31 b(o)-31 b(v)g(e)450 b(maxim)-31
+b(um.)735 b(Ho)-31 b(w)g(ev)g(er,)470 b(if)449 b(w)-31
+b(e)450 b(\257nd)e(that)i Fm(\264)480 b(<)440 b Fx(1)p
+Fm(:)p Fx(5,)470 b(w)-31 b(e)450 b(do)0 47878 y(not)394
+b(b)31 b(other)393 b(with)i(the)e(c)-31 b(hange.)566
+b(Also,)401 b Fm(h)17666 47476 y Fi(0)17976 47878 y Fm(=h)393
+b Fx(is)h(alw)-31 b(a)g(ys)395 b(limited)g(to)g(10,)400
+b(except)394 b(on)f(the)h(\257rst)f(step,)399 b(when)394
+b(it)g(is)0 49206 y(limited)371 b(to)f(10)6210 48805
+y Fl(4)6708 49206 y Fx(.)1660 50535 y(The)382 b(v)-61
+b(arious)382 b(algorithmic)j(features)d(of)g Fv(cv)-25
+b(ode)383 b Fx(describ)31 b(ed)381 b(ab)31 b(o)-31 b(v)g(e,)386
+b(as)c(inherited)g(from)h(the)f(solv)-31 b(ers)381 b
+Fv(v)-25 b(ode)0 51863 y Fx(and)369 b Fv(v)-25 b(odpk)p
+Fx(,)370 b(are)f(do)31 b(cumen)-31 b(ted)370 b(in)g([1)q(,)f(3)q(,)g
+(12)q(].)493 b(They)370 b(are)f(also)h(summarized)g(in)f([13)r(].)1660
+53191 y(Normally)-92 b(,)369 b Fv(cv)-25 b(ode)367 b
+Fx(tak)-31 b(es)366 b(steps)f(un)-31 b(til)367 b(a)f(user-de\257ned)f
+(output)i(v)-61 b(alue)366 b Fm(t)307 b Fx(=)g Fm(t)34469
+53357 y Fl(out)36166 53191 y Fx(is)365 b(o)-31 b(v)g(ertak)g(en,)369
+b(and)d(then)g(it)0 54520 y(computes)425 b Fm(y)40 b
+Fx(\()p Fm(t)6394 54686 y Fl(out)7725 54520 y Fx(\))425
+b(b)-31 b(y)424 b(in)-31 b(terp)31 b(olation.)662 b(Ho)-31
+b(w)g(ev)g(er,)440 b(a)424 b(\\one)h(step")g(mo)31 b(de)425
+b(option)h(is)e(a)-31 b(v)-61 b(ailable,)441 b(where)424
+b(con)-31 b(trol)0 55848 y(returns)284 b(to)i(the)f(calling)j(program)d
+(after)h(eac)-31 b(h)286 b(step.)464 b(There)285 b(are)g(also)h
+(options)g(to)g(force)f Fv(cv)-25 b(ode)286 b Fx(not)g(to)g(in)-31
+b(tegrate)0 57176 y(past)370 b(a)f(giv)-31 b(en)370 b(stopping)h(p)31
+b(oin)-31 b(t)370 b Fm(t)308 b Fx(=)f Fm(t)15879 57342
+y Fl(stop)17561 57176 y Fx(.)0 60830 y Fs(3.2)1793 b(BDF)598
+b(stabilit)-50 b(y)600 b(limit)f(detection)0 63255 y
+Fv(cv)-25 b(ode)297 b Fx(includes)f(an)g(algorithm,)314
+b Fv(st)-74 b(ald)296 b Fx(\(ST)-92 b(Abilit)-31 b(y)299
+b(Limit)e(Detection\),)313 b(whic)-31 b(h)297 b(pro)-31
+b(vides)296 b(protection)i(against)0 64583 y(p)31 b(oten)-31
+b(tially)490 b(unstable)e(b)31 b(eha)-31 b(vior)487 b(of)h(the)f(BDF)e
+(m)-31 b(ultistep)489 b(in)-31 b(tegration)490 b(metho)31
+b(ds)487 b(is)g(certain)g(situations,)519 b(as)0 65912
+y(describ)31 b(ed)368 b(b)31 b(elo)-31 b(w.)1660 67240
+y(When)471 b(the)h(BDF)e(option)k(is)d(selected,)498
+b Fv(cv)-25 b(ode)472 b Fx(uses)e(Bac)-31 b(kw)g(ard)473
+b(Di\256eren)-31 b(tiation)474 b(F)-92 b(orm)-31 b(ula)472
+b(metho)31 b(ds)472 b(of)0 68568 y(orders)341 b(1)h(to)h(5.)484
+b(A)-31 b(t)343 b(order)e(1)h(or)g(2,)348 b(the)342 b(BDF)f(metho)31
+b(d)343 b(is)f(A-stable,)349 b(meaning)344 b(that)f(for)f(an)-31
+b(y)343 b(complex)g(constan)-31 b(t)0 69897 y Fm(\270)291
+b Fx(in)h(the)g(op)31 b(en)292 b(left)h(half-plane,)310
+b(the)292 b(metho)31 b(d)293 b(is)e(unconditionally)296
+b(stable)d(\(for)f(an)-31 b(y)293 b(step)e(size\))h(for)g(the)g
+(standard)0 71225 y(scalar)414 b(mo)31 b(del)415 b(problem)614
+b(_)-506 b Fm(y)421 b Fx(=)382 b Fm(\270y)40 b Fx(.)626
+b(F)-92 b(or)413 b(an)h(ODE)g(system,)425 b(this)415
+b(means)f(that,)427 b(roughly)415 b(sp)31 b(eaking,)426
+b(as)414 b(long)h(as)0 72553 y(all)390 b(mo)31 b(des)388
+b(in)h(the)g(system)f(are)h(stable,)394 b(the)389 b(metho)31
+b(d)389 b(is)f(also)i(stable)f(for)g(an)-31 b(y)389 b(c)-31
+b(hoice)389 b(of)g(step)f(size,)394 b(at)389 b(least)h(in)0
+73882 y(the)369 b(sense)g(of)g(a)h(lo)31 b(cal)370 b(linear)g(stabilit)
+-31 b(y)372 b(analysis.)1660 75210 y(A)-31 b(t)435 b(orders)e(3)h(to)h
+(5,)451 b(the)434 b(BDF)f(metho)31 b(ds)434 b(are)g(not)g(A-stable,)452
+b(although)436 b(they)e(are)g Fo(sti\262y)456 b(stable)p
+Fx(.)686 b(In)433 b(eac)-31 b(h)0 76539 y(case,)322 b(in)310
+b(order)e(for)i(the)g(metho)31 b(d)310 b(to)g(b)31 b(e)309
+b(stable)i(at)f(step)f(size)h Fm(h)f Fx(on)h(the)f(scalar)h(mo)31
+b(del)311 b(problem,)322 b(the)310 b(pro)31 b(duct)310
+b Fm(h\270)0 77867 y Fx(m)-31 b(ust)400 b(lie)h(in)f(a)f
+Fo(r)-57 b(e)g(gion)426 b(of)e(absolute)g(stability)p
+Fx(.)584 b(That)401 b(region)f(excludes)g(a)g(p)31 b(ortion)400
+b(of)h(the)e(left)i(half-plane)h(that)p Black Black eop
+%%Page: 15 23
+15 22 bop Black 4000 2701 a Fy(3.3)425 b(Ro)35 b(ot\257nding)38101
+b(15)p 4000 3144 48001 45 v Black 4000 6974 a Fx(is)443
+b(concen)-31 b(trated)444 b(near)f(the)g(imaginary)i(axis.)715
+b(The)443 b(size)f(of)i(that)g(region)f(of)h(instabilit)-31
+b(y)446 b(gro)-31 b(ws)444 b(as)e(the)h(order)4000 8302
+y(increases)e(from)h(3)g(to)h(5.)710 b(What)442 b(this)g(means)g(is)f
+(that,)462 b(when)441 b(running)h(BDF)f(at)h(an)-31 b(y)443
+b(of)f(these)f(orders,)459 b(if)443 b(an)4000 9631 y(eigen)-31
+b(v)-61 b(alue)441 b Fm(\270)d Fx(of)i(the)f(system)h(lies)f(close)h
+(enough)f(to)h(the)g(imaginary)h(axis,)458 b(the)439
+b(step)g(sizes)g Fm(h)f Fx(for)i(whic)-31 b(h)440 b(the)4000
+10959 y(metho)31 b(d)353 b(is)e(stable)i(are)e(limited)j(\(at)f(least)g
+(according)g(to)f(the)g(linear)g(stabilit)-31 b(y)355
+b(theory\))e(to)f(a)g(set)g(that)h(prev)-31 b(en)g(ts)4000
+12287 y Fm(h\270)316 b Fx(from)i(lea)-31 b(ving)319 b(the)e(stabilit)
+-31 b(y)320 b(region.)476 b(The)317 b(meaning)h(of)g
+Fo(close)347 b(enough)317 b Fx(dep)31 b(ends)316 b(on)h(the)h(order.)
+474 b(A)-31 b(t)318 b(order)e(3,)4000 13616 y(the)385
+b(unstable)g(region)h(is)e(m)-31 b(uc)g(h)385 b(narro)-31
+b(w)g(er)385 b(than)h(at)f(order)f(5,)389 b(so)384 b(the)h(p)31
+b(oten)-31 b(tial)388 b(for)c(unstable)i(b)31 b(eha)-31
+b(vior)385 b(gro)-31 b(ws)4000 14944 y(with)370 b(order.)5660
+16352 y(System)342 b(eigen)-31 b(v)-61 b(alues)343 b(that)f(are)f(lik)
+-31 b(ely)343 b(to)f(run)f(in)-31 b(to)342 b(this)g(instabilit)-31
+b(y)344 b(are)d(ones)g(that)i(corresp)31 b(ond)340 b(to)i(w)-31
+b(eakly)4000 17680 y(damp)31 b(ed)424 b(oscillations.)658
+b(A)423 b(pure)f(undamp)31 b(ed)424 b(oscillation)j(corresp)31
+b(onds)422 b(to)i(an)f(eigen)-31 b(v)-61 b(alue)425 b(on)f(the)f
+(imaginary)4000 19009 y(axis.)456 b(Problems)259 b(with)h(mo)31
+b(des)258 b(of)h(that)h(kind)e(call)i(for)e(di\256eren)-31
+b(t)259 b(considerations,)282 b(since)258 b(the)h(oscillation)i
+(generally)4000 20337 y(m)-31 b(ust)346 b(b)31 b(e)344
+b(follo)-31 b(w)g(ed)349 b(b)-31 b(y)345 b(the)g(solv)-31
+b(er,)351 b(and)346 b(this)f(requires)g(step)g(sizes)f(\()p
+Fm(h)308 b Fp(\273)g Fx(1)p Fm(=\272)70 b Fx(,)351 b(where)345
+b Fm(\272)415 b Fx(is)346 b(the)f(frequency\))h(that)4000
+21665 y(are)540 b(stable)h(for)g(BDF)e(an)-31 b(yw)g(a)g(y)-92
+b(.)1009 b(But)540 b(for)h(a)f(w)-31 b(eakly)543 b(damp)31
+b(ed)541 b(oscillatory)i(mo)31 b(de,)584 b(the)540 b(oscillation)k(in)d
+(the)4000 22994 y(solution)338 b(is)e(ev)-31 b(en)g(tually)339
+b(damp)31 b(ed)336 b(to)h(the)f(noise)h(lev)-31 b(el,)344
+b(and)336 b(at)h(that)h(time)f(it)g(is)f(imp)31 b(ortan)-31
+b(t)338 b(that)f(the)g(solv)-31 b(er)336 b(not)4000 24322
+y(b)31 b(e)369 b(restricted)g(to)h(step)g(sizes)f(on)g(the)h(order)f
+(of)h(1)p Fm(=\272)70 b Fx(.)494 b(It)369 b(is)h(in)f(this)h(situation)
+i(that)e(the)g(new)g(option)h(ma)-31 b(y)370 b(b)31 b(e)369
+b(of)4000 25650 y(great)h(v)-61 b(alue.)5660 27058 y(In)423
+b(terms)f(of)h(partial)h(di\256eren)-31 b(tial)425 b(equations,)438
+b(the)422 b(t)-31 b(ypical)425 b(problems)e(for)g(whic)-31
+b(h)423 b(the)g(stabilit)-31 b(y)425 b(limit)g(de-)4000
+28387 y(tection)480 b(option)h(is)d(appropriate)i(are)f(ODE)f(systems)h
+(resulting)g(from)h(semi-discretized)f(PDEs)g(\(i.e.,)508
+b(PDEs)4000 29715 y(discretized)473 b(in)f(space\))g(with)i(adv)-31
+b(ection)474 b(and)f(di\256usion,)499 b(but)472 b(with)h(adv)-31
+b(ection)475 b(dominating)g(o)-31 b(v)g(er)473 b(di\256usion.)4000
+31043 y(Di\256usion)338 b(alone)i(pro)31 b(duces)337
+b(pure)h(deca)-31 b(y)339 b(mo)31 b(des,)345 b(while)339
+b(adv)-31 b(ection)341 b(tends)d(to)h(pro)31 b(duce)338
+b(undamp)31 b(ed)338 b(oscillatory)4000 32372 y(mo)31
+b(des.)493 b(A)369 b(mix)h(of)g(the)f(t)-31 b(w)g(o)371
+b(with)g(adv)-31 b(ection)371 b(dominan)-31 b(t)372 b(will)e(ha)-31
+b(v)g(e)371 b(w)-31 b(eakly)371 b(damp)31 b(ed)369 b(oscillatory)j(mo)
+31 b(des.)5660 33779 y(The)403 b Fv(st)-74 b(ald)402
+b Fx(algorithm)j(attempts)f(to)e(detect,)412 b(in)402
+b(a)g(direct)g(manner,)411 b(the)403 b(presence)d(of)j(a)f(stabilit)-31
+b(y)405 b(region)4000 35108 y(b)31 b(oundary)439 b(that)h(is)e
+(limiting)k(the)d(step)f(sizes)g(in)h(the)g(presence)f(of)h(a)g(w)-31
+b(eakly)440 b(damp)31 b(ed)439 b(oscillation)j([10)q(].)702
+b(The)4000 36436 y(algorithm)524 b(supplemen)-31 b(ts)521
+b(\(but)h(di\256ers)e(greatly)j(from\))f(the)f(existing)h(algorithms)i
+(in)d Fv(cv)-25 b(ode)521 b Fx(for)g(c)-31 b(ho)31 b(osing)4000
+37764 y(step)396 b(size)f(and)h(order)g(based)f(on)h(estimated)i(lo)31
+b(cal)397 b(truncation)h(errors.)571 b(It)396 b(w)-31
+b(orks)396 b(directly)h(with)g(history)g(data)4000 39093
+y(that)434 b(is)e(readily)i(a)-31 b(v)-61 b(ailable)435
+b(in)e Fv(cv)-25 b(ode)p Fx(.)684 b(If)432 b(it)i(concludes)f(that)h
+(the)f(step)f(size)h(is)f(in)h(fact)h(stabilit)-31 b(y-limited,)454
+b(it)4000 40421 y(dictates)436 b(a)f(reduction)g(in)g(the)g(metho)31
+b(d)436 b(order,)450 b(regardless)435 b(of)g(the)g(outcome)h(of)f(the)g
+(error-based)f(algorithm.)4000 41750 y(The)486 b Fv(st)-74
+b(ald)486 b Fx(algorithm)i(has)e(b)31 b(een)485 b(tested)h(in)g(com)-31
+b(bination)489 b(with)e(the)e Fv(v)-25 b(ode)486 b Fx(solv)-31
+b(er)486 b(on)g(linear)h(adv)-31 b(ection-)4000 43078
+y(dominated)448 b(adv)-31 b(ection-di\256usion)449 b(problems)e([11)q
+(],)466 b(where)446 b(it)h(w)-31 b(orks)446 b(w)-31 b(ell.)725
+b(The)446 b(implemen)-31 b(tation)451 b(in)446 b Fv(cv)-25
+b(ode)4000 44406 y Fx(has)369 b(b)31 b(een)369 b(successfully)g(tested)
+h(on)f(linear)h(and)f(nonlinear)i(adv)-31 b(ection-di\256usion)372
+b(problems,)e(among)h(others.)5660 45814 y(This)353 b(stabilit)-31
+b(y)355 b(limit)f(detection)f(option)h(adds)e(some)g(o)-31
+b(v)g(erhead)353 b(computational)j(cost)d(to)g(the)f
+Fv(cv)-25 b(ode)352 b Fx(solu-)4000 47142 y(tion.)559
+b(\(In)391 b(timing)i(tests,)j(these)391 b(o)-31 b(v)g(erhead)392
+b(costs)f(ha)-31 b(v)g(e)392 b(ranged)f(from)g(2\045)h(to)f(7\045)h(of)
+f(the)g(total,)399 b(dep)31 b(ending)392 b(on)4000 48471
+y(the)429 b(size)f(and)h(complexit)-31 b(y)431 b(of)e(the)g(problem,)
+444 b(with)430 b(lo)-31 b(w)g(er)430 b(relativ)-31 b(e)430
+b(costs)f(for)f(larger)h(problems.\))671 b(Therefore,)4000
+49799 y(it)401 b(should)f(b)31 b(e)400 b(activ)-61 b(ated)401
+b(only)g(when)g(there)e(is)h(reasonable)h(exp)31 b(ectation)402
+b(of)f(mo)31 b(des)400 b(in)g(the)g(user's)f(system)i(for)4000
+51128 y(whic)-31 b(h)299 b(it)g(is)f(appropriate.)470
+b(In)297 b(particular,)314 b(if)299 b(a)f Fv(cv)-25 b(ode)299
+b Fx(solution)g(with)h(this)e(option)i(turned)d(o\256)h(app)31
+b(ears)298 b(to)h(tak)-31 b(e)4000 52456 y(an)386 b(inordinately)h
+(large)f(n)-31 b(um)g(b)31 b(er)386 b(of)g(steps)f(at)h(orders)e(3-5)i
+(for)f(no)h(apparen)-31 b(t)386 b(reason)g(in)f(terms)h(of)f(the)h
+(solution)4000 53784 y(time)301 b(scale,)315 b(then)301
+b(there)f(is)g(a)g(go)31 b(o)g(d)301 b(c)-31 b(hance)301
+b(that)h(step)e(sizes)f(are)h(b)31 b(eing)301 b(limited)i(b)-31
+b(y)300 b(stabilit)-31 b(y)-92 b(,)317 b(and)301 b(that)g(turning)4000
+55113 y(on)369 b(the)h(option)h(will)g(impro)-31 b(v)g(e)370
+b(the)g(e\261ciency)g(of)g(the)f(solution.)4000 59195
+y Fs(3.3)1793 b(Ro)50 b(ot\257nding)4000 61768 y Fx(The)468
+b Fv(cv)-25 b(ode)468 b Fx(solv)-31 b(er)468 b(has)f(b)31
+b(een)467 b(augmen)-31 b(ted)469 b(to)f(include)h(a)e(ro)31
+b(ot\257nding)469 b(feature.)788 b(This)468 b(means)g(that,)494
+b(while)4000 63096 y(in)-31 b(tegrating)426 b(the)d(Initial)i(V)-92
+b(alue)423 b(Problem)h(\(3.1\),)439 b Fv(cv)-25 b(ode)423
+b Fx(can)g(also)h(\257nd)f(the)g(ro)31 b(ots)423 b(of)g(a)g(set)g(of)g
+(user-de\257ned)4000 64424 y(functions)488 b Fm(g)9418
+64590 y Fk(i)9787 64424 y Fx(\()p Fm(t;)184 b(y)40 b
+Fx(\))488 b(that)h(dep)31 b(end)487 b(on)g Fm(t)g Fx(and)h(the)f
+(solution)j(v)-31 b(ector)488 b Fm(y)544 b Fx(=)504 b
+Fm(y)40 b Fx(\()p Fm(t)p Fx(\).)847 b(The)488 b(n)-31
+b(um)g(b)31 b(er)487 b(of)h(these)f(ro)31 b(ot)4000 65753
+y(functions)464 b(is)g(arbitrary)-92 b(,)487 b(and)464
+b(if)g(more)f(than)h(one)g Fm(g)26669 65919 y Fk(i)27500
+65753 y Fx(is)f(found)h(to)g(ha)-31 b(v)g(e)465 b(a)e(ro)31
+b(ot)464 b(in)f(an)-31 b(y)464 b(giv)-31 b(en)465 b(in)-31
+b(terv)-61 b(al,)489 b(the)4000 67081 y(v)-61 b(arious)482
+b(ro)31 b(ot)482 b(lo)31 b(cations)483 b(are)e(found)h(and)g(rep)31
+b(orted)481 b(in)h(the)f(order)g(that)i(they)f(o)31 b(ccur)481
+b(on)h(the)f Fm(t)g Fx(axis,)511 b(in)482 b(the)4000
+68409 y(direction)370 b(of)g(in)-31 b(tegration.)5660
+69817 y(Generally)-92 b(,)360 b(this)d(ro)31 b(ot\257nding)358
+b(feature)f(\257nds)f(only)h(ro)31 b(ots)357 b(of)g(o)31
+b(dd)356 b(m)-31 b(ultiplicit)g(y)-92 b(,)364 b(corresp)31
+b(onding)356 b(to)h(c)-31 b(hanges)4000 71146 y(in)401
+b(sign)f(of)h Fm(g)9455 71312 y Fk(i)9824 71146 y Fx(\()p
+Fm(t;)184 b(y)40 b Fx(\()p Fm(t)p Fx(\)\),)410 b(denoted)401
+b Fm(g)18876 71312 y Fk(i)19244 71146 y Fx(\()p Fm(t)p
+Fx(\))g(for)f(short.)586 b(If)400 b(a)h(user)e(ro)31
+b(ot)401 b(function)h(has)e(a)g(ro)31 b(ot)401 b(of)g(ev)-31
+b(en)400 b(m)-31 b(ultiplicit)g(y)4000 72474 y(\(no)433
+b(sign)g(c)-31 b(hange\),)449 b(it)433 b(will)h(probably)g(b)31
+b(e)431 b(missed)i(b)-31 b(y)432 b Fv(cv)-25 b(ode)p
+Fx(.)683 b(If)432 b(suc)-31 b(h)431 b(a)i(ro)31 b(ot)433
+b(is)f(desired,)448 b(the)432 b(user)f(should)4000 73802
+y(reform)-31 b(ulate)371 b(the)e(ro)31 b(ot)370 b(function)h(so)e(that)
+h(it)g(c)-31 b(hanges)370 b(sign)g(at)f(the)h(desired)f(ro)31
+b(ot.)5660 75210 y(The)411 b(basic)f(sc)-31 b(heme)410
+b(used)g(is)g(to)h(c)-31 b(hec)g(k)410 b(for)g(sign)h(c)-31
+b(hanges)411 b(of)f(an)-31 b(y)411 b Fm(g)34916 75376
+y Fk(i)35284 75210 y Fx(\()p Fm(t)p Fx(\))g(o)-31 b(v)g(er)411
+b(eac)-31 b(h)410 b(time)i(step)e(tak)-31 b(en,)422 b(and)4000
+76539 y(then)329 b(\(when)g(a)g(sign)g(c)-31 b(hange)330
+b(is)e(found\))i(to)f(home)g(in)g(on)g(the)g(ro)31 b(ot)329
+b(\(or)g(ro)31 b(ots\))329 b(with)h(a)f(mo)31 b(di\257ed)330
+b(secan)-31 b(t)329 b(metho)31 b(d)4000 77867 y([9)q(].)790
+b(In)468 b(addition,)496 b(eac)-31 b(h)468 b(time)i Fm(g)508
+b Fx(is)468 b(computed,)495 b Fv(cv)-25 b(ode)469 b Fx(c)-31
+b(hec)g(ks)468 b(to)h(see)f(if)g Fm(g)37829 78033 y Fk(i)38198
+77867 y Fx(\()p Fm(t)p Fx(\))473 b(=)g(0)c(exactly)-92
+b(,)495 b(and)468 b(if)h(so)f(it)p Black Black eop
+%%Page: 16 24
+16 23 bop Black 0 2701 a Fy(16)30377 b(Mathematical)424
+b(Considerations)p 0 3144 48001 45 v Black 0 6974 a Fx(rep)31
+b(orts)374 b(this)g(as)g(a)h(ro)31 b(ot.)509 b(Ho)-31
+b(w)g(ev)g(er,)377 b(if)e(an)g(exact)g(zero)f(of)h(an)-31
+b(y)375 b Fm(g)27571 7140 y Fk(i)28313 6974 y Fx(is)g(found)f(at)i(a)e
+(p)31 b(oin)-31 b(t)376 b Fm(t)p Fx(,)f Fv(cv)-25 b(ode)375
+b Fx(computes)g Fm(g)0 8302 y Fx(at)344 b Fm(t)193 b
+Fx(+)h Fm(\277)468 b Fx(for)344 b(a)f(small)h(\(near)g(roundo\256)f
+(lev)-31 b(el\))345 b(incremen)-31 b(t)344 b Fm(\277)125
+b Fx(,)349 b(sligh)-31 b(tly)345 b(further)e(in)g(the)g(direction)i(of)
+e(in)-31 b(tegration,)0 9631 y(and)386 b(if)g(an)-31
+b(y)386 b Fm(g)5835 9797 y Fk(i)6204 9631 y Fx(\()p Fm(t)257
+b Fx(+)g Fm(\277)125 b Fx(\))335 b(=)g(0)386 b(also,)391
+b Fv(cv)-25 b(ode)386 b Fx(stops)g(and)g(rep)31 b(orts)385
+b(an)h(error.)540 b(This)386 b(w)-31 b(a)g(y)-92 b(,)392
+b(eac)-31 b(h)386 b(time)h Fv(cv)-25 b(ode)386 b Fx(tak)-31
+b(es)0 10959 y(a)426 b(time)h(step,)440 b(it)426 b(is)f(guaran)-31
+b(teed)427 b(that)g(the)f(v)-61 b(alues)426 b(of)g(all)g
+Fm(g)25567 11125 y Fk(i)26361 10959 y Fx(are)g(nonzero)f(at)i(some)f
+(past)g(v)-61 b(alue)426 b(of)g Fm(t)p Fx(,)439 b(b)31
+b(ey)-31 b(ond)0 12287 y(whic)g(h)370 b(a)g(searc)-31
+b(h)368 b(for)i(ro)31 b(ots)369 b(is)g(to)h(b)31 b(e)369
+b(done.)1660 13616 y(A)-31 b(t)398 b(an)-31 b(y)398 b(giv)-31
+b(en)398 b(time)h(in)e(the)g(course)g(of)g(the)h(time-stepping,)406
+b(after)398 b(suitable)h(c)-31 b(hec)g(king)398 b(and)f(adjusting)i
+(has)0 14944 y(b)31 b(een)340 b(done,)347 b Fv(cv)-25
+b(ode)342 b Fx(has)f(an)g(in)-31 b(terv)-61 b(al)342
+b(\()p Fm(t)17433 15110 y Fk(l)t(o)18210 14944 y Fm(;)184
+b(t)19101 15110 y Fk(hi)19988 14944 y Fx(])341 b(in)g(whic)-31
+b(h)342 b(ro)31 b(ots)341 b(of)h(the)f Fm(g)31456 15110
+y Fk(i)31824 14944 y Fx(\()p Fm(t)p Fx(\))g(are)g(to)h(b)31
+b(e)340 b(sough)-31 b(t,)348 b(suc)-31 b(h)340 b(that)i
+Fm(t)47113 15110 y Fk(hi)0 16272 y Fx(is)337 b(further)f(ahead)i(in)f
+(the)g(direction)h(of)g(in)-31 b(tegration,)347 b(and)337
+b(all)h Fm(g)26951 16438 y Fk(i)27320 16272 y Fx(\()p
+Fm(t)28150 16438 y Fk(l)t(o)28926 16272 y Fx(\))308 b
+Fp(6)p Fx(=)g(0.)482 b(The)337 b(endp)31 b(oin)-31 b(t)338
+b Fm(t)39398 16438 y Fk(hi)40622 16272 y Fx(is)e(either)i
+Fm(t)45210 16438 y Fk(n)45812 16272 y Fx(,)344 b(the)0
+17601 y(end)430 b(of)h(the)f(time)i(step)e(last)h(tak)-31
+b(en,)447 b(or)431 b(the)f(next)h(requested)f(output)h(time)h
+Fm(t)33613 17767 y Fl(out)35374 17601 y Fx(if)f(this)f(comes)h(so)31
+b(oner.)676 b(The)0 18929 y(endp)31 b(oin)-31 b(t)350
+b Fm(t)4992 19095 y Fk(l)t(o)6117 18929 y Fx(is)e(either)h
+Fm(t)10728 19095 y Fk(n)p Fi(\241)p Fl(1)12463 18929
+y Fx(,)k(or)c(the)f(last)i(output)g(time)f Fm(t)24929
+19095 y Fl(out)26609 18929 y Fx(\(if)h(this)e(o)31 b(ccurred)348
+b(within)i(the)f(last)h(step\),)j(or)c(the)0 20257 y(last)336
+b(ro)31 b(ot)335 b(lo)31 b(cation)338 b(\(if)e(a)f(ro)31
+b(ot)336 b(w)-31 b(as)336 b(just)f(lo)31 b(cated)336
+b(within)h(this)e(step\),)343 b(p)31 b(ossibly)335 b(adjusted)h(sligh)
+-31 b(tly)337 b(to)-31 b(w)g(ard)337 b Fm(t)46417 20423
+y Fk(n)47354 20257 y Fx(if)0 21586 y(an)342 b(exact)g(zero)g(w)-31
+b(as)342 b(found.)484 b(The)342 b(algorithm)i(c)-31 b(hec)g(ks)342
+b Fm(g)381 b Fx(at)342 b Fm(t)25635 21752 y Fk(hi)26863
+21586 y Fx(for)f(zeros)g(and)h(for)g(sign)g(c)-31 b(hanges)342
+b(in)g(\()p Fm(t)43486 21752 y Fk(l)t(o)44263 21586 y
+Fm(;)184 b(t)45154 21752 y Fk(hi)46041 21586 y Fx(\).)484
+b(If)0 22914 y(no)380 b(sign)g(c)-31 b(hanges)381 b(are)f(found,)j
+(then)d(either)h(a)f(ro)31 b(ot)380 b(is)g(rep)31 b(orted)380
+b(\(if)h(some)f Fm(g)32597 23080 y Fk(i)32965 22914 y
+Fx(\()p Fm(t)33795 23080 y Fk(hi)34682 22914 y Fx(\))326
+b(=)g(0\))380 b(or)g(w)-31 b(e)380 b(pro)31 b(ceed)380
+b(to)h(the)0 24242 y(next)391 b(time)g(in)-31 b(terv)-61
+b(al)391 b(\(starting)h(at)f Fm(t)15430 24408 y Fk(hi)16317
+24242 y Fx(\).)556 b(If)389 b(one)i(or)f(more)g(sign)h(c)-31
+b(hanges)390 b(w)-31 b(ere)391 b(found,)396 b(then)390
+b(a)h(lo)31 b(op)391 b(is)f(en)-31 b(tered)0 25571 y(to)370
+b(lo)31 b(cate)371 b(the)e(ro)31 b(ot)370 b(to)g(within)h(a)e(rather)g
+(tigh)-31 b(t)371 b(tolerance,)g(giv)-31 b(en)371 b(b)-31
+b(y)12419 28006 y Fm(\277)433 b Fx(=)307 b(100)248 b
+Fp(\244)e Fm(U)367 b Fp(\244)246 b Fx(\()p Fp(j)p Fm(t)20269
+28172 y Fk(n)20872 28006 y Fp(j)h Fx(+)f Fp(j)p Fm(h)p
+Fp(j)p Fx(\))1108 b(\()p Fm(U)428 b Fx(=)308 b(unit)370
+b(roundo\256\))f Fm(:)0 30441 y Fx(Whenev)-31 b(er)375
+b(sign)h(c)-31 b(hanges)376 b(are)f(seen)g(in)h(t)-31
+b(w)g(o)377 b(or)e(more)h(ro)31 b(ot)376 b(functions,)j(the)c(one)h
+(deemed)g(most)g(lik)-31 b(ely)378 b(to)e(ha)-31 b(v)g(e)0
+31770 y(its)415 b(ro)31 b(ot)415 b(o)31 b(ccur)414 b(\257rst)g(is)h
+(the)g(one)g(with)h(the)e(largest)i(v)-61 b(alue)415
+b(of)g Fp(j)p Fm(g)27738 31936 y Fk(i)28107 31770 y Fx(\()p
+Fm(t)28937 31936 y Fk(hi)29824 31770 y Fx(\))p Fp(j)p
+Fm(=)p Fp(j)p Fm(g)31949 31936 y Fk(i)32320 31770 y Fx(\()p
+Fm(t)33150 31936 y Fk(hi)34037 31770 y Fx(\))276 b Fp(\241)h
+Fm(g)36409 31936 y Fk(i)36777 31770 y Fx(\()p Fm(t)37607
+31936 y Fk(l)t(o)38384 31770 y Fx(\))p Fp(j)p Fx(,)427
+b(corresp)31 b(onding)415 b(to)0 33098 y(the)c(closest)g(to)h
+Fm(t)7302 33264 y Fk(l)t(o)8489 33098 y Fx(of)f(the)g(secan)-31
+b(t)412 b(metho)31 b(d)411 b(v)-61 b(alues.)618 b(A)-31
+b(t)412 b(eac)-31 b(h)411 b(pass)f(through)i(the)f(lo)31
+b(op,)422 b(a)411 b(new)g(v)-61 b(alue)412 b Fm(t)45231
+33264 y Fk(mid)47256 33098 y Fx(is)0 34426 y(set,)362
+b(strictly)e(within)h(the)f(searc)-31 b(h)358 b(in)-31
+b(terv)-61 b(al,)363 b(and)d(the)f(v)-61 b(alues)360
+b(of)g Fm(g)27895 34592 y Fk(i)28263 34426 y Fx(\()p
+Fm(t)29093 34592 y Fk(mid)30708 34426 y Fx(\))g(are)f(c)-31
+b(hec)g(k)g(ed.)490 b(Then)359 b(either)h Fm(t)44232
+34592 y Fk(l)t(o)45367 34426 y Fx(or)f Fm(t)47113 34592
+y Fk(hi)0 35755 y Fx(is)384 b(reset)f(to)h Fm(t)5563
+35921 y Fk(mid)7561 35755 y Fx(according)h(to)g(whic)-31
+b(h)384 b(subin)-31 b(terv)-61 b(al)385 b(is)f(found)g(to)g(ha)-31
+b(v)g(e)385 b(the)f(sign)g(c)-31 b(hange.)537 b(If)384
+b(there)f(is)h(none)g(in)0 37083 y(\()p Fm(t)830 37249
+y Fk(l)t(o)1607 37083 y Fm(;)184 b(t)2498 37249 y Fk(mid)4114
+37083 y Fx(\))338 b(but)h(some)f Fm(g)10151 37249 y Fk(i)10520
+37083 y Fx(\()p Fm(t)11350 37249 y Fk(mid)12965 37083
+y Fx(\))308 b(=)f(0,)345 b(then)339 b(that)g(ro)31 b(ot)339
+b(is)f(rep)31 b(orted.)482 b(The)339 b(lo)31 b(op)339
+b(con)-31 b(tin)g(ues)339 b(un)-31 b(til)340 b Fp(j)p
+Fm(t)42007 37249 y Fk(hi)43078 37083 y Fp(\241)184 b
+Fm(t)44523 37249 y Fk(l)t(o)45300 37083 y Fp(j)308 b
+Fm(<)f(\277)125 b Fx(,)0 38412 y(and)369 b(then)h(the)f(rep)31
+b(orted)369 b(ro)31 b(ot)370 b(lo)31 b(cation)371 b(is)e
+Fm(t)19141 38578 y Fk(hi)20028 38412 y Fx(.)1660 39740
+y(In)g(the)h(lo)31 b(op)370 b(to)g(lo)31 b(cate)370 b(the)g(ro)31
+b(ot)370 b(of)f Fm(g)18027 39906 y Fk(i)18396 39740 y
+Fx(\()p Fm(t)p Fx(\),)h(the)f(form)-31 b(ula)371 b(for)f
+Fm(t)28396 39906 y Fk(mid)30379 39740 y Fx(is)12131 42175
+y Fm(t)12531 42341 y Fk(mid)14453 42175 y Fx(=)307 b
+Fm(t)16021 42341 y Fk(hi)17154 42175 y Fp(\241)246 b
+Fx(\()p Fm(t)19091 42341 y Fk(hi)20224 42175 y Fp(\241)f
+Fm(t)21730 42341 y Fk(l)t(o)22507 42175 y Fx(\))p Fm(g)23465
+42341 y Fk(i)23834 42175 y Fx(\()p Fm(t)24664 42341 y
+Fk(hi)25551 42175 y Fx(\))p Fm(=)p Fx([)p Fm(g)27369
+42341 y Fk(i)27739 42175 y Fx(\()p Fm(t)28569 42341 y
+Fk(hi)29456 42175 y Fx(\))h Fp(\241)g Fm(\256)t(g)32479
+42341 y Fk(i)32848 42175 y Fx(\()p Fm(t)33678 42341 y
+Fk(l)t(o)34455 42175 y Fx(\)])370 b Fm(;)0 44610 y Fx(where)408
+b Fm(\256)413 b Fx(a)c(w)-31 b(eigh)g(t)410 b(parameter.)612
+b(On)408 b(the)h(\257rst)f(t)-31 b(w)g(o)410 b(passes)d(through)j(the)e
+(lo)31 b(op,)420 b Fm(\256)413 b Fx(is)408 b(set)h(to)g(1,)419
+b(making)410 b Fm(t)46385 44776 y Fk(mid)0 45939 y Fx(the)326
+b(secan)-31 b(t)326 b(metho)31 b(d)327 b(v)-61 b(alue.)478
+b(Thereafter,)336 b Fm(\256)329 b Fx(is)d(reset)f(according)i(to)g(the)
+e(side)h(of)g(the)g(subin)-31 b(terv)-61 b(al)327 b(\(lo)-31
+b(w)327 b(vs)f(high,)0 47267 y(i.e.)498 b(to)-31 b(w)g(ard)373
+b Fm(t)6006 47433 y Fk(l)t(o)7153 47267 y Fx(vs)e(to)-31
+b(w)g(ard)372 b Fm(t)12639 47433 y Fk(hi)13526 47267
+y Fx(\))f(in)g(whic)-31 b(h)372 b(the)f(sign)g(c)-31
+b(hange)372 b(w)-31 b(as)371 b(found)g(in)h(the)f(previous)g(t)-31
+b(w)g(o)372 b(passes.)497 b(If)371 b(the)0 48596 y(t)-31
+b(w)g(o)446 b(sides)d(w)-31 b(ere)445 b(opp)31 b(osite,)464
+b Fm(\256)448 b Fx(is)c(set)g(to)h(1.)718 b(If)444 b(the)g(t)-31
+b(w)g(o)446 b(sides)e(w)-31 b(ere)444 b(the)g(same,)464
+b Fm(\256)448 b Fx(is)c(halv)-31 b(ed)445 b(\(if)h(on)e(the)g(lo)-31
+b(w)0 49924 y(side\))351 b(or)g(doubled)h(\(if)g(on)f(the)g(high)h
+(side\).)487 b(The)351 b(v)-61 b(alue)351 b(of)h Fm(t)25226
+50090 y Fk(mid)27191 49924 y Fx(is)f(closer)g(to)h Fm(t)33087
+50090 y Fk(l)t(o)34214 49924 y Fx(when)f Fm(\256)312
+b(<)307 b Fx(1)352 b(and)f(closer)g(to)g Fm(t)47113 50090
+y Fk(hi)0 51252 y Fx(when)408 b Fm(\256)376 b(>)c Fx(1.)609
+b(If)407 b(the)h(ab)31 b(o)-31 b(v)g(e)409 b(v)-61 b(alue)409
+b(of)f Fm(t)17578 51418 y Fk(mid)19600 51252 y Fx(is)g(within)h
+Fm(\277)125 b(=)p Fx(2)409 b(of)f Fm(t)28057 51418 y
+Fk(l)t(o)29241 51252 y Fx(or)g Fm(t)31036 51418 y Fk(hi)31923
+51252 y Fx(,)417 b(it)409 b(is)f(adjusted)g(in)-31 b(w)g(ard,)419
+b(suc)-31 b(h)408 b(that)0 52581 y(its)348 b(fractional)h(distance)f
+(from)g(the)f(endp)31 b(oin)-31 b(t)349 b(\(relativ)-31
+b(e)349 b(to)f(the)f(in)-31 b(terv)-61 b(al)349 b(size\))e(is)h(b)31
+b(et)-31 b(w)g(een)348 b(.1)g(and)f(.5)h(\(.5)g(b)31
+b(eing)0 53909 y(the)369 b(midp)31 b(oin)-31 b(t\),)373
+b(and)c(the)h(actual)g(distance)g(from)g(the)g(endp)31
+b(oin)-31 b(t)370 b(is)f(at)h(least)g Fm(\277)125 b(=)p
+Fx(2.)p Black Black eop
+%%Page: 17 25
+17 24 bop Black Black 4000 15317 a Ft(Chapter)861 b(4)4000
+20892 y Fw(Co)86 b(de)1033 b(Organization)4000 27353
+y Fs(4.1)1793 b(SUNDIALS)599 b(organization)4000 29854
+y Fx(The)485 b(family)h(of)f(solv)-31 b(ers)485 b(referred)e(to)i(as)f
+Fv(sundials)f Fx(consists)i(of)g(the)g(solv)-31 b(ers)484
+b Fv(cv)-25 b(ode)485 b Fx(\(for)g(ODE)f(systems\),)4000
+31182 y Fv(kinsol)400 b Fx(\(for)i(nonlinear)h(algebraic)g(systems\),)
+410 b(and)402 b Fv(id)-25 b(a)401 b Fx(\(for)h(di\256eren)-31
+b(tial-algebraic)405 b(systems\).)590 b(In)401 b(addition,)4000
+32510 y(v)-61 b(arian)-31 b(ts)517 b(of)g(these)f(whic)-31
+b(h)517 b(also)g(do)f(sensitivit)-31 b(y)519 b(analysis)e(calculations)
+i(are)d(a)-31 b(v)-61 b(ailable)519 b(or)d(in)g(dev)-31
+b(elopmen)g(t.)4000 33839 y Fv(cv)-25 b(odes)p Fx(,)460
+b(an)442 b(extension)g(of)g Fv(cv)-25 b(ode)442 b Fx(that)g(pro)-31
+b(vides)442 b(b)31 b(oth)441 b(forw)-31 b(ard)443 b(and)e(adjoin)-31
+b(t)443 b(sensitivit)-31 b(y)444 b(capabilities)g(is)4000
+35167 y(a)-31 b(v)-61 b(ailable,)372 b(while)f Fv(id)-25
+b(as)369 b Fx(is)g(curren)-31 b(tly)369 b(in)h(dev)-31
+b(elopmen)g(t.)5660 36536 y(The)256 b(v)-61 b(arious)256
+b(solv)-31 b(ers)256 b(of)g(this)g(family)i(share)d(man)-31
+b(y)257 b(sub)31 b(ordinate)256 b(mo)31 b(dules.)456
+b(F)-92 b(or)255 b(this)h(reason,)279 b(it)256 b(is)g(organized)4000
+37864 y(as)396 b(a)h(family)-92 b(,)406 b(with)397 b(a)g(directory)g
+(structure)f(that)i(exploits)g(that)f(sharing)g(\(see)f(Fig.)575
+b(4.1\).)h(The)397 b(follo)-31 b(wing)400 b(is)d(a)4000
+39193 y(list)370 b(of)g(the)f(solv)-31 b(er)370 b(pac)-31
+b(k)-61 b(ages)370 b(presen)-31 b(tly)369 b(a)-31 b(v)-61
+b(ailable:)p Black 5660 41529 a Fp(\262)p Black 554 w
+Fv(cv)-25 b(ode)p Fx(,)371 b(a)e(solv)-31 b(er)370 b(for)f(sti\256)g
+(and)h(nonsti\256)g(ODEs)e Fm(dy)40 b(=dt)308 b Fx(=)f
+Fm(f)119 b Fx(\()p Fm(t;)184 b(y)40 b Fx(\);)p Black
+5660 43906 a Fp(\262)p Black 554 w Fv(cv)-25 b(odes)p
+Fx(,)392 b(a)387 b(solv)-31 b(er)387 b(for)f(sti\256)h(and)g
+(nonsti\256)g(ODEs)f Fm(dy)40 b(=dt)336 b Fx(=)g Fm(f)119
+b Fx(\()p Fm(t;)184 b(y)40 b(;)184 b(p)p Fx(\))389 b(with)f(sensitivit)
+-31 b(y)388 b(analysis)g(capa-)6767 45234 y(bilities;)p
+Black 5660 47611 a Fp(\262)p Black 554 w Fv(kinsol)p
+Fx(,)368 b(a)i(solv)-31 b(er)369 b(for)h(nonlinear)g(algebraic)h
+(systems)e Fm(F)154 b Fx(\()p Fm(u)p Fx(\))308 b(=)f(0;)p
+Black 5660 49987 a Fp(\262)p Black 554 w Fv(id)-25 b(a)p
+Fx(,)370 b(a)f(solv)-31 b(er)370 b(for)f(di\256eren)-31
+b(tial-algebraic)373 b(systems)c Fm(F)154 b Fx(\()p Fm(t;)184
+b(y)40 b(;)184 b(y)33053 49586 y Fi(0)33364 49987 y Fx(\))308
+b(=)g(0.)4000 53864 y Fs(4.2)1793 b(CV)-50 b(ODE)598
+b(organization)4000 56364 y Fx(The)259 b Fv(cv)-25 b(ode)259
+b Fx(pac)-31 b(k)-61 b(age)259 b(is)f(written)i(in)f(the)f(ANSI)g
+Fv(C)h Fx(language.)458 b(The)258 b(follo)-31 b(wing)262
+b(summarizes)d(the)g(basic)f(structure)4000 57693 y(of)370
+b(the)f(pac)-31 b(k)-61 b(age,)371 b(although)g(kno)-31
+b(wledge)372 b(of)d(this)h(structure)f(is)g(not)h(necessary)e(for)h
+(its)h(use.)5660 59062 y(The)404 b(o)-31 b(v)g(erall)405
+b(organization)h(of)e(the)f Fv(cv)-25 b(ode)404 b Fx(pac)-31
+b(k)-61 b(age)404 b(is)f(sho)-31 b(wn)404 b(in)f(Figure)g(4.2.)595
+b(The)404 b(cen)-31 b(tral)404 b(in)-31 b(tegration)4000
+60390 y(mo)31 b(dule,)504 b(implemen)-31 b(ted)479 b(in)d(the)g
+(\257les)g Fu(cvode.h)h Fx(and)g Fu(cvode.c)p Fx(,)504
+b(deals)476 b(with)h(the)g(ev)-61 b(aluation)478 b(of)f(in)-31
+b(tegration)4000 61718 y(co)31 b(e\261cien)-31 b(ts,)313
+b(the)298 b(functional)i(or)d(Newton)i(iteration)g(pro)31
+b(cess,)311 b(estimation)300 b(of)e(lo)31 b(cal)299 b(error,)311
+b(selection)299 b(of)f(stepsize)4000 63047 y(and)523
+b(order,)561 b(and)522 b(in)-31 b(terp)31 b(olation)526
+b(to)e(user)d(output)j(p)31 b(oin)-31 b(ts,)562 b(among)524
+b(other)f(issues.)952 b(Although)525 b(this)e(mo)31 b(dule)4000
+64375 y(con)-31 b(tains)436 b(logic)f(for)f(the)g(basic)h(Newton)g
+(iteration)h(algorithm,)454 b(it)435 b(has)e(no)i(kno)-31
+b(wledge)436 b(of)e(the)g(metho)31 b(d)435 b(b)31 b(eing)4000
+65703 y(used)441 b(to)h(solv)-31 b(e)442 b(the)f(linear)h(systems)g
+(that)g(arise.)709 b(F)-92 b(or)440 b(an)-31 b(y)442
+b(giv)-31 b(en)443 b(user)d(problem,)461 b(one)441 b(of)h(the)f(linear)
+i(system)4000 67032 y(mo)31 b(dules)370 b(is)f(sp)31
+b(eci\257ed,)369 b(and)h(is)f(then)g(in)-31 b(v)g(ok)g(ed)371
+b(as)e(needed)g(during)h(the)f(in)-31 b(tegration.)5660
+68401 y(A)g(t)370 b(presen)-31 b(t,)370 b(the)f(pac)-31
+b(k)-61 b(age)371 b(includes)e(the)g(follo)-31 b(wing)373
+b(four)d Fv(cv)-25 b(ode)369 b Fx(linear)h(system)g(mo)31
+b(dules:)p Black 5660 70737 a Fp(\262)p Black 554 w Fv(cvdense)p
+Fx(:)494 b(LU)369 b(factorization)k(and)c(bac)-31 b(ksolving)372
+b(with)e(dense)f(matrices;)p Black 5660 73113 a Fp(\262)p
+Black 554 w Fv(cvband)p Fx(:)493 b(LU)369 b(factorization)k(and)c(bac)
+-31 b(ksolving)372 b(with)e(banded)g(matrices;)p Black
+5660 75490 a Fp(\262)p Black 554 w Fv(cvdia)-25 b(g)p
+Fx(:)493 b(an)369 b(in)-31 b(ternally)372 b(generated)e(diagonal)i
+(appro)-31 b(ximation)372 b(to)e(the)g(Jacobian;)p Black
+5660 77867 a Fp(\262)p Black 554 w Fv(cvspgmr)p Fx(:)492
+b(scaled)370 b(preconditioned)h(GMRES)d(metho)31 b(d.)p
+Black Black eop
+%%Page: 18 26
+18 25 bop Black 0 2701 a Fy(18)36248 b(Co)35 b(de)426
+b(Organization)p 0 3144 48001 45 v Black Black 0 33745
+a @beginspecial 0 @llx 0 @lly 804 @urx 301 @ury 4320
+ at rwi @setspecial
+%%BeginDocument: sunorg1.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: sunorg.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Wed Aug 20 14:17:18 2003
+%%For: radu at tux111.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 804 301
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.988 0.953 0.549 srgb} bind def
+/col33 {0.631 0.816 0.922 srgb} bind def
+/col34 {0.553 0.922 0.553 srgb} bind def
+/col35 {0.855 0.855 0.855 srgb} bind def
+
+end
+save
+newpath 0 301 moveto 0 0 lineto 804 0 lineto 804 301 lineto closepath clip newpath
+-3.2 303.1 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 10800 3900 m
+ 10800 4350 l gs col8 s gr 
+% Polyline
+n 180 1938 m 75 1938 75 2231 105 arcto 4 {pop} repeat
+  75 2336 1245 2336 105 arcto 4 {pop} repeat
+  1350 2336 1350 2043 105 arcto 4 {pop} repeat
+  1350 1938 180 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+285 2212 m
+gs 1 -1 sc (CVDIAG) col8 sh gr
+% Polyline
+n 1530 1938 m 1425 1938 1425 2231 105 arcto 4 {pop} repeat
+  1425 2336 2595 2336 105 arcto 4 {pop} repeat
+  2700 2336 2700 2043 105 arcto 4 {pop} repeat
+  2700 1938 1530 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+1537 2212 m
+gs 1 -1 sc (CVDENSE) col8 sh gr
+% Polyline
+n 2880 1938 m 2775 1938 2775 2231 105 arcto 4 {pop} repeat
+  2775 2336 3945 2336 105 arcto 4 {pop} repeat
+  4050 2336 4050 2043 105 arcto 4 {pop} repeat
+  4050 1938 2880 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+2955 2212 m
+gs 1 -1 sc (CVBAND) col8 sh gr
+% Polyline
+n 4230 1938 m 4125 1938 4125 2231 105 arcto 4 {pop} repeat
+  4125 2336 5295 2336 105 arcto 4 {pop} repeat
+  5400 2336 5400 2043 105 arcto 4 {pop} repeat
+  5400 1938 4230 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+4222 2212 m
+gs 1 -1 sc (CVSPGMR) col8 sh gr
+% Polyline
+n 6030 1938 m 5925 1938 5925 2231 105 arcto 4 {pop} repeat
+  5925 2336 7095 2336 105 arcto 4 {pop} repeat
+  7200 2336 7200 2043 105 arcto 4 {pop} repeat
+  7200 1938 6030 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+5985 2212 m
+gs 1 -1 sc (IDADENSE) col8 sh gr
+% Polyline
+n 7380 1938 m 7275 1938 7275 2231 105 arcto 4 {pop} repeat
+  7275 2336 8445 2336 105 arcto 4 {pop} repeat
+  8550 2336 8550 2043 105 arcto 4 {pop} repeat
+  8550 1938 7380 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+7402 2212 m
+gs 1 -1 sc (IDABAND) col8 sh gr
+% Polyline
+n 8730 1938 m 8625 1938 8625 2231 105 arcto 4 {pop} repeat
+  8625 2336 9795 2336 105 arcto 4 {pop} repeat
+  9900 2336 9900 2043 105 arcto 4 {pop} repeat
+  9900 1938 8730 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+8670 2212 m
+gs 1 -1 sc (IDASPGMR) col8 sh gr
+% Polyline
+n 7380 963 m 7275 963 7275 1256 105 arcto 4 {pop} repeat
+  7275 1361 8445 1361 105 arcto 4 {pop} repeat
+  8550 1361 8550 1068 105 arcto 4 {pop} repeat
+  8550 963 7380 963 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+7710 1237 m
+gs 1 -1 sc (IDA) col8 sh gr
+% Polyline
+n 11280 963 m 11175 963 11175 1256 105 arcto 4 {pop} repeat
+  11175 1361 12345 1361 105 arcto 4 {pop} repeat
+  12450 1361 12450 1068 105 arcto 4 {pop} repeat
+  12450 963 11280 963 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+11392 1237 m
+gs 1 -1 sc (KINSOL) col8 sh gr
+% Polyline
+n 11280 1938 m 11175 1938 11175 2231 105 arcto 4 {pop} repeat
+  11175 2336 12345 2336 105 arcto 4 {pop} repeat
+  12450 2336 12450 2043 105 arcto 4 {pop} repeat
+  12450 1938 11280 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+11220 2212 m
+gs 1 -1 sc (KINSPGMR) col8 sh gr
+% Polyline
+n 1230 963 m 1125 963 1125 1256 105 arcto 4 {pop} repeat
+  1125 1361 2295 1361 105 arcto 4 {pop} repeat
+  2400 1361 2400 1068 105 arcto 4 {pop} repeat
+  2400 963 1230 963 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+1372 1237 m
+gs 1 -1 sc (CVODE) col8 sh gr
+% Polyline
+n 3180 963 m 3075 963 3075 1256 105 arcto 4 {pop} repeat
+  3075 1361 4245 1361 105 arcto 4 {pop} repeat
+  4350 1361 4350 1068 105 arcto 4 {pop} repeat
+  4350 963 3180 963 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+3255 1237 m
+gs 1 -1 sc (CVODES) col8 sh gr
+% Polyline
+n 5580 63 m 5475 63 5475 356 105 arcto 4 {pop} repeat
+  5475 461 6645 461 105 arcto 4 {pop} repeat
+  6750 461 6750 168 105 arcto 4 {pop} repeat
+  6750 63 5580 63 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+5565 337 m
+gs 1 -1 sc (SUNDIALS) col8 sh gr
+% Polyline
+n 3300 3514 m 4575 3514 l 4575 3911 l 3300 3911 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+3562 3787 m
+gs 1 -1 sc (DENSE) col8 sh gr
+% Polyline
+n 7725 3525 m 9000 3525 l 9000 4275 l 7725 4275 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+7972 3825 m
+gs 1 -1 sc (SPGMR) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+7830 4125 m
+gs 1 -1 sc (ITERATIVE) col8 sh gr
+% Polyline
+n 5475 3514 m 6750 3514 l 6750 3911 l 5475 3911 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+5805 3787 m
+gs 1 -1 sc (BAND) col8 sh gr
+% Polyline
+n 10200 3514 m 11475 3514 l 11475 3911 l 10200 3911 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+10380 3780 m
+gs 1 -1 sc (NVECTOR) col8 sh gr
+% Polyline
+n 8325 4644 m 10800 4644 l 10800 5030 l 8325 5030 l
+ cp gs col35 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+8715 4882 m
+gs 1 -1 sc (NVECTOR_SERIAL) col8 sh gr
+% Polyline
+n 10950 4644 m 13425 4644 l 13425 5030 l 10950 5030 l
+ cp gs col35 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+11182 4882 m
+gs 1 -1 sc (NVECTOR_PARALLEL) col8 sh gr
+% Polyline
+n 2025 2325 m 2025 2775 l 6600 2775 l
+ 6600 2325 l gs col8 s gr 
+% Polyline
+n 3375 2325 m 3375 2925 l 7950 2925 l
+ 7950 2325 l gs col8 s gr 
+% Polyline
+n 4725 2325 m 4725 3150 l 11850 3150 l
+ 11850 2325 l gs col8 s gr 
+% Polyline
+n 9300 2325 m
+ 9300 3150 l gs col8 s gr 
+% Polyline
+n 1725 1350 m 1725 1575 l 3675 1575 l
+ 3675 1350 l gs col8 s gr 
+% Polyline
+gs  clippath
+4680 1965 m 4770 1965 l 4770 1808 l 4725 1928 l 4680 1808 l cp
+705 1965 m 795 1965 l 795 1808 l 750 1928 l 705 1808 l cp
+eoclip
+n 750 1950 m 750 1725 l 4725 1725 l
+ 4725 1950 l gs col8 s gr gr
+
+% arrowhead
+n 705 1808 m 750 1928 l 795 1808 l 705 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 4680 1808 m 4725 1928 l 4770 1808 l 4680 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+3930 3540 m 4020 3540 l 4020 3383 l 3975 3503 l 3930 3383 l cp
+eoclip
+n 3975 2775 m
+ 3975 3525 l gs col8 s gr gr
+
+% arrowhead
+n 3930 3383 m 3975 3503 l 4020 3383 l 3930 3383 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6030 3540 m 6120 3540 l 6120 3383 l 6075 3503 l 6030 3383 l cp
+eoclip
+n 6075 2925 m
+ 6075 3525 l gs col8 s gr gr
+
+% arrowhead
+n 6030 3383 m 6075 3503 l 6120 3383 l 6030 3383 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8280 3540 m 8370 3540 l 8370 3383 l 8325 3503 l 8280 3383 l cp
+eoclip
+n 8325 3150 m
+ 8325 3525 l gs col8 s gr gr
+
+% arrowhead
+n 8280 3383 m 8325 3503 l 8370 3383 l 8280 3383 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+11805 1965 m 11895 1965 l 11895 1808 l 11850 1928 l 11805 1808 l cp
+eoclip
+n 11850 1350 m
+ 11850 1950 l gs col8 s gr gr
+
+% arrowhead
+n 11805 1808 m 11850 1928 l 11895 1808 l 11805 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+11805 990 m 11895 990 l 11895 833 l 11850 953 l 11805 833 l cp
+1680 990 m 1770 990 l 1770 833 l 1725 953 l 1680 833 l cp
+eoclip
+n 1725 975 m 1725 675 l 11850 675 l
+ 11850 975 l gs col8 s gr gr
+
+% arrowhead
+n 1680 833 m 1725 953 l 1770 833 l 1680 833 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 11805 833 m 11850 953 l 11895 833 l 11805 833 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+9255 1965 m 9345 1965 l 9345 1808 l 9300 1928 l 9255 1808 l cp
+6555 1965 m 6645 1965 l 6645 1808 l 6600 1928 l 6555 1808 l cp
+eoclip
+n 6600 1950 m 6600 1725 l 9300 1725 l
+ 9300 1950 l gs col8 s gr gr
+
+% arrowhead
+n 6555 1808 m 6600 1928 l 6645 1808 l 6555 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 9255 1808 m 9300 1928 l 9345 1808 l 9255 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 7950 1350 m
+ 7950 1725 l gs col8 s gr 
+% Polyline
+gs  clippath
+3630 990 m 3720 990 l 3720 833 l 3675 953 l 3630 833 l cp
+eoclip
+n 3675 675 m
+ 3675 975 l gs col8 s gr gr
+
+% arrowhead
+n 3630 833 m 3675 953 l 3720 833 l 3630 833 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+7905 990 m 7995 990 l 7995 833 l 7950 953 l 7905 833 l cp
+eoclip
+n 7950 675 m
+ 7950 975 l gs col8 s gr gr
+
+% arrowhead
+n 7905 833 m 7950 953 l 7995 833 l 7905 833 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+12030 4665 m 12120 4665 l 12120 4508 l 12075 4628 l 12030 4508 l cp
+9480 4665 m 9570 4665 l 9570 4508 l 9525 4628 l 9480 4508 l cp
+eoclip
+n 9525 4650 m 9525 4350 l 12075 4350 l
+ 12075 4650 l gs col8 s gr gr
+
+% arrowhead
+n 9480 4508 m 9525 4628 l 9570 4508 l 9480 4508 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 12030 4508 m 12075 4628 l 12120 4508 l 12030 4508 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 6075 450 m
+ 6075 675 l gs col8 s gr 
+% Polyline
+gs  clippath
+1980 1965 m 2070 1965 l 2070 1808 l 2025 1928 l 1980 1808 l cp
+eoclip
+n 2025 1725 m
+ 2025 1950 l gs col8 s gr gr
+
+% arrowhead
+n 1980 1808 m 2025 1928 l 2070 1808 l 1980 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+3330 1965 m 3420 1965 l 3420 1808 l 3375 1928 l 3330 1808 l cp
+eoclip
+n 3375 1725 m
+ 3375 1950 l gs col8 s gr gr
+
+% arrowhead
+n 3330 1808 m 3375 1928 l 3420 1808 l 3330 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+7905 1965 m 7995 1965 l 7995 1808 l 7950 1928 l 7905 1808 l cp
+eoclip
+n 7950 1725 m
+ 7950 1950 l gs col8 s gr gr
+
+% arrowhead
+n 7905 1808 m 7950 1928 l 7995 1808 l 7905 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 2775 1575 m
+ 2775 1725 l gs col8 s gr 
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial 19361 36180 a Fg(\(a\))314 b(High-lev)-26
+b(el)314 b(diagram)0 63101 y @beginspecial 0 @llx 0 @lly
+768 @urx 390 @ury 4320 @rwi @setspecial
+%%BeginDocument: sunorg2.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: sunorg2.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Fri Jul 23 08:13:08 2004
+%%For: radu at tux111.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 768 390
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.592 0.776 0.882 srgb} bind def
+/col33 {0.949 0.914 0.525 srgb} bind def
+/col34 {0.816 0.816 0.816 srgb} bind def
+/col35 {0.961 0.941 0.765 srgb} bind def
+
+end
+save
+newpath 0 390 moveto 0 0 lineto 768 0 lineto 768 390 lineto closepath clip newpath
+-79.7 424.3 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 4200 4050 m 5100 4050 l 5100 4350 l 4200 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 5400 m 5100 5400 l 5100 5700 l 4200 5700 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 5400 m 9675 5400 l 9675 5700 l 8775 5700 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 2100 4050 m 3000 4050 l 3000 4350 l 2100 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 4050 m 7200 4050 l 7200 4350 l 6300 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 4050 m 9675 4050 l 9675 4350 l 8775 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 4050 m 11775 4050 l 11775 4350 l 10875 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 2250 m 9825 2250 l 9825 2550 l 8775 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 2250 m 11925 2250 l 11925 2550 l 10875 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 2250 m 7350 2250 l 7350 2550 l 6300 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 2250 m 5250 2250 l 5250 2550 l 4200 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 2100 2250 m 3150 2250 l 3150 2550 l 2100 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 5850 m 5700 5850 l 5700 6150 l 4200 6150 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 6300 m 5700 6300 l 5700 6600 l 4200 6600 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 6750 m 4800 6750 l 4800 7050 l 4200 7050 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 6750 m 6900 6750 l 6900 7050 l 6300 7050 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 6300 m 7800 6300 l 7800 6600 l 6300 6600 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 5850 m 7800 5850 l 7800 6150 l 6300 6150 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 5850 m 10275 5850 l 10275 6150 l 8775 6150 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 6300 m 10275 6300 l 10275 6600 l 8775 6600 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 6750 m 9375 6750 l 9375 7050 l 8775 7050 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 6750 m 11475 6750 l 11475 7050 l 10875 7050 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 6300 m 12375 6300 l 12375 6600 l 10875 6600 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 5850 m 12375 5850 l 12375 6150 l 10875 6150 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 1350 1650 m 2250 1650 l 2250 1950 l 1350 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 3450 1650 m 4350 1650 l 4350 1950 l 3450 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 5550 1650 m 6450 1650 l 6450 1950 l 5550 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8025 1650 m 8925 1650 l 8925 1950 l 8025 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10125 1650 m 11025 1650 l 11025 1950 l 10125 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 600 m 7500 600 l 7500 900 l 6300 900 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 11625 1650 m 12825 1650 l 12825 1950 l 11625 1950 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 12900 1650 m 14100 1650 l 14100 1950 l 12900 1950 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Courier ff 180.00 scf sf
+2250 3270 m
+gs 1 -1 sc (nvector.h) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 3480 m
+gs 1 -1 sc (dense.h) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 3690 m
+gs 1 -1 sc (spgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 3900 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 2850 m
+gs 1 -1 sc (sundialstypes.h) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 3060 m
+gs 1 -1 sc (sundialsmath.h) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 3480 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 5205 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 5430 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 5430 m
+gs 1 -1 sc (...) col0 sh gr
+% Polyline
+gs  clippath
+4215 4252 m 4215 4147 l 4026 4147 l 4176 4200 l 4026 4252 l cp
+eoclip
+n 3900 4200 m
+ 4200 4200 l gs col8 s gr gr
+
+% arrowhead
+n 4026 4252 m 4176 4200 l 4026 4147 l 4026 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 5602 m 4215 5497 l 4026 5497 l 4176 5550 l 4026 5602 l cp
+eoclip
+n 3900 5550 m
+ 4200 5550 l gs col8 s gr gr
+
+% arrowhead
+n 4026 5602 m 4176 5550 l 4026 5497 l 4026 5602 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 5602 m 8790 5497 l 8601 5497 l 8751 5550 l 8601 5602 l cp
+eoclip
+n 8475 5550 m
+ 8775 5550 l gs col8 s gr gr
+
+% arrowhead
+n 8601 5602 m 8751 5550 l 8601 5497 l 8601 5602 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 1800 1950 m
+ 1800 4200 l gs col8 s gr 
+% Polyline
+n 6000 1950 m
+ 6000 6900 l gs col8 s gr 
+% Polyline
+n 3900 1950 m
+ 3900 6900 l gs col8 s gr 
+% Polyline
+n 8475 1950 m
+ 8475 6900 l gs col8 s gr 
+% Polyline
+n 10575 1950 m
+ 10575 6900 l gs col8 s gr 
+% Polyline
+gs  clippath
+6315 6952 m 6315 6847 l 6126 6847 l 6276 6900 l 6126 6952 l cp
+eoclip
+n 6000 6900 m
+ 6300 6900 l gs col8 s gr gr
+
+% arrowhead
+n 6126 6952 m 6276 6900 l 6126 6847 l 6126 6952 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6315 6502 m 6315 6397 l 6126 6397 l 6276 6450 l 6126 6502 l cp
+eoclip
+n 6000 6450 m
+ 6300 6450 l gs col8 s gr gr
+
+% arrowhead
+n 6126 6502 m 6276 6450 l 6126 6397 l 6126 6502 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6315 6052 m 6315 5947 l 6126 5947 l 6276 6000 l 6126 6052 l cp
+eoclip
+n 6000 6000 m
+ 6300 6000 l gs col8 s gr gr
+
+% arrowhead
+n 6126 6052 m 6276 6000 l 6126 5947 l 6126 6052 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6315 4252 m 6315 4147 l 6126 4147 l 6276 4200 l 6126 4252 l cp
+eoclip
+n 6000 4200 m
+ 6300 4200 l gs col8 s gr gr
+
+% arrowhead
+n 6126 4252 m 6276 4200 l 6126 4147 l 6126 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6315 2452 m 6315 2347 l 6126 2347 l 6276 2400 l 6126 2452 l cp
+eoclip
+n 6000 2400 m
+ 6300 2400 l gs col8 s gr gr
+
+% arrowhead
+n 6126 2452 m 6276 2400 l 6126 2347 l 6126 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 6952 m 4215 6847 l 4026 6847 l 4176 6900 l 4026 6952 l cp
+eoclip
+n 3900 6900 m
+ 4200 6900 l gs col8 s gr gr
+
+% arrowhead
+n 4026 6952 m 4176 6900 l 4026 6847 l 4026 6952 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 6502 m 4215 6397 l 4026 6397 l 4176 6450 l 4026 6502 l cp
+eoclip
+n 3900 6450 m
+ 4200 6450 l gs col8 s gr gr
+
+% arrowhead
+n 4026 6502 m 4176 6450 l 4026 6397 l 4026 6502 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 6052 m 4215 5947 l 4026 5947 l 4176 6000 l 4026 6052 l cp
+eoclip
+n 3900 6000 m
+ 4200 6000 l gs col8 s gr gr
+
+% arrowhead
+n 4026 6052 m 4176 6000 l 4026 5947 l 4026 6052 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 2452 m 4215 2347 l 4026 2347 l 4176 2400 l 4026 2452 l cp
+eoclip
+n 3900 2400 m
+ 4200 2400 l gs col8 s gr gr
+
+% arrowhead
+n 4026 2452 m 4176 2400 l 4026 2347 l 4026 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+2115 2452 m 2115 2347 l 1926 2347 l 2076 2400 l 1926 2452 l cp
+eoclip
+n 1800 2400 m
+ 2100 2400 l gs col8 s gr gr
+
+% arrowhead
+n 1926 2452 m 2076 2400 l 1926 2347 l 1926 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+2115 4252 m 2115 4147 l 1926 4147 l 2076 4200 l 1926 4252 l cp
+eoclip
+n 1800 4200 m
+ 2100 4200 l gs col8 s gr gr
+
+% arrowhead
+n 1926 4252 m 2076 4200 l 1926 4147 l 1926 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+1747 1665 m 1852 1665 l 1852 1476 l 1800 1626 l 1747 1476 l cp
+eoclip
+n 1800 1350 m
+ 1800 1650 l gs col8 s gr gr
+
+% arrowhead
+n 1747 1476 m 1800 1626 l 1852 1476 l 1747 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+3847 1665 m 3952 1665 l 3952 1476 l 3900 1626 l 3847 1476 l cp
+eoclip
+n 3900 1350 m
+ 3900 1650 l gs col8 s gr gr
+
+% arrowhead
+n 3847 1476 m 3900 1626 l 3952 1476 l 3847 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+5947 1665 m 6052 1665 l 6052 1476 l 6000 1626 l 5947 1476 l cp
+eoclip
+n 6000 1350 m
+ 6000 1650 l gs col8 s gr gr
+
+% arrowhead
+n 5947 1476 m 6000 1626 l 6052 1476 l 5947 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6922 1365 m 7027 1365 l 7027 1176 l 6975 1326 l 6922 1176 l cp
+eoclip
+n 6975 900 m
+ 6975 1350 l gs col8 s gr gr
+
+% arrowhead
+n 6922 1176 m 6975 1326 l 7027 1176 l 6922 1176 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8422 1665 m 8527 1665 l 8527 1476 l 8475 1626 l 8422 1476 l cp
+eoclip
+n 8475 1350 m
+ 8475 1650 l gs col8 s gr gr
+
+% arrowhead
+n 8422 1476 m 8475 1626 l 8527 1476 l 8422 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10522 1665 m 10627 1665 l 10627 1476 l 10575 1626 l 10522 1476 l cp
+eoclip
+n 10575 1350 m
+ 10575 1650 l gs col8 s gr gr
+
+% arrowhead
+n 10522 1476 m 10575 1626 l 10627 1476 l 10522 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+12172 1665 m 12277 1665 l 12277 1476 l 12225 1626 l 12172 1476 l cp
+eoclip
+n 12225 1350 m
+ 12225 1650 l gs col8 s gr gr
+
+% arrowhead
+n 12172 1476 m 12225 1626 l 12277 1476 l 12172 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+13447 1665 m 13552 1665 l 13552 1476 l 13500 1626 l 13447 1476 l cp
+eoclip
+n 13500 1350 m
+ 13500 1650 l gs col8 s gr gr
+
+% arrowhead
+n 13447 1476 m 13500 1626 l 13552 1476 l 13447 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 2452 m 10890 2347 l 10701 2347 l 10851 2400 l 10701 2452 l cp
+eoclip
+n 10575 2400 m
+ 10875 2400 l gs col8 s gr gr
+
+% arrowhead
+n 10701 2452 m 10851 2400 l 10701 2347 l 10701 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 2452 m 8790 2347 l 8601 2347 l 8751 2400 l 8601 2452 l cp
+eoclip
+n 8475 2400 m
+ 8775 2400 l gs col8 s gr gr
+
+% arrowhead
+n 8601 2452 m 8751 2400 l 8601 2347 l 8601 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 4252 m 8790 4147 l 8601 4147 l 8751 4200 l 8601 4252 l cp
+eoclip
+n 8475 4200 m
+ 8775 4200 l gs col8 s gr gr
+
+% arrowhead
+n 8601 4252 m 8751 4200 l 8601 4147 l 8601 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 6052 m 8790 5947 l 8601 5947 l 8751 6000 l 8601 6052 l cp
+eoclip
+n 8475 6000 m
+ 8775 6000 l gs col8 s gr gr
+
+% arrowhead
+n 8601 6052 m 8751 6000 l 8601 5947 l 8601 6052 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 6502 m 8790 6397 l 8601 6397 l 8751 6450 l 8601 6502 l cp
+eoclip
+n 8475 6450 m
+ 8775 6450 l gs col8 s gr gr
+
+% arrowhead
+n 8601 6502 m 8751 6450 l 8601 6397 l 8601 6502 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 6952 m 8790 6847 l 8601 6847 l 8751 6900 l 8601 6952 l cp
+eoclip
+n 8475 6900 m
+ 8775 6900 l gs col8 s gr gr
+
+% arrowhead
+n 8601 6952 m 8751 6900 l 8601 6847 l 8601 6952 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 6952 m 10890 6847 l 10701 6847 l 10851 6900 l 10701 6952 l cp
+eoclip
+n 10575 6900 m
+ 10875 6900 l gs col8 s gr gr
+
+% arrowhead
+n 10701 6952 m 10851 6900 l 10701 6847 l 10701 6952 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 6502 m 10890 6397 l 10701 6397 l 10851 6450 l 10701 6502 l cp
+eoclip
+n 10575 6450 m
+ 10875 6450 l gs col8 s gr gr
+
+% arrowhead
+n 10701 6502 m 10851 6450 l 10701 6397 l 10701 6502 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 6052 m 10890 5947 l 10701 5947 l 10851 6000 l 10701 6052 l cp
+eoclip
+n 10575 6000 m
+ 10875 6000 l gs col8 s gr gr
+
+% arrowhead
+n 10701 6052 m 10851 6000 l 10701 5947 l 10701 6052 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 4252 m 10890 4147 l 10701 4147 l 10851 4200 l 10701 4252 l cp
+eoclip
+n 10575 4200 m
+ 10875 4200 l gs col8 s gr gr
+
+% arrowhead
+n 10701 4252 m 10851 4200 l 10701 4147 l 10701 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 1800 1350 m
+ 13500 1350 l gs col8 s gr 
+/Courier ff 180.00 scf sf
+4500 3060 m
+gs 1 -1 sc (cvdense.h) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 3270 m
+gs 1 -1 sc (cvspgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 2850 m
+gs 1 -1 sc (cvodes.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 3060 m
+gs 1 -1 sc (cvodea.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 3270 m
+gs 1 -1 sc (cvdense.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 3480 m
+gs 1 -1 sc (cvspgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 3690 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 4650 m
+gs 1 -1 sc (cvode.c) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 4860 m
+gs 1 -1 sc (cvdense.c) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 5070 m
+gs 1 -1 sc (cvspgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 4650 m
+gs 1 -1 sc (cvodes.c) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 4860 m
+gs 1 -1 sc (cvodea.c) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 5070 m
+gs 1 -1 sc (cvdense.c) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 5280 m
+gs 1 -1 sc (cvspgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 2850 m
+gs 1 -1 sc (kinsol.h) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 3060 m
+gs 1 -1 sc (kinspgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 3270 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 2850 m
+gs 1 -1 sc (ida.h) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 3060 m
+gs 1 -1 sc (idadense.h) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 3270 m
+gs 1 -1 sc (idaspgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 3480 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 4650 m
+gs 1 -1 sc (kinsol.c) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 4860 m
+gs 1 -1 sc (kinspgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 4650 m
+gs 1 -1 sc (ida.c) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 4860 m
+gs 1 -1 sc (idadense.c) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 5070 m
+gs 1 -1 sc (idaspgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 5280 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 2850 m
+gs 1 -1 sc (cvode.h) col0 sh gr
+/Courier ff 180.00 scf sf
+7125 1200 m
+gs 1 -1 sc (configure) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 4860 m
+gs 1 -1 sc (nvector.c) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 5070 m
+gs 1 -1 sc (dense.c) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 5280 m
+gs 1 -1 sc (spgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 4650 m
+gs 1 -1 sc (sundialsmath.c) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 5070 m
+gs 1 -1 sc (...) col0 sh gr
+/Times-Bold ff 210.00 scf sf
+4350 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4350 5625 m
+gs 1 -1 sc (fcmix) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8925 5625 m
+gs 1 -1 sc (fcmix) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4342 6975 m
+gs 1 -1 sc (doc) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4297 6525 m
+gs 1 -1 sc (examples_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4312 6075 m
+gs 1 -1 sc (examples_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6412 6075 m
+gs 1 -1 sc (examples_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6397 6525 m
+gs 1 -1 sc (examples_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6442 6975 m
+gs 1 -1 sc (doc) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8917 6975 m
+gs 1 -1 sc (doc) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8872 6525 m
+gs 1 -1 sc (examples_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8887 6075 m
+gs 1 -1 sc (examples_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8925 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+11025 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6450 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+2250 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+11062 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8962 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6487 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4387 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+2287 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+1492 1875 m
+gs 1 -1 sc (shared) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+3630 1875 m
+gs 1 -1 sc (cvode) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+5685 1875 m
+gs 1 -1 sc (cvodes) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8190 1875 m
+gs 1 -1 sc (kinsol) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+10440 1875 m
+gs 1 -1 sc (ida) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+11805 1875 m
+gs 1 -1 sc (nvec_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+13065 1875 m
+gs 1 -1 sc (nvec_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6525 825 m
+gs 1 -1 sc (sundials) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+10987 6075 m
+gs 1 -1 sc (examples_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+10972 6525 m
+gs 1 -1 sc (examples_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+11017 6975 m
+gs 1 -1 sc (doc) col8 sh gr
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial 19259 65536 a(\(b\))f(Directory)h(structure)p
+Black 12086 68851 a Fx(Figure)369 b(4.1:)494 b(Organization)372
+b(of)e(the)f(SUNDIALS)g(suite)p Black Black Black Black
+eop
+%%Page: 19 27
+19 26 bop Black 4000 2701 a Fy(4.2)425 b(CV)-35 b(ODE)426
+b(organization)32783 b(19)p 4000 3144 48001 45 v Black
+Black 4000 30012 a @beginspecial 0 @llx 0 @lly 660 @urx
+332 @ury 4320 @rwi @setspecial
+%%BeginDocument: cvorg.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: cvorg.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Wed Jan 14 12:08:46 2004
+%%For: radu at tux111.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 660 332
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.965 0.929 0.525 srgb} bind def
+/col33 {0.608 0.792 0.898 srgb} bind def
+/col34 {0.529 0.898 0.529 srgb} bind def
+/col35 {0.831 0.831 0.831 srgb} bind def
+/col36 {0.976 0.957 0.780 srgb} bind def
+/col37 {0.533 0.533 0.533 srgb} bind def
+
+end
+save
+newpath 0 332 moveto 0 0 lineto 660 0 lineto 660 332 lineto closepath clip newpath
+1.3 343.5 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 5400 1650 m
+ 5400 2025 l gs col8 s gr 
+% Polyline
+gs  clippath
+5370 1215 m 5430 1215 l 5430 1048 l 5400 1168 l 5370 1048 l cp
+eoclip
+n 5400 675 m
+ 5400 1200 l gs col36 1.00 shd ef gr gs col37 s gr gr
+
+% arrowhead
+n 5370 1048 m 5400 1168 l 5430 1048 l 5370 1048 l  cp gs col37 1.00 shd ef gr  col37 s
+% Polyline
+n 2700 4425 m
+ 2700 4875 l gs col8 s gr 
+% Polyline
+n 7425 3975 m 8775 3975 l 8775 4725 l 7425 4725 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+7710 4275 m
+gs 1 -1 sc (SPGMR) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+7567 4575 m
+gs 1 -1 sc (ITERATIVE) col8 sh gr
+% Polyline
+n 5625 3975 m 6975 3975 l 6975 4425 l 5625 4425 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+5992 4275 m
+gs 1 -1 sc (BAND) col8 sh gr
+% Polyline
+n 3825 3969 m 5175 3969 l 5175 4430 l 3825 4430 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+4125 4275 m
+gs 1 -1 sc (DENSE) col8 sh gr
+% Polyline
+n 4830 225 m 4725 225 4725 570 105 arcto 4 {pop} repeat
+  4725 675 5970 675 105 arcto 4 {pop} repeat
+  6075 675 6075 330 105 arcto 4 {pop} repeat
+  6075 225 4830 225 105 arcto 4 {pop} repeat
+ cp gs col36 1.00 shd ef gr gs col37 s gr 
+/Times-Bold ff 180.00 scf sf
+4927 517 m
+gs 1 -1 sc (SUNDIALS) col37 sh gr
+% Polyline
+n 3255 1200 m 3150 1200 3150 1545 105 arcto 4 {pop} repeat
+  3150 1650 4395 1650 105 arcto 4 {pop} repeat
+  4500 1650 4500 1305 105 arcto 4 {pop} repeat
+  4500 1200 3255 1200 105 arcto 4 {pop} repeat
+ cp gs col36 1.00 shd ef gr gs col37 s gr 
+/Times-Bold ff 180.00 scf sf
+3652 1492 m
+gs 1 -1 sc (IDA) col37 sh gr
+% Polyline
+n 2848 5254 m 5252 5254 l 5252 5695 l 2848 5695 l
+ cp gs col35 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+3073 5518 m
+gs 1 -1 sc (NVECTOR_PARALLEL) col8 sh gr
+% Polyline
+n 2025 3975 m 3375 3975 l 3375 4425 l 2025 4425 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+2242 4267 m
+gs 1 -1 sc (NVECTOR) col8 sh gr
+% Polyline
+gs  clippath
+8070 3990 m 8130 3990 l 8130 3823 l 8100 3943 l 8070 3823 l cp
+eoclip
+n 8100 2850 m
+ 8100 3975 l gs col8 s gr gr
+
+% arrowhead
+n 8070 3823 m 8100 3943 l 8130 3823 l 8070 3823 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6270 3990 m 6330 3990 l 6330 3823 l 6300 3943 l 6270 3823 l cp
+eoclip
+n 6300 2850 m
+ 6300 3975 l gs col8 s gr gr
+
+% arrowhead
+n 6270 3823 m 6300 3943 l 6330 3823 l 6270 3823 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4470 3990 m 4530 3990 l 4530 3823 l 4500 3943 l 4470 3823 l cp
+eoclip
+n 4500 2850 m
+ 4500 3975 l gs col8 s gr gr
+
+% arrowhead
+n 4470 3823 m 4500 3943 l 4530 3823 l 4470 3823 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8085 3045 m 8085 3105 l 8252 3105 l 8132 3075 l 8252 3045 l cp
+eoclip
+n 9300 3075 m
+ 8100 3075 l gs col8 s gr gr
+
+% arrowhead
+n 8252 3045 m 8132 3075 l 8252 3105 l 8252 3045 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8085 3645 m 8085 3705 l 8252 3705 l 8132 3675 l 8252 3645 l cp
+eoclip
+n 9300 3675 m
+ 8100 3675 l gs col8 s gr gr
+
+% arrowhead
+n 8252 3645 m 8132 3675 l 8252 3705 l 8252 3645 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8070 2415 m 8130 2415 l 8130 2248 l 8100 2368 l 8070 2248 l cp
+2670 2415 m 2730 2415 l 2730 2248 l 2700 2368 l 2670 2248 l cp
+eoclip
+n 2700 2400 m 2700 2025 l 8100 2025 l
+ 8100 2400 l gs col8 s gr gr
+
+% arrowhead
+n 2670 2248 m 2700 2368 l 2730 2248 l 2670 2248 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 8070 2248 m 8100 2368 l 8130 2248 l 8070 2248 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4470 2415 m 4530 2415 l 4530 2248 l 4500 2368 l 4470 2248 l cp
+eoclip
+n 4500 2025 m
+ 4500 2400 l gs col8 s gr gr
+
+% arrowhead
+n 4470 2248 m 4500 2368 l 4530 2248 l 4470 2248 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6270 2415 m 6330 2415 l 6330 2248 l 6300 2368 l 6270 2248 l cp
+eoclip
+n 6300 2025 m
+ 6300 2400 l gs col8 s gr gr
+
+% arrowhead
+n 6270 2248 m 6300 2368 l 6330 2248 l 6270 2248 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+645 1215 m 705 1215 l 705 1048 l 675 1168 l 645 1048 l cp
+eoclip
+n 4725 450 m 675 450 l
+ 675 1200 l gs col37 s gr gr
+
+% arrowhead
+n 645 1048 m 675 1168 l 705 1048 l 645 1048 l  cp gs col37 1.00 shd ef gr  col37 s
+% Polyline
+gs  clippath
+2220 1215 m 2280 1215 l 2280 1048 l 2250 1168 l 2220 1048 l cp
+eoclip
+n 2250 450 m
+ 2250 1200 l gs col37 s gr gr
+
+% arrowhead
+n 2220 1048 m 2250 1168 l 2280 1048 l 2220 1048 l  cp gs col37 1.00 shd ef gr  col37 s
+% Polyline
+gs  clippath
+3795 1215 m 3855 1215 l 3855 1048 l 3825 1168 l 3795 1048 l cp
+eoclip
+n 3825 450 m
+ 3825 1200 l gs col37 s gr gr
+
+% arrowhead
+n 3795 1048 m 3825 1168 l 3855 1048 l 3795 1048 l  cp gs col37 1.00 shd ef gr  col37 s
+% Polyline
+n 225 5247 m 2625 5247 l 2625 5703 l 225 5703 l
+ cp gs col35 1.00 shd ef gr gs col8 s gr 
+% Polyline
+gs  clippath
+3945 5265 m 4005 5265 l 4005 5098 l 3975 5218 l 3945 5098 l cp
+1395 5265 m 1455 5265 l 1455 5098 l 1425 5218 l 1395 5098 l cp
+eoclip
+n 1425 5250 m 1425 4875 l 3975 4875 l
+ 3975 5250 l gs col8 s gr gr
+
+% arrowhead
+n 1395 5098 m 1425 5218 l 1455 5098 l 1395 5098 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 3945 5098 m 3975 5218 l 4005 5098 l 3945 5098 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 1680 1200 m 1575 1200 1575 1545 105 arcto 4 {pop} repeat
+  1575 1650 2820 1650 105 arcto 4 {pop} repeat
+  2925 1650 2925 1305 105 arcto 4 {pop} repeat
+  2925 1200 1680 1200 105 arcto 4 {pop} repeat
+ cp gs col36 1.00 shd ef gr gs col37 s gr 
+% Polyline
+n 105 1200 m 0 1200 0 1545 105 arcto 4 {pop} repeat
+  0 1650 1245 1650 105 arcto 4 {pop} repeat
+  1350 1650 1350 1305 105 arcto 4 {pop} repeat
+  1350 1200 105 1200 105 arcto 4 {pop} repeat
+ cp gs col36 1.00 shd ef gr gs col37 s gr 
+% Polyline
+n 4830 1200 m 4725 1200 4725 1545 105 arcto 4 {pop} repeat
+  4725 1650 5970 1650 105 arcto 4 {pop} repeat
+  6075 1650 6075 1305 105 arcto 4 {pop} repeat
+  6075 1200 4830 1200 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 2130 2400 m 2025 2400 2025 2745 105 arcto 4 {pop} repeat
+  2025 2850 3270 2850 105 arcto 4 {pop} repeat
+  3375 2850 3375 2505 105 arcto 4 {pop} repeat
+  3375 2400 2130 2400 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 3930 2400 m 3825 2400 3825 2745 105 arcto 4 {pop} repeat
+  3825 2850 5070 2850 105 arcto 4 {pop} repeat
+  5175 2850 5175 2505 105 arcto 4 {pop} repeat
+  5175 2400 3930 2400 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 5730 2400 m 5625 2400 5625 2745 105 arcto 4 {pop} repeat
+  5625 2850 6870 2850 105 arcto 4 {pop} repeat
+  6975 2850 6975 2505 105 arcto 4 {pop} repeat
+  6975 2400 5730 2400 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 7530 2400 m 7425 2400 7425 2745 105 arcto 4 {pop} repeat
+  7425 2850 8670 2850 105 arcto 4 {pop} repeat
+  8775 2850 8775 2505 105 arcto 4 {pop} repeat
+  8775 2400 7530 2400 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 9405 2847 m 9300 2847 9300 3198 105 arcto 4 {pop} repeat
+  9300 3303 10845 3303 105 arcto 4 {pop} repeat
+  10950 3303 10950 2952 105 arcto 4 {pop} repeat
+  10950 2847 9405 2847 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 9405 3447 m 9300 3447 9300 3798 105 arcto 4 {pop} repeat
+  9300 3903 10845 3903 105 arcto 4 {pop} repeat
+  10950 3903 10950 3552 105 arcto 4 {pop} repeat
+  10950 3447 9405 3447 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+577 5520 m
+gs 1 -1 sc (NVECTOR_SERIAL) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+1890 1492 m
+gs 1 -1 sc (KINSOL) col37 sh gr
+/Times-Bold ff 210.00 scf sf
+2205 2700 m
+gs 1 -1 sc (CVDIAG) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+5775 2700 m
+gs 1 -1 sc (CVBAND) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+9450 3750 m
+gs 1 -1 sc (CVBBDPRE) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+7575 2700 m
+gs 1 -1 sc (CVSPGMR) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+3975 2700 m
+gs 1 -1 sc (CVDENSE) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+300 1500 m
+gs 1 -1 sc (CVODES) col37 sh gr
+/Times-Bold ff 210.00 scf sf
+5025 1500 m
+gs 1 -1 sc (CVODE) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+9450 3150 m
+gs 1 -1 sc (CVBANDPRE) col8 sh gr
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial 2435 x Fx(Figure)345 b(4.2:)483 b(Ov)-31
+b(erall)346 b(structure)f(diagram)j(of)e(the)f Fv(cv)-25
+b(ode)347 b Fx(pac)-31 b(k)-61 b(age.)486 b(Mo)31 b(dules)345
+b(sp)31 b(eci\257c)345 b(to)h Fv(cv)-25 b(ode)347 b Fx(are)e(distin-)
+4000 33776 y(guished)370 b(b)-31 b(y)369 b(rounded)g(b)31
+b(o)-31 b(xes,)370 b(while)g(generic)g(solv)-31 b(er)369
+b(and)h(auxiliary)h(mo)31 b(dules)370 b(are)f(in)g(rectangular)i(b)31
+b(o)-31 b(xes.)p Black 4000 37513 a(This)451 b(set)g(of)g(linear)h
+(solv)-31 b(er)451 b(mo)31 b(dules)451 b(is)g(in)-31
+b(tended)452 b(to)g(b)31 b(e)450 b(expanded)h(in)g(the)g(future)g(as)g
+(new)g(algorithms)i(are)4000 38842 y(dev)-31 b(elop)31
+b(ed.)5660 40271 y(In)494 b(the)g(case)g(of)g(the)g(direct)g
+Fv(cvdense)h Fx(and)f Fv(cvband)g Fx(metho)31 b(ds,)527
+b(the)494 b(pac)-31 b(k)-61 b(age)495 b(includes)f(an)g(algorithm)4000
+41599 y(for)425 b(the)g(appro)-31 b(ximation)428 b(of)d(the)g(Jacobian)
+h(b)-31 b(y)425 b(di\256erence)f(quotien)-31 b(ts,)441
+b(but)425 b(the)g(user)f(also)h(has)g(the)g(option)h(of)4000
+42927 y(supplying)409 b(the)e(Jacobian)i(\(or)f(an)g(appro)-31
+b(ximation)411 b(to)d(it\))h(directly)-92 b(.)608 b(In)407
+b(the)h(case)f(of)h(the)g(iterativ)-31 b(e)410 b Fv(cvspgmr)4000
+44256 y Fx(metho)31 b(d,)534 b(the)500 b(pac)-31 b(k)-61
+b(age)500 b(includes)g(an)g(algorithm)j(for)d(the)f(appro)-31
+b(ximation)504 b(b)-31 b(y)500 b(di\256erence)f(quotien)-31
+b(ts)501 b(of)g(the)4000 45584 y(pro)31 b(duct)409 b(b)31
+b(et)-31 b(w)g(een)411 b(the)e(Jacobian)i(matrix)g(and)f(a)f(v)-31
+b(ector)410 b(of)g(appropriate)h(length.)614 b(Again,)421
+b(the)410 b(user)e(has)i(the)4000 46912 y(option)372
+b(of)e(pro)-31 b(viding)371 b(a)g(routine)f(for)g(this)g(op)31
+b(eration.)496 b(In)370 b(the)g(case)g(of)g Fv(cvspgmr)p
+Fx(,)g(the)g(preconditioning)i(m)-31 b(ust)4000 48241
+y(b)31 b(e)447 b(supplied)h(b)-31 b(y)448 b(the)g(user,)467
+b(in)448 b(t)-31 b(w)g(o)450 b(phases:)649 b(setup)448
+b(\(prepro)31 b(cessing)447 b(of)h(Jacobian)i(data\))f(and)f(solv)-31
+b(e.)729 b(While)4000 49569 y(there)299 b(is)g(no)h(default)g(c)-31
+b(hoice)300 b(of)g(preconditioner)g(analogous)i(to)e(the)f
+(di\256erence)g(quotien)-31 b(t)301 b(appro)-31 b(ximation)303
+b(in)d(the)4000 50897 y(direct)393 b(case,)399 b(the)393
+b(references)e([2)q(]-[3)q(],)400 b(together)394 b(with)f(the)g
+(example)h(and)f(demonstration)i(programs)e(included)4000
+52226 y(with)370 b Fv(cv)-25 b(ode)p Fx(,)371 b(o\256er)d(considerable)
+j(assistance)e(in)h(building)h(preconditioners.)5660
+53655 y(Eac)-31 b(h)470 b Fv(cv)-25 b(ode)470 b Fx(linear)g(solv)-31
+b(er)469 b(mo)31 b(dule)470 b(consists)f(of)h(four)f(routines,)495
+b(dev)-31 b(oted)470 b(to)g(\(1\))g(memory)g(allo)31
+b(cation)4000 54983 y(and)377 b(initialization,)384 b(\(2\))378
+b(setup)e(of)h(the)g(matrix)h(data)g(in)-31 b(v)g(olv)g(ed,)381
+b(\(3\))d(solution)h(of)e(the)f(system,)k(and)c(\(4\))i(freeing)4000
+56311 y(of)456 b(memory)-92 b(.)752 b(The)455 b(setup)h(and)f(solution)
+i(phases)e(are)g(separate)h(b)31 b(ecause)455 b(the)g(ev)-61
+b(aluation)458 b(of)e(Jacobians)h(and)4000 57640 y(preconditioners)348
+b(is)g(done)f(only)h(p)31 b(erio)g(dically)350 b(during)d(the)h(in)-31
+b(tegration,)355 b(as)348 b(required)e(to)j(ac)-31 b(hiev)g(e)348
+b(con)-31 b(v)g(ergence.)4000 58968 y(The)369 b(call)h(list)f(within)i
+(the)e(cen)-31 b(tral)369 b Fv(cv)-25 b(ode)370 b Fx(mo)31
+b(dule)369 b(to)h(eac)-31 b(h)369 b(of)g(the)g(\257v)-31
+b(e)369 b(asso)31 b(ciated)370 b(functions)g(is)e(\257xed,)i(th)-31
+b(us)4000 60296 y(allo)g(wing)373 b(the)c(cen)-31 b(tral)370
+b(mo)31 b(dule)370 b(to)g(b)31 b(e)369 b(completely)j(indep)31
+b(enden)-31 b(t)369 b(of)h(the)f(linear)h(system)g(metho)31
+b(d.)5660 61725 y(These)428 b(mo)31 b(dules)428 b(are)f(also)h(decomp)
+31 b(osed)428 b(in)g(another)g(w)-31 b(a)g(y)-92 b(.)669
+b(Eac)-31 b(h)428 b(of)g(the)g(mo)31 b(dules)428 b Fv(cvdense)p
+Fx(,)443 b Fv(cvband)p Fx(,)4000 63054 y(and)405 b Fv(cvspgmr)f
+Fx(is)h(a)g(set)g(of)h(in)-31 b(terface)406 b(routines)f(built)h(on)g
+(top)f(of)h(a)f(generic)g(solv)-31 b(er)406 b(mo)31 b(dule,)415
+b(named)406 b Fv(dense)p Fx(,)4000 64382 y Fv(band)p
+Fx(,)451 b(and)435 b Fv(spgmr)p Fx(,)450 b(resp)31 b(ectiv)-31
+b(ely)-92 b(.)689 b(The)434 b(in)-31 b(terfaces)436 b(deal)f(with)g
+(the)g(use)f(of)h(these)f(metho)31 b(ds)435 b(in)g(the)f
+Fv(cv)-25 b(ode)4000 65710 y Fx(con)-31 b(text,)474 b(whereas)451
+b(the)h(generic)g(solv)-31 b(er)451 b(is)h(indep)31 b(enden)-31
+b(t)452 b(of)g(the)f(con)-31 b(text.)741 b(While)452
+b(the)f(generic)h(solv)-31 b(ers)451 b(here)4000 67039
+y(w)-31 b(ere)430 b(generated)g(with)h Fv(sundials)e
+Fx(in)h(mind,)446 b(our)429 b(in)-31 b(ten)g(tion)432
+b(is)e(that)h(they)f(b)31 b(e)429 b(usable)h(in)g(other)g(applications)
+4000 68367 y(as)406 b(general-purp)31 b(ose)406 b(solv)-31
+b(ers.)604 b(This)406 b(separation)i(also)f(allo)-31
+b(ws)408 b(for)e(an)-31 b(y)407 b(generic)g(solv)-31
+b(er)406 b(to)h(b)31 b(e)406 b(replaced)g(b)-31 b(y)407
+b(an)4000 69696 y(impro)-31 b(v)g(ed)371 b(v)-31 b(ersion,)370
+b(with)g(no)g(necessit)-31 b(y)369 b(to)h(revise)f(the)g
+Fv(cv)-25 b(ode)370 b Fx(pac)-31 b(k)-61 b(age)371 b(elsewhere.)5660
+71125 y Fv(cv)-25 b(ode)386 b Fx(also)g(pro)-31 b(vides)385
+b(t)-31 b(w)g(o)387 b(preconditioner)f(mo)31 b(dules.)540
+b(The)385 b(\257rst)g(one,)k Fv(cvbandpre)p Fx(,)h(is)385
+b(in)-31 b(tended)386 b(to)f(b)31 b(e)4000 72453 y(used)260
+b(with)i Fv(nvector)p 13559 72453 368 45 v 441 w(serial)d
+Fx(and)i(pro)-31 b(vides)261 b(a)g(banded)g(di\256erence)f(quotien)-31
+b(t)263 b(Jacobian)f(based)f(preconditioner)4000 73781
+y(and)425 b(solv)-31 b(er)426 b(routines)g(for)f(use)g(with)h
+Fv(cvspgmr)p Fx(.)660 b(The)426 b(second)f(preconditioner)h(mo)31
+b(dule,)441 b Fv(cvbbdpre)p Fx(,)f(w)-31 b(orks)4000
+75110 y(in)475 b(conjunction)h(with)f Fv(nvector)p 18851
+75110 V 441 w(p)-74 b(arallel)475 b Fx(and)g(generates)g(a)f
+(preconditioner)i(that)f(is)f(a)h(blo)31 b(c)-31 b(k-diagonal)4000
+76438 y(matrix)371 b(with)f(eac)-31 b(h)370 b(blo)31
+b(c)-31 b(k)370 b(b)31 b(eing)370 b(a)f(band)g(matrix.)5660
+77867 y(All)475 b(state)f(information)i(used)d(b)-31
+b(y)474 b Fv(cv)-25 b(ode)474 b Fx(to)g(solv)-31 b(e)474
+b(a)g(giv)-31 b(en)474 b(problem)g(is)f(sa)-31 b(v)g(ed)474
+b(in)g(a)g(structure,)499 b(and)474 b(a)p Black Black
+eop
+%%Page: 20 28
+20 27 bop Black 0 2701 a Fy(20)36248 b(Co)35 b(de)426
+b(Organization)p 0 3144 48001 45 v Black 0 6974 a Fx(p)31
+b(oin)-31 b(ter)330 b(to)f(that)h(structure)f(is)f(returned)h(to)g(the)
+g(user.)479 b(There)328 b(is)h(no)g(global)i(data)f(in)f(the)g
+Fv(cv)-25 b(ode)330 b Fx(pac)-31 b(k)-61 b(age,)339 b(and)0
+8302 y(so)386 b(in)h(this)f(resp)31 b(ect)386 b(it)h(is)f(reen)-31
+b(tran)g(t.)544 b(State)388 b(information)h(sp)31 b(eci\257c)386
+b(to)h(the)f(linear)h(solv)-31 b(er)387 b(is)f(sa)-31
+b(v)g(ed)387 b(in)f(separate)0 9631 y(structure,)329
+b(a)320 b(p)31 b(oin)-31 b(ter)320 b(to)g(whic)-31 b(h)321
+b(resides)d(in)i(the)g Fv(cv)-25 b(ode)320 b Fx(memory)g(structure.)476
+b(The)319 b(reen)-31 b(trancy)320 b(of)g Fv(cv)-25 b(ode)320
+b Fx(w)-31 b(as)0 10959 y(motiv)-61 b(ated)317 b(b)-31
+b(y)314 b(the)h(an)-31 b(ticipated)317 b(m)-31 b(ulticomputer)317
+b(extension,)327 b(but)314 b(is)g(also)h(essen)-31 b(tial)316
+b(in)e(a)h(unipro)31 b(cessor)313 b(setting)0 12287 y(where)369
+b(t)-31 b(w)g(o)371 b(or)e(more)g(problems)h(are)f(solv)-31
+b(ed)370 b(b)-31 b(y)369 b(in)-31 b(termixed)371 b(calls)f(to)g(the)g
+(pac)-31 b(k)-61 b(age)370 b(from)g(one)f(user)f(program.)p
+Black Black eop
+%%Page: 21 29
+21 28 bop Black Black 4000 15276 a Ft(Chapter)861 b(5)4000
+20811 y Fw(Using)1033 b(CV)-86 b(ODE)4000 26567 y Fx(This)337
+b(c)-31 b(hapter)338 b(is)f(concerned)f(with)j(the)e(use)f(of)i
+Fv(cv)-25 b(ode)337 b Fx(for)g(the)g(in)-31 b(tegration)340
+b(of)e(IVPs.)482 b(The)337 b(follo)-31 b(wing)340 b(sections)4000
+27895 y(treat)354 b(the)f(header)g(\257les,)k(the)c(la)-31
+b(y)g(out)355 b(of)f(the)f(user's)f(main)j(program,)i(description)d(of)
+g(the)f Fv(cv)-25 b(ode)353 b Fx(user-callable)4000 29224
+y(functions,)378 b(and)e(user-supplied)f(functions.)512
+b(The)375 b(\257nal)h(section)g(describ)31 b(es)374 b(the)i(F)-92
+b(ortran/C)376 b(in)-31 b(terface)376 b(mo)31 b(dule,)4000
+30552 y(whic)-31 b(h)375 b(supp)31 b(orts)373 b(users)f(with)j
+(applications)i(written)e(in)f(F)-92 b(ortran77.)507
+b(The)374 b(listings)h(of)f(the)g(example)h(programs)4000
+31880 y(in)h(the)g(companion)i(do)31 b(cumen)-31 b(t)377
+b([14)q(])f(ma)-31 b(y)377 b(also)g(b)31 b(e)375 b(helpful.)513
+b(Those)376 b(co)31 b(des)376 b(ma)-31 b(y)377 b(b)31
+b(e)375 b(used)g(as)h(templates)h(\(with)4000 33209 y(the)369
+b(remo)-31 b(v)-61 b(al)371 b(of)f(some)f(lines)h(in)-31
+b(v)g(olv)g(ed)371 b(in)f(testing\),)h(and)f(are)f(included)h(in)f(the)
+g Fv(cv)-25 b(ode)370 b Fx(pac)-31 b(k)-61 b(age.)5660
+34537 y(The)428 b(user)e(should)i(b)31 b(e)427 b(a)-31
+b(w)g(are)428 b(that)h(not)f(all)h(linear)f(solv)-31
+b(er)428 b(mo)31 b(dules)428 b(are)f(compatible)j(with)e(all)h
+Fv(nvector)4000 35866 y Fx(implemen)-31 b(tations.)461
+b(F)-92 b(or)260 b(example,)284 b Fv(nvector)p 23895
+35866 368 45 v 441 w(p)-74 b(arallel)262 b Fx(is)f(not)g(compatible)j
+(with)e(the)f(direct)g(dense)g(or)g(direct)4000 37194
+y(band)447 b(linear)h(solv)-31 b(ers)447 b(since)g(these)g(linear)h
+(solv)-31 b(er)447 b(mo)31 b(dules)448 b(need)e(to)i(form)g(the)f
+(complete)i(system)e(Jacobian.)4000 38522 y(The)453 b(follo)-31
+b(wing)457 b Fv(cv)-25 b(ode)454 b Fx(mo)31 b(dules)453
+b(can)h(only)g(b)31 b(e)452 b(used)h(with)h Fv(nvector)p
+35477 38522 V 441 w(serial)p Fx(:)659 b Fv(cvdense)p
+Fx(,)476 b Fv(cvband)p Fx(,)f(and)4000 39851 y Fv(cvbandpre)p
+Fx(.)493 b(The)370 b(preconditioner)g(mo)31 b(dule)370
+b Fv(cvbbdpre)g Fx(can)g(only)g(b)31 b(e)369 b(used)f(with)j
+Fv(nvector)p 45551 39851 V 440 w(p)-74 b(arallel)p Fx(.)5660
+41179 y Fv(cv)-25 b(ode)437 b Fx(uses)f(v)-61 b(arious)436
+b(constan)-31 b(ts)438 b(for)e(b)31 b(oth)437 b(input)g(and)g(output.)
+695 b(These)436 b(are)g(de\257ned)h(as)f(needed)g(in)g(this)4000
+42507 y(c)-31 b(hapter,)370 b(but)g(for)f(con)-31 b(v)g(enience)370
+b(are)f(also)h(listed)h(separately)f(in)f(Chapter)h(9.)4000
+46154 y Fs(5.1)1793 b(Access)599 b(to)e(library)j(and)e(header)h
+(\257les)4000 48579 y Fx(A)-31 b(t)466 b(this)g(p)31
+b(oin)-31 b(t,)491 b(it)467 b(is)e(assumed)g(that)i(the)f(installation)
+j(of)d Fv(cv)-25 b(ode)p Fx(,)491 b(follo)-31 b(wing)469
+b(the)c(pro)31 b(cedure)465 b(describ)31 b(ed)465 b(in)4000
+49907 y(Chapter)370 b(2,)g(has)f(b)31 b(een)369 b(completed)h
+(successfully)-92 b(.)5660 51236 y(Regardless)395 b(of)g(where)f(the)h
+(user's)f(application)k(program)d(resides,)401 b(its)395
+b(asso)31 b(ciated)395 b(compilation)k(and)c(load)4000
+52564 y(commands)316 b(m)-31 b(ust)315 b(mak)-31 b(e)316
+b(reference)e(to)i(the)f(appropriate)h(lo)31 b(cations)317
+b(for)e(the)g(library)g(and)g(header)g(\257les)f(required)4000
+53892 y(b)-31 b(y)369 b Fv(cv)-25 b(ode)p Fx(.)494 b(In)368
+b(terms)i(of)f(the)h(directory)f Fo(build)p 24362 53892
+340 45 v 408 w(tr)-57 b(e)g(e)370 b Fx(de\257ned)f(in)g(Chapter)h(2,)g
+(the)g(relev)-61 b(an)-31 b(t)370 b(library)f(\257les)g(are)p
+Black 5660 56043 a Fp(\262)p Black 554 w Fo(build)p 9126
+56043 V 408 w(tr)-57 b(e)g(e)p Fu(/lib/libsundials)p
+20571 56043 349 45 v 422 w(cvode.)p Fo(lib)p Fx(,)p Black
+5660 58226 a Fp(\262)p Black 554 w Fo(build)p 9126 58226
+340 45 v 408 w(tr)g(e)g(e)p Fu(/lib/libsundials)p 20571
+58226 349 45 v 422 w(fcvode.a)p Fx(,)p Black 5660 60408
+a Fp(\262)p Black 554 w Fo(build)p 9126 60408 340 45
+v 408 w(tr)g(e)g(e)p Fu(/lib/libsundials)p 20571 60408
+349 45 v 422 w(shared.)p Fo(lib)p Fx(,)p Black 5660 62590
+a Fp(\262)p Black 554 w Fo(build)p 9126 62590 340 45
+v 408 w(tr)g(e)g(e)p Fu(/lib/libsundials)p 20571 62590
+349 45 v 422 w(nvec*.)p Fo(lib)370 b Fx(\(up)g(to)g(t)-31
+b(w)g(o)370 b(\257les\),)h(and)p Black 5660 64773 a Fp(\262)p
+Black 554 w Fo(build)p 9126 64773 340 45 v 408 w(tr)-57
+b(e)g(e)p Fu(/lib/libsundials)p 20571 64773 349 45 v
+422 w(fnvec*.a)370 b Fx(\(up)f(to)h(t)-31 b(w)g(o)371
+b(\257les\),)4000 66923 y(where)491 b(the)h(\257le)g(extension)h(.)p
+Fo(lib)g Fx(is)e(t)-31 b(ypically)495 b Fu(.so)d Fx(for)g(shared)f
+(libraries)h(and)g Fu(.a)g Fx(for)g(static)h(libraries.)861
+b(The)4000 68252 y(relev)-61 b(an)-31 b(t)370 b(header)f(\257les)g(are)
+g(all)h(lo)31 b(cated)371 b(in)e(the)h(sub)31 b(directory)p
+Black 5660 70403 a Fp(\262)p Black 554 w Fo(build)p 9126
+70403 340 45 v 408 w(tr)-57 b(e)g(e)p Fu(/include)5660
+72553 y Fx(F)-92 b(or)484 b(an)h(application)j(that)e(con)-31
+b(tains)486 b(b)31 b(oth)485 b(a)g Fv(cv)-25 b(ode)485
+b Fx(problem)g(\(IVP\))h(and)f(a)g Fv(cv)-25 b(odes)485
+b Fx(problem)g(\(IVP)4000 73882 y(with)351 b(sensitivit)-31
+b(y)353 b(analysis\),)j(references)348 b(to)j(the)g(library)f(\257les)g
+(m)-31 b(ust)351 b(b)31 b(e)350 b(made)g(carefully)-92
+b(,)356 b(b)31 b(ecause)349 b(b)31 b(oth)351 b(of)g(the)4000
+75210 y(asso)31 b(ciated)396 b(solv)-31 b(er)394 b(library)h(\257les)f
+(con)-31 b(tain)397 b(a)d(user-callable)i(function)g(called)f
+Fu(CVode)p Fx(,)402 b(although)396 b(the)f(v)-31 b(ersion)395
+b(in)4000 76539 y Fv(cv)-25 b(odes)410 b Fx(is)f(fully)h(compatible)i
+(with)e(that)h(in)e Fv(cv)-25 b(ode)p Fx(.)614 b(In)408
+b(this)i(case,)420 b(the)409 b(loader)h(command)h(m)-31
+b(ust)410 b(reference)4000 77867 y Fo(build)p 6359 77867
+V 408 w(tr)-57 b(e)g(e)p Fu(/lib/libsundials)p 17804
+77867 349 45 v 421 w(cvodes.)p Fo(lib)p Fx(,)371 b(and)f(not)g
+Fo(build)p 30511 77867 340 45 v 407 w(tr)-57 b(e)g(e)p
+Fu(/lib/libsundials)p 41955 77867 349 45 v 422 w(cvode.)p
+Fo(lib)p Fx(.)p Black Black eop
+%%Page: 22 30
+22 29 bop Black 0 2701 a Fy(22)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 0 6974 a Fs(5.2)1793
+b(Data)598 b(t)-50 b(yp)50 b(es)0 9398 y Fx(The)312 b
+Fu(sundialstypes.h)h Fx(\257le)e(con)-31 b(tains)313
+b(the)f(de\257nition)h(of)f(the)f(t)-31 b(yp)31 b(e)312
+b Fu(realtype)p Fx(,)324 b(whic)-31 b(h)312 b(is)g(used)e(b)-31
+b(y)312 b(the)f Fv(sundi-)0 10727 y(als)375 b Fx(solv)-31
+b(ers)375 b(for)h(all)g(\260oating-p)31 b(oin)-31 b(t)379
+b(data.)513 b(The)375 b(t)-31 b(yp)31 b(e)376 b Fu(realtype)g
+Fx(can)g(b)31 b(e)375 b Fu(float)p Fx(,)j Fu(double)p
+Fx(,)g(or)d Fu(long)582 b(double)p Fx(,)0 12055 y(with)300
+b(the)g(default)h(b)31 b(eing)299 b Fu(double)p Fx(.)470
+b(The)300 b(user)e(can)h(c)-31 b(hange)301 b(the)e(precision)h(of)f
+(the)h Fv(sundials)e Fx(solv)-31 b(ers)300 b(arithmetic)0
+13383 y(at)370 b(the)f(con\257guration)j(stage)e(\(see)f
+Fp(x)p Fx(2.2\).)1660 14712 y(Additionally)-92 b(,)296
+b(based)272 b(on)h(the)f(curren)-31 b(t)272 b(precision,)292
+b Fu(sundialstypes.h)275 b Fx(de\257nes)c Fu(BIG)p 37372
+14712 349 45 v 419 w(REAL)i Fx(to)g(b)31 b(e)271 b(the)i(largest)0
+16040 y(v)-61 b(alue)290 b(represen)-31 b(table)290 b(as)g(a)g
+Fu(realtype)p Fx(,)307 b Fu(SMALL)p 19807 16040 V 419
+w(REAL)290 b Fx(to)g(b)31 b(e)290 b(the)g(smallest)h(v)-61
+b(alue)290 b(represen)-31 b(table)290 b(as)f(a)h Fu(realtype)p
+Fx(,)0 17369 y(and)369 b Fu(UNIT)p 4546 17369 V 419 w(ROUNDOFF)i
+Fx(to)f(b)31 b(e)368 b(the)i(di\256erence)e(b)31 b(et)-31
+b(w)g(een)370 b(1)p Fm(:)p Fx(0)h(and)e(the)h(minim)-31
+b(um)371 b Fu(realtype)g Fx(greater)e(than)h(1)p Fm(:)p
+Fx(0.)1660 18697 y(Within)382 b Fv(sundials)p Fx(,)g(real)f(constan)-31
+b(ts)381 b(are)f(set)g(b)-31 b(y)381 b(w)-31 b(a)g(y)381
+b(of)g(a)g(macro)g(called)g Fu(RCONST)p Fx(.)h(It)e(is)g(this)h(macro)g
+(that)0 20025 y(needs)392 b(the)h(abilit)-31 b(y)396
+b(to)d(branc)-31 b(h)393 b(on)g(the)g(de\257nition)h
+Fu(realtype)p Fx(.)565 b(In)392 b(ANSI)h Fv(C)p Fx(,)g(a)g
+(\260oating-p)31 b(oin)-31 b(t)396 b(constan)-31 b(t)395
+b(with)0 21354 y(no)353 b(su\261x)g(is)f(stored)h(as)f(a)h
+Fu(double)p Fx(.)488 b(Placing)355 b(the)e(su\261x)f(\\F")h(at)h(the)f
+(end)f(of)h(a)g(\260oating)i(p)31 b(oin)-31 b(t)354 b(constan)-31
+b(t)354 b(mak)-31 b(es)0 22682 y(it)370 b(a)f Fu(float)p
+Fx(,)i(whereas)e(using)g(the)h(su\261x)f(\\L")h(mak)-31
+b(es)370 b(it)g(a)f Fu(long)582 b(double)p Fx(.)493 b(F)-92
+b(or)369 b(example,)p Black Black 0 24832 a Fu(#define)582
+b(A)f(1.0)0 26160 y(#define)h(B)f(1.0F)0 27489 y(#define)h(C)f(1.0L)0
+29639 y Fx(de\257nes)463 b Fu(A)g Fx(to)h(b)31 b(e)463
+b(a)h Fu(double)g Fx(constan)-31 b(t)464 b(equal)h(to)f(1)p
+Fm(:)p Fx(0,)489 b Fu(B)463 b Fx(to)h(b)31 b(e)463 b(a)g
+Fu(float)h Fx(constan)-31 b(t)465 b(equal)f(to)h(1)p
+Fm(:)p Fx(0,)488 b(and)464 b Fu(C)f Fx(to)0 30967 y(b)31
+b(e)450 b(a)h Fu(long)582 b(double)451 b Fx(constan)-31
+b(t)452 b(equal)g(to)f(1)p Fm(:)p Fx(0.)739 b(The)450
+b(macro)i(call)g Fu(RCONST\(1.0\))g Fx(automatically)j(expands)c(to)0
+32296 y Fu(1.0)401 b Fx(if)h Fu(realtype)f Fx(is)g Fu(double)p
+Fx(,)410 b(to)402 b Fu(1.0F)f Fx(if)h Fu(realtype)f Fx(is)g
+Fu(float)p Fx(,)410 b(or)401 b(to)h Fu(1.0L)f Fx(if)g
+Fu(realtype)h Fx(is)f Fu(long)582 b(double)p Fx(.)0 33624
+y Fv(sundials)368 b Fx(uses)g(the)i Fu(RCONST)g Fx(macro)g(in)-31
+b(ternally)371 b(to)f(declare)g(all)g(of)g(its)f(\260oating-p)31
+b(oin)-31 b(t)373 b(constan)-31 b(ts.)1660 34952 y(A)423
+b(user)f(program)i(whic)-31 b(h)424 b(uses)d(the)j(t)-31
+b(yp)31 b(e)423 b Fu(realtype)h Fx(and)f(the)g Fu(RCONST)g
+Fx(macro)h(to)g(handle)f(\260oating-p)31 b(oin)-31 b(t)0
+36281 y(constan)g(ts)443 b(is)e(precision-indep)31 b(enden)-31
+b(t)442 b(except)g(for)g(an)-31 b(y)442 b(calls)g(to)g(precision-sp)31
+b(eci\257c)442 b(standard)g(math)g(library)0 37609 y(functions.)736
+b(\(Our)450 b(example)h(programs)g(use)e(b)31 b(oth)451
+b Fu(realtype)g Fx(and)f Fu(RCONST)p Fx(.\))h(Users)e(can,)471
+b(ho)-31 b(w)g(ev)g(er,)472 b(use)450 b(the)0 38937 y(t)-31
+b(yp)31 b(e)318 b Fu(double)p Fx(,)328 b Fu(float)p Fx(,)h(or)317
+b Fu(long)581 b(double)318 b Fx(in)f(their)h(co)31 b(de)317
+b(\(assuming)h(the)f(t)-31 b(yp)31 b(edef)318 b(for)f
+Fu(realtype)h Fx(matc)-31 b(hes)318 b(this)0 40266 y(c)-31
+b(hoice\).)488 b(Th)-31 b(us,)356 b(a)351 b(previously)h(existing)h
+(piece)f(of)g(ANSI)f Fv(C)g Fx(co)31 b(de)352 b(can)f(use)g
+Fv(sundials)f Fx(without)k(mo)31 b(difying)354 b(the)0
+41594 y(co)31 b(de)454 b(to)g(use)f Fu(realtype)p Fx(,)476
+b(so)453 b(long)i(as)f(the)g Fv(sundials)e Fx(libraries)i(use)f(the)h
+(correct)f(precision)h(\(for)h(details)f(see)0 42922
+y Fp(x)p Fx(2.2\).)0 46569 y Fs(5.3)1793 b(Header)598
+b(\257les)0 48994 y Fx(The)352 b(calling)i(program)f(m)-31
+b(ust)353 b(include)f(sev)-31 b(eral)353 b(header)e(\257les)h(so)g
+(that)h(v)-61 b(arious)352 b(macros)h(and)f(data)h(t)-31
+b(yp)31 b(es)352 b(can)g(b)31 b(e)0 50322 y(used.)492
+b(The)369 b(header)g(\257le)h(that)g(is)f(alw)-31 b(a)g(ys)372
+b(required)c(is:)p Black 1660 52472 a Fp(\262)p Black
+554 w Fu(cvode.h)p Fx(,)331 b(the)319 b(header)g(\257le)g(for)g
+Fv(cv)-25 b(ode)p Fx(,)330 b(whic)-31 b(h)320 b(de\257nes)f(the)g(sev)
+-31 b(eral)319 b(t)-31 b(yp)31 b(es)319 b(and)h(v)-61
+b(arious)319 b(constan)-31 b(ts,)331 b(and)2767 53801
+y(includes)370 b(function)h(protot)-31 b(yp)31 b(es.)0
+55951 y(Note)338 b(that)f Fu(cvode.h)h Fx(includes)f
+Fu(sundialstypes.h)p Fx(,)345 b(whic)-31 b(h)338 b(de\257nes)e(the)g(t)
+-31 b(yp)31 b(es)337 b Fu(realtype)h Fx(and)e Fu(booleantype)0
+57279 y Fx(and)369 b(the)h(constan)-31 b(ts)370 b Fu(FALSE)g
+Fx(and)f Fu(TRUE)p Fx(.)1660 58608 y(The)405 b(calling)h(program)e(m)
+-31 b(ust)405 b(also)g(include)f(an)g Fv(nvector)g Fx(implemen)-31
+b(tation)408 b(header)c(\257le)g(\(see)g(Chapter)h(6)0
+59936 y(for)434 b(details\).)691 b(F)-92 b(or)433 b(the)i(t)-31
+b(w)g(o)436 b Fv(nvector)e Fx(implemen)-31 b(tations)439
+b(that)c(are)g(included)g(in)f(the)h Fv(cv)-25 b(ode)435
+b Fx(pac)-31 b(k)-61 b(age,)453 b(the)0 61264 y(corresp)31
+b(onding)369 b(header)g(\257les)g(are:)p Black 1660 63414
+a Fp(\262)p Black 554 w Fu(nvector)p 6904 63414 V 420
+w(serial.h)p Fx(,)i(whic)-31 b(h)370 b(de\257nes)e(the)i(serial)f
+(implemen)-31 b(tation)374 b Fv(nvector)p 36817 63414
+368 45 v 440 w(serial)p Fx(;)p Black 1660 65596 a Fp(\262)p
+Black 554 w Fu(nvector)p 6904 65596 349 45 v 420 w(parallel.h)p
+Fx(,)d(whic)-31 b(h)370 b(de\257nes)e(the)i(parallel)h(MPI)e(implemen)
+-31 b(tation,)374 b Fv(nvector)p 41863 65596 368 45 v
+440 w(p)-74 b(arallel)p Fx(.)0 67747 y(Note)515 b(that)h(b)31
+b(oth)515 b(these)f(\257les)g(include)h(in)g(turn)f(the)h(header)f
+(\257le)h Fu(nvector.h)g Fx(whic)-31 b(h)516 b(de\257nes)d(the)i
+(abstract)0 69075 y Fu(N)p 651 69075 349 45 v 419 w(Vector)369
+b Fx(t)-31 b(yp)31 b(e.)1660 70403 y(Finally)-92 b(,)472
+b(if)451 b(the)f(user)f(c)-31 b(ho)31 b(oses)450 b(Newton)h(iteration)i
+(for)d(the)g(solution)i(of)e(the)h(nonlinear)g(systems,)470
+b(then)451 b(a)0 71732 y(linear)315 b(solv)-31 b(er)314
+b(mo)31 b(dule)315 b(header)f(\257le)g(will)h(b)31 b(e)314
+b(required.)474 b(The)314 b(header)f(\257les)h(corresp)31
+b(onding)314 b(to)h(the)f(v)-61 b(arious)314 b(linear)0
+73060 y(solv)-31 b(er)370 b(options)g(in)g Fv(cv)-25
+b(ode)369 b Fx(are:)p Black 1660 75210 a Fp(\262)p Black
+554 w Fu(cvdense.h)p Fx(,)446 b(whic)-31 b(h)430 b(is)f(used)g(with)h
+(the)g(dense)e(direct)h(linear)h(solv)-31 b(er)430 b(in)f(the)h(con)-31
+b(text)431 b(of)e Fv(cv)-25 b(ode)p Fx(.)673 b(This)2767
+76539 y(in)411 b(turn)g(includes)g(a)g(header)f(\257le)h(\()p
+Fu(dense.h)p Fx(\))i(whic)-31 b(h)411 b(de\257nes)f(the)h
+Fu(DenseMat)h Fx(t)-31 b(yp)31 b(e)411 b(and)g(corresp)31
+b(onding)2767 77867 y(accessor)369 b(macros;)p Black
+Black eop
+%%Page: 23 31
+23 30 bop Black 4000 2701 a Fy(5.4)425 b(A)g(sk)-35 b(eleton)425
+b(of)g(the)g(user's)g(main)f(program)23238 b(23)p 4000
+3144 48001 45 v Black Black 4000 44435 a @beginspecial
+0 @llx 0 @lly 687 @urx 552 @ury 4320 @rwi @setspecial
+%%BeginDocument: cvsim.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: cvsim.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Mon Nov  1 09:34:43 2004
+%%For: radu at tux111.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 687 552
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.576 0.761 0.867 srgb} bind def
+/col33 {0.800 0.800 0.800 srgb} bind def
+/col34 {0.933 0.878 0.525 srgb} bind def
+/col35 {0.945 0.925 0.749 srgb} bind def
+
+end
+save
+newpath 0 552 moveto 0 0 lineto 687 0 lineto 687 552 lineto closepath clip newpath
+-88.7 613.3 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 10605 3525 m 10500 3525 10500 5507 105 arcto 4 {pop} repeat
+  10500 5612 12795 5612 105 arcto 4 {pop} repeat
+  12900 5612 12900 3630 105 arcto 4 {pop} repeat
+  12900 3525 10605 3525 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10605 1136 m 10500 1136 10500 3120 105 arcto 4 {pop} repeat
+  10500 3225 12795 3225 105 arcto 4 {pop} repeat
+  12900 3225 12900 1241 105 arcto 4 {pop} repeat
+  12900 1136 10605 1136 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 5205 5850 m 5100 5850 5100 7785 105 arcto 4 {pop} repeat
+  5100 7890 7395 7890 105 arcto 4 {pop} repeat
+  7500 7890 7500 5955 105 arcto 4 {pop} repeat
+  7500 5850 5205 5850 105 arcto 4 {pop} repeat
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 1605 8625 m 1500 8625 1500 10095 105 arcto 4 {pop} repeat
+  1500 10200 3630 10200 105 arcto 4 {pop} repeat
+  3735 10200 3735 8730 105 arcto 4 {pop} repeat
+  3735 8625 1605 8625 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4065 8625 m 3960 8625 3960 10095 105 arcto 4 {pop} repeat
+  3960 10200 6120 10200 105 arcto 4 {pop} repeat
+  6225 10200 6225 8730 105 arcto 4 {pop} repeat
+  6225 8625 4065 8625 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6555 8625 m 6450 8625 6450 10095 105 arcto 4 {pop} repeat
+  6450 10200 8595 10200 105 arcto 4 {pop} repeat
+  8700 10200 8700 8730 105 arcto 4 {pop} repeat
+  8700 8625 6555 8625 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 9015 8625 m 8910 8625 8910 10095 105 arcto 4 {pop} repeat
+  8910 10200 11070 10200 105 arcto 4 {pop} repeat
+  11175 10200 11175 8730 105 arcto 4 {pop} repeat
+  11175 8625 9015 8625 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 9300 5250 m 9300 1050 l 3750 1050 l 3750 5250 l
+ cp gs col35 1.00 shd ef gr gs col8 s gr 
+% Polyline
+gs  clippath
+10515 4627 m 10515 4522 l 10322 4522 l 10487 4575 l 10322 4627 l cp
+eoclip
+n 9900 4575 m
+ 10500 4575 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 10322 4627 m 10487 4575 l 10322 4522 l 10322 4627 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+gs  clippath
+9915 3502 m 9915 3397 l 9722 3397 l 9887 3450 l 9722 3502 l cp
+eoclip
+n 9300 3450 m
+ 9900 3450 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 9722 3502 m 9887 3450 l 9722 3397 l 9722 3502 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+gs  clippath
+10515 2227 m 10515 2122 l 10322 2122 l 10487 2175 l 10322 2227 l cp
+eoclip
+n 9900 2175 m
+ 10500 2175 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 10322 2227 m 10487 2175 l 10322 2122 l 10322 2227 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+n 9900 2175 m
+ 9900 4575 l gs col35 1.00 shd ef gr gs col8 s gr 
+% Polyline
+gs  clippath
+2497 8640 m 2602 8640 l 2602 8447 l 2550 8612 l 2497 8447 l cp
+eoclip
+n 2550 8325 m
+ 2550 8625 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 2497 8447 m 2550 8612 l 2602 8447 l 2497 8447 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+gs  clippath
+5047 8640 m 5152 8640 l 5152 8447 l 5100 8612 l 5047 8447 l cp
+eoclip
+n 5100 8325 m
+ 5100 8625 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 5047 8447 m 5100 8612 l 5152 8447 l 5047 8447 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+gs  clippath
+7447 8640 m 7552 8640 l 7552 8447 l 7500 8612 l 7447 8447 l cp
+eoclip
+n 7500 8325 m
+ 7500 8625 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 7447 8447 m 7500 8612 l 7552 8447 l 7447 8447 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+gs  clippath
+9997 8640 m 10102 8640 l 10102 8447 l 10050 8612 l 9997 8447 l cp
+eoclip
+n 10050 8325 m
+ 10050 8625 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 9997 8447 m 10050 8612 l 10102 8447 l 9997 8447 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+gs  clippath
+6247 8340 m 6352 8340 l 6352 8147 l 6300 8312 l 6247 8147 l cp
+eoclip
+n 6300 7875 m
+ 6300 8325 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 6247 8147 m 6300 8312 l 6352 8147 l 6247 8147 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+gs  clippath
+6247 5865 m 6352 5865 l 6352 5672 l 6300 5837 l 6247 5672 l cp
+eoclip
+n 6300 5250 m
+ 6300 5850 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 6247 5672 m 6300 5837 l 6352 5672 l 6247 5672 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+n 2550 8325 m
+ 10050 8325 l gs col35 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+10650 2550 m
+gs 1 -1 sc (NV_DATA_S\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10650 2775 m
+gs 1 -1 sc (NV_LENGTH_S\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10650 3000 m
+gs 1 -1 sc (NV_Ith_S\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10575 4800 m
+gs 1 -1 sc (NV_DATA_P\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10575 5025 m
+gs 1 -1 sc (NV_LOCLENGTH_P\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10575 5475 m
+gs 1 -1 sc (NV_Ith_P\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10575 5250 m
+gs 1 -1 sc (NV_GLOBLENGTH_P\(...\)) col8 sh gr
+% Polyline
+n 10500 1650 m
+ 12900 1650 l gs col8 s gr 
+% Polyline
+n 10500 2180 m
+ 12900 2175 l gs col8 s gr 
+% Polyline
+n 10500 4050 m
+ 12900 4050 l gs col8 s gr 
+% Polyline
+n 10500 4580 m
+ 12900 4575 l gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+10875 1500 m
+gs 1 -1 sc (NVECTOR_SERIAL) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10950 1875 m
+gs 1 -1 sc (nvector_serial.h) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10950 2100 m
+gs 1 -1 sc (nvector_serial.c) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10725 3900 m
+gs 1 -1 sc (NVECTOR_PARALLEL) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10875 4275 m
+gs 1 -1 sc (nvector_parallel.h) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10875 4500 m
+gs 1 -1 sc (nvector_parallel.c) col8 sh gr
+% Polyline
+n 1500 9187 m
+ 3750 9187 l gs col8 s gr 
+% Polyline
+n 3975 9669 m
+ 6225 9669 l gs col8 s gr 
+% Polyline
+n 3975 9187 m
+ 6225 9187 l gs col8 s gr 
+% Polyline
+n 1500 9669 m
+ 3750 9669 l gs col8 s gr 
+% Polyline
+n 6450 9669 m
+ 8700 9669 l gs col8 s gr 
+% Polyline
+n 6450 9187 m
+ 8700 9187 l gs col8 s gr 
+% Polyline
+n 8925 9187 m
+ 11175 9187 l gs col8 s gr 
+% Polyline
+n 8925 9669 m
+ 11175 9669 l gs col8 s gr 
+% Polyline
+n 5100 6825 m
+ 7500 6825 l gs col8 s gr 
+% Polyline
+n 5100 6375 m
+ 7500 6375 l gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+5700 6675 m
+gs 1 -1 sc (cvode.h , cvode.c) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+5175 6225 m
+gs 1 -1 sc (Main   CVODE   Integrator) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+5250 7125 m
+gs 1 -1 sc (CVodeMalloc\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+5250 7425 m
+gs 1 -1 sc (CVode\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+5250 7725 m
+gs 1 -1 sc (CVodeFree\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+2175 9000 m
+gs 1 -1 sc (  CVDENSE) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+1650 9450 m
+gs 1 -1 sc (cvdense.h , cvdense.c) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+1650 9975 m
+gs 1 -1 sc (CVDense\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+4200 9450 m
+gs 1 -1 sc (cvband.h , cvband.c) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+4575 9000 m
+gs 1 -1 sc (  CVBAND) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+4125 9975 m
+gs 1 -1 sc (CVBand\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+6675 9975 m
+gs 1 -1 sc (CVDiag\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+6750 9450 m
+gs 1 -1 sc (cvdiag.h , cvdiag.c) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+7125 9000 m
+gs 1 -1 sc (  CVDIAG) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+9525 9000 m
+gs 1 -1 sc (  CVSPGMR) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+9150 9450 m
+gs 1 -1 sc (cvspgmr.h , cvspgmr.c) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+9120 9975 m
+gs 1 -1 sc (CVSpgmr\(...\)) col8 sh gr
+% Polyline
+n 3750 1650 m
+ 9300 1650 l gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+5715 1425 m
+gs 1 -1 sc (User's Program) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 2175 m
+gs 1 -1 sc (  y = N_VNew_Serial\(...\) or N_VNew_Parallel\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 2700 m
+gs 1 -1 sc (  CVodeMalloc\(cvode_mem, f, ...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 1950 m
+gs 1 -1 sc (main\(\) {) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 2430 m
+gs 1 -1 sc (  cvode_mem = CVodeCreate\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 3300 m
+gs 1 -1 sc (  for \(...\) { CVode\(..., y, ...\) }) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 3600 m
+gs 1 -1 sc (  N_VDestroy_Serial\(y\) or N_VDestroy_Parallel\(y\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 4725 m
+gs 1 -1 sc (jac\(...\){...} or) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 5025 m
+gs 1 -1 sc (jtimes\(...\){...} , PrecSetup\(...\){...} and PrecSolve\(...\){...}) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 3000 m
+gs 1 -1 sc (  CVDense or CVBand or CVDiag or CVSpgmr\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 3900 m
+gs 1 -1 sc (  CVodeFree\(cvode_mem\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 4125 m
+gs 1 -1 sc (}) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 4425 m
+gs 1 -1 sc (f\(...\){...}) col8 sh gr
+/Times-Roman ff 195.00 scf sf
+11062 3938 m
+gs 1 -1 sc ( ) col0 sh gr
+/Times-Roman ff 195.00 scf sf
+11062 1538 m
+gs 1 -1 sc ( ) col0 sh gr
+/Times-Roman ff 195.00 scf sf
+2062 9027 m
+gs 1 -1 sc ( ) col0 sh gr
+/Times-Roman ff 195.00 scf sf
+4537 9027 m
+gs 1 -1 sc ( ) col0 sh gr
+/Times-Roman ff 195.00 scf sf
+7012 9027 m
+gs 1 -1 sc ( ) col0 sh gr
+/Times-Roman ff 195.00 scf sf
+9487 9027 m
+gs 1 -1 sc ( ) col0 sh gr
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial Black 7638 46870 a Fx(Figure)369 b(5.1:)494
+b(Diagram)371 b(of)e(the)h(user)e(program)i(and)f Fv(cv)-25
+b(ode)370 b Fx(pac)-31 b(k)-61 b(age)371 b(for)e(in)-31
+b(tegration)372 b(of)e(IVP)p Black Black Black 5660 50419
+a Fp(\262)p Black 554 w Fu(cvband.h)p Fx(,)506 b(whic)-31
+b(h)479 b(is)e(used)g(with)i(the)e(band)h(direct)g(linear)g(solv)-31
+b(er)478 b(in)g(the)f(con)-31 b(text)479 b(of)f Fv(cv)-25
+b(ode)p Fx(.)818 b(This)6767 51747 y(in)501 b(turn)f(includes)g(a)g
+(header)g(\257le)g(\()p Fu(band.h)p Fx(\))i(whic)-31
+b(h)501 b(de\257nes)f(the)g Fu(BandMat)h Fx(t)-31 b(yp)31
+b(e)500 b(and)h(corresp)31 b(onding)6767 53075 y(accessor)369
+b(macros;)p Black 5660 55313 a Fp(\262)p Black 554 w
+Fu(cvdiag.h)p Fx(,)i(whic)-31 b(h)370 b(is)f(used)g(with)h(a)g
+(diagonal)i(linear)e(solv)-31 b(er)369 b(in)h(the)f(con)-31
+b(text)371 b(of)f Fv(cv)-25 b(ode)p Fx(;)p Black 5660
+57551 a Fp(\262)p Black 554 w Fu(cvspgmr.h)p Fx(,)327
+b(whic)-31 b(h)314 b(is)g(used)f(with)i(the)e(Krylo)-31
+b(v)315 b(solv)-31 b(er)314 b Fv(spgmr)e Fx(in)i(the)g(con)-31
+b(text)315 b(of)f Fv(cv)-25 b(ode)p Fx(.)475 b(This)314
+b(in)g(turn)6767 58880 y(includes)443 b(a)f(header)g(\257le)g(\()p
+Fu(iterative.h)p Fx(\))j(whic)-31 b(h)443 b(en)-31 b(umerates)442
+b(the)h(kind)f(of)h(preconditioning)h(and)f(the)6767
+60208 y(c)-31 b(hoices)370 b(for)f(the)h(Gram-Sc)-31
+b(hmidt)371 b(pro)31 b(cess.)5660 62440 y(Other)537 b(headers)e(ma)-31
+b(y)538 b(b)31 b(e)536 b(needed,)578 b(according)538
+b(as)e(to)h(the)g(c)-31 b(hoice)537 b(of)g(preconditioner,)579
+b(etc.)995 b(In)536 b(one)g(of)4000 63768 y(the)467 b(examples)h(in)g
+([14)q(],)493 b(preconditioning)469 b(is)e(done)h(with)g(a)f(blo)31
+b(c)-31 b(k-diagonal)471 b(matrix.)788 b(F)-92 b(or)466
+b(this,)493 b(the)467 b(header)4000 65097 y Fu(smalldense.h)371
+b Fx(is)e(included.)4000 68789 y Fs(5.4)1793 b(A)598
+b(sk)-50 b(eleton)599 b(of)f(the)g(user's)i(main)e(program)4000
+71225 y Fx(A)426 b(high-lev)-31 b(el)429 b(view)e(of)g(the)g(com)-31
+b(bined)428 b(user)d(program)j(and)e Fv(cv)-25 b(ode)428
+b Fx(pac)-31 b(k)-61 b(age)427 b(is)g(sho)-31 b(wn)427
+b(in)f(Figure)h(5.1.)666 b(The)4000 72553 y(follo)-31
+b(wing)483 b(is)d(a)g(sk)-31 b(eleton)480 b(of)g(the)g(user's)f(main)i
+(program)f(\(or)g(calling)i(program\))f(for)e(the)h(in)-31
+b(tegration)482 b(of)f(an)4000 73882 y(ODE)490 b(IVP)-92
+b(.)490 b(Some)h(steps)e(are)h(indep)31 b(enden)-31 b(t)491
+b(of)f(the)g Fv(nvector)g Fx(implemen)-31 b(tation)495
+b(used;)550 b(where)490 b(this)g(is)g(not)4000 75210
+y(the)448 b(case,)468 b(usage)449 b(sp)31 b(eci\257cations)449
+b(are)f(giv)-31 b(en)449 b(for)f(the)g(t)-31 b(w)g(o)450
+b(implemen)-31 b(tations)452 b(pro)-31 b(vided)449 b(with)g
+Fv(cv)-25 b(ode)p Fx(:)651 b(Steps)4000 76539 y(mark)-31
+b(ed)499 b(with)h([)p Fy(P)p Fx(])g(corresp)31 b(ond)498
+b(to)h Fv(nvector)p 24681 76539 368 45 v 441 w(p)-74
+b(arallel)p Fx(,)533 b(while)500 b(steps)e(mark)-31 b(ed)500
+b(with)g([)p Fy(S)p Fx(])f(corresp)31 b(ond)498 b(to)4000
+77867 y Fv(nvector)p 8727 77867 V 441 w(serial)p Fx(.)p
+Black Black eop
+%%Page: 24 32
+24 31 bop Black 0 2701 a Fy(24)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black Black 553 6974 a Fx(1.)p
+Black 493 w Fy([P])424 b(Initialize)f(MPI)1906 8856 y
+Fx(Call)526 b Fu(MPI)p 6211 8856 349 45 v 418 w(Init\(&argc,)583
+b(&argv\);)601 b Fx(to)525 b(initialize)h(MPI)d(if)h(used)f(b)-31
+b(y)523 b(the)h(user's)e(program,)564 b(aside)523 b(from)1906
+10184 y(the)402 b(in)-31 b(ternal)402 b(use)e(in)i Fv(nvector)p
+15964 10184 368 45 v 440 w(p)-74 b(arallel)p Fx(.)590
+b(Here)400 b Fu(argc)h Fx(and)h Fu(argv)f Fx(are)g(the)g(command)i
+(line)e(argumen)-31 b(t)1906 11512 y(coun)g(ter)370 b(and)g(arra)-31
+b(y)369 b(receiv)-31 b(ed)370 b(b)-31 b(y)369 b Fu(main)p
+Fx(.)p Black 553 13956 a(2.)p Black 493 w Fy(Set)426
+b(problem)f(dimensions)1906 15837 y Fx([)p Fy(S)p Fx(])371
+b(Set)e Fu(N)p Fx(,)h(the)f(problem)h(size)f Fm(N)121
+b Fx(.)1906 17719 y([)p Fy(P)p Fx(])394 b(Set)f Fu(Nlocal)p
+Fx(,)400 b(the)393 b(lo)31 b(cal)395 b(v)-31 b(ector)393
+b(length)i(\(the)e(sub-v)-31 b(ector)393 b(length)h(for)f(this)h(pro)31
+b(cessor\);)404 b Fu(N)p Fx(,)393 b(the)h(global)1906
+19048 y(v)-31 b(ector)375 b(length)g(\(the)f(problem)h(size)f
+Fm(N)121 b Fx(,)375 b(and)f(the)g(sum)f(of)i(all)g(the)f(v)-61
+b(alues)374 b(of)g Fu(Nlocal)p Fx(\);)j(and)d(the)g(activ)-31
+b(e)376 b(set)1906 20376 y(of)370 b(pro)31 b(cessors.)p
+Black 553 22819 a(3.)p Black 493 w Fy(Set)426 b(v)-35
+b(ector)424 b(of)h(initial)e(v)-71 b(alues)1906 24701
+y Fx(T)-92 b(o)355 b(set)f(the)h(v)-31 b(ector)355 b
+Fu(y0)f Fx(of)g(initial)j(v)-61 b(alues,)358 b(use)c(functions)h
+(de\257ned)f(b)-31 b(y)354 b(a)h(particular)g Fv(nvector)f
+Fx(implemen-)1906 26029 y(tation.)698 b(If)437 b(a)g
+Fu(realtype)h Fx(arra)-31 b(y)437 b Fu(ydata)g Fx(already)h(exists,)455
+b(con)-31 b(taining)439 b(the)e(initial)j(v)-61 b(alues)437
+b(of)g Fm(y)40 b Fx(,)454 b(mak)-31 b(e)438 b(the)1906
+27358 y(call:)1906 29240 y([)p Fy(S)p Fx(])371 b Fu(y0)581
+b(=)g(NV)p 7735 29240 349 45 v 419 w(Make)p 10478 29240
+V 419 w(Serial\(N,)i(ydata\);)1906 31121 y Fx([)p Fy(P)p
+Fx(])371 b Fu(y0)581 b(=)g(NV)p 7898 31121 V 419 w(Make)p
+10641 31121 V 419 w(Parallel\(comm,)i(Nlocal,)g(N,)e(ydata\);)1906
+33003 y Fx(Otherwise,)370 b(mak)-31 b(e)371 b(the)e(call:)1906
+34885 y([)p Fy(S)p Fx(])i Fu(y0)581 b(=)g(NV)p 7735 34885
+V 419 w(New)p 9897 34885 V 419 w(Serial\(N\);)1906 36767
+y Fx([)p Fy(P)p Fx(])371 b Fu(y0)581 b(=)g(NV)p 7898
+36767 V 419 w(New)p 10060 36767 V 419 w(Parallel\(comm,)i(Nlocal,)f
+(N\);)1906 38649 y Fx(and)370 b(load)g(initial)i(v)-61
+b(alues)369 b(in)-31 b(to)371 b(the)f(structure)e(de\257ned)h(b)-31
+b(y:)1906 40531 y([)p Fy(S)p Fx(])371 b Fu(NV)p 4830
+40531 V 418 w(DATA)p 7572 40531 V 419 w(S\(y0\))1906
+42412 y Fx([)p Fy(P)p Fx(])g Fu(NV)p 4993 42412 V 418
+w(DATA)p 7735 42412 V 419 w(P\(y0\))1906 44294 y Fx(Here)540
+b Fu(comm)h Fx(is)f(the)h(MPI)e(comm)-31 b(unicator,)587
+b(set)540 b(in)g(one)h(of)g(t)-31 b(w)g(o)542 b(w)-31
+b(a)g(ys:)836 b(If)540 b(a)g(prop)31 b(er)540 b(subset)f(of)i(activ)-31
+b(e)1906 45623 y(pro)31 b(cessors)374 b(is)g(to)h(b)31
+b(e)375 b(used,)g Fu(comm)g Fx(m)-31 b(ust)376 b(b)31
+b(e)374 b(set)g(b)-31 b(y)375 b(suitable)h(MPI)e(calls.)510
+b(Otherwise,)377 b(to)e(sp)31 b(ecify)375 b(that)h(all)1906
+46951 y(pro)31 b(cessors)368 b(are)h(to)h(b)31 b(e)369
+b(used,)g Fu(comm)g Fx(m)-31 b(ust)370 b(b)31 b(e)369
+b Fu(MPI)p 23488 46951 V 419 w(COMM)p 26231 46951 V 419
+w(WORLD)p Fx(.)p Black 553 49394 a(4.)p Black 493 w Fy(Create)426
+b Fv(cv)-25 b(ode)425 b Fy(ob)71 b(ject)1906 51276 y
+Fx(Call)271 b Fu(cvode)p 7118 51276 V 419 w(mem)581 b(=)h
+(CVodeCreate\(lmm,iter\);)305 b Fx(to)269 b(create)g(the)f
+Fv(cv)-25 b(ode)269 b Fx(memory)h(blo)31 b(c)-31 b(k)269
+b(and)g(sp)31 b(ecify)269 b(the)1906 52604 y(solution)459
+b(metho)31 b(d)457 b(\(linear)h(m)-31 b(ultistep)459
+b(metho)31 b(d)458 b(and)f(nonlinear)g(solv)-31 b(er)457
+b(iteration)i(t)-31 b(yp)31 b(e\).)756 b Fu(CVodeCreate)1906
+53933 y Fx(returns)369 b(a)g(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(structure.)493
+b(See)368 b Fp(x)p Fx(5.5.1)k(for)d(details.)p Black
+553 56376 a(5.)p Black 493 w Fy(Allo)35 b(cate)425 b(in)-35
+b(ternal)425 b(memory)1906 58258 y Fx(Call)415 b Fu
+(CVodeMalloc\(...\);)436 b Fx(to)413 b(pro)-31 b(vide)414
+b(required)e(problem)h(sp)31 b(eci\257cations,)425 b(allo)31
+b(cate)415 b(in)-31 b(ternal)414 b(memory)1906 59586
+y(for)424 b Fv(cv)-25 b(ode)p Fx(,)438 b(and)424 b(initialize)i
+Fv(cv)-25 b(ode)p Fx(.)656 b Fu(CVodeMalloc)425 b Fx(returns)d(an)i
+(error)e(\260ag)i(to)g(indicate)h(success)d(or)i(an)1906
+60915 y(illegal)372 b(argumen)-31 b(t)371 b(v)-61 b(alue.)493
+b(See)369 b Fp(x)p Fx(5.5.1)i(for)f(details.)p Black
+553 63358 a(6.)p Black 493 w Fy(Set)426 b(optional)e(inputs)1906
+65240 y Fx(Call)414 b Fu(CVodeSet*)f Fx(functions)g(to)f(c)-31
+b(hange)413 b(from)g(their)f(default)h(v)-61 b(alues)412
+b(an)-31 b(y)413 b(optional)h(inputs)e(that)h(con)-31
+b(trol)1906 66568 y(the)370 b(b)31 b(eha)-31 b(vior)370
+b(of)g Fv(cv)-25 b(ode)p Fx(.)493 b(See)369 b Fp(x)p
+Fx(5.5.4)i(for)f(details.)p Black 553 69011 a(7.)p Black
+493 w Fy(A)-35 b(ttac)g(h)424 b(linear)h(solv)-35 b(er)425
+b(mo)35 b(dule)1906 70893 y Fx(If)397 b(Newton)i(iteration)h(is)d(c)-31
+b(hosen,)405 b(initialize)400 b(the)e(linear)g(solv)-31
+b(er)397 b(mo)31 b(dule)399 b(with)f(one)g(of)f(the)h(follo)-31
+b(wing)401 b(calls)1906 72221 y(\(for)370 b(details)h(see)d
+Fp(x)p Fx(5.5.2\):)1906 74103 y([)p Fy(S)p Fx(])j Fu(ier)581
+b(=)h(CVDense\(...\);)1906 75985 y Fx([)p Fy(S)p Fx(])371
+b Fu(ier)581 b(=)h(CVBand\(...\);)1906 77867 y(ier)g(=)f
+(CVDiag\(...\);)p Black Black eop
+%%Page: 25 33
+25 32 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(25)p 4000 3144 48001 45 v Black 5906 6974 a Fu(ier)582
+b(=)f(CVSpgmr\(...\);)p Black 4553 9352 a Fx(8.)p Black
+493 w Fy(Set)426 b(linear)e(solv)-35 b(er)425 b(optional)f(inputs)5906
+11234 y Fx(Call)339 b Fu(CV*Set*)f Fx(functions)g(from)g(the)f
+(selected)h(linear)g(solv)-31 b(er)337 b(mo)31 b(dule)338
+b(to)g(c)-31 b(hange)338 b(optional)i(inputs)d(sp)31
+b(eci\257c)5906 12563 y(to)370 b(that)h(linear)f(solv)-31
+b(er.)493 b(See)369 b Fp(x)p Fx(5.5.4)i(for)e(details.)p
+Black 4553 14941 a(9.)p Black 493 w Fy(Sp)35 b(ecify)425
+b(ro)35 b(ot\257nding)427 b(problem)5906 16823 y Fx(Optionally)-92
+b(,)365 b(call)360 b Fu(CVodeRootInit)h Fx(to)f(initialize)i(a)e(ro)31
+b(ot\257nding)360 b(problem)g(to)g(b)31 b(e)359 b(solv)-31
+b(ed)360 b(during)f(the)h(in)-31 b(te-)5906 18151 y(gration)371
+b(of)f(the)g(ODE)e(system.)493 b(See)369 b Fp(x)p Fx(5.7.1)j(for)d
+(details.)p Black 4000 20530 a(10.)p Black 493 w Fy(Adv)-71
+b(ance)426 b(solution)f(in)f(time)5906 22411 y Fx(F)-92
+b(or)335 b(eac)-31 b(h)336 b(p)31 b(oin)-31 b(t)337 b(at)f(whic)-31
+b(h)336 b(output)h(is)e(desired,)342 b(call)337 b Fu(ier)581
+b(=)h(CVode\(cvode)p 38284 22411 349 45 v 420 w(mem,)f(tout,)h(yout,)g
+(&tret,)5906 23740 y(itask\);)485 b Fx(Set)446 b Fu(itask)g
+Fx(to)g(sp)31 b(ecify)446 b(the)g(return)f(mo)31 b(de.)722
+b(The)446 b(v)-31 b(ector)446 b Fu(y)f Fx(\(whic)-31
+b(h)447 b(can)f(b)31 b(e)445 b(the)h(same)g(as)g(the)5906
+25068 y(v)-31 b(ector)370 b Fu(y0)g Fx(ab)31 b(o)-31
+b(v)g(e\))371 b(will)f(con)-31 b(tain)372 b Fm(y)40 b
+Fx(\()p Fm(t)p Fx(\).)492 b(See)369 b Fp(x)p Fx(5.5.3)j(for)d(details.)
+p Black 4000 27447 a(11.)p Black 493 w Fy(Get)425 b(optional)g(outputs)
+5906 29328 y Fx(Call)371 b Fu(CV*Get*)f Fx(functions)h(to)f(obtain)g
+(optional)i(output.)494 b(See)369 b Fp(x)p Fx(5.5.6)j(and)d
+Fp(x)p Fx(5.7.1)i(for)f(details.)p Black 4000 31707 a(12.)p
+Black 493 w Fy(Deallo)35 b(cate)425 b(memory)h(for)f(solution)g(v)-35
+b(ector)5906 33589 y Fx(Up)31 b(on)304 b(completion)h(of)f(the)f(in)-31
+b(tegration,)320 b(deallo)31 b(cate)306 b(memory)e(for)f(the)g(v)-31
+b(ector)304 b Fu(y)f Fx(b)-31 b(y)303 b(calling)j(the)d(destructor)5906
+34917 y(function)371 b(de\257ned)e(b)-31 b(y)369 b(the)h
+Fv(nvector)f Fx(implemen)-31 b(tation:)5906 36799 y([)p
+Fy(S)p Fx(])371 b Fu(NV)p 8830 36799 V 418 w(Destroy)p
+13315 36799 V 420 w(Serial\(y\);)5906 38681 y Fx([)p
+Fy(P)p Fx(])g Fu(NV)p 8993 38681 V 418 w(Destroy)p 13478
+38681 V 420 w(Parallel\(y\);)p Black 4000 41059 a Fx(13.)p
+Black 493 w Fy(F)-106 b(ree)426 b(solv)-35 b(er)425 b(memory)5906
+42941 y Fu(CVodeFree\(cvode)p 14691 42941 V 421 w(mem\);)370
+b Fx(to)g(free)f(the)g(memory)h(allo)31 b(cated)372 b(for)d
+Fv(cv)-25 b(ode)p Fx(.)p Black 4000 45320 a(14.)p Black
+493 w Fy([P])424 b(Finalize)g(MPI)5906 47201 y Fx(Call)371
+b Fu(MPI)p 10056 47201 V 419 w(Finalize\(\);)g Fx(to)f(terminate)h
+(MPI.)4000 51005 y Fs(5.5)1793 b(User-callable)599 b(functions)4000
+53480 y Fx(This)383 b(section)g(describ)31 b(es)381 b(the)h
+Fv(cv)-25 b(ode)383 b Fx(functions)g(that)h(are)e(called)h(b)-31
+b(y)383 b(the)f(user)f(to)i(set)f(up)g(and)h(solv)-31
+b(e)383 b(an)f(IVP)-92 b(.)4000 54808 y(Some)510 b(of)g(these)g(are)f
+(required.)913 b(Ho)-31 b(w)g(ev)g(er,)547 b(starting)511
+b(with)f Fp(x)p Fx(5.5.4,)548 b(the)509 b(functions)i(listed)f(in)-31
+b(v)g(olv)g(e)512 b(optional)4000 56136 y(inputs/outputs)430
+b(or)d(restarting,)444 b(and)428 b(those)g(paragraphs)g(can)g(b)31
+b(e)427 b(skipp)31 b(ed)428 b(for)g(a)f(casual)i(use)e(of)h
+Fv(cv)-25 b(ode)p Fx(.)669 b(In)4000 57465 y(an)-31 b(y)370
+b(case,)f(refer)f(to)i Fp(x)p Fx(5.4)h(for)e(the)g(correct)g(order)f
+(of)i(these)f(calls.)493 b(Calls)371 b(related)e(to)h(ro)31
+b(ot\257nding)371 b(are)e(describ)31 b(ed)4000 58793
+y(in)369 b Fp(x)p Fx(5.7.)4000 62035 y Fq(5.5.1)1495
+b(CV)-42 b(ODE)500 b(initialization)h(and)e(deallo)42
+b(cation)500 b(functions)4000 64128 y Fx(The)420 b(follo)-31
+b(wing)423 b(three)c(functions)i(m)-31 b(ust)420 b(b)31
+b(e)419 b(called)i(in)e(the)h(order)f(listed.)644 b(The)420
+b(last)h(one)e(is)h(to)g(b)31 b(e)419 b(called)i(only)4000
+65456 y(after)438 b(the)h(IVP)f(solution)h(is)f(complete,)458
+b(as)437 b(it)i(frees)e(the)h Fv(cv)-25 b(ode)439 b Fx(memory)g(blo)31
+b(c)-31 b(k)439 b(created)f(and)g(allo)31 b(cated)441
+b(b)-31 b(y)4000 66785 y(the)369 b(\257rst)g(t)-31 b(w)g(o)371
+b(calls.)p 4000 68796 7146 45 v 4000 70137 45 1341 v
+4376 69805 a Fu(CVodeCreate)p 11101 70137 V 4000 70181
+7146 45 v Black 4000 71560 a Fx(Call)p Black 4848 w Fu(cvode)p
+13789 71560 349 45 v 419 w(mem)582 b(=)f(CVodeCreate\(lmm,)j(iter\);)p
+Black 4000 73385 a Fx(Description)p Black 1286 w(The)381
+b(function)i Fu(CVodeCreate)f Fx(instan)-31 b(tiates)384
+b(a)d Fv(cv)-25 b(ode)382 b Fx(solv)-31 b(er)381 b(ob)61
+b(ject)383 b(and)e(sp)31 b(eci\257es)380 b(the)h(solu-)10814
+74714 y(tion)370 b(metho)31 b(d.)p Black 4000 76539 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(lmm)p Black 1135 w Fx(\()p
+Fu(int)p Fx(\))501 b(sp)31 b(eci\257es)498 b(the)i(linear)g(m)-31
+b(ultistep)502 b(metho)31 b(d)500 b(and)g(m)-31 b(ust)500
+b(b)31 b(e)499 b(one)g(of)h(t)-31 b(w)g(o)502 b(p)31
+b(ossible)13692 77867 y(v)-61 b(alues:)493 b Fu(CV)p
+18651 77867 V 419 w(ADAMS)369 b Fx(or)g Fu(CV)p 24862
+77867 V 419 w(BDF)p Fx(.)p Black Black eop
+%%Page: 26 34
+26 33 bop Black 0 2701 a Fy(26)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black Black 6814 6974 a Fu(iter)p
+Black 554 w Fx(\()p Fu(int)p Fx(\))256 b(sp)31 b(eci\257es)254
+b(the)h(t)-31 b(yp)31 b(e)255 b(of)g(nonlinear)h(solv)-31
+b(er)255 b(iteration)i(and)e(ma)-31 b(y)256 b(b)31 b(e)254
+b(either)h Fu(CV)p 44164 6974 349 45 v 419 w(NEWTON)9692
+8302 y Fx(or)369 b Fu(CV)p 12280 8302 V 419 w(FUNCTIONAL)p
+Fx(.)6814 10102 y(The)326 b(recommended)f(c)-31 b(hoices)326
+b(for)g(\()p Fu(lmm)p Fx(,)335 b Fu(iter)p Fx(\))326
+b(are)f(\()p Fu(CV)p 30710 10102 V 420 w(ADAMS)p Fx(,)h
+Fu(CV)p 35830 10102 V 419 w(FUNCTIONAL)p Fx(\))h(for)e(nonsti\256)6814
+11430 y(problems)370 b(and)f(\()p Fu(CV)p 15373 11430
+V 419 w(BDF)p Fx(,)h Fu(CV)p 19374 11430 V 419 w(NEWTON)p
+Fx(\))g(for)f(sti\256)h(problems.)p Black 0 13230 a(Return)f(v)-61
+b(alue)p Black 554 w(If)503 b(successful,)538 b Fu(CVodeCreate)505
+b Fx(returns)e(a)h(p)31 b(oin)-31 b(ter)504 b(to)h(the)f(newly)g
+(created)g Fv(cv)-25 b(ode)505 b Fx(memory)6814 14558
+y(blo)31 b(c)-31 b(k)349 b(\(of)g(t)-31 b(yp)31 b(e)348
+b Fu(void)582 b(*)p Fx(\).)486 b(If)348 b(an)g(error)f(o)31
+b(ccurred,)352 b Fu(CVodeCreate)d Fx(prin)-31 b(ts)348
+b(an)h(error)e(message)h(to)6814 15886 y Fu(stderr)370
+b Fx(and)f(returns)f Fu(NULL)p Fx(.)p 0 18245 7146 45
+v 0 19585 45 1341 v 376 19253 a Fu(CVodeMalloc)p 7101
+19585 V 0 19629 7146 45 v Black 0 20996 a Fx(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVodeMalloc\(cvode)p 20829 20996
+349 45 v 421 w(mem,)h(f,)f(t0,)h(y0,)f(itol,)h(reltol,)g(abstol\);)p
+Black 0 22795 a Fx(Description)p Black 1286 w(The)387
+b(function)h Fu(CVodeMalloc)h Fx(pro)-31 b(vides)387
+b(required)g(problem)g(and)g(solution)i(sp)31 b(eci\257cations,)393
+b(al-)6814 24124 y(lo)31 b(cates)370 b(in)-31 b(ternal)371
+b(memory)-92 b(,)370 b(and)g(initializes)i Fv(cv)-25
+b(ode)p Fx(.)p Black 0 25923 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 9789 25923 V 419 w(mem)p Black
+554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k)370 b(returned)f(b)-31 b(y)369 b Fu(CVodeCreate)p
+Fx(.)p Black 6814 27487 a Fu(f)p Black 5040 w Fx(\()p
+Fu(CVRhsFn)p Fx(\))348 b(is)e(the)g Fv(C)g Fx(function)h(whic)-31
+b(h)347 b(computes)g Fm(f)465 b Fx(in)346 b(the)g(ODE.)g(This)g
+(function)12435 28815 y(has)369 b(the)h(form)f Fu(f\(t,)582
+b(y,)g(ydot,)f(f)p 27719 28815 V 419 w(data\))370 b Fx(\(for)f(full)i
+(details)f(see)f Fp(x)p Fx(5.6.1\).)p Black 6814 30379
+a Fu(t0)p Black 4459 w Fx(\()p Fu(realtype)p Fx(\))i(is)e(the)h
+(initial)i(v)-61 b(alue)369 b(of)h Fm(t)p Fx(.)p Black
+6814 31943 a Fu(y0)p Black 4459 w Fx(\()p Fu(N)p 13516
+31943 V 419 w(Vector)p Fx(\))g(is)g(the)f(initial)j(v)-61
+b(alue)370 b(of)f Fm(y)40 b Fx(.)p Black 6814 33507 a
+Fu(itol)p Black 3297 w Fx(\()p Fu(int)p Fx(\))311 b(is)f(one)g(of)h
+Fu(CV)p 20807 33507 V 419 w(SS)p Fx(,)f Fu(CV)p 24167
+33507 V 419 w(SV)p Fx(,)h(or)f Fu(CV)p 28825 33507 V
+418 w(WF)p Fx(,)h(where)f Fu(itol)p Fx(=)p Fu(SS)g Fx(indicates)i
+(scalar)e(rel-)12435 34835 y(ativ)-31 b(e)275 b(error)d(tolerance)i
+(and)g(scalar)f(absolute)i(error)d(tolerance,)294 b(while)274
+b Fu(itol)p Fx(=)p Fu(CV)p 46488 34835 V 420 w(SV)12435
+36164 y Fx(indicates)k(scalar)f(relativ)-31 b(e)279 b(error)c
+(tolerance)j(and)f(v)-31 b(ector)277 b(absolute)h(error)e(tolerance.)
+12435 37492 y(The)371 b(latter)g(c)-31 b(hoice)372 b(is)e(imp)31
+b(ortan)-31 b(t)373 b(when)d(the)h(absolute)g(error)f(tolerance)h
+(needs)f(to)12435 38821 y(b)31 b(e)269 b(di\256eren)-31
+b(t)270 b(for)f(eac)-31 b(h)270 b(comp)31 b(onen)-31
+b(t)271 b(of)f(the)g(ODE.)f(If)h Fu(itol)p Fx(=)p Fu(CV)p
+39084 38821 V 419 w(WF)p Fx(,)g(the)g(argumen)-31 b(ts)12435
+40149 y Fu(reltol)304 b Fx(and)f Fu(abstol)h Fx(are)f(ignored)g(and)h
+(the)f(user)f(is)h(exp)31 b(ected)303 b(to)h(pro)-31
+b(vide)304 b(a)f(func-)12435 41477 y(tion)309 b(to)g(ev)-61
+b(aluate)309 b(the)g(error)d(w)-31 b(eigh)g(t)311 b(v)-31
+b(ector)308 b Fm(W)462 b Fx(from)309 b(\(3.6\).)474 b(See)308
+b Fu(CVodeSetEwtFn)12435 42806 y Fx(in)370 b Fp(x)p Fx(5.5.4.)p
+Black 6814 44370 a Fu(reltol)p Black 2135 w Fx(\()p Fu(realtype)p
+Fx(\))h(is)e(the)h(relativ)-31 b(e)371 b(error)d(tolerance.)p
+Black 6814 45933 a Fu(abstol)p Black 2135 w Fx(\()p Fu(void)582
+b(*)p Fx(\))548 b(is)f(a)h(p)31 b(oin)-31 b(ter)548 b(to)g(the)g
+(absolute)g(error)f(tolerance.)1028 b(If)547 b Fu(itol)p
+Fx(=)p Fu(CV)p 46181 45933 V 419 w(SS)p Fx(,)12435 47262
+y Fu(abstol)335 b Fx(m)-31 b(ust)336 b(b)31 b(e)334 b(a)h(p)31
+b(oin)-31 b(ter)336 b(to)f(a)g Fu(realtype)h Fx(v)-61
+b(ariable.)482 b(If)335 b Fu(itol)p Fx(=)p Fu(CV)p 42360
+47262 V 419 w(SV)p Fx(,)g Fu(abstol)12435 48590 y Fx(m)-31
+b(ust)370 b(b)31 b(e)369 b(an)g Fu(N)p 18873 48590 V
+419 w(Vector)g Fx(v)-61 b(ariable.)p Black 0 50390 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(\260ag)h
+Fu(flag)f Fx(\(of)i(t)-31 b(yp)31 b(e)369 b Fu(int)p
+Fx(\))h(will)h(b)31 b(e)369 b(one)g(of)h(the)f(follo)-31
+b(wing:)p Black 6814 52189 a Fu(CV)p 8046 52189 V 419
+w(SUCCESS)p Black 1554 w Fx(The)369 b(call)i(to)f Fu(CVodeMalloc)g
+Fx(w)-31 b(as)370 b(successful.)p Black 6814 53753 a
+Fu(CV)p 8046 53753 V 419 w(MEM)p 10208 53753 V 419 w(NULL)p
+Black 1135 w Fx(The)414 b Fv(cv)-25 b(ode)414 b Fx(memory)h(blo)31
+b(c)-31 b(k)415 b(w)-31 b(as)414 b(not)h(initialized)i(through)d(a)h
+(previous)f(call)14016 55081 y(to)370 b Fu(CVodeCreate)p
+Fx(.)p Black 6814 56645 a Fu(CV)p 8046 56645 V 419 w(MEM)p
+10208 56645 V 419 w(FAIL)p Black 1135 w Fx(A)f(memory)h(allo)31
+b(cation)373 b(request)c(has)g(failed.)p Black 6814 58209
+a Fu(CV)p 8046 58209 V 419 w(ILL)p 10208 58209 V 419
+w(INPUT)p Black 554 w Fx(An)g(input)h(argumen)-31 b(t)371
+b(to)e Fu(CVodeMalloc)i Fx(has)e(an)h(illegal)i(v)-61
+b(alue.)p Black 0 60009 a(Notes)p Black 4072 w(If)344
+b(an)g(error)f(o)31 b(ccurred,)348 b Fu(CVodeMalloc)d
+Fx(also)g(prin)-31 b(ts)344 b(an)g(error)f(message)h(to)h(the)f(\257le)
+g(sp)31 b(eci\257ed)344 b(b)-31 b(y)6814 61337 y(the)369
+b(optional)j(input)e Fu(errfp)p Fx(.)6814 63137 y(The)411
+b(tolerance)h(v)-61 b(alues)411 b(in)g Fu(reltol)h Fx(and)f
+Fu(abstol)h Fx(ma)-31 b(y)412 b(b)31 b(e)410 b(c)-31
+b(hanged)412 b(b)31 b(et)-31 b(w)g(een)412 b(calls)g(to)f
+Fu(CVode)6814 64465 y Fx(\(see)369 b Fu(CVodeSetTolerances)j
+Fx(in)d Fp(x)p Fx(5.5.4\).)7942 67103 y @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Ff(!)1429 b Fx(It)300 b(is)h(the)g(user's)e
+(resp)31 b(onsibilit)-31 b(y)302 b(to)g(pro)-31 b(vide)301
+b(compatible)i Fu(itol)e Fx(and)g Fu(abstol)g Fx(argumen)-31
+b(ts.)p 0 69717 5984 45 v 0 71058 45 1341 v 376 70726
+a Fu(CVodeFree)p 5939 71058 V 0 71102 5984 45 v Black
+0 72468 a Fx(Call)p Black 4848 w Fu(CVodeFree\(cvode)p
+15599 72468 349 45 v 421 w(mem\);)p Black 0 74268 a Fx(Description)p
+Black 1286 w(The)289 b(function)i Fu(CVodeFree)f Fx(frees)e(the)i(p)31
+b(oin)-31 b(ter)289 b(allo)31 b(cated)292 b(b)-31 b(y)289
+b(a)h(previous)f(call)h(to)g Fu(CVodeMalloc)p Fx(.)p
+Black 0 76067 a(Argumen)-31 b(ts)p Black 1517 w(The)369
+b(argumen)-31 b(t)371 b(is)e(the)h(p)31 b(oin)-31 b(ter)370
+b(to)f(the)h Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k)370 b(\(of)g(t)-31 b(yp)31 b(e)370 b Fu(void)582
+b(*)p Fx(\).)p Black 0 77867 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(function)i Fu(CVodeFree)f Fx(has)f(no)h(return)e
+(v)-61 b(alue.)p Black Black eop
+%%Page: 27 35
+27 34 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(27)p 4000 3144 48001 45 v Black 4000 6974 a Fq(5.5.2)1495
+b(Linear)499 b(solv)-42 b(er)500 b(sp)42 b(eci\257cation)500
+b(functions)4000 9017 y Fx(As)380 b(previously)h(explained,)j(Newton)e
+(iteration)g(requires)d(the)i(solution)g(of)g(linear)g(systems)f(of)g
+(the)h(form)f(\(3.4\).)4000 10345 y(There)403 b(are)f(four)h
+Fv(cv)-25 b(ode)404 b Fx(linear)g(solv)-31 b(ers)403
+b(curren)-31 b(tly)403 b(a)-31 b(v)-61 b(ailable)406
+b(for)d(this)g(task:)561 b Fv(cvdense)p Fx(,)412 b Fv(cvband)p
+Fx(,)g Fv(cvdia)-25 b(g)p Fx(,)4000 11674 y(and)247 b
+Fv(cvspgmr)p Fx(.)451 b(The)247 b(\257rst)f(three)h(are)g(direct)g
+(solv)-31 b(ers)246 b(and)h(deriv)-31 b(e)248 b(their)f(name)g(from)h
+(the)f(t)-31 b(yp)31 b(e)247 b(of)g(appro)-31 b(ximation)4000
+13002 y(used)398 b(for)g(the)h(Jacobian)h Fm(J)462 b
+Fx(=)356 b Fm(@)61 b(f)119 b(=@)61 b(y)40 b Fx(.)580
+b Fv(cvdense)p Fx(,)407 b Fv(cvband)p Fx(,)f(and)399
+b Fv(cvdia)-25 b(g)398 b Fx(w)-31 b(ork)399 b(with)h(dense,)405
+b(banded,)i(and)4000 14331 y(diagonal)269 b(appro)-31
+b(ximations)269 b(to)e Fm(J)106 b Fx(,)287 b(resp)31
+b(ectiv)-31 b(ely)-92 b(.)459 b(The)266 b(fourth)h Fv(cv)-25
+b(ode)267 b Fx(linear)f(solv)-31 b(er,)288 b Fv(cvspgmr)p
+Fx(,)e(is)266 b(an)h(iterativ)-31 b(e)4000 15659 y(solv)g(er.)493
+b(The)370 b Fv(spgmr)e Fx(in)h(the)g(name)h(indicates)h(that)f(it)g
+(uses)e(a)i(scaled)f(preconditioned)i(GMRES)e(metho)31
+b(d.)5660 16987 y(T)-92 b(o)301 b(sp)31 b(ecify)300 b(a)g
+Fv(cv)-25 b(ode)301 b Fx(linear)g(solv)-31 b(er,)314
+b(after)301 b(the)f(call)h(to)g Fu(CVodeCreate)g Fx(but)g(b)31
+b(efore)299 b(an)-31 b(y)301 b(calls)g(to)g Fu(CVode)p
+Fx(,)315 b(the)4000 18316 y(user's)420 b(program)h(m)-31
+b(ust)421 b(call)h(one)e(of)h(the)g(functions)g Fu(CVDense)p
+Fx(,)435 b Fu(CVBand)p Fx(,)f Fu(CVDiag)p Fx(,)h Fu(CVSpgmr)p
+Fx(,)f(as)421 b(do)31 b(cumen)-31 b(ted)4000 19644 y(b)31
+b(elo)-31 b(w.)864 b(The)493 b(\257rst)f(argumen)-31
+b(t)494 b(passed)e(to)i(these)e(functions)i(is)e(the)h
+Fv(cv)-25 b(ode)494 b Fx(memory)f(p)31 b(oin)-31 b(ter)494
+b(returned)e(b)-31 b(y)4000 20972 y Fu(CVodeCreate)p
+Fx(.)673 b(A)429 b(call)h(to)g(one)f(of)g(these)g(functions)h(links)f
+(the)g(main)i Fv(cv)-25 b(ode)429 b Fx(in)-31 b(tegrator)431
+b(to)f(a)f(linear)g(solv)-31 b(er)4000 22301 y(and)363
+b(allo)-31 b(ws)366 b(the)d(user)f(to)i(sp)31 b(ecify)364
+b(parameters)f(whic)-31 b(h)364 b(are)f(sp)31 b(eci\257c)363
+b(to)h(a)g(particular)g(solv)-31 b(er,)365 b(suc)-31
+b(h)363 b(as)g(the)h(half-)4000 23629 y(bandwidths)460
+b(in)e(the)h Fv(cvband)f Fx(case.)760 b(The)458 b(use)g(of)h(eac)-31
+b(h)459 b(of)f(the)h(linear)g(solv)-31 b(ers)458 b(in)-31
+b(v)g(olv)g(es)461 b(certain)e(constan)-31 b(ts)4000
+24957 y(and)373 b(p)31 b(ossibly)373 b(some)h(macros,)g(that)h(are)d
+(lik)-31 b(ely)375 b(to)f(b)31 b(e)372 b(needed)h(in)g(the)g(user)f(co)
+31 b(de.)503 b(These)373 b(are)g(a)-31 b(v)-61 b(ailable)375
+b(in)f(the)4000 26286 y(corresp)31 b(onding)369 b(header)g(\257le)h
+(asso)31 b(ciated)370 b(with)g(the)g(linear)g(solv)-31
+b(er,)370 b(as)f(sp)31 b(eci\257ed)369 b(b)31 b(elo)-31
+b(w.)5660 27614 y(In)401 b(eac)-31 b(h)402 b(case)f(except)h(the)f
+(diagonal)j(appro)-31 b(ximation)405 b(case)c Fv(cvdia)-25
+b(g)p Fx(,)410 b(the)401 b(linear)h(solv)-31 b(er)402
+b(mo)31 b(dule)402 b(used)f(b)-31 b(y)4000 28942 y Fv(cv)-25
+b(ode)396 b Fx(is)f(actually)j(built)e(on)f(top)h(of)g(a)g(generic)f
+(linear)h(system)f(solv)-31 b(er,)403 b(whic)-31 b(h)396
+b(ma)-31 b(y)397 b(b)31 b(e)394 b(of)i(in)-31 b(terest)396
+b(in)f(itself.)4000 30271 y(These)347 b(generic)g(solv)-31
+b(ers,)352 b(denoted)c Fv(dense)p Fx(,)353 b Fv(band)p
+Fx(,)f(and)347 b Fv(spgmr)p Fx(,)k(are)c(describ)31 b(ed)346
+b(separately)i(in)f(Chapter)h(8.)p 4000 32117 4821 45
+v 4000 33458 45 1341 v 4376 33126 a Fu(CVDense)p 8776
+33458 V 4000 33502 4821 45 v Black 4000 34854 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVDense\(cvode)p 22505
+34854 349 45 v 420 w(mem,)h(N\);)p Black 4000 36599 a
+Fx(Description)p Black 1286 w(The)369 b(function)i Fu(CVDense)f
+Fx(selects)f(the)h Fv(cvdense)g Fx(linear)g(solv)-31
+b(er.)10814 38345 y(The)369 b(user's)g(main)h(function)h(m)-31
+b(ust)369 b(include)h(the)g Fu(cvdense.h)g Fx(header)f(\257le.)p
+Black 4000 40090 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 40090 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 41614 a Fu(N)p Black 5040
+w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(problem)g(dimension.)p
+Black 4000 43359 a(Return)f(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+10814 45104 a Fu(CVDENSE)p 14951 45104 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g Fv(cvdense)h Fx(initialization)k(w)-31
+b(as)370 b(successful.)p Black 10814 46628 a Fu(CVDENSE)p
+14951 46628 V 419 w(MEM)p 17113 46628 V 419 w(NULL)p
+Black 1136 w Fx(The)f Fu(cvode)p 26172 46628 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p Fx(.)p Black
+10814 48152 a Fu(CVDENSE)p 14951 48152 V 419 w(ILL)p
+17113 48152 V 419 w(INPUT)p Black 555 w Fx(The)277 b
+Fv(cvdense)h Fx(solv)-31 b(er)278 b(is)f(not)h(compatible)i(with)e(the)
+g(curren)-31 b(t)277 b Fv(nvector)20922 49480 y Fx(mo)31
+b(dule.)p Black 10814 51004 a Fu(CVDENSE)p 14951 51004
+V 419 w(MEM)p 17113 51004 V 419 w(FAIL)p Black 1136 w
+Fx(A)369 b(memory)h(allo)31 b(cation)372 b(request)d(failed.)p
+Black 4000 52749 a(Notes)p Black 4072 w(The)393 b Fv(cvdense)g
+Fx(linear)g(solv)-31 b(er)392 b(ma)-31 b(y)394 b(not)f(b)31
+b(e)392 b(compatible)j(with)e(a)g(particular)h(implemen)-31
+b(tation)10814 54077 y(of)388 b(the)f Fv(nvector)g Fx(mo)31
+b(dule.)548 b(Of)387 b(the)h(t)-31 b(w)g(o)389 b Fv(nvector)e
+Fx(mo)31 b(dules)388 b(pro)-31 b(vided)388 b(b)-31 b(y)387
+b Fv(sundials)p Fx(,)392 b(only)10814 55406 y Fv(nvector)p
+15541 55406 368 45 v 441 w(serial)368 b Fx(is)h(compatible,)k(while)d
+Fv(nvector)p 34346 55406 V 441 w(p)-74 b(arallel)370
+b Fx(is)f(not.)p 4000 57652 4240 45 v 4000 58993 45 1341
+v 4376 58661 a Fu(CVBand)p 8195 58993 V 4000 59037 4240
+45 v Black 4000 60389 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVBand\(cvode)p 21924 60389 349 45 v 420 w(mem,)h(N,)f(mupper,)i
+(mlower\);)p Black 4000 62134 a Fx(Description)p Black
+1286 w(The)369 b(function)i Fu(CVBand)f Fx(selects)f(the)g
+Fv(cvband)h Fx(linear)g(solv)-31 b(er.)10814 63879 y(The)369
+b(user's)g(main)h(function)h(m)-31 b(ust)369 b(include)h(the)g
+Fu(cvband.h)g Fx(header)f(\257le.)p Black 4000 65625
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p 13789
+65625 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p
+Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25
+b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 10814
+67148 a Fu(N)p Black 5040 w Fx(\()p Fu(long)582 b(int)p
+Fx(\))370 b(problem)g(dimension.)p Black 10814 68672
+a Fu(mupper)p Black 2135 w Fx(\()p Fu(long)582 b(int)p
+Fx(\))391 b(upp)31 b(er)388 b(half-bandwidth)393 b(of)d(the)f(problem)i
+(Jacobian)g(\(or)f(of)g(the)g(ap-)16435 70001 y(pro)-31
+b(ximation)372 b(of)e(it\).)p Black 10814 71524 a Fu(mlower)p
+Black 2135 w Fx(\()p Fu(long)582 b(int)p Fx(\))418 b(lo)-31
+b(w)g(er)419 b(half-bandwidth)h(of)e(the)f(problem)h(Jacobian)h(\(or)e
+(of)h(the)g(ap-)16435 72853 y(pro)-31 b(ximation)372
+b(of)e(it\).)p Black 4000 74598 a(Return)f(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 10814 76343 a Fu(CVBAND)p 14370 76343 V 419 w(SUCCESS)p
+Black 1554 w Fx(The)h Fv(cvband)f Fx(initialization)374
+b(w)-31 b(as)370 b(successful.)p Black 10814 77867 a
+Fu(CVBAND)p 14370 77867 V 419 w(MEM)p 16532 77867 V 419
+w(NULL)p Black 1135 w Fx(The)g Fu(cvode)p 25591 77867
+V 419 w(mem)f Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p
+Fx(.)p Black Black eop
+%%Page: 28 36
+28 35 bop Black 0 2701 a Fy(28)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black Black 6814 6974 a Fu(CVBAND)p
+10370 6974 349 45 v 419 w(ILL)p 12532 6974 V 419 w(INPUT)p
+Black 554 w Fx(The)389 b Fv(cvband)g Fx(solv)-31 b(er)389
+b(is)g(not)g(compatible)i(with)f(the)f(curren)-31 b(t)388
+b Fv(nvector)16340 8302 y Fx(mo)31 b(dule,)316 b(or)301
+b(one)g(of)g(the)h(Jacobian)g(half-bandwidths)h(is)e(outside)h(its)f(v)
+-61 b(alid)16340 9631 y(range)370 b(\(0)184 b Fm(:)g(:)g(:)373
+b Fu(N)p Fp(\241)p Fx(1\).)p Black 6814 11198 a Fu(CVBAND)p
+10370 11198 V 419 w(MEM)p 12532 11198 V 419 w(FAIL)p
+Black 1135 w Fx(A)d(memory)g(allo)31 b(cation)372 b(request)d(failed.)p
+Black 0 13004 a(Notes)p Black 4072 w(The)431 b Fv(cvband)f
+Fx(linear)i(solv)-31 b(er)431 b(ma)-31 b(y)432 b(not)f(b)31
+b(e)430 b(compatible)j(with)f(a)f(particular)h(implemen)-31
+b(tation)6814 14332 y(of)576 b(the)g Fv(nvector)g Fx(mo)31
+b(dule.)1114 b(Of)576 b(the)g(t)-31 b(w)g(o)577 b Fv(nvector)f
+Fx(mo)31 b(dules)577 b(pro)-31 b(vided)576 b(b)-31 b(y)576
+b Fv(sundials)p Fx(,)6814 15661 y(only)515 b Fv(nvector)p
+14115 15661 368 45 v 441 w(serial)e Fx(is)h(compatible,)553
+b(while)515 b Fv(nvector)p 33535 15661 V 440 w(p)-74
+b(arallel)515 b Fx(is)f(not.)928 b(The)514 b(half-)6814
+16989 y(bandwidths)386 b(are)e(to)i(b)31 b(e)384 b(set)g(so)h(that)h
+(the)f(nonzero)g(lo)31 b(cations)386 b(\()p Fm(i;)184
+b(j)63 b Fx(\))387 b(in)e(the)g(banded)g(\(appro)-31
+b(xi-)6814 18317 y(mate\))371 b(Jacobian)g(satisfy)f
+Fp(\241)p Fu(mlower)g Fp(\267)307 b Fm(j)i Fp(\241)246
+b Fm(i)308 b Fp(\267)369 b Fu(mupper)p Fx(.)p 0 20808
+4240 45 v 0 22395 45 1587 v 376 21817 a Fu(CVDiag)p 4195
+22395 V 0 22439 4240 45 v Black 0 23736 a Fx(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVDiag\(cvode)p 17924 23736
+349 45 v 420 w(mem\);)p Black 0 25542 a Fx(Description)p
+Black 1286 w(The)369 b(function)i Fu(CVDiag)f Fx(selects)f(the)g
+Fv(cvdia)-25 b(g)370 b Fx(linear)f(solv)-31 b(er.)6814
+27349 y(The)369 b(user's)g(main)h(function)h(m)-31 b(ust)369
+b(include)h(the)g Fu(cvdiag.h)g Fx(header)f(\257le.)p
+Black 0 29155 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 29155 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 0 30961 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 6814 32767 a Fu(CVDIAG)p 10370 32767 V 419 w(SUCCESS)p
+Black 1554 w Fx(The)h Fv(cvdia)-25 b(g)369 b Fx(initialization)374
+b(w)-31 b(as)370 b(successful.)p Black 6814 34334 a Fu(CVDIAG)p
+10370 34334 V 419 w(MEM)p 12532 34334 V 419 w(NULL)p
+Black 1135 w Fx(The)g Fu(cvode)p 21591 34334 V 419 w(mem)f
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black
+6814 35902 a Fu(CVDIAG)p 10370 35902 V 419 w(ILL)p 12532
+35902 V 419 w(INPUT)p Black 554 w Fx(The)423 b Fv(cvdia)-25
+b(g)422 b Fx(solv)-31 b(er)422 b(is)g(not)h(compatible)i(with)e(the)f
+(curren)-31 b(t)422 b Fv(nvector)16340 37230 y Fx(mo)31
+b(dule.)p Black 6814 38797 a Fu(CVDIAG)p 10370 38797
+V 419 w(MEM)p 12532 38797 V 419 w(FAIL)p Black 1135 w
+Fx(A)370 b(memory)g(allo)31 b(cation)372 b(request)d(failed.)p
+Black 0 40603 a(Notes)p Black 4072 w(The)295 b Fv(cvdia)-25
+b(g)294 b Fx(solv)-31 b(er)295 b(is)f(the)h(simplest)g(of)g(all)h(the)e
+(curren)-31 b(t)294 b Fv(cv)-25 b(ode)295 b Fx(linear)h(solv)-31
+b(ers.)467 b(The)295 b Fv(cvdia)-25 b(g)6814 41932 y
+Fx(solv)-31 b(er)349 b(uses)e(an)i(appro)-31 b(ximate)351
+b(diagonal)h(Jacobian)e(formed)f(b)-31 b(y)348 b(w)-31
+b(a)g(y)350 b(of)f(a)g(di\256erence)f(quotien)-31 b(t.)6814
+43260 y(The)418 b(user)e(do)31 b(es)417 b Fo(not)h Fx(ha)-31
+b(v)g(e)418 b(the)g(option)h(to)g(supply)e(a)h(function)h(to)g(compute)
+f(an)g(appro)-31 b(ximate)6814 44588 y(diagonal)372 b(Jacobian.)p
+0 46967 4821 45 v 0 48554 45 1587 v 376 47976 a Fu(CVSpgmr)p
+4776 48554 V 0 48598 4821 45 v Black 0 49895 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVSpgmr\(cvode)p 18505
+49895 349 45 v 420 w(mem,)h(pretype,)g(maxl\);)p Black
+0 51701 a Fx(Description)p Black 1286 w(The)369 b(function)i
+Fu(CVSpgmr)f Fx(selects)f(the)h Fv(cvspgmr)e Fx(linear)i(solv)-31
+b(er.)6814 53508 y(The)369 b(user's)g(main)h(function)h(m)-31
+b(ust)369 b(include)h(the)g Fu(cvspgmr.h)g Fx(header)f(\257le.)p
+Black 0 55314 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 55314 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 56881 a Fu(pretype)p Black
+1554 w Fx(\()p Fu(int)p Fx(\))419 b(sp)31 b(eci\257es)417
+b(the)h(preconditioning)j(t)-31 b(yp)31 b(e)418 b(and)g(m)-31
+b(ust)419 b(b)31 b(e)417 b(one)h(of:)591 b Fu(PREC)p
+45019 56881 V 419 w(NONE)p Fx(,)12435 58209 y Fu(PREC)p
+14829 58209 V 419 w(LEFT)p Fx(,)370 b Fu(PREC)p 20573
+58209 V 419 w(RIGHT)p Fx(,)g(or)f Fu(PREC)p 28254 58209
+V 419 w(BOTH)p Fx(.)p Black 6814 59777 a Fu(maxl)p Black
+3297 w Fx(\()p Fu(int)p Fx(\))406 b(maxim)-31 b(um)407
+b(dimension)f(of)f(the)g(Krylo)-31 b(v)406 b(subspace)e(to)h(b)31
+b(e)404 b(used.)598 b(P)-31 b(ass)405 b(0)g(to)12435
+61105 y(use)369 b(the)g(default)i(v)-61 b(alue)369 b
+Fu(CVSPGMR)p 26971 61105 V 420 w(MAXL)p Fx(=)308 b(5.)p
+Black 0 62911 a(Return)369 b(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 64717 a Fu(CVSPGMR)p 10951 64717 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g Fv(cvspgmr)f Fx(initialization)374
+b(w)-31 b(as)370 b(successful.)p Black 6814 66284 a Fu(CVSPGMR)p
+10951 66284 V 419 w(MEM)p 13113 66284 V 419 w(NULL)p
+Black 1136 w Fx(The)f Fu(cvode)p 22172 66284 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p Fx(.)p Black
+6814 67852 a Fu(CVSPGMR)p 10951 67852 V 419 w(ILL)p 13113
+67852 V 419 w(INPUT)p Black 555 w Fx(The)f(preconditioner)h(t)-31
+b(yp)31 b(e)370 b Fu(pretype)g Fx(is)f(not)h(v)-61 b(alid.)p
+Black 6814 69419 a Fu(CVSPGMR)p 10951 69419 V 419 w(MEM)p
+13113 69419 V 419 w(FAIL)p Black 1136 w Fx(A)369 b(memory)h(allo)31
+b(cation)372 b(request)d(failed.)p Black 0 71225 a(Notes)p
+Black 4072 w(The)384 b Fv(cvspgmr)f Fx(solv)-31 b(er)385
+b(uses)e(a)h(scaled)h(preconditioned)g(GMRES)f(iterativ)-31
+b(e)386 b(metho)31 b(d)385 b(to)g(solv)-31 b(e)6814 72553
+y(the)369 b(linear)h(system)g(\(3.4\).)6814 73882 y(With)390
+b(this)h Fv(spgmr)e Fx(metho)31 b(d,)396 b(preconditioning)d(can)d(b)31
+b(e)390 b(done)g(on)g(the)h(left)g(only)-92 b(,)396 b(on)390
+b(the)h(righ)-31 b(t)6814 75210 y(only)-92 b(,)384 b(on)379
+b(b)31 b(oth)381 b(the)f(left)g(and)g(the)g(righ)-31
+b(t,)384 b(or)c(not)g(at)h(all.)525 b(F)-92 b(or)379
+b(a)h(giv)-31 b(en)381 b(preconditioner)g(matrix,)6814
+76539 y(the)341 b(merits)g(of)h(left)g(vs.)483 b(righ)-31
+b(t)342 b(preconditioning)h(are)e(unclear)g(in)g(general,)348
+b(and)341 b(the)h(user)d(should)6814 77867 y(exp)31 b(erimen)-31
+b(t)396 b(with)g(b)31 b(oth)396 b(c)-31 b(hoices.)571
+b(P)-31 b(erformance)397 b(will)g(di\256er)d(b)31 b(ecause)395
+b(the)g(in)-31 b(v)g(erse)396 b(of)f(the)h(left)p Black
+Black eop
+%%Page: 29 37
+29 36 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(29)p 4000 3144 48001 45 v Black 10814 6974 a
+Fx(preconditioner)461 b(is)g(included)f(in)h(the)f(linear)h(system)g
+(residual)g(whose)f(norm)h(is)f(b)31 b(eing)460 b(tested)10814
+8302 y(in)507 b(the)g Fv(spgmr)e Fx(algorithm.)907 b(As)506
+b(a)h(rule,)541 b(ho)-31 b(w)g(ev)g(er,)543 b(if)507
+b(the)g(preconditioner)h(is)e(the)h(pro)31 b(duct)10814
+9631 y(of)411 b(t)-31 b(w)g(o)412 b(matrices,)423 b(w)-31
+b(e)411 b(recommend)g(that)h(preconditioning)h(b)31 b(e)410
+b(done)h(either)g(on)f(the)h(left)h(only)10814 10959
+y(or)537 b(the)g(righ)-31 b(t)538 b(only)-92 b(,)581
+b(rather)537 b(than)g(using)h(one)f(factor)h(on)g(eac)-31
+b(h)537 b(side.)996 b(F)-92 b(or)537 b(sp)31 b(eci\257cation)538
+b(of)10814 12287 y(preconditioner,)371 b(see)d Fp(x)p
+Fx(5.5.4)k(and)d Fp(x)p Fx(5.6.)10814 14073 y(If)341
+b(preconditioning)j(is)d(done,)348 b(user-supplied)341
+b(functions)h(de\257ne)f(left)i(and)e(righ)-31 b(t)343
+b(preconditioner)10814 15401 y(matrices)526 b Fm(P)16118
+15567 y Fl(1)17139 15401 y Fx(and)f Fm(P)20158 15567
+y Fl(2)21179 15401 y Fx(\(either)h(of)f(whic)-31 b(h)526
+b(could)g(b)31 b(e)525 b(the)g(iden)-31 b(tit)g(y)527
+b(matrix\),)567 b(suc)-31 b(h)524 b(that)j(the)10814
+16729 y(pro)31 b(duct)369 b Fm(P)15679 16895 y Fl(1)16175
+16729 y Fm(P)16886 16895 y Fl(2)17752 16729 y Fx(appro)-31
+b(ximates)371 b(the)f(Newton)g(matrix)h Fm(M)428 b Fx(=)307
+b Fm(I)333 b Fp(\241)246 b Fm(\260)61 b(J)476 b Fx(of)369
+b(\(3.5\).)4000 19866 y Fq(5.5.3)1495 b(CV)-42 b(ODE)500
+b(solv)-42 b(er)500 b(function)4000 21923 y Fx(This)370
+b(is)f(the)g(cen)-31 b(tral)370 b(step)f(in)h(the)f(solution)i(pro)31
+b(cess)368 b(|)h(the)h(call)g(to)g(p)31 b(erform)369
+b(the)g(in)-31 b(tegration)373 b(of)c(the)h(IVP)-92 b(.)p
+4000 23830 3659 45 v 4000 25171 45 1341 v 4376 24839
+a Fu(CVode)p 7614 25171 V 4000 25215 3659 45 v Black
+4000 26574 a Fx(Call)p Black 4848 w Fu(flag)582 b(=)f(CVode\(cvode)p
+21343 26574 349 45 v 420 w(mem,)h(tout,)g(yout,)g(tret,)f(itask\);)p
+Black 4000 28360 a Fx(Description)p Black 1286 w(The)369
+b(function)i Fu(CVode)f Fx(in)-31 b(tegrates)371 b(the)e(ODE)g(o)-31
+b(v)g(er)370 b(an)f(in)-31 b(terv)-61 b(al)370 b(in)g
+Fm(t)p Fx(.)p Black 4000 30145 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 13789 30145 V 419 w(mem)p Black
+554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 31702 a Fu(tout)p Black 3297
+w Fx(\()p Fu(realtype)p Fx(\))371 b(the)f(next)f(time)i(at)f(whic)-31
+b(h)370 b(a)f(computed)i(solution)g(is)e(desired.)p Black
+10814 33259 a Fu(yout)p Black 3297 w Fx(\()p Fu(N)p 17516
+33259 V 419 w(Vector)p Fx(\))h(the)g(computed)g(solution)h(v)-31
+b(ector.)p Black 10814 34816 a Fu(tret)p Black 3297 w
+Fx(\()p Fu(realtype)583 b(*)p Fx(\))370 b(the)f(time)h(reac)-31
+b(hed)370 b(b)-31 b(y)369 b(the)g(solv)-31 b(er.)p Black
+10814 36373 a Fu(itask)p Black 2716 w Fx(\()p Fu(int)p
+Fx(\))445 b(a)g(\260ag)g(indicating)i(the)d(job)h(of)f(the)h(solv)-31
+b(er)445 b(for)f(the)g(next)h(user)e(step.)718 b(The)16435
+37701 y Fu(CV)p 17667 37701 V 419 w(NORMAL)297 b Fx(task)g(is)g(to)g
+(ha)-31 b(v)g(e)298 b(the)f(solv)-31 b(er)297 b(tak)-31
+b(e)298 b(in)-31 b(ternal)298 b(steps)e(un)-31 b(til)298
+b(it)f(has)g(reac)-31 b(hed)16435 39030 y(or)331 b(just)g(passed)g(the)
+g(user)g(sp)31 b(eci\257ed)330 b Fu(tout)i Fx(parameter.)481
+b(The)331 b(solv)-31 b(er)332 b(then)f(in)-31 b(terp)31
+b(o-)16435 40358 y(lates)281 b(in)f(order)g(to)h(return)e(an)i(appro)
+-31 b(ximate)282 b(v)-61 b(alue)281 b(of)g Fm(y)40 b
+Fx(\()p Fu(tout)p Fx(\).)463 b(The)281 b Fu(CV)p 47165
+40358 V 419 w(ONE)p 49327 40358 V 418 w(STEP)16435 41686
+y Fx(option)487 b(tells)g(the)f(solv)-31 b(er)486 b(to)g(just)g(tak)-31
+b(e)487 b(one)f(in)-31 b(ternal)487 b(step)e(and)h(return)f(the)h(so-)
+16435 43015 y(lution)592 b(at)g(the)f(p)31 b(oin)-31
+b(t)591 b(reac)-31 b(hed)591 b(b)-31 b(y)591 b(that)h(step.)1157
+b(The)591 b Fu(CV)p 42467 43015 V 418 w(NORMAL)p 46371
+43015 V 420 w(TSTOP)g Fx(and)16435 44343 y Fu(CV)p 17667
+44343 V 419 w(ONE)p 19829 44343 V 419 w(STEP)p 22572
+44343 V 419 w(TSTOP)359 b Fx(mo)31 b(des)360 b(are)f(similar)h(to)g
+Fu(CV)p 37635 44343 V 419 w(NORMAL)f Fx(and)h Fu(CV)p
+45204 44343 V 419 w(ONE)p 47366 44343 V 418 w(STEP)p
+Fx(,)g(re-)16435 45671 y(sp)31 b(ectiv)-31 b(ely)-92
+b(,)311 b(except)295 b(that)h(the)f(in)-31 b(tegration)297
+b(nev)-31 b(er)295 b(pro)31 b(ceeds)293 b(past)i(the)g(v)-61
+b(alue)295 b Fu(tstop)16435 47000 y Fx(\(sp)31 b(eci\257ed)369
+b(through)h(the)g(function)g Fu(CVodeSetStopTime)p Fx(\).)p
+Black 4000 48785 a(Return)f(v)-61 b(alue)p Black 554
+w(On)490 b(return,)519 b Fu(CVode)491 b Fx(returns)d(a)j(v)-31
+b(ector)490 b Fu(yout)g Fx(and)g(a)g(corresp)31 b(onding)490
+b(indep)31 b(enden)-31 b(t)491 b(v)-61 b(ariable)10814
+50114 y(v)g(alue)370 b Fm(t)307 b Fx(=)p Fu(*tret)p Fx(,)370
+b(suc)-31 b(h)369 b(that)h Fu(yout)g Fx(is)f(the)g(computed)i(v)-61
+b(alue)369 b(of)h Fm(y)40 b Fx(\()p Fm(t)p Fx(\).)10814
+51899 y(In)360 b Fu(CV)p 13421 51899 V 419 w(NORMAL)h
+Fx(mo)31 b(de)361 b(with)h(no)f(errors,)g Fu(*tret)h
+Fx(will)g(b)31 b(e)360 b(equal)i(to)f Fu(tout)g Fx(and)g
+Fu(yout)g Fx(=)g Fm(y)40 b Fx(\()p Fu(tout)p Fx(\).)10814
+53685 y(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(will)h(b)31
+b(e)369 b(one)g(of)h(the)f(follo)-31 b(wing:)p Black
+10814 55470 a Fu(CV)p 12046 55470 V 419 w(SUCCESS)p Black
+3716 w(CVode)369 b Fx(succeeded)g(and)g(no)h(ro)31 b(ot)369
+b(w)-31 b(as)370 b(found.)p Black 10814 57027 a Fu(CV)p
+12046 57027 V 419 w(TSTOP)p 15370 57027 V 419 w(RETURN)p
+Black 973 w(CVode)360 b Fx(succeeded)f(b)-31 b(y)361
+b(reac)-31 b(hing)361 b(the)f(stopping)h(p)31 b(oin)-31
+b(t)361 b(sp)31 b(eci\257ed)360 b(through)20178 58356
+y(the)369 b(optional)j(input)e(function)g Fu(CVodeSetStopTime)i
+Fx(\(see)d Fp(x)p Fx(5.5.4\).)p Black 10814 59913 a Fu(CV)p
+12046 59913 V 419 w(ROOT)p 14789 59913 V 419 w(RETURN)p
+Black 1554 w(CVode)392 b Fx(succeeded)g(and)h(found)f(one)h(or)f(more)h
+(ro)31 b(ots.)562 b(If)392 b Fu(nrtfn)h Fm(>)346 b Fx(1,)399
+b(call)20178 61241 y Fu(CVodeGetRootInfo)341 b Fx(to)f(see)f(whic)-31
+b(h)340 b Fm(g)36563 61407 y Fk(i)37271 61241 y Fx(w)-31
+b(ere)339 b(found)h(to)g(ha)-31 b(v)g(e)340 b(a)g(ro)31
+b(ot.)483 b(See)20178 62569 y Fp(x)p Fx(5.7)370 b(for)f(more)h
+(information.)p Black 10814 64126 a Fu(CV)p 12046 64126
+V 419 w(MEM)p 14208 64126 V 419 w(NULL)p Black 3297 w
+Fx(The)f Fu(cvode)p 25428 64126 V 419 w(mem)h Fx(argumen)-31
+b(t)370 b(w)-31 b(as)370 b Fu(NULL)p Fx(.)p Black 10814
+65683 a Fu(CV)p 12046 65683 V 419 w(NO)p 13627 65683
+V 418 w(MALLOC)p Black 2717 w Fx(The)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(w)-31 b(as)370 b(not)g(allo)31 b(cated)371
+b(b)-31 b(y)370 b(a)f(call)i(to)f Fu(CVodeMalloc)p Fx(.)p
+Black 10814 67240 a Fu(CV)p 12046 67240 V 419 w(ILL)p
+14208 67240 V 419 w(INPUT)p Black 2716 w Fx(One)417 b(of)h(the)g
+(inputs)f(to)i Fu(CVode)f Fx(is)f(illegal.)640 b(This)418
+b(includes)g(the)f(situation)20178 68568 y(where)303
+b(a)h(ro)31 b(ot)305 b(of)f(one)g(of)g(the)g(ro)31 b(ot)304
+b(functions)h(w)-31 b(as)305 b(found)f(b)31 b(oth)304
+b(at)h(a)f(p)31 b(oin)-31 b(t)20178 69897 y Fm(t)363
+b Fx(and)h(also)g(v)-31 b(ery)364 b(near)g Fm(t)p Fx(.)490
+b(It)364 b(also)h(includes)f(the)g(situation)i(where)d(a)h(com-)20178
+71225 y(p)31 b(onen)-31 b(t)305 b(of)g(the)g(error)f(w)-31
+b(eigh)g(t)306 b(v)-31 b(ector)306 b(b)31 b(ecomes)305
+b(negativ)-31 b(e)306 b(during)f(in)-31 b(ternal)20178
+72553 y(time-stepping.)546 b(The)386 b Fu(CV)p 31139
+72553 V 419 w(ILL)p 33301 72553 V 419 w(INPUT)g Fx(\260ag)h(will)h
+(also)g(b)31 b(e)385 b(returned)h(if)h(the)20178 73882
+y(linear)336 b(solv)-31 b(er)336 b(function)g(initialization)341
+b(\(called)c(b)-31 b(y)336 b(the)f(user)g(after)h(calling)20178
+75210 y Fu(CVodeCreate)p Fx(\))458 b(failed)h(to)e(set)g(the)g(linear)h
+(solv)-31 b(er-sp)31 b(eci\257c)457 b Fu(lsolve)h Fx(\257eld)20178
+76539 y(in)436 b Fu(cvode)p 24511 76539 V 419 w(mem)p
+Fx(.)694 b(In)435 b(an)-31 b(y)437 b(case,)453 b(the)436
+b(user)f(should)i(see)e(the)h(prin)-31 b(ted)437 b(error)20178
+77867 y(message)369 b(for)h(details.)p Black Black eop
+%%Page: 30 38
+30 37 bop Black 0 2701 a Fy(30)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black Black 6814 6974 a Fu(CV)p
+8046 6974 349 45 v 419 w(LINIT)p 11370 6974 V 419 w(FAIL)p
+Black 2135 w Fx(The)369 b(linear)h(solv)-31 b(er's)370
+b(initialization)k(function)d(failed.)p Black 6814 8502
+a Fu(CV)p 8046 8502 V 419 w(TOO)p 10208 8502 V 419 w(MUCH)p
+12951 8502 V 419 w(WORK)p Black 554 w Fx(The)463 b(solv)-31
+b(er)464 b(to)31 b(ok)464 b Fu(mxstep)g Fx(in)-31 b(ternal)465
+b(steps)e(but)h(could)g(not)g(reac)-31 b(h)463 b(tout.)16178
+9830 y(The)369 b(default)i(v)-61 b(alue)369 b(for)h Fu(mxstep)g
+Fx(is)f Fu(MXSTEP)p 35253 9830 V 419 w(DEFAULT)582 b(=)f(500)p
+Fx(.)p Black 6814 11358 a Fu(CV)p 8046 11358 V 419 w(TOO)p
+10208 11358 V 419 w(MUCH)p 12951 11358 V 419 w(ACC)p
+Black 1135 w Fx(The)452 b(solv)-31 b(er)452 b(could)g(not)g(satisfy)h
+(the)f(accuracy)g(demanded)g(b)-31 b(y)452 b(the)g(user)16178
+12686 y(for)369 b(some)g(in)-31 b(ternal)371 b(step.)p
+Black 6814 14214 a Fu(CV)p 8046 14214 V 419 w(ERR)p 10208
+14214 V 419 w(FAILURE)p Black 1554 w Fx(Error)468 b(test)i(failures)f
+(o)31 b(ccurred)469 b(to)31 b(o)470 b(man)-31 b(y)470
+b(times)g(\()p Fu(MXNEF)583 b(=)e(7)p Fx(\))470 b(during)16178
+15542 y(one)369 b(in)-31 b(ternal)371 b(time)f(step)f(or)g(o)31
+b(ccurred)369 b(with)h Fp(j)p Fm(h)p Fp(j)308 b Fx(=)g
+Fm(h)38935 15708 y Fk(min)40636 15542 y Fx(.)p Black
+6814 17070 a Fu(CV)p 8046 17070 V 419 w(CONV)p 10789
+17070 V 419 w(FAILURE)p Black 973 w Fx(Con)-31 b(v)g(ergence)409
+b(test)g(failures)g(o)31 b(ccurred)407 b(to)31 b(o)410
+b(man)-31 b(y)409 b(times)h(\()p Fu(MXNCF)582 b(=)f(10)p
+Fx(\))16178 18398 y(during)369 b(one)h(in)-31 b(ternal)370
+b(time)h(step)e(or)g(o)31 b(ccurred)368 b(with)i Fp(j)p
+Fm(h)p Fp(j)309 b Fx(=)e Fm(h)42443 18564 y Fk(min)44144
+18398 y Fx(.)p Black 6814 19926 a Fu(CV)p 8046 19926
+V 419 w(LSETUP)p 11951 19926 V 419 w(FAIL)p Black 1554
+w Fx(The)372 b(linear)h(solv)-31 b(er's)373 b(setup)f(function)i
+(failed)g(in)e(an)h(unreco)-31 b(v)g(erable)373 b(man-)16178
+21255 y(ner.)p Black 6814 22782 a Fu(CV)p 8046 22782
+V 419 w(LSOLVE)p 11951 22782 V 419 w(FAIL)p Black 1554
+w Fx(The)400 b(linear)g(solv)-31 b(er's)400 b(solv)-31
+b(e)401 b(function)g(failed)g(in)f(an)f(unreco)-31 b(v)g(erable)401
+b(man-)16178 24111 y(ner.)p Black 0 25860 a(Notes)p Black
+4072 w(The)343 b(v)-31 b(ector)343 b Fu(yout)g Fx(can)g(o)31
+b(ccup)-31 b(y)343 b(the)g(same)g(space)f(as)h(the)g
+Fu(y0)f Fx(v)-31 b(ector)344 b(of)f(initial)i(conditions)g(that)6814
+27188 y(w)-31 b(as)370 b(passed)e(to)i Fu(CVodeMalloc)p
+Fx(.)6814 28938 y(In)364 b(the)h Fu(CV)p 11327 28938
+V 419 w(ONE)p 13489 28938 V 419 w(STEP)g Fx(mo)31 b(de,)366
+b Fu(tout)f Fx(is)g(used)f(on)h(the)g(\257rst)f(call)i(only)-92
+b(,)367 b(to)e(get)h(the)f(direction)h(and)6814 30266
+y(rough)j(scale)h(of)g(the)f(indep)31 b(enden)-31 b(t)370
+b(v)-61 b(ariable.)6814 32015 y(All)357 b(failure)h(return)e(v)-61
+b(alues)357 b(are)f(negativ)-31 b(e)359 b(and)d(therefore)h(a)g(test)g
+Fu(flag)p Fm(<)308 b Fx(0)356 b(will)j(trap)d(all)i Fu(CVode)6814
+33343 y Fx(failures.)6814 35093 y(On)463 b(an)-31 b(y)464
+b(error)e(return)h(in)g(whic)-31 b(h)464 b(one)g(or)f(more)g(in)-31
+b(ternal)465 b(steps)e(w)-31 b(ere)463 b(tak)-31 b(en)464
+b(b)-31 b(y)464 b Fu(CVode)p Fx(,)488 b(the)6814 36421
+y(returned)510 b(v)-61 b(alues)512 b(of)f Fu(tret)h Fx(and)f
+Fu(yout)h Fx(corresp)31 b(ond)510 b(to)i(the)g(farthest)g(p)31
+b(oin)-31 b(t)512 b(reac)-31 b(hed)511 b(in)h(the)6814
+37749 y(in)-31 b(tegration.)696 b(On)436 b(all)h(other)f(error)f
+(returns,)452 b Fu(tret)437 b Fx(and)f Fu(yout)g Fx(are)g(left)h(unc)
+-31 b(hanged)437 b(from)g(the)6814 39078 y(previous)369
+b Fu(CVode)h Fx(return.)0 42158 y Fq(5.5.4)1495 b(Optional)500
+b(input)f(functions)0 44201 y Fv(cv)-25 b(ode)392 b Fx(pro)-31
+b(vides)392 b(an)f(extensiv)-31 b(e)393 b(list)f(of)g(functions)g(that)
+h(can)e(b)31 b(e)391 b(used)g(to)h(c)-31 b(hange)392
+b(from)g(their)g(default)h(v)-61 b(alues)0 45529 y(v)g(arious)462
+b(optional)j(input)e(parameters)g(that)g(con)-31 b(trol)464
+b(the)f(b)31 b(eha)-31 b(vior)463 b(of)g(the)f Fv(cv)-25
+b(ode)463 b Fx(solv)-31 b(er.)773 b(T)-92 b(able)463
+b(5.1)g(lists)0 46857 y(all)444 b(optional)g(input)f(functions)h(in)e
+Fv(cv)-25 b(ode)443 b Fx(whic)-31 b(h)443 b(are)g(then)f(describ)31
+b(ed)441 b(in)i(detail)h(in)f(the)f(remainder)h(of)f(this)0
+48186 y(section.)494 b(F)-92 b(or)368 b(the)h(most)h(casual)g(use)f(of)
+h Fv(cv)-25 b(ode)p Fx(,)370 b(the)f(reader)g(can)g(skip)h(to)g
+Fp(x)p Fx(5.6.)1660 49514 y(W)-92 b(e)302 b(note)h(that,)317
+b(on)302 b(error)g(return,)315 b(all)303 b(these)f(functions)i(also)f
+(prin)-31 b(t)302 b(an)h(error)e(message)h(to)h Fu(stderr)g
+Fx(\(or)g(to)g(the)0 50843 y(\257le)353 b(p)31 b(oin)-31
+b(ted)354 b(to)f(b)-31 b(y)353 b Fu(errfp)g Fx(if)h(already)f(sp)31
+b(eci\257ed\).)487 b(W)-92 b(e)352 b(also)i(note)f(that)h(all)g(error)e
+(return)g(v)-61 b(alues)353 b(are)f(negativ)-31 b(e,)0
+52171 y(so)369 b(a)h(test)f Fu(flag)p Fm(<)308 b Fx(0)370
+b(will)h(catc)-31 b(h)370 b(an)-31 b(y)370 b(error.)0
+55029 y Fy(Main)424 b(solv)-35 b(er)425 b(optional)g(input)g(functions)
+0 57073 y Fx(The)369 b(calls)h(listed)h(here)d(can)h(b)31
+b(e)369 b(executed)h(in)f(an)-31 b(y)370 b(order.)p 0
+58922 9470 45 v 0 60263 45 1341 v 376 59931 a Fu(CVodeSetErrFile)p
+9426 60263 V 0 60307 9470 45 v Black 0 61659 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetErrFile\(cvode)p
+23153 61659 349 45 v 422 w(mem,)g(errfp\);)p Black 0
+63409 a Fx(Description)p Black 1286 w(The)352 b(function)h
+Fu(CVodeSetErrFile)g Fx(sp)31 b(eci\257es)351 b(the)h(p)31
+b(oin)-31 b(ter)352 b(to)h(the)f(\257le)f(where)h(all)h
+Fv(cv)-25 b(ode)352 b Fx(mes-)6814 64737 y(sages)369
+b(should)h(b)31 b(e)368 b(directed.)p Black 0 66486 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 66486 V 419
+w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 68014
+a Fu(errfp)p Black 2716 w Fx(\()p Fu(FILE)582 b(*)p Fx(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(output)g(\257le.)p
+Black 0 69763 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 71512 a Fu(CV)p 8046 71512 V 419 w(SUCCESS)p Black
+973 w Fx(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 6814 73040 a
+Fu(CV)p 8046 73040 V 419 w(MEM)p 10208 73040 V 419 w(NULL)p
+Black 554 w Fx(The)f Fu(cvode)p 18685 73040 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black
+0 74789 a(Notes)p Black 4072 w(The)g(default)i(v)-61
+b(alue)370 b(for)f Fu(errfp)h Fx(is)f Fu(stderr)p Fx(.)6814
+76539 y(P)-31 b(assing)400 b(a)f(v)-61 b(alue)399 b(of)g
+Fu(NULL)g Fx(disables)g(all)h(future)f(error)f(message)h(output)h
+(\(except)f(for)g(the)g(case)6814 77867 y(in)369 b(whic)-31
+b(h)371 b(the)e Fv(cv)-25 b(ode)370 b Fx(memory)g(p)31
+b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(\).)p Black Black
+eop
+%%Page: 31 39
+31 38 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(31)p 4000 3144 48001 45 v Black Black Black 10207
+21499 a Fx(T)-92 b(able)370 b(5.1:)494 b(Optional)372
+b(inputs)d(for)g Fv(cv)-25 b(ode)p Fx(,)371 b Fv(cvdense)p
+Fx(,)f Fv(cvband)p Fx(,)g(and)g Fv(cvspgmr)p Black 4000
+22533 50619 45 v 3978 23862 45 1329 v 4664 23463 a Fy(Optional)425
+b(input)p 27507 23862 V 15306 w(F)-106 b(unction)425
+b(name)p 42783 23862 V 7014 w(Default)p 54597 23862 V
+4000 23906 50619 45 v 3978 25234 45 1329 v 23589 24836
+a(CV)-35 b(ODE)426 b(main)d(solv)-35 b(er)p 54597 25234
+V 4000 25278 50619 45 v 3978 26607 45 1329 v 4664 26208
+a Fx(P)k(oin)g(ter)371 b(to)f(an)f(error)g(\257le)p 27507
+26607 V 12616 w Fu(CVodeSetErrFile)p 42783 26607 V 6561
+w(stderr)p 54597 26607 V 3978 27935 V 4664 27537 a Fx(Data)h(for)f
+(righ)-31 b(t-hand)371 b(side)e(function)p 27507 27935
+V 7452 w Fu(CVodeSetFdata)p 42783 27935 V 7723 w Fx(NULL)p
+54597 27935 V 3978 29264 V 4664 28865 a(Maxim)-31 b(um)371
+b(order)e(for)g(BDF)f(metho)31 b(d)p 27507 29264 V 7301
+w Fu(CVodeSetMaxOrd)p 42783 29264 V 7142 w Fx(5)p 54597
+29264 V 3978 30592 V 4664 30193 a(Maxim)-31 b(um)371
+b(order)e(for)g(Adams)h(metho)31 b(d)p 27507 30592 V
+6295 w Fu(CVodeSetMaxOrd)p 42783 30592 V 7142 w Fx(12)p
+54597 30592 V 3978 31920 V 4664 31522 a(Maxim)-31 b(um)371
+b(no.)493 b(of)370 b(in)-31 b(ternal)371 b(steps)d(b)31
+b(efore)369 b Fm(t)23747 31688 y Fl(out)p 27507 31920
+V 28193 31522 a Fu(CVodeSetMaxNumSteps)p 42783 31920
+V 4237 w Fx(500)p 54597 31920 V 3978 33249 V 4664 32850
+a(Maxim)-31 b(um)371 b(no.)493 b(of)370 b(w)-31 b(arnings)370
+b(for)f Fm(t)19897 33016 y Fk(n)20746 32850 y Fx(+)246
+b Fm(h)307 b Fx(=)g Fm(t)24366 33016 y Fk(n)p 27507 33249
+V 28193 32850 a Fu(CVodeSetMaxHnilWarns)p 42783 33249
+V 3656 w Fx(10)p 54597 33249 V 3978 34577 V 4664 34178
+a(Flag)370 b(to)g(activ)-61 b(ate)371 b(stabilit)-31
+b(y)372 b(limit)g(detection)p 27507 34577 V 4137 w Fu
+(CVodeSetStabLimDet)p 42783 34577 V 4818 w Fx(F)-123
+b(ALSE)p 54597 34577 V 3978 35905 V 4664 35507 a(Initial)371
+b(step)e(size)p 27507 35905 V 16168 w Fu(CVodeSetInitStep)p
+42783 35905 V 5980 w Fx(estimated)p 54597 35905 V 3978
+37234 V 4664 36835 a(Minim)-31 b(um)371 b(absolute)g(step)e(size)p
+27507 37234 V 10042 w Fu(CVodeSetMinStep)p 42783 37234
+V 6561 w Fx(0.0)p 54597 37234 V 3978 38562 V 4664 38163
+a(Maxim)-31 b(um)371 b(absolute)g(step)e(size)p 27507
+38562 V 9827 w Fu(CVodeSetMaxStep)p 42783 38562 V 6561
+w Fp(1)p 54597 38562 V 3978 39890 V 4664 39492 a Fx(V)-92
+b(alue)370 b(of)g Fm(t)9400 39658 y Fk(stop)p 27507 39890
+V 28193 39492 a Fu(CVodeSetStopTime)p 42783 39890 V 5980
+w Fp(1)p 54597 39890 V 3978 41219 V 4664 40820 a Fx(Maxim)-31
+b(um)371 b(no.)493 b(of)370 b(error)e(test)i(failures)p
+27507 41219 V 6685 w Fu(CVodeSetMaxErrTestFails)p 42783
+41219 V 1913 w Fx(7)p 54597 41219 V 3978 42547 V 4664
+42149 a(Maxim)-31 b(um)371 b(no.)493 b(of)370 b(nonlinear)g(iterations)
+p 27507 42547 V 5623 w Fu(CVodeSetMaxNonlinIters)p 42783
+42547 V 2494 w Fx(3)p 54597 42547 V 3978 43875 V 4664
+43477 a(Maxim)-31 b(um)371 b(no.)493 b(of)370 b(con)-31
+b(v)g(ergence)370 b(failures)p 27507 43875 V 5437 w Fu
+(CVodeSetMaxConvFails)p 42783 43875 V 3656 w Fx(10)p
+54597 43875 V 3978 45204 V 4664 44805 a(Co)31 b(e\261cien)-31
+b(t)371 b(in)f(the)f(nonlinear)i(con)-31 b(v)g(ergence)370
+b(test)p 27507 45204 V 2085 w Fu(CVodeSetNonlinConvCoef)p
+42783 45204 V 2494 w Fx(0.1)p 54597 45204 V 3978 46532
+V 4664 46134 a(Data)g(for)f(ro)31 b(ot\257nding)371 b(function)p
+27507 46532 V 9426 w Fu(CVodeSetGdata)p 42783 46532 V
+7723 w Fx(NULL)p 54597 46532 V 3978 47860 V 4664 47462
+a(Nonlinear)g(iteration)g(t)-31 b(yp)31 b(e)p 27507 47860
+V 11839 w Fu(CVodeSetIterType)p 42783 47860 V 5980 w
+Fx(none)p 54597 47860 V 3978 49189 V 4664 48790 a(In)-31
+b(tegration)372 b(tolerances)p 27507 49189 V 13001 w
+Fu(CVodeSetTolerances)p 42783 49189 V 4818 w Fx(none)p
+54597 49189 V 3978 50517 V 4664 50119 a(Ewt)e(compuation)i(function)p
+27507 50517 V 11185 w Fu(CVodeSetEwtFn)p 42783 50517
+V 7723 w Fx(in)-31 b(ternal)371 b(fn.)p 54597 50517 V
+4000 50561 50619 45 v 3978 51890 45 1329 v 22579 51491
+a Fy(CVDENSE)427 b(linear)d(solv)-35 b(er)p 54597 51890
+V 4000 51934 50619 45 v 3978 53262 45 1329 v 4664 52864
+a Fx(Dense)368 b(Jacobian)j(function)g(and)e(data)p 27507
+53262 V 7012 w Fu(CVDenseSetJacFn)p 42783 53262 V 6561
+w Fx(in)-31 b(ternal)371 b(DQ,)e(NULL)p 54597 53262 V
+4000 53307 50619 45 v 3978 54635 45 1329 v 22835 54237
+a Fy(CVBAND)426 b(linear)e(solv)-35 b(er)p 54597 54635
+V 4000 54679 50619 45 v 3978 56008 45 1329 v 4664 55609
+a Fx(Band)370 b(Jacobian)g(function)h(and)e(data)p 27507
+56008 V 7326 w Fu(CVBandSetJacFn)p 42783 56008 V 7142
+w Fx(in)-31 b(ternal)371 b(DQ,)e(NULL)p 54597 56008 V
+4000 56052 50619 45 v 3978 57380 45 1329 v 22385 56982
+a Fy(CVSPGMR)425 b(linear)g(solv)-35 b(er)p 54597 57380
+V 4000 57425 50619 45 v 3978 58753 45 1329 v 4664 58354
+a Fx(Preconditioner)371 b(functions)f(and)g(data)p 27507
+58753 V 6990 w Fu(CVSpgmrSetPreconditioner)p 42783 58753
+V 1332 w Fx(NULL,)g(NULL,)f(NULL)p 54597 58753 V 3978
+60081 V 4664 59683 a(Jacobian)i(times)f(v)-31 b(ector)370
+b(function)h(and)e(data)p 27507 60081 V 3980 w Fu
+(CVSpgmrSetJacTimesVecFn)p 42783 60081 V 1913 w Fx(in)-31
+b(ternal)371 b(DQ,)e(NULL)p 54597 60081 V 3978 61410
+V 4664 61011 a(T)-31 b(yp)31 b(e)370 b(of)g(Gram-Sc)-31
+b(hmidt)370 b(orthogonalization)p 27507 61410 V 3503
+w Fu(CVSpgmrSetGSType)p 42783 61410 V 5980 w Fx(classical)h(GS)p
+54597 61410 V 3978 62738 V 4664 62339 a(Ratio)g(b)31
+b(et)-31 b(w)g(een)370 b(linear)g(and)f(nonlinear)i(tolerances)p
+27507 62738 V 1329 w Fu(CVSpgmrSetDelt)p 42783 62738
+V 7142 w Fx(0.05)p 54597 62738 V 3978 64066 V 4664 63668
+a(Preconditioning)h(t)-31 b(yp)31 b(e)p 27507 64066 V
+13395 w Fu(CVSpgmrSetPrecType)p 42783 64066 V 4818 w
+Fx(none)p 54597 64066 V 4000 64111 50619 45 v Black Black
+Black eop
+%%Page: 32 40
+32 39 bop Black 0 2701 a Fy(32)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 7942 7646 a @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Ff(!)1437 b Fx(If)308 b Fu(CVodeSetErrFile)i
+Fx(is)e(to)i(b)31 b(e)308 b(called,)322 b(it)309 b(should)g(b)31
+b(e)308 b(called)h(b)31 b(efore)308 b(an)-31 b(y)309
+b(other)g(optional)6814 8975 y(input)370 b(functions,)h(in)e(order)g
+(to)h(tak)-31 b(e)370 b(e\256ect)f(for)g(an)-31 b(y)370
+b(later)g(error)e(message.)p 0 12011 8308 45 v 0 13352
+45 1341 v 376 13020 a Fu(CVodeSetFdata)p 8263 13352 V
+0 13396 8308 45 v Black 0 14870 a Fx(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeSetFdata\(cvode)p 21991 14870
+349 45 v 421 w(mem,)h(f)p 25899 14870 V 419 w(data\);)p
+Black 0 16885 a Fx(Description)p Black 1286 w(The)341
+b(function)i Fu(CVodeSetFdata)g Fx(sp)31 b(eci\257es)340
+b(the)i(user)e(data)i(blo)31 b(c)-31 b(k)342 b Fu(f)p
+35757 16885 V 419 w(data)p Fx(,)347 b(for)342 b(use)e(b)-31
+b(y)341 b(the)h(user)6814 18213 y(righ)-31 b(t-hand)371
+b(side)e(function)h Fm(f)119 b Fx(,)370 b(and)f(attac)-31
+b(hes)371 b(it)f(to)g(the)f(main)i Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 0 20228 a(Argumen)g(ts)p
+Black Black 1517 w Fu(cvode)p 9789 20228 V 419 w(mem)p
+Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 21899
+a Fu(f)p 7465 21899 V 419 w(data)p Black 2297 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f(user)f(data.)p Black 0 23914 a(Return)h(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 6814 25929 a Fu(CV)p 8046
+25929 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 27600 a Fu(CV)p 8046 27600 V 419 w(MEM)p 10208
+27600 V 419 w(NULL)p Black 554 w Fx(The)f Fu(cvode)p
+18685 27600 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 0 29615 a(Notes)p Black
+4072 w(If)g Fu(f)p 8572 29615 V 419 w(data)g Fx(is)g(not)h(sp)31
+b(eci\257ed,)369 b(a)h Fu(NULL)f Fx(p)31 b(oin)-31 b(ter)370
+b(is)f(passed)g(to)h(the)g Fm(f)488 b Fx(function.)p
+0 32651 8889 45 v 0 33992 45 1341 v 376 33660 a Fu(CVodeSetMaxOrd)p
+8845 33992 V 0 34036 8889 45 v Black 0 35510 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetMaxOrder\(cvode)p
+23734 35510 349 45 v 422 w(mem,)g(maxord\);)p Black 0
+37525 a Fx(Description)p Black 1286 w(The)357 b(function)i
+Fu(CVodeSetMaxOrder)h Fx(sp)31 b(eci\257es)356 b(the)i(maxim)-31
+b(um)360 b(order)c(of)i(the)g(linear)g(m)-31 b(ultistep)6814
+38853 y(metho)31 b(d.)p Black 0 40868 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 9789 40868 V 419 w(mem)p
+Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 42539
+a Fu(maxord)p Black 2135 w Fx(\()p Fu(int)p Fx(\))370
+b(v)-61 b(alue)370 b(of)g(the)f(maxim)-31 b(um)372 b(metho)31
+b(d)370 b(order.)p Black 0 44554 a(Return)f(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 6814 46569 a Fu(CV)p 8046 46569 V 419 w(SUCCESS)p
+Black 1554 w Fx(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 6814 48240 a
+Fu(CV)p 8046 48240 V 419 w(MEM)p 10208 48240 V 419 w(NULL)p
+Black 1135 w Fx(The)f Fu(cvode)p 19266 48240 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black
+6814 49912 a Fu(CV)p 8046 49912 V 419 w(ILL)p 10208 49912
+V 419 w(INPUT)p Black 554 w Fx(The)268 b(sp)31 b(eci\257ed)268
+b(v)-61 b(alue)269 b Fu(maxord)h Fx(is)e(negativ)-31
+b(e,)291 b(or)268 b(larger)h(than)g(its)g(previous)g(v)-61
+b(alue.)p Black 0 51927 a(Notes)p Black 4072 w(The)247
+b(default)h(v)-61 b(alue)247 b(is)f Fu(ADAMS)p 19267
+51927 V 419 w(Q)p 20267 51927 V 419 w(MAX)p Fx(=)308
+b(12)247 b(for)g(the)f(Adams-Moulton)j(metho)31 b(d)247
+b(and)g Fu(BDF)p 44047 51927 V 419 w(Q)p 45047 51927
+V 419 w(MAX)p Fx(=)6814 53255 y(5)306 b(for)g(the)g(BDF)e(metho)31
+b(d.)473 b(Since)306 b Fu(maxord)g Fx(a\256ects)g(the)g(memory)h
+(requiremen)-31 b(ts)306 b(for)f(the)h(in)-31 b(ternal)6814
+54583 y Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31
+b(k,)371 b(its)e(v)-61 b(alue)370 b(can)f(not)h(b)31
+b(e)369 b(increased)g(past)h(its)f(previous)g(v)-61 b(alue.)p
+0 57620 11795 45 v 0 59207 45 1587 v 376 58628 a Fu
+(CVodeSetMaxNumSteps)p 11750 59207 V 0 59251 11795 45
+v Black 0 60652 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeSetMaxNumSteps\(cvode)p 25477 60652 349 45
+v 422 w(mem,)h(mxsteps\);)p Black 0 62667 a Fx(Description)p
+Black 1286 w(The)494 b(function)h Fu(CVodeSetMaxNumSteps)h
+Fx(sp)31 b(eci\257es)493 b(the)g(maxim)-31 b(um)496 b(n)-31
+b(um)g(b)31 b(er)494 b(of)g(steps)f(to)h(b)31 b(e)6814
+63995 y(tak)-31 b(en)370 b(b)-31 b(y)370 b(the)f(solv)-31
+b(er)370 b(in)f(its)h(attempt)h(to)f(reac)-31 b(h)369
+b(the)h(next)g(output)g(time.)p Black 0 66010 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 66010 V 419
+w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 67681
+a Fu(mxsteps)p Black 1554 w Fx(\()p Fu(long)582 b(int)p
+Fx(\))370 b(maxim)-31 b(um)372 b(allo)-31 b(w)g(ed)372
+b(n)-31 b(um)g(b)31 b(er)369 b(of)h(steps.)p Black 0
+69696 a(Return)f(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fx(\))g(is)f(one)g(of)p Black 6814 71711 a
+Fu(CV)p 8046 71711 V 419 w(SUCCESS)p Black 1554 w Fx(The)g(optional)j
+(v)-61 b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 73382 a Fu(CV)p 8046 73382 V 419 w(MEM)p 10208
+73382 V 419 w(NULL)p Black 1135 w Fx(The)f Fu(cvode)p
+19266 73382 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 6814 75054 a Fu(CV)p 8046
+75054 V 419 w(ILL)p 10208 75054 V 419 w(INPUT)p Black
+554 w(mxsteps)h Fx(is)f(non-p)31 b(ositiv)-31 b(e.)p
+Black 0 77068 a(Notes)p Black 4072 w(P)g(assing)370 b
+Fu(mxsteps)p Fx(=)309 b(0)369 b(results)g(in)g Fv(cv)-25
+b(ode)370 b Fx(using)g(the)f(default)i(v)-61 b(alue)370
+b(\(500\).)p Black Black eop
+%%Page: 33 41
+33 40 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(33)p 4000 3144 48001 45 v Black 4000 5965 12376
+45 v 4000 7306 45 1341 v 4376 6974 a Fu(CVodeSetMaxHnilWarns)p
+16331 7306 V 4000 7350 12376 45 v Black 4000 8706 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetMaxHnilWarns\(cvode)p
+30058 8706 349 45 v 422 w(mem,)h(mxhnil\);)p Black 4000
+10483 a Fx(Description)p Black 1286 w(The)313 b(function)i
+Fu(CVodeSetMaxHnilWarns)h Fx(sp)31 b(eci\257es)313 b(the)g(maxim)-31
+b(um)316 b(n)-31 b(um)g(b)31 b(er)313 b(of)h(w)-31 b(arning)315
+b(mes-)10814 11812 y(sages)369 b(issued)g(b)-31 b(y)369
+b(the)h(solv)-31 b(er)369 b(that)i Fm(t)245 b Fx(+)h
+Fm(h)308 b Fx(=)f Fm(t)369 b Fx(on)g(the)h(next)f(in)-31
+b(ternal)371 b(step.)p Black 4000 13590 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 13590 V 419
+w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 15143
+a Fu(mxhnil)p Black 2135 w Fx(\()p Fu(int)p Fx(\))370
+b(maxim)-31 b(um)372 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(w)-31
+b(arning)371 b(messages)p Black 4000 16920 a(Return)e(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 10814 18698 a Fu(CV)p 12046
+18698 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 20251 a Fu(CV)p 12046 20251 V 419 w(MEM)p
+14208 20251 V 419 w(NULL)p Black 554 w Fx(The)f Fu(cvode)p
+22685 20251 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 4000 22029 a(Notes)p Black
+4072 w(The)364 b(default)i(v)-61 b(alue)364 b(is)g(10.)492
+b(A)364 b(negativ)-31 b(e)366 b Fu(mxhnil)f Fx(v)-61
+b(alue)364 b(indicates)i(that)f(no)f(w)-31 b(arning)366
+b(messages)10814 23358 y(should)j(b)31 b(e)369 b(issued.)p
+4000 25647 11214 45 v 4000 26988 45 1341 v 4376 26656
+a Fu(CVodeSetStabLimDet)p 15169 26988 V 4000 27032 11214
+45 v Black 4000 28388 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeSetstabLimDet\(cvode)p 28896 28388 349 45
+v 422 w(mem,)h(stldet\);)p Black 4000 30166 a Fx(Description)p
+Black 1286 w(The)450 b(function)h Fu(CVodeSetStabLimDet)i
+Fx(indicates)e(to)f(turn)g(on/o\256)h(the)f(BDF)f(stabilit)-31
+b(y)453 b(limit)10814 31494 y(detection)371 b(algorithm.)495
+b(See)369 b Fp(x)p Fx(3.2.)p Black 4000 33272 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 33272 V 419
+w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 34825
+a Fu(stldet)p Black 2135 w Fx(\()p Fu(booleantype)p Fx(\))363
+b(\260ag)f(to)f(con)-31 b(trol)362 b(stabilit)-31 b(y)364
+b(limit)f(detection)f(\()p Fu(TRUE)g Fx(=)e(on;)k Fu(FALSE)16435
+36153 y Fx(=)369 b(o\256)86 b(\).)p Black 4000 37931
+a(Return)369 b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fx(\))g(is)f(one)g(of)p Black 10814 39709
+a Fu(CV)p 12046 39709 V 419 w(SUCCESS)p Black 1554 w
+Fx(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31 b(een)368
+b(successfully)i(set.)p Black 10814 41262 a Fu(CV)p 12046
+41262 V 419 w(MEM)p 14208 41262 V 419 w(NULL)p Black
+1135 w Fx(The)f Fu(cvode)p 23266 41262 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black
+10814 42815 a Fu(CV)p 12046 42815 V 419 w(ILL)p 14208
+42815 V 419 w(INPUT)p Black 554 w Fx(The)g(linear)h(m)-31
+b(ultistep)371 b(metho)31 b(d)371 b(is)e(not)h(set)f(to)h
+Fu(CV)p 39687 42815 V 418 w(BDF)p Fx(.)p Black 4000 44593
+a(Notes)p Black 4072 w(The)471 b(default)i(v)-61 b(alue)472
+b(is)f Fu(FALSE)p Fx(.)h(If)f Fu(stldet)582 b(=)f(TRUE)p
+Fx(,)473 b(when)e(BDF)f(is)h(used)g(and)g(the)h(metho)31
+b(d)10814 45921 y(order)368 b(is)h(3)h(or)e(greater,)i(an)g(in)-31
+b(ternal)370 b(function,)h Fu(CVsldet)p Fx(,)g(is)d(called)j(to)f
+(detect)f(stabilit)-31 b(y)372 b(limit.)10814 47250 y(If)d(limit)i(is)e
+(detected,)i(the)e(order)g(is)g(reduced.)p 4000 49539
+10052 45 v 4000 51126 45 1587 v 4376 50548 a Fu(CVodeSetInitStep)p
+14007 51126 V 4000 51170 10052 45 v Black 4000 52453
+a Fx(Call)p Black 4848 w Fu(flag)582 b(=)f(CVodeSetInitStep\(cvode)p
+27734 52453 349 45 v 422 w(mem,)g(hin\);)p Black 4000
+54231 a Fx(Description)p Black 1286 w(The)369 b(function)i
+Fu(CVodeSetInitStep)g Fx(sp)31 b(eci\257es)369 b(the)g(initial)j(step)d
+(size.)p Black 4000 56009 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 13789 56009 V 419 w(mem)p Black
+554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 57562 a Fu(hin)p Black 3878
+w Fx(\()p Fu(realtype)p Fx(\))371 b(v)-61 b(alue)370
+b(of)g(the)f(initial)j(step)d(size.)p Black 4000 59340
+a(Return)g(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fx(\))g(is)f(one)g(of)p Black 10814 61117
+a Fu(CV)p 12046 61117 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j
+(v)-61 b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 62671 a Fu(CV)p 12046 62671 V 419 w(MEM)p
+14208 62671 V 419 w(NULL)p Black 554 w Fx(The)f Fu(cvode)p
+22685 62671 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 4000 64448 a(Notes)p Black
+4072 w(By)342 b(default,)350 b Fv(cv)-25 b(ode)343 b
+Fx(estimates)g(the)g(initial)i(stepsize)d(as)g(the)h(solution)h
+Fm(h)e Fx(of)g Fp(k)p Fx(0)p Fm(:)p Fx(5)p Fm(h)46322
+64047 y Fl(2)46897 64448 y Fx(\304)-629 b Fm(y)39 b Fp(k)47956
+64614 y Fl(WRMS)51139 64448 y Fx(=)10814 65777 y(1,)370
+b(where)445 b(\304)-629 b Fm(y)408 b Fx(is)369 b(an)h(estimated)h
+(second)e(deriv)-61 b(ativ)-31 b(e)371 b(of)e(the)h(solution)h(at)f
+(the)f(initial)j(time.)p 4000 68067 9470 45 v 4000 69653
+45 1587 v 4376 69075 a Fu(CVodeSetMinStep)p 13426 69653
+V 4000 69697 9470 45 v Black 4000 70980 a Fx(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVodeSetMinStep\(cvode)p 27153
+70980 349 45 v 422 w(mem,)g(hmin\);)p Black 4000 72758
+a Fx(Description)p Black 1286 w(The)330 b(function)h
+Fu(CVodeSetMinStep)h Fx(sp)31 b(eci\257es)329 b(the)h(minim)-31
+b(um)333 b(absolute)e(v)-61 b(alue)330 b(of)h(the)f(step)f(size.)p
+Black 4000 74536 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 74536 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 76089 a Fu(hmin)p Black 3297
+w Fx(\()p Fu(realtype)p Fx(\))371 b(minim)-31 b(um)372
+b(absolute)e(v)-61 b(alue)370 b(of)g(the)f(step)g(size.)p
+Black 4000 77867 a(Return)g(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+Black eop
+%%Page: 34 42
+34 41 bop Black 0 2701 a Fy(34)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black Black 6814 6974 a Fu(CV)p
+8046 6974 349 45 v 419 w(SUCCESS)p Black 1554 w Fx(The)369
+b(optional)j(v)-61 b(alue)370 b(has)f(b)31 b(een)368
+b(successfully)i(set.)p Black 6814 8621 a Fu(CV)p 8046
+8621 V 419 w(MEM)p 10208 8621 V 419 w(NULL)p Black 1135
+w Fx(The)f Fu(cvode)p 19266 8621 V 419 w(mem)h Fx(p)31
+b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black 6814
+10267 a Fu(CV)p 8046 10267 V 419 w(ILL)p 10208 10267
+V 419 w(INPUT)p Black 554 w Fx(Either)362 b Fu(hmin)g
+Fx(is)g(not)h(p)31 b(ositiv)-31 b(e)363 b(or)f(it)g(is)g(larger)g(than)
+h(the)f(maxim)-31 b(um)364 b(allo)-31 b(w)g(able)14016
+11596 y(step.)p Black 0 13561 a(Notes)p Black 4072 w(The)369
+b(default)i(v)-61 b(alue)370 b(is)f(0)p Fm(:)p Fx(0.)p
+0 16441 9470 45 v 0 18028 45 1587 v 376 17450 a Fu(CVodeSetMaxStep)p
+9426 18028 V 0 18072 9470 45 v Black 0 19449 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetMaxStep\(cvode)p
+23153 19449 349 45 v 422 w(mem,)g(hmax\);)p Black 0 21414
+a Fx(Description)p Black 1286 w(The)310 b(function)i
+Fu(CVodeSetMaxStep)h Fx(sp)31 b(eci\257es)309 b(the)i(maxim)-31
+b(um)313 b(absolute)e(v)-61 b(alue)311 b(of)g(the)f(step)g(size.)p
+Black 0 23379 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 23379 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 25026 a Fu(hmax)p Black 3297
+w Fx(\()p Fu(realtype)p Fx(\))371 b(maxim)-31 b(um)372
+b(absolute)f(v)-61 b(alue)369 b(of)h(the)f(step)g(size.)p
+Black 0 26991 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 28956 a Fu(CV)p 8046 28956 V 419 w(SUCCESS)p Black
+1554 w Fx(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 6814 30603 a
+Fu(CV)p 8046 30603 V 419 w(MEM)p 10208 30603 V 419 w(NULL)p
+Black 1135 w Fx(The)f Fu(cvode)p 19266 30603 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black
+6814 32250 a Fu(CV)p 8046 32250 V 419 w(ILL)p 10208 32250
+V 419 w(INPUT)p Black 554 w Fx(Either)324 b Fu(hmax)f
+Fx(is)g(not)h(p)31 b(ositiv)-31 b(e)325 b(or)e(it)g(is)g(smaller)h
+(than)g(the)g(minim)-31 b(um)325 b(allo)-31 b(w)g(able)14016
+33578 y(step.)p Black 0 35543 a(Notes)p Black 4072 w(P)g(ass)369
+b Fu(hmax)p Fx(=)308 b(0)370 b(to)g(obtain)h(the)e(default)i(v)-61
+b(alue)369 b Fp(1)p Fx(.)p 0 38424 10052 45 v 0 40011
+45 1587 v 376 39433 a Fu(CVodeSetStopTime)p 10007 40011
+V 0 40055 10052 45 v Black 0 41431 a Fx(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVodeSetStopTime\(cvode)p 23734
+41431 349 45 v 422 w(mem,)g(tstop\);)p Black 0 43397
+a Fx(Description)p Black 1286 w(The)320 b(function)h
+Fu(CVodeSetStopTime)h Fx(sp)31 b(eci\257es)319 b(the)h(v)-61
+b(alue)321 b(of)f(the)g(indep)31 b(enden)-31 b(t)320
+b(v)-61 b(ariable)321 b Fm(t)e Fx(past)6814 44725 y(whic)-31
+b(h)370 b(the)g(solution)h(is)e(not)h(to)g(pro)31 b(ceed.)p
+Black 0 46690 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 46690 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 48337 a Fu(tstop)p Black 2716
+w Fx(\()p Fu(realtype)p Fx(\))586 b(v)-61 b(alue)585
+b(of)g(the)f(indep)31 b(enden)-31 b(t)585 b(v)-61 b(ariable)585
+b(past)f(whic)-31 b(h)586 b(the)e(solution)12435 49665
+y(should)370 b(not)g(pro)31 b(ceed.)p Black 0 51630 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fx(\))g(is)f(one)g(of)p Black 6814 53596 a
+Fu(CV)p 8046 53596 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j(v)
+-61 b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 55242 a Fu(CV)p 8046 55242 V 419 w(MEM)p 10208
+55242 V 419 w(NULL)p Black 554 w Fx(The)f Fu(cvode)p
+18685 55242 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 0 57208 a(Notes)p Black
+4072 w(The)g(default)i(v)-61 b(alue)370 b(is)f Fp(1)p
+Fx(.)p 0 60088 14120 45 v 0 61429 45 1341 v 376 61097
+a Fu(CVodeSetMaxErrTestFails)p 14075 61429 V 0 61473
+14120 45 v Black 0 62922 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeSetMaxErrTestFails\(cvode)p 27801 62922 349
+45 v 423 w(mem,)g(maxnef\);)p Black 0 64887 a Fx(Description)p
+Black 1286 w(The)334 b(function)i Fu(CVodeSetMaxErrTestFails)h
+Fx(sp)31 b(eci\257es)334 b(the)g(maxim)-31 b(um)337 b(n)-31
+b(um)g(b)31 b(er)334 b(of)g(error)f(test)6814 66216 y(failures)370
+b(in)f(attempting)k(one)c(step.)p Black 0 68181 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 68181 V 419
+w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 69828
+a Fu(maxnef)p Black 2135 w Fx(\()p Fu(int)p Fx(\))370
+b(maxim)-31 b(um)372 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(error)e(test)i
+(failures)g(allo)-31 b(w)g(ed)372 b(on)d(one)g(step.)p
+Black 0 71793 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 73758 a Fu(CV)p 8046 73758 V 419 w(SUCCESS)p Black
+973 w Fx(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 6814 75405 a
+Fu(CV)p 8046 75405 V 419 w(MEM)p 10208 75405 V 419 w(NULL)p
+Black 554 w Fx(The)f Fu(cvode)p 18685 75405 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black
+0 77370 a(Notes)p Black 4072 w(The)g(default)i(v)-61
+b(alue)370 b(is)f(7.)p Black Black eop
+%%Page: 35 43
+35 42 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(35)p 4000 3144 48001 45 v Black 4000 5965 13539
+45 v 4000 7306 45 1341 v 4376 6974 a Fu(CVodeSetMaxNonlinIters)p
+17494 7306 V 4000 7350 13539 45 v Black 4000 8702 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetMaxNonlinIters\(cvode)p
+31220 8702 349 45 v 423 w(mem,)g(maxcor\);)p Black 4000
+10458 a Fx(Description)p Black 1286 w(The)404 b(function)h
+Fu(CVodeSetMaxNonlinIters)i Fx(sp)31 b(eci\257es)404
+b(the)g(maxim)-31 b(um)406 b(n)-31 b(um)g(b)31 b(er)404
+b(of)h(nonlinear)10814 11786 y(solv)-31 b(er)370 b(iterations)h(at)f
+(one)f(step.)p Black 4000 13541 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 13789 13541 V 419 w(mem)p
+Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 15075
+a Fu(maxcor)p Black 2135 w Fx(\()p Fu(int)p Fx(\))312
+b(maxim)-31 b(um)313 b(n)-31 b(um)g(b)31 b(er)311 b(of)g(nonlinear)g
+(solv)-31 b(er)311 b(iterations)i(allo)-31 b(w)g(ed)313
+b(on)e(one)f(step.)p Black 4000 16831 a(Return)369 b(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 10814 18586 a Fu(CV)p 12046
+18586 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 20120 a Fu(CV)p 12046 20120 V 419 w(MEM)p
+14208 20120 V 419 w(NULL)p Black 554 w Fx(The)f Fu(cvode)p
+22685 20120 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 4000 21875 a(Notes)p Black
+4072 w(The)g(default)i(v)-61 b(alue)370 b(is)f(3.)p 4000
+24131 12376 45 v 4000 25471 45 1341 v 4376 25139 a Fu
+(CVodeSetMaxConvFails)p 16331 25471 V 4000 25515 12376
+45 v Black 4000 26868 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeSetMaxConvFails\(cvode)p 30058 26868 349 45
+v 422 w(mem,)h(maxncf\);)p Black 4000 28623 a Fx(Description)p
+Black 1286 w(The)549 b(function)i Fu(CVodeSetMaxConvFails)h
+Fx(sp)31 b(eci\257es)548 b(the)i(maxim)-31 b(um)552 b(n)-31
+b(um)g(b)31 b(er)549 b(of)h(nonlinear)10814 29951 y(solv)-31
+b(er)370 b(con)-31 b(v)g(ergence)370 b(failures)g(at)f(one)h(step.)p
+Black 4000 31707 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 31707 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 33241 a Fu(maxncf)p Black
+2135 w Fx(\()p Fu(int)p Fx(\))336 b(maxim)-31 b(um)337
+b(n)-31 b(um)g(b)31 b(er)335 b(of)g(allo)-31 b(w)g(able)339
+b(nonlinear)c(solv)-31 b(er)336 b(con)-31 b(v)g(ergence)335
+b(failures)16435 34569 y(on)370 b(one)f(step.)p Black
+4000 36324 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+10814 38080 a Fu(CV)p 12046 38080 V 419 w(SUCCESS)p Black
+973 w Fx(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 10814 39614 a
+Fu(CV)p 12046 39614 V 419 w(MEM)p 14208 39614 V 419 w(NULL)p
+Black 554 w Fx(The)f Fu(cvode)p 22685 39614 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black
+4000 41369 a(Notes)p Black 4072 w(The)g(default)i(v)-61
+b(alue)370 b(is)f(10.)p 4000 43624 13539 45 v 4000 44965
+45 1341 v 4376 44633 a Fu(CVodeSetNonlinConvCoef)p 17494
+44965 V 4000 45009 13539 45 v Black 4000 46361 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetNonlinConvCoef\(cvode)p
+31220 46361 349 45 v 423 w(mem,)g(nlscoef\);)p Black
+4000 48117 a Fx(Description)p Black 1286 w(The)502 b(function)h
+Fu(CVodeSetNonlinConvCoef)i Fx(sp)31 b(eci\257es)501
+b(the)h(safet)-31 b(y)503 b(factor)g(in)f(the)h(nonlinear)10814
+49445 y(con)-31 b(v)g(ergence)370 b(test)g(\(see)f Fp(x)p
+Fx(3.1\).)p Black 4000 51200 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 13789 51200 V 419 w(mem)p Black
+554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 52734 a Fu(nlscoef)p Black
+1554 w Fx(\()p Fu(realtype)p Fx(\))371 b(co)31 b(e\261cien)-31
+b(t)371 b(in)e(nonlinear)i(con)-31 b(v)g(ergence)370
+b(test.)p Black 4000 54490 a(Return)f(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 10814 56245 a Fu(CV)p 12046 56245 V 419 w(SUCCESS)p
+Black 973 w Fx(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 10814 57779 a
+Fu(CV)p 12046 57779 V 419 w(MEM)p 14208 57779 V 419 w(NULL)p
+Black 554 w Fx(The)f Fu(cvode)p 22685 57779 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black
+4000 59534 a(Notes)p Black 4072 w(The)g(default)i(v)-61
+b(alue)370 b(is)f(0)p Fm(:)p Fx(1.)p 4000 61790 10052
+45 v 4000 63376 45 1587 v 4376 62798 a Fu(CVodeSetIterType)p
+14007 63376 V 4000 63420 10052 45 v Black 4000 64700
+a Fx(Call)p Black 4848 w Fu(flag)582 b(=)f(CVodeSetIterType\(cvode)p
+27734 64700 349 45 v 422 w(mem,)g(iter\);)p Black 4000
+66455 a Fx(Description)p Black 1286 w(The)369 b(function)i
+Fu(CVodeSetIterType)g Fx(resets)e(the)g(nonlinear)h(solv)-31
+b(er)370 b(iteration)i(t)-31 b(yp)31 b(e)369 b Fu(iter)p
+Fx(.)p Black 4000 68211 a(Argumen)-31 b(ts)p Black Black
+1517 w Fu(cvode)p 13789 68211 V 419 w(mem)p Black 554
+w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 69745 a Fu(iter)p Black 3297
+w Fx(\()p Fu(int)p Fx(\))490 b(sp)31 b(eci\257es)489
+b(the)g(t)-31 b(yp)31 b(e)490 b(of)g(nonlinear)g(solv)-31
+b(er)490 b(iteration)h(and)e(ma)-31 b(y)491 b(b)31 b(e)489
+b(either)16435 71073 y Fu(CV)p 17667 71073 V 419 w(NEWTON)370
+b Fx(or)f Fu(CV)p 24460 71073 V 418 w(FUNCTIONAL)p Fx(.)p
+Black 4000 72828 a(Return)g(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+10814 74584 a Fu(CV)p 12046 74584 V 419 w(SUCCESS)p Black
+1554 w Fx(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 10814 76118 a
+Fu(CV)p 12046 76118 V 419 w(MEM)p 14208 76118 V 419 w(NULL)p
+Black 1135 w Fx(The)f Fu(cvode)p 23266 76118 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black
+10814 77652 a Fu(CV)p 12046 77652 V 419 w(ILL)p 14208
+77652 V 419 w(INPUT)p Black 554 w Fx(The)g Fu(iter)h
+Fx(v)-61 b(alue)369 b(passed)g(is)g(neither)h Fu(CV)p
+35462 77652 V 418 w(NEWTON)g Fx(nor)f Fu(CV)p 42869 77652
+V 419 w(FUNCTIONAL)p Fx(.)p Black Black eop
+%%Page: 36 44
+36 43 bop Black 0 2701 a Fy(36)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black Black 0 6974 a Fx(Notes)p
+Black 4072 w(The)476 b(nonlinear)h(solv)-31 b(er)476
+b(iteration)j(t)-31 b(yp)31 b(e)476 b(is)g(initially)j(sp)31
+b(eci\257ed)475 b(in)i(the)f(call)h(to)f Fu(CVodeCreate)6814
+8302 y Fx(\(see)376 b Fp(x)p Fx(5.5.1\).)515 b(This)377
+b(function)g(call)g(is)f(needed)g(only)h(if)f Fu(iter)g
+Fx(is)g(b)31 b(eing)377 b(c)-31 b(hanged)377 b(from)f(its)g(v)-61
+b(alue)6814 9631 y(in)369 b(the)h(prior)f(call)h(to)g
+Fu(CVodeCreate)p Fx(.)p 0 11887 11214 45 v 0 13227 45
+1341 v 376 12895 a Fu(CVodeSetTolerances)p 11169 13227
+V 0 13271 11214 45 v Black 0 14623 a Fx(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVodeSetTolerances\(cvode)p
+24896 14623 349 45 v 422 w(mem,)h(itol,)g(reltol,)g(abstol\);)p
+Black 0 16380 a Fx(Description)p Black 1286 w(The)369
+b(function)i Fu(CVodeSetTolerances)h Fx(resets)c(the)h(in)-31
+b(tegration)372 b(tolerances.)p Black 0 18136 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 18136 V 419
+w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(odes)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 19671
+a Fu(itol)p Black 3297 w Fx(\()p Fu(int)p Fx(\))332 b(is)f(either)h
+Fu(CV)p 20779 19671 V 418 w(SS)g Fx(or)e Fu(CV)p 25170
+19671 V 419 w(SV)p Fx(,)i(where)f Fu(itol)p Fx(=)p Fu(CV)p
+34900 19671 V 419 w(SS)g Fx(indicates)i(scalar)e(relativ)-31
+b(e)12435 20999 y(error)390 b(tolerance)i(and)f(scalar)g(absolute)h
+(error)e(tolerance,)398 b(while)392 b Fu(itol)p Fx(=)p
+Fu(CV)p 44806 20999 V 420 w(SV)f Fx(in-)12435 22328 y(dicates)380
+b(scalar)g(relativ)-31 b(e)381 b(error)d(tolerance)i(and)g(v)-31
+b(ector)379 b(absolute)i(error)d(tolerance.)12435 23656
+y(The)371 b(latter)g(c)-31 b(hoice)372 b(is)e(imp)31
+b(ortan)-31 b(t)373 b(when)d(the)h(absolute)g(error)f(tolerance)h
+(needs)f(to)12435 24984 y(b)31 b(e)369 b(di\256eren)-31
+b(t)369 b(for)g(eac)-31 b(h)370 b(comp)31 b(onen)-31
+b(t)371 b(of)f(the)f(ODE.)p Black 6814 26519 a Fu(reltol)p
+Black 2135 w Fx(\()p Fu(realtype)p Fx(\))i(is)e(the)h(relativ)-31
+b(e)371 b(error)d(tolerance.)p Black 6814 28054 a Fu(abstol)p
+Black 2135 w Fx(\()p Fu(void)582 b(*)p Fx(\))548 b(is)f(a)h(p)31
+b(oin)-31 b(ter)548 b(to)g(the)g(absolute)g(error)f(tolerance.)1028
+b(If)547 b Fu(itol)p Fx(=)p Fu(CV)p 46181 28054 V 419
+w(SS)p Fx(,)12435 29382 y Fu(abstol)335 b Fx(m)-31 b(ust)336
+b(b)31 b(e)334 b(a)h(p)31 b(oin)-31 b(ter)336 b(to)f(a)g
+Fu(realtype)h Fx(v)-61 b(ariable.)482 b(If)335 b Fu(itol)p
+Fx(=)p Fu(CV)p 42360 29382 V 419 w(SV)p Fx(,)g Fu(abstol)12435
+30711 y Fx(m)-31 b(ust)370 b(b)31 b(e)369 b(an)g Fu(N)p
+18873 30711 V 419 w(Vector)g Fx(v)-61 b(ariable.)p Black
+0 32467 a(Return)369 b(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 34223 a Fu(CV)p 8046 34223 V 419 w(SUCCESS)p Black
+1554 w Fx(The)g(tolerances)h(ha)-31 b(v)g(e)370 b(b)31
+b(een)369 b(successfully)g(set.)p Black 6814 35758 a
+Fu(CV)p 8046 35758 V 419 w(MEM)p 10208 35758 V 419 w(NULL)p
+Black 1135 w Fx(The)g Fu(cvode)p 19266 35758 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black
+6814 37293 a Fu(CV)p 8046 37293 V 419 w(ILL)p 10208 37293
+V 419 w(INPUT)p Black 554 w Fx(An)g(input)h(argumen)-31
+b(t)371 b(has)e(an)g(illegal)j(v)-61 b(alue.)p Black
+0 39049 a(Notes)p Black 4072 w(The)256 b(in)-31 b(tegration)258
+b(tolerances)e(are)g(initially)j(sp)31 b(eci\257ed)255
+b(in)h(the)f(call)i(to)f Fu(CVodeMalloc)h Fx(\(see)f
+Fp(x)p Fx(5.5.1\).)6814 40378 y(This)346 b(function)h(call)g(is)e
+(needed)g(only)i(if)f(the)g(tolerances)g(are)f(b)31 b(eing)346
+b(c)-31 b(hanged)347 b(from)f(their)g(v)-61 b(alues)6814
+41706 y(b)31 b(et)-31 b(w)g(een)370 b(successiv)-31 b(e)369
+b(calls)h(to)g Fu(CVode)p Fx(.)7942 44024 y @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Ff(!)1429 b Fx(It)300 b(is)h(the)g(user's)e
+(resp)31 b(onsibilit)-31 b(y)302 b(to)g(pro)-31 b(vide)301
+b(compatible)i Fu(itol)e Fx(and)g Fu(abstol)g Fx(argumen)-31
+b(ts.)7942 46763 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial
+Ff(!)1497 b Fx(It)370 b(is)f(illegal)j(to)e(call)g Fu
+(CVodeSetTolerances)i Fx(b)31 b(efore)369 b(a)g(call)i(to)e
+Fu(CVodeMalloc)p Fx(.)p 0 49275 8308 45 v 0 50615 45
+1341 v 376 50283 a Fu(CVodeSetEwtFn)p 8263 50615 V 0
+50659 8308 45 v Black 0 52012 a Fx(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeSetEwtFn\(cvode)p 21991 52012
+349 45 v 421 w(mem,)h(efun,)g(e)p 29386 52012 V 418 w(data\);)p
+Black 0 53768 a Fx(Description)p Black 1286 w(The)456
+b(function)g Fu(CVodeSetEwtFn)h Fx(sp)31 b(eci\257es)455
+b(the)h(user-de\257ned)e(function)j(to)f(b)31 b(e)455
+b(used)f(in)i(com-)6814 55096 y(puting)370 b(the)g(error)e(w)-31
+b(eigh)g(t)371 b(v)-31 b(ector)370 b Fm(W)523 b Fx(in)370
+b(\(3.6\).)p Black 0 56852 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 9789 56852 V 419 w(mem)p Black
+554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(odes)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 58387 a Fu(efun)p Black 3297
+w Fx(\()p Fu(CVEwtFn)p Fx(\))371 b(is)e(the)h Fv(C)f
+Fx(function)h(whic)-31 b(h)371 b(de\257nes)d(the)h Fu(ewt)h
+Fx(v)-31 b(ector)370 b(\(see)f Fp(x)p Fx(5.6.2\).)p Black
+6814 59922 a Fu(e)p 7465 59922 V 419 w(data)p Black 2297
+w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(user)e(data)i(passed)f(to)h Fu(efun)g
+Fx(ev)-31 b(ery)369 b(time)h(it)g(is)f(called.)p Black
+0 61678 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 63435 a Fu(CV)p 8046 63435 V 419 w(SUCCESS)p Black
+973 w Fx(The)g(function)i Fu(efun)e Fx(and)h(data)g(p)31
+b(oin)-31 b(ter)370 b Fu(e)p 31880 63435 V 419 w(data)f
+Fx(ha)-31 b(v)g(e)370 b(b)31 b(een)369 b(successfully)g(set.)p
+Black 6814 64970 a Fu(CV)p 8046 64970 V 419 w(MEM)p 10208
+64970 V 419 w(NULL)p Black 554 w Fx(The)g Fu(cvode)p
+18685 64970 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 0 66726 a(Notes)p Black
+4072 w(This)h(function)g(can)g(b)31 b(e)368 b(called)j(b)31
+b(et)-31 b(w)g(een)370 b(successiv)-31 b(e)369 b(calls)h(to)g
+Fu(CVode)p Fx(.)6814 68482 y(If)f(not)h(needed,)f(pass)g
+Fu(NULL)h Fx(for)f Fu(edata)p Fx(.)7942 71015 y @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Ff(!)1497 b Fx(It)370 b(is)f(illegal)j(to)e
+(call)g Fu(CVodeSetEwtFn)h Fx(b)31 b(efore)369 b(a)g(call)i(to)f
+Fu(CVodeMalloc)p Fx(.)0 74280 y Fy(Linear)424 b(solv)-35
+b(er)425 b(optional)g(input)g(functions)0 76323 y Fx(The)306
+b(linear)h(solv)-31 b(er)306 b(mo)31 b(dules,)320 b(with)307
+b(one)f(exception,)321 b(allo)-31 b(w)308 b(for)e(v)-61
+b(arious)306 b(optional)j(inputs,)319 b(whic)-31 b(h)307
+b(are)f(describ)31 b(ed)0 77652 y(here.)492 b(The)369
+b(diagonal)j(linear)e(solv)-31 b(er)370 b(mo)31 b(dule)370
+b(has)f(no)g(optional)j(inputs.)p Black Black eop
+%%Page: 37 45
+37 44 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(37)p 4000 3144 48001 45 v Black 4000 6974 a(Dense)448
+b(Linear)f(solv)-35 b(er.)1107 b Fx(The)388 b Fv(cvdense)i
+Fx(solv)-31 b(er)389 b(needs)f(a)h(function)g(to)h(compute)f(a)g(dense)
+f(appro)-31 b(ximation)4000 8302 y(to)380 b(the)g(Jacobian)h(matrix)g
+Fm(J)106 b Fx(\()p Fm(t;)184 b(y)40 b Fx(\).)525 b(This)380
+b(function)h(m)-31 b(ust)380 b(b)31 b(e)379 b(of)h(t)-31
+b(yp)31 b(e)380 b Fu(CVDenseJacFn)p Fx(.)525 b(The)380
+b(user)e(can)i(supply)4000 9631 y(his/her)374 b(o)-31
+b(wn)374 b(dense)g(Jacobian)h(function,)i(or)c(use)h(the)g(default)h
+(di\256erence)e(quotien)-31 b(t)376 b(function)f Fu(CVDenseDQJac)4000
+10959 y Fx(that)397 b(comes)f(with)h(the)f Fv(cvdense)g
+Fx(solv)-31 b(er.)573 b(T)-92 b(o)396 b(sp)31 b(ecify)396
+b(a)f(user-supplied)h(Jacobian)h(function)g Fu(djac)f
+Fx(and)g(asso-)4000 12287 y(ciated)360 b(user)e(data)i
+Fu(jac)p 13909 12287 349 45 v 419 w(data)p Fx(,)i Fv(cvdense)e
+Fx(pro)-31 b(vides)359 b(the)g(function)h Fu(CVDenseSetJacFn)p
+Fx(.)492 b(The)359 b Fv(cvdense)g Fx(solv)-31 b(er)4000
+13616 y(passes)383 b(the)h(p)31 b(oin)-31 b(ter)385 b
+Fu(jac)p 14919 13616 V 419 w(data)f Fx(to)h(its)f(dense)f(Jacobian)j
+(function.)538 b(This)384 b(allo)-31 b(ws)386 b(the)f(user)d(to)j
+(create)f(an)g(arbi-)4000 14944 y(trary)405 b(structure)f(with)i(relev)
+-61 b(an)-31 b(t)406 b(problem)f(data)h(and)g(access)e(it)i(during)f
+(the)g(execution)h(of)f(the)g(user-supplied)4000 16272
+y(Jacobian)289 b(function,)306 b(without)290 b(using)d(global)j(data)f
+(in)f(the)f(program.)467 b(The)288 b(p)31 b(oin)-31 b(ter)288
+b Fu(jac)p 41208 16272 V 419 w(data)g Fx(ma)-31 b(y)288
+b(b)31 b(e)287 b(iden)-31 b(tical)4000 17601 y(to)370
+b Fu(f)p 6004 17601 V 419 w(data)p Fx(,)g(if)f(the)h(latter)g(w)-31
+b(as)370 b(sp)31 b(eci\257ed)369 b(through)h Fu(CVodeSetFdata)p
+Fx(.)p 4000 19377 9470 45 v 4000 20717 45 1341 v 4376
+20385 a Fu(CVDenseSetJacFn)p 13426 20717 V 4000 20761
+9470 45 v Black 4000 22114 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVDenseSetJacFn\(cvode)p 27153 22114 349 45 v 422
+w(mem,)g(djac,)h(jac)p 35710 22114 V 419 w(data\);)p
+Black 4000 23777 a Fx(Description)p Black 1286 w(The)407
+b(function)h Fu(CVDenseSetJacFn)g Fx(sp)31 b(eci\257es)406
+b(the)h(dense)f(Jacobian)i(appro)-31 b(ximation)410 b(function)10814
+25106 y(to)370 b(b)31 b(e)369 b(used)f(and)i(the)f(p)31
+b(oin)-31 b(ter)370 b(to)g(user)e(data.)p Black 4000
+26769 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+13789 26769 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 10814 28211 a Fu(djac)p Black 3297 w Fx(\()p Fu(CVDenseJacFn)p
+Fx(\))372 b(user-de\257ned)c(dense)g(Jacobian)j(appro)-31
+b(ximation)373 b(function.)p Black 10814 29654 a Fu(jac)p
+12627 29654 V 419 w(data)p Black 1135 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(user-de\257ned)
+f(data)j(structure.)p Black 4000 31317 a(Return)e(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 10814 32981 a Fu(CVDENSE)p
+14951 32981 V 419 w(SUCCESS)p Black 1555 w Fx(The)g(optional)j(v)-61
+b(alue)369 b(has)h(b)31 b(een)368 b(successfully)h(set.)p
+Black 10814 34423 a Fu(CVDENSE)p 14951 34423 V 419 w(MEM)p
+17113 34423 V 419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p
+26172 34423 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fx(.)p Black 10814 35865 a Fu(CVDENSE)p
+14951 35865 V 419 w(LMEM)p 17694 35865 V 419 w(NULL)p
+Black 555 w Fx(The)f Fv(cvdense)h Fx(linear)g(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 37528 a(Notes)p Black 4072 w(By)398 b(default,)406
+b Fv(cvdense)399 b Fx(uses)e(the)h(di\256erence)f(quotien)-31
+b(t)400 b(function)f Fu(CVDenseDQJac)p Fx(.)579 b(If)398
+b Fu(NULL)g Fx(is)10814 38857 y(passed)369 b(to)h Fu(djac)p
+Fx(,)g(this)f(default)i(function)f(is)g(used.)10814 40520
+y(The)f(function)i(t)-31 b(yp)31 b(e)370 b Fu(CVDenseJacFn)g
+Fx(is)g(describ)31 b(ed)368 b(in)h Fp(x)p Fx(5.6.3.)4000
+43705 y Fy(Band)405 b(Linear)g(solv)-35 b(er.)1108 b
+Fx(The)352 b Fv(cvdense)i Fx(solv)-31 b(er)353 b(needs)f(a)h(function)h
+(to)g(compute)f(a)g(banded)g(appro)-31 b(ximation)4000
+45033 y(to)411 b(the)f(Jacobian)i(matrix)f Fm(J)106 b
+Fx(\()p Fm(t;)184 b(y)40 b Fx(\).)617 b(This)410 b(function)i(m)-31
+b(ust)411 b(b)31 b(e)409 b(of)i(t)-31 b(yp)31 b(e)410
+b Fu(CVBandJacFn)p Fx(.)617 b(The)410 b(user)f(can)i(supply)4000
+46362 y(his/her)298 b(o)-31 b(wn)299 b(banded)f(Jacobian)i(appro)-31
+b(ximation)302 b(function,)314 b(or)298 b(use)g(the)g(default)i
+(di\256erence)d(quotien)-31 b(t)300 b(function)4000 47690
+y Fu(CVBandDQJac)286 b Fx(that)f(comes)g(with)g(the)g
+Fv(cvband)g Fx(solv)-31 b(er.)464 b(T)-92 b(o)285 b(sp)31
+b(ecify)285 b(a)f(user-supplied)g(Jacobian)i(function)f
+Fu(bjac)4000 49019 y Fx(and)392 b(asso)31 b(ciated)393
+b(user)e(data)i Fu(jac)p 18194 49019 V 419 w(data)p Fx(,)398
+b Fv(cvband)392 b Fx(pro)-31 b(vides)393 b(the)f(function)h
+Fu(CVBandSetJacFn)p Fx(.)563 b(The)392 b Fv(cvband)4000
+50347 y Fx(solv)-31 b(er)372 b(passes)e(the)h(p)31 b(oin)-31
+b(ter)372 b Fu(jac)p 18028 50347 V 419 w(data)f Fx(to)h(its)g(banded)f
+(Jacobian)h(appro)-31 b(ximation)375 b(function.)500
+b(This)371 b(allo)-31 b(ws)374 b(the)4000 51675 y(user)367
+b(to)h(create)g(an)g(arbitrary)g(structure)f(with)i(relev)-61
+b(an)-31 b(t)368 b(problem)h(data)f(and)g(access)f(it)i(during)f(the)f
+(execution)4000 53004 y(of)518 b(the)g(user-supplied)f(Jacobian)i
+(function,)556 b(without)520 b(using)d(global)j(data)f(in)e(the)h
+(program.)938 b(The)518 b(p)31 b(oin)-31 b(ter)4000 54332
+y Fu(jac)p 5813 54332 V 419 w(data)369 b Fx(ma)-31 b(y)371
+b(b)31 b(e)369 b(iden)-31 b(tical)371 b(to)f Fu(f)p 19223
+54332 V 419 w(data)p Fx(,)g(if)f(the)h(latter)g(w)-31
+b(as)370 b(sp)31 b(eci\257ed)369 b(through)h Fu(CVodeSetFdata)p
+Fx(.)p 4000 56108 8889 45 v 4000 57449 45 1341 v 4376
+57117 a Fu(CVBandSetJacFn)p 12845 57449 V 4000 57493
+8889 45 v Black 4000 58845 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVBandSetJacFn\(cvode)p 26572 58845 349 45 v 421
+w(mem,)h(bjac,)g(jac)p 35129 58845 V 419 w(data\);)p
+Black 4000 60509 a Fx(Description)p Black 1286 w(The)373
+b(function)g Fu(CVBandSetJacFn)i Fx(sp)31 b(eci\257es)371
+b(the)i(banded)f(Jacobian)i(appro)-31 b(ximation)376
+b(function)10814 61837 y(to)370 b(b)31 b(e)369 b(used)f(and)i(the)f(p)
+31 b(oin)-31 b(ter)370 b(to)g(user)e(data.)p Black 4000
+63500 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+13789 63500 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 10814 64943 a Fu(bjac)p Black 3297 w Fx(\()p Fu(CVBandJacFn)p
+Fx(\))372 b(user-de\257ned)c(banded)h(Jacobian)i(appro)-31
+b(ximation)373 b(function.)p Black 10814 66385 a Fu(jac)p
+12627 66385 V 419 w(data)p Black 1135 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(user-de\257ned)
+f(data)j(structure.)p Black 4000 68048 a(Return)e(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 10814 69712 a Fu(CVBAND)p
+14370 69712 V 419 w(SUCCESS)p Black 1554 w Fx(The)h(optional)i(v)-61
+b(alue)369 b(has)g(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 71154 a Fu(CVBAND)p 14370 71154 V 419 w(MEM)p
+16532 71154 V 419 w(NULL)p Black 1135 w Fx(The)h Fu(cvode)p
+25591 71154 V 419 w(mem)f Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 10814 72596 a Fu(CVBAND)p
+14370 72596 V 419 w(LMEM)p 17113 72596 V 419 w(NULL)p
+Black 554 w Fx(The)h Fv(cvband)f Fx(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 74260 a(Notes)p Black 4072 w(By)473 b(default,)502
+b Fv(cvband)473 b Fx(uses)f(the)i(di\256erence)f(quotien)-31
+b(t)475 b(function)g Fu(CVBandDQJac)p Fx(.)806 b(If)473
+b Fu(NULL)h Fx(is)10814 75588 y(passed)369 b(to)h Fu(bjac)p
+Fx(,)g(this)f(default)i(function)f(is)g(used.)10814 77252
+y(The)f(function)i(t)-31 b(yp)31 b(e)370 b Fu(CVBandJacFn)g
+Fx(is)f(describ)31 b(ed)369 b(in)g Fp(x)p Fx(5.6.4.)p
+Black Black eop
+%%Page: 38 46
+38 45 bop Black 0 2701 a Fy(38)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 0 6974 a(SPGMR)401 b(Linear)g(solv)-35
+b(er.)1107 b Fx(If)348 b(an)-31 b(y)350 b(t)-31 b(yp)31
+b(e)349 b(of)g(preconditioning)i(is)d(to)i(b)31 b(e)348
+b(done)h(within)h(the)f Fv(spgmr)e Fx(metho)31 b(d,)0
+8302 y(then)488 b(the)g(user)f(m)-31 b(ust)488 b(supply)g(a)h
+(preconditioner)g(solv)-31 b(e)488 b(function)i Fu(psolve)e
+Fx(and)g(sp)31 b(ecify)488 b(its)g(name)h(through)0 9631
+y(a)455 b(call)g(to)g Fu(CVSpgmrSetPreconditioner)p Fx(.)752
+b(The)454 b(ev)-61 b(aluation)457 b(and)e(prepro)31 b(cessing)453
+b(of)i(an)-31 b(y)455 b(Jacobian-related)0 10959 y(data)294
+b(needed)f(b)-31 b(y)294 b(the)f(user's)g(preconditioner)h(solv)-31
+b(e)294 b(function)h(is)e(done)h(in)f(the)h(optional)i(user-supplied)c
+(function)0 12287 y Fu(psetup)p Fx(.)490 b(Both)360 b(of)g(these)g
+(functions)g(are)g(fully)g(sp)31 b(eci\257ed)359 b(in)h
+Fp(x)p Fx(5.6.)491 b(If)359 b(used,)i(the)f Fu(psetup)g
+Fx(function)h(should)f(also)0 13616 y(b)31 b(e)514 b(sp)31
+b(eci\257ed)515 b(in)g(the)g(call)h(to)g Fu(CVSpgmrSetPreconditioner)p
+Fx(.)933 b(Optionally)-92 b(,)554 b(the)515 b Fv(cvspgmr)f
+Fx(solv)-31 b(er)516 b(passes)0 14944 y(the)421 b(p)31
+b(oin)-31 b(ter)421 b(it)g(receiv)-31 b(es)420 b(through)i
+Fu(CVSpgmrSetPreconditioner)h Fx(to)f(the)e(preconditioner)i(setup)e
+(and)h(solv)-31 b(e)0 16272 y(functions.)829 b(This)481
+b(allo)-31 b(ws)483 b(the)e(user)f(to)i(create)f(an)g(arbitrary)h
+(structure)e(with)i(relev)-61 b(an)-31 b(t)482 b(problem)f(data)i(and)0
+17601 y(access)g(it)g(during)h(the)f(execution)h(of)g(the)f
+(user-supplied)g(preconditioner)h(functions)g(without)h(using)f(global)
+0 18929 y(data)466 b(in)g(the)f(program.)782 b(The)466
+b(p)31 b(oin)-31 b(ter)466 b Fu(p)p 18095 18929 349 45
+v 418 w(data)g Fx(ma)-31 b(y)466 b(b)31 b(e)465 b(iden)-31
+b(tical)468 b(to)e Fu(f)p 31985 18929 V 418 w(data)p
+Fx(,)491 b(if)465 b(the)h(latter)g(w)-31 b(as)466 b(sp)31
+b(eci\257ed)0 20257 y(through)370 b Fu(CVodeSetFdata)p
+Fx(.)1660 21627 y(The)400 b Fv(cvspgmr)e Fx(solv)-31
+b(er)399 b(requires)f(a)h(function)i(to)e(compute)h(an)g(appro)-31
+b(ximation)402 b(to)e(the)f(pro)31 b(duct)399 b(b)31
+b(et)-31 b(w)g(een)0 22955 y(the)357 b(Jacobian)h(matrix)f
+Fm(J)106 b Fx(\()p Fm(t;)184 b(y)40 b Fx(\))358 b(and)f(a)f(v)-31
+b(ector)358 b Fm(v)40 b Fx(.)487 b(The)357 b(user)e(can)i(supply)f
+(his/her)g(o)-31 b(wn)358 b(Jacobian)g(times)f(v)-31
+b(ector)0 24284 y(appro)g(ximation)394 b(function,)k(or)391
+b(use)f(the)g(di\256erence)g(quotien)-31 b(t)393 b(function)f
+Fu(CVSpgmrDQJtimes)h Fx(that)f(comes)f(with)0 25612 y(the)456
+b Fv(cvspgmr)f Fx(solv)-31 b(er.)752 b(A)456 b(user-de\257ned)f
+(Jacobian-v)-31 b(ector)458 b(function)f(m)-31 b(ust)456
+b(b)31 b(e)455 b(of)i(t)-31 b(yp)31 b(e)456 b Fu(CVSpgmrJtimesFn)0
+26940 y Fx(and)311 b(can)g(b)31 b(e)311 b(sp)31 b(eci\257ed)310
+b(through)i(a)f(call)h(to)f Fu(CVSpgmrSetJacTimesVecFn)j
+Fx(\(see)d Fp(x)p Fx(5.6)h(for)f(sp)31 b(eci\257cation)312
+b(details\).)0 28269 y(As)505 b(with)i(the)f(preconditioner)h(user)e
+(data)h(structure)g Fu(p)p 24610 28269 V 418 w(data)p
+Fx(,)541 b(the)506 b(user)e(can)i(also)h(sp)31 b(ecify)506
+b(in)-31 b(t)506 b(the)g(call)h(to)0 29597 y Fu(CVSpgmrSetJacFn)p
+Fx(,)359 b(a)353 b(p)31 b(oin)-31 b(ter)354 b(to)f(a)g(user-de\257ned)f
+(data)i(structure,)i Fu(jac)p 31832 29597 V 419 w(data)p
+Fx(,)h(whic)-31 b(h)354 b(the)f Fv(cvspgmr)f Fx(solv)-31
+b(er)0 30925 y(passes)423 b(to)h(the)g(Jacobian)h(times)f(v)-31
+b(ector)424 b(function)h Fu(jtimes)f Fx(eac)-31 b(h)424
+b(time)h(it)f(is)g(called.)657 b(The)423 b(p)31 b(oin)-31
+b(ter)425 b Fu(jac)p 45327 30925 V 418 w(data)0 32254
+y Fx(ma)-31 b(y)370 b(b)31 b(e)369 b(iden)-31 b(tical)372
+b(to)e Fu(p)p 10368 32254 V 418 w(data)g Fx(and/or)g
+Fu(f)p 17754 32254 V 418 w(data)p Fx(.)p 0 34453 14701
+45 v 0 36039 45 1587 v 376 35461 a Fu(CVSpgmrSetPreconditioner)p
+14656 36039 V 0 36083 14701 45 v Black 0 37404 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVSpgmrSetPrecSolveFn\(cvode)p
+26639 37404 349 45 v 422 w(mem,)h(psolve,)g(psetup,)h(p)p
+39847 37404 V 418 w(data\);)p Black 0 39257 a Fx(Description)p
+Black 1286 w(The)419 b(function)i Fu(CVSpgmrSet)f Fx(sp)31
+b(eci\257es)419 b(the)g(preconditioner)h(setup)f(and)g(solv)-31
+b(e)420 b(functions)h(and)6814 40586 y(the)369 b(p)31
+b(oin)-31 b(ter)370 b(to)g(user)e(data.)p Black 0 42439
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p 9789
+42439 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p
+Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25
+b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814
+44030 a Fu(psolve)p Black 2135 w Fx(\()p Fu(CVSpgmrPrecSolveFn)p
+Fx(\))373 b(user-de\257ned)368 b(preconditioner)i(solv)-31
+b(e)370 b(function.)p Black 6814 45621 a Fu(psetup)p
+Black 2135 w Fx(\()p Fu(CVSpgmrPrecSetupFn)p Fx(\))j(user-de\257ned)368
+b(preconditioner)i(setup)f(function.)p Black 6814 47212
+a Fu(p)p 7465 47212 V 419 w(data)p Black 2297 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f(user-de\257ned)f(data)j(structure.)p Black
+0 49065 a(Return)e(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 50918 a Fu(CVSPGMR)p 10951 50918 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g(optional)j(v)-61 b(alue)369 b(has)h(b)31
+b(een)368 b(successfully)h(set.)p Black 6814 52509 a
+Fu(CVSPGMR)p 10951 52509 V 419 w(MEM)p 13113 52509 V
+419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p 22172 52509
+V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p
+Fx(.)p Black 6814 54100 a Fu(CVSPGMR)p 10951 54100 V
+419 w(LMEM)p 13694 54100 V 419 w(NULL)p Black 555 w Fx(The)f
+Fv(cvspgmr)f Fx(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)p Black 0 55954 a(Notes)p Black
+4072 w(The)507 b(function)h(t)-31 b(yp)31 b(e)508 b Fu
+(CVSpgmrPrecSolveFn)h Fx(is)e(describ)31 b(ed)506 b(in)h
+Fp(x)p Fx(5.6.6.)908 b(The)507 b(function)h(t)-31 b(yp)31
+b(e)6814 57282 y Fu(CVSpgmrPrecSetupFn)372 b Fx(is)d(describ)31
+b(ed)368 b(in)i Fp(x)p Fx(5.6.7.)p 0 59810 14120 45 v
+0 61397 45 1587 v 376 60819 a Fu(CVSpgmrSetJacTimesVecFn)p
+14075 61397 V 0 61441 14120 45 v Black 0 62762 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVSpgmrSetJacTimesVecFn\(cvode)p
+27801 62762 349 45 v 423 w(mem,)g(jtimes,)i(jac)p 37522
+62762 V 419 w(data\);)p Black 0 64615 a Fx(Description)p
+Black 1286 w(The)268 b(function)h Fu(CVSpgmrSetJacTimesFn)h
+Fx(sp)31 b(eci\257es)267 b(the)g(Jacobian-v)-31 b(ector)270
+b(function)f(to)f(b)31 b(e)267 b(used)6814 65943 y(and)369
+b(the)h(p)31 b(oin)-31 b(ter)370 b(to)g(user)e(data.)p
+Black 0 67797 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 67797 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 69388 a Fu(jtimes)p Black 2135
+w Fx(\()p Fu(CVSpgmrJacTimesVecFn)p Fx(\))373 b(user-de\257ned)368
+b(Jacobian-v)-31 b(ector)372 b(pro)31 b(duct)369 b(function.)p
+Black 6814 70978 a Fu(jac)p 8627 70978 V 419 w(data)p
+Black 1135 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f(user-de\257ned)f(data)j(structure.)p
+Black 0 72832 a(Return)e(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 74685 a Fu(CVSPGMR)p 10951 74685 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g(optional)j(v)-61 b(alue)369 b(has)h(b)31
+b(een)368 b(successfully)h(set.)p Black 6814 76276 a
+Fu(CVSPGMR)p 10951 76276 V 419 w(MEM)p 13113 76276 V
+419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p 22172 76276
+V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p
+Fx(.)p Black 6814 77867 a Fu(CVSPGMR)p 10951 77867 V
+419 w(LMEM)p 13694 77867 V 419 w(NULL)p Black 555 w Fx(The)f
+Fv(cvspgmr)f Fx(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)p Black Black eop
+%%Page: 39 47
+39 46 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(39)p 4000 3144 48001 45 v Black Black 4000 6974
+a Fx(Notes)p Black 4072 w(By)318 b(default,)330 b Fv(cvspgmr)317
+b Fx(uses)g(the)h(di\256erence)g(quotien)-31 b(t)320
+b(function)f Fu(CVSpgmrDQJtimes)p Fx(.)478 b(If)317 b
+Fu(NULL)10814 8302 y Fx(is)369 b(passed)g(to)h Fu(jtimes)p
+Fx(,)g(this)g(default)g(function)h(is)e(used.)10814 10080
+y(The)g(function)i(t)-31 b(yp)31 b(e)370 b Fu(CVSpgmrJacTimesVecFn)i
+Fx(is)d(describ)31 b(ed)368 b(in)h Fp(x)p Fx(5.6.5.)p
+4000 12368 10052 45 v 4000 13955 45 1587 v 4376 13376
+a Fu(CVSpgmrSetGSType)p 14007 13955 V 4000 13999 10052
+45 v Black 4000 15281 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVSpgmrSetGSType\(cvode)p 27734 15281 349 45 v
+422 w(mem,)g(gstype\);)p Black 4000 17059 a Fx(Description)p
+Black 1286 w(The)362 b(function)i Fu(CVSpgmrSetGSType)g
+Fx(sp)31 b(eci\257es)362 b(the)g(Gram-Sc)-31 b(hmidt)364
+b(orthogonalization)j(to)c(b)31 b(e)10814 18387 y(used.)489
+b(This)361 b(m)-31 b(ust)361 b(b)31 b(e)360 b(one)h(of)g(the)g(en)-31
+b(umeration)363 b(constan)-31 b(ts)362 b Fu(MODIFIED)p
+41662 18387 V 419 w(GS)f Fx(or)f Fu(CLASSICAL)p 50180
+18387 V 420 w(GS)p Fx(.)10814 19715 y(These)434 b(corresp)31
+b(ond)433 b(to)h(using)g(mo)31 b(di\257ed)435 b(Gram-Sc)-31
+b(hmidt)435 b(and)f(classical)h(Gram-Sc)-31 b(hmidt,)452
+b(re-)10814 21044 y(sp)31 b(ectiv)-31 b(ely)-92 b(.)p
+Black 4000 22821 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 22821 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 24374 a Fu(gstype)p Black
+2135 w Fx(\()p Fu(int)p Fx(\))370 b(t)-31 b(yp)31 b(e)370
+b(of)g(Gram-Sc)-31 b(hmidt)371 b(orthogonalization.)p
+Black 4000 26151 a(Return)e(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+10814 27929 a Fu(CVSPGMR)p 14951 27929 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g(optional)j(v)-61 b(alue)369 b(has)h(b)31
+b(een)368 b(successfully)h(set.)p Black 10814 29481 a
+Fu(CVSPGMR)p 14951 29481 V 419 w(MEM)p 17113 29481 V
+419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p 26172 29481
+V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p
+Fx(.)p Black 10814 31034 a Fu(CVSPGMR)p 14951 31034 V
+419 w(LMEM)p 17694 31034 V 419 w(NULL)p Black 555 w Fx(The)f
+Fv(cvspgmr)f Fx(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)p Black 10814 32587 a Fu(CVSPGMR)p
+14951 32587 V 419 w(ILL)p 17113 32587 V 419 w(INPUT)p
+Black 555 w Fx(The)h(Gram-Sc)-31 b(hmidt)371 b(orthogonalization)j(t)
+-31 b(yp)31 b(e)370 b Fu(gstype)g Fx(is)f(not)h(v)-61
+b(alid.)p Black 4000 34364 a(Notes)p Black 4072 w(The)369
+b(default)i(v)-61 b(alue)370 b(is)f Fu(MODIFIED)p 25501
+34364 V 419 w(GS)p Fx(.)p 4000 36653 8889 45 v 4000 38239
+45 1587 v 4376 37661 a Fu(CVSpgmrSetDelt)p 12845 38239
+V 4000 38283 8889 45 v Black 4000 39566 a Fx(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVSpgmrSetDelt\(cvode)p 26572
+39566 349 45 v 421 w(mem,)h(delt\);)p Black 4000 41344
+a Fx(Description)p Black 1286 w(The)360 b(function)h
+Fu(CVSpgmrSetDelt)h Fx(sp)31 b(eci\257es)359 b(the)i(factor)f(b)-31
+b(y)361 b(whic)-31 b(h)360 b(the)h(GMRES)e(con)-31 b(v)g(ergence)10814
+42672 y(test)370 b(constan)-31 b(t)370 b(is)f(reduced)g(from)h(the)f
+(Newton)i(iteration)g(test)f(constan)-31 b(t.)p Black
+4000 44449 a(Argumen)g(ts)p Black Black 1517 w Fu(cvode)p
+13789 44449 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 10814 46002 a Fu(delt)p Black 3297 w Fx(\()p Fu(realtype)p
+Fx(\))p Black 4000 47779 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 10814 49557 a Fu(CVSPGMR)p 14951 49557 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g(optional)j(v)-61 b(alue)369 b(has)h(b)31
+b(een)368 b(successfully)h(set.)p Black 10814 51110 a
+Fu(CVSPGMR)p 14951 51110 V 419 w(MEM)p 17113 51110 V
+419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p 26172 51110
+V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p
+Fx(.)p Black 10814 52663 a Fu(CVSPGMR)p 14951 52663 V
+419 w(LMEM)p 17694 52663 V 419 w(NULL)p Black 555 w Fx(The)f
+Fv(cvspgmr)f Fx(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)p Black 10814 54215 a Fu(CVSPGMR)p
+14951 54215 V 419 w(ILL)p 17113 54215 V 419 w(INPUT)p
+Black 555 w Fx(The)h(factor)h Fu(delt)g Fx(is)f(negativ)-31
+b(e.)p Black 4000 55993 a(Notes)p Black 4072 w(The)369
+b(default)i(v)-61 b(alue)370 b(is)f(0)p Fm(:)p Fx(05.)10814
+57770 y(P)-31 b(assing)370 b(a)g(v)-61 b(alue)369 b Fu(delt)p
+Fx(=)308 b(0)p Fm(:)p Fx(0)371 b(also)f(indicates)g(using)g(the)f
+(default)i(v)-61 b(alue.)p 4000 60058 11214 45 v 4000
+61645 45 1587 v 4376 61067 a Fu(CVSpgmrSetPrecType)p
+15169 61645 V 4000 61689 11214 45 v Black 4000 62972
+a Fx(Call)p Black 4848 w Fu(flag)582 b(=)f(CVSpgmrSetPrecType\(cvode)p
+28896 62972 349 45 v 422 w(mem,)h(pretype\);)p Black
+4000 64749 a Fx(Description)p Black 1286 w(The)369 b(function)i
+Fu(CVSpgmrSetPrecType)h Fx(resets)c(the)h(t)-31 b(yp)31
+b(e)370 b(of)g(preconditioning)i(to)d(b)31 b(e)369 b(used.)p
+Black 4000 66527 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 66527 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 68079 a Fu(pretype)p Black
+1554 w Fx(\()p Fu(int)p Fx(\))301 b(sp)31 b(eci\257es)300
+b(the)g(t)-31 b(yp)31 b(e)301 b(of)f(preconditioning)j(and)d(m)-31
+b(ust)301 b(b)31 b(e)300 b(one)g(of:)459 b Fu(PREC)p
+49019 68079 V 419 w(NONE)p Fx(,)16435 69408 y Fu(PREC)p
+18829 69408 V 419 w(LEFT)p Fx(,)370 b Fu(PREC)p 24573
+69408 V 419 w(RIGHT)p Fx(,)g(or)f Fu(PREC)p 32254 69408
+V 419 w(BOTH)p Fx(.)p Black 4000 71185 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 10814 72962 a Fu(CVSPGMR)p
+14951 72962 V 419 w(SUCCESS)p Black 1555 w Fx(The)g(optional)j(v)-61
+b(alue)369 b(has)h(b)31 b(een)368 b(successfully)h(set.)p
+Black 10814 74515 a Fu(CVSPGMR)p 14951 74515 V 419 w(MEM)p
+17113 74515 V 419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p
+26172 74515 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fx(.)p Black 10814 76068 a Fu(CVSPGMR)p
+14951 76068 V 419 w(LMEM)p 17694 76068 V 419 w(NULL)p
+Black 555 w Fx(The)f Fv(cvspgmr)f Fx(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 10814 77621 a Fu(CVSPGMR)p 14951 77621 V 419 w(ILL)p
+17113 77621 V 419 w(INPUT)p Black 555 w Fx(The)h(preconditioner)h(t)-31
+b(yp)31 b(e)370 b Fu(pretype)g Fx(is)f(not)h(v)-61 b(alid.)p
+Black Black eop
+%%Page: 40 48
+40 47 bop Black 0 2701 a Fy(40)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black Black 0 6974 a Fx(Notes)p
+Black 4072 w(The)328 b(preconditioning)i(t)-31 b(yp)31
+b(e)327 b(is)h(initially)j(sp)31 b(eci\257ed)326 b(in)i(the)g(call)g
+(to)h Fu(CVSpgmr)f Fx(\(see)f Fp(x)p Fx(5.5.2\).)481
+b(This)6814 8302 y(function)338 b(call)g(is)f(needed)f(only)h(if)h
+Fu(pretype)f Fx(is)g(b)31 b(eing)337 b(c)-31 b(hanged)337
+b(from)h(its)f(v)-61 b(alue)337 b(in)g(the)g(previous)6814
+9631 y(call)370 b(to)g Fu(CVSpgmr)p Fx(.)0 13466 y Fq(5.5.5)1495
+b(In)-42 b(terp)42 b(olated)500 b(output)f(function)0
+15628 y Fx(An)458 b(optional)j(function)f Fu(CVodeGetDky)f
+Fx(is)f(a)-31 b(v)-61 b(ailable)461 b(to)e(obtain)h(additional)i
+(output)d(v)-61 b(alues.)760 b(This)458 b(function)0
+16956 y(m)-31 b(ust)494 b(b)31 b(e)492 b(called)j(after)e(a)h
+(successful)e(return)h(from)g Fu(CVode)h Fx(and)f(pro)-31
+b(vides)494 b(in)-31 b(terp)31 b(olated)495 b(v)-61 b(alues)493
+b(of)h Fm(y)532 b Fx(or)493 b(its)0 18285 y(deriv)-61
+b(ativ)-31 b(es,)375 b(up)e(to)h(the)f(curren)-31 b(t)373
+b(order)f(of)h(the)g(in)-31 b(tegration)376 b(metho)31
+b(d,)376 b(in)-31 b(terp)31 b(olated)375 b(to)e(an)-31
+b(y)374 b(v)-61 b(alue)373 b(of)h Fm(t)e Fx(in)i(the)0
+19613 y(last)c(in)-31 b(ternal)371 b(step)e(tak)-31 b(en)370
+b(b)-31 b(y)370 b Fv(cv)-25 b(ode)p Fx(.)1660 21005 y(The)370
+b(call)g(to)g(the)g Fu(CVodeGetDky)g Fx(function)h(has)e(the)g(follo)
+-31 b(wing)373 b(form:)p 0 23211 7146 45 v 0 24797 45
+1587 v 376 24219 a Fu(CVodeGetDky)p 7101 24797 V 0 24841
+7146 45 v Black 0 26185 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeGetDky\(cvode)p 20829 26185 349 45 v 421 w(mem,)h(t,)f(k,)h
+(dky\);)p Black 0 28083 a Fx(Description)p Black 1286
+w(The)501 b(function)i Fu(CVodeGetDky)f Fx(computes)g(the)f
+Fu(k)p Fx(-th)g(deriv)-61 b(ativ)-31 b(e)503 b(of)e(the)h
+Fu(y)e Fx(function)j(at)f(time)6814 29411 y Fu(t)p Fx(,)462
+b(i.e.)716 b Fm(d)10869 29009 y Fl(\()p Fk(k)19 b Fl(\))12106
+29411 y Fm(y)40 b(=dt)14218 29009 y Fl(\()p Fk(k)19 b
+Fl(\))15454 29411 y Fx(\()p Fm(t)p Fx(\),)463 b(where)443
+b Fm(t)21159 29577 y Fk(n)22057 29411 y Fp(\241)295 b
+Fm(h)23851 29577 y Fk(u)24861 29411 y Fp(\267)443 b Fu(t)g
+Fp(\267)432 b Fm(t)28882 29577 y Fk(n)29484 29411 y Fx(,)462
+b Fm(t)30653 29577 y Fk(n)31698 29411 y Fx(denotes)444
+b(the)g(curren)-31 b(t)443 b(in)-31 b(ternal)445 b(time)6814
+30739 y(reac)-31 b(hed,)355 b(and)c Fm(h)13910 30905
+y Fk(u)14839 30739 y Fx(is)f(the)h(last)h(in)-31 b(ternal)352
+b(step)e(size)h(successfully)f(used)g(b)-31 b(y)351 b(the)g(solv)-31
+b(er.)487 b(The)351 b(user)6814 32068 y(ma)-31 b(y)370
+b(request)f Fu(k)g Fx(=)308 b(0)p Fm(;)184 b Fx(1)p Fm(;)g(:)g(:)g(:)
+190 b(;)184 b(q)19736 32234 y Fk(u)20316 32068 y Fx(,)369
+b(where)g Fm(q)24687 32234 y Fk(u)25635 32068 y Fx(is)g(the)g(curren)
+-31 b(t)369 b(order.)p Black 0 33966 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 9789 33966 V 419 w(mem)p
+Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 35579
+a Fu(t)p Black 5040 w Fx(\()p Fu(realtype)p Fx(\))390
+b(the)f(v)-61 b(alue)389 b(of)g(the)f(indep)31 b(enden)-31
+b(t)389 b(v)-61 b(ariable)389 b(at)g(whic)-31 b(h)390
+b(the)e(deriv)-61 b(ativ)-31 b(e)12435 36908 y(is)369
+b(requested.)p Black 6814 38521 a Fu(k)p Black 5040 w
+Fx(\()p Fu(int)p Fx(\))h(the)g(deriv)-61 b(ativ)-31 b(e)371
+b(order)d(requested.)p Black 6814 40134 a Fu(dky)p Black
+3878 w Fx(\()p Fu(N)p 13516 40134 V 419 w(Vector)p Fx(\))286
+b(v)-31 b(ector)285 b(con)-31 b(taining)287 b(the)e(deriv)-61
+b(ativ)-31 b(e.)466 b(This)284 b(v)-31 b(ector)286 b(m)-31
+b(ust)285 b(b)31 b(e)283 b(allo)31 b(cated)12435 41463
+y(b)-31 b(y)370 b(the)f(caller.)p Black 0 43361 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 6814 45259 a Fu(CV)p 8046
+45259 V 419 w(SUCCESS)p Black 973 w(CVodeGetDky)h Fx(succeeded.)p
+Black 6814 46872 a Fu(CV)p 8046 46872 V 419 w(BAD)p 10208
+46872 V 419 w(K)p Black 2297 w(k)f Fx(is)g(not)h(in)f(the)h(range)f(0)p
+Fm(;)184 b Fx(1)p Fm(;)g(:::;)g(q)27674 47038 y Fk(u)28258
+46872 y Fx(.)p Black 6814 48485 a Fu(CV)p 8046 48485
+V 419 w(BAD)p 10208 48485 V 419 w(T)p Black 2297 w(t)369
+b Fx(is)g(not)h(in)f(the)h(in)-31 b(terv)-61 b(al)370
+b([)p Fm(t)25371 48651 y Fk(n)26220 48485 y Fp(\241)246
+b Fm(h)27965 48651 y Fk(u)28543 48485 y Fm(;)184 b(t)29434
+48651 y Fk(n)30038 48485 y Fx(].)p Black 6814 50099 a
+Fu(CV)p 8046 50099 V 419 w(BAD)p 10208 50099 V 419 w(DKY)p
+Black 1135 w Fx(The)369 b Fu(dky)g Fx(argumen)-31 b(t)371
+b(w)-31 b(as)370 b Fu(NULL)p Fx(.)p Black 6814 51712
+a Fu(CV)p 8046 51712 V 419 w(MEM)p 10208 51712 V 419
+w(NULL)p Black 554 w Fx(The)f Fu(cvode)p 18685 51712
+V 419 w(mem)h Fx(argumen)-31 b(t)370 b(w)-31 b(as)370
+b Fu(NULL)p Fx(.)p Black 0 53610 a(Notes)p Black 4072
+w(It)347 b(is)g(only)g(legal)i(to)f(call)g(the)f(function)h
+Fu(CVodeGetDky)g Fx(after)g(a)f(successful)f(return)g(from)i
+Fu(CVode)p Fx(.)6814 54939 y(See)339 b Fu(CVodeGetCurrentTime)p
+Fx(,)349 b Fu(CVodeGetLastOrder)p Fx(,)f(and)340 b Fu(CVodeGetLastStep)
+i Fx(in)e(the)f(next)6814 56267 y(section)370 b(for)f(access)g(to)h
+Fm(t)17229 56433 y Fk(n)17831 56267 y Fx(,)g Fm(q)19002
+56433 y Fk(u)19581 56267 y Fx(,)f(and)g Fm(h)23047 56433
+y Fk(u)23626 56267 y Fx(,)g(resp)31 b(ectiv)-31 b(ely)-92
+b(.)0 59703 y Fq(5.5.6)1495 b(Optional)500 b(output)f(functions)0
+61864 y Fv(cv)-25 b(ode)395 b Fx(pro)-31 b(vides)395
+b(an)g(extensiv)-31 b(e)395 b(list)h(of)f(functions)g(that)h(can)e(b)31
+b(e)394 b(used)g(to)i(obtain)g(solv)-31 b(er)395 b(p)31
+b(erformance)394 b(infor-)0 63193 y(mation.)623 b(T)-92
+b(able)413 b(5.2)h(lists)e(all)h(optional)i(output)e(functions)g(in)g
+Fv(cv)-25 b(ode)p Fx(,)424 b(whic)-31 b(h)413 b(are)e(then)i(describ)31
+b(ed)411 b(in)h(detail)0 64521 y(in)369 b(the)h(remainder)f(of)h(this)g
+(section.)0 67735 y Fy(Main)424 b(solv)-35 b(er)425 b(optional)g
+(output)h(functions)0 69897 y Fv(cv)-25 b(ode)402 b Fx(pro)-31
+b(vides)401 b(sev)-31 b(eral)401 b(user-callable)i(functions)f(that)g
+(can)f(b)31 b(e)400 b(used)h(to)g(obtain)i(di\256eren)-31
+b(t)401 b(quan)-31 b(tities)404 b(that)0 71225 y(ma)-31
+b(y)348 b(b)31 b(e)346 b(of)h(in)-31 b(terest)347 b(to)g(the)f(user,)
+351 b(suc)-31 b(h)346 b(as)g(solv)-31 b(er)347 b(w)-31
+b(orkspace)347 b(requiremen)-31 b(ts,)352 b(solv)-31
+b(er)347 b(p)31 b(erformance)347 b(statistics,)0 72553
+y(as)515 b(w)-31 b(ell)517 b(as)f(additional)j(data)d(from)g(the)g
+Fv(cv)-25 b(ode)516 b Fx(memory)h(blo)31 b(c)-31 b(k)516
+b(\(a)h(suggested)f(tolerance)g(scaling)h(factor,)0 73882
+y(the)531 b(error)e(w)-31 b(eigh)g(t)533 b(v)-31 b(ector,)572
+b(and)531 b(the)f(v)-31 b(ector)531 b(of)g(estimated)i(lo)31
+b(cal)532 b(errors\).)975 b(Also)531 b(pro)-31 b(vided)531
+b(are)g(functions)0 75210 y(to)484 b(extract)h(statistics)g(related)f
+(to)h(the)e(p)31 b(erformance)484 b(of)g(the)g Fv(cv)-25
+b(ode)484 b Fx(nonlinear)h(solv)-31 b(er)484 b(b)31 b(eing)484
+b(used.)835 b(As)484 b(a)0 76539 y(con)-31 b(v)g(enience,)349
+b(additional)c(extraction)e(functions)g(pro)-31 b(vide)343
+b(the)e(optional)k(outputs)d(in)g(groups.)484 b(These)341
+b(optional)0 77867 y(output)370 b(functions)h(are)e(describ)31
+b(ed)368 b(next.)p Black Black eop
+%%Page: 41 49
+41 48 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(41)p 4000 3144 48001 45 v Black Black Black 7208
+11492 a Fx(T)-92 b(able)370 b(5.2:)494 b(Optional)371
+b(outputs)f(from)g Fv(cv)-25 b(ode)p Fx(,)370 b Fv(cvdense)p
+Fx(,)h Fv(cvband)p Fx(,)f Fv(cvdia)-25 b(g)p Fx(,)369
+b(and)h Fv(cvspgmr)p Black 4818 12526 46364 45 v 4796
+13855 45 1329 v 5483 13456 a Fy(Optional)424 b(output)p
+32397 13855 V 18601 w(F)-106 b(unction)425 b(name)p 51159
+13855 V 4818 13899 46364 45 v 4796 15227 45 1329 v 22280
+14829 a(CV)-35 b(ODE)425 b(main)f(solv)-35 b(er)p 51159
+15227 V 4818 15272 46364 45 v 4796 16600 45 1329 v 5483
+16201 a Fx(Size)369 b(of)h Fv(cv)-25 b(ode)370 b Fx(real)f(and)h(in)-31
+b(teger)370 b(w)-31 b(orkspaces)p 32397 16600 V 7039
+w Fu(CVodeGetWorkSpace)p 51159 16600 V 4796 17928 V 5483
+17530 a Fx(Cum)g(ulativ)g(e)372 b(n)-31 b(um)g(b)31 b(er)369
+b(of)h(in)-31 b(ternal)371 b(steps)p 32397 17928 V 9870
+w Fu(CVodeGetNumSteps)p 51159 17928 V 4796 19257 V 5483
+18858 a Fx(No.)493 b(of)370 b(calls)g(to)g(r.h.s.)492
+b(function)p 32397 19257 V 13473 w Fu(CVodeGetNumRhsEvals)p
+51159 19257 V 4796 20585 V 5483 20186 a Fx(No.)h(of)370
+b(calls)g(to)g(linear)g(solv)-31 b(er)369 b(setup)g(function)p
+32397 20585 V 7191 w Fu(CVodeGetNumLinSolvSetups)p 51159
+20585 V 4796 21913 V 5483 21515 a Fx(No.)493 b(of)370
+b(lo)31 b(cal)370 b(error)e(test)i(failures)g(that)g(ha)-31
+b(v)g(e)370 b(o)31 b(ccurred)p 32397 21913 V 3708 w Fu
+(CVodeGetNumErrTestFails)p 51159 21913 V 4796 23242 V
+5483 22843 a Fx(Order)368 b(used)g(during)i(the)f(last)h(step)p
+32397 23242 V 12383 w Fu(CVodeGetLastOrder)p 51159 23242
+V 4796 24570 V 5483 24172 a Fx(Order)e(to)i(b)31 b(e)368
+b(attempted)k(on)d(the)h(next)f(step)p 32397 24570 V
+8278 w Fu(CVodeGetCurrentOrder)p 51159 24570 V 4796 25898
+V 5483 25500 a Fx(Order)f(reductions)h(due)g(to)h(stabilit)-31
+b(y)372 b(limit)g(detection)p 32397 25898 V 4211 w Fu
+(CVodeGetNumStabLimOrderReds)p 51159 25898 V 4796 27227
+V 5483 26828 a Fx(Actual)e(initial)i(step)d(size)g(used)p
+32397 27227 V 14206 w Fu(CVodeGetActualInitStep)p 51159
+27227 V 4796 28555 V 5483 28157 a Fx(Step)g(size)g(used)g(for)g(the)g
+(last)h(step)p 32397 28555 V 12783 w Fu(CVodeGetLastStep)p
+51159 28555 V 4796 29883 V 5483 29485 a Fx(Step)f(size)g(to)h(b)31
+b(e)369 b(attempted)i(on)f(the)f(next)h(step)p 32397
+29883 V 6863 w Fu(CVodeGetCurrentStep)p 51159 29883 V
+4796 31212 V 5483 30813 a Fx(Curren)-31 b(t)369 b(in)-31
+b(ternal)371 b(time)f(reac)-31 b(hed)369 b(b)-31 b(y)370
+b(the)f(solv)-31 b(er)p 32397 31212 V 6578 w Fu(CVodeGetCurrentTime)p
+51159 31212 V 4796 32540 V 5483 32142 a Fx(Suggested)370
+b(factor)g(for)f(tolerance)i(scaling)p 32397 32540 V
+9561 w Fu(CVodeGetTolScaleFactor)p 51159 32540 V 4796
+33868 V 5483 33470 a Fx(Error)d(w)-31 b(eigh)g(t)372
+b(v)-31 b(ector)369 b(for)h(state)g(v)-61 b(ariables)p
+32397 33868 V 9167 w Fu(CVodeGetErrWeights)p 51159 33868
+V 4796 35197 V 5483 34798 a Fx(Estimated)371 b(lo)31
+b(cal)371 b(error)d(v)-31 b(ector)p 32397 35197 V 14007
+w Fu(CVodeGetEstLocalErrors)p 51159 35197 V 4796 36525
+V 5483 36127 a Fx(No.)493 b(of)370 b(nonlinear)g(solv)-31
+b(er)370 b(iterations)p 32397 36525 V 11591 w Fu
+(CVodeGetNumNonlinSolvIters)p 51159 36525 V 4796 37854
+V 5483 37455 a Fx(No.)493 b(of)370 b(nonlinear)g(con)-31
+b(v)g(ergence)370 b(failures)p 32397 37854 V 9690 w Fu
+(CVodeGetNumNonlinSolvConvFails)p 51159 37854 V 4796
+39182 V 5483 38783 a Fx(All)g Fv(cv)-25 b(ode)370 b Fx(in)-31
+b(tegrator)371 b(statistics)p 32397 39182 V 12695 w Fu
+(CVodeGetIntegratorStats)p 51159 39182 V 4796 40510 V
+5483 40112 a Fv(cv)-25 b(ode)369 b Fx(nonlinear)i(solv)-31
+b(er)370 b(statistics)p 32397 40510 V 11643 w Fu
+(CVodeGetNonlinSolvStats)p 51159 40510 V 4796 41839 V
+5483 41440 a Fx(Arra)-31 b(y)369 b(sho)-31 b(wing)371
+b(ro)31 b(ots)369 b(found)p 32397 41839 V 14665 w Fu(CvodeGetRootInfo)p
+51159 41839 V 4796 43167 V 5483 42768 a Fx(No.)493 b(of)370
+b(calls)g(to)g(user)e(ro)31 b(ot)369 b(function)p 32397
+43167 V 11656 w Fu(CVodeGetNumGEvals)p 51159 43167 V
+4818 43211 46364 45 v 4796 44540 45 1329 v 21270 44141
+a Fy(CVDENSE)426 b(linear)f(solv)-35 b(er)p 51159 44540
+V 4818 44584 46364 45 v 4796 45912 45 1329 v 5483 45514
+a Fx(Size)369 b(of)h Fv(cvdense)g Fx(real)f(and)h(in)-31
+b(teger)370 b(w)-31 b(orkspaces)p 32397 45912 V 5915
+w Fu(CVDenseGetWorkSpace)p 51159 45912 V 4796 47241 V
+5483 46842 a Fx(No.)493 b(of)370 b(Jacobian)g(ev)-61
+b(aluations)p 32397 47241 V 14144 w Fu(CVDenseGetNumJacEvals)p
+51159 47241 V 4796 48569 V 5483 48170 a Fx(No.)493 b(of)370
+b(r.h.s.)492 b(calls)370 b(for)f(\257nite)h(di\256.)493
+b(Jacobian)371 b(ev)-61 b(als.)p 32397 48569 V 4653 w
+Fu(CVDenseGetNumRhsEvals)p 51159 48569 V 4796 49897 V
+5483 49499 a Fx(Last)369 b(return)g(from)g(a)h Fv(cvdense)g
+Fx(function)p 32397 49897 V 9412 w Fu(CVDenseGetLastFlag)p
+51159 49897 V 4818 49942 46364 45 v 4796 51270 45 1329
+v 21526 50871 a Fy(CVBAND)425 b(linear)g(solv)-35 b(er)p
+51159 51270 V 4818 51314 46364 45 v 4796 52643 45 1329
+v 5483 52244 a Fx(Size)369 b(of)h Fv(cvband)f Fx(real)h(and)f(in)-31
+b(teger)370 b(w)-31 b(orkspaces)p 32397 52643 V 6336
+w Fu(CVBandGetWorkSpace)p 51159 52643 V 4796 53971 V
+5483 53572 a Fx(No.)493 b(of)370 b(Jacobian)g(ev)-61
+b(aluations)p 32397 53971 V 14144 w Fu(CVBandGetNumJacEvals)p
+51159 53971 V 4796 55299 V 5483 54901 a Fx(No.)493 b(of)370
+b(r.h.s.)492 b(calls)370 b(for)f(\257nite)h(di\256.)493
+b(Jacobian)371 b(ev)-61 b(als.)p 32397 55299 V 4653 w
+Fu(CVBandGetNumRhsEvals)p 51159 55299 V 4796 56628 V
+5483 56229 a Fx(Last)369 b(return)g(from)g(a)h Fv(cvband)f
+Fx(function)p 32397 56628 V 9833 w Fu(CVBandGetLastFlag)p
+51159 56628 V 4818 56672 46364 45 v 4796 58000 45 1329
+v 21753 57602 a Fy(CVDIA)-35 b(G)425 b(linear)f(solv)-35
+b(er)p 51159 58000 V 4818 58044 46364 45 v 4796 59373
+45 1329 v 5483 58974 a Fx(Size)369 b(of)h Fv(cvdia)-25
+b(g)369 b Fx(real)g(and)h(in)-31 b(teger)370 b(w)-31
+b(orkspaces)p 32397 59373 V 6637 w Fu(CVDiagGetWorkSpace)p
+51159 59373 V 4796 60701 V 5483 60303 a Fx(No.)493 b(of)370
+b(r.h.s.)492 b(calls)370 b(for)f(\257nite)h(di\256.)493
+b(Jacobian)371 b(ev)-61 b(als.)p 32397 60701 V 4653 w
+Fu(CVDiagGetNumRhsEvals)p 51159 60701 V 4796 62030 V
+5483 61631 a Fx(Last)369 b(return)g(from)g(a)h Fv(cvdia)-25
+b(g)369 b Fx(function)p 32397 62030 V 10134 w Fu(CVDiagGetLastFlag)p
+51159 62030 V 4818 62074 46364 45 v 4796 63402 45 1329
+v 21075 63004 a Fy(CVSPGMR)426 b(linear)e(solv)-35 b(er)p
+51159 63402 V 4818 63446 46364 45 v 4796 64775 45 1329
+v 5483 64376 a Fx(Size)369 b(of)h Fv(cvspgmr)e Fx(real)i(and)f(in)-31
+b(teger)370 b(w)-31 b(orkspaces)p 32397 64775 V 5700
+w Fu(CVSpgmrGetWorkSpace)p 51159 64775 V 4796 66103 V
+5483 65705 a Fx(No.)493 b(of)370 b(linear)f(iterations)p
+32397 66103 V 16521 w Fu(CVSpgmrGetNumLinIters)p 51159
+66103 V 4796 67432 V 5483 67033 a Fx(No.)493 b(of)370
+b(linear)f(con)-31 b(v)g(ergence)371 b(failures)p 32397
+67432 V 11473 w Fu(CVSpgmrGetNumConvFails)p 51159 67432
+V 4796 68760 V 5483 68361 a Fx(No.)493 b(of)370 b(preconditioner)g(ev)
+-61 b(aluations)p 32397 68760 V 11447 w Fu(CVSpgmrGetNumPrecEvals)p
+51159 68760 V 4796 70088 V 5483 69690 a Fx(No.)493 b(of)370
+b(preconditioner)g(solv)-31 b(es)p 32397 70088 V 14053
+w Fu(CVSpgmrGetNumPrecSolves)p 51159 70088 V 4796 71417
+V 5483 71018 a Fx(No.)493 b(of)370 b(Jacobian-v)-31 b(ector)371
+b(pro)31 b(duct)369 b(ev)-61 b(aluations)p 32397 71417
+V 6666 w Fu(CVSpgmrGetNumJtimesEvals)p 51159 71417 V
+4796 72745 V 5483 72346 a Fx(No.)493 b(of)370 b(r.h.s.)492
+b(calls)370 b(for)f(\257nite)h(di\256.)493 b(Jacobian-v)-31
+b(ector)372 b(ev)-61 b(als.)p 32397 72745 V 1329 w Fu
+(CVSpgmrGetNumRhsEvals)p 51159 72745 V 4796 74073 V 5483
+73675 a Fx(Last)369 b(return)g(from)g(a)h Fv(cvspgmr)e
+Fx(function)p 32397 74073 V 9197 w Fu(CVSpgmrGetLastFlag)p
+51159 74073 V 4818 74118 46364 45 v Black Black Black
+eop
+%%Page: 42 50
+42 49 bop Black 0 2701 a Fy(42)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 0 5965 10633 45 v 0 7552
+45 1587 v 376 6974 a Fu(CVodeGetWorkSpace)p 10588 7552
+V 0 7596 10633 45 v Black 0 8876 a Fx(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeGetWorkSpace\(cvode)p 24315
+8876 349 45 v 422 w(mem,)h(&lenrw,)g(&leniw\);)p Black
+0 10576 a Fx(Description)p Black 1286 w(The)286 b(function)h
+Fu(CVodeGetWorkSpace)h Fx(returns)d(the)g Fv(cv)-25 b(ode)287
+b Fx(in)-31 b(teger)286 b(and)g(real)g(w)-31 b(orkspace)287
+b(sizes.)p Black 0 12276 a(Argumen)-31 b(ts)p Black Black
+1517 w Fu(cvode)p 9789 12276 V 419 w(mem)p Black 554
+w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 13755 a Fu(lenrw)p Black 2716
+w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(the)g(n)-31
+b(um)g(b)31 b(er)369 b(of)h Fu(realtype)g Fx(v)-61 b(alues)369
+b(in)g(the)h Fv(cv)-25 b(ode)370 b Fx(w)-31 b(orkspace.)p
+Black 6814 15233 a Fu(leniw)p Black 2716 w Fx(\()p Fu(long)582
+b(int)p Fx(\))370 b(the)g(n)-31 b(um)g(b)31 b(er)369
+b(of)h(in)-31 b(teger)370 b(v)-61 b(alues)369 b(in)g(the)h
+Fv(cv)-25 b(ode)370 b Fx(w)-31 b(orkspace.)p Black 0
+16933 a(Return)369 b(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 18633 a Fu(CV)p 8046 18633 V 419 w(SUCCESS)p Black
+973 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfully)g(set.)p Black 6814 20112 a
+Fu(CV)p 8046 20112 V 419 w(MEM)p 10208 20112 V 419 w(NULL)p
+Black 554 w Fx(The)g Fu(cvode)p 18685 20112 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black
+0 21812 a(Notes)p Black 4072 w(In)397 b(terms)h(of)g(the)g(problem)g
+(size)g Fm(N)518 b Fx(and)398 b(maxim)-31 b(um)400 b(metho)31
+b(d)399 b(order)e Fu(maxord)p Fx(,)406 b(the)398 b(actual)h(size)6814
+23141 y(of)370 b(the)f(real)h(w)-31 b(orkspace)370 b(giv)-31
+b(en)370 b(in)g Fu(realtype)g Fx(w)-31 b(ords)369 b(is:)p
+Black 8142 25212 a Fp(\262)p Black 554 w Fx(Base)g(v)-61
+b(alue:)494 b Fu(lenrw)369 b Fx(=)308 b(89+)370 b(\()p
+Fu(maxord+5)p Fx(\))p Fm(N)p Black 8142 26841 a Fp(\262)p
+Black 554 w Fx(With)g Fu(itol)582 b(=)f(CV)p 17409 26841
+V 419 w(SV)p Fx(:)369 b Fu(lenrw)h Fx(=)f Fu(lenrw)h
+Fx(+)p Fm(N)p Black 8142 28470 a Fp(\262)p Black 554
+w Fx(With)g(ro)31 b(ot\257nding)371 b(for)e Fm(N)20384
+28636 y Fk(g)21268 28470 y Fx(functions)h(\(see)g Fp(x)p
+Fx(5.7\):)494 b Fu(lenrw)370 b Fx(=)f Fu(lenrw)p Fx(+3)p
+Fm(N)41110 28636 y Fk(g)6814 30542 y Fx(The)337 b(size)h(of)f(the)h(in)
+-31 b(teger)338 b(w)-31 b(orkspace)338 b(\(without)i(distinction)g(b)31
+b(et)-31 b(w)g(een)338 b Fu(int)f Fx(and)h Fu(long)581
+b(int)p Fx(\))338 b(is:)p Black 8142 32614 a Fp(\262)p
+Black 554 w Fx(Base)369 b(v)-61 b(alue:)494 b Fu(leniw)369
+b Fx(=)308 b(40+)370 b(\()p Fu(maxord+5)p Fx(\))p Fm(N)p
+Black 8142 34243 a Fp(\262)p Black 554 w Fx(With)g Fu(itol)582
+b(=)f(CV)p 17409 34243 V 419 w(SV)p Fx(:)369 b Fu(leniw)h
+Fx(=)f Fu(leniw)h Fx(+)p Fm(N)p Black 8142 35872 a Fp(\262)p
+Black 554 w Fx(With)g(ro)31 b(ot\257nding)371 b(for)e
+Fm(N)20384 36038 y Fk(g)21268 35872 y Fx(functions:)494
+b Fu(leniw)370 b Fx(=)f Fu(leniw)p Fx(+)p Fm(N)35631
+36038 y Fk(g)6814 37944 y Fx(F)-92 b(or)368 b(the)i(default)g(v)-61
+b(alue)370 b(of)g Fu(maxord)p Fx(,)g(the)g(base)f(v)-61
+b(alues)369 b(are:)p Black 8142 40016 a Fp(\262)p Black
+554 w Fx(F)-92 b(or)369 b(the)g(Adams)h(metho)31 b(d:)493
+b Fu(lenrw)370 b Fx(=)308 b(89)247 b(+)f(17)p Fm(N)491
+b Fx(and)369 b Fu(leniw)h Fx(=)307 b(40)247 b(+)f(17)p
+Fm(N)p Black 8142 41645 a Fp(\262)p Black 554 w Fx(F)-92
+b(or)369 b(the)g(BDF)f(metho)31 b(d:)494 b Fu(lenrw)370
+b Fx(=)307 b(89)247 b(+)f(10)p Fm(N)491 b Fx(and)370
+b Fu(leniw)f Fx(=)308 b(40)247 b(+)f(10)p Fm(N)p 0 44196
+10052 45 v 0 45783 45 1587 v 376 45205 a Fu(CVodeGetNumSteps)p
+10007 45783 V 0 45827 10052 45 v Black 0 47106 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetNumSteps\(cvode)p
+23734 47106 349 45 v 422 w(mem,)g(&nsteps\);)p Black
+0 48806 a Fx(Description)p Black 1286 w(The)564 b(function)i
+Fu(CVodeGetNumSteps)g Fx(returns)d(the)h(cum)-31 b(ulativ)g(e)567
+b(n)-31 b(um)g(b)31 b(er)564 b(of)h(in)-31 b(ternal)565
+b(steps)6814 50135 y(tak)-31 b(en)370 b(b)-31 b(y)370
+b(the)f(solv)-31 b(er)370 b(\(total)i(so)d(far\).)p Black
+0 51835 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+9789 51835 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 53314 a Fu(nsteps)p Black 2135 w Fx(\()p Fu(long)582
+b(int)p Fx(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(steps)f(tak)-31
+b(en)370 b(b)-31 b(y)370 b Fv(cv)-25 b(ode)p Fx(.)p Black
+0 55014 a(Return)369 b(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 56714 a Fu(CV)p 8046 56714 V 419 w(SUCCESS)p Black
+973 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfully)g(set.)p Black 6814 58192 a
+Fu(CV)p 8046 58192 V 419 w(MEM)p 10208 58192 V 419 w(NULL)p
+Black 554 w Fx(The)g Fu(cvode)p 18685 58192 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p 0
+60400 11795 45 v 0 61741 45 1341 v 376 61409 a Fu(CVodeGetNumRhsEvals)p
+11750 61741 V 0 61785 11795 45 v Black 0 63137 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetNumRhsEvals\(cvode)p
+25477 63137 349 45 v 422 w(mem,)h(&nfevals\);)p Black
+0 64837 a Fx(Description)p Black 1286 w(The)428 b(function)i
+Fu(CVodeGetNumRhsEvals)g Fx(returns)d(the)h(n)-31 b(um)g(b)31
+b(er)428 b(of)h(calls)g(to)f(the)h(user's)e(righ)-31
+b(t-)6814 66165 y(hand)369 b(side)g(ev)-61 b(aluation)372
+b(function.)p Black 0 67866 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 9789 67866 V 419 w(mem)p Black
+554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 69344 a Fu(nfevals)p Black
+1554 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)g(user's)e
+Fu(f)h Fx(function.)p Black 0 71044 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 6814 72744 a Fu(CV)p 8046
+72744 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 6814 74223 a Fu(CV)p 8046 74223 V 419 w(MEM)p 10208
+74223 V 419 w(NULL)p Black 554 w Fx(The)g Fu(cvode)p
+18685 74223 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 0 75923 a(Notes)p Black
+4072 w(The)267 b Fu(nfevals)g Fx(v)-61 b(alue)268 b(returned)e(b)-31
+b(y)267 b Fu(CVodeGetNumRhsEvals)i Fx(do)31 b(es)266
+b(not)i(accoun)-31 b(t)268 b(for)f(calls)g(made)6814
+77252 y(to)370 b Fu(f)f Fx(from)h(a)f(linear)h(solv)-31
+b(er)370 b(or)f(preconditioner)h(mo)31 b(dule.)p Black
+Black eop
+%%Page: 43 51
+43 50 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(43)p 4000 3144 48001 45 v Black 4000 5965 14701
+45 v 4000 7552 45 1587 v 4376 6974 a Fu(CVodeGetNumLinSolvSetups)p
+18656 7552 V 4000 7596 14701 45 v Black 4000 8990 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetNumLinSolvSetups\(cvode)p
+32382 8990 349 45 v 423 w(mem,)h(&nlinsetups\);)p Black
+4000 10990 a Fx(Description)p Black 1286 w(The)462 b(function)h
+Fu(CVodeGetNumLinSolvSetups)j Fx(returns)460 b(the)i(n)-31
+b(um)g(b)31 b(er)462 b(of)h(calls)f(made)h(to)g(the)10814
+12318 y(linear)370 b(solv)-31 b(er's)370 b(setup)f(function.)p
+Black 4000 14318 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 14318 V 419 w(mem)p Black 1298 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 15982 a Fu(nlinsetups)p Black
+555 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(calls)g(made)g(to)g(the)f(linear)h(solv)-31
+b(er)370 b(setup)f(function.)p Black 4000 17982 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 10814 19982 a Fu(CV)p 12046
+19982 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 21646 a Fu(CV)p 12046 21646 V 419 w(MEM)p
+14208 21646 V 419 w(NULL)p Black 554 w Fx(The)g Fu(cvode)p
+22685 21646 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p 4000 24636 14120 45 v 4000 25976
+45 1341 v 4376 25644 a Fu(CVodeGetNumErrTestFails)p 18075
+25976 V 4000 26020 14120 45 v Black 4000 27487 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetNumErrTestFails\(cvode)p
+31801 27487 349 45 v 423 w(mem,)g(&netfails\);)p Black
+4000 29487 a Fx(Description)p Black 1286 w(The)254 b(function)h
+Fu(CVodeGetNumErrTestFails)i Fx(returns)c(the)g(n)-31
+b(um)g(b)31 b(er)254 b(of)g(lo)31 b(cal)255 b(error)e(test)h(failures)
+10814 30815 y(that)370 b(ha)-31 b(v)g(e)371 b(o)31 b(ccurred.)p
+Black 4000 32815 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 32815 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 34479 a Fu(netfails)p Black
+973 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(error)e(test)i(failures.)p Black 4000
+36479 a(Return)f(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fx(\))g(is)f(one)g(of)p Black 10814 38479
+a Fu(CV)p 12046 38479 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j
+(output)e(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g
+(set.)p Black 10814 40143 a Fu(CV)p 12046 40143 V 419
+w(MEM)p 14208 40143 V 419 w(NULL)p Black 554 w Fx(The)g
+Fu(cvode)p 22685 40143 V 419 w(mem)h Fx(p)31 b(oin)-31
+b(ter)370 b(is)f Fu(NULL)p Fx(.)p 4000 43133 10633 45
+v 4000 44474 45 1341 v 4376 44141 a Fu(CVodeGetLastOrder)p
+14588 44474 V 4000 44518 10633 45 v Black 4000 45984
+a Fx(Call)p Black 4848 w Fu(flag)582 b(=)f(CVodeGetLastOrder\(cvode)p
+28315 45984 349 45 v 422 w(mem,)h(&qlast\);)p Black 4000
+47984 a Fx(Description)p Black 1286 w(The)411 b(function)h
+Fu(CVodeGetLastOrder)h Fx(returns)c(the)i(in)-31 b(tegration)414
+b(metho)31 b(d)412 b(order)e(used)g(during)10814 49312
+y(the)369 b(last)h(in)-31 b(ternal)371 b(step.)p Black
+4000 51312 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+13789 51312 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 10814 52976 a Fu(qlast)p Black 2716 w Fx(\()p Fu(int)p
+Fx(\))370 b(metho)31 b(d)371 b(order)d(used)h(on)g(the)h(last)g(in)-31
+b(ternal)370 b(step.)p Black 4000 54976 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 10814 56976 a Fu(CV)p 12046
+56976 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 58640 a Fu(CV)p 12046 58640 V 419 w(MEM)p
+14208 58640 V 419 w(NULL)p Black 554 w Fx(The)g Fu(cvode)p
+22685 58640 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p 4000 61630 12376 45 v 4000 62971
+45 1341 v 4376 62639 a Fu(CVodeGetCurrentOrder)p 16331
+62971 V 4000 63015 12376 45 v Black 4000 64481 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetCurrentOrder\(cvode)p
+30058 64481 349 45 v 422 w(mem,)h(&qcur\);)p Black 4000
+66481 a Fx(Description)p Black 1286 w(The)297 b(function)i
+Fu(CVodeGetCurrentOrder)g Fx(returns)d(the)i(in)-31 b(tegration)300
+b(metho)31 b(d)298 b(order)e(to)i(b)31 b(e)296 b(used)10814
+67810 y(on)369 b(the)h(next)g(in)-31 b(ternal)370 b(step.)p
+Black 4000 69809 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 69809 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 71473 a Fu(qcur)p Black 3297
+w Fx(\()p Fu(int)p Fx(\))370 b(metho)31 b(d)371 b(order)d(to)i(b)31
+b(e)369 b(used)f(on)i(the)f(next)h(in)-31 b(ternal)371
+b(step.)p Black 4000 73473 a(Return)e(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 10814 75473 a Fu(CV)p 12046 75473 V 419 w(SUCCESS)p
+Black 973 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+10814 77137 a Fu(CV)p 12046 77137 V 419 w(MEM)p 14208
+77137 V 419 w(NULL)p Black 554 w Fx(The)g Fu(cvode)p
+22685 77137 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black Black eop
+%%Page: 44 52
+44 51 bop Black 0 2701 a Fy(44)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 0 5965 10052 45 v 0 7552
+45 1587 v 376 6974 a Fu(CVodeGetLastStep)p 10007 7552
+V 0 7596 10052 45 v Black 0 8894 a Fx(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeGetLastStep\(cvode)p 23734 8894
+349 45 v 422 w(mem,)g(&hlast\);)p Black 0 10702 a Fx(Description)p
+Black 1286 w(The)453 b(function)h Fu(CVodeGetLastStep)h
+Fx(returns)d(the)h(in)-31 b(tegration)456 b(step)d(size)g(tak)-31
+b(en)454 b(on)f(the)g(last)6814 12030 y(in)-31 b(ternal)371
+b(step.)p Black 0 13838 a(Argumen)-31 b(ts)p Black Black
+1517 w Fu(cvode)p 9789 13838 V 419 w(mem)p Black 554
+w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 15406 a Fu(hlast)p Black 2716
+w Fx(\()p Fu(realtype)p Fx(\))371 b(step)e(size)g(tak)-31
+b(en)371 b(on)e(the)h(last)g(in)-31 b(ternal)370 b(step.)p
+Black 0 17214 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 19021 a Fu(CV)p 8046 19021 V 419 w(SUCCESS)p Black
+973 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfully)g(set.)p Black 6814 20589 a
+Fu(CV)p 8046 20589 V 419 w(MEM)p 10208 20589 V 419 w(NULL)p
+Black 554 w Fx(The)g Fu(cvode)p 18685 20589 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p 0
+22973 11795 45 v 0 24560 45 1587 v 376 23982 a Fu(CVodeGetCurrentStep)p
+11750 24560 V 0 24604 11795 45 v Black 0 25902 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetCurrentStep\(cvode)p
+25477 25902 349 45 v 422 w(mem,)h(&hcur\);)p Black 0
+27710 a Fx(Description)p Black 1286 w(The)322 b(function)g
+Fu(CVodeGetCurrentStep)i Fx(returns)d(the)g(in)-31 b(tegration)324
+b(step)e(size)f(to)h(b)31 b(e)321 b(attempted)6814 29038
+y(on)369 b(the)h(next)g(in)-31 b(ternal)370 b(step.)p
+Black 0 30846 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 30846 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 32414 a Fu(hcur)p Black 3297
+w Fx(\()p Fu(realtype)p Fx(\))371 b(step)e(size)g(to)h(b)31
+b(e)369 b(attempted)i(on)f(the)f(next)h(in)-31 b(ternal)371
+b(step.)p Black 0 34222 a(Return)e(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 6814 36029 a Fu(CV)p 8046 36029 V 419 w(SUCCESS)p
+Black 973 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 37598 a Fu(CV)p 8046 37598 V 419 w(MEM)p 10208 37598
+V 419 w(NULL)p Black 554 w Fx(The)g Fu(cvode)p 18685
+37598 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370 b(is)f
+Fu(NULL)p Fx(.)p 0 39982 13539 45 v 0 41568 45 1587 v
+376 40990 a Fu(CVodeGetActualInitStep)p 13494 41568 V
+0 41612 13539 45 v Black 0 42910 a Fx(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeGetActualInitStep\(cvode)p 27220
+42910 349 45 v 423 w(mem,)g(&hinused\);)p Black 0 44718
+a Fx(Description)p Black 1286 w(The)365 b(function)i
+Fu(CVodeGetActualInitStep)i Fx(returns)364 b(the)h(v)-61
+b(alue)366 b(of)g(the)g(in)-31 b(tegration)368 b(step)d(size)6814
+46046 y(used)k(on)g(the)g(\257rst)g(step.)p Black 0 47854
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p 9789
+47854 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p
+Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25
+b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814
+49422 a Fu(hinused)p Black 1554 w Fx(\()p Fu(realtype)p
+Fx(\))371 b(actual)g(v)-61 b(alue)370 b(of)f(initial)j(step)d(size.)p
+Black 0 51230 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 53038 a Fu(CV)p 8046 53038 V 419 w(SUCCESS)p Black
+973 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfully)g(set.)p Black 6814 54606 a
+Fu(CV)p 8046 54606 V 419 w(MEM)p 10208 54606 V 419 w(NULL)p
+Black 554 w Fx(The)g Fu(cvode)p 18685 54606 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black
+0 56413 a(Notes)p Black 4072 w(Ev)-31 b(en)369 b(if)g(the)g(v)-61
+b(alue)369 b(of)f(the)h(initial)i(in)-31 b(tegration)372
+b(step)c(size)g(w)-31 b(as)369 b(sp)31 b(eci\257ed)368
+b(b)-31 b(y)369 b(the)g(user)e(through)6814 57742 y(a)339
+b(call)i(to)f Fu(CVodeSetInitStep)p Fx(,)348 b(this)340
+b(v)-61 b(alue)339 b(migh)-31 b(t)341 b(ha)-31 b(v)g(e)341
+b(b)31 b(een)338 b(c)-31 b(hanged)340 b(b)-31 b(y)340
+b Fv(cv)-25 b(ode)340 b Fx(to)g(ensure)6814 59070 y(that)350
+b(the)e(step)g(size)h(is)f(within)i(the)f(prescrib)31
+b(ed)347 b(b)31 b(ounds)348 b(\()p Fm(h)32085 59236 y
+Fl(min)33914 59070 y Fp(\267)308 b Fm(h)35721 59236 y
+Fl(0)36525 59070 y Fp(\267)f Fm(h)38331 59236 y Fl(max)40020
+59070 y Fx(\),)353 b(or)348 b(to)h(meet)h(the)6814 60399
+y(lo)31 b(cal)371 b(error)d(test.)p 0 62783 11795 45
+v 0 64123 45 1341 v 376 63791 a Fu(CVodeGetCurrentTime)p
+11750 64123 V 0 64167 11795 45 v Black 0 65538 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetCurrentTime\(cvode)p
+25477 65538 349 45 v 422 w(mem,)h(&tcur\);)p Black 0
+67346 a Fx(Description)p Black 1286 w(The)356 b(function)h
+Fu(CVodeGetCurrentTime)h Fx(returns)c(the)i(curren)-31
+b(t)355 b(in)-31 b(ternal)357 b(time)f(reac)-31 b(hed)356
+b(b)-31 b(y)356 b(the)6814 68674 y(solv)-31 b(er.)p Black
+0 70482 a(Argumen)g(ts)p Black Black 1517 w Fu(cvode)p
+9789 70482 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 72050 a Fu(tcur)p Black 3297 w Fx(\()p Fu(realtype)p
+Fx(\))371 b(curren)-31 b(t)369 b(in)-31 b(ternal)371
+b(time)f(reac)-31 b(hed.)p Black 0 73858 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fx(\))g(is)f(one)g(of)p Black 6814 75665 a
+Fu(CV)p 8046 75665 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j
+(output)e(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g
+(set.)p Black 6814 77233 a Fu(CV)p 8046 77233 V 419 w(MEM)p
+10208 77233 V 419 w(NULL)p Black 554 w Fx(The)g Fu(cvode)p
+18685 77233 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black Black eop
+%%Page: 45 53
+45 52 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(45)p 4000 3144 48001 45 v Black 4000 5965 16444
+45 v 4000 7306 45 1341 v 4376 6974 a Fu(CVodeGetNumStabLimOrderReds)p
+20399 7306 V 4000 7350 16444 45 v Black 4000 8702 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetNumStabLimOrderReds\(cvode)p
+34125 8702 349 45 v 423 w(mem,)h(&nslred\);)p Black 4000
+10435 a Fx(Description)p Black 1286 w(The)320 b(function)h
+Fu(CVodeGetNumStabLimOrderReds)j Fx(returns)318 b(the)i(n)-31
+b(um)g(b)31 b(er)320 b(of)g(order)f(reductions)10814
+11764 y(dictated)371 b(b)-31 b(y)369 b(the)h(BDF)e(stabilit)-31
+b(y)372 b(limit)f(detection)g(algorithm)h(\(see)d Fp(x)p
+Fx(3.2\).)p Black 4000 13497 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 13789 13497 V 419 w(mem)p Black
+554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 15008 a Fu(nslred)p Black
+2135 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(order)f(reductions)g(due)g(to)h(stabilit)
+-31 b(y)372 b(limit)f(detection.)p Black 4000 16741 a(Return)e(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 10814 18474 a Fu(CV)p 12046
+18474 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 19986 a Fu(CV)p 12046 19986 V 419 w(MEM)p
+14208 19986 V 419 w(NULL)p Black 554 w Fx(The)g Fu(cvode)p
+22685 19986 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 10814 21498 a Fu(CV)p 12046
+21498 V 419 w(NO)p 13627 21498 V 418 w(SLDET)p Black
+555 w Fx(The)355 b(stabilit)-31 b(y)358 b(limit)g(detection)f
+(algorithm)h(w)-31 b(as)356 b(not)g(activ)-61 b(ated)358
+b(through)e(a)g(call)17435 22826 y(to)370 b Fu(CVodeSetStabLimDet)p
+Fx(.)p 4000 25062 13539 45 v 4000 26403 45 1341 v 4376
+26071 a Fu(CVodeGetTolScaleFactor)p 17494 26403 V 4000
+26447 13539 45 v Black 4000 27799 a Fx(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeGetTolScaleFactor\(cvode)p 31220
+27799 349 45 v 423 w(mem,)g(&tolsfac\);)p Black 4000
+29532 a Fx(Description)p Black 1286 w(The)287 b(function)h
+Fu(CVodeGetTolScaleFactor)i Fx(returns)c(a)h(suggested)h(factor)g(b)-31
+b(y)287 b(whic)-31 b(h)288 b(the)f(user's)10814 30861
+y(tolerances)513 b(should)g(b)31 b(e)511 b(scaled)i(when)f(to)31
+b(o)514 b(m)-31 b(uc)g(h)513 b(accuracy)f(has)h(b)31
+b(een)511 b(requested)h(for)g(some)10814 32189 y(in)-31
+b(ternal)371 b(step.)p Black 4000 33922 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 33922 V 419
+w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 35434
+a Fu(tolsfac)p Black 1554 w Fx(\()p Fu(realtype)p Fx(\))371
+b(suggested)f(scaling)g(factor)h(for)e(user)f(tolerances.)p
+Black 4000 37167 a(Return)h(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+10814 38900 a Fu(CV)p 12046 38900 V 419 w(SUCCESS)p Black
+973 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfully)g(set.)p Black 10814 40411 a
+Fu(CV)p 12046 40411 V 419 w(MEM)p 14208 40411 V 419 w(NULL)p
+Black 554 w Fx(The)g Fu(cvode)p 22685 40411 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p 4000
+42647 11214 45 v 4000 44234 45 1587 v 4376 43656 a Fu
+(CVodeGetErrWeights)p 15169 44234 V 4000 44278 11214
+45 v Black 4000 45558 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeGetErrWeights\(cvode)p 28896 45558 349 45
+v 422 w(mem,)h(eweight\);)p Black 4000 47291 a Fx(Description)p
+Black 1286 w(The)412 b(function)i Fu(CVodeGetErrWeights)g
+Fx(returns)d(the)h(solution)i(error)d(w)-31 b(eigh)g(ts)414
+b(at)f(the)f(curren)-31 b(t)10814 48619 y(time.)494 b(These)369
+b(are)g(the)g(recipro)31 b(cals)370 b(of)f(the)h Fm(W)30453
+48785 y Fk(i)31191 48619 y Fx(of)g(\(3.6\).)p Black 4000
+50352 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+13789 50352 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 10814 51864 a Fu(eweight)p Black 1554 w Fx(\()p
+Fu(N)p 17516 51864 V 419 w(Vector)p Fx(\))370 b(solution)h(error)e(w)
+-31 b(eigh)g(ts)371 b(at)f(the)f(curren)-31 b(t)369 b(time.)p
+Black 4000 53597 a(Return)g(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+10814 55330 a Fu(CV)p 12046 55330 V 419 w(SUCCESS)p Black
+973 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfully)g(set.)p Black 10814 56842 a
+Fu(CV)p 12046 56842 V 419 w(MEM)p 14208 56842 V 419 w(NULL)p
+Black 554 w Fx(The)g Fu(cvode)p 22685 56842 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black
+4000 59352 a(Notes)p Black 5200 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+
+
+ at endspecial Ff(!)1497 b Fx(The)370 b(user)e(m)-31 b(ust)370
+b(allo)31 b(cate)371 b(memory)g(for)e Fu(eweight)p Fx(.)p
+4000 61844 13539 45 v 4000 63184 45 1341 v 4376 62852
+a Fu(CVodeGetEstLocalErrors)p 17494 63184 V 4000 63228
+13539 45 v Black 4000 64581 a Fx(Call)p Black 4848 w
+Fu(flag)582 b(=)f(CVodeGetEstLocalErrors\(cvode)p 31220
+64581 349 45 v 423 w(mem,)g(ele\);)p Black 4000 66314
+a Fx(Description)p Black 1286 w(The)369 b(function)i
+Fu(CVodeGetEstLocalErrors)h Fx(returns)c(the)i(v)-31
+b(ector)370 b(of)g(estimated)g(lo)31 b(cal)371 b(errors.)p
+Black 4000 68047 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 68047 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 69558 a Fu(ele)p Black 3878
+w Fx(\()p Fu(N)p 17516 69558 V 419 w(Vector)p Fx(\))370
+b(estimated)h(lo)31 b(cal)371 b(errors.)p Black 4000
+71291 a(Return)e(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fx(\))g(is)f(one)g(of)p Black 10814 73024
+a Fu(CV)p 12046 73024 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j
+(output)e(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g
+(set.)p Black 10814 74536 a Fu(CV)p 12046 74536 V 419
+w(MEM)p 14208 74536 V 419 w(NULL)p Black 554 w Fx(The)g
+Fu(cvode)p 22685 74536 V 419 w(mem)h Fx(p)31 b(oin)-31
+b(ter)370 b(is)f Fu(NULL)p Fx(.)p Black 4000 77046 a(Notes)p
+Black 5200 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Ff(!)1497
+b Fx(The)370 b(user)e(m)-31 b(ust)370 b(allo)31 b(cate)371
+b(memory)g(for)e Fu(ele)p Fx(.)p Black Black eop
+%%Page: 46 54
+46 53 bop Black 0 2701 a Fy(46)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 0 5965 14120 45 v 0 7552
+45 1587 v 376 6974 a Fu(CVodeGetIntegratorStats)p 14075
+7552 V 0 7596 14120 45 v Black 0 9165 a Fx(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVodeGetIntegratorStats\()t(cvode)p
+27805 9165 349 45 v 419 w(mem,)h(&nsteps,)g(&nfevals,)24830
+10493 y(&nlinsetups,)h(&netfails,)f(&qlast,)g(&qcur,)24830
+11821 y(&hinused,)g(&hlast,)g(&hcur,)g(&tcur\);)p Black
+0 13798 a Fx(Description)p Black 1286 w(The)340 b(function)h
+Fu(CVodeGetIntegratorStats)i Fx(returns)338 b(the)i Fv(cv)-25
+b(ode)340 b Fx(in)-31 b(tegrator)342 b(statistics)f(as)f(a)6814
+15126 y(group.)p Black 0 17153 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 9789 17153 V 419 w(mem)p Black
+1298 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 18831 a Fu(nsteps)p Black 2879
+w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(steps)f(tak)-31 b(en)370 b(b)-31 b(y)370
+b Fv(cv)-25 b(ode)p Fx(.)p Black 6814 20508 a Fu(nfevals)p
+Black 2298 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)f(user's)g
+Fu(f)g Fx(function.)p Black 6814 22186 a Fu(nlinsetups)p
+Black 555 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(calls)g(made)g(to)g(the)f(linear)h(solv)-31
+b(er)370 b(setup)f(function.)p Black 6814 23864 a Fu(netfails)p
+Black 1717 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(error)e(test)i(failures.)p
+Black 6814 25541 a Fu(qlast)p Black 3460 w Fx(\()p Fu(int)p
+Fx(\))g(metho)31 b(d)370 b(order)f(used)g(on)g(the)g(last)i(in)-31
+b(ternal)370 b(step.)p Black 6814 27219 a Fu(qcur)p Black
+4041 w Fx(\()p Fu(int)p Fx(\))g(metho)31 b(d)370 b(order)f(to)h(b)31
+b(e)369 b(used)f(on)i(the)f(next)h(in)-31 b(ternal)370
+b(step.)p Black 6814 28897 a Fu(hinused)p Black 2298
+w Fx(\()p Fu(realtype)p Fx(\))h(actual)g(v)-61 b(alue)370
+b(of)f(initial)j(step)d(size.)p Black 6814 30574 a Fu(hlast)p
+Black 3460 w Fx(\()p Fu(realtype)p Fx(\))i(step)e(size)g(tak)-31
+b(en)371 b(on)e(the)h(last)g(in)-31 b(ternal)370 b(step.)p
+Black 6814 32252 a Fu(hcur)p Black 4041 w Fx(\()p Fu(realtype)p
+Fx(\))h(step)e(size)g(to)h(b)31 b(e)369 b(attempted)i(on)f(the)f(next)h
+(in)-31 b(ternal)370 b(step.)p Black 6814 33930 a Fu(tcur)p
+Black 4041 w Fx(\()p Fu(realtype)p Fx(\))h(curren)-31
+b(t)369 b(in)-31 b(ternal)371 b(time)f(reac)-31 b(hed.)p
+Black 0 35956 a(Return)369 b(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 37983 a Fu(CV)p 8046 37983 V 419 w(SUCCESS)p Black
+973 w Fx(the)g(optional)j(output)e(v)-61 b(alues)370
+b(ha)-31 b(v)g(e)370 b(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 39661 a Fu(CV)p 8046 39661 V 419 w(MEM)p 10208
+39661 V 419 w(NULL)p Black 554 w Fx(the)f Fu(cvode)p
+18316 39661 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p 0 42736 15863 45 v 0 44077 45
+1341 v 376 43745 a Fu(CVodeGetNumNonlinSolvIters)p 15818
+44077 V 0 44121 15863 45 v Black 0 45601 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetNumNonlinSolvIters\(cvode)p
+29544 45601 349 45 v 423 w(mem,)h(&nniters\);)p Black
+0 47628 a Fx(Description)p Black 1286 w(The)413 b(function)i
+Fu(CVodeGetNumNonlinSolvIters)i Fx(returns)412 b(the)h(n)-31
+b(um)g(b)31 b(er)413 b(of)h(nonlinear)g(\(func-)6814
+48956 y(tional)371 b(or)e(Newton\))i(iterations)h(p)31
+b(erformed.)p Black 0 50983 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 9789 50983 V 419 w(mem)p Black
+554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 52661 a Fu(nniters)p Black
+1554 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(nonlinear)h(iterations)g(p)31
+b(erformed.)p Black 0 54688 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 6814 56715 a Fu(CV)p 8046 56715 V 419 w(SUCCESS)p
+Black 973 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 58392 a Fu(CV)p 8046 58392 V 419 w(MEM)p 10208 58392
+V 419 w(NULL)p Black 554 w Fx(The)g Fu(cvode)p 18685
+58392 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370 b(is)f
+Fu(NULL)p Fx(.)p 0 61468 18188 45 v 0 62808 45 1341 v
+376 62476 a Fu(CVodeGetNumNonlinSolvConvFails)p 18143
+62808 V 0 62852 18188 45 v Black 0 64332 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetNumNonlinSolvConvFails\(cvode)p
+31868 64332 349 45 v 424 w(mem,)h(&nncfails\);)p Black
+0 66359 a Fx(Description)p Black 1286 w(The)549 b(function)h
+Fu(CVodeGetNumNonlinSolvConvFails)j Fx(returns)547 b(the)i(n)-31
+b(um)g(b)31 b(er)548 b(of)i(nonlinear)6814 67688 y(con)-31
+b(v)g(ergence)370 b(failures)g(that)g(ha)-31 b(v)g(e)370
+b(o)31 b(ccurred.)p Black 0 69715 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 9789 69715 V 419 w(mem)p
+Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 71392
+a Fu(nncfails)p Black 973 w Fx(\()p Fu(long)582 b(int)p
+Fx(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(nonlinear)h(con)-31
+b(v)g(ergence)370 b(failures.)p Black 0 73419 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 6814 75446 a Fu(CV)p 8046
+75446 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 6814 77124 a Fu(CV)p 8046 77124 V 419 w(MEM)p 10208
+77124 V 419 w(NULL)p Black 554 w Fx(The)g Fu(cvode)p
+18685 77124 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black Black eop
+%%Page: 47 55
+47 54 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(47)p 4000 3144 48001 45 v Black 4000 5965 14120
+45 v 4000 7306 45 1341 v 4376 6974 a Fu(CVodeGetNonlinSolvStats)p
+18075 7306 V 4000 7350 14120 45 v Black 4000 8727 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetNonlinSolvStats\(cvode)p
+31801 8727 349 45 v 423 w(mem,)g(&nniters,)i(&nncfails\);)p
+Black 4000 10549 a Fx(Description)p Black 1286 w(The)263
+b(function)h Fu(CVodeGetNonlinSolvStats)i Fx(returns)c(the)h
+Fv(cv)-25 b(ode)264 b Fx(nonlinear)g(solv)-31 b(er)263
+b(statistics)10814 11877 y(as)369 b(a)h(group.)p Black
+4000 13698 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+13789 13698 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 10814 15273 a Fu(nniters)p Black 1554 w Fx(\()p
+Fu(long)582 b(int)p Fx(\))370 b(n)-31 b(um)g(b)31 b(er)369
+b(of)h(nonlinear)h(iterations)g(p)31 b(erformed.)p Black
+10814 16848 a Fu(nncfails)p Black 973 w Fx(\()p Fu(long)582
+b(int)p Fx(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(nonlinear)h(con)
+-31 b(v)g(ergence)370 b(failures.)p Black 4000 18669
+a(Return)f(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fx(\))g(is)f(one)g(of)p Black 10814 20491
+a Fu(CV)p 12046 20491 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j
+(output)e(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g
+(set.)p Black 10814 22065 a Fu(CV)p 12046 22065 V 419
+w(MEM)p 14208 22065 V 419 w(NULL)p Black 554 w Fx(The)g
+Fu(cvode)p 22685 22065 V 419 w(mem)h Fx(p)31 b(oin)-31
+b(ter)370 b(is)f Fu(NULL)p Fx(.)4000 25476 y Fy(Linear)424
+b(solv)-35 b(er)425 b(optional)g(output)h(functions)4000
+27566 y Fx(F)-92 b(or)418 b(eac)-31 b(h)419 b(of)g(the)f(linear)h
+(system)g(solv)-31 b(er)419 b(mo)31 b(dules,)432 b(there)418
+b(are)g(v)-61 b(arious)419 b(optional)i(outputs)e(that)h(describ)31
+b(e)418 b(the)4000 28894 y(p)31 b(erformance)369 b(of)h(the)g(mo)31
+b(dule.)493 b(The)370 b(functions)g(a)-31 b(v)-61 b(ailable)372
+b(to)e(access)e(these)h(are)g(describ)31 b(ed)369 b(b)31
+b(elo)-31 b(w.)4000 31930 y Fy(Dense)492 b(Linear)f(solv)-35
+b(er.)1107 b Fx(The)426 b(follo)-31 b(wing)431 b(optional)e(outputs)f
+(are)e(a)-31 b(v)-61 b(ailable)430 b(from)d(the)g Fv(cvdense)g
+Fx(mo)31 b(dule:)4000 33258 y(w)-31 b(orkspace)366 b(requiremen)-31
+b(ts,)366 b(n)-31 b(um)g(b)31 b(er)365 b(of)g(calls)h(to)f(the)g
+(Jacobian)h(routine,)h(n)-31 b(um)g(b)31 b(er)365 b(of)g(calls)h(to)f
+(the)g(righ)-31 b(t-hand)4000 34586 y(side)507 b(routine)g(for)g
+(\257nite-di\256erence)h(Jacobian)g(appro)-31 b(ximation,)546
+b(and)507 b(last)h(return)e(v)-61 b(alue)507 b(from)h(a)f
+Fv(cvdense)4000 35915 y Fx(function.)p 4000 37917 11795
+45 v 4000 39503 45 1587 v 4376 38925 a Fu(CVDenseGetWorkSpace)p
+15750 39503 V 4000 39547 11795 45 v Black 4000 40852
+a Fx(Call)p Black 4848 w Fu(flag)582 b(=)f(CVDenseGetWorkSpace\(cvode)p
+29477 40852 349 45 v 422 w(mem,)h(&lenrwD,)g(&leniwD\);)p
+Black 4000 42673 a Fx(Description)p Black 1286 w(The)338
+b(function)i Fu(CVDenseGetWorkSpace)g Fx(returns)d(the)i
+Fv(cvdense)f Fx(real)h(and)f(in)-31 b(teger)339 b(w)-31
+b(orkspace)10814 44002 y(sizes.)p Black 4000 45823 a(Argumen)g(ts)p
+Black Black 1517 w Fu(cvode)p 13789 45823 V 419 w(mem)p
+Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 47398
+a Fu(lenrwD)p Black 2135 w Fx(\()p Fu(long)582 b(int)p
+Fx(\))370 b(the)g(n)-31 b(um)g(b)31 b(er)369 b(of)h Fu(realtype)g
+Fx(v)-61 b(alues)369 b(in)g(the)h Fv(cvdense)g Fx(w)-31
+b(orkspace.)p Black 10814 48973 a Fu(leniwD)p Black 2135
+w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(the)g(n)-31
+b(um)g(b)31 b(er)369 b(of)h(in)-31 b(teger)370 b(v)-61
+b(alues)369 b(in)g(the)h Fv(cvdense)g Fx(w)-31 b(orkspace.)p
+Black 4000 50794 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 10814 52615 a Fu(CVDENSE)p 14951 52615 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+10814 54190 a Fu(CVDENSE)p 14951 54190 V 419 w(MEM)p
+17113 54190 V 419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p
+26172 54190 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fx(.)p Black 10814 55765 a Fu(CVDENSE)p
+14951 55765 V 419 w(LMEM)p 17694 55765 V 419 w(NULL)p
+Black 555 w Fx(The)f Fv(cvdense)h Fx(linear)g(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 57586 a(Notes)p Black 4072 w(In)326 b(terms)g(of)h(the)g
+(problem)g(size)f Fm(N)121 b Fx(,)335 b(the)327 b(actual)h(size)e(of)h
+(the)f(real)h(w)-31 b(orkspace)327 b(is)g(2)p Fm(N)46528
+57185 y Fl(2)47351 57586 y Fu(realtype)10814 58915 y
+Fx(w)-31 b(ords,)370 b(and)f(the)h(actual)h(size)e(of)g(the)h(in)-31
+b(teger)370 b(w)-31 b(orkspace)370 b(is)f Fm(N)490 b
+Fx(in)-31 b(teger)370 b(w)-31 b(ords.)p 4000 61342 12957
+45 v 4000 62682 45 1341 v 4376 62350 a Fu(CVDenseGetNumJacEvals)p
+16913 62682 V 4000 62726 12957 45 v Black 4000 64104
+a Fx(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVDenseGetNumJacEvals\(cvode)p 30639 64104 349 45 v
+422 w(mem,)h(&njevalsD\);)p Black 4000 65925 a Fx(Description)p
+Black 1286 w(The)342 b(function)h Fu(CVDenseGetNumJacEvals)h
+Fx(returns)d(the)h(n)-31 b(um)g(b)31 b(er)341 b(of)i(calls)f(to)g(the)g
+(dense)f(Jaco-)10814 67253 y(bian)370 b(appro)-31 b(ximation)373
+b(function.)p Black 4000 69075 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 13789 69075 V 419 w(mem)p Black
+554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 70649 a Fu(njevalsD)p Black
+973 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(the)g(n)-31
+b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)f(Jacobian)i(function.)p
+Black 4000 72471 a(Return)e(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+10814 74292 a Fu(CVDENSE)p 14951 74292 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+10814 75867 a Fu(CVDENSE)p 14951 75867 V 419 w(MEM)p
+17113 75867 V 419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p
+26172 75867 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fx(.)p Black 10814 77442 a Fu(CVDENSE)p
+14951 77442 V 419 w(LMEM)p 17694 77442 V 419 w(NULL)p
+Black 555 w Fx(The)f Fv(cvdense)h Fx(linear)g(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black Black eop
+%%Page: 48 56
+48 55 bop Black 0 2701 a Fy(48)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 0 5965 12957 45 v 0 7306
+45 1341 v 376 6974 a Fu(CVDenseGetNumRhsEvals)p 12913
+7306 V 0 7350 12957 45 v Black 0 8702 a Fx(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVDenseGetNumRhsEvals\(cvode)p
+26639 8702 349 45 v 422 w(mem,)h(&nfevalsD\);)p Black
+0 10424 a Fx(Description)p Black 1286 w(The)390 b(function)i
+Fu(CVDenseGetNumRhsEvals)g Fx(returns)d(the)i(n)-31 b(um)g(b)31
+b(er)390 b(of)g(calls)h(to)g(the)f(user)f(righ)-31 b(t-)6814
+11752 y(hand)369 b(side)g(function)i(due)e(to)h(the)f(\257nite)h
+(di\256erence)f(dense)f(Jacobian)j(appro)-31 b(ximation.)p
+Black 0 13474 a(Argumen)g(ts)p Black Black 1517 w Fu(cvode)p
+9789 13474 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 14974 a Fu(nfevalsD)p Black 973 w Fx(\()p
+Fu(long)582 b(int)p Fx(\))370 b(the)g(n)-31 b(um)g(b)31
+b(er)369 b(of)h(calls)g(to)g(the)f(user)f(righ)-31 b(t-hand)371
+b(side)e(function.)p Black 0 16696 a(Return)g(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 6814 18418 a Fu(CVDENSE)p 10951 18418 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 19918 a Fu(CVDENSE)p 10951 19918 V 419 w(MEM)p 13113
+19918 V 419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p
+22172 19918 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fx(.)p Black 6814 21419 a Fu(CVDENSE)p
+10951 21419 V 419 w(LMEM)p 13694 21419 V 419 w(NULL)p
+Black 555 w Fx(The)f Fv(cvdense)h Fx(linear)g(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 0 23140 a(Notes)p Black 4072 w(The)386 b(v)-61
+b(alue)387 b Fu(nfevalsD)g Fx(is)f(incremen)-31 b(ted)387
+b(only)g(if)f(the)h(default)g Fu(CVDenseDQJac)h Fx(di\256erence)d(quo-)
+6814 24469 y(tien)-31 b(t)371 b(function)f(is)f(used.)p
+0 26695 11214 45 v 0 28282 45 1587 v 376 27703 a Fu(CVDenseGetLastFlag)
+p 11169 28282 V 0 28326 11214 45 v Black 0 29605 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVDenseGetLastFlag\(cvode)p
+24896 29605 349 45 v 422 w(mem,)h(&lsflag\);)p Black
+0 31327 a Fx(Description)p Black 1286 w(The)538 b(function)h
+Fu(CVDenseGetLastFlag)h Fx(returns)d(the)g(last)i(return)e(v)-61
+b(alue)538 b(from)g(a)g Fv(cvdense)6814 32655 y Fx(routine.)p
+Black 0 34377 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 34377 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 35877 a Fu(lsflag)p Black 2135
+w Fx(\()p Fu(int)p Fx(\))370 b(the)g(v)-61 b(alue)370
+b(of)f(the)h(last)g(return)e(\260ag)i(from)g(a)f Fv(cvdense)h
+Fx(function.)p Black 0 37599 a(Return)f(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 6814 39321 a Fu(CVDENSE)p 10951 39321 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 40821 a Fu(CVDENSE)p 10951 40821 V 419 w(MEM)p 13113
+40821 V 419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p
+22172 40821 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fx(.)p Black 6814 42322 a Fu(CVDENSE)p
+10951 42322 V 419 w(LMEM)p 13694 42322 V 419 w(NULL)p
+Black 555 w Fx(The)f Fv(cvdense)h Fx(linear)g(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 0 44043 a(Notes)p Black 4072 w(If)526 b(the)g Fv(cvdense)g
+Fx(setup)g(function)h(failed)h(\()p Fu(CVode)f Fx(returned)e
+Fu(CV)p 35604 44043 V 419 w(LSETUP)p 39509 44043 V 419
+w(FAIL)p Fx(\),)i(the)f(v)-61 b(alue)6814 45372 y Fu(lsflag)419
+b Fx(is)g(equal)h(to)f(the)g(column)h(index)f(\(n)-31
+b(um)g(b)31 b(ered)419 b(from)g(one\))h(at)f(whic)-31
+b(h)420 b(a)f(zero)f(diagonal)6814 46700 y(elemen)-31
+b(t)371 b(w)-31 b(as)369 b(encoun)-31 b(tered)370 b(during)f(the)h(LU)f
+(factorization)k(of)c(the)h(dense)e(Jacobian)j(matrix.)0
+49935 y Fy(Band)575 b(Linear)h(solv)-35 b(er.)1107 b
+Fx(The)500 b(follo)-31 b(wing)505 b(optional)e(outputs)e(are)g(a)-31
+b(v)-61 b(ailable)503 b(from)e(the)g Fv(cvband)f Fx(mo)31
+b(dule:)0 51263 y(w)-31 b(orkspace)366 b(requiremen)-31
+b(ts,)366 b(n)-31 b(um)g(b)31 b(er)365 b(of)g(calls)h(to)f(the)g
+(Jacobian)h(routine,)h(n)-31 b(um)g(b)31 b(er)365 b(of)g(calls)h(to)f
+(the)g(righ)-31 b(t-hand)0 52592 y(side)541 b(routine)h(for)f
+(\257nite-di\256erence)h(Jacobian)h(appro)-31 b(ximation,)588
+b(and)542 b(last)g(return)f(v)-61 b(alue)541 b(from)h(a)g
+Fv(cvband)0 53920 y Fx(function.)p 0 55746 11214 45 v
+0 57333 45 1587 v 376 56755 a Fu(CVBandGetWorkSpace)p
+11169 57333 V 0 57377 11214 45 v Black 0 58656 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVBandGetWorkSpace\(cvode)p
+24896 58656 349 45 v 422 w(mem,)h(&lenrwB,)g(&leniwB\);)p
+Black 0 60378 a Fx(Description)p Black 1286 w(The)450
+b(function)g Fu(CVBandGetWorkSpace)i Fx(returns)c(the)i
+Fv(cvband)f Fx(real)h(and)g(in)-31 b(teger)450 b(w)-31
+b(orkspace)6814 61707 y(sizes.)p Black 0 63428 a(Argumen)g(ts)p
+Black Black 1517 w Fu(cvode)p 9789 63428 V 419 w(mem)p
+Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 64929
+a Fu(lenrwB)p Black 2135 w Fx(\()p Fu(long)582 b(int)p
+Fx(\))370 b(the)g(n)-31 b(um)g(b)31 b(er)369 b(of)h Fu(realtype)g
+Fx(v)-61 b(alues)369 b(in)g(the)h Fv(cvband)f Fx(w)-31
+b(orkspace.)p Black 6814 66429 a Fu(leniwB)p Black 2135
+w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(the)g(n)-31
+b(um)g(b)31 b(er)369 b(of)h(in)-31 b(teger)370 b(v)-61
+b(alues)369 b(in)g(the)h Fv(cvband)f Fx(w)-31 b(orkspace.)p
+Black 0 68151 a(Return)369 b(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 69872 a Fu(CVBAND)p 10370 69872 V 419 w(SUCCESS)p
+Black 1554 w Fx(The)h(optional)i(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)368 b(successfully)i(set.)p Black
+6814 71373 a Fu(CVBAND)p 10370 71373 V 419 w(MEM)p 12532
+71373 V 419 w(NULL)p Black 1135 w Fx(The)g Fu(cvode)p
+21591 71373 V 419 w(mem)f Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 6814 72873 a Fu(CVBAND)p
+10370 72873 V 419 w(LMEM)p 13113 72873 V 419 w(NULL)p
+Black 554 w Fx(The)h Fv(cvband)f Fx(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 0 74595 a(Notes)p Black 4072 w(In)397 b(terms)g(of)h(the)g
+(problem)g(size)f Fm(N)519 b Fx(and)397 b(Jacobian)i(half-bandwidths,)
+408 b(the)397 b(actual)i(size)f(of)g(the)6814 75923 y(real)359
+b(w)-31 b(orkspace)359 b(is)f(\(2)h Fu(mupper)p Fx(+3)h
+Fu(mlower)f Fx(+2\))184 b Fm(N)480 b Fu(realtype)360
+b Fx(w)-31 b(ords,)361 b(and)d(the)h(actual)h(size)e(of)6814
+77252 y(the)369 b(in)-31 b(teger)371 b(w)-31 b(orkspace)370
+b(is)f Fm(N)490 b Fx(in)-31 b(teger)370 b(w)-31 b(ords.)p
+Black Black eop
+%%Page: 49 57
+49 56 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(49)p 4000 3144 48001 45 v Black 4000 5965 12376
+45 v 4000 7306 45 1341 v 4376 6974 a Fu(CVBandGetNumJacEvals)p
+16331 7306 V 4000 7350 12376 45 v Black 4000 8810 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVBandGetNumJacEvals\(cvode)p
+30058 8810 349 45 v 422 w(mem,)h(&njevalsB\);)p Black
+4000 10796 a Fx(Description)p Black 1286 w(The)412 b(function)h
+Fu(CVBandGetNumJacEvals)i Fx(returns)410 b(the)i(n)-31
+b(um)g(b)31 b(er)412 b(of)h(calls)f(to)h(the)f(banded)g(Ja-)10814
+12124 y(cobian)370 b(appro)-31 b(ximation)373 b(function.)p
+Black 4000 14110 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 14110 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 15767 a Fu(njevalsB)p Black
+973 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(the)g(n)-31
+b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)f(Jacobian)i(function.)p
+Black 4000 17754 a(Return)e(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+10814 19740 a Fu(CVBAND)p 14370 19740 V 419 w(SUCCESS)p
+Black 1554 w Fx(The)h(optional)i(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)368 b(successfully)i(set.)p Black
+10814 21397 a Fu(CVBAND)p 14370 21397 V 419 w(MEM)p 16532
+21397 V 419 w(NULL)p Black 1135 w Fx(The)g Fu(cvode)p
+25591 21397 V 419 w(mem)f Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 10814 23054 a Fu(CVBAND)p
+14370 23054 V 419 w(LMEM)p 17113 23054 V 419 w(NULL)p
+Black 554 w Fx(The)h Fv(cvband)f Fx(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+4000 26001 12376 45 v 4000 27341 45 1341 v 4376 27009
+a Fu(CVBandGetNumRhsEvals)p 16331 27341 V 4000 27385
+12376 45 v Black 4000 28845 a Fx(Call)p Black 4848 w
+Fu(flag)582 b(=)f(CVBandGetNumRhsEvals\(cvode)p 30058
+28845 349 45 v 422 w(mem,)h(&nfevalsB\);)p Black 4000
+30831 a Fx(Description)p Black 1286 w(The)443 b(function)h
+Fu(CVBandGetNumRhsEvals)i Fx(returns)c(the)h(n)-31 b(um)g(b)31
+b(er)442 b(of)i(calls)f(to)h(the)f(user)f(righ)-31 b(t-)10814
+32159 y(hand)369 b(side)g(function)i(due)e(to)h(the)f(\257nite)h
+(di\256erence)f(banded)g(Jacobian)i(appro)-31 b(ximation.)p
+Black 4000 34145 a(Argumen)g(ts)p Black Black 1517 w
+Fu(cvode)p 13789 34145 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 35803 a Fu(nfevalsB)p Black
+973 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(the)g(n)-31
+b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)f(user)f(righ)-31
+b(t-hand)371 b(side)e(function.)p Black 4000 37789 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 10814 39775 a Fu(CVBAND)p
+14370 39775 V 419 w(SUCCESS)p Black 1554 w Fx(The)h(optional)i(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 41432 a Fu(CVBAND)p 14370 41432 V 419 w(MEM)p
+16532 41432 V 419 w(NULL)p Black 1135 w Fx(The)g Fu(cvode)p
+25591 41432 V 419 w(mem)f Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 10814 43089 a Fu(CVBAND)p
+14370 43089 V 419 w(LMEM)p 17113 43089 V 419 w(NULL)p
+Black 554 w Fx(The)h Fv(cvband)f Fx(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 45075 a(Notes)p Black 4072 w(The)269 b(v)-61
+b(alue)268 b Fu(nfevalsB)i Fx(is)e(incremen)-31 b(ted)269
+b(only)h(if)f(the)f(default)i Fu(CVBandDQJac)g Fx(di\256erence)e
+(quotien)-31 b(t)10814 46404 y(function)371 b(is)e(used.)p
+4000 49350 10633 45 v 4000 50937 45 1587 v 4376 50359
+a Fu(CVBandGetLastFlag)p 14588 50937 V 4000 50981 10633
+45 v Black 4000 52368 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVBandGetLastFlag\(cvode)p 28315 52368 349 45 v
+422 w(mem,)h(&lsflag\);)p Black 4000 54354 a Fx(Description)p
+Black 1286 w(The)401 b(function)h Fu(CVBandGetLastFlag)h
+Fx(returns)d(the)g(last)i(return)e(v)-61 b(alue)401 b(from)g(a)g
+Fv(cvband)g Fx(rou-)10814 55682 y(tine.)p Black 4000
+57669 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+13789 57669 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 10814 59326 a Fu(lsflag)p Black 2135 w Fx(\()p
+Fu(int)p Fx(\))370 b(the)g(v)-61 b(alue)370 b(of)f(the)h(last)g(return)
+e(\260ag)i(from)g(a)f Fv(cvband)h Fx(function.)p Black
+4000 61312 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+10814 63298 a Fu(CVBAND)p 14370 63298 V 419 w(SUCCESS)p
+Black 1554 w Fx(The)h(optional)i(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)368 b(successfully)i(set.)p Black
+10814 64955 a Fu(CVBAND)p 14370 64955 V 419 w(MEM)p 16532
+64955 V 419 w(NULL)p Black 1135 w Fx(The)g Fu(cvode)p
+25591 64955 V 419 w(mem)f Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 10814 66612 a Fu(CVBAND)p
+14370 66612 V 419 w(LMEM)p 17113 66612 V 419 w(NULL)p
+Black 554 w Fx(The)h Fv(cvband)f Fx(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 68598 a(Notes)p Black 4072 w(If)558 b(the)g
+Fv(cvband)g Fx(setup)g(sunction)h(failed)h(\()p Fu(CVode)f
+Fx(returned)e Fu(CV)p 39539 68598 V 419 w(LSETUP)p 43444
+68598 V 420 w(FAIL)p Fx(\),)i(the)f(v)-61 b(alue)10814
+69927 y Fu(lsflag)419 b Fx(is)g(equal)h(to)f(the)g(column)h(index)f
+(\(n)-31 b(um)g(b)31 b(ered)419 b(from)g(one\))h(at)f(whic)-31
+b(h)420 b(a)f(zero)f(diagonal)10814 71255 y(elemen)-31
+b(t)356 b(w)-31 b(as)355 b(encoun)-31 b(tered)356 b(during)f(the)g(LU)f
+(factorization)k(of)e(the)f(banded)g(Jacobian)h(matrix.)4000
+75210 y Fy(Diagonal)407 b(Linear)f(solv)-35 b(er.)1107
+b Fx(The)354 b(follo)-31 b(wing)357 b(optional)f(outputs)f(are)e(a)-31
+b(v)-61 b(ailable)356 b(from)e(the)g Fv(cvdia)-25 b(g)353
+b Fx(mo)31 b(dule:)4000 76539 y(w)-31 b(orkspace)333
+b(requiremen)-31 b(ts,)341 b(n)-31 b(um)g(b)31 b(er)333
+b(of)g(calls)g(to)g(the)g(righ)-31 b(t-hand)334 b(side)f(routine)g(for)
+f(\257nite-di\256erence)h(Jacobian)4000 77867 y(appro)-31
+b(ximation,)373 b(and)d(last)g(return)e(v)-61 b(alue)370
+b(from)g(a)f Fv(cvdia)-25 b(g)369 b Fx(function.)p Black
+Black eop
+%%Page: 50 58
+50 57 bop Black 0 2701 a Fy(50)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 0 5965 11214 45 v 0 7552
+45 1587 v 376 6974 a Fu(CVDiagGetWorkSpace)p 11169 7552
+V 0 7596 11214 45 v Black 0 8876 a Fx(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVDiagGetWorkSpace\(cvode)p 24896
+8876 349 45 v 422 w(mem,)h(&lenrwDI,)g(&leniwDI\);)p
+Black 0 10595 a Fx(Description)p Black 1286 w(The)483
+b(function)h Fu(CVDiagGetWorkSpace)h Fx(returns)d(the)h
+Fv(cvdia)-25 b(g)483 b Fx(real)g(and)g(in)-31 b(teger)484
+b(w)-31 b(orkspace)6814 11923 y(sizes.)p Black 0 13642
+a(Argumen)g(ts)p Black Black 1517 w Fu(cvode)p 9789 13642
+V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 15140
+a Fu(lenrwDI)p Black 1554 w Fx(\()p Fu(long)582 b(int)p
+Fx(\))370 b(the)g(n)-31 b(um)g(b)31 b(er)369 b(of)h Fu(realtype)g
+Fx(v)-61 b(alues)369 b(in)g(the)h Fv(cvdia)-25 b(g)369
+b Fx(w)-31 b(orkspace.)p Black 6814 16638 a Fu(leniwDI)p
+Black 1554 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(the)g(n)-31
+b(um)g(b)31 b(er)369 b(of)h(in)-31 b(teger)370 b(v)-61
+b(alues)369 b(in)g(the)h Fv(cvdia)-25 b(g)369 b Fx(w)-31
+b(orkspace.)p Black 0 18357 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 6814 20076 a Fu(CVDIAG)p 10370 20076 V 419 w(SUCCESS)p
+Black 1554 w Fx(The)h(optional)i(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)368 b(successfully)i(set.)p Black
+6814 21574 a Fu(CVDIAG)p 10370 21574 V 419 w(MEM)p 12532
+21574 V 419 w(NULL)p Black 1135 w Fx(The)g Fu(cvode)p
+21591 21574 V 419 w(mem)f Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 6814 23072 a Fu(CVDIAG)p
+10370 23072 V 419 w(LMEM)p 13113 23072 V 419 w(NULL)p
+Black 554 w Fx(The)h Fv(cvdia)-25 b(g)369 b Fx(linear)h(solv)-31
+b(er)369 b(has)h(not)f(b)31 b(een)369 b(initialized.)p
+Black 0 24791 a(Notes)p Black 4072 w(In)357 b(terms)h(of)g(the)g
+(problem)h(size)e Fm(N)121 b Fx(,)361 b(the)d(actual)h(size)f(of)g(the)
+g(real)g(w)-31 b(orkspace)359 b(is)f(3)p Fm(N)479 b Fu(realtype)6814
+26120 y Fx(w)-31 b(ords.)p 0 28344 12376 45 v 0 29930
+45 1587 v 376 29352 a Fu(CVDiagGetNumRhsEvals)p 12331
+29930 V 0 29974 12376 45 v Black 0 31254 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVDiagGetNumRhsEvals\(cvode)p
+26058 31254 349 45 v 422 w(mem,)h(&nfevalsDI\);)p Black
+0 32973 a Fx(Description)p Black 1286 w(The)443 b(function)h
+Fu(CVDiagGetNumRhsEvals)i Fx(returns)c(the)h(n)-31 b(um)g(b)31
+b(er)442 b(of)i(calls)f(to)h(the)f(user)f(righ)-31 b(t-)6814
+34302 y(hand)369 b(side)g(function)i(due)e(to)h(the)f(\257nite)h
+(di\256erence)f(Jacobian)i(appro)-31 b(ximation.)p Black
+0 36021 a(Argumen)g(ts)p Black Black 1517 w Fu(cvode)p
+9789 36021 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 37519 a Fu(nfevalsDI)p Black 555 w Fx(\()p
+Fu(long)582 b(int)p Fx(\))370 b(the)f(n)-31 b(um)g(b)31
+b(er)370 b(of)f(calls)h(to)g(the)g(user)e(righ)-31 b(t-hand)370
+b(side)g(function.)p Black 0 39238 a(Return)f(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 6814 40957 a Fu(CVDIAG)p 10370 40957 V 419 w(SUCCESS)p
+Black 1554 w Fx(The)h(optional)i(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)368 b(successfully)i(set.)p Black
+6814 42455 a Fu(CVDIAG)p 10370 42455 V 419 w(MEM)p 12532
+42455 V 419 w(NULL)p Black 1135 w Fx(The)g Fu(cvode)p
+21591 42455 V 419 w(mem)f Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 6814 43953 a Fu(CVDIAG)p
+10370 43953 V 419 w(LMEM)p 13113 43953 V 419 w(NULL)p
+Black 554 w Fx(The)h Fv(cvdia)-25 b(g)369 b Fx(linear)h(solv)-31
+b(er)369 b(has)h(not)f(b)31 b(een)369 b(initialized.)p
+Black 0 45672 a(Notes)p Black 4072 w(The)317 b(n)-31
+b(um)g(b)31 b(er)317 b(of)h(diagonal)h(appro)-31 b(ximate)320
+b(Jacobians)e(formed)g(is)f(equal)g(to)h(the)f(n)-31
+b(um)g(b)31 b(er)317 b(of)h(calls)6814 47000 y(to)337
+b(the)f(linear)g(solv)-31 b(er)336 b(setup)g(function)h(\(a)-31
+b(v)-61 b(ailable)339 b(b)-31 b(y)336 b(calling)i Fu
+(CVodeGetNumLinsolvSetups)p Fx(\).)p 0 49336 10633 45
+v 0 50923 45 1587 v 376 50345 a Fu(CVDiagGetLastFlag)p
+10588 50923 V 0 50967 10633 45 v Black 0 52246 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVDiagGetLastFlag\(cvode)p
+24315 52246 349 45 v 422 w(mem,)h(&lsflag\);)p Black
+0 53966 a Fx(Description)p Black 1286 w(The)266 b(function)h
+Fu(CVDiagGetLastFlag)i Fx(returns)c(the)h(last)h(return)e(v)-61
+b(alue)266 b(from)h(a)f Fv(cvdia)-25 b(g)266 b Fx(routine.)p
+Black 0 55685 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 55685 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 57183 a Fu(lsflag)p Black 2135
+w Fx(\()p Fu(int)p Fx(\))370 b(the)g(v)-61 b(alue)370
+b(of)f(the)h(last)g(return)e(\260ag)i(from)g(a)f Fv(cvdia)-25
+b(g)369 b Fx(function.)p Black 0 58902 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 6814 60621 a Fu(CVDIAG)p
+10370 60621 V 419 w(SUCCESS)p Black 1554 w Fx(The)h(optional)i(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 62119 a Fu(CVDIAG)p 10370 62119 V 419 w(MEM)p
+12532 62119 V 419 w(NULL)p Black 1135 w Fx(The)g Fu(cvode)p
+21591 62119 V 419 w(mem)f Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 6814 63617 a Fu(CVDIAG)p
+10370 63617 V 419 w(LMEM)p 13113 63617 V 419 w(NULL)p
+Black 554 w Fx(The)h Fv(cvdia)-25 b(g)369 b Fx(linear)h(solv)-31
+b(er)369 b(has)h(not)f(b)31 b(een)369 b(initialized.)p
+Black 0 65336 a(Notes)p Black 4072 w(If)598 b(the)g Fv(cvdia)-25
+b(g)598 b Fx(setup)g(function)h(failed)h(\()p Fu(CVode)f
+Fx(returned)f Fu(CV)p 35460 65336 V 418 w(LSETUP)p 39364
+65336 V 420 w(FAIL)p Fx(\),)h(the)f(v)-61 b(alue)6814
+66664 y Fu(lsflag)531 b Fx(is)f(equal)h(to)g Fu(CVDIAG)p
+20257 66664 V 420 w(INV)p 22420 66664 V 418 w(FAIL)p
+Fx(,)h(indicating)h(that)e(a)g(zero)f(diagonal)i(elemen)-31
+b(t)532 b(w)-31 b(as)6814 67993 y(encoun)g(tered.)813
+b(The)475 b(same)i(v)-61 b(alue)476 b(for)f Fu(lsflag)i
+Fx(is)e(set)h(if)g(the)g Fv(cvdia)-25 b(g)476 b Fx(solv)-31
+b(e)476 b(function)h(failed)6814 69321 y(\()p Fu(CVode)370
+b Fx(returned)f Fu(CV)p 16247 69321 V 418 w(LSOLVE)p
+20151 69321 V 420 w(FAIL)p Fx(\).)0 72553 y Fy(SPGMR)328
+b(Linear)f(solv)-35 b(er.)1107 b Fx(The)285 b(follo)-31
+b(wing)288 b(optional)g(outputs)d(are)g(a)-31 b(v)-61
+b(ailable)287 b(from)f(the)f Fv(cvspgmr)e Fx(mo)31 b(dule:)0
+73882 y(w)-31 b(orkspace)359 b(requiremen)-31 b(ts,)361
+b(n)-31 b(um)g(b)31 b(er)357 b(of)i(linear)f(iterations,)k(n)-31
+b(um)g(b)31 b(er)358 b(of)g(linear)h(con)-31 b(v)g(ergence)359
+b(failures,)i(n)-31 b(um)g(b)31 b(er)0 75210 y(of)272
+b(calls)g(to)g(the)g(preconditioner)h(setup)e(and)g(solv)-31
+b(e)273 b(routines,)292 b(n)-31 b(um)g(b)31 b(er)271
+b(of)h(calls)g(to)g(the)g(Jacobian-v)-31 b(ector)274
+b(pro)31 b(duct)0 76539 y(routine,)387 b(n)-31 b(um)g(b)31
+b(er)383 b(of)g(calls)g(to)h(the)e(righ)-31 b(t-hand)384
+b(side)f(routine)g(for)g(\257nite-di\256erence)g(Jacobian-v)-31
+b(ector)385 b(pro)31 b(duct)0 77867 y(appro)-31 b(ximation,)373
+b(and)d(last)g(return)e(v)-61 b(alue)370 b(from)g(a)f
+Fv(cvspgmr)f Fx(function.)p Black Black eop
+%%Page: 51 59
+51 58 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(51)p 4000 3144 48001 45 v Black 4000 5965 11795
+45 v 4000 7552 45 1587 v 4376 6974 a Fu(CVSpgmrGetWorkSpace)p
+15750 7552 V 4000 7596 11795 45 v Black 4000 8876 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVSpgmrGetWorkSpace\(cvode)p
+29477 8876 349 45 v 422 w(mem,)h(&lenrwSG,)g(&leniwSG\);)p
+Black 4000 10646 a Fx(Description)p Black 1286 w(The)314
+b(function)i Fu(CVSpgmrGetWorkSpace)h Fx(returns)c(the)h
+Fv(cvspgmr)f Fx(real)i(and)f(in)-31 b(teger)315 b(w)-31
+b(orkspace)10814 11975 y(sizes.)p Black 4000 13745 a(Argumen)g(ts)p
+Black Black 1517 w Fu(cvode)p 13789 13745 V 419 w(mem)p
+Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 15295
+a Fu(lenrwSG)p Black 1554 w Fx(\()p Fu(long)582 b(int)p
+Fx(\))370 b(the)g(n)-31 b(um)g(b)31 b(er)369 b(of)h Fu(realtype)g
+Fx(v)-61 b(alues)369 b(in)g(the)h Fv(cvspgmr)e Fx(w)-31
+b(orkspace.)p Black 10814 16844 a Fu(leniwSG)p Black
+1554 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(the)g(n)-31
+b(um)g(b)31 b(er)369 b(of)h(in)-31 b(teger)370 b(v)-61
+b(alues)369 b(in)g(the)h Fv(cvspgmr)e Fx(w)-31 b(orkspace.)p
+Black 4000 18615 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 10814 20385 a Fu(CVSPGMR)p 14951 20385 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+10814 21935 a Fu(CVSPGMR)p 14951 21935 V 419 w(MEM)p
+17113 21935 V 419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p
+26172 21935 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fx(.)p Black 10814 23484 a Fu(CVSPGMR)p
+14951 23484 V 419 w(LMEM)p 17694 23484 V 419 w(NULL)p
+Black 555 w Fx(The)f Fv(cvspgmr)f Fx(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 25255 a(Notes)p Black 4072 w(In)402 b(terms)h(of)g(the)g
+(problem)g(size)g Fm(N)523 b Fx(and)403 b(maxim)-31 b(um)405
+b(subspace)d(size)h Fu(maxl)p Fx(,)412 b(the)402 b(actual)j(size)d(of)
+10814 26583 y(the)455 b(real)g(w)-31 b(orkspace)456 b(is)f(\()p
+Fu(maxl)p Fx(+5\))305 b Fp(\244)f Fm(N)121 b Fx(+)455
+b Fu(maxl)g Fp(\244)p Fx(\()h Fu(maxl)p Fx(+4\))304 b(+)f(1)456
+b Fu(realtype)g Fx(w)-31 b(ords.)750 b(\(In)455 b(a)10814
+27911 y(parallel)371 b(setting,)g(this)e(v)-61 b(alue)370
+b(is)f(global)j(|)d(summed)g(o)-31 b(v)g(er)370 b(all)g(pro)31
+b(cessors.\))p 4000 30292 12957 45 v 4000 31878 45 1587
+v 4376 31300 a Fu(CVSpgmrGetNumLinIters)p 16913 31878
+V 4000 31922 12957 45 v Black 4000 33202 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVSpgmrGetNumLinIters\(cvode)p
+30639 33202 349 45 v 422 w(mem,)h(&nliters\);)p Black
+4000 34973 a Fx(Description)p Black 1286 w(The)396 b(function)i
+Fu(CVSpgmrGetNumLinIters)g Fx(returns)d(the)i(cum)-31
+b(ulativ)g(e)398 b(n)-31 b(um)g(b)31 b(er)396 b(of)h(linear)f(iter-)
+10814 36301 y(ations.)p Black 4000 38072 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 38072 V 419
+w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 39621
+a Fu(nliters)p Black 1554 w Fx(\()p Fu(long)582 b(int)p
+Fx(\))370 b(the)g(curren)-31 b(t)368 b(n)-31 b(um)g(b)31
+b(er)370 b(of)f(linear)h(iterations.)p Black 4000 41392
+a(Return)f(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fx(\))g(is)f(one)g(of)p Black 10814 43162
+a Fu(CVSPGMR)p 14951 43162 V 419 w(SUCCESS)p Black 1555
+w Fx(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfully)g(set.)p Black 10814 44712 a
+Fu(CVSPGMR)p 14951 44712 V 419 w(MEM)p 17113 44712 V
+419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p 26172 44712
+V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p
+Fx(.)p Black 10814 46261 a Fu(CVSPGMR)p 14951 46261 V
+419 w(LMEM)p 17694 46261 V 419 w(NULL)p Black 555 w Fx(The)f
+Fv(cvspgmr)f Fx(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)p 4000 48529 13539 45 v 4000
+50116 45 1587 v 4376 49538 a Fu(CVSpgmrGetNumConvFails)p
+17494 50116 V 4000 50160 13539 45 v Black 4000 51440
+a Fx(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVSpgmrGetNumConvFails\(cvode)p 31220 51440 349 45 v
+423 w(mem,)g(&nlcfails\);)p Black 4000 53210 a Fx(Description)p
+Black 1286 w(The)332 b(function)h Fu(CVSpgmrGetNumConvFails)i
+Fx(returns)c(the)h(cum)-31 b(ulativ)g(e)334 b(n)-31 b(um)g(b)31
+b(er)332 b(of)g(linear)h(con-)10814 54539 y(v)-31 b(ergence)369
+b(failures.)p Black 4000 56309 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 13789 56309 V 419 w(mem)p Black
+554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 57859 a Fu(nlcfails)p Black
+973 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(the)g(curren)-31
+b(t)368 b(n)-31 b(um)g(b)31 b(er)370 b(of)f(linear)h(con)-31
+b(v)g(ergence)370 b(failures.)p Black 4000 59629 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 10814 61400 a Fu(CVSPGMR)p
+14951 61400 V 419 w(SUCCESS)p Black 1555 w Fx(The)g(optional)j(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 62949 a Fu(CVSPGMR)p 14951 62949 V 419 w(MEM)p
+17113 62949 V 419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p
+26172 62949 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fx(.)p Black 10814 64498 a Fu(CVSPGMR)p
+14951 64498 V 419 w(LMEM)p 17694 64498 V 419 w(NULL)p
+Black 555 w Fx(The)f Fv(cvspgmr)f Fx(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+4000 66767 13539 45 v 4000 68354 45 1587 v 4376 67775
+a Fu(CVSpgmrGetNumPrecEvals)p 17494 68354 V 4000 68398
+13539 45 v Black 4000 69677 a Fx(Call)p Black 4848 w
+Fu(flag)582 b(=)f(CVSpgmrGetNumPrecEvals\(cvode)p 31220
+69677 349 45 v 423 w(mem,)g(&npevals\);)p Black 4000
+71448 a Fx(Description)p Black 1286 w(The)396 b(function)h
+Fu(CVSpgmrGetNumPrecEvals)i Fx(returns)c(the)h(n)-31
+b(um)g(b)31 b(er)396 b(of)g(preconditioner)h(ev)-61 b(alu-)10814
+72776 y(ations,)371 b(i.e.,)g(the)e(n)-31 b(um)g(b)31
+b(er)370 b(of)f(calls)h(made)g(to)g Fu(psetup)g Fx(with)g
+Fu(jok=FALSE)p Fx(.)p Black 4000 74547 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 74547 V 419
+w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 76096
+a Fu(npevals)p Black 1554 w Fx(\()p Fu(long)582 b(int)p
+Fx(\))370 b(the)g(curren)-31 b(t)368 b(n)-31 b(um)g(b)31
+b(er)370 b(of)f(calls)h(to)g Fu(psetup)p Fx(.)p Black
+4000 77867 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+Black eop
+%%Page: 52 60
+52 59 bop Black 0 2701 a Fy(52)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black Black 6814 6974 a Fu(CVSPGMR)p
+10951 6974 349 45 v 419 w(SUCCESS)p Black 1555 w Fx(The)369
+b(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31 b(een)369
+b(successfully)g(set.)p Black 6814 8521 a Fu(CVSPGMR)p
+10951 8521 V 419 w(MEM)p 13113 8521 V 419 w(NULL)p Black
+1136 w Fx(The)g Fu(cvode)p 22172 8521 V 419 w(mem)h Fx(p)31
+b(oin)-31 b(ter)369 b(is)h Fu(NULL)p Fx(.)p Black 6814
+10068 a Fu(CVSPGMR)p 10951 10068 V 419 w(LMEM)p 13694
+10068 V 419 w(NULL)p Black 555 w Fx(The)f Fv(cvspgmr)f
+Fx(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31 b(een)368
+b(initialized.)p 0 12334 14120 45 v 0 13921 45 1587 v
+376 13343 a Fu(CVSpgmrGetNumPrecSolves)p 14075 13921
+V 0 13965 14120 45 v Black 0 15245 a Fx(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVSpgmrGetNumPrecSolves\(cvode)p
+27801 15245 349 45 v 423 w(mem,)g(&npsolves\);)p Black
+0 17013 a Fx(Description)p Black 1286 w(The)274 b(function)h
+Fu(CVSpgmrGetNumPrecSolves)i Fx(returns)272 b(the)i(cum)-31
+b(ulativ)g(e)277 b(n)-31 b(um)g(b)31 b(er)273 b(of)i(calls)f(made)6814
+18342 y(to)370 b(the)f(preconditioner)i(solv)-31 b(e)370
+b(function,)h Fu(psolve)p Fx(.)p Black 0 20110 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 20110 V 419
+w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 21657
+a Fu(npsolves)p Black 973 w Fx(\()p Fu(long)582 b(int)p
+Fx(\))370 b(the)g(curren)-31 b(t)368 b(n)-31 b(um)g(b)31
+b(er)370 b(of)f(calls)h(to)g Fu(psolve)p Fx(.)p Black
+0 23425 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 25194 a Fu(CVSPGMR)p 10951 25194 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 26741 a Fu(CVSPGMR)p 10951 26741 V 419 w(MEM)p 13113
+26741 V 419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p
+22172 26741 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fx(.)p Black 6814 28288 a Fu(CVSPGMR)p
+10951 28288 V 419 w(LMEM)p 13694 28288 V 419 w(NULL)p
+Black 555 w Fx(The)f Fv(cvspgmr)f Fx(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+0 30554 14701 45 v 0 32141 45 1587 v 376 31563 a Fu
+(CVSpgmrGetNumJtimesEvals)p 14656 32141 V 0 32185 14701
+45 v Black 0 33465 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVSpgmrGetNumJtimesEvals\(cvode)p 28382 33465 349
+45 v 423 w(mem,)h(&njvevals\);)p Black 0 35233 a Fx(Description)p
+Black 1286 w(The)486 b(function)h Fu(CVSpgmrGetNumJtimesEvals)i
+Fx(returns)c(the)h(cum)-31 b(ulativ)g(e)489 b(n)-31 b(um)g(b)31
+b(er)486 b(made)g(to)6814 36562 y(the)369 b(Jacobian-v)-31
+b(ector)372 b(function,)f Fu(jtimes)p Fx(.)p Black 0
+38330 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+9789 38330 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 39877 a Fu(njvevals)p Black 973 w Fx(\()p
+Fu(long)582 b(int)p Fx(\))370 b(the)g(curren)-31 b(t)368
+b(n)-31 b(um)g(b)31 b(er)370 b(of)f(calls)h(to)g Fu(jtimes)p
+Fx(.)p Black 0 41645 a(Return)f(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 6814 43414 a Fu(CVSPGMR)p 10951 43414 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 44961 a Fu(CVSPGMR)p 10951 44961 V 419 w(MEM)p 13113
+44961 V 419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p
+22172 44961 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fx(.)p Black 6814 46508 a Fu(CVSPGMR)p
+10951 46508 V 419 w(LMEM)p 13694 46508 V 419 w(NULL)p
+Black 555 w Fx(The)f Fv(cvspgmr)f Fx(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+0 48774 12957 45 v 0 50361 45 1587 v 376 49783 a Fu
+(CVSpgmrGetNumRhsEvals)p 12913 50361 V 0 50405 12957
+45 v Black 0 51685 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVSpgmrGetNumRhsEvals\(cvode)p 26639 51685 349
+45 v 422 w(mem,)h(&nfevalsSG\);)p Black 0 53453 a Fx(Description)p
+Black 1286 w(The)390 b(function)i Fu(CVSpgmrGetNumRhsEvals)g
+Fx(returns)d(the)i(n)-31 b(um)g(b)31 b(er)390 b(of)g(calls)h(to)g(the)f
+(user)f(righ)-31 b(t-)6814 54782 y(hand)369 b(side)g(function)i(for)e
+(\257nite)h(di\256erence)f(Jacobian-v)-31 b(ector)372
+b(pro)31 b(duct)369 b(appro)-31 b(ximation.)p Black 0
+56550 a(Argumen)g(ts)p Black Black 1517 w Fu(cvode)p
+9789 56550 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 58097 a Fu(nfevalsSG)p Black 555 w Fx(\()p
+Fu(long)582 b(int)p Fx(\))370 b(the)f(n)-31 b(um)g(b)31
+b(er)370 b(of)f(calls)h(to)g(the)g(user)e(righ)-31 b(t-hand)370
+b(side)g(function.)p Black 0 59866 a(Return)f(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 6814 61634 a Fu(CVSPGMR)p 10951 61634 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 63181 a Fu(CVSPGMR)p 10951 63181 V 419 w(MEM)p 13113
+63181 V 419 w(NULL)p Black 1136 w Fx(The)g Fu(cvode)p
+22172 63181 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fx(.)p Black 6814 64728 a Fu(CVSPGMR)p
+10951 64728 V 419 w(LMEM)p 13694 64728 V 419 w(NULL)p
+Black 555 w Fx(The)f Fv(cvspgmr)f Fx(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 0 66496 a(Notes)p Black 4072 w(The)405 b(v)-61
+b(alue)404 b Fu(nfevalsSG)i Fx(is)e(incremen)-31 b(ted)405
+b(only)h(if)f(the)f(default)i Fu(CVSpgmrDQJtimes)g Fx(di\256erence)6814
+67825 y(quotien)-31 b(t)371 b(function)g(is)e(used.)p
+0 70091 11214 45 v 0 71678 45 1587 v 376 71100 a Fu(CVSpgmrGetLastFlag)
+p 11169 71678 V 0 71722 11214 45 v Black 0 73002 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVSpgmrGetLastFlag\(cvode)p
+24896 73002 349 45 v 422 w(mem,)h(&lsflag\);)p Black
+0 74770 a Fx(Description)p Black 1286 w(The)516 b(function)i
+Fu(CVSpgmrGetLastFlag)g Fx(returns)d(the)i(last)g(return)e(v)-61
+b(alue)517 b(from)f(a)h Fv(cvspgmr)6814 76098 y Fx(routine.)p
+Black 0 77867 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 77867 V 419 w(mem)p Black 554 w Fx(\()p
+Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black Black eop
+%%Page: 53 61
+53 60 bop Black 4000 2701 a Fy(5.5)425 b(User-callable)g(functions)
+32020 b(53)p 4000 3144 48001 45 v Black Black 10814 6974
+a Fu(flag)p Black 3297 w Fx(\()p Fu(int)p Fx(\))370 b(the)g(v)-61
+b(alue)370 b(of)f(the)h(last)g(return)e(\260ag)i(from)g(a)f
+Fv(cvspgmr)g Fx(function.)p Black 4000 8787 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 10814 10600 a Fu(CVSPGMR)p
+14951 10600 349 45 v 419 w(SUCCESS)p Black 1555 w Fx(The)g(optional)j
+(output)e(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g
+(set.)p Black 10814 12171 a Fu(CVSPGMR)p 14951 12171
+V 419 w(MEM)p 17113 12171 V 419 w(NULL)p Black 1136 w
+Fx(The)g Fu(cvode)p 26172 12171 V 419 w(mem)h Fx(p)31
+b(oin)-31 b(ter)369 b(is)h Fu(NULL)p Fx(.)p Black 10814
+13742 a Fu(CVSPGMR)p 14951 13742 V 419 w(LMEM)p 17694
+13742 V 419 w(NULL)p Black 555 w Fx(The)f Fv(cvspgmr)f
+Fx(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31 b(een)368
+b(initialized.)p Black 4000 15555 a(Notes)p Black 4072
+w(If)355 b(the)h Fv(cvspgmr)f Fx(setup)g(function)i(failed)g(\()p
+Fu(CVode)g Fx(returned)d Fu(CV)p 38456 15555 V 419 w(LSETUP)p
+42361 15555 V 419 w(FAIL)p Fx(\),)j Fu(lsflag)g Fx(con-)10814
+16884 y(tains)370 b(the)f(return)g(v)-61 b(alue)370 b(of)f(the)h
+(preconditioner)g(setup)f(function)i Fu(psetup)p Fx(.)10814
+18697 y(If)380 b(the)g Fv(cvspgmr)f Fx(solv)-31 b(e)381
+b(function)h(failed)g(\()p Fu(CVode)f Fx(returned)e Fu(CV)p
+38407 18697 V 419 w(LSOLVE)p 42312 18697 V 419 w(FAIL)p
+Fx(\),)j Fu(lsflag)f Fx(con-)10814 20025 y(tains)478
+b(the)g(error)e(return)h(\260ag)h(from)g Fu(SpgmrSolve)g
+Fx(and)g(will)h(b)31 b(e)477 b(one)g(of:)710 b Fu(SPGMR)p
+46276 20025 V 419 w(CONV)p 49019 20025 V 419 w(FAIL)p
+Fx(,)10814 21354 y(indicating)557 b(a)d(failure)h(to)g(con)-31
+b(v)g(erge;)648 b Fu(SPGMR)p 30494 21354 V 419 w(QRFACT)p
+34399 21354 V 419 w(FAIL)p Fx(,)555 b(indicating)i(a)d(singular)h
+(matrix)10814 22682 y(found)381 b(during)g(the)h(QR)e(factorization;)
+391 b Fu(SPGMR)p 31156 22682 V 419 w(PSOLVE)p 35061 22682
+V 419 w(FAIL)p 37804 22682 V 419 w(REC)p Fx(,)382 b(indicating)h(that)f
+(the)f(pre-)10814 24011 y(conditioner)329 b(solv)-31
+b(e)328 b(function)g Fu(psolve)g Fx(failed)h(reco)-31
+b(v)g(erably;)343 b Fu(SPGMR)p 39377 24011 V 419 w(MEM)p
+41539 24011 V 419 w(NULL)p Fx(,)328 b(indicating)i(that)10814
+25339 y(the)369 b Fv(spgmr)f Fx(memory)j(is)e Fu(NULL)p
+Fx(;)h Fu(SPGMR)p 27783 25339 V 419 w(ATIMES)p 31688
+25339 V 420 w(FAIL)p Fx(,)g(indicating)i(a)d(failure)h(in)g(the)f
+(Jacobian)10814 26667 y(times)407 b(v)-31 b(ector)408
+b(function;)427 b Fu(SPGMR)p 24845 26667 V 419 w(PSOLVE)p
+28750 26667 V 419 w(FAIL)p 31493 26667 V 419 w(UNREC)p
+Fx(,)408 b(indicating)h(that)f(the)f(preconditioner)10814
+27996 y(solv)-31 b(e)336 b(function)h Fu(psolve)g Fx(failed)f(unreco)
+-31 b(v)g(erably;)349 b Fu(SPGMR)p 34904 27996 V 419
+w(GS)p 36485 27996 V 419 w(FAIL)p Fx(,)336 b(indicating)i(a)e(failure)h
+(in)f(the)10814 29324 y(Gram-Sc)-31 b(hmidt)497 b(pro)31
+b(cedure;)558 b(or)496 b Fu(SPGMR)p 28519 29324 V 419
+w(QRSOL)p 31843 29324 V 419 w(FAIL)p Fx(,)h(indicating)h(that)f(the)f
+(matrix)h Fm(R)503 b Fx(w)-31 b(as)10814 30652 y(found)370
+b(to)g(b)31 b(e)368 b(singular)i(during)g(the)f(QR)g(solv)-31
+b(e)370 b(phase.)4000 34263 y Fq(5.5.7)1495 b(CV)-42
+b(ODE)500 b(reinitialization)h(function)4000 36345 y
+Fx(The)358 b(function)i Fu(CVodeReInit)f Fx(reinitializes)i(the)d(main)
+i Fv(cv)-25 b(ode)358 b Fx(solv)-31 b(er)359 b(for)f(the)g(solution)i
+(of)f(a)f(problem,)k(where)4000 37674 y(a)497 b(prior)g(call)h(to)f
+Fu(CVodeMalloc)h Fx(has)f(b)31 b(een)496 b(made.)876
+b(The)497 b(new)g(problem)h(m)-31 b(ust)497 b(ha)-31
+b(v)g(e)498 b(the)f(same)g(size)g(as)g(the)4000 39002
+y(previous)352 b(one.)487 b Fu(CVodeReInit)353 b Fx(p)31
+b(erforms)351 b(the)h(same)g(input)h(c)-31 b(hec)g(king)353
+b(and)f(initializations)k(that)d Fu(CVodeMalloc)4000
+40330 y Fx(do)31 b(es,)439 b(but)425 b(do)31 b(es)424
+b(no)h(memory)h(allo)31 b(cation,)443 b(assuming)426
+b(that)g(the)f(existing)h(in)-31 b(ternal)426 b(memory)g(is)f
+(su\261cien)-31 b(t)426 b(for)4000 41659 y(the)369 b(new)h(problem.)
+5660 43008 y(The)506 b(use)g(of)g Fu(CVodeReInit)h Fx(requires)e(that)i
+(the)f(maxim)-31 b(um)509 b(metho)31 b(d)507 b(order,)540
+b Fu(maxord)p Fx(,)h(is)505 b(no)i(larger)f(for)4000
+44337 y(the)468 b(new)f(problem)h(than)g(for)f(the)h(problem)g(sp)31
+b(eci\257ed)467 b(in)g(the)h(last)g(call)h(to)f Fu(CVodeMalloc)p
+Fx(.)788 b(This)468 b(condition)4000 45665 y(is)505 b(automatically)k
+(ful\257lled)e(if)e(the)g(m)-31 b(ultistep)507 b(metho)31
+b(d)505 b(parameter)h Fu(lmm)f Fx(is)g(unc)-31 b(hanged)505
+b(\(or)h(c)-31 b(hanged)505 b(from)4000 46993 y Fu(CV)p
+5232 46993 V 419 w(ADAMS)369 b Fx(to)h Fu(CV)p 11440
+46993 V 419 w(BDF)p Fx(\))g(and)f(the)h(default)h(v)-61
+b(alue)369 b(for)g Fu(maxord)h Fx(is)f(sp)31 b(eci\257ed.)5660
+48343 y(If)258 b(there)g(are)g(c)-31 b(hanges)259 b(to)f(the)h(linear)g
+(solv)-31 b(er)258 b(sp)31 b(eci\257cations,)282 b(mak)-31
+b(e)259 b(the)f(appropriate)i Fu(Set)e Fx(calls,)282
+b(as)258 b(describ)31 b(ed)4000 49671 y(in)369 b Fp(x)p
+Fx(5.5.2)p 4000 51673 7146 45 v 4000 53014 45 1341 v
+4376 52681 a Fu(CVodeReInit)p 11101 53014 V 4000 53058
+7146 45 v Black 4000 54431 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeReInit\(cvode)p 24829 54431 349 45 v 421 w(mem,)h(f,)f(t0,)h
+(y0,)f(itol,)h(reltol,)g(abstol\);)p Black 4000 56244
+a Fx(Description)p Black 1286 w(The)420 b(function)i
+Fu(CVodeReInit)f Fx(pro)-31 b(vides)421 b(required)e(problem)i(sp)31
+b(eci\257cations)421 b(and)f(reinitializes)10814 57573
+y Fv(cv)-25 b(ode)p Fx(.)p Black 4000 59386 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 59386 V 419
+w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 60957
+a Fu(f)p Black 5040 w Fx(\()p Fu(CVRhsFn)p Fx(\))348
+b(is)e(the)g Fv(C)g Fx(function)h(whic)-31 b(h)347 b(computes)g
+Fm(f)465 b Fx(in)346 b(the)g(ODE.)g(This)g(function)16435
+62285 y(has)369 b(the)h(form)f Fu(f\(N,)582 b(t,)g(y,)f(ydot,)h(f)p
+33463 62285 V 418 w(data\))370 b Fx(\(for)g(full)g(details)h(see)d
+Fp(x)p Fx(5.6\).)p Black 10814 63856 a Fu(t0)p Black
+4459 w Fx(\()p Fu(realtype)p Fx(\))j(is)e(the)h(initial)i(v)-61
+b(alue)369 b(of)h Fm(t)p Fx(.)p Black 10814 65427 a Fu(y0)p
+Black 4459 w Fx(\()p Fu(N)p 17516 65427 V 419 w(Vector)p
+Fx(\))g(is)g(the)f(initial)j(v)-61 b(alue)370 b(of)f
+Fm(y)40 b Fx(.)p Black 10814 66998 a Fu(itol)p Black
+3297 w Fx(\()p Fu(int)p Fx(\))311 b(is)f(one)g(of)h Fu(CV)p
+24807 66998 V 419 w(SS)p Fx(,)f Fu(CV)p 28167 66998 V
+419 w(SV)p Fx(,)h(or)f Fu(CV)p 32825 66998 V 418 w(WF)p
+Fx(,)h(where)f Fu(itol)p Fx(=)p Fu(SS)g Fx(indicates)i(scalar)e(rel-)
+16435 68326 y(ativ)-31 b(e)275 b(error)d(tolerance)i(and)g(scalar)f
+(absolute)i(error)d(tolerance,)294 b(while)274 b Fu(itol)p
+Fx(=)p Fu(CV)p 50488 68326 V 420 w(SV)16435 69654 y Fx(indicates)k
+(scalar)f(relativ)-31 b(e)279 b(error)c(tolerance)j(and)f(v)-31
+b(ector)277 b(absolute)h(error)e(tolerance.)16435 70983
+y(The)371 b(latter)g(c)-31 b(hoice)372 b(is)e(imp)31
+b(ortan)-31 b(t)373 b(when)d(the)h(absolute)g(error)f(tolerance)h
+(needs)f(to)16435 72311 y(b)31 b(e)269 b(di\256eren)-31
+b(t)270 b(for)f(eac)-31 b(h)270 b(comp)31 b(onen)-31
+b(t)271 b(of)f(the)g(ODE.)f(If)h Fu(itol)p Fx(=)p Fu(CV)p
+43084 72311 V 419 w(WF)p Fx(,)g(the)g(argumen)-31 b(ts)16435
+73639 y Fu(reltol)304 b Fx(and)f Fu(abstol)h Fx(are)f(ignored)g(and)h
+(the)f(user)f(is)h(exp)31 b(ected)303 b(to)h(pro)-31
+b(vide)304 b(a)f(func-)16435 74968 y(tion)309 b(to)g(ev)-61
+b(aluate)309 b(the)g(error)d(w)-31 b(eigh)g(t)311 b(v)-31
+b(ector)308 b Fm(W)462 b Fx(from)309 b(\(3.6\).)474 b(See)308
+b Fu(CVodeSetEwtFn)16435 76296 y Fx(in)370 b Fp(x)p Fx(5.5.4.)p
+Black 10814 77867 a Fu(reltol)p Black 2135 w Fx(\()p
+Fu(realtype)p Fx(\))h(is)e(the)h(relativ)-31 b(e)371
+b(error)d(tolerance.)p Black Black eop
+%%Page: 54 62
+54 61 bop Black 0 2701 a Fy(54)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black Black 6814 6974 a Fu(abstol)p
+Black 2135 w Fx(\()p Fu(void)582 b(*)p Fx(\))548 b(is)f(a)h(p)31
+b(oin)-31 b(ter)548 b(to)g(the)g(absolute)g(error)f(tolerance.)1028
+b(If)547 b Fu(itol)p Fx(=)p Fu(CV)p 46181 6974 349 45
+v 419 w(SS)p Fx(,)12435 8302 y Fu(abstol)335 b Fx(m)-31
+b(ust)336 b(b)31 b(e)334 b(a)h(p)31 b(oin)-31 b(ter)336
+b(to)f(a)g Fu(realtype)h Fx(v)-61 b(ariable.)482 b(If)335
+b Fu(itol)p Fx(=)p Fu(CV)p 42360 8302 V 419 w(SV)p Fx(,)g
+Fu(abstol)12435 9631 y Fx(m)-31 b(ust)370 b(b)31 b(e)369
+b(an)g Fu(N)p 18873 9631 V 419 w(Vector)g Fx(v)-61 b(ariable.)p
+Black 0 11426 a(Return)369 b(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(\260ag)h Fu(flag)f Fx(\(of)i(t)-31
+b(yp)31 b(e)369 b Fu(int)p Fx(\))h(will)h(b)31 b(e)369
+b(one)g(of)h(the)f(follo)-31 b(wing:)p Black 6814 13222
+a Fu(CV)p 8046 13222 V 419 w(SUCCESS)p Black 1554 w Fx(The)369
+b(call)i(to)f Fu(CVodeReInit)g Fx(w)-31 b(as)370 b(successful.)p
+Black 6814 14784 a Fu(CV)p 8046 14784 V 419 w(MEM)p 10208
+14784 V 419 w(NULL)p Black 1135 w Fx(The)414 b Fv(cv)-25
+b(ode)414 b Fx(memory)h(blo)31 b(c)-31 b(k)415 b(w)-31
+b(as)414 b(not)h(initialized)i(through)d(a)h(previous)f(call)14016
+16113 y(to)370 b Fu(CVodeCreate)p Fx(.)p Black 6814 17675
+a Fu(CV)p 8046 17675 V 419 w(NO)p 9627 17675 V 418 w(MALLOC)p
+Black 555 w Fx(Memory)324 b(space)h(for)f(the)h Fv(cv)-25
+b(ode)325 b Fx(memory)g(blo)31 b(c)-31 b(k)325 b(w)-31
+b(as)325 b(not)g(allo)31 b(cated)327 b(through)14016
+19003 y(a)369 b(previous)h(call)g(to)g Fu(CVodeMalloc)p
+Fx(.)p Black 6814 20565 a Fu(CV)p 8046 20565 V 419 w(ILL)p
+10208 20565 V 419 w(INPUT)p Black 554 w Fx(An)f(input)h(argumen)-31
+b(t)371 b(to)e Fu(CVodeReInit)i Fx(has)e(an)h(illegal)i(v)-61
+b(alue.)p Black 0 22361 a(Notes)p Black 4072 w(If)344
+b(an)g(error)f(o)31 b(ccurred,)348 b Fu(CVodeReInit)d
+Fx(also)g(prin)-31 b(ts)344 b(an)g(error)f(message)h(to)h(the)f(\257le)
+g(sp)31 b(eci\257ed)344 b(b)-31 b(y)6814 23689 y(the)369
+b(optional)j(input)e Fu(errfp)p Fx(.)7942 26293 y @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Ff(!)1429 b Fx(It)300 b(is)h(the)g(user's)e
+(resp)31 b(onsibilit)-31 b(y)302 b(to)g(pro)-31 b(vide)301
+b(compatible)i Fu(itol)e Fx(and)g Fu(abstol)g Fx(argumen)-31
+b(ts.)0 30019 y Fs(5.6)1793 b(User-supplied)600 b(functions)0
+32466 y Fx(The)400 b(user-supplied)f(functions)i(consist)f(of)h(one)f
+(function)h(de\257ning)f(the)g(ODE,)g(\(optionally\))k(a)c(function)i
+(that)0 33795 y(pro)-31 b(vides)355 b(the)f(error)g(w)-31
+b(eigh)g(t)356 b(v)-31 b(ector,)359 b(\(optionally\))g(a)354
+b(function)i(that)g(pro)-31 b(vides)355 b(Jacobian)h(related)f
+(information)0 35123 y(for)310 b(the)h(linear)g(solv)-31
+b(er)311 b(\(if)g(Newton)h(iteration)g(is)e(c)-31 b(hosen\),)323
+b(and)311 b(\(optionally\))k(one)310 b(or)g(t)-31 b(w)g(o)312
+b(functions)g(that)f(de\257ne)0 36451 y(the)369 b(preconditioner)i(for)
+e(use)g(in)g(the)h Fv(spgmr)e Fx(algorithm.)0 39616 y
+Fq(5.6.1)1495 b(ODE)499 b(righ)-42 b(t-hand)501 b(side)0
+41682 y Fx(The)369 b(user)g(m)-31 b(ust)369 b(pro)-31
+b(vide)370 b(a)g(function)g(of)g(t)-31 b(yp)31 b(e)370
+b Fu(CVRhsFn)g Fx(de\257ned)f(as)g(follo)-31 b(ws:)p
+0 43616 4821 45 v 0 44957 45 1341 v 376 44625 a Fu(CVRhsFn)p
+4776 44957 V 0 45001 4821 45 v Black 0 46365 a Fx(De\257nition)p
+Black 2034 w Fu(typedef)582 b(void)g(\(*CVRhsFn\)\()r(realtype)g(t,)f
+(N)p 28386 46365 349 45 v 419 w(Vector)h(y,)f(N)p 35197
+46365 V 419 w(Vector)h(ydot,)20762 47694 y(void)f(*f)p
+24899 47694 V 419 w(data\);)p Black 0 49439 a Fx(Purp)31
+b(ose)p Black 2884 w(This)336 b(function)g(computes)g(the)g(ODE)e(righ)
+-31 b(t-hand)337 b(side)e(for)g(a)h(giv)-31 b(en)336
+b(v)-61 b(alue)336 b(of)g(the)f(indep)31 b(enden)-31
+b(t)6814 50767 y(v)-61 b(ariable)370 b Fm(t)f Fx(and)g(state)h(v)-31
+b(ector)370 b Fm(y)40 b Fx(.)p Black 0 52563 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(t)p Black 3297 w Fx(is)369
+b(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(indep)31
+b(enden)-31 b(t)370 b(v)-61 b(ariable.)p Black 6814 54125
+a Fu(y)p Black 3297 w Fx(is)369 b(the)g(curren)-31 b(t)369
+b(v)-61 b(alue)370 b(of)f(the)h(dep)31 b(enden)-31 b(t)369
+b(v)-61 b(ariable)370 b(v)-31 b(ector,)371 b Fm(y)40
+b Fx(\()p Fm(t)p Fx(\).)p Black 6814 55687 a Fu(ydot)p
+Black 1554 w Fx(is)369 b(the)g(output)i(v)-31 b(ector)369
+b Fm(f)119 b Fx(\()p Fm(t;)184 b(y)40 b Fx(\).)p Black
+6814 57249 a Fu(f)p 7465 57249 V 419 w(data)p Black 554
+w Fx(is)535 b(a)g(p)31 b(oin)-31 b(ter)536 b(to)g(user)f(data)h(|)f
+(the)h(same)f(as)g(the)h Fu(f)p 34663 57249 V 419 w(data)f
+Fx(parameter)h(passed)f(to)10692 58578 y Fu(CVodeSetFdata)p
+Fx(.)p Black 0 60374 a(Return)369 b(v)-61 b(alue)p Black
+554 w(A)369 b Fu(CVRhsFn)h Fx(function)h(t)-31 b(yp)31
+b(e)369 b(do)31 b(es)369 b(not)h(ha)-31 b(v)g(e)370 b(a)g(return)e(v)
+-61 b(alue.)p Black 0 62169 a(Notes)p Black 4072 w(Allo)31
+b(cation)372 b(of)e(memory)g(for)f Fu(ydot)h Fx(is)f(handled)h(within)h
+Fv(cv)-25 b(ode)p Fx(.)0 65734 y Fq(5.6.2)1495 b(Error)500
+b(w)-42 b(eigh)g(t)499 b(function)0 67800 y Fx(As)347
+b(an)h(alternativ)-31 b(e)351 b(to)d(pro)-31 b(viding)349
+b(the)f(relativ)-31 b(e)350 b(and)d(absolute)i(tolerances,)354
+b(the)348 b(user)e(ma)-31 b(y)349 b(pro)-31 b(vide)348
+b(a)g(function)0 69128 y(of)383 b(t)-31 b(yp)31 b(e)384
+b Fu(CVEwtFn)g Fx(to)f(compute)h(a)g(v)-31 b(ector)383
+b Fu(ewt)g Fx(con)-31 b(taining)386 b(the)d(w)-31 b(eigh)g(ts)385
+b(in)e(the)g(WRMS)f(norm)i Fp(k)f Fm(v)40 b Fp(k)43934
+69294 y Fl(WRMS)47139 69128 y Fx(=)0 69604 y Fj(q)p 1107
+69604 8413 45 v 1379 x Fx(\(1)p Fm(=)-61 b(N)121 b Fx(\))4206
+70153 y Fj(P)5376 70426 y Fk(N)5376 71315 y Fl(1)6401
+70983 y Fm(W)7446 71149 y Fk(i)8061 70983 y Fp(\242)246
+b Fm(v)9151 71149 y Fk(i)9519 70983 y Fx(.)493 b(The)369
+b(function)i(t)-31 b(yp)31 b(e)369 b Fu(CVEwtFn)h Fx(is)f(de\257ned)g
+(as)g(follo)-31 b(ws:)p 0 73322 4821 45 v 0 74662 45
+1341 v 376 74330 a Fu(CVEwtFn)p 4776 74662 V 0 74706
+4821 45 v Black 0 76071 a Fx(De\257nition)p Black 2034
+w Fu(typedef)582 b(int)g(\(*CVEwtFn\)\(N)p 20830 76071
+349 45 v 420 w(Vector)g(y,)f(N)p 27642 76071 V 419 w(Vector)h(ewt,)g
+(void)g(*e)p 39103 76071 V 418 w(data\);)p Black 0 77867
+a Fx(Purp)31 b(ose)p Black 2884 w(This)370 b(function)g(computes)g(the)
+g(WRMS)e(error)g(w)-31 b(eigh)g(ts)371 b(for)e(the)h(v)-31
+b(ector)370 b Fm(y)40 b Fx(.)p Black Black eop
+%%Page: 55 63
+55 62 bop Black 4000 2701 a Fy(5.6)425 b(User-supplied)h(functions)
+31554 b(55)p 4000 3144 48001 45 v Black Black 4000 6974
+a Fx(Argumen)-31 b(ts)p Black Black 1517 w Fu(y)p Black
+3297 w Fx(is)369 b(the)g(v)-61 b(alue)370 b(of)g(the)f(v)-31
+b(ector)370 b(for)f(whic)-31 b(h)370 b(the)g(WRMS)e(norm)h(m)-31
+b(ust)370 b(b)31 b(e)369 b(computed.)p Black 10814 8524
+a Fu(ewt)p Black 2135 w Fx(is)g(the)g(output)i(v)-31
+b(ector)369 b(con)-31 b(taining)373 b(the)c(error)f(w)-31
+b(eigh)g(ts.)p Black 10814 10075 a Fu(e)p 11465 10075
+349 45 v 419 w(data)p Black 554 w Fx(is)535 b(a)g(p)31
+b(oin)-31 b(ter)536 b(to)g(user)f(data)h(|)f(the)h(same)f(as)g(the)h
+Fu(e)p 38663 10075 V 419 w(data)f Fx(parameter)h(passed)f(to)14692
+11403 y Fu(CVodeSetEwtFn)p Fx(.)p Black 4000 13176 a(Return)369
+b(v)-61 b(alue)p Black 554 w(A)374 b Fu(CVEwtFn)h Fx(function)h(t)-31
+b(yp)31 b(e)374 b(m)-31 b(ust)375 b(return)f(0)g(if)h(it)g(successfuly)
+f(set)g(the)g(error)f(w)-31 b(eigh)g(ts)376 b(and)f Fp(\241)p
+Fx(1)10814 14504 y(otherwise.)494 b(In)368 b(case)h(of)h(failure,)h(a)e
+(message)h(is)f(prin)-31 b(ted)370 b(and)f(the)g(in)-31
+b(tegration)373 b(stops.)p Black 4000 16276 a(Notes)p
+Black 4072 w(Allo)31 b(cation)372 b(of)e(memory)g(for)f
+Fu(ewt)h Fx(is)f(handled)h(within)h Fv(cv)-25 b(ode)p
+Fx(.)11942 18826 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial
+Ff(!)1635 b Fx(The)507 b(error)f(w)-31 b(eigh)g(t)509
+b(v)-31 b(ector)507 b(m)-31 b(ust)508 b(ha)-31 b(v)g(e)507
+b(all)h(comp)31 b(onen)-31 b(ts)508 b(p)31 b(ositiv)-31
+b(e.)907 b(It)507 b(is)g(the)g(user's)10814 20154 y(resp)31
+b(onsiblit)-31 b(y)370 b(to)g(p)31 b(erform)369 b(this)h(test)f(and)h
+(return)e Fp(\241)p Fx(1)i(if)g(it)g(is)f(not)h(satis\257ed.)4000
+23257 y Fq(5.6.3)1495 b(Jacobian)500 b(information)g(\(direct)f(metho)
+42 b(d)499 b(with)g(dense)f(Jacobian\))4000 25301 y Fx(If)314
+b(the)g(direct)g(linear)h(solv)-31 b(er)314 b(with)h(dense)e(treatmen)
+-31 b(t)316 b(of)f(the)f(Jacobian)h(is)f(used)f(\(i.e.)476
+b Fu(CVDense)315 b Fx(is)e(called)i(in)g(Step)4000 26629
+y(7)369 b(of)h Fp(x)p Fx(5.4\),)i(the)d(user)f(ma)-31
+b(y)371 b(pro)-31 b(vide)370 b(a)f(function)i(of)e(t)-31
+b(yp)31 b(e)370 b Fu(CVDenseJacFn)h Fx(de\257ned)e(b)-31
+b(y)p 4000 28614 7727 45 v 4000 29954 45 1341 v 4376
+29622 a Fu(CVDenseJacFn)p 11682 29954 V 4000 29998 7727
+45 v Black 4000 31351 a Fx(De\257nition)p Black 2034
+w Fu(typedef)582 b(void)g(\(*CVDenseJacFn\)\()r(long)g(int)g(N,)f
+(DenseMat)h(J,)g(realtype)g(t,)27667 32680 y(N)p 28318
+32680 349 45 v 419 w(Vector)g(y,)f(N)p 35129 32680 V
+419 w(Vector)h(fy,)g(void)f(*jac)p 47170 32680 V 419
+w(data,)27667 34008 y(N)p 28318 34008 V 419 w(Vector)h(tmp1,)g(N)p
+36873 34008 V 418 w(Vector)g(tmp2,)g(N)p 45427 34008
+V 419 w(Vector)g(tmp3\);)p Black 4000 35792 a Fx(Purp)31
+b(ose)p Black 2884 w(This)370 b(function)g(computes)g(the)g(dense)e
+(Jacobian)j Fm(J)414 b Fx(=)307 b Fm(@)61 b(f)119 b(=@)61
+b(y)409 b Fx(\(or)370 b(an)f(appro)-31 b(ximation)373
+b(to)d(it\).)p Black 4000 37564 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(N)p Black 4459 w Fx(is)369 b(the)g(problem)h
+(size.)p Black 10814 39114 a Fu(J)p Black 4459 w Fx(is)f(the)g(output)i
+(Jacobian)g(matrix.)p Black 10814 40665 a Fu(t)p Black
+4459 w Fx(is)e(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370
+b(of)g(the)f(indep)31 b(enden)-31 b(t)370 b(v)-61 b(ariable.)p
+Black 10814 42215 a Fu(y)p Black 4459 w Fx(is)357 b(the)h(curren)-31
+b(t)357 b(v)-61 b(alue)357 b(of)h(the)g(dep)31 b(enden)-31
+b(t)357 b(v)-61 b(ariable)358 b(v)-31 b(ector,)361 b(namely)e(the)f
+(predicted)15854 43544 y(v)-61 b(alue)370 b(of)f Fm(y)40
+b Fx(\()p Fm(t)p Fx(\).)p Black 10814 45094 a Fu(fy)p
+Black 3878 w Fx(is)369 b(the)g(v)-31 b(ector)370 b Fm(f)119
+b Fx(\()p Fm(t;)184 b(y)40 b Fx(\).)p Black 10814 46645
+a Fu(jac)p 12627 46645 V 419 w(data)p Black 554 w Fx(is)369
+b(a)h(p)31 b(oin)-31 b(ter)370 b(to)g(user)e(data)i(|)f(the)h(same)f
+(as)g(the)h Fu(jac)p 39161 46645 V 419 w(data)f Fx(parameter)h(passed)f
+(to)15854 47973 y Fu(CVDenseSetJacData)p Fx(.)p Black
+10814 49523 a Fu(tmp1)p Black Black 10814 51074 a(tmp2)p
+Black Black 10814 52624 a(tmp3)p Black 2716 w Fx(are)f(p)31
+b(oin)-31 b(ters)369 b(to)g(memory)g(allo)31 b(cated)371
+b(for)e(v)-61 b(ariables)369 b(of)g(t)-31 b(yp)31 b(e)369
+b Fu(N)p 42970 52624 V 418 w(Vector)g Fx(whic)-31 b(h)370
+b(can)15854 53953 y(b)31 b(e)369 b(used)f(b)-31 b(y)370
+b Fu(CVDenseJacFn)g Fx(as)f(temp)31 b(orary)370 b(storage)h(or)e(w)-31
+b(ork)370 b(space.)p Black 4000 55725 a(Return)f(v)-61
+b(alue)p Black 554 w(A)369 b Fu(CVDenseJacFn)i Fx(function)g(t)-31
+b(yp)31 b(e)369 b(do)31 b(es)369 b(not)h(ha)-31 b(v)g(e)370
+b(a)g(return)e(v)-61 b(alue.)p Black 4000 57497 a(Notes)p
+Black 4072 w(A)338 b(user-supplied)g(dense)g(Jacobian)i(function)g(m)
+-31 b(ust)339 b(load)h(the)f Fu(N)f Fx(b)-31 b(y)339
+b Fu(N)f Fx(dense)g(matrix)i Fu(J)f Fx(with)h(an)10814
+58826 y(appro)-31 b(ximation)409 b(to)e(the)f(Jacobian)i(matrix)f
+Fm(J)512 b Fx(at)407 b(the)f(p)31 b(oin)-31 b(t)407 b(\()p
+Fu(t)p Fx(,)416 b Fu(y)p Fx(\).)603 b(Only)407 b(nonzero)f(elemen)-31
+b(ts)10814 60154 y(need)469 b(to)i(b)31 b(e)469 b(loaded)h(in)-31
+b(to)471 b Fu(J)f Fx(b)31 b(ecause)469 b Fu(J)g Fx(is)h(set)f(to)h(the)
+g(zero)f(matrix)i(b)31 b(efore)470 b(the)f(call)i(to)g(the)10814
+61483 y(Jacobian)371 b(function.)494 b(The)369 b(t)-31
+b(yp)31 b(e)370 b(of)g Fu(J)f Fx(is)g Fu(DenseMat)p Fx(.)10814
+63255 y(The)514 b(accessor)g(macros)h Fu(DENSE)p 24519
+63255 V 419 w(ELEM)g Fx(and)f Fu(DENSE)p 32979 63255
+V 419 w(COL)h Fx(allo)-31 b(w)517 b(the)d(user)f(to)i(read)f(and)h
+(write)10814 64583 y(dense)356 b(matrix)j(elemen)-31
+b(ts)358 b(without)h(making)g(explicit)g(references)c(to)j(the)f
+(underlying)h(represen-)10814 65912 y(tation)402 b(of)e(the)h
+Fu(DenseMat)f Fx(t)-31 b(yp)31 b(e.)586 b Fu(DENSE)p
+28370 65912 V 419 w(ELEM\(J,)c(i,)f(j\))400 b Fx(references)f(the)h(\()
+p Fu(i)p Fx(,)409 b Fu(j)p Fx(\)-th)400 b(elemen)-31
+b(t)10814 67240 y(of)448 b(the)h(dense)e(matrix)i Fu(J)f
+Fx(\()p Fu(i)p Fx(,)469 b Fu(j)p Fx(=)438 b(0)184 b Fm(:)g(:)g(:)k(N)
+420 b Fp(\241)298 b Fx(1\).)730 b(This)448 b(macro)h(is)f(for)g(use)f
+(in)h(small)h(problems)10814 68568 y(in)380 b(whic)-31
+b(h)381 b(e\261ciency)g(of)f(access)f(is)h(not)h(a)f(ma)61
+b(jor)381 b(concern.)524 b(Th)-31 b(us,)384 b(in)c(terms)f(of)i
+(indices)f Fm(m)g Fx(and)10814 69897 y Fm(n)501 b Fx(running)h(from)f
+(1)h(to)f Fm(N)121 b Fx(,)535 b(the)501 b(Jacobian)i(elemen)-31
+b(t)502 b Fm(J)35007 70063 y Fk(m;n)37159 69897 y Fx(can)f(b)31
+b(e)501 b(loaded)h(with)h(the)e(state-)10814 71225 y(men)-31
+b(t)414 b Fu(DENSE)p 16631 71225 V 420 w(ELEM\(J,)582
+b(m-1,)f(n-1\))h(=)414 b Fm(J)29050 71391 y Fk(m;n)30700
+71225 y Fx(.)626 b(Alternativ)-31 b(ely)-92 b(,)427 b
+Fu(DENSE)p 41584 71225 V 420 w(COL\(J,)582 b(j\))413
+b Fx(returns)g(a)10814 72553 y(p)31 b(oin)-31 b(ter)491
+b(to)h(the)f(storage)g(for)g(the)g Fu(j)p Fx(th)g(column)h(of)f
+Fu(J)f Fx(\()p Fu(j)p Fx(=)511 b(0)184 b Fm(:)g(:)g(:)k(N)448
+b Fp(\241)327 b Fx(1\),)522 b(and)491 b(the)g(elemen)-31
+b(ts)10814 73882 y(of)415 b(the)g Fu(j)p Fx(th)h(column)g(are)f(then)g
+(accessed)f(via)i(ordinary)f(arra)-31 b(y)416 b(indexing.)631
+b(Th)-31 b(us)415 b Fm(J)46722 74048 y Fk(m;n)48787 73882
+y Fx(can)g(b)31 b(e)10814 75210 y(loaded)440 b(with)g(the)f(statemen)
+-31 b(ts)440 b Fu(col)p 26416 75210 V 419 w(n)581 b(=)g(DENSE)p
+32064 75210 V 420 w(COL\(J,)h(n-1\);)473 b(col)p 41673
+75210 V 419 w(n[m-1])582 b(=)439 b Fm(J)47724 75376 y
+Fk(m;n)49375 75210 y Fx(.)701 b(F)-92 b(or)10814 76539
+y(large)458 b(problems,)479 b(it)458 b(is)f(more)g(e\261cien)-31
+b(t)459 b(to)e(use)g Fu(DENSE)p 34620 76539 V 419 w(COL)g
+Fx(than)h(to)f(use)g Fu(DENSE)p 46256 76539 V 419 w(ELEM)p
+Fx(.)h(Note)10814 77867 y(that)370 b(b)31 b(oth)370 b(of)g(these)f
+(macros)g(n)-31 b(um)g(b)31 b(er)370 b(ro)-31 b(ws)369
+b(and)g(columns)h(starting)h(from)f(0,)g(not)g(1.)p Black
+Black eop
+%%Page: 56 64
+56 63 bop Black 0 2701 a Fy(56)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 6814 6974 a Fx(The)478
+b Fu(DenseMat)h Fx(t)-31 b(yp)31 b(e)478 b(and)g(the)g(accessor)f
+(macros)h Fu(DENSE)p 32411 6974 349 45 v 419 w(ELEM)g
+Fx(and)g Fu(DENSE)p 40798 6974 V 419 w(COL)g Fx(are)g(do)31
+b(cu-)6814 8302 y(men)-31 b(ted)370 b(in)g Fp(x)p Fx(8.1.)6814
+10071 y(If)415 b(the)g(user's)g Fu(CVDenseJacFn)h Fx(function)h(uses)d
+(di\256erence)h(quotien)-31 b(t)417 b(appro)-31 b(ximations,)431
+b(it)416 b(ma)-31 b(y)6814 11399 y(need)412 b(to)h(access)f(quan)-31
+b(tities)415 b(not)e(in)g(the)f(call)i(list.)623 b(These)412
+b(include)h(the)g(curren)-31 b(t)412 b(stepsize,)424
+b(the)6814 12728 y(error)391 b(w)-31 b(eigh)g(ts,)401
+b(etc.)562 b(T)-92 b(o)393 b(obtain)h(these,)399 b(use)391
+b(the)i Fu(CVodeGet*)h Fx(functions)f(describ)31 b(ed)391
+b(in)i Fp(x)p Fx(5.5.6.)6814 14056 y(The)369 b(unit)h(roundo\256)f(can)
+h(b)31 b(e)369 b(accessed)f(as)h Fu(UNIT)p 27494 14056
+V 419 w(ROUNDOFF)i Fx(de\257ned)d(in)i Fu(sundialstypes.h)p
+Fx(.)0 17553 y Fq(5.6.4)1495 b(Jacobian)500 b(information)g(\(direct)f
+(metho)42 b(d)499 b(with)g(banded)g(Jacobian\))0 19596
+y Fx(If)437 b(the)g(direct)g(linear)h(solv)-31 b(er)438
+b(with)g(banded)f(treatmen)-31 b(t)439 b(of)f(the)f(Jacobian)i(is)e
+(used)f(\(i.e.)698 b Fu(CVBand)437 b Fx(is)g(called)i(in)0
+20925 y(Step)369 b(7)h(of)g Fp(x)p Fx(5.4\),)h(the)e(user)g(ma)-31
+b(y)370 b(pro)-31 b(vide)370 b(a)f(function)i(of)f(t)-31
+b(yp)31 b(e)369 b Fu(CVBandJacFn)i Fx(de\257ned)e(as)g(follo)-31
+b(ws:)p 0 22903 7146 45 v 0 24244 45 1341 v 376 23912
+a Fu(CVBandJacFn)p 7101 24244 V 0 24288 7146 45 v Black
+0 25640 a Fx(De\257nition)p Black 2034 w Fu(typedef)582
+b(void)g(\(*CVBandJacFn\)\()r(long)g(int)f(N,)h(long)g(int)f(mupper,)
+23086 26969 y(long)h(int)f(mlower,)i(BandMat)f(J,)f(realtype)i(t,)23086
+28297 y(N)p 23737 28297 349 45 v 419 w(Vector)f(y,)f(N)p
+30548 28297 V 419 w(Vector)h(fy,)f(void)h(*jac)p 42589
+28297 V 419 w(data,)23086 29625 y(N)p 23737 29625 V 419
+w(Vector)g(tmp1,)g(N)p 32292 29625 V 418 w(Vector)g(tmp2,)g(N)p
+40846 29625 V 419 w(Vector)g(tmp3\);)p Black 0 31405
+a Fx(Purp)31 b(ose)p Black 2884 w(This)343 b(function)g(computes)g(the)
+g(banded)f(Jacobian)i Fm(J)414 b Fx(=)307 b Fm(@)61 b(f)119
+b(=@)61 b(y)383 b Fx(\(or)342 b(a)h(banded)f(appro)-31
+b(ximation)6814 32734 y(to)370 b(it\).)p Black 0 34503
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(N)p Black
+4459 w Fx(is)369 b(the)g(problem)h(size.)p Black 6814
+36050 a Fu(mlower)p Black Black 6814 37598 a(mupper)p
+Black 1554 w Fx(are)f(the)g(lo)-31 b(w)g(er)371 b(and)e(upp)31
+b(er)368 b(half-bandwidths)k(of)e(the)f(Jacobian.)p Black
+6814 39145 a Fu(J)p Black 4459 w Fx(is)g(the)g(output)i(Jacobian)g
+(matrix.)p Black 6814 40693 a Fu(t)p Black 4459 w Fx(is)e(the)g(curren)
+-31 b(t)369 b(v)-61 b(alue)370 b(of)g(the)f(indep)31
+b(enden)-31 b(t)370 b(v)-61 b(ariable.)p Black 6814 42240
+a Fu(y)p Black 4459 w Fx(is)357 b(the)h(curren)-31 b(t)357
+b(v)-61 b(alue)357 b(of)h(the)g(dep)31 b(enden)-31 b(t)357
+b(v)-61 b(ariable)358 b(v)-31 b(ector,)361 b(namely)e(the)f(predicted)
+11854 43569 y(v)-61 b(alue)370 b(of)f Fm(y)40 b Fx(\()p
+Fm(t)p Fx(\).)p Black 6814 45116 a Fu(fy)p Black 3878
+w Fx(is)369 b(the)g(v)-31 b(ector)370 b Fm(f)119 b Fx(\()p
+Fm(t;)184 b(y)40 b Fx(\).)p Black 6814 46664 a Fu(jac)p
+8627 46664 V 419 w(data)p Black 554 w Fx(is)369 b(a)h(p)31
+b(oin)-31 b(ter)370 b(to)g(user)e(data)i(|)f(the)h(same)f(as)g(the)h
+Fu(jac)p 35161 46664 V 419 w(data)f Fx(parameter)h(passed)f(to)11854
+47992 y Fu(CVBandSetJacData)p Fx(.)p Black 6814 49540
+a Fu(tmp1)p Black Black 6814 51087 a(tmp2)p Black Black
+6814 52635 a(tmp3)p Black 2716 w Fx(are)f(p)31 b(oin)-31
+b(ters)369 b(to)g(memory)g(allo)31 b(cated)371 b(for)e(v)-61
+b(ariables)369 b(of)g(t)-31 b(yp)31 b(e)369 b Fu(N)p
+38970 52635 V 418 w(Vector)g Fx(whic)-31 b(h)370 b(can)11854
+53963 y(b)31 b(e)369 b(used)f(b)-31 b(y)370 b Fu(CVBandJacFn)g
+Fx(as)f(temp)31 b(orary)370 b(storage)g(or)f(w)-31 b(ork)370
+b(space.)p Black 0 55732 a(Return)f(v)-61 b(alue)p Black
+554 w(A)369 b Fu(CVBandJacFn)i Fx(function)f(t)-31 b(yp)31
+b(e)370 b(do)31 b(es)369 b(not)h(ha)-31 b(v)g(e)370 b(a)f(return)g(v)
+-61 b(alue.)p Black 0 57501 a(Notes)p Black 4072 w(A)319
+b(user-supplied)g(band)h(Jacobian)h(function)f(m)-31
+b(ust)320 b(load)h(the)f(band)f(matrix)i Fu(J)e Fx(of)h(t)-31
+b(yp)31 b(e)320 b Fu(BandMat)6814 58829 y Fx(with)418
+b(the)f(elemen)-31 b(ts)418 b(of)g(the)f(Jacobian)h Fm(J)106
+b Fx(\()p Fm(t;)184 b(y)40 b Fx(\))418 b(at)g(the)f(p)31
+b(oin)-31 b(t)418 b(\()p Fu(t)p Fx(,)p Fu(y)p Fx(\).)637
+b(Only)418 b(nonzero)f(elemen)-31 b(ts)6814 60158 y(need)436
+b(to)i(b)31 b(e)436 b(loaded)h(in)-31 b(to)438 b Fu(J)f
+Fx(b)31 b(ecause)436 b Fu(J)g Fx(is)h(preset)f(to)h(zero)f(b)31
+b(efore)437 b(the)f(call)i(to)f(the)g(Jacobian)6814 61486
+y(function.)6814 63255 y(The)340 b(accessor)f(macros)h
+Fu(BAND)p 19414 63255 V 419 w(ELEM)p Fx(,)g Fu(BAND)p
+25128 63255 V 419 w(COL)p Fx(,)h(and)e Fu(BAND)p 32384
+63255 V 419 w(COL)p 34546 63255 V 419 w(ELEM)h Fx(allo)-31
+b(w)342 b(the)e(user)f(to)h(read)6814 64583 y(and)365
+b(write)g(band)g(matrix)h(elemen)-31 b(ts)365 b(without)i(making)g(sp)
+31 b(eci\257c)364 b(references)f(to)i(the)g(underlying)6814
+65912 y(represen)-31 b(tation)550 b(of)f(the)g Fu(BandMat)g
+Fx(t)-31 b(yp)31 b(e.)1031 b Fu(BAND)p 28227 65912 V
+419 w(ELEM\(J,)582 b(i,)g(j\))549 b Fx(references)e(the)i(\()p
+Fu(i)p Fx(,)594 b Fu(j)p Fx(\)th)6814 67240 y(elemen)-31
+b(t)284 b(of)g(the)f(band)g(matrix)i Fu(J)p Fx(,)e(coun)-31
+b(ting)285 b(from)f(0.)464 b(This)284 b(macro)f(is)g(for)g(use)g(in)g
+(small)h(problems)6814 68568 y(in)317 b(whic)-31 b(h)319
+b(e\261ciency)f(of)f(access)g(is)g(not)h(a)f(ma)61 b(jor)319
+b(concern.)475 b(Th)-31 b(us,)328 b(in)318 b(terms)f(of)h(indices)f
+Fm(m)g Fx(and)h Fm(n)6814 69897 y Fx(running)351 b(from)h(1)g(to)g
+Fm(N)472 b Fx(with)352 b(\()p Fm(m;)184 b(n)p Fx(\))354
+b(within)f(the)e(band)h(de\257ned)f(b)-31 b(y)351 b Fu(mupper)h
+Fx(and)g Fu(mlower)p Fx(,)k(the)6814 71225 y(Jacobian)438
+b(elemen)-31 b(t)437 b Fm(J)16279 71391 y Fk(m;n)18366
+71225 y Fx(can)f(b)31 b(e)436 b(loaded)h(with)g(the)f(statemen)-31
+b(t)438 b Fu(BAND)p 37771 71225 V 419 w(ELEM\(J,)583
+b(m-1,)e(n-1\))6814 72553 y(=)506 b Fm(J)8515 72719 y
+Fk(m;n)10165 72553 y Fx(.)902 b(The)506 b(elemen)-31
+b(ts)506 b(within)i(the)e(band)f(are)h(those)g(with)h
+Fu(-mupper)f Fp(\267)f Fu(m-n)h Fp(\267)g Fu(mlower)p
+Fx(.)6814 73882 y(Alternativ)-31 b(ely)-92 b(,)460 b
+Fu(BAND)p 16217 73882 V 419 w(COL\(J,)582 b(j\))439 b
+Fx(returns)g(a)g(p)31 b(oin)-31 b(ter)440 b(to)g(the)g(diagonal)i
+(elemen)-31 b(t)440 b(of)g(the)f Fu(j)p Fx(th)6814 75210
+y(column)278 b(of)e Fu(J)p Fx(,)h(and)g(if)g(w)-31 b(e)277
+b(assign)f(this)h(address)f(to)h Fu(realtype)582 b(*col)p
+35434 75210 V 419 w(j)p Fx(,)295 b(then)277 b(the)g Fu(i)p
+Fx(th)f(elemen)-31 b(t)278 b(of)6814 76539 y(the)365
+b Fu(j)p Fx(th)f(column)i(is)e(giv)-31 b(en)366 b(b)-31
+b(y)364 b Fu(BAND)p 22496 76539 V 419 w(COL)p 24658 76539
+V 419 w(ELEM\(col)p 29725 76539 V 420 w(j,)581 b(i,)h(j\))p
+Fx(,)366 b(coun)-31 b(ting)366 b(from)f(0.)491 b(Th)-31
+b(us)365 b(for)6814 77867 y(\()p Fm(m;)184 b(n)p Fx(\))406
+b(within)f(the)f(band,)412 b Fm(J)19357 78033 y Fk(m;n)21412
+77867 y Fx(can)403 b(b)31 b(e)403 b(loaded)i(b)-31 b(y)404
+b(setting)h Fu(col)p 35610 77867 V 419 w(n)581 b(=)g(BAND)p
+40677 77867 V 419 w(COL\(J,)h(n-1\);)p Black Black eop
+%%Page: 57 65
+57 64 bop Black 4000 2701 a Fy(5.6)425 b(User-supplied)h(functions)
+31554 b(57)p 4000 3144 48001 45 v Black 10814 6974 a
+Fu(BAND)p 13208 6974 349 45 v 419 w(COL)p 15370 6974
+V 419 w(ELEM\(col)p 20437 6974 V 419 w(n,)582 b(m-1,)g(n-1\))f(=)361
+b Fm(J)29897 7140 y Fk(m;n)31547 6974 y Fx(.)490 b(The)360
+b(elemen)-31 b(ts)361 b(of)g(the)g Fu(j)p Fx(th)f(column)i(can)e(also)
+10814 8302 y(b)31 b(e)546 b(accessed)g(via)i(ordinary)f(arra)-31
+b(y)547 b(indexing,)593 b(but)547 b(this)g(approac)-31
+b(h)548 b(requires)d(kno)-31 b(wledge)549 b(of)10814
+9631 y(the)425 b(underlying)h(storage)h(for)e(a)g(band)h(matrix)g(of)g
+(t)-31 b(yp)31 b(e)426 b Fu(BandMat)p Fx(.)661 b(The)425
+b(arra)-31 b(y)426 b Fu(col)p 47422 9631 V 419 w(n)f
+Fx(can)g(b)31 b(e)10814 10959 y(indexed)400 b(from)g
+Fp(\241)p Fu(mupper)g Fx(to)g Fu(mlower)p Fx(.)585 b(F)-92
+b(or)399 b(large)h(problems,)408 b(it)400 b(is)g(more)f(e\261cien)-31
+b(t)401 b(to)g(use)e(the)10814 12287 y(com)-31 b(bination)460
+b(of)e Fu(BAND)p 20948 12287 V 419 w(COL)f Fx(and)g Fu(BAND)p
+28131 12287 V 419 w(COL)p 30293 12287 V 419 w(ELEM)g
+Fx(than)g(to)h(use)e(the)h Fu(BAND)p 43922 12287 V 419
+w(ELEM)p Fx(.)h(As)e(in)i(the)10814 13616 y(dense)369
+b(case,)g(these)g(macros)h(all)g(n)-31 b(um)g(b)31 b(er)369
+b(ro)-31 b(ws)370 b(and)f(columns)h(starting)h(from)e(0,)h(not)g(1.)
+10814 15682 y(The)331 b Fu(BandMat)h Fx(t)-31 b(yp)31
+b(e)331 b(and)g(the)g(accessor)f(macros)h Fu(BAND)p 34220
+15682 V 419 w(ELEM)p Fx(,)h Fu(BAND)p 39926 15682 V 419
+w(COL)p Fx(,)g(and)f Fu(BAND)p 47165 15682 V 419 w(COL)p
+49327 15682 V 418 w(ELEM)10814 17011 y Fx(are)369 b(do)31
+b(cumen)-31 b(ted)370 b(in)g Fp(x)p Fx(8.2.)10814 19077
+y(If)472 b(the)g(user's)f Fu(CVBandJacFn)i Fx(function)g(uses)e
+(di\256erence)h(quotien)-31 b(t)474 b(appro)-31 b(ximations,)501
+b(it)473 b(ma)-31 b(y)10814 20406 y(need)412 b(to)h(access)f(quan)-31
+b(tities)415 b(not)e(in)g(the)f(call)i(list.)623 b(These)412
+b(include)h(the)g(curren)-31 b(t)412 b(stepsize,)424
+b(the)10814 21734 y(error)391 b(w)-31 b(eigh)g(ts,)401
+b(etc.)562 b(T)-92 b(o)393 b(obtain)h(these,)399 b(use)391
+b(the)i Fu(CVodeGet*)h Fx(functions)f(describ)31 b(ed)391
+b(in)i Fp(x)p Fx(5.5.6.)10814 23062 y(The)369 b(unit)h(roundo\256)f
+(can)h(b)31 b(e)369 b(accessed)f(as)h Fu(UNIT)p 31494
+23062 V 419 w(ROUNDOFF)i Fx(de\257ned)d(in)i Fu(sundialstypes.h)p
+Fx(.)4000 27345 y Fq(5.6.5)1495 b(Jacobian)500 b(information)g(\(SPGMR)
+d(matrix-v)-42 b(ector)501 b(pro)42 b(duct\))4000 29663
+y Fx(If)475 b(an)g(iterativ)-31 b(e)477 b Fv(spgmr)d
+Fx(linear)i(solv)-31 b(er)475 b(is)g(selected)g(\()p
+Fu(CVSpgmr)i Fx(is)e(called)h(in)f(step)g(7)g(of)h Fp(x)p
+Fx(5.4\))g(the)g(user)e(ma)-31 b(y)4000 30991 y(pro)g(vide)370
+b(a)f(function)i(of)f(t)-31 b(yp)31 b(e)369 b Fu(CVSpgmrJacTimesVecFn)j
+Fx(in)e(the)f(follo)-31 b(wing)373 b(form:)p 4000 33644
+12376 45 v 4000 35231 45 1587 v 4376 34653 a Fu(CVSpgmrJacTimesVecFn)p
+16331 35231 V 4000 35275 12376 45 v Black 4000 36863
+a Fx(De\257nition)p Black 2034 w Fu(typedef)582 b(int)g
+(\(*CVSpgmrJacTimesVecFn\)\()s(N)p 32386 36863 349 45
+v 419 w(Vector)g(v,)f(N)p 39197 36863 V 419 w(Vector)h(Jv,)g(realtype)g
+(t,)31735 38192 y(N)p 32386 38192 V 419 w(Vector)g(y,)f(N)p
+39197 38192 V 419 w(Vector)h(fy,)31735 39520 y(void)g(*jac)p
+37035 39520 V 419 w(data,)g(N)p 41522 39520 V 419 w(Vector)g(tmp\);)p
+Black 4000 41598 a Fx(Purp)31 b(ose)p Black 2884 w(This)370
+b(function)g(computes)g(the)g(pro)31 b(duct)369 b Fm(J)106
+b(v)347 b Fx(=)307 b(\()p Fm(@)61 b(f)119 b(=@)61 b(y)40
+b Fx(\))p Fm(v)410 b Fx(\(or)369 b(an)h(appro)-31 b(ximation)373
+b(to)d(it\).)p Black 4000 43664 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(v)p Black 4459 w Fx(is)369 b(the)g(v)-31
+b(ector)370 b(b)-31 b(y)370 b(whic)-31 b(h)370 b(the)f(Jacobian)i(m)-31
+b(ust)370 b(b)31 b(e)369 b(m)-31 b(ultiplied)372 b(to)e(the)f(righ)-31
+b(t.)p Black 10814 45362 a Fu(Jv)p Black 3878 w Fx(is)369
+b(the)g(output)i(v)-31 b(ector)370 b(computed.)p Black
+10814 47059 a Fu(t)p Black 4459 w Fx(is)f(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)g(the)f(indep)31 b(enden)-31
+b(t)370 b(v)-61 b(ariable.)p Black 10814 48757 a Fu(y)p
+Black 4459 w Fx(is)369 b(the)g(curren)-31 b(t)369 b(v)-61
+b(alue)370 b(of)g(the)f(dep)31 b(enden)-31 b(t)369 b(v)-61
+b(ariable)371 b(v)-31 b(ector.)p Black 10814 50454 a
+Fu(fy)p Black 3878 w Fx(is)369 b(the)g(v)-31 b(ector)370
+b Fm(f)119 b Fx(\()p Fm(t;)184 b(y)40 b Fx(\).)p Black
+10814 52152 a Fu(jac)p 12627 52152 V 419 w(data)p Black
+554 w Fx(is)369 b(a)h(p)31 b(oin)-31 b(ter)370 b(to)g(user)e(data)i(|)f
+(the)h(same)f(as)g(the)h Fu(jac)p 39161 52152 V 419 w(data)f
+Fx(parameter)h(passed)f(to)15854 53480 y Fu(CVSpgmrSetJacData)p
+Fx(.)p Black 10814 55178 a Fu(tmp)p Black 3297 w Fx(is)350
+b(a)h(p)31 b(oin)-31 b(ter)351 b(to)g(memory)g(allo)31
+b(cated)353 b(for)d(a)h(v)-61 b(ariable)351 b(of)g(t)-31
+b(yp)31 b(e)351 b Fu(N)p 43006 55178 V 418 w(Vector)g
+Fx(whic)-31 b(h)352 b(can)15854 56506 y(b)31 b(e)369
+b(used)f(for)h(w)-31 b(ork)370 b(space.)p Black 4000
+58573 a(Return)f(v)-61 b(alue)p Black 554 w(The)321 b(v)-61
+b(alue)322 b(to)g(b)31 b(e)321 b(returned)g(b)-31 b(y)321
+b(the)h(Jacobian)h(times)f(v)-31 b(ector)322 b(function)g(should)g(b)31
+b(e)321 b(0)g(if)h(success-)10814 59901 y(ful.)485 b(An)-31
+b(y)344 b(other)g(return)f(v)-61 b(alue)345 b(will)g(result)f(in)g(an)h
+(unreco)-31 b(v)g(erable)344 b(error)f(of)i(the)f Fv(spgmr)f
+Fx(generic)10814 61229 y(solv)-31 b(er,)370 b(in)g(whic)-31
+b(h)370 b(case)f(the)g(in)-31 b(tegration)372 b(is)d(halted.)p
+Black 4000 63296 a(Notes)p Black 4072 w(If)570 b(the)h(user's)e
+Fu(CVSpgmrJacTimesVecFn)k Fx(function)f(uses)d(di\256erence)h(quotien)
+-31 b(t)573 b(appro)-31 b(xima-)10814 64624 y(tions,)518
+b(it)488 b(ma)-31 b(y)488 b(need)f(to)h(access)e(quan)-31
+b(tities)490 b(not)d(in)h(the)f(call)h(list.)848 b(These)486
+b(include)i(the)f(cur-)10814 65953 y(ren)-31 b(t)462
+b(stepsize,)487 b(the)462 b(error)g(w)-31 b(eigh)g(ts,)488
+b(etc.)772 b(T)-92 b(o)463 b(obtain)i(these,)486 b(use)461
+b(the)i Fu(CVodeGet*)h Fx(functions)10814 67281 y(describ)31
+b(ed)414 b(in)i Fp(x)p Fx(5.5.6.)634 b(The)415 b(unit)h(roundo\256)g
+(can)f(b)31 b(e)415 b(accessed)g(as)g Fu(UNIT)p 41805
+67281 V 419 w(ROUNDOFF)h Fx(de\257ned)g(in)10814 68609
+y Fu(sundialstypes.h)p Fx(.)4000 72892 y Fq(5.6.6)1495
+b(Preconditioning)501 b(\(SPGMR)c(linear)i(system)g(solution\))4000
+75210 y Fx(If)539 b(preconditioning)j(is)d(used,)582
+b(then)540 b(the)f(user)g(m)-31 b(ust)540 b(pro)-31 b(vide)540
+b(a)f Fv(C)h Fx(function)g(to)h(solv)-31 b(e)540 b(the)f(linear)i
+(system)4000 76539 y Fm(P)154 b(z)470 b Fx(=)423 b Fm(r)469
+b Fx(where)438 b Fm(P)592 b Fx(ma)-31 b(y)439 b(b)31
+b(e)438 b(either)g(a)h(left)g(or)f(a)h(righ)-31 b(t)439
+b(preconditioner)g(matrix.)701 b(This)439 b(function)h(m)-31
+b(ust)439 b(b)31 b(e)437 b(of)4000 77867 y(t)-31 b(yp)31
+b(e)370 b Fu(CVSpgmrPrecSolveFn)p Fx(,)i(de\257ned)d(as)g(follo)-31
+b(ws:)p Black Black eop
+%%Page: 58 66
+58 65 bop Black 0 2701 a Fy(58)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 0 5965 11214 45 v 0 7552
+45 1587 v 376 6974 a Fu(CVSpgmrPrecSolveFn)p 11169 7552
+V 0 7596 11214 45 v Black 0 9046 a Fx(De\257nition)p
+Black 2034 w Fu(typedef)582 b(int)g(\(*CVSpgmrPrecSolveFn\)\()s
+(realtype)g(t,)g(N)p 34198 9046 349 45 v 418 w(Vector)g(y,)g(N)p
+41009 9046 V 418 w(Vector)h(fy,)26573 10374 y(N)p 27224
+10374 V 419 w(Vector)f(r,)f(N)p 34035 10374 V 419 w(Vector)h(z,)26573
+11702 y(realtype)g(gamma,)g(realtype)h(delta,)26573 13031
+y(int)f(lr,)f(void)h(*p)p 35360 13031 V 419 w(data,)g(N)p
+39847 13031 V 418 w(Vector)g(tmp\);)p Black 0 14769 a
+Fx(Purp)31 b(ose)p Black 2884 w(This)370 b(function)g(solv)-31
+b(es)370 b(the)f(preconditioning)j(system)d Fm(P)154
+b(z)356 b Fx(=)307 b Fm(r)31 b Fx(.)p Black 0 16558 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(t)p Black 3297 w Fx(is)369
+b(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(indep)31
+b(enden)-31 b(t)370 b(v)-61 b(ariable.)p Black 6814 18116
+a Fu(y)p Black 3297 w Fx(is)369 b(the)g(curren)-31 b(t)369
+b(v)-61 b(alue)370 b(of)f(the)h(dep)31 b(enden)-31 b(t)369
+b(v)-61 b(ariable)370 b(v)-31 b(ector.)p Black 6814 19675
+a Fu(fy)p Black 2716 w Fx(is)369 b(the)g(v)-31 b(ector)370
+b Fm(f)119 b Fx(\()p Fm(t;)184 b(y)40 b Fx(\).)p Black
+6814 21234 a Fu(r)p Black 3297 w Fx(is)369 b(the)g(righ)-31
+b(t-hand)371 b(side)e(v)-31 b(ector)370 b(of)g(the)f(linear)h(system.)p
+Black 6814 22792 a Fu(z)p Black 3297 w Fx(is)f(the)g(output)i(v)-31
+b(ector)369 b(computed.)p Black 6814 24351 a Fu(gamma)p
+Black 973 w Fx(is)g(the)g(scalar)h Fm(\260)430 b Fx(app)31
+b(earing)371 b(in)e(the)g(Newton)i(matrix)g Fm(M)428
+b Fx(=)307 b Fm(I)333 b Fp(\241)246 b Fm(\260)61 b(J)106
+b Fx(.)p Black 6814 25909 a Fu(delta)p Black 973 w Fx(is)497
+b(an)h(input)h(tolerance)g(to)f(b)31 b(e)497 b(used)g(if)i(an)f
+(iterativ)-31 b(e)500 b(metho)31 b(d)498 b(is)g(emplo)-31
+b(y)g(ed)500 b(in)e(the)10692 27238 y(solution.)491 b(In)360
+b(that)i(case,)g(the)f(residual)g(v)-31 b(ector)361 b
+Fm(R)9 b(es)307 b Fx(=)h Fm(r)259 b Fp(\241)229 b Fm(P)154
+b(z)408 b Fx(of)361 b(the)g(system)f(should)10692 28566
+y(b)31 b(e)284 b(made)h(less)f(than)i Fu(delta)f Fx(in)g(w)-31
+b(eigh)g(ted)286 b Fm(l)28691 28732 y Fl(2)29473 28566
+y Fx(norm,)302 b(i.e.,)34629 27647 y Fj(p)p 35736 27647
+8052 45 v 89 x(P)36905 28898 y Fk(i)37273 28566 y Fx(\()p
+Fm(R)9 b(es)39587 28732 y Fk(i)40202 28566 y Fp(\242)246
+b Fm(ew)30 b(t)42492 28732 y Fk(i)42861 28566 y Fx(\))43291
+28246 y Fl(2)44096 28566 y Fm(<)307 b(del)22 b(ta)p Fx(.)10692
+29894 y(T)-92 b(o)369 b(obtain)i(the)f Fu(N)p 18323 29894
+349 45 v 418 w(Vector)g(ewt)p Fx(,)g(call)g Fu(CVodeGetErrWeights)i
+Fx(\(see)d Fp(x)p Fx(5.5.6\).)p Black 6814 31453 a Fu(lr)p
+Black 2716 w Fx(is)362 b(an)g(input)h(\260ag)g(indicating)h(whether)f
+(the)f(preconditioner)h(solv)-31 b(e)363 b(function)h(is)e(to)g(use)
+10692 32781 y(the)369 b(left)h(preconditioner)h(\()p
+Fu(lr=1)p Fx(\))f(or)f(the)h(righ)-31 b(t)370 b(preconditioner)g(\()p
+Fu(lr=2)p Fx(\);)p Black 6814 34340 a Fu(p)p 7465 34340
+V 419 w(data)p Black 554 w Fx(is)397 b(a)g(p)31 b(oin)-31
+b(ter)398 b(to)g(user)e(data)i(|)f(the)g(same)h(as)f(the)g
+Fu(p)p 33143 34340 V 419 w(data)g Fx(parameter)h(passed)f(to)h(the)
+10692 35668 y(function)370 b Fu(CVSpgmrSetPrecData)p
+Fx(.)p Black 6814 37227 a Fu(tmp)p Black 2135 w Fx(is)327
+b(a)g(p)31 b(oin)-31 b(ter)328 b(to)g(memory)g(allo)31
+b(cated)329 b(for)e(a)h(v)-61 b(ariable)328 b(of)f(t)-31
+b(yp)31 b(e)328 b Fu(N)p 37588 37227 V 418 w(Vector)g
+Fx(whic)-31 b(h)328 b(can)f(b)31 b(e)10692 38555 y(used)368
+b(for)h(w)-31 b(ork)370 b(space.)p Black 0 40344 a(Return)f(v)-61
+b(alue)p Black 554 w(The)520 b(v)-61 b(alue)520 b(to)h(b)31
+b(e)519 b(returned)g(b)-31 b(y)520 b(the)g(preconditioner)g(solv)-31
+b(e)521 b(function)g(is)f(a)g(\260ag)g(indicating)6814
+41672 y(whether)252 b(it)h(w)-31 b(as)253 b(successful.)453
+b(This)253 b(v)-61 b(alue)252 b(should)h(b)31 b(e)252
+b(0)g(if)h(successful,)275 b(p)31 b(ositiv)-31 b(e)254
+b(for)e(a)h(reco)-31 b(v)g(erable)6814 43001 y(error)398
+b(\(in)i(whic)-31 b(h)400 b(case)f(the)h(step)f(will)i(b)31
+b(e)399 b(retried\),)407 b(negativ)-31 b(e)402 b(for)d(an)h(unreco)-31
+b(v)g(erable)400 b(error)e(\(in)6814 44329 y(whic)-31
+b(h)370 b(case)f(the)h(in)-31 b(tegration)372 b(is)d(halted\).)0
+47475 y Fq(5.6.7)1495 b(Preconditioning)501 b(\(SPGMR)c(Jacobian)i
+(data\))0 49534 y Fx(If)432 b(the)g(user's)g(preconditioner)h(requires)
+e(that)j(an)-31 b(y)433 b(Jacobian)g(related)g(data)h(b)31
+b(e)431 b(ev)-61 b(aluated)434 b(or)e(prepro)31 b(cessed,)0
+50863 y(then)409 b(this)f(needs)g(to)h(b)31 b(e)408 b(done)h(in)f(a)h
+(user-supplied)f Fv(C)g Fx(function)i(of)f(t)-31 b(yp)31
+b(e)409 b Fu(CVSpgmrPrecSetupFn)p Fx(,)421 b(de\257ned)408
+b(as)0 52191 y(follo)-31 b(ws:)p 0 54107 11214 45 v 0
+55693 45 1587 v 376 55115 a Fu(CVSpgmrPrecSetupFn)p 11169
+55693 V 0 55737 11214 45 v Black 0 57187 a Fx(De\257nition)p
+Black 2034 w Fu(typedef)582 b(int)g(\(*CVSpgmrPrecSetupFn)s
+(\)\(realtype)g(t,)g(N)p 34198 57187 349 45 v 418 w(Vector)g(y,)g(N)p
+41009 57187 V 418 w(Vector)h(fy,)25411 58515 y(booleantype)g(jok,)e
+(booleantype)i(*jcurPtr,)25411 59844 y(realtype)f(gamma,)g(void)g(*p)p
+38847 59844 V 419 w(data,)25411 61172 y(N)p 26062 61172
+V 418 w(Vector)g(tmp1,)g(N)p 34616 61172 V 419 w(Vector)g(tmp2,)25411
+62500 y(N)p 26062 62500 V 418 w(Vector)g(tmp3\);)p Black
+0 64300 a Fx(Purp)31 b(ose)p Black 2884 w(This)337 b(function)h(ev)-61
+b(aluates)338 b(and/or)g(prepro)31 b(cesses)335 b(Jacobian)j(related)g
+(data)g(needed)e(b)-31 b(y)337 b(the)g(pre-)6814 65629
+y(conditioner.)p Black 0 67417 a(Argumen)-31 b(ts)p Black
+1517 w(The)369 b(argumen)-31 b(ts)371 b(of)e(a)h Fu(CVSpgmrPrecSetupFn)
+i Fx(are)d(as)g(follo)-31 b(ws:)p Black 6814 69206 a
+Fu(t)p Black 4040 w Fx(is)370 b(the)f(curren)-31 b(t)369
+b(v)-61 b(alue)369 b(of)h(the)g(indep)31 b(enden)-31
+b(t)369 b(v)-61 b(ariable.)p Black 6814 70765 a Fu(y)p
+Black 4040 w Fx(is)395 b(the)h(curren)-31 b(t)394 b(v)-61
+b(alue)396 b(of)f(the)g(dep)31 b(enden)-31 b(t)395 b(v)-61
+b(ariable)396 b(v)-31 b(ector,)403 b(namely)396 b(the)g(predicted)11435
+72093 y(v)-61 b(alue)370 b(of)g Fm(y)40 b Fx(\()p Fm(t)p
+Fx(\).)p Black 6814 73652 a Fu(fy)p Black 3459 w Fx(is)370
+b(the)f(v)-31 b(ector)370 b Fm(f)119 b Fx(\()p Fm(t;)184
+b(y)40 b Fx(\).)p Black 6814 75210 a Fu(jok)p Black 2878
+w Fx(is)322 b(an)g(input)g(\260ag)g(indicating)i(whether)e
+(Jacobian-related)i(data)e(needs)f(to)i(b)31 b(e)321
+b(recom-)11435 76539 y(puted.)758 b(The)457 b Fu(jok)h
+Fx(argumen)-31 b(t)459 b(pro)-31 b(vides)457 b(for)h(the)f(re-use)g(of)
+h(Jacobian)g(data)h(in)f(the)11435 77867 y(preconditioner)e(solv)-31
+b(e)455 b(function.)749 b Fu(jok)582 b(==)f(FALSE)455
+b Fx(means)g(that)g(Jacobian-related)p Black Black eop
+%%Page: 59 67
+59 66 bop Black 4000 2701 a Fy(5.7)425 b(Ro)35 b(ot\257nding)38101
+b(59)p 4000 3144 48001 45 v Black 15435 6974 a Fx(data)382
+b(m)-31 b(ust)380 b(b)31 b(e)380 b(recomputed)g(from)h(scratc)-31
+b(h.)525 b Fu(jok)581 b(==)h(TRUE)380 b Fx(means)g(that)h(Jacobian)
+15435 8302 y(data,)468 b(if)448 b(sa)-31 b(v)g(ed)447
+b(from)g(the)g(previous)g(call)h(to)f(this)g(function,)468
+b(can)447 b(b)31 b(e)446 b(reused)g(\(with)15435 9631
+y(the)395 b(curren)-31 b(t)393 b(v)-61 b(alue)395 b(of)g
+Fu(gamma)p Fx(\).)568 b(A)394 b(call)h(with)h Fu(jok)581
+b(==)h(TRUE)394 b Fx(can)h(only)g(o)31 b(ccur)393 b(after)15435
+10959 y(a)370 b(call)g(with)h Fu(jok)581 b(==)h(FALSE)p
+Fx(.)p Black 10814 12539 a Fu(jcurPtr)p Black 554 w Fx(is)385
+b(a)h(p)31 b(oin)-31 b(ter)385 b(to)h(an)g(output)g(in)-31
+b(teger)386 b(\260ag)f(whic)-31 b(h)386 b(is)f(to)h(b)31
+b(e)385 b(set)g(to)g Fu(TRUE)h Fx(if)f(Jacobian)15435
+13867 y(data)341 b(w)-31 b(as)339 b(recomputed)h(or)f(to)h
+Fu(FALSE)f Fx(if)h(Jacobian)h(data)f(w)-31 b(as)340 b(not)f
+(recomputed,)347 b(but)15435 15196 y(sa)-31 b(v)g(ed)370
+b(data)h(w)-31 b(as)370 b(reused.)p Black 10814 16776
+a Fu(gamma)p Black 1716 w Fx(is)g(the)f(scalar)h Fm(\260)430
+b Fx(app)31 b(earing)370 b(in)g(the)f(Newton)i(matrix)g
+Fm(M)428 b Fx(=)307 b Fm(I)333 b Fp(\241)246 b Fm(\260)61
+b(P)154 b Fx(.)p Black 10814 18356 a Fu(p)p 11465 18356
+349 45 v 419 w(data)p Black 1297 w Fx(is)577 b(a)g(p)31
+b(oin)-31 b(ter)578 b(to)f(user)f(data,)630 b(the)577
+b(same)g(as)g(the)g Fu(p)p 38539 18356 V 418 w(data)g
+Fx(parameter)h(passed)e(to)15435 19684 y Fu(CVSpgmrSetPrecData)p
+Fx(.)p Black 10814 21264 a Fu(tmp1)p Black Black 10814
+22844 a(tmp2)p Black Black 10814 24424 a(tmp3)p Black
+2297 w Fx(are)407 b(p)31 b(oin)-31 b(ters)407 b(to)g(memory)g(allo)31
+b(cated)409 b(for)e(v)-61 b(ariables)407 b(of)g(t)-31
+b(yp)31 b(e)406 b Fu(N)p 42893 24424 V 419 w(Vector)h
+Fx(whic)-31 b(h)408 b(can)15435 25753 y(b)31 b(e)369
+b(used)g(b)-31 b(y)369 b Fu(CVSpgmrPrecSetupFn)j Fx(as)d(temp)31
+b(orary)370 b(storage)g(or)f(w)-31 b(ork)370 b(space.)p
+Black 4000 27584 a(Return)f(v)-61 b(alue)p Black 554
+w(The)501 b(v)-61 b(alue)501 b(to)h(b)31 b(e)500 b(returned)g(b)-31
+b(y)501 b(the)g(preconditioner)h(setup)f(function)h(is)f(a)g(\260ag)g
+(indicating)10814 28913 y(whether)252 b(it)h(w)-31 b(as)253
+b(successful.)453 b(This)253 b(v)-61 b(alue)252 b(should)h(b)31
+b(e)252 b(0)g(if)h(successful,)275 b(p)31 b(ositiv)-31
+b(e)254 b(for)e(a)h(reco)-31 b(v)g(erable)10814 30241
+y(error)398 b(\(in)i(whic)-31 b(h)400 b(case)f(the)h(step)f(will)i(b)31
+b(e)399 b(retried\),)407 b(negativ)-31 b(e)402 b(for)d(an)h(unreco)-31
+b(v)g(erable)400 b(error)e(\(in)10814 31569 y(whic)-31
+b(h)370 b(case)f(the)h(in)-31 b(tegration)372 b(is)d(halted\).)p
+Black 4000 33401 a(Notes)p Black 4072 w(The)292 b(op)31
+b(erations)294 b(p)31 b(erformed)291 b(b)-31 b(y)293
+b(this)f(function)i(migh)-31 b(t)294 b(include)f(forming)g(a)g(crude)e
+(appro)-31 b(ximate)10814 34730 y(Jacobian,)332 b(and)321
+b(p)31 b(erforming)321 b(an)g(LU)f(factorization)k(on)d(the)f
+(resulting)i(appro)-31 b(ximation)324 b(to)d Fm(M)428
+b Fx(=)10814 36058 y Fm(I)332 b Fp(\241)246 b Fm(\260)61
+b(J)106 b Fx(.)10814 37890 y(Eac)-31 b(h)440 b(call)h(to)f(the)f
+(preconditioner)i(setup)e(function)i(is)e(preceded)g(b)-31
+b(y)439 b(a)h(call)g(to)g(the)g Fu(CVRhsFn)10814 39218
+y Fx(user)295 b(function)j(with)g(the)e(same)h Fu(\(t,y\))g
+Fx(argumen)-31 b(ts.)469 b(Th)-31 b(us)297 b(the)g(preconditioner)g
+(setup)f(function)10814 40546 y(can)421 b(use)g(an)-31
+b(y)422 b(auxiliary)h(data)f(that)h(is)e(computed)h(and)f(sa)-31
+b(v)g(ed)422 b(during)f(the)g(ev)-61 b(aluation)424 b(of)e(the)10814
+41875 y(ODE)369 b(righ)-31 b(t)370 b(hand)g(side.)10814
+43706 y(This)285 b(function)h(is)f(not)g(called)h(in)f(adv)-61
+b(ance)285 b(of)g(ev)-31 b(ery)285 b(call)h(to)f(the)g(preconditioner)h
+(solv)-31 b(e)286 b(function,)10814 45035 y(but)491 b(rather)g(is)g
+(called)i(only)f(as)f(often)h(as)f(needed)g(to)h(ac)-31
+b(hiev)g(e)492 b(con)-31 b(v)g(ergence)493 b(in)e(the)g(Newton)10814
+46363 y(iteration.)10814 48195 y(If)299 b(the)g(user's)f
+Fu(CVSpgmrPrecSetupFn)k Fx(function)e(uses)e(di\256erence)h(quotien)-31
+b(t)301 b(appro)-31 b(ximations,)317 b(it)10814 49523
+y(ma)-31 b(y)250 b(need)f(to)h(access)f(quan)-31 b(tities)251
+b(not)f(in)g(the)f(call)h(list.)454 b(These)249 b(include)h(the)f
+(curren)-31 b(t)249 b(stepsize,)274 b(the)10814 50852
+y(error)391 b(w)-31 b(eigh)g(ts,)401 b(etc.)562 b(T)-92
+b(o)393 b(obtain)h(these,)399 b(use)391 b(the)i Fu(CVodeGet*)h
+Fx(functions)f(describ)31 b(ed)391 b(in)i Fp(x)p Fx(5.5.6.)10814
+52180 y(The)369 b(unit)h(roundo\256)f(can)h(b)31 b(e)369
+b(accessed)f(as)h Fu(UNIT)p 31494 52180 V 419 w(ROUNDOFF)i
+Fx(de\257ned)d(in)i Fu(sundialstypes.h)p Fx(.)4000 56001
+y Fs(5.7)1793 b(Ro)50 b(ot\257nding)4000 58482 y Fx(While)285
+b(in)-31 b(tegrating)288 b(the)e(IVP)-92 b(,)285 b Fv(cv)-25
+b(ode)285 b Fx(has)g(the)g(capabilit)-31 b(y)289 b(of)c(\257nding)h
+(the)f(ro)31 b(ots)285 b(of)g(a)h(set)f(of)g(user-de\257ned)f(func-)
+4000 59811 y(tions.)492 b(This)365 b(section)g(describ)31
+b(es)364 b(the)g(user-callable)i(functions)g(used)e(to)h(initialize)j
+(and)c(de\257ne)h(the)f(ro)31 b(ot\257nding)4000 61139
+y(problem)334 b(and)g(obtain)h(solution)g(information,)344
+b(and)333 b(it)h(also)g(describ)31 b(es)332 b(the)i(required)f
+(additional)j(user-supplied)4000 62467 y(function.)4000
+65727 y Fq(5.7.1)1495 b(User-callable)501 b(functions)f(for)e(ro)42
+b(ot\257nding)p 4000 68528 8308 45 v 4000 69868 45 1341
+v 4376 69536 a Fu(CVodeRootInit)p 12263 69868 V 4000
+69912 8308 45 v Black 4000 71295 a Fx(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeRootInit\(cvode)p 25991 71295
+349 45 v 421 w(mem,)h(nrtfn,)g(g,)f(g)p 35710 71295 V
+419 w(data\);)p Black 4000 73127 a Fx(Description)p Black
+1286 w(The)387 b(function)h Fu(CVodeRootInit)h Fx(sp)31
+b(eci\257es)386 b(that)i(the)f(ro)31 b(ots)387 b(of)g(a)g(set)g(of)g
+(functions)h Fm(g)47431 73293 y Fk(i)47799 73127 y Fx(\()p
+Fm(t;)184 b(y)40 b Fx(\))388 b(are)10814 74455 y(to)370
+b(b)31 b(e)369 b(found)g(while)i(the)e(IVP)g(is)g(b)31
+b(eing)370 b(solv)-31 b(ed.)p Black 4000 76287 a(Argumen)g(ts)p
+Black Black 1517 w Fu(cvode)p 13789 76287 V 419 w(mem)p
+Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k)370 b(returned)f(b)-31
+b(y)369 b Fu(CVodeCreate)p Fx(.)p Black 10814 77867 a
+Fu(nrtfn)p Black 2716 w Fx(\()p Fu(int)p Fx(\))h(is)g(the)f(n)-31
+b(um)g(b)31 b(er)369 b(of)h(ro)31 b(ot)370 b(functions)g
+Fm(g)35391 78033 y Fk(i)35759 77867 y Fx(.)p Black Black
+eop
+%%Page: 60 68
+60 67 bop Black 0 2701 a Fy(60)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black Black 6814 6974 a Fu(g)p
+Black 5040 w Fx(\()p Fu(CVRootFn)p Fx(\))482 b(is)d(the)h
+Fv(C)g Fx(function)h(whic)-31 b(h)480 b(de\257nes)f(the)h
+Fu(nrtfn)h Fx(functions)f Fm(g)45296 7140 y Fk(i)45665
+6974 y Fx(\()p Fm(t;)184 b(y)40 b Fx(\))12435 8302 y(whose)370
+b(ro)31 b(ots)369 b(are)g(sough)-31 b(t.)494 b(See)369
+b Fp(x)p Fx(5.7.2)i(for)e(details.)p Black 6814 9867
+a Fu(g)p 7465 9867 349 45 v 419 w(data)p Black 2297 w
+Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f(user)f(data)j(for)e(use)g(b)-31
+b(y)369 b(the)h(user's)e(ro)31 b(ot)370 b(function)g
+Fm(g)40 b Fx(.)p Black 0 11667 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 6814 13468 a Fu(CV)p 8046 13468 V 419 w(SUCCESS)p
+Black 2716 w Fx(The)h(call)g(to)g Fu(CVodeRootInit)h
+Fx(w)-31 b(as)370 b(successful.)p Black 6814 15032 a
+Fu(CV)p 8046 15032 V 419 w(MEM)p 10208 15032 V 419 w(NULL)p
+Black 2297 w Fx(The)g Fu(cvode)p 20429 15032 V 419 w(mem)f
+Fx(argumen)-31 b(t)371 b(w)-31 b(as)370 b Fu(NULL)p Fx(.)p
+Black 6814 16596 a Fu(CV)p 8046 16596 V 419 w(MEM)p 10208
+16596 V 419 w(FAIL)p Black 2297 w Fx(A)f(memory)h(allo)31
+b(cation)373 b(failed.)p Black 6814 18161 a Fu(CV)p 8046
+18161 V 419 w(RTFUNC)p 11951 18161 V 419 w(NULL)p Black
+554 w Fx(The)d(function)g Fu(g)f Fx(is)g Fu(NULL)p Fx(,)h(but)g
+Fu(nrtfn)p Fm(>)308 b Fx(0.)p Black 0 19961 a(Notes)p
+Black 4072 w(If)394 b(a)g(new)h(IVP)f(is)g(to)h(b)31
+b(e)394 b(solv)-31 b(ed)395 b(with)g(a)g(call)g(to)g
+Fu(CVodeReInit)p Fx(,)402 b(where)394 b(the)h(new)f(IVP)g(has)h(no)6814
+21290 y(ro)31 b(ot\257nding)371 b(problem)f(but)f(the)g(prior)g(one)h
+(did,)g(then)f(call)i Fu(CVodeRootInit)g Fx(with)f Fu(nrtfn)p
+Fx(=)308 b(0.)0 23033 y(There)369 b(are)g(t)-31 b(w)g(o)371
+b(optional)h(output)e(functions)g(asso)31 b(ciated)371
+b(with)f(ro)31 b(ot\257nding.)p 0 24979 10052 45 v 0
+26320 45 1341 v 376 25988 a Fu(CVodeGetRootInfo)p 10007
+26320 V 0 26364 10052 45 v Black 0 27731 a Fx(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetRootInfo\(cvode)p
+23734 27731 349 45 v 422 w(mem,)g(rootsfound\);)p Black
+0 29532 a Fx(Description)p Black 1286 w(The)289 b(function)i
+Fu(CVodeGetRootInfo)g Fx(returns)d(an)h(arra)-31 b(y)290
+b(sho)-31 b(wing)290 b(whic)-31 b(h)290 b(functions)g(w)-31
+b(ere)289 b(found)6814 30860 y(to)370 b(ha)-31 b(v)g(e)370
+b(a)g(ro)31 b(ot.)p Black 0 32660 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 9789 32660 V 419 w(mem)p
+Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 34225
+a Fu(rootsfound)p Black 555 w Fx(\()p Fu(int)582 b(*)p
+Fx(\))452 b(the)h(indices)f(of)g(the)h(user)d(functions)j
+Fm(g)34248 34391 y Fk(i)35069 34225 y Fx(found)f(to)h(ha)-31
+b(v)g(e)453 b(a)f(ro)31 b(ot.)742 b(F)-92 b(or)12435
+35553 y Fm(i)308 b Fx(=)f(0)p Fm(;)184 b(:)g(:)g(:)189
+b(;)p Fu(nrtfn)p Fp(\241)p Fx(1,)371 b Fu(rootsfound)p
+Fx([)p Fm(i)p Fx(]=)310 b(1)370 b(if)f Fm(g)32559 35719
+y Fk(i)33297 35553 y Fx(has)g(a)g(ro)31 b(ot,)371 b(and)e(=)308
+b(0)369 b(if)h(not.)p Black 0 37354 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 6814 39154 a Fu(CV)p 8046
+39154 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j(output)e(v)-61
+b(alues)370 b(ha)-31 b(v)g(e)370 b(b)31 b(een)368 b(successfully)i
+(set.)p Black 6814 40719 a Fu(CV)p 8046 40719 V 419 w(MEM)p
+10208 40719 V 419 w(NULL)p Black 554 w Fx(The)f Fu(cvode)p
+18685 40719 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)p Black 0 43296 a(Notes)p Black
+5200 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Ff(!)1497
+b Fx(The)370 b(user)e(m)-31 b(ust)370 b(allo)31 b(cate)371
+b(memory)g(for)e(the)g(v)-31 b(ector)370 b Fu(rootsfound)p
+Fx(.)p 0 45913 10633 45 v 0 47254 45 1341 v 376 46922
+a Fu(CVodeGetNumGEvals)p 10588 47254 V 0 47298 10633
+45 v Black 0 48665 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeGetNumGEvals\(cvode)p 24315 48665 349 45 v
+422 w(mem,)h(&ngevals\);)p Black 0 50466 a Fx(Description)p
+Black 1286 w(The)367 b(function)h Fu(CVodeGetNumGEvals)h
+Fx(returns)d(the)h(cum)-31 b(ulativ)g(e)370 b(n)-31 b(um)g(b)31
+b(er)366 b(of)i(calls)f(to)h(the)f(user)6814 51794 y(ro)31
+b(ot)370 b(function)g Fm(g)40 b Fx(.)p Black 0 53594
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p 9789
+53594 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p
+Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25
+b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814
+55159 a Fu(ngevals)p Black 1554 w Fx(\()p Fu(long)582
+b(int)p Fx(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)
+g(user's)e(function)i Fu(g)g Fx(so)f(far.)p Black 0 56959
+a(Return)g(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fx(\))g(is)f(one)g(of)p Black 6814 58760 a
+Fu(CV)p 8046 58760 V 419 w(SUCCESS)p Black 973 w Fx(The)g(optional)j
+(output)e(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g
+(set.)p Black 6814 60324 a Fu(CV)p 8046 60324 V 419 w(MEM)p
+10208 60324 V 419 w(NULL)p Black 554 w Fx(The)g Fu(cvode)p
+18685 60324 V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fx(.)0 63501 y Fq(5.7.2)1495 b(User-supplied)501
+b(function)e(for)f(ro)42 b(ot\257nding)0 65571 y Fx(If)428
+b(a)h(ro)31 b(ot\257nding)430 b(problem)g(is)e(to)i(b)31
+b(e)428 b(solv)-31 b(ed)429 b(during)g(the)g(in)-31 b(tegration)431
+b(of)e(the)g(ODE)g(system,)444 b(the)429 b(user)e(m)-31
+b(ust)0 66900 y(supply)369 b(a)h Fv(C)f Fx(function)i(of)e(t)-31
+b(yp)31 b(e)370 b Fu(CVRootFn)p Fx(,)h(de\257ned)d(as)i(follo)-31
+b(ws:)p 0 68846 5402 45 v 0 70187 45 1341 v 376 69855
+a Fu(CVRootFn)p 5358 70187 V 0 70231 5402 45 v Black
+0 71598 a Fx(De\257nition)p Black 2034 w Fu(typedef)582
+b(void)g(\(*CVRootFn\)\()r(realtype)g(t,)f(N)p 28967
+71598 349 45 v 419 w(Vector)h(y,)g(realtype)g(*gout,)21343
+72926 y(void)f(*g)p 25480 72926 V 419 w(data\);)p Black
+0 74738 a Fx(Purp)31 b(ose)p Black 2884 w(This)508 b(function)h
+(computes)f(a)g(v)-31 b(ector-v)-61 b(alued)509 b(function)g
+Fm(g)40 b Fx(\()p Fm(t;)184 b(y)40 b Fx(\))509 b(suc)-31
+b(h)507 b(that)i(the)f(ro)31 b(ots)507 b(of)i(the)6814
+76066 y Fu(nrtfn)370 b Fx(comp)31 b(onen)-31 b(ts)370
+b Fm(g)16711 76232 y Fk(i)17080 76066 y Fx(\()p Fm(t;)184
+b(y)40 b Fx(\))370 b(are)f(to)h(b)31 b(e)368 b(found)i(during)g(the)f
+(in)-31 b(tegration.)p Black 0 77867 a(Argumen)g(ts)p
+Black Black 1517 w Fu(t)p Black 3297 w Fx(is)369 b(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(indep)31 b(enden)-31
+b(t)370 b(v)-61 b(ariable.)p Black Black eop
+%%Page: 61 69
+61 68 bop Black 4000 2701 a Fy(5.8)425 b(Preconditioner)i(mo)35
+b(dules)31418 b(61)p 4000 3144 48001 45 v Black Black
+10814 6974 a Fu(y)p Black 3297 w Fx(is)369 b(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(dep)31 b(enden)-31
+b(t)369 b(v)-61 b(ariable)370 b(v)-31 b(ector,)371 b
+Fm(y)40 b Fx(\()p Fm(t)p Fx(\).)p Black 10814 8517 a
+Fu(gout)p Black 1554 w Fx(is)369 b(the)g(output)i(arra)-31
+b(y)-92 b(,)369 b(of)h(length)g Fu(nrtfn)p Fx(,)h(with)f(comp)31
+b(onen)-31 b(ts)370 b Fm(g)41820 8683 y Fk(i)42189 8517
+y Fx(\()p Fm(t;)184 b(y)40 b Fx(\).)p Black 10814 10060
+a Fu(g)p 11465 10060 349 45 v 419 w(data)p Black 554
+w Fx(is)535 b(a)g(p)31 b(oin)-31 b(ter)536 b(to)g(user)f(data)h(|)f
+(the)h(same)f(as)g(the)h Fu(g)p 38663 10060 V 419 w(data)f
+Fx(parameter)h(passed)f(to)14692 11389 y Fu(CVodeSetGdata)p
+Fx(.)p Black 4000 13153 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(A)369 b Fu(CVRootFn)h Fx(function)h(t)-31
+b(yp)31 b(e)370 b(do)31 b(es)368 b(not)i(ha)-31 b(v)g(e)371
+b(a)e(return)g(v)-61 b(alue.)p Black 4000 14918 a(Notes)p
+Black 4072 w(Allo)31 b(cation)372 b(of)e(memory)g(for)f
+Fu(gout)h Fx(is)f(handled)h(within)h Fv(cv)-25 b(ode)p
+Fx(.)4000 18573 y Fs(5.8)1793 b(Preconditioner)600 b(mo)50
+b(dules)4000 20997 y Fx(The)317 b(e\261ciency)h(of)g(Krylo)-31
+b(v)318 b(iterativ)-31 b(e)319 b(metho)31 b(ds)317 b(for)g(the)h
+(solution)g(of)g(linear)g(systems)e(can)i(b)31 b(e)316
+b(greatly)j(enhanced)4000 22326 y(through)413 b(preconditioning.)625
+b(F)-92 b(or)412 b(problems)g(in)h(whic)-31 b(h)413 b(the)g(user)e
+(cannot)j(de\257ne)e(a)h(more)f(e\256ectiv)-31 b(e,)425
+b(problem-)4000 23654 y(sp)31 b(eci\257c)387 b(preconditioner,)395
+b Fv(cv)-25 b(ode)388 b Fx(pro)-31 b(vides)388 b(a)g(banded)g
+(preconditioner)h(in)f(the)g(mo)31 b(dule)389 b Fv(cvbandpre)f
+Fx(and)h(a)4000 24982 y(band-blo)31 b(c)-31 b(k-diagonal)373
+b(preconditioner)e(mo)31 b(dule)370 b Fv(cvbbdpre)p Fx(.)4000
+28075 y Fq(5.8.1)1495 b(A)499 b(serial)g(banded)h(preconditioner)g(mo)
+42 b(dule)4000 30119 y Fx(This)305 b(preconditioner)g(pro)-31
+b(vides)305 b(a)f(band)h(matrix)g(preconditioner)h(based)e(on)g
+(di\256erence)g(quotien)-31 b(ts)306 b(of)f(the)f(ODE)4000
+31447 y(righ)-31 b(t-hand)318 b(side)f(function)i Fu(f)p
+Fx(.)475 b(It)317 b(generates)g(a)h(band)f(matrix)h(of)g(bandwidth)h
+Fm(m)37968 31613 y Fk(l)38449 31447 y Fx(+)142 b Fm(m)40424
+31613 y Fk(u)41144 31447 y Fx(+)g(1,)328 b(where)317
+b(the)g(n)-31 b(um)g(b)31 b(er)4000 32775 y(of)271 b(sup)31
+b(er-diagonals)271 b(\()p Fm(m)14321 32941 y Fk(u)14900
+32775 y Fx(,)290 b(the)271 b(upp)31 b(er)269 b(half-bandwidth\))k(and)d
+(sub-diagonals)i(\()p Fm(m)38681 32941 y Fk(l)39022 32775
+y Fx(,)290 b(the)270 b(lo)-31 b(w)g(er)272 b(half-bandwidth\))4000
+34104 y(are)340 b(sp)31 b(eci\257ed)339 b(b)-31 b(y)340
+b(the)g(user)e(and)i(uses)f(this)h(to)g(form)h(a)f(preconditioner)h
+(for)e(use)g(with)i(the)f(Krylo)-31 b(v)341 b(linear)f(solv)-31
+b(er)4000 35432 y(in)447 b Fv(cvspgmr)p Fx(.)726 b(Although)449
+b(this)e(matrix)i(is)e(in)-31 b(tended)448 b(to)g(appro)-31
+b(ximate)450 b(the)d(Jacobian)h Fm(@)61 b(f)119 b(=@)61
+b(y)40 b Fx(,)468 b(it)448 b(ma)-31 b(y)448 b(b)31 b(e)447
+b(a)4000 36760 y(v)-31 b(ery)424 b(crude)f(appro)-31
+b(ximation.)661 b(The)424 b(true)g(Jacobian)h(need)f(not)h(b)31
+b(e)423 b(banded,)439 b(or)423 b(its)i(true)e(bandwidth)j(ma)-31
+b(y)425 b(b)31 b(e)4000 38089 y(larger)323 b(than)g Fm(m)10604
+38255 y Fk(l)11097 38089 y Fx(+)153 b Fm(m)13083 38255
+y Fk(u)13815 38089 y Fx(+)g(1,)332 b(as)323 b(long)h(as)f(the)f(banded)
+h(appro)-31 b(ximation)327 b(generated)c(here)f(is)h(su\261cien)-31
+b(tly)324 b(accurate)4000 39417 y(to)370 b(sp)31 b(eed)368
+b(con)-31 b(v)g(ergence)370 b(as)f(a)h(preconditioner.)5660
+40745 y(In)248 b(order)g(to)h(use)f(the)h Fv(cvbandpre)g
+Fx(mo)31 b(dule,)274 b(the)249 b(user)e(need)i(not)g(de\257ne)f(an)-31
+b(y)249 b(additional)j(functions.)453 b(Besides)4000
+42074 y(the)375 b(header)g(\257les)g(required)g(for)g(the)g(in)-31
+b(tegration)378 b(of)e(the)f(ODE)g(problem)h(\(see)f
+Fp(x)p Fx(5.3\),)j(to)e(use)f(the)g Fv(cvbandpre)4000
+43402 y Fx(mo)31 b(dule,)514 b(the)484 b(main)h(program)f(m)-31
+b(ust)484 b(include)h(the)f(header)f(\257le)h Fu(cvbandpre.h)h
+Fx(whic)-31 b(h)485 b(declares)e(the)h(needed)4000 44730
+y(function)j(protot)-31 b(yp)31 b(es.)843 b(The)486 b(follo)-31
+b(wing)489 b(is)c(a)h(summary)g(of)g(the)g(usage)g(of)g(this)g(mo)31
+b(dule)486 b(and)g(describ)31 b(es)485 b(the)4000 46059
+y(sequence)374 b(of)h(calls)h(in)f(the)g(user)f(main)i(program.)510
+b(Steps)374 b(that)i(are)f(unc)-31 b(hanged)375 b(from)g(the)g(user)f
+(main)i(program)4000 47387 y(presen)-31 b(ted)369 b(in)g
+Fp(x)p Fx(5.4)i(are)e(gra)-31 b(y)g(ed-out.)p Black 4553
+49575 a(1.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(Set)426
+b(problem)f(dimensions)p Black Black 4553 51893 a Fx(2.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(Set)h(v)-35 b(ector)424
+b(of)h(initial)e(v)-71 b(alues)p Black Black 4553 54211
+a Fx(3.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(Create)426
+b Fv(cv)-25 b(ode)425 b Fy(ob)71 b(ject)p Black Black
+4553 56529 a Fx(4.)p Black 0.5 0.5 0.5 TeXcolorrgb 493
+w Fy(Set)426 b(optional)e(inputs)p Black Black 4553 58847
+a Fx(5.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(Allo)35
+b(cate)425 b(in)-35 b(ternal)425 b(memory)p Black Black
+4553 61165 a Fx(6.)p Black 493 w Fy(Initialize)e(the)i
+Fv(cvbandpre)h Fy(preconditioner)g(mo)35 b(dule)5906
+63047 y Fx(Sp)c(ecify)370 b(the)f(upp)31 b(er)369 b(and)g(lo)-31
+b(w)g(er)371 b(half-bandwidths)g Fu(mu)f Fx(and)f Fu(ml)g
+Fx(and)h(call)5906 64929 y Fu(bp)p 7138 64929 V 419 w(data)582
+b(=)f(CVBandPrecAlloc\(cvode)p 23826 64929 V 422 w(mem,)g(N,)h(mu,)g
+(ml\);)5906 66810 y Fx(to)455 b(allo)31 b(cate)457 b(memory)e(for)f
+(and)h(initialize)i(a)e(data)g(structure)f Fu(bp)p 34151
+66810 V 418 w(data)h Fx(to)g(b)31 b(e)454 b(passed)f(to)i(the)g
+Fv(cvspgmr)5906 68139 y Fx(linear)370 b(solv)-31 b(er.)p
+Black 4553 70457 a(7.)p Black 493 w Fy(A)c(ttac)g(h)424
+b(the)h Fv(cvspgmr)f Fy(linear)g(solv)-35 b(er)5906 72339
+y Fu(flag)582 b(=)f(CVBPSpgmr\(cvode)p 18759 72339 V
+421 w(mem,)h(pretype,)g(maxl,)g(bp)p 31965 72339 V 419
+w(data\);)5906 74220 y Fx(The)366 b(function)g Fu(CVBPSpgmr)g
+Fx(is)f(a)h(wrapp)31 b(er)364 b(around)h(the)h Fv(cvspgmr)e
+Fx(sp)31 b(eci\257cation)366 b(function)h Fu(CVSpgmr)f
+Fx(and)5906 75549 y(p)31 b(erforms)369 b(the)h(follo)-31
+b(wing)372 b(actions:)p Black 7788 77867 a Fp(\262)p
+Black 1 w Fx(A)-31 b(ttac)g(hes)370 b(the)g Fv(cvspgmr)e
+Fx(linear)i(solv)-31 b(er)370 b(to)g(the)f(main)i Fv(cv)-25
+b(ode)369 b Fx(solv)-31 b(er)370 b(memory;)p Black Black
+eop
+%%Page: 62 70
+62 69 bop Black 0 2701 a Fy(62)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black Black 3788 6974 a Fp(\262)p
+Black 1 w Fx(Sets)369 b(the)g(preconditioner)i(data)f(structure)f(for)g
+Fv(cvbandpre)p Fx(;)p Black 3788 8545 a Fp(\262)p Black
+1 w Fx(Sets)g(the)g(preconditioner)i(setup)e(function)h(for)g
+Fv(cvbandpre)p Fx(;)p Black 3788 10115 a Fp(\262)p Black
+1 w Fx(Sets)f(the)g(preconditioner)i(solv)-31 b(e)370
+b(function)g(for)g Fv(cvbandpre)p Fx(;)1906 12340 y(The)f(argumen)-31
+b(ts)370 b Fu(pretype)g Fx(and)f Fu(maxl)g Fx(are)g(describ)31
+b(ed)368 b(b)31 b(elo)-31 b(w.)494 b(The)369 b(last)g(argumen)-31
+b(t)371 b(of)e Fu(CVBPSpgmr)h Fx(is)f(the)1906 13668
+y(p)31 b(oin)-31 b(ter)370 b(to)g(the)g Fv(cvbandpre)g
+Fx(data)g(returned)f(b)-31 b(y)369 b Fu(CVBandPrecAlloc)p
+Fx(.)p Black 553 15892 a(8.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fy(Set)426 b(linear)e(solv)-35 b(er)425 b(optional)f(inputs)p
+Black 1906 17774 a Fx(Note)279 b(that)g(the)g(user)d(should)j(not)f(o)
+-31 b(v)g(erwrite)280 b(the)e(preconditioner)h(data,)298
+b(setup)278 b(function,)298 b(or)278 b(solv)-31 b(e)278
+b(function)1906 19103 y(through)370 b(calls)g(to)g Fv(cvspgmr)f
+Fx(optional)j(input)d(functions.)p Black 553 21327 a(9.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(Adv)-71 b(ance)426
+b(solution)f(in)f(time)p Black Black 0 23551 a Fx(10.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(Deallo)35 b(cate)425
+b(memory)h(for)f(solution)g(v)-35 b(ector)p Black Black
+0 25776 a Fx(11.)p Black 493 w Fy(F)-106 b(ree)426 b(the)f
+Fv(cvbandpre)g Fy(data)f(structure)1906 27658 y Fu(CVBandPrecFree\(bp)p
+11853 27658 349 45 v 421 w(data\);)p Black 0 29882 a
+Fx(12.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(F)-106
+b(ree)426 b(solv)-35 b(er)425 b(memory)p Black 1660 31695
+a Fx(The)377 b(three)f(user-callable)h(functions)h(that)f(initialize,)k
+(attac)-31 b(h,)381 b(and)376 b(deallo)31 b(cate)379
+b(the)d Fv(cvbandpre)h Fx(precon-)0 33023 y(ditioner)370
+b(mo)31 b(dule)371 b(\(steps)e(6,)h(7,)g(and)f(11)h(ab)31
+b(o)-31 b(v)g(e\))371 b(are)e(describ)31 b(ed)368 b(in)i(more)f(detail)
+i(b)31 b(elo)-31 b(w.)p 0 34918 9470 45 v 0 36258 45
+1341 v 376 35926 a Fu(CVBandPrecAlloc)p 9426 36258 V
+0 36302 9470 45 v Black 0 37655 a Fx(Call)p Black 4848
+w Fu(bp)p 8046 37655 349 45 v 419 w(data)581 b(=)h
+(CVBandPrecAlloc\(cvode)p 24734 37655 V 421 w(mem,)g(N,)f(mu,)h(ml\);)p
+Black 0 39326 a Fx(Description)p Black 1286 w(The)378
+b(function)i Fu(CVBandPrecAlloc)g Fx(initializes)h(and)d(allo)31
+b(cates)380 b(memory)g(for)e(the)g Fv(cvbandpre)6814
+40654 y Fx(preconditioner.)p Black 0 42325 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 42325 V 419
+w(mem)p Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370
+b Fx(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 43774
+a Fu(N)p Black 5040 w Fx(\()p Fu(long)582 b(int)p Fx(\))370
+b(problem)g(dimension.)p Black 6814 45224 a Fu(mu)p Black
+4459 w Fx(\()p Fu(long)582 b(int)p Fx(\))281 b(upp)31
+b(er)278 b(half-bandwidth)283 b(of)d(the)g(problem)g(Jacobian)i(appro)
+-31 b(ximation.)p Black 6814 46673 a Fu(ml)p Black 4459
+w Fx(\()p Fu(long)582 b(int)p Fx(\))320 b(lo)-31 b(w)g(er)321
+b(half-bandwidth)h(of)e(the)f(problem)h(Jacobian)h(appro)-31
+b(ximation.)p Black 0 48344 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(If)453 b(successful,)474 b Fu(CVBandPrecAlloc)455
+b Fx(returns)d(a)i(p)31 b(oin)-31 b(ter)454 b(to)g(the)f(newly)i
+(created)e Fv(cvbandpre)6814 49673 y Fx(memory)306 b(blo)31
+b(c)-31 b(k)306 b(\(of)h(t)-31 b(yp)31 b(e)305 b Fu(void)582
+b(*)p Fx(\).)472 b(If)305 b(an)h(error)e(o)31 b(ccurred,)317
+b Fu(CVBandPrecAlloc)308 b Fx(returns)c Fu(NULL)p Fx(.)p
+Black 0 51343 a(Notes)p Black 4072 w(The)379 b(banded)g(appro)-31
+b(ximate)382 b(Jacobian)f(will)f(ha)-31 b(v)g(e)380 b(its)g(nonzeros)f
+(only)h(in)f(lo)31 b(cations)381 b(\()p Fm(i;)184 b(j)63
+b Fx(\))382 b(with)6814 52672 y Fp(\241)p Fu(ml)369 b
+Fp(\267)308 b Fm(j)h Fp(\241)246 b Fm(i)308 b Fp(\267)369
+b Fu(mu)p Fx(.)p 0 54854 5984 45 v 0 56441 45 1587 v
+376 55863 a Fu(CVBPSpgmr)p 5939 56441 V 0 56485 5984
+45 v Black 0 57765 a Fx(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVBPSpgmr\(cvode)p 19667 57765 349 45 v 421 w(mem,)g(pretype,)i
+(maxl,)f(bp)p 32873 57765 V 418 w(data\);)p Black 0 59436
+a Fx(Description)p Black 1286 w(The)314 b(function)i
+Fu(CVBPSpgmr)f Fx(links)f(the)h Fv(cvbandpre)f Fx(data)h(to)g(the)f
+Fv(cvspgmr)f Fx(linear)i(solv)-31 b(er)315 b(and)6814
+60764 y(attac)-31 b(hes)371 b(the)e(latter)i(to)f(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 0 62435 a(Argumen)g(ts)p Black Black 1517 w Fu(cvode)p
+9789 62435 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 63884 a Fu(pretype)p Black 1554 w Fx(\()p
+Fu(int)p Fx(\))370 b(preconditioning)i(t)-31 b(yp)31
+b(e.)493 b(Must)369 b(b)31 b(e)369 b(one)g(of)h Fu(PREC)p
+36261 63884 V 419 w(LEFT)g Fx(or)f Fu(PREC)p 43054 63884
+V 419 w(RIGHT)p Fx(.)p Black 6814 65334 a Fu(maxl)p Black
+3297 w Fx(\()p Fu(int)p Fx(\))406 b(maxim)-31 b(um)407
+b(dimension)f(of)f(the)g(Krylo)-31 b(v)406 b(subspace)e(to)h(b)31
+b(e)404 b(used.)598 b(P)-31 b(ass)405 b(0)g(to)12435
+66662 y(use)369 b(the)g(default)i(v)-61 b(alue)369 b
+Fu(CVSPGMR)p 26971 66662 V 420 w(MAXL)p Fx(=)308 b(5.)p
+Black 6814 68112 a Fu(bp)p 8046 68112 V 419 w(data)p
+Black 1716 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fv(cvbandpre)h Fx(data)h(structure.)p
+Black 0 69783 a(Return)e(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 71454 a Fu(CVSPGMR)p 10951 71454 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g Fv(cvspgmr)f Fx(initialization)374
+b(w)-31 b(as)370 b(successful.)p Black 6814 72903 a Fu(CVSPGMR)p
+10951 72903 V 419 w(MEM)p 13113 72903 V 419 w(NULL)p
+Black 1136 w Fx(The)f Fu(cvode)p 22172 72903 V 419 w(mem)h
+Fx(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p Fx(.)p Black
+6814 74353 a Fu(CVSPGMR)p 10951 74353 V 419 w(ILL)p 13113
+74353 V 419 w(INPUT)p Black 555 w Fx(The)f(preconditioner)h(t)-31
+b(yp)31 b(e)370 b Fu(pretype)g Fx(is)f(not)h(v)-61 b(alid.)p
+Black 6814 75802 a Fu(CVSPGMR)p 10951 75802 V 419 w(MEM)p
+13113 75802 V 419 w(FAIL)p Black 1136 w Fx(A)369 b(memory)h(allo)31
+b(cation)372 b(request)d(failed.)p Black 6814 77252 a
+Fu(CV)p 8046 77252 V 419 w(PDATA)p 11370 77252 V 419
+w(NULL)p Black 2879 w Fx(The)g Fv(cvbandpre)h Fx(preconditioner)g(has)f
+(not)h(b)31 b(een)369 b(initialized.)p Black Black eop
+%%Page: 63 71
+63 70 bop Black 4000 2701 a Fy(5.8)425 b(Preconditioner)i(mo)35
+b(dules)31418 b(63)p 4000 3144 48001 45 v Black 4000
+5965 8889 45 v 4000 7306 45 1341 v 4376 6974 a Fu(CVBandPrecFree)p
+12845 7306 V 4000 7350 8889 45 v Black 4000 8712 a Fx(Call)p
+Black 4848 w Fu(CVBandPrecFree\(bp)p 20761 8712 349 45
+v 421 w(data\);)p Black 4000 10503 a Fx(Description)p
+Black 1286 w(The)369 b(function)i Fu(CVBandPrecFree)g
+Fx(frees)d(the)i(p)31 b(oin)-31 b(ter)370 b(allo)31 b(cated)371
+b(b)-31 b(y)370 b Fu(CVBandPrecAlloc)p Fx(.)p Black 4000
+12294 a(Argumen)-31 b(ts)p Black 1517 w(The)376 b(only)g(argumen)-31
+b(t)377 b(of)f Fu(CVBandPrecFree)h Fx(is)e(the)h(p)31
+b(oin)-31 b(ter)376 b(to)g(the)g Fv(cvbandpre)g Fx(data)g(struc-)10814
+13623 y(ture)369 b(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(void)582
+b(*)p Fx(\).)p Black 4000 15414 a(Return)369 b(v)-61
+b(alue)p Black 554 w(The)369 b(function)i Fu(CVBandPrecFree)g
+Fx(has)e(no)h(return)e(v)-61 b(alue.)5660 17152 y(The)280
+b(follo)-31 b(wing)283 b(three)d(optional)i(output)e(functions)h(are)e
+(a)-31 b(v)-61 b(ailable)282 b(for)e(use)f(with)h(the)g
+Fv(cvbandpre)g Fx(mo)31 b(dule:)p 4000 19074 13539 45
+v 4000 20660 45 1587 v 4376 20082 a Fu(CVBandPrecGetWorkSpace)p
+17494 20660 V 4000 20704 13539 45 v Black 4000 21994
+a Fx(Call)p Black 4848 w Fu(flag)582 b(=)f(CVBandPrecGetWorkSpace\(bp)p
+29477 21994 349 45 v 422 w(data,)h(&lenrwBP,)h(&leniwBP\);)p
+Black 4000 23785 a Fx(Description)p Black 1286 w(The)594
+b(function)g Fu(CVBandPrecGetWorkSpace)j Fx(returns)592
+b(the)i Fv(cvbandpre)g Fx(real)f(and)h(in)-31 b(teger)10814
+25113 y(w)g(orkspace)370 b(sizes.)p Black 4000 26904
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(bp)p 12046
+26904 V 419 w(data)p Black 716 w Fx(\()p Fu(void)583
+b(*)p Fx(\))369 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)g
+Fv(cvbandpre)g Fx(data)g(structure.)p Black 10814 28464
+a Fu(lenrwBP)p Black 554 w Fx(\()p Fu(long)583 b(int)p
+Fx(\))370 b(the)f(n)-31 b(um)g(b)31 b(er)369 b(of)h Fu(realtype)g
+Fx(v)-61 b(alues)369 b(in)h(the)f Fv(cvbandpre)h Fx(w)-31
+b(orkspace.)p Black 10814 30024 a Fu(leniwBP)p Black
+554 w Fx(\()p Fu(long)583 b(int)p Fx(\))370 b(the)f(n)-31
+b(um)g(b)31 b(er)369 b(of)h(in)-31 b(teger)370 b(v)-61
+b(alues)369 b(in)h(the)f Fv(cvbandpre)h Fx(w)-31 b(orkspace.)p
+Black 4000 31815 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p
+Black 10814 33606 a Fu(CV)p 12046 33606 V 419 w(SUCCESS)p
+Black 2135 w Fx(The)g(optional)j(output)f(v)-61 b(alue)369
+b(has)g(b)31 b(een)369 b(successfully)g(set.)p Black
+10814 35165 a Fu(CV)p 12046 35165 V 419 w(PDATA)p 15370
+35165 V 419 w(NULL)p Black 554 w Fx(The)g Fv(cvbandpre)h
+Fx(preconditioner)h(has)e(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 36956 a(Notes)p Black 4072 w(In)363 b(terms)h(of)g(problem)g
+(size)g Fm(N)121 b Fx(,)365 b(and)f Fu(smu)g Fx(=)f(min)q(\()p
+Fm(N)356 b Fp(\241)235 b Fx(1)p Fm(;)184 b Fu(mu+ml)p
+Fx(\),)368 b(the)c(actual)h(size)e(of)i(the)e(real)10814
+38285 y(w)-31 b(orkspace)469 b(is)e(\(2)i Fu(ml)f Fx(+)f
+Fu(mu)h Fx(+)f Fu(smu)h Fx(+2\))184 b Fm(N)590 b Fu(realtype)469
+b Fx(w)-31 b(ords,)493 b(and)468 b(the)g(actual)i(size)d(of)i(the)10814
+39613 y(in)-31 b(teger)370 b(w)-31 b(orkspace)370 b(is)f
+Fm(N)490 b Fx(in)-31 b(teger)371 b(w)-31 b(ords.)p 4000
+41945 14701 45 v 4000 43285 45 1341 v 4376 42953 a Fu
+(CVBandPrecGetNumRhsEvals)p 18656 43285 V 4000 43329
+14701 45 v Black 4000 44692 a Fx(Call)p Black 4848 w
+Fu(flag)582 b(=)f(CVBandPrecGetNumRhsEvals\(bp)p 30639
+44692 349 45 v 422 w(data,)h(&nfevalsBP\);)p Black 4000
+46483 a Fx(Description)p Black 1286 w(The)523 b(function)g
+Fu(CVBandPrecGetNumRhsEvals)j Fx(returns)c(the)g(n)-31
+b(um)g(b)31 b(er)523 b(of)g(calls)g(to)g(the)g(user)10814
+47811 y(righ)-31 b(t-hand)556 b(side)e(function)h(for)f(\257nite)h
+(di\256erence)f(banded)g(Jacobian)i(appro)-31 b(ximation)557
+b(used)10814 49139 y(within)371 b Fv(cvbandpre)p Fx('s)f
+(preconditioner)g(setup)f(function.)p Black 4000 50930
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(bp)p 12046
+50930 V 419 w(data)p Black 1879 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cvbandpre)h Fx(data)g(structure.)p Black 10814 52490
+a Fu(nfevalsBP)p Black 555 w Fx(\()p Fu(long)582 b(int)p
+Fx(\))370 b(the)f(n)-31 b(um)g(b)31 b(er)370 b(of)f(calls)h(to)g(the)g
+(user)e(righ)-31 b(t-hand)370 b(side)g(function.)p Black
+4000 54281 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+10814 56072 a Fu(CV)p 12046 56072 V 419 w(SUCCESS)p Black
+2135 w Fx(The)g(optional)j(output)f(v)-61 b(alue)369
+b(has)g(b)31 b(een)369 b(successfully)g(set.)p Black
+10814 57632 a Fu(CV)p 12046 57632 V 419 w(PDATA)p 15370
+57632 V 419 w(NULL)p Black 554 w Fx(The)g Fv(cvbandpre)h
+Fx(preconditioner)h(has)e(not)h(b)31 b(een)368 b(initialized.)4000
+61183 y Fq(5.8.2)1495 b(A)499 b(parallel)h(band-blo)42
+b(c)-42 b(k-diagonal)501 b(preconditioner)g(mo)42 b(dule)4000
+63245 y Fx(A)487 b(principal)h(reason)f(for)f(using)i(a)f(parallel)h
+(ODE)f(solv)-31 b(er)487 b(suc)-31 b(h)486 b(as)h Fv(cv)-25
+b(ode)488 b Fx(lies)f(in)g(the)g(solution)i(of)e(partial)4000
+64573 y(di\256eren)-31 b(tial)528 b(equations)h(\(PDEs\).)966
+b(Moreo)-31 b(v)g(er,)567 b(the)527 b(use)f(of)h(a)g(Krylo)-31
+b(v)528 b(iterativ)-31 b(e)529 b(metho)31 b(d)527 b(for)g(the)g
+(solution)4000 65902 y(of)500 b(man)-31 b(y)500 b(suc)-31
+b(h)499 b(problems)h(is)f(motiv)-61 b(ated)501 b(b)-31
+b(y)500 b(the)f(nature)h(of)f(the)h(underlying)g(linear)g(system)g(of)f
+(equations)4000 67230 y(\(3.4\))533 b(that)e(m)-31 b(ust)531
+b(b)31 b(e)530 b(solv)-31 b(ed)532 b(at)f(eac)-31 b(h)531
+b(time)h(step.)976 b(The)531 b(linear)g(algebraic)h(system)f(is)f
+(large,)572 b(sparse,)f(and)4000 68558 y(structured.)485
+b(Ho)-31 b(w)g(ev)g(er,)354 b(if)348 b(a)h(Krylo)-31
+b(v)348 b(iterativ)-31 b(e)350 b(metho)31 b(d)349 b(is)f(to)h(b)31
+b(e)347 b(e\256ectiv)-31 b(e)349 b(in)f(this)g(setting,)354
+b(then)348 b(a)g(non)-31 b(trivial)4000 69887 y(preconditioner)282
+b(needs)f(to)h(b)31 b(e)280 b(used.)463 b(Otherwise,)300
+b(the)281 b(rate)h(of)f(con)-31 b(v)g(ergence)282 b(of)g(the)f(Krylo)
+-31 b(v)282 b(iterativ)-31 b(e)284 b(metho)31 b(d)282
+b(is)4000 71215 y(usually)370 b(unacceptably)h(slo)-31
+b(w.)494 b(Unfortunately)-92 b(,)372 b(an)d(e\256ectiv)-31
+b(e)370 b(preconditioner)h(tends)e(to)h(b)31 b(e)369
+b(problem-sp)31 b(eci\257c.)5660 72553 y(Ho)-31 b(w)g(ev)g(er,)352
+b(w)-31 b(e)345 b(ha)-31 b(v)g(e)346 b(dev)-31 b(elop)31
+b(ed)346 b(one)f(t)-31 b(yp)31 b(e)345 b(of)g(preconditioner)h(that)g
+(treats)f(a)g(rather)g(broad)g(class)f(of)i(PDE-)4000
+73882 y(based)484 b(problems.)840 b(It)484 b(has)h(b)31
+b(een)484 b(successfully)g(used)g(for)h(sev)-31 b(eral)485
+b(realistic,)515 b(large-scale)486 b(problems)f([15)r(])g(and)4000
+75210 y(is)418 b(included)g(in)h(a)f(soft)-31 b(w)g(are)419
+b(mo)31 b(dule)419 b(within)h(the)e Fv(cv)-25 b(ode)418
+b Fx(pac)-31 b(k)-61 b(age.)640 b(This)419 b(mo)31 b(dule)418
+b(w)-31 b(orks)419 b(with)g(the)f(parallel)4000 76539
+y(v)-31 b(ector)508 b(mo)31 b(dule)509 b Fv(nvector)p
+16233 76539 368 45 v 441 w(p)-74 b(arallel)508 b Fx(and)g(generates)g
+(a)g(preconditioner)h(that)f(is)g(a)g(blo)31 b(c)-31
+b(k-diagonal)511 b(ma-)4000 77867 y(trix)451 b(with)g(eac)-31
+b(h)451 b(blo)31 b(c)-31 b(k)451 b(b)31 b(eing)450 b(a)h(band)f
+(matrix.)737 b(The)451 b(blo)31 b(c)-31 b(ks)450 b(need)g(not)h(ha)-31
+b(v)g(e)451 b(the)g(same)f(n)-31 b(um)g(b)31 b(er)450
+b(of)h(sup)31 b(er-)p Black Black eop
+%%Page: 64 72
+64 71 bop Black 0 2701 a Fy(64)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 0 6974 a Fx(and)480 b(sub-diagonals)h
+(and)f(these)f(n)-31 b(um)g(b)31 b(ers)479 b(ma)-31 b(y)481
+b(v)-61 b(ary)479 b(from)i(blo)31 b(c)-31 b(k)480 b(to)g(blo)31
+b(c)-31 b(k.)825 b(This)480 b(Band-Blo)31 b(c)-31 b(k-Diagonal)0
+8302 y(Preconditioner)371 b(mo)31 b(dule)370 b(is)f(called)h
+Fv(cvbbdpre)p Fx(.)1660 9631 y(One)385 b(w)-31 b(a)g(y)386
+b(to)f(en)-31 b(vision)386 b(these)f(preconditioners)g(is)g(to)g(think)
+h(of)f(the)g(domain)h(of)f(the)g(computational)k(PDE)0
+10960 y(problem)490 b(as)g(b)31 b(eing)490 b(sub)31 b(divided)490
+b(in)-31 b(to)491 b Fm(M)611 b Fx(non-o)-31 b(v)g(erlapping)492
+b(sub)31 b(domains.)855 b(Eac)-31 b(h)491 b(of)f(these)f(sub)31
+b(domains)491 b(is)0 12288 y(then)366 b(assigned)g(to)g(one)g(of)h(the)
+e Fm(M)486 b Fx(pro)31 b(cessors)365 b(to)h(b)31 b(e)365
+b(used)g(to)i(solv)-31 b(e)366 b(the)g(ODE)f(system.)492
+b(The)366 b(basic)g(idea)g(is)g(to)0 13616 y(isolate)360
+b(the)e(preconditioning)i(so)e(that)h(it)g(is)f(lo)31
+b(cal)359 b(to)g(eac)-31 b(h)358 b(pro)31 b(cessor,)360
+b(and)e(also)h(to)f(use)g(a)g(\(p)31 b(ossibly)359 b(c)-31
+b(heap)31 b(er\))0 14945 y(appro)-31 b(ximate)424 b(righ)-31
+b(t-hand)424 b(side)d(function.)652 b(This)422 b(requires)f(the)h
+(de\257nition)h(of)f(a)g(new)g(function)i Fm(g)40 b Fx(\()p
+Fm(t;)184 b(y)40 b Fx(\))422 b(whic)-31 b(h)0 16273 y(appro)g(ximates)
+346 b(the)f(function)g Fm(f)119 b Fx(\()p Fm(t;)184 b(y)40
+b Fx(\))346 b(in)e(the)g(de\257nition)i(of)f(the)f(ODE)g(system)g
+(\(3.1\).)487 b(Ho)-31 b(w)g(ev)g(er,)351 b(the)344 b(user)g(ma)-31
+b(y)0 17601 y(set)444 b Fm(g)473 b Fx(=)433 b Fm(f)119
+b Fx(.)719 b(Corresp)31 b(onding)445 b(to)h(the)f(domain)h(decomp)31
+b(osition,)466 b(there)445 b(is)f(a)h(decomp)31 b(osition)447
+b(of)e(the)g(solution)0 18930 y(v)-31 b(ector)333 b Fm(y)372
+b Fx(in)-31 b(to)334 b Fm(M)454 b Fx(disjoin)-31 b(t)334
+b(blo)31 b(c)-31 b(ks)333 b Fm(y)15707 19096 y Fk(m)16548
+18930 y Fx(,)340 b(and)333 b(a)g(decomp)31 b(osition)335
+b(of)e Fm(g)372 b Fx(in)-31 b(to)335 b(blo)31 b(c)-31
+b(ks)333 b Fm(g)35636 19096 y Fk(m)36477 18930 y Fx(.)480
+b(The)333 b(blo)31 b(c)-31 b(k)333 b Fm(g)42915 19096
+y Fk(m)44089 18930 y Fx(dep)31 b(ends)0 20258 y(on)491
+b Fm(y)2202 20424 y Fk(m)3534 20258 y Fx(and)h(also)g(on)f(comp)31
+b(onen)-31 b(ts)493 b(of)e(blo)31 b(c)-31 b(ks)492 b
+Fm(y)21432 20424 y Fk(m)22218 20203 y Fh(0)23063 20258
+y Fx(asso)31 b(ciated)493 b(with)f(neigh)-31 b(b)31 b(oring)493
+b(sub)31 b(domains)492 b(\(so-called)0 21586 y(ghost-cell)367
+b(data\).)493 b(Let)441 b(\271)-629 b Fm(y)10825 21752
+y Fk(m)12030 21586 y Fx(denote)365 b Fm(y)16135 21752
+y Fk(m)17341 21586 y Fx(augmen)-31 b(ted)366 b(with)g(those)g(other)f
+(comp)31 b(onen)-31 b(ts)366 b(on)f(whic)-31 b(h)366
+b Fm(g)42576 21752 y Fk(m)43781 21586 y Fx(dep)31 b(ends.)0
+22915 y(Then)369 b(w)-31 b(e)370 b(ha)-31 b(v)g(e)13468
+24245 y Fm(g)40 b Fx(\()p Fm(t;)184 b(y)40 b Fx(\))308
+b(=)f([)p Fm(g)18681 24411 y Fl(1)19178 24245 y Fx(\()p
+Fm(t;)262 b Fx(\271)-631 b Fm(y)21042 24411 y Fl(1)21540
+24245 y Fx(\))p Fm(;)184 b(g)22989 24411 y Fl(2)23487
+24245 y Fx(\()p Fm(t;)261 b Fx(\271)-630 b Fm(y)25351
+24411 y Fl(2)25849 24245 y Fx(\))p Fm(;)184 b(:)g(:)g(:)k(;)c(g)29266
+24411 y Fk(M)30250 24245 y Fx(\()p Fm(t;)261 b Fx(\271)-630
+b Fm(y)32114 24411 y Fk(M)33097 24245 y Fx(\)])33834
+23788 y Fk(T)45725 24245 y Fx(\(5.1\))0 26240 y(and)369
+b(eac)-31 b(h)370 b(of)g(the)f(blo)31 b(c)-31 b(ks)370
+b Fm(g)11696 26406 y Fk(m)12537 26240 y Fx(\()p Fm(t;)261
+b Fx(\271)-630 b Fm(y)14401 26406 y Fk(m)15243 26240
+y Fx(\))369 b(is)g(uncoupled)h(from)g(the)f(others.)1660
+27569 y(The)h(preconditioner)g(asso)31 b(ciated)371 b(with)f(this)g
+(decomp)31 b(osition)371 b(has)e(the)h(form)17937 30006
+y Fm(P)461 b Fx(=)308 b Fm(diag)40 b Fx([)p Fm(P)23406
+30172 y Fl(1)23903 30006 y Fm(;)184 b(P)25105 30172 y
+Fl(2)25602 30006 y Fm(;)g(:)g(:)g(:)k(;)c(P)28772 30172
+y Fk(M)29755 30006 y Fx(])15663 b(\(5.2\))0 32442 y(where)20478
+33773 y Fm(P)21189 33939 y Fk(m)22337 33773 y Fp(\274)308
+b Fm(I)332 b Fp(\241)246 b Fm(\260)61 b(J)26680 33939
+y Fk(m)45725 33773 y Fx(\(5.3\))0 35767 y(and)309 b Fm(J)2706
+35933 y Fk(m)3855 35767 y Fx(is)f(a)h(di\256erence)e(quotien)-31
+b(t)311 b(appro)-31 b(ximation)312 b(to)d Fm(@)61 b(g)24758
+35933 y Fk(m)25599 35767 y Fm(=@)g(y)27344 35933 y Fk(m)28185
+35767 y Fx(.)473 b(This)308 b(matrix)i(is)f(tak)-31 b(en)309
+b(to)g(b)31 b(e)308 b(banded,)322 b(with)0 37096 y(upp)31
+b(er)339 b(and)i(lo)-31 b(w)g(er)341 b(half-bandwidths)i
+Fu(mudq)e Fx(and)f Fu(mldq)h Fx(de\257ned)f(as)g(the)g(n)-31
+b(um)g(b)31 b(er)341 b(of)g(non-zero)f(diagonals)j(ab)31
+b(o)-31 b(v)g(e)0 38424 y(and)298 b(b)31 b(elo)-31 b(w)299
+b(the)f(main)h(diagonal,)315 b(resp)31 b(ectiv)-31 b(ely)-92
+b(.)469 b(The)298 b(di\256erence)g(quotien)-31 b(t)300
+b(appro)-31 b(ximation)301 b(is)d(computed)g(using)0
+39752 y Fu(mudq)370 b Fx(+)f Fu(mldq)g Fx(+2)h(ev)-61
+b(aluations)371 b(of)e Fm(g)15945 39918 y Fk(m)16786
+39752 y Fx(,)h(but)f(only)h(a)g(matrix)h(of)e(bandwidth)i
+Fu(mu)e Fx(+)g Fu(ml)h Fx(+1)f(is)g(retained.)1660 41082
+y(Neither)402 b(pair)g(of)f(parameters)h(need)f(b)31
+b(e)401 b(the)g(true)g(half-bandwidths)j(of)e(the)f(Jacobian)i(of)f
+(the)f(lo)31 b(cal)403 b(blo)31 b(c)-31 b(k)0 42410 y(of)396
+b Fm(g)40 b Fx(,)402 b(if)396 b(smaller)g(v)-61 b(alues)396
+b(pro)-31 b(vide)396 b(a)g(more)f(e\261cien)-31 b(t)397
+b(preconditioner.)573 b(Suc)-31 b(h)395 b(an)h(e\261ciency)g(gain)h(ma)
+-31 b(y)396 b(o)31 b(ccur)395 b(if)0 43738 y(the)410
+b(couplings)h(in)f(the)g(ODE)f(system)h(outside)g(a)g(certain)h
+(bandwidth)g(are)f(considerably)g(w)-31 b(eak)g(er)411
+b(than)f(those)0 45067 y(within)431 b(the)f(band.)674
+b(Reducing)430 b Fu(mu)g Fx(and)g Fu(ml)f Fx(while)i(k)-31
+b(eeping)431 b Fu(mudq)f Fx(and)g Fu(mldq)f Fx(at)i(their)f(true)f(v)
+-61 b(alues,)445 b(discards)0 46395 y(the)407 b(elemen)-31
+b(ts)407 b(outside)g(the)g(narro)-31 b(w)g(er)406 b(band.)605
+b(Reducing)407 b(b)31 b(oth)406 b(pairs)h(has)f(the)h(additional)i
+(e\256ect)d(of)h(lumping)0 47723 y(the)310 b(outer)h(Jacobian)h(elemen)
+-31 b(ts)311 b(in)-31 b(to)312 b(the)e(computed)h(elemen)-31
+b(ts)312 b(within)g(the)e(band,)323 b(and)310 b(requires)g(more)g
+(caution)0 49052 y(and)369 b(exp)31 b(erimen)-31 b(tation.)1660
+50381 y(The)370 b(solution)h(of)f(the)f(complete)i(linear)f(system)
+22276 52817 y Fm(P)154 b(x)307 b Fx(=)g Fm(b)20001 b
+Fx(\(5.4\))0 55254 y(reduces)368 b(to)i(solving)h(eac)-31
+b(h)369 b(of)h(the)g(equations)21092 57691 y Fm(P)21803
+57857 y Fk(m)22643 57691 y Fm(x)23276 57857 y Fk(m)24424
+57691 y Fx(=)308 b Fm(b)26068 57857 y Fk(m)45725 57691
+y Fx(\(5.5\))0 60128 y(and)369 b(this)h(is)f(done)h(b)-31
+b(y)369 b(banded)g(LU)g(factorization)k(of)d Fm(P)23773
+60294 y Fk(m)24982 60128 y Fx(follo)-31 b(w)g(ed)372
+b(b)-31 b(y)370 b(a)f(banded)h(bac)-31 b(ksolv)g(e.)1660
+61457 y(The)465 b Fv(cvbbdpre)g Fx(mo)31 b(dule)465 b(calls)g(t)-31
+b(w)g(o)466 b(user-pro)-31 b(vided)464 b(functions)i(to)f(construct)f
+Fm(P)154 b Fx(:)682 b(a)465 b(required)e(function)0 62785
+y Fu(gloc)485 b Fx(\(of)h(t)-31 b(yp)31 b(e)485 b Fu(CVLocalFn)p
+Fx(\))i(whic)-31 b(h)485 b(appro)-31 b(ximates)487 b(the)f(righ)-31
+b(t-hand)486 b(side)e(function)j Fm(g)40 b Fx(\()p Fm(t;)184
+b(y)40 b Fx(\))501 b Fp(\274)f Fm(f)119 b Fx(\()p Fm(t;)184
+b(y)40 b Fx(\))486 b(and)0 64113 y(whic)-31 b(h)501 b(is)e(computed)i
+(lo)31 b(cally)-92 b(,)535 b(and)500 b(an)g(optional)j(function)e
+Fu(cfn)f Fx(\(of)h(t)-31 b(yp)31 b(e)500 b Fu(CVCommFn)p
+Fx(\))i(whic)-31 b(h)500 b(p)31 b(erforms)500 b(all)0
+65442 y(in)-31 b(ter-pro)31 b(cess)460 b(comm)-31 b(unication)465
+b(necessary)460 b(to)i(ev)-61 b(aluate)462 b(the)f(appro)-31
+b(ximate)464 b(righ)-31 b(t-hand)462 b(side)f Fm(g)40
+b Fx(.)767 b(These)461 b(are)0 66770 y(in)395 b(addition)i(to)f(the)f
+(user-supplied)g(righ)-31 b(t-hand)396 b(side)f(function)h
+Fu(f)p Fx(.)570 b(Both)396 b(functions)g(tak)-31 b(e)396
+b(as)f(input)g(the)g(same)0 68098 y(p)31 b(oin)-31 b(ter)426
+b Fu(f)p 4523 68098 349 45 v 419 w(data)g Fx(as)g(that)h(passed)e(b)-31
+b(y)426 b(the)g(user)f(to)h Fu(CVodeSetFdata)i Fx(and)e(passed)f(to)h
+(the)g(user's)f(function)i Fu(f)p Fx(,)0 69427 y(and)442
+b(neither)g(function)i(has)d(a)i(return)e(v)-61 b(alue.)711
+b(The)442 b(user)f(is)h(resp)31 b(onsible)441 b(for)h(pro)-31
+b(viding)444 b(space)e(\(presumably)0 70755 y(within)397
+b Fu(f)p 4121 70755 V 419 w(data)p Fx(\))f(for)f(comp)31
+b(onen)-31 b(ts)396 b(of)g Fu(y)f Fx(that)i(are)e(comm)-31
+b(unicated)398 b(b)-31 b(y)396 b Fu(cfn)f Fx(from)h(the)f(other)h(pro)
+31 b(cessors,)401 b(and)0 72083 y(that)370 b(are)f(then)h(used)e(b)-31
+b(y)370 b Fu(gloc)p Fx(,)g(whic)-31 b(h)370 b(is)f(not)h(exp)31
+b(ected)369 b(to)h(do)g(an)-31 b(y)370 b(comm)-31 b(unication.)p
+0 73956 5984 45 v 0 75297 45 1341 v 376 74964 a Fu(CVLocalFn)p
+5939 75297 V 0 75341 5984 45 v Black 0 76694 a Fx(De\257nition)p
+Black 2034 w Fu(typedef)582 b(void)g(\(*CVLocalFn\)\()r(long)g(int)f
+(Nlocal,)h(realtype)h(t,)e(N)p 39428 76694 349 45 v 419
+w(Vector)h(y,)21924 78022 y(N)p 22575 78022 V 418 w(Vector)g(glocal,)h
+(void)e(*f)p 35778 78022 V 419 w(data\);)p Black Black
+eop
+%%Page: 65 73
+65 72 bop Black 4000 2701 a Fy(5.8)425 b(Preconditioner)i(mo)35
+b(dules)31418 b(65)p 4000 3144 48001 45 v Black Black
+4000 6974 a Fx(Purp)31 b(ose)p Black 2884 w(This)370
+b(function)g(computes)g Fm(g)40 b Fx(\()p Fm(t;)184 b(y)40
+b Fx(\).)493 b(It)370 b(loads)g(the)f(v)-31 b(ector)370
+b Fu(glocal)g Fx(as)f(a)h(function)g(of)g Fu(t)f Fx(and)g
+Fu(y)p Fx(.)p Black 4000 8777 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(Nlocal)p Black 554 w Fx(is)369 b(the)h(lo)31
+b(cal)371 b(v)-31 b(ector)370 b(length.)p Black 10814
+10342 a Fu(t)p Black 3459 w Fx(is)f(the)h(v)-61 b(alue)370
+b(of)f(the)h(indep)31 b(enden)-31 b(t)369 b(v)-61 b(ariable.)p
+Black 10814 11908 a Fu(y)p Black 3459 w Fx(is)369 b(the)h(dep)31
+b(enden)-31 b(t)369 b(v)-61 b(ariable.)p Black 10814
+13473 a Fu(glocal)p Black 554 w Fx(is)369 b(the)h(output)g(v)-31
+b(ector.)p Black 10814 15039 a Fu(f)p 11465 15039 349
+45 v 419 w(data)p Black 716 w Fx(is)524 b(a)g(p)31 b(oin)-31
+b(ter)524 b(to)h(user)d(data)j(|)f(the)f(same)h(as)g(the)g
+Fu(f)p 38698 15039 V 418 w(data)g Fx(parameter)h(passed)e(to)14854
+16367 y Fu(CVodeSetFdata)p Fx(.)p Black 4000 18170 a(Return)369
+b(v)-61 b(alue)p Black 554 w(A)369 b Fu(CVLocalFn)h Fx(function)h(t)-31
+b(yp)31 b(e)370 b(do)31 b(es)369 b(not)h(ha)-31 b(v)g(e)370
+b(a)f(return)g(v)-61 b(alue.)p Black 4000 19973 a(Notes)p
+Black 4072 w(This)406 b(function)g(assumes)f(that)i(all)g(in)-31
+b(ter-pro)31 b(cessor)404 b(comm)-31 b(unication)410
+b(of)405 b(data)i(needed)e(to)h(cal-)10814 21301 y(culate)370
+b Fu(glocal)g Fx(has)f(already)i(b)31 b(een)368 b(done,)i(and)f(this)h
+(data)g(is)g(accessible)f(within)i Fu(f)p 46411 21301
+V 419 w(data)p Fx(.)10814 23104 y(The)e(case)g(where)g
+Fm(g)409 b Fx(is)369 b(mathematically)374 b(iden)-31
+b(tical)372 b(to)e Fm(f)488 b Fx(is)369 b(allo)-31 b(w)g(ed.)p
+4000 25473 5402 45 v 4000 26813 45 1341 v 4376 26481
+a Fu(CVCommFn)p 9358 26813 V 4000 26857 5402 45 v Black
+4000 28225 a Fx(De\257nition)p Black 2034 w Fu(typedef)582
+b(void)g(\(*CVCommFn\)\()r(long)f(int)h(Nlocal,)g(realtype)h(t,)25343
+29554 y(N)p 25994 29554 349 45 v 418 w(Vector)f(y,)g(void)g(*f)p
+36292 29554 V 418 w(data\);)p Black 4000 31306 a Fx(Purp)31
+b(ose)p Black 2884 w(This)309 b(function)h(p)31 b(erforms)309
+b(all)h(in)-31 b(ter-pro)31 b(cessor)308 b(comm)-31 b(unications)312
+b(necessary)c(for)h(the)g(execution)10814 32635 y(of)370
+b(the)f Fu(gloc)h Fx(function)g(ab)31 b(o)-31 b(v)g(e,)371
+b(using)f(the)f(input)h(v)-31 b(ector)370 b Fu(y)p Fx(.)p
+Black 4000 34437 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(Nlocal)p Black 554 w Fx(is)369 b(the)h(lo)31 b(cal)371
+b(v)-31 b(ector)370 b(length.)p Black 10814 36003 a Fu(t)p
+Black 3459 w Fx(is)f(the)h(v)-61 b(alue)370 b(of)f(the)h(indep)31
+b(enden)-31 b(t)369 b(v)-61 b(ariable.)p Black 10814
+37568 a Fu(y)p Black 3459 w Fx(is)369 b(the)h(dep)31
+b(enden)-31 b(t)369 b(v)-61 b(ariable.)p Black 10814
+39134 a Fu(f)p 11465 39134 V 419 w(data)p Black 716 w
+Fx(is)524 b(a)g(p)31 b(oin)-31 b(ter)524 b(to)h(user)d(data)j(|)f(the)f
+(same)h(as)g(the)g Fu(f)p 38698 39134 V 418 w(data)g
+Fx(parameter)h(passed)e(to)14854 40462 y Fu(CVodeSetFdata)p
+Fx(.)p Black 4000 42265 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(A)369 b Fu(CVCommFn)h Fx(function)h(t)-31
+b(yp)31 b(e)370 b(do)31 b(es)368 b(not)i(ha)-31 b(v)g(e)371
+b(a)e(return)g(v)-61 b(alue.)p Black 4000 44068 a(Notes)p
+Black 4072 w(The)377 b Fu(cfn)g Fx(function)h(is)e(exp)31
+b(ected)377 b(to)g(sa)-31 b(v)g(e)377 b(comm)-31 b(unicated)380
+b(data)e(in)f(space)f(de\257ned)g(within)j(the)10814
+45396 y(structure)369 b Fu(f)p 16213 45396 V 418 w(data)p
+Fx(.)10814 47199 y(Eac)-31 b(h)410 b(call)g(to)g(the)f
+Fu(cfn)g Fx(function)i(is)e(preceded)f(b)-31 b(y)409
+b(a)h(call)g(to)g(the)f(righ)-31 b(t-hand)411 b(side)d(function)j
+Fu(f)10814 48527 y Fx(with)405 b(the)e(same)h(\()p Fu(t)p
+Fx(,)413 b Fu(y)p Fx(\))404 b(argumen)-31 b(ts.)597 b(Th)-31
+b(us)404 b Fu(cfn)f Fx(can)h(omit)h(an)-31 b(y)404 b(comm)-31
+b(unications)407 b(done)d(b)-31 b(y)404 b Fu(f)10814
+49856 y Fx(if)h(relev)-61 b(an)-31 b(t)405 b(to)g(the)g(ev)-61
+b(aluation)407 b(of)e Fu(glocal)p Fx(.)599 b(If)404 b(all)i(necessary)d
+(com)-31 b(unication)408 b(w)-31 b(as)405 b(done)g(in)f
+Fu(f)p Fx(,)10814 51184 y(then)369 b Fu(cfn)h Fx(=)f
+Fu(NULL)g Fx(can)h(b)31 b(e)368 b(passed)h(in)h(the)f(call)h(to)g
+Fu(CVBBDPrecAlloc)h Fx(\(see)f(b)31 b(elo)-31 b(w\).)5660
+52928 y(Besides)418 b(the)h(header)f(\257les)g(required)g(for)g(the)h
+(in)-31 b(tegration)421 b(of)e(the)f(ODE)g(problem)h(\(see)f
+Fp(x)p Fx(5.3\),)433 b(to)419 b(use)f(the)4000 54257
+y Fv(cvbbdpre)386 b Fx(mo)31 b(dule,)390 b(the)385 b(main)h(program)g
+(m)-31 b(ust)386 b(include)f(the)h(header)e(\257le)i
+Fu(cvbbdpre.h)g Fx(whic)-31 b(h)386 b(declares)f(the)4000
+55585 y(needed)369 b(function)h(protot)-31 b(yp)31 b(es.)5660
+56929 y(The)428 b(follo)-31 b(wing)431 b(is)d(a)f(summary)i(of)f(the)f
+(usage)h(of)g(this)g(mo)31 b(dule)428 b(and)g(describ)31
+b(es)426 b(the)i(sequence)f(of)h(calls)h(in)4000 58258
+y(the)326 b(user)e(main)j(program.)479 b(Steps)325 b(that)i(are)e(unc)
+-31 b(hanged)327 b(from)f(the)g(user)e(main)j(program)f(presen)-31
+b(ted)325 b(in)h Fp(x)p Fx(5.4)h(are)4000 59586 y(gra)-31
+b(y)g(ed-out.)p Black 4553 61847 a(1.)p Black 0.5 0.5 0.5
+TeXcolorrgb 493 w Fy(Initialize)423 b(MPI)p Black Black
+4553 64204 a Fx(2.)p Black 0.5 0.5 0.5 TeXcolorrgb 493
+w Fy(Set)j(problem)f(dimensions)p Black Black 4553 66560
+a Fx(3.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(Set)h(v)-35
+b(ector)424 b(of)h(initial)e(v)-71 b(alues)p Black Black
+4553 68916 a Fx(4.)p Black 0.5 0.5 0.5 TeXcolorrgb 493
+w Fy(Create)426 b Fv(cv)-25 b(ode)425 b Fy(ob)71 b(ject)p
+Black Black 4553 71273 a Fx(5.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fy(Set)426 b(optional)e(inputs)p Black Black 4553
+73629 a Fx(6.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(Allo)35
+b(cate)425 b(in)-35 b(ternal)425 b(memory)p Black Black
+4553 75985 a Fx(7.)p Black 493 w Fy(Initialize)e(the)i
+Fv(cvbbdpre)h Fy(preconditioner)g(mo)35 b(dule)5906 77867
+y Fx(Sp)c(ecify)370 b(the)f(upp)31 b(er)369 b(and)g(lo)-31
+b(w)g(er)371 b(half-bandwidths)g Fu(mudq)p Fx(,)f Fu(mldq)g
+Fx(and)f Fu(mukeep)p Fx(,)i Fu(mlkeep)f Fx(and)f(call)p
+Black Black eop
+%%Page: 66 74
+66 73 bop Black 0 2701 a Fy(66)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 1906 6974 a Fu(bbd)p
+3719 6974 349 45 v 419 w(data)582 b(=)f(CVBBDPrecAlloc\()s(cvode)p
+19829 6974 V 419 w(mem,)h(local)p 26059 6974 V 419 w(N,)f(mudq,)h
+(mldq,)16854 8302 y(mukeep,)g(mlkeep,)g(dqrely,)g(gloc,)g(cfn\);)1906
+10134 y Fx(to)417 b(allo)31 b(cate)418 b(memory)e(for)f(and)h
+(initialize)j(a)c(data)i(structure)e Fu(bbd)p 30383 10134
+V 419 w(data)h Fx(to)g(b)31 b(e)415 b(passed)g(to)h(the)g
+Fv(cvspgmr)1906 11462 y Fx(linear)431 b(solv)-31 b(er.)676
+b(The)430 b(last)h(t)-31 b(w)g(o)432 b(argumen)-31 b(ts)431
+b(of)g Fu(CVBBDPrecAlloc)h Fx(are)e(the)g(t)-31 b(w)g(o)432
+b(user-supplied)e(functions)1906 12790 y(describ)31 b(ed)369
+b(ab)31 b(o)-31 b(v)g(e.)p Black 553 15110 a(8.)p Black
+493 w Fy(A)c(ttac)g(h)424 b(the)h Fv(cvspgmr)f Fy(linear)g(solv)-35
+b(er)1906 16991 y Fu(flag)582 b(=)f(CVBBDSpgmr\(cvode)p
+15340 16991 V 421 w(mem,)h(pretype,)g(maxl,)g(bbd)p 29127
+16991 V 419 w(data\);)1906 18873 y Fx(The)366 b(function)g
+Fu(CVBPSpgmr)g Fx(is)f(a)h(wrapp)31 b(er)364 b(around)h(the)h
+Fv(cvspgmr)e Fx(sp)31 b(eci\257cation)366 b(function)h
+Fu(CVSpgmr)f Fx(and)1906 20202 y(p)31 b(erforms)369 b(the)h(follo)-31
+b(wing)372 b(actions:)p Black 3788 22521 a Fp(\262)p
+Black 1 w Fx(A)-31 b(ttac)g(hes)370 b(the)g Fv(cvspgmr)e
+Fx(linear)i(solv)-31 b(er)370 b(to)g(the)f(main)i Fv(cv)-25
+b(ode)369 b Fx(solv)-31 b(er)370 b(memory;)p Black 3788
+24282 a Fp(\262)p Black 1 w Fx(Sets)f(the)g(preconditioner)i(data)f
+(structure)f(for)g Fv(cvbbdpre)p Fx(;)p Black 3788 26042
+a Fp(\262)p Black 1 w Fx(Sets)g(the)g(preconditioner)i(setup)e
+(function)h(for)g Fv(cvbbdpre)p Fx(;)p Black 3788 27803
+a Fp(\262)p Black 1 w Fx(Sets)f(the)g(preconditioner)i(solv)-31
+b(e)370 b(function)g(for)g Fv(cvbbdpre)p Fx(;)1906 30122
+y(The)326 b(argumen)-31 b(ts)326 b Fu(pretype)g Fx(and)g
+Fu(maxl)f Fx(are)g(describ)31 b(ed)325 b(b)31 b(elo)-31
+b(w.)479 b(The)325 b(last)h(argumen)-31 b(t)327 b(of)f
+Fu(CVBBDSpgmr)g Fx(is)g(the)1906 31451 y(p)31 b(oin)-31
+b(ter)370 b(to)g(the)g Fv(cvbbdpre)g Fx(data)g(returned)f(b)-31
+b(y)369 b Fu(CVBBDPrecAlloc)p Fx(.)p Black 553 33770
+a(9.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(Set)426
+b(linear)e(solv)-35 b(er)425 b(optional)f(inputs)p Black
+1906 35652 a Fx(Note)279 b(that)g(the)g(user)d(should)j(not)f(o)-31
+b(v)g(erwrite)280 b(the)e(preconditioner)h(data,)298
+b(setup)278 b(function,)298 b(or)278 b(solv)-31 b(e)278
+b(function)1906 36980 y(through)370 b(calls)g(to)g Fv(cvspgmr)f
+Fx(optional)j(input)d(functions.)p Black 0 39299 a(10.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(Adv)-71 b(ance)426
+b(solution)f(in)f(time)p Black Black 0 41619 a Fx(11.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(Deallo)35 b(cate)425
+b(memory)h(for)f(solution)g(v)-35 b(ector)p Black Black
+0 43938 a Fx(12.)p Black 493 w Fy(F)-106 b(ree)426 b(the)f
+Fv(cvbbdpre)g Fy(data)g(structure)1906 45820 y Fu(CVBBDPrecFree\(bbd)p
+11853 45820 V 421 w(data\);)p Black 0 48139 a Fx(13.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(F)-106 b(ree)426
+b(solv)-35 b(er)425 b(memory)p Black Black 0 50459 a
+Fx(14.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(Finalize)f(MPI)p
+Black 0 52652 a Fx(The)282 b(three)f(user-callable)i(functions)g(that)f
+(initialize,)303 b(attac)-31 b(h,)302 b(and)281 b(deallo)31
+b(cate)284 b(the)e Fv(cvbbdpre)h Fx(preconditioner)0
+53980 y(mo)31 b(dule)370 b(\(steps)f(7,)h(8,)g(and)g(12)g(ab)31
+b(o)-31 b(v)g(e\))370 b(are)f(describ)31 b(ed)369 b(next.)p
+0 55956 8889 45 v 0 57297 45 1341 v 376 56965 a Fu(CVBBDPrecAlloc)p
+8845 57297 V 0 57341 8889 45 v Black 0 58693 a Fx(Call)p
+Black 4848 w Fu(bbd)p 8627 58693 349 45 v 419 w(data)582
+b(=)f(CVBBDPrecAlloc\()r(cvode)p 24736 58693 V 419 w(mem,)h(local)p
+30966 58693 V 419 w(N,)g(mudq,)g(mldq,)21761 60021 y(mukeep,)g(mlkeep,)
+h(dqrely,)f(gloc,)g(cfn\);)p Black 0 61737 a Fx(Description)p
+Black 1286 w(The)522 b(function)i Fu(CVBBDPrecAlloc)g
+Fx(initializes)h(and)e(allo)31 b(cates)524 b(memory)f(for)f(the)h
+Fv(cvbbdpre)6814 63065 y Fx(preconditioner.)p Black 0
+64831 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+9789 64831 V 419 w(mem)p Black 554 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 66376 a Fu(local)p 9789 66376 V 419 w(N)p
+Black 1716 w Fx(\()p Fu(long)582 b(int)p Fx(\))370 b(lo)31
+b(cal)371 b(v)-31 b(ector)370 b(length.)p Black 6814
+67920 a Fu(mudq)p Black 3297 w Fx(\()p Fu(long)582 b(int)p
+Fx(\))528 b(upp)31 b(er)526 b(half-bandwidth)j(to)f(b)31
+b(e)526 b(used)h(in)g(the)g(di\256erence-quotien)-31
+b(t)12435 69248 y(Jacobian)371 b(appro)-31 b(ximation.)p
+Black 6814 70793 a Fu(mldq)p Black 3297 w Fx(\()p Fu(long)582
+b(int)p Fx(\))334 b(lo)-31 b(w)g(er)335 b(half-bandwidth)h(to)e(b)31
+b(e)333 b(used)g(in)h(the)f(di\256erence-quotien)-31
+b(t)336 b(Ja-)12435 72121 y(cobian)370 b(appro)-31 b(ximation.)p
+Black 6814 73666 a Fu(mukeep)p Black 2135 w Fx(\()p Fu(long)582
+b(int)p Fx(\))315 b(upp)31 b(er)313 b(half-bandwidth)k(of)d(the)g
+(retained)h(banded)f(appro)-31 b(ximate)317 b(Ja-)12435
+74994 y(cobian)370 b(blo)31 b(c)-31 b(k.)p Black 6814
+76539 a Fu(mlkeep)p Black 2135 w Fx(\()p Fu(long)582
+b(int)p Fx(\))350 b(lo)-31 b(w)g(er)349 b(half-bandwidth)j(of)d(the)g
+(retained)g(banded)f(appro)-31 b(ximate)352 b(Ja-)12435
+77867 y(cobian)370 b(blo)31 b(c)-31 b(k.)p Black Black
+eop
+%%Page: 67 75
+67 74 bop Black 4000 2701 a Fy(5.8)425 b(Preconditioner)i(mo)35
+b(dules)31418 b(67)p 4000 3144 48001 45 v Black Black
+10814 6974 a Fu(dqrely)p Black 2135 w Fx(\()p Fu(realtype)p
+Fx(\))262 b(the)e(relativ)-31 b(e)261 b(incremen)-31
+b(t)261 b(in)f(comp)31 b(onen)-31 b(ts)261 b(of)f Fu(y)f
+Fx(used)g(in)h(the)g(di\256erence)16435 8302 y(quotien)-31
+b(t)414 b(appro)-31 b(ximations.)622 b(The)412 b(default)h(is)e
+Fu(dqrely)p Fx(=)41182 7359 y Fp(p)p 42104 7359 6369
+45 v 943 x Fx(unit)370 b(roundo\256)q(,)422 b(whic)-31
+b(h)16435 9631 y(can)369 b(b)31 b(e)369 b(sp)31 b(eci\257ed)369
+b(b)-31 b(y)369 b(passing)h Fu(dqrely)p Fx(=)308 b(0)p
+Fm(:)p Fx(0.)p Black 10814 11205 a Fu(gloc)p Black 3297
+w Fx(\()p Fu(CVLocalFn)p Fx(\))389 b(the)e Fv(C)g Fx(function)h(whic)
+-31 b(h)388 b(computes)f(the)g(appro)-31 b(ximation)390
+b Fm(g)40 b Fx(\()p Fm(t;)184 b(y)40 b Fx(\))338 b Fp(\274)16435
+12533 y Fm(f)119 b Fx(\()p Fm(t;)184 b(y)40 b Fx(\).)p
+Black 10814 14108 a Fu(cfn)p Black 3878 w Fx(\()p Fu(CVCommFn)p
+Fx(\))344 b(the)f(optional)i Fv(C)d Fx(function)i(whic)-31
+b(h)343 b(p)31 b(erforms)342 b(all)h(in)-31 b(ter-pro)31
+b(cess)342 b(com-)16435 15436 y(m)-31 b(unication)372
+b(required)d(for)g(the)h(computation)i(of)e Fm(g)40 b
+Fx(\()p Fm(t;)184 b(y)40 b Fx(\).)p Black 4000 17256
+a(Return)369 b(v)-61 b(alue)p Black 554 w(If)284 b(successful,)301
+b Fu(CVBBDPrecAlloc)286 b Fx(returns)e(a)g(p)31 b(oin)-31
+b(ter)285 b(to)g(the)g(newly)g(created)g Fv(cvbbdpre)g
+Fx(mem-)10814 18585 y(ory)369 b(blo)31 b(c)-31 b(k)370
+b(\(of)h(t)-31 b(yp)31 b(e)369 b Fu(void)582 b(*)p Fx(\).)493
+b(If)369 b(an)g(error)g(o)31 b(ccurred,)368 b Fu(CVBBDPrecAlloc)j
+Fx(returns)e Fu(NULL)p Fx(.)p Black 4000 20405 a(Notes)p
+Black 4072 w(If)394 b(one)h(of)h(the)f(half-bandwidths)i
+Fu(mudq)e Fx(or)g Fu(mldq)g Fx(to)g(b)31 b(e)394 b(used)h(in)g(the)g
+(di\256erence-quotien)-31 b(t)396 b(cal-)10814 21733
+y(culation)407 b(of)f(the)f(appro)-31 b(ximate)408 b(Jacobian)f(is)e
+(negativ)-31 b(e)407 b(or)e(exceeds)g(the)g(v)-61 b(alue)406
+b Fu(local)p 48196 21733 349 45 v 419 w(N)p Fp(\241)p
+Fx(1,)415 b(it)10814 23062 y(is)369 b(replaced)g(with)i(0)e(or)g
+Fu(local)p 24071 23062 V 420 w(N)p Fp(\241)p Fx(1)g(accordingly)-92
+b(.)10814 24882 y(The)533 b(half-bandwidths)i Fu(mudq)e
+Fx(and)f Fu(mldq)h Fx(need)f(not)i(b)31 b(e)532 b(the)g(true)h
+(half-bandwidths)i(of)e(the)10814 26210 y(Jacobian)350
+b(of)f(the)f(lo)31 b(cal)350 b(blo)31 b(c)-31 b(k)350
+b(of)f Fm(g)40 b Fx(,)352 b(when)d(smaller)g(v)-61 b(alues)348
+b(ma)-31 b(y)350 b(pro)-31 b(vide)349 b(a)g(greater)g(e\261ciency)-92
+b(.)10814 28031 y(Also,)502 b(the)474 b(half-bandwidths)j
+Fu(mukeep)e Fx(and)f Fu(mlkeep)h Fx(of)g(the)g(retained)g(banded)f
+(appro)-31 b(ximate)10814 29359 y(Jacobian)320 b(blo)31
+b(c)-31 b(k)320 b(ma)-31 b(y)320 b(b)31 b(e)318 b(ev)-31
+b(en)319 b(smaller,)330 b(to)320 b(reduce)e(storage)h(and)g
+(computation)j(costs)d(further.)10814 31180 y(F)-92 b(or)368
+b(all)j(four)e(half-bandwidths,)j(the)e(v)-61 b(alues)369
+b(need)g(not)h(b)31 b(e)368 b(the)i(same)f(on)h(ev)-31
+b(ery)369 b(pro)31 b(cessor.)p 4000 33604 6565 45 v 4000
+35190 45 1587 v 4376 34612 a Fu(CVBBDSpgmr)p 10520 35190
+V 4000 35234 6565 45 v Black 4000 36539 a Fx(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVBBDSpgmr\(cvode)p 24248 36539
+349 45 v 421 w(mem,)h(pretype,)g(maxl,)g(bbd)p 38035
+36539 V 419 w(data\);)p Black 4000 38359 a Fx(Description)p
+Black 1286 w(The)325 b(function)i Fu(CVBBDSpgmr)f Fx(links)g(the)g
+Fv(cvbbdpre)g Fx(data)g(to)g(the)g Fv(cvspgmr)e Fx(linear)i(solv)-31
+b(er)326 b(and)10814 39687 y(attac)-31 b(hes)371 b(the)e(latter)i(to)f
+(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31 b(c)-31
+b(k.)p Black 4000 41508 a(Argumen)g(ts)p Black Black
+1517 w Fu(cvode)p 13789 41508 V 419 w(mem)p Black 554
+w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fv(cv)-25 b(ode)370 b Fx(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 43082 a Fu(pretype)p Black
+1554 w Fx(\()p Fu(int)p Fx(\))370 b(preconditioning)i(t)-31
+b(yp)31 b(e.)493 b(Must)369 b(b)31 b(e)369 b(one)g(of)h
+Fu(PREC)p 40261 43082 V 419 w(LEFT)g Fx(or)f Fu(PREC)p
+47054 43082 V 419 w(RIGHT)p Fx(.)p Black 10814 44656
+a Fu(maxl)p Black 3297 w Fx(\()p Fu(int)p Fx(\))406 b(maxim)-31
+b(um)407 b(dimension)f(of)f(the)g(Krylo)-31 b(v)406 b(subspace)e(to)h
+(b)31 b(e)404 b(used.)598 b(P)-31 b(ass)405 b(0)g(to)16435
+45985 y(use)369 b(the)g(default)i(v)-61 b(alue)369 b
+Fu(CVSPGMR)p 30971 45985 V 420 w(MAXL)p Fx(=)308 b(5.)p
+Black 10814 47559 a Fu(bbd)p 12627 47559 V 419 w(data)p
+Black 1135 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fv(cvbbdpre)h Fx(data)h(structure.)p
+Black 4000 49379 a(Return)e(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+10814 51200 a Fu(CVSPGMR)p 14951 51200 V 419 w(SUCCESS)p
+Black 1555 w Fx(The)g Fv(cvspgmr)f Fx(initialization)374
+b(w)-31 b(as)370 b(successful.)p Black 10814 52774 a
+Fu(CVSPGMR)p 14951 52774 V 419 w(MEM)p 17113 52774 V
+419 w(NULL)p Black 1136 w Fx(The)f Fu(cvode)p 26172 52774
+V 419 w(mem)h Fx(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p
+Fx(.)p Black 10814 54348 a Fu(CVSPGMR)p 14951 54348 V
+419 w(ILL)p 17113 54348 V 419 w(INPUT)p Black 555 w Fx(The)f
+(preconditioner)h(t)-31 b(yp)31 b(e)370 b Fu(pretype)g
+Fx(is)f(not)h(v)-61 b(alid.)p Black 10814 55923 a Fu(CVSPGMR)p
+14951 55923 V 419 w(MEM)p 17113 55923 V 419 w(FAIL)p
+Black 1136 w Fx(A)369 b(memory)h(allo)31 b(cation)372
+b(request)d(failed.)p Black 10814 57497 a Fu(CV)p 12046
+57497 V 419 w(PDATA)p 15370 57497 V 419 w(NULL)p Black
+2879 w Fx(The)g Fv(cvbbdpre)h Fx(preconditioner)g(has)f(not)h(b)31
+b(een)369 b(initialized.)p 4000 59921 8308 45 v 4000
+61262 45 1341 v 4376 60930 a Fu(CVBBDPrecFree)p 12263
+61262 V 4000 61306 8308 45 v Black 4000 62683 a Fx(Call)p
+Black 4848 w Fu(CVBBDPrecFree\(bbd)p 20761 62683 349
+45 v 421 w(data\);)p Black 4000 64503 a Fx(Description)p
+Black 1286 w(The)g(function)i Fu(CVBBDPrecFree)g Fx(frees)d(the)i(p)31
+b(oin)-31 b(ter)370 b(allo)31 b(cated)371 b(b)-31 b(y)370
+b Fu(CVBBDPrecAlloc)p Fx(.)p Black 4000 66323 a(Argumen)-31
+b(ts)p Black 1517 w(The)350 b(only)h(argumen)-31 b(t)351
+b(of)g Fu(CVBBDPrecFree)h Fx(is)e(the)g(p)31 b(oin)-31
+b(ter)350 b(to)h(the)f Fv(cvbbdpre)h Fx(data)g(structure)10814
+67652 y(\(of)370 b(t)-31 b(yp)31 b(e)370 b Fu(void)582
+b(*)p Fx(\).)p Black 4000 69472 a(Return)369 b(v)-61
+b(alue)p Black 554 w(The)369 b(function)i Fu(CVBBDPrecFree)g
+Fx(has)e(no)g(return)g(v)-61 b(alue.)4000 71225 y(The)349
+b Fv(cvbbdpre)g Fx(mo)31 b(dule)349 b(also)g(pro)-31
+b(vides)349 b(a)f(reinitialization)353 b(function)d(to)f(allo)-31
+b(w)351 b(solving)f(a)e(sequence)g(of)h(prob-)4000 72553
+y(lems)401 b(of)g(the)g(same)g(size)g(with)h Fv(cvspgmr)p
+Fx(/)p Fv(cvbbdpre)p Fx(,)410 b(pro)-31 b(vided)401 b(there)g(is)g(no)g
+(c)-31 b(hange)401 b(in)g Fu(local)p 46567 72553 V 419
+w(N)p Fx(,)h Fu(mukeep)p Fx(,)4000 73882 y(or)429 b Fu(mlkeep)p
+Fx(.)675 b(After)430 b(solving)h(one)f(problem,)446 b(and)430
+b(after)g(calling)i Fu(CVodeReInit)f Fx(to)f(re-initialize)j
+Fv(cv)-25 b(ode)430 b Fx(for)g(a)4000 75210 y(subsequen)-31
+b(t)426 b(problem,)441 b(a)427 b(call)g(to)g Fu(CVBBDPrecReInit)h
+Fx(can)e(b)31 b(e)426 b(made)g(to)h(c)-31 b(hange)427
+b(an)-31 b(y)427 b(of)f(the)h(follo)-31 b(wing:)610 b(the)4000
+76539 y(half-bandwidths)282 b Fu(mudq)d Fx(and)h Fu(mldq)g
+Fx(used)e(in)i(the)f(di\256erence-quotien)-31 b(t)282
+b(Jacobian)e(appro)-31 b(ximations,)302 b(the)279 b(relativ)-31
+b(e)4000 77867 y(incremen)g(t)370 b Fu(dqrely)p Fx(,)h(or)e(one)g(of)h
+(the)f(user-supplied)g(functions)h Fu(gloc)g Fx(and)f
+Fu(cfn)p Fx(.)p Black Black eop
+%%Page: 68 76
+68 75 bop Black 0 2701 a Fy(68)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 0 5965 9470 45 v 0 7306
+45 1341 v 376 6974 a Fu(CVBBDPrecReInit)p 9426 7306 V
+0 7350 9470 45 v Black 0 8734 a Fx(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVBBDPrecReInit\(bbd)p 21991 8734
+349 45 v 421 w(data,)h(mudq,)g(mldq,)g(dqrely,)g(gloc,)g(cfn\);)p
+Black 0 10569 a Fx(Description)p Black 1286 w(The)369
+b(function)i Fu(CVBBDPrecReInit)g Fx(reinitializes)h(the)d
+Fv(cvbbdpre)h Fx(preconditioner.)p Black 0 12404 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(bbd)p 8627 12404 V 419 w(data)p
+Black 554 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fv(cvbbdpre)h Fx(data)h(structure.)p
+Black 6814 13986 a Fu(mudq)p Black 2716 w Fx(\()p Fu(long)582
+b(int)p Fx(\))368 b(upp)31 b(er)366 b(half-bandwidth)k(to)e(b)31
+b(e)367 b(used)g(in)g(the)h(di\256erence-quotien)-31
+b(t)369 b(Ja-)11854 15314 y(cobian)h(appro)-31 b(ximation.)p
+Black 6814 16896 a Fu(mldq)p Black 2716 w Fx(\()p Fu(long)582
+b(int)p Fx(\))399 b(lo)-31 b(w)g(er)399 b(half-bandwidth)i(to)e(b)31
+b(e)397 b(used)g(in)i(the)f(di\256erence-quotien)-31
+b(t)400 b(Ja-)11854 18224 y(cobian)370 b(appro)-31 b(ximation.)p
+Black 6814 19805 a Fu(dqrely)p Black 1554 w Fx(\()p Fu(realtype)p
+Fx(\))314 b(the)f(relativ)-31 b(e)314 b(incremen)-31
+b(t)314 b(in)f(comp)31 b(onen)-31 b(ts)313 b(of)g Fu(y)g
+Fx(used)f(in)h(the)f(di\256erence)11854 21134 y(quotien)-31
+b(t)429 b(appro)-31 b(ximations.)669 b(The)428 b(default)g(is)f
+Fu(dqrely)h Fx(=)37163 20190 y Fp(p)p 38085 20190 6369
+45 v 944 x Fx(unit)370 b(roundo\256,)442 b(whic)-31 b(h)11854
+22462 y(can)369 b(b)31 b(e)369 b(sp)31 b(eci\257ed)369
+b(b)-31 b(y)369 b(passing)h Fu(dqrely)g Fx(=)307 b(0)p
+Fm(:)p Fx(0.)p Black 6814 24044 a Fu(gloc)p Black 2716
+w Fx(\()p Fu(CVLocalFn)p Fx(\))449 b(the)e Fv(C)g Fx(function)h(whic)
+-31 b(h)448 b(computes)g(the)f(appro)-31 b(ximation)450
+b Fm(g)40 b Fx(\()p Fm(t;)184 b(y)40 b Fx(\))438 b Fp(\274)11854
+25372 y Fm(f)119 b Fx(\()p Fm(t;)184 b(y)40 b Fx(\).)p
+Black 6814 26954 a Fu(cfn)p Black 3297 w Fx(\()p Fu(CVCommFn)p
+Fx(\))409 b(the)e(optional)i Fv(C)e Fx(function)h(whic)-31
+b(h)408 b(p)31 b(erforms)407 b(all)h(in)-31 b(ter-pro)31
+b(cess)406 b(com-)11854 28282 y(m)-31 b(unication)372
+b(required)d(for)g(the)g(computation)k(of)c Fm(g)40 b
+Fx(\()p Fm(t;)184 b(y)40 b Fx(\).)p Black 0 30117 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b(of)f Fu(CVBBDPrecReInit)i Fx(is)f(alw)-31
+b(a)g(ys)371 b Fu(CV)p 31572 30117 349 45 v 419 w(SUCCESS)p
+Fx(.)p Black 0 31952 a(Notes)p Black 4072 w(If)282 b(one)h(of)f(the)h
+(half-bandwidths)i Fu(mudq)d Fx(or)g Fu(mldq)h Fx(is)f(negativ)-31
+b(e)285 b(or)d(exceeds)f(the)i(v)-61 b(alue)283 b Fu(local)p
+45348 31952 V 419 w(N)p Fp(\241)p Fx(1,)6814 33280 y(it)370
+b(is)f(replaced)g(with)i(0)e(or)g Fu(local)p 21178 33280
+V 420 w(N)p Fp(\241)p Fx(1)g(accordingly)-92 b(.)0 35041
+y(The)369 b(follo)-31 b(wing)373 b(t)-31 b(w)g(o)371
+b(optional)h(output)e(functions)h(are)e(a)-31 b(v)-61
+b(ailable)372 b(for)d(use)f(with)j(the)e Fv(cvbbdpre)h
+Fx(mo)31 b(dule:)p 0 37078 12957 45 v 0 38665 45 1587
+v 376 38087 a Fu(CVBBDPrecGetWorkSpace)p 12913 38665
+V 0 38709 12957 45 v Black 0 40021 a Fx(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVBBDPrecGetWorkSpace\(bbd)p
+25477 40021 349 45 v 422 w(data,)h(&lenrwBBDP,)h(&leniwBBDP\);)p
+Black 0 41856 a Fx(Description)p Black 1286 w(The)422
+b(function)i Fu(CVBBDPrecGetWorkSpace)h Fx(returns)c(the)h(lo)31
+b(cal)424 b Fv(cvbbdpre)f Fx(real)f(and)h(in)-31 b(teger)6814
+43184 y(w)g(orkspace)370 b(sizes.)p Black 0 45019 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(bbd)p 8627 45019 V 419 w(data)p
+Black 1298 w Fx(\()p Fu(void)582 b(*)p Fx(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fv(cvbbdpre)h Fx(data)g(structure.)p
+Black 6814 46600 a Fu(lenrwBBDP)p Black 555 w Fx(\()p
+Fu(long)582 b(int)p Fx(\))291 b(lo)31 b(cal)292 b(n)-31
+b(um)g(b)31 b(er)290 b(of)h Fu(realtype)g Fx(v)-61 b(alues)290
+b(in)h(the)f Fv(cvbbdpre)h Fx(w)-31 b(orkspace.)p Black
+6814 48182 a Fu(leniwBBDP)p Black 555 w Fx(\()p Fu(long)582
+b(int)p Fx(\))370 b(lo)31 b(cal)371 b(n)-31 b(um)g(b)31
+b(er)369 b(of)g(in)-31 b(teger)371 b(v)-61 b(alues)369
+b(in)g(the)h Fv(cvbbdpre)g Fx(w)-31 b(orkspace.)p Black
+0 50017 a(Return)369 b(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fx(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fx(\))g(is)f(one)g(of)p Black
+6814 51852 a Fu(CV)p 8046 51852 V 419 w(SUCCESS)p Black
+2135 w Fx(The)g(optional)j(output)f(v)-61 b(alue)369
+b(has)g(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 53434 a Fu(CV)p 8046 53434 V 419 w(PDATA)p 11370
+53434 V 419 w(NULL)p Black 554 w Fx(The)g Fv(cvbbdpre)h
+Fx(preconditioner)h(has)e(not)h(b)31 b(een)368 b(initialized.)p
+Black 0 55268 a(Notes)p Black 4072 w(In)317 b(terms)g(of)g
+Fu(local)p 15361 55268 V 419 w(N)h Fx(and)f Fu(smu)g
+Fx(=)g(min)q(\()p Fu(local)p 27197 55268 V 420 w(N)581
+b(-)g(1,)h(mukeep)318 b Fx(+)f Fu(mlkeep)p Fx(\),)329
+b(the)317 b(actual)i(size)6814 56597 y(of)412 b(the)h(real)f(w)-31
+b(orkspace)412 b(is)g(\(2)h Fu(mlkeep)f Fx(+)g Fu(mukeep)h
+Fx(+)e Fu(smu)i Fx(+2\))184 b Fu(local)p 37658 56597
+V 420 w(N)1235 b(realtype)413 b Fx(w)-31 b(ords,)6814
+57925 y(and)422 b(the)h(actual)h(size)e(of)g(the)h(in)-31
+b(teger)423 b(w)-31 b(orkspace)423 b(is)f Fu(local)p
+32983 57925 V 419 w(N)g Fx(in)-31 b(teger)423 b(w)-31
+b(ords.)652 b(These)422 b(v)-61 b(alues)6814 59253 y(are)369
+b(lo)31 b(cal)371 b(to)f(the)f(curren)-31 b(t)369 b(pro)31
+b(cessor.)p 0 61723 14120 45 v 0 63064 45 1341 v 376
+62732 a Fu(CVBBDPrecGetNumGfnEvals)p 14075 63064 V 0
+63108 14120 45 v Black 0 64492 a Fx(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVBBDPrecGetNumGfnEvals\(bbd)p 26639
+64492 349 45 v 422 w(data,)h(&ngevalsBBDP\);)p Black
+0 66327 a Fx(Description)p Black 1286 w(The)317 b(function)h
+Fu(CVBBDPrecGetNumGfnEvals)h Fx(returns)d(the)g(n)-31
+b(um)g(b)31 b(er)317 b(of)g(calls)g(to)g(the)g(user)e
+Fu(gloc)6814 67655 y Fx(function)336 b(due)d(to)i(the)g(\257nite)g
+(di\256erence)e(appro)-31 b(ximation)338 b(of)d(the)f(Jacobian)i(blo)31
+b(c)-31 b(ks)335 b(used)e(within)6814 68984 y Fv(cvbbdpre)p
+Fx('s)370 b(preconditioner)h(setup)e(function.)p Black
+0 70819 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(bbd)p
+8627 70819 V 419 w(data)p Black 2460 w Fx(\()p Fu(void)582
+b(*)p Fx(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fv(cvbbdpre)h Fx(data)h(structure.)p Black 6814 72400
+a Fu(ngevalsBBDP)p Black 555 w Fx(\()p Fu(long)582 b(int)p
+Fx(\))370 b(the)g(n)-31 b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)f
+(user)f Fu(gloc)i Fx(function.)p Black 0 74235 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fx(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fx(\))g(is)f(one)g(of)p Black 6814 76070 a Fu(CV)p 8046
+76070 V 419 w(SUCCESS)p Black 2135 w Fx(The)g(optional)j(output)f(v)-61
+b(alue)369 b(has)g(b)31 b(een)369 b(successfully)g(set.)p
+Black 6814 77652 a Fu(CV)p 8046 77652 V 419 w(PDATA)p
+11370 77652 V 419 w(NULL)p Black 554 w Fx(The)g Fv(cvbbdpre)h
+Fx(preconditioner)h(has)e(not)h(b)31 b(een)368 b(initialized.)p
+Black Black eop
+%%Page: 69 77
+69 76 bop Black 4000 2701 a Fy(5.9)425 b(F)-35 b(CV)g(ODE,)425
+b(a)f Fv(F)-32 b(or)-74 b(tran)p Fy(-)p Fv(C)424 b Fy(in)-35
+b(terface)424 b(mo)35 b(dule)21731 b(69)p 4000 3144 48001
+45 v Black 5660 6974 a Fx(The)456 b(costs)g(asso)31 b(ciated)457
+b(with)f Fv(cvbbdpre)h Fx(also)f(include)h Fu(nlinsetups)f
+Fx(LU)g(factorizations,)481 b Fu(nlinsetups)4000 8302
+y Fx(calls)420 b(to)h Fu(cfn)p Fx(,)433 b(and)420 b Fu(npsolves)g
+Fx(banded)g(bac)-31 b(ksolv)g(e)421 b(calls,)434 b(where)419
+b Fu(nlinsetups)i Fx(and)f Fu(npsolves)h Fx(are)e(optional)4000
+9631 y Fv(cv)-25 b(ode)370 b Fx(outputs)g(\(see)f Fp(x)p
+Fx(5.5.6\).)5660 10975 y(Similar)312 b(blo)31 b(c)-31
+b(k-diagonal)314 b(preconditioners)d(could)g(b)31 b(e)309
+b(considered)h(with)h(di\256eren)-31 b(t)310 b(treatmen)-31
+b(t)312 b(of)f(the)f(blo)31 b(c)-31 b(ks)4000 12304 y
+Fm(P)4711 12470 y Fk(m)5552 12304 y Fx(.)882 b(F)-92
+b(or)499 b(example,)534 b(incomplete)501 b(LU)e(factorization)k(or)c
+(an)h(iterativ)-31 b(e)501 b(metho)31 b(d)501 b(could)f(b)31
+b(e)498 b(used)h(instead)h(of)4000 13632 y(banded)369
+b(LU)g(factorization.)4000 17380 y Fs(5.9)1793 b(F)-50
+b(CV)g(ODE,)599 b(a)e Fe(F)-46 b(or)-106 b(tran)p Fs(-)p
+Fe(C)596 b Fs(in)-50 b(terface)600 b(mo)50 b(dule)4000
+19835 y Fx(The)288 b Fv(f)-25 b(cv)g(ode)289 b Fx(in)-31
+b(terface)288 b(mo)31 b(dule)289 b(is)f(a)g(pac)-31 b(k)-61
+b(age)289 b(of)f Fv(C)f Fx(functions)i(whic)-31 b(h)289
+b(supp)31 b(ort)287 b(the)h(use)f(of)i(the)f Fv(cv)-25
+b(ode)288 b Fx(solv)-31 b(er,)4000 21163 y(for)391 b(the)g(solution)h
+(of)f(ODE)g(systems)f Fm(dy)40 b(=dt)344 b Fx(=)f Fm(f)119
+b Fx(\()p Fm(t;)184 b(y)40 b Fx(\),)398 b(in)391 b(a)f(mixed)i
+Fv(F)-32 b(or)-74 b(tran)p Fx(/)p Fv(C)390 b Fx(setting.)558
+b(While)392 b Fv(cv)-25 b(ode)391 b Fx(is)4000 22491
+y(written)363 b(in)f Fv(C)p Fx(,)g(it)h(is)f(assumed)f(here)g(that)i
+(the)g(user's)d(calling)k(program)f(and)f(user-supplied)f
+(problem-de\257ning)4000 23820 y(routines)g(are)g(written)h(in)g
+Fv(F)-32 b(or)-74 b(tran)p Fx(.)488 b(This)361 b(pac)-31
+b(k)-61 b(age)363 b(pro)-31 b(vides)361 b(the)g(necessary)g(in)-31
+b(terface)362 b(to)g Fv(cv)-25 b(ode)361 b Fx(for)g(b)31
+b(oth)4000 25148 y(the)369 b(serial)h(and)f(the)h(parallel)h
+Fv(nvector)e Fx(implemen)-31 b(tations.)4000 28334 y
+Fq(5.9.1)1495 b(F)-42 b(CV)g(ODE)501 b(routines)4000
+30408 y Fx(The)369 b(user-callable)i(functions,)g(with)f(the)f(corresp)
+31 b(onding)370 b Fv(cv)-25 b(ode)370 b Fx(functions,)g(are)f(as)g
+(follo)-31 b(ws:)p Black 5660 32671 a Fp(\262)p Black
+554 w Fx(In)g(terface)370 b(to)g(the)f Fv(nvector)h Fx(mo)31
+b(dules)p Black 8013 34950 a Fy({)p Black 554 w Fu(FNVINITS)370
+b Fx(\(de\257ned)f(b)-31 b(y)370 b Fv(nvector)p 24729
+34950 368 45 v 440 w(serial)p Fx(\))f(in)-31 b(terfaces)370
+b(to)g Fu(NV)p 36782 34950 349 45 v 419 w(New)p 38944
+34950 V 419 w(Serial)p Fx(.)p Black 8013 36754 a Fy({)p
+Black 554 w Fu(FNVINITP)g Fx(\(de\257ned)f(b)-31 b(y)370
+b Fv(nvector)p 24729 36754 368 45 v 440 w(p)-74 b(arallel)p
+Fx(\))371 b(in)-31 b(terfaces)370 b(to)g Fu(NV)p 38300
+36754 349 45 v 419 w(New)p 40462 36754 V 419 w(Parallel)p
+Fx(.)p Black 8013 38558 a Fy({)p Black 554 w Fu(FNVFREES)g
+Fx(\(de\257ned)f(b)-31 b(y)370 b Fv(nvector)p 24729 38558
+368 45 v 440 w(serial)p Fx(\))f(in)-31 b(terface)371
+b(to)f Fu(NV)p 36346 38558 349 45 v 418 w(Destroy)p 40831
+38558 V 420 w(Serial)p Fx(.)p Black 8013 40362 a Fy({)p
+Black 554 w Fu(FNVFREEP)g Fx(\(de\257ned)f(b)-31 b(y)370
+b Fv(nvector)p 24729 40362 368 45 v 440 w(p)-74 b(arallel)p
+Fx(\))371 b(in)-31 b(terfaces)370 b(to)g Fu(NV)p 38300
+40362 349 45 v 419 w(Destroy)p 42786 40362 V 419 w(Parallel)p
+Fx(.)p Black 5660 42641 a Fp(\262)p Black 554 w Fx(In)-31
+b(terface)370 b(to)g(the)f(main)i Fv(cv)-25 b(ode)370
+b Fx(mo)31 b(dule)p Black 8013 44921 a Fy({)p Black 554
+w Fu(FCVMALLOC)370 b Fx(in)-31 b(terfaces)370 b(to)g
+Fu(CVodeCreate)p Fx(,)h Fu(CVodeSet*)f Fx(functions,)h(and)f
+Fu(CVodeMalloc)p Fx(.)p Black 8013 46725 a Fy({)p Black
+554 w Fu(FCVREINIT)g Fx(in)-31 b(terfaces)370 b(to)g
+Fu(CVodeReInit)h Fx(and)e Fu(CVodeSet*)h Fx(functions.)p
+Black 8013 48529 a Fy({)p Black 554 w Fu(FCVODE)426 b
+Fx(in)-31 b(terfaces)427 b(to)f Fu(CVode)p Fx(,)441 b
+Fu(CVodeGet*)427 b Fx(functions,)441 b(and)426 b(to)h(the)e(optional)k
+(output)e(functions)9203 49857 y(for)369 b(the)g(selected)h(linear)g
+(solv)-31 b(er)370 b(mo)31 b(dule.)p Black 8013 51661
+a Fy({)p Black 554 w Fu(FCVDKY)370 b Fx(in)-31 b(terfaces)370
+b(to)g(the)f(in)-31 b(terp)31 b(olated)371 b(output)g(function)f
+Fu(CVodeGetDky)p Fx(.)p Black 8013 53465 a Fy({)p Black
+554 w Fu(FCVFREE)g Fx(in)-31 b(terfaces)370 b(to)g Fu(CVodeFree)p
+Fx(.)p Black 8013 55269 a Fy({)p Black 554 w Fu(FCVEWTSET)g
+Fx(in)-31 b(terfaces)370 b(to)g Fu(CVodeSetEwtFn)p Fx(.)p
+Black 5660 57548 a Fp(\262)p Black 554 w Fx(In)-31 b(terface)370
+b(to)g(the)f(linear)h(solv)-31 b(er)370 b(mo)31 b(dules)p
+Black 8013 59828 a Fy({)p Black 554 w Fu(FCVDIAG)370
+b Fx(in)-31 b(terfaces)370 b(to)g Fu(CVDiag)p Black 8013
+61632 a Fy({)p Black 554 w Fu(FCVDENSE)g Fx(in)-31 b(terfaces)370
+b(to)g Fu(CVDense)p Fx(.)p Black 8013 63436 a Fy({)p
+Black 554 w Fu(FCVDENSESETJAC)h Fx(in)-31 b(terfaces)370
+b(to)g Fu(CVDenseSetJacFn)p Fx(.)p Black 8013 65239 a
+Fy({)p Black 554 w Fu(FCVBAND)g Fx(in)-31 b(terfaces)370
+b(to)g Fu(CVBand)p Fx(.)p Black 8013 67043 a Fy({)p Black
+554 w Fu(FCVBANDSETJAC)h Fx(in)-31 b(terfaces)370 b(to)g
+Fu(CVBandSetJacFn)p Fx(.)p Black 8013 68847 a Fy({)p
+Black 554 w Fu(FCVSPGMR)g Fx(in)-31 b(terfaces)370 b(to)g
+Fu(CVSpgmr)g Fx(and)f Fv(spgmr)f Fx(optional)k(input)e(functions.)p
+Black 8013 70651 a Fy({)p Black 554 w Fu(FCVSPGMRREINIT)h
+Fx(in)-31 b(terfaces)370 b(to)g Fv(spgmr)e Fx(optional)k(input)e
+(functions.)p Black 8013 72455 a Fy({)p Black 554 w Fu(FCVSPGMRSETJAC)h
+Fx(in)-31 b(terfaces)370 b(to)g Fu(CVSpgmrSetJacTimesVecFn)p
+Fx(.)p Black 8013 74259 a Fy({)p Black 554 w Fu(FCVSPGMRSETPREC)h
+Fx(in)-31 b(terfaces)370 b(to)g Fu(CVSpgmrSetPreconditioner)p
+Fx(.)5660 76539 y(The)376 b(user-supplied)f(functions,)j(eac)-31
+b(h)376 b(listed)g(with)g(the)g(corresp)31 b(onding)375
+b(in)-31 b(terface)377 b(function)g(whic)-31 b(h)376
+b(calls)g(it)4000 77867 y(\(and)370 b(its)g(t)-31 b(yp)31
+b(e)369 b(within)i Fv(cv)-25 b(ode)p Fx(\),)371 b(are)e(as)g(follo)-31
+b(ws:)p Black Black eop
+%%Page: 70 78
+70 77 bop Black 0 2701 a Fy(70)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black Black Black 4484 5911
+39032 45 v 4462 7240 45 1329 v 5149 6841 a Fv(f)-25 b(cv)g(ode)370
+b Fx(routine)g(\()p Fv(F)-32 b(or)-74 b(tran)p Fx(\))p
+19457 7240 V 1328 w Fv(cv)-25 b(ode)369 b Fx(function)i(\()p
+Fv(C)p Fx(\))p 30542 7240 V 1329 w Fv(cv)-25 b(ode)370
+b Fx(function)h(t)-31 b(yp)31 b(e)p 43493 7240 V 4484
+7284 39032 45 v 4462 8612 45 1329 v 5149 8214 a Fu(FCVFUN)p
+19457 8612 V 11509 w(FCVf)p 30542 8612 V 8760 w(CVRhsFn)p
+43493 8612 V 4462 9940 V 5149 9542 a(FCVEWT)p 19457 9940
+V 11509 w(FCVEwtSet)p 30542 9940 V 5855 w(CVEwtFn)p 43493
+9940 V 4462 11269 V 5149 10870 a(FCVDJAC)p 19457 11269
+V 10928 w(FCVDenseJac)p 30542 11269 V 4693 w(CVDenseJacFn)p
+43493 11269 V 4462 12597 V 5149 12199 a(FCVBJAC)p 19457
+12597 V 10928 w(FCVBandJac)p 30542 12597 V 5274 w(CVBandJacFn)p
+43493 12597 V 4462 13926 V 5149 13527 a(FCVPSOL)p 19457
+13926 V 10928 w(FCVPSol)p 30542 13926 V 7017 w(CVSpgmrPrecSolveFn)p
+43493 13926 V 4462 15254 V 5149 14855 a(FCVPSET)p 19457
+15254 V 10928 w(FCVPSet)p 30542 15254 V 7017 w(CVSpgmrPrecSetupFn)p
+43493 15254 V 4462 16582 V 5149 16184 a(FCVJTIMES)p 19457
+16582 V 9766 w(FCVJtimes)p 30542 16582 V 5855 w(CVSpgmrJacTimesVecFn)p
+43493 16582 V 4484 16627 39032 45 v 0 18456 a Fx(In)424
+b(con)-31 b(trast)426 b(to)g(the)f(case)f(of)i(direct)f(use)f(of)h
+Fv(cv)-25 b(ode)p Fx(,)440 b(and)425 b(of)h(most)f Fv(F)-32
+b(or)-74 b(tran)423 b Fx(ODE)i(solv)-31 b(ers,)439 b(the)425
+b(names)g(of)0 19784 y(all)i(user-supplied)f(routines)g(here)f(are)h
+(\257xed,)441 b(in)426 b(order)g(to)g(maximize)j(p)31
+b(ortabilit)-31 b(y)429 b(for)d(the)g(resulting)h(mixed-)0
+21113 y(language)371 b(program.)0 24104 y Fy(Imp)35 b(ortan)-35
+b(t)425 b(note)h(on)f(p)35 b(ortabilit)-35 b(y)0 26188
+y Fx(In)488 b(this)g(pac)-31 b(k)-61 b(age,)520 b(the)488
+b(names)h(of)f(the)h(in)-31 b(terface)489 b(functions,)520
+b(and)488 b(the)h(names)f(of)h(the)f Fv(F)-32 b(or)-74
+b(tran)487 b Fx(user)g(rou-)0 27516 y(tines)547 b(called)g(b)-31
+b(y)546 b(them,)592 b(app)31 b(ear)546 b(as)g(dumm)-31
+b(y)548 b(names)e(whic)-31 b(h)547 b(are)f(mapp)31 b(ed)547
+b(to)g(actual)h(v)-61 b(alues)546 b(b)-31 b(y)546 b(a)h(series)0
+28844 y(of)473 b(de\257nitions)h(in)f(the)f(header)h(\257les)f
+Fu(fcvode.h)h Fx(and)g Fu(fcvbbd.h)p Fx(.)804 b(By)472
+b(default,)501 b(those)472 b(mapping)j(de\257nitions)0
+30173 y(dep)31 b(end)372 b(in)i(turn)e(on)i(the)f Fv(C)g
+Fx(macro)h Fu(F77)p 17445 30173 349 45 v 419 w(FUNC)f
+Fx(de\257ned)g(in)g(the)g(header)g(\257le)g Fu(config.h)h
+Fx(b)-31 b(y)373 b Fu(configure)p Fx(.)506 b(Ho)-31 b(w-)0
+31501 y(ev)g(er,)343 b(the)336 b(set)f(of)h(\260ags)g(|)g
+Fu(SUNDIALS)p 16070 31501 V 419 w(CASE)p 18813 31501
+V 419 w(UPPER)p Fx(,)h Fu(SUNDIALS)p 27429 31501 V 420
+w(CASE)p 30173 31501 V 419 w(LOWER)p Fx(,)f Fu(SUNDIALS)p
+38788 31501 V 420 w(UNDERSCORE)p 45018 31501 V 420 w(NONE)p
+Fx(,)0 32829 y Fu(SUNDIALS)p 4718 32829 V 420 w(UNDERSCORE)p
+10948 32829 V 420 w(ONE)p Fx(,)449 b(and)f Fu(SUNDIALS)p
+20746 32829 V 420 w(UNDERSCORE)p 26976 32829 V 420 w(TWO)g
+Fx(can)h(b)31 b(e)448 b(explicitly)j(de\257ned)d(in)h
+Fu(config.h)0 34158 y Fx(when)409 b(con\257guring)i Fv(sundials)d
+Fx(via)i(the)g Fu(--with-f77underscore)h Fx(and)f Fu(--with-f77case)h
+Fx(options)f(to)g(o)-31 b(v)g(er-)0 35486 y(ride)323
+b(the)g(default)h(b)31 b(eha)-31 b(vior)324 b(if)g(necessary)e(\(see)h
+(Chapter)g(2\).)478 b(Either)324 b(w)-31 b(a)g(y)-92
+b(,)334 b(the)323 b(names)g(in)-31 b(to)325 b(whic)-31
+b(h)323 b(the)h(dumm)-31 b(y)0 36814 y(names)370 b(are)f(mapp)31
+b(ed)369 b(are)g(in)h(upp)31 b(er)368 b(or)h(lo)-31 b(w)g(er)370
+b(case)f(and)h(ha)-31 b(v)g(e)370 b(up)f(to)h(t)-31 b(w)g(o)371
+b(underscores)d(app)31 b(ended.)1660 38164 y(The)436
+b(user)e(m)-31 b(ust)435 b(also)h(ensure)e(that)i(v)-61
+b(ariables)436 b(in)f(the)h(user)d Fv(F)-32 b(or)-74
+b(tran)434 b Fx(co)31 b(de)435 b(are)g(declared)g(in)g(a)h(manner)0
+39493 y(consisten)-31 b(t)421 b(with)g(their)f(coun)-31
+b(terparts)420 b(in)g Fv(cv)-25 b(ode)p Fx(.)644 b(All)421
+b(real)f(v)-61 b(ariables)420 b(m)-31 b(ust)420 b(b)31
+b(e)419 b(declared)h(as)g Fu(REAL)p Fx(,)g Fu(DOUBLE)0
+40821 y(PRECISION)p Fx(,)487 b(or)e(p)31 b(erhaps)484
+b(as)h Fu(REAL*)p Fo(n)p Fx(,)515 b(where)485 b Fo(n)g
+Fx(denotes)h(the)f(n)-31 b(um)g(b)31 b(er)485 b(of)h(b)-31
+b(ytes,)515 b(dep)31 b(ending)485 b(on)h(whether)0 42149
+y Fv(cv)-25 b(ode)459 b Fx(w)-31 b(as)458 b(built)h(in)g(single,)481
+b(double)459 b(or)f(extended)g(precision)g(\(see)g(Chapter)h(2\).)760
+b(Moreo)-31 b(v)g(er,)481 b(some)458 b(of)h(the)0 43478
+y Fv(F)-32 b(or)-74 b(tran)404 b Fx(in)-31 b(teger)407
+b(v)-61 b(ariables)406 b(m)-31 b(ust)406 b(b)31 b(e)405
+b(declared)h(as)f Fu(INTEGER*4)i Fx(or)e Fu(INTEGER*8)i
+Fx(according)g(to)f(the)g Fv(C)f Fx(t)-31 b(yp)31 b(e)0
+44806 y Fu(long)582 b(int)p Fx(.)485 b(These)345 b(in)-31
+b(teger)347 b(v)-61 b(ariables)346 b(include:)482 b(the)346
+b(arra)-31 b(y)346 b(of)g(in)-31 b(teger)346 b(optional)j(inputs)d(and)
+f(outputs)i(\()p Fu(IOPT)p Fx(\),)0 46134 y(problem)251
+b(dimensions)g(\()p Fu(NEQ)p Fx(,)h Fu(NLOCAL)p Fx(,)g
+Fu(NGLOBAL)p Fx(\),)g(and)e(Jacobian)i(half-bandwidths)h(\()p
+Fu(MU)p Fx(,)f Fu(ML)p Fx(,)f Fu(MUDQ)p Fx(,)g(and)f
+Fu(MLDQ)p Fx(\).)0 47463 y(This)368 b(is)f(particularly)j(imp)31
+b(ortan)-31 b(t)369 b(when)f(using)g Fv(cv)-25 b(ode)368
+b Fx(and)f(the)h Fv(f)-25 b(cv)g(ode)368 b Fx(pac)-31
+b(k)-61 b(age)369 b(on)f(64-bit)h(arc)-31 b(hitectures.)0
+50676 y Fq(5.9.2)1495 b(F)-42 b(CV)g(ODE)501 b(optional)f(input)f(and)g
+(output)0 52759 y Fx(In)e(order)g(to)i(k)-31 b(eep)498
+b(the)g(n)-31 b(um)g(b)31 b(er)497 b(of)h(user-callable)h
+Fv(f)-25 b(cv)g(ode)499 b Fx(in)-31 b(terface)499 b(routines)f(to)g(a)g
+(minim)-31 b(um,)533 b(optional)0 54087 y(inputs)340
+b(and)f(outputs)h(to)g(the)g Fv(cv)-25 b(ode)340 b Fx(solv)-31
+b(er)340 b(and)f(to)h(related)g(mo)31 b(dules)340 b(are)f(not)i
+(accessed)d(through)i(individual)0 55416 y(functions,)348
+b(but)342 b(rather)f(through)h(a)g(pair)f(of)h(arra)-31
+b(ys,)347 b Fu(IOPT)342 b Fx(of)g(in)-31 b(teger)342
+b(t)-31 b(yp)31 b(e)342 b(and)f Fu(ROPT)h Fx(of)g(real)f(t)-31
+b(yp)31 b(e.)484 b(T)-92 b(able)343 b(5.3)0 56744 y(lists)270
+b(the)f(en)-31 b(tries)269 b(in)h(these)f(t)-31 b(w)g(o)271
+b(arra)-31 b(ys)269 b(and)g(sp)31 b(eci\257es)269 b(the)g
+Fv(f)-25 b(cv)g(ode)270 b Fx(user-callable)g(routine)g(whic)-31
+b(h)270 b(sets/accesses)0 58073 y(the)329 b(corresp)31
+b(onding)329 b(optional)j(v)-61 b(ariable,)338 b(as)329
+b(w)-31 b(ell)331 b(as)d(the)i Fv(cv)-25 b(ode)329 b
+Fx(optional)j(function)e(whic)-31 b(h)330 b(is)f(actually)i(called.)0
+59401 y(F)-92 b(or)368 b(more)i(details)g(on)g(the)f(optional)j(inputs)
+e(and)f(outputs,)i(see)d Fp(x)p Fx(5.5.4)k(and)d Fp(x)p
+Fx(5.5.6.)0 62614 y Fq(5.9.3)1495 b(Usage)500 b(of)e(the)g(F)-42
+b(CV)g(ODE)501 b(in)-42 b(terface)499 b(mo)42 b(dule)0
+64697 y Fx(The)448 b(usage)g(of)g Fv(f)-25 b(cv)g(ode)449
+b Fx(requires)e(calls)h(to)h(six)f(or)f(sev)-31 b(en)448
+b(in)-31 b(terface)449 b(functions,)469 b(dep)31 b(ending)448
+b(on)g(the)g(metho)31 b(d)0 66025 y(options)490 b(selected,)519
+b(and)489 b(one)g(or)f(more)h(user-supplied)f(routines)h(whic)-31
+b(h)490 b(de\257ne)e(the)h(problem)g(to)g(b)31 b(e)488
+b(solv)-31 b(ed.)0 67354 y(These)371 b(function)i(calls)f(and)g(user)e
+(routines)i(are)f(summarized)h(separately)g(b)31 b(elo)-31
+b(w.)500 b(Some)372 b(details)h(are)e(omitted,)0 68682
+y(and)359 b(the)h(user)e(is)h(referred)f(to)i(the)f(description)i(of)e
+(the)h(corresp)31 b(onding)359 b Fv(cv)-25 b(ode)360
+b Fx(functions)g(for)f(information)k(on)0 70011 y(the)315
+b(argumen)-31 b(ts)316 b(of)g(an)-31 b(y)315 b(giv)-31
+b(en)316 b(user-callable)g(in)-31 b(terface)317 b(routine,)327
+b(or)314 b(of)i(a)f(giv)-31 b(en)316 b(user-supplied)e(function)j
+(called)0 71339 y(b)-31 b(y)441 b(an)g(in)-31 b(terface)442
+b(function.)709 b(The)441 b(usage)g(of)g Fv(f)-25 b(cv)g(ode)442
+b Fx(with)g(preconditioner)g(mo)31 b(dules)441 b(is)g(describ)31
+b(ed)440 b(in)h(later)0 72667 y(subsections.)1660 74017
+y(Steps)454 b(mark)-31 b(ed)454 b(with)g([)p Fy(S)p Fx(])h(in)e(the)h
+(instructions)g(b)31 b(elo)-31 b(w)455 b(apply)f(to)g(the)f(serial)h
+Fv(nvector)g Fx(implemen)-31 b(tation)0 75345 y(\()p
+Fv(nvector)p 5157 75345 368 45 v 441 w(serial)p Fx(\))369
+b(only)-92 b(,)371 b(while)f(those)g(mark)-31 b(ed)369
+b(with)i([)p Fy(P)p Fx(])f(apply)g(to)g Fv(nvector)p
+35567 75345 V 441 w(p)-74 b(arallel)p Fx(.)p Black 553
+77867 a(1.)p Black 493 w Fy(Righ)-35 b(t-hand)425 b(side)g(sp)35
+b(eci\257cation)p Black Black eop
+%%Page: 71 79
+71 78 bop Black 4000 2701 a Fy(5.9)425 b(F)-35 b(CV)g(ODE,)425
+b(a)f Fv(F)-32 b(or)-74 b(tran)p Fy(-)p Fv(C)424 b Fy(in)-35
+b(terface)424 b(mo)35 b(dule)21731 b(71)p 4000 3144 48001
+45 v Black Black Black 8015 7743 a Fx(T)-92 b(able)370
+b(5.3:)494 b(Description)370 b(of)f(the)h Fv(f)-25 b(cv)g(ode)370
+b Fx(optional)i(input-output)f(arra)-31 b(ys)369 b Fu(IOPT)h
+Fx(and)f Fu(ROPT)p Black 20222 9663 a Fx(In)-31 b(teger)370
+b(input-output)h(arra)-31 b(y)369 b Fu(IOPT)p 6191 10105
+43619 45 v 6169 11434 45 1329 v 6855 11035 a Fy(Index)p
+10649 11434 V 1576 w(Optional)425 b(input)p 20695 11434
+V 1575 w(Optional)g(output)p 31024 11434 V 1330 w Fv(cv)-25
+b(ode)369 b Fy(function)p 49787 11434 V 6191 11478 43619
+45 v 6169 12806 45 1329 v 23383 12408 a Fv(cv)-25 b(ode)370
+b Fx(main)g(solv)-31 b(er)p 49787 12806 V 6191 12851
+43619 45 v 6169 14179 45 1329 v 9454 13780 a(1)p 10649
+14179 V 3944 w Fu(MAXORD)p 20695 14179 V 31024 14179
+V 14274 w(CVodeSetMaxOrd)p 49787 14179 V 6169 15507 V
+9454 15109 a Fx(2)p 10649 15507 V 3944 w Fu(MXSTEP)p
+20695 15507 V 31024 15507 V 14274 w(CVodeSetMaxNumSteps)p
+49787 15507 V 6169 16836 V 9454 16437 a Fx(3)p 10649
+16836 V 3944 w Fu(MXHNIL)p 20695 16836 V 31024 16836
+V 14274 w(CVodeSetMaxHnilWarns)p 49787 16836 V 6169 18164
+V 9454 17765 a Fx(4)p 10649 18164 V 20695 18164 V 15003
+w Fu(NST)p 31024 18164 V 4958 w(CVodeGetNumSteps)p 49787
+18164 V 6169 19492 V 9454 19094 a Fx(5)p 10649 19492
+V 20695 19492 V 15003 w Fu(NFE)p 31024 19492 V 4958 w
+(CVodeGetNumRhsEvals)p 49787 19492 V 6169 20821 V 9454
+20422 a Fx(6)p 10649 20821 V 20695 20821 V 13841 w Fu(NSETUPS)p
+31024 20821 V 3796 w(CVodeGetNumLinSolvSetups)p 49787
+20821 V 6169 22149 V 9454 21751 a Fx(7)p 10649 22149
+V 20695 22149 V 15003 w Fu(NNI)p 31024 22149 V 4958 w
+(CVodeGetNumNonlinSolvIters)p 49787 22149 V 6169 23477
+V 9454 23079 a Fx(8)p 10649 23477 V 20695 23477 V 14713
+w Fu(NCFN)p 31024 23477 V 4667 w(CVodeGetNumNonlinSolvConvFails)p
+49787 23477 V 6169 24806 V 9454 24407 a Fx(9)p 10649
+24806 V 20695 24806 V 14713 w Fu(NETF)p 31024 24806 V
+4667 w(CVodeGetNumErrTestFails)p 49787 24806 V 6169 26134
+V 8900 25736 a Fx(10)p 10649 26134 V 20695 26134 V 15295
+w Fu(QU)p 31024 26134 V 5248 w(CVodeGetLastOrder)p 49787
+26134 V 6169 27462 V 8900 27064 a Fx(11)p 10649 27462
+V 20695 27462 V 14714 w Fu(QCUR)p 31024 27462 V 4667
+w(CVodeGetCurrentOrder)p 49787 27462 V 6169 28791 V 7117
+28392 a Fx(12,)370 b(13)p 10649 28791 V 20695 28791 V
+12632 w Fu(LENRW)p Fx(,)g Fu(LENIW)p 31024 28791 V 2586
+w(CVodeGetWorkSpace)p 49787 28791 V 6169 30119 V 8900
+29721 a Fx(14)p 10649 30119 V 4236 w Fu(SLDET)p 20695
+30119 V 31024 30119 V 14564 w(CVodeSetStabLimDet)p 49787
+30119 V 6169 31448 V 8900 31049 a Fx(15)p 10649 31448
+V 20695 31448 V 15004 w Fu(NOR)p 31024 31448 V 4958 w
+(CVodeGetNumStabLimOrderReds)p 49787 31448 V 6169 32776
+V 8900 32377 a Fx(22)p 10649 32776 V 1330 w Fu(MAXERRTESTFAILS)p
+20695 32776 V 31024 32776 V 11660 w(CVodeSetMaxErrTestFails)p
+49787 32776 V 6169 34104 V 8900 33706 a Fx(23)p 10649
+34104 V 1620 w Fu(MAXNONLINITERS)p 20695 34104 V 31024
+34104 V 11951 w(CVodeSetMaxNonlinIters)p 49787 34104
+V 6169 35433 V 8900 35034 a Fx(24)p 10649 35433 V 2201
+w Fu(MAXCONVFAILS)p 20695 35433 V 31024 35433 V 12532
+w(CVodeSetMaxConvFails)p 49787 35433 V 6169 36761 V 8900
+36362 a Fx(25)p 10649 36761 V 20695 36761 V 15004 w Fu(NGE)p
+31024 36761 V 4958 w(CVodeGetNumGEvals)p 49787 36761
+V 6191 36805 43619 45 v 6169 38134 45 1329 v 22666 37735
+a Fv(cvdense)g Fx(linear)g(solv)-31 b(er)p 49787 38134
+V 6191 38178 43619 45 v 6169 39506 45 1329 v 7117 39108
+a(16,)370 b(17)p 10649 39506 V 20695 39506 V 13794 w
+Fu(LRW)p Fx(,)g Fu(LIW)p 31024 39506 V 3748 w(CVDenseGetWorkSpace)p
+49787 39506 V 6169 40835 V 8900 40436 a Fx(18)p 10649
+40835 V 20695 40835 V 15004 w Fu(NJE)p 31024 40835 V
+4958 w(CVDenseGetNumJacEvals)p 49787 40835 V 6169 42163
+V 8900 41764 a Fx(26)p 10649 42163 V 20695 42163 V 13923
+w Fu(LS)p 25161 41764 349 45 v 419 w(FLAG)p 31024 42163
+45 1329 v 3877 w(CVDenseGetLastFlag)p 49787 42163 V 6191
+42207 43619 45 v 6169 43536 45 1329 v 22876 43137 a Fv(cvband)f
+Fx(linear)h(solv)-31 b(er)p 49787 43536 V 6191 43580
+43619 45 v 6169 44908 45 1329 v 7117 44510 a(16,)370
+b(17)p 10649 44908 V 20695 44908 V 13794 w Fu(LRW)p Fx(,)g
+Fu(LIW)p 31024 44908 V 3748 w(CVBandGetWorkSpace)p 49787
+44908 V 6169 46236 V 8900 45838 a Fx(18)p 10649 46236
+V 20695 46236 V 15004 w Fu(NJE)p 31024 46236 V 4958 w
+(CVBandGetNumJacEvals)p 49787 46236 V 6169 47565 V 8900
+47166 a Fx(26)p 10649 47565 V 20695 47565 V 13923 w Fu(LS)p
+25161 47166 349 45 v 419 w(FLAG)p 31024 47565 45 1329
+v 3877 w(CVBandGetLastFlag)p 49787 47565 V 6191 47609
+43619 45 v 6169 48937 45 1329 v 23027 48539 a Fv(cvdia)-25
+b(g)369 b Fx(linear)h(solv)-31 b(er)p 49787 48937 V 6191
+48982 43619 45 v 6169 50310 45 1329 v 7117 49912 a(16,)370
+b(17)p 10649 50310 V 20695 50310 V 13794 w Fu(LRW)p Fx(,)g
+Fu(LIW)p 31024 50310 V 3748 w(CVDiagGetWorkSpace)p 49787
+50310 V 6169 51638 V 8900 51240 a Fx(26)p 10649 51638
+V 20695 51638 V 13923 w Fu(LS)p 25161 51240 349 45 v
+419 w(FLAG)p 31024 51638 45 1329 v 3877 w(CVDiagGetLastFlag)p
+49787 51638 V 6191 51683 43619 45 v 6169 53011 45 1329
+v 22558 52613 a Fv(cvspgmr)e Fx(linear)i(solv)-31 b(er)p
+49787 53011 V 6191 53055 43619 45 v 6169 54384 45 1329
+v 7117 53985 a(16,)370 b(17)p 10649 54384 V 20695 54384
+V 13794 w Fu(LRW)p Fx(,)g Fu(LIW)p 31024 54384 V 3748
+w(CVSpgmrGetWorkSpace)p 49787 54384 V 6169 55712 V 8900
+55314 a Fx(18)p 10649 55712 V 20695 55712 V 15004 w Fu(NPE)p
+31024 55712 V 4958 w(CVSpgmrGetNumPrecEvals)p 49787 55712
+V 6169 57040 V 8900 56642 a Fx(19)p 10649 57040 V 20695
+57040 V 15004 w Fu(NLI)p 31024 57040 V 4958 w(CVSpgmrGetNumLinIters)p
+49787 57040 V 6169 58369 V 8900 57970 a Fx(20)p 10649
+58369 V 20695 58369 V 15004 w Fu(NPS)p 31024 58369 V
+4958 w(CVSpgmrGetNumPrecSolves)p 49787 58369 V 6169 59697
+V 8900 59299 a Fx(21)p 10649 59697 V 20695 59697 V 14714
+w Fu(NCFL)p 31024 59697 V 4667 w(CVSpgmrGetNumConvFails)p
+49787 59697 V 6169 61025 V 8900 60627 a Fx(26)p 10649
+61025 V 20695 61025 V 13923 w Fu(LS)p 25161 60627 349
+45 v 419 w(FLAG)p 31024 61025 45 1329 v 3877 w(CVSpgmrGetLastFlag)p
+49787 61025 V 6191 61070 43619 45 v 20831 63328 a Fx(Real)g
+(input-output)h(arra)-31 b(y)370 b Fu(ROPT)p 6191 63771
+V 6169 65099 45 1329 v 6855 64701 a Fy(Index)p 10649
+65099 V 1576 w(Optional)425 b(input)p 20695 65099 V 1575
+w(Optional)g(output)p 31024 65099 V 1330 w Fv(cv)-25
+b(ode)369 b Fy(function)p 49787 65099 V 6191 65143 43619
+45 v 6169 66472 45 1329 v 9454 66073 a Fx(1)p 10649 66472
+V 5106 w Fu(H0)p 20695 66472 V 31024 66472 V 15436 w(CVodeSetInitStep)p
+49787 66472 V 6169 67800 V 9454 67402 a Fx(2)p 10649
+67800 V 4525 w Fu(HMAX)p 20695 67800 V 31024 67800 V
+14855 w(CVodeSetMaxStep)p 49787 67800 V 6169 69128 V
+9454 68730 a Fx(3)p 10649 69128 V 4525 w Fu(HMIN)p 20695
+69128 V 31024 69128 V 14855 w(CVodeSetMinStep)p 49787
+69128 V 6169 70457 V 9454 70058 a Fx(4)p 10649 70457
+V 20695 70457 V 15294 w Fu(HU)p 31024 70457 V 5248 w(CVodeGetLastStep)p
+49787 70457 V 6169 71785 V 9454 71387 a Fx(5)p 10649
+71785 V 20695 71785 V 14713 w Fu(HCUR)p 31024 71785 V
+4667 w(CVodeGetCurrentStep)p 49787 71785 V 6169 73113
+V 9454 72715 a Fx(6)p 10649 73113 V 20695 73113 V 14713
+w Fu(TCUR)p 31024 73113 V 4667 w(CVodeGetCurrentTime)p
+49787 73113 V 6169 74442 V 9454 74043 a Fx(7)p 10649
+74442 V 20695 74442 V 14422 w Fu(TOLSF)p 31024 74442
+V 4377 w(CVodeGetTolScaleFactor)p 49787 74442 V 6169
+75770 V 9454 75372 a Fx(8)p 10649 75770 V 4235 w Fu(TSTOP)p
+20695 75770 V 31024 75770 V 14564 w(CVodeSetStopTime)p
+49787 75770 V 6169 77099 V 9454 76700 a Fx(9)p 10649
+77099 V 1619 w Fu(NONLINCONVCOEF)p 20695 77099 V 31024
+77099 V 11951 w(CVodeSetNonlinConvCoef)p 49787 77099
+V 6169 78427 V 8900 78028 a Fx(10)p 10649 78427 V 20695
+78427 V 14132 w Fu(UROUND)p 31024 78427 V 4087 w Fx(unit)h(roundo\256)p
+49787 78427 V 6191 78471 43619 45 v Black Black Black
+eop
+%%Page: 72 80
+72 79 bop Black 0 2701 a Fy(72)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 1906 6974 a Fx(The)370
+b(user)e(m)-31 b(ust)370 b(in)f(all)i(cases)d(supply)i(the)f(follo)-31
+b(wing)373 b(F)-92 b(ortran)369 b(routine)p Black Black
+5393 9896 a Fu(SUBROUTINE)583 b(FCVFUN\(T,)f(Y,)g(YDOT\))5393
+11224 y(DIMENSION)h(Y\(*\),)f(YDOT\(*\))1906 14146 y
+Fx(It)327 b(m)-31 b(ust)327 b(set)g(the)f Fu(YDOT)h Fx(arra)-31
+b(y)327 b(to)h Fm(f)119 b Fx(\()p Fm(t;)184 b(y)40 b
+Fx(\),)336 b(the)327 b(righ)-31 b(t-hand)328 b(side)e(of)h(the)g(ODE)f
+(system,)336 b(as)327 b(function)h(of)f Fu(T)p Fx(=)307
+b Fm(t)1906 15475 y Fx(and)370 b(the)f(arra)-31 b(y)370
+b Fu(Y)p Fx(=)307 b Fm(y)40 b Fx(.)p Black 553 17954
+a(2.)p Black 493 w Fv(nvector)425 b Fy(mo)35 b(dule)425
+b(initialization)1906 19836 y Fx([)p Fy(S)p Fx(])371
+b(T)-92 b(o)369 b(initialize)k(the)c(serial)h Fv(nvector)f
+Fx(mo)31 b(dule,)370 b(the)g(user)e(m)-31 b(ust)370 b(mak)-31
+b(e)370 b(the)g(follo)-31 b(wing)372 b(call:)p Black
+Black 5393 22758 a Fu(CALL)582 b(FNVINITS\(NEQ,)h(IER\))1906
+25680 y Fx(where)369 b Fu(NEQ)f Fx(is)g(the)h(size)f(of)h(v)-31
+b(ectors)369 b(and)f Fu(IER)h Fx(is)f(a)h(return)e(completion)k(\260ag)
+e(whic)-31 b(h)369 b(is)g(set)f(to)h(0)g(on)f(success)1906
+27008 y(and)i Fp(\241)p Fx(1)f(if)h(a)f(failure)i(o)31
+b(ccurred.)1906 28890 y([)p Fy(P)p Fx(])371 b(T)-92 b(o)369
+b(initialize)k(the)c(parallel)i(v)-31 b(ector)370 b(mo)31
+b(dule,)371 b(the)e(user)f(m)-31 b(ust)370 b(mak)-31
+b(e)370 b(the)g(follo)-31 b(wing)373 b(call:)p Black
+Black 5393 31812 a Fu(CALL)582 b(FNVINITP\(NLOCAL,)i(NGLOBAL,)e(IER\))
+1906 34734 y Fx(in)477 b(whic)-31 b(h)477 b(the)g(argumen)-31
+b(ts)477 b(are:)707 b Fu(NLOCAL)477 b Fx(the)g(lo)31
+b(cal)478 b(size)e(of)h(v)-31 b(ectors)477 b(on)f(this)h(pro)31
+b(cessor,)502 b Fu(NGLOBAL)478 b Fx(the)1906 36062 y(system)310
+b(size)e(\(and)i(the)f(global)i(size)e(of)h(v)-31 b(ectors,)322
+b(that)310 b(is)f(the)g(sum)g(of)g(all)h(v)-61 b(alues)309
+b(of)h(NLOCAL\).)g(The)f(return)1906 37391 y(completion)405
+b(\260ag)e Fu(IER)f Fx(is)g(set)g(on)h(0)f(up)31 b(on)402
+b(successful)f(return)h(and)g(on)h Fp(\241)p Fx(1)f(otherwise.)592
+b(Note)403 b(that)h(if)e(MPI)1906 38719 y(w)-31 b(as)290
+b(initialized)h(b)-31 b(y)289 b(the)g(user,)304 b(the)289
+b(comm)-31 b(unicator)291 b(m)-31 b(ust)290 b(b)31 b(e)288
+b(set)g(to)h Fu(MPI)p 32644 38719 349 45 v 419 w(COMM)p
+35387 38719 V 419 w(WORLD)p Fx(.)h(If)e(not,)306 b(this)289
+b(routine)1906 40047 y(initializes)372 b(MPI)d(and)h(sets)e(the)i(comm)
+-31 b(unicator)372 b(equal)e(to)g Fu(MPI)p 28909 40047
+V 419 w(COMM)p 31652 40047 V 419 w(WORLD)p Fx(.)p Black
+553 42527 a(3.)p Black 493 w Fy(Problem)426 b(sp)35 b(eci\257cation)
+1906 44409 y Fx(T)-92 b(o)264 b(set)e(v)-61 b(arious)263
+b(problem)g(and)g(solution)h(parameters)f(and)g(allo)31
+b(cate)265 b(in)-31 b(ternal)264 b(memory)-92 b(,)286
+b(mak)-31 b(e)263 b(the)g(follo)-31 b(wing)1906 45737
+y(call:)p 1906 48492 5984 45 v 1906 49833 45 1341 v 2283
+49501 a Fu(FCVMALLOC)p 7845 49833 V 1906 49877 5984 45
+v Black 1906 51782 a Fx(Call)p Black 5430 w Fu(CALL)581
+b(FCVMALLOC\()r(T0,)g(Y0,)h(METH,)g(ITMETH,)g(IATOL,)g(RTOL,)g(ATOL,)g
+(INOPT,)8720 53111 y(&)8718 b(IOPT,)582 b(ROPT,)g(IER\))p
+Black 1906 54687 a Fx(Description)p Black 1286 w(This)389
+b(function)g(pro)-31 b(vides)388 b(required)g(problem)g(and)h(solution)
+g(sp)31 b(eci\257cations,)394 b(sp)31 b(eci\257es)388
+b(op-)8720 56016 y(tional)372 b(inputs,)e(allo)31 b(cates)371
+b(in)-31 b(ternal)371 b(memory)-92 b(,)370 b(and)g(initializes)i
+Fv(cv)-25 b(ode)p Fx(.)p Black 1906 57643 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(T0)p Black 2879 w Fx(is)369
+b(the)g(initial)j(v)-61 b(alue)370 b(of)g Fm(t)p Fx(.)p
+Black 8720 58971 a Fu(Y0)p Black 2879 w Fx(is)f(an)g(arra)-31
+b(y)370 b(of)g(initial)h(conditions.)p Black 8720 60300
+a Fu(METH)p Black 1717 w Fx(sp)31 b(eci\257es)478 b(the)h(basic)g(in)
+-31 b(tegration)482 b(metho)31 b(d:)713 b(1)480 b(for)f(Adams)g
+(\(nonsti\256)86 b(\))481 b(or)e(2)g(for)12761 61628
+y(BDF)368 b(\(sti\256)86 b(\).)p Black 8720 62956 a Fu(ITMETH)p
+Black 555 w Fx(sp)31 b(eci\257es)461 b(the)h(nonlinear)h(iteration)h
+(metho)31 b(d:)679 b(1)462 b(for)g(functional)i(iteration)g(or)e(2)
+12761 64285 y(for)369 b(Newton)i(iteration.)p Black 8720
+65613 a Fu(IATOL)p Black 1136 w Fx(sp)31 b(eci\257es)389
+b(the)h(t)-31 b(yp)31 b(e)391 b(for)f(absolute)h(tolerance)h
+Fu(ATOL)p Fx(:)f(1)f(for)g(scalar)h(or)f(2)g(for)g(arra)-31
+b(y)-92 b(.)12761 66941 y(If)445 b Fu(IATOL)p Fx(=)434
+b(3,)465 b(the)445 b(argumen)-31 b(ts)447 b Fu(RTOL)e
+Fx(and)g Fu(ATOL)h Fx(are)e(ignored)i(and)g(the)f(user)f(is)12761
+68270 y(exp)31 b(ected)253 b(to)h(subsequen)-31 b(tly)254
+b(call)g Fu(FCVEWTSET)g Fx(and)g(pro)-31 b(vide)254 b(the)f(function)i
+Fu(FCVEWT)p Fx(.)p Black 8720 69598 a Fu(RTOL)p Black
+1717 w Fx(is)369 b(the)g(relativ)-31 b(e)371 b(tolerance)g(\(scalar\).)
+p Black 8720 70926 a Fu(ATOL)p Black 1717 w Fx(is)e(the)g(absolute)i
+(tolerance)f(\(scalar)g(or)f(arra)-31 b(y\).)p Black
+8720 72255 a Fu(INOPT)p Black 1136 w Fx(is)369 b(the)g(optional)j
+(input)e(\260ag:)493 b(0)370 b(if)g(none)f(or)g(1)h(if)f(optional)j
+(inputs)e(are)f(used.)p Black 8720 73583 a Fu(IOPT)p
+Black 1717 w Fx(is)g(an)g(arra)-31 b(y)370 b(of)g(length)g(40)g(for)f
+(in)-31 b(teger)370 b(optional)i(inputs)e(and)f(outputs.)p
+Black 8720 74911 a Fu(ROPT)p Black 1717 w Fx(is)g(an)g(arra)-31
+b(y)370 b(of)g(length)g(40)g(for)f(real)h(optional)i(inputs)d(and)h
+(outputs.)p Black 1906 76539 a(Return)f(v)-61 b(alue)p
+Black 554 w Fu(IER)247 b Fx(is)g(a)f(return)g(completion)k(\260ag.)452
+b(V)-92 b(alues)247 b(are)f(0)h(for)g(successful)f(return)g(and)h
+Fp(\241)p Fx(1)f(otherwise.)8720 77867 y(See)369 b(prin)-31
+b(ted)370 b(message)g(for)f(details)h(in)g(case)f(of)h(failure.)p
+Black Black eop
+%%Page: 73 81
+73 80 bop Black 4000 2701 a Fy(5.9)425 b(F)-35 b(CV)g(ODE,)425
+b(a)f Fv(F)-32 b(or)-74 b(tran)p Fy(-)p Fv(C)424 b Fy(in)-35
+b(terface)424 b(mo)35 b(dule)21731 b(73)p 4000 3144 48001
+45 v Black Black 5906 6974 a Fx(Notes)p Black 4072 w(The)399
+b(optional)h(inputs)f(and)f(outputs)h(asso)31 b(ciated)399
+b(with)h(the)e(main)h Fv(cv)-25 b(ode)399 b Fx(in)-31
+b(tegrator)400 b(are)12720 8302 y(listed)381 b(in)e(T)-92
+b(able)381 b(5.3.)524 b(If)379 b(an)-31 b(y)380 b(of)g(the)g(optional)i
+(inputs)d(are)g(used,)j(the)e(others)f(m)-31 b(ust)380
+b(b)31 b(e)379 b(set)12720 9631 y(to)370 b(zero)f(to)h(indicate)h
+(default)g(v)-61 b(alues.)5906 11912 y(As)275 b(an)f(alternativ)-31
+b(e)278 b(to)d(pro)-31 b(viding)276 b(tolerances)f(in)g(the)g(call)h
+(to)f Fu(FCVMALLOC)p Fx(,)h(the)f(user)e(ma)-31 b(y)276
+b(pro)-31 b(vide)275 b(a)g(routine)5906 13241 y(to)435
+b(compute)g(the)e(error)g(w)-31 b(eigh)g(ts)435 b(used)e(in)h(the)g
+(WRMS)f(norm)g(ev)-61 b(aluations.)688 b(If)434 b(supplied,)450
+b(it)435 b(m)-31 b(ust)434 b(ha)-31 b(v)g(e)5906 14569
+y(the)370 b(follo)-31 b(wing)373 b(form:)p Black Black
+9393 17227 a Fu(SUBROUTINE)583 b(FCVEWT)f(\(Y,)g(EWT,)f(IER\))9393
+18555 y(DIMENSION)i(Y\(*\),)f(EWT\(*\))5906 21212 y Fx(It)464
+b(m)-31 b(ust)464 b(set)f(the)h(p)31 b(ositiv)-31 b(e)465
+b(comp)31 b(onen)-31 b(ts)465 b(of)f(the)f(error)g(w)-31
+b(eigh)g(t)465 b(v)-31 b(ector)464 b Fu(EWT)g Fx(for)f(the)h
+(calculation)j(of)d(the)5906 22541 y(WRMS)369 b(norm)g(of)h
+Fu(Y)p Fx(.)f(On)g(return,)g(set)h Fu(IER=0)f Fx(if)h
+Fu(FCVEWT)g Fx(w)-31 b(as)370 b(successful,)f(and)g(nonzero)h
+(otherwise.)5906 24422 y(If)363 b(the)f Fu(FCVEWT)h Fx(routine)g(is)g
+(pro)-31 b(vided,)365 b(then,)f(follo)-31 b(wing)366
+b(the)d(call)g(to)g Fu(FCVMALOC)p Fx(,)h(the)f(user)e(m)-31
+b(ust)363 b(mak)-31 b(e)364 b(the)5906 25751 y(call:)p
+Black Black 9393 28408 a Fu(CALL)582 b(FCVEWTSET)h(\(FLAG,)f(IER\))5906
+31066 y Fx(with)363 b Fu(FLAG)f Fp(6)p Fx(=)307 b(0)362
+b(to)g(sp)31 b(ecify)362 b(use)f(of)h(the)f(user-supplied)g(error)f(w)
+-31 b(eigh)g(t)364 b(routine.)491 b(The)362 b(argumen)-31
+b(t)363 b Fu(IER)e Fx(is)h(an)5906 32394 y(error)369
+b(return)f(\260ag)i(whic)-31 b(h)370 b(can)g(b)31 b(e)368
+b(0)i(for)f(success)f(or)h(non-zero)g(if)h(an)f(error)g(o)31
+b(ccurred.)p Black 4553 34691 a(4.)p Black 493 w Fy(Linear)425
+b(solv)-35 b(er)425 b(sp)35 b(eci\257cation)5906 36573
+y Fx(In)472 b(the)h(case)f(of)g(a)h(sti\256)f(system,)499
+b(the)472 b(implicit)j Fu(BDF)d Fx(metho)31 b(d)474 b(in)-31
+b(v)g(olv)g(es)474 b(the)e(solution)i(of)f(linear)g(systems)5906
+37901 y(related)392 b(to)g(the)g(Jacobian)h Fm(J)450
+b Fx(=)344 b Fm(@)61 b(f)119 b(=@)61 b(y)432 b Fx(of)391
+b(the)h(ODE)f(system.)559 b Fv(cv)-25 b(ode)392 b Fx(presen)-31
+b(tly)391 b(includes)h(four)f(c)-31 b(hoices)5906 39230
+y(for)398 b(the)f(treatmen)-31 b(t)400 b(of)d(these)g(systems,)405
+b(and)398 b(the)f(user)f(of)i Fv(f)-25 b(cv)g(ode)398
+b Fx(m)-31 b(ust)398 b(call)h(a)e(routine)h(with)h(a)e(sp)31
+b(eci\257c)5906 40558 y(name)370 b(to)g(mak)-31 b(e)371
+b(the)e(desired)g(c)-31 b(hoice.)5906 42440 y([)p Fy(S)p
+Fx(])371 b Fy(Diagonal)424 b(appro)-35 b(ximate)425 b(Jacobian)5906
+44322 y Fx(This)409 b(c)-31 b(hoice)409 b(is)f(appropriate)h(when)g
+(the)f(Jacobian)i(can)e(b)31 b(e)408 b(w)-31 b(ell)409
+b(appro)-31 b(ximated)411 b(b)-31 b(y)409 b(a)f(diagonal)j(matrix.)5906
+45650 y(The)370 b(user)e(m)-31 b(ust)370 b(mak)-31 b(e)370
+b(the)g(call:)p Black Black 9393 48307 a Fu(CALL)582
+b(FCVDIAG\(IER\))5906 50965 y(IER)389 b Fx(is)g(an)g(error)f(return)g
+(\260ag)i(set)e(on)h(0)g(on)h(success)d(or)i Fp(\241)p
+Fx(1)g(if)g(a)g(memory)h(failure)g(o)31 b(ccurred.)550
+b(There)389 b(is)g(no)5906 52293 y(additional)373 b(user-supplied)368
+b(routine.)493 b(Optional)371 b(outputs)f(sp)31 b(eci\257c)369
+b(to)g(the)h Fv(dia)-25 b(g)368 b Fx(case)h(listed)h(in)f(T)-92
+b(able)370 b(5.3.)5906 54175 y([)p Fy(S)p Fx(])h Fy(Dense)425
+b(treatmen)-35 b(t)426 b(of)e(the)i(linear)e(system)5906
+56057 y Fx(The)370 b(user)e(m)-31 b(ust)370 b(mak)-31
+b(e)370 b(the)g(call:)p Black Black 9393 58714 a Fu(CALL)582
+b(FCVDENSE\(NEQ,)h(IER\))5906 61372 y Fx(The)340 b(argumen)-31
+b(t)341 b Fu(IER)e Fx(is)h(an)f(error)f(return)h(\260ag)h(whic)-31
+b(h)340 b(can)g(b)31 b(e)339 b(0)g(for)h(success)e(,)345
+b Fp(\241)p Fx(1)340 b(if)g(a)f(memory)h(allo)31 b(cation)5906
+62700 y(failure)514 b(o)31 b(ccurred,)548 b(or)513 b
+Fp(\241)p Fx(2)g(for)g(illegal)i(input.)924 b(As)513
+b(an)g(option)h(when)f(using)g(the)g Fv(dense)g Fx(linear)h(solv)-31
+b(er,)5906 64028 y(the)471 b(user)e(ma)-31 b(y)472 b(supply)e(a)h
+(routine)g(that)g(computes)g(a)g(dense)f(appro)-31 b(ximation)473
+b(of)e(the)g(system)f(Jacobian)5906 65357 y Fm(J)414
+b Fx(=)308 b Fm(@)61 b(f)119 b(=@)61 b(y)40 b Fx(.)493
+b(If)368 b(supplied,)i(it)g(m)-31 b(ust)370 b(ha)-31
+b(v)g(e)370 b(the)g(follo)-31 b(wing)373 b(form:)p Black
+Black 9393 68014 a Fu(SUBROUTINE)583 b(FCVDJAC)f(\(NEQ,)g(T,)f(Y,)h
+(FY,)g(DJAC,)f(EWT,)h(H,)g(WK1,)f(WK2,)h(WK3\))9393 69343
+y(DIMENSION)h(Y\(*\),)f(FY\(*\),)g(EWT\(*\),)g(DJAC\(NEQ,*\),)h
+(WK1\(*\),)f(WK2\(*\),)g(WK3\(*\))5906 72000 y Fx(T)-31
+b(ypically)328 b(this)d(routine)h(will)g(use)e(only)i
+Fu(NEQ)p Fx(,)g Fu(T)p Fx(,)f Fu(Y)p Fx(,)g(and)g Fu(DJAC)p
+Fx(.)h(It)e(m)-31 b(ust)326 b(compute)g(the)f(Jacobian)h(and)f(store)
+5906 73328 y(it)466 b(column)-31 b(wise)467 b(in)e Fu(DJAC)p
+Fx(.)h Fu(FY)f Fx(con)-31 b(tains)466 b Fm(f)119 b Fx(\()p
+Fm(t;)184 b(y)40 b Fx(\).)781 b(The)466 b(v)-31 b(ectors)465
+b Fu(WK1)p Fx(,)489 b Fu(WK2)p Fx(,)h(and)465 b Fu(WK3)g
+Fx(of)h(length)g Fu(NEQ)f Fx(are)5906 74657 y(pro)-31
+b(vided)370 b(as)f(w)-31 b(ork)370 b(space)f(for)h(use)e(in)i
+Fu(FCVDJAC)p Fx(.)5906 76539 y(If)278 b(the)g(user's)e
+Fu(FCVDJAC)j Fx(uses)d(di\256erence)i(quotien)-31 b(t)279
+b(appro)-31 b(ximations,)300 b(it)278 b(ma)-31 b(y)279
+b(need)f(to)g(use)f(the)h(error)f(w)-31 b(eigh)g(t)5906
+77867 y(arra)g(y)366 b Fu(EWT)f Fx(and)g(curren)-31 b(t)365
+b(stepsize)g Fu(H)g Fx(in)g(the)h(calculation)i(of)d(suitable)i
+(incremen)-31 b(ts.)492 b(It)365 b(ma)-31 b(y)366 b(also)g(need)f(the)p
+Black Black eop
+%%Page: 74 82
+74 81 bop Black 0 2701 a Fy(74)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 1906 6974 a Fx(unit)377
+b(roundo\256,)g(whic)-31 b(h)377 b(can)f(b)31 b(e)375
+b(obtained)i(as)f(the)g(optional)i(output)f Fu(ROPT\(10\))p
+Fx(,)h(passed)e(from)g(the)g(calling)1906 8302 y(program)370
+b(to)g(this)g(routine)g(using)f Fu(COMMON)p Fx(.)1906
+10184 y(If)325 b(the)h Fu(FCVDJAC)g Fx(routine)f(is)g(pro)-31
+b(vided,)336 b(then,)e(follo)-31 b(wing)329 b(the)c(call)i(to)f
+Fu(FCVDENSE)p Fx(,)g(the)f(user)g(m)-31 b(ust)325 b(mak)-31
+b(e)327 b(the)1906 11512 y(call:)p Black Black 5393 14063
+a Fu(CALL)582 b(FCVDENSESETJAC)h(\(FLAG,)f(IER\))1906
+16614 y Fx(with)404 b Fu(FLAG)f Fp(6)p Fx(=)364 b(0)402
+b(to)i(sp)31 b(ecify)403 b(use)f(of)h(the)g(user-supplied)f(Jacobian)i
+(appro)-31 b(ximation.)597 b(The)402 b(argumen)-31 b(t)405
+b Fu(IER)1906 17942 y Fx(is)370 b(an)f(error)f(return)h(\260ag)h(whic)
+-31 b(h)370 b(can)f(b)31 b(e)369 b(0)g(for)h(success)d(or)i(non-zero)h
+(if)g(an)f(error)f(o)31 b(ccurred.)1906 19824 y(Optional)372
+b(outputs)e(sp)31 b(eci\257c)369 b(to)h(the)f Fv(dense)h
+Fx(case)f(are)g(listed)h(in)f(T)-92 b(able)370 b(5.3.)1906
+21706 y([)p Fy(S)p Fx(])h Fy(Band)424 b(treatmen)-35
+b(t)425 b(of)g(the)g(linear)f(system)1906 23588 y Fx(The)370
+b(user)e(m)-31 b(ust)370 b(mak)-31 b(e)370 b(the)g(call:)p
+Black Black 5393 26139 a Fu(CALL)582 b(FCVBAND)g(\(NEQ,)g(MU,)g(ML,)f
+(IER\))1906 28689 y Fx(The)444 b(argumen)-31 b(ts)444
+b(are:)641 b Fu(MU)p Fx(,)444 b(the)f(upp)31 b(er)443
+b(half-bandwidth;)483 b Fu(ML)p Fx(,)444 b(the)f(lo)-31
+b(w)g(er)445 b(half-bandwidth;)484 b(and)443 b Fu(IER)h
+Fx(an)1906 30018 y(error)371 b(return)g(\260ag)h(whic)-31
+b(h)372 b(can)g(b)31 b(e)371 b(0)g(for)h(success)e(,)i
+Fp(\241)p Fx(1)g(if)g(a)f(memory)i(allo)31 b(cation)374
+b(failure)f(o)31 b(ccurred,)371 b(or)h Fp(\241)p Fx(2)1906
+31346 y(in)e(case)f(an)g(input)h(has)f(an)h(illegal)i(v)-61
+b(alue.)1906 33228 y(As)333 b(an)f(option)i(when)f(using)g(the)f
+Fv(band)h Fx(linear)g(solv)-31 b(er,)341 b(the)332 b(user)g(ma)-31
+b(y)333 b(supply)g(a)f(routine)i(that)f(computes)h(a)1906
+34556 y(band)369 b(appro)-31 b(ximation)371 b(of)e(the)f(system)g
+(Jacobian)i Fm(J)414 b Fx(=)307 b Fm(@)61 b(f)119 b(=@)61
+b(y)40 b Fx(.)493 b(If)367 b(supplied,)i(it)g(m)-31 b(ust)369
+b(ha)-31 b(v)g(e)369 b(the)f(follo)-31 b(wing)1906 35885
+y(form:)p Black Black 5393 38435 a Fu(SUBROUTINE)583
+b(FCVBJAC\(NEQ,)g(MU,)e(ML,)h(MDIM,)g(T,)f(Y,)h(FY,)f(BJAC,)4812
+39764 y(&)11042 b(EWT,)582 b(H,)f(WK1,)h(WK2,)g(WK3\))5393
+41092 y(DIMENSION)h(Y\(*\),)f(FY\(*\),)g(EWT\(*\),)g(BJAC\(MDIM,*\),)h
+(WK1\(*\),)f(WK2\(*\),)g(WK3\(*\))1906 43643 y Fx(T)-31
+b(ypically)476 b(this)e(routine)f(will)i(use)e(only)g
+Fu(NEQ)p Fx(,)h Fu(MU)p Fx(,)g Fu(ML)p Fx(,)f Fu(T)p
+Fx(,)h Fu(Y)p Fx(,)f(and)g Fu(BJAC)p Fx(.)h(It)f(m)-31
+b(ust)474 b(load)g(the)f Fu(MDIM)h Fx(b)-31 b(y)473 b
+Fu(N)1906 44971 y Fx(arra)-31 b(y)404 b Fu(BJAC)f Fx(with)h(the)f
+(Jacobian)h(matrix)h(at)e(the)g(curren)-31 b(t)403 b(\()p
+Fm(t)p Fx(,)p Fm(y)40 b Fx(\))403 b(in)g(band)g(form.)594
+b(Store)403 b(in)g Fu(BJAC)p Fx(\(k,j\))j(the)1906 46299
+y(Jacobian)416 b(elemen)-31 b(t)415 b Fm(J)11327 46465
+y Fk(i;j)12783 46299 y Fx(with)g Fm(k)i Fx(=)382 b Fm(i)276
+b Fp(\241)f Fm(j)339 b Fx(+)276 b Fm(M)121 b(U)396 b
+Fx(+)275 b(1,)426 b Fm(k)417 b Fx(=)382 b(1)184 b Fp(\242)g(\242)g
+(\242)k Fm(M)121 b(L)275 b Fx(+)h Fm(M)121 b(U)396 b
+Fx(+)276 b(1)414 b(and)g Fm(j)445 b Fx(=)381 b(1)184
+b Fp(\242)g(\242)g(\242)k Fm(N)121 b Fx(.)627 b Fu(FY)1906
+47628 y Fx(con)-31 b(tains)333 b Fm(f)119 b Fx(\()p Fm(t;)184
+b(y)40 b Fx(\).)481 b(The)332 b(v)-31 b(ectors)331 b
+Fu(WK1)p Fx(,)340 b Fu(WK2)p Fx(,)f(and)332 b Fu(WK3)f
+Fx(of)h(length)g Fu(NEQ)f Fx(are)g(pro)-31 b(vided)332
+b(as)f(w)-31 b(ork)332 b(space)f(for)g(use)1906 48956
+y(in)370 b Fu(FCVBJAC)p Fx(.)1906 50838 y(If)278 b(the)g(user's)e
+Fu(FCVBJAC)j Fx(uses)d(di\256erence)i(quotien)-31 b(t)279
+b(appro)-31 b(ximations,)300 b(it)278 b(ma)-31 b(y)279
+b(need)f(to)g(use)f(the)h(error)f(w)-31 b(eigh)g(t)1906
+52166 y(arra)g(y)366 b Fu(EWT)f Fx(and)g(curren)-31 b(t)365
+b(stepsize)g Fu(H)g Fx(in)g(the)h(calculation)i(of)d(suitable)i
+(incremen)-31 b(ts.)492 b(It)365 b(ma)-31 b(y)366 b(also)g(need)f(the)
+1906 53495 y(unit)377 b(roundo\256,)g(whic)-31 b(h)377
+b(can)f(b)31 b(e)375 b(obtained)i(as)f(the)g(optional)i(output)f
+Fu(ROPT\(10\))p Fx(,)h(passed)e(from)g(the)g(calling)1906
+54823 y(program)370 b(to)g(this)g(routine)g(using)f Fu(COMMON)p
+Fx(.)1906 56705 y(If)363 b(the)f Fu(FCVBJAC)h Fx(routine)g(is)g(pro)-31
+b(vided,)365 b(then,)f(follo)-31 b(wing)366 b(the)d(call)g(to)g
+Fu(FCVBAND)p Fx(,)h(the)f(user)e(m)-31 b(ust)363 b(mak)-31
+b(e)364 b(the)1906 58033 y(call:)p Black Black 5393 60584
+a Fu(CALL)582 b(FCVBANDSETJAC\(FLAG,)i(IER\))1906 63135
+y Fx(with)404 b Fu(FLAG)f Fp(6)p Fx(=)364 b(0)402 b(to)i(sp)31
+b(ecify)403 b(use)f(of)h(the)g(user-supplied)f(Jacobian)i(appro)-31
+b(ximation.)597 b(The)402 b(argumen)-31 b(t)405 b Fu(IER)1906
+64463 y Fx(is)370 b(an)f(error)f(return)h(\260ag)h(whic)-31
+b(h)370 b(can)f(b)31 b(e)369 b(0)g(for)h(success)d(or)i(non-zero)h(if)g
+(an)f(error)f(o)31 b(ccurred.)1906 66345 y(Optional)372
+b(outputs)e(sp)31 b(eci\257c)369 b(to)h(the)f Fv(band)g
+Fx(case)g(are)g(listed)h(in)g(T)-92 b(able)370 b(5.3.)1906
+68227 y([)p Fy(S)p Fx(][)p Fy(P)p Fx(])i Fy(SPGMR)425
+b(treatmen)-35 b(t)425 b(of)g(the)g(linear)f(systems)1906
+70109 y Fx(F)-92 b(or)397 b(the)h(Scaled)g(Preconditioned)i(GMRES)d
+(solution)i(of)g(the)f(linear)g(systems,)405 b(the)398
+b(user)e(m)-31 b(ust)399 b(mak)-31 b(e)399 b(the)1906
+71437 y(call)p Black Black 5393 73988 a Fu(CALL)582 b
+(FCVSPGMR\(IPRETYPE,)i(IGSTYPE,)e(MAXL,)g(DELT,)g(IER\))1906
+76539 y Fx(The)436 b(argumen)-31 b(ts)436 b(are)f(as)f(follo)-31
+b(ws.)693 b Fu(IPRETYPE)436 b Fx(sp)31 b(eci\257es)434
+b(the)h(preconditioner)h(t)-31 b(yp)31 b(e:)625 b(0)435
+b(for)g(no)h(precondi-)1906 77867 y(tioning,)329 b(1)315
+b(for)g(left)h(only)-92 b(,)327 b(2)316 b(for)f(righ)-31
+b(t)316 b(only)-92 b(,)327 b(or)315 b(3)g(for)g(b)31
+b(oth)316 b(sides.)474 b Fu(IGSTYPE)316 b Fx(indicates)g(the)f(Gram-Sc)
+-31 b(hmidt)p Black Black eop
+%%Page: 75 83
+75 82 bop Black 4000 2701 a Fy(5.9)425 b(F)-35 b(CV)g(ODE,)425
+b(a)f Fv(F)-32 b(or)-74 b(tran)p Fy(-)p Fv(C)424 b Fy(in)-35
+b(terface)424 b(mo)35 b(dule)21731 b(75)p 4000 3144 48001
+45 v Black 5906 6974 a Fx(pro)31 b(cess)392 b(t)-31 b(yp)31
+b(e:)540 b(1)393 b(for)g(mo)31 b(di\257ed)394 b(G-S)e(or)h(2)g(for)f
+(classical)j(G-S.)d Fu(MAXL)h Fx(is)g(the)g(maxim)-31
+b(um)396 b(Krylo)-31 b(v)393 b(subspace)5906 8302 y(dimension)444
+b(\(0)f(indicates)g(default\).)714 b Fu(DELT)442 b Fx(is)g(the)h
+(linear)g(con)-31 b(v)g(ergence)443 b(tolerance)g(factor)h(\(0)p
+Fm(:)p Fx(0)f(indicates)5906 9631 y(default\).)468 b
+Fu(IER)289 b Fx(is)f(an)g(error)g(return)f(\260ag)i(whic)-31
+b(h)290 b(can)e(b)31 b(e)288 b(0)g(to)i(indicate)g(success,)303
+b Fp(\241)p Fx(1)289 b(if)g(a)f(memory)h(allo)31 b(cation)5906
+10959 y(failure)371 b(o)31 b(ccurred,)368 b(or)h Fp(\241)p
+Fx(2)h(to)g(indicate)h(an)e(illegal)j(input.)5906 12841
+y(As)348 b(an)h(option)h(when)e(using)h(the)f Fv(spgmr)f
+Fx(linear)i(solv)-31 b(er,)354 b(the)348 b(user)f(ma)-31
+b(y)350 b(supply)e(a)h(routine)g(that)g(computes)5906
+14169 y(the)389 b(pro)31 b(duct)389 b(of)g(the)g(system)g(Jacobian)h
+Fm(J)447 b Fx(=)340 b Fm(@)61 b(f)119 b(=@)61 b(y)429
+b Fx(and)389 b(a)f(giv)-31 b(en)390 b(v)-31 b(ector)390
+b Fm(v)40 b Fx(.)550 b(If)389 b(supplied,)394 b(it)c(m)-31
+b(ust)389 b(ha)-31 b(v)g(e)5906 15497 y(the)370 b(follo)-31
+b(wing)373 b(form:)p Black Black 9393 17987 a Fu(SUBROUTINE)583
+b(FCVJTIMES)f(\(V,)g(FJV,)g(T,)f(Y,)h(FY,)f(EWT,)h(H,)f(WORK,)h(IER\))
+9393 19316 y(DIMENSION)h(V\(*\),)f(FJV\(*\),)g(Y\(*\),)g(FY\(*\),)g
+(EWT\(*\),)g(WORK\(*\))5906 21805 y Fx(T)-31 b(ypically)407
+b(this)d(routine)g(will)i(use)d(only)h Fu(NEQ)p Fx(,)h
+Fu(T)p Fx(,)f Fu(Y)p Fx(,)g Fu(V)p Fx(,)g(and)g Fu(FJV)p
+Fx(.)g(It)g(m)-31 b(ust)404 b(compute)h(the)e(pro)31
+b(duct)404 b(v)-31 b(ector)5906 23134 y Fm(J)106 b(v)40
+b Fx(,)493 b(where)467 b(the)h(v)-31 b(ector)469 b Fm(v)507
+b Fx(is)467 b(stored)h(in)g Fu(V)p Fx(,)g(and)g(store)g(the)g(pro)31
+b(duct)468 b(in)g Fu(FJV)p Fx(.)g(On)g(return,)492 b(set)468
+b Fu(IER=0)g Fx(if)5906 24462 y Fu(FCVJTIMES)508 b Fx(w)-31
+b(as)507 b(successful,)541 b(and)507 b(nonzero)g(otherwise.)905
+b Fu(FY)507 b Fx(con)-31 b(tains)508 b Fm(f)119 b Fx(\()p
+Fm(t;)184 b(y)40 b Fx(\).)906 b(The)506 b(v)-31 b(ector)508
+b Fu(WORK)p Fx(,)f(of)5906 25790 y(length)371 b Fu(NEQ)p
+Fx(,)f(is)f(pro)-31 b(vided)370 b(as)f(w)-31 b(ork)370
+b(space)f(for)g(use)g(in)g Fu(FCVJTIMES)p Fx(.)5906 27672
+y(If)439 b(the)g(user's)e Fu(FCVJTIMES)j Fx(uses)d(di\256erence)h
+(quotien)-31 b(t)441 b(appro)-31 b(ximations,)460 b(it)439
+b(ma)-31 b(y)440 b(need)e(to)h(use)f(the)h(error)5906
+29001 y(w)-31 b(eigh)g(t)426 b(arra)-31 b(y)424 b Fu(EWT)f
+Fx(and)h(curren)-31 b(t)423 b(stepsize)g Fu(H)g Fx(in)h(the)f
+(calculation)k(of)d(suitable)g(incremen)-31 b(ts.)656
+b(It)423 b(ma)-31 b(y)425 b(also)5906 30329 y(need)439
+b(the)h(unit)g(roundo\256,)457 b(whic)-31 b(h)440 b(can)g(b)31
+b(e)438 b(obtained)j(as)e(the)h(optional)i(output)e Fu(ROPT\(10\))p
+Fx(,)459 b(passed)438 b(from)5906 31657 y(the)370 b(calling)h(program)f
+(to)g(this)g(routine)g(using)f Fu(COMMON)p Fx(.)5906
+33539 y(If)k(the)g Fu(FCVJTIMES)h Fx(routine)g(is)e(pro)-31
+b(vided,)375 b(then,)g(follo)-31 b(wing)376 b(the)d(call)h(to)g
+Fu(FCVSPGMR)p Fx(,)g(the)f(user)f(m)-31 b(ust)374 b(mak)-31
+b(e)5906 34868 y(the)370 b(call:)p Black Black 9393 37357
+a Fu(CALL)582 b(FCVSPGMRSETJAC\(FLAG,)i(IER\))5906 39847
+y Fx(with)451 b Fu(FLAG)f Fp(6)p Fx(=)442 b(0)450 b(to)g(sp)31
+b(ecify)450 b(use)f(of)h(the)g(user-supplied)g(Jacobian)h(times)f(v)-31
+b(ector)451 b(appro)-31 b(ximation.)738 b(The)5906 41175
+y(argumen)-31 b(t)344 b Fu(IER)e Fx(is)g(an)h(error)e(return)g(\260ag)i
+(whic)-31 b(h)343 b(can)f(b)31 b(e)342 b(0)g(for)g(success)f(or)h
+(non-zero)g(if)h(an)f(error)f(o)31 b(ccurred.)5906 43057
+y(If)382 b(preconditioning)i(is)e(to)h(b)31 b(e)381 b(done)h(\()p
+Fu(IPRETYPE)h Fp(6)p Fx(=)329 b(0\),)386 b(then,)f(follo)-31
+b(wing)386 b(the)c(call)h(to)g Fu(FCVSPGMR)p Fx(,)g(the)f(user)5906
+44386 y(m)-31 b(ust)370 b(call)p Black Black 9393 46875
+a Fu(CALL)582 b(FCVSPGMRSETPREC\(FLAG,)i(IER\))5906 49365
+y Fx(with)490 b Fu(FLAG)e Fp(6)p Fx(=)505 b(0,)519 b(and)488
+b(the)g(user)f(program)i(m)-31 b(ust)488 b(include)h(the)f(follo)-31
+b(wing)492 b(routine)c(for)g(solution)i(of)f(the)5906
+50694 y(preconditioner)371 b(linear)f(system:)p Black
+Black 9393 53183 a Fu(SUBROUTINE)583 b(FCVPSOL\(T,)g(Y,)e(FY,)h(VT,)f
+(GAMMA,)h(EWT,)g(DELTA,)g(R,)g(LR,)f(Z,)h(IER\))9393
+54512 y(DIMENSION)h(Y\(*\),)f(FY\(*\),)g(VT\(*\),)g(EWT\(*\),)g
+(R\(*\),)g(Z\(*\))5906 57002 y Fx(It)484 b(m)-31 b(ust)485
+b(solv)-31 b(e)485 b(the)f(preconditioner)h(linear)g(system)f
+Fm(P)154 b(z)547 b Fx(=)498 b Fm(r)31 b Fx(,)514 b(where)483
+b Fm(r)530 b Fx(=)484 b Fu(R)g Fx(is)g(input,)513 b(and)485
+b(store)f(the)5906 58330 y(solution)423 b Fm(z)469 b
+Fx(in)421 b Fu(Z)p Fx(.)g(Here)f Fm(P)574 b Fx(is)421
+b(the)g(left)h(preconditioner)g(if)f Fu(LR=1)g Fx(and)g(the)g(righ)-31
+b(t)422 b(preconditioner)g(if)f Fu(LR=2)p Fx(.)5906 59658
+y(The)396 b(preconditioner)h(\(or)e(the)h(pro)31 b(duct)395
+b(of)h(the)g(left)g(and)g(righ)-31 b(t)396 b(preconditioners)h(if)f(b)
+31 b(oth)395 b(are)h(non)-31 b(trivial\))5906 60987 y(should)310
+b(b)31 b(e)309 b(an)g(appro)-31 b(ximation)313 b(to)d(the)g(matrix)g
+Fm(I)213 b Fp(\241)126 b Fm(\260)61 b(J)106 b Fx(,)322
+b(where)309 b Fm(I)396 b Fx(is)309 b(the)h(iden)-31 b(tit)g(y)311
+b(matrix,)324 b Fm(J)415 b Fx(is)309 b(the)h(system)5906
+62315 y(Jacobian,)372 b(and)d Fm(\260)g Fx(=)g Fu(GAMMA)p
+Fx(.)5906 64197 y(The)250 b(argumen)-31 b(ts)250 b Fu(EWT)f
+Fx(and)g Fu(DELTA)g Fx(are)g(input)h(and)f(pro)-31 b(vide)250
+b(the)f(error)f(w)-31 b(eigh)g(t)251 b(arra)-31 b(y)249
+b(and)g(a)h(scalar)f(tolerance,)5906 65525 y(resp)31
+b(ectiv)-31 b(ely)-92 b(,)398 b(for)392 b(use)e(b)-31
+b(y)392 b Fu(FCVPSOL)g Fx(if)g(it)g(uses)e(an)i(iterativ)-31
+b(e)394 b(metho)31 b(d)392 b(in)f(its)h(solution.)561
+b(In)391 b(that)h(case,)398 b(the)5906 66853 y(residual)377
+b(v)-31 b(ector)377 b Fm(\275)320 b Fx(=)g Fm(r)281 b
+Fp(\241)251 b Fm(P)154 b(z)424 b Fx(of)377 b(the)g(system)f(should)h(b)
+31 b(e)376 b(made)h(less)f(than)h Fu(DELTA)g Fx(in)g(w)-31
+b(eigh)g(ted)378 b Fm(`)48295 67019 y Fl(2)49168 66853
+y Fx(norm,)5906 68182 y(i.e.)7907 67235 y Fj(p)p 9014
+67235 7253 45 v 117 x(P)10182 68182 y Fx(\()p Fm(\275)11184
+68348 y Fk(i)11800 68182 y Fp(\244)246 b Fu(EWT)q Fx([)p
+Fm(i)p Fx(]\))15768 67862 y Fl(2)16626 68182 y Fm(<)400
+b Fu(DELTA)p Fx(.)i(The)f(argumen)-31 b(t)402 b Fu(VT)e
+Fx(is)h(a)g(w)-31 b(ork)401 b(arra)-31 b(y)401 b(of)g(length)h
+Fu(NEQ)f Fx(for)g(use)f(b)-31 b(y)400 b(this)5906 69510
+y(routine.)5906 71392 y(If)286 b(the)g(user's)e(preconditioner)j
+(requires)e(that)h(an)-31 b(y)287 b(Jacobian)g(related)f(data)h(b)31
+b(e)285 b(ev)-61 b(aluated)287 b(or)e(prepro)31 b(cessed,)5906
+72720 y(then)279 b(the)g(follo)-31 b(wing)283 b(routine)c(can)g(b)31
+b(e)279 b(used)f(for)h(the)g(ev)-61 b(aluation)281 b(and)e(prepro)31
+b(cessing)278 b(of)h(the)g(preconditioner:)p Black Black
+9393 76539 a Fu(SUBROUTINE)583 b(FCVPSET\(T,)g(Y,)e(FY,)h(JOK,)f(JCUR,)
+h(GAMMA,)g(EWT,)g(H,)g(V1,)f(V2,)h(V3,)f(IER\))9393 77867
+y(DIMENSION)i(Y\(*\),)f(FY\(*\),)g(EWT\(*\),)g(V1\(*\),)g(V2\(*\),)g
+(V3\(*\))p Black Black eop
+%%Page: 76 84
+76 83 bop Black 0 2701 a Fy(76)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 1906 6974 a Fx(It)429
+b(m)-31 b(ust)429 b(p)31 b(erform)429 b(an)-31 b(y)429
+b(ev)-61 b(aluation)431 b(of)e(Jacobian-related)i(data)f(and)f(prepro)
+31 b(cessing)428 b(needed)g(for)h(the)g(so-)1906 8302
+y(lution)527 b(of)e(the)g(preconditioner)h(linear)f(systems)g(b)-31
+b(y)525 b Fu(FCVPSOL)p Fx(.)h(The)f(input)g(argumen)-31
+b(t)526 b Fu(JOK)f Fx(allo)-31 b(ws)527 b(for)1906 9631
+y(Jacobian)389 b(data)g(to)f(b)31 b(e)387 b(sa)-31 b(v)g(ed)388
+b(and)g(reused:)528 b(If)387 b Fu(JOK=0)p Fx(,)393 b(this)388
+b(data)g(should)g(b)31 b(e)387 b(recomputed)h(from)g(scratc)-31
+b(h.)1906 10959 y(If)472 b Fu(JOK=1)p Fx(,)497 b(a)472
+b(sa)-31 b(v)g(ed)472 b(cop)-31 b(y)472 b(of)g(it)g(ma)-31
+b(y)472 b(b)31 b(e)471 b(reused,)496 b(and)472 b(the)f(preconditioner)i
+(constructed)e(from)h(it.)800 b(On)1906 12287 y(return,)389
+b(set)d Fu(JCUR=1)f Fx(if)h(Jacobian)h(data)f(w)-31 b(as)386
+b(computed,)391 b(and)385 b Fu(0)g Fx(otherwise.)542
+b(Also)386 b(on)f(return,)k(set)c Fu(IER=0)1906 13616
+y Fx(if)371 b Fu(FCVPSET)f Fx(w)-31 b(as)370 b(successful,)g(set)g
+Fu(IER)f Fx(p)31 b(ositiv)-31 b(e)372 b(if)e(a)g(reco)-31
+b(v)g(erable)370 b(error)f(o)31 b(ccurred,)369 b(and)h(set)g
+Fu(IER)g Fx(negativ)-31 b(e)1906 14944 y(if)370 b(a)g(non-reco)-31
+b(v)g(erable)370 b(error)e(o)31 b(ccurred.)1906 16826
+y(If)278 b(the)g(user's)e Fu(FCVPSET)j Fx(uses)d(di\256erence)i
+(quotien)-31 b(t)279 b(appro)-31 b(ximations,)300 b(it)278
+b(ma)-31 b(y)279 b(need)f(to)g(use)f(the)h(error)f(w)-31
+b(eigh)g(t)1906 18154 y(arra)g(y)366 b Fu(EWT)f Fx(and)g(curren)-31
+b(t)365 b(stepsize)g Fu(H)g Fx(in)g(the)h(calculation)i(of)d(suitable)i
+(incremen)-31 b(ts.)492 b(It)365 b(ma)-31 b(y)366 b(also)g(need)f(the)
+1906 19482 y(unit)377 b(roundo\256,)g(whic)-31 b(h)377
+b(can)f(b)31 b(e)375 b(obtained)i(as)f(the)g(optional)i(output)f
+Fu(ROPT\(10\))p Fx(,)h(passed)e(from)g(the)g(calling)1906
+20811 y(program)370 b(to)g(this)g(routine)g(using)f Fu(COMMON)p
+Fx(.)3034 23470 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial
+Ff(!)1616 b Fx(If)486 b(the)h(user)f(calls)i Fu(FCVSPGMRSETPREC)p
+Fx(,)h(the)e(routine)h Fu(FCVPSET)f Fx(m)-31 b(ust)488
+b(b)31 b(e)486 b(pro)-31 b(vided,)517 b(ev)-31 b(en)488
+b(if)f(it's)1906 24798 y(empt)-31 b(y)-92 b(.)1906 26680
+y(Optional)372 b(outputs)e(sp)31 b(eci\257c)369 b(to)h(the)f
+Fv(spgmr)f Fx(case)h(are)g(listed)h(in)g(T)-92 b(able)370
+b(5.3.)1906 28562 y(If)417 b(a)h(sequence)f(of)g(problems)h(of)g(the)f
+(same)h(size)f(is)g(b)31 b(eing)417 b(solv)-31 b(ed)419
+b(using)e(the)g Fv(spgmr)g Fx(linear)g(solv)-31 b(er,)431
+b(then)1906 29890 y(follo)-31 b(wing)474 b(the)d(call)g(to)g
+Fu(FCVREINIT)g Fx(\(see)f(b)31 b(elo)-31 b(w\),)498 b(a)470
+b(call)h(to)g(the)g Fu(FCVSPGMR)g Fx(routine)f(ma)-31
+b(y)472 b(or)e(ma)-31 b(y)471 b(not)1906 31218 y(b)31
+b(e)474 b(needed.)806 b(If)473 b(there)h(is)g(a)g(c)-31
+b(hange)475 b(in)f(input)g(argumen)-31 b(ts)475 b(other)f(than)h
+Fu(MAXL)p Fx(,)f(then)g(the)g(user)f(program)1906 32547
+y(should)318 b(call)h(the)f(routine)h Fu(FCVSPGMRREINIT)g
+Fx(whic)-31 b(h)319 b(reinitializes)h(the)e Fv(spgmr)e
+Fx(linear)j(solv)-31 b(er,)329 b(but)318 b(without)1906
+33875 y(reallo)31 b(cating)393 b(its)d(memory)-92 b(.)554
+b(The)390 b(argumen)-31 b(ts)390 b(of)g Fu(FCVSPGMRREINIT)i
+Fx(routine)e(ha)-31 b(v)g(e)390 b(the)g(same)g(names)g(and)1906
+35203 y(meanings)424 b(as)e(those)g(of)h Fu(FCVSPGMR)g
+Fx(routine.)652 b(Finally)-92 b(,)437 b(if)423 b(the)f(v)-61
+b(alue)423 b(of)f Fu(MAXL)h Fx(is)f(b)31 b(eing)422 b(c)-31
+b(hanged,)437 b(then)423 b(a)1906 36532 y(call)371 b(to)f
+Fu(FCVSPGMR)g Fx(m)-31 b(ust)370 b(b)31 b(e)368 b(made.)p
+Black 553 38836 a(5.)p Black 493 w Fy(Problem)426 b(solution)1906
+40717 y Fx(Carrying)371 b(out)f(the)f(in)-31 b(tegration)372
+b(is)d(accomplished)i(b)-31 b(y)370 b(making)h(calls)f(as)f(follo)-31
+b(ws:)p Black Black 5393 43401 a Fu(CALL)582 b(FCVODE\(TOUT,)h(T,)e(Y,)
+h(ITASK,)g(IER\))1906 46085 y Fx(The)410 b(argumen)-31
+b(ts)410 b(are)e(as)h(follo)-31 b(ws.)614 b Fu(TOUT)409
+b Fx(sp)31 b(eci\257es)409 b(the)g(next)g(v)-61 b(alue)409
+b(of)h Fm(t)e Fx(at)i(whic)-31 b(h)410 b(a)f(solution)i(is)d(desired)
+1906 47413 y(\(input\).)462 b Fu(T)270 b Fx(is)g(the)h(v)-61
+b(alue)271 b(of)g Fm(t)f Fx(reac)-31 b(hed)270 b(b)-31
+b(y)271 b(the)f(solv)-31 b(er)271 b(on)g(output.)461
+b Fu(Y)270 b Fx(is)g(an)h(arra)-31 b(y)271 b(con)-31
+b(taining)273 b(the)e(computed)1906 48742 y(solution)328
+b(on)e(output.)479 b Fu(ITASK)327 b Fx(is)e(a)h(task)h(indicator)g(and)
+f(should)g(b)31 b(e)326 b(set)f(to)i(1)f(for)g(normal)h(mo)31
+b(de)326 b(\(o)-31 b(v)g(ersho)31 b(ot)1906 50070 y Fu(TOUT)423
+b Fx(and)f(in)-31 b(terp)31 b(olate\),)438 b(to)423 b(2)f(for)g
+(one-step)h(mo)31 b(de)422 b(\(return)g(after)h(eac)-31
+b(h)422 b(in)-31 b(ternal)423 b(step)f(tak)-31 b(en\),)438
+b(to)422 b(3)h(for)1906 51398 y(normal)300 b(mo)31 b(de)298
+b(with)h(the)g(additional)i Fu(tstop)d Fx(constrain)-31
+b(t,)315 b(or)297 b(to)i(4)f(for)g(one-step)h(mo)31 b(de)298
+b(with)h(the)g(additional)1906 52727 y(constrain)-31
+b(t)338 b Fu(tstop)p Fx(.)482 b Fu(IER)336 b Fx(is)f(a)h(completion)j
+(\260ag)d(and)g(will)i(b)31 b(e)335 b(set)h(to)g(a)g(p)31
+b(ositiv)-31 b(e)337 b(v)-61 b(alue)337 b(up)31 b(on)335
+b(successful)g(re-)1906 54055 y(turn)259 b(or)g(to)h(a)f(negativ)-31
+b(e)261 b(v)-61 b(alue)259 b(if)h(an)f(error)f(o)31 b(ccurred.)455
+b(These)259 b(v)-61 b(alues)259 b(corresp)31 b(ond)258
+b(to)h(the)h Fu(CVode)f Fx(returns)f(\(see)1906 55383
+y Fp(x)p Fx(5.5.3\))411 b(as)c(follo)-31 b(ws:)572 b(0:)d
+Fu(CV)p 13712 55383 349 45 v 419 w(SUCCESS)p Fx(,)409
+b(1:)569 b Fu(CV)p 21505 55383 V 419 w(TSTOP)p 24829
+55383 V 419 w(RETURN)p Fx(,)409 b(2:)569 b Fu(CV)p 32041
+55383 V 419 w(ROOT)p 34784 55383 V 419 w(RETURN)p Fx(,)409
+b Fp(\241)p Fx(1:)569 b Fu(CV)p 42857 55383 V 419 w(MEM)p
+45019 55383 V 419 w(NULL)p Fx(,)1906 56712 y Fp(\241)p
+Fx(2:)906 b Fu(Cv)p 5765 56712 V 418 w(ILL)p 7926 56712
+V 419 w(INPUT)p Fx(,)577 b Fp(\241)p Fx(3:)905 b Fu(CV)p
+15922 56712 V 419 w(NO)p 17503 56712 V 418 w(MALLOC)p
+Fx(,)577 b Fp(\241)p Fx(4:)905 b Fu(CV)p 26079 56712
+V 419 w(TOO)p 28241 56712 V 419 w(MUCH)p 30984 56712
+V 419 w(WORK)p Fx(,)576 b Fp(\241)p Fx(5:)905 b Fu(CV)p
+38398 56712 V 419 w(TOO)p 40560 56712 V 419 w(MUCH)p
+43303 56712 V 419 w(ACC)p Fx(,)576 b Fp(\241)p Fx(6:)1906
+58040 y Fu(CV)p 3138 58040 V 419 w(ERR)p 5300 58040 V
+419 w(FAILURE)p Fx(,)468 b Fp(\241)p Fx(7:)689 b Fu(CV)p
+14133 58040 V 419 w(CONV)p 16876 58040 V 419 w(FAILURE)p
+Fx(,)468 b Fp(\241)p Fx(8:)688 b Fu(CV)p 25708 58040
+V 419 w(LINIT)p 29032 58040 V 419 w(FAIL)p Fx(,)468 b
+Fp(\241)p Fx(9:)688 b Fu(CV)p 36121 58040 V 419 w(LSETUP)p
+40026 58040 V 420 w(FAIL)p Fx(,)467 b(and)h Fp(\241)p
+Fx(10:)1906 59368 y Fu(CV)p 3138 59368 V 419 w(LSOLVE)p
+7043 59368 V 419 w(FAIL)398 b Fx(from)f Fu(CVode)h Fx(\(see)e
+Fp(x)p Fx(5.5.3\).)579 b(The)397 b(curren)-31 b(t)397
+b(v)-61 b(alues)397 b(of)g(the)g(optional)j(outputs)d(are)g(a)-31
+b(v)-61 b(ail-)1906 60697 y(able)370 b(in)g Fu(IOPT)f
+Fx(and)h Fu(ROPT)f Fx(\(see)g(T)-92 b(able)371 b(5.3\).)p
+Black 553 63000 a(6.)p Black 493 w Fy(Additional)425
+b(solution)g(output)1906 64882 y Fx(T)-92 b(o)259 b(obtain)h(a)f(deriv)
+-61 b(ativ)-31 b(e)260 b(of)e(the)h(solution,)283 b(of)258
+b(order)g(up)g(to)h(the)g(curren)-31 b(t)258 b(metho)31
+b(d)259 b(order,)280 b(mak)-31 b(e)260 b(the)e(follo)-31
+b(wing)1906 66211 y(call:)p Black Black 5393 68894 a
+Fu(CALL)582 b(FCVDKY\(T,)h(K,)e(DKY,)h(IER\))1906 71578
+y Fx(where)370 b Fu(T)h Fx(is)f(the)g(v)-61 b(alue)371
+b(of)g Fm(t)f Fx(at)h(whic)-31 b(h)371 b(solution)h(deriv)-61
+b(ativ)-31 b(e)372 b(is)e(desired,)g Fu(K)h Fx(is)f(the)g(deriv)-61
+b(ativ)-31 b(e)372 b(order)e(\(0)310 b Fp(\267)370 b
+Fu(K)1906 72906 y Fp(\267)350 b Fu(QU)p Fx(\),)h(and)f
+Fu(DKY)g Fx(is)g(an)g(arra)-31 b(y)350 b(con)-31 b(taining)353
+b(the)d(computed)h Fu(K)p Fx(-th)f(deriv)-61 b(ativ)-31
+b(e)351 b(of)g Fm(y)389 b Fx(on)350 b(return.)485 b(The)351
+b(v)-61 b(alue)350 b Fu(T)1906 74235 y Fx(m)-31 b(ust)341
+b(lie)f(b)31 b(et)-31 b(w)g(een)341 b Fu(TCUR-HU)f Fx(and)g
+Fu(TCUR)p Fx(.)h(The)f(return)f(\260ag)h Fu(IER)g Fx(is)g(set)f(to)i(0)
+f(up)31 b(on)339 b(successful)g(return)g(or)h(to)1906
+75563 y(a)370 b(negativ)-31 b(e)371 b(v)-61 b(alue)370
+b(to)g(indicate)h(an)e(illegal)j(input.)p Black 553 77867
+a(7.)p Black 493 w Fy(Problem)426 b(reinitialization)p
+Black Black eop
+%%Page: 77 85
+77 84 bop Black 4000 2701 a Fy(5.9)425 b(F)-35 b(CV)g(ODE,)425
+b(a)f Fv(F)-32 b(or)-74 b(tran)p Fy(-)p Fv(C)424 b Fy(in)-35
+b(terface)424 b(mo)35 b(dule)21731 b(77)p 4000 3144 48001
+45 v Black 5906 6974 a Fx(T)-92 b(o)282 b(re-initialize)i(the)e
+Fv(cv)-25 b(ode)282 b Fx(solv)-31 b(er)281 b(for)h(the)f(solution)i(of)
+f(a)g(new)f(problem)h(of)g(the)f(same)h(size)f(as)g(one)h(already)5906
+8302 y(solv)-31 b(ed,)371 b(mak)-31 b(e)370 b(the)g(follo)-31
+b(wing)373 b(call:)p Black Black 9393 11092 a Fu(CALL)582
+b(FCVREINIT\(T0,)h(Y0,)f(IATOL,)g(RTOL,)g(ATOL,)g(INOPT,)g(IOPT,)g
+(ROPT,)f(IER\))5906 13883 y Fx(The)332 b(argumen)-31
+b(ts)333 b(ha)-31 b(v)g(e)333 b(the)f(same)g(names)g(and)g(meanings)h
+(as)e(those)h(of)g Fu(FCVMALLOC)p Fx(.)i Fu(FCVREINIT)e
+Fx(p)31 b(erforms)5906 15211 y(the)306 b(same)g(initializations)k(as)
+305 b Fu(FCVMALLOC)p Fx(,)i(but)f(do)31 b(es)305 b(no)g(memory)i(allo)
+31 b(cation,)322 b(using)305 b(instead)i(the)e(existing)5906
+16539 y(in)-31 b(ternal)392 b(memory)e(created)g(b)-31
+b(y)390 b(the)g(previous)g Fu(FCVMALLOC)g Fx(call.)555
+b(The)390 b(call)h(to)g(sp)31 b(ecify)389 b(the)h(linear)h(system)5906
+17868 y(solution)371 b(metho)31 b(d)371 b(ma)-31 b(y)370
+b(or)f(ma)-31 b(y)370 b(not)g(b)31 b(e)369 b(needed.)p
+Black 4553 20215 a(8.)p Black 493 w Fy(Memory)426 b(deallo)35
+b(cation)5906 22097 y Fx(T)-92 b(o)370 b(free)f(the)g(in)-31
+b(ternal)371 b(memory)f(created)g(b)-31 b(y)369 b(the)g(call)i(to)f
+Fu(FCVMALLOC)p Fx(,)h(mak)-31 b(e)370 b(the)g(call)p
+Black Black 9393 24887 a Fu(CALL)582 b(FCVFREE)5906 27677
+y Fx(and)370 b(then,)g(dep)31 b(ending)369 b(on)h(the)f
+Fv(nvector)g Fx(v)-31 b(ersion)370 b(\(serial)g(or)f(parallel\),)j
+(either)p Black Black 9393 30467 a Fu(CALL)582 b(FNVFREES)5906
+33257 y Fx(or)p Black Black 9393 36048 a Fu(CALL)g(FNVFREEP)5906
+38838 y Fx(resp)31 b(ectiv)-31 b(ely)-92 b(.)4000 43138
+y Fq(5.9.4)1495 b(Usage)500 b(of)e(the)g(F)-42 b(CVR)g(OOT)501
+b(in)-42 b(terface)499 b(to)g(ro)42 b(ot\257nding)4000
+45202 y Fx(The)330 b Fv(f)-25 b(cvr)g(oot)329 b Fx(in)-31
+b(terface)330 b(pac)-31 b(k)-61 b(age)331 b(allo)-31
+b(ws)332 b(programs)d(written)i(in)f Fv(F)-32 b(or)-74
+b(tran)328 b Fx(to)i(use)f(the)g(ro)31 b(ot\257nding)331
+b(feature)4000 46531 y(of)274 b(the)f Fv(cv)-25 b(ode)274
+b Fx(solv)-31 b(er)273 b(mo)31 b(dule.)462 b(The)273
+b(user-callable)h(functions)h(in)e Fv(f)-25 b(cvr)g(oot)p
+Fx(,)292 b(with)275 b(the)e(corresp)31 b(onding)273 b
+Fv(cv)-25 b(ode)4000 47859 y Fx(functions,)371 b(are)e(as)g(follo)-31
+b(ws:)p Black 5660 50107 a Fp(\262)p Black 554 w Fu(FCVROOTINIT)371
+b Fx(in)-31 b(terfaces)370 b(to)g Fu(CVodeRootInit)p
+Fx(.)p Black 5660 52367 a Fp(\262)p Black 554 w Fu(FCVROOTINFO)h
+Fx(in)-31 b(terfaces)370 b(to)g Fu(CVodeGetRootInfo)p
+Fx(.)p Black 5660 54626 a Fp(\262)p Black 554 w Fu(FCVROOTFREE)h
+Fx(in)-31 b(terfaces)370 b(to)g Fu(CVodeRootInit)p Fx(.)4000
+56874 y(In)490 b(order)g(to)h(use)f(the)h(ro)31 b(ot\257nding)492
+b(feature)f(of)g Fv(cv)-25 b(ode)p Fx(,)522 b(the)491
+b(follo)-31 b(wing)494 b(call)e(m)-31 b(ust)491 b(b)31
+b(e)490 b(made,)522 b(after)492 b(calling)4000 58202
+y Fu(FCVMALLOC)370 b Fx(but)g(prior)f(to)h(calling)h
+Fu(FCVODE)p Fx(,)g(to)e(allo)31 b(cate)372 b(and)e(initialize)i(memory)
+e(for)f(the)h Fu(FCVROOT)g Fx(mo)31 b(dule:)p Black Black
+7487 60462 a Fu(CALL)582 b(FCVROOTINIT)g(\(NRTFN,)h(IER\))4000
+62710 y Fx(The)426 b(argumen)-31 b(ts)427 b(are)f(as)g(follo)-31
+b(ws:)608 b Fu(NRTFN)426 b Fx(is)g(the)g(n)-31 b(um)g(b)31
+b(er)426 b(of)h(ro)31 b(ot)426 b(functions.)664 b Fu(IER)426
+b Fx(is)g(a)g(return)f(completion)4000 64038 y(\260ag;)350
+b(its)338 b(v)-61 b(alues)338 b(are)g(0)h(for)f(success,)343
+b Fp(\241)p Fx(1)c(if)f(the)h Fu(CVODE)f Fx(memory)h(w)-31
+b(as)339 b Fu(NULL)p Fx(,)g(and)f Fp(\241)p Fx(11)h(if)g(a)f(memory)h
+(allo)31 b(cation)4000 65367 y(failed.)5660 66706 y(T)-92
+b(o)330 b(sp)31 b(eci\257y)329 b(the)g(functions)i(whose)e(ro)31
+b(ots)330 b(are)f(to)g(b)31 b(e)329 b(found,)338 b(the)330
+b(user)e(m)-31 b(ust)329 b(de\257ne)g(the)h(follo)-31
+b(wing)333 b(routine:)p Black Black 7487 68966 a Fu(SUBROUTINE)583
+b(FCVROOTFN)f(\(T,)g(Y,)f(G\))7487 70294 y(DIMENSION)h(Y\(*\),)g
+(G\(*\))4000 72542 y Fx(It)445 b(m)-31 b(ust)445 b(set)g(the)g
+Fu(G)g Fx(arra)-31 b(y)-92 b(,)464 b(of)446 b(length)g
+Fu(NRTFN)p Fx(,)g(with)g(comp)31 b(onen)-31 b(ts)446
+b Fm(g)33859 72708 y Fk(i)34227 72542 y Fx(\()p Fm(t;)184
+b(y)40 b Fx(\),)466 b(as)444 b(a)i(function)g(of)f Fu(T)p
+Fx(=)434 b Fm(t)444 b Fx(and)i(the)4000 73870 y(arra)-31
+b(y)370 b Fu(Y)p Fx(=)307 b Fm(y)40 b Fx(.)5660 75210
+y(When)412 b(making)j(calls)e(to)h Fu(FCVODE)f Fx(to)g(solv)-31
+b(e)414 b(the)e(ODE)h(system,)424 b(the)413 b(o)31 b(ccurrence)411
+b(of)i(a)g(ro)31 b(ot)413 b(is)g(\260agged)h(b)-31 b(y)4000
+76539 y(the)402 b(return)g(v)-61 b(alue)403 b Fu(IER)f
+Fx(=)g(2.)592 b(In)402 b(that)i(case,)410 b(if)403 b
+Fu(NRTFN)g Fm(>)363 b Fx(1,)411 b(the)402 b(functions)i
+Fm(g)37778 76705 y Fk(i)38548 76539 y Fx(whic)-31 b(h)403
+b(w)-31 b(ere)403 b(found)f(to)h(ha)-31 b(v)g(e)404 b(a)4000
+77867 y(ro)31 b(ot)370 b(can)f(b)31 b(e)369 b(iden)-31
+b(ti\257ed)370 b(b)-31 b(y)370 b(making)h(the)e(follo)-31
+b(wing)373 b(call:)p Black Black eop
+%%Page: 78 86
+78 85 bop Black 0 2701 a Fy(78)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black Black Black 3487 6974
+a Fu(CALL)582 b(FCVROOTINFO)g(\(NRTFN,)h(INFO,)f(IER\))0
+9115 y Fx(The)425 b(argumen)-31 b(ts)426 b(are)e(as)g(follo)-31
+b(ws:)606 b Fu(NRTFN)425 b Fx(is)g(the)g(n)-31 b(um)g(b)31
+b(er)424 b(of)h(ro)31 b(ot)426 b(functions.)659 b Fu(INFO)425
+b Fx(is)g(an)g(in)-31 b(teger)425 b(arra)-31 b(y)425
+b(of)0 10443 y(length)447 b Fu(NRTFN)f Fx(with)h(ro)31
+b(ot)446 b(information.)725 b Fu(IER)446 b Fx(is)g(a)g(return)f
+(completion)j(\260ag;)485 b(its)447 b(v)-61 b(alues)445
+b(are)h(0)g(for)g(success,)0 11772 y(negativ)-31 b(e)372
+b(if)e(there)f(w)-31 b(as)370 b(a)g(memory)h(failure.)494
+b(The)370 b(returned)f(v)-61 b(alues)370 b(of)g Fu(INFO\(i\))g
+Fx(\()p Fu(i)p Fx(=)309 b(1)p Fm(;)184 b(:)g(:)g(:)k(;)370
+b Fu(NRTFN)p Fx(\))h(are)e(0)h(or)0 13100 y(1,)g(suc)-31
+b(h)369 b(that)h Fu(INFO\(i\))g Fx(=)308 b(1)369 b(if)h
+Fm(g)14196 13266 y Fd(i)15032 13100 y Fx(w)-31 b(as)370
+b(found)f(to)h(ha)-31 b(v)g(e)370 b(a)g(ro)31 b(ot,)370
+b(and)g Fu(INFO\(i\))g Fx(=)307 b(0)369 b(otherwise.)1660
+14428 y(The)404 b(total)i(n)-31 b(um)g(b)31 b(er)404
+b(of)g(calls)h(made)f(to)h(the)f(ro)31 b(ot)404 b(function)h
+Fu(FCVROOTFN)p Fx(,)g(denoted)g Fu(NGE)p Fx(,)f(can)g(b)31
+b(e)403 b(obtained)0 15757 y(from)320 b Fu(IOPT\(25\))p
+Fx(.)477 b(If)319 b(the)h Fv(f)-25 b(cv)g(ode)p Fx(/)p
+Fv(cv)g(ode)322 b Fx(memory)e(blo)31 b(c)-31 b(k)321
+b(is)e(reinitialized)j(to)f(solv)-31 b(e)320 b(a)g(di\256eren)-31
+b(t)320 b(problem)g(via)0 17085 y(a)369 b(call)i(to)f
+Fu(FCVREINIT)p Fx(,)h(then)e(the)h(coun)-31 b(ter)369
+b Fu(NGE)h Fx(is)f(reset)f(to)i(zero.)1660 18414 y(T)-92
+b(o)370 b(free)f(the)g(memory)h(resources)e(allo)31 b(cated)372
+b(b)-31 b(y)369 b(a)h(prior)f(call)h(to)g Fu(FCVROOTINIT)h
+Fx(mak)-31 b(e)370 b(the)g(follo)-31 b(wing)373 b(call:)p
+Black Black 3487 20555 a Fu(CALL)582 b(FCVROOTFREE)0
+22696 y Fx(See)369 b Fp(x)p Fx(5.7)h(for)g(additional)i(information)g
+(on)e(the)f(ro)31 b(ot\257nding)371 b(feature.)0 25779
+y Fq(5.9.5)1495 b(Usage)500 b(of)e(the)g(F)-42 b(CVBP)500
+b(in)-42 b(terface)500 b(to)e(CVBANDPRE)0 27822 y Fx(The)434
+b Fv(f)-25 b(cvbp)435 b Fx(in)-31 b(terface)436 b(sub-mo)31
+b(dule)435 b(is)f(a)g(pac)-31 b(k)-61 b(age)435 b(of)g
+Fv(C)f Fx(functions)i(whic)-31 b(h,)451 b(as)435 b(part)f(of)h(the)f
+Fv(f)-25 b(cv)g(ode)435 b Fx(in)-31 b(ter-)0 29151 y(face)494
+b(mo)31 b(dule,)526 b(supp)31 b(ort)493 b(the)g(use)g(of)h(the)g
+Fv(cv)-25 b(ode)494 b Fx(solv)-31 b(er)494 b(with)g(the)g(serial)g
+Fv(nvector)p 37954 29151 368 45 v 441 w(serial)e Fx(mo)31
+b(dule)495 b(and)0 30479 y(the)464 b Fv(cvbandpre)h Fx(preconditioner)h
+(mo)31 b(dule)465 b(\(see)f Fp(x)p Fx(5.8.1\),)491 b(for)464
+b(the)h(solution)g(of)g(ODE)f(systems)g(in)g(a)h(mixed)0
+31807 y Fv(F)-32 b(or)-74 b(tran)p Fx(/)p Fv(C)368 b
+Fx(setting.)1660 33136 y(The)526 b(user-callable)h(functions)g(in)f
+(this)f(pac)-31 b(k)-61 b(age,)567 b(with)527 b(the)e(corresp)31
+b(onding)526 b Fv(cv)-25 b(ode)526 b Fx(and)g Fv(cvbandpre)0
+34464 y Fx(functions,)371 b(are)e(as)g(follo)-31 b(ws:)p
+Black 1660 36605 a Fp(\262)p Black 554 w Fu(FCVBPINIT)371
+b Fx(in)-31 b(terfaces)370 b(to)g Fu(CVBandPrecAlloc)p
+Fx(.)p Black 1660 38783 a Fp(\262)p Black 554 w Fu(FCVBPSPGMR)h
+Fx(in)-31 b(terfaces)370 b(to)g Fu(CVBPSpgmr)g Fx(and)g
+Fv(spgmr)e Fx(optional)j(input)f(functions.)p Black 1660
+40960 a Fp(\262)p Black 554 w Fu(FCVBPREINIT)h Fx(in)-31
+b(terfaces)370 b(to)g Fu(CVBandPrecReInit)p Fx(.)p Black
+1660 43138 a Fp(\262)p Black 554 w Fu(FCVBPOPT)h Fx(in)-31
+b(terfaces)370 b(to)g Fv(cvbandpre)f Fx(optional)j(output)f(functions.)
+p Black 1660 45316 a Fp(\262)p Black 554 w Fu(FCVBPFREE)g
+Fx(in)-31 b(terfaces)370 b(to)g Fu(CVBandPrecFree)p Fx(.)1660
+47457 y(As)347 b(with)i(the)e(rest)f(of)i(the)f Fv(f)-25
+b(cv)g(ode)348 b Fx(routines,)353 b(the)347 b(names)h(of)f(the)h
+(user-supplied)e(routines)i(are)f(mapp)31 b(ed)347 b(to)0
+48785 y(actual)371 b(v)-61 b(alues)369 b(through)h(a)g(series)e(of)i
+(de\257nitions)g(in)f(the)h(header)f(\257le)g Fu(fcvbp.h)p
+Fx(.)1660 50114 y(The)305 b(follo)-31 b(wing)309 b(is)304
+b(a)h(summary)h(of)f(the)g(usage)g(of)g(this)g(mo)31
+b(dule.)472 b(Steps)305 b(that)g(are)g(unc)-31 b(hanged)305
+b(from)h(the)f(main)0 51442 y(program)370 b(describ)31
+b(ed)368 b(in)i Fp(x)p Fx(5.9.3)h(are)e(gra)-31 b(y)g(ed-out.)p
+Black 553 53786 a(1.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fy(Righ)c(t-hand)425 b(side)g(sp)35 b(eci\257cation)p
+Black Black 553 56093 a Fx(2.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fv(nvector)425 b Fy(mo)35 b(dule)425 b(initialization)p
+Black Black 553 58399 a Fx(3.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fy(Problem)h(sp)35 b(eci\257cation)p Black Black
+553 60706 a Fx(4.)p Black 493 w Fy(Linear)425 b(solv)-35
+b(er)425 b(sp)35 b(eci\257cation)1906 62588 y Fx(T)-92
+b(o)370 b(initialize)i(the)e Fv(cvbandpre)g Fx(preconditioner,)h(mak)
+-31 b(e)370 b(the)g(follo)-31 b(wing)372 b(call:)p Black
+Black 5974 65282 a Fu(CALL)582 b(FCVBPINIT\(NEQ,)h(MU,)f(ML,)g(IER\))
+1906 67977 y Fx(The)483 b(argumen)-31 b(ts)483 b(are)f(as)g(follo)-31
+b(ws.)834 b Fu(NEQ)482 b Fx(is)g(the)h(problem)g(size.)831
+b Fu(MU)482 b Fx(and)g Fu(ML)h Fx(are)f(the)g(upp)31
+b(er)481 b(and)i(lo)-31 b(w)g(er)1906 69305 y(half-bandwidths)393
+b(of)e(the)f(band)h(matrix)g(that)h(is)e(retained)h(as)f(an)g(appro)-31
+b(ximation)394 b(of)d(the)f(Jacobian.)558 b Fu(IER)1906
+70634 y Fx(is)383 b(a)f(return)g(completion)j(\260ag.)532
+b(A)383 b(v)-61 b(alue)383 b(of)f(0)h(indicates)h(success,)g(while)g(a)
+e(v)-61 b(alue)383 b(of)g Fp(\241)p Fx(1)f(indicates)i(that)g(a)1906
+71962 y(memory)371 b(failure)f(o)31 b(ccurred.)1906 73844
+y(T)-92 b(o)444 b(sp)31 b(ecify)443 b(the)g Fv(spgmr)e
+Fx(linear)j(system)f(solv)-31 b(er)443 b(and)g(use)f(the)h
+Fv(cvbandpre)h Fx(preconditioner,)463 b(mak)-31 b(e)444
+b(the)1906 75172 y(follo)-31 b(wing)373 b(call:)p Black
+Black 5974 77867 a Fu(CALL)582 b(FCVBPSPGMR\(IPRETYPE,)i(IGSTYPE,)f
+(MAXL,)f(DELT,)f(IER\))p Black Black eop
+%%Page: 79 87
+79 86 bop Black 4000 2701 a Fy(5.9)425 b(F)-35 b(CV)g(ODE,)425
+b(a)f Fv(F)-32 b(or)-74 b(tran)p Fy(-)p Fv(C)424 b Fy(in)-35
+b(terface)424 b(mo)35 b(dule)21731 b(79)p 4000 3144 48001
+45 v Black 5906 6974 a Fx(Its)369 b(argumen)-31 b(ts)371
+b(are)e(the)g(same)h(as)f(those)g(of)h Fu(FCVSPGMR)g
+Fx(\(see)f(step)g(4)h(in)f Fp(x)p Fx(5.9.3\).)5906 8856
+y(Optionally)-92 b(,)373 b(to)d(sp)31 b(ecify)369 b(that)h
+Fv(spgmr)e Fx(should)i(use)f(the)g(supplied)g Fu(FCVJTIMES)p
+Fx(,)i(mak)-31 b(e)371 b(the)e(call)p Black Black 9974
+11688 a Fu(CALL)582 b(FCVSPGMRSETJAC\(FLAG,)i(IER\))5906
+14520 y Fx(with)371 b Fu(FLAG)e Fp(6)p Fx(=)308 b(0)369
+b(\(see)g(step)g(4)h(in)f Fp(x)p Fx(5.9.3)j(for)d(details\).)p
+Black 4553 16910 a(5.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fy(Problem)426 b(solution)p Black Black 4553 19299
+a Fx(6.)p Black 493 w Fv(cvbbdpre)g Fy(Optional)e(outputs)5906
+21181 y Fx(Optional)465 b(outputs)f(sp)31 b(eci\257c)462
+b(to)i(the)f Fv(spgmr)e Fx(solv)-31 b(er)463 b(are)g
+Fu(NPE)p Fx(,)g Fu(NLI)p Fx(,)h Fu(NPS)p Fx(,)f Fu(NCFL)p
+Fx(,)h Fu(LRW)p Fx(,)f(and)g Fu(LIW)p Fx(,)h(stored)5906
+22509 y(in)479 b Fu(IOPT\(16\))h Fp(\242)184 b(\242)g(\242)665
+b Fu(IOPT\(21\))p Fx(,)508 b(resp)31 b(ectiv)-31 b(ely)-92
+b(.)822 b(T)-92 b(o)479 b(obtain)h(the)f(optional)i(outputs)f(asso)31
+b(ciated)480 b(with)g(the)5906 23838 y Fv(cvbandpre)370
+b Fx(mo)31 b(dule,)371 b(mak)-31 b(e)370 b(the)g(follo)-31
+b(wing)373 b(call:)p Black Black 9974 26670 a Fu(CALL)582
+b(FCVBPOPT\(LENRPW,)i(LENIPW,)e(NFE\))5906 29502 y Fx(The)373
+b(argumen)-31 b(ts)374 b(returned)e(are)h(as)f(follo)-31
+b(ws.)506 b Fu(LENRPW)373 b Fx(is)g(the)g(length)h(of)f(real)g
+(preconditioner)h(w)-31 b(ork)373 b(space,)5906 30830
+y(in)342 b Fu(realtype)g Fx(w)-31 b(ords.)483 b Fu(LENIPW)342
+b Fx(is)e(the)i(length)g(of)f(in)-31 b(teger)342 b(preconditioner)g(w)
+-31 b(ork)342 b(space,)347 b(in)341 b(in)-31 b(teger)342
+b(w)-31 b(ords.)5906 32159 y Fu(NFE)399 b Fx(is)e(the)i(n)-31
+b(um)g(b)31 b(er)398 b(of)g Fm(f)119 b Fx(\()p Fm(t;)184
+b(y)40 b Fx(\))399 b(ev)-61 b(aluations)400 b(\(calls)f(to)g
+Fu(FCVFUN)p Fx(\))g(for)f(\257nite)h(di\256erence)e(banded)h(Jacobian)
+5906 33487 y(appro)-31 b(ximation.)p Black 4553 35877
+a(7.)p Black 493 w Fy(Memory)426 b(deallo)35 b(cation)5906
+37758 y Fx(T)-92 b(o)542 b(free)e(the)h(in)-31 b(ternal)542
+b(memory)g(created)f(b)-31 b(y)541 b(the)g(call)i(to)e
+Fu(FCVBPINIT)p Fx(,)i(b)31 b(efore)540 b(calling)j Fu(FCVFREE)f
+Fx(and)5906 39087 y Fu(FNVFREEP)p Fx(,)371 b(the)f(user)e(m)-31
+b(ust)369 b(call)p Black Black 9393 41919 a Fu(CALL)582
+b(FCVBPFREE)4000 46140 y Fq(5.9.6)1495 b(Usage)500 b(of)e(the)g(F)-42
+b(CVBBD)501 b(in)-42 b(terface)499 b(to)g(CVBBDPRE)4000
+48244 y Fx(The)296 b Fv(f)-25 b(cvbbd)296 b Fx(in)-31
+b(terface)296 b(sub-mo)31 b(dule)296 b(is)f(a)h(pac)-31
+b(k)-61 b(age)297 b(of)e Fv(C)h Fx(functions)g(whic)-31
+b(h,)312 b(as)295 b(part)h(of)g(the)f Fv(f)-25 b(cv)g(ode)297
+b Fx(in)-31 b(terface)4000 49572 y(mo)31 b(dule,)508
+b(supp)31 b(ort)479 b(the)g(use)g(of)h(the)f Fv(cv)-25
+b(ode)480 b Fx(solv)-31 b(er)480 b(with)g(the)g(parallel)g
+Fv(nvector)p 40464 49572 368 45 v 441 w(p)-74 b(arallel)480
+b Fx(mo)31 b(dule)481 b(and)4000 50900 y(the)515 b Fv(cvbbdpre)g
+Fx(preconditioner)h(mo)31 b(dule)515 b(\(see)f Fp(x)p
+Fx(5.8.2\),)554 b(for)514 b(the)h(solution)h(of)f(ODE)f(systems)h(in)f
+(a)h(mixed)4000 52229 y Fv(F)-32 b(or)-74 b(tran)p Fx(/)p
+Fv(C)368 b Fx(setting.)5660 53590 y(The)342 b(user-callable)i
+(functions)e(in)h(this)f(pac)-31 b(k)-61 b(age,)349 b(with)343
+b(the)f(corresp)31 b(onding)342 b Fv(cv)-25 b(ode)342
+b Fx(and)g Fv(cvbbdpre)h Fx(func-)4000 54918 y(tions,)371
+b(are)e(as)g(follo)-31 b(ws:)p Black 5660 57229 a Fp(\262)p
+Black 554 w Fu(FCVBBDINIT)371 b Fx(in)-31 b(terfaces)370
+b(to)g Fu(CVBBDPrecAlloc)p Fx(.)p Black 5660 59573 a
+Fp(\262)p Black 554 w Fu(FCVBBDSPGMR)h Fx(in)-31 b(terfaces)370
+b(to)g Fu(CVBBDSpgmr)h Fx(and)e Fv(spgmr)f Fx(optional)k(input)e
+(functions.)p Black 5660 61916 a Fp(\262)p Black 554
+w Fu(FCVBBDREINIT)h Fx(in)-31 b(terfaces)370 b(to)g Fu(CVBBDPrecReInit)
+p Fx(.)p Black 5660 64260 a Fp(\262)p Black 554 w Fu(FCVBBDOPT)h
+Fx(in)-31 b(terfaces)370 b(to)g Fv(cvbbdpre)g Fx(optional)i(output)e
+(functions.)p Black 5660 66604 a Fp(\262)p Black 554
+w Fu(FCVBBDFREE)h Fx(in)-31 b(terfaces)370 b(to)g Fu(CVBBDPrecFree)p
+Fx(.)5660 68915 y(In)j(addition)j(to)e(the)f(F)-92 b(ortran)373
+b(righ)-31 b(t-hand)375 b(side)e(function)i Fu(FCVFUN)p
+Fx(,)f(the)g(user-supplied)f(functions)h(used)f(b)-31
+b(y)4000 70243 y(this)356 b(pac)-31 b(k)-61 b(age,)360
+b(are)c(listed)g(b)31 b(elo)-31 b(w,)361 b(eac)-31 b(h)356
+b(with)h(the)f(corresp)31 b(onding)356 b(in)-31 b(terface)357
+b(function)g(whic)-31 b(h)357 b(calls)f(it)h(\(and)f(its)4000
+71571 y(t)-31 b(yp)31 b(e)370 b(within)h Fv(cvbbdpre)f
+Fx(or)f Fv(cv)-25 b(ode)p Fx(\):)p Black Black 8491 73018
+39019 45 v 8469 74347 45 1329 v 9155 73948 a Fv(f)g(cvbbd)369
+b Fx(routine)h(\()p Fv(F)-32 b(or)-74 b(tran)p Fx(\))p
+23451 74347 V 1328 w Fv(cv)-25 b(ode)370 b Fx(function)h(\()p
+Fv(C)p Fx(\))p 34536 74347 V 1329 w Fv(cv)-25 b(ode)370
+b Fx(function)h(t)-31 b(yp)31 b(e)p 47487 74347 V 8491
+74391 39019 45 v 8469 75719 45 1329 v 9155 75321 a Fu(FCVLOCFN)p
+23451 75719 V 10334 w(FCVgloc)p 34536 75719 V 7018 w(CVLocalFn)p
+47487 75719 V 8469 77048 V 9155 76649 a(FCVCOMMF)p 23451
+77048 V 10334 w(FCVcfn)p 34536 77048 V 7599 w(CVCommFn)p
+47487 77048 V 8469 78376 V 9155 77978 a(FCVJTIMES)p 23451
+78376 V 9753 w(FCVJtimes)p 34536 78376 V 5856 w(CVSpgmrJacTimesVecFn)p
+47487 78376 V 8491 78420 39019 45 v Black Black eop
+%%Page: 80 88
+80 87 bop Black 0 2701 a Fy(80)38509 b(Using)426 b(CV)-35
+b(ODE)p 0 3144 48001 45 v Black 0 6974 a Fx(As)401 b(with)i(the)f(rest)
+g(of)g(the)g Fv(f)-25 b(cv)g(ode)403 b Fx(routines,)411
+b(the)402 b(names)g(of)g(all)h(user-supplied)e(routines)h(here)g(are)f
+(\257xed,)411 b(in)0 8302 y(order)482 b(to)i(maximize)h(p)31
+b(ortabilit)-31 b(y)485 b(for)e(the)g(resulting)h(mixed-language)i
+(program.)834 b(Additionally)-92 b(,)515 b(based)483
+b(on)0 9631 y(\260ags)349 b(discussed)e(ab)31 b(o)-31
+b(v)g(e)349 b(in)g Fp(x)p Fx(5.9.1,)355 b(the)349 b(names)f(of)h(the)g
+(user-supplied)e(routines)i(are)f(mapp)31 b(ed)349 b(to)g(actual)h(v)
+-61 b(alues)0 10959 y(through)370 b(a)f(series)g(of)g(de\257nitions)i
+(in)e(the)h(header)f(\257le)g Fu(fcvbbd.h)p Fx(.)1660
+12349 y(The)305 b(follo)-31 b(wing)309 b(is)304 b(a)h(summary)h(of)f
+(the)g(usage)g(of)g(this)g(mo)31 b(dule.)472 b(Steps)305
+b(that)g(are)g(unc)-31 b(hanged)305 b(from)h(the)f(main)0
+13678 y(program)370 b(describ)31 b(ed)368 b(in)i Fp(x)p
+Fx(5.9.3)h(are)e(gra)-31 b(y)g(ed-out.)p Black 553 16362
+a(1.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fy(Righ)c(t-hand)425
+b(side)g(sp)35 b(eci\257cation)p Black Black 553 18811
+a Fx(2.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fv(nvector)425
+b Fy(mo)35 b(dule)425 b(initialization)p Black Black
+553 21260 a Fx(3.)p Black 0.5 0.5 0.5 TeXcolorrgb 493
+w Fy(Problem)h(sp)35 b(eci\257cation)p Black Black 553
+23709 a Fx(4.)p Black 493 w Fy(Linear)425 b(solv)-35
+b(er)425 b(sp)35 b(eci\257cation)1906 25591 y Fx(T)-92
+b(o)370 b(initialize)i(the)e Fv(cvbbdpre)g Fx(preconditioner,)h(mak)-31
+b(e)370 b(the)g(follo)-31 b(wing)373 b(call:)p Black
+Black 5974 28483 a Fu(CALL)582 b(FCVBBDINIT\(NLOCAL,)i(MUDQ,)e(MLDQ,)g
+(MU,)f(ML,)h(DQRELY,)g(IER\))1906 31375 y Fx(The)268
+b(argumen)-31 b(ts)269 b(are)e(as)g(follo)-31 b(ws.)461
+b Fu(NLOCAL)268 b Fx(is)g(the)f(lo)31 b(cal)269 b(size)e(of)h(v)-31
+b(ectors)268 b(on)g(this)f(pro)31 b(cessor.)458 b Fu(MUDQ)268
+b Fx(and)f Fu(MLDQ)1906 32703 y Fx(are)429 b(the)f(upp)31
+b(er)427 b(and)i(lo)-31 b(w)g(er)429 b(half-bandwidths)i(to)e(b)31
+b(e)428 b(used)g(in)g(the)h(computation)i(of)e(the)g(lo)31
+b(cal)429 b(Jacobian)1906 34032 y(blo)31 b(c)-31 b(ks)523
+b(b)-31 b(y)523 b(di\256erence)f(quotien)-31 b(ts.)954
+b(These)522 b(ma)-31 b(y)524 b(b)31 b(e)522 b(smaller)h(than)g(the)g
+(true)f(half-bandwidths)j(of)e(the)1906 35360 y(Jacobian)382
+b(of)f(the)g(lo)31 b(cal)382 b(blo)31 b(c)-31 b(k)381
+b(of)g Fm(g)40 b Fx(,)383 b(when)e(smaller)g(v)-61 b(alues)381
+b(ma)-31 b(y)382 b(pro)-31 b(vide)381 b(greater)g(e\261ciency)-92
+b(.)527 b Fu(MU)380 b Fx(and)h Fu(ML)1906 36688 y Fx(are)283
+b(the)g(upp)31 b(er)282 b(and)h(lo)-31 b(w)g(er)284 b(half-bandwidths)h
+(of)e(the)g(band)g(matrix)h(that)g(is)f(retained)h(as)e(an)h(appro)-31
+b(ximation)1906 38017 y(of)399 b(the)g(lo)31 b(cal)400
+b(Jacobian)g(blo)31 b(c)-31 b(k.)581 b(These)399 b(ma)-31
+b(y)399 b(b)31 b(e)398 b(smaller)i(than)f Fu(MUDQ)g Fx(and)g
+Fu(MLDQ)p Fx(.)g Fu(DQRELY)g Fx(is)f(the)h(relativ)-31
+b(e)1906 39345 y(incremen)g(t)446 b(factor)g(in)f Fm(y)484
+b Fx(for)444 b(di\256erence)h(quotien)-31 b(ts)446 b(\(optional\).)723
+b(A)445 b(v)-61 b(alue)445 b(of)g(0)p Fm(:)p Fx(0)h(indicates)g(the)f
+(default,)1906 39730 y Fp(p)p 2829 39730 6369 45 v 2829
+40673 a Fx(unit)370 b(roundo\256.)488 b Fu(IER)354 b
+Fx(is)g(a)h(return)f(completion)j(\260ag.)488 b(A)355
+b(v)-61 b(alue)355 b(of)f(0)h(indicates)h(success,)g(while)g(a)e(v)-61
+b(alue)355 b(of)1906 42002 y Fp(\241)p Fx(1)370 b(indicates)g(that)h(a)
+e(memory)h(failure)h(o)31 b(ccurred)368 b(or)h(that)h(an)g(input)g(had)
+f(an)h(illegal)h(v)-61 b(alue.)1906 43884 y(T)-92 b(o)498
+b(sp)31 b(ecify)497 b(the)g Fv(spgmr)e Fx(linear)j(system)f(solv)-31
+b(er)497 b(and)g(use)f(the)h Fv(cvbbdpre)h Fx(preconditioner,)531
+b(mak)-31 b(e)498 b(the)1906 45212 y(follo)-31 b(wing)373
+b(call:)p Black Black 5974 48104 a Fu(CALL)582 b
+(FCVBBDSPGMR\(IPRETYPE,)i(IGSTYPE,)f(MAXL,)f(DELT,)g(IER\))1906
+50996 y Fx(Its)369 b(argumen)-31 b(ts)371 b(are)e(the)g(same)h(as)f
+(those)g(of)h Fu(FCVSPGMR)g Fx(\(see)f(step)g(4)h(in)f
+Fp(x)p Fx(5.9.3\).)1906 52878 y(Optionally)-92 b(,)373
+b(to)d(sp)31 b(ecify)369 b(that)h Fv(spgmr)e Fx(should)i(use)f(the)g
+(supplied)g Fu(FCVJTIMES)p Fx(,)i(mak)-31 b(e)371 b(the)e(call)p
+Black Black 5974 55769 a Fu(CALL)582 b(FCVSPGMRSETJAC\(FLAG,)i(IER\))
+1906 58661 y Fx(with)371 b Fu(FLAG)e Fp(6)p Fx(=)308
+b(0)369 b(\(see)g(step)g(4)h(in)f Fp(x)p Fx(5.9.3)j(for)d(details\).)p
+Black 553 61110 a(5.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fy(Problem)426 b(solution)p Black Black 553 63560
+a Fx(6.)p Black 493 w Fv(cvbbdpre)g Fy(Optional)e(outputs)1906
+65441 y Fx(Optional)465 b(outputs)f(sp)31 b(eci\257c)462
+b(to)i(the)f Fv(spgmr)e Fx(solv)-31 b(er)463 b(are)g
+Fu(NPE)p Fx(,)g Fu(NLI)p Fx(,)h Fu(NPS)p Fx(,)f Fu(NCFL)p
+Fx(,)h Fu(LRW)p Fx(,)f(and)g Fu(LIW)p Fx(,)h(stored)1906
+66770 y(in)479 b Fu(IOPT\(16\))h Fp(\242)184 b(\242)g(\242)665
+b Fu(IOPT\(21\))p Fx(,)508 b(resp)31 b(ectiv)-31 b(ely)-92
+b(.)822 b(T)-92 b(o)479 b(obtain)h(the)f(optional)i(outputs)f(asso)31
+b(ciated)480 b(with)g(the)1906 68098 y Fv(cvbbdpre)370
+b Fx(mo)31 b(dule,)371 b(mak)-31 b(e)371 b(the)e(follo)-31
+b(wing)373 b(call:)p Black Black 5974 70990 a Fu(CALL)582
+b(FCVBBDOPT\(LENRPW,)i(LENIPW,)e(NGE\))1906 73882 y Fx(The)373
+b(argumen)-31 b(ts)374 b(returned)e(are)h(as)f(follo)-31
+b(ws.)506 b Fu(LENRPW)373 b Fx(is)g(the)g(length)h(of)f(real)g
+(preconditioner)h(w)-31 b(ork)373 b(space,)1906 75210
+y(in)401 b Fu(realtype)h Fx(w)-31 b(ords.)587 b(This)401
+b(size)f(is)h(lo)31 b(cal)402 b(to)f(the)g(curren)-31
+b(t)400 b(pro)31 b(cessor.)586 b Fu(LENIPW)401 b Fx(is)g(the)g(length)h
+(of)f(in)-31 b(teger)1906 76539 y(preconditioner)404
+b(w)-31 b(ork)403 b(space,)411 b(in)403 b(in)-31 b(teger)404
+b(w)-31 b(ords.)592 b(This)403 b(size)g(is)f(lo)31 b(cal)404
+b(to)f(the)g(curren)-31 b(t)402 b(pro)31 b(cessor.)591
+b Fu(NGE)403 b Fx(is)1906 77867 y(the)370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h Fm(g)40 b Fx(\()p Fm(t;)184 b(y)40 b
+Fx(\))370 b(ev)-61 b(aluations)371 b(\(calls)f(to)g Fu(FCVLOCFN)p
+Fx(\))h(so)e(far.)p Black Black eop
+%%Page: 81 89
+81 88 bop Black 4000 2701 a Fy(5.9)425 b(F)-35 b(CV)g(ODE,)425
+b(a)f Fv(F)-32 b(or)-74 b(tran)p Fy(-)p Fv(C)424 b Fy(in)-35
+b(terface)424 b(mo)35 b(dule)21731 b(81)p 4000 3144 48001
+45 v Black Black 4553 6974 a Fx(7.)p Black 493 w Fy(Problem)426
+b(reinitialization)5906 8856 y Fx(If)509 b(a)f(sequence)g(of)h
+(problems)g(of)f(the)h(same)g(size)f(is)g(b)31 b(eing)509
+b(solv)-31 b(ed)509 b(using)g(the)f Fv(spgmr)g Fx(linear)h(solv)-31
+b(er)509 b(in)5906 10184 y(com)-31 b(bination)259 b(with)d(the)f
+Fv(cvbbdpre)h Fx(preconditioner,)280 b(then)255 b(the)g
+Fv(cv)-25 b(ode)256 b Fx(pac)-31 b(k)-61 b(age)256 b(can)f(b)31
+b(e)255 b(re-initialized)j(for)5906 11512 y(the)279 b(second)e(and)i
+(subsequen)-31 b(t)278 b(problems)g(b)-31 b(y)278 b(calling)i
+Fu(FCVREINIT)p Fx(,)g(follo)-31 b(wing)282 b(whic)-31
+b(h,)297 b(a)279 b(call)g(to)g Fu(FCVBBDINIT)5906 12841
+y Fx(ma)-31 b(y)350 b(or)e(ma)-31 b(y)350 b(not)f(b)31
+b(e)348 b(needed.)486 b(If)348 b(the)h(input)g(argumen)-31
+b(ts)350 b(are)e(the)h(same,)k(no)c Fu(FCVBBDINIT)h Fx(call)f(is)g
+(needed.)5906 14169 y(If)312 b(there)f(is)h(a)g(c)-31
+b(hange)312 b(in)g(input)h(argumen)-31 b(ts)313 b(other)f(than)g
+Fu(MU)p Fx(,)g Fu(ML)p Fx(,)g(or)g Fu(MAXL)p Fx(,)h(then)e(the)h(user)f
+(program)h(should)5906 15497 y(mak)-31 b(e)371 b(the)e(call)p
+Black Black 9974 18265 a Fu(CALL)582 b(FCVBBDREINIT\(NLOCAL,)i(MUDQ,)e
+(MLDQ,)g(DQRELY,)g(IER\))5906 21032 y Fx(This)320 b(reinitializes)h
+(the)e Fv(cvbbdpre)g Fx(preconditioner,)331 b(but)319
+b(without)i(reallo)31 b(cating)322 b(its)d(memory)-92
+b(.)477 b(The)319 b(argu-)5906 22361 y(men)-31 b(ts)317
+b(of)g(the)g Fu(FCVBBDREINIT)h Fx(routine)f(ha)-31 b(v)g(e)317
+b(the)g(same)f(names)h(and)g(meanings)g(as)f(those)h(of)g
+Fu(FCVBBDINIT)p Fx(.)5906 23689 y(If)449 b(the)g(v)-61
+b(alue)449 b(of)h Fu(MU)f Fx(or)f Fu(ML)h Fx(is)g(b)31
+b(eing)449 b(c)-31 b(hanged,)470 b(then)449 b(a)g(call)h(to)g
+Fu(FCVBBDINIT)g Fx(m)-31 b(ust)449 b(b)31 b(e)449 b(made.)732
+b(Finally)-92 b(,)5906 25017 y(if)459 b Fu(MAXL)g Fx(is)g(b)31
+b(eing)459 b(c)-31 b(hanged,)482 b(then)458 b(a)h(call)h(to)f
+Fu(FCVBBDSPGMR)h Fx(m)-31 b(ust)459 b(b)31 b(e)458 b(made;)504
+b(in)459 b(this)g(case)f(the)h Fv(spgmr)5906 26346 y
+Fx(memory)371 b(is)e(reallo)31 b(cated.)p Black 4553
+28670 a(8.)p Black 493 w Fy(Memory)426 b(deallo)35 b(cation)5906
+30552 y Fx(T)-92 b(o)500 b(free)f(the)h(in)-31 b(ternal)500
+b(memory)h(created)e(b)-31 b(y)500 b(the)f(call)i(to)f
+Fu(FCVBBDINIT)p Fx(,)h(b)31 b(efore)499 b(calling)j Fu(FCVFREE)e
+Fx(and)5906 31880 y Fu(FNVFREEP)p Fx(,)371 b(the)f(user)e(m)-31
+b(ust)369 b(call)p Black Black 9393 34648 a Fu(CALL)582
+b(FCVBBDFREE)p Black Black eop
+%%Page: 82 90
+82 89 bop Black Black Black Black eop
+%%Page: 83 91
+83 90 bop Black Black 4000 15287 a Ft(Chapter)861 b(6)4000
+20832 y Fw(Description)1033 b(of)g(the)g(NVECTOR)4000
+24153 y(mo)86 b(dule)4000 29920 y Fx(The)288 b Fv(sundials)f
+Fx(solv)-31 b(ers)288 b(are)f(written)i(in)f(a)g(data-indep)31
+b(enden)-31 b(t)290 b(manner.)466 b(They)288 b(all)h(op)31
+b(erate)288 b(on)g(generic)g(v)-31 b(ectors)4000 31248
+y(\(of)356 b(t)-31 b(yp)31 b(e)355 b Fu(N)p 8804 31248
+349 45 v 419 w(Vector)p Fx(\))h(through)g(a)f(set)g(of)g(op)31
+b(erations)356 b(de\257ned)f(b)-31 b(y)355 b(the)g(particular)h
+Fv(nvector)f Fx(implemen)-31 b(tation.)4000 32576 y(Users)498
+b(can)i(pro)-31 b(vide)500 b(their)f(o)-31 b(wn)501 b(sp)31
+b(eci\257c)498 b(implemen)-31 b(tation)504 b(of)c(the)f
+Fv(nvector)h Fx(mo)31 b(dule)500 b(or)f(use)g(one)g(of)h(t)-31
+b(w)g(o)4000 33905 y(pro)g(vided)370 b(within)h Fv(sundials)p
+Fx(,)e(a)g(serial)h(and)f(an)h(MPI)e(parallel)j(implemen)-31
+b(tations.)5660 35244 y(The)469 b(generic)h Fu(N)p 12541
+35244 V 418 w(Vector)g Fx(t)-31 b(yp)31 b(e)469 b(is)g(a)g(p)31
+b(oin)-31 b(ter)469 b(to)h(a)f(structure)f(that)i(has)f(an)g(implemen)
+-31 b(tation-dep)31 b(enden)-31 b(t)4000 36572 y Fo(c)-57
+b(ontent)350 b Fx(\257eld)f(con)-31 b(taining)352 b(the)d(description)h
+(and)g(actual)h(data)f(of)f(the)h(v)-31 b(ector,)354
+b(and)c(an)f Fo(ops)f Fx(\257eld)h(p)31 b(oin)-31 b(ting)352
+b(to)e(a)4000 37900 y(structure)369 b(with)h(generic)f(v)-31
+b(ector)370 b(op)31 b(erations.)494 b(The)370 b(t)-31
+b(yp)31 b(e)369 b Fu(N)p 29585 37900 V 419 w(Vector)h
+Fx(is)f(de\257ned)g(as)p Black Black 4000 40156 a Fu(typedef)582
+b(struct)g(_generic_N_Vector)i(*N_Vector;)4000 42813
+y(struct)e(_generic_N_Vector)i({)6325 44141 y(void)d(*content;)6325
+45470 y(struct)h(_generic_N_Vector_Ops)i(*ops;)4000 46798
+y(};)4000 49044 y Fx(The)p 6424 49044 V 867 w Fu(generic)p
+10910 49044 V 419 w(N)p 11910 49044 V 419 w(Vector)p
+15815 49044 V 419 w(Ops)449 b Fx(structure)e(is)h(essen)-31
+b(tially)451 b(a)d(list)h(of)g(p)31 b(oin)-31 b(ters)448
+b(to)h(the)g(v)-61 b(arious)448 b(actual)i(v)-31 b(ector)4000
+50372 y(op)31 b(erations,)371 b(and)e(is)g(de\257ned)g(as)p
+Black Black 4000 52628 a Fu(struct)582 b(_generic_N_Vector_Ops)i({)5162
+53957 y(N_Vector)2326 b(\(*nvclone\)\(N_Vector\);)5162
+55285 y(N_Vector)g(\(*nvcloneempty\)\(N_Vector\);)5162
+56613 y(void)4650 b(\(*nvdestroy\)\(N_Vector\);)5162
+57942 y(void)g(\(*nvspace\)\(N_Vector,)584 b(long)e(int)g(*,)f(long)h
+(int)f(*\);)5162 59270 y(realtype*)1745 b
+(\(*nvgetarraypointer\)\(N_Vector\);)5162 60598 y(void)4650
+b(\(*nvsetarraypointer\)\(realtype)586 b(*,)581 b(N_Vector\);)5162
+61927 y(void)4650 b(\(*nvlinearsum\)\(realtype,)585 b(N_Vector,)d
+(realtype,)h(N_Vector,)f(N_Vector\);)5162 63255 y(void)4650
+b(\(*nvconst\)\(realtype,)584 b(N_Vector\);)5162 64583
+y(void)4650 b(\(*nvprod\)\(N_Vector,)584 b(N_Vector,)f(N_Vector\);)5162
+65912 y(void)4650 b(\(*nvdiv\)\(N_Vector,)584 b(N_Vector,)e
+(N_Vector\);)5162 67240 y(void)4650 b(\(*nvscale\)\(realtype,)584
+b(N_Vector,)f(N_Vector\);)5162 68568 y(void)4650 b
+(\(*nvabs\)\(N_Vector,)584 b(N_Vector\);)5162 69897 y(void)4650
+b(\(*nvinv\)\(N_Vector,)584 b(N_Vector\);)5162 71225
+y(void)4650 b(\(*nvaddconst\)\(N_Vector,)585 b(realtype,)d(N_Vector\);)
+5162 72553 y(realtype)2326 b(\(*nvdotprod\)\(N_Vector,)585
+b(N_Vector\);)5162 73882 y(realtype)2326 b(\(*nvmaxnorm\)\(N_Vector\);)
+5162 75210 y(realtype)g(\(*nvwrmsnorm\)\(N_Vector,)585
+b(N_Vector\);)5162 76539 y(realtype)2326 b
+(\(*nvwrmsnormmask\)\(N_Vector,)585 b(N_Vector,)e(N_Vector\);)5162
+77867 y(realtype)2326 b(\(*nvmin\)\(N_Vector\);)p Black
+Black eop
+%%Page: 84 92
+84 91 bop Black 0 2701 a Fy(84)25219 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black 1162 6974 a Fu(realtype)2326 b(\(*nvwl2norm\)\(N_Vector,)585
+b(N_Vector\);)1162 8302 y(realtype)2326 b(\(*nvl1norm\)\(N_Vector\);)
+1162 9631 y(void)4650 b(\(*nvcompare\)\(realtype,)585
+b(N_Vector,)d(N_Vector\);)1162 10959 y(booleantype)h
+(\(*nvinvtest\)\(N_Vector,)i(N_Vector\);)1162 12287 y(booleantype)e
+(\(*nvconstrmask\)\(N_Vector,)i(N_Vector,)d(N_Vector\);)1162
+13616 y(realtype)2326 b(\(*nvminquotient\)\(N_Vector,)585
+b(N_Vector\);)0 14944 y(};)1660 17158 y Fx(The)569 b(generic)f
+Fv(nvector)g Fx(mo)31 b(dule)569 b(also)f(de\257nes)g(and)g(implemen)
+-31 b(ts)570 b(the)e(v)-31 b(ector)569 b(op)31 b(erations)569
+b(acting)h(on)0 18486 y Fu(N)p 651 18486 349 45 v 419
+w(Vector)p Fx(.)473 b(These)310 b(routines)h(are)f(nothing)i(but)e
+(wrapp)31 b(ers)310 b(for)g(the)g(v)-31 b(ector)311 b(op)31
+b(erations)312 b(de\257ned)e(b)-31 b(y)310 b(a)h(particular)0
+19815 y Fv(nvector)400 b Fx(implemen)-31 b(tation,)412
+b(whic)-31 b(h)401 b(are)f(accessed)f(through)i(the)f
+Fo(ops)f Fx(\257eld)h(of)h(the)f Fu(N)p 37234 19815 V
+418 w(Vector)h Fx(structure.)584 b(T)-92 b(o)0 21143
+y(illustrate)301 b(this)f(p)31 b(oin)-31 b(t)301 b(w)-31
+b(e)299 b(sho)-31 b(w)300 b(b)31 b(elo)-31 b(w)301 b(the)e(implemen)-31
+b(tation)304 b(of)c(a)g(t)-31 b(ypical)301 b(v)-31 b(ector)300
+b(op)31 b(eration)301 b(from)f(the)g(generic)0 22471
+y Fv(nvector)369 b Fx(mo)31 b(dule,)371 b(namely)f Fu(N)p
+13730 22471 V 419 w(VScale)p Fx(,)g(whic)-31 b(h)370
+b(p)31 b(erforms)369 b(the)h(scaling)g(of)g(a)f(v)-31
+b(ector)370 b Fu(x)f Fx(b)-31 b(y)370 b(a)f(scalar)h
+Fu(c)p Fx(:)p Black Black 0 24685 a Fu(void)582 b(N_VScale\(realtype)h
+(c,)f(N_Vector)g(x,)g(N_Vector)g(z\))0 26014 y({)1743
+27342 y(z->ops->nvscale\(c,)i(x,)e(z\);)0 28670 y(})0
+30884 y Fx(T)-92 b(able)370 b(6.1)g(con)-31 b(tains)370
+b(a)f(complete)h(list)g(of)f(all)h(v)-31 b(ector)370
+b(op)31 b(erations)369 b(de\257ned)g(b)-31 b(y)369 b(the)g(generic)g
+Fv(nvector)f Fx(mo)31 b(dule.)1660 32213 y(Finally)-92
+b(,)339 b(note)330 b(that)g(the)f(generic)g Fv(nvector)g
+Fx(mo)31 b(dule)330 b(de\257nes)f(the)g(functions)h Fu(N)p
+35660 32213 V 418 w(VCloneVectorArray)i Fx(and)0 33541
+y Fu(N)p 651 33541 V 419 w(VCloneEmptyVectorArray)p Fx(.)480
+b(Both)324 b(functions)g(create)f(\(b)-31 b(y)323 b(cloning\))i(an)e
+(arra)-31 b(y)324 b(of)f Fu(count)g Fx(v)-61 b(ariables)324
+b(of)f(t)-31 b(yp)31 b(e)0 34869 y Fu(N)p 651 34869 V
+419 w(Vector)p Fx(,)370 b(eac)-31 b(h)370 b(of)f(the)h(same)f(t)-31
+b(yp)31 b(e)370 b(as)f(an)h(existing)g Fu(N)p 23728 34869
+V 419 w(Vector)p Fx(.)493 b(Their)370 b(protot)-31 b(yp)31
+b(es)370 b(are)p Black Black 0 37083 a Fu(N_Vector)582
+b(*N_VCloneVectorArray\(int)j(count,)d(N_Vector)g(w\);)0
+38412 y(N_Vector)g(*N_VCloneEmptyVectorArray\(int)k(count,)c(N_Vector)g
+(w\);)0 40625 y Fx(and)361 b(their)f(de\257nitions)i(are)e(based)g(on)h
+(the)f(implemen)-31 b(tation-sp)31 b(eci\257c)364 b Fu(N)p
+30861 40625 V 419 w(VClone)d Fx(and)f Fu(N)p 37851 40625
+V 419 w(VCloneEmpty)i Fx(op)31 b(era-)0 41954 y(tions,)272
+b(resp)31 b(ectiv)-31 b(ely)-92 b(.)452 b(An)247 b(arra)-31
+b(y)246 b(of)h(v)-61 b(ariables)247 b(of)f(t)-31 b(yp)31
+b(e)247 b Fu(N)p 23481 41954 V 419 w(Vector)g Fx(can)f(b)31
+b(e)246 b(destro)-31 b(y)g(ed)246 b(b)-31 b(y)247 b(calling)h
+Fu(N)p 41137 41954 V 419 w(VDestroyVectorArray)p Fx(,)0
+43282 y(whose)370 b(protot)-31 b(yp)31 b(e)370 b(is)p
+Black Black 0 45496 a Fu(void)582 b(N_VDestroyVectorArray\(N_Vector)j
+(*vs,)d(int)g(count\);)0 47710 y Fx(and)369 b(whose)h(de\257nition)h
+(is)e(based)g(on)g(the)h(implemen)-31 b(tation-sp)31
+b(eci\257c)373 b Fu(N)p 30379 47710 V 419 w(VDestroy)d
+Fx(op)31 b(eration.)1660 49038 y(A)370 b(particular)g(implemen)-31
+b(tation)374 b(of)369 b(the)h Fv(nvector)f Fx(mo)31 b(dule)370
+b(m)-31 b(ust:)p Black 1660 51252 a Fp(\262)p Black 554
+w Fx(Sp)31 b(ecify)370 b(the)f Fo(c)-57 b(ontent)370
+b Fx(\257eld)g(of)f Fu(N)p 16704 51252 V 419 w(Vector)p
+Fx(.)p Black 1660 53466 a Fp(\262)p Black 554 w Fx(De\257ne)455
+b(and)h(implemen)-31 b(t)459 b(the)d(v)-31 b(ector)456
+b(op)31 b(erations.)754 b(Note)456 b(that)h(the)f(names)g(of)h(these)e
+(routines)h(should)2767 54795 y(b)31 b(e)404 b(unique)h(to)h(that)f
+(implemen)-31 b(tation)409 b(in)c(order)f(to)h(p)31 b(ermit)405
+b(using)g(more)g(than)g(one)f Fv(nvector)h Fx(mo)31 b(dule)2767
+56123 y(\(eac)-31 b(h)371 b(with)f(di\256eren)-31 b(t)369
+b Fu(N)p 13230 56123 V 419 w(Vector)h Fx(in)-31 b(ternal)371
+b(data)f(represen)-31 b(tations\))370 b(in)g(the)f(same)h(co)31
+b(de.)p Black 1660 58337 a Fp(\262)p Black 554 w Fx(De\257ne)389
+b(and)h(implemen)-31 b(t)392 b(user-callable)f(constructor)f(and)f
+(destructor)h(routines)g(to)g(create)g(and)f(free)h(an)2767
+59665 y Fu(N)p 3418 59665 V 419 w(Vector)370 b Fx(with)g(the)g(new)f
+Fo(c)-57 b(ontent)370 b Fx(\257eld)f(and)h(with)g Fo(ops)e
+Fx(p)31 b(oin)-31 b(ting)372 b(to)e(the)f(new)g(v)-31
+b(ector)370 b(op)31 b(erations.)p Black 1660 61879 a
+Fp(\262)p Black 554 w Fx(Optionally)-92 b(,)337 b(de\257ne)325
+b(and)g(implemen)-31 b(t)327 b(additional)h(user-callable)e(routines)g
+(acting)g(on)f(the)g(newly)h(de\257ned)2767 63207 y Fu(N)p
+3418 63207 V 419 w(Vector)370 b Fx(\(e.g.,)h(a)f(routine)g(to)g(prin)
+-31 b(t)369 b(the)h(con)-31 b(ten)g(t)371 b(for)e(debugging)i(purp)31
+b(oses\).)p Black 1660 65421 a Fp(\262)p Black 554 w
+Fx(Optionally)-92 b(,)412 b(pro)-31 b(vide)401 b(accessor)f(macros)h
+(as)f(needed)g(for)g(that)i(particular)g(implemen)-31
+b(tation)404 b(to)e(b)31 b(e)399 b(used)2767 66750 y(to)370
+b(access)f(di\256eren)-31 b(t)369 b(parts)h(in)f(the)g
+Fo(c)-57 b(ontent)370 b Fx(\257eld)g(of)f(the)h(newly)g(de\257ned)f
+Fu(N)p 34871 66750 V 418 w(Vector)p Fx(.)p Black Black
+eop
+%%Page: 85 93
+85 92 bop Black 50727 2701 a Fy(85)p 4000 3144 48001
+45 v Black Black 15299 6974 a Fx(T)-92 b(able)370 b(6.1:)494
+b(Description)370 b(of)g(the)f(NVECTOR)i(op)31 b(erations)p
+Black 4000 8451 46657 45 v 3978 9779 45 1329 v 4664 9381
+a Fy(Name)p 15604 9779 V 8367 w(Usage)426 b(and)f(Description)p
+50635 9779 V 4000 9824 46657 45 v 4000 10045 V 3978 11373
+45 1329 v 15604 11373 V 50635 11373 V 3978 12702 V 4664
+12303 a Fu(N)p 5315 12303 349 45 v 419 w(VClone)p 15604
+12702 45 1329 v 7140 w(v)582 b(=)f(N)p 19266 12303 349
+45 v 419 w(VClone\(w\);)p 50635 12702 45 1329 v 3978
+16687 45 3986 v 15604 16687 V 16290 13632 a Fx(Creates)382
+b(a)g(new)g Fu(N)p 24183 13632 349 45 v 419 w(Vector)g
+Fx(of)g(the)g(same)g(t)-31 b(yp)31 b(e)382 b(as)f(an)h(existing)h(v)-31
+b(ector)383 b Fu(w)e Fx(and)16290 14960 y(sets)478 b(the)g
+Fo(ops)f Fx(\257eld.)819 b(It)478 b(do)31 b(es)478 b(not)h(cop)-31
+b(y)479 b(the)f(v)-31 b(ector,)506 b(but)478 b(rather)g(allo)31
+b(cates)16290 16288 y(storage)371 b(for)e(the)g(new)h(v)-31
+b(ector.)p 50635 16687 45 3986 v 3978 18015 45 1329 v
+15604 18015 V 50635 18015 V 3978 19344 V 4664 18945 a
+Fu(N)p 5315 18945 349 45 v 419 w(VCloneEmpty)p 15604
+19344 45 1329 v 4235 w(v)582 b(=)f(N)p 19266 18945 349
+45 v 419 w(VCloneEmpty\(w\);)p 50635 19344 45 1329 v
+3978 22000 45 2657 v 15604 22000 V 16290 20273 a Fx(Creates)382
+b(a)g(new)g Fu(N)p 24183 20273 349 45 v 419 w(Vector)g
+Fx(of)g(the)g(same)g(t)-31 b(yp)31 b(e)382 b(as)f(an)h(existing)h(v)-31
+b(ector)383 b Fu(w)e Fx(and)16290 21602 y(sets)369 b(the)h
+Fo(ops)e Fx(\257eld.)493 b(It)369 b(do)31 b(es)369 b(not)h(allo)31
+b(cate)371 b(storage)f(for)g(the)f(data)h(arra)-31 b(y)-92
+b(.)p 50635 22000 45 2657 v 3978 23329 45 1329 v 15604
+23329 V 50635 23329 V 3978 24657 V 4664 24258 a Fu(N)p
+5315 24258 349 45 v 419 w(VDestroy)p 15604 24657 45 1329
+v 5978 w(N)p 16941 24258 349 45 v 419 w(VDestroy\(v\);)p
+50635 24657 45 1329 v 3978 27314 45 2657 v 15604 27314
+V 16290 25587 a Fx(Destro)-31 b(ys)448 b(the)f Fu(N)p
+23555 25587 349 45 v 419 w(Vector)h(v)f Fx(and)h(frees)e(memory)j(allo)
+31 b(cated)450 b(for)d(its)h(in)-31 b(ternal)16290 26915
+y(data.)p 50635 27314 45 2657 v 3978 28642 45 1329 v
+15604 28642 V 50635 28642 V 3978 29970 V 4664 29572 a
+Fu(N)p 5315 29572 349 45 v 419 w(VSpace)p 15604 29970
+45 1329 v 7140 w(N)p 16941 29572 349 45 v 419 w(VSpace\(nvSpec,)583
+b(&lrw,)f(&liw\);)p 50635 29970 45 1329 v 3978 32627
+45 2657 v 15604 32627 V 16290 30900 a Fx(Returns)275
+b(storage)i(requiremen)-31 b(ts)276 b(for)f(one)h Fu(N)p
+34818 30900 349 45 v 419 w(Vector)p Fx(.)462 b Fu(lrw)276
+b Fx(con)-31 b(tains)277 b(the)f(n)-31 b(um-)16290 32229
+y(b)31 b(er)369 b(of)g(realt)-31 b(yp)31 b(e)371 b(w)-31
+b(ords)369 b(and)g Fu(liw)h Fx(con)-31 b(tains)371 b(the)e(n)-31
+b(um)g(b)31 b(er)369 b(of)h(in)-31 b(teger)370 b(w)-31
+b(ords.)p 50635 32627 45 2657 v 3978 33955 45 1329 v
+15604 33955 V 50635 33955 V 3978 35284 V 4664 34885 a
+Fu(N)p 5315 34885 349 45 v 419 w(VGetArrayPointer)p 15604
+35284 45 1329 v 1330 w(vdata)582 b(=)g(N)p 21591 34885
+349 45 v 418 w(VGetArrayPointer\(v\);)p 50635 35284 45
+1329 v 3978 41925 45 6642 v 15604 41925 V 16290 36214
+a Fx(Returns)290 b(a)g(p)31 b(oin)-31 b(ter)291 b(to)g(a)f
+Fu(realtype)h Fx(arra)-31 b(y)291 b(from)f(the)g Fu(N)p
+39887 36214 349 45 v 419 w(Vector)h(v)p Fx(.)466 b(Note)291
+b(that)16290 37542 y(this)383 b(assumes)f(that)h(the)g(in)-31
+b(ternal)383 b(data)h(in)e Fu(N)p 35663 37542 V 418 w(Vector)h
+Fx(is)f(a)h(con)-31 b(tiguous)384 b(arra)-31 b(y)16290
+38870 y(of)352 b Fu(realtype)p Fx(.)487 b(This)351 b(routine)g(is)g
+(only)g(used)f(in)h(the)g(solv)-31 b(er-sp)31 b(eci\257c)350
+b(in)-31 b(terfaces)16290 40199 y(to)350 b(the)f(dense)f(and)i(banded)f
+(linear)g(solv)-31 b(ers,)354 b(as)348 b(w)-31 b(ell)351
+b(as)e(the)g(in)-31 b(terfaces)349 b(to)h(the)16290 41527
+y(banded)370 b(preconditioners)g(pro)-31 b(vided)370
+b(with)g Fv(sundials)p Fx(.)p 50635 41925 45 6642 v 3978
+43254 45 1329 v 15604 43254 V 50635 43254 V 3978 44582
+V 4664 44184 a Fu(N)p 5315 44184 349 45 v 419 w(VSetArrayPointer)p
+15604 44582 45 1329 v 1330 w(N)p 16941 44184 349 45 v
+419 w(VSetArrayPointer\(vdata,)585 b(v\);)p 50635 44582
+45 1329 v 3978 49896 45 5314 v 15604 49896 V 16290 45512
+a Fx(Ov)-31 b(erwrites)419 b(the)e(data)i(in)f(an)g Fu(N)p
+30049 45512 349 45 v 419 w(Vector)g Fx(with)h(a)f(giv)-31
+b(en)419 b(arra)-31 b(y)418 b(of)g Fu(realtype)p Fx(.)16290
+46840 y(Note)460 b(that)h(this)e(assumes)g(that)h(the)f(in)-31
+b(ternal)460 b(data)h(in)e Fu(N)p 41454 46840 V 418 w(Vector)h
+Fx(is)f(a)g(con-)16290 48169 y(tiguous)374 b(arra)-31
+b(y)373 b(of)g Fu(realtype)p Fx(.)504 b(This)373 b(routine)h(is)e(only)
+i(used)e(in)h(the)f(in)-31 b(terfaces)16290 49497 y(to)370
+b(the)g(dense)e(linear)i(solv)-31 b(er.)p 50635 49896
+45 5314 v 3978 51224 45 1329 v 15604 51224 V 50635 51224
+V 3978 52552 V 4664 52154 a Fu(N)p 5315 52154 349 45
+v 419 w(VLinearSum)p 15604 52552 45 1329 v 4816 w(N)p
+16941 52154 349 45 v 419 w(VLinearSum\(a,)583 b(x,)f(b,)f(y,)g(z\);)p
+50635 52552 45 1329 v 3978 55209 45 2657 v 15604 55209
+V 16290 53482 a Fx(P)-31 b(erforms)397 b(the)f(op)31
+b(eration)398 b Fm(z)j Fx(=)352 b Fm(ax)264 b Fx(+)g
+Fm(by)40 b Fx(,)403 b(where)396 b Fm(a)g Fx(and)g Fm(b)g
+Fx(are)g(scalars)g(and)h Fm(x)16290 54811 y Fx(and)370
+b Fm(y)408 b Fx(are)369 b(of)h(t)-31 b(yp)31 b(e)370
+b Fu(N)p 25645 54811 349 45 v 418 w(Vector)p Fx(:)494
+b Fm(z)30795 54977 y Fk(i)31470 54811 y Fx(=)308 b Fm(ax)33857
+54977 y Fk(i)34471 54811 y Fx(+)246 b Fm(by)36596 54977
+y Fk(i)36965 54811 y Fm(;)430 b(i)308 b Fx(=)g(0)p Fm(;)184
+b(:)g(:)g(:)k(;)c(n)248 b Fp(\241)e Fx(1.)p 50635 55209
+45 2657 v 3978 56537 45 1329 v 15604 56537 V 50635 56537
+V 3978 57866 V 4664 57467 a Fu(N)p 5315 57467 349 45
+v 419 w(VConst)p 15604 57866 45 1329 v 7140 w(N)p 16941
+57467 349 45 v 419 w(VConst\(c,)583 b(z\);)p 50635 57866
+45 1329 v 3978 59194 V 15604 59194 V 16290 58796 a Fx(Sets)370
+b(all)g(comp)31 b(onen)-31 b(ts)370 b(of)g(the)g Fu(N)p
+30084 58796 349 45 v 418 w(Vector)g(z)f Fx(to)h Fu(c)p
+Fx(:)493 b Fm(z)38487 58962 y Fk(i)39163 58796 y Fx(=)307
+b Fm(c;)431 b(i)308 b Fx(=)f(0)p Fm(;)184 b(:)g(:)g(:)189
+b(;)184 b(n)247 b Fp(\241)f Fx(1.)p 50635 59194 45 1329
+v 3978 60522 V 15604 60522 V 50635 60522 V 3978 61851
+V 4664 61452 a Fu(N)p 5315 61452 349 45 v 419 w(VProd)p
+15604 61851 45 1329 v 7721 w(N)p 16941 61452 349 45 v
+419 w(VProd\(x,)582 b(y,)g(z\);)p 50635 61851 45 1329
+v 3978 64507 45 2657 v 15604 64507 V 16290 62781 a Fx(Sets)280
+b(the)f Fu(N)p 21011 62781 349 45 v 419 w(Vector)h(z)f
+Fx(to)h(b)31 b(e)279 b(the)g(comp)31 b(onen)-31 b(t-wise)282
+b(pro)31 b(duct)279 b(of)h(the)f Fu(N)p 46157 62781 V
+419 w(Vector)16290 64109 y Fx(inputs)370 b Fu(x)f Fx(and)h
+Fu(y)p Fx(:)492 b Fm(z)24677 64275 y Fk(i)25353 64109
+y Fx(=)307 b Fm(x)27154 64275 y Fk(i)27523 64109 y Fm(y)28066
+64275 y Fk(i)28434 64109 y Fm(;)431 b(i)308 b Fx(=)f(0)p
+Fm(;)184 b(:)g(:)g(:)189 b(;)184 b(n)247 b Fp(\241)f
+Fx(1.)p 50635 64507 45 2657 v 3978 65836 45 1329 v 15604
+65836 V 50635 65836 V 3978 67164 V 4664 66766 a Fu(N)p
+5315 66766 349 45 v 419 w(VDiv)p 15604 67164 45 1329
+v 8302 w(N)p 16941 66766 349 45 v 419 w(VDiv\(x,)582
+b(y,)g(z\);)p 50635 67164 45 1329 v 3978 72478 45 5314
+v 15604 72478 V 16290 68094 a Fx(Sets)417 b(the)f Fu(N)p
+21285 68094 349 45 v 419 w(Vector)h(z)f Fx(to)h(b)31
+b(e)415 b(the)i(comp)31 b(onen)-31 b(t-wise)418 b(ratio)g(of)f(the)f
+Fu(N)p 46157 68094 V 419 w(Vector)16290 69422 y Fx(inputs)350
+b Fu(x)f Fx(and)g Fu(y)p Fx(:)483 b Fm(z)24607 69588
+y Fk(i)25282 69422 y Fx(=)308 b Fm(x)27084 69588 y Fk(i)27452
+69422 y Fm(=y)28548 69588 y Fk(i)28917 69422 y Fm(;)390
+b(i)308 b Fx(=)g(0)p Fm(;)184 b(:)g(:)g(:)k(;)c(n)207
+b Fp(\241)f Fx(1.)486 b(The)349 b Fm(y)40566 69588 y
+Fk(i)41283 69422 y Fx(ma)-31 b(y)351 b(not)e(b)31 b(e)349
+b(tested)16290 70751 y(for)393 b(0)h(v)-61 b(alues.)564
+b(It)392 b(should)i(only)g(b)31 b(e)392 b(called)i(with)g(an)f
+Fu(x)g Fx(that)h(is)f(guaran)-31 b(teed)395 b(to)16290
+72079 y(ha)-31 b(v)g(e)371 b(all)f(nonzero)g(comp)31
+b(onen)-31 b(ts.)p 50635 72478 45 5314 v 4000 72522 46657
+45 v 3978 73850 45 1329 v 39553 73452 a Fc(con)j(tin)g(ued)341
+b(on)g(next)h(page)p 50635 73850 V 4000 73894 46657 45
+v Black Black eop
+%%Page: 86 94
+86 93 bop Black 0 2701 a Fy(86)25219 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black 0 5911 46657 45 v -22 7240 45 1329 v 664 6841
+a Fc(con)-28 b(tin)g(ued)341 b(from)g(last)h(page)p 46635
+7240 V 0 7284 46657 45 v -22 8612 45 1329 v 664 8214
+a Fy(Name)p 11604 8612 V 8367 w(Usage)426 b(and)f(Description)p
+46635 8612 V 0 8656 46657 45 v 0 8878 V -22 10206 45
+1329 v 11604 10206 V 46635 10206 V -22 11535 V 664 11136
+a Fu(N)p 1315 11136 349 45 v 419 w(VScale)p 11604 11535
+45 1329 v 7140 w(N)p 12941 11136 349 45 v 419 w(VScale\(c,)583
+b(x,)e(z\);)p 46635 11535 45 1329 v -22 14191 45 2657
+v 11604 14191 V 12290 12464 a Fx(Scales)527 b(the)f Fu(N)p
+18427 12464 349 45 v 418 w(Vector)h(x)f Fx(b)-31 b(y)526
+b(the)g(scalar)g Fu(c)g Fx(and)g(returns)f(the)h(result)g(in)g
+Fu(z)p Fx(:)12290 13793 y Fm(z)12805 13959 y Fk(i)13481
+13793 y Fx(=)308 b Fm(cx)15762 13959 y Fk(i)16130 13793
+y Fm(;)431 b(i)308 b Fx(=)f(0)p Fm(;)184 b(:)g(:)g(:)189
+b(;)184 b(n)247 b Fp(\241)f Fx(1.)p 46635 14191 45 2657
+v -22 15520 45 1329 v 11604 15520 V 46635 15520 V -22
+16848 V 664 16449 a Fu(N)p 1315 16449 349 45 v 419 w(VAbs)p
+11604 16848 45 1329 v 8302 w(N)p 12941 16449 349 45 v
+419 w(VAbs\(x,)582 b(y\);)p 46635 16848 45 1329 v -22
+19505 45 2657 v 11604 19505 V 12290 17778 a Fx(Sets)458
+b(the)f(comp)31 b(onen)-31 b(ts)459 b(of)f(the)g Fu(N)p
+26894 17778 349 45 v 418 w(Vector)g(y)g Fx(to)g(b)31
+b(e)457 b(the)h(absolute)g(v)-61 b(alues)458 b(of)12290
+19106 y(the)370 b(comp)31 b(onen)-31 b(ts)370 b(of)g(the)g
+Fu(N)p 24110 19106 V 418 w(Vector)g(x)p Fx(:)493 b Fm(y)30238
+19272 y Fk(i)30913 19106 y Fx(=)308 b Fp(j)p Fm(x)33022
+19272 y Fk(i)33390 19106 y Fp(j)p Fm(;)432 b(i)308 b
+Fx(=)f(0)p Fm(;)184 b(:)g(:)g(:)189 b(;)184 b(n)247 b
+Fp(\241)f Fx(1.)p 46635 19505 45 2657 v -22 20833 45
+1329 v 11604 20833 V 46635 20833 V -22 22161 V 664 21763
+a Fu(N)p 1315 21763 349 45 v 419 w(VInv)p 11604 22161
+45 1329 v 8302 w(N)p 12941 21763 349 45 v 419 w(VInv\(x,)582
+b(z\);)p 46635 22161 45 1329 v -22 27475 45 5314 v 11604
+27475 V 12290 23091 a Fx(Sets)370 b(the)h(comp)31 b(onen)-31
+b(ts)371 b(of)f(the)h Fu(N)p 26457 23091 349 45 v 418
+w(Vector)g(z)f Fx(to)g(b)31 b(e)370 b(the)g(in)-31 b(v)g(erses)370
+b(of)g(the)h(com-)12290 24420 y(p)31 b(onen)-31 b(ts)361
+b(of)f(the)g Fu(N)p 20207 24420 V 419 w(Vector)h(x)p
+Fx(:)488 b Fm(z)26294 24586 y Fk(i)26969 24420 y Fx(=)308
+b(1)p Fm(:)p Fx(0)p Fm(=x)30737 24586 y Fk(i)31107 24420
+y Fm(;)412 b(i)308 b Fx(=)g(0)p Fm(;)184 b(:)g(:)g(:)k(;)c(n)229
+b Fp(\241)e Fx(1.)490 b(This)361 b(routine)12290 25748
+y(ma)-31 b(y)449 b(not)f(c)-31 b(hec)g(k)448 b(for)f(division)i(b)-31
+b(y)448 b(0.)727 b(It)447 b(should)h(b)31 b(e)447 b(called)h(only)g
+(with)h(an)e Fu(x)12290 27076 y Fx(whic)-31 b(h)371 b(is)e(guaran)-31
+b(teed)370 b(to)g(ha)-31 b(v)g(e)370 b(all)h(nonzero)e(comp)31
+b(onen)-31 b(ts.)p 46635 27475 45 5314 v -22 28803 45
+1329 v 11604 28803 V 46635 28803 V -22 30131 V 664 29733
+a Fu(N)p 1315 29733 349 45 v 419 w(VAddConst)p 11604
+30131 45 1329 v 5397 w(N)p 12941 29733 349 45 v 419 w(VAddConst\(x,)583
+b(b,)e(z\);)p 46635 30131 45 1329 v -22 32788 45 2657
+v 11604 32788 V 12290 31061 a Fx(Adds)358 b(the)g(scalar)g
+Fu(b)g Fx(to)h(all)g(comp)31 b(onen)-31 b(ts)359 b(of)f
+Fu(x)g Fx(and)g(returns)f(the)h(result)g(in)g(the)12290
+32390 y Fu(N)p 12941 32390 349 45 v 419 w(Vector)370
+b(z)p Fx(:)493 b Fm(z)19042 32556 y Fk(i)19717 32390
+y Fx(=)308 b Fm(x)21519 32556 y Fk(i)22133 32390 y Fx(+)246
+b Fm(b;)431 b(i)308 b Fx(=)f(0)p Fm(;)184 b(:)g(:)g(:)189
+b(;)184 b(n)247 b Fp(\241)f Fx(1.)p 46635 32788 45 2657
+v -22 34117 45 1329 v 11604 34117 V 46635 34117 V -22
+35445 V 664 35046 a Fu(N)p 1315 35046 349 45 v 419 w(VDotProd)p
+11604 35445 45 1329 v 5978 w(d)582 b(=)f(N)p 15266 35046
+349 45 v 419 w(VDotProd\(x,)h(y\);)p 46635 35445 45 1329
+v -22 38102 45 2657 v 11604 38102 V 12290 36375 a Fx(Returns)607
+b(the)g(v)-61 b(alue)607 b(of)h(the)f(ordinary)g(dot)h(pro)31
+b(duct)607 b(of)g Fu(x)g Fx(and)h Fu(y)p Fx(:)968 b Fm(d)704
+b Fx(=)12290 36873 y Fj(P)13459 37146 y Fk(n)p Fi(\241)p
+Fl(1)13459 38035 y Fk(i)p Fl(=0)15379 37703 y Fm(x)16012
+37869 y Fk(i)16380 37703 y Fm(y)16923 37869 y Fk(i)17292
+37703 y Fx(.)p 46635 38102 V -22 39430 45 1329 v 11604
+39430 V 46635 39430 V -22 40758 V 664 40360 a Fu(N)p
+1315 40360 349 45 v 419 w(VMaxNorm)p 11604 40758 45 1329
+v 5978 w(m)582 b(=)f(N)p 15266 40360 349 45 v 419 w(VMaxNorm\(x\);)p
+46635 40758 45 1329 v -22 42087 V 11604 42087 V 12290
+41688 a Fx(Returns)369 b(the)g(maxim)-31 b(um)372 b(norm)e(of)f(the)h
+Fu(N)p 30281 41688 349 45 v 418 w(Vector)g(x)p Fx(:)493
+b Fm(m)307 b Fx(=)h(max)40374 41854 y Fk(i)40927 41688
+y Fp(j)p Fm(x)41867 41854 y Fk(i)42236 41688 y Fp(j)p
+Fx(.)p 46635 42087 45 1329 v -22 43415 V 11604 43415
+V 46635 43415 V -22 44743 V 664 44345 a Fu(N)p 1315 44345
+349 45 v 419 w(VWrmsNorm)p 11604 44743 45 1329 v 5397
+w(m)582 b(=)f(N)p 15266 44345 349 45 v 419 w(VWrmsNorm\(x,)i(w\))p
+46635 44743 45 1329 v -22 48700 45 3957 v 11604 48700
+V 12290 45673 a Fx(Returns)386 b(the)g(w)-31 b(eigh)g(ted)388
+b(ro)31 b(ot-mean-square)388 b(norm)e(of)h(the)f Fu(N)p
+38652 45673 349 45 v 418 w(Vector)h(x)f Fx(with)12290
+47698 y(w)-31 b(eigh)g(t)372 b(v)-31 b(ector)370 b Fu(w)p
+Fx(:)492 b Fm(m)308 b Fx(=)22948 46088 y Fj(r)p 24055
+46088 9149 45 v 382 x(\263)24716 46868 y(P)25885 47142
+y Fk(n)p Fi(\241)p Fl(1)25885 48030 y Fk(i)p Fl(=0)27620
+47698 y Fx(\()p Fm(x)28683 47864 y Fk(i)29052 47698 y
+Fm(w)29844 47864 y Fk(i)30213 47698 y Fx(\))30643 47379
+y Fl(2)31140 46470 y Fj(\264)31986 47698 y Fm(=n)q Fx(.)p
+46635 48700 45 3957 v -22 50028 45 1329 v 11604 50028
+V 46635 50028 V -22 51357 V 664 50958 a Fu(N)p 1315 50958
+349 45 v 419 w(VWrmsNormMask)p 11604 51357 45 1329 v
+3073 w(m)582 b(=)f(N)p 15266 50958 349 45 v 419 w(VWrmsNormMask\(x,)i
+(w,)f(id\);)p 46635 51357 45 1329 v -22 55342 45 3986
+v 11604 55342 V 12290 52287 a Fx(Returns)383 b(the)g(w)-31
+b(eigh)g(ted)385 b(ro)31 b(ot)384 b(mean)f(square)g(norm)g(of)h(the)f
+Fu(N)p 38658 52287 349 45 v 419 w(Vector)g(x)g Fx(with)12290
+53615 y(w)-31 b(eigh)g(t)482 b(v)-31 b(ector)480 b Fu(w)f
+Fx(built)h(using)g(only)g(the)f(elemen)-31 b(ts)481 b(of)e
+Fu(x)g Fx(corresp)31 b(onding)480 b(to)12290 54943 y(nonzero)370
+b(elemen)-31 b(ts)370 b(of)g(the)f Fu(N)p 24758 54943
+V 419 w(Vector)h(id)p Fx(:)p 46635 55342 45 3986 v -22
+58043 45 2702 v 11604 58043 V 12290 57041 a Fm(m)308
+b Fx(=)14738 55430 y Fj(r)p 15845 55430 13249 45 v 382
+x(\263)16506 56211 y(P)17675 56484 y Fk(n)p Fi(\241)p
+Fl(1)17675 57373 y Fk(i)p Fl(=0)19411 57041 y Fx(\()p
+Fm(x)20474 57207 y Fk(i)20842 57041 y Fm(w)21634 57207
+y Fk(i)22003 57041 y Fx(sign)q(\()p Fm(id)25303 57207
+y Fk(i)25672 57041 y Fx(\)\))26532 56721 y Fl(2)27030
+55812 y Fj(\264)27876 57041 y Fm(=n)p Fx(.)p 46635 58043
+45 2702 v -22 59371 45 1329 v 11604 59371 V 46635 59371
+V -22 60700 V 664 60301 a Fu(N)p 1315 60301 349 45 v
+419 w(VMin)p 11604 60700 45 1329 v 8302 w(m)582 b(=)f(N)p
+15266 60301 349 45 v 419 w(VMin\(x\);)p 46635 60700 45
+1329 v -22 62028 V 11604 62028 V 12290 61629 a Fx(Returns)369
+b(the)g(smallest)i(elemen)-31 b(t)371 b(of)e(the)h Fu(N)p
+30567 61629 349 45 v 418 w(Vector)g(x)p Fx(:)493 b Fm(m)307
+b Fx(=)h(min)40445 61795 y Fk(i)40998 61629 y Fm(x)41631
+61795 y Fk(i)41999 61629 y Fx(.)p 46635 62028 45 1329
+v -22 63356 V 11604 63356 V 46635 63356 V -22 64685 V
+664 64286 a Fu(N)p 1315 64286 349 45 v 419 w(VWL2Norm)p
+11604 64685 45 1329 v 5978 w(m)582 b(=)f(N)p 15266 64286
+349 45 v 419 w(VWL2Norm\(x,)h(w\);)p 46635 64685 45 1329
+v -22 67977 45 3293 v 11604 67977 V 12290 65614 a Fx(Returns)279
+b(the)g(w)-31 b(eigh)g(ted)281 b(Euclidean)f Fm(`)28235
+65780 y Fl(2)29011 65614 y Fx(norm)f(of)g(the)g Fu(N)p
+35451 65614 349 45 v 419 w(Vector)g(x)g Fx(with)h(w)-31
+b(eigh)g(t)12290 67393 y(v)g(ector)370 b Fu(w)p Fx(:)493
+b Fm(m)307 b Fx(=)19443 66029 y Fj(q)p 20550 66029 6424
+45 v 533 x(P)21718 66836 y Fk(n)p Fi(\241)p Fl(1)21718
+67725 y Fk(i)p Fl(=0)23454 67393 y Fx(\()p Fm(x)24517
+67559 y Fk(i)24886 67393 y Fm(w)25678 67559 y Fk(i)26047
+67393 y Fx(\))26477 67073 y Fl(2)26974 67393 y Fx(.)p
+46635 67977 45 3293 v -22 69306 45 1329 v 11604 69306
+V 46635 69306 V -22 70634 V 664 70235 a Fu(N)p 1315 70235
+349 45 v 419 w(VL1Norm)p 11604 70634 45 1329 v 6559 w(m)582
+b(=)f(N)p 15266 70235 349 45 v 419 w(VL1Norm\(x\);)p
+46635 70634 45 1329 v -22 72088 45 1455 v 11604 72088
+V 12290 71690 a Fx(Returns)369 b(the)g Fm(`)18864 71856
+y Fl(1)19730 71690 y Fx(norm)h(of)f(the)h Fu(N)p 26442
+71690 349 45 v 418 w(Vector)g(x)p Fx(:)493 b Fm(m)307
+b Fx(=)34475 70860 y Fj(P)35643 71133 y Fk(n)p Fi(\241)p
+Fl(1)35643 72022 y Fk(i)p Fl(=0)37563 71690 y Fp(j)p
+Fm(x)38503 71856 y Fk(i)38872 71690 y Fp(j)p Fx(.)p 46635
+72088 45 1455 v 0 72133 46657 45 v -22 73461 45 1329
+v 35553 73062 a Fc(con)-28 b(tin)g(ued)341 b(on)g(next)h(page)p
+46635 73461 V 0 73505 46657 45 v Black Black eop
+%%Page: 87 95
+87 94 bop Black 4000 2701 a Fy(6.1)425 b(The)g(NVECTOR)p
+15238 2701 382 45 v 459 w(SERIAL)f(implemen)-35 b(tation)21292
+b(87)p 4000 3144 48001 45 v Black 4000 5911 46657 45
+v 3978 7240 45 1329 v 4664 6841 a Fc(con)-28 b(tin)g(ued)341
+b(from)g(last)h(page)p 50635 7240 V 4000 7284 46657 45
+v 3978 8612 45 1329 v 4664 8214 a Fy(Name)p 15604 8612
+V 8367 w(Usage)426 b(and)f(Description)p 50635 8612 V
+4000 8656 46657 45 v 4000 8878 V 3978 10206 45 1329 v
+15604 10206 V 50635 10206 V 3978 11535 V 4664 11136 a
+Fu(N)p 5315 11136 349 45 v 419 w(VCompare)p 15604 11535
+45 1329 v 5978 w(N)p 16941 11136 349 45 v 419 w(VCompare\(c,)583
+b(x,)e(z\);)p 50635 11535 45 1329 v 3978 14191 45 2657
+v 15604 14191 V 16290 12464 a Fx(Compares)253 b(the)f(comp)31
+b(onen)-31 b(ts)253 b(of)f(the)g Fu(N)p 32697 12464 349
+45 v 418 w(Vector)h(x)e Fx(to)i(the)f(scalar)g Fu(c)f
+Fx(and)h(returns)16290 13793 y(an)370 b Fu(N)p 18479
+13793 V 419 w(Vector)f(z)h Fx(suc)-31 b(h)368 b(that:)494
+b Fm(z)29474 13959 y Fk(i)30150 13793 y Fx(=)308 b(1)p
+Fm(:)p Fx(0)370 b(if)g Fp(j)p Fm(x)35057 13959 y Fk(i)35425
+13793 y Fp(j)308 b(\270)g Fm(c)369 b Fx(and)g Fm(z)40724
+13959 y Fk(i)41400 13793 y Fx(=)307 b(0)p Fm(:)p Fx(0)371
+b(otherwise.)p 50635 14191 45 2657 v 3978 15520 45 1329
+v 15604 15520 V 50635 15520 V 3978 16848 V 4664 16449
+a Fu(N)p 5315 16449 349 45 v 419 w(VInvTest)p 15604 16848
+45 1329 v 5978 w(t)582 b(=)f(N)p 19266 16449 349 45 v
+419 w(VInvTest\(x,)h(z\);)p 50635 16848 45 1329 v 3978
+23490 45 6642 v 15604 23490 V 16290 17778 a Fx(Sets)596
+b(the)g(comp)31 b(onen)-31 b(ts)596 b(of)h(the)e Fu(N)p
+31584 17778 349 45 v 419 w(Vector)h(z)g Fx(to)g(b)31
+b(e)595 b(the)h(in)-31 b(v)g(erses)595 b(of)h(the)16290
+19106 y(comp)31 b(onen)-31 b(ts)585 b(of)e(the)g Fu(N)p
+26844 19106 V 419 w(Vector)g(x)p Fx(,)637 b(with)584
+b(prior)f(testing)h(for)f(zero)g(v)-61 b(alues:)16290
+20434 y Fm(z)16805 20600 y Fk(i)17636 20434 y Fx(=)463
+b(1)p Fm(:)p Fx(0)p Fm(=x)21559 20600 y Fk(i)21929 20434
+y Fm(;)493 b(i)463 b Fx(=)f(0)p Fm(;)184 b(:)g(:)g(:)189
+b(;)184 b(n)309 b Fp(\241)f Fx(1.)772 b(This)463 b(routine)g(returns)e
+Fu(TRUE)h Fx(if)h(all)h(com-)16290 21763 y(p)31 b(onen)-31
+b(ts)333 b(of)g Fu(x)f Fx(are)g(nonzero)g(\(successful)g(in)-31
+b(v)g(ersion\))334 b(and)e(returns)f Fu(FALSE)i Fx(oth-)16290
+23091 y(erwise.)p 50635 23490 45 6642 v 3978 24818 45
+1329 v 15604 24818 V 50635 24818 V 3978 26146 V 4664
+25748 a Fu(N)p 5315 25748 349 45 v 419 w(VConstrMask)p
+15604 26146 45 1329 v 4235 w(t)582 b(=)f(N)p 19266 25748
+349 45 v 419 w(VConstrMask\(c,)i(x,)e(m\);)p 50635 26146
+45 1329 v 3978 34117 45 7971 v 15604 34117 V 16290 27076
+a Fx(P)-31 b(erforms)477 b(the)g(follo)-31 b(wing)481
+b(constrain)-31 b(t)478 b(tests:)707 b Fm(x)37081 27242
+y Fk(i)37936 27076 y Fm(>)487 b Fx(0)477 b(if)g Fm(c)41915
+27242 y Fk(i)42770 27076 y Fx(=)486 b(2,)505 b Fm(x)46115
+27242 y Fk(i)46969 27076 y Fp(\270)487 b Fx(0)477 b(if)16290
+28405 y Fm(c)16769 28571 y Fk(i)17542 28405 y Fx(=)403
+b(1,)442 b Fm(x)20741 28571 y Fk(i)21513 28405 y Fp(\267)403
+b Fx(0)427 b(if)g Fm(c)25308 28571 y Fk(i)26080 28405
+y Fx(=)404 b Fp(\241)p Fx(1,)442 b Fm(x)30141 28571 y
+Fk(i)30912 28405 y Fm(<)404 b Fx(0)427 b(if)g Fm(c)34708
+28571 y Fk(i)35480 28405 y Fx(=)404 b Fp(\241)p Fx(2.)665
+b(There)427 b(is)g(no)g(constrain)-31 b(t)16290 29733
+y(on)424 b Fm(x)18515 29899 y Fk(i)19307 29733 y Fx(if)g
+Fm(c)20855 29899 y Fk(i)21622 29733 y Fx(=)398 b(0.)657
+b(This)424 b(routine)g(returns)f Fu(FALSE)h Fx(if)g(an)-31
+b(y)425 b(elemen)-31 b(t)425 b(failed)g(the)16290 31061
+y(constrain)-31 b(t)418 b(test,)429 b Fu(TRUE)417 b Fx(if)g(all)g
+(passed.)634 b(It)416 b(also)h(sets)f(a)h(mask)g(v)-31
+b(ector)417 b Fu(m)p Fx(,)428 b(with)16290 32390 y(elemen)-31
+b(ts)423 b(equal)g(to)f(1)p Fm(:)p Fx(0)h(where)e(the)h(constrain)-31
+b(t)423 b(test)f(failed,)436 b(and)422 b(0)p Fm(:)p Fx(0)h(where)16290
+33718 y(the)370 b(test)f(passed.)493 b(This)369 b(routine)h(is)f(used)g
+(only)h(for)f(constrain)-31 b(t)371 b(c)-31 b(hec)g(king.)p
+50635 34117 V 3978 35445 45 1329 v 15604 35445 V 50635
+35445 V 3978 36773 V 4664 36375 a Fu(N)p 5315 36375 349
+45 v 419 w(VMinQuotient)p 15604 36773 45 1329 v 3654
+w(minq)582 b(=)g(N)p 21010 36375 349 45 v 418 w(VMinQuotient\(num,)i
+(denom\);)p 50635 36773 45 1329 v 3978 42087 45 5314
+v 15604 42087 V 16290 37703 a Fx(This)367 b(routine)g(returns)e(the)i
+(minim)-31 b(um)368 b(of)f(the)g(quotien)-31 b(ts)368
+b(obtained)g(b)-31 b(y)366 b(term-)16290 39031 y(wise)294
+b(dividing)h Fu(num)24560 39197 y Fk(i)25221 39031 y
+Fx(b)-31 b(y)293 b Fu(denom)29587 39197 y Fk(i)29957
+39031 y Fx(.)467 b(A)292 b(zero)h(elemen)-31 b(t)294
+b(in)g Fu(denom)f Fx(will)i(b)31 b(e)292 b(skipp)31 b(ed.)16290
+40360 y(If)348 b(no)g(suc)-31 b(h)348 b(quotien)-31 b(ts)350
+b(are)d(found,)354 b(then)348 b(the)g(large)h(v)-61 b(alue)348
+b Fu(BIG)p 43097 40360 349 45 v 419 w(REAL)g Fx(\(de\257ned)16290
+41688 y(in)370 b(the)f(header)g(\257le)h Fu(sundialstypes.h)p
+Fx(\))h(is)f(returned.)p 50635 42087 45 5314 v 3978 43415
+45 1329 v 15604 43415 V 50635 43415 V 4000 43459 46657
+45 v 4000 48339 a Fs(6.1)1793 b(The)598 b(NVECTOR)p 21012
+48339 538 45 v 646 w(SERIAL)g(implemen)-50 b(tation)4000
+50897 y Fx(The)531 b(serial)g(implemen)-31 b(tation)535
+b(of)d(the)f Fv(nvector)f Fx(mo)31 b(dule)532 b(pro)-31
+b(vided)532 b(with)g Fv(sundials)p Fx(,)570 b Fv(nvector)p
+47952 50897 368 45 v 441 w(serial)p Fx(,)4000 52225 y(de\257nes)351
+b(the)g Fo(c)-57 b(ontent)352 b Fx(\257eld)g(of)g Fu(N)p
+17639 52225 349 45 v 418 w(Vector)g Fx(to)g(b)31 b(e)351
+b(a)h(structure)f(con)-31 b(taining)354 b(the)d(length)i(of)f(the)f(v)
+-31 b(ector,)356 b(a)c(p)31 b(oin)-31 b(ter)4000 53554
+y(to)249 b(the)g(b)31 b(eginning)250 b(of)f(a)f(con)-31
+b(tiguous)251 b(data)f(arra)-31 b(y)-92 b(,)273 b(and)249
+b(a)f(b)31 b(o)g(olean)250 b(\260ag)f Fo(own)p 35513
+53554 340 45 v 407 w(data)e Fx(whic)-31 b(h)250 b(sp)31
+b(eci\257es)247 b(the)i(o)-31 b(wnership)4000 54882 y(of)370
+b Fo(data)p Fx(.)p Black Black 4000 57382 a Fu(struct)582
+b(_N_VectorContent_Serial)j({)5162 58711 y(long)d(int)g(length;)5162
+60039 y(booleantype)h(own_data;)5162 61367 y(realtype)g(*data;)4000
+62696 y(};)4000 65124 y Fx(The)438 b(follo)-31 b(wing)441
+b(\257v)-31 b(e)438 b(macros)g(are)g(pro)-31 b(vided)438
+b(to)h(access)e(the)h(con)-31 b(ten)g(t)440 b(of)e(an)g
+Fv(nvector)p 41956 65124 368 45 v 440 w(serial)g Fx(v)-31
+b(ector.)699 b(The)4000 66453 y(su\261x)p 6997 66453
+349 45 v 788 w Fu(S)369 b Fx(in)g(the)h(names)f(denotes)h(serial)f(v)
+-31 b(ersion.)p Black 5660 68881 a Fp(\262)p Black 554
+w Fu(NV)p 7999 68881 V 419 w(CONTENT)p 12485 68881 V
+420 w(S)6767 70796 y Fx(This)370 b(routine)g(giv)-31
+b(es)370 b(access)f(to)h(the)f(con)-31 b(ten)g(ts)371
+b(of)e(the)h(serial)f(v)-31 b(ector)370 b Fu(N)p 36768
+70796 V 419 w(Vector)p Fx(.)6767 72710 y(The)332 b(assignmen)-31
+b(t)333 b Fu(v)p 15319 72710 V 419 w(cont)e Fx(=)h Fu(NV)p
+20748 72710 V 418 w(CONTENT)p 25233 72710 V 420 w(S\(v\))g
+Fx(sets)f Fu(v)p 31017 72710 V 418 w(cont)h Fx(to)g(b)31
+b(e)331 b(a)h(p)31 b(oin)-31 b(ter)332 b(to)g(the)g(serial)g
+Fu(N)p 48165 72710 V 418 w(Vector)6767 74038 y Fx(con)-31
+b(ten)g(t)371 b(structure.)6767 75953 y(Implemen)-31
+b(tation:)6767 77867 y Fu(#define)583 b(NV_CONTENT_S\(v\))g(\()e
+(\(N_VectorContent_Serial\)\(v->content\))587 b(\))p
+Black Black eop
+%%Page: 88 96
+88 95 bop Black 0 2701 a Fy(88)25219 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black Black 1660 6974 a Fp(\262)p Black 554 w Fu(NV)p
+3999 6974 349 45 v 419 w(OWN)p 6161 6974 V 419 w(DATA)p
+8904 6974 V 419 w(S)p Fx(,)370 b Fu(NV)p 11743 6974 V
+418 w(DATA)p 14485 6974 V 419 w(S)p Fx(,)g Fu(NV)p 17324
+6974 V 419 w(LENGTH)p 21229 6974 V 419 w(S)2767 8651
+y Fx(These)f(macros)h(giv)-31 b(e)370 b(individual)i(access)d(to)h(the)
+f(parts)g(of)h(the)f(con)-31 b(ten)g(t)371 b(of)f(a)f(serial)h
+Fu(N)p 39410 8651 V 419 w(Vector)p Fx(.)2767 10327 y(The)443
+b(assignmen)-31 b(t)445 b Fu(v)p 11542 10327 V 418 w(data)582
+b(=)f(NV)p 17190 10327 V 419 w(DATA)p 19933 10327 V 419
+w(S\(v\))443 b Fx(sets)g Fu(v)p 25939 10327 V 418 w(data)g
+Fx(to)h(b)31 b(e)442 b(a)h(p)31 b(oin)-31 b(ter)444 b(to)f(the)g
+(\257rst)f(comp)31 b(onen)-31 b(t)2767 11656 y(of)391
+b(the)e(data)i(for)f(the)g Fu(N)p 12810 11656 V 418 w(Vector)h(v)p
+Fx(.)554 b(The)389 b(assignmen)-31 b(t)392 b Fu(NV)p
+27726 11656 V 419 w(DATA)p 30469 11656 V 419 w(S\(v\))581
+b(=)h(v)p 35537 11656 V 418 w(data)390 b Fx(sets)f(the)h(comp)31
+b(onen)-31 b(t)2767 12984 y(arra)g(y)370 b(of)g Fu(v)f
+Fx(to)h(b)31 b(e)368 b Fu(v)p 11385 12984 V 419 w(data)i
+Fx(b)-31 b(y)369 b(storing)h(the)g(p)31 b(oin)-31 b(ter)370
+b Fu(v)p 26038 12984 V 418 w(data)p Fx(.)2767 14661 y(The)308
+b(assignmen)-31 b(t)309 b Fu(v)p 11271 14661 V 418 w(len)582
+b(=)f(NV)p 16338 14661 V 419 w(LENGTH)p 20243 14661 V
+419 w(S\(v\))308 b Fx(sets)e Fu(v)p 25977 14661 V 419
+w(len)h Fx(to)h(b)31 b(e)307 b(the)g(length)i(of)e Fu(v)p
+Fx(.)472 b(On)307 b(the)h(other)f(hand,)2767 15989 y(the)370
+b(call)g Fu(NV)p 7935 15989 V 419 w(LENGTH)p 11840 15989
+V 419 w(S\(v\))582 b(=)f(len)p 18070 15989 V 419 w(v)369
+b Fx(sets)g(the)h(length)g(of)g Fu(v)f Fx(to)h(b)31 b(e)368
+b Fu(len)p 33706 15989 V 419 w(v)p Fx(.)2767 17666 y(Implemen)-31
+b(tation:)2767 19342 y Fu(#define)583 b(NV_OWN_DATA_S\(v\))g(\()e
+(NV_CONTENT_S\(v\)->own_data)k(\))2767 21019 y(#define)e
+(NV_DATA_S\(v\))g(\()e(NV_CONTENT_S\(v\)->data)j(\))2767
+22696 y(#define)f(NV_LENGTH_S\(v\))g(\()e(NV_CONTENT_S\(v\)->length)k
+(\))p Black 1660 24721 a Fp(\262)p Black 554 w Fu(NV)p
+3999 24721 V 419 w(Ith)p 6161 24721 V 419 w(S)2767 26397
+y Fx(This)370 b(macro)g(giv)-31 b(es)370 b(access)f(to)h(the)f
+(individual)j(comp)31 b(onen)-31 b(ts)370 b(of)g(the)f(data)i(arra)-31
+b(y)369 b(of)h(an)f Fu(N)p 41187 26397 V 419 w(Vector)p
+Fx(.)2767 28074 y(The)420 b(assignmen)-31 b(t)421 b Fu(r)582
+b(=)f(NV)p 14401 28074 V 419 w(Ith)p 16563 28074 V 419
+w(S\(v,i\))420 b Fx(sets)f Fu(r)g Fx(to)h(b)31 b(e)419
+b(the)h(v)-61 b(alue)420 b(of)g(the)g Fu(i)p Fx(-th)g(comp)31
+b(onen)-31 b(t)421 b(of)f Fu(v)p Fx(.)644 b(The)2767
+29402 y(assignmen)-31 b(t)371 b Fu(NV)p 9700 29402 V
+419 w(Ith)p 11862 29402 V 419 w(S\(v,i\))582 b(=)f(r)369
+b Fx(sets)g(the)g(v)-61 b(alue)370 b(of)g(the)f Fu(i)p
+Fx(-th)h(comp)31 b(onen)-31 b(t)371 b(of)e Fu(v)h Fx(to)f(b)31
+b(e)369 b Fu(r)p Fx(.)2767 31079 y(Here)g Fm(i)g Fx(ranges)h(from)f(0)h
+(to)g Fm(n)246 b Fp(\241)g Fx(1)370 b(for)f(a)g(v)-31
+b(ector)370 b(of)g(length)g Fm(n)p Fx(.)2767 32756 y(Implemen)-31
+b(tation:)2767 34432 y Fu(#define)583 b(NV_Ith_S\(v,i\))g(\()e
+(NV_DATA_S\(v\)[i])i(\))0 36268 y Fx(The)342 b Fv(nvector)p
+6975 36268 368 45 v 441 w(serial)f Fx(mo)31 b(dule)343
+b(de\257nes)e(serial)i(implemen)-31 b(tations)345 b(of)e(all)g(v)-31
+b(ector)343 b(op)31 b(erations)343 b(listed)g(in)f(T)-92
+b(able)0 37597 y(6.1)370 b(and)g(pro)-31 b(vides)369
+b(the)h(follo)-31 b(wing)373 b(user-callable)d(routines:)p
+Black 1660 39433 a Fp(\262)p Black 554 w Fu(N)p 3418
+39433 349 45 v 419 w(VNew)p 6161 39433 V 419 w(Serial)2767
+41110 y Fx(This)448 b(function)g(creates)f(and)g(allo)31
+b(cates)449 b(memory)f(for)f(a)g(serial)g Fu(N)p 31152
+41110 V 419 w(Vector)p Fx(.)726 b(Its)447 b(only)g(argumen)-31
+b(t)449 b(is)e(the)2767 42438 y(v)-31 b(ector)370 b(length.)2767
+44115 y Fu(N_Vector)583 b(N_VNew_Serial\(long)h(int)d(vec_length\);)p
+Black 1660 46140 a Fp(\262)p Black 554 w Fu(N)p 3418
+46140 V 419 w(VNewEmpty)p 9066 46140 V 420 w(Serial)2767
+47816 y Fx(This)370 b(function)h(creates)e(a)g(new)h(serial)f
+Fu(N)p 20078 47816 V 419 w(Vector)h Fx(with)g(an)f(empt)-31
+b(y)371 b(\()p Fu(NULL)p Fx(\))f(data)h(arra)-31 b(y)-92
+b(.)2767 49493 y Fu(N_Vector)583 b(N_VNewEmpty_Serial\(long)h(int)e
+(vec_length\);)p Black 1660 51518 a Fp(\262)p Black 554
+w Fu(N)p 3418 51518 V 419 w(VMake)p 6742 51518 V 419
+w(Serial)2767 53195 y Fx(This)370 b(function)h(creates)e(and)g(allo)31
+b(cates)371 b(memory)g(for)e(a)g(serial)h(v)-31 b(ector)370
+b(with)g(user-pro)-31 b(vided)369 b(data)i(arra)-31 b(y)-92
+b(.)2767 54871 y Fu(N_Vector)583 b(N_VMake_Serial\(long)h(int)d
+(vec_length,)i(realtype)f(*v_data\);)p Black 1660 56896
+a Fp(\262)p Black 554 w Fu(N)p 3418 56896 V 419 w(VNewVectorArray)p
+12552 56896 V 421 w(Serial)2767 58573 y Fx(This)370 b(function)h
+(creates)e(an)g(arra)-31 b(y)370 b(of)f Fu(count)h Fx(serial)g(v)-31
+b(ectors.)2767 60250 y Fu(N_Vector)583 b
+(*N_VNewVectorArray_Serial\(int)i(count,)d(long)g(int)g(vec_length\);)p
+Black 1660 62275 a Fp(\262)p Black 554 w Fu(N)p 3418
+62275 V 419 w(VNewVectorArrayEmpty)p 15457 62275 V 421
+w(Serial)2767 63951 y Fx(This)369 b(function)g(creates)f(an)g(arra)-31
+b(y)369 b(of)f Fu(count)h Fx(serial)f(v)-31 b(ectors,)369
+b(eac)-31 b(h)369 b(with)g(an)f(empt)-31 b(y)370 b(\()p
+Fu(NULL)p Fx(\))f(data)g(arra)-31 b(y)-92 b(.)2767 65628
+y Fu(N_Vector)583 b(*N_VNewVectorArrayEmpty_Serial\(int)j(count,)c
+(long)g(int)f(vec_length\);)p Black 1660 67653 a Fp(\262)p
+Black 554 w Fu(N)p 3418 67653 V 419 w(VDestroyVectorArray)p
+14876 67653 V 421 w(Serial)2767 69330 y Fx(This)305 b(function)g(frees)
+e(memory)i(allo)31 b(cated)307 b(for)d(the)g(arra)-31
+b(y)305 b(of)f Fu(count)h Fx(v)-61 b(ariables)304 b(of)h(t)-31
+b(yp)31 b(e)304 b Fu(N)p 40352 69330 V 419 w(Vector)h
+Fx(created)2767 70658 y(with)371 b Fu(N)p 5940 70658
+V 418 w(VNewVectorArray)p 15073 70658 V 421 w(Serial)f
+Fx(or)f(with)h Fu(N)p 23808 70658 V 419 w(VNewVectorArrayEmpty)p
+35847 70658 V 421 w(Serial)p Fx(.)2767 72335 y Fu(void)582
+b(N_VDestroyVectorArray_Serial\(N_Vector)587 b(*vs,)582
+b(int)f(count\);)p Black 1660 74360 a Fp(\262)p Black
+554 w Fu(N)p 3418 74360 V 419 w(VPrint)p 7323 74360 V
+419 w(Serial)2767 76036 y Fx(This)370 b(function)h(prin)-31
+b(ts)369 b(the)g(con)-31 b(ten)g(t)371 b(of)f(a)f(serial)h(v)-31
+b(ector)370 b(to)g Fu(stdout)p Fx(.)2767 77713 y Fu(void)582
+b(N_VPrint_Serial\(N_Vector)j(v\);)p Black Black eop
+%%Page: 89 97
+89 96 bop Black 4000 2701 a Fy(6.2)425 b(The)g(NVECTOR)p
+15238 2701 382 45 v 459 w(P)-106 b(ARALLEL)424 b(implemen)-35
+b(tation)19224 b(89)p 4000 3144 48001 45 v Black 4000
+6974 a(Notes)p Black 5660 9180 a Fp(\262)p Black 554
+w Fx(When)438 b(lo)31 b(oping)440 b(o)-31 b(v)g(er)438
+b(the)g(comp)31 b(onen)-31 b(ts)439 b(of)g(an)f Fu(N)p
+28203 9180 349 45 v 419 w(Vector)g(v)p Fx(,)456 b(it)438
+b(is)g(more)h(e\261cien)-31 b(t)439 b(to)g(\257rst)e(obtain)j(the)6767
+10508 y(comp)31 b(onen)-31 b(t)317 b(arra)-31 b(y)315
+b(via)h Fu(v)p 17624 10508 V 419 w(data)582 b(=)f(NV)p
+23273 10508 V 419 w(DATA)p 26016 10508 V 419 w(S\(v\))315
+b Fx(and)g(then)g(access)g Fu(v)p 37438 10508 V 418 w(data[i])h
+Fx(within)h(the)e(lo)31 b(op)316 b(than)6767 11836 y(it)370
+b(is)f(to)h(use)f Fu(NV)p 13485 11836 V 419 w(Ith)p 15647
+11836 V 419 w(S\(v,i\))g Fx(within)i(the)f(lo)31 b(op.)p
+Black 5660 14823 a Fp(\262)p Black 1682 w @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Ff(!)1422 b Fx(The)294 b Fv(nvector)p
+16528 14823 368 45 v 441 w(serial)f Fx(constructor)i(functions)f
+Fu(N)p 31689 14823 349 45 v 419 w(VNewEmpty)p 37337 14823
+V 420 w(Serial)p Fx(,)310 b Fu(N)p 42441 14823 V 418
+w(VMake)p 45764 14823 V 420 w(Serial)p Fx(,)g(and)6767
+16152 y Fu(N)p 7418 16152 V 419 w(VNewVectorArrayEmpty)p
+19457 16152 V 421 w(Serial)247 b Fx(set)f(the)h(\257eld)f
+Fo(own)p 31197 16152 340 45 v 407 w(data)f Fx(=)h Fu(FALSE)p
+Fx(.)h(The)g(functions)g Fu(N)p 45866 16152 349 45 v
+419 w(VDestroy)p 50933 16152 V 419 w(Serial)6767 17480
+y Fx(and)j Fu(N)p 9451 17480 V 418 w(VDestroyVectorArray)p
+20908 17480 V 421 w(Serial)g Fx(will)h(not)e(attempt)i(to)f(free)e(the)
+i(p)31 b(oin)-31 b(ter)249 b Fo(data)f Fx(for)h(an)-31
+b(y)250 b Fu(N)p 48165 17480 V 418 w(Vector)6767 18808
+y Fx(with)328 b Fo(own)p 11238 18808 340 45 v 407 w(data)d
+Fx(set)i(to)g Fu(FALSE)p Fx(.)g(In)f(suc)-31 b(h)326
+b(a)h(case,)335 b(it)327 b(is)f(the)h(user's)e(resp)31
+b(onsibilit)-31 b(y)328 b(to)g(deallo)31 b(cate)328 b(the)f
+Fo(data)6767 20137 y Fx(p)31 b(oin)-31 b(ter.)p Black
+5660 23124 a Fp(\262)p Black 1682 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+
+
+ at endspecial Ff(!)1506 b Fx(T)-92 b(o)377 b(maximize)j(e\261ciency)-92
+b(,)380 b(v)-31 b(ector)378 b(op)31 b(erations)378 b(in)g(the)f
+Fv(nvector)p 37943 23124 368 45 v 441 w(serial)f Fx(implemen)-31
+b(tation)382 b(that)6767 24452 y(ha)-31 b(v)g(e)470 b(more)g(than)f
+(one)g Fu(N)p 17752 24452 349 45 v 419 w(Vector)h Fx(argumen)-31
+b(t)470 b(do)f(not)h(c)-31 b(hec)g(k)469 b(for)g(consisten)-31
+b(t)470 b(in)-31 b(ternal)471 b(represen)-31 b(tation)6767
+25780 y(of)472 b(these)f(v)-31 b(ectors.)800 b(It)471
+b(is)g(the)h(user's)e(resp)31 b(onsibilit)-31 b(y)473
+b(to)f(ensure)e(that)j(suc)-31 b(h)470 b(routines)i(are)f(called)i
+(with)6767 27109 y Fu(N)p 7418 27109 V 419 w(Vector)370
+b Fx(argumen)-31 b(ts)370 b(that)h(w)-31 b(ere)369 b(all)h(created)g
+(with)g(the)g(same)f(in)-31 b(ternal)371 b(represen)-31
+b(tations.)4000 30768 y Fs(6.2)1793 b(The)598 b(NVECTOR)p
+21012 30768 538 45 v 646 w(P)-149 b(ARALLEL)598 b(implemen)-50
+b(tation)4000 33192 y Fx(The)278 b(parallel)h(implemen)-31
+b(tation)281 b(of)d(the)f Fv(nvector)h Fx(mo)31 b(dule)278
+b(pro)-31 b(vided)278 b(with)g Fv(sundials)p Fx(,)296
+b Fv(nvector)p 46435 33192 368 45 v 440 w(p)-74 b(arallel)p
+Fx(,)4000 34521 y(de\257nes)345 b(the)i Fo(c)-57 b(ontent)347
+b Fx(\257eld)f(of)h Fu(N)p 17613 34521 349 45 v 418 w(Vector)g
+Fx(to)g(b)31 b(e)345 b(a)i(structure)e(con)-31 b(taining)349
+b(the)e(global)h(and)e(lo)31 b(cal)348 b(lengths)f(of)g(the)4000
+35849 y(v)-31 b(ector,)479 b(a)457 b(p)31 b(oin)-31 b(ter)457
+b(to)g(the)f(b)31 b(eginning)458 b(of)f(a)f(con)-31 b(tiguous)459
+b(lo)31 b(cal)457 b(data)h(arra)-31 b(y)-92 b(,)479 b(an)456
+b Fv(MPI)g Fx(comm)-31 b(unicator,)481 b(an)457 b(a)4000
+37177 y(b)31 b(o)g(olean)370 b(\260ag)g Fo(own)p 12203
+37177 340 45 v 407 w(data)e Fx(indicating)k(o)-31 b(wnership)370
+b(of)g(the)f(data)i(arra)-31 b(y)369 b Fo(data)p Fx(.)p
+Black Black 4000 39383 a Fu(struct)582 b(_N_VectorContent_Parallel)j({)
+5162 40711 y(long)d(int)g(local_length;)5162 42040 y(long)g(int)g
+(global_length;)5162 43368 y(booleantype)h(own_data;)5162
+44696 y(realtype)g(*data;)5162 46025 y(MPI_Comm)g(comm;)4000
+47353 y(};)4000 49559 y Fx(The)314 b(follo)-31 b(wing)318
+b(sev)-31 b(en)314 b(macros)g(are)g(pro)-31 b(vided)315
+b(to)g(access)f(the)g(con)-31 b(ten)g(t)316 b(of)e(a)h
+Fv(nvector)p 40786 49559 368 45 v 440 w(p)-74 b(arallel)315
+b Fx(v)-31 b(ector.)476 b(The)4000 50887 y(su\261x)p
+6997 50887 349 45 v 788 w Fu(P)369 b Fx(in)g(the)h(names)f(denotes)h
+(parallel)h(v)-31 b(ersion.)p Black 5660 53093 a Fp(\262)p
+Black 554 w Fu(NV)p 7999 53093 V 419 w(CONTENT)p 12485
+53093 V 420 w(P)6767 54862 y Fx(This)370 b(macro)g(giv)-31
+b(es)370 b(access)f(to)h(the)f(con)-31 b(ten)g(ts)371
+b(of)e(the)h(parallel)h(v)-31 b(ector)370 b Fu(N)p 37316
+54862 V 418 w(Vector)p Fx(.)6767 56631 y(The)355 b(assignmen)-31
+b(t)357 b Fu(v)p 15366 56631 V 419 w(cont)581 b(=)h(NV)p
+21015 56631 V 418 w(CONTENT)p 25500 56631 V 420 w(P\(v\))355
+b Fx(sets)f Fu(v)p 31330 56631 V 419 w(cont)h Fx(to)h(b)31
+b(e)354 b(a)h(p)31 b(oin)-31 b(ter)356 b(to)f(the)g Fu(N)p
+45780 56631 V 419 w(Vector)h Fx(con-)6767 57960 y(ten)-31
+b(t)371 b(structure)d(of)i(t)-31 b(yp)31 b(e)370 b Fu(struct)p
+21710 57960 V 1000 w(N)p 22710 57960 V 419 w(VectorParallelContent)p
+Fx(.)6767 59729 y(Implemen)-31 b(tation:)6767 61498 y
+Fu(#define)583 b(NV_CONTENT_P\(v\))g(\()e
+(\(N_VectorContent_Parallel\)\(v->content\))587 b(\))p
+Black 5660 63708 a Fp(\262)p Black 554 w Fu(NV)p 7999
+63708 V 419 w(OWN)p 10161 63708 V 419 w(DATA)p 12904
+63708 V 419 w(P)p Fx(,)370 b Fu(NV)p 15743 63708 V 418
+w(DATA)p 18485 63708 V 419 w(P)p Fx(,)g Fu(NV)p 21324
+63708 V 419 w(LOCLENGTH)p 26972 63708 V 420 w(P)p Fx(,)f
+Fu(NV)p 29811 63708 V 419 w(GLOBLENGTH)p 36040 63708
+V 420 w(P)6767 65477 y Fx(These)g(macros)h(giv)-31 b(e)370
+b(individual)i(access)d(to)h(the)f(parts)g(of)h(the)f(con)-31
+b(ten)g(t)371 b(of)f(a)f(parallel)i Fu(N)p 44449 65477
+V 419 w(Vector)p Fx(.)6767 67246 y(The)341 b(assignmen)-31
+b(t)342 b Fu(v)p 15337 67246 V 418 w(data)582 b(=)f(NV)p
+20985 67246 V 419 w(DATA)p 23728 67246 V 419 w(P\(v\))340
+b Fx(sets)g Fu(v)p 29528 67246 V 419 w(data)g Fx(to)h(b)31
+b(e)340 b(a)g(p)31 b(oin)-31 b(ter)341 b(to)g(the)f(\257rst)g(comp)31
+b(onen)-31 b(t)341 b(of)6767 68574 y(the)276 b(lo)31
+b(cal)276 b(data)h(for)e(the)g Fu(N)p 17590 68574 V 419
+w(Vector)g(v)p Fx(.)461 b(The)276 b(assignmen)-31 b(t)276
+b Fu(NV)p 32069 68574 V 419 w(DATA)p 34812 68574 V 419
+w(P\(v\))582 b(=)f(v)p 39880 68574 V 419 w(data)275 b
+Fx(sets)g(the)g(comp)31 b(onen)-31 b(t)6767 69903 y(arra)g(y)370
+b(of)g Fu(v)f Fx(to)h(b)31 b(e)368 b Fu(v)p 15385 69903
+V 419 w(data)i Fx(b)-31 b(y)369 b(storing)h(the)g(p)31
+b(oin)-31 b(ter)370 b Fu(v)p 30038 69903 V 418 w(data)p
+Fx(.)6767 71672 y(The)407 b(assignmen)-31 b(t)408 b Fu(v)p
+15469 71672 V 419 w(llen)581 b(=)h(NV)p 21118 71672 V
+418 w(LOCLENGTH)p 26765 71672 V 420 w(P\(v\))407 b Fx(sets)f
+Fu(v)p 32699 71672 V 418 w(llen)h Fx(to)g(b)31 b(e)406
+b(the)h(length)g(of)g(the)g(lo)31 b(cal)407 b(part)6767
+73000 y(of)370 b Fu(v)p Fx(.)493 b(The)369 b(call)i Fu(NV)p
+14946 73000 V 418 w(LENGTH)p 18850 73000 V 420 w(P\(v\))581
+b(=)h(llen)p 25662 73000 V 419 w(v)369 b Fx(sets)g(the)g(lo)31
+b(cal)371 b(length)f(of)g Fu(v)f Fx(to)h(b)31 b(e)369
+b Fu(llen)p 44493 73000 V 419 w(v)p Fx(.)6767 74769 y(The)517
+b(assignmen)-31 b(t)518 b Fu(v)p 15689 74769 V 419 w(glen)582
+b(=)f(NV)p 21338 74769 V 419 w(GLOBLENGTH)p 27567 74769
+V 420 w(P\(v\))516 b Fx(sets)h Fu(v)p 33721 74769 V 418
+w(glen)g Fx(to)g(b)31 b(e)516 b(the)h(global)i(length)f(of)f(the)6767
+76098 y(v)-31 b(ector)370 b Fu(v)p Fx(.)493 b(The)369
+b(call)i Fu(NV)p 17009 76098 V 419 w(GLOBLENGTH)p 23238
+76098 V 419 w(P\(v\))582 b(=)g(glen)p 30050 76098 V 419
+w(v)369 b Fx(sets)f(the)i(global)h(length)g(of)e Fu(v)g
+Fx(to)h(b)31 b(e)369 b Fu(glen)p 49526 76098 V 419 w(v)p
+Fx(.)6767 77867 y(Implemen)-31 b(tation:)p Black Black
+eop
+%%Page: 90 98
+90 97 bop Black 0 2701 a Fy(90)25219 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black 2767 6974 a Fu(#define)583 b(NV_OWN_DATA_P\(v\))1745
+b(\()582 b(NV_CONTENT_P\(v\)->own_data)j(\))2767 8698
+y(#define)e(NV_DATA_P\(v\))4069 b(\()582 b(NV_CONTENT_P\(v\)->data)i
+(\))2767 10421 y(#define)f(NV_LOCLENGTH_P\(v\))1164 b(\()582
+b(NV_CONTENT_P\(v\)->local_length)j(\))2767 12145 y(#define)e
+(NV_GLOBLENGTH_P\(v\))g(\()f(NV_CONTENT_P\(v\)->global_length)j(\))p
+Black 1660 14264 a Fp(\262)p Black 554 w Fu(NV)p 3999
+14264 349 45 v 419 w(COMM)p 6742 14264 V 419 w(P)2767
+15988 y Fx(This)393 b(macro)h(pro)-31 b(vides)392 b(access)h(to)g(the)g
+Fv(MPI)e Fx(comm)-31 b(unicator)396 b(used)c(b)-31 b(y)393
+b(the)f Fv(nvector)p 40443 15988 368 45 v 441 w(p)-74
+b(arallel)394 b Fx(v)-31 b(ec-)2767 17316 y(tors.)2767
+19040 y(Implemen)g(tation:)2767 20763 y Fu(#define)583
+b(NV_COMM_P\(v\))g(\()e(NV_CONTENT_P\(v\)->comm)j(\))p
+Black 1660 22882 a Fp(\262)p Black 554 w Fu(NV)p 3999
+22882 349 45 v 419 w(Ith)p 6161 22882 V 419 w(P)2767
+24606 y Fx(This)370 b(macro)g(giv)-31 b(es)370 b(access)f(to)h(the)f
+(individual)j(comp)31 b(onen)-31 b(ts)370 b(of)g(the)f(lo)31
+b(cal)371 b(data)f(arra)-31 b(y)370 b(of)g(an)f Fu(N)p
+43801 24606 V 419 w(Vector)p Fx(.)2767 26330 y(The)g(assignmen)-31
+b(t)371 b Fu(r)581 b(=)g(NV)p 14299 26330 V 419 w(Ith)p
+16461 26330 V 419 w(P\(v,i\))369 b Fx(sets)f Fu(r)h Fx(to)g(b)31
+b(e)368 b(the)h(v)-61 b(alue)369 b(of)g(the)g Fu(i)p
+Fx(-th)g(comp)31 b(onen)-31 b(t)370 b(of)f(the)g(lo)31
+b(cal)2767 27658 y(part)456 b(of)f Fu(v)p Fx(.)750 b(The)455
+b(assignmen)-31 b(t)457 b Fu(NV)p 17619 27658 V 418 w(Ith)p
+19780 27658 V 419 w(P\(v,i\))582 b(=)g(r)455 b Fx(sets)f(the)h(v)-61
+b(alue)456 b(of)f(the)g Fu(i)p Fx(-th)h(comp)31 b(onen)-31
+b(t)456 b(of)g(the)2767 28987 y(lo)31 b(cal)371 b(part)f(of)f
+Fu(v)g Fx(to)h(b)31 b(e)369 b Fu(r)p Fx(.)2767 30710
+y(Here)g Fm(i)g Fx(ranges)h(from)f(0)h(to)g Fm(n)246
+b Fp(\241)g Fx(1,)370 b(where)f Fm(n)g Fx(is)h(the)f(lo)31
+b(cal)371 b(length.)2767 32434 y(Implemen)-31 b(tation:)2767
+34158 y Fu(#define)583 b(NV_Ith_P\(v,i\))g(\()e(NV_DATA_P\(v\)[i])i(\))
+0 36182 y Fx(The)384 b Fv(nvector)p 7017 36182 368 45
+v 441 w(p)-74 b(arallel)384 b Fx(mo)31 b(dule)385 b(de\257nes)e
+(parallel)j(implemen)-31 b(tations)387 b(of)e(all)g(v)-31
+b(ector)384 b(op)31 b(erations)385 b(listed)g(in)0 37510
+y(T)-92 b(able)370 b(6.1)h(and)e(pro)-31 b(vides)370
+b(the)f(follo)-31 b(wing)373 b(user-callable)d(routines:)p
+Black 1660 39534 a Fp(\262)p Black 554 w Fu(N)p 3418
+39534 349 45 v 419 w(VNew)p 6161 39534 V 419 w(Parallel)2767
+41258 y Fx(This)g(function)h(creates)e(and)g(allo)31
+b(cates)371 b(memory)g(for)e(a)g(parallel)i(v)-31 b(ector.)p
+Black Black 2767 43851 a Fu(N_Vector)583 b(N_VNew_Parallel\(MPI_Comm)h
+(comm,)17296 45180 y(long)e(int)f(local_length,)17296
+46508 y(long)h(int)f(global_length\);)p Black 1660 49102
+a Fp(\262)p Black 554 w Fu(N)p 3418 49102 V 419 w(VNewEmpty)p
+9066 49102 V 420 w(Parallel)2767 50825 y Fx(This)370
+b(function)h(creates)e(a)g(new)h(parallel)g Fu(N)p 21117
+50825 V 419 w(Vector)g Fx(with)g(an)g(empt)-31 b(y)370
+b(\()p Fu(NULL)p Fx(\))h(data)f(arra)-31 b(y)-92 b(.)p
+Black Black 2767 53419 a Fu(N_Vector)583 b
+(N_VNewEmpty_Parallel\(MPI_Comm)i(comm,)20202 54747 y(long)d(int)f
+(local_length,)20202 56076 y(long)h(int)f(global_length\);)p
+Black 1660 58669 a Fp(\262)p Black 554 w Fu(N)p 3418
+58669 V 419 w(VMake)p 6742 58669 V 419 w(Parallel)2767
+60393 y Fx(This)305 b(function)g(creates)e(and)h(allo)31
+b(cates)306 b(memory)f(for)f(a)g(parallel)h(v)-31 b(ector)305
+b(with)g(user-pro)-31 b(vided)303 b(data)i(arra)-31 b(y)-92
+b(.)p Black Black 2767 62986 a Fu(N_Vector)583 b
+(N_VMake_Parallel\(MPI_Comm)i(comm,)17877 64314 y(long)d(int)g
+(local_length,)17877 65643 y(long)g(int)g(global_length,)17877
+66971 y(realtype)h(*v_data\);)p Black 1660 69565 a Fp(\262)p
+Black 554 w Fu(N)p 3418 69565 V 419 w(VNewVectorArray)p
+12552 69565 V 421 w(Parallel)2767 71288 y Fx(This)370
+b(function)h(creates)e(an)g(arra)-31 b(y)370 b(of)f Fu(count)h
+Fx(parallel)h(v)-31 b(ectors.)p Black Black 2767 73882
+a Fu(N_Vector)583 b(*N_VNewVectorArray_Parallel\(int)j(count,)24270
+75210 y(MPI_Comm)c(comm,)24270 76539 y(long)g(int)f(local_length,)24270
+77867 y(long)h(int)f(global_length\);)p Black Black eop
+%%Page: 91 99
+91 98 bop Black 4000 2701 a Fy(6.3)425 b(NVECTOR)g(functions)g(used)h
+(b)-35 b(y)424 b(CV)-35 b(ODE)22946 b(91)p 4000 3144
+48001 45 v Black Black 5660 6974 a Fp(\262)p Black 554
+w Fu(N)p 7418 6974 349 45 v 419 w(VNewVectorArrayEmpty)p
+19457 6974 V 421 w(Parallel)6767 8843 y Fx(This)299 b(function)g
+(creates)e(an)i(arra)-31 b(y)298 b(of)g Fu(count)g Fx(parallel)i(v)-31
+b(ectors,)313 b(eac)-31 b(h)298 b(with)h(an)f(empt)-31
+b(y)299 b(\()p Fu(NULL)p Fx(\))g(data)g(arra)-31 b(y)-92
+b(.)p Black Black 6767 11966 a Fu(N_Vector)583 b
+(*N_VNewVectorArrayEmpty_Parallel\(int)j(count,)31176
+13294 y(MPI_Comm)c(comm,)31176 14622 y(long)f(int)h(local_length,)31176
+15951 y(long)f(int)h(global_length\);)p Black 5660 19073
+a Fp(\262)p Black 554 w Fu(N)p 7418 19073 V 419 w(VDestroyVectorArray)p
+18876 19073 V 421 w(Parallel)6767 20942 y Fx(This)305
+b(function)g(frees)e(memory)i(allo)31 b(cated)307 b(for)d(the)g(arra)
+-31 b(y)305 b(of)f Fu(count)h Fx(v)-61 b(ariables)304
+b(of)h(t)-31 b(yp)31 b(e)304 b Fu(N)p 44352 20942 V 419
+w(Vector)h Fx(created)6767 22271 y(with)371 b Fu(N)p
+9940 22271 V 418 w(VNewVectorArray)p 19073 22271 V 421
+w(Parallel)f Fx(or)f(with)i Fu(N)p 28971 22271 V 418
+w(VNewVectorArrayEmpty)p 41009 22271 V 422 w(Parallel)p
+Fx(.)6767 24140 y Fu(void)582 b
+(N_VDestroyVectorArray_Parallel\(N_Vector)587 b(*vs,)582
+b(int)f(count\);)p Black 5660 26549 a Fp(\262)p Black
+554 w Fu(N)p 7418 26549 V 419 w(VPrint)p 11323 26549
+V 419 w(Parallel)6767 28418 y Fx(This)370 b(function)h(prin)-31
+b(ts)369 b(the)g(con)-31 b(ten)g(t)371 b(of)f(a)f(parallel)i(v)-31
+b(ector)370 b(to)g(stdout.)6767 30287 y Fu(void)582 b
+(N_VPrint_Parallel\(N_Vector)j(v\);)4000 33424 y Fy(Notes)p
+Black 5660 35785 a Fp(\262)p Black 554 w Fx(When)438
+b(lo)31 b(oping)440 b(o)-31 b(v)g(er)438 b(the)g(comp)31
+b(onen)-31 b(ts)439 b(of)g(an)f Fu(N)p 28203 35785 V
+419 w(Vector)g(v)p Fx(,)456 b(it)438 b(is)g(more)h(e\261cien)-31
+b(t)439 b(to)g(\257rst)e(obtain)j(the)6767 37113 y(lo)31
+b(cal)314 b(comp)31 b(onen)-31 b(t)314 b(arra)-31 b(y)312
+b(via)i Fu(v)p 20173 37113 V 418 w(data)582 b(=)f(NV)p
+25821 37113 V 419 w(DATA)p 28564 37113 V 419 w(P\(v\))312
+b Fx(and)h(then)f(access)g Fu(v)p 39975 37113 V 419 w(data[i])h
+Fx(within)g(the)g(lo)31 b(op)6767 38442 y(than)370 b(it)g(is)f(to)h
+(use)f Fu(NV)p 16068 38442 V 419 w(Ith)p 18230 38442
+V 419 w(P\(v,i\))g Fx(within)i(the)f(lo)31 b(op.)p Black
+5660 41628 a Fp(\262)p Black 1682 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+
+
+ at endspecial Ff(!)1375 b Fx(The)246 b Fv(nvector)p 16433
+41628 368 45 v 441 w(p)-74 b(arallel)247 b Fx(constructor)g(functions)g
+Fu(N)p 32969 41628 349 45 v 419 w(VNewEmpty)p 38617 41628
+V 419 w(Parallel)p Fx(,)273 b Fu(N)p 44845 41628 V 418
+w(VMake)p 48168 41628 V 419 w(Parallel)p Fx(,)6767 42957
+y(and)247 b Fu(N)p 9448 42957 V 418 w(VNewVectorArrayEmpty)p
+21486 42957 V 422 w(Parallel)g Fx(set)f(the)h(\257eld)f
+Fo(own)p 34389 42957 340 45 v 407 w(data)f Fx(=)h Fu(FALSE)p
+Fx(.)h(The)g(functions)g Fu(N)p 49058 42957 349 45 v
+418 w(VDestroy)p 54124 42957 V 420 w(Parallel)6767 44285
+y Fx(and)574 b Fu(N)p 9775 44285 V 419 w(VDestroyVectorArray)p
+21233 44285 V 421 w(Parallel)h Fx(will)g(not)g(attempt)h(to)e(free)f
+(the)h(p)31 b(oin)-31 b(ter)575 b Fo(data)d Fx(for)i(an)-31
+b(y)6767 45613 y Fu(N)p 7418 45613 V 419 w(Vector)292
+b Fx(with)g Fo(own)p 15980 45613 340 45 v 407 w(data)e
+Fx(set)h(to)h Fu(FALSE)p Fx(.)g(In)e(suc)-31 b(h)291
+b(a)g(case,)308 b(it)291 b(is)g(the)h(user's)e(resp)31
+b(onsibilit)-31 b(y)293 b(to)e(deallo)31 b(cate)6767
+46942 y(the)370 b Fo(data)e Fx(p)31 b(oin)-31 b(ter.)p
+Black 5660 50128 a Fp(\262)p Black 1682 w @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Ff(!)1602 b Fx(T)-92 b(o)474
+b(maximize)h(e\261ciency)-92 b(,)500 b(v)-31 b(ector)474
+b(op)31 b(erations)475 b(in)e(the)h Fv(nvector)p 38736
+50128 368 45 v 440 w(p)-74 b(arallel)475 b Fx(implemen)-31
+b(tation)6767 51457 y(that)278 b(ha)-31 b(v)g(e)278 b(more)f(than)h
+(one)f Fu(N)p 19290 51457 349 45 v 418 w(Vector)h Fx(argumen)-31
+b(t)278 b(do)f(not)g(c)-31 b(hec)g(k)278 b(for)e(consisten)-31
+b(t)278 b(in)-31 b(ternal)279 b(represen)-31 b(tation)6767
+52785 y(of)458 b(these)e(v)-31 b(ectors.)756 b(It)457
+b(is)g(the)g(user's)f(resp)31 b(onsabilit)-31 b(y)458
+b(to)g(ensure)d(that)j(suc)-31 b(h)457 b(routines)g(are)g(called)h
+(with)6767 54114 y Fu(N)p 7418 54114 V 419 w(Vector)370
+b Fx(argumen)-31 b(ts)370 b(that)h(w)-31 b(ere)369 b(all)h(created)g
+(with)g(the)g(same)f(in)-31 b(ternal)371 b(represen)-31
+b(tations.)4000 58034 y Fs(6.3)1793 b(NVECTOR)598 b(functions)h(used)f
+(b)-50 b(y)599 b(CV)-50 b(ODE)4000 60549 y Fx(In)346
+b(T)-92 b(able)347 b(6.2)g(b)31 b(elo)-31 b(w,)353 b(w)-31
+b(e)346 b(list)h(the)g(v)-31 b(ector)347 b(functions)g(in)f(the)h
+Fv(nvector)f Fx(mo)31 b(dule)347 b(within)h(the)e Fv(cv)-25
+b(ode)347 b Fx(pac)-31 b(k)-61 b(age.)4000 61878 y(The)401
+b(table)g(also)g(sho)-31 b(ws,)409 b(for)401 b(eac)-31
+b(h)400 b(function,)410 b(whic)-31 b(h)402 b(of)e(the)h(co)31
+b(de)400 b(mo)31 b(dules)401 b(uses)f(the)g(function.)588
+b(The)400 b Fv(cv)-25 b(ode)4000 63206 y Fx(column)312
+b(sho)-31 b(ws)311 b(function)h(usage)g(within)g(the)f(main)i(in)-31
+b(tegrator)312 b(mo)31 b(dule,)324 b(while)313 b(the)e(remaining)h(sev)
+-31 b(en)311 b(columns)4000 64534 y(sho)-31 b(w)389 b(function)g(usage)
+g(within)h(eac)-31 b(h)388 b(of)h(the)f(four)g Fv(cv)-25
+b(ode)389 b Fx(linear)g(solv)-31 b(ers,)393 b(the)c Fv(cvbandpre)g
+Fx(and)f Fv(cvbbdpre)4000 65863 y Fx(preconditioner)370
+b(mo)31 b(dules,)371 b(and)e(the)h Fv(f)-25 b(cv)g(ode)370
+b Fx(mo)31 b(dule.)5660 67240 y(There)429 b(is)f(one)h(subtlet)-31
+b(y)430 b(in)f(the)g Fv(cvspgmr)f Fx(column)i(hidden)e(b)-31
+b(y)429 b(the)g(table.)672 b(The)429 b(dot)h(pro)31 b(duct)428
+b(function)4000 68568 y Fu(N)p 4651 68568 V 419 w(VDotProd)441
+b Fx(is)f(called)i(b)31 b(oth)440 b(within)i(the)f(implemen)-31
+b(tation)445 b(\257le)440 b Fu(cvspgmr.c)i Fx(for)e(the)g
+Fv(cvspgmr)g Fx(solv)-31 b(er)441 b(and)4000 69897 y(within)323
+b(the)f(implemen)-31 b(tation)326 b(\257les)c Fu(spgmr.c)h
+Fx(and)f Fu(iterative.c)h Fx(for)f(the)f(generic)h Fv(spgmr)f
+Fx(solv)-31 b(er)322 b(up)31 b(on)322 b(whic)-31 b(h)4000
+71225 y(the)391 b Fv(cvspgmr)f Fx(solv)-31 b(er)392 b(is)f(implemen)-31
+b(ted.)561 b(Also,)397 b(although)c Fu(N)p 30444 71225
+V 419 w(VDiv)e Fx(and)h Fu(N)p 36334 71225 V 418 w(VProd)g
+Fx(are)f(not)h(called)g(within)h(the)4000 72553 y(implemen)-31
+b(tation)409 b(\257le)c Fu(cvspgmr.c)p Fx(,)415 b(they)405
+b(are)f(called)i(within)g(the)f(implemen)-31 b(tation)409
+b(\257le)404 b Fu(spgmr.c)i Fx(and)f(so)f(are)4000 73882
+y(required)352 b(b)-31 b(y)352 b(the)g Fv(cvspgmr)f Fx(solv)-31
+b(er)353 b(mo)31 b(dule.)488 b(This)352 b(issue)g(do)31
+b(es)352 b(not)g(arise)h(for)f(the)g(other)g(three)g
+Fv(cv)-25 b(ode)353 b Fx(linear)4000 75210 y(solv)-31
+b(ers)403 b(b)31 b(ecause)402 b(the)h(generic)g Fv(dense)g
+Fx(and)g Fv(band)g Fx(solv)-31 b(ers)402 b(\(used)h(in)g(the)g
+(implemen)-31 b(tation)407 b(of)c Fv(cvdense)h Fx(and)4000
+76539 y Fv(cvband)p Fx(\))351 b(do)f(not)h(mak)-31 b(e)351
+b(calls)g(to)g(an)-31 b(y)351 b(v)-31 b(ector)351 b(functions)g(and)f
+Fv(cvdia)-25 b(g)350 b Fx(is)g(not)h(implemen)-31 b(ted)353
+b(using)d(a)h(generic)4000 77867 y(diagonal)372 b(solv)-31
+b(er.)p Black Black eop
+%%Page: 92 100
+92 99 bop Black 0 2701 a Fy(92)25219 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black Black Black 8189 7743 a Fx(T)-92 b(able)370 b(6.2:)494
+b(List)369 b(of)h(v)-31 b(ector)370 b(functions)g(usage)g(b)-31
+b(y)369 b Fv(cv)-25 b(ode)370 b Fx(co)31 b(de)369 b(mo)31
+b(dules)p Black 9184 8777 29633 45 v 9162 15101 45 6325
+v 20788 15101 V 22220 14703 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 22220 14703 a Fv(cv)-25
+b(ode)25541 14703 y
+ currentpoint grestore moveto
+ 25541 14703 a 23039 15101 45 6325
+v 24471 14703 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 24471 14703 a Fv(cvdense)28916 14703
+y
+ currentpoint grestore moveto
+ 28916 14703 a 25289 15101 45 6325 v 26721 14703 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 26721
+14703 a Fv(cvband)30746 14703 y
+ currentpoint grestore moveto
+ 30746 14703 a 27540 15101
+45 6325 v 28972 14703 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 28972 14703 a Fv(cvdia)g(g)32695
+14703 y
+ currentpoint grestore moveto
+ 32695 14703 a 29791 15101 45 6325 v 31223 14703
+a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 31223 14703 a Fv(cvspgmr)35883 14703 y
+ currentpoint grestore moveto
+ 35883 14703
+a 32042 15101 45 6325 v 33474 14703 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 33474 14703 a Fv(cvbandpre)39400
+14703 y
+ currentpoint grestore moveto
+ 39400 14703 a 34293 15101 45 6325 v 35725 14703
+a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 35725 14703 a Fv(cvbbdpre)40935 14703 y
+ currentpoint grestore moveto
+ 40935 14703
+a 36543 15101 45 6325 v 37975 14703 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 37975 14703 a Fv(f)g(cv)g(ode)
+41865 14703 y
+ currentpoint grestore moveto
+ 41865 14703 a 38794 15101 45 6325 v 9184
+15146 29633 45 v 9184 15367 V 9162 16695 45 1329 v 15659
+16297 a Fu(N)p 16310 16297 349 45 v 419 w(VClone)p 20788
+16695 45 1329 v 1329 w Fb(X)p 23039 16695 V 25289 16695
+V 27540 16695 V 5831 w(X)p 29791 16695 V 1328 w(X)p 32042
+16695 V 34293 16695 V 36543 16695 V 38794 16695 V 9184
+16740 29633 45 v 9162 18068 45 1329 v 14497 17670 a Fu(N)p
+15148 17670 349 45 v 419 w(VDestroy)p 20788 18068 45
+1329 v 1329 w Fb(X)p 23039 18068 V 25289 18068 V 27540
+18068 V 5831 w(X)p 29791 18068 V 1328 w(X)p 32042 18068
+V 34293 18068 V 36543 18068 V 38794 18068 V 9184 18112
+29633 45 v 9162 19441 45 1329 v 15659 19042 a Fu(N)p
+16310 19042 349 45 v 419 w(VSpace)p 20788 19441 45 1329
+v 1329 w Fb(X)p 23039 19441 V 25289 19441 V 27540 19441
+V 29791 19441 V 32042 19441 V 34293 19441 V 36543 19441
+V 38794 19441 V 9184 19485 29633 45 v 9162 20813 45 1329
+v 9848 20415 a Fu(N)p 10499 20415 349 45 v 418 w(VGetArrayPointer)p
+20788 20813 45 1329 v 23039 20813 V 3582 w Fb(X)p 25289
+20813 V 1329 w(X)p 27540 20813 V 29791 20813 V 32042
+20813 V 5830 w(X)p 34293 20813 V 1329 w(X)p 36543 20813
+V 1329 w(X)p 38794 20813 V 9184 20858 29633 45 v 9162
+22186 45 1329 v 9848 21787 a Fu(N)p 10499 21787 349 45
+v 418 w(VSetArrayPointer)p 20788 22186 45 1329 v 23039
+22186 V 3582 w Fb(X)p 25289 22186 V 27540 22186 V 29791
+22186 V 32042 22186 V 34293 22186 V 36543 22186 V 12583
+w(X)p 38794 22186 V 9184 22230 29633 45 v 9162 23559
+45 1329 v 13335 23160 a Fu(N)p 13986 23160 349 45 v 418
+w(VLinearSum)p 20788 23559 45 1329 v 1330 w Fb(X)p 23039
+23559 V 1329 w(X)p 25289 23559 V 27540 23559 V 3580 w(X)p
+29791 23559 V 1328 w(X)p 32042 23559 V 34293 23559 V
+36543 23559 V 38794 23559 V 9184 23603 29633 45 v 9162
+24931 45 1329 v 15659 24533 a Fu(N)p 16310 24533 349
+45 v 419 w(VConst)p 20788 24931 45 1329 v 1329 w Fb(X)p
+23039 24931 V 25289 24931 V 27540 24931 V 29791 24931
+V 8081 w(X)p 32042 24931 V 34293 24931 V 36543 24931
+V 38794 24931 V 9184 24975 29633 45 v 9162 26304 45 1329
+v 16240 25905 a Fu(N)p 16891 25905 349 45 v 419 w(VProd)p
+20788 26304 45 1329 v 1329 w Fb(X)p 23039 26304 V 25289
+26304 V 27540 26304 V 5831 w(X)p 29791 26304 V 1328 w(X)p
+32042 26304 V 34293 26304 V 36543 26304 V 38794 26304
+V 9184 26348 29633 45 v 9162 27676 45 1329 v 16822 27278
+a Fu(N)p 17473 27278 349 45 v 418 w(VDiv)p 20788 27676
+45 1329 v 1329 w Fb(X)p 23039 27676 V 25289 27676 V 27540
+27676 V 5831 w(X)p 29791 27676 V 1328 w(X)p 32042 27676
+V 34293 27676 V 36543 27676 V 38794 27676 V 9184 27721
+29633 45 v 9162 29049 45 1329 v 15659 28651 a Fu(N)p
+16310 28651 349 45 v 419 w(VScale)p 20788 29049 45 1329
+v 1329 w Fb(X)p 23039 29049 V 1329 w(X)p 25289 29049
+V 1329 w(X)p 27540 29049 V 1329 w(X)p 29791 29049 V 1328
+w(X)p 32042 29049 V 1329 w(X)p 34293 29049 V 1329 w(X)p
+36543 29049 V 38794 29049 V 9184 29093 29633 45 v 9162
+30422 45 1329 v 16822 30023 a Fu(N)p 17473 30023 349
+45 v 418 w(VAbs)p 20788 30422 45 1329 v 1329 w Fb(X)p
+23039 30422 V 25289 30422 V 27540 30422 V 29791 30422
+V 32042 30422 V 34293 30422 V 36543 30422 V 38794 30422
+V 9184 30466 29633 45 v 9162 31794 45 1329 v 16822 31396
+a Fu(N)p 17473 31396 349 45 v 418 w(VInv)p 20788 31794
+45 1329 v 1329 w Fb(X)p 23039 31794 V 25289 31794 V 27540
+31794 V 5831 w(X)p 29791 31794 V 32042 31794 V 34293
+31794 V 36543 31794 V 38794 31794 V 9184 31839 29633
+45 v 9162 33167 45 1329 v 13916 32768 a Fu(N)p 14567
+32768 349 45 v 418 w(VAddConst)p 20788 33167 45 1329
+v 1330 w Fb(X)p 23039 33167 V 25289 33167 V 27540 33167
+V 5831 w(X)p 29791 33167 V 32042 33167 V 34293 33167
+V 36543 33167 V 38794 33167 V 9184 33211 29633 45 v 9162
+34540 45 1329 v 14497 34141 a Fu(N)p 15148 34141 349
+45 v 419 w(VDotProd)p 20788 34540 45 1329 v 23039 34540
+V 25289 34540 V 27540 34540 V 29791 34540 V 10332 w Fb(X)p
+32042 34540 V 34293 34540 V 36543 34540 V 38794 34540
+V 9184 34584 29633 45 v 9162 35912 45 1329 v 14497 35514
+a Fu(N)p 15148 35514 349 45 v 419 w(VMaxNorm)p 20788
+35912 45 1329 v 1329 w Fb(X)p 23039 35912 V 25289 35912
+V 27540 35912 V 29791 35912 V 32042 35912 V 34293 35912
+V 36543 35912 V 38794 35912 V 9184 35956 29633 45 v 9162
+37285 45 1329 v 13916 36886 a Fu(N)p 14567 36886 349
+45 v 418 w(VWrmsNorm)p 20788 37285 45 1329 v 1330 w Fb(X)p
+23039 37285 V 1329 w(X)p 25289 37285 V 1329 w(X)p 27540
+37285 V 29791 37285 V 3579 w(X)p 32042 37285 V 1329 w(X)p
+34293 37285 V 1329 w(X)p 36543 37285 V 38794 37285 V
+9184 37329 29633 45 v 9162 38657 45 1329 v 16822 38259
+a Fu(N)p 17473 38259 349 45 v 418 w(VMin)p 20788 38657
+45 1329 v 1329 w Fb(X)p 23039 38657 V 25289 38657 V 27540
+38657 V 29791 38657 V 32042 38657 V 34293 38657 V 36543
+38657 V 38794 38657 V 9184 38702 29633 45 v 9162 40030
+45 1329 v 14497 39632 a Fu(N)p 15148 39632 349 45 v 419
+w(VCompare)p 20788 40030 45 1329 v 23039 40030 V 25289
+40030 V 27540 40030 V 8082 w Fb(X)p 29791 40030 V 32042
+40030 V 34293 40030 V 36543 40030 V 38794 40030 V 9184
+40074 29633 45 v 9162 41403 45 1329 v 14497 41004 a Fu(N)p
+15148 41004 349 45 v 419 w(VInvTest)p 20788 41403 45
+1329 v 23039 41403 V 25289 41403 V 27540 41403 V 8082
+w Fb(X)p 29791 41403 V 32042 41403 V 34293 41403 V 36543
+41403 V 38794 41403 V 9184 41447 29633 45 v Black 1660
+44768 a Fx(A)-31 b(t)364 b(this)g(p)31 b(oin)-31 b(t,)366
+b(w)-31 b(e)364 b(should)f(emphasize)h(that)h(the)e Fv(cv)-25
+b(ode)364 b Fx(user)e(do)31 b(es)363 b(not)h(need)f(to)h(kno)-31
+b(w)364 b(an)-31 b(ything)366 b(ab)31 b(out)0 46096 y(the)381
+b(usage)g(of)h(v)-31 b(ector)381 b(functions)h(b)-31
+b(y)381 b(the)g Fv(cv)-25 b(ode)382 b Fx(co)31 b(de)381
+b(mo)31 b(dules)381 b(in)g(order)g(to)g(use)f Fv(cv)-25
+b(ode)p Fx(.)529 b(The)381 b(information)0 47425 y(is)369
+b(presen)-31 b(ted)369 b(as)g(an)g(implemen)-31 b(tation)374
+b(detail)d(for)e(the)h(in)-31 b(terested)369 b(reader.)1660
+48753 y(The)299 b(v)-31 b(ector)299 b(functions)g(listed)g(in)g(T)-92
+b(able)299 b(6.1)h(that)f(are)f Fo(not)g Fx(used)g(b)-31
+b(y)298 b Fv(cv)-25 b(ode)299 b Fx(are:)457 b Fu(N)p
+37007 48753 349 45 v 419 w(VWL2Norm)p Fx(,)314 b Fu(N)p
+43276 48753 V 418 w(VL1Norm)p Fx(,)0 50081 y Fu(N)p 651
+50081 V 419 w(VWrmsNormMask)p Fx(,)290 b Fu(N)p 9801
+50081 V 418 w(VConstrMask)p Fx(,)g Fu(N)p 17788 50081
+V 418 w(VCloneEmpty)p Fx(,)g(and)267 b Fu(N)p 27825 50081
+V 419 w(VMinQuotient)p Fx(.)460 b(Therefore)268 b(a)f(user-supplied)0
+51410 y Fv(nvector)369 b Fx(mo)31 b(dule)370 b(for)g
+Fv(cv)-25 b(ode)369 b Fx(could)h(omit)h(these)e(\257v)-31
+b(e)370 b(functions.)p Black Black eop
+%%Page: 93 101
+93 100 bop Black Black 4000 15295 a Ft(Chapter)861 b(7)4000
+20848 y Fw(Pro)-86 b(viding)1033 b(Alternate)g(Linear)g(Solv)-86
+b(er)4000 24169 y(Mo)86 b(dules)4000 29943 y Fx(The)434
+b(cen)-31 b(tral)435 b Fv(cv)-25 b(ode)435 b Fx(mo)31
+b(dule)435 b(in)-31 b(terfaces)435 b(with)g(the)f(linear)h(solv)-31
+b(er)434 b(mo)31 b(dule)435 b(to)g(b)31 b(e)434 b(used)f(b)-31
+b(y)434 b(w)-31 b(a)g(y)436 b(of)e(calls)h(to)4000 31272
+y(four)318 b(routines.)476 b(These)318 b(are)g(denoted)g(here)g(b)-31
+b(y)318 b Fu(linit)p Fx(,)329 b Fu(lsetup)p Fx(,)g Fu(lsolve)p
+Fx(,)h(and)318 b Fu(lfree)p Fx(.)476 b(Brie\260y)-92
+b(,)329 b(their)318 b(purp)31 b(oses)4000 32600 y(are)369
+b(as)g(follo)-31 b(ws:)p Black 5660 34869 a Fp(\262)p
+Black 554 w Fu(linit)p Fx(:)494 b(initialize)372 b(and)d(allo)31
+b(cate)372 b(memory)e(sp)31 b(eci\257c)369 b(to)h(the)f(linear)h(solv)
+-31 b(er;)p Black 5660 37157 a Fp(\262)p Black 554 w
+Fu(lsetup)p Fx(:)494 b(ev)-61 b(aluate)370 b(and)g(prepro)31
+b(cess)367 b(the)j(Jacobian)g(or)f(preconditioner;)p
+Black 5660 39445 a Fp(\262)p Black 554 w Fu(lsolve)p
+Fx(:)494 b(solv)-31 b(e)370 b(the)f(linear)h(system;)p
+Black 5660 41733 a Fp(\262)p Black 554 w Fu(lfree)p Fx(:)494
+b(free)368 b(the)i(linear)g(solv)-31 b(er)369 b(memory)-92
+b(.)4000 44003 y(A)407 b(linear)h(solv)-31 b(er)408 b(mo)31
+b(dule)408 b(m)-31 b(ust)407 b(also)h(pro)-31 b(vide)408
+b(a)g(user-callable)g(sp)31 b(eci\257cation)409 b(routine)e(\(lik)-31
+b(e)409 b(those)f(describ)31 b(ed)4000 45331 y(in)342
+b Fp(x)p Fx(5.5.2\))j(whic)-31 b(h)343 b(will)g(attac)-31
+b(h)344 b(the)f(ab)31 b(o)-31 b(v)g(e)343 b(four)f(routines)g(to)h(the)
+f(main)h Fv(cv)-25 b(ode)343 b Fx(memory)g(blo)31 b(c)-31
+b(k.)484 b(Note)343 b(that)g(of)4000 46659 y(the)301
+b(four)h(in)-31 b(terface)302 b(routines,)316 b(only)302
+b(the)f Fu(lsolve)h Fx(routine)g(is)f(required.)470 b(The)301
+b Fu(lfree)h Fx(routine)g(m)-31 b(ust)301 b(b)31 b(e)301
+b(pro)-31 b(vided)4000 47988 y(only)370 b(if)g(the)f(solv)-31
+b(er)370 b(sp)31 b(eci\257cation)371 b(routine)f(mak)-31
+b(es)370 b(an)-31 b(y)370 b(memory)g(allo)31 b(cation.)5660
+49334 y(These)356 b(four)g(routines)h(that)g(in)-31 b(terface)357
+b(b)31 b(et)-31 b(w)g(een)357 b Fv(cv)-25 b(ode)357 b
+Fx(and)f(the)g(linear)h(solv)-31 b(er)357 b(mo)31 b(dule)357
+b(necessarily)f(ha)-31 b(v)g(e)4000 50663 y(\257xed)474
+b(call)h(sequences.)807 b(Th)-31 b(us,)501 b(a)474 b(user)f(wishing)j
+(to)e(implemen)-31 b(t)477 b(another)e(linear)g(solv)-31
+b(er)474 b(within)i(the)e Fv(cv)-25 b(ode)4000 51991
+y Fx(pac)-31 b(k)-61 b(age)457 b(m)-31 b(ust)456 b(adhere)f(to)h(this)g
+(set)g(of)g(in)-31 b(terfaces.)752 b(The)456 b(follo)-31
+b(wing)459 b(is)c(a)h(complete)h(description)g(of)f(the)g(call)4000
+53320 y(list)375 b(for)g(eac)-31 b(h)375 b(of)g(these)f(routines.)509
+b(Note)376 b(that)g(the)e(call)i(list)f(of)g(eac)-31
+b(h)375 b(routine)h(includes)f(a)f(p)31 b(oin)-31 b(ter)376
+b(to)f(the)g(main)4000 54648 y Fv(cv)-25 b(ode)369 b
+Fx(memory)h(blo)31 b(c)-31 b(k,)371 b(b)-31 b(y)369 b(whic)-31
+b(h)370 b(the)f(routine)g(can)g(access)g(v)-61 b(arious)369
+b(data)h(related)f(to)h(the)f Fv(cv)-25 b(ode)369 b Fx(solution.)4000
+55976 y(The)345 b(con)-31 b(ten)g(ts)346 b(of)g(this)f(memory)h(blo)31
+b(c)-31 b(k)346 b(are)f(giv)-31 b(en)346 b(in)f(the)g(\257le)g
+Fu(cvode)p 33693 55976 349 45 v 419 w(impl.h)h Fx(\(but)g(not)f(repro)
+31 b(duced)344 b(here,)350 b(for)4000 57305 y(the)369
+b(sak)-31 b(e)370 b(of)g(space\).)4000 60280 y Fy(Initialization)423
+b(routine.)1107 b Fx(The)370 b(t)-31 b(yp)31 b(e)370
+b(de\257nition)g(of)g Fu(linit)g Fx(is)p 4000 62247 3659
+45 v 4000 63588 45 1341 v 4376 63255 a Fu(linit)p 7614
+63588 V 4000 63632 3659 45 v Black 4000 65002 a Fx(De\257nition)p
+Black 2034 w Fu(int)582 b(\(*linit\)\(CVodeMem)h(cv)p
+24831 65002 349 45 v 419 w(mem\);)p Black 4000 66810
+a Fx(Purp)31 b(ose)p Black 2884 w(The)416 b(purp)31 b(ose)415
+b(of)i Fu(linit)f Fx(is)g(to)h(complete)g(initializations)k(for)416
+b(sp)31 b(eci\257c)415 b(linear)i(solv)-31 b(er,)428
+b(suc)-31 b(h)416 b(as)10814 68139 y(coun)-31 b(ters)369
+b(and)h(statistics.)p Black 4000 69947 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cv)p 12046 69947 V 419 w(mem)p
+Black 554 w Fx(is)369 b(the)g Fv(cv)-25 b(ode)370 b Fx(memory)g(p)31
+b(oin)-31 b(ter)370 b(of)g(t)-31 b(yp)31 b(e)370 b Fu(CVodeMem)p
+Fx(.)p Black 4000 71755 a(Return)f(v)-61 b(alue)p Black
+554 w(An)408 b Fu(linit)i Fx(function)f(should)g(return)f(0)h(if)g(it)g
+(has)g(successfully)f(initialized)k(the)d Fv(cv)-25 b(ode)409
+b Fx(linear)10814 73083 y(solv)-31 b(er)370 b(and)f Fp(\241)p
+Fx(1)g(otherwise.)p Black 4000 74891 a(Notes)p Black
+4072 w(If)g(an)g(error)g(do)31 b(es)368 b(o)31 b(ccur,)370
+b(an)f(appropriate)h(message)g(should)g(b)31 b(e)368
+b(sen)-31 b(t)370 b(to)g Fu(cv)p 43644 74891 V 418 w(mem->cv)p
+48129 74891 V 420 w(errfp)p Fx(.)4000 77867 y Fy(Setup)426
+b(routine.)1107 b Fx(The)370 b(t)-31 b(yp)31 b(e)369
+b(de\257nition)i(of)f Fu(lsetup)g Fx(is)p Black Black
+eop
+%%Page: 94 102
+94 101 bop Black 0 2701 a Fy(94)22553 b(Pro)-35 b(viding)425
+b(Alternate)h(Linear)e(Solv)-35 b(er)425 b(Mo)35 b(dules)p
+0 3144 48001 45 v Black 0 5965 4240 45 v 0 7552 45 1587
+v 376 6974 a Fu(lsetup)p 4195 7552 V 0 7596 4240 45 v
+Black 0 9037 a Fx(De\257nition)p Black 2034 w Fu(int)582
+b(\(*lsetup\)\()q(CVodeMem)g(cv)p 21412 9037 349 45 v
+419 w(mem,)g(int)f(convfail,)i(N)p 33454 9037 V 419 w(Vector)f(ypred,)
+14950 10365 y(N)p 15601 10365 V 419 w(Vector)g(fpred,)g(booleantype)h
+(*jcurPtr,)14950 11693 y(N)p 15601 11693 V 419 w(Vector)f(vtemp1,)g(N)p
+25318 11693 V 418 w(Vector)g(vtemp2,)h(N)p 35035 11693
+V 418 w(Vector)f(vtemp3\);)p Black 0 13367 a Fx(Purp)31
+b(ose)p Black 2884 w(The)429 b(job)h(of)g Fu(lsetup)f
+Fx(is)g(to)h(prepare)f(the)g(linear)h(solv)-31 b(er)430
+b(for)f(subsequen)-31 b(t)429 b(calls)h(to)g Fu(lsolve)p
+Fx(.)673 b(It)6814 14695 y(ma)-31 b(y)370 b(re-compute)g
+(Jacobian-related)i(data)e(is)f(it)h(deems)f(necessary)-92
+b(.)p Black 0 16419 a(Argumen)-31 b(ts)p Black Black
+1517 w Fu(cv)p 8046 16419 V 419 w(mem)p Black 1879 w
+Fx(is)369 b(the)g Fv(cv)-25 b(ode)370 b Fx(memory)g(p)31
+b(oin)-31 b(ter)370 b(of)g(t)-31 b(yp)31 b(e)370 b Fu(CVodeMem)p
+Fx(.)p Black 6814 17921 a Fu(convfail)p Black 555 w Fx(is)524
+b(an)g(input)h(\260ag)f(used)g(to)h(indicate)g(an)-31
+b(y)525 b(problem)g(that)g(o)31 b(ccurred)523 b(during)i(the)12017
+19249 y(solution)428 b(of)f(the)g(nonlinear)h(equation)h(on)e(the)g
+(curren)-31 b(t)426 b(time)i(step)e(for)h(whic)-31 b(h)428
+b(the)12017 20578 y(linear)437 b(solv)-31 b(er)437 b(is)g(b)31
+b(eing)437 b(used.)695 b(This)437 b(\260ag)g(can)g(b)31
+b(e)436 b(used)g(to)i(help)f(decide)g(whether)12017 21906
+y(the)h(Jacobian)h(data)g(k)-31 b(ept)439 b(b)-31 b(y)438
+b(a)g Fv(cv)-25 b(ode)439 b Fx(linear)f(solv)-31 b(er)438
+b(needs)g(to)g(b)31 b(e)438 b(up)31 b(dated)438 b(or)12017
+23234 y(not.)493 b(Its)369 b(p)31 b(ossible)369 b(v)-61
+b(alues)370 b(are:)p Black 12980 24910 a Fp(\262)p Black
+554 w Fu(CV)p 15319 24910 V 418 w(NO)p 16899 24910 V
+419 w(FAILURES)p Fx(:)314 b(this)f(v)-61 b(alue)313 b(is)g(passed)f(to)
+h Fu(lsetup)g Fx(if)g(either)g(this)g(is)g(the)f(\257rst)14087
+26239 y(call)364 b(for)f(this)h(step,)h(or)e(the)g(lo)31
+b(cal)365 b(error)d(test)i(failed)g(on)g(the)f(previous)h(attempt)14087
+27567 y(at)370 b(this)f(step)g(\(but)h(the)g(Newton)g(iteration)i(con)
+-31 b(v)g(erged\).)p Black 12980 29069 a Fp(\262)p Black
+554 w Fu(CV)p 15319 29069 V 418 w(FAIL)p 18061 29069
+V 419 w(BAD)p 20223 29069 V 419 w(J)p Fx(:)344 b(this)f(v)-61
+b(alue)343 b(is)g(passed)f(to)i Fu(lsetup)g Fx(if)f(\(a\))h(the)f
+(previous)g(New-)14087 30398 y(ton)445 b(corrector)g(iteration)i(did)e
+(not)h(con)-31 b(v)g(erge)446 b(and)f(the)g(linear)h(solv)-31
+b(er's)445 b(setup)14087 31726 y(routine)413 b(indicated)h(that)g(its)g
+(Jacobian-related)h(data)f(is)e(not)i(curren)-31 b(t,)423
+b(or)413 b(\(b\))14087 33054 y(during)290 b(the)g(previous)g(Newton)h
+(corrector)f(iteration,)309 b(the)290 b(linear)g(solv)-31
+b(er's)291 b(solv)-31 b(e)14087 34383 y(routine)296 b(failed)h(in)e(a)h
+(reco)-31 b(v)g(erable)297 b(manner)e(and)h(the)g(linear)g(solv)-31
+b(er's)296 b(setup)f(rou-)14087 35711 y(tine)370 b(indicated)g(that)h
+(its)e(Jacobian-related)j(data)f(is)e(not)h(curren)-31
+b(t.)p Black 12980 37213 a Fp(\262)p Black 554 w Fu(CV)p
+15319 37213 V 418 w(FAIL)p 18061 37213 V 419 w(OTHER)p
+Fx(:)495 b(this)e(v)-61 b(alue)494 b(is)f(passed)f(to)i
+Fu(lsetup)g Fx(if)f(during)h(the)f(curren)-31 b(t)14087
+38542 y(in)g(ternal)323 b(step)f(try)-92 b(,)332 b(the)323
+b(previous)f(Newton)i(iteration)g(failed)g(to)e(con)-31
+b(v)g(erge)324 b(ev)-31 b(en)14087 39870 y(though)370
+b(the)f(linear)h(solv)-31 b(er)370 b(w)-31 b(as)370 b(using)f(curren)
+-31 b(t)369 b(Jacobian-related)j(data.)p Black 6814 41546
+a Fu(ypred)p Black 2298 w Fx(is)d(the)g(predicted)h Fu(y)f
+Fx(v)-31 b(ector)370 b(for)f(the)g(curren)-31 b(t)369
+b Fv(cv)-25 b(ode)370 b Fx(in)-31 b(ternal)371 b(step.)p
+Black 6814 43048 a Fu(fpred)p Black 2298 w Fx(is)e(the)g(v)-61
+b(alue)370 b(of)g(the)f(righ)-31 b(t-hand)371 b(side)e(at)h
+Fu(ypred)p Fx(,)g(i.e.)493 b Fm(f)119 b Fx(\()p Fm(t)37061
+43214 y Fk(n)37664 43048 y Fm(;)184 b(y)38698 43214 y
+Fk(pr)24 b(ed)40526 43048 y Fx(\).)p Black 6814 44551
+a Fu(jcurPtr)p Black 1136 w Fx(is)339 b(a)h(p)31 b(oin)-31
+b(ter)340 b(to)g(a)g(b)31 b(o)g(olean)340 b(to)h(b)31
+b(e)339 b(\257lled)h(in)f(b)-31 b(y)340 b Fu(lsetup)p
+Fx(.)484 b(The)339 b(function)i(should)f(set)12017 45879
+y Fu(*jcurPtr)582 b(=)f(TRUE)404 b Fx(if)g(its)h(Jacobian)g(data)g(is)e
+(curren)-31 b(t)404 b(after)g(the)g(call)h(and)e(should)12017
+47207 y(set)260 b Fu(*jcurPtr)582 b(=)f(FALSE)261 b Fx(if)g(its)f
+(Jacobian)i(data)g(is)e(not)h(curren)-31 b(t.)456 b(If)260
+b Fu(lsetup)h Fx(calls)g(for)12017 48536 y(re-ev)-61
+b(aluation)315 b(of)g(Jacobian)g(data)h(\(based)e(on)g
+Fu(convfail)h Fx(and)f Fv(cv)-25 b(ode)315 b Fx(state)g(data\),)12017
+49864 y(it)489 b(should)f(return)g Fu(*jcurPtr)582 b(=)f(TRUE)489
+b Fx(unconditionally;)552 b(otherwise)489 b(an)g(in\257nite)12017
+51192 y(lo)31 b(op)370 b(can)f(result.)p Black 6814 52695
+a Fu(vtemp1)p Black Black 6814 54197 a(vtemp2)p Black
+Black 6814 55699 a(vtemp3)p Black 1717 w Fx(are)g(temp)31
+b(orary)370 b(v)-61 b(ariables)369 b(of)h(t)-31 b(yp)31
+b(e)370 b Fu(N)p 28276 55699 V 418 w(Vector)g Fx(pro)-31
+b(vided)370 b(for)f(use)g(b)-31 b(y)369 b Fu(lsetup)p
+Fx(.)p Black 0 57423 a(Return)g(v)-61 b(alue)p Black
+554 w(The)459 b Fu(lsetup)g Fx(routine)g(should)f(return)g(0)h(if)g
+(successful,)480 b(a)459 b(p)31 b(ositiv)-31 b(e)460
+b(v)-61 b(alue)459 b(for)f(a)h(reco)-31 b(v)g(erable)6814
+58751 y(error,)369 b(and)g(a)g(negativ)-31 b(e)372 b(v)-61
+b(alue)369 b(for)h(an)f(unreco)-31 b(v)g(erable)370 b(error.)0
+61587 y Fy(Solv)-35 b(e)425 b(routine.)1108 b Fx(The)369
+b(t)-31 b(yp)31 b(e)370 b(de\257nition)g(of)g Fu(lsolve)g
+Fx(is)p 0 63415 4240 45 v 0 64756 45 1341 v 376 64424
+a Fu(lsolve)p 4195 64756 V 0 64800 4240 45 v Black 0
+66152 a Fx(De\257nition)p Black 2034 w Fu(int)582 b(\(*lsolve\)\()q
+(CVodeMem)g(cv)p 21412 66152 349 45 v 419 w(mem,)g(N)p
+25318 66152 V 418 w(Vector)g(b,)g(N)p 32129 66152 V 419
+w(Vector)g(weight,)14950 67481 y(N)p 15601 67481 V 419
+w(Vector)g(ycur,)g(N)p 24156 67481 V 418 w(Vector)g(fcur\);)p
+Black 0 69154 a Fx(Purp)31 b(ose)p Black 2884 w(The)468
+b(routine)h Fu(lsolve)f Fx(m)-31 b(ust)469 b(solv)-31
+b(e)468 b(the)g(linear)h(equation)h Fm(M)121 b(x)471
+b Fx(=)h Fm(b)p Fx(,)493 b(where)467 b Fm(M)589 b Fx(is)467
+b(some)i(ap-)6814 70482 y(pro)-31 b(ximation)520 b(to)d
+Fm(I)430 b Fp(\241)344 b Fm(\260)61 b(J)106 b Fx(,)555
+b Fm(J)659 b Fx(=)553 b(\()p Fm(@)61 b(f)119 b(=@)61
+b(y)40 b Fx(\)\()p Fm(t)26486 70648 y Fk(n)27090 70482
+y Fm(;)184 b(y)28124 70648 y Fk(cur)29534 70482 y Fx(\))516
+b(and)h(the)f(righ)-31 b(t-hand)518 b(side)e(v)-31 b(ector)518
+b Fm(b)e Fx(is)6814 71810 y(input.)p Black 0 73534 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cv)p 8046 73534 V 419 w(mem)p
+Black 554 w Fx(is)369 b(the)g Fv(cv)-25 b(ode)370 b Fx(memory)g(p)31
+b(oin)-31 b(ter)370 b(of)g(t)-31 b(yp)31 b(e)370 b Fu(CVodeMem)p
+Fx(.)p Black 6814 75036 a Fu(b)p Black 3297 w Fx(is)347
+b(the)g(righ)-31 b(t-hand)348 b(side)f(v)-31 b(ector)348
+b Fm(b)p Fx(.)485 b(The)347 b(solution)i(is)e(to)h(b)31
+b(e)347 b(returned)f(in)h(the)h(v)-31 b(ector)347 b Fu(b)p
+Fx(.)p Black 6814 76539 a Fu(weight)p Black 554 w Fx(is)421
+b(a)h(v)-31 b(ector)422 b(that)g(con)-31 b(tains)423
+b(the)e(error)f(w)-31 b(eigh)g(ts.)650 b(These)421 b(are)g(the)h
+(recipro)31 b(cals)421 b(of)h(the)10692 77867 y Fm(W)11737
+78033 y Fk(i)12475 77867 y Fx(of)369 b(\(3.6\).)p Black
+Black eop
+%%Page: 95 103
+95 102 bop Black 50727 2701 a Fy(95)p 4000 3144 48001
+45 v Black Black 10814 6974 a Fu(ycur)p Black 1554 w
+Fx(is)369 b(a)g(v)-31 b(ector)370 b(that)h(con)-31 b(tains)370
+b(the)g(solv)-31 b(er's)369 b(curren)-31 b(t)369 b(appro)-31
+b(ximation)373 b(to)d Fm(y)40 b Fx(\()p Fm(t)46586 7140
+y Fk(n)47188 6974 y Fx(\).)p Black 10814 8524 a Fu(fcur)p
+Black 1554 w Fx(is)369 b(a)g(v)-31 b(ector)370 b(that)h(con)-31
+b(tains)370 b Fm(f)119 b Fx(\()p Fm(t)28282 8690 y Fk(n)28885
+8524 y Fm(;)184 b(y)29919 8690 y Fk(cur)31329 8524 y
+Fx(\).)p Black 4000 10295 a(Return)369 b(v)-61 b(alue)p
+Black 554 w Fu(lsolve)468 b Fx(returns)f(a)g(p)31 b(ositiv)-31
+b(e)469 b(v)-61 b(alue)468 b(for)g(a)f(reco)-31 b(v)g(erable)469
+b(error)d(and)i(a)g(negativ)-31 b(e)469 b(v)-61 b(alue)468
+b(for)g(an)10814 11623 y(unreco)-31 b(v)g(erable)370
+b(error.)492 b(Success)368 b(is)h(indicated)i(b)-31 b(y)369
+b(a)h(0)f(return)g(v)-61 b(alue.)4000 14500 y Fy(Memory)426
+b(deallo)35 b(cation)425 b(routine.)1107 b Fx(The)370
+b(t)-31 b(yp)31 b(e)370 b(de\257nition)g(of)g Fu(lfree)g
+Fx(is)p 4000 16369 3659 45 v 4000 17710 45 1341 v 4376
+17378 a Fu(lfree)p 7614 17710 V 4000 17754 3659 45 v
+Black 4000 19106 a Fx(De\257nition)p Black 2034 w Fu(void)582
+b(\(*lfree\)\(CVodeMem)h(cv)p 25412 19106 349 45 v 419
+w(mem\);)p Black 4000 20877 a Fx(Purp)31 b(ose)p Black
+2884 w(The)369 b(routine)h Fu(lfree)g Fx(should)g(free)e(up)h(an)-31
+b(y)370 b(memory)g(allo)31 b(cated)372 b(b)-31 b(y)369
+b(the)h(linear)g(solv)-31 b(er.)p Black 4000 22648 a(Argumen)g(ts)p
+Black 1517 w(The)369 b(argumen)-31 b(t)371 b Fu(cv)p
+19275 22648 V 419 w(mem)e Fx(is)g(the)h Fv(cv)-25 b(ode)370
+b Fx(memory)g(p)31 b(oin)-31 b(ter)370 b(of)f(t)-31 b(yp)31
+b(e)370 b Fu(CVodeMem)p Fx(.)p Black 4000 24420 a(Return)f(v)-61
+b(alue)p Black 554 w(This)370 b(routine)f(has)h(no)f(return)g(v)-61
+b(alue.)p Black 4000 26191 a(Notes)p Black 4072 w(This)396
+b(routine)h(is)f(called)h(once)f(a)g(problem)h(has)f(b)31
+b(een)395 b(completed)i(and)g(the)f(linear)g(solv)-31
+b(er)397 b(is)f(no)10814 27519 y(longer)370 b(needed.)p
+Black Black eop
+%%Page: 96 104
+96 103 bop Black Black Black Black eop
+%%Page: 97 105
+97 104 bop Black Black 4000 15276 a Ft(Chapter)861 b(8)4000
+20811 y Fw(Generic)1033 b(Linear)g(Solv)-86 b(ers)1033
+b(in)4000 24132 y(SUNDIALS)4000 29888 y Fx(In)432 b(this)h(c)-31
+b(hapter,)450 b(w)-31 b(e)433 b(describ)31 b(e)432 b(three)h(generic)g
+(linear)g(solv)-31 b(er)434 b(co)31 b(de)432 b(mo)31
+b(dules)434 b(that)g(are)e(included)i(in)f Fv(cv)-25
+b(ode)p Fx(,)4000 31216 y(but)363 b(whic)-31 b(h)363
+b(are)f(of)h(p)31 b(oten)-31 b(tial)365 b(use)d(as)h(generic)f(pac)-31
+b(k)-61 b(ages)363 b(in)g(themselv)-31 b(es,)365 b(either)e(in)g
+(conjunction)h(with)g(the)e(use)4000 32545 y(of)370 b
+Fv(cv)-25 b(ode)370 b Fx(or)f(separately)-92 b(.)493
+b(These)369 b(mo)31 b(dules)370 b(are:)p Black 5660 34716
+a Fp(\262)p Black 554 w Fx(The)401 b Fv(dense)g Fx(matrix)h(pac)-31
+b(k)-61 b(age,)410 b(whic)-31 b(h)402 b(includes)f(the)f(matrix)i(t)-31
+b(yp)31 b(e)401 b Fu(DenseMat)p Fx(,)410 b(macros)401
+b(and)g(functions)6767 36044 y(for)370 b Fu(DenseMat)g
+Fx(matrices,)g(and)g(functions)g(for)f(small)i(dense)d(matrices)j
+(treated)e(as)h(simple)g(arra)-31 b(y)369 b(t)-31 b(yp)31
+b(es.)p Black 5660 38237 a Fp(\262)p Black 554 w Fx(The)346
+b Fv(band)f Fx(matrix)i(pac)-31 b(k)-61 b(age,)352 b(whic)-31
+b(h)346 b(includes)g(the)f(matrix)i(t)-31 b(yp)31 b(e)346
+b Fu(BandMat)p Fx(,)351 b(macros)346 b(and)f(functions)i(for)6767
+39565 y Fu(BandMat)370 b Fx(matrices,)h(and)e(functions)i(for)e(small)h
+(band)g(matrices)g(treated)g(as)f(simple)h(arra)-31 b(y)370
+b(t)-31 b(yp)31 b(es.)p Black 5660 41758 a Fp(\262)p
+Black 554 w Fx(The)370 b Fv(spgmr)e Fx(pac)-31 b(k)-61
+b(age,)371 b(whic)-31 b(h)370 b(includes)f(a)h(solv)-31
+b(er)369 b(for)h(the)f(scaled)h(preconditioned)g(GMRES)f(metho)31
+b(d.)5660 43930 y(F)-92 b(or)457 b(the)h(sak)-31 b(e)457
+b(of)h(space,)480 b(the)458 b(functions)g(for)f Fu(DenseMat)i
+Fx(and)e Fu(BandMat)i Fx(matrices)f(and)g(the)f(functions)i(in)4000
+45258 y Fv(spgmr)372 b Fx(are)h(only)i(summarized)f(brie\260y)-92
+b(,)374 b(since)g(they)f(are)h(less)f(lik)-31 b(ely)375
+b(to)f(b)31 b(e)373 b(of)h(direct)f(use)g(in)h(connection)h(with)4000
+46586 y Fv(cv)-25 b(ode)p Fx(.)478 b(The)325 b(functions)h(for)e(small)
+i(dense)e(matrices)h(are)f(fully)i(describ)31 b(ed,)333
+b(b)31 b(ecause)324 b(w)-31 b(e)325 b(exp)31 b(ect)324
+b(that)i(they)f(will)4000 47915 y(b)31 b(e)461 b(useful)h(in)h(the)f
+(implemen)-31 b(tation)466 b(of)d(preconditioners)f(used)g(with)h(the)f
+(com)-31 b(bination)465 b(of)e Fv(cv)-25 b(ode)462 b
+Fx(and)h(the)4000 49243 y Fv(cvspgmr)368 b Fx(solv)-31
+b(er.)4000 52895 y Fs(8.1)1793 b(The)598 b(DENSE)h(mo)50
+b(dule)4000 55540 y Fq(8.1.1)1495 b(T)-42 b(yp)42 b(e)498
+b Fa(DenseMat)4000 57584 y Fx(The)369 b(t)-31 b(yp)31
+b(e)370 b Fu(DenseMat)g Fx(is)f(de\257ned)g(to)h(b)31
+b(e)369 b(a)g(p)31 b(oin)-31 b(ter)370 b(to)g(a)g(structure)e(with)j(a)
+e(size)g(and)h(a)f(data)i(\257eld:)p Black Black 4000
+59755 a Fu(typedef)582 b(struct)g({)5162 61084 y(long)g(int)g(size;)
+5162 62412 y(realtype)1164 b(**data;)4000 63740 y(})581
+b(*DenseMat;)4000 65912 y Fx(The)498 b Fo(size)g Fx(\257eld)h
+(indicates)g(the)f(n)-31 b(um)g(b)31 b(er)499 b(of)f(columns)h(\(whic)
+-31 b(h)500 b(is)e(the)g(same)h(as)f(the)g(n)-31 b(um)g(b)31
+b(er)498 b(of)h(ro)-31 b(ws\))499 b(of)g(a)4000 67240
+y(dense)i(matrix,)537 b(while)503 b(the)f Fo(data)f Fx(\257eld)h(is)f
+(a)h(t)-31 b(w)g(o)504 b(dimensional)g(arra)-31 b(y)502
+b(used)f(for)h(comp)31 b(onen)-31 b(t)503 b(storage.)892
+b(The)4000 68568 y(elemen)-31 b(ts)354 b(of)f(a)f(dense)g(matrix)i(are)
+f(stored)f(column)-31 b(wise)354 b(\(i.e)g(columns)g(are)e(stored)g
+(one)h(on)g(top)g(of)g(the)g(other)g(in)4000 69897 y(memory\).)479
+b(If)322 b Fu(A)h Fx(is)f(of)h(t)-31 b(yp)31 b(e)323
+b Fu(DenseMat)p Fx(,)334 b(then)323 b(the)g(\()p Fu(i)p
+Fx(,)p Fu(j)p Fx(\)-th)h(elemen)-31 b(t)324 b(of)f Fu(A)g
+Fx(\(with)h(0)308 b Fp(\267)323 b Fu(i)p Fx(,)332 b Fu(j)323
+b Fp(\267)f Fu(size)p Fp(\241)p Fx(1\))i(is)f(giv)-31
+b(en)4000 71225 y(b)g(y)432 b(the)g(expression)f Fu(\(A->data\)[j][i])i
+Fx(or)f(b)-31 b(y)432 b(the)f(expression)h Fu(\(A->data\)[0][j*size+i])
+p Fx(.)683 b(The)431 b(macros)4000 72553 y(b)31 b(elo)-31
+b(w)359 b(allo)-31 b(w)361 b(a)d(user)f(to)i(e\261cien)-31
+b(tly)360 b(access)e(individual)i(matrix)g(elemen)-31
+b(ts)359 b(without)h(writing)g(out)f(explicit)h(data)4000
+73882 y(structure)498 b(references)f(and)i(without)h(kno)-31
+b(wing)501 b(to)31 b(o)499 b(m)-31 b(uc)g(h)499 b(ab)31
+b(out)500 b(the)e(underlying)i(elemen)-31 b(t)499 b(storage.)882
+b(The)4000 75210 y(only)432 b(storage)g(assumption)h(needed)e(is)g
+(that)h(elemen)-31 b(ts)432 b(are)f(stored)g(column)-31
+b(wise)433 b(and)f(that)g(a)g(p)31 b(oin)-31 b(ter)432
+b(to)g(the)4000 76539 y Fu(j)p Fx(-th)389 b(column)g(of)g(elemen)-31
+b(ts)390 b(can)e(b)31 b(e)388 b(obtained)i(via)g(the)e
+Fu(DENSE)p 30981 76539 349 45 v 420 w(COL)g Fx(macro.)551
+b(Users)388 b(should)g(use)g(these)g(macros)4000 77867
+y(whenev)-31 b(er)369 b(p)31 b(ossible.)p Black Black
+eop
+%%Page: 98 106
+98 105 bop Black 0 2701 a Fy(98)25577 b(Generic)425 b(Linear)g(Solv)-35
+b(ers)425 b(in)f(SUNDIALS)p 0 3144 48001 45 v Black 0
+6974 a Fq(8.1.2)1495 b(Accessor)501 b(Macros)0 9069 y
+Fx(The)277 b(follo)-31 b(wing)280 b(t)-31 b(w)g(o)278
+b(macros)f(are)f(de\257ned)g(b)-31 b(y)277 b(the)g Fv(dense)g
+Fx(mo)31 b(dule)277 b(to)g(pro)-31 b(vide)278 b(access)d(to)j(data)f
+(in)g(the)g Fu(DenseMat)0 10398 y Fx(t)-31 b(yp)31 b(e:)p
+Black 1660 12696 a Fp(\262)p Black 554 w Fu(DENSE)p 5742
+12696 349 45 v 420 w(ELEM)2767 14523 y Fx(Usage)370 b(:)493
+b Fu(DENSE)p 9777 14523 V 419 w(ELEM\(A,i,j\))583 b(=)e(a)p
+18913 14523 V 418 w(ij;)370 b Fx(or)f Fu(a)p 23381 14523
+V 419 w(ij)581 b(=)g(DENSE)p 29610 14523 V 419 w(ELEM\(A,i,j\);)2767
+16350 y(DENSE)p 5742 16350 V 420 w(ELEM)369 b Fx(references)f(the)h(\()
+p Fu(i)p Fx(,)p Fu(j)p Fx(\)-th)j(elemen)-31 b(t)370
+b(of)g(the)f Fm(N)e Fp(\243)246 b Fm(N)491 b Fu(DenseMat)370
+b(A)p Fx(,)f(0)308 b Fp(\267)369 b Fu(i)p Fx(,)h Fu(j)f
+Fp(\267)307 b Fm(N)368 b Fp(\241)246 b Fx(1.)p Black
+1660 18676 a Fp(\262)p Black 554 w Fu(DENSE)p 5742 18676
+V 420 w(COL)2767 20503 y Fx(Usage)370 b(:)493 b Fu(col)p
+8615 20503 V 419 w(j)581 b(=)g(DENSE)p 14263 20503 V
+419 w(COL\(A,j\);)2767 22331 y(DENSE)p 5742 22331 V 420
+w(COL)417 b Fx(references)f(the)h Fu(j)p Fx(-th)h(column)g(of)g(the)g
+Fm(N)399 b Fp(\243)278 b Fm(N)538 b Fu(DenseMat)418 b(A)p
+Fx(,)g(0)388 b Fp(\267)417 b Fu(j)g Fp(\267)388 b Fm(N)399
+b Fp(\241)278 b Fx(1.)637 b(The)417 b(t)-31 b(yp)31 b(e)2767
+23659 y(of)404 b(the)e(expression)h Fu(DENSE)p 14345
+23659 V 419 w(COL\(A,j\))h Fx(is)e Fu(realtype)583 b(*)402
+b Fx(.)593 b(After)403 b(the)g(assignmen)-31 b(t)404
+b(in)f(the)g(usage)g(ab)31 b(o)-31 b(v)g(e,)2767 24987
+y Fu(col)p 4580 24987 V 419 w(j)467 b Fx(ma)-31 b(y)468
+b(b)31 b(e)466 b(treated)i(as)e(an)h(arra)-31 b(y)467
+b(indexed)h(from)f(0)g(to)g Fm(N)433 b Fp(\241)311 b
+Fx(1.)785 b(The)467 b(\()p Fu(i)p Fx(,)492 b Fu(j)p Fx(\)-th)468
+b(elemen)-31 b(t)468 b(of)f Fu(A)g Fx(is)2767 26316 y(referenced)369
+b(b)-31 b(y)369 b Fu(col)p 11382 26316 V 419 w(j[i])p
+Fx(.)0 30505 y Fq(8.1.3)1495 b(F)-125 b(unctions)0 32600
+y Fx(The)377 b(follo)-31 b(wing)381 b(functions)d(for)g
+Fu(DenseMat)g Fx(matrices)g(are)f(a)-31 b(v)-61 b(ailable)379
+b(in)f(the)f Fv(dense)h Fx(pac)-31 b(k)-61 b(age.)518
+b(F)-92 b(or)376 b(full)i(details,)0 33928 y(see)369
+b(the)g(header)g(\257le)g Fu(dense.h)p Fx(.)p Black 1660
+36226 a Fp(\262)p Black 554 w Fu(DenseAllocMat)p Fx(:)495
+b(allo)31 b(cation)372 b(of)e(a)g Fu(DenseMat)g Fx(matrix;)p
+Black 1660 38553 a Fp(\262)p Black 554 w Fu(DenseAllocPiv)p
+Fx(:)495 b(allo)31 b(cation)372 b(of)e(a)g(piv)-31 b(ot)370
+b(arra)-31 b(y)370 b(for)f(use)g(with)h Fu(DenseFactor)p
+Fx(/)p Fu(DenseBacksolve)p Fx(;)p Black 1660 40879 a
+Fp(\262)p Black 554 w Fu(DenseFactor)p Fx(:)495 b(LU)369
+b(factorization)j(with)f(partial)g(piv)-31 b(oting;)p
+Black 1660 43205 a Fp(\262)p Black 554 w Fu(DenseBacksolve)p
+Fx(:)495 b(solution)371 b(of)f Fm(Ax)307 b Fx(=)g Fm(b)370
+b Fx(using)f(LU)g(factorization;)p Black 1660 45531 a
+Fp(\262)p Black 554 w Fu(DenseZero)p Fx(:)494 b(load)371
+b(a)e(matrix)i(with)f(zeros;)p Black 1660 47857 a Fp(\262)p
+Black 554 w Fu(DenseCopy)p Fx(:)494 b(cop)-31 b(y)370
+b(one)g(matrix)g(to)g(another;)p Black 1660 50183 a Fp(\262)p
+Black 554 w Fu(DenseScale)p Fx(:)494 b(scale)370 b(a)f(matrix)i(b)-31
+b(y)370 b(a)f(scalar;)p Black 1660 52509 a Fp(\262)p
+Black 554 w Fu(DenseAddI)p Fx(:)i(incremen)-31 b(t)370
+b(a)g(matrix)h(b)-31 b(y)369 b(the)g(iden)-31 b(tit)g(y)372
+b(matrix;)p Black 1660 54835 a Fp(\262)p Black 554 w
+Fu(DenseFreeMat)p Fx(:)495 b(free)368 b(memory)j(for)e(a)g
+Fu(DenseMat)i Fx(matrix;)p Black 1660 57161 a Fp(\262)p
+Black 554 w Fu(DenseFreePiv)p Fx(:)495 b(free)368 b(memory)j(for)e(a)g
+(piv)-31 b(ot)371 b(arra)-31 b(y;)p Black 1660 59487
+a Fp(\262)p Black 554 w Fu(DensePrint)p Fx(:)494 b(prin)-31
+b(t)370 b(a)g Fu(DenseMat)g Fx(matrix)g(to)g(standard)g(output.)0
+63676 y Fq(8.1.4)1495 b(Small)500 b(Dense)e(Matrix)h(F)-125
+b(unctions)0 65772 y Fx(The)369 b(follo)-31 b(wing)373
+b(functions)d(for)g(small)g(dense)f(matrices)h(are)f(a)-31
+b(v)-61 b(ailable)372 b(in)d(the)h Fv(dense)f Fx(pac)-31
+b(k)-61 b(age:)p Black 1660 68070 a Fp(\262)p Black 554
+w Fu(denalloc)2767 69897 y(denalloc\(n\))403 b Fx(allo)31
+b(cates)404 b(storage)e(for)g(an)g Fu(n)f Fx(b)-31 b(y)402
+b Fu(n)g Fx(dense)e(matrix.)592 b(It)401 b(returns)g(a)g(p)31
+b(oin)-31 b(ter)403 b(to)f(the)g(newly)2767 71225 y(allo)31
+b(cated)528 b(storage)d(if)h(successful.)959 b(If)524
+b(the)h(memory)h(request)f(cannot)h(b)31 b(e)524 b(satis\257ed,)565
+b(then)525 b Fu(denalloc)2767 72553 y Fx(returns)344
+b Fu(NULL)p Fx(.)h(The)g(underlying)g(t)-31 b(yp)31 b(e)345
+b(of)g(the)f(dense)g(matrix)i(returned)d(is)i Fu(realtype**)p
+Fx(.)485 b(If)345 b(w)-31 b(e)344 b(allo)31 b(cate)2767
+73882 y(a)538 b(dense)e(matrix)j Fu(realtype**)582 b(a)537
+b Fx(b)-31 b(y)537 b Fu(a)582 b(=)f(denalloc\(n\))p Fx(,)g(then)537
+b Fu(a[j][i])h Fx(references)e(the)h(\()p Fu(i)p Fx(,)p
+Fu(j)p Fx(\)-th)2767 75210 y(elemen)-31 b(t)341 b(of)f(the)g(matrix)h
+Fu(a)p Fx(,)k(0)308 b Fp(\267)340 b Fu(i)p Fx(,)345 b
+Fu(j)340 b Fp(\267)f Fu(n)p Fp(\241)p Fx(1,)346 b(and)340
+b Fu(a[j])g Fx(is)f(a)h(p)31 b(oin)-31 b(ter)340 b(to)g(the)f(\257rst)g
+(elemen)-31 b(t)341 b(in)f(the)f Fu(j)p Fx(-th)2767 76539
+y(column)420 b(of)g Fu(a)p Fx(.)641 b(The)419 b(lo)31
+b(cation)421 b Fu(a[0])e Fx(con)-31 b(tains)420 b(a)f(p)31
+b(oin)-31 b(ter)420 b(to)f Fu(n)30073 76137 y Fl(2)30989
+76539 y Fx(con)-31 b(tiguous)420 b(lo)31 b(cations)421
+b(whic)-31 b(h)420 b(con)-31 b(tain)2767 77867 y(the)370
+b(elemen)-31 b(ts)370 b(of)g Fu(a)p Fx(.)p Black Black
+eop
+%%Page: 99 107
+99 106 bop Black 4000 2701 a Fy(8.1)425 b(The)g(DENSE)g(mo)35
+b(dule)33216 b(99)p 4000 3144 48001 45 v Black Black
+5660 6974 a Fp(\262)p Black 554 w Fu(denallocpiv)6767
+8970 y(denallocpiv\(n\))413 b Fx(allo)31 b(cates)413
+b(an)e(arra)-31 b(y)411 b(of)h Fu(n)f Fx(in)-31 b(tegers.)618
+b(It)411 b(returns)f(a)h(p)31 b(oin)-31 b(ter)411 b(to)h(the)f(\257rst)
+f(elemen)-31 b(t)413 b(in)6767 10299 y(the)370 b(arra)-31
+b(y)369 b(if)h(successful.)492 b(It)369 b(returns)f Fu(NULL)i
+Fx(if)g(the)f(memory)h(request)f(could)h(not)g(b)31 b(e)369
+b(satis\257ed.)p Black 5660 12963 a Fp(\262)p Black 554
+w Fu(gefa)6767 14960 y(gefa\(a,n,p\))414 b Fx(factors)f(the)g
+Fu(n)f Fx(b)-31 b(y)412 b Fu(n)h Fx(dense)e(matrix)j
+Fu(a)p Fx(.)622 b(It)412 b(o)-31 b(v)g(erwrites)414 b(the)e(elemen)-31
+b(ts)414 b(of)e Fu(a)h Fx(with)g(its)g(LU)6767 16288
+y(factors)370 b(and)g(k)-31 b(eeps)369 b(trac)-31 b(k)370
+b(of)f(the)h(piv)-31 b(ot)371 b(ro)-31 b(ws)369 b(c)-31
+b(hosen)369 b(in)h(the)f(piv)-31 b(ot)371 b(arra)-31
+b(y)370 b Fu(p)p Fx(.)6767 18285 y(A)475 b(successful)f(LU)h
+(factorization)j(lea)-31 b(v)g(es)476 b(the)f(matrix)i
+Fu(a)d Fx(and)h(the)g(piv)-31 b(ot)477 b(arra)-31 b(y)475
+b Fu(p)g Fx(with)h(the)f(follo)-31 b(wing)6767 19613
+y(information:)p Black 7788 22278 a(1.)p Black 555 w
+Fu(p[k])303 b Fx(con)-31 b(tains)304 b(the)e(ro)-31 b(w)303
+b(n)-31 b(um)g(b)31 b(er)303 b(of)g(the)g(piv)-31 b(ot)304
+b(elemen)-31 b(t)304 b(c)-31 b(hosen)302 b(at)i(the)e(b)31
+b(eginning)304 b(of)f(elimination)9203 23606 y(step)369
+b Fu(k)p Fx(,)g Fu(k)h Fx(=)307 b(0)p Fm(;)184 b Fx(1)p
+Fm(;)g(:::;)p Fu(n)p Fp(\241)p Fx(1.)p Black 7788 25603
+a(2.)p Black 555 w(If)500 b(the)h(unique)g(LU)g(factorization)j(of)d
+Fu(a)g Fx(is)f(giv)-31 b(en)502 b(b)-31 b(y)501 b Fm(P)154
+b(a)526 b Fx(=)h Fm(LU)121 b Fx(,)534 b(where)500 b Fm(P)654
+b Fx(is)501 b(a)g(p)31 b(erm)-31 b(utation)9203 26931
+y(matrix,)465 b Fm(L)444 b Fx(is)g(a)g(lo)-31 b(w)g(er)445
+b(triangular)h(matrix)g(with)f(all)h(1's)e(on)g(the)h(diagonal,)466
+b(and)444 b Fm(U)564 b Fx(is)444 b(an)h(upp)31 b(er)9203
+28259 y(triangular)331 b(matrix,)339 b(then)329 b(the)h(upp)31
+b(er)328 b(triangular)j(part)e(of)h Fu(a)f Fx(\(including)i(its)f
+(diagonal\))i(con)-31 b(tains)330 b Fm(U)9203 29588 y
+Fx(and)369 b(the)h(strictly)g(lo)-31 b(w)g(er)370 b(triangular)h(part)f
+(of)g Fu(a)f Fx(con)-31 b(tains)370 b(the)g(m)-31 b(ultipliers,)372
+b Fm(I)332 b Fp(\241)246 b Fm(L)p Fx(.)9203 31250 y Fu(gefa)331
+b Fx(returns)f(0)h(if)g(successful.)480 b(Otherwise)331
+b(it)g(encoun)-31 b(tered)332 b(a)f(zero)g(diagonal)i(elemen)-31
+b(t)332 b(during)g(the)9203 32579 y(factorization.)581
+b(In)397 b(this)h(case)f(it)h(returns)f(the)g(column)i(index)f(\(n)-31
+b(um)g(b)31 b(ered)398 b(from)g(one\))g(at)h(whic)-31
+b(h)398 b(it)9203 33907 y(encoun)-31 b(tered)369 b(the)h(zero.)p
+Black 5660 36572 a Fp(\262)p Black 554 w Fu(gesl)6767
+38568 y(gesl\(a,n,p,b\))510 b Fx(solv)-31 b(es)507 b(the)h
+Fu(n)f Fx(b)-31 b(y)508 b Fu(n)f Fx(linear)h(system)g
+Fm(ax)538 b Fx(=)f Fm(b)p Fx(.)908 b(It)507 b(assumes)g(that)h
+Fu(a)g Fx(has)f(b)31 b(een)507 b(LU-)6767 39896 y(factored)354
+b(and)f(the)g(piv)-31 b(ot)354 b(arra)-31 b(y)353 b Fu(p)g
+Fx(has)f(b)31 b(een)352 b(set)h(b)-31 b(y)353 b(a)f(successful)g(call)i
+(to)g Fu(gefa\(a,n,p\))p Fx(.)488 b(The)353 b(solution)6767
+41225 y Fm(x)369 b Fx(is)g(written)i(in)-31 b(to)370
+b(the)g Fu(b)f Fx(arra)-31 b(y)-92 b(.)p Black 5660 43889
+a Fp(\262)p Black 554 w Fu(denzero)6767 45886 y(denzero\(a,n\))371
+b Fx(sets)e(all)h(the)g(elemen)-31 b(ts)370 b(of)g(the)f
+Fu(n)g Fx(b)-31 b(y)370 b Fu(n)f Fx(dense)f(matrix)j
+Fu(a)e Fx(to)h(b)31 b(e)369 b(0)p Fm(:)p Fx(0;)p Black
+5660 48551 a Fp(\262)p Black 554 w Fu(dencopy)6767 50547
+y(dencopy\(a,b,n\))i Fx(copies)f(the)f Fu(n)h Fx(b)-31
+b(y)369 b Fu(n)g Fx(dense)g(matrix)h Fu(a)g Fx(in)-31
+b(to)370 b(the)g Fu(n)f Fx(b)-31 b(y)369 b Fu(n)g Fx(dense)g(matrix)i
+Fu(b)p Fx(;)p Black 5660 53212 a Fp(\262)p Black 554
+w Fu(denscale)6767 55208 y(denscale\(c,a,n\))h Fx(scales)d(ev)-31
+b(ery)369 b(elemen)-31 b(t)371 b(in)e(the)h Fu(n)f Fx(b)-31
+b(y)369 b Fu(n)g Fx(dense)g(matrix)h Fu(a)g Fx(b)-31
+b(y)369 b Fu(c)p Fx(;)p Black 5660 57873 a Fp(\262)p
+Black 554 w Fu(denaddI)6767 59870 y(denaddI\(a,n\))i
+Fx(incremen)-31 b(ts)370 b(the)f Fu(n)h Fx(b)-31 b(y)369
+b Fu(n)g Fx(dense)g(matrix)h Fu(a)f Fx(b)-31 b(y)370
+b(the)f(iden)-31 b(tit)g(y)372 b(matrix;)p Black 5660
+62534 a Fp(\262)p Black 554 w Fu(denfreepiv)6767 64531
+y(denfreepiv\(p\))f Fx(frees)e(the)g(piv)-31 b(ot)371
+b(arra)-31 b(y)370 b Fu(p)f Fx(allo)31 b(cated)371 b(b)-31
+b(y)370 b Fu(denallocpiv)p Fx(;)p Black 5660 67196 a
+Fp(\262)p Black 554 w Fu(denfree)6767 69192 y(denfree\(a\))h
+Fx(frees)d(the)i(dense)e(matrix)j Fu(a)e Fx(allo)31 b(cated)372
+b(b)-31 b(y)369 b Fu(denalloc)p Fx(;)p Black 5660 71857
+a Fp(\262)p Black 554 w Fu(denprint)6767 73853 y(denprint\(a,n\))481
+b Fx(prin)-31 b(ts)479 b(the)g Fu(n)f Fx(b)-31 b(y)479
+b Fu(n)g Fx(dense)f(matrix)i Fu(a)f Fx(to)h(standard)f(output)h(as)e
+(it)i(w)-31 b(ould)480 b(normally)6767 75182 y(app)31
+b(ear)380 b(on)f(pap)31 b(er.)522 b(It)379 b(is)h(in)-31
+b(tended)380 b(as)f(a)g(debugging)i(to)31 b(ol)381 b(with)f(small)h(v)
+-61 b(alues)379 b(of)h Fu(n)p Fx(.)522 b(The)380 b(elemen)-31
+b(ts)380 b(are)6767 76510 y(prin)-31 b(ted)370 b(using)g(the)f
+Fu(\045g)g Fx(option.)495 b(A)369 b(blank)h(line)g(is)f(prin)-31
+b(ted)370 b(b)31 b(efore)369 b(and)g(after)h(the)f(matrix.)p
+Black Black eop
+%%Page: 100 108
+100 107 bop Black 0 2701 a Fy(100)24941 b(Generic)425
+b(Linear)g(Solv)-35 b(ers)425 b(in)f(SUNDIALS)p 0 3144
+48001 45 v Black 0 6974 a Fs(8.2)1793 b(The)598 b(BAND)h(mo)50
+b(dule)0 9646 y Fq(8.2.1)1495 b(T)-42 b(yp)42 b(e)498
+b Fa(BandMat)0 11716 y Fx(The)373 b(t)-31 b(yp)31 b(e)373
+b Fu(BandMat)h Fx(is)e(the)h(t)-31 b(yp)31 b(e)374 b(of)f(a)g(large)h
+(band)e(matrix)j(A)e(\(p)31 b(ossibly)373 b(distributed\).)505
+b(It)373 b(is)f(de\257ned)h(to)g(b)31 b(e)373 b(a)0 13045
+y(p)31 b(oin)-31 b(ter)370 b(to)g(a)f(structure)g(de\257ned)g(b)-31
+b(y:)p Black Black 0 15316 a Fu(typedef)582 b(struct)g({)1162
+16644 y(long)g(int)g(size;)1162 17973 y(long)g(int)g(mu,)f(ml,)h(smu;)
+1162 19301 y(realtype)h(**data;)0 20629 y(})e(*BandMat;)0
+22886 y Fx(The)369 b(\257elds)g(in)h(the)f(ab)31 b(o)-31
+b(v)g(e)371 b(structure)d(are:)p Black 1660 25143 a Fp(\262)p
+Black 554 w Fo(size)h Fx(is)g(the)h(n)-31 b(um)g(b)31
+b(er)369 b(of)h(columns)g(\(whic)-31 b(h)370 b(is)f(the)h(same)f(as)h
+(the)f(n)-31 b(um)g(b)31 b(er)369 b(of)h(ro)-31 b(ws\);)p
+Black 1660 27414 a Fp(\262)p Black 554 w Fo(mu)370 b
+Fx(is)f(the)g(upp)31 b(er)368 b(half-bandwidth,)373 b(0)308
+b Fp(\267)369 b Fo(mu)g Fp(\267)g Fo(size)p Fp(\241)p
+Fx(1;)p Black 1660 29685 a Fp(\262)p Black 554 w Fo(ml)h
+Fx(is)f(the)g(lo)-31 b(w)g(er)371 b(half-bandwidth,)h(0)308
+b Fp(\267)369 b Fo(ml)g Fp(\267)g Fo(size)p Fp(\241)p
+Fx(1;)p Black 1660 31957 a Fp(\262)p Black 554 w Fo(smu)300
+b Fx(is)f(the)h(storage)h(upp)31 b(er)298 b(half-bandwidth,)317
+b Fo(mu)300 b Fp(\267)f Fo(smu)g Fp(\267)h Fo(size)p
+Fp(\241)p Fx(1.)469 b(The)300 b Fu(BandFactor)h Fx(routine)f(writes)
+2767 33285 y(the)412 b(LU)f(factors)h(in)-31 b(to)413
+b(the)f(storage)g(for)g(A.)g(The)g(upp)31 b(er)410 b(triangular)j
+(factor)g(U,)f(ho)-31 b(w)g(ev)g(er,)423 b(ma)-31 b(y)413
+b(ha)-31 b(v)g(e)413 b(an)2767 34613 y(upp)31 b(er)315
+b(half-bandwidth)k(as)c(big)i(as)f(min)q(\()p Fo(size)p
+Fp(\241)p Fx(1,)p Fo(mu)p Fx(+)p Fo(ml)p Fx(\))h(b)31
+b(ecause)316 b(of)g(partial)i(piv)-31 b(oting.)477 b(The)316
+b Fo(smu)g Fx(\257eld)2767 35942 y(holds)370 b(the)f(upp)31
+b(er)369 b(half-bandwidth)j(allo)31 b(cated)371 b(for)e(A.)p
+Black 1660 38213 a Fp(\262)p Black 554 w Fo(data)402
+b Fx(is)g(a)h(t)-31 b(w)g(o)404 b(dimensional)h(arra)-31
+b(y)402 b(used)g(for)h(comp)31 b(onen)-31 b(t)404 b(storage.)593
+b(The)403 b(elemen)-31 b(ts)403 b(of)g(a)g(band)f(matrix)2767
+39541 y(of)461 b(t)-31 b(yp)31 b(e)461 b Fu(BandMat)h
+Fx(are)e(stored)g(column)-31 b(wise)463 b(\(i.e.)768
+b(columns)461 b(are)f(stored)g(one)h(on)g(top)g(of)g(the)g(other)g(in)
+2767 40870 y(memory\).)495 b(Only)369 b(elemen)-31 b(ts)370
+b(within)h(the)f(sp)31 b(eci\257ed)369 b(half-bandwidths)i(are)e
+(stored.)2767 42669 y(If)g(w)-31 b(e)370 b(n)-31 b(um)g(b)31
+b(er)369 b(ro)-31 b(ws)370 b(and)f(columns)h(in)g(the)f(band)g(matrix)i
+(starting)g(from)e(0,)h(then)p Black 4013 44941 a Fy({)p
+Black 554 w Fo(data[0])469 b Fx(is)i(a)f(p)31 b(oin)-31
+b(ter)471 b(to)g(\()p Fo(smu)p Fx(+)p Fo(ml)p Fx(+1\)*)p
+Fo(size)h Fx(con)-31 b(tiguous)472 b(lo)31 b(cations)472
+b(whic)-31 b(h)471 b(hold)g(the)g(elemen)-31 b(ts)5203
+46269 y(within)371 b(the)e(band)g(of)h(A)p Black 4013
+48069 a Fy({)p Black 554 w Fo(data[j])412 b Fx(is)g(a)h(p)31
+b(oin)-31 b(ter)413 b(to)f(the)h(upp)31 b(ermost)412
+b(elemen)-31 b(t)414 b(within)f(the)g(band)f(in)h(the)f(j-th)h(column.)
+622 b(This)5203 49397 y(p)31 b(oin)-31 b(ter)521 b(ma)-31
+b(y)523 b(b)31 b(e)520 b(treated)i(as)f(an)g(arra)-31
+b(y)522 b(indexed)f(from)h Fo(smu)p Fp(\241)p Fo(mu)f
+Fx(\(to)h(access)e(the)i(upp)31 b(ermost)5203 50725 y(elemen)-31
+b(t)458 b(within)h(the)f(band)f(in)h(the)g(j-th)f(column\))i(to)f
+Fo(smu)p Fx(+)p Fo(ml)f Fx(\(to)i(access)e(the)g(lo)-31
+b(w)g(est)459 b(elemen)-31 b(t)5203 52054 y(within)401
+b(the)f(band)g(in)f(the)h(j-th)g(column\).)586 b(Indices)399
+b(from)h(0)g(to)g Fo(smu)p Fp(\241)p Fo(mu)p Fp(\241)p
+Fx(1)g(giv)-31 b(e)401 b(access)e(to)h(extra)5203 53382
+y(storage)370 b(elemen)-31 b(ts)370 b(required)f(b)-31
+b(y)369 b Fu(BandFactor)p Fx(.)p Black 4013 55182 a Fy({)p
+Black 554 w Fo(data[j][i-j+smu])i Fx(is)e(the)g(\()p
+Fm(i;)184 b(j)63 b Fx(\)-th)372 b(elemen)-31 b(t,)371
+b Fm(j)63 b Fp(\241)p Fo(mu)370 b Fp(\267)307 b Fm(i)h
+Fp(\267)g Fm(j)63 b Fx(+)p Fo(ml)p Fx(.)1660 57453 y(The)345
+b(macros)g(b)31 b(elo)-31 b(w)345 b(allo)-31 b(w)347
+b(a)d(user)f(to)i(access)f(individual)j(matrix)e(elemen)-31
+b(ts)346 b(without)g(writing)g(out)f(explicit)0 58781
+y(data)313 b(structure)e(references)f(and)h(without)j(kno)-31
+b(wing)313 b(to)31 b(o)313 b(m)-31 b(uc)g(h)312 b(ab)31
+b(out)312 b(the)g(underlying)g(elemen)-31 b(t)313 b(storage.)475
+b(The)0 60110 y(only)373 b(storage)f(assumption)h(needed)f(is)f(that)i
+(elemen)-31 b(ts)373 b(are)f(stored)f(column)-31 b(wise)374
+b(and)e(that)h(a)f(p)31 b(oin)-31 b(ter)372 b(in)-31
+b(to)374 b(the)0 61438 y Fu(j)p Fx(-th)423 b(column)h(of)f(elemen)-31
+b(ts)424 b(can)e(b)31 b(e)422 b(obtained)j(via)e(the)g
+Fu(BAND)p 26708 61438 349 45 v 419 w(COL)g Fx(macro.)654
+b(Users)421 b(should)i(use)f(these)g(macros)0 62766 y(whenev)-31
+b(er)369 b(p)31 b(ossible.)1660 64109 y(See)369 b(Figure)g(8.1)i(for)e
+(a)h(diagram)h(of)e(the)h Fu(BandMat)g Fx(t)-31 b(yp)31
+b(e.)0 67284 y Fq(8.2.2)1495 b(Accessor)501 b(Macros)0
+69354 y Fx(The)292 b(follo)-31 b(wing)295 b(three)d(macros)g(are)g
+(de\257ned)f(b)-31 b(y)292 b(the)g Fv(band)g Fx(mo)31
+b(dule)293 b(to)f(pro)-31 b(vide)293 b(access)e(to)i(data)g(in)f(the)g
+Fu(BandMat)0 70682 y Fx(t)-31 b(yp)31 b(e:)p Black 1660
+72939 a Fp(\262)p Black 554 w Fu(BAND)p 5161 72939 V
+419 w(ELEM)2767 74739 y Fx(Usage)370 b(:)493 b Fu(BAND)p
+9196 74739 V 419 w(ELEM\(A,i,j\))582 b(=)g(a)p 18332
+74739 V 418 w(ij;)370 b Fx(or)f Fu(a)p 22800 74739 V
+418 w(ij)582 b(=)f(BAND)p 28448 74739 V 419 w(ELEM\(A,i,j\);)2767
+76539 y(BAND)p 5161 76539 V 419 w(ELEM)290 b Fx(references)e(the)h(\()p
+Fu(i)p Fx(,)p Fu(j)p Fx(\)-th)i(elemen)-31 b(t)290 b(of)g(the)f
+Fm(N)207 b Fp(\243)86 b Fm(N)410 b Fx(band)289 b(matrix)h
+Fu(A)p Fx(,)g(where)f(0)308 b Fp(\267)289 b Fu(i)p Fx(,)305
+b Fu(j)289 b Fp(\267)308 b Fm(N)206 b Fp(\241)86 b Fx(1.)2767
+77867 y(The)370 b(lo)31 b(cation)371 b(\()p Fu(i)p Fx(,)p
+Fu(j)p Fx(\))g(should)f(further)e(satisfy)j Fu(j)p Fp(\241)p
+Fu(\(A->mu\))f Fp(\267)f Fu(i)g Fp(\267)g Fu(j)p Fx(+)p
+Fu(\(A->ml\))p Fx(.)p Black Black eop
+%%Page: 101 109
+101 108 bop Black 4000 2701 a Fy(8.2)425 b(The)g(BAND)f(mo)35
+b(dule)33092 b(101)p 4000 3144 48001 45 v Black Black
+10000 58597 a @beginspecial 0 @llx 0 @lly 470 @urx 538
+ at ury 3240 @rwi @setspecial
+%%BeginDocument: bandmat.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: bandmat.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Thu May 23 14:49:16 2002
+%%For: radu at tux29.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 470 538
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.565 0.565 0.565 srgb} bind def
+/col33 {0.000 0.000 0.000 srgb} bind def
+
+end
+save
+newpath 0 538 moveto 0 0 lineto 470 0 lineto 470 538 lineto closepath clip newpath
+-98.0 559.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Times-Roman /Times-Roman-iso isovec ReEncode
+ /DrawEllipse {
+	/endangle exch def
+	/startangle exch def
+	/yrad exch def
+	/xrad exch def
+	/y exch def
+	/x exch def
+	/savematrix mtrx currentmatrix def
+	x y tr xrad yrad sc 0 0 1 startangle endangle arc
+	closepath
+	savematrix setmatrix
+	} def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+7.500 slw
+% Ellipse
+n 7800 3150 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 3300 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 3450 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 7650 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 7800 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 7950 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 5250 2775 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 5250 2325 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 5250 3675 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 3000 2700 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 2550 1500 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 5250 4125 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 5250 5025 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Polyline
+n 1650 3900 m 3450 3900 l 3450 2100 l 1650 2100 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 2100 m 5550 2100 l 5550 2550 l 4950 2550 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 2550 m 5550 2550 l 5550 3000 l 4950 3000 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 3000 m 5550 3000 l 5550 3450 l 4950 3450 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 3450 m 5550 3450 l 5550 3900 l 4950 3900 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 3900 m 5550 3900 l 5550 4350 l 4950 4350 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 4350 m 5550 4350 l 5550 4800 l 4950 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 4800 m 5550 4800 l 5550 5250 l 4950 5250 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+2520 2115 m 2580 2115 l 2580 1963 l 2550 2083 l 2520 1963 l cp
+eoclip
+n 2550 1500 m
+ 2550 2100 l gs col0 s gr gr
+
+% arrowhead
+n 2520 1963 m 2550 2083 l 2580 1963 l  col0 s
+% Polyline
+gs  clippath
+7215 1905 m 7215 1845 l 7063 1845 l 7183 1875 l 7063 1905 l cp
+eoclip
+n 5250 2775 m 5700 2775 l 5700 1875 l
+ 7200 1875 l gs col0 s gr gr
+
+% arrowhead
+n 7063 1905 m 7183 1875 l 7063 1845 l  col0 s
+% Polyline
+gs  clippath
+5070 2115 m 5130 2115 l 5130 1963 l 5100 2083 l 5070 1963 l cp
+eoclip
+n 3000 2700 m 3600 2700 l 3600 1875 l 5100 1875 l
+ 5100 2100 l gs col0 s gr gr
+
+% arrowhead
+n 5070 1963 m 5100 2083 l 5130 1963 l  col0 s
+% Polyline
+gs  clippath
+7215 705 m 7215 645 l 7063 645 l 7183 675 l 7063 705 l cp
+eoclip
+n 5250 2325 m 5250 675 l
+ 7200 675 l gs col0 s gr gr
+
+% arrowhead
+n 7063 705 m 7183 675 l 7063 645 l  col0 s
+% Polyline
+gs  clippath
+7215 3705 m 7215 3645 l 7063 3645 l 7183 3675 l 7063 3705 l cp
+eoclip
+n 5250 3675 m
+ 7200 3675 l gs col0 s gr gr
+
+% arrowhead
+n 7063 3705 m 7183 3675 l 7063 3645 l  col0 s
+% Polyline
+gs  clippath
+7215 8205 m 7215 8145 l 7063 8145 l 7183 8175 l 7063 8205 l cp
+eoclip
+n 5250 5025 m 5250 8175 l
+ 7200 8175 l gs col0 s gr gr
+
+% arrowhead
+n 7063 8205 m 7183 8175 l 7063 8145 l  col0 s
+% Polyline
+gs  clippath
+8970 615 m 9030 615 l 9030 463 l 9000 583 l 8970 463 l cp
+eoclip
+n 9000 375 m
+ 9000 600 l gs col0 s gr gr
+
+% arrowhead
+n 8970 463 m 9000 583 l 9030 463 l  col0 s
+% Polyline
+gs  clippath
+9030 1035 m 8970 1035 l 8970 1187 l 9000 1067 l 9030 1187 l cp
+eoclip
+n 9000 1275 m
+ 9000 1050 l gs col0 s gr gr
+
+% arrowhead
+n 9030 1187 m 9000 1067 l 8970 1187 l  col0 s
+% Polyline
+gs  clippath
+8970 1815 m 9030 1815 l 9030 1663 l 9000 1783 l 8970 1663 l cp
+eoclip
+n 9000 1575 m
+ 9000 1800 l gs col0 s gr gr
+
+% arrowhead
+n 8970 1663 m 9000 1783 l 9030 1663 l  col0 s
+% Polyline
+n 8550 600 m
+ 9450 600 l gs col0 s gr 
+% Polyline
+n 8550 1050 m
+ 9450 1050 l gs col0 s gr 
+% Polyline
+n 8550 1800 m
+ 9450 1800 l gs col0 s gr 
+% Polyline
+n 8400 3600 m 8400 3000 l 7200 3000 l 7200 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1650 m 8400 1500 l 7200 1500 l 7200 1650 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1800 m 8400 1650 l 7200 1650 l 7200 1800 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1500 m 8400 1350 l 7200 1350 l 7200 1500 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 2550 m 8400 2400 l 7200 2400 l 7200 2550 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 2700 m 8400 2550 l 7200 2550 l 7200 2700 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 2850 m 8400 2700 l 7200 2700 l 7200 2850 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 3000 m 8400 2850 l 7200 2850 l 7200 3000 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 4425 m 8400 4050 l 7200 4050 l 7200 4425 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 4800 m 8400 4425 l 7200 4425 l 7200 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 5175 m 8400 4800 l 7200 4800 l 7200 5175 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 5550 m 8400 5175 l 7200 5175 l 7200 5550 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 7050 m 8400 6900 l 7200 6900 l 7200 7050 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 7200 m 8400 7050 l 7200 7050 l 7200 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 7350 m 8400 7200 l 7200 7200 l 7200 7350 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 7500 m 8400 7350 l 7200 7350 l 7200 7500 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 8700 m 8400 8550 l 7200 8550 l 7200 8700 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 8850 m 8400 8700 l 7200 8700 l 7200 8850 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 9000 m 8400 8850 l 7200 8850 l 7200 9000 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 9150 m 8400 9000 l 7200 9000 l 7200 9150 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 9300 m 8400 9150 l 7200 9150 l 7200 9300 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+7215 6405 m 7215 6345 l 7063 6345 l 7183 6375 l 7063 6405 l cp
+eoclip
+n 5250 4125 m 5700 4125 l 5700 6375 l
+ 7200 6375 l gs col0 s gr gr
+
+% arrowhead
+n 7063 6405 m 7183 6375 l 7063 6345 l  col0 s
+% Polyline
+n 8400 6900 m 8400 6750 l 7200 6750 l 7200 6900 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 6300 m 8400 5925 l 7200 5925 l 7200 6300 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 8100 m 8400 7500 l 7200 7500 l 7200 8100 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 2400 m 8400 2250 l 7200 2250 l 7200 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1350 m 8400 1200 l 7200 1200 l 7200 1350 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1200 m 8400 1050 l 7200 1050 l 7200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 7200 1950 m 8400 1950 l 8400 2100 l 7200 2100 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 2100 m 8400 2100 l 8400 2250 l 7200 2250 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 1800 m 8400 1800 l 8400 1950 l 7200 1950 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 600 m 8400 600 l 8400 750 l 7200 750 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 750 m 8400 750 l 8400 900 l 7200 900 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 900 m 8400 900 l 8400 1050 l 7200 1050 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 3600 m 8400 3600 l 8400 3750 l 7200 3750 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 3750 m 8400 3750 l 8400 3900 l 7200 3900 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 3900 m 8400 3900 l 8400 4050 l 7200 4050 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 8400 5925 m 8400 5550 l 7200 5550 l 7200 5925 l
+ cp gs col0 s gr 
+% Polyline
+n 7200 6600 m 8400 6600 l 8400 6750 l 7200 6750 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 6450 m 8400 6450 l 8400 6600 l 7200 6600 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 6300 m 8400 6300 l 8400 6450 l 7200 6450 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 8100 m 8400 8100 l 8400 8250 l 7200 8250 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 8250 m 8400 8250 l 8400 8400 l 7200 8400 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 8400 m 8400 8400 l 8400 8550 l 7200 8550 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+/Times-Roman-iso ff 180.00 scf sf
+1875 1125 m
+gs 1 -1 sc (A \(type BandMat\)) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+1950 2400 m
+gs 1 -1 sc (size) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+2850 2400 m
+gs 1 -1 sc (data) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+2025 2775 m
+gs 1 -1 sc (N) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+1800 3300 m
+gs 1 -1 sc (mu) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+2400 3300 m
+gs 1 -1 sc (ml) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+3000 3300 m
+gs 1 -1 sc (smu) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 2400 m
+gs 1 -1 sc (data[0]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 2850 m
+gs 1 -1 sc (data[1]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 3750 m
+gs 1 -1 sc (data[j]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 4200 m
+gs 1 -1 sc (data[j+1]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 5100 m
+gs 1 -1 sc (data[N-1]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+5850 4275 m
+gs 1 -1 sc (data[j][smu-mu]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+5850 5400 m
+gs 1 -1 sc (data[j][smu]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+5850 6150 m
+gs 1 -1 sc (data[j][smu+ml]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+8700 1500 m
+gs 1 -1 sc (mu+ml+1) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+8700 900 m
+gs 1 -1 sc (smu-mu) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+7350 4650 m
+gs 1 -1 sc (A\(j-mu-1,j\)) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+7425 4275 m
+gs 1 -1 sc (A\(j-mu,j\)) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+7650 5400 m
+gs 1 -1 sc (A\(j,j\)) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+7500 6150 m
+gs 1 -1 sc (A\(j+ml,j\)) col0 sh gr
+% Ellipse
+n 7800 5100 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 5025 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 4950 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 5850 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 5775 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 5700 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 4650 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 4575 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 4500 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 3300 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 3225 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 3150 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Polyline
+n 2250 2850 m 2250 2550 l 1950 2550 l 1950 2850 l
+ cp gs col-1 s gr 
+% Polyline
+n 2100 3750 m 2100 3450 l 1800 3450 l 1800 3750 l
+ cp gs col-1 s gr 
+% Polyline
+n 2700 3750 m 2700 3450 l 2400 3450 l 2400 3750 l
+ cp gs col-1 s gr 
+% Polyline
+n 3300 3750 m 3300 3450 l 3000 3450 l 3000 3750 l
+ cp gs col-1 s gr 
+% Polyline
+n 2700 1650 m 2700 1350 l 2400 1350 l 2400 1650 l
+ cp gs col-1 s gr 
+% Polyline
+n 3150 2850 m 3150 2550 l 2850 2550 l 2850 2850 l
+ cp gs col-1 s gr 
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial 4000 61033 a Fx(Figure)536 b(8.1:)829 b(Diagram)538
+b(of)f(the)g(storage)h(for)e(a)h(band)g(matrix)h(of)f(t)-31
+b(yp)31 b(e)537 b Fu(BandMat)p Fx(.)996 b(Here)536 b
+Fu(A)g Fx(is)h(an)g Fm(N)478 b Fp(\243)358 b Fm(N)4000
+62361 y Fx(band)415 b(matrix)i(of)f(t)-31 b(yp)31 b(e)416
+b Fu(BandMat)g Fx(with)g(upp)31 b(er)414 b(and)i(lo)-31
+b(w)g(er)416 b(half-bandwidths)i Fu(mu)d Fx(and)h Fu(ml)p
+Fx(,)427 b(resp)31 b(ectiv)-31 b(ely)-92 b(.)632 b(The)4000
+63689 y(ro)-31 b(ws)487 b(and)h(columns)f(of)h Fu(A)f
+Fx(are)g(n)-31 b(um)g(b)31 b(ered)487 b(from)g(0)h(to)f
+Fm(N)446 b Fp(\241)325 b Fx(1)487 b(and)g(the)g(\()p
+Fm(i;)184 b(j)63 b Fx(\)-th)490 b(elemen)-31 b(t)489
+b(of)e Fu(A)g Fx(is)g(denoted)4000 65018 y Fu(A\(i,j\))p
+Fx(.)744 b(The)453 b(grey)-31 b(ed)454 b(out)f(areas)g(of)g(the)g
+(underlying)h(comp)31 b(onen)-31 b(t)455 b(storage)e(are)g(used)f(b)-31
+b(y)453 b(the)h Fu(BandFactor)4000 66346 y Fx(and)369
+b Fu(BandBacksolve)i Fx(routines.)p Black Black Black
+eop
+%%Page: 102 110
+102 109 bop Black 0 2701 a Fy(102)24941 b(Generic)425
+b(Linear)g(Solv)-35 b(ers)425 b(in)f(SUNDIALS)p 0 3144
+48001 45 v Black Black 1660 6974 a Fp(\262)p Black 554
+w Fu(BAND)p 5161 6974 349 45 v 419 w(COL)2767 8757 y
+Fx(Usage)370 b(:)493 b Fu(col)p 8615 8757 V 419 w(j)581
+b(=)g(BAND)p 13682 8757 V 419 w(COL\(A,j\);)2767 10540
+y(BAND)p 5161 10540 V 419 w(COL)328 b Fx(references)e(the)h(diagonal)j
+(elemen)-31 b(t)329 b(of)f(the)g Fu(j)p Fx(-th)f(column)i(of)f(the)f
+Fm(N)284 b Fp(\243)162 b Fm(N)448 b Fx(band)327 b(matrix)i
+Fu(A)p Fx(,)f(0)308 b Fp(\267)2767 11868 y Fu(j)392 b
+Fp(\267)345 b Fm(N)382 b Fp(\241)261 b Fx(1.)560 b(The)392
+b(t)-31 b(yp)31 b(e)392 b(of)g(the)g(expression)g Fu(BAND)p
+24534 11868 V 419 w(COL\(A,j\))g Fx(is)g Fu(realtype)582
+b(*)p Fx(.)560 b(The)392 b(p)31 b(oin)-31 b(ter)392 b(returned)2767
+13197 y(b)-31 b(y)475 b(the)h(call)g Fu(BAND)p 10952
+13197 V 419 w(COL\(A,j\))f Fx(can)g(b)31 b(e)475 b(treated)g(as)g(an)g
+(arra)-31 b(y)475 b(whic)-31 b(h)476 b(is)f(indexed)g(from)g
+Fp(\241)p Fu(\(A->mu\))h Fx(to)2767 14525 y Fu(\(A->ml\))p
+Fx(.)p Black 1660 16763 a Fp(\262)p Black 554 w Fu(BAND)p
+5161 16763 V 419 w(COL)p 7323 16763 V 419 w(ELEM)2767
+18546 y Fx(Usage)370 b(:)493 b Fu(BAND)p 9196 18546 V
+419 w(COL)p 11358 18546 V 419 w(ELEM\(col)p 16425 18546
+V 419 w(j,i,j\))582 b(=)g(a)p 22656 18546 V 418 w(ij;)370
+b Fx(or)f Fu(a)p 27124 18546 V 418 w(ij)582 b(=)f(BAND)p
+32772 18546 V 419 w(COL)p 34934 18546 V 419 w(ELEM\(col)p
+40001 18546 V 419 w(j,i,j\);)2767 20329 y Fx(This)553
+b(macro)g(references)d(the)i(\()p Fu(i)p Fx(,)p Fu(j)p
+Fx(\)-th)j(en)-31 b(try)552 b(of)g(the)h(band)f(matrix)h
+Fu(A)f Fx(when)g(used)g(in)g(conjunction)2767 21658 y(with)466
+b Fu(BAND)p 7778 21658 V 419 w(COL)e Fx(to)h(reference)e(the)i
+Fu(j)p Fx(-th)f(column)h(through)g Fu(col)p 31049 21658
+V 419 w(j)p Fx(.)778 b(The)464 b(index)h(\()p Fu(i)p
+Fx(,)p Fu(j)p Fx(\))g(should)g(satisfy)2767 22986 y Fu(j)p
+Fp(\241)p Fu(\(A->mu\))371 b Fp(\267)e Fu(i)g Fp(\267)g
+Fu(j)p Fx(+)p Fu(\(A->ml\))p Fx(.)0 27014 y Fq(8.2.3)1495
+b(F)-125 b(unctions)0 29068 y Fx(The)323 b(follo)-31
+b(wing)326 b(functions)d(for)g Fu(BandMat)g Fx(matrices)g(are)g(a)-31
+b(v)-61 b(ailable)325 b(in)d(the)h Fv(band)f Fx(pac)-31
+b(k)-61 b(age.)479 b(F)-92 b(or)321 b(full)j(details,)333
+b(see)0 30397 y(the)369 b(header)g(\257le)h Fu(band.h)p
+Fx(.)p Black 1660 32629 a Fp(\262)p Black 554 w Fu(BandAllocMat)p
+Fx(:)495 b(allo)31 b(cation)372 b(of)e(a)f Fu(BandMat)h
+Fx(matrix;)p Black 1660 34867 a Fp(\262)p Black 554 w
+Fu(BandAllocPiv)p Fx(:)495 b(allo)31 b(cation)372 b(of)e(a)f(piv)-31
+b(ot)371 b(arra)-31 b(y)370 b(for)f(use)g(with)h Fu(BandFactor)p
+Fx(/)p Fu(BandBacksolve)p Fx(;)p Black 1660 37104 a Fp(\262)p
+Black 554 w Fu(BandFactor)p Fx(:)494 b(LU)369 b(factorization)k(with)d
+(partial)h(piv)-31 b(oting;)p Black 1660 39342 a Fp(\262)p
+Black 554 w Fu(BandBacksolve)p Fx(:)495 b(solution)371
+b(of)f Fm(Ax)307 b Fx(=)g Fm(b)369 b Fx(using)h(LU)f(factorization;)p
+Black 1660 41580 a Fp(\262)p Black 554 w Fu(BandZero)p
+Fx(:)494 b(load)370 b(a)g(matrix)h(with)f(zeros;)p Black
+1660 43818 a Fp(\262)p Black 554 w Fu(BandCopy)p Fx(:)494
+b(cop)-31 b(y)370 b(one)f(matrix)i(to)f(another;)p Black
+1660 46056 a Fp(\262)p Black 554 w Fu(BandScale)p Fx(:)494
+b(scale)370 b(a)f(matrix)i(b)-31 b(y)369 b(a)h(scalar;)p
+Black 1660 48294 a Fp(\262)p Black 554 w Fu(BandAddI)p
+Fx(:)h(incremen)-31 b(t)370 b(a)g(matrix)g(b)-31 b(y)370
+b(the)f(iden)-31 b(tit)g(y)372 b(matrix;)p Black 1660
+50532 a Fp(\262)p Black 554 w Fu(BandFreeMat)p Fx(:)495
+b(free)368 b(memory)i(for)g(a)f Fu(BandMat)h Fx(matrix;)p
+Black 1660 52770 a Fp(\262)p Black 554 w Fu(BandFreePiv)p
+Fx(:)495 b(free)368 b(memory)i(for)g(a)f(piv)-31 b(ot)371
+b(arra)-31 b(y;)p Black 1660 55007 a Fp(\262)p Black
+554 w Fu(BandPrint)p Fx(:)494 b(prin)-31 b(t)370 b(a)f
+Fu(BandMat)h Fx(matrix)h(to)f(standard)g(output.)0 59597
+y Fs(8.3)1793 b(The)598 b(SPGMR)f(mo)50 b(dule)0 62033
+y Fx(The)445 b Fv(spgmr)f Fx(pac)-31 b(k)-61 b(age,)465
+b(in)445 b(the)g(\257les)g Fu(spgmr.h)g Fx(and)g Fu(spgmr.c)p
+Fx(,)465 b(includes)445 b(an)g(implemen)-31 b(tation)449
+b(of)c(the)g(scaled)0 63362 y(preconditioned)293 b(GMRES)e(metho)31
+b(d.)467 b(A)292 b(separate)f(co)31 b(de)292 b(mo)31
+b(dule,)308 b Fu(iterative.h)293 b Fx(and)e Fu(iterative.c)p
+Fx(,)309 b(con)-31 b(tains)0 64690 y(auxiliary)424 b(functions)f(that)h
+(supp)31 b(ort)421 b Fv(spgmr)p Fx(,)435 b(and)422 b(also)h(other)f
+(Krylo)-31 b(v)423 b(solv)-31 b(ers)422 b(to)h(b)31 b(e)421
+b(added)i(later.)652 b(F)-92 b(or)421 b(full)0 66018
+y(details,)371 b(including)g(usage)e(instructions,)i(see)e(the)g
+(\257les)g Fu(spgmr.h)h Fx(and)g Fu(iterative.h)p Fx(.)0
+68927 y Fy(F)-106 b(unctions.)1107 b Fx(The)370 b(follo)-31
+b(wing)372 b(functions)f(are)e(a)-31 b(v)-61 b(ailable)372
+b(in)d(the)g Fv(spgmr)f Fx(pac)-31 b(k)-61 b(age:)p Black
+1660 71159 a Fp(\262)p Black 554 w Fu(SpgmrMalloc)p Fx(:)495
+b(allo)31 b(cation)372 b(of)e(memory)g(for)f Fu(SpgmrSolve)p
+Fx(;)p Black 1660 73397 a Fp(\262)p Black 554 w Fu(SpgmrSolve)p
+Fx(:)494 b(solution)371 b(of)f Fm(Ax)307 b Fx(=)h Fm(b)369
+b Fx(b)-31 b(y)369 b(the)h Fv(spgmr)e Fx(metho)31 b(d;)p
+Black 1660 75635 a Fp(\262)p Black 554 w Fu(SpgmrFree)p
+Fx(:)494 b(free)369 b(memory)h(allo)31 b(cated)372 b(b)-31
+b(y)369 b Fu(SpgmrMalloc)p Fx(.)0 77867 y(The)g(follo)-31
+b(wing)373 b(functions)d(are)g(a)-31 b(v)-61 b(ailable)371
+b(in)f(the)f(supp)31 b(ort)369 b(pac)-31 b(k)-61 b(age)370
+b Fu(iterative.h)h Fx(and)e Fu(iterative.c)p Fx(:)p Black
+Black eop
+%%Page: 103 111
+103 110 bop Black 4000 2701 a Fy(8.3)425 b(The)g(SPGMR)f(mo)35
+b(dule)32191 b(103)p 4000 3144 48001 45 v Black Black
+5660 6974 a Fp(\262)p Black 554 w Fu(ModifiedGS)p Fx(:)371
+b(p)31 b(erforms)369 b(mo)31 b(di\257ed)370 b(Gram-Sc)-31
+b(hmidt)371 b(pro)31 b(cedure;)p Black 5660 9188 a Fp(\262)p
+Black 554 w Fu(ClassicalGS)p Fx(:)372 b(p)31 b(erforms)368
+b(classical)j(Gram-Sc)-31 b(hmidt)371 b(pro)31 b(cedure;)p
+Black 5660 11402 a Fp(\262)p Black 554 w Fu(QRfact)p
+Fx(:)494 b(p)31 b(erforms)368 b(QR)h(factorization)k(of)d(Hessen)-31
+b(b)31 b(erg)368 b(matrix;)p Black 5660 13616 a Fp(\262)p
+Black 554 w Fu(QRsol)p Fx(:)494 b(solv)-31 b(es)369 b(a)h(least)g
+(squares)e(problem)i(with)h(a)e(Hessen)-31 b(b)31 b(erg)369
+b(matrix)h(factored)g(b)-31 b(y)370 b Fu(QRfact)p Fx(.)p
+Black Black eop
+%%Page: 104 112
+104 111 bop Black Black Black Black eop
+%%Page: 105 113
+105 112 bop Black Black 4000 15276 a Ft(Chapter)861 b(9)4000
+20811 y Fw(CV)-86 b(ODE)1032 b(Constan)-86 b(ts)4000
+26567 y Fx(Belo)-31 b(w)467 b(w)-31 b(e)465 b(list)h(all)g(input)g(and)
+f(output)h(constan)-31 b(ts)466 b(used)e(b)-31 b(y)466
+b(the)f(main)h(solv)-31 b(er)465 b(and)h(linear)f(solv)-31
+b(er)466 b(mo)31 b(dules,)4000 27895 y(together)370 b(with)h(their)e(n)
+-31 b(umerical)371 b(v)-61 b(alues)369 b(and)h(a)f(short)g(description)
+h(of)g(their)g(meaning.)4000 31556 y Fs(9.1)1793 b(CV)-50
+b(ODE)598 b(input)h(constan)-50 b(ts)4000 33981 y Fv(cv)-25
+b(ode)425 b Fy(main)f(solv)-35 b(er)425 b(mo)35 b(dule)5156
+35821 y Fu(CV)p 6388 35821 349 45 v 419 w(ADAMS)9721
+b Fx(1)1329 b(Adams-Moulton)371 b(linear)f(m)-31 b(ultistep)371
+b(metho)31 b(d.)5156 37150 y Fu(CV)p 6388 37150 V 419
+w(BDF)10883 b Fx(2)1329 b(BDF)368 b(linear)i(m)-31 b(ultistep)371
+b(metho)31 b(d.)5156 38478 y Fu(CV)p 6388 38478 V 419
+w(FUNCTIONAL)6816 b Fx(1)1329 b(Nonlinear)370 b(system)g(solution)h
+(through)f(functional)h(iterations.)5156 39806 y Fu(CV)p
+6388 39806 V 419 w(NEWTON)9140 b Fx(2)1329 b(Nonlinear)370
+b(system)g(solution)h(through)f(Newton)g(iterations.)5156
+41135 y Fu(CV)p 6388 41135 V 419 w(SS)11464 b Fx(1)1329
+b(Scalar)370 b(relativ)-31 b(e)370 b(tolerance,)h(scalar)f(absolute)h
+(tolerance.)5156 42463 y Fu(CV)p 6388 42463 V 419 w(SV)11464
+b Fx(2)1329 b(Scalar)370 b(relativ)-31 b(e)370 b(tolerance,)h(v)-31
+b(ector)370 b(absolute)h(tolerance.)5156 43791 y Fu(CV)p
+6388 43791 V 419 w(NORMAL)9140 b Fx(1)1329 b(Solv)-31
+b(er)370 b(returns)e(at)i(sp)31 b(eci\257ed)368 b(output)j(time.)5156
+45120 y Fu(CV)p 6388 45120 V 419 w(ONE)p 8550 45120 V
+419 w(STEP)8140 b Fx(2)1329 b(Solv)-31 b(er)370 b(returns)e(after)h
+(eac)-31 b(h)370 b(successful)f(step.)5156 46448 y Fu(CV)p
+6388 46448 V 419 w(NORMAL)p 10293 46448 V 419 w(TSTOP)5816
+b Fx(3)1329 b(Solv)-31 b(er)370 b(returns)f(at)h(sp)31
+b(eci\257ed)369 b(output)i(time,)g(but)f(do)31 b(es)369
+b(not)i(pro)31 b(ceed)21245 47776 y(past)369 b(the)h(sp)31
+b(eci\257ed)368 b(stopping)j(time.)5156 49105 y Fu(CV)p
+6388 49105 V 419 w(ONE)p 8550 49105 V 419 w(STEP)p 11293
+49105 V 419 w(TSTOP)4816 b Fx(4)1329 b(Solv)-31 b(er)312
+b(returns)e(after)i(eac)-31 b(h)311 b(successful)g(step,)323
+b(but)312 b(do)31 b(es)311 b(not)h(pro)31 b(ceed)21245
+50433 y(past)369 b(the)h(sp)31 b(eci\257ed)368 b(stopping)j(time.)4000
+53071 y Fy(Iterativ)-35 b(e)424 b(linear)h(solv)-35 b(er)424
+b(mo)35 b(dule)5156 54911 y Fu(PREC)p 7550 54911 V 419
+w(NONE)9140 b Fx(0)1329 b(No)369 b(preconditioning)5156
+56240 y Fu(PREC)p 7550 56240 V 419 w(LEFT)9140 b Fx(1)1329
+b(Preconditioning)372 b(on)d(the)h(left)g(only)-92 b(.)5156
+57568 y Fu(PREC)p 7550 57568 V 419 w(RIGHT)8559 b Fx(2)1329
+b(Preconditioning)372 b(on)d(the)h(righ)-31 b(t)370 b(only)-92
+b(.)5156 58896 y Fu(PREC)p 7550 58896 V 419 w(BOTH)9140
+b Fx(3)1329 b(Preconditioning)372 b(on)d(b)31 b(oth)370
+b(the)f(left)i(and)e(the)g(righ)-31 b(t.)5156 60225 y
+Fu(MODIFIED)p 9874 60225 V 420 w(GS)7977 b Fx(1)1329
+b(Use)368 b(mo)31 b(di\257ed)371 b(Gram-Sc)-31 b(hmidt)370
+b(pro)31 b(cedure.)5156 61553 y Fu(CLASSICAL)p 10455
+61553 V 420 w(GS)7396 b Fx(2)1329 b(Use)368 b(classical)j(Gram-Sc)-31
+b(hmidt)371 b(pro)31 b(cedure.)4000 66523 y Fs(9.2)1793
+b(CV)-50 b(ODE)598 b(output)h(constan)-50 b(ts)4000 68947
+y Fv(cv)-25 b(ode)425 b Fy(main)f(solv)-35 b(er)425 b(mo)35
+b(dule)5156 70788 y Fu(CV)p 6388 70788 V 419 w(SUCCESS)8928
+b Fx(0)1329 b(Successful)368 b(function)j(return.)5156
+72116 y Fu(CV)p 6388 72116 V 419 w(TSTOP)p 9712 72116
+V 419 w(RETURN)6185 b Fx(1)1329 b Fu(CVode)369 b Fx(succeeded)g(b)-31
+b(y)369 b(reac)-31 b(hing)370 b(the)g(sp)31 b(eci\257ed)369
+b(stopping)h(p)31 b(oin)-31 b(t.)5156 73445 y Fu(CV)p
+6388 73445 V 419 w(ROOT)p 9131 73445 V 419 w(RETURN)6766
+b Fx(2)1329 b Fu(CVode)369 b Fx(succeeded)g(and)g(found)h(one)f(or)g
+(more)h(ro)31 b(ots.)5156 74773 y Fu(CV)p 6388 74773
+V 419 w(MEM)p 8550 74773 V 419 w(NULL)8140 b Fx(-1)1329
+b(The)369 b Fu(cvode)p 26864 74773 V 419 w(mem)h Fx(argumen)-31
+b(t)370 b(w)-31 b(as)370 b Fu(NULL)p Fx(.)p Black Black
+eop
+%%Page: 106 114
+106 113 bop Black 0 2701 a Fy(106)35504 b(CV)-35 b(ODE)426
+b(Constan)-35 b(ts)p 0 3144 48001 45 v Black 664 6797
+a Fu(CV)p 1896 6797 349 45 v 419 w(ILL)p 4058 6797 V
+419 w(INPUT)8112 b Fx(-2)1329 b(One)369 b(of)h(the)f(function)i(inputs)
+e(is)g(illegal.)664 8125 y Fu(CV)p 1896 8125 V 419 w(NO)p
+3477 8125 V 419 w(MALLOC)8112 b Fx(-3)1329 b(The)939
+b Fv(cv)-25 b(ode)940 b Fx(memory)g(w)-31 b(as)940 b(not)g(allo)31
+b(cated)942 b(b)-31 b(y)939 b(a)h(call)g(to)17675 9453
+y Fu(CVodeMalloc)p Fx(.)664 10782 y Fu(CV)p 1896 10782
+V 419 w(TOO)p 4058 10782 V 419 w(MUCH)p 6801 10782 V
+419 w(WORK)5950 b Fx(-4)1329 b(The)533 b(solv)-31 b(er)533
+b(to)31 b(ok)534 b Fu(mxstep)f Fx(in)-31 b(ternal)534
+b(steps)e(but)h(could)g(not)h(reac)-31 b(h)17675 12110
+y(tout.)664 13438 y Fu(CV)p 1896 13438 V 419 w(TOO)p
+4058 13438 V 419 w(MUCH)p 6801 13438 V 419 w(ACC)6531
+b Fx(-5)1329 b(The)480 b(solv)-31 b(er)480 b(could)g(not)h(satisfy)f
+(the)g(accuracy)g(demanded)h(b)-31 b(y)479 b(the)17675
+14767 y(user)368 b(for)h(some)h(in)-31 b(ternal)371 b(step.)664
+16095 y Fu(CV)p 1896 16095 V 419 w(ERR)p 4058 16095 V
+419 w(FAILURE)6950 b Fx(-6)1329 b(Error)253 b(test)h(failures)h(o)31
+b(ccurred)253 b(to)31 b(o)254 b(man)-31 b(y)255 b(times)g(during)f(one)
+g(in)-31 b(ternal)17675 17424 y(time)371 b(step)e(or)g(minim)-31
+b(um)371 b(step)e(size)g(w)-31 b(as)370 b(reac)-31 b(hed.)664
+18752 y Fu(CV)p 1896 18752 V 419 w(CONV)p 4639 18752
+V 419 w(FAILURE)6369 b Fx(-7)1329 b(Con)-31 b(v)g(ergence)321
+b(test)f(failures)f(o)31 b(ccurred)319 b(to)31 b(o)320
+b(man)-31 b(y)321 b(times)f(during)f(one)17675 20080
+y(in)-31 b(ternal)371 b(time)f(step)f(or)g(minim)-31
+b(um)372 b(step)d(size)g(w)-31 b(as)370 b(reac)-31 b(hed.)664
+21409 y Fu(CV)p 1896 21409 V 419 w(LINIT)p 5220 21409
+V 419 w(FAIL)7531 b Fx(-8)1329 b(The)370 b(linear)f(solv)-31
+b(er's)370 b(initialization)k(function)d(failed.)664
+22737 y Fu(CV)p 1896 22737 V 419 w(LSETUP)p 5801 22737
+V 419 w(FAIL)6950 b Fx(-9)1329 b(The)455 b(linear)g(solv)-31
+b(er's)454 b(setup)g(function)i(failed)g(in)e(an)h(unreco)-31
+b(v)g(erable)17675 24065 y(manner.)664 25394 y Fu(CV)p
+1896 25394 V 419 w(LSOLVE)p 5801 25394 V 419 w(FAIL)6397
+b Fx(-10)1329 b(The)485 b(linear)h(solv)-31 b(er's)486
+b(solv)-31 b(e)485 b(function)i(failed)f(in)f(an)h(unreco)-31
+b(v)g(erable)17675 26722 y(manner.)664 28050 y Fu(CV)p
+1896 28050 V 419 w(MEM)p 4058 28050 V 419 w(FAIL)8140
+b Fx(-11)1329 b(A)369 b(memory)h(allo)31 b(cation)373
+b(failed.)664 29379 y Fu(CV)p 1896 29379 V 419 w(RTFUNC)p
+5801 29379 V 419 w(NULL)6397 b Fx(-12)1329 b(The)370
+b(user-supplied)e(ro)31 b(ot)370 b(function)g(is)g Fu(NULL)p
+Fx(.)664 30707 y Fu(CV)p 1896 30707 V 419 w(NO)p 3477
+30707 V 419 w(SLDET)8140 b Fx(-13)1329 b(The)370 b(stabilit)-31
+b(y)372 b(limit)f(detection)g(algorithm)h(w)-31 b(as)369
+b(not)h(activ)-61 b(ated.)664 32035 y Fu(CV)p 1896 32035
+V 419 w(BAD)p 4058 32035 V 419 w(K)9883 b Fx(-14)1329
+b(The)370 b(deriv)-61 b(ativ)-31 b(e)370 b(order)f Fm(k)404
+b Fx(is)369 b(larger)g(than)h(the)g(order)e(used.)664
+33364 y Fu(CV)p 1896 33364 V 419 w(BAD)p 4058 33364 V
+419 w(T)9883 b Fx(-15)1329 b(The)370 b(time)g Fm(t)f
+Fx(s)f(outside)i(the)g(last)g(step)f(tak)-31 b(en.)664
+34692 y Fu(CV)p 1896 34692 V 419 w(BAD)p 4058 34692 V
+419 w(DKY)8721 b Fx(-16)1329 b(The)370 b(output)g(deriv)-61
+b(ativ)-31 b(e)371 b(v)-31 b(ector)369 b(is)h Fu(NULL)p
+Fx(.)664 36020 y Fu(CV)p 1896 36020 V 419 w(PDATA)p 5220
+36020 V 419 w(NULL)6978 b Fx(-17)1329 b(The)370 b(preconditioner)g(mo)
+31 b(dule)370 b(has)f(not)h(b)31 b(een)369 b(initialized.)0
+38658 y Fv(cvdense)425 b Fy(linear)g(solv)-35 b(er)424
+b(mo)35 b(dule)1156 40499 y Fu(CVDENSE)p 5293 40499 V
+420 w(SUCCESS)6022 b Fx(0)1329 b(Successful)368 b(function)j(return.)
+1156 41827 y Fu(CVDENSE)p 5293 41827 V 420 w(MEM)p 7456
+41827 V 418 w(NULL)5235 b Fx(-1)1329 b(The)369 b Fu(cvode)p
+22864 41827 V 419 w(mem)h Fx(argumen)-31 b(t)370 b(w)-31
+b(as)370 b Fu(NULL)p Fx(.)1156 43155 y Fu(CVDENSE)p 5293
+43155 V 420 w(LMEM)p 8037 43155 V 419 w(NULL)4653 b Fx(-2)1329
+b(The)369 b Fv(cvdense)h Fx(linear)g(solv)-31 b(er)370
+b(has)f(not)h(b)31 b(een)368 b(initialized.)1156 44484
+y Fu(CVDENSE)p 5293 44484 V 420 w(ILL)p 7456 44484 V
+418 w(INPUT)4654 b Fx(-3)1329 b(The)296 b Fv(cvdense)i
+Fx(solv)-31 b(er)297 b(is)f(not)i(compatible)h(with)f(the)e(curren)-31
+b(t)297 b Fv(nvec-)17614 45812 y(tor)368 b Fx(mo)31 b(dule.)1156
+47140 y Fu(CVDENSE)p 5293 47140 V 420 w(MEM)p 7456 47140
+V 418 w(FAIL)5235 b Fx(-4)1329 b(A)369 b(memory)h(allo)31
+b(cation)373 b(request)368 b(failed.)0 49778 y Fv(cvband)425
+b Fy(linear)f(solv)-35 b(er)425 b(mo)35 b(dule)1156 51619
+y Fu(CVBAND)p 4712 51619 V 419 w(SUCCESS)6604 b Fx(0)1329
+b(Successful)368 b(function)j(return.)1156 52947 y Fu(CVBAND)p
+4712 52947 V 419 w(MEM)p 6874 52947 V 419 w(NULL)5816
+b Fx(-1)1329 b(The)369 b Fu(cvode)p 22864 52947 V 419
+w(mem)h Fx(argumen)-31 b(t)370 b(w)-31 b(as)370 b Fu(NULL)p
+Fx(.)1156 54275 y Fu(CVBAND)p 4712 54275 V 419 w(LMEM)p
+7455 54275 V 419 w(NULL)5235 b Fx(-2)1329 b(The)369 b
+Fv(cvband)g Fx(linear)h(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)369 b(initialized.)1156 55604 y Fu(CVBAND)p 4712
+55604 V 419 w(ILL)p 6874 55604 V 419 w(INPUT)5235 b Fx(-3)1329
+b(The)343 b Fv(cvband)h Fx(solv)-31 b(er)343 b(is)h(not)g(compatible)i
+(with)e(the)g(curren)-31 b(t)343 b Fv(nvec-)17614 56932
+y(tor)368 b Fx(mo)31 b(dule.)1156 58260 y Fu(CVBAND)p
+4712 58260 V 419 w(MEM)p 6874 58260 V 419 w(FAIL)5816
+b Fx(-4)1329 b(A)369 b(memory)h(allo)31 b(cation)373
+b(request)368 b(failed.)0 60898 y Fv(cvdia)-25 b(g)424
+b Fy(linear)h(solv)-35 b(er)424 b(mo)35 b(dule)1156 62739
+y Fu(CVDIAG)p 4712 62739 V 419 w(SUCCESS)6604 b Fx(0)1329
+b(Successful)368 b(function)j(return.)1156 64067 y Fu(CVDIAG)p
+4712 64067 V 419 w(MEM)p 6874 64067 V 419 w(NULL)5816
+b Fx(-1)1329 b(The)369 b Fu(cvode)p 22864 64067 V 419
+w(mem)h Fx(argumen)-31 b(t)370 b(w)-31 b(as)370 b Fu(NULL)p
+Fx(.)1156 65395 y Fu(CVDIAG)p 4712 65395 V 419 w(LMEM)p
+7455 65395 V 419 w(NULL)5235 b Fx(-2)1329 b(The)369 b
+Fv(cvdia)-25 b(g)369 b Fx(linear)h(solv)-31 b(er)370
+b(has)f(not)h(b)31 b(een)368 b(initialized.)1156 66724
+y Fu(CVDIAG)p 4712 66724 V 419 w(ILL)p 6874 66724 V 419
+w(INPUT)5235 b Fx(-3)1329 b(The)377 b Fv(cvdia)-25 b(g)376
+b Fx(solv)-31 b(er)377 b(is)g(not)h(compatible)h(with)f(the)f(curren)
+-31 b(t)377 b Fv(nvec-)17614 68052 y(tor)368 b Fx(mo)31
+b(dule.)1156 69380 y Fu(CVDIAG)p 4712 69380 V 419 w(MEM)p
+6874 69380 V 419 w(FAIL)5816 b Fx(-4)1329 b(A)369 b(memory)h(allo)31
+b(cation)373 b(request)368 b(failed.)0 72018 y Fv(cvspgmr)424
+b Fy(linear)g(solv)-35 b(er)425 b(mo)35 b(dule)1156 73859
+y Fu(CVSPGMR)p 5293 73859 V 420 w(SUCCESS)6022 b Fx(0)1329
+b(Successful)368 b(function)j(return.)1156 75187 y Fu(CVSPGMR)p
+5293 75187 V 420 w(MEM)p 7456 75187 V 418 w(NULL)5235
+b Fx(-1)1329 b(The)369 b Fu(cvode)p 22864 75187 V 419
+w(mem)h Fx(argumen)-31 b(t)370 b(w)-31 b(as)370 b Fu(NULL)p
+Fx(.)p Black Black eop
+%%Page: 107 115
+107 114 bop Black 4000 2701 a Fy(9.2)425 b(CV)-35 b(ODE)426
+b(output)f(constan)-35 b(ts)29634 b(107)p 4000 3144 48001
+45 v Black 4664 6797 a Fu(CVSPGMR)p 8801 6797 349 45
+v 420 w(LMEM)p 11545 6797 V 419 w(NULL)4653 b Fx(-2)1329
+b(The)369 b Fv(cvspgmr)f Fx(linear)i(solv)-31 b(er)370
+b(has)f(not)h(b)31 b(een)369 b(initialized.)4664 8125
+y Fu(CVSPGMR)p 8801 8125 V 420 w(ILL)p 10964 8125 V 419
+w(INPUT)4653 b Fx(-3)1329 b(The)272 b Fv(cvspgmr)g Fx(solv)-31
+b(er)273 b(is)g(not)g(compatible)j(with)d(the)g(curren)-31
+b(t)273 b Fv(nvec-)21122 9453 y(tor)368 b Fx(mo)31 b(dule.)4664
+10782 y Fu(CVSPGMR)p 8801 10782 V 420 w(MEM)p 10964 10782
+V 419 w(FAIL)5234 b Fx(-4)1329 b(A)369 b(memory)h(allo)31
+b(cation)373 b(request)368 b(failed.)4000 13419 y Fv(spgmr)423
+b Fy(generic)j(linear)e(solv)-35 b(er)425 b(mo)35 b(dule)5156
+15475 y Fu(SPGMR)p 8131 15475 V 419 w(SUCCESS)7185 b
+Fx(0)1329 b(Con)-31 b(v)g(erged.)5156 16804 y Fu(SPGMR)p
+8131 16804 V 419 w(RES)p 10293 16804 V 419 w(REDUCED)5023
+b Fx(1)1329 b(No)369 b(con)-31 b(v)g(ergence,)371 b(but)e(the)h
+(residual)f(norm)h(w)-31 b(as)370 b(reduced.)5156 18132
+y Fu(SPGMR)p 8131 18132 V 419 w(CONV)p 10874 18132 V
+419 w(FAIL)6185 b Fx(2)1329 b(F)-92 b(ailure)369 b(to)h(con)-31
+b(v)g(erge.)5156 19460 y Fu(SPGMR)p 8131 19460 V 419
+w(QRFACT)p 12036 19460 V 420 w(FAIL)5022 b Fx(3)1329
+b(A)369 b(singular)h(matrix)h(w)-31 b(as)369 b(found)h(during)g(the)f
+(QR)g(factorization.)5156 20789 y Fu(SPGMR)p 8131 20789
+V 419 w(PSOLVE)p 12036 20789 V 420 w(FAIL)p 14780 20789
+V 419 w(REC)2860 b Fx(4)1329 b(The)369 b(preconditioner)h(solv)-31
+b(e)370 b(function)h(failed)g(reco)-31 b(v)g(erably)-92
+b(.)5156 22117 y Fu(SPGMR)p 8131 22117 V 419 w(MEM)p
+10293 22117 V 419 w(NULL)6397 b Fx(-1)1329 b(The)369
+b Fv(spgmr)f Fx(memory)i(is)f Fu(NULL)5156 23445 y(SPGMR)p
+8131 23445 V 419 w(ATIMES)p 12036 23445 V 420 w(FAIL)4653
+b Fx(-2)1329 b(The)369 b(Jacobian)i(tims)f(v)-31 b(ector)370
+b(function)g(failed.)5156 24774 y Fu(SPGMR)p 8131 24774
+V 419 w(PSOLVE)p 12036 24774 V 420 w(FAIL)p 14780 24774
+V 419 w(UNREC)1329 b Fx(-3)g(The)369 b(preconditioner)h(solv)-31
+b(e)370 b(function)h(failed)g(unreco)-31 b(v)g(erably)-92
+b(.)5156 26102 y Fu(SPGMR)p 8131 26102 V 419 w(GS)p 9712
+26102 V 419 w(FAIL)6978 b Fx(-4)1329 b(F)-92 b(ailure)369
+b(in)g(the)h(Gram-Sc)-31 b(hmidt)371 b(pro)31 b(cedure.)5156
+27430 y Fu(SPGMR)p 8131 27430 V 419 w(QRSOL)p 11455 27430
+V 419 w(FAIL)5235 b Fx(-5)1329 b(The)411 b(matrix)i Fm(R)419
+b Fx(w)-31 b(as)413 b(found)e(to)i(b)31 b(e)411 b(singular)h(during)g
+(the)f(QR)g(solv)-31 b(e)21614 28759 y(phase.)p Black
+Black eop
+%%Page: 108 116
+108 115 bop Black Black Black Black eop
+%%Page: 109 117
+109 116 bop Black Black 4000 15851 a Fw(Bibliograph)-86
+b(y)p Black 4553 21776 a Fx([1])p Black 555 w(P)-92 b(.)391
+b(N.)f(Bro)-31 b(wn,)396 b(G.)390 b(D.)g(Byrne,)395 b(and)c(A.)f(C.)h
+(Hindmarsh.)554 b(V)-31 b(ODE,)390 b(a)g(V)-92 b(ariable-Co)31
+b(e\261cien)-31 b(t)394 b(ODE)c(Solv)-31 b(er.)6275 23104
+y Fo(SIAM)396 b(J.)h(Sci.)g(Stat.)f(Comput.)p Fx(,)370
+b(10:1038{1051,)375 b(1989.)p Black 4553 25403 a([2])p
+Black 555 w(P)-92 b(.)409 b(N.)g(Bro)-31 b(wn)409 b(and)g(A.)g(C.)g
+(Hindmarsh.)609 b(Reduced)408 b(Storage)h(Matrix)g(Metho)31
+b(ds)409 b(in)f(Sti\256)h(ODE)f(Systems.)6275 26731 y
+Fo(J.)397 b(Appl.)f(Math.)f(&)h(Comp.)p Fx(,)370 b(31:49{91,)j(1989.)p
+Black 4553 29030 a([3])p Black 555 w(G.)390 b(D.)g(Byrne.)553
+b(Pragmatic)392 b(Exp)31 b(erimen)-31 b(ts)391 b(with)g(Krylo)-31
+b(v)391 b(Metho)31 b(ds)389 b(in)h(the)g(Sti\256)h(ODE)e(Setting.)555
+b(In)389 b(J.R.)6275 30358 y(Cash)382 b(and)g(I.)f(Gladw)-31
+b(ell,)387 b(editors,)f Fo(Computational)407 b(Or)-57
+b(dinary)407 b(Di\256er)-57 b(ential)409 b(Equations)p
+Fx(,)384 b(pages)e(323{356,)6275 31687 y(Oxford,)370
+b(1992.)i(Oxford)d(Univ)-31 b(ersit)g(y)371 b(Press.)p
+Black 4553 33985 a([4])p Black 555 w(G.)418 b(D.)g(Byrne)g(and)h(A.)f
+(C.)h(Hindmarsh.)638 b(A)418 b(P)-31 b(oly)g(algorithm)423
+b(for)418 b(the)g(Numerical)i(Solution)g(of)f(Ordinary)6275
+35314 y(Di\256eren)-31 b(tial)371 b(Equations.)493 b
+Fo(A)-28 b(CM)396 b(T)-85 b(r)-57 b(ans.)396 b(Math.)g(Softw.)p
+Fx(,)369 b(1:71{96,)k(1975.)p Black 4553 37612 a([5])p
+Black 555 w(G.)500 b(D.)g(Byrne)f(and)h(A.)g(C.)h(Hindmarsh.)881
+b(User)498 b(Do)31 b(cumen)-31 b(tation)503 b(for)d(PV)-31
+b(ODE,)500 b(An)g(ODE)f(Solv)-31 b(er)501 b(for)6275
+38941 y(P)-31 b(arallel)372 b(Computers.)492 b(T)-92
+b(ec)-31 b(hnical)371 b(Rep)31 b(ort)369 b(UCRL-ID-130884,)j(LLNL,)d
+(Ma)-31 b(y)370 b(1998.)p Black 4553 41239 a([6])p Black
+555 w(G.)384 b(D.)f(Byrne)g(and)h(A.)g(C.)g(Hindmarsh.)534
+b(PV)-31 b(ODE,)385 b(An)e(ODE)g(Solv)-31 b(er)384 b(for)g(P)-31
+b(arallel)385 b(Computers.)535 b Fo(Intl.)409 b(J.)6275
+42568 y(High)397 b(Perf.)g(Comput.)f(Apps.)p Fx(,)369
+b(13\(4\):254{365,)375 b(1999.)p Black 4553 44866 a([7])p
+Black 555 w(S.)333 b(D.)f(Cohen)i(and)e(A.)h(C.)h(Hindmarsh.)432
+b(CV)-31 b(ODE)333 b(User)e(Guide.)432 b(T)-92 b(ec)-31
+b(hnical)334 b(Rep)31 b(ort)332 b(UCRL-MA-118618,)6275
+46195 y(LLNL,)370 b(Septem)-31 b(b)31 b(er)369 b(1994.)p
+Black 4553 48493 a([8])p Black 555 w(S.)380 b(D.)f(Cohen)g(and)h(A.)f
+(C.)h(Hindmarsh.)521 b(CV)-31 b(ODE)q(,)382 b(a)d(Sti\256/Nonsti\256)i
+(ODE)e(Solv)-31 b(er)380 b(in)f(C.)521 b Fo(Computers)404
+b(in)6275 49822 y(Physics)p Fx(,)370 b(10\(2\):138{143,)376
+b(1996.)p Black 4553 52120 a([9])p Black 555 w(K.)431
+b(L.)f(Hieb)31 b(ert)431 b(and)g(L.)f(F.)g(Shampine.)675
+b(Implicitly)433 b(De\257ned)d(Output)h(P)-31 b(oin)g(ts)432
+b(for)e(Solutions)i(of)f(ODEs.)6275 53448 y(T)-92 b(ec)-31
+b(hnical)371 b(Rep)31 b(ort)369 b(SAND80-0180,)k(Sandia)d(National)i
+(Lab)31 b(oratories,)371 b(F)-92 b(ebruary)368 b(1980.)p
+Black 4000 55747 a([10])p Black 555 w(A.)391 b(C.)f(Hindmarsh.)554
+b(Detecting)391 b(Stabilit)-31 b(y)393 b(Barriers)c(in)h(BDF)f(Solv)-31
+b(ers.)553 b(In)390 b(J.R.)g(Cash)g(and)g(I.)g(Gladw)-31
+b(ell,)6275 57075 y(editor,)315 b Fo(Computational)331
+b(Or)-57 b(dinary)332 b(Di\256er)-57 b(ential)333 b(Equations)p
+Fx(,)314 b(pages)299 b(87{96,)316 b(Oxford,)e(1992.)302
+b(Oxford)d(Uni-)6275 58404 y(v)-31 b(ersit)g(y)371 b(Press.)p
+Black 4000 60702 a([11])p Black 555 w(A.)616 b(C.)g(Hindmarsh.)1225
+b(Av)-31 b(oiding)617 b(BDF)d(Stabilit)-31 b(y)618 b(Barriers)c(in)i
+(the)f(MOL)f(Solution)j(of)f(Adv)-31 b(ection-)6275 62031
+y(Dominated)371 b(Problems.)493 b Fo(Appl.)395 b(Num.)i(Math.)p
+Fx(,)369 b(17:311{318,)374 b(1995.)p Black 4000 64329
+a([12])p Black 555 w(A.)499 b(C.)f(Hindmarsh.)876 b(The)498
+b(PV)-31 b(ODE)498 b(and)g(ID)-31 b(A)498 b(Algorithms.)877
+b(T)-92 b(ec)-31 b(hnical)499 b(Rep)31 b(ort)498 b(UCRL-ID-141558,)6275
+65658 y(LLNL,)370 b(Decem)-31 b(b)31 b(er)368 b(2000.)p
+Black 4000 67956 a([13])p Black 555 w(A.)375 b(C.)f(Hindmarsh,)i(P)-92
+b(.)375 b(N.)f(Bro)-31 b(wn,)376 b(K.)e(E.)g(Gran)-31
+b(t,)376 b(S.)e(L.)g(Lee,)h(R.)f(Serban,)h(D.)f(E.)h(Sh)-31
+b(umak)g(er,)376 b(and)e(C.)h(S.)6275 69285 y(W)-92 b(o)31
+b(o)g(dw)-31 b(ard.)708 b(SUNDIALS,)460 b(suite)442 b(of)g(nonlinear)h
+(and)f(di\256eren)-31 b(tial/algebraic)446 b(equation)d(solv)-31
+b(ers.)708 b Fo(A)-28 b(CM)6275 70613 y(T)-85 b(r)-57
+b(ans.)397 b(Math.)e(Softw.)p Fx(,)370 b(\(submitted\),)i(2004.)p
+Black 4000 72912 a([14])p Black 555 w(A.)475 b(C.)g(Hindmarsh)g(and)f
+(R.)h(Serban.)804 b(Example)476 b(Programs)f(for)f(CV)-31
+b(ODE)475 b(v2.2.0.)807 b(T)-92 b(ec)-31 b(hnical)476
+b(rep)31 b(ort,)6275 74240 y(LLNL,)370 b(2004.)493 b(UCRL-SM-208110.)p
+Black 4000 76539 a([15])p Black 555 w(A.)397 b(C.)g(Hindmarsh)g(and)f
+(A.)h(G.)f(T)-92 b(a)-31 b(ylor.)969 b(PV)-31 b(ODE)397
+b(and)f(KINSOL:)h(P)-31 b(arallel)398 b(Soft)-31 b(w)g(are)398
+b(for)e(Di\256eren)-31 b(tial)6275 77867 y(and)370 b(Nonlinear)h
+(Systems.)491 b(T)-92 b(ec)-31 b(hnical)371 b(Rep)31
+b(ort)369 b(UCRL-ID-129739,)j(LLNL,)d(F)-92 b(ebruary)368
+b(1998.)p Black Black eop
+%%Page: 110 118
+110 117 bop Black 0 2701 a Fy(110)35847 b(BIBLIOGRAPHY)p
+0 3144 48001 45 v Black Black 0 6974 a Fx([16])p Black
+555 w(K.)373 b(R.)f(Jac)-31 b(kson)372 b(and)h(R.)f(Sac)-31
+b(ks-Da)g(vis.)501 b(An)372 b(Alternativ)-31 b(e)374
+b(Implemen)-31 b(tation)375 b(of)e(V)-92 b(ariable)373
+b(Step-Size)g(Mul-)2275 8302 y(tistep)d(F)-92 b(orm)-31
+b(ulas)370 b(for)f(Sti\256)h(ODEs.)491 b Fo(A)-28 b(CM)395
+b(T)-85 b(r)-57 b(ans.)397 b(Math.)e(Softw.)p Fx(,)370
+b(6:295{318,)k(1980.)p Black 0 10516 a([17])p Black 555
+w(K.)315 b(Radhakrishnan)g(and)g(A.)g(C.)g(Hindmarsh.)402
+b(Description)315 b(and)f(Use)g(of)h(LSODE,)g(the)f(Liv)-31
+b(ermore)315 b(Solv)-31 b(er)2275 11844 y(for)370 b(Ordinary)f
+(Di\256eren)-31 b(tial)370 b(Equations.)494 b(T)-92 b(ec)-31
+b(hnical)371 b(Rep)31 b(ort)369 b(UCRL-ID-113855,)j(LLNL,)d(marc)-31
+b(h)370 b(1994.)p Black Black eop
+%%Page: 111 119
+111 118 bop Black Black Black 4000 13314 a Fw(Index)p
+Black 4000 18849 a Fx(Adams)370 b(metho)31 b(d,)370 b(11)4000
+20191 y Fu(ADAMS)p 6975 20191 349 45 v 419 w(Q)p 7975
+20191 V 419 w(MAX)p Fx(,)g(32)4000 22871 y Fv(band)f
+Fx(generic)h(linear)g(solv)-31 b(er)6214 24213 y(functions,)371
+b(102)6214 25555 y(macros,)f(100{102)6214 26897 y(t)-31
+b(yp)31 b(e)370 b Fu(BandMat)p Fx(,)g(100)4000 28239
+y Fu(BAND)p 6394 28239 V 419 w(COL)p Fx(,)g(56,)g Fy(102)4000
+29581 y Fu(BAND)p 6394 29581 V 419 w(COL)p 8556 29581
+V 419 w(ELEM)p Fx(,)g(56,)g Fy(102)4000 30924 y Fu(BAND)p
+6394 30924 V 419 w(ELEM)p Fx(,)g(56,)h Fy(100)4000 32266
+y Fu(BandMat)p Fx(,)g(23,)f(56,)g Fy(100)4000 33608 y
+Fx(BDF)e(metho)31 b(d,)371 b(11)4000 34950 y Fu(BDF)p
+5813 34950 V 419 w(Q)p 6813 34950 V 418 w(MAX)p Fx(,)f(32)4000
+36292 y Fu(BIG)p 5813 36292 V 419 w(REAL)p Fx(,)g(22,)g(87)4000
+38972 y Fu(CLASSICAL)p 9299 38972 V 420 w(GS)p Fx(,)g
+Fy(39)4000 40314 y Fu(CV)p 5232 40314 V 419 w(ADAMS)p
+Fx(,)g Fy(25)p Fx(,)g(53)4000 41656 y Fu(CV)p 5232 41656
+V 419 w(BAD)p 7394 41656 V 419 w(DKY)p Fx(,)g(40)4000
+42998 y Fu(CV)p 5232 42998 V 419 w(BAD)p 7394 42998 V
+419 w(K)p Fx(,)f(40)4000 44340 y Fu(CV)p 5232 44340 V
+419 w(BAD)p 7394 44340 V 419 w(T)p Fx(,)g(40)4000 45682
+y Fu(CV)p 5232 45682 V 419 w(BDF)p Fx(,)h Fy(25)p Fx(,)g(53)4000
+47025 y Fu(CV)p 5232 47025 V 419 w(CONV)p 7975 47025
+V 419 w(FAILURE)p Fx(,)g(30,)h(76)4000 48367 y Fu(CV)p
+5232 48367 V 419 w(ERR)p 7394 48367 V 419 w(FAILURE)p
+Fx(,)f(30,)h(76)4000 49709 y Fu(CV)p 5232 49709 V 419
+w(FUNCTIONAL)p Fx(,)g Fy(26)p Fx(,)f(35)4000 51051 y
+Fu(CV)p 5232 51051 V 419 w(ILL)p 7394 51051 V 419 w(INPUT)p
+Fx(,)g(26,)g(29,)h(32{36,)h(54)4000 52393 y Fu(Cv)p 5232
+52393 V 419 w(ILL)p 7394 52393 V 419 w(INPUT)p Fx(,)e(76)4000
+53736 y Fu(CV)p 5232 53736 V 419 w(LINIT)p 8556 53736
+V 419 w(FAIL)p Fx(,)g(30,)g(76)4000 55078 y Fu(CV)p 5232
+55078 V 419 w(LSETUP)p 9137 55078 V 419 w(FAIL)p Fx(,)g(30,)h(76)4000
+56420 y Fu(CV)p 5232 56420 V 419 w(LSOLVE)p 9137 56420
+V 419 w(FAIL)p Fx(,)f(30,)h(76)4000 57762 y Fu(CV)p 5232
+57762 V 419 w(MEM)p 7394 57762 V 419 w(FAIL)p Fx(,)f(26)4000
+59104 y Fu(CV)p 5232 59104 V 419 w(MEM)p 7394 59104 V
+419 w(NULL)p Fx(,)291 b(26,)308 b(29,)g(30,)g(32{36,)h(40,)f(42{47,)h
+(54,)f(60,)8428 60433 y(76)4000 61775 y Fu(CV)p 5232
+61775 V 419 w(NEWTON)p Fx(,)370 b Fy(26)p Fx(,)h(35)4000
+63117 y Fu(CV)p 5232 63117 V 419 w(NO)p 6813 63117 V
+418 w(MALLOC)p Fx(,)g(29,)f(54,)h(76)4000 64459 y Fu(CV)p
+5232 64459 V 419 w(NO)p 6813 64459 V 418 w(SLDET)p Fx(,)g(45)4000
+65801 y Fu(CV)p 5232 65801 V 419 w(NORMAL)p Fx(,)f(29)4000
+67143 y Fu(CV)p 5232 67143 V 419 w(NORMAL)p 9137 67143
+V 419 w(TSTOP)p Fx(,)g(29)4000 68486 y Fu(CV)p 5232 68486
+V 419 w(ONE)p 7394 68486 V 419 w(STEP)p Fx(,)g(29)4000
+69828 y Fu(CV)p 5232 69828 V 419 w(ONE)p 7394 69828 V
+419 w(STEP)p 10137 69828 V 419 w(TSTOP)p Fx(,)g(29)4000
+71170 y Fu(CV)p 5232 71170 V 419 w(PDATA)p 8556 71170
+V 419 w(NULL)p Fx(,)g(62,)g(63,)h(67,)f(68)4000 72512
+y Fu(CV)p 5232 72512 V 419 w(ROOT)p 7975 72512 V 419
+w(RETURN)p Fx(,)g(29,)h(76)4000 73854 y Fu(CV)p 5232
+73854 V 419 w(SS)p Fx(,)e Fy(26)p Fx(,)i Fy(36)p Fx(,)f(53)4000
+75196 y Fu(CV)p 5232 75196 V 419 w(SUCCESS)p Fx(,)355
+b(26,)k(29,)f(30,)h(32{36,)h(40,)f(42{47,)h(54,)e(60,)8428
+76525 y(63,)370 b(68,)h(76)4000 77867 y Fu(CV)p 5232
+77867 V 419 w(SV)p Fx(,)e Fy(26)p Fx(,)i Fy(36)p Fx(,)f(53)p
+Black Black 28553 18849 a Fu(CV)p 29785 18849 V 419 w(TOO)p
+31947 18849 V 419 w(MUCH)p 34690 18849 V 419 w(ACC)p
+Fx(,)g(30,)g(76)28553 20190 y Fu(CV)p 29785 20190 V 419
+w(TOO)p 31947 20190 V 419 w(MUCH)p 34690 20190 V 419
+w(WORK)p Fx(,)g(30,)h(76)28553 21532 y Fu(CV)p 29785
+21532 V 419 w(TSTOP)p 33109 21532 V 419 w(RETURN)p Fx(,)g(29,)f(76)
+28553 22873 y Fu(CV)p 29785 22873 V 419 w(WF)p Fx(,)g
+Fy(26)p Fx(,)g(53)28553 24214 y Fv(cvband)g Fx(linear)g(solv)-31
+b(er)30767 25556 y(Jacobian)371 b(appro)-31 b(ximation)373
+b(used)c(b)-31 b(y)-92 b(,)369 b(37)30767 26897 y Fv(nvector)h
+Fx(compatibilit)-31 b(y)-92 b(,)374 b(27)30767 28238
+y(optional)e(input,)f(37)30767 29580 y(optional)h(output,)f(48{49)30767
+30921 y(selection)g(of,)f(27)30767 32262 y(use)f(in)g
+Fv(f)-25 b(cv)g(ode)p Fx(,)371 b(74)28553 33604 y Fv(cvband)f
+Fx(linear)g(solv)-31 b(er)30767 34945 y(memory)371 b(requiremen)-31
+b(ts,)370 b(48)28553 36286 y Fu(CVBand)p Fx(,)h(24,)f(27,)h
+Fy(27)p Fx(,)f(56)28553 37627 y Fu(cvband.h)p Fx(,)h(23)28553
+38969 y Fu(CVBAND)p 32109 38969 V 420 w(ILL)p 34272 38969
+V 419 w(INPUT)p Fx(,)f(28)28553 40310 y Fu(CVBAND)p 32109
+40310 V 420 w(LMEM)p 34853 40310 V 419 w(NULL)p Fx(,)g(37,)g(48,)h(49)
+28553 41651 y Fu(CVBAND)p 32109 41651 V 420 w(MEM)p 34272
+41651 V 419 w(FAIL)p Fx(,)f(28)28553 42993 y Fu(CVBAND)p
+32109 42993 V 420 w(MEM)p 34272 42993 V 419 w(NULL)p
+Fx(,)g(27,)g(37,)h(48,)f(49)28553 44334 y Fu(CVBAND)p
+32109 44334 V 420 w(SUCCESS)p Fx(,)g(27,)h(37,)f(48,)h(49)28553
+45675 y Fu(CVBandDQJac)p Fx(,)h(37)28553 47017 y Fu(CVBandGetLastFlag)p
+Fx(,)g Fy(49)28553 48358 y Fu(CVBandGetNumJacEvals)p
+Fx(,)h Fy(49)28553 49699 y Fu(CVBandGetNumRhsEvals)p
+Fx(,)g Fy(49)28553 51041 y Fu(CVBandGetWorkSpace)p Fx(,)g
+Fy(48)28553 52382 y Fu(CVBandJacFn)p Fx(,)f Fy(56)28553
+53723 y Fv(cvbandpre)e Fx(preconditioner)30767 55065
+y(description,)h(61)30767 56406 y(optional)h(output,)f(63)30767
+57747 y(usage,)f(61{62)30767 59088 y(user-callable)h(functions,)g
+(62{63)28553 60430 y Fu(CVBandPrecAlloc)p Fx(,)h Fy(62)28553
+61771 y Fu(CVBandPrecFree)p Fx(,)g Fy(63)28553 63112
+y Fu(CVBandPrecGetNumRhsEvals)p Fx(,)i Fy(63)28553 64454
+y Fu(CVBandPrecGetWorkSpace)p Fx(,)f Fy(63)28553 65795
+y Fu(CVBandSetJacFn)p Fx(,)f Fy(37)28553 67136 y Fv(cvbbdpre)f
+Fx(preconditioner)30767 68478 y(description,)g(64)30767
+69819 y(optional)h(output,)f(68{69)30767 71160 y(usage,)f(65{66)30767
+72502 y(user-callable)h(functions,)g(66{68)30767 73843
+y(user-supplied)e(functions,)i(64{65)28553 75184 y Fu(CVBBDPrecAlloc)p
+Fx(,)h Fy(66)28553 76526 y Fu(CVBBDPrecFree)p Fx(,)g
+Fy(67)28553 77867 y Fu(CVBBDPrecGetNumGfnEvals)p Fx(,)h
+Fy(68)p Black Black eop
+%%Page: 112 120
+112 119 bop Black 0 2701 a Fy(112)41838 b(INDEX)p 0 3144
+48001 45 v Black 0 6974 a Fu(CVBBDPrecGetWorkSpace)p
+Fx(,)373 b Fy(68)0 8311 y Fu(CVBBDPrecReInit)p Fx(,)f
+Fy(68)0 9649 y Fu(CVBBDSpgmr)p Fx(,)f Fy(67)0 10987 y
+Fu(CVBPSpgmr)p Fx(,)g(61,)f Fy(62)p Fx(,)h(66)0 12324
+y Fv(cvdense)f Fx(linear)g(solv)-31 b(er)2214 13662 y(Jacobian)371
+b(appro)-31 b(ximation)372 b(used)d(b)-31 b(y)-92 b(,)370
+b(37)2214 14999 y Fv(nvector)f Fx(compatibilit)-31 b(y)-92
+b(,)374 b(27)2214 16337 y(optional)e(input,)e(37)2214
+17675 y(optional)i(output,)f(47{48)2214 19012 y(selection)f(of,)h(27)
+2214 20350 y(use)e(in)g Fv(f)-25 b(cv)g(ode)p Fx(,)371
+b(73)0 21688 y Fv(cvdense)f Fx(linear)g(solv)-31 b(er)2214
+23025 y(memory)370 b(requiremen)-31 b(ts,)370 b(47)0
+24363 y Fu(CVDense)p Fx(,)h(24,)f(27,)g Fy(27)p Fx(,)h(55)0
+25700 y Fu(cvdense.h)p Fx(,)g(22)0 27038 y Fu(CVDENSE)p
+4137 27038 349 45 v 419 w(ILL)p 6299 27038 V 419 w(INPUT)p
+Fx(,)g(27)0 28376 y Fu(CVDENSE)p 4137 28376 V 419 w(LMEM)p
+6880 28376 V 419 w(NULL)p Fx(,)g(37,)f(47,)g(48)0 29713
+y Fu(CVDENSE)p 4137 29713 V 419 w(MEM)p 6299 29713 V
+419 w(FAIL)p Fx(,)g(27)0 31051 y Fu(CVDENSE)p 4137 31051
+V 419 w(MEM)p 6299 31051 V 419 w(NULL)p Fx(,)g(27,)h(37,)f(47,)h(48)0
+32388 y Fu(CVDENSE)p 4137 32388 V 419 w(SUCCESS)p Fx(,)g(27,)f(37,)h
+(47,)f(48)0 33726 y Fu(CVDenseDQJac)p Fx(,)h(37)0 35064
+y Fu(CVDenseGetLastFlag)p Fx(,)h Fy(48)0 36401 y Fu
+(CVDenseGetNumJacEvals)p Fx(,)h Fy(47)0 37739 y Fu
+(CVDenseGetNumRhsEvals)p Fx(,)g Fy(48)0 39076 y Fu(CVDenseGetWorkSpace)
+p Fx(,)f Fy(47)0 40414 y Fu(CVDenseJacFn)p Fx(,)f Fy(55)0
+41752 y Fu(CVDenseSetJacFn)p Fx(,)h Fy(37)0 43089 y Fv(cvdia)-25
+b(g)369 b Fx(linear)h(solv)-31 b(er)2214 44427 y(Jacobian)371
+b(appro)-31 b(ximation)372 b(used)d(b)-31 b(y)-92 b(,)370
+b(28)2214 45764 y(optional)i(output,)f(49{50)2214 47102
+y(selection)f(of,)h(28)2214 48440 y(use)e(in)g Fv(f)-25
+b(cv)g(ode)p Fx(,)371 b(73)0 49777 y Fv(cvdia)-25 b(g)369
+b Fx(linear)h(solv)-31 b(er)2214 51115 y(memory)370 b(requiremen)-31
+b(ts,)370 b(50)0 52452 y Fu(CVDiag)p Fx(,)g(24,)h(27,)f
+Fy(28)0 53790 y Fu(cvdiag.h)p Fx(,)h(23)0 55128 y Fu(CVDIAG)p
+3556 55128 V 419 w(ILL)p 5718 55128 V 419 w(INPUT)p Fx(,)f(28)0
+56465 y Fu(CVDIAG)p 3556 56465 V 419 w(LMEM)p 6299 56465
+V 419 w(NULL)p Fx(,)g(50)0 57803 y Fu(CVDIAG)p 3556 57803
+V 419 w(MEM)p 5718 57803 V 419 w(FAIL)p Fx(,)g(28)0 59140
+y Fu(CVDIAG)p 3556 59140 V 419 w(MEM)p 5718 59140 V 419
+w(NULL)p Fx(,)g(28,)h(50)0 60478 y Fu(CVDIAG)p 3556 60478
+V 419 w(SUCCESS)p Fx(,)g(28,)f(50)0 61816 y Fu(CVDiagGetLastFlag)p
+Fx(,)i Fy(50)0 63153 y Fu(CVDiagGetNumRhsEvals)p Fx(,)g
+Fy(50)0 64491 y Fu(CVDiagGetWorkSpace)p Fx(,)g Fy(50)0
+65828 y Fu(CVEwtFn)p Fx(,)f Fy(54)0 67166 y Fv(cv)-25
+b(ode)p Fx(,)370 b(1)2214 68504 y(motiv)-61 b(ation)372
+b(for)e(writing)h(in)e(C,)h(1)2214 69841 y(pac)-31 b(k)-61
+b(age)370 b(structure,)f(17)2214 71179 y(relationship)i(to)f
+Fv(cv)-25 b(ode)p Fx(,)370 b Fv(pv)-25 b(ode)p Fx(,)371
+b(1)2214 72516 y(relationship)g(to)f Fv(v)-25 b(ode)p
+Fx(,)370 b Fv(v)-25 b(odpk)p Fx(,)369 b(1)0 73854 y Fv(cv)-25
+b(ode)370 b Fx(linear)g(solv)-31 b(ers)2214 75192 y(built)370
+b(on)g(generic)f(solv)-31 b(ers,)370 b(27)2214 76529
+y Fv(cvband)p Fx(,)g(27)2214 77867 y Fv(cvdense)p Fx(,)g(27)p
+Black Black 26767 6974 a Fv(cvdia)-25 b(g)p Fx(,)370
+b(28)26767 8311 y Fv(cvspgmr)p Fx(,)f(28)26767 9649 y(header)g
+(\257les,)h(22)26767 10987 y(implemen)-31 b(tation)374
+b(details,)d(19)26767 12324 y(list)f(of,)h(17{19)26767
+13662 y Fv(nvector)f Fx(compatibilit)-31 b(y)-92 b(,)374
+b(21)26767 14999 y(selecting)d(one,)f(27)24553 16337
+y Fu(CVode)p Fx(,)h(21,)f(25,)h Fy(29)24553 17675 y Fu(cvode.h)p
+Fx(,)g(22)24553 19012 y Fu(CVodeCreate)p Fx(,)h Fy(25)24553
+20350 y Fu(CVodeFree)p Fx(,)f(25,)g Fy(26)24553 21688
+y Fu(CVodeGetActualInitStep)p Fx(,)i Fy(44)24553 23025
+y Fu(CVodeGetCurrentOrder)p Fx(,)g Fy(43)24553 24363
+y Fu(CVodeGetCurrentStep)p Fx(,)g Fy(44)24553 25700 y
+Fu(CVodeGetCurrentTime)p Fx(,)g Fy(44)24553 27038 y Fu(CVodeGetDky)p
+Fx(,)f Fy(40)24553 28376 y Fu(CVodeGetErrWeights)p Fx(,)h
+Fy(45)24553 29713 y Fu(CVodeGetEstLocalErrors)p Fx(,)g
+Fy(45)24553 31051 y Fu(CVodeGetIntegratorStats)p Fx(,)g
+Fy(46)24553 32388 y Fu(CVodeGetLastOrder)p Fx(,)f Fy(43)24553
+33726 y Fu(CVodeGetLastStep)p Fx(,)g Fy(44)24553 35064
+y Fu(CVodeGetNonlinSolvStats)p Fx(,)h Fy(47)24553 36401
+y Fu(CVodeGetNumErrTestFails)p Fx(,)g Fy(43)24553 37739
+y Fu(CVodeGetNumGEvals)p Fx(,)f Fy(60)24553 39076 y Fu
+(CVodeGetNumLinSolvSetups)p Fx(,)i Fy(43)24553 40414
+y Fu(CVodeGetNumNonlinSolvConvFails)p Fx(,)g Fy(46)24553
+41752 y Fu(CVodeGetNumNonlinSolvIters)p Fx(,)g Fy(46)24553
+43089 y Fu(CVodeGetNumRhsEvals)p Fx(,)f Fy(42)24553 44427
+y Fu(CVodeGetNumStabLimOrderReds)p Fx(,)h Fy(45)24553
+45764 y Fu(CVodeGetNumSteps)p Fx(,)e Fy(42)24553 47102
+y Fu(CVodeGetRootInfo)p Fx(,)g Fy(60)24553 48440 y Fu
+(CVodeGetTolScaleFactor)p Fx(,)h Fy(45)24553 49777 y
+Fu(CVodeGetWorkSpace)p Fx(,)f Fy(42)24553 51115 y Fu(CVodeMalloc)p
+Fx(,)g Fy(26)p Fx(,)e(53)24553 52452 y Fu(CVodeReInit)p
+Fx(,)i Fy(53)24553 53790 y Fu(CVodeRootInit)p Fx(,)g
+Fy(59)24553 55128 y Fv(cv)-25 b(odes)p Fx(,)371 b(21)24553
+56465 y Fu(CVodeSetErrFile)p Fx(,)h Fy(30)24553 57803
+y Fu(CVodeSetEwtFn)p Fx(,)g Fy(36)24553 59140 y Fu(CVodeSetFdata)p
+Fx(,)g Fy(32)24553 60478 y Fu(CVodeSetInitStep)p Fx(,)g
+Fy(33)24553 61816 y Fu(CVodeSetIterType)p Fx(,)g Fy(35)24553
+63153 y Fu(CVodeSetMaxConvFails)p Fx(,)h Fy(35)24553
+64491 y Fu(CVodeSetMaxErrTestFails)p Fx(,)g Fy(34)24553
+65828 y Fu(CVodeSetMaxHnilWarns)p Fx(,)g Fy(33)24553
+67166 y Fu(CVodeSetMaxNonlinIters)p Fx(,)g Fy(35)24553
+68504 y Fu(CVodeSetMaxNumSteps)p Fx(,)g Fy(32)24553 69841
+y Fu(CVodeSetMaxOrder)p Fx(,)f Fy(32)24553 71179 y Fu(CVodeSetMaxStep)p
+Fx(,)g Fy(34)24553 72516 y Fu(CVodeSetMinStep)p Fx(,)g
+Fy(33)24553 73854 y Fu(CVodeSetNonlinConvCoef)p Fx(,)h
+Fy(35)24553 75192 y Fu(CVodeSetStabLimDet)p Fx(,)g Fy(33)24553
+76529 y Fu(CVodeSetStopTime)p Fx(,)f Fy(34)24553 77867
+y Fu(CVodeSetTolerances)p Fx(,)h Fy(36)p Black Black
+eop
+%%Page: 113 121
+113 120 bop Black 4000 2701 a Fy(INDEX)41838 b(113)p
+4000 3144 48001 45 v Black 4000 6974 a Fu(CVRhsFn)p Fx(,)371
+b(26,)f(53,)g Fy(54)4000 8313 y Fu(CVRootFn)p Fx(,)h
+Fy(60)4000 9651 y Fv(cvspgmr)d Fx(linear)i(solv)-31 b(er)6214
+10990 y(Jacobian)371 b(appro)-31 b(ximation)372 b(used)d(b)-31
+b(y)-92 b(,)370 b(38)6214 12329 y(optional)i(input,)e(38{40)6214
+13667 y(optional)i(output,)f(50{53)6214 15006 y(preconditioner)f(setup)
+f(function,)i(38,)g(58)6214 16345 y(preconditioner)f(solv)-31
+b(e)370 b(function,)h(38,)g(57)6214 17684 y(selection)f(of,)h(28)6214
+19022 y(use)e(in)g Fv(f)-25 b(cv)g(ode)p Fx(,)371 b(74)4000
+20361 y Fv(cvspgmr)d Fx(linear)i(solv)-31 b(er)6214 21700
+y(memory)370 b(requiremen)-31 b(ts,)370 b(51)4000 23038
+y Fu(CVSpgmr)p Fx(,)h(25,)f(27,)g Fy(28)4000 24377 y
+Fu(cvspgmr.h)p Fx(,)h(23)4000 25716 y Fu(CVSPGMR)p 8137
+25716 349 45 v 419 w(ILL)p 10299 25716 V 419 w(INPUT)p
+Fx(,)g(28,)f(39,)g(62,)h(67)4000 27055 y Fu(CVSPGMR)p
+8137 27055 V 419 w(LMEM)p 10880 27055 V 419 w(NULL)p
+Fx(,)g(38,)f(39,)g(51{53)4000 28393 y Fu(CVSPGMR)p 8137
+28393 V 419 w(MEM)p 10299 28393 V 419 w(FAIL)p Fx(,)g(28,)h(62,)f(67)
+4000 29732 y Fu(CVSPGMR)p 8137 29732 V 419 w(MEM)p 10299
+29732 V 419 w(NULL)p Fx(,)g(28,)h(38,)f(39,)h(51{53,)h(62,)e(67)4000
+31071 y Fu(CVSPGMR)p 8137 31071 V 419 w(SUCCESS)p Fx(,)h(28,)f(38,)h
+(39,)f(51{53,)i(62,)f(67)4000 32409 y Fu(CVSpgmrDQJtimes)p
+Fx(,)h(38)4000 33748 y Fu(CVSpgmrGetLastFlag)p Fx(,)g
+Fy(52)4000 35087 y Fu(CVSpgmrGetNumConvFails)p Fx(,)h
+Fy(51)4000 36426 y Fu(CVSpgmrGetNumJtimesEvals)p Fx(,)g
+Fy(52)4000 37764 y Fu(CVSpgmrGetNumLinIters)p Fx(,)g
+Fy(51)4000 39103 y Fu(CVSpgmrGetNumPrecEvals)p Fx(,)g
+Fy(51)4000 40442 y Fu(CVSpgmrGetNumPrecSolves)p Fx(,)g
+Fy(52)4000 41781 y Fu(CVSpgmrGetNumRhsEvals)p Fx(,)g
+Fy(52)4000 43119 y Fu(CVSpgmrGetWorkSpace)p Fx(,)f Fy(51)4000
+44458 y Fu(CVSpgmrJacTimesVecFn)p Fx(,)g Fy(57)4000 45797
+y Fu(CVSpgmrPrecSetupFn)p Fx(,)g Fy(58)4000 47135 y Fu
+(CVSpgmrPrecSolveFn)p Fx(,)g Fy(57)4000 48474 y Fu(CVSpgmrSet)p
+Fx(,)f Fy(38)4000 49813 y Fu(CVSpgmrSetDelt)p Fx(,)h
+Fy(39)4000 51152 y Fu(CVSpgmrSetGSType)p Fx(,)g Fy(39)4000
+52490 y Fu(CVSpgmrSetJacTimesFn)p Fx(,)g Fy(38)4000 53829
+y Fu(CVSpgmrSetPrecType)p Fx(,)g Fy(39)4000 56447 y Fu(denaddI)p
+Fx(,)f Fy(99)4000 57786 y Fu(denalloc)p Fx(,)g Fy(98)4000
+59125 y Fu(denallocpiv)p Fx(,)g Fy(99)4000 60464 y Fu(dencopy)p
+Fx(,)g Fy(99)4000 61802 y Fu(denfree)p Fx(,)g Fy(99)4000
+63141 y Fu(denfreepiv)p Fx(,)g Fy(99)4000 64480 y Fu(denprint)p
+Fx(,)g Fy(99)4000 65818 y Fu(denscale)p Fx(,)g Fy(99)4000
+67157 y Fv(dense)f Fx(generic)f(linear)h(solv)-31 b(er)6214
+68496 y(functions)7321 69835 y(large)370 b(matrix,)h(98)7321
+71173 y(small)f(matrix,)i(98{99)6214 72512 y(macros,)e(98)6214
+73851 y(t)-31 b(yp)31 b(e)370 b Fu(DenseMat)p Fx(,)g(97)4000
+75189 y Fu(DENSE)p 6975 75189 V 419 w(COL)p Fx(,)g(55,)h
+Fy(98)4000 76528 y Fu(DENSE)p 6975 76528 V 419 w(ELEM)p
+Fx(,)f(55,)h Fy(98)4000 77867 y Fu(DenseMat)p Fx(,)g(22,)f(55,)h
+Fy(97)p Black Black 28553 6974 a Fu(denzero)p Fx(,)g
+Fy(99)28553 9351 y Fu(e)p 29204 9351 V 419 w(data)p Fx(,)f(55)28553
+10680 y(error)f(con)-31 b(trol)30767 12008 y(order)369
+b(selection,)i(14)30767 13336 y(step)e(size)h(selection,)h(13{14)28553
+14665 y(error)e(message,)h(30)28553 17042 y Fu(f)p 29204
+17042 V 419 w(data)p Fx(,)g Fy(32)p Fx(,)h(54,)f(65)28553
+18370 y Fu(FCVBAND)p Fx(,)h(74)28553 19699 y Fu(FCVBANDSETJAC)p
+Fx(,)h(74)28553 21027 y Fu(FCVBBDFREE)p Fx(,)f(81)28553
+22355 y Fu(FCVBBDINIT)p Fx(,)g(80)28553 23684 y Fu(FCVBBDOPT)p
+Fx(,)g(80)28553 25012 y Fu(FCVBBDREINIT)p Fx(,)h(81)28553
+26340 y Fu(FCVBBDSPGMR)p Fx(,)g(80)28553 27669 y Fu(FCVBJAC)p
+Fx(,)f(74)28553 28997 y Fu(FCVBPFREE)p Fx(,)g(79)28553
+30326 y Fu(FCVBPINIT)p Fx(,)g(78)28553 31654 y Fu(FCVBPOPT)p
+Fx(,)g(79)28553 32982 y Fu(FCVBPSPGMR)p Fx(,)g(78)28553
+34311 y Fu(FCVDENSE)p Fx(,)g(73)28553 35639 y Fu(FCVDENSESETJAC)p
+Fx(,)h(74)28553 36967 y Fu(FCVDIAG)p Fx(,)f(73)28553
+38296 y Fu(FCVDJAC)p Fx(,)g(73)28553 39624 y Fu(FCVDKY)p
+Fx(,)g(76)28553 40952 y Fu(FCVEWT)p Fx(,)g(73)28553 42281
+y Fu(FCVEWTSET)p Fx(,)g(73)28553 43609 y Fu(FCVFREE)p
+Fx(,)g(77)28553 44937 y Fu(FCVFUN)p Fx(,)g(72)28553 46266
+y Fu(FCVJTIMES)p Fx(,)g(75)28553 47594 y Fu(FCVMALLOC)p
+Fx(,)g Fy(73)28553 48922 y Fu(FCVMALLOC)p Fx(,)g(72)28553
+50251 y Fu(FCVODE)p Fx(,)g(76)28553 51579 y Fv(f)-25
+b(cv)g(ode)371 b Fx(in)-31 b(terface)370 b(mo)31 b(dule)30767
+52908 y(in)-31 b(terface)371 b(to)f(the)f Fv(cvbandpre)h
+Fx(mo)31 b(dule,)371 b(78{79)30767 54236 y(in)-31 b(terface)371
+b(to)f(the)f Fv(cvbbdpre)h Fx(mo)31 b(dule,)371 b(79{81)30767
+55564 y(optional)h(input)e(and)g(output,)g(70)30767 56893
+y(ro)31 b(ot\257nding,)372 b(77{78)30767 58221 y(usage,)e(70{77)30767
+59549 y(user-callable)h(functions,)g(69)30767 60878 y(user-supplied)e
+(functions,)i(69)28553 62206 y Fu(FCVPSET)p Fx(,)g(75)28553
+63534 y Fu(FCVPSOL)p Fx(,)g(75)28553 64863 y Fu(FCVREINIT)p
+Fx(,)g(77)28553 66191 y Fu(FCVSPGMR)p Fx(,)g(74)28553
+67519 y Fu(FCVSPGMRSETJAC)p Fx(,)h(75,)e(79,)h(80)28553
+68848 y Fu(FCVSPGMRSETPREC)p Fx(,)h(75)28553 70176 y
+Fu(FNVFREEP)p Fx(,)f(77)28553 71504 y Fu(FNVFREES)p Fx(,)g(77)28553
+72833 y Fu(FNVINITP)p Fx(,)g(72)28553 74161 y Fu(FNVINITS)p
+Fx(,)g(72)28553 76539 y Fu(g)p 29204 76539 V 419 w(data)p
+Fx(,)f(61)28553 77867 y Fu(gefa)p Fx(,)h Fy(99)p Black
+Black eop
+%%Page: 114 122
+114 121 bop Black 0 2701 a Fy(114)41838 b(INDEX)p 0 3144
+48001 45 v Black 0 6974 a Fx(generic)369 b(linear)h(solv)-31
+b(ers)2214 8306 y Fv(band)p Fx(,)370 b(100)2214 9637
+y Fv(dense)p Fx(,)g(97)2214 10969 y Fv(spgmr)p Fx(,)e(102)2214
+12301 y(use)h(in)g Fv(cv)-25 b(ode)p Fx(,)370 b(19)0
+13632 y Fu(gesl)p Fx(,)g Fy(99)0 14964 y Fx(GMRES)f(metho)31
+b(d,)370 b(28,)h(39,)f(102)0 16296 y(Gram-Sc)-31 b(hmidt)371
+b(pro)31 b(cedure,)368 b(39)0 18789 y(half-bandwidths,)k(27,)f(56{57,)g
+(62,)g(66)0 20121 y(header)e(\257les,)h(22,)g(61,)g(65)0
+22615 y Fu(IOPT)p Fx(,)g(70,)h(71)0 23947 y Fu(itask)p
+Fx(,)f(25,)h Fy(29)0 25278 y Fu(iter)p Fx(,)f Fy(26)p
+Fx(,)h(35)0 26610 y Fu(itol)p Fx(,)f Fy(26)p Fx(,)h Fy(36)p
+Fx(,)f(53)0 29104 y(Jacobian)h(appro)-31 b(ximation)373
+b(function)2214 30435 y(band)3321 31767 y(di\256erence)c(quotien)-31
+b(t,)371 b(37)3321 33099 y(use)d(in)i Fv(f)-25 b(cv)g(ode)p
+Fx(,)370 b(74)3321 34430 y(user-supplied,)f(37,)h(56{57)2214
+35762 y(dense)3321 37094 y(di\256erence)f(quotien)-31
+b(t,)371 b(37)3321 38425 y(use)d(in)i Fv(f)-25 b(cv)g(ode)p
+Fx(,)370 b(73)3321 39757 y(user-supplied,)f(37,)h(55{56)2214
+41089 y(diagonal)3321 42420 y(di\256erence)f(quotien)-31
+b(t,)371 b(28)2214 43752 y(Jacobian)g(times)f(v)-31 b(ector)3321
+45084 y(di\256erence)369 b(quotien)-31 b(t,)371 b(38)3321
+46415 y(use)d(in)i Fv(f)-25 b(cv)g(ode)p Fx(,)370 b(75)3321
+47747 y(user-supplied,)f(38,)h(57)0 50241 y Fu(linit)p
+Fx(,)g Fy(93)0 51573 y Fu(lmm)p Fx(,)g Fy(26)p Fx(,)g(53)0
+52904 y Fv(lsode)p Fx(,)g(1)0 55398 y Fu(maxl)p Fx(,)g(28,)h(62,)f(67)0
+56730 y Fu(maxord)p Fx(,)g Fy(32)p Fx(,)h(53)0 58061
+y(memory)f(requiremen)-31 b(ts)2214 59393 y Fv(cvband)369
+b Fx(linear)h(solv)-31 b(er,)370 b(48)2214 60725 y Fv(cvbandpre)g
+Fx(preconditioner,)h(63)2214 62056 y Fv(cvbbdpre)f Fx(preconditioner,)h
+(68)2214 63388 y Fv(cvdense)f Fx(linear)g(solv)-31 b(er,)370
+b(47)2214 64720 y Fv(cvdia)-25 b(g)369 b Fx(linear)h(solv)-31
+b(er,)370 b(50)2214 66051 y Fv(cv)-25 b(ode)370 b Fx(solv)-31
+b(er,)370 b(42)2214 67383 y Fv(cvspgmr)e Fx(linear)i(solv)-31
+b(er,)370 b(51)0 68715 y Fu(MODIFIED)p 4718 68715 349
+45 v 420 w(GS)p Fx(,)f Fy(39)0 70046 y Fx(MPI,)g(2)0
+72540 y Fu(N)p 651 72540 V 419 w(VCloneEmptyVectorArray)p
+Fx(,)j Fy(84)0 73872 y Fu(N)p 651 73872 V 419 w(VCloneVectorArray)p
+Fx(,)g Fy(84)0 75204 y Fu(N)p 651 75204 V 419 w(VDestroyVectorArray)p
+Fx(,)g Fy(84)0 76535 y Fu(N)p 651 76535 V 419 w(VDestroyVectorArray)p
+12109 76535 V 421 w(Parallel)p Fx(,)e Fy(91)0 77867 y
+Fu(N)p 651 77867 V 419 w(VDestroyVectorArray)p 12109
+77867 V 421 w(Serial)p Fx(,)g Fy(88)p Black Black 24553
+6974 a Fu(N)p 25204 6974 V 419 w(Vector)p Fx(,)g(22,)h(83,)f
+Fy(83)24553 8313 y Fu(N)p 25204 8313 V 419 w(VMake)p
+28528 8313 V 419 w(Parallel)p Fx(,)h Fy(90)24553 9653
+y Fu(N)p 25204 9653 V 419 w(VMake)p 28528 9653 V 419
+w(Serial)p Fx(,)g Fy(88)24553 10992 y Fu(N)p 25204 10992
+V 419 w(VNew)p 27947 10992 V 419 w(Parallel)p Fx(,)g
+Fy(90)24553 12332 y Fu(N)p 25204 12332 V 419 w(VNew)p
+27947 12332 V 419 w(Serial)p Fx(,)f Fy(88)24553 13671
+y Fu(N)p 25204 13671 V 419 w(VNewEmpty)p 30852 13671
+V 420 w(Parallel)p Fx(,)g Fy(90)24553 15010 y Fu(N)p
+25204 15010 V 419 w(VNewEmpty)p 30852 15010 V 420 w(Serial)p
+Fx(,)g Fy(88)24553 16350 y Fu(N)p 25204 16350 V 419 w(VNewVectorArray)p
+34338 16350 V 421 w(Parallel)p Fx(,)g Fy(90)24553 17689
+y Fu(N)p 25204 17689 V 419 w(VNewVectorArray)p 34338
+17689 V 421 w(Serial)p Fx(,)g Fy(88)24553 19029 y Fu(N)p
+25204 19029 V 419 w(VNewVectorArrayEmpty)p 37243 19029
+V 421 w(Parallel)p Fx(,)h Fy(91)24553 20368 y Fu(N)p
+25204 20368 V 419 w(VNewVectorArrayEmpty)p 37243 20368
+V 421 w(Serial)p Fx(,)g Fy(88)24553 21707 y Fu(N)p 25204
+21707 V 419 w(VPrint)p 29109 21707 V 419 w(Parallel)p
+Fx(,)g Fy(91)24553 23047 y Fu(N)p 25204 23047 V 419 w(VPrint)p
+29109 23047 V 419 w(Serial)p Fx(,)g Fy(88)24553 24386
+y Fx(nonlinear)g(system)26767 25726 y(de\257nition,)h(11)26767
+27065 y(Newton)f(con)-31 b(v)g(ergence)370 b(test,)g(12{13)26767
+28405 y(Newton)h(iteration,)h(12)24553 29744 y(norm)26767
+31083 y(w)-31 b(eigh)g(ted)372 b(ro)31 b(ot-mean-square,)371
+b(12)24553 32423 y Fu(NV)p 25785 32423 V 419 w(COMM)p
+28528 32423 V 419 w(P)p Fx(,)f Fy(90)24553 33762 y Fu(NV)p
+25785 33762 V 419 w(CONTENT)p 30271 33762 V 420 w(P)p
+Fx(,)f Fy(89)24553 35102 y Fu(NV)p 25785 35102 V 419
+w(CONTENT)p 30271 35102 V 420 w(S)p Fx(,)g Fy(87)24553
+36441 y Fu(NV)p 25785 36441 V 419 w(DATA)p 28528 36441
+V 419 w(P)p Fx(,)h Fy(89)24553 37780 y Fu(NV)p 25785
+37780 V 419 w(DATA)p 28528 37780 V 419 w(S)p Fx(,)g Fy(88)24553
+39120 y Fu(NV)p 25785 39120 V 419 w(GLOBLENGTH)p 32014
+39120 V 420 w(P)p Fx(,)g Fy(89)24553 40459 y Fu(NV)p
+25785 40459 V 419 w(Ith)p 27947 40459 V 419 w(P)p Fx(,)g
+Fy(90)24553 41799 y Fu(NV)p 25785 41799 V 419 w(Ith)p
+27947 41799 V 419 w(S)p Fx(,)g Fy(88)24553 43138 y Fu(NV)p
+25785 43138 V 419 w(LENGTH)p 29690 43138 V 420 w(S)p
+Fx(,)f Fy(88)24553 44478 y Fu(NV)p 25785 44478 V 419
+w(LOCLENGTH)p 31433 44478 V 420 w(P)p Fx(,)h Fy(89)24553
+45817 y Fu(NV)p 25785 45817 V 419 w(OWN)p 27947 45817
+V 419 w(DATA)p 30690 45817 V 419 w(P)p Fx(,)g Fy(89)24553
+47156 y Fu(NV)p 25785 47156 V 419 w(OWN)p 27947 47156
+V 419 w(DATA)p 30690 47156 V 419 w(S)p Fx(,)g Fy(88)24553
+48496 y Fu(NVECTOR)h Fx(mo)31 b(dule,)370 b(83)24553
+49835 y Fu(nvector.h)p Fx(,)h(22)24553 51175 y Fu(nvector)p
+28690 51175 V 420 w(parallel.h)p Fx(,)g(22)24553 52514
+y Fu(nvector)p 28690 52514 V 420 w(serial.h)p Fx(,)g(22)24553
+55145 y(optional)h(input)26767 56484 y(band)e(linear)g(solv)-31
+b(er,)370 b(37)26767 57824 y(dense)f(linear)h(solv)-31
+b(er,)370 b(37)26767 59163 y(iterativ)-31 b(e)372 b(linear)e(solv)-31
+b(er,)370 b(38{40)26767 60502 y(solv)-31 b(er,)371 b(30{36)24553
+61842 y(optional)h(output)26767 63181 y(band)e(linear)g(solv)-31
+b(er,)370 b(48{49)26767 64521 y(band-blo)31 b(c)-31 b(k-diagonal)374
+b(preconditioner,)d(68{69)26767 65860 y(banded)f(preconditioner,)h(63)
+26767 67200 y(dense)e(linear)h(solv)-31 b(er,)370 b(47{48)26767
+68539 y(diagonal)i(linear)e(solv)-31 b(er,)370 b(49{50)26767
+69878 y(in)-31 b(terp)31 b(olated)372 b(solution,)f(40)26767
+71218 y(iterativ)-31 b(e)372 b(linear)e(solv)-31 b(er,)370
+b(50{53)26767 72557 y(solv)-31 b(er,)371 b(40{47)24553
+73897 y(output)g(mo)31 b(de,)370 b(14)24553 76527 y(p)31
+b(ortabilit)-31 b(y)-92 b(,)373 b(22)26767 77867 y(F)-92
+b(ortran,)370 b(70)p Black Black eop
+%%Page: 115 123
+115 122 bop Black 4000 2701 a Fy(INDEX)41838 b(115)p
+4000 3144 48001 45 v Black 4000 6974 a Fu(PREC)p 6394
+6974 349 45 v 419 w(BOTH)p Fx(,)370 b(28,)h(39)4000 8302
+y Fu(PREC)p 6394 8302 V 419 w(LEFT)p Fx(,)f(28,)h(39,)f(62,)g(67)4000
+9631 y Fu(PREC)p 6394 9631 V 419 w(NONE)p Fx(,)g(28,)h(39)4000
+10959 y Fu(PREC)p 6394 10959 V 419 w(RIGHT)p Fx(,)f(28,)h(39,)f(62,)h
+(67)4000 12287 y(preconditioning)6214 13616 y(advice)f(on,)g(19,)g
+(28{29)6214 14944 y(band-blo)31 b(c)-31 b(k)370 b(diagonal,)j(64)6214
+16272 y(banded,)d(61)6214 17601 y(setup)f(and)g(solv)-31
+b(e)370 b(phases,)g(19)6214 18929 y(user-supplied,)f(38,)h(57,)h(58)
+4000 20257 y Fu(pretype)p Fx(,)g Fy(28)p Fx(,)f(39,)g(62,)h(67)4000
+21586 y Fv(pv)-25 b(ode)p Fx(,)370 b(1)4000 24021 y Fu(RCONST)p
+Fx(,)g(22)4000 25349 y Fu(realtype)p Fx(,)h Fy(22)4000
+26678 y Fx(reinitialization,)j(53)4000 28006 y(righ)-31
+b(t-hand)371 b(side)e(function,)i(54)4000 29334 y(Ro)31
+b(ot\257nding,)371 b(15,)g(25,)f(59,)h(77)4000 30663
+y Fu(ROPT)p Fx(,)f(70,)h(71)4000 33098 y Fu(SMALL)p 6975
+33098 V 419 w(REAL)p Fx(,)f(22)4000 34426 y Fv(spgmr)e
+Fx(generic)h(linear)h(solv)-31 b(er)6214 35755 y(description)370
+b(of,)g(102)6214 37083 y(functions,)h(102)6214 38412
+y(supp)31 b(ort)369 b(functions,)h(102{103)4000 39740
+y(Stabilit)-31 b(y)372 b(limit)g(detection,)f(14)4000
+41068 y(step)e(size)g(b)31 b(ounds,)369 b(33{34)4000
+42397 y Fu(SUNDIALS)p 8718 42397 V 420 w(CASE)p 11462
+42397 V 419 w(LOWER)p Fx(,)h(70)4000 43725 y Fu(SUNDIALS)p
+8718 43725 V 420 w(CASE)p 11462 43725 V 419 w(UPPER)p
+Fx(,)g(70)4000 45053 y Fu(SUNDIALS)p 8718 45053 V 420
+w(UNDERSCORE)p 14948 45053 V 420 w(NONE)p Fx(,)g(70)4000
+46382 y Fu(SUNDIALS)p 8718 46382 V 420 w(UNDERSCORE)p
+14948 46382 V 420 w(ONE)p Fx(,)f(70)4000 47710 y Fu(SUNDIALS)p
+8718 47710 V 420 w(UNDERSCORE)p 14948 47710 V 420 w(TWO)p
+Fx(,)g(70)4000 49038 y Fu(sundialstypes.h)p Fx(,)j(22,)e
+Fy(22)4000 51474 y Fx(tolerances,)h(12,)f(26,)g(36,)h(54)4000
+53909 y Fu(UNIT)p 6394 53909 V 419 w(ROUNDOFF)p Fx(,)g(22)4000
+55237 y(User)d(main)j(program)6214 56566 y Fv(cvbandpre)f
+Fx(usage,)g(61)6214 57894 y Fv(cvbbdpre)g Fx(usage,)g(65)6214
+59222 y Fv(cv)-25 b(ode)370 b Fx(usage,)g(23)6214 60551
+y Fv(f)-25 b(cvbbd)370 b Fx(usage,)g(80)6214 61879 y
+Fv(f)-25 b(cvbp)370 b Fx(usage,)g(78)6214 63207 y Fv(f)-25
+b(cv)g(ode)370 b Fx(usage,)g(70)4000 65643 y Fv(v)-25
+b(ode)p Fx(,)370 b(1)4000 66971 y Fv(v)-25 b(odpk)p Fx(,)370
+b(1)p Black Black Black Black eop
+%%Page: 116 124
+116 123 bop Black Black Black Black eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/Makefile b/Win32/WinCVODE/sundials/cvode/examples_ser/Makefile
new file mode 100644
index 0000000..c073fc0
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/Makefile
@@ -0,0 +1,76 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:22:08 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/cvode/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for CVODE serial examples
+#
+# cvode/examples_ser/Makefile.  Generated from Makefile.in by configure.
+# -----------------------------------------------------------------
+
+SHELL = /bin/bash
+
+srcdir       = .
+builddir     = .
+top_builddir = ../../
+top_builddir = ../../
+prefix       = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials
+exec_prefix  = ${prefix}
+includedir   = ${prefix}/include
+libdir       = ${exec_prefix}/lib
+
+
+
+CPP      = /usr/bin/cc -E
+CPPFLAGS = 
+CC       = /usr/bin/cc
+CFLAGS   = -g -O2
+LDFLAGS  = 
+LIBS     = -lm 
+
+COMPILER_PREFIX = 
+LINKER_PREFIX   = 
+
+SUNDIALS_INC_DIR = $(includedir)
+SUNDIALS_LIB_DIR = $(libdir)
+SUNDIALS_LIBS    = -lsundials_cvode -lsundials_nvecserial -lsundials_shared
+
+EXEC_FILES = cvdx cvdxe cvbx cvkx cvkxb cvdemd cvdemk
+
+all: $(EXEC_FILES)
+
+cvdx: $(srcdir)/cvdx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdx $(builddir)/cvdx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvdxe: $(srcdir)/cvdxe.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdxe.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdxe $(builddir)/cvdxe.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvbx: $(srcdir)/cvbx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvbx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvbx $(builddir)/cvbx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvkx: $(srcdir)/cvkx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvkx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvkx $(builddir)/cvkx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvkxb: $(srcdir)/cvkxb.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvkxb.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvkxb $(builddir)/cvkxb.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvdemd: $(srcdir)/cvdemd.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdemd.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdemd $(builddir)/cvdemd.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvdemk: $(srcdir)/cvdemk.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdemk.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdemk $(builddir)/cvdemk.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+
+clean:
+	rm -rf .libs
+	rm -f *.lo
+	rm -f *.o
+
+uninstall: clean
+	rm -f $(EXEC_FILES)
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/Makefile.in b/Win32/WinCVODE/sundials/cvode/examples_ser/Makefile.in
new file mode 100644
index 0000000..3a5d1ee
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/Makefile.in
@@ -0,0 +1,76 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:22:08 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/cvode/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for CVODE serial examples
+#
+# @configure_input@
+# -----------------------------------------------------------------
+
+SHELL = @SHELL@
+
+srcdir       = @srcdir@
+builddir     = @builddir@
+top_builddir = @top_builddir@
+top_builddir = @top_builddir@
+prefix       = @prefix@
+exec_prefix  = @exec_prefix@
+includedir   = @includedir@
+libdir       = @libdir@
+
+ at LIBTOOL_CMD@
+
+CPP      = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CC       = @CC@
+CFLAGS   = @CFLAGS@
+LDFLAGS  = @LDFLAGS@
+LIBS     = @LIBS@
+
+COMPILER_PREFIX = @COMPILER_PREFIX@
+LINKER_PREFIX   = @LINKER_PREFIX@
+
+SUNDIALS_INC_DIR = $(includedir)
+SUNDIALS_LIB_DIR = $(libdir)
+SUNDIALS_LIBS    = -lsundials_cvode -lsundials_nvecserial -lsundials_shared
+
+EXEC_FILES = cvdx cvdxe cvbx cvkx cvkxb cvdemd cvdemk
+
+all: $(EXEC_FILES)
+
+cvdx: $(srcdir)/cvdx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdx $(builddir)/cvdx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvdxe: $(srcdir)/cvdxe.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdxe.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdxe $(builddir)/cvdxe.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvbx: $(srcdir)/cvbx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvbx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvbx $(builddir)/cvbx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvkx: $(srcdir)/cvkx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvkx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvkx $(builddir)/cvkx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvkxb: $(srcdir)/cvkxb.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvkxb.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvkxb $(builddir)/cvkxb.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvdemd: $(srcdir)/cvdemd.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdemd.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdemd $(builddir)/cvdemd.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvdemk: $(srcdir)/cvdemk.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdemk.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdemk $(builddir)/cvdemk.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+
+clean:
+	rm -rf .libs
+	rm -f *.lo
+	rm -f *.o
+
+uninstall: clean
+	rm -f $(EXEC_FILES)
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/README b/Win32/WinCVODE/sundials/cvode/examples_ser/README
new file mode 100644
index 0000000..2e38092
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/README
@@ -0,0 +1,19 @@
+List of serial CVODE examples
+
+  cvdx   : dense example
+  cvbx   : banded example
+  cvkx   : Krylov example
+  cvkxb  : Krylov example with banded preconditioner
+  cvdemd : demonstration program for direct methods
+  cvdemk : demonstration program for Krylov methods
+
+Sample results:
+
+  SUNDIALS was built with the following options:
+
+  ./configure CC=gcc F77=g77
+
+  System Architecture: IA-32
+  Processor Type: Intel Pentium 4 Xeon DP (i686)
+  Operating System: Red Hat Enterprise Linux WS 3
+  C/Fortran Compilers: gcc/g77 v3.2.3-39 (Red Hat)
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/cvbx.c b/Win32/WinCVODE/sundials/cvode/examples_ser/cvbx.c
new file mode 100644
index 0000000..6a035ab
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/cvbx.c
@@ -0,0 +1,437 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:08 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Example problem:
+ *
+ * The following is a simple example problem with a banded Jacobian,
+ * with the program for its solution by CVODE.
+ * The problem is the semi-discrete form of the advection-diffusion
+ * equation in 2-D:
+ *   du/dt = d^2 u / dx^2 + .5 du/dx + d^2 u / dy^2
+ * on the rectangle 0 <= x <= 2, 0 <= y <= 1, and the time
+ * interval 0 <= t <= 1. Homogeneous Dirichlet boundary conditions
+ * are posed, and the initial condition is
+ *   u(x,y,t=0) = x(2-x)y(1-y)exp(5xy).
+ * The PDE is discretized on a uniform MX+2 by MY+2 grid with
+ * central differencing, and with boundary values eliminated,
+ * leaving an ODE system of size NEQ = MX*MY.
+ * This program solves the problem with the BDF method, Newton
+ * iteration with the CVBAND band linear solver, and a user-supplied
+ * Jacobian routine.
+ * It uses scalar relative and absolute tolerances.
+ * Output is printed at t = .1, .2, ..., 1.
+ * Run statistics (optional outputs) are printed at the end.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+/* Header files with a description of contents used in cvbx.c */
+
+#include "sundialstypes.h"   /* definition of type realtype                   */
+#include "cvode.h"           /* prototypes for CVode* functions and constants */
+                             /* CV_BDF, CV_NEWTON, CV_SS, CV_NORMAL, and      */
+                             /* CV_SUCCESS                                    */
+#include "cvband.h"          /* prototype for CVBand                          */
+#include "nvector_serial.h"  /* definitions of type N_Vector, macro           */
+                             /* NV_DATA_S, and prototypes for N_VNew_Serial   */
+                             /* and N_VDestroy_Serial                         */
+#include "band.h"            /* definitions of type BandMat and macros        */
+
+/* Problem Constants */
+
+#define XMAX  RCONST(2.0)    /* domain boundaries         */
+#define YMAX  RCONST(1.0)
+#define MX    10             /* mesh dimensions           */
+#define MY    5
+#define NEQ   MX*MY          /* number of equations       */
+#define ATOL  RCONST(1.0e-5) /* scalar absolute tolerance */
+#define T0    RCONST(0.0)    /* initial time              */
+#define T1    RCONST(0.1)    /* first output time         */
+#define DTOUT RCONST(0.1)    /* output time increment     */
+#define NOUT  10             /* number of output times    */
+
+#define ZERO RCONST(0.0)
+#define HALF RCONST(0.5)
+#define ONE  RCONST(1.0)
+#define TWO  RCONST(2.0)
+#define FIVE RCONST(5.0)
+
+/* User-defined vector access macro IJth */
+
+/* IJth is defined in order to isolate the translation from the
+   mathematical 2-dimensional structure of the dependent variable vector
+   to the underlying 1-dimensional storage. 
+   IJth(vdata,i,j) references the element in the vdata array for
+   u at mesh point (i,j), where 1 <= i <= MX, 1 <= j <= MY.
+   The vdata array is obtained via the macro call vdata = NV_DATA_S(v),
+   where v is an N_Vector. 
+   The variables are ordered by the y index j, then by the x index i. */
+
+#define IJth(vdata,i,j) (vdata[(j-1) + (i-1)*MY])
+
+/* Type : UserData (contains grid constants) */
+
+typedef struct {
+  realtype dx, dy, hdcoef, hacoef, vdcoef;
+} *UserData;
+
+/* Private Helper Functions */
+
+static void SetIC(N_Vector u, UserData data);
+static void PrintHeader(realtype reltol, realtype abstol, realtype umax);
+static void PrintOutput(realtype t, realtype umax, long int nst);
+static void PrintFinalStats(void *cvode_mem);
+
+/* Private function to check function return values */
+
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/* Functions Called by the Solver */
+
+static void f(realtype t, N_Vector u, N_Vector udot, void *f_data);
+static void Jac(long int N, long int mu, long int ml, BandMat J,
+                realtype t, N_Vector u, N_Vector fu, void *jac_data,
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/*
+ *-------------------------------
+ * Main Program
+ *-------------------------------
+ */
+
+int main(void)
+{
+  realtype dx, dy, reltol, abstol, t, tout, umax;
+  N_Vector u;
+  UserData data;
+  void *cvode_mem;
+  int iout, flag;
+  long int nst;
+
+  u = NULL;
+  data = NULL;
+  cvode_mem = NULL;
+
+  /* Create a serial vector */
+
+  u = N_VNew_Serial(NEQ);  /* Allocate u vector */
+  if(check_flag((void*)u, "N_VNew_Serial", 0)) return(1);
+
+  reltol = ZERO;  /* Set the tolerances */
+  abstol = ATOL;
+
+  data = (UserData) malloc(sizeof *data);  /* Allocate data memory */
+  if(check_flag((void *)data, "malloc", 2)) return(1);
+  dx = data->dx = XMAX/(MX+1);  /* Set grid coefficients in data */
+  dy = data->dy = YMAX/(MY+1);
+  data->hdcoef = ONE/(dx*dx);
+  data->hacoef = HALF/(TWO*dx);
+  data->vdcoef = ONE/(dy*dy);
+
+  SetIC(u, data);  /* Initialize u vector */
+
+  /* 
+     Call CvodeCreate to create integrator memory 
+
+     CV_BDF     specifies the Backward Differentiation Formula
+     CV_NEWTON  specifies a Newton iteration
+
+     A pointer to the integrator problem memory is returned and
+     stored in cvode_mem.  
+  */
+
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  /* 
+     Call CVodeMalloc to initialize the integrator memory: 
+
+     cvode_mem is the pointer to the integrator memory returned by CVodeCreate
+     f       is the user's right hand side function in y'=f(t,y)
+     T0      is the initial time
+     u       is the initial dependent variable vector
+     CV_SS   specifies scalar relative and absolute tolerances
+     reltol  is the scalar relative tolerance
+     &abstol is a pointer to the scalar absolute tolerance
+  */
+
+  flag = CVodeMalloc(cvode_mem, f, T0, u, CV_SS, reltol, &abstol);
+  if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  /* Set the pointer to user-defined data */
+
+  flag = CVodeSetFdata(cvode_mem, data);
+  if(check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+
+  /* Call CVBand to specify the CVBAND band linear solver */
+
+  flag = CVBand(cvode_mem, NEQ, MY, MY);
+  if(check_flag(&flag, "CVBand", 1)) return(1);
+
+  /* Set the user-supplied Jacobian routine Jac and
+     the pointer to the user-defined block data. */
+
+  flag = CVBandSetJacFn(cvode_mem, Jac, data);
+  if(check_flag(&flag, "CVBandSetJacFn", 1)) return(1);
+
+  /* In loop over output points: call CVode, print results, test for errors */
+
+  umax = N_VMaxNorm(u);
+  PrintHeader(reltol, abstol, umax);
+  for(iout=1, tout=T1; iout <= NOUT; iout++, tout += DTOUT) {
+    flag = CVode(cvode_mem, tout, u, &t, CV_NORMAL);
+    if(check_flag(&flag, "CVode", 1)) break;
+    umax = N_VMaxNorm(u);
+    flag = CVodeGetNumSteps(cvode_mem, &nst);
+    check_flag(&flag, "CVodeGetNumSteps", 1);
+    PrintOutput(t, umax, nst);
+  }
+
+  PrintFinalStats(cvode_mem);  /* Print some final statistics   */
+
+  N_VDestroy_Serial(u);  /* Free the u vector */
+  CVodeFree(cvode_mem);  /* Free the integrator memory */
+  free(data);            /* Free the user data */
+
+  return(0);
+}
+
+/*
+ *-------------------------------
+ * Functions called by the solver
+ *-------------------------------
+ */
+
+/* f routine. Compute f(t,u). */
+
+static void f(realtype t, N_Vector u,N_Vector udot, void *f_data)
+{
+  realtype uij, udn, uup, ult, urt, hordc, horac, verdc, hdiff, hadv, vdiff;
+  realtype *udata, *dudata;
+  int i, j;
+  UserData data;
+
+  udata = NV_DATA_S(u);
+  dudata = NV_DATA_S(udot);
+
+  /* Extract needed constants from data */
+
+  data = (UserData) f_data;
+  hordc = data->hdcoef;
+  horac = data->hacoef;
+  verdc = data->vdcoef;
+
+  /* Loop over all grid points. */
+
+  for (j=1; j <= MY; j++) {
+
+    for (i=1; i <= MX; i++) {
+
+      /* Extract u at x_i, y_j and four neighboring points */
+
+      uij = IJth(udata, i, j);
+      udn = (j == 1)  ? ZERO : IJth(udata, i, j-1);
+      uup = (j == MY) ? ZERO : IJth(udata, i, j+1);
+      ult = (i == 1)  ? ZERO : IJth(udata, i-1, j);
+      urt = (i == MX) ? ZERO : IJth(udata, i+1, j);
+
+      /* Set diffusion and advection terms and load into udot */
+
+      hdiff = hordc*(ult - TWO*uij + urt);
+      hadv = horac*(urt - ult);
+      vdiff = verdc*(uup - TWO*uij + udn);
+      IJth(dudata, i, j) = hdiff + hadv + vdiff;
+    }
+  }
+}
+
+/* Jacobian routine. Compute J(t,u). */
+
+static void Jac(long int N, long int mu, long int ml, BandMat J,
+                realtype t, N_Vector u, N_Vector fu, void *jac_data,
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  long int i, j, k;
+  realtype *kthCol, hordc, horac, verdc;
+  UserData data;
+  
+  /*
+    The components of f = udot that depend on u(i,j) are
+    f(i,j), f(i-1,j), f(i+1,j), f(i,j-1), f(i,j+1), with
+      df(i,j)/du(i,j) = -2 (1/dx^2 + 1/dy^2)
+      df(i-1,j)/du(i,j) = 1/dx^2 + .25/dx  (if i > 1)
+      df(i+1,j)/du(i,j) = 1/dx^2 - .25/dx  (if i < MX)
+      df(i,j-1)/du(i,j) = 1/dy^2           (if j > 1)
+      df(i,j+1)/du(i,j) = 1/dy^2           (if j < MY)
+  */
+
+  data = (UserData) jac_data;
+  hordc = data->hdcoef;
+  horac = data->hacoef;
+  verdc = data->vdcoef;
+  
+  for (j=1; j <= MY; j++) {
+    for (i=1; i <= MX; i++) {
+      k = j-1 + (i-1)*MY;
+      kthCol = BAND_COL(J,k);
+
+      /* set the kth column of J */
+
+      BAND_COL_ELEM(kthCol,k,k) = -TWO*(verdc+hordc);
+      if (i != 1)  BAND_COL_ELEM(kthCol,k-MY,k) = hordc + horac;
+      if (i != MX) BAND_COL_ELEM(kthCol,k+MY,k) = hordc - horac;
+      if (j != 1)  BAND_COL_ELEM(kthCol,k-1,k)  = verdc;
+      if (j != MY) BAND_COL_ELEM(kthCol,k+1,k)  = verdc;
+    }
+  }
+}
+
+/*
+ *-------------------------------
+ * Private helper functions
+ *-------------------------------
+ */
+
+/* Set initial conditions in u vector */
+
+static void SetIC(N_Vector u, UserData data)
+{
+  int i, j;
+  realtype x, y, dx, dy;
+  realtype *udata;
+
+  /* Extract needed constants from data */
+
+  dx = data->dx;
+  dy = data->dy;
+
+  /* Set pointer to data array in vector u. */
+
+  udata = NV_DATA_S(u);
+
+  /* Load initial profile into u vector */
+  
+  for (j=1; j <= MY; j++) {
+    y = j*dy;
+    for (i=1; i <= MX; i++) {
+      x = i*dx;
+      IJth(udata,i,j) = x*(XMAX - x)*y*(YMAX - y)*exp(FIVE*x*y);
+    }
+  }  
+}
+
+/* Print first lines of output (problem description) */
+
+static void PrintHeader(realtype reltol, realtype abstol, realtype umax)
+{
+  printf("\n2-D Advection-Diffusion Equation\n");
+  printf("Mesh dimensions = %d X %d\n", MX, MY);
+  printf("Total system size = %d\n", NEQ);
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("Tolerance parameters: reltol = %Lg   abstol = %Lg\n\n", reltol, abstol);
+  printf("At t = %Lg      max.norm(u) =%14.6Le \n", T0, umax);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("Tolerance parameters: reltol = %lg   abstol = %lg\n\n", reltol, abstol);
+  printf("At t = %lg      max.norm(u) =%14.6le \n", T0, umax);
+#else
+  printf("Tolerance parameters: reltol = %g   abstol = %g\n\n", reltol, abstol);
+  printf("At t = %g      max.norm(u) =%14.6e \n", T0, umax);
+#endif
+
+  return;
+}
+
+/* Print current value */
+
+static void PrintOutput(realtype t, realtype umax, long int nst)
+{
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("At t = %4.2Lf   max.norm(u) =%14.6Le   nst = %4ld\n", t, umax, nst);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("At t = %4.2f   max.norm(u) =%14.6le   nst = %4ld\n", t, umax, nst);
+#else
+  printf("At t = %4.2f   max.norm(u) =%14.6e   nst = %4ld\n", t, umax, nst);
+#endif
+
+  return;
+}
+
+/* Get and print some final statistics */
+
+static void PrintFinalStats(void *cvode_mem)
+{
+  int flag;
+  long int nst, nfe, nsetups, netf, nni, ncfn, njeB, nfeB;
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  flag = CVBandGetNumJacEvals(cvode_mem, &njeB);
+  check_flag(&flag, "CVBandGetNumJacEvals", 1);
+  flag = CVBandGetNumRhsEvals(cvode_mem, &nfeB);
+  check_flag(&flag, "CVBandGetNumRhsEvals", 1);
+
+  printf("\nFinal Statistics:\n");
+  printf("nst = %-6ld nfe  = %-6ld nsetups = %-6ld nfeB = %-6ld njeB = %ld\n",
+	 nst, nfe, nsetups, nfeB, njeB);
+  printf("nni = %-6ld ncfn = %-6ld netf = %ld\n \n",
+	 nni, ncfn, netf);
+
+  return;
+}
+
+/* Check function return value...
+     opt == 0 means SUNDIALS function allocates memory so check if
+              returned NULL pointer
+     opt == 1 means SUNDIALS function returns a flag so check if
+              flag >= 0
+     opt == 2 means function allocates memory so check if returned
+              NULL pointer */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+              funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/cvbx.out b/Win32/WinCVODE/sundials/cvode/examples_ser/cvbx.out
new file mode 100644
index 0000000..deaddd4
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/cvbx.out
@@ -0,0 +1,22 @@
+
+2-D Advection-Diffusion Equation
+Mesh dimensions = 10 X 5
+Total system size = 50
+Tolerance parameters: reltol = 0   abstol = 1e-05
+
+At t = 0      max.norm(u) =  8.954716e+01 
+At t = 0.10   max.norm(u) =  4.132889e+00   nst =   85
+At t = 0.20   max.norm(u) =  1.039294e+00   nst =  103
+At t = 0.30   max.norm(u) =  2.979829e-01   nst =  113
+At t = 0.40   max.norm(u) =  8.765774e-02   nst =  120
+At t = 0.50   max.norm(u) =  2.625637e-02   nst =  126
+At t = 0.60   max.norm(u) =  7.830425e-03   nst =  130
+At t = 0.70   max.norm(u) =  2.329387e-03   nst =  134
+At t = 0.80   max.norm(u) =  6.953434e-04   nst =  137
+At t = 0.90   max.norm(u) =  2.115983e-04   nst =  140
+At t = 1.00   max.norm(u) =  6.556853e-05   nst =  142
+
+Final Statistics:
+nst = 142    nfe  = 173    nsetups = 23     nfeB = 0      njeB = 3
+nni = 170    ncfn = 0      netf = 3
+ 
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/cvdemd.c b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdemd.c
new file mode 100644
index 0000000..274f965
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdemd.c
@@ -0,0 +1,770 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:08 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Demonstration program for CVODE - direct linear solvers.
+ * Two separate problems are solved using both the CV_ADAMS and CV_BDF
+ * linear multistep methods in combination with CV_FUNCTIONAL and
+ * CV_NEWTON iterations:
+ *
+ * Problem 1: Van der Pol oscillator
+ *   xdotdot - 3*(1 - x^2)*xdot + x = 0, x(0) = 2, xdot(0) = 0.
+ * This second-order ODE is converted to a first-order system by
+ * defining y0 = x and y1 = xdot.
+ * The NEWTON iteration cases use the following types of Jacobian
+ * approximation: (1) dense, user-supplied, (2) dense, difference
+ * quotient approximation, (3) diagonal approximation.
+ *
+ * Problem 2: ydot = A * y, where A is a banded lower triangular
+ * matrix derived from 2-D advection PDE.
+ * The NEWTON iteration cases use the following types of Jacobian
+ * approximation: (1) band, user-supplied, (2) band, difference
+ * quotient approximation, (3) diagonal approximation.
+ *
+ * For each problem, in the series of eight runs, CVodeMalloc is
+ * called only once, for the first run, whereas CVodeReInit is
+ * called for each of the remaining seven runs.
+ *
+ * Notes: This program demonstrates the usage of the sequential
+ * macros NV_Ith_S, NV_DATA_S, DENSE_ELEM, BAND_COL, and
+ * BAND_COL_ELEM. The NV_Ith_S macro is used to reference the
+ * components of an N_Vector. It works for any size N=NEQ, but
+ * due to efficiency concerns it should only by used when the
+ * problem size is small. The Problem 1 right hand side and
+ * Jacobian functions f1 and Jac1 both use NV_Ith_S. The NV_DATA_S
+ * macro gives the user access to the memory used for the component
+ * storage of an N_Vector. In the sequential case, the user may
+ * assume that this is one contiguous array of reals. The NV_DATA_S
+ * macro gives a more efficient means (than the NV_Ith_S macro) to
+ * access the components of an N_Vector and should be used when the
+ * problem size is large. The Problem 2 right hand side function f2
+ * uses the NV_DATA_S macro. The DENSE_ELEM macro used in Jac1
+ * gives access to an element of a dense matrix of type DenseMat.
+ * It should be used only when the problem size is small (the size
+ * of a DenseMat is NEQ x NEQ) due to efficiency concerns. For
+ * larger problem sizes, the macro DENSE_COL can be used in order
+ * to work directly with a column of a DenseMat. The BAND_COL and
+ * BAND_COL_ELEM allow efficient columnwise access to the elements
+ * of a band matrix of type BandMat. These macros are used in the
+ * Jac2 function.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include "sundialstypes.h"   /* definition of realtype              */
+#include "cvode.h"           /* main integrator header file         */
+#include "cvdense.h"         /* use CVDENSE linear solver           */
+#include "cvband.h"          /* use CVBAND linear solver            */
+#include "cvdiag.h"          /* use CVDIAG linear solver            */
+#include "nvector_serial.h"  /* definition of type N_Vector and the */
+                             /* macro NV_Ith_S                      */
+#include "sundialsmath.h"    /* contains the macros ABS and SQR     */
+
+/* Shared Problem Constants */
+
+#define ATOL RCONST(1.0e-6)
+#define RTOL RCONST(0.0)
+
+#define ZERO   RCONST(0.0)
+#define ONE    RCONST(1.0)
+#define TWO    RCONST(2.0)
+#define THIRTY RCONST(30.0)
+
+/* Problem #1 Constants */
+
+#define P1_NEQ        2
+#define P1_ETA        RCONST(3.0)
+#define P1_NOUT       4
+#define P1_T0         RCONST(0.0)
+#define P1_T1         RCONST(1.39283880203)
+#define P1_DTOUT      RCONST(2.214773875)
+#define P1_TOL_FACTOR RCONST(1.0e4)
+
+/* Problem #2 Constants */
+
+#define P2_MESHX      5
+#define P2_MESHY      5
+#define P2_NEQ        P2_MESHX*P2_MESHY
+#define P2_ALPH1      RCONST(1.0)
+#define P2_ALPH2      RCONST(1.0)
+#define P2_NOUT       5
+#define P2_ML         5
+#define P2_MU         0
+#define P2_T0         RCONST(0.0)
+#define P2_T1         RCONST(0.01)
+#define P2_TOUT_MULT  RCONST(10.0)
+#define P2_TOL_FACTOR RCONST(1.0e3)
+
+/* Linear Solver Options */
+
+enum {FUNC, DENSE_USER, DENSE_DQ, DIAG, BAND_USER, BAND_DQ};
+
+/* Private Helper Functions */
+
+static int  Problem1(void);
+static void PrintIntro1(void);
+static void PrintHeader1(void);
+static void PrintOutput1(realtype t, realtype y0, realtype y1, int qu, realtype hu);
+static int  Problem2(void);
+static void PrintIntro2(void);
+static void PrintHeader2(void);
+static void PrintOutput2(realtype t, realtype erm, int qu, realtype hu);
+static realtype MaxError(N_Vector y, realtype t);
+static int PrepareNextRun(void *cvode_mem, int lmm, int miter, long int mu,
+                          long int ml);
+static void PrintErrOutput(realtype tol_factor);
+static void PrintFinalStats(void *cvode_mem, int miter, realtype ero);
+static void PrintErrInfo(int nerr);
+
+/* Functions Called by the Solver */
+
+static void f1(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+static void Jac1(long int N, DenseMat J, realtype tn,
+                 N_Vector y, N_Vector fy, void *jac_data,
+                 N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+static void f2(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+static void Jac2(long int N, long int mu, long int ml, BandMat J,
+                 realtype tn, N_Vector y, N_Vector fy, void *jac_data,
+                 N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/* Private function to check function return values */
+
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/* Implementation */
+
+int main(void)
+{
+  int nerr;
+
+  nerr = Problem1();
+  nerr += Problem2();
+  PrintErrInfo(nerr);
+
+  return(0);
+}
+
+static int Problem1(void)
+{
+  realtype reltol=RTOL, abstol=ATOL, t, tout, ero, er;
+  int miter, flag, temp_flag, iout, nerr=0;
+  N_Vector y;
+  void *cvode_mem;
+  booleantype firstrun;
+  int qu;
+  realtype hu;
+
+  y = NULL;
+  cvode_mem = NULL;
+
+  y = N_VNew_Serial(P1_NEQ);
+  if(check_flag((void *)y, "N_VNew_Serial", 0)) return(1);
+  PrintIntro1();
+
+  cvode_mem = CVodeCreate(CV_ADAMS, CV_FUNCTIONAL);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  for (miter=FUNC; miter <= DIAG; miter++) {
+    ero = ZERO;
+    NV_Ith_S(y,0) = TWO;
+    NV_Ith_S(y,1) = ZERO;
+
+    firstrun = (miter==FUNC);
+    if (firstrun) {
+      flag = CVodeMalloc(cvode_mem, f1, P1_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+    } else {
+      flag = CVodeSetIterType(cvode_mem, CV_NEWTON);
+      if(check_flag(&flag, "CVodeSetIterType", 1)) ++nerr;
+      flag = CVodeReInit(cvode_mem, f1, P1_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeReInit", 1)) return(1);
+    }
+      
+    flag = PrepareNextRun(cvode_mem, CV_ADAMS, miter, 0, 0);
+    if(check_flag(&flag, "PrepareNextRun", 1)) return(1);
+
+    PrintHeader1();
+
+    for(iout=1, tout=P1_T1; iout <= P1_NOUT; iout++, tout += P1_DTOUT) {
+      flag = CVode(cvode_mem, tout, y, &t, CV_NORMAL);
+      check_flag(&flag, "CVode", 1);
+      temp_flag = CVodeGetLastOrder(cvode_mem, &qu);
+      if(check_flag(&temp_flag, "CVodeGetLastOrder", 1)) ++nerr;
+      temp_flag = CVodeGetLastStep(cvode_mem, &hu);
+      if(check_flag(&temp_flag, "CVodeGetLastStep", 1)) ++nerr;
+      PrintOutput1(t, NV_Ith_S(y,0), NV_Ith_S(y,1), qu, hu);
+      if (flag != CV_SUCCESS) {
+        nerr++;
+        break;
+      }
+      if (iout%2 == 0) {
+        er = ABS(NV_Ith_S(y,0)) / abstol;
+        if (er > ero) ero = er;
+        if (er > P1_TOL_FACTOR) {
+          nerr++;
+	  PrintErrOutput(P1_TOL_FACTOR);
+        }
+      }
+    }
+    
+    PrintFinalStats(cvode_mem, miter, ero);
+  }
+
+  CVodeFree(cvode_mem);
+
+  cvode_mem = CVodeCreate(CV_BDF, CV_FUNCTIONAL);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  for (miter=FUNC; miter <= DIAG; miter++) {
+    ero = ZERO;
+    NV_Ith_S(y,0) = TWO;
+    NV_Ith_S(y,1) = ZERO;
+      
+    firstrun = (miter==FUNC);
+    if (firstrun) {
+      flag = CVodeMalloc(cvode_mem, f1, P1_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+    } else {
+      flag = CVodeSetIterType(cvode_mem, CV_NEWTON);
+      if(check_flag(&flag, "CVodeSetIterType", 1)) ++nerr;
+      flag = CVodeReInit(cvode_mem, f1, P1_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeReInit", 1)) return(1);
+    }
+      
+    flag = PrepareNextRun(cvode_mem, CV_BDF, miter, 0, 0);     
+    if(check_flag(&flag, "PrepareNextRun", 1)) return(1);
+
+    PrintHeader1();
+      
+    for(iout=1, tout=P1_T1; iout <= P1_NOUT; iout++, tout += P1_DTOUT) {
+      flag = CVode(cvode_mem, tout, y, &t, CV_NORMAL);
+      check_flag(&flag, "CVode", 1);
+      temp_flag = CVodeGetLastOrder(cvode_mem, &qu);
+      if(check_flag(&temp_flag, "CVodeGetLastOrder", 1)) ++nerr;
+      temp_flag = CVodeGetLastStep(cvode_mem, &hu);
+      if(check_flag(&temp_flag, "CVodeGetLastStep", 1)) ++nerr;
+      PrintOutput1(t, NV_Ith_S(y,0), NV_Ith_S(y,1), qu, hu);
+      if (flag != CV_SUCCESS) {
+        nerr++;
+        break;
+      }
+      if (iout%2 == 0) {
+        er = ABS(NV_Ith_S(y,0)) / abstol;
+        if (er > ero) ero = er;
+        if (er > P1_TOL_FACTOR) {
+          nerr++;
+          PrintErrOutput(P1_TOL_FACTOR);
+        }
+      }
+    }
+    
+    PrintFinalStats(cvode_mem, miter, ero);
+  }
+
+  CVodeFree(cvode_mem);
+  N_VDestroy_Serial(y);
+
+  return(nerr);
+}
+
+static void PrintIntro1(void)
+{
+  printf("Demonstration program for CVODE package - direct linear solvers\n");
+  printf("\n\n");
+  printf("Problem 1: Van der Pol oscillator\n");
+  printf(" xdotdot - 3*(1 - x^2)*xdot + x = 0, x(0) = 2, xdot(0) = 0\n");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf(" neq = %d,  itol = %s,  reltol = %.2Lg,  abstol = %.2Lg",
+	 P1_NEQ, "CV_SS", RTOL, ATOL);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf(" neq = %d,  itol = %s,  reltol = %.2lg,  abstol = %.2lg",
+	 P1_NEQ, "CV_SS", RTOL, ATOL);
+#else
+  printf(" neq = %d,  itol = %s,  reltol = %.2g,  abstol = %.2g",
+	 P1_NEQ, "CV_SS", RTOL, ATOL);
+#endif
+}
+
+static void PrintHeader1(void)
+{
+  printf("\n     t           x              xdot         qu     hu \n");
+
+  return;
+}
+
+static void PrintOutput1(realtype t, realtype y0, realtype y1, int qu, realtype hu)
+{
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%10.5Lf    %12.5Le   %12.5Le   %2d    %6.4Le\n", t, y0, y1, qu, hu);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%10.5f    %12.5le   %12.5le   %2d    %6.4le\n", t, y0, y1, qu, hu);
+#else
+  printf("%10.5f    %12.5e   %12.5e   %2d    %6.4e\n", t, y0, y1, qu, hu);
+#endif
+
+  return;
+}
+
+static void f1(realtype t, N_Vector y, N_Vector ydot, void *f_data)
+{
+  realtype y0, y1;
+  
+  y0 = NV_Ith_S(y,0);
+  y1 = NV_Ith_S(y,1);
+
+  NV_Ith_S(ydot,0) = y1;
+  NV_Ith_S(ydot,1) = (ONE - SQR(y0))* P1_ETA * y1 - y0;
+} 
+
+static void Jac1(long int N, DenseMat J, realtype tn,
+                 N_Vector y, N_Vector fy, void *jac_data,
+                 N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  realtype y0, y1;
+
+  y0 = NV_Ith_S(y,0);
+  y1 = NV_Ith_S(y,1);
+
+  DENSE_ELEM(J,0,1) = ONE;
+  DENSE_ELEM(J,1,0) = -TWO * P1_ETA * y0 * y1 - ONE;
+  DENSE_ELEM(J,1,1) = P1_ETA * (ONE - SQR(y0));
+}
+
+static int Problem2(void)
+{
+  realtype reltol=RTOL, abstol=ATOL, t, tout, er, erm, ero;
+  int miter, flag, temp_flag, nerr=0;
+  N_Vector y;
+  void *cvode_mem;
+  booleantype firstrun;
+  int qu, iout;
+  realtype hu;
+
+  y = NULL;
+  cvode_mem = NULL;
+
+  y = N_VNew_Serial(P2_NEQ);
+  if(check_flag((void *)y, "N_VNew", 0)) return(1);
+
+  PrintIntro2();
+
+  cvode_mem = CVodeCreate(CV_ADAMS, CV_FUNCTIONAL);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  for (miter=FUNC; miter <= BAND_DQ; miter++) {
+    if ((miter==DENSE_USER) || (miter==DENSE_DQ)) continue;
+    ero = ZERO;
+    N_VConst(ZERO, y);
+    NV_Ith_S(y,0) = ONE;
+      
+    firstrun = (miter==FUNC);
+    if (firstrun) {
+      flag = CVodeMalloc(cvode_mem, f2, P2_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+    } else {
+      flag = CVodeSetIterType(cvode_mem, CV_NEWTON);
+      if(check_flag(&flag, "CVodeSetIterType", 1)) ++nerr;
+      flag = CVodeReInit(cvode_mem, f2, P2_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeReInit", 1)) return(1);
+    }
+      
+    flag = PrepareNextRun(cvode_mem, CV_ADAMS, miter, P2_MU, P2_ML);
+    if(check_flag(&flag, "PrepareNextRun", 1)) return(1);
+
+    PrintHeader2();
+
+    for(iout=1, tout=P2_T1; iout <= P2_NOUT; iout++, tout*=P2_TOUT_MULT) {
+      flag = CVode(cvode_mem, tout, y, &t, CV_NORMAL);
+      check_flag(&flag, "CVode", 1);
+      erm = MaxError(y, t);
+      temp_flag = CVodeGetLastOrder(cvode_mem, &qu);
+      if(check_flag(&temp_flag, "CVodeGetLastOrder", 1)) ++nerr;
+      temp_flag = CVodeGetLastStep(cvode_mem, &hu);
+      if(check_flag(&temp_flag, "CVodeGetLastStep", 1)) ++nerr;
+      PrintOutput2(t, erm, qu, hu);
+      if (flag != CV_SUCCESS) {
+        nerr++;
+        break;
+      }
+      er = erm / abstol;
+        if (er > ero) ero = er;
+        if (er > P2_TOL_FACTOR) {
+          nerr++;
+          PrintErrOutput(P2_TOL_FACTOR);
+        }
+    }
+    
+    PrintFinalStats(cvode_mem, miter, ero);
+  }
+
+  CVodeFree(cvode_mem);
+
+  cvode_mem = CVodeCreate(CV_BDF, CV_FUNCTIONAL);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  for (miter=FUNC; miter <= BAND_DQ; miter++) {
+    if ((miter==DENSE_USER) || (miter==DENSE_DQ)) continue;
+    ero = ZERO;
+    N_VConst(ZERO, y);
+    NV_Ith_S(y,0) = ONE;
+      
+    firstrun = (miter==FUNC);
+    if (firstrun) {
+      flag = CVodeMalloc(cvode_mem, f2, P2_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+    } else {
+      flag = CVodeSetIterType(cvode_mem, CV_NEWTON);
+      if(check_flag(&flag, "CVodeSetIterType", 1)) ++nerr;
+      flag = CVodeReInit(cvode_mem, f2, P2_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeReInit", 1)) return(1);
+    }
+
+    flag = PrepareNextRun(cvode_mem, CV_BDF, miter, P2_MU, P2_ML);
+    if(check_flag(&flag, "PrepareNextRun", 1)) return(1);
+
+    PrintHeader2();
+      
+    for(iout=1, tout=P2_T1; iout <= P2_NOUT; iout++, tout*=P2_TOUT_MULT) {
+      flag = CVode(cvode_mem, tout, y, &t, CV_NORMAL);
+      check_flag(&flag, "CVode", 1);
+      erm = MaxError(y, t);
+      temp_flag = CVodeGetLastOrder(cvode_mem, &qu);
+      if(check_flag(&temp_flag, "CVodeGetLastOrder", 1)) ++nerr;
+      temp_flag = CVodeGetLastStep(cvode_mem, &hu);
+      if(check_flag(&temp_flag, "CVodeGetLastStep", 1)) ++nerr;
+      PrintOutput2(t, erm, qu, hu);
+      if (flag != CV_SUCCESS) {
+        nerr++;
+        break;
+      }
+      er = erm / abstol;
+        if (er > ero) ero = er;
+        if (er > P2_TOL_FACTOR) {
+          nerr++;
+          PrintErrOutput(P2_TOL_FACTOR);
+        }
+    }
+    
+    PrintFinalStats(cvode_mem, miter, ero);
+  }
+
+  CVodeFree(cvode_mem);
+  N_VDestroy_Serial(y);
+
+  return(nerr);
+}
+
+static void PrintIntro2(void)
+{
+  printf("\n\n-------------------------------------------------------------");
+  printf("\n-------------------------------------------------------------");
+  printf("\n\nProblem 2: ydot = A * y, where A is a banded lower\n");
+  printf("triangular matrix derived from 2-D advection PDE\n\n");
+  printf(" neq = %d, ml = %d, mu = %d\n", P2_NEQ, P2_ML, P2_MU);
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf(" itol = %s, reltol = %.2Lg, abstol = %.2Lg", "CV_SS", RTOL, ATOL);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf(" itol = %s, reltol = %.2lg, abstol = %.2lg", "CV_SS", RTOL, ATOL);
+#else
+  printf(" itol = %s, reltol = %.2g, abstol = %.2g", "CV_SS", RTOL, ATOL);
+#endif
+  printf("\n      t        max.err      qu     hu \n");
+}
+
+static void PrintHeader2(void)
+{
+  printf("\n      t        max.err      qu     hu \n");
+
+  return;
+}
+
+static void PrintOutput2(realtype t, realtype erm, int qu, realtype hu)
+{
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%10.3Lf  %12.4Le   %2d   %12.4Le\n", t, erm, qu, hu);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%10.3f  %12.4le   %2d   %12.4le\n", t, erm, qu, hu);
+#else
+  printf("%10.3f  %12.4e   %2d   %12.4e\n", t, erm, qu, hu);
+#endif
+
+  return;
+}
+
+static void f2(realtype t, N_Vector y, N_Vector ydot, void *f_data)
+{
+  long int i, j, k;
+  realtype d, *ydata, *dydata;
+  
+  ydata = NV_DATA_S(y);
+  dydata = NV_DATA_S(ydot);
+
+  /*
+     Excluding boundaries, 
+
+     ydot    = f    = -2 y    + alpha1 * y      + alpha2 * y
+         i,j    i,j       i,j             i-1,j             i,j-1
+  */
+
+  for (j=0; j < P2_MESHY; j++) {
+    for (i=0; i < P2_MESHX; i++) {
+      k = i + j * P2_MESHX;
+      d = -TWO*ydata[k];
+      if (i != 0) d += P2_ALPH1 * ydata[k-1];
+      if (j != 0) d += P2_ALPH2 * ydata[k-P2_MESHX];
+      dydata[k] = d;
+    }
+  }
+}
+
+static void Jac2(long int N, long int mu, long int ml, BandMat J,
+                 realtype tn, N_Vector y, N_Vector fy, void *jac_data,
+                 N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  long int i, j, k;
+  realtype *kthCol;
+
+  /*
+     The components of f(t,y) which depend on y    are
+                                               i,j
+     f    , f      , and f      : 
+      i,j    i+1,j        i,j+1
+
+     f    = -2 y    + alpha1 * y      + alpha2 * y
+      i,j       i,j             i-1,j             i,j-1
+
+     f      = -2 y      + alpha1 * y    + alpha2 * y
+      i+1,j       i+1,j             i,j             i+1,j-1
+
+     f      = -2 y      + alpha1 * y        + alpha2 * y
+      i,j+1       i,j+1             i-1,j+1             i,j
+  */
+
+  for (j=0; j < P2_MESHY; j++) {
+    for (i=0; i < P2_MESHX; i++) {
+      k = i + j * P2_MESHX;
+      kthCol = BAND_COL(J,k);
+      BAND_COL_ELEM(kthCol,k,k) = -TWO;
+      if (i != P2_MESHX-1) BAND_COL_ELEM(kthCol,k+1,k) = P2_ALPH1;
+      if (j != P2_MESHY-1) BAND_COL_ELEM(kthCol,k+P2_MESHX,k) = P2_ALPH2;
+    }
+  }
+}
+
+static realtype MaxError(N_Vector y, realtype t)
+{
+  long int i, j, k;
+  realtype *ydata, er, ex=ZERO, yt, maxError=ZERO, ifact_inv, jfact_inv=ONE;
+  
+  if (t == ZERO) return(ZERO);
+
+  ydata = NV_DATA_S(y);
+  if (t <= THIRTY) ex = exp(-TWO*t); 
+  
+  for (j = 0; j < P2_MESHY; j++) {
+    ifact_inv = ONE;
+    for (i = 0; i < P2_MESHX; i++) {
+      k = i + j * P2_MESHX;
+      yt = RPowerI(t,i+j) * ex * ifact_inv * jfact_inv;
+      er = ABS(ydata[k] - yt);
+      if (er > maxError) maxError = er;
+      ifact_inv /= (i+1);
+    }
+    jfact_inv /= (j+1);
+  }
+  return(maxError);
+}
+
+static int PrepareNextRun(void *cvode_mem, int lmm, int miter, 
+                          long int mu, long int ml)
+{
+  int flag = CV_SUCCESS;
+  
+  printf("\n\n-------------------------------------------------------------");
+  
+  printf("\n\nLinear Multistep Method : ");
+  if (lmm == CV_ADAMS) {
+    printf("ADAMS\n");
+  } else {
+    printf("BDF\n");
+  }
+  
+  printf("Iteration               : ");
+  if (miter == FUNC) {
+    printf("FUNCTIONAL\n");
+  } else {
+    printf("NEWTON\n");
+    printf("Linear Solver           : ");
+    switch(miter) {
+    case DENSE_USER : 
+      printf("Dense, User-Supplied Jacobian\n");
+      flag = CVDense(cvode_mem, P1_NEQ);
+      check_flag(&flag, "CVDense", 1);
+      if(flag != CV_SUCCESS) break;
+      flag = CVDenseSetJacFn(cvode_mem, Jac1, NULL);
+      check_flag(&flag, "CVDenseSetJacFn", 1);
+      break;
+    case DENSE_DQ   : 
+      printf("Dense, Difference Quotient Jacobian\n");
+      flag = CVDenseSetJacFn(cvode_mem, NULL, NULL);
+      check_flag(&flag, "CVDenseSetJacFn", 1);
+      break;
+    case DIAG       : 
+      printf("Diagonal Jacobian\n");
+      flag = CVDiag(cvode_mem);
+      check_flag(&flag, "CVDiag", 1);
+      break;
+    case BAND_USER  : 
+      printf("Band, User-Supplied Jacobian\n");
+      flag = CVBand(cvode_mem, P2_NEQ, mu, ml);
+      check_flag(&flag, "CVBand", 1);
+      if(flag != CV_SUCCESS) break;
+      flag = CVBandSetJacFn(cvode_mem, Jac2, NULL);
+      check_flag(&flag, "CVBandSetJacFn", 1);
+      break;
+    case BAND_DQ  :   
+      printf("Band, Difference Quotient Jacobian\n");
+      flag = CVBandSetJacFn(cvode_mem, NULL, NULL);
+      check_flag(&flag, "CVBandSetJacFn", 1);
+      break;    
+    }
+  }
+
+  return(flag);
+}
+
+static void PrintErrOutput(realtype tol_factor)
+{
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("\n\n Error exceeds %Lg * tolerance \n\n", tol_factor);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("\n\n Error exceeds %lg * tolerance \n\n", tol_factor);
+#else
+  printf("\n\n Error exceeds %g * tolerance \n\n", tol_factor);
+#endif
+
+  return;
+}
+
+static void PrintFinalStats(void *cvode_mem, int miter, realtype ero)
+{
+  long int lenrw, leniw, nst, nfe, nsetups, nni, ncfn, netf;
+  long int lenrwL, leniwL, nje, nfeL;
+  int flag;
+
+  flag = CVodeGetWorkSpace(cvode_mem, &lenrw, &leniw);
+  check_flag(&flag, "CVodeGetWorkSpace", 1);
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  printf("\n Final statistics for this run:\n\n");
+  printf(" CVode real workspace length              = %4ld \n", lenrw);
+  printf(" CVode integer workspace length           = %4ld \n", leniw);
+  printf(" Number of steps                          = %4ld \n",  nst);
+  printf(" Number of f-s                            = %4ld \n",  nfe);
+  printf(" Number of setups                         = %4ld \n",  nsetups);
+  printf(" Number of nonlinear iterations           = %4ld \n",  nni);
+  printf(" Number of nonlinear convergence failures = %4ld \n",  ncfn);
+  printf(" Number of error test failures            = %4ld \n\n",netf);
+  
+  if (miter != FUNC) {
+    switch(miter) {
+    case DENSE_USER :
+    case DENSE_DQ   :
+      flag = CVDenseGetNumJacEvals(cvode_mem, &nje);
+      check_flag(&flag, "CVDenseGetNumJacEvals", 1);
+      flag = CVDenseGetNumRhsEvals(cvode_mem, &nfeL);
+      check_flag(&flag, "CVDenseGetNumRhsEvals", 1);
+      flag = CVDenseGetWorkSpace(cvode_mem, &lenrwL, &leniwL);
+      check_flag(&flag, "CVDenseGetWorkSpace", 1);
+      break;
+    case BAND_USER  :
+    case BAND_DQ    :
+      flag = CVBandGetNumJacEvals(cvode_mem, &nje);
+      check_flag(&flag, "CVBandGetNumJacEvals", 1);
+      flag = CVBandGetNumRhsEvals(cvode_mem, &nfeL);
+      check_flag(&flag, "CVBandGetNumRhsEvals", 1);
+      flag = CVBandGetWorkSpace(cvode_mem, &lenrwL, &leniwL);
+      check_flag(&flag, "CVBandGetWorkSpace", 1);
+      break;  
+    case DIAG       :
+      nje = nsetups;
+      flag = CVDiagGetNumRhsEvals(cvode_mem, &nfeL);
+      check_flag(&flag, "CVDiagGetNumRhsEvals", 1);
+      flag = CVDiagGetWorkSpace(cvode_mem, &lenrwL, &leniwL);
+      check_flag(&flag, "CVDiagGetWorkSpace", 1);
+      break;
+    }
+    printf(" Linear solver real workspace length      = %4ld \n", lenrwL);
+    printf(" Linear solver integer workspace length   = %4ld \n", leniwL);
+    printf(" Number of Jacobian evaluations           = %4ld  \n", nje);
+    printf(" Number of f-s evaluations                = %4ld \n\n", nfeL);
+  }
+  
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf(" Error overrun = %.3Lf \n", ero);
+#else
+  printf(" Error overrun = %.3f \n", ero);
+#endif
+}
+
+static void PrintErrInfo(int nerr)
+{
+  printf("\n\n-------------------------------------------------------------");
+  printf("\n-------------------------------------------------------------");
+  printf("\n\n Number of errors encountered = %d \n", nerr);
+
+  return;
+}
+
+/* Check function return value...
+     opt == 0 means SUNDIALS function allocates memory so check if
+              returned NULL pointer
+     opt == 1 means SUNDIALS function returns a flag so check if
+              flag >= 0
+     opt == 2 means function allocates memory so check if returned
+              NULL pointer */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+              funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/cvdemd.out b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdemd.out
new file mode 100644
index 0000000..71c1d27
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdemd.out
@@ -0,0 +1,502 @@
+Demonstration program for CVODE package - direct linear solvers
+
+
+Problem 1: Van der Pol oscillator
+ xdotdot - 3*(1 - x^2)*xdot + x = 0, x(0) = 2, xdot(0) = 0
+ neq = 2,  itol = CV_SS,  reltol = 0,  abstol = 1e-06
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : FUNCTIONAL
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91056e-01    5    9.8626e-02
+   3.60761    -2.12392e-05   -3.16877e+00    5    2.2756e-02
+   5.82239    -1.68010e+00    2.91060e-01    4    1.4079e-01
+   8.03716     9.57612e-05    3.16900e+00    5    2.0348e-02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   34 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  196 
+ Number of f-s                            =  390 
+ Number of setups                         =    0 
+ Number of nonlinear iterations           =    0 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   15 
+
+ Error overrun = 95.761 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : NEWTON
+Linear Solver           : Dense, User-Supplied Jacobian
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91056e-01    7    6.5178e-02
+   3.60761     2.42943e-06   -3.16870e+00    7    2.0626e-02
+   5.82239    -1.68010e+00    2.91062e-01    7    1.3038e-01
+   8.03716     1.99078e-05    3.16879e+00    7    2.3923e-02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   34 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  266 
+ Number of f-s                            =  365 
+ Number of setups                         =   46 
+ Number of nonlinear iterations           =  362 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   23 
+
+ Linear solver real workspace length      =    8 
+ Linear solver integer workspace length   =    2 
+ Number of Jacobian evaluations           =    5  
+ Number of f-s evaluations                =    0 
+
+ Error overrun = 19.908 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : NEWTON
+Linear Solver           : Dense, Difference Quotient Jacobian
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91056e-01    5    6.5835e-02
+   3.60761    -2.28046e-05   -3.16879e+00    6    3.1773e-02
+   5.82239    -1.68010e+00    2.91059e-01    6    9.3513e-02
+   8.03716    -9.84259e-06    3.16869e+00    6    2.8096e-02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   34 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  195 
+ Number of f-s                            =  267 
+ Number of setups                         =   34 
+ Number of nonlinear iterations           =  264 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   15 
+
+ Linear solver real workspace length      =    8 
+ Linear solver integer workspace length   =    2 
+ Number of Jacobian evaluations           =    4  
+ Number of f-s evaluations                =    8 
+
+ Error overrun = 22.805 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : NEWTON
+Linear Solver           : Diagonal Jacobian
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91054e-01    6    5.9553e-02
+   3.60761     6.36071e-05   -3.16853e+00    6    2.8912e-02
+   5.82239    -1.68011e+00    2.91057e-01    5    9.8149e-02
+   8.03716    -6.97420e-05    3.16847e+00    6    3.1284e-02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   34 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  238 
+ Number of f-s                            =  326 
+ Number of setups                         =   39 
+ Number of nonlinear iterations           =  323 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   19 
+
+ Linear solver real workspace length      =    6 
+ Linear solver integer workspace length   =    3 
+ Number of Jacobian evaluations           =   39  
+ Number of f-s evaluations                =   39 
+
+ Error overrun = 69.742 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : FUNCTIONAL
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91056e-01    4    9.6100e-02
+   3.60761    -1.35636e-04   -3.16912e+00    5    1.5675e-02
+   5.82239    -1.68009e+00    2.91063e-01    5    1.1210e-01
+   8.03716     2.20969e-04    3.16937e+00    5    1.4732e-02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   20 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  262 
+ Number of f-s                            =  497 
+ Number of setups                         =    0 
+ Number of nonlinear iterations           =    0 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   22 
+
+ Error overrun = 220.969 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : NEWTON
+Linear Solver           : Dense, User-Supplied Jacobian
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91056e-01    5    1.1991e-01
+   3.60761    -5.46907e-05   -3.16886e+00    5    1.6403e-02
+   5.82239    -1.68010e+00    2.91061e-01    4    1.0146e-01
+   8.03716     1.54312e-04    3.16917e+00    4    9.5378e-03
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   20 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  265 
+ Number of f-s                            =  357 
+ Number of setups                         =   40 
+ Number of nonlinear iterations           =  354 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   18 
+
+ Linear solver real workspace length      =    8 
+ Linear solver integer workspace length   =    2 
+ Number of Jacobian evaluations           =    5  
+ Number of f-s evaluations                =    0 
+
+ Error overrun = 154.312 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : NEWTON
+Linear Solver           : Dense, Difference Quotient Jacobian
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91058e-01    4    8.1067e-02
+   3.60761    -5.84200e-05   -3.16886e+00    4    1.1360e-02
+   5.82239    -1.68010e+00    2.91062e-01    5    6.4941e-02
+   8.03716     9.61737e-05    3.16899e+00    5    1.5216e-02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   20 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  276 
+ Number of f-s                            =  366 
+ Number of setups                         =   40 
+ Number of nonlinear iterations           =  363 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   17 
+
+ Linear solver real workspace length      =    8 
+ Linear solver integer workspace length   =    2 
+ Number of Jacobian evaluations           =    6  
+ Number of f-s evaluations                =   12 
+
+ Error overrun = 96.174 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : NEWTON
+Linear Solver           : Diagonal Jacobian
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91056e-01    5    1.1430e-01
+   3.60761    -9.83501e-05   -3.16900e+00    5    1.6712e-02
+   5.82239    -1.68009e+00    2.91063e-01    4    8.1261e-02
+   8.03716     1.66642e-04    3.16920e+00    4    1.0547e-02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   20 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  266 
+ Number of f-s                            =  359 
+ Number of setups                         =   39 
+ Number of nonlinear iterations           =  356 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   17 
+
+ Linear solver real workspace length      =    6 
+ Linear solver integer workspace length   =    3 
+ Number of Jacobian evaluations           =   39  
+ Number of f-s evaluations                =   39 
+
+ Error overrun = 166.642 
+
+
+-------------------------------------------------------------
+-------------------------------------------------------------
+
+Problem 2: ydot = A * y, where A is a banded lower
+triangular matrix derived from 2-D advection PDE
+
+ neq = 25, ml = 5, mu = 0
+ itol = CV_SS, reltol = 0, abstol = 1e-06
+      t        max.err      qu     hu 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : FUNCTIONAL
+
+      t        max.err      qu     hu 
+     0.010    1.4690e-07    3     1.1459e-02
+     0.100    5.2543e-07    4     4.1413e-02
+     1.000    1.2207e-06    5     6.8243e-02
+    10.000    9.7711e-07    3     2.8481e-01
+   100.000    1.5230e-07    1     6.0816e-01
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  425 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  341 
+ Number of f-s                            =  600 
+ Number of setups                         =    0 
+ Number of nonlinear iterations           =    0 
+ Number of nonlinear convergence failures =   79 
+ Number of error test failures            =    0 
+
+ Error overrun = 1.221 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : NEWTON
+Linear Solver           : Diagonal Jacobian
+
+      t        max.err      qu     hu 
+     0.010    1.3734e-07    3     1.0327e-02
+     0.100    2.4956e-06    3     2.3048e-02
+     1.000    4.2328e-06    4     4.3778e-02
+    10.000    9.7335e-07    4     3.1286e-01
+   100.000    8.2265e-10    1     3.9630e+02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  425 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  154 
+ Number of f-s                            =  218 
+ Number of setups                         =   33 
+ Number of nonlinear iterations           =  215 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =    5 
+
+ Linear solver real workspace length      =   75 
+ Linear solver integer workspace length   =    3 
+ Number of Jacobian evaluations           =   33  
+ Number of f-s evaluations                =   33 
+
+ Error overrun = 4.233 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : NEWTON
+Linear Solver           : Band, User-Supplied Jacobian
+
+      t        max.err      qu     hu 
+     0.010    1.3670e-07    3     1.2164e-02
+     0.100    4.7920e-07    4     4.2115e-02
+     1.000    2.5077e-07    6     1.0365e-01
+    10.000    6.0790e-07    4     4.7206e-01
+   100.000    5.7390e-08    2     1.0750e+01
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  425 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  149 
+ Number of f-s                            =  183 
+ Number of setups                         =   32 
+ Number of nonlinear iterations           =  180 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =    6 
+
+ Linear solver real workspace length      =  425 
+ Linear solver integer workspace length   =   25 
+ Number of Jacobian evaluations           =    3  
+ Number of f-s evaluations                =    0 
+
+ Error overrun = 0.608 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : NEWTON
+Linear Solver           : Band, Difference Quotient Jacobian
+
+      t        max.err      qu     hu 
+     0.010    1.4285e-07    3     1.3840e-02
+     0.100    5.7337e-07    4     4.2111e-02
+     1.000    7.3281e-07    5     6.3684e-02
+    10.000    3.8507e-07    5     2.6026e-01
+   100.000    4.1035e-12    1     6.2591e+01
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  425 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  124 
+ Number of f-s                            =  141 
+ Number of setups                         =   24 
+ Number of nonlinear iterations           =  138 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =    1 
+
+ Linear solver real workspace length      =  425 
+ Linear solver integer workspace length   =   25 
+ Number of Jacobian evaluations           =    3  
+ Number of f-s evaluations                =   18 
+
+ Error overrun = 0.733 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : FUNCTIONAL
+
+      t        max.err      qu     hu 
+     0.010    5.5931e-07    2     8.1257e-03
+     0.100    5.2896e-06    3     1.7769e-02
+     1.000    2.3209e-06    5     7.5291e-02
+    10.000    1.2861e-06    5     2.7791e-01
+   100.000    1.6770e-08    1     8.7560e-01
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  250 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  377 
+ Number of f-s                            =  697 
+ Number of setups                         =    0 
+ Number of nonlinear iterations           =    0 
+ Number of nonlinear convergence failures =   56 
+ Number of error test failures            =    1 
+
+ Error overrun = 5.290 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : NEWTON
+Linear Solver           : Diagonal Jacobian
+
+      t        max.err      qu     hu 
+     0.010    5.6365e-07    2     8.1241e-03
+     0.100    7.9753e-07    4     1.8910e-02
+     1.000    5.9100e-06    5     5.1976e-02
+    10.000    1.1253e-05    4     9.7523e-02
+   100.000    1.1182e-09    1     8.7300e+01
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  250 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  202 
+ Number of f-s                            =  314 
+ Number of setups                         =   63 
+ Number of nonlinear iterations           =  311 
+ Number of nonlinear convergence failures =    5 
+ Number of error test failures            =    7 
+
+ Linear solver real workspace length      =   75 
+ Linear solver integer workspace length   =    3 
+ Number of Jacobian evaluations           =   63  
+ Number of f-s evaluations                =   63 
+
+ Error overrun = 11.253 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : NEWTON
+Linear Solver           : Band, User-Supplied Jacobian
+
+      t        max.err      qu     hu 
+     0.010    5.6372e-07    2     8.1246e-03
+     0.100    5.2784e-06    3     1.7819e-02
+     1.000    1.8169e-06    5     6.0110e-02
+    10.000    5.4997e-07    5     4.1661e-01
+   100.000    1.7764e-09    2     2.9748e+01
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  250 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  119 
+ Number of f-s                            =  143 
+ Number of setups                         =   25 
+ Number of nonlinear iterations           =  140 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =    2 
+
+ Linear solver real workspace length      =  425 
+ Linear solver integer workspace length   =   25 
+ Number of Jacobian evaluations           =    3  
+ Number of f-s evaluations                =    0 
+
+ Error overrun = 5.278 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : NEWTON
+Linear Solver           : Band, Difference Quotient Jacobian
+
+      t        max.err      qu     hu 
+     0.010    5.6492e-07    2     8.1361e-03
+     0.100    5.9968e-06    3     1.7105e-02
+     1.000    1.6902e-06    5     8.7628e-02
+    10.000    5.2314e-07    5     3.1091e-01
+   100.000    1.4380e-09    2     2.1635e+01
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  250 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  121 
+ Number of f-s                            =  144 
+ Number of setups                         =   24 
+ Number of nonlinear iterations           =  141 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =    1 
+
+ Linear solver real workspace length      =  425 
+ Linear solver integer workspace length   =   25 
+ Number of Jacobian evaluations           =    3  
+ Number of f-s evaluations                =   18 
+
+ Error overrun = 5.997 
+
+
+-------------------------------------------------------------
+-------------------------------------------------------------
+
+ Number of errors encountered = 0 
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/cvdemk.c b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdemk.c
new file mode 100644
index 0000000..b0c0688
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdemk.c
@@ -0,0 +1,1135 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:08 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * --------------------------------------------------------------------
+ * Demonstration program for CVODE - Krylov linear solver.
+ * ODE system from ns-species interaction PDE in 2 dimensions.
+ * 
+ * This program solves a stiff ODE system that arises from a system
+ * of partial differential equations. The PDE system is a food web
+ * population model, with predator-prey interaction and diffusion on
+ * the unit square in two dimensions. The dependent variable vector is:
+ *
+ *        1   2        ns
+ *  c = (c , c , ..., c  )
+ *
+ * and the PDEs are as follows:
+ *
+ *    i               i      i
+ *  dc /dt  =  d(i)*(c    + c   )  +  f (x,y,c)  (i=1,...,ns)
+ *                    xx     yy        i   
+ *
+ * where
+ *
+ *                 i          ns         j
+ *  f (x,y,c)  =  c *(b(i) + sum a(i,j)*c )
+ *   i                       j=1                                         
+ *                                                                       
+ * The number of species is ns = 2*np, with the first np being prey
+ * and the last np being predators. The coefficients a(i,j), b(i),
+ * d(i) are:
+ *
+ *  a(i,i) = -a  (all i)
+ *  a(i,j) = -g  (i <= np, j > np)
+ *  a(i,j) =  e  (i > np, j <= np)
+ *  b(i) =  b*(1 + alpha*x*y)  (i <= np)
+ *  b(i) = -b*(1 + alpha*x*y)  (i > np)
+ *  d(i) = Dprey  (i <= np)
+ *  d(i) = Dpred  (i > np)
+ *
+ * The spatial domain is the unit square. The final time is 10.
+ * The boundary conditions are: normal derivative = 0.
+ * A polynomial in x and y is used to set the initial conditions.
+ *
+ * The PDEs are discretized by central differencing on an MX by MY mesh.
+ *
+ * The resulting ODE system is stiff.
+ *
+ * The ODE system is solved using Newton iteration and the CVSPGMR
+ * linear solver (scaled preconditioned GMRES).
+ *
+ * The preconditioner matrix used is the product of two matrices:
+ * (1) A matrix, only defined implicitly, based on a fixed number
+ * of Gauss-Seidel iterations using the diffusion terms only.
+ * (2) A block-diagonal matrix based on the partial derivatives
+ * of the interaction terms f only, using block-grouping (computing
+ * only a subset of the ns by ns blocks).
+ *
+ * Four different runs are made for this problem.
+ * The product preconditoner is applied on the left and on the
+ * right. In each case, both the modified and classical Gram-Schmidt
+ * options are tested.
+ * In the series of runs, CVodeMalloc and CVSpgmr are called only
+ * for the first run, whereas CVodeReInit and CVReInitSpgmr are
+ * called for each of the remaining three runs.
+ *
+ * A problem description, performance statistics at selected output
+ * times, and final statistics are written to standard output.
+ * On the first run, solution values are also printed at output
+ * times. Error and warning messages are written to standard error,
+ * but there should be no such messages.
+ *
+ * Note: This program requires the "small" dense linear solver
+ * routines denalloc, denallocpiv, denaddI, gefa, gesl, denfreepiv
+ * and denfree.
+ *
+ * Note: This program assumes the sequential implementation for the
+ * type N_Vector and uses the NV_DATA_S macro to gain access to the
+ * contiguous array of components of an N_Vector.
+ * --------------------------------------------------------------------
+ * Reference: Peter N. Brown and Alan C. Hindmarsh, Reduced Storage
+ * Matrix Methods in Stiff ODE Systems, J. Appl. Math. & Comp., 31
+ * (1989), pp. 40-91.  Also available as Lawrence Livermore National
+ * Laboratory Report UCRL-95088, Rev. 1, June 1987.
+ * --------------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include "sundialstypes.h"  /* definition of type realtype      */
+#include "cvode.h"          /* main integrator header file      */
+#include "cvspgmr.h"        /* use CVSPGMR linear solver        */
+#include "smalldense.h"     /* use small dense matrix functions */
+#include "nvector_serial.h" /* definition of type N_Vector and  */
+                            /* macro NV_DATA_S                  */
+#include "sundialsmath.h"   /* contains the macros ABS and SQR  */
+
+/* Constants */
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+
+/* Problem Specification Constants */
+
+#define AA    ONE               /* AA = a */
+#define EE    RCONST(1.0e4)     /* EE = e */
+#define GG    RCONST(0.5e-6)    /* GG = g */
+#define BB    ONE               /* BB = b */
+#define DPREY ONE
+#define DPRED RCONST(0.5)
+#define ALPH  ONE
+#define NP    3
+#define NS    (2*NP)
+
+/* Method Constants */
+
+#define MX    6
+#define MY    6
+#define MXNS  (MX*NS)
+#define AX    ONE
+#define AY    ONE
+#define DX    (AX/(realtype)(MX-1))
+#define DY    (AY/(realtype)(MY-1))
+#define MP    NS
+#define MQ    (MX*MY)
+#define MXMP  (MX*MP)
+#define NGX   2
+#define NGY   2
+#define NGRP  (NGX*NGY)
+#define ITMAX 5
+
+/* CVodeMalloc Constants */
+
+#define NEQ  (NS*MX*MY)
+#define T0   ZERO
+#define RTOL RCONST(1.0e-5)
+#define ATOL RCONST(1.0e-5)
+
+/* CVSpgmr Constants */
+
+#define MAXL 0     /* => use default = MIN(NEQ, 5)            */
+#define DELT ZERO  /* => use default = 0.05                   */
+
+/* Output Constants */
+
+#define T1        RCONST(1.0e-8)
+#define TOUT_MULT RCONST(10.0)
+#define DTOUT     ONE
+#define NOUT      18
+
+/* Note: The value for species i at mesh point (j,k) is stored in */
+/* component number (i-1) + j*NS + k*NS*MX of an N_Vector,        */
+/* where 1 <= i <= NS, 0 <= j < MX, 0 <= k < MY.                  */
+
+/* Structure for user data */
+
+typedef struct {
+  realtype **P[NGRP];
+  long int *pivot[NGRP];
+  int ns, mxns;
+  int mp, mq, mx, my, ngrp, ngx, ngy, mxmp;
+  int jgx[NGX+1], jgy[NGY+1], jigx[MX], jigy[MY];
+  int jxr[NGX], jyr[NGY];
+  realtype acoef[NS][NS], bcoef[NS], diff[NS];
+  realtype cox[NS], coy[NS], dx, dy, srur;
+  realtype fsave[NEQ];
+  N_Vector rewt;
+  void *cvode_mem;
+} *WebData;
+
+/* Private Helper Functions */
+
+static WebData AllocUserData(void);
+static void InitUserData(WebData wdata);
+static void SetGroups(int m, int ng, int jg[], int jig[], int jr[]);
+static void CInit(N_Vector c, WebData wdata);
+static void PrintIntro(void);
+static void PrintHeader(int jpre, int gstype);
+static void PrintAllSpecies(N_Vector c, int ns, int mxns, realtype t);
+static void PrintOutput(void *cvode_mem, realtype t);
+static void PrintFinalStats(void *cvode_mem);
+static void FreeUserData(WebData wdata);
+static void WebRates(realtype x, realtype y, realtype t, realtype c[],
+		     realtype rate[], WebData wdata);
+static void fblock (realtype t, realtype cdata[], int jx, int jy,
+		    realtype cdotdata[], WebData wdata);
+static void GSIter(realtype gamma, N_Vector z, N_Vector x,WebData wdata);
+
+/* Small Vector Kernels */
+
+static void v_inc_by_prod(realtype u[], realtype v[], realtype w[], int n);
+static void v_sum_prods(realtype u[], realtype p[], realtype q[], realtype v[],
+                        realtype w[], int n);
+static void v_prod(realtype u[], realtype v[], realtype w[], int n);
+static void v_zero(realtype u[], int n);
+
+/* Functions Called By The Solver */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+
+static int Precond(realtype tn, N_Vector c, N_Vector fc,
+		   booleantype jok, booleantype *jcurPtr, realtype gamma,
+		   void *P_data, N_Vector vtemp1, N_Vector vtemp2,
+                   N_Vector vtemp3);
+
+static int PSolve(realtype tn, N_Vector c, N_Vector fc,
+                  N_Vector r, N_Vector z,
+                  realtype gamma, realtype delta,
+                  int lr, void *P_data, N_Vector vtemp);
+
+/* Private function to check function return values */
+
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/* Implementation */
+
+int main()
+{
+  realtype abstol=ATOL, reltol=RTOL, t, tout;
+  N_Vector c;
+  WebData wdata;
+  void *cvode_mem;
+  booleantype firstrun;
+  int jpre, gstype, flag;
+  int ns, mxns, iout;
+
+  c = NULL;
+  wdata = NULL;
+  cvode_mem = NULL;
+
+  /* Initializations */
+  c = N_VNew_Serial(NEQ);
+  if(check_flag((void *)c, "N_VNew_Serial", 0)) return(1);
+  wdata = AllocUserData();
+  if(check_flag((void *)wdata, "AllocUserData", 2)) return(1);
+  InitUserData(wdata);
+  ns = wdata->ns;
+  mxns = wdata->mxns;
+
+  /* Print problem description */
+  PrintIntro();
+
+  /* Loop over jpre and gstype (four cases) */
+  for (jpre = PREC_LEFT; jpre <= PREC_RIGHT; jpre++) {
+    for (gstype = MODIFIED_GS; gstype <= CLASSICAL_GS; gstype++) {
+      
+      /* Initialize c and print heading */
+      CInit(c, wdata);
+      PrintHeader(jpre, gstype);
+
+      /* Call CVodeMalloc or CVodeReInit, then CVSpgmr to set up problem */
+      
+      firstrun = (jpre == PREC_LEFT) && (gstype == MODIFIED_GS);
+      if (firstrun) {
+        cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+        if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+        wdata->cvode_mem = cvode_mem;
+
+        flag = CVodeSetFdata(cvode_mem, wdata);
+        if(check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+
+        flag = CVodeMalloc(cvode_mem, f, T0, c, CV_SS, reltol, &abstol);
+        if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+        flag = CVSpgmr(cvode_mem, jpre, MAXL);
+        if(check_flag(&flag, "CVSpgmr", 1)) return(1);
+
+        flag = CVSpgmrSetGSType(cvode_mem, gstype);
+        if(check_flag(&flag, "CVSpgmrSetGSType", 1)) return(1);
+
+        flag = CVSpgmrSetDelt(cvode_mem, DELT);
+        if(check_flag(&flag, "CVSpgmrSetDelt", 1)) return(1);
+
+        flag = CVSpgmrSetPreconditioner(cvode_mem, Precond, PSolve, wdata);
+        if(check_flag(&flag, "CVSpgmrSetPreconditioner", 1)) return(1);
+
+      } else {
+
+        flag = CVodeReInit(cvode_mem, f, T0, c, CV_SS, reltol, &abstol);
+        if(check_flag(&flag, "CVodeReInit", 1)) return(1);
+
+        flag = CVSpgmrSetPrecType(cvode_mem, jpre);
+        check_flag(&flag, "CVSpgmrSetPrecType", 1);
+        flag = CVSpgmrSetGSType(cvode_mem, gstype);
+        if(check_flag(&flag, "CVSpgmrSetGSType", 1)) return(1);
+
+      }
+      
+      /* Print initial values */
+      if (firstrun) PrintAllSpecies(c, ns, mxns, T0);
+      
+      /* Loop over output points, call CVode, print sample solution values. */
+      tout = T1;
+      for (iout = 1; iout <= NOUT; iout++) {
+        flag = CVode(cvode_mem, tout, c, &t, CV_NORMAL);
+        PrintOutput(cvode_mem, t);
+        if (firstrun && (iout % 3 == 0)) PrintAllSpecies(c, ns, mxns, t);
+        if(check_flag(&flag, "CVode", 1)) break;
+        if (tout > RCONST(0.9)) tout += DTOUT; else tout *= TOUT_MULT; 
+      }
+      
+      /* Print final statistics, and loop for next case */
+      PrintFinalStats(cvode_mem);
+      
+    }
+  }
+
+  /* Free all memory */
+  CVodeFree(cvode_mem);
+  N_VDestroy_Serial(c);
+  FreeUserData(wdata);
+
+  return(0);
+}
+
+static WebData AllocUserData(void)
+{
+  int i, ngrp = NGRP;
+  int ns = NS;
+  WebData wdata;
+  
+  wdata = (WebData) malloc(sizeof *wdata);
+  for(i=0; i < ngrp; i++) {
+    (wdata->P)[i] = denalloc(ns);
+    (wdata->pivot)[i] = denallocpiv(ns);
+  }
+  wdata->rewt = N_VNew_Serial(NEQ);
+  return(wdata);
+}
+
+static void InitUserData(WebData wdata)
+{
+  int i, j, ns;
+  realtype *bcoef, *diff, *cox, *coy, dx, dy;
+  realtype (*acoef)[NS];
+  
+  acoef = wdata->acoef;
+  bcoef = wdata->bcoef;
+  diff = wdata->diff;
+  cox = wdata->cox;
+  coy = wdata->coy;
+  ns = wdata->ns = NS;
+  
+  for (j = 0; j < NS; j++) { for (i = 0; i < NS; i++) acoef[i][j] = 0.; }
+  for (j = 0; j < NP; j++) {
+    for (i = 0; i < NP; i++) {
+      acoef[NP+i][j] = EE;
+      acoef[i][NP+j] = -GG;
+    }
+    acoef[j][j] = -AA;
+    acoef[NP+j][NP+j] = -AA;
+    bcoef[j] = BB;
+    bcoef[NP+j] = -BB;
+    diff[j] = DPREY;
+    diff[NP+j] = DPRED;
+  }
+
+  /* Set remaining problem parameters */
+
+  wdata->mxns = MXNS;
+  dx = wdata->dx = DX;
+  dy = wdata->dy = DY;
+  for (i = 0; i < ns; i++) {
+    cox[i] = diff[i]/SQR(dx);
+    coy[i] = diff[i]/SQR(dy);
+  }
+
+  /* Set remaining method parameters */
+
+  wdata->mp = MP;
+  wdata->mq = MQ;
+  wdata->mx = MX;
+  wdata->my = MY;
+  wdata->srur = RSqrt(UNIT_ROUNDOFF);
+  wdata->mxmp = MXMP;
+  wdata->ngrp = NGRP;
+  wdata->ngx = NGX;
+  wdata->ngy = NGY;
+  SetGroups(MX, NGX, wdata->jgx, wdata->jigx, wdata->jxr);
+  SetGroups(MY, NGY, wdata->jgy, wdata->jigy, wdata->jyr);
+}
+
+/*
+ This routine sets arrays jg, jig, and jr describing
+ a uniform partition of (0,1,2,...,m-1) into ng groups.
+ The arrays set are:
+   jg    = length ng+1 array of group boundaries.
+           Group ig has indices j = jg[ig],...,jg[ig+1]-1.
+   jig   = length m array of group indices vs node index.
+           Node index j is in group jig[j].
+   jr    = length ng array of indices representing the groups.
+           The index for group ig is j = jr[ig].
+*/
+static void SetGroups(int m, int ng, int jg[], int jig[], int jr[])
+{
+  int ig, j, len1, mper, ngm1;
+
+  mper = m/ng; /* does integer division */
+  for (ig=0; ig < ng; ig++) jg[ig] = ig*mper;
+  jg[ng] = m;
+  
+  ngm1 = ng - 1;
+  len1 = ngm1*mper;
+  for (j = 0; j < len1; j++) jig[j] = j/mper;
+  for (j = len1; j < m; j++) jig[j] = ngm1;
+
+  for (ig = 0; ig < ngm1; ig++) jr[ig] = ((2*ig+1)*mper-1)/2;
+  jr[ngm1] = (ngm1*mper+m-1)/2;
+}
+
+/* This routine computes and loads the vector of initial values. */
+static void CInit(N_Vector c, WebData wdata)
+{
+  int jx, jy, ns, mxns, ioff, iyoff, i, ici;
+  realtype argx, argy, x, y, dx, dy, x_factor, y_factor, *cdata;
+  
+  cdata = NV_DATA_S(c);
+  ns = wdata->ns;
+  mxns = wdata->mxns;
+  dx = wdata->dx;
+  dy = wdata->dy;
+
+  x_factor = RCONST(4.0)/SQR(AX);
+  y_factor = RCONST(4.0)/SQR(AY);
+  for (jy = 0; jy < MY; jy++) {
+    y = jy*dy;
+    argy = SQR(y_factor*y*(AY-y)); 
+    iyoff = mxns*jy;
+    for (jx = 0; jx < MX; jx++) {
+      x = jx*dx;
+      argx = SQR(x_factor*x*(AX-x));
+      ioff = iyoff + ns*jx;
+      for (i = 1; i <= ns; i++) {
+        ici = ioff + i-1;
+        cdata[ici] = RCONST(10.0) + i*argx*argy;
+      }
+    }
+  }
+}
+
+static void PrintIntro(void)
+{
+  printf("\n\nDemonstration program for CVODE - CVSPGMR linear solver\n\n");
+  printf("Food web problem with ns species, ns = %d\n", NS);
+  printf("Predator-prey interaction and diffusion on a 2-D square\n\n");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("Matrix parameters: a = %.2Lg   e = %.2Lg   g = %.2Lg\n",
+         AA, EE, GG);
+  printf("b parameter = %.2Lg\n", BB);
+  printf("Diffusion coefficients: Dprey = %.2Lg   Dpred = %.2Lg\n",
+         DPREY, DPRED);
+  printf("Rate parameter alpha = %.2Lg\n\n", ALPH);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("Matrix parameters: a = %.2lg   e = %.2lg   g = %.2lg\n",
+         AA, EE, GG);
+  printf("b parameter = %.2lg\n", BB);
+  printf("Diffusion coefficients: Dprey = %.2lg   Dpred = %.2lg\n",
+         DPREY, DPRED);
+  printf("Rate parameter alpha = %.2lg\n\n", ALPH);
+#else
+  printf("Matrix parameters: a = %.2g   e = %.2g   g = %.2g\n",
+         AA, EE, GG);
+  printf("b parameter = %.2g\n", BB);
+  printf("Diffusion coefficients: Dprey = %.2g   Dpred = %.2g\n",
+         DPREY, DPRED);
+  printf("Rate parameter alpha = %.2g\n\n", ALPH);
+#endif
+  printf("Mesh dimensions (mx,my) are %d, %d.  ", MX, MY);
+  printf("Total system size is neq = %d \n\n", NEQ);
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("Tolerances: itol = %s,  reltol = %.2Lg, abstol = %.2Lg \n\n",
+         "CV_SS", RTOL, ATOL);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("Tolerances: itol = %s,  reltol = %.2lg, abstol = %.2lg \n\n",
+         "CV_SS", RTOL, ATOL);
+#else
+  printf("Tolerances: itol = %s,  reltol = %.2g, abstol = %.2g \n\n",
+         "CV_SS", RTOL, ATOL);
+#endif
+  printf("Preconditioning uses a product of:\n");
+  printf("  (1) Gauss-Seidel iterations with ");
+  printf("itmax = %d iterations, and\n", ITMAX);
+  printf("  (2) interaction-only block-diagonal matrix ");
+  printf("with block-grouping\n");
+  printf("  Number of diagonal block groups = ngrp = %d", NGRP);
+  printf("  (ngx by ngy, ngx = %d, ngy = %d)\n", NGX, NGY);
+  printf("\n\n--------------------------------------------------------------");
+  printf("--------------\n");
+}
+
+static void PrintHeader(int jpre, int gstype)
+{
+  if(jpre == PREC_LEFT)
+    printf("\n\nPreconditioner type is           jpre = %s\n", "PREC_LEFT");
+  else
+    printf("\n\nPreconditioner type is           jpre = %s\n", "PREC_RIGHT");
+
+  if(gstype == MODIFIED_GS)
+    printf("\nGram-Schmidt method type is    gstype = %s\n\n\n", "MODIFIED_GS");
+  else
+    printf("\nGram-Schmidt method type is    gstype = %s\n\n\n", "CLASSICAL_GS");
+}
+
+static void PrintAllSpecies(N_Vector c, int ns, int mxns, realtype t)
+{
+  int i, jx ,jy;
+  realtype *cdata;
+  
+  cdata = NV_DATA_S(c);
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("c values at t = %Lg:\n\n", t);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("c values at t = %lg:\n\n", t);
+#else
+  printf("c values at t = %g:\n\n", t);
+#endif
+  for (i=1; i <= ns; i++) {
+    printf("Species %d\n", i);
+    for (jy=MY-1; jy >= 0; jy--) {
+      for (jx=0; jx < MX; jx++) {
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+        printf("%-10.6Lg", cdata[(i-1) + jx*ns + jy*mxns]);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+        printf("%-10.6lg", cdata[(i-1) + jx*ns + jy*mxns]);
+#else
+        printf("%-10.6g", cdata[(i-1) + jx*ns + jy*mxns]);
+#endif
+      }
+      printf("\n");
+    }
+    printf("\n");
+  }
+}
+
+static void PrintOutput(void *cvode_mem, realtype t)
+{
+  long int nst, nfe, nni;
+  int qu, flag;
+  realtype hu;
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetLastOrder(cvode_mem, &qu);
+  check_flag(&flag, "CVodeGetLastOrder", 1);
+  flag = CVodeGetLastStep(cvode_mem, &hu);
+  check_flag(&flag, "CVodeGetLastStep", 1);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("t = %10.2Le  nst = %ld  nfe = %ld  nni = %ld", t, nst, nfe, nni);
+  printf("  qu = %d  hu = %11.2Le\n\n", qu, hu);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("t = %10.2le  nst = %ld  nfe = %ld  nni = %ld", t, nst, nfe, nni);
+  printf("  qu = %d  hu = %11.2le\n\n", qu, hu);
+#else
+  printf("t = %10.2e  nst = %ld  nfe = %ld  nni = %ld", t, nst, nfe, nni);
+  printf("  qu = %d  hu = %11.2e\n\n", qu, hu);
+#endif
+}
+
+static void PrintFinalStats(void *cvode_mem)
+{
+  long int lenrw, leniw ;
+  long int lenrwSPGMR, leniwSPGMR;
+  long int nst, nfe, nsetups, nni, ncfn, netf;
+  long int nli, npe, nps, ncfl, nfeSPGMR;
+  int flag;
+  realtype avdim;
+  
+  flag = CVodeGetWorkSpace(cvode_mem, &lenrw, &leniw);
+  check_flag(&flag, "CVodeGetWorkSpace", 1);
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  flag = CVSpgmrGetWorkSpace(cvode_mem, &lenrwSPGMR, &leniwSPGMR);
+  check_flag(&flag, "CVSpgmrGetWorkSpace", 1);
+  flag = CVSpgmrGetNumLinIters(cvode_mem, &nli);
+  check_flag(&flag, "CVSpgmrGetNumLinIters", 1);
+  flag = CVSpgmrGetNumPrecEvals(cvode_mem, &npe);
+  check_flag(&flag, "CVSpgmrGetNumPrecEvals", 1);
+  flag = CVSpgmrGetNumPrecSolves(cvode_mem, &nps);
+  check_flag(&flag, "CVSpgmrGetNumPrecSolves", 1);
+  flag = CVSpgmrGetNumConvFails(cvode_mem, &ncfl);
+  check_flag(&flag, "CVSpgmrGetNumConvFails", 1);
+  flag = CVSpgmrGetNumRhsEvals(cvode_mem, &nfeSPGMR);
+  check_flag(&flag, "CVSpgmrGetNumRhsEvals", 1);
+
+  printf("\n\n Final statistics for this run:\n\n");
+  printf(" CVode real workspace length           = %4ld \n", lenrw);
+  printf(" CVode integer workspace length        = %4ld \n", leniw);
+  printf(" CVSPGMR real workspace length         = %4ld \n", lenrwSPGMR);
+  printf(" CVSPGMR integer workspace length      = %4ld \n", leniwSPGMR);
+  printf(" Number of steps                       = %4ld \n", nst);
+  printf(" Number of f-s                         = %4ld \n", nfe);
+  printf(" Number of f-s (SPGMR)                 = %4ld \n", nfeSPGMR);
+  printf(" Number of f-s (TOTAL)                 = %4ld \n", nfe + nfeSPGMR);
+  printf(" Number of setups                      = %4ld \n", nsetups);
+  printf(" Number of nonlinear iterations        = %4ld \n", nni);
+  printf(" Number of linear iterations           = %4ld \n", nli);
+  printf(" Number of preconditioner evaluations  = %4ld \n", npe);
+  printf(" Number of preconditioner solves       = %4ld \n", nps);
+  printf(" Number of error test failures         = %4ld \n", netf);
+  printf(" Number of nonlinear conv. failures    = %4ld \n", ncfn);
+  printf(" Number of linear convergence failures = %4ld \n", ncfl);
+  avdim = (nni > 0) ? ((realtype)nli)/((realtype)nni) : ZERO;
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf(" Average Krylov subspace dimension     = %.3Lf \n", avdim);
+#else
+  printf(" Average Krylov subspace dimension     = %.3f \n", avdim);
+#endif
+  printf("\n\n--------------------------------------------------------------");
+  printf("--------------\n");
+  printf(    "--------------------------------------------------------------");
+  printf("--------------\n");
+}
+
+static void FreeUserData(WebData wdata)
+{
+  int i, ngrp;
+
+  ngrp = wdata->ngrp;
+  for(i=0; i < ngrp; i++) {
+    denfree((wdata->P)[i]);
+    denfreepiv((wdata->pivot)[i]);
+  }
+  N_VDestroy_Serial(wdata->rewt);
+  free(wdata);
+}
+
+/*
+ This routine computes the right-hand side of the ODE system and
+ returns it in cdot. The interaction rates are computed by calls to WebRates,
+ and these are saved in fsave for use in preconditioning.
+*/
+static void f(realtype t, N_Vector c, N_Vector cdot,void *f_data)
+{
+  int i, ic, ici, idxl, idxu, jx, ns, mxns, iyoff, jy, idyu, idyl;
+  realtype dcxli, dcxui, dcyli, dcyui, x, y, *cox, *coy, *fsave, dx, dy;
+  realtype *cdata, *cdotdata;
+  WebData wdata;
+  
+  wdata = (WebData) f_data;
+  cdata = NV_DATA_S(c);
+  cdotdata = NV_DATA_S(cdot);
+  
+  mxns = wdata->mxns;
+  ns = wdata->ns;
+  fsave = wdata->fsave;
+  cox = wdata->cox;
+  coy = wdata->coy;
+  mxns = wdata->mxns;
+  dx = wdata->dx;
+  dy = wdata->dy;
+  
+  for (jy = 0; jy < MY; jy++) {
+    y = jy*dy;
+    iyoff = mxns*jy;
+    idyu = (jy == MY-1) ? -mxns : mxns;
+    idyl = (jy == 0) ? -mxns : mxns;
+    for (jx = 0; jx < MX; jx++) {
+      x = jx*dx;
+      ic = iyoff + ns*jx;
+      /* Get interaction rates at one point (x,y). */
+      WebRates(x, y, t, cdata+ic, fsave+ic, wdata);
+      idxu = (jx == MX-1) ? -ns : ns;
+      idxl = (jx == 0) ? -ns : ns;
+      for (i = 1; i <= ns; i++) {
+        ici = ic + i-1;
+        /* Do differencing in y. */
+        dcyli = cdata[ici] - cdata[ici-idyl];
+        dcyui = cdata[ici+idyu] - cdata[ici];
+        /* Do differencing in x. */
+        dcxli = cdata[ici] - cdata[ici-idxl];
+        dcxui = cdata[ici+idxu] - cdata[ici];
+        /* Collect terms and load cdot elements. */
+        cdotdata[ici] = coy[i-1]*(dcyui - dcyli) + cox[i-1]*(dcxui - dcxli) +
+          fsave[ici];
+      }
+    }
+  }
+}
+
+/*
+  This routine computes the interaction rates for the species
+  c_1, ... ,c_ns (stored in c[0],...,c[ns-1]), at one spatial point 
+  and at time t.
+*/
+static void WebRates(realtype x, realtype y, realtype t, realtype c[],
+                     realtype rate[], WebData wdata)
+{
+  int i, j, ns;
+  realtype fac, *bcoef;
+  realtype (*acoef)[NS];
+  
+  ns = wdata->ns;
+  acoef = wdata->acoef;
+  bcoef = wdata->bcoef;
+  
+  for (i = 0; i < ns; i++)
+    rate[i] = ZERO;
+  
+  for (j = 0; j < ns; j++) 
+    for (i = 0; i < ns; i++) 
+      rate[i] += c[j] * acoef[i][j];
+  
+  fac = ONE + ALPH*x*y;
+  for (i = 0; i < ns; i++) 
+    rate[i] = c[i]*(bcoef[i]*fac + rate[i]);
+}
+
+/*
+ This routine generates the block-diagonal part of the Jacobian
+ corresponding to the interaction rates, multiplies by -gamma, adds
+ the identity matrix, and calls gefa to do the LU decomposition of
+ each diagonal block. The computation of the diagonal blocks uses
+ the preset block and grouping information. One block per group is
+ computed. The Jacobian elements are generated by difference
+ quotients using calls to the routine fblock.
+
+ This routine can be regarded as a prototype for the general case
+ of a block-diagonal preconditioner. The blocks are of size mp, and
+ there are ngrp=ngx*ngy blocks computed in the block-grouping scheme.
+*/ 
+static int Precond(realtype t, N_Vector c, N_Vector fc,
+		   booleantype jok, booleantype *jcurPtr, realtype gamma,
+		   void *P_data, N_Vector vtemp1, N_Vector vtemp2,
+                   N_Vector vtemp3)
+{
+  realtype ***P;
+  long int **pivot, ier;
+  int i, if0, if00, ig, igx, igy, j, jj, jx, jy;
+  int *jxr, *jyr, mp, ngrp, ngx, ngy, mxmp, flag;
+  realtype uround, fac, r, r0, save, srur;
+  realtype *f1, *fsave, *cdata, *rewtdata;
+  WebData wdata;
+  void *cvode_mem;
+  N_Vector rewt;
+  
+  wdata = (WebData) P_data;
+  cvode_mem = wdata->cvode_mem;
+  cdata = NV_DATA_S(c);
+  rewt = wdata->rewt;
+  flag = CVodeGetErrWeights(cvode_mem, rewt);
+  if(check_flag(&flag, "CVodeGetErrWeights", 1)) return(1);
+  rewtdata = NV_DATA_S(rewt);
+
+  uround = UNIT_ROUNDOFF;
+
+  P = wdata->P;
+  pivot = wdata->pivot;
+  jxr = wdata->jxr;
+  jyr = wdata->jyr;
+  mp = wdata->mp;
+  srur = wdata->srur;
+  ngrp = wdata->ngrp;
+  ngx = wdata->ngx;
+  ngy = wdata->ngy;
+  mxmp = wdata->mxmp;
+  fsave = wdata->fsave;
+  
+  /* Make mp calls to fblock to approximate each diagonal block of Jacobian.
+     Here, fsave contains the base value of the rate vector and 
+     r0 is a minimum increment factor for the difference quotient. */
+  
+  f1 = NV_DATA_S(vtemp1);
+  
+  fac = N_VWrmsNorm (fc, rewt);
+  r0 = RCONST(1000.0)*ABS(gamma)*uround*NEQ*fac;
+  if (r0 == ZERO) r0 = ONE;
+  
+  for (igy = 0; igy < ngy; igy++) {
+    jy = jyr[igy];
+    if00 = jy*mxmp;
+    for (igx = 0; igx < ngx; igx++) { 
+      jx = jxr[igx];
+      if0 = if00 + jx*mp;
+      ig = igx + igy*ngx; 
+      /* Generate ig-th diagonal block */
+      for (j = 0; j < mp; j++) {
+        /* Generate the jth column as a difference quotient */
+        jj = if0 + j; 
+        save = cdata[jj];
+        r = MAX(srur*ABS(save),r0/rewtdata[jj]);
+        cdata[jj] += r;
+        fac = -gamma/r;
+        fblock (t, cdata, jx, jy, f1, wdata);
+        for (i = 0; i < mp; i++) {
+          P[ig][j][i] = (f1[i] - fsave[if0+i])*fac;
+        }
+        cdata[jj] = save;
+      }
+    }
+  }
+  
+  /* Add identity matrix and do LU decompositions on blocks. */
+  
+  for (ig = 0; ig < ngrp; ig++) {
+    denaddI(P[ig], mp);
+    ier = gefa(P[ig], mp, pivot[ig]);
+    if (ier != 0) return(1);
+  }
+  
+  *jcurPtr = TRUE;
+  return(0);
+}
+
+/*
+  This routine computes one block of the interaction terms of the
+  system, namely block (jx,jy), for use in preconditioning.
+  Here jx and jy count from 0.
+*/
+static void fblock(realtype t, realtype cdata[], int jx, int jy,
+                   realtype cdotdata[], WebData wdata)
+{
+  int iblok, ic;
+  realtype x, y;
+  
+  iblok = jx + jy*(wdata->mx);
+  y = jy*(wdata->dy);
+  x = jx*(wdata->dx);
+  ic = (wdata->ns)*(iblok);
+  WebRates(x, y, t, cdata+ic, cdotdata, wdata);
+}
+
+/*
+  This routine applies two inverse preconditioner matrices
+  to the vector r, using the interaction-only block-diagonal Jacobian
+  with block-grouping, denoted Jr, and Gauss-Seidel applied to the
+  diffusion contribution to the Jacobian, denoted Jd.
+  It first calls GSIter for a Gauss-Seidel approximation to
+  ((I - gamma*Jd)-inverse)*r, and stores the result in z.
+  Then it computes ((I - gamma*Jr)-inverse)*z, using LU factors of the
+  blocks in P, and pivot information in pivot, and returns the result in z.
+*/
+static int PSolve(realtype tn, N_Vector c, N_Vector fc,
+                  N_Vector r, N_Vector z,
+                  realtype gamma, realtype delta,
+                  int lr, void *P_data, N_Vector vtemp)
+{
+  realtype   ***P;
+  long int **pivot;
+  int jx, jy, igx, igy, iv, ig, *jigx, *jigy, mx, my, ngx, mp;
+  WebData wdata;
+  
+  wdata = (WebData) P_data;
+  
+  N_VScale(ONE, r, z);
+  
+  /* call GSIter for Gauss-Seidel iterations */
+  
+  GSIter(gamma, z, vtemp, wdata);
+  
+  /* Do backsolves for inverse of block-diagonal preconditioner factor */
+  
+  P = wdata->P;
+  pivot = wdata->pivot;
+  mx = wdata->mx;
+  my = wdata->my;
+  ngx = wdata->ngx;
+  mp = wdata->mp;
+  jigx = wdata->jigx;
+  jigy = wdata->jigy;
+  
+  iv = 0;
+  for (jy = 0; jy < my; jy++) {
+    igy = jigy[jy];
+    for (jx = 0; jx < mx; jx++) {
+      igx = jigx[jx];
+      ig = igx + igy*ngx;
+      gesl(P[ig], mp, pivot[ig], &(NV_DATA_S(z)[iv]));
+      iv += mp;
+    }
+  }
+  
+  return(0);
+}
+
+/*
+  This routine performs ITMAX=5 Gauss-Seidel iterations to compute an
+  approximation to (P-inverse)*z, where P = I - gamma*Jd, and
+  Jd represents the diffusion contributions to the Jacobian.
+  The answer is stored in z on return, and x is a temporary vector.
+  The dimensions below assume a global constant NS >= ns.
+  Some inner loops of length ns are implemented with the small
+  vector kernels v_sum_prods, v_prod, v_inc_by_prod.
+*/
+static void GSIter(realtype gamma, N_Vector z, N_Vector x, WebData wdata)
+{
+  int jx, jy, mx, my, x_loc, y_loc;
+  int ns, mxns, i, iyoff, ic, iter;
+  realtype beta[NS], beta2[NS], cof1[NS], gam[NS], gam2[NS];
+  realtype temp, *cox, *coy, *xd, *zd;
+  
+  xd = NV_DATA_S(x);
+  zd = NV_DATA_S(z);
+  ns = wdata->ns;
+  mx = wdata->mx;
+  my = wdata->my;
+  mxns = wdata->mxns;
+  cox = wdata->cox;
+  coy = wdata->coy;
+  
+  /* Write matrix as P = D - L - U.
+     Load local arrays beta, beta2, gam, gam2, and cof1. */
+  
+  for (i = 0; i < ns; i++) {
+    temp = ONE/(ONE + RCONST(2.0)*gamma*(cox[i] + coy[i]));
+    beta[i] = gamma*cox[i]*temp;
+    beta2[i] = RCONST(2.0)*beta[i];
+    gam[i] = gamma*coy[i]*temp;
+    gam2[i] = RCONST(2.0)*gam[i];
+    cof1[i] = temp;
+  }
+  
+  /* Begin iteration loop.
+     Load vector x with (D-inverse)*z for first iteration. */
+  
+  for (jy = 0; jy < my; jy++) {
+    iyoff = mxns*jy;
+    for (jx = 0; jx < mx; jx++) {
+      ic = iyoff + ns*jx;
+      v_prod(xd+ic, cof1, zd+ic, ns); /* x[ic+i] = cof1[i]z[ic+i] */
+    }
+  }
+  N_VConst(ZERO, z);
+  
+  /* Looping point for iterations. */
+  
+  for (iter=1; iter <= ITMAX; iter++) {
+    
+    /* Calculate (D-inverse)*U*x if not the first iteration. */
+    
+    if (iter > 1) {
+      for (jy=0; jy < my; jy++) {
+        iyoff = mxns*jy;
+        for (jx=0; jx < mx; jx++) { /* order of loops matters */
+          ic = iyoff + ns*jx;
+          x_loc = (jx == 0) ? 0 : ((jx == mx-1) ? 2 : 1);
+          y_loc = (jy == 0) ? 0 : ((jy == my-1) ? 2 : 1);
+          switch (3*y_loc+x_loc) {
+          case 0 : 
+            /* jx == 0, jy == 0 */
+            /* x[ic+i] = beta2[i]x[ic+ns+i] + gam2[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta2, xd+ic+ns, gam2, xd+ic+mxns, ns);
+            break;
+          case 1 : 
+            /* 1 <= jx <= mx-2, jy == 0 */
+            /* x[ic+i] = beta[i]x[ic+ns+i] + gam2[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta, xd+ic+ns, gam2, xd+ic+mxns, ns);
+            break;
+          case 2 : 
+            /* jx == mx-1, jy == 0 */
+            /* x[ic+i] = gam2[i]x[ic+mxns+i] */
+            v_prod(xd+ic, gam2, xd+ic+mxns, ns);
+            break;
+          case 3 : 
+            /* jx == 0, 1 <= jy <= my-2 */
+            /* x[ic+i] = beta2[i]x[ic+ns+i] + gam[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta2, xd+ic+ns, gam, xd+ic+mxns, ns);
+            break;
+          case 4 : 
+            /* 1 <= jx <= mx-2, 1 <= jy <= my-2 */
+            /* x[ic+i] = beta[i]x[ic+ns+i] + gam[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta, xd+ic+ns, gam, xd+ic+mxns, ns);
+            break;
+          case 5 : 
+            /* jx == mx-1, 1 <= jy <= my-2 */
+            /* x[ic+i] = gam[i]x[ic+mxns+i] */
+            v_prod(xd+ic, gam, xd+ic+mxns, ns);
+            break;
+          case 6 : 
+            /* jx == 0, jy == my-1 */
+            /* x[ic+i] = beta2[i]x[ic+ns+i] */
+            v_prod(xd+ic, beta2, xd+ic+ns, ns);
+            break;
+          case 7 : 
+            /* 1 <= jx <= mx-2, jy == my-1 */
+            /* x[ic+i] = beta[i]x[ic+ns+i] */
+            v_prod(xd+ic, beta, xd+ic+ns, ns);
+            break;
+          case 8 : 
+            /* jx == mx-1, jy == my-1 */
+            /* x[ic+i] = 0.0 */
+            v_zero(xd+ic, ns);
+            break;
+          }
+        }
+      }
+    }  /* end if (iter > 1) */
+    
+    /* Overwrite x with [(I - (D-inverse)*L)-inverse]*x. */
+    
+    for (jy=0; jy < my; jy++) {
+      iyoff = mxns*jy;
+      for (jx=0; jx < mx; jx++) { /* order of loops matters */
+        ic = iyoff + ns*jx;
+        x_loc = (jx == 0) ? 0 : ((jx == mx-1) ? 2 : 1);
+        y_loc = (jy == 0) ? 0 : ((jy == my-1) ? 2 : 1);
+        switch (3*y_loc+x_loc) {
+        case 0 : 
+          /* jx == 0, jy == 0 */
+          break;
+        case 1 : 
+          /* 1 <= jx <= mx-2, jy == 0 */
+          /* x[ic+i] += beta[i]x[ic-ns+i] */
+          v_inc_by_prod(xd+ic, beta, xd+ic-ns, ns);
+          break;
+        case 2 : 
+          /* jx == mx-1, jy == 0 */
+          /* x[ic+i] += beta2[i]x[ic-ns+i] */
+          v_inc_by_prod(xd+ic, beta2, xd+ic-ns, ns);
+          break;
+        case 3 : 
+          /* jx == 0, 1 <= jy <= my-2 */
+          /* x[ic+i] += gam[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, gam, xd+ic-mxns, ns);
+          break;
+        case 4 : 
+          /* 1 <= jx <= mx-2, 1 <= jy <= my-2 */
+          /* x[ic+i] += beta[i]x[ic-ns+i] + gam[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam, xd+ic-mxns, ns);
+          break;
+        case 5 : 
+          /* jx == mx-1, 1 <= jy <= my-2 */
+          /* x[ic+i] += beta2[i]x[ic-ns+i] + gam[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta2, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam, xd+ic-mxns, ns);
+          break;
+        case 6 : 
+          /* jx == 0, jy == my-1 */
+          /* x[ic+i] += gam2[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, gam2, xd+ic-mxns, ns);
+          break;
+        case 7 : 
+          /* 1 <= jx <= mx-2, jy == my-1 */
+          /* x[ic+i] += beta[i]x[ic-ns+i] + gam2[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam2, xd+ic-mxns, ns);
+          break;
+        case 8 : 
+          /* jx == mx-1, jy == my-1 */
+          /* x[ic+i] += beta2[i]x[ic-ns+i] + gam2[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta2, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam2, xd+ic-mxns, ns);
+          break;
+        }
+      }
+    }
+    
+    /* Add increment x to z : z <- z+x */
+    
+    N_VLinearSum(ONE, z, ONE, x, z);
+    
+  }
+}
+
+static void v_inc_by_prod(realtype u[], realtype v[], realtype w[], int n)
+{
+  int i;  
+  for (i=0; i < n; i++) u[i] += v[i]*w[i];
+}
+
+static void v_sum_prods(realtype u[], realtype p[], realtype q[],
+                        realtype v[], realtype w[], int n)
+{
+  int i;  
+  for (i=0; i < n; i++) u[i] = p[i]*q[i] + v[i]*w[i];
+}
+
+static void v_prod(realtype u[], realtype v[], realtype w[], int n)
+{ 
+  int i;
+  for (i=0; i < n; i++) u[i] = v[i]*w[i];
+}
+
+static void v_zero(realtype u[], int n)
+{
+  int i;  
+  for (i=0; i < n; i++) u[i] = ZERO;
+}
+
+/* Check function return value...
+     opt == 0 means SUNDIALS function allocates memory so check if
+              returned NULL pointer
+     opt == 1 means SUNDIALS function returns a flag so check if
+              flag >= 0
+     opt == 2 means function allocates memory so check if returned
+              NULL pointer */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+              funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/cvdemk.out b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdemk.out
new file mode 100644
index 0000000..ca19090
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdemk.out
@@ -0,0 +1,645 @@
+
+
+Demonstration program for CVODE - CVSPGMR linear solver
+
+Food web problem with ns species, ns = 6
+Predator-prey interaction and diffusion on a 2-D square
+
+Matrix parameters: a = 1   e = 1e+04   g = 5e-07
+b parameter = 1
+Diffusion coefficients: Dprey = 1   Dpred = 0.5
+Rate parameter alpha = 1
+
+Mesh dimensions (mx,my) are 6, 6.  Total system size is neq = 216 
+
+Tolerances: itol = CV_SS,  reltol = 1e-05, abstol = 1e-05 
+
+Preconditioning uses a product of:
+  (1) Gauss-Seidel iterations with itmax = 5 iterations, and
+  (2) interaction-only block-diagonal matrix with block-grouping
+  Number of diagonal block groups = ngrp = 4  (ngx by ngy, ngx = 2, ngy = 2)
+
+
+----------------------------------------------------------------------------
+
+
+Preconditioner type is           jpre = PREC_LEFT
+
+Gram-Schmidt method type is    gstype = MODIFIED_GS
+
+
+c values at t = 0:
+
+Species 1
+10        10        10        10        10        10        
+10        10.1678   10.3775   10.3775   10.1678   10        
+10        10.3775   10.8493   10.8493   10.3775   10        
+10        10.3775   10.8493   10.8493   10.3775   10        
+10        10.1678   10.3775   10.3775   10.1678   10        
+10        10        10        10        10        10        
+
+Species 2
+10        10        10        10        10        10        
+10        10.3355   10.755    10.755    10.3355   10        
+10        10.755    11.6987   11.6987   10.755    10        
+10        10.755    11.6987   11.6987   10.755    10        
+10        10.3355   10.755    10.755    10.3355   10        
+10        10        10        10        10        10        
+
+Species 3
+10        10        10        10        10        10        
+10        10.5033   11.1325   11.1325   10.5033   10        
+10        11.1325   12.548    12.548    11.1325   10        
+10        11.1325   12.548    12.548    11.1325   10        
+10        10.5033   11.1325   11.1325   10.5033   10        
+10        10        10        10        10        10        
+
+Species 4
+10        10        10        10        10        10        
+10        10.6711   11.5099   11.5099   10.6711   10        
+10        11.5099   13.3974   13.3974   11.5099   10        
+10        11.5099   13.3974   13.3974   11.5099   10        
+10        10.6711   11.5099   11.5099   10.6711   10        
+10        10        10        10        10        10        
+
+Species 5
+10        10        10        10        10        10        
+10        10.8389   11.8874   11.8874   10.8389   10        
+10        11.8874   14.2467   14.2467   11.8874   10        
+10        11.8874   14.2467   14.2467   11.8874   10        
+10        10.8389   11.8874   11.8874   10.8389   10        
+10        10        10        10        10        10        
+
+Species 6
+10        10        10        10        10        10        
+10        11.0066   12.2649   12.2649   11.0066   10        
+10        12.2649   15.0961   15.0961   12.2649   10        
+10        12.2649   15.0961   15.0961   12.2649   10        
+10        11.0066   12.2649   12.2649   11.0066   10        
+10        10        10        10        10        10        
+
+t =   1.00e-08  nst = 3  nfe = 9  nni = 6  qu = 2  hu =    1.76e-08
+
+t =   1.00e-07  nst = 7  nfe = 13  nni = 10  qu = 2  hu =    4.78e-08
+
+t =   1.00e-06  nst = 15  nfe = 23  nni = 20  qu = 3  hu =    1.50e-07
+
+c values at t = 1e-06:
+
+Species 1
+9.99991   9.99992   9.99993   9.99993   9.99993   9.99992   
+9.99992   10.1677   10.3774   10.3774   10.1677   9.99993   
+9.99993   10.3774   10.8492   10.8492   10.3774   9.99993   
+9.99993   10.3774   10.8492   10.8492   10.3774   9.99993   
+9.99992   10.1677   10.3774   10.3774   10.1677   9.99992   
+9.99991   9.99992   9.99993   9.99993   9.99992   9.99991   
+
+Species 2
+9.99991   9.99993   9.99995   9.99995   9.99993   9.99992   
+9.99993   10.3355   10.7549   10.7549   10.3355   9.99993   
+9.99995   10.7549   11.6985   11.6985   10.7549   9.99995   
+9.99995   10.7549   11.6985   11.6985   10.7549   9.99995   
+9.99993   10.3355   10.7549   10.7549   10.3355   9.99993   
+9.99991   9.99993   9.99995   9.99995   9.99993   9.99991   
+
+Species 3
+9.99991   9.99994   9.99997   9.99997   9.99994   9.99992   
+9.99994   10.5032   11.1323   11.1323   10.5032   9.99994   
+9.99997   11.1323   12.5478   12.5478   11.1323   9.99997   
+9.99997   11.1323   12.5478   12.5478   11.1323   9.99997   
+9.99994   10.5032   11.1323   11.1323   10.5032   9.99994   
+9.99991   9.99994   9.99997   9.99997   9.99994   9.99991   
+
+Species 4
+13.499    13.499    13.499    13.499    13.499    13.4989   
+13.499    14.5506   15.8932   15.8932   14.5506   13.499    
+13.499    15.8932   19.0308   19.0308   15.8932   13.499    
+13.499    15.8932   19.0308   19.0308   15.8932   13.499    
+13.499    14.5506   15.8932   15.8932   14.5506   13.499    
+13.499    13.499    13.499    13.499    13.499    13.499    
+
+Species 5
+13.499    13.499    13.499    13.499    13.499    13.4989   
+13.499    14.7794   16.4145   16.4145   14.7794   13.499    
+13.499    16.4145   20.2373   20.2373   16.4145   13.499    
+13.499    16.4145   20.2373   20.2373   16.4145   13.499    
+13.499    14.7794   16.4145   16.4145   14.7794   13.499    
+13.499    13.499    13.499    13.499    13.499    13.499    
+
+Species 6
+13.499    13.499    13.499    13.499    13.499    13.4989   
+13.499    15.0082   16.9357   16.9357   15.0082   13.499    
+13.499    16.9357   21.4437   21.4437   16.9357   13.499    
+13.499    16.9357   21.4437   21.4437   16.9357   13.499    
+13.499    15.0082   16.9357   16.9357   15.0082   13.499    
+13.499    13.499    13.499    13.499    13.499    13.499    
+
+t =   1.00e-05  nst = 34  nfe = 46  nni = 43  qu = 5  hu =    6.11e-07
+
+t =   1.00e-04  nst = 116  nfe = 136  nni = 133  qu = 5  hu =    5.51e-06
+
+t =   1.00e-03  nst = 135  nfe = 155  nni = 152  qu = 2  hu =    3.53e-04
+
+c values at t = 0.001:
+
+Species 1
+9.90702   9.91664   9.92836   9.93033   9.92253   9.91674   
+9.91472   10.0746   10.2769   10.2785   10.0795   9.92253   
+9.92446   10.2748   10.7181   10.7194   10.2785   9.93033   
+9.92445   10.2744   10.7173   10.7181   10.2769   9.92836   
+9.91469   10.0734   10.2744   10.2748   10.0746   9.91664   
+9.90697   9.91469   9.92445   9.92446   9.91472   9.90702   
+
+Species 2
+9.90741   9.92474   9.94623   9.9482    9.93064   9.91713   
+9.92282   10.2412   10.644    10.6457   10.2461   9.93064   
+9.94232   10.6419   11.5267   11.5281   10.6457   9.9482    
+9.94231   10.6415   11.5258   11.5267   10.644    9.94623   
+9.92279   10.24     10.6415   10.6419   10.2412   9.92474   
+9.90737   9.92279   9.94231   9.94232   9.92282   9.90741   
+
+Species 3
+9.90781   9.93284   9.96408   9.96606   9.93874   9.91752   
+9.93092   10.4078   11.0109   11.0127   10.4127   9.93874   
+9.96017   11.0088   12.3339   12.3354   11.0127   9.96606   
+9.96016   11.0083   12.3329   12.3339   11.0109   9.96408   
+9.93089   10.4065   11.0083   11.0088   10.4078   9.93284   
+9.90776   9.93089   9.96016   9.96017   9.93092   9.90781   
+
+Species 4
+297231    297749    298393    298451    297925    297520    
+297692    307244    319327    319378    307390    297925    
+298276    319264    345799    345840    319378    298451    
+298276    319252    345771    345799    319327    298393    
+297691    307208    319252    319264    307244    297749    
+297229    297691    298276    298276    297692    297231    
+
+Species 5
+297231    297749    298393    298451    297925    297520    
+297692    307244    319327    319378    307390    297925    
+298276    319264    345799    345840    319378    298451    
+298276    319252    345771    345799    319327    298393    
+297691    307208    319252    319264    307244    297749    
+297229    297691    298276    298276    297692    297231    
+
+Species 6
+297231    297749    298393    298451    297925    297520    
+297692    307244    319327    319378    307390    297925    
+298276    319264    345799    345840    319378    298451    
+298276    319252    345771    345799    319327    298393    
+297691    307208    319252    319264    307244    297749    
+297229    297691    298276    298276    297692    297231    
+
+t =   1.00e-02  nst = 143  nfe = 165  nni = 162  qu = 3  hu =    1.37e-03
+
+t =   1.00e-01  nst = 165  nfe = 190  nni = 187  qu = 5  hu =    6.02e-03
+
+t =   1.00e+00  nst = 235  nfe = 264  nni = 261  qu = 4  hu =    2.49e-02
+
+c values at t = 1:
+
+Species 1
+1.58853   1.59926   1.62153   1.64766   1.67038   1.68151   
+1.58535   1.59505   1.61549   1.63954   1.66035   1.67038   
+1.57758   1.58549   1.60241   1.62237   1.63954   1.64766   
+1.56822   1.57414   1.58708   1.60241   1.61549   1.62153   
+1.5605    1.56465   1.57414   1.58549   1.59505   1.59926   
+1.55734   1.5605    1.56822   1.57758   1.58535   1.58853   
+
+Species 2
+1.59068   1.60143   1.62373   1.64989   1.67263   1.68377   
+1.5875    1.59721   1.61768   1.64175   1.66259   1.67263   
+1.57973   1.58764   1.60458   1.62456   1.64175   1.64989   
+1.57036   1.57628   1.58923   1.60458   1.61768   1.62373   
+1.56263   1.56678   1.57628   1.58764   1.59721   1.60143   
+1.55947   1.56263   1.57036   1.57973   1.5875    1.59068   
+
+Species 3
+1.59272   1.60347   1.6258    1.65199   1.67476   1.68591   
+1.58953   1.59926   1.61975   1.64384   1.6647    1.67476   
+1.58175   1.58968   1.60664   1.62664   1.64384   1.65199   
+1.57237   1.5783    1.59127   1.60664   1.61975   1.6258    
+1.56464   1.56879   1.5783    1.58968   1.59926   1.60347   
+1.56147   1.56464   1.57237   1.58175   1.58953   1.59272   
+
+Species 4
+47718.9   48040.8   48709.6   49494     50176.1   50509.9   
+47623.3   47914.5   48528.3   49250.2   49874.9   50176.1   
+47390.2   47627.5   48135.5   48734.6   49250.2   49494     
+47109     47286.6   47675.1   48135.5   48528.3   48709.6   
+46877.1   47001.6   47286.6   47627.5   47914.5   48040.8   
+46782.3   46877.1   47109     47390.2   47623.3   47718.9   
+
+Species 5
+47718.9   48040.8   48709.6   49494     50176.1   50509.9   
+47623.3   47914.5   48528.3   49250.2   49874.9   50176.1   
+47390.2   47627.5   48135.5   48734.6   49250.2   49494     
+47109     47286.6   47675.1   48135.5   48528.3   48709.6   
+46877.1   47001.6   47286.6   47627.5   47914.5   48040.8   
+46782.3   46877.1   47109     47390.2   47623.3   47718.9   
+
+Species 6
+47718.9   48040.8   48709.6   49494     50176.1   50509.9   
+47623.3   47914.5   48528.3   49250.2   49874.9   50176.1   
+47390.2   47627.5   48135.5   48734.6   49250.2   49494     
+47109     47286.6   47675.1   48135.5   48528.3   48709.6   
+46877.1   47001.6   47286.6   47627.5   47914.5   48040.8   
+46782.3   46877.1   47109     47390.2   47623.3   47718.9   
+
+t =   2.00e+00  nst = 272  nfe = 304  nni = 301  qu = 3  hu =    3.80e-02
+
+t =   3.00e+00  nst = 288  nfe = 321  nni = 318  qu = 3  hu =    6.58e-02
+
+t =   4.00e+00  nst = 303  nfe = 337  nni = 334  qu = 3  hu =    6.58e-02
+
+c values at t = 4:
+
+Species 1
+1.19535   1.20368   1.2211    1.24158   1.25935   1.268     
+1.19281   1.20035   1.21636   1.23523   1.25154   1.25935   
+1.18657   1.19274   1.20603   1.22174   1.23523   1.24158   
+1.17905   1.18368   1.1939    1.20603   1.21636   1.2211    
+1.17285   1.17613   1.18368   1.19274   1.20035   1.20368   
+1.17033   1.17285   1.17905   1.18657   1.19281   1.19535   
+
+Species 2
+1.19539   1.20372   1.22113   1.24161   1.25939   1.26804   
+1.19284   1.20039   1.2164    1.23527   1.25158   1.25939   
+1.18661   1.19277   1.20606   1.22177   1.23527   1.24161   
+1.17908   1.18372   1.19393   1.20606   1.2164    1.22113   
+1.17288   1.17616   1.18372   1.19277   1.20039   1.20372   
+1.17036   1.17288   1.17908   1.18661   1.19284   1.19539   
+
+Species 3
+1.19542   1.20375   1.22117   1.24164   1.25942   1.26807   
+1.19287   1.20042   1.21643   1.2353    1.25161   1.25942   
+1.18664   1.1928    1.20609   1.2218    1.2353    1.24164   
+1.17911   1.18375   1.19396   1.20609   1.21643   1.22117   
+1.17291   1.17619   1.18375   1.1928    1.20042   1.20375   
+1.17039   1.17291   1.17911   1.18664   1.19287   1.19542   
+
+Species 4
+35860.9   36110.3   36632.6   37246.6   37779.6   38038.8   
+35784.3   36010.5   36490.5   37056.4   37545.5   37779.6   
+35597.3   35782.1   36180.6   36651.7   37056.4   37246.6   
+35371.5   35510.5   35816.8   36180.6   36490.5   36632.6   
+35185.5   35283.9   35510.5   35782.1   36010.5   36110.3   
+35109.8   35185.5   35371.5   35597.3   35784.3   35860.9   
+
+Species 5
+35860.9   36110.2   36632.6   37246.5   37779.6   38038.8   
+35784.2   36010.6   36490.5   37056.5   37545.4   37779.6   
+35597.3   35782.1   36180.7   36651.7   37056.5   37246.5   
+35371.5   35510.5   35816.8   36180.7   36490.5   36632.6   
+35185.5   35283.9   35510.5   35782.1   36010.6   36110.2   
+35109.8   35185.5   35371.5   35597.3   35784.2   35860.9   
+
+Species 6
+35860.9   36110.2   36632.6   37246.5   37779.6   38038.7   
+35784.2   36010.6   36490.4   37056.5   37545.4   37779.6   
+35597.4   35782     36180.7   36651.7   37056.5   37246.5   
+35371.5   35510.5   35816.7   36180.7   36490.4   36632.6   
+35185.6   35283.9   35510.5   35782     36010.6   36110.2   
+35109.8   35185.6   35371.5   35597.4   35784.2   35860.9   
+
+t =   5.00e+00  nst = 317  nfe = 353  nni = 350  qu = 2  hu =    9.90e-02
+
+t =   6.00e+00  nst = 324  nfe = 361  nni = 358  qu = 3  hu =    1.73e-01
+
+t =   7.00e+00  nst = 330  nfe = 367  nni = 364  qu = 3  hu =    1.73e-01
+
+c values at t = 7:
+
+Species 1
+1.18854   1.19682   1.21415   1.23453   1.25221   1.26082   
+1.186     1.19351   1.20944   1.22822   1.24444   1.25221   
+1.1798    1.18593   1.19916   1.21479   1.22822   1.23453   
+1.17231   1.17692   1.18708   1.19916   1.20944   1.21415   
+1.16614   1.1694    1.17692   1.18593   1.19351   1.19682   
+1.16362   1.16614   1.17231   1.1798    1.186     1.18854   
+
+Species 2
+1.18854   1.19683   1.21415   1.23453   1.25222   1.26082   
+1.186     1.19351   1.20944   1.22822   1.24444   1.25222   
+1.1798    1.18593   1.19916   1.21479   1.22822   1.23453   
+1.17231   1.17692   1.18709   1.19916   1.20944   1.21415   
+1.16614   1.1694    1.17692   1.18593   1.19351   1.19683   
+1.16362   1.16614   1.17231   1.1798    1.186     1.18854   
+
+Species 3
+1.18854   1.19683   1.21415   1.23453   1.25222   1.26082   
+1.18601   1.19351   1.20944   1.22822   1.24444   1.25222   
+1.1798    1.18594   1.19916   1.21479   1.22822   1.23453   
+1.17231   1.17692   1.18709   1.19916   1.20944   1.21415   
+1.16614   1.1694    1.17692   1.18594   1.19351   1.19683   
+1.16363   1.16614   1.17231   1.1798    1.18601   1.18854   
+
+Species 4
+35655.3   35903.6   36423.1   37034.1   37564.4   37822.4   
+35579.3   35804.2   36281.9   36844.8   37331.5   37564.4   
+35393.1   35577.1   35973.4   36442.3   36844.8   37034.1   
+35168.4   35306.5   35611.5   35973.4   36281.9   36423.1   
+34983.3   35081.1   35306.5   35577.1   35804.2   35903.6   
+34907.8   34983.3   35168.4   35393.1   35579.3   35655.3   
+
+Species 5
+35655.2   35903.7   36423.1   37034.2   37564.3   37822.4   
+35579.4   35804.2   36282     36844.8   37331.6   37564.3   
+35393     35577.2   35973.3   36442.4   36844.8   37034.2   
+35168.5   35306.5   35611.6   35973.3   36282     36423.1   
+34983.2   35081.2   35306.5   35577.2   35804.2   35903.7   
+34907.9   34983.2   35168.5   35393     35579.4   35655.2   
+
+Species 6
+35655.1   35903.7   36423     37034.3   37564.3   37822.5   
+35579.4   35804.1   36282.1   36844.7   37331.7   37564.3   
+35392.9   35577.2   35973.2   36442.5   36844.7   37034.3   
+35168.5   35306.4   35611.7   35973.2   36282.1   36423     
+34983.1   35081.3   35306.4   35577.2   35804.1   35903.7   
+34908     34983.1   35168.5   35392.9   35579.4   35655.1   
+
+t =   8.00e+00  nst = 336  nfe = 373  nni = 370  qu = 3  hu =    1.73e-01
+
+t =   9.00e+00  nst = 342  nfe = 380  nni = 377  qu = 3  hu =    1.73e-01
+
+t =   1.00e+01  nst = 348  nfe = 386  nni = 383  qu = 3  hu =    1.73e-01
+
+c values at t = 10:
+
+Species 1
+1.18838   1.19667   1.21399   1.23437   1.25205   1.26066   
+1.18585   1.19335   1.20928   1.22805   1.24428   1.25205   
+1.17964   1.18578   1.199     1.21463   1.22805   1.23437   
+1.17215   1.17676   1.18693   1.199     1.20928   1.21399   
+1.16598   1.16925   1.17676   1.18578   1.19335   1.19667   
+1.16347   1.16598   1.17215   1.17964   1.18585   1.18838   
+
+Species 2
+1.18838   1.19667   1.21399   1.23437   1.25205   1.26066   
+1.18585   1.19335   1.20928   1.22805   1.24428   1.25205   
+1.17964   1.18578   1.199     1.21463   1.22805   1.23437   
+1.17215   1.17676   1.18693   1.199     1.20928   1.21399   
+1.16598   1.16925   1.17676   1.18578   1.19335   1.19667   
+1.16347   1.16598   1.17215   1.17964   1.18585   1.18838   
+
+Species 3
+1.18838   1.19667   1.21399   1.23437   1.25205   1.26066   
+1.18585   1.19335   1.20928   1.22805   1.24428   1.25205   
+1.17964   1.18578   1.199     1.21463   1.22805   1.23437   
+1.17215   1.17676   1.18693   1.199     1.20928   1.21399   
+1.16598   1.16925   1.17676   1.18578   1.19335   1.19667   
+1.16347   1.16598   1.17215   1.17964   1.18585   1.18838   
+
+Species 4
+35650.8   35898.7   36418.4   37029.2   37559.4   37817.5   
+35574.4   35799.6   36277     36840     37326.7   37559.4   
+35388.5   35572.2   35968.7   36437.4   36840     37029.2   
+35163.7   35301.9   35606.7   35968.7   36277     36418.4   
+34978.6   35076.5   35301.9   35572.2   35799.6   35898.7   
+34903.3   34978.6   35163.7   35388.5   35574.4   35650.8   
+
+Species 5
+35650.8   35898.7   36418.4   37029.2   37559.4   37817.5   
+35574.4   35799.7   36277     36840.1   37326.6   37559.4   
+35388.5   35572.2   35968.8   36437.4   36840.1   37029.2   
+35163.7   35301.9   35606.7   35968.8   36277     36418.4   
+34978.6   35076.5   35301.9   35572.2   35799.7   35898.7   
+34903.3   34978.6   35163.7   35388.5   35574.4   35650.8   
+
+Species 6
+35650.9   35898.6   36418.5   37029.2   37559.5   37817.4   
+35574.3   35799.7   36277     36840.1   37326.6   37559.5   
+35388.6   35572.2   35968.8   36437.4   36840.1   37029.2   
+35163.6   35301.9   35606.6   35968.8   36277     36418.5   
+34978.6   35076.4   35301.9   35572.2   35799.7   35898.6   
+34903.3   34978.6   35163.6   35388.6   35574.3   35650.9   
+
+
+
+ Final statistics for this run:
+
+ CVode real workspace length           = 2160 
+ CVode integer workspace length        =   10 
+ CVSPGMR real workspace length         = 2206 
+ CVSPGMR integer workspace length      =   10 
+ Number of steps                       =  348 
+ Number of f-s                         =  386 
+ Number of f-s (SPGMR)                 =  565 
+ Number of f-s (TOTAL)                 =  951 
+ Number of setups                      =   44 
+ Number of nonlinear iterations        =  383 
+ Number of linear iterations           =  565 
+ Number of preconditioner evaluations  =   44 
+ Number of preconditioner solves       =  932 
+ Number of error test failures         =    1 
+ Number of nonlinear conv. failures    =    0 
+ Number of linear convergence failures =    0 
+ Average Krylov subspace dimension     = 1.475 
+
+
+----------------------------------------------------------------------------
+----------------------------------------------------------------------------
+
+
+Preconditioner type is           jpre = PREC_LEFT
+
+Gram-Schmidt method type is    gstype = CLASSICAL_GS
+
+
+t =   1.00e-08  nst = 3  nfe = 9  nni = 6  qu = 2  hu =    1.76e-08
+
+t =   1.00e-07  nst = 7  nfe = 13  nni = 10  qu = 2  hu =    4.78e-08
+
+t =   1.00e-06  nst = 15  nfe = 23  nni = 20  qu = 3  hu =    1.50e-07
+
+t =   1.00e-05  nst = 34  nfe = 46  nni = 43  qu = 5  hu =    6.11e-07
+
+t =   1.00e-04  nst = 116  nfe = 136  nni = 133  qu = 5  hu =    5.51e-06
+
+t =   1.00e-03  nst = 135  nfe = 155  nni = 152  qu = 2  hu =    3.53e-04
+
+t =   1.00e-02  nst = 143  nfe = 165  nni = 162  qu = 3  hu =    1.37e-03
+
+t =   1.00e-01  nst = 165  nfe = 190  nni = 187  qu = 5  hu =    6.02e-03
+
+t =   1.00e+00  nst = 235  nfe = 264  nni = 261  qu = 4  hu =    2.49e-02
+
+t =   2.00e+00  nst = 272  nfe = 304  nni = 301  qu = 3  hu =    3.81e-02
+
+t =   3.00e+00  nst = 288  nfe = 321  nni = 318  qu = 3  hu =    6.59e-02
+
+t =   4.00e+00  nst = 303  nfe = 336  nni = 333  qu = 3  hu =    6.59e-02
+
+t =   5.00e+00  nst = 313  nfe = 348  nni = 345  qu = 3  hu =    1.25e-01
+
+t =   6.00e+00  nst = 321  nfe = 356  nni = 353  qu = 3  hu =    1.25e-01
+
+t =   7.00e+00  nst = 329  nfe = 364  nni = 361  qu = 3  hu =    1.25e-01
+
+t =   8.00e+00  nst = 337  nfe = 373  nni = 370  qu = 3  hu =    1.25e-01
+
+t =   9.00e+00  nst = 345  nfe = 381  nni = 378  qu = 3  hu =    1.25e-01
+
+t =   1.00e+01  nst = 353  nfe = 390  nni = 387  qu = 3  hu =    1.25e-01
+
+
+
+ Final statistics for this run:
+
+ CVode real workspace length           = 2160 
+ CVode integer workspace length        =   10 
+ CVSPGMR real workspace length         = 2206 
+ CVSPGMR integer workspace length      =   10 
+ Number of steps                       =  353 
+ Number of f-s                         =  390 
+ Number of f-s (SPGMR)                 =  581 
+ Number of f-s (TOTAL)                 =  971 
+ Number of setups                      =   43 
+ Number of nonlinear iterations        =  387 
+ Number of linear iterations           =  581 
+ Number of preconditioner evaluations  =   43 
+ Number of preconditioner solves       =  952 
+ Number of error test failures         =    1 
+ Number of nonlinear conv. failures    =    0 
+ Number of linear convergence failures =    0 
+ Average Krylov subspace dimension     = 1.501 
+
+
+----------------------------------------------------------------------------
+----------------------------------------------------------------------------
+
+
+Preconditioner type is           jpre = PREC_RIGHT
+
+Gram-Schmidt method type is    gstype = MODIFIED_GS
+
+
+t =   1.00e-08  nst = 3  nfe = 9  nni = 6  qu = 2  hu =    1.76e-08
+
+t =   1.00e-07  nst = 7  nfe = 13  nni = 10  qu = 2  hu =    4.78e-08
+
+t =   1.00e-06  nst = 15  nfe = 23  nni = 20  qu = 3  hu =    1.50e-07
+
+t =   1.00e-05  nst = 34  nfe = 46  nni = 43  qu = 5  hu =    6.11e-07
+
+t =   1.00e-04  nst = 118  nfe = 137  nni = 134  qu = 5  hu =    6.64e-06
+
+t =   1.00e-03  nst = 138  nfe = 162  nni = 159  qu = 2  hu =    4.17e-04
+
+t =   1.00e-02  nst = 146  nfe = 173  nni = 170  qu = 3  hu =    1.64e-03
+
+t =   1.00e-01  nst = 169  nfe = 199  nni = 196  qu = 5  hu =    9.35e-03
+
+t =   1.00e+00  nst = 207  nfe = 246  nni = 243  qu = 5  hu =    5.18e-02
+
+t =   2.00e+00  nst = 220  nfe = 261  nni = 258  qu = 5  hu =    7.92e-02
+
+t =   3.00e+00  nst = 228  nfe = 270  nni = 267  qu = 5  hu =    1.33e-01
+
+t =   4.00e+00  nst = 234  nfe = 277  nni = 274  qu = 5  hu =    2.04e-01
+
+t =   5.00e+00  nst = 239  nfe = 282  nni = 279  qu = 5  hu =    2.04e-01
+
+t =   6.00e+00  nst = 244  nfe = 287  nni = 284  qu = 5  hu =    2.04e-01
+
+t =   7.00e+00  nst = 257  nfe = 304  nni = 301  qu = 4  hu =    1.79e-01
+
+t =   8.00e+00  nst = 261  nfe = 308  nni = 305  qu = 3  hu =    3.21e-01
+
+t =   9.00e+00  nst = 264  nfe = 311  nni = 308  qu = 3  hu =    5.01e-01
+
+t =   1.00e+01  nst = 265  nfe = 312  nni = 309  qu = 3  hu =    8.10e-01
+
+
+
+ Final statistics for this run:
+
+ CVode real workspace length           = 2160 
+ CVode integer workspace length        =   10 
+ CVSPGMR real workspace length         = 2206 
+ CVSPGMR integer workspace length      =   10 
+ Number of steps                       =  265 
+ Number of f-s                         =  312 
+ Number of f-s (SPGMR)                 =  594 
+ Number of f-s (TOTAL)                 =  906 
+ Number of setups                      =   47 
+ Number of nonlinear iterations        =  309 
+ Number of linear iterations           =  594 
+ Number of preconditioner evaluations  =   47 
+ Number of preconditioner solves       =  867 
+ Number of error test failures         =    3 
+ Number of nonlinear conv. failures    =    1 
+ Number of linear convergence failures =   39 
+ Average Krylov subspace dimension     = 1.922 
+
+
+----------------------------------------------------------------------------
+----------------------------------------------------------------------------
+
+
+Preconditioner type is           jpre = PREC_RIGHT
+
+Gram-Schmidt method type is    gstype = CLASSICAL_GS
+
+
+t =   1.00e-08  nst = 3  nfe = 9  nni = 6  qu = 2  hu =    1.76e-08
+
+t =   1.00e-07  nst = 7  nfe = 13  nni = 10  qu = 2  hu =    4.78e-08
+
+t =   1.00e-06  nst = 15  nfe = 23  nni = 20  qu = 3  hu =    1.50e-07
+
+t =   1.00e-05  nst = 34  nfe = 46  nni = 43  qu = 5  hu =    6.11e-07
+
+t =   1.00e-04  nst = 118  nfe = 137  nni = 134  qu = 5  hu =    6.64e-06
+
+t =   1.00e-03  nst = 138  nfe = 162  nni = 159  qu = 2  hu =    4.17e-04
+
+t =   1.00e-02  nst = 146  nfe = 173  nni = 170  qu = 3  hu =    1.64e-03
+
+t =   1.00e-01  nst = 169  nfe = 199  nni = 196  qu = 5  hu =    9.35e-03
+
+t =   1.00e+00  nst = 207  nfe = 246  nni = 243  qu = 5  hu =    5.19e-02
+
+t =   2.00e+00  nst = 221  nfe = 266  nni = 263  qu = 4  hu =    1.24e-01
+
+t =   3.00e+00  nst = 229  nfe = 274  nni = 271  qu = 4  hu =    1.24e-01
+
+t =   4.00e+00  nst = 235  nfe = 281  nni = 278  qu = 4  hu =    2.03e-01
+
+t =   5.00e+00  nst = 240  nfe = 286  nni = 283  qu = 4  hu =    2.03e-01
+
+t =   6.00e+00  nst = 243  nfe = 290  nni = 287  qu = 4  hu =    3.16e-01
+
+t =   7.00e+00  nst = 246  nfe = 293  nni = 290  qu = 4  hu =    3.16e-01
+
+t =   8.00e+00  nst = 250  nfe = 299  nni = 296  qu = 3  hu =    1.21e-01
+
+t =   9.00e+00  nst = 255  nfe = 304  nni = 301  qu = 2  hu =    3.64e-01
+
+t =   1.00e+01  nst = 257  nfe = 306  nni = 303  qu = 2  hu =    3.64e-01
+
+
+
+ Final statistics for this run:
+
+ CVode real workspace length           = 2160 
+ CVode integer workspace length        =   10 
+ CVSPGMR real workspace length         = 2206 
+ CVSPGMR integer workspace length      =   10 
+ Number of steps                       =  257 
+ Number of f-s                         =  306 
+ Number of f-s (SPGMR)                 =  566 
+ Number of f-s (TOTAL)                 =  872 
+ Number of setups                      =   46 
+ Number of nonlinear iterations        =  303 
+ Number of linear iterations           =  566 
+ Number of preconditioner evaluations  =   46 
+ Number of preconditioner solves       =  833 
+ Number of error test failures         =    4 
+ Number of nonlinear conv. failures    =    1 
+ Number of linear convergence failures =   31 
+ Average Krylov subspace dimension     = 1.868 
+
+
+----------------------------------------------------------------------------
+----------------------------------------------------------------------------
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/cvdx.c b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdx.c
new file mode 100644
index 0000000..9c0a5c6
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdx.c
@@ -0,0 +1,369 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:08 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Example problem:
+ * 
+ * The following is a simple example problem, with the coding
+ * needed for its solution by CVODE. The problem is from
+ * chemical kinetics, and consists of the following three rate
+ * equations:         
+ *    dy1/dt = -.04*y1 + 1.e4*y2*y3
+ *    dy2/dt = .04*y1 - 1.e4*y2*y3 - 3.e7*(y2)^2
+ *    dy3/dt = 3.e7*(y2)^2
+ * on the interval from t = 0.0 to t = 4.e10, with initial
+ * conditions: y1 = 1.0, y2 = y3 = 0. The problem is stiff.
+ * While integrating the system, we also use the rootfinding
+ * feature to find the points at which y1 = 1e-4 or at which
+ * y3 = 0.01. This program solves the problem with the BDF method,
+ * Newton iteration with the CVDENSE dense linear solver, and a
+ * user-supplied Jacobian routine.
+ * It uses a scalar relative tolerance and a vector absolute
+ * tolerance. Output is printed in decades from t = .4 to t = 4.e10.
+ * Run statistics (optional outputs) are printed at the end.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+
+/* Header files with a description of contents used in cvdx.c */
+
+#include "sundialstypes.h"   /* definition of type realtype                */
+#include "cvode.h"           /* prototypes for CVode* functions and        */
+                             /* constants CV_BDF, CV_NEWTON, CV_SV,        */
+                             /* CV_NORMAL, CV_SUCCESS, and CV_ROOT_RETURN  */
+#include "cvdense.h"         /* prototype for CVDense                      */
+#include "nvector_serial.h"  /* definitions of type N_Vector, macro        */
+                             /* NV_Ith_S, and prototypes for N_VNew_Serial */
+                             /* and N_VDestroy                             */
+#include "dense.h"           /* definition of type DenseMat and macro      */
+                             /* DENSE_ELEM                                 */
+
+/* User-defined vector and matrix accessor macros: Ith, IJth */
+
+/* These macros are defined in order to write code which exactly matches
+   the mathematical problem description given above.
+
+   Ith(v,i) references the ith component of the vector v, where i is in
+   the range [1..NEQ] and NEQ is defined below. The Ith macro is defined
+   using the N_VIth macro in nvector.h. N_VIth numbers the components of
+   a vector starting from 0.
+
+   IJth(A,i,j) references the (i,j)th element of the dense matrix A, where
+   i and j are in the range [1..NEQ]. The IJth macro is defined using the
+   DENSE_ELEM macro in dense.h. DENSE_ELEM numbers rows and columns of a
+   dense matrix starting from 0. */
+
+#define Ith(v,i)    NV_Ith_S(v,i-1)       /* Ith numbers components 1..NEQ */
+#define IJth(A,i,j) DENSE_ELEM(A,i-1,j-1) /* IJth numbers rows,cols 1..NEQ */
+
+
+/* Problem Constants */
+
+#define NEQ   3                /* number of equations  */
+#define Y1    RCONST(1.0)      /* initial y components */
+#define Y2    RCONST(0.0)
+#define Y3    RCONST(0.0)
+#define RTOL  RCONST(1.0e-4)   /* scalar relative tolerance            */
+#define ATOL1 RCONST(1.0e-8)   /* vector absolute tolerance components */
+#define ATOL2 RCONST(1.0e-14)
+#define ATOL3 RCONST(1.0e-6)
+#define T0    RCONST(0.0)      /* initial time           */
+#define T1    RCONST(0.4)      /* first output time      */
+#define TMULT RCONST(10.0)     /* output time factor     */
+#define NOUT  12               /* number of output times */
+
+
+/* Functions Called by the Solver */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+
+static void g(realtype t, N_Vector y, realtype *gout, void *g_data);
+
+static void Jac(long int N, DenseMat J, realtype t,
+                N_Vector y, N_Vector fy, void *jac_data,
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/* Private functions to output results */
+
+static void PrintOutput(realtype t, realtype y1, realtype y2, realtype y3);
+static void PrintRootInfo(int root_f1, int root_f2);
+
+/* Private function to print final statistics */
+
+static void PrintFinalStats(void *cvode_mem);
+
+/* Private function to check function return values */
+
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+
+/*
+ *-------------------------------
+ * Main Program
+ *-------------------------------
+ */
+
+int main()
+{
+  realtype reltol, t, tout;
+  N_Vector y, abstol;
+  void *cvode_mem;
+  int flag, flagr, iout;
+  int rootsfound[2];
+
+  y = abstol = NULL;
+  cvode_mem = NULL;
+
+  /* Create serial vector of length NEQ for I.C. and abstol */
+  y = N_VNew_Serial(NEQ);
+  if (check_flag((void *)y, "N_VNew_Serial", 0)) return(1);
+  abstol = N_VNew_Serial(NEQ); 
+  if (check_flag((void *)abstol, "N_VNew_Serial", 0)) return(1);
+
+  /* Initialize y */
+  Ith(y,1) = Y1;
+  Ith(y,2) = Y2;
+  Ith(y,3) = Y3;
+
+  /* Set the scalar relative tolerance */
+  reltol = RTOL;
+  /* Set the vector absolute tolerance */
+  Ith(abstol,1) = ATOL1;
+  Ith(abstol,2) = ATOL2;
+  Ith(abstol,3) = ATOL3;
+
+  /* 
+     Call CVodeCreate to create the solver memory:
+     
+     CV_BDF     specifies the Backward Differentiation Formula
+     CV_NEWTON  specifies a Newton iteration
+
+     A pointer to the integrator problem memory is returned and stored in cvode_mem.
+  */
+
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if (check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+  
+  /* 
+     Call CVodeMalloc to initialize the integrator memory: 
+     
+     cvode_mem is the pointer to the integrator memory returned by CVodeCreate
+     f         is the user's right hand side function in y'=f(t,y)
+     T0        is the initial time
+     y         is the initial dependent variable vector
+     CV_SV     specifies scalar relative and vector absolute tolerances
+     &reltol   is a pointer to the scalar relative tolerance
+     abstol    is the absolute tolerance vector
+  */
+
+  flag = CVodeMalloc(cvode_mem, f, T0, y, CV_SV, reltol, abstol);
+  if (check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  /* Call CVodeRootInit to specify the root function g with 2 components */
+  flag = CVodeRootInit(cvode_mem, 2, g, NULL);
+  if (check_flag(&flag, "CVodeRootInit", 1)) return(1);
+
+  /* Call CVDense to specify the CVDENSE dense linear solver */
+  flag = CVDense(cvode_mem, NEQ);
+  if (check_flag(&flag, "CVDense", 1)) return(1);
+
+  /* Set the Jacobian routine to Jac (user-supplied) */
+  flag = CVDenseSetJacFn(cvode_mem, Jac, NULL);
+  if (check_flag(&flag, "CVDenseSetJacFn", 1)) return(1);
+
+  /* In loop, call CVode, print results, and test for error.
+     Break out of loop when NOUT preset output times have been reached.  */
+  printf(" \n3-species kinetics problem\n\n");
+
+  iout = 0;  tout = T1;
+  while(1) {
+    flag = CVode(cvode_mem, tout, y, &t, CV_NORMAL);
+    PrintOutput(t, Ith(y,1), Ith(y,2), Ith(y,3));
+
+    if (flag == CV_ROOT_RETURN) {
+      flagr = CVodeGetRootInfo(cvode_mem, rootsfound);
+      check_flag(&flagr, "CVodeGetRootInfo", 1);
+      PrintRootInfo(rootsfound[0],rootsfound[1]);
+    }
+
+    if (check_flag(&flag, "CVode", 1)) break;
+    if (flag == CV_SUCCESS) {
+      iout++;
+      tout *= TMULT;
+    }
+
+    if (iout == NOUT) break;
+  }
+
+  /* Print some final statistics */
+  PrintFinalStats(cvode_mem);
+
+  /* Free y vector */
+  N_VDestroy_Serial(y);
+
+  /* Free integrator memory */
+  CVodeFree(cvode_mem);
+
+  return(0);
+}
+
+
+/*
+ *-------------------------------
+ * Functions called by the solver
+ *-------------------------------
+ */
+
+/*
+ * f routine. Compute function f(t,y). 
+ */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data)
+{
+  realtype y1, y2, y3, yd1, yd3;
+
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+
+  yd1 = Ith(ydot,1) = RCONST(-0.04)*y1 + RCONST(1.0e4)*y2*y3;
+  yd3 = Ith(ydot,3) = RCONST(3.0e7)*y2*y2;
+        Ith(ydot,2) = -yd1 - yd3;
+}
+
+/*
+ * g routine. Compute functions g_i(t,y) for i = 0,1. 
+ */
+
+static void g(realtype t, N_Vector y, realtype *gout, void *g_data)
+{
+  realtype y1, y3;
+
+  y1 = Ith(y,1); y3 = Ith(y,3);
+  gout[0] = y1 - RCONST(0.0001);
+  gout[1] = y3 - RCONST(0.01);
+}
+
+/*
+ * Jacobian routine. Compute J(t,y) = df/dy. *
+ */
+
+static void Jac(long int N, DenseMat J, realtype t,
+                N_Vector y, N_Vector fy, void *jac_data,
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  realtype y1, y2, y3;
+
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+
+  IJth(J,1,1) = RCONST(-0.04);
+  IJth(J,1,2) = RCONST(1.0e4)*y3;
+  IJth(J,1,3) = RCONST(1.0e4)*y2;
+  IJth(J,2,1) = RCONST(0.04); 
+  IJth(J,2,2) = RCONST(-1.0e4)*y3-RCONST(6.0e7)*y2;
+  IJth(J,2,3) = RCONST(-1.0e4)*y2;
+  IJth(J,3,2) = RCONST(6.0e7)*y2;
+}
+
+/*
+ *-------------------------------
+ * Private helper functions
+ *-------------------------------
+ */
+
+static void PrintOutput(realtype t, realtype y1, realtype y2, realtype y3)
+{
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("At t = %0.4Le      y =%14.6Le  %14.6Le  %14.6Le\n", t, y1, y2, y3);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("At t = %0.4le      y =%14.6le  %14.6le  %14.6le\n", t, y1, y2, y3);
+#else
+  printf("At t = %0.4e      y =%14.6e  %14.6e  %14.6e\n", t, y1, y2, y3);
+#endif
+
+  return;
+}
+
+static void PrintRootInfo(int root_f1, int root_f2)
+{
+  printf("    rootsfound[] = %3d %3d\n", root_f1, root_f2);
+
+  return;
+}
+
+/* 
+ * Get and print some final statistics
+ */
+
+static void PrintFinalStats(void *cvode_mem)
+{
+  long int nst, nfe, nsetups, njeD, nfeD, nni, ncfn, netf, nge;
+  int flag;
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  flag = CVDenseGetNumJacEvals(cvode_mem, &njeD);
+  check_flag(&flag, "CVDenseGetNumJacEvals", 1);
+  flag = CVDenseGetNumRhsEvals(cvode_mem, &nfeD);
+  check_flag(&flag, "CVDenseGetNumRhsEvals", 1);
+
+  flag = CVodeGetNumGEvals(cvode_mem, &nge);
+  check_flag(&flag, "CVodeGetNumGEvals", 1);
+
+  printf("\nFinal Statistics:\n");
+  printf("nst = %-6ld nfe  = %-6ld nsetups = %-6ld nfeD = %-6ld njeD = %ld\n",
+	 nst, nfe, nsetups, nfeD, njeD);
+  printf("nni = %-6ld ncfn = %-6ld netf = %-6ld nge = %ld\n \n",
+	 nni, ncfn, netf, nge);
+}
+
+/*
+ * Check function return value...
+ *   opt == 0 means SUNDIALS function allocates memory so check if
+ *            returned NULL pointer
+ *   opt == 1 means SUNDIALS function returns a flag so check if
+ *            flag >= 0
+ *   opt == 2 means function allocates memory so check if returned
+ *            NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+	      funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/cvdx.out b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdx.out
new file mode 100644
index 0000000..f88383d
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdx.out
@@ -0,0 +1,24 @@
+ 
+3-species kinetics problem
+
+At t = 2.6391e-01      y =  9.899653e-01    3.470564e-05    1.000000e-02
+    rootsfound[] =   0   1
+At t = 4.0000e-01      y =  9.851641e-01    3.386242e-05    1.480205e-02
+At t = 4.0000e+00      y =  9.055097e-01    2.240338e-05    9.446793e-02
+At t = 4.0000e+01      y =  7.157952e-01    9.183486e-06    2.841956e-01
+At t = 4.0000e+02      y =  4.505420e-01    3.222963e-06    5.494548e-01
+At t = 4.0000e+03      y =  1.831878e-01    8.941319e-07    8.168113e-01
+At t = 4.0000e+04      y =  3.897868e-02    1.621567e-07    9.610212e-01
+At t = 4.0000e+05      y =  4.940023e-03    1.985716e-08    9.950600e-01
+At t = 4.0000e+06      y =  5.165107e-04    2.067097e-09    9.994835e-01
+At t = 2.0807e+07      y =  1.000000e-04    4.000395e-10    9.999000e-01
+    rootsfound[] =   1   0
+At t = 4.0000e+07      y =  5.201457e-05    2.080690e-10    9.999480e-01
+At t = 4.0000e+08      y =  5.207182e-06    2.082883e-11    9.999948e-01
+At t = 4.0000e+09      y =  5.105811e-07    2.042325e-12    9.999995e-01
+At t = 4.0000e+10      y =  4.511312e-08    1.804525e-13    1.000000e-00
+
+Final Statistics:
+nst = 515    nfe  = 754    nsetups = 110    nfeD = 0      njeD = 12
+nni = 751    ncfn = 0      netf = 26     nge = 543
+ 
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/cvdxe.c b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdxe.c
new file mode 100644
index 0000000..1ace7fd
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdxe.c
@@ -0,0 +1,392 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:08 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Example problem:
+ * 
+ * The following is a simple example problem, with the coding
+ * needed for its solution by CVODE. The problem is from
+ * chemical kinetics, and consists of the following three rate
+ * equations:         
+ *    dy1/dt = -.04*y1 + 1.e4*y2*y3
+ *    dy2/dt = .04*y1 - 1.e4*y2*y3 - 3.e7*(y2)^2
+ *    dy3/dt = 3.e7*(y2)^2
+ * on the interval from t = 0.0 to t = 4.e10, with initial
+ * conditions: y1 = 1.0, y2 = y3 = 0. The problem is stiff.
+ * While integrating the system, we also use the rootfinding
+ * feature to find the points at which y1 = 1e-4 or at which
+ * y3 = 0.01. This program solves the problem with the BDF method,
+ * Newton iteration with the CVDENSE dense linear solver, and a
+ * user-supplied Jacobian routine.
+ * It uses a user-supplied function to compute the error weights
+ * required for the WRMS norm calculations.
+ * Output is printed in decades from t = .4 to t = 4.e10.
+ * Run statistics (optional outputs) are printed at the end.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+
+/* Header files with a description of contents used in cvdx.c */
+
+#include "sundialstypes.h"   /* definition of type realtype                */
+#include "cvode.h"           /* prototypes for CVode* functions and        */
+                             /* constants CV_BDF, CV_NEWTON, CV_SV,        */
+                             /* CV_NORMAL, CV_SUCCESS, and CV_ROOT_RETURN  */
+#include "cvdense.h"         /* prototype for CVDense                      */
+#include "nvector_serial.h"  /* definitions of type N_Vector, macro        */
+                             /* NV_Ith_S, and prototypes for N_VNew_Serial */
+                             /* and N_VDestroy                             */
+#include "dense.h"           /* definition of type DenseMat and macro      */
+                             /* DENSE_ELEM                                 */
+#include "sundialsmath.h"    /* definition of ABS                          */
+
+/* User-defined vector and matrix accessor macros: Ith, IJth */
+
+/* These macros are defined in order to write code which exactly matches
+   the mathematical problem description given above.
+
+   Ith(v,i) references the ith component of the vector v, where i is in
+   the range [1..NEQ] and NEQ is defined below. The Ith macro is defined
+   using the N_VIth macro in nvector.h. N_VIth numbers the components of
+   a vector starting from 0.
+
+   IJth(A,i,j) references the (i,j)th element of the dense matrix A, where
+   i and j are in the range [1..NEQ]. The IJth macro is defined using the
+   DENSE_ELEM macro in dense.h. DENSE_ELEM numbers rows and columns of a
+   dense matrix starting from 0. */
+
+#define Ith(v,i)    NV_Ith_S(v,i-1)       /* Ith numbers components 1..NEQ */
+#define IJth(A,i,j) DENSE_ELEM(A,i-1,j-1) /* IJth numbers rows,cols 1..NEQ */
+
+
+/* Problem Constants */
+
+#define NEQ   3                /* number of equations  */
+#define Y1    RCONST(1.0)      /* initial y components */
+#define Y2    RCONST(0.0)
+#define Y3    RCONST(0.0)
+#define RTOL  RCONST(1.0e-4)   /* scalar relative tolerance            */
+#define ATOL1 RCONST(1.0e-8)   /* vector absolute tolerance components */
+#define ATOL2 RCONST(1.0e-14)
+#define ATOL3 RCONST(1.0e-6)
+#define T0    RCONST(0.0)      /* initial time           */
+#define T1    RCONST(0.4)      /* first output time      */
+#define TMULT RCONST(10.0)     /* output time factor     */
+#define NOUT  12               /* number of output times */
+
+
+/* Functions Called by the Solver */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+
+static void g(realtype t, N_Vector y, realtype *gout, void *g_data);
+
+static void Jac(long int N, DenseMat J, realtype t,
+                N_Vector y, N_Vector fy, void *jac_data,
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+static int ewt(N_Vector y, N_Vector w, void *e_data);
+
+/* Private functions to output results */
+
+static void PrintOutput(realtype t, realtype y1, realtype y2, realtype y3);
+static void PrintRootInfo(int root_f1, int root_f2);
+
+/* Private function to print final statistics */
+
+static void PrintFinalStats(void *cvode_mem);
+
+/* Private function to check function return values */
+
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+
+/*
+ *-------------------------------
+ * Main Program
+ *-------------------------------
+ */
+
+int main()
+{
+  realtype t, tout;
+  N_Vector y;
+  void *cvode_mem;
+  int flag, flagr, iout;
+  int rootsfound[2];
+
+  y = NULL;
+  cvode_mem = NULL;
+
+  /* Create serial vector of length NEQ for I.C. */
+  y = N_VNew_Serial(NEQ);
+  if (check_flag((void *)y, "N_VNew_Serial", 0)) return(1);
+
+  /* Initialize y */
+  Ith(y,1) = Y1;
+  Ith(y,2) = Y2;
+  Ith(y,3) = Y3;
+
+  /* 
+     Call CVodeCreate to create the solver memory:
+     
+     CV_BDF     specifies the Backward Differentiation Formula
+     CV_NEWTON  specifies a Newton iteration
+
+     A pointer to the integrator problem memory is returned and stored in cvode_mem.
+  */
+
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if (check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+  
+  /* 
+     Call CVodeMalloc to initialize the integrator memory: 
+     
+     cvode_mem is the pointer to the integrator memory returned by CVodeCreate
+     f         is the user's right hand side function in y'=f(t,y)
+     T0        is the initial time
+     y         is the initial dependent variable vector
+     CV_WF     specifies scalar relative and vector absolute tolerances
+     reltol    not needed (pass 0.0)
+     abstol    not needed (pass NULL)
+  */
+
+  flag = CVodeMalloc(cvode_mem, f, T0, y, CV_WF, 0.0, NULL);
+  if (check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  /* Use private function to compute error weights */
+  flag = CVodeSetEwtFn(cvode_mem, ewt, NULL);
+  if (check_flag(&flag, "CVodeSetEwtFn", 1)) return(1);
+
+  /* Call CVodeRootInit to specify the root function g with 2 components */
+  flag = CVodeRootInit(cvode_mem, 2, g, NULL);
+  if (check_flag(&flag, "CVodeRootInit", 1)) return(1);
+
+  /* Call CVDense to specify the CVDENSE dense linear solver */
+  flag = CVDense(cvode_mem, NEQ);
+  if (check_flag(&flag, "CVDense", 1)) return(1);
+
+  /* Set the Jacobian routine to Jac (user-supplied) */
+  flag = CVDenseSetJacFn(cvode_mem, Jac, NULL);
+  if (check_flag(&flag, "CVDenseSetJacFn", 1)) return(1);
+
+  /* In loop, call CVode, print results, and test for error.
+     Break out of loop when NOUT preset output times have been reached.  */
+  printf(" \n3-species kinetics problem\n\n");
+
+  iout = 0;  tout = T1;
+  while(1) {
+    flag = CVode(cvode_mem, tout, y, &t, CV_NORMAL);
+    PrintOutput(t, Ith(y,1), Ith(y,2), Ith(y,3));
+
+    if (flag == CV_ROOT_RETURN) {
+      flagr = CVodeGetRootInfo(cvode_mem, rootsfound);
+      check_flag(&flagr, "CVodeGetRootInfo", 1);
+      PrintRootInfo(rootsfound[0],rootsfound[1]);
+    }
+
+    if (check_flag(&flag, "CVode", 1)) break;
+    if (flag == CV_SUCCESS) {
+      iout++;
+      tout *= TMULT;
+    }
+
+    if (iout == NOUT) break;
+  }
+
+  /* Print some final statistics */
+  PrintFinalStats(cvode_mem);
+
+  /* Free y vector */
+  N_VDestroy_Serial(y);
+
+  /* Free integrator memory */
+  CVodeFree(cvode_mem);
+
+  return(0);
+}
+
+
+/*
+ *-------------------------------
+ * Functions called by the solver
+ *-------------------------------
+ */
+
+/*
+ * f routine. Compute function f(t,y). 
+ */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data)
+{
+  realtype y1, y2, y3, yd1, yd3;
+
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+
+  yd1 = Ith(ydot,1) = RCONST(-0.04)*y1 + RCONST(1.0e4)*y2*y3;
+  yd3 = Ith(ydot,3) = RCONST(3.0e7)*y2*y2;
+        Ith(ydot,2) = -yd1 - yd3;
+}
+
+/*
+ * g routine. Compute functions g_i(t,y) for i = 0,1. 
+ */
+
+static void g(realtype t, N_Vector y, realtype *gout, void *g_data)
+{
+  realtype y1, y3;
+
+  y1 = Ith(y,1); y3 = Ith(y,3);
+  gout[0] = y1 - RCONST(0.0001);
+  gout[1] = y3 - RCONST(0.01);
+}
+
+/*
+ * Jacobian routine. Compute J(t,y) = df/dy. *
+ */
+
+static void Jac(long int N, DenseMat J, realtype t,
+                N_Vector y, N_Vector fy, void *jac_data,
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  realtype y1, y2, y3;
+
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+
+  IJth(J,1,1) = RCONST(-0.04);
+  IJth(J,1,2) = RCONST(1.0e4)*y3;
+  IJth(J,1,3) = RCONST(1.0e4)*y2;
+  IJth(J,2,1) = RCONST(0.04); 
+  IJth(J,2,2) = RCONST(-1.0e4)*y3-RCONST(6.0e7)*y2;
+  IJth(J,2,3) = RCONST(-1.0e4)*y2;
+  IJth(J,3,2) = RCONST(6.0e7)*y2;
+}
+
+/*
+ * EwtSet function. Computes the error weights at the current solution.
+ */
+
+static int ewt(N_Vector y, N_Vector w, void *e_data)
+{
+  int i;
+  realtype yy, ww, rtol, atol[3];
+
+  rtol    = RTOL;
+  atol[0] = ATOL1;
+  atol[1] = ATOL2;
+  atol[2] = ATOL3;
+
+  for (i=1; i<=3; i++) {
+    yy = Ith(y,i);
+    ww = rtol * ABS(yy) + atol[i-1];  
+    if (ww <= 0.0) return (-1);
+    Ith(w,i) = 1.0/ww;
+  }
+
+  return(0);
+}
+
+/*
+ *-------------------------------
+ * Private helper functions
+ *-------------------------------
+ */
+
+static void PrintOutput(realtype t, realtype y1, realtype y2, realtype y3)
+{
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("At t = %0.4Le      y =%14.6Le  %14.6Le  %14.6Le\n", t, y1, y2, y3);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("At t = %0.4le      y =%14.6le  %14.6le  %14.6le\n", t, y1, y2, y3);
+#else
+  printf("At t = %0.4e      y =%14.6e  %14.6e  %14.6e\n", t, y1, y2, y3);
+#endif
+
+  return;
+}
+
+static void PrintRootInfo(int root_f1, int root_f2)
+{
+  printf("    rootsfound[] = %3d %3d\n", root_f1, root_f2);
+
+  return;
+}
+
+/* 
+ * Get and print some final statistics
+ */
+
+static void PrintFinalStats(void *cvode_mem)
+{
+  long int nst, nfe, nsetups, njeD, nfeD, nni, ncfn, netf, nge;
+  int flag;
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  flag = CVDenseGetNumJacEvals(cvode_mem, &njeD);
+  check_flag(&flag, "CVDenseGetNumJacEvals", 1);
+  flag = CVDenseGetNumRhsEvals(cvode_mem, &nfeD);
+  check_flag(&flag, "CVDenseGetNumRhsEvals", 1);
+
+  flag = CVodeGetNumGEvals(cvode_mem, &nge);
+  check_flag(&flag, "CVodeGetNumGEvals", 1);
+
+  printf("\nFinal Statistics:\n");
+  printf("nst = %-6ld nfe  = %-6ld nsetups = %-6ld nfeD = %-6ld njeD = %ld\n",
+	 nst, nfe, nsetups, nfeD, njeD);
+  printf("nni = %-6ld ncfn = %-6ld netf = %-6ld nge = %ld\n \n",
+	 nni, ncfn, netf, nge);
+}
+
+/*
+ * Check function return value...
+ *   opt == 0 means SUNDIALS function allocates memory so check if
+ *            returned NULL pointer
+ *   opt == 1 means SUNDIALS function returns a flag so check if
+ *            flag >= 0
+ *   opt == 2 means function allocates memory so check if returned
+ *            NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+	      funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/cvdxe.out b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdxe.out
new file mode 100644
index 0000000..f88383d
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/cvdxe.out
@@ -0,0 +1,24 @@
+ 
+3-species kinetics problem
+
+At t = 2.6391e-01      y =  9.899653e-01    3.470564e-05    1.000000e-02
+    rootsfound[] =   0   1
+At t = 4.0000e-01      y =  9.851641e-01    3.386242e-05    1.480205e-02
+At t = 4.0000e+00      y =  9.055097e-01    2.240338e-05    9.446793e-02
+At t = 4.0000e+01      y =  7.157952e-01    9.183486e-06    2.841956e-01
+At t = 4.0000e+02      y =  4.505420e-01    3.222963e-06    5.494548e-01
+At t = 4.0000e+03      y =  1.831878e-01    8.941319e-07    8.168113e-01
+At t = 4.0000e+04      y =  3.897868e-02    1.621567e-07    9.610212e-01
+At t = 4.0000e+05      y =  4.940023e-03    1.985716e-08    9.950600e-01
+At t = 4.0000e+06      y =  5.165107e-04    2.067097e-09    9.994835e-01
+At t = 2.0807e+07      y =  1.000000e-04    4.000395e-10    9.999000e-01
+    rootsfound[] =   1   0
+At t = 4.0000e+07      y =  5.201457e-05    2.080690e-10    9.999480e-01
+At t = 4.0000e+08      y =  5.207182e-06    2.082883e-11    9.999948e-01
+At t = 4.0000e+09      y =  5.105811e-07    2.042325e-12    9.999995e-01
+At t = 4.0000e+10      y =  4.511312e-08    1.804525e-13    1.000000e-00
+
+Final Statistics:
+nst = 515    nfe  = 754    nsetups = 110    nfeD = 0      njeD = 12
+nni = 751    ncfn = 0      netf = 26     nge = 543
+ 
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/cvkx.c b/Win32/WinCVODE/sundials/cvode/examples_ser/cvkx.c
new file mode 100644
index 0000000..94d3bb7
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/cvkx.c
@@ -0,0 +1,659 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:08 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Example problem:
+ *
+ * An ODE system is generated from the following 2-species diurnal
+ * kinetics advection-diffusion PDE system in 2 space dimensions:
+ *
+ * dc(i)/dt = Kh*(d/dx)^2 c(i) + V*dc(i)/dx + (d/dy)(Kv(y)*dc(i)/dy)
+ *                 + Ri(c1,c2,t)      for i = 1,2,   where
+ *   R1(c1,c2,t) = -q1*c1*c3 - q2*c1*c2 + 2*q3(t)*c3 + q4(t)*c2 ,
+ *   R2(c1,c2,t) =  q1*c1*c3 - q2*c1*c2 - q4(t)*c2 ,
+ *   Kv(y) = Kv0*exp(y/5) ,
+ * Kh, V, Kv0, q1, q2, and c3 are constants, and q3(t) and q4(t)
+ * vary diurnally. The problem is posed on the square
+ *   0 <= x <= 20,    30 <= y <= 50   (all in km),
+ * with homogeneous Neumann boundary conditions, and for time t in
+ *   0 <= t <= 86400 sec (1 day).
+ * The PDE system is treated by central differences on a uniform
+ * 10 x 10 mesh, with simple polynomial initial profiles.
+ * The problem is solved with CVODE, with the BDF/GMRES
+ * method (i.e. using the CVSPGMR linear solver) and the
+ * block-diagonal part of the Newton matrix as a left
+ * preconditioner. A copy of the block-diagonal part of the
+ * Jacobian is saved and conditionally reused within the Precond
+ * routine.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "sundialstypes.h"  /* definitions of realtype, TRUE and FALSE     */
+#include "cvode.h"          /* CVode* prototypes and various constants     */
+#include "cvspgmr.h"        /* prototypes & constants for CVSPGMR solver   */
+#include "smalldense.h"     /* use generic DENSE solver in preconditioning */
+#include "nvector_serial.h" /* definitions of type N_Vector and macro      */
+                            /* NV_DATA_S                                   */
+#include "sundialsmath.h"   /* contains SQR macro                          */
+
+/* Problem Constants */
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+#define TWO  RCONST(2.0)
+
+#define NUM_SPECIES  2                 /* number of species         */
+#define KH           RCONST(4.0e-6)    /* horizontal diffusivity Kh */
+#define VEL          RCONST(0.001)     /* advection velocity V      */
+#define KV0          RCONST(1.0e-8)    /* coefficient in Kv(y)      */
+#define Q1           RCONST(1.63e-16)  /* coefficients q1, q2, c3   */ 
+#define Q2           RCONST(4.66e-16)
+#define C3           RCONST(3.7e16)
+#define A3           RCONST(22.62)     /* coefficient in expression for q3(t) */
+#define A4           RCONST(7.601)     /* coefficient in expression for q4(t) */
+#define C1_SCALE     RCONST(1.0e6)     /* coefficients in initial profiles    */
+#define C2_SCALE     RCONST(1.0e12)
+
+#define T0           ZERO                 /* initial time */
+#define NOUT         12                   /* number of output times */
+#define TWOHR        RCONST(7200.0)       /* number of seconds in two hours  */
+#define HALFDAY      RCONST(4.32e4)       /* number of seconds in a half day */
+#define PI       RCONST(3.1415926535898)  /* pi */ 
+
+#define XMIN         ZERO                 /* grid boundaries in x  */
+#define XMAX         RCONST(20.0)           
+#define YMIN         RCONST(30.0)         /* grid boundaries in y  */
+#define YMAX         RCONST(50.0)
+#define XMID         RCONST(10.0)         /* grid midpoints in x,y */          
+#define YMID         RCONST(40.0)
+
+#define MX           10             /* MX = number of x mesh points */
+#define MY           10             /* MY = number of y mesh points */
+#define NSMX         20             /* NSMX = NUM_SPECIES*MX */
+#define MM           (MX*MY)        /* MM = MX*MY */
+
+/* CVodeMalloc Constants */
+
+#define RTOL    RCONST(1.0e-5)    /* scalar relative tolerance */
+#define FLOOR   RCONST(100.0)     /* value of C1 or C2 at which tolerances */
+                                  /* change from relative to absolute      */
+#define ATOL    (RTOL*FLOOR)      /* scalar absolute tolerance */
+#define NEQ     (NUM_SPECIES*MM)  /* NEQ = number of equations */
+
+/* User-defined vector and matrix accessor macros: IJKth, IJth */
+
+/* IJKth is defined in order to isolate the translation from the
+   mathematical 3-dimensional structure of the dependent variable vector
+   to the underlying 1-dimensional storage. IJth is defined in order to
+   write code which indexes into small dense matrices with a (row,column)
+   pair, where 1 <= row, column <= NUM_SPECIES.   
+   
+   IJKth(vdata,i,j,k) references the element in the vdata array for
+   species i at mesh point (j,k), where 1 <= i <= NUM_SPECIES,
+   0 <= j <= MX-1, 0 <= k <= MY-1. The vdata array is obtained via
+   the macro call vdata = NV_DATA_S(v), where v is an N_Vector. 
+   For each mesh point (j,k), the elements for species i and i+1 are
+   contiguous within vdata.
+
+   IJth(a,i,j) references the (i,j)th entry of the small matrix realtype **a,
+   where 1 <= i,j <= NUM_SPECIES. The small matrix routines in dense.h
+   work with matrices stored by column in a 2-dimensional array. In C,
+   arrays are indexed starting at 0, not 1. */
+
+#define IJKth(vdata,i,j,k) (vdata[i-1 + (j)*NUM_SPECIES + (k)*NSMX])
+#define IJth(a,i,j)        (a[j-1][i-1])
+
+/* Type : UserData 
+   contains preconditioner blocks, pivot arrays, and problem constants */
+
+typedef struct {
+  realtype **P[MX][MY], **Jbd[MX][MY];
+  long int *pivot[MX][MY];
+  realtype q4, om, dx, dy, hdco, haco, vdco;
+} *UserData;
+
+/* Private Helper Functions */
+
+static UserData AllocUserData(void);
+static void InitUserData(UserData data);
+static void FreeUserData(UserData data);
+static void SetInitialProfiles(N_Vector u, realtype dx, realtype dy);
+static void PrintOutput(void *cvode_mem, N_Vector u, realtype t);
+static void PrintFinalStats(void *cvode_mem);
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/* Functions Called by the Solver */
+
+static void f(realtype t, N_Vector u, N_Vector udot, void *f_data);
+
+static int Precond(realtype tn, N_Vector u, N_Vector fu,
+                   booleantype jok, booleantype *jcurPtr, realtype gamma,
+                   void *P_data, N_Vector vtemp1, N_Vector vtemp2,
+                   N_Vector vtemp3);
+
+static int PSolve(realtype tn, N_Vector u, N_Vector fu,
+                  N_Vector r, N_Vector z,
+                  realtype gamma, realtype delta,
+                  int lr, void *P_data, N_Vector vtemp);
+
+
+/*
+ *-------------------------------
+ * Main Program
+ *-------------------------------
+ */
+
+int main()
+{
+  realtype abstol, reltol, t, tout;
+  N_Vector u;
+  UserData data;
+  void *cvode_mem;
+  int iout, flag;
+
+  u = NULL;
+  data = NULL;
+  cvode_mem = NULL;
+
+  /* Allocate memory, and set problem data, initial values, tolerances */ 
+  u = N_VNew_Serial(NEQ);
+  if(check_flag((void *)u, "N_VNew_Serial", 0)) return(1);
+  data = AllocUserData();
+  if(check_flag((void *)data, "AllocUserData", 2)) return(1);
+  InitUserData(data);
+  SetInitialProfiles(u, data->dx, data->dy);
+  abstol=ATOL; 
+  reltol=RTOL;
+
+  /* Call CvodeCreate to create the solver memory 
+
+     CV_BDF     specifies the Backward Differentiation Formula
+     CV_NEWTON  specifies a Newton iteration
+
+     A pointer to the integrator memory is returned and stored in cvode_mem. */
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  /* Set the pointer to user-defined data */
+  flag = CVodeSetFdata(cvode_mem, data);
+  if(check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+
+  /* Call CVodeMalloc to initialize the integrator memory: 
+
+     f       is the user's right hand side function in u'=f(t,u)
+     T0      is the initial time
+     u       is the initial dependent variable vector
+     CV_SS   specifies scalar relative and absolute tolerances
+     reltol  is the relative tolerance
+     &abstol is a pointer to the scalar absolute tolerance      */
+  flag = CVodeMalloc(cvode_mem, f, T0, u, CV_SS, reltol, &abstol);
+  if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  /* Call CVSpgmr to specify the linear solver CVSPGMR 
+     with left preconditioning and the maximum Krylov dimension maxl */
+  flag = CVSpgmr(cvode_mem, PREC_LEFT, 0);
+  if(check_flag(&flag, "CVSpgmr", 1)) return(1);
+
+  /* Set modified Gram-Schmidt orthogonalization, preconditioner 
+     setup and solve routines Precond and PSolve, and the pointer 
+     to the user-defined block data */
+  flag = CVSpgmrSetGSType(cvode_mem, MODIFIED_GS);
+  if(check_flag(&flag, "CVSpgmrSetGSType", 1)) return(1);
+
+  flag = CVSpgmrSetPreconditioner(cvode_mem, Precond, PSolve, data);
+  if(check_flag(&flag, "CVSpgmrSetPreconditioner", 1)) return(1);
+
+  /* In loop over output points, call CVode, print results, test for error */
+  printf(" \n2-species diurnal advection-diffusion problem\n\n");
+  for (iout=1, tout = TWOHR; iout <= NOUT; iout++, tout += TWOHR) {
+    flag = CVode(cvode_mem, tout, u, &t, CV_NORMAL);
+    PrintOutput(cvode_mem, u, t);
+    if(check_flag(&flag, "CVode", 1)) break;
+  }
+
+  PrintFinalStats(cvode_mem);
+
+  /* Free memory */
+  N_VDestroy_Serial(u);
+  FreeUserData(data);
+  CVodeFree(cvode_mem);
+
+  return(0);
+}
+
+/*
+ *-------------------------------
+ * Private helper functions
+ *-------------------------------
+ */
+
+/* Allocate memory for data structure of type UserData */
+
+static UserData AllocUserData(void)
+{
+  int jx, jy;
+  UserData data;
+
+  data = (UserData) malloc(sizeof *data);
+
+  for (jx=0; jx < MX; jx++) {
+    for (jy=0; jy < MY; jy++) {
+      (data->P)[jx][jy] = denalloc(NUM_SPECIES);
+      (data->Jbd)[jx][jy] = denalloc(NUM_SPECIES);
+      (data->pivot)[jx][jy] = denallocpiv(NUM_SPECIES);
+    }
+  }
+
+  return(data);
+}
+
+/* Load problem constants in data */
+
+static void InitUserData(UserData data)
+{
+  data->om = PI/HALFDAY;
+  data->dx = (XMAX-XMIN)/(MX-1);
+  data->dy = (YMAX-YMIN)/(MY-1);
+  data->hdco = KH/SQR(data->dx);
+  data->haco = VEL/(TWO*data->dx);
+  data->vdco = (ONE/SQR(data->dy))*KV0;
+}
+
+/* Free data memory */
+
+static void FreeUserData(UserData data)
+{
+  int jx, jy;
+
+  for (jx=0; jx < MX; jx++) {
+    for (jy=0; jy < MY; jy++) {
+      denfree((data->P)[jx][jy]);
+      denfree((data->Jbd)[jx][jy]);
+      denfreepiv((data->pivot)[jx][jy]);
+    }
+  }
+
+  free(data);
+}
+
+/* Set initial conditions in u */
+
+static void SetInitialProfiles(N_Vector u, realtype dx, realtype dy)
+{
+  int jx, jy;
+  realtype x, y, cx, cy;
+  realtype *udata;
+
+  /* Set pointer to data array in vector u. */
+
+  udata = NV_DATA_S(u);
+
+  /* Load initial profiles of c1 and c2 into u vector */
+
+  for (jy=0; jy < MY; jy++) {
+    y = YMIN + jy*dy;
+    cy = SQR(RCONST(0.1)*(y - YMID));
+    cy = ONE - cy + RCONST(0.5)*SQR(cy);
+    for (jx=0; jx < MX; jx++) {
+      x = XMIN + jx*dx;
+      cx = SQR(RCONST(0.1)*(x - XMID));
+      cx = ONE - cx + RCONST(0.5)*SQR(cx);
+      IJKth(udata,1,jx,jy) = C1_SCALE*cx*cy; 
+      IJKth(udata,2,jx,jy) = C2_SCALE*cx*cy;
+    }
+  }
+}
+
+/* Print current t, step count, order, stepsize, and sampled c1,c2 values */
+
+static void PrintOutput(void *cvode_mem, N_Vector u, realtype t)
+{
+  long int nst;
+  int qu, flag;
+  realtype hu, *udata;
+  int mxh = MX/2 - 1, myh = MY/2 - 1, mx1 = MX - 1, my1 = MY - 1;
+
+  udata = NV_DATA_S(u);
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetLastOrder(cvode_mem, &qu);
+  check_flag(&flag, "CVodeGetLastOrder", 1);
+  flag = CVodeGetLastStep(cvode_mem, &hu);
+  check_flag(&flag, "CVodeGetLastStep", 1);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("t = %.2Le   no. steps = %ld   order = %d   stepsize = %.2Le\n",
+         t, nst, qu, hu);
+  printf("c1 (bot.left/middle/top rt.) = %12.3Le  %12.3Le  %12.3Le\n",
+         IJKth(udata,1,0,0), IJKth(udata,1,mxh,myh), IJKth(udata,1,mx1,my1));
+  printf("c2 (bot.left/middle/top rt.) = %12.3Le  %12.3Le  %12.3Le\n\n",
+         IJKth(udata,2,0,0), IJKth(udata,2,mxh,myh), IJKth(udata,2,mx1,my1));
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("t = %.2le   no. steps = %ld   order = %d   stepsize = %.2le\n",
+         t, nst, qu, hu);
+  printf("c1 (bot.left/middle/top rt.) = %12.3le  %12.3le  %12.3le\n",
+         IJKth(udata,1,0,0), IJKth(udata,1,mxh,myh), IJKth(udata,1,mx1,my1));
+  printf("c2 (bot.left/middle/top rt.) = %12.3le  %12.3le  %12.3le\n\n",
+         IJKth(udata,2,0,0), IJKth(udata,2,mxh,myh), IJKth(udata,2,mx1,my1));
+#else
+  printf("t = %.2e   no. steps = %ld   order = %d   stepsize = %.2e\n",
+         t, nst, qu, hu);
+  printf("c1 (bot.left/middle/top rt.) = %12.3e  %12.3e  %12.3e\n",
+         IJKth(udata,1,0,0), IJKth(udata,1,mxh,myh), IJKth(udata,1,mx1,my1));
+  printf("c2 (bot.left/middle/top rt.) = %12.3e  %12.3e  %12.3e\n\n",
+         IJKth(udata,2,0,0), IJKth(udata,2,mxh,myh), IJKth(udata,2,mx1,my1));
+#endif
+}
+
+/* Get and print final statistics */
+
+static void PrintFinalStats(void *cvode_mem)
+{
+  long int lenrw, leniw ;
+  long int lenrwSPGMR, leniwSPGMR;
+  long int nst, nfe, nsetups, nni, ncfn, netf;
+  long int nli, npe, nps, ncfl, nfeSPGMR;
+  int flag;
+
+  flag = CVodeGetWorkSpace(cvode_mem, &lenrw, &leniw);
+  check_flag(&flag, "CVodeGetWorkSpace", 1);
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  flag = CVSpgmrGetWorkSpace(cvode_mem, &lenrwSPGMR, &leniwSPGMR);
+  check_flag(&flag, "CVSpgmrGetWorkSpace", 1);
+  flag = CVSpgmrGetNumLinIters(cvode_mem, &nli);
+  check_flag(&flag, "CVSpgmrGetNumLinIters", 1);
+  flag = CVSpgmrGetNumPrecEvals(cvode_mem, &npe);
+  check_flag(&flag, "CVSpgmrGetNumPrecEvals", 1);
+  flag = CVSpgmrGetNumPrecSolves(cvode_mem, &nps);
+  check_flag(&flag, "CVSpgmrGetNumPrecSolves", 1);
+  flag = CVSpgmrGetNumConvFails(cvode_mem, &ncfl);
+  check_flag(&flag, "CVSpgmrGetNumConvFails", 1);
+  flag = CVSpgmrGetNumRhsEvals(cvode_mem, &nfeSPGMR);
+  check_flag(&flag, "CVSpgmrGetNumRhsEvals", 1);
+
+  printf("\nFinal Statistics.. \n\n");
+  printf("lenrw   = %5ld     leniw = %5ld\n", lenrw, leniw);
+  printf("llrw    = %5ld     lliw  = %5ld\n", lenrwSPGMR, leniwSPGMR);
+  printf("nst     = %5ld\n"                  , nst);
+  printf("nfe     = %5ld     nfel  = %5ld\n"  , nfe, nfeSPGMR);
+  printf("nni     = %5ld     nli   = %5ld\n"  , nni, nli);
+  printf("nsetups = %5ld     netf  = %5ld\n"  , nsetups, netf);
+  printf("npe     = %5ld     nps   = %5ld\n"  , npe, nps);
+  printf("ncfn    = %5ld     ncfl  = %5ld\n\n", ncfn, ncfl);
+}
+
+/* Check function return value...
+     opt == 0 means SUNDIALS function allocates memory so check if
+              returned NULL pointer
+     opt == 1 means SUNDIALS function returns a flag so check if
+              flag >= 0
+     opt == 2 means function allocates memory so check if returned
+              NULL pointer */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+              funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  return(0);
+}
+
+/*
+ *-------------------------------
+ * Functions called by the solver
+ *-------------------------------
+ */
+
+/* f routine. Compute RHS function f(t,u). */
+
+static void f(realtype t, N_Vector u, N_Vector udot, void *f_data)
+{
+  realtype q3, c1, c2, c1dn, c2dn, c1up, c2up, c1lt, c2lt;
+  realtype c1rt, c2rt, cydn, cyup, hord1, hord2, horad1, horad2;
+  realtype qq1, qq2, qq3, qq4, rkin1, rkin2, s, vertd1, vertd2, ydn, yup;
+  realtype q4coef, dely, verdco, hordco, horaco;
+  realtype *udata, *dudata;
+  int jx, jy, idn, iup, ileft, iright;
+  UserData data;
+
+  data = (UserData) f_data;
+  udata = NV_DATA_S(u);
+  dudata = NV_DATA_S(udot);
+
+  /* Set diurnal rate coefficients. */
+
+  s = sin(data->om*t);
+  if (s > ZERO) {
+    q3 = exp(-A3/s);
+    data->q4 = exp(-A4/s);
+  } else {
+      q3 = ZERO;
+      data->q4 = ZERO;
+  }
+
+  /* Make local copies of problem variables, for efficiency. */
+
+  q4coef = data->q4;
+  dely = data->dy;
+  verdco = data->vdco;
+  hordco  = data->hdco;
+  horaco  = data->haco;
+
+  /* Loop over all grid points. */
+
+  for (jy=0; jy < MY; jy++) {
+
+    /* Set vertical diffusion coefficients at jy +- 1/2 */
+
+    ydn = YMIN + (jy - RCONST(0.5))*dely;
+    yup = ydn + dely;
+    cydn = verdco*exp(RCONST(0.2)*ydn);
+    cyup = verdco*exp(RCONST(0.2)*yup);
+    idn = (jy == 0) ? 1 : -1;
+    iup = (jy == MY-1) ? -1 : 1;
+    for (jx=0; jx < MX; jx++) {
+
+      /* Extract c1 and c2, and set kinetic rate terms. */
+
+      c1 = IJKth(udata,1,jx,jy); 
+      c2 = IJKth(udata,2,jx,jy);
+      qq1 = Q1*c1*C3;
+      qq2 = Q2*c1*c2;
+      qq3 = q3*C3;
+      qq4 = q4coef*c2;
+      rkin1 = -qq1 - qq2 + TWO*qq3 + qq4;
+      rkin2 = qq1 - qq2 - qq4;
+
+      /* Set vertical diffusion terms. */
+
+      c1dn = IJKth(udata,1,jx,jy+idn);
+      c2dn = IJKth(udata,2,jx,jy+idn);
+      c1up = IJKth(udata,1,jx,jy+iup);
+      c2up = IJKth(udata,2,jx,jy+iup);
+      vertd1 = cyup*(c1up - c1) - cydn*(c1 - c1dn);
+      vertd2 = cyup*(c2up - c2) - cydn*(c2 - c2dn);
+
+      /* Set horizontal diffusion and advection terms. */
+
+      ileft = (jx == 0) ? 1 : -1;
+      iright =(jx == MX-1) ? -1 : 1;
+      c1lt = IJKth(udata,1,jx+ileft,jy); 
+      c2lt = IJKth(udata,2,jx+ileft,jy);
+      c1rt = IJKth(udata,1,jx+iright,jy);
+      c2rt = IJKth(udata,2,jx+iright,jy);
+      hord1 = hordco*(c1rt - TWO*c1 + c1lt);
+      hord2 = hordco*(c2rt - TWO*c2 + c2lt);
+      horad1 = horaco*(c1rt - c1lt);
+      horad2 = horaco*(c2rt - c2lt);
+
+      /* Load all terms into udot. */
+
+      IJKth(dudata, 1, jx, jy) = vertd1 + hord1 + horad1 + rkin1; 
+      IJKth(dudata, 2, jx, jy) = vertd2 + hord2 + horad2 + rkin2;
+    }
+  }
+
+}
+
+/* Preconditioner setup routine. Generate and preprocess P. */
+
+static int Precond(realtype tn, N_Vector u, N_Vector fu,
+                   booleantype jok, booleantype *jcurPtr, realtype gamma,
+                   void *P_data, N_Vector vtemp1, N_Vector vtemp2,
+                   N_Vector vtemp3)
+{
+  realtype c1, c2, cydn, cyup, diag, ydn, yup, q4coef, dely, verdco, hordco;
+  realtype **(*P)[MY], **(*Jbd)[MY];
+  long int *(*pivot)[MY], ier;
+  int jx, jy;
+  realtype *udata, **a, **j;
+  UserData data;
+  
+  /* Make local copies of pointers in P_data, and of pointer to u's data */
+  
+  data = (UserData) P_data;
+  P = data->P;
+  Jbd = data->Jbd;
+  pivot = data->pivot;
+  udata = NV_DATA_S(u);
+  
+  if (jok) {
+    
+    /* jok = TRUE: Copy Jbd to P */
+    
+    for (jy=0; jy < MY; jy++)
+      for (jx=0; jx < MX; jx++)
+        dencopy(Jbd[jx][jy], P[jx][jy], NUM_SPECIES);
+    
+    *jcurPtr = FALSE;
+    
+  }
+  
+  else {
+    /* jok = FALSE: Generate Jbd from scratch and copy to P */
+    
+    /* Make local copies of problem variables, for efficiency. */
+    
+    q4coef = data->q4;
+    dely = data->dy;
+    verdco = data->vdco;
+    hordco  = data->hdco;
+    
+    /* Compute 2x2 diagonal Jacobian blocks (using q4 values 
+       computed on the last f call).  Load into P. */
+    
+    for (jy=0; jy < MY; jy++) {
+      ydn = YMIN + (jy - RCONST(0.5))*dely;
+      yup = ydn + dely;
+      cydn = verdco*exp(RCONST(0.2)*ydn);
+      cyup = verdco*exp(RCONST(0.2)*yup);
+      diag = -(cydn + cyup + TWO*hordco);
+      for (jx=0; jx < MX; jx++) {
+        c1 = IJKth(udata,1,jx,jy);
+        c2 = IJKth(udata,2,jx,jy);
+        j = Jbd[jx][jy];
+        a = P[jx][jy];
+        IJth(j,1,1) = (-Q1*C3 - Q2*c2) + diag;
+        IJth(j,1,2) = -Q2*c1 + q4coef;
+        IJth(j,2,1) = Q1*C3 - Q2*c2;
+        IJth(j,2,2) = (-Q2*c1 - q4coef) + diag;
+        dencopy(j, a, NUM_SPECIES);
+      }
+    }
+    
+    *jcurPtr = TRUE;
+    
+  }
+  
+  /* Scale by -gamma */
+  
+  for (jy=0; jy < MY; jy++)
+    for (jx=0; jx < MX; jx++)
+      denscale(-gamma, P[jx][jy], NUM_SPECIES);
+  
+  /* Add identity matrix and do LU decompositions on blocks in place. */
+  
+  for (jx=0; jx < MX; jx++) {
+    for (jy=0; jy < MY; jy++) {
+      denaddI(P[jx][jy], NUM_SPECIES);
+      ier = gefa(P[jx][jy], NUM_SPECIES, pivot[jx][jy]);
+      if (ier != 0) return(1);
+    }
+  }
+  
+  return(0);
+}
+
+/* Preconditioner solve routine */
+
+static int PSolve(realtype tn, N_Vector u, N_Vector fu,
+                  N_Vector r, N_Vector z,
+                  realtype gamma, realtype delta,
+                  int lr, void *P_data, N_Vector vtemp)
+{
+  realtype **(*P)[MY];
+  long int *(*pivot)[MY];
+  int jx, jy;
+  realtype *zdata, *v;
+  UserData data;
+
+  /* Extract the P and pivot arrays from P_data. */
+
+  data = (UserData) P_data;
+  P = data->P;
+  pivot = data->pivot;
+  zdata = NV_DATA_S(z);
+  
+  N_VScale(ONE, r, z);
+  
+  /* Solve the block-diagonal system Px = r using LU factors stored
+     in P and pivot data in pivot, and return the solution in z. */
+  
+  for (jx=0; jx < MX; jx++) {
+    for (jy=0; jy < MY; jy++) {
+      v = &(IJKth(zdata, 1, jx, jy));
+      gesl(P[jx][jy], NUM_SPECIES, pivot[jx][jy], v);
+    }
+  }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/cvkx.out b/Win32/WinCVODE/sundials/cvode/examples_ser/cvkx.out
new file mode 100644
index 0000000..9cb78c0
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/cvkx.out
@@ -0,0 +1,63 @@
+ 
+2-species diurnal advection-diffusion problem
+
+t = 7.20e+03   no. steps = 219   order = 5   stepsize = 1.59e+02
+c1 (bot.left/middle/top rt.) =    1.047e+04     2.964e+04     1.119e+04
+c2 (bot.left/middle/top rt.) =    2.527e+11     7.154e+11     2.700e+11
+
+t = 1.44e+04   no. steps = 251   order = 5   stepsize = 3.77e+02
+c1 (bot.left/middle/top rt.) =    6.659e+06     5.316e+06     7.301e+06
+c2 (bot.left/middle/top rt.) =    2.582e+11     2.057e+11     2.833e+11
+
+t = 2.16e+04   no. steps = 277   order = 5   stepsize = 2.75e+02
+c1 (bot.left/middle/top rt.) =    2.665e+07     1.036e+07     2.931e+07
+c2 (bot.left/middle/top rt.) =    2.993e+11     1.028e+11     3.313e+11
+
+t = 2.88e+04   no. steps = 301   order = 5   stepsize = 3.72e+02
+c1 (bot.left/middle/top rt.) =    8.702e+06     1.292e+07     9.650e+06
+c2 (bot.left/middle/top rt.) =    3.380e+11     5.029e+11     3.751e+11
+
+t = 3.60e+04   no. steps = 329   order = 5   stepsize = 8.62e+01
+c1 (bot.left/middle/top rt.) =    1.404e+04     2.029e+04     1.561e+04
+c2 (bot.left/middle/top rt.) =    3.387e+11     4.894e+11     3.765e+11
+
+t = 4.32e+04   no. steps = 386   order = 4   stepsize = 4.03e+02
+c1 (bot.left/middle/top rt.) =   -2.083e-07    -6.285e-07    -2.237e-07
+c2 (bot.left/middle/top rt.) =    3.382e+11     1.355e+11     3.804e+11
+
+t = 5.04e+04   no. steps = 399   order = 5   stepsize = 4.22e+02
+c1 (bot.left/middle/top rt.) =   -5.968e-09     5.891e-07    -9.151e-09
+c2 (bot.left/middle/top rt.) =    3.358e+11     4.930e+11     3.864e+11
+
+t = 5.76e+04   no. steps = 416   order = 4   stepsize = 1.05e+02
+c1 (bot.left/middle/top rt.) =    8.838e-08    -1.508e-06     1.409e-07
+c2 (bot.left/middle/top rt.) =    3.320e+11     9.650e+11     3.909e+11
+
+t = 6.48e+04   no. steps = 432   order = 4   stepsize = 5.14e+02
+c1 (bot.left/middle/top rt.) =    7.999e-11    -2.155e-09     1.308e-10
+c2 (bot.left/middle/top rt.) =    3.313e+11     8.922e+11     3.963e+11
+
+t = 7.20e+04   no. steps = 446   order = 4   stepsize = 5.14e+02
+c1 (bot.left/middle/top rt.) =    7.272e-15    -1.817e-13     1.188e-14
+c2 (bot.left/middle/top rt.) =    3.330e+11     6.186e+11     4.039e+11
+
+t = 7.92e+04   no. steps = 460   order = 4   stepsize = 5.14e+02
+c1 (bot.left/middle/top rt.) =    4.110e-18    -2.359e-14     6.131e-18
+c2 (bot.left/middle/top rt.) =    3.334e+11     6.669e+11     4.120e+11
+
+t = 8.64e+04   no. steps = 474   order = 4   stepsize = 5.14e+02
+c1 (bot.left/middle/top rt.) =    7.647e-19     1.346e-14    -1.473e-17
+c2 (bot.left/middle/top rt.) =    3.352e+11     9.108e+11     4.163e+11
+
+
+Final Statistics.. 
+
+lenrw   =  2000     leniw =    10
+llrw    =  2046     lliw  =    10
+nst     =   474
+nfe     =   610     nfel  =   649
+nni     =   607     nli   =   649
+nsetups =    78     netf  =    27
+npe     =     8     nps   =  1204
+ncfn    =     0     ncfl  =     0
+
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/cvkxb.c b/Win32/WinCVODE/sundials/cvode/examples_ser/cvkxb.c
new file mode 100644
index 0000000..20270dd
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/cvkxb.c
@@ -0,0 +1,534 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:08 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @LLNL
+ * -----------------------------------------------------------------
+ * Example problem:
+ *
+ * An ODE system is generated from the following 2-species diurnal
+ * kinetics advection-diffusion PDE system in 2 space dimensions:
+ *
+ * dc(i)/dt = Kh*(d/dx)^2 c(i) + V*dc(i)/dx + (d/dy)(Kv(y)*dc(i)/dy)
+ *                 + Ri(c1,c2,t)      for i = 1,2,   where
+ *   R1(c1,c2,t) = -q1*c1*c3 - q2*c1*c2 + 2*q3(t)*c3 + q4(t)*c2 ,
+ *   R2(c1,c2,t) =  q1*c1*c3 - q2*c1*c2 - q4(t)*c2 ,
+ *   Kv(y) = Kv0*exp(y/5) ,
+ * Kh, V, Kv0, q1, q2, and c3 are constants, and q3(t) and q4(t)
+ * vary diurnally. The problem is posed on the square
+ *   0 <= x <= 20,    30 <= y <= 50   (all in km),
+ * with homogeneous Neumann boundary conditions, and for time t in
+ *   0 <= t <= 86400 sec (1 day).
+ * The PDE system is treated by central differences on a uniform
+ * 10 x 10 mesh, with simple polynomial initial profiles.
+ * The problem is solved with CVODE, with the BDF/GMRES
+ * method (i.e. using the CVSPGMR linear solver) and a banded
+ * preconditioner, generated by difference quotients, using the
+ * module CVBANDPRE. The problem is solved with left and right
+ * preconditioning.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "sundialstypes.h"  /* definition of realtype                      */
+#include "cvode.h"          /* CVode* prototypes and various constants     */
+#include "cvspgmr.h"        /* prototypes & constants for CVSPGMR solver   */
+#include "cvbandpre.h"      /* prototypes & constants for CVBANDPRE module */
+#include "smalldense.h"     /* use generic DENSE solver in preconditioning */
+#include "nvector_serial.h" /* definitions of type N_Vector and macro      */
+                            /* NV_DATA_S                                   */
+#include "sundialsmath.h"   /* contains SQR macro                          */
+
+
+/* Problem Constants */
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+#define TWO  RCONST(2.0)
+
+#define NUM_SPECIES  2                 /* number of species         */
+#define KH           RCONST(4.0e-6)    /* horizontal diffusivity Kh */
+#define VEL          RCONST(0.001)     /* advection velocity V      */
+#define KV0          RCONST(1.0e-8)    /* coefficient in Kv(y)      */
+#define Q1           RCONST(1.63e-16)  /* coefficients q1, q2, c3   */ 
+#define Q2           RCONST(4.66e-16)
+#define C3           RCONST(3.7e16)
+#define A3           RCONST(22.62)     /* coefficient in expression for q3(t) */
+#define A4           RCONST(7.601)     /* coefficient in expression for q4(t) */
+#define C1_SCALE     RCONST(1.0e6)     /* coefficients in initial profiles    */
+#define C2_SCALE     RCONST(1.0e12)
+
+#define T0           ZERO                /* initial time */
+#define NOUT         12                  /* number of output times */
+#define TWOHR        RCONST(7200.0)      /* number of seconds in two hours  */
+#define HALFDAY      RCONST(4.32e4)      /* number of seconds in a half day */
+#define PI       RCONST(3.1415926535898) /* pi */ 
+
+#define XMIN         ZERO                /* grid boundaries in x  */
+#define XMAX         RCONST(20.0)           
+#define YMIN         RCONST(30.0)        /* grid boundaries in y  */
+#define YMAX         RCONST(50.0)
+#define XMID         RCONST(10.0)        /* grid midpoints in x,y */          
+#define YMID         RCONST(40.0)
+
+#define MX           10             /* MX = number of x mesh points */
+#define MY           10             /* MY = number of y mesh points */
+#define NSMX         20             /* NSMX = NUM_SPECIES*MX */
+#define MM           (MX*MY)        /* MM = MX*MY */
+
+/* CVodeMalloc Constants */
+
+#define RTOL    RCONST(1.0e-5)   /* scalar relative tolerance */
+#define FLOOR   RCONST(100.0)    /* value of C1 or C2 at which tolerances */
+                                 /* change from relative to absolute      */
+#define ATOL    (RTOL*FLOOR)     /* scalar absolute tolerance */
+#define NEQ     (NUM_SPECIES*MM) /* NEQ = number of equations */
+
+/* User-defined vector and matrix accessor macros: IJKth, IJth */
+
+/* IJKth is defined in order to isolate the translation from the
+   mathematical 3-dimensional structure of the dependent variable vector
+   to the underlying 1-dimensional storage. IJth is defined in order to
+   write code which indexes into small dense matrices with a (row,column)
+   pair, where 1 <= row, column <= NUM_SPECIES.   
+   
+   IJKth(vdata,i,j,k) references the element in the vdata array for
+   species i at mesh point (j,k), where 1 <= i <= NUM_SPECIES,
+   0 <= j <= MX-1, 0 <= k <= MY-1. The vdata array is obtained via
+   the macro call vdata = NV_DATA_S(v), where v is an N_Vector. 
+   For each mesh point (j,k), the elements for species i and i+1 are
+   contiguous within vdata.
+
+   IJth(a,i,j) references the (i,j)th entry of the small matrix realtype **a,
+   where 1 <= i,j <= NUM_SPECIES. The small matrix routines in dense.h
+   work with matrices stored by column in a 2-dimensional array. In C,
+   arrays are indexed starting at 0, not 1. */
+
+#define IJKth(vdata,i,j,k) (vdata[i-1 + (j)*NUM_SPECIES + (k)*NSMX])
+#define IJth(a,i,j)        (a[j-1][i-1])
+
+/* Type : UserData 
+   contains preconditioner blocks, pivot arrays, and problem constants */
+
+typedef struct {
+  realtype q4, om, dx, dy, hdco, haco, vdco;
+} *UserData;
+
+/* Private Helper Functions */
+
+static void InitUserData(UserData data);
+static void SetInitialProfiles(N_Vector u, realtype dx, realtype dy);
+static void PrintIntro(int mu, int ml);
+static void PrintOutput(void *cvode_mem, N_Vector u, realtype t);
+static void PrintFinalStats(void *cvode_mem, void *bpdata);
+
+/* Private function to check function return values */
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/* Function Called by the Solver */
+
+static void f(realtype t, N_Vector u, N_Vector udot, void *f_data);
+
+/*
+ *-------------------------------
+ * Main Program
+ *-------------------------------
+ */
+
+int main()
+{
+  realtype abstol, reltol, t, tout;
+  N_Vector u;
+  UserData data;
+  void *bpdata;
+  void *cvode_mem;
+  int flag, ml, mu, iout, jpre;
+
+  u = NULL;
+  data = NULL;
+  bpdata = cvode_mem = NULL;
+
+  /* Allocate and initialize u, and set problem data and tolerances */ 
+  u = N_VNew_Serial(NEQ);
+  if(check_flag((void *)u, "N_VNew_Serial", 0)) return(1);
+  data = (UserData) malloc(sizeof *data);
+  if(check_flag((void *)data, "malloc", 2)) return(1);
+  InitUserData(data);
+  SetInitialProfiles(u, data->dx, data->dy);
+  abstol = ATOL; 
+  reltol = RTOL;
+
+  /* Call CvodeCreate to create the solver memory 
+
+     CV_BDF     specifies the Backward Differentiation Formula
+     CV_NEWTON  specifies a Newton iteration
+
+     A pointer to the integrator memory is returned and stored in cvode_mem. */
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  /* Set the pointer to user-defined data */
+  flag = CVodeSetFdata(cvode_mem, data);
+  if(check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+
+  /* Call CVodeMalloc to initialize the integrator memory: 
+     f       is the user's right hand side function in u'=f(t,u)
+     T0      is the initial time
+     u       is the initial dependent variable vector
+     CV_SS   specifies scalar relative and absolute tolerances
+     reltol  is the relative tolerance
+     &abstol is a  pointer to the scalar absolutetolerance      */
+  flag = CVodeMalloc(cvode_mem, f, T0, u, CV_SS, reltol, &abstol);
+  if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  /* Call CVBandPreAlloc to initialize band preconditioner */
+  ml = mu = 2;
+  bpdata = CVBandPrecAlloc (cvode_mem, NEQ, mu, ml);
+  if(check_flag((void *)bpdata, "CVBandPrecAlloc", 0)) return(1);
+
+  /* Call CVBPSpgmr to specify the linear solver CVSPGMR 
+     with left preconditioning and the maximum Krylov dimension maxl */
+  flag = CVBPSpgmr(cvode_mem, PREC_LEFT, 0, bpdata);
+  if(check_flag(&flag, "CVBPSpgmr", 1)) return(1);
+
+  PrintIntro(mu, ml);
+
+  /* Loop over jpre (= PREC_LEFT, PREC_RIGHT), and solve the problem */
+
+  for (jpre = PREC_LEFT; jpre <= PREC_RIGHT; jpre++) {
+    
+    /* On second run, re-initialize u, the solver, and CVSPGMR */
+    
+    if (jpre == PREC_RIGHT) {
+      
+      SetInitialProfiles(u, data->dx, data->dy);
+      
+      flag = CVodeReInit(cvode_mem, f, T0, u, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeReInit", 1)) return(1);
+
+      flag = CVSpgmrSetPrecType(cvode_mem, PREC_RIGHT);
+      check_flag(&flag, "CVSpgmrSetPrecType", 1);
+      
+      printf("\n\n-------------------------------------------------------");
+      printf("------------\n");
+    }
+    
+    printf("\n\nPreconditioner type is:  jpre = %s\n\n",
+           (jpre == PREC_LEFT) ? "PREC_LEFT" : "PREC_RIGHT");
+    
+    /* In loop over output points, call CVode, print results, test for error */
+    
+    for (iout = 1, tout = TWOHR; iout <= NOUT; iout++, tout += TWOHR) {
+      flag = CVode(cvode_mem, tout, u, &t, CV_NORMAL);
+      check_flag(&flag, "CVode", 1);
+      PrintOutput(cvode_mem, u, t);
+      if (flag != CV_SUCCESS) {
+        break;
+      }
+    }
+    
+    /* Print final statistics */
+    
+    PrintFinalStats(cvode_mem, bpdata);
+    
+  } /* End of jpre loop */
+
+  /* Free memory */
+  N_VDestroy_Serial(u);
+  free(data);
+  CVBandPrecFree(bpdata);
+  CVodeFree(cvode_mem);
+
+  return(0);
+}
+
+/*
+ *-------------------------------
+ * Private helper functions
+ *-------------------------------
+ */
+
+/* Load problem constants in data */
+
+static void InitUserData(UserData data)
+{
+  data->om = PI/HALFDAY;
+  data->dx = (XMAX-XMIN)/(MX-1);
+  data->dy = (YMAX-YMIN)/(MY-1);
+  data->hdco = KH/SQR(data->dx);
+  data->haco = VEL/(TWO*data->dx);
+  data->vdco = (ONE/SQR(data->dy))*KV0;
+}
+
+/* Set initial conditions in u */
+
+static void SetInitialProfiles(N_Vector u, realtype dx, realtype dy)
+{
+  int jx, jy;
+  realtype x, y, cx, cy;
+  realtype *udata;
+
+  /* Set pointer to data array in vector u. */
+
+  udata = NV_DATA_S(u);
+
+  /* Load initial profiles of c1 and c2 into u vector */
+
+  for (jy = 0; jy < MY; jy++) {
+    y = YMIN + jy*dy;
+    cy = SQR(RCONST(0.1)*(y - YMID));
+    cy = ONE - cy + RCONST(0.5)*SQR(cy);
+    for (jx = 0; jx < MX; jx++) {
+      x = XMIN + jx*dx;
+      cx = SQR(RCONST(0.1)*(x - XMID));
+      cx = ONE - cx + RCONST(0.5)*SQR(cx);
+      IJKth(udata,1,jx,jy) = C1_SCALE*cx*cy; 
+      IJKth(udata,2,jx,jy) = C2_SCALE*cx*cy;
+    }
+  }
+}
+
+static void PrintIntro(int mu, int ml)
+{
+  printf("2-species diurnal advection-diffusion problem, %d by %d mesh\n",
+         MX, MY);
+  printf("SPGMR solver; band preconditioner; mu = %d, ml = %d\n\n",
+         mu, ml);
+
+  return;
+}
+
+/* Print current t, step count, order, stepsize, and sampled c1,c2 values */
+
+static void PrintOutput(void *cvode_mem, N_Vector u,realtype t)
+{
+  long int nst;
+  int qu, flag;
+  realtype hu, *udata;
+  int mxh = MX/2 - 1, myh = MY/2 - 1, mx1 = MX - 1, my1 = MY - 1;
+
+  udata = NV_DATA_S(u);
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetLastOrder(cvode_mem, &qu);
+  check_flag(&flag, "CVodeGetLastOrder", 1);
+  flag = CVodeGetLastStep(cvode_mem, &hu);
+  check_flag(&flag, "CVodeGetLastStep", 1);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("t = %.2Le   no. steps = %ld   order = %d   stepsize = %.2Le\n",
+         t, nst, qu, hu);
+  printf("c1 (bot.left/middle/top rt.) = %12.3Le  %12.3Le  %12.3Le\n",
+         IJKth(udata,1,0,0), IJKth(udata,1,mxh,myh), IJKth(udata,1,mx1,my1));
+  printf("c2 (bot.left/middle/top rt.) = %12.3Le  %12.3Le  %12.3Le\n\n",
+         IJKth(udata,2,0,0), IJKth(udata,2,mxh,myh), IJKth(udata,2,mx1,my1));
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("t = %.2le   no. steps = %ld   order = %d   stepsize = %.2le\n",
+         t, nst, qu, hu);
+  printf("c1 (bot.left/middle/top rt.) = %12.3le  %12.3le  %12.3le\n",
+         IJKth(udata,1,0,0), IJKth(udata,1,mxh,myh), IJKth(udata,1,mx1,my1));
+  printf("c2 (bot.left/middle/top rt.) = %12.3le  %12.3le  %12.3le\n\n",
+         IJKth(udata,2,0,0), IJKth(udata,2,mxh,myh), IJKth(udata,2,mx1,my1));
+#else
+  printf("t = %.2e   no. steps = %ld   order = %d   stepsize = %.2e\n",
+         t, nst, qu, hu);
+  printf("c1 (bot.left/middle/top rt.) = %12.3e  %12.3e  %12.3e\n",
+         IJKth(udata,1,0,0), IJKth(udata,1,mxh,myh), IJKth(udata,1,mx1,my1));
+  printf("c2 (bot.left/middle/top rt.) = %12.3e  %12.3e  %12.3e\n\n",
+         IJKth(udata,2,0,0), IJKth(udata,2,mxh,myh), IJKth(udata,2,mx1,my1));
+#endif
+}
+
+/* Get and print final statistics */
+
+static void PrintFinalStats(void *cvode_mem, void *bpdata)
+{
+  long int lenrw, leniw ;
+  long int lenrwSPGMR, leniwSPGMR;
+  long int lenrwBP, leniwBP;
+  long int nst, nfe, nsetups, nni, ncfn, netf;
+  long int nli, npe, nps, ncfl, nfeSPGMR;
+  long int nfeBP;
+  int flag;
+
+  flag = CVodeGetWorkSpace(cvode_mem, &lenrw, &leniw);
+  check_flag(&flag, "CVodeGetWorkSpace", 1);
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  flag = CVSpgmrGetWorkSpace(cvode_mem, &lenrwSPGMR, &leniwSPGMR);
+  check_flag(&flag, "CVSpgmrGetWorkSpace", 1);
+  flag = CVSpgmrGetNumLinIters(cvode_mem, &nli);
+  check_flag(&flag, "CVSpgmrGetNumLinIters", 1);
+  flag = CVSpgmrGetNumPrecEvals(cvode_mem, &npe);
+  check_flag(&flag, "CVSpgmrGetNumPrecEvals", 1);
+  flag = CVSpgmrGetNumPrecSolves(cvode_mem, &nps);
+  check_flag(&flag, "CVSpgmrGetNumPrecSolves", 1);
+  flag = CVSpgmrGetNumConvFails(cvode_mem, &ncfl);
+  check_flag(&flag, "CVSpgmrGetNumConvFails", 1);
+  flag = CVSpgmrGetNumRhsEvals(cvode_mem, &nfeSPGMR);
+  check_flag(&flag, "CVSpgmrGetNumRhsEvals", 1);
+
+  flag = CVBandPrecGetWorkSpace(bpdata, &lenrwBP, &leniwBP);
+  check_flag(&flag, "CVBandPrecGetWorkSpace", 1);
+  flag = CVBandPrecGetNumRhsEvals(bpdata, &nfeBP);
+  check_flag(&flag, "CVBandPrecGetNumRhsEvals", 1);
+
+  printf("\nFinal Statistics.. \n\n");
+  printf("lenrw   = %5ld     leniw  = %5ld\n", lenrw, leniw);
+  printf("llrw    = %5ld     lliw   = %5ld\n", lenrwSPGMR, leniwSPGMR);
+  printf("llrw    = %5ld     lliw   = %5ld\n", lenrwBP, leniwBP);
+  printf("nst     = %5ld\n"                  , nst);
+  printf("nfe     = %5ld     nfetot = %5ld\n"  , nfe, nfe+nfeSPGMR+nfeBP);
+  printf("nfeSPGMR= %5ld     nfeBP  = %5ld\n"  , nfeSPGMR, nfeBP);
+  printf("nni     = %5ld     nli    = %5ld\n"  , nni, nli);
+  printf("nsetups = %5ld     netf   = %5ld\n"  , nsetups, netf);
+  printf("npe     = %5ld     nps    = %5ld\n"  , npe, nps);
+  printf("ncfn    = %5ld     ncfl   = %5ld\n\n", ncfn, ncfl);
+}
+
+/* Check function return value...
+     opt == 0 means SUNDIALS function allocates memory so check if
+              returned NULL pointer
+     opt == 1 means SUNDIALS function returns a flag so check if
+              flag >= 0
+     opt == 2 means function allocates memory so check if returned
+              NULL pointer */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+              funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  return(0);
+}
+
+/*
+ *-------------------------------
+ * Function called by the solver
+ *-------------------------------
+ */
+
+/* f routine. Compute f(t,u). */
+
+static void f(realtype t, N_Vector u, N_Vector udot,void *f_data)
+{
+  realtype q3, c1, c2, c1dn, c2dn, c1up, c2up, c1lt, c2lt;
+  realtype c1rt, c2rt, cydn, cyup, hord1, hord2, horad1, horad2;
+  realtype qq1, qq2, qq3, qq4, rkin1, rkin2, s, vertd1, vertd2, ydn, yup;
+  realtype q4coef, dely, verdco, hordco, horaco;
+  realtype *udata, *dudata;
+  int idn, iup, ileft, iright, jx, jy;
+  UserData data;
+
+  data = (UserData) f_data;
+  udata = NV_DATA_S(u);
+  dudata = NV_DATA_S(udot);
+
+  /* Set diurnal rate coefficients. */
+
+  s = sin(data->om*t);
+  if (s > ZERO) {
+    q3 = exp(-A3/s);
+    data->q4 = exp(-A4/s);
+  } else {
+    q3 = ZERO;
+    data->q4 = ZERO;
+  }
+
+  /* Make local copies of problem variables, for efficiency. */
+
+  q4coef = data->q4;
+  dely = data->dy;
+  verdco = data->vdco;
+  hordco  = data->hdco;
+  horaco  = data->haco;
+
+  /* Loop over all grid points. */
+
+  for (jy = 0; jy < MY; jy++) {
+
+    /* Set vertical diffusion coefficients at jy +- 1/2 */
+
+    ydn = YMIN + (jy - RCONST(0.5))*dely;
+    yup = ydn + dely;
+    cydn = verdco*exp(RCONST(0.2)*ydn);
+    cyup = verdco*exp(RCONST(0.2)*yup);
+    idn = (jy == 0) ? 1 : -1;
+    iup = (jy == MY-1) ? -1 : 1;
+    for (jx = 0; jx < MX; jx++) {
+
+      /* Extract c1 and c2, and set kinetic rate terms. */
+
+      c1 = IJKth(udata,1,jx,jy); 
+      c2 = IJKth(udata,2,jx,jy);
+      qq1 = Q1*c1*C3;
+      qq2 = Q2*c1*c2;
+      qq3 = q3*C3;
+      qq4 = q4coef*c2;
+      rkin1 = -qq1 - qq2 + TWO*qq3 + qq4;
+      rkin2 = qq1 - qq2 - qq4;
+
+      /* Set vertical diffusion terms. */
+
+      c1dn = IJKth(udata,1,jx,jy+idn);
+      c2dn = IJKth(udata,2,jx,jy+idn);
+      c1up = IJKth(udata,1,jx,jy+iup);
+      c2up = IJKth(udata,2,jx,jy+iup);
+      vertd1 = cyup*(c1up - c1) - cydn*(c1 - c1dn);
+      vertd2 = cyup*(c2up - c2) - cydn*(c2 - c2dn);
+
+      /* Set horizontal diffusion and advection terms. */
+
+      ileft = (jx == 0) ? 1 : -1;
+      iright =(jx == MX-1) ? -1 : 1;
+      c1lt = IJKth(udata,1,jx+ileft,jy); 
+      c2lt = IJKth(udata,2,jx+ileft,jy);
+      c1rt = IJKth(udata,1,jx+iright,jy);
+      c2rt = IJKth(udata,2,jx+iright,jy);
+      hord1 = hordco*(c1rt - TWO*c1 + c1lt);
+      hord2 = hordco*(c2rt - TWO*c2 + c2lt);
+      horad1 = horaco*(c1rt - c1lt);
+      horad2 = horaco*(c2rt - c2lt);
+
+      /* Load all terms into udot. */
+
+      IJKth(dudata, 1, jx, jy) = vertd1 + hord1 + horad1 + rkin1; 
+      IJKth(dudata, 2, jx, jy) = vertd2 + hord2 + horad2 + rkin2;
+    }
+  }
+}
diff --git a/Win32/WinCVODE/sundials/cvode/examples_ser/cvkxb.out b/Win32/WinCVODE/sundials/cvode/examples_ser/cvkxb.out
new file mode 100644
index 0000000..1385856
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/examples_ser/cvkxb.out
@@ -0,0 +1,138 @@
+2-species diurnal advection-diffusion problem, 10 by 10 mesh
+SPGMR solver; band preconditioner; mu = 2, ml = 2
+
+
+
+Preconditioner type is:  jpre = PREC_LEFT
+
+t = 7.20e+03   no. steps = 190   order = 5   stepsize = 1.61e+02
+c1 (bot.left/middle/top rt.) =    1.047e+04     2.964e+04     1.119e+04
+c2 (bot.left/middle/top rt.) =    2.527e+11     7.154e+11     2.700e+11
+
+t = 1.44e+04   no. steps = 221   order = 5   stepsize = 3.83e+02
+c1 (bot.left/middle/top rt.) =    6.659e+06     5.316e+06     7.301e+06
+c2 (bot.left/middle/top rt.) =    2.582e+11     2.057e+11     2.833e+11
+
+t = 2.16e+04   no. steps = 246   order = 5   stepsize = 2.78e+02
+c1 (bot.left/middle/top rt.) =    2.665e+07     1.036e+07     2.931e+07
+c2 (bot.left/middle/top rt.) =    2.993e+11     1.028e+11     3.313e+11
+
+t = 2.88e+04   no. steps = 291   order = 3   stepsize = 1.31e+02
+c1 (bot.left/middle/top rt.) =    8.702e+06     1.292e+07     9.650e+06
+c2 (bot.left/middle/top rt.) =    3.380e+11     5.029e+11     3.751e+11
+
+t = 3.60e+04   no. steps = 334   order = 4   stepsize = 7.28e+01
+c1 (bot.left/middle/top rt.) =    1.404e+04     2.029e+04     1.561e+04
+c2 (bot.left/middle/top rt.) =    3.387e+11     4.894e+11     3.765e+11
+
+t = 4.32e+04   no. steps = 403   order = 5   stepsize = 4.88e+02
+c1 (bot.left/middle/top rt.) =    6.130e-06    -1.990e-05     6.818e-06
+c2 (bot.left/middle/top rt.) =    3.382e+11     1.355e+11     3.804e+11
+
+t = 5.04e+04   no. steps = 418   order = 5   stepsize = 4.88e+02
+c1 (bot.left/middle/top rt.) =   -5.176e-11    -1.077e-09     8.885e-11
+c2 (bot.left/middle/top rt.) =    3.358e+11     4.930e+11     3.864e+11
+
+t = 5.76e+04   no. steps = 433   order = 4   stepsize = 2.12e+02
+c1 (bot.left/middle/top rt.) =    1.155e-15    -7.003e-15    -4.198e-15
+c2 (bot.left/middle/top rt.) =    3.320e+11     9.650e+11     3.909e+11
+
+t = 6.48e+04   no. steps = 447   order = 4   stepsize = 5.85e+02
+c1 (bot.left/middle/top rt.) =    4.259e-16     2.045e-14     1.404e-15
+c2 (bot.left/middle/top rt.) =    3.313e+11     8.922e+11     3.963e+11
+
+t = 7.20e+04   no. steps = 459   order = 4   stepsize = 5.85e+02
+c1 (bot.left/middle/top rt.) =   -5.832e-16     8.243e-15     6.911e-16
+c2 (bot.left/middle/top rt.) =    3.330e+11     6.186e+11     4.039e+11
+
+t = 7.92e+04   no. steps = 472   order = 4   stepsize = 5.85e+02
+c1 (bot.left/middle/top rt.) =   -1.475e-14     2.060e-14     8.124e-15
+c2 (bot.left/middle/top rt.) =    3.334e+11     6.669e+11     4.120e+11
+
+t = 8.64e+04   no. steps = 484   order = 4   stepsize = 5.85e+02
+c1 (bot.left/middle/top rt.) =    3.002e-22     2.443e-18    -8.887e-16
+c2 (bot.left/middle/top rt.) =    3.352e+11     9.108e+11     4.162e+11
+
+
+Final Statistics.. 
+
+lenrw   =  2000     leniw  =    10
+llrw    =  2046     lliw   =    10
+llrw    =  2400     lliw   =   200
+nst     =   484
+nfe     =   627     nfetot =  1270
+nfeSPGMR=   598     nfeBP  =    45
+nni     =   624     nli    =   598
+nsetups =    89     netf   =    30
+npe     =     9     nps    =  1140
+ncfn    =     0     ncfl   =     0
+
+
+
+-------------------------------------------------------------------
+
+
+Preconditioner type is:  jpre = PREC_RIGHT
+
+t = 7.20e+03   no. steps = 219   order = 5   stepsize = 1.55e+02
+c1 (bot.left/middle/top rt.) =    1.047e+04     2.964e+04     1.119e+04
+c2 (bot.left/middle/top rt.) =    2.527e+11     7.154e+11     2.700e+11
+
+t = 1.44e+04   no. steps = 251   order = 5   stepsize = 3.59e+02
+c1 (bot.left/middle/top rt.) =    6.659e+06     5.316e+06     7.301e+06
+c2 (bot.left/middle/top rt.) =    2.582e+11     2.057e+11     2.833e+11
+
+t = 2.16e+04   no. steps = 279   order = 5   stepsize = 3.58e+02
+c1 (bot.left/middle/top rt.) =    2.665e+07     1.036e+07     2.931e+07
+c2 (bot.left/middle/top rt.) =    2.993e+11     1.028e+11     3.313e+11
+
+t = 2.88e+04   no. steps = 302   order = 5   stepsize = 1.70e+02
+c1 (bot.left/middle/top rt.) =    8.702e+06     1.292e+07     9.650e+06
+c2 (bot.left/middle/top rt.) =    3.380e+11     5.029e+11     3.751e+11
+
+t = 3.60e+04   no. steps = 340   order = 4   stepsize = 5.80e+01
+c1 (bot.left/middle/top rt.) =    1.404e+04     2.029e+04     1.561e+04
+c2 (bot.left/middle/top rt.) =    3.387e+11     4.894e+11     3.765e+11
+
+t = 4.32e+04   no. steps = 397   order = 5   stepsize = 5.83e+02
+c1 (bot.left/middle/top rt.) =   -3.393e-09    -2.304e-09    -3.658e-09
+c2 (bot.left/middle/top rt.) =    3.382e+11     1.355e+11     3.804e+11
+
+t = 5.04e+04   no. steps = 416   order = 5   stepsize = 3.34e+02
+c1 (bot.left/middle/top rt.) =   -6.444e-12    -6.155e-09    -1.285e-09
+c2 (bot.left/middle/top rt.) =    3.358e+11     4.930e+11     3.864e+11
+
+t = 5.76e+04   no. steps = 430   order = 5   stepsize = 4.11e+02
+c1 (bot.left/middle/top rt.) =    3.314e-16     4.376e-14     2.254e-18
+c2 (bot.left/middle/top rt.) =    3.320e+11     9.650e+11     3.909e+11
+
+t = 6.48e+04   no. steps = 440   order = 5   stepsize = 7.57e+02
+c1 (bot.left/middle/top rt.) =    3.963e-15    -1.020e-14    -2.279e-16
+c2 (bot.left/middle/top rt.) =    3.313e+11     8.922e+11     3.963e+11
+
+t = 7.20e+04   no. steps = 450   order = 5   stepsize = 7.57e+02
+c1 (bot.left/middle/top rt.) =   -2.200e-15     2.374e-15    -2.062e-18
+c2 (bot.left/middle/top rt.) =    3.330e+11     6.186e+11     4.039e+11
+
+t = 7.92e+04   no. steps = 459   order = 5   stepsize = 7.57e+02
+c1 (bot.left/middle/top rt.) =   -1.736e-15     1.067e-13    -2.145e-18
+c2 (bot.left/middle/top rt.) =    3.334e+11     6.669e+11     4.120e+11
+
+t = 8.64e+04   no. steps = 469   order = 5   stepsize = 7.57e+02
+c1 (bot.left/middle/top rt.) =    5.919e-16    -1.245e-13    -3.982e-18
+c2 (bot.left/middle/top rt.) =    3.352e+11     9.106e+11     4.163e+11
+
+
+Final Statistics.. 
+
+lenrw   =  2000     leniw  =    10
+llrw    =  2046     lliw   =    10
+llrw    =  2400     lliw   =   200
+nst     =   469
+nfe     =   621     nfetot =  1421
+nfeSPGMR=   715     nfeBP  =    85
+nni     =   618     nli    =   715
+nsetups =    90     netf   =    32
+npe     =     8     nps    =  1213
+ncfn    =     0     ncfl   =     0
+
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/Makefile b/Win32/WinCVODE/sundials/cvode/fcmix/Makefile
new file mode 100644
index 0000000..87d96d0
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/Makefile
@@ -0,0 +1,91 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:22:58 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/cvode/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for FCVODE module
+#
+# cvode/fcmix/Makefile.  Generated from Makefile.in by configure.
+# -----------------------------------------------------------------
+
+SHELL = /bin/bash
+
+srcdir       = .
+builddir     = .
+abs_builddir = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials/cvode/fcmix
+top_builddir = ../../
+prefix       = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials
+exec_prefix  = ${prefix}
+includedir   = ${prefix}/include
+libdir       = ${exec_prefix}/lib
+
+INSTALL        = /usr/bin/install -c
+INSTALL_LIB    = ${INSTALL}
+INSTALL_HEADER = ${INSTALL} -m 644
+
+LIBTOOL      = $(SHELL) $(top_builddir)/libtool
+LIBTOOL_DEPS = config/ltmain.sh
+
+CPP      = /usr/bin/cc -E
+CPPFLAGS = 
+CC       = /usr/bin/cc
+CFLAGS   = -g -O2
+LDFLAGS  = 
+LIBS     = -lm 
+
+SHARED_INC_DIR   = $(srcdir)/../../shared/include
+CVODE_INC_DIR    = $(srcdir)/../include
+FCVODE_INC_DIR   = $(srcdir)
+
+FCVODE_LIB       = libsundials_fcvode.la
+FCVODE_LIB_FILES = fcvode.lo fcvband.lo fcvdense.lo fcvjtimes.lo fcvpreco.lo fcvbbd.lo fcvbp.lo fcvroot.lo fcvewt.lo
+
+OBJECT_FILES = fcvode.o fcvband.o fcvdense.o fcvjtimes.o fcvpreco.o fcvbbd.o fcvbp.o fcvroot.o fcvewt.o
+
+all: update $(FCVODE_LIB_FILES)
+
+update:
+	${INSTALL_HEADER} ${top_builddir}/config/sundials_config.h ${builddir}
+
+install: update $(FCVODE_LIB_FILES)
+	$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(FCVODE_LIB) $(FCVODE_LIB_FILES) -rpath $(libdir) $(LDFLAGS) $(LIBS) -static -avoid-version
+	$(LIBTOOL) --mode=install $(INSTALL_LIB) $(FCVODE_LIB) $(libdir)
+
+clean:
+	$(LIBTOOL) --mode=clean rm -f $(FCVODE_LIB)
+	rm -f $(FCVODE_LIB_FILES)
+	rm -f $(OBJECT_FILES)
+	rm -f sundials_config.h
+
+uninstall: clean
+	$(LIBTOOL) --mode=uninstall rm -f $(libdir)/$(FCVODE_LIB)
+
+fcvode.lo: $(srcdir)/fcvode.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvode.c
+fcvewt.lo: $(srcdir)/fcvewt.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvewt.c
+fcvband.lo: $(srcdir)/fcvband.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvband.c
+fcvdense.lo: $(srcdir)/fcvdense.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvdense.c
+fcvjtimes.lo: $(srcdir)/fcvjtimes.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvjtimes.c
+fcvpreco.lo: $(srcdir)/fcvpreco.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvpreco.c
+fcvbbd.lo: $(srcdir)/fcvbbd.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvbbd.c
+fcvbp.lo: $(srcdir)/fcvbp.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvbp.c
+fcvroot.lo: $(srcdir)/fcvroot.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvroot.c
+
+libtool: $(top_builddir)/$(LIBTOOL_DEPS)
+	@cd $(top_builddir) ;                 \
+	 $(SHELL) ./config.status --recheck ; \
+	 cd $(abs_builddir)
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/Makefile.in b/Win32/WinCVODE/sundials/cvode/fcmix/Makefile.in
new file mode 100644
index 0000000..b83c01d
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/Makefile.in
@@ -0,0 +1,91 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:22:58 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/cvode/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for FCVODE module
+#
+# @configure_input@
+# -----------------------------------------------------------------
+
+SHELL = @SHELL@
+
+srcdir       = @srcdir@
+builddir     = @builddir@
+abs_builddir = @abs_builddir@
+top_builddir = @top_builddir@
+prefix       = @prefix@
+exec_prefix  = @exec_prefix@
+includedir   = @includedir@
+libdir       = @libdir@
+
+INSTALL        = @INSTALL@
+INSTALL_LIB    = @INSTALL_PROGRAM@
+INSTALL_HEADER = @INSTALL_DATA@
+
+LIBTOOL      = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+
+CPP      = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CC       = @CC@
+CFLAGS   = @CFLAGS@
+LDFLAGS  = @LDFLAGS@
+LIBS     = @LIBS@
+
+SHARED_INC_DIR   = $(srcdir)/../../shared/include
+CVODE_INC_DIR    = $(srcdir)/../include
+FCVODE_INC_DIR   = $(srcdir)
+
+FCVODE_LIB       = libsundials_fcvode.la
+FCVODE_LIB_FILES = fcvode.lo fcvband.lo fcvdense.lo fcvjtimes.lo fcvpreco.lo fcvbbd.lo fcvbp.lo fcvroot.lo fcvewt.lo
+
+OBJECT_FILES = fcvode.o fcvband.o fcvdense.o fcvjtimes.o fcvpreco.o fcvbbd.o fcvbp.o fcvroot.o fcvewt.o
+
+all: update $(FCVODE_LIB_FILES)
+
+update:
+	${INSTALL_HEADER} ${top_builddir}/config/sundials_config.h ${builddir}
+
+install: update $(FCVODE_LIB_FILES)
+	$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(FCVODE_LIB) $(FCVODE_LIB_FILES) -rpath $(libdir) $(LDFLAGS) $(LIBS) -static -avoid-version
+	$(LIBTOOL) --mode=install $(INSTALL_LIB) $(FCVODE_LIB) $(libdir)
+
+clean:
+	$(LIBTOOL) --mode=clean rm -f $(FCVODE_LIB)
+	rm -f $(FCVODE_LIB_FILES)
+	rm -f $(OBJECT_FILES)
+	rm -f sundials_config.h
+
+uninstall: clean
+	$(LIBTOOL) --mode=uninstall rm -f $(libdir)/$(FCVODE_LIB)
+
+fcvode.lo: $(srcdir)/fcvode.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvode.c
+fcvewt.lo: $(srcdir)/fcvewt.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvewt.c
+fcvband.lo: $(srcdir)/fcvband.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvband.c
+fcvdense.lo: $(srcdir)/fcvdense.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvdense.c
+fcvjtimes.lo: $(srcdir)/fcvjtimes.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvjtimes.c
+fcvpreco.lo: $(srcdir)/fcvpreco.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvpreco.c
+fcvbbd.lo: $(srcdir)/fcvbbd.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvbbd.c
+fcvbp.lo: $(srcdir)/fcvbp.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvbp.c
+fcvroot.lo: $(srcdir)/fcvroot.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) -I$(FCVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/fcvroot.c
+
+libtool: $(top_builddir)/$(LIBTOOL_DEPS)
+	@cd $(top_builddir) ;                 \
+	 $(SHELL) ./config.status --recheck ; \
+	 cd $(abs_builddir)
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/Makefile.in b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/Makefile.in
new file mode 100644
index 0000000..7ee8960
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/Makefile.in
@@ -0,0 +1,79 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:23:36 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/cvode/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for FCVODE serial examples
+#
+# @configure_input@
+# -----------------------------------------------------------------
+
+SHELL = @SHELL@
+
+srcdir       = @srcdir@
+top_builddir = @top_builddir@
+builddir     = @builddir@
+prefix       = @prefix@
+exec_prefix  = @exec_prefix@
+includedir   = @includedir@
+libdir       = @libdir@
+
+INSTALL = @INSTALL@
+
+ at LIBTOOL_CMD@
+
+F77     = @F77@
+FFLAGS  = @FFLAGS@
+FLIBS   = @FLIBS@
+CC      = @CC@
+LDFLAGS = @LDFLAGS@
+LIBS    = @LIBS@
+
+COMPILER_PREFIX = @COMPILER_PREFIX@
+LINKER_PREFIX   = @LINKER_PREFIX@
+
+SUNDIALS_LIB_DIR = $(libdir)
+SUNDIALS_LIBS    = -lsundials_fcvode -lsundials_cvode -lsundials_fnvecserial -lsundials_nvecserial -lsundials_shared
+
+EXEC_FILES = cvdensef cvbandf cvkryf cvkrybf
+
+all: $(EXEC_FILES)
+
+fortran_update.sh:
+	@${INSTALL} ${top_builddir}/config/fortran_update.sh ${builddir}
+
+cvdensef: $(srcdir)/cvdensef.f fortran_update.sh
+	@${SHELL} ${builddir}/fortran_update.sh ${srcdir} cvdensef.f
+	$(COMPILER_PREFIX) $(F77) $(FFLAGS) -c $(builddir)/cvdensef-updated.f
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdensef $(builddir)/cvdensef-updated.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) $(FLIBS) 
+
+cvbandf: $(srcdir)/cvbandf.f fortran_update.sh
+	@${SHELL} ${builddir}/fortran_update.sh ${srcdir} cvbandf.f
+	$(COMPILER_PREFIX) $(F77) $(FFLAGS) -c $(builddir)/cvbandf-updated.f
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvbandf $(builddir)/cvbandf-updated.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) $(FLIBS) 
+
+cvkryf: $(srcdir)/cvkryf.f fortran_update.sh
+	@${SHELL} ${builddir}/fortran_update.sh ${srcdir} cvkryf.f
+	$(COMPILER_PREFIX) $(F77) $(FFLAGS) -c $(builddir)/cvkryf-updated.f
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvkryf $(builddir)/cvkryf-updated.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) $(FLIBS) 
+
+cvkrybf: $(srcdir)/cvkrybf.f fortran_update.sh
+	@${SHELL} ${builddir}/fortran_update.sh ${srcdir} cvkrybf.f
+	$(COMPILER_PREFIX) $(F77) $(FFLAGS) -c $(builddir)/cvkrybf-updated.f
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvkrybf $(builddir)/cvkrybf-updated.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) $(FLIBS) 
+
+clean:
+	rm -rf .libs
+	rm -f *.lo
+	rm -f *.o
+	rm -f *-updated.f
+	rm -f fortran_update.sh
+
+uninstall: clean
+	rm -f $(EXEC_FILES)
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/README b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/README
new file mode 100644
index 0000000..d0c1c2a
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/README
@@ -0,0 +1,17 @@
+List of serial CVODE FCMIX examples
+
+  cvdensef : chemical kinetics example (BDF/DENSE)
+  cvbandf  : advection-diffusion example (BDF/BAND)
+  cvkrybf  : kinetics-transport example (BDF/BAND)
+  cvkryf   : kinetics-transport example (BDF/SPGMR)
+
+Sample results:
+
+  SUNDIALS was built with the following options:
+
+  ./configure CC=gcc F77=g77
+
+  System Architecture: IA-32
+  Processor Type: Intel Pentium 4 Xeon DP (i686)
+  Operating System: Red Hat Enterprise Linux WS 3
+  C/Fortran Compilers: gcc/g77 v3.2.3-39 (Red Hat)
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvbandf.f b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvbandf.f
new file mode 100644
index 0000000..488a42d
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvbandf.f
@@ -0,0 +1,249 @@
+C     ----------------------------------------------------------------
+C     $Revision: 1.1 $
+C     $Date: 2005/10/27 13:23:36 $
+C     ----------------------------------------------------------------
+C     FCVODE Example Problem: Advection-diffusion, banded user
+C     Jacobian.
+C
+C     The following is a simple example problem with a banded
+C     Jacobian. The problem is the semi-discrete form of the
+C     advection-diffusion equation in 2D:
+C     du/dt = d^2 u / dx^2 + .5 du/dx + d^2 u / dy^2
+C     on the rectangle 0 <= x <= 2, 0 <= y <= 1, and the time
+C     interval 0 <= t <= 1. Homogeneous Dirichlet boundary conditions
+C     are posed, and the initial condition is the following:
+C     u(x,y,t=0) = x(2-x)y(1-y)exp(5xy) .
+C     The PDE is discretized on a uniform MX+2 by MY+2 grid with
+C     central differencing, and with boundary values eliminated,
+C     leaving an ODE system of size NEQ = MX*MY.
+C     This program solves this problem with CVODE, using the Fortran/C 
+C     interface routine package. This solution uses the BDF method,
+C     a user-supplied banded Jacobian routine, and scalar relative and
+C     absolute tolerances. It prints results at t = .1, .2, ..., 1.0.
+C     At the end of the run, various counters of interest are printed.
+C     ----------------------------------------------------------------
+C
+      IMPLICIT NONE
+C
+      INTEGER IER, LNST, LNFE, LNSETUP, LNNI, LNCF, LNETF, LNJE
+      INTEGER METH, ITMETH, IATOL, INOPT, ITASK, IOUT
+      INTEGER*4 IOPT(40)
+      INTEGER*4 NEQ, MU, ML, MX, MY
+      DOUBLE PRECISION RTOL, ATOL, T0, T, TOUT, DTOUT, UNORM 
+      DOUBLE PRECISION U(50), ROPT(40)
+C
+      DATA LNST/4/, LNFE/5/, LNSETUP/6/, LNNI/7/, LNCF/8/, LNETF/9/,
+     1     LNJE/18/
+C
+      MX = 10
+      MY = 5
+      NEQ = MX * MY
+      T0 = 0.0D0
+      CALL INITBX(MX, MY, U)
+      METH = 2
+      ITMETH = 2
+      IATOL = 1
+      RTOL = 0.0D0
+      ATOL = 1.0D-5
+      INOPT = 0
+      MU = MY
+      ML = MY
+      DTOUT = 0.1D0
+      ITASK = 1
+C
+      WRITE(6,10) NEQ
+ 10   FORMAT('Band example problem:'//
+     1       ' Advection-diffusion, NEQ = ', I2//)
+C
+      CALL FNVINITS(NEQ, IER)
+      IF (IER .NE. 0) THEN
+        WRITE(6,20) IER
+ 20     FORMAT(///' SUNDIALS_ERROR: FNVINITS returned IER = ', I5)
+        STOP
+      ENDIF
+C
+      CALL FCVMALLOC(T0, U, METH, ITMETH, IATOL, RTOL, ATOL,
+     1               INOPT, IOPT, ROPT, IER)
+      IF (IER .NE. 0) THEN
+        WRITE(6,30) IER
+ 30     FORMAT(///' SUNDIALS_ERROR: FCVMALLOC returned IER = ', I5)
+        CALL FNVFREES
+        STOP
+        ENDIF
+C
+      CALL FCVBAND(NEQ, MU, ML, IER)
+      IF (IER .NE. 0) THEN
+        WRITE(6,40) IER
+ 40     FORMAT(///' SUNDIALS_ERROR: FCVBAND returned IER = ', I5)
+        CALL FNVFREES
+        CALL FCVFREE
+        STOP
+      ENDIF
+C
+      CALL FCVBANDSETJAC(1, IER)
+C
+      CALL MAXNORM(NEQ, U, UNORM)
+      WRITE(6,45) T0, UNORM
+ 45   FORMAT(' At t = ', F6.2, '  max.norm(u) = ', E14.6)
+C
+      TOUT = DTOUT
+      DO 70 IOUT = 1, 10
+C
+        CALL FCVODE(TOUT, T, U, ITASK, IER)
+C
+        CALL MAXNORM(NEQ, U, UNORM)
+        WRITE(6,50) T, UNORM, IOPT(LNST)
+ 50     FORMAT(' At t = ', F6.2, '  max.norm(u) = ', E14.6,
+     1         '  NST = ', I4)
+C
+        IF (IER .NE. 0) THEN
+          WRITE(6,60) IER, IOPT(26)
+ 60       FORMAT(///' SUNDIALS_ERROR: FCVODE returned IER = ', I5, /,
+     1           '                 Linear Solver returned IER = ', I5)
+          CALL FNVFREES
+          CALL FCVFREE
+          STOP
+          ENDIF
+C
+          TOUT = TOUT + DTOUT
+ 70    CONTINUE
+C
+      WRITE(6,80) IOPT(LNST), IOPT(LNFE), IOPT(LNJE), IOPT(LNSETUP),
+     1            IOPT(LNNI), IOPT(LNCF), IOPT(LNETF)
+ 80   FORMAT(//'Final statistics:'//
+     1       ' No. steps = ', I4, '  No. f-s = ', I4,
+     2       '  No. J-s = ', I4, '   No. LU-s = ', I4/
+     3       ' No. nonlinear iterations = ', I4/
+     4       ' No. nonlinear convergence failures = ', I4/
+     5       ' No. error test failures = ', I4)
+C
+      CALL FCVFREE
+      CALL FNVFREES
+C
+      STOP
+      END
+
+      SUBROUTINE INITBX(MESHX, MESHY, U0)
+C Load Common with problem constants and U0 with initial values
+      IMPLICIT NONE
+C
+      INTEGER*4 I, J, MX, MY
+      INTEGER*4 MESHX, MESHY
+      DOUBLE PRECISION U0(MESHY,MESHX)
+      DOUBLE PRECISION DX, DY, HDCOEF, HACOEF, VDCOEF
+      DOUBLE PRECISION XMAX, YMAX, X, Y
+C
+      DATA XMAX/2.0D0/, YMAX/1.0D0/
+      COMMON /PAR/ DX, DY, HDCOEF, HACOEF, VDCOEF, MX, MY
+C
+C Load constants in Common.
+      MX = MESHX
+      MY = MESHY
+      DX = XMAX / (MX + 1)
+      DY = YMAX / (MY + 1)
+      HDCOEF = 1.0D0 / (DX * DX)
+      HACOEF = 0.5D0 / (2.0D0 * DX)
+      VDCOEF = 1.0D0 / (DY * DY)
+C
+C Loop over grid and load initial values.
+      DO 20 I = 1, MX
+        X = I * DX
+        DO 10 J = 1, MY
+          Y = J * DY
+          U0(J,I) = X * (XMAX - X) * Y * (YMAX - Y) *
+     *              EXP(5.0D0 * X * Y)
+ 10       CONTINUE
+ 20     CONTINUE
+C
+      RETURN
+      END
+
+      SUBROUTINE MAXNORM(N, U, UNORM)
+C Compute max-norm of array U
+      IMPLICIT NONE
+C
+      INTEGER*4 I, N
+      DOUBLE PRECISION U(*), UNORM, TEMP
+C
+      TEMP = 0.0D0
+      DO 10 I = 1, N
+         TEMP = MAX(ABS(U(I)), TEMP)
+ 10   CONTINUE
+      UNORM = TEMP
+      RETURN
+      END
+
+      SUBROUTINE FCVFUN(T, U, UDOT)
+C Right-hand side routine
+      IMPLICIT NONE
+C
+      INTEGER*4 I, MX, IOFF, MY, J, IJ
+      DOUBLE PRECISION T, U(*), UDOT(*)
+      DOUBLE PRECISION UIJ, UDN, UUP, ULT, URT, HDIFF, HADV, VDIFF
+      DOUBLE PRECISION DX, DY, HDCOEF, HACOEF, VDCOEF
+C
+      COMMON /PAR/ DX, DY, HDCOEF, HACOEF, VDCOEF, MX, MY
+C
+C Loop over all grid points.
+      DO 20 I = 1, MX
+        IOFF = (I - 1) * MY
+        DO 10 J = 1, MY
+C
+C Extract u at x_i, y_j and four neighboring points.
+          IJ = J + IOFF
+          UIJ = U(IJ)
+          UDN = 0.0D0
+          IF (J .NE. 1)  UDN = U(IJ - 1)
+          UUP = 0.0D0
+          IF (J .NE. MY) UUP = U(IJ + 1)
+          ULT = 0.0D0
+          IF (I .NE. 1)  ULT = U(IJ - MY)
+          URT = 0.0D0
+          IF (I .NE. MX) URT = U(IJ + MY)
+C
+C Set diffusion and advection terms and load into UDOT.
+          HDIFF = HDCOEF * (ULT - 2.0D0 * UIJ + URT)
+          HADV = HACOEF * (URT - ULT)
+          VDIFF = VDCOEF * (UUP - 2.0D0 * UIJ + UDN)
+          UDOT(IJ) = HDIFF + HADV + VDIFF
+ 10       CONTINUE
+ 20     CONTINUE
+C
+      RETURN
+      END
+
+      SUBROUTINE FCVBJAC(N, MU, ML, MDIM, T, U, FU,
+     1                   BJAC, EWT, H, V1, V2, V3)
+C Load banded Jacobian
+      IMPLICIT NONE
+C
+      INTEGER*4 MDIM, MBAND, MX, MY, N
+      INTEGER*4 I, J, K, IOFF, MU1, MU2, MU, ML
+      DOUBLE PRECISION BJAC(MDIM,*)
+      DOUBLE PRECISION DX, DY, HDCOEF, HACOEF, VDCOEF
+      DOUBLE PRECISION T, U, FU, EWT, V1, V2, V3, H
+C
+      COMMON /PAR/ DX, DY, HDCOEF, HACOEF, VDCOEF, MX, MY
+C
+      MU1 = MU + 1
+      MU2 = MU + 2
+      MBAND = MU + 1 + ML
+C
+C Loop over all grid points.
+      DO 20 I = 1, MX
+        IOFF = (I - 1) * MY
+        DO 10 J = 1, MY
+          K = J + IOFF
+C
+C Set Jacobian elements in column k of Jb.
+          BJAC(MU1,K) = -2.0D0 * (VDCOEF + HDCOEF)
+          IF (I .NE. 1)  BJAC(1,K) = HDCOEF + HACOEF
+          IF (I .NE. MX) BJAC(MBAND,K) = HDCOEF - HACOEF
+          IF (J .NE. 1)  BJAC(MU,K) = VDCOEF
+          IF (J .NE. MY) BJAC(MU2,K) = VDCOEF
+C
+ 10       CONTINUE
+ 20     CONTINUE
+C
+      RETURN
+      END
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvbandf.out b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvbandf.out
new file mode 100644
index 0000000..90d467e
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvbandf.out
@@ -0,0 +1,24 @@
+Band example problem:
+
+ Advection-diffusion, NEQ = 50
+
+
+ At t =   0.00  max.norm(u) =   0.895472E+02
+ At t =   0.10  max.norm(u) =   0.413289E+01  NST =   85
+ At t =   0.20  max.norm(u) =   0.103929E+01  NST =  103
+ At t =   0.30  max.norm(u) =   0.297983E+00  NST =  113
+ At t =   0.40  max.norm(u) =   0.876577E-01  NST =  120
+ At t =   0.50  max.norm(u) =   0.262564E-01  NST =  126
+ At t =   0.60  max.norm(u) =   0.783042E-02  NST =  130
+ At t =   0.70  max.norm(u) =   0.232939E-02  NST =  134
+ At t =   0.80  max.norm(u) =   0.695343E-03  NST =  137
+ At t =   0.90  max.norm(u) =   0.211598E-03  NST =  140
+ At t =   1.00  max.norm(u) =   0.655685E-04  NST =  142
+
+
+Final statistics:
+
+ No. steps =  142  No. f-s =  173  No. J-s =    3   No. LU-s =   23
+ No. nonlinear iterations =  170
+ No. nonlinear convergence failures =    0
+ No. error test failures =    3
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvdensef.f b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvdensef.f
new file mode 100644
index 0000000..bfe81c6
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvdensef.f
@@ -0,0 +1,212 @@
+C     ----------------------------------------------------------------
+C     $Revision: 1.1 $
+C     $Date: 2005/10/27 13:23:36 $
+C     ----------------------------------------------------------------
+C     FCVODE Example Problem: Robertson kinetics, dense user Jacobian.
+C
+C     The following is a simple example problem, with the coding
+C     needed for its solution by CVODE. The problem is from chemical
+C     kinetics, and consists of the following three rate equations:
+C
+C     dy1/dt = -.04*y1 + 1.e4*y2*y3
+C     dy2/dt = .04*y1 - 1.e4*y2*y3 - 3.e7*y2**2
+C     dy3/dt = 3.e7*y2**2
+C
+C     on the interval from t = 0.0 to t = 4.e10, with initial
+C     conditions:
+C
+C     y1 = 1.0, y2 = y3 = 0.
+C
+C     The problem is stiff. While integrating the system, we also
+C     use the root finding feature to find the points at which
+C     y1 = 1.e-4 or at which y3 = 0.01. The following coding solves
+C     this problem with CVODE, using the Fortran/C interface routine
+C     package. This solution uses the BDF method and a user-supplied
+C     Jacobian routine, and prints results at t = .4, 4., ..., 4.e10.
+C     It uses ITOL = 2 and ATOL much smaller for y2 than y1 or y3
+C     because y2 has much smaller values. At the end of the run,
+C     various counters of interest are printed.
+C     ----------------------------------------------------------------
+C
+      IMPLICIT NONE
+C
+      INTEGER IER, LNST, LNFE, LNSETUP, LNNI, LNCF, LNETF, LNJE, I
+      INTEGER METH, ITMETH, ITOL, INOPT, ITASK, IOUT, NOUT, IERROOT
+      INTEGER INFO(2)
+      INTEGER*4 IOPT(40)
+      INTEGER*4 NEQ, NGE
+      DOUBLE PRECISION RTOL, T, T0, TOUT
+      DOUBLE PRECISION Y(3), ATOL(3), ROPT(40)
+C
+      DATA LNST/4/, LNFE/5/, LNSETUP/6/, LNNI/7/, LNCF/8/, LNETF/9/,
+     1     LNJE/18/, NGE/25/
+C
+      NEQ = 3
+      T0 = 0.0D0
+      Y(1) = 1.0D0
+      Y(2) = 0.0D0
+      Y(3) = 0.0D0
+      METH = 2
+      ITMETH = 2
+      ITOL = 2
+      RTOL = 1.0D-4
+      ATOL(1) = 1.0D-8
+      ATOL(2) = 1.0D-14
+      ATOL(3) = 1.0D-6
+      INOPT = 0
+      TOUT = 0.4D0
+      ITASK = 1
+      IOUT = 0
+      NOUT = 12
+C
+      WRITE(6,10) NEQ
+ 10   FORMAT('Dense example problem:'//
+     1       ' Robertson kinetics, NEQ = ', I2//)
+C
+      CALL FNVINITS(NEQ, IER)
+      IF (IER .NE. 0) THEN
+        WRITE(6,20) IER
+ 20     FORMAT(///' SUNDIALS_ERROR: FNVINITS returned IER = ', I5)
+        STOP
+      ENDIF
+C
+      CALL FCVMALLOC(T0, Y, METH, ITMETH, ITOL, RTOL, ATOL,
+     1               INOPT, IOPT, ROPT, IER)
+      IF (IER .NE. 0) THEN
+        WRITE(6,30) IER
+ 30     FORMAT(///' SUNDIALS_ERROR: FCVMALLOC returned IER = ', I5)
+        CALL FNVFREES
+        STOP
+      ENDIF
+C
+      CALL FCVROOTINIT(2, IER)
+      IF (IER .NE. 0) THEN
+         WRITE(6,45) IER
+ 45      FORMAT(///' SUNDIALS_ERROR: FCVROOTINIT returned IER = ', I5)
+         CALL FNVFREES
+         CALL FCVFREE
+         STOP
+      ENDIF
+C
+      CALL FCVDENSE(NEQ, IER)
+      IF (IER .NE. 0) THEN
+        WRITE(6,40) IER
+ 40     FORMAT(///' SUNDIALS_ERROR: FCVDENSE returned IER = ', I5)
+        CALL FNVFREES
+        CALL FCVFREE
+        STOP
+      ENDIF
+C
+      CALL FCVDENSESETJAC(1, IER)
+C
+      DO WHILE(IOUT .LT. NOUT)
+C
+        CALL FCVODE(TOUT, T, Y, ITASK, IER)
+C
+        WRITE(6,50) T, Y(1), Y(2), Y(3)
+ 50     FORMAT('At t = ', E12.4, '   y = ', 3E14.6)
+C
+        IF (IER .LT. 0) THEN
+           WRITE(6,60) IER, IOPT(26)
+ 60        FORMAT(///' SUNDIALS_ERROR: FCVODE returned IER = ', I5, /,
+     1            '                 Linear Solver returned IER = ', I5)
+           CALL FNVFREES
+           CALL FCVROOTFREE
+           CALL FCVFREE
+           STOP
+        ENDIF
+C
+        IF (IER .EQ. 2) THEN
+           CALL FCVROOTINFO(2, INFO, IERROOT)
+           IF (IERROOT .LT. 0) THEN
+              WRITE(6,65) IER
+ 65           FORMAT(///' SUNDIALS_ERROR: FCVROOTINFO returned IER = ',
+     1              I5)
+              CALL FNVFREES
+              CALL FCVROOTFREE
+              CALL FCVFREE
+              STOP
+           ENDIF
+           WRITE(6,70) (INFO(I), I = 1, 2)
+ 70        FORMAT(5X, 'Above is a root, INFO() = ', 2I3)
+        ENDIF                   
+C
+        IF (IER .EQ. 0) THEN
+           TOUT = TOUT * 10.0D0
+           IOUT = IOUT + 1
+        ENDIF
+C
+      ENDDO
+C
+      CALL FCVDKY(T, 1, Y, IER)
+      IF (IER .NE. 0) THEN
+         WRITE(6,80) IER
+ 80      FORMAT(///' SUNDIALS_ERROR: FCVDKY returned IER = ', I4)
+         CALL FNVFREES
+         CALL FCVROOTFREE
+         CALL FCVFREE
+         STOP
+      ENDIF
+      WRITE(6,85) Y(1), Y(2), Y(3)
+ 85   FORMAT(/'Final value of ydot = ', 3E14.6)
+C
+      WRITE(6,90) IOPT(LNST), IOPT(LNFE), IOPT(LNJE), IOPT(LNSETUP),
+     1            IOPT(LNNI), IOPT(LNCF), IOPT(LNETF), IOPT(NGE)
+ 90   FORMAT(//'Final statistics:'//
+     1       ' No. steps = ', I4, '   No. f-s = ', I4,
+     2       '   No. J-s = ', I4, '   No. LU-s = ', I4/
+     3       ' No. nonlinear iterations = ', I4/
+     4       ' No. nonlinear convergence failures = ', I4/
+     5       ' No. error test failures = ', I4/
+     6       ' No. root function evals = ', I4)
+C
+      CALL FCVROOTFREE
+      CALL FCVFREE
+      CALL FNVFREES
+C
+      STOP
+      END
+
+      SUBROUTINE FCVFUN(T, Y, YDOT)
+C Fortran routine for right-hand side function.
+      IMPLICIT NONE
+C
+      DOUBLE PRECISION T, Y(*), YDOT(*)
+C
+      YDOT(1) = -0.04D0 * Y(1) + 1.0D4 * Y(2) * Y(3)
+      YDOT(3) = 3.0D7 * Y(2) * Y(2)
+      YDOT(2) = -YDOT(1) - YDOT(3)
+      RETURN
+      END
+
+      SUBROUTINE FCVROOTFN(T, Y, G)
+C Fortran routine for root finding
+      IMPLICIT NONE
+C
+      DOUBLE PRECISION T, Y(*), G(*)
+C
+      G(1) = Y(1) - 1.0D-4
+      G(2) = Y(3) - 1.0D-2
+      RETURN
+      END
+
+      SUBROUTINE FCVDJAC(N, T, Y, FY, JAC, EWT, H, V1, V2, V3)
+C Fortran routine for dense user-supplied Jacobian.
+      IMPLICIT NONE
+C
+      INTEGER*4 N
+      DOUBLE PRECISION T, Y(*), JAC(N,*), Y1, Y2, Y3
+      DOUBLE PRECISION FY, EWT, V1, V2, V3, H
+C
+      Y1 = Y(1)
+      Y2 = Y(2)
+      Y3 = Y(3)
+      JAC(1,1) = -0.04D0
+      JAC(1,2) = 1.0D4 * Y3
+      JAC(1,3) = 1.0D4 * Y2
+      JAC(2,1) =  0.04D0
+      JAC(2,2) = -1.0D4 * Y3 - 6.0D7 * Y2
+      JAC(2,3) = -1.0D4 * Y2
+      JAC(3,2) = 6.0D7 * Y2
+      RETURN
+      END
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvdensef.out b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvdensef.out
new file mode 100644
index 0000000..d174fb3
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvdensef.out
@@ -0,0 +1,32 @@
+Dense example problem:
+
+ Robertson kinetics, NEQ =  3
+
+
+At t =   0.2639E+00   y =   0.989965E+00  0.347056E-04  0.100000E-01
+     Above is a root, INFO() =   0  1
+At t =   0.4000E+00   y =   0.985164E+00  0.338624E-04  0.148021E-01
+At t =   0.4000E+01   y =   0.905510E+00  0.224034E-04  0.944679E-01
+At t =   0.4000E+02   y =   0.715795E+00  0.918349E-05  0.284196E+00
+At t =   0.4000E+03   y =   0.450542E+00  0.322296E-05  0.549455E+00
+At t =   0.4000E+04   y =   0.183188E+00  0.894132E-06  0.816811E+00
+At t =   0.4000E+05   y =   0.389787E-01  0.162157E-06  0.961021E+00
+At t =   0.4000E+06   y =   0.494002E-02  0.198572E-07  0.995060E+00
+At t =   0.4000E+07   y =   0.516511E-03  0.206710E-08  0.999483E+00
+At t =   0.2081E+08   y =   0.100000E-03  0.400039E-09  0.999900E+00
+     Above is a root, INFO() =   1  0
+At t =   0.4000E+08   y =   0.520146E-04  0.208069E-09  0.999948E+00
+At t =   0.4000E+09   y =   0.520718E-05  0.208288E-10  0.999995E+00
+At t =   0.4000E+10   y =   0.510581E-06  0.204233E-11  0.999999E+00
+At t =   0.4000E+11   y =   0.451131E-07  0.180452E-12  0.100000E+01
+
+Final value of ydot =  -0.851851E-18 -0.340740E-23  0.851854E-18
+
+
+Final statistics:
+
+ No. steps =  515   No. f-s =  754   No. J-s =   12   No. LU-s =  110
+ No. nonlinear iterations =  751
+ No. nonlinear convergence failures =    0
+ No. error test failures =   26
+ No. root function evals =  541
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvkrybf.f b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvkrybf.f
new file mode 100644
index 0000000..aa741fc
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvkrybf.f
@@ -0,0 +1,294 @@
+C     ----------------------------------------------------------------
+C     $Revision: 1.1 $
+C     $Date: 2005/10/27 13:23:36 $
+C     ----------------------------------------------------------------
+C     FCVODE Example Problem: 2D kinetics-transport, 
+C     precond. Krylov solver. 
+C     
+C     An ODE system is generated from the following 2-species diurnal
+C     kinetics advection-diffusion PDE system in 2 space dimensions:
+C     
+C     dc(i)/dt = Kh*(d/dx)**2 c(i) + V*dc(i)/dx + (d/dy)(Kv(y)*dc(i)/dy)
+C                           + Ri(c1,c2,t)      for i = 1,2,   where
+C     R1(c1,c2,t) = -q1*c1*c3 - q2*c1*c2 + 2*q3(t)*c3 + q4(t)*c2 ,
+C     R2(c1,c2,t) =  q1*c1*c3 - q2*c1*c2 - q4(t)*c2 ,
+C     Kv(y) = Kv0*exp(y/5) ,
+C     Kh, V, Kv0, q1, q2, and c3 are constants, and q3(t) and q4(t)
+C     vary diurnally.
+C
+C     The problem is posed on the square
+C     0 .le. x .le. 20,    30 .le. y .le. 50   (all in km),
+C     with homogeneous Neumann boundary conditions, and for time t in
+C     0 .le. t .le. 86400 sec (1 day).
+C
+C     The PDE system is treated by central differences on a uniform
+C     10 x 10 mesh, with simple polynomial initial profiles.
+C     The problem is solved with CVODE, with the BDF/GMRES method and
+C     using the FCVBP banded preconditioner module
+C     
+C     The second and third dimensions of U here must match the values of
+C     MESHX and MESHY, for consistency with the output statements below.
+C     ----------------------------------------------------------------
+C
+      IMPLICIT NONE
+C
+      INTEGER LNST, LNFE, LNSETUP, LNNI, LNCF, LNPE, LNLI, LNPS
+      INTEGER LNCFL, LH, LQ, METH, ITMETH, IATOL, INOPT, ITASK
+      INTEGER LNETF, IER, MAXL, JPRETYPE, IGSTYPE, IOUT
+      INTEGER*4 IOPT(40)
+      INTEGER*4 NEQ, MESHX, MESHY, NST, NFE, NPSET, NPE, NPS, NNI
+      INTEGER*4 NLI, NCFN, NCFL, NETF, MU, ML
+      DOUBLE PRECISION ATOL, AVDIM, DELT, FLOOR, RTOL, T, TOUT, TWOHR
+      DOUBLE PRECISION ROPT(40), U(2,10,10)
+C
+      DATA TWOHR/7200.0D0/, RTOL/1.0D-5/, FLOOR/100.0D0/,
+     1     JPRETYPE/1/, IGSTYPE/1/, MAXL/0/, DELT/0.0D0/
+      DATA LNST/4/, LNFE/5/, LNSETUP/6/, LNNI/7/, LNCF/8/, LNETF/9/,
+     1     LQ/11/, LH/5/, LNPE/18/, LNLI/19/, LNPS/20/, LNCFL/21/
+      COMMON /PBDIM/ NEQ
+C     
+C     Set mesh sizes
+      MESHX = 10
+      MESHY = 10
+C     Load Common and initial values in Subroutine INITKX
+      CALL INITKX(MESHX, MESHY, U)
+C     Set other input arguments.
+      NEQ = 2 * MESHX * MESHY
+      T = 0.0D0
+      METH = 2
+      ITMETH = 2
+      IATOL = 1
+      ATOL = RTOL * FLOOR
+      INOPT = 0
+      ITASK = 1
+C
+      WRITE(6,10) NEQ
+ 10   FORMAT('Krylov example problem:'//
+     1       ' Kinetics-transport, NEQ = ', I4/)
+C     
+C     Initialize vector specification
+      CALL FNVINITS(NEQ, IER)
+      IF (IER .NE. 0) THEN
+         WRITE(6,20) IER
+ 20      FORMAT(///' SUNDIALS_ERROR: FNVINITS returned IER = ', I5)
+         STOP
+      ENDIF
+C     
+C     Initialize CVODE
+      CALL FCVMALLOC(T, U, METH, ITMETH, IATOL, RTOL, ATOL,
+     1               INOPT, IOPT, ROPT, IER)
+      IF (IER .NE. 0) THEN
+         WRITE(6,30) IER
+ 30      FORMAT(///' SUNDIALS_ERROR: FCVMALLOC returned IER = ', I5)
+         CALL FNVFREES
+         STOP
+      ENDIF
+C     
+C     Initialize band preconditioner
+      MU = 2
+      ML = 2
+      CALL FCVBPINIT(NEQ, MU, ML, IER) 
+      IF (IER .NE. 0) THEN
+         WRITE(6,40) IER
+ 40      FORMAT(///' SUNDIALS_ERROR: FCVBPINIT returned IER = ', I5)
+         CALL FNVFREES
+         CALL FCVFREE
+         STOP
+      ENDIF
+C     
+C     Initialize SPGMR solver with band preconditioner
+      CALL FCVBPSPGMR(JPRETYPE, IGSTYPE, MAXL, DELT, IER) 
+      IF (IER .NE. 0) THEN
+         WRITE(6,45) IER
+ 45      FORMAT(///' SUNDIALS_ERROR: FCVBPSPGMR returned IER = ', I5)
+         CALL FNVFREES
+         CALL FCVFREE
+         STOP
+      ENDIF
+C     
+C     Loop over output points, call FCVODE, print sample solution values.
+      TOUT = TWOHR
+      DO 70 IOUT = 1, 12
+C
+         CALL FCVODE(TOUT, T, U, ITASK, IER)
+C     
+         WRITE(6,50) T, IOPT(LNST), IOPT(LQ), ROPT(LH)
+ 50      FORMAT(/' t = ', E14.6, 5X, 'no. steps = ', I5,
+     1        '   order = ', I3, '   stepsize = ', E14.6)
+         WRITE(6,55) U(1,1,1), U(1,5,5), U(1,10,10),
+     1               U(2,1,1), U(2,5,5), U(2,10,10)
+ 55      FORMAT('  c1 (bot.left/middle/top rt.) = ', 3E14.6/
+     1        '  c2 (bot.left/middle/top rt.) = ', 3E14.6)
+C     
+         IF (IER .NE. 0) THEN
+            WRITE(6,60) IER, IOPT(26)
+ 60         FORMAT(///' SUNDIALS_ERROR: FCVODE returned IER = ', I5, /,
+     1             '                 Linear Solver returned IER = ', I5)
+            CALL FCVBPFREE
+            CALL FNVFREES
+            CALL FCVFREE
+            STOP
+         ENDIF
+C     
+         TOUT = TOUT + TWOHR
+ 70   CONTINUE
+      
+C     Print final statistics.
+      NST = IOPT(LNST)
+      NFE = IOPT(LNFE)
+      NPSET = IOPT(LNSETUP)
+      NPE = IOPT(LNPE)
+      NPS = IOPT(LNPS)
+      NNI = IOPT(LNNI)
+      NLI = IOPT(LNLI)
+      AVDIM = DBLE(NLI) / DBLE(NNI)
+      NCFN = IOPT(LNCF)
+      NCFL = IOPT(LNCFL)
+      NETF = IOPT(LNETF)
+      WRITE(6,80) NST, NFE, NPSET, NPE, NPS, NNI, NLI, AVDIM, NCFN,
+     1     NCFL, NETF
+ 80   FORMAT(//'Final statistics:'//
+     &   ' number of steps        = ', I5, 4X,
+     &   ' number of f evals.     = ', I5/
+     &   ' number of prec. setups = ', I5/
+     &   ' number of prec. evals. = ', I5, 4X,
+     &   ' number of prec. solves = ', I5/
+     &   ' number of nonl. iters. = ', I5, 4X,
+     &   ' number of lin. iters.  = ', I5/
+     &   ' average Krylov subspace dimension (NLI/NNI) = ', E14.6/
+     &   ' number of conv. failures.. nonlinear =', I3,
+     &   ' linear = ', I3/
+     &   ' number of error test failures = ', I3)
+C     
+      CALL FCVBPFREE
+      CALL FCVFREE
+      CALL FNVFREES
+C     
+      STOP
+      END
+
+      SUBROUTINE INITKX(MESHX, MESHY, U0)
+C     Routine to set problem constants and initial values
+      IMPLICIT NONE
+C
+      INTEGER*4 MX, MY, MM, JX, JY, MESHX, MESHY
+      DOUBLE PRECISION DKV0
+      DOUBLE PRECISION Q1, Q2, Q3, Q4, A3, A4, OM, C3, DY, HDCO
+      DOUBLE PRECISION VDCO, HACO, X, Y
+      DOUBLE PRECISION CX, CY, DKH, DX, HALFDA, PI, VEL
+      DOUBLE PRECISION U0(2,10,10)
+C
+      COMMON /PCOM/ Q1, Q2, Q3, Q4, A3, A4, OM, C3, DY
+      COMMON /PCOM/ HDCO, VDCO, HACO, MX, MY, MM
+      DATA DKH/4.0D-6/, VEL/0.001D0/, DKV0/1.0D-8/, HALFDA/4.32D4/,
+     1     PI/3.1415926535898D0/
+C     
+C     Load Common block of problem parameters.
+      MX = MESHX
+      MY = MESHY
+      MM = MX * MY
+      Q1 = 1.63D-16
+      Q2 = 4.66D-16
+      A3 = 22.62D0
+      A4 = 7.601D0
+      OM = PI / HALFDA
+      C3 = 3.7D16
+      DX = 20.0D0 / (MX - 1.0D0)
+      DY = 20.0D0 / (MY - 1.0D0)
+      HDCO = DKH / DX**2
+      HACO = VEL / (2.0D0 * DX)
+      VDCO = (1.0D0 / DY**2) * DKV0
+C     
+C     Set initial profiles.
+      DO 20 JY = 1, MY
+         Y = 30.0D0 + (JY - 1.0D0) * DY
+         CY = (0.1D0 * (Y - 40.0D0))**2
+         CY = 1.0D0 - CY + 0.5D0 * CY**2
+         DO 10 JX = 1, MX
+            X = (JX - 1.0D0) * DX
+            CX = (0.1D0 * (X - 10.0D0))**2
+            CX = 1.0D0 - CX + 0.5D0 * CX**2
+            U0(1,JX,JY) = 1.0D6 * CX * CY
+            U0(2,JX,JY) = 1.0D12 * CX * CY
+ 10      CONTINUE
+ 20   CONTINUE
+C     
+      RETURN
+      END
+      
+      SUBROUTINE FCVFUN(T, U, UDOT)
+C     Routine for right-hand side function f
+      IMPLICIT NONE
+C
+      INTEGER ILEFT, IRIGHT
+      INTEGER*4 MX, MY, MM, JY, JX, IBLOK0, IDN, IUP, IBLOK
+      DOUBLE PRECISION T, UDOT(2,*), U(2,*)
+      DOUBLE PRECISION Q1,Q2,Q3,Q4, A3, A4, OM, C3, DY, HDCO, VDCO, HACO
+      DOUBLE PRECISION C1, C2, C1DN, C2DN, C1UP, C2UP, C1LT, C2LT
+      DOUBLE PRECISION C1RT, C2RT, CYDN, CYUP, HORD1, HORD2, HORAD1
+      DOUBLE PRECISION HORAD2, QQ1, QQ2, QQ3, QQ4, RKIN1, RKIN2, S
+      DOUBLE PRECISION VERTD1, VERTD2, YDN, YUP
+C
+      COMMON /PCOM/ Q1, Q2, Q3, Q4, A3, A4, OM, C3, DY
+      COMMON /PCOM/ HDCO, VDCO, HACO, MX, MY, MM
+C     
+C     Set diurnal rate coefficients.
+      S = SIN(OM * T)
+      IF (S .GT. 0.0D0) THEN
+         Q3 = EXP(-A3 / S)
+         Q4 = EXP(-A4 / S)
+      ELSE
+         Q3 = 0.0D0
+         Q4 = 0.0D0
+      ENDIF
+C     
+C     Loop over all grid points.
+      DO 20 JY = 1, MY
+         YDN = 30.0D0 + (JY - 1.5D0) * DY
+         YUP = YDN + DY
+         CYDN = VDCO * EXP(0.2D0 * YDN)
+         CYUP = VDCO * EXP(0.2D0 * YUP)
+         IBLOK0 = (JY - 1) * MX
+         IDN = -MX
+         IF (JY .EQ. 1) IDN = MX
+         IUP = MX
+         IF (JY .EQ. MY) IUP = -MX
+         DO 10 JX = 1, MX
+            IBLOK = IBLOK0 + JX
+            C1 = U(1,IBLOK)
+            C2 = U(2,IBLOK)
+C     Set kinetic rate terms.
+            QQ1 = Q1 * C1 * C3
+            QQ2 = Q2 * C1 * C2
+            QQ3 = Q3 * C3
+            QQ4 = Q4 * C2
+            RKIN1 = -QQ1 - QQ2 + 2.0D0 * QQ3 + QQ4
+            RKIN2 = QQ1 - QQ2 - QQ4
+C     Set vertical diffusion terms.
+            C1DN = U(1,IBLOK + IDN)
+            C2DN = U(2,IBLOK + IDN)
+            C1UP = U(1,IBLOK + IUP)
+            C2UP = U(2,IBLOK + IUP)
+            VERTD1 = CYUP * (C1UP - C1) - CYDN * (C1 - C1DN)
+            VERTD2 = CYUP * (C2UP - C2) - CYDN * (C2 - C2DN)
+C     Set horizontal diffusion and advection terms.
+            ILEFT = -1
+            IF (JX .EQ. 1) ILEFT = 1
+            IRIGHT = 1
+            IF (JX .EQ. MX) IRIGHT = -1
+            C1LT = U(1,IBLOK + ILEFT)
+            C2LT = U(2,IBLOK + ILEFT)
+            C1RT = U(1,IBLOK + IRIGHT)
+            C2RT = U(2,IBLOK + IRIGHT)
+            HORD1 = HDCO * (C1RT - 2.0D0 * C1 + C1LT)
+            HORD2 = HDCO * (C2RT - 2.0D0 * C2 + C2LT)
+            HORAD1 = HACO * (C1RT - C1LT)
+            HORAD2 = HACO * (C2RT - C2LT)
+C     Load all terms into UDOT.
+            UDOT(1,IBLOK) = VERTD1 + HORD1 + HORAD1 + RKIN1
+            UDOT(2,IBLOK) = VERTD2 + HORD2 + HORAD2 + RKIN2
+ 10      CONTINUE
+ 20   CONTINUE
+C
+      RETURN
+      END
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvkrybf.out b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvkrybf.out
new file mode 100644
index 0000000..ae4d8d0
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvkrybf.out
@@ -0,0 +1,63 @@
+Krylov example problem:
+ 
+ Kinetics-transport, NEQ =  200
+ 
+ 
+ t =   0.720000E+04     no. steps =   190   order =   5   stepsize =   0.160965E+03
+  c1 (bot.left/middle/top rt.) =   0.104683E+05  0.296373E+05  0.111853E+05
+  c2 (bot.left/middle/top rt.) =   0.252672E+12  0.715377E+12  0.269977E+12
+ 
+ t =   0.144000E+05     no. steps =   221   order =   5   stepsize =   0.382687E+03
+  c1 (bot.left/middle/top rt.) =   0.665902E+07  0.531602E+07  0.730081E+07
+  c2 (bot.left/middle/top rt.) =   0.258192E+12  0.205680E+12  0.283286E+12
+ 
+ t =   0.216000E+05     no. steps =   246   order =   5   stepsize =   0.278111E+03
+  c1 (bot.left/middle/top rt.) =   0.266497E+08  0.103640E+08  0.293077E+08
+  c2 (bot.left/middle/top rt.) =   0.299279E+12  0.102815E+12  0.331344E+12
+ 
+ t =   0.288000E+05     no. steps =   290   order =   4   stepsize =   0.132263E+03
+  c1 (bot.left/middle/top rt.) =   0.870208E+07  0.129196E+08  0.965000E+07
+  c2 (bot.left/middle/top rt.) =   0.338035E+12  0.502927E+12  0.375095E+12
+ 
+ t =   0.360000E+05     no. steps =   328   order =   5   stepsize =   0.101295E+03
+  c1 (bot.left/middle/top rt.) =   0.140403E+05  0.202899E+05  0.156090E+05
+  c2 (bot.left/middle/top rt.) =   0.338677E+12  0.489432E+12  0.376516E+12
+ 
+ t =   0.432000E+05     no. steps =   379   order =   4   stepsize =   0.441271E+03
+  c1 (bot.left/middle/top rt.) =   0.150165E-07  0.218060E-07  0.172249E-07
+  c2 (bot.left/middle/top rt.) =   0.338232E+12  0.135499E+12  0.380352E+12
+ 
+ t =   0.504000E+05     no. steps =   399   order =   4   stepsize =   0.401790E+03
+  c1 (bot.left/middle/top rt.) =   0.485257E-07  0.471150E-04 -0.403394E-07
+  c2 (bot.left/middle/top rt.) =   0.335816E+12  0.493028E+12  0.386444E+12
+ 
+ t =   0.576000E+05     no. steps =   416   order =   5   stepsize =   0.210828E+03
+  c1 (bot.left/middle/top rt.) =  -0.129858E-07  0.769564E-04 -0.252346E-06
+  c2 (bot.left/middle/top rt.) =   0.332031E+12  0.964975E+12  0.390899E+12
+ 
+ t =   0.648000E+05     no. steps =   432   order =   5   stepsize =   0.595098E+03
+  c1 (bot.left/middle/top rt.) =   0.110571E-14 -0.267928E-13 -0.420276E-15
+  c2 (bot.left/middle/top rt.) =   0.331302E+12  0.892178E+12  0.396342E+12
+ 
+ t =   0.720000E+05     no. steps =   444   order =   5   stepsize =   0.595098E+03
+  c1 (bot.left/middle/top rt.) =   0.102598E-14 -0.796411E-14  0.937989E-16
+  c2 (bot.left/middle/top rt.) =   0.332972E+12  0.618620E+12  0.403884E+12
+ 
+ t =   0.792000E+05     no. steps =   456   order =   5   stepsize =   0.595098E+03
+  c1 (bot.left/middle/top rt.) =   0.160649E-15  0.247974E-13 -0.117457E-15
+  c2 (bot.left/middle/top rt.) =   0.333441E+12  0.666893E+12  0.412026E+12
+ 
+ t =   0.864000E+05     no. steps =   469   order =   5   stepsize =   0.595098E+03
+  c1 (bot.left/middle/top rt.) =  -0.134452E-15  0.132665E-15 -0.958831E-16
+  c2 (bot.left/middle/top rt.) =   0.335178E+12  0.910659E+12  0.416250E+12
+ 
+ 
+Final statistics:
+ 
+ number of steps        =   469     number of f evals.     =   604
+ number of prec. setups =    84
+ number of prec. evals. =     9     number of prec. solves =  1080
+ number of nonl. iters. =   601     number of lin. iters.  =   552
+ average Krylov subspace dimension (NLI/NNI) =   0.918469E+00
+ number of conv. failures.. nonlinear =  0 linear =   0
+ number of error test failures =  28
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvkryf.f b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvkryf.f
new file mode 100644
index 0000000..4c12d00
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvkryf.f
@@ -0,0 +1,846 @@
+C     ----------------------------------------------------------------
+C     $Revision: 1.1 $
+C     $Date: 2005/10/27 13:23:36 $
+C     ----------------------------------------------------------------
+C     FCVODE Example Problem: 2D kinetics-transport, precond. Krylov
+C     solver. 
+C     
+C     An ODE system is generated from the following 2-species diurnal
+C     kinetics advection-diffusion PDE system in 2 space dimensions:
+C     
+C     dc(i)/dt = Kh*(d/dx)**2 c(i) + V*dc(i)/dx + (d/dy)(Kv(y)*dc(i)/dy)
+C                           + Ri(c1,c2,t)      for i = 1,2,   where
+C     R1(c1,c2,t) = -q1*c1*c3 - q2*c1*c2 + 2*q3(t)*c3 + q4(t)*c2 ,
+C     R2(c1,c2,t) =  q1*c1*c3 - q2*c1*c2 - q4(t)*c2 ,
+C     Kv(y) = Kv0*exp(y/5) ,
+C     Kh, V, Kv0, q1, q2, and c3 are constants, and q3(t) and q4(t)
+C     vary diurnally.
+C
+C     The problem is posed on the square
+C     0 .le. x .le. 20,    30 .le. y .le. 50   (all in km),
+C     with homogeneous Neumann boundary conditions, and for time t
+C     in 0 .le. t .le. 86400 sec (1 day).
+C     The PDE system is treated by central differences on a uniform
+C     10 x 10 mesh, with simple polynomial initial profiles.
+C     The problem is solved with CVODE, with the BDF/GMRES method and
+C     the block-diagonal part of the Jacobian as a left
+C     preconditioner.
+C     
+C     Note: this program requires the dense linear solver routines
+C     DGEFA and DGESL from LINPACK, and BLAS routines DCOPY and DSCAL.
+C     
+C     The second and third dimensions of U here must match the values
+C     of MESHX and MESHY, for consistency with the output statements
+C     below.
+C     ----------------------------------------------------------------
+C
+      IMPLICIT NONE
+C
+      INTEGER METH, ITMETH, IATOL, INOPT, ITASK, IER, LNCFL, LNPS
+      INTEGER LNST, LNFE, LNSETUP, LNNI, LNCF, LQ, LH, LNPE, LNLI
+      INTEGER IOUT, JPRETYPE, IGSTYPE, MAXL
+      INTEGER*4 IOPT(40)
+      INTEGER*4 NEQ, MESHX, MESHY, NST, NFE, NPSET, NPE, NPS, NNI
+      INTEGER*4 NLI, NCFN, NCFL
+      DOUBLE PRECISION ATOL, AVDIM, T, TOUT, TWOHR, RTOL, FLOOR, DELT
+      DOUBLE PRECISION U(2,10,10), ROPT(40)
+C
+      DATA TWOHR/7200.0D0/, RTOL/1.0D-5/, FLOOR/100.0D0/,
+     1     JPRETYPE/1/, IGSTYPE/1/, MAXL/0/, DELT/0.0D0/
+      DATA LNST/4/, LNFE/5/, LNSETUP/6/, LNNI/7/, LNCF/8/,
+     1     LQ/11/, LH/5/, LNPE/18/, LNLI/19/, LNPS/20/, LNCFL/21/
+      COMMON /PBDIM/ NEQ
+C
+C Set mesh sizes
+      MESHX = 10
+      MESHY = 10
+C Load Common and initial values in Subroutine INITKX
+      CALL INITKX(MESHX, MESHY, U)
+C Set other input arguments.
+      NEQ = 2 * MESHX * MESHY
+      T = 0.0D0
+      METH = 2
+      ITMETH = 2
+      IATOL = 1
+      ATOL = RTOL * FLOOR
+      INOPT = 0
+      ITASK = 1
+C
+      WRITE(6,10) NEQ
+ 10   FORMAT('Krylov example problem:'//
+     1       ' Kinetics-transport, NEQ = ', I4/)
+C
+      CALL FNVINITS(NEQ, IER)
+      IF (IER .NE. 0) THEN
+        WRITE(6,20) IER
+ 20     FORMAT(///' SUNDIALS_ERROR: FNVINITS returned IER = ', I5)
+        STOP
+      ENDIF
+C
+      CALL FCVMALLOC(T, U, METH, ITMETH, IATOL, RTOL, ATOL,
+     1               INOPT, IOPT, ROPT, IER)
+      IF (IER .NE. 0) THEN
+        WRITE(6,30) IER
+ 30     FORMAT(///' SUNDIALS_ERROR: FCVMALLOC returned IER = ', I5)
+        CALL FNVFREES
+        STOP
+        ENDIF
+C
+      CALL FCVSPGMR(JPRETYPE, IGSTYPE, MAXL, DELT, IER)
+      IF (IER .NE. 0) THEN
+        WRITE(6,40) IER
+ 40     FORMAT(///' SUNDIALS_ERROR: FCVSPGMR returned IER = ', I5)
+        CALL FNVFREES
+        CALL FCVFREE
+        STOP
+      ENDIF
+C
+      CALL FCVSPGMRSETPREC(1, IER)
+C
+C Loop over output points, call FCVODE, print sample solution values.
+      TOUT = TWOHR
+      DO 70 IOUT = 1, 12
+C
+        CALL FCVODE(TOUT, T, U, ITASK, IER)
+C
+        WRITE(6,50) T, IOPT(LNST), IOPT(LQ), ROPT(LH)
+ 50     FORMAT(/' t = ', E11.3, 5X, 'no. steps = ', I5,
+     1         '   order = ', I3, '   stepsize = ', E14.6)
+        WRITE(6,55) U(1,1,1), U(1,5,5), U(1,10,10),
+     1              U(2,1,1), U(2,5,5), U(2,10,10)
+ 55     FORMAT('  c1 (bot.left/middle/top rt.) = ', 3E14.6/
+     1         '  c2 (bot.left/middle/top rt.) = ', 3E14.6)
+C
+        IF (IER .NE. 0) THEN
+          WRITE(6,60) IER, IOPT(26)
+ 60       FORMAT(///' SUNDIALS_ERROR: FCVODE returned IER = ', I5, /,
+     1           '                 Linear Solver returned IER = ', I5)
+          CALL FNVFREES
+          CALL FCVFREE
+          STOP
+          ENDIF
+C
+        TOUT = TOUT + TWOHR
+ 70     CONTINUE
+
+C Print final statistics.
+      NST = IOPT(LNST)
+      NFE = IOPT(LNFE)
+      NPSET = IOPT(LNSETUP)
+      NPE = IOPT(LNPE)
+      NPS = IOPT(LNPS)
+      NNI = IOPT(LNNI)
+      NLI = IOPT(LNLI)
+      AVDIM = DBLE(NLI) / DBLE(NNI)
+      NCFN = IOPT(LNCF)
+      NCFL = IOPT(LNCFL)
+      WRITE(6,80) NST, NFE, NPSET, NPE, NPS, NNI, NLI, AVDIM, NCFN,
+     1     NCFL
+  80  FORMAT(//'Final statistics:'//
+     1 ' number of steps        = ', I5, 5X,
+     2 'number of f evals.     =', I5/
+     3 ' number of prec. setups = ', I5/
+     4 ' number of prec. evals. = ', I5, 5X,
+     5 'number of prec. solves = ', I5/
+     6 ' number of nonl. iters. = ', I5, 5X,
+     7 'number of lin. iters.  = ', I5/
+     8 ' average Krylov subspace dimension (NLI/NNI)  = ', E14.6/
+     9 ' number of conv. failures.. nonlinear = ', I3,'  linear = ', I3)
+C
+      CALL FCVFREE
+      CALL FNVFREES
+C
+      STOP
+      END
+
+      SUBROUTINE INITKX(MESHX, MESHY, U0)
+C Routine to set problem constants and initial values
+C
+      IMPLICIT NONE
+C
+      INTEGER*4 MESHX, MESHY
+      INTEGER*4 MX, MY, MM, JY, JX, NEQ
+      DOUBLE PRECISION U0
+      DIMENSION U0(2,MESHX,MESHY)
+      DOUBLE PRECISION Q1, Q2, Q3, Q4, A3, A4, OM, C3, DY, HDCO
+      DOUBLE PRECISION VDCO, HACO, X, Y
+      DOUBLE PRECISION CX, CY, DKH, DKV0, DX, HALFDA, PI, VEL
+C
+      COMMON /PCOM/ Q1, Q2, Q3, Q4, A3, A4, OM, C3, DY
+      COMMON /PCOM/ HDCO, VDCO, HACO, MX, MY, MM
+      DATA DKH/4.0D-6/, VEL/0.001D0/, DKV0/1.0D-8/, HALFDA/4.32D4/,
+     1     PI/3.1415926535898D0/
+C
+C Load Common block of problem parameters.
+      MX = MESHX
+      MY = MESHY
+      MM = MX * MY
+      NEQ = 2 * MM
+      Q1 = 1.63D-16
+      Q2 = 4.66D-16
+      A3 = 22.62D0
+      A4 = 7.601D0
+      OM = PI / HALFDA
+      C3 = 3.7D16
+      DX = 20.0D0 / (MX - 1.0D0)
+      DY = 20.0D0 / (MY - 1.0D0)
+      HDCO = DKH / DX**2
+      HACO = VEL / (2.0D0 * DX)
+      VDCO = (1.0D0 / DY**2) * DKV0
+C
+C Set initial profiles.
+      DO 20 JY = 1, MY
+        Y = 30.0D0 + (JY - 1.0D0) * DY
+        CY = (0.1D0 * (Y - 40.0D0))**2
+        CY = 1.0D0 - CY + 0.5D0 * CY**2
+        DO 10 JX = 1, MX
+          X = (JX - 1.0D0) * DX
+          CX = (0.1D0 * (X - 10.0D0))**2
+          CX = 1.0D0 - CX + 0.5D0 * CX**2
+          U0(1,JX,JY) = 1.0D6 * CX * CY
+          U0(2,JX,JY) = 1.0D12 * CX * CY
+ 10       CONTINUE
+ 20     CONTINUE
+C
+      RETURN
+      END
+
+      SUBROUTINE FCVFUN(T, U, UDOT)
+C Routine for right-hand side function f
+C
+      IMPLICIT NONE
+C
+      INTEGER ILEFT, IRIGHT
+      INTEGER*4 JX, JY, MX, MY, MM, IBLOK0, IBLOK, IDN, IUP
+      DOUBLE PRECISION T, U(2,*), UDOT(2,*)
+      DOUBLE PRECISION Q1, Q2, Q3, Q4, A3, A4, OM, C3, DY, HDCO
+      DOUBLE PRECISION VDCO, HACO
+      DOUBLE PRECISION C1, C2, C1DN, C2DN, C1UP, C2UP, C1LT, C2LT
+      DOUBLE PRECISION C1RT, C2RT, CYDN, CYUP, HORD1, HORD2, HORAD1
+      DOUBLE PRECISION HORAD2, QQ1, QQ2, QQ3, QQ4, RKIN1, RKIN2, S
+      DOUBLE PRECISION VERTD1, VERTD2, YDN, YUP
+C
+      COMMON /PCOM/ Q1, Q2, Q3, Q4, A3, A4, OM, C3, DY
+      COMMON /PCOM/ HDCO, VDCO, HACO, MX, MY, MM
+C
+C Set diurnal rate coefficients.
+      S = SIN(OM * T)
+      IF (S .GT. 0.0D0) THEN
+        Q3 = EXP(-A3 / S)
+        Q4 = EXP(-A4 / S)
+      ELSE
+        Q3 = 0.0D0
+        Q4 = 0.0D0
+      ENDIF
+C
+C Loop over all grid points.
+      DO 20 JY = 1, MY
+        YDN = 30.0D0 + (JY - 1.5D0) * DY
+        YUP = YDN + DY
+        CYDN = VDCO * EXP(0.2D0 * YDN)
+        CYUP = VDCO * EXP(0.2D0 * YUP)
+        IBLOK0 = (JY - 1) * MX
+        IDN = -MX
+        IF (JY .EQ. 1) IDN = MX
+        IUP = MX
+        IF (JY .EQ. MY) IUP = -MX
+        DO 10 JX = 1, MX
+          IBLOK = IBLOK0 + JX
+          C1 = U(1,IBLOK)
+          C2 = U(2,IBLOK)
+C Set kinetic rate terms.
+          QQ1 = Q1 * C1 * C3
+          QQ2 = Q2 * C1 * C2
+          QQ3 = Q3 * C3
+          QQ4 = Q4 * C2
+          RKIN1 = -QQ1 - QQ2 + 2.0D0 * QQ3 + QQ4
+          RKIN2 = QQ1 - QQ2 - QQ4
+C Set vertical diffusion terms.
+          C1DN = U(1,IBLOK + IDN)
+          C2DN = U(2,IBLOK + IDN)
+          C1UP = U(1,IBLOK + IUP)
+          C2UP = U(2,IBLOK + IUP)
+          VERTD1 = CYUP * (C1UP - C1) - CYDN * (C1 - C1DN)
+          VERTD2 = CYUP * (C2UP - C2) - CYDN * (C2 - C2DN)
+C Set horizontal diffusion and advection terms.
+          ILEFT = -1
+          IF (JX .EQ. 1) ILEFT = 1
+          IRIGHT = 1
+          IF (JX .EQ. MX) IRIGHT = -1
+          C1LT = U(1,IBLOK + ILEFT)
+          C2LT = U(2,IBLOK + ILEFT)
+          C1RT = U(1,IBLOK + IRIGHT)
+          C2RT = U(2,IBLOK + IRIGHT)
+          HORD1 = HDCO * (C1RT - 2.0D0 * C1 + C1LT)
+          HORD2 = HDCO * (C2RT - 2.0D0 * C2 + C2LT)
+          HORAD1 = HACO * (C1RT - C1LT)
+          HORAD2 = HACO * (C2RT - C2LT)
+C Load all terms into UDOT.
+          UDOT(1,IBLOK) = VERTD1 + HORD1 + HORAD1 + RKIN1
+          UDOT(2,IBLOK) = VERTD2 + HORD2 + HORAD2 + RKIN2
+ 10       CONTINUE
+ 20     CONTINUE
+      RETURN
+      END
+
+      SUBROUTINE FCVPSET(T, U, FU, JOK, JCUR, GAMMA, EWT, H,
+     1                   V1, V2, V3, IER)
+C Routine to set and preprocess block-diagonal preconditioner.
+C Note: The dimensions in /BDJ/ below assume at most 100 mesh points.
+C
+      IMPLICIT NONE
+C
+      INTEGER IER, JOK, JCUR, H
+      INTEGER*4 LENBD, JY, JX, IBLOK, MX, MY, MM
+      INTEGER*4 IBLOK0, IPP
+      DOUBLE PRECISION T, U(2,*), GAMMA
+      DOUBLE PRECISION Q1, Q2, Q3, Q4, A3, A4, OM, C3, DY, HDCO
+      DOUBLE PRECISION VDCO, HACO
+      DOUBLE PRECISION BD, P, FU, EWT, V1, V2, V3
+      DOUBLE PRECISION C1, C2, CYDN, CYUP, DIAG, TEMP, YDN, YUP
+C
+      COMMON /PCOM/ Q1, Q2, Q3, Q4, A3, A4, OM, C3, DY
+      COMMON /PCOM/ HDCO, VDCO, HACO, MX, MY, MM
+      COMMON /BDJ/ BD(2,2,100), P(2,2,100), IPP(2,100)
+C
+      IER = 0
+      LENBD = 4 * MM
+C
+C If JOK = 1, copy BD to P.
+      IF (JOK .EQ. 1) THEN
+        CALL DCOPY(LENBD, BD(1,1,1), 1, P(1,1,1), 1)
+        JCUR = 0
+      ELSE
+C
+C JOK = 0.  Compute diagonal Jacobian blocks and copy to P.
+C   (using q4 value computed on last FCVFUN call).
+      DO 20 JY = 1, MY
+        YDN = 30.0D0 + (JY - 1.5D0) * DY
+        YUP = YDN + DY
+        CYDN = VDCO * EXP(0.2D0 * YDN)
+        CYUP = VDCO * EXP(0.2D0 * YUP)
+        DIAG = -(CYDN + CYUP + 2.0D0 * HDCO)
+        IBLOK0 = (JY - 1) * MX
+        DO 10 JX = 1, MX
+          IBLOK = IBLOK0 + JX
+          C1 = U(1,IBLOK)
+          C2 = U(2,IBLOK)
+          BD(1,1,IBLOK) = (-Q1 * C3 - Q2 * C2) + DIAG
+          BD(1,2,IBLOK) = -Q2 * C1 + Q4
+          BD(2,1,IBLOK) =  Q1 * C3 - Q2 * C2
+          BD(2,2,IBLOK) = (-Q2 * C1 - Q4) + DIAG
+ 10       CONTINUE
+ 20     CONTINUE
+      CALL DCOPY(LENBD, BD(1,1,1), 1, P(1,1,1), 1)
+      JCUR = 1
+      ENDIF
+C
+C Scale P by -GAMMA.
+      TEMP = -GAMMA
+      CALL DSCAL(LENBD, TEMP, P, 1)
+C
+C Add identity matrix and do LU decompositions on blocks, in place.
+      DO 40 IBLOK = 1, MM
+        P(1,1,IBLOK) = P(1,1,IBLOK) + 1.0D0
+        P(2,2,IBLOK) = P(2,2,IBLOK) + 1.0D0
+        CALL DGEFA(P(1,1,IBLOK), 2, 2, IPP(1,IBLOK), IER)
+        IF (IER .NE. 0) RETURN
+ 40     CONTINUE
+C
+      RETURN
+      END
+
+      SUBROUTINE FCVPSOL(T, U, FU, VTEMP, GAMMA, EWT, DELTA,
+     1                   R, LR, Z, IER)
+C Routine to solve preconditioner linear system.
+C Note: The dimensions in /BDJ/ below assume at most 100 mesh points.
+C
+      IMPLICIT NONE
+C
+      INTEGER IER
+      INTEGER*4 I, NEQ, MX, MY, MM, LR, IPP
+      DOUBLE PRECISION R(*), Z(2,*)
+      DOUBLE PRECISION Q1, Q2, Q3, Q4, A3, A4, OM, C3, DY, HDCO
+      DOUBLE PRECISION VDCO, HACO
+      DOUBLE PRECISION BD, P, T, U, FU, VTEMP, EWT, DELTA, GAMMA
+C
+      COMMON /PCOM/ Q1, Q2, Q3, Q4, A3, A4, OM, C3, DY
+      COMMON /PCOM/ HDCO, VDCO, HACO, MX, MY, MM
+      COMMON /BDJ/ BD(2,2,100), P(2,2,100), IPP(2,100)
+      COMMON /PBDIM/ NEQ
+C
+C Solve the block-diagonal system Px = r using LU factors stored in P
+C and pivot data in IPP, and return the solution in Z.
+      IER = 0
+      CALL DCOPY(NEQ, R, 1, Z, 1)
+      DO 10 I = 1, MM
+        CALL DGESL(P(1,1,I), 2, 2, IPP(1,I), Z(1,I), 0)
+ 10     CONTINUE
+      RETURN
+      END
+
+      subroutine dgefa(a, lda, n, ipvt, info)
+c
+      implicit none
+c
+      integer info, idamax, j, k, kp1, l, nm1, n
+      integer*4 lda, ipvt(1)
+      double precision a(lda,1), t
+c
+c     dgefa factors a double precision matrix by gaussian elimination.
+c
+c     dgefa is usually called by dgeco, but it can be called
+c     directly with a saving in time if  rcond  is not needed.
+c     (time for dgeco) = (1 + 9/n)*(time for dgefa) .
+c
+c     on entry
+c
+c        a       double precision(lda, n)
+c                the matrix to be factored.
+c
+c        lda     integer
+c                the leading dimension of the array  a .
+c
+c        n       integer
+c                the order of the matrix  a .
+c
+c     on return
+c
+c        a       an upper triangular matrix and the multipliers
+c                which were used to obtain it.
+c                the factorization can be written  a = l*u  where
+c                l  is a product of permutation and unit lower
+c                triangular matrices and  u  is upper triangular.
+c
+c        ipvt    integer(n)
+c                an integer vector of pivot indices.
+c
+c        info    integer
+c                = 0  normal value.
+c                = k  if  u(k,k) .eq. 0.0 .  this is not an error
+c                     condition for this subroutine, but it does
+c                     indicate that dgesl or dgedi will divide by zero
+c                     if called.  use  rcond  in dgeco for a reliable
+c                     indication of singularity.
+c
+c     linpack. this version dated 08/14/78 .
+c     cleve moler, university of new mexico, argonne national lab.
+c
+c     subroutines and functions
+c
+c     blas daxpy,dscal,idamax
+c
+c     internal variables
+c
+c     gaussian elimination with partial pivoting
+c
+      info = 0
+      nm1 = n - 1
+      if (nm1 .lt. 1) go to 70
+      do 60 k = 1, nm1
+         kp1 = k + 1
+c
+c        find l = pivot index
+c
+         l = idamax(n - k + 1, a(k,k), 1) + k - 1
+         ipvt(k) = l
+c
+c        zero pivot implies this column already triangularized
+c
+         if (a(l,k) .eq. 0.0d0) go to 40
+c
+c           interchange if necessary
+c
+            if (l .eq. k) go to 10
+               t = a(l,k)
+               a(l,k) = a(k,k)
+               a(k,k) = t
+   10       continue
+c
+c           compute multipliers
+c
+            t = -1.0d0 / a(k,k)
+            call dscal(n - k, t, a(k + 1,k), 1)
+c
+c           row elimination with column indexing
+c
+            do 30 j = kp1, n
+               t = a(l,j)
+               if (l .eq. k) go to 20
+                  a(l,j) = a(k,j)
+                  a(k,j) = t
+   20          continue
+               call daxpy(n - k, t, a(k + 1,k), 1, a(k + 1,j), 1)
+   30       continue
+         go to 50
+   40    continue
+            info = k
+   50    continue
+   60 continue
+   70 continue
+      ipvt(n) = n
+      if (a(n,n) .eq. 0.0d0) info = n
+      return
+      end
+c
+      subroutine dgesl(a, lda, n, ipvt, b, job)
+c
+      implicit none
+c
+      integer lda, n, job, k, kb, l, nm1
+      integer*4 ipvt(1)
+      double precision a(lda,1), b(1), ddot, t
+c
+c     dgesl solves the double precision system
+c     a * x = b  or  trans(a) * x = b
+c     using the factors computed by dgeco or dgefa.
+c
+c     on entry
+c
+c        a       double precision(lda, n)
+c                the output from dgeco or dgefa.
+c
+c        lda     integer
+c                the leading dimension of the array  a .
+c
+c        n       integer
+c                the order of the matrix  a .
+c
+c        ipvt    integer(n)
+c                the pivot vector from dgeco or dgefa.
+c
+c        b       double precision(n)
+c                the right hand side vector.
+c
+c        job     integer
+c                = 0         to solve  a*x = b ,
+c                = nonzero   to solve  trans(a)*x = b  where
+c                            trans(a)  is the transpose.
+c
+c     on return
+c
+c        b       the solution vector  x .
+c
+c     error condition
+c
+c        a division by zero will occur if the input factor contains a
+c        zero on the diagonal.  technically this indicates singularity
+c        but it is often caused by improper arguments or improper
+c        setting of lda .  it will not occur if the subroutines are
+c        called correctly and if dgeco has set rcond .gt. 0.0
+c        or dgefa has set info .eq. 0 .
+c
+c     to compute  inverse(a) * c  where  c  is a matrix
+c     with  p  columns
+c           call dgeco(a,lda,n,ipvt,rcond,z)
+c           if (rcond is too small) go to ...
+c           do 10 j = 1, p
+c              call dgesl(a,lda,n,ipvt,c(1,j),0)
+c        10 continue
+c
+c     linpack. this version dated 08/14/78 .
+c     cleve moler, university of new mexico, argonne national lab.
+c
+c     subroutines and functions
+c
+c     blas daxpy,ddot
+c
+c     internal variables
+c
+      nm1 = n - 1
+      if (job .ne. 0) go to 50
+c
+c        job = 0 , solve  a * x = b
+c        first solve  l*y = b
+c
+         if (nm1 .lt. 1) go to 30
+         do 20 k = 1, nm1
+            l = ipvt(k)
+            t = b(l)
+            if (l .eq. k) go to 10
+               b(l) = b(k)
+               b(k) = t
+   10       continue
+            call daxpy(n - k, t, a(k + 1,k), 1, b(k + 1), 1)
+   20    continue
+   30    continue
+c
+c        now solve  u*x = y
+c
+         do 40 kb = 1, n
+            k = n + 1 - kb
+            b(k) = b(k) / a(k,k)
+            t = -b(k)
+            call daxpy(k - 1, t, a(1,k), 1, b(1), 1)
+   40    continue
+      go to 100
+   50 continue
+c
+c        job = nonzero, solve  trans(a) * x = b
+c        first solve  trans(u)*y = b
+c
+         do 60 k = 1, n
+            t = ddot(k - 1, a(1,k), 1, b(1), 1)
+            b(k) = (b(k) - t) / a(k,k)
+   60    continue
+c
+c        now solve trans(l)*x = y
+c
+         if (nm1 .lt. 1) go to 90
+         do 80 kb = 1, nm1
+            k = n - kb
+            b(k) = b(k) + ddot(n - k, a(k + 1,k), 1, b(k + 1), 1)
+            l = ipvt(k)
+            if (l .eq. k) go to 70
+               t = b(l)
+               b(l) = b(k)
+               b(k) = t
+   70       continue
+   80    continue
+   90    continue
+  100 continue
+      return
+      end
+c
+      subroutine daxpy(n, da, dx, incx, dy, incy)
+c
+c     constant times a vector plus a vector.
+c     uses unrolled loops for increments equal to one.
+c     jack dongarra, linpack, 3/11/78.
+c
+      implicit none
+c
+      integer i, incx, incy, ix, iy, m, mp1
+      integer*4 n
+      double precision dx(1), dy(1), da
+c
+      if (n .le. 0) return
+      if (da .eq. 0.0d0) return
+      if (incx .eq. 1 .and. incy .eq. 1) go to 20
+c
+c        code for unequal increments or equal increments
+c        not equal to 1
+c
+      ix = 1
+      iy = 1
+      if (incx .lt. 0) ix = (-n + 1) * incx + 1
+      if (incy .lt. 0) iy = (-n + 1) * incy + 1
+      do 10 i = 1, n
+        dy(iy) = dy(iy) + da * dx(ix)
+        ix = ix + incx
+        iy = iy + incy
+   10 continue
+      return
+c
+c        code for both increments equal to 1
+c
+c
+c        clean-up loop
+c
+   20 m = mod(n, 4)
+      if ( m .eq. 0 ) go to 40
+      do 30 i = 1, m
+        dy(i) = dy(i) + da * dx(i)
+   30 continue
+      if ( n .lt. 4 ) return
+   40 mp1 = m + 1
+      do 50 i = mp1, n, 4
+        dy(i) = dy(i) + da * dx(i)
+        dy(i + 1) = dy(i + 1) + da * dx(i + 1)
+        dy(i + 2) = dy(i + 2) + da * dx(i + 2)
+        dy(i + 3) = dy(i + 3) + da * dx(i + 3)
+   50 continue
+      return
+      end
+c
+      subroutine dscal(n, da, dx, incx)
+c
+c     scales a vector by a constant.
+c     uses unrolled loops for increment equal to one.
+c     jack dongarra, linpack, 3/11/78.
+c
+      implicit none
+c
+      integer i, incx, m, mp1, nincx
+      integer*4 n
+      double precision da, dx(1)
+c
+      if (n.le.0) return
+      if (incx .eq. 1) go to 20
+c
+c        code for increment not equal to 1
+c
+      nincx = n * incx
+      do 10 i = 1, nincx, incx
+        dx(i) = da * dx(i)
+   10 continue
+      return
+c
+c        code for increment equal to 1
+c
+c
+c        clean-up loop
+c
+   20 m = mod(n, 5)
+      if ( m .eq. 0 ) go to 40
+      do 30 i = 1, m
+        dx(i) = da * dx(i)
+   30 continue
+      if ( n .lt. 5 ) return
+   40 mp1 = m + 1
+      do 50 i = mp1, n, 5
+        dx(i) = da * dx(i)
+        dx(i + 1) = da * dx(i + 1)
+        dx(i + 2) = da * dx(i + 2)
+        dx(i + 3) = da * dx(i + 3)
+        dx(i + 4) = da * dx(i + 4)
+   50 continue
+      return
+      end
+c
+      double precision function ddot(n, dx, incx, dy, incy)
+c
+c     forms the dot product of two vectors.
+c     uses unrolled loops for increments equal to one.
+c     jack dongarra, linpack, 3/11/78.
+c
+      implicit none
+c
+      integer i, incx, incy, ix, iy, m, mp1
+      integer*4 n
+      double precision dx(1), dy(1), dtemp
+c
+      ddot = 0.0d0
+      dtemp = 0.0d0
+      if (n .le. 0) return
+      if (incx .eq. 1 .and. incy .eq. 1) go to 20
+c
+c        code for unequal increments or equal increments
+c          not equal to 1
+c
+      ix = 1
+      iy = 1
+      if (incx .lt. 0) ix = (-n + 1) * incx + 1
+      if (incy .lt. 0) iy = (-n + 1) * incy + 1
+      do 10 i = 1, n
+        dtemp = dtemp + dx(ix) * dy(iy)
+        ix = ix + incx
+        iy = iy + incy
+   10 continue
+      ddot = dtemp
+      return
+c
+c        code for both increments equal to 1
+c
+c
+c        clean-up loop
+c
+   20 m = mod(n, 5)
+      if ( m .eq. 0 ) go to 40
+      do 30 i = 1,m
+        dtemp = dtemp + dx(i) * dy(i)
+   30 continue
+      if ( n .lt. 5 ) go to 60
+   40 mp1 = m + 1
+      do 50 i = mp1, n, 5
+        dtemp = dtemp + dx(i) * dy(i) + dx(i + 1) * dy(i + 1) +
+     *          dx(i + 2) * dy(i + 2) + dx(i + 3) * dy(i + 3) +
+     *          dx(i + 4) * dy(i + 4)
+   50 continue
+   60 ddot = dtemp
+      return
+      end
+c
+      integer function idamax(n, dx, incx)
+c
+c     finds the index of element having max. absolute value.
+c     jack dongarra, linpack, 3/11/78.
+c
+      implicit none
+c
+      integer i, incx, ix
+      integer*4 n
+      double precision dx(1), dmax
+c
+      idamax = 0
+      if (n .lt. 1) return
+      idamax = 1
+      if (n .eq. 1) return
+      if (incx .eq. 1) go to 20
+c
+c        code for increment not equal to 1
+c
+      ix = 1
+      dmax = abs(dx(1))
+      ix = ix + incx
+      do 10 i = 2, n
+         if (abs(dx(ix)) .le. dmax) go to 5
+         idamax = i
+         dmax = abs(dx(ix))
+    5    ix = ix + incx
+   10 continue
+      return
+c
+c        code for increment equal to 1
+c
+   20 dmax = abs(dx(1))
+      do 30 i = 2, n
+         if (abs(dx(i)) .le. dmax) go to 30
+         idamax = i
+         dmax = abs(dx(i))
+   30 continue
+      return
+      end
+c
+      subroutine  dcopy(n, dx, incx, dy, incy)
+c
+c     copies a vector, x, to a vector, y.
+c     uses unrolled loops for increments equal to one.
+c     jack dongarra, linpack, 3/11/78.
+c
+      implicit none
+c
+      integer i, incx, incy, ix, iy, m, mp1
+      integer*4 n
+      double precision dx(1), dy(1)
+c
+      if (n .le. 0) return
+      if (incx .eq. 1 .and. incy .eq. 1) go to 20
+c
+c        code for unequal increments or equal increments
+c          not equal to 1
+c
+      ix = 1
+      iy = 1
+      if (incx .lt. 0) ix = (-n + 1) * incx + 1
+      if (incy .lt. 0) iy = (-n + 1) * incy + 1
+      do 10 i = 1, n
+        dy(iy) = dx(ix)
+        ix = ix + incx
+        iy = iy + incy
+   10 continue
+      return
+c
+c        code for both increments equal to 1
+c
+c
+c        clean-up loop
+c
+   20 m = mod(n, 7)
+      if ( m .eq. 0 ) go to 40
+      do 30 i = 1, m
+        dy(i) = dx(i)
+   30 continue
+      if ( n .lt. 7 ) return
+   40 mp1 = m + 1
+      do 50 i = mp1, n, 7
+        dy(i) = dx(i)
+        dy(i + 1) = dx(i + 1)
+        dy(i + 2) = dx(i + 2)
+        dy(i + 3) = dx(i + 3)
+        dy(i + 4) = dx(i + 4)
+        dy(i + 5) = dx(i + 5)
+        dy(i + 6) = dx(i + 6)
+   50 continue
+      return
+      end
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvkryf.out b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvkryf.out
new file mode 100644
index 0000000..2a0783d
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/examples_ser/cvkryf.out
@@ -0,0 +1,62 @@
+Krylov example problem:
+ 
+ Kinetics-transport, NEQ =  200
+ 
+ 
+ t =   0.720E+04     no. steps =   219   order =   5   stepsize =   0.158696E+03
+  c1 (bot.left/middle/top rt.) =   0.104683E+05  0.296373E+05  0.111853E+05
+  c2 (bot.left/middle/top rt.) =   0.252672E+12  0.715376E+12  0.269977E+12
+ 
+ t =   0.144E+05     no. steps =   251   order =   5   stepsize =   0.377205E+03
+  c1 (bot.left/middle/top rt.) =   0.665902E+07  0.531602E+07  0.730081E+07
+  c2 (bot.left/middle/top rt.) =   0.258192E+12  0.205680E+12  0.283286E+12
+ 
+ t =   0.216E+05     no. steps =   277   order =   5   stepsize =   0.274583E+03
+  c1 (bot.left/middle/top rt.) =   0.266498E+08  0.103636E+08  0.293077E+08
+  c2 (bot.left/middle/top rt.) =   0.299279E+12  0.102810E+12  0.331344E+12
+ 
+ t =   0.288E+05     no. steps =   307   order =   4   stepsize =   0.199394E+03
+  c1 (bot.left/middle/top rt.) =   0.870209E+07  0.129197E+08  0.965002E+07
+  c2 (bot.left/middle/top rt.) =   0.338035E+12  0.502929E+12  0.375096E+12
+ 
+ t =   0.360E+05     no. steps =   336   order =   5   stepsize =   0.112181E+03
+  c1 (bot.left/middle/top rt.) =   0.140404E+05  0.202903E+05  0.156090E+05
+  c2 (bot.left/middle/top rt.) =   0.338677E+12  0.489443E+12  0.376516E+12
+ 
+ t =   0.432E+05     no. steps =   389   order =   4   stepsize =   0.428799E+03
+  c1 (bot.left/middle/top rt.) =   0.162296E-07  0.195126E-04  0.100603E-06
+  c2 (bot.left/middle/top rt.) =   0.338233E+12  0.135488E+12  0.380352E+12
+ 
+ t =   0.504E+05     no. steps =   410   order =   4   stepsize =   0.407135E+03
+  c1 (bot.left/middle/top rt.) =  -0.176496E-07 -0.106959E-04 -0.380790E-08
+  c2 (bot.left/middle/top rt.) =   0.335816E+12  0.493028E+12  0.386445E+12
+ 
+ t =   0.576E+05     no. steps =   426   order =   5   stepsize =   0.192012E+03
+  c1 (bot.left/middle/top rt.) =   0.303262E-09  0.183370E-06  0.673644E-10
+  c2 (bot.left/middle/top rt.) =   0.332031E+12  0.964982E+12  0.390900E+12
+ 
+ t =   0.648E+05     no. steps =   444   order =   5   stepsize =   0.777577E+03
+  c1 (bot.left/middle/top rt.) =  -0.654307E-10 -0.394025E-07 -0.153374E-10
+  c2 (bot.left/middle/top rt.) =   0.331303E+12  0.892176E+12  0.396342E+12
+ 
+ t =   0.720E+05     no. steps =   453   order =   5   stepsize =   0.777577E+03
+  c1 (bot.left/middle/top rt.) =   0.120278E-10  0.725732E-08  0.272181E-11
+  c2 (bot.left/middle/top rt.) =   0.332972E+12  0.618620E+12  0.403885E+12
+ 
+ t =   0.792E+05     no. steps =   462   order =   5   stepsize =   0.777577E+03
+  c1 (bot.left/middle/top rt.) =   0.204632E-11  0.123056E-08  0.490941E-12
+  c2 (bot.left/middle/top rt.) =   0.333441E+12  0.666890E+12  0.412026E+12
+ 
+ t =   0.864E+05     no. steps =   471   order =   5   stepsize =   0.777577E+03
+  c1 (bot.left/middle/top rt.) =  -0.653325E-13 -0.393660E-10 -0.151265E-13
+  c2 (bot.left/middle/top rt.) =   0.335178E+12  0.910691E+12  0.416250E+12
+ 
+ 
+Final statistics:
+ 
+ number of steps        =   471     number of f evals.     =  613
+ number of prec. setups =    81
+ number of prec. evals. =     9     number of prec. solves =  1187
+ number of nonl. iters. =   610     number of lin. iters.  =   636
+ average Krylov subspace dimension (NLI/NNI)  =   0.104262E+01
+ number of conv. failures.. nonlinear =   0  linear =   0
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/fcvband.c b/Win32/WinCVODE/sundials/cvode/fcmix/fcvband.c
new file mode 100644
index 0000000..7c2c351
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/fcvband.c
@@ -0,0 +1,93 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:58 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * Fortran/C interface routines for CVODE/CVBAND, for the case of 
+ * a user-supplied Jacobian approximation routine.                
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvband.h"         /* CVBand prototype                               */
+#include "fcvode.h"         /* actual function names, prototypes and
+			       global variables                               */
+#include "nvector.h"        /* definitions of type N_Vector and vector macros */
+#include "sundialstypes.h"  /* definition of type realtype                    */
+
+/******************************************************************************/
+
+/* Prototype of the Fortran routine */
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+  extern void FCV_BJAC(long int*, long int*, long int*, long int*, 
+                       realtype*, realtype*, realtype*, realtype*,
+                       realtype*, realtype*, realtype*, realtype*,
+                       realtype*);
+#ifdef __cplusplus
+}
+#endif
+
+/***************************************************************************/
+
+void FCV_BANDSETJAC(int *flag, int *ier)
+{
+  if (*flag == 0) CVBandSetJacFn(CV_cvodemem, NULL, NULL);
+  else CVBandSetJacFn(CV_cvodemem, FCVBandJac, NULL);
+}
+
+/***************************************************************************/
+
+/* C function CVBandJac interfaces between CVODE and a Fortran subroutine
+   FCVBJAC for solution of a linear system with band Jacobian approximation.
+   Addresses of arguments are passed to FCVBJAC, using the macro 
+   BAND_COL from BAND and the routine N_VGetArrayPointer from NVECTOR.
+   The address passed for J is that of the element in column 0 with row 
+   index -mupper.  An extended bandwith equal to (J->smu) + mlower + 1 is
+   passed as the column dimension of the corresponding array.
+   Auxiliary data is assumed to be communicated by Common. */
+
+void FCVBandJac(long int N, long int mupper, long int mlower,
+                BandMat J, realtype t,
+                N_Vector y, N_Vector fy, void *jac_data,
+                N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3)
+{
+  N_Vector ewt;
+  realtype *ydata, *fydata, *jacdata, *ewtdata, *v1data, *v2data, *v3data;
+  realtype h;
+  long int eband;
+
+  ewt = N_VClone(y);
+
+  CVodeGetErrWeights(CV_cvodemem, ewt);
+  CVodeGetLastStep(CV_cvodemem, &h);
+
+  ydata   = N_VGetArrayPointer(y);
+  fydata  = N_VGetArrayPointer(fy);
+  v1data  = N_VGetArrayPointer(vtemp1);
+  v2data  = N_VGetArrayPointer(vtemp2);
+  v3data  = N_VGetArrayPointer(vtemp3);
+  ewtdata = N_VGetArrayPointer(ewt);
+
+  eband = (J->smu) + mlower + 1;
+  jacdata = BAND_COL(J,0) - mupper;
+
+
+  FCV_BJAC(&N, &mupper, &mlower, &eband, 
+           &t, ydata, fydata, jacdata, 
+           ewtdata, &h, v1data, v2data, v3data);
+
+  N_VDestroy(ewt);
+
+}
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/fcvbbd.c b/Win32/WinCVODE/sundials/cvode/fcmix/fcvbbd.c
new file mode 100644
index 0000000..dac52ff
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/fcvbbd.c
@@ -0,0 +1,162 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:58 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This module contains the routines necessary to interface with the
+ * CVBBDPRE module and user-supplied Fortran routines.
+ * The routines here call the generically named routines and provide
+ * a standard interface to the C code of the CVBBDPRE package.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvbbdpre.h"      /* prototypes of CVBBDPRE functions and macros */
+#include "cvode.h"         /* CVODE constants and prototypes              */
+#include "cvspgmr.h"       /* prototypes of CVSPGMR interface routines    */
+#include "fcvbbd.h"        /* prototypes of interfaces to CVBBDPRE        */
+#include "fcvode.h"        /* actual function names, prototypes and
+			      global variables                            */
+#include "nvector.h"       /* definition of type N_Vector                 */
+#include "sundialstypes.h" /* definition of type realtype                 */
+
+/***************************************************************************/
+
+/* Prototypes of the Fortran routines */
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+  extern void FCV_GLOCFN(long int*, realtype*, realtype*, realtype*);
+  extern void FCV_COMMFN(long int*, realtype*, realtype*);
+#ifdef __cplusplus
+}
+#endif
+
+/***************************************************************************/
+
+void FCV_BBDINIT(long int *Nloc, long int *mudq, long int *mldq, 
+                 long int *mu, long int *ml, realtype* dqrely, int *ier)
+{
+
+  /* 
+     First call CVBBDPrecAlloc to initialize CVBBDPRE module:
+     Nloc       is the local vector size
+     mudq,mldq  are the half-bandwidths for computing preconditioner blocks
+     mu, ml     are the half-bandwidths of the retained preconditioner blocks
+     dqrely     is the difference quotient relative increment factor
+     FCVgloc    is a pointer to the CVLocalFn function
+     FCVcfn     is a pointer to the CVCommFn function 
+  */
+
+  CVBBD_Data = CVBBDPrecAlloc(CV_cvodemem, *Nloc, *mudq, *mldq, *mu, *ml, 
+                              *dqrely, FCVgloc, FCVcfn);
+  if (CVBBD_Data == NULL) *ier = -1; 
+  else                    *ier = 0;
+
+  return; 
+}
+
+/***************************************************************************/
+
+void FCV_BBDSPGMR(int *pretype, int *gstype, int *maxl, realtype *delt, int *ier)
+{
+  /* 
+     Call CVBBDSpgmr to specify the SPGMR linear solver:
+     pretype    is the preconditioner type
+     gstype     is the Gram-Schmidt process type
+     maxl       is the maximum Krylov dimension
+     delt       is the linear convergence tolerance factor 
+  */
+
+  *ier = CVBBDSpgmr(CV_cvodemem, *pretype, *maxl, CVBBD_Data);
+  if (*ier != CVSPGMR_SUCCESS) return;
+
+  *ier = CVSpgmrSetGSType(CV_cvodemem, *gstype);
+  if (*ier != CVSPGMR_SUCCESS) return;
+
+  *ier = CVSpgmrSetDelt(CV_cvodemem, *delt);
+  if (*ier != CVSPGMR_SUCCESS) return;
+
+  CV_ls = 4;
+}
+
+/***************************************************************************/
+
+void FCV_BBDREINIT(long int *Nloc, long int *mudq, long int *mldq, 
+                   realtype* dqrely, int *ier)
+{
+  /* 
+     First call CVReInitBBD to re-initialize CVBBDPRE module:
+     CVBBD_Data  is the pointer to P_data
+     mudq,mldq   are the half-bandwidths for computing preconditioner blocks
+     dqrely      is the difference quotient relative increment factor
+     FCVgloc     is a pointer to the CVLocalFn function
+     FCVcfn      is a pointer to the CVCommFn function 
+  */
+
+  *ier = CVBBDPrecReInit(CVBBD_Data, *mudq, *mldq,
+                         *dqrely, FCVgloc, FCVcfn);
+}
+
+/***************************************************************************/
+
+/* C function FCVgloc to interface between CVBBDPRE module and a Fortran 
+   subroutine FCVLOCFN. */
+
+void FCVgloc(long int Nloc, realtype t, N_Vector yloc, N_Vector gloc,
+             void *f_data)
+{
+  realtype *yloc_data, *gloc_data;
+  
+  yloc_data = N_VGetArrayPointer(yloc);
+  gloc_data = N_VGetArrayPointer(gloc);
+
+  FCV_GLOCFN(&Nloc, &t, yloc_data, gloc_data);
+}
+
+/***************************************************************************/
+
+/* C function FCVcfn to interface between CVBBDPRE module and a Fortran 
+   subroutine FCVCOMMF. */
+
+
+void FCVcfn(long int Nloc, realtype t, N_Vector y, void *f_data)
+{
+  realtype *yloc;
+
+  yloc = N_VGetArrayPointer(y);
+
+  FCV_COMMFN(&Nloc, &t, yloc);
+
+}
+
+/***************************************************************************/
+
+/* C function FCVBBDOPT to access optional outputs from CVBBD_Data */
+
+void FCV_BBDOPT(long int *lenrpw, long int *lenipw, long int *nge)
+{
+  CVBBDPrecGetWorkSpace(CVBBD_Data, lenrpw, lenipw);
+  CVBBDPrecGetNumGfnEvals(CVBBD_Data, nge);
+}
+
+
+/***************************************************************************/
+
+/* C function FCVBBDFREE to interface to CVBBDPrecFree, to free memory 
+   created by CVBBDPrecAlloc */
+
+void FCV_BBDFREE(void)
+{
+  CVBBDPrecFree(CVBBD_Data);
+}
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/fcvbbd.h b/Win32/WinCVODE/sundials/cvode/fcmix/fcvbbd.h
new file mode 100644
index 0000000..23e9100
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/fcvbbd.h
@@ -0,0 +1,393 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:58 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Alan Hindmarsh, Radu Serban and
+ *                Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the Fortran interface include file for the BBD
+ * preconditioner (CVBBDPRE)
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * ==============================================================================
+ *
+ *                   FCVBBD Interface Package
+ * 
+ * The FCVBBD Interface Package is a package of C functions which,
+ * together with the FCVODE Interface Package, support the use of the
+ * CVODE solver (parallel MPI version) with the CVBBDPRE preconditioner module,
+ * for the solution of ODE systems in a mixed Fortran/C setting.  The
+ * combination of CVODE and CVBBDPRE solves systems dy/dt = f(t,y) with
+ * the SPGMR (scaled preconditioned GMRES) method for the linear systems
+ * that arise, and with a preconditioner that is block-diagonal with
+ * banded blocks.  While CVODE and CVBBDPRE are written in C, it is
+ * assumed here that the user's calling program and user-supplied
+ * problem-defining routines are written in Fortran.
+ * 
+ * The user-callable functions in this package, with the corresponding
+ * CVODE and CVBBDPRE functions, are as follows: 
+ *   FCVBBDININT  interfaces to CVBBDPrecAlloc and CVSpgmr 
+ *   FCVBBDREINIT interfaces to CVBBDPrecReInit
+ *   FCVBBDOPT    accesses optional outputs
+ *   FCVBBDFREE   interfaces to CVBBDPrecFree
+ * 
+ * In addition to the Fortran right-hand side function FCVFUN, the
+ * user-supplied functions used by this package, are listed below,
+ * each with the corresponding interface function which calls it (and its
+ * type within CVBBDPRE or CVODE):
+ *   FCVLOCFN  is called by the interface function FCVgloc of type CVLocalFn
+ *   FCVCOMMF  is called by the interface function FCVcfn of type CVCommFn
+ *   FCVJTIMES (optional) is called by the interface function FCVJtimes of 
+ *             type CVSpgmrJtimesFn
+ * (The names of all user-supplied routines here are fixed, in order to
+ * maximize portability for the resulting mixed-language program.)
+ * 
+ * Important note on portability.
+ * In this package, the names of the interface functions, and the names of
+ * the Fortran user routines called by them, appear as dummy names
+ * which are mapped to actual values by a series of definitions in the
+ * header file fcvbbd.h. These definition depend in turn on variables
+ * SUNDIALS_UNDERSCORE_NONE and SUNDIALS_UNDERSCORE_TWO which can be 
+ * set at the configuration stage.
+ * 
+ * ==============================================================================
+ * 
+ *               Usage of the FCVODE/FCVBBD Interface Packages
+ * 
+ * The usage of the combined interface packages FCVODE and FCVBBD requires
+ * calls to seven to twelve interface functions, and three or four user-supplied
+ * routines which define the problem to be solved and indirectly define
+ * the preconditioner.  These function calls and user routines are
+ * summarized separately below.
+ * 
+ * Some details are omitted, and the user is referred to the CVODE user document 
+ * for more complete information.
+ * 
+ * (1) User-supplied right-hand side routine: FCVFUN
+ * The user must in all cases supply the following Fortran routine
+ *       SUBROUTINE FCVFUN (T, Y, YDOT)
+ *       DIMENSION Y(*), YDOT(*)
+ * It must set the YDOT array to f(t,y), the right-hand side of the ODE
+ * system, as function of T = t and the array Y = y.  Here Y and YDOT
+ * are distributed vectors.
+ * 
+ * (2) User-supplied routines to define preconditoner: FCVLOCFN and FCVCOMMF
+ * 
+ * The routines in the CVBBDPRE module provide a preconditioner matrix
+ * for CVODE that is block-diagonal with banded blocks.  The blocking
+ * corresponds to the distribution of the dependent variable vector y
+ * among the processors.  Each preconditioner block is generated from the
+ * Jacobian of the local part (on the current processor) of a given
+ * function g(t,y) approximating f(t,y).  The blocks are generated by a
+ * difference quotient scheme on each processor independently, utilizing
+ * an assumed banded structure with given half-bandwidths.  A separate
+ * pair of half-bandwidths defines the band matrix retained.
+ * 
+ * (2.1) Local approximate function FCVLOCFN.
+ * The user must supply a subroutine of the form
+ *       SUBROUTINE FCVLOCFN (NLOC, T, YLOC, GLOC)
+ *       DIMENSION YLOC(*), GLOC(*)
+ * to compute the function g(t,y) which approximates the right-hand side
+ * function f(t,y).  This function is to be computed locally, i.e. without 
+ * inter-processor communication.  (The case where g is mathematically
+ * identical to f is allowed.)  It takes as input the local vector length
+ * NLOC, the independent variable value T = t, and the local realtype
+ * dependent variable array YLOC.  It is to compute the local part of
+ * g(t,y) and store this in the realtype array GLOC.
+ * 
+ * (2.2) Communication function FCVCOMMF.
+ * The user must also supply a subroutine of the form
+ *       SUBROUTINE FCVCOMMF (NLOC, T, YLOC)
+ *       DIMENSION YLOC(*)
+ * which is to perform all inter-processor communication necessary to
+ * evaluate the approximate right-hand side function g described above.
+ * This function takes as input the local vector length NLOC, the
+ * independent variable value T = t, and the local real dependent
+ * variable array YLOC.  It is expected to save communicated data in 
+ * work space defined by the user, and made available to CVLOCFN.
+ * Each call to the FCVCOMMF is preceded by a call to FCVFUN with the same
+ * (t,y) arguments.  Thus FCVCOMMF can omit any communications done by 
+ * FCVFUN if relevant to the evaluation of g.
+ * 
+ * (3) Optional user-supplied Jacobian-vector product routine: FCVJTIMES
+ * As an option, the user may supply a routine that computes the product
+ * of the system Jacobian J = df/dy and a given vector v.  If supplied, it
+ * must have the following form:
+ *       SUBROUTINE FCVJTIMES (V, FJV, T, Y, FY, EWT, WORK, IER)
+ *       DIMENSION V(*), FJV(*), Y(*), FY(*), EWT(*), WORK(*)
+ * Typically this routine will use only NEQ, T, Y, V, and FJV.  It must
+ * compute the product vector Jv, where the vector v is stored in V, and store
+ * the product in FJV.  On return, set IER = 0 if FCVJTIMES was successful,
+ * and nonzero otherwise.
+ * 
+ * (4) Initialization:  FNVINITP, FCVMALLOC, FCVBBDINIT.
+ * 
+ * (4.1) To initialize the parallel vector specification, the user must make 
+ * the following call:
+ *        CALL FNVINITP (NLOCAL, NGLOBAL, IER)
+ * The arguments are:
+ * NLOCAL  = local size of vectors on this processor
+ * NGLOBAL = the system size, and the global size of vectors (the sum 
+ *           of all values of NLOCAL)
+ * IER     = return completion flag. Values are 0 = success, -1 = failure.
+ * 
+ * Note: If MPI was initialized by the user, the communicator must be
+ * set to MPI_COMM_WORLD.  If not, this routine initializes MPI and sets
+ * the communicator equal to MPI_COMM_WORLD.
+ * 
+ * (4.2) To set various problem and solution parameters and allocate
+ * internal memory for CVODE, make the following call:
+ *       CALL FCVMALLOC(T0, Y0, METH, ITMETH, IATOL, RTOL, ATOL, INOPT,
+ *      1               IOPT, ROPT, IER)
+ * The arguments are:
+ * T0     = initial value of t
+ * Y0     = array of initial conditions
+ * METH   = basic integration method: 1 = Adams (nonstiff), 2 = BDF (stiff)
+ * ITMETH = nonlinear iteration method: 1 = functional iteration, 2 = Newton iter.
+ * IATOL  = type for absolute tolerance ATOL: 1 = scalar, 2 = array
+ * RTOL   = relative tolerance (scalar)
+ * ATOL   = absolute tolerance (scalar or array)
+ * INOPT  = optional input flag: 0 = none, 1 = inputs used
+ * IOPT   = array of length 40 for integer optional inputs and outputs
+ *          (declare as INTEGER*4 or INTEGER*8 according to C type long int)
+ * ROPT   = array of length 40 for real optional inputs and outputs
+ *          The optional inputs are MAXORD, MXSTEP, MXHNIL, SLDET, H0, HMAX,
+ *          HMIN, stored in IOPT(1), IOPT(2), IOPT(3), IOPT(14), ROPT(1),
+ *          ROPT(2), ROPT(3), respectively.  If any of these optional inputs
+ *          are used, set the others to zero to indicate default values.
+ *          The optional outputs are NST, NFE, NSETUPS, NNI, NCFN, NETF, QU, QCUR,
+ *          LENRW, LENIW, NOR, HU, HCUR, TCUR, TOLSF, stored in IOPT(4) .. IOPT(13),
+ *          IOPT(15), ROPT(4) .. ROPT(7), resp.  See the CVODE manual for details. 
+ * IER    = return completion flag.  Values are 0 = success, and -1 = failure.
+ *          See printed message for details in case of failure.
+ * 
+ * (4.3) To allocate memory and initialize data associated with the CVBBDPRE
+ * preconditioner, make the following call:
+ *       CALL FCVBBDINIT(NLOCAL, MUDQ, MLDQ, MU, ML, DQRELY, IER)
+ * 
+ * The arguments are:
+ * NLOCAL    = local size of vectors on this processor
+ * MUDQ,MLDQ = upper and lower half-bandwidths to be used in the computation
+ *             of the local Jacobian blocks by difference quotients.
+ *             These may be smaller than the true half-bandwidths of the
+ *             Jacobian of the local block of g, when smaller values may
+ *             provide greater efficiency.
+ * MU, ML    = upper and lower half-bandwidths of the band matrix that 
+ *             is retained as an approximation of the local Jacobian block.
+ *             These may be smaller than MUDQ and MLDQ.
+ * DQRELY    = relative increment factor in y for difference quotients
+ *             (optional). 0.0 indicates the default, sqrt(unit roundoff).
+ * IER       = return completion flag: IER=0: success, IER<0: an error occured
+ * 
+ * (4.4) To specify the SPGMR linear system solver and use it with the CVBBDPRE
+ * preconditioner, make the following call:
+ *       CALL FCVBBDSPGMR(IPRETYPE, IGSTYPE, MAXL, DELT, IER)
+ *
+ * the arguments are:
+ * IPRETYPE  = preconditioner type: 
+ *             0 = none
+ *             1 = left only
+ *             2 = right only
+ *             3 = both sides.
+ * IGSTYPE   = Gram-schmidt process type: 1 = modified G-S, 1 = classical G-S.
+ * MAXL      = maximum Krylov subspace dimension; 0 indicates default.
+ * DELT      = linear convergence tolerance factor; 0.0 indicates default.
+ * IER       = return completion flag: IER=0: success, IER<0: an error occured
+ *
+ * (4.5) To specify whether GMRES should use the supplied FCVJTIMES or the 
+ * internal finite difference approximation, make the call
+ *        CALL FCVSPGMRSETJAC(FLAG, IER)
+ * where FLAG=0 for finite differences approxaimtion or
+ *       FLAG=1 to use the supplied routine FCVJTIMES
+ * 
+ * (5) Re-initialization: FCVREINIT, FCVBBDREINIT
+ * If a sequence of problems of the same size is being solved using the SPGMR
+ * linear solver in combination with the CVBBDPRE preconditioner, then the
+ * CVODE package can be re-initialized for the second and subsequent problems
+ * so as to avoid further memory allocation.  First, in place of the call
+ * to FCVMALLOC, make the following call:
+ *       CALL FCVREINIT(T0, Y0, METH, ITMETH, IATOL, RTOL, ATOL, INOPT,
+ *      1               IOPT, ROPT, IER)
+ * The arguments have the same names and meanings as those of FCVMALLOC,
+ * except that NEQ has been omitted from the argument list (being unchanged
+ * for the new problem).  FCVREINIT performs the same initializations as
+ * FCVMALLOC, but does no memory allocation, using instead the existing
+ * internal memory created by the previous FCVMALLOC call.
+ * Following the call to FCVREINIT, a call to FCVBBDINIT may or may not be needed.
+ * If the input arguments are the same, no FCVBBDINIT call is needed.
+ * If there is a change in input arguments other than MU, ML or MAXL, then 
+ * the user program should call FCVBBDREINIT.  This reinitializes the SPGMR
+ * linear solver, but without reallocating its memory.  The arguments of the
+ * FCVBBDREINIT routine have the same names and meanings as FCVBBDINIT.  
+ * Finally, if the value of MU, ML, or MAXL is being changed, then a call to 
+ * FCVBBDINIT must be made; in this case the SPGMR memory is reallocated.
+ * 
+ * (6) The integrator: FCVODE
+ * Carrying out the integration is accomplished by making calls as follows:
+ *       CALL FCVODE (TOUT, T, Y, ITASK, IER)
+ * The arguments are:
+ * TOUT  = next value of t at which a solution is desired (input)
+ * T     = value of t reached by the solver on output
+ * Y     = array containing the computed solution on output
+ * ITASK = task indicator: 
+ *         1 = normal mode (overshoot TOUT and interpolate)
+ *         2 = one-step mode (return after each internal step taken)
+ *         3 = normal mode with TSTOP check
+ *         4 = one-step mode with TSTOP check
+ * IER   = completion flag: 0 = success, values -1 ... -8 are various
+ *         failure modes (see CVODE User Guide).
+ * The current values of the optional outputs are available in IOPT and ROPT.
+ * 
+ * (7) Optional outputs: FCVBBDOPT
+ * Optional outputs specific to the SPGMR solver are NPE, NLI, NPS, NCFL,
+ * LRW, and LIW, stored in IOPT(16) ... IOPT(21), respectively.
+ * To obtain the optional outputs associated with the CVBBDPRE module, make
+ * the following call:
+ *       CALL FCVBBDOPT (LENRPW, LENIPW, NGE)
+ * The arguments returned are:
+ * LENRPW = length of real preconditioner work space, in realtype words.
+ *          This size is local to the current processor.
+ * LENIPW = length of integer preconditioner work space, in integer words.
+ *          This size is local to the current processor.
+ * NGE    = number of g(t,y) evaluations (calls to CVLOCFN) so far.
+ * 
+ * (8) Computing solution derivatives: FCVDKY
+ * To obtain a derivative of the solution (optionally), of order up to
+ * the current method order, make the following call:
+ *       CALL FCVDKY (T, K, DKY)
+ * The arguments are:
+ * T   = value of t at which solution derivative is desired
+ * K   = derivative order (0 .le. K .le. QU)
+ * DKY = array containing computed K-th derivative of y on return
+ * 
+ * (9) Memory freeing: FCVBBDFREE, FCVFREE, and FNVFREEP
+ *   To the free the internal memory created by the calls to FNVINITP,
+ * FCVMALLOC, and FCVBBDINIT, make the following calls, in this order:
+ *       CALL FCVBBDFREE
+ *       CALL FCVFREE
+ *       CALL FNVFREEP
+ * 
+ * ==============================================================================
+ */
+
+#ifndef _FCVBBD_H
+#define _FCVBBD_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+/* header files  */
+
+#include "nvector.h"       /* definition of type N_Vector */
+#include "sundialstypes.h" /* definition of type realtype */
+
+/* Definitions of interface function names */
+
+#if defined(F77_FUNC)
+
+#define FCV_BBDINIT   F77_FUNC(fcvbbdinit, FCVBBDINIT)
+#define FCV_BBDSPGMR  F77_FUNC(fcvbbdspgmr, FCVBBDSPGMR)
+#define FCV_BBDREINIT F77_FUNC(fcvbbdreinit, FCVBBDREINIT)
+#define FCV_BBDOPT    F77_FUNC(fcvbbdopt, FCVBBDOPT)
+#define FCV_BBDFREE   F77_FUNC(fcvbbdfree, FCVBBDFREE)
+#define FCV_GLOCFN    F77_FUNC(fcvglocfn, FCVGLOCFN)
+#define FCV_COMMFN    F77_FUNC(fcvcommfn, FCVCOMMFN)
+
+#elif defined(SUNDIALS_UNDERSCORE_NONE) && defined(SUNDIALS_CASE_LOWER)
+
+#define FCV_BBDINIT   fcvbbdinit
+#define FCV_BBDSPGMR  fcvbbdspgmr
+#define FCV_BBDREINIT fcvbbdreinit
+#define FCV_BBDOPT    fcvbbdopt
+#define FCV_BBDFREE   fcvbbdfree
+#define FCV_GLOCFN    fcvglocfn
+#define FCV_COMMFN    fcvcommfn
+
+#elif defined(SUNDIALS_UNDERSCORE_NONE) && defined(SUNDIALS_CASE_UPPER)
+
+#define FCV_BBDINIT   FCVBBDINIT
+#define FCV_BBDSPGMR  FCVBBDSPGMR
+#define FCV_BBDREINIT FCVBBDREINIT
+#define FCV_BBDOPT    FCVBBDOPT
+#define FCV_BBDFREE   FCVBBDFREE
+#define FCV_GLOCFN    FCVGLOCFN
+#define FCV_COMMFN    FCVCOMMFN
+
+#elif defined(SUNDIALS_UNDERSCORE_ONE) && defined(SUNDIALS_CASE_LOWER)
+
+#define FCV_BBDINIT   fcvbbdinit_
+#define FCV_BBDSPGMR  fcvbbdspgmr_
+#define FCV_BBDREINIT fcvbbdreinit_
+#define FCV_BBDOPT    fcvbbdopt_
+#define FCV_BBDFREE   fcvbbdfree_
+#define FCV_GLOCFN    fcvglocfn_
+#define FCV_COMMFN    fcvcommfn_
+
+#elif defined(SUNDIALS_UNDERSCORE_ONE) && defined(SUNDIALS_CASE_UPPER)
+
+#define FCV_BBDINIT   FCVBBDINIT_
+#define FCV_BBDSPGMR  FCVBBDSPGMR_
+#define FCV_BBDREINIT FCVBBDREINIT_
+#define FCV_BBDOPT    FCVBBDOPT_
+#define FCV_BBDFREE   FCVBBDFREE_
+#define FCV_GLOCFN    FCVGLOCFN_
+#define FCV_COMMFN    FCVCOMMFN_
+
+#elif defined(SUNDIALS_UNDERSCORE_TWO) && defined(SUNDIALS_CASE_LOWER)
+
+#define FCV_BBDINIT   fcvbbdinit__
+#define FCV_BBDSPGMR  fcvbbdspgmr__
+#define FCV_BBDREINIT fcvbbdreinit__
+#define FCV_BBDOPT    fcvbbdopt__
+#define FCV_BBDFREE   fcvbbdfree__
+#define FCV_GLOCFN    fcvglocfn__
+#define FCV_COMMFN    fcvcommfn__
+
+#elif defined(SUNDIALS_UNDERSCORE_TWO) && defined(SUNDIALS_CASE_UPPER)
+
+#define FCV_BBDINIT   FCVBBDINIT__
+#define FCV_BBDSPGMR  FCVBBDSPGMR__
+#define FCV_BBDREINIT FCVBBDREINIT__
+#define FCV_BBDOPT    FCVBBDOPT__
+#define FCV_BBDFREE   FCVBBDFREE__
+#define FCV_GLOCFN    FCVGLOCFN__
+#define FCV_COMMFN    FCVCOMMFN__
+
+#endif
+
+/* Prototypes of exported functions */
+
+void FCV_BBDINIT(long int *Nloc, long int *mudq, long int *mldq, 
+                 long int *mu, long int *ml, realtype* dqrely, int *ier);
+void FCV_BBDSPGMR(int *pretype, int *gstype, int *maxl, realtype *delt, int *ier);
+void FCV_BBDREINIT(long int *Nloc, long int *mudq, long int *mldq, 
+                   realtype* dqrely, int *ier);
+void FCV_BBDOPT(long int *lenrpw, long int *lenipw, long int *nge);
+void FCV_BBDFREE(void);
+
+/* Prototypes: Functions Called by the CVBBDPRE Module */
+
+void FCVgloc(long int Nloc, realtype t, N_Vector yloc, N_Vector gloc,
+             void *f_data);
+
+void FCVcfn(long int Nloc, realtype t, N_Vector y, void *f_data);
+
+
+/* Declarations for global variables, shared among various routines */
+
+void *CVBBD_Data;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/fcvbp.c b/Win32/WinCVODE/sundials/cvode/fcmix/fcvbp.c
new file mode 100644
index 0000000..7ecef01
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/fcvbp.c
@@ -0,0 +1,93 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:58 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This module contains the routines necessary to interface with the
+ * CVBANDPRE module and user-supplied Fortran routines.
+ * The routines here call the generically named routines and provide 
+ * a standard interface to the C code of the CVBANDPRE package.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvbandpre.h"      /* prototypes of CVBANDPRE functions and macros */
+#include "cvode.h"          /* CVODE constants and prototypes               */
+#include "cvspgmr.h"        /* prototypes of CVSPGMR interface routines     */
+#include "fcvbp.h"          /* prototypes of interfaces to CVBANDPRE        */
+#include "fcvode.h"         /* actual function names, prototypes and
+			       global variables                             */
+#include "nvector.h"        /* definition of type N_Vector                  */
+#include "sundialstypes.h"  /* definition of type realtype                  */
+
+/***************************************************************************/
+
+void FCV_BPINIT(long int *N, long int *mu, long int *ml, int *ier)
+{
+  /* 
+     Call CVBandPrecAlloc to initialize the CVBANDPRE module:
+     N      is the vector size
+     mu, ml are the half-bandwidths of the retained preconditioner blocks
+  */
+
+  CVBP_Data = CVBandPrecAlloc(CV_cvodemem, *N, *mu, *ml);
+
+  if (CVBP_Data == NULL) *ier = -1; 
+  else                   *ier = 0;
+
+  return;
+}
+
+/***************************************************************************/
+
+void FCV_BPSPGMR(int *pretype, int *gstype, int *maxl, realtype *delt, int *ier)
+{
+  /* 
+     Call CVBPSpgmr to specify the SPGMR linear solver:
+     CV_cvodemem is the pointer to the CVODE memory block
+     pretype    is the preconditioner type
+     gstype     is the Gram-Schmidt process type
+     maxl       is the maximum Krylov dimension
+     delt       is the linear convergence tolerance factor 
+  */
+
+  *ier = CVBPSpgmr(CV_cvodemem, *pretype, *maxl, CVBP_Data);
+  if (*ier != CVSPGMR_SUCCESS) return;
+
+  *ier = CVSpgmrSetGSType(CV_cvodemem, *gstype);
+  if (*ier != CVSPGMR_SUCCESS) return;
+
+  *ier = CVSpgmrSetDelt(CV_cvodemem, *delt);
+  if (*ier != CVSPGMR_SUCCESS) return;
+
+  CV_ls = 4;
+}
+
+/***************************************************************************/
+
+/* C function FCVBPOPT to access optional outputs from CVBANDPRE_Data */
+
+void FCV_BPOPT(long int *lenrpw, long int *lenipw, long int *nfe)
+{
+  CVBandPrecGetWorkSpace(CVBP_Data, lenrpw, lenipw);
+  CVBandPrecGetNumRhsEvals(CVBP_Data, nfe);
+}
+
+/***************************************************************************/
+
+/* C function FCVBPFREE to interface to CVBandPrecFree, to free memory 
+   created by CVBandPrecAlloc */
+
+void FCV_BPFREE(void)
+{
+  CVBandPrecFree(CVBP_Data);
+}
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/fcvbp.h b/Win32/WinCVODE/sundials/cvode/fcmix/fcvbp.h
new file mode 100644
index 0000000..98bd7c4
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/fcvbp.h
@@ -0,0 +1,273 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:58 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Radu Serban and Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the Fortran interface include file for the BAND
+ * preconditioner (CVBANDPRE)
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * ==============================================================================
+ *
+ *                  FCVBP Interface Package
+ *
+ * The FCVBP Interface Package is a package of C functions which,
+ * together with the FCVODE Interface Package, support the use of the
+ * CVODE solver (serial version) with the CVBANDPRE preconditioner module,
+ * for the solution of ODE systems in a mixed Fortran/C setting.  The
+ * combination of CVODE and CVBANDPRE solves systems dy/dt = f(t,y) with
+ * the SPGMR (scaled preconditioned GMRES) method for the linear systems
+ * that arise, and with a banded difference quotient Jacobian-based
+ * preconditioner.
+ * 
+ * The user-callable functions in this package, with the corresponding
+ * CVODE and CVBBDPRE functions, are as follows: 
+ *   FCVBPINIT  interfaces to CVBandPrecAlloc and CVSpgmr 
+ *   FCVBPOPT   accesses optional outputs
+ *   FCVBPFREE  interfaces to CVBandPrecFree
+ * 
+ * In addition to the Fortran right-hand side function FCVFUN, the
+ * user may (optionally) supply a routine FCVJTIMES which is called by 
+ * the interface function FCVJtimes of type CVSpgmrJtimesFn.
+ * (The names of all user-supplied routines here are fixed, in order to
+ * maximize portability for the resulting mixed-language program.)
+ * 
+ * Important note on portability.
+ * In this package, the names of the interface functions, and the names of
+ * the Fortran user routines called by them, appear as dummy names
+ * which are mapped to actual values by a series of definitions in the
+ * header file fcvbbd.h. These definition depend in turn on variables
+ * SUNDIALS_UNDERSCORE_NONE and SUNDIALS_UNDERSCORE_TWO which can be 
+ * set at the configuration stage.
+ * 
+ * ==============================================================================
+ * 
+ *               Usage of the FCVODE/FCVBP Interface Packages
+ * 
+ * The usage of the combined interface packages FCVODE and FCVBP requires
+ * calls to seven to ten interface functions, and one or two user-supplied
+ * routines which define the problem to be solved and indirectly define
+ * the preconditioner.  These function calls and user routines are
+ * summarized separately below.
+ * 
+ * Some details are omitted, and the user is referred to the CVODE user document 
+ * for more complete information.
+ * 
+ * (1) User-supplied right-hand side routine: FCVFUN
+ * The user must in all cases supply the following Fortran routine
+ *       SUBROUTINE FCVFUN (T, Y, YDOT)
+ *       DIMENSION Y(*), YDOT(*)
+ * It must set the YDOT array to f(t,y), the right-hand side of the ODE
+ * system, as function of T = t and the array Y = y.  Here Y and YDOT
+ * are distributed vectors.
+ * 
+ * (2) Optional user-supplied Jacobian-vector product routine: FCVJTIMES
+ * As an option, the user may supply a routine that computes the product
+ * of the system Jacobian J = df/dy and a given vector v.  If supplied, it
+ * must have the following form:
+ *       SUBROUTINE FCVJTIMES (V, FJV, T, Y, FY, EWT, WORK, IER)
+ *       DIMENSION V(*), FJV(*), Y(*), FY(*), EWT(*), WORK(*)
+ * Typically this routine will use only NEQ, T, Y, V, and FJV.  It must
+ * compute the product vector Jv, where the vector v is stored in V, and store
+ * the product in FJV.  On return, set IER = 0 if FCVJTIMES was successful,
+ * and nonzero otherwise.
+ * 
+ * (3) Initialization:  FNVINITS, FCVMALLOC, FCVBPINIT.
+ * 
+ * (3.1) To initialize the serial vector specification, the user must make 
+ * the following call:
+ *        CALL FNVINITS(NEQ, IER)
+ * where NEQ is the problem size and IER is a return completion flag.
+ * Possible values for IER are 0 = success, -1 = failure.
+ * 
+ * (3.2) To set various problem and solution parameters and allocate
+ * internal memory for CVODE, make the following call:
+ *       CALL FCVMALLOC(T0, Y0, METH, ITMETH, IATOL, RTOL, ATOL, INOPT,
+ *      1               IOPT, ROPT, IER)
+ * The arguments are:
+ * T0     = initial value of t
+ * Y0     = array of initial conditions
+ * METH   = basic integration method: 1 = Adams (nonstiff), 2 = BDF (stiff)
+ * ITMETH = nonlinear iteration method: 1 = functional iteration, 2 = Newton iter.
+ * IATOL  = type for absolute tolerance ATOL: 1 = scalar, 2 = array
+ * RTOL   = relative tolerance (scalar)
+ * ATOL   = absolute tolerance (scalar or array)
+ * INOPT  = optional input flag: 0 = none, 1 = inputs used
+ * IOPT   = array of length 40 for integer optional inputs and outputs
+ *          (declare as INTEGER*4 or INTEGER*8 according to C type long int)
+ * ROPT   = array of length 40 for real optional inputs and outputs
+ *          The optional inputs are MAXORD, MXSTEP, MXHNIL, SLDET, H0, HMAX,
+ *          HMIN, stored in IOPT(1), IOPT(2), IOPT(3), IOPT(14), ROPT(1),
+ *          ROPT(2), ROPT(3), respectively.  If any of these optional inputs
+ *          are used, set the others to zero to indicate default values.
+ *          The optional outputs are NST, NFE, NSETUPS, NNI, NCFN, NETF, QU, QCUR,
+ *          LENRW, LENIW, NOR, HU, HCUR, TCUR, TOLSF, stored in IOPT(4) .. IOPT(13),
+ *          IOPT(15), ROPT(4) .. ROPT(7), resp.  See the CVODE manual for details. 
+ * IER    = return completion flag.  Values are 0 = success, and -1 = failure.
+ *          See printed message for details in case of failure.
+ * 
+ * (3.3) To allocate memory and initialize data associated with the CVBANDPRE
+ * preconditioner, make the following call:
+ *       CALL FCVBPINIT(NEQ, MU, ML, IER)
+ * 
+ * The arguments are:
+ * NEQ       = problem size
+ * MU, ML    = upper and lower half-bandwidths of the band matrix that 
+ *             is retained as an approximation of the Jacobian.
+ * IER       = return completion flag: IER=0: success, IER<0: and error occured
+ * 
+ * (3.4) Tp specify the SPGMR linear solver with the CVBANDPRE preconditioner,
+ * make the following call
+ *       CALL FCVBPINIT(IPRETYPE, IGSTYPE, MAXL, DELT, IER)
+ * 
+ * The arguments are:
+ * IPRETYPE  = preconditioner type: 
+ *            0 = none
+ *            1 = left only
+ *            2 = right only
+ *            3 = both sides.
+ * IGSTYPE   = Gram-schmidt process type: 0 = modified G-S, 1 = classical G-S.
+ * MAXL      = maximum Krylov subspace dimension; 0 indicates default.
+ * DELT      = linear convergence tolerance factor; 0.0 indicates default.
+ * IER       = return completion flag: IER=0: success, IER<0: ans error occured
+ * 
+ * (3.5) To specify whether GMRES should use the supplied FCVJTIMES or the 
+ * internal finite difference approximation, make the call
+ *        CALL FCVSPGMRSETJAC(FLAG, IER)
+ * where FLAG=0 for finite differences approxaimtion or
+ *       FLAG=1 to use the supplied routine FCVJTIMES
+ * 
+ * (4) The integrator: FCVODE
+ * Carrying out the integration is accomplished by making calls as follows:
+ *       CALL FCVODE (TOUT, T, Y, ITASK, IER)
+ * The arguments are:
+ * TOUT  = next value of t at which a solution is desired (input)
+ * T     = value of t reached by the solver on output
+ * Y     = array containing the computed solution on output
+ * ITASK = task indicator: 0 = normal mode (overshoot TOUT and interpolate)
+ *         1 = one-step mode (return after each internal step taken)
+ * IER   = completion flag: 0 = success, values -1 ... -8 are various
+ *         failure modes (see CVODE User Guide).
+ * The current values of the optional outputs are available in IOPT and ROPT.
+ * 
+ * (5) Optional outputs: FCVBPOPT
+ * Optional outputs specific to the SPGMR solver are NPE, NLI, NPS, NCFL,
+ * LRW, and LIW, stored in IOPT(16) ... IOPT(21), respectively.
+ * To obtain the optional outputs associated with the CVBANDPRE module, make
+ * the following call:
+ *       CALL FCVBPOPT(LENRPW, LENIPW, NFE)
+ * The arguments returned are:
+ * LENRPW = length of real preconditioner work space, in realtype words.
+ *          This size is local to the current processor.
+ * LENIPW = length of integer preconditioner work space, in integer words.
+ *          This size is local to the current processor.
+ * NGE    = number of f(t,y) evaluations for CVBANDPRE
+ * 
+ * (6) Computing solution derivatives: FCVDKY
+ * To obtain a derivative of the solution (optionally), of order up to
+ * the current method order, make the following call:
+ *       CALL FCVDKY (T, K, DKY)
+ * The arguments are:
+ * T   = value of t at which solution derivative is desired
+ * K   = derivative order (0 .le. K .le. QU)
+ * DKY = array containing computed K-th derivative of y on return
+ * 
+ * (7) Memory freeing: FCVBPFREE, FCVFREE, and FNVFREES
+ *   To the free the internal memory created by the calls to FNVINITS,
+ * FCVMALLOC, and FCVBPINIT, make the following calls, in this order:
+ *       CALL FCVBPFREE
+ *       CALL FCVFREE
+ *       CALL FNVFREES
+ * 
+ * ==============================================================================
+ */
+
+#ifndef _FCVBP_H
+#define _FCVBP_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+/* header files  */
+
+#include "nvector.h"       /* definition of type N_Vector */
+#include "sundialstypes.h" /* definition of type realtype */
+
+/* Definitions of interface function names */
+
+#if defined(F77_FUNC)
+
+#define FCV_BPINIT  F77_FUNC(fcvbpinit, FCVBPINIT)
+#define FCV_BPSPGMR F77_FUNC(fcvbpspgmr, FCVBPSPGMR)
+#define FCV_BPOPT   F77_FUNC(fcvbpopt, FCVBPOPT)
+#define FCV_BPFREE  F77_FUNC(fcvbpfree, FCVBPFREE)
+
+#elif defined(SUNDIALS_UNDERSCORE_NONE) && defined(SUNDIALS_CASE_LOWER)
+
+#define FCV_BPINIT  fcvbpinit
+#define FCV_BPSPGMR fcvbpspgmr
+#define FCV_BPOPT   fcvbpopt
+#define FCV_BPFREE  fcvbpfree
+
+#elif defined(SUNDIALS_UNDERSCORE_NONE) && defined(SUNDIALS_CASE_UPPER)
+
+#define FCV_BPINIT  FCVBPINIT
+#define FCV_BPSPGMR FCVBPSPGMR
+#define FCV_BPOPT   FCVBPOPT
+#define FCV_BPFREE  FCVBPFREE
+
+#elif defined(SUNDIALS_UNDERSCORE_ONE) && defined(SUNDIALS_CASE_LOWER)
+
+#define FCV_BPINIT  fcvbpinit_
+#define FCV_BPSPGMR fcvbpspgmr_
+#define FCV_BPOPT   fcvbpopt_
+#define FCV_BPFREE  fcvbpfree_
+
+#elif defined(SUNDIALS_UNDERSCORE_ONE) && defined(SUNDIALS_CASE_UPPER)
+
+#define FCV_BPINIT  FCVBPINIT_
+#define FCV_BPSPGMR FCVBPSPGMR_
+#define FCV_BPOPT   FCVBPOPT_
+#define FCV_BPFREE  FCVBPFREE_
+
+#elif defined(SUNDIALS_UNDERSCORE_TWO) && defined(SUNDIALS_CASE_LOWER)
+
+#define FCV_BPINIT  fcvbpinit__
+#define FCV_BPSPGMR fcvbpspgmr__
+#define FCV_BPOPT   fcvbpopt__
+#define FCV_BPFREE  fcvbpfree__
+
+#elif defined(SUNDIALS_UNDERSCORE_TWO) && defined(SUNDIALS_CASE_UPPER)
+
+#define FCV_BPINIT  FCVBPINIT__
+#define FCV_BPSPGMR FCVBPSPGMR__
+#define FCV_BPOPT   FCVBPOPT__
+#define FCV_BPFREE  FCVBPFREE__
+
+#endif
+
+/* Prototypes of exported function */
+void FCV_BPINIT(long int *N, long int *mu, long int *ml, int *ier);
+void FCV_BPSPGMR(int *pretype, int *gstype, int *maxl, realtype *delt, int *ier);
+void FCV_BPOPT(long int *lenrpw, long int *lenipw, long int *nfe);
+void FCV_BPFREE(void);
+
+/* Declarations for global variables, shared among various routines */
+
+void *CVBP_Data;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/fcvdense.c b/Win32/WinCVODE/sundials/cvode/fcmix/fcvdense.c
new file mode 100644
index 0000000..3c93d6a
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/fcvdense.c
@@ -0,0 +1,86 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:58 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * Fortran/C interface routines for CVODE/CVDENSE, for the case
+ * of a user-supplied Jacobian approximation routine.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvdense.h"        /* CVDense prototype and type DenseMat            */
+#include "fcvode.h"         /* actual function names, prototypes and
+			       global variables                               */
+#include "nvector.h"        /* definitions of type N_Vector and vector macros */
+#include "sundialstypes.h"  /* definition of type realtype                    */
+
+
+
+/***************************************************************************/
+
+/* Prototype of the Fortran routine */
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+  extern void FCV_DJAC(long int*, realtype*, realtype*, realtype*, realtype*, 
+                       realtype*, realtype*, realtype*, realtype*, realtype*);
+#ifdef __cplusplus
+}
+#endif
+
+/***************************************************************************/
+
+void FCV_DENSESETJAC(int *flag, int *ier)
+{
+  if (*flag == 0) CVDenseSetJacFn(CV_cvodemem, NULL, NULL);
+  else CVDenseSetJacFn(CV_cvodemem, FCVDenseJac, NULL);
+}
+
+/***************************************************************************/
+
+/* C function CVDenseJac interfaces between CVODE and a Fortran subroutine
+   FCVDJAC for solution of a linear system with dense Jacobian approximation.
+   Addresses of arguments are passed to FCVDJAC, using the macro 
+   DENSE_COL from DENSE and the routine N_VGetArrayPointer from NVECTOR.
+   Auxiliary data is assumed to be communicated by Common. */
+
+void FCVDenseJac(long int N, DenseMat J, realtype t, 
+                 N_Vector y, N_Vector fy, void *jac_data,
+                 N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3)
+{
+  N_Vector ewt;
+  realtype *ydata, *fydata, *jacdata, *ewtdata, *v1data, *v2data, *v3data;
+  realtype h;
+
+  ewt = N_VClone(y);
+
+  CVodeGetErrWeights(CV_cvodemem, ewt);
+  CVodeGetLastStep(CV_cvodemem, &h);
+
+  ydata   = N_VGetArrayPointer(y);
+  fydata  = N_VGetArrayPointer(fy);
+  v1data  = N_VGetArrayPointer(vtemp1);
+  v2data  = N_VGetArrayPointer(vtemp2);
+  v3data  = N_VGetArrayPointer(vtemp3);
+  ewtdata = N_VGetArrayPointer(ewt);
+
+  jacdata = DENSE_COL(J,0);
+
+  FCV_DJAC(&N, &t, ydata, fydata, jacdata, 
+           ewtdata, &h, v1data, v2data, v3data);
+
+  N_VDestroy(ewt);
+
+}
+
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/fcvewt.c b/Win32/WinCVODE/sundials/cvode/fcmix/fcvewt.c
new file mode 100644
index 0000000..9090997
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/fcvewt.c
@@ -0,0 +1,62 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:58 $
+ * ----------------------------------------------------------------- 
+ * Programmer: Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * Fortran/C interface routines for CVODE, for the case of a 
+ * user-supplied error weight calculation routine.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "fcvode.h"         /* actual fn. names, prototypes and global vars.  */
+#include "nvector.h"        /* definitions of type N_Vector and vector macros */
+#include "sundialstypes.h"  /* definition of type realtype                    */
+
+/***************************************************************************/
+
+/* Prototype of the Fortran routine */
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+  extern void FCV_EWT(realtype*, realtype*, int*);
+#ifdef __cplusplus
+}
+#endif
+
+/***************************************************************************/
+
+void FCV_EWTSET(int *flag, int *ier)
+{
+  if (*flag == 1)
+    *ier = CVodeSetEwtFn(CV_cvodemem, FCVEwtSet, NULL);
+}
+
+/***************************************************************************/
+
+/* 
+ * C function to interface between CVODE and a Fortran subroutine FCVEWT.
+ */
+
+int FCVEwtSet(N_Vector y, N_Vector ewt, void *e_data)
+{
+  int ier = 0;
+  realtype *ydata, *ewtdata;
+
+  ydata  = N_VGetArrayPointer(y);
+  ewtdata = N_VGetArrayPointer(ewt);
+
+  FCV_EWT(ydata, ewtdata, &ier);
+
+  return(ier);
+}
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/fcvjtimes.c b/Win32/WinCVODE/sundials/cvode/fcmix/fcvjtimes.c
new file mode 100644
index 0000000..17cc680
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/fcvjtimes.c
@@ -0,0 +1,88 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:58 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * The C function FCVJtimes is to interface between the CVSPGMR module
+ * and the user-supplied Jacobian-times-vector routine FCVJTIMES.     
+ * Note the use of the generic name FCV_JTIMES below.                 
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvspgmr.h"        /* CVSpgmr prototype                              */
+#include "fcvode.h"         /* actual function names, prototypes and
+			       global variables                               */
+#include "nvector.h"        /* definitions of type N_Vector and vector macros */
+#include "sundialstypes.h"  /* definition of type realtype                    */
+
+/***************************************************************************/
+
+/* Prototype of the Fortran routine */
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+  extern void FCV_JTIMES(realtype*, realtype*, realtype*, realtype*, 
+                         realtype*, realtype*, realtype*, realtype*,
+                         int*);
+#ifdef __cplusplus
+}
+#endif
+
+/***************************************************************************/
+
+void FCV_SPGMRSETJAC(int *flag, int *ier)
+{
+  if (*flag == 0) CVSpgmrSetJacTimesVecFn(CV_cvodemem, NULL, NULL);
+  else CVSpgmrSetJacTimesVecFn(CV_cvodemem, FCVJtimes, NULL);
+}
+
+/***************************************************************************/
+
+/* C function  FCVJtimes to interface between CVODE and  user-supplied
+   Fortran routine FCVJTIMES for Jacobian * vector product.
+   Addresses of v, Jv, t, y, fy, vnrm, ewt, h, uround, ytemp, and
+   the address nfePtr, are passed to FCVJTIMES, using the routine
+   N_VGetArrayPointer from NVECTOR. A return flag ier from FCVJTIMES is 
+   returned by FCVJtimes.
+   Auxiliary data is assumed to be communicated by common blocks. */
+
+int FCVJtimes(N_Vector v, N_Vector Jv, realtype t, 
+              N_Vector y, N_Vector fy,
+              void *jac_data, N_Vector work)
+{
+  N_Vector ewt;
+  realtype *vdata, *Jvdata, *ydata, *fydata, *ewtdata, *wkdata;
+  realtype h;
+
+  int ier = 0;
+  
+  ewt = N_VClone(y);
+
+  CVodeGetErrWeights(CV_cvodemem, ewt);
+  CVodeGetLastStep(CV_cvodemem, &h);
+
+  vdata   = N_VGetArrayPointer(v);
+  Jvdata  = N_VGetArrayPointer(Jv);
+  ydata   = N_VGetArrayPointer(y);
+  fydata  = N_VGetArrayPointer(fy);
+  wkdata  = N_VGetArrayPointer(work);
+  ewtdata = N_VGetArrayPointer(ewt);
+
+  FCV_JTIMES (vdata, Jvdata, &t, ydata, fydata, 
+              ewtdata, &h, wkdata, &ier);
+
+  N_VDestroy(ewt);
+
+  return(ier);
+}
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/fcvode.c b/Win32/WinCVODE/sundials/cvode/fcmix/fcvode.c
new file mode 100644
index 0000000..2f25613
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/fcvode.c
@@ -0,0 +1,458 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:58 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Alan C. Hindmarsh, Radu Serban and
+ *                Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the Fortran interface to
+ * the CVODE package.  See fcvode.h for usage.
+ * NOTE: some routines are necessarily stored elsewhere to avoid
+ * linking problems.  Therefore, see also fcvpreco.c, fcvpsol.c,
+ * fcvjtimes.c, and fcvspgmr.c for all the options available.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvband.h"         /* prototypes for CVBAND interface routines        */
+#include "cvdense.h"        /* prototypes for CVDENSE interface routines       */
+#include "cvdiag.h"         /* prototypes for CVDIAG interface routines        */
+#include "cvode.h"          /* CVODE constants and prototypes                  */
+#include "cvspgmr.h"        /* prototypes for CVSPGMR interface routines       */
+#include "fcvode.h"         /* actual function names, prototypes, global vars. */
+#include "nvector.h"        /* definitions of type N_Vector and vector macros  */
+#include "sundialstypes.h"  /* definition of type realtype                     */
+
+/***************************************************************************/
+
+/* Definitions for global variables shared amongst various routines */
+
+N_Vector F2C_atolvec;
+realtype *data_F2C_vec, *data_F2C_atolvec;
+
+void *CV_cvodemem;
+booleantype CV_optin;
+long int *CV_iopt;
+realtype *CV_ropt;
+int CV_nrtfn;
+int CV_ls;
+
+/***************************************************************************/
+
+/* private constant(s) */
+#define ZERO RCONST(0.0)
+
+/***************************************************************************/
+
+/* Prototypes of the Fortran routines */
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+  extern void FCV_FUN(realtype*, realtype*, realtype*);
+#ifdef __cplusplus
+}
+#endif
+
+/**************************************************************************/
+
+void FCV_MALLOC(realtype *t0, realtype *y0, 
+                int *meth, int *itmeth, int *iatol, 
+                realtype *rtol, realtype *atol,
+                int *optin, long int *iopt, realtype *ropt, 
+                int *ier)
+{
+  int lmm, iter, itol;
+  void *atolptr;
+
+  atolptr = NULL;
+
+  if(F2C_vec->ops->nvgetarraypointer == NULL ||
+     F2C_vec->ops->nvsetarraypointer == NULL) {
+    *ier = -1;
+    printf("A required vector operation is not implemented.\n\n");
+    return;
+  }
+
+  /* Save the data array in F2C_vec into data_F2C_vec and then 
+     overwrite it with y0 */
+  data_F2C_vec = N_VGetArrayPointer(F2C_vec);
+  N_VSetArrayPointer(y0, F2C_vec);
+
+  lmm = (*meth == 1) ? CV_ADAMS : CV_BDF;
+  iter = (*itmeth == 1) ? CV_FUNCTIONAL : CV_NEWTON;
+  switch (*iatol) {
+  case 1:
+    F2C_atolvec = NULL;
+    itol = CV_SS; 
+    atolptr = (void *) atol; 
+    break;
+  case 2:
+    F2C_atolvec = N_VClone(F2C_vec);
+    data_F2C_atolvec = N_VGetArrayPointer(F2C_atolvec);
+    N_VSetArrayPointer(atol, F2C_atolvec);
+    itol = CV_SV; 
+    atolptr = (void *) F2C_atolvec; 
+    break;
+  case 3:
+    F2C_atolvec = NULL;
+    itol = CV_WF;
+    break;
+  }
+
+  /* 
+     Call CVodeCreate, CVodeSet*, and CVodeMalloc to initialize CVODE: 
+     lmm     is the method specifier
+     iter    is the iteration method specifier
+     CVf     is the user's right-hand side function in y'=f(t,y)
+     *t0     is the initial time
+     F2C_vec is the initial dependent variable vector
+     itol    specifies tolerance type
+     rtol    is the scalar relative tolerance
+     atolptr is the absolute tolerance pointer (to scalar or vector or function)
+
+     A pointer to CVODE problem memory is createded and stored in CV_cvodemem. 
+  */
+
+  *ier = 0;
+
+  CV_cvodemem = CVodeCreate(lmm, iter);
+
+  if (CV_cvodemem == NULL) {
+    *ier = -1;
+    return;
+  }
+
+  if (*optin == 1) {
+    CV_optin = TRUE;
+    if (iopt[0] > 0)     CVodeSetMaxOrd(CV_cvodemem, (int)iopt[0]);
+    if (iopt[1] > 0)     CVodeSetMaxNumSteps(CV_cvodemem, iopt[1]);
+    if (iopt[2] > 0)     CVodeSetMaxHnilWarns(CV_cvodemem, (int)iopt[2]);
+    if (iopt[13] > 0)    CVodeSetStabLimDet(CV_cvodemem, TRUE);
+    if (iopt[21] > 0)    CVodeSetMaxErrTestFails(CV_cvodemem, (int)iopt[21]);
+    if (iopt[22] > 0)    CVodeSetMaxNonlinIters(CV_cvodemem, (int)iopt[22]);
+    if (iopt[23] > 0)    CVodeSetMaxConvFails(CV_cvodemem, (int)iopt[23]);
+    if (ropt[0] != ZERO) CVodeSetInitStep(CV_cvodemem, ropt[0]);
+    if (ropt[1] > ZERO)  CVodeSetMaxStep(CV_cvodemem, ropt[1]);
+    if (ropt[2] > ZERO)  CVodeSetMinStep(CV_cvodemem, ropt[2]);
+    if (ropt[7] != ZERO) CVodeSetStopTime(CV_cvodemem, ropt[7]);
+    if (ropt[8] > ZERO)  CVodeSetNonlinConvCoef(CV_cvodemem, ropt[8]);
+  } else {
+    CV_optin = FALSE;
+  }
+
+  *ier = CVodeMalloc(CV_cvodemem, FCVf, *t0, F2C_vec, itol, *rtol, atolptr);
+
+  /* reset data pointer into F2C_vec */
+  N_VSetArrayPointer(data_F2C_vec, F2C_vec);
+
+  /* destroy F2C_atolvec if allocated */
+  if (F2C_atolvec != NULL) {
+    N_VSetArrayPointer(data_F2C_atolvec, F2C_atolvec);
+    N_VDestroy(F2C_atolvec);
+  }
+
+  if(*ier != CV_SUCCESS) {
+    *ier = -1;
+    return;
+  }
+
+  /* Store the unit roundoff in ropt for user access */
+  ropt[9] = UNIT_ROUNDOFF;
+
+  CV_iopt = iopt;
+  CV_ropt = ropt;
+
+  return;
+}
+
+/***************************************************************************/
+
+void FCV_REINIT(realtype *t0, realtype *y0, int *iatol, realtype *rtol,
+                realtype *atol, int *optin, long int *iopt,
+                realtype *ropt, int *ier)
+{
+  int itol;
+  void *atolptr;
+
+  atolptr = NULL;
+
+  N_VSetArrayPointer(y0, F2C_vec);
+
+  switch (*iatol) {
+  case 1:
+    itol = CV_SS; 
+    atolptr = (void *) atol; 
+    break;
+  case 2:
+    F2C_atolvec = N_VClone(F2C_vec);
+    data_F2C_atolvec = N_VGetArrayPointer(F2C_atolvec);
+    N_VSetArrayPointer(atol, F2C_atolvec);
+    itol = CV_SV; 
+    atolptr = (void *) F2C_atolvec; 
+    break;
+  case 3:
+    itol = CV_WF;
+  }
+
+  /* 
+     Call CVodeSet* and CVReInit to re-initialize CVODE: 
+     CVf     is the user's right-hand side function in y'=f(t,y)
+     t0      is the initial time
+     F2C_vec is the initial dependent variable vector
+     itol    specifies tolerance type
+     rtol    is the scalar relative tolerance
+     atolptr is the absolute tolerance pointer (to scalar or vector or function)
+  */
+
+  if (*optin == 1) {
+    CV_optin = TRUE;
+    if (iopt[0] > 0)     CVodeSetMaxOrd(CV_cvodemem, (int)iopt[0]);
+    if (iopt[1] > 0)     CVodeSetMaxNumSteps(CV_cvodemem, iopt[1]);
+    if (iopt[2] > 0)     CVodeSetMaxHnilWarns(CV_cvodemem, (int)iopt[2]);
+    if (iopt[13] > 0)    CVodeSetStabLimDet(CV_cvodemem, TRUE);
+    if (iopt[21] > 0)    CVodeSetMaxErrTestFails(CV_cvodemem, (int)iopt[21]);
+    if (iopt[22] > 0)    CVodeSetMaxNonlinIters(CV_cvodemem, (int)iopt[22]);
+    if (iopt[23] > 0)    CVodeSetMaxConvFails(CV_cvodemem, (int)iopt[23]);
+    if (ropt[0] != ZERO) CVodeSetInitStep(CV_cvodemem, ropt[0]);
+    if (ropt[1] > ZERO)  CVodeSetMaxStep(CV_cvodemem, ropt[1]);
+    if (ropt[2] > ZERO)  CVodeSetMinStep(CV_cvodemem, ropt[2]);
+    if (ropt[7] != ZERO) CVodeSetStopTime(CV_cvodemem, ropt[7]);
+    if (ropt[8] > ZERO)  CVodeSetNonlinConvCoef(CV_cvodemem, ropt[8]);
+  } else {
+    CV_optin = FALSE;
+  }
+
+  *ier = CVodeReInit(CV_cvodemem, FCVf, *t0, F2C_vec, itol, *rtol, atolptr);
+
+  /* reset data pointer into F2C_vec */
+  N_VSetArrayPointer(data_F2C_vec, F2C_vec);
+
+  /* destroy F2C_atolvec if allocated */
+  if (F2C_atolvec != NULL) {
+    N_VSetArrayPointer(data_F2C_atolvec, F2C_atolvec);
+    N_VDestroy(F2C_atolvec);
+  }
+
+  if (*ier != CV_SUCCESS) {
+    *ier = -1;
+    return;
+  }
+
+  CV_iopt = iopt;
+  CV_ropt = ropt;
+
+  return;
+}
+
+/***************************************************************************/
+
+void FCV_DIAG(int *ier)
+{
+  *ier = CVDiag(CV_cvodemem);
+
+  CV_ls = 3;
+}
+
+/***************************************************************************/
+
+void FCV_DENSE(long int *neq, int *ier)
+{
+  /* 
+     neq  is the problem size
+  */
+
+  *ier = CVDense(CV_cvodemem, *neq);
+
+  CV_ls = 1;
+}
+
+/***************************************************************************/
+
+void FCV_BAND(long int *neq, long int *mupper, long int *mlower, int *ier)
+{
+  /* 
+     neq        is the problem size
+     mupper     is the upper bandwidth
+     mlower     is the lower bandwidth 
+  */
+
+  *ier = CVBand(CV_cvodemem, *neq, *mupper, *mlower);
+
+  CV_ls = 2;
+}
+
+/***************************************************************************/
+
+void FCV_SPGMR(int *pretype, int *gstype, int *maxl, realtype *delt, int *ier)
+{
+  /* 
+     pretype    the preconditioner type
+     maxl       the maximum Krylov dimension
+     gstype     the Gram-Schmidt process type
+     delt       the linear convergence tolerance factor 
+  */
+
+  *ier = CVSpgmr(CV_cvodemem, *pretype, *maxl);
+  if (*ier != CVSPGMR_SUCCESS) return;
+
+  *ier = CVSpgmrSetGSType(CV_cvodemem, *gstype);
+  if (*ier != CVSPGMR_SUCCESS) return;
+
+  *ier = CVSpgmrSetDelt(CV_cvodemem, *delt);
+  if (*ier != CVSPGMR_SUCCESS) return;
+
+  CV_ls = 4;
+}
+
+/***************************************************************************/
+
+void FCV_SPGMRREINIT(int *pretype, int *gstype, realtype *delt, int *ier)
+{
+  /* 
+     pretype    the preconditioner type
+     gstype     the Gram-Schmidt process type
+     delt       the linear convergence tolerance factor 
+  */
+
+  *ier = CVSpgmrSetPrecType(CV_cvodemem, *pretype);
+  if (*ier != CVSPGMR_SUCCESS) return;
+
+  *ier = CVSpgmrSetGSType(CV_cvodemem, *gstype);
+  if (*ier != CVSPGMR_SUCCESS) return;
+
+  *ier = CVSpgmrSetDelt(CV_cvodemem, *delt);
+  if (*ier != CVSPGMR_SUCCESS) return;
+
+  CV_ls = 4;
+}
+
+/***************************************************************************/
+
+void FCV_CVODE(realtype *tout, realtype *t, realtype *y, int *itask, int *ier)
+{
+  realtype h0u;
+  int qu, qcur;
+
+  /* 
+     tout      is the t value where output is desired
+     F2C_vec   is the N_Vector containing the solution on return
+     t         is the returned independent variable value
+     itask     is the task indicator (1 = CV_NORMAL, 2 = CV_ONE_STEP, 
+                                      3 = CV_NORMAL_TSTOP, 4 = CV_ONE_STEP_TSTOP) 
+  */
+
+  *ier = CVode(CV_cvodemem, *tout, F2C_vec, t, *itask);
+
+  y = N_VGetArrayPointer(F2C_vec);
+
+  /* Load optional outputs in iopt & ropt */
+  if ( (CV_iopt != NULL) && (CV_ropt != NULL) ) {
+
+    CVodeGetIntegratorStats(CV_cvodemem, 
+                            &CV_iopt[3],  /* NST */
+                            &CV_iopt[4],  /* NFE */ 
+                            &CV_iopt[5],  /* NSETUPS */ 
+                            &CV_iopt[8],  /* NETF */ 
+                            &qu,
+                            &qcur,
+                            &h0u,
+                            &CV_ropt[3],  /* HU */ 
+                            &CV_ropt[4],  /* HCUR */ 
+                            &CV_ropt[5]);  /* TCUR */ 
+    CV_iopt[9]  = (long int)qu;  /* QU */ 
+    CV_iopt[10] = (long int)qcur;  /* QCUR */ 
+    CVodeGetTolScaleFactor(CV_cvodemem, &CV_ropt[6]);
+    CVodeGetNonlinSolvStats(CV_cvodemem,
+                            &CV_iopt[6],  /* NNI */
+                            &CV_iopt[7]);  /* NCFN */
+    CVodeGetWorkSpace(CV_cvodemem,
+                      &CV_iopt[11],  /* LENRW */
+                      &CV_iopt[12]);  /* LENIW */
+    if (CV_optin && (CV_iopt[13] > 0))
+      CVodeGetNumStabLimOrderReds(CV_cvodemem, &CV_iopt[14]);  /* NOR */
+
+    /* Root finding is on */
+    if (CV_nrtfn != 0)
+      CVodeGetNumGEvals(CV_cvodemem, &CV_iopt[24]);
+
+    switch(CV_ls) {
+    case 1:
+      CVDenseGetWorkSpace(CV_cvodemem, &CV_iopt[15], &CV_iopt[16]);  /* LRW and LIW */
+      CVDenseGetNumJacEvals(CV_cvodemem, &CV_iopt[17]);  /* NJE */
+      CVDenseGetLastFlag(CV_cvodemem, (int *) &CV_iopt[25]);  /* last linear solver flag */
+      break;
+    case 2:
+      CVBandGetWorkSpace(CV_cvodemem, &CV_iopt[15], &CV_iopt[16]);  /* LRW and LIW */
+      CVBandGetNumJacEvals(CV_cvodemem, &CV_iopt[17]);  /* NJE */
+      CVBandGetLastFlag(CV_cvodemem, (int *) &CV_iopt[25]);  /* last linear solver flag */
+      break;
+    case 3:
+      CVDiagGetWorkSpace(CV_cvodemem, &CV_iopt[15], &CV_iopt[16]);  /* LRW and LIW */
+      CVDiagGetLastFlag(CV_cvodemem, (int *) &CV_iopt[25]);  /* last linear solver flag */
+      break;
+    case 4:
+      CVSpgmrGetWorkSpace(CV_cvodemem, &CV_iopt[15], &CV_iopt[16]);  /* LRW and LIW */
+      CVSpgmrGetNumPrecEvals(CV_cvodemem, &CV_iopt[17]);  /* NPE */
+      CVSpgmrGetNumLinIters(CV_cvodemem, &CV_iopt[18]);  /* NLI */
+      CVSpgmrGetNumPrecSolves(CV_cvodemem, &CV_iopt[19]);  /* NPS */
+      CVSpgmrGetNumConvFails(CV_cvodemem, &CV_iopt[20]);  /* NCFL */
+      CVSpgmrGetLastFlag(CV_cvodemem, (int *) &CV_iopt[25]);  /* last linear solver flag */
+      break;
+    }
+  }
+}
+
+/***************************************************************************/
+
+void FCV_DKY (realtype *t, int *k, realtype *dky, int *ier)
+{
+  /* 
+     t        is the t value where output is desired
+     k        is the derivative order
+     F2C_vec  is the N_Vector containing the solution derivative on return 
+  */
+
+  *ier = CVodeGetDky(CV_cvodemem, *t, *k, F2C_vec);
+
+  dky = N_VGetArrayPointer(F2C_vec);
+}
+
+/***************************************************************************/
+
+void FCV_FREE ()
+{
+  CVodeFree(CV_cvodemem);
+
+  /* Restore data array in F2C_vec */
+  N_VSetArrayPointer(data_F2C_vec, F2C_vec);
+
+}
+
+/***************************************************************************/
+
+/* 
+ * C function CVf to interface between CVODE and a Fortran subroutine FCVFUN.
+ * Addresses of t, y, and ydot are passed to CVFUN, using the
+ * routine N_VGetArrayPointer from the NVECTOR module.
+ * Auxiliary data is assumed to be communicated by Common. 
+ */
+
+void FCVf(realtype t, N_Vector y, N_Vector ydot, void *f_data)
+{
+  realtype *ydata, *dydata;
+
+  ydata  = N_VGetArrayPointer(y);
+  dydata = N_VGetArrayPointer(ydot);
+
+  FCV_FUN(&t, ydata, dydata);
+}
+
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/fcvode.h b/Win32/WinCVODE/sundials/cvode/fcmix/fcvode.h
new file mode 100644
index 0000000..83b8462
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/fcvode.h
@@ -0,0 +1,641 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:58 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Alan C. Hindmarsh, Radu Serban and
+ *                Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for FCVODE, the Fortran interface to
+ * the CVODE package.                                            
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * =============================================================================
+ *
+ *                FCVODE Interface Package
+ *
+ * The FCVODE Interface Package is a package of C functions which support
+ * the use of the CVODE solver, for the solution of ODE systems 
+ * dy/dt = f(t,y), in a mixed Fortran/C setting.  While CVODE is written
+ * in C, it is assumed here that the user's calling program and
+ * user-supplied problem-defining routines are written in Fortran. 
+ * This package provides the necessary interface to CVODE for both the
+ * serial and the parallel NVECTOR implementations.
+ * 
+ * The user-callable functions, with the corresponding CVODE functions,
+ * are as follows:
+ * 
+ *   FNVINITS and FNVINITP interface to N_VNew_Serial and
+ *               N_VNew_Parallel, respectively
+ * 
+ *   FCVMALLOC  interfaces to CVodeCreate, CVodeSet*, and CVodeMalloc
+ * 
+ *   FCVREINIT  interfaces to CVReInit, CVodeSet*
+ * 
+ *   FCVDIAG    interfaces to CVDiag
+ * 
+ *   FCVDENSE   interfaces to CVDense
+ *   FCVDENSESETJAC   interfaces to CVDenseSetJacFn
+ * 
+ *   FCVBAND    interfaces to CVBand
+ *   FCVBANDSETJAC    interfaces to CVBandSetJacFn
+ * 
+ *   FCVSPGMR, FCVSPGMRREINIT interface to CVSpgmr and CVSpgmrSet*
+ *   FCVSPGMRSETJAC   interfaces to CVSpgmrSetJacFn
+ *   FCVSPGMRSETPREC  interfaces to CVSpgmrSetPreconditioner
+ * 
+ *   FCVODE     interfaces to CVode, CVodeGet*, and CV*Get*
+ * 
+ *   FCVDKY     interfaces to CVodeGetDky
+ * 
+ *   FCVFREE    interfaces to CVodeFree
+ * 
+ *   FNVFREES and FNVFREEP interface to N_VDestroy_Serial and
+ *              N_VDestroy_Parallel, respectively.
+ * 
+ * The user-supplied functions, each listed with the corresponding interface
+ * function which calls it (and its type within CVODE), are as follows:
+ *   FCVFUN    is called by the interface function FCVf of type CVRhsFn
+ *   FCVDJAC   is called by the interface fn. FCVDenseJac of type CVDenseJacFn
+ *   FCVBJAC   is called by the interface fn. FCVBandJac of type CVBandJacFn
+ *   FCVPSOL   is called by the interface fn. FCVPSol of type CVSpgmrPrecSolveFn
+ *   FCVPSET   is called by the interface fn. FCVPSet of type CVSpgmrPrecSetupFn
+ *   FCVJTIMES is called by interface fn. FCVJtimes of type CVSpgmrJacTimesVecFn
+ *   FCVEWT    is called by interface fn. FCVEwtSet of type CVEwtFn
+ * In contrast to the case of direct use of CVODE, and of most Fortran ODE
+ * solvers, the names of all user-supplied routines here are fixed, in
+ * order to maximize portability for the resulting mixed-language program.
+ * 
+ * Important note on portability.
+ * In this package, the names of the interface functions, and the names of
+ * the Fortran user routines called by them, appear as dummy names
+ * which are mapped to actual values by a series of definitions, in this
+ * header file fcvode.h. These definition depend in turn on variables
+ * SUNDIALS_UNDERSCORE_NONE, SUNDIALS_UNDERSCORE_TWO, SUNDIALS_CASE_UPPER
+ * and SUNDIALS_CASE_LOWER, which can be set at the configuration stage.
+ * 
+ * =============================================================================
+ * 
+ *                  Usage of the FCVODE Interface Package
+ * 
+ * The usage of FCVODE requires calls to five or more interface
+ * functions, depending on the method options selected, and one or more
+ * user-supplied routines which define the problem to be solved.  These
+ * function calls and user routines are summarized separately below.
+ * 
+ * Some details are omitted, and the user is referred to the user documents
+ * on CVODE for more complete documentation.  Information on the
+ * arguments of any given user-callable interface routine, or of a given
+ * user-supplied function called by an interface function, can be found in
+ * the documentation on the corresponding function in the CVODE package.
+ * 
+ * The number labels on the instructions below end with s for instructions
+ * that apply to the serial version of CVODE only, and end with p for
+ * those that apply to the parallel version only.
+ * 
+ * 
+ * (1) User-supplied right-hand side routine: FCVFUN
+ * The user must in all cases supply the following Fortran routine
+ *       SUBROUTINE FCVFUN (T, Y, YDOT)
+ *       DIMENSION Y(*), YDOT(*)
+ * It must set the YDOT array to f(t,y), the right-hand side of the ODE 
+ * system, as function of T = t and the array Y = y.  Here Y and YDOT
+ * are distributed vectors.
+ * 
+ * (2s) Optional user-supplied dense Jacobian approximation routine: FCVDJAC
+ * As an option when using the DENSE linear solver, the user may supply a
+ * routine that computes a dense approximation of the system Jacobian 
+ * J = df/dy. If supplied, it must have the following form:
+ *       SUBROUTINE FCVDJAC (NEQ, T, Y, FY, DJAC, EWT, H, WK1, WK2, WK3)
+ *       DIMENSION Y(*), FY(*), EWT(*), DJAC(NEQ,*), WK1(*), WK2(*), WK3(*)
+ * Typically this routine will use only NEQ, T, Y, and DJAC. It must compute
+ * the Jacobian and store it columnwise in DJAC.
+ * 
+ * (3s) Optional user-supplied band Jacobian approximation routine: FCVBJAC
+ * As an option when using the BAND linear solver, the user may supply a
+ * routine that computes a band approximation of the system Jacobian 
+ * J = df/dy. If supplied, it must have the following form:
+ *       SUBROUTINE FCVBJAC (NEQ, MU, ML, MDIM, T, Y, FY,
+ *      1                    BJAC, EWT, H, WK1, WK2, WK3)
+ *       DIMENSION Y(*), FY(*), EWT(*), BJAC(MDIM,*), WK1(*), WK2(*), WK3(*)
+ * Typically this routine will use only NEQ, MU, ML, T, Y, and BJAC. 
+ * It must load the MDIM by N array BJAC with the Jacobian matrix at the
+ * current (t,y) in band form.  Store in BJAC(k,j) the Jacobian element J(i,j)
+ * with k = i - j + MU + 1 (k = 1 ... ML+MU+1) and j = 1 ... N.
+ * 
+ * (4) Optional user-supplied Jacobian-vector product routine: FCVJTIMES
+ * As an option when using the SPGMR linear solver, the user may supply a 
+ * routine that computes the product of the system Jacobian J = df/dy and 
+ * a given vector v.  If supplied, it must have the following form:
+ *       SUBROUTINE FCVJTIMES (V, FJV, T, Y, FY, EWT, H, WORK, IER)
+ *       DIMENSION V(*), FJV(*), Y(*), FY(*), EWT(*), WORK(*)
+ * Typically this routine will use only NEQ, T, Y, V, and FJV.  It must
+ * compute the product vector Jv, where the vector v is stored in V, and store
+ * the product in FJV.  On return, set IER = 0 if FCVJTIMES was successful,
+ * and nonzero otherwise.
+ * 
+ * (5) Optional user-supplied error weight vector routine: FCVEWT
+ * As an option to providing the relative and absolute tolerances, the user
+ * may supply a routine that computes the weights used in the WRMS norms.
+ * If supplied, it must have the following form:
+ *       SUBROUTINE FCVEWT (Y, EWT, IER)
+ *       DIMENSION Y(*), EWT(*)
+ * It must store the error weights in EWT, given the current solution vector Y.
+ * On return, set IER = 0 if successful, and nonzero otherwise.
+ *
+ * (6) Initialization:  FNVINITS / FNVINITP , FCVMALLOC, FCVREINIT
+ * 
+ * (6.1s) To initialize the serial machine environment, the user must make
+ * the following call:
+ *        CALL FNVINITS (NEQ, IER)
+ * The arguments are:
+ * NEQ     = size of vectors
+ * IER     = return completion flag. Values are 0 = success, -1 = failure.
+ * 
+ * (6.1p) To initialize the parallel machine environment, the user must make 
+ * the following call:
+ *        CALL FNVINITP (NLOCAL, NGLOBAL, IER)
+ * The arguments are:
+ * NLOCAL  = local size of vectors on this processor
+ * NGLOBAL = the system size, and the global size of vectors (the sum 
+ *           of all values of NLOCAL)
+ * IER     = return completion flag. Values are 0 = success, -1 = failure.
+ * Note: If MPI was initialized by the user, the communicator must be
+ * set to MPI_COMM_WORLD.  If not, this routine initializes MPI and sets
+ * the communicator equal to MPI_COMM_WORLD.
+ * 
+ * (6.2) To set various problem and solution parameters and allocate
+ * internal memory, make the following call:
+ *       CALL FCVMALLOC(T0, Y0, METH, ITMETH, IATOL, RTOL, ATOL, INOPT,
+ *      1               IOPT, ROPT, IER)
+ * The arguments are:
+ * T0     = initial value of t
+ * Y0     = array of initial conditions
+ * METH   = basic integration method: 1 = Adams (nonstiff), 2 = BDF (stiff)
+ * ITMETH = nonlinear iteration method: 1=functional iteration, 2=Newton iter.
+ * IATOL  = type for absolute tolerance ATOL: 1 = scalar, 2 = array.
+ *          If IATOL = 3, then the user must supply a routine FCVEWT to compute
+ *          the error weight vector.
+ * RTOL   = relative tolerance (scalar)
+ * ATOL   = absolute tolerance (scalar or array)
+ * INOPT  = optional input flag: 0 = none, 1 = inputs used
+ * IOPT   = array of length 40 for integer optional inputs and outputs
+ *          (declare as INTEGER*4 or INTEGER*8 according to C type long int)
+ * ROPT   = array of length 40 for real optional inputs and outputs
+ *             The optional inputs are MAXORD, MXSTEP, MXHNIL, SLDET, 
+ *          MAXERRTESTFAILS, MAXNONLINITERS, MAXCONVFAILS, H0, HMAX,
+ *          HMIN, TSTOP, NONLINCONVCOEF, stored in IOPT(1), IOPT(2),
+ *          IOPT(3), IOPT(14), IOPT(22), IOPT(23), IOPT(24), ROPT(1), ROPT(2),
+ *          ROPT(3), ROPT(8), ROPT(9), respectively.  If any of these optional
+ *          inputs are used, set the others to zero to indicate default values.
+ *             The optional outputs are NST, NFE, NSETUPS, NNI, NCFN, NETF, QU,
+ *          QCUR, LENRW, LENIW, NOR, NGE, HU, HCUR, TCUR, TOLSF, UROUND, stored
+ *          in IOPT(4) .. IOPT(13), IOPT(15), IOPT(25), ROPT(4) .. ROPT(7),
+ *          and ROPT(10), respectively. Also, the last flag returned by the
+ *          linear solver is stored in IOPT(26). See the CVODE manual for
+ *          details. 
+ * IER    = return completion flag.  Values are 0 = SUCCESS, and -1 = failure.
+ *          See printed message for details in case of failure.
+ * 
+ * If the user program includes the FCVEWT routine for the evaluation of the 
+ * error weights, the following call must be made
+ *       CALL FCVEWTSET(FLAG, IER)
+ * with FLAG = 1 to specify that FCVEWT is provided.
+ * The return flag IER is 0 if successful, and nonzero otherwise.
+ *
+ * (6.3) To re-initialize the CVODE solver for the solution of a new problem
+ * of the same size as one already solved, make the following call:
+ *       CALL FCVREINIT(T0, Y0, IATOL, RTOL, ATOL, INOPT, IOPT, ROPT, IER)
+ * The arguments have the same names and meanings as those of FCVMALLOC,
+ * except that NEQ, METH, and ITMETH  have been omitted from the argument list 
+ * (being unchanged for the new problem).  
+ * FCVREINIT performs the same initializations as FCVMALLOC, but does no memory 
+ * allocation, using instead the existing internal memory created by the
+ * previous  FCVMALLOC call.  The call to specify the linear system solution
+ * method may or  may not be needed; see paragraph (6) below.
+ * 
+ * (7) Specification of linear system solution method.
+ * In the case of a stiff system, the implicit BDF method involves the solution
+ * of linear systems related to the Jacobian J = df/dy of the ODE system.
+ * CVODE presently includes four choices for the treatment of these systems,
+ * and the user of FCVODE must call a routine with a specific name to make the
+ * desired choice.
+ * 
+ * (7.1) Diagonal approximate Jacobian.
+ * This choice is appropriate when the Jacobian can be well approximated by
+ * a diagonal matrix.  The user must make the call:
+ *       CALL FCVDIAG(IER)
+ * IER is an error return flag: 0 = success, negative value = error.
+ * There is no additional user-supplied routine.  Optional outputs specific
+ * to the approximate diagonal Jacobian case are LRW and LIW, stored in
+ * IOPT(16) and IOPT(17), respectively.  See the CVODE manual for descriptions.
+ * 
+ * (7.2s) DENSE treatment of the linear system.
+ * The user must make the call
+ *       CALL FCVDENSE(NEQ, IER)
+ * The argument is:
+ * IER = error return flag: 0 = success , negative value = an error occured
+ * 
+ * If the user program includes the FCVDJAC routine for the evaluation of the 
+ * dense approximation to the Jacobian, the following call must be made
+ *       CALL FCVDENSESETJAC(FLAG, IER)
+ * with FLAG = 1 to specify that FCVDJAC is provided.  (FLAG = 0 specifies
+ * using the internal finite differences approximation to the Jacobian.)
+ * The return flag IER is 0 if successful, and nonzero otherwise.
+ * 
+ *      Optional outputs specific to the DENSE case are LRW, LIW, and NJE
+ * stored in IOPT(16), IOPT(17), and IOPT(18), respectively.  (See the CVODE
+ * manual for descriptions.)
+ * 
+ * (7.3s) BAND treatment of the linear system
+ * The user must make the call
+ *       CALL FCVBAND(NEQ, MU, ML, IER)
+ * The arguments are:
+ * MU  = upper bandwidth
+ * ML  = lower bandwidth
+ * IER = error return flag: 0 = success , negative value = an error occured
+ * 
+ * If the user program includes the FCVBJAC routine for the evaluation of the 
+ * band approximation to the Jacobian, the following call must be made
+ *       CALL FCVBANDSETJAC(FLAG, IER)
+ * with FLAG = 1 to specify that FCVBJAC is provided.  (FLAG = 0 specifies
+ * using the internal finite differences approximation to the Jacobian.)
+ * The return flag IER is 0 if successful, and nonzero otherwise.
+ * 
+ *      Optional outputs specific to the BAND case are LRW, LIW, and NJE
+ * stored in IOPT(16), IOPT(17), and IOPT(18), respectively.  (See the CVODE
+ * manual for descriptions.)
+ * 
+ * (7.4) SPGMR treatment of the linear systems.
+ * For the Scaled Preconditioned GMRES solution of the linear systems,
+ * the user must make the following call:
+ *       CALL FCVSPGMR(IPRETYPE, IGSTYPE, MAXL, DELT, IER)              
+ * The arguments are:
+ * IPRETYPE = preconditioner type: 
+ *              0 = none 
+ *              1 = left only
+ *              2 = right only
+ *              3 = both sides
+ * IGSTYPE  = Gram-schmidt process type: 
+ *              1 = modified G-S
+ *              2 = classical G-S.
+ * MAXL     = maximum Krylov subspace dimension; 0 indicates default.
+ * DELT     = linear convergence tolerance factor; 0.0 indicates default.
+ * IER      = error return flag: 0 = success; negative value = an error occured
+ * 
+ * If the user program includes the FCVJTIMES routine for the evaluation of the 
+ * Jacobian vector product, the following call must be made
+ *       CALL FCVSPGMRSETJAC(FLAG, IER)
+ * with FLAG = 1 to specify that FCVJTIMES is provided.  (FLAG = 0 specifies
+ * using and internal finite difference approximation to this product.)
+ * The return flag IER is 0 if successful, and nonzero otherwise.
+ * 
+ * Usage of the user-supplied routines FCVPSOL and FCVPSET for solution of the 
+ * preconditioner linear system requires the following call:
+ *       CALL FCVSPGMRSETPREC(FLAG, IER)
+ * with FLAG = 1. The return flag IER is 0 if successful, nonzero otherwise.
+ * The user-supplied routine FCVPSOL must have the form:
+ *       SUBROUTINE FCVPSOL (T, Y,FY, VT, GAMMA, EWT, DELTA, NFE, R, LR, Z, IER)
+ *       DIMENSION Y(*), FY(*), VT(*), EWT(*), R(*), Z(*),
+ * Typically this routine will use only NEQ, T, Y, GAMMA, R, LR, and Z.  It
+ * must solve the preconditioner linear system Pz = r, where r = R is input, 
+ * and store the solution z in Z.  Here P is the left preconditioner if LR = 1
+ * and the right preconditioner if LR = 2.  The preconditioner (or the product
+ * of the left and right preconditioners if both are nontrivial) should be an 
+ * approximation to the matrix I - GAMMA*J (I = identity, J = Jacobian).
+ *
+ * The user-supplied routine FCVPSET must be of the form:
+ *       SUBROUTINE FCVPSET(T, Y, FY, JOK, JCUR, GAMMA, EWT, H, V1, V2, V3, IER)
+ *       DIMENSION Y(*), FY(*), EWT(*), V1(*), V2(*), V3(*) 
+ * Typically this routine will use only NEQ, T, Y, JOK, and GAMMA. It must
+ * perform any evaluation of Jacobian-related data and preprocessing needed
+ * for the solution of the preconditioner linear systems by FCVPSOL.
+ * The JOK argument allows for Jacobian data to be saved and reused:  If 
+ * JOK = 0, this data should be recomputed from scratch.  If JOK = 1, a saved
+ * copy of it may be reused, and the preconditioner constructed from it.
+ * On return, set JCUR = 1 if Jacobian data was computed, and 0 otherwise.
+ * Also on return, set IER = 0 if FCVPSET was successful, set IER positive if a 
+ * recoverable error occurred, and set IER negative if a non-recoverable error
+ * occurred.
+ * 
+ * Optional outputs specific to the SPGMR case are LRW, LIW, NPE, NLI, NPS,
+ * and NCFL, stored in IOPT(16) ... IOPT(21), respectively.  (See the CVODE
+ * manual for descriptions.)
+ * 
+ * If a sequence of problems of the same size is being solved using the
+ * SPGMR linear solver, then following the call to FCVREINIT, a call to the
+ * FCVSPGMRREINIT routine is needed if any of IPRETYPE, IGSTYPE, DELT is
+ * being changed.  In that case, call FCVSPGMRREINIT as follows:
+ *       CALL FCVSPGMRREINIT(IPRETYPE, IGSTYPE, DELT, IER)              
+ * The arguments have the same meanings as for FCVSPGMR.  If MAXL is being
+ * changed, then call FCVSPGMR instead.
+ * 
+ * (8) The integrator: FCVODE
+ * Carrying out the integration is accomplished by making calls as follows:
+ *       CALL FCVODE (TOUT, T, Y, ITASK, IER)
+ * The arguments are:
+ * TOUT  = next value of t at which a solution is desired (input)
+ * T     = value of t reached by the solver on output
+ * Y     = array containing the computed solution on output
+ * ITASK = task indicator: 1 = normal mode (overshoot TOUT and interpolate)
+ *         2 = one-step mode (return after each internal step taken)
+ *         3 = normal tstop mode (like 1, but integration never proceeds past 
+ *             TSTOP, which must be specified through the user input ROPT(8))
+ *         4 = one step tstop (like 2, but integration never goes past TSTOP)
+ * IER   = completion flag: 0 = success, 1 = tstop return, 2 = root return, 
+ *         values -1 ... -10 are various failure modes (see CVODE manual).
+ * The current values of the optional outputs are available in IOPT and ROPT.
+ * 
+ * (9) Computing solution derivatives: FCVDKY
+ * To obtain a derivative of the solution, of order up to the current method
+ * order, make the following call:
+ *       CALL FCVDKY (T, K, DKY, IER)
+ * The arguments are:
+ * T   = value of t at which solution derivative is desired, in [TCUR-HU,TCUR].
+ * K   = derivative order (0 .le. K .le. QU)
+ * DKY = array containing computed K-th derivative of y on return
+ * IER = return flag: = 0 for success, < 0 for illegal argument.
+ * 
+ * (10) Memory freeing: FCVFREE and FNVFREES/FNVFREEP
+ * To the free the internal memory created by the calls to FCVMALLOC and
+ * FNVINITS or FNVINITP, depending on the version (serial/parallel), make
+ * the following calls, in this order:
+ *       CALL FCVFREE
+ *       CALL FNVFREES or CALL FNVFREEP  
+ * 
+ * =============================================================================
+ */
+
+#ifndef _FCVODE_H
+#define _FCVODE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+/* header files  */
+
+#include "band.h"           /* definition of BandMat       */
+#include "cvode.h"          /* definition of type CVRhsFn  */
+#include "dense.h"          /* definition of DenseMat      */
+#include "nvector.h"        /* definition of type N_Vector */
+#include "sundialstypes.h"  /* definition of type realtype */
+
+/* Definitions of interface function names */
+
+#if defined(F77_FUNC)
+
+#define FCV_MALLOC       F77_FUNC(fcvmalloc, FCVMALLOC)
+#define FCV_REINIT       F77_FUNC(fcvreinit, FCVREINIT)
+#define FCV_EWTSET       F77_FUNC(fcvewtset, FCVEWTSET)
+#define FCV_DIAG         F77_FUNC(fcvdiag, FCVDIAG)
+#define FCV_DENSE        F77_FUNC(fcvdense, FCVDENSE)
+#define FCV_DENSESETJAC  F77_FUNC(fcvdensesetjac, FCVDENSESETJAC)
+#define FCV_BAND         F77_FUNC(fcvband, FCVBAND)
+#define FCV_BANDSETJAC   F77_FUNC(fcvbandsetjac, FCVBANDSETJAC)
+#define FCV_SPGMR        F77_FUNC(fcvspgmr, FCVSPGMR)
+#define FCV_SPGMRREINIT  F77_FUNC(fcvspgmrreinit, FCVSPGMRREINIT)
+#define FCV_SPGMRSETJAC  F77_FUNC(fcvspgmrsetjac, FCVSPGMRSETJAC)
+#define FCV_SPGMRSETPREC F77_FUNC(fcvspgmrsetprec, FCVSPGMRSETPREC)
+#define FCV_CVODE        F77_FUNC(fcvode, FCVODE)
+#define FCV_DKY          F77_FUNC(fcvdky, FCVDKY)
+#define FCV_FREE         F77_FUNC(fcvfree, FCVFREE)
+#define FCV_FUN          F77_FUNC(fcvfun, FCVFUN)
+#define FCV_DJAC         F77_FUNC(fcvdjac, FCVDJAC)
+#define FCV_BJAC         F77_FUNC(fcvbjac, FCVBJAC)
+#define FCV_PSOL         F77_FUNC(fcvpsol, FCVPSOL)
+#define FCV_PSET         F77_FUNC(fcvpset, FCVPSET)
+#define FCV_JTIMES       F77_FUNC(fcvjtimes, FCVJTIMES)
+#define FCV_EWT          F77_FUNC(fcvewt, FCVEWT)
+
+#elif defined(SUNDIALS_UNDERSCORE_NONE) && defined(SUNDIALS_CASE_LOWER)
+
+#define FCV_MALLOC       fcvmalloc
+#define FCV_REINIT       fcvreinit
+#define FCV_EWTSET       fcvewtset
+#define FCV_DIAG         fcvdiag
+#define FCV_DENSE        fcvdense
+#define FCV_DENSESETJAC  fcvdensesetjac
+#define FCV_BAND         fcvband
+#define FCV_BANDSETJAC   fcvbandsetjac
+#define FCV_SPGMR        fcvspgmr
+#define FCV_SPGMRREINIT  fcvspgmrreinit
+#define FCV_SPGMRSETJAC  fcvspgmrsetjac
+#define FCV_SPGMRSETPREC fcvspgmrsetprec
+#define FCV_CVODE        fcvode
+#define FCV_DKY          fcvdky
+#define FCV_FREE         fcvfree
+#define FCV_FUN          fcvfun
+#define FCV_DJAC         fcvdjac
+#define FCV_BJAC         fcvbjac
+#define FCV_PSOL         fcvpsol
+#define FCV_PSET         fcvpset
+#define FCV_JTIMES       fcvjtimes
+#define FCV_EWT          fcvewt
+
+#elif defined(SUNDIALS_UNDERSCORE_NONE) && defined(SUNDIALS_CASE_UPPER)
+
+#define FCV_MALLOC       FCVMALLOC
+#define FCV_REINIT       FCVREINIT
+#define FCV_EWTSET       FCVEWTSET
+#define FCV_DIAG         FCVDIAG
+#define FCV_DENSE        FCVDENSE
+#define FCV_DENSESETJAC  FCVDENSESETJAC
+#define FCV_BAND         FCVBAND
+#define FCV_BANDSETJAC   FCVBANDSETJAC
+#define FCV_SPGMR        FCVSPGMR
+#define FCV_SPGMRREINIT  FCVSPGMRREINIT
+#define FCV_SPGMRSETJAC  FCVSPGMRSETJAC
+#define FCV_SPGMRSETPREC FCVSPGMRSETPREC
+#define FCV_CVODE        FCVODE
+#define FCV_DKY          FCVDKY
+#define FCV_FREE         FCVFREE
+#define FCV_FUN          FCVFUN
+#define FCV_DJAC         FCVDJAC
+#define FCV_BJAC         FCVBJAC
+#define FCV_PSOL         FCVPSOL
+#define FCV_PSET         FCVPSET
+#define FCV_JTIMES       FCVJTIMES
+#define FCV_EWT          FCVEWT
+
+#elif defined(SUNDIALS_UNDERSCORE_ONE) && defined(SUNDIALS_CASE_LOWER)
+
+#define FCV_MALLOC       fcvmalloc_
+#define FCV_REINIT       fcvreinit_
+#define FCV_EWTSET       fcvewtset_
+#define FCV_DIAG         fcvdiag_
+#define FCV_DENSE        fcvdense_
+#define FCV_DENSESETJAC  fcvdensesetjac_
+#define FCV_BAND         fcvband_
+#define FCV_BANDSETJAC   fcvbandsetjac_
+#define FCV_SPGMR        fcvspgmr_
+#define FCV_SPGMRREINIT  fcvspgmrreinit_
+#define FCV_SPGMRSETJAC  fcvspgmrsetjac_
+#define FCV_SPGMRSETPREC fcvspgmrsetprec_
+#define FCV_CVODE        fcvode_
+#define FCV_DKY          fcvdky_
+#define FCV_FREE         fcvfree_
+#define FCV_FUN          fcvfun_
+#define FCV_DJAC         fcvdjac_
+#define FCV_BJAC         fcvbjac_
+#define FCV_PSOL         fcvpsol_
+#define FCV_PSET         fcvpset_
+#define FCV_JTIMES       fcvjtimes_
+#define FCV_EWT          fcvewt_
+
+#elif defined(SUNDIALS_UNDERSCORE_ONE) && defined(SUNDIALS_CASE_UPPER)
+
+#define FCV_MALLOC       FCVMALLOC_
+#define FCV_REINIT       FCVREINIT_
+#define FCV_EWTSET       FCVEWTSET_
+#define FCV_DIAG         FCVDIAG_
+#define FCV_DENSE        FCVDENSE_
+#define FCV_DENSESETJAC  FCVDENSESETJAC_
+#define FCV_BAND         FCVBAND_
+#define FCV_BANDSETJAC   FCVBANDSETJAC_
+#define FCV_SPGMR        FCVSPGMR_
+#define FCV_SPGMRREINIT  FCVSPGMRREINIT_
+#define FCV_SPGMRSETJAC  FCVSPGMRSETJAC_
+#define FCV_SPGMRSETPREC FCVSPGMRSETPREC_
+#define FCV_CVODE        FCVODE_
+#define FCV_DKY          FCVDKY_
+#define FCV_FREE         FCVFREE_
+#define FCV_FUN          FCVFUN_
+#define FCV_DJAC         FCVDJAC_
+#define FCV_BJAC         FCVBJAC_
+#define FCV_PSOL         FCVPSOL_
+#define FCV_PSET         FCVPSET_
+#define FCV_JTIMES       FCVJTIMES_
+#define FCV_EWT          FCVEWT_
+
+#elif defined(SUNDIALS_UNDERSCORE_TWO) && defined(SUNDIALS_CASE_LOWER)
+
+#define FCV_MALLOC       fcvmalloc__
+#define FCV_REINIT       fcvreinit__
+#define FCV_EWTSET       fcvewtset__
+#define FCV_DIAG         fcvdiag__
+#define FCV_DENSE        fcvdense__
+#define FCV_DENSESETJAC  fcvdensesetjac__
+#define FCV_BAND         fcvband__
+#define FCV_BANDSETJAC   fcvbandsetjac__
+#define FCV_SPGMR        fcvspgmr__
+#define FCV_SPGMRREINIT  fcvspgmrreinit__
+#define FCV_SPGMRSETJAC  fcvspgmrsetjac__
+#define FCV_SPGMRSETPREC fcvspgmrsetprec__
+#define FCV_CVODE        fcvode__
+#define FCV_DKY          fcvdky__
+#define FCV_FREE         fcvfree__
+#define FCV_FUN          fcvfun__
+#define FCV_DJAC         fcvdjac__
+#define FCV_BJAC         fcvbjac__
+#define FCV_PSOL         fcvpsol__
+#define FCV_PSET         fcvpset__
+#define FCV_JTIMES       fcvjtimes__
+#define FCV_EWT          fcvewt__
+
+#elif defined(SUNDIALS_UNDERSCORE_TWO) && defined(SUNDIALS_CASE_UPPER)
+
+#define FCV_MALLOC       FCVMALLOC__
+#define FCV_REINIT       FCVREINIT__
+#define FCV_EWTSET       FCVEWTSET__
+#define FCV_DIAG         FCVDIAG__
+#define FCV_DENSE        FCVDENSE__
+#define FCV_DENSESETJAC  FCVDENSESETJAC__
+#define FCV_BAND         FCVBAND__
+#define FCV_BANDSETJAC   FCVBANDSETJAC__
+#define FCV_SPGMR        FCVSPGMR__
+#define FCV_SPGMRREINIT  FCVSPGMRREINIT__
+#define FCV_SPGMRSETJAC  FCVSPGMRSETJAC__
+#define FCV_SPGMRSETPREC FCVSPGMRSETPREC__
+#define FCV_CVODE        FCVODE__
+#define FCV_DKY          FCVDKY__
+#define FCV_FREE         FCVFREE__
+#define FCV_FUN          FCVFUN__
+#define FCV_DJAC         FCVDJAC__
+#define FCV_BJAC         FCVBJAC__
+#define FCV_PSOL         FCVPSOL__
+#define FCV_PSET         FCVPSET__
+#define FCV_JTIMES       FCVJTIMES__
+#define FCV_EWT          FCVEWT__
+
+#endif
+
+/* Prototypes of exported functions */
+
+void FCV_MALLOC(realtype *t0, realtype *y0, 
+                int *meth, int *itmeth, int *iatol, 
+                realtype *rtol, realtype *atol,
+                int *optin, long int *iopt, realtype *ropt, 
+                int *ier);
+void FCV_REINIT(realtype *t0, realtype *y0, int *iatol, realtype *rtol,
+                realtype *atol, int *optin, long int *iopt,
+                realtype *ropt, int *ier);
+void FCV_EWTSET(int *flag, int *ier);
+void FCV_DIAG(int *ier);
+void FCV_DENSE(long int *neq, int *ier);
+void FCV_DENSESETJAC(int *flag, int *ier);
+void FCV_BAND(long int *neq, long int *mupper, long int *mlower, int *ier);
+void FCV_BANDSETJAC(int *flag, int *ier);
+void FCV_SPGMR(int *pretype, int *gstype, int *maxl, realtype *delt, int *ier);
+void FCV_SPGMRREINIT(int *pretype, int *gstype, realtype *delt, int *ier);
+void FCV_SPGMRSETJAC(int *flag, int *ier);
+void FCV_SPGMRSETPREC(int *flag, int *ier);
+void FCV_CVODE(realtype *tout, realtype *t, realtype *y, int *itask, int *ier);
+void FCV_DKY (realtype *t, int *k, realtype *dky, int *ier);
+void FCV_FREE ();
+
+
+/* Prototypes: Functions Called by the CVODE Solver */
+  
+void FCVf(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+
+void FCVDenseJac(long int N, DenseMat J, realtype t, 
+                 N_Vector y, N_Vector fy, void *jac_data,
+                 N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3);
+
+void FCVBandJac(long int N, long int mupper, long int mlower,
+                BandMat J, realtype t, N_Vector y, N_Vector fy,
+                void *jac_data,
+                N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3);
+
+int FCVPSet(realtype tn, N_Vector y,N_Vector fy, booleantype jok,
+            booleantype *jcurPtr, realtype gamma, void *P_data,
+            N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3);
+
+int FCVPSol(realtype tn, N_Vector y, N_Vector fy, 
+            N_Vector r, N_Vector z,
+            realtype gamma, realtype delta,
+            int lr, void *P_data, N_Vector vtemp);
+
+int FCVJtimes(N_Vector v, N_Vector Jv, realtype t, 
+              N_Vector y, N_Vector fy,
+              void *jac_data, N_Vector work);
+
+int FCVEwtSet(N_Vector y, N_Vector ewt, void *e_data);
+
+/* Declarations for global variables shared amongst various routines */
+
+extern N_Vector F2C_vec;
+
+extern N_Vector F2C_atolvec;
+extern realtype *data_F2C_vec, *data_F2C_atolvec;
+
+extern void *CV_cvodemem;
+extern booleantype CV_optin;
+extern long int *CV_iopt;
+extern realtype *CV_ropt;
+extern int CV_nrtfn;
+extern int CV_ls;  /* 1 = DENSE, 2 = BAND, 3 = DIAG, 4 = SPGMR */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/fcvpreco.c b/Win32/WinCVODE/sundials/cvode/fcmix/fcvpreco.c
new file mode 100644
index 0000000..46bf7ab
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/fcvpreco.c
@@ -0,0 +1,130 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:58 $
+ * ----------------------------------------------------------------- 
+ * Programmers: Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * The C function FCVPSet is to interface between the CVSPGMR module
+ * and the user-supplied preconditioner setup routine FCVPSET.
+ * Note the use of the generic name FCV_PSET below.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvspgmr.h"        /* CVSpgmr prototype                              */
+#include "fcvode.h"         /* actual function names, prototypes and
+			       global variables                               */
+#include "nvector.h"        /* definitions of type N_Vector and vector macros */
+#include "sundialstypes.h"  /* definition of type realtype                    */
+
+/*********************************************************************/
+
+/* Prototype of the Fortran routines */
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+  extern void FCV_PSET(realtype*, realtype*, realtype*, booleantype*, 
+                       booleantype*, realtype*, realtype*, realtype*,
+                       realtype*, realtype*, realtype*, int*);
+  extern void FCV_PSOL(realtype*, realtype*, realtype*, realtype*, 
+                       realtype*, realtype*, realtype*, 
+                       realtype*, int*, realtype*, int*);
+#ifdef __cplusplus
+}
+#endif
+
+/***************************************************************************/
+
+void FCV_SPGMRSETPREC(int *flag, int *ier)
+{
+  if (*flag == 0) CVSpgmrSetPreconditioner(CV_cvodemem, NULL, NULL, NULL);
+  else CVSpgmrSetPreconditioner(CV_cvodemem, FCVPSet, FCVPSol, NULL);
+}
+
+/***************************************************************************/
+
+/* C function FCVPSet to interface between CVODE and a Fortran subroutine
+   FCVPSET for setup of a Krylov preconditioner.
+   Addresses of Nlocal, t, jok, gamma, h, uround, y, fy, ewt, vtemp1, vtemp2, 
+   vtemp3, and the address jcurPtr are passed to FCVPSET, using
+   the routine N_VGetArrayPointer from NVECTOR.  A return flag ier from FCVPSET
+   is returned by FCVPSet.
+   Auxiliary data is assumed to be communicated by common blocks. */
+
+int FCVPSet(realtype t, N_Vector y, N_Vector fy, booleantype jok,
+            booleantype *jcurPtr, realtype gamma,
+            void *P_data,
+            N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3)
+{
+  N_Vector ewt;
+  realtype h;
+  realtype *ydata, *fydata, *ewtdata, *v1data, *v2data, *v3data;
+
+  int ier = 0;
+  
+  ewt = N_VClone(y);
+
+  CVodeGetErrWeights(CV_cvodemem, ewt);
+  CVodeGetLastStep(CV_cvodemem, &h);
+
+  ydata   = N_VGetArrayPointer(y);
+  fydata  = N_VGetArrayPointer(fy);
+  ewtdata = N_VGetArrayPointer(ewt);
+  v1data  = N_VGetArrayPointer(vtemp1);
+  v2data  = N_VGetArrayPointer(vtemp2);
+  v3data  = N_VGetArrayPointer(vtemp3);
+
+  FCV_PSET(&t, ydata, fydata, &jok, jcurPtr, &gamma, ewtdata,
+           &h, v1data, v2data, v3data, &ier);
+
+  N_VDestroy(ewt);
+
+  return(ier);
+}
+
+/***************************************************************************/
+
+/* C function FCVPSol to interface between CVODE and a Fortran subroutine
+   FCVPSOL for solution of a Krylov preconditioner.
+   Addresses of t, gamma, delta, lr, y, fy, vtemp, ewt, r, and z are
+   passed to FCVPSOL, using the routine N_VGetArrayPointer from NVECTOR.
+   A return flag ier from FCVPSOL is returned by FCVPSol.
+   Auxiliary data is assumed to be communicated by Common blocks. */
+
+int FCVPSol(realtype t, N_Vector y, N_Vector fy, 
+            N_Vector r, N_Vector z,
+            realtype gamma, realtype delta,
+            int lr, void *P_data, N_Vector vtemp)
+{
+  N_Vector ewt;
+  realtype *ydata, *fydata, *vtdata, *ewtdata, *rdata, *zdata;
+
+  int ier = 0;
+
+  ewt = N_VClone(y);
+
+  CVodeGetErrWeights(CV_cvodemem, ewt);
+
+  ydata   = N_VGetArrayPointer(y);
+  fydata  = N_VGetArrayPointer(fy);
+  vtdata  = N_VGetArrayPointer(vtemp);
+  ewtdata = N_VGetArrayPointer(ewt);
+  rdata   = N_VGetArrayPointer(r);
+  zdata   = N_VGetArrayPointer(z);
+
+  FCV_PSOL(&t, ydata, fydata, vtdata, &gamma, ewtdata, &delta,
+           rdata, &lr, zdata, &ier);
+
+  N_VDestroy(ewt);
+
+  return(ier);
+}
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/fcvroot.c b/Win32/WinCVODE/sundials/cvode/fcmix/fcvroot.c
new file mode 100644
index 0000000..40c0103
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/fcvroot.c
@@ -0,0 +1,80 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:58 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * The FCVROOT module contains the routines necessary to use
+ * the rootfinding feature of the CVODE module and to interface
+ * with the user-supplied Fortran subroutine.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvode.h"          /* CVODE constants and prototypes        */
+#include "fcvode.h"         /* actual function names, prototypes and
+			       global variables                      */
+#include "fcvroot.h"        /* prototypes of interfaces to CVROOT    */
+#include "nvector.h"        /* definition of type N_Vector           */
+#include "sundialstypes.h"  /* definition of SUNDIALS type realtype  */
+
+/***************************************************************************/
+
+/* Prototype of the Fortran routine */
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+  extern void FCV_ROOTFN(realtype *, realtype*, realtype*);
+#ifdef __cplusplus
+}
+#endif
+
+/***************************************************************************/
+
+void FCV_ROOTINIT(int *nrtfn, int *ier)
+{
+  *ier = CVodeRootInit(CV_cvodemem, *nrtfn, (CVRootFn) FCVrootfunc, NULL);
+  CV_nrtfn = *nrtfn;
+
+  return;
+}
+
+/***************************************************************************/
+
+void FCV_ROOTINFO(int *nrtfn, int *info, int *ier)
+{
+  *ier = CVodeGetRootInfo(CV_cvodemem, info);
+  return; 
+}
+
+/***************************************************************************/
+
+void FCV_ROOTFREE(void)
+{
+  CVodeRootInit(CV_cvodemem, 0, NULL, NULL);
+
+  return;
+}
+
+/***************************************************************************/
+
+void FCVrootfunc(realtype t, N_Vector y, realtype *gout, void *g_data)
+{
+  realtype *ydata;
+
+  ydata = N_VGetArrayPointer(y);
+
+  FCV_ROOTFN(&t, ydata, gout);
+
+  return;
+}
+
diff --git a/Win32/WinCVODE/sundials/cvode/fcmix/fcvroot.h b/Win32/WinCVODE/sundials/cvode/fcmix/fcvroot.h
new file mode 100644
index 0000000..4581b92
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/fcmix/fcvroot.h
@@ -0,0 +1,174 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:22:58 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the Fortran interface include file for the rootfinding
+ * feature of CVODE.
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * ==============================================================================
+ *
+ *                   FCVROOT Interface Package
+ *
+ * The FCVROOT interface package allows programs written in FORTRAN to
+ * use the rootfinding feature of the CVODE solver module.
+ *
+ * The user-callable functions constituting the FCVROOT package are the
+ * following: FCVROOTINIT and FCVROOTFREE. The corresponding
+ * CVODE subroutine called by each interface function is given below.
+ *
+ *   -----------------      -----------------------
+ *  | FCVROOT routine |    | CVODE function called |
+ *   -----------------      -----------------------
+ *      FCVROOTINIT     ->     CVodeRootInit
+ *      FCVROOTFREE     ->     CVodeRootInit
+ *
+ * FCVROOTFN is a user-supplied subroutine defining the functions whose
+ * roots are sought.
+ *
+ * ==============================================================================
+ *
+ *                     Usage of the FCVROOT Interface Package
+ *
+ * 1. In order to use the rootfinding feature of the CVODE package the user must
+ * define the following subroutine:
+ *
+ *   SUBROUTINE FCVROOTFN (T, Y, G)
+ *   DIMENSION Y(*), G(*)
+ *
+ * The arguments are:
+ *   T = independent variable value t  [input]
+ *   Y = dependent variable vector y  [input]
+ *   G = function values g(t,y)  [output]
+ *
+ * 2. After calling FCVMALLOC but prior to calling FCVODE, the user must
+ * allocate and initialize memory for the FCVROOT module by making the
+ * following call:
+ *
+ *   CALL FCVROOTINIT (NRTFN, IER)
+ *
+ * The arguments are:
+ *   NRTFN = total number of root functions  [input]
+ *   IER   = return completion flag (0 = success, -1 = CVODE memory NULL and
+ *           -4 = memory allocation error)  [output]
+ *
+ * 3. After calling FCVODE, to see whether a root was found, test the FCVODE
+ * return flag IER.  The value IER = 2 means one or more roots were found.
+ *
+ * 4. If a root was found, and if NRTFN > 1, then to determine which root
+ * functions G(*) were found to have a root, make the following call:
+ *     CALL FCVROOTINFO (NRTFN, INFO, IER)
+ * The arguments are:
+ *   NRTFN = total number of root functions  [input]
+ *   INFO  = integer array of length NRTFN, with values 0 or 1 [output]
+ *           For i = 1,...,NRTFN, G(i) was found to have a root if INFO(i) = 1.
+ *   IER   = completion flag (0 = success,  negative = failure)
+ *
+ * 5. The total number of calls made to the root function (FCVROOTFN)
+ * can be obtained from IOPT[]
+ *
+ * If the FCVODE/CVODE memory block is reinitialized to solve a different
+ * problem via a call to FCVREINIT, then the counter variable NGE is cleared
+ * (reset to zero).
+ *
+ * 6. To free the memory resources allocated by a prior call to FCVROOTINIT make
+ * the following call:
+ *
+ *   CALL FCVROOTFREE
+ *
+ * See the CVODE documentation for additional information.
+ *
+ * ==============================================================================
+ */
+
+#ifndef _FCVROOT_H
+#define _FCVROOT_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+/* header files */
+
+#include "nvector.h"        /* definition of type N_Vector          */
+#include "sundialstypes.h"  /* definition of SUNDIALS type realtype */
+
+/* Definitions of interface function names */
+
+#if defined(F77_FUNC)
+
+#define FCV_ROOTINIT F77_FUNC(fcvrootinit, FCVROOTINIT)
+#define FCV_ROOTINFO F77_FUNC(fcvrootinfo, FCVROOTINFO)
+#define FCV_ROOTFREE F77_FUNC(fcvrootfree, FCVROOTFREE)
+#define FCV_ROOTFN   F77_FUNC(fcvrootfn, FCVROOTFN)
+
+#elif defined(SUNDIALS_UNDERSCORE_NONE) && defined(SUNDIALS_CASE_LOWER)
+
+#define FCV_ROOTINIT fcvrootinit
+#define FCV_ROOTINFO fcvrootinfo
+#define FCV_ROOTFREE fcvrootfree
+#define FCV_ROOTFN   fcvrootfn
+
+#elif defined(SUNDIALS_UNDERSCORE_NONE) && defined(SUNDIALS_CASE_UPPER)
+
+#define FCV_ROOTINIT FCVROOTINIT
+#define FCV_ROOTINFO FCVROOTINFO
+#define FCV_ROOTFREE FCVROOTFREE
+#define FCV_ROOTFN   FCVROOTFN
+
+#elif defined(SUNDIALS_UNDERSCORE_ONE) && defined(SUNDIALS_CASE_LOWER)
+
+#define FCV_ROOTINIT fcvrootinit_
+#define FCV_ROOTINFO fcvrootinfo_
+#define FCV_ROOTFREE fcvrootfree_
+#define FCV_ROOTFN   fcvrootfn_
+
+#elif defined(SUNDIALS_UNDERSCORE_ONE) && defined(SUNDIALS_CASE_UPPER)
+
+#define FCV_ROOTINIT FCVROOTINIT_
+#define FCV_ROOTINFO FCVROOTINFO_
+#define FCV_ROOTFREE FCVROOTFREE_
+#define FCV_ROOTFN   FCVROOTFN_
+
+#elif defined(SUNDIALS_UNDERSCORE_TWO) && defined(SUNDIALS_CASE_LOWER)
+
+#define FCV_ROOTINIT fcvrootinit__
+#define FCV_ROOTINFO fcvrootinfo__
+#define FCV_ROOTFREE fcvrootfree__
+#define FCV_ROOTFN   fcvrootfn__
+
+#elif defined(SUNDIALS_UNDERSCORE_TWO) && defined(SUNDIALS_CASE_UPPER)
+
+#define FCV_ROOTINIT FCVROOTINIT__
+#define FCV_ROOTINFO FCVROOTINFO__
+#define FCV_ROOTFREE FCVROOTFREE__
+#define FCV_ROOTFN   FCVROOTFN__
+
+#endif
+
+/* Prototypes of exported function */
+
+void FCV_ROOTINIT(int *nrtfn, int *ier);
+void FCV_ROOTINFO(int *nrtfn, int *info, int *ier);
+void FCV_ROOTFREE(void);
+
+/* Prototype of function called by CVROOT module */
+
+void FCVrootfunc(realtype t, N_Vector y, realtype *gout, void *g_data);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/include/cvband.h b/Win32/WinCVODE/sundials/cvode/include/cvband.h
new file mode 100644
index 0000000..14ef036
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/include/cvband.h
@@ -0,0 +1,219 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:24:34 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the CVODE/CVODES band linear
+ * solver, CVBAND.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVBAND_H
+#define _CVBAND_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "band.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+ 
+/*
+ * -----------------------------------------------------------------
+ * CVBAND solver constants
+ * -----------------------------------------------------------------
+ * CVB_MSBJ : maximum number of steps between band Jacobian
+ *            evaluations
+ *
+ * CVB_DGMAX : maximum change in gamma between band Jacobian
+ *             evaluations
+ * -----------------------------------------------------------------
+ */
+
+#define CVB_MSBJ  50
+#define CVB_DGMAX RCONST(0.2)
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVBandJacFn
+ * -----------------------------------------------------------------
+ * A band Jacobian approximation function Jac must have the
+ * prototype given below. Its parameters are:
+ *
+ * N is the length of all vector arguments.
+ *
+ * mupper is the upper half-bandwidth of the approximate banded
+ * Jacobian. This parameter is the same as the mupper parameter
+ * passed by the user to the CVBand function.
+ *
+ * mlower is the lower half-bandwidth of the approximate banded
+ * Jacobian. This parameter is the same as the mlower parameter
+ * passed by the user to the CVBand function.
+ *
+ * J is the band matrix (of type BandMat) that will be loaded
+ * by a CVBandJacFn with an approximation to the Jacobian matrix
+ * J = (df_i/dy_j) at the point (t,y).
+ * J is preset to zero, so only the nonzero elements need to be
+ * loaded. Three efficient ways to load J are:
+ *
+ * (1) (with macros - no explicit data structure references)
+ *    for (j=0; j < n; j++) {
+ *       col_j = BAND_COL(J,j);
+ *       for (i=j-mupper; i <= j+mlower; i++) {
+ *         generate J_ij = the (i,j)th Jacobian element
+ *         BAND_COL_ELEM(col_j,i,j) = J_ij;
+ *       }
+ *     }
+ *
+ * (2) (with BAND_COL macro, but without BAND_COL_ELEM macro)
+ *    for (j=0; j < n; j++) {
+ *       col_j = BAND_COL(J,j);
+ *       for (k=-mupper; k <= mlower; k++) {
+ *         generate J_ij = the (i,j)th Jacobian element, i=j+k
+ *         col_j[k] = J_ij;
+ *       }
+ *     }
+ *
+ * (3) (without macros - explicit data structure references)
+ *     offset = J->smu;
+ *     for (j=0; j < n; j++) {
+ *       col_j = ((J->data)[j])+offset;
+ *       for (k=-mupper; k <= mlower; k++) {
+ *         generate J_ij = the (i,j)th Jacobian element, i=j+k
+ *         col_j[k] = J_ij;
+ *       }
+ *     }
+ * Caution: J->smu is generally NOT the same as mupper.
+ *
+ * The BAND_ELEM(A,i,j) macro is appropriate for use in small
+ * problems in which efficiency of access is NOT a major concern.
+ *
+ * t is the current value of the independent variable.
+ *
+ * y is the current value of the dependent variable vector,
+ *      namely the predicted value of y(t).
+ *
+ * fy is the vector f(t,y).
+ *
+ * jac_data is a pointer to user data - the same as the jac_data
+ *          parameter passed to CVBand.
+ *
+ * NOTE: If the user's Jacobian routine needs other quantities,
+ *     they are accessible as follows: hcur (the current stepsize)
+ *     and ewt (the error weight vector) are accessible through
+ *     CVodeGetCurrentStep and CVodeGetErrWeights, respectively
+ *     (see cvode.h). The unit roundoff is available as
+ *     UNIT_ROUNDOFF defined in sundialstypes.h
+ *
+ * tmp1, tmp2, and tmp3 are pointers to memory allocated for
+ * vectors of length N which can be used by a CVBandJacFn
+ * as temporary storage or work space.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVBandJacFn)(long int N, long int mupper, long int mlower,
+                            BandMat J, realtype t,
+                            N_Vector y, N_Vector fy, void *jac_data,
+                            N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBand
+ * -----------------------------------------------------------------
+ * A call to the CVBand function links the main CVODE integrator
+ * with the CVBAND linear solver.
+ *
+ * cvode_mem is the pointer to the integrator memory returned by
+ *           CVodeCreate.
+ *
+ * N is the size of the ODE system.
+ *
+ * mupper is the upper bandwidth of the band Jacobian
+ *        approximation.
+ *
+ * mlower is the lower bandwidth of the band Jacobian
+ *        approximation.
+ *
+ * The return value of CVBand is one of:
+ *    CVBAND_SUCCESS   if successful
+ *    CVBAND_MEM_NULL  if the cvode memory was NULL
+ *    CVBAND_MEM_FAIL  if there was a memory allocation failure
+ *    CVBAND_ILL_INPUT if a required vector operation is missing or
+ *                     if a bandwidth has an illegal value.
+ * -----------------------------------------------------------------
+ */
+
+int CVBand(void *cvode_mem, long int N,
+           long int mupper, long int mlower);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional inputs to the CVBAND linear solver
+ * -----------------------------------------------------------------
+ *
+ * CVBandSetJacFn specifies the band Jacobian approximation
+ *                routine to be used. A user-supplied bjac routine
+ *                must be of type CVBandJacFn. By default, a difference
+ *                quotient routine CVBandDQJac, supplied with this
+ *                solver is used.
+ *                It also specifies a pointer to user data which is
+ *                passed to the bjac routine every time it is called.
+ *
+ * The return value of CVBandSet* is one of:
+ *    CVBAND_SUCCESS   if successful
+ *    CVBAND_MEM_NULL  if the cvode memory was NULL
+ *    CVBAND_LMEM_NULL if the cvband memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVBandSetJacFn(void *cvode_mem, CVBandJacFn bjac, void *jac_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional outputs from the CVBAND linear solver
+ * -----------------------------------------------------------------
+ *
+ * CVBandGetWorkSpace returns the real and integer workspace used
+ *                    by CVBAND.
+ * CVBandGetNumJacEvals returns the number of calls made to the
+ *                      Jacobian evaluation routine bjac.
+ * CVBandGetNumRhsEvals returns the number of calls to the user
+ *                      f routine due to finite difference Jacobian
+ *                      evaluation.
+ * CVBandGetLastFlag returns the last error flag set by any of
+ *                   the CVBAND interface functions.
+ *
+ * The return value of CVBandGet* is one of:
+ *    CVBAND_SUCCESS   if successful
+ *    CVBAND_MEM_NULL  if the cvode memory was NULL
+ *    CVBAND_LMEM_NULL if the cvband memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVBandGetWorkSpace(void *cvode_mem, long int *lenrwB, long int *leniwB);
+int CVBandGetNumJacEvals(void *cvode_mem, long int *njevalsB);
+int CVBandGetNumRhsEvals(void *cvode_mem, long int *nfevalsB);
+int CVBandGetLastFlag(void *cvode_mem, int *flag);
+
+/* CVBAND return values */
+
+#define CVBAND_SUCCESS    0
+#define CVBAND_MEM_NULL  -1
+#define CVBAND_LMEM_NULL -2
+#define CVBAND_ILL_INPUT -3
+#define CVBAND_MEM_FAIL  -4
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/include/cvbandpre.h b/Win32/WinCVODE/sundials/cvode/include/cvbandpre.h
new file mode 100644
index 0000000..c93e758
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/include/cvbandpre.h
@@ -0,0 +1,174 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:24:34 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Michael Wittman, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the CVBANDPRE module, which
+ * provides a banded difference quotient Jacobian-based
+ * preconditioner and solver routines for use with CVSPGMR.
+ *
+ * Summary:
+ * These routines provide a band matrix preconditioner based on
+ * difference quotients of the ODE right-hand side function f.
+ * The user supplies parameters
+ *   mu = upper half-bandwidth (number of super-diagonals)
+ *   ml = lower half-bandwidth (number of sub-diagonals)
+ * The routines generate a band matrix of bandwidth ml + mu + 1
+ * and use this to form a preconditioner for use with the Krylov
+ * linear solver in CVSPGMR.  Although this matrix is intended
+ * to approximate the Jacobian df/dy, it may be a very crude
+ * approximation.  The true Jacobian need not be banded, or its
+ * true bandwith may be larger than ml + mu + 1, as long as the
+ * banded approximation generated here is sufficiently accurate
+ * to speed convergence as a preconditioner.
+ *
+ * Usage:
+ *   The following is a summary of the usage of this module.
+ *   Details of the calls to CVodeCreate, CVodeMalloc, CVSpgmr,
+ *   and CVode are available in the User Guide.
+ *   To use these routines, the sequence of calls in the user
+ *   main program should be as follows:
+ *
+ *   #include "cvbandpre.h"
+ *   #include "nvector_serial.h"
+ *   ...
+ *   void *bp_data;
+ *   ...
+ *   Set y0
+ *   ...
+ *   cvode_mem = CVodeCreate(...);
+ *   ier = CVodeMalloc(...);
+ *   ...
+ *   bp_data = CVBandPrecAlloc(cvode_mem, N, mu, ml);
+ *   ...
+ *   flag = CVBPSpgmr(cvode_mem, pretype, maxl, bp_data);
+ *   ...
+ *   flag = CVode(...);
+ *   ...
+ *   CVBandPrecFree(bp_data);
+ *   ...
+ *   Free y0
+ *   ...
+ *   CVodeFree(cvode_mem);
+ *
+ * Notes:
+ * (1) Include this file for the CVBandPrecData type definition.
+ * (2) In the CVBandPrecAlloc call, the arguments N is the same
+ *     as in the call to CVodeMalloc.
+ * (3) In the CVBPSpgmr call, the user is free to specify the input
+ *     pretype and the optional input maxl.  The last argument
+ *     must be the pointer returned by CVBandPrecAlloc.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVBANDPRE_H
+#define _CVBANDPRE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBandPrecAlloc
+ * -----------------------------------------------------------------
+ * CVBandPrecAlloc allocates and initializes a CVBandPrecData
+ * structure to be passed to CVSpgmr (and subsequently used by
+ * CVBandPrecSetup and CVBandPrecSolve).
+ *
+ * The parameters of CVBandPrecAlloc are as follows:
+ *
+ * cvode_mem is the pointer to CVODE memory returned by CVodeCreate.
+ *
+ * N is the problem size.
+ *
+ * mu is the upper half bandwidth.
+ *
+ * ml is the lower half bandwidth.
+ *
+ * CVBandPrecAlloc returns the storage pointer of type
+ * CVBandPrecData, or NULL if the request for storage cannot be
+ * satisfied.
+ *
+ * NOTE: The band preconditioner assumes a serial implementation
+ *       of the NVECTOR package. Therefore, CVBandPrecAlloc will
+ *       first test for a compatible N_Vector internal
+ *       representation by checking for required functions.
+ * -----------------------------------------------------------------
+ */
+
+void *CVBandPrecAlloc(void *cvode_mem, long int N,
+                      long int mu, long int ml);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBPSpgmr
+ * -----------------------------------------------------------------
+ * CVBPSpgmr links the CVBANDPPRE preconditioner to the CVSPGMR
+ * linear solver. It performs the following actions:
+ *  1) Calls the CVSPGMR specification routine and attaches the
+ *     CVSPGMR linear solver to the integrator memory;
+ *  2) Sets the preconditioner data structure for CVSPGMR
+ *  3) Sets the preconditioner setup routine for CVSPGMR
+ *  4) Sets the preconditioner solve routine for CVSPGMR
+ *
+ * Its first 3 arguments are the same as for CVSpgmr (see
+ * cvspgmr.h). The last argument is the pointer to the CVBANDPPRE
+ * memory block returned by CVBandPrecAlloc.
+ * Note that the user need not call CVSpgmr.
+ *
+ * Possible return values are:
+ *    CVSPGMR_SUCCESS     if successful
+ *    CVSPGMR_MEM_NULL    if the cvode memory was NULL
+ *    CVSPGMR_LMEM_NULL   if the cvspgmr memory was NULL
+ *    CVSPGMR_MEM_FAIL    if there was a memory allocation failure
+ *    CVSPGMR_ILL_INPUT   if a required vector operation is missing
+ *    CV_PDATA_NULL       if the bp_data was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVBPSpgmr(void *cvode_mem, int pretype, int maxl, void *p_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBandPrecFree
+ * -----------------------------------------------------------------
+ * CVBandPrecFree frees the memory allocated by CVBandPrecAlloc
+ * in the argument pdata.
+ * -----------------------------------------------------------------
+ */
+
+void CVBandPrecFree(void *bp_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional output functions : CVBandPrecGet*
+ * -----------------------------------------------------------------
+ * CVBandPrecGetWorkSpace returns the real and integer workspace used
+ *                        by CVBANDPRE.
+ * CVBandPrecGetNumRhsEvals returns the number of calls made from
+ *                          CVBANDPRE to the user's right hand side
+ *                          routine f.
+ *
+ * The return value of CVBandPrecGet* is one of:
+ *    CV_SUCCESS    if successful
+ *    CV_PDATA_NULL if the bp_data memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVBandPrecGetWorkSpace(void *bp_data, long int *lenrwBP, long int *leniwBP);
+int CVBandPrecGetNumRhsEvals(void *bp_data, long int *nfevalsBP);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/include/cvbbdpre.h b/Win32/WinCVODE/sundials/cvode/include/cvbbdpre.h
new file mode 100644
index 0000000..71e98cb
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/include/cvbbdpre.h
@@ -0,0 +1,298 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:24:34 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Michael Wittman, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the CVBBDPRE module, for a
+ * band-block-diagonal preconditioner, i.e. a block-diagonal
+ * matrix with banded blocks, for use with CVSpgmr, and
+ * the parallel implementation of the NVECTOR module.
+ *
+ * Summary:
+ *
+ * These routines provide a preconditioner matrix  that is
+ * block-diagonal with banded blocks.  The blocking corresponds
+ * to the distribution of the dependent variable vector y among
+ * the processors.  Each preconditioner block is generated from
+ * the Jacobian of the local part (on the current processor) of a
+ * given function g(t,y) approximating f(t,y).  The blocks are
+ * generated by a difference quotient scheme on each processor
+ * independently.  This scheme utilizes an assumed banded
+ * structure with given half-bandwidths, mudq and mldq.
+ * However, the banded Jacobian block kept by the scheme has
+ * half-bandwiths mukeep and mlkeep, which may be smaller.
+ *
+ * The user's calling program should have the following form:
+ *
+ *   #include "nvector_parallel.h"
+ *   #include "cvbbdpre.h"
+ *   ...
+ *   void *cvode_mem;
+ *   void *bbd_data;
+ *   ...
+ *   Set y0
+ *   ...
+ *   cvode_mem = CVodeCreate(...);
+ *   ier = CVodeMalloc(...);
+ *   ...
+ *   bbd_data = CVBBDPrecAlloc(cvode_mem, Nlocal, mudq ,mldq,
+ *                             mukeep, mlkeep, dqrely, gloc, cfn);
+ *   flag = CVBBDSpgmr(cvode_mem, pretype, maxl, bbd_data);
+ *   ...
+ *   ier = CVode(...);
+ *   ...
+ *   CVBBDPrecFree(bbd_data);
+ *   ...                                                           
+ *   CVodeFree(...);
+ * 
+ *   Free y0
+ *
+ * The user-supplied routines required are:
+ *
+ *   f    = function defining the ODE right-hand side f(t,y).
+ *
+ *   gloc = function defining the approximation g(t,y).
+ *
+ *   cfn  = function to perform communication need for gloc.
+ *
+ * Notes:
+ *
+ * 1) This header file is included by the user for the definition
+ *    of the CVBBDData type and for needed function prototypes.
+ *
+ * 2) The CVBBDPrecAlloc call includes half-bandwiths mudq and mldq
+ *    to be used in the difference-quotient calculation of the
+ *    approximate Jacobian.  They need not be the true
+ *    half-bandwidths of the Jacobian of the local block of g,
+ *    when smaller values may provide a greater efficiency.
+ *    Also, the half-bandwidths mukeep and mlkeep of the retained
+ *    banded approximate Jacobian block may be even smaller,
+ *    to reduce storage and computation costs further.
+ *    For all four half-bandwidths, the values need not be the
+ *    same on every processor.
+ *
+ * 3) The actual name of the user's f function is passed to
+ *    CVodeMalloc, and the names of the user's gloc and cfn
+ *    functions are passed to CVBBDPrecAlloc.
+ *
+ * 4) The pointer to the user-defined data block f_data, which is
+ *    set through CVodeSetFdata is also available to the user in
+ *    gloc and cfn.
+ *
+ * 5) For the CVSpgmr solver, the Gram-Schmidt type gstype, is
+ *    left to the user to specify through CVSpgmrSetGStype.
+ *
+ * 6) Optional outputs specific to this module are available by
+ *    way of routines listed below.  These include work space sizes
+ *    and the cumulative number of gloc calls.  The costs
+ *    associated with this module also include nsetups banded LU
+ *    factorizations, nlinsetups cfn calls, and npsolves banded
+ *    backsolve calls, where nlinsetups and npsolves are
+ *    integrator/CVSPGMR optional outputs.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVBBDPRE_H
+#define _CVBBDPRE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVLocalFn
+ * -----------------------------------------------------------------
+ * The user must supply a function g(t,y) which approximates the
+ * right-hand side function f for the system y'=f(t,y), and which
+ * is computed locally (without inter-processor communication).
+ * (The case where g is mathematically identical to f is allowed.)
+ * The implementation of this function must have type CVLocalFn.
+ *
+ * This function takes as input the local vector size Nlocal, the
+ * independent variable value t, the local real dependent
+ * variable vector y, and a pointer to the user-defined data
+ * block f_data.  It is to compute the local part of g(t,y) and
+ * store this in the vector g.
+ * (Allocation of memory for y and g is handled within the
+ * preconditioner module.)
+ * The f_data parameter is the same as that specified by the user
+ * through the CVodeSetFdata routine.
+ * A CVLocalFn gloc does not have a return value.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVLocalFn)(long int Nlocal, realtype t, N_Vector y,
+                          N_Vector g, void *f_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVCommFn
+ * -----------------------------------------------------------------
+ * The user may supply a function of type CVCommFn which performs
+ * all inter-processor communication necessary to evaluate the
+ * approximate right-hand side function described above.
+ *
+ * This function takes as input the local vector size Nlocal,
+ * the independent variable value t, the dependent variable
+ * vector y, and a pointer to the user-defined data block f_data.
+ * The f_data parameter is the same as that specified by the user
+ * through the CVodeSetFdata routine.  The CVCommFn cfn is
+ * expected to save communicated data in space defined within the
+ * structure f_data.  Note: A CVCommFn cfn does not have a return value.
+ *
+ * Each call to the CVCommFn cfn is preceded by a call to the
+ * RhsFn f with the same (t,y) arguments.  Thus cfn can omit any
+ * communications done by f if relevant to the evaluation of g.
+ * If all necessary communication was done by f, the user can
+ * pass NULL for cfn in CVBBDPrecAlloc (see below).
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVCommFn)(long int Nlocal, realtype t, N_Vector y,
+                         void *f_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBBDPrecAlloc
+ * -----------------------------------------------------------------
+ * CVBBDPrecAlloc allocates and initializes a CVBBDData structure
+ * to be passed to CVSpgmr (and used by CVBBDPrecSetup and
+ * and CVBBDPrecSolve.
+ *
+ * The parameters of CVBBDPrecAlloc are as follows:
+ *
+ * cvode_mem is the pointer to the integrator memory.
+ *
+ * Nlocal is the length of the local block of the vectors y etc.
+ *        on the current processor.
+ *
+ * mudq, mldq are the upper and lower half-bandwidths to be used
+ *            in the difference-quotient computation of the local
+ *            Jacobian block.
+ *
+ * mukeep, mlkeep are the upper and lower half-bandwidths of the
+ *                retained banded approximation to the local Jacobian
+ *                block.
+ *
+ * dqrely is an optional input.  It is the relative increment
+ *        in components of y used in the difference quotient
+ *        approximations.  To specify the default, pass 0.
+ *        The default is dqrely = sqrt(unit roundoff).
+ *
+ * gloc is the name of the user-supplied function g(t,y) that
+ *      approximates f and whose local Jacobian blocks are
+ *      to form the preconditioner.
+ *
+ * cfn is the name of the user-defined function that performs
+ *     necessary inter-processor communication for the
+ *     execution of gloc.
+ *
+ * CVBBDPrecAlloc returns the storage allocated (type *void),
+ * or NULL if the request for storage cannot be satisfied.
+ * -----------------------------------------------------------------
+ */
+
+void *CVBBDPrecAlloc(void *cvode_mem, long int Nlocal, 
+                     long int mudq, long int mldq, 
+                     long int mukeep, long int mlkeep, 
+                     realtype dqrely,
+                     CVLocalFn gloc, CVCommFn cfn);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBBDSpgmr
+ * -----------------------------------------------------------------
+ * CVBBDSpgmr links the CVBBDPRE preconditioner to the CVSPGMR
+ * linear solver. It performs the following actions:
+ *  1) Calls the CVSPGMR specification routine and attaches the
+ *     CVSPGMR linear solver to the integrator memory;
+ *  2) Sets the preconditioner data structure for CVSPGMR
+ *  3) Sets the preconditioner setup routine for CVSPGMR
+ *  4) Sets the preconditioner solve routine for CVSPGMR
+ *
+ * Its first 3 arguments are the same as for CVSpgmr (see
+ * cvspgmr.h). The last argument is the pointer to the CVBBDPRE
+ * memory block returned by CVBBDPrecAlloc.
+ * Note that the user need not call CVSpgmr.
+ *
+ * Possible return values are:
+ *    CVSPGMR_SUCCESS     if successful
+ *    CVSPGMR_MEM_NULL    if the cvode memory was NULL
+ *    CVSPGMR_LMEM_NULL   if the cvspgmr memory was NULL
+ *    CVSPGMR_MEM_FAIL    if there was a memory allocation failure
+ *    CVSPGMR_ILL_INPUT   if a required vector operation is missing
+ *    CV_PDATA_NULL       if the bbd_data was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVBBDSpgmr(void *cvode_mem, int pretype, int maxl, void *bbd_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBBDPrecReInit
+ * -----------------------------------------------------------------
+ * CVBBDPrecReInit re-initializes the BBDPRE module when solving a
+ * sequence of problems of the same size with CVSPGMR/CVBBDPRE,
+ * provided there is no change in Nlocal, mukeep, or mlkeep.
+ * After solving one problem, and after calling CVodeReInit to
+ * re-initialize the integrator for a subsequent problem, call
+ * CVBBDPrecReInit.  Then call CVSpgmrSet* functions if necessary
+ * for any changes to CVSpgmr parameters, before calling CVode.
+ *
+ * The first argument to CVBBDPrecReInit must be the pointer pdata
+ * that was returned by CVBBDPrecAlloc.  All other arguments have
+ * the same names and meanings as those of CVBBDPrecAlloc.
+ *
+ * The return value of CVBBDPrecReInit is CV_SUCCESS, indicating
+ * success, or CV_PDATA_NULL if bbd_data was NULL.
+ * -----------------------------------------------------------------
+ */
+
+int CVBBDPrecReInit(void *bbd_data, long int mudq, long int mldq,
+                    realtype dqrely, CVLocalFn gloc, CVCommFn cfn);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBBDPrecFree
+ * -----------------------------------------------------------------
+ * CVBBDPrecFree frees the memory block bbd_data allocated by the
+ * call to CVBBDAlloc.
+ * -----------------------------------------------------------------
+ */
+
+void CVBBDPrecFree(void *bbd_data);
+
+/*
+ * -----------------------------------------------------------------
+ * BBDPRE optional output extraction routines
+ * -----------------------------------------------------------------
+ * CVBBDPrecGetWorkSpace returns the BBDPRE real and integer workspace
+ *                       sizes.
+ * CVBBDPrecGetNumGfnEvals returns the number of calls to gfn.
+ *
+ * The return value of CVBBDPrecGet* is one of:
+ *    CV_SUCCESS    if successful
+ *    CV_PDATA_NULL if the bbd_data memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVBBDPrecGetWorkSpace(void *bbd_data, long int *lenrwBBDP, long int *leniwBBDP);
+int CVBBDPrecGetNumGfnEvals(void *bbd_data, long int *ngevalsBBDP);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/include/cvdense.h b/Win32/WinCVODE/sundials/cvode/include/cvdense.h
new file mode 100644
index 0000000..272cd12
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/include/cvdense.h
@@ -0,0 +1,192 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:24:34 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the CVODE/CVODES dense linear
+ * solver, CVDENSE.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVDENSE_H
+#define _CVDENSE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "dense.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+#include "WinCVODE.h"
+
+/*
+ * -----------------------------------------------------------------
+ * CVDENSE solver constants
+ * -----------------------------------------------------------------
+ * CVD_MSBJ : maximum number of steps between dense Jacobian
+ *            evaluations
+ *
+ * CVD_DGMAX : maximum change in gamma between dense Jacobian
+ *             evaluations
+ * -----------------------------------------------------------------
+ */
+
+#define CVD_MSBJ  50
+#define CVD_DGMAX RCONST(0.2)
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVDenseJacFn
+ * -----------------------------------------------------------------
+ * A dense Jacobian approximation function Jac must have the
+ * prototype given below. Its parameters are:
+ *
+ * N is the problem size.
+ *
+ * J is the dense matrix (of type DenseMat) that will be loaded
+ * by a CVDenseJacFn with an approximation to the Jacobian matrix
+ * J = (df_i/dy_j) at the point (t,y).
+ * J is preset to zero, so only the nonzero elements need to be
+ * loaded. Two efficient ways to load J are:
+ *
+ * (1) (with macros - no explicit data structure references)
+ *     for (j=0; j < n; j++) {
+ *       col_j = DENSE_COL(J,j);
+ *       for (i=0; i < n; i++) {
+ *         generate J_ij = the (i,j)th Jacobian element
+ *         col_j[i] = J_ij;
+ *       }
+ *     }
+ *
+ * (2) (without macros - explicit data structure references)
+ *     for (j=0; j < n; j++) {
+ *       col_j = (J->data)[j];
+ *       for (i=0; i < n; i++) {
+ *         generate J_ij = the (i,j)th Jacobian element
+ *         col_j[i] = J_ij;
+ *       }
+ *     }
+ *
+ * The DENSE_ELEM(A,i,j) macro is appropriate for use in small
+ * problems in which efficiency of access is NOT a major concern.
+ *
+ * t is the current value of the independent variable.
+ *
+ * y is the current value of the dependent variable vector,
+ *   namely the predicted value of y(t).
+ *
+ * fy is the vector f(t,y).
+ *
+ * jac_data is a pointer to user data - the same as the jac_data
+ *          parameter passed to CVDense.
+ *
+ * NOTE: If the user's Jacobian routine needs other quantities,
+ *       they are accessible as follows: hcur (the current stepsize)
+ *       and ewt (the error weight vector) are accessible through
+ *       CVodeGetCurrentStep and CVodeGetErrWeights, respectively
+ *       (see cvode.h). The unit roundoff is available as
+ *       UNIT_ROUNDOFF defined in sundialstypes.h.
+ *
+ * tmp1, tmp2, and tmp3 are pointers to memory allocated for
+ * vectors of length N which can be used by a CVDenseJacFn
+ * as temporary storage or work space.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVDenseJacFn)(long int N, DenseMat J, realtype t,
+                             N_Vector y, N_Vector fy, void *jac_data,
+                             N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVDense
+ * -----------------------------------------------------------------
+ * A call to the CVDense function links the main integrator with
+ * the CVDENSE linear solver.
+ *
+ * cvode_mem is the pointer to the integrator memory returned by
+ *           CVodeCreate.
+ *
+ * N is the size of the ODE system.
+ *
+ * The return value of CVDense is one of:
+ *    CVDENSE_SUCCESS   if successful
+ *    CVDENSE_MEM_NULL  if the cvode memory was NULL
+ *    CVDENSE_MEM_FAIL  if there was a memory allocation failure
+ *    CVDENSE_ILL_INPUT if a required vector operation is missing
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVDense(void *cvode_mem, long int N);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional inputs to the CVDENSE linear solver
+ * -----------------------------------------------------------------
+ *
+ * CVDenseSetJacFn specifies the dense Jacobian approximation
+ *                 routine to be used. A user-supplied djac routine
+ *                 must be of type CVDenseJacFn. By default, a
+ *                 difference quotient routine CVDenseDQJac, supplied
+ *                 with this solver is used.                     
+ *                 It also specifies a pointer to user data which is
+ *                 passed to the djac routine every time it is called.
+ *
+ * The return value of CVDenseSet* is one of:
+ *    CVDENSE_SUCCESS   if successful
+ *    CVDENSE_MEM_NULL  if the cvode memory was NULL
+ *    CVDENSE_LMEM_NULL if the cvdense memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVDenseSetJacFn(void *cvode_mem, CVDenseJacFn djac, void *jac_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional outputs from the CVDENSE linear solver
+ * -----------------------------------------------------------------
+ *
+ * CVDenseGetWorkSpace returns the real and integer workspace used
+ *                     by CVDENSE.
+ * CVDenseGetNumJacEvals returns the number of calls made to the
+ *                       Jacobian evaluation routine djac.
+ * CVDenseGetNumRhsEvals returns the number of calls to the user
+ *                       f routine due to finite difference Jacobian
+ *                       evaluation.
+ * CVDenseGetLastFlag returns the last error flag set by any of
+ *                    the CVDENSE interface functions.
+ *
+ * The return value of CVDenseGet* is one of:
+ *    CVDENSE_SUCCESS   if successful
+ *    CVDENSE_MEM_NULL  if the cvode memory was NULL
+ *    CVDENSE_LMEM_NULL if the cvdense memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVDenseGetWorkSpace(void *cvode_mem, long int *lenrwD, long int *leniwD);
+WINCVODE_API int CVDenseGetNumJacEvals(void *cvode_mem, long int *njevalsD);
+int CVDenseGetNumRhsEvals(void *cvode_mem, long int *nfevalsD);
+int CVDenseGetLastFlag(void *cvode_mem, int *flag);
+
+/* CVDENSE return values */
+
+#define CVDENSE_SUCCESS    0
+#define CVDENSE_MEM_NULL  -1
+#define CVDENSE_LMEM_NULL -2
+#define CVDENSE_ILL_INPUT -3
+#define CVDENSE_MEM_FAIL  -4
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/include/cvdiag.h b/Win32/WinCVODE/sundials/cvode/include/cvdiag.h
new file mode 100644
index 0000000..7f553b3
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/include/cvdiag.h
@@ -0,0 +1,91 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:24:34 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodest/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the CVODE/CVODES diagonal linear
+ * solver, CVDIAG.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVDIAG_H
+#define _CVDIAG_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVDiag
+ * -----------------------------------------------------------------
+ * A call to the CVDiag function links the main integrator with
+ * the CVDIAG linear solver.
+ *
+ * cvode_mem is the pointer to the integrator memory returned by
+ *           CVodeCreate.
+ *
+ * The return value of CVDiag is one of:
+ *    CVDIAG_SUCCESS   if successful
+ *    CVDIAG_MEM_NULL  if the cvode memory was NULL
+ *    CVDIAG_MEM_FAIL  if there was a memory allocation failure
+ *    CVDIAG_ILL_INPUT if a required vector operation is missing
+ * -----------------------------------------------------------------
+ */
+
+int CVDiag(void *cvode_mem);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional outputs from the CVDIAG linear solver
+ * -----------------------------------------------------------------
+ *
+ * CVDiagGetWorkSpace returns the real and integer workspace used
+ *                    by CVDIAG.
+ * CVDiagGetNumRhsEvals returns the number of calls to the user
+ *                      f routine due to finite difference Jacobian
+ *                      evaluation.
+ *                      Note: The number of diagonal approximate
+ *                      Jacobians formed is equal to the number of
+ *                      CVDiagSetup calls. This number is available
+ *                      through CVodeGetNumLinSolvSetups.
+ * CVDiagGetLastFlag returns the last error flag set by any of
+ *                   the CVDIAG interface functions.
+ *
+ * The return value of CVDiagGet* is one of:
+ *    CVDIAG_SUCCESS   if successful
+ *    CVDIAG_MEM_NULL  if the cvode memory was NULL
+ *    CVDIAG_LMEM_NULL if the cvdiag memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVDiagGetWorkSpace(void *cvode_mem, long int *lenrwDI, long int *leniwDI);
+int CVDiagGetNumRhsEvals(void *cvode_mem, long int *nfevalsDI);
+int CVDiagGetLastFlag(void *cvode_mem, int *flag);
+
+#define CVDIAG_SUCCESS    0
+#define CVDIAG_MEM_NULL  -1
+#define CVDIAG_LMEM_NULL -2
+#define CVDIAG_ILL_INPUT -3
+#define CVDIAG_MEM_FAIL  -4
+
+#define CVDIAG_INV_FAIL   1
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/include/cvode.h b/Win32/WinCVODE/sundials/cvode/include/cvode.h
new file mode 100644
index 0000000..7c1eefd
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/include/cvode.h
@@ -0,0 +1,873 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:24:34 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh, Radu Serban
+ *                and Dan Shumaker @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the interface file for the main CVODE integrator.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVODE_H
+#define _CVODE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "nvector.h"
+#include "sundialstypes.h"
+#include "WinCVODE.h"
+
+/*
+ * -----------------------------------------------------------------
+ * CVODE is used to solve numerically the ordinary initial value
+ * problem:
+ *
+ *                 y' = f(t,y),
+ *                 y(t0) = y0,
+ *
+ * where t0, y0 in R^N, and f: R x R^N -> R^N are given.
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * Enumerations for inputs to CVodeCreate, CVodeMalloc,
+ * CVodeReInit, and CVode.
+ * -----------------------------------------------------------------
+ * Symbolic constants for the lmm, iter, and itol input
+ * parameters to CVodeMalloc and CVodeReInit, as well as the
+ * input parameter itask to CVode, are given below.
+ *
+ * lmm:   The user of the CVODE package specifies whether to use the
+ *        CV_ADAMS (Adams-Moulton) or CV_BDF (Backward Differentiation
+ *        Formula) linear multistep method. The BDF method is
+ *        recommended for stiff problems, and the CV_ADAMS method is
+ *        recommended for nonstiff problems.
+ *
+ * iter:  At each internal time step, a nonlinear equation must
+ *        be solved. The user can specify either CV_FUNCTIONAL
+ *        iteration, which does not require linear algebra, or a
+ *        CV_NEWTON iteration, which requires the solution of linear
+ *        systems. In the CV_NEWTON case, the user also specifies a
+ *        CVODE linear solver. CV_NEWTON is recommended in case of
+ *        stiff problems.
+ *
+ * itol:  This parameter specifies the relative and absolute
+ *        tolerance types to be used. The CV_SS tolerance type means
+ *        a scalar relative and absolute tolerance. The CV_SV
+ *        tolerance type means a scalar relative tolerance and a
+ *        vector absolute tolerance (a potentially different
+ *        absolute tolerance for each vector component). The CV_WF
+ *        tolerance type means that the user provides a function
+ *        (of type CVEwtFn) to set the error weight vector.
+ *
+ * itask: The itask input parameter to CVode indicates the job
+ *        of the solver for the next user step. The CV_NORMAL
+ *        itask is to have the solver take internal steps until
+ *        it has reached or just passed the user specified tout
+ *        parameter. The solver then interpolates in order to
+ *        return an approximate value of y(tout). The CV_ONE_STEP
+ *        option tells the solver to just take one internal step
+ *        and return the solution at the point reached by that
+ *        step. The CV_NORMAL_TSTOP and CV_ONE_STEP_TSTOP modes are
+ *        similar to CV_NORMAL and CV_ONE_STEP, respectively, except
+ *        that the integration never proceeds past the value
+ *        tstop (specified through the routine CVodeSetStopTime).
+ * -----------------------------------------------------------------
+ */
+
+/* lmm */
+#define CV_ADAMS 1
+#define CV_BDF   2
+
+/* iter */
+#define CV_FUNCTIONAL 1
+#define CV_NEWTON     2
+
+/* itol */
+#define CV_SS 1
+#define CV_SV 2
+#define CV_WF 3
+
+/* itask */
+#define CV_NORMAL         1
+#define CV_ONE_STEP       2
+#define CV_NORMAL_TSTOP   3
+#define CV_ONE_STEP_TSTOP 4
+
+/*
+ * =================================================================
+ *              F U N C T I O N   T Y P E S
+ * =================================================================
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVRhsFn
+ * -----------------------------------------------------------------
+ * The f function which defines the right hand side of the ODE
+ * system y' = f(t,y) must have type CVRhsFn.
+ * f takes as input the independent variable value t, and the
+ * dependent variable vector y.  It stores the result of f(t,y)
+ * in the vector ydot.  The y and ydot arguments are of type
+ * N_Vector.
+ * (Allocation of memory for ydot is handled within CVODE)
+ * The f_data parameter is the same as the f_data
+ * parameter set by the user through the CVodeSetFdata routine.
+ * This user-supplied pointer is passed to the user's f function
+ * every time it is called.
+ * A CVRhsFn f does not have a return value.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVRhsFn)(realtype t, N_Vector y,
+                        N_Vector ydot, void *f_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVRootFn
+ * -----------------------------------------------------------------
+ * A function g, which defines a set of functions g_i(t,y) whose
+ * roots are sought during the integration, must have type CVRootFn.
+ * The function g takes as input the independent variable value
+ * t, and the dependent variable vector y.  It stores the nrtfn
+ * values g_i(t,y) in the realtype array gout.
+ * (Allocation of memory for gout is handled within CVODE.)
+ * The g_data parameter is the same as that passed by the user
+ * to the CVodeSetGdata routine.  This user-supplied pointer is
+ * passed to the user's g function every time it is called.
+ * A CVRootFn g does not have a return value.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVRootFn)(realtype t, N_Vector y, realtype *gout,
+                         void *g_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVEwtFn
+ * -----------------------------------------------------------------
+ * A function e, which sets the error weight vector ewt, must have
+ * type CVEwtFn.
+ * The function e takes as input the current dependent variable y.
+ * It must set the vector of error weights used in the WRMS norm:
+ * 
+ *   ||y||_WRMS = sqrt [ 1/N * sum ( ewt_i * y_i)^2 ]
+ *
+ * Typically, the vector ewt has components:
+ * 
+ *   ewt_i = 1 / (reltol * |y_i| + abstol_i)
+ *
+ * The e_data parameter is the same as that passed by the user
+ * to the CVodeSetEdata routine.  This user-supplied pointer is
+ * passed to the user's e function every time it is called.
+ * A CVEwtFn e must return 0 if the error weight vector has been
+ * successfuly set and a non-zero value otherwise.
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*CVEwtFn)(N_Vector y, N_Vector ewt, void *e_data);
+
+/*
+ * =================================================================
+ *          U S E R - C A L L A B L E   R O U T I N E S
+ * =================================================================
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeCreate
+ * -----------------------------------------------------------------
+ * CVodeCreate creates an internal memory block for a problem to
+ * be solved by CVODE.
+ *
+ * lmm   is the type of linear multistep method to be used.
+ *       The legal values are CV_ADAMS and CV_BDF (see previous
+ *       description).
+ *
+ * iter  is the type of iteration used to solve the nonlinear
+ *       system that arises during each internal time step.
+ *       The legal values are CV_FUNCTIONAL and CV_NEWTON.
+ *
+ * If successful, CVodeCreate returns a pointer to initialized
+ * problem memory. This pointer should be passed to CVodeMalloc.
+ * If an initialization error occurs, CVodeCreate prints an error
+ * message to standard err and returns NULL.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API void *CVodeCreate(int lmm, int iter);
+
+/*
+ * -----------------------------------------------------------------
+ * Integrator optional input specification functions
+ * -----------------------------------------------------------------
+ * The following functions can be called to set optional inputs
+ * to values other than the defaults given below:
+ *
+ * Function                |  Optional input / [ default value ]
+ * -----------------------------------------------------------------
+ *                         |
+ * CVodeSetErrFile         | the file pointer for an error file
+ *                         | where all CVODE warning and error
+ *                         | messages will be written. This parameter
+ *                         | can be stdout (standard output), stderr
+ *                         | (standard error), a file pointer
+ *                         | (corresponding to a user error file
+ *                         | opened for writing) returned by fopen.
+ *                         | If not called, then all messages will
+ *                         | be written to standard output.
+ *                         | [stderr]
+ *                         |
+ * CVodeSetFdata           | a pointer to user data that will be
+ *                         | passed to the user's f function every
+ *                         | time f is called.
+ *                         | [NULL]
+ *                         |
+ * CVodeSetEwtFn           | user-provide EwtSet function e and 
+ *                         | a pointer to user data that will be
+ *                         | passed to the user's e function every
+ *                         | time e is called.
+ *                         | [NULL]
+ *                         | [NULL]
+ *                         |
+ * CVodeSetMaxOrd          | maximum lmm order to be used by the
+ *                         | solver.
+ *                         | [12 for Adams , 5 for BDF]
+ *                         |
+ * CVodeSetMaxNumSteps     | maximum number of internal steps to be
+ *                         | taken by the solver in its attempt to
+ *                         | reach tout.
+ *                         | [500]
+ *                         |
+ * CVodeSetMaxHnilWarns    | maximum number of warning messages
+ *                         | issued by the solver that t+h==t on the
+ *                         | next internal step. A value of -1 means
+ *                         | no such messages are issued.
+ *                         | [10]
+ *                         |
+ * CVodeSetStabLimDet      | flag to turn on/off stability limit
+ *                         | detection (TRUE = on, FALSE = off).
+ *                         | When BDF is used and order is 3 or
+ *                         | greater, CVsldet is called to detect
+ *                         | stability limit.  If limit is detected,
+ *                         | the order is reduced.
+ *                         | [FALSE]
+ *                         |
+ * CVodeSetInitStep        | initial step size.
+ *                         | [estimated by CVODE]
+ *                         |
+ * CVodeSetMinStep         | minimum absolute value of step size
+ *                         | allowed.
+ *                         | [0.0]
+ *                         |
+ * CVodeSetMaxStep         | maximum absolute value of step size
+ *                         | allowed.
+ *                         | [infinity]
+ *                         |
+ * CVodeSetStopTime        | the independent variable value past
+ *                         | which the solution is not to proceed.
+ *                         | [infinity]
+ *                         |
+ * CVodeSetMaxErrTestFails | Maximum number of error test failures
+ *                         | in attempting one step.
+ *                         | [7]
+ *                         |
+ * CVodeSetMaxNonlinIters  | Maximum number of nonlinear solver
+ *                         | iterations at one solution.
+ *                         | [3]
+ *                         |
+ * CVodeSetMaxConvFails    | Maximum number of convergence failures
+ *                         | allowed in attempting one step.
+ *                         | [10]
+ *                         |
+ * CVodeSetNonlinConvCoef  | Coefficient in the nonlinear
+ *                         | convergence test.
+ *                         | [0.1]
+ *                         |
+ * -----------------------------------------------------------------
+ *                         |
+ * CVodeSetIterType        | Changes the current nonlinear iteration
+ *                         | type.
+ *                         | [set by CVodecreate]
+ *                         |
+ * CVodeSetTolerances      | Changes the integration tolerances
+ *                         | between calls to CVode().
+ *                         | [set by CVodeMalloc/CVodeReInit]
+ *                         |
+ * -----------------------------------------------------------------
+ * Return flag:
+ *   CV_SUCCESS   if successful
+ *   CV_MEM_NULL  if the cvode memory is NULL
+ *   CV_ILL_INPUT if an argument has an illegal value
+ * -----------------------------------------------------------------
+ */
+
+int CVodeSetErrFile(void *cvode_mem, FILE *errfp);
+WINCVODE_API int CVodeSetFdata(void *cvode_mem, void *f_data);
+int CVodeSetEwtFn(void *cvode_mem, CVEwtFn efun, void *e_data);
+int CVodeSetMaxOrd(void *cvode_mem, int maxord);
+WINCVODE_API int CVodeSetMaxNumSteps(void *cvode_mem, long int mxsteps);
+int CVodeSetMaxHnilWarns(void *cvode_mem, int mxhnil);
+int CVodeSetStabLimDet(void *cvode_mem, booleantype stldet);
+int CVodeSetInitStep(void *cvode_mem, realtype hin);
+int CVodeSetMinStep(void *cvode_mem, realtype hmin);
+int CVodeSetMaxStep(void *cvode_mem, realtype hmax);
+int CVodeSetStopTime(void *cvode_mem, realtype tstop);
+int CVodeSetMaxErrTestFails(void *cvode_mem, int maxnef);
+int CVodeSetMaxNonlinIters(void *cvode_mem, int maxcor);
+int CVodeSetMaxConvFails(void *cvode_mem, int maxncf);
+int CVodeSetNonlinConvCoef(void *cvode_mem, realtype nlscoef);
+
+int CVodeSetIterType(void *cvode_mem, int iter);
+int CVodeSetTolerances(void *cvode_mem,
+                       int itol, realtype reltol, void *abstol);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeMalloc
+ * -----------------------------------------------------------------
+ * CVodeMalloc allocates and initializes memory for a problem to
+ * to be solved by CVODE.
+ *
+ * cvode_mem is pointer to CVODE memory returned by CVodeCreate.
+ *
+ * f       is the name of the C function defining the right-hand
+ *         side function in y' = f(t,y).
+ *
+ * t0      is the initial value of t.
+ *
+ * y0      is the initial condition vector y(t0).
+ *
+ * itol    is the type of tolerances to be used.
+ *         The legal values are:
+ *            CV_SS (scalar relative and absolute tolerances),
+ *            CV_SV (scalar relative tolerance and vector
+ *                absolute tolerance).
+ *            CV_WF (indicates that the user will provide a
+ *                function to evaluate the error weights.
+ *                In this case, reltol and abstol are ignored.)
+ *
+ * reltol  is the relative tolerance scalar.
+ *
+ * abstol  is a pointer to the absolute tolerance scalar or
+ *         an N_Vector of absolute tolerances.
+ *
+ * The parameters itol, reltol, and abstol define a vector of
+ * error weights, ewt, with components
+ *   ewt[i] = 1/(reltol*abs(y[i]) + abstol)   (if itol = CV_SS), or
+ *   ewt[i] = 1/(reltol*abs(y[i]) + abstol[i])   (if itol = CV_SV).
+ * This vector is used in all error and convergence tests, which
+ * use a weighted RMS norm on all error-like vectors v:
+ *    WRMSnorm(v) = sqrt( (1/N) sum(i=1..N) (v[i]*ewt[i])^2 ),
+ * where N is the problem dimension.
+ *
+ * Return flag:
+ *  CV_SUCCESS if successful
+ *  CV_MEM_NULL if the cvode memory was NULL
+ *  CV_MEM_FAIL if a memory allocation failed
+ *  CV_ILL_INPUT f an argument has an illegal value.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVodeMalloc(void *cvode_mem, CVRhsFn f, realtype t0, N_Vector y0,
+                int itol, realtype reltol, void *abstol);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeReInit
+ * -----------------------------------------------------------------
+ * CVodeReInit re-initializes CVode for the solution of a problem,
+ * where a prior call to CVodeMalloc has been made with the same
+ * problem size N. CVodeReInit performs the same input checking
+ * and initializations that CVodeMalloc does.
+ * But it does no memory allocation, assuming that the existing
+ * internal memory is sufficient for the new problem.
+ *
+ * The use of CVodeReInit requires that the maximum method order,
+ * maxord, is no larger for the new problem than for the problem
+ * specified in the last call to CVodeMalloc.  This condition is
+ * automatically fulfilled if the multistep method parameter lmm
+ * is unchanged (or changed from CV_ADAMS to CV_BDF) and the default
+ * value for maxord is specified.
+ *
+ * All of the arguments to CVodeReInit have names and meanings
+ * identical to those of CVodeMalloc.
+ *
+ * The return value of CVodeReInit is equal to CV_SUCCESS = 0 if
+ * there were no errors; otherwise it is a negative int equal to:
+ *   CV_MEM_NULL      indicating cvode_mem was NULL (i.e.,
+ *                    CVodeCreate has not been called).
+ *   CV_NO_MALLOC     indicating that cvode_mem has not been
+ *                    allocated (i.e., CVodeMalloc has not been
+ *                    called).
+ *   CV_ILL_INPUT     indicating an input argument was illegal
+ *                    (including an attempt to increase maxord).
+ * In case of an error return, an error message is also printed.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeReInit(void *cvode_mem, CVRhsFn f, realtype t0, N_Vector y0,
+                int itol, realtype reltol, void *abstol);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeRootInit
+ * -----------------------------------------------------------------
+ * CVodeRootInit initializes a rootfinding problem to be solved
+ * during the integration of the ODE system.  It must be called
+ * after CVodeCreate, and before CVode.  The arguments are:
+ *
+ * cvode_mem = pointer to CVODE memory returned by CVodeCreate.
+ *
+ * nrtfn     = number of functions g_i, an int >= 0.
+ *
+ * g         = name of user-supplied function, of type CVRootFn,
+ *             defining the functions g_i whose roots are sought.
+ * g_data    = a pointer to user data that will be passed to the 
+ *             user's g function every time g is called.
+ *
+ * If a new problem is to be solved with a call to CVodeReInit,
+ * where the new problem has no root functions but the prior one
+ * did, then call CVodeRootInit with nrtfn = 0.
+ *
+ * The return value of CVodeRootInit is CV_SUCCESS = 0 if there were
+ * no errors; otherwise it is a negative int equal to:
+ *   CV_MEM_NULL     indicating cvode_mem was NULL, or
+ *   CV_MEM_FAIL     indicating a memory allocation failed.
+ *                    (including an attempt to increase maxord).
+ *   CV_RTFUNC_NULL  indicating nrtfn > 0 but g = NULL.
+ * In case of an error return, an error message is also printed.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeRootInit(void *cvode_mem, int nrtfn, CVRootFn g, void *g_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVode
+ * -----------------------------------------------------------------
+ * CVode integrates the ODE over an interval in t.
+ * If itask is CV_NORMAL, then the solver integrates from its
+ * current internal t value to a point at or beyond tout, then
+ * interpolates to t = tout and returns y(tout) in the user-
+ * allocated vector yout. If itask is CV_ONE_STEP, then the solver
+ * takes one internal time step and returns in yout the value of
+ * y at the new internal time. In this case, tout is used only
+ * during the first call to CVode to determine the direction of
+ * integration and the rough scale of the t variable. In either
+ * case, the time reached by the solver is placed in (*tret). The
+ * user is responsible for allocating the memory for this value.
+ *
+ * cvode_mem is the pointer to CVODE memory returned by
+ *           CVodeCreate.
+ *
+ * tout  is the next time at which a computed solution is desired.
+ *
+ * yout  is the computed solution vector. In CV_NORMAL mode with no
+ *       errors and no roots found, yout=y(tout).
+ *
+ * tret  is a pointer to a real location. CVode sets (*tret) to
+ *       the time reached by the solver and returns
+ *       yout=y(*tret).
+ *
+ * itask is CV_NORMAL, CV_ONE_STEP, CV_NORMAL_TSTOP, or CV_ONE_STEP_TSTOP.
+ *       These four modes are described above.
+ *
+ * Here is a brief description of each return value:
+ *
+ * CV_SUCCESS:      CVode succeeded and no roots were found.
+ *
+ * CV_ROOT_RETURN:  CVode succeeded, and found one or more roots.
+ *                  If nrtfn > 1, call CVodeGetRootInfo to see
+ *                  which g_i were found to have a root at (*tret).
+ *
+ * CV_TSTOP_RETURN: CVode succeeded and returned at tstop.
+ *
+ * CV_MEM_NULL:     The cvode_mem argument was NULL.
+ *
+ * CV_NO_MALLOC:    cvode_mem was not allocated.
+ *
+ * CV_ILL_INPUT:    One of the inputs to CVode is illegal. This
+ *                  includes the situation when a component of the
+ *                  error weight vectors becomes < 0 during
+ *                  internal time-stepping.  It also includes the
+ *                  situation where a root of one of the root
+ *                  functions was found both at t0 and very near t0.
+ *                  The ILL_INPUT flag will also be returned if the
+ *                  linear solver routine CV--- (called by the user
+ *                  after calling CVodeCreate) failed to set one of
+ *                  the linear solver-related fields in cvode_mem or
+ *                  if the linear solver's init routine failed. In
+ *                  any case, the user should see the printed
+ *                  error message for more details.
+ *
+ * CV_TOO_MUCH_WORK: The solver took mxstep internal steps but
+ *                  could not reach tout. The default value for
+ *                  mxstep is MXSTEP_DEFAULT = 500.
+ *
+ * CV_TOO_MUCH_ACC: The solver could not satisfy the accuracy
+ *                  demanded by the user for some internal step.
+ *
+ * CV_ERR_FAILURE:  Error test failures occurred too many times
+ *                  (= MXNEF = 7) during one internal time step or
+ *                  occurred with |h| = hmin.
+ *
+ * CV_CONV_FAILURE: Convergence test failures occurred too many
+ *                  times (= MXNCF = 10) during one internal time
+ *                  step or occurred with |h| = hmin.
+ *
+ * CV_LSETUP_FAIL:  The linear solver's setup routine failed in an
+ *                  unrecoverable manner.
+ *
+ * CV_LSOLVE_FAIL:  The linear solver's solve routine failed in an
+ *                  unrecoverable manner.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVode(void *cvode_mem, realtype tout, N_Vector yout,
+          realtype *tret, int itask);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeGetDky
+ * -----------------------------------------------------------------
+ * CVodeGetDky computes the kth derivative of the y function at
+ * time t, where tn-hu <= t <= tn, tn denotes the current
+ * internal time reached, and hu is the last internal step size
+ * successfully used by the solver. The user may request
+ * k=0, 1, ..., qu, where qu is the order last used. The
+ * derivative vector is returned in dky. This vector must be
+ * allocated by the caller. It is only legal to call this
+ * function after a successful return from CVode.
+ *
+ * cvode_mem is the pointer to CVODE memory returned by
+ *           CVodeCreate.
+ *
+ * t   is the time at which the kth derivative of y is evaluated.
+ *     The legal range for t is [tn-hu,tn] as described above.
+ *
+ * k   is the order of the derivative of y to be computed. The
+ *     legal range for k is [0,qu] as described above.
+ *
+ * dky is the output derivative vector [((d/dy)^k)y](t).
+ *
+ * The return value for CVodeGetDky is one of:
+ *
+ *   CV_SUCCESS:  CVodeGetDky succeeded.
+ *
+ *   CV_BAD_K:    k is not in the range 0, 1, ..., qu.
+ *
+ *   CV_BAD_T:    t is not in the interval [tn-hu,tn].
+ *
+ *   CV_BAD_DKY:  The dky argument was NULL.
+ *
+ *   CV_MEM_NULL: The cvode_mem argument was NULL.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetDky(void *cvode_mem, realtype t, int k, N_Vector dky);
+
+/*
+ * -----------------------------------------------------------------
+ * Integrator optional output extraction functions
+ * -----------------------------------------------------------------
+ * The following functions can be called to get optional outputs
+ * and statistics related to the main integrator.
+ * -----------------------------------------------------------------
+ * CVodeGetWorkSpace returns the CVODE real and integer workspaces
+ * CVodeGetNumSteps returns the cumulative number of internal
+ *                  steps taken by the solver
+ * CVodeGetNumRhsEvals returns the number of calls to the user's
+ *                     f function
+ * CVodeGetNumLinSolvSetups returns the number of calls made to
+ *                          the linear solver's setup routine
+ * CVodeGetNumErrTestFails returns the number of local error test
+ *                         failures that have occured
+ * CVodeGetLastOrder returns the order used during the last
+ *                   internal step
+ * CVodeGetCurrentOrder returns the order to be used on the next
+ *                      internal step
+ * CVodeGetNumStabLimOrderReds returns the number of order
+ *                             reductions due to stability limit
+ *                             detection
+ * CVodeGetActualInitStep returns the actual initial step size
+ *                        used by CVODE
+ * CVodeGetLastStep returns the step size for the last internal
+ *                  step
+ * CVodeGetCurrentStep returns the step size to be attempted on
+ *                     the next internal step
+ * CVodeGetCurrentTime returns the current internal time reached
+ *                     by the solver
+ * CVodeGetTolScaleFactor returns a suggested factor by which the
+ *                        user's tolerances should be scaled when
+ *                        too much accuracy has been requested for
+ *                        some internal step
+ * CVodeGetErrWeights returns the state error weight vector.
+ *                    The user must allocate space for ewt.
+ * CVodeGetEstLocalErrors returns the vector of estimated local
+ *                        errors. The user must allocate space
+ *                        for ele.
+ * CVodeGetNumGEvals returns the number of calls to the user's
+ *                   g function (for rootfinding)
+ * CVodeGetRootInfo returns the indices for which g_i was found to 
+ *                  have a root. The user must allocate space for 
+ *                  rootsfound. For i = 0 ... nrtfn-1, 
+ *                  rootsfound[i] = 1 if g_i has a root, and = 0 if not.
+ *
+ * CVodeGet* return values:
+ *   CV_SUCCESS   if succesful
+ *   CV_MEM_NULL  if the cvode memory was NULL
+ *   CV_NO_SLDET  if stability limit was not turned on
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetWorkSpace(void *cvode_mem, long int *lenrw, long int *leniw);
+WINCVODE_API int CVodeGetNumSteps(void *cvode_mem, long int *nsteps);
+WINCVODE_API int CVodeGetNumRhsEvals(void *cvode_mem, long int *nfevals);
+WINCVODE_API int CVodeGetNumLinSolvSetups(void *cvode_mem, long int *nlinsetups);
+WINCVODE_API int CVodeGetNumErrTestFails(void *cvode_mem, long int *netfails);
+int CVodeGetLastOrder(void *cvode_mem, int *qlast);
+int CVodeGetCurrentOrder(void *cvode_mem, int *qcur);
+int CVodeGetNumStabLimOrderReds(void *cvode_mem, long int *nslred);
+int CVodeGetActualInitStep(void *cvode_mem, realtype *hinused);
+int CVodeGetLastStep(void *cvode_mem, realtype *hlast);
+int CVodeGetCurrentStep(void *cvode_mem, realtype *hcur);
+int CVodeGetCurrentTime(void *cvode_mem, realtype *tcur);
+int CVodeGetTolScaleFactor(void *cvode_mem, realtype *tolsfac);
+int CVodeGetErrWeights(void *cvode_mem, N_Vector eweight);
+int CVodeGetEstLocalErrors(void *cvode_mem, N_Vector ele);
+int CVodeGetNumGEvals(void *cvode_mem, long int *ngevals);
+int CVodeGetRootInfo(void *cvode_mem, int *rootsfound);
+
+/*
+ * -----------------------------------------------------------------
+ * As a convenience, the following functions provides the
+ * optional outputs in one group.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetIntegratorStats(void *cvode_mem, long int *nsteps,
+                            long int *nfevals, long int *nlinsetups,
+                            long int *netfails, int *qlast,
+                            int *qcur, realtype *hinused, realtype *hlast,
+                            realtype *hcur, realtype *tcur);
+
+/*
+ * -----------------------------------------------------------------
+ * Nonlinear solver optional output extraction functions
+ * -----------------------------------------------------------------
+ * The following functions can be called to get optional outputs
+ * and statistics related to the nonlinear solver.
+ * -----------------------------------------------------------------
+ * CVodeGetNumNonlinSolvIters returns the number of nonlinear
+ *                            solver iterations performed.
+ * CVodeGetNumNonlinSolvConvFails returns the number of nonlinear
+ *                                convergence failures.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetNumNonlinSolvIters(void *cvode_mem, long int *nniters);
+int CVodeGetNumNonlinSolvConvFails(void *cvode_mem, long int *nncfails);
+
+/*
+ * -----------------------------------------------------------------
+ * As a convenience, the following function provides the
+ * optional outputs in a group.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVodeGetNonlinSolvStats(void *cvode_mem, long int *nniters,
+                            long int *nncfails);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeFree
+ * -----------------------------------------------------------------
+ * CVodeFree frees the problem memory cvode_mem allocated by
+ * CVodeCreate and CVodeMalloc.  Its only argument is the pointer
+ * cvode_mem returned by CVodeCreate.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API void CVodeFree(void *cvode_mem);
+
+/*
+ * ----------------------------------------
+ * CVODE return flags
+ * ----------------------------------------
+ */
+
+#define CV_SUCCESS        0
+#define CV_TSTOP_RETURN   1
+#define CV_ROOT_RETURN    2
+
+#define CV_MEM_NULL      -1
+#define CV_ILL_INPUT     -2
+#define CV_NO_MALLOC     -3
+#define CV_TOO_MUCH_WORK -4
+#define CV_TOO_MUCH_ACC  -5
+#define CV_ERR_FAILURE   -6
+#define CV_CONV_FAILURE  -7
+#define CV_LINIT_FAIL    -8
+#define CV_LSETUP_FAIL   -9
+#define CV_LSOLVE_FAIL   -10
+
+#define CV_MEM_FAIL      -11
+
+#define CV_RTFUNC_NULL   -12
+
+#define CV_NO_SLDET      -13
+#define CV_BAD_K         -14
+#define CV_BAD_T         -15
+#define CV_BAD_DKY       -16
+
+#define CV_PDATA_NULL    -17
+
+/*
+ * =================================================================
+ *     I N T E R F A C E   T O    L I N E A R   S O L V E R S
+ * =================================================================
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * Communication between CVODE and a CVODE Linear Solver
+ * -----------------------------------------------------------------
+ * convfail (input to cv_lsetup)
+ *
+ * CV_NO_FAILURES : Either this is the first cv_setup call for this
+ *                  step, or the local error test failed on the
+ *                  previous attempt at this step (but the Newton
+ *                  iteration converged).
+ *
+ * CV_FAIL_BAD_J  : This value is passed to cv_lsetup if
+ *
+ *                  (a) The previous Newton corrector iteration
+ *                      did not converge and the linear solver's
+ *                      setup routine indicated that its Jacobian-
+ *                      related data is not current
+ *                                   or
+ *                  (b) During the previous Newton corrector
+ *                      iteration, the linear solver's solve routine
+ *                      failed in a recoverable manner and the
+ *                      linear solver's setup routine indicated that
+ *                      its Jacobian-related data is not current.
+ *
+ * CV_FAIL_OTHER  : During the current internal step try, the
+ *                  previous Newton iteration failed to converge
+ *                  even though the linear solver was using current
+ *                  Jacobian-related data.
+ * -----------------------------------------------------------------
+ */
+
+/* Constants for convfail (input to cv_lsetup) */
+
+#define CV_NO_FAILURES 0
+#define CV_FAIL_BAD_J  1
+#define CV_FAIL_OTHER  2
+
+/*
+ * -----------------------------------------------------------------
+ * int (*cv_linit)(CVodeMem cv_mem);
+ * -----------------------------------------------------------------
+ * The purpose of cv_linit is to complete initializations for a
+ * specific linear solver, such as counters and statistics.
+ * An LInitFn should return 0 if it has successfully initialized the
+ * CVODE linear solver and a negative value otherwise.
+ * If an error does occur, an appropriate message should be sent to
+ * (cv_mem->errfp)
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * int (*cv_lsetup)(CVodeMem cv_mem, int convfail, N_Vector ypred,
+ *                 N_Vector fpred, booleantype *jcurPtr,
+ *                 N_Vector vtemp1, N_Vector vtemp2,
+ *                 N_Vector vtemp3);
+ * -----------------------------------------------------------------
+ * The job of cv_lsetup is to prepare the linear solver for
+ * subsequent calls to cv_lsolve. It may recompute Jacobian-
+ * related data is it deems necessary. Its parameters are as
+ * follows:
+ *
+ * cv_mem - problem memory pointer of type CVodeMem. See the big
+ *          typedef earlier in this file.
+ *
+ * convfail - a flag to indicate any problem that occurred during
+ *            the solution of the nonlinear equation on the
+ *            current time step for which the linear solver is
+ *            being used. This flag can be used to help decide
+ *            whether the Jacobian data kept by a CVODE linear
+ *            solver needs to be updated or not.
+ *            Its possible values have been documented above.
+ *
+ * ypred - the predicted y vector for the current CVODE internal
+ *         step.
+ *
+ * fpred - f(tn, ypred).
+ *
+ * jcurPtr - a pointer to a boolean to be filled in by cv_lsetup.
+ *           The function should set *jcurPtr=TRUE if its Jacobian
+ *           data is current after the call and should set
+ *           *jcurPtr=FALSE if its Jacobian data is not current.
+ *           Note: If cv_lsetup calls for re-evaluation of
+ *           Jacobian data (based on convfail and CVODE state
+ *           data), it should return *jcurPtr=TRUE always;
+ *           otherwise an infinite loop can result.
+ *
+ * vtemp1 - temporary N_Vector provided for use by cv_lsetup.
+ *
+ * vtemp3 - temporary N_Vector provided for use by cv_lsetup.
+ *
+ * vtemp3 - temporary N_Vector provided for use by cv_lsetup.
+ *
+ * The cv_lsetup routine should return 0 if successful, a positive
+ * value for a recoverable error, and a negative value for an
+ * unrecoverable error.
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * int (*cv_lsolve)(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+ *                  N_Vector ycur, N_Vector fcur);
+ * -----------------------------------------------------------------
+ * cv_lsolve must solve the linear equation P x = b, where
+ * P is some approximation to (I - gamma J), J = (df/dy)(tn,ycur)
+ * and the RHS vector b is input. The N-vector ycur contains
+ * the solver's current approximation to y(tn) and the vector
+ * fcur contains the N_Vector f(tn,ycur). The solution is to be
+ * returned in the vector b. cv_lsolve returns a positive value
+ * for a recoverable error and a negative value for an
+ * unrecoverable error. Success is indicated by a 0 return value.
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * void (*cv_lfree)(CVodeMem cv_mem);
+ * -----------------------------------------------------------------
+ * cv_lfree should free up any memory allocated by the linear
+ * solver. This routine is called once a problem has been
+ * completed and the linear solver is no longer needed.
+ * -----------------------------------------------------------------
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/include/cvspgmr.h b/Win32/WinCVODE/sundials/cvode/include/cvspgmr.h
new file mode 100644
index 0000000..9cf6480
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/include/cvspgmr.h
@@ -0,0 +1,376 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:24:34 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the CVODE/CVODES scaled,
+ * preconditioned GMRES linear solver, CVSPGMR.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVSPGMR_H
+#define _CVSPGMR_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "spgmr.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * CVSPGMR solver constants
+ * -----------------------------------------------------------------
+ * CVSPGMR_MAXL   : default value for the maximum Krylov
+ *                  dimension
+ *
+ * CVSPGMR_MSBPRE : maximum number of steps between
+ *                  preconditioner evaluations
+ *
+ * CVSPGMR_DGMAX  : maximum change in gamma between
+ *                  preconditioner evaluations
+ *
+ * CVSPGMR_DELT   : default value for factor by which the
+ *                  tolerance on the nonlinear iteration is
+ *                  multiplied to get a tolerance on the linear
+ *                  iteration
+ * -----------------------------------------------------------------
+ */
+
+#define CVSPGMR_MAXL   5
+#define CVSPGMR_MSBPRE 50
+#define CVSPGMR_DGMAX  RCONST(0.2)
+#define CVSPGMR_DELT   RCONST(0.05)
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVSpgmrPrecSetupFn
+ * -----------------------------------------------------------------
+ * The user-supplied preconditioner setup function PrecSetup and
+ * the user-supplied preconditioner solve function PrecSolve
+ * together must define left and right preconditoner matrices
+ * P1 and P2 (either of which may be trivial), such that the
+ * product P1*P2 is an approximation to the Newton matrix
+ * M = I - gamma*J.  Here J is the system Jacobian J = df/dy,
+ * and gamma is a scalar proportional to the integration step
+ * size h.  The solution of systems P z = r, with P = P1 or P2,
+ * is to be carried out by the PrecSolve function, and PrecSetup
+ * is to do any necessary setup operations.
+ *
+ * The user-supplied preconditioner setup function PrecSetup
+ * is to evaluate and preprocess any Jacobian-related data
+ * needed by the preconditioner solve function PrecSolve.
+ * This might include forming a crude approximate Jacobian,
+ * and performing an LU factorization on the resulting
+ * approximation to M.  This function will not be called in
+ * advance of every call to PrecSolve, but instead will be called
+ * only as often as necessary to achieve convergence within the
+ * Newton iteration.  If the PrecSolve function needs no
+ * preparation, the PrecSetup function can be NULL.
+ *
+ * For greater efficiency, the PrecSetup function may save
+ * Jacobian-related data and reuse it, rather than generating it
+ * from scratch.  In this case, it should use the input flag jok
+ * to decide whether to recompute the data, and set the output
+ * flag *jcurPtr accordingly.
+ *
+ * Each call to the PrecSetup function is preceded by a call to
+ * the RhsFn f with the same (t,y) arguments.  Thus the PrecSetup
+ * function can use any auxiliary data that is computed and
+ * saved by the f function and made accessible to PrecSetup.
+ *
+ * A function PrecSetup must have the prototype given below.
+ * Its parameters are as follows:
+ *
+ * t       is the current value of the independent variable.
+ *
+ * y       is the current value of the dependent variable vector,
+ *          namely the predicted value of y(t).
+ *
+ * fy      is the vector f(t,y).
+ *
+ * jok     is an input flag indicating whether Jacobian-related
+ *         data needs to be recomputed, as follows:
+ *           jok == FALSE means recompute Jacobian-related data
+ *                  from scratch.
+ *           jok == TRUE  means that Jacobian data, if saved from
+ *                  the previous PrecSetup call, can be reused
+ *                  (with the current value of gamma).
+ *         A Precset call with jok == TRUE can only occur after
+ *         a call with jok == FALSE.
+ *
+ * jcurPtr is a pointer to an output integer flag which is
+ *         to be set by PrecSetup as follows:
+ *         Set *jcurPtr = TRUE if Jacobian data was recomputed.
+ *         Set *jcurPtr = FALSE if Jacobian data was not recomputed,
+ *                        but saved data was reused.
+ *
+ * gamma   is the scalar appearing in the Newton matrix.
+ *
+ * P_data  is a pointer to user data - the same as the P_data
+ *         parameter passed to CVSpgmr.
+ *
+ * tmp1, tmp2, and tmp3 are pointers to memory allocated
+ *                      for N_Vectors which can be used by
+ *                      CVSpgmrPrecSetupFn as temporary storage or
+ *                      work space.
+ *
+ * NOTE: If the user's preconditioner needs other quantities,
+ *       they are accessible as follows: hcur (the current stepsize)
+ *       and ewt (the error weight vector) are accessible through
+ *       CVodeGetCurrentStep and CVodeGetErrWeights, respectively).
+ *       The unit roundoff is available as UNIT_ROUNDOFF defined in
+ *       sundialstypes.h.
+ *
+ * Returned value:
+ * The value to be returned by the PrecSetup function is a flag
+ * indicating whether it was successful.  This value should be
+ *   0   if successful,
+ *   > 0 for a recoverable error (step will be retried),
+ *   < 0 for an unrecoverable error (integration is halted).
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*CVSpgmrPrecSetupFn)(realtype t, N_Vector y, N_Vector fy,
+                                  booleantype jok, booleantype *jcurPtr,
+                                  realtype gamma, void *P_data,
+                                  N_Vector tmp1, N_Vector tmp2,
+                                  N_Vector tmp3);
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVSpgmrPrecSolveFn
+ * -----------------------------------------------------------------
+ * The user-supplied preconditioner solve function PrecSolve
+ * is to solve a linear system P z = r in which the matrix P is
+ * one of the preconditioner matrices P1 or P2, depending on the
+ * type of preconditioning chosen.
+ *
+ * A function PrecSolve must have the prototype given below.
+ * Its parameters are as follows:
+ *
+ * t      is the current value of the independent variable.
+ *
+ * y      is the current value of the dependent variable vector.
+ *
+ * fy     is the vector f(t,y).
+ *
+ * r      is the right-hand side vector of the linear system.
+ *
+ * z      is the output vector computed by PrecSolve.
+ *
+ * gamma  is the scalar appearing in the Newton matrix.
+ *
+ * delta  is an input tolerance for use by PSolve if it uses
+ *        an iterative method in its solution.  In that case,
+ *        the residual vector Res = r - P z of the system
+ *        should be made less than delta in weighted L2 norm,
+ *        i.e., sqrt [ Sum (Res[i]*ewt[i])^2 ] < delta.
+ *        Note: the error weight vector ewt can be obtained
+ *        through a call to the routine CVodeGetErrWeights.
+ *
+ * lr     is an input flag indicating whether PrecSolve is to use
+ *        the left preconditioner P1 or right preconditioner
+ *        P2: lr = 1 means use P1, and lr = 2 means use P2.
+ *
+ * P_data is a pointer to user data - the same as the P_data
+ *        parameter passed to CVSpgmr.
+ *
+ * tmp    is a pointer to memory allocated for an N_Vector
+ *        which can be used by PSolve for work space.
+ *
+ * Returned value:
+ * The value to be returned by the PrecSolve function is a flag
+ * indicating whether it was successful.  This value should be
+ *   0 if successful,
+ *   positive for a recoverable error (step will be retried),
+ *   negative for an unrecoverable error (integration is halted).
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*CVSpgmrPrecSolveFn)(realtype t, N_Vector y, N_Vector fy,
+                                  N_Vector r, N_Vector z,
+                                  realtype gamma, realtype delta,
+                                  int lr, void *P_data, N_Vector tmp);
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVSpgmrJacTimesVecFn
+ * -----------------------------------------------------------------
+ * The user-supplied function jtimes is to generate the product
+ * J*v for given v, where J is the Jacobian df/dy, or an
+ * approximation to it, and v is a given vector. It should return
+ * 0 if successful and a nonzero int otherwise.
+ *
+ * A function jtimes must have the prototype given below. Its
+ * parameters are as follows:
+ *
+ *   v        is the N_Vector to be multiplied by J.
+ *
+ *   Jv       is the output N_Vector containing J*v.
+ *
+ *   t        is the current value of the independent variable.
+ *
+ *   y        is the current value of the dependent variable
+ *            vector.
+ *
+ *   fy       is the vector f(t,y).
+ *
+ *   jac_data is a pointer to user Jacobian data, the same as the
+ *            pointer passed to CVSpgmr.
+ *
+ *   tmp      is a pointer to memory allocated for an N_Vector
+ *            which can be used by Jtimes for work space.
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*CVSpgmrJacTimesVecFn)(N_Vector v, N_Vector Jv, realtype t,
+                                    N_Vector y, N_Vector fy,
+                                    void *jac_data, N_Vector tmp);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVSpgmr
+ * -----------------------------------------------------------------
+ * A call to the CVSpgmr function links the main CVODE integrator
+ * with the CVSPGMR linear solver.
+ *
+ * cvode_mem is the pointer to the integrator memory returned by
+ *           CVodeCreate.
+ *
+ * pretype   is the type of user preconditioning to be done.
+ *           This must be one of the four enumeration constants
+ *           NONE, LEFT, RIGHT, or BOTH defined in iterative.h.
+ *           These correspond to no preconditioning,
+ *           left preconditioning only, right preconditioning
+ *           only, and both left and right preconditioning,
+ *           respectively.
+ *
+ * maxl      is the maximum Krylov dimension. This is an
+ *           optional input to the CVSPGMR solver. Pass 0 to
+ *           use the default value CVSPGMR_MAXL=5.
+ *
+ * The return value of CVSpgmr is one of:
+ *    CVSPGMR_SUCCESS   if successful
+ *    CVSPGMR_MEM_NULL  if the cvode memory was NULL
+ *    CVSPGMR_MEM_FAIL  if there was a memory allocation failure
+ *    CVSPGMR_ILL_INPUT if a required vector operation is missing
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmr(void *cvode_mem, int pretype, int maxl);
+
+/*
+ * -----------------------------------------------------------------
+ * Function: CVSpgmrSetPrecType
+ * -----------------------------------------------------------------
+ * CVSpgmrSetPrecType resets the type of preconditioner, pretype,
+ *     from the value set in a prior call to CVSpgmr.
+ *     This must be one of NONE, LEFT, RIGHT, or BOTH.
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrSetPrecType(void *cvode_mem, int pretype);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional inputs to the CVSPGMR linear solver
+ * -----------------------------------------------------------------
+ * CVSpgmrSetGSType specifies the type of Gram-Schmidt
+ *                orthogonalization to be used. This must be one of
+ *                the two enumeration constants MODIFIED_GS or
+ *                CLASSICAL_GS defined in iterative.h. These correspond
+ *                to using modified Gram-Schmidt and classical
+ *                Gram-Schmidt, respectively.
+ *                Default value is MODIFIED_GS.
+ * CVSpgmrSetDelt specifies the factor by which the tolerance on
+ *                the nonlinear iteration is multiplied to get a
+ *                tolerance on the linear iteration. This is an
+ *                optional input to the CVSPGMR solver.
+ *                Default value is 0.05.
+ * CVSpgmrSetPreconditioner specifies the PrecSetup and PrecSolve functions.
+ *                as well as a pointer to user preconditioner data.
+ *                This pointer is passed to PrecSetup and PrecSolve
+ *                every time these routines are called.
+ *                Default is NULL for al three arguments.
+ * CVSpgmrSetJacTimesVecFn specifies the jtimes function and a pointer to
+ *                user Jacobian data. This pointer is passed to jtimes every 
+ *                time the jtimes routine is called.
+ *                Default is to use an internal finite difference
+ *                approximation routine.
+ *
+ * The return value of CVSpgmrSet* is one of:
+ *    CVSPGMR_SUCCESS   if successful
+ *    CVSPGMR_MEM_NULL  if the cvode memory was NULL
+ *    CVSPGMR_LMEM_NULL if the cvspgmr memory was NULL
+ *    CVSPGMR_ILL_INPUT if an input has an illegal value
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrSetGSType(void *cvode_mem, int gstype);
+int CVSpgmrSetDelt(void *cvode_mem, realtype delt);
+int CVSpgmrSetPreconditioner(void *cvode_mem, CVSpgmrPrecSetupFn pset, 
+			     CVSpgmrPrecSolveFn psolve, void *P_data);
+int CVSpgmrSetJacTimesVecFn(void *cvode_mem, 
+                            CVSpgmrJacTimesVecFn jtimes, void *jac_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional outputs from the CVSPGMR linear solver
+ * -----------------------------------------------------------------
+ * CVSpgmrGetWorkSpace returns the real and integer workspace used
+ *                     by CVSPGMR.
+ * CVSpgmrGetNumPrecEvals returns the number of preconditioner
+ *                        evaluations, i.e. the number of calls made
+ *                        to PrecSetup with jok==FALSE.
+ * CVSpgmrGetNumPrecSolves returns the number of calls made to
+ *                         PrecSolve.
+ * CVSpgmrGetNumLinIters returns the number of linear iterations.
+ * CVSpgmrGetNumConvFails returns the number of linear
+ *                        convergence failures.
+ * CVSpgmrGetNumJtimesEvals returns the number of calls to jtimes.
+ * CVSpgmrGetNumRhsEvals returns the number of calls to the user
+ *                       f routine due to finite difference Jacobian
+ *                       times vector evaluation.
+ * CVSpgmrGetLastFlag returns the last error flag set by any of
+ *                    the CVSPGMR interface functions.
+ *
+ * The return value of CVSpgmrGet* is one of:
+ *    CVSPGMR_SUCCESS   if successful
+ *    CVSPGMR_MEM_NULL  if the cvode memory was NULL
+ *    CVSPGMR_LMEM_NULL if the cvspgmr memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetWorkSpace(void *cvode_mem, long int *lenrwSG, long int *leniwSG);
+int CVSpgmrGetNumPrecEvals(void *cvode_mem, long int *npevals);
+int CVSpgmrGetNumPrecSolves(void *cvode_mem, long int *npsolves);
+int CVSpgmrGetNumLinIters(void *cvode_mem, long int *nliters);
+int CVSpgmrGetNumConvFails(void *cvode_mem, long int *nlcfails);
+int CVSpgmrGetNumJtimesEvals(void *cvode_mem, long int *njvevals);
+int CVSpgmrGetNumRhsEvals(void *cvode_mem, long int *nfevalsSG); 
+int CVSpgmrGetLastFlag(void *cvode_mem, int *flag);
+
+/* CVSPGMR return values */
+
+#define CVSPGMR_SUCCESS    0
+#define CVSPGMR_MEM_NULL  -1
+#define CVSPGMR_LMEM_NULL -2
+#define CVSPGMR_ILL_INPUT -3
+#define CVSPGMR_MEM_FAIL  -4
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/source/Makefile b/Win32/WinCVODE/sundials/cvode/source/Makefile
new file mode 100644
index 0000000..7683c5b
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/Makefile
@@ -0,0 +1,103 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:26:31 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/cvode/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for CVODE module
+#
+# cvode/source/Makefile.  Generated from Makefile.in by configure.
+# -----------------------------------------------------------------
+
+SHELL = /bin/bash
+
+srcdir       = .
+builddir     = .
+abs_builddir = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials/cvode/source
+top_builddir = ../../
+prefix       = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials
+exec_prefix  = ${prefix}
+includedir   = ${prefix}/include
+libdir       = ${exec_prefix}/lib
+
+INSTALL        = /usr/bin/install -c
+INSTALL_LIB    = ${INSTALL}
+INSTALL_HEADER = ${INSTALL} -m 644
+
+LIBTOOL      = $(SHELL) $(top_builddir)/libtool
+LIBTOOL_DEPS = config/ltmain.sh
+
+CPP      = /usr/bin/cc -E
+CPPFLAGS = 
+CC       = /usr/bin/cc
+CFLAGS   = -g -O2
+LDFLAGS  = 
+LIBS     = -lm 
+
+SHARED_INC_DIR   = $(srcdir)/../../shared/include
+CVODE_INC_DIR    = $(srcdir)/../include
+
+CVODE_LIB       = libsundials_cvode.la
+CVODE_LIB_FILES = cvode.lo cvodeio.lo cvband.lo cvdense.lo cvdiag.lo cvspgmr.lo cvbandpre.lo cvbbdpre.lo
+
+OBJECT_FILES = cvode.o cvodeio.o cvband.o cvdense.o cvdiag.o cvspgmr.o cvbandpre.o cvbbdpre.o
+
+all: update $(CVODE_LIB_FILES)
+
+update:
+	${INSTALL_HEADER} ${top_builddir}/config/sundials_config.h ${builddir}
+
+install: update $(CVODE_LIB_FILES)
+	$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(CVODE_LIB) $(CVODE_LIB_FILES) -rpath $(libdir) $(LDLFAGS) $(LIBS) -avoid-version
+	$(LIBTOOL) --mode=install $(INSTALL_LIB) $(CVODE_LIB) $(libdir)
+	$(INSTALL_HEADER) $(CVODE_INC_DIR)/cvode.h $(includedir)
+	$(INSTALL_HEADER) $(CVODE_INC_DIR)/cvdense.h $(includedir)
+	$(INSTALL_HEADER) $(CVODE_INC_DIR)/cvband.h $(includedir)
+	$(INSTALL_HEADER) $(CVODE_INC_DIR)/cvdiag.h $(includedir)
+	$(INSTALL_HEADER) $(CVODE_INC_DIR)/cvspgmr.h $(includedir)
+	$(INSTALL_HEADER) $(CVODE_INC_DIR)/cvbandpre.h $(includedir)
+	$(INSTALL_HEADER) $(CVODE_INC_DIR)/cvbbdpre.h $(includedir)
+
+clean:
+	$(LIBTOOL) --mode=clean rm -f $(CVODE_LIB)
+	rm -f $(CVODE_LIB_FILES)
+	rm -f $(OBJECT_FILES)
+	rm -f sundials_config.h
+
+uninstall: clean
+	$(LIBTOOL) --mode=uninstall rm -f $(libdir)/$(CVODE_LIB)
+	rm -f $(includedir)/cvode.h
+	rm -f $(includedir)/cvdense.h
+	rm -f $(includedir)/cvband.h
+	rm -f $(includedir)/cvdiag.h
+	rm -f $(includedir)/cvspgmr.h
+	rm -f $(includedir)/cvbandpre.h
+	rm -f $(includedir)/cvbbdpre.h
+
+cvode.lo: $(srcdir)/cvode.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvode.c
+cvodeio.lo: $(srcdir)/cvodeio.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvodeio.c
+cvdense.lo: $(srcdir)/cvdense.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdense.c
+cvband.lo: $(srcdir)/cvband.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvband.c
+cvdiag.lo: $(srcdir)/cvdiag.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdiag.c
+cvspgmr.lo: $(srcdir)/cvspgmr.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvspgmr.c
+cvbandpre.lo: $(srcdir)/cvbandpre.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvbandpre.c
+cvbbdpre.lo: $(srcdir)/cvbbdpre.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvbbdpre.c
+
+
+libtool: $(top_builddir)/$(LIBTOOL_DEPS)
+	@cd $(top_builddir) ;                 \
+	 $(SHELL) ./config.status --recheck ; \
+	 cd $(abs_builddir)
diff --git a/Win32/WinCVODE/sundials/cvode/source/Makefile.in b/Win32/WinCVODE/sundials/cvode/source/Makefile.in
new file mode 100644
index 0000000..6bbd99a
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/Makefile.in
@@ -0,0 +1,103 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:26:31 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/cvode/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for CVODE module
+#
+# @configure_input@
+# -----------------------------------------------------------------
+
+SHELL = @SHELL@
+
+srcdir       = @srcdir@
+builddir     = @builddir@
+abs_builddir = @abs_builddir@
+top_builddir = @top_builddir@
+prefix       = @prefix@
+exec_prefix  = @exec_prefix@
+includedir   = @includedir@
+libdir       = @libdir@
+
+INSTALL        = @INSTALL@
+INSTALL_LIB    = @INSTALL_PROGRAM@
+INSTALL_HEADER = @INSTALL_DATA@
+
+LIBTOOL      = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+
+CPP      = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CC       = @CC@
+CFLAGS   = @CFLAGS@
+LDFLAGS  = @LDFLAGS@
+LIBS     = @LIBS@
+
+SHARED_INC_DIR   = $(srcdir)/../../shared/include
+CVODE_INC_DIR    = $(srcdir)/../include
+
+CVODE_LIB       = libsundials_cvode.la
+CVODE_LIB_FILES = cvode.lo cvodeio.lo cvband.lo cvdense.lo cvdiag.lo cvspgmr.lo cvbandpre.lo cvbbdpre.lo
+
+OBJECT_FILES = cvode.o cvodeio.o cvband.o cvdense.o cvdiag.o cvspgmr.o cvbandpre.o cvbbdpre.o
+
+all: update $(CVODE_LIB_FILES)
+
+update:
+	${INSTALL_HEADER} ${top_builddir}/config/sundials_config.h ${builddir}
+
+install: update $(CVODE_LIB_FILES)
+	$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(CVODE_LIB) $(CVODE_LIB_FILES) -rpath $(libdir) $(LDLFAGS) $(LIBS) -avoid-version
+	$(LIBTOOL) --mode=install $(INSTALL_LIB) $(CVODE_LIB) $(libdir)
+	$(INSTALL_HEADER) $(CVODE_INC_DIR)/cvode.h $(includedir)
+	$(INSTALL_HEADER) $(CVODE_INC_DIR)/cvdense.h $(includedir)
+	$(INSTALL_HEADER) $(CVODE_INC_DIR)/cvband.h $(includedir)
+	$(INSTALL_HEADER) $(CVODE_INC_DIR)/cvdiag.h $(includedir)
+	$(INSTALL_HEADER) $(CVODE_INC_DIR)/cvspgmr.h $(includedir)
+	$(INSTALL_HEADER) $(CVODE_INC_DIR)/cvbandpre.h $(includedir)
+	$(INSTALL_HEADER) $(CVODE_INC_DIR)/cvbbdpre.h $(includedir)
+
+clean:
+	$(LIBTOOL) --mode=clean rm -f $(CVODE_LIB)
+	rm -f $(CVODE_LIB_FILES)
+	rm -f $(OBJECT_FILES)
+	rm -f sundials_config.h
+
+uninstall: clean
+	$(LIBTOOL) --mode=uninstall rm -f $(libdir)/$(CVODE_LIB)
+	rm -f $(includedir)/cvode.h
+	rm -f $(includedir)/cvdense.h
+	rm -f $(includedir)/cvband.h
+	rm -f $(includedir)/cvdiag.h
+	rm -f $(includedir)/cvspgmr.h
+	rm -f $(includedir)/cvbandpre.h
+	rm -f $(includedir)/cvbbdpre.h
+
+cvode.lo: $(srcdir)/cvode.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvode.c
+cvodeio.lo: $(srcdir)/cvodeio.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvodeio.c
+cvdense.lo: $(srcdir)/cvdense.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdense.c
+cvband.lo: $(srcdir)/cvband.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvband.c
+cvdiag.lo: $(srcdir)/cvdiag.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdiag.c
+cvspgmr.lo: $(srcdir)/cvspgmr.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvspgmr.c
+cvbandpre.lo: $(srcdir)/cvbandpre.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvbandpre.c
+cvbbdpre.lo: $(srcdir)/cvbbdpre.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODE_INC_DIR) $(CFLAGS) -c $(srcdir)/cvbbdpre.c
+
+
+libtool: $(top_builddir)/$(LIBTOOL_DEPS)
+	@cd $(top_builddir) ;                 \
+	 $(SHELL) ./config.status --recheck ; \
+	 cd $(abs_builddir)
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvband.c b/Win32/WinCVODE/sundials/cvode/source/cvband.c
new file mode 100644
index 0000000..e05a9a5
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvband.c
@@ -0,0 +1,566 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the CVBAND linear solver.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvband_impl.h"
+#include "cvode_impl.h"
+#include "sundialsmath.h"
+
+/* Other Constants */
+
+#define MIN_INC_MULT RCONST(1000.0)
+#define ZERO         RCONST(0.0)
+#define ONE          RCONST(1.0)
+#define TWO          RCONST(2.0)
+
+/* CVBAND linit, lsetup, lsolve, and lfree routines */
+
+static int CVBandInit(CVodeMem cv_mem);
+
+static int CVBandSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                       N_Vector fpred, booleantype *jcurPtr, N_Vector vtemp1,
+                       N_Vector vtemp2, N_Vector vtemp3);
+
+static int CVBandSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                       N_Vector ycur, N_Vector fcur);
+
+static void CVBandFree(CVodeMem cv_mem);
+
+/* CVBAND DQJac routine */
+
+static void CVBandDQJac(long int n, long int mupper, long int mlower,
+                        BandMat J, realtype t,
+                        N_Vector y, N_Vector fy, void *jac_data,
+                        N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/* Readability Replacements */
+
+#define lmm       (cv_mem->cv_lmm)
+#define f         (cv_mem->cv_f)
+#define f_data    (cv_mem->cv_f_data)
+#define uround    (cv_mem->cv_uround)
+#define nst       (cv_mem->cv_nst)
+#define tn        (cv_mem->cv_tn)
+#define h         (cv_mem->cv_h)
+#define gamma     (cv_mem->cv_gamma)
+#define gammap    (cv_mem->cv_gammap)
+#define gamrat    (cv_mem->cv_gamrat)
+#define ewt       (cv_mem->cv_ewt)
+#define nfe       (cv_mem->cv_nfe)
+#define errfp     (cv_mem->cv_errfp)
+#define linit     (cv_mem->cv_linit)
+#define lsetup    (cv_mem->cv_lsetup)
+#define lsolve    (cv_mem->cv_lsolve)
+#define lfree     (cv_mem->cv_lfree)
+#define lmem      (cv_mem->cv_lmem)
+#define vec_tmpl      (cv_mem->cv_tempv)
+#define setupNonNull  (cv_mem->cv_setupNonNull)
+
+#define n          (cvband_mem->b_n)
+#define jac        (cvband_mem->b_jac)
+#define M          (cvband_mem->b_M)
+#define mu         (cvband_mem->b_mu)
+#define ml         (cvband_mem->b_ml)
+#define storage_mu (cvband_mem->b_storage_mu)
+#define pivots     (cvband_mem->b_pivots)
+#define savedJ     (cvband_mem->b_savedJ)
+#define nstlj      (cvband_mem->b_nstlj)
+#define nje        (cvband_mem->b_nje)
+#define nfeB       (cvband_mem->b_nfeB)
+#define J_data     (cvband_mem->b_J_data)
+#define last_flag  (cvband_mem->b_last_flag)
+
+/*
+ * -----------------------------------------------------------------
+ * CVBand
+ * -----------------------------------------------------------------
+ * This routine initializes the memory record and sets various function
+ * fields specific to the band linear solver module.  CVBand first calls
+ * the existing lfree routine if this is not NULL.  It then sets the
+ * cv_linit, cv_lsetup, cv_lsolve, and cv_lfree fields in (*cvode_mem)
+ * to be CVBandInit, CVBandSetup, CVBandSolve, and CVBandFree,
+ * respectively.  It allocates memory for a structure of type
+ * CVBandMemRec and sets the cv_lmem field in (*cvode_mem) to the
+ * address of this structure.  It sets setupNonNull in (*cvode_mem) to be
+ * TRUE, b_mu to be mupper, b_ml to be mlower, and the b_jac field to be 
+ * CVBandDQJac.
+ * Finally, it allocates memory for M, savedJ, and pivot.  The CVBand
+ * return value is SUCCESS = 0, LMEM_FAIL = -1, or LIN_ILL_INPUT = -2.
+ *
+ * NOTE: The band linear solver assumes a serial implementation
+ *       of the NVECTOR package. Therefore, CVBand will first 
+ *       test for compatible a compatible N_Vector internal
+ *       representation by checking that the function 
+ *       N_VGetArrayPointer exists.
+ * -----------------------------------------------------------------
+ */
+                  
+int CVBand(void *cvode_mem, long int N,
+           long int mupper, long int mlower)
+{
+  CVodeMem cv_mem;
+  CVBandMem cvband_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGB_CVMEM_NULL);
+    return(CVBAND_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Test if the NVECTOR package is compatible with the BAND solver */
+  if (vec_tmpl->ops->nvgetarraypointer == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_BAD_NVECTOR);
+    return(CVBAND_ILL_INPUT);
+  }
+
+  if (lfree != NULL) lfree(cv_mem);
+
+  /* Set four main function fields in cv_mem */  
+  linit  = CVBandInit;
+  lsetup = CVBandSetup;
+  lsolve = CVBandSolve;
+  lfree  = CVBandFree;
+  
+  /* Get memory for CVBandMemRec */
+  cvband_mem = (CVBandMem) malloc(sizeof(CVBandMemRec));
+  if (cvband_mem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_MEM_FAIL);
+    return(CVBAND_MEM_FAIL);
+  }
+  
+  /* Set default Jacobian routine and Jacobian data */
+  jac = CVBandDQJac;
+  J_data = cvode_mem;
+  last_flag = CVBAND_SUCCESS;
+
+  setupNonNull = TRUE;
+  
+  /* Load problem dimension */
+  n = N;
+
+  /* Load half-bandwiths in cvband_mem */
+  ml = mlower;
+  mu = mupper;
+
+  /* Test ml and mu for legality */
+  if ((ml < 0) || (mu < 0) || (ml >= N) || (mu >= N)) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_BAD_SIZES);
+    return(CVBAND_ILL_INPUT);
+  }
+
+  /* Set extended upper half-bandwith for M (required for pivoting) */
+  storage_mu = MIN(N-1, mu + ml);
+
+  /* Allocate memory for M, savedJ, and pivot arrays */
+  M = BandAllocMat(N, mu, ml, storage_mu);
+  if (M == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_MEM_FAIL);
+    return(CVBAND_MEM_FAIL);
+  }
+  savedJ = BandAllocMat(N, mu, ml, mu);
+  if (savedJ == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_MEM_FAIL);
+    BandFreeMat(M);
+    return(CVBAND_MEM_FAIL);
+  }
+  pivots = BandAllocPiv(N);
+  if (pivots == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_MEM_FAIL);
+    BandFreeMat(M);
+    BandFreeMat(savedJ);
+    return(CVBAND_MEM_FAIL);
+  }
+
+  /* Attach linear solver memory to integrator memory */
+  lmem = cvband_mem;
+
+  return(CVBAND_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandSetJacFn
+ * -----------------------------------------------------------------
+ */
+
+int CVBandSetJacFn(void *cvode_mem, CVBandJacFn bjac, void *jac_data)
+{
+  CVodeMem cv_mem;
+  CVBandMem cvband_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_CVMEM_NULL);
+    return(CVBAND_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(CVBAND_LMEM_NULL);
+  }
+  cvband_mem = (CVBandMem) lmem;
+
+  jac = bjac;
+  if (bjac != NULL) J_data = jac_data;
+
+  return(CVBAND_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandGetWorkSpace
+ * -----------------------------------------------------------------
+ */
+
+int CVBandGetWorkSpace(void *cvode_mem, long int *lenrwB, long int *leniwB)
+{
+  CVodeMem cv_mem;
+  CVBandMem cvband_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_CVMEM_NULL);
+    return(CVBAND_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(CVBAND_LMEM_NULL);
+  }
+  cvband_mem = (CVBandMem) lmem;
+
+  *lenrwB = n*(storage_mu + mu + 2*ml + 2);
+  *leniwB = n;
+
+  return(CVBAND_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandGetNumJacEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVBandGetNumJacEvals(void *cvode_mem, long int *njevalsB)
+{
+  CVodeMem cv_mem;
+  CVBandMem cvband_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_CVMEM_NULL);
+    return(CVBAND_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(CVBAND_LMEM_NULL);
+  }
+  cvband_mem = (CVBandMem) lmem;
+
+  *njevalsB = nje;
+
+  return(CVBAND_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandGetNumRhsEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVBandGetNumRhsEvals(void *cvode_mem, long int *nfevalsB)
+{
+  CVodeMem cv_mem;
+  CVBandMem cvband_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_CVMEM_NULL);
+    return(CVBAND_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(CVBAND_LMEM_NULL);
+  }
+  cvband_mem = (CVBandMem) lmem;
+
+  *nfevalsB = nfeB;
+
+  return(CVBAND_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandGetLastFlag
+ * -----------------------------------------------------------------
+ */
+
+int CVBandGetLastFlag(void *cvode_mem, int *flag)
+{
+  CVodeMem cv_mem;
+  CVBandMem cvband_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_CVMEM_NULL);
+    return(CVBAND_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(CVBAND_LMEM_NULL);
+  }
+  cvband_mem = (CVBandMem) lmem;
+
+  *flag = last_flag;
+
+  return(CVBAND_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandInit
+ * -----------------------------------------------------------------
+ * This routine does remaining initializations specific to the band
+ * linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static int CVBandInit(CVodeMem cv_mem)
+{
+  CVBandMem cvband_mem;
+
+  cvband_mem = (CVBandMem) lmem;
+
+  nje   = 0;
+  nfeB  = 0;
+  nstlj = 0;
+
+  if (jac == NULL) {
+    jac = CVBandDQJac;
+    J_data = cv_mem;
+  }
+
+  last_flag = CVBAND_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandSetup
+ * -----------------------------------------------------------------
+ * This routine does the setup operations for the band linear solver.
+ * It makes a decision whether or not to call the Jacobian evaluation
+ * routine based on various state variables, and if not it uses the 
+ * saved copy.  In any case, it constructs the Newton matrix 
+ * M = I - gamma*J, updates counters, and calls the band LU 
+ * factorization routine.
+ * -----------------------------------------------------------------
+ */
+
+static int CVBandSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                       N_Vector fpred, booleantype *jcurPtr, N_Vector vtemp1,
+                       N_Vector vtemp2, N_Vector vtemp3)
+{
+  booleantype jbad, jok;
+  realtype dgamma;
+  long int ier;
+  CVBandMem cvband_mem;
+  
+  cvband_mem = (CVBandMem) lmem;
+
+  /* Use nst, gamma/gammap, and convfail to set J eval. flag jok */
+
+  dgamma = ABS((gamma/gammap) - ONE);
+  jbad = (nst == 0) || (nst > nstlj + CVB_MSBJ) ||
+         ((convfail == CV_FAIL_BAD_J) && (dgamma < CVB_DGMAX)) ||
+         (convfail == CV_FAIL_OTHER);
+  jok = !jbad;
+  
+  if (jok) {
+    /* If jok = TRUE, use saved copy of J */
+    *jcurPtr = FALSE;
+    BandCopy(savedJ, M, mu, ml);
+  } else {
+    /* If jok = FALSE, call jac routine for new J value */
+    nje++;
+    nstlj = nst;
+    *jcurPtr = TRUE;
+    BandZero(M); 
+    jac(n, mu, ml, M, tn, ypred, fpred, J_data, vtemp1, vtemp2, vtemp3);
+    BandCopy(M, savedJ, mu, ml);
+  }
+  
+  /* Scale and add I to get M = I - gamma*J */
+  BandScale(-gamma, M);
+  BandAddI(M);
+
+  /* Do LU factorization of M */
+  ier = BandFactor(M, pivots);
+
+  /* Return 0 if the LU was complete; otherwise return 1 */
+  if (ier > 0) {
+    last_flag = ier;
+    return(1);
+  }
+  last_flag = CVBAND_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandSolve
+ * -----------------------------------------------------------------
+ * This routine handles the solve operation for the band linear solver
+ * by calling the band backsolve routine.  The return value is 0.
+ * -----------------------------------------------------------------
+ */
+
+static int CVBandSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                       N_Vector ycur, N_Vector fcur)
+{
+  CVBandMem cvband_mem;
+  realtype *bd;
+
+  cvband_mem = (CVBandMem) lmem;
+
+  bd = N_VGetArrayPointer(b);
+
+  BandBacksolve(M, pivots, bd);
+
+  /* If CV_BDF, scale the correction to account for change in gamma */
+  if ((lmm == CV_BDF) && (gamrat != ONE)) {
+    N_VScale(TWO/(ONE + gamrat), b, b);
+  }
+
+  last_flag = CVBAND_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandFree
+ * -----------------------------------------------------------------
+ * This routine frees memory specific to the band linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static void CVBandFree(CVodeMem cv_mem)
+{
+  CVBandMem cvband_mem;
+
+  cvband_mem = (CVBandMem) lmem;
+
+  BandFreeMat(M);
+  BandFreeMat(savedJ);
+  BandFreePiv(pivots);
+  free(cvband_mem);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandDQJac
+ * -----------------------------------------------------------------
+ * This routine generates a banded difference quotient approximation to
+ * the Jacobian of f(t,y).  It assumes that a band matrix of type
+ * BandMat is stored column-wise, and that elements within each column
+ * are contiguous. This makes it possible to get the address of a column
+ * of J via the macro BAND_COL and to write a simple for loop to set
+ * each of the elements of a column in succession.
+ * -----------------------------------------------------------------
+ */
+
+static void CVBandDQJac(long int N, long int mupper, long int mlower,
+                        BandMat J, realtype t,
+                        N_Vector y, N_Vector fy, void *jac_data,
+                        N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  realtype fnorm, minInc, inc, inc_inv, srur;
+  N_Vector ftemp, ytemp;
+  long int group, i, j, width, ngroups, i1, i2;
+  realtype *col_j, *ewt_data, *fy_data, *ftemp_data, *y_data, *ytemp_data;
+
+  CVodeMem cv_mem;
+  CVBandMem cvband_mem;
+
+  /* jac_dat points to cvode_mem */
+  cv_mem = (CVodeMem) jac_data;
+  cvband_mem = (CVBandMem) lmem;
+
+  /* Rename work vectors for use as temporary values of y and f */
+  ftemp = tmp1;
+  ytemp = tmp2;
+
+  /* Obtain pointers to the data for ewt, fy, ftemp, y, ytemp */
+  ewt_data   = N_VGetArrayPointer(ewt);
+  fy_data    = N_VGetArrayPointer(fy);
+  ftemp_data = N_VGetArrayPointer(ftemp);
+  y_data     = N_VGetArrayPointer(y);
+  ytemp_data = N_VGetArrayPointer(ytemp);
+
+  /* Load ytemp with y = predicted y vector */
+  N_VScale(ONE, y, ytemp);
+
+  /* Set minimum increment based on uround and norm of f */
+  srur = RSqrt(uround);
+  fnorm = N_VWrmsNorm(fy, ewt);
+  minInc = (fnorm != ZERO) ?
+           (MIN_INC_MULT * ABS(h) * uround * N * fnorm) : ONE;
+
+  /* Set bandwidth and number of column groups for band differencing */
+  width = mlower + mupper + 1;
+  ngroups = MIN(width, N);
+  
+  for (group=1; group <= ngroups; group++) {
+    
+    /* Increment all y_j in group */
+    for(j=group-1; j < N; j+=width) {
+      inc = MAX(srur*ABS(y_data[j]), minInc/ewt_data[j]);
+      ytemp_data[j] += inc;
+    }
+
+    /* Evaluate f with incremented y */
+
+    f(tn, ytemp, ftemp, f_data);
+
+    /* Restore ytemp, then form and load difference quotients */
+    for (j=group-1; j < N; j+=width) {
+      ytemp_data[j] = y_data[j];
+      col_j = BAND_COL(J,j);
+      inc = MAX(srur*ABS(y_data[j]), minInc/ewt_data[j]);
+      inc_inv = ONE/inc;
+      i1 = MAX(0, j-mupper);
+      i2 = MIN(j+mlower, N-1);
+      for (i=i1; i <= i2; i++)
+        BAND_COL_ELEM(col_j,i,j) =
+          inc_inv * (ftemp_data[i] - fy_data[i]);
+    }
+  }
+  
+  /* Increment counter nfeB */
+  nfeB += ngroups;
+}
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvband_impl.h b/Win32/WinCVODE/sundials/cvode/source/cvband_impl.h
new file mode 100644
index 0000000..0f4ddfa
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvband_impl.h
@@ -0,0 +1,90 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the band linear solver, CVBAND.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVBAND_IMPL_H
+#define _CVBAND_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "band.h"
+#include "cvband.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Types: CVBandMemRec, CVBandMem                                
+ * -----------------------------------------------------------------
+ * The type CVBandMem is pointer to a CVBandMemRec.
+ * This structure contains CVBand solver-specific data.                
+ * -----------------------------------------------------------------
+ */                                                                
+
+typedef struct {
+
+  long int b_n;           /* N = problem dimension                    */
+
+  CVBandJacFn b_jac;      /* jac = Jacobian routine to be called      */
+
+  long int b_ml;          /* b_ml = lower bandwidth of savedJ         */
+  
+  long int b_mu;          /* b_mu = upper bandwidth of savedJ         */ 
+  
+  long int b_storage_mu;  /* upper bandwith of M = MIN(N-1,b_mu+b_ml) */
+  
+  BandMat b_M;            /* M = I - gamma J, gamma = h / l1          */
+  
+  long int *b_pivots;     /* pivots = pivot array for PM = LU         */
+  
+  BandMat b_savedJ;       /* savedJ = old Jacobian                    */
+  
+  long int b_nstlj;       /* nstlj = nst at last Jacobian eval.       */
+  
+  long int b_nje;         /* nje = no. of calls to jac                */
+  
+  long int b_nfeB;        /* nfeB = no. of calls to f due to difference
+                             quotient band Jacobian approximation     */
+
+  void *b_J_data;         /* J_data is passed to jac                  */
+
+  int b_last_flag;        /* last error return flag                   */
+  
+} CVBandMemRec, *CVBandMem;
+
+/* Error Messages */
+
+#define _CVBAND_         "CVBand-- "
+#define MSGB_MEM_FAIL    _CVBAND_ "A memory request failed.\n\n"
+#define MSGB_BAD_SIZES_1 _CVBAND_ "Illegal bandwidth parameter(s)."
+#define MSGB_BAD_SIZES_2 "Must have 0 <=  ml, mu <= N-1.\n\n"
+#define MSGB_BAD_SIZES   MSGB_BAD_SIZES_1 MSGB_BAD_SIZES_2
+#define MSGB_BAD_NVECTOR _CVBAND_ "A required vector operation is not implemented.\n\n"
+#define MSGB_CVMEM_NULL  _CVBAND_ "Integrator memory is NULL.\n\n"
+
+#define MSGB_SETGET_CVMEM_NULL "CVBandSet*/CVBandGet*-- Integrator memory is NULL.\n\n"
+
+#define MSGB_SETGET_LMEM_NULL "CVBandSet*/CVBandGet*-- CVBAND memory is NULL.\n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvbandpre.c b/Win32/WinCVODE/sundials/cvode/source/cvbandpre.c
new file mode 100644
index 0000000..587d00d
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvbandpre.c
@@ -0,0 +1,409 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This file contains implementations of the banded difference
+ * quotient Jacobian-based preconditioner and solver routines for
+ * use with CVSpgmr.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvbandpre_impl.h"
+#include "cvode_impl.h"
+#include "cvspgmr_impl.h"
+
+#include "sundialsmath.h"
+
+#define MIN_INC_MULT RCONST(1000.0)
+#define ZERO         RCONST(0.0)
+#define ONE          RCONST(1.0)
+
+/* Prototypes of CVBandPrecSetup and CVBandPrecSolve */
+  
+static int CVBandPrecSetup(realtype t, N_Vector y, N_Vector fy, 
+                           booleantype jok, booleantype *jcurPtr, 
+                           realtype gamma, void *bp_data,
+                           N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+static int CVBandPrecSolve(realtype t, N_Vector y, N_Vector fy, 
+                           N_Vector r, N_Vector z, 
+                           realtype gamma, realtype delta,
+                           int lr, void *bp_data, N_Vector tmp);
+
+/* Prototype for difference quotient Jacobian calculation routine */
+
+static void CVBandPDQJac(CVBandPrecData pdata, 
+                         realtype t, N_Vector y, N_Vector fy, 
+                         N_Vector ftemp, N_Vector ytemp);
+
+/* Redability replacements */
+#define vec_tmpl (cv_mem->cv_tempv)
+#define errfp    (cv_mem->cv_errfp)
+
+/*
+ * -----------------------------------------------------------------
+ * Malloc, Free, and Get Functions
+ * NOTE: The band linear solver assumes a serial implementation
+ *       of the NVECTOR package. Therefore, CVBandPrecAlloc will 
+ *       first test for compatible a compatible N_Vector internal
+ *       representation by checking that the function 
+ *       N_VGetArrayPointer exists
+ * -----------------------------------------------------------------
+ */
+
+void *CVBandPrecAlloc(void *cvode_mem, long int N, 
+                      long int mu, long int ml)
+{
+  CVodeMem cv_mem;
+  CVBandPrecData pdata;
+  long int mup, mlp, storagemu;
+
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGBP_CVMEM_NULL);
+    return(NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Test if the NVECTOR package is compatible with the BAND preconditioner */
+  if(vec_tmpl->ops->nvgetarraypointer == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGBP_BAD_NVECTOR);
+    return(NULL);
+  }
+
+  pdata = (CVBandPrecData) malloc(sizeof *pdata);  /* Allocate data memory */
+  if (pdata == NULL) return(NULL);
+
+  /* Load pointers and bandwidths into pdata block. */
+  pdata->cvode_mem = cvode_mem;
+  pdata->N = N;
+  pdata->mu = mup = MIN( N-1, MAX(0,mu) );
+  pdata->ml = mlp = MIN( N-1, MAX(0,ml) );
+
+  /* Initialize nfeBP counter */
+  pdata->nfeBP = 0;
+
+  /* Allocate memory for saved banded Jacobian approximation. */
+  pdata->savedJ = BandAllocMat(N, mup, mlp, mup);
+  if (pdata->savedJ == NULL) {
+    free(pdata);
+    return(NULL);
+  }
+
+  /* Allocate memory for banded preconditioner. */
+  storagemu = MIN( N-1, mup + mlp);
+  pdata->savedP = BandAllocMat(N, mup, mlp, storagemu);
+  if (pdata->savedP == NULL) {
+    BandFreeMat(pdata->savedJ);
+    free(pdata);
+    return(NULL);
+  }
+
+  /* Allocate memory for pivot array. */
+  pdata->pivots = BandAllocPiv(N);
+  if (pdata->savedJ == NULL) {
+    BandFreeMat(pdata->savedP);
+    BandFreeMat(pdata->savedJ);
+    free(pdata);
+    return(NULL);
+  }
+
+  return((void *) pdata);
+}
+
+int CVBPSpgmr(void *cvode_mem, int pretype, int maxl, void *p_data)
+{
+  int flag;
+
+  if ( p_data == NULL ) {
+    fprintf(stderr, MSGBP_NO_PDATA);
+    return(CV_PDATA_NULL);
+  } 
+
+  flag = CVSpgmr(cvode_mem, pretype, maxl);
+  if(flag != CVSPGMR_SUCCESS) return(flag);
+
+  flag = CVSpgmrSetPreconditioner(cvode_mem, CVBandPrecSetup, CVBandPrecSolve, p_data);
+  if(flag != CVSPGMR_SUCCESS) return(flag);
+
+  return(CVSPGMR_SUCCESS);
+}
+
+void CVBandPrecFree(void *bp_data)
+{
+  CVBandPrecData pdata;
+
+  if ( bp_data != NULL ) {
+    pdata = (CVBandPrecData) bp_data;
+    BandFreeMat(pdata->savedJ);
+    BandFreeMat(pdata->savedP);
+    BandFreePiv(pdata->pivots);
+    free(pdata);
+  }
+}
+
+int CVBandPrecGetWorkSpace(void *bp_data, long int *lenrwBP, long int *leniwBP)
+{
+  CVBandPrecData pdata;
+  long int N, ml, mu, smu;
+
+  if ( bp_data == NULL ) {
+    fprintf(stderr, MSGBP_PDATA_NULL);
+    return(CV_PDATA_NULL);
+  } 
+
+  pdata = (CVBandPrecData) bp_data;
+  N   = pdata->N;
+  mu  = pdata->mu;
+  ml  = pdata->ml;
+  smu = MIN( N-1, mu + ml);
+
+  *leniwBP = pdata->N;
+  *lenrwBP = N * ( 2*ml + smu + mu + 2 );
+
+  return(CV_SUCCESS);
+}
+
+int CVBandPrecGetNumRhsEvals(void *bp_data, long int *nfevalsBP)
+{
+  CVBandPrecData pdata;
+
+  if ( bp_data == NULL ) {
+    fprintf(stderr, MSGBP_PDATA_NULL);
+    return(CV_PDATA_NULL);
+  } 
+
+  pdata = (CVBandPrecData) bp_data;
+
+  *nfevalsBP = pdata->nfeBP;
+
+  return(CV_SUCCESS);
+}
+
+/* Readability Replacements */
+
+#define N         (pdata->N)
+#define mu        (pdata->mu)
+#define ml        (pdata->ml)
+#define pivots    (pdata->pivots)
+#define savedJ    (pdata->savedJ)
+#define savedP    (pdata->savedP)
+#define nfeBP     (pdata->nfeBP)
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandPrecSetup
+ * -----------------------------------------------------------------
+ * Together CVBandPrecSetup and CVBandPrecSolve use a banded           
+ * difference quotient Jacobian to create a preconditioner.       
+ * CVBandPrecSetup calculates a new J, if necessary, then           
+ * calculates P = I - gamma*J, and does an LU factorization of P. 
+ *                                                                 
+ * The parameters of CVBandPrecSetup are as follows:                
+ *                                                                 
+ * t       is the current value of the independent variable.      
+ *                                                                 
+ * y       is the current value of the dependent variable vector, 
+ *           namely the predicted value of y(t).                  
+ *                                                                
+ * fy      is the vector f(t,y).                                  
+ *                                                                
+ * jok     is an input flag indicating whether Jacobian-related   
+ *         data needs to be recomputed, as follows:               
+ *           jok == FALSE means recompute Jacobian-related data   
+ *                  from scratch.                                 
+ *           jok == TRUE  means that Jacobian data from the       
+ *                  previous PrecSetup call will be reused          
+ *                  (with the current value of gamma).            
+ *         A CVBandPrecSetup call with jok == TRUE should only      
+ *         occur after a call with jok == FALSE.                  
+ *                                                                
+ * *jcurPtr is a pointer to an output integer flag which is        
+ *          set by CVBandPrecond as follows:                       
+ *           *jcurPtr = TRUE if Jacobian data was recomputed.     
+ *           *jcurPtr = FALSE if Jacobian data was not recomputed,
+ *                      but saved data was reused.                
+ *                                                                
+ * gamma   is the scalar appearing in the Newton matrix.          
+ *                                                                
+ * bp_data is a pointer to preconditoner data - the same as the   
+ *           bp_data parameter passed to CVSpgmr.                
+ *                                                               
+ * tmp1, tmp2, and tmp3 are pointers to memory allocated    
+ *           for vectors of length N for work space.  This        
+ *           routine uses only tmp1 and tmp2.                 
+ *                                                                
+ *                                                                
+ * The value to be returned by the CVBandPrecSetup function is      
+ *   0  if successful, or                                         
+ *   1  if the band factorization failed.                         
+ *
+ * -----------------------------------------------------------------
+ */
+
+static int CVBandPrecSetup(realtype t, N_Vector y, N_Vector fy, 
+                           booleantype jok, booleantype *jcurPtr, 
+                           realtype gamma, void *bp_data,
+                           N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  long int ier;
+  CVBandPrecData pdata;
+
+  /* Assume matrix and pivots have already been allocated. */
+  pdata = (CVBandPrecData) bp_data;
+
+  if (jok) {
+    /* If jok = TRUE, use saved copy of J. */
+    *jcurPtr = FALSE;
+    BandCopy(savedJ, savedP, mu, ml);
+  } else {
+    /* If jok = FALSE, call CVBandPDQJac for new J value. */
+    *jcurPtr = TRUE;
+    BandZero(savedJ);
+    CVBandPDQJac(pdata, t, y, fy, tmp1, tmp2);
+    BandCopy(savedJ, savedP, mu, ml);
+  }
+  
+  /* Scale and add I to get savedP = I - gamma*J. */
+  BandScale(-gamma, savedP);
+  BandAddI(savedP);
+ 
+  /* Do LU factorization of matrix. */
+  ier = BandFactor(savedP, pivots);
+ 
+  /* Return 0 if the LU was complete; otherwise return 1. */
+  if (ier > 0) return(1);
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandPrecSolve
+ * -----------------------------------------------------------------
+ * CVBandPrecSolve solves a linear system P z = r, where P is the
+ * matrix computed by CVBandPrecond.
+ *
+ * The parameters of CVBandPrecSolve used here are as follows:
+ *
+ * r       is the right-hand side vector of the linear system.
+ *
+ * bp_data is a pointer to preconditioner data - the same as the
+ *          bp_data parameter passed to CVSpgmr.
+ *
+ * z       is the output vector computed by CVBandPrecSolve.
+ *
+ * The value returned by the CVBandPrecSolve function is always 0,
+ * indicating success.
+ * -----------------------------------------------------------------
+ */ 
+
+static int CVBandPrecSolve(realtype t, N_Vector y, N_Vector fy, 
+                           N_Vector r, N_Vector z, 
+                           realtype gamma, realtype delta,
+                           int lr, void *bp_data, N_Vector tmp)
+{
+  CVBandPrecData pdata;
+  realtype *zd;
+
+  /* Assume matrix and pivots have already been allocated. */
+  pdata = (CVBandPrecData) bp_data;
+
+  /* Copy r to z. */
+  N_VScale(ONE, r, z);
+
+  /* Do band backsolve on the vector z. */
+  zd = N_VGetArrayPointer(z);
+
+  BandBacksolve(savedP, pivots, zd);
+
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandPDQJac
+ * -----------------------------------------------------------------
+ * This routine generates a banded difference quotient approximation to
+ * the Jacobian of f(t,y).  It assumes that a band matrix of type
+ * BandMat is stored column-wise, and that elements within each column
+ * are contiguous. This makes it possible to get the address of a column
+ * of J via the macro BAND_COL and to write a simple for loop to set
+ * each of the elements of a column in succession.
+ * -----------------------------------------------------------------
+ */
+
+#define ewt    (cv_mem->cv_ewt)
+#define uround (cv_mem->cv_uround)
+#define h      (cv_mem->cv_h)
+#define f      (cv_mem->cv_f)
+#define f_data (cv_mem->cv_f_data)
+
+static void CVBandPDQJac(CVBandPrecData pdata, 
+                         realtype t, N_Vector y, N_Vector fy, 
+                         N_Vector ftemp, N_Vector ytemp)
+{
+  CVodeMem cv_mem;
+  realtype    fnorm, minInc, inc, inc_inv, srur;
+  long int group, i, j, width, ngroups, i1, i2;
+  realtype *col_j, *ewt_data, *fy_data, *ftemp_data, *y_data, *ytemp_data;
+
+  cv_mem = (CVodeMem) pdata->cvode_mem;
+
+  /* Obtain pointers to the data for ewt, fy, ftemp, y, ytemp. */
+  ewt_data   = N_VGetArrayPointer(ewt);
+  fy_data    = N_VGetArrayPointer(fy);
+  ftemp_data = N_VGetArrayPointer(ftemp);
+  y_data     = N_VGetArrayPointer(y);
+  ytemp_data = N_VGetArrayPointer(ytemp);
+
+  /* Load ytemp with y = predicted y vector. */
+  N_VScale(ONE, y, ytemp);
+
+  /* Set minimum increment based on uround and norm of f. */
+  srur = RSqrt(uround);
+  fnorm = N_VWrmsNorm(fy, ewt);
+  minInc = (fnorm != ZERO) ?
+           (MIN_INC_MULT * ABS(h) * uround * N * fnorm) : ONE;
+
+  /* Set bandwidth and number of column groups for band differencing. */
+  width = ml + mu + 1;
+  ngroups = MIN(width, N);
+  
+  for (group = 1; group <= ngroups; group++) {
+    
+    /* Increment all y_j in group. */
+    for(j = group-1; j < N; j += width) {
+      inc = MAX(srur*ABS(y_data[j]), minInc/ewt_data[j]);
+      ytemp_data[j] += inc;
+    }
+
+    /* Evaluate f with incremented y. */
+
+    f(t, ytemp, ftemp, f_data);
+    nfeBP++;
+
+    /* Restore ytemp, then form and load difference quotients. */
+    for (j = group-1; j < N; j += width) {
+      ytemp_data[j] = y_data[j];
+      col_j = BAND_COL(savedJ,j);
+      inc = MAX(srur*ABS(y_data[j]), minInc/ewt_data[j]);
+      inc_inv = ONE/inc;
+      i1 = MAX(0, j-mu);
+      i2 = MIN(j+ml, N-1);
+      for (i=i1; i <= i2; i++)
+        BAND_COL_ELEM(col_j,i,j) =
+          inc_inv * (ftemp_data[i] - fy_data[i]);
+    }
+  }
+}
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvbandpre_impl.h b/Win32/WinCVODE/sundials/cvode/source/cvbandpre_impl.h
new file mode 100644
index 0000000..0c4b2ba
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvbandpre_impl.h
@@ -0,0 +1,70 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Michael Wittman, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the CVBANDPRE module.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVBANDPRE_IMPL_H
+#define _CVBANDPRE_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "cvbandpre.h"
+
+#include "band.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Type: CVBandPrecData
+ * -----------------------------------------------------------------
+ */
+
+typedef struct {
+
+  /* Data set by user in CVBandPrecAlloc: */
+  long int N;
+  long int ml, mu;
+
+  /* Data set by CVBandPrecSetup: */
+  BandMat savedJ;
+  BandMat savedP;
+  long int *pivots;
+
+  /* Rhs calls */
+  long int nfeBP;
+
+  /* Pointer to cvode_mem */
+  void *cvode_mem;
+
+} *CVBandPrecData;
+
+/* Error Messages */
+
+#define _CVBALLOC_        "CVBandPreAlloc-- "
+#define MSGBP_CVMEM_NULL  _CVBALLOC_ "Integrator memory is NULL.\n\n"
+#define MSGBP_BAD_NVECTOR _CVBALLOC_ "A required vector operation is not implemented.\n\n"
+
+#define MSGBP_PDATA_NULL "CVBandPrecGet*-- BandPrecData is NULL.\n\n"
+
+#define MSGBP_NO_PDATA "CVBPSpgmr-- BandPrecData is NULL.\n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvbbdpre.c b/Win32/WinCVODE/sundials/cvode/source/cvbbdpre.c
new file mode 100644
index 0000000..646914e
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvbbdpre.c
@@ -0,0 +1,464 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Michael Wittman, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This file contains implementations of routines for a
+ * band-block-diagonal preconditioner, i.e. a block-diagonal
+ * matrix with banded blocks, for use with CVODE, CVSpgmr, and
+ * the parallel implementation of NVECTOR.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvbbdpre_impl.h"
+#include "cvode_impl.h"
+#include "cvspgmr_impl.h"
+
+#include "sundialsmath.h"
+
+#define MIN_INC_MULT RCONST(1000.0)
+#define ZERO         RCONST(0.0)
+#define ONE          RCONST(1.0)
+
+/* Prototypes of functions CVBBDPrecSetup and CVBBDPrecSolve */
+
+static int CVBBDPrecSetup(realtype t, N_Vector y, N_Vector fy, 
+                          booleantype jok, booleantype *jcurPtr, 
+                          realtype gamma, void *bbd_data, 
+                          N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+static int CVBBDPrecSolve(realtype t, N_Vector y, N_Vector fy, 
+                          N_Vector r, N_Vector z, 
+                          realtype gamma, realtype delta,
+                          int lr, void *bbd_data, N_Vector tmp);
+
+/* Prototype for difference quotient Jacobian calculation routine */
+
+static void CVBBDDQJac(CVBBDPrecData pdata, realtype t, 
+                       N_Vector y, N_Vector gy, 
+                       N_Vector ytemp, N_Vector gtemp);
+
+/* Redability replacements */
+#define errfp    (cv_mem->cv_errfp)
+#define uround   (cv_mem->cv_uround)
+#define vec_tmpl (cv_mem->cv_tempv)
+
+/*
+ * -----------------------------------------------------------------
+ * User-Callable Functions: malloc, reinit, and free
+ * -----------------------------------------------------------------
+ */
+
+void *CVBBDPrecAlloc(void *cvode_mem, long int Nlocal, 
+                     long int mudq, long int mldq,
+                     long int mukeep, long int mlkeep, 
+                     realtype dqrely, 
+                     CVLocalFn gloc, CVCommFn cfn)
+{
+  CVodeMem cv_mem;
+  CVBBDPrecData pdata;
+  long int muk, mlk, storage_mu;
+
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGBBDP_CVMEM_NULL);
+    return(NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Test if the NVECTOR package is compatible with the BLOCK BAND preconditioner */
+  if(vec_tmpl->ops->nvgetarraypointer == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGBBDP_BAD_NVECTOR);
+    return(NULL);
+  }
+
+  /* Allocate data memory */
+  pdata = (CVBBDPrecData) malloc(sizeof *pdata);  
+  if (pdata == NULL) return(NULL);
+
+  /* Set pointers to gloc and cfn; load half-bandwidths */
+  pdata->cvode_mem = cvode_mem;
+  pdata->gloc = gloc;
+  pdata->cfn = cfn;
+  pdata->mudq = MIN( Nlocal-1, MAX(0,mudq) );
+  pdata->mldq = MIN( Nlocal-1, MAX(0,mldq) );
+  muk = MIN( Nlocal-1, MAX(0,mukeep) );
+  mlk = MIN( Nlocal-1, MAX(0,mlkeep) );
+  pdata->mukeep = muk;
+  pdata->mlkeep = mlk;
+
+  /* Allocate memory for saved Jacobian */
+  pdata->savedJ = BandAllocMat(Nlocal, muk, mlk, muk);
+  if (pdata->savedJ == NULL) { free(pdata); return(NULL); }
+
+  /* Allocate memory for preconditioner matrix */
+  storage_mu = MIN(Nlocal-1, muk + mlk);
+  pdata->savedP = BandAllocMat(Nlocal, muk, mlk, storage_mu);
+  if (pdata->savedP == NULL) {
+    BandFreeMat(pdata->savedJ);
+    free(pdata);
+    return(NULL);
+  }
+  /* Allocate memory for pivots */
+  pdata->pivots = BandAllocPiv(Nlocal);
+  if (pdata->savedJ == NULL) {
+    BandFreeMat(pdata->savedP);
+    BandFreeMat(pdata->savedJ);
+    free(pdata);
+    return(NULL);
+  }
+
+  /* Set pdata->dqrely based on input dqrely (0 implies default). */
+  pdata->dqrely = (dqrely > ZERO) ? dqrely : RSqrt(uround);
+
+  /* Store Nlocal to be used in CVBBDPrecSetup */
+  pdata->n_local = Nlocal;
+
+  /* Set work space sizes and initialize nge */
+  pdata->rpwsize = Nlocal*(muk + 2*mlk + storage_mu + 2);
+  pdata->ipwsize = Nlocal;
+  pdata->nge = 0;
+
+  return((void *)pdata);
+}
+
+int CVBBDSpgmr(void *cvode_mem, int pretype, int maxl, void *bbd_data)
+{
+  int flag;
+
+  if ( bbd_data == NULL ) {
+    fprintf(stderr, MSGBBDP_NO_PDATA);
+    return(CV_PDATA_NULL);
+  } 
+
+  flag = CVSpgmr(cvode_mem, pretype, maxl);
+  if(flag != CVSPGMR_SUCCESS) return(flag);
+
+  flag = CVSpgmrSetPreconditioner(cvode_mem, CVBBDPrecSetup, CVBBDPrecSolve, bbd_data);
+  if(flag != CVSPGMR_SUCCESS) return(flag);
+
+  return(CVSPGMR_SUCCESS);
+}
+
+int CVBBDPrecReInit(void *bbd_data, 
+                    long int mudq, long int mldq, 
+                    realtype dqrely, 
+                    CVLocalFn gloc, CVCommFn cfn)
+{
+  CVBBDPrecData pdata;
+  CVodeMem cv_mem;
+  long int Nlocal;
+
+  if ( bbd_data == NULL ) {
+    fprintf(stderr, MSGBBDP_NO_PDATA);
+    return(CV_PDATA_NULL);
+  } 
+
+  pdata = (CVBBDPrecData) bbd_data;
+  cv_mem = (CVodeMem) pdata->cvode_mem;
+
+  /* Set pointers to gloc and cfn; load half-bandwidths */
+  pdata->gloc = gloc;
+  pdata->cfn = cfn;
+  Nlocal = pdata->n_local;
+  pdata->mudq = MIN( Nlocal-1, MAX(0,mudq) );
+  pdata->mldq = MIN( Nlocal-1, MAX(0,mldq) );
+
+  /* Set pdata->dqrely based on input dqrely (0 implies default). */
+  pdata->dqrely = (dqrely > ZERO) ? dqrely : RSqrt(uround);
+
+  /* Re-initialize nge */
+  pdata->nge = 0;
+
+  return(CV_SUCCESS);
+}
+
+void CVBBDPrecFree(void *bbd_data)
+{
+  CVBBDPrecData pdata;
+  
+  if ( bbd_data != NULL ) {
+    pdata = (CVBBDPrecData) bbd_data;
+    BandFreeMat(pdata->savedJ);
+    BandFreeMat(pdata->savedP);
+    BandFreePiv(pdata->pivots);
+    free(pdata);
+  }
+}
+
+int CVBBDPrecGetWorkSpace(void *bbd_data, long int *lenrwBBDP, long int *leniwBBDP)
+{
+  CVBBDPrecData pdata;
+
+  if ( bbd_data == NULL ) {
+    fprintf(stderr, MSGBBDP_PDATA_NULL);
+    return(CV_PDATA_NULL);
+  } 
+
+  pdata = (CVBBDPrecData) bbd_data;
+
+  *lenrwBBDP = pdata->rpwsize;
+  *leniwBBDP = pdata->ipwsize;
+
+  return(CV_SUCCESS);
+}
+
+int CVBBDPrecGetNumGfnEvals(void *bbd_data, long int *ngevalsBBDP)
+{
+  CVBBDPrecData pdata;
+
+  if ( bbd_data == NULL ) {
+    fprintf(stderr, MSGBBDP_PDATA_NULL);
+    return(CV_PDATA_NULL);
+  } 
+
+  pdata = (CVBBDPrecData) bbd_data;
+
+  *ngevalsBBDP = pdata->nge;
+
+  return(CV_SUCCESS);
+}
+
+
+/* Readability Replacements */
+
+#define Nlocal    (pdata->n_local)
+#define mudq      (pdata->mudq)
+#define mldq      (pdata->mldq)
+#define mukeep    (pdata->mukeep)
+#define mlkeep    (pdata->mlkeep)
+#define dqrely    (pdata->dqrely)
+#define gloc      (pdata->gloc)
+#define cfn       (pdata->cfn)
+#define savedJ    (pdata->savedJ)
+#define savedP    (pdata->savedP)
+#define pivots    (pdata->pivots)
+#define nge       (pdata->nge)
+
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBBDPrecSetup                                      
+ * -----------------------------------------------------------------
+ * CVBBDPrecSetup generates and factors a banded block of the     
+ * preconditioner matrix on each processor, via calls to the      
+ * user-supplied gloc and cfn functions. It uses difference       
+ * quotient approximations to the Jacobian elements.              
+ *                                                                
+ * CVBBDPrecSetup calculates a new J,if necessary, then calculates
+ * P = I - gamma*J, and does an LU factorization of P.            
+ *                                                                
+ * The parameters of CVBBDPrecSetup used here are as follows:     
+ *                                                                
+ * t       is the current value of the independent variable.      
+ *                                                                
+ * y       is the current value of the dependent variable vector, 
+ *         namely the predicted value of y(t).                    
+ *                                                                
+ * fy      is the vector f(t,y).                                  
+ *                                                                
+ * jok     is an input flag indicating whether Jacobian-related   
+ *         data needs to be recomputed, as follows:               
+ *           jok == FALSE means recompute Jacobian-related data   
+ *                  from scratch.                                 
+ *           jok == TRUE  means that Jacobian data from the       
+ *                  previous CVBBDPrecon call can be reused       
+ *                  (with the current value of gamma).            
+ *         A CVBBDPrecon call with jok == TRUE should only occur  
+ *         after a call with jok == FALSE.                        
+ *                                                                
+ * jcurPtr is a pointer to an output integer flag which is        
+ *         set by CVBBDPrecon as follows:                         
+ *           *jcurPtr = TRUE if Jacobian data was recomputed.     
+ *           *jcurPtr = FALSE if Jacobian data was not recomputed,
+ *                      but saved data was reused.    
+ *                                                                
+ * gamma   is the scalar appearing in the Newton matrix.          
+ *                                                                
+ * bbd_data  is a pointer to user data - the same as the P_data   
+ *           parameter passed to CVSpgmr. For CVBBDPrecon, this   
+ *           should be of type CVBBDData.                         
+ *                                                                
+ * tmp1, tmp2, and tmp3 are pointers to memory allocated          
+ *           for NVectors which are be used by CVBBDPrecSetup     
+ *           as temporary storage or work space.                  
+ *                                                                
+ *                                                                
+ * Return value:                                                  
+ * The value returned by this CVBBDPrecSetup function is the int  
+ *   0  if successful,                                            
+ *   1  for a recoverable error (step will be retried).           
+ * -----------------------------------------------------------------
+ */
+
+static int CVBBDPrecSetup(realtype t, N_Vector y, N_Vector fy, 
+                          booleantype jok, booleantype *jcurPtr, 
+                          realtype gamma, void *bbd_data, 
+                          N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  long int ier;
+  CVBBDPrecData pdata;
+
+  pdata = (CVBBDPrecData) bbd_data;
+
+  if (jok) {
+    /* If jok = TRUE, use saved copy of J */
+    *jcurPtr = FALSE;
+    BandCopy(savedJ, savedP, mukeep, mlkeep);
+  } else {
+    /* Otherwise call CVBBDDQJac for new J value */
+    *jcurPtr = TRUE;
+    BandZero(savedJ);
+    CVBBDDQJac(pdata, t, y, tmp1, tmp2, tmp3);
+    nge += 1 + MIN(mldq + mudq + 1, Nlocal);
+    BandCopy(savedJ, savedP, mukeep, mlkeep);
+  }
+  
+  /* Scale and add I to get P = I - gamma*J */
+  BandScale(-gamma, savedP);
+  BandAddI(savedP);
+ 
+  /* Do LU factorization of P in place */
+  ier = BandFactor(savedP, pivots);
+ 
+  /* Return 0 if the LU was complete; otherwise return 1 */
+  if (ier > 0) return(1);
+  return(0);
+}
+
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBBDPrecSolve                                      
+ * -----------------------------------------------------------------
+ * CVBBDPrecSolve solves a linear system P z = r, with the        
+ * band-block-diagonal preconditioner matrix P generated and      
+ * factored by CVBBDPrecSetup.                                    
+ *                                                                
+ * The parameters of CVBBDPrecSolve used here are as follows:     
+ *                                                                
+ * r      is the right-hand side vector of the linear system.     
+ *                                                                
+ * bbd_data is a pointer to the preconditioner data returned by   
+ *        CVBBDPrecAlloc.                                         
+ *                                                                
+ * z      is the output vector computed by CVBBDPrecSolve.        
+ *                                                                
+ * The value returned by the CVBBDPrecSolve function is always 0, 
+ * indicating success.                                            
+ * -----------------------------------------------------------------
+ */
+
+static int CVBBDPrecSolve(realtype t, N_Vector y, N_Vector fy, 
+                          N_Vector r, N_Vector z, 
+                          realtype gamma, realtype delta,
+                          int lr, void *bbd_data, N_Vector tmp)
+{
+  CVBBDPrecData pdata;
+  realtype *zd;
+
+  pdata = (CVBBDPrecData) bbd_data;
+
+  /* Copy r to z, then do backsolve and return */
+  N_VScale(ONE, r, z);
+  
+  zd = N_VGetArrayPointer(z);
+
+  BandBacksolve(savedP, pivots, zd);
+
+  return(0);
+}
+
+
+/*
+ * -----------------------------------------------------------------
+ * CVBBDDQJac 
+ * -----------------------------------------------------------------
+ * This routine generates a banded difference quotient approximation to
+ * the local block of the Jacobian of g(t,y).  It assumes that a band 
+ * matrix of type BandMat is stored columnwise, and that elements within
+ * each column are contiguous.  All matrix elements are generated as
+ * difference quotients, by way of calls to the user routine gloc.
+ * By virtue of the band structure, the number of these calls is
+ * bandwidth + 1, where bandwidth = mldq + mudq + 1.
+ * But the band matrix kept has bandwidth = mlkeep + mukeep + 1.
+ * This routine also assumes that the local elements of a vector are
+ * stored contiguously.
+ * -----------------------------------------------------------------
+ */
+
+#define ewt    (cv_mem->cv_ewt)
+#define h      (cv_mem->cv_h)
+#define f_data (cv_mem->cv_f_data)
+
+static void CVBBDDQJac(CVBBDPrecData pdata, realtype t, 
+                       N_Vector y, N_Vector gy, 
+                       N_Vector ytemp, N_Vector gtemp)
+{
+  CVodeMem cv_mem;
+  realtype    gnorm, minInc, inc, inc_inv;
+  long int group, i, j, width, ngroups, i1, i2;
+  realtype *y_data, *ewt_data, *gy_data, *gtemp_data, *ytemp_data, *col_j;
+
+  cv_mem = (CVodeMem) pdata->cvode_mem;
+
+  /* Load ytemp with y = predicted solution vector */
+  N_VScale(ONE, y, ytemp);
+
+  /* Call cfn and gloc to get base value of g(t,y) */
+  if (cfn != NULL)
+    cfn (Nlocal, t, y, f_data);
+  gloc(Nlocal, t, ytemp, gy, f_data);
+
+  /* Obtain pointers to the data for various vectors */
+  y_data     =  N_VGetArrayPointer(y);
+  gy_data    =  N_VGetArrayPointer(gy);
+  ewt_data   =  N_VGetArrayPointer(ewt);
+  ytemp_data =  N_VGetArrayPointer(ytemp);
+  gtemp_data =  N_VGetArrayPointer(gtemp);
+
+  /* Set minimum increment based on uround and norm of g */
+  gnorm = N_VWrmsNorm(gy, ewt);
+  minInc = (gnorm != ZERO) ?
+           (MIN_INC_MULT * ABS(h) * uround * Nlocal * gnorm) : ONE;
+
+  /* Set bandwidth and number of column groups for band differencing */
+  width = mldq + mudq + 1;
+  ngroups = MIN(width, Nlocal);
+
+  /* Loop over groups */  
+  for (group=1; group <= ngroups; group++) {
+    
+    /* Increment all y_j in group */
+    for(j=group-1; j < Nlocal; j+=width) {
+      inc = MAX(dqrely*ABS(y_data[j]), minInc/ewt_data[j]);
+      ytemp_data[j] += inc;
+    }
+
+    /* Evaluate g with incremented y */
+    gloc(Nlocal, t, ytemp, gtemp, f_data);
+
+    /* Restore ytemp, then form and load difference quotients */
+    for (j=group-1; j < Nlocal; j+=width) {
+      ytemp_data[j] = y_data[j];
+      col_j = BAND_COL(savedJ,j);
+      inc = MAX(dqrely*ABS(y_data[j]), minInc/ewt_data[j]);
+      inc_inv = ONE/inc;
+      i1 = MAX(0, j-mukeep);
+      i2 = MIN(j+mlkeep, Nlocal-1);
+      for (i=i1; i <= i2; i++)
+        BAND_COL_ELEM(col_j,i,j) =
+          inc_inv * (gtemp_data[i] - gy_data[i]);
+    }
+  }
+}
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvbbdpre_impl.h b/Win32/WinCVODE/sundials/cvode/source/cvbbdpre_impl.h
new file mode 100644
index 0000000..b49ec38
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvbbdpre_impl.h
@@ -0,0 +1,78 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Michael Wittman, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the CVBBDPRE module.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVBBDPRE_IMPL_H
+#define _CVBBDPRE_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "cvbbdpre.h"
+
+#include "band.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Type: CVBBDPrecData
+ * -----------------------------------------------------------------
+ */
+
+typedef struct {
+
+  /* passed by user to CVBBDPrecAlloc, used by PrecSetup/PrecSolve */
+  long int mudq, mldq, mukeep, mlkeep;
+  realtype dqrely;
+  CVLocalFn gloc;
+  CVCommFn cfn;
+
+  /* set by CVBBDPrecSetup and used by CVBBDPrecSolve */
+  BandMat savedJ;
+  BandMat savedP;
+  long int *pivots;
+
+  /* set by CVBBDPrecAlloc and used by CVBBDPrecSetup */
+  long int n_local;
+
+  /* available for optional output: */
+  long int rpwsize;
+  long int ipwsize;
+  long int nge;
+
+  /* Pointer to cvode_mem */
+  void *cvode_mem;
+
+} *CVBBDPrecData;
+
+
+/* Error Messages */
+
+#define _CVBBDALLOC_        "CVBBDAlloc-- "
+#define MSGBBDP_CVMEM_NULL  _CVBBDALLOC_ "Integrator memory is NULL.\n\n"
+#define MSGBBDP_BAD_NVECTOR _CVBBDALLOC_ "A required vector operation is not implemented.\n\n"
+
+#define MSGBBDP_PDATA_NULL "CVBBDPrecGet*-- BBDPrecData is NULL.\n\n"
+
+#define MSGBBDP_NO_PDATA "CVBBDSpgmr-- BBDPrecData is NULL.\n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvdense.c b/Win32/WinCVODE/sundials/cvode/source/cvdense.c
new file mode 100644
index 0000000..5787b3f
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvdense.c
@@ -0,0 +1,537 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the CVDENSE linear solver.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvdense_impl.h"
+#include "cvode_impl.h"
+
+#include "sundialsmath.h"
+
+/* Other Constants */
+
+#define MIN_INC_MULT RCONST(1000.0)
+#define ZERO         RCONST(0.0)
+#define ONE          RCONST(1.0)
+#define TWO          RCONST(2.0)
+
+/* CVDENSE linit, lsetup, lsolve, and lfree routines */
+ 
+static int CVDenseInit(CVodeMem cv_mem);
+
+static int CVDenseSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                        N_Vector fpred, booleantype *jcurPtr, 
+                        N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3);
+
+static int CVDenseSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                        N_Vector ycur, N_Vector fcur);
+
+static void CVDenseFree(CVodeMem cv_mem);
+
+/* CVDENSE DQJac routine */
+
+static void CVDenseDQJac(long int n, DenseMat J, realtype t, 
+                         N_Vector y, N_Vector fy, void *jac_data,
+                         N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/* Readability Replacements */
+
+#define lmm       (cv_mem->cv_lmm)
+#define f         (cv_mem->cv_f)
+#define f_data    (cv_mem->cv_f_data)
+#define uround    (cv_mem->cv_uround)
+#define nst       (cv_mem->cv_nst)
+#define tn        (cv_mem->cv_tn)
+#define h         (cv_mem->cv_h)
+#define gamma     (cv_mem->cv_gamma)
+#define gammap    (cv_mem->cv_gammap)
+#define gamrat    (cv_mem->cv_gamrat)
+#define ewt       (cv_mem->cv_ewt)
+#define errfp     (cv_mem->cv_errfp)
+#define linit     (cv_mem->cv_linit)
+#define lsetup    (cv_mem->cv_lsetup)
+#define lsolve    (cv_mem->cv_lsolve)
+#define lfree     (cv_mem->cv_lfree)
+#define lmem      (cv_mem->cv_lmem)
+#define vec_tmpl     (cv_mem->cv_tempv)
+#define setupNonNull (cv_mem->cv_setupNonNull)
+
+#define n         (cvdense_mem->d_n)
+#define jac       (cvdense_mem->d_jac)
+#define M         (cvdense_mem->d_M)
+#define pivots    (cvdense_mem->d_pivots)
+#define savedJ    (cvdense_mem->d_savedJ)
+#define nstlj     (cvdense_mem->d_nstlj)
+#define nje       (cvdense_mem->d_nje)
+#define nfeD      (cvdense_mem->d_nfeD)
+#define J_data    (cvdense_mem->d_J_data)
+#define last_flag (cvdense_mem->d_last_flag)
+                  
+/*
+ * -----------------------------------------------------------------
+ * CVDense
+ * -----------------------------------------------------------------
+ * This routine initializes the memory record and sets various function
+ * fields specific to the dense linear solver module.  CVDense first
+ * calls the existing lfree routine if this is not NULL.  Then it sets
+ * the cv_linit, cv_lsetup, cv_lsolve, cv_lfree fields in (*cvode_mem)
+ * to be CVDenseInit, CVDenseSetup, CVDenseSolve, and CVDenseFree,
+ * respectively.  It allocates memory for a structure of type
+ * CVDenseMemRec and sets the cv_lmem field in (*cvode_mem) to the
+ * address of this structure.  It sets setupNonNull in (*cvode_mem) to
+ * TRUE, and the d_jac field to the default CVDenseDQJac.
+ * Finally, it allocates memory for M, savedJ, and pivots.
+ * The return value is SUCCESS = 0, or LMEM_FAIL = -1.
+ *
+ * NOTE: The dense linear solver assumes a serial implementation
+ *       of the NVECTOR package. Therefore, CVDense will first 
+ *       test for compatible a compatible N_Vector internal
+ *       representation by checking that N_VGetArrayPointer and
+ *       N_VSetArrayPointer exist.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVDense(void *cvode_mem, long int N)
+{
+  CVodeMem cv_mem;
+  CVDenseMem cvdense_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDS_CVMEM_NULL);
+    return(CVDENSE_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Test if the NVECTOR package is compatible with the DENSE solver */
+  if (vec_tmpl->ops->nvgetarraypointer == NULL ||
+      vec_tmpl->ops->nvsetarraypointer == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_BAD_NVECTOR);
+    return(CVDENSE_ILL_INPUT);
+  }
+
+  if (lfree !=NULL) lfree(cv_mem);
+
+  /* Set four main function fields in cv_mem */
+  linit  = CVDenseInit;
+  lsetup = CVDenseSetup;
+  lsolve = CVDenseSolve;
+  lfree  = CVDenseFree;
+
+  /* Get memory for CVDenseMemRec */
+  cvdense_mem = (CVDenseMem) malloc(sizeof(CVDenseMemRec));
+  if (cvdense_mem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_MEM_FAIL);
+    return(CVDENSE_MEM_FAIL);
+  }
+
+  /* Set default Jacobian routine and Jacobian data */
+  jac = CVDenseDQJac;
+  J_data = cvode_mem;
+  last_flag = CVDENSE_SUCCESS;
+
+  setupNonNull = TRUE;
+
+  /* Set problem dimension */
+  n = N;
+
+  /* Allocate memory for M, savedJ, and pivot array */
+  
+  M = DenseAllocMat(N);
+  if (M == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_MEM_FAIL);
+    return(CVDENSE_MEM_FAIL);
+  }
+  savedJ = DenseAllocMat(N);
+  if (savedJ == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_MEM_FAIL);
+    DenseFreeMat(M);
+    return(CVDENSE_MEM_FAIL);
+  }
+  pivots = DenseAllocPiv(N);
+  if (pivots == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_MEM_FAIL);
+    DenseFreeMat(M);
+    DenseFreeMat(savedJ);
+    return(CVDENSE_MEM_FAIL);
+  }
+
+  /* Attach linear solver memory to integrator memory */
+  lmem = cvdense_mem;
+
+  return(CVDENSE_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseSetJacFn
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVDenseSetJacFn(void *cvode_mem, CVDenseJacFn djac, void *jac_data)
+{
+  CVodeMem cv_mem;
+  CVDenseMem cvdense_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDS_SETGET_CVMEM_NULL);
+    return(CVDENSE_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_SETGET_LMEM_NULL);
+    return(CVDENSE_LMEM_NULL);
+  }
+  cvdense_mem = (CVDenseMem) lmem;
+
+  jac = djac;
+  if (djac != NULL) J_data = jac_data;
+
+  return(CVDENSE_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseGetWorkSpace
+ * -----------------------------------------------------------------
+ */
+
+int CVDenseGetWorkSpace(void *cvode_mem, long int *lenrwD, long int *leniwD)
+{
+  CVodeMem cv_mem;
+  CVDenseMem cvdense_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDS_SETGET_CVMEM_NULL);
+    return(CVDENSE_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_SETGET_LMEM_NULL);
+    return(CVDENSE_LMEM_NULL);
+  }
+  cvdense_mem = (CVDenseMem) lmem;
+
+  *lenrwD = 2*n*n;
+  *leniwD = n;
+
+  return(CVDENSE_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseGetNumJacEvals
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVDenseGetNumJacEvals(void *cvode_mem, long int *njevalsD)
+{
+  CVodeMem cv_mem;
+  CVDenseMem cvdense_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDS_SETGET_CVMEM_NULL);
+    return(CVDENSE_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_SETGET_LMEM_NULL);
+    return(CVDENSE_LMEM_NULL);
+  }
+  cvdense_mem = (CVDenseMem) lmem;
+
+  *njevalsD = nje;
+
+  return(CVDENSE_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseGetNumRhsEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVDenseGetNumRhsEvals(void *cvode_mem, long int *nfevalsD)
+{
+  CVodeMem cv_mem;
+  CVDenseMem cvdense_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDS_SETGET_CVMEM_NULL);
+    return(CVDENSE_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_SETGET_LMEM_NULL);
+    return(CVDENSE_LMEM_NULL);
+  }
+  cvdense_mem = (CVDenseMem) lmem;
+
+  *nfevalsD = nfeD;
+
+  return(CVDENSE_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseGetLastFlag
+ * -----------------------------------------------------------------
+ */
+
+int CVDenseGetLastFlag(void *cvode_mem, int *flag)
+{
+  CVodeMem cv_mem;
+  CVDenseMem cvdense_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDS_SETGET_CVMEM_NULL);
+    return(CVDENSE_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_SETGET_LMEM_NULL);
+    return(CVDENSE_LMEM_NULL);
+  }
+  cvdense_mem = (CVDenseMem) lmem;
+
+  *flag = last_flag;
+
+  return(CVDENSE_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseInit
+ * -----------------------------------------------------------------
+ * This routine does remaining initializations specific to the dense
+ * linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static int CVDenseInit(CVodeMem cv_mem)
+{
+  CVDenseMem cvdense_mem;
+
+  cvdense_mem = (CVDenseMem) lmem;
+  
+  nje   = 0;
+  nfeD  = 0;
+  nstlj = 0;
+  
+  if (jac == NULL) {
+    jac = CVDenseDQJac;
+    J_data = cv_mem;
+  }
+
+  last_flag = CVDENSE_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseSetup
+ * -----------------------------------------------------------------
+ * This routine does the setup operations for the dense linear solver.
+ * It makes a decision whether or not to call the Jacobian evaluation
+ * routine based on various state variables, and if not it uses the 
+ * saved copy.  In any case, it constructs the Newton matrix 
+ * M = I - gamma*J, updates counters, and calls the dense LU 
+ * factorization routine.
+ * -----------------------------------------------------------------
+ */
+
+static int CVDenseSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                        N_Vector fpred, booleantype *jcurPtr, 
+                        N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3)
+{
+  booleantype jbad, jok;
+  realtype dgamma;
+  long int ier;
+  CVDenseMem cvdense_mem;
+  
+  cvdense_mem = (CVDenseMem) lmem;
+ 
+  /* Use nst, gamma/gammap, and convfail to set J eval. flag jok */
+ 
+  dgamma = ABS((gamma/gammap) - ONE);
+  jbad = (nst == 0) || (nst > nstlj + CVD_MSBJ) ||
+         ((convfail == CV_FAIL_BAD_J) && (dgamma < CVD_DGMAX)) ||
+         (convfail == CV_FAIL_OTHER);
+  jok = !jbad;
+ 
+  if (jok) {
+    /* If jok = TRUE, use saved copy of J */
+    *jcurPtr = FALSE;
+    DenseCopy(savedJ, M);
+  } else {
+    /* If jok = FALSE, call jac routine for new J value */
+    nje++;
+    nstlj = nst;
+    *jcurPtr = TRUE;
+    DenseZero(M); 
+    jac(n, M, tn, ypred, fpred, J_data, vtemp1, vtemp2, vtemp3);
+    DenseCopy(M, savedJ);
+  }
+  
+  /* Scale and add I to get M = I - gamma*J */
+  DenseScale(-gamma, M);
+  DenseAddI(M);
+
+  /* Do LU factorization of M */
+  ier = DenseFactor(M, pivots); 
+
+  /* Return 0 if the LU was complete; otherwise return 1 */
+  last_flag = ier;
+  if (ier > 0) return(1);
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseSolve
+ * -----------------------------------------------------------------
+ * This routine handles the solve operation for the dense linear solver
+ * by calling the dense backsolve routine.  The returned value is 0.
+ * -----------------------------------------------------------------
+ */
+
+static int CVDenseSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                        N_Vector ycur, N_Vector fcur)
+{
+  CVDenseMem cvdense_mem;
+  realtype *bd;
+
+  cvdense_mem = (CVDenseMem) lmem;
+  
+  bd = N_VGetArrayPointer(b);
+
+  DenseBacksolve(M, pivots, bd);
+
+  /* If CV_BDF, scale the correction to account for change in gamma */
+  if ((lmm == CV_BDF) && (gamrat != ONE)) {
+    N_VScale(TWO/(ONE + gamrat), b, b);
+  }
+  
+  last_flag = CVDENSE_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseFree
+ * -----------------------------------------------------------------
+ * This routine frees memory specific to the dense linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static void CVDenseFree(CVodeMem cv_mem)
+{
+  CVDenseMem  cvdense_mem;
+
+  cvdense_mem = (CVDenseMem) lmem;
+  
+  DenseFreeMat(M);
+  DenseFreeMat(savedJ);
+  DenseFreePiv(pivots);
+  free(cvdense_mem);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseDQJac 
+ * -----------------------------------------------------------------
+ * This routine generates a dense difference quotient approximation to
+ * the Jacobian of f(t,y). It assumes that a dense matrix of type
+ * DenseMat is stored column-wise, and that elements within each column
+ * are contiguous. The address of the jth column of J is obtained via
+ * the macro DENSE_COL and this pointer is associated with an N_Vector
+ * using the N_VGetArrayPointer/N_VSetArrayPointer functions. 
+ * Finally, the actual computation of the jth column of the Jacobian is 
+ * done with a call to N_VLinearSum.
+ * -----------------------------------------------------------------
+ */
+ 
+static void CVDenseDQJac(long int N, DenseMat J, realtype t, 
+                         N_Vector y, N_Vector fy, void *jac_data,
+                         N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  realtype fnorm, minInc, inc, inc_inv, yjsaved, srur;
+  realtype *tmp2_data, *y_data, *ewt_data;
+  N_Vector ftemp, jthCol;
+  long int j;
+
+  CVodeMem cv_mem;
+  CVDenseMem  cvdense_mem;
+
+  /* jac_data points to cvode_mem */
+  cv_mem = (CVodeMem) jac_data;
+  cvdense_mem = (CVDenseMem) lmem;
+
+  /* Save pointer to the array in tmp2 */
+  tmp2_data = N_VGetArrayPointer(tmp2);
+
+  /* Rename work vectors for readibility */
+  ftemp = tmp1; 
+  jthCol = tmp2;
+
+  /* Obtain pointers to the data for ewt, y */
+  ewt_data = N_VGetArrayPointer(ewt);
+  y_data   = N_VGetArrayPointer(y);
+
+  /* Set minimum increment based on uround and norm of f */
+  srur = RSqrt(uround);
+  fnorm = N_VWrmsNorm(fy, ewt);
+  minInc = (fnorm != ZERO) ?
+           (MIN_INC_MULT * ABS(h) * uround * N * fnorm) : ONE;
+
+  /* This is the only for loop for 0..N-1 in CVODE */
+
+  for (j = 0; j < N; j++) {
+
+    /* Generate the jth col of J(tn,y) */
+
+    N_VSetArrayPointer(DENSE_COL(J,j), jthCol);
+
+    yjsaved = y_data[j];
+    inc = MAX(srur*ABS(yjsaved), minInc/ewt_data[j]);
+    y_data[j] += inc;
+    f(tn, y, ftemp, f_data);
+    y_data[j] = yjsaved;
+
+    inc_inv = ONE/inc;
+    N_VLinearSum(inc_inv, ftemp, -inc_inv, fy, jthCol);
+
+    DENSE_COL(J,j) = N_VGetArrayPointer(jthCol);
+  }
+
+  /* Restore original array pointer in tmp2 */
+  N_VSetArrayPointer(tmp2_data, tmp2);
+
+  /* Increment counter nfeD */
+  nfeD += N;
+}
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvdense_impl.h b/Win32/WinCVODE/sundials/cvode/source/cvdense_impl.h
new file mode 100644
index 0000000..c675e69
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvdense_impl.h
@@ -0,0 +1,82 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the dense linear solver, CVDENSE.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVDENSE_IMPL_H
+#define _CVDENSE_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "cvdense.h"
+
+#include "dense.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Types : CVDenseMemRec, CVDenseMem                             
+ * -----------------------------------------------------------------
+ * The type CVDenseMem is pointer to a CVDenseMemRec.
+ * This structure contains CVDense solver-specific data. 
+ * -----------------------------------------------------------------
+ */
+
+typedef struct {
+
+  long int d_n;       /* problem dimension                      */
+
+  CVDenseJacFn d_jac; /* jac = Jacobian routine to be called    */
+
+  DenseMat d_M;       /* M = I - gamma J, gamma = h / l1        */
+  
+  long int *d_pivots; /* pivots = pivot array for PM = LU   */
+  
+  DenseMat d_savedJ;  /* savedJ = old Jacobian                  */
+  
+  long int  d_nstlj;  /* nstlj = nst at last Jacobian eval.     */
+  
+  long int d_nje;     /* nje = no. of calls to jac              */
+
+  long int d_nfeD;    /* nfeD = no. of calls to f due to
+                         difference quotient approximation of J */
+  
+  void *d_J_data;     /* J_data is passed to jac                */
+
+  int d_last_flag;    /* last error return flag */
+  
+} CVDenseMemRec, *CVDenseMem;
+
+/* Error Messages */
+
+#define _CVDENSE_         "CVDense-- "
+#define MSGDS_CVMEM_NULL  _CVDENSE_ "Integrator memory is NULL.\n\n"
+#define MSGDS_BAD_NVECTOR _CVDENSE_ "A required vector operation is not implemented.\n\n"
+#define MSGDS_MEM_FAIL    _CVDENSE_ "A memory request failed.\n\n"
+
+#define MSGDS_SETGET_CVMEM_NULL "CVDenseSet*/CVDenseGet*-- Integrator memory is NULL.\n\n"
+
+#define MSGDS_SETGET_LMEM_NULL "CVDenseSet*/CVDenseGet*-- cvdense memory is NULL.\n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvdiag.c b/Win32/WinCVODE/sundials/cvode/source/cvdiag.c
new file mode 100644
index 0000000..a52f5e3
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvdiag.c
@@ -0,0 +1,378 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the CVDIAG linear solver.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvdiag_impl.h"
+#include "cvode_impl.h"
+
+/* Other Constants */
+  
+#define FRACT RCONST(0.1)
+#define ONE   RCONST(1.0)
+
+/* CVDIAG linit, lsetup, lsolve, and lfree routines */
+
+static int CVDiagInit(CVodeMem cv_mem);
+
+static int CVDiagSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                       N_Vector fpred, booleantype *jcurPtr, N_Vector vtemp1,
+                       N_Vector vtemp2, N_Vector vtemp3);
+
+static int CVDiagSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                       N_Vector ycur, N_Vector fcur);
+
+static void CVDiagFree(CVodeMem cv_mem);
+
+/* Readability Replacements */
+
+#define lrw1      (cv_mem->cv_lrw1)
+#define liw1      (cv_mem->cv_liw1)
+#define f         (cv_mem->cv_f)
+#define f_data    (cv_mem->cv_f_data)
+#define uround    (cv_mem->cv_uround)
+#define tn        (cv_mem->cv_tn)
+#define h         (cv_mem->cv_h)
+#define rl1       (cv_mem->cv_rl1)
+#define gamma     (cv_mem->cv_gamma)
+#define ewt       (cv_mem->cv_ewt)
+#define nfe       (cv_mem->cv_nfe)
+#define errfp     (cv_mem->cv_errfp)
+#define zn        (cv_mem->cv_zn)
+#define linit     (cv_mem->cv_linit)
+#define lsetup    (cv_mem->cv_lsetup)
+#define lsolve    (cv_mem->cv_lsolve)
+#define lfree     (cv_mem->cv_lfree)
+#define lmem      (cv_mem->cv_lmem)
+#define vec_tmpl  (cv_mem->cv_tempv)
+#define setupNonNull   (cv_mem->cv_setupNonNull)
+
+#define gammasv   (cvdiag_mem->di_gammasv)
+#define M         (cvdiag_mem->di_M)
+#define bit       (cvdiag_mem->di_bit)
+#define bitcomp   (cvdiag_mem->di_bitcomp)
+#define nfeDI     (cvdiag_mem->di_nfeDI)
+#define last_flag (cvdiag_mem->di_last_flag)
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiag 
+ * -----------------------------------------------------------------
+ * This routine initializes the memory record and sets various function
+ * fields specific to the diagonal linear solver module.  CVDense first
+ * calls the existing lfree routine if this is not NULL.  Then it sets
+ * the cv_linit, cv_lsetup, cv_lsolve, cv_lfree fields in (*cvode_mem)
+ * to be CVDiagInit, CVDiagSetup, CVDiagSolve, and CVDiagFree,
+ * respectively.  It allocates memory for a structure of type
+ * CVDiagMemRec and sets the cv_lmem field in (*cvode_mem) to the
+ * address of this structure.  It sets setupNonNull in (*cvode_mem) to
+ * TRUE.  Finally, it allocates memory for M, bit, and bitcomp.
+ * The CVDiag return value is SUCCESS = 0, LMEM_FAIL = -1, or 
+ * LIN_ILL_INPUT=-2.
+ * -----------------------------------------------------------------
+ */
+  
+int CVDiag(void *cvode_mem)
+{
+  CVodeMem cv_mem;
+  CVDiagMem cvdiag_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDG_CVMEM_NULL);
+    return(CVDIAG_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Check if N_VCompare and N_VInvTest are present */
+  if(vec_tmpl->ops->nvcompare == NULL ||
+     vec_tmpl->ops->nvinvtest == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDG_BAD_NVECTOR);
+    return(CVDIAG_ILL_INPUT);
+  }
+
+  if (lfree != NULL) lfree(cv_mem);
+  
+  /* Set four main function fields in cv_mem */
+  linit  = CVDiagInit;
+  lsetup = CVDiagSetup;
+  lsolve = CVDiagSolve;
+  lfree  = CVDiagFree;
+
+  /* Get memory for CVDiagMemRec */
+  cvdiag_mem = (CVDiagMem) malloc(sizeof(CVDiagMemRec));
+  if (cvdiag_mem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDG_MEM_FAIL);
+    return(CVDIAG_MEM_FAIL);
+  }
+
+  last_flag = CVDIAG_SUCCESS;
+
+  /* Set flag setupNonNull = TRUE */
+  setupNonNull = TRUE;
+
+  /* Allocate memory for M, bit, and bitcomp */
+    
+  M = N_VClone(vec_tmpl);
+  if (M == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDG_MEM_FAIL);
+    return(CVDIAG_MEM_FAIL);
+  }
+  bit = N_VClone(vec_tmpl);
+  if (bit == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDG_MEM_FAIL);
+    N_VDestroy(M);
+    return(CVDIAG_MEM_FAIL);
+  }
+  bitcomp = N_VClone(vec_tmpl);
+  if (bitcomp == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDG_MEM_FAIL);
+    N_VDestroy(M);
+    N_VDestroy(bit);
+    return(CVDIAG_MEM_FAIL);
+  }
+
+  /* Attach linear solver memory to integrator memory */
+  lmem = cvdiag_mem;
+
+  return(CVDIAG_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiagGetWorkSpace
+ * -----------------------------------------------------------------
+ */
+
+int CVDiagGetWorkSpace(void *cvode_mem, long int *lenrwDI, long int *leniwDI)
+{
+  CVodeMem cv_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDG_SETGET_CVMEM_NULL);
+    return(CVDIAG_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *lenrwDI = 3*lrw1;
+  *leniwDI = 3*liw1;
+
+  return(CVDIAG_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiagGetNumRhsEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVDiagGetNumRhsEvals(void *cvode_mem, long int *nfevalsDI)
+{
+  CVodeMem cv_mem;
+  CVDiagMem cvdiag_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDG_SETGET_CVMEM_NULL);
+    return(CVDIAG_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDG_SETGET_LMEM_NULL);
+    return(CVDIAG_LMEM_NULL);
+  }
+  cvdiag_mem = (CVDiagMem) lmem;
+
+  *nfevalsDI = nfeDI;
+
+  return(CVDIAG_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiagGetLastFlag
+ * -----------------------------------------------------------------
+ */
+
+int CVDiagGetLastFlag(void *cvode_mem, int *flag)
+{
+  CVodeMem cv_mem;
+  CVDiagMem cvdiag_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDG_SETGET_CVMEM_NULL);
+    return(CVDIAG_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDG_SETGET_LMEM_NULL);
+    return(CVDIAG_LMEM_NULL);
+  }
+  cvdiag_mem = (CVDiagMem) lmem;
+
+  *flag = last_flag;
+
+  return(CVDIAG_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiagInit
+ * -----------------------------------------------------------------
+ * This routine does remaining initializations specific to the diagonal
+ * linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static int CVDiagInit(CVodeMem cv_mem)
+{
+  CVDiagMem cvdiag_mem;
+
+  cvdiag_mem = (CVDiagMem) lmem;
+
+  nfeDI = 0;
+
+  last_flag = CVDIAG_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiagSetup
+ * -----------------------------------------------------------------
+ * This routine does the setup operations for the diagonal linear 
+ * solver.  It constructs a diagonal approximation to the Newton matrix 
+ * M = I - gamma*J, updates counters, and inverts M.
+ * -----------------------------------------------------------------
+ */
+
+static int CVDiagSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                       N_Vector fpred, booleantype *jcurPtr, N_Vector vtemp1,
+                       N_Vector vtemp2, N_Vector vtemp3)
+{
+  realtype r;
+  N_Vector ftemp, y;
+  booleantype invOK;
+  CVDiagMem cvdiag_mem;
+  
+  cvdiag_mem = (CVDiagMem) lmem;
+
+  /* Rename work vectors for use as temporary values of y and f */
+  ftemp = vtemp1;
+  y     = vtemp2;
+
+  /* Form y with perturbation = FRACT*(func. iter. correction) */
+  r = FRACT * rl1;
+  N_VLinearSum(h, fpred, -ONE, zn[1], ftemp);
+  N_VLinearSum(r, ftemp, ONE, ypred, y);
+
+  /* Evaluate f at perturbed y */
+  f(tn, y, M, f_data);
+  nfeDI++;
+
+  /* Construct M = I - gamma*J with J = diag(deltaf_i/deltay_i) */
+  N_VLinearSum(ONE, M, -ONE, fpred, M);
+  N_VLinearSum(FRACT, ftemp, -h, M, M);
+  N_VProd(ftemp, ewt, y);
+  /* Protect against deltay_i being at roundoff level */
+  N_VCompare(uround, y, bit);
+  N_VAddConst(bit, -ONE, bitcomp);
+  N_VProd(ftemp, bit, y);
+  N_VLinearSum(FRACT, y, -ONE, bitcomp, y);
+  N_VDiv(M, y, M);
+  N_VProd(M, bit, M);
+  N_VLinearSum(ONE, M, -ONE, bitcomp, M);
+
+  /* Invert M with test for zero components */
+  invOK = N_VInvTest(M, M);
+  if (!invOK) {
+    last_flag = CVDIAG_INV_FAIL;
+    return(1);
+  }
+
+  /* Set jcur = TRUE, save gamma in gammasv, and return */
+  *jcurPtr = TRUE;
+  gammasv = gamma;
+  last_flag = CVDIAG_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiagSolve
+ * -----------------------------------------------------------------
+ * This routine performs the solve operation for the diagonal linear
+ * solver.  If necessary it first updates gamma in M = I - gamma*J.
+ * -----------------------------------------------------------------
+ */
+
+static int CVDiagSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                       N_Vector ycur, N_Vector fcur)
+{
+  booleantype invOK;
+  realtype r;
+  CVDiagMem cvdiag_mem;
+
+  cvdiag_mem = (CVDiagMem) lmem;
+  
+  /* If gamma has changed, update factor in M, and save gamma value */
+
+  if (gammasv != gamma) {
+    r = gamma / gammasv;
+    N_VInv(M, M);
+    N_VAddConst(M, -ONE, M);
+    N_VScale(r, M, M);
+    N_VAddConst(M, ONE, M);
+    invOK = N_VInvTest(M, M);
+    if (!invOK) {
+      last_flag = CVDIAG_INV_FAIL;
+      return (1);
+    }
+    gammasv = gamma;
+  }
+
+  /* Apply M-inverse to b */
+  N_VProd(b, M, b);
+
+  last_flag = CVDIAG_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiagFree
+ * -----------------------------------------------------------------
+ * This routine frees memory specific to the diagonal linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static void CVDiagFree(CVodeMem cv_mem)
+{
+  CVDiagMem cvdiag_mem;
+  
+  cvdiag_mem = (CVDiagMem) lmem;
+
+  N_VDestroy(M);
+  N_VDestroy(bit);
+  N_VDestroy(bitcomp);
+  free(cvdiag_mem);
+}
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvdiag_impl.h b/Win32/WinCVODE/sundials/cvode/source/cvdiag_impl.h
new file mode 100644
index 0000000..887a8aa
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvdiag_impl.h
@@ -0,0 +1,74 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the diagonal linear solver, CVDIAG.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVDIAG_IMPL_H
+#define _CVDIAG_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "cvdiag.h"
+
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Types: CVDiagMemRec, CVDiagMem
+ * -----------------------------------------------------------------
+ * The type CVDiagMem is pointer to a CVDiagMemRec.
+ * This structure contains CVDiag solver-specific data.
+ * -----------------------------------------------------------------
+ */
+
+typedef struct {
+
+  realtype di_gammasv; /* gammasv = gamma at the last call to setup */
+                       /* or solve                                  */
+
+  N_Vector di_M;       /* M = (I - gamma J)^{-1} , gamma = h / l1   */
+
+  N_Vector di_bit;     /* temporary storage vector                  */
+
+  N_Vector di_bitcomp; /* temporary storage vector                  */
+
+  long int di_nfeDI;   /* no. of calls to f due to difference 
+                          quotient diagonal Jacobian approximation  */
+
+  int di_last_flag;    /* last error return flag                    */
+
+} CVDiagMemRec, *CVDiagMem;
+
+/* Error Messages */
+
+#define _CVDIAG_          "CVDiag-- "
+#define MSGDG_CVMEM_NULL  _CVDIAG_ "Integrator memory is NULL.\n\n"
+#define MSGDG_BAD_NVECTOR _CVDIAG_ "A required vector operation is not implemented.\n\n"
+#define MSGDG_MEM_FAIL    _CVDIAG_ "A memory request failed.\n\n"
+
+#define MSGDG_SETGET_CVMEM_NULL "CVDiagGet*-- Integrator memory is NULL.\n\n"
+
+#define MSGDG_SETGET_LMEM_NULL "CVDiagGet*-- cvdiag memory is NULL.\n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvode.c b/Win32/WinCVODE/sundials/cvode/source/cvode.c
new file mode 100644
index 0000000..e2e1464
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvode.c
@@ -0,0 +1,3550 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh, Radu Serban,
+ *                and Dan Shumaker @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the main CVODE integrator.
+ * It is independent of the CVODE linear solver in use.
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * Header files
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvode_impl.h"
+#include "sundialsmath.h"
+#include "sundialstypes.h"
+
+/* 
+ * Macro: loop 
+*/
+
+#define loop for(;;)
+
+/*
+ * CVODE Private Constants
+ */
+
+#define ZERO   RCONST(0.0)   /* real 0.0   */
+#define TINY   RCONST(1.0e-10) /* small number */
+#define TENTH  RCONST(0.1)   /* real 0.1   */
+#define FOURTH RCONST(0.25)  /* real 0.25  */
+#define HALF   RCONST(0.5)   /* real 0.5   */
+#define ONE    RCONST(1.0)   /* real 1.0   */
+#define TWO    RCONST(2.0)   /* real 2.0   */
+#define THREE  RCONST(3.0)   /* real 3.0   */
+#define FOUR   RCONST(4.0)   /* real 4.0   */
+#define FIVE   RCONST(5.0)   /* real 5.0   */
+#define TWELVE RCONST(12.0)  /* real 12.0  */
+#define HUN    RCONST(100.0) /* real 100.0 */
+
+/*
+ * Routine-Specific Constants
+ */
+
+/* CVodeGetDky */
+
+#define FUZZ_FACTOR RCONST(100.0)
+
+/* CVHin */
+
+#define HLB_FACTOR RCONST(100.0)
+#define HUB_FACTOR RCONST(0.1)
+#define H_BIAS     HALF
+#define MAX_ITERS  4
+
+/* CVCreate */
+
+#define CORTES RCONST(0.1)
+
+/* CVStep return values */
+
+#define SUCCESS_STEP      0
+#define REP_ERR_FAIL     -1
+#define REP_CONV_FAIL    -2
+#define SETUP_FAILED     -3
+#define SOLVE_FAILED     -4
+
+/* CVStep control constants */
+
+#define PREDICT_AGAIN    -5
+#define DO_ERROR_TEST     1
+
+/* CVStep */
+
+#define THRESH RCONST(1.5)
+#define ETAMX1 RCONST(10000.0) 
+#define ETAMX2 RCONST(10.0)
+#define ETAMX3 RCONST(10.0)
+#define ETAMXF RCONST(0.2)
+#define ETAMIN RCONST(0.1)
+#define ETACF  RCONST(0.25)
+#define ADDON  RCONST(0.000001)
+#define BIAS1  RCONST(6.0)
+#define BIAS2  RCONST(6.0)
+#define BIAS3  RCONST(10.0)
+#define ONEPSM RCONST(1.000001)
+
+#define SMALL_NST    10   /* nst > SMALL_NST => use ETAMX3          */
+#define MXNCF        10   /* max no. of convergence failures during */
+                          /* one step try                           */
+#define MXNEF         7   /* max no. of error test failures during  */
+                          /* one step try                           */
+#define MXNEF1        3   /* max no. of error test failures before  */
+                          /* forcing a reduction of order           */
+#define SMALL_NEF     2   /* if an error failure occurs and         */
+                          /* SMALL_NEF <= nef <= MXNEF1, then       */
+                          /* reset eta =  MIN(eta, ETAMXF)          */
+#define LONG_WAIT    10   /* number of steps to wait before         */
+                          /* considering an order change when       */
+                          /* q==1 and MXNEF1 error test failures    */
+                          /* have occurred                          */
+
+/* CVnls return values */
+
+#define SOLVED            0
+#define CONV_FAIL        -1 
+#define SETUP_FAIL_UNREC -2
+#define SOLVE_FAIL_UNREC -3
+
+/* CVnls input flags */
+
+#define FIRST_CALL      0
+#define PREV_CONV_FAIL -1
+#define PREV_ERR_FAIL  -2
+
+/* CVnls other constants */
+
+#define NLS_MAXCOR 3       /* maximum no. of corrector iterations for
+                              the nonlinear solver                     */
+
+#define CRDOWN RCONST(0.3) /* constant used in the estimation of the   */
+                           /* convergence rate (crate) of the          */
+                           /* iterates for the nonlinear equation      */
+#define DGMAX  RCONST(0.3) /* iter == CV_NEWTON, |gamma/gammap-1| > DGMAX */
+                           /* => call lsetup                           */
+
+#define RDIV      TWO  /* declare divergence if ratio del/delp > RDIV  */
+#define MSBP       20  /* max no. of steps between lsetup calls        */
+
+#define TRY_AGAIN  99  /* control constant for CVnlsNewton - should be */
+                       /* distinct from CVnls return values            */
+
+/* CVRcheck* return values */
+
+#define INITROOT -1
+#define CLOSERT  -2
+#define RTFOUND   1
+
+/*
+ * Private Helper Functions Prototypes
+ */
+
+static booleantype CVCheckNvector(N_Vector tmpl);
+
+static int CVInitialSetup(CVodeMem cv_mem);
+
+static booleantype CVAllocVectors(CVodeMem cv_mem, N_Vector tmpl, int tol);
+static void CVFreeVectors(CVodeMem cv_mem);
+
+static int CVEwtSetSS(N_Vector ycur, N_Vector weight, CVodeMem cv_mem);
+static int CVEwtSetSV(N_Vector ycur, N_Vector weight, CVodeMem cv_mem);
+
+static booleantype CVHin(CVodeMem cv_mem, realtype tout);
+static realtype CVUpperBoundH0(CVodeMem cv_mem, realtype tdist);
+static realtype CVYddNorm(CVodeMem cv_mem, realtype hg);
+
+static int CVStep(CVodeMem cv_mem);
+
+static int CVsldet(CVodeMem cv_mem);
+
+static void CVAdjustParams(CVodeMem cv_mem);
+static void CVAdjustOrder(CVodeMem cv_mem, int deltaq);
+static void CVAdjustAdams(CVodeMem cv_mem, int deltaq);
+static void CVAdjustBDF(CVodeMem cv_mem, int deltaq);
+static void CVIncreaseBDF(CVodeMem cv_mem);
+static void CVDecreaseBDF(CVodeMem cv_mem);
+
+static void CVRescale(CVodeMem cv_mem);
+
+static void CVPredict(CVodeMem cv_mem);
+
+static void CVSet(CVodeMem cv_mem);
+static void CVSetAdams(CVodeMem cv_mem);
+static realtype CVAdamsStart(CVodeMem cv_mem, realtype m[]);
+static void CVAdamsFinish(CVodeMem cv_mem, realtype m[], realtype M[],
+                          realtype hsum);
+static realtype CVAltSum(int iend, realtype a[], int k);
+static void CVSetBDF(CVodeMem cv_mem);
+static void CVSetTqBDF(CVodeMem cv_mem, realtype hsum, realtype alpha0,
+                     realtype alpha0_hat, realtype xi_inv, realtype xistar_inv);
+
+static int CVnls(CVodeMem cv_mem, int nflag);
+static int CVnlsFunctional(CVodeMem cv_mem);
+static int CVnlsNewton(CVodeMem cv_mem, int nflag);
+static int CVNewtonIteration(CVodeMem cv_mem);
+
+static int  CVHandleNFlag(CVodeMem cv_mem, int *nflagPtr, realtype saved_t,
+                          int *ncfPtr);
+
+static void CVRestore(CVodeMem cv_mem, realtype saved_t);
+
+static booleantype CVDoErrorTest(CVodeMem cv_mem, int *nflagPtr, int *kflagPtr,
+                               realtype saved_t, int *nefPtr, realtype *dsmPtr);
+
+static void CVCompleteStep(CVodeMem cv_mem);
+
+static void CVPrepareNextStep(CVodeMem cv_mem, realtype dsm);
+static void CVSetEta(CVodeMem cv_mem);
+static realtype CVComputeEtaqm1(CVodeMem cv_mem);
+static realtype CVComputeEtaqp1(CVodeMem cv_mem);
+static void CVChooseEta(CVodeMem cv_mem);
+static void CVBDFStab(CVodeMem cv_mem);
+
+static int  CVHandleFailure(CVodeMem cv_mem,int kflag);
+
+static int CVRcheck1(CVodeMem cv_mem);
+static int CVRcheck2(CVodeMem cv_mem);
+static int CVRcheck3(CVodeMem cv_mem);
+static int CVRootfind(CVodeMem cv_mem);
+
+/* 
+ * =================================================================
+ * EXPORTED FUNCTIONS IMPLEMENTATION
+ * =================================================================
+ */
+
+/* 
+ * CVodeCreate
+ *
+ * CVodeCreate creates an internal memory block for a problem to 
+ * be solved by CVODE.
+ * If successful, CVodeCreate returns a pointer to the problem memory. 
+ * This pointer should be passed to CVodeMalloc.  
+ * If an initialization error occurs, CVodeCreate prints an error 
+ * message to standard err and returns NULL. 
+ */
+
+WINCVODE_API void *CVodeCreate(int lmm, int iter)
+{
+  int maxord;
+  CVodeMem cv_mem;
+
+  /* Test inputs */
+
+  if ((lmm != CV_ADAMS) && (lmm != CV_BDF)) {
+    fprintf(stderr, MSGCV_BAD_LMM);
+    return(NULL);
+  }
+  
+  if ((iter != CV_FUNCTIONAL) && (iter != CV_NEWTON)) {
+    fprintf(stderr, MSGCV_BAD_ITER);
+    return(NULL);
+  }
+
+  cv_mem = (CVodeMem) malloc(sizeof(struct CVodeMemRec));
+  if (cv_mem == NULL) {
+    fprintf(stderr, MSGCV_CVMEM_FAIL);
+    return(NULL);
+  }
+
+  maxord = (lmm == CV_ADAMS) ? ADAMS_Q_MAX : BDF_Q_MAX;
+
+  /* copy input parameters into cv_mem */
+  cv_mem->cv_lmm  = lmm;
+  cv_mem->cv_iter = iter;
+
+  /* Set uround */
+  cv_mem->cv_uround = UNIT_ROUNDOFF;
+
+  /* Set default values for integrator optional inputs */
+  cv_mem->cv_f        = NULL;
+  cv_mem->cv_f_data   = NULL;
+  cv_mem->cv_efun     = NULL;
+  cv_mem->cv_e_data   = NULL;
+  cv_mem->cv_errfp    = stderr;
+  cv_mem->cv_qmax     = maxord;
+  cv_mem->cv_mxstep   = MXSTEP_DEFAULT;
+  cv_mem->cv_mxhnil   = MXHNIL_DEFAULT;
+  cv_mem->cv_sldeton  = FALSE;
+  cv_mem->cv_hin      = ZERO;
+  cv_mem->cv_hmin     = HMIN_DEFAULT;
+  cv_mem->cv_hmax_inv = HMAX_INV_DEFAULT;
+  cv_mem->cv_tstopset = FALSE;
+  cv_mem->cv_maxcor   = NLS_MAXCOR;
+  cv_mem->cv_maxnef   = MXNEF;
+  cv_mem->cv_maxncf   = MXNCF;
+  cv_mem->cv_nlscoef  = CORTES;
+
+  /* Initialize lrw and liw */
+  cv_mem->cv_lrw = 58 + 2*L_MAX + NUM_TESTS;
+  cv_mem->cv_liw = 40;
+
+  /* CVodeMalloc not done yet */
+  cv_mem->cv_VabstolMallocDone = FALSE;
+  cv_mem->cv_MallocDone = FALSE;
+
+  /* Return pointer to CVODE memory block */
+  return((void *)cv_mem);
+}
+
+#define iter  (cv_mem->cv_iter)  
+#define lmm   (cv_mem->cv_lmm) 
+#define errfp (cv_mem->cv_errfp)
+#define lrw   (cv_mem->cv_lrw)
+#define liw   (cv_mem->cv_liw)
+
+/*------------------     CVodeMalloc     --------------------------*/
+/* 
+   CVodeMalloc allocates and initializes memory for a problem. All 
+   problem inputs are checked for errors. If any error occurs during 
+   initialization, it is reported to the file whose file pointer is 
+   errfp and an error flag is returned. Otherwise, it returns CV_SUCCESS
+*/
+/*-----------------------------------------------------------------*/
+
+WINCVODE_API int CVodeMalloc(void *cvode_mem, CVRhsFn f, realtype t0, N_Vector y0, 
+                int itol, realtype reltol, void *abstol)
+{
+  CVodeMem cv_mem;
+  booleantype nvectorOK, allocOK, neg_abstol;
+  long int lrw1, liw1;
+  int i,k;
+  
+  /* Check cvode_mem */
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_CVM_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Check for legal input parameters */
+
+  if (y0==NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_Y0_NULL);
+    return(CV_ILL_INPUT);
+  }
+
+  if ((itol != CV_SS) && (itol != CV_SV) && (itol != CV_WF) ) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_ITOL);
+    return(CV_ILL_INPUT);
+  }
+  
+  if (f == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_F_NULL);
+    return(CV_ILL_INPUT);
+  }
+  
+  /* Test if all required vector operations are implemented */
+  
+  nvectorOK = CVCheckNvector(y0);
+  if(!nvectorOK) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_NVECTOR);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Test tolerances */
+
+  if (itol != CV_WF) {
+    
+    if (abstol == NULL) {
+      if(errfp!=NULL) fprintf(errfp, MSGCV_ABSTOL_NULL);
+      return(CV_ILL_INPUT);
+    }
+
+    if (reltol < ZERO) {
+      if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_RELTOL);
+      return(CV_ILL_INPUT);
+    }
+    
+    if (itol == CV_SS)
+      neg_abstol = (*((realtype *)abstol) < ZERO);
+    else 
+      neg_abstol = (N_VMin((N_Vector)abstol) < ZERO);
+
+    if (neg_abstol) {
+      if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_ABSTOL);
+      return(CV_ILL_INPUT);
+    }
+    
+  }
+
+  /* Set space requirements for one N_Vector */
+
+  if (y0->ops->nvspace != NULL) {
+    N_VSpace(y0, &lrw1, &liw1);
+  } else {
+    lrw1 = 0;
+    liw1 = 0;
+  }
+  cv_mem->cv_lrw1 = lrw1;
+  cv_mem->cv_liw1 = liw1;
+
+  /* Allocate the vectors (using y0 as a template) */
+
+  allocOK = CVAllocVectors(cv_mem, y0, itol);
+  if (!allocOK) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_MEM_FAIL);
+    return(CV_MEM_FAIL);
+  }
+  
+  /* Copy tolerances into memory */
+  
+  cv_mem->cv_itol   = itol;
+  cv_mem->cv_reltol = reltol;      
+  
+  if (itol == CV_SS)
+    cv_mem->cv_Sabstol = *((realtype *)abstol);
+  else if (itol == CV_SV)
+    N_VScale(ONE, (N_Vector)abstol, cv_mem->cv_Vabstol);
+
+  /* Copy the input parameters into CVODE state */
+
+  cv_mem->cv_f  = f;
+  cv_mem->cv_tn = t0;
+  
+  /* Set step parameters */
+
+  cv_mem->cv_q      = 1;
+  cv_mem->cv_L      = 2;
+  cv_mem->cv_qwait  = cv_mem->cv_L;
+  cv_mem->cv_etamax = ETAMX1;
+
+  cv_mem->cv_qu    = 0;
+  cv_mem->cv_hu    = ZERO;
+  cv_mem->cv_tolsf = ONE;
+
+  /* Set the linear solver addresses to NULL.
+     (We check != NULL later, in CVode, if using CV_NEWTON.) */
+
+  cv_mem->cv_linit  = NULL;
+  cv_mem->cv_lsetup = NULL;
+  cv_mem->cv_lsolve = NULL;
+  cv_mem->cv_lfree  = NULL;
+  cv_mem->cv_lmem   = NULL;
+
+  /* Initialize zn[0] in the history array */
+
+  N_VScale(ONE, y0, cv_mem->cv_zn[0]);
+
+  /* Initialize all the counters */
+
+  cv_mem->cv_nst     = 0;
+  cv_mem->cv_nfe     = 0;
+  cv_mem->cv_ncfn    = 0;
+  cv_mem->cv_netf    = 0;
+  cv_mem->cv_nni     = 0;
+  cv_mem->cv_nsetups = 0;
+  cv_mem->cv_nhnil   = 0;
+  cv_mem->cv_nstlp   = 0;
+  cv_mem->cv_nscon   = 0;
+  cv_mem->cv_nge     = 0;
+
+  /* Initialize root finding variables */
+
+  cv_mem->cv_glo    = NULL;
+  cv_mem->cv_ghi    = NULL;
+  cv_mem->cv_groot  = NULL;
+  cv_mem->cv_iroots = NULL;
+  cv_mem->cv_gfun   = NULL;
+  cv_mem->cv_g_data = NULL;
+  cv_mem->cv_nrtfn  = 0;
+
+  /* Initialize Stablilty Limit Detection data */
+  /* NOTE: We do this even if stab lim det was not
+     turned on yet. This way, the user can turn it
+     on at any time */
+
+  cv_mem->cv_nor = 0;
+  for (i = 1; i <= 5; i++)
+    for (k = 1; k <= 3; k++) 
+      cv_mem->cv_ssdat[i-1][k-1] = ZERO;
+  
+  /* Problem has been successfully initialized */
+
+  cv_mem->cv_MallocDone = TRUE;
+  return(CV_SUCCESS);
+}
+
+#define lrw1 (cv_mem->cv_lrw1)
+#define liw1 (cv_mem->cv_liw1)
+
+/*------------------     CVodeReInit     --------------------------*/
+/*
+  CVodeReInit re-initializes CVODE's memory for a problem, assuming
+  it has already been allocated in a prior CVodeMalloc call.
+  All problem specification inputs are checked for errors.
+  If any error occurs during initialization, it is reported to the
+  file whose file pointer is errfp.
+  The return value is CV_SUCCESS = 0 if no errors occurred, or
+  a negative value otherwise.
+*/
+/*-----------------------------------------------------------------*/
+
+int CVodeReInit(void *cvode_mem, CVRhsFn f, realtype t0, N_Vector y0, 
+                int itol, realtype reltol, void *abstol)
+{
+  CVodeMem cv_mem;
+  booleantype neg_abstol;
+  int i,k;
+ 
+  /* Check cvode_mem */
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_CVM_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Check if cvode_mem was allocated */
+
+  if (cv_mem->cv_MallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_CVREI_NO_MALLOC);
+    return(CV_NO_MALLOC);
+  }
+
+/* Check for legal input parameters */
+
+  if (y0 == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_Y0_NULL);
+    return(CV_ILL_INPUT);
+  }
+  
+  if ((itol != CV_SS) && (itol != CV_SV) && (itol != CV_WF)) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_ITOL);
+    return(CV_ILL_INPUT);
+  }
+
+  if (f == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_F_NULL);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Test tolerances */
+
+  if (itol != CV_WF) {
+
+    if (abstol == NULL) {
+      if(errfp!=NULL) fprintf(errfp, MSGCV_ABSTOL_NULL);
+      return(CV_ILL_INPUT);
+    }
+
+    if (reltol < ZERO) {
+      if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_RELTOL);
+      return(CV_ILL_INPUT);
+    }
+    
+    if (itol == CV_SS) {
+      neg_abstol = (*((realtype *)abstol) < ZERO);
+    } else {
+      neg_abstol = (N_VMin((N_Vector)abstol) < ZERO);
+    }
+    
+    if (neg_abstol) {
+      if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_ABSTOL);
+      return(CV_ILL_INPUT);
+    }
+
+  }
+
+  /* Copy tolerances into memory */
+
+  if ( (itol != CV_SV) && (cv_mem->cv_VabstolMallocDone) ) {
+    N_VDestroy(cv_mem->cv_Vabstol);
+    lrw -= lrw1;
+    liw -= liw1;
+    cv_mem->cv_VabstolMallocDone = FALSE;
+  }
+
+  if ( (itol == CV_SV) && !(cv_mem->cv_VabstolMallocDone) ) {
+    cv_mem->cv_Vabstol = N_VClone(y0);
+    lrw += lrw1;
+    liw += liw1;
+    cv_mem->cv_VabstolMallocDone = TRUE;
+  }
+
+  cv_mem->cv_itol   = itol;
+  cv_mem->cv_reltol = reltol;    
+  
+  if (itol == CV_SS)
+    cv_mem->cv_Sabstol = *((realtype *)abstol);
+  else if (itol == CV_SV)
+    N_VScale(ONE, (N_Vector)abstol, cv_mem->cv_Vabstol);
+  
+  /* Copy the input parameters into CVODE state */
+
+  cv_mem->cv_f = f;
+  cv_mem->cv_tn = t0;
+  
+  /* Set step parameters */
+
+  cv_mem->cv_q      = 1;
+  cv_mem->cv_L      = 2;
+  cv_mem->cv_qwait  = cv_mem->cv_L;
+  cv_mem->cv_etamax = ETAMX1;
+
+  cv_mem->cv_qu    = 0;
+  cv_mem->cv_hu    = ZERO;
+  cv_mem->cv_tolsf = ONE;
+
+  /* Initialize zn[0] in the history array */
+
+  N_VScale(ONE, y0, cv_mem->cv_zn[0]);
+ 
+  /* Initialize all the counters */
+
+  cv_mem->cv_nst     = 0;
+  cv_mem->cv_nfe     = 0;
+  cv_mem->cv_ncfn    = 0;
+  cv_mem->cv_netf    = 0;
+  cv_mem->cv_nni     = 0;
+  cv_mem->cv_nsetups = 0;
+  cv_mem->cv_nhnil   = 0;
+  cv_mem->cv_nstlp   = 0;
+  cv_mem->cv_nscon   = 0;
+  cv_mem->cv_nge     = 0;
+
+  /* Initialize Stablilty Limit Detection data */
+
+  cv_mem->cv_nor = 0;
+  for (i = 1; i <= 5; i++)
+    for (k = 1; k <= 3; k++) 
+      cv_mem->cv_ssdat[i-1][k-1] = ZERO;
+  
+  /* Problem has been successfully re-initialized */
+
+  return(CV_SUCCESS);
+}
+
+#define gfun   (cv_mem->cv_gfun)
+#define g_data (cv_mem->cv_g_data) 
+#define glo    (cv_mem->cv_glo)
+#define ghi    (cv_mem->cv_ghi)
+#define groot  (cv_mem->cv_groot)
+#define iroots (cv_mem->cv_iroots)
+
+/*------------------     CVodeRootInit     ------------------------*/
+/*
+  CVodeRootInit initializes a rootfinding problem to be solved
+  during the integration of the ODE system.  It loads the root
+  function pointer and the number of root functions, and allocates
+  workspace memory.  The return value is CV_SUCCESS = 0 if no errors
+  occurred, or a negative value otherwise.
+*/
+/*-----------------------------------------------------------------*/
+
+int CVodeRootInit(void *cvode_mem, int nrtfn, CVRootFn g, void *gdata)
+{
+  CVodeMem cv_mem;
+  int nrt;
+
+  /* Check cvode_mem pointer */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGCV_ROOT_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  nrt = (nrtfn < 0) ? 0 : nrtfn;
+
+  /* If rerunning CVodeRootInit() with a different number of root
+     functions (changing number of gfun components), then free
+     currently held memory resources */
+  if ((nrt != cv_mem->cv_nrtfn) && (cv_mem->cv_nrtfn > 0)) {
+    free(glo);
+    free(ghi);
+    free(groot);
+    free(iroots);
+
+    lrw -= 3* (cv_mem->cv_nrtfn);
+    liw -= cv_mem->cv_nrtfn;
+
+    /* Linux version of free() routine doesn't set pointer to NULL */
+    glo = ghi = groot = NULL;
+    iroots = NULL;
+  }
+
+  /* If CVodeRootInit() was called with nrtfn == 0, then set cv_nrtfn to
+     zero and cv_gfun to NULL before returning */
+  if (nrt == 0) {
+    cv_mem->cv_nrtfn = nrt;
+    gfun = NULL;
+    g_data = NULL;
+    return(CV_SUCCESS);
+  }
+
+  /* Store user's data pointer */
+  g_data = gdata;
+
+  /* If rerunning CVodeRootInit() with the same number of root functions
+     (not changing number of gfun components), then check if the root
+     function argument has changed */
+  /* If g != NULL then return as currently reserved memory resources
+     will suffice */
+  if (nrt == cv_mem->cv_nrtfn) {
+    if (g != gfun) {
+      if (g == NULL) {
+	free(glo);
+	free(ghi);
+	free(groot);
+	free(iroots);
+
+        lrw -= 3*nrt;
+        liw -= nrt;
+
+	fprintf(errfp, MSGCV_ROOT_FUNC_NULL);
+	return(CV_RTFUNC_NULL);
+      }
+      else {
+	gfun = g;
+	return(CV_SUCCESS);
+      }
+    }
+    else return(CV_SUCCESS);
+  }
+
+  /* Set variable values in CVode memory block */
+  cv_mem->cv_nrtfn = nrt;
+  if (g == NULL) {
+    fprintf(errfp, MSGCV_ROOT_FUNC_NULL);
+    return(CV_RTFUNC_NULL);
+  }
+  else gfun = g;
+
+  /* Allocate necessary memory and return */
+  glo = (realtype *) malloc(nrt*sizeof(realtype));
+  if (glo == NULL) {
+    fprintf(stderr, MSGCV_ROOT_MEM_FAIL);
+    return(CV_MEM_FAIL);
+  }
+
+  ghi = (realtype *) malloc(nrt*sizeof(realtype));
+  if (ghi == NULL) {
+    free(glo);
+    fprintf(stderr, MSGCV_ROOT_MEM_FAIL);
+    return(CV_MEM_FAIL);
+  }
+
+  groot = (realtype *) malloc(nrt*sizeof(realtype));
+  if (groot == NULL) {
+    free(glo); free(ghi);
+    fprintf(stderr, MSGCV_ROOT_MEM_FAIL);
+    return(CV_MEM_FAIL);
+  }
+
+  iroots = (int *) malloc(nrt*sizeof(int));
+  if (iroots == NULL) {
+    free(glo); free(ghi); free(groot);
+    fprintf(stderr, MSGCV_ROOT_MEM_FAIL);
+    return(CV_MEM_FAIL);
+  }
+
+  lrw += 3*nrt;
+  liw += nrt;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * =================================================================
+ * Readibility Constants
+ * =================================================================
+ */
+
+#define f              (cv_mem->cv_f)      
+#define f_data         (cv_mem->cv_f_data) 
+#define efun           (cv_mem->cv_efun)
+#define e_data         (cv_mem->cv_e_data) 
+#define qmax           (cv_mem->cv_qmax) 
+#define mxstep         (cv_mem->cv_mxstep)
+#define mxhnil         (cv_mem->cv_mxhnil)
+#define sldeton        (cv_mem->cv_sldeton)
+#define hin            (cv_mem->cv_hin)
+#define hmin           (cv_mem->cv_hmin)
+#define hmax_inv       (cv_mem->cv_hmax_inv)
+#define tstop          (cv_mem->cv_tstop)
+#define tstopset       (cv_mem->cv_tstopset)
+#define maxnef         (cv_mem->cv_maxnef)
+#define maxncf         (cv_mem->cv_maxncf)
+#define maxcor         (cv_mem->cv_maxcor)
+#define nlscoef        (cv_mem->cv_nlscoef)
+#define itol           (cv_mem->cv_itol)         
+#define reltol         (cv_mem->cv_reltol)       
+#define Sabstol        (cv_mem->cv_Sabstol)     
+#define Vabstol        (cv_mem->cv_Vabstol)     
+
+#define uround         (cv_mem->cv_uround)  
+#define zn             (cv_mem->cv_zn) 
+#define ewt            (cv_mem->cv_ewt)  
+#define y              (cv_mem->cv_y)
+#define acor           (cv_mem->cv_acor)
+#define tempv          (cv_mem->cv_tempv)
+#define ftemp          (cv_mem->cv_ftemp) 
+#define q              (cv_mem->cv_q)
+#define qprime         (cv_mem->cv_qprime)
+#define next_q         (cv_mem->cv_next_q)
+#define qwait          (cv_mem->cv_qwait)
+#define L              (cv_mem->cv_L)
+#define h              (cv_mem->cv_h)
+#define hprime         (cv_mem->cv_hprime)
+#define next_h         (cv_mem->cv_next_h)
+#define eta            (cv_mem->cv_eta) 
+#define etaqm1         (cv_mem->cv_etaqm1) 
+#define etaq           (cv_mem->cv_etaq) 
+#define etaqp1         (cv_mem->cv_etaqp1) 
+#define nscon          (cv_mem->cv_nscon)
+#define hscale         (cv_mem->cv_hscale)
+#define tn             (cv_mem->cv_tn)
+#define tau            (cv_mem->cv_tau)
+#define tq             (cv_mem->cv_tq)
+#define l              (cv_mem->cv_l)
+#define rl1            (cv_mem->cv_rl1)
+#define gamma          (cv_mem->cv_gamma) 
+#define gammap         (cv_mem->cv_gammap) 
+#define gamrat         (cv_mem->cv_gamrat)
+#define crate          (cv_mem->cv_crate)
+#define acnrm          (cv_mem->cv_acnrm)
+#define mnewt          (cv_mem->cv_mnewt)
+#define etamax         (cv_mem->cv_etamax)
+#define nst            (cv_mem->cv_nst)
+#define nfe            (cv_mem->cv_nfe)
+#define ncfn           (cv_mem->cv_ncfn)
+#define netf           (cv_mem->cv_netf)
+#define nni            (cv_mem->cv_nni)
+#define nsetups        (cv_mem->cv_nsetups)
+#define nhnil          (cv_mem->cv_nhnil)
+#define linit          (cv_mem->cv_linit)
+#define lsetup         (cv_mem->cv_lsetup)
+#define lsolve         (cv_mem->cv_lsolve) 
+#define lfree          (cv_mem->cv_lfree) 
+#define lmem           (cv_mem->cv_lmem) 
+#define qu             (cv_mem->cv_qu)          
+#define nstlp          (cv_mem->cv_nstlp)  
+#define h0u            (cv_mem->cv_h0u)
+#define hu             (cv_mem->cv_hu)         
+#define saved_tq5      (cv_mem->cv_saved_tq5)  
+#define jcur           (cv_mem->cv_jcur)         
+#define tolsf          (cv_mem->cv_tolsf)      
+#define setupNonNull   (cv_mem->cv_setupNonNull) 
+#define nor            (cv_mem->cv_nor)
+#define ssdat          (cv_mem->cv_ssdat)
+#define nrtfn          (cv_mem->cv_nrtfn)
+#define tlo            (cv_mem->cv_tlo)
+#define thi            (cv_mem->cv_thi)
+#define tretlast       (cv_mem->cv_tretlast)
+#define toutc          (cv_mem->cv_toutc)
+#define troot          (cv_mem->cv_troot)
+#define ttol           (cv_mem->cv_ttol)
+#define taskc          (cv_mem->cv_taskc)
+#define irfnd          (cv_mem->cv_irfnd)
+#define nge            (cv_mem->cv_nge)
+
+/********************* CVode ****************************************
+
+ This routine is the main driver of the CVODE package. 
+
+ It integrates over a time interval defined by the user, by calling
+ CVStep to do internal time steps.
+
+ The first time that CVode is called for a successfully initialized
+ problem, it computes a tentative initial step size h.
+
+ CVode supports four modes, specified by itask: CV_NORMAL, CV_ONE_STEP,
+ CV_NORMAL_TSTOP, and CV_ONE_STEP_TSTOP.
+ In the CV_NORMAL mode, the solver steps until it reaches or passes tout
+ and then interpolates to obtain y(tout).
+ In the CV_ONE_STEP mode, it takes one internal step and returns.
+ CV_NORMAL_TSTOP and CV_ONE_STEP_TSTOP are similar to CV_NORMAL and CV_ONE_STEP,
+ respectively, but the integration never proceeds past tstop (which
+ must have been defined through a call to CVodeSetStopTime).
+
+********************************************************************/
+
+WINCVODE_API int CVode(void *cvode_mem, realtype tout, N_Vector yout, 
+          realtype *tret, int itask)
+{
+  CVodeMem cv_mem;
+  long int nstloc;
+  int kflag, istate, ier, task, irfndp;
+  realtype troundoff, rh;
+  booleantype istop, hOK;
+  int ewtsetOK;
+
+  /* Check if cvode_mem exists */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGCV_CVODE_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Check if cvode_mem was allocated */
+  if (cv_mem->cv_MallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_CVODE_NO_MALLOC);
+    return(CV_NO_MALLOC);
+  }
+  
+  /* Check for yout != NULL */
+  if ((y = yout) == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_YOUT_NULL);       
+    return(CV_ILL_INPUT);
+  }
+
+  /* Check for tret != NULL */
+  if (tret == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_TRET_NULL);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Check for valid itask */
+  if ((itask != CV_NORMAL)       && 
+      (itask != CV_ONE_STEP)     &&
+      (itask != CV_NORMAL_TSTOP) &&
+      (itask != CV_ONE_STEP_TSTOP) ) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_ITASK);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Split itask into task and istop */
+  if ((itask == CV_NORMAL_TSTOP) || (itask == CV_ONE_STEP_TSTOP)) {
+    if ( tstopset == FALSE ) {
+      if(errfp!=NULL) fprintf(errfp, MSGCV_NO_TSTOP);
+      return(CV_ILL_INPUT);
+    }
+    istop = TRUE;
+  } else {
+    istop = FALSE;
+  }
+  if ((itask == CV_NORMAL) || (itask == CV_NORMAL_TSTOP)) {
+    task = CV_NORMAL; toutc = tout;
+  } else {
+    task = CV_ONE_STEP;
+  }
+  taskc = task;
+
+  /* Begin first call block */ 
+
+  if (nst == 0) {
+
+    ier = CVInitialSetup(cv_mem);
+    if (ier!= CV_SUCCESS) return (ier);
+    
+    /* Call f at (t0,y0), set zn[1] = y'(t0), 
+       set initial h (from H0 or CVHin), and scale zn[1] by h.
+       Also check for zeros of root function g at and near t0.    */
+    
+    f(tn, zn[0], zn[1], f_data); 
+    nfe++;
+
+    h = hin;
+    if ( (h != ZERO) && ((tout-tn)*h < ZERO) ) {
+      if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_H0);
+      return(CV_ILL_INPUT);
+    }
+    if (h == ZERO) {
+      hOK = CVHin(cv_mem, tout);
+      if (!hOK) {
+        if(errfp!=NULL) fprintf(errfp, MSGCV_TOO_CLOSE);
+        return(CV_ILL_INPUT);
+      }
+    }
+    rh = ABS(h)*hmax_inv;
+    if (rh > ONE) h /= rh;
+    if (ABS(h) < hmin) h *= hmin/ABS(h);
+
+    /* Check for approach to tstop */
+
+    if (istop) {
+      if ( (tstop - tn)*h < ZERO ) {
+        if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_TSTOP, tn);
+        return(CV_ILL_INPUT);
+      }
+      if ( (tn + h - tstop)*h > ZERO ) 
+        h = tstop - tn;
+    }
+
+    hscale = h; 
+    h0u    = h;
+    hprime = h;
+
+    N_VScale(h, zn[1], zn[1]);
+
+    if (nrtfn > 0) {
+      ier = CVRcheck1(cv_mem);
+      if (ier != CV_SUCCESS) {
+        if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_INIT_ROOT);
+        return(CV_ILL_INPUT);
+      }
+    }
+
+  } /* end of first call block */
+
+  /* At following steps, perform stop tests */
+
+  if (nst > 0) {
+
+    /* First, check for a root in the last step taken, other than the
+       last root found, if any.  If task = CV_ONE_STEP and y(tn) was not
+       returned because of an intervening root, return y(tn) now.     */
+
+    if (nrtfn > 0) {
+
+      irfndp = irfnd;
+      
+      ier = CVRcheck2(cv_mem);
+
+      if (ier == CLOSERT) {
+        if(errfp!=NULL) fprintf(errfp, MSGCV_CLOSE_ROOTS, tlo);
+        return(CV_ILL_INPUT);
+      }
+
+      if (ier == RTFOUND) {
+        tretlast = *tret = tlo;
+        return(CV_ROOT_RETURN);
+      }
+
+      if (tn != tretlast) {       /* Check remaining interval for roots */
+        ier = CVRcheck3(cv_mem);
+        if (ier == CV_SUCCESS) {     /* no root found */
+          irfnd = 0;
+          if ((irfndp == 1) && (task == CV_ONE_STEP)) {
+            tretlast = *tret = tn;
+            N_VScale(ONE, zn[0], yout);
+            return(CV_SUCCESS);
+          }
+        }
+        if (ier == RTFOUND) {  /* a new root was found */
+          irfnd = 1;
+          tretlast = *tret = tlo;
+          return(CV_ROOT_RETURN);
+        }
+      }
+
+    } /* end of root stop check */
+
+    /* Test for tn past tstop */
+    if ( istop && ((tstop - tn)*h < ZERO) ) {
+      if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_TSTOP, tn);
+      return(CV_ILL_INPUT);
+    }
+
+    /* In CV_NORMAL mode, test if tout was reached */
+    if ( (task == CV_NORMAL) && ((tn-tout)*h >= ZERO) ) {
+      tretlast = *tret = tout;
+      ier =  CVodeGetDky(cv_mem, tout, 0, yout);
+      if (ier != CV_SUCCESS) {
+        if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_TOUT, tout);
+        return(CV_ILL_INPUT);
+      }
+      return(CV_SUCCESS);
+    }
+
+    /* In CV_ONE_STEP mode, test if tn was returned */
+    if (task == CV_ONE_STEP && tretlast != tn) {
+      tretlast = *tret = tn;
+      N_VScale(ONE, zn[0], yout);
+      return(CV_SUCCESS);
+    }
+
+    /* Test for tn at tstop or near tstop */
+    if ( istop ) {
+
+      troundoff = FUZZ_FACTOR*uround*(ABS(tn) + ABS(h));
+      if ( ABS(tn - tstop) <= troundoff) {
+        ier =  CVodeGetDky(cv_mem, tstop, 0, yout);
+        if (ier != CV_SUCCESS) {
+          if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_TSTOP, tn);
+          return(CV_ILL_INPUT);
+        }
+        tretlast = *tret = tstop;
+        return(CV_TSTOP_RETURN);
+      }
+      
+      if ( (tn + hprime - tstop)*h > ZERO ) {
+        hprime = tstop - tn;
+        eta = hprime/h;
+      }
+
+    } /* end of istop tests block */
+    
+  } /* end stopping tests block */  
+
+  /* Looping point for internal steps */
+
+  nstloc = 0;
+  loop {
+   
+    next_h = h;
+    next_q = q;
+    
+    /* Reset and check ewt */
+
+    if (nst > 0) {
+      ewtsetOK = efun(zn[0], ewt, e_data);
+      if (ewtsetOK != 0) {
+	if(errfp!=NULL) {
+          if (itol == CV_WF) fprintf(errfp, MSGCV_EWT_NOW_FAIL, tn);
+          else fprintf(errfp, MSGCV_EWT_NOW_BAD, tn);
+	}
+        istate = CV_ILL_INPUT;
+        tretlast = *tret = tn;
+        N_VScale(ONE, zn[0], yout);
+        break;
+      }
+    }
+    
+    /* Check for too many steps */
+    
+    if (nstloc >= mxstep) {
+      if(errfp!=NULL) fprintf(errfp, MSGCV_MAX_STEPS, tn);
+      istate = CV_TOO_MUCH_WORK;
+      tretlast = *tret = tn;
+      N_VScale(ONE, zn[0], yout);
+      break;
+    }
+
+    /* Check for too much accuracy requested */
+
+    if ((tolsf = uround * N_VWrmsNorm(zn[0], ewt)) > ONE) {
+      if(errfp!=NULL) fprintf(errfp, MSGCV_TOO_MUCH_ACC, tn);
+      istate = CV_TOO_MUCH_ACC;
+      tretlast = *tret = tn;
+      N_VScale(ONE, zn[0], yout);
+      tolsf *= TWO;
+      break;
+    } else {
+      tolsf = ONE;
+    }
+
+    /* Check for h below roundoff level in tn */
+
+    if (tn + h == tn) {
+      nhnil++;
+      if (nhnil <= mxhnil) if(errfp!=NULL) fprintf(errfp, MSGCV_HNIL, tn, h);
+      if (nhnil == mxhnil) if(errfp!=NULL) fprintf(errfp, MSGCV_HNIL_DONE);
+    }
+
+    /* Call CVStep to take a step */
+
+    kflag = CVStep(cv_mem);
+
+    /* Process failed step cases, and exit loop */
+   
+    if (kflag != SUCCESS_STEP) {
+      istate = CVHandleFailure(cv_mem, kflag);
+      tretlast = *tret = tn;
+      N_VScale(ONE, zn[0], yout);
+      break;
+    }
+    
+    nstloc++;
+
+    /* Check for root in last step taken. */
+
+    if (nrtfn > 0) {
+
+      ier = CVRcheck3(cv_mem);
+
+      if (ier == RTFOUND) {  /* A new root was found */
+        irfnd = 1;
+        istate = CV_ROOT_RETURN;
+        tretlast = *tret = tlo;
+        break;
+      }
+    }
+
+    /* Check if tn is at tstop or near tstop */
+
+    if ( istop ) {
+
+      troundoff = FUZZ_FACTOR*uround*(ABS(tn) + ABS(h));
+      if ( ABS(tn - tstop) <= troundoff) {
+        (void) CVodeGetDky(cv_mem, tstop, 0, yout);
+        tretlast = *tret = tstop;
+        istate = CV_TSTOP_RETURN;
+        break;
+      }
+
+      if ( (tn + hprime - tstop)*h > ZERO ) {
+        hprime = tstop - tn;
+        eta = hprime/h;
+      }
+
+    }
+
+    /* Check if in one-step mode, and if so copy y and exit loop */
+    
+    if (task == CV_ONE_STEP) {
+      istate = CV_SUCCESS;
+      tretlast = *tret = tn;
+      N_VScale(ONE, zn[0], yout);
+      next_q = qprime;
+      next_h = hprime;
+      break;
+    }
+
+    /* Check if tout reached, and if so interpolate and exit loop */
+
+    if ((tn-tout)*h >= ZERO) {
+      istate = CV_SUCCESS;
+      tretlast = *tret = tout;
+      (void) CVodeGetDky(cv_mem, tout, 0, yout);
+      next_q = qprime;
+      next_h = hprime;
+      break;
+    }
+  }
+
+  return(istate);
+}
+
+/*------------------    CVodeGetDky      --------------------------*/
+/*
+  This routine computes the k-th derivative of the interpolating
+  polynomial at the time t and stores the result in the vector dky.
+  The formula is:
+          q 
+   dky = SUM c(j,k) * (t - tn)^(j-k) * h^(-j) * zn[j] , 
+         j=k 
+  where c(j,k) = j*(j-1)*...*(j-k+1), q is the current order, and
+  zn[j] is the j-th column of the Nordsieck history array.
+
+  This function is called by CVode with k = 0 and t = tout, but
+  may also be called directly by the user.
+*/
+/*-----------------------------------------------------------------*/
+
+int CVodeGetDky(void *cvode_mem, realtype t, int k, N_Vector dky)
+{
+  realtype s, c, r;
+  realtype tfuzz, tp, tn1;
+  int i, j;
+  CVodeMem cv_mem;
+  
+  /* Check all inputs for legality */
+ 
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGCV_DKY_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (dky == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_DKY);
+    return(CV_BAD_DKY);
+  }
+
+  if ((k < 0) || (k > q)) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_K);
+    return(CV_BAD_K);
+  }
+  
+  /* Allow for some slack */
+  tfuzz = FUZZ_FACTOR * uround * (ABS(tn) + ABS(hu));
+  if (hu < ZERO) tfuzz = -tfuzz;
+  tp = tn - hu - tfuzz;
+  tn1 = tn + tfuzz;
+  if ((t-tp)*(t-tn1) > ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_BAD_T, t, tn-hu, tn);
+    return(CV_BAD_T);
+  }
+
+  /* Sum the differentiated interpolating polynomial */
+
+  s = (t - tn) / h;
+  for (j=q; j >= k; j--) {
+    c = ONE;
+    for (i=j; i >= j-k+1; i--) c *= i;
+    if (j == q) {
+      N_VScale(c, zn[q], dky);
+    } else {
+      N_VLinearSum(c, zn[j], s, dky, dky);
+    }
+  }
+  if (k == 0) return(CV_SUCCESS);
+  r = RPowerI(h,-k);
+  N_VScale(r, dky, dky);
+  return(CV_SUCCESS);
+}
+
+/********************* CVodeFree **********************************
+
+ This routine frees the problem memory allocated by CVodeMalloc.
+ Such memory includes all the vectors allocated by CVAllocVectors,
+ and the memory lmem for the linear solver (deallocated by a call
+ to lfree).
+
+*******************************************************************/
+
+WINCVODE_API void CVodeFree(void *cvode_mem)
+{
+  CVodeMem cv_mem;
+
+  cv_mem = (CVodeMem) cvode_mem;
+  
+  if (cvode_mem == NULL) return;
+
+  CVFreeVectors(cv_mem);
+
+  if (iter == CV_NEWTON && lfree != NULL) lfree(cv_mem);
+
+  if (nrtfn > 0) {
+    free(glo);
+    free(ghi);
+    free(groot);
+    free(iroots); 
+  }
+
+  free(cv_mem);
+}
+
+/* 
+ * =================================================================
+ *  Private Functions Implementation
+ * =================================================================
+ */
+
+/****************** CVCheckNvector ***********************************
+ This routine checks if all required vector operations are present.
+ If any of them is missing it returns FALSE.
+**********************************************************************/
+
+static booleantype CVCheckNvector(N_Vector tmpl)
+{
+  if((tmpl->ops->nvclone     == NULL) ||
+     (tmpl->ops->nvdestroy   == NULL) ||
+     (tmpl->ops->nvlinearsum == NULL) ||
+     (tmpl->ops->nvconst     == NULL) ||
+     (tmpl->ops->nvprod      == NULL) ||
+     (tmpl->ops->nvdiv       == NULL) ||
+     (tmpl->ops->nvscale     == NULL) ||
+     (tmpl->ops->nvabs       == NULL) ||
+     (tmpl->ops->nvinv       == NULL) ||
+     (tmpl->ops->nvaddconst  == NULL) ||
+     (tmpl->ops->nvmaxnorm   == NULL) ||
+     (tmpl->ops->nvwrmsnorm  == NULL) ||
+     (tmpl->ops->nvmin       == NULL))
+    return(FALSE);
+  else
+    return(TRUE);
+}
+
+/****************** CVAllocVectors ***********************************
+
+ This routine allocates the CVODE vectors ewt, acor, tempv, ftemp, and
+ zn[0], ..., zn[qmax]. If tol=CV_SV, it also allocates space for Vabstol.
+ If all memory allocations are successful, CVAllocVectors returns TRUE. 
+ Otherwise all allocated memory is freed and CVAllocVectors returns FALSE.
+ This routine also sets the optional outputs lrw and liw, which are
+ (respectively) the lengths of the real and integer work spaces
+ allocated here.
+
+**********************************************************************/
+
+static booleantype CVAllocVectors(CVodeMem cv_mem, N_Vector tmpl, int tol)
+{
+  int i, j;
+
+  /* Allocate ewt, acor, tempv, ftemp */
+  
+  ewt = N_VClone(tmpl);
+  if (ewt == NULL) return(FALSE);
+  acor = N_VClone(tmpl);
+  if (acor == NULL) {
+    N_VDestroy(ewt);
+    return(FALSE);
+  }
+  tempv = N_VClone(tmpl);
+  if (tempv == NULL) {
+    N_VDestroy(ewt);
+    N_VDestroy(acor);
+    return(FALSE);
+  }
+  ftemp = N_VClone(tmpl);
+  if (ftemp == NULL) {
+    N_VDestroy(tempv);
+    N_VDestroy(ewt);
+    N_VDestroy(acor);
+    return(FALSE);
+  }
+
+  /* Allocate zn[0] ... zn[qmax] */
+
+  for (j=0; j <= qmax; j++) {
+    zn[j] = N_VClone(tmpl);
+    if (zn[j] == NULL) {
+      N_VDestroy(ewt);
+      N_VDestroy(acor);
+      N_VDestroy(tempv);
+      N_VDestroy(ftemp);
+      for (i=0; i < j; i++) N_VDestroy(zn[i]);
+      return(FALSE);
+    }
+  }
+
+  /* Update solver workspace lengths  */
+  lrw += (qmax + 5)*lrw1;
+  liw += (qmax + 5)*liw1;
+
+  if (tol == CV_SV) {
+    Vabstol = N_VClone(tmpl);
+    if (Vabstol == NULL) {
+      N_VDestroy(ewt);
+      N_VDestroy(acor);
+      N_VDestroy(tempv);
+      N_VDestroy(ftemp);
+      for (i=0; i <= qmax; i++) N_VDestroy(zn[i]);
+      return(FALSE);
+    }
+    lrw += lrw1;
+    liw += liw1;
+    cv_mem->cv_VabstolMallocDone = TRUE;
+  }
+
+  return(TRUE);
+}
+
+/***************** CVFreeVectors *********************************
+  
+ This routine frees the CVODE vectors allocated in CVAllocVectors.
+
+******************************************************************/
+
+static void CVFreeVectors(CVodeMem cv_mem)
+{
+  int j;
+  
+  N_VDestroy(ewt);
+  N_VDestroy(acor);
+  N_VDestroy(tempv);
+  N_VDestroy(ftemp);
+  for(j=0; j <= qmax; j++) N_VDestroy(zn[j]);
+
+  lrw -= (qmax + 5)*lrw1;
+  liw -= (qmax + 5)*liw1;
+
+  if (cv_mem->cv_VabstolMallocDone) {
+    N_VDestroy(Vabstol);
+    lrw -= lrw1;
+    liw -= liw1;
+  }
+}
+
+/*-----------------------------------------------------------------*/
+
+/*  
+ * CVInitialSetup
+ *
+ * This routine performs input consistency checks at the first step.
+ * If needed, it also checks the linear solver module and calls the
+ * linear solver initialization routine.
+ */
+
+static int CVInitialSetup(CVodeMem cv_mem)
+{
+  int ier;
+  int ewtsetOK;
+
+  /* Solver initial setup */
+
+  if (itol != CV_WF) {
+    efun = CVEwtSet;
+    e_data = (void *)cv_mem;
+  } else {
+    if (efun == NULL) {
+      if (errfp != NULL) fprintf(errfp, MSGCV_NO_EFUN);
+      return(CV_ILL_INPUT);
+    }
+  }
+
+  ewtsetOK = efun(zn[0], ewt, e_data);
+  if (ewtsetOK != 0) {
+    if(errfp!=NULL) {
+      if (itol == CV_WF) fprintf(errfp, MSGCV_FAIL_EWT);
+      else fprintf(errfp, MSGCV_BAD_EWT);
+    }
+    return(CV_ILL_INPUT);
+  }
+  
+  /* Check if lsolve function exists (if needed)
+     and call linit function (if it exists) */
+
+  if (iter == CV_NEWTON) {
+    if (lsolve == NULL) {
+      if(errfp!=NULL) fprintf(errfp, MSGCV_LSOLVE_NULL);
+      return (CV_ILL_INPUT);
+    }
+    if (linit != NULL) {
+      ier = linit(cv_mem);
+      if (ier != 0) {
+        if(errfp!=NULL) fprintf(errfp, MSGCV_LINIT_FAIL);
+        return (CV_ILL_INPUT);
+      }
+    }
+  }
+
+  return(CV_SUCCESS);
+}
+
+
+/******************* CVHin ***************************************
+
+ This routine computes a tentative initial step size h0. 
+ If tout is too close to tn (= t0), then CVHin returns FALSE and
+ h remains uninitialized. Otherwise, CVHin sets h to the chosen 
+ value h0 and returns TRUE.
+
+ The algorithm used seeks to find h0 as a solution of
+       (WRMS norm of (h0^2 ydd / 2)) = 1, 
+ where ydd = estimated second derivative of y.
+
+*****************************************************************/
+
+static booleantype CVHin(CVodeMem cv_mem, realtype tout)
+{
+  int sign, count;
+  realtype tdiff, tdist, tround, hlb, hub;
+  realtype hg, hgs, hnew, hrat, h0, yddnrm;
+
+  /* Test for tout too close to tn */
+  
+  if ((tdiff = tout-tn) == ZERO) return(FALSE);
+  
+  sign = (tdiff > ZERO) ? 1 : -1;
+  tdist = ABS(tdiff);
+  tround = uround * MAX(ABS(tn), ABS(tout));
+  if (tdist < TWO*tround) return(FALSE);
+  
+  /* Set lower and upper bounds on h0, and take geometric mean 
+     Exit with this value if the bounds cross each other       */
+
+  hlb = HLB_FACTOR * tround;
+  hub = CVUpperBoundH0(cv_mem, tdist);
+  hg  = RSqrt(hlb*hub);
+  if (hub < hlb) {
+    if (sign == -1) hg = -hg;
+    h = hg;
+    return(TRUE);
+  }
+  
+  /* Loop up to MAX_ITERS times to find h0.
+     Stop if new and previous values differ by a factor < 2.
+     Stop if hnew/hg > 2 after one iteration, as this probably means
+     that the ydd value is bad because of cancellation error.        */
+
+  count = 0;
+  loop {
+    hgs = hg*sign;
+    yddnrm = CVYddNorm(cv_mem, hgs);
+    hnew =  (yddnrm*hub*hub > TWO) ? RSqrt(TWO/yddnrm) : RSqrt(hg*hub);
+    count++;
+    if (count >= MAX_ITERS) break;
+    hrat = hnew/hg;
+    if ((hrat > HALF) && (hrat < TWO)) break;
+    if ((count >= 2) && (hrat > TWO)) {
+      hnew = hg;
+      break;
+    }
+    hg = hnew;
+  }
+  
+  /* Apply bounds, bias factor, and attach sign */
+
+  h0 = H_BIAS*hnew;
+  if (h0 < hlb) h0 = hlb;
+  if (h0 > hub) h0 = hub;
+  if (sign == -1) h0 = -h0;
+  h = h0;
+  return(TRUE);
+}
+
+/******************** CVUpperBoundH0 ******************************
+
+ This routine sets an upper bound on abs(h0) based on
+ tdist = abs(tout - t0) and the values of y[i]/y'[i].
+
+******************************************************************/
+
+static realtype CVUpperBoundH0(CVodeMem cv_mem, realtype tdist)
+{
+  realtype hub_inv, hub;
+  N_Vector temp1, temp2;
+
+  temp1 = tempv;
+  temp2 = acor;
+
+  /* 
+   * Bound based on |y0|/|y0'| -- allow at most an increase of
+   * HUB_FACTOR in y0 (based on a forward Euler step). The weight 
+   * factor is used as a safeguard against zero components in y0. 
+   */
+
+  N_VAbs(zn[0], temp2);
+  efun(zn[0], temp1, e_data);
+  N_VInv(temp1, temp1);
+  N_VLinearSum(HUB_FACTOR, temp2, ONE, temp1, temp1);
+
+  N_VAbs(zn[1], temp2);
+
+  N_VDiv(temp2, temp1, temp1);
+  hub_inv = N_VMaxNorm(temp1);
+
+  /*
+   * bound based on tdist -- allow at most a step of magnitude
+   * HUB_FACTOR * tdist
+   */
+
+  hub = HUB_FACTOR*tdist;
+
+  /* Use the smaler of the two */
+
+  if (hub*hub_inv > ONE) hub = ONE/hub_inv;
+
+  return(hub);
+}
+
+/****************** CVYddNorm *************************************
+
+ This routine computes an estimate of the second derivative of y
+ using a difference quotient, and returns its WRMS norm.
+
+******************************************************************/
+
+static realtype CVYddNorm(CVodeMem cv_mem, realtype hg)
+{
+  realtype yddnrm;
+  
+  N_VLinearSum(hg, zn[1], ONE, zn[0], y);
+  f(tn+hg, y, tempv, f_data);
+  nfe++;
+  N_VLinearSum(ONE, tempv, -ONE, zn[1], tempv);
+  N_VScale(ONE/hg, tempv, tempv);
+
+  yddnrm = N_VWrmsNorm(tempv, ewt);
+  return(yddnrm);
+}
+
+/********************* CVStep **************************************
+ 
+ This routine performs one internal cvode step, from tn to tn + h.
+ It calls other routines to do all the work.
+
+ The main operations done here are as follows:
+  * preliminary adjustments if a new step size was chosen;
+  * prediction of the Nordsieck history array zn at tn + h;
+  * setting of multistep method coefficients and test quantities;
+  * solution of the nonlinear system;
+  * testing the local error;
+  * updating zn and other state data if successful;
+  * resetting stepsize and order for the next step.
+  * if SLDET is on, check for stability, reduce order if necessary.
+ On a failure in the nonlinear system solution or error test, the
+ step may be reattempted, depending on the nature of the failure.
+
+********************************************************************/
+
+static int CVStep(CVodeMem cv_mem)
+{
+  realtype saved_t, dsm;
+  int ncf, nef, nflag;
+  booleantype passed;
+
+  int kflag;
+  
+  saved_t = tn;
+  ncf = nef = 0;
+  nflag = FIRST_CALL;
+
+  
+  if ((nst > 0) && (hprime != h)) CVAdjustParams(cv_mem);
+  
+  /* Looping point for attempts to take a step */
+  loop {  
+    CVPredict(cv_mem);  
+    CVSet(cv_mem);
+
+    nflag = CVnls(cv_mem, nflag);
+    kflag = CVHandleNFlag(cv_mem, &nflag, saved_t, &ncf);
+    if (kflag == PREDICT_AGAIN) continue;
+    if (kflag != DO_ERROR_TEST) return(kflag);
+    /* Return if nonlinear solve failed and recovery not possible. */
+
+    passed = CVDoErrorTest(cv_mem, &nflag, &kflag, saved_t, &nef, &dsm);
+    /* Return if error test failed and recovery not possible. */
+    if ((!passed) && (kflag == REP_ERR_FAIL)) return(kflag);
+    if (passed) break;
+    /* Retry step if error test failed, nflag == PREV_ERR_FAIL */
+  }
+
+  /* Nonlinear system solve and error test were both successful.
+     Update data, and consider change of step and/or order.       */
+
+
+  CVCompleteStep(cv_mem); 
+  CVPrepareNextStep(cv_mem, dsm); 
+
+  /* If Stablilty Limit Detection is turned on, call stability limit
+     detection routine for possible order reduction. */
+
+  if (sldeton) CVBDFStab(cv_mem);
+
+  etamax = (nst <= SMALL_NST) ? ETAMX2 : ETAMX3;
+
+  /*  Finally, we rescale the acor array to be the 
+      estimated local error vector. */
+
+  N_VScale(ONE/tq[2], acor, acor);
+  return(SUCCESS_STEP);
+      
+}
+
+
+/********************* CVAdjustParams ********************************
+
+ This routine is called when a change in step size was decided upon,
+ and it handles the required adjustments to the history array zn.
+ If there is to be a change in order, we call CVAdjustOrder and reset
+ q, L = q+1, and qwait.  Then in any case, we call CVRescale, which
+ resets h and rescales the Nordsieck array.
+
+**********************************************************************/
+
+static void CVAdjustParams(CVodeMem cv_mem)
+{
+  if (qprime != q) {
+    CVAdjustOrder(cv_mem, qprime-q);
+    q = qprime;
+    L = q+1;
+    qwait = L;
+  }
+  CVRescale(cv_mem);
+}
+
+/********************* CVAdjustOrder *****************************
+
+  This routine is a high level routine which handles an order
+  change by an amount deltaq (= +1 or -1). If a decrease in order
+  is requested and q==2, then the routine returns immediately.
+  Otherwise CVAdjustAdams or CVAdjustBDF is called to handle the
+  order change (depending on the value of lmm).
+
+******************************************************************/
+
+static void CVAdjustOrder(CVodeMem cv_mem, int deltaq)
+{
+  if ((q==2) && (deltaq != 1)) return;
+  
+  switch(lmm){
+    case CV_ADAMS: CVAdjustAdams(cv_mem, deltaq);
+                break;
+    case CV_BDF:   CVAdjustBDF(cv_mem, deltaq);
+                break;
+  }
+}
+
+/*************** CVAdjustAdams ***********************************
+
+ This routine adjusts the history array on a change of order q by
+ deltaq, in the case that lmm == CV_ADAMS.
+
+*****************************************************************/
+
+static void CVAdjustAdams(CVodeMem cv_mem, int deltaq)
+{
+  int i, j;
+  realtype xi, hsum;
+
+  /* On an order increase, set new column of zn to zero and return */
+  
+  if (deltaq==1) {
+    N_VConst(ZERO, zn[L]);
+    return;
+  }
+
+  /* On an order decrease, each zn[j] is adjusted by a multiple
+     of zn[q].  The coefficients in the adjustment are the 
+     coefficients of the polynomial x*x*(x+xi_1)*...*(x+xi_j),
+     integrated, where xi_j = [t_n - t_(n-j)]/h.               */
+
+  for (i=0; i <= qmax; i++) l[i] = ZERO;
+  l[1] = ONE;
+  hsum = ZERO;
+  for (j=1; j <= q-2; j++) {
+    hsum += tau[j];
+    xi = hsum / hscale;
+    for (i=j+1; i >= 1; i--) l[i] = l[i]*xi + l[i-1];
+  }
+  
+  for (j=1; j <= q-2; j++) l[j+1] = q * (l[j] / (j+1));
+  
+  for (j=2; j < q; j++)
+    N_VLinearSum(-l[j], zn[q], ONE, zn[j], zn[j]);
+}
+
+/********************** CVAdjustBDF *******************************
+
+ This is a high level routine which handles adjustments to the
+ history array on a change of order by deltaq in the case that 
+ lmm == CV_BDF.  CVAdjustBDF calls CVIncreaseBDF if deltaq = +1 and 
+ CVDecreaseBDF if deltaq = -1 to do the actual work.
+
+******************************************************************/
+
+static void CVAdjustBDF(CVodeMem cv_mem, int deltaq)
+{
+  switch(deltaq) {
+    case 1 : CVIncreaseBDF(cv_mem);
+             return;
+    case -1: CVDecreaseBDF(cv_mem);
+             return;
+  }
+}
+
+/******************** CVIncreaseBDF **********************************
+
+ This routine adjusts the history array on an increase in the 
+ order q in the case that lmm == CV_BDF.  
+ A new column zn[q+1] is set equal to a multiple of the saved 
+ vector (= acor) in zn[qmax].  Then each zn[j] is adjusted by
+ a multiple of zn[q+1].  The coefficients in the adjustment are the 
+ coefficients of the polynomial x*x*(x+xi_1)*...*(x+xi_(q-1)),
+ where xi_j = [t_n - t_(n-j)]/h.
+
+*********************************************************************/
+
+static void CVIncreaseBDF(CVodeMem cv_mem)
+{
+  realtype alpha0, alpha1, prod, xi, xiold, hsum, A1;
+  int i, j;
+  
+  for (i=0; i <= qmax; i++) l[i] = ZERO;
+  l[2] = alpha1 = prod = xiold = ONE;
+  alpha0 = -ONE;
+  hsum = hscale;
+  if (q > 1) {
+    for (j=1; j < q; j++) {
+      hsum += tau[j+1];
+      xi = hsum / hscale;
+      prod *= xi;
+      alpha0 -= ONE / (j+1);
+      alpha1 += ONE / xi;
+      for (i=j+2; i >= 2; i--) l[i] = l[i]*xiold + l[i-1];
+      xiold = xi;
+    }
+  }
+  A1 = (-alpha0 - alpha1) / prod;
+  N_VScale(A1, zn[qmax], zn[L]);
+  for (j=2; j <= q; j++) {
+    N_VLinearSum(l[j], zn[L], ONE, zn[j], zn[j]);
+  }  
+}
+
+/********************* CVDecreaseBDF ******************************
+
+ This routine adjusts the history array on a decrease in the 
+ order q in the case that lmm == CV_BDF.  
+ Each zn[j] is adjusted by a multiple of zn[q].  The coefficients
+ in the adjustment are the coefficients of the polynomial
+ x*x*(x+xi_1)*...*(x+xi_(q-2)), where xi_j = [t_n - t_(n-j)]/h.
+
+******************************************************************/
+
+static void CVDecreaseBDF(CVodeMem cv_mem)
+{
+  realtype hsum, xi;
+  int i, j;
+  
+  for (i=0; i <= qmax; i++) l[i] = ZERO;
+  l[2] = ONE;
+  hsum = ZERO;
+  for(j=1; j <= q-2; j++) {
+    hsum += tau[j];
+    xi = hsum /hscale;
+    for (i=j+2; i >= 2; i--) l[i] = l[i]*xi + l[i-1];
+  }
+  
+  for(j=2; j < q; j++)
+    N_VLinearSum(-l[j], zn[q], ONE, zn[j], zn[j]);
+}
+
+/**************** CVRescale ***********************************
+
+  This routine rescales the Nordsieck array by multiplying the
+  jth column zn[j] by eta^j, j = 1, ..., q.  Then the value of
+  h is rescaled by eta, and hscale is reset to h.
+
+***************************************************************/
+
+static void CVRescale(CVodeMem cv_mem)
+{
+  int j;
+  realtype factor;
+  
+  factor = eta;
+  for (j=1; j <= q; j++) {
+    N_VScale(factor, zn[j], zn[j]);
+    factor *= eta;
+  }
+  h = hscale * eta;
+  hscale = h;
+  nscon = 0;
+}
+
+/********************* CVPredict *************************************
+
+ This routine advances tn by the tentative step size h, and computes
+ the predicted array z_n(0), which is overwritten on zn.  The
+ prediction of zn is done by repeated additions.
+
+*********************************************************************/
+
+static void CVPredict(CVodeMem cv_mem)
+{
+  int j, k;
+  
+  tn += h;
+  for (k = 1; k <= q; k++)
+    for (j = q; j >= k; j--) 
+      N_VLinearSum(ONE, zn[j-1], ONE, zn[j], zn[j-1]); 
+}
+
+/************************** CVSet *********************************
+
+ This routine is a high level routine which calls CVSetAdams or
+ CVSetBDF to set the polynomial l, the test quantity array tq, 
+ and the related variables  rl1, gamma, and gamrat.
+
+******************************************************************/
+
+static void CVSet(CVodeMem cv_mem)
+{
+  switch(lmm) {
+    case CV_ADAMS: CVSetAdams(cv_mem);
+                break;
+    case CV_BDF  : CVSetBDF(cv_mem);
+                break;
+  }
+  rl1 = ONE / l[1];
+  gamma = h * rl1;
+  if (nst == 0) gammap = gamma;
+  gamrat = (nst > 0) ? gamma / gammap : ONE;  /* protect x / x != 1.0 */
+}
+
+/******************** CVSetAdams *********************************
+
+ This routine handles the computation of l and tq for the
+ case lmm == CV_ADAMS.
+
+ The components of the array l are the coefficients of a
+ polynomial Lambda(x) = l_0 + l_1 x + ... + l_q x^q, given by
+                          q-1
+ (d/dx) Lambda(x) = c * PRODUCT (1 + x / xi_i) , where
+                          i=1
+ Lambda(-1) = 0, Lambda(0) = 1, and c is a normalization factor.
+ Here xi_i = [t_n - t_(n-i)] / h.
+
+ The array tq is set to test quantities used in the convergence
+ test, the error test, and the selection of h at a new order.
+
+*****************************************************************/
+
+static void CVSetAdams(CVodeMem cv_mem)
+{
+  realtype m[L_MAX], M[3], hsum;
+  
+  if (q == 1) {
+    l[0] = l[1] = tq[1] = tq[5] = ONE;
+    tq[2] = TWO;
+    tq[3] = TWELVE;
+    tq[4] = nlscoef * tq[2];       /* = 0.1 * tq[2] */
+    return;
+  }
+  
+  hsum = CVAdamsStart(cv_mem, m);
+  
+  M[0] = CVAltSum(q-1, m, 1);
+  M[1] = CVAltSum(q-1, m, 2);
+  
+  CVAdamsFinish(cv_mem, m, M, hsum);
+}
+
+/****************** CVAdamsStart ********************************
+
+ This routine generates in m[] the coefficients of the product
+ polynomial needed for the Adams l and tq coefficients for q > 1.
+  
+******************************************************************/
+
+static realtype CVAdamsStart(CVodeMem cv_mem, realtype m[])
+{
+  realtype hsum, xi_inv, sum;
+  int i, j;
+  
+  hsum = h;
+  m[0] = ONE;
+  for (i=1; i <= q; i++) m[i] = ZERO;
+  for (j=1; j < q; j++) {
+    if ((j==q-1) && (qwait == 1)) {
+      sum = CVAltSum(q-2, m, 2);
+      tq[1] = m[q-2] / (q * sum);
+    }
+    xi_inv = h / hsum;
+    for (i=j; i >= 1; i--) m[i] += m[i-1] * xi_inv;
+    hsum += tau[j];
+    /* The m[i] are coefficients of product(1 to j) (1 + x/xi_i) */
+  }
+  return(hsum);
+}
+
+/****************** CVAdamsFinish  *******************************
+
+ This routine completes the calculation of the Adams l and tq.
+
+******************************************************************/
+
+static void CVAdamsFinish(CVodeMem cv_mem, realtype m[], realtype M[], 
+                          realtype hsum)
+{
+  int i;
+  realtype M0_inv, xi, xi_inv;
+  
+  M0_inv = ONE / M[0];
+  
+  l[0] = ONE;
+  for (i=1; i <= q; i++) l[i] = M0_inv * (m[i-1] / i);
+  xi = hsum / h;
+  xi_inv = ONE / xi;
+  
+  tq[2] = xi * M[0] / M[1];
+  tq[5] = xi / l[q];
+
+  if (qwait == 1) {
+    for (i=q; i >= 1; i--) m[i] += m[i-1] * xi_inv;
+    M[2] = CVAltSum(q, m, 2);
+    tq[3] = L * M[0] / M[2];
+  }
+
+  tq[4] = nlscoef * tq[2];
+}
+
+/****************** CVAltSum **************************************
+  
+ CVAltSum returns the value of the alternating sum
+   sum (i= 0 ... iend) [ (-1)^i * (a[i] / (i + k)) ].
+ If iend < 0 then CVAltSum returns 0.
+ This operation is needed to compute the integral, from -1 to 0,
+ of a polynomial x^(k-1) M(x) given the coefficients of M(x).
+
+******************************************************************/
+
+static realtype CVAltSum(int iend, realtype a[], int k)
+{
+  int i, sign;
+  realtype sum;
+  
+  if (iend < 0) return(ZERO);
+  
+  sum = ZERO;
+  sign = 1;
+  for (i=0; i <= iend; i++) {
+    sum += sign * (a[i] / (i+k));
+    sign = -sign;
+  }
+  return(sum);
+}
+
+/***************** CVSetBDF **************************************
+
+ This routine computes the coefficients l and tq in the case
+ lmm == CV_BDF.  CVSetBDF calls CVSetTqBDF to set the test
+ quantity array tq. 
+
+ The components of the array l are the coefficients of a
+ polynomial Lambda(x) = l_0 + l_1 x + ... + l_q x^q, given by
+                                 q-1
+ Lambda(x) = (1 + x / xi*_q) * PRODUCT (1 + x / xi_i) , where
+                                 i=1
+ xi_i = [t_n - t_(n-i)] / h.
+
+ The array tq is set to test quantities used in the convergence
+ test, the error test, and the selection of h at a new order.
+
+
+*****************************************************************/
+
+static void CVSetBDF(CVodeMem cv_mem)
+{
+  realtype alpha0, alpha0_hat, xi_inv, xistar_inv, hsum;
+  int i,j;
+  
+  l[0] = l[1] = xi_inv = xistar_inv = ONE;
+  for (i=2; i <= q; i++) l[i] = ZERO;
+  alpha0 = alpha0_hat = -ONE;
+  hsum = h;
+  if (q > 1) {
+    for (j=2; j < q; j++) {
+      hsum += tau[j-1];
+      xi_inv = h / hsum;
+      alpha0 -= ONE / j;
+      for(i=j; i >= 1; i--) l[i] += l[i-1]*xi_inv;
+      /* The l[i] are coefficients of product(1 to j) (1 + x/xi_i) */
+    }
+    
+    /* j = q */
+    alpha0 -= ONE / q;
+    xistar_inv = -l[1] - alpha0;
+    hsum += tau[q-1];
+    xi_inv = h / hsum;
+    alpha0_hat = -l[1] - xi_inv;
+    for (i=q; i >= 1; i--) l[i] += l[i-1]*xistar_inv;
+  }
+
+  CVSetTqBDF(cv_mem, hsum, alpha0, alpha0_hat, xi_inv, xistar_inv);
+}
+
+/****************** CVSetTqBDF ************************************
+
+ This routine sets the test quantity array tq when lmm == CV_BDF.
+
+******************************************************************/
+
+static void CVSetTqBDF(CVodeMem cv_mem, realtype hsum, realtype alpha0,
+                      realtype alpha0_hat, realtype xi_inv, realtype xistar_inv)
+{
+  realtype A1, A2, A3, A4, A5, A6;
+  realtype C, CPrime, CPrimePrime;
+  
+  A1 = ONE - alpha0_hat + alpha0;
+  A2 = ONE + q * A1;
+  tq[2] = ABS(alpha0 * (A2 / A1));
+  tq[5] = ABS((A2) / (l[q] * xi_inv/xistar_inv));
+  if (qwait == 1) {
+    C = xistar_inv / l[q];
+    A3 = alpha0 + ONE / q;
+    A4 = alpha0_hat + xi_inv;
+    CPrime = A3 / (ONE - A4 + A3);
+    tq[1] = ABS(CPrime / C);
+    hsum += tau[q];
+    xi_inv = h / hsum;
+    A5 = alpha0 - (ONE / (q+1));
+    A6 = alpha0_hat - xi_inv;
+    CPrimePrime = A2 / (ONE - A6 + A5);
+    tq[3] = ABS(CPrimePrime * xi_inv * (q+2) * A5);
+  }
+  tq[4] = nlscoef * tq[2];
+}
+
+/****************** CVnls *****************************************
+
+ This routine attempts to solve the nonlinear system associated
+ with a single implicit step of the linear multistep method.
+ Depending on iter, it calls CVnlsFunctional or CVnlsNewton
+ to do the work.
+
+******************************************************************/
+
+static int CVnls(CVodeMem cv_mem, int nflag)
+{
+  int flag = SOLVED;
+
+  switch(iter) {
+  case CV_FUNCTIONAL: 
+    flag = CVnlsFunctional(cv_mem);
+    break;
+  case CV_NEWTON:
+    flag = CVnlsNewton(cv_mem, nflag);
+    break;
+  }
+
+  return(flag);
+}
+
+/***************** CVnlsFunctional ********************************
+
+ This routine attempts to solve the nonlinear system using 
+ functional iteration (no matrices involved).
+
+******************************************************************/
+
+static int CVnlsFunctional(CVodeMem cv_mem)
+{
+  int m;
+  realtype del, delp, dcon;
+
+  /* Initialize counter and evaluate f at predicted y */
+  
+  crate = ONE;
+  m = 0;
+  f(tn, zn[0], tempv, f_data);
+  nfe++;
+  N_VConst(ZERO, acor);
+
+  /* Loop until convergence; accumulate corrections in acor */
+
+  loop {
+    /* Correct y directly from the last f value */
+    N_VLinearSum(h, tempv, -ONE, zn[1], tempv);
+    N_VScale(rl1, tempv, tempv);
+    N_VLinearSum(ONE, zn[0], ONE, tempv, y);
+    /* Get WRMS norm of current correction to use in convergence test */
+    N_VLinearSum(ONE, tempv, -ONE, acor, acor);
+    del = N_VWrmsNorm(acor, ewt);
+    N_VScale(ONE, tempv, acor);
+    
+    /* Test for convergence.  If m > 0, an estimate of the convergence
+       rate constant is stored in crate, and used in the test.        */
+    if (m > 0) crate = MAX(CRDOWN * crate, del / delp);
+    dcon = del * MIN(ONE, crate) / tq[4];
+    if (dcon <= ONE) {
+      acnrm = (m == 0) ? del : N_VWrmsNorm(acor, ewt);
+      return(SOLVED);  /* Convergence achieved */
+    }
+
+    /* Stop at maxcor iterations or if iter. seems to be diverging */
+    m++;
+    if ((m==maxcor) || ((m >= 2) && (del > RDIV * delp)))
+      return(CONV_FAIL);
+    /* Save norm of correction, evaluate f, and loop again */
+    delp = del;
+    f(tn, y, tempv, f_data);
+    nfe++;
+  }
+}
+
+/*********************** CVnlsNewton **********************************
+
+ This routine handles the Newton iteration. It calls lsetup if 
+ indicated, calls CVNewtonIteration to perform the iteration, and 
+ retries a failed attempt at Newton iteration if that is indicated.
+ See return values at top of this file.
+
+**********************************************************************/
+
+static int CVnlsNewton(CVodeMem cv_mem, int nflag)
+{
+  N_Vector vtemp1, vtemp2, vtemp3;
+  int convfail, ier;
+  booleantype callSetup;
+  
+  vtemp1 = acor;  /* rename acor as vtemp1 for readability  */
+  vtemp2 = y;     /* rename y as vtemp2 for readability     */
+  vtemp3 = tempv; /* rename tempv as vtemp3 for readability */
+  
+  /* Set flag convfail, input to lsetup for its evaluation decision */
+  convfail = ((nflag == FIRST_CALL) || (nflag == PREV_ERR_FAIL)) ?
+    CV_NO_FAILURES : CV_FAIL_OTHER;
+
+  /* Decide whether or not to call setup routine (if one exists) */
+  if (setupNonNull) {      
+    callSetup = (nflag == PREV_CONV_FAIL) || (nflag == PREV_ERR_FAIL) ||
+      (nst == 0) || (nst >= nstlp + MSBP) || (ABS(gamrat-ONE) > DGMAX);
+  } else {  
+    crate = ONE;
+    callSetup = FALSE;
+  }
+  
+  /* Looping point for the solution of the nonlinear system.
+     Evaluate f at the predicted y, call lsetup if indicated, and
+     call CVNewtonIteration for the Newton iteration itself.      */
+  
+  loop {
+
+    f(tn, zn[0], ftemp, f_data);
+    nfe++; 
+    
+    if (callSetup) {
+      ier = lsetup(cv_mem, convfail, zn[0], ftemp, &jcur, 
+                   vtemp1, vtemp2, vtemp3);
+      nsetups++;
+      callSetup = FALSE;
+      gamrat = crate = ONE; 
+      gammap = gamma;
+      nstlp = nst;
+      /* Return if lsetup failed */
+      if (ier < 0) return(SETUP_FAIL_UNREC);
+      if (ier > 0) return(CONV_FAIL);
+    }
+
+    /* Set acor to zero and load prediction into y vector */
+    N_VConst(ZERO, acor);
+    N_VScale(ONE, zn[0], y);
+
+    /* Do the Newton iteration */
+    ier = CVNewtonIteration(cv_mem);
+
+    /* If there is a convergence failure and the Jacobian-related 
+       data appears not to be current, loop again with a call to lsetup
+       in which convfail=CV_FAIL_BAD_J.  Otherwise return.                 */
+    if (ier != TRY_AGAIN) return(ier);
+    
+    callSetup = TRUE;
+    convfail = CV_FAIL_BAD_J;
+  }
+}
+
+/********************** CVNewtonIteration ****************************
+
+ This routine performs the Newton iteration. If the iteration succeeds,
+ it returns the value SOLVED. If not, it may signal the CVnlsNewton 
+ routine to call lsetup again and reattempt the iteration, by
+ returning the value TRY_AGAIN. (In this case, CVnlsNewton must set 
+ convfail to CV_FAIL_BAD_J before calling setup again). 
+ Otherwise, this routine returns one of the appropriate values 
+ SOLVE_FAIL_UNREC or CONV_FAIL back to CVnlsNewton.
+
+*********************************************************************/
+
+static int CVNewtonIteration(CVodeMem cv_mem)
+{
+  int m, ret;
+  realtype del, delp, dcon;
+  N_Vector b;
+  
+  
+  mnewt = m = 0;
+
+  /* Looping point for Newton iteration */
+  loop {
+
+    /* Evaluate the residual of the nonlinear system*/
+    N_VLinearSum(rl1, zn[1], ONE, acor, tempv);
+    N_VLinearSum(gamma, ftemp, -ONE, tempv, tempv);
+
+    /* Call the lsolve function */
+    b = tempv;
+    ret = lsolve(cv_mem, b, ewt, y, ftemp); 
+    nni++;
+    
+    if (ret < 0) return(SOLVE_FAIL_UNREC);
+    
+    /* If lsolve had a recoverable failure and Jacobian data is
+       not current, signal to try the solution again            */
+    if (ret > 0) { 
+      if ((!jcur) && (setupNonNull)) return(TRY_AGAIN);
+      return(CONV_FAIL);
+    }
+
+    /* Get WRMS norm of correction; add correction to acor and y */
+    del = N_VWrmsNorm(b, ewt);
+    N_VLinearSum(ONE, acor, ONE, b, acor);
+    N_VLinearSum(ONE, zn[0], ONE, acor, y);
+    
+    /* Test for convergence.  If m > 0, an estimate of the convergence
+       rate constant is stored in crate, and used in the test.        */
+    if (m > 0) {
+      crate = MAX(CRDOWN * crate, del/delp);
+    }
+    dcon = del * MIN(ONE, crate) / tq[4];
+    
+    if (dcon <= ONE) {
+      acnrm = (m==0) ? del : N_VWrmsNorm(acor, ewt);
+      jcur = FALSE;
+      return(SOLVED); /* Nonlinear system was solved successfully */
+    }
+    
+    mnewt = ++m;
+    
+    /* Stop at maxcor iterations or if iter. seems to be diverging.
+       If still not converged and Jacobian data is not current, 
+       signal to try the solution again                            */
+    if ((m == maxcor) || ((m >= 2) && (del > RDIV*delp))) {
+      if ((!jcur) && (setupNonNull)) return(TRY_AGAIN);
+      return(CONV_FAIL);
+    }
+    
+    /* Save norm of correction, evaluate f, and loop again */
+    delp = del;
+    f(tn, y, ftemp, f_data);
+    nfe++;
+  }
+}
+
+/********************** CVHandleNFlag *******************************
+
+ This routine takes action on the return value nflag = *nflagPtr
+ returned by CVnls, as follows:
+ 
+ If CVnls succeeded in solving the nonlinear system, then
+ CVHandleNFlag returns the constant DO_ERROR_TEST, which tells CVStep
+ to perform the error test.
+
+ If the nonlinear system was not solved successfully, then ncfn and
+ ncf = *ncfPtr are incremented and Nordsieck array zn is restored.
+
+ If the solution of the nonlinear system failed due to an
+ unrecoverable failure by setup, we return the value SETUP_FAILED.
+
+ If it failed due to an unrecoverable failure in solve, then we return
+ the value SOLVE_FAILED.
+
+ Otherwise, a recoverable failure occurred when solving the 
+ nonlinear system (CVnls returned nflag == CONV_FAIL). 
+   In this case, we return the value REP_CONV_FAIL if ncf is now
+   equal to maxncf or |h| = hmin. 
+   If not, we set *nflagPtr = PREV_CONV_FAIL and return the value
+   PREDICT_AGAIN, telling CVStep to reattempt the step.
+
+*********************************************************************/
+
+static int CVHandleNFlag(CVodeMem cv_mem, int *nflagPtr, realtype saved_t,
+                         int *ncfPtr)
+{
+  int nflag;
+  
+  nflag = *nflagPtr;
+  
+  if (nflag == SOLVED) return(DO_ERROR_TEST);
+
+  /* The nonlinear soln. failed; increment ncfn and restore zn */
+  ncfn++;
+  CVRestore(cv_mem, saved_t);
+  
+  /* Return if lsetup or lsolve failed unrecoverably */
+  if (nflag == SETUP_FAIL_UNREC) return(SETUP_FAILED);
+  if (nflag == SOLVE_FAIL_UNREC) return(SOLVE_FAILED);
+  
+  /* At this point, nflag == CONV_FAIL; increment ncf */
+  
+  (*ncfPtr)++;
+  etamax = ONE;
+  /* If we had maxncf failures or |h| = hmin, return REP_CONV_FAIL */
+  if ((ABS(h) <= hmin*ONEPSM) || (*ncfPtr == maxncf))
+    return(REP_CONV_FAIL);
+
+  /* Reduce step size; return to reattempt the step */
+  eta = MAX(ETACF, hmin / ABS(h));
+  *nflagPtr = PREV_CONV_FAIL;
+  CVRescale(cv_mem);
+  return(PREDICT_AGAIN);
+}
+
+/********************** CVRestore ************************************
+
+ This routine restores the value of tn to saved_t and undoes the
+ prediction.  After execution of CVRestore, the Nordsieck array zn has
+ the same values as before the call to CVPredict.
+
+********************************************************************/
+
+static void CVRestore(CVodeMem cv_mem, realtype saved_t)
+{
+  int j, k;
+  
+  tn = saved_t;
+  for (k = 1; k <= q; k++)
+    for (j = q; j >= k; j--)
+      N_VLinearSum(ONE, zn[j-1], -ONE, zn[j], zn[j-1]);
+}
+
+/******************* CVDoErrorTest ********************************
+
+ This routine performs the local error test. 
+ The weighted local error norm dsm is loaded into *dsmPtr, and 
+ the test dsm ?<= 1 is made.
+
+ If the test passes, CVDoErrorTest returns TRUE. 
+
+ If the test fails, we undo the step just taken (call CVRestore), 
+ set *nflagPtr to PREV_ERR_FAIL, and return FALSE. 
+
+ If maxnef error test failures have occurred or if ABS(h) = hmin,
+ we set *kflagPtr = REP_ERR_FAIL. (Otherwise *kflagPtr has the
+ value last returned by CVHandleNflag.)
+
+ If more than MXNEF1 error test failures have occurred, an order
+ reduction is forced.
+
+******************************************************************/
+
+static booleantype CVDoErrorTest(CVodeMem cv_mem, int *nflagPtr, int *kflagPtr,
+                                realtype saved_t, int *nefPtr, realtype *dsmPtr)
+{
+  realtype dsm;
+  
+  dsm = acnrm / tq[2];
+
+  /* If est. local error norm dsm passes test, return TRUE */  
+  *dsmPtr = dsm; 
+  if (dsm <= ONE) return(TRUE);
+  
+  /* Test failed; increment counters, set nflag, and restore zn array */
+  (*nefPtr)++;
+  netf++;
+  *nflagPtr = PREV_ERR_FAIL;
+  CVRestore(cv_mem, saved_t);
+
+  /* At maxnef failures or |h| = hmin, return with kflag = REP_ERR_FAIL */
+  if ((ABS(h) <= hmin*ONEPSM) || (*nefPtr == maxnef)) {
+    *kflagPtr = REP_ERR_FAIL;
+    return(FALSE);
+  }
+
+  /* Set etamax = 1 to prevent step size increase at end of this step */
+  etamax = ONE;
+
+  /* Set h ratio eta from dsm, rescale, and return for retry of step */
+  if (*nefPtr <= MXNEF1) {
+    eta = ONE / (RPowerR(BIAS2*dsm,ONE/L) + ADDON);
+    eta = MAX(ETAMIN, MAX(eta, hmin / ABS(h)));
+    if (*nefPtr >= SMALL_NEF) eta = MIN(eta, ETAMXF);
+    CVRescale(cv_mem);
+    return(FALSE);
+  }
+  
+  /* After MXNEF1 failures, force an order reduction and retry step */
+  if (q > 1) {
+    eta = MAX(ETAMIN, hmin / ABS(h));
+    CVAdjustOrder(cv_mem,-1);
+    L = q;
+    q--;
+    qwait = L;
+    CVRescale(cv_mem);
+    return(FALSE);
+  }
+
+  /* If already at order 1, restart: reload zn from scratch */
+  eta = MAX(ETAMIN, hmin / ABS(h));
+  h *= eta;
+  hscale = h;
+  qwait = LONG_WAIT;
+  nscon = 0;
+  f(tn, zn[0], tempv, f_data);
+  nfe++;
+  N_VScale(h, tempv, zn[1]);
+  return(FALSE);
+}
+
+/*************** CVCompleteStep **********************************
+
+ This routine performs various update operations when the solution
+ to the nonlinear system has passed the local error test. 
+ We increment the step counter nst, record the values hu and qu,
+ update the tau array, and apply the corrections to the zn array.
+ The tau[i] are the last q values of h, with tau[1] the most recent.
+ The counter qwait is decremented, and if qwait == 1 (and q < qmax)
+ we save acor and tq[5] for a possible order increase.
+
+******************************************************************/
+
+static void CVCompleteStep(CVodeMem cv_mem)
+{
+  int i, j;
+  
+  nst++;
+  nscon++;
+  hu = h;
+  qu = q;
+
+  for (i=q; i >= 2; i--)  tau[i] = tau[i-1];
+  if ((q==1) && (nst > 1)) tau[2] = tau[1];
+  tau[1] = h;
+
+  for (j=0; j <= q; j++) 
+    N_VLinearSum(l[j], acor, ONE, zn[j], zn[j]);
+  qwait--;
+  if ((qwait == 1) && (q != qmax)) {
+    N_VScale(ONE, acor, zn[qmax]);
+    saved_tq5 = tq[5];
+  }
+}
+
+/************* CVPrepareNextStep **********************************
+
+ This routine handles the setting of stepsize and order for the
+ next step -- hprime and qprime.  Along with hprime, it sets the
+ ratio eta = hprime/h.  It also updates other state variables 
+ related to a change of step size or order. 
+
+******************************************************************/
+
+ static void CVPrepareNextStep(CVodeMem cv_mem, realtype dsm)
+{
+  /* If etamax = 1, defer step size or order changes */
+  if (etamax == ONE) {
+    qwait = MAX(qwait, 2);
+    qprime = q;
+    hprime = h;
+    eta = ONE;
+    return;
+  }
+
+  /* etaq is the ratio of new to old h at the current order */  
+  etaq = ONE /(RPowerR(BIAS2*dsm,ONE/L) + ADDON);
+  
+  /* If no order change, adjust eta and acor in CVSetEta and return */
+  if (qwait != 0) {
+    eta = etaq;
+    qprime = q;
+    CVSetEta(cv_mem);
+    return;
+  }
+  
+  /* If qwait = 0, consider an order change.   etaqm1 and etaqp1 are 
+     the ratios of new to old h at orders q-1 and q+1, respectively.
+     CVChooseEta selects the largest; CVSetEta adjusts eta and acor */
+  qwait = 2;
+  etaqm1 = CVComputeEtaqm1(cv_mem);
+  etaqp1 = CVComputeEtaqp1(cv_mem);  
+  CVChooseEta(cv_mem); 
+  CVSetEta(cv_mem);
+}
+
+/***************** CVSetEta ***************************************
+
+ This routine adjusts the value of eta according to the various
+ heuristic limits and the optional input hmax.  It also resets
+ etamax to be the estimated local error vector.
+
+*******************************************************************/
+
+static void CVSetEta(CVodeMem cv_mem)
+{
+
+  /* If eta below the threshhold THRESH, reject a change of step size */
+  if (eta < THRESH) {
+    eta = ONE;
+    hprime = h;
+  } else {
+    /* Limit eta by etamax and hmax, then set hprime */
+    eta = MIN(eta, etamax);
+    eta /= MAX(ONE, ABS(h)*hmax_inv*eta);
+    hprime = h * eta;
+    if (qprime < q) nscon = 0;
+  }
+  
+  /* Reset etamax for the next step size change, and scale acor */
+}
+
+/*************** CVComputeEtaqm1 **********************************
+
+ This routine computes and returns the value of etaqm1 for a
+ possible decrease in order by 1.
+
+******************************************************************/
+
+static realtype CVComputeEtaqm1(CVodeMem cv_mem)
+{
+  realtype ddn;
+  
+  etaqm1 = ZERO;
+  if (q > 1) {
+    ddn = N_VWrmsNorm(zn[q], ewt) / tq[1];
+    etaqm1 = ONE/(RPowerR(BIAS1*ddn, ONE/q) + ADDON);
+  }
+  return(etaqm1);
+}
+
+/*************** CVComputeEtaqp1 **********************************
+
+ This routine computes and returns the value of etaqp1 for a
+ possible increase in order by 1.
+
+******************************************************************/
+
+static realtype CVComputeEtaqp1(CVodeMem cv_mem)
+{
+  realtype dup, cquot;
+  
+  etaqp1 = ZERO;
+  if (q != qmax) {
+    cquot = (tq[5] / saved_tq5) * RPowerI(h/tau[2], L);
+    N_VLinearSum(-cquot, zn[qmax], ONE, acor, tempv);
+    dup = N_VWrmsNorm(tempv, ewt) /tq[3];
+    etaqp1 = ONE / (RPowerR(BIAS3*dup, ONE/(L+1)) + ADDON);
+  }
+  return(etaqp1);
+}
+
+/******************* CVChooseEta **********************************
+
+ Given etaqm1, etaq, etaqp1 (the values of eta for qprime =
+ q - 1, q, or q + 1, respectively), this routine chooses the 
+ maximum eta value, sets eta to that value, and sets qprime to the
+ corresponding value of q.  If there is a tie, the preference
+ order is to (1) keep the same order, then (2) decrease the order,
+ and finally (3) increase the order.  If the maximum eta value
+ is below the threshhold THRESH, the order is kept unchanged and
+ eta is set to 1.
+
+******************************************************************/
+
+static void CVChooseEta(CVodeMem cv_mem)
+{
+  realtype etam;
+  
+  etam = MAX(etaqm1, MAX(etaq, etaqp1));
+  
+  if (etam < THRESH) {
+    eta = ONE;
+    qprime = q;
+    return;
+  }
+
+  if (etam == etaq) {
+    eta = etaq;
+    qprime = q;
+  } else if (etam == etaqm1) {
+    eta = etaqm1;
+    qprime = q - 1;
+  } else {
+    eta = etaqp1;
+    qprime = q + 1;
+    if (lmm == CV_BDF) N_VScale(ONE, acor, zn[qmax]);
+  }
+}
+
+/****************** CVHandleFailure ******************************
+
+ This routine prints error messages for all cases of failure by
+ CVStep. It returns to CVode the value that CVode is to return to
+ the user.
+
+*****************************************************************/
+
+static int CVHandleFailure(CVodeMem cv_mem, int kflag)
+{
+
+  /* Set vector of  absolute weighted local errors */
+  N_VProd(acor, ewt, tempv);
+  N_VAbs(tempv, tempv);
+
+  /* Depending on kflag, print error message and return error flag */
+  switch (kflag) {
+    case REP_ERR_FAIL: 
+      if(errfp!=NULL) fprintf(errfp, MSGCV_ERR_FAILS, tn, h);
+      return(CV_ERR_FAILURE);
+    case REP_CONV_FAIL:
+      if(errfp!=NULL) fprintf(errfp, MSGCV_CONV_FAILS, tn, h);
+      return(CV_CONV_FAILURE);
+    case SETUP_FAILED:
+      if(errfp!=NULL) fprintf(errfp, MSGCV_SETUP_FAILED, tn);
+      return(CV_LSETUP_FAIL);
+    case SOLVE_FAILED:
+      if(errfp!=NULL) fprintf(errfp, MSGCV_SOLVE_FAILED, tn);
+      return(CV_LSOLVE_FAIL);
+  }
+  return(0);
+}
+
+/****************** CVBDFStab ***********************************
+ This routine handles the BDF Stability Limit Detection Algorithm
+ STALD.  It is called if lmm = CV_BDF and the SLDET option is on.
+ If the order is 3 or more, the required norm data is saved.
+ If a decision to reduce order has not already been made, and
+ enough data has been saved, CVsldet is called.  If it signals
+ a stability limit violation, the order is reduced, and the step
+ size is reset accordingly.
+
+*****************************************************************/
+
+void CVBDFStab(CVodeMem cv_mem)
+{
+  int i,k, ldflag, factorial;
+  realtype sq, sqm1, sqm2;
+      
+  /* If order is 3 or greater, then save scaled derivative data,
+     push old data down in i, then add current values to top.    */
+
+  if (q >= 3) {
+    for (k = 1; k <= 3; k++)
+      { for (i = 5; i >= 2; i--) ssdat[i][k] = ssdat[i-1][k]; }
+    factorial = 1;
+    for (i = 1; i <= q-1; i++) factorial *= i;
+    sq = factorial*q*(q+1)*acnrm/tq[5];
+    sqm1 = factorial*q*N_VWrmsNorm(zn[q], ewt);
+    sqm2 = factorial*N_VWrmsNorm(zn[q-1], ewt);
+    ssdat[1][1] = sqm2*sqm2;
+    ssdat[1][2] = sqm1*sqm1;
+    ssdat[1][3] = sq*sq;
+  }  
+
+  if (qprime >= q) {
+
+    /* If order is 3 or greater, and enough ssdat has been saved,
+       nscon >= q+5, then call stability limit detection routine.  */
+
+    if ( (q >= 3) && (nscon >= q+5) ) {
+      ldflag = CVsldet(cv_mem);
+      if (ldflag > 3) {
+        /* A stability limit violation is indicated by
+           a return flag of 4, 5, or 6.
+           Reduce new order.                     */
+        qprime = q-1;
+        eta = etaqm1; 
+        eta = MIN(eta,etamax);
+        eta = eta/MAX(ONE,ABS(h)*hmax_inv*eta);
+        hprime = h*eta;
+        nor = nor + 1;
+      }
+    }
+  }
+  else {
+    /* Otherwise, let order increase happen, and 
+       reset stability limit counter, nscon.     */
+    nscon = 0;
+  }
+}
+
+/********************* CVsldet ************************************
+  This routine detects stability limitation using stored scaled 
+  derivatives data. CVsldet returns the magnitude of the
+  dominate characteristic root, rr. The presents of a stability
+  limit is indicated by rr > "something a little less then 1.0",  
+  and a positive kflag. This routine should only be called if
+  order is greater than or equal to 3, and data has been collected
+  for 5 time steps. 
+ 
+  Returned values:
+     kflag = 1 -> Found stable characteristic root, normal matrix case
+     kflag = 2 -> Found stable characteristic root, quartic solution
+     kflag = 3 -> Found stable characteristic root, quartic solution,
+                  with Newton correction
+     kflag = 4 -> Found stability violation, normal matrix case
+     kflag = 5 -> Found stability violation, quartic solution
+     kflag = 6 -> Found stability violation, quartic solution,
+                  with Newton correction
+
+     kflag < 0 -> No stability limitation, 
+                  or could not compute limitation.
+
+     kflag = -1 -> Min/max ratio of ssdat too small.
+     kflag = -2 -> For normal matrix case, vmax > vrrt2*vrrt2
+     kflag = -3 -> For normal matrix case, The three ratios
+                   are inconsistent.
+     kflag = -4 -> Small coefficient prevents elimination of quartics.  
+     kflag = -5 -> R value from quartics not consistent.
+     kflag = -6 -> No corrected root passes test on qk values
+     kflag = -7 -> Trouble solving for sigsq.
+     kflag = -8 -> Trouble solving for B, or R via B.
+     kflag = -9 -> R via sigsq[k] disagrees with R from data.
+
+********************************************************************/
+
+static int CVsldet(CVodeMem cv_mem)
+{
+  int i, k, j, it, kmin, kflag = 0;
+  realtype rat[5][4], rav[4], qkr[4], sigsq[4], smax[4], ssmax[4];
+  realtype drr[4], rrc[4],sqmx[4], qjk[4][4], vrat[5], qc[6][4], qco[6][4];
+  realtype rr, rrcut, vrrtol, vrrt2, sqtol, rrtol;
+  realtype smink, smaxk, sumrat, sumrsq, vmin, vmax, drrmax, adrr;
+  realtype small, tem, sqmax, saqk, qp, s, sqmaxk, saqj, sqmin;
+  realtype rsa, rsb, rsc, rsd, rse, rd1a, rd1b, rd1c, rd1d;
+  realtype rd2a, rd2b, rd2c, rd3a, rd3b, cest1, corr1; 
+  realtype ratp, ratm, qfac1, qfac2, bb, rrb;
+
+  /* The following are cutoffs and tolerances used by this routine */
+
+  rrcut  = RCONST(0.98);
+  vrrtol = RCONST(1.0e-4);
+  vrrt2  = RCONST(5.0e-4);
+  sqtol  = RCONST(1.0e-3);
+  rrtol  = RCONST(1.0e-2);
+  
+  rr = ZERO;
+  
+  /*  Index k corresponds to the degree of the interpolating polynomial. */
+  /*      k = 1 -> q-1          */
+  /*      k = 2 -> q            */
+  /*      k = 3 -> q+1          */
+  
+  /*  Index i is a backward-in-time index, i = 1 -> current time, */
+  /*      i = 2 -> previous step, etc    */
+  
+  /* get maxima, minima, and variances, and form quartic coefficients  */
+  
+  for (k=1; k<=3; k++) {
+    smink = ssdat[1][k];
+    smaxk = ZERO;
+    
+    for (i=1; i<=5; i++) {
+      smink = MIN(smink,ssdat[i][k]);
+      smaxk = MAX(smaxk,ssdat[i][k]);
+    }
+    
+    if (smink < TINY*smaxk) {
+      kflag = -1;  
+      return(kflag);
+    }
+    smax[k] = smaxk;
+    ssmax[k] = smaxk*smaxk;
+    
+    sumrat = ZERO;
+    sumrsq = ZERO;
+    for (i=1; i<=4; i++) {
+      rat[i][k] = ssdat[i][k]/ssdat[i+1][k];
+      sumrat = sumrat + rat[i][k];
+      sumrsq = sumrsq + rat[i][k]*rat[i][k];
+    } 
+    rav[k] = FOURTH*sumrat;
+    vrat[k] = ABS(FOURTH*sumrsq - rav[k]*rav[k]);
+    
+    qc[5][k] = ssdat[1][k]*ssdat[3][k] - ssdat[2][k]*ssdat[2][k];
+    qc[4][k] = ssdat[2][k]*ssdat[3][k] - ssdat[1][k]*ssdat[4][k];
+    qc[3][k] = ZERO;
+    qc[2][k] = ssdat[2][k]*ssdat[5][k] - ssdat[3][k]*ssdat[4][k];
+    qc[1][k] = ssdat[4][k]*ssdat[4][k] - ssdat[3][k]*ssdat[5][k];
+    
+    for (i=1; i<=5; i++) {
+      qco[i][k] = qc[i][k];
+    }
+  }                            /* End of k loop */
+  
+  /* Isolate normal or nearly-normal matrix case. Three quartic will
+     have common or nearly-common roots in this case. 
+     Return a kflag = 1 if this procedure works. If three root 
+     differ more than vrrt2, return error kflag = -3.    */
+  
+  vmin = MIN(vrat[1],MIN(vrat[2],vrat[3]));
+  vmax = MAX(vrat[1],MAX(vrat[2],vrat[3]));
+  
+  if(vmin < vrrtol*vrrtol) {
+    if (vmax > vrrt2*vrrt2) {
+      kflag = -2;  
+      return(kflag);
+    } else {
+      rr = (rav[1] + rav[2] + rav[3])/THREE;
+      
+      drrmax = ZERO;
+      for(k = 1;k<=3;k++) {
+        adrr = ABS(rav[k] - rr);
+        drrmax = MAX(drrmax, adrr);
+      }
+      if (drrmax > vrrt2) {
+        kflag = -3;    
+      }
+      
+      kflag = 1;
+
+      /*  can compute charactistic root, drop to next section   */
+      
+    }
+  } else {
+
+    /* use the quartics to get rr. */
+    
+    if (ABS(qco[1][1]) < TINY*ssmax[1]) {
+      small = qco[1][1];
+      kflag = -4;    
+      return(kflag);
+    }
+    
+    tem = qco[1][2]/qco[1][1];
+    for(i=2; i<=5; i++) {
+      qco[i][2] = qco[i][2] - tem*qco[i][1];
+    }
+
+    qco[1][2] = ZERO;
+    tem = qco[1][3]/qco[1][1];
+    for(i=2; i<=5; i++) {
+      qco[i][3] = qco[i][3] - tem*qco[i][1];
+    }
+    qco[1][3] = ZERO;
+    
+    if (ABS(qco[2][2]) < TINY*ssmax[2]) {
+      small = qco[2][2];
+      kflag = -4;    
+      return(kflag);
+    }
+    
+    tem = qco[2][3]/qco[2][2];
+    for(i=3; i<=5; i++) {
+      qco[i][3] = qco[i][3] - tem*qco[i][2];
+    }
+    
+    if (ABS(qco[4][3]) < TINY*ssmax[3]) {
+      small = qco[4][3];
+      kflag = -4;    
+      return(kflag);
+    }
+    
+    rr = -qco[5][3]/qco[4][3];
+    
+    if (rr < TINY || rr > HUN) {
+      kflag = -5;   
+      return(kflag);
+    }
+    
+    for(k=1; k<=3; k++) {
+      qkr[k] = qc[5][k] + rr*(qc[4][k] + rr*rr*(qc[2][k] + rr*qc[1][k]));
+    }  
+    
+    sqmax = ZERO;
+    for(k=1; k<=3; k++) {
+      saqk = ABS(qkr[k])/ssmax[k];
+      if (saqk > sqmax) sqmax = saqk;
+    } 
+    
+    if (sqmax < sqtol) {
+      kflag = 2;
+      
+      /*  can compute charactistic root, drop to "given rr,etc"   */
+      
+    } else {
+
+      /* do Newton corrections to improve rr.  */
+      
+      for(it=1; it<=3; it++) {
+        for(k=1; k<=3; k++) {
+          qp = qc[4][k] + rr*rr*(THREE*qc[2][k] + rr*FOUR*qc[1][k]);
+          drr[k] = ZERO;
+          if (ABS(qp) > TINY*ssmax[k]) drr[k] = -qkr[k]/qp;
+          rrc[k] = rr + drr[k];
+        } 
+        
+        for(k=1; k<=3; k++) {
+          s = rrc[k];
+          sqmaxk = ZERO;
+          for(j=1; j<=3; j++) {
+            qjk[j][k] = qc[5][j] + s*(qc[4][j] + 
+                                      s*s*(qc[2][j] + s*qc[1][j]));
+            saqj = ABS(qjk[j][k])/ssmax[j];
+            if (saqj > sqmaxk) sqmaxk = saqj;
+          } 
+          sqmx[k] = sqmaxk;
+        } 
+
+        sqmin = sqmx[1]; kmin = 1;
+        for(k=2; k<=3; k++) {
+          if (sqmx[k] < sqmin) {
+            kmin = k;
+            sqmin = sqmx[k];
+          }
+        } 
+        rr = rrc[kmin];
+        
+        if (sqmin < sqtol) {
+          kflag = 3;
+          /*  can compute charactistic root   */
+          /*  break out of Newton correction loop and drop to "given rr,etc" */ 
+          break;
+        } else {
+          for(j=1; j<=3; j++) {
+            qkr[j] = qjk[j][kmin];
+          }
+        }     
+      }          /*  end of Newton correction loop  */ 
+      
+      if (sqmin > sqtol) {
+        kflag = -6;
+        return(kflag);
+      }
+    }     /*  end of if (sqmax < sqtol) else   */
+  }      /*  end of if(vmin < vrrtol*vrrtol) else, quartics to get rr. */
+  
+  /* given rr, find sigsq[k] and verify rr.  */
+  /* All positive kflag drop to this section  */
+  
+  for(k=1; k<=3; k++) {
+    rsa = ssdat[1][k];
+    rsb = ssdat[2][k]*rr;
+    rsc = ssdat[3][k]*rr*rr;
+    rsd = ssdat[4][k]*rr*rr*rr;
+    rse = ssdat[5][k]*rr*rr*rr*rr;
+    rd1a = rsa - rsb;
+    rd1b = rsb - rsc;
+    rd1c = rsc - rsd;
+    rd1d = rsd - rse;
+    rd2a = rd1a - rd1b;
+    rd2b = rd1b - rd1c;
+    rd2c = rd1c - rd1d;
+    rd3a = rd2a - rd2b;
+    rd3b = rd2b - rd2c;
+    
+    if (ABS(rd1b) < TINY*smax[k]) {
+      kflag = -7;
+      return(kflag);
+    }
+    
+    cest1 = -rd3a/rd1b;
+    if (cest1 < TINY || cest1 > FOUR) {
+      kflag = -7;
+      return(kflag);
+    }
+    corr1 = (rd2b/cest1)/(rr*rr);
+    sigsq[k] = ssdat[3][k] + corr1;
+  }
+  
+  if (sigsq[2] < TINY) {
+    kflag = -8;
+    return(kflag);
+  }
+  
+  ratp = sigsq[3]/sigsq[2];
+  ratm = sigsq[1]/sigsq[2];
+  qfac1 = FOURTH*(q*q - ONE);
+  qfac2 = TWO/(q - ONE);
+  bb = ratp*ratm - ONE - qfac1*ratp;
+  tem = ONE - qfac2*bb;
+  
+  if (ABS(tem) < TINY) {
+    kflag = -8;
+    return(kflag);
+  }
+  
+  rrb = ONE/tem;
+  
+  if (ABS(rrb - rr) > rrtol) {
+    kflag = -9;
+    return(kflag);
+  }
+  
+  /* Check to see if rr is above cutoff rrcut  */
+  if (rr > rrcut) {
+    if (kflag == 1) kflag = 4;
+    if (kflag == 2) kflag = 5;
+    if (kflag == 3) kflag = 6;
+  }
+  
+  /* All positive kflag returned at this point  */
+  
+  return(kflag);
+  
+}
+
+/********************* CVRcheck1 ***********************************
+ 
+ This routine completes the initialization of rootfinding memory
+ information, and checks whether g has a zero both at and very near
+ the initial point of the IVP.
+
+ This routine returns an int equal to:
+   INITROOT = -1 if a close pair of zeros was found, and
+   CV_SUCCESS     =  0 otherwise.
+
+********************************************************************/
+
+static int CVRcheck1(CVodeMem cv_mem)
+{
+  int i;
+  realtype smallh, hratio;
+  booleantype zroot;
+
+  for (i = 0; i < nrtfn; i++) iroots[i] = 0;
+  tlo = tn;
+  ttol = (ABS(tn) + ABS(h))*uround*HUN;
+
+  /* Evaluate g at initial t and check for zero values. */
+  gfun (tlo, zn[0], glo, g_data);
+  nge = 1;
+  zroot = FALSE;
+  for (i = 0; i < nrtfn; i++) {
+    if (ABS(glo[i]) == ZERO) zroot = TRUE;
+  }
+  if (!zroot) return(CV_SUCCESS);
+
+  /* Some g_i is zero at t0; look at g at t0+(small increment). */
+  smallh = (h > ZERO) ? ttol : -ttol;
+  tlo += smallh;
+  hratio = smallh/h;
+  N_VLinearSum(ONE, zn[0], hratio, zn[1], y);
+  gfun (tlo, y, glo, g_data);  nge++;
+  zroot = FALSE;
+  for (i = 0; i < nrtfn; i++) {
+    if (ABS(glo[i]) == ZERO) {
+      zroot = TRUE;
+      iroots[i] = 1;
+    }
+  }
+  if (zroot) return(INITROOT);
+  return(CV_SUCCESS);
+
+}
+
+/********************* CVRcheck2 ***********************************
+ 
+ This routine checks for exact zeros of g at the last root found,
+ if the last return was a root.  It then checks for a close
+ pair of zeros (an error condition), and for a new root at a
+ nearby point.  The left endpoint (tlo) of the search interval
+ is adjusted if necessary to assure that all g_i are nonzero
+ there, before returning to do a root search in the interval.
+
+ On entry, tlo = tretlast is the last value of tret returned by
+ CVode.  This may be the previous tn, the previous tout value, or
+ the last root location.
+
+ This routine returns an int equal to:
+      CLOSERT = -2 if a close pair of zeros was found,
+      RTFOUND =  1 if a new zero of g was found near tlo, or
+      CV_SUCCESS    =  0 otherwise.
+
+********************************************************************/
+
+static int CVRcheck2(CVodeMem cv_mem)
+{
+  int i;
+  realtype smallh, hratio;
+  booleantype zroot;
+
+  if (irfnd == 0) return(CV_SUCCESS);
+
+  (void) CVodeGetDky(cv_mem, tlo, 0, y);
+  gfun (tlo, y, glo, g_data);  nge++;
+  zroot = FALSE;
+  for (i = 0; i < nrtfn; i++) iroots[i] = 0;
+  for (i = 0; i < nrtfn; i++) {
+    if (ABS(glo[i]) == ZERO) {
+      zroot = TRUE;
+      iroots[i] = 1;
+    }
+  }
+  if (!zroot) return(CV_SUCCESS);
+
+  /* One or more g_i has a zero at tlo.  Check g at tlo+smallh. */
+  ttol = (ABS(tn) + ABS(h))*uround*HUN;
+  smallh = (h > ZERO) ? ttol : -ttol;
+  tlo += smallh;
+  if ( (tlo - tn)*h >= ZERO) {
+    hratio = smallh/h;
+    N_VLinearSum(ONE, y, hratio, zn[1], y);
+  } else {
+    (void) CVodeGetDky(cv_mem, tlo, 0, y);
+  }
+  gfun (tlo, y, glo, g_data);  nge++;
+  zroot = FALSE;
+  for (i = 0; i < nrtfn; i++) {
+    if (ABS(glo[i]) == ZERO) {
+      if (iroots[i] == 1) return(CLOSERT);
+      zroot = TRUE;
+      iroots[i] = 1;
+    }
+  }
+  if (zroot) return(RTFOUND);
+  return(CV_SUCCESS);
+
+}
+
+/********************* CVRcheck3 ***********************************
+ 
+ This routine interfaces to CVRootfind to look for a root of g
+ between tlo and either tn or tout, whichever comes first.
+ Only roots beyond tlo in the direction of integration are sought.
+
+ This routine returns an int equal to:
+      RTFOUND =  1 if a root of g was found, or
+      CV_SUCCESS    =  0 otherwise.
+
+********************************************************************/
+
+static int CVRcheck3(CVodeMem cv_mem)
+{
+  int i, ier;
+
+  /* Set thi = tn or tout, whichever comes first; set y = y(thi). */
+  if (taskc == CV_ONE_STEP) {
+    thi = tn;
+    N_VScale(ONE, zn[0], y);
+  }
+  if (taskc == CV_NORMAL) {
+    if ( (toutc - tn)*h >= ZERO) {
+      thi = tn; 
+      N_VScale(ONE, zn[0], y);
+    } else {
+      thi = toutc;
+      (void) CVodeGetDky(cv_mem, thi, 0, y);
+    }
+  }
+
+  /* Set ghi = g(thi) and call CVRootfind to search (tlo,thi) for roots. */
+  gfun (thi, y, ghi, g_data);  nge++;
+  ttol = (ABS(tn) + ABS(h))*uround*HUN;
+  ier = CVRootfind(cv_mem);
+  tlo = troot;
+  for (i = 0; i < nrtfn; i++) glo[i] = groot[i];
+
+  /* If no root found, return CV_SUCCESS. */  
+  if (ier == CV_SUCCESS) return(CV_SUCCESS);
+
+  /* If a root was found, interpolate to get y(troot) and return.  */
+  (void) CVodeGetDky(cv_mem, troot, 0, y);
+  return(RTFOUND);
+
+}
+
+/********************* CVRootfind **********************************
+ 
+ This routine solves for a root of g(t) between tlo and thi, if
+ one exists.  Only roots of odd multiplicity (i.e. with a change
+ of sign in one of the g_i), or exact zeros, are found.
+ Here the sign of tlo - thi is arbitrary, but if multiple roots
+ are found, the one closest to tlo is returned.
+ 
+ The method used is the Illinois algorithm, a modified secant method.
+ Reference: Kathie L. Hiebert and Lawrence F. Shampine, Implicitly
+ Defined Output Points for Solutions of ODEs, Sandia National
+ Laboratory Report SAND80-0180, February 1980.
+
+ This routine uses the following parameters for communication:
+
+ nrtfn    = number of functions g_i, or number of components of
+            the vector-valued function g(t).  Input only.
+
+ gfun     = user-defined function for g(t).  Its form is
+            (void) gfun(t, y, gt, g_data)
+
+ nge      = cumulative counter for gfun calls.
+
+ ttol     = a convergence tolerance for troot.  Input only.
+            When a root at troot is found, it is located only to
+            within a tolerance of ttol.  Typically, ttol should
+            be set to a value on the order of
+               100 * UROUND * max (ABS(tlo), ABS(thi))
+            where UROUND is the unit roundoff of the machine.
+
+ tlo, thi = endpoints of the interval in which roots are sought.
+            On input, and must be distinct, but tlo - thi may
+            be of either sign.  The direction of integration is
+            assumed to be from tlo to thi.  On return, tlo and thi
+            are the endpoints of the final relevant interval.
+
+ glo, ghi = arrays of length nrtfn containing the vectors g(tlo)
+            and g(thi) respectively.  Input and output.  On input,
+            none of the glo[i] should be zero.
+
+ troot    = root location, if a root was found, or thi if not.
+            Output only.  If a root was found other than an exact
+            zero of g, troot is the endpoint thi of the final
+            interval bracketing the root, with size at most ttol.
+
+ groot    = array of length nrtfn containing g(troot) on return.
+
+ iroots   = int array of length nrtfn with root information.
+            Output only.  If a root was found, iroots indicates
+            which components g_i have a root at troot.  For
+            i = 0, ..., nrtfn-1, iroots[i] = 1 if g_i has a root
+            and iroots[i] = 0 otherwise.
+
+ This routine returns an int equal to:
+      RTFOUND = 1 if a root of g was found, or
+      CV_SUCCESS = 0 otherwise.
+
+********************************************************************/
+
+static int CVRootfind(CVodeMem cv_mem)
+{
+  realtype alpha, tmid, gfrac, maxfrac, fracint, fracsub;
+  int i, imax, side, sideprev;
+  booleantype zroot, sgnchg;
+
+  imax = 0;
+
+  /* First check for change in sign in ghi or for a zero in ghi. */
+  maxfrac = ZERO;
+  zroot = FALSE;
+  sgnchg = FALSE;
+  for (i = 0;  i < nrtfn; i++) {
+    if (ABS(ghi[i]) == ZERO) {
+      zroot = TRUE;
+    } else {
+      if (glo[i]*ghi[i] < ZERO) {
+        gfrac = ABS(ghi[i]/(ghi[i] - glo[i]));
+        if (gfrac > maxfrac) {
+          sgnchg = TRUE;
+          maxfrac = gfrac;
+          imax = i;
+        }
+      }
+    }
+  }
+
+  /* If no sign change was found, reset troot and groot.  Then return
+     CV_SUCCESS if no zero was found, or set iroots and return RTFOUND.  */ 
+  if (!sgnchg) {
+    troot = thi;
+    for (i = 0; i < nrtfn; i++) groot[i] = ghi[i];
+    if (!zroot) return(CV_SUCCESS);
+    for (i = 0; i < nrtfn; i++) {
+      iroots[i] = 0;
+      if (ABS(ghi[i]) == ZERO) iroots[i] = 1;
+    }
+    return(RTFOUND);
+  }
+
+  /* A sign change was found.  Loop to locate nearest root. */
+
+  side = 0;  sideprev = -1;
+  loop {                                    /* Looping point */
+
+    /* Set weight alpha.
+       On the first two passes, set alpha = 1.  Thereafter, reset alpha
+       according to the side (low vs high) of the subinterval in which
+       the sign change was found in the previous two passes.
+       If the sides were opposite, set alpha = 1.
+       If the sides were the same, then double alpha (if high side),
+       or halve alpha (if low side).
+       The next guess tmid is the secant method value if alpha = 1, but
+       is closer to tlo if alpha < 1, and closer to thi if alpha > 1.    */
+
+    if (sideprev == side) {
+      alpha = (side == 2) ? alpha*TWO : alpha*HALF;
+    } else {
+      alpha = ONE;
+    }
+
+    /* Set next root approximation tmid and get g(tmid).
+       If tmid is too close to tlo or thi, adjust it inward,
+       by a fractional distance that is between 0.1 and 0.5.  */
+    tmid = thi - (thi - tlo)*ghi[imax]/(ghi[imax] - alpha*glo[imax]);
+    if (ABS(tmid - tlo) < HALF*ttol) {
+      fracint = ABS(thi - tlo)/ttol;
+      fracsub = (fracint > FIVE) ? TENTH : HALF/fracint;
+      tmid = tlo + fracsub*(thi - tlo);
+    }
+    if (ABS(thi - tmid) < HALF*ttol) {
+      fracint = ABS(thi - tlo)/ttol;
+      fracsub = (fracint > FIVE) ? TENTH : HALF/fracint;
+      tmid = thi - fracsub*(thi - tlo);
+    }
+
+    (void) CVodeGetDky(cv_mem, tmid, 0, y);
+    gfun (tmid, y, groot, g_data);  nge++;
+
+    /* Check to see in which subinterval g changes sign, and reset imax.
+       Set side = 1 if sign change is on low side, or 2 if on high side.  */  
+    maxfrac = ZERO;
+    zroot = FALSE;
+    sgnchg = FALSE;
+    sideprev = side;
+    for (i = 0;  i < nrtfn; i++) {
+      if (ABS(groot[i]) == ZERO) {
+        zroot = TRUE;
+      } else {
+        if (glo[i]*groot[i] < ZERO) {
+          gfrac = ABS(groot[i]/(groot[i] - glo[i]));
+          if (gfrac > maxfrac) {
+            sgnchg = TRUE;
+            maxfrac = gfrac;
+            imax = i;
+          }
+        }
+      }
+    }
+    if (sgnchg) {
+      /* Sign change found in (tlo,tmid); replace thi with tmid. */
+      thi = tmid;
+      for (i = 0; i < nrtfn; i++) ghi[i] = groot[i];
+      side = 1;
+      /* Stop at root thi if converged; otherwise loop. */
+      if (ABS(thi - tlo) <= ttol) break;
+    continue;  /* Return to looping point. */
+    }
+
+    if (zroot) {
+      /* No sign change in (tlo,tmid), but g = 0 at tmid; return root tmid. */
+      thi = tmid;
+      for (i = 0; i < nrtfn; i++) ghi[i] = groot[i];
+      break;
+    }
+
+    /* No sign change in (tlo,tmid), and no zero at tmid.
+       Sign change must be in (tmid,thi).  Replace tlo with tmid. */
+    tlo = tmid;
+    for (i = 0; i < nrtfn; i++) glo[i] = groot[i];
+    side = 2;
+    /* Stop at root thi if converged; otherwise loop back. */
+    if (ABS(thi - tlo) <= ttol) break;
+
+  } /* End of root-search loop */
+
+  /* Reset troot and groot, set iroots, and return RTFOUND. */
+  troot = thi;
+  for (i = 0; i < nrtfn; i++) {
+    groot[i] = ghi[i];
+    iroots[i] = 0;
+    if (ABS(ghi[i]) == ZERO) iroots[i] = 1;
+    if (glo[i]*ghi[i] < ZERO) iroots[i] = 1;
+  }
+  return(RTFOUND);
+}
+
+/*=================================================================*/
+/*      Internal EWT function                                      */
+/*=================================================================*/
+
+/*
+ * CVEwtSet
+ *
+ * This routine is responsible for setting the error weight vector ewt,
+ * according to tol_type, as follows:
+ *
+ * (1) ewt[i] = 1 / (reltol * ABS(ycur[i]) + *abstol), i=0,...,neq-1
+ *     if tol_type = CV_SS
+ * (2) ewt[i] = 1 / (reltol * ABS(ycur[i]) + abstol[i]), i=0,...,neq-1
+ *     if tol_type = CV_SV
+ *
+ * CVEwtSet returns 0 if ewt is successfully set as above to a
+ * positive vector and -1 otherwise. In the latter case, ewt is
+ * considered undefined.
+ *
+ * All the real work is done in the routines CVEwtSetSS, CVEwtSetSV.
+ */
+
+int CVEwtSet(N_Vector ycur, N_Vector weight, void *data)
+{
+  CVodeMem cv_mem;
+  int flag = 0;
+
+  /* data points to cv_mem here */
+
+  cv_mem = (CVodeMem) data;
+
+  switch(itol) {
+  case CV_SS: 
+    flag = CVEwtSetSS(ycur, weight, cv_mem);
+    break;
+  case CV_SV: 
+    flag = CVEwtSetSV(ycur, weight, cv_mem);
+    break;
+  }
+  
+  return(flag);
+}
+
+/*
+ * CVEwtSetSS
+ *
+ * This routine sets ewt as decribed above in the case tol_type = CV_SS.
+ * It tests for non-positive components before inverting. CVEwtSetSS
+ * returns 0 if ewt is successfully set to a positive vector
+ * and -1 otherwise. In the latter case, ewt is considered undefined.
+ */
+
+static int CVEwtSetSS(N_Vector ycur, N_Vector weight, CVodeMem cv_mem)
+{
+  N_VAbs(ycur, tempv);
+  N_VScale(reltol, tempv, tempv);
+  N_VAddConst(tempv, Sabstol, tempv);
+  if (N_VMin(tempv) <= ZERO) return(-1);
+  N_VInv(tempv, weight);
+  return(0);
+}
+
+/*
+ * CVEwtSetSV
+ *
+ * This routine sets ewt as decribed above in the case tol_type = CV_SV.
+ * It tests for non-positive components before inverting. CVEwtSetSV
+ * returns 0 if ewt is successfully set to a positive vector
+ * and -1 otherwise. In the latter case, ewt is considered undefined.
+ */
+
+static int CVEwtSetSV(N_Vector ycur, N_Vector weight, CVodeMem cv_mem)
+{
+  N_VAbs(ycur, tempv);
+  N_VLinearSum(reltol, tempv, ONE, Vabstol, tempv);
+  if (N_VMin(tempv) <= ZERO) return(-1);
+  N_VInv(tempv, weight);
+  return(0);
+}
+
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvode_impl.h b/Win32/WinCVODE/sundials/cvode/source/cvode_impl.h
new file mode 100644
index 0000000..709e88e
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvode_impl.h
@@ -0,0 +1,498 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh, Radu Serban
+ *                and Dan Shumaker @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the main CVODE integrator.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVODE_IMPL_H
+#define _CVODE_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "cvode.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/* Prototype of internal ewtSet function */
+
+int CVEwtSet(N_Vector ycur, N_Vector weight, void *e_data);
+
+
+/*
+ * =================================================================
+ *   M A I N    I N T E G R A T O R    M E M O R Y    B L O C K
+ * =================================================================
+ */
+
+/* Basic CVODE constants */
+
+#define ADAMS_Q_MAX 12     /* max value of q for lmm == ADAMS     */
+#define BDF_Q_MAX    5     /* max value of q for lmm == BDF       */
+#define Q_MAX  ADAMS_Q_MAX /* max value of q for either lmm       */
+#define L_MAX  (Q_MAX+1)   /* max value of L for either lmm       */
+#define NUM_TESTS    5     /* number of error test quantities     */
+
+#define HMIN_DEFAULT     RCONST(0.0)    /* hmin default value     */
+#define HMAX_INV_DEFAULT RCONST(0.0)    /* hmax_inv default value */
+#define MXHNIL_DEFAULT   10             /* mxhnil default value   */
+#define MXSTEP_DEFAULT   500            /* mxstep default value   */
+
+/*
+ * -----------------------------------------------------------------
+ * Types : struct CVodeMemRec, CVodeMem
+ * -----------------------------------------------------------------
+ * The type CVodeMem is type pointer to struct CVodeMemRec.
+ * This structure contains fields to keep track of problem state.
+ * -----------------------------------------------------------------
+ */
+
+typedef struct CVodeMemRec {
+
+  realtype cv_uround;    /* machine unit roundoff */
+
+  /*-------------------------- 
+    Problem Specification Data 
+    --------------------------*/
+
+  CVRhsFn cv_f;        /* y' = f(t,y(t))                    */
+  void *cv_f_data;     /* user pointer passed to f          */
+  int cv_lmm;          /* lmm = CV_ADAMS or CV_BDF          */
+  int cv_iter;         /* iter = CV_FUNCTIONAL or CV_NEWTON */
+  int cv_itol;         /* itol = CV_SS or CV_SV             */
+
+  realtype cv_reltol;  /* relative tolerance                */
+  realtype cv_Sabstol; /* scalar absolute tolerance         */
+  N_Vector cv_Vabstol; /* vector absolute tolerance         */
+  CVEwtFn cv_efun;     /* function to set ewt               */
+  void *cv_e_data;     /* user pointer passed to efun       */
+
+  /*-----------------------
+    Nordsieck History Array 
+    -----------------------*/
+
+  N_Vector cv_zn[L_MAX];  /* Nordsieck array, of size N x (q+1).         */
+                          /* zn[j] is a vector of length N (j=0,...,q)   */
+                          /* zn[j] = [1/factorial(j)] * h^j * (jth       */ 
+                          /* derivative of the interpolating polynomial  */
+
+  /*--------------------------
+    other vectors of length N 
+    -------------------------*/
+
+  N_Vector cv_ewt;     /* error weight vector                          */
+  N_Vector cv_y;       /* y is used as temporary storage by the solver */
+                       /* The memory is provided by the user to CVode  */
+                       /* where the vector is named yout.              */
+  N_Vector cv_acor;    /* In the context of the solution of the        */
+                       /* nonlinear equation, acor = y_n(m) - y_n(0).  */
+                       /* On return, this vector is scaled to give     */
+                       /* the estimated local error in y.              */
+  N_Vector cv_tempv;   /* temporary storage vector                     */
+  N_Vector cv_ftemp;   /* temporary storage vector                     */
+
+  /*-----------------
+    Tstop information
+    -----------------*/
+  booleantype cv_tstopset;
+  realtype cv_tstop;
+
+  /*---------
+    Step Data 
+    ---------*/  
+
+  int cv_q;         /* current order                           */
+  int cv_qprime;    /* order to be used on the next step       */ 
+                    /* = q-1, q, or q+1                        */
+  int cv_next_q;    /* order to be used on the next step       */
+  int cv_qwait;     /* number of internal steps to wait before */
+                    /* considering a change in q               */
+  int cv_L;         /* L = q + 1                               */
+
+  realtype cv_hin;
+  realtype cv_h;      /* current step size                     */
+  realtype cv_hprime; /* step size to be used on the next step */ 
+  realtype cv_next_h; /* step size to be used on the next step */ 
+  realtype cv_eta;    /* eta = hprime / h                      */
+  realtype cv_hscale; /* value of h used in zn                 */
+  realtype cv_tn;     /* current internal value of t           */
+
+  realtype cv_tau[L_MAX+1];    /* array of previous q+1 successful step     */
+                               /* sizes indexed from 1 to q+1               */
+  realtype cv_tq[NUM_TESTS+1]; /* array of test quantities indexed from     */
+                               /* 1 to NUM_TESTS(=5)                        */
+  realtype cv_l[L_MAX];        /* coefficients of l(x) (degree q poly)      */
+
+  realtype cv_rl1;     /* 1 / l[1]                     */
+  realtype cv_gamma;   /* gamma = h * rl1              */
+  realtype cv_gammap;  /* gamma at the last setup call */
+  realtype cv_gamrat;  /* gamma / gammap               */
+
+  realtype cv_crate;   /* estimated corrector convergence rate     */
+  realtype cv_acnrm;   /* | acor | wrms                            */
+  realtype cv_nlscoef; /* coeficient in nonlinear convergence test */
+  int  cv_mnewt;       /* Newton iteration counter                 */
+
+  /*------
+    Limits 
+    ------*/
+
+  int cv_qmax;        /* q <= qmax                                          */
+  long int cv_mxstep; /* maximum number of internal steps for one user call */
+  int cv_maxcor;      /* maximum number of corrector iterations for the     */
+                      /* solution of the nonlinear equation                 */
+  int cv_mxhnil;      /* maximum number of warning messages issued to the   */
+                      /* user that t + h == t for the next internal step    */
+  int cv_maxnef;      /* maximum number of error test failures              */
+  int cv_maxncf;      /* maximum number of nonlinear convergence failures   */
+
+  realtype cv_hmin;     /* |h| >= hmin       */
+  realtype cv_hmax_inv; /* |h| <= 1/hmax_inv */
+  realtype cv_etamax;   /* eta <= etamax     */
+
+  /*--------
+    Counters 
+    --------*/
+
+  long int cv_nst;              /* number of internal steps taken             */
+  long int cv_nfe;              /* number of f calls                          */
+  long int cv_ncfn;             /* number of corrector convergence failures   */
+  long int cv_netf;             /* number of error test failures              */
+  long int cv_nni;              /* number of Newton iterations performed      */
+  long int cv_nsetups;          /* number of setup calls                      */
+  int cv_nhnil;                 /* number of messages issued to the user that */
+                                /* t + h == t for the next iternal step       */
+
+  realtype cv_etaqm1;      /* ratio of new to old h for order q-1        */
+  realtype cv_etaq;        /* ratio of new to old h for order q          */
+  realtype cv_etaqp1;      /* ratio of new to old h for order q+1        */
+
+  /*----------------------------
+    Space requirements for CVODE 
+    ----------------------------*/
+
+  long int cv_lrw1;        /* no. of realtype words in 1 N_Vector         */ 
+  long int cv_liw1;        /* no. of integer words in 1 N_Vector          */ 
+  long int cv_lrw;         /* no. of realtype words in CVODE work vectors */
+  long int cv_liw;         /* no. of integer words in CVODE work vectors  */
+
+  /*------------------
+    Linear Solver Data 
+    ------------------*/
+
+  /* Linear Solver functions to be called */
+
+  int (*cv_linit)(struct CVodeMemRec *cv_mem);
+
+  int (*cv_lsetup)(struct CVodeMemRec *cv_mem, int convfail, N_Vector ypred,
+                   N_Vector fpred, booleantype *jcurPtr, N_Vector vtemp1,
+                   N_Vector vtemp2, N_Vector vtemp3); 
+
+  int (*cv_lsolve)(struct CVodeMemRec *cv_mem, N_Vector b, N_Vector weight,
+                   N_Vector ycur, N_Vector fcur);
+
+  void (*cv_lfree)(struct CVodeMemRec *cv_mem);
+
+  /* Linear Solver specific memory */
+
+  void *cv_lmem;           
+
+  /*------------
+    Saved Values
+    ------------*/
+
+  int cv_qu;             /* last successful q value used   */
+  long int cv_nstlp;          /* step number of last setup call */
+  realtype cv_h0u;       /* actual initial stepsize        */
+  realtype cv_hu;        /* last successful h value used   */
+  realtype cv_saved_tq5; /* saved value of tq[5]           */
+  booleantype cv_jcur;   /* Is the Jacobian info used by   */
+                         /* linear solver current?         */
+  realtype cv_tolsf;     /* tolerance scale factor         */
+  booleantype cv_setupNonNull; /* Does setup do something? */
+
+  booleantype cv_VabstolMallocDone;
+  booleantype cv_MallocDone;  
+
+  /*----------
+    Error File 
+    ----------*/
+
+  FILE *cv_errfp;       /* CVODE error messages are sent to errfp */
+
+  /*-------------------------
+    Stability Limit Detection
+    -------------------------*/
+
+  booleantype cv_sldeton;     /* Is Stability Limit Detection on?          */
+  realtype cv_ssdat[6][4];    /* scaled data array for STALD               */
+  int cv_nscon;               /* counter for STALD method                  */
+  long int cv_nor;            /* counter for number of order reductions    */
+
+  /*----------------
+    Rootfinding Data
+    ----------------*/
+
+  CVRootFn cv_gfun;     /* Function g for roots sought                     */
+  int cv_nrtfn;         /* number of components of g                       */
+  void *cv_g_data;      /* pointer to user data for g                      */
+  int *cv_iroots;       /* int array for root information                  */
+  realtype cv_tlo;      /* nearest endpoint of interval in root search     */
+  realtype cv_thi;      /* farthest endpoint of interval in root search    */
+  realtype cv_troot;    /* approximate root location                       */
+  realtype *cv_glo;     /* saved array of g values at t = tlo              */
+  realtype *cv_ghi;     /* saved array of g values at t = thi              */
+  realtype *cv_groot;   /* array of g values at t = troot                  */
+  realtype cv_tretlast; /* last value of t returned                        */
+  realtype cv_toutc;    /* copy of tout (if NORMAL mode)                   */
+  realtype cv_ttol;     /* tolerance on root location troot                */
+  int cv_taskc;         /* copy of parameter task                          */
+  int cv_irfnd;         /* flag showing whether last step had a root       */
+  int cv_nge;           /* counter for g evaluations                       */
+
+} *CVodeMem;
+
+/*
+ * =================================================================
+ *   C V O D E    E R R O R    M E S S A G E S
+ * =================================================================
+ */
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+
+#define MSG_TIME      "t = %Lg"
+#define MSG_TIME_H    "t = %Lg and h = %Lg"
+#define MSG_TIME_INT  "t = %Lg is not between tcur - hu = %Lg and tcur = %Lg.\n\n"
+#define MSG_TIME_TOUT "tout = %Lg"
+
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+
+#define MSG_TIME      "t = %lg"
+#define MSG_TIME_H    "t = %lg and h = %lg"
+#define MSG_TIME_INT  "t = %lg is not between tcur - hu = %lg and tcur = %lg.\n\n"
+#define MSG_TIME_TOUT "tout = %lg"
+
+#else
+
+#define MSG_TIME      "t = %g"
+#define MSG_TIME_H    "t = %g and h = %g"
+#define MSG_TIME_INT  "t = %g is not between tcur - hu = %g and tcur = %g.\n\n"
+#define MSG_TIME_TOUT "tout = %g"
+
+#endif
+
+/* CvodeCreate Error Messages */
+
+#define _CVC_ "CVodeCreate-- "
+
+#define MSGCV_BAD_LMM1 _CVC_ "Illegal value for lmm.\n"
+#define MSGCV_BAD_LMM2 "The legal values are CV_ADAMS and CV_BDF.\n\n"
+#define MSGCV_BAD_LMM  MSGCV_BAD_LMM1 MSGCV_BAD_LMM2
+
+#define MSGCV_BAD_ITER1 _CVC_ "Illegal value for iter.\n"
+#define MSGCV_BAD_ITER2 "The legal values are CV_FUNCTIONAL "
+#define MSGCV_BAD_ITER3 "and CV_NEWTON.\n\n"
+#define MSGCV_BAD_ITER  MSGCV_BAD_ITER1 MSGCV_BAD_ITER2 MSGCV_BAD_ITER3
+
+#define MSGCV_CVMEM_FAIL _CVC_ "Allocation of cv_mem failed.\n\n"
+
+/* CVodeSet* Error Messages */
+
+#define MSGCV_SET_NO_MEM "cvode_mem = NULL in a CVodeSet routine illegal.\n\n"
+
+#define MSGCV_SET_BAD_ITER1 "CVodeSetIterType-- Illegal value for iter.\n"
+#define MSGCV_SET_BAD_ITER2 "The legal values are CV_FUNCTIONAL "
+#define MSGCV_SET_BAD_ITER3 "and CV_NEWTON.\n\n"
+#define MSGCV_SET_BAD_ITER   MSGCV_SET_BAD_ITER1 MSGCV_SET_BAD_ITER2 MSGCV_SET_BAD_ITER3
+
+#define MSGCV_SET_NEG_MAXORD "CVodeSetMaxOrd-- maxord <= 0 illegal.\n\n"
+
+#define MSGCV_SET_BAD_MAXORD1 "CVodeSetMaxOrd-- Illegal attempt to increase "
+#define MSGCV_SET_BAD_MAXORD2 "maximum method order.\n\n"
+#define MSGCV_SET_BAD_MAXORD  MSGCV_SET_BAD_MAXORD1 MSGCV_SET_BAD_MAXORD2 
+
+#define MSGCV_SET_NEG_MXSTEPS "CVodeSetMaxNumSteps-- mxsteps < 0 illegal.\n\n"
+
+#define MSGCV_SET_SLDET1 "CVodeSetStabLimDet-- Attempt to use stability "
+#define MSGCV_SET_SLDET2 "limit detection with the CV_ADAMS method illegal.\n\n"
+#define MSGCV_SET_SLDET  MSGCV_SET_SLDET1 MSGCV_SET_SLDET2
+
+#define MSGCV_SET_NEG_HMIN "CVodeSetMinStep-- hmin < 0 illegal.\n\n"
+
+#define MSGCV_SET_NEG_HMAX "CVodeSetMaxStep-- hmax < 0 illegal.\n\n"
+
+#define MSGCV_SET_BAD_HMM1      "CVodeSetMinStep/CVodeSetMaxStep-- Inconsistent \n"
+#define MSGCV_SET_BAD_HMM2      "step size limits: hmin > hmax.\n\n"
+#define MSGCV_SET_BAD_HMIN_HMAX MSGCV_SET_BAD_HMM1 MSGCV_SET_BAD_HMM2
+
+#define _CVSET_TOL_ "CVodeSetTolerances-- "
+
+#define MSGCV_SET_NO_MALLOC _CVSET_TOL_ "Attempt to call before CVodeMalloc.\n\n"
+
+#define MSGCV_SET_BAD_ITOL1 _CVSET_TOL_ "Illegal value for itol.\n"
+#define MSGCV_SET_BAD_ITOL2 "The legal values are CV_SS and CV_SV.\n\n"
+#define MSGCV_SET_BAD_ITOL  MSGCV_SET_BAD_ITOL1 MSGCV_SET_BAD_ITOL2
+
+#define MSGCV_SET_BAD_RELTOL _CVSET_TOL_ "reltol < 0 illegal.\n\n"
+
+#define MSGCV_SET_ABSTOL_NULL _CVSET_TOL_ "abstol = NULL illegal.\n\n"
+
+#define MSGCV_SET_BAD_ABSTOL _CVSET_TOL_ "abstol has negative component(s) (illegal).\n\n"
+
+/* CVodeMalloc/CVodeReInit Error Messages */
+
+#define _CVM_ "CVodeMalloc/CVodeReInit-- "
+
+#define MSGCV_CVM_NO_MEM _CVM_ "cvode_mem = NULL illegal.\n\n"
+
+#define MSGCV_Y0_NULL _CVM_ "y0 = NULL illegal.\n\n"
+
+#define MSGCV_BAD_ITOL1 _CVM_ "Illegal value for itol.\n"
+#define MSGCV_BAD_ITOL2 "The legal values are CV_SS, CV_SV, and CV_WF.\n\n"
+#define MSGCV_BAD_ITOL  MSGCV_BAD_ITOL1 MSGCV_BAD_ITOL2
+
+#define MSGCV_F_NULL _CVM_ "f = NULL illegal.\n\n"
+
+#define MSGCV_BAD_RELTOL _CVM_ "reltol < 0 illegal.\n\n"
+
+#define MSGCV_ABSTOL_NULL _CVM_ "abstol = NULL illegal.\n\n"
+
+#define MSGCV_BAD_ABSTOL _CVM_ "abstol has negative component(s) (illegal).\n\n"
+
+#define MSGCV_BAD_NVECTOR _CVM_ "A required vector operation is not implemented.\n\n"
+
+#define MSGCV_MEM_FAIL _CVM_ "A memory request failed.\n\n"
+
+#define MSGCV_CVREI_NO_MALLOC "CVodeReInit-- Attempt to call before CVodeMalloc.\n\n"
+
+/* CVodeRootInit Error Messages */
+
+#define _CVRT_ "CVodeRootInit-- "
+
+#define MSGCV_ROOT_NO_MEM _CVRT_ "cvode_mem = NULL illegal.\n\n"
+
+#define MSGCV_ROOT_MEM_FAIL _CVRT_ "A memory request failed.\n\n"
+
+#define MSGCV_ROOT_FUNC_NULL _CVRT_ "g = NULL illegal.\n\n"
+
+/* CVode Error Messages */
+
+#define _CVODE_ "CVode-- "
+#define _CVIS_  "Initial Setup: "
+#define _NO_MEM_ "cvode_mem = NULL illegal.\n\n"
+
+#define MSGCV_CVODE_NO_MEM _CVODE_ _NO_MEM_
+
+#define MSGCV_CVODE_NO_MALLOC _CVODE_ "CVodeMalloc has not been called yet.\n\n"
+ 
+#define MSGCV_NO_EFUN _CVODE_ _CVIS_ "itol = CV_WF but no EwtSet function was provided.\n\n"
+
+#define MSGCV_FAIL_EWT _CVODE_ _CVIS_ "The user-provide EwtSet function failed.\n\n"
+
+#define MSGCV_BAD_EWT _CVODE_ _CVIS_ "Initial ewt has component(s) equal to zero (illegal).\n\n"
+
+#define MSGCV_LSOLVE_NULL _CVODE_ _CVIS_ "The linear solver's solve routine is NULL.\n\n"
+
+#define MSGCV_LINIT_FAIL _CVODE_ _CVIS_ "The linear solver's init routine failed.\n\n"
+
+#define MSGCV_YOUT_NULL _CVODE_ "yout = NULL illegal.\n\n"
+
+#define MSGCV_TRET_NULL _CVODE_ "tret = NULL illegal.\n\n"
+
+#define MSGCV_BAD_ITASK _CVODE_ "Illegal value for itask.\n"
+
+#define MSGCV_NO_TSTOP1 _CVODE_ "itask = CV_NORMAL_TSTOP or itask = CV_ONE_STEP_TSTOP "
+#define MSGCV_NO_TSTOP2 _CVODE_ "but tstop was not set.\n\n"
+#define MSGCV_NO_TSTOP  MSGCV_NO_TSTOP1 MSGCV_NO_TSTOP2
+
+#define MSGCV_BAD_H0 _CVODE_ "h0 and tout - t0 inconsistent.\n\n"
+
+#define MSGCV_HNIL_DONE_1 _CVODE_ "The above warning has been issued mxhnil times "
+#define MSGCV_HNIL_DONE_2 "and will not be\nissued again for this problem.\n\n"
+#define MSGCV_HNIL_DONE   MSGCV_HNIL_DONE_1 MSGCV_HNIL_DONE_2
+
+#define MSGCV_TOO_CLOSE _CVODE_ "tout too close to t0 to start integration.\n\n"
+
+#define MSGCV_BAD_INIT_ROOT _CVODE_ "Root found at and very near initial t.\n\n"
+
+#define MSGCV_BAD_TOUT_1 _CVODE_ "Trouble interpolating at " MSG_TIME_TOUT ".\n"
+#define MSGCV_BAD_TOUT_2 "tout too far back in direction of integration.\n\n"
+#define MSGCV_BAD_TOUT   MSGCV_BAD_TOUT_1 MSGCV_BAD_TOUT_2
+
+#define MSGCV_MAX_STEPS _CVODE_ "At " MSG_TIME ", mxstep steps taken before reaching tout.\n\n"
+
+#define MSGCV_EWT_NOW_FAIL _CVODE_ "At " MSG_TIME ", the user-provide EwtSet function failed.\n\n"
+
+#define MSGCV_EWT_NOW_BAD _CVODE_ "At " MSG_TIME ", a component of ewt has become <= 0.\n\n"
+
+#define MSGCV_TOO_MUCH_ACC _CVODE_ "At " MSG_TIME ", too much accuracy requested.\n\n"
+
+#define MSGCV_HNIL_1 _CVODE_ "Warning: Internal " MSG_TIME_H "\n"
+#define MSGCV_HNIL_2 "are such that t + h = t on the next step.\n"
+#define MSGCV_HNIL_3 "The solver will continue anyway.\n\n"
+#define MSGCV_HNIL   MSGCV_HNIL_1 MSGCV_HNIL_2 MSGCV_HNIL_3
+
+#define MSGCV_ERR_FAILS_1 _CVODE_ "At " MSG_TIME_H ", the error test\n"
+#define MSGCV_ERR_FAILS_2 "failed repeatedly or with |h| = hmin.\n\n"
+#define MSGCV_ERR_FAILS   MSGCV_ERR_FAILS_1 MSGCV_ERR_FAILS_2
+
+#define MSGCV_CONV_FAILS_1 _CVODE_ "At " MSG_TIME_H ", the corrector\n"
+#define MSGCV_CONV_FAILS_2 "convergence failed repeatedly or "
+#define MSGCV_CONV_FAILS_3 "with |h| = hmin.\n\n"
+#define MSGCV_CONV_FAILS   MSGCV_CONV_FAILS_1 MSGCV_CONV_FAILS_2 MSGCV_CONV_FAILS_3
+
+#define MSGCV_SETUP_FAILED_1 _CVODE_ "At " MSG_TIME ", the setup routine failed in an "
+#define MSGCV_SETUP_FAILED_2 "unrecoverable manner.\n\n"
+#define MSGCV_SETUP_FAILED   MSGCV_SETUP_FAILED_1 MSGCV_SETUP_FAILED_2
+
+#define MSGCV_SOLVE_FAILED_1 _CVODE_ "At " MSG_TIME ", the solve routine failed in an "
+#define MSGCV_SOLVE_FAILED_2 "unrecoverable manner.\n\n"
+#define MSGCV_SOLVE_FAILED   MSGCV_SOLVE_FAILED_1 MSGCV_SOLVE_FAILED_2
+
+#define MSGCV_CLOSE_ROOTS _CVODE_ "Root found at and very near " MSG_TIME ".\n\n"
+
+#define MSGCV_BAD_TSTOP_1 _CVODE_ "tstop is behind current " MSG_TIME
+#define MSGCV_BAD_TSTOP_2 "\nin the direction of integration.\n\n"
+#define MSGCV_BAD_TSTOP   MSGCV_BAD_TSTOP_1 MSGCV_BAD_TSTOP_2
+
+/* CVodeGetDky Error Messages */
+
+#define _DKY_ "CVodeGetDky-- "
+
+#define MSGCV_DKY_NO_MEM _DKY_ _NO_MEM_
+
+#define MSGCV_BAD_K _DKY_ "Illegal value for k.\n\n"
+
+#define MSGCV_BAD_DKY _DKY_ "dky = NULL illegal.\n\n"
+
+#define MSGCV_BAD_T1 _DKY_ "Illegal value for t.\n"
+#define MSGCV_BAD_T2 MSG_TIME_INT
+#define MSGCV_BAD_T  MSGCV_BAD_T1 MSGCV_BAD_T2
+
+/* CVodeGet* Error Messages */
+
+#define MSGCV_GET_NO_MEM "cvode_mem = NULL in a CVodeGet routine illegal.\n\n"
+
+#define MSGCV_GET_NO_SLDET1 "CVodeGetNumStabLimOrderReds-- Illegal attempt "
+#define MSGCV_GET_NO_SLDET2 "to call without enabling SLDET.\n\n"
+#define MSGCV_GET_NO_SLDET  MSGCV_GET_NO_SLDET1 MSGCV_GET_NO_SLDET2
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvodeio.c b/Win32/WinCVODE/sundials/cvode/source/cvodeio.c
new file mode 100644
index 0000000..17f92fc
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvodeio.c
@@ -0,0 +1,1078 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the optional input and output
+ * functions for the CVODE solver.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvode_impl.h"
+#include "sundialstypes.h"
+#include "WinCVODE.h"
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+
+#define lrw (cv_mem->cv_lrw)
+#define liw (cv_mem->cv_liw)
+#define lrw1 (cv_mem->cv_lrw1)
+#define liw1 (cv_mem->cv_liw1)
+
+/* 
+ * =================================================================
+ * CVODE optional input functions
+ * =================================================================
+ */
+
+/* 
+ * CVodeSetErrFile
+ *
+ * Specifies the FILE pointer for output (NULL means no messages)
+ */
+
+int CVodeSetErrFile(void *cvode_mem, FILE *errfp)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_errfp = errfp;
+
+  return(CV_SUCCESS);
+}
+
+#define errfp (cv_mem->cv_errfp)
+
+/* 
+ * CVodeSetIterType
+ *
+ * Specifies the iteration type (CV_FUNCTIONAL or CV_NEWTON)
+ */
+
+int CVodeSetIterType(void *cvode_mem, int iter)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if ((iter != CV_FUNCTIONAL) && (iter != CV_NEWTON)) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_SET_BAD_ITER);
+    return (CV_ILL_INPUT);
+  }
+
+  cv_mem->cv_iter = iter;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetFdata
+ *
+ * Specifies the user data pointer for f
+ */
+
+WINCVODE_API int CVodeSetFdata(void *cvode_mem, void *f_data)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_f_data = f_data;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMaxOrd
+ *
+ * Specifies the maximum method order
+ */
+
+int CVodeSetMaxOrd(void *cvode_mem, int maxord)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (maxord <= 0) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_SET_NEG_MAXORD);
+    return(CV_ILL_INPUT);
+  }
+  
+  if (maxord > cv_mem->cv_qmax) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_SET_BAD_MAXORD);
+    return(CV_ILL_INPUT);
+  }
+
+  cv_mem->cv_qmax = maxord;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMaxNumSteps
+ *
+ * Specifies the maximum number of integration steps
+ */
+
+WINCVODE_API int CVodeSetMaxNumSteps(void *cvode_mem, long int mxsteps)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (mxsteps < 0) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_SET_NEG_MXSTEPS);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Passing 0 sets the default */
+  if (mxsteps == 0)
+    cv_mem->cv_mxstep = MXSTEP_DEFAULT;
+  else
+    cv_mem->cv_mxstep = mxsteps;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMaxHnilWarns
+ *
+ * Specifies the maximum number of warnings for small h
+ */
+
+int CVodeSetMaxHnilWarns(void *cvode_mem, int mxhnil)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_mxhnil = mxhnil;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ *CVodeSetStabLimDet
+ *
+ * Turns on/off the stability limit detection algorithm
+ */
+
+int CVodeSetStabLimDet(void *cvode_mem, booleantype sldet)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if(cv_mem->cv_lmm != CV_BDF) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_SET_SLDET);
+    return(CV_ILL_INPUT);
+  }
+
+  cv_mem->cv_sldeton = sldet;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetInitStep
+ *
+ * Specifies the initial step size
+ */
+
+int CVodeSetInitStep(void *cvode_mem, realtype hin)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_hin = hin;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMinStep
+ *
+ * Specifies the minimum step size
+ */
+
+int CVodeSetMinStep(void *cvode_mem, realtype hmin)
+{
+  realtype hmax;
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (hmin<0) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_SET_NEG_HMIN);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Passing 0 sets hmin = zero */
+  if (hmin == ZERO) {
+    cv_mem->cv_hmin = HMIN_DEFAULT;
+    return(CV_SUCCESS);
+  }
+
+  if (hmin * cv_mem->cv_hmax_inv > ONE) {
+    hmax = ONE/cv_mem->cv_hmax_inv;
+    if(errfp!=NULL) fprintf(errfp, MSGCV_SET_BAD_HMIN_HMAX);
+    return(CV_ILL_INPUT);
+  }
+
+  cv_mem->cv_hmin = hmin;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMaxStep
+ *
+ * Specifies the maximum step size
+ */
+
+int CVodeSetMaxStep(void *cvode_mem, realtype hmax)
+{
+  realtype hmax_inv;
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (hmax < 0) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_SET_NEG_HMAX);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Passing 0 sets hmax = infinity */
+  if (hmax == ZERO) {
+    cv_mem->cv_hmax_inv = HMAX_INV_DEFAULT;
+    return(CV_SUCCESS);
+  }
+
+  hmax_inv = ONE/hmax;
+  if (hmax_inv * cv_mem->cv_hmin > ONE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_SET_BAD_HMIN_HMAX);
+    return(CV_ILL_INPUT);
+  }
+
+  cv_mem->cv_hmax_inv = hmax_inv;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetStopTime
+ *
+ * Specifies the time beyond which the integration is not to
+ * proceed
+ */
+
+int CVodeSetStopTime(void *cvode_mem, realtype tstop)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_tstop = tstop;
+  cv_mem->cv_tstopset = TRUE;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMaxErrTestFails
+ *
+ * Specifies the maximum number of error test failures during one
+ * step try.
+ */
+
+int CVodeSetMaxErrTestFails(void *cvode_mem, int maxnef)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_maxnef = maxnef;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMaxConvFails
+ *
+ * Specifies the maximum number of nonlinear convergence failures 
+ * during one step try.
+ */
+
+int CVodeSetMaxConvFails(void *cvode_mem, int maxncf)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_maxncf = maxncf;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMaxNonlinIters
+ *
+ * Specifies the maximum number of nonlinear iterations during
+ * one solve.
+ */
+
+int CVodeSetMaxNonlinIters(void *cvode_mem, int maxcor)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_maxcor = maxcor;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetNonlinConvCoef
+ *
+ * Specifies the coeficient in the nonlinear solver convergence
+ * test
+ */
+
+int CVodeSetNonlinConvCoef(void *cvode_mem, realtype nlscoef)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_nlscoef = nlscoef;
+
+  return(CV_SUCCESS);
+}
+
+/*
+ * CVodeSetTolerances
+ *
+ * Changes the integration tolerances between calls to CVode()
+ */
+
+int CVodeSetTolerances(void *cvode_mem, 
+                       int itol, realtype reltol, void *abstol)
+{
+  CVodeMem cv_mem;
+  booleantype neg_abstol;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Check if cvode_mem was allocated */
+
+  if (cv_mem->cv_MallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_SET_NO_MALLOC);
+    return(CV_NO_MALLOC);
+  }
+
+  /* Check inputs */
+
+  if ( (itol != CV_SS) && (itol != CV_SV) ) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_SET_BAD_ITOL);
+    return(CV_ILL_INPUT);
+  }
+
+  if (abstol == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_SET_ABSTOL_NULL);
+    return(CV_ILL_INPUT);
+  }
+
+  if (reltol < ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_SET_BAD_RELTOL);
+    return(CV_ILL_INPUT);
+  }
+
+  if (itol == CV_SS)
+    neg_abstol = (*((realtype *)abstol) < ZERO);
+  else
+    neg_abstol = (N_VMin((N_Vector)abstol) < ZERO);
+    
+  if (neg_abstol) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_SET_BAD_ABSTOL);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Copy tolerances into memory */
+
+  if ( (itol != CV_SV) && (cv_mem->cv_VabstolMallocDone) ) {
+    N_VDestroy(cv_mem->cv_Vabstol);
+    lrw -= lrw1;
+    liw -= liw1;
+    cv_mem->cv_VabstolMallocDone = FALSE;
+  }
+
+  if ( (itol == CV_SV) && !(cv_mem->cv_VabstolMallocDone) ) {
+    cv_mem->cv_Vabstol = N_VClone(cv_mem->cv_ewt);
+    lrw += lrw1;
+    liw += liw1;
+    cv_mem->cv_VabstolMallocDone = TRUE;
+  }
+
+  cv_mem->cv_itol   = itol;
+  cv_mem->cv_reltol = reltol;
+  if (itol == CV_SS)
+    cv_mem->cv_Sabstol = *((realtype *)abstol);
+  else
+    N_VScale(ONE, (N_Vector)abstol, cv_mem->cv_Vabstol);
+
+  cv_mem->cv_efun = CVEwtSet;
+  cv_mem->cv_e_data = cvode_mem;
+
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetEwtFn
+ *
+ * Specifies the user-provide EwtSet function and data pointer for e
+ */
+
+int CVodeSetEwtFn(void *cvode_mem, CVEwtFn efun, void *e_data)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if ( cv_mem->cv_VabstolMallocDone ) {
+    N_VDestroy(cv_mem->cv_Vabstol);
+    lrw -= lrw1;
+    liw -= liw1;
+    cv_mem->cv_VabstolMallocDone = FALSE;
+  }
+
+  cv_mem->cv_itol = CV_WF;
+  cv_mem->cv_efun = efun;
+  cv_mem->cv_e_data = e_data;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * =================================================================
+ * Readability constants
+ * =================================================================
+ */
+
+#define nst            (cv_mem->cv_nst)
+#define nfe            (cv_mem->cv_nfe)
+#define ncfn           (cv_mem->cv_ncfn)
+#define netf           (cv_mem->cv_netf)
+#define nni            (cv_mem->cv_nni)
+#define nsetups        (cv_mem->cv_nsetups)
+#define qu             (cv_mem->cv_qu)
+#define next_q         (cv_mem->cv_next_q)
+#define ewt            (cv_mem->cv_ewt)  
+#define hu             (cv_mem->cv_hu)
+#define next_h         (cv_mem->cv_next_h)
+#define h0u            (cv_mem->cv_h0u)
+#define tolsf          (cv_mem->cv_tolsf)  
+#define acor           (cv_mem->cv_acor)
+#define lrw            (cv_mem->cv_lrw)
+#define liw            (cv_mem->cv_liw)
+#define nge            (cv_mem->cv_nge)
+#define iroots         (cv_mem->cv_iroots)
+#define nor            (cv_mem->cv_nor)
+#define sldeton        (cv_mem->cv_sldeton)
+#define tn             (cv_mem->cv_tn)
+
+/* 
+ * =================================================================
+ * CVODE optional output functions
+ * =================================================================
+ */
+
+/*
+ * CVodeGetNumSteps
+ *
+ * Returns the current number of integration steps
+ */
+
+WINCVODE_API int CVodeGetNumSteps(void *cvode_mem, long int *nsteps)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *nsteps = nst;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetNumRhsEvals
+ *
+ * Returns the current number of calls to f
+ */
+
+WINCVODE_API int CVodeGetNumRhsEvals(void *cvode_mem, long int *nfevals)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *nfevals = nfe;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetNumLinSolvSetups
+ *
+ * Returns the current number of calls to the linear solver setup routine
+ */
+
+WINCVODE_API int CVodeGetNumLinSolvSetups(void *cvode_mem, long int *nlinsetups)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *nlinsetups = nsetups;
+
+  return(CV_SUCCESS);
+}
+
+/*
+ * CVodeGetNumErrTestFails
+ *
+ * Returns the current number of error test failures
+ */
+
+WINCVODE_API int CVodeGetNumErrTestFails(void *cvode_mem, long int *netfails)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *netfails = netf;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetLastOrder
+ *
+ * Returns the order on the last succesful step
+ */
+
+int CVodeGetLastOrder(void *cvode_mem, int *qlast)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *qlast = qu;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetCurrentOrder
+ *
+ * Returns the order to be attempted on the next step
+ */
+
+int CVodeGetCurrentOrder(void *cvode_mem, int *qcur)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *qcur = next_q;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetNumStabLimOrderReds
+ *
+ * Returns the number of order reductions triggered by the stability
+ * limit detection algorithm
+ */
+
+int CVodeGetNumStabLimOrderReds(void *cvode_mem, long int *nslred)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (sldeton==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCV_GET_NO_SLDET);
+    return(CV_NO_SLDET);
+  }
+
+  *nslred = nor;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetActualInitStep
+ *
+ * Returns the step size used on the first step
+ */
+
+int CVodeGetActualInitStep(void *cvode_mem, realtype *hinused)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *hinused = h0u;
+
+  return(CV_SUCCESS);
+}
+
+/*
+ * CVodeGetLastStep
+ *
+ * Returns the step size used on the last successful step
+ */
+
+int CVodeGetLastStep(void *cvode_mem, realtype *hlast)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *hlast = hu;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetCurrentStep
+ *
+ * Returns the step size to be attempted on the next step
+ */
+
+int CVodeGetCurrentStep(void *cvode_mem, realtype *hcur)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+  
+  *hcur = next_h;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetCurrentTime
+ *
+ * Returns the current value of the independent variable
+ */
+
+int CVodeGetCurrentTime(void *cvode_mem, realtype *tcur)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *tcur = tn;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetTolScaleFactor
+ *
+ * Returns a suggested factor for scaling tolerances
+ */
+
+int CVodeGetTolScaleFactor(void *cvode_mem, realtype *tolsfact)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *tolsfact = tolsf;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetErrWeights
+ *
+ * This routine returns the current weight vector for y in weight.
+ * Note that weight need not be allocated by the user.
+ */
+
+int CVodeGetErrWeights(void *cvode_mem, N_Vector eweight)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  N_VScale(ONE, ewt, eweight);
+
+  return(CV_SUCCESS);
+}
+
+/*
+ * CVodeGetEstLocalErrors
+ *
+ * Returns an estimate of the local error
+ */
+
+int CVodeGetEstLocalErrors(void *cvode_mem, N_Vector ele)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  N_VScale(ONE, acor, ele);
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetWorkSpace
+ *
+ * Returns integrator work space requirements
+ */
+
+int CVodeGetWorkSpace(void *cvode_mem, long int *lenrw, long int *leniw)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *leniw = liw;
+  *lenrw = lrw;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetIntegratorStats
+ *
+ * Returns integrator statistics
+ */
+
+int CVodeGetIntegratorStats(void *cvode_mem, long int *nsteps, long int *nfevals, 
+                            long int *nlinsetups, long int *netfails, int *qlast, 
+                            int *qcur, realtype *hinused, realtype *hlast, 
+                            realtype *hcur, realtype *tcur)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *nsteps = nst;
+  *nfevals = nfe;
+  *nlinsetups = nsetups;
+  *netfails = netf;
+  *qlast = qu;
+  *qcur = next_q;
+  *hinused = h0u;
+  *hlast = hu;
+  *hcur = next_h;
+  *tcur = tn;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetNumGEvals
+ *
+ * Returns the current number of calls to g (for rootfinding)
+ */
+
+int CVodeGetNumGEvals(void *cvode_mem, long int *ngevals)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *ngevals = nge;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetRootInfo
+ *
+ * Returns pointer to array rootsfound showing roots found
+ */
+
+int CVodeGetRootInfo(void *cvode_mem, int *rootsfound)
+{
+  CVodeMem cv_mem;
+  int i, nrt;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  nrt = cv_mem->cv_nrtfn;
+
+  for (i=0; i<nrt; i++) rootsfound[i] = iroots[i];
+
+  return(CV_SUCCESS);
+}
+
+
+/* 
+ * CVodeGetNumNonlinSolvIters
+ *
+ * Returns the current number of iterations in the nonlinear solver
+ */
+
+int CVodeGetNumNonlinSolvIters(void *cvode_mem, long int *nniters)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *nniters = nni;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetNumNonlinSolvConvFails
+ *
+ * Returns the current number of convergence failures in the
+ * nonlinear solver
+ */
+
+int CVodeGetNumNonlinSolvConvFails(void *cvode_mem, long int *nncfails)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *nncfails = ncfn;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetNonlinSolvStats
+ *
+ * Returns nonlinear solver statistics
+ */
+
+WINCVODE_API int CVodeGetNonlinSolvStats(void *cvode_mem, long int *nniters, 
+                            long int *nncfails)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCV_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *nniters = nni;
+  *nncfails = ncfn;
+
+  return(CV_SUCCESS);
+}
+
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvspgmr.c b/Win32/WinCVODE/sundials/cvode/source/cvspgmr.c
new file mode 100644
index 0000000..1f0c320
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvspgmr.c
@@ -0,0 +1,913 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the CVSPGMR linear solver.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvspgmr_impl.h"
+#include "cvode_impl.h"
+
+#include "sundialsmath.h"
+
+/* Other Constants */
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+
+/* CVSPGMR linit, lsetup, lsolve, and lfree routines */
+
+static int CVSpgmrInit(CVodeMem cv_mem);
+
+static int CVSpgmrSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                        N_Vector fpred, booleantype *jcurPtr, N_Vector vtemp1,
+                        N_Vector vtemp2, N_Vector vtemp3);
+
+static int CVSpgmrSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                        N_Vector ynow, N_Vector fnow);
+
+static void CVSpgmrFree(CVodeMem cv_mem);
+
+/* CVSPGMR Atimes and PSolve routines called by generic SPGMR solver */
+
+static int CVSpgmrAtimes(void *cv_mem, N_Vector v, N_Vector z);
+
+static int CVSpgmrPSolve(void *cv_mem, N_Vector r, N_Vector z, int lr);
+
+/* CVSPGMR difference quotient routine for J*v */
+
+static int CVSpgmrDQJtimes(N_Vector v, N_Vector Jv, realtype t,
+                           N_Vector y, N_Vector fy, void *jac_data,
+                           N_Vector work);
+/* Readability Replacements */
+
+#define lrw1    (cv_mem->cv_lrw1)
+#define liw1    (cv_mem->cv_liw1)
+#define uround  (cv_mem->cv_uround)
+#define tq      (cv_mem->cv_tq)
+#define nst     (cv_mem->cv_nst)
+#define tn      (cv_mem->cv_tn)
+#define h       (cv_mem->cv_h)
+#define gamma   (cv_mem->cv_gamma)
+#define gammap  (cv_mem->cv_gammap)   
+#define nfe     (cv_mem->cv_nfe)
+#define f       (cv_mem->cv_f)
+#define f_data  (cv_mem->cv_f_data)
+#define ewt     (cv_mem->cv_ewt)
+#define errfp   (cv_mem->cv_errfp)
+#define mnewt   (cv_mem->cv_mnewt)
+#define ropt    (cv_mem->cv_ropt)
+#define linit   (cv_mem->cv_linit)
+#define lsetup  (cv_mem->cv_lsetup)
+#define lsolve  (cv_mem->cv_lsolve)
+#define lfree   (cv_mem->cv_lfree)
+#define lmem    (cv_mem->cv_lmem)
+#define vec_tmpl     (cv_mem->cv_tempv)
+#define setupNonNull (cv_mem->cv_setupNonNull)
+
+#define sqrtN   (cvspgmr_mem->g_sqrtN)   
+#define ytemp   (cvspgmr_mem->g_ytemp)
+#define x       (cvspgmr_mem->g_x)
+#define ycur    (cvspgmr_mem->g_ycur)
+#define fcur    (cvspgmr_mem->g_fcur)
+#define delta   (cvspgmr_mem->g_delta)
+#define deltar  (cvspgmr_mem->g_deltar)
+#define npe     (cvspgmr_mem->g_npe)
+#define nli     (cvspgmr_mem->g_nli)
+#define nps     (cvspgmr_mem->g_nps)
+#define ncfl    (cvspgmr_mem->g_ncfl)
+#define nstlpre (cvspgmr_mem->g_nstlpre)
+#define njtimes (cvspgmr_mem->g_njtimes)
+#define nfeSG   (cvspgmr_mem->g_nfeSG)
+#define spgmr_mem (cvspgmr_mem->g_spgmr_mem)
+#define last_flag (cvspgmr_mem->g_last_flag)
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmr
+ * -----------------------------------------------------------------
+ * This routine initializes the memory record and sets various function
+ * fields specific to the Spgmr linear solver module. CVSpgmr first
+ * calls the existing lfree routine if this is not NULL.  It then sets
+ * the cv_linit, cv_lsetup, cv_lsolve, cv_lfree fields in (*cvode_mem)
+ * to be CVSpgmrInit, CVSpgmrSetup, CVSpgmrSolve, and CVSpgmrFree,
+ * respectively.  It allocates memory for a structure of type
+ * CVSpgmrMemRec and sets the cv_lmem field in (*cvode_mem) to the
+ * address of this structure.  It sets setupNonNull in (*cvode_mem),
+ * and sets the following fields in the CVSpgmrMemRec structure:
+ *   g_pretype = pretype                                       
+ *   g_gstype  = gstype                                       
+ *   g_maxl    = MIN(N,CVSPGMR_MAXL)  if maxl <= 0             
+ *             = maxl                 if maxl > 0              
+ *   g_delt    = CVSPGMR_DELT if delt == 0.0                     
+ *             = delt         if delt != 0.0                     
+ *   g_P_data  = P_data                                        
+ *   g_pset    = pset                                       
+ *   g_psolve  = psolve                                        
+ *   g_jtimes  = input parameter jtimes  if jtimes != NULL
+ *             = CVSpgmrDQJtimes         otherwise
+ *   g_j_data  = input parameter jac_data
+ * Finally, CVSpgmr allocates memory for ytemp and x, and calls
+ * SpgmrMalloc to allocate memory for the Spgmr solver.
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmr(void *cvode_mem, int pretype, int maxl)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+  int mxl;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Check if N_VDotProd is present */
+  if(vec_tmpl->ops->nvdotprod == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_BAD_NVECTOR);
+    return(CVSPGMR_ILL_INPUT);
+  }
+
+  if (lfree != NULL) lfree(cv_mem);
+
+  /* Set four main function fields in cv_mem */
+  linit  = CVSpgmrInit;
+  lsetup = CVSpgmrSetup;
+  lsolve = CVSpgmrSolve;
+  lfree  = CVSpgmrFree;
+
+  /* Get memory for CVSpgmrMemRec */
+  cvspgmr_mem = (CVSpgmrMem) malloc(sizeof(CVSpgmrMemRec));
+  if (cvspgmr_mem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_MEM_FAIL);
+    return(CVSPGMR_MEM_FAIL);
+  }
+
+  /* Set Spgmr parameters that have been passed in call sequence */
+  cvspgmr_mem->g_pretype    = pretype;
+  mxl = cvspgmr_mem->g_maxl = (maxl <= 0) ? CVSPGMR_MAXL : maxl;
+
+  /* Set default values for the rest of the Spgmr parameters */
+  cvspgmr_mem->g_gstype     = MODIFIED_GS;
+  cvspgmr_mem->g_delt       = CVSPGMR_DELT;
+  cvspgmr_mem->g_P_data     = NULL;
+  cvspgmr_mem->g_pset       = NULL;
+  cvspgmr_mem->g_psolve     = NULL;
+  cvspgmr_mem->g_jtimes     = CVSpgmrDQJtimes;
+  cvspgmr_mem->g_j_data     = cvode_mem;
+  cvspgmr_mem->g_last_flag  = CVSPGMR_SUCCESS;
+
+
+  setupNonNull = FALSE;
+
+  /* Check for legal pretype */ 
+  if ((pretype != PREC_NONE) && (pretype != PREC_LEFT) &&
+      (pretype != PREC_RIGHT) && (pretype != PREC_BOTH)) {
+    if(errfp!=NULL) 
+      fprintf(errfp, MSGS_BAD_PRETYPE);
+    return(CVSPGMR_ILL_INPUT);
+  }
+
+  /* Allocate memory for ytemp and x */
+  ytemp = N_VClone(vec_tmpl);
+  if (ytemp == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_MEM_FAIL);
+    return(CVSPGMR_MEM_FAIL);
+  }
+  x = N_VClone(vec_tmpl);
+  if (x == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_MEM_FAIL);
+    N_VDestroy(ytemp);
+    return(CVSPGMR_MEM_FAIL);
+  }
+
+  /* Compute sqrtN from a dot product */
+  N_VConst(ONE, ytemp);
+  sqrtN = RSqrt( N_VDotProd(ytemp, ytemp) );
+
+  /* Call SpgmrMalloc to allocate workspace for Spgmr */
+  spgmr_mem = SpgmrMalloc(mxl, vec_tmpl);
+  if (spgmr_mem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_MEM_FAIL);
+    N_VDestroy(ytemp);
+    N_VDestroy(x);
+    return(CVSPGMR_MEM_FAIL);
+  }
+  
+  /* Attach linear solver memory to integrator memory */
+  lmem = cvspgmr_mem;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrSetPrecType
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrSetPrecType(void *cvode_mem, int pretype)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  /* Check for legal pretype */ 
+  if ((pretype != PREC_NONE) && (pretype != PREC_LEFT) &&
+      (pretype != PREC_RIGHT) && (pretype != PREC_BOTH)) {
+    if(errfp!=NULL) 
+      fprintf(errfp, MSGS_SET_BAD_PRETYPE);
+    return(CVSPGMR_ILL_INPUT);
+  }
+
+  cvspgmr_mem->g_pretype = pretype;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrSetGSType
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrSetGSType(void *cvode_mem, int gstype)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  /* Check for legal gstype */
+  if ((gstype != MODIFIED_GS) && (gstype != CLASSICAL_GS)) {
+    if(errfp!=NULL) 
+      fprintf(errfp, MSGS_SET_BAD_GSTYPE);
+    return(CVSPGMR_ILL_INPUT);
+  }
+
+  cvspgmr_mem->g_gstype = gstype;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrSetDelt
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrSetDelt(void *cvode_mem, realtype delt)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  /* Check for legal delt */
+  if(delt < ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SET_BAD_DELT);
+    return(CVSPGMR_ILL_INPUT);
+  }
+
+  cvspgmr_mem->g_delt = (delt == ZERO) ? CVSPGMR_DELT : delt;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrSetPrecSetupFn
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrSetPreconditioner(void *cvode_mem, CVSpgmrPrecSetupFn pset, 
+                             CVSpgmrPrecSolveFn psolve, void *P_data)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  cvspgmr_mem->g_pset = pset;
+  cvspgmr_mem->g_psolve = psolve;
+  if (psolve != NULL) cvspgmr_mem->g_P_data = P_data;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrSetJacTimesVecFn
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrSetJacTimesVecFn(void *cvode_mem, CVSpgmrJacTimesVecFn jtimes, void *jac_data)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  cvspgmr_mem->g_jtimes = jtimes;
+  if (jtimes != NULL) cvspgmr_mem->g_j_data = jac_data;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetWorkSpace
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetWorkSpace(void *cvode_mem, long int *lenrwSG, long int *leniwSG)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+  int maxl;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  maxl = cvspgmr_mem->g_maxl;
+  *lenrwSG = lrw1*(maxl + 5) + maxl*(maxl + 4) + 1;
+  *leniwSG = liw1*(maxl + 5);
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetNumPrecEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetNumPrecEvals(void *cvode_mem, long int *npevals)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  *npevals = npe;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetNumPrecSolves
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetNumPrecSolves(void *cvode_mem, long int *npsolves)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  *npsolves = nps;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetNumLinIters
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetNumLinIters(void *cvode_mem, long int *nliters)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  *nliters = nli;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetNumConvFails
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetNumConvFails(void *cvode_mem, long int *nlcfails)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  *nlcfails = ncfl;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetNumJtimesEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetNumJtimesEvals(void *cvode_mem, long int *njvevals)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  *njvevals = njtimes;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetNumRhsEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetNumRhsEvals(void *cvode_mem, long int *nfevalsSG)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  *nfevalsSG = nfeSG;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetLastFlag
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetLastFlag(void *cvode_mem, int *flag)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  *flag = last_flag;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+
+/* Additional readability Replacements */
+
+#define pretype (cvspgmr_mem->g_pretype)
+#define gstype  (cvspgmr_mem->g_gstype)
+#define delt    (cvspgmr_mem->g_delt)
+#define maxl    (cvspgmr_mem->g_maxl)
+#define psolve  (cvspgmr_mem->g_psolve)
+#define pset    (cvspgmr_mem->g_pset)
+#define P_data  (cvspgmr_mem->g_P_data)
+#define jtimes  (cvspgmr_mem->g_jtimes)
+#define j_data  (cvspgmr_mem->g_j_data)
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrInit
+ * -----------------------------------------------------------------
+ * This routine does remaining initializations specific to the Spgmr 
+ * linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static int CVSpgmrInit(CVodeMem cv_mem)
+{
+  CVSpgmrMem cvspgmr_mem;
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  /* Initialize counters */
+  npe = nli = nps = ncfl = nstlpre = 0;
+  njtimes = nfeSG = 0;
+
+  /* Check for legal combination pretype - psolve */
+  if ((pretype != PREC_NONE) && (psolve == NULL)) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_PSOLVE_REQ);
+    last_flag = -1;
+    return(-1);
+  }
+
+  /* Set setupNonNull = TRUE iff there is preconditioning (pretype != PREC_NONE)
+     and there is a preconditioning setup phase (pset != NULL)             */
+  setupNonNull = (pretype != PREC_NONE) && (pset != NULL);
+
+  /* If jtimes is NULL at this time, set it to DQ */
+  if (jtimes == NULL) {
+    jtimes = CVSpgmrDQJtimes;
+    j_data = cv_mem;
+  }
+
+  last_flag = CVSPGMR_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrSetup
+ * -----------------------------------------------------------------
+ * This routine does the setup operations for the Spgmr linear solver.
+ * It makes a decision as to whether or not to signal for re-evaluation
+ * of Jacobian data in the pset routine, based on various state
+ * variables, then it calls pset.  If we signal for re-evaluation,
+ * then we reset jcur = *jcurPtr to TRUE, regardless of the pset output.
+ * In any case, if jcur == TRUE, we increment npe and save nst in nstlpre.
+ * -----------------------------------------------------------------
+ */
+
+static int CVSpgmrSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                        N_Vector fpred, booleantype *jcurPtr, N_Vector vtemp1,
+                        N_Vector vtemp2, N_Vector vtemp3)
+{
+  booleantype jbad, jok;
+  realtype dgamma;
+  int  ier;
+  CVSpgmrMem cvspgmr_mem;
+
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  /* Use nst, gamma/gammap, and convfail to set J eval. flag jok */
+  dgamma = ABS((gamma/gammap) - ONE);
+  jbad = (nst == 0) || (nst > nstlpre + CVSPGMR_MSBPRE) ||
+    ((convfail == CV_FAIL_BAD_J) && (dgamma < CVSPGMR_DGMAX)) ||
+    (convfail == CV_FAIL_OTHER);
+  *jcurPtr = jbad;
+  jok = !jbad;
+
+  /* Call pset routine and possibly reset jcur */
+  ier = pset(tn, ypred, fpred, jok, jcurPtr, gamma, P_data, 
+             vtemp1, vtemp2, vtemp3);
+  if (jbad) *jcurPtr = TRUE;
+
+  /* If jcur = TRUE, increment npe and save nst value */
+  if (*jcurPtr) {
+    npe++;
+    nstlpre = nst;
+  }
+
+  /* Return the same value ier that pset returned */
+  last_flag = ier;
+  return(ier);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrSolve
+ * -----------------------------------------------------------------
+ * This routine handles the call to the generic solver SpgmrSolve
+ * for the solution of the linear system Ax = b with the SPGMR method,
+ * without restarts.  The solution x is returned in the vector b.
+ *
+ * If the WRMS norm of b is small, we return x = b (if this is the first
+ * Newton iteration) or x = 0 (if a later Newton iteration).
+ *
+ * Otherwise, we set the tolerance parameter and initial guess (x = 0),
+ * call SpgmrSolve, and copy the solution x into b.  The x-scaling and
+ * b-scaling arrays are both equal to weight, and no restarts are allowed.
+ *
+ * The counters nli, nps, and ncfl are incremented, and the return value
+ * is set according to the success of SpgmrSolve.  The success flag is
+ * returned if SpgmrSolve converged, or if this is the first Newton
+ * iteration and the residual norm was reduced below its initial value.
+ * -----------------------------------------------------------------
+ */
+
+static int CVSpgmrSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                        N_Vector ynow, N_Vector fnow)
+{
+  realtype bnorm, res_norm;
+  CVSpgmrMem cvspgmr_mem;
+  int nli_inc, nps_inc, ier;
+  
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  /* Test norm(b); if small, return x = 0 or x = b */
+  deltar = delt*tq[4]; 
+
+  bnorm = N_VWrmsNorm(b, weight);
+  if (bnorm <= deltar) {
+    if (mnewt > 0) N_VConst(ZERO, b); 
+    return(0);
+  }
+
+  /* Set vectors ycur and fcur for use by the Atimes and Psolve routines */
+  ycur = ynow;
+  fcur = fnow;
+
+  /* Set inputs delta and initial guess x = 0 to SpgmrSolve */  
+  delta = deltar * sqrtN;
+  N_VConst(ZERO, x);
+  
+  /* Call SpgmrSolve and copy x to b */
+  ier = SpgmrSolve(spgmr_mem, cv_mem, x, b, pretype, gstype, delta, 0,
+                   cv_mem, weight, weight, CVSpgmrAtimes, CVSpgmrPSolve,
+                   &res_norm, &nli_inc, &nps_inc);
+
+  N_VScale(ONE, x, b);
+  
+  /* Increment counters nli, nps, and ncfl */
+  nli += nli_inc;
+  nps += nps_inc;
+  if (ier != 0) ncfl++;
+
+  /* Set return value to -1, 0, or 1 */
+  last_flag = ier;
+
+  if (ier < 0) return(-1);  
+
+  if ((ier == SPGMR_SUCCESS) || 
+      ((ier == SPGMR_RES_REDUCED) && (mnewt == 0)))
+    return(0);
+
+  return(1);  
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrFree
+ * -----------------------------------------------------------------
+ * This routine frees memory specific to the Spgmr linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static void CVSpgmrFree(CVodeMem cv_mem)
+{
+  CVSpgmrMem cvspgmr_mem;
+
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+  
+  N_VDestroy(ytemp);
+  N_VDestroy(x);
+  SpgmrFree(spgmr_mem);
+  free(cvspgmr_mem);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrAtimes
+ * -----------------------------------------------------------------
+ * This routine generates the matrix-vector product z = Mv, where
+ * M = I - gamma*J. The product J*v is obtained by calling the jtimes 
+ * routine. It is then scaled by -gamma and added to v to obtain M*v.
+ * The return value is the same as the value returned by jtimes --
+ * 0 if successful, nonzero otherwise.
+ * -----------------------------------------------------------------
+ */
+
+static int CVSpgmrAtimes(void *cvode_mem, N_Vector v, N_Vector z)
+{
+  CVodeMem   cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+  int jtflag;
+
+  cv_mem = (CVodeMem) cvode_mem;
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  jtflag = jtimes(v, z, tn, ycur, fcur, j_data, ytemp);
+  njtimes++;
+  if (jtflag != 0) return(jtflag);
+
+  N_VLinearSum(ONE, v, -gamma, z, z);
+
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrPSolve
+ * -----------------------------------------------------------------
+ * This routine interfaces between the generic SpgmrSolve routine and
+ * the user's psolve routine.  It passes to psolve all required state 
+ * information from cvode_mem.  Its return value is the same as that
+ * returned by psolve. Note that the generic SPGMR solver guarantees
+ * that CVSpgmrPSolve will not be called in the case in which
+ * preconditioning is not done. This is the only case in which the
+ * user's psolve routine is allowed to be NULL.
+ * -----------------------------------------------------------------
+ */
+
+static int CVSpgmrPSolve(void *cvode_mem, N_Vector r, N_Vector z, int lr)
+{
+  CVodeMem   cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+  int ier;
+
+  cv_mem = (CVodeMem) cvode_mem;
+  cvspgmr_mem = (CVSpgmrMem)lmem;
+
+  ier = psolve(tn, ycur, fcur, r, z, gamma, delta, lr, P_data, ytemp);
+  /* This call is counted in nps within the CVSpgmrSolve routine */
+
+  return(ier);     
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrDQJtimes
+ * -----------------------------------------------------------------
+ * This routine generates a difference quotient approximation to
+ * the Jacobian times vector f_y(t,y) * v. The approximation is 
+ * Jv = vnrm[f(y + v/vnrm) - f(y)], where vnrm = (WRMS norm of v) is
+ * input, i.e. the WRMS norm of v/vnrm is 1.
+ * -----------------------------------------------------------------
+ */
+
+static int CVSpgmrDQJtimes(N_Vector v, N_Vector Jv, realtype t, 
+                           N_Vector y, N_Vector fy,
+                           void *jac_data, N_Vector work)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+  realtype vnrm;
+
+  /* jac_data is cvode_mem */
+  cv_mem = (CVodeMem) jac_data;
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  /* Evaluate norm of v */
+  vnrm = N_VWrmsNorm(v, ewt);
+
+  /* Set work = y + (1/vnrm) v */
+  N_VLinearSum(ONE/vnrm, v, ONE, y, work);
+
+  /* Set Jv = f(tn, work) */
+  f(t, work, Jv, f_data); 
+  nfeSG++;
+
+  /* Replace Jv by vnrm*(Jv - fy) */
+  N_VLinearSum(ONE, Jv, -ONE, fy, Jv);
+  N_VScale(vnrm, Jv, Jv);
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvode/source/cvspgmr_impl.h b/Win32/WinCVODE/sundials/cvode/source/cvspgmr_impl.h
new file mode 100644
index 0000000..954fea5
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvode/source/cvspgmr_impl.h
@@ -0,0 +1,120 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:26:31 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the scaled, preconditioned GMRES
+ * linear solver, CVSPGMR.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVSPGMR_IMPL_H
+#define _CVSPGMR_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "cvspgmr.h"
+
+#include "spgmr.h"
+#include "iterative.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Types : CVSpgmrMemRec, CVSpgmrMem
+ * -----------------------------------------------------------------
+ * The type CVSpgmrMem is pointer to a CVSpgmrMemRec.
+ * This structure contains CVSpgmr solver-specific data.
+ * -----------------------------------------------------------------
+ */
+
+typedef struct {
+
+  int  g_pretype;       /* type of preconditioning                      */
+  int  g_gstype;        /* type of Gram-Schmidt orthogonalization       */
+  realtype g_sqrtN;     /* sqrt(N)                                      */
+  realtype g_delt;      /* delt = user specified or DELT_DEFAULT        */
+  realtype g_deltar;    /* deltar = delt * tq4                          */
+  realtype g_delta;     /* delta = deltar * sqrtN                       */
+  int  g_maxl;          /* maxl = maximum dimension of the Krylov space */
+
+  long int g_nstlpre;   /* value of nst at the last pset call           */
+  long int g_npe;       /* npe = total number of pset calls             */
+  long int g_nli;       /* nli = total number of linear iterations      */
+  long int g_nps;       /* nps = total number of psolve calls           */
+  long int g_ncfl;      /* ncfl = total number of convergence failures  */
+  long int g_njtimes;   /* njtimes = total number of calls to jtimes    */
+  long int g_nfeSG;     /* nfeSG = total number of calls to f for     
+                           difference quotient Jacobian-vector products */
+
+  N_Vector g_ytemp;     /* temp vector passed to jtimes and psolve      */
+  N_Vector g_x;         /* temp vector used by CVSpgmrSolve             */
+  N_Vector g_ycur;      /* CVODE current y vector in Newton Iteration   */
+  N_Vector g_fcur;      /* fcur = f(tn, ycur)                           */
+
+  CVSpgmrPrecSetupFn g_pset; 
+                        /* pset = user-supplied routine to compute      */
+                        /* a preconditioner                             */
+
+  CVSpgmrPrecSolveFn g_psolve;   
+                        /* psolve = user-supplied routine to solve      */
+                        /* preconditioner linear system                 */
+
+  void *g_P_data;       /* P_data passed to psolve and pset             */
+  SpgmrMem g_spgmr_mem; /* spgmr_mem is memory used by the              */
+                        /* generic Spgmr solver                         */
+
+  CVSpgmrJacTimesVecFn g_jtimes;  
+                        /* jtimes = Jacobian * vector routine           */
+  void *g_j_data;       /* j_data is passed to jtimes                   */
+
+  int g_last_flag;      /* last error flag returned by any function     */
+
+} CVSpgmrMemRec, *CVSpgmrMem;
+
+/* Error Messages */
+
+#define _CVSPGMR_         "CVSpgmr-- "
+#define MSGS_CVMEM_NULL   _CVSPGMR_ "Integrator memory is NULL.\n\n"
+#define MSGS_MEM_FAIL     _CVSPGMR_ "A memory request failed.\n\n"
+#define MSGS_BAD_PRETYPE1 _CVSPGMR_ "Illegal value for pretype.\n"
+#define MSGS_BAD_PRETYPE2 "The legal values are PREC_NONE, PREC_LEFT, "
+#define MSGS_BAD_PRETYPE3 "PREC_RIGHT, and PREC_BOTH.\n\n"
+#define MSGS_BAD_PRETYPE  MSGS_BAD_PRETYPE1 MSGS_BAD_PRETYPE2 MSGS_BAD_PRETYPE3
+#define MSGS_PSOLVE_REQ   _CVSPGMR_ "pretype != PREC_NONE, but PSOLVE = NULL is illegal.\n\n"
+#define MSGS_BAD_NVECTOR  _CVSPGMR_ "A required vector operation is not implemented.\n\n"
+
+#define MSGS_SETGET_CVMEM_NULL "CVSpgmrSet*/CVSpgmrGet*-- Integrator memory is NULL.\n\n"
+
+#define MSGS_SETGET_LMEM_NULL "CVSpgmrSet*/CVSpgmrGet*-- cvspgmr memory is NULL.\n\n"
+
+#define MSGS_SET_BAD_PRETYPE1 "CVSpgmrSetPrecType-- Illegal value for pretype.\n"
+#define MSGS_SET_BAD_PRETYPE2 "The legal values are PREC_NONE, PREC_LEFT, "
+#define MSGS_SET_BAD_PRETYPE3 "PREC_RIGHT, and PREC_BOTH.\n\n"
+#define MSGS_SET_BAD_PRETYPE  MSGS_SET_BAD_PRETYPE1 MSGS_SET_BAD_PRETYPE2 MSGS_SET_BAD_PRETYPE3
+
+#define MSGS_SET_BAD_GSTYPE1 "CVSpgmrSetGSType-- Illegal value for gstype.\n"
+#define MSGS_SET_BAD_GSTYPE2 "The legal values are MODIFIED_GS and "
+#define MSGS_SET_BAD_GSTYPE3 "CLASSICAL_GS.\n\n"
+#define MSGS_SET_BAD_GSTYPE  MSGS_SET_BAD_GSTYPE1 MSGS_SET_BAD_GSTYPE2 MSGS_SET_BAD_GSTYPE3
+
+#define MSGS_SET_BAD_DELT "CVSpgmrSetDelt-- delt < 0 illegal.\n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/LICENSE b/Win32/WinCVODE/sundials/cvodes/LICENSE
new file mode 100644
index 0000000..6180b61
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/LICENSE
@@ -0,0 +1,59 @@
+Copyright (c) 2002, The Regents of the University of California. 
+Produced at the Lawrence Livermore National Laboratory 
+Written by A.C. Hindmarsh and R. Serban.
+UCRL-CODE-155950
+All rights reserved. 
+
+This file is part of CVODES v2.1.0.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the disclaimer below.
+
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the disclaimer (as noted below)
+in the documentation and/or other materials provided with the
+distribution.
+
+3. Neither the name of the UC/LLNL nor the names of its contributors
+may be used to endorse or promote products derived from this software
+without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+REGENTS OF THE UNIVERSITY OF CALIFORNIA, THE U.S. DEPARTMENT OF ENERGY
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Additional BSD Notice
+---------------------
+1. This notice is required to be provided under our contract with
+the U.S. Department of Energy (DOE). This work was produced at the
+University of California, Lawrence Livermore National Laboratory
+under Contract No. W-7405-ENG-48 with the DOE.
+
+2. Neither the United States Government nor the University of
+California nor any of their employees, makes any warranty, express
+or implied, or assumes any liability or responsibility for the
+accuracy, completeness, or usefulness of any information, apparatus,
+product, or process disclosed, or represents that its use would not
+infringe privately-owned rights.
+
+3. Also, reference herein to any specific commercial products,
+process, or services by trade name, trademark, manufacturer or
+otherwise does not necessarily constitute or imply its endorsement,
+recommendation, or favoring by the United States Government or the
+University of California. The views and opinions of authors expressed
+herein do not necessarily state or reflect those of the United States
+Government or the University of California, and shall not be used for
+advertising or product endorsement purposes.
diff --git a/Win32/WinCVODE/sundials/cvodes/README b/Win32/WinCVODE/sundials/cvodes/README
new file mode 100644
index 0000000..1bc8395
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/README
@@ -0,0 +1,264 @@
+                           CVODES 
+                 Release 2.3.0, May 2005
+               Alan C. Hindmarsh and Radu Serban
+          Center for Applied Scientific Computing, LLNL
+
+CVODES is a solver for stiff and nonstiff ODE systems (initial value 
+problem) given in explicit form y' = f(t,y,p) with sensitivity analysis 
+capabilities (both forward and adjoint modes). 
+It is written in ANSI standard C.
+
+CVODES can be used both on serial and parallel (MPI) computers.  The 
+main difference is in the NVECTOR module of vector kernels.  The desired 
+version is obtained when compiling the example files by linking the 
+appropriate library of NVECTOR kernels.  In the parallel version,
+communication between processors is done with the MPI (Message Passage
+Interface) system.
+
+When used with the serial NVECTOR module, CVODES provides both direct (dense 
+and band) and a preconditioned Krylov (iterative) linear solvers. When CVODES 
+is used with the parallel NVECTOR module, only the Krylov linear solver is 
+available. (An approximate diagonal Jacobian option is available with both 
+versions.)  For the serial version, there is a banded preconditioner module 
+called CVBANDPRE available for use with the Krylov solver, while for the parallel 
+version there is a preconditioner module called CVBBDPRE which provides a
+band-block-diagonal preconditioner.
+
+CVODES is part of a software family called SUNDIALS: SUite of Nonlinear and 
+DIfferential/ALgebraic equation Solvers [4].  This suite consists of CVODE, 
+CVODES, IDA, and KINSOL.  The directory structure of the package supplied 
+reflects this family relationship.
+
+The notes below provide the location of documentation, directions for the 
+installation of the CVODES package, and relevant references. Following that 
+is a brief history of revisions to the package.
+
+A. Documentation
+----------------
+
+/sundials/cvodes/doc contains PostScript and PDF files for the CVODES User 
+Guide [1] (cvs_guide.ps and cvs_guide.pdf) and the CVODES Examples [2] 
+(cvs_examples.ps and cvs_examples.pdf) documents.
+
+B. Installation
+---------------
+
+For basic installation instructions see /sundials/INSTALL_NOTES. 
+For complete installation instructions see the "CVODES Installation Procedure"
+chapter in the CVODES User Guide.
+
+C. References
+-------------
+
+[1] A. C. Hindmarsh and R. Serban, "User Documentation for CVODES v2.1.0," 
+    LLNL technical report UCRL-SM-208111, November 2004.
+
+[2] A. C. Hindmarsh and R. Serban, "Example Programs for CVODES v2.1.0," 
+    LLNL technical report UCRL-SM-208115, November 2004.
+
+[3] R. Serban and A. C. Hindmarsh, "CVODES: An ODE Solver with Sensitivity
+    Analysis Capabilities," LLNL technical report UCRL-TR-xxxxxx, November 2004.
+
+[4] A. C. Hindmarsh, P. N. Brown, K. E. Grant, S. L. Lee, R. Serban, 
+    D. E. Shumaker, and C. S. Woodward, "SUNDIALS, Suite of Nonlinear and 
+    Differential/Algebraic Equation Solvers," ACM Trans. Math. Softw., 
+    accepted, 2004.
+
+D. Releases
+-----------
+
+v. 2.3.0   - May. 2005
+v. 2.2.0   - Apr. 2005
+v. 2.1.2   - Mar. 2005
+v. 2.1.1   - Jan. 2005
+v. 2.1.0   - Dec. 2004
+v. 1.0     - Jul. 2002 (first SUNDIALS release)
+
+
+E. Revision History
+-------------------
+
+v. 2.2.0 (Apr. 2005) ---> v. 2.3.0 (May. 2005)
+----------------------------------------------
+
+- Bug fixes
+   - in the adjoint module, fixed bug in storing interpolation data at
+     a point corresponding to a check point (improperly scaled y').
+
+- Changes to user interface
+   - removed CVadjGetcheckPointsList from the list of user-callable functions.
+
+v. 2.1.2 (Mar. 2005) ---> v. 2.2.0 (Apr. 2005)
+----------------------------------------------
+
+- New features
+   - added option for user-provided error weight computation function for
+     the solution vector (of type CVEwtFn specified through CVodeSetEwtFn).
+
+- Changes to user interface
+   - CVODE now stores tolerances through values rather than references 
+     (to resolve potential scoping issues). 
+   - CVODE now passes information back to the user through values rather
+     than references (error weights, estimated local errors, root info,
+     STAGGERED1 statistics, etc.)
+   - CVodeMalloc, CVodeReInit, CVodeSetTolerances: added option itol=CV_WF 
+     to indicate user-supplied function for computing the error weights; 
+     reltol is now declared as realtype. Note that it is now illegal to call
+     CVodeSetTolerances before CVodeMalloc. It is now legal to deallocate
+     the absolute tolerance N_Vector right after its use.
+   - Several optional input functions were combined into a single one
+     (CVodeRootInit and CvodeSetGdata, CVDenseSetJacFn and CVDenseSetJacData,
+     CVBandSetJacFn and CVBandSetJacData, CVSpgmrSetPrecSolveFn and 
+     CVSpgmrSetPrecSetFn and CVSpgmrSetPrecData, CVSpgmrSetJacTimesVecFn and
+     CVSpgmrSetJacData).
+   - Removed CVodeSetQuadtolerances. CVodeSetQuadErrCon now sets both the
+     error control flag and the tolerances for quadratures.
+   - CVodeSetQuadErrCon, CVodeSetSensTolerances: the relative tolerance
+     must now be passed as a realtype. It is now illegal to call 
+     CVodeSetQuadErrCon before CVodeQuadMalloc or to call CVodeSetSensTolerances
+     before CVodeSensMalloc.
+   - CvodeSensMalloc: removed p and plist from argument list.
+   - CVodeSensParams replaces CVodeSensPbar and sets p, pbar, and plist. NULL
+     can be passed for any of them if it will not be needed given the current
+     set of options. The array pbar must now contain Ns non-zero realtype
+     values giving order of magnitude for the parameters with respect to which
+     sensitivities will be computed. The array plist can now only have positive 
+     entries. 
+   - CVodeGetErrorWeights, CVodeGetQuadErrorWeights: the user is now responsible 
+     for allocating space for the N_Vector in which error weights will be copied.
+   - CVodeGetEstLocalErrors: the user is now responsible for allocating space
+     for the N_Vector in which estimated local errors will be copied.
+   - CVodeGetRootInfo: the user is now responsible for allocating space
+     for the int array in which root information will be copied.
+   - CVodeGetNumStgrSensNonlinSolvIters, CVodeGetNumStgrSensNonlinSolvConvFails:
+     the user is now responsible for allocating space for the long int arrays 
+     in which STAGGERED1 statistics will be copied.
+   - CVodeMallocB, CVodeReInitB, CVodeSetQuadErrConB: the relative tolerance
+     for the backward integration must now be passed as a realtype. It is now
+     illegal to call CVodeSetQuadErrConB before CVQuadMallocB.
+   - Passing a value of 0 for the maximum step size, the minimum step
+     size, or for maxsteps results in the solver using the corresponding
+     default value (infinity, 0, 500, respectively)
+   - User-callable functions in the adjoint module were modified similarly
+     to their corresponding counterparts for forward simulation.
+
+
+v. 2.1.1 (Jan. 2005) ---> v. 2.1.2 (Mar. 2005)
+----------------------------------------------
+
+- Bug fixes
+   - fixed bug in CVode function:  Initial setting of tretlast = *tret = tn removed
+     (correcting erroneous behavior at first call to CVRcheck3).
+   - removed redundant setting of tretlast = *tret = tn at CLOSE_ROOTS return from CVode.
+   - fixed bug in CVCompleteStep related to quadrature and sensitivity variables
+     (leading to wrong values at a BDF order increase)
+   - in CVUpperBoundH0, fixed a potential, although not harmful, use of 
+     uninitialized memory
+   - changed implicit type conversion to explicit in check_flag() routine in
+     examples to avoid C++ compiler errors
+
+- Changes to documentation
+   - added section with numerical values of all input and output solver constants
+   - added more detailed notes on the type of absolute tolerances
+   - added more details on ownership of memory for the array returned by CVodeGetRootInfo 
+   - corrected/added descriptions of error returns.
+   - added description of --with-mpi-flags option
+
+- Changes related to the build system
+   - fixed autoconf-related bug to allow configuration with the PGI Fortran compiler
+   - modified to use customized detection of the Fortran name mangling scheme 
+     (autoconf's AC_F77_WRAPPERS routine is problematic on some platforms)
+   - added --with-mpi-flags as a configure option to allow user to specify
+     MPI-specific flags
+   - updated Makefiles for Fortran examples to avoid C++ compiler errors (now use
+     CC and MPICC to link)
+
+
+v. 2.1.0 (Dec. 2004) ---> v. 2.1.1 (Jan. 2005)
+----------------------------------------------
+
+- New features
+   - added function CVodeSensToggle to allow activation/deactivation of
+     sensitivity calculations without memory allocation/deallocation.
+
+- Bug fixes
+   - fixed bug in CVCompleteStep related to quadrature and sensitivity variables
+     (leading to wrong values at a BDF order increase).
+   - in CVUpperBoundH0, fixed a potential, although not harmful, use of 
+     uninitialized memory.
+   - fixed logic in testing for negative values of user-supplied absolute tolerances
+     for sensitivity variables.
+  
+- Changes related to the build system
+   - changed order of compiler directives in header files to avoid compilation
+     errors when using a C++ compiler.
+
+v. 1.0 (Jul. 2002) ---> v. 2.1.0 (Dec. 2004)
+--------------------------------------------
+
+- New features
+   - added quadrature integration capabilities.
+   - added root finding capabilities.
+   - added option for different user data structures for ODE r.h.s.
+     and sensitivity r.h.s.
+   - in adjoint module, added interface to CVBBDPRE for the backward 
+     phase.
+   - in adjoint module, added option for using CVDIAG during backward 
+     phase.
+   - in adjoint module, added option for ONE_STEP integration during 
+     backward phase.
+   - in adjoint module, added option to reinitialize the backward 
+     integration phase (and perform a new backward integration using
+     the same check points).
+   - in adjoint module, relaxed assumption that t_final > t_0 (now
+     accepts t_final < t_0).
+
+- Bug fixes
+   - fixed bug in adjustment of sensitivity Nordsieck history array on an
+     order decrease (when using BDF).
+   - in adjoint module, fixed a potential use of memory before being set.
+   - in adjoint module, fixed a bug related to data saved at check points.
+     This addresses the case in which an order increase is deemed necessary
+     at the very first step after a check-point.
+
+- Changes related to the NVECTOR module 
+  (see also the file sundials/shared/README)
+   - removed machEnv, redefined table of vector operations (now contained
+     in the N_Vector structure itself).
+   - all CVODES functions create new N_Vector variables through cloning, using
+     an N_Vector passed by the user as a template.
+
+- Changes to type names and CVODES constants
+   - removed type 'integertype'; instead use int or long int, as appropriate.
+   - restructured the list of return values from the various CVODES functions.
+   - changed all CVODES constants (inputs and return values) to have the
+     prefix 'CV_' (e.g. CV_SUCCESS).
+   - renamed various function types to have the prefix 'CV' (e.g. CVRhsFn).
+
+- Changes to optional input/ouput
+   - added CVodeSet* and CVodeGet* functions for optional inputs/outputs, 
+     replacing the arrays iopt and ropt.
+   - added new optional inputs (e.g. maximum number of Newton iterations,
+     maximum number of convergence failures, etc).
+   - the value of the last return flag from any function within a linear
+     solver module can be obtained as an optional output (e.g. CVDenseGetLastFlag).
+  
+- Changes to user-callable functions
+   - renamed header files to have prefix 'cv' instead of 'cvs' (e.g. cvdense.h
+     replaces cvsdense.h).
+   - added new function CVodeCreate which initializes the CVODES solver
+     object and returns a pointer to the CVODES memory block.
+   - removed N (problem size) from all functions except the initialization
+     functions for the direct linear solvers (CVDense and CVBand).
+   - shortened argument lists of most CVODES functions (the arguments that
+     were dropped can now be specified through CVodeSet* functions).
+   - removed reinitialization functions for band/dense/SPGMR linear
+     solvers (same functionality can be obtained using CV*Set* functions).
+   - in CVBBDPRE, added a new function, CVBBDSpgmr to initialize the
+     SPGMR linear solver with the BBD preconditioner.
+   - function names changed in CVBANDPRE and CVBBDPRE for uniformity.
+
+- Changes to user-supplied functions
+   - removed N (probem dimension) from argument lists.
+   - shortened argument lists for user dense/band/SPGMR Jacobian routines.
+   - in CVSPGMR, shortened argument lists for user preconditioner functions.
diff --git a/Win32/WinCVODE/sundials/cvodes/doc/cvs_examples.pdf b/Win32/WinCVODE/sundials/cvodes/doc/cvs_examples.pdf
new file mode 100644
index 0000000..58b8c7b
Binary files /dev/null and b/Win32/WinCVODE/sundials/cvodes/doc/cvs_examples.pdf differ
diff --git a/Win32/WinCVODE/sundials/cvodes/doc/cvs_examples.ps b/Win32/WinCVODE/sundials/cvodes/doc/cvs_examples.ps
new file mode 100644
index 0000000..97b049d
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/doc/cvs_examples.ps
@@ -0,0 +1,53370 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Title: cvs_examples.dvi
+%%Pages: 136
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: CMR17 CMCSC10 CMR12 CMTI12 CMBX10 CMR10 CMBX12 CMTT10
+%%+ CMSY10 CMTT12 CMMI10 CMR8 CMMI8 CMSY8 CMSY6 CMR9 Helvetica
+%%+ Helvetica-Bold CMEX10 CMTI10 CMR6 MSBM10 CMTT9
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -Ppdf cvs_examples
+%DVIPSParameters: dpi=8000, compressed
+%DVIPSSource:  TeX output 2005.05.18:1636
+%%BeginProcSet: tex.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true 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/IEn 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 IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/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 A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
+/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
+setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
+restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/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{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: alt-rule.pro
+%!
+% Patch by TVZ
+% Makes dvips files draw rules with stroke rather than fill.
+% Makes narrow rules more predictable at low resolutions
+% after distilling to PDF.
+% May have unknown consequences for very thick rules.
+% Tested only with dvips 5.85(k).
+TeXDict begin
+/QV {
+  gsave newpath /ruleY X /ruleX X
+  Rx Ry gt
+  { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry }
+  { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx }
+  ifelse
+  setlinewidth 0 setlinecap stroke grestore
+} bind def
+end
+
+%%EndProcSet
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true 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/IEn 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 IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/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 A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A 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/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/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{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: pstricks.pro
+%!
+% PostScript prologue for pstricks.tex.
+% Version 97 patch 3, 98/06/01
+% For distribution, see pstricks.tex.
+%
+/tx at Dict 200 dict def tx at Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/TMatrix { } def
+/RAngle { 0 } def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+/pathforall load stopped { pop pop pop pop } if z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP  } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ]
+0 } ifelse setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { gsave abs CLW add /a ED a 0 dtransform round exch round exch
+2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25
+% DG/SR modification begin - Dec. 12, 1997 - Patch 2
+%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+% DG/SR modification end
+Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict
+/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1
+% DG/SR modification begin - Jun.  1, 1998 - Patch 3 (from Michael Vulis)
+% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore }
+% def
+a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore
+pop pop } def
+% DG/SR modification end
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
+div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
+CLW moveto } def
+/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
+2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
+curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
+def
+/SD { 0 360 arc fill } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto
+load } if ] cvx newpath 3 1 roll T exec } def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/Diamond { /mtrx CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul
+neg /d ED /a w h Atan def /h d a sin Div h add def /w d a cos Div w add
+def } ifelse mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2
+div /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+setmatrix } def
+% DG modification begin - Jan. 15, 1997
+%/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq {
+%pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+%div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0
+%d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+%setmatrix } def
+/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup
+CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0
+d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+% DG/SR modification begin - Jun.  1, 1998 - Patch 3 (from Michael Vulis)
+% setmatrix } def
+setmatrix pop } def
+% DG/SR modification end
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix
+rotate matrix concatmatrix exch findfont exch makefont setfont } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop
+} if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ]
+aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6
+2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto }
+ifelse } def
+/ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv {
+6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def
+/BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1
+sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore }
+def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 }
+if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if
+/dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div
+round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div
+round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub
+0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def
+/Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def }
+if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def }
+{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add
+exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n
+div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1
+dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt {
+dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt {
+pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup
+stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg}
+{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i
+w add def } repeat grestore gsave n 0 gt
+% DG/SR modification begin - Nov. 7, 1997 - Patch 1
+%{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash }
+{ 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash }
+% DG/SR modification end
+{ 2 setlinecap } ifelse /i y1 def /f x1 dx mul
+n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n
+div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop
+1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs
+dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt
+{z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g
+exch t L stroke /i i h add def } repeat grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET  } def
+/RotBegin { tx at Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 }
+def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle
+dup a add ] cvx def } def
+/RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ]
+cvx def } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def
+/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible
+/IfVisible true def } if } { IfVisible { Invisible /IfVisible false def
+} if } ifelse } def
+/InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def
+/Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit
+neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def
+/IfVisible true def } def
+end
+% END pstricks.pro
+
+%%EndProcSet
+%%BeginProcSet: pst-dots.pro
+%!PS-Adobe-2.0
+%%Title: Dot Font for PSTricks 97 - Version 97, 93/05/07.
+%%Creator: Timothy Van Zandt <tvz at Princeton.EDU>
+%%Creation Date: May 7, 1993
+10 dict dup begin
+  /FontType 3 def
+  /FontMatrix [ .001 0 0 .001 0 0 ] def
+  /FontBBox [ 0 0 0 0 ] def
+  /Encoding 256 array def
+  0 1 255 { Encoding exch /.notdef put } for
+  Encoding
+    dup (b) 0 get /Bullet put
+    dup (c) 0 get /Circle put
+    dup (C) 0 get /BoldCircle put
+    dup (u) 0 get /SolidTriangle put
+    dup (t) 0 get /Triangle put
+    dup (T) 0 get /BoldTriangle put
+    dup (r) 0 get /SolidSquare put
+    dup (s) 0 get /Square put
+    dup (S) 0 get /BoldSquare put
+    dup (q) 0 get /SolidPentagon put
+    dup (p) 0 get /Pentagon put
+    (P) 0 get /BoldPentagon put
+  /Metrics 13 dict def
+  Metrics begin
+    /Bullet 1000 def
+    /Circle 1000 def
+    /BoldCircle 1000 def
+    /SolidTriangle 1344 def
+    /Triangle 1344 def
+    /BoldTriangle 1344 def
+    /SolidSquare 886 def
+    /Square 886 def
+    /BoldSquare 886 def
+    /SolidPentagon 1093.2 def
+    /Pentagon 1093.2 def
+    /BoldPentagon 1093.2 def
+    /.notdef 0 def
+  end
+  /BBoxes 13 dict def
+  BBoxes begin
+    /Circle { -550 -550 550 550 } def
+    /BoldCircle /Circle load def
+    /Bullet /Circle load def
+    /Triangle { -571.5 -330 571.5 660 } def
+    /BoldTriangle /Triangle load def
+    /SolidTriangle /Triangle load def
+    /Square { -450 -450 450 450 } def
+    /BoldSquare /Square load def
+    /SolidSquare /Square load def
+    /Pentagon { -546.6 -465 546.6 574.7 } def
+    /BoldPentagon /Pentagon load def
+    /SolidPentagon /Pentagon load def
+    /.notdef { 0 0 0 0 } def
+  end
+  /CharProcs 20 dict def
+  CharProcs begin
+    /Adjust {
+      2 copy dtransform floor .5 add exch floor .5 add exch idtransform
+      3 -1 roll div 3 1 roll exch div exch scale
+    } def
+    /CirclePath { 0 0 500 0 360 arc closepath } def
+    /Bullet { 500 500 Adjust CirclePath fill } def
+    /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath eofill } def
+    /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath eofill } def
+    /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def
+    /TrianglePath {
+      0  660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath
+    } def
+    /SolidTriangle { TrianglePath fill } def
+    /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def
+    /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def
+    /SquarePath {
+      -450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto
+      closepath
+    } def
+    /SolidSquare { SquarePath fill } def
+    /Square { SquarePath .89 .89 scale SquarePath eofill } def
+    /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def
+    /PentagonPath {
+      -337.8 -465   moveto
+       337.8 -465   lineto
+       546.6  177.6 lineto
+         0    574.7 lineto
+      -546.6  177.6 lineto
+      closepath
+    } def
+    /SolidPentagon { PentagonPath fill } def
+    /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def
+    /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def
+    /.notdef { } def
+  end
+  /BuildGlyph {
+    exch
+    begin
+      Metrics 1 index get exec 0
+      BBoxes 3 index get exec
+      setcachedevice
+      CharProcs begin load exec end
+    end
+  } def
+  /BuildChar {
+    1 index /Encoding get exch get
+    1 index /BuildGlyph get exec
+  } bind def
+end
+/PSTricksDotFont exch definefont pop
+% END pst-dots.pro
+
+%%EndProcSet
+%%BeginProcSet: pst-node.pro
+%!
+% PostScript prologue for pst-node.tex.
+% Version 97 patch 1, 97/05/09.
+% For distribution, see pstricks.tex.
+%
+/tx at NodeDict 400 dict def tx at NodeDict begin
+tx at Dict begin /T /translate load def end
+/NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def }
+if begin tx at Dict begin STV CP T exec end /NodeMtrx CM def next end
+grestore } def
+/InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def
+} def
+/InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch
+Sin mul } def } def
+/GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def
+} ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def }
+ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx
+dup Sin mul Cos Div } ifelse } def
+/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub
+/u ED /NodePos { GetRnodePos } def } def
+/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup
+Cos mul exch Sin mul } def
+/TriNodePos { Sin s lt { d NodeSep sub dup Cos mul Sin Div exch } { w h
+mul w Sin mul h Cos abs mul add Div NodeSep add dup Cos mul exch Sin mul
+} ifelse } def
+/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d
+ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d
+sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan
+sin def /NodePos { TriNodePos } def } def
+/OvalNodePos { /ww w NodeSep add def /hh h NodeSep add def Sin ww mul Cos
+hh mul Atan dup cos ww mul exch sin hh mul } def
+/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
+/XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist
+Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg }
+{ 0 Dist Sin mul } ifelse } ifelse Do } def
+/GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform
+exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx
+dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop
+XYPos } ifelse } def
+/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1
+roll sin mul sub exch } ifelse } def
+/GetEdgeA { NodeSepA AngleA NodeA NodeSepTypeA GetEdge OffsetA AngleA
+AddOffset yA add /yA1 ED xA add /xA1 ED } def
+/GetEdgeB { NodeSepB AngleB NodeB NodeSepTypeB GetEdge OffsetB AngleB
+AddOffset yB add /yB1 ED xB add /xB1 ED } def
+/GetArmA { ArmTypeA 0 eq { /xA2 ArmA AngleA cos mul xA1 add def /yA2 ArmA
+AngleA sin mul yA1 add def } { ArmTypeA 1 eq {{exch}} {{}} ifelse /Do ED
+ArmA AngleA XYPos OffsetA AngleA AddOffset yA add /yA2 ED xA add /xA2 ED
+} ifelse } def
+/GetArmB { ArmTypeB 0 eq { /xB2 ArmB AngleB cos mul xB1 add def /yB2 ArmB
+AngleB sin mul yB1 add def } { ArmTypeB 1 eq {{exch}} {{}} ifelse /Do ED
+ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED
+} ifelse } def
+/InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED
+/NodeSepA ED /OffsetB ED /OffsetA ED tx at NodeDict a known tx at NodeDict b
+known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA
+ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def
+/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub
+mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def
+/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt
+{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop
+} repeat LPutLine cleartomark } def
+/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
+/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
+mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
+sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
+add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
+y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
+mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def
+/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def
+} def
+/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def
+/NAngle yyB yyA sub xxB xxA sub Atan def } def
+/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd  } def
+/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def
+} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit
+} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd 
+} def
+/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def
+} def
+/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def
+/NAngle yyB yyA sub xxB xxA sub Atan def } def
+/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd  } def
+/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def
+} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check {
+exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark
+VPosEnd  } def
+/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2
+roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx
+def grestore exec /LPutVar /SaveLPutVar load def } def
+/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def
+GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos {
+LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos {
+LPutVar VPutLine } def LPutVar } def
+/NCLine { NCCoor tx at Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop
+end } def
+/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub
+Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan
+/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1
+yA1 ] cvx def mark LPutVar tx at Dict begin false Line end /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+ifelse } def
+/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1
+roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA
+GetArmB xA2 yA2 xA1 yA1 tx at Dict begin ArrowA end xB2 yB2 xB1 yB1 tx at Dict
+begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ]
+cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines
+} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def
+/NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
+def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx
+itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2
+yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false Line end /LPutVar [ xB1
+yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def
+/HPutPos { HPutLines } def /VPutPos { VPutLines } def } def
+/NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2
+yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform
+/y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1
+tx at Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ]
+cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCBar { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def
+xA2 yA2 mtrx itransform pop xB2 yB2 mtrx itransform pop sub dup 0 mtrx
+transform 3 -1 roll 0 gt { /yB2 exch yB2 add def /xB2 exch xB2 add def }
+{ /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse mark ArmB
+0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict
+begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx
+def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCDiag { GetEdgeA GetEdgeB GetArmA GetArmB mark ArmB 0 ne { xB1 yB1 } if
+xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false Line end
+/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCDiagg { GetEdgeA GetArmA yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED
+GetEdgeB mark xB1 yB1 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin
+false Line end /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCLoop { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
+def xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED /xB3 xB2 yB2
+mtrx transform pop def xB3 yA3 mtrx itransform /yB3 ED /xB3 ED xA3 yA3
+mtrx itransform /yA3 ED /xA3 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2
+xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false
+Line end /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ]
+cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+% DG/SR modification begin - May 9, 1997 - Patch 1
+%/NCCircle { 0 0 NodesepA nodeA \tx at GetEdge pop xA sub 2 div dup 2 exp r
+%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
+%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
+%mul add dup 5 1 roll 90 sub \tx at PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
+/NCCircle { NodeSepA 0 NodeA 0 GetEdge pop 2 div dup 2 exp r
+r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
+exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
+mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
+% DG/SR modification end
+} def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA 90 sub a add
+AngleA 270 add a sub tx at Dict begin /angleB ED /angleA ED /r ED /c 57.2957 r
+Div def /y ED /x ED } def
+/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB
+180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos
+mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def
+/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy
+add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos
+{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar
+tx at Dict begin false Polygon end } def
+/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan
+def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2
+mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def
+/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div
+def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def
+GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul
+sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0
+eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn }
+{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def
+0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2
+roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0
+0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2
+roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat }
+ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos
+{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le {
+r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC }
+{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add
+add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub
+mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t
+sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse
+y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos {
+LPutPos } def } def
+/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB
+sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1
+ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB
+w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos
+{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop }
+{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine }
+def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx at Dict begin
+/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def
+/LPutCoor { NAngle tx at Dict begin /NAngle ED end gsave CM STV CP Y sub neg
+exch X sub neg exch moveto setmatrix CP grestore } def
+/LPut { tx at NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0
+def } ifelse LPutCoor  } def
+/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg }
+if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED }
+def
+/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if
+r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED }
+def
+end
+% END pst-node.pro
+
+%%EndProcSet
+%%BeginProcSet: texnansi.enc
+% @psencodingfile{
+%   author = "Y&Y, Inc.",
+%   version = "1.1",
+%   date = "1 December 1996",
+%   filename = "texnansi.enc",
+%   email = "help at YandY.com",
+%   address = "45 Walden Street // Concord, MA 01742, USA",
+%   codetable = "ISO/ASCII",
+%   checksum = "xx",
+%   docstring = "Encoding for fonts in Adobe Type 1 format for use with TeX."
+% }
+%
+% The idea is to have all 228 characters normally included in Type 1 text
+% fonts (plus a few more) available for typesetting.  This is effectively
+% the character set in Adobe Standard Encoding, ISO Latin 1, plus a few more.
+%
+% Character code assignments were made as follows:
+%
+% (1) The character layout largely matches `ASCII' in the 32 -- 126 range,
+% except for `circumflex' in 94 and `tilde' in 126, to match `TeX text'
+% (`asciicircumflex' and `asciitilde' appear in 158 and 142 instead).
+%
+% (2) The character layout matches `Windows ANSI' in almost all places,
+% except for `quoteright' in 39 and `quoteleft' in 96 to match ASCII
+% (`quotesingle' and `grave' appear in 129 and 18 instead).
+%
+% (3) The character layout matches `TeX typewriter' used by CM text fonts
+% in most places (except for discordant positions such as hungarumlaut
+% (instead of braceright), dotaccent (instead of underscore) etc.
+%
+% (4) Remaining characters are assigned arbitrarily to the `control character'
+% range (0 -- 31), avoiding 0, 9, 10 and 13 in case we meet dumb software
+% - similarly one should really avoid 127 and 128 if possible.
+% In addition, the 8 open slots in Windows ANSI between 128 and 159 are used.
+%
+% (5) Y&Y Lucida Bright includes some extra ligatures and such; ff, ffi, ffl,
+% and `dotlessj,' these are included 11 -- 15, and 17.
+%
+% (6) Hyphen appears both at 45 and 173 for compatibility with both ASCII
+% and Windows ANSI.
+%
+% (7) It doesn't really matter where ligatures appear (both real, such as ffi,
+% and pseudo such as ---) since these should not be accessed directly, only
+% via ligature information in the TFM file.
+%
+% SAMPLE USAGE (in `psfonts.map' file for DVIPS):
+% 
+% lbr LucidaBright "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <lbr.pfb
+%
+% This tells DVIPS that the font called `lbr' in TeX has PostScript 
+% FontName `LucidaBright.'  It also asks DVIPS to expand the file `lbr.pfb'
+% into PFA form, to include the attached `texnansi.enc' encoding vector,
+% and to then actually reencode the font based on that encoding vector.
+%
+% Revised 1996 June 1 by adding second position for `fl' to avoid Acrobat bug.
+% Revised 1996 June 1 by adding second position for `fraction' for same reason.
+% Revised 1997 Oct 1 by adding cwm  (used in boundary char TFM code)
+% Revised 1998 Mar 1 by adding Unicode for Euro character
+%
+/TeXnANSIEncoding [
+/.notdef % 0
+/Euro % /Uni20AC 1
+/.notdef % 2
+/.notdef % 3
+/fraction %	4
+/dotaccent %	5
+/hungarumlaut %	6
+/ogonek	%	7
+/fl	%	8
+/.notdef % /fraction %	9	not used (see 4), backward compatability only
+/cwm	%	10	not used, except boundary char internally maybe
+/ff    %	11
+/fi    %	12
+/.notdef % /fl    %	13	not used (see 8), backward compatability only
+/ffi   %	14
+/ffl   %	15
+/dotlessi %	16
+/dotlessj %	17
+/grave %	18
+/acute %	19
+/caron %	20
+/breve %	21
+/macron %	22
+/ring  %	23
+/cedilla %	24
+/germandbls %	25
+/ae    %	26
+/oe    %	27
+/oslash %	28
+/AE    %	29
+/OE    %	30
+/Oslash %	31
+/space %	32	% /suppress in TeX text
+/exclam %	33
+/quotedbl %	34	% /quotedblright in TeX text
+/numbersign %	35
+/dollar %	36
+/percent %	37
+/ampersand %	38
+/quoteright %	39	% /quotesingle in ANSI
+/parenleft %	40
+/parenright %	41
+/asterisk %	42
+/plus  %	43
+/comma %	44
+/hyphen %	45
+/period %	46
+/slash %	47
+/zero  %	48
+/one   %	49
+/two   %	50
+/three %	51
+/four  %	52
+/five  %	53
+/six   %	54
+/seven %	55
+/eight %	56
+/nine  %	57
+/colon %	58
+/semicolon %	59
+/less  %	60	% /exclamdown in Tex text
+/equal %	61
+/greater %	62	% /questiondown in TeX text
+/question %	63
+/at %	64
+/A %	65
+/B %	66
+/C %	67
+/D %	68
+/E %	69
+/F %	70
+/G %	71
+/H %	72
+/I %	73
+/J %	74
+/K %	75
+/L %	76
+/M %	77
+/N %	78
+/O %	79
+/P %	80
+/Q %	81
+/R %	82
+/S %	83
+/T %	84
+/U %	85
+/V %	86
+/W %	87
+/X %	88
+/Y %	89
+/Z %	90
+/bracketleft %	91
+/backslash %	92	% /quotedblleft in TeX text
+/bracketright %	93
+/circumflex %	94	% /asciicircum in ASCII
+/underscore %	95	% /dotaccent in TeX text
+/quoteleft %	96	% /grave accent in ANSI
+/a %	97
+/b %	98
+/c %	99
+/d %	100
+/e %	101
+/f %	102
+/g %	103
+/h %	104
+/i %	105
+/j %	106
+/k %	107
+/l %	108
+/m %	109
+/n %	110
+/o %	111
+/p %	112
+/q %	113
+/r %	114
+/s %	115
+/t %	116
+/u %	117
+/v %	118
+/w %	119
+/x %	120
+/y %	121
+/z %	122
+/braceleft %	123	% /endash in TeX text
+/bar   %	124	% /emdash in TeX test
+/braceright %	125	% /hungarumlaut in TeX text
+/tilde %	126	% /asciitilde in ASCII
+/dieresis %	127	not used (see 168), use higher up instead
+/Lslash	%	128	this position is unfortunate, but now too late to fix
+/quotesingle %	129
+/quotesinglbase %	130
+/florin %	131
+/quotedblbase %	132
+/ellipsis %	133
+/dagger %	134
+/daggerdbl %	135
+/circumflex %	136
+/perthousand %	137
+/Scaron %	138
+/guilsinglleft %	139
+/OE    %	140
+/Zcaron %	141
+/asciicircum %	142
+/minus %	143
+/lslash %	144
+/quoteleft %	145
+/quoteright %	146
+/quotedblleft %	147
+/quotedblright %	148
+/bullet %	149
+/endash %	150
+/emdash %	151
+/tilde %	152
+/trademark %	153
+/scaron %	154
+/guilsinglright %	155
+/oe    %	156
+/zcaron %	157
+/asciitilde %	158
+/Ydieresis %	159
+/nbspace %	160	% /space (no break space)
+/exclamdown %	161
+/cent  %	162
+/sterling %	163
+/currency %	164
+/yen   %	165
+/brokenbar %	166
+/section %	167
+/dieresis %	168
+/copyright %	169
+/ordfeminine %	170
+/guillemotleft %	171
+/logicalnot %	172
+/sfthyphen %	173 % /hyphen (hanging hyphen)
+/registered %	174
+/macron %	175
+/degree %	176
+/plusminus %	177
+/twosuperior %	178
+/threesuperior %	179
+/acute %	180
+/mu    %	181
+/paragraph %	182
+/periodcentered %	183
+/cedilla %	184
+/onesuperior %	185
+/ordmasculine %	186
+/guillemotright %	187
+/onequarter %	188
+/onehalf %	189
+/threequarters %	190
+/questiondown %	191
+/Agrave %	192
+/Aacute %	193
+/Acircumflex %	194
+/Atilde %	195
+/Adieresis %	196
+/Aring %	197
+/AE    %	198
+/Ccedilla %	199
+/Egrave %	200
+/Eacute %	201
+/Ecircumflex %	202
+/Edieresis %	203
+/Igrave %	204
+/Iacute %	205
+/Icircumflex %	206
+/Idieresis %	207
+/Eth   %	208
+/Ntilde %	209
+/Ograve %	210
+/Oacute %	211
+/Ocircumflex %	212
+/Otilde %	213
+/Odieresis %	214
+/multiply %	215	% OE in T1
+/Oslash %	216
+/Ugrave %	217
+/Uacute %	218
+/Ucircumflex %	219
+/Udieresis %	220
+/Yacute %	221
+/Thorn %	222
+/germandbls %	223
+/agrave %	224
+/aacute %	225
+/acircumflex %	226
+/atilde %	227
+/adieresis %	228
+/aring %	229
+/ae    %	230
+/ccedilla %	231
+/egrave %	232
+/eacute %	233
+/ecircumflex %	234
+/edieresis %	235
+/igrave %	236
+/iacute %	237
+/icircumflex %	238
+/idieresis %	239
+/eth   %	240
+/ntilde %	241
+/ograve %	242
+/oacute %	243
+/ocircumflex %	244
+/otilde %	245
+/odieresis %	246
+/divide %	247	% oe in T1
+/oslash %	248
+/ugrave %	249
+/uacute %	250
+/ucircumflex %	251
+/udieresis %	252
+/yacute %	253
+/thorn %	254
+/ydieresis %	255	% germandbls in T1
+] def
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
+exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub
+dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
+ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict
+end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{
+dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1
+roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def
+dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}
+if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}
+def 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 0 N/rwiSeen false N
+/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
+/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
+/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
+X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
+/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
+/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
+{userdict/md get type/dicttype eq{userdict begin md length 10 add md
+maxlength ge{/md md dup length 20 add dict copy def}if end 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 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
+save N userdict maxlength dict begin/magscale true 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
+ at SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{
+CLIP 1 eq{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 rwiSeen{rwi urx llx
+sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
+}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
+CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
+lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
+/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
+repeat grestore 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
+%%BeginProcSet: color.pro
+%!
+TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
+setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
+}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
+/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
+setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
+/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
+known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
+/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
+/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
+setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
+setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
+0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
+/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
+setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
+0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
+0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
+0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
+/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
+setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
+setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
+0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
+/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
+setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
+0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
+0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
+0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
+/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
+setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
+/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
+0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
+0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
+0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
+setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
+0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
+/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
+setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
+0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
+1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
+/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
+setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
+0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
+DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
+setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
+setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
+setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
+
+%%EndProcSet
+%%BeginFont: CMTT12
+%!PS-AdobeFont-1.1: CMTT12 1.0
+%%CreationDate: 1991 Aug 20 16:45:46
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 46 /period put
+dup 97 /a put
+dup 99 /c put
+dup 100 /d put
+dup 102 /f put
+dup 107 /k put
+dup 110 /n put
+dup 112 /p put
+dup 118 /v put
+dup 120 /x put
+readonly def
+/FontBBox{-1 -234 524 695}readonly def
+/UniqueXX 5000833 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be79011d1f5b667eed85fade30ab2ec4e1c2f
+4fe750cf9a69506458071de8896261c001b1c290937fa42a1fa87de406e9f86a
+4c9c0f03f69fba719114f8ae51040a4c03a58b6f3de027f6726f32743dce7395
+14c2c6f3c2de1aeddcfa8eed7da56dd68dbcde33c29ff7a694769049e4325ec9
+61b2df16add2ad46f18781fbd63eec62c26f1db41e6a666a09886382dceba91d
+8ff7cedd64ddc8a2f15fe34076a064c46febd1f4dc3707aede0ce8af161bcb8e
+4ada202d0954baca5be71c28ab8bf32fd72029aa07f27d658a68f454a4bf386f
+6314224d16c7f0a8624f6b86319a4e2fd178f596f3b20db032ea28c157a68a69
+fad2bc88881658d2286c0d4ef061bc070c3145f2a37ebec03f51de7cda34cd97
+7eeebd86b00f9758b3a496f41d9a74279ef3c6322dc54945f95062c5f37a1e51
+cf7eaf45f2b3634b2d7d01ec3b298ff35b6616cd3020e096f6c6aa2bf04c4a93
+61c19f3c67a28d936ffc8120f1e46980b29bf54047c5f1fa48e67611a74fa434
+3384f802a4079b28b94681e119ab0c1692de5bbf426440ad1023506cb80732de
+c64d9061869cb34de924d2c26e404b7dbd9be55b9c0c5ae3095c15d278adbb49
+12df1484ed2d73128e5d9c1f1a3b9ac19e2ce5366c96644f5b3d3eea589caedb
+586fd9b8f4df32ec910e9b7434d5bbe57e03892eb03890567df5b811afa0da5e
+929d456af362fda0789aa0cff464e238029294fde86cfc8d7d33d5c98b18c76c
+319811e4d3d49560f2ac39103594ec513e0b1377c2c3e22979866c19b61448d5
+a7201ca4b7538aa370f6347253b0853d4c5d575a7572f93cb73a598e2e26b11a
+d46a1126e44e7e1795dff01562316b6ccc6678663e66a73db285746df3f4405d
+d51714679581946ef72105847f564ac4a0194095cc94b63115478f276a009e25
+3763db352f1c4e1175efc0faa92d076f8f3405cf490a057bd4579f5efc649dfc
+29c21cf30c8f6d2c7a37f7058f1a7108c753554018d7c8ced507279efd747462
+a9a1cae9f1e3f2558fa3c5b3598a271e93dfeeb64e5a475ae1da2f78e084147c
+500400bbde0d0f66aff0781f699b0f32fd990428adb0c81d2e15caa144ffeb2c
+281ee8635c7ebb0e0957e90cc645118ab6cd6b802cbef5dacef0a34731c31806
+eae6bb489cc9077c7eccdd790314813aa236948c29a077b4767f15f803053a7d
+03735103c25b9ccd286a09b9c1c64a2246b2c3247080f50504285120a60ad6b1
+13fc5da3b9e770efc7622a08608b017e89ffb9cb0c44f8c1a25232ad9fbb9bf6
+db7dd580923c19f8a777e6574aa7d8d164c05cfaac2d1111666ad9e04ffcb48f
+2bb088d49c357930b11bafccf6803da9f14aface2ed85690b3743b67d717d8e4
+e5caddef7ef015b94a1abfa7a0f6dd7d4572190a7a1f5adc6964e6ca593371f0
+90ac843ccb2a8340ebebc5088090f6d2d2c003bc0d95e999eccabe62309d27e4
+81e1a76bb754ed825f0e3b1308dd0451ca274c6c9ef27fb7549e57eca7bcb91a
+d41646396f02328604bd5a7db6dfb14ad5bfb137f807dba5b2f6be9f2eb005b4
+c7846259b921a58ad975f0ceb7d14c828fcff3b54e9f088daa59f439ea3536eb
+baee3d23d03eba2f04affa700b81d5fb7cbb414cdd19041a16bd9c6763b9c054
+bd21d53dd61c88955567eadc8c6f9e56f8a03756e1832955f31bee7f4020a6e6
+11ed0c54a5b61be393cb93310534c3acea58306ec6ecb1221cf7720ef9ef1a1e
+16ce7e6b779624d51e88244d079483e599ade1e35e3aaddf04f2ec1764648ab5
+77eb014b2218c310788e884c92c5c0c6fcb4d3b9e6fc2783e5ef81beadc058dc
+871e94bc8be4f0dedb0e039dc67357203720b355bc7f8d3c31dba98348b580e6
+b795c17f9cec91eb9e705d408b3620942d9d910f62f2060e4a34760e11ae2cab
+26184f2a8055b752dee3439cb6536da94d716660fe0cf1f690305d5cd4159aa2
+587c1f9898ad47b49c434489b55014b525f82a7de2e9228d68c5b204eafe509d
+8d19ee7da148e975abe7cdfe1bd0bd2fb38da949e1f10eb811427daedfa97f98
+31b5001cd82e7bd718cf303a4948b60027e8547788bc6491a79bd57928124cb6
+e7cf454ebcdf352cc33f1b1378aba6d77698eb6afdb3936a40dd6c06f91d5c25
+bfd646dd90b0829478cf37f8fb26c015a5a328804016ad408b06b55c8ce5af0d
+3a1e829ce97884a2bba69c6bdce4938bd7fca2a0d7d48ebf4294a6cc7c9f0c40
+4ebec0f97364cf55ecdb545e535906d978ef87c4af7e41813f4fa9f5f565d3a5
+d6edff3e36fe59ac32a78acbc9fbfd66db401f7511c62968c3ea154096073779
+49916c919a6e7a7535e1007f7079a896730af9fbc69ebef931ac12cf830cd380
+71157887f44d1021e19b553cb2138f3abd1cdcc7e9107f1af7c9ff24fe04631f
+319d61d5c82658862c4681f28ab28ccd986e731e2a0435710c3722896e3560aa
+408a0ef6bbf22c176a29a8908ff4991f5eee674ab7becd5b4d36ef0010f9f0f9
+fc7d82f5738188c050f9161a05feef5fe241c6ad5525572cdbc13183cdc3b4cf
+0008b112a46eb857f38ca74a76b3973f8b65574d0a7e6b74e1eb10a983ef623b
+5bba7a32f7c62a7e77a904f4e82d356f0c4e8ddbcd924e12a10ddfe511472bcd
+06d9ceecb4fd2f3ba77f270a8db276f01d8872aefdcd045760dfaed89afa8cd0
+b10fbb3164d620a77dd2846035ea9a567a97c51311e4cebdc36298ab8341501f
+183eb5afd397826368baa2a8810724187157c8a30485ef9fd4caed302520ff26
+839a685069e9e5900d4af764d078da9894ebb64e0fdd3c71eab720acbc393d70
+7a39a6eeed5b129bd21fb9cac06bcaeb2c98031c1d11f326eb01e35231fcf884
+9443ec69a31572a6f7ffb9c74991e842d5676048e86c62d0e10977318151f619
+22eeccd144ca04a9649b9487467a0ff9e452c29ea91564c652745382b4ec416c
+f501aa24fd0b3ff395e6965f6d0c635cecb8444e3c44e64a0a887760ebdd2dc0
+719d1dbbcafa586640da6b65bac1b20f06df1cd1e83183cb6dddef8862386db7
+854f3c8ab90282340265d82c93a12029223f117faceac9b4a7d429c9bd8e4526
+40bc7b317cdde22e16bce5961121961b3422cb501ff63a0317faac9b63bc4e48
+a70b5a6d5982c6fc69
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTT9
+%!PS-AdobeFont-1.1: CMTT9 1.0
+%%CreationDate: 1991 Aug 20 16:46:24
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 51 /three put
+dup 68 /D put
+dup 97 /a put
+dup 107 /k put
+dup 112 /p put
+dup 118 /v put
+dup 120 /x put
+readonly def
+/FontBBox{-6 -233 542 698}readonly def
+/UniqueXX 5000831 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be465959b1188f76df7824c135a7fb382c4e1
+1b0ddfe856b6f34552ca48c24b57dd8448fac257c4d93fb122e1218fd36b99b2
+d79dadb8a66613ef11039be77816a7a2d6781fe0d69cecc36232ae87a172afe0
+95532a8c7ff40bdd4a5fcfb6ccfd8f73c572231734e0609c6743ee11010f6579
+820b367c49069ac1d45760c0ce8dc1e67e2beb72be6d287910547e1b4bb52465
+b75947d224998223275a2c340a1c14c04328cc2935c53ee2723f1de6357a291e
+14863f6c1411477b3ea074052b30a4c1ef03ab324d678307e1cb02c7aaffa90b
+73975378b9debcd3f6aab626a361be8068c60edd0b2be4a7bbf4efa21cc23607
+bf7e2556c17b5923d7b0fc036d5fea743c55f2bbf72e8a61995bd63d7104a085
+b8dd5a83d9077376a4ae8f0c048606bb9e84c640c52d0a95b35d48cfafd6ebe3
+d6eb0ed88c1212818ca93e40614740a77c446b792d02945642014a5d55ba970e
+f97dcdd5b839f621a052d1085a1e668161d3ac0227c7867324ede883589b39e5
+d152793009cb5a08eb6719a44dd01b6147e3436bdbb28215ce3d29a3b1dfc72b
+d942f8cb3376b4e12cff53a793d935346ceb2afc3428cd9313c671ec1911252c
+19de341556999aaf7417aa5085daa35ee71353fdc2c7d83ec2dedaabb1b89b99
+e4cb5282159cbfb45a286f8d6bf3abdedccbdcebaf6994b17f1be07d10f00cba
+47f2fbf66c0d83921a5a0a4e2054a8a2dcf492cc40de855b476ae77bfe12ce22
+d1195e3f9d51272541e21267b2924e293e7a1090b4eefdb707d2c29ad62a240f
+ad89834a3b49e3715ed086a4bcfb0b5118744fda024989692cdf4e88876c2dd4
+e1f3dbf5792893854a5c4495c99a9e9e2410ad797d5c79d940621c6e94fd03a3
+3430a835efb9f316b5bcc5905c5641e172028e707897eec727aeb1d4aabdc614
+289f04f21ba7b42948927f4205312cbda1cdcc6e854a270ceb10d25c86f0cdaf
+43df00be646e8fd1eb14edf2a78b8d9c82cc65f1a184deee4d9b69773cd0835e
+96572c7efa79c12f0cee2fb8a213f1668e4b3bff53eb3b1ac75a9113b0a2c59f
+0d97c2a11854d03024da8284a37bade845b16803c3c7ef22c7a2bb8b48822be3
+0bd731a05f70f82f3ed32a4c93df6a077b356c6ae18da5ed6a833533924129ec
+1022151883a520edb07329d837a4cc1c12900119195fa2e7c4e897a127e1b5c1
+3acba158e99e58d905d785c03e972aeb43652f73eff76e1201c418b5b49a1750
+5dc5d4619dd82303c0eb78d9d7c7fed9fc6b151f51c99abd19e11325e3870e8d
+0b8bd208d0c91c619ec3848650f8164668829630d82e084d70621244f0744cfb
+eee9df7accbb302b189c894b83229b262ae98e123e4c2d09050b8c05d9c0cbf5
+7570b8edc513fb89a17438375c328249fc7665a236bd298ac28124a5528546ec
+abb12d2bc6a0e84c9c2894963ab7ba5de0b1eb1bf646dba5ffa8847be6a3ba6e
+9338812154ef41f1a360fcb70b6d5002c0367ad9de67124695f505cdb44c2eb5
+ec9b777bef2106a91a2660278d22cc870ae9ea9b69786fd5a19ade03e3fd62d3
+a971b5a7cb36862b9bb887188b16863f0f67bf169d9a1b9c9d79f91631c6b6d2
+f7429641ab9e63f61405e488e31cb8e5c280a8be4b8a9c7b749e332d0f8e69af
+9f39262c096e19ce3f575c0fdf521f27f3de51f7e43618808648f1501adbf731
+3564fa7a6834a28647f1ea6249037954692812e175c3ab19686980241c83c38b
+725142e0a1eed91794da728f2ee697203bac8a8ef89d6727b062a633acf5f421
+e88cfc3773c222086a4f3df343d7787a476780a9e76f45fd2b6c695e4c566770
+11193d87d8d91f00cc341fda0452d707612f67f17b4141fa5508dc25f425f588
+eba94fd71429e9cf88de014359ca7bf1558239f73550346045bfb0f9191cc62f
+3cf18b3ff4186f45e75d40c21457c04a4032af72b1a516c87d5eac997af773dc
+a3986fe58f36d963e932f547ab3cacc23de27cf46aa9c526be7d91b268e4bea8
+b9c6ce1bec45ca2d1c2915e56464e3635925ad588096d5b878cacc6d1de6760c
+c9f089b545a61efc369e0a013402bd79f5bf226963a486f4ccfb15a8890f0826
+7987b2b7f9cc5a032bc2af3c47feba5aa0676b67e1f32a0b3aefde43d398f267
+36fa5f8044b4ee5410a1870d0b1a4a428000e6d8c6747abc9bd829634f974cd1
+b940afd59d70ce8b71684882b458aa843cb54521788e8667134821f15b1d46d1
+0abb7ab9c707ba404e38939921e102e87673911eac4a2fa3e927adc281de25dc
+120b3b27a6fec16ef759353a666eb6face841cec02b0be47bb13a47526be0363
+0cfce2cab20b833b2f1234e85f09c3b1064e420c8efc7cd8feaaac20d79fca95
+571a319c252c3f9b2dbe95ae24c86afbecbefecf67e7a78b9845798a4db4be18
+c83e45cc76ea38ecb667e93e5b4618ea231376f76e032d4efc69a9ee4eaa02cd
+87ef1af4d4d95e09f7768f7a59320cfd6afd2783cf8461747bacf7947c717585
+cbffb3f64411c55eae7f37e190e30fe31ac514a7781f9b6217c934221202b253
+0a19e6ffc537649cf82e0fffbe4aabae35e3471e6f8a60b8255244cf8a0582c0
+ab26eb
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: MSBM10
+%!PS-AdobeFont-1.1: MSBM10 2.1
+%%CreationDate: 1993 Sep 17 11:10:37
+
+% Math Symbol fonts were designed by the American Mathematical Society.
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (2.1) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (MSBM10) readonly def
+/FamilyName (Euler) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /MSBM10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 82 /R put
+readonly def
+/FontBBox{-55 -420 2343 920}readonly def
+/UniqueXX 5031982 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a
+e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4
+d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828
+e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4
+7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80
+523f59a30d195fcf9b9fce4ffafc6d56491bdecdcafdc988206c5a457a19270b
+37d0ab776e03eaa7eb568eeab6b5e79dec03b0dcbf923a2aa8e4f4deda2cb043
+858d8b430efef0ed914a80ffc9818aba0fb30dae3694e5b31df3855892d59b89
+7f82ff79fce8444c7926ffc4ea008e63bc518936c9098afc2d1c14030a2c15bc
+c9285c1b57e80570d2f6301009e63d9ddeba44e3251c75ca9616a2c5de9ade66
+1a15db37b40b67c1bd71f77343912c62f47dd24be0e03dd833ea60d2eb020407
+eaf042fed30f0c2f01956c83d46d982b50dd979c2026ed5f71979dd98c9c1eee
+25054000a5eed5ce9498b2cb59a7ee55e0538ab47d86e69b2ac79229c8c6bfc9
+3a24e822a2f1c9964fe630344579a25f66646113f73d1315c447f070c575de76
+266c6773b01137e4a039df5e4c2f199e8e3396ef9fd001eebe090e04384c4089
+ec9f13a07ad8733c6af775f432f154ef50ec4477e08760c03c006e4d1eb1c7cd
+acb8955ca4b0d62c7de046ff58d431bb9883d28586552c51809e3ced4dfc2198
+b97ad9e52ea33c91b9e335a80d9b77d3430e0487930f992459664abca5dd9177
+150b0fb502fbb04ccaa94ffe2697ed07906f95fd98e7b325bfbf10ea6b39fd76
+c1e5295022cb39e9cd471b7b0b3f9d72da99deb0615d35cc22f42dbf5cfb70dc
+6279fd520d99f32201abf25e621cfe1d37961d9c0ad36ef3d9264c547638152a
+be30812eae30521c3c775adf1959595a43d8a9c4e12d9f9ece27a0c9b5f45e38
+8e26a39cb0ad4e25ab8f21b25ad1b106ed22af7947ea8ae4dc17b9facbc5e22e
+89a91b046ba4cddde69c1997fa7f4cd949ba3ac4b6e001475daf165b9432dc70
+6e30aeead8cc342d94b20a4045a331175655d6aa279627efc0fb53a4ce66b68f
+a45b5765f0c1368c02c39418366880efada9c81e9dfcee2a9443eadb1c3d2644
+736aca103a5a3571f285d37f28f172cea414b1a8ff59c97990a065817703841a
+cde9d9f92a1511564aa7124acb4d690be1be46bf1e2f05d1eccb8980e1c01e0b
+9ff57dc4573f9a105b96073d91b65983fb3cc0ede3c9eeb72411ac9107c06c87
+02d1431267a919f2f34e4880c3ff606a8f4c15b6b401a0f32841385ec46fbfb5
+70fc46069ec8c47745ed68a8af084a442c8b6c5699983acee943dc23634147ea
+ee1d861307e78a8dfc3a913acf76c67a802d2526b4fa06e98e4f461689a91c0f
+cf231549abcc99a5c0bb1d2d085c51b5a991b64e0080950a3337bf768adc1fb7
+f1b787042f5f0a6f5b0abf6b00f0eb51443b1fa58f3dd2ac9146c3f85d115412
+6ddb09fa4c28b69e723854a59b41008622f629c993633a38e8b06995405564bd
+2a0047c4ae6d387d0a0e60e655ebd5993957d10d0b9263625e1b9d93a246f9ad
+449e44c53963ef9efea23d0c219515a65aaf2b4ed699b7bd075af0b592adfb12
+a1447799d128290030dfabf8ada2240e954d54745b774d883c7288882f6c926e
+c00692b953c002c4227b66eb5120cb2117bad0a89abbd5c604ef284311d74824
+f44c9865eb5c008ad4bda519a3e278a02f359d41
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR6
+%!PS-AdobeFont-1.1: CMR6 1.0
+%%CreationDate: 1991 Aug 20 16:39:02
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+readonly def
+/FontBBox{-20 -250 1193 750}readonly def
+/UniqueXX 5000789 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204b031f3fc6c13d7da7277a94ba
+018e9998b3dd888011a5d7c4204989f30f908b95533bda845746b673ab71ea57
+65a0d14f4350707e47c8276305b28513cbe1bb0dbd269a53719bda46e536685d
+df78ca0146b6b93e760256b74d939d4e35b5e77238f04c92298dfdd188feea30
+e053eefbcbb52f2011772b3aae39f5805597bbc1e8bb75a446ce014030f4f2f0
+f49f9e962ee4a1024a746fa92a3628db5270732b54e43fe5ecfa524f127e5fcc
+788e77e66098336ad67fe4cccaf0253272d5df79864bf4b734cb9a5859d557d8
+bc11b8e00221ebc12e97de4b1f466ead83a4c894709363bca9040410a52d592e
+34ee40cc7e5efa920546b981aa659513a24b1b85c221a1875b62d0b89e57a368
+321b8043a5b094e0379760a443d632892b14ad6d19dacc8c78093243ad67e6a3
+08e56e6b68412ee690b10dac6e17708754a00d51fc957b500eb80175716eef4b
+2ca1ef867614659bee3f2b7319e97b6fdf1efc847bf3cee3156f72f21751da8e
+5fb6898919e6799820d3de0642d756e09d6fae4ff08dd3deda3173bff4bb11f7
+9109c97ddc05897af709ea199a90fcee8ce4c7a3c15b18170c41c04de2d3fba8
+f34296a95b8e1e8de3739b17273f8f2c85e914615e8eac5e8bd2387ba3b1edf4
+7968f06e2067d836d0f9f3e085cdfd2de06a62c81d786b304326f7002e83160a
+36598589228b4dddddc43c85e1d126f8fe81b828028e26317af5894aaccf4f69
+6301e1a9fc45935d8a414957f08febebbc3a72ada80f101e47447d019ade56e9
+f4fab969bba2b44e47399fedf5caa1bcea216d7ba713d523dc2b1a89801ad4ff
+2a26c7929cd309eeca94b69eca57ca332db286f97602a69bee8e37936b9346cc
+0f6d2e421c4e5512be432fce589448f5f84cdfa8f096528c8dda6e1db031dc03
+5e66de81a9d37e3d450af0aa8f8333ccb9dbe51fb4a5502fac0a0abb8dfb643b
+2d3323cfd843331fab1d8efb4557ad4e5bfe7801b7f7c63439a617535087a1c2
+8fd075da8442bf40379354ccd398a111fcdc9d73c3111b31a3b69d2312b6c377
+ae21dca966b5e4fc26e60405fe586a5ee1c8a609e245338f75a891c51463731d
+867a80d846e317122d616e4766adcae7c5f0a6151eb4da1305969cd321bf6434
+818eb8d67bff536da6043e5d8bec3cb2a48fd565fa9e51a68fabbf533d376351
+f7c12874628ae554478ffa1cb9de8dd27edb02366c415ea540b9b168507ff660
+57135fd2d0e24550420f68ecc804715f65d48434d8f6ec629f01e41172939b1b
+6513f142de44863de3bb5a56dfa8d2e34cd4f999d090e189c8fc8b2b7eb2644b
+e5e8a0bedac5914d70c4384ea11909eafa2fe7012105e423923c8f6aa46ce71f
+c6519c4dfbcfc84fff41119db33a9eab8dc061250b703726e05bcc86cc5b7577
+57fa2f13f00eea413d705581f0e7c72b8b7f8ea60814aac19bac4aa062aff864
+b0c96e3165486ba090fe3154ac42d6c7d520e8678dde7a65c469b7c5ab1f69d8
+25a789c3f4897b763da31f99f6895e5d6d80f4b15eb7d7ab1086255ae04a1cd9
+7f0f0e2d7d76849496b78541a28ee991f9a3325147580aab26d90897640bb6f1
+a84860aff36bc9e60d9899770cb607702aa9f71f28ec9e1eb3d373851131331d
+916b9d8eaec1225101add4fb091a56338d2b6dac4934144c24a680fd7d322df1
+dc246a228ac75a430384d5f91a1e2def9a3decce71ab09056601550e5a9beb81
+1d3d3e602bcbf01f991ce66dabfbdca501c3e18527e53e24daf9168f92e70f08
+9709b5ede3c0f3005b8f6302c97043ebdf163274624758925d68012ef835755a
+477a4f7cd66b7540563a13047e88f063674888fd87263217d88c3c31abc5483a
+304d632fb06eb2e14551cd53204ecd350232161b8f2982a744106de0fd09b45e
+807fe4d555c4abca492cc0c09920b02a8931454f2d1616735ed9962609b5ad15
+dccfc6b57782e550cf651dde7654b2db575254c2e187f5e3b0b09ed44079ddf8
+a3f50495a4cc55bef95f2ef51b613b65ac3548a00c22332ec7cfc0e6831bd209
+49600c0e7ce0aa57a7be7d91f131eb06b8e1faca502f13502e80ab63a17746b0
+19d8bf55ea0d68714d8a38ba2cc591b75a5172cd18aaf26f3ae519d5ecbc57c7
+5335d7f38aaa8a25256cdb28f7dde3262d25ab3327ec38ee5a9e8db68b3c520b
+59cca53e002ebdb4de62566dabd4c8507a51a376bb5cc8fb19951566328f3718
+319b30033c27d88409c4bc6d10d7a47221257ec700ddda6d2aa4248e4c1aef4a
+6ad488bc6bd8fd5241022744d97947c680e2c3f1b1266b4006a0687aa93f550e
+23e9862d28c30d245edd3442001265c83d9bb8d3a4ee2970da4e2853eae8c019
+99c2a660069ff12f3371f90a12a2b767bfe17091a709496a35a694e43cbaed4a
+04f0566be69a84f699403bc1ec40b19f28fea5cdf4c5bd62208f4063366c4877
+6d7d1656758d24318ceacedfd4fa70cc76502cbdeb58a8071d559a9c43e4794c
+94419e7f8f15635ebc023721471131f69ec35123f54768fa00efc5da8779058e
+5d6f53415bf0548f1a231a05a4d2ab60fd9023dbdffe2f7c6d29827b7ade2a2f
+1e4400b11cf8864cec09b0b74a43dfb2885322dc79855c9048681ea8b8dcc65f
+29360a8020e0db02bbd28bf06076dab63c480fa99c4025f2a4671cb03a55b8ec
+83c19c9d2cf8cb59cc2188a0fe58d00471f9dea9a832cace08caa73a983f5992
+fa55608534f91120079312ec86b6f9da938c4088f1b5c04a5e169b61bd2b1750
+b31254ddaf9ca5efa696fb2e53ac1edf2a442a52d1f930a207439c83604d338c
+efbb3045d66e1c0599c4fc09cec289f19b92201b4eab541b805909f2e7673594
+4b41da04eadd7a8ab4416704608a280930917fa81a2ec1b0f6fbddaf07344e4b
+256b000dadac578b6e7c5250b33750dee374765de50eda0d4dedc835cb4eec07
+447c0fc1dc70ccc6a9674a07fb7e146ad5aa87c71cfea89b2c730772b1849311
+bee0567e1e275f23fb745ae7fa749dcb21b0caac6e711126a102d8c2bf87c8c8
+66559045d5045daf826f2dc235878c1a5c1bec2a6108ecad8af749f25705a47b
+9ba49b2cf4446bdb44ed5b9ba4c198c00a4967477c69a5983c7705fe5e089db7
+a57dc77d16337626f4739a821522f8a6f9957410d034ca3a09fb3e47ca962a34
+68e0d8e1b7111246a34e7197470e92debe6d15a1577612b4ab5b5b580407c1fa
+ca33eaaf6a16f3e42e3f43f9e54a272562965c4fbe5493c111048a019ac54a01
+a6acbe32cadaebb926dcc2c9a0e8adbda8c5dd2f4032ee56f6c24720b484f5fa
+b8ea7616808f8871412de1c24d44bb1324ecedc653719eb70399695904e0a052
+b2ce2b09770f0a465c9fbc7f2105c0d586da9b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.1: CMTI10 1.00B
+%%CreationDate: 1992 Feb 19 19:56:16
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 97 /a put
+dup 99 /c put
+dup 101 /e put
+dup 103 /g put
+dup 104 /h put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-163 -250 1146 969}readonly def
+/UniqueXX 5000828 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3ffd20326947b1065649b533eb5e9e3
+a88a87fe987918a687950b26f647d6e08bf14d983ed1d4a8ca1e2da8d985f944
+2eb916f5b6ed0697ac7c33e1e36a3bf460d34ce45f1631871097cb04f18e3889
+4cf4ac1538eb19481311d24fe3be7beaa4a3730e8b4831fe59d6d9ce2e46116b
+629c7ba2f9ce3ecba2f43bc162a5a077ca1b2882a42afdcec3f4b75b5d63e0bc
+8e5dc95257766d8ea467ad9cbaf47be60f797580cced6884b3a68f70c91f4fdf
+80fd00ed9139e7f480dc3a76af72ad9b434187730bdfaefe4cbfe5c7edcaaf24
+9204fd703011932e5a3c27be468b7dab69daa18dbbb6335ab8ddfdc607961c7c
+02582763fa069d43563ba17704029945cf42fcb19cf78c51df0ec4d851086d43
+c1ab38e865ef36865fff3a08b01cbcb070ba4893f7482dc7819ad03d337e520e
+7d8cd83bb8ac7aff4df36751f4f12aaaea2b6d7260c09a26e987c904003e0723
+7dbcc4a8e4e85cd3259f40d3caf55c742cbb40ad0db1044c20a4f122a63f7b81
+1d945bfa69662189ce4d089464d2ead9f6ed60b581b04114d5d45e97be27a576
+35154e9b8464f2a0df18da855eb51b8f64d3054b0b2e84621f025a0776d16fed
+b988a43d2d64c32768dd106b9f541ae8e68ac0bb7399e16f4d4ba074b2152d0a
+4e9b5bfc21bfa0d531e28165e518ffc054dd4ed0d74eca079d20e79670419f92
+e03bcbfeecf3554d661596f6f29e12170804d15a250d917ffe7a8b6e8fa53047
+1ed97ba56481589a65ca13619129f1e26affe6c22f0c38540f8ce37efb6e9e9b
+60b51a5a9cb4454fd7c7f92f2f9437159687ab590f35b946a54491a7739c9269
+e0f1fb48b129811c82edb3171cbd5105fe65906974db8a7da92f4f43dc7f6b36
+6981146d86d23613a0b38d9d6191db9fea0172e982cb1cc50e382f69da1b377c
+1be9407f88a2a761b56f398467a057f35d18c01cc377e006182c891ec80272e2
+2e3a5c7123cd27eccdc87392a9fdf63bb40f02b7649cfc53ef933c6518744cb8
+9cbbd437830ef5b1d58b00b67bbcf4426dc1e6ef583b0b4ad3aebd741e3ff0f7
+29ae271f032019b1e7268043fd215be590f9cf24da14a90f1683afcba8006cef
+5d5632c2481fbc1bd8224e8952debb7c4596a237e5505ac143180956ca1f603e
+ec70cdb4a33e1c4ca1744adab17c56e805c5a53b130f561cf0b9bfc0a5c7fabf
+7f588769860fcf171d1ec8dde503be1d5bc14661e0c18b23bbe2c5d96d657554
+30718efa428b8ba04e7e1f3c478cb4b55b93e4fbba32dd912d6f11ae7a699cc7
+d974eb164f790dc3ff4cf05acb7766fbc362dc119dc2497f02c8b770bf9603e6
+6f3dd41f71c72503ef3b6b12e7d0db5bd1c45d02d634b569299ce4862c599817
+7b761daf72b63880e224b778032c2f88b0c9473af5c2f545f99894c29fa4248d
+d9a60b1ee2bfcd37f8fd2bbdc6677807a1d2870b9f7305363291a5c4800c99c6
+3782ffb64d5e1396fe6c37a5473e43c57b6f1ba3c4bcd12fff625bb9a8fe5ff3
+b03ae4e21ebe139067f4c0622b49968445e354d5034afb9e3430879274358d87
+f6f642c1c6377c2a30fbaa77b1396b1ff026de1c41f8c239afc42999e4dd9c52
+99247509941ef2149489f8aff296c7a971f66ba7d980dd86fccafbd285127d02
+436080356ca712baee9d608ab793519b4c3763726609836f655f07bb06b571cb
+559e734a44819e36464df2eeae6e3451a42737cdbecd609a8f3a724b6a0d90d4
+fcd13d1f67759764877b86eaa5b5d3c59a11036b8f0e1077681906a3d681a850
+aef44a23dbe9e2134c910a070664d6fc0bcc922c8521ab6b85ea6d806bc3b60a
+ac810831aa4360539a91a74d62467e50814cb3cd26e66a46e2a3db462ada8a03
+a4568c108196122c143339d38c107fd6ad078bbd957b6d08a0f09eaf96bc628e
+fb7f8849aa7a3cbb79a20de4480a65fe846b32f99e982b317177e4eddee952ba
+013c66e6d42f322a7a7a14ad817dd6343728411c37cc4da2e1172dbad601d9bb
+6b9f057a7128c46ed376975fb3b13ae218bcc33fef40ef3bb997932c463fcc3a
+32d364c240472664e797297af1f5b9876bfb4dc12c8c5db8be6bb8259766a819
+67debd0d07bf3b880f1bcf496a5f3175b81aa0327a5d1bc6652766a93f517219
+871e9f95cb20b5663d5ff12abf8f323fc7ef7b5a8f02d6fc1aae87597df01451
+4b05f42542354055e8ae9ab9d5b7797e10172004674ff71339c81ecf634c43a3
+0d088a67c715092d269af401735752da0dbb79929b57dc59007040808f1ea93d
+83ca9eadc234987febd6d11c601c4ed2e11b8a9135f2fbd29262bbeacbaa337b
+222f072ff8e624b60b220c2342d732f9febe13ea96bf5e1e4b4b14109217d811
+856d61fed808156442fcaadcf1b34e59c1797b247f15b6ecafba9b396face0bb
+0b72a4e530de4155b2c4dc9554828af621ffaca77d0a1bd54d775bca493b7b2b
+9532fa1b71fa7f5653260262d61f544a4bd3171ec870df0d3d9a338a93e314c5
+5eee1ea9db9bd8fc6251cf56992039cc76264c30f3e51473d0f8d9ab9f1a8421
+eb0c4805db0303542a58daadcc9eaa385002fde070897db5796adbb29892d830
+dad651dd679778c1c7532f241cddba9c8edae42a7c4b32441af55eed658cb994
+78d7907e06ba3f23f269f04c27f3a009b3ec8d9a5c2e60799178bf62758021b7
+1064676911b885613f7577c42d3892af19f81cbdda89f443643f7bfad232b429
+7d18b8f2d013565f6a6cbe0dfd04aa4afe4a7a6e52ce365ea7a11625592f3ee7
+5858062c432a64b7aff0f154f84cd117d4fd8a6946cfc91f257f8e0b1d962eec
+5e8fc71ea9a655265de02110f214376924000b887989385e77fdf109bfa8bef6
+66edbc706c1373859a3b70b21e4859ef34f4e48b09ff42c0c5566e9bb69c0224
+7c8a7f5fbf10da610a50805dc3234874f3e0a0cdf9256514cc20aaaae588c60b
+e59567062a197e1f132fb42cb16d6e1db74f5b55ace111beb27290baa0e3b2b8
+39b25a6ffda87ff3a44063ff09e8a3c3b57fab3a48258c8c3c9b1371aa9b3eec
+8e0316f408c533a9cd27621ca5b4470eadc900a81661ea62525e7dd9bf8fd286
+67ce1d5e5154fda3df8a80710203593c17aa1d2e35cea7bd5b03a6becc6f673b
+2a189354095a0b2663ed911e6f5855c8d54419f70b95ced99d649572972e812f
+a1526dcf2a5881e00c6e4a0dd5a81ddba97556784ce93f3f7320c6ac474af4e9
+675da6af89ceb9b922f4d9eb4335358e7f8b7ec2f2c424fe7c102afd0622520a
+c7f3877ac4c9c79681cda525b2ad460cfc67e9d16b599e56ac8cfd0482ef80b1
+edecada5f85f5d7270c55ff4ff5b11c51b094969726301cbfdf174924ab354fd
+8152400b3a496dc874d94d171db5225e707df9b4dd21423b4b7ad0b598155907
+9a0969942bbdb688be52907e78ef7bd05e5ab4d9cc18ad39827078f64e1789ae
+c6b8ff51a3a51da872f54fb9b077cc6ea7a896dbae321d6c972d0caa42abf0d0
+47a9c9c3ccdcd362612353af131408f5c989f7bae165a8003ffcbcda298dd2b9
+ef2c544624db578ecd5c6da2bbccc2a03b67dfbc6298c50809f7640394fd37e2
+ff6f356dfdd683f9f879884fbcda8ad608b8e3bebe3999ec874527eacb2602d3
+0bff31fe6ddaac46adbf1061568a4311b05de8ed55022eb207734193e38751bf
+5c212e3a8074bbd0ec4223dcb9be0857695932dcb3dda5997a552c3f5c4a8bdd
+96e48a2c80c2153655826bffa6a55762c496afc48baa8a4d28105f3d82feb32b
+dc05cf301f30142ee859f87fae10c11608cf66471e7fcd5eeb2b242b3e5a5521
+fe78fe5609f5dd0bb3d2b147fe967b586ac814d29cf0e29cb9fc1a1aeca5aba2
+c20816abce62af1cf0573d7e655feadd0f217f857b3ccd36d21eccb06dd41907
+94fd288320dd710c6e7e1ec6a8e584d001f3e8533b1da32baf624b976a607d42
+0dec8b6558337e87ea1ff32b02728fd29f50d3beaf4e9ff582ac5fdb9a4307f0
+e997d4911a2600af23627fbdf85ad44da3cba7046b75fb849dea0551716720f3
+d04278b067479635d760904a905a678cae5874dcfad2a3fdf11f32e5eba01722
+ef6031c74cbdaf84225a4bc9d7f4948bfc8df5153b349ef50283106a2a0536ad
+42715ad34e273b0ca2d3d0bbb426d3db64ccb8dc88c43cb3479541cd00654b39
+187695fda954312c5b6b7b82ce980e61de0b764cb600060c95ccfd783a2aff73
+788a0be52fe12248e96c002d492e755cd9ce913511ca1ca1636c382ce472fe14
+b891fb1514872b2b9844f5d90dca3cc690e7d5c75ac4668c01bd25c5d60c528b
+7c78df784a45a87fa53f641aad1551c722fa35df468bb762d251d57b46397964
+5c8aff2f4cc2e2af1c2b554bc007ed5734a9de0bc4c3600bea05708eceef01b3
+2bb0eb54b96f9c5c307e1f795c8040b1040f3eceb47b0909c0fd17fd3b05eaa8
+7e0ece3fc89b122b6989350934a7465cf46861e8943417f32c4b0c37946a6715
+d8a610300af23802556b00edcaf8a357d3633ef31b88e96496bd5f4db735ef37
+d13b277176f6f0fc18ce103fc425e11bda8b450b255e99f57df878b9df36b7cc
+b0f93213a3c9635a5773cce5bf6c12a5fea060770f1dc93fa2f988140e51de7e
+87bd17b75b04f890ac0eb2a3b1f1fc2ae18acd4e847c70d2489e182693d61e22
+b87404e994698e9ae9c037c6e8babe57360958a1cf252b6150c1d9896f2b933e
+9812b7c48a64db6bbd088baf586752fa46640a5bbb3f5b3239ca6d5b346bfecd
+8e78f3a8883019516b6521258a93d029bab6f98398ccae1c7976ced403b2d5b0
+6d5219eed714dfa62e4b6524bbed23ff3fb38004594b64de53ccbce57f193471
+11f5b7dbcd6d251c3f40adef75da542dc892dbe07a45ad9d3ba0ca2227125a00
+3cf38786d05c6332b124a000027678a9d20a993f86df6cf02ee1107c8f25b8b9
+ca648599cfb3a729c46e084131d73e5b8370fa00d3d925436dc482b70a086d38
+4a6d4b1e32155c0e62eb8bcce4d57baec2ffb763b920bc97b1266e4f8d131e28
+766656167d25983b486c6d6617d1dd25ea4e314510bcdefc6458f17085fec812
+90ea9f97ed9ff588a729d1b64fa0f4bb1016e337a71738ca11fc47ea8c141b3d
+ceb000ba6eecaf60903585d95e89eeac19ff7cece01ffe6e4e5f7f35e8d9bab0
+a091d51f0c29bb1508a9c6435d02983f963e6dda34b3b3d865455c3965d6dc11
+e65affc05d6139892995bbce733b96b634ca0d3fa43a14e7de967640134fd674
+93e076cab82010e2d4749db72bb933b152b0da6129e076ffc951f04672cf4a05
+f71b8912783adf8049927c9785e86db9f89679333c7cf70b28fbd88fb9248dd6
+2a81461d29a3142d59ba52bd55fb969f496c50174cbb243d1090fca382e1ba12
+1f49a330c8669d341dd7c8f34223b2ff766f4c45a1fdcefea6f2c217c932872a
+bee0a178e01cfd7d506f636fc3b5940f268faf41940734807386cdadff5a56d8
+a8ce4b598a55a840e2798e30829d2359a6c9143be1f3058754686856aac25356
+93cfa5e55b5d8fa9671d13390a8b1e637000c199045d076c203ca6adee3ea396
+2e7e31f451c172822612857868ce11728d287c26f4710417200806c4e30cf485
+06c6ffc4e621e6430c3d8d4d665416b5e628cf7d8ef65537142bfd9c7cd906af
+ff77bac65c244b5cd43173d2c527c288aad43ab5be1b503a3d2a6b5c9d44231a
+1043727b7cca242364d8590ef0ee271cc3359e990109d69dab6f53294aeeec05
+b11467dc2f0929cc45d2dd3afc2a0ef960a2e07f397289b13f5f229b39a64db7
+2da10e6e283892bd67597519e6d4313e594dd094106047fe392be3ff4a4073a9
+1041c48005ad4e500f6e98358682f5f21fb3bdd5121b803d458d5ba9efafe6fd
+281770561aa7142289e073b31a1f9698731bce2df08924a099d8d73aabf63b2a
+6f7298bd85e5324bd22ce8f93aef0ab64b286fd0903c3f379003838a2583d769
+45600b235e7e76790c30fbe64ea026b100afc776c72a8d7d5bb07896c26ebef7
+c04f3674b6eae24bcff672baf3115f64a95da5e2a0d3cfcd4666cea083c8f968
+ab7061770ee79098258d82c78f61b4f49e3c2a47b33eb6a07106007e4b376aee
+e925a6c68c644ebf46ad72d7c977d2b74caf28ab332920d25ef81d53ed7c234d
+24036c90e4cfdeef6d45174289f0466616d3028e13e2d2782b3db7a7d017d73b
+2e42ceca0e76e28379f2bfc328d4ca6a63e38f8dc3ca13198eb1be5f5b6999b1
+29b8176db96fc9b79b268f5d625d3f8dab23ae03b3d24eb5fa4c4ae1208b2553
+0ff4473020908d067ca110
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMEX10
+%!PS-AdobeFont-1.1: CMEX10 1.00
+%%CreationDate: 1992 Jul 23 21:22:48
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMEX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMEX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /parenleftbig put
+dup 162 /parenrightbig put
+dup 183 /bracketleftbigg put
+dup 184 /bracketrightbigg put
+dup 189 /braceleftbigg put
+dup 190 /bracerightbigg put
+dup 50 /bracketlefttp put
+dup 51 /bracketrighttp put
+dup 52 /bracketleftbt put
+dup 53 /bracketrightbt put
+dup 81 /producttext put
+dup 82 /integraltext put
+dup 90 /integraldisplay put
+readonly def
+/FontBBox{-24 -2960 1454 772}readonly def
+/UniqueXX 5000774 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a
+e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4
+d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828
+e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4
+7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80
+523f59a30d195fcf9b9fce4ffafc6d5649664203ab24acb938d58d246707ffe7
+d62f04bec4b70c21ef75beb2b812622b3c74e969d72d3cd11bd7106294a99caf
+0b1629bc7d4de6b96ca82930831d64575f23f4ad06a0e45e315b1d392411be8d
+6d73c998789ff258a07a3c8c2057325784514c845500bfd1a971310cfc11d41c
+1a167dbd5ff012c60add4e87325f6e5299032a839de65fb1473a166aae1876a4
+414a434f22c1d241591fb36f857df6fa930608750ffc0c54f44994662b1f00f1
+400bf752ea8d83ffc4cb77a290bc2d99981ae59a191748ba5c7ba1a9d2583fd2
+1398452b6ff5d83a059f7eadcd2ef744e9dd22bdf9c79d049bf06835e878c32b
+7765c69bdd8ef4deb4ea7cfff4cf9354a4ddffa689de961d16772491c7afbd7f
+ffde42400764c68e954ee5c455a5687959829bc3b319b2147deaab3628662c80
+30c5e02fea09609abe4eaa12e217bc3af673f1bc36a7039eb13fcacb4218fe0f
+c5a3f9452d4edf46cc91db67b624d4f2d37502fb9f11af4da18ca40b61097f95
+d44329375467ed13c5cb585ec53f62b83ef9502cc755af44bf32b87b8ae9f3f2
+f8dbf72dab90acafbacd280db6aaffaefdff6d5eff26669bac56280a950560e3
+d01714ba38659b0e4e28bf8cdc1f15ff7e3ea9d95a6afbbe3d8e6905aa6d531d
+6b6dcab89e2036cc492c65f76ddcc3cfcff33fde3d9ffd10f7a90530fd5c7683
+4329baa902e701ca42717476298c9ff511b1941244bb1dfd0e5cab92a43970cd
+1bdb292eadd055c97972844fdcdb0aa06401e7b2632b9d134f96bce0064860f3
+9859da7a9a82be0a840672a1331212752ae1b521b693b384a72dba8d37a86eaf
+a0341e7fc5f6ef7a8c566aacb91e8bf5005c18837894c4eacff41dba54e071ca
+83fd0296a3417dccd62dfac26c11aa2febdecd723f326ce49066b57ff80327ea
+fcb8d4e62968fd70e9523da2622c4fdc37e45014a4f24c61a4226596423a5f38
+935087033d5940d70ccfe1e756b76646a42d2a0f5afcb8528f4f6a63610702d3
+021f33103aa4058da242801eb696103a66d672c1e946b63d063be138999e873a
+45586c0cbe193523ed909173c269225097cd2d41c8bb9fbacbd6dde6f58adb64
+fcd8c4b0f98ac03becc29e36b1a0425d3782ccf3102c86aed8ec4e2a04594325
+1a389f25109396d60d1862d7bd21870d7b4c195e34d4b71cfac7208f5811156e
+c9b6f92dbf981860a399eb904ced155bd04a4f94bcb080f3b007d0574c53c57a
+7e6e19bac96a443a21d512868d16c4369a870aee081a1144291d17cbe8caecb3
+a5054b29e15e6811686eaf4e60f6685f64b6842939197b3a8c3d959d994dcf54
+9298742a9949d3d6164cb5f8e13f08c4cdd98a81b0aff42f79bf64068df035cd
+7d88eb8b8f4004c791d86bfd8a069aa5443f80ebcaee014d31ba32ac524fd9df
+8dab905d95431202c6f45dd1900987cdea718c877002e81e77fad89e319ac7e5
+e03cb0e89725dd64c03d668151751d0c0423946e40496795d41a20c1412ec2f5
+a52caca81df400ccef7c623f86d5bce4edb0c920f7701cc301f3233c20f8eb4c
+92a6fe08f6d6c51873484ef622bef4415c986fd371aa5fd170bc4cb48da627ed
+6408f846fd8dba022ac0d4b22be8be94dae810e302e7b1c81d0f0166427b6d13
+1bf4c97c1915a4691d912f190fbd465aca87d0b8a720d063d97962a41f05625d
+ece40392677c211fc52a1b1b695171052f97767dc449295d1a65b50d6ecfafbd
+f3b7f636d86360f0a3bacccafee28f2487b5954b4f17e1f26e37c2399975109c
+e60a91efcdb2ff74ba98b1b464fdd44b5e94fbf83f876b5aa2a072dd5e90a50b
+ec78b262190e634def1e76229a33e4328a266cea262721cfe8c6b23cba001718
+d3def4869aafe4131e0a8d7620bc8277c6173ec1fb9b99692d8b4e415a6e66ba
+82c820fcbcc62ba7cacceb3a23faa606394ce84a080f46862ac3a10ffa77d180
+5bfc2a17827fb634e46546d52047330eb8db680cc58d78723c86c850d70ca7c5
+8accbd5c49d05b85c5f23ff4d62e5e33f7e81db85550f3a929f9e5e81866d15e
+9a661d1209c5377da5cf858a31bbb8730952b450eb30e1cac5688a1633cd7471
+c143e320d2f05cbc119d0f74cb53a01fa90da9c97ec507eea793e247de9f4631
+8ed8c3feeefe0f49caa1203e84fa334023eee165bcb910db574eadb8881fc2b8
+abf31ee6a5837d4884d02c4e73bda32cd5ae522ab5857ad8533de9cfb60e0313
+f73ee64c8e45bc0d5db62c26fda8002663176cf88b721c56225ebc22b704d48b
+a32265e0b64a665e993b1c073e4365927ed9a22ae1828dc5d9d37d80212d1023
+7232e6fe9644d16f5de592394bbb1b3c75f18aa87aed8f08a5ac08f9edc70886
+0035bc3dde6733eb0e189d754f1cb54a88eedc242e49a7fad9eb20e9b1463c3f
+091ec42c5345d1b44948d1e444578bcd643589e898900bedd01ade3c70dc45a2
+54f9436269f35e3fc369519d8b9d6b9d59d5ade5fdc9371f399bb6519cadf061
+19906e8b0aefd5f8b1b8da6ed78c4549582e530193bba1a9e06bf693ab5f2a0a
+5138c3bd86339490e8e37978f9545718f71d12e80468b3113a37d76974c54c22
+4b9c23ca81a6427bcda1767c5f42583080f29476b0557e00a83f9ad5bcfd2716
+273ad8f0b84812a93af9138ac7b416c91a5d14368e20511a1d881f1f53130839
+9257c6faf1fcd225bf29c3f350f1ad64481383c0c51e714e41a417ae4f2e504a
+289a05a595fb49f6671322f623200725f83d1222222991d54e4d7b746ccd6364
+f51eb68bfa67a8e61286f2086f4857fa583e4d2d4cd0fe7ec84509a3cdfefd98
+84d2fcffa8d77fd6ffe4144abb61f728f165e393f8af1b2b1216960bce7bcdda
+860fadd90c1bd95e9c53bc43533f689c720779115a6b8ec0ac2c529228bd76ae
+4b80f7f525b76c356be82fcab5da548f9997e759119c684a31e317da33023fa3
+99e7f4b2c2ac959e58642cf4195aaf7e116391539c991490f01b5e39d8f319cb
+b5e5fe5ad11b8942fe12aaa167c206511f921321e2fd947759faf620a986ae2c
+5707dd9a63ea6a309f4536c7e8827588012227acf40ee4c46e73d884436eff85
+81b4577337a9341a7d7f4247c213f9f079ee0f4d5e962f0327169ff60f8e43c5
+61764d91115fd9269ada5cbd8e0bdf6e050b39d4d9978235b0e8eade347aa9e7
+eef6f633b26e70d2489db3a645e3f4e046e9d5345df01b51720b50dafd573048
+b1a494091d7487aaeab3961de3e7074de313ef6047815dadbd3d82bb23993f10
+c92ec538e9d63d5ce54b4f2e54612977ca7ea705661a8d20d2d4a65fe0b83671
+cdbf9cd78013addebcc6a79ab1a12a117dd073b7b762230bead9b6d52eb652e9
+a4ea3184d25d0b9c1d74f4bb5089864996d188076b8808086c6d959371595cf6
+a3ec2e941380211ac5d3aa0b58503f32daef0d925a49cbfab15af014766a3e09
+beaf0cc7ef2b77d4dde8632aa3dedd2eafe9b47b829bc92dec5ade2de95df502
+07a9f5b8630c2810b9cdce779c3b227dc2212a425823181fbadefb
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 183 /caron put
+dup 184 /breve put
+dup 189 /ae put
+dup 190 /oe put
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 63 /question put
+dup 64 /at put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 94 /asciicircum put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 125 /braceright put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+/UniqueXX 5000832 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306462c563d51ecefaacd079732f12c29
+315e4b9623a5752c6f1d8145869e120d910b2644887cea7e30b15676a92537c2
+9d3aa80dc30082aba94b40990b82fb1a877e805e0c8c48f61e9f2edac05b944e
+e4d8084ec1d5cc517aaeec5b3ea379dd011eeb454cecab3ad2443c887c582789
+72355673e503affe0394fc7db31de364e4f56c24033c7df2265c56445ec63a1d
+5695a6041ea1b94407e1cdb7c5635603a4fd047e6edcaeb2d0da6c9e0e9396d5
+1a4a58e8fdc1578730f992435560a6e2d3e3687703ee2f78f5896389ac8470bc
+806169eb01762e89b6dc9adf857ead656620e2589aae722c37a2ed7a2941c360
+b067ee34d8d5ca3bf68db725614d936bcb207781f4d4ec2ac67b13a5ad161f3f
+059add7b5e3d904831e31c20c04546fae83ca93a35989e65c201756888f727b9
+7e5313c9870ec96e4cec3901ea03a5c744754485e7d169bbc98bf872d0796e18
+9d43b712950c3786257d8be06ab6080b9d9392313298327549a8a41c00a2cea3
+690b4a333e45aa815a64facae1c2b44640860b8b8687afbefdbd5b4a541a7251
+4ee7d3e0752af3e96a88c95d31fa16d34ba2f02fdb0088b165844f02611c734a
+dbcc2037bf741fdea7e8bcdc130c70c33772f777d8bcddf4611db99001ccff14
+d7af2bb05defc3480bdab312a0eff2f375afb4e0df2f803c594b7c93f71ca4af
+861ae1711932fef19bfe2f9b7adb69d68e5a70ea4d1a3d5bd85231b16993f65e
+fb37a0a823f0542f8c2340a073dc1be4a8347f9d3068a6435cd8278b0db1809e
+8af9664c2c989b9f16873c009449b6284b85da4dee11c96a05ba83292f0edbd9
+2cf674aad6ac1a5ff966ffc37e88a66048deed053565b55ef6bdb8c2f2f67832
+f8939a32442ea54f13d003494d6350a2864b427a9126a9c26a031909fe53fa84
+63b80c3ffd536c9a5dd29ceb03148dbc24c0033aec95c7fb4031f65dbd67a2d7
+0e6b0a1bd772f5450fa1ddf2a6424fa2a5efcf7fcf2260372574d7050bbf7d9a
+c6340019109b8f57540141b0b96f948d83e0f470248390518a6e881ff4511933
+1c274c98a1f8af8eaed5a700c5aa8785011be8b2a6cfdd0e35ddfa96332ccf95
+f9ff25733ebed67bbfd4ab734fd429f2e389124ab79d94802f2ccd41741ef75f
+566ad0184b43477ab5a074aaa7d5032d9e54a27050363bd1cc0fa3d7dd0c1330
+618008fab04093d1b242b34a624b4fb22b90e1bf1f3e030052312cbd45e7437e
+b00f079e154138a510686c845e231d38f64b591b0a6871dbfd0a5f6eec3326a5
+b6e559e4955e6ec14bd4c08907d10bd3337e77f3e95ab24c7ede5326b7470523
+1664c3fb73ca3b1cd256101b8f0e3082bb42cbc707bccb31c18ffe2ba5248204
+baaeaa4827364a0ac244a673cefe846f1eb7efbaf56df912429af20762a52538
+567a6f6616a63610ebc1e5fb3edb58febc36f5a600f9929bdc94a9c86182b26a
+1ad60da643e184d010e46412f6b79ac874437090ac9b9d5e9fd561a02434eaf3
+86c73be33289afd12e360ce919a278321e3e9946abe3c4d85d59f4ae94766844
+31798e97254186f3ef0012168483a500bf05e5a057a7a1d29ddc982648d248de
+07c687e6ab29e6fe8f053df7056e12ef3208e8d962fee97bc5071cf2e8233eda
+b368271482d9da24ac4352ebbd41a4b481fac65eb8eb7ba55dd0d26911c7c8cc
+71b478fb79d91cc76d15ccd1a72d8dc29ff2662369bbff20820a7807fc423d02
+8f1d3c334cb38591059256cc1fbeef36cfd5b5a17392b7536ab2a6bd6cf81e38
+ee1730897477ba75cef601ce69cb1bc8b773a8e0b7ad51e5d35233c37d6572fd
+2db7afb1365ce6b1f140ceb1349d281e5aa1ea84d32b76d849510964b39c5ab6
+394d06618352e8f259f2530db7d44591155cdc51fefd1b4f6f968b6ba40d3e16
+097c3e76e17347fd9e18349a304f8f77f2c6b918b42d1a6b8884fd13987e816b
+c3741fa914dc6b1c8f33204f0f13a82c890dce71b9a2986ffaa2fb28c59d5a8d
+62fd41a4b19e695ab289caa9cb1c34b7650956b99502c3e284c373b60dac7b84
+9c618c42880609768ba86963ea71ca2bdc2cc8a0b7f9bd8b7852b76a59861038
+39e2b19796aa6f6fd3e4a2af29e5cdf323eb9cbe993736e96348a8a338c492cf
+853d6b6f881a37587fb147deffacb4cf54073f63f8659f53607f2b8109626c10
+77cbd5aa31bf434388cd54cdd3f94d8309824e0870b0db78bddf177526df567d
+ab1766c9b0a10333d854977c21cc89d7215123a83ab5f2c7a30a61a3f41d5e20
+551a03d2353f9e87f21c3715b178c2c9f23b4dae07d9390343a37688e218b06a
+7a1bc4ef7a2a469551a3be269d1761bd533985f978456740b1035748432b5f44
+369c257407523458810e9d08fef43b669442733b1773bf4e2edb61c2dea483ba
+b912be2dc8bf74077895decad35d3103611035ef8d3a120d634bf3856d672151
+1f3284c77c9c3b7dfeb629ecbd03afa78d0a30f078cfea38d1e4193cb9e8428c
+0dc9cdea87767532e479f259b1a8d7cc2bcf089588c28eddb78f6c860b82b504
+ca3cad49e255f46d09f6c50c25072b77ad72f350dc5184f1bab330ff29c362b2
+e3ddd8836995ee736f1baae99b9dda70a75c78a9d4359bab3198141949791e7e
+dad51d29c420df376cef0145baff83ba07aea7555dd6ecc7006a68c97c0a9f97
+d70a914a12e93a3f94fa4c6e05dc73985f138eb9ae70365217948edafc5dfcc6
+8222833fec9237e0e90d9208309da5ca431e13f59fb32367bd288c081740506b
+1639a8cd1bcb825d560bb5a29269f8d557c8b336529b80080272a3cb383fbbec
+ce34bddecfeda10644ae76c0c970715f14e42ec229070b2163a9756c042871c3
+aa03e09565819d0bfa5969cda3df38ca9c57e0e77a0af5585fa8089a62a5dca6
+576359fe292799c06d7740c986c5ee8815fd7b5563fa3fd565466c33b0d8a531
+6d4d62c6e93cae578572bb6a49c0673ac049297ef4f8e16478c943b9b082939a
+8424874c4c04258095029cccd6a7f74fdb53a4842e17be958349660317e12559
+cb9a41808df69b7c59a6b75756b1658c225999b1628d182bbae3fb6aeeade1ce
+30d0c468706e1e5d35963b421349984a24acf96b822939ccef13d391d4a16dfe
+c2b3eb17d17f94d7f9490dafc6494079869295c2e54bd3dbc7f4c26f09e6d8a3
+faaa625301e166dfc0066a93e87fb5aef96e23af61490dafe0c17a4d9a015352
+b7e98060225692e2654b8cf010dc9102c7e0f65109d472a9eac38d961e37726f
+ae10fa17cfe9dabf1c2dc974f5a4accba5fbd6df1770d42e067eba76febb0bd3
+4b30820c62ccdaea1b4477d8721a9cb595b50b416b316abcde720f22d7aabeb0
+5b3a56f6b7cc79e400c191bb42d05df7d6a1d2cfdcdf0606917b19985dbea548
+7ccbe65de9717027fbb30a60c4cee1a13ad4d6cab83f5aabd0202420db2be413
+95e2d3fd4e40889cc2608ab5e811399b61ce45877d36458a0e483aab6b38585b
+1957b63e24b48c5e46a3859e64319f423b6194121b9d7ffbdc666be0bffdd1e5
+56905186be8836ea9798f6e396e98f667d7ce17f645bb4ac4ee6330a3ffc72b3
+46a8e35836ba98cbfc78c83a6a7643561dfe0265b11fb02531ac25f45804502d
+27af7f3d6eb8f6e97fb277f36417b6e2228c35232874ff819fadac6b356cc29d
+89dfb415f62853c36a2c2171ff5d38b4964e83ddf3498a9b4009c983bef8fbeb
+f20fd7ec93769847293b9424191377dbfc3413eb1f84d55abbbcf3285fd25336
+c8a478534b907d0d0de667f521b9513b091d80c66d2863b1b333377395a574a6
+a30ef35b71f79d2c1b53097959ccec38c93203455fada1c789f7704cd33f158c
+239daf5bf0ede9a15017e25b5962aa87957b77d9eb5b33e71733570770f8470c
+8f1fb349ab1835e6ec520ef7d2b35fbc904f8aeacd1db01cbb7102e09fc4a640
+bab30ddc7436d5c742ca2dee2bf82c31641e8fb8d3e52a9e238c6b66a90b7919
+e14141268552caee9ced19fb8d13a0832e881083c464b057060a615c39365c75
+c1176ff7c31291e66d415cf6bc5f7d6e3cfc76cd697b435895653746c2fc0a41
+f071e40c61520dedb3c12c484b3fd97324d2f6126c6eb832c2d192d401baedf4
+6fe761bb90fe2e9fe84ea796713567d01c694de409417c7dbc05074decbdf758
+6e33235a147be7782d1478e9127e4ae4fc8f8aba277d00292f853d4590f3c60e
+d202b3529ff740f56c602ef3311d6e895e94df31b0499ba2f6cfd7b96564aa6c
+9e28c2c7bb7e455fdb99199d34952b6ab3ddde2b3596268bd5d2e7dee53afe7c
+cea6d1ca7dfade9307ede25639cf084d6ccff916617ed2da337b2674b8017071
+de8ce2c40ad6b053d1e90b48c5d3e25b88b169de086ea895b07dfc9eb2282ad8
+ae97d1d28453b3bb4f141605eab64fae417d6900dc147696bd17a93089e2d88a
+95f0b5426d4019445ec84cd505c69015d6c86629128a1ae2d61af4110afea9cf
+64014b340dac4d66c9ee51f76f1b0b8b85971cc379cd99c15f70b963f6c9d521
+8847d23f1860f0b9d1cdaf91fb186f284568a2e87e92fd122fb6cc4b520e1860
+9f4141ad8895589cb3c8d4931a96417e26d49b291fd46ef65f31e2b3504828f6
+f9a1d25d651a052ece80bce002042a36a03d8fae3ec8ed5ceec4bf1618f7e2ef
+19222149a4ccef00e2ef981d9243ac2cfa8163ab97662ccaefe1e011f92cdaa8
+2f59c55f4bc9c87614bab712cf226a55bba71bce6c48fa649f8687aca25d5a17
+da1d42f417a5ad057d1ed9271760d79524be3936278f27330005393b278a84e9
+6eedc044d50045be42e7689477f2cad3a4ab6f64d7d598ca622ff4a4c3d0d5aa
+f2a659d02552fbf615c1a6cab691d52b92c398051f113bcb7afe67c952306e2e
+d07e3cbc4f9b42ccf5b4c3f4df3799cc83ae201d15529ff0b420cafc0c53f0cf
+4c1a7077fe56fee4ae8aa76164ab7b63cd1d961846af3c5860aca5991f3327e0
+5dae88379b9073c39ad76eebae0cf0cb53152b9f393a9c284ff7d8acf6037633
+fcc4be505ad31767d98130075cba9c451c0d98700d1a90c4618cac64772d08f1
+dcbc11cf89cee8f1210eed2e17dd9b74aa886c2c0a2f3958a86426009be7190c
+b5fc32c43d885630f96c3c31841747a18abd3d96255ef624ede7e3027b4498b7
+b121cb9d3e96edd010e206521b4a8a36e23ede47e3094d925b356340a85c1add
+8c8d24415f4c5b48a18b3ae6210ed9b408385f2833ada9792a458054926d8180
+2b4195b292332d25e989e89e86511b81bc4de420aacd5d461c8237d0e0be43d5
+b3d785ce7f701420df97f7979c3703f10c981b9f01a0df68bf53d6708adf5feb
+d31e5a12dc88a34841c91fbc78ff300d8c6cc5c1a0b65509a28de50f8be05930
+a413998249a5c9bb20fdd55bcd634e02dc476323901dc341e982076764251af2
+752e0be2ad147527861b8004e697d519a2e005879663595a3d46b7357757ae28
+006acce7acaa5427a79b3515a68d104d25da26e1bd470ac13d604bf66e4bf165
+2f11822b0eec7fe4fcc10d85200bdc9d65dc6b5852814d7f6789e4b667d8eb38
+3257694f4b031207f05035631af3e68f1a6973b9a6ca784d2ee75736541fde91
+53e3cad8db2251fbf13f99ed2ad2911c1f9cb37238670693fb52da6946717f20
+79207a5e376669b418a5abd1c5cc81d9e7f1481d02012975f7a0dd6d14fbde3e
+1a599b61cfc153bdef1ca9cef9c306af332a5d6b63021a601f0e02cf194a3015
+0028609d76e20e2d80984440df537b26b7e97e2979e36125a99b75f46020872f
+97656923e5a47c25a759df36288c47b630fa9e7ecd30efe8611642621de13b66
+23d338d46886523e258009cfc87c58b8aecd975fdbfa1b70dc87b7745fe0e52b
+c43374eff6b06aa4af1050a7adfafa61a2872852774d075613b0896e07d1ffe7
+cefdae54a3d491349a4d6adf0b340bb4616c5ffc4f6103d18930fe31fb8ea0b1
+44bb86c8211b3ef57a2ca343ee34766571a30b4cbe2e8999d377bb7ffc208df7
+c3df61b268fcf58ef52ce78dcc0574dceb3e21968c5368e0f449b4753c16fc8a
+1894d6f426e47b88c21b334574f3f9619b26d8255f81cb73c4440e58383a671b
+184a13504f7e318a7a6dbb008b0c533f0e483fe98b5e68c43b94ff6709b02db8
+b6fcaf27450f789066cd38c3aaa6682796ea1a88bce31e001c4dc0b0c5110769
+9f39d325de3a102900cb440f5861da267cedff44da035234d775c891d10925da
+68887a8e9d1e67a59a240caea31e9cdb4f429d6ed4b92f63431f491c82d33bfb
+d4a7c19b3c694c8f8db6194aec65d46175542fa26b39d5f7d009702bfe59672c
+95a2dad91de45fd114b34b8f5781c95c1a1149fccf18aff0304f3a6c4202585f
+cf770e650388066ac23c170b128f0e311cefd9cdf42cdfc2dcb17d70a178d0a3
+c42faaf3e1aed2aa76f1d6a3941748413cd3d95a656d8961a8c65bd0a36bed4c
+e92517267f48c3b57d78325dcdbc52a4021a876571b159fc11af7d0a043ab575
+a40f222f76d8fb66d086c4ae2167b505d2cdd946ba9bc91f1c77e5415b89b6ae
+0edee16d6e6bdd2b2046e0e42fdf5c1e42e6bd25cf84a60c9dd78aef27781c08
+3fbf916e07f5c76e07845e6c726220c039feb9f249ee68e2acb04ae78bad33b0
+bb6e5d362d503e9edc4250db718b11b9dbb78a5dcf8aac6678bfd49a16f12c86
+3160b30900422b4900e56250f1aee39ba9b856b943d0a5febd5f9c3069e54495
+9be0de87faf41404c167d689d3477ee3f84a13fa49526d6e33495f7beaaa113a
+a6c92fa67f841738c303b91d01fb438b3c1e77d868bc128b72b95440e5a1bd56
+10040f885644961a06f26c195cbe5fda4e4d11fb59752d792cba371ac40e9895
+f1b4eeb29280ed40abc2b7ed0a3bd59a0ec101c1686024678ee7ae2556fb23ac
+6b3173235561bbc235f42627412947f6f57c0cbb8605a2f2ad9a6c643bfce4ce
+c8c81190451cc82caee4272023801d5228d6f125ac9c531668fafec73d194506
+775a340bbe46af09954466c7238f6315f5e6146dc4178c469be7df2b86433d80
+cae817f86baf391c4ca2858ee251d931909af54ac2f0dbabfc5c6a75f6010f78
+57875ad5110962be3816a7bdbad2e78c431184d2d13bc5c688d9c4930295e609
+0b4df6cf294ae587ab4e83668dae08add9e806f5cd052614cc216fc14bdb68b9
+909795e51178df103946e24227892146664995a66a4241f947755684987735f9
+19175ab048ad9cb2e94bb2ea013893bd2f420a3fb8b79f5620147fbf41ebf165
+19015d9fc9f10c665c3da8cfdb44c91d7fb89ddef45b3056a71db93e4d635109
+cb0126d0c9b496c9e66e92ae3fa3e6188633a5b6dbccab560c09dbbd6e60a4d8
+7cdb95b137834892e28de38a2dab0c05fb11d5862c646692dcddb342736492cc
+8e4420540ada3942c6a65f2b1382ce6ead4a5c59f466618d3a0706be80524ffb
+3ac4765076ebce633a68a2496813681fdcbc0b707911e71ceea25ccca474d139
+1ac930e5ea07d671e296380303011c44b02c5004e5ac8b344ed7cceb12ff58de
+b6552a4775f946d87631df658c41b55b97966159fa144289bcc35d64bc4b9aa2
+a39c1baab96a04e62100f087d982cbe824dd4d94a7510d2097fb4a9ff564f01a
+8ca4813b2b6980a257cf7dcc62ffe77a63080916a133fbec112f52b47d40d84a
+fd9d66f44305f0e67689491f2e7735d76b8a3bb8cbd2fc61409490ad1c20e4d9
+406ac48af8482a3ecdb5b54ebcd50d493170d95b079dea769dba085f6ba06bfe
+07ed8452b33033a266bb6c6b999bbcd347ceda5a2cf843a0a821c42acf4e8e63
+5a3e108fc86c87e2d9641ee4cdb1b951e3dffab5ea0d438dd1fa93752cc1dc72
+11b930a2930911bb8b2c359d8f97af7d0f924f84722b719bf2f752134a5d50a5
+4dd1674865519c061f591bfc8c73ce3a3ad23de4ee8155a8ac770c2423fb5901
+a4b139e67e88de9945ba41d683dd235447e1754b5f4b1098679137ad530bc587
+7c80d09acc97353606e156236400880a0920c912d5a43208193a64d5ae3555c3
+537817b08f30c04e44105dbe383491a75ca435fc5d6d150be7dc319cfe38ce96
+e52d0e138d94183f86278452c16536b06da4fb26d651dbbdd1334c88beece1cb
+b120840d377e638625f453a3081eba68e96b9648f3488fa33eed2b76c5038cfa
+de78169e5a6e3fb8f06d5c9f3811591a914713b6a08c0bd0d7d7c785183ca9eb
+aa9d562d0ade79c688e46d94c661c22ee892ce0d1af72b1af8cb5f86190d2f70
+f9bfed2ef7c6e7a57757cd23b2851abe9a2a1583b770bda442ac5b5648b13a7a
+dba9847d51b0bd4bbc9733db98e561ca6ee3fafb27d3cafc7724f4d59e598b02
+ecb9db2a09a21ac15ece224bb8ab6d113b5676b4892a5af6bc42beb31ccb7da8
+0c2c9c5bcbdcb136926fd94eac3e7c43c8cfb3b784ec86a6988e71cc21fabe97
+6b9270a8ad661d358aeee425e1bb52b81086e47b645a7f1c52224732d3c3bfd3
+b9578bb1a3664aa285bb9739e826e54085573b02beb96cd94335cc3e813d3f2b
+a2f8f383fe5dc21b5e65aca1b04520a192c9697ca0fa2b4b9773d91369f6390f
+41e5564088a9cd7e4703fe69df2931e761dd3072d5c4e0aec664316a2bdfe5e6
+8870f3d4e644de4c9752a5be50dc6c9f84fc423519005a96e048cf0b57e2c0e7
+3d79fab4b40c3f1420e02ecb00fbcf113263b4dfbf24c804726b37d795517e17
+d27145fe6e0976aedf09c0da2a31d55050091168df197e56941ce2122f23f822
+80eb57b7736c0c45cb21aa0f001e9f13df6504cca046fc2ba4f48cd22aa624c4
+788c3491d3649c074a1bcad17ea2269c6d3444225d0d533b4333319b49bd6a8d
+bb1fbf3112dce3d01cb3632f5ae5e6e43ec7f7a83958dc5771c2b0148f108242
+979bd1cbf86eef1cff06db37ed6aea9090123e213ec99412fdd92b4687a5e77f
+aa78f8fa1cc920c25e65c7903c1558cbfc09a719ebe3d383fe77248c17381e7a
+670e6e601e8e2aab189e42dd1d9eea9387c404a18fd02c4bfd7439e94606bd96
+b838ab36d76d0556e5ad3a51aad2cdef776d49734c5ad6764e5d67632ff9d534
+61240fd6dd67d8be04f9fe03132253e5e843f253d220001eb0950f87169b7c0c
+b198055f513ec1a7ca24c987329b8baf11303738a3c72a253e8155989eda463b
+a7fcd1d2cb5078abd2360cb7cc9140bb865f0b172c3dbd96dfe622b4510101fc
+1b7a7b02e3e145532dc1541aef07322e282da61e72aa839ccfe0504c3004bb5d
+2cfee8253c0f437aab5e6446cfa15d82d43476397d2d60081ba4f6cddb43d6ab
+dbdeecef079b30c44ffed4ba87c1905f493abc9d10fa40e4a0836b75783a7107
+45b4c0c70a2b8637e75d65c3ee7817ca0dc43e5ee624230b821ccc6518124840
+4444f1742d066301b1b389cf7a3e47726ffa0b9f6db8458d129021c927a3d8ea
+d166e44666ab7d46520a77ba4090d7fe8dfdf46d9b4f9851fe4f760631b64caf
+2bee1f2b7fa8915c3634a8bc0b81c32c22f20c8b205da8361538f208f067151d
+4dbbcd20cb283c3a00ab952eaf7c86c54c903da2d283bf20a85ba96a6b51811d
+c88ddaf3f81d5bdcc80fcea5217e5bdd7902b0a7bcee375c0ed5b4cf1dceb7a7
+bce930c7fb6fb617232b267ad4266cac3ca82de4e4c8840c256c30d070399ad8
+66ca6d011ec519aca8acc0c963028a21932f6a515f12f53b15d931d06574f5bb
+88f399b5e9367057df3093f664ba103041bf6efe9a2e0a87a31329d930a4fbec
+1fe3d3af194e2acd478915b4caf87979816029cdafa20eb1eda515e0ead5086e
+92e66a2e0d9d8271d8555fa5c160e1c15e75a7575975c5f5c2a7f55324a2786a
+d335700f63d1b04f4a196336a07dc0fc7c1bbd062926ff01696b17d3929109ba
+0a1f9ea9cc4010d34e10828553b4b65692953a75ed2d62bb22ebf26c3b80ce93
+6e472c524612ab3c09748c1666db18d07c397fba044f50622c579acaaec335ef
+ffadcc9f03c2fdd0d5bdf69bcad0be0a16594aead219086037100d788228d738
+3c8086b9b0bec31e4095bef8ad816192d93891140c98bf7fd4b4e6cfaebe437b
+c1306453f5267298d7cc201d0b84224c7ac03ae6b534191c654ac4fb35317ba0
+2107196cbff178290a446f0b2edb387f80cd4a01eb2528817a1bae27ae739090
+a3a40db9e0dcf351635baa54511acb2d6ee5ec93fe1b22c17aeae4f466d0a28b
+6115068fe4dad8aa9b6b604ee29068e0addaaed1c95db7cb22e81e84df2a92cb
+72f837803696b2a1dff46aadfe2d003a4e187f018939ccdb1f4137c2eec76c01
+3536f5e72624513bf556ec2ad80b7f50fb84c45ae0bffd59d056a5266e60b4d6
+09676e4e886b182cca8501641dd2926d9fa696eb1ffe7af496788ee34c1b7154
+302fb8aa2929ab3aa9b285bb63c9b7ac8d145917ba5eeb969dd132295257a7e5
+a226d4300f4a64bf5070f97b153a4177eda4befdffd79223fe6dbfd3879ca902
+817093311bcff8e27ad0faa6fead78f3ba2ccb8884bc3aef0ea0642af09077ea
+6eec7348e550f146d453f9e3aabc47daa2045b2043d79a2d32d981671a093bec
+17ce4b08fef796b445dd9e9b8d9d517662479321ac891a13e069a6c3e9ebf1e2
+93ef87028607c969a8aa7e5270c617e4f6ad4eeafd42aa7a737ae8e5d5f66e49
+291e587bd0e2094eb5d1874e5dc25c13259d085891be4252e51cb64950eada39
+43595a53adb7bd58b32e7a0447d50539712652c313bde61704befeb70c8aefd7
+9e3b0dd5db5fa7461a17afb723200143054973b4ca02b2d70d4d5b7d13859783
+3fb5bfdc9da0054e8bf9e9d86e887caef6ba45ab8ddea6d3a4bae9a6903bb3ad
+a8817a61ceda08e8098f81370759273c27332efbe5e50ef2d117e124cdc6e930
+7f6d63f9932e544bb069d2e4f9599efc9e22fa99e1d04bc3b734a1b40bd7f444
+8a43e2b7310adf60aa3d3c6a0076a94b9030a09c0ce1490c18264da33f6b9180
+f1e6a2c17e907aff2fb778ca391e95e657e49a09fb575b9fc3c74c980c5a6d39
+c1105b31753b7fa3cc57ae912dc4ed7ddaae2cea6680769a37c8cd89cdca3a9e
+a836cc049c65e37aff06fb69c8370e69a99167d790e55b61c7ad9a7a1a6e98e7
+5aaa9c936482379203cc5d1f9ecbaea6ee346e7ffa94437f086622f59ff833a4
+4401c5c02ed8af095099cb176052ba98540f3cda54c82b7bd8f323efd5f6f321
+5ec0f05325efc62af4c0ea4016fa75f7808b2c7997caf90d6a2ca6c311f5b90b
+8612d6a0aa41d1205d0000af4268393559e1f7e692f7ca09d66b5b87be69e1dc
+bc5ecbfbd423662af55895bcd05d214dcb7dc42a0b7ee72bd37be7a6862a7c86
+bcbfbe450e79415a8a3d1e5310cbc348cc01b5c45b6e5ea4c7aedf803905f3f7
+b5a759aa639d3608a91550608aed7f68a1de66da67d43a120624daa7798698f6
+c16bdee4c6096c4e34a506786969277b10e6f825b95f4d8b2eb587e4d7574c25
+290b86573cbb90cbf5684e78876b867ea99485e0c21b9f3068a3f7be4e119cbf
+c0d297063b8bd242b833fcccbfea6124cfc4dc673e9b0423ba2ca73890a9dffd
+bada94b97e4ebac10ac3b7e70376566119e9333ab9eedbcb4dd1099b68711be0
+cf49715f930841de771c2800fc0b5b6ff0790757c2ec675d2e3231af4f9cb27c
+0569969fa761db241e76961ec2d3206d450dbbfd7e414cf5746d106013c2cf01
+cab7f1d98b16f5567888971e1a61770803b32ebb4272d7a8d1897bdee574e891
+1fea5318b5565d2facdc6ef2d2888bda595ab671302935298ea5d7b63ecf935d
+209e908d6390a5b13da20384fc8ade7ff039fd1c7e8b6a40d4dbc4369ab7d7cb
+833e9879538069b0b49941e824a7e9467be99bd9fa9935fd76fc178e7cba9e45
+ac06a9dbe95b73a9b2f3f87f4a78842cde300f1edc81352657680e17da65ffb2
+efa27ed4cdcf58596d1f80f1a71d47bce9cd47d8596c4c76b5c93b2eaf956224
+2eb100e16166fcf3254a1719a769d3079c5158b900e9e8fa0ffb590f3316ddfc
+afa1c13b42492ffd1ec028df0f9dab4fd33dee8f3b6b672a8e023481af781335
+13b6c8cd358a3a332a5649ae26b04ab417dadd17dc7e2b38c70eddd4c7071140
+17234cf671bafa087236132835b9d75038ea3ccae96110bc01183c9748c99d18
+e03061d68fac9a261028919775fdbb931efc56b674641e2e01bf4dc4aeb368b0
+93cf9b8d69092216924c49ae37e96a08d124b07bed25ae1be74ef664038fcc77
+31489c3a467f1f682969f43ddf8d9406b4251944d4e260e4f5fd2107f00d114c
+3931ef06deaf05563e973e2f762b5aec8243b6decefb3e1c29746ecc86ebcae7
+4ca4d4ce7926ff0d627db48f64e1f1a0de6c2810c05c2b15a036d87b437362be
+25f974038943d537e6b8a49c0c85b5b9de7c49a2b10cc6c42aeb02c0c711ae1f
+ed02363d632b748d2ad3782b66dd8d00c279fac416316e1b8c764b1214c3c31d
+71ee1f20a700797e8604cd49a3aebcf1eb2228120348b313a441f2e58af26102
+715c1703a736d58d8eb3628aeec676c829b92fe01017db11a7be074c40f5af4f
+2b6f232992665ade7a5f82cd3e24fb9de36e7cc626a7d45845b4aeeb276899aa
+44c9d96d3fafa967874c9a3bbd077eeccf8c77fa9efb5ac54f9e87a6dfa5147a
+27fc994aa85017c39eb22fa99921e5909c400b7e7d8a42f6dfc4d8539f2bfd97
+98663a9bb1d24ca500fdafc2b0182ff388cef6a612077e904f94c8306df5b7e9
+8ff8a11dc1d45acc5c807f01b849243538a533846bd20c2f480f3a8aafcbbeea
+6f5a414a867d23687b58d89484b0b4b3b2cdaf815d4ea0850316742dfe511862
+e55d858324a94c5178f302836afa95e38478ec6ab0d5f61230b1054a407db1a2
+477558541afec5277f67e3176eb839a2e8390639360c0a5640ef883ed707deae
+874f398aeae339e027311301ba8409d078586b134f642a4197c075648c4c6721
+efbab61ab65afe71ad604b84b43aff2f1ad87aba8a84a17fddf6796b3847503a
+41243ca3ffd395a3b7eae966d5d6d97cbb6c46bc1bf434d9dc8bd514f3191c12
+2ce6a1cb75049f1f65a30c49d8bb215d88cddda83eb3d8d395f59c0c184d3c9e
+ce49f04f9efe31839fc42de4230b1259be528303d569cdaa20ac60c38d721e0e
+ababf880b755695a7a88cca9c70ec0ad25288716029462dace3ed109ab76ac5a
+76ddca6c85433671b47733af53262e6fea9ec121cdb4152dad02715efb1fa955
+87a0909a682d4bebbbc938d24674069d268faecaa0eb44335ffecab57e6db9eb
+51824fa2ab01a2c39c2f8ed63d5105803acc2c438393008f9454d87b42eec68f
+4f929056937303103fd4f4a237fad465f1cc59fcc1ad57948a5a3288b6df000b
+79276543fd3396268475d437d714abdba0ab250b48048a9ca1eda7f537c393f9
+e9bb823bc05c7d137521e28993f57da8699fd70ff31074e09e9db68cc144e72e
+3f20aea3831cbec99736cdfc22e1ef46e2f8c995771ecedac53561545dfaa05a
+074753b7911ec37c046ce05ed460a28cb21fe0567d75b25d9fe0ea08e385ab87
+cef38dc1536e49cf31cb3be3878db8d4251af3da0d0f9b3da7584ee3629c31fe
+184e8689aaa9d3e32d19c5fbe5e27e6f136b244cf0f4c32a0e541f1982c0114a
+e86d520fe639302b1433aa6fbc01541261fc59ec8c508035e0a76ead4ce90281
+bd3875b004b12f257b95e542a324d14f43a74caf08cc822e180297504b4c47a0
+4fae67884bfa8a46895ad3211a59cd9cc8683c0d6c3b4d3b04073e6be6311fd3
+1f0df3d454b80ee17207b2a2c57dfb5cc89883a7860ccdc85b3226f54616b75d
+f32a8ae645fc76f516ffe9be704938eb182475af5dc27467ac340f3f6fe9fd15
+37f901c7d313591f5b45e1209e49a412029c550a56c52c1219bac3a3704c824b
+77c0902638e7e71dd56ca8efc086df7f8d32d71ac57a1c521f19ae4ca816c9cc
+1ef898e4ea092119d6ac124f4727dd9b89bc7faddb76e1eda2f45695a24c83e0
+dd6ea51c1df6e9c7cb8204cd45e6e853bc4f3dad48b128be3a3d628d184ff343
+0a238ac0714cf48e4d7cf75223d70b00b6d90e69addb8fc45174aef74be4bb16
+ab710c5c6e128d131ad8789c1902d0754f2c280424a36d59b49ba91cbbeb4d91
+20b0166ba45c870e5b99ac0ddb9d5e74baed807e1b74ddd63cdb8e226f572747
+67d1cd98c9c148a3b3fd903597d51c837c297a09ccf6b58df0ff3412fbc5618a
+e0c4ccf8ec127536dd5b6817131c1d18bd75dd7d0cb5a2ab7c7fe1c5ed0d7f5e
+220c2c21440996d72b1f6b356f2c909b6f51b04d49961de2c828db743be719ac
+b30476e19affefe766443ed66b4299b449919e3c1ddf7a4ad848fd9b3cc7c200
+23003f2c7ba05fe2432e0f5a440aab4a81a4f1ea0aebfe4ea17f92b9e6fbbdfe
+f5c368e66f25c27941f8c0934b938b04a4edb96ad0590892ae7522abfb944b1c
+369c1b902581a0d61ee9f88f01e443586bcedaadf58b083410923e0112ea8247
+07528d8da63c6aac579c7c0b4cab6d165ca0c2112a74154e1f3b813d4be79d8b
+c90cf3380a259954e4d4ca3a718252435312db88e9a1fe47bed13317428ec693
+a3b0b4bf943369e1abe9348994d08a94177212c645241f96059f06eb920d2b48
+ea0e9c4838c496df98ab52fd01ab8e83bd2d4ca7a2c0db7e3e92e0be0194c942
+e9ddafee4b479c0faa8d07e479a1bc9d527d53611ed2c26bad8d7ac2cf36a370
+b4bf4f287f6dd1384caefdbfc822d0f7b620405cd1cae2ad354f07e98962cf77
+fe768e3ac8161397d7464205dba7f486acc4a942a06707e78855b923c5609c0a
+e18886f0e27bf75b537546ff4a4c85d80792a4f726ee4e2f44b01fe843104a2c
+542eff737bda0eace710370260ccc7e22c8062a9acf841758c552f05a9f4f638
+91690ab3cef42c87f28432b808b718a4163f50becc72ad7efc614eb667297ffa
+d372b297ba115de21897e0b578bd57d689523f1c888fa3d184bab7153523ce65
+cc5966b1f6e3893a1fb67757e92ef6ceeb97d208dcf4fb34cdb67a2774f5511b
+d86221490f3ae8b91549559e93e329283411721057c3b28b0c8f3f0b0e13eb27
+049063bd38e263767132ea32635ae0d614a401de1910f116b3e9508cce5156d7
+6f06e3a94ab9d9249cda23a9fd7cc1b15266cd34a6f0bdaf1f633a336e32f8e2
+2f9d31c63b396f28565462aeae6b3b91d93192975ce67276a31ba66a59f2ccb4
+b5c250eb5e2e1bf406bf97222ed23531f4c4aebd52266a170b15471a65d044da
+2924a2a6fa30a6e5bf4a2d94c9cf8906932340ae6cc30e547394b7add8b58b5a
+c06bd896af6e6adfd7cf205abcccd5e0f133ab6b7aa41a79181413ee0da61a9f
+de3d6e98587789818e988b17087e18b70dd7acc9eccb76929bf10136eb0c1df0
+f046f2502554d23af8f37df817fdb3adf4fe9b01fc469ff2a68c6090b1165546
+ec6f0749167a8eafa5d932031ea48b79fae9305cdc4bb35b27fee7cacfbef7d1
+99ca4c8a5f85fb7ae5ef1f9914d7067736b846a81fe3ef7fa4ef943309a79bce
+d5d5a6baf958dc3bbac6dd57bfe7904bc8d0a4088b8517eaa6c22d888cb619b2
+de9e9a750bbfb17060376f87118ca0d938773e66194bb836ba2a65bce22177fe
+e8ec0f0b762addf60f300742a9a24b81e14b15be0c3f9cfaa3312983c286afe4
+8d0f2ab182e60e46b6dbba855b3b133a8987b35b2998fdad4994c548e4d28881
+edc22347d40bc243a22b71a951547f4e619a63c6dcf12398d0e2f7404a22db4b
+c93cfbd3582662625b06e414f49ede65c8af2274ec408d8fce5dc21279220966
+a68bc121d77e42886db88940ff081abc15b8da5508e887f5dae892d939bddcfd
+6950c3bd3683c78023d66f6cd75b8ab75b324207c0cd129db82eede872262ab5
+a0e59f5db6e4dbfc95c2797407c649f78e0c02416e37e86905af8d1215640775
+33edf4bb56855429564edcc75e8e78478cdd6ae5d3628b9d911dc6d7fcf594df
+02c2e06afe8a72e28507f440bb8be2a8126a74758c7bec8e53d90668ffb7d9e1
+28181aa7dfbd75a0c5d4ee8a0e0ad339e98d8fad0a09734030ab7d250f482e3e
+66884378a5a9e24d5c8b9d78ad0cc6f5060d62f65a850f024d6998ecb79536da
+80c50d3f06023a73b5375beb3d4e6654b8b4d3ebf2fc0a6c9e3bd64b3ba3410b
+cd930ca1bbe0a80038689f5ceb6c6b54d76dfb5444bd618daf98d91a7c83aa76
+3e26cb1e4697bc3191f1b9a0f5f21dc0e82f2e429d1ff80c24ba19c4ea789965
+9ded308f1c91eaf3cb07a265886708654be6b1a38030572c1f1afdc279340434
+85e7c7b69a7ccf61808ed2d507554c8b7fce3b5941e7fa7100c81dfabb974a53
+49180961f280230e7ad0598a0017d9123600e915eecb952a6e707efccc330816
+0ad076e70faf5ce521f25e78224e860f5b395b3e68f662b469cb69467c7af24a
+011b37b26d9522f78de0cef472f3997b49eb50fddcd71f45931cce3ac33ac895
+bcec73bf82d5f62b7537fb1801ffe358f8eb5fa039fa35283538925c441a8e9a
+3a6f725d8ce9e0b46c422e5a95a88e7ecaa88fd666807fa4dde32fc7e605b332
+456c277e3181ac309acc471978d792b4668619d6816669757730a8e1387ce80b
+7c885c5d132ad2ae00a8d50db1cd662b4e62facbb9775cc0c423b04b7816d8a7
+8bcea0301951f6b6a0826be58e81ece0962b462235782cebccfd117a1b7f686c
+e9f0d4e686dd740cd759ecd22e56b815bbe8a532fcc471b4e5fd96d7585c9ee3
+5b10fe4cd2db70b4d7d24beb0778224c7af1deba2407b4aa7d75d254c318f0af
+74768d020d6b56d112413101f9c937f5f181d8b94bd9999d24f9618ca21944af
+43234f5c7c64cb0908d845e1ac03e010217f094c2f793d92857e50d6e77711d3
+c902fe410c13347f1cfa44bfb080636a633e97551ee8c4a25af65ee673eb8398
+1139f110efb6a111342958aa0c5eb8b0dccad60dfd0a8d4f1faff1f5ca25a564
+1d8627a10ef09b4c33720016ed294afd902545857466d91b6bf31ed0daa4ae83
+61414b99dda4665c6d0e1123398211f91414847ac0f9098b444ce2c9d756ea4b
+6b385cf5dd26a7bee9d6898584ed1b4795a52406da79933e5e331a843f03495c
+fafe7457033f4d9d5efb2df702fe8710f6a443199345b68af47b8269709c1d6a
+41e89af0c1a1fb9d838360f167901bdeaa6dd5dddf9219dc8fb8ac0e69d2aa5e
+7408e257858ebfe537b23d4f2344d590ed90a0ddda9d28d193ba9909d8a52899
+03e7f40cccf54ae4b76f19c281a4c5f0a44c75c9b5c7a4f60e8c324ea4cd164d
+5a05ceb04693314902f69b52339cc70c65ad7e521eb62a4aafafe0a6a94e9ecf
+d53ffd202caeab101dad4fde1deffe9cedaa58d4fe0f147c63559b3309133f58
+037725d85f621e354ac0f6a7532687845b004ffa6434df598e97a8062df927f9
+e77fbcb84542553f916660eb6647e5a7156b614041b9a021c8e6ff30859a0520
+77f6b62b5bb09a936cf73ab6476eb928d98ed6c7d427a8133945c70ebb04e6d6
+59111c1d2963f1bdcf429f4f0b21ac9bc9950b7f5117067805eee2f0eb3d651e
+2d3411872c2176902792437d16dab0d4f5ee2b55bc86643f37af4617f46f91e5
+bd16d6b66b39e10cdfe007a13c80cb9f05b953dcaeec7a3bb660be0ef1701371
+c8152ce6a7afa86e7bd477b9c56ae628e3a50b9a3ff1510f9b3b7213ff8da221
+26252f67088593e4f2891d9e038b9b944b3e693ecfa0a8c9ebb396bbfacd4d66
+983a68aeba633d218288b881a8dfedd3a93f0ad94eead1efb2758b8db90d21c5
+3aa843972afb843a9583013d87ee5e5ba27fc802f9b795c26b8c9201930b1bc2
+3d5aa572dcd6a988a63025326ea5b63a673aab5ff98ee056a30a309795047ff3
+61d1b7a1888a51a05f0d0b52e4c2b9dd457cb25548764100c6ff647f7c50e2ca
+f3cdf4181ae05fac39d0320c6a248d6765bd34ba7a7daf48dc8ca7a59c66686f
+424cc20ab8faea84e4433a5691c57c90404fc0c1201e8b8fc3f1b23af3164049
+50d0943ba2f2d608841b490e34e5e2750b3f6c7cc3ab7edadea37639ecaf249a
+5e9eb3f7f9dd8a93982fd6c7c945d7f236e21900ad4c62f1128fb9f1f49696b0
+e4b88c3ecc0c3290cd70bdd4e742b24cdd642f5e50d254e55e66db02e731ff5c
+5722527b4af61905560e61f2dc06b5c257958aa01ad9fbee657886276bf91859
+5f56bcd8f5d79cbe7ae5ca11a57612ce04118d995d94eb6fdf941a743ea29afa
+0f6eafcb6f5f7429836604f3c8b56fc99c6377cb0e63a3fe9429fad9208300b8
+42cd37036ada971c193381d43598ece92bc29b6c6c11df2289cbebea41de2ad2
+e05907aca88888860ea7592a869b48da157d7e27103d5982806f84f3878850c9
+cfdbf1a1a3409bbc85031f2b9ccaa6091771881dac7c05b55b65118caa14b3a7
+2acc06b1bf7bdbbbf889de845e5a24ccde267b95021895bd200f079259f07d12
+aaa9d5aa48a49bb1304a56880fe3159291c4e2a6b8159575f61b151052440b5f
+2b9e0c55c99e549c61d8e96a5df9286b01eb24662fa7c0f619f5069a130e49e1
+c9ed1b6b0084a6ed005b5b8bcf2a943c9cecedf3b28e6052c9a2795346816f3c
+4d4cb5bbfc7e2b905508701484e30903991a508dbb56367a02a1591b18172739
+bc9f33019f33e2f003f1544770f8594b8348fd475a936dfe9f2e770b9cb12408
+ee1dd62314f60fd96af7b717c7c1478d4274c18f4cbb45ef8f8038d79a0888f6
+cbe986a85dc9047253d3db3d36a28076d992fe1af90fa108ebabe641f180cc38
+4647ad9268f436e68d416a82bdbf00bc39110c3761233b6bff0d85694310142c
+2e1f799acc9dd12aa716ad7e3099ef753372ab00342bee4eca227449e31f666f
+15e2ae031a32bedfb4591f1e639493fc43cd5c2912c691b34dcc1374e356be09
+295e8a5d50e26cffd4400a168a8963238b7ac9528a7cfa444d5df2c2c9efbfbf
+068d11a96d3c529986864f629ddacbd73494ca0d3aa80786462b861baa066ce5
+4c0daa131a5e2dc39e8f8fa89af659697e2780844f2da130c9b10c5c163785ec
+d3873f7c98323a9c2e9bdc304c069a5ee49d39a167872a9740dbb181b2866a43
+3de8455bd637d5c228071225f8974726d86799436cba4412e271671d876326f2
+8db8f5816a395af3d34ff8e40ae16eed463a3ffcbcf369972463432e91dee589
+58e4fcac47a7d4a359a4f97af01071aa260a98d41a4b2c3ea4b1d23eae8dda28
+57b041c7dabb4fc8f11446336ba4081fe4d50cc8ad276033790519bb0bbda1d1
+7f76b2402453eb37618b2c9e5acb169e5d87b19eb0fe70a61445ce78e2f78d97
+cba8808b3648ea1005509a3ff36542e44126c9639f04ca15d6d7479495995fe9
+324aedcb45b3607dca29b1ffc1f9068a6e89efb9cb61c8b655bf6b622a1c8800
+1ca2a4ccb78009b25fc5499f8a53e3e580d947e676b111c37ea1e7566448a3fe
+44079e4ccb9611fea5976f985a043da6ec718f523d2a603bc9468a6003bc7867
+faed3e55bc97b334ab1342269f7423a7297bef465cda4a677d8e8a3ca9bb8654
+a0be96800870e1e08bb3d6281922422a31abb0a18cc5b230b413d1a625824bd3
+8c522d622b23a3349e8fce88a3d44a2bbeb9c4db7e836330fa104846f74caf17
+9132fe4c61592c0dda1b5b318a101ceb335a39ad923cdf96cf7965fc8658a084
+79e2a3cd2221ed794dfc121f59743fb8dcc2e7b4801e13852df203a81594f3fd
+2ff606d0849bfa7267243f3eba81151b0a14b194ff40208873e51b9df769e662
+34163034269adb5d3e54cedfd82e4fa8b596c49b994f90889e65182a79d42e7b
+97293a2773944a54d001a958506bc4f999882bdebde46e7ffde0597917083bc0
+db445bdc54334ff0854009528c0e94159763df227154440064951890df2772c5
+fdbefb43a9ef7163d96d9ce491bfee44208cd1d5e9d97bf96c877ce08df19670
+f76725877b9b1cd669bd447c44690dd930666876d50a4ffc87ae881139647747
+cd45e8d6f6c4d699a6345070582c2e48467307e4c91e7edf6ad9b4b20aeccdc9
+0c788de95a97688628aa0bae034fc84d0ca78264fdb592ddb9f83d59591ddbb6
+207cafdfc9a4a5994efd6001f3ac9225cddc497b4196d82cb9f37c68abe2a510
+621db01a3ff4603414f448a326f99b5d19a676f8cb765399bf1b660f94d9de59
+f1a26bd3d53bec385026eae1087a11d550b61ba2503208bb03aa79cd01266a6b
+357afa7861a746b86ed4b897c8a3906233206a59e6b78624c6dea49f08bc75b3
+e3db3901f8418e974589a250c9a99a3f9beadc6f6e9ea0e4146b1a4cd0016e05
+832c3fb6a98d6860c56e97f791b59c38e1d65e237abcc96c62e72b8174197b8a
+1af69ae0120d8062a2d06cf7d68a5098666589d06d1e3b19e5c6eea541705c70
+1cd8ecab815ee3c6a427ae2af88a04b03d7232cc5ffe94c15a021173beec9a63
+d12083d7f2f38fe77cc44a4ac929478f1e5bad75eed7cb163ff6bf639d4014ea
+05369750eb80de0e86a08b44201903ea60570919df775da07682439a16c3e032
+7d08df5dc88cdb60ce4832754bbccd62e166f7855e9c062289190e17fbf79ca3
+b7a17c58613f1880d21d92f447ac8ec0e89ee567d443f7d6808c23c3b68b367a
+eeb70960f4f75d6adc8199e2e4a7a536f0293763650151465ee340985228c571
+9f7b27ab4e29671390267836332a99ad611d0614c8bc47befa79c9e773639136
+fc10d912046c53eec596549877a226ff6997631967cef021d93afa809242e9e4
+4ca2327bff6d285a8ed7954050f88055b3c55b9f357446f24509688022d7fd6b
+65f7f2a819113c79be159ff9caf7a02b4e1865a56a919add6cd657988ce293ed
+60154e2e05515f8731429461fc44d05b298ad5a17e781be0f59a148517685164
+3df128fe4c156ab8e6b638280e93394b6aa0f9dfcea140eda771955254aac7fc
+4ffe0c5ef8f7fa137d1a9a34df0a0290a87ffbd87558d552aa273160fd8e0488
+9d27daf2f1dfb728a5ac39bb18b253051b38523f1684dfab031224057944c1f4
+c687e7f3758dae7b1beca62b4c1f0d09e8e0bd9a67bd326172526b9a53562354
+88645f801e9edbe40a03ae128387b3f7d5421935cadc6caa5ab19d6104d3fb51
+3c03a849e09c9a8522f5da358e89d4e0d3c2bf652c63e4a13cd8d08169c9190e
+60a2c7409a73464d9a686a1c46b0dfe525052bb3b6cf660a18893737966e6a8a
+2df95546722d74f80472c8e474dade92071f48deb2c35471f3d44f8c59211e5e
+ad39d88d47f28a7c70d8358887d87ec74249789e7fedc1d27dc58165736e559c
+abdec3fdab070d763e5b682a226319d254da380a2f542ab8ed590685699e3d74
+a3e5bddb35454ca3e2e9d2574c5b73e1e786e555b9980e454700241e63ae5b0c
+3a1c1d3665f2e19521310b88425a53cb8c507db92c77116ca323ed6a334535fd
+5d5a8ef5f70039860e21a4ea45fbae154a3060766b621f604111fab1a8d43e33
+cdd31b419ecb71fd459bfd76b8a990a9412e3f8e7cc4776e87c6e0029011d852
+4193855b3f306c6a5994aeee6131199bcda3d53d6a5f0c64d943b8569261b362
+61b275229e307fe01983a8e1b4a70c92cab435f2dc0233f0b438ad07e6135d27
+56411c86bde32703904d92149e7d208dfea91df5f8087ec03f5b8b7c9c87292c
+e225953c5bc2f9c52c6f781d8e1f4c64ebfedb004389296636a23849ace70e1e
+667d5fcbed43d06ccb7863597106087b63513aa431bc1a294249ca5f05a6b32e
+1d0da3d03aaa17bd56387c9c5518809476d063611488d012139d3de145ee3b18
+df6f88e8be6fd23d267e7719d6b25386da321d475ea7a5103e58b1832d69c496
+49f2e5c54653ddcc093891bd35c3c647dfcccdd5958fa01edea7ca2f73755a20
+12852bc119c85ee2156c1f742daaa3ed4dc86202b18d42e0b5305f43479ff7af
+8419d12a37f30a9bac9e165d2c7f5b85ade22b242851068196bc330f735ded8c
+41cf87650d21185cf51208f10601cabb75e0de4ca1248f7298d64f3d6b73e6b8
+bc2f69a7197286ab1f782fa602896d9981978539033f64423aa6a822495cfcf4
+ed2e89a9a9cf6de5edc4989046db7fc750752a6451a104eb13b3e68ccac0be55
+0881647d86362ddc502b759de95458fa321aa86e1c9e8a73e49ac4769eaed66d
+075ae1bb0d259fa08122d8bcfcaba7f167
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR9
+%!PS-AdobeFont-1.1: CMR9 1.0
+%%CreationDate: 1991 Aug 20 16:39:59
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 174 /ff put
+dup 183 /caron put
+dup 184 /breve put
+dup 189 /ae put
+dup 190 /oe put
+dup 45 /hyphen put
+dup 46 /period put
+dup 51 /three put
+dup 65 /A put
+dup 68 /D put
+dup 69 /E put
+dup 73 /I put
+dup 79 /O put
+dup 80 /P put
+dup 84 /T put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+readonly def
+/FontBBox{-39 -250 1036 750}readonly def
+/UniqueXX 5000792 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b448685bdd20eb05d5e7c2126132e33a59a7170609
+dcf4871a5d023c9ef57d3362d9f2d7a440bb69bf653364105f16f4d0f03582f9
+aced3d05cc76489b16e3fa8a446094d30038b06ecceda269f2eab9d19a99c7f9
+39f9548f206c5a457a19270b2b82c43b091dfc5573468eaa3e7a4a32f8042891
+d85e4b180fcbcb3091d2800e54c87d84ce9cad6869b5aabbbe47f40c68799893
+d22b765295e1e69e33aa048b7ed98ba480ceca91f3ebf8ef85fe9a3976909626
+b95ac5940d53f9b02215d84a44837ba25ed15cce0d504f1d335065594f3bc824
+5405407591cccb11cfd4645da60d960c0b93f187b0cf7b105543c0b70f89af5d
+264b6c026e3ae646acf145950202ec73282111e3e601cf2bcde22ce3edf6db23
+516481420f26552ff4472d749811f27768150450d0d0ebe3c79f999e99b5c0f2
+2eaebb12d97782b1bd91b2a1f62a76412548ad53c0dd411d4a08c0f071c2c218
+63d9adb75a4621803ecb84c2bb235b620b658984b2d8e0c4637e2811bc8f0d04
+6c8935afc70141e1b2d9c23bdb251d304b3378faf8928bd09686aa0340fb0cb1
+dc48c996ef91530ff078666fad227a3589f50b605267212d3a65ebc1019a8eec
+9a0739a00279471a01e1505c17658c10030fae32f274fdc8c8774b0d5406c384
+a1d17068dcb0c2575c562fdc5a2176609bad9a2c255e426a4325a4fc3053c7b3
+2f35f7bbc9aa50135f30223360fa2fbf019294b3af98224c5c05d6038db08bc1
+4103010094dc215ef9ccfb96b237851332c8ed81a9184cced4edbda26b381f0c
+73a2bc4a92533b0e667e82ce49ddd8ac9e34d9d40fd4b5b9910eab3b1234bbf3
+af6608d66eaa424c158eddb75fbe39462708da8f5c18d92fbdb2f534598a844a
+e076f96a741f8002af3b38d7e4bfa363f5f5d1193014f71d631ba3caed13cecb
+d56ea24bbfabdb1bbb34965f1eeb3101eb797eaba78801dfc012d33b960aa3e5
+5c75764bbefb6c1c1125220a85150746e5f34bcea910b9a93c554add18f6ce35
+b7bbdd3ab555242c5186da95130ee8b000f7f26c484b87148fbed5a70bb62216
+bd5fe84bb7f0051af7fb3cc7def3e66dd9e663721a9c9aadcccfeaea57dd7cf8
+a3a21792e41c0d443940202e2aa4d7822e9c0e163e1add0a7bbc128691ad4818
+079f4ea9f4adc1f35323213d7c5f0850592d358e324997a403f4be0ce5eb1c7a
+11697ffe010849c9edb6bb7fbd045c83c34b4ae3256584bb27536dd7ea495988
+f37426988605a79a6799c9a3c52ea1279eaadd0d430b947cae825f8e87295e94
+84bd350ff3c2afa2f4b5bb0e006ee96b476ad34067e9e19619f290f8a370d707
+36297d582ceda10b36dca1a0a60d5f68a805b86399523ade77570cdda917b534
+aacde30278250d2127b25324cd69382e90b7d918e69801d1485b2080851b615b
+477ac193d32d804ed2cf9c5e9d38d7f1e8d0353475f61d0f5572f5617efed1d8
+baf69dc5955ce5e15d30b27eed7f64f26122f042f9cfbd696912cedf17c7bc7c
+646c036649409c1e16e9e0a4d55458bbba18c839a2fa1f0f019cd759111a94c7
+a48114d6d875791e7692d0898d8c25d17da73f6c9754211f4297e133ed385027
+7a3c033c04a8f1396c43654c2075307e9a09be59195f10079bd3cf1b4783b422
+5ca37f053a3f0e827e8589c48dc4086f3da17ba4bf89e7f15ea0814a4dbfb939
+26d029b19912f49f0f42f3524a75b5830c46f5aeb9f1a2430819dc7c424c5140
+a32fb3e3f96724bf7913628d925d44a2434040889d6e9869da96cd60fbcd1520
+473d30306a76aa4631fdf98bbd718bef3b7a91ad8b322c03be98755c7674148d
+ad93cfa0bc51f81f7acaea982345a680058d3dbf1d2f5643fe842c7887dc2d6a
+0a035776a3ed4d5ded8d2f15000e91d835a212b535b5537d23d17d2da3ebf450
+768b449b18fa49740a7b05155e6f4aaf671824b124e8c07012a8acd1df104a31
+5b7081a755f7dff148671146b5c2e7cc73a6dbdaef6146dbe2272b65048e44ec
+42480ee233b4ef05408556df73019ceb6bdc33d06967d8e863170dad7104c407
+3d9bf5fe16dd8cd775d5a297b1157cbdde311c707557bf0e8df195228d144655
+657f7d5a1db22af8d12cfcd3ac1b2879fb932673b25b7f0a549e5d0416964323
+2c4a4eeca469a8ddb1be4817636516c63941c54ac39893167eed6aef032d0077
+45bb72153df94f3b33377d60cfbbcdbc0dcde23d6e03f4a7b8ff6ab92b87e0e0
+e0026325518984d6e9ea60f8916cda697401d215d989ab4f94c21b060f411916
+537a91538ce9b98c78f4820ed6088191670243c776e56554f1c58cb523ede6de
+e09759726043d88e9bdc446fca6d1b7cf25d353341d9e22019259723fa58e271
+a035eb3ba9a7a893316c1144087f683ed88f7d345990956142ca06a79ddea3bc
+e3bb8dfba9d08b73924e4b22e108940e99a5bf2cd1cb97b2daf51b41d6a45a6c
+ff563e771f0ee4313c9c68c5bf5de6c24e6a4d884bfe9e8e363e0fa314de175e
+c3e34ec2bb3b9fca06f59cf24cca4dab72d0d2dd99b439733a7f2d879f7a8fb3
+0d8fe89ebfcd8e4daba9dbb02a58be39c4d15820c724577c10ef15aa46dea9f8
+278ed890123004c63b0e11ef258e8a7b84d4e91e274ef6ce605b6dc489c278f8
+6edfe1a8fa60b947c60602182d4663220646b7cf8e161f8dba8f39f5f41d103f
+1eb5eebd13f73f8a6426dcf889d6d04f96fe0939be02926c4dc7d4ff5b56b242
+7c228e30756aabad782522e95b902ac0945ab0b0e1bd34a81348e06ddcb012d1
+d16c6472332f8552a966ffac9fd5711032341b6a039f7b5c41ed68bfc3038990
+5ba256ba64502f40b3c80aa9813e1fbff45cc88811e630243a72b736374c301b
+f0ff1da4456c9cb68b8fc4255ef4ce183c5cdc935b09a52bc90aa97de0a9950c
+de550464b8f6c7100e1df5350ff34f23249495514adafad0c5964152ef9d81a1
+3c3921b2d408bfb4dc40faf8ce3a66f35d0d37fbec11f30fb78a668138e41195
+df030e7eb8142821b00da0e0cbd5d3cfa7c5075b2ca7c37e28608d6b0f4e446c
+d66fbfdb11989cc4cdba40a98b67865f5f8e49a4872f1ae6870c2c442ee1d6f4
+908d754926a9a5ef2978a23b60e2da75e814246e3a886e97012f4fb82c003c05
+5f5bad6fd47444498fb933f1585e38b7485e98ad7727aa0adca9757d32ab3458
+be342c8f65ec403a05feebeb004f1d5f89ddb062e35a5a9aa91e52df15fa36d9
+11a7e7988640611dd525bfb2201ae48aca2ccda2c2676f3598266bddbbeb07ed
+4e59217f1dd8aeca3f7ab364fec042396cfbbb49df1fcdfa8576b494799adf8a
+964b982fc8526d0ebca4cd947e3d4b04e7663a2d8c943cf7237b9347d86c1b8e
+7dfba8ce7022c48122e6af71483b5b59df53a8e7d5c34b8af1dd9ab4618252a4
+6faf35a3bc822cecb5e6a2f535a3bccd26eba122fdd66255c7063ddfdb7c98b5
+e440501b24d089b0929a822f48ee06dc70dc04243e6854ddc9561ce87a3214c1
+2166ba6f70ffcc66762f2bb8b5cea33a54d1776504d198b7d0772e0262657d20
+ae7f7b920f794b38be84f32253e61066b2b87da75b98426f32ec42dc1fd44497
+2d17ee6c39c625ec597ab12ef00131b8ae64d40d1445f958fe4d1a35cb58b7c4
+fcfbb0b5b793cce72e4903506b523bd89748b6df0b561f8dfea37c217038a4ca
+54c9ad6106b1eb2cce429b16bf675079588d2804985a07f5159e9be507f166de
+b19f51248ed2cc773e12ba8e8f1d048c2d9fffa2c768989c7c09bf5aeb085de5
+a7ba23775d0e07a2dc1152cb0cbf09d4feadf3e7dd7a95c1e508d9bbd8443535
+7aec920ea06d3946a5c87c592c7b0b237153dfddfb605d164b697e99054a56d8
+40a6c08969e6f516ab1d0068abf123062573a0873560223ea46a0414a16871ef
+54c2521a0cbfb7caebf7100d3850c3e2ed8727dfa256dcaaf48c29c72879a7f7
+d4778ca142ac01a9c095f144e7e74ef27aa525d30cd4fb1eee0e53461c01e597
+b594b8f21cd0b252676f82b017a3308ea42e59f863582a259936b44f0ed456fb
+50c333771aaf9460adcd7038f43878f7f777cb823cc277bacbd7d7afa0c3d1f0
+5baf58ac65f5dca41f3cfcfbca94ffa0b5ec010f4e47e01f2d0474d0d713f9fa
+47fa8ffe3fb40f35027dcdcfc488949779c5129b2058fe317025260f91f605fd
+2ac2a809668d2dedc564b2c81871fd84237612e1ec729192596bddd1e71a42da
+aa6176f184efff9465d413afefbe3900559753e785fbf3ec42d8a5a81a0d8e07
+23180b14f03046b97b9760722fdfaa14e9b9b790e719fea8d7820dd3b93a7adc
+747b36bc114a5acf4a09029507c5e716ba83e32e3e37211cee17bd993f613f5e
+2bbda53f12f7332fb3678f59f77f60e79da606b49822547ef6dd51c1b5c4867a
+71257f9a03c0d79c7ed4c57b62d9888409b8b07ffcc405e67fa67fc61e7917c0
+1b41796bef611cf15af37685920f97a49567a075db6425a9f82dbdd7050ac0ed
+a43de43b06193bcdcbdedbe5055ddf1d7485df15a2d91cccd606be6c6c08a662
+c020724bb723b42d53b2bc2182bed7bb006344112ffec913b91a8d51cdcf0814
+660d6eaee731537d2de27572ff17a0f7909e479df914831da56a19be1bbf6ed5
+1ecd9c6511ebbaf7bddc8c47ff61f8fde30d442966e1482ac7ddaf96c1e9cf66
+cd4564307a68c31514045c2483a600ffba96c13859ae645fd35b6da54a8a56ff
+afadbf2cc024794b25a02ff59b9a6b9933f5aa72a3930768fe4a97e1d0c5226f
+731732b3cfcf96268857b821de83d855d08201f7b84faf33f0d6a34f7b5e6d5e
+e66e3b431c9c2812669df39db7dbf77504206832a638bac0754d0b8fbf833e6c
+20f873c3dd05718163ed9b154510d753ba7259d0618534c5378404ebc886a107
+21b48b76d8c9c750f1684cf159ecebf42c5519980999bbb4773ffc24efaada14
+ce5a38f1f46bbb060bd266b3a8d8d22cfc744597ffb8b22abfc57aae97c51b72
+37b0bb0bd7409b637c838ce504d78a9db3c234cb4aa3a2fa975a677562d03789
+979097546a8d084b47c5070c7ea3707fbb39ee4454a9c192c4c6dad79eca51dc
+9724549f65ac2d664d4f0eef1b3c441d60501887b5d210e669f423b9fd8a557e
+6b88df354d2cd29c3380594b8aafd5100be9bfb809546d082a79d6ee1ec567b1
+99c693a8f76885fd5d05f6c887410599fc50c0e6b90107888f0f1e6ed3561592
+78fff9ee4854b209564ce0c8c9d2d2a83d9f1f71fdd442399a8274d4882ec30a
+cadca7d225eb87163fe16faba28f6a722d54890cbc6b38566c9ea3b72b5bd9f4
+07af8fd7888e718af68af51dd7861e7951c45d8a8499c1f55f70d34eb1288eb0
+85745c7b77a301498f481844b91ceedb74fc20f538ccec5255c2a06749b2c641
+f12abfdae2d8a07e5f384720ff7bc73b4a9fc749cc1f7367f014b4a261a2a7d9
+18523705d113ea9c793bc36086e24cff1e8627b4da3d6c160e0c8322637af498
+15dead6ebff13bbe6a215ec754bd482a14dc6519666eab2c26041c3fcf10df97
+6cba2c0866ccce27064d1c36262e2f23a81bf5dd4bcf67dfedd8dc3d2c2fce17
+02749ca5b4a29e02f5088d4b97f8ebb69b506467bc3b0d22f3ab8d5c9767b215
+a6468a70ba5f14f8a0feda46884b1fbf53c024dca61209a3d2c1614f3c9890b4
+af1f70b1ec417048d8cdee95bead6c34d3f66be4aff547087bd994b13d735169
+8454d6a928c793808d17bb1af99d1e29fb2dd6433c8721667b6a751bb4c2c099
+48e54ca9fa5298da95695fc151c4c3b819908880ef25185639bd2714a473cb7f
+26099c2cbb32cf9b83d39af873e8a7c881300323a60b2fcde0969ec640c43d53
+26bccfea310d3b52b77e6ee5a6b5178850f5d6d803325758bfa6d6cb40704b39
+7d0bfccb9970d89a22a632f20d5fb18da7b3a51491fff8c20043c0416f089733
+a19a2ee4f3d5191ac02cb1b494f04d8f522afe8ba7bdc9389541d3cc3747af47
+22392d6e4ceae42db46485413ede5268fdd5e37ad39b8d27bc866182acc5d4bf
+798d2ed705d64eb3581ae0bce090ba38650e94455804572d599c9982eff7b978
+47a18dab014ad854f26c4598782ba84cbe6e28ea4196b8edabe9e7814f113090
+09b2dc7cb9cf22c5f384fa39aa97cc7136bbb2a7dfdc5a199652a4ebfccb1019
+d1113b4bfedd130f74546af3ed8bf2f2606038e47f1cdf1bc68845753f5bb730
+9645155dcf3ab7b775023308e102e4ce8ae1920237e525336a86977b5e4ac91c
+67670666291041a6cefc4204834632780ba08e7e923b0d9aa7882789482e6bd4
+96db8c0599366bbbff5ecd006f3c73053e0469995048ae13bb9a94a50209fa1f
+642a95d610f17e9e03a4311676bcdd793dc057ebbde0ef264a4d91af5d40d17e
+c423af50e11227cc813e578cc99f8012655956fd91188cc1d53b302ff83247ba
+b75d26994f7798b53c9f5d95ebe91d6eccd405705372290352c8cbb25b73a4b9
+ff581c075760ccd201ac4615ccb2d9f89c21bbbbfddfb056a1eb0e57565675c9
+742604efd414c42c44703a1a21326acbcdd1c6fda52bfedb467bd50a313f4083
+4dc0e4994e9c9602c16caa449980889fbc7e48241c621a535bf6846ddec47046
+bb278a37adbc5dbb1b6b4158bf406c08becd4594beca2772672d8eca631f1916
+c1e234a8e6502a86c98c93da6875edf3e5d831ca7b345f2a79135269ee81e53c
+bd992f0cf26afce6ed51c2d61f2224d54d8e33ac1e96863b7083d0e83cfe9450
+4c6ad3cb4452f485a1344a6c292c2dfbaf554fd55e2805785e05f427a5cfbf1b
+9b5702100a3c9a3f855902af314314542bc9fa52e5428f7e0bd47fe6dd05fa16
+da38917ff450b5dc40b8b8861e323652ac16f815c150a342cf1cfa36c99c5ed7
+eb739aa791f9034d7d3ebd8780b8dd16f31ada18872b53f730d58aea61fd34fa
+1fe647273df97ae59426b91804072324934e5530173d6b0e61693473855dedd5
+71378539bb709db4fa138006cd17f7e658150f40a7b9d659bc2580c8b129570a
+324692627b7680b3df3762704cb419974ad4d9b49747624ae3195ca46bcc3444
+e323d5e80fb8e8282ee9466e099b97fa27168c57d38e7d366d91508abb89488f
+14870cfb126d308e021573d15140ece12b56fa60873dfd4e3c905586c5fda378
+5f868f125170bb1fee5e0cc6473a4d8882a19d2851a8f94f1ad07edfa869ed27
+fd4ccec7caeed40d7e2c6c99f9f62e73e4d19a7f53753e834362ced809838d26
+3bffd19b229758530346a516870020ca2aa02d7d1240ec0709618e80572f5acc
+24cbb55d6842ff201cfb1f3fe3758955c2d57fb7637ac68175f577543e972b52
+9e190061ac6252349337c5d16242f90b554e3df4bb5084d433d0d5e59aa451c0
+638b306826c1ef8a6562c1fe821ff39159a244095dfa51797bf4e887e622977f
+a456075f24cba71766c9b0d91475f1df26ea5dbe80df27eef301d667a26c52f7
+33067a65cc2c1b3528ad93ac93b5139361027079e8e8b7cec7f8b7b4b724bc9e
+ff29f197628dd32c8ed0d2a08a2b7a1d4525009910d17c8298100c6be4f34427
+f028d26466d77798bf30d962805995a7ef714b5cccf47f47ac8a0276db0243d3
+ffc41fdeb2cc3bf14e70ff84730092a0b047a6e84204128d1661847d1eb9dd25
+ee9a26280641361a00273ba9821ff8edbabb18f91a9f351fd5bf72127eacfebd
+a503da2f0ce5d3c50f970d778f6c81b4e27203958ec536fe8f8f8099b16281be
+4b1ad5b8788199da5b669547bb10ca526da0a72665b12bac3a30485a15076c62
+10ff732b5958cbe477f466cddd41a95c08e7c75c4219b583d33974633b762a96
+5cc8abffd746447650d60920a4ce438d80f494cc86ce30a4b01e318c38cd25d1
+86bc4827de73a44c5052571c5b4fe9b7e79b0b7d5c4f5aa4ef2a40ae4e5b551b
+9081c2da7e9faef3fc69eca73c2c1309b82f8139160f2099760bd2cf94213f1f
+3417d75b30e13c96edffd4d6497adc200edfc841d8f35b5ce33606d1567aefa8
+e0d2a1a8a47488f0f3a13287aa7d7a4ac8ed7fee1042c1f67c41b5130dbebea8
+e6b97a92390a2164bc6a5fae528f39cf07d2bb0675f140154454e058353dcafa
+bb0485a70e2d7dc2d582d7eaf30890127d7ea9c23abac12286093468150f2fb2
+e63d1cf748bbf30be4734e03fc8643f19463bcf734fcfdda1f77a3e3e67f9d9d
+b096e8a13d0dadb2fedfed2fe437867a287c4505b4e3b28a5f9ba79bd5a1b88b
+5d5a142d2b91f5c99fa5165e64d5a976c5ecbd5153aff544c89a5289fd5c7ffe
+caeead7322109a5045d98058f6618bb32dc2e156074d7ee9c580a33c389caa3c
+e887b192144e4c088595910994ecc735ec6fed1cdcd71cf55e1067307cfe7792
+43060d33f3733fdab5f83186b43b9fa7e7beba33aadaf95571eb1e3c682acbea
+b1693551edf94b4bd56554362f458144bdac6ef7212de5addb423b12a803126b
+443ef1313addc1a46fbe6086510463cbe0233e85bfafb4282a8d84fd46c2d80a
+329eccb56c93ac779875c2fc1e12c0b4c9f5d7d6e7d3f81ab0c701be0be5bf9a
+a3c16ce225ff5c213661169a717167b7eaefbe7d06cdb88d9448b99737efb6b9
+c6f1278136aba22a9b6bc60c40f5bda871ca6490873dc6f928772a862edac89b
+2ab22941b55dadd4552c0628fae765bd8bfccc86e2d33c8a748d38d926612d63
+188ec31a66febdbd15534ddede78c87a07a823778a3b93d9194d6bbb7e6afef0
+7999ed88b6d706dd67014ed02136d0420363535d94aa7393d96085cf2db544dd
+9776638f92db298bfc682c8225be1048a8990240a9b0c3da0796fab32d67cac3
+6ffb35d2fe8b884cc91834ad09a846abc74baf65430fa49e68d96063badfc7b5
+a43b8db19bf7db47a05303c89b142fd997542d9386d07fa619fca22cb6133068
+d9b952edfab36086c9b688bad8093e9782aae71de713fd9025881ac5f2905eff
+e64831bfcebac8db8fa8a0cb495178c27b7a1fda07f1b6a5de0874df88655835
+c946701493ce8f3b929b2edce3fe28ff51d473a901cb12cab3cb66dae8bba3b2
+e2c80738916d6b6d6196acc327169f7945ab59802e6e20b411aae50a94f9a273
+3679fa2e1b0279bb5e00d55789015a43ecc7f16c5ceeba6b3f38cedb425290b0
+affc33b01494fb1ce1a0790e438380c30a1229bc0520dd492ec22180d79683dc
+2130029d213e7bdc4ed7044bdefcb913bd1e202ab686ea48486e492388254978
+fcafefbd1f96e83d05340172fc1bc28ff3f38a47776c1c6cc551ca89002bac1c
+8d105dd41db31a11ceb7d25d1e8d43a6db526c05d242a9b0cfdb4394c0d8f468
+7bfbbc0141768c18fd0b188ddfdeb4304109d3497e4b618c841bb5fa5cb48f95
+310eb9cd0f231b64ac31c52a5bcaf3e0a157e57ced55354e3e843018e51c8219
+a64d6a026f85b6dbb979ba223efbffa45f9799543c5216a1378ad99acbb3d5db
+35460b379d47d7172128cd3d5c74fe599ed35fe258a52ac995fea777547b613f
+310efa5faefcbe842e0e43865b0cb2b5c12dc4ac1027ddcfa3ea7b99183407bf
+ec
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY6
+%!PS-AdobeFont-1.1: CMSY6 1.0
+%%CreationDate: 1991 Aug 15 07:21:34
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+dup 162 /periodcentered put
+dup 164 /asteriskmath put
+dup 174 /circledivide put
+dup 183 /lessequal put
+dup 184 /greaterequal put
+dup 189 /propersubset put
+dup 190 /propersuperset put
+dup 121 /dagger put
+readonly def
+/FontBBox{-4 -948 1329 786}readonly def
+/UniqueXX 5000816 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f059084178f5ab59e11b6a18979f258b8c6ed3
+ccafbc21aca420c9c83eea371adc20e038b4d7b8ac303004b0aa205f04135140
+76407216032fdd22e6219da8f16b28ca12524deb7bca073cc5eba65c102a5e85
+fd48e6d062cd4283ee570a7774597e5bf0e3400b6be72db0115f3cb12db70ce0
+83722870cddfadee715f10f1fcaf20e06f3c54afe5ca238539bfe2b596116e83
+f5371ff18fa5003d8543226cfd4025f9940365b392a858d27f078d3abcffe4a1
+54e78c7692d1a32bf935967c64f01b24788ff8325d61145e2d4a489fd986fb77
+38e6b254522c77ca2797a504a9ce4676a77ebacb026eca94dde5922c936f8e90
+c43e285195b2b753800c2ea6959e532fa8584204c3c969db1e25f1094454a5ee
+479e6877dc58184b4f724edd7fa3dc81747bd4ce5fc88b75d1aaef356fa3d9dd
+9c6196861bdb5a9a831f41ee70755889ef58a9a20fc1997d7300f087cf44aa92
+855dfeab924aaf9dc81e1f2f30fdff4d314b6a0a0cd74b0cb0f6d7c4557161a8
+47dcda8929193c4c18b9e2109d7f4bbf56b0b242fdaf03a40631e101643dcf59
+0c184abd7075e029a7eaf58dc6a5d3e1b72ba1395bf7d0d92d24b84c88c8937b
+c89c8b3c8e3b3fd78230613d103d182ef38fd74a18ed88b142671339444e21fa
+93e0b97b1e0c00ada4cd257bd9576bf4a68155cd72303cbfd4c944f7096e3448
+c249270f11fd8bd1ac6db5352a86660353e3ec8f30b4e59ab49944b5bcb9a39b
+a31a2e34bd4a2bfd38b89647488b7cc12ca17748ea6a859bf7e760289590bbfd
+a01c748d7394a912bd3be1f7fd9577d5d70c1b59fcc61855b2bea2ff36d32281
+6ad25926c83c850a719c9ed611a61cff3c2176855698eeb565701c44c5c26aaf
+3b80ae5ae52d0e147956c2b489e5ecdabc522a245cd972de1ce1dd8a777f531a
+5068a2ebd8ceb0599c31aae1d30269a29a907179722482e56ed8ab33dbf10e9e
+eea0126b0ccd4e5b3b76ead85727c7c3c1d224f06dc181374f59afeef7141f81
+468f9b341d4ee565fa21b48a8579ca8eb66079be265d8ee2de8156d28bffb7d1
+a0c1df97921462517ec1e518fe92d4346b976c7c87e85d99158fecf07f69fadc
+ad5992246e9d8aa962357b798a68d9bf0f0f1e55ffc5a59d0805649b78d0cf75
+6ea6206e47458d04eb0dedbcbdd084500d1740a68e25c76a00d96ac6cd7b7033
+f4cd4867c4ff3926817d240f5bb2bfb946b911181292dba3ac765f6008867620
+0d478f09b77672c482cbeee24a1eca7e9dec4fb27ea63867f7d48639249a2225
+f7ce0f858d665e6c0b6914b87942b96ad784564b7f516f22a84a78d33304f746
+8034bf19921f4b57c18feb297136bcaa7cbfd6dba7ff65e18b9845690b9cd654
+e1b4a68edff5a899cf93ddcb7b20244c324416fd510e498d200d4ad5ea96b422
+2b8c93a5c83e6cc93eddeb12b366b06bf799a65988a71280acb6f5ad99b8e287
+f22364c9f36363a5f6bd8e5b3d91c509cffdbf4359a0dadbfb98f5bfba80aaee
+97349bb543cfe3452bad6fef25d69978c70ccee64248abcd3a692a40d84fe5da
+ea6919f8454d6992675d4a32e67ae6c30a4c6eb7ea08e0cbc7a24154064d4bad
+25de91d303ce8d798564d87a4a750488e6ad6c8aff42b655c9185daf3930af3a
+4649142fb93ee129a41604294d8a4b5c58647656523ca373646d0202e37f72ae
+069c7c05949e37d2170bdff1f890d37ab0fdd4fc2c330c57ed54661fb0ce1348
+d552b5234b99299133ded6dbc16196b1909d76abcd6c160e3646523b0c29665e
+a06959186d9cd8ac235731d018a0c3f83f54203ecb41e4b5fc9b4d786eb6ce51
+bb011c4ac898176f8f01595d4d9b09d43ddb9d41def74d28044e166247c4fc6f
+39c86c5128f67607ed0a3e895b413805b7656af611c087c7bf2a079beea7ccf7
+86582c4bb9521f5065e4d524ee33f98ffadf15107dae06e20433ac308649c6a3
+dfc646d7b691964352e16ca04846a23fa145c629414af659d5181fb1e9375fb1
+ad14096c574e34272c57d10a6f0e9c105e597d634e2bc0d8c89a8a3fc6ce7177
+4dea5245c34358343ac17ce141fc001a2ef66b29efb9e6c8ed1a6ef4f50c0742
+bed4ea9ece72e960f0a0209c0e19631d14797ced93114617483c4ed5ac7c485f
+e6352bafccf3eafbb13da264e5e99bce8f85ec7ad8b7588bdf412164433e579f
+e51ca2aacf4218902ca1fc1d66eb126535a1ef4dc5f0044d63ea1eb4bbccb3cc
+d181f02776dc740e5bd94860f9b592734eb5645a4faa2dfcd7c87daf981d51ef
+89aeee23c67a422e4fdacd3b0404925ca311ef8905f9d53e84ef5dd756774c38
+2e5b6280569455e59f0417eed2798b4d3e0ba1be229cad6ccbfef38106264f00
+e7842d4ba4cf999662
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY8
+%!PS-AdobeFont-1.1: CMSY8 1.0
+%%CreationDate: 1991 Aug 15 07:22:10
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+dup 162 /periodcentered put
+dup 164 /asteriskmath put
+dup 174 /circledivide put
+dup 183 /lessequal put
+dup 184 /greaterequal put
+dup 189 /propersubset put
+dup 190 /propersuperset put
+dup 121 /dagger put
+readonly def
+/FontBBox{-30 -955 1185 779}readonly def
+/UniqueXX 5000818 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f059084178f5ab59e11b66566ca5ba42b1911a
+5d7f1bf343015eece988b7a93bce0c7aa61344d48aed9c92c8698d4b7c9951c8
+7d103f2414b39e1437f9d2e50c4ee5f218f2e6716926a79ea978f13b1f855345
+191dd7d31d8f82c2e3343c7a5894d95bdc492c28226834efcb5c12fea36ac5cc
+430e0aa604961e34888adf6c1f3954cbc2498e225d953cf5685852162346f474
+5a2a7087d5d7ad486de16d2ca8e15cee26e012671ba3bdc7d95cc8c98bb774f5
+08625e968aee27ff7d1a06e63bcfb5aa4876c3f8f13b30ccccee73c3caf4e70d
+98e6ed2f422dbb4950bf789680e064150995941a9f4dd68a575949847a7d012b
+b910bf03a427298b3c19530c7546a0c1d19509c200db96985216165bc2a1c458
+e24670c9f68e76065209e2c047b6df32d1d005cc3a7969e60fb54112a57deed3
+81b0d50ae434865f0ceb8861a75459e915fe3097fcc16958f253edc5de07f7e6
+a4df42f39ce6129b5523aa9ee89346a156b133a4c5f0e1db21a8a848d6e8b952
+ee2939b469ceaa66d8899c152f7da1ed40d2fb86830bfe801fe7e9d6c17bbd5f
+e1d9b05801cb945f08c499ce708d0aa3d2971f76419d046aea3e34de3594ae24
+8865c24afece38f62563d49fa4d18f8e7d05245710d95108d1702bbb619f5dbf
+256c1454d1af96a8848ca03433a1a68a3e09c9bae765a7d6298fe6d9064e7d1a
+c00d3ced8e1f41096ce968e4b6a6ac83e32250935ad41a17f529cacdc457c532
+52c0d17e8b94f21279f2312d97d2530960ae3d0047f9af177e34f987d003578d
+018f1b1ce3f93adf2fea0705a45a286117805d8b71e540cf3806ede1d35ff185
+d93d93f68fe7f1d79f2b3da564f891decb30bb3cb9b4fe5687003dd4c62b7c40
+1cbc8def298dba1ed7e583bd57b51db04e688ee4f8d936f14cc09c8dc765bb6c
+d8b8ec772a75a3332d73992c5bf22d14f09df6cdc73d31fe2d8a25a982f36558
+ab8141c8ab990c87deb2c4295eebd479f3375d8d7256bcd3881fe881db36d0f0
+f0707cc3143779f464bb6c7415fc49bfbf2aa1ff9c3ff0d74e73409b48ba79fb
+a2922e9cb4badb6e55e934015684b5604984daddb100de1b5ae2a2912282962e
+fcedc73e8320db99a789b5f6dc9ad00ebba233156c5ee1c18152c51d3131b3f9
+90fed8ad2a9266f300afbe1380bed4ecff063e43d5208b2ac6464f85e6d57e07
+2140cc5eb96bda3a776ee3214a92c470c14a3cce76c8ac24cb7b738f5e708760
+b5d6200b3ec87bef65eb2de7f2be9f8ad63bf0d517b7e967f24aa9ebff308f12
+595013fc0780f54f7bb275063ef1f27741c612e160f9a933625ae0fb11de61bc
+41da3a34fbae7adeb6b06976767eb3646b159690e48d6345aa83dc575b5a452e
+187c0cd884f0c1a801deaf1cb01c542c99dc4dd3c300d09580f8a147b7e1c1b2
+109a940ed0a15615bda36a83dcf6b8c465a1da730a20ad32d8299e3590b2efc7
+7f5c95c028156a84bab28f476a74e193a0054e26bf053a1b618ea2991f0985ac
+73955d0babd9b27ca77dccdbcbeb0434f8aa0caa59328b3c1052a35dc5cc32e0
+eb20a0c575e3943bda5d22b76a623921aea055cf9162087b8ce8b47f5a1de1e2
+e5999b842543349ef1cd8dd79eabc550225bc8eddfb3809f563dada9f3be0dc0
+a5eb0326da6aa9d9c65f966679b0c8c506e151d98d9521a3a10c147871504f6f
+8aee190b11d0629a6efd6cd065f1c389cd34a2970b347255ddd145bcadc40106
+09591a58750032afc5c1d47d7a1d0b7e97c63519308f99eb977aa775d8f9e3cd
+857ef6dafce089a223989e933f4205611e885c9deb88e67f21b50c15ed7fe0d9
+be33f91961c22ce248d84c0e9a3318eca9a12e1b857b8f134bf111f1d4cb6ac5
+387ce3745fb9aa9d90ea520532c1af252857297fced604231757a88c96c3f2fd
+3c44a869eac850b8f68913d03726e8a218982d26cbdc764f279ec66f25d1ad0d
+a45f510628c0befd4e55a308e6d6f5c17d485bccc593a257493cf00fe5a64d8a
+fddc673357ec4f4918e525e8e787b4020eeb53a066b924ff8d911b9a3affaa1d
+f3d495ad9a62357243418d8363c75187093986c45e0c703fae6ab77a6994bb3c
+979fa33caeb1fa4e5f3710a4e12f625b7b0e019625130f069e62df38e9f9cea8
+f06304e9eb3ff72f766b17dadf7011789cd42716644996cbeace1dfbf4822bc7
+4d4ae9d90ff6876b89b6c1e0e755c6dacba0e7b7fd3aa76404ca761298765751
+cb8241587015f376e7619022027ed0a5e382e760eb40eda7e27409c517705817
+5bb036a84e3709266b49d9ce503501f62af47b2ae5caf13cdd89c1e0af3fc8e1
+e618738dbc8f3fd3d2535bcd84542c66c1a268648cdbe1a07d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI8
+%!PS-AdobeFont-1.1: CMMI8 1.100
+%%CreationDate: 1996 Jul 23 07:53:54
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 164 /Lambda put
+dup 174 /alpha put
+dup 183 /kappa put
+dup 184 /lambda put
+dup 189 /rho put
+dup 190 /sigma put
+dup 77 /M put
+dup 84 /T put
+dup 88 /X put
+dup 100 /d put
+dup 102 /f put
+dup 104 /h put
+dup 105 /i put
+dup 112 /p put
+dup 116 /t put
+dup 118 /v put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-24 -250 1110 750}readonly def
+/UniqueXX 5087383 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930e72218b3075925ce1192f11fc8530fcd5e3
+038e3a6a6db2dcfbae3b4653e7e02730314e02b54a1e296d2bef8a79411d9225
+dad7b4e6d6f9cf0688b69ba21193bf1495807e7a196cf14c95a4e02f9cd2da8c
+db2546c6df52e524745992e18d9ff87aa25e4e1800bbe4ebb357c6ef55ed6d03
+6d3a00c1ee8073266c21d2f0ac85d656abf61d7e5a4fa87da8ec3b5329e434d0
+d2adab706b42a2e5331be5295399d803ccac03f631f01f39a022fcdf63486b68
+7d15ef284a77def7fde4898543e7b5f7ec267756103e477f547cfb8d2311c4b0
+09deff56085f5d419697af1846c8b88c1bbbae149f0f19ca3c8dafe19cec48fe
+6b38357246d8b5cef80b53bab4cbbbe8bc8318cc462a4158258f456e697f6058
+86010493f252073ee4e4c9531f23485415ad6bc901bbaea659ef701f825f4b6d
+5c9bed0dce7b63810f906b33ea4955531ca1ed1fc120cc56dc1e277a33222cc6
+c3a97552607b865783faf0895cbeccd0df54f57bd162a88494768435eda71a39
+69718c0c5912d3167bb0971546d733e735aa9bcd89f5aa154656031ab3f6fe41
+94ec225ad03ab8b67a9da43ab365c4df17c23e79f685c3b6fd5b654e4a6f2603
+6cec3a8641b0b57f93eb95f9e238832aeac2061f3153e0f375513c974f1c38f7
+b59edcc94716f2862cf71c9a2be8430985da1cd813b1e1c1b9310564a2eb1aff
+52c190f50fc981dccb64bb2c1f7a62c216f211c162c2ed1c554ef49fbaf12b31
+aa3b2a80fee259dc0a2a4242869ddec7c29e2941792b28bba7f2c6f77ef69638
+12b07d6843f33b51e01c8626b26edc34e1e0fffadede5fb468e8cd5de7e5a64c
+366967578f415484d122834de4a647541d66989f7d8b25d1712d8d16729bd9a6
+472de3a5361df402265e212fcdda5763944f19dd6fa26c4e168eb6141cb37706
+da247b76cef0af1d1744864c71d444fb566d62692898d32da0cad0c00c694183
+6274edb43b3fa810deba9cc24a73dea3e2fb448c0b2c6e78089b2a35fb913711
+3543c31a946ee7dcc95ed68b58f540c78526b4fe9a0f83877616554220b170e3
+c78c02cf431766587406b292b72d83a19d1c77baf89200df72b0c6c2fb4ba96c
+1dac798c940dc65969c466dca3a149940681d1fe1c951c91bbfa51a5a01c61b0
+9b01041bd7c02cc01a8ce6c0fd7f7e760db6a7c9693718e6db967052f80bfeed
+3cc340f2d190552475fe5464347c9166dcb03e9fba80328d6c812775210b09eb
+73f93069e6a178687ebdb805eae15f371f9923528c5c951e78a3b1b5d7aa32a7
+d4c5129e46e0c03b29c20fbb3ed1835f9986c0d17befbc13afb1bc00d381b51b
+af6dbd480ea1ada352d58e7966cfb2c4674101b04cb703d853d1f492fec2a1c2
+4ec6738ba8e3d0f75663005fbda8da0458e8ed650057440835c6b3959a8eb7b2
+1aa17721dc9283d5e24ea3036b895632995439e709bd793cd14d123f3a48502a
+5608a4c065e9982b78e4e5cf4a8a21bfc0411ee678cdccd02cd9199805c204d1
+9ee57719fef6bff4aa37d335cb695c8db67f9f57fa95ab8449596167771ac7b5
+d71d91de7cd13675c81750240c25eaa599602322ada45fbd2ed8e1305e02aeca
+555612faa4ef2588044d8f7586145ed0fbc8b306a79edc14cee7575efbc39e40
+2c0e6395545eaacc6e160aa57210ffa790f18ef4afe41c3f9dd391b13276e95b
+285ca52c78cbaccdd521f38acf83b2224aeda3dbec37eae5ae7fbfad238627c5
+987d8d1397ee24123da38a2d1daa2f0b51671f1c5ed180a6cd82b6c59abbaa34
+04d7e2a4a08b36421d112a7a8f0be2a358462438195d6e60bcca6c50dd8ca8c4
+6b635ae868476152553345d632c5208b27761fdf30b7d444a26918f6725546a4
+aba40c4190deb7ee05ba6a0c870404a0ee4cbff7fb16fc220ed82ae9d4015641
+be2105b86bfb1990fa06f3d47330a99de8a255d77cfa28f08099e12279647ee4
+5c5331154d072a5805aba269ec6718c192c8bcdc55cc76d7e3d299527594c500
+9f2c3eb93022f2f2563b942a6808813729ea3f66e5a32d36951650d8280f7b9b
+193cb156aaaca384d21ff2852150d4c7cc1bc96d8f5af8ce7faa5c34e079fd03
+dfc97be49123df612969dc7d1de39a31e9f76d79a90ff5db1862d7b769d9a963
+87b988f7e57f5a28a09d19b6ff288fddf6b6c7e4a001c5b276f2e2285a26d32d
+3a2e0fdff109298fd105823c7273ff69e2b64239568f5664de5520cebce102d2
+fee33fbf921bf08d0f34be2d5b36f9d79ee5d41fc7211f162f40780534a5a403
+35ab2b05a7489eaaa4f2008abf02e914c7b1219c166c430d7677c0d0f0801f7a
+b08c0127d5dcdbfabbf53184d6050b7b67bfdeedb031f47cbc92170be0d4edf9
+948956ea8634dfcfcdb78c789443ff5f2d1df4f69a66e2f04c28e50faff92f6c
+2325df3c595b3b0480f1908e0e9c97c70c21d3a26be0713985e5545f36849cf2
+4792bd1644aac169568e145e39278b38b2f9db365ae566f5e296016e10ec298e
+772fe9cb25bd3da4c2adab3b41107d1e89070556abfcaab48665082c1e81a9e8
+591e6bcfa54c867aa2a17efde0089a7d68a2f51c4a4e31d3b4f98f11e96278ba
+818d124ce0876a5ecb09ca3b5fa72ad5151a32df5046a6a8d51661abed238491
+ffae3cf71547bf9151b519289591f81e0a07ad2ce688a73b6095406201b66e6f
+29e4c116194b3181f9f520d2fa42ad29e63de348e012aa7dae5c3fb988376aa7
+4e3e2ffd29cca5a1e528b018c3486b958e000a92ca44f11c4d1d85c5ba3545e9
+6d0a8e8e532c1a4a95e7942d6f2888529a5155e363c5b9eb71a4b909eff7f36b
+101b281c8a8268babd49451c6943241e9e2820ce38cc9bac8e69ff2734cf48d2
+f5bd0eb4a593f964131606f6e1b23488b7648bf94e04d12abf4b6c6acb355ad5
+32dc38eaebd6cacb5ef694ad76a33997daaecef58362e89cd4fcd3f933699522
+ca7791b2587bcb79a3424536641a320ca55fc79fa4b50e939a76fb06aa850341
+0c4bb642d94be378b5add29cb87670edbe6514bc881574055075b3460c14bbf3
+ea67685db81c88bc41784fe8fe0ac89a2fe692e43b9d52fa9b77a3ff31b02d2e
+0eab70083cda3c5b38baeaf04c0795110ff4513400008fdf79e662a511942b32
+98eced30becc28feef6ea8b73a91b8d6fa9f003ba49c8d833ad5af135134c43a
+dd3ff3f58182abfb3311ba41641167e3527fe1e89db23e65761c2a6440c26cdd
+af6a2f1558ff169efb17a7a9b5fa45fec131370a2dc5f687352ddb14e95a287d
+450dbb952fa02b54f53cc04563718db2ff9f6ca8bea0d7edbdb161d34392075b
+71e2c887e4a75fc5f89111df2e7cafe3ebb209b45d0c90c1e56d2724b25090ff
+c755236a1cd79b8ff927dfcb04138407e625f1cdf642405dd5c9e1d75c7975f5
+e282b2b3aae03495ee6decfbd30d0bec8d1c418f9200c9a4744165296491d7c1
+a9b6746fc46b10227145c1b27275fe67f1119718be655073073b1a3c8e2792a1
+ec36514aa19970caa0baa5acc2ed3b03c5513617875cbd5ba62b8755b51e98d5
+477403b9a79f0b9eaff922ae35db59bf66bc1cde3c46d208bc042eccb3646cda
+2170cb0fca8f1435f3d65ad72e63052e6c660288d1ebee806f54d2a7d45700cb
+315113d8c096c75aea4216c09fe6e8cb767be97e8777ce03f22f363208f8667c
+c09ed1ad2f8a2908632cac456707c1f9c36a2e120d6390550926ace014068968
+5de7a9383b90e41887aa1f4141a70fefa3d31e86657348ad83129bef80f067a5
+286e2478ca3cfce9c2b7560dc5941694c2d5ae0bc756f2b13b8c97ae451f2a3b
+68568b8ee7947de18ac81d1005bc33ca22216c3ef585313744ea4db43cdb55fd
+392c74b8630235ab384d24302a3a954af9a8737d68d8c51b4ba8663f37feb703
+906b6db9bd324bd5b52970438359b2a6213d8cfdd7007da482e12c612ca43e81
+439aa3d5d4c6412936c3f8cff919e5b26985749d83fcda3ccdb51d7c2e85f985
+61bf91257508c60639658929c959d1c21643c26cf9e4b2e3698c4b1a827a6297
+856b8ba76923787c10aedd27215c355040416c599f27b2e748cf7292af851c14
+61d3ef635723b291fe1cfac77f439ff382055d7d5382e6f57dae3fae3534daa9
+95b0cba7fa27f4da591c0da7f1442830995392eb8e2fae8440b891115b1d425f
+65ceaaaa9aee47fc9a5ad9aeb5ea4a6910ad6340e1a7e7e45be9522fe46282f3
+13e829fba37535d4b92e99236de19202bf80eb04be0d5de5e2d8837ea21f035e
+c81b88019c0aeedad88a688e313757f23070d2f02e2386c16018a083e0cd3e75
+f4029457ba71e8d919ce8630e64c08b81ca48e3fb524b6deacb26e92b59fde3c
+1864b57e993f6202a924ba001f967b269054b2a5697d5b307fa659d281ff3614
+139ebd879c83f786995a7d1fb83cb11b0dcd9badc9db4f42c321c49038981273
+5d604428c9893451ddb348a6f87127d3a08781dd756b467722080eed16c2c8d2
+62e6b2f99010e9bfe4926c2c8e29393cbc3bb36848171fbeaeb42742579becb8
+6ac83453c214ccca8bd3c047ce2a6b16303c78b010d31441429d54103ca132d9
+b3b4bc3dd3c2a4258ff544974a9724646c26a4b7e4185d4dd4cd5be9654d8ae0
+322d91f41dca7f855e0dd1bc6f022f589554de06cf81003fb3102e857cb9a4fb
+1b0c9f4c8c43053cd2726b2c604c98131f42b9b65ca514141b6607147a7d31c8
+a84d837e2223d8de6f2b11fd7435305493f1eac0cc70af93e8ebbaa5c090d660
+6458b9a49bae9a3d089fcc85627718e5d236cb2e1b439eb459669d98a5245fa2
+fd50d32ff76387fc7d8a8fa29075f4e06f4447375ba845e9a1054a9934aeb2b6
+c20f4676ae3e195fe5c669fc0fd498d19d36a58d32b53cdd80949b28969dc3fc
+0d03e5b56d2531dcfbe6e77cce686f491f21883e3368cb8737ee565f2149fde9
+c824aee26019602bdd51f30e54e2aa6668b48452ba3cdb9fbf1f35c65b26b92a
+f355905686fc1fc82ea3f7156788d887d99cbe102541baa5c199b716fd21fd94
+9bf1cf5d433221c9c13f66006114335b2a2397a9bb1e36474c46e4e042b931a3
+57906fe93b930a74eb1fe36337df12100f07d84ee98a2be56628dfe92ddc7e36
+6d259c02707c15e9624f4183898504738b0fb5a919c3715fab0f78b22de0888b
+46e3546397c97a5c2bb716e73a7c307571aa340aac719fed0fde665b5b5336c5
+1afd8f8cf7aa90ca16d2ac5699cb9bf0d297555c28e8ef7fd17985a9ced5b08c
+c03634ba94605bf357c67fc42ad6348f6b06d0e0d44244b85dd86e873936cd94
+32ad290ca7b8b637e86a10ded6716b312fb6ff9f31ecfa635b7b459c1804194a
+360370faa973f66a322ef5926db707fe18b021c90e1e24cfadaeca3d3ecea3f6
+c3f844e12a4d33b9e69461021c898981c55e97af2cd92c2819495e83c20ebe5e
+5822a69646c5f479f6cadb5922c89871840d5f73381431734386f5b6ce6dea13
+524a43c60f334a483085b45305af5d248c97d1b68afaf58148b669bc9d9a2df6
+9f2b451652f16819911d31f26828db5cbe6316b4a7db5fca0901030ab0574588
+969e50833c0819ed0723032bcf2016a2dec873c1b80675ecfad4941037904ddf
+1666b257a05804186c967ad298312a1367c49c32d38d0abfcb5bdb30e4d4f407
+c2873aa3fa8156eab827bd38e495f0ec9621f41eabdaec5d8263c83d55b08e40
+949c423279ed6534e2fd4d8ee367d54d60e4b01e0a307aaf69cebd5437f7c061
+3c5e1e675e205c3d6f535ae5f4040ea682d18bcf99c6cb10bf9397fdd988bffd
+42b0d0abebb4a9910f8a9c89430da352ae3dd76ffa88a9bc7b1aca0ab37cc03a
+2012337986f8b8b7e14e627303d181cfaed18ccb5bfba34ca3ca5c54f6679819
+95d5b660f1219774cba1325cc8913424bb8028ac3920f90cd79d8aa89298dc1a
+7bbe335eeba1961b68e1d63b52fb20edb13422497e23cbbb04f6742633cd220b
+8f7ea04136acc664d94550cff43b7ada35950b893793c04469121b7031102ebd
+2202a9547778944a4d539465f7f175feff20d50dac4ab92bfba6a49d53b67488
+732ee8e97ad422a90de4127ea2e0af7712d85e25b06259da4775df646afd4bf4
+5f7e08f10016cad7786768ce44d8877ec8483e3acb858d579bcef5fdb66caee0
+0f4261729325bcefe37b751f7800701c753ea5630951e09a79ce644fbefa4c0c
+3408e3f11b955465904464242372fe87a6277517d4982186a0f0834eafb47521
+bdd3ce6cc9a6f4ade6a974b87ad5bb7446e1ea9aa46328334d7844e9855338b8
+09b26e6f2461cbe2e4d8a93605b376e41fd1564289f7d86e36b3917b89baa068
+e9a86eb318bcd836864e4e72d717c88ee4b25893df02e1fe57acaa316a49e50a
+cf6216dfa4649f9ff9d192fa1ce25e60d0643a7793c521b3876daeea292ddc6a
+d552f94b9e2cf74943431da1c187113ca86111638f30affd81b36fa4402b38e1
+69c68a81658e541e20df5ef5f42b7b1fd146204fb10b0326a5130dca4d0b9a82
+98982bfc0d1fb868398d53ea8af00c5b083694cda135b1ec95dac908ef7af3f5
+60f65400caaae90eb001c879ac7234752cb71f0f9ba918ccc914bcec8ebfc59b
+767483fea40486cec0ea7357498379ec57a9ed12a5b3cfab9f1d0c43b28ad685
+ca074fa4e5929e9ea1376d56c7ccdecd5a57c25a3650dc3f5a5285849c2e8364
+966deac4f4cda070c4781b453d50e700d695776b6e455c7cc2d9dc3478508c33
+aada44ad84126fc62422ebc0313857a25571bbc769b1164c74483eaecade614b
+3e9376da80da628f442b66cd5eb6929cb6c5bd73dd38155c4e842c9f56c60a11
+fc50da302b9b305c558b6ff8ac5a6e9aded940c35659038c7ecb4d99f643f702
+f0547fec1df13e0e007594f499ea095ce42b9bec1bd0e17e66724dec2de13a6b
+0f0bf83e328bd60f541b64b569f43755d55776111c2b96ba97f5f8bab93ece82
+b736654dfa4205c15389c5513774e940f7aae4848a5ad5a53beca0461e388589
+8a692287eeacf947812576a2a7fd629cdad536b4074a7542147f456572f08645
+ad19138396b14b9bd957814026d71ba0424124eb1b8f8ff2e7a8e4c3e770f105
+b446619dd724084afa607325221465c24da08e48d3b50ddde6f414857d6767f2
+ef9005286274e7effa2735b178526905bfd719fa9d48d0357eb4e5346422c342
+3e87de693a93cbe35f1fc985f812
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR8
+%!PS-AdobeFont-1.1: CMR8 1.0
+%%CreationDate: 1991 Aug 20 16:39:40
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 164 /Lambda put
+dup 173 /Omega put
+dup 174 /ff put
+dup 183 /caron put
+dup 184 /breve put
+dup 189 /ae put
+dup 190 /oe put
+dup 43 /plus put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+readonly def
+/FontBBox{-36 -250 1070 750}readonly def
+/UniqueXX 5000791 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204b094541f345ec367ae85ca9bd
+24568a01d3b9f8095f7420e6c423c414b3dcce6da48dd1c89a56d078e0d0e2f2
+62a13640a06d17e44ee3866c3471fb58fedf5a3b77294517651c16bdd7267d39
+a54e7171752dbde63ac19bb4b3021ce95eb5fe67390b09ae4d9ed4d704a67443
+f55dce17acd996c1f5e023c9e5a18cbeecc3097f23763acb86cdd7cd13381ae7
+4e48495ec7fa520539d87f8a8dcb3c826275469b6800876a457e7d1e5be867c7
+b1ccad69742a8c9b0ad943482bf2a4ad0aed40baeb69a0233bad36b4ca2d2da7
+322956c70375d152653500b2f22d2ab6990cadde2da14b4917f7515e64bc3d96
+bf775258fc7dae4e42a4c9b6da8eddec4a800c8aadc8d75e48cae52137e05c03
+677f5d6a82fa46d9f2fc7f56d62e5c605a1b7898b8d1401c2cac1a0122a2c8a7
+aae09607f2c5f29293a09b9959399283be89051452898238b777db9830ff4318
+a298b221c4a820c700ca964fc99e6b1d9eb0bafc39be9aa9dffa2fa326b2a466
+1e67261bb3dbc85844e76f9313ab533ee16bcb478166de5502b68e6ec1ea6110
+f53206cf1cfea419571b0243244b32ea38b828a01e62b03bcf476a32c2341cec
+b8a0fa2a3f3f339315d5f3aa7704408f6617d026ffee4925aa48537a4b2e556d
+225be09392546ad561cd46cf766f0ba14c6854c5af1a528c3842b0c5aeefefcf
+19f19cbce5d967153c4f88e51c776cfbe10d39328466f7a3b83d85601ef4d1ce
+0cc136610fa6a74d9676e4e99291d565cad27b9eb2337b0eba4148efd0eb2866
+ebf0a4209ba135ad1376cf9cc2d4110f36121055caa3f2e506ce08b0939d3776
+184328f44f4cd6cc8d5c4d0b2c405197f48f43522d60295d10599741ec0548d6
+3abea01f9693de103fff9caa7bbdb4940ed9ed8f0a829f5da0b6f879c64cce4d
+227cc13ce1a2370ca5d9aeb93e5e7cc8024a06688b7bedb5d5a5b094edfa9dd9
+37beb4981063aee2e4cee1ad4385a317eb0170248eea83ebcd83fe54d470955c
+276a2e4659d16d8e21f0e521fbcf0c59816ec70522188f1f5f14aae36fe9dca3
+69c7460983ae9b9b70a61c1254b4b6e7b3a5954f7bf3f40e05326097d59cc355
+ac57dba62506712104f19666567f8431aa7cd1dc2f372f5d80a850d1410a2ce7
+4b8738e61c4c522ba0e376a0110234805ca1ad448fc6fcee463acc9195f0710e
+99c7166d84b693019d926cfec94a45883459f5724ce38c502ee0ab8a468823cc
+935e0d0ad00a3dd91721f65e1e5fae01e5290aac8aaf7f780bb62764ca7245eb
+5b37bb67b73bb4a4cd9fbeca79eebfb292757eead55bdc15299696eeae8a51e9
+59faf7987df082bd75a13580591b586eb032322d7646066b97135737dd8ebf86
+b37ed42a59439d9e0ce4cb4fc929bac815d11b0f2ba55984890d03dec2c75edf
+0eca9b3c4b73793d9f5f8f3de5d467e8ca358eab4598b335d663e13f5142174b
+403e843f5b2f908e229cebda69f60e9afcc4e3bb1e250d9081132a7e58bf0a0f
+c91d143835989a1cff606a0cec272960297bfcb3fe5ff09c6b4477ce1d183929
+183166112f6a4bc3e09343fec759cfd912738a29cc871939879df8afbf9eb7e1
+8787627d4c06a412a7af73ea9e74173aa980902c5bd78038880c4994784b00a8
+88abc71d5593f8dc607d2e3869e4bdd1beac522a622bec381822b5eca89fdf3b
+38396916682f103712790b983ec772501bc857d01f989955e4b5eae86dabfcb4
+8c96103a7030f29638cc2380b2569f496501f69afc8cc184fccd0868b1128306
+5eb6a4707d3899f80716ca41ca0c6835e3fdb170526449b097a093dbae57b0ad
+972ead0eb73ceff2bbb504e735368c26eab8f769ee7a3c96b08c86d28754c3e0
+3a4ca787dd56c3c6134519393ccb5ffdbf781060de3bbd55e661100bd0282183
+3981aa1ec963d578413a879e5e88a59cebd03f60e184a12503b86a34cb169575
+21364a817b2eb9f6d33122fe29877e013e256113f195c2a4ce0069cc5e81bd4b
+d4f95a9c8c28796aa58c7b3067ab8783f022122a99a1d40ef92e2e00cae70fd0
+db5b7ddf0350c14217a27a06bd2d54bacc502371c8a3ee538445176f1f916a48
+1f7de57e390a7f0d2b9ddeff1c9b3cca5f66bdcdbaea77e92d1d34da8d95740b
+018c4bbfeaccbfd5e65848ab4f155287592e1eebac38090cade74c1cec5490ac
+f3773673922f1af3fec50c64f79ca0596434e9ea87ddb62a3daba02d2b39b138
+1e47dc5880a1493b5d04d4ed7260682e15099128392d62447919fef2fa0631fd
+fa53a43a9fc6cffb081cdd5bf426bdaf1f1225bb92dfc1c323bc7ed4ca71e044
+17ddd6b8decf80a9e6d1ad7d69a5250acdf5e7d6c1ab8d132fd05ec01c278319
+4a97a3dc1cbbe54d2152132368cc6762b216158cefb63dcfd5e0d8bf8ce94862
+5e7d64d4cb6969708f08e1fc90f8ef16025e6058e47dccdfd9fe4329da5ca8d8
+5a651e07d5187e58cd270a5585106216158ba9e8ea9e1113d38c5bbbe6ee2c2a
+ea97d83b7570080e7529785a8ba52dbabf64572d9605a5af29b934a45a1e6fa2
+1b5f6b84f21b3df0e0791cb444ff75d398110ddfa103801a3fee21325830a3bf
+05a8b3172b15e2dae1166e11077892a3874801c1372cf268086cb035eefee1c3
+90c5633f580f5abc3de7618ab8ad5c430f7be2e789a149ec9b78a6bfb33353c2
+914cafd62aee7e4f04dfa1e86bfb3cd8024e8234681a7875f37fee90765f3080
+cf917e0570f29bfc9fca40ecbc9d4d467fa6d0b832c434798d5abea0e5ec36d2
+e133fc9295b7515933480d3b23179fbbc28a8d50b440308cd5a4e7051c621c35
+d1d6085f8ce7d77e88d85b95f5843a6363a923749b314edee61f37b52c2c6cef
+4e8bdf69e0bfc501595aa1a6e351b0a4dd9966a168aadb55fc5208d420a02296
+747b362eeec08797693eee8b86d01e068c902f2cefeed97cdea8c87415b2c49c
+a289ef564c20c2943518e9150da33d3ef8cd3359b1eeca26f447a6bdc02f2680
+cae55e404ede5871a1716b4da8dd1808a67d2d2fe4cfb0df68c96732240958bf
+3b83eaaae8f688c716e9200bc6e3d34a5107a1c78c205c23b1f0954fade004f2
+16c681481d61c99dea51ed10403506a9f33df88d76b3283242902617c3d631de
+bc37b637317f1ff5483e2b7ca54935e264bdf660e37dd6bd84baea6455b45fe1
+b77a384ab8bfb0e3c60a6e3fcd454ee4869914bab341f9966cd8d6cda5e5bead
+e3b9638b78d1e567e213045ee9260744dec1403ea929a842535021986bcae1a6
+27c038d8d8eac8efe5077ebd28345bafe7738f663fd39b50df60b28de52787ab
+c496d7d7a61951d7d6842237495cd6949ce87f6cafa1370d3679cc3e2e800d6a
+252b8ac0657c7adbb916f87f029039498813c73681279be23c69b8578970e434
+479de398c59b0cfc4d27edaf25f2f1cfa50b0a7b129e1149e3cc4e3c7c374d8e
+f3fa5b7beabe96e881515bb0aebf48cd4a785b06c3e9bfe29ff07f293a2ee772
+bec49afa2c9816c71fedf8b600b9b6626072ccf8c186d27fc676264e4d9fd11e
+3d52f40c98405cb28d2eed578748680db8e9a67177ce314d760c3bb2375dd318
+385ed9157bcc02bb7e990b3f221d847cf5dca7c19fa646ce10e82597bec1916e
+44eb92fa08e3736eed59bdca9f433befc469dcdf496b003bdb49e41f37ff8ad0
+271d04976f92385514c8011091dfba7b48c01785e8659aa7ffef4c5a0671f585
+ad3b943bd9675c10067775c21d7c349665bee0acb0ef941f55399d6d420701e9
+cebc74b17d76af93e1ca2b686327e02e43a8112d26398bf3485acdda7e5e256c
+a5e9deeed823b30f39798483cea812a9c94092a0fd97126afed4b3bbad2087cb
+191e823fd7b901160249dbdb4be005a27ec295872eff39a418ea5e2f5d045a73
+2a61fec1b8146c40dd8794a7f936b37503e66e58900406d5bade66655d808cdd
+da342c55b1c12549ad3f5458102178fb607d32a488ca949e1318fc9cb4efed01
+ed0ec162397b89a7569147bf86cf8a65c8961e61ca15d6797a2c8a46f51e5865
+486f9ec9968a81142e0b13e54abfaf57684f0ec5bdf3d39f0971f523209330c1
+f1e2e305bbe5799c8c64c7bbc6b9de59eac845ee05862187c0a06032aef8157b
+39aa2c2e44e6625f02efeb4c1c2546addb10d0631260f037676b694b434f3a73
+11aadc0e3f93d4b283b84c8eb1a7dc48f015bbd8e5e0ff379e778b52c616d72d
+a4f9504862599c8612b9768226662d5408bab967917b41c641c70e5ad6dab94c
+c62329a0e8cdfd8d38ac959ca7d2a653a6c3ee4fd574b552d60514454d1bb164
+de9e97fe1842eeea98283c600ecc50dd43c088e144672930c26950db4598dd69
+d612ddeb07e32f733353bcf27643132bbea857486fbf4a79cf1fe01b29797aaa
+71b40c656c70941035546a06584859dedfdf930db5f277bf4da4f582111db427
+c84640dba325b9bbe9d7a0b3f9c8bf6890e877d886be7f3712e201cc459a262b
+167c68ce23650efee1ee1dc07f8eb93834fc69c5200ce151087d0344ee97eafd
+e55b2f3580c0af99c2a34082cfeaf8a0763b5612b334e4727e25c69447e53ca0
+587ed02e77ed5f1cf3685eef552786454416cf365c8ba28b5013fcbad7a0d230
+19edf07eb2c59baa07750292363975a80ed16799a02de5a99a30f02ffa38f637
+3cf5eef711fc49aed280db78adab6469a2c8dae404f125b25e3ebd62549e0f9f
+f1eb360740be0f54603440914b85fd58bed9151f1a550e1387ffe20beb2d538b
+a84f50385b755b354f90a10e2630c3bfb6cae5e7753d35847960571087896a93
+18d45fdd466624eb288d86b41942947a67d5dd5664fe6fdb1c1beda8b2044a7d
+ebdb522a8fa8151b3f75f55abc65b09bbd96fca14c13c1fe16fe50252dd7f824
+492e250cd0a65ffee7c48fae8a22258cb4b7a829f8bb3c1d72562f625c196057
+9109f89ec3e58ea248f7be2ba2b34156d7f63b3f78a2ec2d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 164 /Lambda put
+dup 173 /Omega put
+dup 174 /alpha put
+dup 175 /beta put
+dup 177 /delta put
+dup 179 /zeta put
+dup 183 /kappa put
+dup 184 /lambda put
+dup 185 /mu put
+dup 187 /xi put
+dup 188 /pi put
+dup 189 /rho put
+dup 190 /sigma put
+dup 33 /omega put
+dup 58 /period put
+dup 59 /comma put
+dup 61 /slash put
+dup 62 /greater put
+dup 64 /partialdiff put
+dup 71 /G put
+dup 75 /K put
+dup 77 /M put
+dup 78 /N put
+dup 80 /P put
+dup 82 /R put
+dup 84 /T put
+dup 86 /V put
+dup 97 /a put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 107 /k put
+dup 109 /m put
+dup 110 /n put
+dup 112 /p put
+dup 113 /q put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+/UniqueXX 5087385 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930da4f8d58abefd45db119b10eb409dd89792
+3c6e705479464a4b310b58348c4b42393988fef4925cf984423aaf65fea9f0e6
+4629953bcf50b919d968d99bd185f83112b2759cc411764e9bde677f57c5ee5a
+c555448d5f81a16259ded1e11bf4119d53e8ab07a802df900d3a2d5ccc1c6876
+d29c5e9effb7af3ef83400b0910c07873a8c56fa7b1eb1ba426043b00cc95dbe
+dc6e136cbbbcb3f67509964f9f281ebf81fe5b018122eaf66c4a838487e82e18
+6e006093042848a903efb3469ab6b4049767aadb95c30408dfd58d8a10f4cb22
+168decd9f3ee100f07b49aa44c92139b669cc312ba20192454eb2375be6284b0
+26659d964b96ae82d4942e758027fcf23c25ed01115af27ce7f20efe2a822bb6
+84004f20243a49c9e93301fc21b80815c033c3e2ba58ef53da2157d524b395f2
+b37abca13bc6a2f42e824ab7e47106176b0d6db267fbb795ac7425582df2e3dc
+55863468a9200742bd7b552c48f8cf58bc21343bd3b95abfa140f33f37c6f3f7
+8b0d8a5154eb7c1f62ec598267f13e841a3e64172663935ac8b665d86540d316
+ddece329c008049c5e74b27d59022c5515059bc3b89370b1bc6a169c888bb325
+e0b74282d6f053a50da4024ed1e433271a32ab8c17d41c632b41cf9f3ecd5fe1
+24daf7aea7ce8a63047b245822930d517df7baaafa69d2d17f7d93cebd47deb8
+5405d720de0bb4dcae731a8e27bdbb6e6be38d168b7daff815acfc32ce367374
+bf9fd98c0ae5ba1bccdb84d94b5c173abc92f7d18e19a68f64a2241a0a163910
+8dc46b8a04ead17662b7bbff3d3d9a95d5937698573bfac64973dc8d8b8d9f68
+c52d0c133119eca4fae72f7553d276c817003234a98337d7c037c0f1bce8a804
+57113bcd97515c002d20f836fa086a3277727873ec2b64a92bedb01193491134
+b6692a08de4a201a3f11dbe070d797f7629ad487d2b8dbf89a0631956c93864a
+41d1c9adf20f8cd57e7c54662d0596546c87074c23d27dc2838582c21c29e64e
+8c537e4ed7f9fbb029a696b86e8bb8028a8b7b8d910b40094011e83f4f722b45
+27d1b977c6fab7b5d235199e25b0ba9f4b59671abdc96adf451eee3968e7a54e
+cffcd1201076f146f4da0bfa49ed2eaeebaf63f24bb331b70738b6a896dbfe4e
+d98ef9b135db3b7b75370e6c426e5cb56ab65fce8e10c90409e893796e7ebab2
+ef713fa86ec6d3746d57fb8e970028b02d93c6ddc81ccb8b36994ff2b24193b5
+eb6ba717c2b64d79dac8679960d11bdd54a4be135b61b5c225d055d6791068b9
+7f54edb63ab0f96974020dc1a700adf1984490eea33ddf424acb53d0a22126b6
+83469c3a7333acf7d8d1ddaf72dbb93b9b43e3ea2afd3cecb153070451e40c22
+606e0f1b6d7e6b87e741be0d0ffbbe307615d5449b7dccb79ea8b4cce12c91d2
+ee17d8763184fbf4f6061b3862f3c31aa4157f762bfb27f95435889215cbeba8
+a00db600155aa18bcb04415b2acf2222503521cf7c9dd8d305a4138735bde985
+ba0c4ffe07f230929a5ab1a72770e2b2038ef651780dd27921e30d72a9b63d85
+51d4c3f466d0eb9774cb4c36ab336bc3116500041db8b2fa73ab8136a9274189
+5b70ec42acb3b315003ee0359ca64d0dfc0c8d60d2dcfccf5b89f07995fbeddb
+af410afff2569dd7476e2d61a0faa07cd74e0a027d3f2f5c21296032927c671c
+dff27ff90aa657fede1c3877221db92e558992615a92626c9cd94f00791b1633
+0d44279dd1368baa516d03f3ee49820e7cf27de302474bb5ff7130d5fadf788f
+f4a65370b447e1d02b78a726f2c36d5c68d00a5d98036088b7294e2e819e3ac4
+3d3f3c5afdd07bbfb1bbe4781995e2ee3df99cf9a283431dea37064a31791f2e
+4c2556dc75f8cdc59cc7b1a5b7454751ecf84cf4daeb0c342e3f2961d9586572
+e306051841ab45aa6a5db6263b84e960759f483c4478d9f655b1ff4bb3ca6fbd
+0e11a28fb7534263aff376916407460a83091e79acfe65eb68cd63a843491a10
+257ed4747ce2f9644dc69dd103e384890bfef30a9eea0bfcf4dd15f55f645f20
+b6d74f2bd9d88b04ddc2b9ea3407181b6fa48ed8fb6f8ac6e35656ccf855cfd6
+10233806d8187df269548ed24a4e79cb53891de4ecfced4e9da104347ef9df2f
+c0e32463783c4974f39cb15ade09e5115d7fe3b529504a7fca1f3b43bd0400a6
+67f6b0bb6989cb147448dbd864f2da6ac1fd7cd7922259993ac59215ab7f715d
+b0a5a1db1547995fd652acbd4ccb720a5275767a14aa366e1739f8d141642f8c
+290a43710a99cd1379fa2e6f2bd94732c37db379db4a3c26dd8ea823b6681c01
+47281c97bd301793c585c407a7a096bd876246a4d8c0230f9cda1acb500ef7fb
+6d4aa91dc34a60df9858b5f1adb68ce3d9b7fc2bca7e67042996be66e07527e0
+217a1cf095a5d82be8bef297a76299fdd1c263f1c464aab3591a328d42f5dd99
+4395855904ab6eef0a23529cd65b84b0a517448b5956a785ef7c9a3afab910e7
+aab9db8e3cd2786de6eaf4e5e536379ec7e87e6940b7d2c56a6d3395ffd1e5df
+6a223269b2d8176614da1137a9ea06c0fdde06ff9dd74917c6a000c453f6fa1f
+530791a637f65430766a9ba51e66c2c347f7df610dad0315cf95410a93b34347
+ab09d56b12c0878f0cbfc2f969b7f608e0be0e1a78ffc6ae02537ed31cbab5f4
+93ce384e72931365adca01ab8063ee139d440d4aa398b10ad7a3251b50096155
+e520e1524fba8a267db7394e41f064b78d05df5460e6fd70759a2dfe32d4e34e
+1392358bcdde2e160ef2c096c915e88de88a5c202882bb9a2f588118d32a3bd7
+8849edba6bea3f803ab978e8e165dd67e540781cc3855c57f68734f8608470da
+0965145cc4744ed57684a0a089cb1784eee2eb39211252983e9f49af0ab334f5
+d4aa6fcca8a8edf92f0526a4d1c4dc258b5fe99fb3ef2836e049a482a8161eda
+bb6747a059574169917ee2fcc0a69b14cefce2aa6fdc565fa62a7e458dff4d18
+72b7c41de0918accb28f61a0ac53e071a2462fb974e3010f91c0ab84dd956628
+2e8a4e0aac1de3cc9ac1d2bdc61bda0160dbe8a77d1bc179bf2689701538003e
+3f987ecf5da791ada921a72b01769731fec7453690e4b85f820a0f0a5215d074
+e23da30487a15a739d81c9984d1dd74b5fc1b49604182795e167e24138d515a7
+53129a64c20b71689318b8cb0c9ec7f3d8797b941155886a202e4729b49e2cfc
+b8be29be6396b767e1e5bbcbc2329da7627ee4353e16e14f673588d7a52f68ba
+2b794a75db8ce62a0615c0bf3861e414ce5cf58db07912540704fc106f41a5ec
+cd35c69185231c761ee43aa93628ac4c7a67163c4859179aaaa19ce47f01156b
+c44a812372f5d408526d95825df68002c79adfdffecfe077846971317cdfc4ad
+89a2d8f741f92020ad038fd409227ba16b3f278fb80d9fe92731d54a93455194
+0b4d5aa1085c87b633d36dd4b11f596fece367895cae051813bd56443f5c6175
+17f7e319ba5db54fcc865a69cf332743770296b3ed397dc944884669f32f5407
+92f10a80be82b37f1bc3d9e187ca3ff34e4652b7de3a97da0434120e24bddfa3
+5cc164054978e1e5321b30afba0c2ce7afaac2be911b11aa3262d0d9f1382859
+09d9241c85e6a9c0b0b8a64c4142d613b3ffc79ae07208bf48d674cefdac1250
+ad23e8d75cc48f85585c16d81371be50632bc31bf9cbbffea093bf6a9751a99f
+54fa46ab84b90b6c07828b11924cd68045077ce9d506b5242e092d8ce0275f96
+2769493ffbbfbb9f69fcddd60377674d14380ea2a974c3efac20a785493b0717
+480c4f7d68414369992e810f187b5c3defa5195e4d59d1443be74d672708f302
+2992c8008ee01852b233bb4120a69fdabf8e31a368b4cf7848e60e9c3cb45a6e
+942f496c247acc2413f5a97b79577e4e4a551e117a3ddf03605df4404635e029
+2f7a6e0d82068814e966ca193063e1f69d8277564770f0eaed74bb26887c5860
+772a71c66052790f4a1d69aa12e5db7dcf0a09de0b1c5af71cb5dd0912998c21
+ba850377ce23917e2de0096614a83dccaf1e371b00f7ce2a138ce48914cd7d5c
+ca85c08b4290e0e4271d96975ddaacde4576311d3ebd829d3fbe44e48ef70234
+ea2c8db1eb6e95f30d2ddb67dd8cc55faf1c29717b3839f672f26b5a9a77719e
+700f8a2fd4b552d0dc5a5f1f1e0d0a566f439ddaed057508411aa1287fbbff6d
+a301f945bb2c7827dabc47faff50d14a06e3db72ed46b9445174448404d628e9
+2bb97f0c8663231963f7cd1e7837a3435372042b1b96b1bf681e8ac939cbff27
+cb767a19c15412efcfeade07e974e4cdaa4721beadac67e59187bfa4aaeace36
+45514be5e741a76b39e53d92a6e662fb717795af7367a8829dd6a28e16a4265e
+78a59f91f7e7f53090e66b751e824a0f432d49b0cdc459b1a4dbb60a24010b21
+d902cd719a66843523fb9cb22504b5e55b006568dbaaf5d068e0607d7ef14d67
+1b96d96fe6a36d26627231b1e2b2d607a8279f21cd5dd4a21b5aba87aa977821
+f7b98cfad599a7d437c2db83d8bf1408569b5979a2b7f8a7949adef285471c2a
+b561779fb2a1c2e7073c8461b006cffe26ebebd8e1074b74121e45249f094592
+10848323d6543c37185182b75ed8398e2c24c9e4c3f376f9d3793c7a1dc4f2c6
+36ccc8f81f4292d27b1edf87de890875a58f695f018e584a4cc88ed42a4d9153
+cc8a227a2fc70ac22b7a58a09bc0ade6b890235c31d8b4e9b46677a49584b0d1
+601361a41aa82eb759880b3a0d322141dd9baf48b93f2ee40157b12670942ccc
+ebbd213174640b0edc930ec618dd8e994d7a971a2a56fc1514492deb2b1ee149
+d8b02dc3d75ca26a3eef8003c1840eed036bcb835dcc620fc61d0ba53e968bad
+1fceb6a89ad65d21a86112d7c1b84e1bde42f0daf27ea727069b0e1e85fa5cf6
+438fb3238dfb04bf31fc5f28867328005347f9ed313299edc25cb514c8e36a16
+4e161dc6380b9680737ff3e0b323997695f9a269175bc12deae4a21661a3d399
+574278505b9265974b1a30e7c2cfa8cd1dac6535e248dd5667b7589174e1d7f4
+128025969b6dac29331da76a3d853ff500679feec3b05c031641579d71989d83
+15db13bb76cbc2f9e5998d4a78a74f8e3a2f6ff756a8f95b9d0e287b6613c736
+81279c0d4b48975ee3718b17cb202869b8c245368c39b34a5999252e165da261
+cd567aabbcf8f2276a511bdb48127ff5be9d07f66efe88eed0a9efdafca1bf7e
+5ef325c4dcf4e6ecba2d9f1c0ffc2b11c5f47433377e116fd0aa8fc978556073
+5f3f18b669acc07222b5bd8d9c52fb42e57e9765dc47cb080d457f754bcbbcc8
+661df1de650c9d30d37b9298810b862ed9365ca992dba13d617553b1762943a3
+ddfeee1bd6cba9a0f77f6e0327f4c14eba85f8ceeef86d563cdb10a33f962d48
+21e594c2327eb300d435bde56f78a31d6d3a227c45cc081fd1993923368310b3
+d4bfab2b6214272700f9800374c9b3560ddde4615c67683c5acf1435f1b28d4f
+5c95e4f5dcbf47bd0048bd8cacec00705e6d1e0080a83e496f6f461d468583e1
+93b4fd09270cbc9a5a6192c15580d329882b0e6b4d1970b3fd920a1000d30d13
+b9cccbfeac3e8ef8234a9f5918944a74dba45291ce34b7acb4bd5499034525df
+54f3fc7dc59ecc06f84737a2f963e676dd4ffa87297872d8e6ebbd9946db2bfe
+2370b1bd52785080b130c1f9a0cb6c875099e5a8fe538a72e5e2236c044127ee
+28f1a727b8266331df1b0233efc479a67759222afd0b72444af91dba27d368d8
+9303521059c497c23c30f852613e0adb1176fd2e2a11ad87d611d756ea5ff06b
+9285d15ccebb68ca094905cd34e9e15abb98a68edb2af5f5949121108866150b
+a154a8c75eca17b008de9465ed14950c1877a77a02c028d14ddb0b91e73a453a
+7b31476820c874754697700edf4adeda855a89b8a5f4333f04baacfa1d48adec
+1d2948aeee011815fcfacba7f89573e18e8952f1ee21692ba5b8e326846189fe
+3c7686fa59bff018f7d52e331f02168df5beee70e9035f61f931ad1e87824896
+bb848ed8bcce11414a158f14e03ff1ae3fb47340176c30eef5e3aebf9b17b612
+194b52dc31f945417d47fdbdc982fbce9fe6301dc9d4196d7bf15c56b485a4d0
+6c67179bd01c5547bc7b0080100cabea074e9ecb14061eb45defe26c023feb5f
+2ededaa7115b31888a2085e5e9251827d7439a8ff9e6b667c86de053c231b7d7
+3976acb238cf12845d02d6cab9320f961b688818f0f945aa96a5b7dedb65e243
+b83980a6a369e559ec8735ab03631d6ab7511f0a9bcf805127ebae827ae937c9
+ef2a1303bec8541dfbcc423aab7bf60632c5f43ac5d24227e0460be8a0684552
+089a60bf3d4984a3dc5d1966f3780f7355f340fd7d2c51d830fff5a0d1e42d09
+a93f60c23bc41782a728a5fc36f290b24f04134245e759bf88fd62d953a69ef1
+cdf8b66d6fd423e5a311a140949af6984c8f53b7a369fd33f8ceb09990918ffb
+6d88ff5973fc30363958f6a890c4792cab1adf06d4328ce18f941e5e08423dcc
+0d9a2cc0c0b9abf4fbb81c23ad818290a4675e6fea9b46b7d930e314fb4de72d
+3f81704f2fec8cdca4df938fc6a5e48a261a449f6c9cfcb32f939da63b834b03
+fb9dc00bbb93d8e1bf8151036ddc1da21d0c806b3aa2801df741abb36b77435b
+2a916b12ada0f9aa065cbb0aa522a4548bba7f452a91617300a00181c0fc3f0d
+96bd536d5dea449bd66e14267c712a782e3f4a6a631ea2b707512d518385bf30
+2854af42463d4c1208b2f769e0a4b4851e55ff4cc6d7e0d9af8bc36f5e11dec4
+9720d5f99518b09ebf71aca550923f2318103d96148527ec733741bbe622736d
+d663ba68455ccedf8ccbfb74a8b1310b4f2c4cceee43df76a4ba1842757ac9ae
+0dad9f608741b514ae49a620c4346dc8160c18df0426cceb4fa5392eff5b8245
+3a6d7c79cdd44276d6a4990d0016fc858793fa4e6a594d48a99195895a234c9d
+60b58cce472fc88631ce646c323f3aa47fa9f74094955a027af15d114c63fde2
+cfc15d8cc15657779e9f02f0a70ee5a6d13d48b59c0e330577d6280fe3f6f8bb
+b894ac087f42c0b34c34a39662642bb05901e2fc6797f89993baf9b876ddd037
+3b8ee24529a3c7e6ede1a0db09206ef9023413cc0cef540570eb336d1e36eb8c
+4bd62d74764819b474cd815d623b96a2a31455a6cc494e3ae9601750a65b1349
+0ea37ee1e3b7fd8ed599f1a9e744f730a924b600ce366bf9af5ae0860ef835f1
+bd7bbc71b4878ba1284a73ab27c739f530ee86fb585887a96c51c14d36f0c1ad
+59df0fb271be8373ec09e91a1e0cc5f31d6d59a8bc87441b8479a7957d76de2f
+2c054ad13fc52942cac0cd1642b95bc655a044720b42ea35c322b1ea3031629d
+3c3e0367e4e1b011a7d96734ec7fd1b3c17c0f5a40bc836c49b4cb57b0e578da
+e9ad5ea1923d864401732b7e8aecebcab751479dade72f77543547fd565c71c9
+691af1edb8fa535db222b078b80adf432b422ee00e637f969538fc742405abad
+99eb18a09031b9a6a71ea6b46aa007e7fa370e5a4b41879df43b208118825b98
+c4c1d2f0856891da2ad02b8a9cf61a338c96f52a88c64de363d9360bb9310808
+43f531c4e374a80f56e52a9ad1a79736e39f78ff4c15eb79b3c90445f92a2d6d
+f551ad1f351047bf39dc31b246f5cb85ae5bb5cb3d5ad10bb20b6b619c4e0d13
+0f47310898eecd1729072d3d689217f74810609fc4b1907ddd48efebbfa7cbb0
+1a692e3e1718a7551978414921f66f216b6d08452fddc552ea43e6ef2077c61a
+d2d21843c4a2cb6734f27160d4a155abd37d68839a02ad8c78fa97efb327b47d
+503463f4280b07969ae471af1fb2d454ed15d1fb004b8bf8d5fc6539b1e9ce61
+01bffcfa202b3c823aa045117c279f081fc459f16ff60182470d485b9cd66fa7
+70aded00c29122f948f19e61f53ce44a264614131fd1e71550814f1acc6c11e9
+a443c739349699621cc4bdb4fb2119ca5f421b1528a518bf304e686dd44be4be
+058d3da326e787870b36bfcc328219d2813f8cf4dc2da523f156ce49e6c0c95f
+e7c5f175fbac4ec03d1cb289146206164b4e73cb5e84b222bc4b8d56ec9bc58e
+74d286000b3aa525585d3cba45b629078adb7c1f2c0c6673ac6e27c95074f28d
+4f6df678b044540d05986ffb552bdd97295a227e278ff58ed9d9ce586f235ed4
+5b1417a96d1ea520be57edb1280d30ff0389431ee7e65cb33a26301efe97b484
+700d17016dea745c0c6039c9902feb702e93913c4eee0d0116b0e1e61afd5c9e
+8eeb5a51868ffc7fecb7db34b77a049ec15956fab723c7624b810f988f90e08b
+73d19e73a9c372f2d66021638900acdf2c47e50c3ed1049a95917ac414de2a01
+87443b846c883e628bf8bdb8928e9ef9a48704a1eea2ceae9eb14b8d3cb1140b
+7108f21d0dbf4e913a8e2831e4b10ea359118248c17d4c065ad8d50fd9ee3d9a
+e9a1b1d360f60e11e9607b9cc918843795620668e68161957bfc533e540fd6b4
+e4980045d53395df870828d027af1ad739070a1ae2b9fa6ae9f03cb856221cf0
+6779d746bad8ecc79e6bcf6d05124ecda0813ceac9ba2ce33b61e8ec7fc06390
+c3a103070a394ee28d682c896a82a473688578e1345a58892faa4df069c1969b
+1167335915ddecce93378391b86c666f22da45eaefdb646df7cb02d4954bb29f
+889b63eec88f03a2af0922d11cf5340ff8d8a1ada673c9d762c796cc9f8bdb88
+80756927a1a23c64c0be285473c0825cf959276390c00e5f4194aeef980eff0e
+5d04198a2274eb9ce8d28d03d210257eb63fc67e35d4829ddf4f832ba62aeae0
+7c43f894344161bc426070ec7b5da9558a5a9d72970ad65aa646d842385d3760
+0907afdf690a5cacb57bce12aebe48c0914841b0815023328b683f3f08c0407d
+8056534ccc9954928ac4b3a1b88a7a208db84c8d0b083b7a9fa3aa0385048268
+ec99971468991c0e1ad571201d9985f482c9a037b08072c910b8bb222c44200d
+0b0b7bc7107056cb65a998e54afc68b5334acacad5f850df6bc12b33ac83d900
+dd06fe059ebc351a00949d1294c847a78f3f0c3083a613f7bc56801146cbd02a
+efa315aa427595aa3a43cfb05a8393bade2f59a66dbcc1c95b289eed340f8826
+1bd0b2fdcc51e2f9d70e290e60619b4d4ae7754dabc38ce86c370b3d172c22ed
+10bb9e5646c1ebdbd80a2b63c42adab93e96a955536b66f9d48abf0726a6c89d
+fc5f88dc7ad75185bd2c28600c2e8c0ad9332fdf89abf0ee113c1857ac40639e
+147a2826004f29d9e6f82c8f8b504d05930da6b0e483d513138360d101d2bdea
+23ff50b812d4000631078e72305664bf025b1867dd21808b4283561801aa5491
+85e3530de2906a37d54854298c09adc3f6ebddc6d5f49f954a4ac2869e37b2c3
+d6d5c24eb89d95eef27ca96b1f0ed46120f92595260358fe7ddc38284b872b73
+a7ecdb49d68b9d6f00aaeea7f3b28820f5058ba41eb151ff04badae0cf36979b
+b0fb6e557c57debc724b476c952aad368a982c7dacd86753102bccf9464fcc97
+56bbafc96319d6275cddd91ac3cd1dcbc3d7aa08e5859dc586b35cd8a35af570
+43c0f08d81ff388bbe6ae077d1d987a36a399bddc8981093f12e3414a68d463a
+c05d0ff5747daf98334891d2fc4bce5da27aed2e5520341133f892029f51d03d
+537f8350f05dea996d9192d728c9f203d51e9040bfd383c9923ec95bfb5c1b56
+fd5370ec9af05c88deb1e3d4df888025091888cdcaaa5bb584ec0803ebfe2557
+0c5d198c416b806b225821c3a5d527afc75bbc41c8cd1696a1411bb3a3094037
+afc3d761e4fe6750f50371153b243cd30c04a59171f6cf122666e54aa22e95e6
+baffa359dcff559272f403f9ebdfae897edc6d40a28865d0ca4f426fe7a04229
+8b12fb7435530d3bb43be6cd199450f63dd1e78bb451529614946cb9a4667578
+50af2eb0832f6267ec25b616e3fd3c0749dbbb66c2fab95d8439b61c14645f88
+3d01b57032505883a13df6c9e09b4c7ad0fc36110a2ef2cd0e2839af973b06a5
+707988f6b33be324c92b480f331581335fe7f8f8d471da023cd9fbbd347997b7
+17930be5e0454c4efa06037d7ef46d4f21e5a9632cab5e9ca2d8feb152a04d45
+147ab0d523bae33209d645a3a3290f961aa697f65a5f2cf898dad4790a27df5b
+ae8a29ffebc180e988ebe8feff92af0e701b868ad0121ea4f05fe2d5bb785753
+60d40368c0bdcbbd73df5300f48a1530367be88261a5bba5cee7bf373ac2afd2
+24a8531a6ac109b3aa648bb6c417d71e8637a0162846ed0b9a0a062df48fb872
+f1ba570a28d6185be17901aac6a00d6cd11914f173014af6e313778d5addc688
+cf093cb5baf5130cf71de918cec08883b5c368a50bdd2269df65c9ec7f9a71e3
+3918c45bc146febb04d25236b185785b0f4a7d77359c27c1f0142fa431fddd19
+138ae503f94e2611fa57094cb3400dfa1ba44a681d2a2acb0731313149df1062
+69684a47d05f9b5bf8a8c49e62c57f3eb7b6961c543f281876ed83e55dbacb51
+1ee04d572fdff79d6f6ff0a62cf249a1dfb26c8e648e341f7a1003d5d64f6e8e
+5ccd0f6adf59f91ec72a6ebb10511af5fdcf8c59116628973bc9480a415401ec
+543bf76004700ad037b339bc6e7031fce17f8de55ddb54bea0d68a6d49f7d56e
+095d1599145abf9b999687310e8efc0c0c3ec5231a145a43a46402c273f7c600
+d063801869720b7ff537850a7cb18aebdb6fa61c304f22d5a55b911fcdc5fc9d
+967199a4fbcd35ea57370892bd1b7a71458560402beff3832d8adc4bbd166ecb
+0b8bb477d8aa5d4e19d294e48ee239b398a817d0028766b964b0d64a9530b240
+387c48e557fbae498bbde07a9463f88bdbdd96d72b2cb543e95be3767758fca8
+a89954a1369daaa482a1edfe40a8493a0708221a3885f510fddab3e7d44a9def
+5adc0904269aec6d76f29d9f55defed77966809518f4d8ca09468f10bfcd08ce
+4c58081db9474945b4e4c5d751a555cfba9e74b9ed1273a1382587029c12098f
+e77f4135699e3e6f02ae05ad43228a11207938d6d86f990db02d6c30a54e6920
+39ba838218658c7fd4fb3e247c0207bd48989800a50626b3828ac9baff238dfb
+1bf231e4047a73af5e3eb5acb9ebec0254cfc10adca1531a82a4e0d478474d06
+9351983148d6ff208721367a551b33a21196cad1039cd3a611a93245b2a0022b
+298e680aad3badd2f0d40ba1d9648bdad4d29eef7e26d26df646873f880b27cf
+8992277388270150de22f21fd95d19a689338bef78aa380bd3488a283154b3c1
+099eaf1765e4843046b79eba459e835a2e89cc145b412a703e81646840caf52a
+8727b0d73103f2582656307775dbeb81313aff53ac17e0632cd1436d6d0d679d
+fb0f82f6ea4e29da77f6881dec16c3d129944a63bb920505a384c2f5f538170c
+584cc9b98d4f7f4125132bdf4d10fd09dd71d617e3b6417987fe1df50d3f1abb
+e3944cc34f8e64543b9e69b780b56cc7b1fdf18ac4a7ec04556f41bafcf62b93
+0778bd98704c93103cb81059c16c297655f6c0be703eebd2a2e083ce1e05a1be
+ebb8abb9815384d3a76a9ecbec48d8773e7bc19ade546046142802597ccb6235
+fe2accefba661359f446464c5dca7a0cefc46b2b9e737068d1a7cd0f0df1aec9
+1e08eaa8159175bab23293cb17955ee64683fdf94ced6eb2e8feb3faf53122ce
+04f7e2c3b3d33bcfe8f6878cc6fe27641bb4de18ddda43bd4d4e714a72d58c00
+4c1412b2ae176d561e1815d51918b75db8e8b2fb08b3231431bec29c7a4b440f
+5638eb1054249acef9e6c9198f2a5d626389094d5ea3633d333a1c9ea009400a
+98880d11aa4a92a0574698357c043f1a562a7e24b2fd0585366f5c833fbecb4b
+3818a351437ed5ad958e64329f2f3598ba3f511010565c07dcc7b3a03996daef
+0df5ed80937f89441d191525768be58c528ae498231ea2b0c51436c0f1adbaa0
+cce1f2c8e976c3d8008ce38bf98663cdc00dcf305f4a7a6048bb0cbfe0199318
+397132ee35dc54c9f4257a32a998f3989806b1f497e8a79e3eb58f5846567f7a
+13a14499b4e25e2536d0cffa98c7b645fb20a97fd989fd0e1aca3cc5ce183047
+9464307abca95af2d8160a874cc9e3078995c5b733a01b2106e534e63ab18130
+a2775706271fbc8b932637ac9f812b27a0dc66e1ba92d4f6401b4baa5868c088
+3f546b8dd1c2a105e471dd1aa4fcf0775449a2801c2b7721bd1528ec2dc0ce8b
+bcc01f8df082165a96c589bc55272ed07555c3d208d0c8eac6fed86322712b5e
+2f5bce6375cd6a48feb5b044948fc80a65622219dce6a4797d644b372c3846c5
+3deb8a1d52b94c6416f18c15f013b3d5f3e968e9ae00dfae125880bd16b5a356
+32dcb4fed422ff5b1bc7c6c3d24209ec44277ab249c219c92cbeec80afeeed49
+44f791043e0fe62e42d4838a73ad88f43d93612433a960d0d75f40aff0698b64
+6e6ce8a3b7073d1c9e6bba970f0892f15b969bdc368dcfefbd95d53bf0e0ac53
+34c9593f984084076a222f19ad1555d01d573e63b38ef8efcdb3e46546962d8b
+27b2ba0bbf88ef6d28ba7e800c6b412c45d8c77e559f65c95d634baff7251e37
+8fba18059322e2e4d63dc7f95192f0053be2f8be6b7def9db970e3143613acbe
+41f4a18158f7c2ffbe7a4ac239939969beb93add422afd4a38d7f0f9b778db02
+5fe3fd60d08f22753d661c5ff979a9ed0aedd3552ad59383aa09b22895b8ae6b
+511daf680b74bca7e9ca44d9a9fb0de17977cc5dac6bfbe8805597348709a1dd
+f8352afb6317de493a5c5b8ad75fd80d49da75c2a77a37eb0780c1523562d687
+c5f1a72ffa4afd7cad8c5e6aa3c806fbc923c934f798bb757a8d346fb2b517fd
+2d3bd50fa89ba799c9f2c5a7b3078b9854e48ef9ff0535280c44fdad64587767
+0cd57df6779ecbe382ab25cd16f64971d8ed541b3b969d53fd56406be6bea977
+a32d8f4c8ed91add10a2dd150c266182ca6b63fb9bff9c529a1e464c701b81ff
+56b1c664357d5b80e4d7dcc91653d4215fb936190abc3ac1a6481f9fe55c1432
+8b80157ce50762d578a756c196db1466eed948a20d5a767012ef8466cc117603
+bb4f3d2a68b20fb51ac873fe03970d980fa5508dc746ce473ba4ab7b49f32567
+d1daf80ca0c3a8c079b2e25126d32368c991087d6d2f105f23c0ff9cb2d2ad84
+d3f171202b012806de07dbcb091e18fae0afa52a248fd38b713308d1ff2cf123
+15a35c8a2596ab14e1c491d19b0ca71d19aa060423d892547acefb7c714e3979
+8267008dc7a1f1c87d53136309441027c982efd5e4ec46478c5afb7ae9540fcd
+38c273a46a7de6fa7246a4bb87b7a7e522d91ad9ad77bc0875bfa98b2ac87344
+101c1bd075dfb8166c84831246b99d0c5192087fa519947b5cd0a2d772d38df2
+b4757da8dee93541be2bbbec18c76ecb630eb15db1b0d953b7dbda0a5d54f9e9
+0ce582ed54568f3629a052a5e694eef7188b096dc7963a96d96586fa969b0d8c
+56945909eef6f4d292ab3d55fec982a63f5c29ee226b9960ccaa24956a715f6d
+bebcc5842129501a45b83ceee177391bab322abb667dd107601865356aae79dc
+7c07fcee60a56b941daca405985c41777f95420c8b22ab8317ca10d595a32e43
+fa7bed63dfad57501744c2babe876054e48504ce45c156709bc098662aec9e66
+8f84961f53872409fbeae49eee8981c98d92771fc2e0ceca14ef498be6af7d1e
+a124233b6273c66181b41f5d184fc021b62e5871b70432148a67a4036a91f14a
+07a05d0b398bfe56c45d0c570e0fd81b66543f7e7a238a76db8ec25a292db0c6
+47db53b564fbd72592964155505fdad44d93a919f116f2c71906468b9426bfa8
+38bf5dd6e11fd03d04dced856e23438186c0acb6c4b913201f88b2733f02a2bc
+307e0d0878dc2a66fbe9d6f0341091e280695a6c9833d42182442c63676365af
+46d5f1427753df7b180420e49d48a1a2831d4c82cecaa254b5dbc7781b6715cf
+971514b754595d068b7210b2e353b20b3c28f7997d1b6151689db64d82c56ad0
+8008aa71fef2ee820d9b450f87ce0eb994c076ca314f4a123c0ec5a5795002be
+cdfa35a7bc0b6a30806c37058cd5bba406e5b57348af99475351599795b5190a
+0e6f66b350e00083f155202f17f6e6f47d360c45766df691f7af9ef49dfd8a1c
+d9609bf83849d3677df12d01742eba71e01041e2cf54f6c5e4d679dd27b6c292
+6967454c9ef33eba2269e1f8ec9ccacd3cde6aed1756abf1c2aed4106a559f98
+bee0b66054f0ab760d2216aa92b3bd71e329c4a9a883eba59a2fb4540f3c85ea
+637ff6bad1ba36e5e4a34948d720f32ba0c9f5710d4b8e5821d7f47ba14bdcd5
+b0c784785288f8b744f1aaed488025f05b5569a9f26b366e2480770e8c093bc0
+b17a56c7a8ce9d77dcd12420093c35b266f0b51e8459d09d8ab80a55cf081884
+2487921e474607a2ed80a0fdc7d79d4e560aeb82891f744c51be73b4f8405206
+10a36f28781afecfeb8131d285aef93228cab6cd8151b2ad832196d2782a2e9e
+cd0c4ef25f258541c81b7a186ea2092d2f11fbd7f458f808b2f3428513c10c9c
+fe6852370e45ade1b8f65d8179aad3f53d0e290de520840992f2447f0408f7e6
+63c6946962a30dfa60618d8851bb1e92dacaa316861b166b28a4388bf3614753
+caad1d8988f2ee5dbd400bea2d9ea9f434a928b3410f717793d0e94aa10cbcfc
+b5fef195d6edb914b2834f3e74384e8efc72dccb0b1b0ee199797b4ab670f198
+5a161eaa6033654deb4ae1ce40ac83b708f93aa6639c47aeca02b4ba78b48a73
+eeae53b09658c6660ab04d9527358a43f5da06f09e8166c8f6403e2ff405e236
+f7fbfc1a4a9ceb801cd80a768b141457537bfd7824d8b5b5f38487b22045b7a8
+8aedfc2043ec3c35aa4b02fd988e2092a41b79e18618faa79e2cd33788e6cb8e
+f715e19e9357a235686dcf778906f5df9f17231c2ab7e27a3c942c5ec02e7e5d
+93d96d3764452111dc7e481b3530b6af2edd7e0e45d04849eeef16d0706ebb18
+e9acf3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 164 /Lambda put
+dup 173 /Omega put
+dup 174 /ff put
+dup 175 /fi put
+dup 177 /ffi put
+dup 179 /dotlessi put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 46 /period put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 58 /colon put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 86 /V put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+/UniqueXX 5000769 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be79011d1f5bfae5c1f476ee6f05eb1d2caeb
+269958b194521197b312fcced4867f3c8fbd030bd715d8ffda1dcd454b174e7a
+1a97b59fe770e67702519d9d9b23d61ac08424d555242a8ca08c49aef300945d
+99b999a79ce74804ae6bfde623f4463371442f6523a5f6ce19c839a708c02513
+2e22c696c8ccade45680e5197189d0f98e7f0d5f955e353970b392cf530a68cc
+56b0035ddfbf206c3074beeb0739dcbca272a6e629fb7aea2c5ba7bae50c7b4c
+a595df78200c352997ec3ee564df229fbb5473f5e8ccb1cc0153e9a7e299a8ea
+a29b69d1b622b1f0cffc58291248759607d91150cb0651120970dc9f743bebef
+44f6ae92facec57658999c8bf01f60611560043962c0695e1bb87d090e0fdaab
+659d6557208a660be9aeef8ae55f71b8bc76394d792967e41bd8023b6e7f8c3d
+9987d5e54c53bf2bbb32855b946473b44833bd78873df8e4c7e668ffff25aabb
+8da4148f744b9d0524d6cb8281247b3052cc5d66f3f1bcf8a56a3fb446ea587b
+d8be30257652cee035628aeddfd8283b5ad21b8b1480ad24d898970ac8a1e33e
+543ce4e3c48f9ee621c5ce3e8ae930f890011b630866c988606068d9e92396eb
+f51bb3db204505fc3d09d4701ac703a14d92bbfe27bd7411b363a88e33a8e9a8
+025ac31f21e73dc52b333b918d0b1270c54873a490222d041a66e0192612be6d
+2c88958a8f70c10390146ee5091df020ab97675e8e6901226eed50125d36c221
+be8f20647442444b13f0325f899b8fa15e1414119b45f920f73dc3496f6de0dd
+4418a1181e791b49a52866c79d377494beff7f1b444111bca4fc2bfb7279fa29
+38fa9be2de762f20d470813c4ee0034371812efb9f87014528b7a09be4f01f1f
+84de922d6c66d7f6ff96a49233b2396d9c19b85b132ff565893ad3a11ddb88e4
+69fc1decd51e5b3fadfd1e3e50914839dee5d5d2b63f83e8a7953833efe2492a
+30314f32e2bd9a758f2abda8107618eef886f13905eece29e3a0267fa506a772
+71c89450b6cb4320e6ed44ed4bb5d7e55f7f02ef62263cf816f4227c509a36fb
+f6b93bae55985c0109420dcb9307f3f03d05ee296548ff40fea1ce73761f2af4
+b36d903b7e4652cc3960c2ae3762fed83e466f5b61f30fd1acb75852b37f874d
+bd17d922f58112d5a27422d013da442b5e70aeb643875abaf8daa80724a67f3d
+0513d6795dccca646e5f3c7506df30571494f28f66e903b9b8102f09ea16c0a2
+8ba2e85e9bbfdbad3a2992f3cba71328056f5b4ac7f9115a32707531bbec4b50
+63aa1cc98882b67554cf93defe46c1e7929e767c82131455ed4355373a0b00ca
+ed47ee4411cfa6c16e49389af071088695a13af43b1e4e4bef4bf69181f827bd
+e86fc325787f01a2a43c718049ee54ea054f5d4ef09907ce993282a44d73bba9
+f096d7a827a33037c80b1b38b03ad4adce2dec60e5488a3463fc76ca449e318f
+c54c855c641289fed06500c168874068092ce08bd3d2af9d2affe31bee9bd1b0
+e2eeb965cfe9974d335dca0f03b443bb11b2f898540ee2fbac4a62beed88c4db
+adad2ff5384159ea6119cea7be027758c100332a95497f316b6dec11eeb8a825
+8e1b04e41636e50d6397390a05ecb0135e03632174173a1edc4257f9d351b5d6
+f11d8ec084dc434b132ed7e9c48f2f28656fbfb2e32f8fa61face567c5948506
+04115e3fe46097cf20500d287f5dbce3e0aa74bc18316240567d5ec6328ef6eb
+21628edb3e1f9438385061e8b795a332ff2bcd66bd187948e674a0aa86fb7dd6
+2c0ecbeff17d920009a29d9aac17176ecc155a6891b2d7f3d6e895aa8c8378b0
+17bc6f1e3f478a93f8df53975350dfa7711483988564679701deebe323630c8f
+22d7cd53839fe9f586580a4e2620e24b7b619699ed6a29e29330fb5c0ec0a03d
+2a3bfbcafb246290e58dd43e62d0345b4dcb210e538e8ac1954fd35df8c66052
+cb4a9cebdb0a9cb994c6f94849fccca4c03e69a8cf78d7070a7f1ed478b50fd0
+c7441184816c1c11ca66c73c91e3250924ca4c04ede4f20af99c788b0f5fa1bc
+24dce2acd3691822993ad024deb4a4e1f08bf6c4d3402b2426910d4636fddaf1
+dd18d6561f5014a5a4104e08e37809d08106b96336eeb0a0ca5046e995f3e1bc
+17c72a30b53729ea356a474e353d883bbde11d9150a7efcff7d3c007c3fbdb66
+660f6213cfa1220dc0f3a44156ef48be7d05ab592bbe9542ecfc8180f75f0a79
+650383c1977cc0c271bdfad0e85be28b7c23caf3e4f71825b2f2d5c7e035a7bc
+c191327c61be1ed9189cd5e27c19a110f0430f860cf010c4cd14eb25e583a01e
+e57595a6efd5d052d94622bde76e6aa8ac92ddfec2611f835bafcf8c2e0978e0
+00e3143b783593edeb08db41c1196f7ebacfd0718cf700e773a1dd7d672bbdac
+5a4a9aa71007a6f018ba33cc69ba61c7a41a6d1e4902f22d8175b568c2c32c46
+902e99c7104362001314c30f18d485725fe00384d610cc607283e722532848e3
+33f9e3fa88bace213bff4455d31f367b828217e7ab9ad309c1cebd0411b45b26
+59db4dd6559c801b2377e37d355b272a5f4bd4ecd8e9ce93703287ebb1241e36
+ac26ef1912ee6282a7ec5975658a24f306d6f06f35f0e031f6e0ba64d810e495
+53f0bf2e76660aa7bbd5c5b3f7551aab7b0efd482f98ca4ce86762df3c90b2c5
+5b91272e3939793a7c0e91d34e2d17cf19da266382738a093b9e56d3466ffd43
+8fcff743baa6dc598cc4a10f515de049a4661a5500b7951f623ef8fea5e91052
+a3078edb53fc5f0ac2f33cf2f8c3c1353b2057cd058faa94f029e6b7282b653b
+2b240cd3c3c70d19395817ec5eef9d33c1b1662c6070be7d8e2803cdccf5df78
+a25271484b1667f55589a2a2c5b29c745d75b79be9be7d09a6ccc1666f9c4afc
+c4ff41c37f2b84decb44a5782d65d67d9d7d529e8a1e02132256ed10e79fec1e
+4141856c2172daf60a8283336bd1112f17b77668b770e8c20f18352d7c9def22
+16a3472c870dca5c642047e235ccb07d830af14b3c41b3e05484db78e48305f2
+958145eada8ed696cd23934dac24025bbaf76bfeb0984de2b314d20869ffb8a4
+595591e751d0e73d7c36a0a453e49f615106820bf9538d502aff4224514f70ee
+b77b81baba5600d2c03373a230ac06e4c27ffb3ce9d1309d882e7c44d3b1a955
+ec9507067a44d0f7b081d3efbdf808376033c75b52859af4d301201dc4cd3c76
+03cee29f8a1f9005c3a4bee8b999236aaa3299940bcc4953945906ac572d756e
+a72fbcb5671a84638865abf3b72755ce92e5e1e8a788e2ba5c7d22a8f6ed15c8
+81325091c76b0bbfe8444e6e15a2df2420e60b617a79cc151949126c3d1e4031
+9c37d639417dc9f40ff3413afd54aa1b48fbe35d9b8b57575cd60e25d6195f9f
+1b69b0ee6bb48d412e57e2cb2d5a8c5f061aa1bf4b82c215c7e1487b8a2284b2
+34bdb7fa851a79ea57d567ccd39137599211720bce5b78fb475591648514de58
+19969ff9a5f0965a7068a51c2a5b3a59c3a9b5fe4857985bfe982d347fd454d4
+8206962ef9ce8c90bf917f751f21719f4558a68cec205d6c5b7c5e1100a564a8
+028c3db12ba50b8f9347c1caad3e00148ed428750a6a6eab269447e7c76d4af7
+e585ed5380920dbbd9e27cc3cce5288e426c10267d784e4014177500fe9a3f9f
+11bce0008885a508237b7cfbf6cfc1fa7e04819c5869168191c914c0aaaed7bd
+a087e00aaeb9a71b2ad926407feb9032e0108be042d6062eb598ecf173a0e5d6
+af8530b1010d83cf2690df51b8bcf4a217da24a17a3c7724577cea71c40a1054
+be7c924faf82d2cfc2bb99c7536dda10445ba85a99412f8f6643e637df3251bc
+15f93d0abd6fe4204df1758079d841dcef433b2e12179e84e158bf73a93e26e2
+6dc386ed730e027413c3fd646e6e5b868688a43cf4ef3dc9795216b8db773759
+df545e4d31a832b48d75f526a038aa723f1cc44fe20a22b95d91fddf86102b19
+e484642948d5d6475e4a723b102018250d596e78e0bed6147007e261f90c7cb9
+725d518d86908a84bbf51d8ed8e4b406e3a3113a6a3ce447a9c70c47d685a828
+08c73662710dee149086555e9d404e250060275b9210e09e11e8b531744aef03
+e6d2c3739b248e234de72545e27724a9f75ad691d8cdcd2ba71b24af7a12702d
+a0af33ee098d668cbc36aea2182c336dec5264eceec09660e2f18cb110ce60e0
+d3cc8c1445935e5dda3d00baf24507a2091c0b249e3bc8d086c491c1b4b3407c
+6abc6b59e4157309afec73b8f33522e19b1d32d7755121aed7d2cf3d391e6827
+c9aaca0b502fd5b3253b8787f6671fba599b551166f248ab5c3d6a0c63f1f200
+fe97ea2a8444456d6346938414227d3c593523c7c6fc67cb863ce129add3b021
+665d857623c24e8437e3b4cb0bddace5ee45207c1ecde69eb4d47a08436aba5a
+43c54b2554a7aed89e277791168146ebc64d65e40629f4c57c0276f38bf38302
+a5264c54761f408f1ff38052599ba20e05e1f7de006990c5d9bd86caee9d1d5d
+451febac044682528f0faf75b2c981985d72e7854c1f3692015e0527da7dce14
+6b56443dbfb2a0004f394c68085dee0e33bba1e1a68ed37ba3718295757033f3
+bf961759df24fede1467c8efd95d028fbb338ad82e88b1447a04e5b4c9660965
+bf09cc989fb7fd8d4ff445c790dd8fe9f620f3312e71eda907317fb36b2b2fc2
+80364d27a15cf05c4366f347b3706b868da3f2a01dc51519df52f1305bdc51b9
+ced3a514cbb025095741a364ae74b84bf01ba2ae40483ed73f5bfbaeca576edb
+41787ce532bb903e6f455451998b6b0e3a34d804d0e02deb24e125009dcace8c
+d3446420cb38d8c84ee476499a3795ab8ba6d23d31a852e8d7a380ea4bd14793
+705a69ae2b8deb54c571f6a3d164a773b82314cf8641c1f8ad50138686c3db20
+113d68f9c8d0c1c69c4333789a925d7ebdcd3d67307dead35d057f7c94469d75
+9f27d62644f8655631e7ecf3c97e2320e7b986353dc405ca687f40f91c177cb6
+30d2b2cfc9dc8243c57883d1f49a9644ca2cb364fde9420975fa771e8de5c818
+598cbafe8ba5645b0f5ab7758afe139dfe77ccf4ededbbeb7398581cb3a7b7bb
+7f16dd1adeac0e91cc13d613b6f8277764bbec22b9c4d96425bd9c4d91cb0755
+60a2990872e6db6af78ce412452247c498cdcedcbb886b50503bc63e176dd435
+59f656e1110057be0a356e9278073702fba16357dd2c2139b02418c2f4269fb6
+34eacf69d2d257ac547548b70a6a5831f8504c7b5f6ffa0fa515c9e2527b4a8e
+5b2adb0b360d54fb51dc53d898bd88efaef6e1bf332f44361e93f681709f33b4
+945cb5557844cb0368e890023f68477583c7febbc3220e126cfb4179561660b7
+c7da30740afc025eabe4f87b1ebbb70a62cada831c7325165708c1672f60855d
+c73887d27da312dc2ddef7e0b76699598121623571a29a587d31b8b7bcd511d0
+a77c55996ed4c89205fc09bf6a6f451abb165edf240faad5bef48e961d14d054
+0274e79cc29498a2578d8e748f7b542d37e36ba6d23f98036cfd556c2a258287
+412cb7fefd2c7b346b64e2cbcb4054a8eafb3106fbc446f9ad70405c4bd24a6b
+9b06914d0da995d87fc52a3cdd6327822d9ed987b804116b3dadbd730e3a1993
+f912eece13116960812d4869ad1a079ce89aaafda218a2fd7d1deb14508e03c7
+f0bac2c168906299a78c529f97ab9d987430d69cadff1dabde72497da38ed56f
+83eda2643583b254f365b6234d69566962a5d7aabe9d9ebe0d3a0dade9d41690
+b3aa2285dab17336f60f6544560d07b6aa36021d6fc0136dd23152daf7e51820
+3ae4de853fc5b2558ced4a18394b22f718c6938a1ca9f3008aad5a470b0a605b
+513adfbabaa4e36493b26c07435bfc756cc3edff61036c642c89976f8612bbad
+b52a3dcfebf482d16deba0e7121c4052b6a490f4fa0ced3fcb35c2354ae0b1a4
+5073b5ebe7efddc1f43755db4575cb734840a97ce22c8fcca1dd0b9bff86b3e5
+27582a8e563dc5a8382405c8a08e97edaf6254ddc3cc7897e8308e3c5ff4853a
+62880714196002664a672c7e12b44d98728fae9bdce0d5aa0bc515af76e9e7c1
+808637c52ee21812f82911f6dad4eb05bd7e93153f294ea3e23aaf74b7b77c1d
+5bde96c91e4dd6531c5a62b98910ef07eafb4aa8524dbe5cd72d1034a19425a1
+db7d5520115b2d876f4fa6a3ade7f8987be7f9ef56c86f5c6468c6bfd252d4be
+54d6948df9301823b953b55fc49c7cac3649448afd5e62dfe276776d62e0a0ee
+abbb8a05eb0e85928478ef333bff69fa98c0137abb1841f4281dc0ce93adb490
+9d1ee47e579a07d0d78f044d1a6a229711ee3630e711d0c5cccb1cfb1a5a1b5d
+8f2977e0654e7c6090674e3742e18311706d41aca4fc5cb6d2a946d4ed50e07f
+56a92d65849f4fc2ff62119f636286e5c0d96a22d0b140a626c2e689525ae491
+b450bb9b8cd2f0877b10a4cdebba36ab867be1ea6545a1110407b91722a92d55
+c96f9c78c65f6c0d6909fae10b61adc7913966e31d83229e3919f825cc72826f
+f2b0e45ca650f2f6f787e5208c03c6ec2b95307d37635f9e87c9297947785ca9
+b515c801e36b485808297419e8f0c70acf59f6c171f2af8e735d44d9d86250b9
+b4c42526397f38485e600e2d7348a60dc349d290bc7d567af295f1be7a99fbf1
+d0797f04681b41bf9aedb8e866b4260428965dd670c5da6751fe59127df4f6aa
+d69f959eb21fa1c6dab72e3473a01dc2497c7bdcb4807363bca237264b9f4ee8
+dd41e4a5b6c8e05b1f5ac4707e8db17c5752832264d41dbf8a96d9d34f7e59c0
+13d644adb137c9e5885806e6f1cfac7f285197856c2836d0e0bd751ef9af16f3
+c6cb2218ead359aeb73ce63e65b9f07227622324b52ed5f1ff1ee7a20862831a
+3dfb8d3665b5198f9204f6ceaa1d2f3ecf9dc059a8e5e3e107379a77b2ba29f0
+883419962e3cc4ae1ba1dbef457e737b9994dbeb0c9af75e0795045ae15fc17b
+1ac9c4f50c5e8add4519fc7e1c15f92f8ba134d10b590658d38290068949e508
+897e53e80bb677a4290c859966f5be491d9b522ea922be756a7ee8eed2245982
+7cdc04ce410b6b7c0593a49dbda86f782cc75711487a82a60cd6d9adaec8d68a
+27f2332a37ee4455079809c07bf1890418e2234e0742ae0cc4f0b697712e5dc0
+485b01f748b0d1931b44049b0d104475b4244daa41d0487e5361a4e9832d8e1b
+ec9713dd15482f0781c062b785c18277f8add593ec348258ae0186dad93f8861
+361e7952e46590c307a97b8b5ba14491c869f9be715f6a838c6f1521e6bd8dcc
+66c901314b99f3d815b0639dd4379c1d36800357da31d4a5d694982fb05a4ac6
+7127aecf00c901495d50dafff811a69b5a2643e7138ce2d1ff190b4ba52d7187
+673cfe713d47ca1542e0e2471fa68f63ca665e58c8dd6ca75059f0ed76f20777
+6c8eff24ba75edcf66084be6767bfe6fded8f3b2e23a76b14f6ded2d2698573a
+5048aaf921daf92671293c4539dfd95094a4c9303a8162f51eec0a88ee4d7ae1
+4abc42716c02dfb6b4f9847a3aad550b7a0db7ff540056a380e952003dd6da73
+4c8f4f0b74d7fae69417f201dbf5d0ff73ee805dd0fa80bffd427e6a2bc5bd6e
+45f2b7a13c1b81cf5004bbffcb295538ad853bb020c3f03e0f3c7c56344fdb21
+272b97cb0f1efb9be2ffe29a9e666ea69eba8cc060e85650c92c1428570b8882
+5c3ad6d9e29ece70545da60affd97a8855e10ef77d90f9386e9089ebccd69c8f
+100968883da1bfabdb004e8abeee8084df0c8ac0c34252718cb5562643b8e162
+6ec0543722dc24456ef6900d5dfe696bff4a4360e5b1b73309456eff3d8ab26d
+4b56c7a79cd26ec7f2d45561123092aedbc842f853b205e5c87d7afe21f41bcd
+368607ed560f8a3d6cae0f776fb97498d702bc1956ee4badbdb1805bccd3ebd4
+b1bd0f1765c621e1eff5668f0f6f4eb0bda486284b71842afefb12413f122b5b
+e56afa8ebc4da60b6cfcea2ee76a670f512137679f900351b4b7d3b98e75d1cb
+9d911496332d3c975951ce6b4c9126cdca2db9f8f35713ebb256cfcca206096e
+621b4258b2a9f2fe844465a80d1c3a0a41cdd3540f3e225808d4a05f2799e2aa
+5716b91bc655252aee7e17f2e80b6808a2820f4927801592546075d2a5346fa5
+745a278cc0672df047121b0e992ca5af9f00c7f038c8e561c0b999fcf3d3858e
+ace749dbae662e89903a411ab93650a7e25d9a27018ad3a8ff1bfd0e18169dfe
+ea7d3ff68bbc35afc0eb34bf00aaa01356d9ad7c85e44ed1c8eec80e2b092d5d
+1fb683dab47570f150a10d1a7fdd7877f8a799954d2e786598da60d03060454b
+457d2d2a35e769aa0f574fcf4a15675843fac979a6d3acee26caa077569a21d5
+5c065ac51a83200d75470e4334b364ab0a98dc5bb3c00cb54482a6f47bafcac4
+d1a137d6880a69fab24ae21687db7116e6e52e5fb479dbbc817c69c030583842
+69e27d6907e376062212df782185f6a56daf4410ad9054d86ecdfd8e9a4a063d
+139dd7a6a182698518865274aa1e716d7d417e6d1f806662cfc9244a596d63a4
+1590a88045f05ebcc37bac1c906377f75758e77182f87331a40eb6142fe65f09
+54ab6dc7efc8488457757c806014039823fa2a66994719ebf25742ff92e06282
+287893fb5ac2c0b4ccc126d744fd8b24326121a49cc858787fbc0aaa0f1ad956
+7480026319e3c18cf62fa142cab7e8dee26871be716c25b264f2bcf04d3c06c6
+636dccf12921ddfd79714f5723f4a7590fe199d656a1a69ed4d72c546d76083d
+a1f4665d607722d9b712a84c659819e51929cfba43c22969885e17bb5c318bb4
+e233a92b676b10707d0c016ce7a13240f1546a3ff46c7763ed074fe23e1731c0
+f2f2561f3ab9225ee41752c1abe4b65eb94217df21765971d8412c5d9b9b2176
+1e936b5cf872b69048ca32facdc62fab2b18905a6a4515eaeb57a3d2c674935c
+e2f12217b3f194fb7910d0ae79c96c418a0de72d5ab34c44015d294fd80c8948
+0abee35ddeb955271806d3e2b52030282d856695be89d2a061606602b28df087
+73014b04bae1827d570c76e4b6f327332944dd4f46598a4c3c7a17c624f83d02
+e6db4d9ed3ae8fcfdb6eea4a78e56b580286d929b8b42b1e202ff1959ebec949
+624fc7c2a65e0fdbe7098b536aed8468442a6859a1529beef81f4372d984d2c4
+2338b9a406b87b781bde10259ac546ac3bae07c83ccbebb65c75798b6a886b5b
+a426747e388ea7a7fafb45989b623ab261ce66a9a7e2d16638e4ffb50412133a
+b8e5908e35224475aff9078bfeb9d0616607424f8b96f1d19d4d1dfdfbabcd79
+40867ab9cf777f5a358b6f402adb8e99118bb14bbbff5774e8e7fecaf0f5d844
+575a5879ac5951901bd9fc2fe5342db774d83cd7964ba46ee6ded3924ef33551
+5238bdc304ca25c01bf6516fb94250c89581b6f534d8a0a40b4e3293ab884372
+cf9d6e7ccb6ceb0953b91ebcc1c12823b365a206b2c2dfdd54d7db52360fd1a0
+b9dc50e5fc1d451e65637dc41d726941a074d4b1a486b867ed6d4e471b3920a5
+1bee317bf0492e4807b1ca281c8c5b86c990fdd261afff905316f2eadc7214a1
+14a9f0acc19767edcc8c4c8c12c3fa4ed28613c72e2ab85303f174bd11ac3c5f
+c2c6c8d9fd2f4d64b62707ca19440d7aa286aa9398e1a90c916dc550b8bd427d
+e4bfc326b90f7e1c17672f23f8a85f4887bbd9f24eb0192e08d42b3e90eeeddd
+ff1897ad7b57dac70fe41b401e013eb186662431e49e88aaad5a44ce2960397b
+c57654ad1b63ff85ba3f6c28bfc89c22e2ee9150af6aed5ae72bd0a579dd0c2f
+512c39cebb6f7bd7ba5715b6005a49ff56da6c010d1d48224b9110c4f87b4a46
+51bf7d6b1339eacc7e23605e55e3b83584b63e880cf968c029e1896d57fcdda1
+953f106466d6ae13bbb0ffd17560fea8e5073826f2d65a1db821485d42436da1
+48771ea1c59c5bdc8ee82afd819a814ff562a4cfc9d2bf0b71d74c34fa28f12d
+2bc5c8d7be7726d4a6d98f22da80c5d89269e8e7ecd38847556cbb063991f3f4
+86e442150be47b0ad3b441a88c7cdbbfb64b41f1554478e54a7f77c2df21f34f
+bdfba790652f32031cc6dd43de11c4bf071d7704acbf47515b725d1e896961e9
+14dbb6d0d28f8f64579d49228180a5dc445d3a45a7f67ad76ab55318beefd57a
+39e4f5bf4b7dca7bf4825777cd5ea180ba5605a6f703da2e2d17c891ef797361
+46381e72e7e19649b48a8eed9e6862ed95ee9a18fee35516e8b360f91fec4d96
+46ff09b6d6bf4473b94863645883d92ca5614decf98fa08c474172f067da10f7
+985a3951dbf2edffd6894116aa7390d60a3cfaa9f4159c9aecdf4c17184d0697
+683b4a82e1ef0958641e77725b995095695cc99b6708c4c11c1041c931a24e0f
+e16b372a4be16d5c3282e8fa1107f52d62d804dbccb35b3afb5a4680751c284e
+64ea9d8eb163ac7a09b5b997a431fed475f6930fe8a60e188eaadf6b86aa7460
+b1c295015a84b92dee59bc1a960211c915facb260138a719ad735e5b345a39c2
+017b4eb0c1daac9ffc0a1803f723c92827d7cb55115b9c357932527786c5d89d
+e15ce91fa468b984759d36602a0dc624f31deb506115e5a067a1c44de93bb2b8
+dacc4524724807011d7749011c4d4b676e7cbc6183c6e5cc3556532d0021f16d
+6340f5d28b8a01e72ffeef1ff76af19631ea18849e6a8e0a6145992bf30c07f5
+ac9343a797cdb5b5bbb425f3ce8b2fed62ed95264937d3103d8fccd41de9f860
+8cde196f165221c2e8bfd06c28efda86e46525e8edc73cfcabdc39c20b8d8477
+eebaf287cf2dc7d37461121d704f2a42dd711be54b7ebd96911864501f68f968
+a7eaa68eb8257020c6f42ce4d2b51b166af236e20a2e5e2c8b73debdf36d5a41
+eae425bcbaa7d05aa9389ab2e1d5ad1410117350bcbf0fa7612dc27a209e0af0
+2dfa9f75dedfade9a0bfac54d93f6bdfbee2e3c93022c145c7bf1f83412d74bb
+281e958870e3c96f54cd838277ea2632a9fc418a1c1d748defaf0853e04f5619
+e7a254370af678f03a97ddc713b65f211f811eb0b562d606e160972a03250762
+9cd776c577749a41448baf17e4251f815cea8e52360a98127361747fe8f64343
+e2e7606e9a7e507908022a55515db8d117b382d00cbf7a1f73af718f98c24c76
+af0f0ac5702164341028b8705eb97a6b8534fd267b0d9bb205b8dd1b49a488b9
+b77209c2f3773e85f4362f5c92dfc613285e07c88abd3b666bd7bd8296316856
+d325a3c85cec3965be95bcace0b898fe5c08155dd47c49adffffb8ddefbf42bb
+fe38403a9d2fd65bd598b2b8a5e8163d76ab4a37b49711ae27eed1bc8c0336e6
+f15c9d88ab7ae5748ae3b6fb4bd19ecbb70962bd0eb05d5bbaee1371d2f94e5a
+fcc091f007965f5a682c119c167633329248766a19573fcd161995079936bc76
+215b58fe6cf48f6a878b6f1db0c26c7221899045711ad37add7429046a79e084
+0d6befb16dd91df2f31cf7103bc9925091e2205527b3be221b4a2d0d631beb65
+cf426f00b8392bdcc99a962504fcfe82976f59b3d62354ecf6773d9045f8c189
+2b7c4a3e0fda178acb605f33302b418c0fc721307a2c4c0f26645a56087ce67b
+9189d10a76e47a2dbc895adff92fbda285685d766872a7528c60dc608221a479
+8339c3c8b566bb126bc8b5c514e9d0e12c90c648559b2acebffd2c666a787100
+145f1566676b59090a9bc3915b7e4ded1bb8b5a02c69bc35355c422145249e73
+8f8431464a2a21023990d614ac8d32b594adbfd6b9b2aca11b9b6bcec3534764
+64562f734c5abe520b50df856ee6beb3fbb1fb303d13d17e065c8137ece936a1
+8d7e118b921e430b1636aa61f5803bd23ca4da2312a319daf97d968a26e86d31
+d303cc22f5be7544912db5077d47dfbd6b209029ed26457e397f5ecc09d8d9af
+65c1d2b5124ee034beb56fa634185c68ed455cb3e3b23e2e1a10f2fbf19d367a
+3f756e92297238bfa25765c2d646db401704a8cfaf5791fa9d5816089f51d5fa
+982d0f4bb39d9bc39c9105ece5b503894cd375ebf7d9c90cfc1883c63eb55408
+399bee3cdae3965a4336034fee0246260868dc33ccf32d008d6cc3b4dcae4b0b
+03a63eeb0e6a37f8b106b956f0adda28ec75c8f4100f1de0c75c407b9b83e76c
+57e76ae87700457f366198d593bcb19a110d3a7f97b80577b0a46fee5c85e43e
+f78c3f32ad56d91c6bf204e8e4718f0c9945b81d40bd778e4b6a137ceed78476
+da19ae05919796e1983f10010a33af2e444040c2709ee182d11009593bb5e41f
+9876ce06b108c7bb576ad4abe6ae5dcffcf5eb103cd1da517b170a09d749a8da
+f394cf7221db97823ace881826a0a376b1f33dc066929b1be9e6af0ced940e1e
+c6de0de017f37c5c8d40650c9037a17255612174596abde14eacbe211c496191
+d5496d145c1fa88e7e61d09d12b08c80f4ae9749a0ee3715aa4019c775205724
+7c53a4b691e6577280df5f62a81f2c458040e978fdce68f71863b29b5980c274
+529c9291c3daef8a053986ef83a38c1ee979976576bfaea9f1623b6206686e32
+e8a39fb054f632200619c5e08ef8d900cc46960191155ab2a6da7f63ca5f7592
+6a7a7db2cea19e2e4690ccbdff386a8a550ccf3e9b45485198dea68d847c1038
+c0ee9fbb195f5c9b776fd05658a957059615fa9fe5e170135b69e7d0cd36e48d
+139228c15d9a53d2722ed8ebc450a7bc8b1858434ef25e2492cbc1b1729ccb06
+8eca8c8a9b8db392cb99b763186e5061a94bcc2534f9468a2603f9c359733816
+8e5c2bb78f1bd79d120d65deed8feac36032487065c2a21296ede043cdba4ae7
+54f9be00446828b28a4b47510459a97111fab545637d1984762c9396714d0a24
+1e2a5ab79d972c44eb4de41e14c75decb23071bfb9a60146f954a29b81cc73be
+1b155eed67160de805c9a33be61322c2759cd13fa2545fd212a12e2cc3daa4b7
+192c29c646110f053b95aeac07204a0ebb2d04dd8a7887f9a27df018392f6e41
+2a991697e207bc3fad158407336eb49ae1e7dd8edd1acc5993e510bf7c627b17
+aaf2cd7f0102e4bd098a7a6d4249c57b81da88ffe0a4db19d38e4543456effcd
+115977349b3b9c788130b9b50fac4eb8c9700bb48dbd4ee53080dd37805770b1
+665700a8aab872e4b1f973464ee219c224b0388ed99ad060700a2aba05b88c7d
+1c879b29fbd92c1f931d588f0b8d842c9d56013e396b320feb28643f1f926647
+ab7d007a8abe8e680dfac3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+dup 162 /periodcentered put
+dup 163 /multiply put
+dup 164 /asteriskmath put
+dup 173 /circlemultiply put
+dup 174 /circledivide put
+dup 175 /circledot put
+dup 177 /openbullet put
+dup 178 /bullet put
+dup 179 /equivasymptotic put
+dup 183 /lessequal put
+dup 184 /greaterequal put
+dup 185 /precedesequal put
+dup 187 /similar put
+dup 188 /approxequal put
+dup 189 /propersubset put
+dup 190 /propersuperset put
+dup 56 /universal put
+dup 106 /bar put
+dup 107 /bardbl put
+dup 114 /nabla put
+dup 120 /section put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+/UniqueXX 5000820 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f67052788e6703bb5ee49533870bca1f113ad8
+3750d597b842d8d96c423ba1273ddd32f3a54a912a443fcd44f7c3a6fe3956b0
+aa1e784aaec6fce08dae0c76da9d0a3eba57b98a6233d9e9f0c3f00fcc6b2c6a
+9ba23af389e6dfff4efec3de05d6276c6be417703ce508377f25960ef4ed83b4
+9b01b873f3a639ce00f356229b6477a081933fef3bb80e2b9dffa7f75567b1fa
+4d739b772f8d674e567534c6c5bbf1cf615372be20b18472f7aa58be8c216dbd
+df81cc0a86b6d8318ca68fe22c8af13b54d7576fe4ca5a7af9005ea5cc4edb79
+c0ab668e4fec4b7f5a9eb5f0e4c088cd818ecc4feb4b40ec8bd2981bf2336074
+b64c4301d00e489955b2ce2d9040bb11626f0633ded65ae053753f4af570b6da
+256678ac3c38dbf0c3558b68ffd0eed303e91d8e6f146bfc1423c8e355d8d909
+4db424413d8433175726ae6fb7d5792226a4d8896d0f0fd5c10d1ce906a2810f
+c0d86042ca52a9ed79c72f1680284d6a7539d80f52dc23c0d2359fcf778b040c
+a376427b77f2cae8462aa56b449ccbdbe85f9c964ffa4be23cb34dfb0331748d
+391a14bf2fac19a7a4cce90df824640bfbdbf801cd8bc3b320e2f4ed05dfdd6e
+e5de8c3f4e06138807027f8867c215cf45e5d263af08ae00c8230e8625047d37
+a538ce5350039de5691c1aa20ad919e6ae4d02b44d0a52f8102607c9b94dabf6
+ee33d0c3147128376670dc34f733f3fae4ed53a0900139c26f7d3279b2f3f7e8
+d2cf1ace971ecc926886bcd6966c1913553faaf5428b038c7de4751096bdfd6f
+d903512f05baff76bd69151fff96ebae27dc2a203eb880b350d920ea5d108c3e
+40b92afeea451f9c601d65ed4f1415f1eb6bcbf0dff91113afad4bc83b09b604
+2bc775859433c07912b43a07bb2539007ae220753c21bd66bf8b38ded11a8bd2
+99171dfec90611c62a4ca279878c25c9d371189748527347b06428655843f3de
+c7fa8ea13098beeedccaaa4cb32a391870f874fd1b1cc5bbc41754135cc3a06a
+4f8d4dca0567413ef75835f7f1ebb059fd71987ec4bf9487cb961d0789ea3d1c
+a0b0d859565f7a3805bace648dc1ef11c0bac0d30ab8304ea4ed0a1eae1ae4ea
+2aebc3668d438d9035160a45fde2bcbf0afbcad7ac8fce73eb8c58206994fc52
+cc7e3928ba7874ce65da19456b70954ca44b4a08a9f5b487c4599f452d022a0b
+904927db5b3972d88a26dd06718b7b91b15bb377f144c9d47ba5f15181309f00
+9e3b2394909de907b14f7ec2c0e0954e8e5924dee95e9fb7789e49570ce7e107
+f7f65fba3871bc153ccc9d1c5c38d7b5160f9e43f59b4baf839d9dba79ff8feb
+17aefbb30132777a32542499e3f710eddc95dc85b34f6987355fae1cbbdea35a
+6bc732abf1dff52d0da4e9d400a8b8c78e9ebd2097b165c9d6bd15431866a8cc
+1c9b5eb696a509d6a071adbeaa384ecccd8a5f4437077fce723ead214af0d228
+881b2b80bb32c8dd92a61b7558b04665c227ea43f5f91ab12d360b49e2d49939
+033cdb5f3175e8252f42c836c3d3e1513e88b25543a850cf18d92e774b4584e3
+742ad10caf9801ebd077771fe9bf1446d8a64d50f40b050b023280d0f0fd04df
+c7f877d9a26f359d77af153442ecbdc3cc38ae2ae33682d6cf597bf832272787
+ba95c3e9b7696e2bb704a17247b85ab2cdb41d5fb08b95e9eeef0ff49f979b32
+e3ac241219c5560d19b84c4ea98e3982107521938ce5a19743eee02962d1ef13
+3f215b0d7e2714434bacbf0ecf3ce1cec5a1cff1bf7f1c504b2af404ad9c7812
+27ebd9e1a8946a10f20d8a62d693d18608606667aa1585e1cc1d03851aaab661
+7e472d94872c527586b1cbd71d73d9206115df4cb941bd3a04a8daaf5619f5b5
+85563c1d0d4c3262f0377093f4fe1856037958eac38bcfead1b48128653eee4c
+d2794b1fc938286f2f0df30bd7799cd9bbd24ac540270e92053d854890ec38c4
+ecf350e595536e7bc480d7b4803ede12b95aa33fb9a26bd751dd9bccf6945171
+00a32664253df056ede7405e72f665614eb3b0d8fe2eeeb3104e34fa2b106712
+b0c1b3464cfa3379d5772b7ee11dd15e6be6feded30149476c08ab2ece2647c3
+147e74706a61fbacb5fba912f4a2c26891c1c9e33f945ffd0437e63fced704b9
+5e161f776e6bb93148c3f5f5d4d38966cf51956ce75a9ff8b95246851de81193
+2407d1bbd8f140b67bf34688aa38bea8f938dd9389bba8d2bb5d33efec079e7f
+0cac851be99949faefb8cd9a36c4a5bea24d30566c0e68fb1c11ebdd34f7d7e2
+5b18659989707b90c7859b7edf1c0f83905def22dfa548e3d47f0288eefd2694
+7dc3d46190ad5b36bbd47dd3f189ffd3f927add8caa326fcd5d900b7748acb23
+f715cde445385b66af5f8b75168c3ba71d9867c3a24291b43900c8bd448137b6
+d58d6d860988ed2833eb77b17df9019a239c08044585dd01c9b4ed48068931ae
+ca1c753e9c3927b74b3d673bc40e8982238a2c1de526532d470985ffb5f77e6e
+3008ec16d83828b400794ec8ee1cb12014378d75f7b29420cee4658b6e88e701
+5d9e39fa727c9f5bb140da50ab8c105194d7375a1e7ced64343b018053dc14c6
+fab4badfd9b4d4d1f26a408ebb8d5372b1aaa50462f39f4397b7a8685c039306
+80634caaba7e1ae56f13302e0e332fd93db3c2055927574a4fbcaef78e19c8ba
+45586493384db0e3b5c688fcde3cd5a5faa457e1501bb72d1435ab8fa1743247
+7468875ccb2b7be20907c5af9f90bb9d587b7ee5de08761fc24d5c4f2be9616d
+71ae61239c31658d049d26531784f2e03486fa9c23b07a32dd8ccf48f77b2944
+604aea6abc94d5344ca4329bb5124df6f47979fdbd12cbb9a73b01ecb3c4fd70
+d5f17074e60b5c02b31105c497da910f58ff0380c79f380f143ba9fc7dc73002
+6e99ca13f090cd18d2c3776d9b9387419723d61f9fc3bbdc1696107231724e33
+00b2d116744518f16a0cfc6c85ba735fd771736260998c7fb73a302f0257cd8e
+9743f1cb69fa5d38f1cd369b670b13e89d8bc5480cd8310e22462985b7eddbeb
+a8a270a10259c3883fd33bdfd68757902b13afa5555a0397f72845b9d7b3d687
+60ef12aea16e7681b3e281755f15f8afebb56422e44f765f8eb414ee3a8e7cb3
+d14c9c0f7b99df470cd4c50404590c306b9a6e78009ae6822fcc7196a201866a
+fe6450e26e7374c610e1d7f372084e77458a708077f27a009cfb75c5ac4b6281
+1ae62365a81f362a0537775634879ada8ce3678e9d36682a148395c35013e172
+86fa15fcf7688f534188e8814f1647290f229beca04cff1a2055a9a8698a22d6
+d9f3a65c9a9a2678ca772180681d0cb34b0b4e9d3d75fa50fdab809ed6e8068f
+1a30de517bd365d66182a58b71ea62f136197b52c3a5f5acbd89451a6e4685e5
+b66c4ab87da0ba064d5c2fee2621ad119c7f7d3eca28a78e1829710e99dc2e2f
+fb3189d2fcf49f3bd4322acfec9e03ec94d800ec727851b9ea64428f72ca0861
+edf402537966b9633803adc8ba969ae09ac8c113287ef99384b3b7cacfe05c36
+0e22a4059cf8db387759632da68df0b9cea989561c3798626ee4941d7c6fce2a
+dd5606696161c57ee8c20264f29906418c7678039412d16786de5952c8418da0
+9adad034506bc38eaa60f4985d046b8750b82c275b954a53bd5d0cb78c5edf53
+9f101d3cd4535dcde931a552116193e8445c1ac8e608d9bafe7ca0f6e44feba6
+62358e7e9bc0a02ec3049f542670aef2a9c0b7fc6f8f99e3a7a6aaca72cb7cbb
+157904d81be1bde08db1ced1eee8f7883708bcd81ca4bf66cf74de596e2e617c
+f7be726c57aa44cfed96723fccca7dd04d4c136b9838357209b045b2232411e9
+a6f29ad8d1417ac445487d1debce3a05cdb7d0ef213c81a561566f65f1816168
+35abecf8970a1be5d4c0facbc5aebd37c5481e6e520f0a7d20856c40bbf305d1
+4db38da89c4c6bc3ed8e2ff7c57a2402a6c123603e9297d7c53213e2aeb8ea88
+e76dae892674570d0a124b3b489010c9cf48935f402b06b1cc88db14586c75e9
+a387fbee8d5a8b0eac721454a1c8f536327d91c2385dd0bb5d711cfe86df1093
+86e5555e77527d26cfb01f22eba8dc535dbe6a6578c68402cfd4b8b8adf925fc
+4805d4d4e5e876c89c998d3d68249da97830500f9bafb63ae986b5bfee34067b
+865fee83b0960fe70441ffa6041e5dd8b7630a0a9a78faa3cb22b007d14bdad0
+915e902e7387449a1e5d598f1256d477ee08b708e504380ff0a7dea9e7011996
+68bcfc35e828d20b3c5ed7abbf68d1e1511e101dda8945f2332c3b1150e3de81
+96799806fe0109699711e525346974f0d9635179e802e9fae2f35c25619e3388
+938492cdec02545e6c5a3efd575fbde73cb349fe84d857aeba0052696f7df173
+9bcdce235d38cd6aa05aa2ecf99704591374c049917c0da2ebe54ab9cb828aea
+4db10c245cc215293c56475c12f46fc75673beac1eec744f096d602a8adc7ef1
+df825ee4c7ff43b42b4f0650d4fc5a01a172e2b0b99cc7b74cffff2b9570c70b
+a9a2d5fb34b5f07b393940f920584b6f66c89beb5efad4cecb2d775a6a2339cf
+ea834d39363519553d8439af42895a9d90317f6edde570dddf9826d78c6d2f36
+30e586376a9011d7b57dcc095c7e18914e5a20be8624152439e5e1cd088c1383
+3c9da8b738086da3618015292717694272456caa60550903a2384250a5c6158a
+77d5f446e20d5b0118e345662f055f674aa6720e5737e41a69b047b2b033268c
+c843a7fee140d990e3375043a50ec98974e2fd44369fe10a0e12c358b1be88b4
+2a52a096a08884821c97f16ce1456b091d0c8a767e6b852a1b24962ca837fd58
+152286ebed200b8171aaf7b4fc0e27d776d70e8478dff891476ee3c748b1aaeb
+b27147f3774b21cd66913f5a47cb2ec3313576b7b9ad8d7fe9fcb6dc9715e833
+38ff91d22ac1e2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMCSC10
+%!PS-AdobeFont-1.1: CMCSC10 1.0
+%%CreationDate: 1991 Aug 18 17:46:49
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMCSC10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMCSC10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 173 /Omega put
+dup 174 /arrowup put
+dup 175 /arrowdown put
+dup 177 /exclamdown put
+dup 178 /questiondown put
+dup 179 /dotlessi put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 45 /hyphen put
+dup 73 /I put
+dup 77 /M put
+dup 80 /P put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+readonly def
+/FontBBox{14 -250 1077 750}readonly def
+/UniqueXX 5000772 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd800bcb325468c79ffacb9cd3037a112066957
+7889d67fff57549064b985d67ede2fb03272083723541051ebe936eff01a4ab3
+cd845d565dfdf25d9ddd2792db17f52f894bea484480f06c832140fdd6c3af0e
+fef0584c6b78b5e2bbb9a752f10581fd1c48cb498a822afb18cddebba34695b9
+b418010368fdfb7bf758d50f3af03360b81c776325c33c9c81130b1e1be840cf
+68c71ffd091dccc0df7b507fe8953dc3836af0da08ff9ff3e9cf7288d9eb8baf
+ffac546a0fd987ae8e0bcf7b759f4408e13524f478de5896d816cb0ad2904271
+cbec82a5ca50f0598502b434ecd94531b4a65181b5b3afcb650904b15157737a
+a4386f1a7f1252caf2adbd5c8162bf3b065c01ca471d520c884ebbe1b29f9549
+134e285dea2fe158c15a08a744cdda00bb6c62158262e24702803d9e1dc1d3a3
+1383085631154b077fc20488ee3aa03f47ed2766644330b94133f2f9389b99b8
+96d3707d1c5bb227fd3bbdf3a6ff572bf07164107c7a1c0710a5c7cfb67282f9
+c238100fa138b75c553d7cbef17e2292a320d3d86a6210e6e3a1e590b10dac6e
+177094d5dd163db623d7b344478752f6f3d7d5b3fa92e6bc72dc6fc343d2f946
+9153e3d14c5a6d6b1d9ca52947b789cb4cf6196a02973aff0b097333f8d615c0
+a1726ab7e31c378eab77150faa28cce535afe3ae5798402ca51cbd18dedc2c43
+5281d0781351df30f4d11761579676449ae4a47a10f677cdd31ca9120fc2606a
+9025d3cc09d58856a9bbfb17669f706ff8c7efe37a3656c9b20609cccb58b309
+0595ca5666833f2bbf884aac1cd632fce69b4e0ea2e0a25b9c4d471f0e322e09
+4cefda321359fdbe0a82656d3ecaeb68b7e0c7e733d85066ed7474c22b67169a
+1bf1bdf7dfd0ce0aaeef78ee393ce6ea65edc1fdcdf3f744f714005d8221a156
+4e70f2c76f9f4b0ad44d34ff9c26cb6b821411d44c151bd0715470d14f7acc1c
+2b27c836aff77d11c6ee7ce85248c91099943d367c58b750deea27eaea985262
+2e7f56b3b16e18532b3b6b6da677e9a56b4f75aeb74dba81474d71166e923ece
+1f5d1eb2b489b0c07bf793ad7cd7c0d539a9eee4c82f8c51d7094517f1655fdc
+13a916840ce7f19c3f3211e568138822491bf6bf507e625415a1a3c15f60acf0
+136a05f6b0619232b6c5d75545aeda5bc8dd36a88a0317aecbb49243240f551e
+2777854ad7e832a29ea4c0c1d119029cd7ac87d603ab32aeaa43f2fb90093862
+066a7bdb5eaf08007af8d53f720f9ff8ca09b9be59641c560e645b745f44fda9
+a2d355005e803427d655d3c7236857cfaca08fd2665c6bbd8f5ca94832ce6c0f
+5d0072f8b12b3d043c9a31c4d0609e6968c50b410271482ad490b2faa68ac4c5
+0f95d87ac80f7ae3d221e70cc39362cf1aa50f103b31d3cd1b4b3f329693346d
+637f48a8256c6d34599e788cf80ead2e3165b0be2469322e7544894f487f4a58
+8ef44775fb83eea63cde23a5335c3aa7f1b72f7d87409f75f93454eb5ab5b783
+d08ea873af4fdbc51ee01ef5e0982aff5b4ed04f12e06ca35971dc9b86983bc2
+eea185d585de405a0b1fb2b5fafc9bf8d8da69772ef0d0e4ea59471a6c7d4de2
+5309d13f50ee89154b5c4758d1eec1c32cd234875ad53014a9cf50220028d1dc
+5d2027ff21e31c9db76a19b518f72610fa156cf6d53a87547c8fcb1ebd40a7ca
+dfd1f5d21e84643c83fdb15af2d8769ff0e4c09527881f11baf7662343afce3d
+d2d50acaad8f939d728fb81edbd6cf1c15616faff56a5766e104b1b9605b773e
+4cc82279cdc65d67e599e698db223a08843e084302ced3bde0b45f45421927bc
+31805921efddc4c87c409efbebfc78039c90b2485b0a747d1dc4185b4fe789ea
+155325807d3118856f3051d6c67b1227a5278cadadd74db2efed3a3dcdcdc445
+70457fa67c4f46b283f3c9e5d9383bc8335e1040c4d1f071f3d7e56d4e4fec7f
+87f12ab880119bad55fbc6c9726a79a1441031f9092e169d44a94bb92a11b037
+399c50b88746cbbc45f4409dd270d6bdd6c10110a53af705b8ff309d862777ed
+d89f0a4900b856d9ba658e44d8f0e2c5ba648266aa104e0060524b55fc51b1c7
+d7d5a732310399c510a0b02511cb0b6e862021f6eb30effaa1d2fd5e9a196b92
+798a33e4d9b71ec08e9f78cc2b860c8386b740d41489a7d4bd0934bba570b90e
+a5a151608a06a9ec1a38b9e9632fcd40dc35ccef0d5f923722efd7d5d335a4f6
+78db80610fc88f96018508fc539d3a487305cbc1a6366a3ae9d193f280c49642
+434f876f39faa6a22f12e6e6dbaf7e1bec2134a0b0e7ec88fd00a78b14a036c6
+f07eb3fad6ab6eef0f40dcd89b81dadec0e8c64c5d9d63df1698a574b4064020
+043d74d3a0f95ad169ed3444f75c403335da9bd7a16d94d36883d167a7f04bc7
+2c765718b20e6b62020218bfe60017e48d694832a7e0fefc9c763be1a8b67b3e
+c68bbd8793fc237e1940587533c543e5bfa8c3982632bc143197ddfd492a5e7e
+319240d11249aae5b4f4fe4747f880429cfe9da29b80fb73dabee09483a4e1aa
+e9144eb892c34f7bed7f017cd422aff9fb7c4929140c370e52b43dde09a1f0e4
+cdb0442ca9fb5799e148368565f6c356667ce568f919cfcaf2d3dd7c0ad37f7c
+fe4c86739a887eb0b59a4ab5d98fd1dd78bac5b6b56edc9cecc5fe8331fb7c2a
+26fd0f0b172abd3439671229c9c58f279e16de8d75b0789d926fb3226cd30d9e
+55dc689c9129e96c599ddef993df88c7cb026d1324d6faaccb9f5028d22432ee
+c22abb6cd4519ac2e1e4e48b63118ef8f0522280d602961ee876f3a5a513c8c9
+252b9d1f3bca692cf2bda17e60e45e9922f05335b057f4dab0404c567df30086
+412861ca1d87918c981636bc2c87b9a1f487aed1c7549eba5a88df77c346b3cf
+a0060335ac074a5cf363bb3c72f397032e9c679b146069322321da1443691e64
+9dca948f7da862984969175fbe1971c91e484d845598005055a6ff56767fd7ce
+75dbe05fae9e6c75f8fbb0add8fed9926a3fed591f9bb50d01f22d670f710b2e
+4800a1927c30ea6feae12d6c1b4dad507f77bda41f17378490687ef88062c6de
+e9142b1dca3a3938d6e42562305616cf1eecfc874a309e716b8a2dcea945adfc
+9da516c19f8e070c67afe489ee5dd843dbb792b1519786b8f5a9e572876fc9be
+bc0131c1b078627b85905813dbb52ff0cb0c81ea9021868c20196e047c53965a
+d3585d0e5268a846bef6da215b58aa898a78f5de32de76a1715ba4bfd178e748
+87a512c44be7ee0fea217581866aacd713c76c90e6e718683948be8359e154a5
+21450fec7fb38b6f95df409ae7983dec8da8c8189eda23d8beee73f8f70243aa
+84d920d217fdee08675a53e09b2457a19fd5f2fd311525dcbbd0e1164d5c2d38
+01af0a146d91e9a4eb9ea5c4131ee08709fe489c17b57c6e57fe27598dca4616
+a793c0bd2607e4c46b75339f0bae7960b983cbacc51854823dd04c8cc2572674
+85a1e78176c3afb10588a365d8036327e9bc6ae131d9c34e7d9f5f269fbc3ba3
+bd908ba3c0de071e81d753d1c3323f47c56ca6ae84381a5b4991cb1ae626831d
+367382fb74bfa6f57aad634704a9e844fc9fee43f67fa5d4cccbfbf2a55f702e
+76589be2067958515c3d84b713cf16afef26e4095d53e98808cfd371608e4a2d
+6e97dd86fc73a270cbde6f0bb3b0c4fd04c26929f2736660f8c649a662ca7ea8
+c2a66793fffc17cff3ce4028e3478ec1ccabd4216107484719a5fb16edd5e692
+f959c4e99ce44bf8050e9b2df46693759512a97234db98b170554b8c49694f66
+460d649c568ed7f0d2e8e62bf0a7f1121a259fc0d44ded43f06fdcac90eaff42
+e74c38f377774595d55b24a78d95bc9453264dc932d8833cf9567ceec85bf075
+48673c91319bb9c5c6b3577e690c8909974015fac4bc85e0b169c2f8284407bc
+b0c8d378a49e8dec96ee2fbc6b6e6ed7b613942deae9e8cc67670917da0c183a
+7c685f26cf5815c6a084c796c2b8ba3f2282837bb60c3da317012b9a72fd3090
+8e0718ae887b5dd9dc126117164b9e3354f2929fcbddde9623e545f677c2bdb4
+c6ef131fc2d057a88f20dc952a6410a0b6128351dd01462892635d60662a917c
+316648af4985a29fcf3b1a1668f93570e57da891bdfdda85d782cf0031c246bb
+d79cccb5dbbf69c5bb80a433515616b511fc735fd631c6e05199db5981cc7c7c
+a3fb8bc777668b9cf7448e27589230ee7be9c1bb95f2263ef9588b4567061fa7
+180ceba86b70dcb2806f1c48f30f213fa4ba67ea75b02db8855ebfcf6c793bb8
+f8bc1bfde26131a4bda2af30610cfbfee5f1a410ac289d3d907ea40c9b925560
+76143ec961aae918960430444299a1b100e72956cca673ce2f1a9ac353176cab
+b4bee405e279c0b3a007e8f67951e5f65e2c63d244fa26522e374168242dd607
+0a27d9ec162bd5bb5b61eed1a93c22ec1ce4c98f479c92a021896d1d3d350cb9
+cbfc8bf67c076f43d5774f779612da7c891a0d3c0e6f26ef3fef42235624437c
+c4ef92514ed8727b2990ab10bd04c47e34d4b568a7351782a55e58f5bcb2ca23
+246039eef7f581678e0cf70304162b3c925c3c75d613cfe2614230240c88508d
+592f12297ffa3166365fe3c401f1bb42dc21a3d30b16add6167169973c59bd31
+128576454981ae660508cccd6a4020a3c1ad9d9c76aa9e5c6925ee1a96d8f4a4
+2760b55503eae334654d6b61e9723cfc7675bb6bd53a5edab0392b676f55a4f0
+79ec919594d3141b1c44d069937d56684ad0d11a22d227222798fb63748ac648
+637d9d069a3c9e743576ba17def3e14a6e299d74c4f4976b0d3b710eb7ae3ec8
+6715499e3a219b3f7f4f27bece5859355a8d763f6dedec6585547a90f0a9625a
+aa8a23d4673e4eacdb4cb37fc5bca91e5a64e93f4973b24124c58ddd2fb9557c
+c6983aa6b5c049f0bdde994cde443120dd9e341d76f51a860a9e0f5d3778e498
+a296a6b2de2f9542dd3f0a455510c68dc1589306021fe9964588c0f72ed203e9
+456d3a0d27c585adcdbb52f2d3428c6dfb69d0f410f23dd9da03c0b028949f8f
+4f0ff8d030a9af393d859f6845bdea52885cca68b0301c7aa2b2f93eb4000c72
+4ba47dc17f90916e92ee883dc6dc404f04139f8cfaccaaf93639ead3f9b0cabe
+681bce88252cea8172603290d2aedae14d90504b4c37b6452b0e44e292f7ca09
+ae026a29bb4cd0f2f1aeca585de963b82f58cd06cf0ddf1cd83cc2af4f95face
+93979ba9f72d554bf288a841f3f9ac9afa64e72631e3e29a30f61a68be86b08a
+3d4083c685764551cc3e214d0df92a74edd89e67d6b05ebc70a53326c7a996e6
+78938c532ad08a3d5060d8dd2620161fe5318287f7be8af5dc7670a2f93be939
+ee8d06f3f69c6ae90f94304bbbe81d024d31bf527560c0ee8faff9c77c57195b
+2c0bda695180ca04763b2ef45e6899a15deb926e261d846201a9f4c18503724f
+13d163310fca6b821494d16a6f5dd3c0009b49f269fd36b3a9bb70c782674eb8
+ca47de4cc113ff3b844b38acb9f522398f8d5d0e4650f66c9ceb33fc17e8db70
+354834bd9b81832a7966144fecee5c4ab1a9a784f5ceaeae18b11f2f8bc8fdf3
+1c0da37fee7cd8118ddbea3372173fd89fba10f43c8c6d1e0c1bbb7bdcd1efca
+8f769234c11b51ace6acbe9de9941ca62997c26df5c0f8b6913c53495d4aac01
+51e096d7a577fbff274b84d7cd81fd6596099b792ae9cad3d7f2ef8e1ff6dc97
+5716d8260be9f0d939b65e409088f638c729b528c399a8b3d393c7f8c240f07d
+38af052362e83397ba945296388994d172ce331e6d4a7cb7a83a1b1e6e791798
+199d16007402f3f50130add863e59497fda0e45068fc57ff998395ce223a57c5
+1a3433fee7910f66ac349d6627a90ca23e212d9f561a151e21d4e314e6c20a0f
+6a5fd4a904ba8fff29e7eb1d79f24a8331421949ab6fa41c65404954315e310b
+04c375aa63a0a8e653fe388d45d0cae647609420e5a059dd724d7a7c2eb01cee
+b25d9b1b371ebdd72c65f195c5e1dfd3819086013c67fd50c42b8c93db77a36f
+24f25e1d321faff2d5f7492a8bcc184989ef9741c7bcae816c3a9a393d27ceff
+6475c3900153437dddc166a105aafafcd4ee6822a036bb7c31c77074f856b7d2
+3c4b8429d5203b339393cde910fbb7d38f8a1a268f5beb9c799543b4d605682f
+b31ddaf3db7be1b71b5e6eeb2a702898bbc6e9637f34ec5bebd2dc6d08a93b94
+de6e2205875051fe42c11d2afd1b0fe6d0587d56fab191b3cadf1876a94d1351
+7792fa5f24b85d05ea3c011eebdf34b6e074bbddae64ba2a8b2ca05ea3919a7f
+d8deb747da96bbfe947ee1fe00723920e799a6ddbc999099d85117bb92970785
+9f6ec1b497e394f8af562699f1427abbc81d49eb69aad997596bb4471863f505
+2bd2b468735885acfcae829a128a4035d56026a92dac1bcc6d2c8e70f104f037
+453a11d65d0a42049c58e96547bf06bd62af8023b11fb20445cd6554fbf93873
+32064b02dca69f2c060f269acedd0b0c0dbf35bcd6ea6873a09708fe18cfe4ef
+59d0e204181ddba8cbab02b375ae356c4e21612168c2fac2597ee2016f34589e
+5efe997b1002d5b9d2605eb4eada75bbe9c088d9669b98743bcf67ca8b940020
+1d6a2c0999282c45c57ee6a53982045758488b4ec8df148a70af78f72fb29c2a
+ea6de7f95033f770083cbb25e054f7469c30467ddb114115633fbc8456830d90
+2817db89d037337723a93b81e758e1dea1234f082dfa558c59350354c53fda60
+27c0fee9c35b6b888aaeadf5619e85abb60f32352a61ba1a2430fa58a523ea68
+d6d72c27e52ed9ca18d5f87e7e9b8ff89b3aafcaff4ecc5fdb05d5a45315e297
+fdb77ae2ec9e1bfe36ff8c59d995b28b48f87742e80609e461dbbb9270f4df1e
+3a8e7e5427c6a2a2a7167625344c00239cd4d31823859bebcf0bbb7ef37adc9e
+502f6503db31ae4bb66b3398e4ba8297b2043aa9366dc6825b88c689929557f1
+2021dd83d52162f7d64d6061f7f3f9c69f8fd511afef9df0f748faf42d65591d
+0edd70651506f4e55762ff3f4901a5c3559b1cacf385a2ccc951c5551839c36d
+c350b19a0918f73ec00428ea842bea39ca34dee9d0c5a8724cba56c58fd07f11
+6276d23eb89f5c8508939edfc47bcc74b11eae67f7f9a5bc232fed8d06de907d
+c5f2084ad12064d60dc5a09b9d6f02032194c667271f4a5f4798c4b7265d5543
+64bf140a71b1d8147936ec24d42ecd3e0731f4bb80269687030d4647e158bd7b
+fddd8049d51a56d9c81d4e3a298b1a101d98b0903cc88b67af902eff18b19344
+b78567899250e157e8e3c9c54e7c1e8644db219217c59e39c466957149d04907
+b1781d2ec747a8c0a4e45530b4d271835bd3458caa1cdb781171e320fa6b82af
+6455ab0623b2486c96b3831a878eed744a6f7424f7fbaa1e49bf021448281237
+4c5cb51da2b942745c688fc605911cb18a9991e4218e1f2646700a96184c955b
+809d44b7eaa1b522377ab47a06e4229bed77e9a0cbc5fccde57aa9c3543521cf
+c7b274d7489173b5576e9cf6e5f22e6136ce1e0e08d8931fbf6bfb5475c7b849
+fb4504c16c821ed3c9e138bf96ea603bf93f6caef3d3b03ad6f76ecae5cb1834
+f7d6132630888e6ff5536a45b526baf0be28acc9def2d47a624f55a0a90bc5e3
+087e59f9a09d82077a7e3ae3f3bb8a59178c8042394d5c5324102155edc235dd
+16ea577de3929952709b12d9a811f87d19996ac82e71dddcfd5713ec32b45c2e
+fb8abd8b8dfc22cfcb5216e2ae32b60ce102af08a7ef62368310a37b6f318afa
+7bed3a98391bf599a2d2ad9300350602259b335bedae8b0d5c118b9282958562
+b8a84b08dfdc7ebc166cdb7d11310ece8616be23d39ba95469c42f6bcf1253a6
+d243b0fbba3882d81c65bb22a82b68391df6bfdb0da266c941c075c48f1fb22b
+ff7485256f5eefc550a4c22586faee8e90b57d18dc661d96c641d84a19970914
+ad1a1dbe81f6fb947df388178ce3529da5d64fc1e08580159c536e1ad9d79fa6
+9c4031424877a643a6ef3b5877ca56a2283628270cd74945447811e8323e663e
+d02704054a35ae0978e140b4ccea9307142ad5281e5d16fac531321dc12cefea
+16282f0632dffd7ee1200ff7712f775b49f0b6504ad30baa92da16c0890904cf
+82af9b5dac070201dac4889517d838c0c737e7de6c0ab926372a9e5c568aae78
+4de8f51d4e79799b8f8ce89cbc5c3f38938ad42bd894e156094ff92f752a1a54
+a3a8dc5bbd7ed891506994a5cadd67cf2c1e62814cf8b9caedab6bbb8af0d8c3
+283a03eece42a6d45e0e33f1aabe40260ec3d6027f1fdc25b3651151cb7be712
+51303e521f087cb24f0e9590b80b526973e049bd608e3245f2c9ec8a0b933bee
+9489b33f3f7819675f2359f9a4e0055f8a4d4614f54870145d4633369aca35f3
+9d8504fb134f4cd9df801f32648797afe01d8fcb12f32d64fbdf9ae979c77d08
+1346978e9cd969c3100fa1bee2a67c2fddd6a20a824c42de91a19ee60173941c
+1edbc3752cea56cbf03a4f9f63c254a43c64d9cd6e6843ac633b82e54e2e5a43
+66d60ec7e8cf793784692a1ef3b86abf3654753592fd4b29ef3e324d631a4345
+cb03fb3465fd104a2f065a3b6a67523e5c5b6044bec2117c04fc6f958db5dc10
+d2a7824dd48e2890dea29467f549cd2f74e4e4f9c1c00b77bbafc10e4ca91736
+087a858feaff940ba10f9e34a1c012b7bb86f2cca6bf7ac4903c2d423f021ffd
+5a02e799778eabfce0e5d5d525074784888910f659213bc371602e09826610b4
+63e9dd672b3b45ccc427b268b4ff21c465ca5b22be1c5496d8a99814df2e17d3
+71e4460c6bd3e75f96034439482ca4db8cc4ea787367d50e2a945c764ddb56d4
+1d65009c8d7a49755301e8fa53e052252e472187b8ac4b467c61570c4a3a6d8a
+c3c27aae959a98d244ea0313026370e291932445b6f0eb0ccca6eed616b61233
+5278add8eac1a0c8e4359e3a4aec99a17bf2db23231ef97a2f23e93b122f79
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 173 /Omega put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 37 /percent put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 61 /equal put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 95 /dotaccent put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+/UniqueXX 5000793 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306457c7e62c1d269f306bd3402e266de
+fc3b5e7d8a8d2f5bf0fe6ddd40d07391df4fad4a6018dce29a2b8f692b29f202
+3a7c0e66de8ed85c14f1f8492167357f51a7e84cc5d92e0fee4d81cf7fbc8de5
+2d2e7bb57142033993f9c08c315abade8dbc4a732e84e142d3bee51557910e12
+cd8aa37c459a5e6b7f5269f59078aba3be4641a11ac48d0b625c8325b38ec08e
+4c9e5e7fed976a5650d99d82114f449b9ca14c4ec957702295a39a93ef93f618
+99b8ea06b092c3c1e503e6e436e0a9fa22576c8930ab3dc8c20f5d82b69cddf8
+ff4dacfa9c54bed5a3aa3ea5b129fe96be632843b9b6bc91b615581a985db56b
+1e01ca60ee69ca92cf5c0882ece62edad3e106d835348822400f0b66af658f2a
+e56ed08f8b0010571807009b73ab12a8cf14ca6c71f03c2a48c500f9d62266af
+154a6375ff600d9bac3f05ce34142d6867a79581c533176bb2f3117336671e2e
+44638a97167e2ea9644e31ea16c2ad2990ea33c54001e0c8156e6de8ab6a4d40
+a7137ba275f39589fea2e2db8256adc103d6f9cc038037a47e8fd469c5f98a5e
+3c15bd4ace40d340018b1cff7d1ed8abb0ac57b5b5a2c20a51957b96c453edb7
+dae5affd91a46d938fe0a13363001d844ded4323f1ee6d30012aea19b024a552
+315505535c85dc26bad31e09c50e6512802976d298c4e90d0044c362e6bf3ab3
+62a454ee93de25ce54411090c29e9d75c80ce26a84404bd9de3aee0e3f921ac5
+87f907572b8354a5c3165eea7e8b2ba4e333802132f760b41a900c698eb3d273
+8bea0aaf7aae96a558f08b61aec7c7d65b2889bb7b99800cffee5ba19ac90fce
+11437be1ddfcf0bca5670b543b9644a71c8726d0c1005abdb96f6e0cf7caaa31
+95017ca81519151c2c0b04f81e717c0691b63a76e9b25329ce2625b711cb7bf9
+9d23ec2bb5ec8aefb8c1a3b422ad617b3da4d49685fd44cc21a1fe5e1541163a
+b3e1594601d63c7e98801d7746474377ce93f81404f3570afbd5dbfe77578605
+917ab96963987e6efc2d3f99fa56ecae6422579852567f90cc90e4ef6d6f71d1
+858270205477e221018a375ca83c572b3f972c5181d18643cecb04909d84cf76
+7174b3c0c8ec69bf1e9fdfbc0fc7ed97ec67d878ea4ddac8caa522fdc6932df7
+21b81af837ab56b547d4799241310d6692918fcf8a46189a78d6638aad7cb446
+2d8774ec73d184076595c94c0b4a8233cd34f2d92f6ff94f941dfd589def2ce7
+90d5cb2159b953338c7384cb68c11779120a68bfa20b993d8c0313987eb96a2e
+aa2c11cfd838e6aa48a89e6ddef3fae1a1b078be9787140270556a96e2725a8c
+f1ad46fb52938900730154aec60f544c3d4b4e3ae36a29b707853221f9fc218b
+2f527b97f773dd43a549d2cfa221d75c0663d796c562341d950ee0663047b0c4
+cc2dd64bdf04fc46958cd50f4b6e922f609d4bd19b51bf81d9d23acf907bfc1f
+362beed8b6d547d04c7b02c129ee44a8b5e6d2139cb662989e1aef41c1ba3cce
+93398d15717dd541df07668c92881f4710fbc72e4bdb87e676823f5b4a07ab39
+10ba3eccbdeebdc39e2b05e0ebf8366a2db8698169b35dc9b955be8ab67bdcfb
+4952f1f542f3201d2a49483821b4ec1661a8d1c36b7a217c80c87f36949fbd9b
+e98601e6a6d3499dbc3033b9c3a704e6dbaaa701141598fc35541cdedd6a7910
+51681eb04247ea0f800b0887210297f79e905c55dc4e3936bb6907872d6f5319
+a3d6440478573e158e9150b94898c64820649182b4a17ee073c68ab449cca6e8
+459387521cea49ea484c53bdd8eb2dccd7b18b480babbbcdbaf995bd078b9643
+e43a90fa2bfd75608f95223c324189edb38d8be5f87bcb6631d3ce13765ebbc9
+854a6ff2125f51e07c64c4367fbbcf5186d9661b247f49979e2086c054407b87
+0828e5d7f6b92c4521dfd979cd0a9d9c23b2f79252328a95d3b3b137fcb91b69
+436480b999219fb9f41e423df20703a8d6f4d5c8b3f4160767909db2367eb355
+f30864def5869f5ff9cb6bec0c24b7a1d31c47b0903054e15369770d9e88b4a1
+4ddc22922c21f139659833837e663947895400da94d4358cb1fbe462e14787d5
+53ce658c6fdf3af9f6d35e4b153573f7c9b7a89885dc0ce7e03317f820fbe9bd
+962d8599d51dbc73960b35fa23f3def26ac4f518fa177bb12fe49fb8ac82f334
+8a5a347e0b72f58acd0813ee308ac29cad1c64ace928d140c84802f90066dbf4
+254052641b5906cbaab58e2b631816dd8b9a88897da3b6b881db49c5eb8d4622
+43461bb6758adebb551114d9a85c76f9bb9edf78251fa2462a14a1d0f5ae1bea
+97194db98669c92de6fff8c1e159847257ccc491757e9408b6dfa5fd2c711585
+a1ad35a348451c9fb7fe92092c82e0b5aadebbcde601eccc9101c093e064cd1a
+6cbd28e800219b8b39f7cafee8710eaf315579a85cf598bedcd1d77996067dab
+c097e1db4ae3e754f71ab628f56be4c0a48bd6e8611c39eb91166245a8e40bd5
+0485ee0cc8aaaea224b10863f634161592815a1689a891d7f179a814db3edaf5
+e1bb471640e8a58becb50619156ff9d6ac69d56b5c1a4c22b1b507608fc3e647
+ae43d8401689655827cb6d03bf5ec2a9b785a138cae2d347d306bfe89671d6f5
+606d60460bf6ce588f87b2abc37f503c98651fbfd3d300cc780631e360cbec31
+de91613076cfbd804715a45d9af8fefdf09bb2fcbea4e6e3e77dcc23876540ca
+e8f81f208155da6ba34a167200ff9bffd1ee455586eeefcf84e6fd0784cd983b
+6ac6636c713072a9efd03251edb2be349f9463f1d723886dda73ebc9178917ef
+d0c20b133f196489f83930a18a819d63922dc4a00c19ef1107fa03cf348b5f56
+8f819d4084033c5eba4e53f83303b6d0a7051d121e1c81e0160196573fc86378
+046aa2086c50a91cce1881dbf6786f15aba6c86514898cc387c2b16635b65bc3
+d3423964e358b9722bdef9b128b519d9d12bd7c9910188ae525bc1fc26549e94
+7573d7561f50eaf7f61e231b48dff6cd8bcc0d37f4eca9fe0a7207163e88225b
+1c71f8ccdda3b9b13d15d400becf7306318c9f817fdabdaa30b941ff0fe8fdbc
+76d6b96eed0514f0b621989631ac6da7a8c18a794874200e50fa396cfcce27cc
+623b43eb770752cc55a8090d0d1c04d9d754334cfaf4e565e820b2b175b27470
+debd198308be31d52ca455ddd3506f605b92cb14113bb1e87e5cf7d6c2d88dfb
+0980370cbb9000ff586a2e537a54c6964875083e0d1a6f53a23f87ab4caf9241
+2fd8a102ec874f8e45e340b13aafb08c46ddb7ef6b9a41aa328badc9e3626fe1
+162ff7ae4358101da19c134b309b90ae1ff3f521c8992a9a8ee35e9e6eb9d402
+6d95804610c1ecc556b9a7a6d32a7161047ac2220e4d504431bbbcaaa741ec57
+c65f033a032df2140537daaf72431fbedcd245f1c0f32710e13c13c7818e12a6
+248fbd778fd1eb1ff26da27b645182bb70fae86a99aaa7a863322815a47b7bef
+a953d12bf2781e9d9201e0fab08dd048a92cd11dc2df98c22d60c632f67e7d1a
+9ee258211e84500dce4a4cf7dc14fcf9fa5907b261abbd0e8de78ef2a728cb86
+6f07ade6547cacd236339825560143241caab7eacb5d362016842653e16ca10d
+65aad97c0fc4b4805504668031ff7e66a5d866c121acf924063a5e99b884d7bc
+3c94b04ed664fb2e63c34d9f19d97207117bb60484d52cefcac2af9851d6c1de
+af8f77a81d081c35dad6905b3c8e30193543df4aa6978d65e1641b9ab5d93d14
+a23399f15a77cfea0c6adc820a89fecaf94c814dadbff8a03eda56744951c05b
+f22ebfee2a98e5677ac008294d180a8565a55e01645bc02f52cfec4e7e10b0ab
+da4bfca733af016ecdb1a6325579d47e8e99b95594a95222ecd677e963600e92
+9b7aba988f5dea8c869d60694962915b8f482e0d5764e705fc414daf16c13c7a
+f1ee57f027d37f45e2b459245246c21b73a14567d0c2f55d9c8877bd47b8942a
+d2f98eaac1a201a3c744745bdeb3127eb31e991fa2d8674f5f19acce27905073
+cf11693dc7b6f5523c0c09fe50851f09a54e9763228a274f04c842974463b232
+2e64757445b90da6f23b4730a54b7fc93381d2e16f98e1b9b823b49908516cd7
+594bfe6b909d7be89ee4209c4c13c68b46fff3ae0ab223f9d01ca3901dbb019a
+bb567e2397936bd3319162ea22304d89cd7f8fc22a73dfbce0a0f2a7d1240628
+8a7655cca3ca90038d8d2989e6503095de00239e3772a83ea9660e5c55a5b020
+055e3c3a9fdf3b4006da848cb7a6f77e7eba5976dabb065ad60a54e9f84f217d
+185d83db1b4a63b85a01f3821f1cdc357e926afe8d389d03feeac413ecdca8f9
+40d2db4380b7a7b22b8bc29f9ba626415ec0d242a4b7f9dc27ba3b709a7a9b7c
+6f5f531cc2e86f85e3c239af9ebc47defb3ccfcaa475beeadbeda3fe74f02664
+e22e7077e512cd0951ef69853c310fee2e868a4fccf4ee1384c459eb17163040
+93672d50073179fed1556c7d9fbebf67e5dfbc6d5edee86dc75864a6dccb2e18
+48e7b21f449aa075a8b2c95d833e79a37516c25efd13a1fa8356fdb35c8ac97f
+1adf7f1d50d671ca36ce54a8876b70ec4f18db83c89646114084d43e3b2da169
+b7806de852fba7cd6e2358109c738c0aa2b3b01af461ff50c4b538cbace31bff
+f4d405a49c1a862a490f4dfc1d86a26ffaba45505bf858f7a1791f2b97197a13
+a4fac0331aae017335de8734327d148f8ac8e8dc42834afbac69ffd92b322bc0
+9449d6dd044b11ef0edd74726f2217e9bff287168501e9e03344a3adc66278fd
+8d16b529cfa90c7808e7d550ba0c39ede15691746d70151f1a22d38160046b2a
+9ecb2ef997d39358f18b48f9bc162a34d7eeff035740d34c8166a13f73147d3d
+f9e4746c599e59299c2e2ee6968420f1d623e04dd2630f8e9a0c47cf0704dcbc
+cddf679304393a488973bcabcd0be532a70305761794af76b11c28d4f9efd346
+cbda42cc43af1d1126d70d2f8cf493dbd981293e783a9be9c409dc80df1de20d
+3b7b0313897fb6dcaebd82121916e3e6f304a9b99d0cc69dff63f0a5972a2f54
+b2ce315fb83db9e91cf648fc47c6bcf2acc91206fae05768f15a727cd985784e
+6362ed0bcc44f2ef2133a5f13efeac510b395244c0634295a539ef4df9483362
+a8658f68fed853d891d6641b746bbce480862625d4ad1ff1b4a0dc26a77b0021
+6d15fa6eb49e92e0dfdb3ed542782a73a067fcf53533a65a1675eef300d3492f
+6f9d1e89ad1c953da8571d5faa8554561f5cf2678c34a29a66f62225b0868f41
+118fec641c8fd7d0b7f8533acd30ef39416a17c979a97c1f4a54e0ea7808d6a7
+bb1b232f84bd35762a6a01cefb5aabd128ffa6949f324d5fda72fb71af5a5f0a
+d42c2455fa24118e3a1cd9f68ad0cb71fb8503c302718a2779422edd53ce5a9a
+7119b90af41c1d96283f4e947a444949be24ca15c84b8adbfac8b6154176b694
+bfd08fd9ea073610e9abdbfc2fd4857b7eb96264483f23c1ae4cd15207035f43
+24a28b16d0a04aa9ab730fa62b561bf34eb348de1f9be73c477b656e2773bd72
+e752dfa66bec37d94c699fcb3897aee1ddf70a941edd8e2de0138a8f8f4ca780
+14d51dd367d77fce377901aede81021fd34999041ded48b2915bb5a8b4fcc611
+fdd5ea2972561bbabdf5798f85e8eea94a558ab1a26caf622b0f596b58f23764
+143bb23505e1c3c165a3dd44915f993684fb0e6bdcb7c7fb9158526f5d63a34f
+a06aab668ce89cb3a25c10b4392a967de2c804bf60a40b6b58ee0c69d482da0d
+9c6ff2bf623fe5a19f606cc65af230b7b2cfdd389f8054d547daea5d578742d1
+c30c6853b894a31baa593b71062386510164edfd6b0b0af6a6766307b2d7bec2
+f9bb010c9792318dd6f07a707fa33dffcce2878af2235ab9a1098c8025f4f3d3
+f25fd8d7885c66a22c57ef7fd3810def349eb4e78750035228297b1204658a16
+bad40e8b79e9509cf127c9a91d7181d6568d96abdec269ee76e85f3d785c72ec
+5dae4353f69972b7cd709eed2740a00481565ca132954188b78137cc9a3d5aed
+22841c8778df986403546e3220c89fc0167e88011d5bcef184851ffd00d6213c
+98949ef34f888b31b2d790df174fdd9f17232985b8373a176b9ce02f4938f229
+64c95be9bd5dcc6be723cd9c9f62fd012ac34ef62401346080d42cc20dbc922d
+1af74bb7aeb27f898039acaf82b1398042fadc4a802a37951753811a90f65cae
+426958828ea232ef2a2be7bf3d47b1a3750df86a8c16619f0948b2f230561a39
+2279b99ce071d6d069c43780c8d9fb6c08daca9ac9de4e0b4b86fe7c9e0f7bc0
+b8e014a38a8979fa931eb48428a5430f74e5acc13789df623039fbce7083651d
+ea74ae13d3858e5490a839e952dcda3c8a5f17f09bec189a21a28898dfa36b6f
+cf132c5c5c71686ed91f42f2e491f10234dcc500b683ff4b8e18abfdb9046575
+165ecc75c8572ea029d6ddf9340f82f082472d9056bd5b2ac26748fe056b037b
+c3161244ac10b0c9a9645a92f60d45ca4733c1a06f5334835bc4d7d67d40b31a
+7e93ea6fa65b272b808a0d0e312f408419886a1609f83f51dabfa88443cc5aed
+02137a280276c738685aedecb764f9d71f10670ffcb1c7ba0cccd6ca9ec31423
+16759a2d9dc7e9c4804a188b685b595b600177df2fa46a6cfaa889a73b8658f4
+8ba7eb2dc11ec23c36f9561fd39f2a3d21de1165e64925f388eb805e31e37c86
+fe507f2d91a149b6927154edbbf887e3a4d63d202faade462f7cb0a145742ae0
+fb22d1e8a0e8e1d86376a0f6e93288acb101bf77d50b6d794aeb71f3bc4e165b
+aba9c3669f24f64bd39e7459dc72e8bc13929aabb049caac347476b53c6a496b
+7e40a625b32d7a44a9bcf9f5923f1a3d6f08fd18d2708a0b5a4de7a398c4dbc7
+47f85fcb507485f77e1fff3ab7c1c28d04bdf0cbdc6718c21a340bd4a742312a
+797e8f804aaafd869437704d4c456de15f84720f662cbfdcdc9007b682e371c6
+6c19dee8dd89426a6ca7f8eeba4814d59c2ae6a9bf6dd6a83ae22a3759e436b5
+698f490e83b5969a88aa83989818029890a686d3b3cc42461822cc35f31ed0cb
+91423642ab405ac279cd2f9267a806d68419914d0118316b17b97c0b7d9f9252
+e7d2bf05f70b1dc1f56bc5804b1cf2a10096ca9705fd0ac9d821b9ad8612c784
+809bc371305c059fff8ad0ea3501e7dddbb33b0f29f94858c9489c5013272cd1
+34eeead548c1e899f925b8b03a081bc0e3b453e9412a4f8e7a46a0eace963e9b
+c861c129f98d2d30cab613f1f40781916f012daa595b150b323e6cb2479fb576
+643bec9a10e2c2842245826a2c1e0fffe7a8ffbc7f1e60ac4b2f1e8761560900
+065a4d4aad4dd20b73ed1dafc0f2e7e26845d9fe057385531dbaa80708913884
+0058f3d5a6829be4f35d468e497923211c805ba64b51bf3828111959f0bba6fb
+45913c849ee9f207c443429261e48abf197b132369805096971ccc147de64cae
+f1cddf95b90d20c65444544775e70f9409fc41ab3cf7b3d1ad0818e7d64d24c5
+eb01596953365b707f95f923a7891c1c7104e299dd308125c5e23d10d6961042
+0943f3cda3fb65fda5ff31a5129874155f1e23ea6271fd4fc087db40de53639e
+c71ada1a156a7619a771ec878fceca7425a9adb85688aff37495528ab05ddc70
+0e5bdad2824549a0536cd76bcf4fc2eca0723ff8f328500729bba945c5df1d80
+05ef6e85c74ab499aca2439a7bd57a9a0a8f55756ac8fdaa30a992994c798727
+348b38c5bd363d70a59022a027cd3d8245bdd8416baf456d4e443fe9ef5c7fcc
+a0b323bf46837d8b89ad6507e6f6bac3061c9d40fe8a45551cbf4a9d865c58f3
+31d34cfae722c42da5a2d6ce259d8e5b65d7fa53e005f2885d0c719cdc032210
+4072c1bcabc478eb373ffba7b179b9cc3075d42e513d45ae30f87309389687a2
+24a2eab6adbfc12dd0f79aa52499086513c995effc7e43b0f6b809cb26e48bbf
+886d7ceaf036e86fbc1869604968a5308c032372cc6033cda851f34c2542a74a
+497a78777beb31d7b57936e9ecbbb5212005c7958a505c68cab42b37dba71aae
+169441bfa4e0eb10caf7e35355631742c2addf91120b18da6ce4c465fde2b8fa
+3d1a7950bfb883c70d5f148ae5efd563e722c66d8111bc2a7c4560e572fdeffc
+efd65a27873f01d737786e523087662c39534f7680905d46f2021809c4b4ee4d
+0ebd3b1ca29ead1a2b0d3261d9fd02fc1f18182bf69955bdd9b3484daff38cff
+3223fcce57b07b1ec42d85b2bbddf92b32e0675e4b46a45d82468f50498bd8ea
+65cf032caa2dc9afef6a3d4e6f9fb9402c3477cc001a8d2b055e3ed192622d51
+daa2c6bd24da77ef99e175819e9b30ae734e1170717d2786c206ae3a3abfc7a2
+2cc58ddcea953a22f039caa5ef22790369a02c1052825d811bb6862cd0ddf520
+301de7c398f180fad6f4dff8c008ab3bb64ee9f259a7fb51056118cca67f02fd
+0eb1e6555906ebb7c59a616e8a092516baf678e1fb450cd5aeb75fe7aeff3d43
+ccf4bf329deef0d7a384dde045c8258c336c94b06f0c7a997cae7f2a34ae197c
+64cc061c36325bc713b5f853b6aa9549e37aa0cb3eae3f5e5f41cefdafa3fd79
+8892a920f42a62be95c092bcc28feb1a65d77043e560e9ce7a7f0dd6146e0123
+fdbca1f700e8d94279b1c404b85a4302d0b81e81168ee2dc6c766979b42dcde9
+6c157dd9fb9d5c5c636cda9bb4a141544531984b4666dcb285c8307d0f900f82
+df8b1ae8102772eeff8d3b582d2d3976657f3e5c9e917f129f6a2179b1fd62f0
+2bfc13ed57720e595477e590335a88554add4f87b38427e3ae5acbce43e214a4
+e09418f95ac9effe1be88b35271a632c2dc28de685603e69f63711052ea8228f
+eb8d3596edd4b8aca09e594a90f02b80e577363785d2e7f7e08a6d30af667532
+0fa794b297d54e75e35a3216f009dfed5b13e128cab8dbe2ce3f4ad8aad6ff13
+58395639fd751814c1f898af58e1a59a0a0bc4763aaa38dbe94598a896f09faa
+3991b92ea2cfd18ab4542b53495fbb98decc4a6ba648615797187e648df5cd7f
+e5dc7520d63b3f850a278885c17e2f6f69d4b874546222ecece21d693ad48755
+f310f7c0ce1a65891aef4975041e21a02a52c3859aa45ca9cde6d6698519523c
+fd0b34cddc0c34932194c6c78b14adcc1512677d9e3390e3abdf982377d48b59
+6406ef122471d917397b7ff151cd6808ac8d0a8fe9784967498e3e2b60cdbe8d
+ca4abf17d48dad790b805c8765cdd593ad6eed2fbc6c9245d65e2d991922005d
+cfec7e4a2e4742ed5ee45cba2692af5371af8ffb886a6d272a83493dbed0ecaa
+49cb2bcc9cb93fcb5c3955544c4f98f9efd547d0d1d5a4bf64f0efd8a0dd6999
+e25e4565da32adfb30ecef85d8fda5c03a2475266c1a9e7eca3e21fa22418fa6
+72b6001be9d60163a2c35efb7b3a41e3e5fe10bbcf6374d6e94c9cda679f5541
+335103f736c05d5ef80136df8059841cbcb08abd4b7a79c21ea881a91bea3b81
+da0307d5c9ae478925a230fb4bb9cf18662749a7b5a7251ee4bdee1bfb227a1e
+c1a95c62f37ac1cb1fd8984a4bd11493504433956dd1ea74ad4ead138aedc7fb
+7a6c43d67822d1fd73e72f2f4edf35af42a1557bfaf9766899267dc434b3736e
+b0c87b6952d4c0aeee9d04b1adf8508ec0887c2a06097a04f2b548c4cb56726f
+c2aca7322af8589ade9c3e69f99e2665da75992cbd57000f9c535545ead9d429
+117768477f596a744eac45b162fff80056746076dcdbd0c0fb47f2578bc3f504
+53441be3f27c23c49a3e7ea1fc2c95b865f8d7f13ef76c54d8b2ebfbf7e0a400
+726e39e75e9b28fdc0ca5159bb664df472f2e4e62e77f93dfadb3515971c8245
+10e741b4b39ea86a1e9ec2cc1688ff07fb80b52df9d6daccc19cb211c07ebaa2
+ef5fbf2339ae2846baa66b50b36db0e64f666a30fd1a39a7285564c09b407189
+9922fe9044810510abd5e4c6d6654139569b4c4ff474b28e715e30cf3d21bdba
+0ec81e8a2c8efa258e7a10d69d3151010e94833520621dcf33934c6d8bb2c4bd
+30400ae427a94bfa30fbe3c38c7e327aba8410bab5ece66711b92324564e175f
+e107d6017545b73d510e03314881a43bf4c41629d75954e35c55315679e05639
+cc7e96baa89e40e82681c093273a068469cf77351372452015b5af80a50c0f5b
+ef73cd493dcf934d7015b795d4eb7a404c2f1d2a80b7bd44596e6ce5f91f7816
+43366ac72048a7a2d09c553576805a489980defb80e96deb159165df64747ba5
+f73530a064aa366b867b5536c2fd4280ae1c79a1346a560670c0e21478adebfc
+818ccbfad58f897ba7aafe1421493ac4a2fe25fb48e2a0b60fab0d6342a3f59f
+f9834eebedeb066b8dcca564f50d7ac8e84b89db171bc4bb7ca2dbbbdf75bfae
+bc492e6208abec45ebad1d2e63d611a54111ad39ddb55a84f610793e2d9a7eac
+eef81704a811eaf123f23ee6229b4789fade53dad9b96991f670629c7e5d2308
+96a28dc20b9095f2cb9d0607b271f24da93ca92cad2ff6c523c3f60940019194
+5f8442952bc71806b67c433ce1f8c0b30c30410539f9726ce3567cbbe27877cb
+2f9f6e672241d246d6a8a53cb14e11aff1f2ae1efbf75ec17e8cbc124195ed6e
+f1b559730c4369197dd219d38e455e9b1423a772f06bce9885ce3e462c2968b6
+86212f47ca29b3b74432dac9b290af00b4df702bd133c0fcbe3b592611d6c5ed
+58b08c241d38aa7643eb6fad2d68ae945491da1d97ed5263a86e03a26cb2d1e2
+4ef8d5303be020f06c6db697fce5e513a05cebb9abb49594eb08d38b768ab1c0
+82891ef99eba13ae0fc1c791ea2c7bb73de4d0cf5c9919eca0de875ec7cde2b3
+618326a8f5bc8940bc3bb581b9aad47db44474e55104f65c088f2a1678d828fb
+38c4747f9b648cdd33be58e8ca29433bde141156d3ba36fe021bc756cc5316ba
+e3b36e44a0fe3d431a5634a581769ab36cbff57f9a1bdf813a0e74dfc72be3bb
+c9dcc06805f8ef1348e069671e12fa7f8f4cebac251ce9d4ace984314ab7e88c
+a246d90dddce5a9b3870400a47de610660d362e55e9d25feeb88a1f4e6c0ba8b
+c25a6896888f9440157578e0ebb976a878f6aac9273eb18546da5612fbaaacd4
+5049aa3a4a4ab857112327a4dfd48bd751a214696c19ce4a9f1f1e4edc1a9e1c
+6eb1229f13a57328adb8c9b848e96f87cdd21406aaf9d72816c76360dfe7b737
+53e343696517f994576127b0f5a92b8458ca7651e74fb38ff0da138958d0d0e9
+be4b429aa8713d69fd730ce95f483ab345eeaeb3d6b45460f9dbfe33530d3fbe
+f96b49e30c071967f35b4671084bb94ba8e0d0c28520ebe345178b1bd3590c32
+efefb1c74625a59a22f23aa45cb9c8524d89aeffa2f4103dc4734a3f6c8ff561
+108b0e21cac81e6339e19e4c62e847b865b4da2109feb932d19571f0c6e068b9
+7c3a4b238e007b2f5c694e6ff8cc603abc7cd7d290d0db3830cf5c0a6eeddb26
+9c11692c0a3508add9688dc623ab8a66caadedb3f536d03dfef725771954aa00
+81ac6e95fa1bea6d3f548c503fa09ea7a3965baf871e94c89e1e2a037dac9a13
+01fa67b1974eac3c703b4eff14cf905721f191ac338c5780f6bf6dfc1f60fd91
+cdccff78242b000271834a3d6e605e00fdf56c8e6eed3821d8256dc85ced93a6
+a4e104cfe3ec7182391c460debf335cd4c7d13f732eb86903cc7b3b7730adc08
+525f7aee35a3944ab205a3d85240f3a4b57ff5fccc388a00b970516f58076d84
+7f52af99a35c54bd8eb57839ec01c00e3118f889bf70b37e2a9bce169fc1767d
+3d26cb0deb6163979ad7dab2c78a5a7dad1cd99dc6dba39c2f175e42d312761b
+dc12968b7814d8a7d0d0af22084c7de317493a9795043cff16f16c2c72bd7787
+f944ae370b14ed667c67a6014ab68efde9bad386f07a0f519beaa45eda2e4cab
+a7804a5a4e6f1e9f4cdecade10cd22f3f5545a5ef55c662e94435ae1cf468f6f
+3df76afd69c07ce93d65e46aff30bfd03e8ee0a34087db0069ecbabf1d8f2201
+5a6978d6e478c2d145e11d634b74f4b93ae06e7a139ec8f726489f58e4bed512
+7202ed2972ab2f44bc241c0676d8330d962b3ca2bda8ea07a394e7f9b20e1090
+ff61034761b2f12df9be4c4284464b04b7f64db785b617deb80cd10cdf62e92f
+83101fbe0c95da88b4a905288689e9c9bbeee1857382c147b0d8ad4e110ce344
+94b5f383275a81a16e788062f7768c02ccfe45751ac446dfea505d04f993136f
+3a2c0625d88fad15f132bd7bd15cad162734ec67cba17189b26d52f40dfdbd42
+6727df631f23a34602613a276b38860ebd9312c884cde95b6dc0aaa89691706a
+e31e97b2927fe537d22104db2de5a4038d35b1a9f08480f51d7dbc951b1215ee
+7bbc7982b2d513346b0d635cee667ca96aedab6722800277fafe424c6b1917d1
+96aa7639c5e32662ca12cf0d58ef83a7889fc82576d7e82d28238331f9f10fb4
+7c2e58f3a9ea7b669ecef444da7cb73964976ea053d8c08c5a6a512202ffcf77
+b702df2eda3bcb9bd68eb8c272ebd69a95c928b9015381745d62ba56a420aeef
+002f69e99723f862ab46452fd830c8028efb507801dfddf830f6737355220181
+06eaf55dde7ccfe79d347e7e662e15f4731290955bf52bc8ca4e52876c4a5b68
+a636e1d48d8bf9743a5fad7919a1f5c4d0af06d514e93bd0d6472b71422833a8
+4054921670ee6b4301b67151e9a847e2cdb4d9021b0e492f4a60487972568bf6
+c8f091b2afe0e956bd211b93688519b2785fa6bac1a27b1b6c7de255bcaa7f0a
+a6a1f967471fc2316176091014a8a03e786fa6d2af819e6656ecb2d83ba50220
+ad3a2e93f1216e290334fd0640d3f5682cfeb6e20776a13ea73024cacb2b6bce
+ba4b6e46bdead10d7682186c9dee7a16a2514d62c6507a2a085b27927cff415c
+fa15c0ef769cbbedc669d2ef9cc6d014ec37369f9741cfb10eb7fdecb1be7b3a
+73f71dbc120680c95b02c249544c1eab88915ad65d8402ecd266ef460b9aff44
+b194fd42e3964173c90a3c13da4cd36f86a0ba072e1ced3b7349875218cb6081
+b47bb009e2a289e5811827e6546727cac11937f6f54c75f4678df5ccd9655c75
+c87fd36490632920cd95c173510c6c82a5ec7c30cc5b02a0862c747bc0e8cd2b
+400fbda35914f9fff96a18bb0959bc2acc89d4c1ae57faa00f11d5d55b22fc86
+e28b0ae9ee4538825b9a46e1dcb0d19d38c4375ffcda4695364f85bb8bad7c3a
+511ea4821f9abe95b1dd60fc03ec7d38e06c0130dd9d10efecd55e926e1ef1e3
+0b9bc9a15f5445244580502aa18278cf7a5d63a3e56ff395a2b30c5f945e9138
+7fbdcdd6230ad899b616468f56c77bffa39178cebca202e243c92ca619e4ac93
+fac82d24af78a399797ca45cd891512549a48bb9d7d1eb857080ac1581a42c4d
+6247b438315729fa8ef283ecee19f7eb8a3f67a9130587278cd29589d8e68c4a
+203ff19d97cb6a0beb4497d0ade1d8b872089289c032dde8ecb084372b0de197
+1a0026ab1de7e74e848c913ab5f132c55266978694963d426538ecd95c77aa4b
+2f9d8f144d0be7e46f6b537ad3b4592217b45590dba51a3b7fd7f6a97d87c3a4
+c4aa606a36cb9ac5143e085a0503813bc94bae28159c134be1b2818626ae98af
+29e37d24409b253dccafe7559ec2091c6c360bfc9821e45a0c116ef2811dc3f8
+1d593d8e0ffbd73f764b22cfe782706b97d51b6d0d0da575a43ba76d96757d23
+c801b5534c5d40b00c2a1f1d7af14fa52ebc3901e60307e488408da7cdebb7c1
+38635baafae7eea5413c5eb32cd8585a1d3076f05f1d899febe1da6b1c98a587
+9031b2422093ad9edf2ad76c14beb1360f7255cee603582b3bbea37bf0ca767d
+b14b44f8cf1d5be9d80de98cd8b9df855043dadc840a1c12b7ab203b94fc9b4f
+a6c5d32d31ce0145c4e9afb3756b0b4f4f3cc470be518ff27d7f026b0627e6a1
+fb2962fa10bcf61c95176368459ad2b6c56e4d38b0b3a56d1f438bfc0bcdf4dc
+f3fe85c1f0dda1a4b685ef4b6f63ea8200f4b31e66b264ba35b75a03feb0353b
+0fefc0e146e07967c4c8299479769556b3fc43163d50b587b7abf825c8a023d8
+8cd3e6ad1c0e3ef9013e462e658dbd605e143fb1be2bb9c9a087af97c8d1afec
+398683ecab78b4b2adeec8774da6369e19fd0595703c022976ad254386fb2514
+08b9e683e4899c1d9caa2c78e45a563d66a4e755b8d5f99fe7058373707bda3e
+dc9698c64c5e693f4edd7a35bea32de0325dcef8920a3ad8874582e5bd880e9a
+9133790d58c67337f9c42c70ef33fab9e3a93e23e09d362fe6c34efe1db411d8
+89ef1762b2f5c308da4624ce54282bf96977e032891533b0d62ba7324b975cc5
+fdda5a0cf57ff9a4de9393cac555be6d14439f3bbcd032b6f0bcfeeb23c36a1c
+01e17a4e6f1e4fd7e869f473dd7f93e9b115cf37b12b8ba1194b7e67a2082850
+cf6b196d9a502c30c45cc7072b9d95a7208ab835e78ace920bf0933a70bb1f1c
+0df34acc2319b665edd7429db0ae0ce1b5ee3835d8c6c6f90203840f037b28cf
+c09bacca2bff9af63b2b97998f4881346aa48943e39102b4a8d7d20f4fd21d09
+fa477e5c2a2150a9e64b3a15f2d16cdb4f7a3cf0b127124335aaaf357e10c6cb
+1d80ed3d3fff247d0b4c814bc86b288de106582eb1e567d940d2d96a196929a6
+37dd5e5d6313b3e57d46024085038b40306ac51c30ffb94aa62da594d7853946
+1d382a6529f40d166e333ad587a98b5a660fc8d5301dbd32d07b83d531cc45fb
+047b884f2bb5a5a058e283fa2bba31be57672023522f14a7d4717fb21398e185
+0646404205b8fc0d19390fd2ba8eafd032189b5841824c9c1165f9a3656bd123
+8df30dd3663a6749a497bd3efa3178da7d32d90ee46f0853f1b7fe2b693393b7
+d28795f3881938800d55c5f6edef570ad9df677170cec87ee7017c72e6a01452
+d92dab22dee4c6d65de310970c928a966abaa6c243eb36313474f0b36dfc3b7a
+ca97300e5f29e9ae94a998532ac022a3f0a90cc8c8bc85513e56261f817d03aa
+46f1989a46e197d271d5c284bbd6109ca6ae54487cab6378657e358b9c04f804
+15a6f6739e4f1c98d80f01f855e89ab246f66e964ad05230debd86c01e9ed93e
+f5994de704e441efdf4ab8b977ec6484d729d8fa1616d0a43ad171f19d59d1f4
+6152e3266b5dadd786c92775dadfdbe33b1deeb900dc9c74499d8ece6060be12
+34fdd2af79f7ff015d2651c7e9d7370ea5bf966a923602784efb2352b51bf7d2
+9ff224a87a6c07c6f46f45169b6fa9ab4aa38aafe34c4a73b4108fb9326e9ba7
+5afb5cc446c0e074229775973d254905ef1f38dc4071bcc09fbf2feeb0967461
+b2f48802c2ced343fade8ea56cd98e33f586c4713bee59589bbae8ef12d29c05
+81faaf0ad7c5bbde8aa797d622f3a8be2a29ad5b82baa8b6d240ff0af2910b7d
+970f28a71eaa15a5dc4a24090631d7c8c0a5f9481397494409b9190ee64f88c5
+96d802e24ab3eadcbd3fc57f3a3a2568ec931f15598c5137f68873b7d0c56dae
+4f3365734058ce2ab316997b5f12796916f7769ce320e7aede621f1df5c8b67b
+e8ac8333b7062ed90fb4ea7b543932e5a9fad898dfb1a329ee8ec34ed5b91387
+0d4bfa4bd13c3b295a31f664afbdc4fccb86e691b345019d809bda9543c98bd8
+6d0a49106f6204abe5ada9c9585c52946c1b8f3d3c4731172d297f78bba16a69
+3ea7b0bc6b433a2806d0ba3d3c5cc97e889f5b8c13d8db759f89249a7da8a1cf
+9e1f77ad3e692705e9fc30753edc05b550c2e4aa3218c8ddfa426927c3c95d5f
+04869762e977f393dc49ae02029ca90562984926380a6e1ead1d989ff95778b5
+9e730293767ab24d9912eb016936d0012dad7b7845056dd4ab0dae587abb8bb1
+26abd32a6e9b821e6f7161aada4a761ec7d9ee6db62561c2ccb46487f8bec94c
+733af88db1e0792d7ec80cacf5e845678242e335f1f565bf3dd77c14922975f0
+23c6d5df7423bd8d22cb1cafb0f9554c975cc671c57ee6df00b0d23c8b8f1fe4
+d8856fd9a8fff97df39de0d43e9591d790ff0c2ee8e10f1a00e1bcddd2ab1d72
+6470d61fa865d9ea140b3cf35f42c3d04c3b688d3d31180e73853f8972b8e17c
+6eb41ff544ffc02858baa45b885fbd678adc70b843a6be5678e64558633e8206
+a60f0bfc95c0307fe0747b865e234857335b043efe0ae89f558fafe5390080ea
+f0e249c69dc439f94c1573b80d9ca444ff56cad65e3a73d99149b76300e7b305
+f81bd37f424e2b21d144fd7c075f0c91a754dc426437fe8601e2042e24e6920f
+967536d1159e21e5837ceb9494f12f40244c90f4f82e930becfd22560f3fa042
+cb1fafc18e3ea329fe19208ebddf19a0312a5d21d878747e3ecce9dcae53fdf1
+46cddf2ff5ed748587d61650fb3fce42553ce6cd0f6de24b0af91c408bd77478
+d7f36f0ab70442b86e3039b3afbfb5beaf0ce7931ffea927416612e26953b8bb
+b76702e9ba75aab479473690635c60084ddab44af2fbe90d0f46aaeb0c5157d0
+db920c7f94759a6070927a2f20bfa5c876f13af5eabd59376d767a61cd320491
+42c54cea6bfe8878eb6554bacc9a462f2d79d93ddbe214e07362ac0aea4f3ee3
+a15b7d91a34c5516fbda1b0fea95926d537c2cca778e16aead19f34038678335
+6630b8824c48ef767455d23633b1292b74626feeec43522b6dd999326259fbec
+676d298971d8d56fdaeff8f484602654ec58d090dd596a16714f066bc0d05f6c
+228bb8b886320a23bee7e95b5552254a91b1589a75c206ea56411d71ab5e17e1
+4bb66b16ed32022db08841dc84c715cd02dfd2939b9fa7b72000aa7913da9869
+f3c5292a48a4dcabb30e212f79194defdad68f61724da4dedb0f2c174ef22335
+1d8abc00781f9017069fbf9df556b2eb157e0ff861d3e23aa06d50f1ba9a4cca
+30676ae01db0117e373918ee2f109b9141ad8f82bd86071c85b9709d36475dba
+5a21cd76da1cd37adbf2a741cec620af2997e5ea1042a06db29c07c2b49b2cc2
+151bb37a0fcf86c802691cf7fe017f1619e0c58b643c2194765ccde9c02fb053
+82c62f840131dbd0e23bea7bc2615261eebef347155836484074f760b9cd866c
+a1cd936c96258e0b7ca2a4d2da11968ea147f3bb455c3e353904cf18f40bba94
+b53a455de2c58d16922a8f4c765ba11c130f030bf3dcfefd3bf92eb5501603b3
+8e1f22b89d8d2e436de8f5878b1b65d351ce9d403de67d061fcafd8387b1b4fc
+5ac5a8fd4ff7c1d3dd974b9573637c7fb6bccd067a80127fa72564ae3af2b1b2
+f290f895b6ea8674cc04a2a0a5d37fdef9c8f3f7a94ed1545bd50416528af14b
+2eec1ddcb11062c863ffc8da6896c33aa429f6dcf2789b2b6761b659e812536c
+800c2afe45befa311903000a1f87655717382a0c24a191bf801029119101f702
+bb6bdc22669a9e0cec73d2fb08be89f1b65eb1c70d71f6abbc6bcb9d46f9bc73
+7f150561f5f805376e04c269c52693424243c8f3d6190b4b61d129bc19b5d7d8
+a87f6843e4ec14757818adf9425172e0f981ed2fa4b0cd7ab61556ab98a5ecb5
+dafaf8c93b5771f5991b65d5f3ac82511c458ffe09410ba3b65c5f89b4ae2e85
+e84fb7a3c3d9446325add1fe2b8f01f0e031a83c97fcc0ee353a33aac51920e0
+a1476f10a03b91ec4e050b0c1bda0d9f42e13865c35055f841ab0f2df1c447f3
+29c060db05b975102ef77de6d33addad17da75fec239d3af61a692d793eefd40
+179c08ae353d69206f3627e26b73d935dbb95dd754534c8bec7671f87d3cae09
+e7e9238fd5763c53d36746ad97043086b941bd410283577537181ceb6a69619c
+d28588fc7efb1e760d04ad644a630b6f118cdeb9bbfc815a065ddfe73997abb0
+f9efe071a5eb154fa7c9e5832e06151816c83ca22033db627ca9fad5e50e6ecc
+2c62588d51653458992acf5fe2d9bff48f67afca1e6955407973f76e2f42bb96
+b46b1010e233d41886cf65a4992a1bf70d65ce1191e5d90b286512a143c1e5e8
+e48cf9fdc07bc53ef76b92f6fb16e4f51c6069f76b42c82f054979aaad374098
+bd93e44f119c6c90b0d08a99fb538c272f1ec8a0d595a1c25fd019386cceec6a
+5f9d18df3d018503b66050166206757a3d52192e3c9164d554988d467434f713
+8168e1423cc02cf086e806bc447fe1ba8aba44e8dfae319af905b6d7f83b640e
+d4018f2273c6eb01f1b62b318b4dd31bf1863b4641976b48b1447a3753b3abc0
+5b660f87afa78065a453bd07d82ca13141fc7742b52be00f2116279432b908fa
+398a5edc0ae4da02b4a532c8940089fc23019460bfbcda5ef1a3de7eda5db710
+4fe0e4ef1c04c7671eae5fd7114e6f8ca95412366c1c34b53f23c61d88e7fbc5
+46f9dc34356da37faf0daeea7022b807d4f3693d4a21a4efe054216fb551dd1a
+c1c1114516c775109456c0e7b46267798adae010fb1aa5c565ab1f2c8347c383
+1b8e1a779de0cc96cc897e5ba4f97411b8a539394b6dc7b7c7a18772742c7c1e
+655d8c8f0574f402a0cfa3df8746cb21512a5c198035230114a2b508fd7b078d
+3735485b87a267d72827ad71dd939e28c2b6935ef29100e4e276d294a878ed3f
+03df73dc53408a42c13ef3deb95179e130239fe2373130bceed011677843a5d9
+1520edc891ad5d7dd569259c441e91fa0b59c399953013747ebcffd4f85d37e0
+07eee45f392ea29a38cdc9cc661862ff438fed717a5725a5e0427328382c46d2
+93a0c2968911433f5d71a399610fa9423abf003de80e487b77fdbd3b25b82da3
+cd05d42f4ddf6d7186664a0424bc086bde6133350804c64680befcaf486e8678
+0faa3a30dcf5afc9f998e97e62ab2284ca640aed43d26074a575cd57c933c4a3
+484cc6c221c0e1a9f9564e2fc8098698399062bb9e327b8f7b8b2baad5f6140f
+04e5ba68d297ec09a56be19ee74ba3d4b9ea2a0a87289563125b375246822e34
+b84b04537c6e9f3535acb842b28adfb0449d2fdbbd57cccfb43047cf8a1a8b2b
+28f22aa2684e935ad90b8ad1f585c520f56b8943aa0425d6f1ed74be93090d4c
+c16a8cdb0aa2d5dc0295d445460fe136469326a4c824c7b8852f81a1fafb723a
+3955f917fbdf8b6cece72d79c1e32ccc3e16ef6dcfd54ddd558083d967f43baf
+941586e2b45523e901e8d8ac31016df1666f35a8adcc8c4fde6cd1dc573acc56
+ae6614f4e6eff9359e6735ced3f50808c616cdda1f9640b7870ef3802876faef
+06ec6dc27d5e20318818bb0ad4c3c452127b29fcf3865bf315dffe5b7aeff0ec
+2b75356e6eedee8783e6ac897619bd533da9194ac3b457736c54548dcaf01395
+c7af3829420821571118cb862019e1da490e97d3efa1d50826cd7033cd61e1bb
+5b91d0ef371564abbe5f819691dda00b2f3dbcd718242652220d3e5e9144f3ab
+d5bcf836c098af3a3b3682c450651dc0763d4be1b48f74dd651a006447070602
+8944b407d1bad21de87086895c8936afcd63c87644bfc44207ffdecd15ce0f34
+318f6ac29981414be4a224704f1d231999c476dc8ed3ad3a2d89e766ebbf4766
+5a94c3f0eea1f6b530020dfc0c913cf34f76fb367bc20a2a0addc38f3fe24588
+cd4ce6708185a1e76dbe2f3b35cc6e3af90bba7ac7b0468787e28679789ae4dc
+30f571977b7bd59c936672066c60f83d76e6eb672eb52d21a696c2378d5954f7
+48b488ea6ebbce05178a88a896c67fc1b23bb26a05912de97126191ce60a86b1
+bc68f701c007db9e07b2a2175b85db4b8ec4904d58a5997d1f478233585910ce
+cb8b5086eb7696d5d02e8c1f555867fa3fdd9b78bec1f79c4e95b23a089264c5
+1cf43f36f44daa588c026bfaddc5e0494717f01e570157176d071a2d8272247c
+7eb0ab3ae07b846c9b87ccd10412308f8315e12cdfb713a9a6dab5e95dc8474b
+056fa5c68014c61201c8d1a06182ebf93c209377f14c1705b5040c6b1b1d3dca
+557c76969bdc692a47f29ec4b3ae28a59804c826fd0f97eb9fb9ebf63e88b76b
+5a5c0d3dd0b29806095399e658308e111b03f268600c06a33cb194d81ab16f07
+153d45262f22f3ebac52c3afe329758bf4ce3d5a4468b32d11367d48f3f55934
+73dea9a4b3f605466ecfd0f6b45ba93383a85cec30b4c8d81ba24a347523016a
+c94a9df98d2ec76ef9eedc416b82e283be1db366a9e4febb814d0f742b0b6e88
+0aa642be0b8d3577f8dd93ca3c75a102e7c15a29cbb28383195a5174a900d70a
+6048e3824220d42024f5e47d1df4de7025d8104e91e15e2b06cd5c644d725b73
+290733ee8c0bb4e1c5b190c2a4261a4ca03c5a370752aee112334a1296042f25
+07e86534731614bad730e8e869f7e173f1301c39095bdb327e55d4af50bb8853
+e8ae2656d663eaa91a101d439033720b7931ebf88f2b2e09949b89d5e28d0ee9
+91b55ec62ca1f976bc241a5c792239cf2cc750c54f9c6ecefcf4136c5b873325
+d901310ac99cb26c3f5d6e1ff43018b083d7a81f3c9095d37e21a82fea41f3e4
+01f93323ea810acbe0b300ea145a31f708f439ecf5278df63025595e5308ab73
+445f13a7021f328930ed19ab75d7faa2efce32cfbfb60b3e5dd90356fa3d2182
+105b2392600f1526c267702cf0821a5a3f5d1dfdbb7bef204eafb09736616c29
+1c4b017c730a82dd45dcd16ec090949d872e20120e6a0d49873f509afe7e8c7a
+e34503c986e9ad9ae097fcb4b8a9e96be298aee277ff0d9727d04101ac64a9e4
+f04be4b28cdb79d80389dbd94c02971b82a61993ca0f3ac425ee57fac919c2f8
+cf022bec518e4ba90aca4d68315700c4bc374c3120f7c90f8565a408762c5451
+547307440be33b840415564219acd1f3e4d73d92650388a76ed0995103ec500a
+d682419f0fadbd26cddea5d0fd13bb1d25fbe041be4f9dff2082f4b7f705d181
+a3d7512a617ff8734658502335d6d5ed5d05114cb8d2d90187bf725dbcc52bb6
+a1d6a070d2a3f25265245816579862d6f0f9f073aa0b1af0a1758073be7487e8
+9a68f7c67884026dfc064b31f296bdcf64261a0a4768fe7cc956e792b00c653e
+aa7db981f818848fabaa6e5e2ec8739af3ff1b82ee11a5f6c0cf28d8a148f98d
+274a1b237edb4e674c4fb635d796f54659974efbd83be80145a503ab0bd84241
+75547d3a427feacddd13dd69cd16d15dcb5a0bcb12e22b9f535db92529144dd2
+07acc6e3bd3596323d7ecea9185fbf36fd351bd3d30116e6a1b04c90554e5d23
+23229c0627f63049c12f87a2a34d38a7c30bc40d407849738450c989e9073087
+d5bd362e2d2045854e4cc576a4f6e9dd38556b93d0ee9a4e5ef8d5674bc15554
+cdbdc0dfd5d141faed667fd1b3a7da59eceb9bb4073349caf4e6ddbe25c87f09
+95f6ef89061028fa1476c6f9a7e68bff537d5f5be1fdcda4c2fd2c383ad65aa9
+9e88eac8ebbd12fb35b236b19c41ac2560b5640fdffa9409c576c2b291716496
+0a953777337ad73fff94a4d12f01fc5fa25b4c9233b4912701bbdfb07321c712
+4658daf36bf0261281964df9bc5481d4cba6c1db475f252c1ff3ee316d2a1f81
+4bff86fad7c28357a189e03c4500c32aff378bd7239a22a1863e58f802c72d40
+de3aa3ce8a944ed623bcd7a96cb6a3ddfbe9231161ddd301b8ef04416ff8bfa2
+2e9bb53c601c1d842dab291ef6ade1e4921d58a703d206b24797f331183521a7
+f4481e57b1b6b3085dba612ff03f5935671d09a3fc50d7ba99be4678d902220b
+185308678cea0c12be3a1118d85d78cbcd6a3d235a0c902f59c7d823d33596cd
+d1db5e9d7242d2f11d55689189f6760cb2b3341a942e671edd95b0391c82f2bf
+82f14cc6452a00ec3eeed97dd6e50ae2b6b0e798ff46981dbd264b9ef6680184
+baddfb8155c6906b56f628d24a3a93b95a5a9eb96b32a215b07ca520497b5898
+40d30cf5a1e7adde1b765268ce8c5b42022922cb844d719efbd88e78a6457e6a
+d870915a4c627b09a7174ae6d11e8110d9fc82ce7ac389211d23557596328714
+316339d37fc0d98309b1930592ecfcdf51c2b9a71c2bfb1b98c646d72aff004d
+86343708fc15c9b91c0e7aa71e8be5cc84b39149a6e7f0ef3db12ad26351c0fa
+8b10ae17701762197a35d4db0276bcde7a440abff0700b2173c44e475857f319
+6ef660eb1e2b295f653e3acf177b99963c9aeac8bab296cab236f0e9b999e478
+1058b47def6f0e9e76d2619fa2998a087a4b36179858e178e738501861f04adb
+195f3cb0abc0cce72d42fa37c619d2be946a447a8f7255c44e054044ac6dda07
+782922cf508d3f8057ac27ce6ef1bc717744d8a230fcf02fd7f3deccde8ae78c
+60dfa3d819e6085e66ad0d571381e58e8cc552013760db4c147a33aa5521e937
+c66ff1bc7c5638df58a7ee9ad4be9c241496f448267b887aea7170ed97ae83a0
+5809096d23b671cee4bfb8ebaaf083b91150a53555943d74fc64d4fab06ed306
+003d83718368274ec964291e1a23da11e37a2663a5147182f0e9a5157ac9274f
+d4ff339b6db6e493b3e5f55ed9c5f9ea132d3db368e08bd253124311e32fae1d
+fab21de0be52d98a65c712f84b99c54c629ada933ab5b925d38f73093f166db7
+0fa53f9d38856c2bf60fa6cf0926a3bc47cdac9d1cdc3f11043c8d23856b2f98
+86fbeb5ca44c188219b8b0c4aa3e313ecd35b2ce446742f53841bd5b16e30f49
+3ae8cdd11ec8c7a8353b332a8004e8f2a43560797f141f38eda4ace554d156d0
+f6bc39ac2cd18ba6bf5cac06a4023cc7e85bb516de340577f5b062d128c3b061
+0d2b1b5cc75e50992c20b770604fef2ba623e28a4588f480020da4a4600f3b7f
+e96ab422f1c062e6d5914a8f5f6b6a5c9c2cddb50e6138211901732d3fea39f5
+d00004f075fedceb6528da3374e29515fba0e2bd60973d047bd9a6a74368476e
+2df28706e9739e1f77f2c343d3aa76fe1a7c7c47311b4127eca3e3e44d9e7fdd
+25b49643c9d9e6dbceb025ad866e9935969b16a66a28b9de17c89d1a3010b9cb
+6d34b7517e42bd8fddc80ce39af4448cf1faa2b7b6dc2964a6ee9c481fc18e41
+c890384b5ba2e98fb868eec68dd6a1891ead764f5f0845fcb72f34a3e8b9b56e
+b24d37329d70b8b27e55f56e60577821fcacae0ad81bd20e5a0f63ea3500f5fe
+dbba60c3662155801dd295cbd2daf7b8cfe3e6cbd9695842ff7e21ea63b2fac2
+cc8fa4ad6da83a845546514a670670fddbaaf61ebca3e3f1fc3dde91739f42c7
+406fa17662b2c80138265f78be0f402c7351abaef4a00e08f324482db2c2068b
+dcc45c123e987c5b55cd26e27b115c0bf1eb6d02594ac5eb90a099115a2975b2
+28878dedfbd6a388d39153e736204ecc2dc62724262818854c283970b29d3682
+23116e54a76b2af131106b70bc56c0ab74436bd426949801b5c9e766c7f66658
+baaaeebc
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMBX10
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 173 /Omega put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 106 /j put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+/UniqueXX 5000768 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306462c563d51ece66fcc9c831843ecae
+1fefc1a232e2724f7baee428ae03aadb95c3035345c15e9922fe49e1f2cfc980
+237316572dbc57064edac9b0db8913a5e2d45e97e19a91435ccf8adfc835b585
+48e74b291446d689c7f2f8c4325e8356e974ae30c3e2977477baeaa33d141fb7
+80f59351e84bfc88c87b3a4a1d25e168b9d134554f6a581378c7d2d6eca8ac09
+045cc3a5e0ed86f147133f094029e3483bebc81cfde69942cf645ea20d0a2b64
+5140ccc2f9cb4a3d969f4b0a79cd3329b440dfcff5285494406f3dd08d804c86
+df191e57232f6f1f83df6430f214e03fa5412b1e13d83c60c52a698bc9a38159
+19a64162af7b83a9468fae9507c6cb55ea80df8c696dfbc3296c663902d77e89
+a181502627281181ac8624f65be9de5fb32f056cc7dd7cbc7366a91717b5892a
+34ef6b441871c6993da3a81afc9bf70ff3842a21a29c0e49da1ccba37dd6b920
+2702db510b8b1109acf4c27ee8d676bdbd16abe189f34a9b61532eb777457698
+cee0561838eaab2d3939c5093afbb215bac433d1918c739b62566906bb2187f3
+378521fb52e70c18886e1aa15f53a1f8a169528cf2ddd54c203613ff88e619f2
+6c9c50c2c3b8b8c868a88afab1dc8472e7b6f3f992a161723a3c0904865a7c42
+3281601eee91f35222c4a71f343739f102eb43145a47e4fac3bd666e4c114a90
+5950618ecb1bdc29f90f6ebed1d8325fe6b52e14a8870e9b4bb088e585c71b91
+493c12845a101937e3473ac5e9ae24f7c358f06d590d7618e1a1d5834d87621f
+e3f5432b655eebd4ca61a7b00dde0aa740796ce88a43d1c6952f8d2ca63d30b6
+dcbadbb0dadf13150a442714675dbe51ff838f2e47ebe8cd44f1eac6ae5b6ceb
+0b07af03f5d3896ff935a198aa635e337e367e1e128d15e31afe3ffca8245e41
+a3e17011340e49d52fa1e322b435b4f7f2f49ae01f6a319f68d3d786c24be810
+1e1c975a8feb5dd7e4922e00e3a08cacae5a945e1e8f8a20f1fe9534153307aa
+5ac7424759743e08af90b9bcca7447375222a66e2edd1bfd423b1bc50ba0e544
+68ef45c89036a20c01e4a5f27f9fe3e02cab3033c6d87574bab265c69d05af1d
+48b6ada1cd04622b62b82d646cfeeea510fffe46b3992356b9a78216dceda375
+1e3f6670d9ae871731741105c99a03b430ef00e0ba2687c8c18b520ad8466ef2
+e5d4c5d11165e1582855bb54fa9fec61cb41dd05a5e4e26e4dabc7ecc147b933
+2811e4cd7fe4f2f9281a740c606140afb28a9748965eac6028273fcdbaf40635
+732a68509e0da5b482ea3df988e4df9874ad69ac20bcad8782a215484e6e98e5
+fb69df4d50fbc249bb3a785a9b851a861ee3a660279594b07c85fb16fbede6ef
+a58ccfa7988f74c15a0ff2df7b21c73a29a1d650a588129826843432db2a459f
+d27b1aca6de903be72229b9acf4c51dd5e6e8992c9834a8df850c0fb6dc58261
+beff16da6f2b7eaa38ceb4db83b6f2c8294e84bb9cecc8f47839fd66362f605a
+d4f388d99347bf6c5febf6250c0cfac73ca22beedb843b9e70a1574e032f41b5
+ba06e192a9e3d3d34ccc4b266dd865336745295d76b1d846182adbadcea9ac64
+2d66bf439bf259720d801d2f853285e4c8f1583d0cc49be3d6ad119a4a198201
+e2be54de9b8094943782ad47d0766048454c55d0a6006daba9931aaed6763afd
+cf97e0e18b2a750798ae2034c52b08846d33694835326291105e3a09cad02935
+607203871f796472a47bdb552935bf2fa196f808740ba904ad354f334f01c9b9
+2d939ada9b9b9b7ba4d044cc471b55fd83acd92646b177bffbb8e8d80769f2a8
+a82680b0968aac4af9389b3bae24beaa5ce48832f640cb5104577f64cadf4a77
+efacbdd13a430e0ced33c783632a86ba67b3e889f4395f301f8057268a489af9
+18a54b519859acaa2211aaf94d5fa6e74105fbed41df424abf821b159ac75d22
+836d40979fb39f494d7fdfe4d72b0cd6a17786fbcc104e113ac2789dae2d4665
+a13967bfab3cad6ab37da7013d05b2201c252729aecb31d8a0e1db0ee845a6e6
+4b8f5e92b7d5cfe1f293f79ca85a51323756a1e1add32990d82d37a5b6143712
+8eae370ffdd063b1877ddc732ecd5a3a048a4849b1e79a2a502fe1afe24b3ade
+31f8910d78497ad7954e2edfa3e829b0571f78d450098c5b138bd3901d4eb1d9
+e58aa3be8a20d6556b276eba8bb4e93bbd07a312ee07b75d7e820d14b94707bc
+8d7172f3e41219d3403e8970fce0c4b002e87cada370629730f6563b236f4efb
+366b07ef9d22ebad07e4b9c771dcac3b8fe8dadb1b06522e5f418a7fe09ab532
+5f71eda1bcd48c104d40df4e03cf6172b6db7c2ba0c7bc357b15b333e680bd9a
+2e6c17e1ffa7d4a85c59e8d20610bf88107d818708b0e14187322b5bd65d27b9
+001e18e8f3c1258ec565dcd2829ea21a10f11e6f476b8b9b5af746a559fbabe7
+5b07a2d676723e9192294ea4de1f9c9dabe7bca0b6ea28dd9fe686da46b5678b
+d317d469f441ba8d8935e9033e64680d2924a1dad6eea42b8864d2ad3c7da93f
+bccd7b4c2fdb8022b853fe4ddba1d9563779a172de0cedfb09be178320e44c78
+241f31890498dfc1b8b3b59dcbd89df4d79fad25286c80196d3c1f59e905a43b
+01159335c518fa3f766f5e0d388f5137aee89e99162f173c738fc67c8fc33acb
+d774218b8082efb3a002676076d39f683f71acf4a48b5a01cea89013e0e56d22
+06d480c0a471453cd324a12cad3ccacd44ff141bc299d6105128cc012a7d2fb5
+215e490adebbef41289f545814bc0b023da7f2de93f54d78e4f49c8d9663692d
+e58d61e770d9a3abbfdc8cea1f704364200b81b38b2f7d12195389a52904c4c7
+b5633ef825be683d2396d6e2b670cc832b31ba0b457e0bb902a1d860fbb53bb1
+f1335cc0b7cff7199a503b1f18f731f4a71c5b0b92b5b62e86fdfb5b7b75799c
+76e294b2979ee5d11797346b7c8627cb41b5206a846ece86e6d1e6019f0f3cf6
+4e2f6321ecc1db404447800e3ba32f42435a76eec58ebbbc1e0e8cc6bc65ec77
+0238a5fa3086bbf28026a7a992f0668b5250444e4d625f1cb3d54008330f7855
+187bd7c3fe661d8b11f14d8fe442eea4dc8ae7f8a5ffed067529032301fc145e
+64e35ce9f0bebec4792751888a8ada03c2c569413e120188dbeb37b656038cbc
+646d657f1e3c5f4246019f465396ccac88edb2733eb84107452f998b65acb33d
+8110de7110d0e8fffeec7c9d728ac66f168d36746aa3486769678771409d9aed
+0376e782c2d534059648b980d7ffd2ee56883ac13c183485c90f7f48af9f1950
+6d1ddb2c257041eb3a273156348d3193f18b448082f09fc8a7ad6cc4c8d0ce19
+cdfb9995e0b2feac1e55c57acf97b0bf51ce80a7cc94291a3fc3069e52dfe6bb
+206cec1860b9cd866ca1e31cc82693e8ea3d7312c5b22d539300243f03d4cf74
+1775fc04a31bccf1b6d6dd864dfc28fbfb88ccf25abd87776fd8b414936f327b
+1c02b76d21dc76834513d47484bf9965883e46bd9871a33d0539dcf76ab7c648
+f65da4634706d06032fe29bb0e45b2b8a87d3e6a25570e8e643b17689d6d2657
+da564f7c8dd9f6791d081dee8d20742dea9f4e9e3340ef39eedad95a07b83535
+222113819996dbd3f6d0988f71fb666f0509c68218de9ccda684ef01728a2190
+a21c1edc2a3bc2a405bb3ec0117b2fb49dc26a4eed74adb3878761475224cf22
+1d6cf32e58c31cbbb94a485d24ffdea7e9b4271b638c63a8b7b6dc67068a8baa
+1de33744f9704b462958201a43d89abdf38a41698dc9e75309ddff1648af3f9e
+c89dea261a67c0cc20a632f49fffa13193f3f0e691e46d90f55d334406d30fb7
+ceef8b0352ab7bc4f6cdc1e2b1dbb6fd2908abb334d56673b5d4a312def9815c
+e0bc02cfd8bbd445588f2c214ad70e371fae4f0c79b837a249e690ec20f4ff0c
+f4e5f0cfd73d8d9da86604852826f2c51a366fabe7eea3893f2d5040af0a262a
+0b3efd06440dc245c22c6d8ea1f21147c7e1816aa8f0102e6767b987ba3d0c50
+6651f5af40c337865ae1a7b2111dcbcb2b63adc12e21984c3466769cd52387e0
+2066bd52d5082639ace319799e2b4454d951ffd53c898b9aed418605a206cf00
+02e123bae648a35f2507f6cfe88f6b16f7e53d843e2c5bbd8f1f9bcbd5f25e07
+1af4973e4da60e606180dde276f172a5cf3bc601989c67a097afe667d1535873
+50aff1f8820964efc5369b01c3c864c63e096aa1ce6b06100aa89097965b8313
+994122abae69a4982e735ce35dd559d0b275bc9e5db09d99871cb0e372775ce0
+a64b687d51bbf566a0312c0ae72c642759e5c213c216fe09b9a6e3497fe29943
+00ffb3a50f6c931a3020ebb25f54cfd86ea5005df6578913118a4b90da3c45dd
+e6993e7bbd107cd2aa68315d5293fdf2ece02f8135a0f882e51181d6aa8aa75e
+fcc76fc0b0b38302a243c9581cbeea2e42d46ac9182ae2592624a547529d26c2
+09f206c2040a902ca11b56f68e1d459d6195041e3865441494bcdc7847d3cbd5
+8687949160fa33dc4d22fcf1615c981e345bdff29449bc35cf121804d8b997e4
+5b67b852c7f2aba17a03a3bba5ce0a7ad9b00b46ecef48a9f23fdc36278f0a2d
+3dff2209288235bf49322b10fb233384e34847e1e74676e70c7ea1b9004d11f2
+6ec40fe5622f7704f4606ac7814f7d4dbaa61cee034f6d6240253f680f41eb9e
+7370f03212c3c2282ce3fc30648c2b67e148f0501d1e9eaac28fe9c0da1b3a52
+dc53abd61c414dbb7e66499ce7ae0dacc94c6e20d27e9f304122b9ed46f9a51d
+01a9adebd381cb807ca0ebe46c7304709099b909235759ea7aab0d2960c6687f
+7ffb6a10bff82c4370fe96633165cded78b9555c9cae68e0329473fbcea26faa
+80c7f0034f0c4c6e806dfe01a22eb1b6d65e3e7b5856c595daa1308af982fc7a
+6c49373a8e0dc4899766e81ab9916d6d5216c97ebea6335d719ee0605967f994
+6bb52186fa558eee5e7cb0746cbb0f168c10f9336efe69a70b72863f569288d1
+dceccb61a0af03f1f4dddd8d2e5ec962b7aab62254c716b926768727eb6921d7
+a78c2f857d6bfee5315758cd23b7a2b2e414b7ed9268a8710a85f045cd893cfa
+78c13dabe27032d86b7315d8e6d0cadaebdfba66bf278a51e62eeefce7e4c076
+b8d3199914e255a654f9f133cf383b84cd7b42b0cc20dbb67e1d00766bf69e63
+446daf08e39682fdb09a3a9b18f8ddc54997be81e4f9f7e03620dcf31c1b9970
+01e04e0dc6d3f0c13782560e2cfe0e8e019b825f273f757baf4b14c1a48e07f4
+cb48334d273f4ae9a0de75ec88a24b7f5889088fb4eacf7084efa7881ad8239c
+2c7ecbebcf828bd7f1b90d7d8a0a59d731ae63407210f8736f17d021a2c387a7
+9f09dd8c53cfcbb76bd00295f81e35002de77bedd611a424a2e6234336eaae3f
+e3f6f0f458a4574e98b3876f5464c2d2d53a33a8e324287467616deb4054410c
+1466a867eb84a1df46465d89d9d7125d9b9cfb95b027ecc959213cbf84a495fe
+f3c27011965548eef8fd8033d9303ed69bde12349b6b0019c216f4e16b01f2e9
+67d81105b756fb8b1921cd9f027541e452b44ae6d4a1f96039227cfe6240abc0
+725f783007ad7ae96092c7565daba9dfecf398a41424ec2581dcf3036b9f9b3b
+4c575f31cdb7d594f5d83a1a2a6c5d11ec0aeab443257784f68bdc0d38d069f9
+681279eb98c145c877ed251b2c049463cf4ea94ba9a322bb0c810afa47d6ad66
+6f96dfc531970df4d9405ad3e918bb395b49d7ec59d77fef1933b95dc822c9f3
+d6884d608843b8fa93f3978ada88e2f2d096499c6852d0811ea1cf56a9252c4d
+3f512ef722a6c48eeb9e0341070f541845306fc2c6267cbd95240b4c6a794527
+eac1764f09a5aa0b85bfd8cefd7bcc2ff672290da9ec55a6f90e673bde044ce3
+d0ea4d5d68e2c14159faff5fb44cb8d53c9be22a68791358683f8350b42e3716
+abc826ffaee6835ef4a61f43c3a4e57b75683611d9c38b3c36a25f72ff512a0f
+cc55fe29681f1e6b7badd13eb29de7946d0ced63e8b51fc52fb7113e4b798dc0
+39158531eb1ffe88c317ff609feff727da684314b1c6538de93df818c351fe70
+89bd85b23473f5ed5b12bc1e507160b3cd5d349f7a045e7ccd81b6d9863f5d60
+f34c44beb43d83858df1b7b9d4a7d4133f51f1e2523c78ad2c8ff327b7852f2b
+1cd2d477e39f78f8b4d114e653b9494340cfc7f790381df16435c32f9650de6a
+817e56d8e9bdc15c73abf315af818382111a23dcd1262a8b7c231f3f1ed7361e
+fafe825e4c3e29971ecda376cb6d2769887005a7edfe843a6d6514c588ff3c5c
+bd36f8b70e52257361df592eacce24806ab61f8846e6c3e9a3d52d9f373dd290
+8ffb5f7a6c17798865be809d8fb45ceeaf45889d4a5c6c171a97eba086742a0e
+8be937a14d8d4354db428c7d35fab4de0f65cd356f4b6f27a00cf5679ee6f0c8
+8336ff92e86e84176c8068b8d0fa73780d125a050d55245e5736c66ef7e6db58
+a81862e943100a8f95e4521a511a9d6d068edd6ac38cbc62847e33ee41697a69
+23c4eef642c6f22b5c5a34f1ca7f5a7b76507b09967b803c76ab80438d7e147a
+abcc5fd900ff9628d099640f36bee43a8f1f77e26b6a222d91b6e86fc224604f
+1e9e6d6fd9fc2cb146961d3335f1dc5c02687ceb7a6b51e79577c426534e7ef3
+cce36da52fa3d05448bdc26503480c407b81d24191bee3e81e4f54b449176e15
+e1c79a2195d481d9045fa0ead210d7070e14cb251c2096a561d41bfa979df125
+0fb7916f6fcd62442b4161d4dc1091c3068c5eb1b8d77d4fddac8526f39c5eef
+be2116c58278573e69665a0653aea7bc6c52b98c57050e268fa55291fe7e317f
+c5256223ec88152115bf7f0001efca55e74062e0e6c8258ce698ce487d33b32c
+1521cf1e9114c62ef52d2ca8be2fb775a4b3c283c41d2b14d43a6618cb377ee8
+bf68175b0b0622f68fefdc2a822d3c07258c8635ebb3935b1e7da50e8f8ab6e7
+c9619cc60c745643e7d56b27c346a3833e47ec53776fee2b5e8cb727dc326468
+4fc2b0839d600b879bfa03572bf3eb27962cf28fc97153f5fc93c0ce5a639903
+dfbff1ba5b371f8434bd16fcbfc33b0937b4ac30c25b6c6f2360ce577879c5e0
+7125c2cd5d97ef58946ee71e600703bebc20f8e3eb712f55a995a86e0d53745e
+479c082a192a15e85e11915d5b9a3f4b7d041a6805efb7a060c5f8304e06c8cb
+eff6fe13c52509fad66ae3dc871583fdd661076d5e39802a71cfd6f0a725cb74
+db2cb2d21c6a7966fb9feff86a29350f308acbba491a62b06e610eb0f590c620
+3b4bcee5d882b49b9a86ff2ea90e78d6c92f5b667b42b5b7d387e8e5dcb9e26d
+895de19f49eca6afd5bae42e4fd57f048b6a2952649f08cdad0eaef297a2ee46
+80feee757b8c8a417b41da6d7c8c63a0c186a2f34b3055a61125d36b3ddb1912
+64e798e42a947de025ec789a3e3099b8bffb8692f4c90b38f8bbcd7b6e986df6
+0a9e4c1e3e2ec0c5483549f3f69e5486076f524d36af6ceb76cbb48f81ae7c37
+2cfde844ce282a5ecaf4e3f2dc4b9faee08a071d7cb59c3d62528ee0fabae570
+83611baeacf8234dd902048e5ace176c312558eb8d172023601ebbc37694beb2
+46a71991dd567c5ddde4a0b25fe6f417bd9e0f5f7e8906d339c937d9d83b5c96
+558c46af647691caba9cf08a701fde5f4bab629ffba034628e780690eee2f103
+861bba108186ff3be72ca2e7972775a2860caea4b55389d2a77762202dfbf115
+5f34fdb6ef11f02d21dc54aa367baac84835a7f811c6d0feec72bcf76aaa08a4
+a8285f76d9d8b2b608e574ba0c7cefac1272c84dff5aa089a1d2ae8e6b51dc4e
+57f6205e25482439931e7221da50274d6b803901a668e99fd0d4eba0fa429665
+86cac2bf51ecdcef4d17f78bc92ff7e5cfff31c032b3733fcca79cb410101c84
+17b206c38f74d256bed12e12733aba6ba32a4c0c726418d7e4a941547fd81ea5
+71a87e0de38a70f0307b3df932d3354ff227c5e5d2b6b60cce39465e92040c2b
+a10ac1e70d331186d616c5ec4eece2a888e3dfd93d3ade6d64e286bbfb641861
+ee92713d5ad19cc6bea700552d2094763901192d421abaa5e1bff68bc1d685a8
+045392dfb42c06d17556af80f0e0505d86989c62224342fa61be51d4ccfc3dda
+e72feb2857017f6e706f1a1dfdbada1f242ed6ed26345cc08ac0c296a075f1a2
+74ecdc73c21a16fc780c351ba77a86a36653d62d018ee12fbd60afd1031f2e81
+aa7fac152106e7ecab754534eb435f9ce9d581cfd2ed5106b3d81b7541db0d01
+eb4465dd20cb5611770e354b5b2a92922cfa75ced0754dabb8670999864d1eec
+dae2d61d95b1df6e4708c4871d32a5e0d855bab1f16f635bcf53e81d8492ce73
+7985e97f384681b1d6ae77813d6a5a590bd2c7a9762f43adca0291cd3856e318
+b33c051a8b9b51e4877e37d5fa96e1ce9d5ab488c1ef0c3e3c2b5202ade9e35d
+8785245978ab1077938cdef9f8130932b1e599c211b7d826271482ab62e5918f
+fb8b8affee604fbb0bc0272570d3987d8927689ad83f39fae0a65c0babbcd9ae
+38a5913eab67eb4c13c87435e477e5f896f4a93380bcd652b46f3da62e6e2650
+28d974c9c6e4d9f79bd7997af4e32ede9f07565a40733c05f83a235267a4dfd7
+6943e65700eb8c950a25d6bc79ea434b1f3497d534b9cbd1061a7f77018fecdf
+2729cb36d5d5602b1effad421ce29dbf9515d91bcf41549d36d6bea76f3f3a5b
+e245186fce9af288254e086d25e10592fb5035ec2b1c749c2c061ee41b51e6da
+4422fbd5d5ae436d56e0bc2080b4d35a4f95c1df8a48f8f09ea840d24ff4dbcc
+3b0f7ae18e7abe9e3aa82c8ddad179d610ce5a92a280b14da132022489b696c5
+acb222f5dec143f9fc8eedf5223b7ac1f8828975a8b27bd2f47f40de81359aa1
+5327769798da49eb29668dc9c73c991e941d83b6ac7313dfe503a2621e3eed03
+ae1b63eee1d8a1249c631decc08ab5193265bc8a3df7b2d2c92bbd6498858db4
+570e7a80d6ee840b180581f47f0484c4a9dcc4e66b9573b830be8a6e199a0832
+7d54fe5a99d1d5e039816014c2a79842c5113a45a62879098f8bf37d699f2724
+8edfc86dff183bec15a56d354813c5fa3fb26d11226577f4c3289102157462b6
+8d559c972f49b0906d2013845bbbf759bc64580d9c4c738f84c60b44c193b4a0
+f3ae795feac35e3ba46f13b81ebe765b1e2f714c190b0a2beedbc36e19995622
+9823dbe7143968bc98146c27fbf29a651292571f3460867bab4f1996423a1bd5
+93152f6e404183ce1d3558bc47c57a744425e013add4595acff5b432a85b0623
+bec7f05be505bfd90036c8cddc30e37ace14c6f9cb92f53d51fbe353231f61dd
+cad072c6067a0f6e256d71fb23a34d00812327fb4194ef728bcc08c0c5ecf191
+be546a2a868e70cdda26a51a9be4157d1be67ce8c4ed74811d8f59d27ab9b5cf
+bd0efd08d753983cbe7230c4397e4fffe9fcc3c68619f3d4d793b38a65ba8284
+4679a197d7c87fb925caa1f86cbab750061287420e9febb301dc15160548cfb0
+4a70985cda7bf79a90d62edcbbfe206f1f33bd17c0ac3d3f19da6587c43009b0
+7e0c4a113951a77cbdab317c336b4f381e686e2f5f26a592f18539e6b6fdf7e4
+9f74fd09842f2804e757959945f14654e80fabf7637355b4e5e13679cd64cf25
+74bcce049278338f707b7f5e8ba55943c40e97ef87db69e153e8763ef401f8c8
+0e6586d0bc1ce6c5dbae597686cdd20734a7d5cef30bae63a369619ce3daba15
+1e3fee2ed8119c545ef9769791d4a936c537c6c3b73eabe7da15351063fb8f97
+6d114dc07802b5ac47421f26474c6aea50029f7c4ea87e5d75898069b0d1a991
+d4253d20de8db54ea7aebfe007434d1a57f1aa9b97cfec9d3c506715b6b7f75a
+9ab2b16a04f455e0b5d79e217b12c0bfaad8f8dd15a6a2411a2020066f9dd5f6
+299cc254c486f7378e44ec6d0975fac07eb8c932313a6285f748bc6f1ec25a0c
+be9fcd2adb909bf9bc65c0f4ee3796c2f7cdcdc29a47213eee59fd6cf900779a
+33523d25579568c5f3e19697f462c7930e90215f5042983f10aecdb2d50999fc
+4f489ecab5bd96698c8a5bc0ea3aa39e3b0b02c857ae5b927c1c9f953a03c461
+a2624bb328056c73ac6b1b043a951c010a342315fabaf32ce26f8c1394a8b036
+645e03d06ce40d4e7d25961c21cd13d6c556081f5beab8a5baa5477cdf0c84ab
+f1e79457b8fbb765744d21d394ddfb1b57014906082e1d166331c40383bbd6c6
+16b00112bba980415895f687f64a4de943bc9fed14f9fd31806e30a99caa5ef5
+e62d314406326602bbc07d959bdf0a07b668d75ad6ca93367336853761526d19
+80d8b11b60cdb7432a255f4c66e73b507d793ea4e425f7e1b0759faa76c69a1c
+bb2720debc2520ff9c9114d887c2dee1e026fef17858ec92b782d5cda059cc39
+664661854a92877452be1f06bf0542c2f19d6d352a7a06f08d678b49c98cc3df
+b5c89030024b0112f2b40dd97a3791c63e85a9296809a50fb9b333a4eb480014
+d8b4f2609dce3c284856b73abbfa03da34f8f10db45f7ffa357ca0f9eb722996
+16d5e0e5935f4038126fa1979d915d4e5b44f90c7cc87ec898761ce13fd4898c
+e4285423220f9ea686332f158900263098e1bb49fdc43e5ce7e770173f4ddad6
+259f63de81273e02454b90ab19eb9358aac9c93c14677cf606d149a74ffa17f3
+b8e56aa097f4342e270752fe4d6ad8c0e44767d6350855b8ee09a4400dbdfdf9
+a2bcd0bd0c8f3078ecaab54ab42fd1b1b3d039e9bd13d04c9bdb502e352d4eb0
+37f78d266d0840454f8aaadf34a699d5bf762c1f321636976f0e42fd5e3d4296
+f56f53b37edcc7f56178ae3eac209d10f634a2968ef0ff9a6b5b6dd5be948933
+b080001c5509a00dbc8ef5905455b496e8ee99ce191c2bce4d1a68a67dcad629
+3644e8be9a80b0ceb337de07af66467c7d73fa2645fec6cc3201ed9221ebb070
+33f1e4ee9d304b681c245e2e5eacb70ab570a2386680a363781fda6eac42fe69
+aac18b815d01fda430bf61e45b815d0e64c0265276b00806628512019a8f0783
+c8521150528befcb82f2dfe9e2aebeeb47c2436eb5d49426bc838de65904ed0f
+aa0d767564fbc2582f735a7e18f71b04a813c4e9ebe0c50be7c0eb36315986e9
+abbc50e550f577ca78851ad0e67c9d9040d8219b1ee5d95d043fd403f8ced991
+976729e538d5a88d861bf4b3a4e920b5268ae07477efe88d2bfb2d55f4795ab6
+a291a87eea8a5f4395abbb436e710245718633bbe1f4b03427717c2167bd53f9
+8bb5e47438e3804b2c0a9437e08dca5ff58e484cf3d75d6a61c5bba11b7e0f92
+1c605be4dc182f243ada575a2611cd37dea6ec31c04dcfa03370dba42e36f1a1
+1538893ca71d8bd187b3a8cde7a371fa57f455598f8552db8795494e0f01a766
+7b10c543cc6ada4301320441a37e7ac116df568ff96a63842d7bf074b89a3e00
+f01d41aec9166a7cd0cb439773027721cdd4419fefc3347450b808c4cd350e89
+3eb0e6a8c128c414a5c621e6c664ea1f4e770a4cfd1e8b63474b5c65abbf3c5b
+9f0d2b4a5b57212cccc90ef28767b2c4a7fb44cfcde99a893a3249e9a4b72f78
+77cfd53bef8eb7e352db948cccc3227f8b9649b7f726ba07dc95e739bf44bd7d
+18846408e47a609429c9324d98ede88c6b89c5744cb5fd6200f93f07b44898ab
+1f569f66ca0c7b22af185ed81e6c248a227eb3040621b350b959416cb5bfb607
+44868398bdc027b9ac9e865979e4960614e36be5e06c800df8fcbbddf501c127
+d6aadecb9ce23faf1570c9ffb9425c574c769c4a4814fd5c3066aba9f534c0d5
+3e5662be63fb1a10a2812bca00fd2fe6c2f7a708c1b7fae6dbb81098c651abb2
+97c07cbeb76c819f87f06f389f8645d56b698f0e7003d339fc9d124b4f6c405b
+cf9695ba74d3f2ec4a752ec04e786f3270afab68029427d5d07c7487146df068
+f4a919379cfdaeb7b6cbf9c4903245dca75123ee70e68286356c52fd7ccbc60e
+a573c47b1748f28c9ef7f0bfc8d1e7842e2fd29dfe7443bc1d9683d0c20dd6ca
+2ab34dae053ba0a466c3a7ad1e4e17d09bc6be4bdf9bb0e7404e62070b06ace0
+d37df1823e944538d98e08510dc6da55ba3c2ae38f4c3427bdc2a1687ea0eb6b
+6eadc7d1b9f68636d633c29335756c9644e0978f7d51a0a507592a9f291e9ac9
+8dd07fbc3240e838026f49833aa16d19211e7204eb872ab9fcfbac42b9e4e98c
+63db0a691601abf39fb08e667c9b46ac2fb55f0537495fa864f6f1f5d2d3409a
+a14fcbbd07c1ceea9b6efded44ffde1de971bb013dda380576e00c55f054b2fd
+c3d70987b19d9e0974db7b0723ffa7af40e90c5e153c51ee1a3fcbc72d8d3be7
+4e40821c2a541c2703dc62db8aef03aff16071d40968e6eae0e10cbaaeee9f71
+b370227c6f0ec9b1bd66256d09b09d50dd205bbe1e91a13d714edd0acabf201e
+e61136931fa7a6d32a71612bae12c06b2b1f015c105d2bcfb89772f5f08a42b9
+1ac672e149699d4ce53b446d6005cfe619da541026e71c17d0ccc809dd3dd90a
+dc08c2655bc5f0f992d9f80c3c13470d60de2b551860ccb970673e867338b301
+6e20bc366f035e8102eb68cfa3a6d607146f6fb8ec7b88e836a5cd5e53f84728
+306fea6dab0818d7752fc0e54b642a4da8d2ea0590cdc2b6ab41225bb60783ce
+38bc081ada6cb8393fd7d94c8b3972ab8ceef5e33b3868c46c0788f4b379a3e9
+8eb419c92dad3c1ef7b481dc16c5f54d9e29354c8007962fa315bbb3fbd236d1
+1e05412ae501906948b8994d6b908d0e5eda595f22115b9d1de8e8b6c464a9c0
+2cd14ef6f0988d9d834704c0e64ee14aaf77f763da3e77c2d9b2984d5e9854de
+078b95f0168b05474868f4710d8f2fe3211e8960e6f1c833f093d6f05b4dfe98
+ce49de5c5a2a144d5a57458809a7e709f17d8959c6f15a9322bc673c6bb619c0
+49be735966b711314db423c15e300e954d2edc15ccdc88dc9ef62f9d9b255d57
+6688ae0cee7d628ca4358e965b126d634d7fa4cccd9d3dc18f7399232f405af2
+8c2c56788bcf8b66bb4d0109295fb047f55300a0153a7cdeda4a27d8fb20027b
+36cbbdeae39756b2c472aa53d26746546e039dd592ca40b8dc4469626fe9afe9
+1fcc36085750b1172b2fad051b84f475b82d7261ff546e4d7073cae7f6a9a5c9
+c348cdd7d86a210e66e4b51bf629511b84863c6b7d0ad2a9fe4af802dd7f9016
+a5aaf8c919d2e4abd79e32086358782176d1897ff30221c16cdd3354cecc715d
+39ac88bd91c466d6dbacd4e9472965ec8af3a00766c15b7f202f06b8495f9be2
+25947be5cf86a7f8d07f8f19cf56f6bb5d618ad7765be8897923bd9aaf316fa8
+bb4538998c495521bef4a0e0834c83c81ffbd1fe4c5a1240d0ea2b357bd17908
+2a61b39253c4cf1e1042e79eda2895af22e6ff61131a5493cd64c5974bc718b4
+f3e0990cb8d4351c203d412fb9cf86ec6a6613668cfc7815864a48c64bd0d508
+4d4ac0d2d4d666abbf2e856d2b9e01cf9dc00b9302ffacd40dee108ad04a0648
+e55989802aa698ec2826b1f16f5fdad49d07b589dbffbeb712c1e72c0d57dd30
+671a02c34ab2c298c75d3999dc0c621a73dfe1c9cb0e534464b460f7f3f29c92
+6b29a3cc6bbc0b0675be20689e401bccb7ee941e3478d37b34f7f0073343ed04
+bf839d15095e099539ca315f168d489f23e2a6935005ba23bf9d559a2981147a
+7c5fcaf2a1a2bae878de27e0a888c1e9d4b6d31edc5894374224c88cc01f1e7d
+db1131d3191c7b3829485fffa51efcd1d412afed64b954101604deb81f239e24
+4926954bb43578b2e6ef8296cd6283fc7fc74899b773cafa2265161af6dc4773
+142a7562ec1dfe632fbb2e129629f7891808661122af2e0e75810bc8747a6341
+50b12a5f30b1d321669805bb5c8152f79512aa02c3e0ee0d69cc996ae33b90d8
+8080d9628ca3c429d21f7fe208f9786298b8999d829695893a520b01e43b9fc6
+bd9746d6bdf29783b2a5660706957a3278c1e60d403f745e63c28bab4cfa5765
+9acbfaa9a6e67dbeb4a2cf3abd5800f73463a14107e1f44fd2e2e23492b083ef
+b52e2c95f6074eadbd8aeb7edbbba467f3dbccd1723d43f9a2483328d048d47d
+a64df0dac94c6175a4832684a2f5428e4651c25c7b54c83489bb521974a7b8a6
+e791b66e1dd7396daa5a6392f54ceeaeef85bebc221a5ebc7ebddc9b803e8994
+13112b1e29986bef929a12724b1a2e9567a2b0eb5ae83d6cf17a7eae63350f55
+efecdf435572edc386f9d067b1631f31496348ede6ee30c4fbc804a8db06e871
+8634014c37c4c58daa09529039153e0cecc650e87ae875f30cdc7c8966001a25
+6eacec7e24c773f4319bade11cc74be9d8e45552f9ae485fdfd4a917fbc7a6b5
+2c9d35ad42af123c922c7d4e0cb24bb938588c206629e687bdb45ff64b7eb6d5
+1d42c4c314d5800577f9ec24ad6ad8484f3d3502327b4104847660c36431a347
+e3a4fd6abfa720839cdfd2367a71160396a400e01d266c75139e6719c1b86e23
+b3c9b59ccedc9a197aa5201f88656f09b1aaa5e088389492e9d23bed68b85b45
+529ad57f9cee101d176262c6a991203b89267a43be25fd4084abbd5747d81c8e
+82c89330e99ac59d3c3b2bfa319840c1b8a8817719c286de05a502d3b182b54a
+9d1b5e85cc1e00f215c9c0dd1888013f2b4947d0b9d9d534a754ca927c24d2f8
+d758dcd7aa186451acedc1d50346f29c4d7e073ca7cf654439d93ec7da51be32
+bcfc3d752178b79e430426d1f22d5df38e9eb798c79ac8a4726f922e9c6a5f78
+b0ee3b54b447574c1df3e0c44cbc48a79d2c87bcb41499beb56b1f9d63c38fe2
+dbf57a60cbac27501d4314f59b111f9c6c2d0039961514e89b4e32e86412875a
+9c7000d821f2de2be7e2bb54e4ad58d66255399226712ac32bc1e0c5c582dc8e
+ccc213f74cc98fa2152e96e51e2befcf5f39d4c61447a53106590fd330ac98fe
+47e74b916295dd9b913fdaeaf4b30d0aba9ccc0cb9b7003ff9cd91f3c318d4ba
+841534d245bf0fb28a2db8697ea5934358adfd798892c12882bf06add14ce78c
+2187bce0880c553b8bd35e9a0c2f58d5e84771c076dd3877f61dd4cafbc914fe
+a993d8b6bb71bc0d2c080d089839768da8b8b8d8f7724f5795c9279fa789c3e5
+4d381b671f47887d27a741a3d86c28e90b5f532550d56975d206d1f6584ac6b5
+c8df8d394efeeb84634db8ace8fcfece486f42f1c79ff8cd54dd5c80732aed05
+22f1227e3b4283d283e951df2379954d80dd74de821a83ad53cc0421f1df44bd
+608a9a154e41289fcb70036adfc61209ce6628b8ec3fbaa168d0e4e9d65712d0
+054ae30dbdcd47eafd664894951b90f21cab0d87ddd865eff4a35a0e5c436e7b
+498453431ed50a71a7f3e9dfd7237f1b3b30ff6b1d3fb5d691de9aa1b5542cfd
+d4da348173958df04dc2b7d45311a3c7a4f452ee5f9393813015050f0d001108
+6bef94fe121818fad7271c86c377375b8c813bde62de8ab22fad44afe802a2c8
+94ed9ea32a0f6464a65b7d07717917e60a3b8a6b907d99137410d1d3e42e1a35
+d617a384f5f08f92069e81cbde0e19cecc29760ad13b8d363730ac6fb5eaaa8e
+be1a36a4ce8cee116e0a9e41cb2b926f61f63a665040e1f5ab0b55c1c4973ae0
+87d757778f7904cd2297e5c28ad047f7b655ed16e4384c5af25f0653d69baa76
+de7ebf578ccca8f3ef0b4242aba69da603b5e58000e9d1b6445d35c11d17a031
+dc28e6ec2580d51db04795bc288024e43f66bb326131402177407405cfc50708
+c49a60458f2fe6503e77fb30f3d2a60eb1b3140e6da86a4110eb63f401bd0281
+c37e773ad45ef75f1cb54f9db7bfd4ee3fa0475c4c088821b5c7035f3567660a
+38a150599fae3e109828c65216163f74630b1fbf9c824c40d1fee882e2626fa6
+771055adb12cf3e579f4a930f0bd4448dcdf84fc7352e87907b402318b475d63
+2f9ef655a50ac0218a989488536db3da594b6162d25b5f769d50a71ba9900678
+cb1130b55251b08f7adf45eac2c6ec79c4ddb6310b362bcf9224018f8e531686
+a7ea6dd1978aab05209083bc70a2ed7828d8c869643c7907d9f9f317a812e415
+5ab47bab8693d0cb80395098f1993be354fd4fede38c270c662f9c4c052f9975
+731412a0c6aa46d8f69853cda86ec5fac5a0ddc3b15a99ed44394cc6426a32f0
+a9393f40e189ea3d4717ccc5d11c9d9c03a13a88f624c006e7235bb52fae2379
+f662beab4fa93dd0e5d5e6a0b01c9961ad9b1b2058cc83d89b4af4f6b8d18644
+49149c0b4cabce560f37b53066e74acbadda9499c711646a94123a276f5b8bd8
+44eba045a87851df05c91931d7db525b3b7f83ca76007b5b53defecb9a96d606
+8ff5cf8dc5b39f60b8c1aa7ccb6dac23a5ae8b358ee494ece3132111693f60c5
+e4493a498acaa6d353bd03b38fea946eea73bac352ae35c4b88b583e8d26fbd3
+5a566dbb2b852dd1ab4859231227477936099286daf1c14de8139781d3bf1290
+0adcfa00bdf4acb7d1afcfa1876a7abfe8c7468a1c199073e5e398ccf9a963d5
+29d5b3d7ad8429aba5c23607579778811987c25d8693540ec4656ae2ac5e5e65
+86654056d1240853939e7b149094e6fa88c83e61f05698121a221a3dc674e62d
+69790683c3fee89abefbfe57141abad47a61a9343f0ead431de3061aca42307b
+5e26f4c616cc44788c0831b7beec2a0ad59aad55dbb41eecf6d830db7da7b4c8
+40b90adaa8b656ba892669f362034647aa9ba450ef3677a6541f2b5ee92ce626
+f146e44288b9269ff76dd3821ab77aa1391c6ceba3bb828a9b4a409540d21762
+1a90656b4dc639e78dd3081311268dcd30e57ab3809c7aaca8740dcf9070edda
+21a08e43fbde653ea94321c7be5df18fc95e3bdaacf50c1dff25cb8f0a01c7be
+55db732b4f7c3a78b731a687e04a8bdb132a57d564b56da155489e9f82a570b9
+86d86a49a5aac39a6b33bcba09f7fd633a999be22d3671ce66d8f3709d653a1d
+8559df5704b87dacaa92a3fe40
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTI12
+%!PS-AdobeFont-1.1: CMTI12 1.0
+%%CreationDate: 1991 Aug 18 21:06:53
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 173 /Omega put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 65 /A put
+dup 67 /C put
+dup 76 /L put
+dup 78 /N put
+dup 83 /S put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 121 /y put
+readonly def
+/FontBBox{-36 -251 1103 750}readonly def
+/UniqueXX 5000829 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd803271dc8bb1656323089e9e2bb50f2b95088
+87d31dc36e555668d9578b338402f8c259f6813b0b71e6cbd95e19c20ced8495
+2559e47577e612a4d94de3c1b4c6c41a6a3fa9e2313457242de74c7e4c0d722b
+3e224d18baa726369542682e9459b951b2ac638494880c42be4e2175a3c067e5
+945bfc1a05d3de8c3e8ab97f80ab6000e1f78fc258b85d3c84b038d7d0f5be85
+0d43fe03e26cdfbb41c36d14cb552e8447ca678efea1d275e85503123a2263b1
+4077587683de69a8f5a88d666172668411d0d0fed3e037ee468627207505dbb3
+59cfdc5d7f526fca5416d741073284f5dd2471e09f5916f4bff1a90eea4d1283
+7731f6a36e5ea695f4efc3bf5669b7f60ab606df5819149c0c8a4817f06dc172
+0543467645daeffe4457293e0c0407c4ec7857558d0452de2ac773f141783edf
+81b30215ae8d2d062aeb3cb69eb0d62bf04780997c9c027a22896f456b784378
+7f2ccdd4804375321e7946d3d254521249a4d28a360f4d3163912a688c16e807
+15d0440bd27bb78fcbc89bc28028aab2f594f8b641e45b9c599180b69663eef0
+03465a2425aa4f8b29dade493002fb335b23eb145108ef3ab828755d3753ea8d
+f0683265497b1cb5cb484c13f7a4e003fa6ab3ed5e24fcc6125cee4e33936122
+3cc907af3c64e5aaad882c356e673e6ca2509a71920e99549d8797e9aea189f7
+fe18bbf718017cd2e32b4652acf12f16e785462980f5895afc917ea83e9c3eab
+6297f1de23785f79172538b39984ab261f14ee296a42cca3159e63fb30583af1
+911646257a99b4162635fb79e25404242cccc3bf224d4c279e731333107ab2cb
+2598dc582dd185669c1fad35d2be0428389a4b175db159508c08a77e842fd400
+bbbbbd43c0bb046e4c04e7d4728070046aadd9b4d87db080e7829112d6b06afa
+fb6a3de4e77bcb29f4ec31539afe0342dfeb6df0df8047f65733a0de57ed266c
+5da22a3227fe63c0ac3561b5ea61be4cd6084222d1dd4c833cb1db2dcf7d5c96
+ae5be7e4c0df6768d8198459a08c6bd02dc3d19ff083bac493f24c9999638893
+07a2786e2886a86d101f00d286ca5a7ac89c042fede8f1cfa9d22be711555e0d
+0de7f6b4b45a9e8fc9876481c4985ecf192fb06ee35f56adc5b2e4db544bc369
+a80adbbdece74acda343385ddc8fd1f5ab7e1fb9fd3b616db6f629d97079c92e
+9a5665654cc8f5c34659c397d8115fccacb5128e6257cf0a7e74be6b521a6084
+79676750b5011f6a14f0e3eb90b9db4967bd4ea954411eeaeba0942e70c58691
+469881dc2908c8b69a5bf44d73698767aac2a9697ad7c322dfd0e11241f14d16
+b4295725a3049413535cff15eeec9e790531dfb62d698aed17af29e741f943e9
+ad8a6555c1f08e1ab22a4055ec605a234e849875d1e4b094a7bf3ef27712c91a
+4c9bf011e85f0cd7d81b36ff6a83f4ab8663c1dd432e7d9972e1a9e51b7f4d87
+02958eb4ad536728f79a900893638425eaf7c8677f0a6ee0a0fdea5d30403cc6
+fce5b86419a633a1f993738ab82e9cf91e073a31408e7a8ea65dcdbfbd7cf03e
+712482bba0e901f6399cff023f0e697acbbbc0e1402a0c6b63ba124215316954
+f67ac4f280ee423253b88b64b579bbb6d0c30344eacf28f7662d4e319513eefb
+7aed26898c30b57244e3b0b54fb3dedc8d138f5324b59e3f4e6f0941ae3626fd
+4750de92dfbae3293e062e9377cbda0690b18746fecc8ed65841f2a212a2f674
+d01cc74cb40fb26a245d394a66b1e2a8b4b6e267b26430c2018d6744264c6afc
+c2999660e4b110ffbe46ed8bcc81f62ccab64da339af1cbc94ceb667e1d9a51e
+d8dd1fddcf2267f5f563d550bb494007ff7d47db3c3d7e0d9ae101966ab340f0
+b727af031c545718657fe07ba9edfeafeef55cd9edbb94f6baa5f926411fb0c8
+4c5f295e18f11b0fa71d3fffd766b5b84c3596bd31775cc25e1c88c7b37684c2
+357986d019846a48dff937e5a305757c8d6e46dd4b1d8ef3fa97ee3af229be0c
+92035303b29e4778a8949931d16746d967d537fb0f6e8d6d20ef5faffd07a1a8
+6bd669bb53f858aa6ca1af7dbbb931168844aa5ca97eb2265fb9a5122376b01b
+018fe5e56c33793a4c3ca6a0e7f70cb62fa1589399eac198a3469a356d595b16
+15e8005edf64035bc6cb44ae76a967f2a062d4682d3d4a1c98ec69fc341313b4
+8da30df7fe64ece73990e154c920f402ea20967250594bde12b24a129e511a72
+8fe35c3cf3815e5684ba04a2310d519e0cf00086d8d8f5e69d7e554ae32cd3b3
+51526018f8d1a9f5173e6d911ef5a9a59e40b1e081ad6279317cf965cf07cc15
+0e70b667f149826bdb40e55251766a06f967dc320e2613d9f0a5fb5686ebfe70
+fe3945d6a827f2e96fcd26fe82a3eeaef846210e2a36acc4b3e275070ed61193
+4dd1dd737a9124dac8fa63371b8e7f0149e0a9fa5520a2dde3f0979d67a1801d
+55aa566850cad143de9a093cb0bd25491974304f04948a0e37d43725fbcde636
+faaf2f29b0e2433dc2922ca3d1db5cb4265ff428be5a69536af835e6c29178f2
+ff34600e934eec1463b77f00473b488e4c9992cf698814b232a44a8e6bbb54cf
+d00f570f8f55ab579be55bd0b0cd88655f74769ac75149b47b520d75b7e793ab
+7a3856ad01a27458d81702e5e751e1e519f4096976e1911a2d3663b6ac3a161a
+10ef7eb57b3540b9cacc5e215b12c9df9bb8e4cc48570c4b53f5585987c5937a
+154fb7dfa7807cf56516ca781dd5ce9c510cf642f051e4902d29a4f89b1cf17c
+7159ae85306f6561a0968d4e8ee96fa547bf54c62291a77c024f2b0d68952f5d
+4f5719dea8821b577acc26dc5f08b29662b87f218e55318646a05bf5d701d497
+af4f0035f9db75694ceeb3a0606418365da82f3e7b194e1015604eed4d451fbf
+1ef11f3d7e52d1cfe143efbbe2550514af84ac2f7e307ab7e2a7766571867daf
+166be2ff67cfe6fae5622509783f8646669732f5cd58fdc44631419ba391a2e8
+cb6537bc7db95afd9fe550dcb1c4a6e695b78a295070b5dd26ebe96da47cb90a
+1ed0f8302a093914aae0bdcb972a34c36df3dccfbfe14192e9e10ee2e323228f
+ff88ed9c5fff768e977144451b8c62a79df5260ed6fadc62dea5eacaf305cd93
+e906b6265ebcd67353febebe1614e3aaa40ed07d3f39dff6698a93d4cc97a740
+be32b39714f0d83ec2cb00c00ba5af6d730fd040366b7faa24b818286f10f1ae
+61aa56f99e95f1575defc816d969980d36761f5af3b77603735d3df37a56ec45
+08d907aa01e31ae9e091057d71595573acee579c70d192fa47a9368a9cb8838d
+744a9374d617fdc281c4fd5ab6167484522054187015162823cebd721b54aa51
+c15fa2b2bc007a6a3a99075215459390cf0a317799f0be12e2a50f3f6082deeb
+658faefb5947dd49fc6b23755535f3728be4cbc2305bd15e5e2891f20afda456
+688db32e35a9bcfede3f87d3756908f7f4f808f37ffffe0fb636ec6c94bab96d
+41f8379c657ee4b23e02cd63e468a14967bdf8e0faf914a097589a4b40f6b1aa
+442559ee4c112eb241e7339340942974f924c70e659ee258d843a6c8976060e5
+fa9e627afa1742279e8e5fbf4cd7781bfa7940d6ac370e282ceb94f49f22d700
+0b03d6e1ea03d57d231658579569381dba149f8a02eeac42c20188461bce0c63
+1199fc91dd5c0f29a93cfdd6b77e1191d19ab3b739ef8464242cfa60862954aa
+243966c75e11f6e9f8f51d329cca10f9be62c9bd8b548737d9caff8dfd8c3c71
+dbaa038703d8587a903a93f922f4727cf070339af9a7426361069d35da848c4f
+ee779c7ba76bdcb0b6bb3f3de80b23ebe48b9c33bd475475d53c5d0cff5b13bc
+cbc118b58c6b85f2f8ae8fd35bde6f4faed38cd71c8faa9b682c8c74f7cf0082
+37e1789895bfa9dd3a8aee158bc859c8b38ba074cc3a380bcfaeb2a7965bd8d3
+13cc10048363b3bcbae4dbf370382227b097d182b54490c11514df9ac89b654d
+830b6df6cb5fb043e58175a464bc6e9b76bdd99d8c71dc1987e228221afe2afd
+57dfba5006624f76c5fe2bf2ac2ead23551302efd367d7479caee6a45e4d07fc
+3b52523972c40227757e8835a15ef50f011537674dbb024b28df34c672f1f9ab
+42d6702ed43688bc2b751de59630c3221f1309a371b782aff5d9471bd96ab59c
+c69b0350cb3eb491616b1e6a9d84fb64c97f685f1221637d80a57a8e35da9e64
+5a27d44c084360840e3eecb1d24bfe6eb5991e85db0eb4073ce9636a3fdf5894
+0e9f13c39a75eb4e1e91a66235cd0c549ead453341ae19b3465c4b4cb7f6e0e9
+194319fe4790200e7165c677d18b1e973f8f534455e078d49c00c85f77b2c688
+0ec884a3afe5851e5987133b12a4f6778568d9c52faf65f9b644f97d8c4c2645
+93a95a8a6bf5bfae6dca9823221da9d09e22c5aedef31991327c8a6ae033463f
+b0cd1ab735f658fa5f4c00845015e773aa3e9384e17727f2894fb38ae8fc422b
+bc5f2fed44af760b5e47ea0fa9ad61bd033a13cd940c60de615cfd198bc0d389
+d9375fdfe7117e38c7a2d4ef0acb64589a3e97bd40f91cc6b7c1763eca824b00
+007f6827ba9a482116df4c3855b81f533528cfa99f5c9989819f84225f6c0b2d
+80170d474b82f5f4a0c8c4dba59ca2a03f88ac4720a446ebf3a84ceb22e15cad
+3043ebd2987b929f48447d3bee158667f47d13efb14fd4879b67c44764d9e10f
+8ba0614f64e311afb0687e298ee3d47835e659e52a52cde848f49910d6806c15
+697d762e100731a341dfb40c3556392b15ca1962b61b2fc1fa753382be7b0b77
+19c7415bd8517551e469a86198642c8352239a9f0beabd416a855b05b5d8a25f
+1c6c3c0ac139193bc84d843bf8b3c607e4d0a6fbb57fee5d1d178d9eefc03274
+c5eb27c83f03d5c5d250b6889fb237c1c5d315886a502d9114073053e0be637b
+79a210b520cd7d1d51a96f08be6c17c93e2f04b11fd1b801033bb437f706df83
+5a41b08a4fba8d37b98266870f09652a4ac6276e4c377d759e10003cad5bda46
+f9cea2c9c8ce3be1475347cb4ff7cdf3fd11c8bf90ea40d6f8b539edbc6579e5
+1ac785f06fcc4a474c7ec8ddee574f3bdb18f3fc00085f8fbd24f6efd7490320
+5507159875ccf3d7aa933a6dfd60ea6ab80e4192f656c250e54b269632cf8159
+406bacad2759a0a995ae22ad9ccf797cced1cc7810d51f93f49891d03b741f50
+9cacd3daf96d6d3e2e1df54dba157ad88e21cd81bc5414be532d3fc7ea86d292
+e5d22b186b96548fd9e7e972aa1dfa286e351dd9ccb7e789fc9fab4515a8eeea
+6cc05a12d6c0f5137d6915663774f9b9b0cc50635595ca754cf73736653ef942
+835267bdee0d3f7a090c1603a58eaa97a610fce924d0076cd91c1119fe2cd48a
+1865912978b6df3190ce97f0548398d5b883361d045d117804b977c937ba75f1
+c9df6cf029cc2b910380d96552c4ffc7b04717cb1892a3bdf9f968e06fcb1185
+b0413ba58e18f822a0ea1c003a0163a0f57d9e3237ec453e93d81713ef238dfe
+b67a7b1e476a380b1d2d2bd15b13c20c5271c3bba67af76ca0fa3aed5fca7f94
+a1170a11c15462a7f8c8f96678ad71e89bf9231ddd63274fe8eb5aa8b2700508
+1cc43ea1e9e11beb3d0f9949993113d85bea4315af6d40223ecf4749967c7b14
+d8280980a9bafc4affe4330c35cafc01faaee169ba65cb13bf17ebcfcb4411f6
+71daeb0ae49cf536e38901c18dea18f3c18ea2187b81f1ffad37496e9ae99bb8
+1f5307d6c5c2285dcb54883a7426d0a86c5ca61b732f094a9540bfc94f2752bb
+1e2ac7d58c0623637010b23d48e90ed2aafcf454444a7a02c4ef9c75e2ff57b1
+7fb1532bce9aa01003130f28efd30e995310d3890f84e6de37caf52d08ea7bdf
+085cbdadc8651e4094e82afaf1797c90272fefb39036407adf4715acc9b125e0
+867e9e7077797b1c1c4dad695248c0ce94a4c00b67067eda9b74dfd671a84bda
+70525523c3645db5f2fb1402f038e55030dc228e20802e0618510a14ac05d62e
+512f848525accbcc721074a6cd84f5785aa0a1378501cacfc5be8914939769dd
+b52167e656917dbd2a82b6b5ca959ce6f187546561404076784575d638932925
+d6fd1b4800f46ad430e3a8b8a166f9138218e3f60018ce3100751eb445dbbed9
+6d9557b95ff4576f82527faa9f8ea92616caf096285d8fa69c493bbc12a55034
+cf1d608f5886d02fc90ef5957f17c9a62b0daaa7db9bff731954e1366e5330a0
+623698a0601205693c6ca58d8db138fab015e87730b03201c815f0f8112af285
+1f8677801a405ef943cc3cdd7f36cb22c8698ab6db06887c13d3d0ae81295af8
+d29ebcdd342ec0abeb5d1f75fa66b841e98a2eb6dea04bc8df939dcb45d03261
+44a85a909d30dda45c723bdc2e0178f361e26aed1ade9941af001d3ce0951769
+8777d40c10519abca58c0c9d92ce68d0be60537a4c2fd52e6bca235e8931f237
+2342df220e051d5c5a466bc8dc5d466a3be5641e4c08e331761f969abe5ab7c3
+a3fbd7af100a155fffc0a6924e9dd5698e2303a531faf2d3494256f167a731dc
+f74a922fabab653e8e6193d7344573ff95a56de804bd2e345384e35577e1b130
+33008e907800d343fbfe7c6900eb912c098cb3cc4dbb56bbc4a1b80047614927
+82494e587ebafb61c52337485708c01121075ef8333b92769a6e8a42af4fe367
+c8168d72f1dd3611b84bf14aa8f3f84642d689b045f4d75c972adf39dafc0abb
+9cd2601ffcf9249e9a8fd7cd06c2d843e60beab2501499b48e3c58411ee228dc
+a438a528d29e005c6ce1722d5086d911665f646099bab7ac2cab2de627f6573e
+e488de9a32cfb99215716fd53412787afbec5627e4790190c71150dc4c5502a5
+68719eca1b0f62f2acab1db6f475300e9a49c4d32e374cb30a906f5677e36e9f
+f4a0563fc12aae6dc58a05e77127db24b8b9a8cac1ea9966e984d33aca0f2784
+41382439d90d5eeba96332708952ff99ad15b0ab5a73d54b4320c7596b4423c7
+7ceb89e5311ff26b002b30ea3e1b097d1f72e28152de522dcf973248f51d9d30
+eeba3b73a267f394adac947a61cc66cdd805df13b5e3c35530447133e28cf812
+42b27455198dc7064d1a71fe0f731dbfa4bc01a97a488a4b6418c778a725f4df
+8e2236ee0862e77bf702d2581b8c760d9441005033b27659ef6b1092afb5bda6
+0e1eb394c4a7a7df5f758f296aade1a6303ff4596fd491bf8a2c6546713a0783
+15b2fe3f056ca5e017217159256f784c1d3db4b2db10dc1aba1d14f8eef85a44
+b3a69f69d96e860d3af05e3526c1be9dc545a9e26e8c75e5c3f03507bce21ecc
+311bee6dbc76a5ede99da2bba564a4663b32acbf0390ed62d57925eaa041c9cf
+945ac9f538a1c8e819c87b44db934f807a92e9eef8a75db3b22c9c873bdc867a
+fcf378d0100e9757ac3ad6165993043bb832d6a9242016c2b2fbcfe1486c7141
+f9b0a28d714758c609c2fd3e325a2ab73b71293e1da4da8e046b4c0916b01110
+491203e774e112cb539cd9364adabc6d673abe5686744f569c7feedf9a02a3e3
+ffb5e73648cae24bb28f1cf271b59698488592380d42ad0d04290ac914457622
+2733746f1e60e629f8f6ee12da00d39abd4432772af9d829acb51f076e8ed45a
+b0706382b9122202d9c240a65d4cf7aefbf12e1b8fbfc7704a2d7d7cc5b47057
+a35f9f1226f545c8ea4bbeda9fb42d9c0dfcf111fa78507ee524da7a1d6bdef3
+d9a31173ac8faca4699ffd651709e7fc1333e916e341722ceb76799ad874901c
+09f35349a619887c981ad29a25d5585cd8631fb37e86c71661dccc626a54dada
+afd6019ee6e01465ccb4f746f5f8c2db4048422fbb102ef429c39db361b89fb2
+ab29c3e3ea51b1ef00a6947406e8e410e4ee47baedd63d70cb3ed43020861952
+1068263a3106779f2c3abf14c84a0a0e0e8115f311eed42ec192e212fc069171
+2d2d569279af70c28752c6de03eee66922cc5a7e39dbddc061a43e95eb2aa16f
+10e6ff2b61d908170d0b91949779bd1baee26d2f623e1d8c56a86f128f239d3b
+f21aa756339b3599cf1f54168f52c6fe9b722205ba84d003f341346b00bbeae4
+bdfa840b3aded3de28efef984ca58cc97b3eb28d762ce4692682a604a2bda140
+f1e16ab2ad51cfc0fc6fd1a6de4b5ce4c4be18078eb7770b532cc45b7d60ef4b
+853ea7da8c5d3ae8f60efbeb332472d05b6f834bbbcfcf440f5b52b2017e1633
+5a375119b2ed9e07993af0ad062939707ecb28bb8a70479ba2084fe6ffe5761d
+caddf1baeae0d09628c45ea72ec1d0fff633abc109de3c278e25f4e366ff9233
+a02cd0ff86dc122fd9833599140fb3d342e5c30ad4afddf68ce7a60fdc94e165
+b6a487f1268675eada5d115f2ea3697a6bc0e92d970813ef09bc4cf28c379f68
+3e7de5e5d04156c8f000c3b11b2be3c1cebd862be28c2441010f6f8b2ddd0404
+d0392109c38e6d3a91f51ce29e318d6bf59f9026941fea66c3449e1e23494dcd
+1f3d066e3af4c1aaa5014663b939417162dc78cb692cf4bfbec18f2441487253
+c7f4df6e16a3552fbb0ddc10e5528f316d2c3f17640946f79a4a9f872ed5e597
+0ff9a466673ce6cf8a956cd856126eaf321899f40e7e75e1fde77e3b95ee5b25
+4476b2acab8388347732b3f40ca9585df30312adf0baf4a1db69fe2441fac817
+1faafcc8f50d0ec394023e21d5a3953c955397590fdf0100b0e5bd6272e43056
+b7b41e41f08392a14ca035c8e7d4a96254fbd0088ae9709732aa2fc90e752cbe
+9a3d64b1868eaddfdf4641d7a6a11313c092d0c6e6b1579e310e9ce4cc57e964
+ea82c3bcb0e91cc6752a0b39ec460062bd0f02412324e1d6ee4f369d1db76f5e
+e1bfe2777751215cce10df2c12e30fd21edb969ea7d6787f7d5622115b2585b5
+de8a1c73180b2499b3c1e4c94b8c6f43e3477aa8e4a7231044ea79c09da9621a
+52f013fb959d24cf45ff5e69dfcd0979096a23e1ea67a54ea3c01d22e3545901
+3eef76a91bfe984cb5c6a25cbca41ab8f06e026e280ddb66f5b7dcdf3b3c57f7
+54bbd1c6122f6b60a9d7987c2d982233aaf6fd4535a85eef65000a1c52f91dab
+e6250d5dfc36c5d72347126715606fbed8aa16bc7ed0d2d2b8682bc438e988b6
+d284599c2dda9e8cbfc68754224fef96a666cae69c8249296b8d9a841e2097b8
+e5d87068c4e84253bc953cd5c567e9067675a6b6e2a94d1269b5b79f1d0422fa
+6c593976e6c540fdef605c354b2bf0a44d7fdb5b8d075cf1ebd4647e131c1f91
+4b27e4417a33cc02c0b0172ce414dc2e0c6f2cddfdeb3faee236a87be9b67743
+7d1ad99981d00db8f0bd15c9afa0832ee84f58396556e270dd3f1ef1b662b23d
+ef1e837d6eec2c309938f7deb6a42a2ebfff38c6415a8d5dbb49a23711e72e52
+c074c5b539ca8577ee942d3fbe5b493007c8e6c5a2893fa543cd4d84916c980c
+bf17ef08e8dfdd19e97d49439fc2f3cdf705006177e94b8c2d866fdfd40ef979
+19896a46aae1c51e48404b31bde2361ccaad57e0eb4ca345600fde183676b74f
+d4c6f405dbc9721e6315de612e103fb0dc93913955f9cfe89e8d3e0c66f27f0c
+37ea6cc9216c16fc9edde1b1409f7346a30bb54ebbcd59e8b265064a52f792c1
+562ff60203c82834b3c10e041374490424639768a894d226d4705d5f397deaeb
+d2adcb347f95a4824b75c0f8ea38b0e70a45857a85ed95702641ecf060642a7f
+75480f37fe0277ae4abc0c621f3785c58f98785a52f0638da72b471de71d8613
+362e08ae7d2d02f90ed8f344c33a773220b43cba1dcd2b31785b299419e38842
+4039fde06d9ddbbd4426dfd843e6e86773f014fa62e9268215bc54d364ec19e1
+8b654addb06df98a29b5802474500eb587e576068d04d9425c835b1064ce2508
+3a7049141a7cd87bce349937fc6b8fc13fb6fa2216adfd2c3e78d80d950f7562
+c0f226dfaea48a3f4dc09d322920a01dd8fef0a06192c7b1ea2b821b57599497
+0db3129dbad57b931d35fc45f3273a7799c8cb8ae1f585f0dd65b85b99e435b4
+7700680d13b7132ef80458591ba3f2ec134466b28687ac759a6fc15fe60733d3
+f660b68469a6ce68fe985bc988d5fba4d470c00393d7a500e5aa9835b7e4a282
+746c655587ca5658e56175ecd6e8850edee22de47ce6e18936064343ee2f4a07
+61d1d34cc6e0743e5e6b3aa181a4eb0e797ed1c351e4ca8e394586cb6f4b6854
+469fe1c44db994c0e4404df847b724e29170124ff59fa98553258b78ad38800d
+ae57cd12c8b4e99ddcac1f2122a56cef2e724af1d7f2954ad5fa2722bf5886a5
+687066509405a962c7b0b72410b3033a5a7fc8d2a59c08d706632395679f18d1
+a19031e031e07fd3b838f499c5160e9b22e08199e1f288c2c9907aa30cad37da
+756c0f671db19436cfcb5875e43b0a6a50be0878adc6f738b1552c24edc897da
+5b35b7e81198e69de5f903760c4f2e078537742f71f4a741b0122edc0f4a3c7a
+50dee62eae4290f4ee27ecf72e330cad601d96ec0d6b1300314ca90c1e508772
+8c3066b7d05148156e730e7d011f612efb677d0d2470e5d2eb64de12be339f0c
+09234c0f48bad3885d5e0f56367e7c0064f0173e172b3bf80be0afe57ada6778
+9aa6b7850105875bad6f017d8a2caffc69e69e1311c723241ca052f6e8de04e6
+d5dc06e933c20b151d8814a8ab522ff8ee1158f074dade4d16a77b300df90b64
+e38ba8cebbd7e8028e596dc5032af0f9838e1ba47e975c8324596f3286eddc65
+3eadc10762c540845df8e7da947cb829f2da149233707a31ac71aabadea3940d
+15d2b04ca2a3b950a3f64f35f9fce1441c7d6c0dd322d7e0f0ad97d1b1f880de
+d1d758ea6794541ec7428fcae0814d4a58f4ea9e3b298ad252fa2176eb8c2b31
+83fb051175f85692f59c0ae72c26a6ba6d1c297e8298e9100cdf803302a7a90c
+8c1d0a0be49ed4c4cfd4fcd1d1045f224bd44eaa349d7b4f9f9f400672438729
+9f534a4338f6fb6faf5b9a144e6fcebef93376d1d2fe4d3c24ed59c1fc8c85fe
+6dd93fda7f53fa9bb28edaf9537c1b6dee1f419f12dd1f6bbb450e33f6d1b331
+6c47137d24baae09781f651206a108d0d4ea49bf2b7a171bc34d22a40ece5946
+98d89dc0ef16502a231c739307cfc0c40c096ae0dc5f7466be8eb7abbe2f7083
+2cc0e76bb702719f47de2921e6a10797b3d5f772a6e399993abcd07727d38bca
+101f53bfdcb1b275bf71257d187eb44c118d1a79bb0f1673249b7587d51890f7
+e671e0d27af19279a05b691831bbe82bf8b37a8233fc423c743cfa4c92bf3755
+ae0eff08966e8c23395d24e7fab3bc027a4527aa10be9bdf958822e34bbebcd7
+8d7aecf691dc875712a19f64e4596788c0eadf59c3171becbeb7e40180682631
+7b9050750d1d86385f0e4449fb70ec5ecae9e5118b25768d643bffe13b24a39a
+6bf9e6bc9c48a7a7ada9be8f40f4ac74a2c847c9e066863947a73fa346bd5301
+cecdd92d83ea504cb05f802f9c55599983532512de603409359cd2952c2b2261
+9a6c840add0b253ac455275dbb47bdfe777ba48880613ea453c2df6868171639
+125164cd2043a8651057c976fd0ecc91494b9eab1dc2d475e230f86d824f24d0
+bd282c18c775a74e59e2bce5e2d1d7ad73726dca00a96cdcaf397f0e5e74f6af
+2fd485e92b832c79dc3a4f3b0765f2d1f79296560939ec849c4e447a8f95f40d
+a528a76d3d772ce8e5d8c4a71bdfa5ffe9ff342b3c6dc15b554a0def2101ea87
+52f4ea1b306463447a9086d22e5ea8222d0dc4c8f5384b10ad2d658596fdbb61
+c8bd8981477aaf94046a469f2aff557b461da32ed1813dc9fe5c31fdbd80c13e
+ad5658f65bafe39bb851d448a28dee87ce9c5910af4a2c71e03c68ddbb61daf5
+9a7aa2d4eac413332b33c6371364a934b9500d0f635b9af9ade05fe336995181
+68e3932859b84c482f32e24ab608564342cfdd962b6710ca7d7cd72f17eb2445
+0b010d08cbe8afaf86dcb6ba006c4ad1f6942ff8b59cf321df3c98a4c810857d
+eb65d50719aadfe7ef9ef9ca2deb6f5f2794295b9eb3f5eb872e914fbb0134dd
+4bd361564e66d995105d564105f0ed7ec9586967952836ba94439add3fac754f
+1389b85fbf5bc8757b9d0b5880b30f1b94c7d062ad389a6fa85deea09d254ef9
+5ced01041c49acc51564c4d0158061f57f93caf5ae6862b8212cfdf9c453bbfa
+61559d645df47ff681e70f590f691ca0a757c7a9cd6acad11cd32f6ab2688b81
+93b6384e2baf89405faa380fe50f36f4e87944d7ea66c270f888f0e3b0d244b0
+817872fc4563dd8448ba06be753d4399dd7f938e72cbb310314df6d0a2e2e007
+d205eaed4f78711a26ad58a6f4eb0405afab396fe3a67ce20c60b0bf28793078
+2c0b7f3095ff6d328a531abb4a0db824b5817279d2ec1a72a825a174f6cb9c59
+4ffd16ea2a5769cb405c0d88d544b9ed4c773e2697a0997cda20bad12b75d60d
+143c329861042075be640ff85a69c164110c31614029d6f99426066d9f9874a7
+2303d8b3f8064f8d1d32e88e68b4256731dcbf8aa1c312c46ae65d35e790fe80
+d62435dfc41f50afbfc9de59af2d19b30dd266f0a556620d42fe4fb86e7f13e4
+4a97a35078c9e2372785ce0cdbc12ee78edc7267170b9ce41deb977052878cb4
+c67b00dfefd0fb489f9a25734c492fa911e20e956cbffa58cc702f0bcde4aa25
+30e6023ee6f07b8bdd12183817e048287c5ff13d431dd9c726107891ef8ade03
+2dd41bd6b47679992878013a851b55976fa8caf0b0566d7d44a34f92af6e6d51
+8bd19c31dd60ed5efe6a9f3f4f0aa236e51df218094def229021040643eeef15
+03a24876e3d08d9b96781f806d6d093777f34862b563b0b6dd7e84d4588ae4b6
+803025211dccb396d9447f009775e5d0cea8c55ac79b463936efeaa36ebd931f
+5f80f0f8cf4b5ef4bd299300b762bb524fd4f83f98121bd58009a8ee92efadd1
+ec940b891b6e06
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR12
+%!PS-AdobeFont-1.1: CMR12 1.0
+%%CreationDate: 1991 Aug 20 16:38:05
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 173 /Omega put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 53 /five put
+dup 56 /eight put
+dup 65 /A put
+dup 67 /C put
+dup 72 /H put
+dup 76 /L put
+dup 77 /M put
+dup 82 /R put
+dup 83 /S put
+dup 85 /U put
+dup 97 /a put
+dup 98 /b put
+dup 100 /d put
+dup 101 /e put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 117 /u put
+readonly def
+/FontBBox{-34 -251 988 750}readonly def
+/UniqueXX 5000794 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204a520640fd7c4d05e35ea5486f
+a43d0e970787203855daccb1ed0b16325828b13b7c767a1a58c87902f0546ea5
+404440fa6526975783c2d7a9572b8e5d5176bac598b8960609f49016aebf3763
+89c1adfe6a1ffc0c53b3acd9d168ec3a278fd4f1d9b085dc2df701346c9d0887
+3d230a161692b42a45bb5da343b4edd839dd60685a59aaa49fc65cd8e2ad2a9c
+5cab953495172a1a9f40d5f38e922443a519dd96f667201a408bd1d89e35f4ab
+98e2f68c3366efc14b5afe1018d9c845d808d4f8e07ea8168518a171ab4d6e21
+70eeac099eb7ef46eb9781384da1fac3b3133bb718bc80082eaea88759745188
+f266b31d0c7e791d633f16ed94e05517a32163e74cbd96dc5db066f2a5313d6d
+7f09465608cb404613e0f058073af000e5bdfafbbf9da0c0d5c02a3447f2cdc1
+f56481901e34265c26d331ac3f85bdcbc7c51ef9eddf2b9c189c5253f8e74282
+d6f053d7d183ae17ea175e5ebc401e67d21a9fea139cbbf3bb1358c713a75843
+b39a69aa2b1a7b975f53ff22d1dc3bdf7acd17afa1da21568310c68241b31d3d
+03bf404bd30baf9cc19c75b958bce7155f03cb0cfe2cae0327aad4b603284a51
+7c26de75b8c6f6aaa9debe4aec08ca4b646d787800acdb445bb55d10cbc2237b
+ffab58a0399b8e1a4709eee6012432005487a6979cabfd75caeaa480f411a990
+8b6d3a2e7e6937783279ac9a51ac69390985d83828feeec2ea288a657e0f79e6
+8ac3451a6bb1c8989c512da066d6dc771548f2da3b78d01c03e2f8f20dbe256a
+ecfe723afaf1bd728b86f31fefb6a4cbbca356f80b837c9a5acb8f511a576a6b
+8ca0a701eba732630025a8438d137831678929805a6e8caae351ddbc9a5be60e
+c8290b795df0ddbceaf0159ab4e7756d967bfc714db64bf3d52d3fd48d2bf9fe
+81eddc7b93896bcd6ef0f2076492bc0b09150aab3ed72f54a0eb22d43c515446
+41a2e0073fa0ca60930005d7bfbf8b308c50bc0b50e371a4063929a0d07d4c29
+0ca7338ea3ced37821d02463b522ce3c0542def3fc07285110f9e91d3fe7a447
+4d274c3948aec19b276bfe5f1825cde5af0e8bb2f99b145eb83e768b0bc0d9c4
+188dc7e1a8d1ae34efb3e956b5d6c5c7de5f491a35fb072c72098784c93d44c6
+bd040065beb65cf92e60fc21859c3063705aa19f9cc969c97e8468b3666c2d2a
+398a667b08d4d5098b0af2c43c69692ad5ff534c398dc08ca535cc3b79b7bd5f
+1cefbbaae48dd832f7e50c4a3c5d16c4e86cc181323891e100a88c4734b874d7
+17e088d585d35861e0ae8fac10e1e78709a23765bb71ae311f8999bdbfb27840
+58e06ded8e0470e3fce70c61003c0f40f9bbe8dfabb8b3a08c8efb4289703d77
+4f6a9e9e4d2a7590643506569a3365033b3446e06730b3529d7844615d09e32c
+a8aa2a961e2b569508f87fe8e5057aaf0288019e0e39b7ad7a95f232fda8f4d9
+1732f7fef1dd468303f37816f97e4553223e411834ccbc5f8c1920c5f13462d6
+e58ba4a64fa372bc419c5dc37409539bb1e90e5469a3deb738beb3b8f93ea4e5
+cba4809ed267c0573223988c51628d67e992816d92191e3eb65494136cd9fa9a
+b0776f102c9367b8da5eb5648972cef78767959a7df31e5d1f261dad044b8d7b
+f5e4e35b0914dee402e1bc1f67941dc8b1f82cfe37f601e776ef2f86536412eb
+752475f29f77fe3cc5e15f5fade2435b12e2c557a4af16725a465caab45df4d8
+bf93194e5fcb56f95829429f7170abe77e3d2c3c82d10ead0980e07c0c5d2f31
+ee5e09a16fa41d44a35ac8193adf5ee8b1d07365699d8ab93facb5bce58bc50f
+9c1f2b5a68f89bef9273ab3b07e7908f0692d9e1d9bcf18537c0c47094904af8
+6be6e43e7a82bcaf6f612e1ac972c4e442cf280d46cad5d30545ca49b36ee62a
+32789bb8e27904a36a937da0d538b3e71054ee2fc78d01c8ff9abb8ba821e826
+99bf1cd6d87b7a56f15ac1312096ab425d3d2da8ea7bc75a883c12fbaeccdc0d
+1ee7a7c2c0bd8b86ad847d5911776589a2464a07c518280686871e2575ada89f
+d13e081771a2c1a8b9efdea4cc65b7be2459a52dbf42ebedcec8d82ec4b4e5e4
+bbd8a34e8cbfa5e60c6b95292c7ca5abf177fc6968aa06ea32856072cffe3856
+93506dc69b27332be28204347afb00d57b68624304824ffa0a89ad26d98c36f6
+a7ffadecd8a7f9c632d9f15d4eb47da09fe1a20ba550c2e52c3b0d56c49421a6
+933eff7f52dc540a56d9bbf7d24cbefab36924b9b8b3b13fb829299e6a7b4bfd
+39ff77ff9840068bea46793741686913a309746de0aebc78a36dd49dea8466ca
+bcc244d3d0db694add9c4fa6cc8fc433cbcd0a14b5718dd454b715d4e713e82b
+71f11ec73bc1d6dee2185a2d1235641af530129b0516ea0b44091ab7fc29da90
+02bfa14ae3f03b6d76ef4dfc4476aaf7e227206fb87da01cea2c8309c2d7bfd4
+5ba1cb8803f0dbd8e574dd4d12985206835d4b7d642beba71d47b6bf136c8a9d
+84b2259bbe77ed73d5238c7a337329f65e83c4b24382285d70353cce1b021827
+56d5e221d7800fdc5777da580fb0c678cd79bf719f8cc086850b29fc96e0b400
+c33ecd00aedaea3c6f854898e519e1c2b84972a324882ef37c99f817e9eaabf4
+0d21893242027f3d3e608ff379ccb7f5783c13cc1a1f9bb05cece7c495bbc6bd
+ac5ccdbf3009e84e655a6427edfbe2731620cb735090d30e8a3575e58f4746b6
+8fe666cc2e9fcde00787d1f079f8c804d1edb042b4e4d2e888f29baa9780210e
+07ed9405da82d44a94686bf37349f87c6d4a126444f692ddfba2f392edcab43f
+ea3b28ca07437d78a327f57e39369595dea246e5bec96816170fc06197e3ab97
+b077007320a9c7ae31718b4e586178e1ab63fb6f36d248e20b71f664fe8dd8f1
+c393ba0d099387a67b6a378d1db8d18732e977f19fc8885ec102e0ab0b3b2175
+3bf1f139c4309310d9dd06c40138b76286ce3e3e461dd1c6120f2aaf1fb77d63
+8ac79a24543b83e4fbf5578d05759b6940c29ae62e0e2b2d3c6d9114d876d6e1
+354d0bcb6f2f3444424e2aa14c4f4cfecf48a774781e3d4fa8e44dfe686f65e2
+65af1b07988d12263650c428d5c8ec9a11a6a56a2a9318eeb42ec8743c389467
+6ca66a13aa0060c91608fd05ba2b51f54045b8f21ccb97f21caf3dab2801bf08
+d9962e6992668ca3d4067ce2e1891d4fcd7ff4381fdbd4e65358443d68c28e0e
+503979f31d8e25eee08acc50845c1dbc469f81db4db5211f8c5202fd65217d3b
+e73c73d4537fda12a5a2f5e5675936a68d8e6d63cdb76ee06fd7a662d2b86bca
+9f0bf8b03b268da5ac3ce8e8833801bef4392116d4003c592fd5b1720c912f80
+e756dc5d8e7b6491fe43019cf34a13efc4c4537efde7acbd77c9307e4abc300f
+0a9cdcf4f09af15e27e202f6b70218c32c2aa86aeeb7a96c3b8a5084115a3dd9
+e648db1f6af61fee9cd9928ebde9f0c6280d646dbfe2dc0033fce1e5ae7c235a
+332044f92dd886860dd50724143a2394bcfb13c839ad282f51213bdeadbc9c54
+0c3602e2934d2f983cf927e7114d521c38c112ba592542c9164c01d3784d8873
+b82f8d2092ae27d0dd06d78a00858b3c97729a8debd1ec4da781eb7f07cc793d
+0b32b19b1eeeba1eff6df4991a1b87855e4ae611ad29ef380c456745474e3743
+c701ec9e8d0de744bd622a086320ee511401fc8e83651d1a71f19f129faa05bb
+4819edb1b87dedef7ea70549efd146d908313a47ef10a62df7ff636fca2cc23b
+d9c3b859e51dea30bfae35acd98a4de38b1efdf0f6e8f6f14226a68c329f4333
+15acdb1aaf5815d00b14c039f9d870cbbb08dd9e62fb03ad18557f61808cd773
+07aa1f3a2b57a1aab1c2c8b9fde75bf61f1adfe40d3efe92e1c42f931453c04d
+d41a7e4ba76b35556a03c8d933cdd12b7598de4a22120e847ccbe7b85e5f2b12
+75896ed9912818adac2a39aafb8391417bf9e6f0c6509d29050e74116f596cf4
+ae143322909c07f258a9390cbefee40a0088446a57f2f2be4f8747063cd28b53
+7b900fb498dedfa618685ba404d6783212c1772b268b223f449a94ed8299c0b7
+55a43f3ef998181de95e5c571ab734c244467743fdf3976c669c5ec9e66e64e6
+5308d10cb37230c0e1997828f0abaeeb6b6067afc0336287664413264473cdd3
+d9a1f2ea3dd445228234b681ddde7fd82a2cc937efc7850c06759276d25b71a5
+8426892e352bab40c6ead545793a5e9d5ba3785aaa0d07329a5b06a68558fee3
+2cc2ba8737faecc57c4f2faf1f3328b5e9d76bd03d72209bc743fac783d3b3f0
+72b9b617d71e1e2a94b6f41d587cc9a15c83b346b79b1e11f44e411388047108
+ef2e90d3b3549c833d690b93ba1e24860a3564375b876ec802e090a41eb3c8e7
+4e9ce7c4dc715aaacf1aa85445c010388d54b5ee4f5a789868d987193f45ab2d
+baea83724925bc06ca684a56ddbc9e136386ee5aefe6f897012fbd5f0fb71eca
+b1f7281bf79dbf4fa4587b48dcc3016f03027c4a418ca24c2caa86c0aa6eb952
+76cc0968ac82a21f8b6136f17662a3d92312fc187f072bb390e00162942f9ebe
+94be5eb282d422f6dd13b0abeae88a871fa37d8e0c6994270089f6d1777872ec
+f0c30f96c86d30dee1ff06004786003a614e5f7d09eb4c16f70b2281d72bbe53
+ce7032324c0ccf7a4aba0c5ef9d0fe64ea9e5ba42caced0d2cfa183c7bda4095
+1eee04e4ac654020fc4657fb913ed4dc7952328af6529987ce59da644433d6a5
+fd94c54b8fd86fcac82e6bcc13031bd7dfd86519697d94da2fa6a6b51b756a13
+d131c9c1bebc1692872e44a0c5d6f313ae8bc68c9b46d7e29e34252603fd6350
+69a13b65af577840338b856fb44dd12fdda6d57eec526921eed98e57895b8c90
+958674928c83eafbc1cd840fe8dfa086241b7bd0698cce7a9032a497fcf8d223
+e1c7a994af93bff1691aed61f9bfc0005b9c984dbe752d460bee45898c3f7004
+7283189456b854cd2348266f7bd7aaed6bde1c9b18d23b31a22d1f6ed5dd0f5e
+823475dec6617487515cf469a51878c801f7030466c4c0fd45c95b7d71589a31
+47fc26c630f6ed2114b51ca0af8cd08965646dc71e4979b9aead5ca27461a86b
+4dd2f103f6405bbe7610b90bb68d9fa6dcaf3ecb21c87ff5c8014a78b2e88e7d
+058241b27283fbe64bc8fa8ee040669cdef89e14be0f30f1d5437b8628701d98
+191bf2acaa1aaf63098829ff54fdd0e5b3206448061f5ef0e0b7e43efd5d9e42
+0bc11b77928f65817b655167f4afd082ada44a35f651692997e8190c1dcb4242
+5c580739cd5cdd28b5939e46b101d2607120d22245b53dac8ce995e54495e759
+84ecaad3027cb5bb7439bfb135a6c346a0f94d72218bdf85941b4dde07475345
+29415cc43adbdb91108fe9b96d825616c89ad984bd2c092358d076eea56124a3
+67e7d3f3ba17400d5443e35d5313aa6a3800bcb798c54a7f727817318babe5f3
+7d09ec264b9448813755e7ac5afbd716f72bf6a86d15f9389855e610e3f20719
+ed2604405b131568434fd1eeda76b399cebb11f7e8e5139fc35d5d26d3c3f26a
+5e8be542cc23e75ff8acf91f128f84bf63502b1b71417ea3cf7fd6a579d41f64
+7b99d79484c0c65ce3087f2e9aad8cc6c4f94920fe666051554940c19f1a0489
+3b30cf946400205f2b2f8915565e6592d04e185609499a09a5de22b14767a077
+f502dd6d3a277362cb691be0649c516791b3088aceb9d1f73f4bb92a89a0d7cd
+1460c4524f7dea141edfb2a0551b78ca86c5c4ad0bd0e6fb42c39dd3bbec4e7d
+e56831bd5cd815dad40385db3b070e8b1229094363d68c98196229491c7d5d8d
+f596930ecc6335dde0ebbb19f499f78b76f2f8b68baa65069d7ca6a35fbe87cb
+f71518ccf3888c156df9e87e4c206f6878e0eacde55fe46f5710764d2c51375e
+8ccaa6a2e8f65d27d6c87fba296ebc389e09d8f197461d593bf925df6da4fb1f
+63758f9801f44d84543fd75cf2c0fb6670e49c945a4472bf1274371e2dd96635
+e0a7635ad2914a6977eaca6a2f76853fbc0caadb2fa1c30c02286594cbe73f2f
+565b38ff71a259fa0a72abd94a4b3161f5247afb127ba01a4d6553658fc3b027
+dae412d46e4ddf17094eeab7fd8245c72bce4d4aea22f10d7c0b3db43d7b4926
+a3137e9adbd528421b906fcf15605dfc911b10aa229dca9b32e7b05087100d41
+55c775660ec7c9afdaa8dc038b95a56682b0d8d65d0227a8035876c9493ae252
+dfa0c0de2512b7335c0fb6c932b3dc2cf8f1bf98aac9a6a78c49a95d8f9e90e1
+b927d2c31f572620d68c4d23c76d1bd556ed896a6cf1c5064fbffacd0a062ff3
+1e0df1c59cfeab0a153f1c985d82bd5840f2708a1c4ac3d572940ba3ec951d9a
+b08774d397ce8a4b07299076c051a5e8dfc829984284801166dcf00be3f7c74d
+a928e59c5e493d9e17cc1f4718a2b74074d3e8ec7c7def5912a51b0e965924b0
+f16fee8bc08d0dbb92657aa171c3c8b81d95f956f50f791833e380f574ef39dd
+58f28934797d3959dc81021ecec4a875661bb4c1593cb1d8e376ce47ffae1cbe
+d376717bf6f7d7c65c06ce83b6bb82d2f22cee5d131703d70a0764ca29f3ce67
+aadafb220d404c02175e1c2105fd101acf68d3ec53a5c08b08d43c24b98a7c9a
+ae585d320aabd47a9518f126ab436c1850cf92ac9ceb08e68755618487a08fb3
+e91ebd9c6b2c21493b1f0842d625293f04ac6c341f337b44786250e5cf8753fc
+cc9237aed850839e080800048c5dde441ff1c3068f3b5b3f3f1827db51da0ac6
+e7bdb6e3fdfa771f11a658fcdaab2d5420ac1d085cb93775017eb0d737129dbd
+58c75ed8a5642407281829f36029220613ebedf9a9286eecf3f905e8808b7568
+52cc53414581802ed503b9772e1856a4ac5677cae4a5f3adfc1ddaffdff764e3
+721ec43116b244b3bd3d3f8ace0485cdd4c9c683e301bf9bd874b64a55b0bb30
+216b5555437a0c3e5d04432816b8b34ffe6c8ceaccba7874f7b7688ddaeec501
+4a5830fa033c41a38e7771e6adf0dd5c915fdc3a26a79e2f281a2f6ae52ee8dc
+250f8f7e407ac1169acf8073f01ce469d6cb0f2ad34ba6b019a197d2de7e0197
+55de7336d8a7fdf2f12eac7ff222f2b5034144744d2c17f9867333fe574f5d56
+3bb13d7b632f76f578a258d6156e10db32cd067dd7cf0378ee510bff135b773d
+5e499c88b88716576c796297570de6853349c2420ef8941d9844a66d377bd62e
+6353b6376adab3a2f5705bae7572bcd04707db7384176b314df1f0e04b537817
+34e5d6697d582ea2156779bd3d4d0753919e813e241005e316775d5363fa11c4
+11d34d6ffb43e9a1fa942a0cd243ca989b3a2e078e0f0018f75a4b9d778655e2
+568bed538fec55ad6169789af5765f9cb5bf9724b95822d494cbdec197752695
+b623be5d19be720248a8af7ff82c01228af7b80881d021ec4061e44a77bb4bb8
+f2538ba565eeef3b0c9d33e7323d02826ba070581128a8a88a965b7bd4c3307f
+802729352bcafa8d1be270c66bd8d4104f64595425d54a253aface7393b38292
+89876ee8c4dc68ce9737f860b93af00492084e90babaf598d485caf52874c71f
+92c87955b824c2a90133dc23886d47cc00a020f7162b3d828483ed5e84a63ced
+597af93bf3dc6ef759bfc789b7191b1f85b0157c75dfb06850a25262562c63ad
+68c239ac3207edca48a2e5e85aebca0cf967fbf3e5bc15ddad88dbcbf29c6cbc
+3f859a8f5547c9d6feef8a442b13adec51a359ae1a96a228b1333c3aada420bd
+0da15f6ef82ee61deb830791ded6b39c1dd4bb9694bdcd7d96e537ae31886cd2
+bfb398de8bbb7a2cda318fe2ed2a697c65acca7dbfe2d94cf0f8e203f8eeae04
+11f5bbee2ad3f494ff972d66bfc5d071bdc298914ad262f66584593f97987c5e
+028004a8d55282d9747b9b9916ab9c751ed74649f322057bd17c2ee038071cc1
+8000376d3a8783f5feed3edfd5f3ad939a554008d35503c5e88ac79e1b5cc02f
+0a22d449895700fd524c05ddada2124fa67511ecd5cd8369acd50a701b5e8b97
+2fa30adc805057a6bc136eabbb641930af9966ff031ce18f0e4e3b74c6505336
+8dcd980030819922ff14d39ce1840b4c277208e3b30bf0561b4d718ede704319
+564c4f1723d9c4a28d2642917eb405fff05c8fe40961116c9f2f5eb5175383a3
+7b633a5f719cee38b51425452fe1c6ce1999ef380bbfacb210c9cdf63198b130
+c97bcb8a01368d58f0e89f5908a8c29c3582e2ac5ccffc952a6b8795d41395a0
+4d6e89f59064daceb600d7c2d3a2604b7000f43b429a14b319bd29cf649f6285
+c9cd0bbeb69987a3591a26b5b00fc9e37e51879bab73742c5173156a1d0d45b6
+4021d9678b277be25b78e37fa2b14f7fb452543410715ace27f327f582101a8a
+f531314deffc9628e739572cc20973fa44c3b8f3d0ea7e2cb38bb63165f3645f
+83037353b43f006e06667eeac43dcadd31a86c947fb5b3a11a91f236b1da7c70
+8466570258257bde1e209527b160a3a2858a1ff1b5a0195ffee1b6c8ece838c2
+d5ec22cc75eca9e78532c2dd3f5d7aa510f860d98c750ff85d7d2be44a3437cd
+7da684ebde2ab077fb6254b7317853ca437df157831702357947b963ffb1ab07
+fd5c98bb9349bf20f3e897084db97fb89084e44a4e6bdd0b14ed1fad7867af6a
+68c0dd14ec491bb2888858764c7444ac3dfddc0b64069afbb927367fc45d6610
+e554d738f218435f04388cdd33bb0bea9ec565912b4d88290774a5943134bbde
+4b201449131007bffc7bea5f4c4d6fc3458bca377c4140c1fe866dfb9cd0afe4
+785f555f2ce1ab8b350296798b36f79075c20b638c925fe2e62726c429318f43
+eb64cad2abee45c1140d7ac35b445c6fe417dbda825d7e802cbeab0047c33813
+d2c4d5bdd2a4ccc92142821bba8bcd707e8fca0a843259b840f764867560067f
+5cad094d025366fb7839c8288a647f9b5c37e7d1746bfd222fd2a8f284b8e87b
+f2874c0e99aa2797396db7914de4433a5120dd58b1c1dea20bc3968849a6fefa
+df1368fc7221f09548e0fab582b4651a26657c46aeab9f6ed046cd6faf9725d8
+4b0841bb0cef5a22b668dece9be75989ecd547d0f0eb1260649b89e52469ce5c
+e8a21336d1da8ae11c0d5119d5fa296f7374735012b5fa44636d50a24396d950
+2df83f1538d33fe9e269ebc183cda71a4fa032fcd2aba8bab74f0701f199e5f1
+9e0633f1f967b6227cf979b7ea9dd4f7c824b2b954a327d3e9385d2e3f42230e
+a6546777e0ef24e96f81aa448dcb4cf3fe1175ca62e3dc6b0072c7cd0a19d0fa
+3608c98a437a8c7ba08cf1969fd16c6d66826e97fcb1320937f0814b1c545b80
+b09a7d5d0fd9baa4af25abbfa062f13b365b6c37e9bc8013eca2931d040f5fcd
+f7afd5792136746cbaca8b4b6a6ba738acc6056cd7e2c73cca86eec5ad3b90e6
+4a0c81d44759ab1f0980bb643f55c815cd1c4226e50ddf803ab24cdb88805ec7
+1217923f008761c6b378caeed57a6625eb8caf2f6dfc5421d1550339cae12a35
+4b85d443057100f79fa7d6b93f1958dde59682f5c03161d8d1823011cc07f12a
+fcb16988586c2d668fbecc8d0a6983f2d915a6d33a7b76560e6d07fa937a275e
+2a0d22bb347608bf9f7eebdba423a165162099a92726b534d4de58d0551ee94e
+c49a2833bd967444e40188c2f81ca2bfde624cc374f941a4db96acd5352eccd1
+d5d1d4f1d3b710342dea285a218dece493e093c1d5ef16af45bd697de25e9c74
+080686daf64e595f1a780581e96a8b04e6be213624f1d15f8581fe47f9cac19a
+bcee2016bce1e757bd60e62f51c7b6e7c252571fbdc4da467b521b5f10acbd5d
+33a390ba52ae77c0f63d0e157eafc78c7cb3a20f9bb7feb8655c2ace11ab6397
+d3a60e610ca7a18534b5bed4af3d77ca49fefb28209a44cc6b3b216ec0414831
+693a5601536a4f639344ccdba96afbb1b6d7a6dfa494e34865e09438b90e8095
+9b7173505db9ebcd2768d2f1fe8401b729a7a75e05e1ae1bcaa828e11dc322eb
+3473fe2cd133da1e8acc53f6834f61fef69d2b63b58f4ef2d11479b9f86d343c
+0a7951a51082f85946d4c5ba7e9550e14616a8b6e75ad9a9d48b84446606d962
+71d263eedbc41ef680406616f8cf0cdec152bb4140733386236838cbc79f3923
+1e90a3672ea6beb34f028a1c5214e04f14e488706dc5c500b90262d42edc5dc5
+989f9da0554f8cdd6b17023bbe1a9afe20c4254e08e19de7dcc3fbe6fd23f953
+ad74777d5429b358fdcd26810412e8dd309a8bb898ff2363ec0c57ebe465ed66
+64e4cd1d75ee734b753b3d96e945f6f35019df70ba6242a47e3979a8799f5c9a
+b7d1995020ce2783d49f5ec27ee1fb5056509253e1cb686202b6e2884080ffc9
+61b21246e41b130cfa55232e8db130d02e433367779e4296acb09e33c79ec63b
+f080c8f2e054445e9e28fb040082554128b33c00ff34c3b24bd6614fca37b2c0
+4a2dc6622072f90f8ed92660106c946780df304c358388faa2569384a64ee35b
+3feb3459884ce2304e0caa9a5f2c1d9139382ff5511fdeb1ccfb45dd21254226
+7eff339c10f8c7bfeaed8fda8b9d4d4c4fc2f67b028fedba4d009e89bf2547c2
+ed7e64e6e8add8b47b898f67863faa525de45db8d22a358559a1c80f2c443bf1
+516564504807edacf89a7ec75a4ea28830a6cd3b95d5d1fcd0326967feb0f6bd
+d8ea6e2ccdf7c111874916eaf9ecce714820e71114fb9bc8b07f841c8495b7a4
+6e05eaa1f5406264b8b22ba01b6157dda454cf67e280011a19139bd336374f39
+6410c9af9f5abd276c38aaeaa934873a4e9c8207965cfdd638ebcbfe48fe986f
+73c6e796d7c52adaba71f2896d3227ffec8dd8e4b4162935ae3318ff2be42740
+90fb13662345a470f79ace020440cc5da2d4f53a10dc774b58f736d22619e6b7
+4e4a86d2f389a4f12c6a44711cd2e4c7e9225729969e4336be722c732c40e6f9
+54feaad06129f2096b0fdadf6f61f2cc7729d5f5150357cba639d0067533495a
+951f18226caff04d6ba82ade3f387cd8e083185c48b549f12d671b379acc6c25
+a137ec45bef3c48aa422ccfe478f3896680734ecf936c315feb867fb9cf5562b
+6ad44c4f635c7f62bf874732141b786f7d2f1779f268ca1c2969dd458bedb460
+2c2ebae64160065209511684001777b244db33dfbd218969539ee9f20b465290
+3edc9e2c4b133bf9f48d5dc7de97a9fa9d8e1f49244e2156a19e07861c6bd240
+2d79a44a3b704f1bfe2a2f307002eae72e0e531408947eaf99370f379b3e7214
+dd93f9db4eaadd5cb57db41565af696ce376ad0820bb259342ff57ae3e8796c9
+f657229552036f1b5f391a19eb4ebfd03845dd303ad93d8bf541d5eadbfcd558
+94ba212f979b5000e3eb6b6a79361be43c363e1854eeda975df15aa2550c9d75
+aa0401b0e47e2e79715566a9d057a6836bcba15b38595502bf1bb6218c14cb1c
+7320d58d3a26a7b1c2596af2632e2da5ff7c157b6df5e6036674010ee306d070
+a26613b2d7b1c6fce6ff37da1b68fe331e084707cd2330a4daf602d51e265a56
+bd34df805ec9a598451fa89f8d2f1c3c6b084966f09ea175a11ec63aa39e7ccc
+5a7df3de860cd82efee6909b357d0a0726b1c376883236ea2409458242c3c9fd
+edc83d54e065ac19f4f090ae78e742ffa82fd6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR17
+%!PS-AdobeFont-1.1: CMR17 1.0
+%%CreationDate: 1991 Aug 20 16:38:24
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR17) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR17 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 173 /Omega put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 46 /period put
+dup 48 /zero put
+dup 50 /two put
+dup 69 /E put
+dup 80 /P put
+dup 97 /a put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 108 /l put
+dup 109 /m put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 118 /v put
+dup 120 /x put
+readonly def
+/FontBBox{-33 -250 945 749}readonly def
+/UniqueXX 5000795 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be356c29c3aec91ef17f5d31183b1e489f1fa
+559a6693fbdd04d4f7e99886d8cb7cca13d4aa9ceb34a708af22e69ccef0e504
+c3997075243585edf60b6447c8d01cffb04b6e3ddbaa7da5891286861322a795
+e9d990fd56af2f5c2b35801a0b07874e4ac3170481d232e150443253c92a8b05
+513d4a4154a99d91f629ccd30376500f5d16aaa9b203bad6350e4b19424c0e33
+75f2949bc1927a6f6221252f8a96618e646aa1b0810753c98becc26b37837775
+24bca72b818d314074c1c91f4e1f4148d3d703d12d179ee6970bd55d04aa9a9d
+97f63f2c7dbd129ec2ed3ba5f8080270ea5854ea165dbcc061e2f47f1aaf0997
+2ac9a689a2a9620b91b53f6b5092884372f5f7afca495f331138d85a97c5bb83
+d8072dc88010fc89108b60bc06d4f93c722e8908d7ce3c1ea3c70e9e65edd769
+7db17ce0e012ad37d4030f33d30a73fd655b7a2e572f3378ac933dd75082f2f1
+68702be19bc60cef6bd5f0ada180d21408c04b7f7db9b6dbaefe09e809a80ddf
+a5366d10930d3e68ca53e4721ff525853f4c784f2c2c3aa0129a34d9df00debc
+ae4037e4c0fbdce3989f35964b4c07e7817b805bfe8c15f0c0ebf226cff606b6
+2954f0f42dff8c214a6537ab666d25389c44db7b5866440bbfc137712bcdcc89
+c68cd1adfd85648b1ed29bfb45a564b02172137feef782d604e0d7e1f1737c96
+719cca9e4b9dfdc87e5999b886a15ac572183df8607ecfab5eeafed9f2798b3b
+db56dc26f8b6f000eb0ecf24341c969953e317cb01bf72bf002c07632b5195a2
+8995c0b23034671dd2ff7f0334745a5d09646bb6027b54034f376bea19419a61
+757e497a619513e955d2550a1e22208ff446f974f02c629d4eec9342cac41e24
+3eda835485be27f1d1a6f2be3ac82262b74d067752a8dc602ec14c9f3007faa7
+c3db96201a742d9df127da560c6d8562103d07478718f7ceb6cf2247fbdefd09
+808d23b830f69c66d0677d461ecbf887b320eaec5f62361adbf2b417d43d1561
+067c47e86b95ee6277f1743e38c9fcd6930b0817b3a3143ad8547488f6c19d0d
+aeb6f080eeb3029f3e376a343d562f84dc1c2bde1c5b48de85bb131f2cb3d30c
+1f5dd12da32bebce08d24ab963f5fcb6c2c958732800acb02b2d192b4dc40ea8
+6281f0ac70582dfb94503b948b787fecb251f8cf5c407bf6612d4194803a2f79
+a8f63caab8c713648e9090e20e03f1c72626e32259cecca27d23cf8f466c25ae
+7aaf48103c01b361cf1b57a3da02885a4b99b048184a82b9f614f5b663a6a5da
+16552c042a0728d69c45f91b9314c7b6ed1653eb130171637f951dc3b0b2a858
+29c09dd4e65cfef25511cf11f031428ec2608c29c45dfc4a5b8539177599e55d
+18185697adea617b77dd577eeb7f444aa7f5474660bb1c6c3954f2aafa21db54
+4ad0225c4fed3b602a4c5412007a7f0d0911be8653a250f3d98a12a546f38a62
+3a8c24e3ea5aa369866d1d7479d38910e26c3d15353dccd0f441cba4cfed0c44
+c709144b276a47aff03f677ba1022c372c031a9d287d42c44c208c8f00d17d82
+49ea07b693db6e739281693b70e3d158b3283f314fba4bba747522ca64b07ba0
+fdb0655cba0677ec7199c26e828abeb789bad4b22741d7b758659f47346ee35a
+52a9b7eab032fb7330ad0f2f1449fbcc738b58a9b14e3d2cf8ae17a14a17bb64
+1933c42864de23333323f5415ea53ea522a914b42fc8be9c0d9e0617dfeb9c78
+4850bd27b519144fa5e055f192b3c6053a05d9129671ef4f75695566d2e92f54
+919d847d6a1a9f914c4615ec52075b48d58d146ad5943b2dad199a743b1bfb78
+b9f9a4e4dd56bc53101e06416383b230ac5090bc2d0ff4028136cb1b040409ac
+66ccf7633ecca3e1210882649648a9dec29972fb8724fb29f389e80e97c5bb14
+184d865b86a04829914dee28430fa49989f7f4edd9057e1a5e5bc2a696fb583b
+980a54cdf37b5c6df3b370b693b75e0f399e9b22adc325bb9f027928e6eddb48
+2614351d6b7654c26bdd6a636afdc29005bab0b8732e2a11f648d9e9032c2be1
+097b87b14966bc16ec70497c6c422c167dd276b048eab723d0c2b2f09f71e738
+e5d9922e147c455f198e197d77ea696b3b862d7c112e950ece69beebe656cab0
+eefc7da54c4be774bac4e55ac2262c4fe8e26c3f2567d5621b3b451d6aa34b07
+2a5924de4a70d56c43af8f6655cb3e694097f6aad342703dc5bcd52fe2f1d9b8
+ee21363f7c2c05db83a7909295a2b013be484316e61e39f0696a05164226a65c
+caf15110487885f99bd38305d8a8b42ab5ec8c7e3ba3515ce562dce8283f31b8
+dfb5e885e6ed8354360033a87d9d58e93580d2bfd2bc8aa906dc4f95fbf3845e
+e97a54e3f9d9d134ae8d5404fccb509ae017c702c9b265cd2e732b12ba303871
+48e73572c6c1ff9289935782f100192e32f4a992e97afad8af7303b6cda5f553
+f36d13a0ae6d57d3dddba0c76af979b56902af7bddfa8e9c8a53a6f7d2d9b55d
+c376665e3571ab76cefc8d4e1d25af3c3c3e23953935a87da8bf441f5b63a9a2
+0552ff80ebccf79710583442b7d5cee218e41f55f5dae4274174ab0109c197c2
+22298793e5dbe4630e89ac1120df968f1b26971e838c11c8191d824668018c9d
+f7d900e9cf443965b02a8bb5ed7dca0195b4c8d063541dd0a926a29c67d2e1c2
+c3f4c56d034049be373ffba723979372f17379348cf92622df188ba8edd695be
+459deb3db225cce1ef06d5cf523bb5f83e089eab2ab867ace30ef7955efc12ae
+8fd1e4c085685e39ba38b91787c786a11fd13ccdde24af4a21ed8c0e36c5259e
+2c9a360e3f7575198733719d7a8305cd4a07f49a3a3e1074dc1a491eb9ff2a57
+4949cd085d3d065080060aa56c84ece3598e8ed0a7a9f1010cbaf59c34343c81
+872d966ee78b02f134ccf5b89da0190772ead2f32ce2a58fa4b93e5614c51aee
+6edb0afa1e08936950e164d125d7ba1b91d3453d606545ca25597ad942298e72
+d2c93e46573cef4fcd086f9b4a8488dfd13e5f97a1bf67dbd4c83421d32c6c00
+2b15c38b857f13582b403d10e0e1bc3f8921e9be91397f742cdf061d7e457846
+5e3294fcdf3535e32414ea07523710dd885e93bfa89cf908a8cda9befddfd67d
+9423504695d20c0ca9f7dac23b1bc28884d4ccd12563f4ae6995466ffc6e1461
+63e7947f032099dc754c9e12381d85e0d1a11953fa6cc2be65b79fce6504d352
+7954fcd96b98b35bd518fef2c03023cc191192cf220379381c60599880d841ee
+6052864b75a79103092ef48539248e11630bdbe2eb280642b807de69a0bedace
+4502fc6d9b27cfa82d53bb7ea3e618c5fd435ae1a840491cc186939060dd8e30
+ffe827ab742547baac633ba0ce59526fecfa7dda870459567f75de55c053e897
+77c904842202f6afab5352bef4c877e8b6c41cd57a4c85e918eb72e74bb0df65
+af2d7d9b601603d18cc9c0d3c227dd768e65878deaa42aff14d38b8e9a633fa1
+a7d36acf5335965ebf199862c716a6a13aa59d0bb9796097f4a1662ec061de16
+ce823d71ac176920d7a52c1bb79fe7aad939f02fc95ba01f1e4b02ce3b99a456
+7321ad25858f0dad5d186ee17a8d4236d7e0fc3651c6f0058a12db14704676da
+04d00192378964b9e4220700cf517573946845ac0e0fa086124c575454ea306b
+f58c9c88255393ffe5f2aa7a67f675f0ea348398ff3012493758dc09f294a05d
+0e500153a8a79f45adc0a53c45bcb71ba1f1de07713ddce733f17f4105a32817
+e57dc32677546598ab095a4b1a3907fdaca3e6c5dc87c7627785d8bea05f00c6
+73d9de031f8a9d3f967ca74230d6f1eac0adf1b90eac17ebd51a48d9abf8c470
+d3005856e8a1df517cf996732156b68ae64fe6804e5e732b3a166d554ea6f694
+572c6214bd6f03ab08fd4890fbf2a504a3ed4de7b3a386adb2bf41c5ec67d8f3
+f587fda2b7d3d0366128cddbabd369426be981adac193aa439f4cfd75b3a61f6
+da1179f83a3b04b4266d6849475521562f92c61dc47d2cc6f4a6e2c8891fb490
+f6e8df76811026a04517a9227629bbc8a921fdddbf04886ca44973790bec5f43
+02cbce2cc16a0739a1f85e4907fbf70ac16b4d9f394e08c98df27c68d3438146
+72f2df113723667cc4d0078dac075e8c506e47fa925399c265c64e55efa2f852
+d877e2183e583099b68b2b8035817ca4e7c1bd0aca2d86f7b2c2911c478c4018
+23b686bb8cdcb83fbb6d54987324ea0ee5f491a9b6b376b03c320bdf182a2719
+ccfe6637cef46ffeee9d5162d67ca0042cb54d72b5cb4af3eb85e30dac8c87cf
+d0eda19653125c3e4393dba90a97aae952048b84e792f018ede314fc95be1caf
+8bd9ffe2a7c4d3490acb276830d34ad6cdd6b0aa1beb409681552fff5dd4e9df
+14ba83d230f92ad34cc55d337f8607074f37393694874ef413eb1d40b3283e5c
+126ea9e3c547f16b89a06580d5233924ce4f71311d47ce81a87ae798db2a51a6
+db7809d47dce47edd79cc667866665f3957fbc1df43664608271cb542f182c6d
+cc8d814892d5b499f3c902dba68878b012aa94b5fd98097237fbe874f59a457c
+a39fe2aa9926092e649954ac0fc4d44de7e460da3db6ef781d9dc95bba59d9a0
+e0c049c4173ae9b97cd573c7e821f35ca5169889b3f2cc3abad2f0b563adc50b
+f90df55c16512d2342202f749cd2d29319d12f719d83959f5757a2d7820afefd
+254fc84fdb04d084a36ecff8cdf668f71e4273d8078e0159663cfdb458762f4a
+d95d42755560db868babe79b085729c85fc86cda0032c3f498dc04214921b645
+acb505e609758a20eb403290e8f502b50c0e2652090e2e8c941d7fcb3555006a
+e5ccb547068769ae8959b6362c66d74da029a60bcc3a9d484990abe467809e34
+66fa79f7536dd6c089586f76de2a3f4e5aec01c17b5b81cc9ec65bb716bceebf
+323906430ba6d9853761abbd3293b3ea24aa51c183564a789a7428a238736510
+a78952996b98a0a010d9760819183afe71bc1eae16ea350fc7792d4914b92d42
+2f3e233086acfa3daca5168e714fbc2bc89ff2c6877f9422bee02a2b8ccd3e6e
+a0e911dedf83ee54951c1d1e6cbb4d82bd7fb43ca611829494300fcbdc1bafcb
+64f4151a00313e2e133b571cf9449a2a95ff4e3361125243b8877a49cde38cd7
+4a2d112e468f9ff10207867cffde5581201f3590c9d9811fe0893148a37af6f8
+3baf64f498e4e1a8ebb00f44f18bb2af29f44136eea57d1433456fad8360f0f6
+1dbee1fefddd1a0e867d6d3fd261af15f7c9882334ee20f9f801903c0cdffb24
+db85515a27393fbcfbde40ccec1b1a12303398cb19cf7238c2dffd462aa71584
+b957b3049508c015bcacfa7393a674a2dd250fd6adca6e72faa582d3e108386e
+92b2e821405afcea8665b4bcf5e2d99482599e06d27095d51d33b51ddf77cc54
+5b585afde666f328d168c059948b28f2756498fd90ddcaac827048d535e7406f
+cf050a2c71d02e3dd39b43d18b25f7b983e0bedb240a0c6a7372939aedc0e047
+31b1529e73ec42c43d7ca102ae04580e632bd2749b9b095b59c9b63544e5f180
+59fa87cac030625bdc2c6d16ddc2243ccdb104dd9424fc1737bb0565198db2be
+23b4f4258081ab7deb67396903739c02d3c17f8b5f42125146985ccc4c1ae5fa
+8c0b7d26d77022c7cd6cea91dad31331a7cf902b16da828bb6527fc160eb57f7
+6adb321a0a24a3cedee47a5b5c0e2f6bb70393b2463dcdcb7dfb683e3fd13742
+3fd244524360fb544c0bc6acd4f178edf29424a4bdeb054add5a0c31d5bd0cb5
+1c5a3b233c695a6a27c841f59299700e23cd3836367cd6f07c16d0b37a200651
+eca63f2ee6862cc6c8cc16dba3c323c5d4995eefa018857e8bbc2e060ae45e63
+810274ab7ad153327f1bc5d1bf8449c9eb0e16af8642e8f1bd77553b2bacca9a
+29d1398eff437b0b38f15e3057b5f695327fe8927c4b7f0f9e984a526b18b940
+854b32707e85587bfc2099bb6f5ed08bb97617053f306c4bd72d3f304db8f236
+6491d19dbc7a5aa81b8fb570acd3f8433cf62004ff96e9cabdb2833caea71f99
+8749b7ab38752f1ecf2b277ba7dd0da1466e2451361ee05ee43479062da92246
+9ae042d05b4040f319bd8ab68bc79cee7fe07689f37a439861b77f20eb11b892
+0e18276b22bac126a2b307596ed3f06f4d224c4de0f1a05b344ff6cf0688398e
+b3d0253f9175fa1bfe35f60fb4bbf1066586919d707bd8c90ad1cf2713a360fa
+ac9ef9fe338d288c41f16c55faeab6e85dd059c2388165e3108e1fa5c917dae2
+9a9a52d7395e95e5783d9af881f5c7f68e15203a3c72b0919520d7cd5c4d01c6
+71fc19016ad8b4e3dfe096727dba0558a45243590d9f63a47de4e0f18702e183
+5ebd3881493de2fbd3d8e668f6189b1642db5dd161a5ed65f9ec959ff5f1d95d
+f9f15f808c1edebc025581a61e4e0d88c1b4110ee27a021f447c85e9d5c0284c
+b571a69c3b93e9b9833f4dd45b142d1c613e137246312e9ad918730e976c3fb1
+b45b423a10833afc97adaff5a3b88d359d8e4007ac033a1704b372f0509bd528
+97729a087b10c0dc8322512d86f2662194bd5e77f34312d347266e52b49952a3
+02bea98d5be33781be0ce7a0c11459f5c9009ff646a9f669e502136c2d9c0a45
+beef1d2ccdb11d0c01af6be5c79daa0e9c734f32750aa9a2241639979cba1602
+2e9ab6a62bceade470e0468e968459d270bc58f67a2e772c8019acff4ef14ee4
+8e093749d571e885dd33d63cb632e0b44bc0a778604c541cf542d5661a3947b7
+d3a4533d56a0abc2c7b46bb9a5936f8f3447b29238b039358b337d48bd621775
+6aaecbd3be1f88c787e4e9cba8d4ad65e419a0216bcb0e28c4985c7f4be7dbd7
+1e1636b9cf5cb632e6141cce4bb736080f2e19d7a4086cb62d1448a6b13373ad
+c4b3fc287a79f4e3be1886e5ef08ba4516587981424f2e02d844e7e791d51772
+c557b39463842e3e6e37a69491e76e471762f58933423c13ccfb9809bf7c571d
+1f365183b98fe585f78357603e754443e35aa11f6aceb10d7e6bcdab874feec6
+26f09831f3b6a1811dc85c5f02305e525fdcbc572995b8f5aadcb3fe06552bf6
+b3923c8be671a1bdfc95e623fcc580a5ea348bcf27c782c6898aa55c21afc330
+662b11aaa326641e69e6a7a5f5ec391d3fb7d7e6498ac04d8cca10cc6592ed09
+99614a34ee2b700966e8abcde96f40854c33cb5d01a135b224495495f3657c19
+3f77236e5adba40cccb8bbbe05ddf9385cd76858093727712ef75c95b4844fa2
+0bd0a8648de84fca21793066a114a198f448464d75c119b0b8a9d7714eda449c
+5e2a4818da42e79bcc4ebdb5851ba35d904d79d121ce7ee4c6fefb8041d25266
+999f5ae725fb02a02fec829a48c9a8efa32548e538cedb2648de2cfad4bbdd95
+e518ebb9feb62dc69f0f0651b2e94138b96f1dd5f70f47196f1368ac750eae2b
+36cd2da9dcc590537878d384436656d891efe0d9c07a4d66e6bd821625636a58
+97a346216ab42e8143bcd3bee6f75c5a28c6c7ac322801cee5616c9018885724
+b87a9762500f5bc4e152099b55bcbb017f1f1f41f93aaf75f032a774e240584d
+d284b84e7ae862fcfcf05d5e0f00962cc3fd8f3ff79b39b9b809184dd1f5eff8
+f7e0c4f26e24a5e4a84d93d9f841cdd3d3d5d00640f7934c969441cd0eb39afa
+b42f75acc6fe4007a00dbd8b93da675a0ab5163ef83a6f44090418677de36f12
+3bc1b18a2b3b47cd9683273de995689e7346b922ac6008ea82afd6899ca8de4d
+1e8d75d09b533ec3a44c87c7407d061db34fda9779f46d89a31993908711b13e
+768eb9c043eff65d20a28178114e92c29bc678ae498851be738b512d22272866
+0e7424f7d08e61c3b372d608c8e05db6d11a45d56da450154fbee3c7edc8bb7a
+33a80159e480881045ba359fb236ba614077eaf50cfec466bf26a3003d2c577d
+aaf25ebdcd1df4edbb696eca84f40e31ce30d5978b686bccb1ec2a32ecb62b2f
+d535998ea35afe52440e3aaa49b7fb6049739a342ebc86e2cf6039ed6e4aa7a5
+6f7452c1a2b3dc0aa6178a3f3faa32d081a0ce3e9bfaf4e10ff4110884451468
+475301fe58c9d6993b1273d89f50768e82a8e67ceb3edb4aeaa45c2c34c936f6
+39581c0cc621be2efe2a08a0a9c4bbd934da9ec2142784d7f752e6f72dd84a20
+b5c7bb4c0842602d20b7b395d28be986194a93b8c49bbefdf3a403557fdd4da8
+7618f22fb03d9faa81806a084b1f06a2eeb4f928acf206aa4d35d57aa6e0d100
+819b73022229969b1e4b7e997677a94a9b87a9d6ab7204749d7d22343fab4047
+e202ab361de954533f58dc137c25994ec5f08b0de69c99c3aa7dcb62b7772c37
+81a95b774acbd292f60ea78d64588582a95e1f71376cee6d3a6e47502b630063
+f995b4223cd7b8f0c7aeb6b6a0e4550861ca3b7b0e8ad6c2fe6fcc54a111081e
+3cf6e120752577d46d0f4e32c227647f20311ff38091bbfc5ce6663358698621
+d3b5d0e168da932fd462afb9c48ed399fff097d32c711d28986b714cb60ec43e
+b83be4801bd5628c66359ef368ee76698db74c177b6bcdb6a086f791352897c5
+c60e4d1c76272475ad9b9d5e9fd53c1802e37fa8f421b9ad6794e97595a8a0d6
+9ed6844b8659e7755698d427f58f0ce6dc2a5778bac3391f9d91eefa6dd99635
+2709047d017af15afaa6ea88f1b5bf9e1bbcc16f86d9682effb3de2359e55898
+c3994ad32ccb2bd0b3d91361dca1d9963387e3bbd296b39f8df58eb88d9af1bf
+c5148f47827d1cb70df8d8143dd186da79f0ebe50c3e68d472c2e89c27c5785d
+3b547edb2836d75747a723151c32d949a0a7fac307b972a1587c3490723265ab
+8101f024ed4cac24b64d214e09e5b0c44b88673fa7cbae38494cdb1e80bbc997
+68542af5d021d6f2d30c33658f6bf022e43b676109f6bd69980afb391f2d28d3
+c3d02ec45ad25e34455e1117f34d3a3d56d36b9c688701246219b13f0602f075
+641afc211eb2c5e02e13efbff8cff9f4fdbb1d7b424d9467a44e80390e490139
+e59e31533e929cb150e9c82d61d5c449994bf5552febb6a639a2c346199cb33f
+71c8dcbd1d50077dbaac87eef5c1ff55b8ce4f9660581fdd73c285274e4bc1c5
+7db44fe3a08b51d3f36e98601ddbdd80e79e9583542344ba22902ad30136de3a
+06a64bfae04e6f43a3c93a4e72cbd3d4439f497fd5cb951ee2e398c78007036d
+9e220d6089d78a6af12030c8d934ee06d1c21fe9d0a27dc4141075b748d771d5
+624f2ab09a3fe3bb9d466a8265777ae05579332afeaef0b9e8ab38174c0caafb
+9586284f9e9718ac517e8059170da1e92ca8cfafd898c70614
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+TeXDict begin 39158280 55380996 1000 8000 8000 (cvs_examples.dvi)
+ at start /Fa 135[820 1[820 5[820 1[820 2[820 4[820 1[820
+820 1[820 50[820 46[{}10 1594.02 /CMTT12 rf /Fb 135[523
+1[523 5[523 4[523 9[523 28[523 16[523 51[{}7 996.264
+/CMTT9 rf /Fc 173[875 82[{}1 1212.12 /MSBM10 rf /Fd 198[406
+406 406 406 406 406 406 406 406 406 48[{}10 664.176 /CMR6
+rf /Fe 133[496 589 3[651 403 496 511 1[620 620 681 991
+310 558 2[620 558 1[558 1[558 1[620 97[{}17 1212.12 /CMTI10
+rf /Ff 165[673 7[572 1145 27[808 808 808 808 22[909 909
+4[640 640 18[556 556{}13 1212.12 /CMEX10 rf /Fg 130[581
+1[581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+1[581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 33[{}91 1106.96 /CMTT10
+rf /Fh 134[540 540 740 540 569 398 404 401 1[569 512
+569 853 284 2[284 569 512 313 455 569 455 569 512 12[740
+3[697 796 5[370 3[697 782 2[768 13[512 4[284 341 33[597
+11[{}33 996.264 /CMR9 rf /Fi 134[381 117[424 3[{}2 664.176
+/CMSY6 rf /Fj 134[418 117[470 2[732{}3 885.568 /CMSY8
+rf /Fk 133[438 465 530 1[458 1[340 3[474 6[320 542 1[452
+1[484 11[774 3[548 6[904 77[{}13 885.568 /CMMI8 rf /Fl
+199[470 470 470 1[470 470 470 470 470 4[732 32[680 10[{}10
+885.568 /CMR8 rf /Fm 133[564 594 693 1[588 694 438 568
+1[541 610 1[728 1064 1[631 1[418 1[578 593 564 631 525
+1[641 10[707 1[708 1[920 1[778 1[974 1176 1[1029 3[953
+6[644 1[943 606 1[337 337 24[754 7[691 530 1[730 707
+4[530 1[539 1[686 775 11[{}41 1212.12 /CMMI10 rf /Fn
+135[684 1[684 5[684 1[684 2[684 4[684 1[684 684 1[684
+97[{}9 1328.35 /CMTT12 rf /Fo 135[789 1079 1[830 581
+589 610 1[830 747 830 1245 415 2[415 830 747 1[682 830
+664 1[726 10[1128 2[830 1115 1[1021 2[1418 5[1175 1[981
+1145 1079 1062 1128 6[415 6[747 747 747 2[415 34[872
+11[{}35 1328.35 /CMBX12 rf /Fp 135[539 5[1010 6[606 337
+49[673 35[943 4[606 12[943 337 943{}10 1212.12 /CMSY10
+rf /Fq 137[743 743 716 555 730 1[676 770 743 905 622
+2[366 1[777 1[676 757 716 703 743 16[899 2[1199 3[492
+27[458 45[{}21 1212.12 /CMCSC10 rf /Fr 134[636 636 636
+636 636 636 636 636 636 636 636 636 636 636 636 636 636
+636 636 636 636 636 636 636 636 1[636 4[636 636 636 636
+636 636 636 636 636 636 636 636 636 636 636 1[636 636
+1[636 636 636 636 636 636 636 3[636 7[636 636 1[636 636
+636 636 636 636 1[636 5[636 37[{}61 1212.12 /CMTT10 rf
+/Fs 134[946 946 1295 946 996 697 707 732 1[996 897 996
+1494 498 1[548 498 1[897 548 818 996 797 996 872 14[1338
+1[1225 3[1077 2[668 2[1127 1177 1374 1295 1275 1354 12[897
+897 897 897 49[{}36 1594.02 /CMBX12 rf /Ft 133[539 640
+640 875 640 673 471 478 475 640 673 606 673 1010 337
+640 370 337 673 606 370 539 673 539 673 606 1[337 1[337
+1[337 3[1246 909 909 875 673 892 943 825 943 909 1111
+758 943 623 438 909 951 791 825 926 875 859 909 3[943
+1[337 337 606 606 606 606 606 606 606 606 606 606 606
+337 404 337 943 1[471 471 337 1[1010 22[1010 673 673
+707 875 8[1010 1[{}80 1212.12 /CMR10 rf /Fu 134[736 736
+1007 736 774 542 550 574 1[774 697 774 1162 387 1[426
+387 1[697 426 639 774 620 774 678 13[774 1045 1[953 1[1091
+1323 838 2[529 2[877 916 1069 1007 992 1054 7[697 697
+697 697 697 697 697 697 697 697 48[{}45 1212.12 /CMBX10
+rf /Fv 134[631 1[863 598 697 432 1[548 1[664 664 731
+1063 332 2[399 1[598 399 598 664 598 598 664 13[731 4[966
+1[815 8[930 1[966 52[731 12[{}25 1328.35 /CMTI12 rf /Fw
+138[723 1[513 506 1[723 1[723 1084 361 2[361 723 2[578
+723 1[723 650 11[975 1[723 957 4[1192 813 3[975 4[939
+1[975 8[650 2[650 2[650 650 650 1[361 434 45[{}28 1328.35
+/CMR12 rf /Fx 137[1173 2[876 3[1216 9[1067 1194 1131
+99[{}6 1912.83 /CMCSC10 rf /Fy 135[927 1[927 2[687 677
+1[977 877 1[1477 478 4[877 527 777 3[877 16[1202 10[1202
+18[877 1[877 1[478 46[{}17 1912.83 /CMR17 rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 8000dpi
+TeXDict begin
+%%PaperSize: A4
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop Black Black Black Black 15752 16715 a Fy(Example)577
+b(Programs)i(for)g Fx(cv)-43 b(odes)25743 19150 y Fy(v2.2.0)17257
+24337 y Fw(Alan)434 b(C.)g(Hindmarsh)f(and)g(Radu)h(Serban)16542
+25886 y Fv(Center)463 b(for)i(Applie)-66 b(d)464 b(Scienti\257c)d
+(Computing)16374 27436 y(L)-66 b(awr)g(enc)g(e)463 b(Livermor)-66
+b(e)463 b(National)h(L)-66 b(ab)g(or)g(atory)25020 30752
+y Fw(April)433 b(2005)22816 75587 y(UCRL-SM-208115)p
+Black Black eop
+%%Page: 2 2
+2 1 bop Black Black Black Black 19458 16671 a Fu(DISCLAIMER)0
+19505 y Ft(This)416 b(do)34 b(cumen)-34 b(t)417 b(w)-34
+b(as)417 b(prepared)f(as)g(an)g(accoun)-34 b(t)417 b(of)f(w)-34
+b(ork)416 b(sp)34 b(onsored)416 b(b)-34 b(y)416 b(an)h(agency)e(of)h
+(the)g(United)0 21010 y(States)449 b(Go)-34 b(v)g(ernmen)g(t.)671
+b(Neither)448 b(the)g(United)g(States)h(Go)-34 b(v)g(ernmen)g(t)450
+b(nor)e(the)g(Univ)-34 b(ersit)g(y)448 b(of)g(Califor-)0
+22516 y(nia)508 b(nor)g(an)-34 b(y)509 b(of)f(their)g(emplo)-34
+b(y)g(ees,)533 b(mak)-34 b(es)508 b(an)-34 b(y)509 b(w)-34
+b(arran)g(t)g(y)-101 b(,)535 b(express)507 b(or)h(implied,)533
+b(or)508 b(assumes)g(an)-34 b(y)0 24021 y(legal)376 b(liabilit)-34
+b(y)376 b(or)h(resp)34 b(onsibilit)-34 b(y)376 b(for)h(the)h(accuracy)
+-101 b(,)381 b(completeness,)h(or)376 b(usefulness)i(of)f(an)-34
+b(y)378 b(informa-)0 25527 y(tion,)395 b(apparatus,)i(pro)34
+b(duct,)396 b(or)c(pro)34 b(cess)393 b(disclosed,)i(or)e(represen)-34
+b(ts)393 b(that)h(its)g(use)f(w)-34 b(ould)394 b(not)g(infringe)0
+27032 y(priv)-67 b(ately)308 b(o)-34 b(wned)311 b(righ)-34
+b(ts.)507 b(Reference)309 b(herein)g(to)g(an)-34 b(y)310
+b(sp)34 b(eci\257c)309 b(commercial)e(pro)34 b(duct,)329
+b(pro)34 b(cess,)327 b(or)309 b(ser-)0 28537 y(vice)369
+b(b)-34 b(y)371 b(trade)g(name,)377 b(trademark,)g(man)-34
+b(ufacturer,)378 b(or)370 b(otherwise,)377 b(do)34 b(es)370
+b(not)i(necessarily)d(constitute)0 30043 y(or)448 b(imply)g(its)h
+(endorsemen)-34 b(t,)460 b(recommendation,)g(or)448 b(fa)-34
+b(v)g(oring)449 b(b)-34 b(y)449 b(the)g(United)g(States)h(Go)-34
+b(v)g(ernmen)g(t)0 31548 y(or)543 b(the)g(Univ)-34 b(ersit)g(y)543
+b(of)g(California.)955 b(The)543 b(views)f(and)i(opinions)g(of)f
+(authors)h(expressed)e(herein)h(do)0 33054 y(not)416
+b(necessarily)e(state)h(or)g(re\260ect)g(those)g(of)h(the)f(United)h
+(States)g(Go)-34 b(v)g(ernmen)g(t)416 b(or)f(the)h(Univ)-34
+b(ersit)g(y)415 b(of)0 34559 y(California,)404 b(and)h(shall)f(not)h(b)
+34 b(e)404 b(used)g(for)h(adv)-34 b(ertising)404 b(or)g(pro)34
+b(duct)405 b(endorsemen)-34 b(t)405 b(purp)34 b(oses.)1882
+39076 y(This)456 b(researc)-34 b(h)455 b(w)-34 b(as)457
+b(supp)34 b(orted)457 b(under)f(the)g(auspices)g(of)g(the)g(U.S.)g
+(Departmen)-34 b(t)456 b(of)g(Energy)g(b)-34 b(y)0 40581
+y(the)431 b(Univ)-34 b(ersit)g(y)430 b(of)h(California,)437
+b(La)-34 b(wrence)430 b(Liv)-34 b(ermore)428 b(National)j(Lab)34
+b(oratory)430 b(under)h(con)-34 b(tract)431 b(No.)0 42087
+y(W-7405-Eng-48.)p Black Black 7988 81856 a(Appro)-34
+b(v)g(ed)405 b(for)g(public)f(release;)f(further)h(dissemination)h
+(unlimited)p Black Black eop
+%%Page: 3 3
+3 2 bop Black Black 4000 7638 a Fs(Con)-50 b(ten)g(ts)4000
+10356 y Fu(1)1121 b(In)-39 b(tro)39 b(duction)37801 b(1)4000
+13073 y(2)1121 b(F)-116 b(orw)-39 b(ard)465 b(sensitivit)-39
+b(y)465 b(analysis)f(example)g(problems)17098 b(5)5818
+14579 y Ft(2.1)1239 b(A)404 b(serial)f(nonsti\256)i(example:)538
+b Fr(cvfnx)1086 b Ft(.)606 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p Black
+2445 w(5)p Black 5818 16084 a(2.2)1239 b(A)404 b(serial)f(dense)i
+(example:)538 b Fr(cvfdx)1186 b Ft(.)606 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p
+Black 1839 w(10)p Black 5818 17590 a(2.3)1239 b(An)405
+b(SPGMR)g(parallel)e(example)g(with)i(user)f(preconditioner:)539
+b Fr(pvfkx)501 b Ft(.)606 b(.)f(.)h(.)g(.)g(.)f(.)h(.)p
+Black 1839 w(17)p Black 4000 20307 a Fu(3)1121 b(Adjoin)-39
+b(t)466 b(sensitivit)-39 b(y)465 b(analysis)f(example)g(problems)16811
+b(25)5818 21813 y Ft(3.1)1239 b(A)404 b(serial)f(dense)i(example:)538
+b Fr(cvadx)1186 b Ft(.)606 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p
+Black 1839 w(25)p Black 5818 23318 a(3.2)1239 b(A)404
+b(parallel)f(nonsti\256)j(example:)537 b Fr(pvanx)891
+b Ft(.)605 b(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)p Black 1839 w(29)p Black
+5818 24824 a(3.3)1239 b(An)405 b(SPGMR)g(parallel)e(example)g(using)i
+(the)f(CVBBDPRE)g(mo)34 b(dule:)539 b Fr(pvakx)713 b
+Ft(.)606 b(.)f(.)h(.)p Black 1839 w(32)p Black 4000 27541
+a Fu(4)1121 b(P)-39 b(arallel)465 b(tests)36856 b(36)4000
+30259 y(References)40061 b(38)4000 32976 y(A)764 b(Listing)466
+b(of)e Fr(cvfnx.c)34108 b Fu(39)4000 35694 y(B)826 b(Listing)466
+b(of)e Fr(cvfdx.c)34108 b Fu(49)4000 38412 y(C)811 b(Listing)466
+b(of)e Fr(pvfkx.c)34108 b Fu(61)4000 41129 y(D)749 b(listing)466
+b(of)e Fr(cvadx.c)34559 b Fu(86)4000 43847 y(E)902 b(Listing)466
+b(of)e Fr(pvanx.c)34108 b Fu(97)4000 46564 y(F)941 b(Listing)466
+b(of)e Fr(pvakx.c)33411 b Fu(110)p Black Black eop
+%%Page: 4 4
+4 3 bop Black Black Black Black eop
+%%Page: 1 5
+1 4 bop Black Black 4000 7638 a Fs(1)1793 b(In)-50 b(tro)50
+b(duction)4000 10356 y Ft(This)459 b(rep)34 b(ort)459
+b(is)f(in)-34 b(tended)460 b(to)f(serv)-34 b(e)458 b(as)h(a)g
+(companion)g(do)34 b(cumen)-34 b(t)460 b(to)f(the)g(User)g(Do)34
+b(cumen)-34 b(tation)460 b(of)4000 11861 y Fq(cv)-27
+b(odes)448 b Ft([2].)666 b(It)446 b(pro)-34 b(vides)447
+b(details,)457 b(with)448 b(listings,)457 b(on)447 b(the)g(example)f
+(programs)h(supplied)h(with)g(the)4000 13367 y Fq(cv)-27
+b(odes)405 b Ft(distribution)h(pac)-34 b(k)-67 b(age.)5882
+14878 y(The)344 b Fq(cv)-27 b(ode)345 b Ft(distribution)g(con)-34
+b(tains)345 b(examples)f(of)g(the)g(follo)-34 b(wing)345
+b(t)-34 b(yp)34 b(es:)508 b(serial)343 b(and)i(parallel)e(ex-)4000
+16384 y(amples)320 b(for)g(IVP)g(in)-34 b(tegration,)337
+b(serial)319 b(and)i(parallel)d(examples)i(for)g(forw)-34
+b(ard)321 b(sensitivit)-34 b(y)320 b(analysis,)336 b(and)4000
+17889 y(serial)465 b(and)h(parallel)f(examples)g(for)h(adjoin)-34
+b(t)467 b(sensitivit)-34 b(y)466 b(analysis.)723 b(These)466
+b(examples,)480 b(summarized)4000 19395 y(b)34 b(elo)-34
+b(w,)404 b(are)g(shortly)g(describ)34 b(ed)403 b(next.)p
+Black Black 9531 21150 36938 45 v 9509 22655 45 1506
+v 13598 22655 V 14285 22204 a(Serial)g(examples)p 35401
+22655 V 13611 w(P)-34 b(arallel)403 b(examples)p 46447
+22655 V 9531 22700 36938 45 v 9509 24205 45 1506 v 10195
+23754 a(IVP)p 13598 24205 V 1918 w Fr(cvbx)i(cvdx)h(cvdemd)g(cvkx)f
+(cvkxb)h(cvdemk)p 35401 24205 V 1331 w(pvkx)f(pvkxb)h(pvfnx)p
+46447 24205 V 9531 24250 36938 45 v 9509 25755 45 1506
+v 10195 25303 a Ft(FSA)p 13598 25755 V 1717 w Fr(cvfdx)f(cvfkx)h(cvfnx)
+p 35401 25755 V 11452 w(pvfnx)f(pvfkx)p 46447 25755 V
+9531 25799 36938 45 v 9509 27305 45 1506 v 10195 26853
+a Ft(ASA)p 13598 27305 V 1599 w Fr(cvabx)g(cvadx)h(cvakx)g(cvakxb)p
+35401 27305 V 7230 w(pvanx)f(pvakx)p 46447 27305 V 9531
+27349 36938 45 v 4000 31260 a Ft(Supplied)375 b(in)f(the)h
+Fr(sundials/cvodes/examples)p 27735 31260 382 45 v 467
+w(ser)g Ft(directory)e(are)h(the)g(follo)-34 b(wing)375
+b(thirteen)g(serial)4000 32766 y(examples)404 b(\(using)h(the)f
+Fq(nvector)p 20130 32766 403 45 v 485 w(serial)h Ft(mo)34
+b(dule\):)p Black 5818 35630 a Fp(\262)p Black 606 w
+Fr(cvdx)406 b Ft(solv)-34 b(es)404 b(a)g(c)-34 b(hemical)403
+b(kinetics)h(problem)g(consisting)h(of)f(three)g(rate)g(equations.)7030
+37646 y(This)438 b(program)g(solv)-34 b(es)437 b(the)h(problem)f(with)h
+(the)g(BDF)f(metho)34 b(d)438 b(and)g(Newton)h(iteration,)445
+b(with)7030 39151 y(the)573 b Fq(cvdense)h Ft(linear)d(solv)-34
+b(er)572 b(and)h(a)f(user-supplied)h(Jacobian)g(routine.)1043
+b(It)573 b(also)f(uses)g(the)7030 40657 y(ro)34 b(ot\257nding)406
+b(feature)e(of)h Fq(cv)-27 b(odes)p Ft(.)p Black 5818
+43183 a Fp(\262)p Black 606 w Fr(cvbx)406 b Ft(solv)-34
+b(es)404 b(the)g(semi-discrete)f(form)i(of)f(an)h(adv)-34
+b(ection-di\256usion)405 b(equation)g(in)f(2-D.)7030
+45198 y(This)438 b(program)g(solv)-34 b(es)437 b(the)h(problem)f(with)h
+(the)g(BDF)f(metho)34 b(d)438 b(and)g(Newton)h(iteration,)445
+b(with)7030 46704 y(the)405 b Fq(cvband)h Ft(linear)d(solv)-34
+b(er)403 b(and)i(a)f(user-supplied)h(Jacobian)g(routine.)p
+Black 5818 49230 a Fp(\262)p Black 606 w Fr(cvkx)322
+b Ft(solv)-34 b(es)320 b(the)h(semi-discrete)e(form)h(of)h(a)f(t)-34
+b(w)g(o-sp)34 b(ecies)321 b(diurnal)g(kinetics)f(adv)-34
+b(ection-di\256usion)7030 50735 y(PDE)404 b(system)g(in)g(2-D.)7030
+52751 y(The)344 b(problem)f(is)g(solv)-34 b(ed)343 b(with)h(the)g
+(BDF/GMRES)g(metho)34 b(d)344 b(\(i.e.)517 b(using)344
+b(the)g Fq(cvspgmr)g Ft(linear)7030 54257 y(solv)-34
+b(er\))527 b(and)g(the)g(blo)34 b(c)-34 b(k-diagonal)527
+b(part)g(of)h(the)f(Newton)g(matrix)g(as)g(a)f(left)h(preconditioner.)
+7030 55762 y(A)457 b(cop)-34 b(y)457 b(of)g(the)g(blo)34
+b(c)-34 b(k-diagonal)457 b(part)g(of)g(the)g(Jacobian)g(is)f(sa)-34
+b(v)g(ed)458 b(and)f(conditionally)g(reused)7030 57268
+y(within)405 b(the)g(preconditioner)f(setup)h(routine.)p
+Black 5818 59794 a Fp(\262)p Black 606 w Fr(cvkxb)314
+b Ft(solv)-34 b(es)311 b(the)h(same)g(problem)f(as)h
+Fr(cvkx)p Ft(,)331 b(with)313 b(the)f(BDF/GMRES)g(metho)34
+b(d)313 b(and)f(a)g(banded)7030 61299 y(preconditioner,)404
+b(generated)g(b)-34 b(y)405 b(di\256erence)e(quotien)-34
+b(ts,)405 b(using)g(the)f(mo)34 b(dule)405 b Fq(cvbandpre)p
+Ft(.)7030 63315 y(The)g(problem)f(is)g(solv)-34 b(ed)404
+b(t)-34 b(wice:)539 b(with)405 b(preconditioning)g(on)f(the)h(left,)f
+(then)g(on)h(the)g(righ)-34 b(t.)p Black 5818 65841 a
+Fp(\262)p Black 606 w Fr(cvdxe)436 b Ft(is)d(the)i(same)f(as)g
+Fr(cvdx)h Ft(but)g(demonstrates)g(the)f(user-supplied)h(error)d(w)-34
+b(eigh)g(t)436 b(function)7030 67346 y(feature)405 b(of)f
+Fq(cv)-27 b(odes)p Ft(.)p Black 5818 69872 a Fp(\262)p
+Black 606 w Fr(cvdemd)406 b Ft(is)e(a)g(demonstration)i(program)e(for)g
+Fq(cv)-27 b(odes)406 b Ft(with)f(direct)e(linear)h(solv)-34
+b(ers.)7030 71888 y(Tw)g(o)466 b(separate)e(problems)h(are)f(solv)-34
+b(ed)464 b(using)h(b)34 b(oth)466 b(the)f(Adams)g(and)g(BDF)f(linear)g
+(m)-34 b(ultistep)7030 73394 y(metho)34 b(ds)405 b(in)f(com)-34
+b(bination)406 b(with)f(functional)g(and)g(Newton)g(iterations.)7030
+75409 y(The)447 b(\257rst)g(problem)f(is)g(the)h(V)-101
+b(an)446 b(der)g(P)-34 b(ol)446 b(oscillator)g(for)g(whic)-34
+b(h)447 b(the)g(Newton)g(iteration)f(cases)7030 76915
+y(use)541 b(the)h(follo)-34 b(wing)541 b(t)-34 b(yp)34
+b(es)541 b(of)h(Jacobian)f(appro)-34 b(ximations:)813
+b(\(1\))542 b(dense)f(\(user-supplied\),)576 b(\(2\))7030
+78420 y(dense)477 b(\(di\256erence)e(quotien)-34 b(t)477
+b(appro)-34 b(ximation\),)495 b(\(3\))477 b(diagonal)g(appro)-34
+b(ximation.)755 b(The)477 b(second)p Black 27697 81741
+a(1)p Black eop
+%%Page: 2 6
+2 5 bop Black Black 3030 7638 a Ft(problem)455 b(is)g(a)g(linear)f(ODE)
+g(with)i(a)f(banded)h(lo)-34 b(w)g(er)455 b(triangular)g(matrix)g
+(deriv)-34 b(ed)454 b(from)h(a)g(2-D)3030 9143 y(adv)-34
+b(ection)511 b(PDE.)f(In)g(this)h(case,)536 b(the)511
+b(Newton)g(iteration)g(cases)f(use)g(the)h(follo)-34
+b(wing)511 b(t)-34 b(yp)34 b(es)511 b(of)3030 10649 y(Jacobian)410
+b(appro)-34 b(ximation:)549 b(\(1\))410 b(banded)h(\(user-supplied\),)h
+(\(2\))e(banded)g(\(di\256erence)f(quotien)-34 b(t)3030
+12154 y(appro)g(ximation\),)406 b(\(3\))e(diagonal)h(appro)-34
+b(ximation.)p Black 1818 14666 a Fp(\262)p Black 606
+w Fr(cvdemk)406 b Ft(is)e(a)g(demonstration)i(program)e(for)g
+Fq(cv)-27 b(odes)406 b Ft(with)f(the)f(Krylo)-34 b(v)403
+b(linear)h(solv)-34 b(er.)3030 16674 y(This)304 b(program)f(solv)-34
+b(es)303 b(a)g(sti\256)g(ODE)g(system)g(that)h(arises)f(from)g(a)g
+(system)h(of)f(partial)g(di\256eren)-34 b(tial)3030 18180
+y(equations.)496 b(The)277 b(PDE)e(system)g(is)h(a)f(six-sp)34
+b(ecies)275 b(fo)34 b(o)g(d)275 b(w)-34 b(eb)277 b(p)34
+b(opulation)276 b(mo)34 b(del,)301 b(with)276 b(predator-)3030
+19685 y(prey)404 b(in)-34 b(teraction)405 b(and)g(di\256usion)f(on)h
+(the)f(unit)h(square)f(in)g(t)-34 b(w)g(o)406 b(dimensions.)3030
+21694 y(The)535 b(ODE)g(system)f(is)h(solv)-34 b(ed)535
+b(using)g(Newton)h(iteration)e(and)i(the)f Fq(cvspgmr)h
+Ft(linear)e(solv)-34 b(er)3030 23199 y(\(scaled)404 b(preconditioned)h
+(GMRES\).)3030 25208 y(The)503 b(preconditioner)f(matrix)f(used)i(is)e
+(the)i(pro)34 b(duct)502 b(of)h(t)-34 b(w)g(o)503 b(matrices:)734
+b(\(1\))502 b(a)g(matrix,)526 b(only)3030 26713 y(implicitly)378
+b(de\257ned,)385 b(based)379 b(on)g(a)g(\257xed)g(n)-34
+b(um)g(b)34 b(er)380 b(of)f(Gauss-Seidel)h(iterations)f(using)g(the)g
+(di\256u-)3030 28219 y(sion)458 b(terms)f(only;)484 b(and)458
+b(\(2\))h(a)e(blo)34 b(c)-34 b(k-diagonal)458 b(matrix)f(based)h(on)g
+(the)g(partial)f(deriv)-67 b(ativ)-34 b(es)457 b(of)3030
+29724 y(the)405 b(in)-34 b(teraction)405 b(terms)f(only)-101
+b(,)403 b(using)i(blo)34 b(c)-34 b(k-grouping.)3030 31733
+y(F)-101 b(our)284 b(di\256eren)-34 b(t)283 b(runs)g(are)g(made)g(for)g
+(this)g(problem.)498 b(The)284 b(pro)34 b(duct)283 b(preconditoner)h
+(is)e(applied)i(on)3030 33238 y(the)358 b(left)e(and)i(on)f(the)g(righ)
+-34 b(t.)524 b(In)357 b(eac)-34 b(h)357 b(case,)365 b(b)34
+b(oth)358 b(the)f(mo)34 b(di\257ed)357 b(and)h(classical)d(Gram-Sc)-34
+b(hmidt)3030 34744 y(options)405 b(are)f(tested.)p Black
+1818 37255 a Fp(\262)p Black 606 w Fr(cvfdx)i Ft(solv)-34
+b(es)404 b(a)g(c)-34 b(hemical)404 b(kinetics)f(problem)h(consisting)h
+(of)f(three)g(rate)g(equations.)3030 39264 y Fq(cv)-27
+b(odes)339 b Ft(computes)g(b)34 b(oth)338 b(its)g(solution)g(and)h
+(solution)f(sensitivities)f(with)i(resp)34 b(ect)337
+b(to)h(the)g(three)3030 40769 y(reaction)541 b(rate)h(constan)-34
+b(ts)543 b(app)34 b(earing)541 b(in)h(the)g(mo)34 b(del.)950
+b(This)541 b(program)h(solv)-34 b(es)541 b(the)h(problem)3030
+42275 y(with)389 b(the)e(BDF)g(metho)34 b(d,)391 b(Newton)e(iteration)e
+(with)i(the)e Fq(cvdense)i Ft(linear)e(solv)-34 b(er,)389
+b(and)g(a)e(user-)3030 43780 y(supplied)354 b(Jacobian)f(routine.)522
+b(It)353 b(also)g(uses)g(the)g(user-supplied)h(error)e(w)-34
+b(eigh)g(t)354 b(function)h(feature)3030 45286 y(of)405
+b Fq(cv)-27 b(odes)p Ft(.)p Black 1818 47797 a Fp(\262)p
+Black 606 w Fr(cvfkx)271 b Ft(solv)-34 b(es)270 b(the)f(semi-discrete)g
+(form)h(of)f(a)h(t)-34 b(w)g(o-sp)34 b(ecies)270 b(diurnal)g(kinetics)f
+(adv)-34 b(ection-di\256usion)3030 49303 y(PDE)404 b(system)g(in)g(2-D)
+h(space.)3030 51311 y Fq(cv)-27 b(odes)407 b Ft(computes)f(b)34
+b(oth)406 b(its)f(solution)h(and)h(solution)f(sensitivities)e(with)i
+(resp)34 b(ect)405 b(to)h(t)-34 b(w)g(o)407 b(pa-)3030
+52817 y(rameters)269 b(a\256ecting)h(the)g(kinetic)e(rate)i(terms.)493
+b(The)270 b(problem)g(is)f(solv)-34 b(ed)269 b(with)h(the)g(BDF/GMRES)
+3030 54322 y(metho)34 b(d)531 b(\(i.e.)916 b(using)530
+b(the)h Fq(cvspgmr)f Ft(linear)g(solv)-34 b(er\))529
+b(and)i(the)g(blo)34 b(c)-34 b(k-diagonal)530 b(part)g(of)h(the)3030
+55827 y(Newton)405 b(matrix)f(as)g(a)h(left)f(preconditioner.)p
+Black 1818 58339 a Fp(\262)p Black 606 w Fr(cvfnx)i Ft(solv)-34
+b(es)404 b(the)g(semi-discrete)g(form)g(of)h(an)f(adv)-34
+b(ection-di\256usion)405 b(equation)g(in)f(1-D.)3030
+60348 y Fq(cv)-27 b(odes)424 b Ft(computes)f(b)34 b(oth)423
+b(its)f(solution)h(and)g(solution)f(sensitivities)g(with)h(resp)34
+b(ect)421 b(to)i(the)f(ad-)3030 61853 y(v)-34 b(ection)470
+b(and)g(di\256usion)h(co)34 b(e\261cien)-34 b(ts.)734
+b(This)471 b(program)e(solv)-34 b(es)470 b(the)g(problem)f(with)i(the)f
+(option)3030 63358 y(for)405 b(nonsti\256)g(systems,)f(i.e.)537
+b(Adams)405 b(metho)34 b(d)405 b(and)g(functional)g(iteration.)p
+Black 1818 65870 a Fp(\262)p Black 606 w Fr(cvabx)h Ft(solv)-34
+b(es)404 b(the)g(semi-discrete)g(form)g(of)h(an)f(adv)-34
+b(ection-di\256usion)405 b(equation)g(in)f(2-D.)3030
+67878 y(The)460 b(adjoin)-34 b(t)461 b(capabilit)-34
+b(y)459 b(of)g Fq(cv)-27 b(odes)460 b Ft(is)f(used)h(to)f(compute)h
+(gradien)-34 b(ts)460 b(of)f(the)h(a)-34 b(v)g(erage)459
+b(\(o)-34 b(v)g(er)3030 69384 y(b)34 b(oth)579 b(time)f(and)h(space\))f
+(of)h(the)f(solution)h(with)g(resp)34 b(ect)578 b(to)g(the)g(initial)g
+(conditions.)1061 b(This)3030 70889 y(program)597 b(solv)-34
+b(es)596 b(b)34 b(oth)598 b(the)f(forw)-34 b(ard)598
+b(and)f(bac)-34 b(kw)g(ard)598 b(problems)f(with)g(the)g(BDF)g(metho)34
+b(d,)3030 72395 y(Newton)343 b(iteration)f(with)h(the)g
+Fq(cvband)g Ft(linear)f(solv)-34 b(er,)353 b(and)343
+b(user-supplied)g(Jacobian)f(routines.)p Black 1818 74906
+a Fp(\262)p Black 606 w Fr(cvadx)406 b Ft(solv)-34 b(es)404
+b(a)g(c)-34 b(hemical)404 b(kinetics)f(problem)h(consisting)h(of)f
+(three)g(rate)g(equations.)3030 76915 y(The)k(adjoin)-34
+b(t)409 b(capabilit)-34 b(y)408 b(of)g Fq(cv)-27 b(odes)409
+b Ft(is)e(used)h(to)g(compute)g(gradien)-34 b(ts)409
+b(of)e(a)h(functional)h(of)e(the)3030 78420 y(solution)541
+b(with)f(resp)34 b(ect)539 b(to)h(the)g(three)g(reaction)f(rate)h
+(constan)-34 b(ts)541 b(app)34 b(earing)540 b(in)g(the)g(mo)34
+b(del.)p Black 23697 81741 a(2)p Black eop
+%%Page: 3 7
+3 6 bop Black Black 7030 7638 a Ft(This)351 b(program)f(solv)-34
+b(es)350 b(b)34 b(oth)350 b(the)h(forw)-34 b(ard)351
+b(and)g(bac)-34 b(kw)g(ard)351 b(problems)f(with)h(the)f(BDF)g(metho)34
+b(d,)7030 9143 y(Newton)296 b(iteration)f(with)h(the)g
+Fq(cvdense)g Ft(linear)e(solv)-34 b(er,)316 b(and)296
+b(user-supplied)g(Jacobian)f(routines.)p Black 5818 11988
+a Fp(\262)p Black 606 w Fr(cvakx)608 b Ft(solv)-34 b(es)605
+b(a)h(sti\256)g(ODE)g(system)g(that)h(arises)e(from)h(a)g(system)g(of)g
+(partial)g(di\256eren)-34 b(tial)7030 13494 y(equations.)496
+b(The)277 b(PDE)e(system)g(is)h(a)f(six-sp)34 b(ecies)275
+b(fo)34 b(o)g(d)275 b(w)-34 b(eb)277 b(p)34 b(opulation)276
+b(mo)34 b(del,)301 b(with)276 b(predator-)7030 14999
+y(prey)404 b(in)-34 b(teraction)405 b(and)g(di\256usion)f(on)h(the)f
+(unit)h(square)f(in)g(t)-34 b(w)g(o)406 b(dimensions.)7030
+17175 y(The)460 b(adjoin)-34 b(t)461 b(capabilit)-34
+b(y)459 b(of)g Fq(cv)-27 b(odes)460 b Ft(is)f(used)h(to)f(compute)h
+(gradien)-34 b(ts)460 b(of)f(the)h(a)-34 b(v)g(erage)459
+b(\(o)-34 b(v)g(er)7030 18680 y(b)34 b(oth)493 b(time)e(and)i(space\))f
+(of)g(the)g(concen)-34 b(tration)492 b(of)g(a)g(selected)f(sp)34
+b(ecies)491 b(with)h(resp)34 b(ect)491 b(to)h(the)7030
+20185 y(initial)555 b(conditions)g(of)g(all)f(six)g(sp)34
+b(ecies.)990 b(Both)555 b(the)g(forw)-34 b(ard)555 b(and)h(bac)-34
+b(kw)g(ard)556 b(problems)e(are)7030 21691 y(solv)-34
+b(ed)349 b(with)h(the)g(BDF/GMRES)g(metho)34 b(d)349
+b(\(i.e.)520 b(using)350 b(the)f Fq(cvspgmr)h Ft(linear)f(solv)-34
+b(er\))349 b(and)g(the)7030 23196 y(blo)34 b(c)-34 b(k-diagonal)404
+b(part)h(of)g(the)f(Newton)h(matrix)f(as)g(a)g(left)h(preconditioner.)p
+Black 5818 26041 a Fp(\262)p Black 606 w Fr(cvakxb)344
+b Ft(solv)-34 b(es)341 b(the)g(same)g(problem)h(as)f
+Fr(cvakx)p Ft(,)355 b(but)343 b(computes)f(gradien)-34
+b(ts)342 b(of)f(the)h(a)-34 b(v)g(erage)341 b(o)-34 b(v)g(er)7030
+27547 y(space)448 b(at)g(the)g(\257nal)g(time)g(of)g(the)g(concen)-34
+b(tration)448 b(of)g(a)g(selected)f(sp)34 b(ecies)447
+b(with)h(resp)34 b(ect)447 b(to)h(the)7030 29052 y(initial)404
+b(conditions)h(of)f(all)g(six)g(sp)34 b(ecies.)4000 33915
+y(Supplied)402 b(in)f(the)g Fr(sundials/cvode/examples)p
+27179 33915 382 45 v 466 w(par)h Ft(directory)e(are)g(the)h(follo)-34
+b(wing)402 b(six)e(parallel)g(ex-)4000 35420 y(amples)k(\(using)h(the)g
+Fq(nvector)p 18952 35420 403 45 v 484 w(p)-81 b(arallel)406
+b Ft(mo)34 b(dule\):)p Black 5818 38265 a Fp(\262)p Black
+606 w Fr(pvnx)406 b Ft(solv)-34 b(es)404 b(the)g(semi-discrete)f(form)i
+(of)f(an)h(adv)-34 b(ection-di\256usion)405 b(equation)g(in)f(1-D.)7030
+40440 y(This)522 b(program)g(solv)-34 b(es)521 b(the)g(problem)h(with)g
+(the)g(option)g(for)f(nonsti\256)i(systems,)550 b(i.e.)889
+b(Adams)7030 41946 y(metho)34 b(d)405 b(and)g(functional)g(iteration.)p
+Black 5818 44791 a Fp(\262)p Black 606 w Fr(pvkx)h Ft(is)e(the)g
+(parallel)f(implemen)-34 b(tation)406 b(of)e Fr(cvkx)p
+Ft(.)p Black 5818 47636 a Fp(\262)p Black 606 w Fr(pvkxb)364
+b Ft(solv)-34 b(es)361 b(the)h(same)g(problem)f(as)h
+Fr(pvkx)p Ft(,)371 b(with)363 b(the)f(BDF/GMRES)g(metho)34
+b(d)362 b(and)h(a)e(blo)34 b(c)-34 b(k-)7030 49141 y(diagonal)376
+b(matrix)f(with)h(banded)g(blo)34 b(c)-34 b(ks)375 b(as)g(a)g
+(preconditioner,)381 b(generated)375 b(b)-34 b(y)376
+b(di\256erence)e(quo-)7030 50647 y(tien)-34 b(ts,)405
+b(using)g(the)f(mo)34 b(dule)404 b Fq(cvbbdpre)p Ft(.)p
+Black 5818 53492 a Fp(\262)p Black 606 w Fr(pvfnx)i Ft(is)e(the)h
+(parallel)e(v)-34 b(ersion)404 b(of)g Fr(cvfnx)p Ft(.)p
+Black 5818 56336 a Fp(\262)p Black 606 w Fr(pvfkx)i Ft(is)e(the)h
+(parallel)e(v)-34 b(ersion)404 b(of)g Fr(cvfkx)p Ft(.)p
+Black 5818 59181 a Fp(\262)p Black 606 w Fr(pvanx)i Ft(solv)-34
+b(es)404 b(the)g(semi-discrete)g(form)g(of)h(an)f(adv)-34
+b(ection-di\256usion)405 b(equation)g(in)f(1-D.)7030
+61357 y(The)496 b(adjoin)-34 b(t)497 b(capabilit)-34
+b(y)496 b(of)f Fq(cv)-27 b(odes)497 b Ft(is)e(used)h(to)f(compute)h
+(gradien)-34 b(ts)497 b(of)e(the)h(a)-34 b(v)g(erage)495
+b(o)-34 b(v)g(er)7030 62862 y(space)408 b(of)g(the)h(solution)f(at)h
+(the)f(\257nal)h(time)e(with)i(resp)34 b(ect)407 b(to)i(b)34
+b(oth)408 b(the)h(initial)e(conditions)i(and)7030 64368
+y(the)466 b(adv)-34 b(ection)466 b(and)g(di\256usion)g(co)34
+b(e\261cien)-34 b(ts)464 b(in)i(the)f(mo)34 b(del.)721
+b(This)466 b(program)g(solv)-34 b(es)464 b(b)34 b(oth)467
+b(the)7030 65873 y(forw)-34 b(ard)565 b(and)g(bac)-34
+b(kw)g(ard)565 b(problems)f(with)h(the)f(option)h(for)f(nonsti\256)h
+(systems,)604 b(i.e.)1017 b(Adams)7030 67378 y(metho)34
+b(d)405 b(and)g(functional)g(iteration.)p Black 5818
+70223 a Fp(\262)p Black 606 w Fr(pvakx)e Ft(solv)-34
+b(es)400 b(an)h(adjoin)-34 b(t)403 b(sensitivit)-34 b(y)400
+b(problem)h(for)g(an)g(adv)-34 b(ection-di\256usion)402
+b(PDE)f(in)f(2-D)h(or)7030 71729 y(3-D)483 b(using)h(the)g(BDF/GMRES)g
+(metho)34 b(d)484 b(and)g(the)g Fq(cvbbdpre)g Ft(preconditioner)f(mo)34
+b(dule)484 b(on)7030 73234 y(b)34 b(oth)405 b(the)g(forw)-34
+b(ard)405 b(and)g(bac)-34 b(kw)g(ard)405 b(phases.)7030
+75409 y(The)445 b(adjoin)-34 b(t)446 b(capabilit)-34
+b(y)444 b(of)g Fq(cv)-27 b(odes)445 b Ft(is)f(used)h(to)f(compute)h
+(the)f(gradien)-34 b(t)445 b(of)g(the)f(space-time)7030
+76915 y(a)-34 b(v)g(erage)628 b(of)g(the)g(squared)g(solution)h(norm)f
+(with)h(resp)34 b(ect)627 b(to)h(problem)g(parameters)g(whic)-34
+b(h)7030 78420 y(parametrize)404 b(a)g(distributed)h(v)-34
+b(olume)404 b(source.)p Black 27697 81741 a(3)p Black
+eop
+%%Page: 4 8
+4 7 bop Black Black 0 7638 a Ft(In)475 b(the)g(follo)-34
+b(wing)476 b(sections,)493 b(w)-34 b(e)475 b(giv)-34
+b(e)475 b(detailed)g(descriptions)g(of)g(some)g(\(but)i(not)e(all\))g
+(of)h(the)f(sensi-)0 9143 y(tivit)-34 b(y)424 b(analysis)f(examples.)
+597 b(W)-101 b(e)423 b(do)h(not)h(discuss)f(an)-34 b(y)424
+b(of)h(the)f(examples)f(for)h(IVP)f(in)-34 b(tegration.)598
+b(The)0 10649 y(in)-34 b(terested)413 b(reader)g(should)h(consult)f
+(the)h Fq(cv)-27 b(ode)414 b Ft(Examples)e(Do)34 b(cumen)-34
+b(t)414 b([1].)564 b(An)-34 b(y)414 b Fq(cv)-27 b(ode)414
+b Ft(problem)0 12154 y(will)448 b(w)-34 b(ork)449 b(with)h
+Fq(cv)-27 b(odes)450 b Ft(with)g(only)f(one)g(mo)34 b(di\257cation:)628
+b(the)450 b(main)f(program)g(should)h(include)e(the)0
+13660 y(header)404 b(\257le)g Fr(cvodes.h)j Ft(instead)e(of)f
+Fr(cvode.h)p Ft(.)1882 15165 y(The)525 b(App)34 b(endices)524
+b(con)-34 b(tain)525 b(complete)g(listings)f(of)h(the)f(examples)g
+(describ)34 b(ed)524 b(b)34 b(elo)-34 b(w.)899 b(W)-101
+b(e)524 b(also)0 16671 y(giv)-34 b(e)463 b(our)h(output)i(\257les)d
+(for)h(eac)-34 b(h)464 b(of)g(these)g(examples,)478 b(but)465
+b(users)e(should)i(b)34 b(e)464 b(cautioned)g(that)h(their)0
+18176 y(results)452 b(ma)-34 b(y)452 b(di\256er)f(sligh)-34
+b(tly)452 b(from)g(these.)681 b(Di\256erences)451 b(in)g(solution)i(v)
+-67 b(alues)451 b(ma)-34 b(y)452 b(di\256er)f(within)h(the)0
+19682 y(tolerances,)594 b(and)557 b(di\256erences)e(in)i(cum)-34
+b(ulativ)g(e)556 b(coun)-34 b(ters,)595 b(suc)-34 b(h)557
+b(as)g(n)-34 b(um)g(b)34 b(ers)557 b(of)g(steps)g(or)f(Newton)0
+21187 y(iterations,)361 b(ma)-34 b(y)351 b(di\256er)f(from)h(one)g(mac)
+-34 b(hine)351 b(en)-34 b(vironmen)g(t)351 b(to)h(another)f(b)-34
+b(y)351 b(as)g(m)-34 b(uc)g(h)352 b(as)e(10\045)h(to)g(20\045.)1882
+22693 y(The)441 b(\257nal)g(section)g(of)g(this)h(rep)34
+b(ort)440 b(describ)34 b(es)440 b(a)h(set)g(of)g(tests)g(done)h(with)f
+Fq(cv)-27 b(odes)442 b Ft(in)f(a)g(parallel)0 24198 y(en)-34
+b(vironmen)g(t)405 b(\(using)g Fq(nvector)p 15790 24198
+403 45 v 485 w(p)-81 b(arallel)p Ft(\))406 b(on)f(a)f(mo)34
+b(di\257cation)404 b(of)h(the)f Fr(pvkx)i Ft(example.)1882
+25704 y(In)451 b(the)h(descriptions)g(b)34 b(elo)-34
+b(w,)464 b(w)-34 b(e)452 b(mak)-34 b(e)451 b(frequen)-34
+b(t)453 b(references)d(to)i(the)g Fq(cv)-27 b(odes)453
+b Ft(User)e(Guide)h([2].)0 27209 y(All)373 b(citations)i(to)f(sp)34
+b(eci\257c)373 b(sections)h(\(e.g.)528 b Fp(x)p Ft(5.2\))374
+b(are)f(references)g(to)h(parts)h(of)f(that)h(user)f(guide,)380
+b(unless)0 28715 y(explicitly)403 b(stated)i(otherwise.)0
+31820 y Fu(Note)439 b Ft(The)i(examples)e(in)g(the)i
+Fq(cv)-27 b(odes)440 b Ft(distribution)h(w)-34 b(ere)440
+b(written)g(in)g(suc)-34 b(h)441 b(a)e(w)-34 b(a)g(y)441
+b(as)f(to)g(compile)0 33325 y(and)582 b(run)g(for)g(an)-34
+b(y)582 b(com)-34 b(bination)582 b(of)g(con\257guration)h(options)f
+(during)g(the)g(installation)g(of)g Fq(sundi-)0 34831
+y(als)496 b Ft(\(see)f Fp(x)p Ft(2\).)811 b(As)496 b(a)f(consequence,)
+517 b(they)496 b(con)-34 b(tain)496 b(p)34 b(ortions)495
+b(of)h(co)34 b(de)495 b(that)h(will)f(not)h(t)-34 b(ypically)494
+b(b)34 b(e)0 36336 y(presen)-34 b(t)472 b(in)f(a)g(user)g(program.)739
+b(F)-101 b(or)471 b(example,)487 b(all)470 b(example)h(programs)g(mak)
+-34 b(e)471 b(use)g(of)h(the)f(v)-67 b(ariables)0 37842
+y Fr(SUNDIALS)p 5164 37842 382 45 v 461 w(EXTENDED)p
+10713 37842 V 461 w(PRECISION)519 b Ft(and)d Fr(SUNDIALS)p
+24973 37842 V 461 w(DOUBLE)p 29250 37842 V 460 w(PRECISION)j
+Ft(to)d(test)g(if)g(the)g(solv)-34 b(er)515 b(li-)0 39347
+y(braries)341 b(w)-34 b(ere)342 b(built)g(in)g(extended-)g(or)g
+(double-precision)g(and)h(use)f(the)g(appropriate)g(con)-34
+b(v)g(ersion)342 b(sp)34 b(ec-)0 40853 y(i\257ers)489
+b(in)g Fr(printf)j Ft(functions.)795 b(Similarly)-101
+b(,)509 b(all)489 b(forw)-34 b(ard)491 b(sensitivit)-34
+b(y)489 b(examples)g(can)g(b)34 b(e)489 b(run)h(with)g(or)0
+42358 y(without)495 b(sensitivit)-34 b(y)492 b(computations)j(enabled)e
+(and,)515 b(in)493 b(the)h(former)e(case,)514 b(with)494
+b(v)-67 b(arious)492 b(com)-34 b(bina-)0 43864 y(tions)482
+b(of)g(metho)34 b(ds)483 b(and)g(error)d(con)-34 b(trol)482
+b(strategies.)772 b(This)482 b(is)g(ac)-34 b(hiev)g(ed)482
+b(in)f(these)h(example)g(through)0 45369 y(the)405 b(program)f(argumen)
+-34 b(ts.)p Black 23697 81741 a(4)p Black eop
+%%Page: 5 9
+5 8 bop Black Black 4000 7638 a Fs(2)1793 b(F)-149 b(orw)-50
+b(ard)598 b(sensitivit)-50 b(y)601 b(analysis)e(example)h(problems)4000
+10344 y Ft(F)-101 b(or)404 b(all)g(the)g(ab)34 b(o)-34
+b(v)g(e)404 b(examples,)g(an)-34 b(y)404 b(of)h(three)f(sensitivit)-34
+b(y)404 b(metho)34 b(ds)405 b(\()p Fr(CV)p 38193 10344
+382 45 v 459 w(SIMULTANEOUS)p Ft(,)4000 11849 y Fr(CV)p
+5348 11849 V 459 w(STAGGERED)p Ft(,)511 b(or)c Fr(CV)p
+15239 11849 V 459 w(STAGGERED1)p Ft(\))512 b(can)c(b)34
+b(e)508 b(used,)534 b(and)509 b(sensitivities)e(ma)-34
+b(y)508 b(b)34 b(e)508 b(included)g(in)g(the)4000 13355
+y(error)403 b(test)i(or)f(not)g(\(error)g(con)-34 b(trol)404
+b(set)h(on)f Fr(TRUE)i Ft(or)d Fr(FALSE)p Ft(,)j(resp)34
+b(ectiv)-34 b(ely\).)5882 14860 y(The)523 b(next)f(t)-34
+b(w)g(o)524 b(sections)e(describ)34 b(e)521 b(in)i(detail)f(a)g(serial)
+f(example)h(\()p Fr(cvfdx)p Ft(\))i(and)f(a)g(parallel)e(one)4000
+16366 y(\()p Fr(pvfkx)p Ft(\).)532 b(F)-101 b(or)379
+b(details)f(on)h(the)g(other)f(examples,)383 b(the)c(reader)f(is)g
+(directed)g(to)h(the)f(commen)-34 b(ts)380 b(in)e(their)4000
+17871 y(source)404 b(\257les.)4000 21102 y Fo(2.1)1495
+b(A)499 b(serial)g(nonsti\256)g(example:)665 b Fn(cvfnx)4000
+23391 y Ft(As)518 b(a)f(\257rst)h(example)f(of)h(using)g
+Fq(cv)-27 b(odes)519 b Ft(for)f(forw)-34 b(ard)519 b(sensitivit)-34
+b(y)517 b(analysis,)545 b(w)-34 b(e)518 b(treat)g(the)g(simple)4000
+24896 y(adv)-34 b(ection-di\256usion)405 b(equation)g(for)f
+Fm(u)337 b Ft(=)f Fm(u)p Ft(\()p Fm(t;)202 b(x)p Ft(\))22749
+27444 y Fm(@)67 b(u)p 22749 27985 1405 49 v 22877 29095
+a(@)g(t)24623 28264 y Ft(=)336 b Fm(q)26443 28446 y Fl(1)27102
+27444 y Fm(@)27813 27004 y Fl(2)28339 27444 y Fm(u)p
+27102 27985 1931 49 v 27103 29095 a(@)67 b(x)28507 28745
+y Fl(2)29435 28264 y Ft(+)269 b Fm(q)31188 28446 y Fl(2)31847
+27444 y Fm(@)67 b(u)p 31847 27985 1405 49 v 31848 29095
+a(@)g(x)50451 28264 y Ft(\(1\))4000 31171 y(for)419 b(0)361
+b Fp(\267)f Fm(t)h Fp(\267)g Ft(5)p Fm(;)1039 b Ft(0)361
+b Fp(\267)g Fm(x)f Fp(\267)h Ft(2,)422 b(and)d(sub)67
+b(ject)420 b(to)f(homogeneous)h(Diric)-34 b(hlet)418
+b(b)34 b(oundary)420 b(conditions)f(and)4000 32677 y(initial)404
+b(v)-67 b(alues)403 b(giv)-34 b(en)404 b(b)-34 b(y)21710
+35200 y Fm(u)p Ft(\()p Fm(t;)202 b Ft(0\))337 b(=)f(0)202
+b Fm(;)1414 b(u)p Ft(\()p Fm(t;)202 b Ft(2\))337 b(=)f(0)21455
+37166 y Fm(u)p Ft(\(0)p Fm(;)202 b(x)p Ft(\))337 b(=)f
+Fm(x)p Ft(\(2)270 b Fp(\241)f Fm(x)p Ft(\))p Fm(e)31525
+36665 y Fl(2)p Fk(x)32783 37166 y Fm(:)50451 36185 y
+Ft(\(2\))4000 39693 y(The)435 b(nominal)f(v)-67 b(alues)434
+b(of)g(the)h(problem)f(parameters)g(are)g Fm(q)32014
+39875 y Fl(1)32926 39693 y Ft(=)387 b(1)p Fm(:)p Ft(0)434
+b(and)h Fm(q)39167 39875 y Fl(2)40079 39693 y Ft(=)387
+b(0)p Fm(:)p Ft(5.)628 b(A)435 b(system)f(of)g Fr(MX)4000
+41199 y Ft(ODEs)449 b(is)f(obtained)i(b)-34 b(y)449 b(discretizing)g
+(the)g Fm(x)p Ft(-axis)f(with)i Fr(MX)p Ft(+2)f(grid)g(p)34
+b(oin)-34 b(ts)450 b(and)g(replacing)e(the)h(\257rst)4000
+42704 y(and)369 b(second)g(order)g(spatial)f(deriv)-67
+b(ativ)-34 b(es)368 b(with)h(their)g(cen)-34 b(tral)368
+b(di\256erence)g(appro)-34 b(ximations.)528 b(Since)368
+b(the)4000 44210 y(v)-67 b(alue)358 b(of)i Fm(u)f Ft(is)f(constan)-34
+b(t)361 b(at)f(the)f(t)-34 b(w)g(o)361 b(endp)34 b(oin)-34
+b(ts,)369 b(the)359 b(semi-discrete)f(equations)i(for)f(those)h(p)34
+b(oin)-34 b(ts)360 b(can)4000 45715 y(b)34 b(e)387 b(eliminated.)533
+b(With)388 b Fm(u)15834 45897 y Fk(i)16597 45715 y Ft(as)f(the)h(appro)
+-34 b(ximation)389 b(to)e Fm(u)p Ft(\()p Fm(t;)202 b(x)32506
+45897 y Fk(i)32882 45715 y Ft(\),)390 b Fm(x)34773 45897
+y Fk(i)35485 45715 y Ft(=)337 b Fm(i)p Ft(\(\242)p Fm(x)p
+Ft(\),)391 b(and)d(\242)p Fm(x)336 b Ft(=)h(2)p Fm(=)p
+Ft(\()p Fr(MX)237 b Ft(+)f(1\),)4000 47221 y(the)405
+b(resulting)f(system)g(of)g(ODEs,)616 b(_)-549 b Fm(u)337
+b Ft(=)f Fm(f)130 b Ft(\()p Fm(t;)202 b(u)p Ft(\),)405
+b(can)f(no)-34 b(w)405 b(b)34 b(e)404 b(written:)16923
+50359 y(_)-549 b Fm(u)17405 50541 y Fk(i)18117 50359
+y Ft(=)336 b Fm(q)19937 50541 y Fl(1)20596 49539 y Fm(u)21290
+49721 y Fk(i)p Fl(+1)23137 49539 y Fp(\241)269 b Ft(2)p
+Fm(u)25649 49721 y Fk(i)26294 49539 y Ft(+)h Fm(u)28201
+49721 y Fk(i)p Fj(\241)p Fl(1)p 20596 50080 9183 49 v
+23602 51190 a Ft(\(\242)p Fm(x)p Ft(\))26247 50840 y
+Fl(2)30181 50359 y Ft(+)f Fm(q)31934 50541 y Fl(2)32593
+49539 y Fm(u)33287 49721 y Fk(i)p Fl(+1)35134 49539 y
+Fp(\241)g Fm(u)37040 49721 y Fk(i)p Fj(\241)p Fl(1)p
+32593 50080 6026 49 v 33979 51190 a Ft(2\(\242)p Fm(x)p
+Ft(\))38953 50359 y Fm(:)11161 b Ft(\(3\))4000 53569
+y(This)405 b(equation)f(holds)h(for)f Fm(i)336 b Ft(=)h(1)p
+Fm(;)202 b Ft(2)p Fm(;)g(:)g(:)g(:)f(;)403 b Fr(MX)p
+Ft(,)i(with)g(the)f(understanding)i(that)g Fm(u)41563
+53751 y Fl(0)42425 53569 y Ft(=)337 b Fm(u)44399 53757
+y Fk(M)94 b(X)69 b Fl(+1)47834 53569 y Ft(=)336 b(0)p
+Fm(:)5882 55075 y Ft(The)404 b(sensitivit)-34 b(y)404
+b(systems)h(for)f Fm(s)21066 54635 y Fl(1)21929 55075
+y Ft(=)336 b Fm(@)67 b(u=@)g(q)26471 55257 y Fl(1)27401
+55075 y Ft(and)405 b Fm(s)30326 54635 y Fl(2)31188 55075
+y Ft(=)337 b Fm(@)67 b(u=@)g(q)35731 55257 y Fl(2)36660
+55075 y Ft(are)404 b(simply)11753 57707 y Fm(ds)12952
+57267 y Fl(1)12952 58047 y Fk(i)p 11753 58248 1725 49
+v 12081 59358 a Fm(dt)13947 58527 y Ft(=)337 b Fm(q)15768
+58709 y Fl(1)16427 57623 y Fm(s)16995 57183 y Fl(1)16995
+57962 y Fk(i)p Fl(+1)18842 57623 y Fp(\241)269 b Ft(2)p
+Fm(s)21228 57183 y Fl(1)21228 57962 y Fk(i)22024 57623
+y Ft(+)g Fm(s)23804 57183 y Fl(1)23804 57962 y Fk(i)p
+Fj(\241)p Fl(1)p 16427 58248 8956 49 v 19319 59358 a
+Ft(\(\242)p Fm(x)p Ft(\))21964 59008 y Fl(2)25784 58527
+y Ft(+)g Fm(q)27537 58709 y Fl(2)28196 57623 y Fm(s)28764
+57183 y Fl(1)28764 57962 y Fk(i)p Fl(+1)30612 57623 y
+Fp(\241)g Fm(s)32392 57183 y Fl(1)32392 57962 y Fk(i)p
+Fj(\241)p Fl(1)p 28196 58248 5774 49 v 29457 59358 a
+Ft(2\(\242)p Fm(x)p Ft(\))34372 58527 y(+)35717 57707
+y Fm(u)36411 57889 y Fk(i)p Fl(+1)38258 57707 y Fp(\241)g
+Ft(2)p Fm(u)40770 57889 y Fk(i)41415 57707 y Ft(+)g Fm(u)43321
+57889 y Fk(i)p Fj(\241)p Fl(1)p 35717 58248 9183 49 v
+38722 59358 a Ft(\(\242)p Fm(x)p Ft(\))41367 59008 y
+Fl(2)10968 61175 y Fm(s)11536 60675 y Fl(1)11536 61475
+y Fk(i)12062 61175 y Ft(\(0\))337 b(=)g(0)p Fm(:)p Ft(0)50451
+59423 y(\(4\))4000 63703 y(and)13332 66032 y Fm(ds)14531
+65592 y Fl(2)14531 66372 y Fk(i)p 13332 66573 1725 49
+v 13660 67684 a Fm(dt)15526 66852 y Ft(=)f Fm(q)17346
+67034 y Fl(1)18005 65948 y Fm(s)18573 65508 y Fl(2)18573
+66287 y Fk(i)p Fl(+1)20421 65948 y Fp(\241)269 b Ft(2)p
+Fm(s)22807 65508 y Fl(2)22807 66287 y Fk(i)23602 65948
+y Ft(+)g Fm(s)25382 65508 y Fl(2)25382 66287 y Fk(i)p
+Fj(\241)p Fl(1)p 18005 66573 8956 49 v 20897 67684 a
+Ft(\(\242)p Fm(x)p Ft(\))23542 67333 y Fl(2)27363 66852
+y Ft(+)g Fm(q)29116 67034 y Fl(2)29775 65948 y Fm(s)30343
+65508 y Fl(2)30343 66287 y Fk(i)p Fl(+1)32190 65948 y
+Fp(\241)g Fm(s)33970 65508 y Fl(2)33970 66287 y Fk(i)p
+Fj(\241)p Fl(1)p 29775 66573 5774 49 v 31036 67684 a
+Ft(2\(\242)p Fm(x)p Ft(\))35951 66852 y(+)37296 66032
+y Fm(u)37990 66214 y Fk(i)p Fl(+1)39837 66032 y Fp(\241)g
+Fm(u)41743 66214 y Fk(i)p Fj(\241)p Fl(1)p 37296 66573
+6026 49 v 38682 67684 a Ft(2\(\242)p Fm(x)p Ft(\))12546
+69501 y Fm(s)13114 69000 y Fl(1)13114 69800 y Fk(i)13640
+69501 y Ft(\(0\))338 b(=)e(0)p Fm(:)p Ft(0)202 b Fm(:)50451
+67748 y Ft(\(5\))5882 72028 y(The)440 b(source)g(\257le)g(for)g(this)h
+(problem,)449 b Fr(cvfnx.c)p Ft(,)i(is)440 b(listed)g(in)g(App)34
+b(endix)441 b(A.)646 b(It)440 b(uses)h(the)f(Adams)4000
+73534 y(\(non-sti\256)94 b(\))594 b(in)-34 b(tegration)594
+b(form)-34 b(ula)593 b(and)g(functional)g(iteration.)1104
+b(This)593 b(problem)f(is)g(unrealistically)4000 75039
+y(simple)7778 74599 y Fj(\244)8304 75039 y Ft(,)403 b(but)j(serv)-34
+b(es)403 b(to)i(illustrate)f(use)g(of)g(the)h(forw)-34
+b(ard)405 b(sensitivit)-34 b(y)404 b(capabilities)g(in)g
+Fq(cv)-27 b(odes)p Ft(.)p Black 4000 76063 19200 45 v
+5363 76779 a Fi(\244)5843 77203 y Fh(Increasing)366 b(the)g(n)-28
+b(um)g(b)28 b(er)366 b(of)f(grid)h(p)28 b(oin)-28 b(ts)366
+b(to)h(b)28 b(etter)367 b(resolv)-28 b(e)366 b(the)h(PDE)e(spatially)j
+(will)f(lead)g(to)f(a)g(sti\256er)g(ODE)h(for)4000 78420
+y(whic)-28 b(h)341 b(the)g(Adams)g(in)-28 b(tegration)342
+b(form)-28 b(ula)341 b(will)h(not)f(b)28 b(e)342 b(suitable)p
+Black Black 27697 81741 a Ft(5)p Black eop
+%%Page: 6 10
+6 9 bop Black Black 1882 7638 a Ft(The)479 b Fr(cvfnx.c)i
+Ft(\257le)e(b)34 b(egins)478 b(b)-34 b(y)479 b(including)g(sev)-34
+b(eral)478 b(header)h(\257les,)497 b(including)479 b(the)g(main)g
+Fq(cv)-27 b(odes)0 9143 y Ft(header)341 b(\257le,)353
+b(the)341 b Fr(sundialtypes.h)346 b Ft(header)341 b(\257le)g(for)g(the)
+h(de\257nition)g(of)f(the)g Fr(realtype)j Ft(t)-34 b(yp)34
+b(e,)354 b(and)341 b(the)0 10649 y Fq(nvector)p 5174
+10649 403 45 v 485 w(serial)414 b Ft(header)f(\257le)h(for)f(the)h
+(de\257nitions)h(of)e(the)h(serial)f Fr(N)p 32785 10649
+382 45 v 458 w(Vector)j Ft(t)-34 b(yp)34 b(e)413 b(and)i(op)34
+b(erations)0 12154 y(on)454 b(suc)-34 b(h)455 b(v)-34
+b(ectors.)688 b(F)-101 b(ollo)-34 b(wing)455 b(that)g(are)e
+(de\257nitions)i(of)g(problem)f(constan)-34 b(ts)456
+b(and)f(a)e(data)i(blo)34 b(c)-34 b(k)454 b(for)0 13660
+y(comm)-34 b(unication)477 b(with)g(the)f Fr(f)h Ft(routine.)754
+b(That)477 b(blo)34 b(c)-34 b(k)476 b(includes)g(the)h(problem)f
+(parameters)g(and)g(the)0 15165 y(mesh)404 b(dimension.)1882
+16693 y(The)381 b Fr(main)i Ft(program)e(b)34 b(egins)381
+b(b)-34 b(y)382 b(pro)34 b(cessing)380 b(and)i(v)-34
+b(erifying)381 b(the)g(program)g(argumen)-34 b(ts,)387
+b(follo)-34 b(w)g(ed)0 18199 y(b)g(y)337 b(allo)34 b(cation)337
+b(and)g(initialization)g(of)g(the)h(user-de\257ned)g(data)f(structure.)
+517 b(Next,)350 b(the)337 b(v)-34 b(ector)337 b(of)g(initial)0
+19704 y(conditions)523 b(is)e(created)h(\(b)-34 b(y)523
+b(calling)e Fr(N)p 18557 19704 V 458 w(VNew)p 21559 19704
+V 460 w(Serial)p Ft(\))j(and)f(initialized)e(\(in)i(the)f(function)h
+Fr(SetIC)p Ft(\).)0 21210 y(The)405 b(next)f(co)34 b(de)403
+b(blo)34 b(c)-34 b(k)404 b(creates)g(and)h(allo)34 b(cates)403
+b(memory)g(for)i(the)f Fq(cv)-27 b(odes)405 b Ft(ob)67
+b(ject.)1882 22738 y(If)558 b(sensitivit)-34 b(y)558
+b(calculations)h(w)-34 b(ere)558 b(turned)h(on)g(through)g(the)g
+(command)g(line)f(argumen)-34 b(ts,)598 b(the)0 24243
+y(main)512 b(program)f(con)-34 b(tin)g(ues)513 b(with)f(setting)g(the)g
+(scaling)f(parameters)g Fr(pbar)i Ft(and)f(the)g(arra)-34
+b(y)511 b(of)g(\260ags)0 25749 y Fr(plist)p Ft(.)577
+b(In)417 b(this)f(example,)j(the)e(scaling)f(factors)h
+Fr(pbar)h Ft(are)d(used)i(b)34 b(oth)418 b(for)e(the)h(\257nite)g
+(di\256erence)e(ap-)0 27254 y(pro)-34 b(ximation)352
+b(to)f(the)h(righ)-34 b(t-hand)353 b(sides)e(of)h(the)f(sensitivit)-34
+b(y)352 b(systems)f(\(4\))h(and)g(\(5\))g(and)g(in)f(calculating)0
+28760 y(the)430 b(absolute)h(tolerances)f(for)g(the)g(sensitivit)-34
+b(y)430 b(v)-67 b(ariables.)615 b(The)431 b(\260ags)f(in)g
+Fr(plist)i Ft(are)d(set)i(to)f(indicate)0 30265 y(that)359
+b(sensitivities)f(with)h(resp)34 b(ect)357 b(to)i(b)34
+b(oth)359 b(problem)f(parameters)g(are)g(desired.)523
+b(The)358 b(arra)-34 b(y)358 b(of)h Fr(NS)f Ft(=)337
+b(2)0 31771 y(v)-34 b(ectors)332 b Fr(uS)g Ft(for)g(the)g(sensitivit)
+-34 b(y)332 b(v)-67 b(ariables)331 b(is)g(created)h(b)-34
+b(y)332 b(calling)f Fr(N)p 31511 31771 V 459 w(VNewVectorArray)p
+41510 31771 V 463 w(Serial)j Ft(and)0 33276 y(set)404
+b(to)h(con)-34 b(tain)405 b(the)f(initial)g(v)-67 b(alues)404
+b(\()p Fm(s)17888 32836 y Fl(1)17888 33615 y Fk(i)18414
+33276 y Ft(\(0\))337 b(=)g(0)p Fm(:)p Ft(0,)403 b Fm(s)24436
+32836 y Fl(2)24436 33615 y Fk(i)24962 33276 y Ft(\(0\))338
+b(=)e(0)p Fm(:)p Ft(0\).)1882 34804 y(The)389 b(next)g(three)g(calls)f
+(set)h(optional)h(inputs)g(for)f(sensitivit)-34 b(y)389
+b(calculations:)531 b(the)389 b(sensitivit)-34 b(y)389
+b(v)-67 b(ari-)0 36309 y(ables)428 b(are)f(included)h(or)g(excluded)g
+(from)g(the)g(error)f(test)h(\(the)h(b)34 b(o)g(olean)428
+b(v)-67 b(ariable)426 b Fr(err)p 40589 36309 V 460 w(con)j
+Ft(is)e(passed)0 37815 y(as)333 b(a)g(command)g(line)f(argumen)-34
+b(t\),)349 b(the)333 b(con)-34 b(trol)333 b(v)-67 b(ariable)331
+b Fr(rho)j Ft(is)f(set)g(to)g(a)g(v)-67 b(alue)332 b
+Fr(ZERO)i Ft(=)i(0)d(to)g(indicate)0 39320 y(the)447
+b(use)h(of)f(second-order)g(cen)-34 b(tered)447 b(directional)f(deriv)
+-67 b(ativ)-34 b(e)446 b(form)-34 b(ulas)448 b(for)f(the)g(appro)-34
+b(ximations)449 b(to)0 40826 y(the)403 b(sensitivit)-34
+b(y)402 b(righ)-34 b(t-hand)405 b(sides,)d(and)h(the)g(arra)-34
+b(y)402 b(of)h(scaling)f(factors)h Fr(pbar)h Ft(is)e(passed)h(to)g
+Fq(cv)-27 b(odes)p Ft(.)0 42331 y(Memory)568 b(for)h(sensitivit)-34
+b(y)569 b(calculations)f(is)h(allo)34 b(cated)568 b(b)-34
+b(y)569 b(calling)f Fr(CVodeSensMalloc)574 b Ft(whic)-34
+b(h)570 b(also)0 43837 y(sp)34 b(eci\257es)507 b(the)i(sensitivit)-34
+b(y)508 b(solution)g(metho)34 b(d)509 b(\()p Fr(sensi)p
+25795 43837 V 460 w(meth)g Ft(is)f(passed)h(as)f(a)g(command)g(line)g
+(argu-)0 45342 y(men)-34 b(t\),)405 b(the)g(problem)f(parameters)g
+Fr(p)p Ft(,)g(and)h(the)f(initial)g(conditions)h(for)f(the)h
+(sensitivit)-34 b(y)404 b(v)-67 b(ariables.)1882 46870
+y(Next,)480 b(in)465 b(a)g(lo)34 b(op)464 b(o)-34 b(v)g(er)465
+b(the)h Fr(NOUT)g Ft(output)h(times,)480 b(the)465 b(program)g(calls)f
+(the)i(in)-34 b(tegration)466 b(routine)0 48376 y Fr(CVode)p
+Ft(.)535 b(On)390 b(a)g(successful)f(return,)k(the)d(program)g(prin)-34
+b(ts)390 b(the)g(maxim)-34 b(um)390 b(norm)g(of)g(the)g(solution)g
+Fm(u)g Ft(at)0 49881 y(the)378 b(curren)-34 b(t)377 b(time)g(and,)383
+b(if)377 b(sensitivities)g(w)-34 b(ere)377 b(also)g(computed,)383
+b(extracts)377 b(and)h(prin)-34 b(ts)378 b(the)f(maxim)-34
+b(um)0 51387 y(norms)499 b(of)f Fm(s)5783 50947 y Fl(1)6309
+51387 y Ft(\()p Fm(t)p Ft(\))h(and)g Fm(s)11207 50947
+y Fl(2)11733 51387 y Ft(\()p Fm(t)p Ft(\).)821 b(The)499
+b(program)f(ends)h(b)-34 b(y)498 b(prin)-34 b(ting)499
+b(some)g(\257nal)f(in)-34 b(tegration)499 b(statistics)0
+52892 y(and)405 b(freeing)f(all)f(allo)34 b(cated)404
+b(memory)-101 b(.)1882 54420 y(The)396 b Fr(f)f Ft(function)i(is)e(a)g
+(straigh)-34 b(tforw)g(ard)398 b(implemen)-34 b(tation)396
+b(of)g(\(3\).)536 b(The)396 b(rest)f(of)h(the)f(\257le)h
+Fr(cvfnx.c)0 55926 y Ft(con)-34 b(tains)403 b(de\257nitions)h(of)e
+(priv)-67 b(ate)402 b(functions.)539 b(The)403 b(last)g(t)-34
+b(w)g(o,)403 b Fr(PrintFinalStats)408 b Ft(and)403 b
+Fr(check)p 44734 55926 V 460 w(flag)p Ft(,)0 57431 y(can)572
+b(b)34 b(e)572 b(used)g(with)h(minor)e(mo)34 b(di\257cations)573
+b(b)-34 b(y)572 b(an)-34 b(y)572 b Fq(cv)-27 b(odes)573
+b Ft(user)f(co)34 b(de)572 b(to)g(prin)-34 b(t)572 b(\257nal)h
+Fq(cv)-27 b(odes)0 58936 y Ft(statistics)405 b(and)g(to)f(c)-34
+b(hec)g(k)404 b(return)h(\260ags)f(from)h Fq(cv)-27 b(odes)405
+b Ft(in)-34 b(terface)404 b(functions,)h(resp)34 b(ectiv)-34
+b(ely)-101 b(.)1882 60464 y(Results)402 b(generated)f(b)-34
+b(y)401 b Fr(cvfnx)i Ft(are)e(sho)-34 b(wn)402 b(in)g(Fig.)e(1.)538
+b(The)401 b(output)i(generated)f(b)-34 b(y)401 b Fr(cvfnx)i
+Ft(when)0 61970 y(computing)533 b(sensitivities)e(with)i(the)f
+Fr(CV)p 19219 61970 V 459 w(SIMULTANEOUS)j Ft(metho)34
+b(d)533 b(and)f(full)g(error)f(con)-34 b(trol)532 b(\()p
+Fr(cvfnx)0 63475 y(-sensi)638 b(sim)g(t)p Ft(\))405 b(is:)p
+0 66064 17898 45 v 18479 66130 a Fg(cvfnx)582 b(sample)g(output)p
+30102 66064 V 0 66864 45 801 v 47956 66864 V 0 68192
+45 1329 v 47956 68192 V 0 69520 V 844 69122 a(1-D)g
+(advection-diffusion)i(equation,)e(mesh)g(size)g(=)f(10)p
+47956 69520 V 0 70849 V 844 70450 a(Sensitivity:)i(YES)f(\()f
+(SIMULTANEOUS)i(+)e(FULL)h(ERROR)g(CONTROL)g(\))p 47956
+70849 V 0 72177 V 47956 72177 V 0 73505 V 844 73107 a
+(============================================================)p
+47956 73505 V 0 74834 V 3750 74435 a(T)2906 b(Q)4068
+b(H)3487 b(NST)11624 b(Max)581 b(norm)p 47956 74834 V
+0 76162 V 844 75764 a
+(============================================================)p
+47956 76162 V 0 77491 V 844 77092 a(5.000e-01)1164 b(4)e(7.656e-03)1745
+b(115)p 47956 77491 V 0 78819 V 19441 78420 a(Solution)5232
+b(3.0529e+00)p 47956 78819 V Black 23697 81741 a Ft(6)p
+Black eop
+%%Page: 7 11
+7 10 bop Black Black Black 4000 24754 a @beginspecial
+-83 @llx 242 @lly 692 @urx 538 @ury 4320 @rwi @setspecial
+%%BeginDocument: cvfnx.eps
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: MATLAB, The Mathworks, Inc.
+%%Title: /home/radu/CODES/sundials/cvodes/doc/cvfnx.eps
+%%CreationDate: 10/19/2004  09:30:06
+%%DocumentNeededFonts: Helvetica
+%%+ Helvetica-Bold
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%Extensions: CMYK
+%%Pages: 1
+%%BoundingBox:   -83   242   692   538
+%%EndComments
+
+%%BeginProlog
+% MathWorks dictionary
+/MathWorks 160 dict begin
+% definition operators
+/bdef {bind def} bind def
+/ldef {load def} bind def
+/xdef {exch def} bdef
+/xstore {exch store} bdef
+% operator abbreviations
+/c  /clip ldef
+/cc /concat ldef
+/cp /closepath ldef
+/gr /grestore ldef
+/gs /gsave ldef
+/mt /moveto ldef
+/np /newpath ldef
+/cm /currentmatrix ldef
+/sm /setmatrix ldef
+/rm /rmoveto ldef
+/rl /rlineto ldef
+/s /show ldef
+/sc {setcmykcolor} bdef
+/sr /setrgbcolor ldef
+/sg /setgray ldef
+/w /setlinewidth ldef
+/j /setlinejoin ldef
+/cap /setlinecap ldef
+/rc {rectclip} bdef
+/rf {rectfill} bdef
+% page state control
+/pgsv () def
+/bpage {/pgsv save def} bdef
+/epage {pgsv restore} bdef
+/bplot /gsave ldef
+/eplot {stroke grestore} bdef
+% orientation switch
+/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def
+% coordinate system mappings
+/dpi2point 0 def
+% font control
+/FontSize 0 def
+/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0]
+  makefont setfont} bdef
+/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse
+  exch dup 3 1 roll findfont dup length dict begin
+  { 1 index /FID ne {def}{pop pop} ifelse } forall
+  /Encoding exch def currentdict end definefont pop} bdef
+/isroman {findfont /CharStrings get /Agrave known} bdef
+/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse
+  exch FMS} bdef
+/csm {1 dpi2point div -1 dpi2point div scale neg translate
+ dup landscapeMode eq {pop -90 rotate}
+  {rotateMode eq {90 rotate} if} ifelse} bdef
+% line types: solid, dotted, dashed, dotdash
+/SO { [] 0 setdash } bdef
+/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
+/DA { [6 dpi2point mul] 0 setdash } bdef
+/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4
+  dpi2point mul] 0 setdash } bdef
+% macros for lines and objects
+/L {lineto stroke} bdef
+/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef
+/AP {{rlineto} repeat} bdef
+/PDlw -1 def
+/W {/PDlw currentlinewidth def setlinewidth} def
+/PP {closepath eofill} bdef
+/DP {closepath stroke} bdef
+/MR {4 -2 roll moveto dup  0 exch rlineto exch 0 rlineto
+  neg 0 exch rlineto closepath} bdef
+/FR {MR stroke} bdef
+/PR {MR fill} bdef
+/L1i {{currentfile picstr readhexstring pop} image} bdef
+/tMatrix matrix def
+/MakeOval {newpath tMatrix currentmatrix pop translate scale
+0 0 1 0 360 arc tMatrix setmatrix} bdef
+/FO {MakeOval stroke} bdef
+/PO {MakeOval fill} bdef
+/PD {currentlinewidth 2 div 0 360 arc fill
+   PDlw -1 eq not {PDlw w /PDlw -1 def} if} def
+/FA {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef
+/PA {newpath tMatrix currentmatrix pop	translate 0 0 moveto scale
+  0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef
+/FAn {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef
+/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale
+  0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef
+/vradius 0 def /hradius 0 def /lry 0 def
+/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def
+/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef
+  /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly
+  vradius add translate hradius vradius scale 0 0 1 180 270 arc 
+  tMatrix setmatrix lrx hradius sub uly vradius add translate
+  hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix
+  lrx hradius sub lry vradius sub translate hradius vradius scale
+  0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub
+  translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix
+  closepath} bdef
+/FRR {MRR stroke } bdef
+/PRR {MRR fill } bdef
+/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix
+  closepath} bdef
+/FlrRR {MlrRR stroke } bdef
+/PlrRR {MlrRR fill } bdef
+/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix
+  closepath} bdef
+/FtbRR {MtbRR stroke } bdef
+/PtbRR {MtbRR fill } bdef
+/stri 6 array def /dtri 6 array def
+/smat 6 array def /dmat 6 array def
+/tmat1 6 array def /tmat2 6 array def /dif 3 array def
+/asub {/ind2 exch def /ind1 exch def dup dup
+  ind1 get exch ind2 get sub exch } bdef
+/tri_to_matrix {
+  2 0 asub 3 1 asub 4 0 asub 5 1 asub
+  dup 0 get exch 1 get 7 -1 roll astore } bdef
+/compute_transform {
+  dmat dtri tri_to_matrix tmat1 invertmatrix 
+  smat stri tri_to_matrix tmat2 concatmatrix } bdef
+/ds {stri astore pop} bdef
+/dt {dtri astore pop} bdef
+/db {2 copy /cols xdef /rows xdef mul dup 3 mul string
+  currentfile exch readhexstring pop
+  dup 0 3 index getinterval /rbmap xdef
+  dup 2 index dup getinterval /gbmap xdef
+  1 index dup 2 mul exch getinterval /bbmap xdef pop pop}bdef
+/it {gs np dtri aload pop moveto lineto lineto cp c
+  cols rows 8 compute_transform 
+  rbmap gbmap bbmap true 3 colorimage gr}bdef
+/il {newpath moveto lineto stroke}bdef
+currentdict end def
+%%EndProlog
+
+%%BeginSetup
+MathWorks begin
+
+0 cap
+
+end
+%%EndSetup
+
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox:   -83   242   692   538
+MathWorks begin
+bpage
+%%EndPageSetup
+
+%%BeginObject: obj1
+bplot
+
+/dpi2point 12 def
+portraitMode -1920 6636 csm
+
+  922   169  9307  3554 MR c np
+91 dict begin %Colortable dictionary
+/c0 { 0 0 0 sr} bdef
+/c1 { 1 1 1 sr} bdef
+/c2 { 1 0 0 sr} bdef
+/c3 { 0 1 0 sr} bdef
+/c4 { 0 0 1 sr} bdef
+/c5 { 1 1 0 sr} bdef
+/c6 { 1 0 1 sr} bdef
+/c7 { 0 1 1 sr} bdef
+c0
+1 j
+1 sg
+   0    0 11213 3784 PR
+6 w
+0 3084 3666 0 0 -3084 1458 3367 4 MP
+PP
+-3666 0 0 3084 3666 0 0 -3084 1458 3367 5 MP stroke
+4 w
+DO
+0 sg
+1458 3367 mt 1458  284 L
+1458  284 mt 1458  284 L
+2374 3367 mt 2374  284 L
+2374  284 mt 2374  284 L
+3291 3367 mt 3291  284 L
+3291  284 mt 3291  284 L
+4207 3367 mt 4207  284 L
+4207  284 mt 4207  284 L
+5124 3367 mt 5124  284 L
+5124  284 mt 5124  284 L
+1458 3367 mt 5124 3367 L
+5124 3367 mt 5124 3367 L
+1458 3058 mt 5124 3058 L
+5124 3058 mt 5124 3058 L
+1458 2750 mt 5124 2750 L
+5124 2750 mt 5124 2750 L
+1458 2442 mt 5124 2442 L
+5124 2442 mt 5124 2442 L
+1458 2133 mt 5124 2133 L
+5124 2133 mt 5124 2133 L
+1458 1825 mt 5124 1825 L
+5124 1825 mt 5124 1825 L
+1458 1517 mt 5124 1517 L
+5124 1517 mt 5124 1517 L
+1458 1208 mt 5124 1208 L
+5124 1208 mt 5124 1208 L
+1458  900 mt 5124  900 L
+5124  900 mt 5124  900 L
+1458  592 mt 5124  592 L
+5124  592 mt 5124  592 L
+1458  284 mt 5124  284 L
+5124  284 mt 5124  284 L
+SO
+6 w
+1458 3367 mt 5124 3367 L
+1458  283 mt 5124  283 L
+1458 3367 mt 1458  283 L
+5124 3367 mt 5124  283 L
+1458 3367 mt 5124 3367 L
+1458 3367 mt 1458  283 L
+1458 3367 mt 1458 3330 L
+1458  284 mt 1458  320 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1425 3512 mt 
+(0) s
+2374 3367 mt 2374 3330 L
+2374  284 mt 2374  320 L
+2291 3512 mt 
+(0.5) s
+3291 3367 mt 3291 3330 L
+3291  284 mt 3291  320 L
+3258 3512 mt 
+(1) s
+4207 3367 mt 4207 3330 L
+4207  284 mt 4207  320 L
+4124 3512 mt 
+(1.5) s
+5124 3367 mt 5124 3330 L
+5124  284 mt 5124  320 L
+5091 3512 mt 
+(2) s
+1458 3367 mt 1494 3367 L
+5124 3367 mt 5087 3367 L
+1357 3411 mt 
+(0) s
+1458 3058 mt 1494 3058 L
+5124 3058 mt 5087 3058 L
+1223 3102 mt 
+(100) s
+1458 2750 mt 1494 2750 L
+5124 2750 mt 5087 2750 L
+1223 2794 mt 
+(200) s
+1458 2442 mt 1494 2442 L
+5124 2442 mt 5087 2442 L
+1223 2486 mt 
+(300) s
+1458 2133 mt 1494 2133 L
+5124 2133 mt 5087 2133 L
+1223 2177 mt 
+(400) s
+1458 1825 mt 1494 1825 L
+5124 1825 mt 5087 1825 L
+1223 1869 mt 
+(500) s
+1458 1517 mt 1494 1517 L
+5124 1517 mt 5087 1517 L
+1223 1561 mt 
+(600) s
+1458 1208 mt 1494 1208 L
+5124 1208 mt 5087 1208 L
+1223 1252 mt 
+(700) s
+1458  900 mt 1494  900 L
+5124  900 mt 5087  900 L
+1223  944 mt 
+(800) s
+1458  592 mt 1494  592 L
+5124  592 mt 5087  592 L
+1223  636 mt 
+(900) s
+1458  284 mt 1494  284 L
+5124  284 mt 5087  284 L
+1157  328 mt 
+(1000) s
+1458 3367 mt 5124 3367 L
+1458  283 mt 5124  283 L
+1458 3367 mt 1458  283 L
+5124 3367 mt 5124  283 L
+gs 1458 284 3667 3084 MR c np
+24 w
+6 0 7 0 14 0 14 0 8 0 8 0 18 0 18 0 
+18 0 8 0 8 0 13 0 13 0 7 0 8 0 20 0 
+9 0 9 0 14 0 13 0 14 0 14 0 6 0 7 0 
+15 0 15 0 10 0 9 0 25 0 8 0 8 0 12 0 
+13 0 13 0 13 0 7 0 7 0 17 0 17 0 8 0 
+9 0 16 0 17 0 16 0 8 0 7 0 15 0 14 0 
+8 0 7 0 18 0 17 0 17 0 8 0 8 0 31 0 
+14 0 15 0 14 0 14 0 24 0 24 0 24 0 11 0 
+11 0 11 0 11 0 6 0 7 0 24 0 25 1 25 0 
+9 0 8 0 11 0 11 0 7 0 7 0 29 0 15 0 
+15 0 9 0 10 0 9 0 10 0 19 0 20 0 19 1 
+8 0 8 0 18 0 18 0 12 0 11 0 11 0 12 0 
+29 0 19 0 20 1 3804 3363 100 MP stroke
+10 0 10 0 10 0 9 0 11 0 9 0 5 0 6 0 
+9 0 10 1 10 0 10 0 10 0 9 0 10 0 10 0 
+10 0 10 0 10 1 9 0 10 0 40 1 22 0 22 0 
+22 1 14 0 7 0 7 0 14 1 14 0 13 0 7 0 
+7 1 16 0 15 0 16 1 16 0 16 1 16 0 15 1 
+16 0 11 1 5 0 6 0 5 0 6 1 5 0 6 0 
+5 0 6 0 5 1 6 0 5 0 22 1 22 1 22 1 
+22 1 13 1 12 1 12 0 7 1 7 0 28 2 27 2 
+16 1 17 1 16 2 16 1 17 2 9 1 9 0 10 1 
+9 1 9 1 10 1 9 1 9 1 10 1 6 1 6 1 
+25 3 16 2 17 2 16 2 16 3 17 2 16 3 16 3 
+17 3 16 3 17 3 16 3 16 3 17 4 10 2 10 3 
+11 2 6 2 7 2 2567 3273 100 MP stroke
+26 6 26 8 15 4 16 5 16 5 9 4 10 3 10 3 
+6 3 6 2 24 9 16 7 16 6 16 8 17 7 9 4 
+10 5 9 5 10 5 9 5 10 5 10 5 9 6 10 5 
+9 6 10 6 9 6 10 6 6 4 5 4 6 4 6 4 
+6 4 6 4 5 4 15 11 15 12 15 11 14 13 15 12 
+15 14 15 14 15 14 14 15 15 16 15 16 15 17 14 17 
+15 18 15 19 15 20 14 21 15 21 15 23 15 23 14 24 
+15 26 15 26 15 28 14 29 15 31 15 32 15 34 9 23 
+9 23 10 25 9 25 6 16 6 17 6 17 6 17 6 18 
+6 18 5 19 6 19 6 20 6 21 6 21 6 21 6 22 
+6 23 5 24 6 24 6 26 6 26 6 27 6 28 6 29 
+5 30 6 31 6 32 6 34 6 35 6 36 6 38 6 40 
+3 22 3 22 3 23 1543 1647 100 MP stroke
+3 23 3 24 3 24 3 25 3 26 3 27 3 27 3 28 
+3 29 3 30 4 30 3 32 3 33 3 34 3 35 3 36 
+3 37 3 39 3 41 3 42 3 43 3 46 3 48 2 33 
+2 33 2 36 2 36 3 37 1 27 1 26 1 16 1 16 
+0 13 1458 615 34 MP stroke
+gr
+
+24 w
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+3266 3673 mt 
+(t) s
+1102 1980 mt  -90 rotate
+(||u||) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+1030 1731 mt  -90 rotate
+(2) s
+90 rotate
+6 w
+1 sg
+0 3084 3667 0 0 -3084 6480 3367 4 MP
+PP
+-3667 0 0 3084 3667 0 0 -3084 6480 3367 5 MP stroke
+4 w
+DO
+0 sg
+6480 3367 mt 6480  284 L
+6480  284 mt 6480  284 L
+7396 3367 mt 7396  284 L
+7396  284 mt 7396  284 L
+8313 3367 mt 8313  284 L
+8313  284 mt 8313  284 L
+9230 3367 mt 9230  284 L
+9230  284 mt 9230  284 L
+10147 3367 mt 10147  284 L
+10147  284 mt 10147  284 L
+6480 3367 mt 10147 3367 L
+10147 3367 mt 10147 3367 L
+6480 2853 mt 10147 2853 L
+10147 2853 mt 10147 2853 L
+6480 2339 mt 10147 2339 L
+10147 2339 mt 10147 2339 L
+6480 1825 mt 10147 1825 L
+10147 1825 mt 10147 1825 L
+6480 1311 mt 10147 1311 L
+10147 1311 mt 10147 1311 L
+6480  797 mt 10147  797 L
+10147  797 mt 10147  797 L
+6480  284 mt 10147  284 L
+10147  284 mt 10147  284 L
+SO
+6 w
+6480 3367 mt 10147 3367 L
+6480  283 mt 10147  283 L
+6480 3367 mt 6480  283 L
+10147 3367 mt 10147  283 L
+6480 3367 mt 10147 3367 L
+6480 3367 mt 6480  283 L
+6480 3367 mt 6480 3330 L
+6480  284 mt 6480  320 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+6447 3512 mt 
+(0) s
+7396 3367 mt 7396 3330 L
+7396  284 mt 7396  320 L
+7313 3512 mt 
+(0.5) s
+8313 3367 mt 8313 3330 L
+8313  284 mt 8313  320 L
+8280 3512 mt 
+(1) s
+9230 3367 mt 9230 3330 L
+9230  284 mt 9230  320 L
+9147 3512 mt 
+(1.5) s
+10147 3367 mt 10147 3330 L
+10147  284 mt 10147  320 L
+10114 3512 mt 
+(2) s
+6480 3367 mt 6516 3367 L
+10147 3367 mt 10110 3367 L
+6175 3411 mt 
+(-250) s
+6480 2853 mt 6516 2853 L
+10147 2853 mt 10110 2853 L
+6175 2897 mt 
+(-200) s
+6480 2339 mt 6516 2339 L
+10147 2339 mt 10110 2339 L
+6175 2383 mt 
+(-150) s
+6480 1825 mt 6516 1825 L
+10147 1825 mt 10110 1825 L
+6175 1869 mt 
+(-100) s
+6480 1311 mt 6516 1311 L
+10147 1311 mt 10110 1311 L
+6242 1355 mt 
+(-50) s
+6480  797 mt 6516  797 L
+10147  797 mt 10110  797 L
+6379  841 mt 
+(0) s
+6480  284 mt 6516  284 L
+10147  284 mt 10110  284 L
+6312  328 mt 
+(50) s
+6480 3367 mt 10147 3367 L
+6480  283 mt 10147  283 L
+6480 3367 mt 6480  283 L
+10147 3367 mt 10147  283 L
+gs 6480 284 3668 3084 MR c np
+24 w
+6 0 7 0 14 0 14 0 8 0 8 0 18 -1 18 0 
+18 0 8 0 8 0 13 0 13 0 7 0 8 0 20 -1 
+9 0 9 0 14 0 13 0 14 0 14 -1 6 0 7 0 
+15 0 15 0 10 0 9 0 25 -1 8 0 8 0 12 0 
+13 0 13 -1 13 0 7 0 7 0 17 -1 17 0 8 0 
+9 0 17 -1 16 0 17 0 7 -1 7 0 15 0 14 -1 
+8 0 7 0 18 0 17 -1 18 0 7 -1 8 0 31 -1 
+15 -1 14 0 14 -1 14 0 24 -1 24 -1 24 -1 11 -1 
+11 -1 11 0 11 -1 7 0 6 0 25 -2 25 -1 24 -2 
+9 0 8 -1 11 -1 11 0 7 -1 8 -1 28 -2 15 -1 
+15 -1 9 -1 10 -1 9 -1 10 0 19 -2 20 -2 20 -2 
+7 -1 8 -1 18 -2 19 -2 11 -1 11 -2 12 -1 11 -2 
+29 -4 20 -3 19 -3 8827 864 100 MP stroke
+10 -1 10 -2 10 -1 10 -2 10 -2 10 -1 5 -1 5 -1 
+10 -2 10 -2 9 -2 10 -2 10 -1 10 -2 10 -3 9 -2 
+10 -2 10 -2 10 -2 10 -2 10 -3 39 -10 22 -5 22 -7 
+22 -6 14 -4 7 -3 8 -2 13 -4 14 -5 14 -5 7 -2 
+6 -2 16 -6 16 -6 16 -6 15 -7 16 -6 16 -7 16 -7 
+16 -8 10 -4 6 -3 5 -3 6 -2 5 -3 6 -3 5 -3 
+6 -3 5 -3 6 -2 5 -3 6 -3 22 -13 22 -12 22 -14 
+22 -14 12 -8 12 -8 13 -9 7 -5 7 -5 27 -20 28 -21 
+16 -13 16 -14 17 -14 16 -15 16 -15 10 -9 9 -9 9 -9 
+10 -9 9 -10 9 -9 10 -10 9 -10 9 -10 7 -7 6 -7 
+24 -28 17 -19 16 -20 17 -20 16 -21 16 -22 17 -22 16 -23 
+17 -24 16 -24 16 -25 17 -25 16 -26 16 -27 11 -17 10 -17 
+10 -17 7 -12 6 -11 7590 1744 100 MP stroke
+26 -47 26 -48 16 -30 16 -30 15 -31 10 -19 10 -20 10 -20 
+6 -12 6 -13 24 -51 16 -35 16 -35 16 -35 16 -36 10 -22 
+9 -22 10 -22 10 -22 9 -22 10 -22 9 -23 10 -22 9 -23 
+10 -22 10 -23 9 -23 10 -22 5 -14 6 -14 6 -14 6 -14 
+6 -13 5 -14 6 -14 15 -35 15 -35 15 -35 14 -34 15 -34 
+15 -34 15 -33 14 -33 15 -32 15 -32 15 -31 14 -30 15 -29 
+15 -28 15 -28 14 -26 15 -25 15 -25 15 -23 14 -22 15 -21 
+15 -19 15 -19 14 -17 15 -16 15 -14 15 -13 14 -12 10 -7 
+9 -6 10 -6 9 -5 6 -2 6 -2 6 -2 6 -2 6 -1 
+6 -1 5 0 6 1 6 0 6 2 6 2 6 3 6 3 
+5 5 6 5 6 7 6 8 6 9 6 10 6 12 6 14 
+5 16 6 18 6 20 6 24 6 26 6 30 6 34 6 37 
+3 22 3 23 3 25 6565 3006 100 MP stroke
+3 26 3 28 3 30 3 32 3 34 3 36 3 39 3 41 
+3 44 3 47 4 50 3 54 3 57 3 62 3 66 3 70 
+3 77 3 82 3 88 3 96 3 104 3 112 3 123 2 88 
+2 93 2 99 2 106 3 113 1 81 1 85 1 50 1 51 
+0 45 6480 797 34 MP stroke
+DA
+6 0 7 0 14 0 14 0 8 0 8 0 18 0 18 0 
+18 0 8 0 8 0 13 0 13 0 7 0 8 0 20 0 
+9 0 9 0 14 0 13 0 14 0 14 0 6 0 7 0 
+15 0 15 0 10 0 9 0 25 0 8 0 8 0 12 0 
+13 0 13 0 13 0 7 0 7 0 17 0 17 0 8 0 
+9 0 17 0 16 0 17 0 7 0 7 0 15 0 14 0 
+8 0 7 0 18 0 17 0 18 0 7 0 8 0 31 0 
+15 0 14 0 14 0 14 0 24 0 24 0 24 0 11 0 
+11 0 11 0 11 0 7 0 6 -1 25 0 25 0 24 0 
+9 0 8 0 11 0 11 0 7 0 8 0 28 0 15 0 
+15 0 9 0 10 0 9 0 10 0 19 0 20 0 20 0 
+7 0 8 0 18 -1 19 0 11 0 11 0 12 0 11 0 
+29 0 20 0 19 0 8827 800 100 MP stroke
+10 0 10 0 10 0 10 0 10 0 10 0 5 0 5 0 
+10 0 10 -1 9 0 10 0 10 0 10 0 10 0 9 0 
+10 0 10 0 10 0 10 0 10 0 39 0 22 0 22 -1 
+22 0 14 0 7 0 8 0 13 0 14 0 14 0 7 0 
+6 0 16 0 16 0 16 0 15 -1 16 0 16 0 16 0 
+16 0 10 0 6 0 5 0 6 0 5 0 6 0 5 0 
+6 0 5 0 6 0 5 0 6 0 22 0 22 0 22 0 
+22 0 12 0 12 0 13 0 7 0 7 0 27 0 28 0 
+16 1 16 0 17 0 16 0 16 0 10 1 9 0 9 0 
+10 0 9 0 9 0 10 1 9 0 9 0 7 0 6 1 
+24 0 17 1 16 1 17 0 16 1 16 1 17 1 16 1 
+17 1 16 1 16 1 17 2 16 1 16 2 11 1 10 1 
+10 1 7 1 6 0 7590 781 100 MP stroke
+26 4 26 3 16 2 16 3 15 3 10 1 10 2 10 2 
+6 1 6 1 24 5 16 4 16 4 16 4 16 4 10 2 
+9 3 10 3 10 3 9 3 10 3 9 3 10 3 9 3 
+10 4 10 3 9 3 10 4 5 2 6 3 6 2 6 2 
+6 3 5 2 6 2 15 7 15 6 15 7 14 7 15 7 
+15 7 15 7 14 8 15 8 15 7 15 8 14 8 15 8 
+15 8 15 8 14 7 15 8 15 7 15 7 14 7 15 6 
+15 6 15 6 14 4 15 4 15 4 15 2 14 2 10 0 
+9 0 10 -1 9 -1 6 -1 6 -1 6 -1 6 -2 6 -2 
+6 -2 5 -2 6 -3 6 -2 6 -3 6 -4 6 -3 6 -4 
+5 -5 6 -4 6 -5 6 -5 6 -6 6 -5 6 -7 6 -6 
+5 -7 6 -7 6 -7 6 -8 6 -8 6 -9 6 -9 6 -9 
+3 -5 3 -5 3 -5 6565 655 100 MP stroke
+3 -5 3 -6 3 -5 3 -5 3 -6 3 -6 3 -5 3 -6 
+3 -6 3 -6 4 -6 3 -6 3 -6 3 -6 3 -6 3 -6 
+3 -6 3 -5 3 -6 3 -6 3 -5 3 -5 3 -4 2 -3 
+2 -3 2 -2 2 -2 3 -2 1 0 1 -1 1 0 1 0 
+6480 797 33 MP stroke
+gr
+
+24 w
+DA
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+8284 3689 mt 
+(t) s
+6129 2139 mt  -90 rotate
+(d||u||) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+6057 1802 mt  -90 rotate
+(2) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+6129 1742 mt  -90 rotate
+(/dq) s
+90 rotate
+SO
+6 w
+7559 2142 mt 
+(d||u||) s
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+7896 2070 mt 
+(2) s
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+7956 2142 mt 
+(/dq) s
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+8172 2214 mt 
+(1) s
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+8232 2142 mt 
+( ) s
+7578  625 mt 
+(d||u||) s
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+7915  553 mt 
+(2) s
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+7975  625 mt 
+(/dq) s
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+8191  697 mt 
+(2) s
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+8251  625 mt 
+( ) s
+
+end
+
+eplot
+%%EndObject
+
+epage
+end
+
+showpage
+
+%%Trailer
+%%EOF
+
+%%EndDocument
+ @endspecial 2612 x Ft(Figure)585 b(1:)901 b(Results)586
+b(for)f(the)h Fr(cvfnx)h Ft(example)e(problem.)1082 b(The)586
+b(time)f(ev)-34 b(olution)585 b(of)h(the)g(squared)4000
+28872 y(solution)458 b(norm,)470 b Fp(jj)p Fm(u)p Fp(jj)14252
+28432 y Fl(2)14776 28872 y Ft(,)g(is)457 b(sho)-34 b(wn)459
+b(on)e(the)h(left.)697 b(The)458 b(\257gure)f(on)g(the)h(righ)-34
+b(t)457 b(sho)-34 b(ws)459 b(the)e(ev)-34 b(olution)458
+b(of)4000 30377 y(the)405 b(sensitivities)e(of)i Fp(jj)p
+Fm(u)p Fp(jj)16029 29937 y Fl(2)16957 30377 y Ft(with)g(resp)34
+b(ect)404 b(to)g(the)h(t)-34 b(w)g(o)405 b(problem)f(parameters.)p
+Black 4000 34983 45 1329 v 23441 34585 a Fg(Sensitivity)583
+b(1)2325 b(3.8668e+00)p 51956 34983 V 4000 36312 V 23441
+35913 a(Sensitivity)583 b(2)2325 b(6.2020e-01)p 51956
+36312 V 4000 37640 V 4844 37241 a
+(------------------------------------------------------------)p
+51956 37640 V 4000 38968 V 4844 38570 a(1.000e+00)1164
+b(4)e(9.525e-03)1745 b(182)p 51956 38968 V 4000 40297
+V 23441 39898 a(Solution)5232 b(8.7533e-01)p 51956 40297
+V 4000 41625 V 23441 41227 a(Sensitivity)583 b(1)2325
+b(2.1743e+00)p 51956 41625 V 4000 42953 V 23441 42555
+a(Sensitivity)583 b(2)2325 b(1.8909e-01)p 51956 42953
+V 4000 44282 V 4844 43883 a
+(------------------------------------------------------------)p
+51956 44282 V 4000 45610 V 4844 45212 a(1.500e+00)1164
+b(3)e(1.040e-02)1745 b(255)p 51956 45610 V 4000 46938
+V 23441 46540 a(Solution)5232 b(2.4949e-01)p 51956 46938
+V 4000 48267 V 23441 47868 a(Sensitivity)583 b(1)2325
+b(9.1825e-01)p 51956 48267 V 4000 49595 V 23441 49197
+a(Sensitivity)583 b(2)2325 b(7.3922e-02)p 51956 49595
+V 4000 50923 V 4844 50525 a
+(------------------------------------------------------------)p
+51956 50923 V 4000 52252 V 4844 51853 a(2.000e+00)1164
+b(2)e(1.271e-02)1745 b(330)p 51956 52252 V 4000 53580
+V 23441 53182 a(Solution)5232 b(7.1097e-02)p 51956 53580
+V 4000 54909 V 23441 54510 a(Sensitivity)583 b(1)2325
+b(3.4667e-01)p 51956 54909 V 4000 56237 V 23441 55838
+a(Sensitivity)583 b(2)2325 b(2.8228e-02)p 51956 56237
+V 4000 57565 V 4844 57167 a
+(------------------------------------------------------------)p
+51956 57565 V 4000 58894 V 4844 58495 a(2.500e+00)1164
+b(2)e(1.629e-02)1745 b(402)p 51956 58894 V 4000 60222
+V 23441 59823 a(Solution)5232 b(2.0260e-02)p 51956 60222
+V 4000 61550 V 23441 61152 a(Sensitivity)583 b(1)2325
+b(1.2301e-01)p 51956 61550 V 4000 62879 V 23441 62480
+a(Sensitivity)583 b(2)2325 b(1.0085e-02)p 51956 62879
+V 4000 64207 V 4844 63808 a
+(------------------------------------------------------------)p
+51956 64207 V 4000 65535 V 4844 65137 a(3.000e+00)1164
+b(2)e(3.820e-03)1745 b(473)p 51956 65535 V 4000 66864
+V 23441 66465 a(Solution)5232 b(5.7734e-03)p 51956 66864
+V 4000 68192 V 23441 67794 a(Sensitivity)583 b(1)2325
+b(4.1956e-02)p 51956 68192 V 4000 69520 V 23441 69122
+a(Sensitivity)583 b(2)2325 b(3.4556e-03)p 51956 69520
+V 4000 70849 V 4844 70450 a
+(------------------------------------------------------------)p
+51956 70849 V 4000 72177 V 4844 71779 a(3.500e+00)1164
+b(2)e(8.988e-03)1745 b(540)p 51956 72177 V 4000 73505
+V 23441 73107 a(Solution)5232 b(1.6451e-03)p 51956 73505
+V 4000 74834 V 23441 74435 a(Sensitivity)583 b(1)2325
+b(1.3922e-02)p 51956 74834 V 4000 76162 V 23441 75764
+a(Sensitivity)583 b(2)2325 b(1.1669e-03)p 51956 76162
+V 4000 77491 V 4844 77092 a
+(------------------------------------------------------------)p
+51956 77491 V 4000 78819 V 4844 78420 a(4.000e+00)1164
+b(2)e(1.199e-02)1745 b(617)p 51956 78819 V Black 27697
+81741 a Ft(7)p Black eop
+%%Page: 8 12
+8 11 bop Black Black 0 8037 45 1329 v 19441 7638 a Fg(Solution)5232
+b(4.6945e-04)p 47956 8037 V 0 9365 V 19441 8966 a(Sensitivity)583
+b(1)2325 b(4.5300e-03)p 47956 9365 V 0 10693 V 19441
+10295 a(Sensitivity)583 b(2)2325 b(3.8674e-04)p 47956
+10693 V 0 12022 V 844 11623 a
+(------------------------------------------------------------)p
+47956 12022 V 0 13350 V 844 12951 a(4.500e+00)1164 b(3)e(4.744e-03)1745
+b(680)p 47956 13350 V 0 14678 V 19441 14280 a(Solution)5232
+b(1.3422e-04)p 47956 14678 V 0 16007 V 19441 15608 a(Sensitivity)583
+b(1)2325 b(1.4548e-03)p 47956 16007 V 0 17335 V 19441
+16936 a(Sensitivity)583 b(2)2325 b(1.2589e-04)p 47956
+17335 V 0 18663 V 844 18265 a
+(------------------------------------------------------------)p
+47956 18663 V 0 19992 V 844 19593 a(5.000e+00)1164 b(1)e(4.010e-03)1745
+b(757)p 47956 19992 V 0 21320 V 19441 20922 a(Solution)5232
+b(3.8656e-05)p 47956 21320 V 0 22648 V 19441 22250 a(Sensitivity)583
+b(1)2325 b(4.6451e-04)p 47956 22648 V 0 23977 V 19441
+23578 a(Sensitivity)583 b(2)2325 b(4.0616e-05)p 47956
+23977 V 0 25305 V 844 24907 a
+(------------------------------------------------------------)p
+47956 25305 V 0 26633 V 47956 26633 V 0 27962 V 844 27563
+a(Final)582 b(Statistics)p 47956 27962 V 0 29290 V 47956
+29290 V 0 30619 V 844 30220 a(nst)2907 b(=)1743 b(757)p
+47956 30619 V 0 31947 V 47956 31947 V 0 33275 V 844 32877
+a(nfe)2907 b(=)1162 b(1372)p 47956 33275 V 0 34604 V
+844 34205 a(netf)2326 b(=)2905 b(1)2325 b(nsetups)1163
+b(=)2906 b(0)p 47956 34604 V 0 35932 V 844 35533 a(nni)h(=)1162
+b(1369)2325 b(ncfn)2906 b(=)1744 b(117)p 47956 35932
+V 0 37260 V 47956 37260 V 0 38589 V 844 38190 a(nfSe)2326
+b(=)1162 b(2744)2325 b(nfeS)2906 b(=)1163 b(5488)p 47956
+38589 V 0 39917 V 844 39518 a(netfs)1745 b(=)2905 b(0)2325
+b(nsetupsS)582 b(=)2906 b(0)p 47956 39917 V 0 41245 V
+844 40847 a(nniS)2326 b(=)2905 b(0)2325 b(ncfnS)g(=)2906
+b(0)p 47956 41245 V 0 42045 45 801 v 47956 42045 V 0
+42089 48001 45 v 1882 44869 a Ft(The)428 b(output)i(generated)f(b)-34
+b(y)428 b Fr(cvfnx)i Ft(when)f(computing)g(sensitivities)e(with)i(the)g
+Fr(CV)p 41254 44869 382 45 v 458 w(STAGGERED1)0 46374
+y Ft(metho)34 b(d)405 b(and)g(partial)f(error)f(con)-34
+b(trol)404 b(\()p Fr(cvfnx)639 b(-sensi)f(stg1)g(f)p
+Ft(\))405 b(is:)p 0 48795 17898 45 v 18479 48861 a Fg(cvfnx)582
+b(sample)g(output)p 30102 48795 V 0 49595 45 801 v 47956
+49595 V 0 50923 45 1329 v 47956 50923 V 0 52252 V 844
+51853 a(1-D)g(advection-diffusion)i(equation,)e(mesh)g(size)g(=)f(10)p
+47956 52252 V 0 53580 V 844 53182 a(Sensitivity:)i(YES)f(\()f
+(STAGGERED)i(+)e(PARTIAL)h(ERROR)g(CONTROL)g(\))p 47956
+53580 V 0 54909 V 47956 54909 V 0 56237 V 844 55838 a
+(============================================================)p
+47956 56237 V 0 57565 V 3750 57167 a(T)2906 b(Q)4068
+b(H)3487 b(NST)11624 b(Max)581 b(norm)p 47956 57565 V
+0 58894 V 844 58495 a
+(============================================================)p
+47956 58894 V 0 60222 V 844 59823 a(5.000e-01)1164 b(3)e(7.876e-03)1745
+b(115)p 47956 60222 V 0 61550 V 19441 61152 a(Solution)5232
+b(3.0529e+00)p 47956 61550 V 0 62879 V 19441 62480 a(Sensitivity)583
+b(1)2325 b(3.8668e+00)p 47956 62879 V 0 64207 V 19441
+63808 a(Sensitivity)583 b(2)2325 b(6.2020e-01)p 47956
+64207 V 0 65535 V 844 65137 a
+(------------------------------------------------------------)p
+47956 65535 V 0 66864 V 844 66465 a(1.000e+00)1164 b(3)e(1.145e-02)1745
+b(208)p 47956 66864 V 0 68192 V 19441 67794 a(Solution)5232
+b(8.7533e-01)p 47956 68192 V 0 69520 V 19441 69122 a(Sensitivity)583
+b(1)2325 b(2.1743e+00)p 47956 69520 V 0 70849 V 19441
+70450 a(Sensitivity)583 b(2)2325 b(1.8909e-01)p 47956
+70849 V 0 72177 V 844 71779 a
+(------------------------------------------------------------)p
+47956 72177 V 0 73505 V 844 73107 a(1.500e+00)1164 b(2)e(9.985e-03)1745
+b(287)p 47956 73505 V 0 74834 V 19441 74435 a(Solution)5232
+b(2.4948e-01)p 47956 74834 V 0 76162 V 19441 75764 a(Sensitivity)583
+b(1)2325 b(9.1826e-01)p 47956 76162 V 0 77491 V 19441
+77092 a(Sensitivity)583 b(2)2325 b(7.3913e-02)p 47956
+77491 V 0 78819 V 844 78420 a
+(------------------------------------------------------------)p
+47956 78819 V Black 23697 81741 a Ft(8)p Black eop
+%%Page: 9 13
+9 12 bop Black Black 4000 8037 45 1329 v 4844 7638 a
+Fg(2.000e+00)1164 b(2)e(4.223e-03)1745 b(388)p 51956
+8037 V 4000 9365 V 23441 8966 a(Solution)5232 b(7.1096e-02)p
+51956 9365 V 4000 10693 V 23441 10295 a(Sensitivity)583
+b(1)2325 b(3.4667e-01)p 51956 10693 V 4000 12022 V 23441
+11623 a(Sensitivity)583 b(2)2325 b(2.8228e-02)p 51956
+12022 V 4000 13350 V 4844 12951 a
+(------------------------------------------------------------)p
+51956 13350 V 4000 14678 V 4844 14280 a(2.500e+00)1164
+b(2)e(4.220e-03)1745 b(507)p 51956 14678 V 4000 16007
+V 23441 15608 a(Solution)5232 b(2.0261e-02)p 51956 16007
+V 4000 17335 V 23441 16936 a(Sensitivity)583 b(1)2325
+b(1.2301e-01)p 51956 17335 V 4000 18663 V 23441 18265
+a(Sensitivity)583 b(2)2325 b(1.0085e-02)p 51956 18663
+V 4000 19992 V 4844 19593 a
+(------------------------------------------------------------)p
+51956 19992 V 4000 21320 V 4844 20922 a(3.000e+00)1164
+b(2)e(4.220e-03)1745 b(625)p 51956 21320 V 4000 22648
+V 23441 22250 a(Solution)5232 b(5.7738e-03)p 51956 22648
+V 4000 23977 V 23441 23578 a(Sensitivity)583 b(1)2325
+b(4.1957e-02)p 51956 23977 V 4000 25305 V 23441 24907
+a(Sensitivity)583 b(2)2325 b(3.4557e-03)p 51956 25305
+V 4000 26633 V 4844 26235 a
+(------------------------------------------------------------)p
+51956 26633 V 4000 27962 V 4844 27563 a(3.500e+00)1164
+b(2)e(4.220e-03)1745 b(744)p 51956 27962 V 4000 29290
+V 23441 28892 a(Solution)5232 b(1.6454e-03)p 51956 29290
+V 4000 30619 V 23441 30220 a(Sensitivity)583 b(1)2325
+b(1.3923e-02)p 51956 30619 V 4000 31947 V 23441 31548
+a(Sensitivity)583 b(2)2325 b(1.1670e-03)p 51956 31947
+V 4000 33275 V 4844 32877 a
+(------------------------------------------------------------)p
+51956 33275 V 4000 34604 V 4844 34205 a(4.000e+00)1164
+b(2)e(4.220e-03)1745 b(862)p 51956 34604 V 4000 35932
+V 23441 35533 a(Solution)5232 b(4.6887e-04)p 51956 35932
+V 4000 37260 V 23441 36862 a(Sensitivity)583 b(1)2325
+b(4.5282e-03)p 51956 37260 V 4000 38589 V 23441 38190
+a(Sensitivity)583 b(2)2325 b(3.8632e-04)p 51956 38589
+V 4000 39917 V 4844 39518 a
+(------------------------------------------------------------)p
+51956 39917 V 4000 41245 V 4844 40847 a(4.500e+00)1164
+b(2)e(4.220e-03)1745 b(981)p 51956 41245 V 4000 42574
+V 23441 42175 a(Solution)5232 b(1.3364e-04)p 51956 42574
+V 4000 43902 V 23441 43504 a(Sensitivity)583 b(1)2325
+b(1.4502e-03)p 51956 43902 V 4000 45230 V 23441 44832
+a(Sensitivity)583 b(2)2325 b(1.2546e-04)p 51956 45230
+V 4000 46559 V 4844 46160 a
+(------------------------------------------------------------)p
+51956 46559 V 4000 47887 V 4844 47489 a(5.000e+00)1164
+b(2)e(4.220e-03)i(1099)p 51956 47887 V 4000 49215 V 23441
+48817 a(Solution)5232 b(3.8105e-05)p 51956 49215 V 4000
+50544 V 23441 50145 a(Sensitivity)583 b(1)2325 b(4.5891e-04)p
+51956 50544 V 4000 51872 V 23441 51474 a(Sensitivity)583
+b(2)2325 b(4.0166e-05)p 51956 51872 V 4000 53201 V 4844
+52802 a(------------------------------------------------------------)p
+51956 53201 V 4000 54529 V 51956 54529 V 4000 55857 V
+4844 55459 a(Final)582 b(Statistics)p 51956 55857 V 4000
+57186 V 51956 57186 V 4000 58514 V 4844 58115 a(nst)2907
+b(=)1162 b(1099)p 51956 58514 V 4000 59842 V 51956 59842
+V 4000 61171 V 4844 60772 a(nfe)2907 b(=)1162 b(3157)p
+51956 61171 V 4000 62499 V 4844 62100 a(netf)2326 b(=)2905
+b(3)2325 b(nsetups)1163 b(=)2906 b(0)p 51956 62499 V
+4000 63827 V 4844 63429 a(nni)h(=)1162 b(1657)2325 b(ncfn)2906
+b(=)2325 b(11)p 51956 63827 V 4000 65156 V 51956 65156
+V 4000 66484 V 4844 66086 a(nfSe)h(=)1162 b(4838)2325
+b(nfeS)2906 b(=)1163 b(9676)p 51956 66484 V 4000 67812
+V 4844 67414 a(netfs)1745 b(=)2905 b(0)2325 b(nsetupsS)582
+b(=)2906 b(0)p 51956 67812 V 4000 69141 V 4844 68742
+a(nniS)2326 b(=)1162 b(2418)2325 b(ncfnS)g(=)1744 b(398)p
+51956 69141 V 4000 69941 45 801 v 51956 69941 V 4000
+69985 48001 45 v Black 27697 81741 a Ft(9)p Black eop
+%%Page: 10 14
+10 13 bop Black Black 0 7638 a Fo(2.2)1495 b(A)499 b(serial)g(dense)g
+(example:)665 b Fn(cvfdx)0 10041 y Ft(This)575 b(example)e(is)h(a)g(mo)
+34 b(di\257cation)574 b(of)h(the)f(c)-34 b(hemical)574
+b(kinetics)f(problem)h(describ)34 b(ed)574 b(in)g([1)o(])g(whic)-34
+b(h)0 11546 y(computes,)454 b(in)443 b(addition)h(to)g(the)g(solution)g
+(of)g(the)f(IVP)-101 b(,)443 b(sensitivities)g(of)h(the)f(solution)h
+(with)h(resp)34 b(ect)0 13052 y(to)404 b(the)h(three)f(reaction)g
+(rates)g(in)-34 b(v)g(olv)g(ed)404 b(in)h(the)f(mo)34
+b(del.)538 b(The)405 b(ODEs)f(are)f(written)i(as:)17403
+15611 y(_)-555 b Fm(y)17779 15793 y Fl(1)18642 15611
+y Ft(=)336 b Fp(\241)p Fm(p)21474 15793 y Fl(1)22000
+15611 y Fm(y)22594 15793 y Fl(1)23389 15611 y Ft(+)269
+b Fm(p)25211 15793 y Fl(2)25737 15611 y Fm(y)26331 15793
+y Fl(2)26857 15611 y Fm(y)27451 15793 y Fl(3)17403 17577
+y Ft(_)-555 b Fm(y)17779 17759 y Fl(2)18642 17577 y Ft(=)336
+b Fm(p)20531 17759 y Fl(1)21057 17577 y Fm(y)21651 17759
+y Fl(1)22446 17577 y Fp(\241)269 b Fm(p)24268 17759 y
+Fl(2)24794 17577 y Fm(y)25388 17759 y Fl(2)25914 17577
+y Fm(y)26508 17759 y Fl(3)27304 17577 y Fp(\241)g Fm(p)29126
+17759 y Fl(3)29651 17577 y Fm(y)30288 17076 y Fl(2)30245
+17876 y(2)17403 19542 y Ft(_)-555 b Fm(y)17779 19724
+y Fl(3)18642 19542 y Ft(=)336 b Fm(p)20531 19724 y Fl(3)21057
+19542 y Fm(y)21694 19042 y Fl(2)21651 19842 y(2)22422
+19542 y Fm(;)46451 17579 y Ft(\(6\))0 22341 y(with)324
+b(initial)e(conditions)i(at)f Fm(t)13655 22523 y Fl(0)14517
+22341 y Ft(=)336 b(0,)j Fm(y)17672 22523 y Fl(1)18535
+22341 y Ft(=)d(1)323 b(and)h Fm(y)23613 22523 y Fl(2)24475
+22341 y Ft(=)337 b Fm(y)26349 22523 y Fl(3)27212 22341
+y Ft(=)f(0.)511 b(The)324 b(nominal)f(v)-67 b(alues)322
+b(of)h(the)g(reaction)0 23847 y(rate)459 b(constan)-34
+b(ts)462 b(are)d Fm(p)10662 24029 y Fl(1)11617 23847
+y Ft(=)428 b(0)p Fm(:)p Ft(04,)473 b Fm(p)16563 24029
+y Fl(2)17518 23847 y Ft(=)429 b(10)20102 23407 y Fl(4)21087
+23847 y Ft(and)461 b Fm(p)24110 24029 y Fl(3)25065 23847
+y Ft(=)428 b(3)307 b Fp(\242)f Ft(10)29204 23407 y Fl(7)29730
+23847 y Ft(.)704 b(The)461 b(sensitivit)-34 b(y)459 b(systems)h(that)g
+(are)0 25352 y(solv)-34 b(ed)404 b(together)h(with)g(\(6\))f(are)4219
+29722 y(_)-520 b Fm(s)4604 29904 y Fk(i)5317 29722 y
+Ft(=)6596 27285 y Ff(2)6596 29467 y(4)7404 28214 y Fp(\241)p
+Fm(p)8957 28396 y Fl(1)13233 28214 y Fm(p)13843 28396
+y Fl(2)14368 28214 y Fm(y)14962 28396 y Fl(3)19710 28214
+y Fm(p)20320 28396 y Fl(2)20845 28214 y Fm(y)21439 28396
+y Fl(2)7875 29720 y Fm(p)8485 29902 y Fl(1)10590 29720
+y Fp(\241)p Fm(p)12143 29902 y Fl(2)12668 29720 y Fm(y)13262
+29902 y Fl(3)14057 29720 y Fp(\241)269 b Ft(2)p Fm(p)16485
+29902 y Fl(3)17011 29720 y Fm(y)17605 29902 y Fl(2)19238
+29720 y Fp(\241)p Fm(p)20791 29902 y Fl(2)21317 29720
+y Fm(y)21911 29902 y Fl(2)8140 31225 y Ft(0)4183 b(2)p
+Fm(p)14145 31407 y Fl(3)14671 31225 y Fm(y)15265 31407
+y Fl(2)20534 31225 y Ft(0)22437 27285 y Ff(3)22437 29467
+y(5)23447 29722 y Fm(s)24015 29904 y Fk(i)24660 29722
+y Ft(+)26136 28902 y Fm(@)67 b(f)p 26005 29443 1697 49
+v 26005 30553 a(@)g(p)27326 30735 y Fk(i)28238 29722
+y Fm(;)1414 b(s)30557 29904 y Fk(i)30933 29722 y Ft(\()p
+Fm(t)31842 29904 y Fl(0)32368 29722 y Ft(\))337 b(=)34456
+27285 y Ff(2)34456 29467 y(4)35264 28214 y Ft(0)35264
+29720 y(0)35264 31225 y(0)35870 27285 y Ff(3)35870 29467
+y(5)37284 29722 y Fm(;)1414 b(i)336 b Ft(=)g(1)p Fm(;)202
+b Ft(2)p Fm(;)g Ft(3)4375 33861 y Fm(@)67 b(f)p 4169
+34402 1847 49 v 4169 35512 a(@)g(p)5490 35694 y Fl(1)6485
+34681 y Ft(=)7764 32244 y Ff(2)7764 34426 y(4)8572 33173
+y Fp(\241)p Fm(y)10109 33355 y Fl(1)9044 34679 y Fm(y)9638
+34861 y Fl(1)9301 36184 y Ft(0)10635 32244 y Ff(3)10635
+34426 y(5)11645 34681 y Fm(;)13735 33861 y(@)g(f)p 13529
+34402 V 13529 35512 a(@)g(p)14850 35694 y Fl(2)15845
+34681 y Ft(=)17125 32244 y Ff(2)17125 34426 y(4)18404
+33173 y Fm(y)18998 33355 y Fl(2)19524 33173 y Fm(y)20118
+33355 y Fl(3)17933 34679 y Fp(\241)p Fm(y)19470 34861
+y Fl(2)19996 34679 y Fm(y)20590 34861 y Fl(3)19221 36184
+y Ft(0)21116 32244 y Ff(3)21116 34426 y(5)22126 34681
+y Fm(;)24215 33861 y(@)g(f)p 24009 34402 V 24009 35512
+a(@)g(p)25330 35694 y Fl(3)26325 34681 y Ft(=)27605 32244
+y Ff(2)27605 34426 y(4)29163 33173 y Ft(0)28413 34679
+y Fp(\241)p Fm(y)29993 34239 y Fl(2)29950 35004 y(2)28884
+36184 y Fm(y)29521 35745 y Fl(2)29478 36509 y(2)30519
+32244 y Ff(3)30519 34426 y(5)31731 34681 y Fm(:)46451
+32201 y Ft(\(7\))1882 39042 y(The)450 b(source)f(co)34
+b(de)448 b(for)i(this)g(example)e(is)h(listed)h(in)f(App.)675
+b(B.)f(The)449 b(main)h(program)f(is)g(describ)34 b(ed)0
+40548 y(b)g(elo)-34 b(w)454 b(with)g(emphasis)g(on)g(the)g(sensitivit)
+-34 b(y)454 b(related)f(comp)34 b(onen)-34 b(ts.)688
+b(These)454 b(explanations,)467 b(together)0 42053 y(with)510
+b(those)g(giv)-34 b(en)510 b(for)f(the)h(co)34 b(de)509
+b Fr(cvdx)i Ft(in)f([1],)535 b(will)509 b(also)g(pro)-34
+b(vide)510 b(the)g(user)f(with)h(a)g(template)g(for)0
+43559 y(instrumen)-34 b(ting)292 b(an)e(existing)f(sim)-34
+b(ulation)291 b(co)34 b(de)289 b(to)h(p)34 b(erform)290
+b(forw)-34 b(ard)290 b(sensitivit)-34 b(y)290 b(analysis.)500
+b(As)290 b(will)f(b)34 b(e)0 45064 y(seen)373 b(from)h(this)g(example,)
+k(an)c(existing)f(sim)-34 b(ulation)374 b(co)34 b(de)373
+b(can)g(b)34 b(e)374 b(mo)34 b(di\257ed)373 b(to)h(compute)g
+(sensitivit)-34 b(y)0 46570 y(v)-67 b(ariables)360 b(\(in)h(addition)h
+(to)g(state)g(v)-67 b(ariables\))360 b(b)-34 b(y)361
+b(only)g(inserting)g(a)g(few)h Fq(cv)-27 b(odes)362 b
+Ft(calls)e(in)-34 b(to)362 b(the)g(main)0 48075 y(program.)1882
+49639 y(First)573 b(note)g(that)h(no)g(new)f(header)g(\257les)g(need)g
+(b)34 b(e)572 b(included.)1046 b(In)572 b(addition)i(to)g(the)f
+(constan)-34 b(ts)0 51145 y(already)411 b(de\257ned)h(in)f
+Fr(cvdx)p Ft(,)j(w)-34 b(e)412 b(de\257ne)g(the)g(n)-34
+b(um)g(b)34 b(er)412 b(of)g(mo)34 b(del)411 b(parameters,)h
+Fr(NP)g Ft(\(=)349 b(3\),)413 b(the)f(n)-34 b(um)g(b)34
+b(er)0 52650 y(of)404 b(sensitivit)-34 b(y)405 b(parameters,)e
+Fr(NS)i Ft(\(=)337 b(3\),)404 b(and)h(a)f(constan)-34
+b(t)406 b Fr(ZERO)f Ft(=)337 b(0)p Fm(:)p Ft(0.)1882
+54215 y(As)425 b(men)-34 b(tioned)426 b(in)f Fp(x)p Ft(6.1,)k(the)c
+(user)g(data)h(structure)g Fr(f)p 27308 54215 382 45
+v 458 w(data)g Ft(m)-34 b(ust)426 b(pro)-34 b(vide)425
+b(access)g(to)g(the)g(arra)-34 b(y)0 55720 y(of)417 b(mo)34
+b(del)415 b(parameters)h(as)h(the)f(only)g(w)-34 b(a)g(y)417
+b(for)g Fq(cv)-27 b(odes)417 b Ft(to)g(comm)-34 b(unicate)416
+b(parameter)g(v)-67 b(alues)416 b(to)h(the)0 57226 y(righ)-34
+b(t-hand)435 b(side)e(function)h Fr(f)p Ft(.)625 b(In)433
+b(the)g Fr(cvfdx)i Ft(example)d(this)i(is)e(done)i(b)-34
+b(y)433 b(de\257ning)h Fr(f)p 40474 57226 V 458 w(data)h
+Ft(to)e(b)34 b(e)433 b(of)0 58731 y(t)-34 b(yp)34 b(e)355
+b Fr(UserData)p Ft(,)367 b(i.e.)521 b(a)355 b(p)34 b(oin)-34
+b(ter)355 b(to)g(a)g(structure)h(whic)-34 b(h)355 b(con)-34
+b(tains)356 b(an)f(arra)-34 b(y)355 b(of)g Fr(NP)g(realtype)j
+Ft(v)-67 b(alues.)1882 60296 y(F)-101 b(our)381 b(user-supplied)h
+(functions)g(are)e(de\257ned.)532 b(The)381 b(function)h
+Fr(f)p Ft(,)j(passed)d(to)f Fr(CVodeMalloc)p Ft(,)389
+b(com-)0 61801 y(putes)501 b(the)g(righ-hand)g(side)f(of)h(the)f(ODE)g
+(\(6\),)524 b(while)500 b Fr(Jac)i Ft(computes)f(the)f(dense)h
+(Jacobian)f(of)h(the)0 63307 y(problem)592 b(and)g(is)g(attac)-34
+b(hed)593 b(to)f(the)h(dense)f(linear)f(solv)-34 b(er)591
+b(mo)34 b(dule)592 b Fq(cvdense)h Ft(through)g(a)f(call)f(to)0
+64812 y Fr(CVDenseSetJacFn)p Ft(.)754 b(The)474 b(function)i
+Fr(fS)e Ft(computes)h(the)g(righ)-34 b(t-hand)475 b(side)f(of)h(eac)-34
+b(h)474 b(sensitivit)-34 b(y)474 b(sys-)0 66318 y(tem)336
+b(\(7\))g(for)g(one)f(parameter)h(at)g(a)f(time)h(and)g(is)g(therefore)
+f(of)h(t)-34 b(yp)34 b(e)336 b Fr(SensRhs1)p Ft(.)518
+b(Finally)-101 b(,)349 b(the)336 b(function)0 67823 y
+Fr(ewt)405 b Ft(computes)g(the)g(error)e(w)-34 b(eigh)g(ts)405
+b(for)f(the)h(WRMS)g(norm)f(estimations)h(within)g Fq(cv)-27
+b(odes)p Ft(.)1882 69388 y(The)569 b(program)f(prologue)h(ends)g(b)-34
+b(y)568 b(de\257ning)i(six)e(priv)-67 b(ate)567 b(help)34
+b(er)568 b(functions.)1033 b(The)569 b(\257rst)g(t)-34
+b(w)g(o,)0 70893 y Fr(ProcessArgs)504 b Ft(and)c Fr(WrongArgs)k
+Ft(\(whic)-34 b(h)501 b(w)-34 b(ould)501 b(not)g(b)34
+b(e)499 b(presen)-34 b(t)501 b(in)f(a)g(t)-34 b(ypical)500
+b(user)g(co)34 b(de\),)523 b(parse)0 72399 y(and)349
+b(v)-34 b(erify)347 b(the)i(command)g(line)f(argumen)-34
+b(ts)349 b(to)f Fr(cvfdx)p Ft(,)361 b(resp)34 b(ectiv)-34
+b(ely)-101 b(.)518 b(After)349 b(eac)-34 b(h)348 b(successful)h(return)
+0 73904 y(from)373 b(the)f(main)h Fq(cv)-27 b(odes)374
+b Ft(in)-34 b(tegrator,)379 b(the)372 b(functions)i Fr(PrintOutput)i
+Ft(and)e Fr(PrintOutputS)i Ft(prin)-34 b(t)374 b(the)0
+75409 y(state)453 b(and)g(sensitivit)-34 b(y)453 b(v)-67
+b(ariables,)463 b(resp)34 b(ectiv)-34 b(ely)-101 b(.)682
+b(The)453 b(function)h Fr(PrintFinalStats)j Ft(is)c(caled)f(after)0
+76915 y(completion)389 b(of)g(the)g(in)-34 b(tegration)390
+b(to)f(prin)-34 b(t)390 b(solv)-34 b(er)388 b(statistics.)534
+b(The)389 b(function)i Fr(check)p 39649 76915 V 459 w(flag)g
+Ft(is)d(used)i(to)0 78420 y(c)-34 b(hec)g(k)404 b(the)h(return)f
+(\260ag)h(from)f(an)-34 b(y)404 b(of)h(the)f Fq(cv)-27
+b(odes)406 b Ft(in)-34 b(terface)404 b(functions)i(called)d(b)-34
+b(y)404 b Fr(cvfdx)p Ft(.)p Black 23394 81741 a(10)p
+Black eop
+%%Page: 11 15
+11 14 bop Black Black 5882 7638 a Ft(The)299 b Fr(main)g
+Ft(function)h(b)34 b(egins)298 b(with)h(de\257nitions)h(and)f(t)-34
+b(yp)34 b(e)298 b(declarations.)504 b(Among)299 b(these,)319
+b(it)298 b(de\257nes)4000 9143 y(the)605 b(v)-34 b(ector)604
+b Fr(pbar)i Ft(of)f Fr(NS)g Ft(scaling)f(factors)h(for)f(the)h(mo)34
+b(del)604 b(parameters)h Fr(p)f Ft(and)i(the)f(arra)-34
+b(y)604 b Fr(yS)h Ft(of)4000 10649 y Fr(N)p 4712 10649
+382 45 v 459 w(Vector)336 b Ft(whic)-34 b(h)336 b(will)e(con)-34
+b(tain)336 b(the)f(initial)g(conditions)g(and)h(solutions)g(for)e(the)i
+(sensitivit)-34 b(y)334 b(v)-67 b(ariables.)4000 12154
+y(It)351 b(also)g(declares)f(the)h(v)-67 b(ariable)350
+b Fr(data)i Ft(of)g(t)-34 b(yp)34 b(e)351 b Fr(UserData)i
+Ft(whic)-34 b(h)352 b(will)f(con)-34 b(tain)352 b(the)f(user-de\257ned)
+h(data)4000 13660 y(structure)399 b(to)g(b)34 b(e)399
+b(passed)g(to)h Fq(cv)-27 b(odes)400 b Ft(and)f(used)g(in)g(the)g(ev)
+-67 b(aluation)399 b(of)g(the)g(ODE)g(righ)-34 b(t-hand)400
+b(sides.)5882 15168 y(The)571 b(\257rst)g(co)34 b(de)570
+b(blo)34 b(c)-34 b(k)571 b(in)f Fr(main)i Ft(deals)f(with)g(reading)g
+(and)h(in)-34 b(terpreting)571 b(the)g(command)g(line)4000
+16674 y(argumen)-34 b(ts.)528 b Fr(cvfdx)370 b Ft(can)e(b)34
+b(e)368 b(run)h(with)g(or)f(without)j(sensitivit)-34
+b(y)368 b(computations)i(turned)f(on)g(and)g(with)4000
+18179 y(di\256eren)-34 b(t)405 b(selections)e(for)h(the)h(sensitivit)
+-34 b(y)404 b(metho)34 b(d)405 b(and)g(error)e(con)-34
+b(trol)404 b(strategy)-101 b(.)5882 19687 y(The)485 b(user's)g(data)h
+(structure)f(is)g(then)h(allo)34 b(cated)484 b(and)i(its)f(\257eld)g
+Fe(p)f Ft(is)h(set)g(to)g(con)-34 b(tain)486 b(the)g(v)-67
+b(alues)4000 21193 y(of)518 b(the)g(three)g(problem)g(parameters.)879
+b(The)519 b(next)f(blo)34 b(c)-34 b(k)517 b(of)h(co)34
+b(de)518 b(is)f(iden)-34 b(tical)518 b(to)g(that)h(in)f
+Fr(cvdx.c)4000 22698 y Ft(\(see)488 b([1]\))h(and)g(in)-34
+b(v)g(olv)g(es)489 b(allo)34 b(cation)488 b(and)h(initialization)f(of)h
+(the)g(state)g(v)-67 b(ariables)488 b(and)h(creation)f(and)4000
+24204 y(initialization)501 b(of)g Fr(cvode)p 15901 24204
+V 460 w(mem)p Ft(,)526 b(the)501 b Fq(cv)-27 b(odes)502
+b Ft(solv)-34 b(er)501 b(memory)-101 b(.)828 b(It)501
+b(sp)34 b(eci\257es)500 b(that)j(a)d(user-pro)-34 b(vided)4000
+25709 y(function)498 b(\()p Fr(ewt)p Ft(\))g(is)f(to)g(b)34
+b(e)496 b(used)h(for)g(computing)g(the)g(error)f(w)-34
+b(eigh)g(ts.)817 b(It)497 b(also)f(attac)-34 b(hes)498
+b Fq(cvdense)p Ft(,)4000 27215 y(with)377 b(a)f(non-)p
+Fr(NULL)i Ft(Jacobian)e(function,)383 b(as)376 b(the)g(linear)f(solv)
+-34 b(er)375 b(to)i(b)34 b(e)375 b(used)i(in)f(the)g(Newton)h
+(nonlinear)4000 28720 y(solv)-34 b(er.)5882 30228 y(If)402
+b(sensitivit)-34 b(y)401 b(analysis)h(is)g(enabled)g(\(through)i(the)e
+(command)g(line)g(argumen)-34 b(ts\),)403 b(the)g(main)f(pro-)4000
+31734 y(gram)477 b(will)g(then)h(set)f(the)h(scaling)e(parameters)i
+Fr(pbar)g Ft(\()p Fr(pbar)32936 31916 y Fk(i)33791 31734
+y Ft(=)f Fr(p)35847 31916 y Fk(i)36223 31734 y Ft(,)495
+b(whic)-34 b(h)478 b(can)f(t)-34 b(ypically)476 b(b)34
+b(e)477 b(used)4000 33239 y(for)540 b(nonzero)h(mo)34
+b(del)539 b(parameters\).)948 b(Next,)573 b(the)541 b(program)f(allo)34
+b(cates)540 b(memory)f(for)h Fr(yS)p Ft(,)h(b)-34 b(y)541
+b(calling)4000 34745 y(the)463 b Fq(nvector)p 11320 34745
+403 45 v 485 w(serial)g Ft(function)i Fr(N)p 21399 34745
+382 45 v 458 w(VNewVectorArray)p 31397 34745 V 464 w(Serial)p
+Ft(,)479 b(and)463 b(initializaes)f(all)g(sensitivit)-34
+b(y)4000 36250 y(v)-67 b(ariables)403 b(to)h(0)p Fm(:)p
+Ft(0.)5882 37759 y(The)270 b(call)e(to)i Fr(CVodeSensMalloc)275
+b Ft(sp)34 b(eci\257es)269 b(the)h(sensitivit)-34 b(y)269
+b(solution)h(metho)34 b(d)270 b(through)h Fr(sensi)p
+50067 37759 V 460 w(meth)4000 39264 y Ft(\(read)f(from)f(the)h(command)
+g(line)f(argumen)-34 b(ts\))271 b(as)f Fr(CV)p 28200
+39264 V 459 w(SIMULTANEOUS)p Ft(,)j Fr(CV)p 38173 39264
+V 459 w(STAGGERED)p Ft(,)f(or)d Fr(CV)p 47587 39264 V
+459 w(STAGGERED1)p Ft(.)5882 40772 y(The)517 b(next)h(four)f(calls)f
+(sp)34 b(ecify)517 b(optional)h(inputs)g(for)f(forw)-34
+b(ard)518 b(sensitivit)-34 b(y)517 b(analysis:)764 b(the)518
+b(user-)4000 42278 y(de\257ned)573 b(routine)f(for)g(ev)-67
+b(aluation)571 b(of)h(the)h(righ)-34 b(t-hand)573 b(sides)f(of)g
+(sensitivit)-34 b(y)572 b(equations,)614 b(the)572 b(error)4000
+43783 y(con)-34 b(trol)459 b(strategy)h(\(read)f(from)h(the)f(command)h
+(line)f(argumen)-34 b(ts\),)474 b(the)460 b(p)34 b(oin)-34
+b(ter)459 b(to)h(user)f(data)h(to)f(b)34 b(e)4000 45289
+y(passed)454 b(to)g Fr(fS)h Ft(whenev)-34 b(er)454 b(it)f(is)h(called,)
+465 b(and)454 b(the)g(information)h(on)f(the)g(mo)34
+b(del)453 b(parameters.)688 b(In)453 b(this)4000 46794
+y(example,)611 b(only)570 b Fr(pbar)i Ft(is)e(needed)h(for)f(the)h
+(estimation)g(of)g(absolute)g(senisitivit)-34 b(y)570
+b(v)-67 b(ariables)569 b(toler-)4000 48300 y(ances.)524
+b(Neither)361 b Fr(p)h Ft(nor)f Fr(plist)i Ft(are)e(required)f(since)h
+(the)h(sensitivit)-34 b(y)361 b(righ)-34 b(t-hand)363
+b(sides)e(are)g(computed)4000 49805 y(in)522 b(a)h(user-pro)-34
+b(vided)522 b(function)i(\()p Fr(fS)p Ft(\).)f(As)g(a)f(consequance,)
+552 b(w)-34 b(e)522 b(pass)h Fr(NULL)h Ft(for)e(the)h(corresp)34
+b(onding)4000 51311 y(argumen)-34 b(ts)405 b(in)g Fr
+(CVodeSetSensParams)p Ft(.)5882 52819 y(Note)306 b(that)h(this)f
+(example)f(uses)h(the)g(default)h(estimates)f(for)f(the)i(relativ)-34
+b(e)304 b(and)j(absolute)f(tolerances)4000 54324 y Fr(rtolS)471
+b Ft(and)f Fr(atolS)h Ft(for)f(sensitivit)-34 b(y)469
+b(v)-67 b(ariables,)485 b(based)470 b(on)f(the)h(tolerances)f(for)h
+(state)g(v)-67 b(ariables)468 b(and)4000 55830 y(the)405
+b(scaling)e(parameters)h Fr(pbar)i Ft(\(see)e Fp(x)p
+Ft(3.2)f(for)i(details\).)5882 57338 y(Next,)480 b(in)465
+b(a)g(lo)34 b(op)464 b(o)-34 b(v)g(er)465 b(the)h Fr(NOUT)g
+Ft(output)h(times,)480 b(the)465 b(program)g(calls)f(the)i(in)-34
+b(tegration)466 b(routine)4000 58844 y Fr(CVode)494 b
+Ft(whic)-34 b(h,)515 b(if)493 b(sensitivit)-34 b(y)492
+b(analysis)g(w)-34 b(as)493 b(initialized)f(through)i(the)f(call)e(to)i
+Fr(CVodeSensMalloc)p Ft(,)4000 60349 y(computes)399 b(b)34
+b(oth)399 b(state)g(and)h(sensitivit)-34 b(y)398 b(v)-67
+b(ariables.)535 b(Ho)-34 b(w)g(ev)g(er,)400 b Fr(CVode)g
+Ft(returns)f(only)f(the)h(state)g(solu-)4000 61855 y(tion)469
+b(at)g Fr(tout)h Ft(in)f(the)g(v)-34 b(ector)468 b Fr(y)p
+Ft(.)732 b(The)469 b(program)g(tests)g(the)g(return)g(from)g
+Fr(CVode)i Ft(for)d(a)h(v)-67 b(alue)468 b(other)4000
+63360 y(than)499 b Fr(CV)p 8270 63360 V 459 w(SUCCESS)h
+Ft(and)e(prin)-34 b(ts)499 b(the)f(state)g(v)-67 b(ariables.)818
+b(Sensitivit)-34 b(y)498 b(v)-67 b(ariables)497 b(at)h
+Fr(tout)h Ft(are)e(loaded)4000 64866 y(in)-34 b(to)437
+b Fr(yS)f Ft(b)-34 b(y)437 b(calling)e Fr(CVodeGetSens)p
+Ft(.)638 b(The)437 b(program)f(tests)h(the)f(return)g(from)h
+Fr(CVodeGetSens)j Ft(for)c(a)4000 66371 y(v)-67 b(alue)403
+b(other)i(than)g Fr(CV)p 14476 66371 V 459 w(SUCCESS)h
+Ft(and)f(then)g(prin)-34 b(ts)405 b(the)g(sensitivit)-34
+b(y)404 b(v)-67 b(ariables.)5882 67879 y(Finally)-101
+b(,)355 b(the)344 b(program)g(prin)-34 b(ts)344 b(some)g(statistics)g
+(\(function)i Fr(PrintFinalStats)p Ft(\))j(and)c(deallo)34
+b(cates)4000 69385 y(memory)269 b(through)i(calls)d(to)i
+Fr(N)p 17621 69385 V 459 w(VDestroy)p 23168 69385 V 461
+w(Serial)p Ft(,)298 b Fr(N)p 28716 69385 V 458 w(VDestroyVectorArray)p
+41258 69385 V 465 w(Serial)p Ft(,)g Fr(CVodeFree)p Ft(,)4000
+70890 y(and)405 b Fr(free)g Ft(for)g(the)f(user)g(data)h(structure.)
+5882 72399 y(The)413 b(user-supplied)h(functions)g Fr(f)f
+Ft(for)g(the)g(righ)-34 b(t-hand)415 b(side)d(of)i(the)f(original)f
+(ODEs)g(and)i Fr(Jac)g Ft(for)4000 73904 y(the)388 b(system)f(Jacobian)
+h(are)e(iden)-34 b(tical)388 b(to)f(those)h(in)f Fr(cvdx.c)j
+Ft(with)e(the)g(notable)g(exeption)f(that)h(mo)34 b(del)4000
+75409 y(parameters)411 b(are)g(extracted)g(from)g(the)h(user-de\257ned)
+g(data)g(structure)g Fr(f)p 38082 75409 V 459 w(data)p
+Ft(,)i(whic)-34 b(h)412 b(m)-34 b(ust)412 b(\257rst)g(b)34
+b(e)4000 76915 y(cast)518 b(to)g(the)g Fr(UserData)j
+Ft(t)-34 b(yp)34 b(e.)880 b(similarly)-101 b(,)544 b(the)519
+b(user-supplied)f(function)h Fr(ewt)g Ft(is)f(iden)-34
+b(tical)518 b(to)g(that)4000 78420 y(in)435 b Fr(cvdx.c)p
+Ft(.)634 b(The)435 b(user-supplied)h(function)h Fr(fS)f
+Ft(computes)g(the)f(sensitivit)-34 b(y)435 b(righ)-34
+b(t-hand)437 b(side)e(for)h(the)p Black 27394 81741 a(11)p
+Black eop
+%%Page: 12 16
+12 15 bop Black Black Black 0 33934 a @beginspecial -14
+ at llx 229 @lly 546 @urx 550 @ury 4320 @rwi @setspecial
+%%BeginDocument: cvfdx.eps
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: MATLAB, The Mathworks, Inc.
+%%Title: /home/radu/CODES/sundials/cvodes/doc/cvfdx.eps
+%%CreationDate: 10/19/2004  13:46:06
+%%DocumentNeededFonts: Helvetica
+%%+ Helvetica-Bold
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%Extensions: CMYK
+%%Pages: 1
+%%BoundingBox:   -14   229   546   550
+%%EndComments
+
+%%BeginProlog
+% MathWorks dictionary
+/MathWorks 160 dict begin
+% definition operators
+/bdef {bind def} bind def
+/ldef {load def} bind def
+/xdef {exch def} bdef
+/xstore {exch store} bdef
+% operator abbreviations
+/c  /clip ldef
+/cc /concat ldef
+/cp /closepath ldef
+/gr /grestore ldef
+/gs /gsave ldef
+/mt /moveto ldef
+/np /newpath ldef
+/cm /currentmatrix ldef
+/sm /setmatrix ldef
+/rm /rmoveto ldef
+/rl /rlineto ldef
+/s /show ldef
+/sc {setcmykcolor} bdef
+/sr /setrgbcolor ldef
+/sg /setgray ldef
+/w /setlinewidth ldef
+/j /setlinejoin ldef
+/cap /setlinecap ldef
+/rc {rectclip} bdef
+/rf {rectfill} bdef
+% page state control
+/pgsv () def
+/bpage {/pgsv save def} bdef
+/epage {pgsv restore} bdef
+/bplot /gsave ldef
+/eplot {stroke grestore} bdef
+% orientation switch
+/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def
+% coordinate system mappings
+/dpi2point 0 def
+% font control
+/FontSize 0 def
+/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0]
+  makefont setfont} bdef
+/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse
+  exch dup 3 1 roll findfont dup length dict begin
+  { 1 index /FID ne {def}{pop pop} ifelse } forall
+  /Encoding exch def currentdict end definefont pop} bdef
+/isroman {findfont /CharStrings get /Agrave known} bdef
+/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse
+  exch FMS} bdef
+/csm {1 dpi2point div -1 dpi2point div scale neg translate
+ dup landscapeMode eq {pop -90 rotate}
+  {rotateMode eq {90 rotate} if} ifelse} bdef
+% line types: solid, dotted, dashed, dotdash
+/SO { [] 0 setdash } bdef
+/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
+/DA { [6 dpi2point mul] 0 setdash } bdef
+/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4
+  dpi2point mul] 0 setdash } bdef
+% macros for lines and objects
+/L {lineto stroke} bdef
+/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef
+/AP {{rlineto} repeat} bdef
+/PDlw -1 def
+/W {/PDlw currentlinewidth def setlinewidth} def
+/PP {closepath eofill} bdef
+/DP {closepath stroke} bdef
+/MR {4 -2 roll moveto dup  0 exch rlineto exch 0 rlineto
+  neg 0 exch rlineto closepath} bdef
+/FR {MR stroke} bdef
+/PR {MR fill} bdef
+/L1i {{currentfile picstr readhexstring pop} image} bdef
+/tMatrix matrix def
+/MakeOval {newpath tMatrix currentmatrix pop translate scale
+0 0 1 0 360 arc tMatrix setmatrix} bdef
+/FO {MakeOval stroke} bdef
+/PO {MakeOval fill} bdef
+/PD {currentlinewidth 2 div 0 360 arc fill
+   PDlw -1 eq not {PDlw w /PDlw -1 def} if} def
+/FA {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef
+/PA {newpath tMatrix currentmatrix pop	translate 0 0 moveto scale
+  0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef
+/FAn {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef
+/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale
+  0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef
+/vradius 0 def /hradius 0 def /lry 0 def
+/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def
+/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef
+  /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly
+  vradius add translate hradius vradius scale 0 0 1 180 270 arc 
+  tMatrix setmatrix lrx hradius sub uly vradius add translate
+  hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix
+  lrx hradius sub lry vradius sub translate hradius vradius scale
+  0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub
+  translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix
+  closepath} bdef
+/FRR {MRR stroke } bdef
+/PRR {MRR fill } bdef
+/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix
+  closepath} bdef
+/FlrRR {MlrRR stroke } bdef
+/PlrRR {MlrRR fill } bdef
+/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix
+  closepath} bdef
+/FtbRR {MtbRR stroke } bdef
+/PtbRR {MtbRR fill } bdef
+/stri 6 array def /dtri 6 array def
+/smat 6 array def /dmat 6 array def
+/tmat1 6 array def /tmat2 6 array def /dif 3 array def
+/asub {/ind2 exch def /ind1 exch def dup dup
+  ind1 get exch ind2 get sub exch } bdef
+/tri_to_matrix {
+  2 0 asub 3 1 asub 4 0 asub 5 1 asub
+  dup 0 get exch 1 get 7 -1 roll astore } bdef
+/compute_transform {
+  dmat dtri tri_to_matrix tmat1 invertmatrix 
+  smat stri tri_to_matrix tmat2 concatmatrix } bdef
+/ds {stri astore pop} bdef
+/dt {dtri astore pop} bdef
+/db {2 copy /cols xdef /rows xdef mul dup 3 mul string
+  currentfile exch readhexstring pop
+  dup 0 3 index getinterval /rbmap xdef
+  dup 2 index dup getinterval /gbmap xdef
+  1 index dup 2 mul exch getinterval /bbmap xdef pop pop}bdef
+/it {gs np dtri aload pop moveto lineto lineto cp c
+  cols rows 8 compute_transform 
+  rbmap gbmap bbmap true 3 colorimage gr}bdef
+/il {newpath moveto lineto stroke}bdef
+currentdict end def
+%%EndProlog
+
+%%BeginSetup
+MathWorks begin
+
+0 cap
+
+end
+%%EndSetup
+
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox:   -14   229   546   550
+MathWorks begin
+bpage
+%%EndPageSetup
+
+%%BeginObject: obj1
+bplot
+
+/dpi2point 12 def
+portraitMode -0792 6756 csm
+
+  620   153  6724  3852 MR c np
+92 dict begin %Colortable dictionary
+/c0 { 0 0 0 sr} bdef
+/c1 { 1 1 1 sr} bdef
+/c2 { 1 0 0 sr} bdef
+/c3 { 0 1 0 sr} bdef
+/c4 { 0 0 1 sr} bdef
+/c5 { 1 1 0 sr} bdef
+/c6 { 1 0 1 sr} bdef
+/c7 { 0 1 1 sr} bdef
+c0
+1 j
+1 sg
+   0    0 8937 4032 PR
+6 w
+0 3225 4259 0 0 -3225 1117 3628 4 MP
+PP
+-4259 0 0 3225 4259 0 0 -3225 1117 3628 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+1117 3628 mt 5376 3628 L
+1117  403 mt 5376  403 L
+1117 3628 mt 1117  403 L
+5376 3628 mt 5376  403 L
+1117 3628 mt 5376 3628 L
+1117 3628 mt 1117  403 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3585 L
+1117  403 mt 1117  445 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1029 3810 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+1162 3736 mt 
+(0) s
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1968 3628 mt 1968 3585 L
+1968  403 mt 1968  445 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1880 3810 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+2013 3736 mt 
+(2) s
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+2820 3628 mt 2820 3585 L
+2820  403 mt 2820  445 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+2732 3810 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+2865 3736 mt 
+(4) s
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+3672 3628 mt 3672 3585 L
+3672  403 mt 3672  445 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+3584 3810 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+3717 3736 mt 
+(6) s
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+4524 3628 mt 4524 3585 L
+4524  403 mt 4524  445 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+4436 3810 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+4569 3736 mt 
+(8) s
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+5376 3628 mt 5376 3585 L
+5376  403 mt 5376  445 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+5266 3810 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+5399 3736 mt 
+(10) s
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1159 3628 L
+5376 3628 mt 5333 3628 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1016 3672 mt 
+(0) s
+1117 3466 mt 1138 3466 L
+5376 3466 mt 5354 3466 L
+1117 3305 mt 1138 3305 L
+5376 3305 mt 5354 3305 L
+1117 3144 mt 1138 3144 L
+5376 3144 mt 5354 3144 L
+1117 2983 mt 1138 2983 L
+5376 2983 mt 5354 2983 L
+1117 2821 mt 1138 2821 L
+5376 2821 mt 5354 2821 L
+1117 2660 mt 1138 2660 L
+5376 2660 mt 5354 2660 L
+1117 2499 mt 1138 2499 L
+5376 2499 mt 5354 2499 L
+1117 2338 mt 1138 2338 L
+5376 2338 mt 5354 2338 L
+1117 2176 mt 1138 2176 L
+5376 2176 mt 5354 2176 L
+1117 2015 mt 1159 2015 L
+5376 2015 mt 5333 2015 L
+ 916 2059 mt 
+(0.5) s
+1117 1854 mt 1138 1854 L
+5376 1854 mt 5354 1854 L
+1117 1693 mt 1138 1693 L
+5376 1693 mt 5354 1693 L
+1117 1531 mt 1138 1531 L
+5376 1531 mt 5354 1531 L
+1117 1370 mt 1138 1370 L
+5376 1370 mt 5354 1370 L
+1117 1209 mt 1138 1209 L
+5376 1209 mt 5354 1209 L
+1117 1047 mt 1138 1047 L
+5376 1047 mt 5354 1047 L
+1117  886 mt 1138  886 L
+5376  886 mt 5354  886 L
+1117  725 mt 1138  725 L
+5376  725 mt 5354  725 L
+1117  564 mt 1138  564 L
+5376  564 mt 5354  564 L
+1117  403 mt 1159  403 L
+5376  403 mt 5333  403 L
+1016  447 mt 
+(1) s
+1117 3628 mt 5376 3628 L
+1117  403 mt 5376  403 L
+1117 3628 mt 1117  403 L
+5376 3628 mt 5376  403 L
+gs 1117 403 4260 3226 MR c np
+24 w
+9 0 10 0 10 0 11 0 11 0 12 0 13 0 14 0 
+15 0 9 0 9 0 9 0 10 0 11 0 12 0 12 0 
+13 0 8 0 9 0 9 0 10 0 10 0 11 0 8 0 
+8 0 8 0 9 0 9 0 9 0 11 0 10 0 11 0 
+8 0 7 0 8 0 9 0 8 0 9 0 10 0 10 0 
+7 0 7 0 7 0 7 0 8 0 8 0 9 0 8 0 
+10 0 10 0 10 0 6 0 7 0 7 0 7 0 7 0 
+8 0 8 0 9 0 9 0 9 0 10 0 6 0 7 0 
+7 0 7 0 7 0 8 0 8 0 9 0 9 0 9 0 
+6 0 7 0 7 0 6 0 8 0 7 0 4 0 2 0 
+2 0 1 0 2 0 2 0 3 0 4 0 8 0 12 0 
+13 0 15 0 9 0 7 0 6 0 6 0 7 0 7 0 
+7 0 8 0 8 0 4111 3627 100 MP stroke
+5 0 5 0 6 0 6 0 6 0 6 0 6 0 7 0 
+7 0 7 0 7 0 8 0 8 0 8 1 9 0 9 0 
+10 0 6 0 6 0 6 0 6 0 6 0 7 0 7 0 
+7 0 8 0 8 0 8 0 9 0 9 0 9 1 10 0 
+11 0 11 0 8 0 8 0 9 0 9 0 9 1 10 0 
+7 0 7 0 7 0 8 0 8 0 8 1 9 0 9 0 
+9 0 11 1 10 0 12 0 12 1 6 0 7 0 7 0 
+7 0 8 1 7 0 9 0 8 1 9 0 6 0 7 1 
+6 0 7 0 7 1 8 0 8 1 8 0 8 1 9 0 
+6 1 6 0 7 1 7 0 7 1 7 0 7 1 8 0 
+8 1 9 1 9 1 9 1 10 1 10 1 11 1 12 2 
+8 1 8 1 8 1 9 1 9 2 9 1 7 1 6 1 
+7 2 7 1 7 1 3327 3589 100 MP stroke
+8 2 8 1 8 2 8 2 10 2 9 2 6 2 7 2 
+7 1 7 2 7 2 7 2 8 3 8 2 9 3 9 3 
+9 3 6 2 7 2 6 3 7 2 7 3 7 3 8 3 
+8 4 8 4 9 4 9 4 10 5 6 3 6 3 4 2 
+4 2 4 3 5 2 4 3 4 2 5 3 5 3 5 2 
+5 4 5 3 5 3 5 4 6 3 6 4 6 4 6 4 
+6 5 7 5 6 5 7 5 8 6 7 6 8 7 9 7 
+4 3 4 4 5 4 4 4 5 4 4 5 5 4 5 5 
+6 5 5 5 5 6 6 5 3 4 4 3 3 4 3 3 
+4 4 4 4 3 4 4 4 4 4 4 4 4 5 4 5 
+4 4 5 5 4 5 5 6 4 5 5 6 5 6 5 6 
+5 6 5 7 5 7 6 7 6 8 6 8 4 5 4 6 
+4 5 4 6 5 6 2753 3195 100 MP stroke
+4 6 4 7 5 6 5 7 5 7 5 8 5 7 5 8 
+6 9 6 8 5 9 6 10 7 10 4 6 3 6 5 7 
+4 6 4 7 4 7 5 8 4 7 5 8 5 8 5 8 
+5 9 5 9 2 4 3 5 1 2 2 3 2 3 1 3 
+4 7 5 8 4 8 5 8 5 9 4 8 5 10 5 9 
+6 9 5 10 5 11 6 11 6 11 6 11 4 7 3 7 
+4 7 3 7 4 7 4 7 4 8 4 8 4 8 4 8 
+2 4 2 4 3 5 2 4 2 5 2 4 3 5 2 5 
+2 4 3 5 2 5 3 5 2 5 3 5 2 6 3 5 
+2 5 3 6 3 5 3 6 2 6 3 6 3 5 3 7 
+3 6 3 6 3 6 3 7 4 7 3 6 3 7 3 7 
+4 7 3 8 4 7 4 8 3 8 4 8 4 8 4 8 
+4 9 4 8 4 9 2380 2511 100 MP stroke
+4 10 5 9 4 10 5 9 5 11 5 10 5 11 3 7 
+2 4 2 5 1 2 1 1 1 2 0 2 1 1 0 2 
+5 9 4 9 4 10 5 9 4 9 2 6 3 5 1 3 
+2 3 1 2 0 1 1 1 0 2 2 4 2 3 1 3 
+1 3 2 3 1 3 2 3 1 3 2 3 1 3 1 4 
+2 3 2 5 3 7 6 12 6 12 3 8 4 7 3 8 
+3 6 3 6 3 7 2 6 3 6 3 7 3 6 3 7 
+3 6 4 7 3 7 3 7 3 8 4 7 3 7 4 8 
+3 8 6 13 6 13 6 13 7 14 7 14 6 15 8 16 
+7 16 8 16 8 18 8 18 5 10 5 10 5 10 5 11 
+5 10 5 12 6 11 5 12 6 12 6 13 4 8 4 8 
+4 8 4 9 4 8 4 9 5 9 4 10 5 9 5 10 
+4 10 5 10 6 10 2018 1738 100 MP stroke
+5 11 5 11 6 12 6 11 3 7 3 7 4 7 3 7 
+4 7 4 7 4 8 3 7 4 8 4 8 4 8 4 8 
+5 8 4 9 5 9 4 9 5 9 5 9 5 10 5 9 
+5 10 5 11 6 10 3 6 3 6 3 6 4 6 3 7 
+4 6 3 7 4 6 3 7 4 7 4 7 3 7 4 7 
+4 7 4 8 5 8 4 7 4 8 5 8 4 9 5 8 
+5 9 5 9 5 9 5 9 6 10 5 10 4 6 4 7 
+4 6 4 7 4 7 4 7 4 7 4 7 5 8 4 8 
+5 7 4 8 5 8 5 9 3 5 3 5 3 5 4 5 
+3 5 3 6 3 5 6 9 6 10 6 9 6 10 6 10 
+7 11 11 18 12 19 14 20 14 21 7 10 2 4 1 2 
+1 1 1 2 1 1 1 1 0 1 2 2 0 1 2 2 
+0 1 1 1 1 0 1597 993 100 MP stroke
+-1 0 2 2 0 1 1 1 1 1 1 2 1 1 1 2 
+1 2 2 2 1 2 2 2 1 3 2 2 2 3 2 3 
+2 3 2 2 2 3 2 3 2 3 2 2 2 3 2 3 
+2 3 2 3 2 3 2 3 2 3 3 3 2 3 2 3 
+2 3 2 3 3 4 2 3 3 3 2 3 2 4 3 3 
+2 3 3 4 2 3 4 6 7 8 9 13 11 13 11 14 
+11 14 13 16 13 16 14 16 16 18 17 19 12 13 12 13 
+14 14 14 15 16 15 18 16 12 11 14 12 14 12 15 12 
+18 13 18 13 21 15 15 9 17 10 18 11 21 10 1124 515 72 MP stroke
+gr
+
+24 w
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+ 763 2072 mt  -90 rotate
+(y) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+ 835 1992 mt  -90 rotate
+(1) s
+90 rotate
+6 w
+1 sg
+0 730 799 0 0 -730 4517 1193 4 MP
+PP
+-799 0 0 730 799 0 0 -730 4517 1193 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+4517 1193 mt 5316 1193 L
+4517  463 mt 5316  463 L
+4517 1193 mt 4517  463 L
+5316 1193 mt 5316  463 L
+4517 1193 mt 5316 1193 L
+4517 1193 mt 4517  463 L
+4517 1193 mt 5316 1193 L
+4517  463 mt 5316  463 L
+4517 1193 mt 4517  463 L
+5316 1193 mt 5316  463 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+4850  566 mt 
+(y) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 96 FMSR
+
+4910  626 mt 
+(1) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+4850  736 mt 
+(dy) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 96 FMSR
+
+4976  796 mt 
+(1) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+5029  736 mt 
+(/dp) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 96 FMSR
+
+5195  796 mt 
+(1) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+4850  906 mt 
+(dy) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 96 FMSR
+
+4976  966 mt 
+(1) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+5029  906 mt 
+(/dp) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 96 FMSR
+
+5195  966 mt 
+(2) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+4850 1076 mt 
+(dy) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 96 FMSR
+
+4976 1136 mt 
+(1) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+5029 1076 mt 
+(/dp) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 96 FMSR
+
+5195 1136 mt 
+(3) s
+gs 4517 463 800 731 MR c np
+24 w
+200 0 4583 567 2 MP stroke
+DA
+/c8 { 0.000000 1.000000 0.000000 sr} bdef
+c8
+200 0 4583 742 2 MP stroke
+SO
+DD
+/c9 { 1.000000 0.000000 0.000000 sr} bdef
+c9
+200 0 4583 918 2 MP stroke
+SO
+DO
+/c10 { 0.000000 0.000000 1.000000 sr} bdef
+c10
+200 0 4583 1094 2 MP stroke
+SO
+6 w
+gr
+
+c10
+4 w
+DO
+SO
+6 w
+1 sg
+1117 3628 mt 6151 3628 L
+c9
+6151 3628 mt 6151  403 L
+6151 3628 mt 6100 3628 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+6185 3672 mt 
+(0) s
+6151 3499 mt 6125 3499 L
+6151 3370 mt 6125 3370 L
+6151 3241 mt 6125 3241 L
+6151 3112 mt 6125 3112 L
+6151 2983 mt 6125 2983 L
+6151 2854 mt 6125 2854 L
+6151 2725 mt 6125 2725 L
+6151 2596 mt 6125 2596 L
+6151 2467 mt 6125 2467 L
+6151 2983 mt 6100 2983 L
+6185 3027 mt 
+(0.5) s
+6151 2854 mt 6125 2854 L
+6151 2725 mt 6125 2725 L
+6151 2596 mt 6125 2596 L
+6151 2467 mt 6125 2467 L
+6151 2338 mt 6125 2338 L
+6151 2209 mt 6125 2209 L
+6151 2080 mt 6125 2080 L
+6151 1951 mt 6125 1951 L
+6151 1822 mt 6125 1822 L
+6151 2338 mt 6100 2338 L
+6185 2382 mt 
+(1) s
+6151 2209 mt 6125 2209 L
+6151 2080 mt 6125 2080 L
+6151 1951 mt 6125 1951 L
+6151 1821 mt 6125 1821 L
+6151 1693 mt 6125 1693 L
+6151 1564 mt 6125 1564 L
+6151 1434 mt 6125 1434 L
+6151 1306 mt 6125 1306 L
+6151 1177 mt 6125 1177 L
+6151 1693 mt 6100 1693 L
+6185 1737 mt 
+(1.5) s
+6151 1564 mt 6125 1564 L
+6151 1435 mt 6125 1435 L
+6151 1306 mt 6125 1306 L
+6151 1177 mt 6125 1177 L
+6151 1048 mt 6125 1048 L
+6151  919 mt 6125  919 L
+6151  790 mt 6125  790 L
+6151  661 mt 6125  661 L
+6151  532 mt 6125  532 L
+6151 1047 mt 6100 1047 L
+6185 1091 mt 
+(2) s
+6151  918 mt 6125  918 L
+6151  790 mt 6125  790 L
+6151  660 mt 6125  660 L
+6151  531 mt 6125  531 L
+6151  403 mt 6125  403 L
+6151  403 mt 6100  403 L
+6185  447 mt 
+(2.5) s
+6151  349 mt 
+(x 10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+6377  275 mt 
+(-5) s
+gs 1117 403 5035 3226 MR c np
+DD
+24 w
+9 0 9 0 10 0 11 0 11 0 12 0 13 0 14 0 
+15 0 9 0 9 0 10 0 10 0 11 0 11 0 12 0 
+13 0 9 0 9 0 9 0 10 0 10 0 11 0 8 0 
+7 0 9 0 8 0 9 0 10 0 10 0 11 0 11 0 
+7 0 8 0 8 0 8 0 9 0 9 0 10 0 10 0 
+6 0 7 0 7 0 8 0 8 0 8 0 8 0 9 0 
+9 0 10 0 11 0 6 0 7 0 6 0 8 0 7 0 
+8 1 8 0 8 0 9 0 9 0 10 0 7 0 6 0 
+7 0 8 0 7 0 8 0 8 0 8 0 9 0 10 0 
+6 1 6 0 7 0 7 0 7 0 8 0 4 0 2 0 
+1 0 2 0 2 0 2 0 2 0 4 0 8 0 13 1 
+13 0 14 0 10 0 6 0 6 0 7 1 7 0 7 0 
+7 0 8 0 7 0 4112 3623 100 MP stroke
+6 1 5 0 6 0 6 0 5 0 7 0 6 1 7 0 
+6 0 7 0 8 1 8 0 8 0 8 1 9 0 9 0 
+10 1 5 0 6 1 6 0 6 0 7 1 7 0 7 0 
+7 1 7 0 8 1 9 1 8 0 9 1 10 1 10 1 
+10 1 12 1 7 1 9 1 8 1 9 1 10 1 10 1 
+6 1 7 1 8 1 7 1 8 2 9 1 8 2 10 1 
+9 2 10 2 11 2 11 3 13 3 6 1 7 2 7 2 
+7 2 7 2 8 3 8 2 9 3 9 3 6 2 6 2 
+7 3 7 3 7 3 8 3 7 3 8 4 9 4 9 4 
+6 3 6 3 7 4 6 3 7 4 7 5 8 4 8 5 
+8 5 8 6 9 7 10 7 9 7 11 9 11 9 12 11 
+7 7 8 7 9 9 8 9 9 10 10 10 6 8 7 7 
+7 9 7 8 7 10 3327 3343 100 MP stroke
+7 10 8 11 9 11 8 13 9 14 10 15 6 10 7 11 
+6 11 7 12 7 13 8 14 8 14 8 16 8 17 9 19 
+10 20 6 13 6 14 7 15 7 15 7 17 7 18 8 19 
+8 20 8 21 9 23 9 25 10 27 6 17 6 18 4 12 
+4 12 4 12 4 13 5 13 4 14 5 14 5 15 4 15 
+5 16 5 17 6 17 5 18 6 18 5 20 6 20 6 21 
+7 22 6 23 7 25 7 25 7 27 8 28 8 30 8 31 
+4 16 5 17 4 17 5 18 4 18 5 19 5 19 5 20 
+5 20 6 22 5 21 6 23 3 14 3 13 4 14 3 14 
+4 15 3 14 4 16 4 15 4 16 4 16 4 16 4 17 
+4 18 4 17 5 19 4 18 5 19 5 20 4 20 5 20 
+6 22 5 21 5 23 6 23 6 23 6 25 4 16 4 16 
+4 17 4 17 4 18 2754 1590 100 MP stroke
+5 17 4 19 5 18 5 19 5 20 5 19 5 21 5 20 
+6 21 5 22 6 22 6 23 6 23 4 15 4 14 4 15 
+4 15 5 15 4 15 4 16 5 16 5 16 4 16 5 17 
+5 16 6 18 2 8 3 8 1 5 2 5 1 5 2 5 
+4 14 5 13 4 14 5 14 4 14 5 14 5 14 5 15 
+5 14 6 15 5 15 6 15 6 15 6 15 3 9 4 8 
+4 9 3 8 4 9 4 9 4 8 4 9 4 8 4 9 
+2 4 2 5 2 4 3 4 2 5 2 4 2 4 3 5 
+2 4 3 4 2 5 2 4 3 4 3 4 2 5 3 4 
+2 4 3 4 3 4 2 4 3 4 3 4 3 4 3 4 
+3 4 3 4 3 4 3 4 3 3 4 4 3 4 3 3 
+4 4 3 3 4 3 3 3 4 4 4 2 4 3 4 3 
+4 3 4 2 4 2 2380 636 100 MP stroke
+4 2 5 2 4 2 5 2 5 1 4 1 5 1 4 0 
+2 0 2 0 1 0 1 0 1 1 1 0 1 -1 4 0 
+4 0 4 -1 5 0 4 -1 2 -1 3 -1 1 0 2 -1 
+1 0 1 0 1 -1 1 0 2 -1 1 -1 1 0 2 -1 
+3 -1 1 -1 1 -1 2 0 1 -1 2 -1 2 -1 3 -2 
+6 -4 5 -4 4 -3 3 -3 4 -3 3 -2 3 -3 2 -2 
+3 -3 3 -3 3 -3 3 -3 3 -4 3 -3 4 -4 3 -3 
+3 -4 3 -5 4 -4 3 -5 4 -4 3 -5 6 -9 6 -9 
+6 -9 7 -11 6 -11 7 -12 7 -12 8 -14 8 -15 8 -16 
+8 -18 5 -10 5 -10 5 -10 5 -11 5 -12 5 -12 6 -13 
+5 -13 6 -14 6 -15 4 -10 4 -9 4 -11 4 -10 4 -11 
+4 -11 5 -12 4 -12 5 -13 5 -13 4 -13 5 -14 5 -15 
+6 -15 5 -16 6 -16 2002 1176 100 MP stroke
+6 -17 3 -10 3 -10 4 -11 3 -10 4 -11 4 -11 3 -12 
+4 -12 4 -12 4 -13 4 -12 4 -14 5 -13 4 -14 4 -15 
+5 -15 5 -15 5 -16 5 -16 5 -17 5 -18 5 -18 6 -19 
+3 -10 3 -11 3 -11 4 -11 3 -12 3 -12 4 -12 3 -12 
+4 -12 4 -13 4 -14 3 -13 4 -14 4 -14 4 -14 5 -15 
+4 -15 4 -16 5 -16 4 -17 5 -17 5 -17 5 -18 5 -19 
+5 -19 6 -19 5 -21 4 -13 4 -14 4 -14 4 -14 4 -15 
+4 -15 4 -15 4 -16 5 -16 4 -17 5 -17 4 -17 5 -18 
+5 -18 3 -11 3 -11 3 -12 3 -11 4 -12 3 -12 3 -12 
+6 -21 6 -21 6 -22 6 -22 6 -23 7 -24 11 -42 12 -44 
+14 -47 14 -50 7 -25 2 -8 1 -4 1 -5 1 -4 1 -1 
+0 -2 1 -2 0 -1 1 -1 0 -2 1 -1 0 -3 1 -1 
+0 -3 1 -2 0 -2 1599 2584 100 MP stroke
+1 -1 0 -2 1 -2 1 -2 0 -2 1 -2 0 -3 2 -4 
+1 -4 1 -4 1 -5 2 -4 1 -4 2 -6 1 -7 2 -6 
+2 -6 2 -7 2 -6 2 -7 2 -6 2 -7 2 -7 2 -6 
+2 -7 2 -7 2 -7 2 -7 2 -7 2 -7 2 -7 2 -8 
+3 -7 2 -7 2 -8 2 -7 3 -8 2 -7 2 -8 3 -8 
+2 -8 3 -8 2 -8 3 -8 2 -8 4 -12 7 -20 9 -30 
+11 -31 11 -33 11 -33 13 -35 13 -37 14 -37 16 -40 17 -40 
+12 -28 12 -27 14 -29 14 -29 16 -30 18 -30 12 -20 13 -21 
+15 -20 15 -20 18 -21 18 -20 21 -20 15 -13 17 -13 18 -12 
+21 -12 1124 3564 74 MP stroke
+gr
+
+24 w
+DD
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+6466 2280 mt  -90 rotate
+(dy) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+6538 2115 mt  -90 rotate
+(1) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+6466 2055 mt  -90 rotate
+(/dp) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+6538 1839 mt  -90 rotate
+(2) s
+90 rotate
+SO
+6 w
+4 w
+DO
+SO
+6 w
+1 sg
+1117 3628 mt 6925 3628 L
+c10
+6925 3628 mt 6925  403 L
+6925 3628 mt 6866 3628 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+6959 3672 mt 
+(-4) s
+6925 3466 mt 6895 3466 L
+6925 3305 mt 6895 3305 L
+6925 3144 mt 6895 3144 L
+6925 2983 mt 6895 2983 L
+6925 2821 mt 6895 2821 L
+6925 2660 mt 6895 2660 L
+6925 2499 mt 6895 2499 L
+6925 2338 mt 6895 2338 L
+6925 2176 mt 6895 2176 L
+6925 2015 mt 6866 2015 L
+6959 2059 mt 
+(-2) s
+6925 1854 mt 6895 1854 L
+6925 1693 mt 6895 1693 L
+6925 1531 mt 6895 1531 L
+6925 1370 mt 6895 1370 L
+6925 1209 mt 6895 1209 L
+6925 1048 mt 6895 1048 L
+6925  886 mt 6895  886 L
+6925  725 mt 6895  725 L
+6925  564 mt 6895  564 L
+6925  403 mt 6866  403 L
+6959  447 mt 
+(0) s
+6925  349 mt 
+(x 10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+7151  275 mt 
+(-9) s
+gs 1117 403 5809 3226 MR c np
+DO
+24 w
+9 0 10 0 10 0 10 0 12 0 12 0 13 0 14 0 
+15 0 8 0 10 0 9 0 10 0 11 0 11 0 13 0 
+13 0 8 0 9 0 9 0 10 0 10 0 11 0 8 0 
+8 0 8 0 9 0 9 0 9 0 10 0 11 0 11 0 
+8 0 7 0 8 0 8 0 9 0 9 0 10 0 10 0 
+7 0 7 0 7 0 7 0 8 0 8 0 8 0 9 0 
+10 0 9 0 11 0 6 0 7 0 7 0 7 0 7 -1 
+8 0 8 0 9 0 8 0 10 0 10 0 6 0 7 0 
+7 0 7 0 7 0 8 0 8 0 9 0 9 0 9 -1 
+6 0 7 0 6 0 7 0 7 0 8 0 4 0 2 0 
+2 0 1 0 2 0 2 0 2 0 5 0 7 0 13 -1 
+13 0 15 0 9 0 6 0 7 -1 6 0 7 0 7 0 
+7 0 8 0 8 -1 4111 408 100 MP stroke
+5 0 5 0 6 0 6 0 6 -1 6 0 6 0 7 0 
+7 0 7 -1 7 0 8 0 8 -1 8 0 9 0 9 -1 
+10 0 5 -1 6 0 6 0 7 -1 6 0 7 -1 7 0 
+7 0 8 -1 8 -1 8 0 8 -1 9 -1 10 -1 10 0 
+11 -1 11 -2 8 -1 8 0 8 -1 9 -2 10 -1 10 -1 
+7 -1 7 -1 7 -1 8 -2 8 -1 8 -1 9 -2 9 -2 
+9 -2 10 -2 11 -2 12 -3 12 -3 6 -2 7 -1 7 -2 
+7 -2 7 -3 8 -2 8 -3 9 -3 9 -3 6 -2 7 -2 
+6 -3 7 -3 7 -3 8 -3 8 -4 8 -3 8 -5 9 -4 
+6 -3 6 -4 7 -3 6 -4 7 -4 8 -5 7 -4 8 -6 
+8 -5 9 -6 8 -7 10 -7 10 -8 10 -9 11 -10 12 -11 
+8 -7 7 -8 9 -9 8 -9 10 -10 9 -11 6 -8 7 -8 
+7 -9 7 -9 7 -10 3327 699 100 MP stroke
+8 -10 8 -11 8 -13 8 -13 10 -14 9 -16 6 -10 7 -11 
+6 -12 7 -13 8 -13 7 -15 8 -15 8 -16 9 -18 9 -19 
+9 -21 6 -14 6 -14 7 -16 7 -16 7 -18 7 -18 8 -20 
+8 -21 8 -22 9 -24 9 -26 10 -28 6 -18 6 -18 4 -12 
+4 -13 4 -13 5 -13 4 -14 4 -14 5 -15 5 -16 5 -16 
+4 -16 6 -17 5 -18 5 -19 6 -19 6 -20 5 -22 7 -22 
+6 -23 6 -24 7 -25 7 -27 8 -28 7 -29 8 -31 8 -33 
+5 -16 4 -18 4 -18 5 -18 5 -19 4 -19 5 -20 5 -21 
+5 -21 6 -23 5 -23 6 -23 3 -14 4 -14 3 -15 3 -14 
+4 -15 4 -16 3 -16 4 -16 4 -16 4 -17 4 -17 4 -18 
+4 -18 5 -18 4 -19 4 -20 5 -19 5 -21 5 -21 5 -21 
+5 -22 5 -23 5 -23 6 -24 6 -25 6 -25 4 -17 4 -17 
+4 -17 4 -18 4 -19 2754 2525 100 MP stroke
+5 -18 4 -19 5 -19 5 -20 5 -20 5 -21 5 -21 5 -22 
+6 -22 5 -22 6 -23 6 -24 7 -24 3 -15 4 -15 4 -15 
+5 -16 4 -16 4 -16 5 -16 4 -17 5 -16 5 -17 4 -18 
+5 -17 6 -18 2 -8 3 -9 1 -5 2 -6 1 -5 2 -5 
+4 -14 5 -14 4 -15 5 -14 4 -15 5 -14 5 -15 5 -15 
+5 -16 6 -15 5 -15 6 -16 6 -16 6 -16 3 -8 4 -9 
+4 -9 3 -9 4 -9 4 -9 4 -9 4 -9 4 -9 4 -9 
+2 -4 2 -5 2 -4 3 -5 2 -4 2 -5 3 -4 2 -5 
+2 -4 3 -5 2 -4 3 -5 2 -4 3 -5 2 -4 3 -4 
+2 -5 3 -4 3 -4 3 -5 2 -4 3 -4 3 -4 3 -4 
+3 -5 3 -4 3 -4 3 -3 4 -4 3 -4 3 -4 3 -4 
+4 -3 3 -4 4 -3 4 -3 3 -3 4 -4 4 -2 4 -3 
+4 -3 4 -3 4 -2 2380 3519 100 MP stroke
+4 -2 5 -2 4 -2 5 -2 5 -1 4 -1 5 -1 4 0 
+2 0 2 -1 1 0 1 0 1 0 1 0 1 0 4 0 
+4 1 4 0 5 1 4 1 2 1 3 1 1 0 2 1 
+1 0 1 1 1 0 1 1 2 0 1 1 1 0 2 1 
+1 1 2 0 1 1 1 1 2 1 1 1 2 0 2 2 
+3 2 6 4 5 4 4 3 4 3 3 3 3 3 3 2 
+3 3 2 3 3 3 3 3 3 3 3 4 3 3 4 4 
+3 4 3 4 3 5 4 4 3 5 4 5 3 5 6 9 
+6 9 6 10 7 11 7 12 6 12 8 13 7 15 8 15 
+8 17 8 18 5 10 5 11 5 11 5 12 5 12 5 12 
+6 14 5 14 6 14 6 15 4 10 4 11 4 10 4 11 
+4 12 4 12 5 12 4 12 5 13 5 14 4 14 5 15 
+6 15 5 15 5 17 2008 2973 100 MP stroke
+6 17 6 18 3 10 3 11 4 10 3 12 4 11 4 12 
+4 12 3 12 4 13 4 13 4 13 4 14 5 14 4 15 
+5 15 4 15 5 16 5 17 5 17 5 18 5 18 5 19 
+6 19 3 11 3 12 3 11 4 12 3 12 3 12 4 13 
+4 12 3 13 4 14 4 14 3 14 4 14 4 15 4 15 
+5 15 4 16 4 16 5 17 4 17 5 18 5 18 5 19 
+5 19 5 20 6 21 5 21 4 14 4 14 4 15 4 15 
+4 15 4 16 4 16 4 16 5 17 4 17 5 18 4 18 
+5 18 5 19 3 12 3 12 3 11 4 12 3 13 3 12 
+3 13 6 21 6 22 6 23 6 23 6 25 7 25 11 43 
+12 46 14 49 14 52 7 26 2 8 1 5 1 4 1 5 
+1 1 0 2 1 1 0 2 1 1 0 3 1 1 0 2 
+1 2 0 2 1 2 1599 1492 100 MP stroke
+0 2 1 2 0 2 1 2 1 2 0 2 1 2 1 3 
+1 4 1 4 1 5 1 4 2 5 1 4 2 7 1 6 
+2 7 2 7 2 6 2 7 2 7 2 7 2 7 2 7 
+2 7 2 7 2 7 2 7 2 7 2 8 2 7 2 8 
+3 7 2 8 2 7 2 8 2 8 3 8 2 8 3 8 
+2 8 2 8 3 8 2 9 3 8 2 9 4 12 7 21 
+9 31 11 33 11 34 11 35 13 36 13 38 14 39 16 41 
+17 43 12 28 12 29 14 30 14 30 16 31 18 31 12 22 
+14 21 14 21 15 21 18 22 18 21 21 20 15 14 17 13 
+18 13 21 12 1124 469 75 MP stroke
+gr
+
+24 w
+DO
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+7192 2280 mt  -90 rotate
+(dy) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+7264 2115 mt  -90 rotate
+(1) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+7192 2055 mt  -90 rotate
+(/dp) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+7264 1839 mt  -90 rotate
+(3) s
+90 rotate
+SO
+6 w
+4 w
+DO
+0 sg
+1117 3628 mt 1117  403 L
+1117  403 mt 1117  403 L
+1968 3628 mt 1968  403 L
+1968  403 mt 1968  403 L
+2820 3628 mt 2820  403 L
+2820  403 mt 2820  403 L
+3672 3628 mt 3672  403 L
+3672  403 mt 3672  403 L
+4524 3628 mt 4524  403 L
+4524  403 mt 4524  403 L
+5376 3628 mt 5376  403 L
+5376  403 mt 5376  403 L
+c8
+5376 3628 mt 5376 3628 L
+5376 3628 mt 1117 3628 L
+5376 2015 mt 5376 2015 L
+5376 2015 mt 1117 2015 L
+5376  403 mt 5376  403 L
+5376  403 mt 1117  403 L
+SO
+6 w
+0 sg
+1117 3628 mt 5376 3628 L
+c8
+5376 3628 mt 5376  403 L
+0 sg
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3585 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1029 3810 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+1162 3736 mt 
+(0) s
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1968 3628 mt 1968 3585 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1880 3810 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+2013 3736 mt 
+(2) s
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+2820 3628 mt 2820 3585 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+2732 3810 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+2865 3736 mt 
+(4) s
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+3672 3628 mt 3672 3585 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+3584 3810 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+3717 3736 mt 
+(6) s
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+4524 3628 mt 4524 3585 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+4436 3810 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+4569 3736 mt 
+(8) s
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+5376 3628 mt 5376 3585 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+5266 3810 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+5399 3736 mt 
+(10) s
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+1117 3628 mt 1117 3628 L
+DO
+1117 3628 mt 1117 3628 L
+1117 3628 mt 1117 3628 L
+SO
+c8
+5376 3628 mt 5333 3628 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+5410 3672 mt 
+(-10) s
+5376 3466 mt 5354 3466 L
+5376 3305 mt 5354 3305 L
+5376 3144 mt 5354 3144 L
+5376 2983 mt 5354 2983 L
+5376 2821 mt 5354 2821 L
+5376 2660 mt 5354 2660 L
+5376 2499 mt 5354 2499 L
+5376 2338 mt 5354 2338 L
+5376 2176 mt 5354 2176 L
+5376 2015 mt 5333 2015 L
+5410 2059 mt 
+(-5) s
+5376 1854 mt 5354 1854 L
+5376 1693 mt 5354 1693 L
+5376 1531 mt 5354 1531 L
+5376 1370 mt 5354 1370 L
+5376 1209 mt 5354 1209 L
+5376 1047 mt 5354 1047 L
+5376  886 mt 5354  886 L
+5376  725 mt 5354  725 L
+5376  564 mt 5354  564 L
+5376  403 mt 5333  403 L
+5410  447 mt 
+(0) s
+gs 1117 403 4260 3226 MR c np
+DA
+24 w
+9 0 10 0 10 0 11 0 11 0 12 0 13 0 14 0 
+15 0 9 0 9 0 9 0 10 0 11 0 12 0 12 0 
+13 0 8 0 9 0 9 0 10 0 10 0 11 0 8 0 
+8 0 8 0 9 0 9 0 9 0 11 0 10 0 11 0 
+8 0 7 0 8 0 9 0 8 0 9 0 10 0 10 0 
+7 0 7 0 7 0 7 0 8 0 8 0 9 0 8 0 
+10 0 10 0 10 0 6 0 7 0 7 0 7 0 7 0 
+8 0 8 0 9 0 9 0 9 0 10 0 6 0 7 0 
+7 0 7 0 7 0 8 -1 8 0 9 0 9 0 9 0 
+6 0 7 0 7 0 6 0 8 0 7 0 4 0 2 0 
+2 0 1 0 2 0 2 0 3 0 4 0 8 0 12 0 
+13 -1 15 0 9 0 7 0 6 0 6 0 7 0 7 0 
+7 0 8 0 8 -1 4111 406 100 MP stroke
+5 0 5 0 6 0 6 0 6 0 6 0 6 0 7 0 
+7 -1 7 0 7 0 8 0 8 0 8 -1 9 0 9 0 
+10 0 6 -1 6 0 6 0 6 0 6 0 7 -1 7 0 
+7 0 8 -1 8 0 8 0 9 -1 9 0 9 -1 10 0 
+11 -1 11 -1 8 0 8 -1 9 0 9 -1 9 -1 10 -1 
+7 0 7 -1 7 0 8 -1 8 -1 8 -1 9 -1 9 -1 
+9 -1 11 -1 10 -2 12 -1 12 -2 6 -1 7 -1 7 -1 
+7 -2 8 -1 7 -1 9 -2 8 -2 9 -2 6 -1 7 -2 
+6 -1 7 -2 7 -2 8 -2 8 -2 8 -2 8 -2 9 -3 
+6 -2 6 -2 7 -2 7 -2 7 -3 7 -3 7 -2 8 -4 
+8 -3 9 -4 9 -3 9 -5 10 -5 10 -5 11 -6 12 -6 
+8 -5 8 -5 8 -5 9 -5 9 -7 9 -6 7 -5 6 -5 
+7 -5 7 -5 7 -6 3327 580 100 MP stroke
+8 -7 8 -6 8 -8 8 -8 10 -8 9 -10 6 -6 7 -7 
+7 -7 7 -7 7 -8 7 -9 8 -9 8 -10 9 -11 9 -11 
+9 -13 6 -8 7 -9 6 -9 7 -10 7 -11 7 -11 8 -11 
+8 -13 8 -14 9 -14 9 -16 10 -16 6 -11 6 -11 4 -8 
+4 -7 4 -8 5 -8 4 -8 4 -9 5 -9 5 -9 5 -10 
+5 -10 5 -10 5 -11 5 -11 6 -12 6 -12 6 -13 6 -13 
+6 -14 7 -15 6 -15 7 -16 8 -17 7 -17 8 -19 9 -20 
+4 -10 4 -11 5 -10 4 -11 5 -12 4 -12 5 -12 5 -12 
+6 -13 5 -14 5 -14 6 -14 3 -8 4 -9 3 -9 3 -9 
+4 -9 4 -9 3 -10 4 -9 4 -10 4 -11 4 -10 4 -11 
+4 -11 5 -11 4 -11 5 -12 4 -12 5 -13 5 -12 5 -13 
+5 -14 5 -14 5 -14 6 -14 6 -16 6 -15 4 -10 4 -11 
+4 -10 4 -11 5 -12 2753 1685 100 MP stroke
+4 -11 4 -11 5 -12 5 -12 5 -13 5 -13 5 -12 5 -14 
+6 -13 6 -14 5 -14 6 -15 7 -15 4 -9 3 -9 5 -10 
+4 -10 4 -9 4 -10 5 -10 4 -11 5 -10 5 -11 5 -10 
+5 -11 5 -11 2 -6 3 -5 1 -3 2 -4 2 -3 1 -4 
+4 -8 5 -9 4 -9 5 -9 5 -10 4 -9 5 -9 5 -10 
+6 -10 5 -9 5 -10 6 -10 6 -10 6 -11 4 -5 3 -6 
+4 -6 3 -6 4 -5 4 -6 4 -6 4 -6 4 -6 4 -6 
+2 -3 2 -3 3 -3 2 -3 2 -3 2 -3 3 -3 2 -3 
+2 -3 3 -3 2 -3 3 -3 2 -3 3 -3 2 -3 3 -3 
+2 -3 3 -3 3 -3 3 -3 2 -3 3 -3 3 -3 3 -3 
+3 -3 3 -3 3 -3 3 -3 4 -3 3 -2 3 -3 3 -3 
+4 -3 3 -2 4 -3 4 -3 3 -2 4 -3 4 -2 4 -3 
+4 -2 4 -2 4 -3 2380 2324 100 MP stroke
+4 -2 5 -2 4 -2 5 -2 5 -2 5 -1 5 -2 3 -1 
+2 0 2 -1 1 0 1 0 1 0 1 -1 1 0 4 -1 
+4 0 4 -1 5 -1 4 0 2 0 3 0 1 0 2 0 
+1 0 1 0 1 0 1 0 2 0 1 0 1 0 2 0 
+1 0 2 0 1 0 2 0 1 0 1 1 2 0 2 0 
+3 0 6 1 6 1 3 1 4 1 3 1 3 1 3 1 
+3 1 2 0 3 2 3 1 3 1 3 1 3 1 4 2 
+3 1 3 2 3 1 4 2 3 2 4 2 3 2 6 4 
+6 3 6 4 7 5 7 5 6 5 8 6 7 6 8 7 
+8 7 8 8 5 5 5 4 5 5 5 5 5 6 5 5 
+6 6 5 7 6 6 6 7 4 5 4 4 4 5 4 5 
+4 5 4 6 5 5 4 6 5 6 5 6 4 7 5 7 
+6 7 5 7 5 7 2008 2110 100 MP stroke
+6 8 6 8 3 5 3 5 4 5 3 5 4 6 4 5 
+4 6 3 5 4 6 4 6 4 6 4 7 5 6 4 7 
+5 7 4 7 5 8 5 7 5 8 5 9 5 8 5 9 
+6 9 3 5 3 5 3 6 4 5 3 6 4 5 3 6 
+4 6 3 6 4 7 4 6 3 6 4 7 4 7 4 7 
+5 7 4 8 4 7 5 8 4 8 5 8 5 9 5 9 
+5 9 5 9 6 9 5 10 4 7 4 7 4 6 4 7 
+4 8 4 7 4 7 4 8 5 8 4 8 5 8 4 9 
+5 9 5 9 3 5 3 6 3 5 4 6 3 6 3 6 
+3 6 6 10 6 11 6 10 6 12 6 11 7 12 11 21 
+12 23 14 24 14 25 7 13 2 4 1 3 1 2 1 2 
+1 1 0 1 2 2 0 1 1 1 0 1 1 1 0 1 
+1 1 0 1 1 1 1598 1408 100 MP stroke
+1 1 0 1 1 1 0 1 1 1 1 1 1 2 1 3 
+1 2 1 2 2 2 1 3 2 3 1 3 2 4 2 3 
+2 3 2 4 2 3 2 4 2 4 2 3 2 4 2 3 
+2 4 2 4 2 4 2 4 2 3 2 4 3 4 2 4 
+2 4 2 5 2 4 3 4 2 4 3 4 2 5 2 4 
+3 5 2 4 3 5 2 5 4 7 7 11 9 18 11 18 
+11 20 11 20 13 22 13 24 14 25 16 27 17 29 12 20 
+12 21 14 23 14 24 16 26 18 27 12 19 14 21 14 21 
+15 23 18 24 18 26 21 27 15 19 17 20 18 21 21 22 
+1124 658 73 MP stroke
+gr
+
+24 w
+DA
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+5710 2280 mt  -90 rotate
+(dy) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+5782 2115 mt  -90 rotate
+(1) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+5710 2055 mt  -90 rotate
+(/dp) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+5782 1839 mt  -90 rotate
+(1) s
+90 rotate
+0 sg
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+3221 3971 mt 
+(t) s
+SO
+6 w
+
+end
+
+eplot
+%%EndObject
+
+epage
+end
+
+showpage
+
+%%Trailer
+%%EOF
+
+%%EndDocument
+ @endspecial 2613 x Ft(Figure)394 b(2:)534 b(Results)395
+b(for)g(the)g Fr(cvfdx)h Ft(example)e(problem:)534 b(time)395
+b(ev)-34 b(olution)395 b(of)g Fm(y)36937 36729 y Fl(1)37857
+36547 y Ft(and)h(its)f(sensitivities)0 38052 y(with)405
+b(resp)34 b(ect)403 b(to)i(the)f(three)h(problem)f(parameters.)p
+Black 0 41719 a Fr(iS)p Ft(-th)i(sensitivit)-34 b(y)404
+b(equation.)1882 43224 y(Results)451 b(generated)g(b)-34
+b(y)451 b Fr(cvfdx)i Ft(are)d(sho)-34 b(wn)452 b(in)f(Fig.)g(2.)678
+b(Sample)451 b(outputs)i(from)e Fr(cvfdx)p Ft(,)464 b(for)450
+b(t)-34 b(w)g(o)0 44730 y(di\256eren)g(t)416 b(com)-34
+b(binations)417 b(of)g(command)f(line)f(argumen)-34 b(ts,)420
+b(follo)-34 b(ws.)574 b(The)417 b(command)f(to)g(execute)f(this)0
+46235 y(program)404 b(m)-34 b(ust)406 b(ha)-34 b(v)g(e)404
+b(the)h(form:)p Black Black 0 48736 a Fr(\045)637 b(cvfdx)h(-nosensi)0
+51237 y Ft(if)404 b(no)h(sensitivit)-34 b(y)404 b(calculations)g(are)f
+(desired,)h(or)p Black Black 0 53738 a Fr(\045)637 b(cvfdx)h(-sensi)g
+(sensi_meth)i(err_con)0 56239 y Ft(where)557 b Fr(sensi)p
+6914 56239 382 45 v 460 w(meth)h Ft(m)-34 b(ust)558 b(b)34
+b(e)557 b(one)g(of)h Fr(sim)p Ft(,)595 b Fr(stg)p Ft(,)h(or)557
+b Fr(stg1)h Ft(to)g(indicate)f(the)g Fr(CV)p 39644 56239
+V 459 w(SIMULTANEOUS)p Ft(,)0 57744 y Fr(CV)p 1348 57744
+V 459 w(STAGGERED)p Ft(,)407 b(or)e Fr(CV)p 11033 57744
+V 459 w(STAGGERED1)j Ft(metho)34 b(d,)405 b(resp)34 b(ectiv)-34
+b(ely)403 b(and)i Fr(err)p 33883 57744 V 459 w(con)h
+Ft(m)-34 b(ust)406 b(b)34 b(e)404 b(one)h(of)f Fr(t)h
+Ft(or)g Fr(f)0 59250 y Ft(to)f(include)h(or)e(exclude,)h(resp)34
+b(ectiv)-34 b(ely)-101 b(,)402 b(the)i(sensitivit)-34
+b(y)404 b(v)-67 b(ariables)403 b(from)i(the)f(error)f(test.)1882
+60755 y(The)301 b(output)i(generated)e(b)-34 b(y)301
+b Fr(cvfdx)h Ft(when)g(computing)g(sensitivities)e(with)i(the)f
+Fr(CV)p 39981 60755 V 459 w(SIMULTANEOUS)0 62261 y Ft(metho)34
+b(d)405 b(and)g(full)f(error)f(con)-34 b(trol)404 b(\()p
+Fr(cvfdx)639 b(-sensi)f(sim)g(t)p Ft(\))405 b(is:)p 0
+64735 17898 45 v 18479 64801 a Fg(cvfdx)582 b(sample)g(output)p
+30102 64735 V 0 65535 45 801 v 47956 65535 V 0 66864
+45 1329 v 47956 66864 V 0 68192 V 844 67794 a(3-species)h(chemical)f
+(kinetics)g(problem)p 47956 68192 V 0 69520 V 844 69122
+a(Sensitivity:)h(YES)f(\()f(SIMULTANEOUS)i(+)e(FULL)h(ERROR)g(CONTROL)g
+(\))p 47956 69520 V 0 70849 V 47956 70849 V 0 72177 V
+844 71779 a
+(===================================================================)p
+(============)p 47956 72177 V 0 73505 V 3750 73107 a(T)2906
+b(Q)4068 b(H)3487 b(NST)11624 b(y1)6393 b(y2)f(y3)p 47956
+73505 V 0 74834 V 844 74435 a
+(===================================================================)p
+(============)p 47956 74834 V 0 76162 V 844 75764 a(4.000e-01)1164
+b(3)e(4.881e-02)1745 b(115)p 47956 76162 V 0 77491 V
+15954 77092 a(Solution)5232 b(9.8517e-01)1745 b(3.3864e-05)g
+(1.4794e-02)p 47956 77491 V 0 78819 V 15954 78420 a(Sensitivity)583
+b(1)1744 b(-3.5595e-01)h(3.9025e-04)g(3.5556e-01)p 47956
+78819 V Black 23394 81741 a Ft(12)p Black eop
+%%Page: 13 17
+13 16 bop Black Black 4000 8037 45 1329 v 19954 7638
+a Fg(Sensitivity)583 b(2)2325 b(9.5431e-08)1164 b(-2.1309e-10)f
+(-9.5218e-08)p 51956 8037 V 4000 9365 V 19954 8966 a(Sensitivity)583
+b(3)1744 b(-1.5833e-11)1164 b(-5.2900e-13)1745 b(1.6362e-11)p
+51956 9365 V 4000 10693 V 4844 10295 a
+(-------------------------------------------------------------------)p
+(------------)p 51956 10693 V 4000 12022 V 4844 11623
+a(4.000e+00)1164 b(5)e(2.363e-01)1745 b(138)p 51956 12022
+V 4000 13350 V 19954 12951 a(Solution)5232 b(9.0552e-01)1745
+b(2.2405e-05)g(9.4459e-02)p 51956 13350 V 4000 14678
+V 19954 14280 a(Sensitivity)583 b(1)1744 b(-1.8761e+00)h(1.7922e-04)g
+(1.8759e+00)p 51956 14678 V 4000 16007 V 19954 15608
+a(Sensitivity)583 b(2)2325 b(2.9614e-06)1164 b(-5.8305e-10)f
+(-2.9608e-06)p 51956 16007 V 4000 17335 V 19954 16936
+a(Sensitivity)583 b(3)1744 b(-4.9334e-10)1164 b(-2.7626e-13)1745
+b(4.9362e-10)p 51956 17335 V 4000 18663 V 4844 18265
+a(-------------------------------------------------------------------)p
+(------------)p 51956 18663 V 4000 19992 V 4844 19593
+a(4.000e+01)1164 b(3)e(1.485e+00)1745 b(219)p 51956 19992
+V 4000 21320 V 19954 20922 a(Solution)5232 b(7.1583e-01)1745
+b(9.1856e-06)g(2.8416e-01)p 51956 21320 V 4000 22648
+V 19954 22250 a(Sensitivity)583 b(1)1744 b(-4.2475e+00)h(4.5913e-05)g
+(4.2475e+00)p 51956 22648 V 4000 23977 V 19954 23578
+a(Sensitivity)583 b(2)2325 b(1.3731e-05)1164 b(-2.3573e-10)f
+(-1.3730e-05)p 51956 23977 V 4000 25305 V 19954 24907
+a(Sensitivity)583 b(3)1744 b(-2.2883e-09)1164 b(-1.1380e-13)1745
+b(2.2884e-09)p 51956 25305 V 4000 26633 V 4844 26235
+a(-------------------------------------------------------------------)p
+(------------)p 51956 26633 V 4000 27962 V 4844 27563
+a(4.000e+02)1164 b(3)e(8.882e+00)1745 b(331)p 51956 27962
+V 4000 29290 V 19954 28892 a(Solution)5232 b(4.5052e-01)1745
+b(3.2229e-06)g(5.4947e-01)p 51956 29290 V 4000 30619
+V 19954 30220 a(Sensitivity)583 b(1)1744 b(-5.9584e+00)h(3.5431e-06)g
+(5.9584e+00)p 51956 30619 V 4000 31947 V 19954 31548
+a(Sensitivity)583 b(2)2325 b(2.2738e-05)1164 b(-2.2605e-11)f
+(-2.2738e-05)p 51956 31947 V 4000 33275 V 19954 32877
+a(Sensitivity)583 b(3)1744 b(-3.7896e-09)1164 b(-4.9948e-14)1745
+b(3.7897e-09)p 51956 33275 V 4000 34604 V 4844 34205
+a(-------------------------------------------------------------------)p
+(------------)p 51956 34604 V 4000 35932 V 4844 35533
+a(4.000e+03)1164 b(2)e(1.090e+02)1745 b(486)p 51956 35932
+V 4000 37260 V 19954 36862 a(Solution)5232 b(1.8317e-01)1745
+b(8.9403e-07)g(8.1683e-01)p 51956 37260 V 4000 38589
+V 19954 38190 a(Sensitivity)583 b(1)1744 b(-4.7500e+00)1164
+b(-5.9957e-06)1745 b(4.7500e+00)p 51956 38589 V 4000
+39917 V 19954 39518 a(Sensitivity)583 b(2)2325 b(1.8809e-05)1745
+b(2.3136e-11)1163 b(-1.8809e-05)p 51956 39917 V 4000
+41245 V 19954 40847 a(Sensitivity)583 b(3)1744 b(-3.1348e-09)1164
+b(-1.8757e-14)1745 b(3.1348e-09)p 51956 41245 V 4000
+42574 V 4844 42175 a
+(-------------------------------------------------------------------)p
+(------------)p 51956 42574 V 4000 43902 V 4844 43504
+a(4.000e+04)1164 b(3)e(1.178e+03)1745 b(588)p 51956 43902
+V 4000 45230 V 19954 44832 a(Solution)5232 b(3.8977e-02)1745
+b(1.6215e-07)g(9.6102e-01)p 51956 45230 V 4000 46559
+V 19954 46160 a(Sensitivity)583 b(1)1744 b(-1.5748e+00)1164
+b(-2.7620e-06)1745 b(1.5748e+00)p 51956 46559 V 4000
+47887 V 19954 47489 a(Sensitivity)583 b(2)2325 b(6.2869e-06)1745
+b(1.1002e-11)1163 b(-6.2869e-06)p 51956 47887 V 4000
+49215 V 19954 48817 a(Sensitivity)583 b(3)1744 b(-1.0478e-09)1164
+b(-4.5362e-15)1745 b(1.0478e-09)p 51956 49215 V 4000
+50544 V 4844 50145 a
+(-------------------------------------------------------------------)p
+(------------)p 51956 50544 V 4000 51872 V 4844 51474
+a(4.000e+05)1164 b(3)e(1.514e+04)1745 b(645)p 51956 51872
+V 4000 53201 V 19954 52802 a(Solution)5232 b(4.9387e-03)1745
+b(1.9852e-08)g(9.9506e-01)p 51956 53201 V 4000 54529
+V 19954 54130 a(Sensitivity)583 b(1)1744 b(-2.3639e-01)1164
+b(-4.5861e-07)1745 b(2.3639e-01)p 51956 54529 V 4000
+55857 V 19954 55459 a(Sensitivity)583 b(2)2325 b(9.4525e-07)1745
+b(1.8334e-12)1163 b(-9.4525e-07)p 51956 55857 V 4000
+57186 V 19954 56787 a(Sensitivity)583 b(3)1744 b(-1.5751e-10)1164
+b(-6.3629e-16)1745 b(1.5751e-10)p 51956 57186 V 4000
+58514 V 4844 58115 a
+(-------------------------------------------------------------------)p
+(------------)p 51956 58514 V 4000 59842 V 4844 59444
+a(4.000e+06)1164 b(4)e(2.323e+05)1745 b(696)p 51956 59842
+V 4000 61171 V 19954 60772 a(Solution)5232 b(5.1684e-04)1745
+b(2.0684e-09)g(9.9948e-01)p 51956 61171 V 4000 62499
+V 19954 62100 a(Sensitivity)583 b(1)1744 b(-2.5667e-02)1164
+b(-5.1064e-08)1745 b(2.5667e-02)p 51956 62499 V 4000
+63827 V 19954 63429 a(Sensitivity)583 b(2)2325 b(1.0266e-07)1745
+b(2.0424e-13)1163 b(-1.0266e-07)p 51956 63827 V 4000
+65156 V 19954 64757 a(Sensitivity)583 b(3)1744 b(-1.7111e-11)1164
+b(-6.8513e-17)1745 b(1.7111e-11)p 51956 65156 V 4000
+66484 V 4844 66086 a
+(-------------------------------------------------------------------)p
+(------------)p 51956 66484 V 4000 67812 V 4844 67414
+a(4.000e+07)1164 b(4)e(1.776e+06)1745 b(753)p 51956 67812
+V 4000 69141 V 19954 68742 a(Solution)5232 b(5.2039e-05)1745
+b(2.0817e-10)g(9.9995e-01)p 51956 69141 V 4000 70469
+V 19954 70071 a(Sensitivity)583 b(1)1744 b(-2.5991e-03)1164
+b(-5.1931e-09)1745 b(2.5991e-03)p 51956 70469 V 4000
+71797 V 19954 71399 a(Sensitivity)583 b(2)2325 b(1.0396e-08)1745
+b(2.0772e-14)1163 b(-1.0397e-08)p 51956 71797 V 4000
+73126 V 19954 72727 a(Sensitivity)583 b(3)1744 b(-1.7330e-12)1164
+b(-6.9328e-18)1745 b(1.7330e-12)p 51956 73126 V 4000
+74454 V 4844 74056 a
+(-------------------------------------------------------------------)p
+(------------)p 51956 74454 V 4000 75782 V 4844 75384
+a(4.000e+08)1164 b(4)e(2.766e+07)1745 b(802)p 51956 75782
+V 4000 77111 V 19954 76712 a(Solution)5232 b(5.2106e-06)1745
+b(2.0842e-11)g(9.9999e-01)p 51956 77111 V 4000 78439
+V 19954 78041 a(Sensitivity)583 b(1)1744 b(-2.6063e-04)1164
+b(-5.2149e-10)1745 b(2.6063e-04)p 51956 78439 V Black
+27394 81741 a Ft(13)p Black eop
+%%Page: 14 18
+14 17 bop Black Black 0 8037 45 1329 v 15954 7638 a Fg(Sensitivity)583
+b(2)2325 b(1.0425e-09)1745 b(2.0859e-15)1163 b(-1.0425e-09)p
+47956 8037 V 0 9365 V 15954 8966 a(Sensitivity)583 b(3)1744
+b(-1.7366e-13)1164 b(-6.9467e-19)1745 b(1.7367e-13)p
+47956 9365 V 0 10693 V 844 10295 a
+(-------------------------------------------------------------------)p
+(------------)p 47956 10693 V 0 12022 V 844 11623 a(4.000e+09)1164
+b(2)e(4.183e+08)1745 b(836)p 47956 12022 V 0 13350 V
+15954 12951 a(Solution)5232 b(5.1881e-07)1745 b(2.0752e-12)g
+(1.0000e-00)p 47956 13350 V 0 14678 V 15954 14280 a(Sensitivity)583
+b(1)1744 b(-2.5907e-05)1164 b(-5.1717e-11)1745 b(2.5907e-05)p
+47956 14678 V 0 16007 V 15954 15608 a(Sensitivity)583
+b(2)2325 b(1.0363e-10)1745 b(2.0687e-16)1163 b(-1.0363e-10)p
+47956 16007 V 0 17335 V 15954 16936 a(Sensitivity)583
+b(3)1744 b(-1.7293e-14)1164 b(-6.9174e-20)1745 b(1.7293e-14)p
+47956 17335 V 0 18663 V 844 18265 a
+(-------------------------------------------------------------------)p
+(------------)p 47956 18663 V 0 19992 V 844 19593 a(4.000e+10)1164
+b(2)e(3.799e+09)1745 b(859)p 47956 19992 V 0 21320 V
+15954 20922 a(Solution)5232 b(6.5181e-08)1745 b(2.6072e-13)g
+(1.0000e-00)p 47956 21320 V 0 22648 V 15954 22250 a(Sensitivity)583
+b(1)1744 b(-2.4884e-06)1164 b(-3.3032e-12)1745 b(2.4884e-06)p
+47956 22648 V 0 23977 V 15954 23578 a(Sensitivity)583
+b(2)2325 b(9.9534e-12)1745 b(1.3213e-17)1163 b(-9.9534e-12)p
+47956 23977 V 0 25305 V 15954 24907 a(Sensitivity)583
+b(3)1744 b(-2.1727e-15)1164 b(-8.6908e-21)1745 b(2.1727e-15)p
+47956 25305 V 0 26633 V 844 26235 a
+(-------------------------------------------------------------------)p
+(------------)p 47956 26633 V 0 27962 V 47956 27962 V
+0 29290 V 844 28892 a(Final)582 b(Statistics)p 47956
+29290 V 0 30619 V 47956 30619 V 0 31947 V 844 31548 a(nst)2907
+b(=)1743 b(859)p 47956 31947 V 0 33275 V 47956 33275
+V 0 34604 V 844 34205 a(nfe)2907 b(=)1162 b(1221)p 47956
+34604 V 0 35932 V 844 35533 a(netf)2326 b(=)e(29)h(nsetups)1163
+b(=)1744 b(142)p 47956 35932 V 0 37260 V 844 36862 a(nni)2907
+b(=)1162 b(1218)2325 b(ncfn)2906 b(=)g(4)p 47956 37260
+V 0 38589 V 47956 38589 V 0 39917 V 844 39518 a(nfSe)2326
+b(=)1162 b(3663)2325 b(nfeS)2906 b(=)g(0)p 47956 39917
+V 0 41245 V 844 40847 a(netfs)1745 b(=)2905 b(0)2325
+b(nsetupsS)582 b(=)2906 b(0)p 47956 41245 V 0 42574 V
+844 42175 a(nniS)2326 b(=)2905 b(0)2325 b(ncfnS)g(=)2906
+b(0)p 47956 42574 V 0 43902 V 47956 43902 V 0 45230 V
+844 44832 a(njeD)2326 b(=)e(24)h(nfeD)2906 b(=)g(0)p
+47956 45230 V 0 46030 45 801 v 47956 46030 V 0 46074
+48001 45 v 1882 48854 a Ft(The)428 b(output)i(generated)f(b)-34
+b(y)428 b Fr(cvfdx)i Ft(when)f(computing)g(sensitivities)e(with)i(the)g
+Fr(CV)p 41254 48854 382 45 v 458 w(STAGGERED1)0 50359
+y Ft(metho)34 b(d)405 b(and)g(partial)f(error)f(con)-34
+b(trol)404 b(\()p Fr(cvfdx)639 b(-sensi)f(stg1)g(f)p
+Ft(\))405 b(is:)p 0 52780 17898 45 v 18479 52846 a Fg(cvfdx)582
+b(sample)g(output)p 30102 52780 V 0 53580 45 801 v 47956
+53580 V 0 54909 45 1329 v 47956 54909 V 0 56237 V 844
+55838 a(3-species)h(chemical)f(kinetics)g(problem)p 47956
+56237 V 0 57565 V 844 57167 a(Sensitivity:)h(YES)f(\()f(STAGGERED)i(+)e
+(PARTIAL)h(ERROR)g(CONTROL)g(\))p 47956 57565 V 0 58894
+V 47956 58894 V 0 60222 V 844 59823 a
+(===================================================================)p
+(============)p 47956 60222 V 0 61550 V 3750 61152 a(T)2906
+b(Q)4068 b(H)3487 b(NST)11624 b(y1)6393 b(y2)f(y3)p 47956
+61550 V 0 62879 V 844 62480 a
+(===================================================================)p
+(============)p 47956 62879 V 0 64207 V 844 63808 a(4.000e-01)1164
+b(3)e(1.205e-01)2326 b(59)p 47956 64207 V 0 65535 V 15954
+65137 a(Solution)5232 b(9.8517e-01)1745 b(3.3863e-05)g(1.4797e-02)p
+47956 65535 V 0 66864 V 15954 66465 a(Sensitivity)583
+b(1)1744 b(-3.5611e-01)h(3.9023e-04)g(3.5572e-01)p 47956
+66864 V 0 68192 V 15954 67794 a(Sensitivity)583 b(2)2325
+b(9.4831e-08)1164 b(-2.1325e-10)f(-9.4618e-08)p 47956
+68192 V 0 69520 V 15954 69122 a(Sensitivity)583 b(3)1744
+b(-1.5733e-11)1164 b(-5.2897e-13)1745 b(1.6262e-11)p
+47956 69520 V 0 70849 V 844 70450 a
+(-------------------------------------------------------------------)p
+(------------)p 47956 70849 V 0 72177 V 844 71779 a(4.000e+00)1164
+b(4)e(5.316e-01)2326 b(74)p 47956 72177 V 0 73505 V 15954
+73107 a(Solution)5232 b(9.0552e-01)1745 b(2.2404e-05)g(9.4461e-02)p
+47956 73505 V 0 74834 V 15954 74435 a(Sensitivity)583
+b(1)1744 b(-1.8761e+00)h(1.7922e-04)g(1.8760e+00)p 47956
+74834 V 0 76162 V 15954 75764 a(Sensitivity)583 b(2)2325
+b(2.9612e-06)1164 b(-5.8308e-10)f(-2.9606e-06)p 47956
+76162 V 0 77491 V 15954 77092 a(Sensitivity)583 b(3)1744
+b(-4.9330e-10)1164 b(-2.7624e-13)1745 b(4.9357e-10)p
+47956 77491 V 0 78819 V 844 78420 a
+(-------------------------------------------------------------------)p
+(------------)p 47956 78819 V Black 23394 81741 a Ft(14)p
+Black eop
+%%Page: 15 19
+15 18 bop Black Black 4000 8037 45 1329 v 4844 7638 a
+Fg(4.000e+01)1164 b(3)e(1.445e+00)1745 b(116)p 51956
+8037 V 4000 9365 V 19954 8966 a(Solution)5232 b(7.1584e-01)1745
+b(9.1854e-06)g(2.8415e-01)p 51956 9365 V 4000 10693 V
+19954 10295 a(Sensitivity)583 b(1)1744 b(-4.2474e+00)h(4.5928e-05)g
+(4.2473e+00)p 51956 10693 V 4000 12022 V 19954 11623
+a(Sensitivity)583 b(2)2325 b(1.3730e-05)1164 b(-2.3573e-10)f
+(-1.3729e-05)p 51956 12022 V 4000 13350 V 19954 12951
+a(Sensitivity)583 b(3)1744 b(-2.2883e-09)1164 b(-1.1380e-13)1745
+b(2.2884e-09)p 51956 13350 V 4000 14678 V 4844 14280
+a(-------------------------------------------------------------------)p
+(------------)p 51956 14678 V 4000 16007 V 4844 15608
+a(4.000e+02)1164 b(3)e(1.605e+01)1745 b(164)p 51956 16007
+V 4000 17335 V 19954 16936 a(Solution)5232 b(4.5054e-01)1745
+b(3.2228e-06)g(5.4946e-01)p 51956 17335 V 4000 18663
+V 19954 18265 a(Sensitivity)583 b(1)1744 b(-5.9582e+00)h(3.5498e-06)g
+(5.9582e+00)p 51956 18663 V 4000 19992 V 19954 19593
+a(Sensitivity)583 b(2)2325 b(2.2737e-05)1164 b(-2.2593e-11)f
+(-2.2737e-05)p 51956 19992 V 4000 21320 V 19954 20922
+a(Sensitivity)583 b(3)1744 b(-3.7895e-09)1164 b(-4.9947e-14)1745
+b(3.7896e-09)p 51956 21320 V 4000 22648 V 4844 22250
+a(-------------------------------------------------------------------)p
+(------------)p 51956 22648 V 4000 23977 V 4844 23578
+a(4.000e+03)1164 b(3)e(1.474e+02)1745 b(227)p 51956 23977
+V 4000 25305 V 19954 24907 a(Solution)5232 b(1.8321e-01)1745
+b(8.9422e-07)g(8.1679e-01)p 51956 25305 V 4000 26633
+V 19954 26235 a(Sensitivity)583 b(1)1744 b(-4.7501e+00)1164
+b(-5.9934e-06)1745 b(4.7501e+00)p 51956 26633 V 4000
+27962 V 19954 27563 a(Sensitivity)583 b(2)2325 b(1.8809e-05)1745
+b(2.3126e-11)1163 b(-1.8809e-05)p 51956 27962 V 4000
+29290 V 19954 28892 a(Sensitivity)583 b(3)1744 b(-3.1348e-09)1164
+b(-1.8759e-14)1745 b(3.1348e-09)p 51956 29290 V 4000
+30619 V 4844 30220 a
+(-------------------------------------------------------------------)p
+(------------)p 51956 30619 V 4000 31947 V 4844 31548
+a(4.000e+04)1164 b(3)e(2.331e+03)1745 b(307)p 51956 31947
+V 4000 33275 V 19954 32877 a(Solution)5232 b(3.8978e-02)1745
+b(1.6215e-07)g(9.6102e-01)p 51956 33275 V 4000 34604
+V 19954 34205 a(Sensitivity)583 b(1)1744 b(-1.5749e+00)1164
+b(-2.7623e-06)1745 b(1.5749e+00)p 51956 34604 V 4000
+35932 V 19954 35533 a(Sensitivity)583 b(2)2325 b(6.2868e-06)1745
+b(1.1001e-11)1163 b(-6.2868e-06)p 51956 35932 V 4000
+37260 V 19954 36862 a(Sensitivity)583 b(3)1744 b(-1.0479e-09)1164
+b(-4.5364e-15)1745 b(1.0479e-09)p 51956 37260 V 4000
+38589 V 4844 38190 a
+(-------------------------------------------------------------------)p
+(------------)p 51956 38589 V 4000 39917 V 4844 39518
+a(4.000e+05)1164 b(3)e(2.342e+04)1745 b(349)p 51956 39917
+V 4000 41245 V 19954 40847 a(Solution)5232 b(4.9410e-03)1745
+b(1.9861e-08)g(9.9506e-01)p 51956 41245 V 4000 42574
+V 19954 42175 a(Sensitivity)583 b(1)1744 b(-2.3638e-01)1164
+b(-4.5834e-07)1745 b(2.3638e-01)p 51956 42574 V 4000
+43902 V 19954 43504 a(Sensitivity)583 b(2)2325 b(9.4515e-07)1745
+b(1.8319e-12)1163 b(-9.4515e-07)p 51956 43902 V 4000
+45230 V 19954 44832 a(Sensitivity)583 b(3)1744 b(-1.5757e-10)1164
+b(-6.3653e-16)1745 b(1.5757e-10)p 51956 45230 V 4000
+46559 V 4844 46160 a
+(-------------------------------------------------------------------)p
+(------------)p 51956 46559 V 4000 47887 V 4844 47489
+a(4.000e+06)1164 b(4)e(1.723e+05)1745 b(391)p 51956 47887
+V 4000 49215 V 19954 48817 a(Solution)5232 b(5.1690e-04)1745
+b(2.0686e-09)g(9.9948e-01)p 51956 49215 V 4000 50544
+V 19954 50145 a(Sensitivity)583 b(1)1744 b(-2.5662e-02)1164
+b(-5.1036e-08)1745 b(2.5662e-02)p 51956 50544 V 4000
+51872 V 19954 51474 a(Sensitivity)583 b(2)2325 b(1.0264e-07)1745
+b(2.0412e-13)1163 b(-1.0264e-07)p 51956 51872 V 4000
+53201 V 19954 52802 a(Sensitivity)583 b(3)1744 b(-1.7110e-11)1164
+b(-6.8509e-17)1745 b(1.7110e-11)p 51956 53201 V 4000
+54529 V 4844 54130 a
+(-------------------------------------------------------------------)p
+(------------)p 51956 54529 V 4000 55857 V 4844 55459
+a(4.000e+07)1164 b(4)e(4.952e+06)1745 b(439)p 51956 55857
+V 4000 57186 V 19954 56787 a(Solution)5232 b(5.1984e-05)1745
+b(2.0795e-10)g(9.9995e-01)p 51956 57186 V 4000 58514
+V 19954 58115 a(Sensitivity)583 b(1)1744 b(-2.5970e-03)1164
+b(-5.1903e-09)1745 b(2.5970e-03)p 51956 58514 V 4000
+59842 V 19954 59444 a(Sensitivity)583 b(2)2325 b(1.0388e-08)1745
+b(2.0761e-14)1163 b(-1.0388e-08)p 51956 59842 V 4000
+61171 V 19954 60772 a(Sensitivity)583 b(3)1744 b(-1.7312e-12)1164
+b(-6.9256e-18)1745 b(1.7312e-12)p 51956 61171 V 4000
+62499 V 4844 62100 a
+(-------------------------------------------------------------------)p
+(------------)p 51956 62499 V 4000 63827 V 4844 63429
+a(4.000e+08)1164 b(3)e(2.444e+07)1745 b(491)p 51956 63827
+V 4000 65156 V 19954 64757 a(Solution)5232 b(5.2121e-06)1745
+b(2.0849e-11)g(9.9999e-01)p 51956 65156 V 4000 66484
+V 19954 66086 a(Sensitivity)583 b(1)1744 b(-2.6067e-04)1164
+b(-5.2146e-10)1745 b(2.6067e-04)p 51956 66484 V 4000
+67812 V 19954 67414 a(Sensitivity)583 b(2)2325 b(1.0427e-09)1745
+b(2.0858e-15)1163 b(-1.0427e-09)p 51956 67812 V 4000
+69141 V 19954 68742 a(Sensitivity)583 b(3)1744 b(-1.7385e-13)1164
+b(-6.9541e-19)1745 b(1.7385e-13)p 51956 69141 V 4000
+70469 V 4844 70071 a
+(-------------------------------------------------------------------)p
+(------------)p 51956 70469 V 4000 71797 V 4844 71399
+a(4.000e+09)1164 b(4)e(1.450e+08)1745 b(525)p 51956 71797
+V 4000 73126 V 19954 72727 a(Solution)5232 b(5.0539e-07)1745
+b(2.0216e-12)g(1.0000e-00)p 51956 73126 V 4000 74454
+V 19954 74056 a(Sensitivity)583 b(1)1744 b(-2.6111e-05)1164
+b(-5.3906e-11)1745 b(2.6111e-05)p 51956 74454 V 4000
+75782 V 19954 75384 a(Sensitivity)583 b(2)2325 b(1.0445e-10)1745
+b(2.1562e-16)1163 b(-1.0445e-10)p 51956 75782 V 4000
+77111 V 19954 76712 a(Sensitivity)583 b(3)1744 b(-1.7437e-14)1164
+b(-6.9746e-20)1745 b(1.7437e-14)p 51956 77111 V 4000
+78439 V 4844 78041 a
+(-------------------------------------------------------------------)p
+(------------)p 51956 78439 V Black 27394 81741 a Ft(15)p
+Black eop
+%%Page: 16 20
+16 19 bop Black Black 0 8037 45 1329 v 844 7638 a Fg(4.000e+10)1164
+b(5)e(7.934e+08)1745 b(579)p 47956 8037 V 0 9365 V 15954
+8966 a(Solution)5232 b(5.9422e-08)1745 b(2.3769e-13)g(1.0000e-00)p
+47956 9365 V 0 10693 V 15954 10295 a(Sensitivity)583
+b(1)1744 b(-2.8007e-06)1164 b(-5.2605e-12)1745 b(2.8007e-06)p
+47956 10693 V 0 12022 V 15954 11623 a(Sensitivity)583
+b(2)2325 b(1.1203e-11)1745 b(2.1042e-17)1163 b(-1.1203e-11)p
+47956 12022 V 0 13350 V 15954 12951 a(Sensitivity)583
+b(3)1744 b(-1.7491e-15)1164 b(-6.9963e-21)1745 b(1.7491e-15)p
+47956 13350 V 0 14678 V 844 14280 a
+(-------------------------------------------------------------------)p
+(------------)p 47956 14678 V 0 16007 V 47956 16007 V
+0 17335 V 844 16936 a(Final)582 b(Statistics)p 47956
+17335 V 0 18663 V 47956 18663 V 0 19992 V 844 19593 a(nst)2907
+b(=)1743 b(579)p 47956 19992 V 0 21320 V 47956 21320
+V 0 22648 V 844 22250 a(nfe)2907 b(=)1162 b(1379)p 47956
+22648 V 0 23977 V 844 23578 a(netf)2326 b(=)e(25)h(nsetups)1163
+b(=)1744 b(109)p 47956 23977 V 0 25305 V 844 24907 a(nni)2907
+b(=)1743 b(797)2325 b(ncfn)2906 b(=)g(0)p 47956 25305
+V 0 26633 V 47956 26633 V 0 27962 V 844 27563 a(nfSe)2326
+b(=)1162 b(2829)2325 b(nfeS)2906 b(=)g(0)p 47956 27962
+V 0 29290 V 844 28892 a(netfs)1745 b(=)2905 b(0)2325
+b(nsetupsS)582 b(=)2906 b(3)p 47956 29290 V 0 30619 V
+844 30220 a(nniS)2326 b(=)1743 b(942)2325 b(ncfnS)g(=)2906
+b(0)p 47956 30619 V 0 31947 V 47956 31947 V 0 33275 V
+844 32877 a(njeD)2326 b(=)e(11)h(nfeD)2906 b(=)g(0)p
+47956 33275 V 0 34075 45 801 v 47956 34075 V 0 34119
+48001 45 v Black 23394 81741 a Ft(16)p Black eop
+%%Page: 17 21
+17 20 bop Black Black 4000 7638 a Fo(2.3)1495 b(An)499
+b(SPGMR)e(parallel)j(example)e(with)h(user)g(preconditioner:)667
+b Fn(pvfkx)4000 10002 y Ft(As)315 b(an)f(example)g(of)h(using)g(the)g
+(forw)-34 b(ard)316 b(sensitivit)-34 b(y)314 b(capabilities)g(in)g
+Fq(cv)-27 b(odes)316 b Ft(with)f(the)g(Krylo)-34 b(v)314
+b(linear)4000 11507 y(solv)-34 b(er)356 b Fq(cvspgmr)h
+Ft(and)g(the)f Fq(nvector)p 22378 11507 403 45 v 485
+w(p)-81 b(arallel)358 b Ft(mo)34 b(dule,)366 b(w)-34
+b(e)356 b(describ)34 b(e)355 b(a)i(test)f(problem)h(based)g(on)4000
+13013 y(the)420 b(semi-discrete)g(form)g(of)g(a)g(t)-34
+b(w)g(o-sp)34 b(ecies)421 b(diurnal)f(kinetics)g(adv)-34
+b(ection-di\256usion)421 b(PDE)f(system)g(in)4000 14518
+y(2-D)402 b(space,)g(for)g(whic)-34 b(h)402 b(w)-34 b(e)403
+b(compute)f(solution)h(sensitivities)e(with)i(resp)34
+b(ect)401 b(to)h(problem)g(parameters)4000 16024 y(\()p
+Fm(q)5012 16206 y Fl(1)5942 16024 y Ft(and)j Fm(q)8840
+16206 y Fl(2)9366 16024 y Ft(\))g(that)g(app)34 b(ear)404
+b(in)g(the)h(kinetic)e(rate)h(terms.)538 b(The)405 b(PDE)f(is)11228
+18797 y Fm(@)67 b(c)12464 18358 y Fk(i)p 11228 19339
+1612 49 v 11460 20449 a Fm(@)g(t)13309 19617 y Ft(=)337
+b Fm(K)15618 19814 y Fk(h)16348 18797 y Fm(@)17059 18358
+y Fl(2)17585 18797 y Fm(c)18110 18358 y Fk(i)p 16348
+19339 2137 49 v 16452 20449 a Fm(@)67 b(x)17856 20099
+y Fl(2)18888 19617 y Ft(+)269 b Fm(V)21209 18797 y(@)67
+b(c)22445 18358 y Fk(i)p 21209 19339 1612 49 v 21313
+20449 a Fm(@)g(x)23222 19617 y Ft(+)24886 18797 y Fm(@)p
+24567 19339 1349 49 v 24567 20449 a(@)g(y)26049 19617
+y(K)27078 19799 y Fk(v)27623 19617 y Ft(\()p Fm(y)43
+b Ft(\))29335 18797 y Fm(@)67 b(c)30571 18358 y Fk(i)p
+29335 19339 1612 49 v 29466 20449 a Fm(@)g(y)31350 19617
+y Ft(+)269 b Fm(R)33491 19117 y Fk(i)33868 19617 y Ft(\()p
+Fm(c)34864 19117 y Fl(1)35389 19617 y Fm(;)202 b(c)36453
+19117 y Fl(2)36978 19617 y Fm(;)g(t)p Ft(\))1212 b(\()p
+Fm(i)337 b Ft(=)f(1)p Fm(;)202 b Ft(2\))g Fm(;)5547 b
+Ft(\(8\))4000 22972 y(where)489 b(the)h(sup)34 b(erscripts)490
+b Fm(i)f Ft(are)g(used)g(to)h(distinguish)h(the)f(t)-34
+b(w)g(o)491 b(c)-34 b(hemical)488 b(sp)34 b(ecies,)510
+b(and)490 b(where)f(the)4000 24477 y(reaction)404 b(terms)g(are)g(giv)
+-34 b(en)403 b(b)-34 b(y)14152 27229 y Fm(R)15081 26729
+y Fl(1)15608 27229 y Ft(\()p Fm(c)16604 26729 y Fl(1)17130
+27229 y Fm(;)202 b(c)18194 26729 y Fl(2)18719 27229 y
+Fm(;)g(t)p Ft(\))336 b(=)h Fp(\241)p Fm(q)23267 27411
+y Fl(1)23792 27229 y Fm(c)24317 26729 y Fl(1)24843 27229
+y Fm(c)25368 26729 y Fl(3)26163 27229 y Fp(\241)269 b
+Fm(q)27916 27411 y Fl(2)28442 27229 y Fm(c)28967 26729
+y Fl(1)29492 27229 y Fm(c)30017 26729 y Fl(2)30812 27229
+y Ft(+)g(2)p Fm(q)33171 27411 y Fl(3)33697 27229 y Ft(\()p
+Fm(t)p Ft(\))p Fm(c)35602 26729 y Fl(3)36397 27229 y
+Ft(+)g Fm(q)38150 27411 y Fl(4)38676 27229 y Ft(\()p
+Fm(t)p Ft(\))p Fm(c)40581 26729 y Fl(2)41511 27229 y
+Fm(;)14152 29195 y(R)15081 28694 y Fl(2)15608 29195 y
+Ft(\()p Fm(c)16604 28694 y Fl(1)17130 29195 y Fm(;)202
+b(c)18194 28694 y Fl(2)18719 29195 y Fm(;)g(t)p Ft(\))336
+b(=)h Fm(q)22324 29377 y Fl(1)22850 29195 y Fm(c)23375
+28694 y Fl(1)23900 29195 y Fm(c)24425 28694 y Fl(3)25220
+29195 y Fp(\241)269 b Fm(q)26973 29377 y Fl(2)27499 29195
+y Fm(c)28024 28694 y Fl(1)28549 29195 y Fm(c)29074 28694
+y Fl(2)29869 29195 y Fp(\241)g Fm(q)31622 29377 y Fl(4)32148
+29195 y Ft(\()p Fm(t)p Ft(\))p Fm(c)34053 28694 y Fl(2)34983
+29195 y Fm(:)50451 28205 y Ft(\(9\))4000 32001 y(The)553
+b(spatial)g(domain)g(is)f(0)584 b Fp(\267)g Fm(x)g Fp(\267)f
+Ft(20)p Fm(;)786 b Ft(30)584 b Fp(\267)g Fm(y)628 b Fp(\267)584
+b Ft(50)552 b(\(in)h Fe(km)p Ft(\).)984 b(The)553 b(v)-67
+b(arious)552 b(constan)-34 b(ts)554 b(and)4000 33506
+y(parameters)435 b(are:)598 b Fm(K)13891 33703 y Fk(h)14877
+33506 y Ft(=)387 b(4)p Fm(:)p Ft(0)290 b Fp(\242)f Ft(10)19884
+33066 y Fj(\241)p Fl(6)21142 33506 y Fm(;)636 b(V)657
+b Ft(=)387 b(10)26021 33066 y Fj(\241)p Fl(3)27279 33506
+y Fm(;)636 b(K)29281 33688 y Fk(v)30214 33506 y Ft(=)387
+b(10)32756 33066 y Fj(\241)p Fl(8)34216 33506 y Ft(exp\()p
+Fm(y)43 b(=)p Ft(5\))p Fm(;)638 b(q)40375 33688 y Fl(1)41288
+33506 y Ft(=)388 b(1)p Fm(:)p Ft(63)289 b Fp(\242)g Ft(10)46901
+33066 y Fj(\241)p Fl(16)48630 33506 y Fm(;)636 b(q)50144
+33688 y Fl(2)51057 33506 y Ft(=)4000 35012 y(4)p Fm(:)p
+Ft(66)269 b Fp(\242)g Ft(10)8242 34572 y Fj(\241)p Fl(16)9971
+35012 y Fm(;)605 b(c)11438 34572 y Fl(3)12300 35012 y
+Ft(=)337 b(3)p Fm(:)p Ft(7)269 b Fp(\242)g Ft(10)17216
+34572 y Fl(16)18212 35012 y Fm(;)404 b Ft(and)h(the)g(diurnal)f(rate)g
+(constan)-34 b(ts)406 b(are)e(de\257ned)h(as:)12807 38501
+y Fm(q)13348 38683 y Fk(i)13724 38501 y Ft(\()p Fm(t)p
+Ft(\))337 b(=)16720 36792 y Ff(\275)18183 37746 y Ft(exp[)p
+Fp(\241)p Fm(a)21956 37928 y Fk(i)22331 37746 y Fm(=)202
+b Ft(sin)g Fm(!)43 b(t)p Ft(])p Fm(;)1107 b Ft(for)606
+b(sin)202 b Fm(!)43 b(t)338 b(>)e Ft(0)18183 39252 y(0)p
+Fm(;)8719 b Ft(for)606 b(sin)202 b Fm(!)43 b(t)338 b
+Fp(\267)e Ft(0)35604 36792 y Ff(\276)37927 38501 y Ft(\()p
+Fm(i)h Ft(=)f(3)p Fm(;)202 b Ft(4\))g Fm(;)4000 42058
+y Ft(where)425 b Fm(!)415 b Ft(=)371 b Fm(\274)43 b(=)p
+Ft(43200)p Fm(;)627 b(a)15984 42240 y Fl(3)16881 42058
+y Ft(=)371 b(22)p Fm(:)p Ft(62)p Fm(;)626 b(a)22560 42240
+y Fl(4)23457 42058 y Ft(=)371 b(7)p Fm(:)p Ft(601)p Fm(:)424
+b Ft(The)i(time)e(in)-34 b(terv)-67 b(al)424 b(of)i(in)-34
+b(tegration)425 b(is)g([0)p Fm(;)202 b Ft(86400],)4000
+43563 y(represen)-34 b(ting)404 b(24)h(hours)f(measured)h(in)f
+(seconds.)5882 45108 y(Homogeneous)483 b(Neumann)g(b)34
+b(oundary)483 b(conditions)h(are)d(imp)34 b(osed)483
+b(on)g(eac)-34 b(h)482 b(b)34 b(oundary)-101 b(,)502
+b(and)483 b(the)4000 46613 y(initial)404 b(conditions)h(are)13210
+49130 y Fm(c)13735 48629 y Fl(1)14261 49130 y Ft(\()p
+Fm(x;)202 b(y)43 b(;)202 b Ft(0\))337 b(=)g(10)21046
+48629 y Fl(6)21571 49130 y Fm(\256)t Ft(\()p Fm(x)p Ft(\))p
+Fm(\257)64 b Ft(\()p Fm(y)43 b Ft(\))407 b Fm(;)1414
+b(c)28997 48629 y Fl(2)29522 49130 y Ft(\()p Fm(x;)202
+b(y)43 b(;)202 b Ft(0\))338 b(=)e(10)36307 48629 y Fl(12)37304
+49130 y Fm(\256)t Ft(\()p Fm(x)p Ft(\))p Fm(\257)64 b
+Ft(\()p Fm(y)43 b Ft(\))406 b Fm(;)15802 51095 y(\256)t
+Ft(\()p Fm(x)p Ft(\))338 b(=)f(1)269 b Fp(\241)g Ft(\(0)p
+Fm(:)p Ft(1)p Fm(x)g Fp(\241)g Ft(1\))27192 50595 y Fl(2)27988
+51095 y Ft(+)g(\(0)p Fm(:)p Ft(1)p Fm(x)h Fp(\241)f Ft(1\))34472
+50595 y Fl(4)34998 51095 y Fm(=)p Ft(2)404 b Fm(;)15887
+53061 y(\257)64 b Ft(\()p Fm(y)43 b Ft(\))338 b(=)f(1)269
+b Fp(\241)g Ft(\(0)p Fm(:)p Ft(1)p Fm(y)313 b Fp(\241)269
+b Ft(4\))27137 52560 y Fl(2)27933 53061 y Ft(+)g(\(0)p
+Fm(:)p Ft(1)p Fm(y)314 b Fp(\241)269 b Ft(4\))34362 52560
+y Fl(4)34888 53061 y Fm(=)p Ft(2)404 b Fm(:)49845 51088
+y Ft(\(10\))4000 55799 y(W)-101 b(e)528 b(discretize)g(the)h(PDE)f
+(system)h(with)g(cen)-34 b(tral)529 b(di\256erencing,)559
+b(to)529 b(obtain)h(an)f(ODE)f(system)741 b(_)-549 b
+Fm(u)544 b Ft(=)4000 57305 y Fm(f)130 b Ft(\()p Fm(t;)202
+b(u)p Ft(\))366 b(represen)-34 b(ting)366 b(\(8\).)527
+b(In)365 b(this)h(case,)373 b(the)366 b(discrete)f(solution)h(v)-34
+b(ector)365 b(is)g(distributed)i(across)e(man)-34 b(y)4000
+58810 y(pro)34 b(cesses.)578 b(Sp)34 b(eci\257cally)-101
+b(,)419 b(w)-34 b(e)418 b(ma)-34 b(y)417 b(think)h(of)g(the)g(pro)34
+b(cesses)416 b(as)i(b)34 b(eing)417 b(laid)g(out)h(in)g(a)f(rectangle,)
+j(and)4000 60316 y(eac)-34 b(h)442 b(pro)34 b(cess)441
+b(b)34 b(eing)441 b(assigned)h(a)g(subgrid)g(of)g(size)f
+Fr(MXSUB)p Fp(\243)p Fr(MYSUB)k Ft(of)c(the)h Fm(x)294
+b Fp(\241)h Fm(y)485 b Ft(grid.)650 b(If)442 b(there)f(are)4000
+61821 y Fr(NPEX)494 b Ft(pro)34 b(cesses)492 b(in)h(the)g
+Fm(x)g Ft(direction)g(and)g Fr(NPEY)h Ft(pro)34 b(cesses)492
+b(in)h(the)h Fm(y)536 b Ft(direction,)515 b(then)493
+b(the)h(o)-34 b(v)g(erall)4000 63327 y(grid)493 b(size)g(is)g
+Fr(MX)p Fp(\243)p Fr(MY)i Ft(with)f Fr(MX)p Ft(=)p Fr(NPEX)p
+Fp(\243)p Fr(MXSUB)j Ft(and)d Fr(MY)p Ft(=)p Fr(NPEY)p
+Fp(\243)p Fr(MYSUB)p Ft(,)j(and)d(the)g(size)f(of)g(the)h(ODE)4000
+64832 y(system)404 b(is)g(2)p Fp(\242)p Fr(MX)p Fp(\242)p
+Fr(MY)p Ft(.)5882 66377 y(T)-101 b(o)351 b(compute)g
+Fm(f)481 b Ft(in)351 b(this)g(setting,)362 b(the)351
+b(pro)34 b(cesses)350 b(pass)h(and)g(receiv)-34 b(e)349
+b(information)i(as)g(follo)-34 b(ws.)521 b(The)4000 67882
+y(solution)423 b(comp)34 b(onen)-34 b(ts)423 b(for)g(the)f(b)34
+b(ottom)423 b(ro)-34 b(w)423 b(of)f(grid)g(p)34 b(oin)-34
+b(ts)424 b(assigned)e(to)h(the)f(curren)-34 b(t)423 b(pro)34
+b(cess)421 b(are)4000 69388 y(passed)459 b(to)f(the)h(pro)34
+b(cess)458 b(b)34 b(elo)-34 b(w)458 b(it,)472 b(and)459
+b(the)f(solution)h(for)f(the)h(top)g(ro)-34 b(w)459 b(of)f(grid)g(p)34
+b(oin)-34 b(ts)459 b(is)f(receiv)-34 b(ed)4000 70893
+y(from)509 b(the)f(pro)34 b(cess)508 b(b)34 b(elo)-34
+b(w)509 b(the)f(curren)-34 b(t)509 b(pro)34 b(cess.)850
+b(The)509 b(solution)g(for)g(the)f(top)h(ro)-34 b(w)509
+b(of)g(grid)f(p)34 b(oin)-34 b(ts)4000 72398 y(for)426
+b(the)h(curren)-34 b(t)426 b(pro)34 b(cess)426 b(is)g(sen)-34
+b(t)427 b(to)g(the)f(pro)34 b(cess)426 b(ab)34 b(o)-34
+b(v)g(e)426 b(the)h(curren)-34 b(t)427 b(pro)34 b(cess,)430
+b(while)d(the)f(solution)4000 73904 y(for)551 b(the)h(b)34
+b(ottom)552 b(ro)-34 b(w)552 b(of)f(grid)g(p)34 b(oin)-34
+b(ts)552 b(is)f(receiv)-34 b(ed)550 b(from)h(that)i(pro)34
+b(cess)550 b(b)-34 b(y)552 b(the)f(curren)-34 b(t)552
+b(pro)34 b(cess.)4000 75409 y(Similarly)-101 b(,)378
+b(the)373 b(solution)h(for)f(the)g(\257rst)h(column)f(of)h(grid)e(p)34
+b(oin)-34 b(ts)374 b(is)f(sen)-34 b(t)374 b(from)f(the)h(curren)-34
+b(t)373 b(pro)34 b(cess)373 b(to)4000 76915 y(the)445
+b(pro)34 b(cess)443 b(to)i(its)f(left,)454 b(and)445
+b(the)f(last)h(column)f(of)h(grid)e(p)34 b(oin)-34 b(ts)446
+b(is)d(receiv)-34 b(ed)443 b(from)i(that)g(pro)34 b(cess)444
+b(b)-34 b(y)4000 78420 y(the)466 b(curren)-34 b(t)465
+b(pro)34 b(cess.)721 b(The)466 b(comm)-34 b(unication)466
+b(for)f(the)h(solution)g(at)f(the)h(righ)-34 b(t)465
+b(edge)g(of)h(the)f(pro)34 b(cess)p Black 27394 81741
+a(17)p Black eop
+%%Page: 18 22
+18 21 bop Black Black Black 0 28839 a @beginspecial -25
+ at llx 232 @lly 673 @urx 558 @ury 4320 @rwi @setspecial
+%%BeginDocument: pvfkx.eps
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: MATLAB, The Mathworks, Inc.
+%%Title: /home/radu/CODES/sundials/cvodes/doc/pvfkx.eps
+%%CreationDate: 10/19/2004  17:35:32
+%%DocumentNeededFonts: Helvetica
+%%+ Helvetica-Bold
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%Extensions: CMYK
+%%Pages: 1
+%%BoundingBox:   -25   232   673   558
+%%EndComments
+
+%%BeginProlog
+% MathWorks dictionary
+/MathWorks 160 dict begin
+% definition operators
+/bdef {bind def} bind def
+/ldef {load def} bind def
+/xdef {exch def} bdef
+/xstore {exch store} bdef
+% operator abbreviations
+/c  /clip ldef
+/cc /concat ldef
+/cp /closepath ldef
+/gr /grestore ldef
+/gs /gsave ldef
+/mt /moveto ldef
+/np /newpath ldef
+/cm /currentmatrix ldef
+/sm /setmatrix ldef
+/rm /rmoveto ldef
+/rl /rlineto ldef
+/s /show ldef
+/sc {setcmykcolor} bdef
+/sr /setrgbcolor ldef
+/sg /setgray ldef
+/w /setlinewidth ldef
+/j /setlinejoin ldef
+/cap /setlinecap ldef
+/rc {rectclip} bdef
+/rf {rectfill} bdef
+% page state control
+/pgsv () def
+/bpage {/pgsv save def} bdef
+/epage {pgsv restore} bdef
+/bplot /gsave ldef
+/eplot {stroke grestore} bdef
+% orientation switch
+/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def
+% coordinate system mappings
+/dpi2point 0 def
+% font control
+/FontSize 0 def
+/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0]
+  makefont setfont} bdef
+/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse
+  exch dup 3 1 roll findfont dup length dict begin
+  { 1 index /FID ne {def}{pop pop} ifelse } forall
+  /Encoding exch def currentdict end definefont pop} bdef
+/isroman {findfont /CharStrings get /Agrave known} bdef
+/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse
+  exch FMS} bdef
+/csm {1 dpi2point div -1 dpi2point div scale neg translate
+ dup landscapeMode eq {pop -90 rotate}
+  {rotateMode eq {90 rotate} if} ifelse} bdef
+% line types: solid, dotted, dashed, dotdash
+/SO { [] 0 setdash } bdef
+/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
+/DA { [6 dpi2point mul] 0 setdash } bdef
+/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4
+  dpi2point mul] 0 setdash } bdef
+% macros for lines and objects
+/L {lineto stroke} bdef
+/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef
+/AP {{rlineto} repeat} bdef
+/PDlw -1 def
+/W {/PDlw currentlinewidth def setlinewidth} def
+/PP {closepath eofill} bdef
+/DP {closepath stroke} bdef
+/MR {4 -2 roll moveto dup  0 exch rlineto exch 0 rlineto
+  neg 0 exch rlineto closepath} bdef
+/FR {MR stroke} bdef
+/PR {MR fill} bdef
+/L1i {{currentfile picstr readhexstring pop} image} bdef
+/tMatrix matrix def
+/MakeOval {newpath tMatrix currentmatrix pop translate scale
+0 0 1 0 360 arc tMatrix setmatrix} bdef
+/FO {MakeOval stroke} bdef
+/PO {MakeOval fill} bdef
+/PD {currentlinewidth 2 div 0 360 arc fill
+   PDlw -1 eq not {PDlw w /PDlw -1 def} if} def
+/FA {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef
+/PA {newpath tMatrix currentmatrix pop	translate 0 0 moveto scale
+  0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef
+/FAn {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef
+/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale
+  0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef
+/vradius 0 def /hradius 0 def /lry 0 def
+/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def
+/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef
+  /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly
+  vradius add translate hradius vradius scale 0 0 1 180 270 arc 
+  tMatrix setmatrix lrx hradius sub uly vradius add translate
+  hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix
+  lrx hradius sub lry vradius sub translate hradius vradius scale
+  0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub
+  translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix
+  closepath} bdef
+/FRR {MRR stroke } bdef
+/PRR {MRR fill } bdef
+/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix
+  closepath} bdef
+/FlrRR {MlrRR stroke } bdef
+/PlrRR {MlrRR fill } bdef
+/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix
+  closepath} bdef
+/FtbRR {MtbRR stroke } bdef
+/PtbRR {MtbRR fill } bdef
+/stri 6 array def /dtri 6 array def
+/smat 6 array def /dmat 6 array def
+/tmat1 6 array def /tmat2 6 array def /dif 3 array def
+/asub {/ind2 exch def /ind1 exch def dup dup
+  ind1 get exch ind2 get sub exch } bdef
+/tri_to_matrix {
+  2 0 asub 3 1 asub 4 0 asub 5 1 asub
+  dup 0 get exch 1 get 7 -1 roll astore } bdef
+/compute_transform {
+  dmat dtri tri_to_matrix tmat1 invertmatrix 
+  smat stri tri_to_matrix tmat2 concatmatrix } bdef
+/ds {stri astore pop} bdef
+/dt {dtri astore pop} bdef
+/db {2 copy /cols xdef /rows xdef mul dup 3 mul string
+  currentfile exch readhexstring pop
+  dup 0 3 index getinterval /rbmap xdef
+  dup 2 index dup getinterval /gbmap xdef
+  1 index dup 2 mul exch getinterval /bbmap xdef pop pop}bdef
+/it {gs np dtri aload pop moveto lineto lineto cp c
+  cols rows 8 compute_transform 
+  rbmap gbmap bbmap true 3 colorimage gr}bdef
+/il {newpath moveto lineto stroke}bdef
+currentdict end def
+%%EndProlog
+
+%%BeginSetup
+MathWorks begin
+
+0 cap
+
+end
+%%EndSetup
+
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox:   -25   232   673   558
+MathWorks begin
+bpage
+%%EndPageSetup
+
+%%BeginObject: obj1
+bplot
+
+/dpi2point 12 def
+portraitMode -1212 6756 csm
+
+  903    52  8393  3913 MR c np
+91 dict begin %Colortable dictionary
+/c0 { 0 0 0 sr} bdef
+/c1 { 1 1 1 sr} bdef
+/c2 { 1 0 0 sr} bdef
+/c3 { 0 1 0 sr} bdef
+/c4 { 0 0 1 sr} bdef
+/c5 { 1 1 0 sr} bdef
+/c6 { 1 0 1 sr} bdef
+/c7 { 0 1 1 sr} bdef
+c0
+1 j
+1 sg
+   0    0 9783 4032 PR
+6 w
+0 3286 3199 0 0 -3286 1272 3588 4 MP
+PP
+-3199 0 0 3286 3199 0 0 -3286 1272 3588 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+1272 3588 mt 4471 3588 L
+1272  302 mt 4471  302 L
+/c8 { 0.000000 0.000000 1.000000 sr} bdef
+c8
+1272 3588 mt 1272  302 L
+4471 3588 mt 4471  302 L
+0 sg
+1272 3588 mt 4471 3588 L
+c8
+1272 3588 mt 1272  302 L
+0 sg
+1272 3588 mt 1272 3571 L
+1272  302 mt 1272  318 L
+1272 3588 mt 1272 3555 L
+1272  302 mt 1272  334 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1184 3770 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+1317 3696 mt 
+(3) s
+1753 3588 mt 1753 3571 L
+1753  302 mt 1753  318 L
+2035 3588 mt 2035 3571 L
+2035  302 mt 2035  318 L
+2234 3588 mt 2234 3571 L
+2234  302 mt 2234  318 L
+2390 3588 mt 2390 3571 L
+2390  302 mt 2390  318 L
+2516 3588 mt 2516 3571 L
+2516  302 mt 2516  318 L
+2623 3588 mt 2623 3571 L
+2623  302 mt 2623  318 L
+2716 3588 mt 2716 3571 L
+2716  302 mt 2716  318 L
+2798 3588 mt 2798 3571 L
+2798  302 mt 2798  318 L
+2871 3588 mt 2871 3571 L
+2871  302 mt 2871  318 L
+2871 3588 mt 2871 3555 L
+2871  302 mt 2871  334 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+2783 3770 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+2916 3696 mt 
+(4) s
+3352 3588 mt 3352 3571 L
+3352  302 mt 3352  318 L
+3634 3588 mt 3634 3571 L
+3634  302 mt 3634  318 L
+3834 3588 mt 3834 3571 L
+3834  302 mt 3834  318 L
+3989 3588 mt 3989 3571 L
+3989  302 mt 3989  318 L
+4116 3588 mt 4116 3571 L
+4116  302 mt 4116  318 L
+4223 3588 mt 4223 3571 L
+4223  302 mt 4223  318 L
+4315 3588 mt 4315 3571 L
+4315  302 mt 4315  318 L
+4397 3588 mt 4397 3571 L
+4397  302 mt 4397  318 L
+4471 3588 mt 4471 3571 L
+4471  302 mt 4471  318 L
+4471 3588 mt 4471 3555 L
+4471  302 mt 4471  334 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+4383 3770 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+4516 3696 mt 
+(5) s
+c8
+1272 3588 mt 1304 3588 L
+4471 3588 mt 4438 3588 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1101 3632 mt 
+(-2) s
+1272 2492 mt 1304 2492 L
+4471 2492 mt 4438 2492 L
+1171 2536 mt 
+(0) s
+1272 1397 mt 1304 1397 L
+4471 1397 mt 4438 1397 L
+1171 1441 mt 
+(2) s
+1272  302 mt 1304  302 L
+4471  302 mt 4438  302 L
+1171  346 mt 
+(4) s
+1272  248 mt 
+(x 10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+1498  174 mt 
+(7) s
+0 sg
+1272 3588 mt 4471 3588 L
+1272  302 mt 4471  302 L
+c8
+1272 3588 mt 1272  302 L
+4471 3588 mt 4471  302 L
+gs 1272 302 3200 3287 MR c np
+24 w
+6 0 5 0 6 0 6 0 6 0 6 0 7 0 6 0 
+6 0 6 0 7 0 6 0 6 0 7 0 6 0 7 0 
+7 0 7 0 6 0 7 0 7 0 7 0 7 0 8 0 
+7 0 7 0 8 0 7 0 8 0 7 0 8 0 8 0 
+8 0 8 0 5 0 5 0 4 0 5 0 5 0 5 0 
+5 0 5 0 6 0 5 0 3 0 3 0 3 0 5 0 
+6 0 6 0 6 0 6 0 6 0 6 0 6 0 6 0 
+6 0 6 0 7 0 6 0 6 0 4 0 4 0 4 0 
+4 0 4 0 1 0 6 0 7 0 6 0 6 0 7 0 
+7 0 6 0 7 0 7 0 7 0 7 0 7 0 7 0 
+7 0 7 0 7 0 8 0 4 0 5 0 5 0 5 0 
+3 0 2 0 2 0 2 0 2 0 3 0 1 0 1 0 
+2 0 1 0 2 0 3822 2492 100 MP stroke
+1 0 1 0 2 0 1 0 2 0 1 0 2 0 1 0 
+1 0 2 0 1 0 2 0 1 0 2 0 1 0 2 0 
+1 0 2 0 1 0 1 0 2 0 1 0 2 0 1 0 
+2 0 2 0 2 0 1 0 2 0 1 0 1 0 2 0 
+1 0 1 0 2 0 1 0 1 0 2 0 1 0 1 0 
+2 1 1 0 2 0 2 0 3 0 3 1 3 0 3 1 
+3 1 4 1 4 2 4 2 5 3 6 5 6 6 6 8 
+6 11 6 12 7 15 6 18 7 21 6 24 9 38 9 45 
+10 52 9 59 9 66 10 72 10 78 5 46 4 29 3 29 
+4 30 3 30 4 31 3 31 6 49 8 72 11 98 11 97 
+11 95 12 90 11 84 12 75 12 65 13 53 12 40 13 26 
+8 10 9 3 8 -3 9 -8 9 -14 9 -20 9 -25 9 -29 
+9 -34 10 -37 9 -42 3348 1079 100 MP stroke
+10 -44 10 -47 10 -50 10 -51 10 -53 10 -54 11 -54 7 -35 
+7 -35 7 -35 10 -55 11 -54 12 -53 11 -53 12 -52 11 -50 
+17 -69 17 -66 18 -62 18 -58 19 -54 19 -50 19 -45 20 -40 
+14 -24 14 -22 13 -20 15 -18 14 -16 15 -15 15 -13 16 -11 
+15 -10 17 -8 16 -7 17 -7 18 -5 17 -4 19 -3 12 -2 
+12 -2 13 -1 13 -1 13 -1 13 -1 14 -1 14 0 14 -1 
+15 0 14 0 15 -1 16 0 16 0 16 0 9 0 10 0 
+10 0 14 0 6 0 6 0 6 0 7 0 6 0 6 0 
+7 0 4 0 4 0 4 0 5 0 4 0 4 0 5 0 
+4 0 5 0 4 0 5 0 4 0 5 0 4 0 5 0 
+5 0 4 0 5 0 5 0 4 0 5 0 5 0 5 0 
+5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 
+5 0 6 0 5 0 2350 2492 100 MP stroke
+5 0 6 0 5 0 5 0 6 0 5 0 6 0 6 0 
+5 0 10 0 9 0 9 0 10 0 10 0 10 0 10 0 
+10 0 17 0 18 0 7 0 7 0 7 0 7 0 7 0 
+111 0 132 0 162 0 88 0 102 0 119 0 143 0 1296 2492 32 MP stroke
+DA
+6 0 5 0 6 0 6 0 6 0 6 0 7 0 6 0 
+6 0 6 0 7 0 6 0 6 0 7 0 6 0 7 0 
+7 0 7 0 6 0 7 0 7 0 7 0 7 0 8 0 
+7 0 7 0 8 0 7 0 8 0 7 0 8 0 8 0 
+8 0 8 0 5 0 5 0 4 0 5 0 5 0 5 0 
+5 0 5 0 6 0 5 0 3 0 3 0 3 0 5 0 
+6 0 6 0 6 0 6 0 6 0 6 0 6 0 6 0 
+6 0 6 0 7 0 6 0 6 0 4 0 4 0 4 0 
+4 0 4 0 1 0 6 0 7 0 6 0 6 0 7 0 
+7 0 6 0 7 0 7 0 7 0 7 0 7 0 7 0 
+7 0 7 0 7 0 8 0 4 0 5 0 5 0 5 0 
+3 0 2 0 2 0 2 0 2 0 3 0 1 0 1 0 
+2 0 1 0 2 0 3822 2492 100 MP stroke
+1 0 1 0 2 0 1 0 2 0 1 0 2 0 1 0 
+1 0 2 0 1 0 2 0 1 0 2 0 1 0 2 0 
+1 0 2 0 1 0 1 0 2 0 1 0 2 0 1 0 
+2 0 2 0 2 0 1 0 2 0 1 0 1 0 2 0 
+1 0 1 0 2 0 1 0 1 0 2 0 1 0 1 0 
+2 0 1 1 2 0 2 0 3 0 3 1 3 0 3 1 
+3 0 4 2 4 1 4 2 5 3 6 4 6 6 6 7 
+6 9 6 12 7 13 6 16 7 19 6 22 9 34 9 41 
+10 47 9 53 9 59 10 65 10 70 5 43 4 26 3 26 
+4 27 3 28 4 27 3 29 6 44 8 66 11 89 11 89 
+11 86 12 83 11 76 12 69 12 60 13 49 12 37 13 24 
+8 9 9 3 8 -3 9 -7 9 -14 9 -17 9 -23 9 -27 
+9 -31 10 -34 9 -38 3348 1208 100 MP stroke
+10 -41 10 -43 10 -45 10 -46 10 -48 10 -49 11 -50 7 -32 
+7 -31 7 -32 10 -49 11 -49 12 -49 11 -47 12 -47 11 -46 
+17 -62 17 -59 18 -57 18 -52 19 -49 19 -46 19 -41 20 -37 
+14 -21 14 -20 13 -18 15 -17 14 -15 15 -13 15 -12 16 -10 
+15 -9 17 -8 16 -7 17 -5 18 -5 17 -4 19 -3 12 -2 
+12 -1 13 -2 13 -1 13 -1 13 0 14 -1 14 0 14 -1 
+15 0 14 0 15 -1 16 0 16 0 16 0 9 0 10 0 
+10 0 14 0 6 0 6 0 6 0 7 0 6 0 6 0 
+7 0 4 0 4 0 4 0 5 0 4 0 4 0 5 0 
+4 0 5 0 4 0 5 0 4 0 5 0 4 0 5 0 
+5 0 4 0 5 0 5 0 4 0 5 0 5 0 5 0 
+5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 
+5 0 6 0 5 0 2350 2492 100 MP stroke
+5 0 6 0 5 0 5 0 6 0 5 0 6 0 6 0 
+5 0 10 0 9 0 9 0 10 0 10 0 10 0 10 0 
+10 0 17 0 18 0 7 0 7 0 7 0 7 0 7 0 
+111 0 132 0 162 0 88 0 102 0 119 0 143 0 1296 2492 32 MP stroke
+gr
+
+24 w
+DA
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+1046 2016 mt  -90 rotate
+(c) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+1118 1936 mt  -90 rotate
+(1) s
+90 rotate
+0 sg
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+2846 3931 mt 
+(t) s
+SO
+6 w
+1 sg
+0 731 1139 0 0 -731 1332 1093 4 MP
+PP
+-1139 0 0 731 1139 0 0 -731 1332 1093 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+1332 1093 mt 2471 1093 L
+1332  362 mt 2471  362 L
+1332 1093 mt 1332  362 L
+2471 1093 mt 2471  362 L
+1332 1093 mt 2471 1093 L
+1332 1093 mt 1332  362 L
+1332 1093 mt 2471 1093 L
+1332  362 mt 2471  362 L
+1332 1093 mt 1332  362 L
+2471 1093 mt 2471  362 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1665  465 mt 
+(c) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 96 FMSR
+
+1725  525 mt 
+(1) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1778  465 mt 
+( ) s
+1811  465 mt 
+(top-right) s
+1665  635 mt 
+(c) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 96 FMSR
+
+1725  695 mt 
+(2) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1778  635 mt 
+( ) s
+1811  635 mt 
+(top-right) s
+1665  805 mt 
+(c) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 96 FMSR
+
+1725  865 mt 
+(1) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1778  805 mt 
+( ) s
+1811  805 mt 
+(bottom-left) s
+1665  975 mt 
+(c) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 96 FMSR
+
+1725 1035 mt 
+(2) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+1778  975 mt 
+( ) s
+1811  975 mt 
+(bottom-left) s
+gs 1332 362 1140 732 MR c np
+24 w
+c8
+200 0 1398 466 2 MP stroke
+/c9 { 1.000000 0.000000 0.000000 sr} bdef
+c9
+200 0 1398 642 2 MP stroke
+DA
+c8
+200 0 1398 818 2 MP stroke
+SO
+DA
+c9
+200 0 1398 993 2 MP stroke
+SO
+6 w
+gr
+
+c9
+4 w
+DO
+SO
+6 w
+0 sg
+1272 3588 mt 4471 3588 L
+c9
+4471 3588 mt 4471  302 L
+0 sg
+1272 3588 mt 1272 3571 L
+1272 3588 mt 1272 3555 L
+1184 3770 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+1317 3696 mt 
+(3) s
+1753 3588 mt 1753 3571 L
+2035 3588 mt 2035 3571 L
+2234 3588 mt 2234 3571 L
+2390 3588 mt 2390 3571 L
+2516 3588 mt 2516 3571 L
+2623 3588 mt 2623 3571 L
+2716 3588 mt 2716 3571 L
+2798 3588 mt 2798 3571 L
+2871 3588 mt 2871 3571 L
+2871 3588 mt 2871 3555 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+2783 3770 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+2916 3696 mt 
+(4) s
+3352 3588 mt 3352 3571 L
+3634 3588 mt 3634 3571 L
+3834 3588 mt 3834 3571 L
+3989 3588 mt 3989 3571 L
+4116 3588 mt 4116 3571 L
+4223 3588 mt 4223 3571 L
+4315 3588 mt 4315 3571 L
+4397 3588 mt 4397 3571 L
+4471 3588 mt 4471 3571 L
+4471 3588 mt 4471 3555 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+4383 3770 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+4516 3696 mt 
+(5) s
+c9
+4471 3588 mt 4438 3588 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+4505 3632 mt 
+(2) s
+4471 2492 mt 4438 2492 L
+4505 2536 mt 
+(3) s
+4471 1397 mt 4438 1397 L
+4505 1441 mt 
+(4) s
+4471  302 mt 4438  302 L
+4505  346 mt 
+(5) s
+4471  248 mt 
+(x 10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+4697  174 mt 
+(11) s
+gs 1272 302 3200 3287 MR c np
+24 w
+6 -1 5 -2 6 -3 6 -3 6 -4 6 -5 7 -5 6 -6 
+6 -6 6 -7 7 -8 6 -8 6 -8 7 -9 6 -9 7 -9 
+7 -9 7 -10 6 -9 7 -9 7 -10 7 -9 7 -9 8 -8 
+7 -9 7 -8 8 -9 7 -7 8 -8 7 -8 8 -7 8 -7 
+8 -7 8 -6 5 -4 5 -4 4 -3 5 -4 5 -3 5 -3 
+5 -4 5 -3 6 -3 5 -3 3 -1 3 -2 3 -2 5 -3 
+6 -3 6 -3 6 -3 6 -3 6 -3 6 -3 6 -3 6 -3 
+6 -3 6 -3 7 -4 6 -3 6 -4 4 -2 4 -2 4 -3 
+4 -2 4 -3 1 0 6 -4 7 -4 6 -4 6 -4 7 -4 
+7 -5 6 -4 7 -4 7 -5 7 -4 7 -4 7 -5 7 -4 
+7 -4 7 -4 7 -3 8 -4 4 -2 5 -3 5 -2 5 -2 
+3 -1 2 -1 2 -1 2 0 2 -1 3 -1 1 0 1 -1 
+2 0 1 -1 2 0 3822 1641 100 MP stroke
+1 -1 1 0 2 -1 1 0 2 0 1 -1 2 0 1 -1 
+1 0 2 0 1 -1 2 0 1 0 2 -1 1 0 2 0 
+1 -1 2 0 1 0 1 -1 2 0 1 0 2 -1 1 0 
+2 0 2 -1 2 0 1 0 2 0 1 -1 1 0 2 0 
+1 0 1 0 2 -1 1 0 1 0 2 0 1 0 1 -1 
+2 0 1 0 2 0 2 0 3 -1 3 0 3 0 3 -1 
+3 0 4 0 4 -1 4 0 5 0 6 -1 6 0 6 0 
+6 -1 6 0 7 0 6 -1 7 0 6 0 9 -1 9 -1 
+10 -1 9 -1 9 -2 10 -1 10 -3 5 -2 4 -1 3 -2 
+4 -1 3 -2 4 -2 3 -2 6 -4 8 -6 11 -11 11 -14 
+11 -17 12 -22 11 -26 12 -31 12 -36 13 -41 12 -45 13 -49 
+8 -34 9 -35 8 -35 9 -36 9 -37 9 -36 9 -36 9 -36 
+9 -34 10 -34 9 -32 3348 2369 100 MP stroke
+10 -30 10 -29 10 -27 10 -25 10 -23 10 -21 11 -20 7 -11 
+7 -11 7 -10 10 -14 11 -13 12 -11 11 -10 12 -9 11 -9 
+17 -10 17 -9 18 -9 18 -7 19 -8 19 -7 19 -7 20 -7 
+14 -4 14 -5 13 -4 15 -5 14 -4 15 -5 15 -5 16 -5 
+15 -4 17 -5 16 -5 17 -5 18 -5 17 -5 19 -6 12 -3 
+12 -4 13 -3 13 -4 13 -3 13 -4 14 -3 14 -4 14 -3 
+15 -4 14 -4 15 -4 16 -3 16 -4 16 -4 9 -2 10 -3 
+10 -2 14 -3 6 -1 6 -2 6 -1 7 -2 6 -1 6 -1 
+7 -2 4 -1 4 -1 4 -1 5 0 4 -1 4 -1 5 -1 
+4 -1 5 -1 4 -1 5 -1 4 -1 5 -1 4 -1 5 -1 
+5 -1 4 -1 5 -1 5 -1 4 -1 5 0 5 -1 5 -1 
+5 -1 5 -1 5 -1 5 -1 5 -1 5 -1 5 -1 5 -1 
+5 -1 6 -1 5 -1 2350 2884 100 MP stroke
+5 -1 6 -1 5 -1 5 -1 6 -1 5 -1 6 -1 6 -1 
+5 -1 10 -2 9 -2 9 -1 10 -2 10 -1 10 -2 10 -2 
+10 -2 17 -2 18 -3 7 -1 7 -1 7 -2 7 -1 7 -1 
+111 -16 132 -16 162 -17 88 -8 102 -9 119 -8 143 -9 1296 3001 32 MP stroke
+DA
+6 -4 5 -3 6 -3 6 -2 6 -3 6 -2 7 -1 6 -2 
+6 -1 6 0 7 -1 6 0 6 -1 7 0 6 0 7 -1 
+7 0 7 -1 6 0 7 -1 7 -1 7 -2 7 -2 8 -1 
+7 -2 7 -2 8 -3 7 -2 8 -2 7 -1 8 -2 8 -1 
+8 -1 8 0 5 0 5 0 4 1 5 0 5 1 5 1 
+5 1 5 2 6 1 5 2 3 1 3 1 3 1 5 3 
+6 2 6 3 6 2 6 3 6 3 6 3 6 3 6 3 
+6 2 6 3 7 3 6 3 6 2 4 2 4 2 4 1 
+4 2 4 1 1 0 6 2 7 2 6 2 6 2 7 2 
+7 2 6 1 7 2 7 1 7 1 7 1 7 1 7 1 
+7 1 7 1 7 0 8 1 4 0 5 1 5 0 5 0 
+3 1 2 0 2 0 2 0 2 0 3 0 1 0 1 0 
+2 0 1 0 2 0 3822 2069 100 MP stroke
+1 0 1 0 2 0 1 0 2 0 1 1 2 0 1 0 
+1 0 2 0 1 0 2 0 1 0 2 0 1 0 2 0 
+1 0 2 0 1 0 1 0 2 0 1 0 2 0 1 0 
+2 0 2 0 2 0 1 0 2 0 1 0 1 0 2 0 
+1 0 1 0 2 0 1 0 1 0 2 0 1 0 1 0 
+2 0 1 0 2 0 2 -1 3 0 3 0 3 0 3 0 
+3 0 4 0 4 0 4 0 5 0 6 -1 6 0 6 0 
+6 0 6 0 7 -1 6 0 7 0 6 0 9 -1 9 0 
+10 0 9 -1 9 -1 10 0 10 -2 5 -1 4 -1 3 -1 
+4 -1 3 -1 4 -1 3 -1 6 -3 8 -5 11 -8 11 -11 
+11 -15 12 -19 11 -22 12 -28 12 -32 13 -37 12 -41 13 -45 
+8 -31 9 -32 8 -32 9 -34 9 -33 9 -33 9 -33 9 -33 
+9 -31 10 -31 9 -29 3348 2701 100 MP stroke
+10 -27 10 -26 10 -24 10 -22 10 -20 10 -18 11 -17 7 -9 
+7 -9 7 -8 10 -11 11 -10 12 -9 11 -7 12 -7 11 -5 
+17 -7 17 -5 18 -5 18 -4 19 -4 19 -3 19 -4 20 -3 
+14 -2 14 -2 13 -2 15 -2 14 -2 15 -2 15 -2 16 -2 
+15 -2 17 -2 16 -2 17 -3 18 -2 17 -2 19 -2 12 -1 
+12 -1 13 -2 13 -1 13 -1 13 -1 14 -2 14 -1 14 -1 
+15 -1 14 -1 15 -1 16 -2 16 -1 16 -1 9 0 10 -1 
+10 -1 14 0 6 -1 6 0 6 0 7 -1 6 0 6 0 
+7 -1 4 0 4 0 4 0 5 -1 4 0 4 0 5 0 
+4 -1 5 0 4 0 5 0 4 0 5 -1 4 0 5 0 
+5 0 4 0 5 -1 5 0 4 0 5 0 5 0 5 -1 
+5 0 5 0 5 0 5 0 5 0 5 -1 5 0 5 0 
+5 0 6 0 5 -1 2350 3026 100 MP stroke
+5 0 6 0 5 0 5 0 6 0 5 -1 6 0 6 0 
+5 0 10 0 9 -1 9 0 10 0 10 -1 10 0 10 0 
+10 0 17 -1 18 0 7 0 7 0 7 -1 7 0 7 0 
+111 -2 132 -1 162 -2 88 -1 102 0 119 -1 143 0 1296 3038 32 MP stroke
+gr
+
+24 w
+DA
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+4695 2016 mt  -90 rotate
+(c) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+4767 1936 mt  -90 rotate
+(2) s
+90 rotate
+SO
+6 w
+1 sg
+0 3287 3199 0 0 -3287 5654 3588 4 MP
+PP
+-3199 0 0 3287 3199 0 0 -3287 5654 3588 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+5654 3588 mt 8853 3588 L
+5654  301 mt 8853  301 L
+c8
+5654 3588 mt 5654  301 L
+8853 3588 mt 8853  301 L
+0 sg
+5654 3588 mt 8853 3588 L
+c8
+5654 3588 mt 5654  301 L
+0 sg
+5654 3588 mt 5654 3571 L
+5654  302 mt 5654  318 L
+5654 3588 mt 5654 3555 L
+5654  302 mt 5654  334 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+5566 3770 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+5699 3696 mt 
+(3) s
+6135 3588 mt 6135 3571 L
+6135  302 mt 6135  318 L
+6417 3588 mt 6417 3571 L
+6417  302 mt 6417  318 L
+6616 3588 mt 6616 3571 L
+6616  302 mt 6616  318 L
+6772 3588 mt 6772 3571 L
+6772  302 mt 6772  318 L
+6898 3588 mt 6898 3571 L
+6898  302 mt 6898  318 L
+7005 3588 mt 7005 3571 L
+7005  302 mt 7005  318 L
+7098 3588 mt 7098 3571 L
+7098  302 mt 7098  318 L
+7180 3588 mt 7180 3571 L
+7180  302 mt 7180  318 L
+7253 3588 mt 7253 3571 L
+7253  302 mt 7253  318 L
+7253 3588 mt 7253 3555 L
+7253  302 mt 7253  334 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+7165 3770 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+7298 3696 mt 
+(4) s
+7734 3588 mt 7734 3571 L
+7734  302 mt 7734  318 L
+8016 3588 mt 8016 3571 L
+8016  302 mt 8016  318 L
+8216 3588 mt 8216 3571 L
+8216  302 mt 8216  318 L
+8371 3588 mt 8371 3571 L
+8371  302 mt 8371  318 L
+8498 3588 mt 8498 3571 L
+8498  302 mt 8498  318 L
+8605 3588 mt 8605 3571 L
+8605  302 mt 8605  318 L
+8697 3588 mt 8697 3571 L
+8697  302 mt 8697  318 L
+8779 3588 mt 8779 3571 L
+8779  302 mt 8779  318 L
+8853 3588 mt 8853 3571 L
+8853  302 mt 8853  318 L
+8853 3588 mt 8853 3555 L
+8853  302 mt 8853  334 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+8765 3770 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+8898 3696 mt 
+(5) s
+c8
+5654 3588 mt 5686 3588 L
+8853 3588 mt 8820 3588 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+5416 3632 mt 
+(-20) s
+5654 2930 mt 5686 2930 L
+8853 2930 mt 8820 2930 L
+5416 2974 mt 
+(-15) s
+5654 2273 mt 5686 2273 L
+8853 2273 mt 8820 2273 L
+5416 2317 mt 
+(-10) s
+5654 1616 mt 5686 1616 L
+8853 1616 mt 8820 1616 L
+5483 1660 mt 
+(-5) s
+5654  959 mt 5686  959 L
+8853  959 mt 8820  959 L
+5553 1003 mt 
+(0) s
+5654  302 mt 5686  302 L
+8853  302 mt 8820  302 L
+5553  346 mt 
+(5) s
+5654  248 mt 
+(x 10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+5880  174 mt 
+(22) s
+0 sg
+5654 3588 mt 8853 3588 L
+5654  301 mt 8853  301 L
+c8
+5654 3588 mt 5654  301 L
+8853 3588 mt 8853  301 L
+gs 5654 302 3200 3287 MR c np
+24 w
+6 0 5 0 6 0 6 0 6 0 6 0 7 0 6 0 
+6 0 6 0 7 0 6 0 6 0 7 0 6 0 7 0 
+7 0 7 0 6 0 7 0 7 0 7 0 7 0 8 0 
+7 0 7 0 8 0 7 0 8 0 7 0 8 0 8 0 
+8 0 8 0 5 0 5 0 4 0 5 0 5 0 5 0 
+5 0 5 0 6 0 5 0 3 0 3 0 3 0 5 0 
+6 0 6 0 6 0 6 0 6 0 6 0 6 0 6 0 
+6 0 6 0 7 0 6 0 6 0 4 0 4 0 4 0 
+4 0 4 0 1 0 6 0 7 0 6 0 6 0 7 0 
+7 0 6 0 7 0 7 0 7 0 7 0 7 0 7 0 
+7 0 7 0 7 0 8 0 4 0 5 0 5 0 5 0 
+3 0 2 0 2 0 2 0 2 0 3 0 1 0 1 0 
+2 0 1 0 2 0 8204 959 100 MP stroke
+1 0 1 0 2 0 1 0 2 0 1 0 2 0 1 0 
+1 0 2 0 1 0 2 0 1 0 2 0 1 0 2 0 
+1 0 2 0 1 0 1 0 2 0 1 0 2 0 1 0 
+2 0 2 0 2 0 1 0 2 0 1 0 1 0 2 0 
+1 0 1 0 2 0 1 0 1 0 2 0 1 0 1 -1 
+2 0 1 0 2 0 2 0 3 -1 3 0 3 -1 3 -1 
+3 -1 4 -2 4 -3 4 -3 5 -4 6 -8 6 -9 6 -12 
+6 -15 6 -18 7 -23 6 -26 7 -30 6 -36 9 -57 9 -66 
+10 -76 9 -87 9 -97 10 -105 10 -115 5 -69 4 -42 3 -43 
+4 -44 3 -45 4 -45 3 -45 6 -73 8 -106 11 -144 11 -143 
+11 -139 12 -133 11 -123 12 -111 12 -95 13 -78 12 -60 13 -38 
+8 -14 9 -5 8 4 9 13 9 20 9 29 9 36 9 44 
+9 49 10 56 9 61 7730 3039 100 MP stroke
+10 65 10 69 10 73 10 75 10 78 10 79 11 81 7 51 
+7 52 7 52 10 80 11 79 12 79 11 78 12 76 11 74 
+17 101 17 97 18 91 18 86 19 80 19 73 19 66 20 60 
+14 35 14 32 13 29 15 27 14 24 15 21 15 19 16 17 
+15 14 17 13 16 11 17 9 18 7 17 6 19 5 12 3 
+12 2 13 2 13 2 13 2 13 1 14 1 14 0 14 1 
+15 1 14 0 15 0 16 1 16 0 16 0 9 0 10 0 
+10 0 14 0 6 0 6 0 6 0 7 0 6 0 6 0 
+7 0 4 0 4 0 4 0 5 0 4 0 4 0 5 0 
+4 0 5 0 4 0 5 0 4 0 5 0 4 0 5 0 
+5 0 4 0 5 0 5 0 4 0 5 0 5 0 5 0 
+5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 
+5 0 6 0 5 0 6732 959 100 MP stroke
+5 0 6 0 5 0 5 0 6 0 5 0 6 0 6 0 
+5 0 10 0 9 0 9 0 10 0 10 0 10 0 10 0 
+10 0 17 0 18 0 7 0 7 0 7 0 7 0 7 0 
+111 0 132 0 162 0 88 0 102 0 119 0 143 0 5678 959 32 MP stroke
+DA
+6 0 5 0 6 0 6 0 6 0 6 0 7 0 6 0 
+6 0 6 0 7 0 6 0 6 0 7 0 6 0 7 0 
+7 0 7 0 6 0 7 0 7 0 7 0 7 0 8 0 
+7 0 7 0 8 0 7 0 8 0 7 0 8 0 8 0 
+8 0 8 0 5 0 5 0 4 0 5 0 5 0 5 0 
+5 0 5 0 6 0 5 0 3 0 3 0 3 0 5 0 
+6 0 6 0 6 0 6 0 6 0 6 0 6 0 6 0 
+6 0 6 0 7 0 6 0 6 0 4 0 4 0 4 0 
+4 0 4 0 1 0 6 0 7 0 6 0 6 0 7 0 
+7 0 6 0 7 0 7 0 7 0 7 0 7 0 7 0 
+7 0 7 0 7 0 8 0 4 0 5 0 5 0 5 0 
+3 0 2 0 2 0 2 0 2 0 3 0 1 0 1 0 
+2 0 1 0 2 0 8204 959 100 MP stroke
+1 0 1 0 2 0 1 0 2 0 1 0 2 0 1 0 
+1 0 2 0 1 0 2 0 1 0 2 0 1 0 2 0 
+1 0 2 0 1 0 1 0 2 0 1 0 2 0 1 0 
+2 0 2 0 2 0 1 0 2 0 1 0 1 0 2 0 
+1 0 1 0 2 0 1 0 1 0 2 0 1 0 1 0 
+2 -1 1 0 2 0 2 0 3 -1 3 0 3 -1 3 -1 
+3 -1 4 -2 4 -2 4 -3 5 -4 6 -6 6 -9 6 -10 
+6 -14 6 -16 7 -20 6 -24 7 -28 6 -32 9 -51 9 -59 
+10 -69 9 -78 9 -88 10 -95 10 -104 5 -62 4 -39 3 -39 
+4 -39 3 -41 4 -41 3 -41 6 -66 8 -96 11 -131 11 -131 
+11 -127 12 -122 11 -112 12 -102 12 -88 13 -72 12 -54 13 -36 
+8 -13 9 -4 8 3 9 12 9 19 9 26 9 34 9 39 
+9 46 10 51 9 55 7730 2849 100 MP stroke
+10 60 10 63 10 66 10 69 10 71 10 72 11 73 7 46 
+7 47 7 47 10 72 11 72 12 72 11 70 12 69 11 67 
+17 92 17 87 18 83 18 77 19 73 19 66 19 61 20 54 
+14 32 14 29 13 27 15 24 14 22 15 20 15 17 16 15 
+15 14 17 11 16 10 17 8 18 7 17 6 19 4 12 3 
+12 2 13 2 13 2 13 1 13 1 14 1 14 1 14 0 
+15 1 14 0 15 0 16 1 16 0 16 0 9 0 10 0 
+10 0 14 0 6 0 6 0 6 0 7 0 6 0 6 0 
+7 0 4 0 4 0 4 0 5 0 4 0 4 0 5 0 
+4 0 5 0 4 0 5 0 4 0 5 0 4 0 5 0 
+5 0 4 0 5 0 5 0 4 0 5 0 5 0 5 0 
+5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 
+5 0 6 0 5 0 6732 959 100 MP stroke
+5 0 6 0 5 0 5 0 6 0 5 0 6 0 6 0 
+5 0 10 0 9 0 9 0 10 0 10 0 10 0 10 0 
+10 0 17 0 18 0 7 0 7 0 7 0 7 0 7 0 
+111 0 132 0 162 0 88 0 102 0 119 0 143 0 5678 959 32 MP stroke
+gr
+
+24 w
+DA
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+5361 2197 mt  -90 rotate
+(dc) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+5433 2029 mt  -90 rotate
+(1) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+5361 1969 mt  -90 rotate
+(/dq) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+5433 1753 mt  -90 rotate
+(1) s
+90 rotate
+0 sg
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+7228 3931 mt 
+(t) s
+SO
+6 w
+4 w
+DO
+SO
+6 w
+5654 3588 mt 8853 3588 L
+c9
+8853 3588 mt 8853  301 L
+0 sg
+5654 3588 mt 5654 3571 L
+5654 3588 mt 5654 3555 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+5566 3770 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+5699 3696 mt 
+(3) s
+6135 3588 mt 6135 3571 L
+6417 3588 mt 6417 3571 L
+6616 3588 mt 6616 3571 L
+6772 3588 mt 6772 3571 L
+6898 3588 mt 6898 3571 L
+7005 3588 mt 7005 3571 L
+7098 3588 mt 7098 3571 L
+7180 3588 mt 7180 3571 L
+7253 3588 mt 7253 3571 L
+7253 3588 mt 7253 3555 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+7165 3770 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+7298 3696 mt 
+(4) s
+7734 3588 mt 7734 3571 L
+8016 3588 mt 8016 3571 L
+8216 3588 mt 8216 3571 L
+8371 3588 mt 8371 3571 L
+8498 3588 mt 8498 3571 L
+8605 3588 mt 8605 3571 L
+8697 3588 mt 8697 3571 L
+8779 3588 mt 8779 3571 L
+8853 3588 mt 8853 3571 L
+8853 3588 mt 8853 3555 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+8765 3770 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+8898 3696 mt 
+(5) s
+c9
+8853 3588 mt 8820 3588 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+8887 3632 mt 
+(0) s
+8853 2930 mt 8820 2930 L
+8887 2974 mt 
+(2) s
+8853 2273 mt 8820 2273 L
+8887 2317 mt 
+(4) s
+8853 1616 mt 8820 1616 L
+8887 1660 mt 
+(6) s
+8853  959 mt 8820  959 L
+8887 1003 mt 
+(8) s
+8853  302 mt 8820  302 L
+8887  346 mt 
+(10) s
+8853  248 mt 
+(x 10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+9079  174 mt 
+(23) s
+gs 5654 302 3200 3287 MR c np
+24 w
+6 -3 5 -5 6 -5 6 -5 6 -6 6 -7 7 -8 6 -9 
+6 -9 6 -10 7 -10 6 -11 6 -12 7 -12 6 -12 7 -12 
+7 -12 7 -12 6 -12 7 -12 7 -12 7 -11 7 -12 8 -11 
+7 -10 7 -11 8 -10 7 -9 8 -10 7 -9 8 -8 8 -9 
+8 -8 8 -7 5 -5 5 -4 4 -4 5 -4 5 -4 5 -3 
+5 -4 5 -3 6 -3 5 -4 3 -1 3 -2 3 -2 5 -3 
+6 -3 6 -4 6 -3 6 -3 6 -3 6 -3 6 -3 6 -3 
+6 -3 6 -4 7 -3 6 -4 6 -4 4 -2 4 -3 4 -2 
+4 -3 4 -2 1 -1 6 -4 7 -4 6 -5 6 -4 7 -5 
+7 -5 6 -4 7 -5 7 -5 7 -5 7 -4 7 -5 7 -5 
+7 -4 7 -4 7 -5 8 -4 4 -2 5 -3 5 -2 5 -2 
+3 -1 2 -1 2 -1 2 -1 2 -1 3 -1 1 0 1 -1 
+2 0 1 -1 2 0 8204 1403 100 MP stroke
+1 -1 1 0 2 -1 1 0 2 -1 1 0 2 -1 1 0 
+1 -1 2 0 1 0 2 -1 1 0 2 -1 1 0 2 0 
+1 -1 2 0 1 -1 1 0 2 0 1 -1 2 0 1 0 
+2 -1 2 0 2 0 1 -1 2 0 1 0 1 0 2 -1 
+1 0 1 0 2 0 1 -1 1 0 2 0 1 0 1 0 
+2 0 1 -1 2 0 2 0 3 0 3 -1 3 0 3 0 
+3 0 4 0 4 0 4 0 5 0 6 1 6 1 6 1 
+6 2 6 2 7 3 6 3 7 3 6 4 9 5 9 5 
+10 6 9 4 9 4 10 3 10 0 5 -1 4 0 3 -2 
+4 -1 3 -2 4 -2 3 -3 6 -5 8 -10 11 -18 11 -23 
+11 -29 12 -35 11 -43 12 -49 12 -56 13 -62 12 -69 13 -75 
+8 -51 9 -52 8 -55 9 -56 9 -57 9 -58 9 -59 9 -59 
+9 -59 10 -59 9 -59 7730 2481 100 MP stroke
+10 -58 10 -57 10 -57 10 -55 10 -54 10 -53 11 -52 7 -31 
+7 -31 7 -31 10 -46 11 -43 12 -43 11 -40 12 -39 11 -36 
+17 -48 17 -45 18 -40 18 -37 19 -33 19 -30 19 -26 20 -23 
+14 -13 14 -12 13 -10 15 -10 14 -8 15 -8 15 -6 16 -6 
+15 -5 17 -4 16 -3 17 -3 18 -2 17 -2 19 -2 12 -1 
+12 0 13 -1 13 0 13 -1 13 0 14 0 14 -1 14 0 
+15 0 14 0 15 0 16 0 16 0 16 0 9 0 10 0 
+10 0 14 0 6 0 6 0 6 0 7 0 6 0 6 0 
+7 0 4 0 4 0 4 0 5 0 4 0 4 0 5 0 
+4 0 5 0 4 0 5 0 4 0 5 0 4 0 5 0 
+5 0 4 0 5 0 5 0 4 0 5 0 5 0 5 0 
+5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 
+5 0 6 0 5 0 6732 3587 100 MP stroke
+5 0 6 0 5 0 5 0 6 0 5 0 6 0 6 0 
+5 0 10 0 9 0 9 0 10 0 10 0 10 0 10 0 
+10 0 17 0 18 0 7 0 7 0 7 0 7 0 7 0 
+111 0 132 0 162 0 88 0 102 0 119 0 143 0 5678 3587 32 MP stroke
+DA
+6 -3 5 -3 6 -2 6 -2 6 -2 6 -2 7 -1 6 -1 
+6 0 6 0 7 0 6 0 6 0 7 1 6 0 7 0 
+7 1 7 0 6 0 7 0 7 -1 7 -1 7 -1 8 -1 
+7 -1 7 -1 8 -2 7 -1 8 -1 7 -1 8 -1 8 -1 
+8 0 8 0 5 1 5 0 4 1 5 1 5 1 5 1 
+5 2 5 1 6 2 5 2 3 1 3 1 3 1 5 3 
+6 2 6 3 6 2 6 3 6 3 6 3 6 3 6 3 
+6 2 6 3 7 3 6 2 6 3 4 1 4 2 4 1 
+4 1 4 2 1 0 6 2 7 2 6 2 6 1 7 2 
+7 1 6 1 7 1 7 1 7 1 7 1 7 1 7 1 
+7 0 7 1 7 0 8 0 4 0 5 1 5 0 5 0 
+3 0 2 0 2 0 2 0 2 0 3 0 1 0 1 0 
+2 0 1 0 2 0 8204 1852 100 MP stroke
+1 0 1 -1 2 0 1 0 2 0 1 0 2 0 1 0 
+1 0 2 0 1 0 2 0 1 0 2 0 1 0 2 0 
+1 0 2 0 1 0 1 0 2 -1 1 0 2 0 1 0 
+2 0 2 0 2 0 1 0 2 0 1 0 1 0 2 0 
+1 0 1 -1 2 0 1 0 1 0 2 0 1 0 1 0 
+2 0 1 0 2 0 2 0 3 0 3 -1 3 0 3 0 
+3 0 4 0 4 0 4 1 5 0 6 1 6 1 6 1 
+6 2 6 2 7 2 6 3 7 3 6 4 9 6 9 6 
+10 6 9 6 9 6 10 5 10 5 5 1 4 1 3 0 
+4 0 3 0 4 0 3 -1 6 -2 8 -4 11 -9 11 -14 
+11 -18 12 -24 11 -29 12 -36 12 -41 13 -47 12 -53 13 -58 
+8 -41 9 -42 8 -43 9 -45 9 -46 9 -48 9 -48 9 -48 
+9 -49 10 -49 9 -49 7730 2638 100 MP stroke
+10 -48 10 -48 10 -48 10 -46 10 -46 10 -45 11 -43 7 -27 
+7 -26 7 -26 10 -39 11 -38 12 -36 11 -35 12 -33 11 -31 
+17 -42 17 -38 18 -36 18 -32 19 -29 19 -26 19 -23 20 -20 
+14 -12 14 -10 13 -10 15 -8 14 -8 15 -6 15 -6 16 -5 
+15 -4 17 -4 16 -3 17 -3 18 -2 17 -2 19 -1 12 -1 
+12 -1 13 0 13 -1 13 0 13 0 14 -1 14 0 14 0 
+15 0 14 0 15 0 16 0 16 0 16 0 9 0 10 0 
+10 0 14 0 6 0 6 0 6 0 7 0 6 0 6 0 
+7 0 4 0 4 0 4 0 5 0 4 0 4 0 5 0 
+4 0 5 0 4 0 5 0 4 0 5 0 4 0 5 0 
+5 0 4 0 5 0 5 0 4 0 5 0 5 0 5 0 
+5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 
+5 0 6 0 5 0 6732 3587 100 MP stroke
+5 0 6 0 5 0 5 0 6 0 5 0 6 0 6 0 
+5 0 10 0 9 0 9 0 10 0 10 0 10 0 10 0 
+10 0 17 0 18 0 7 0 7 0 7 0 7 0 7 0 
+111 0 132 0 162 0 88 0 102 0 119 0 143 0 5678 3587 32 MP stroke
+gr
+
+24 w
+DA
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+9144 2197 mt  -90 rotate
+(dc) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+9216 2029 mt  -90 rotate
+(2) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+9144 1969 mt  -90 rotate
+(/dq) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+9216 1753 mt  -90 rotate
+(1) s
+90 rotate
+SO
+6 w
+
+end
+
+eplot
+%%EndObject
+
+epage
+end
+
+showpage
+
+%%Trailer
+%%EOF
+
+%%EndDocument
+ @endspecial 2613 x Ft(Figure)588 b(3:)907 b(Results)589
+b(for)f(the)h Fr(pvfkx)h Ft(example)e(problem:)907 b(time)588
+b(ev)-34 b(olution)589 b(of)f Fm(c)39357 31634 y Fl(1)40471
+31452 y Ft(and)h Fm(c)43537 31634 y Fl(2)44651 31452
+y Ft(at)g(the)0 32957 y(b)34 b(ottom-left)405 b(and)g(top-righ)-34
+b(t)406 b(corners)d(\(left\))i(and)g(of)g(their)f(sensitivities)f(with)
+i(resp)34 b(ect)404 b(to)g Fm(q)43184 33139 y Fl(1)43710
+32957 y Ft(.)p Black 0 36860 a(is)513 b(similar.)865
+b(If)513 b(this)h(is)f(the)g(last)h(pro)34 b(cess)513
+b(in)g(a)g(particular)g(direction,)540 b(then)514 b(message)f(passing)h
+(and)0 38365 y(receiving)403 b(are)g(b)-34 b(ypassed)405
+b(for)g(that)g(direction.)1882 39955 y(The)392 b(source)f(co)34
+b(de)392 b(for)g(this)g(example)f(is)g(listed)h(in)g(App.)535
+b(C.)g(The)392 b(o)-34 b(v)g(erall)391 b(structure)h(of)g(the)h
+Fr(main)0 41460 y Ft(function)438 b(is)f(v)-34 b(ery)436
+b(similar)g(to)h(that)h(of)f(the)g(co)34 b(de)437 b Fr(cvfdx)h
+Ft(describ)34 b(ed)436 b(ab)34 b(o)-34 b(v)g(e)437 b(with)h
+(di\256erences)e(arising)0 42965 y(from)k(the)h(use)f(of)g(the)h
+(parallel)e Fq(nvector)j Ft(mo)34 b(dule)440 b(-)g Fq(nvector)p
+30910 42965 403 45 v 485 w(p)-81 b(arallel)p Ft(.)648
+b(On)440 b(the)h(other)f(hand,)0 44471 y(the)296 b(user-supplied)h
+(routines)f(in)f Fr(pvfkx)p Ft(,)319 b Fr(f)296 b Ft(for)g(the)g(righ)
+-34 b(t-hand)298 b(side)d(of)h(the)g(original)f(system,)318
+b Fr(Precond)0 45976 y Ft(for)361 b(the)h(preconditioner)f(setup,)370
+b(and)362 b Fr(PSolve)h Ft(for)e(the)h(preconditioner)f(solv)-34
+b(e,)369 b(are)361 b(iden)-34 b(tical)361 b(to)g(those)0
+47482 y(de\257ned)407 b(for)e(the)i(sample)e(program)h
+Fr(pvkx)h Ft(describ)34 b(ed)405 b(in)h([1].)543 b(The)406
+b(only)f(di\256erence)g(is)h(in)f(the)i(routine)0 48987
+y Fr(fcalc)p Ft(,)575 b(whic)-34 b(h)541 b(op)34 b(erates)540
+b(on)h(lo)34 b(cal)539 b(data)h(only)g(and)h(con)-34
+b(tains)541 b(the)g(actual)f(calculation)g(of)g Fm(f)130
+b Ft(\()p Fm(t;)202 b(u)p Ft(\),)0 50493 y(where)440
+b(the)h(problem)f(parameters)g(are)g(\257rst)h(extracted)f(from)g(the)h
+(user)f(data)h(structure)g Fr(data)p Ft(.)648 b(The)0
+51998 y(program)386 b Fr(pvfkx)i Ft(de\257nes)f(no)g(additional)g
+(user-supplied)g(routines,)j(as)c(it)g(uses)h(the)f Fq(cv)-27
+b(odes)388 b Ft(in)-34 b(ternal)0 53504 y(di\256erence)403
+b(quotien)-34 b(t)405 b(routines)g(to)f(compute)h(the)g(sensitivit)-34
+b(y)404 b(equation)g(righ)-34 b(t-hand)406 b(sides.)1882
+55093 y(Sample)462 b(results)h(generated)f(b)-34 b(y)463
+b Fr(pvfkx)h Ft(are)e(sho)-34 b(wn)464 b(in)e(Fig.)g(3.)713
+b(These)462 b(results)h(w)-34 b(ere)462 b(generated)0
+56599 y(on)405 b(a)f(\(2)269 b Fp(\243)h Ft(40\))f Fp(\243)h
+Ft(\(2)f Fp(\243)g Ft(40\))405 b(grid.)1882 58188 y(Sample)339
+b(outputs)j(from)d Fr(pvfkx)p Ft(,)354 b(for)339 b(t)-34
+b(w)g(o)341 b(di\256eren)-34 b(t)340 b(com)-34 b(binations)340
+b(of)g(command)g(line)f(argumen)-34 b(ts,)0 59694 y(follo)g(w.)539
+b(The)405 b(command)g(to)f(execute)f(this)i(program)f(m)-34
+b(ust)406 b(ha)-34 b(v)g(e)404 b(the)h(form:)p Black
+Black 0 62615 a Fr(\045)637 b(mpirun)h(-np)g(nproc)g(pvfkx)g(-nosensi)0
+65452 y Ft(if)404 b(no)h(sensitivit)-34 b(y)404 b(calculations)g(are)f
+(desired,)h(or)p Black Black 0 68374 a Fr(\045)637 b(mpirun)h(-np)g
+(nproc)g(pvfkx)g(-sensi)g(sensi_meth)i(err_con)0 71211
+y Ft(where)438 b Fr(nproc)i Ft(is)e(the)h(n)-34 b(um)g(b)34
+b(er)439 b(of)g(pro)34 b(cesses,)446 b Fr(sensi)p 25275
+71211 382 45 v 460 w(meth)439 b Ft(m)-34 b(ust)440 b(b)34
+b(e)438 b(one)g(of)h Fr(sim)p Ft(,)447 b Fr(stg)p Ft(,)h(or)438
+b Fr(stg1)i Ft(to)0 72717 y(indicate)338 b(the)h Fr(CV)p
+7883 72717 V 458 w(SIMULTANEOUS)p Ft(,)j Fr(CV)p 17924
+72717 V 459 w(STAGGERED)p Ft(,)f(or)d Fr(CV)p 27476 72717
+V 459 w(STAGGERED1)j Ft(metho)34 b(d,)352 b(resp)34 b(ectiv)-34
+b(ely)-101 b(,)349 b(and)0 74222 y Fr(err)p 1984 74222
+V 459 w(con)327 b Ft(m)-34 b(ust)328 b(b)34 b(e)326 b(one)g(of)g
+Fr(t)h Ft(or)f Fr(f)g Ft(to)h(select)e(the)i(full)f(or)g(partial)g
+(error)f(con)-34 b(trol)326 b(strategy)-101 b(,)342 b(resp)34
+b(ectiv)-34 b(ely)-101 b(.)1882 75812 y(The)301 b(output)i(generated)e
+(b)-34 b(y)301 b Fr(pvfkx)h Ft(when)g(computing)g(sensitivities)e(with)
+i(the)f Fr(CV)p 39981 75812 V 459 w(SIMULTANEOUS)0 77317
+y Ft(metho)34 b(d)405 b(and)g(full)f(error)f(con)-34
+b(trol)404 b(\()p Fr(mpirun)639 b(-np)f(4)e(pvfkx)j(-sensi)f(sim)f(t)p
+Ft(\))405 b(is:)p Black 23394 81741 a(18)p Black eop
+%%Page: 19 23
+19 22 bop Black Black 4000 7638 17898 45 v 22479 7704
+a Fg(pvfkx)582 b(sample)g(output)p 34102 7638 V 4000
+8438 45 801 v 51956 8438 V 4000 9766 45 1329 v 51956
+9766 V 4000 11095 V 4844 10696 a(2-species)h(diurnal)f
+(advection-diffusion)i(problem)p 51956 11095 V 4000 12423
+V 4844 12025 a(Sensitivity:)f(YES)f(\()f(SIMULTANEOUS)i(+)e(FULL)h
+(ERROR)g(CONTROL)g(\))p 51956 12423 V 4000 13751 V 51956
+13751 V 4000 15080 V 4844 14681 a
+(===================================================================)p
+(=====)p 51956 15080 V 4000 16408 V 7750 16010 a(T)2906
+b(Q)4068 b(H)3487 b(NST)11624 b(Bottom)582 b(left)1163
+b(Top)581 b(right)p 51956 16408 V 4000 17737 V 4844 17338
+a(===================================================================)p
+(=====)p 51956 17737 V 4000 19065 V 4844 18666 a(7.200e+03)1164
+b(3)e(3.190e+01)1745 b(408)p 51956 19065 V 4000 20393
+V 23441 19995 a(Solution)5232 b(1.0468e+04)1745 b(1.1185e+04)p
+51956 20393 V 4000 21722 V 33321 21323 a(2.5267e+11)g(2.6998e+11)p
+51956 21722 V 4000 23050 V 23441 22651 a
+(----------------------------------------)p 51956 23050
+V 4000 24378 V 23441 23980 a(Sensitivity)583 b(1)1743
+b(-6.4201e+19)1164 b(-6.8598e+19)p 51956 24378 V 4000
+25707 V 33321 25308 a(7.1178e+19)1745 b(7.6557e+19)p
+51956 25707 V 4000 27035 V 23441 26636 a
+(----------------------------------------)p 51956 27035
+V 4000 28363 V 23441 27965 a(Sensitivity)583 b(2)1743
+b(-4.3853e+14)1164 b(-5.0065e+14)p 51956 28363 V 4000
+29692 V 32739 29293 a(-2.4407e+18)g(-2.7842e+18)p 51956
+29692 V 4000 31020 V 4844 30622 a
+(-------------------------------------------------------------------)p
+(-----)p 51956 31020 V 4000 32348 V 4844 31950 a(1.440e+04)g(3)e
+(6.016e+01)1745 b(722)p 51956 32348 V 4000 33677 V 23441
+33278 a(Solution)5232 b(6.6590e+06)1745 b(7.3008e+06)p
+51956 33677 V 4000 35005 V 33321 34607 a(2.5819e+11)g(2.8329e+11)p
+51956 35005 V 4000 36333 V 23441 35935 a
+(----------------------------------------)p 51956 36333
+V 4000 37662 V 23441 37263 a(Sensitivity)583 b(1)1743
+b(-4.0848e+22)1164 b(-4.4785e+22)p 51956 37662 V 4000
+38990 V 33321 38592 a(5.9550e+22)1745 b(6.7173e+22)p
+51956 38990 V 4000 40319 V 23441 39920 a
+(----------------------------------------)p 51956 40319
+V 4000 41647 V 23441 41248 a(Sensitivity)583 b(2)1743
+b(-4.5235e+17)1164 b(-5.4318e+17)p 51956 41647 V 4000
+42975 V 32739 42577 a(-6.5419e+21)g(-7.8316e+21)p 51956
+42975 V 4000 44304 V 4844 43905 a
+(-------------------------------------------------------------------)p
+(-----)p 51956 44304 V 4000 45632 V 4844 45233 a(2.160e+04)g(4)e
+(1.654e+02)1745 b(891)p 51956 45632 V 4000 46960 V 23441
+46562 a(Solution)5232 b(2.6650e+07)1745 b(2.9308e+07)p
+51956 46960 V 4000 48289 V 33321 47890 a(2.9928e+11)g(3.3134e+11)p
+51956 48289 V 4000 49617 V 23441 49218 a
+(----------------------------------------)p 51956 49617
+V 4000 50945 V 23441 50547 a(Sensitivity)583 b(1)1743
+b(-1.6346e+23)1164 b(-1.7976e+23)p 51956 50945 V 4000
+52274 V 33321 51875 a(3.8203e+23)1745 b(4.4991e+23)p
+51956 52274 V 4000 53602 V 23441 53204 a
+(----------------------------------------)p 51956 53602
+V 4000 54930 V 23441 54532 a(Sensitivity)583 b(2)1743
+b(-7.6601e+18)1164 b(-9.4433e+18)p 51956 54930 V 4000
+56259 V 32739 55860 a(-7.6459e+22)g(-9.4502e+22)p 51956
+56259 V 4000 57587 V 4844 57189 a
+(-------------------------------------------------------------------)p
+(-----)p 51956 57587 V 4000 58915 V 4844 58517 a(2.880e+04)g(2)e
+(3.838e+01)i(1163)p 51956 58915 V 4000 60244 V 23441
+59845 a(Solution)5232 b(8.7021e+06)1745 b(9.6501e+06)p
+51956 60244 V 4000 61572 V 33321 61174 a(3.3804e+11)g(3.7510e+11)p
+51956 61572 V 4000 62901 V 23441 62502 a
+(----------------------------------------)p 51956 62901
+V 4000 64229 V 23441 63830 a(Sensitivity)583 b(1)1743
+b(-5.3375e+22)1164 b(-5.9188e+22)p 51956 64229 V 4000
+65557 V 33321 65159 a(5.4487e+23)1745 b(6.7431e+23)p
+51956 65557 V 4000 66886 V 23441 66487 a
+(----------------------------------------)p 51956 66886
+V 4000 68214 V 23441 67815 a(Sensitivity)583 b(2)1743
+b(-4.8855e+18)1164 b(-6.1040e+18)p 51956 68214 V 4000
+69542 V 32739 69144 a(-1.7194e+23)g(-2.1518e+23)p 51956
+69542 V 4000 70871 V 4844 70472 a
+(-------------------------------------------------------------------)p
+(-----)p 51956 70871 V 4000 72199 V 4844 71800 a(3.600e+04)g(3)e
+(2.170e+01)i(1314)p 51956 72199 V 4000 73527 V 23441
+73129 a(Solution)5232 b(1.4040e+04)1745 b(1.5609e+04)p
+51956 73527 V 4000 74856 V 33321 74457 a(3.3868e+11)g(3.7652e+11)p
+51956 74856 V 4000 76184 V 23441 75786 a
+(----------------------------------------)p 51956 76184
+V 4000 77512 V 23441 77114 a(Sensitivity)583 b(1)1743
+b(-8.6141e+19)1164 b(-9.5762e+19)p 51956 77512 V Black
+27394 81741 a Ft(19)p Black eop
+%%Page: 20 24
+20 23 bop Black Black 0 8037 45 1329 v 29321 7638 a Fg(5.2719e+23)1745
+b(6.6030e+23)p 47956 8037 V 0 9365 V 19441 8966 a
+(----------------------------------------)p 47956 9365
+V 0 10693 V 19441 10295 a(Sensitivity)583 b(2)1743 b(-8.4328e+15)1164
+b(-1.0549e+16)p 47956 10693 V 0 12022 V 28739 11623 a(-1.8439e+23)g
+(-2.3096e+23)p 47956 12022 V 0 13350 V 844 12951 a
+(-------------------------------------------------------------------)p
+(-----)p 47956 13350 V 0 14678 V 844 14280 a(4.320e+04)g(4)e(2.092e+02)
+i(1536)p 47956 14678 V 0 16007 V 19441 15608 a(Solution)5232
+b(3.6878e-11)1163 b(-1.0815e-09)p 47956 16007 V 0 17335
+V 29321 16936 a(3.3823e+11)1745 b(3.8035e+11)p 47956
+17335 V 0 18663 V 19441 18265 a
+(----------------------------------------)p 47956 18663
+V 0 19992 V 19441 19593 a(Sensitivity)583 b(1)1743 b(-1.9731e+07)1164
+b(-7.0822e+08)p 47956 19992 V 0 21320 V 29321 20922 a(5.2753e+23)1745
+b(6.7448e+23)p 47956 21320 V 0 22648 V 19441 22250 a
+(----------------------------------------)p 47956 22648
+V 0 23977 V 19441 23578 a(Sensitivity)583 b(2)2325 b(1.2858e+05)1745
+b(9.8076e+04)p 47956 23977 V 0 25305 V 28739 24907 a(-1.8455e+23)1164
+b(-2.3595e+23)p 47956 25305 V 0 26633 V 844 26235 a
+(-------------------------------------------------------------------)p
+(-----)p 47956 26633 V 0 27962 V 844 27563 a(5.040e+04)g(4)e(1.157e+02)
+i(1582)p 47956 27962 V 0 29290 V 19441 28892 a(Solution)5232
+b(2.3269e-08)1745 b(4.7447e-08)p 47956 29290 V 0 30619
+V 29321 30220 a(3.3582e+11)g(3.8645e+11)p 47956 30619
+V 0 31947 V 19441 31548 a(----------------------------------------)p
+47956 31947 V 0 33275 V 19441 32877 a(Sensitivity)583
+b(1)2325 b(1.0705e+10)1745 b(2.1719e+10)p 47956 33275
+V 0 34604 V 29321 34205 a(5.2067e+23)g(6.9665e+23)p 47956
+34604 V 0 35932 V 19441 35533 a
+(----------------------------------------)p 47956 35932
+V 0 37260 V 19441 36862 a(Sensitivity)583 b(2)2325 b(6.5892e+07)1745
+b(1.5308e+08)p 47956 37260 V 0 38589 V 28739 38190 a(-1.8214e+23)1164
+b(-2.4371e+23)p 47956 38589 V 0 39917 V 844 39518 a
+(-------------------------------------------------------------------)p
+(-----)p 47956 39917 V 0 41245 V 844 40847 a(5.760e+04)g(4)e(3.571e+02)
+i(1625)p 47956 41245 V 0 42574 V 19441 42175 a(Solution)4650
+b(-3.4188e-09)1164 b(-7.4739e-09)p 47956 42574 V 0 43902
+V 29321 43504 a(3.3203e+11)1745 b(3.9090e+11)p 47956
+43902 V 0 45230 V 19441 44832 a
+(----------------------------------------)p 47956 45230
+V 0 46559 V 19441 46160 a(Sensitivity)583 b(1)2325 b(8.5523e+08)1745
+b(1.8651e+09)p 47956 46559 V 0 47887 V 29321 47489 a(5.0826e+23)g
+(7.1206e+23)p 47956 47887 V 0 49215 V 19441 48817 a
+(----------------------------------------)p 47956 49215
+V 0 50544 V 19441 50145 a(Sensitivity)583 b(2)2325 b(4.8332e+04)1745
+b(1.2647e+05)p 47956 50544 V 0 51872 V 28739 51474 a(-1.7780e+23)1164
+b(-2.4910e+23)p 47956 51872 V 0 53201 V 844 52802 a
+(-------------------------------------------------------------------)p
+(-----)p 47956 53201 V 0 54529 V 844 54130 a(6.480e+04)g(4)e(1.407e+02)
+i(1665)p 47956 54529 V 0 55857 V 19441 55459 a(Solution)4650
+b(-1.0371e-07)1164 b(-2.4825e-07)p 47956 55857 V 0 57186
+V 29321 56787 a(3.3130e+11)1745 b(3.9634e+11)p 47956
+57186 V 0 58514 V 19441 58115 a
+(----------------------------------------)p 47956 58514
+V 0 59842 V 19441 59444 a(Sensitivity)583 b(1)2325 b(7.3888e+08)1745
+b(1.7759e+09)p 47956 59842 V 0 61171 V 29321 60772 a(5.0443e+23)g
+(7.3274e+23)p 47956 61171 V 0 62499 V 19441 62100 a
+(----------------------------------------)p 47956 62499
+V 0 63827 V 19441 63429 a(Sensitivity)583 b(2)2325 b(2.4183e+05)1745
+b(8.3391e+05)p 47956 63827 V 0 65156 V 28739 64757 a(-1.7646e+23)1164
+b(-2.5633e+23)p 47956 65156 V 0 66484 V 844 66086 a
+(-------------------------------------------------------------------)p
+(-----)p 47956 66484 V 0 67812 V 844 67414 a(7.200e+04)g(4)e(3.400e+02)
+i(1710)p 47956 67812 V 0 69141 V 19441 68742 a(Solution)5232
+b(1.1661e-12)1745 b(2.9058e-12)p 47956 69141 V 0 70469
+V 29321 70071 a(3.3297e+11)g(4.0389e+11)p 47956 70469
+V 0 71797 V 19441 71399 a(----------------------------------------)p
+47956 71797 V 0 73126 V 19441 72727 a(Sensitivity)583
+b(1)2325 b(8.0876e+05)1745 b(2.0026e+06)p 47956 73126
+V 0 74454 V 29321 74056 a(5.0784e+23)g(7.6383e+23)p 47956
+74454 V 0 75782 V 19441 75384 a
+(----------------------------------------)p 47956 75782
+V 0 77111 V 19441 76712 a(Sensitivity)583 b(2)2325 b(2.3124e+01)1745
+b(6.8345e+01)p 47956 77111 V 0 78439 V 28739 78041 a(-1.7766e+23)1164
+b(-2.6721e+23)p 47956 78439 V Black 23394 81741 a Ft(20)p
+Black eop
+%%Page: 21 25
+21 24 bop Black Black 4000 8037 45 1329 v 4844 7638 a
+Fg(-------------------------------------------------------------------)
+p(-----)p 51956 8037 V 4000 9365 V 4844 8966 a(7.920e+04)1164
+b(5)e(5.172e+02)i(1725)p 51956 9365 V 4000 10693 V 23441
+10295 a(Solution)4650 b(-4.1258e-15)1164 b(-1.0944e-14)p
+51956 10693 V 4000 12022 V 33321 11623 a(3.3344e+11)1745
+b(4.1203e+11)p 51956 12022 V 4000 13350 V 23441 12951
+a(----------------------------------------)p 51956 13350
+V 4000 14678 V 23441 14280 a(Sensitivity)583 b(1)1743
+b(-9.7653e+04)1164 b(-2.5314e+05)p 51956 14678 V 4000
+16007 V 33321 15608 a(5.0731e+23)1745 b(7.9960e+23)p
+51956 16007 V 4000 17335 V 23441 16936 a
+(----------------------------------------)p 51956 17335
+V 4000 18663 V 23441 18265 a(Sensitivity)583 b(2)2325
+b(7.4987e-01)1745 b(2.1107e+00)p 51956 18663 V 4000 19992
+V 32739 19593 a(-1.7747e+23)1164 b(-2.7972e+23)p 51956
+19992 V 4000 21320 V 4844 20922 a
+(-------------------------------------------------------------------)p
+(-----)p 51956 21320 V 4000 22648 V 4844 22250 a(8.640e+04)g(5)e
+(5.172e+02)i(1739)p 51956 22648 V 4000 23977 V 23441
+23578 a(Solution)5232 b(1.7392e-18)1745 b(2.4267e-18)p
+51956 23977 V 4000 25305 V 33321 24907 a(3.3518e+11)g(4.1625e+11)p
+51956 25305 V 4000 26633 V 23441 26235 a
+(----------------------------------------)p 51956 26633
+V 4000 27962 V 23441 27563 a(Sensitivity)583 b(1)1743
+b(-2.0753e+03)1164 b(-5.5491e+03)p 51956 27962 V 4000
+29290 V 33321 28892 a(5.1171e+23)1745 b(8.2143e+23)p
+51956 29290 V 4000 30619 V 23441 30220 a
+(----------------------------------------)p 51956 30619
+V 4000 31947 V 23441 31548 a(Sensitivity)583 b(2)1743
+b(-5.2491e-02)1164 b(-1.6658e-01)p 51956 31947 V 4000
+33275 V 32739 32877 a(-1.7901e+23)g(-2.8736e+23)p 51956
+33275 V 4000 34604 V 4844 34205 a
+(-------------------------------------------------------------------)p
+(-----)p 51956 34604 V 4000 35932 V 51956 35932 V 4000
+37260 V 4844 36862 a(Final)582 b(Statistics)p 51956 37260
+V 4000 38589 V 51956 38589 V 4000 39917 V 4844 39518
+a(nst)2907 b(=)1162 b(1739)p 51956 39917 V 4000 41245
+V 51956 41245 V 4000 42574 V 4844 42175 a(nfe)2907 b(=)1162
+b(2421)p 51956 42574 V 4000 43902 V 4844 43504 a(netf)2326
+b(=)1743 b(103)2325 b(nsetups)1163 b(=)1744 b(315)p 51956
+43902 V 4000 45230 V 4844 44832 a(nni)2907 b(=)1162 b(2418)2325
+b(ncfn)2906 b(=)g(3)p 51956 45230 V 4000 46559 V 51956
+46559 V 4000 47887 V 4844 47489 a(nfSe)2326 b(=)1162
+b(4842)2325 b(nfeS)2906 b(=)1163 b(9684)p 51956 47887
+V 4000 49215 V 4844 48817 a(netfs)1745 b(=)2905 b(0)2325
+b(nsetupsS)582 b(=)2906 b(0)p 51956 49215 V 4000 50544
+V 4844 50145 a(nniS)2326 b(=)2905 b(0)2325 b(ncfnS)g(=)2906
+b(0)p 51956 50544 V 4000 51344 45 801 v 51956 51344 V
+4000 51388 48001 45 v 5882 54167 a Ft(The)428 b(output)i(generated)f(b)
+-34 b(y)428 b Fr(pvfkx)i Ft(when)f(computing)g(sensitivities)e(with)i
+(the)g Fr(CV)p 45254 54167 382 45 v 458 w(STAGGERED1)4000
+55673 y Ft(metho)34 b(d)405 b(and)g(partial)f(error)f(con)-34
+b(trol)404 b(\()p Fr(mpirun)639 b(-np)f(4)e(pvfkx)i(-sensi)h(stg1)f(f)p
+Ft(\))405 b(is:)p 4000 58094 17898 45 v 22479 58160 a
+Fg(pvfkx)582 b(sample)g(output)p 34102 58094 V 4000 58894
+45 801 v 51956 58894 V 4000 60222 45 1329 v 51956 60222
+V 4000 61550 V 4844 61152 a(2-species)h(diurnal)f(advection-diffusion)i
+(problem)p 51956 61550 V 4000 62879 V 4844 62480 a(Sensitivity:)f(YES)f
+(\()f(STAGGERED)i(+)e(PARTIAL)h(ERROR)g(CONTROL)g(\))p
+51956 62879 V 4000 64207 V 51956 64207 V 4000 65535 V
+4844 65137 a
+(===================================================================)p
+(=====)p 51956 65535 V 4000 66864 V 7750 66465 a(T)2906
+b(Q)4068 b(H)3487 b(NST)11624 b(Bottom)582 b(left)1163
+b(Top)581 b(right)p 51956 66864 V 4000 68192 V 4844 67794
+a(===================================================================)p
+(=====)p 51956 68192 V 4000 69520 V 4844 69122 a(7.200e+03)1164
+b(5)e(1.587e+02)1745 b(219)p 51956 69520 V 4000 70849
+V 23441 70450 a(Solution)5232 b(1.0468e+04)1745 b(1.1185e+04)p
+51956 70849 V 4000 72177 V 33321 71779 a(2.5267e+11)g(2.6998e+11)p
+51956 72177 V 4000 73505 V 23441 73107 a
+(----------------------------------------)p 51956 73505
+V 4000 74834 V 23441 74435 a(Sensitivity)583 b(1)1743
+b(-6.4201e+19)1164 b(-6.8598e+19)p 51956 74834 V 4000
+76162 V 33321 75764 a(7.1178e+19)1745 b(7.6555e+19)p
+51956 76162 V 4000 77491 V 23441 77092 a
+(----------------------------------------)p 51956 77491
+V 4000 78819 V 23441 78420 a(Sensitivity)583 b(2)1743
+b(-4.3853e+14)1164 b(-5.0065e+14)p 51956 78819 V Black
+27394 81741 a Ft(21)p Black eop
+%%Page: 22 26
+22 25 bop Black Black 0 8037 45 1329 v 28739 7638 a Fg(-2.4407e+18)1164
+b(-2.7842e+18)p 47956 8037 V 0 9365 V 844 8966 a
+(-------------------------------------------------------------------)p
+(-----)p 47956 9365 V 0 10693 V 844 10295 a(1.440e+04)g(5)e(3.772e+02)
+1745 b(251)p 47956 10693 V 0 12022 V 19441 11623 a(Solution)5232
+b(6.6590e+06)1745 b(7.3008e+06)p 47956 12022 V 0 13350
+V 29321 12951 a(2.5819e+11)g(2.8329e+11)p 47956 13350
+V 0 14678 V 19441 14280 a(----------------------------------------)p
+47956 14678 V 0 16007 V 19441 15608 a(Sensitivity)583
+b(1)1743 b(-4.0848e+22)1164 b(-4.4785e+22)p 47956 16007
+V 0 17335 V 29321 16936 a(5.9550e+22)1745 b(6.7173e+22)p
+47956 17335 V 0 18663 V 19441 18265 a
+(----------------------------------------)p 47956 18663
+V 0 19992 V 19441 19593 a(Sensitivity)583 b(2)1743 b(-4.5235e+17)1164
+b(-5.4317e+17)p 47956 19992 V 0 21320 V 28739 20922 a(-6.5418e+21)g
+(-7.8315e+21)p 47956 21320 V 0 22648 V 844 22250 a
+(-------------------------------------------------------------------)p
+(-----)p 47956 22648 V 0 23977 V 844 23578 a(2.160e+04)g(5)e(2.746e+02)
+1745 b(277)p 47956 23977 V 0 25305 V 19441 24907 a(Solution)5232
+b(2.6650e+07)1745 b(2.9308e+07)p 47956 25305 V 0 26633
+V 29321 26235 a(2.9928e+11)g(3.3134e+11)p 47956 26633
+V 0 27962 V 19441 27563 a(----------------------------------------)p
+47956 27962 V 0 29290 V 19441 28892 a(Sensitivity)583
+b(1)1743 b(-1.6346e+23)1164 b(-1.7976e+23)p 47956 29290
+V 0 30619 V 29321 30220 a(3.8203e+23)1745 b(4.4991e+23)p
+47956 30619 V 0 31947 V 19441 31548 a
+(----------------------------------------)p 47956 31947
+V 0 33275 V 19441 32877 a(Sensitivity)583 b(2)1743 b(-7.6601e+18)1164
+b(-9.4433e+18)p 47956 33275 V 0 34604 V 28739 34205 a(-7.6459e+22)g
+(-9.4502e+22)p 47956 34604 V 0 35932 V 844 35533 a
+(-------------------------------------------------------------------)p
+(-----)p 47956 35932 V 0 37260 V 844 36862 a(2.880e+04)g(4)e(1.038e+02)
+1745 b(308)p 47956 37260 V 0 38589 V 19441 38190 a(Solution)5232
+b(8.7021e+06)1745 b(9.6500e+06)p 47956 38589 V 0 39917
+V 29321 39518 a(3.3804e+11)g(3.7510e+11)p 47956 39917
+V 0 41245 V 19441 40847 a(----------------------------------------)p
+47956 41245 V 0 42574 V 19441 42175 a(Sensitivity)583
+b(1)1743 b(-5.3375e+22)1164 b(-5.9187e+22)p 47956 42574
+V 0 43902 V 29321 43504 a(5.4487e+23)1745 b(6.7430e+23)p
+47956 43902 V 0 45230 V 19441 44832 a
+(----------------------------------------)p 47956 45230
+V 0 46559 V 19441 46160 a(Sensitivity)583 b(2)1743 b(-4.8855e+18)1164
+b(-6.1040e+18)p 47956 46559 V 0 47887 V 28739 47489 a(-1.7194e+23)g
+(-2.1518e+23)p 47956 47887 V 0 49215 V 844 48817 a
+(-------------------------------------------------------------------)p
+(-----)p 47956 49215 V 0 50544 V 844 50145 a(3.600e+04)g(4)e(7.257e+01)
+1745 b(346)p 47956 50544 V 0 51872 V 19441 51474 a(Solution)5232
+b(1.4040e+04)1745 b(1.5609e+04)p 47956 51872 V 0 53201
+V 29321 52802 a(3.3868e+11)g(3.7652e+11)p 47956 53201
+V 0 54529 V 19441 54130 a(----------------------------------------)p
+47956 54529 V 0 55857 V 19441 55459 a(Sensitivity)583
+b(1)1743 b(-8.6140e+19)1164 b(-9.5761e+19)p 47956 55857
+V 0 57186 V 29321 56787 a(5.2718e+23)1745 b(6.6029e+23)p
+47956 57186 V 0 58514 V 19441 58115 a
+(----------------------------------------)p 47956 58514
+V 0 59842 V 19441 59444 a(Sensitivity)583 b(2)1743 b(-8.4328e+15)1164
+b(-1.0549e+16)p 47956 59842 V 0 61171 V 28739 60772 a(-1.8439e+23)g
+(-2.3096e+23)p 47956 61171 V 0 62499 V 844 62100 a
+(-------------------------------------------------------------------)p
+(-----)p 47956 62499 V 0 63827 V 844 63429 a(4.320e+04)g(4)e(3.835e+02)
+1745 b(407)p 47956 63827 V 0 65156 V 19441 64757 a(Solution)4650
+b(-5.2385e-08)1746 b(5.9808e-07)p 47956 65156 V 0 66484
+V 29321 66086 a(3.3823e+11)f(3.8035e+11)p 47956 66484
+V 0 67812 V 19441 67414 a(----------------------------------------)p
+47956 67812 V 0 69141 V 19441 68742 a(Sensitivity)583
+b(1)2325 b(8.8900e+08)1163 b(-2.8682e+09)p 47956 69141
+V 0 70469 V 29321 70071 a(5.2753e+23)1745 b(6.7448e+23)p
+47956 70469 V 0 71797 V 19441 71399 a
+(----------------------------------------)p 47956 71797
+V 0 73126 V 19441 72727 a(Sensitivity)583 b(2)2325 b(2.6162e+07)1745
+b(2.2623e+07)p 47956 73126 V 0 74454 V 28739 74056 a(-1.8454e+23)1164
+b(-2.3595e+23)p 47956 74454 V 0 75782 V 844 75384 a
+(-------------------------------------------------------------------)p
+(-----)p 47956 75782 V 0 77111 V 844 76712 a(5.040e+04)g(5)e(4.386e+02)
+1745 b(421)p 47956 77111 V 0 78439 V 19441 78041 a(Solution)5232
+b(5.6769e-10)1745 b(4.8955e-09)p 47956 78439 V Black
+23394 81741 a Ft(22)p Black eop
+%%Page: 23 27
+23 26 bop Black Black 4000 8037 45 1329 v 33321 7638
+a Fg(3.3582e+11)1745 b(3.8644e+11)p 51956 8037 V 4000
+9365 V 23441 8966 a(----------------------------------------)p
+51956 9365 V 4000 10693 V 23441 10295 a(Sensitivity)583
+b(1)1743 b(-9.2603e+07)1164 b(-1.0058e+08)p 51956 10693
+V 4000 12022 V 33321 11623 a(5.2067e+23)1745 b(6.9664e+23)p
+51956 12022 V 4000 13350 V 23441 12951 a
+(----------------------------------------)p 51956 13350
+V 4000 14678 V 23441 14280 a(Sensitivity)583 b(2)1743
+b(-2.8796e+07)1164 b(-3.1171e+07)p 51956 14678 V 4000
+16007 V 32739 15608 a(-1.8214e+23)g(-2.4370e+23)p 51956
+16007 V 4000 17335 V 4844 16936 a
+(-------------------------------------------------------------------)p
+(-----)p 51956 17335 V 4000 18663 V 4844 18265 a(5.760e+04)g(4)e
+(2.412e+02)1745 b(435)p 51956 18663 V 4000 19992 V 23441
+19593 a(Solution)5232 b(7.8795e-08)1745 b(3.8016e-07)p
+51956 19992 V 4000 21320 V 33321 20922 a(3.3203e+11)g(3.9090e+11)p
+51956 21320 V 4000 22648 V 23441 22250 a
+(----------------------------------------)p 51956 22648
+V 4000 23977 V 23441 23578 a(Sensitivity)583 b(1)1743
+b(-5.0500e+08)1164 b(-2.4304e+09)p 51956 23977 V 4000
+25305 V 33321 24907 a(5.0825e+23)1745 b(7.1205e+23)p
+51956 25305 V 4000 26633 V 23441 26235 a
+(----------------------------------------)p 51956 26633
+V 4000 27962 V 23441 27563 a(Sensitivity)583 b(2)2325
+b(8.3512e+07)1745 b(9.0527e+07)p 51956 27962 V 4000 29290
+V 32739 28892 a(-1.7780e+23)1164 b(-2.4910e+23)p 51956
+29290 V 4000 30619 V 4844 30220 a
+(-------------------------------------------------------------------)p
+(-----)p 51956 30619 V 4000 31947 V 4844 31548 a(6.480e+04)g(5)e
+(6.415e+02)1745 b(451)p 51956 31947 V 4000 33275 V 23441
+32877 a(Solution)5232 b(5.1990e-10)1745 b(2.5692e-09)p
+51956 33275 V 4000 34604 V 33321 34205 a(3.3130e+11)g(3.9634e+11)p
+51956 34604 V 4000 35932 V 23441 35533 a
+(----------------------------------------)p 51956 35932
+V 4000 37260 V 23441 36862 a(Sensitivity)583 b(1)2325
+b(1.1607e+07)1745 b(6.1478e+07)p 51956 37260 V 4000 38589
+V 33321 38190 a(5.0442e+23)g(7.3273e+23)p 51956 38589
+V 4000 39917 V 23441 39518 a(----------------------------------------)p
+51956 39917 V 4000 41245 V 23441 40847 a(Sensitivity)583
+b(2)1743 b(-1.8895e+07)1164 b(-2.0261e+07)p 51956 41245
+V 4000 42574 V 32739 42175 a(-1.7646e+23)g(-2.5633e+23)p
+51956 42574 V 4000 43902 V 4844 43504 a
+(-------------------------------------------------------------------)p
+(-----)p 51956 43902 V 4000 45230 V 4844 44832 a(7.200e+04)g(5)e
+(6.415e+02)1745 b(462)p 51956 45230 V 4000 46559 V 23441
+46160 a(Solution)4650 b(-5.3928e-11)1164 b(-2.6841e-10)p
+51956 46559 V 4000 47887 V 33321 47489 a(3.3297e+11)1745
+b(4.0388e+11)p 51956 47887 V 4000 49215 V 23441 48817
+a(----------------------------------------)p 51956 49215
+V 4000 50544 V 23441 50145 a(Sensitivity)583 b(1)2325
+b(1.1878e+06)1745 b(6.0543e+06)p 51956 50544 V 4000 51872
+V 33321 51474 a(5.0783e+23)g(7.6382e+23)p 51956 51872
+V 4000 53201 V 23441 52802 a(----------------------------------------)p
+51956 53201 V 4000 54529 V 23441 54130 a(Sensitivity)583
+b(2)1743 b(-7.4515e+05)1164 b(-7.9928e+05)p 51956 54529
+V 4000 55857 V 32739 55459 a(-1.7765e+23)g(-2.6721e+23)p
+51956 55857 V 4000 57186 V 4844 56787 a
+(-------------------------------------------------------------------)p
+(-----)p 51956 57186 V 4000 58514 V 4844 58115 a(7.920e+04)g(5)e
+(6.415e+02)1745 b(473)p 51956 58514 V 4000 59842 V 23441
+59444 a(Solution)4650 b(-5.6664e-13)1164 b(-2.8119e-12)p
+51956 59842 V 4000 61171 V 33321 60772 a(3.3344e+11)1745
+b(4.1203e+11)p 51956 61171 V 4000 62499 V 23441 62100
+a(----------------------------------------)p 51956 62499
+V 4000 63827 V 23441 63429 a(Sensitivity)583 b(1)1743
+b(-1.6520e+06)1164 b(-8.6438e+06)p 51956 63827 V 4000
+65156 V 33321 64757 a(5.0730e+23)1745 b(7.9960e+23)p
+51956 65156 V 4000 66484 V 23441 66086 a
+(----------------------------------------)p 51956 66484
+V 4000 67812 V 23441 67414 a(Sensitivity)583 b(2)2325
+b(3.9882e+06)1745 b(4.2797e+06)p 51956 67812 V 4000 69141
+V 32739 68742 a(-1.7747e+23)1164 b(-2.7972e+23)p 51956
+69141 V 4000 70469 V 4844 70071 a
+(-------------------------------------------------------------------)p
+(-----)p 51956 70469 V 4000 71797 V 4844 71399 a(8.640e+04)g(5)e
+(6.415e+02)1745 b(485)p 51956 71797 V 4000 73126 V 23441
+72727 a(Solution)4650 b(-4.0729e-15)1164 b(-1.9951e-14)p
+51956 73126 V 4000 74454 V 33321 74056 a(3.3518e+11)1745
+b(4.1625e+11)p 51956 74454 V 4000 75782 V 23441 75384
+a(----------------------------------------)p 51956 75782
+V 4000 77111 V 23441 76712 a(Sensitivity)583 b(1)1743
+b(-8.8716e+03)1164 b(-4.6515e+04)p 51956 77111 V 4000
+78439 V 33321 78041 a(5.1171e+23)1745 b(8.2142e+23)p
+51956 78439 V Black 27394 81741 a Ft(23)p Black eop
+%%Page: 24 28
+24 27 bop Black Black 0 8037 45 1329 v 19441 7638 a Fg
+(----------------------------------------)p 47956 8037
+V 0 9365 V 19441 8966 a(Sensitivity)583 b(2)2325 b(2.2251e+04)1745
+b(2.3887e+04)p 47956 9365 V 0 10693 V 28739 10295 a(-1.7901e+23)1164
+b(-2.8736e+23)p 47956 10693 V 0 12022 V 844 11623 a
+(-------------------------------------------------------------------)p
+(-----)p 47956 12022 V 0 13350 V 47956 13350 V 0 14678
+V 844 14280 a(Final)582 b(Statistics)p 47956 14678 V
+0 16007 V 47956 16007 V 0 17335 V 844 16936 a(nst)2907
+b(=)1743 b(485)p 47956 17335 V 0 18663 V 47956 18663
+V 0 19992 V 844 19593 a(nfe)2907 b(=)1162 b(1109)p 47956
+19992 V 0 21320 V 844 20922 a(netf)2326 b(=)e(29)h(nsetups)1163
+b(=)2325 b(83)p 47956 21320 V 0 22648 V 844 22250 a(nni)2907
+b(=)1743 b(621)2325 b(ncfn)2906 b(=)g(0)p 47956 22648
+V 0 23977 V 47956 23977 V 0 25305 V 844 24907 a(nfSe)2326
+b(=)1162 b(1226)2325 b(nfeS)2906 b(=)1163 b(2452)p 47956
+25305 V 0 26633 V 844 26235 a(netfs)1745 b(=)2905 b(0)2325
+b(nsetupsS)582 b(=)2906 b(0)p 47956 26633 V 0 27962 V
+844 27563 a(nniS)2326 b(=)1743 b(612)2325 b(ncfnS)g(=)2906
+b(0)p 47956 27962 V 0 28762 45 801 v 47956 28762 V 0
+28806 48001 45 v Black 23394 81741 a Ft(24)p Black eop
+%%Page: 25 29
+25 28 bop Black Black 4000 7638 a Fs(3)1793 b(Adjoin)-50
+b(t)599 b(sensitivit)-50 b(y)601 b(analysis)e(example)g(problems)4000
+10344 y Ft(The)316 b(next)g(t)-34 b(w)g(o)316 b(sections)g(describ)34
+b(e)315 b(in)g(detail)g(a)h(serial)e(example)h(\()p Fr(cvadx)p
+Ft(\))j(and)e(a)g(parallel)e(one)i(\()p Fr(pvanx)p Ft(\).)4000
+11849 y(F)-101 b(or)465 b(details)f(on)h(the)g(other)g(examples,)479
+b(the)465 b(reader)f(is)g(directed)h(to)g(the)g(commen)-34
+b(ts)465 b(in)g(their)f(source)4000 13355 y(\257les.)4000
+16589 y Fo(3.1)1495 b(A)499 b(serial)g(dense)g(example:)665
+b Fn(cvadx)4000 18877 y Ft(As)357 b(a)h(\257rst)f(example)g(of)h(using)
+g Fq(cv)-27 b(odes)358 b Ft(for)f(adjoin)-34 b(t)359
+b(sensitivit)-34 b(y)357 b(analysis)h(w)-34 b(e)357 b(examine)g(the)h
+(c)-34 b(hemical)4000 20382 y(kinetics)404 b(problem)21403
+22924 y(_)-555 b Fm(y)21779 23106 y Fl(1)22642 22924
+y Ft(=)336 b Fp(\241)p Fm(p)25474 23106 y Fl(1)26000
+22924 y Fm(y)26594 23106 y Fl(1)27389 22924 y Ft(+)269
+b Fm(p)29211 23106 y Fl(2)29737 22924 y Fm(y)30331 23106
+y Fl(2)30857 22924 y Fm(y)31451 23106 y Fl(3)21403 24889
+y Ft(_)-555 b Fm(y)21779 25071 y Fl(2)22642 24889 y Ft(=)336
+b Fm(p)24531 25071 y Fl(1)25057 24889 y Fm(y)25651 25071
+y Fl(1)26446 24889 y Fp(\241)269 b Fm(p)28268 25071 y
+Fl(2)28794 24889 y Fm(y)29388 25071 y Fl(2)29914 24889
+y Fm(y)30508 25071 y Fl(3)31304 24889 y Fp(\241)g Fm(p)33126
+25071 y Fl(3)33651 24889 y Fm(y)34288 24389 y Fl(2)34245
+25189 y(2)21403 26855 y Ft(_)-555 b Fm(y)21779 27037
+y Fl(3)22642 26855 y Ft(=)336 b Fm(p)24531 27037 y Fl(3)25057
+26855 y Fm(y)25694 26354 y Fl(2)25651 27154 y(2)21185
+28692 y Fm(y)43 b Ft(\()p Fm(t)22731 28874 y Fl(0)23258
+28692 y Ft(\))337 b(=)f Fm(y)25939 28874 y Fl(0)26667
+28692 y Fm(;)49845 25810 y Ft(\(11\))4000 31237 y(for)404
+b(whic)-34 b(h)405 b(w)-34 b(e)405 b(w)-34 b(an)g(t)406
+b(to)e(compute)h(the)g(gradien)-34 b(t)404 b(with)h(resp)34
+b(ect)404 b(to)g Fm(p)g Ft(of)23541 34569 y Fm(G)p Ft(\()p
+Fm(p)p Ft(\))337 b(=)27663 32919 y Ff(Z)28875 33269 y
+Fk(t)29215 33392 y Fd(1)28336 35668 y Fk(t)28676 35791
+y Fd(0)29933 34569 y Fm(y)30527 34751 y Fl(3)31054 34569
+y Fm(dt;)17385 b Ft(\(12\))4000 37952 y(without)542 b(ha)-34
+b(ving)541 b(to)g(compute)g(the)g(solution)h(sensitivities)e
+Fm(dy)43 b(=dp)p Ft(.)948 b(F)-101 b(ollo)-34 b(wing)541
+b(the)g(deriv)-67 b(ation)540 b(in)4000 39457 y Fp(x)p
+Ft(3.3,)438 b(and)433 b(taking)g(in)-34 b(to)433 b(accoun)-34
+b(t)433 b(the)g(fact)f(that)i(the)e(initial)g(v)-67 b(alues)432
+b(of)g(\(11\))h(do)g(not)g(dep)34 b(end)433 b(on)g(the)4000
+40962 y(parameters)404 b Fm(p)p Ft(,)g(b)-34 b(y)404
+b(\(3.18\))h(this)g(gradien)-34 b(t)404 b(is)g(simply)21229
+43541 y Fm(dG)p 21229 44082 1584 49 v 21401 45193 a(dp)23282
+44361 y Ft(=)24561 42711 y Ff(Z)25774 43062 y Fk(t)26114
+43185 y Fd(1)25235 45460 y Fk(t)25575 45583 y Fd(0)26832
+43379 y Ff(\241)27387 44361 y Fm(g)27965 44543 y Fk(p)28764
+44361 y Ft(+)269 b Fm(\270)30683 43861 y Fk(T)31417 44361
+y Fm(f)32010 44543 y Fk(p)32539 43379 y Ff(\242)33297
+44361 y Fm(dt)202 b(;)14940 b Ft(\(13\))4000 47744 y(where)477
+b Fm(g)43 b Ft(\()p Fm(t;)202 b(y)43 b(;)202 b(p)p Ft(\))459
+b(=)e Fm(y)14357 47926 y Fl(3)14883 47744 y Ft(,)495
+b Fm(f)607 b Ft(is)477 b(the)g(v)-34 b(ector-v)-67 b(alued)476
+b(function)i(de\257ning)g(the)f(righ)-34 b(t-hand)479
+b(side)d(of)h(\(11\),)4000 49250 y(and)405 b Fm(\270)f
+Ft(is)g(the)g(solution)h(of)g(the)f(adjoin)-34 b(t)406
+b(problem)e(\(3.17\),)22643 51614 y(_)22458 51934 y Fm(\270)337
+b Ft(=)f Fp(\241)p Ft(\()p Fm(f)26788 52116 y Fk(y)27341
+51934 y Ft(\))27812 51433 y Fk(T)28546 51934 y Fm(\270)270
+b Fp(\241)f Ft(\()p Fm(g)31784 52116 y Fk(y)32337 51934
+y Ft(\))32808 51433 y Fk(T)22458 53771 y Fm(\270)p Ft(\()p
+Fm(t)24074 53953 y Fl(1)24600 53771 y Ft(\))337 b(=)g(0)202
+b Fm(:)49845 52817 y Ft(\(14\))5882 56316 y(In)419 b(order)f(to)i(a)-34
+b(v)g(oid)419 b(sa)-34 b(ving)419 b(in)-34 b(termediate)420
+b Fm(\270)f Ft(v)-67 b(alues)418 b(just)i(for)f(the)g(ev)-67
+b(aluation)419 b(of)h(the)f(in)-34 b(tegral)419 b(in)4000
+57822 y(\(13\),)405 b(w)-34 b(e)404 b(extend)h(the)f(bac)-34
+b(kw)g(ard)405 b(problem)g(with)f(the)h(follo)-34 b(wing)405
+b Fm(N)35789 58004 y Fk(p)36722 57822 y Ft(quadrature)f(equations)24657
+60237 y(_)24398 60557 y Fm(\273)393 b Ft(=)336 b Fm(g)27221
+60056 y Fk(T)27178 60856 y(p)28225 60557 y Ft(+)269 b
+Fm(f)30160 60056 y Fk(T)30030 60856 y(p)30895 60557 y
+Fm(\270)24398 62525 y(\273)56 b Ft(\()p Fm(t)25893 62707
+y Fl(1)26419 62525 y Ft(\))337 b(=)g(0)202 b Fm(;)49845
+61505 y Ft(\(15\))4000 65399 y(whic)-34 b(h)434 b(yield)f
+Fm(\273)56 b Ft(\()p Fm(t)11951 65581 y Fl(0)12477 65399
+y Ft(\))386 b(=)g Fp(\241)15808 64423 y Ff(R)16616 64773
+y Fk(t)16956 64896 y Fd(1)16380 65825 y Fk(t)16720 65948
+y Fd(0)17472 65399 y Ft(\()p Fm(g)18564 64959 y Fk(T)18521
+65699 y(p)19588 65399 y Ft(+)289 b Fm(f)21543 64959 y
+Fk(T)21413 65699 y(p)22278 65399 y Fm(\270)p Ft(\))p
+Fm(dt)433 b Ft(and)h(th)-34 b(us)436 b Fm(dG)o(=dp)386
+b Ft(=)g Fp(\241)p Fm(\273)36715 64959 y Fk(T)37448 65399
+y Ft(\()p Fm(t)38357 65581 y Fl(0)38883 65399 y Ft(\).)627
+b(Similarly)-101 b(,)440 b(the)434 b(v)-67 b(alue)433
+b(of)4000 66905 y Fm(G)447 b Ft(in)g(\(12\))h(can)f(b)34
+b(e)447 b(obtained)h(as)f Fm(G)408 b Ft(=)g Fp(\241)p
+Fm(\263)89 b Ft(\()p Fm(t)25157 67087 y Fl(0)25683 66905
+y Ft(\),)458 b(where)447 b Fm(\263)536 b Ft(is)447 b(solution)h(of)f
+(the)h(follo)-34 b(wing)447 b(quadrature)4000 68410 y(equation:)25599
+70707 y(_)25357 71027 y Fm(\263)426 b Ft(=)336 b Fm(g)25357
+72864 y(\263)89 b Ft(\()p Fm(t)26885 73046 y Fl(1)27411
+72864 y Ft(\))337 b(=)g(0)202 b Fm(:)49845 71910 y Ft(\(16\))5882
+75409 y(The)401 b(source)g(co)34 b(de)401 b(for)g(this)h(example)e(is)h
+(listed)g(in)h(App.)538 b(D.)f(The)402 b(main)f(program)g(and)h(the)g
+(user-)4000 76915 y(de\257ned)509 b(routines)g(are)f(describ)34
+b(ed)508 b(b)34 b(elo)-34 b(w,)534 b(with)509 b(emphasis)g(on)f(the)h
+(asp)34 b(ects)509 b(particular)f(to)g(adjoin)-34 b(t)4000
+78420 y(sensitivit)g(y)404 b(calculations.)p Black 27394
+81741 a(25)p Black eop
+%%Page: 26 30
+26 29 bop Black Black 1882 7638 a Ft(The)628 b(calling)f(program)h
+(includes)f(the)i Fq(cv)-27 b(odes)628 b Ft(header)g(\257les)f
+Fr(cvodes.h)k Ft(and)d Fr(cvodea.h)j Ft(for)0 9143 y
+Fq(cv)-27 b(odes)338 b Ft(de\257nitions)f(and)g(in)-34
+b(terface)337 b(function)h(protot)-34 b(yp)34 b(es,)350
+b(the)337 b(header)f(\257le)g Fr(cvdense.h)k Ft(for)c(the)h
+Fq(cv-)0 10649 y(dense)313 b Ft(linear)g(solv)-34 b(er)312
+b(mo)34 b(dule,)331 b(the)314 b(header)f(\257le)g Fr(nvector)p
+27098 10649 382 45 v 460 w(serial.h)j Ft(for)d(the)h(de\257nition)g(of)
+f(the)h(serial)0 12154 y(implemen)-34 b(tation)403 b(of)f(the)g
+Fq(nvector)i Ft(mo)34 b(dule)401 b(-)h Fq(nvector)p 27865
+12154 403 45 v 484 w(serial)p Ft(,)h(and)g(the)f(\257le)f
+Fr(sundialsmath.h)0 13660 y Ft(for)456 b(the)g(de\257nition)i(of)e(the)
+g Fr(ABS)h Ft(macro.)694 b(This)456 b(program)g(also)g(includes)g(t)-34
+b(w)g(o)458 b(user-de\257ned)f(accessor)0 15165 y(macros,)519
+b Fr(Ith)498 b Ft(and)g Fr(IJth)g Ft(that)g(are)e(useful)i(in)f
+(writing)g(the)g(problem)g(functions)h(in)f(a)g(form)g(closely)0
+16671 y(matc)-34 b(hing)354 b(their)f(mathematical)g(description,)363
+b(i.e.)521 b(with)354 b(comp)34 b(onen)-34 b(ts)354 b(n)-34
+b(um)g(b)34 b(ered)354 b(from)f(1)g(instead)h(of)0 18176
+y(from)429 b(0.)611 b(F)-101 b(ollo)-34 b(wing)429 b(that,)436
+b(the)429 b(program)f(de\257nes)i(problem-sp)34 b(eci\257c)428
+b(constan)-34 b(ts)430 b(and)f(a)g(user-de\257ned)0 19682
+y(data)498 b(structure)g(whic)-34 b(h)498 b(will)f(b)34
+b(e)497 b(used)h(to)g(pass)f(the)h(v)-67 b(alues)497
+b(of)h(the)f(parameters)h Fm(p)f Ft(to)g(v)-67 b(arious)497
+b(user)0 21187 y(routines.)558 b(The)411 b(constan)-34
+b(t)412 b Fr(STEPS)g Ft(de\257nes)f(the)g(n)-34 b(um)g(b)34
+b(er)411 b(of)g(in)-34 b(tegration)411 b(steps)g(b)34
+b(et)-34 b(w)g(een)411 b(t)-34 b(w)g(o)412 b(consec-)0
+22693 y(utiv)-34 b(e)498 b(c)-34 b(hec)g(kp)34 b(oin)-34
+b(ts.)819 b(The)498 b(program)f(prologue)g(ends)h(with)h(the)e(protot)
+-34 b(yp)34 b(es)499 b(of)e(four)h(user-supplied)0 24198
+y(functions)443 b(that)g(are)f(called)f(b)-34 b(y)442
+b Fq(cv)-27 b(odes)p Ft(.)653 b(The)442 b(\257rst)g(t)-34
+b(w)g(o)444 b(pro)-34 b(vide)441 b(the)i(righ)-34 b(t-hand)443
+b(side)f(and)h(dense)0 25704 y(Jacobian)432 b(for)h(the)f(forw)-34
+b(ard)434 b(problem,)439 b(and)433 b(the)f(last)h(t)-34
+b(w)g(o)434 b(pro)-34 b(vide)432 b(the)g(righ)-34 b(t-hand)435
+b(side)d(and)h(dense)0 27209 y(Jacobian)404 b(for)h(the)f(bac)-34
+b(kw)g(ard)405 b(problem.)1882 28719 y(The)397 b Fr(main)h
+Ft(function)h(b)34 b(egins)396 b(with)i(t)-34 b(yp)34
+b(e)397 b(declarations)g(and)h(con)-34 b(tin)g(ues)398
+b(with)g(the)f(allo)34 b(cation)396 b(and)0 30224 y(initialization)320
+b(of)h(the)h(user)e(data)i(structure)f(whic)-34 b(h)322
+b(con)-34 b(tains)322 b(the)f(v)-67 b(alues)320 b(of)h(the)g
+(parameters)g Fm(p)p Ft(.)510 b(Next,)0 31730 y(it)471
+b(allo)34 b(cates)471 b(and)h(initializes)f Fr(y)g Ft(with)i(the)e
+(initial)g(conditions)i(for)e(the)h(forw)-34 b(ard)473
+b(problem,)488 b(allo)34 b(cates)0 33235 y(and)527 b(initializes)e
+Fr(q)h Ft(for)h(the)f(quadrature)h(used)g(in)f(computing)i(the)e(v)-67
+b(alue)526 b Fm(G)p Ft(,)556 b(and)527 b(\257nally)f(sets)h(the)0
+34741 y(scalar)366 b(relativ)-34 b(e)366 b(tolerance)g
+Fr(reltolQ)j Ft(and)f(v)-34 b(ector)366 b(absolute)i(tolerance)e
+Fr(abstolQ)j Ft(for)e(the)g(quadrature)0 36246 y(v)-67
+b(ariable.)526 b(No)372 b(tolerances)g(for)g(the)g(state)g(v)-67
+b(ariables)371 b(are)g(de\257ned)i(since)e Fr(cvadx)j
+Ft(uses)e(its)g(o)-34 b(wn)373 b(function)0 37752 y(to)404
+b(compute)h(the)g(error)e(w)-34 b(eigh)g(ts)405 b(for)g(WRMS)f(norm)h
+(estimates)f(of)g(state)h(solution)g(v)-34 b(ectors.)1882
+39261 y(The)558 b(call)g(to)g Fr(CVodeCreate)k Ft(creates)c(the)h(main)
+f(in)-34 b(tegrator)559 b(memory)e(blo)34 b(c)-34 b(k)558
+b(for)g(the)h(forw)-34 b(ard)0 40767 y(in)g(tegration)372
+b(and)h(sp)34 b(eci\257es)371 b(the)h Fr(CV)p 16521 40767
+382 45 v 458 w(BDF)h Ft(in)-34 b(tegration)372 b(metho)34
+b(d)372 b(with)h Fr(CV)p 33771 40767 V 459 w(NEWTON)g
+Ft(iteration.)528 b(The)372 b(call)0 42272 y(to)438 b
+Fr(CVodeMalloc)j Ft(initializes)436 b(the)h(forw)-34
+b(ard)438 b(in)-34 b(tegration)438 b(b)-34 b(y)438 b(sp)34
+b(ecifying)437 b(the)g(initial)g(conditions)h(and)0 43778
+y(that)429 b(a)e(function)j(for)d(error)g(w)-34 b(eigh)g(ts)429
+b(will)e(b)34 b(e)427 b(pro)-34 b(vided)429 b(\()p Fr(itol=CV)p
+31666 43778 V 461 w(WF)p Ft(.)f(The)g(next)g(t)-34 b(w)g(o)429
+b(calls)e(sp)34 b(ecify)0 45283 y(the)475 b(optional)g(user)f(data)h(p)
+34 b(oin)-34 b(ter)475 b(and)g(error)f(w)-34 b(eigh)g(t)475
+b(calculation)f(function.)751 b(The)475 b(linear)e(solv)-34
+b(er)474 b(is)0 46789 y(selected)522 b(to)h(b)34 b(e)523
+b Fq(cvdense)h Ft(through)g(the)f(call)f(to)h(its)g(initialization)f
+(routine)h Fr(CVDense)p Ft(.)897 b(The)523 b(user)0 48294
+y(pro)-34 b(vided)391 b(Jacobian)g(routine)h Fr(Jac)g
+Ft(and)f(user)g(data)h(structure)f Fr(data)h Ft(are)f(sp)34
+b(eci\257ed)390 b(through)j(a)e(call)f(to)0 49800 y Fr(CVDenseSetJacFn)
+p Ft(.)1882 51309 y(The)329 b(next)g(co)34 b(de)328 b(blo)34
+b(c)-34 b(k)328 b(initializes)f(quadrature)i(computations)h(on)f(the)g
+(forw)-34 b(ard)330 b(phase,)344 b(b)-34 b(y)329 b(sp)34
+b(eci-)0 52815 y(fying)342 b(the)h(user)f(data)h(structure)g(to)f(b)34
+b(e)342 b(passed)h(to)g(the)f(function)i Fr(fQ)p Ft(,)e(including)h
+(the)f(quadrature)h(v)-67 b(ari-)0 54320 y(able)355 b(in)h(the)g(error)
+e(test,)366 b(and)356 b(setting)h(the)f(in)-34 b(tegration)356
+b(tolerances)f(for)h(the)g(quadrature)g(v)-67 b(ariable)354
+b(and)0 55826 y(\257nally)347 b(allo)34 b(cating)347
+b Fq(cv)-27 b(odes)348 b Ft(memory)f(for)g(quadrature)h(in)-34
+b(tegration)349 b(\(the)f(call)e(to)i Fr(CVodeQuadMalloc)0
+57331 y Ft(sp)34 b(eci\257es)337 b(the)h(righ)-34 b(t-hand)340
+b(side)e(of)g(the)g(quadrature)g(equation)g(and)h(the)f(initial)f(v)-67
+b(alues)337 b(of)h(the)h(quadra-)0 58837 y(ture)404 b(v)-67
+b(ariable\).)1882 60346 y(Allo)34 b(cation)455 b(for)h(the)g(memory)g
+(blo)34 b(c)-34 b(k)455 b(of)h(the)h(com)-34 b(bined)456
+b(forw)-34 b(ard-bac)g(kw)g(ard)458 b(problem)e(is)g(acom-)0
+61852 y(plished)378 b(through)g(the)g(call)f(to)g Fr(CVadjMalloc)k
+Ft(whic)-34 b(h)379 b(sp)34 b(eci\257es)376 b Fr(STEPS)638
+b(=)f(150)p Ft(,)384 b(the)377 b(n)-34 b(um)g(b)34 b(er)379
+b(of)e(steps)0 63357 y(b)34 b(et)-34 b(w)g(een)405 b(t)-34
+b(w)g(o)406 b(c)-34 b(hec)g(kp)34 b(oin)-34 b(ts.)1882
+64867 y(The)518 b(call)e(to)i Fr(CVodeF)h Ft(requests)f(the)g(solution)
+g(of)g(the)f(forw)-34 b(ard)519 b(problem)e(to)h Fr(TOUT)p
+Ft(.)h(If)e(success-)0 66372 y(ful,)626 b(at)582 b(the)g(end)g(of)g
+(the)g(in)-34 b(tegration,)626 b Fr(CVodeF)584 b Ft(will)d(return)g
+(the)h(n)-34 b(um)g(b)34 b(er)583 b(of)f(sa)-34 b(v)g(ed)582
+b(c)-34 b(hec)g(kp)34 b(oin)-34 b(ts)0 67878 y(in)562
+b(the)f(argumen)-34 b(t)563 b Fr(ncheck)h Ft(\(optionally)-101
+b(,)601 b(a)561 b(list)g(of)h(the)g(c)-34 b(hec)g(kp)34
+b(oin)-34 b(ts)563 b(can)e(b)34 b(e)561 b(prin)-34 b(ted)563
+b(b)-34 b(y)562 b(calling)0 69383 y Fr(CVadjGetCheckPointsList)p
+Ft(\).)1882 70893 y(The)387 b(next)g(segmen)-34 b(t)388
+b(of)g(co)34 b(de)386 b(deals)h(with)h(the)f(setup)h(of)f(the)h(bac)-34
+b(kw)g(ard)388 b(problem.)533 b(First,)390 b(a)d(serial)0
+72399 y(v)-34 b(ector)347 b Fr(yB)h Ft(of)g(length)h
+Fr(NEQ)f Ft(is)g(allo)34 b(cated)347 b(and)h(initalized)f(with)i(the)f
+(v)-67 b(alue)346 b(of)i Fm(\270)g Ft(at)g(the)g(\257nal)g(time)g(\(0)p
+Fm(:)p Ft(0\).)0 73904 y(A)532 b(second)g(serial)f(v)-34
+b(ector)532 b Fr(qB)h Ft(of)f(dimension)h Fr(NP)f Ft(is)g(created)g
+(and)h(initialized)e(to)i(0)p Fm(:)p Ft(0.)922 b(This)532
+b(v)-34 b(ector)0 75409 y(corresp)34 b(onds)522 b(to)f(the)h
+(quadrature)g(v)-67 b(ariables)520 b Fm(\273)578 b Ft(whose)522
+b(v)-67 b(alues)521 b(at)g Fm(t)32635 75591 y Fl(0)33682
+75409 y Ft(are)g(the)h(comp)34 b(onen)-34 b(ts)523 b(of)e(the)0
+76915 y(gradien)-34 b(t)420 b(of)f Fm(G)g Ft(with)h(resp)34
+b(ect)418 b(to)i(the)f(problem)g(parameters)g Fm(p)p
+Ft(.)583 b(F)-101 b(ollo)-34 b(wing)420 b(that,)j(the)d(program)f(sets)
+0 78420 y(the)405 b(relativ)-34 b(e)403 b(and)i(absolute)f(tolerances)g
+(for)g(the)h(bac)-34 b(kw)g(ard)405 b(in)-34 b(tegration.)p
+Black 23394 81741 a(26)p Black eop
+%%Page: 27 31
+27 30 bop Black Black 5882 7638 a Ft(The)552 b Fq(cv)-27
+b(odes)552 b Ft(memory)f(for)g(the)g(in)-34 b(tegration)553
+b(of)e(the)h(bac)-34 b(kw)g(ard)552 b(in)-34 b(tegration)552
+b(is)f(created)g(and)4000 9143 y(allo)34 b(cated)530
+b(b)-34 b(y)532 b(the)f(calls)f(to)h(the)g(in)-34 b(terface)531
+b(routines)h Fr(CVodeCreateB)j Ft(amd)c Fr(CVodeMallocB)k
+Ft(whic)-34 b(h)4000 10649 y(sp)34 b(ecify)406 b(the)h
+Fr(CV)p 11454 10649 382 45 v 459 w(BDF)h Ft(in)-34 b(tegration)407
+b(metho)34 b(d)407 b(with)h Fr(CV)p 28845 10649 V 459
+w(NEWTON)g Ft(iteration,)f(among)h(other)e(things.)547
+b(The)4000 12154 y(dense)508 b(linear)f(solv)-34 b(er)506
+b Fq(cvdense)j Ft(is)e(then)i(initialized)d(b)-34 b(y)508
+b(calling)f(the)h Fr(CVDenseB)i Ft(in)-34 b(terface)508
+b(routine)4000 13660 y(and)405 b(sp)34 b(ecifying)404
+b(a)g(non-)p Fr(NULL)i Ft(Jacobian)e(routine)h Fr(JacB)g
+Ft(and)g(user)f(data)h Fr(data)p Ft(.)5882 15165 y(The)423
+b(tolerances)f(for)g(the)h(in)-34 b(tegration)423 b(of)g(quadrature)g
+(v)-67 b(ariables,)426 b Fr(reltolB)e Ft(and)g Fr(abstolQB)p
+Ft(,)g(are)4000 16671 y(sp)34 b(eci\257ed)377 b(through)h
+Fr(CVodeSetQuadTolerancesB)p Ft(.)384 b(The)377 b(call)f(to)h
+Fr(CVodeSetQuadErrConB)384 b Ft(indicates)4000 18176
+y(that)345 b Fm(\273)400 b Ft(should)344 b(b)34 b(e)344
+b(included)g(in)g(the)g(error)f(test.)518 b(Quadrature)345
+b(computation)g(is)f(initialized)f(b)-34 b(y)344 b(calling)4000
+19682 y Fr(CVodeQuadMallocB)401 b Ft(whic)-34 b(h)397
+b(sp)34 b(eci\257es)395 b(the)h(righ)-34 b(t-hand)397
+b(side)e(of)h(the)g(quadrature)h(equations)f(as)f Fr(fQB)p
+Ft(.)5882 21187 y(The)341 b(actual)f(solution)i(of)e(the)h(bac)-34
+b(kw)g(ard)342 b(problem)e(is)g(acomplished)h(through)h(the)f(call)e
+(to)i Fr(CVodeB)p Ft(.)4000 22693 y(If)377 b(successful,)382
+b Fr(CVodeB)c Ft(returns)f(the)g(solution)h(of)f(the)g(bac)-34
+b(kw)g(ard)377 b(problem)g(at)g(time)f Fr(T0)i Ft(in)e(the)h(v)-34
+b(ector)4000 24198 y Fr(yB)p Ft(.)597 b(The)g(v)-67 b(alues)596
+b(of)g(the)h(quadrature)g(v)-67 b(ariables)596 b(at)g(time)h
+Fr(T0)g Ft(are)f(loaded)h(in)f Fr(qB)h Ft(b)-34 b(y)597
+b(calling)f(the)4000 25704 y(extraction)404 b(routine)g
+Fr(CVodeGetQuadB)p Ft(.)409 b(The)404 b(v)-67 b(alues)404
+b(for)g Fm(G)g Ft(and)h(its)f(gradien)-34 b(t)405 b(are)f(prin)-34
+b(ted)405 b(next.)5882 27209 y(The)484 b(main)h(program)f(con)-34
+b(tin)g(ues)485 b(with)g(a)f(call)f(to)i Fr(CVodeReInitB)j
+Ft(and)d Fr(CVodeQuadReInitB)490 b Ft(to)4000 28715 y(re-initialize)317
+b(the)i(bac)-34 b(kw)g(ard)320 b(memory)f(blo)34 b(c)-34
+b(k)318 b(for)h(a)g(new)g(adjoin)-34 b(t)321 b(computation)g(with)e(a)g
+(di\256eren)-34 b(t)319 b(\257nal)4000 30220 y(time)462
+b(\()p Fr(TB2)p Ft(\),)477 b(follo)-34 b(w)g(ed)463 b(b)-34
+b(y)463 b(a)e(second)i(call)e(to)h Fr(CVodeB)i Ft(and,)477
+b(up)34 b(on)462 b(successful)h(return,)476 b(rep)34
+b(orting)462 b(of)4000 31725 y(the)405 b(new)f(v)-67
+b(alues)404 b(for)g Fm(G)g Ft(and)h(its)f(gradien)-34
+b(t.)5882 33231 y(The)446 b(main)h(program)f(ends)g(b)-34
+b(y)447 b(freeing)f(previously)f(allo)34 b(cated)445
+b(memory)h(b)-34 b(y)446 b(calling)g Fr(CVodeFree)4000
+34736 y Ft(\(for)438 b(the)g Fq(cv)-27 b(odes)439 b Ft(memory)e(for)h
+(the)g(forw)-34 b(ard)439 b(problem\),)446 b Fr(CVadjFree)441
+b Ft(\(for)d(the)g(memory)g(allo)34 b(cated)4000 36242
+y(for)404 b(the)h(com)-34 b(bined)405 b(problem\),)f(and)h
+Fr(N)p 21958 36242 V 458 w(VFree)p 25596 36242 V 460
+w(Serial)h Ft(\(for)f(the)g(v)-67 b(arious)403 b(v)-34
+b(ectors\).)5882 37747 y(The)597 b(user-supplied)h(functions)h
+Fr(f)e Ft(and)h Fr(Jac)g Ft(for)f(the)h(righ)-34 b(t-hand)599
+b(side)e(and)h(Jacobian)f(of)h(the)4000 39253 y(forw)-34
+b(ard)364 b(problem)g(are)f(straigh)-34 b(tforw)g(ard)365
+b(expressions)e(of)h(its)f(mathematical)h(form)-34 b(ulation)365
+b(\(11\).)525 b(The)4000 40758 y(function)477 b Fr(ewt)g
+Ft(is)f(the)g(same)g(as)g(the)h(one)f(for)g Fr(cvdx.c)p
+Ft(.)756 b(The)476 b(function)i Fr(fQ)e Ft(implemen)-34
+b(ts)477 b(\(16\),)494 b(while)4000 42264 y Fr(fB)p Ft(,)404
+b Fr(JacB)p Ft(,)i(and)f Fr(fQB)g Ft(are)e(mere)h(translations)h(of)f
+(the)h(bac)-34 b(kw)g(ard)405 b(problem)f(\(14\))h(and)g(\(15\).)5882
+43769 y(The)f(output)i(generated)f(b)-34 b(y)404 b Fr(cvadx)i
+Ft(is)e(sho)-34 b(wn)406 b(b)34 b(elo)-34 b(w.)p 4000
+46138 17898 45 v 22479 46204 a Fg(cvadx)582 b(sample)g(output)p
+34102 46138 V 4000 46938 45 801 v 51956 46938 V 4000
+48267 45 1329 v 5425 47868 a(Adjoint)h(Sensitivity)f(Example)h(for)e
+(Chemical)i(Kinetics)p 51956 48267 V 4000 49595 V 5425
+49197 a(-------------------------------------------------)p
+51956 49595 V 4000 50923 V 51956 50923 V 4000 52252 V
+4844 51853 a(ODE:)f(dy1/dt)g(=)f(-p1*y1)h(+)g(p2*y2*y3)p
+51956 52252 V 4000 53580 V 7750 53182 a(dy2/dt)g(=)1163
+b(p1*y1)581 b(-)h(p2*y2*y3)g(-)f(p3*\(y2\)^2)p 51956
+53580 V 4000 54909 V 7750 54510 a(dy3/dt)h(=)1163 b(p3*\(y2\)^2)p
+51956 54909 V 4000 56237 V 51956 56237 V 4000 57565 V
+4844 57167 a(Find)582 b(dG/dp)g(for)p 51956 57565 V 4000
+58894 V 7750 58495 a(G)f(=)h(int_t0^tB0)g(g\(t,p,y\))h(dt)p
+51956 58894 V 4000 60222 V 7750 59823 a(g\(t,p,y\))f(=)g(y3)p
+51956 60222 V 4000 61550 V 51956 61550 V 4000 62879 V
+51956 62879 V 4000 64207 V 4844 63808 a(Create)g(and)g(allocate)g
+(CVODES)g(memory)g(for)g(forward)g(runs)p 51956 64207
+V 4000 65535 V 4844 65137 a(Allocate)h(global)f(memory)p
+51956 65535 V 4000 66864 V 4844 66465 a(Forward)h(integration)f(...)g
+(done.)g(ncheck)g(=)f(5)1744 b(G:)f(3.9983e+07)p 51956
+66864 V 4000 68192 V 51956 68192 V 4000 69520 V 4844
+69122 a(Create)582 b(and)g(allocate)g(CVODES)g(memory)g(for)g(backward)
+g(run)p 51956 69520 V 4000 70849 V 4844 70450 a(Integrate)h(backwards)p
+51956 70849 V 4000 72177 V 4844 71779 a
+(--------------------------------------------------------)p
+51956 72177 V 4000 73505 V 4844 73107 a(tB0:)5812 b(4.0000e+07)p
+51956 73505 V 4000 74834 V 4844 74435 a(dG/dp:)4650 b(7.6843e+05)1164
+b(-3.0691e+00)1745 b(5.1150e-04)p 51956 74834 V 4000
+76162 V 4844 75764 a(lambda\(t0\):)g(3.9967e+07)g(3.9967e+07)g
+(3.9967e+07)p 51956 76162 V 4000 77491 V 4844 77092 a
+(--------------------------------------------------------)p
+51956 77491 V 4000 78819 V 51956 78819 V Black 27394
+81741 a Ft(27)p Black eop
+%%Page: 28 32
+28 31 bop Black Black 0 8037 45 1329 v 844 7638 a Fg(Re-initialize)583
+b(CVODES)f(memory)g(for)g(backward)g(run)p 47956 8037
+V 0 9365 V 844 8966 a(Integrate)h(backwards)p 47956 9365
+V 0 10693 V 844 10295 a
+(--------------------------------------------------------)p
+47956 10693 V 0 12022 V 844 11623 a(tB0:)5812 b(4.0000e+07)p
+47956 12022 V 0 13350 V 844 12951 a(dG/dp:)4650 b(1.7341e+02)1164
+b(-5.0590e-04)1745 b(8.4320e-08)p 47956 13350 V 0 14678
+V 844 14280 a(lambda\(t0\):)g(8.4190e+00)g(1.6097e+01)g(1.6097e+01)p
+47956 14678 V 0 16007 V 844 15608 a
+(--------------------------------------------------------)p
+47956 16007 V 0 17335 V 47956 17335 V 0 18663 V 844 18265
+a(Free)582 b(memory)p 47956 18663 V 0 19463 45 801 v
+47956 19463 V 0 19507 48001 45 v Black 23394 81741 a
+Ft(28)p Black eop
+%%Page: 29 33
+29 32 bop Black Black 4000 7638 a Fo(3.2)1495 b(A)499
+b(parallel)g(nonsti\256)h(example:)664 b Fn(pvanx)4000
+9926 y Ft(As)323 b(an)g(example)f(of)h(using)g(the)g
+Fq(cv)-27 b(odes)324 b Ft(adjoin)-34 b(t)324 b(sensitivit)-34
+b(y)323 b(mo)34 b(dule)322 b(with)i(the)f(parallel)e(v)-34
+b(ector)323 b(mo)34 b(d-)4000 11432 y(ule)409 b Fq(nvector)p
+11132 11432 403 45 v 485 w(p)-81 b(arallel)p Ft(,)411
+b(w)-34 b(e)410 b(describ)34 b(e)408 b(a)h(sample)g(program)h(that)g
+(solv)-34 b(es)409 b(the)g(follo)-34 b(wing)410 b(problem:)4000
+12937 y(consider)404 b(the)g(1-D)h(adv)-34 b(ection-di\256usion)405
+b(equation)22371 15345 y Fm(@)67 b(u)p 22371 15886 1405
+49 v 22499 16996 a(@)g(t)24246 16165 y Ft(=)336 b Fm(p)26135
+16347 y Fl(1)26794 15345 y Fm(@)27505 14905 y Fl(2)28030
+15345 y Fm(u)p 26794 15886 1931 49 v 26795 16996 a(@)67
+b(x)28199 16646 y Fl(2)29126 16165 y Ft(+)269 b Fm(p)30948
+16347 y Fl(2)31607 15345 y Fm(@)67 b(u)p 31607 15886
+1405 49 v 31608 16996 a(@)g(x)22239 18493 y Ft(0)336
+b(=)h Fm(x)25154 18675 y Fl(0)26016 18493 y Fp(\267)f
+Fm(x)h Fp(\267)f Fm(x)30297 18675 y Fl(1)31160 18493
+y Ft(=)g(2)22239 20331 y(0)g(=)h Fm(t)24899 20513 y Fl(0)25761
+20331 y Fp(\267)f Fm(t)h Fp(\267)f Fm(t)29532 20513 y
+Fl(1)30394 20331 y Ft(=)h(2)p Fm(:)p Ft(5)202 b Fm(;)49845
+17861 y Ft(\(17\))4000 22853 y(with)328 b(b)34 b(oundary)329
+b(conditions)f Fm(u)p Ft(\()p Fm(t;)202 b(x)20622 23035
+y Fl(0)21148 22853 y Ft(\))337 b(=)f Fm(u)p Ft(\()p Fm(t;)202
+b(x)26070 23035 y Fl(1)26595 22853 y Ft(\))338 b(=)e(0)p
+Fm(;)404 b Fp(8)p Fm(t)327 b Ft(and)i(initial)e(condition)i
+Fm(u)p Ft(\()p Fm(t)44021 23035 y Fl(0)44546 22853 y
+Fm(;)202 b(x)p Ft(\))337 b(=)f Fm(u)48559 23035 y Fl(0)49085
+22853 y Ft(\()p Fm(x)p Ft(\))h(=)4000 24358 y Fm(x)p
+Ft(\(2)270 b Fp(\241)f Fm(x)p Ft(\))p Fm(e)8980 23918
+y Fl(2)p Fk(x)10036 24358 y Ft(.)538 b(Also)404 b(consider)g(the)h
+(function)22377 27503 y Fm(g)43 b Ft(\()p Fm(t)p Ft(\))337
+b(=)25995 25853 y Ff(Z)27207 26204 y Fk(x)27737 26327
+y Fd(1)26668 28602 y Fk(x)27198 28725 y Fd(0)28455 27503
+y Fm(u)p Ft(\()p Fm(t;)202 b(x)p Ft(\))p Fm(dx)g(:)4000
+30796 y Ft(W)-101 b(e)431 b(wish)i(to)f(\257nd,)440 b(through)434
+b(adjoin)-34 b(t)433 b(sensitivit)-34 b(y)432 b(analysis,)439
+b(the)432 b(gradien)-34 b(t)433 b(of)f Fm(g)43 b Ft(\()p
+Fm(t)42524 30978 y Fl(1)43051 30796 y Ft(\))432 b(with)h(resp)34
+b(ect)432 b(to)4000 32301 y Fm(p)337 b Ft(=)f([)p Fm(p)7173
+32483 y Fl(1)7698 32301 y Ft(;)202 b Fm(p)8847 32483
+y Fl(2)9373 32301 y Ft(])403 b(and)i(the)g(p)34 b(erturbation)405
+b(in)f Fm(g)43 b Ft(\()p Fm(t)24613 32483 y Fl(1)25140
+32301 y Ft(\))404 b(due)h(to)f(a)g(p)34 b(erturbation)405
+b Fm(\261)46 b(u)39186 32483 y Fl(0)40116 32301 y Ft(in)404
+b Fm(u)42224 32483 y Fl(0)42750 32301 y Ft(.)5882 33807
+y(The)418 b(approac)-34 b(h)419 b(w)-34 b(e)419 b(tak)-34
+b(e)418 b(in)g(the)h(program)f Fr(pvanx)h Ft(is)f(to)h(\257rst)f(deriv)
+-34 b(e)417 b(an)i(adjoin)-34 b(t)420 b(PDE)d(whic)-34
+b(h)419 b(is)4000 35312 y(then)353 b(discretized)e(in)g(space)h(and)h
+(in)-34 b(tegrated)352 b(bac)-34 b(kw)g(ards)353 b(in)f(time)g(to)g
+(yield)f(the)h(desired)g(sensitivities.)4000 36818 y(A)404
+b(straigh)-34 b(tforw)g(ard)406 b(extension)f(to)f(PDEs)g(of)h(the)f
+(deriv)-67 b(ation)404 b(giv)-34 b(en)404 b(in)g Fp(x)p
+Ft(3.3)g(giv)-34 b(es)18305 39239 y Fm(dg)p 18305 39780
+1253 49 v 18311 40890 a(dp)19690 40059 y Ft(\()p Fm(t)20599
+40241 y Fl(1)21125 40059 y Ft(\))337 b(=)23212 38409
+y Ff(Z)24425 38760 y Fk(t)24765 38883 y Fd(1)23886 41158
+y Fk(t)24226 41281 y Fd(0)25483 40059 y Fm(dt)26754 38409
+y Ff(Z)27966 38760 y Fk(x)28496 38883 y Fd(1)27427 41158
+y Fk(x)27957 41281 y Fd(0)29214 40059 y Fm(dx\271)269
+b Fp(\242)32143 38350 y Ff(\267)32916 39239 y Fm(@)33627
+38799 y Fl(2)34153 39239 y Fm(u)p 32916 39780 1931 49
+v 32917 40890 a(@)67 b(x)34321 40540 y Fl(2)34979 40059
+y Ft(;)35651 39239 y Fm(@)g(u)p 35651 39780 1405 49 v
+35652 40890 a(@)g(x)37188 38350 y Ff(\270)49845 40059
+y Ft(\(18\))4000 43284 y(and)20177 45075 y Fm(\261)46
+b(g)d Fp(j)21720 45257 y Fk(t)22060 45380 y Fd(1)22913
+45075 y Ft(=)24192 43426 y Ff(Z)25404 43776 y Fk(x)25934
+43899 y Fd(1)24866 46175 y Fk(x)25396 46298 y Fd(0)26653
+45075 y Fm(\271)p Ft(\()p Fm(t)28292 45257 y Fl(0)28818
+45075 y Fm(;)202 b(x)p Ft(\))p Fm(\261)46 b(u)31800 45257
+y Fl(0)32325 45075 y Ft(\()p Fm(x)p Ft(\))p Fm(dx)202
+b(;)14022 b Ft(\(19\))4000 47886 y(where)404 b Fm(\271)g
+Ft(is)g(the)h(solution)g(of)f(the)h(adjoin)-34 b(t)405
+b(PDE)21581 50294 y Fm(@)67 b(\271)p 21581 50835 1442
+49 v 21727 51945 a(@)g(t)23425 51114 y Ft(+)269 b Fm(p)25247
+51296 y Fl(1)25905 50294 y Fm(@)26616 49854 y Fl(2)27142
+50294 y Fm(\271)p 25905 50835 1968 49 v 25924 51945 a(@)67
+b(x)27328 51595 y Fl(2)28275 51114 y Fp(\241)269 b Fm(p)30097
+51296 y Fl(2)30755 50294 y Fm(@)67 b(\271)p 30755 50835
+1442 49 v 30774 51945 a(@)g(x)32666 51114 y Ft(=)336
+b(0)21449 53442 y Fm(\271)p Ft(\()p Fm(t)23088 53624
+y Fl(1)23614 53442 y Fm(;)202 b(x)p Ft(\))336 b(=)h(1)21449
+55279 y Fm(\271)p Ft(\()p Fm(t;)202 b(x)24320 55461 y
+Fl(0)24845 55279 y Ft(\))337 b(=)g Fm(\271)p Ft(\()p
+Fm(t;)202 b(x)29804 55461 y Fl(1)30330 55279 y Ft(\))337
+b(=)f(0)202 b Fm(:)49845 52810 y Ft(\(20\))4000 57802
+y(Both)345 b(the)f(forw)-34 b(ard)346 b(problem)e(\(17\))h(and)g(the)g
+(bac)-34 b(kw)g(ard)345 b(problem)f(\(20\))h(are)f(discretized)f(on)i
+(a)f(uniform)4000 59307 y(spatial)430 b(grid)g(of)h(size)e
+Fm(M)15364 59489 y Fk(x)16236 59307 y Ft(+)286 b(2)430
+b(with)h(cen)-34 b(tral)430 b(di\256erencing)g(and)h(with)g(b)34
+b(oundary)431 b(v)-67 b(alues)429 b(eliminated,)4000
+60812 y(lea)-34 b(ving)417 b(ODE)g(systems)h(of)g(size)f
+Fm(N)491 b Ft(=)359 b Fm(M)23391 60994 y Fk(x)24394 60812
+y Ft(eac)-34 b(h.)579 b(As)418 b(alw)-34 b(a)g(ys,)421
+b(w)-34 b(e)418 b(deal)f(with)i(the)f(time)f(quadratures)4000
+62318 y(in)404 b(\(18\))h(b)-34 b(y)405 b(in)-34 b(tro)34
+b(ducing)405 b(the)f(additional)h(equations)19730 65293
+y(_)19470 65613 y Fm(\273)20000 65795 y Fl(1)20863 65613
+y Ft(=)22143 63963 y Ff(Z)23355 64314 y Fk(x)23885 64437
+y Fd(1)22816 66712 y Fk(x)23346 66835 y Fd(0)24603 65613
+y Fm(dx\271)26790 64793 y(@)27501 64353 y Fl(2)28027
+64793 y Fm(u)p 26790 65334 1931 49 v 26791 66444 a(@)67
+b(x)28195 66094 y Fl(2)29055 65613 y Fm(;)1414 b(\273)31336
+65795 y Fl(1)31862 65613 y Ft(\()p Fm(t)32771 65795 y
+Fl(1)33297 65613 y Ft(\))337 b(=)g(0)202 b Fm(;)19730
+68639 y Ft(_)19470 68958 y Fm(\273)20000 69140 y Fl(2)20863
+68958 y Ft(=)22143 67309 y Ff(Z)23355 67659 y Fk(x)23885
+67782 y Fd(1)22816 70058 y Fk(x)23346 70181 y Fd(0)24603
+68958 y Fm(dx\271)26790 68138 y(@)67 b(u)p 26790 68680
+1405 49 v 26791 69790 a(@)g(x)28530 68958 y(;)1413 b(\273)30810
+69140 y Fl(2)31337 68958 y Ft(\()p Fm(t)32246 69140 y
+Fl(1)32771 68958 y Ft(\))337 b(=)g(0)202 b Fm(;)49845
+67285 y Ft(\(21\))4000 72184 y(yielding)22044 73372 y
+Fm(dg)p 22044 73913 1253 49 v 22050 75023 a(dp)23429
+74192 y Ft(\()p Fm(t)24338 74374 y Fl(1)24864 74192 y
+Ft(\))337 b(=)g([)p Fm(\273)27819 74374 y Fl(1)28345
+74192 y Ft(\()p Fm(t)29254 74374 y Fl(0)29780 74192 y
+Ft(\);)202 b Fm(\273)31320 74374 y Fl(2)31846 74192 y
+Ft(\()p Fm(t)32755 74374 y Fl(0)33281 74192 y Ft(\)])4000
+76915 y(The)432 b(space)f(in)-34 b(tegrals)431 b(in)h(\(19\))g(and)g
+(\(21\))g(are)f(ev)-67 b(aluated)431 b(n)-34 b(umerically)-101
+b(,)437 b(on)431 b(the)h(giv)-34 b(en)431 b(spatial)h(mesh,)4000
+78420 y(using)405 b(the)f(trap)34 b(ezoidal)404 b(rule.)p
+Black 27394 81741 a(29)p Black eop
+%%Page: 30 34
+30 33 bop Black Black 1882 7638 a Ft(Note)623 b(that)h
+Fm(\271)p Ft(\()p Fm(t)9514 7820 y Fl(0)10041 7638 y
+Fm(;)202 b(x)11273 7198 y Fj(\244)11798 7638 y Ft(\))623
+b(is)g(nothing)h(but)g(the)g(p)34 b(erturbation)624 b(in)f
+Fm(g)43 b Ft(\()p Fm(t)34234 7820 y Fl(1)34761 7638 y
+Ft(\))623 b(due)g(to)h(a)f(p)34 b(erturbation)0 9143
+y Fm(\261)46 b(u)1279 9325 y Fl(0)1804 9143 y Ft(\()p
+Fm(x)p Ft(\))338 b(=)e Fm(\261)46 b Ft(\()p Fm(x)247
+b Fp(\241)h Fm(x)8936 8704 y Fj(\244)9461 9143 y Ft(\))394
+b(in)f(the)h(initial)f(conditions.)535 b(Therefore,)395
+b Fm(\271)p Ft(\()p Fm(t)31024 9325 y Fl(0)31551 9143
+y Fm(;)202 b(x)p Ft(\))393 b(completely)f(describ)34
+b(es)392 b Fm(\261)46 b(g)d Ft(\()p Fm(t)47002 9325 y
+Fl(1)47529 9143 y Ft(\))0 10649 y(for)404 b(an)-34 b(y)405
+b(p)34 b(erturbation)405 b Fm(\261)46 b(u)12535 10831
+y Fl(0)13060 10649 y Ft(.)1882 12225 y(The)297 b(source)g(co)34
+b(de)297 b(for)g(this)h(example)e(is)h(listed)g(in)h(App.)503
+b(E.)g(Both)297 b(the)h(forw)-34 b(ard)298 b(and)g(the)g(bac)-34
+b(kw)g(ard)0 13731 y(problems)350 b(are)f(solv)-34 b(ed)349
+b(with)h(the)g(option)h(for)e(nonsti\256)i(systems,)360
+b(i.e.)520 b(using)350 b(the)g(Adams)g(metho)34 b(d)350
+b(with)0 15236 y(functional)437 b(iteration)e(for)h(the)g(solution)g
+(of)g(the)g(nonlinear)g(systems.)633 b(The)436 b(o)-34
+b(v)g(erall)435 b(structure)h(of)f(the)0 16741 y Fr(main)345
+b Ft(function)f(is)f(v)-34 b(ery)343 b(similar)f(to)i(that)g(of)g(the)f
+(co)34 b(de)343 b Fr(cvadx)i Ft(discussed)f(previously)f(with)h
+(di\256erences)0 18247 y(arising)487 b(from)g(the)g(use)h(of)f(the)g
+(parallel)f Fq(nvector)k Ft(mo)34 b(dule.)787 b(Unlik)-34
+b(e)486 b Fr(cvadx)p Ft(,)509 b(the)488 b(example)e Fr(pvanx)0
+19752 y Ft(illustrates)463 b(computation)i(of)f(the)g(additional)g
+(quadrature)g(v)-67 b(ariables)462 b(b)-34 b(y)464 b(app)34
+b(ending)464 b Fr(NP)g Ft(equations)0 21258 y(to)365
+b(the)f(adjoin)-34 b(t)366 b(system.)525 b(This)365 b(approac)-34
+b(h)365 b(can)g(b)34 b(e)364 b(a)g(b)34 b(etter)364 b(alternativ)-34
+b(e)364 b(to)h(using)g(sp)34 b(ecial)363 b(treatmen)-34
+b(t)0 22763 y(of)404 b(the)h(quadrature)g(equations)f(when)h(their)f(n)
+-34 b(um)g(b)34 b(er)405 b(is)f(to)34 b(o)405 b(small)e(for)h(parallel)
+g(treatmen)-34 b(t.)1882 24339 y(Besides)337 b(the)i(parallelism)e
+(implemen)-34 b(ted)339 b(b)-34 b(y)338 b Fq(cv)-27 b(odes)339
+b Ft(at)g(the)f Fq(nvector)j Ft(lev)-34 b(el,)350 b Fr(pvanx)339
+b Ft(uses)g Fq(MPI)0 25845 y Ft(calls)308 b(to)h(parallelize)d(the)k
+(calculations)e(of)h(the)g(righ)-34 b(t-hand)310 b(side)f(routines)g
+Fr(f)g Ft(and)g Fr(fB)g Ft(and)h(of)f(the)g(spatial)0
+27350 y(in)-34 b(tegrals)477 b(in)-34 b(v)g(olv)g(ed.)758
+b(The)478 b(forw)-34 b(ard)478 b(problem)f(has)h(size)e
+Fr(NEQ)638 b(=)e(MX)p Ft(,)478 b(while)f(the)h(bac)-34
+b(kw)g(ard)478 b(problem)0 28856 y(has)364 b(size)g Fr(NB)637
+b(=)f(NEQ)i(+)f(NP)p Ft(,)364 b(where)g Fr(NP)637 b(=)g(2)364
+b Ft(is)g(the)g(n)-34 b(um)g(b)34 b(er)365 b(of)f(quadrature)h
+(equations)g(in)f(\(21\).)525 b(The)0 30361 y(use)482
+b(of)g(the)g(total)h(n)-34 b(um)g(b)34 b(er)482 b(of)h(a)-34
+b(v)-67 b(ailable)480 b(pro)34 b(cesses)482 b(on)g(t)-34
+b(w)g(o)483 b(problems)f(of)g(di\256eren)-34 b(t)482
+b(sizes)f(deserv)-34 b(es)0 31867 y(some)356 b(commen)-34
+b(ts,)366 b(as)356 b(this)g(is)f(t)-34 b(ypical)356 b(in)g(adjoin)-34
+b(t)357 b(sensitivit)-34 b(y)356 b(analysis.)522 b(Out)356
+b(of)g(the)h(total)f(n)-34 b(um)g(b)34 b(er)357 b(of)0
+33372 y(a)-34 b(v)-67 b(ailable)460 b(pro)34 b(cesses,)475
+b(namely)461 b Fr(nprocs)p Ft(,)477 b(the)461 b(\257rst)h
+Fr(npes)638 b(=)f(nprocs)h(-)f(1)461 b Ft(pro)34 b(cesses)461
+b(are)f(dedicated)0 34878 y(to)452 b(the)g(in)-34 b(tegration)452
+b(of)g(the)g(ODEs)f(arising)g(from)h(the)g(semi-discretization)f(of)h
+(the)g(PDEs)f(\(17\))h(and)0 36383 y(\(20\))399 b(and)f(receiv)-34
+b(e)396 b(the)j(same)e(load)h(on)g(b)34 b(oth)399 b(the)f(forw)-34
+b(ard)399 b(and)g(bac)-34 b(kw)g(ard)399 b(in)-34 b(tegration)398
+b(phases.)537 b(The)0 37889 y(last)342 b(pro)34 b(cess)340
+b(is)i(reserv)-34 b(ed)340 b(for)i(the)g(in)-34 b(tegration)342
+b(of)g(the)f(quadrature)h(equations)g(\(21\),)355 b(and)342
+b(is)f(therefore)0 39394 y(inactiv)-34 b(e)329 b(during)g(the)g(forw)
+-34 b(ard)330 b(phases.)515 b(Of)329 b(course,)343 b(for)329
+b(problems)g(in)-34 b(v)g(olving)329 b(a)g(m)-34 b(uc)g(h)330
+b(larger)e(n)-34 b(um)g(b)34 b(er)0 40900 y(of)382 b(quadrature)g
+(equations,)387 b(more)381 b(than)i(one)e(pro)34 b(cess)381
+b(could)h(b)34 b(e)382 b(reserv)-34 b(ed)380 b(for)i(their)g(in)-34
+b(tegration.)532 b(An)0 42405 y(alternativ)-34 b(e)482
+b(w)-34 b(ould)483 b(b)34 b(e)481 b(to)i(redistribute)f(the)g
+Fr(NB)g Ft(bac)-34 b(kw)g(ard)483 b(problem)f(v)-67 b(ariables)481
+b(o)-34 b(v)g(er)482 b(all)f(a)-34 b(v)-67 b(ailable)0
+43910 y(pro)34 b(cesses,)376 b(without)c(an)-34 b(y)371
+b(relationship)f(to)h(the)f(load)h(distribution)g(of)g(the)g(forw)-34
+b(ard)371 b(phase.)528 b(Ho)-34 b(w)g(ev)g(er,)0 45416
+y(the)431 b(approac)-34 b(h)432 b(tak)-34 b(en)431 b(in)g
+Fr(pvanx)i Ft(has)e(the)g(adv)-67 b(an)-34 b(tage)432
+b(that)g(the)f(comm)-34 b(unication)432 b(strategy)f(adopted)0
+46921 y(for)399 b(the)f(forw)-34 b(ard)400 b(problem)e(can)h(b)34
+b(e)398 b(directly)f(transfered)i(to)g(comm)-34 b(unication)400
+b(among)f(the)g(\257rst)g Fr(npes)0 48427 y Ft(pro)34
+b(cesses)403 b(during)i(the)g(bac)-34 b(kw)g(ard)405
+b(in)-34 b(tegration)405 b(phase.)1882 50003 y(W)-101
+b(e)441 b(m)-34 b(ust)443 b(also)e(emphasize)g(that,)452
+b(although)443 b(inactiv)-34 b(e)441 b(during)i(the)f(forw)-34
+b(ard)442 b(in)-34 b(tegration)443 b(phase,)0 51508 y(the)586
+b(last)g(pro)34 b(cess)585 b Fe(must)f Ft(participate)i(in)f(that)i
+(phase)f(with)h(a)e Fe(zer)-62 b(o)600 b(lo)-62 b(c)g(al)598
+b(arr)-62 b(ay)600 b(length)p Ft(.)1081 b(This)586 b(is)0
+53014 y(b)34 b(ecause,)409 b(during)g(the)g(bac)-34 b(kw)g(ard)410
+b(in)-34 b(tegration)410 b(phase,)g(this)f(pro)34 b(cess)408
+b(m)-34 b(ust)410 b(ha)-34 b(v)g(e)409 b(its)g(o)-34
+b(wn)409 b(lo)34 b(cal)408 b(cop)-34 b(y)0 54519 y(of)404
+b(v)-67 b(ariables)403 b(\(suc)-34 b(h)406 b(as)e Fr(cvadj)p
+14357 54519 382 45 v 460 w(mem)p Ft(\))h(that)h(w)-34
+b(ere)404 b(set)g(only)g(during)h(the)f(forw)-34 b(ard)405
+b(phase.)1882 56095 y(Using)524 b Fr(MX)h Ft(=)536 b(40)524
+b(on)h(4)f(pro)34 b(ceses,)553 b(the)524 b(gradien)-34
+b(t)525 b(of)g Fm(g)43 b Ft(\()p Fm(t)28715 56292 y Fk(f)29320
+56095 y Ft(\))525 b(with)g(resp)34 b(ect)523 b(to)i(the)f(t)-34
+b(w)g(o)526 b(problem)0 57601 y(parameters)503 b(is)g(obtained)i(as)e
+Fm(dg)43 b(=dp)p Ft(\()p Fm(t)18371 57798 y Fk(f)18977
+57601 y Ft(\))502 b(=)g([)p Fp(\241)p Ft(1)p Fm(:)p Ft(13856;)202
+b Fp(\241)p Ft(1)p Fm(:)p Ft(01023].)835 b(The)504 b(gradien)-34
+b(t)504 b(of)g Fm(g)43 b Ft(\()p Fm(t)44063 57798 y Fk(f)44668
+57601 y Ft(\))504 b(with)0 59106 y(resp)34 b(ect)457
+b(to)h(the)g(initial)f(conditions)h(is)g(sho)-34 b(wn)459
+b(in)f(Fig.)f(4.)699 b(The)458 b(gradien)-34 b(t)458
+b(is)f(plotted)i(sup)34 b(erimp)g(osed)0 60612 y(o)-34
+b(v)g(er)340 b(the)g(initial)g(conditions.)518 b(Sample)340
+b(output)j(generated)d(b)-34 b(y)340 b Fr(pvanx)p Ft(,)355
+b(for)340 b Fr(MX)g Ft(=)d(20,)352 b(is)340 b(sho)-34
+b(wn)342 b(b)34 b(elo)-34 b(w.)p 0 63407 17898 45 v 18479
+63473 a Fg(pvanx)582 b(sample)g(output)p 30102 63407
+V 0 64207 45 801 v 47956 64207 V 0 65535 45 1329 v 844
+65137 a(\(PE#)g(3\))g(Number)g(of)f(check)h(points:)g(6)p
+47956 65535 V 0 66864 V 47956 66864 V 0 68192 V 844 67794
+a(g\(tf\))g(=)g(2.129919e-02)p 47956 68192 V 0 69520
+V 47956 69520 V 0 70849 V 844 70450 a(dgdp\(tf\))p 47956
+70849 V 0 72177 V 2007 71779 a([)f(1]:)h(-1.129221e+00)p
+47956 72177 V 0 73505 V 2007 73107 a([)f(2]:)h(-1.008885e+00)p
+47956 73505 V 0 74834 V 47956 74834 V 0 76162 V 844 75764
+a(mu\(t0\))p 47956 76162 V 0 77491 V 2007 77092 a([)f(1]:)h
+(2.777306e-04)p 47956 77491 V 0 78819 V 2007 78420 a([)f(2]:)h
+(5.619708e-04)p 47956 78819 V Black 23394 81741 a Ft(30)p
+Black eop
+%%Page: 31 35
+31 34 bop Black Black Black 10000 34851 a @beginspecial
+108 @llx 235 @lly 517 @urx 558 @ury 3240 @rwi @setspecial
+%%BeginDocument: pvanx.eps
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: MATLAB, The Mathworks, Inc.
+%%Title: /home/radu/CODES/sundials/cvodes/doc/pvanx.eps
+%%CreationDate: 10/20/2004  08:36:42
+%%DocumentNeededFonts: Helvetica
+%%+ Helvetica-Bold
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%Extensions: CMYK
+%%Pages: 1
+%%BoundingBox:   108   235   517   558
+%%EndComments
+
+%%BeginProlog
+% MathWorks dictionary
+/MathWorks 160 dict begin
+% definition operators
+/bdef {bind def} bind def
+/ldef {load def} bind def
+/xdef {exch def} bdef
+/xstore {exch store} bdef
+% operator abbreviations
+/c  /clip ldef
+/cc /concat ldef
+/cp /closepath ldef
+/gr /grestore ldef
+/gs /gsave ldef
+/mt /moveto ldef
+/np /newpath ldef
+/cm /currentmatrix ldef
+/sm /setmatrix ldef
+/rm /rmoveto ldef
+/rl /rlineto ldef
+/s /show ldef
+/sc {setcmykcolor} bdef
+/sr /setrgbcolor ldef
+/sg /setgray ldef
+/w /setlinewidth ldef
+/j /setlinejoin ldef
+/cap /setlinecap ldef
+/rc {rectclip} bdef
+/rf {rectfill} bdef
+% page state control
+/pgsv () def
+/bpage {/pgsv save def} bdef
+/epage {pgsv restore} bdef
+/bplot /gsave ldef
+/eplot {stroke grestore} bdef
+% orientation switch
+/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def
+% coordinate system mappings
+/dpi2point 0 def
+% font control
+/FontSize 0 def
+/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0]
+  makefont setfont} bdef
+/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse
+  exch dup 3 1 roll findfont dup length dict begin
+  { 1 index /FID ne {def}{pop pop} ifelse } forall
+  /Encoding exch def currentdict end definefont pop} bdef
+/isroman {findfont /CharStrings get /Agrave known} bdef
+/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse
+  exch FMS} bdef
+/csm {1 dpi2point div -1 dpi2point div scale neg translate
+ dup landscapeMode eq {pop -90 rotate}
+  {rotateMode eq {90 rotate} if} ifelse} bdef
+% line types: solid, dotted, dashed, dotdash
+/SO { [] 0 setdash } bdef
+/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
+/DA { [6 dpi2point mul] 0 setdash } bdef
+/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4
+  dpi2point mul] 0 setdash } bdef
+% macros for lines and objects
+/L {lineto stroke} bdef
+/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef
+/AP {{rlineto} repeat} bdef
+/PDlw -1 def
+/W {/PDlw currentlinewidth def setlinewidth} def
+/PP {closepath eofill} bdef
+/DP {closepath stroke} bdef
+/MR {4 -2 roll moveto dup  0 exch rlineto exch 0 rlineto
+  neg 0 exch rlineto closepath} bdef
+/FR {MR stroke} bdef
+/PR {MR fill} bdef
+/L1i {{currentfile picstr readhexstring pop} image} bdef
+/tMatrix matrix def
+/MakeOval {newpath tMatrix currentmatrix pop translate scale
+0 0 1 0 360 arc tMatrix setmatrix} bdef
+/FO {MakeOval stroke} bdef
+/PO {MakeOval fill} bdef
+/PD {currentlinewidth 2 div 0 360 arc fill
+   PDlw -1 eq not {PDlw w /PDlw -1 def} if} def
+/FA {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef
+/PA {newpath tMatrix currentmatrix pop	translate 0 0 moveto scale
+  0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef
+/FAn {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef
+/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale
+  0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef
+/vradius 0 def /hradius 0 def /lry 0 def
+/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def
+/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef
+  /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly
+  vradius add translate hradius vradius scale 0 0 1 180 270 arc 
+  tMatrix setmatrix lrx hradius sub uly vradius add translate
+  hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix
+  lrx hradius sub lry vradius sub translate hradius vradius scale
+  0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub
+  translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix
+  closepath} bdef
+/FRR {MRR stroke } bdef
+/PRR {MRR fill } bdef
+/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix
+  closepath} bdef
+/FlrRR {MlrRR stroke } bdef
+/PlrRR {MlrRR fill } bdef
+/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix
+  closepath} bdef
+/FtbRR {MtbRR stroke } bdef
+/PtbRR {MtbRR fill } bdef
+/stri 6 array def /dtri 6 array def
+/smat 6 array def /dmat 6 array def
+/tmat1 6 array def /tmat2 6 array def /dif 3 array def
+/asub {/ind2 exch def /ind1 exch def dup dup
+  ind1 get exch ind2 get sub exch } bdef
+/tri_to_matrix {
+  2 0 asub 3 1 asub 4 0 asub 5 1 asub
+  dup 0 get exch 1 get 7 -1 roll astore } bdef
+/compute_transform {
+  dmat dtri tri_to_matrix tmat1 invertmatrix 
+  smat stri tri_to_matrix tmat2 concatmatrix } bdef
+/ds {stri astore pop} bdef
+/dt {dtri astore pop} bdef
+/db {2 copy /cols xdef /rows xdef mul dup 3 mul string
+  currentfile exch readhexstring pop
+  dup 0 3 index getinterval /rbmap xdef
+  dup 2 index dup getinterval /gbmap xdef
+  1 index dup 2 mul exch getinterval /bbmap xdef pop pop}bdef
+/it {gs np dtri aload pop moveto lineto lineto cp c
+  cols rows 8 compute_transform 
+  rbmap gbmap bbmap true 3 colorimage gr}bdef
+/il {newpath moveto lineto stroke}bdef
+currentdict end def
+%%EndProlog
+
+%%BeginSetup
+MathWorks begin
+
+0 cap
+
+end
+%%EndSetup
+
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox:   108   235   517   558
+MathWorks begin
+bpage
+%%EndPageSetup
+
+%%BeginObject: obj1
+bplot
+
+/dpi2point 12 def
+portraitMode 0972 6756 csm
+
+  333    52  4908  3876 MR c np
+91 dict begin %Colortable dictionary
+/c0 { 0 0 0 sr} bdef
+/c1 { 1 1 1 sr} bdef
+/c2 { 1 0 0 sr} bdef
+/c3 { 0 1 0 sr} bdef
+/c4 { 0 0 1 sr} bdef
+/c5 { 1 1 0 sr} bdef
+/c6 { 1 0 1 sr} bdef
+/c7 { 0 1 1 sr} bdef
+c0
+1 j
+1 sg
+   0    0 5377 4032 PR
+6 w
+0 3287 4166 0 0 -3287 699 3588 4 MP
+PP
+-4166 0 0 3287 4166 0 0 -3287 699 3588 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+ 699 3588 mt 4865 3588 L
+ 699  301 mt 4865  301 L
+/c8 { 0.000000 0.000000 1.000000 sr} bdef
+c8
+ 699 3588 mt  699  301 L
+4865 3588 mt 4865  301 L
+0 sg
+ 699 3588 mt 4865 3588 L
+c8
+ 699 3588 mt  699  301 L
+0 sg
+ 699 3588 mt  699 3546 L
+ 699  302 mt  699  343 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+ 666 3733 mt 
+(0) s
+1115 3588 mt 1115 3546 L
+1115  302 mt 1115  343 L
+1032 3733 mt 
+(0.2) s
+1532 3588 mt 1532 3546 L
+1532  302 mt 1532  343 L
+1449 3733 mt 
+(0.4) s
+1948 3588 mt 1948 3546 L
+1948  302 mt 1948  343 L
+1865 3733 mt 
+(0.6) s
+2365 3588 mt 2365 3546 L
+2365  302 mt 2365  343 L
+2282 3733 mt 
+(0.8) s
+2782 3588 mt 2782 3546 L
+2782  302 mt 2782  343 L
+2749 3733 mt 
+(1) s
+3198 3588 mt 3198 3546 L
+3198  302 mt 3198  343 L
+3115 3733 mt 
+(1.2) s
+3615 3588 mt 3615 3546 L
+3615  302 mt 3615  343 L
+3532 3733 mt 
+(1.4) s
+4031 3588 mt 4031 3546 L
+4031  302 mt 4031  343 L
+3948 3733 mt 
+(1.6) s
+4448 3588 mt 4448 3546 L
+4448  302 mt 4448  343 L
+4365 3733 mt 
+(1.8) s
+4865 3588 mt 4865 3546 L
+4865  302 mt 4865  343 L
+4832 3733 mt 
+(2) s
+c8
+ 699 3588 mt  740 3588 L
+4865 3588 mt 4823 3588 L
+ 598 3632 mt 
+(0) s
+ 699 1945 mt  740 1945 L
+4865 1945 mt 4823 1945 L
+ 531 1989 mt 
+(20) s
+ 699  302 mt  740  302 L
+4865  302 mt 4823  302 L
+ 531  346 mt 
+(40) s
+0 sg
+ 699 3588 mt 4865 3588 L
+ 699  301 mt 4865  301 L
+c8
+ 699 3588 mt  699  301 L
+4865 3588 mt 4865  301 L
+gs 699 302 4167 3287 MR c np
+1 sg
+102 775 102 595 101 446 102 323 102 221 101 137 102 70 101 15 
+102 -27 102 -60 101 -86 102 -105 101 -118 102 -127 102 -132 101 -134 
+102 -134 101 -132 102 -129 102 -124 101 -118 102 -112 102 -106 101 -100 
+102 -93 101 -86 102 -79 102 -74 101 -67 102 -61 101 -56 102 -51 
+102 -45 101 -41 102 -37 101 -33 102 -29 102 -26 101 -22 102 -20 
+101 -18 699 3588 42 MP stroke
+gr
+
+1 sg
+c8
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+ 476 2020 mt  -90 rotate
+(u) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+ 548 1933 mt  -90 rotate
+(0) s
+90 rotate
+0 sg
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+2741 3894 mt 
+(x) s
+gs 699 302 4167 3287 MR c np
+24 w
+c8
+102 388 102 297 101 223 102 162 102 110 101 69 102 35 101 7 
+102 -13 102 -30 101 -43 102 -53 101 -59 102 -63 102 -66 101 -67 
+102 -67 101 -66 102 -65 102 -62 101 -59 102 -56 102 -53 101 -50 
+102 -46 101 -43 102 -40 102 -37 101 -33 102 -31 101 -28 102 -25 
+102 -23 101 -20 102 -19 101 -16 102 -15 102 -13 101 -11 102 -10 
+101 -9 699 3588 42 MP stroke
+6 w
+gr
+
+c8
+4 w
+DO
+SO
+6 w
+0 sg
+ 699 3588 mt 4865 3588 L
+/c9 { 1.000000 0.000000 0.000000 sr} bdef
+c9
+4865 3588 mt 4865  301 L
+0 sg
+ 699 3588 mt  699 3546 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 120 FMSR
+
+ 666 3733 mt 
+(0) s
+1115 3588 mt 1115 3546 L
+1032 3733 mt 
+(0.2) s
+1532 3588 mt 1532 3546 L
+1449 3733 mt 
+(0.4) s
+1948 3588 mt 1948 3546 L
+1865 3733 mt 
+(0.6) s
+2365 3588 mt 2365 3546 L
+2282 3733 mt 
+(0.8) s
+2782 3588 mt 2782 3546 L
+2749 3733 mt 
+(1) s
+3198 3588 mt 3198 3546 L
+3115 3733 mt 
+(1.2) s
+3615 3588 mt 3615 3546 L
+3532 3733 mt 
+(1.4) s
+4031 3588 mt 4031 3546 L
+3948 3733 mt 
+(1.6) s
+4448 3588 mt 4448 3546 L
+4365 3733 mt 
+(1.8) s
+4865 3588 mt 4865 3546 L
+4832 3733 mt 
+(2) s
+c9
+4865 3588 mt 4823 3588 L
+4899 3632 mt 
+(0) s
+4865 1945 mt 4823 1945 L
+4899 1989 mt 
+(2) s
+4865  302 mt 4823  302 L
+4899  346 mt 
+(4) s
+4865  248 mt 
+(x 10) s
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 80 FMSR
+
+5091  174 mt 
+(-3) s
+gs 699 302 4167 3287 MR c np
+102 178 101 173 102 164 102 158 101 146 102 141 101 126 102 120 
+102 104 101 97 102 81 101 74 102 56 102 51 101 31 102 27 
+101 7 102 3 102 -15 101 -20 102 -37 102 -41 101 -57 102 -60 
+101 -74 102 -76 102 -89 101 -91 102 -101 101 -102 102 -110 102 -110 
+101 -117 102 -115 101 -120 102 -118 102 -120 101 -117 102 -117 800 3473 40 MP stroke
+gr
+
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 144 FMSR
+
+5089 2170 mt  -90 rotate
+(dg/du) s
+90 rotate
+%%IncludeResource: font Helvetica-Bold
+/Helvetica-Bold /ISOLatin1Encoding 108 FMSR
+
+5161 1779 mt  -90 rotate
+(0) s
+90 rotate
+gs 699 302 4167 3287 MR c np
+24 w
+0 -115 800 3579 2 MP stroke
+0 -231 902 3569 2 MP stroke
+0 -349 1003 3558 2 MP stroke
+0 -469 1105 3545 2 MP stroke
+0 -586 1207 3530 2 MP stroke
+0 -706 1308 3514 2 MP stroke
+0 -821 1410 3495 2 MP stroke
+0 -938 1511 3475 2 MP stroke
+0 -1048 1613 3452 2 MP stroke
+0 -1159 1715 3427 2 MP stroke
+0 -1261 1816 3399 2 MP stroke
+0 -1362 1918 3368 2 MP stroke
+0 -1453 2019 3335 2 MP stroke
+0 -1541 2121 3298 2 MP stroke
+0 -1618 2223 3258 2 MP stroke
+0 -1692 2324 3215 2 MP stroke
+0 -1752 2426 3169 2 MP stroke
+0 -1809 2527 3119 2 MP stroke
+0 -1849 2629 3066 2 MP stroke
+0 -1887 2731 3010 2 MP stroke
+0 -1906 2832 2951 2 MP stroke
+0 -1922 2934 2889 2 MP stroke
+0 -1918 3036 2824 2 MP stroke
+0 -1911 3137 2758 2 MP stroke
+0 -1885 3239 2691 2 MP stroke
+0 -1853 3340 2624 2 MP stroke
+0 -1803 3442 2558 2 MP stroke
+0 -1747 3544 2495 2 MP stroke
+0 -1673 3645 2436 2 MP stroke
+0 -1592 3747 2383 2 MP stroke
+0 -1494 3848 2340 2 MP stroke
+0 -1390 3950 2310 2 MP stroke
+0 -1271 4052 2297 2 MP stroke
+0 -1144 4153 2304 2 MP stroke
+0 -1004 4255 2339 2 MP stroke
+0 -858 4356 2408 2 MP stroke
+0 -699 4458 2518 2 MP stroke
+0 -536 4560 2680 2 MP stroke
+0 -363 4661 2903 2 MP stroke
+0 -184 4763 3200 2 MP stroke
+6 w
+gr
+
+
+end
+
+eplot
+%%EndObject
+
+epage
+end
+
+showpage
+
+%%Trailer
+%%EOF
+
+%%EndDocument
+ @endspecial 4000 37463 a Ft(Figure)482 b(4:)696 b(Results)483
+b(for)f(the)h Fr(pvanx)h Ft(example)e(problem.)774 b(The)483
+b(gradien)-34 b(t)483 b(of)g Fm(g)43 b Ft(\()p Fm(t)42294
+37660 y Fk(f)42900 37463 y Ft(\))482 b(with)i(resp)34
+b(ect)482 b(to)4000 38969 y(the)405 b(initial)e(conditions)i
+Fm(u)16081 39151 y Fl(0)17011 38969 y Ft(is)f(sho)-34
+b(wn)406 b(sup)34 b(erimp)g(osed)404 b(o)-34 b(v)g(er)404
+b(the)g(v)-67 b(alues)404 b Fm(u)38520 39151 y Fl(0)39045
+38969 y Ft(.)p Black 4000 43034 45 1329 v 6007 42636
+a Fg([)581 b(3]:)h(8.479539e-04)p 51956 43034 V 4000
+44363 V 6007 43964 a([)f(4]:)h(1.126399e-03)p 51956 44363
+V 4000 45691 V 6007 45293 a([)f(5]:)h(1.394128e-03)p
+51956 45691 V 4000 47019 V 6007 46621 a([)f(6]:)h(1.639588e-03)p
+51956 47019 V 4000 48348 V 6007 47949 a([)f(7]:)h(1.861653e-03)p
+51956 48348 V 4000 49676 V 6007 49278 a([)f(8]:)h(2.047373e-03)p
+51956 49676 V 4000 51004 V 6007 50606 a([)f(9]:)h(2.197987e-03)p
+51956 51004 V 4000 52333 V 6007 51934 a([10]:)g(2.300248e-03)p
+51956 52333 V 4000 53661 V 6007 53263 a([11]:)g(2.357877e-03)p
+51956 53661 V 4000 54989 V 6007 54591 a([12]:)g(2.358565e-03)p
+51956 54989 V 4000 56318 V 6007 55919 a([13]:)g(2.308409e-03)p
+51956 56318 V 4000 57646 V 6007 57248 a([14]:)g(2.197306e-03)p
+51956 57646 V 4000 58975 V 6007 58576 a([15]:)g(2.033385e-03)p
+51956 58975 V 4000 60303 V 6007 59904 a([16]:)g(1.809938e-03)p
+51956 60303 V 4000 61631 V 6007 61233 a([17]:)g(1.536549e-03)p
+51956 61631 V 4000 62960 V 6007 62561 a([18]:)g(1.210884e-03)p
+51956 62960 V 4000 64288 V 6007 63889 a([19]:)g(8.432127e-04)p
+51956 64288 V 4000 65616 V 6007 65218 a([20]:)g(4.362377e-04)p
+51956 65616 V 4000 66416 45 801 v 51956 66416 V 4000
+66460 48001 45 v Black 27394 81741 a Ft(31)p Black eop
+%%Page: 32 36
+32 35 bop Black Black 0 7638 a Fo(3.3)1495 b(An)499 b(SPGMR)e(parallel)
+j(example)e(using)i(the)e(CVBBDPRE)h(mo)42 b(dule:)665
+b Fn(pvakx)0 9926 y Ft(As)404 b(a)g(more)f(elab)34 b(orated)404
+b(adjoin)-34 b(t)405 b(sensitivit)-34 b(y)404 b(parallel)f(example)g(w)
+-34 b(e)405 b(describ)34 b(e)403 b(next)h(the)g Fr(pvakx)h
+Ft(co)34 b(de)0 11432 y(pro)-34 b(vided)503 b(with)g
+Fq(cv)-27 b(odes)p Ft(.)835 b(This)504 b(example)e(mo)34
+b(dels)502 b(an)h(atmospheric)g(release)e(with)i(an)g(adv)-34
+b(ection-)0 12937 y(di\256usion)404 b(PDE)e(in)h(2-D)g(or)g(3-D)g(and)g
+(computes)h(the)f(gradien)-34 b(t)404 b(with)g(resp)34
+b(ect)402 b(to)h(source)g(parameters)0 14443 y(of)338
+b(the)f(space-time)h(a)-34 b(v)g(erage)337 b(of)g(the)h(squared)f(norm)
+h(of)g(the)f(concen)-34 b(tration.)518 b(Giv)-34 b(en)337
+b(a)g(kno)-34 b(wn)339 b(v)-34 b(elo)34 b(cit)-34 b(y)0
+15948 y(\257eld)404 b Fm(v)43 b Ft(\()p Fm(t;)202 b(x)p
+Ft(\),)404 b(the)h(transp)34 b(ort)405 b(equation)f(for)g(the)h(cncen)
+-34 b(tration)405 b Fm(c)p Ft(\()p Fm(t;)202 b(x)p Ft(\))403
+b(in)i(a)f(domain)g(\255)h(is)f(giv)-34 b(en)404 b(b)-34
+b(y)12948 18368 y Fm(@)67 b(c)p 12948 18909 1236 49 v
+12991 20019 a(@)g(t)14586 19188 y Fp(\241)269 b Fm(k)38
+b(\261)46 b(c)269 b Ft(+)g Fm(v)312 b Fp(\242)269 b(r)p
+Fm(c)g Ft(+)g Fm(f)468 b Ft(=)336 b(0)202 b Fm(;)404
+b Ft(in)g(\(0)p Fm(;)202 b(T)168 b Ft(\))271 b Fp(\243)e
+Ft(\255)22819 21304 y Fm(@)67 b(c)p 22717 21845 1439
+49 v 22717 22955 a(@)g(n)24625 22124 y Ft(=)337 b Fm(g)245
+b(;)404 b Ft(on)h(\(0)p Fm(;)202 b(T)168 b Ft(\))270
+b Fp(\243)f Fm(@)67 b Ft(\255)21700 24452 y Fm(c)336
+b Ft(=)h Fm(c)24366 24634 y Fl(0)24891 24452 y Ft(\()p
+Fm(x)p Ft(\))202 b Fm(;)404 b Ft(in)g(\255)h(at)f Fm(t)337
+b Ft(=)f(0)202 b Fm(;)45845 21518 y Ft(\(22\))0 27189
+y(where)550 b(\255)h(is)f(a)g(b)34 b(o)-34 b(x)551 b(in)f
+Fc(R)12503 26749 y Fl(2)13580 27189 y Ft(or)g Fc(R)16086
+26749 y Fl(3)17162 27189 y Ft(and)i Fm(n)d Ft(is)i(the)f(normal)h(to)f
+(the)h(b)34 b(oundary)551 b(of)g(\255.)978 b(W)-101 b(e)549
+b(assume)0 28695 y(homogeneous)466 b(b)34 b(oundary)466
+b(conditions)h(\()p Fm(g)482 b Ft(=)439 b(0\))466 b(and)g(a)f(zero)f
+(initial)h(concen)-34 b(tration)467 b(ev)-34 b(erywhere)464
+b(in)0 30200 y(\255)417 b(\()p Fm(c)2288 30382 y Fl(0)2814
+30200 y Ft(\()p Fm(x)p Ft(\))357 b(=)h(0\).)576 b(The)417
+b(wind)g(\257eld)g(has)g(only)f(a)g(nonzero)h(comp)34
+b(onen)-34 b(t)418 b(in)e(the)h Fm(x)f Ft(direction)h(giv)-34
+b(en)416 b(b)-34 b(y)417 b(a)0 31706 y(P)-34 b(oiseuille)403
+b(pro\257le)h(along)h(the)f(direction)g Fm(y)43 b Ft(.)1882
+33211 y(Using)404 b(adjoin)-34 b(t)406 b(sensitivit)-34
+b(y)404 b(analysis,)g(the)g(gradien)-34 b(t)405 b(of)15596
+36626 y Fm(G)p Ft(\()p Fm(p)p Ft(\))338 b(=)19851 35806
+y(1)p 19851 36348 607 49 v 19851 37458 a(2)20792 34976
+y Ff(Z)22004 35327 y Fk(T)21465 37725 y Fl(0)22940 34976
+y Ff(Z)23613 37725 y Fl(\255)24550 36626 y Fp(k)p Fm(c)p
+Ft(\()p Fm(t;)202 b(x)p Ft(\))p Fp(k)28899 36126 y Fl(2)29627
+36626 y Fm(d)p Ft(\255)g Fm(dt)13441 b Ft(\(23\))0 39842
+y(is)404 b(obtained)h(as)12317 40795 y Fm(dG)p 12301
+41336 1617 49 v 12301 42446 a(dp)13542 42628 y Fk(i)14387
+41615 y Ft(=)15666 39965 y Ff(Z)16340 42714 y Fk(t)16937
+39965 y Ff(Z)17610 42714 y Fl(\255)18547 41615 y Fm(\270)p
+Ft(\()p Fm(t;)202 b(x)p Ft(\))p Fm(\261)46 b Ft(\()p
+Fm(x)23615 41797 y Fk(i)23991 41615 y Ft(\))202 b Fm(d)p
+Ft(\255)g Fm(dt)337 b Ft(=)29057 39965 y Ff(Z)29731 42714
+y Fk(t)30328 41615 y Fm(\270)p Ft(\()p Fm(t;)202 b(x)33176
+41797 y Fk(i)33551 41615 y Ft(\))g Fm(dt)g(;)10013 b
+Ft(\(24\))0 44359 y(where)404 b Fm(x)4198 44541 y Fk(i)4978
+44359 y Ft(is)f(the)i(lo)34 b(cation)404 b(of)g(the)h(source)f(of)g(in)
+-34 b(tensit)g(y)405 b Fm(p)27025 44541 y Fk(i)27805
+44359 y Ft(and)g Fm(\270)f Ft(is)g(solution)h(of)f(the)h(adjoin)-34
+b(t)405 b(PDE)12200 47532 y Fp(\241)13276 46712 y Fm(@)67
+b(\270)p 13276 47253 1418 49 v 13411 48363 a(@)g(t)15096
+47532 y Fp(\241)269 b Fm(k)38 b Ft(\242)p Fm(\270)270
+b Fp(\241)f Fm(v)312 b Fp(\242)269 b Fm(\270)337 b Ft(=)f
+Fm(c)p Ft(\()p Fm(t;)202 b(x)p Ft(\))g Fm(;)404 b Ft(in)g(\()p
+Fm(T)101 b(;)202 b Ft(0\))270 b Fp(\243)f Ft(\255)17168
+49860 y(\()p Fm(k)38 b Fp(r)p Fm(\270)270 b Ft(+)f Fm(v)43
+b(\270)p Ft(\))270 b Fp(\242)f Fm(n)336 b Ft(=)h(0)202
+b Fm(;)404 b Ft(on)g(\(0)p Fm(;)202 b(T)168 b Ft(\))271
+b Fp(\243)e Fm(@)67 b Ft(\255)24213 51697 y Fm(\270)336
+b Ft(=)h(0)202 b Fm(;)404 b Ft(in)g(\255)g(at)h Fm(t)336
+b Ft(=)h Fm(T)370 b(:)45845 49312 y Ft(\(25\))0 54333
+y(The)351 b(PDE)g(\(22\))g(is)g(semi-discretized)e(in)i(space)g(with)g
+(cen)-34 b(tral)351 b(\257nite)g(di\256erences,)360 b(with)352
+b(the)f(b)34 b(oundary)0 55838 y(conditions)486 b(explicitely)d(tak)-34
+b(en)486 b(in)-34 b(to)486 b(accoun)-34 b(t)486 b(b)-34
+b(y)486 b(using)g(la)-34 b(y)g(ers)484 b(of)i(ghost)g(cells)e(in)h(ev)
+-34 b(ery)484 b(direction.)0 57344 y(If)456 b(the)h(direction)f
+Fm(x)9203 56904 y Fk(i)10034 57344 y Ft(of)h(\255)f(is)g(discretized)f
+(in)-34 b(to)457 b Fm(m)23698 57526 y Fk(i)24530 57344
+y Ft(in)-34 b(terv)-67 b(als,)469 b(this)456 b(leads)g(to)h(a)f(system)
+g(of)h(ODEs)f(of)0 58849 y(dimension)383 b Fm(N)469 b
+Ft(=)8431 57940 y Ff(Q)9576 58291 y Fk(d)9576 59208 y
+Fl(1)10115 58849 y Ft(\()p Fm(m)11650 59031 y Fk(i)12252
+58849 y Ft(+)226 b(1\),)387 b(with)c Fm(d)336 b Ft(=)h(2,)386
+b(or)c Fm(d)337 b Ft(=)f(3.)532 b(The)382 b(source)g(term)h
+Fm(f)513 b Ft(is)382 b(parameterized)g(as)g(a)0 60355
+y(piecewise)349 b(constan)-34 b(t)351 b(function)g(and)f(yielding)f
+Fm(N)482 b Ft(parameters)350 b(in)f(the)h(problem.)521
+b(The)350 b(nominal)g(v)-67 b(alues)0 61860 y(of)404
+b(the)h(source)f(parameters)g(corrsp)34 b(ond)404 b(to)h(t)-34
+b(w)g(o)405 b(Gaussian)g(sources.)1882 63366 y(The)335
+b(adjoin)-34 b(t)336 b(PDE)f(\(25\))g(is)g(discretized)f(to)h(a)g
+(system)g(of)g(ODEs)f(in)h(a)g(similar)e(fashion.)517
+b(The)335 b(space)0 64871 y(in)-34 b(tegrals)399 b(in)g(\(23\))h(and)g
+(\(24\))g(are)e(simply)h(appro)-34 b(ximated)400 b(b)-34
+b(y)399 b(their)g(Riemann)g(sums,)i(while)e(the)g(time)0
+66377 y(in)-34 b(tegrals)404 b(are)g(resolv)-34 b(ed)403
+b(b)-34 b(y)405 b(app)34 b(ending)405 b(pure)f(quadrature)h(equations)g
+(to)f(the)h(systems)f(of)h(ODEs.)1882 67882 y(The)455
+b(co)34 b(de)454 b(for)h(this)g(example)e(is)i(listed)f(in)h(App.)690
+b(F.)g(It)455 b(uses)g(BDF)f(with)h(the)g Fq(cvspgmr)h
+Ft(linear)0 69388 y(solv)-34 b(er)328 b(and)i(the)f Fq(cvbbdpre)h
+Ft(preconditioner)f(for)g(b)34 b(oth)329 b(the)g(forw)-34
+b(ard)330 b(and)g(the)f(bac)-34 b(kw)g(ard)330 b(in)-34
+b(tegration)0 70893 y(phases.)1060 b(The)578 b(v)-67
+b(alue)577 b(of)h Fm(G)f Ft(is)h(computed)g(on)g(the)g(forw)-34
+b(ard)579 b(phase)f(as)g(a)g(quadrature,)621 b(while)578
+b(the)0 72399 y(comp)34 b(onen)-34 b(ts)603 b(of)f(the)g(gradien)-34
+b(t)602 b Fm(dG=dP)770 b Ft(are)601 b(computed)i(as)e(quadratures)i
+(during)f(the)g(bac)-34 b(kw)g(ard)0 73904 y(in)g(tegration)405
+b(phase.)539 b(All)404 b(quadrature)g(v)-67 b(ariables)403
+b(are)h(included)g(in)g(the)h(corresp)34 b(onding)404
+b(error)f(tests.)1882 75409 y(Comm)-34 b(unication)477
+b(b)34 b(et)-34 b(w)g(een)477 b(pro)34 b(cesses)475 b(for)h(the)g(ev)
+-67 b(aluation)476 b(of)g(the)g(ODE)f(righ)-34 b(t-hand)478
+b(sides)e(in-)0 76915 y(v)-34 b(olv)g(es)340 b(passing)h(the)g
+(solution)g(on)g(the)f(lo)34 b(cal)340 b(b)34 b(oundaries)341
+b(\(lines)f(in)g(2-D,)g(surfaces)h(in)f(3-D\))h(to)f(the)h(4)g(\(6)0
+78420 y(in)391 b(3-D\))g(neigh)-34 b(b)34 b(oring)392
+b(pro)34 b(cesses.)533 b(This)392 b(is)f(implemen)-34
+b(ted)391 b(in)g(the)h(function)g Fr(f)p 36539 78420
+382 45 v 459 w(comm)p Ft(,)j(called)390 b(in)h Fr(f)g
+Ft(and)p Black 23394 81741 a(32)p Black eop
+%%Page: 33 37
+33 36 bop Black Black Black 4000 25053 a @beginspecial
+14 @llx 14 @lly 792 @urx 316 @ury 4320 @rwi @setspecial
+%%BeginDocument: pvakx2D.eps
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.12 by Peter Kirchgessner
+%%Title: /home/radu/CODES/sundials/cvodes/doc/pvakx2D.eps
+%%CreationDate: Mon Nov 29 13:19:17 2004
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 792 316
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228 14.173228 translate
+% Translate to begin of first scanline
+0.000000 301.200000 translate
+777.120000 -301.200000 scale
+% Image geometry
+3238 1255 8
+% Transformation matrix
+[ 3238 0 0 1255 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 3238 string def
+/gstr 3238 string def
+/bstr 3238 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:       769737 ASCII Bytes
+colorimage
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$j8],ZJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$jo>>\JcC<$JcC<$RK%d~>
+JcC<$JcC<$JcC<$j8],ZJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$jo>>\JcC<$JcC<$RK%d~>
+JcC<$JcC<$JcC<$j8],ZJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$jo>>\JcC<$JcC<$RK%d~>
+JcC<$JcC<$JcC<$j8],ZJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$jo>>\JcC<$JcC<$RK%d~>
+JcC<$JcC<$JcC<$j8],ZJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$jo>>\JcC<$JcC<$RK%d~>
+JcC<$JcC<$JcC<$j8],ZJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$jo>>\JcC<$JcC<$RK%d~>
+JcC<$JcC<$JcC<$l2UV\s8VrrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$nc/Ids8VrrJcC<$
+JcC<$TDsE~>
+JcC<$JcC<$JcC<$l2UV\s8VrrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$nc/Ids8VrrJcC<$
+JcC<$TDsE~>
+JcC<$JcC<$JcC<$l2UV\s8VrrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$nc/Ids8VrrJcC<$
+JcC<$TDsE~>
+JcC<$JcC<$JcC<$l2UV\s8VrrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$nc/Ids8VrrJcC<$
+JcC<$TDsE~>
+JcC<$JcC<$JcC<$l2UV\s8VrrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$nc/Ids8VrrJcC<$
+JcC<$TDsE~>
+JcC<$JcC<$JcC<$l2UV\s8VrrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$nc/Ids8VrrJcC<$
+JcC<$TDsE~>
+JcC<$JcC<$JcC<$nc/Cbq>^HprVufrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$qu?Nnq>^Hp
+rVufrJcC<$JcC<$U]5i~>
+JcC<$JcC<$JcC<$nc/Cbq>^HprVufrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$qu?Nnq>^Hp
+rVufrJcC<$JcC<$U]5i~>
+JcC<$JcC<$JcC<$nc/Cbq>^HprVufrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$qu?Nnq>^Hp
+rVufrJcC<$JcC<$U]5i~>
+JcC<$JcC<$JcC<$nc/Cbq>^HprVufrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$qu?Nnq>^Hp
+rVufrJcC<$JcC<$U]5i~>
+JcC<$JcC<$JcC<$nc/Cbq>^HprVufrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$qu?Nnq>^Hp
+rVufrJcC<$JcC<$U]5i~>
+JcC<$JcC<$JcC<$nc/Cbq>^HprVufrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$qu?Nnq>^Hp
+rVufrJcC<$JcC<$U]5i~>
+JcC<$JcC<$JcC<$p](*jnc/Uhq>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCH(qZ-6frrDlp
+r;_EKJcC<$JcDYJJ,~>
+JcC<$JcC<$JcC<$p](*jnc/Uhq>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCH(qZ-6frrDlp
+r;_EKJcC<$JcDYJJ,~>
+JcC<$JcC<$JcC<$p](*jnc/Uhq>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCH(qZ-6frrDlp
+r;_EKJcC<$JcDYJJ,~>
+JcC<$JcC<$JcC<$p](*jnc/Uhq>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCH(qZ-6frrDlp
+r;_EKJcC<$JcDYJJ,~>
+JcC<$JcC<$JcC<$p](*jnc/Uhq>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCH(qZ-6frrDlp
+r;_EKJcC<$JcDYJJ,~>
+JcC<$JcC<$JcC<$p](*jnc/Uhq>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCH(qZ-6frrDlp
+r;_EKJcC<$JcDYJJ,~>
+JcC<$JcC<$JcC<$rVu`pli6tbp&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCf2pAjgbr;cZn
+rrE*!r;_EKJcC<$JcDeNJ,~>
+JcC<$JcC<$JcC<$rVu`pli6tbp&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCf2pAjgbr;cZn
+rrE*!r;_EKJcC<$JcDeNJ,~>
+JcC<$JcC<$JcC<$rVu`pli6tbp&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCf2pAjgbr;cZn
+rrE*!r;_EKJcC<$JcDeNJ,~>
+JcC<$JcC<$JcC<$rVu`pli6tbp&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCf2pAjgbr;cZn
+rrE*!r;_EKJcC<$JcDeNJ,~>
+JcC<$JcC<$JcC<$rVu`pli6tbp&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCf2pAjgbr;cZn
+rrE*!r;_EKJcC<$JcDeNJ,~>
+JcC<$JcC<$JcC<$rVu`pli6tbp&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCf2pAjgbr;cZn
+rrE*!r;_EKJcC<$JcDeNJ,~>
+JcC<$JcC<$JcCH(q#KOVrrDThr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$RK*-al2U\^p](6n
+rVufrJcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcCH(q#KOVrrDThr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$RK*-al2U\^p](6n
+rVufrJcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcCH(q#KOVrrDThr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$RK*-al2U\^p](6n
+rVufrJcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcCH(q#KOVrrDThr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$RK*-al2U\^p](6n
+rVufrJcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcCH(q#KOVrrDThr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$RK*-al2U\^p](6n
+rVufrJcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcCH(q#KOVrrDThr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$RK*-al2U\^p](6n
+rVufrJcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcCZ.qZ,IPrrDHdr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$V>p>kiW&oXmJm1d
+JcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcCZ.qZ,IPrrDHdr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$V>p>kiW&oXmJm1d
+JcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcCZ.qZ,IPrrDHdr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$V>p>kiW&oXmJm1d
+JcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcCZ.qZ,IPrrDHdr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$V>p>kiW&oXmJm1d
+JcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcCZ.qZ,IPrrDHdr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$V>p>kiW&oXmJm1d
+JcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcCZ.qZ,IPrrDHdr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$V>p>kiW&oXmJm1d
+JcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcCl4qZ,7JrrD<`r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$YQ+J"g&M'Pli6n`
+JcC<$JcC<$[Jta~>
+JcC<$JcC<$JcCl4qZ,7JrrD<`r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$YQ+J"g&M'Pli6n`
+JcC<$JcC<$[Jta~>
+JcC<$JcC<$JcCl4qZ,7JrrD<`r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$YQ+J"g&M'Pli6n`
+JcC<$JcC<$[Jta~>
+JcC<$JcC<$JcCl4qZ,7JrrD<`r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$YQ+J"g&M'Pli6n`
+JcC<$JcC<$[Jta~>
+JcC<$JcC<$JcCl4qZ,7JrrD<`r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$YQ+J"g&M'Pli6n`
+JcC<$JcC<$[Jta~>
+JcC<$JcC<$JcCl4qZ,7JrrD<`r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$YQ+J"g&M'Pli6n`
+JcC<$JcC<$[Jta~>
+JcC<$JcC<$JcD):qZ,%DrrD0\r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$\c;O,e,TFJkPtJ\
+JcC<$JcC<$\c70~>
+JcC<$JcC<$JcD):qZ,%DrrD0\r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$\c;O,e,TFJkPtJ\
+JcC<$JcC<$\c70~>
+JcC<$JcC<$JcD):qZ,%DrrD0\r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$\c;O,e,TFJkPtJ\
+JcC<$JcC<$\c70~>
+JcC<$JcC<$JcD):qZ,%DrrD0\r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$\c;O,e,TFJkPtJ\
+JcC<$JcC<$\c70~>
+JcC<$JcC<$JcD):qZ,%DrrD0\r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$\c;O,e,TFJkPtJ\
+JcC<$JcC<$\c70~>
+JcC<$JcC<$JcD):qZ,%DrrD0\r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$\c;O,e,TFJkPtJ\
+JcC<$JcC<$\c70~>
+JcC<$JcC<$JcDABq#JV<rrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$_uKH2dJs4Hl2U\^
+s8W#tJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcDABq#JV<rrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$_uKH2dJs4Hl2U\^
+s8W#tJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcDABq#JV<rrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$_uKH2dJs4Hl2U\^
+s8W#tJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcDABq#JV<rrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$_uKH2dJs4Hl2U\^
+s8W#tJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcDABq#JV<rrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$_uKH2dJs4Hl2U\^
+s8W#tJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcDABq#JV<rrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$_uKH2dJs4Hl2U\^
+s8W#tJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcDSHqZ+h>r;cfrrrCmTr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$c2[Y at a8c/>
+huEWTJcC<$JcC<$_>f#~>
+JcC<$JcC<$JcDSHqZ+h>r;cfrrrCmTr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$c2[Y at a8c/>
+huEWTJcC<$JcC<$_>f#~>
+JcC<$JcC<$JcDSHqZ+h>r;cfrrrCmTr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$c2[Y at a8c/>
+huEWTJcC<$JcC<$_>f#~>
+JcC<$JcC<$JcDSHqZ+h>r;cfrrrCmTr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$c2[Y at a8c/>
+huEWTJcC<$JcC<$_>f#~>
+JcC<$JcC<$JcDSHqZ+h>r;cfrrrCmTr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$c2[Y at a8c/>
+huEWTJcC<$JcC<$_>f#~>
+JcC<$JcC<$JcDSHqZ+h>r;cfrrrCmTr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$c2[Y at a8c/>
+huEWTJcC<$JcC<$_>f#~>
+JcC<$JcC<$JcDeNqZ+>0rrCaPr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$fDk^J_>jN8g].9R
+JcC<$JcC<$_uG5~>
+JcC<$JcC<$JcDeNqZ+>0rrCaPr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$fDk^J_>jN8g].9R
+JcC<$JcC<$_uG5~>
+JcC<$JcC<$JcDeNqZ+>0rrCaPr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$fDk^J_>jN8g].9R
+JcC<$JcC<$_uG5~>
+JcC<$JcC<$JcDeNqZ+>0rrCaPr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$fDk^J_>jN8g].9R
+JcC<$JcC<$_uG5~>
+JcC<$JcC<$JcDeNqZ+>0rrCaPr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$fDk^J_>jN8g].9R
+JcC<$JcC<$_uG5~>
+JcC<$JcC<$JcDeNqZ+>0rrCaPr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$fDk^J_>jN8g].9R
+JcC<$JcC<$_uG5~>
+JcC<$JcC<$JcE(Vq#J\>rrDHdrrDfnrrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$iW&cT
+s8W*!_>jH6g&M!NJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcE(Vq#J\>rrDHdrrDfnrrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$iW&cT
+s8W*!_>jH6g&M!NJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcE(Vq#J\>rrDHdrrDfnrrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$iW&cT
+s8W*!_>jH6g&M!NJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcE(Vq#J\>rrDHdrrDfnrrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$iW&cT
+s8W*!_>jH6g&M!NJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcE(Vq#J\>rrDHdrrDfnrrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$iW&cT
+s8W*!_>jH6g&M!NJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcE(Vq#J\>rrDHdrrDfnrrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$iW&cT
+s8W*!_>jH6g&M!NJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcE:\qZ+\:rrDBbrrD`lrrCsVr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$li6h^
+\,ZC,g&M'Ps8W#tJcC<$JcC<$bQ!(~>
+JcC<$JcC<$JcE:\qZ+\:rrDBbrrD`lrrCsVr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$li6h^
+\,ZC,g&M'Ps8W#tJcC<$JcC<$bQ!(~>
+JcC<$JcC<$JcE:\qZ+\:rrDBbrrD`lrrCsVr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$li6h^
+\,ZC,g&M'Ps8W#tJcC<$JcC<$bQ!(~>
+JcC<$JcC<$JcE:\qZ+\:rrDBbrrD`lrrCsVr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$li6h^
+\,ZC,g&M'Ps8W#tJcC<$JcC<$bQ!(~>
+JcC<$JcC<$JcE:\qZ+\:rrDBbrrD`lrrCsVr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$li6h^
+\,ZC,g&M'Ps8W#tJcC<$JcC<$bQ!(~>
+JcC<$JcC<$JcE:\qZ+\:rrDBbrrD`lrrCsVr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$li6h^
+\,ZC,g&M'Ps8W#tJcC<$JcC<$bQ!(~>
+JcC<$JcC<$JcELbqZ*VqrrC=Dr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$p&FgfZ2ah(fDkjN
+rVufrJcC<$JcC<$ci8L~>
+JcC<$JcC<$JcELbqZ*VqrrC=Dr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$p&FgfZ2ah(fDkjN
+rVufrJcC<$JcC<$ci8L~>
+JcC<$JcC<$JcELbqZ*VqrrC=Dr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$p&FgfZ2ah(fDkjN
+rVufrJcC<$JcC<$ci8L~>
+JcC<$JcC<$JcELbqZ*VqrrC=Dr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$p&FgfZ2ah(fDkjN
+rVufrJcC<$JcC<$ci8L~>
+JcC<$JcC<$JcELbqZ*VqrrC=Dr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$p&FgfZ2ah(fDkjN
+rVufrJcC<$JcC<$ci8L~>
+JcC<$JcC<$JcELbqZ*VqrrC=Dr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$p&FgfZ2ah(fDkjN
+rVufrJcC<$JcC<$ci8L~>
+JcC<$JcC<$JcEdjq#JV<r;b[RrrC1 at r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$s8VrrWW2tu
+c2[_BJcC<$JcC<$e,Op~>
+JcC<$JcC<$JcEdjq#JV<r;b[RrrC1 at r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$s8VrrWW2tu
+c2[_BJcC<$JcC<$e,Op~>
+JcC<$JcC<$JcEdjq#JV<r;b[RrrC1 at r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$s8VrrWW2tu
+c2[_BJcC<$JcC<$e,Op~>
+JcC<$JcC<$JcEdjq#JV<r;b[RrrC1 at r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$s8VrrWW2tu
+c2[_BJcC<$JcC<$e,Op~>
+JcC<$JcC<$JcEdjq#JV<r;b[RrrC1 at r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$s8VrrWW2tu
+c2[_BJcC<$JcC<$e,Op~>
+JcC<$JcC<$JcEdjq#JV<r;b[RrrC1 at r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$s8VrrWW2tu
+c2[_BJcC<$JcC<$e,Op~>
+JcC<$JcC<$JcF!pqZ*,crrD6^rrD$Xrr at WMJcC<$JcC<$JcC<$JcC<$JcC<$JcCN*qZ*DkrrC1@
+r;_EKJcC<$JcF@%J,~>
+JcC<$JcC<$JcF!pqZ*,crrD6^rrD$Xrr at WMJcC<$JcC<$JcC<$JcC<$JcC<$JcCN*qZ*DkrrC1@
+r;_EKJcC<$JcF@%J,~>
+JcC<$JcC<$JcF!pqZ*,crrD6^rrD$Xrr at WMJcC<$JcC<$JcC<$JcC<$JcC<$JcCN*qZ*DkrrC1@
+r;_EKJcC<$JcF@%J,~>
+JcC<$JcC<$JcF!pqZ*,crrD6^rrD$Xrr at WMJcC<$JcC<$JcC<$JcC<$JcC<$JcCN*qZ*DkrrC1@
+r;_EKJcC<$JcF@%J,~>
+JcC<$JcC<$JcF!pqZ*,crrD6^rrD$Xrr at WMJcC<$JcC<$JcC<$JcC<$JcC<$JcCN*qZ*DkrrC1@
+r;_EKJcC<$JcF@%J,~>
+JcC<$JcC<$JcF!pqZ*,crrD6^rrD$Xrr at WMJcC<$JcC<$JcC<$JcC<$JcC<$JcCN*qZ*DkrrC1@
+r;_EKJcC<$JcF@%J,~>
+JcC<$JcC<$JcF4!qZ+h>rrC=DrrD0\rrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcCr6pAgic
+rrC%<rr at WMJcC<$JcFF'J,~>
+JcC<$JcC<$JcF4!qZ+h>rrC=DrrD0\rrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcCr6pAgic
+rrC%<rr at WMJcC<$JcFF'J,~>
+JcC<$JcC<$JcF4!qZ+h>rrC=DrrD0\rrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcCr6pAgic
+rrC%<rr at WMJcC<$JcFF'J,~>
+JcC<$JcC<$JcF4!qZ+h>rrC=DrrD0\rrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcCr6pAgic
+rrC%<rr at WMJcC<$JcFF'J,~>
+JcC<$JcC<$JcF4!qZ+h>rrC=DrrD0\rrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcCr6pAgic
+rrC%<rr at WMJcC<$JcFF'J,~>
+JcC<$JcC<$JcF4!qZ+h>rrC=DrrD0\rrD$Xr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcCr6pAgic
+rrC%<rr at WMJcC<$JcFF'J,~>
+JcC<$JcC<$JcFF'qZ+\:rrC7BrrBh6r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcD;@qZ)o]rrC1@
+r;cltr;_EKJcC<$JcFR+J,~>
+JcC<$JcC<$JcFF'qZ+\:rrC7BrrBh6r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcD;@qZ)o]rrC1@
+r;cltr;_EKJcC<$JcFR+J,~>
+JcC<$JcC<$JcFF'qZ+\:rrC7BrrBh6r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcD;@qZ)o]rrC1@
+r;cltr;_EKJcC<$JcFR+J,~>
+JcC<$JcC<$JcFF'qZ+\:rrC7BrrBh6r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcD;@qZ)o]rrC1@
+r;cltr;_EKJcC<$JcFR+J,~>
+JcC<$JcC<$JcFF'qZ+\:rrC7BrrBh6r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcD;@qZ)o]rrC1@
+r;cltr;_EKJcC<$JcFR+J,~>
+JcC<$JcC<$JcFF'qZ+\:rrC7BrrBh6r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcD;@qZ)o]rrC1@
+r;cltr;_EKJcC<$JcFR+J,~>
+JcC<$JcC<$JcF^/q#H9OrrB\2r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcDYJq#HQWrrBh6r;_EK
+JcC<$JcF^/J,~>
+JcC<$JcC<$JcF^/q#H9OrrB\2r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcDYJq#HQWrrBh6r;_EK
+JcC<$JcF^/J,~>
+JcC<$JcC<$JcF^/q#H9OrrB\2r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcDYJq#HQWrrBh6r;_EK
+JcC<$JcF^/J,~>
+JcC<$JcC<$JcF^/q#H9OrrB\2r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcDYJq#HQWrrBh6r;_EK
+JcC<$JcF^/J,~>
+JcC<$JcC<$JcF^/q#H9OrrB\2r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcDYJq#HQWrrBh6r;_EK
+JcC<$JcF^/J,~>
+JcC<$JcC<$JcF^/q#H9OrrB\2r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcDYJq#HQWrrBh6r;_EK
+JcC<$JcF^/J,~>
+JcC<$JcC<$JcFp5qZ+b<r;aP2rrC[NrrD*Zr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcE"TqZ)QS
+r;aJ0r;_EKJcC<$JcFj3J,~>
+JcC<$JcC<$JcFp5qZ+b<r;aP2rrC[NrrD*Zr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcE"TqZ)QS
+r;aJ0r;_EKJcC<$JcFj3J,~>
+JcC<$JcC<$JcFp5qZ+b<r;aP2rrC[NrrD*Zr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcE"TqZ)QS
+r;aJ0r;_EKJcC<$JcFj3J,~>
+JcC<$JcC<$JcFp5qZ+b<r;aP2rrC[NrrD*Zr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcE"TqZ)QS
+r;aJ0r;_EKJcC<$JcFj3J,~>
+JcC<$JcC<$JcFp5qZ+b<r;aP2rrC[NrrD*Zr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcE"TqZ)QS
+r;aJ0r;_EKJcC<$JcFj3J,~>
+JcC<$JcC<$JcFp5qZ+b<r;aP2rrC[NrrD*Zr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcE"TqZ)QS
+r;aJ0r;_EKJcC<$JcFj3J,~>
+JcC<$JcC<$JcG-;qZ)3Iqu?Zrec5XLiW&iVJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$]Dqa.L&_)O
+\,ZC,JcC<$JcC<$l2Q8~>
+JcC<$JcC<$JcG-;qZ)3Iqu?Zrec5XLiW&iVJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$]Dqa.L&_)O
+\,ZC,JcC<$JcC<$l2Q8~>
+JcC<$JcC<$JcG-;qZ)3Iqu?Zrec5XLiW&iVJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$]Dqa.L&_)O
+\,ZC,JcC<$JcC<$l2Q8~>
+JcC<$JcC<$JcG-;qZ)3Iqu?Zrec5XLiW&iVJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$]Dqa.L&_)O
+\,ZC,JcC<$JcC<$l2Q8~>
+JcC<$JcC<$JcG-;qZ)3Iqu?Zrec5XLiW&iVJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$]Dqa.L&_)O
+\,ZC,JcC<$JcC<$l2Q8~>
+JcC<$JcC<$JcG-;qZ)3Iqu?Zrec5XLiW&iVJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$]Dqa.L&_)O
+\,ZC,JcC<$JcC<$l2Q8~>
+JcC<$JcC<$JcGECq#J\>r;`u"rrB8&r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcE^hpAfdErrBV0
+rrE#tr;_EKJcC<$JcG-;J,~>
+JcC<$JcC<$JcGECq#J\>r;`u"rrB8&r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcE^hpAfdErrBV0
+rrE#tr;_EKJcC<$JcG-;J,~>
+JcC<$JcC<$JcGECq#J\>r;`u"rrB8&r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcE^hpAfdErrBV0
+rrE#tr;_EKJcC<$JcG-;J,~>
+JcC<$JcC<$JcGECq#J\>r;`u"rrB8&r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcE^hpAfdErrBV0
+rrE#tr;_EKJcC<$JcG-;J,~>
+JcC<$JcC<$JcGECq#J\>r;`u"rrB8&r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcE^hpAfdErrBV0
+rrE#tr;_EKJcC<$JcG-;J,~>
+JcC<$JcC<$JcGECq#J\>r;`u"rrB8&r;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcE^hpAfdErrBV0
+rrE#tr;_EKJcC<$JcG-;J,~>
+JcC<$JcC<$JcGWIqZ)3ImJm1dX8i+uJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ci<kBJcGKErrBP.
+rrDrrrr at WMJcC<$JcG3=J,~>
+JcC<$JcC<$JcGWIqZ)3ImJm1dX8i+uJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ci<kBJcGKErrBP.
+rrDrrrr at WMJcC<$JcG3=J,~>
+JcC<$JcC<$JcGWIqZ)3ImJm1dX8i+uJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ci<kBJcGKErrBP.
+rrDrrrr at WMJcC<$JcG3=J,~>
+JcC<$JcC<$JcGWIqZ)3ImJm1dX8i+uJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ci<kBJcGKErrBP.
+rrDrrrr at WMJcC<$JcG3=J,~>
+JcC<$JcC<$JcGWIqZ)3ImJm1dX8i+uJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ci<kBJcGKErrBP.
+rrDrrrr at WMJcC<$JcG3=J,~>
+JcC<$JcC<$JcGWIqZ)3ImJm1dX8i+uJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ci<kBJcGKErrBP.
+rrDrrrr at WMJcC<$JcG3=J,~>
+JcC<$JcC<$JcGTIc2[eDScA]iVuQ\qJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$g&LpLJcG9?rrB2$
+r;_EKJcC<$JcG?AJ,~>
+JcC<$JcC<$JcGTIc2[eDScA]iVuQ\qJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$g&LpLJcG9?rrB2$
+r;_EKJcC<$JcG?AJ,~>
+JcC<$JcC<$JcGTIc2[eDScA]iVuQ\qJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$g&LpLJcG9?rrB2$
+r;_EKJcC<$JcG?AJ,~>
+JcC<$JcC<$JcGTIc2[eDScA]iVuQ\qJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$g&LpLJcG9?rrB2$
+r;_EKJcC<$JcG?AJ,~>
+JcC<$JcC<$JcGTIc2[eDScA]iVuQ\qJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$g&LpLJcG9?rrB2$
+r;_EKJcC<$JcG?AJ,~>
+JcC<$JcC<$JcGTIc2[eDScA]iVuQ\qJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$g&LpLJcG9?rrB2$
+r;_EKJcC<$JcG?AJ,~>
+JcC<$JcC<$L]@5OaoDA at S,`Kga8c)<iW&iVJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$j8\uVJcG'9
+rrB%ur;_EKJcC<$JcGKEJ,~>
+JcC<$JcC<$L]@5OaoDA at S,`Kga8c)<iW&iVJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$j8\uVJcG'9
+rrB%ur;_EKJcC<$JcGKEJ,~>
+JcC<$JcC<$L]@5OaoDA at S,`Kga8c)<iW&iVJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$j8\uVJcG'9
+rrB%ur;_EKJcC<$JcGKEJ,~>
+JcC<$JcC<$L]@5OaoDA at S,`Kga8c)<iW&iVJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$j8\uVJcG'9
+rrB%ur;_EKJcC<$JcGKEJ,~>
+JcC<$JcC<$L]@5OaoDA at S,`Kga8c)<iW&iVJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$j8\uVJcG'9
+rrB%ur;_EKJcC<$JcGKEJ,~>
+JcC<$JcC<$L]@5OaoDA at S,`Kga8c)<iW&iVJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$j8\uVJcG'9
+rrB%ur;_EKJcC<$JcGKEJ,~>
+JcC<$JcC<$O8o"UJcFL)rrA\kr;_EKJcC<$JcC<$g&IZEJcC<$JcC<$JcC<$p](*jJcFj3rrB%u
+rrE*!r;_EKJcC<$JcGWIJ,~>
+JcC<$JcC<$O8o"UJcFL)rrA\kr;_EKJcC<$JcC<$g&IZEJcC<$JcC<$JcC<$p](*jJcFj3rrB%u
+rrE*!r;_EKJcC<$JcGWIJ,~>
+JcC<$JcC<$O8o"UJcFL)rrA\kr;_EKJcC<$JcC<$g&IZEJcC<$JcC<$JcC<$p](*jJcFj3rrB%u
+rrE*!r;_EKJcC<$JcGWIJ,~>
+JcC<$JcC<$O8o"UJcFL)rrA\kr;_EKJcC<$JcC<$g&IZEJcC<$JcC<$JcC<$p](*jJcFj3rrB%u
+rrE*!r;_EKJcC<$JcGWIJ,~>
+JcC<$JcC<$O8o"UJcFL)rrA\kr;_EKJcC<$JcC<$g&IZEJcC<$JcC<$JcC<$p](*jJcFj3rrB%u
+rrE*!r;_EKJcC<$JcGWIJ,~>
+JcC<$JcC<$O8o"UJcFL)rrA\kr;_EKJcC<$JcC<$g&IZEJcC<$JcC<$JcC<$p](*jJcFj3rrB%u
+rrE*!r;_EKJcC<$JcGWIJ,~>
+JcC<$JcC<$Q2g^]bQ%M at NW9"YS,`EeJcC<$JcC<$JcFR+rrAaRrr at WMJcC<$JcC<$JcGcMq#H!G
+iW&oXVuQbsrVufrJcC<$JcC<$s8RT~>
+JcC<$JcC<$Q2g^]bQ%M at NW9"YS,`EeJcC<$JcC<$JcFR+SH+6 at JcC<$JcC<$JcGcMq#H!GiW&oX
+VuQbsrVufrJcC<$JcC<$s8RT~>
+JcC<$JcC<$Q2g^]bQ%M at NW9"YS,`EeJcC<$JcC<$JcFR+SH+6 at JcC<$JcC<$JcGcMq#H!GiW&oX
+VuQbsrVufrJcC<$JcC<$s8RT~>
+JcC<$JcC<$Q2g^]bQ%M at NW9"YS,`EeJcC<$JcC<$JcFR+rrAaRrr at WMJcC<$JcC<$JcGcMq#H!G
+iW&oXVuQbsrVufrJcC<$JcC<$s8RT~>
+JcC<$JcC<$Q2g^]bQ%M at NW9"YS,`EeJcC<$JcC<$JcFR+SH+6 at JcC<$JcC<$JcGcMq#H!GiW&oX
+VuQbsrVufrJcC<$JcC<$s8RT~>
+JcC<$JcC<$Q2g^]bQ%M at NW9"YS,`EeJcC<$JcC<$JcFR+SH+6 at JcC<$JcC<$JcGcMq#H!GiW&oX
+VuQbsrVufrJcC<$JcC<$s8RT~>
+JcC<$JcC<$S,`?cJcF!prrADcr;_EKJcC<$JcC<$iW&oXTo]3RJcC<$JcC<$JcCN*q#H!Gg].3P
+ScAWgJcC<$JcCB&J,~>
+JcC<$JcC<$S,`?cJcF!prrADcr;_EKJcC<$JcC<$iW#GKJcC<$JcC<$JcCN*q#H!Gg].3PScAWg
+JcC<$JcCB&J,~>
+JcC<$JcC<$S,`?cJcF!prrADcr;_EKJcC<$JcC<$iW#GKJcC<$JcC<$JcCN*q#H!Gg].3PScAWg
+JcC<$JcCB&J,~>
+JcC<$JcC<$S,`?cJcF!prrADcr;_EKJcC<$JcC<$iW&oXTo]3RJcC<$JcC<$JcCN*q#H!Gg].3P
+ScAWgJcC<$JcCB&J,~>
+JcC<$JcC<$S,`?cJcF!prrADcr;_EKJcC<$JcC<$iW#GKJcC<$JcC<$JcCN*q#H!Gg].3PScAWg
+JcC<$JcCB&J,~>
+JcC<$JcC<$S,`?cJcF!prrADcr;_EKJcC<$JcC<$iW#GKJcC<$JcC<$JcCN*q#H!Gg].3PScAWg
+JcC<$JcCB&J,~>
+JcC<$JcC<$U]:,ic2[eDJcG]KrrBP.r;bgVr;_EKJcC<$JcC<$jo>>\To]3RJcC<$JcC<$JcC`0
+qZ)3Ie,T at HRK*9eJcC<$JcCH(J,~>
+JcC<$JcC<$U]:,ic2[eDJcG]KrrBP.r;bgVr;_EKJcC<$JcC<$jo:kOJcC<$JcC<$JcC`0qZ)3I
+e,T at HRK*9eJcC<$JcCH(J,~>
+JcC<$JcC<$U]:,ic2[eDJcG]KrrBP.r;bgVr;_EKJcC<$JcC<$jo:kOJcC<$JcC<$JcC`0qZ)3I
+e,T at HRK*9eJcC<$JcCH(J,~>
+JcC<$JcC<$U]:,ic2[eDJcG]KrrBP.r;bgVr;_EKJcC<$JcC<$jo>>\To]3RJcC<$JcC<$JcC`0
+qZ)3Ie,T at HRK*9eJcC<$JcCH(J,~>
+JcC<$JcC<$U]:,ic2[eDJcG]KrrBP.r;bgVr;_EKJcC<$JcC<$jo:kOJcC<$JcC<$JcC`0qZ)3I
+e,T at HRK*9eJcC<$JcCH(J,~>
+JcC<$JcC<$U]:,ic2[eDJcG]KrrBP.r;bgVr;_EKJcC<$JcC<$jo:kOJcC<$JcC<$JcC`0qZ)3I
+e,T at HRK*9eJcC<$JcCH(J,~>
+JcC<$JcC<$WW2hqa8c/>JcGWIrrA,[r;_EKJcC<$JcC<$l2Ub`To]3RJcC<$JcC<$JcCr6qZ-Zr
+rr at WMci="FQiI!aJcC<$JcCT,J,~>
+JcC<$JcC<$WW2hqa8c/>JcGWIrrA,[r;_EKJcC<$JcC<$l2R:SJcC<$JcC<$JcCr6qZ-Zrrr at WM
+ci="FQiI!aJcC<$JcCT,J,~>
+JcC<$JcC<$WW2hqa8c/>JcGWIrrA,[r;_EKJcC<$JcC<$l2R:SJcC<$JcC<$JcCr6qZ-Zrrr at WM
+ci="FQiI!aJcC<$JcCT,J,~>
+JcC<$JcC<$WW2hqa8c/>JcGWIrrA,[r;_EKJcC<$JcC<$l2Ub`To]3RJcC<$JcC<$JcCr6qZ-Zr
+rr at WMci="FQiI!aJcC<$JcCT,J,~>
+JcC<$JcC<$WW2hqa8c/>JcGWIrrA,[r;_EKJcC<$JcC<$l2R:SJcC<$JcC<$JcCr6qZ-Zrrr at WM
+ci="FQiI!aJcC<$JcCT,J,~>
+JcC<$JcC<$WW2hqa8c/>JcGWIrrA,[r;_EKJcC<$JcC<$l2R:SJcC<$JcC<$JcCr6qZ-Zrrr at WM
+ci="FQiI!aJcC<$JcCT,J,~>
+JcC<$JcC<$YQ+J"JcE:\rr at uWr;_EKJcC<$JcC<$mJm1dTo]3RJcC<$JcC<$JcD/<qZ)3I`W,r<
+RK*3cs8W#tJcC<$JcC`0J,~>
+JcC<$JcC<$YQ+J"JcE:\rr at uWr;_EKJcC<$JcC<$mJi^WJcC<$JcC<$JcD/<qZ)3I`W,r<RK*3c
+s8W#tJcC<$JcC`0J,~>
+JcC<$JcC<$YQ+J"JcE:\rr at uWr;_EKJcC<$JcC<$mJi^WJcC<$JcC<$JcD/<qZ)3I`W,r<RK*3c
+s8W#tJcC<$JcC`0J,~>
+JcC<$JcC<$YQ+J"JcE:\rr at uWr;_EKJcC<$JcC<$mJm1dTo]3RJcC<$JcC<$JcD/<qZ)3I`W,r<
+RK*3cs8W#tJcC<$JcC`0J,~>
+JcC<$JcC<$YQ+J"JcE:\rr at uWr;_EKJcC<$JcC<$mJi^WJcC<$JcC<$JcD/<qZ)3I`W,r<RK*3c
+s8W#tJcC<$JcC`0J,~>
+JcC<$JcC<$YQ+J"JcE:\rr at uWr;_EKJcC<$JcC<$mJi^WJcC<$JcC<$JcD/<qZ)3I`W,r<RK*3c
+s8W#tJcC<$JcC`0J,~>
+JcC<$JcC<$[K$+(l2Ub`jo>8ZJcG-;rr at iSrr@WMJcC<$JcC<$n,NCfTo]3RJcC<$JcC<$JcDAB
+q#Kg^rr at WMfDkjNO8o.YJcC<$JcCl4J,~>
+JcC<$JcC<$[K$+(l2Ub`jo>8ZJcG-;rr at iSrr@WMJcC<$JcC<$n,JpYJcC<$JcC<$JcDABq#Kg^
+rr at WMfDkjNO8o.YJcC<$JcCl4J,~>
+JcC<$JcC<$[K$+(l2Ub`jo>8ZJcG-;rr at iSrr@WMJcC<$JcC<$n,JpYJcC<$JcC<$JcDABq#Kg^
+rr at WMfDkjNO8o.YJcC<$JcCl4J,~>
+JcC<$JcC<$[K$+(l2Ub`jo>8ZJcG-;rr at iSrr@WMJcC<$JcC<$n,NCfTo]3RJcC<$JcC<$JcDAB
+q#Kg^rr at WMfDkjNO8o.YJcC<$JcCl4J,~>
+JcC<$JcC<$[K$+(l2Ub`jo>8ZJcG-;rr at iSrr@WMJcC<$JcC<$n,JpYJcC<$JcC<$JcDABq#Kg^
+rr at WMfDkjNO8o.YJcC<$JcCl4J,~>
+JcC<$JcC<$[K$+(l2Ub`jo>8ZJcG-;rr at iSrr@WMJcC<$JcC<$n,JpYJcC<$JcC<$JcDABq#Kg^
+rr at WMfDkjNO8o.YJcC<$JcCl4J,~>
+JcC<$JcC<$^&Rm.j8],ZJcF!prrAtsr;bmXr;_EKJcC<$JcC<$oDegjTo]3RJcC<$JcC<$JcDSH
+qZ,aXrr at WMfDkjNMuW_UJcC<$JcD#8J,~>
+JcC<$JcC<$^&Rm.j8],ZJcF!prrAtsr;bmXr;_EKJcC<$JcC<$oDb?]JcC<$JcC<$JcDSHqZ,aX
+rr at WMfDkjNMuW_UJcC<$JcD#8J,~>
+JcC<$JcC<$^&Rm.j8],ZJcF!prrAtsr;bmXr;_EKJcC<$JcC<$oDb?]JcC<$JcC<$JcDSHqZ,aX
+rr at WMfDkjNMuW_UJcC<$JcD#8J,~>
+JcC<$JcC<$^&Rm.j8],ZJcF!prrAtsr;bmXr;_EKJcC<$JcC<$oDegjTo]3RJcC<$JcC<$JcDSH
+qZ,aXrr at WMfDkjNMuW_UJcC<$JcD#8J,~>
+JcC<$JcC<$^&Rm.j8],ZJcF!prrAtsr;bmXr;_EKJcC<$JcC<$oDb?]JcC<$JcC<$JcDSHqZ,aX
+rr at WMfDkjNMuW_UJcC<$JcD#8J,~>
+JcC<$JcC<$^&Rm.j8],ZJcF!prrAtsr;bmXr;_EKJcC<$JcC<$oDb?]JcC<$JcC<$JcDSHqZ,aX
+rr at WMfDkjNMuW_UJcC<$JcD#8J,~>
+JcC<$JcC<$_uKT6bQ%SBJcFR+rr at WMr;_EKJcC<$JcC<$p](6nTo]3RJcC<$JcC<$JcDeNqZ)3I
+ZiC%*L]@ASJcC<$JcD):J,~>
+JcC<$JcC<$_uKT6bQ%SBJcFR+rr at WMr;_EKJcC<$JcC<$p]$caJcC<$JcC<$JcDeNqZ)3IZiC%*
+L]@ASJcC<$JcD):J,~>
+JcC<$JcC<$_uKT6bQ%SBJcFR+rr at WMr;_EKJcC<$JcC<$p]$caJcC<$JcC<$JcDeNqZ)3IZiC%*
+L]@ASJcC<$JcD):J,~>
+JcC<$JcC<$_uKT6bQ%SBJcFR+rr at WMr;_EKJcC<$JcC<$p](6nTo]3RJcC<$JcC<$JcDeNqZ)3I
+ZiC%*L]@ASJcC<$JcD):J,~>
+JcC<$JcC<$_uKT6bQ%SBJcFR+rr at WMr;_EKJcC<$JcC<$p]$caJcC<$JcC<$JcDeNqZ)3IZiC%*
+L]@ASJcC<$JcD):J,~>
+JcC<$JcC<$_uKT6bQ%SBJcFR+rr at WMr;_EKJcC<$JcC<$p]$caJcC<$JcC<$JcDeNqZ)3IZiC%*
+L]@ASJcC<$JcD):J,~>
+JcC<$JcC<$aoD5<a8c/>JcFL)rr at WMrVufrJcC<$JcC<$JcGWIrrAaRrrD`lnGn.?JcC<$JcC<$
+c2[S>JcDqRrr at oUrrE*!r;_EKJcC<$S,\!~>
+JcC<$JcC<$aoD5<a8c/>JcFL)rr at WMrVufrJcC<$JcC<$JcGWISH/?_nGn.?JcC<$JcC<$c2[S>
+JcDqRrr at oUrrE*!r;_EKJcC<$S,\!~>
+JcC<$JcC<$aoD5<a8c/>JcFL)rr at WMrVufrJcC<$JcC<$JcGWISH/?_nGn.?JcC<$JcC<$c2[S>
+JcDqRrr at oUrrE*!r;_EKJcC<$S,\!~>
+JcC<$JcC<$aoD5<a8c/>JcFL)rr at WMrVufrJcC<$JcC<$JcGWIrrAaRrrD`lnGn.?JcC<$JcC<$
+c2[S>JcDqRrr at oUrrE*!r;_EKJcC<$S,\!~>
+JcC<$JcC<$aoD5<a8c/>JcFL)rr at WMrVufrJcC<$JcC<$JcGWISH/?_nGn.?JcC<$JcC<$c2[S>
+JcDqRrr at oUrrE*!r;_EKJcC<$S,\!~>
+JcC<$JcC<$aoD5<a8c/>JcFL)rr at WMrVufrJcC<$JcC<$JcGWISH/?_nGn.?JcC<$JcC<$c2[S>
+JcDqRrr at oUrrE*!r;_EKJcC<$S,\!~>
+JcC<$JcC<$dJs"BJcD/<rr at WMq>^BnJcC<$JcC<$JcGcMrrAabrrD`lnGn.?JcC<$JcC<$e,T:F
+JcD_Lr;_WQrrE#tr;_EKJcC<$TDsE~>
+JcC<$JcC<$dJs"BJcD/<rr at WMq>^BnJcC<$JcC<$JcGcMSH/?_nGn.?JcC<$JcC<$e,T:FJcD_L
+r;_WQrrE#tr;_EKJcC<$TDsE~>
+JcC<$JcC<$dJs"BJcD/<rr at WMq>^BnJcC<$JcC<$JcGcMSH/?_nGn.?JcC<$JcC<$e,T:FJcD_L
+r;_WQrrE#tr;_EKJcC<$TDsE~>
+JcC<$JcC<$dJs"BJcD/<rr at WMq>^BnJcC<$JcC<$JcGcMrrAabrrD`lnGn.?JcC<$JcC<$e,T:F
+JcD_Lr;_WQrrE#tr;_EKJcC<$TDsE~>
+JcC<$JcC<$dJs"BJcD/<rr at WMq>^BnJcC<$JcC<$JcGcMSH/?_nGn.?JcC<$JcC<$e,T:FJcD_L
+r;_WQrrE#tr;_EKJcC<$TDsE~>
+JcC<$JcC<$dJs"BJcD/<rr at WMq>^BnJcC<$JcC<$JcGcMSH/?_nGn.?JcC<$JcC<$e,T:FJcD_L
+r;_WQrrE#tr;_EKJcC<$TDsE~>
+JcC<$JcC<$fDk^JaoD;>JcF!prrADcr;bmXr;_EKJcC<$JcCB&rrAabrrD`lr;_EKJcC<$JcC<$
+c2[Y at JcDMFr;_EKrVufrJcC<$JcDMFJ,~>
+JcC<$JcC<$fDk^JaoD;>JcF!prrADcr;bmXr;_EKJcC<$JcCB&SH/?_r;_EKJcC<$JcC<$c2[Y@
+JcDMFr;_EKrVufrJcC<$JcDMFJ,~>
+JcC<$JcC<$fDk^JaoD;>JcF!prrADcr;bmXr;_EKJcC<$JcCB&SH/?_r;_EKJcC<$JcC<$c2[Y@
+JcDMFr;_EKrVufrJcC<$JcDMFJ,~>
+JcC<$JcC<$fDk^JaoD;>JcF!prrADcr;bmXr;_EKJcC<$JcCB&rrAabrrD`lr;_EKJcC<$JcC<$
+c2[Y at JcDMFr;_EKrVufrJcC<$JcDMFJ,~>
+JcC<$JcC<$fDk^JaoD;>JcF!prrADcr;bmXr;_EKJcC<$JcCB&SH/?_r;_EKJcC<$JcC<$c2[Y@
+JcDMFr;_EKrVufrJcC<$JcDMFJ,~>
+JcC<$JcC<$fDk^JaoD;>JcF!prrADcr;bmXr;_EKJcC<$JcCB&SH/?_r;_EKJcC<$JcC<$c2[Y@
+JcDMFr;_EKrVufrJcC<$JcDMFJ,~>
+JcC<$JcC<$h>d?PJcCZ.rr at WMnc/OfJcC<$JcC<$L]@ASTqD>bp&FsjJcC<$JcC<$JcF4!qZ)3I
+S,`KgJcGQGr;_EKJcC<$VuM8~>
+JcC<$JcC<$h>d?PJcCZ.rr at WMnc/OfJcC<$JcC<$L]<nFp&FsjJcC<$JcC<$JcF4!qZ)3IS,`Kg
+JcGQGr;_EKJcC<$VuM8~>
+JcC<$JcC<$h>d?PJcCZ.rr at WMnc/OfJcC<$JcC<$L]<nFp&FsjJcC<$JcC<$JcF4!qZ)3IS,`Kg
+JcGQGr;_EKJcC<$VuM8~>
+JcC<$JcC<$h>d?PJcCZ.rr at WMnc/OfJcC<$JcC<$L]@ASTqD>bp&FsjJcC<$JcC<$JcF4!qZ)3I
+S,`KgJcGQGr;_EKJcC<$VuM8~>
+JcC<$JcC<$h>d?PJcCZ.rr at WMnc/OfJcC<$JcC<$L]<nFp&FsjJcC<$JcC<$JcF4!qZ)3IS,`Kg
+JcGQGr;_EKJcC<$VuM8~>
+JcC<$JcC<$h>d?PJcCZ.rr at WMnc/OfJcC<$JcC<$L]<nFp&FsjJcC<$JcC<$JcF4!qZ)3IS,`Kg
+JcGQGr;_EKJcC<$VuM8~>
+JcC<$JcC<$j8\uVc2[_BJcEF`rr at WMmJm+bJcC<$JcC<$MuWeWTqD>bp&FsjJcC<$JcC<$JcFL)
+q#H!GQ2gjaJcGECr;_EKJcC<$X8d\~>
+JcC<$JcC<$j8\uVc2[_BJcEF`rr at WMmJm+bJcC<$JcC<$MuT=Jp&FsjJcC<$JcC<$JcFL)q#H!G
+Q2gjaJcGECr;_EKJcC<$X8d\~>
+JcC<$JcC<$j8\uVc2[_BJcEF`rr at WMmJm+bJcC<$JcC<$MuT=Jp&FsjJcC<$JcC<$JcFL)q#H!G
+Q2gjaJcGECr;_EKJcC<$X8d\~>
+JcC<$JcC<$j8\uVc2[_BJcEF`rr at WMmJm+bJcC<$JcC<$MuWeWTqD>bp&FsjJcC<$JcC<$JcFL)
+q#H!GQ2gjaJcGECr;_EKJcC<$X8d\~>
+JcC<$JcC<$j8\uVc2[_BJcEF`rr at WMmJm+bJcC<$JcC<$MuT=Jp&FsjJcC<$JcC<$JcFL)q#H!G
+Q2gjaJcGECr;_EKJcC<$X8d\~>
+JcC<$JcC<$j8\uVc2[_BJcEF`rr at WMmJm+bJcC<$JcC<$MuT=Jp&FsjJcC<$JcC<$JcFL)q#H!G
+Q2gjaJcGECr;_EKJcC<$X8d\~>
+JcC<$JcC<$li6b\[K$7,JcF!prr at WMl2U\^JcC<$JcC<$OoP(S[@d$jp&G$ls8VfnJcC<$JcC<$
+JcG'9q#J&,rr at WMfDkjNJcG`Mqu?TprVultJcC<$JcDkPJ,~>
+JcC<$JcC<$li6b\[K$7,JcF!prr at WMl2U\^JcC<$JcC<$OoLmNp&G$ls8VfnJcC<$JcC<$JcG'9
+q#J&,rr at WMfDkjNJcG`Mqu?TprVultJcC<$JcDkPJ,~>
+JcC<$JcC<$li6b\[K$7,JcF!prr at WMl2U\^JcC<$JcC<$OoLmNp&G$ls8VfnJcC<$JcC<$JcG'9
+q#J&,rr at WMfDkjNJcG`Mqu?TprVultJcC<$JcDkPJ,~>
+JcC<$JcC<$li6b\[K$7,JcF!prr at WMl2U\^JcC<$JcC<$OoP(S[@d$jp&G$ls8VfnJcC<$JcC<$
+JcG'9q#J&,rr at WMfDkjNJcG`Mqu?TprVultJcC<$JcDkPJ,~>
+JcC<$JcC<$li6b\[K$7,JcF!prr at WMl2U\^JcC<$JcC<$OoLmNp&G$ls8VfnJcC<$JcC<$JcG'9
+q#J&,rr at WMfDkjNJcG`Mqu?TprVultJcC<$JcDkPJ,~>
+JcC<$JcC<$li6b\[K$7,JcF!prr at WMl2U\^JcC<$JcC<$OoLmNp&G$ls8VfnJcC<$JcC<$JcG'9
+q#J&,rr at WMfDkjNJcG`Mqu?TprVultJcC<$JcDkPJ,~>
+JcC<$JcC<$nc/IdXoJD$JcF!prr at iSrrD`lrrDNfr;_EKJcC<$JcCr6rrAabrrDfnmf7q=JcC<$
+JcC<$oDe[fZiC%*JcF@%rr at WMrrDThr;_EKJcC<$Z2]=~>
+JcC<$JcC<$nc/IdXoJD$JcF!prr at iSrrD`lrrDNfr;_EKJcC<$JcCr6SH/Eamf7q=JcC<$JcC<$
+oDe[fZiC%*JcF@%rr at WMrrDThr;_EKJcC<$Z2]=~>
+JcC<$JcC<$nc/IdXoJD$JcF!prr at iSrrD`lrrDNfr;_EKJcC<$JcCr6SH/Eamf7q=JcC<$JcC<$
+oDe[fZiC%*JcF@%rr at WMrrDThr;_EKJcC<$Z2]=~>
+JcC<$JcC<$nc/IdXoJD$JcF!prr at iSrrD`lrrDNfr;_EKJcC<$JcCr6rrAabrrDfnmf7q=JcC<$
+JcC<$oDe[fZiC%*JcF@%rr at WMrrDThr;_EKJcC<$Z2]=~>
+JcC<$JcC<$nc/IdXoJD$JcF!prr at iSrrD`lrrDNfr;_EKJcC<$JcCr6SH/Eamf7q=JcC<$JcC<$
+oDe[fZiC%*JcF@%rr at WMrrDThr;_EKJcC<$Z2]=~>
+JcC<$JcC<$nc/IdXoJD$JcF!prr at iSrrD`lrrDNfr;_EKJcC<$JcCr6SH/Eamf7q=JcC<$JcC<$
+oDe[fZiC%*JcF@%rr at WMrrDThr;_EKJcC<$Z2]=~>
+JcC<$JcC<$p](*jaoD;>JcDkPrr at cQrrDfnrrDBbr;_EKJcC<$JcD):rrAabrrDfnr;cTlqZ)3I
+JcC<$JcC<$qu?NnJcC<$rr at WMli6n`JcC<$JcE.XJ,~>
+JcC<$JcC<$p](*jaoD;>JcDkPrr at cQrrDfnrrDBbr;_EKJcC<$JcD):SH/Ear;cTlqZ)3IJcC<$
+JcC<$qu?NnJcC<$rr at WMli6n`JcC<$JcE.XJ,~>
+JcC<$JcC<$p](*jaoD;>JcDkPrr at cQrrDfnrrDBbr;_EKJcC<$JcD):SH/Ear;cTlqZ)3IJcC<$
+JcC<$qu?NnJcC<$rr at WMli6n`JcC<$JcE.XJ,~>
+JcC<$JcC<$p](*jaoD;>JcDkPrr at cQrrDfnrrDBbr;_EKJcC<$JcD):rrAabrrDfnr;cTlqZ)3I
+JcC<$JcC<$qu?NnJcC<$rr at WMli6n`JcC<$JcE.XJ,~>
+JcC<$JcC<$p](*jaoD;>JcDkPrr at cQrrDfnrrDBbr;_EKJcC<$JcD):SH/Ear;cTlqZ)3IJcC<$
+JcC<$qu?NnJcC<$rr at WMli6n`JcC<$JcE.XJ,~>
+JcC<$JcC<$p](*jaoD;>JcDkPrr at cQrrDfnrrDBbr;_EKJcC<$JcD):SH/Ear;cTlqZ)3IJcC<$
+JcC<$qu?NnJcC<$rr at WMli6n`JcC<$JcE.XJ,~>
+JcC<$JcC<$s8VlpJcC<$li6tbJcFR+r;_EKJcC<$JcD5>rrAabrrD6^r;_EKJcC<$JcC<$qZ)3I
+JcGWIrr at WMkPtJ\JcC<$JcE:\J,~>
+JcC<$JcC<$s8VlpJcC<$li6tbJcFR+r;_EKJcC<$JcD5>SH.jQr;_EKJcC<$JcC<$qZ)3IJcGWI
+rr at WMkPtJ\JcC<$JcE:\J,~>
+JcC<$JcC<$s8VlpJcC<$li6tbJcFR+r;_EKJcC<$JcD5>SH.jQr;_EKJcC<$JcC<$qZ)3IJcGWI
+rr at WMkPtJ\JcC<$JcE:\J,~>
+JcC<$JcC<$s8VlpJcC<$li6tbJcFR+r;_EKJcC<$JcD5>rrAabrrD6^r;_EKJcC<$JcC<$qZ)3I
+JcGWIrr at WMkPtJ\JcC<$JcE:\J,~>
+JcC<$JcC<$s8VlpJcC<$li6tbJcFR+r;_EKJcC<$JcD5>SH.jQr;_EKJcC<$JcC<$qZ)3IJcGWI
+rr at WMkPtJ\JcC<$JcE:\J,~>
+JcC<$JcC<$s8VlpJcC<$li6tbJcFR+r;_EKJcC<$JcD5>SH.jQr;_EKJcC<$JcC<$qZ)3IJcGWI
+rr at WMkPtJ\JcC<$JcE:\J,~>
+JcC<$JcCH(qZ+h>r;_EKScA]iJcFF'r;_EKJcC<$JcDABrrAarrrD6^r;_EKJcC<$JcCN*qZ)3I
+JcGKEr;_EKj8]&XJcC<$JcEF`J,~>
+JcC<$JcCH(qZ+h>r;_EKScA]iJcFF'r;_EKJcC<$JcDABSH.jQr;_EKJcC<$JcCN*qZ)3IJcGKE
+r;_EKj8]&XJcC<$JcEF`J,~>
+JcC<$JcCH(qZ+h>r;_EKScA]iJcFF'r;_EKJcC<$JcDABSH.jQr;_EKJcC<$JcCN*qZ)3IJcGKE
+r;_EKj8]&XJcC<$JcEF`J,~>
+JcC<$JcCH(qZ+h>r;_EKScA]iJcFF'r;_EKJcC<$JcDABrrAarrrD6^r;_EKJcC<$JcCN*qZ)3I
+JcGKEr;_EKj8]&XJcC<$JcEF`J,~>
+JcC<$JcCH(qZ+h>r;_EKScA]iJcFF'r;_EKJcC<$JcDABSH.jQr;_EKJcC<$JcCN*qZ)3IJcGKE
+r;_EKj8]&XJcC<$JcEF`J,~>
+JcC<$JcCH(qZ+h>r;_EKScA]iJcFF'r;_EKJcC<$JcDABSH.jQr;_EKJcC<$JcCN*qZ)3IJcGKE
+r;_EKj8]&XJcC<$JcEF`J,~>
+JcC<$JcCZ.qZ)3IJcFR+rr at WMp](6niW&iVJcC<$JcC<$U]:>oTs+IrkPtJ\JcC<$JcC<$NW8eS
+JcC<$oDeahJcFj3rrE#tr;_EKJcC<$_>f#~>
+JcC<$JcCZ.qZ)3IJcFR+rr at WMp](6niW&iVJcC<$JcC<$U]6kbkPtJ\JcC<$JcC<$NW8eSJcC<$
+oDeahJcFj3rrE#tr;_EKJcC<$_>f#~>
+JcC<$JcCZ.qZ)3IJcFR+rr at WMp](6niW&iVJcC<$JcC<$U]6kbkPtJ\JcC<$JcC<$NW8eSJcC<$
+oDeahJcFj3rrE#tr;_EKJcC<$_>f#~>
+JcC<$JcCZ.qZ)3IJcFR+rr at WMp](6niW&iVJcC<$JcC<$U]:>oTs+IrkPtJ\JcC<$JcC<$NW8eS
+JcC<$oDeahJcFj3rrE#tr;_EKJcC<$_>f#~>
+JcC<$JcCZ.qZ)3IJcFR+rr at WMp](6niW&iVJcC<$JcC<$U]6kbkPtJ\JcC<$JcC<$NW8eSJcC<$
+oDeahJcFj3rrE#tr;_EKJcC<$_>f#~>
+JcC<$JcCZ.qZ)3IJcFR+rr at WMp](6niW&iVJcC<$JcC<$U]6kbkPtJ\JcC<$JcC<$NW8eSJcC<$
+oDeahJcFj3rrE#tr;_EKJcC<$_>f#~>
+JcC<$JcCr6q#J\>rr at WMNW9"YJcGECrrCsVr;_EKJcC<$JcDYJrrAarrrDfnr;cNjr;_EKJcC<$
+JcCr6qZ)3IJcG!7rr at WMj8],Zqu?ZrJcC<$JcEXfJ,~>
+JcC<$JcCr6q#J\>rr at WMNW9"YJcGECrrCsVr;_EKJcC<$JcDYJSH/Ear;cNjr;_EKJcC<$JcCr6
+qZ)3IJcG!7rr at WMj8],Zqu?ZrJcC<$JcEXfJ,~>
+JcC<$JcCr6q#J\>rr at WMNW9"YJcGECrrCsVr;_EKJcC<$JcDYJSH/Ear;cNjr;_EKJcC<$JcCr6
+qZ)3IJcG!7rr at WMj8],Zqu?ZrJcC<$JcEXfJ,~>
+JcC<$JcCr6q#J\>rr at WMNW9"YJcGECrrCsVr;_EKJcC<$JcDYJrrAarrrDfnr;cNjr;_EKJcC<$
+JcCr6qZ)3IJcG!7rr at WMj8],Zqu?ZrJcC<$JcEXfJ,~>
+JcC<$JcCr6q#J\>rr at WMNW9"YJcGECrrCsVr;_EKJcC<$JcDYJSH/Ear;cNjr;_EKJcC<$JcCr6
+qZ)3IJcG!7rr at WMj8],Zqu?ZrJcC<$JcEXfJ,~>
+JcC<$JcCr6q#J\>rr at WMNW9"YJcGECrrCsVr;_EKJcC<$JcDYJSH/Ear;cNjr;_EKJcC<$JcCr6
+qZ)3IJcG!7rr at WMj8],Zqu?ZrJcC<$JcEXfJ,~>
+JcC<$JcD/<qZ+\:rr at WMMuWeWJcF!pr;_EKJcC<$JcDeNrrAarrrDfnqZ-Hlr;_EKJcC<$JcD):
+qZ)3IJcFd1rr at WMg&M!NJcC<$JcEdjJ,~>
+JcC<$JcD/<qZ+\:rr at WMMuWeWJcF!pr;_EKJcC<$JcDeNSH/EaqZ-Hlr;_EKJcC<$JcD):qZ)3I
+JcFd1rr at WMg&M!NJcC<$JcEdjJ,~>
+JcC<$JcD/<qZ+\:rr at WMMuWeWJcF!pr;_EKJcC<$JcDeNSH/EaqZ-Hlr;_EKJcC<$JcD):qZ)3I
+JcFd1rr at WMg&M!NJcC<$JcEdjJ,~>
+JcC<$JcD/<qZ+\:rr at WMMuWeWJcF!pr;_EKJcC<$JcDeNrrAarrrDfnqZ-Hlr;_EKJcC<$JcD):
+qZ)3IJcFd1rr at WMg&M!NJcC<$JcEdjJ,~>
+JcC<$JcD/<qZ+\:rr at WMMuWeWJcF!pr;_EKJcC<$JcDeNSH/EaqZ-Hlr;_EKJcC<$JcD):qZ)3I
+JcFd1rr at WMg&M!NJcC<$JcEdjJ,~>
+JcC<$JcD/<qZ+\:rr at WMMuWeWJcF!pr;_EKJcC<$JcDeNSH/EaqZ-Hlr;_EKJcC<$JcD):qZ)3I
+JcFd1rr at WMg&M!NJcC<$JcEdjJ,~>
+JcC<$JcDABqZ)3Is8W*!JcF!prr at WMaoDA@JcC<$JcC<$XoJD$Ts+Irp&FO^JcC<$JcC<$ScAKc
+MuWeWJcF@%rr at WMrrC[Nr;_EKJcC<$bQ!(~>
+JcC<$JcDABqZ)3Is8W*!JcF!prr at WMaoDA@JcC<$JcC<$XoFplp&FO^JcC<$JcC<$ScAKcMuWeW
+JcF@%rr at WMrrC[Nr;_EKJcC<$bQ!(~>
+JcC<$JcDABqZ)3Is8W*!JcF!prr at WMaoDA@JcC<$JcC<$XoFplp&FO^JcC<$JcC<$ScAKcMuWeW
+JcF@%rr at WMrrC[Nr;_EKJcC<$bQ!(~>
+JcC<$JcDABqZ)3Is8W*!JcF!prr at WMaoDA@JcC<$JcC<$XoJD$Ts+Irp&FO^JcC<$JcC<$ScAKc
+MuWeWJcF@%rr at WMrrC[Nr;_EKJcC<$bQ!(~>
+JcC<$JcDABqZ)3Is8W*!JcF!prr at WMaoDA@JcC<$JcC<$XoFplp&FO^JcC<$JcC<$ScAKcMuWeW
+JcF@%rr at WMrrC[Nr;_EKJcC<$bQ!(~>
+JcC<$JcDABqZ)3Is8W*!JcF!prr at WMaoDA@JcC<$JcC<$XoFplp&FO^JcC<$JcC<$ScAKcMuWeW
+JcF@%rr at WMrrC[Nr;_EKJcC<$bQ!(~>
+JcC<$JcDSHqZ+h>r;a2(rr at WMc2[eDJcGQGrrDThrrD*Zr;_EKJcC<$JcE"TrrAarrrDZjpAfdE
+JcC<$JcDABqZ)9Krr at WMfDkjNJcG`Me,T at HJcC<$JcF'rJ,~>
+JcC<$JcDSHqZ+h>r;a2(rr at WMc2[eDJcGQGrrDThrrD*Zr;_EKJcC<$JcE"TSH/9]pAfdEJcC<$
+JcDABqZ)9Krr at WMfDkjNJcG`Me,T at HJcC<$JcF'rJ,~>
+JcC<$JcDSHqZ+h>r;a2(rr at WMc2[eDJcGQGrrDThrrD*Zr;_EKJcC<$JcE"TSH/9]pAfdEJcC<$
+JcDABqZ)9Krr at WMfDkjNJcG`Me,T at HJcC<$JcF'rJ,~>
+JcC<$JcDSHqZ+h>r;a2(rr at WMc2[eDJcGQGrrDThrrD*Zr;_EKJcC<$JcE"TrrAarrrDZjpAfdE
+JcC<$JcDABqZ)9Krr at WMfDkjNJcG`Me,T at HJcC<$JcF'rJ,~>
+JcC<$JcDSHqZ+h>r;a2(rr at WMc2[eDJcGQGrrDThrrD*Zr;_EKJcC<$JcE"TSH/9]pAfdEJcC<$
+JcDABqZ)9Krr at WMfDkjNJcG`Me,T at HJcC<$JcF'rJ,~>
+JcC<$JcDSHqZ+h>r;a2(rr at WMc2[eDJcGQGrrDThrrD*Zr;_EKJcC<$JcE"TSH/9]pAfdEJcC<$
+JcDABqZ)9Krr at WMfDkjNJcG`Me,T at HJcC<$JcF'rJ,~>
+JcC<$JcDkPq#H!GJcEF`rr at WMq>^Hpn,NCfiW&iVJcC<$JcC<$[K$7,Ts+IrJcC<$JcC<$O8o"U
+JcC<$dJs4HJcF:#r;cfrr;_EKJcC<$e,Op~>
+JcC<$JcDkPq#H!GJcEF`rr at WMq>^Hpn,NCfiW&iVJcC<$JcC<$[JuctJcC<$JcC<$O8o"UJcC<$
+dJs4HJcF:#r;cfrr;_EKJcC<$e,Op~>
+JcC<$JcDkPq#H!GJcEF`rr at WMq>^Hpn,NCfiW&iVJcC<$JcC<$[JuctJcC<$JcC<$O8o"UJcC<$
+dJs4HJcF:#r;cfrr;_EKJcC<$e,Op~>
+JcC<$JcDkPq#H!GJcEF`rr at WMq>^Hpn,NCfiW&iVJcC<$JcC<$[K$7,Ts+IrJcC<$JcC<$O8o"U
+JcC<$dJs4HJcF:#r;cfrr;_EKJcC<$e,Op~>
+JcC<$JcDkPq#H!GJcEF`rr at WMq>^Hpn,NCfiW&iVJcC<$JcC<$[JuctJcC<$JcC<$O8o"UJcC<$
+dJs4HJcF:#r;cfrr;_EKJcC<$e,Op~>
+JcC<$JcDkPq#H!GJcEF`rr at WMq>^Hpn,NCfiW&iVJcC<$JcC<$[JuctJcC<$JcC<$O8o"UJcC<$
+dJs4HJcF:#r;cfrr;_EKJcC<$e,Op~>
+JcC<$JcE(VqZ+h>rr at WMJcG-;rr at WM^]464JcC<$JcC<$\c;[0Ts+IrJcC<$JcC<$Q2g^]JcC<$
+aoDA at JcEjlrr@WMJcC<$ec1.~>
+JcC<$JcE(VqZ+h>rr at WMJcG-;rr at WM^]464JcC<$JcC<$\c83#JcC<$JcC<$Q2g^]JcC<$aoDA@
+JcEjlrr at WMJcC<$ec1.~>
+JcC<$JcE(VqZ+h>rr at WMJcG-;rr at WM^]464JcC<$JcC<$\c83#JcC<$JcC<$Q2g^]JcC<$aoDA@
+JcEjlrr at WMJcC<$ec1.~>
+JcC<$JcE(VqZ+h>rr at WMJcG-;rr at WM^]464JcC<$JcC<$\c;[0Ts+IrJcC<$JcC<$Q2g^]JcC<$
+aoDA at JcEjlrr@WMJcC<$ec1.~>
+JcC<$JcE(VqZ+h>rr at WMJcG-;rr at WM^]464JcC<$JcC<$\c83#JcC<$JcC<$Q2g^]JcC<$aoDA@
+JcEjlrr at WMJcC<$ec1.~>
+JcC<$JcE(VqZ+h>rr at WMJcG-;rr at WM^]464JcC<$JcC<$\c83#JcC<$JcC<$Q2g^]JcC<$aoDA@
+JcEjlrr at WMJcC<$ec1.~>
+JcC<$JcE:\qZ+\:rr at WMJcG'9rr at WM]Dqg0JcC<$JcC<$^&S*4TtgU-JcC<$JcC<$S,`?cJcC<$
+`W,l:JcEdjr;_EKJcC<$g&HR~>
+JcC<$JcE:\qZ+\:rr at WMJcG'9rr at WM]Dqg0JcC<$JcC<$^&OW'JcC<$JcC<$S,`?cJcC<$`W,l:
+JcEdjr;_EKJcC<$g&HR~>
+JcC<$JcE:\qZ+\:rr at WMJcG'9rr at WM]Dqg0JcC<$JcC<$^&OW'JcC<$JcC<$S,`?cJcC<$`W,l:
+JcEdjr;_EKJcC<$g&HR~>
+JcC<$JcE:\qZ+\:rr at WMJcG'9rr at WM]Dqg0JcC<$JcC<$^&S*4TtgU-JcC<$JcC<$S,`?cJcC<$
+`W,l:JcEdjr;_EKJcC<$g&HR~>
+JcC<$JcE:\qZ+\:rr at WMJcG'9rr at WM]Dqg0JcC<$JcC<$^&OW'JcC<$JcC<$S,`?cJcC<$`W,l:
+JcEdjr;_EKJcC<$g&HR~>
+JcC<$JcE:\qZ+\:rr at WMJcG'9rr at WM]Dqg0JcC<$JcC<$^&OW'JcC<$JcC<$S,`?cJcC<$`W,l:
+JcEdjr;_EKJcC<$g&HR~>
+JcC<$JcERdq#H!GJcD_Lrr at WM\,ZC,JcC<$JcC<$_>jN8TtgU-JcC<$JcC<$U&XogJcC<$_>jH6
+JcEXfr;_EKJcC<$h>`!~>
+JcC<$JcERdq#H!GJcD_Lrr at WM\,ZC,JcC<$JcC<$_>g&+JcC<$JcC<$U&XogJcC<$_>jH6JcEXf
+r;_EKJcC<$h>`!~>
+JcC<$JcERdq#H!GJcD_Lrr at WM\,ZC,JcC<$JcC<$_>g&+JcC<$JcC<$U&XogJcC<$_>jH6JcEXf
+r;_EKJcC<$h>`!~>
+JcC<$JcERdq#H!GJcD_Lrr at WM\,ZC,JcC<$JcC<$_>jN8TtgU-JcC<$JcC<$U&XogJcC<$_>jH6
+JcEXfr;_EKJcC<$h>`!~>
+JcC<$JcERdq#H!GJcD_Lrr at WM\,ZC,JcC<$JcC<$_>g&+JcC<$JcC<$U&XogJcC<$_>jH6JcEXf
+r;_EKJcC<$h>`!~>
+JcC<$JcERdq#H!GJcD_Lrr at WM\,ZC,JcC<$JcC<$_>g&+JcC<$JcC<$U&XogJcC<$_>jH6JcEXf
+r;_EKJcC<$h>`!~>
+JcC<$JcEdjqZ+b<r;_EKJcFR+rr at WMfDkdLiW&iVJcC<$JcC<$`W,r<TtgU-JcC<$JcC<$VuQVo
+JcC<$\,ZI.JcE^hrrE#tr;_EKJcC<$iW"E~>
+JcC<$JcEdjqZ+b<r;_EKJcFR+rr at WMfDkdLiW&iVJcC<$JcC<$`W)J/JcC<$JcC<$VuQVoJcC<$
+\,ZI.JcE^hrrE#tr;_EKJcC<$iW"E~>
+JcC<$JcEdjqZ+b<r;_EKJcFR+rr at WMfDkdLiW&iVJcC<$JcC<$`W)J/JcC<$JcC<$VuQVoJcC<$
+\,ZI.JcE^hrrE#tr;_EKJcC<$iW"E~>
+JcC<$JcEdjqZ+b<r;_EKJcFR+rr at WMfDkdLiW&iVJcC<$JcC<$`W,r<TtgU-JcC<$JcC<$VuQVo
+JcC<$\,ZI.JcE^hrrE#tr;_EKJcC<$iW"E~>
+JcC<$JcEdjqZ+b<r;_EKJcFR+rr at WMfDkdLiW&iVJcC<$JcC<$`W)J/JcC<$JcC<$VuQVoJcC<$
+\,ZI.JcE^hrrE#tr;_EKJcC<$iW"E~>
+JcC<$JcEdjqZ+b<r;_EKJcFR+rr at WMfDkdLiW&iVJcC<$JcC<$`W)J/JcC<$JcC<$VuQVoJcC<$
+\,ZI.JcE^hrrE#tr;_EKJcC<$iW"E~>
+JcC<$JcF!pqZ)3IJcD5>rr at WMYQ+P$JcC<$JcC<$aoDA at TtgU-JcC<$JcC<$XoJ7uJcC<$Z2ah(
+JcEXfrrDrrr;_EKJcC<$jo9i~>
+JcC<$JcF!pqZ)3IJcD5>rr at WMYQ+P$JcC<$JcC<$ao at n3JcC<$JcC<$XoJ7uJcC<$Z2ah(JcEXf
+rrDrrr;_EKJcC<$jo9i~>
+JcC<$JcF!pqZ)3IJcD5>rr at WMYQ+P$JcC<$JcC<$ao at n3JcC<$JcC<$XoJ7uJcC<$Z2ah(JcEXf
+rrDrrr;_EKJcC<$jo9i~>
+JcC<$JcF!pqZ)3IJcD5>rr at WMYQ+P$JcC<$JcC<$aoDA at TtgU-JcC<$JcC<$XoJ7uJcC<$Z2ah(
+JcEXfrrDrrr;_EKJcC<$jo9i~>
+JcC<$JcF!pqZ)3IJcD5>rr at WMYQ+P$JcC<$JcC<$ao at n3JcC<$JcC<$XoJ7uJcC<$Z2ah(JcEXf
+rrDrrr;_EKJcC<$jo9i~>
+JcC<$JcF!pqZ)3IJcD5>rr at WMYQ+P$JcC<$JcC<$ao at n3JcC<$JcC<$XoJ7uJcC<$Z2ah(JcEXf
+rrDrrr;_EKJcC<$jo9i~>
+JcC<$JcF4!qZ+n at r;_KMrr at WMc2[eDJcDeNr;_EKJcC<$JcF!prrAb-rr at WMJcC<$JcE(VqZ)3I
+fDkjNJcF@%rr at WMrrBV0r;_EKJcC<$l2Q8~>
+JcC<$JcF4!qZ+n at r;_KMrr at WMc2[eDJcDeNr;_EKJcC<$JcF!pSH+6 at JcC<$JcE(VqZ)3IfDkjN
+JcF@%rr at WMrrBV0r;_EKJcC<$l2Q8~>
+JcC<$JcF4!qZ+n at r;_KMrr at WMc2[eDJcDeNr;_EKJcC<$JcF!pSH+6 at JcC<$JcE(VqZ)3IfDkjN
+JcF@%rr at WMrrBV0r;_EKJcC<$l2Q8~>
+JcC<$JcF4!qZ+n at r;_KMrr at WMc2[eDJcDeNr;_EKJcC<$JcF!prrAb-rr at WMJcC<$JcE(VqZ)3I
+fDkjNJcF@%rr at WMrrBV0r;_EKJcC<$l2Q8~>
+JcC<$JcF4!qZ+n at r;_KMrr at WMc2[eDJcDeNr;_EKJcC<$JcF!pSH+6 at JcC<$JcE(VqZ)3IfDkjN
+JcF@%rr at WMrrBV0r;_EKJcC<$l2Q8~>
+JcC<$JcF4!qZ+n at r;_KMrr at WMc2[eDJcDeNr;_EKJcC<$JcF!pSH+6 at JcC<$JcE(VqZ)3IfDkjN
+JcF@%rr at WMrrBV0r;_EKJcC<$l2Q8~>
+JcC<$JcFL)q#H!G`W,r<JcF!prr at WMq>^HpZ2ab&JcC<$JcC<$dJs4HTtgU-JcC<$JcC<$\c;O,
+JcF-trr at WMfDkjNJcG`M[K$7,JcC<$JcG'9J,~>
+JcC<$JcFL)q#H!G`W,r<JcF!prr at WMq>^HpZ2ab&JcC<$JcC<$dJoa;JcC<$JcC<$\c;O,JcF-t
+rr at WMfDkjNJcG`M[K$7,JcC<$JcG'9J,~>
+JcC<$JcFL)q#H!G`W,r<JcF!prr at WMq>^HpZ2ab&JcC<$JcC<$dJoa;JcC<$JcC<$\c;O,JcF-t
+rr at WMfDkjNJcG`M[K$7,JcC<$JcG'9J,~>
+JcC<$JcFL)q#H!G`W,r<JcF!prr at WMq>^HpZ2ab&JcC<$JcC<$dJs4HTtgU-JcC<$JcC<$\c;O,
+JcF-trr at WMfDkjNJcG`M[K$7,JcC<$JcG'9J,~>
+JcC<$JcFL)q#H!G`W,r<JcF!prr at WMq>^HpZ2ab&JcC<$JcC<$dJoa;JcC<$JcC<$\c;O,JcF-t
+rr at WMfDkjNJcG`M[K$7,JcC<$JcG'9J,~>
+JcC<$JcFL)q#H!G`W,r<JcF!prr at WMq>^HpZ2ab&JcC<$JcC<$dJoa;JcC<$JcC<$\c;O,JcF-t
+rr at WMfDkjNJcG`M[K$7,JcC<$JcG'9J,~>
+JcC<$JcF^/qZ)3IJcCN*rr at WMq>^HpdJs.FiW&iVJcC<$JcC<$ec5XLTtgU-JcC<$JcC<$^]402
+JcC<$TE"okJcE.XrrE*!r;_EKJcC<$n,In~>
+JcC<$JcF^/qZ)3IJcCN*rr at WMq>^HpdJs.FiW&iVJcC<$JcC<$ec20?JcC<$JcC<$^]402JcC<$
+TE"okJcE.XrrE*!r;_EKJcC<$n,In~>
+JcC<$JcF^/qZ)3IJcCN*rr at WMq>^HpdJs.FiW&iVJcC<$JcC<$ec20?JcC<$JcC<$^]402JcC<$
+TE"okJcE.XrrE*!r;_EKJcC<$n,In~>
+JcC<$JcF^/qZ)3IJcCN*rr at WMq>^HpdJs.FiW&iVJcC<$JcC<$ec5XLTtgU-JcC<$JcC<$^]402
+JcC<$TE"okJcE.XrrE*!r;_EKJcC<$n,In~>
+JcC<$JcF^/qZ)3IJcCN*rr at WMq>^HpdJs.FiW&iVJcC<$JcC<$ec20?JcC<$JcC<$^]402JcC<$
+TE"okJcE.XrrE*!r;_EKJcC<$n,In~>
+JcC<$JcF^/qZ)3IJcCN*rr at WMq>^HpdJs.FiW&iVJcC<$JcC<$ec20?JcC<$JcC<$^]402JcC<$
+TE"okJcE.XrrE*!r;_EKJcC<$n,In~>
+JcC<$JcFp5qZ+b<r;_EKJcEF`rr at WMTE"iiJcC<$JcC<$g&M'PTtgU-JcC<$JcC<$`W,f8JcC<$
+RK*9eJcE(VrrE#tr;_EKJcC<$oDa=~>
+JcC<$JcFp5qZ+b<r;_EKJcEF`rr at WMTE"iiJcC<$JcC<$g&ITCJcC<$JcC<$`W,f8JcC<$RK*9e
+JcE(VrrE#tr;_EKJcC<$oDa=~>
+JcC<$JcFp5qZ+b<r;_EKJcEF`rr at WMTE"iiJcC<$JcC<$g&ITCJcC<$JcC<$`W,f8JcC<$RK*9e
+JcE(VrrE#tr;_EKJcC<$oDa=~>
+JcC<$JcFp5qZ+b<r;_EKJcEF`rr at WMTE"iiJcC<$JcC<$g&M'PTtgU-JcC<$JcC<$`W,f8JcC<$
+RK*9eJcE(VrrE#tr;_EKJcC<$oDa=~>
+JcC<$JcFp5qZ+b<r;_EKJcEF`rr at WMTE"iiJcC<$JcC<$g&ITCJcC<$JcC<$`W,f8JcC<$RK*9e
+JcE(VrrE#tr;_EKJcC<$oDa=~>
+JcC<$JcFp5qZ+b<r;_EKJcEF`rr at WMTE"iiJcC<$JcC<$g&ITCJcC<$JcC<$`W,f8JcC<$RK*9e
+JcE(VrrE#tr;_EKJcC<$oDa=~>
+JcC<$JcG3=q#H!GJcC<$qu?ZrJcD5>r;_EKJcC<$JcFR+rrAb-rr at WMJcC<$JcEpnqZ,s^rr at WM
+JcDkPr;_EKWW2nsJcC<$JcGKEJ,~>
+JcC<$JcG3=q#H!GJcC<$qu?ZrJcD5>r;_EKJcC<$JcFR+SH+6 at JcC<$JcEpnqZ,s^rr at WMJcDkP
+r;_EKWW2nsJcC<$JcGKEJ,~>
+JcC<$JcG3=q#H!GJcC<$qu?ZrJcD5>r;_EKJcC<$JcFR+SH+6 at JcC<$JcEpnqZ,s^rr at WMJcDkP
+r;_EKWW2nsJcC<$JcGKEJ,~>
+JcC<$JcG3=q#H!GJcC<$qu?ZrJcD5>r;_EKJcC<$JcFR+rrAb-rr at WMJcC<$JcEpnqZ,s^rr at WM
+JcDkPr;_EKWW2nsJcC<$JcGKEJ,~>
+JcC<$JcG3=q#H!GJcC<$qu?ZrJcD5>r;_EKJcC<$JcFR+SH+6 at JcC<$JcEpnqZ,s^rr at WMJcDkP
+r;_EKWW2nsJcC<$JcGKEJ,~>
+JcC<$JcG3=q#H!GJcC<$qu?ZrJcD5>r;_EKJcC<$JcFR+SH+6 at JcC<$JcEpnqZ,s^rr at WMJcDkP
+r;_EKWW2nsJcC<$JcGKEJ,~>
+JcC<$JcGECqZ,IPrrDThr;_EKJcDkPrr at WMQiI!aJcC<$JcC<$iW&oXU!N`=JcC<$JcC<$e,T4D
+jo>>\JcC<$XoJ>"JcDSHr;_EKJcC<$qu;0~>
+JcC<$JcGECqZ,IPrrDThr;_EKJcDkPrr at WMQiI!aJcC<$JcC<$iW#GKJcC<$JcC<$e,T4Djo>>\
+JcC<$XoJ>"JcDSHr;_EKJcC<$qu;0~>
+JcC<$JcGECqZ,IPrrDThr;_EKJcDkPrr at WMQiI!aJcC<$JcC<$iW#GKJcC<$JcC<$e,T4Djo>>\
+JcC<$XoJ>"JcDSHr;_EKJcC<$qu;0~>
+JcC<$JcGECqZ,IPrrDThr;_EKJcDkPrr at WMQiI!aJcC<$JcC<$iW&oXU!N`=JcC<$JcC<$e,T4D
+jo>>\JcC<$XoJ>"JcDSHr;_EKJcC<$qu;0~>
+JcC<$JcGECqZ,IPrrDThr;_EKJcDkPrr at WMQiI!aJcC<$JcC<$iW#GKJcC<$JcC<$e,T4Djo>>\
+JcC<$XoJ>"JcDSHr;_EKJcC<$qu;0~>
+JcC<$JcGECqZ,IPrrDThr;_EKJcDkPrr at WMQiI!aJcC<$JcC<$iW#GKJcC<$JcC<$e,T4Djo>>\
+JcC<$XoJ>"JcDSHr;_EKJcC<$qu;0~>
+JcC<$JcGWIqZ,7Jrr at WMJcD/<rr at WM\,ZC,iW&iVJcC<$JcC<$jo>>\U!N`=JcC<$JcC<$g&LpL
+JcC<$L&_/QJcDGDrr at WMJcC<$rVqB~>
+JcC<$JcGWIqZ,7Jrr at WMJcD/<rr at WM\,ZC,iW&iVJcC<$JcC<$jo:kOJcC<$JcC<$g&LpLJcC<$
+L&_/QJcDGDrr at WMJcC<$rVqB~>
+JcC<$JcGWIqZ,7Jrr at WMJcD/<rr at WM\,ZC,iW&iVJcC<$JcC<$jo:kOJcC<$JcC<$g&LpLJcC<$
+L&_/QJcDGDrr at WMJcC<$rVqB~>
+JcC<$JcGWIqZ,7Jrr at WMJcD/<rr at WM\,ZC,iW&iVJcC<$JcC<$jo>>\U!N`=JcC<$JcC<$g&LpL
+JcC<$L&_/QJcDGDrr at WMJcC<$rVqB~>
+JcC<$JcGWIqZ,7Jrr at WMJcD/<rr at WM\,ZC,iW&iVJcC<$JcC<$jo:kOJcC<$JcC<$g&LpLJcC<$
+L&_/QJcDGDrr at WMJcC<$rVqB~>
+JcC<$JcGWIqZ,7Jrr at WMJcD/<rr at WM\,ZC,iW&iVJcC<$JcC<$jo:kOJcC<$JcC<$g&LpLJcC<$
+L&_/QJcDGDrr at WMJcC<$rVqB~>
+JcC<$JcGTIc2[eDJcC<$ScA]iJcCf2r;_EKJcC<$JcG!7rrAb=rr at WMJcC<$JcFX-q#H!GJcCH(
+rrE*!rr at WMV>pJos8W#tJcC<$JcC6~>
+JcC<$JcGTIc2[eDJcC<$ScA]iJcCf2r;_EKJcC<$JcG!7SH+6 at JcC<$JcFX-q#H!GJcCH(rrE*!
+rr at WMV>pJos8W#tJcC<$JcC6~>
+JcC<$JcGTIc2[eDJcC<$ScA]iJcCf2r;_EKJcC<$JcG!7SH+6 at JcC<$JcFX-q#H!GJcCH(rrE*!
+rr at WMV>pJos8W#tJcC<$JcC6~>
+JcC<$JcGTIc2[eDJcC<$ScA]iJcCf2r;_EKJcC<$JcG!7rrAb=rr at WMJcC<$JcFX-q#H!GJcCH(
+rrE*!rr at WMV>pJos8W#tJcC<$JcC6~>
+JcC<$JcGTIc2[eDJcC<$ScA]iJcCf2r;_EKJcC<$JcG!7SH+6 at JcC<$JcFX-q#H!GJcCH(rrE*!
+rr at WMV>pJos8W#tJcC<$JcC6~>
+JcC<$JcGTIc2[eDJcC<$ScA]iJcCf2r;_EKJcC<$JcG!7SH+6 at JcC<$JcFX-q#H!GJcCH(rrE*!
+rr at WMV>pJos8W#tJcC<$JcC6~>
+JcC<$M?!AOaoDA at JcF-trr@WMc2[eDJcCZ.rr at WMJcC<$JcG'9rrAb=rr at WMJcC<$JcFj3qZ)3I
+V>pPqJcF@%rr at WMrrAVir;_EKJcCH(J,~>
+JcC<$M?!AOaoDA at JcF-trr@WMc2[eDJcCZ.rr at WMJcC<$JcG'9SH+6 at JcC<$JcFj3qZ)3IV>pPq
+JcF@%rr at WMrrAVir;_EKJcCH(J,~>
+JcC<$M?!AOaoDA at JcF-trr@WMc2[eDJcCZ.rr at WMJcC<$JcG'9SH+6 at JcC<$JcFj3qZ)3IV>pPq
+JcF@%rr at WMrrAVir;_EKJcCH(J,~>
+JcC<$M?!AOaoDA at JcF-trr@WMc2[eDJcCZ.rr at WMJcC<$JcG'9rrAb=rr at WMJcC<$JcFj3qZ)3I
+V>pPqJcF@%rr at WMrrAVir;_EKJcCH(J,~>
+JcC<$M?!AOaoDA at JcF-trr@WMc2[eDJcCZ.rr at WMJcC<$JcG'9SH+6 at JcC<$JcFj3qZ)3IV>pPq
+JcF@%rr at WMrrAVir;_EKJcCH(J,~>
+JcC<$M?!AOaoDA at JcF-trr@WMc2[eDJcCZ.rr at WMJcC<$JcG'9SH+6 at JcC<$JcFj3qZ)3IV>pPq
+JcF@%rr at WMrrAVir;_EKJcCH(J,~>
+JcC<$O8o(WJcCf2rr at WMc2[eDJcGQGrrA8_r;_EKJcC<$JcG3=rrAb=rr at WMJcC<$JcG'9qZ)3I
+TE"okJcF@%rr at WMrrAJer;_EKJcCT,J,~>
+JcC<$O8o(WJcCf2rr at WMc2[eDJcGQGrrA8_r;_EKJcC<$JcG3=SH+6 at JcC<$JcG'9qZ)3ITE"ok
+JcF@%rr at WMrrAJer;_EKJcCT,J,~>
+JcC<$O8o(WJcCf2rr at WMc2[eDJcGQGrrA8_r;_EKJcC<$JcG3=SH+6 at JcC<$JcG'9qZ)3ITE"ok
+JcF@%rr at WMrrAJer;_EKJcCT,J,~>
+JcC<$O8o(WJcCf2rr at WMc2[eDJcGQGrrA8_r;_EKJcC<$JcG3=rrAb=rr at WMJcC<$JcG'9qZ)3I
+TE"okJcF@%rr at WMrrAJer;_EKJcCT,J,~>
+JcC<$O8o(WJcCf2rr at WMc2[eDJcGQGrrA8_r;_EKJcC<$JcG3=SH+6 at JcC<$JcG'9qZ)3ITE"ok
+JcF@%rr at WMrrAJer;_EKJcCT,J,~>
+JcC<$O8o(WJcCf2rr at WMc2[eDJcGQGrrA8_r;_EKJcC<$JcG3=SH+6 at JcC<$JcG'9qZ)3ITE"ok
+JcF@%rr at WMrrAJer;_EKJcCT,J,~>
+JcC<$Q2g^]bQ%M at JcC<$NW9"YJcGQGrrB>(r;bmXr;_EKJcC<$JcG?ArrAb=rr at WMJcC<$JcG9?
+qZ)3IJcC<$r;cBfrrDlprr at WMScAWgJcC<$NW4M~>
+JcC<$Q2g^]bQ%M at JcC<$NW9"YJcGQGrrB>(r;bmXr;_EKJcC<$JcG?ASH+6 at JcC<$JcG9?qZ)3I
+JcC<$r;cBfrrDlprr at WMScAWgJcC<$NW4M~>
+JcC<$Q2g^]bQ%M at JcC<$NW9"YJcGQGrrB>(r;bmXr;_EKJcC<$JcG?ASH+6 at JcC<$JcG9?qZ)3I
+JcC<$r;cBfrrDlprr at WMScAWgJcC<$NW4M~>
+JcC<$Q2g^]bQ%M at JcC<$NW9"YJcGQGrrB>(r;bmXr;_EKJcC<$JcG?ArrAb=rr at WMJcC<$JcG9?
+qZ)3IJcC<$r;cBfrrDlprr at WMScAWgJcC<$NW4M~>
+JcC<$Q2g^]bQ%M at JcC<$NW9"YJcGQGrrB>(r;bmXr;_EKJcC<$JcG?ASH+6 at JcC<$JcG9?qZ)3I
+JcC<$r;cBfrrDlprr at WMScAWgJcC<$NW4M~>
+JcC<$Q2g^]bQ%M at JcC<$NW9"YJcGQGrrB>(r;bmXr;_EKJcC<$JcG?ASH+6 at JcC<$JcG9?qZ)3I
+JcC<$r;cBfrrDlprr at WMScAWgJcC<$NW4M~>
+JcC<$ScAKcJcC<$JcF!prr at WMJcGZKJcC<$JcC<$p](6nU!N`=JcC<$JcC<$p](*jJcC<$JcFp5
+rrDfnrr at WMU&Y,mrVufrJcC<$OoKq~>
+JcC<$ScAKcJcC<$JcF!prr at WMJcGZKJcC<$JcC<$p]$caJcC<$JcC<$p](*jJcC<$JcFp5rrDfn
+rr at WMU&Y,mrVufrJcC<$OoKq~>
+JcC<$ScAKcJcC<$JcF!prr at WMJcGZKJcC<$JcC<$p]$caJcC<$JcC<$p](*jJcC<$JcFp5rrDfn
+rr at WMU&Y,mrVufrJcC<$OoKq~>
+JcC<$ScAKcJcC<$JcF!prr at WMJcGZKJcC<$JcC<$p](6nU!N`=JcC<$JcC<$p](*jJcC<$JcFp5
+rrDfnrr at WMU&Y,mrVufrJcC<$OoKq~>
+JcC<$ScAKcJcC<$JcF!prr at WMJcGZKJcC<$JcC<$p]$caJcC<$JcC<$p](*jJcC<$JcFp5rrDfn
+rr at WMU&Y,mrVufrJcC<$OoKq~>
+JcC<$ScAKcJcC<$JcF!prr at WMJcGZKJcC<$JcC<$p]$caJcC<$JcC<$p](*jJcC<$JcFp5rrDfn
+rr at WMU&Y,mrVufrJcC<$OoKq~>
+JcC<$U]:2kbQ%SBJcC<$JcG]Krr at WMJcG]Kr;_EKJcC<$JcGWIrrAb=rr at WMJcC<$JcG]KqZ+2,
+rr at WMJcF!prrD*Zr;_EKPQ1X_qu?ZrJcC<$PQ-.~>
+JcC<$U]:2kbQ%SBJcC<$JcG]Krr at WMJcG]Kr;_EKJcC<$JcGWISH+6 at JcC<$JcG]KqZ+2,rr at WM
+JcF!prrD*Zr;_EKPQ1X_qu?ZrJcC<$PQ-.~>
+JcC<$U]:2kbQ%SBJcC<$JcG]Krr at WMJcG]Kr;_EKJcC<$JcGWISH+6 at JcC<$JcG]KqZ+2,rr at WM
+JcF!prrD*Zr;_EKPQ1X_qu?ZrJcC<$PQ-.~>
+JcC<$U]:2kbQ%SBJcC<$JcG]Krr at WMJcG]Kr;_EKJcC<$JcGWIrrAb=rr at WMJcC<$JcG]KqZ+2,
+rr at WMJcF!prrD*Zr;_EKPQ1X_qu?ZrJcC<$PQ-.~>
+JcC<$U]:2kbQ%SBJcC<$JcG]Krr at WMJcG]Kr;_EKJcC<$JcGWISH+6 at JcC<$JcG]KqZ+2,rr at WM
+JcF!prrD*Zr;_EKPQ1X_qu?ZrJcC<$PQ-.~>
+JcC<$U]:2kbQ%SBJcC<$JcG]Krr at WMJcG]Kr;_EKJcC<$JcGWISH+6 at JcC<$JcG]KqZ+2,rr at WM
+JcF!prrD*Zr;_EKPQ1X_qu?ZrJcC<$PQ-.~>
+JcC<$WW2hqa8c/>jo>>\JcC<$RK*9eJcC<$q>^BnJcC<$JcC<$s8W*!U#5kMJcC<$JcCB&qZ*u&
+rr at WMJcF'rrrD$Xr;_EKM?!MSJcC<$QiDR~>
+JcC<$WW2hqa8c/>jo>>\JcC<$RK*9eJcC<$q>^BnJcC<$JcC<$s8SViJcC<$JcCB&qZ*u&rr at WM
+JcF'rrrD$Xr;_EKM?!MSJcC<$QiDR~>
+JcC<$WW2hqa8c/>jo>>\JcC<$RK*9eJcC<$q>^BnJcC<$JcC<$s8SViJcC<$JcCB&qZ*u&rr at WM
+JcF'rrrD$Xr;_EKM?!MSJcC<$QiDR~>
+JcC<$WW2hqa8c/>jo>>\JcC<$RK*9eJcC<$q>^BnJcC<$JcC<$s8W*!U#5kMJcC<$JcCB&qZ*u&
+rr at WMJcF'rrrD$Xr;_EKM?!MSJcC<$QiDR~>
+JcC<$WW2hqa8c/>jo>>\JcC<$RK*9eJcC<$q>^BnJcC<$JcC<$s8SViJcC<$JcCB&qZ*u&rr at WM
+JcF'rrrD$Xr;_EKM?!MSJcC<$QiDR~>
+JcC<$WW2hqa8c/>jo>>\JcC<$RK*9eJcC<$q>^BnJcC<$JcC<$s8SViJcC<$JcCB&qZ*u&rr at WM
+JcF'rrrD$Xr;_EKM?!MSJcC<$QiDR~>
+JcC<$Z2aV"U]:>oJcC<$RK*9eJcD):rrD$Xr;_EKJcC<$KE(rOU#5kMJcC<$JcCT,qZ)3IJcC<$
+ec5XLJcCH(r;_EKJcD5>J,~>
+JcC<$Z2aV"U]:>oJcC<$RK*9eJcD):rrD$Xr;_EKJcC<$KE%JBJcC<$JcCT,qZ)3IJcC<$ec5XL
+JcCH(r;_EKJcD5>J,~>
+JcC<$Z2aV"U]:>oJcC<$RK*9eJcD):rrD$Xr;_EKJcC<$KE%JBJcC<$JcCT,qZ)3IJcC<$ec5XL
+JcCH(r;_EKJcD5>J,~>
+JcC<$Z2aV"U]:>oJcC<$RK*9eJcD):rrD$Xr;_EKJcC<$KE(rOU#5kMJcC<$JcCT,qZ)3IJcC<$
+ec5XLJcCH(r;_EKJcD5>J,~>
+JcC<$Z2aV"U]:>oJcC<$RK*9eJcD):rrD$Xr;_EKJcC<$KE%JBJcC<$JcCT,qZ)3IJcC<$ec5XL
+JcCH(r;_EKJcD5>J,~>
+JcC<$Z2aV"U]:>oJcC<$RK*9eJcD):rrD$Xr;_EKJcC<$KE%JBJcC<$JcCT,qZ)3IJcC<$ec5XL
+JcCH(r;_EKJcD5>J,~>
+JcC<$\,Z=*aoD;>JcC<$JcG-;rr at WMQ2gjahuEWTJcC<$JcCN*rrAbMrr at WMJcC<$O8o(WJcC<$
+KE(lMdJs4Hl2U\^JcDGDrrE*!r;_EKJcDABJ,~>
+JcC<$\,Z=*aoD;>JcC<$JcG-;rr at WMQ2gjahuEWTJcC<$JcCN*SH+6 at JcC<$O8o(WJcC<$KE(lM
+dJs4Hl2U\^JcDGDrrE*!r;_EKJcDABJ,~>
+JcC<$\,Z=*aoD;>JcC<$JcG-;rr at WMQ2gjahuEWTJcC<$JcCN*SH+6 at JcC<$O8o(WJcC<$KE(lM
+dJs4Hl2U\^JcDGDrrE*!r;_EKJcDABJ,~>
+JcC<$\,Z=*aoD;>JcC<$JcG-;rr at WMQ2gjahuEWTJcC<$JcCN*rrAbMrr at WMJcC<$O8o(WJcC<$
+KE(lMdJs4Hl2U\^JcDGDrrE*!r;_EKJcDABJ,~>
+JcC<$\,Z=*aoD;>JcC<$JcG-;rr at WMQ2gjahuEWTJcC<$JcCN*SH+6 at JcC<$O8o(WJcC<$KE(lM
+dJs4Hl2U\^JcDGDrrE*!r;_EKJcDABJ,~>
+JcC<$\,Z=*aoD;>JcC<$JcG-;rr at WMQ2gjahuEWTJcC<$JcCN*SH+6 at JcC<$O8o(WJcC<$KE(lM
+dJs4Hl2U\^JcDGDrrE*!r;_EKJcDABJ,~>
+JcC<$^&Rs0JcC<$iW&oXJcF:#r;cfrrr at WMJcG-;r;_EKJcC<$MuWeWU#5kMJcC<$JcD):q#H!G
+JcGECrr at WMfDkjNJcG`ML&_/QrVufrJcC<$U]5i~>
+JcC<$^&Rs0JcC<$iW&oXJcF:#r;cfrrr at WMJcG-;r;_EKJcC<$MuT=JJcC<$JcD):q#H!GJcGEC
+rr at WMfDkjNJcG`ML&_/QrVufrJcC<$U]5i~>
+JcC<$^&Rs0JcC<$iW&oXJcF:#r;cfrrr at WMJcG-;r;_EKJcC<$MuT=JJcC<$JcD):q#H!GJcGEC
+rr at WMfDkjNJcG`ML&_/QrVufrJcC<$U]5i~>
+JcC<$^&Rs0JcC<$iW&oXJcF:#r;cfrrr at WMJcG-;r;_EKJcC<$MuWeWU#5kMJcC<$JcD):q#H!G
+JcGECrr at WMfDkjNJcG`ML&_/QrVufrJcC<$U]5i~>
+JcC<$^&Rs0JcC<$iW&oXJcF:#r;cfrrr at WMJcG-;r;_EKJcC<$MuT=JJcC<$JcD):q#H!GJcGEC
+rr at WMfDkjNJcG`ML&_/QrVufrJcC<$U]5i~>
+JcC<$^&Rs0JcC<$iW&oXJcF:#r;cfrrr at WMJcG-;r;_EKJcC<$MuT=JJcC<$JcD):q#H!GJcGEC
+rr at WMfDkjNJcG`ML&_/QrVufrJcC<$U]5i~>
+JcC<$_uKT6c2[_BJcCr6rr at WMc2[eDJcGQGrr at WMoDeahJcC<$JcCf2rrAbMrr at WMJcC<$ScAQe
+JcC<$mJm1dRK*9e_>jN8JcG`MJcGWIrr at WMJcDSHJ,~>
+JcC<$_uKT6c2[_BJcCr6rr at WMc2[eDJcGQGrr at WMoDeahJcC<$JcCf2SH+6 at JcC<$ScAQeJcC<$
+mJm1dRK*9e_>jN8JcG`MJcGWIrr at WMJcDSHJ,~>
+JcC<$_uKT6c2[_BJcCr6rr at WMc2[eDJcGQGrr at WMoDeahJcC<$JcCf2SH+6 at JcC<$ScAQeJcC<$
+mJm1dRK*9e_>jN8JcG`MJcGWIrr at WMJcDSHJ,~>
+JcC<$_uKT6c2[_BJcCr6rr at WMc2[eDJcGQGrr at WMoDeahJcC<$JcCf2rrAbMrr at WMJcC<$ScAQe
+JcC<$mJm1dRK*9e_>jN8JcG`MJcGWIrr at WMJcDSHJ,~>
+JcC<$_uKT6c2[_BJcCr6rr at WMc2[eDJcGQGrr at WMoDeahJcC<$JcCf2SH+6 at JcC<$ScAQeJcC<$
+mJm1dRK*9e_>jN8JcG`MJcGWIrr at WMJcDSHJ,~>
+JcC<$_uKT6c2[_BJcCr6rr at WMc2[eDJcGQGrr at WMoDeahJcC<$JcCf2SH+6 at JcC<$ScAQeJcC<$
+mJm1dRK*9e_>jN8JcG`MJcGWIrr at WMJcDSHJ,~>
+JcC<$bQ%A<JcC<$JcE.XrrDHdrrDfnrrB>(iL'<<rrA2]rrD$Xr;_EKJcC<$PQ1X_U#5kMJcC<$
+JcDMFqZ)3IJcC<$s8W*!^]4<6JcC<$p](0lJcC<$WW.J~>
+JcC<$bQ%A<JcC<$JcE.XrrDHdrrDfnrrB>(i>2+drrA2]rrD$Xr;_EKJcC<$PQ.0RJcC<$JcDMF
+qZ)3IJcC<$s8W*!^]4<6JcC<$p](0lJcC<$WW.J~>
+JcC<$bQ%A<JcC<$JcE.XrrDHdrrDfnrrB>(i>2+drrA2]rrD$Xr;_EKJcC<$PQ.0RJcC<$JcDMF
+qZ)3IJcC<$s8W*!^]4<6JcC<$p](0lJcC<$WW.J~>
+JcC<$bQ%A<JcC<$JcE.XrrDHdrrDfnrrB>(iL'<<rrA2]rrD$Xr;_EKJcC<$PQ1X_U#5kMJcC<$
+JcDMFqZ)3IJcC<$s8W*!^]4<6JcC<$p](0lJcC<$WW.J~>
+JcC<$bQ%A<JcC<$JcE.XrrDHdrrDfnrrB>(i>2+drrA2]rrD$Xr;_EKJcC<$PQ.0RJcC<$JcDMF
+qZ)3IJcC<$s8W*!^]4<6JcC<$p](0lJcC<$WW.J~>
+JcC<$bQ%A<JcC<$JcE.XrrDHdrrDfnrrB>(i>2+drrA2]rrD$Xr;_EKJcC<$PQ.0RJcC<$JcDMF
+qZ)3IJcC<$s8W*!^]4<6JcC<$p](0lJcC<$WW.J~>
+JcC<$dJs(DJcC<$JcDqRrrDBbrrD`lrrBV0rL!2HkEq&)rrCsVr;_EKJcC<$QiI'cU#5kMJcC<$
+JcD_LqZ)3IJcC<$[K$7,g&M'PJcD;@r;_EKJcDkPJ,~>
+JcC<$dJs(DJcC<$JcDqRrrDBbrrD`lrrBV0eJ<r?rrCsVr;_EKJcC<$QiETVJcC<$JcD_LqZ)3I
+JcC<$[K$7,g&M'PJcD;@r;_EKJcDkPJ,~>
+JcC<$dJs(DJcC<$JcDqRrrDBbrrD`lrrBV0eJ<r?rrCsVr;_EKJcC<$QiETVJcC<$JcD_LqZ)3I
+JcC<$[K$7,g&M'PJcD;@r;_EKJcDkPJ,~>
+JcC<$dJs(DJcC<$JcDqRrrDBbrrD`lrrBV0rL!2HkEq&)rrCsVr;_EKJcC<$QiI'cU#5kMJcC<$
+JcD_LqZ)3IJcC<$[K$7,g&M'PJcD;@r;_EKJcDkPJ,~>
+JcC<$dJs(DJcC<$JcDqRrrDBbrrD`lrrBV0eJ<r?rrCsVr;_EKJcC<$QiETVJcC<$JcD_LqZ)3I
+JcC<$[K$7,g&M'PJcD;@r;_EKJcDkPJ,~>
+JcC<$dJs(DJcC<$JcDqRrrDBbrrD`lrrBV0eJ<r?rrCsVr;_EKJcC<$QiETVJcC<$JcD_LqZ)3I
+JcC<$[K$7,g&M'PJcD;@r;_EKJcDkPJ,~>
+JcC<$fDk^JaoD;>JcC<$JcF!prrB8&iLKY0qjdPNJcFj3r;_EKJcC<$S,`KgU#5kMJcC<$JcDqR
+qZ)EOrr at WMJcGcMr;a2(r;bILrr at WMWW2tuqu?Tps8W#tJcC<$Z2]=~>
+JcC<$fDk^JaoD;>JcC<$JcF!prrB8&b8,[/jo>8ZJcC<$JcD5>SH+6 at JcC<$YQ+J"L]@ASJcC<$
+s8W#tZiBt(fDkjNJcD_LrrDrrr;cltr;_EKJcE"TJ,~>
+JcC<$fDk^JaoD;>JcC<$JcF!prrB8&b8,[/jo>8ZJcC<$JcD5>SH+6 at JcC<$YQ+J"L]@ASJcC<$
+s8W#tZiBt(fDkjNJcD_LrrDrrr;cltr;_EKJcE"TJ,~>
+JcC<$fDk^JaoD;>JcC<$JcF!prrB8&iLKY0qjdPNJcFj3r;_EKJcC<$S,`KgU#5kMJcC<$JcDqR
+qZ)EOrr at WMJcGcMr;a2(r;bILrr at WMWW2tuqu?Tps8W#tJcC<$Z2]=~>
+JcC<$fDk^JaoD;>JcC<$JcF!prrB8&b8,[/jo>8ZJcC<$JcD5>SH+6 at JcC<$YQ+J"L]@ASJcC<$
+s8W#tZiBt(fDkjNJcD_LrrDrrr;cltr;_EKJcE"TJ,~>
+JcC<$fDk^JaoD;>JcC<$JcF!prrB8&b8,[/jo>8ZJcC<$JcD5>SH+6 at JcC<$YQ+J"L]@ASJcC<$
+s8W#tZiBt(fDkjNJcD_LrrDrrr;cltr;_EKJcE"TJ,~>
+JcC<$huEKPJcGECrr at WMJcERdr;b[RrrBJ,s/3u/q3Za5kPtJ\JcC<$JcDABrrAb]rr at WMJcC<$
+[K$+(JcG`MJcC<$XoJ>"JcC<$rVultnc/OfJcC<$[Jta~>
+JcC<$huEKPJcGECrr at WMJcERdr;b[RrrBJ,^D;D#kPtJ\JcC<$JcDABSH+6 at JcC<$[K$+(JcG`M
+JcC<$XoJ>"JcC<$rVultnc/OfJcC<$[Jta~>
+JcC<$huEKPJcGECrr at WMJcERdr;b[RrrBJ,^D;D#kPtJ\JcC<$JcDABSH+6 at JcC<$[K$+(JcG`M
+JcC<$XoJ>"JcC<$rVultnc/OfJcC<$[Jta~>
+JcC<$huEKPJcGECrr at WMJcERdr;b[RrrBJ,s/3u/q3Za5kPtJ\JcC<$JcDABrrAb]rr at WMJcC<$
+[K$+(JcG`MJcC<$XoJ>"JcC<$rVultnc/OfJcC<$[Jta~>
+JcC<$huEKPJcGECrr at WMJcERdr;b[RrrBJ,^D;D#kPtJ\JcC<$JcDABSH+6 at JcC<$[K$+(JcG`M
+JcC<$XoJ>"JcC<$rVultnc/OfJcC<$[Jta~>
+JcC<$huEKPJcGECrr at WMJcERdr;b[RrrBJ,^D;D#kPtJ\JcC<$JcDABSH+6 at JcC<$[K$+(JcG`M
+JcC<$XoJ>"JcC<$rVultnc/OfJcC<$[Jta~>
+JcC<$jo>2XbQ%M at VuQbsJcC<$RK*9ekPtP^ec5ZLq4-iEf:;l=M?!SUq>^Hpli6n`JcC<$JcDMF
+rrAb]rr at WMJcC<$]Dqa.JcC<$JcDMFrr at WMJcFp5r;_EKJcE:\J,~>
+JcC<$jo>2XbQ%M at VuQbsJcC<$RK*9ekPtP^ec3)oM?!SUq>^Hpli6n`JcC<$JcDMFSH+6 at JcC<$
+]Dqa.JcC<$JcDMFrr at WMJcFp5r;_EKJcE:\J,~>
+JcC<$jo>2XbQ%M at VuQbsJcC<$RK*9ekPtP^ec3)oM?!SUq>^Hpli6n`JcC<$JcDMFSH+6 at JcC<$
+]Dqa.JcC<$JcDMFrr at WMJcFp5r;_EKJcE:\J,~>
+JcC<$jo>2XbQ%M at VuQbsJcC<$RK*9ekPtP^ec5ZLq4-iEf:;l=M?!SUq>^Hpli6n`JcC<$JcDMF
+rrAb]rr at WMJcC<$]Dqa.JcC<$JcDMFrr at WMJcFp5r;_EKJcE:\J,~>
+JcC<$jo>2XbQ%M at VuQbsJcC<$RK*9ekPtP^ec3)oM?!SUq>^Hpli6n`JcC<$JcDMFSH+6 at JcC<$
+]Dqa.JcC<$JcDMFrr at WMJcFp5r;_EKJcE:\J,~>
+JcC<$jo>2XbQ%M at VuQbsJcC<$RK*9ekPtP^ec3)oM?!SUq>^Hpli6n`JcC<$JcDMFSH+6 at JcC<$
+]Dqa.JcC<$JcDMFrr at WMJcFp5r;_EKJcE:\J,~>
+JcC<$li6h^JcC<$JcE(VrrC=DrrD0\rrCaPs0D[&q5WPKn!sEMpRM2[s.'%cMuWeWqu?ZrkPtJ\
+JcC<$JcDYJrrAb]rr at WMJcC<$_>jB4JcC<$JcGZKU&Y,mJcC<$j8],ZJcC<$]DmB~>
+JcC<$li6h^JcC<$JcE(VrrC=DrrD0\rrCaPYni8trrDrrrrD6^r;_EKJcC<$VuN:fJcC<$JcERd
+qZ)3IJcC<$r;`Pkrr at WMJcFd1rr@WMJcE@^J,~>
+JcC<$li6h^JcC<$JcE(VrrC=DrrD0\rrCaPYni8trrDrrrrD6^r;_EKJcC<$VuN:fJcC<$JcERd
+qZ)3IJcC<$r;`Pkrr at WMJcFd1rr@WMJcE@^J,~>
+JcC<$li6h^JcC<$JcE(VrrC=DrrD0\rrCaPs0D[&q5WPKn!sEMpRM2[s.'%cMuWeWqu?ZrkPtJ\
+JcC<$JcDYJrrAb]rr at WMJcC<$_>jB4JcC<$JcGZKU&Y,mJcC<$j8],ZJcC<$]DmB~>
+JcC<$li6h^JcC<$JcE(VrrC=DrrD0\rrCaPYni8trrDrrrrD6^r;_EKJcC<$VuN:fJcC<$JcERd
+qZ)3IJcC<$r;`Pkrr at WMJcFd1rr@WMJcE@^J,~>
+JcC<$li6h^JcC<$JcE(VrrC=DrrD0\rrCaPYni8trrDrrrrD6^r;_EKJcC<$VuN:fJcC<$JcERd
+qZ)3IJcC<$r;`Pkrr at WMJcFd1rr@WMJcE@^J,~>
+JcC<$nc/Idc2[eDJcC<$j8],ZL&_/QbQ%SB^]4>As0D0po:Q&_o:PiKpRh8Oor<TCkPtP^JcC<$
+JcD_LrrAb]rr at WMJcC<$a8c#:JcC<$_uK`:JcF@%rrC1 at r;aP2rr at WMkPtP^s8W#tJcC<$^]/f~>
+JcC<$nc/Idc2[eDJcC<$j8],ZL&_/QbQ%SB^]18KJcFp5rr at WMJcC<$WW/LhJcC<$JcEdjqZ)3I
+JcEXfrr at WMfDkjNaoD;>^&S*4JcFp5rrE*!r;_EKJcELbJ,~>
+JcC<$nc/Idc2[eDJcC<$j8],ZL&_/QbQ%SB^]18KJcFp5rr at WMJcC<$WW/LhJcC<$JcEdjqZ)3I
+JcEXfrr at WMfDkjNaoD;>^&S*4JcFp5rrE*!r;_EKJcELbJ,~>
+JcC<$nc/Idc2[eDJcC<$j8],ZL&_/QbQ%SB^]4>As0D0po:Q&_o:PiKpRh8Oor<TCkPtP^JcC<$
+JcD_LrrAb]rr at WMJcC<$a8c#:JcC<$_uK`:JcF@%rrC1 at r;aP2rr at WMkPtP^s8W#tJcC<$^]/f~>
+JcC<$nc/Idc2[eDJcC<$j8],ZL&_/QbQ%SB^]18KJcFp5rr at WMJcC<$WW/LhJcC<$JcEdjqZ)3I
+JcEXfrr at WMfDkjNaoD;>^&S*4JcFp5rrE*!r;_EKJcELbJ,~>
+JcC<$nc/Idc2[eDJcC<$j8],ZL&_/QbQ%SB^]18KJcFp5rr at WMJcC<$WW/LhJcC<$JcEdjqZ)3I
+JcEXfrr at WMfDkjNaoD;>^&S*4JcFp5rrE*!r;_EKJcELbJ,~>
+JcC<$q>^6jaoDA at JcC<$iW&oXJcF!prrBn8s0_*kq4IPaiLg./qk*J[JcG!7r;_EKJcC<$XoJD$
+U$r!]JcC<$JcF!pqZ)3IJcEF`rrC7Br;_u[rr at WMrr@WMjo>>\rVufrJcC<$_uG5~>
+JcC<$q>^6jaoDA at JcC<$iW&oXJcF!prrBn8\JG2Fm1t9Ql2U\^JcC<$JcDkPSH+6 at JcC<$c2[Y@
+JcC<$^&S*4bQ%M at OoPF]JcG`MJcFj3rrE#tr;_EKJcEXfJ,~>
+JcC<$q>^6jaoDA at JcC<$iW&oXJcF!prrBn8\JG2Fm1t9Ql2U\^JcC<$JcDkPSH+6 at JcC<$c2[Y@
+JcC<$^&S*4bQ%M at OoPF]JcG`MJcFj3rrE#tr;_EKJcEXfJ,~>
+JcC<$q>^6jaoDA at JcC<$iW&oXJcF!prrBn8s0_*kq4IPaiLg./qk*J[JcG!7r;_EKJcC<$XoJD$
+U$r!]JcC<$JcF!pqZ)3IJcEF`rrC7Br;_u[rr at WMrr@WMjo>>\rVufrJcC<$_uG5~>
+JcC<$q>^6jaoDA at JcC<$iW&oXJcF!prrBn8\JG2Fm1t9Ql2U\^JcC<$JcDkPSH+6 at JcC<$c2[Y@
+JcC<$^&S*4bQ%M at OoPF]JcG`MJcFj3rrE#tr;_EKJcEXfJ,~>
+JcC<$q>^6jaoDA at JcC<$iW&oXJcF!prrBn8\JG2Fm1t9Ql2U\^JcC<$JcDkPSH+6 at JcC<$c2[Y@
+JcC<$^&S*4bQ%M at OoPF]JcG`MJcFj3rrE#tr;_EKJcEXfJ,~>
+JcC<$s8VrrJcC<$JcE"Tr;aP2rrC[NrrDThrO)C"n#cVarN5mqoq28aqlT[os/l<frN6+"s.An_
+s0[FXl2U\^JcC<$JcE"TrrAb]rr at WMJcC<$e,T:FJcC<$JcCZ.rr at WMJcFF'r;_EKJcEdjJ,~>
+JcC<$s8VrrJcC<$JcE"Tr;aP2rrC[NrrDTh[2/cBkn\jMl2U\^JcC<$JcE"TSH+6 at JcC<$e,T:F
+JcC<$JcCZ.rr at WMJcFF'r;_EKJcEdjJ,~>
+JcC<$s8VrrJcC<$JcE"Tr;aP2rrC[NrrDTh[2/cBkn\jMl2U\^JcC<$JcE"TSH+6 at JcC<$e,T:F
+JcC<$JcCZ.rr at WMJcFF'r;_EKJcEdjJ,~>
+JcC<$s8VrrJcC<$JcE"Tr;aP2rrC[NrrDThrO)C"n#cVarN5mqoq28aqlT[os/l<frN6+"s.An_
+s0[FXl2U\^JcC<$JcE"TrrAb]rr at WMJcC<$e,T:FJcC<$JcCZ.rr at WMJcFF'r;_EKJcEdjJ,~>
+JcC<$s8VrrJcC<$JcE"Tr;aP2rrC[NrrDTh[2/cBkn\jMl2U\^JcC<$JcE"TSH+6 at JcC<$e,T:F
+JcC<$JcCZ.rr at WMJcFF'r;_EKJcEdjJ,~>
+JcC<$s8VrrJcC<$JcE"Tr;aP2rrC[NrrDTh[2/cBkn\jMl2U\^JcC<$JcE"TSH+6 at JcC<$e,T:F
+JcC<$JcCZ.rr at WMJcFF'r;_EKJcEdjJ,~>
+JcCH(qZ+h>r;_EKJcC<$ScA]iec5XLp&Fcoqml0ts1.g)s/Q$iql8b[s/PmsrMon*s/Q+,NW8qW
+iW&iVJcC<$JcE.XrrAb]rr at WMJcC<$g].'LJcC<$JcCH(rr at WMJcF:#r;_EKJcEpnJ,~>
+JcCH(qZ+h>r;_EKJcC<$ScA]iec5XLp&C9mNW8qWiW&iVJcC<$JcE.XSH+6 at JcC<$g].'LJcC<$
+JcCH(rr at WMJcF:#r;_EKJcEpnJ,~>
+JcCH(qZ+h>r;_EKJcC<$ScA]iec5XLp&C9mNW8qWiW&iVJcC<$JcE.XSH+6 at JcC<$g].'LJcC<$
+JcCH(rr at WMJcF:#r;_EKJcEpnJ,~>
+JcCH(qZ+h>r;_EKJcC<$ScA]iec5XLp&Fcoqml0ts1.g)s/Q$iql8b[s/PmsrMon*s/Q+,NW8qW
+iW&iVJcC<$JcE.XrrAb]rr at WMJcC<$g].'LJcC<$JcCH(rr at WMJcF:#r;_EKJcEpnJ,~>
+JcCH(qZ+h>r;_EKJcC<$ScA]iec5XLp&C9mNW8qWiW&iVJcC<$JcE.XSH+6 at JcC<$g].'LJcC<$
+JcCH(rr at WMJcF:#r;_EKJcEpnJ,~>
+JcCH(qZ+h>r;_EKJcC<$ScA]iec5XLp&C9mNW8qWiW&iVJcC<$JcE.XSH+6 at JcC<$g].'LJcC<$
+JcCH(rr at WMJcF:#r;_EKJcEpnJ,~>
+JcC`0q#H!GJcC<$[K$1*XoJD$aoD7Gn[\=pqmlC%s1/03rMnPQs1/03s/Pt(JcFp5r;_EKJcC<$
+\c;[0U$r!]JcC<$JcF^/qZ)3Iec5XLJcDqRr;_KMr;aD.rr at WMa8c/>fDkjNJcC<$c2W:~>
+JcC`0q#H!GJcC<$[K$1*XoJD$ao at J=JcFp5r;_EKJcC<$\c83#JcC<$JcF^/qZ)3Iec5XLJcDqR
+r;_KMr;aD.rr at WMa8c/>fDkjNJcC<$c2W:~>
+JcC`0q#H!GJcC<$[K$1*XoJD$ao at J=JcFp5r;_EKJcC<$\c83#JcC<$JcF^/qZ)3Iec5XLJcDqR
+r;_KMr;aD.rr at WMa8c/>fDkjNJcC<$c2W:~>
+JcC`0q#H!GJcC<$[K$1*XoJD$aoD7Gn[\=pqmlC%s1/03rMnPQs1/03s/Pt(JcFp5r;_EKJcC<$
+\c;[0U$r!]JcC<$JcF^/qZ)3Iec5XLJcDqRr;_KMr;aD.rr at WMa8c/>fDkjNJcC<$c2W:~>
+JcC`0q#H!GJcC<$[K$1*XoJD$ao at J=JcFp5r;_EKJcC<$\c83#JcC<$JcF^/qZ)3Iec5XLJcDqR
+r;_KMr;aD.rr at WMa8c/>fDkjNJcC<$c2W:~>
+JcC`0q#H!GJcC<$[K$1*XoJD$ao at J=JcFp5r;_EKJcC<$\c83#JcC<$JcF^/qZ)3Iec5XLJcDqR
+r;_KMr;aD.rr at WMa8c/>fDkjNJcC<$c2W:~>
+JcCr6qZ+h>rr at WMp](6nJcC<$RK*9ebQ%OKs1I[.rN5b'qlTb+rN6%'gTC@`s1JBBrO)[AJcFp5
+r;_EKJcC<$^&S*4U&Y,mJcC<$JcFp5qZ)3Ici="FJcC<$XoJ>"\,ZI.JcEjlrrCgRr;cltr;_EK
+JcF-tJ,~>
+JcCr6qZ+h>rr at WMp](6nJcC<$RK*9ebQ!J9JcFp5r;_EKJcC<$^&OW'JcC<$JcFp5qZ)3Ici="F
+JcC<$XoJ>"\,ZI.JcEjlrrCgRr;cltr;_EKJcF-tJ,~>
+JcCr6qZ+h>rr at WMp](6nJcC<$RK*9ebQ!J9JcFp5r;_EKJcC<$^&OW'JcC<$JcFp5qZ)3Ici="F
+JcC<$XoJ>"\,ZI.JcEjlrrCgRr;cltr;_EKJcF-tJ,~>
+JcCr6qZ+h>rr at WMp](6nJcC<$RK*9ebQ%OKs1I[.rN5b'qlTb+rN6%'gTC@`s1JBBrO)[AJcFp5
+r;_EKJcC<$^&S*4U&Y,mJcC<$JcFp5qZ)3Ici="FJcC<$XoJ>"\,ZI.JcEjlrrCgRr;cltr;_EK
+JcF-tJ,~>
+JcCr6qZ+h>rr at WMp](6nJcC<$RK*9ebQ!J9JcFp5r;_EKJcC<$^&OW'JcC<$JcFp5qZ)3Ici="F
+JcC<$XoJ>"\,ZI.JcEjlrrCgRr;cltr;_EKJcF-tJ,~>
+JcCr6qZ+h>rr at WMp](6nJcC<$RK*9ebQ!J9JcFp5r;_EKJcC<$^&OW'JcC<$JcFp5qZ)3Ici="F
+JcC<$XoJ>"\,ZI.JcEjlrrCgRr;cltr;_EKJcF-tJ,~>
+JcD/<qZ+\:rr at WMp&G$lJcC<$RK*9ec2[gSs0_m>f=Cp`pUU%'nZDbpo<&%tq7QO6S,`Kgc2[_B
+JcC<$JcERdrrAbmrr at WMJcC<$mJm%`JcC<$KE(rOJcG9?rr at WMJcEpnr;_EKJcF:#J,~>
+JcD/<qZ+\:rr at WMp&G$lJcC<$RK*9ec2WP7S,`Kgc2[_BJcC<$JcERdSH+6 at JcC<$mJm%`JcC<$
+KE(rOJcG9?rr at WMJcEpnr;_EKJcF:#J,~>
+JcD/<qZ+\:rr at WMp&G$lJcC<$RK*9ec2WP7S,`Kgc2[_BJcC<$JcERdSH+6 at JcC<$mJm%`JcC<$
+KE(rOJcG9?rr at WMJcEpnr;_EKJcF:#J,~>
+JcD/<qZ+\:rr at WMp&G$lJcC<$RK*9ec2[gSs0_m>f=Cp`pUU%'nZDbpo<&%tq7QO6S,`Kgc2[_B
+JcC<$JcERdrrAbmrr at WMJcC<$mJm%`JcC<$KE(rOJcG9?rr at WMJcEpnr;_EKJcF:#J,~>
+JcD/<qZ+\:rr at WMp&G$lJcC<$RK*9ec2WP7S,`Kgc2[_BJcC<$JcERdSH+6 at JcC<$mJm%`JcC<$
+KE(rOJcG9?rr at WMJcEpnr;_EKJcF:#J,~>
+JcD/<qZ+\:rr at WMp&G$lJcC<$RK*9ec2WP7S,`Kgc2[_BJcC<$JcERdSH+6 at JcC<$mJm%`JcC<$
+KE(rOJcG9?rr at WMJcEpnr;_EKJcF:#J,~>
+JcDABqZ)3IJcC<$Z2ab&ScA]idJs6bs1/*@s1/*&qmkt(n%&D0q6Bn*rN5t-pUpO:rN5n#pUpC6
+s2:Q0rrDHdr;bgVr;_EKJcC<$`W,r<U&Y,mli6n`JcC<$NW8kUJcC<$JcGcMrr at WMn,NCfJcC<$
+a8c)<JcC<$g&HR~>
+JcDABqZ)3IJcC<$Z2ab&ScA]idJrqVr;_fmTE"okmJm+biW&iVJcC<$JcE^hSH/!Ur;_EKJcC`0
+qZ)3IJcC<$s8W*!JcG3=rr at WMJcEdjr;_EKJcFF'J,~>
+JcDABqZ)3IJcC<$Z2ab&ScA]idJrqVr;_fmTE"okmJm+biW&iVJcC<$JcE^hSH/!Ur;_EKJcC`0
+qZ)3IJcC<$s8W*!JcG3=rr at WMJcEdjr;_EKJcFF'J,~>
+JcDABqZ)3IJcC<$Z2ab&ScA]idJs6bs1/*@s1/*&qmkt(n%&D0q6Bn*rN5t-pUpO:rN5n#pUpC6
+s2:Q0rrDHdr;bgVr;_EKJcC<$`W,r<U&Y,mli6n`JcC<$NW8kUJcC<$JcGcMrr at WMn,NCfJcC<$
+a8c)<JcC<$g&HR~>
+JcDABqZ)3IJcC<$Z2ab&ScA]idJrqVr;_fmTE"okmJm+biW&iVJcC<$JcE^hSH/!Ur;_EKJcC`0
+qZ)3IJcC<$s8W*!JcG3=rr at WMJcEdjr;_EKJcFF'J,~>
+JcDABqZ)3IJcC<$Z2ab&ScA]idJrqVr;_fmTE"okmJm+biW&iVJcC<$JcE^hSH/!Ur;_EKJcC`0
+qZ)3IJcC<$s8W*!JcG3=rr at WMJcEdjr;_EKJcFF'J,~>
+JcDYJq#JV<r;_EKJcE(Vrr at WMc2[eDe,THgs1/0YrQ"lTs3(A]iOo-(q76I:q6Bb1rOMO4s1eHD
+rNZ%.s2Y)NrPX9ejo>8ZJcC<$JcEjlrrAbmrrDBbr;c0`nGn.?JcE:\qZ,m\rr at WMJcDeNrr@WM
+fDkjNWW2tug].9RJcE^hr;_EKJcFR+J,~>
+JcDYJq#JV<r;_EKJcE(Vrr at WMc2[eDe,Ot7q%eP]jo>8ZJcC<$JcEjlSH/!Ur;c0`nGn.?JcE:\
+qZ,m\rr at WMJcDeNrr@WMfDkjNWW2tug].9RJcE^hr;_EKJcFR+J,~>
+JcDYJq#JV<r;_EKJcE(Vrr at WMc2[eDe,Ot7q%eP]jo>8ZJcC<$JcEjlSH/!Ur;c0`nGn.?JcE:\
+qZ,m\rr at WMJcDeNrr@WMfDkjNWW2tug].9RJcE^hr;_EKJcFR+J,~>
+JcDYJq#JV<r;_EKJcE(Vrr at WMc2[eDe,THgs1/0YrQ"lTs3(A]iOo-(q76I:q6Bb1rOMO4s1eHD
+rNZ%.s2Y)NrPX9ejo>8ZJcC<$JcEjlrrAbmrrDBbr;c0`nGn.?JcE:\qZ,m\rr at WMJcDeNrr@WM
+fDkjNWW2tug].9RJcE^hr;_EKJcFR+J,~>
+JcDYJq#JV<r;_EKJcE(Vrr at WMc2[eDe,Ot7q%eP]jo>8ZJcC<$JcEjlSH/!Ur;c0`nGn.?JcE:\
+qZ,m\rr at WMJcDeNrr@WMfDkjNWW2tug].9RJcE^hr;_EKJcFR+J,~>
+JcDYJq#JV<r;_EKJcE(Vrr at WMc2[eDe,Ot7q%eP]jo>8ZJcC<$JcEjlSH/!Ur;c0`nGn.?JcE:\
+qZ,m\rr at WMJcDeNrr@WMfDkjNWW2tug].9RJcE^hr;_EKJcFR+J,~>
+JcDkPqZ,CNrr at WMJcD/<rrC%<r;_iWrrCOJqpYScs2=lZpW)I0otU14o=t=<s/,V)qnMg:s1eBB
+rQ"rNrPsKhj8]&XJcC<$JcF!prrAbmrrDHdqZ,s^nGn.?JcELbqZ,[Vrr at WMJcDeNrrDrrr;_EK
+iW&oXVuQbsh>dKTJcEdjr;cltr;_EKJcF^/J,~>
+JcDkPqZ,CNrr at WMJcD/<rrC%<r;_iWrrCOJV\]:4dh[N7j8]&XJcC<$JcF!pSH/'WqZ,s^nGn.?
+JcELbqZ,[Vrr at WMJcDeNrrDrrr;_EKiW&oXVuQbsh>dKTJcEdjr;cltr;_EKJcF^/J,~>
+JcDkPqZ,CNrr at WMJcD/<rrC%<r;_iWrrCOJV\]:4dh[N7j8]&XJcC<$JcF!pSH/'WqZ,s^nGn.?
+JcELbqZ,[Vrr at WMJcDeNrrDrrr;_EKiW&oXVuQbsh>dKTJcEdjr;cltr;_EKJcF^/J,~>
+JcDkPqZ,CNrr at WMJcD/<rrC%<r;_iWrrCOJqpYScs2=lZpW)I0otU14o=t=<s/,V)qnMg:s1eBB
+rQ"rNrPsKhj8]&XJcC<$JcF!prrAbmrrDHdqZ,s^nGn.?JcELbqZ,[Vrr at WMJcDeNrrDrrr;_EK
+iW&oXVuQbsh>dKTJcEdjr;cltr;_EKJcF^/J,~>
+JcDkPqZ,CNrr at WMJcD/<rrC%<r;_iWrrCOJV\]:4dh[N7j8]&XJcC<$JcF!pSH/'WqZ,s^nGn.?
+JcELbqZ,[Vrr at WMJcDeNrrDrrr;_EKiW&oXVuQbsh>dKTJcEdjr;cltr;_EKJcF^/J,~>
+JcDkPqZ,CNrr at WMJcD/<rrC%<r;_iWrrCOJV\]:4dh[N7j8]&XJcC<$JcF!pSH/'WqZ,s^nGn.?
+JcELbqZ,[Vrr at WMJcDeNrrDrrr;_EKiW&oXVuQbsh>dKTJcEdjr;cltr;_EKJcF^/J,~>
+JcE(VqZ,1HrrDrrr;_EKJcC<$JcG-;rrCULqpYScq9/HOl+HQ$rQ"rNn%\n%qn2U:rOi0Fqof#S
+qn2UBJcFd1r;_EKJcC<$dJs4HU&Y,mn,N1`li6n`JcC<$\c;O,JcC<$JcC<$g&M'PJcC<$]Dqm2
+JcC<$j8XW~>
+JcE(VqZ,1HrrDrrr;_EKJcC<$JcG-;rrCULV&'(2cPD*3j8]&XJcC<$JcF-tSH/-Yq#Ka\r;_EK
+JcE:\qZ)3IJcC<$JcFF'rr at WMJcE@^rr at WMJcFd1J,~>
+JcE(VqZ,1HrrDrrr;_EKJcC<$JcG-;rrCULV&'(2cPD*3j8]&XJcC<$JcF-tSH/-Yq#Ka\r;_EK
+JcE:\qZ)3IJcC<$JcFF'rr at WMJcE@^rr at WMJcFd1J,~>
+JcE(VqZ,1HrrDrrr;_EKJcC<$JcG-;rrCULqpYScq9/HOl+HQ$rQ"rNn%\n%qn2U:rOi0Fqof#S
+qn2UBJcFd1r;_EKJcC<$dJs4HU&Y,mn,N1`li6n`JcC<$\c;O,JcC<$JcC<$g&M'PJcC<$]Dqm2
+JcC<$j8XW~>
+JcE(VqZ,1HrrDrrr;_EKJcC<$JcG-;rrCULV&'(2cPD*3j8]&XJcC<$JcF-tSH/-Yq#Ka\r;_EK
+JcE:\qZ)3IJcC<$JcFF'rr at WMJcE@^rr at WMJcFd1J,~>
+JcE(VqZ,1HrrDrrr;_EKJcC<$JcG-;rrCULV&'(2cPD*3j8]&XJcC<$JcF-tSH/-Yq#Ka\r;_EK
+JcE:\qZ)3IJcC<$JcFF'rr at WMJcE@^rr at WMJcFd1J,~>
+JcE@^q#H!GJcC<$JcDqRrrC[NqpY;_n]1[Bs/,J%s2Y/Pn\=tEs3BB6rPSTKq9/fQs1J6Ps474n
+s475!L&_)OiW&iVJcC<$JcF:#rrAbmrrDNfrrE*!r;c0`r;_EKJcELbqZ)3IJcCH(rr at WMdJs4H
+JcC<$\c;U.JcC<$kPp&~>
+JcE@^q#H!GJcC<$JcDqRrrC[Ni>2 at lOVWZNr;bgVr;_EKJcC<$ec20?n,NCfs8W#tli6n`JcC<$
+^]402JcC<$L&_/QJcF-trr at WMJcE:\r;_EKJcFp5J,~>
+JcE@^q#H!GJcC<$JcDqRrrC[Ni>2 at lOVWZNr;bgVr;_EKJcC<$ec20?n,NCfs8W#tli6n`JcC<$
+^]402JcC<$L&_/QJcF-trr at WMJcE:\r;_EKJcFp5J,~>
+JcE@^q#H!GJcC<$JcDqRrrC[NqpY;_n]1[Bs/,J%s2Y/Pn\=tEs3BB6rPSTKq9/fQs1J6Ps474n
+s475!L&_)OiW&iVJcC<$JcF:#rrAbmrrDNfrrE*!r;c0`r;_EKJcELbqZ)3IJcCH(rr at WMdJs4H
+JcC<$\c;U.JcC<$kPp&~>
+JcE@^q#H!GJcC<$JcDqRrrC[Ni>2 at lOVWZNr;bgVr;_EKJcC<$ec20?n,NCfs8W#tli6n`JcC<$
+^]402JcC<$L&_/QJcF-trr at WMJcE:\r;_EKJcFp5J,~>
+JcE@^q#H!GJcC<$JcDqRrrC[Ni>2 at lOVWZNr;bgVr;_EKJcC<$ec20?n,NCfs8W#tli6n`JcC<$
+^]402JcC<$L&_/QJcF-trr at WMJcE:\r;_EKJcFp5J,~>
+JcERdqZ)3IJcC<$YQ+P$JcG]KrrCaPqpY5]n]1[Yot:1BotU7Es3CS\n%\b;q7l[Aq9/`^s1eHS
+s474nrRV"tJcF^/r;_EKJcC<$g&M'PU&Y,mnc/Ofs8W#tli6n`JcC<$`W,f8JcDSHrr at WMhuE]V
+JcF-tr;_EKJcG]KrrB\2r;_EKJcG'9J,~>
+JcERdqZ)3IJcC<$YQ+P$JcG]KrrCaPJJRDaJcF^/r;_EKJcC<$g&ITCnc/Ofs8W#tli6n`JcC<$
+`W,f8JcDSHrr at WMhuE]VJcF-tr;_EKJcG]KrrB\2r;_EKJcG'9J,~>
+JcERdqZ)3IJcC<$YQ+P$JcG]KrrCaPJJRDaJcF^/r;_EKJcC<$g&ITCnc/Ofs8W#tli6n`JcC<$
+`W,f8JcDSHrr at WMhuE]VJcF-tr;_EKJcG]KrrB\2r;_EKJcG'9J,~>
+JcERdqZ)3IJcC<$YQ+P$JcG]KrrCaPqpY5]n]1[Yot:1BotU7Es3CS\n%\b;q7l[Aq9/`^s1eHS
+s474nrRV"tJcF^/r;_EKJcC<$g&M'PU&Y,mnc/Ofs8W#tli6n`JcC<$`W,f8JcDSHrr at WMhuE]V
+JcF-tr;_EKJcG]KrrB\2r;_EKJcG'9J,~>
+JcERdqZ)3IJcC<$YQ+P$JcG]KrrCaPJJRDaJcF^/r;_EKJcC<$g&ITCnc/Ofs8W#tli6n`JcC<$
+`W,f8JcDSHrr at WMhuE]VJcF-tr;_EKJcG]KrrB\2r;_EKJcG'9J,~>
+JcERdqZ)3IJcC<$YQ+P$JcG]KrrCaPJJRDaJcF^/r;_EKJcC<$g&ITCnc/Ofs8W#tli6n`JcC<$
+`W,f8JcDSHrr at WMhuE]VJcF-tr;_EKJcG]KrrB\2r;_EKJcG'9J,~>
+JcEdjqZ+b<r;_EKa8c/>JcC<$RK*9eg].<)s3q#$s474nrRUqjqoAHVqq:e_s3CS`s3(/OpWNHZ
+qnr*Aou$gEo>CUOp!3HXq:>T)JcFX-r;_EKJcC<$huE?L[K#guoDeahrVufrli6tbs8VfnJcC<$
+fDkXHJcDABrr at WMJcDkPr;`8cr;_EKl2Ub`]Dqm2s8W#tJcC<$n,In~>
+JcEdjqZ+b<r;_EKa8c/>JcC<$RK*9eg])g?itd4GhuEWTJcC<$JcFX-RfN'[r;cfrr;c0`rrE*!
+pAfdEJcF@%q#H!GTE"okJcC<$XoJ>"RK*3cJcG!7rrB\2rrE*!r;_EKJcG3=J,~>
+JcEdjqZ+b<r;_EKa8c/>JcC<$RK*9eg])g?itd4GhuEWTJcC<$JcFX-RfN'[r;cfrr;c0`rrE*!
+pAfdEJcF@%q#H!GTE"okJcC<$XoJ>"RK*3cJcG!7rrB\2rrE*!r;_EKJcG3=J,~>
+JcEdjqZ+b<r;_EKa8c/>JcC<$RK*9eg].<)s3q#$s474nrRUqjqoAHVqq:e_s3CS`s3(/OpWNHZ
+qnr*Aou$gEo>CUOp!3HXq:>T)JcFX-r;_EKJcC<$huE?L[K#guoDeahrVufrli6tbs8VfnJcC<$
+fDkXHJcDABrr at WMJcDkPr;`8cr;_EKl2Ub`]Dqm2s8W#tJcC<$n,In~>
+JcEdjqZ+b<r;_EKa8c/>JcC<$RK*9eg])g?itd4GhuEWTJcC<$JcFX-RfN'[r;cfrr;c0`rrE*!
+pAfdEJcF@%q#H!GTE"okJcC<$XoJ>"RK*3cJcG!7rrB\2rrE*!r;_EKJcG3=J,~>
+JcEdjqZ+b<r;_EKa8c/>JcC<$RK*9eg])g?itd4GhuEWTJcC<$JcFX-RfN'[r;cfrr;c0`rrE*!
+pAfdEJcF@%q#H!GTE"okJcC<$XoJ>"RK*3cJcG!7rrB\2rrE*!r;_EKJcG3=J,~>
+JcF!pqZ)3IL&_/QJcE"Tr;_EKmJm1dh>dN+s3q#/s5E_'rRpkhpY#M_p!3HLpWN<Vs24`RrP/BU
+o?RB`q9JrVs2P#bpWifls474qpY#T-s5CBcrrB2$r;_EKJcC<$iW&oXU&Y,moDegjqu?TpmJlVT
+JcC<$huEKPJcC<$L&_)OJcERdrr at WMJcE(VrrE#tr;_EKJcG?AJ,~>
+JcF!pqZ)3IL&_/QJcE"Tr;_EKmJm1dh>`$Ah%mEurrB2$r;_EKJcC<$iW&oXTb%/'oDegjqu?Tp
+mJlVTJcC<$huEKPJcC<$L&_)OJcERdrr at WMJcE(VrrE#tr;_EKJcG?AJ,~>
+JcF!pqZ)3IL&_/QJcE"Tr;_EKmJm1dh>`$Ah%mEurrB2$r;_EKJcC<$iW#GKoDegjqu?TpmJlVT
+JcC<$huEKPJcC<$L&_)OJcERdrr at WMJcE(VrrE#tr;_EKJcG?AJ,~>
+JcF!pqZ)3IL&_/QJcE"Tr;_EKmJm1dh>dN+s3q#/s5E_'rRpkhpY#M_p!3HLpWN<Vs24`RrP/BU
+o?RB`q9JrVs2P#bpWifls474qpY#T-s5CBcrrB2$r;_EKJcC<$iW&oXU&Y,moDegjqu?TpmJlVT
+JcC<$huEKPJcC<$L&_)OJcERdrr at WMJcE(VrrE#tr;_EKJcG?AJ,~>
+JcF!pqZ)3IL&_/QJcE"Tr;_EKmJm1dh>`$Ah%mEurrB2$r;_EKJcC<$iW&oXTb%/'oDegjqu?Tp
+mJlVTJcC<$huEKPJcC<$L&_)OJcERdrr at WMJcE(VrrE#tr;_EKJcG?AJ,~>
+JcF!pqZ)3IL&_/QJcE"Tr;_EKmJm1dh>`$Ah%mEurrB2$r;_EKJcC<$iW#GKoDegjqu?TpmJlVT
+JcC<$huEKPJcC<$L&_)OJcERdrr at WMJcE(VrrE#tr;_EKJcG?AJ,~>
+JcF:#q#J\>r;_EKJcC<$JcF!prrCsVs475,rT*e*p"B5fo@`rbs0qgLrR(GapWiZUqpGGep!3B\
+qp,/fs2Or`qp,5hrS7FupY#N+\,ZI.c2[eDhuEWTJcC<$JcFj3rrAbmrrD`lrrDlpr;c6br;cTl
+qZ)3IJcFp5qZ)3IJcC<$JcE:\rr at WMJcD_Lrr@WMJcGECJ,~>
+JcF:#q#J\>r;_EKJcC<$JcF!prrCsVaVOmVP8:Y-rrC=DrrCsVr;_EKJcC<$jo>>\Tb%/'p&G$l
+q>^BnmJm+bp](*jJcC<$kPtDZJcC<$JcC<$\c;[0JcC<$WW2tuJcC<$p&BO~>
+JcF:#q#J\>r;_EKJcC<$JcF!prrCsVaVOmVP8:Y-rrC=DrrCsVr;_EKJcC<$jo:kOp&G$lq>^Bn
+mJm+bp](*jJcC<$kPtDZJcC<$JcC<$\c;[0JcC<$WW2tuJcC<$p&BO~>
+JcF:#q#J\>r;_EKJcC<$JcF!prrCsVs475,rT*e*p"B5fo@`rbs0qgLrR(GapWiZUqpGGep!3B\
+qp,/fs2Or`qp,5hrS7FupY#N+\,ZI.c2[eDhuEWTJcC<$JcFj3rrAbmrrD`lrrDlpr;c6br;cTl
+qZ)3IJcFp5qZ)3IJcC<$JcE:\rr at WMJcD_Lrr@WMJcGECJ,~>
+JcF:#q#J\>r;_EKJcC<$JcF!prrCsVaVOmVP8:Y-rrC=DrrCsVr;_EKJcC<$jo>>\Tb%/'p&G$l
+q>^BnmJm+bp](*jJcC<$kPtDZJcC<$JcC<$\c;[0JcC<$WW2tuJcC<$p&BO~>
+JcF:#q#J\>r;_EKJcC<$JcF!prrCsVaVOmVP8:Y-rrC=DrrCsVr;_EKJcC<$jo:kOp&G$lq>^Bn
+mJm+bp](*jJcC<$kPtDZJcC<$JcC<$\c;[0JcC<$WW2tuJcC<$p&BO~>
+JcFL)qZ)3IJcC<$_uK`:oDegjJcFR+rrD$XrSd_9s5Eq-n(I`dn(IN^s0r$Rs4RFtq9f5cp!3Tm
+o?mBZld>[dpX/flpY#H)KE(rOh>dKTJcC<$JcFp5rrAbmrrDfnr;cZnr;b[Rr;_EKJcG-;qZ+,*
+rr at WMJcDeNrr@WMfDkjNJcG`MJcD_Lr;_EKJcGQGJ,~>
+JcFL)qZ)3IJcC<$_uK`:oDegjJcFR+rrD$X`>8IROVWTLrrCmTrr at WMJcC<$kPtP^Tb%/'p](0l
+q>^Bnh>dERJcC<$mJm%`\,ZI.JcC<$X8i2"JcF@%rr at WMrr@WMWW2nsJcC<$q>Ys~>
+JcFL)qZ)3IJcC<$_uK`:oDegjJcFR+rrD$X`>8IROVWTLrrCmTrr at WMJcC<$kPq(Qp](0lq>^Bn
+h>dERJcC<$mJm%`\,ZI.JcC<$X8i2"JcF@%rr at WMrr@WMWW2nsJcC<$q>Ys~>
+JcFL)qZ)3IJcC<$_uK`:oDegjJcFR+rrD$XrSd_9s5Eq-n(I`dn(IN^s0r$Rs4RFtq9f5cp!3Tm
+o?mBZld>[dpX/flpY#H)KE(rOh>dKTJcC<$JcFp5rrAbmrrDfnr;cZnr;b[Rr;_EKJcG-;qZ+,*
+rr at WMJcDeNrr@WMfDkjNJcG`MJcD_Lr;_EKJcGQGJ,~>
+JcFL)qZ)3IJcC<$_uK`:oDegjJcFR+rrD$X`>8IROVWTLrrCmTrr at WMJcC<$kPtP^Tb%/'p](0l
+q>^Bnh>dERJcC<$mJm%`\,ZI.JcC<$X8i2"JcF@%rr at WMrr@WMWW2nsJcC<$q>Ys~>
+JcFL)qZ)3IJcC<$_uK`:oDegjJcFR+rrD$X`>8IROVWTLrrCmTrr at WMJcC<$kPq(Qp](0lq>^Bn
+h>dERJcC<$mJm%`\,ZI.JcC<$X8i2"JcF@%rr at WMrr@WMWW2nsJcC<$q>Ys~>
+JcF^/qZ+n at rrCmTrr@WMJcD/<rrD`lrr at WMg].9Rj8]/?s5Ek9s47/(gY)>HrRq5+o?mN^s4RA+
+p!NfOrR(YjkL'+\qpG;rrTO.6q<7kIJcFX-r;_EKJcC<$li6tbU&Y,mp]'U\iW&iVJcC<$oDe[f
+Z2ah(JcC<$e,T at Hh>dKTJcF@%rr at oUrrDrrrr@WMV>pJoJcC<$rVqB~>
+JcF^/qZ+n at rrCmTrr@WMJcD/<rrD`lrr at WMg].9Rj8YG]rrDF%q\diuJcFX-r;_EKJcC<$li6tb
+Tb%/'p]'U\iW&iVJcC<$oDe[fZ2ah(JcC<$e,T at Hh>dKTJcF@%rr at oUrrDrrrr@WMV>pJoJcC<$
+rVqB~>
+JcF^/qZ+n at rrCmTrr@WMJcD/<rrD`lrr at WMg].9Rj8YG]rrBSFJcFX-r;_EKJcC<$li3LUp]'U\
+iW&iVJcC<$oDe[fZ2ah(JcC<$e,T at Hh>dKTJcF@%rr at oUrrDrrrr@WMV>pJoJcC<$rVqB~>
+JcF^/qZ+n at rrCmTrr@WMJcD/<rrD`lrr at WMg].9Rj8]/?s5Ek9s47/(gY)>HrRq5+o?mN^s4RA+
+p!NfOrR(YjkL'+\qpG;rrTO.6q<7kIJcFX-r;_EKJcC<$li6tbU&Y,mp]'U\iW&iVJcC<$oDe[f
+Z2ah(JcC<$e,T at Hh>dKTJcF@%rr at oUrrDrrrr@WMV>pJoJcC<$rVqB~>
+JcF^/qZ+n at rrCmTrr@WMJcD/<rrD`lrr at WMg].9Rj8YG]rrDF%q\diuJcFX-r;_EKJcC<$li6tb
+Tb%/'p]'U\iW&iVJcC<$oDe[fZ2ah(JcC<$e,T at Hh>dKTJcF@%rr at oUrrDrrrr@WMV>pJoJcC<$
+rVqB~>
+JcF^/qZ+n at rrCmTrr@WMJcD/<rrD`lrr at WMg].9Rj8YG]rrBSFJcFX-r;_EKJcC<$li3LUp]'U\
+iW&iVJcC<$oDe[fZ2ah(JcC<$e,T at Hh>dKTJcF@%rr at oUrrDrrrr@WMV>pJoJcC<$rVqB~>
+JcG!7q#JP:rrCgRrr at WMJcC<$JcFd1rrD*Zs5F"ArT+"0rS6enrT*G#qp,)ls4m.lq:tYjs1 at 7;
+p"]MnqqV/6qqV#2s7:gAh>dERJcC<$JcG3=rrAbmrrDfnm/Z,Fr;_EKmJm1dOoP4WJcC<$JcC<$
+VuQbsL]@ASJcDGDr;cltr;_EKJcC6~>
+JcG!7q#JP:rrCgRrr at WMJcC<$JcFd1rrD*ZQPTT$q\K2LpD3E>eJ<`9h>dERJcC<$JcG3=rrA`'
+rrDfnm/Z,Fr;_EKmJm1dOoP4WJcC<$JcC<$VuQbsL]@ASJcDGDr;cltr;_EKJcC6~>
+JcG!7q#JP:rrCgRrr at WMJcC<$JcFd1rrD*ZQPTT$[haPph>dERJcC<$JcG3=SH/Eam/Z,Fr;_EK
+mJm1dOoP4WJcC<$JcC<$VuQbsL]@ASJcDGDr;cltr;_EKJcC6~>
+JcG!7q#JP:rrCgRrr at WMJcC<$JcFd1rrD*Zs5F"ArT+"0rS6enrT*G#qp,)ls4m.lq:tYjs1 at 7;
+p"]MnqqV/6qqV#2s7:gAh>dERJcC<$JcG3=rrAbmrrDfnm/Z,Fr;_EKmJm1dOoP4WJcC<$JcC<$
+VuQbsL]@ASJcDGDr;cltr;_EKJcC6~>
+JcG!7q#JP:rrCgRrr at WMJcC<$JcFd1rrD*ZQPTT$q\K2LpD3E>eJ<`9h>dERJcC<$JcG3=rrA`'
+rrDfnm/Z,Fr;_EKmJm1dOoP4WJcC<$JcC<$VuQbsL]@ASJcDGDr;cltr;_EKJcC6~>
+JcG!7q#JP:rrCgRrr at WMJcC<$JcFd1rrD*ZQPTT$[haPph>dERJcC<$JcG3=SH/Eam/Z,Fr;_EK
+mJm1dOoP4WJcC<$JcC<$VuQbsL]@ASJcDGDr;cltr;_EKJcC6~>
+JcG3=qZ)3IJcC<$Z2ab&JcF!prrD0\s5F"ArT+"BqqUYnq;h"ts3CMpqqV.ts1A6WoA%gBmG.O$
+rS754s7?9hJcGcMrrD$Xr;_EKJcC<$oDegjU&Y,mli6n`mJm+bp&FsjJcG3=r;`,_qZ)3IJcCB&
+rr at WMU&Y,mJcC<$S,`EeJcCH(J,~>
+JcG3=qZ)3IJcC<$Z2ab&JcF!prrD0\ZPNQ at pD3WDmhY^:r>+i>obRKDmhYjpq\Fb_s8W*!iW&iV
+JcC<$JcG?ArrA`'rrDBbr;c6br;cNjr;_EKn,N=dQ2g^]JcC<$KE(rOJcDGDrr at WMJcD5>r;_EK
+L&ZZ~>
+JcG3=qZ)3IJcC<$Z2ab&JcF!prrD0\ZPNQ at T,.Auq\Fb_s8W*!iW&iVJcC<$JcG?ASH/!Ur;c6b
+r;cNjr;_EKn,N=dQ2g^]JcC<$KE(rOJcDGDrr at WMJcD5>r;_EKL&ZZ~>
+JcG3=qZ)3IJcC<$Z2ab&JcF!prrD0\s5F"ArT+"BqqUYnq;h"ts3CMpqqV.ts1A6WoA%gBmG.O$
+rS754s7?9hJcGcMrrD$Xr;_EKJcC<$oDegjU&Y,mli6n`mJm+bp&FsjJcG3=r;`,_qZ)3IJcCB&
+rr at WMU&Y,mJcC<$S,`EeJcCH(J,~>
+JcG3=qZ)3IJcC<$Z2ab&JcF!prrD0\ZPNQ at pD3WDmhY^:r>+i>obRKDmhYjpq\Fb_s8W*!iW&iV
+JcC<$JcG?ArrA`'rrDBbr;c6br;cNjr;_EKn,N=dQ2g^]JcC<$KE(rOJcDGDrr at WMJcD5>r;_EK
+L&ZZ~>
+JcG3=qZ)3IJcC<$Z2ab&JcF!prrD0\ZPNQ at T,.Auq\Fb_s8W*!iW&iVJcC<$JcG?ASH/!Ur;c6b
+r;cNjr;_EKn,N=dQ2g^]JcC<$KE(rOJcDGDrr at WMJcD5>r;_EKL&ZZ~>
+JcGECqZ+h>r;_EKJcC<$JcDkPrrD6^s6p!OrT+"Bqt'jVpY#AtpZV5(q:YT!qpGGUn_DU at n_F0.
+rS7/2s5!Y;s7?9SrUYU?s8W*!huEWTJcC<$JcGKErrAbmrrDBbr;c6bqZ-Hlr;_EKn,N7bS,`?c
+JcC<$oDegjO8o4[JcDGDr;_EKJcG]KrrAVir;_EKM>r)~>
+JcGECqZ+h>r;_EKJcC<$JcDkPrrD6^jVHemlPBL#q\JiBobR3<ruLJEq\JiBq\JQlJcGcMrrCsV
+r;_EKJcC<$p](6nTb%/'li6n`mJm%`q>^BnJcG3=qZ*,cqZ)3IJcG?ArrA,[rr at WMU&Y&kJcC<$
+rVultScAWgJcCT,J,~>
+JcGECqZ+h>r;_EKJcC<$JcDkPrrD6^Y87-<W>=koJcGcMrrCsVr;_EKJcC<$p]$cali6n`mJm%`
+q>^BnJcG3=qZ*,cqZ)3IJcG?ArrA,[rr at WMU&Y&kJcC<$rVultScAWgJcCT,J,~>
+JcGECqZ+h>r;_EKJcC<$JcDkPrrD6^s6p!OrT+"Bqt'jVpY#AtpZV5(q:YT!qpGGUn_DU at n_F0.
+rS7/2s5!Y;s7?9SrUYU?s8W*!huEWTJcC<$JcGKErrAbmrrDBbr;c6bqZ-Hlr;_EKn,N7bS,`?c
+JcC<$oDegjO8o4[JcDGDr;_EKJcG]KrrAVir;_EKM>r)~>
+JcGECqZ+h>r;_EKJcC<$JcDkPrrD6^jVHemlPBL#q\JiBobR3<ruLJEq\JiBq\JQlJcGcMrrCsV
+r;_EKJcC<$p](6nTb%/'li6n`mJm%`q>^BnJcG3=qZ*,cqZ)3IJcG?ArrA,[rr at WMU&Y&kJcC<$
+rVultScAWgJcCT,J,~>
+JcGECqZ+h>r;_EKJcC<$JcDkPrrD6^Y87-<W>=koJcGcMrrCsVr;_EKJcC<$p]$cali6n`mJm%`
+q>^BnJcG3=qZ*,cqZ)3IJcG?ArrA,[rr at WMU&Y&kJcC<$rVultScAWgJcCT,J,~>
+JcG]Kq#H!GJcF@%rr at WMhuE]VJcEF`rrD<`s6opMs6o^RqsXRVpY>H*s7>j;s60(0rR(#fe'[dB
+rTO::n*'fCs60FQs8ITLg].3PJcC<$JcGWIrrAbmrrDBbr;cTlr;cZnnGn.?p&F[bU]:,iJcC<$
+mJm1dJcC<$XoJ>"JcC<$rVultRK*9eJcCZ.J,~>
+JcG]Kq#H!GJcF@%rr at WMhuE]VJcEF`rrD<`kn__clPB44q]5PLo,7EGh&5<IJcFL)r;_EKJcC<$
+qu?ZrTb%/'li6n`p](0lq>]sbJcGECo`1ceq#H!GJcG-;rr at WMJcDkPr;_EKJcG]KrrAJerr at WM
+MuS;~>
+JcG]Kq#H!GJcF@%rr at WMhuE]VJcEF`rrD<`JJQiQj\(1)g].3PJcC<$JcGWISH/!Ur;cTlr;cZn
+nGn.?p&F[bU]:,iJcC<$mJm1dJcC<$XoJ>"JcC<$rVultRK*9eJcCZ.J,~>
+JcG]Kq#H!GJcF@%rr at WMhuE]VJcEF`rrD<`s6opMs6o^RqsXRVpY>H*s7>j;s60(0rR(#fe'[dB
+rTO::n*'fCs60FQs8ITLg].3PJcC<$JcGWIrrAbmrrDBbr;cTlr;cZnnGn.?p&F[bU]:,iJcC<$
+mJm1dJcC<$XoJ>"JcC<$rVultRK*9eJcCZ.J,~>
+JcG]Kq#H!GJcF@%rr at WMhuE]VJcEF`rrD<`kn__clPB44q]5PLo,7EGh&5<IJcFL)r;_EKJcC<$
+qu?ZrTb%/'li6n`p](0lq>]sbJcGECo`1ceq#H!GJcG-;rr at WMJcDkPr;_EKJcG]KrrAJerr at WM
+MuS;~>
+JcG]Kq#H!GJcF@%rr at WMhuE]VJcEF`rrD<`JJQiQj\(1)g].3PJcC<$JcGWISH/!Ur;cTlr;cZn
+nGn.?p&F[bU]:,iJcC<$mJm1dJcC<$XoJ>"JcC<$rVultRK*9eJcCZ.J,~>
+KE(fKbQ%SBJcCN*rr at WMiW&oXJcE@^rrD<`rTNqGrU9RRqqUl.rU]^;rTN"kp!MmbqpG#jmHFTA
+s604Ks8L:CrrA,[r;_EKJcC<$s8W*!U&Y,mli6n`p](0lp]'sfJcG9?o`1oiqZ)3IJcCB&r;_EK
+OoPF]JcGQGr;_EKU&XogJcCf2J,~>
+KE(fKbQ%SBJcCN*rr at WMiW&oXJcE@^rrD<`m2"(eq&T&BobmKErtb8Foc<WAq]5JMhb25orrA,[
+r;_EKJcC<$s8W*!Tca:7li6n`p](0lp]'sfJcG9?o`1oiqZ)3IJcCB&r;_EKOoPF]JcGQGr;_EK
+U&XogJcCf2J,~>
+KE(fKbQ%SBJcCN*rr at WMiW&oXJcE@^rrD<`JJQuUhb25orrA,[r;_EKJcC<$s8SVili6n`p](0l
+p]'sfJcG9?o`1oiqZ)3IJcCB&r;_EKOoPF]JcGQGr;_EKU&XogJcCf2J,~>
+KE(fKbQ%SBJcCN*rr at WMiW&oXJcE@^rrD<`rTNqGrU9RRqqUl.rU]^;rTN"kp!MmbqpG#jmHFTA
+s604Ks8L:CrrA,[r;_EKJcC<$s8W*!U&Y,mli6n`p](0lp]'sfJcG9?o`1oiqZ)3IJcCB&r;_EK
+OoPF]JcGQGr;_EKU&XogJcCf2J,~>
+KE(fKbQ%SBJcCN*rr at WMiW&oXJcE@^rrD<`m2"(eq&T&BobmKErtb8Foc<WAq]5JMhb25orrA,[
+r;_EKJcC<$s8W*!Tca:7li6n`p](0lp]'sfJcG9?o`1oiqZ)3IJcCB&r;_EKOoPF]JcGQGr;_EK
+U&XogJcCf2J,~>
+KE(fKbQ%SBJcCN*rr at WMiW&oXJcE@^rrD<`JJQuUhb25orrA,[r;_EKJcC<$s8SVili6n`p](0l
+p]'sfJcG9?o`1oiqZ)3IJcCB&r;_EKOoPF]JcGQGr;_EKU&XogJcCf2J,~>
+M?!GQa8c/>JcC<$JcC<$S,`Kgli7"Vs8D!Ls4m;2qt'X=q<7S.rTNe,s2OrkrR'6\p"]T'qrn"M
+q<7eKs60 at Os8N&is8L at ErrB2$rrD$Xr;_EKJcCB&rrAbmrr at WMXoJ>"XoJ7uJcC<$JcC<$M?!SU
+JcC<$NW8qWJcCr6J,~>
+M?!GQa8c/>JcC<$JcC<$S,`Kgli6u&rtbVPpD1pio,[WBq&027nK%ECmiD3Aoc=&MgIolmrrB2$
+rrD$Xr;_EKJcCB&rrA`7rr at WMXoJ>"XoJ7uJcC<$JcC<$M?!SUJcC<$NW8qWJcCr6J,~>
+M?!GQa8c/>JcC<$JcC<$S,`Kgli3LkrrBkNgIolmrrB2$rrD$Xr;_EKJcCB&SH+6 at XoJ>"XoJ7u
+JcC<$JcC<$M?!SUJcC<$NW8qWJcCr6J,~>
+M?!GQa8c/>JcC<$JcC<$S,`Kgli7"Vs8D!Ls4m;2qt'X=q<7S.rTNe,s2OrkrR'6\p"]T'qrn"M
+q<7eKs60 at Os8N&is8L at ErrB2$rrD$Xr;_EKJcCB&rrAbmrr at WMXoJ>"XoJ7uJcC<$JcC<$M?!SU
+JcC<$NW8qWJcCr6J,~>
+M?!GQa8c/>JcC<$JcC<$S,`Kgli6u&rtbVPpD1pio,[WBq&027nK%ECmiD3Aoc=&MgIolmrrB2$
+rrD$Xr;_EKJcCB&rrA`7rr at WMXoJ>"XoJ7uJcC<$JcC<$M?!SUJcC<$NW8qWJcCr6J,~>
+M?!GQa8c/>JcC<$JcC<$S,`Kgli3LkrrBkNgIolmrrB2$rrD$Xr;_EKJcCB&SH+6 at XoJ>"XoJ7u
+JcC<$JcC<$M?!SUJcC<$NW8qWJcCr6J,~>
+O8o(WJcC<$JcE"Tr;bmXrr at WMc2[eDmJm4XrVb^HpZVACrS7/2pY>`2n(dr_rS5`_qqV/+q<7_I
+qrmeGrVligrVhBJqu?ZrhuEWTJcC<$L]@ASU&Y,mJcDkPr;a2(qZ)EOrr at WMJcG`MXoJD$JcF@%
+rr at WMrr@WMMuW_UJcD):J,~>
+O8o(WJcC<$JcE"Tr;bmXrr at WMc2[eDmJm2(rtbVPpD1pilQ,X9rs%p4ru(&Aru(DKeOtJnqu?Zr
+huEWTJcC<$L]@ASTca:7JcDkPr;a2(qZ)EOrr at WMJcG`MXoJD$JcF@%rr at WMrr@WMMuW_UJcD):
+J,~>
+O8o(WJcC<$JcE"Tr;bmXrr at WMc2[eDmJiRirrC"ReOtJnqu?ZrhuEWTJcC<$L]<nFJcDkPr;a2(
+qZ)EOrr at WMJcG`MXoJD$JcF@%rr at WMrr@WMMuW_UJcD):J,~>
+O8o(WJcC<$JcE"Tr;bmXrr at WMc2[eDmJm4XrVb^HpZVACrS7/2pY>`2n(dr_rS5`_qqV/+q<7_I
+qrmeGrVligrVhBJqu?ZrhuEWTJcC<$L]@ASU&Y,mJcDkPr;a2(qZ)EOrr at WMJcG`MXoJD$JcF@%
+rr at WMrr@WMMuW_UJcD):J,~>
+O8o(WJcC<$JcE"Tr;bmXrr at WMc2[eDmJm2(rtbVPpD1pilQ,X9rs%p4ru(&Aru(DKeOtJnqu?Zr
+huEWTJcC<$L]@ASTca:7JcDkPr;a2(qZ)EOrr at WMJcG`MXoJD$JcF@%rr at WMrr@WMMuW_UJcD):
+J,~>
+O8o(WJcC<$JcE"Tr;bmXrr at WMc2[eDmJiRirrC"ReOtJnqu?ZrhuEWTJcC<$L]<nFJcDkPr;a2(
+qZ)EOrr at WMJcG`MXoJD$JcF@%rr at WMrr@WMMuW_UJcD):J,~>
+QiHj]bQ%M at XoJD$JcC<$RK*9eJcF!prrDNfs6opbh=LO-p%/4=oB?),q<7;&pZVY)e*-i'qq_/5
+q=FLIrU^'grU]d_JcF:#r;_EKJcCZ.rrAbmrr at WMXoJ>"]Dq[,JcG`MJcCB&rrB,"rr at WMfDkjN
+JcG`MJcCN*r;_EKS,\!~>
+QiHj]bQ%M at XoJD$JcC<$RK*9eJcF!prrDNfrtbJLq\I3im2c'Hq\euGrs&9>rugVJr?1hTd7]&j
+ec5RJJcC<$MuWeWTca:7JcDkPr;aJ0q#H!Grr at WMKE(rOX8i2"JcF@%rr at WMrr@WML]@;QJcD5>
+J,~>
+QiHj]bQ%M at XoJD$JcC<$RK*9eJcF!prrDNfM\c<mdh^>(JcF:#r;_EKJcCZ.SH+6 at XoJ>"]Dq[,
+JcG`MJcCB&rrB,"rr at WMfDkjNJcG`MJcCN*r;_EKS,\!~>
+QiHj]bQ%M at XoJD$JcC<$RK*9eJcF!prrDNfs6opbh=LO-p%/4=oB?),q<7;&pZVY)e*-i'qq_/5
+q=FLIrU^'grU]d_JcF:#r;_EKJcCZ.rrAbmrr at WMXoJ>"]Dq[,JcG`MJcCB&rrB,"rr at WMfDkjN
+JcG`MJcCN*r;_EKS,\!~>
+QiHj]bQ%M at XoJD$JcC<$RK*9eJcF!prrDNfrtbJLq\I3im2c'Hq\euGrs&9>rugVJr?1hTd7]&j
+ec5RJJcC<$MuWeWTca:7JcDkPr;aJ0q#H!Grr at WMKE(rOX8i2"JcF@%rr at WMrr@WML]@;QJcD5>
+J,~>
+QiHj]bQ%M at XoJD$JcC<$RK*9eJcF!prrDNfM\c<mdh^>(JcF:#r;_EKJcCZ.SH+6 at XoJ>"]Dq[,
+JcG`MJcCB&rrB,"rr at WMfDkjNJcG`MJcCN*r;_EKS,\!~>
+ScAQeJcG'9rr at WMJcEjlrr@WMScA]in,N:`g[kC-oCMS;rS7/2oA&s$s3]6XrU^'Fq<7SEs60 at O
+rVligq>PsFdJs.FJcC<$O8o4[U&Y,mJcDkPr;a\6qZ)3IJcC<$JcC<$p&G$lJcC<$L&_/Qs8W*!
+JcD;@J,~>
+ScAQeJcG'9rr at WMJcEjlrr@WMScA]in,ND5r>GJJ`u41`ocWiHrs&?@q&o2JpE9DTdnB^As%@qC
+dJs.FJcC<$O8o4[Tca:7JcDkPr;a\6qZ)3IJcC<$JcC<$p&G$lJcC<$L&_/Qs8W*!JcD;@J,~>
+ScAQeJcG'9rr at WMJcEjlrr@WMScA]in,J:]rrCRbcV&ihdJs.FJcC<$O8kaNJcDkPr;a\6qZ)3I
+JcC<$JcC<$p&G$lJcC<$L&_/Qs8W*!JcD;@J,~>
+ScAQeJcG'9rr at WMJcEjlrr@WMScA]in,N:`g[kC-oCMS;rS7/2oA&s$s3]6XrU^'Fq<7SEs60 at O
+rVligq>PsFdJs.FJcC<$O8o4[U&Y,mJcDkPr;a\6qZ)3IJcC<$JcC<$p&G$lJcC<$L&_/Qs8W*!
+JcD;@J,~>
+ScAQeJcG'9rr at WMJcEjlrr@WMScA]in,ND5r>GJJ`u41`ocWiHrs&?@q&o2JpE9DTdnB^As%@qC
+dJs.FJcC<$O8o4[Tca:7JcDkPr;a\6qZ)3IJcC<$JcC<$p&G$lJcC<$L&_/Qs8W*!JcD;@J,~>
+ScAQeJcG'9rr at WMJcEjlrr@WMScA]in,J:]rrCRbcV&ihdJs.FJcC<$O8kaNJcDkPr;a\6qZ)3I
+JcC<$JcC<$p&G$lJcC<$L&_/Qs8W*!JcD;@J,~>
+kPt&Pc2[Y at c2[_BJcC<$JcFj3rr at WMS,`Kgnc/Lba7J?TpY>f?_<C^dqrm_Es60 at OoDX=@nc/Uh
+iW&iVJcC<$PQ1X_U&Y,mJcDkPr;an<qZ)3IJcCB&r;_EKJcG9?rr at WMjo>>\JcDGDrrE*!r;_EK
+U&TW~>
+kPt&Pc2[Y at c2[_BJcC<$JcFj3rr at WMS,`Kgnc/V7q\fDLr>k,?lQGj<m2bX<nK%9Fs!.7Yo,uRV
+s&T(krDnLLnc/UhiW&iVJcC<$PQ1X_Tca:7JcDkPr;an<qZ)3IJcCB&r;_EKJcG9?rr at WMjo>>\
+JcDGDrrE*!r;_EKU&TW~>
+kPt&Pc2[Y at c2[_BJcC<$JcFj3rr at WMS,`Kgnc+.Uh%n1,JcG9?rrD$Xr;_EKJcCr6SH+6 at XoJ>"
+a8c#:JcC<$KE(lMJcC<$nc/UhJcFj3rr at WMU&Y,ms8W#tJcDGDJ,~>
+kPt&Pc2[Y at c2[_BJcC<$JcFj3rr at WMS,`Kgnc/Lba7J?TpY>f?_<C^dqrm_Es60 at OoDX=@nc/Uh
+iW&iVJcC<$PQ1X_U&Y,mJcDkPr;an<qZ)3IJcCB&r;_EKJcG9?rr at WMjo>>\JcDGDrrE*!r;_EK
+U&TW~>
+kPt&Pc2[Y at c2[_BJcC<$JcFj3rr at WMS,`Kgnc/V7q\fDLr>k,?lQGj<m2bX<nK%9Fs!.7Yo,uRV
+s&T(krDnLLnc/UhiW&iVJcC<$PQ1X_Tca:7JcDkPr;an<qZ)3IJcCB&r;_EKJcG9?rr at WMjo>>\
+JcDGDrrE*!r;_EKU&TW~>
+kPt&Pc2[Y at c2[_BJcC<$JcFj3rr at WMS,`Kgnc+.Uh%n1,JcG9?rrD$Xr;_EKJcCr6SH+6 at XoJ>"
+a8c#:JcC<$KE(lMJcC<$nc/UhJcFj3rr at WMU&Y,ms8W#tJcDGDJ,~>
+kPt&Pec5FFJcC<$JcC<$JcELbrrDZjq>L9`p\j:Hs8DEXp#uGIoB?),qt'@ArR'0Zp%/.Gp%/4_
+rU]RYJcG9?rrCsVr;_EKJcD):rrAbmrr at WMXoJ>"li6n`kPtDZJcC<$_>jN8JcC<$XoJ>"JcFd1
+rrAVirr at WMr;_EKV>l&~>
+kPt&Pec5FFJcC<$JcC<$JcELbrrDZjs![mmr>GVNruM+fq]thPfc]T$lQH!Dr<Dp;q'5hYocVXT
+s&T(krDnLLnc/UhhuEWTJcC<$QiI'cTca:7JcDkPr;c0`r;c$\qZ)3IJcERdrr at WMJcDkPr;_EK
+j8],ZScA]iJcGZKJcDSHJ,~>
+kPt&Pec5FFJcC<$JcC<$JcELbrrDZjKbjUeh%n%(JcG9?rrCsVr;_EKJcD):SH+6 at XoJ>"li6n`
+kPtDZJcC<$_>jN8JcC<$XoJ>"JcFd1rrAVirr at WMr;_EKV>l&~>
+kPt&Pec5FFJcC<$JcC<$JcELbrrDZjq>L9`p\j:Hs8DEXp#uGIoB?),qt'@ArR'0Zp%/.Gp%/4_
+rU]RYJcG9?rrCsVr;_EKJcD):rrAbmrr at WMXoJ>"li6n`kPtDZJcC<$_>jN8JcC<$XoJ>"JcFd1
+rrAVirr at WMr;_EKV>l&~>
+kPt&Pec5FFJcC<$JcC<$JcELbrrDZjs![mmr>GVNruM+fq]thPfc]T$lQH!Dr<Dp;q'5hYocVXT
+s&T(krDnLLnc/UhhuEWTJcC<$QiI'cTca:7JcDkPr;c0`r;c$\qZ)3IJcERdrr at WMJcDkPr;_EK
+j8],ZScA]iJcGZKJcDSHJ,~>
+kPt&Pec5FFJcC<$JcC<$JcELbrrDZjKbjUeh%n%(JcG9?rrCsVr;_EKJcD):SH+6 at XoJ>"li6n`
+kPtDZJcC<$_>jN8JcC<$XoJ>"JcFd1rrAVirr at WMr;_EKV>l&~>
+kPtJ\ci<kBJcC<$U&Y,mOoP@[JcC`0rrDZjjo+T<rVc3Vq<7_Ip#uA0q=DAbjn&HMs7>d[JcEpn
+r;_EKJcD5>rrAbmrr at WMXoJ>"kPtJ\nc/IdJcC<$]Dqm2JcC<$XoJ>"JcC<$rVultJcG]Kr;_EK
+WW.J~>
+kPtJ\ci<kBJcC<$U&Y,mOoP@[JcC`0rrDZjs!7O\s!7Iir?V1Vs!u>:oc<?@q'5hYocWiNpE7^R
+pJukFbQ%M at JcC<$S,`KgTca:7JcDkPr;c$\r;cBfqZ)3IJcE@^rr at WMJcDkPr;_EKJcG]Krr at WM
+rVufrJcD_LJ,~>
+kPtJ\ci<kBJcC<$U&Y,mOoP@[JcC`0rrDZjJJR,Y_b5R\bQ%M at JcC<$S,]#ZJcDkPr;c$\r;cBf
+qZ)3IJcE@^rr at WMJcDkPr;_EKJcG]Krr at WMrVufrJcD_LJ,~>
+kPtJ\ci<kBJcC<$U&Y,mOoP@[JcC`0rrDZjjo+T<rVc3Vq<7_Ip#uA0q=DAbjn&HMs7>d[JcEpn
+r;_EKJcD5>rrAbmrr at WMXoJ>"kPtJ\nc/IdJcC<$]Dqm2JcC<$XoJ>"JcC<$rVultJcG]Kr;_EK
+WW.J~>
+kPtJ\ci<kBJcC<$U&Y,mOoP@[JcC`0rrDZjs!7O\s!7Iir?V1Vs!u>:oc<?@q'5hYocWiNpE7^R
+pJukFbQ%M at JcC<$S,`KgTca:7JcDkPr;c$\r;cBfqZ)3IJcE@^rr at WMJcDkPr;_EKJcG]Krr at WM
+rVufrJcD_LJ,~>
+kPtJ\ci<kBJcC<$U&Y,mOoP@[JcC`0rrDZjJJR,Y_b5R\bQ%M at JcC<$S,]#ZJcDkPr;c$\r;cBf
+qZ)3IJcE@^rr at WMJcDkPr;_EKJcG]Krr at WMrVufrJcD_LJ,~>
+kPtJ\e,T at HaoD;>JcC<$fDkjNJcC<$RK*9ep&F"LnalSTnalYAq=F4Ap%-#`nale[p[dYKh>dKT
+JcG3=r;_EKJcDABrrAbmrr at WMXoJ>"j8]&Xqu?NnJcC<$JcGZKJcC<$iW&oXJcC<$JcG?Ar;_EK
+XoEn~>
+kPtJ\e,T at HaoD;>JcC<$fDkjNJcC<$RK*9ep&G%;ruM+Ws!7Iiq]u+Xr?2%hbols0q]4uFpET\b
+pE8iJr?09VoiBoKrr at WMn,N=dJcC<$TE"okTeHEGJcDkPr;bmXr;c`pqZ)3IJcC<$r;_EKJcF^/
+rr at WMJcC<$oDeahJcDkPJ,~>
+kPtJ\e,T at HaoD;>JcC<$fDkjNJcC<$RK*9ep&BRYh\Nt"h>dKTJcG3=r;_EKJcDABSH+6 at XoJ>"
+j8]&Xqu?NnJcC<$JcGZKJcC<$iW&oXJcC<$JcG?Ar;_EKXoEn~>
+kPtJ\e,T at HaoD;>JcC<$fDkjNJcC<$RK*9ep&F"LnalSTnalYAq=F4Ap%-#`nale[p[dYKh>dKT
+JcG3=r;_EKJcDABrrAbmrr at WMXoJ>"j8]&Xqu?NnJcC<$JcGZKJcC<$iW&oXJcC<$JcG?Ar;_EK
+XoEn~>
+kPtJ\e,T at HaoD;>JcC<$fDkjNJcC<$RK*9ep&G%;ruM+Ws!7Iiq]u+Xr?2%hbols0q]4uFpET\b
+pE8iJr?09VoiBoKrr at WMn,N=dJcC<$TE"okTeHEGJcDkPr;bmXr;c`pqZ)3IJcC<$r;_EKJcF^/
+rr at WMJcC<$oDeahJcDkPJ,~>
+kPtJ\e,T at HaoD;>JcC<$fDkjNJcC<$RK*9ep&BRYh\Nt"h>dKTJcG3=r;_EKJcDABSH+6 at XoJ>"
+j8]&Xqu?NnJcC<$JcGZKJcC<$iW&oXJcC<$JcG?Ar;_EKXoEn~>
+kPtJ\e,T:FJcC<$JcE@^r;_EKJcG]KrrDfnh>Qs:q>KdRs60.IpZVYUp%.G3kO\`QoB>f;qu6E_
+li,`?rr at WMli6n`JcC<$U]:>oU&Y,mJcDkPr;baTqZ)3IJcC<$JcC<$fDkjNJcC<$JcGECr;clt
+r;_EKZ2]=~>
+kPtJ\e,T:FJcC<$JcE@^r;_EKJcG]KrrDfns"j['r at e1$q^DCgru(\Vq('i8ocriHocs>\q]P2L
+btJ(;rCd#gs'l"/h>dKTJcG'9r;_EKJcDMFrrA`Grr at WMXoJ>"huEQRJcC<$JcC<$JcF@%rr at WM
+JcC<$p&Fsjs8W#tJcE"TJ,~>
+kPtJ\e,T:FJcC<$JcE@^r;_EKJcG]KrrDfnJJR,Y]h at 2]rr at WMli6n`JcC<$U]6kbJcDkPr;baT
+qZ)3IJcC<$JcC<$fDkjNJcC<$JcGECr;cltr;_EKZ2]=~>
+kPtJ\e,T:FJcC<$JcE@^r;_EKJcG]KrrDfnh>Qs:q>KdRs60.IpZVYUp%.G3kO\`QoB>f;qu6E_
+li,`?rr at WMli6n`JcC<$U]:>oU&Y,mJcDkPr;baTqZ)3IJcC<$JcC<$fDkjNJcC<$JcGECr;clt
+r;_EKZ2]=~>
+kPtJ\e,T:FJcC<$JcE@^r;_EKJcG]KrrDfns"j['r at e1$q^DCgru(\Vq('i8ocriHocs>\q]P2L
+btJ(;rCd#gs'l"/h>dKTJcG'9r;_EKJcDMFrrA`Grr at WMXoJ>"huEQRJcC<$JcC<$JcF@%rr at WM
+JcC<$p&Fsjs8W#tJcE"TJ,~>
+kPtJ\e,T:FJcC<$JcE@^r;_EKJcG]KrrDfnJJR,Y]h at 2]rr at WMli6n`JcC<$U]6kbJcDkPr;baT
+qZ)3IJcC<$JcC<$fDkjNJcC<$JcGECr;cltr;_EKZ2]=~>
+kPtP^s8Vfnh>dKTrVufrhuEWTJcC<$JcCr6rr at WMc2[eDp]&qFq=F:XnaleEp%/"Cqu-3Zn`]rM
+q=FR?nalMSqrmYCq>U9_l2H86l2U\^huE]VJcC<$V>pPqU&Y,mJcDkPr;b[RqZ)3Ih>dKTJcE"T
+rr at WMrVultJcF@%rr at WMrrC[Nr;_EKS,`KgJcE(VJ,~>
+kPtP^s8Vfnh>dKTrVufrhuEWTJcC<$JcCr6rr at WMc2[eDp](7As"j[.s"!spr?VCnq&o>\eKF<*
+o-!cPo-XD\r=/?CbtJ"9s%E5iqdP-Vl2U\^huE]VJcC<$V>pPqTeHEGJcDkPr;b[RqZ)3Ih>dKT
+JcE"Trr at WMrVultJcF@%rr at WMrrC[Nr;_EKS,`KgJcE(VJ,~>
+kPtP^s8Vfnh>dKTrVufrhuEWTJcC<$JcCr6rr at WMc2[eDp]#d[nJ;''o+nr2JcG!7r;baTrr at WM
+JcDSHSH+6 at XoJ>"h>d?PJcFR+rr at WMZ2ah(JcG]Krr at WMfDkjNJcG`MfDkdLJcD5>rr at WMZi>O~>
+kPtP^s8Vfnh>dKTrVufrhuEWTJcC<$JcCr6rr at WMc2[eDp]&qFq=F:XnaleEp%/"Cqu-3Zn`]rM
+q=FR?nalMSqrmYCq>U9_l2H86l2U\^huE]VJcC<$V>pPqU&Y,mJcDkPr;b[RqZ)3Ih>dKTJcE"T
+rr at WMrVultJcF@%rr at WMrrC[Nr;_EKS,`KgJcE(VJ,~>
+kPtP^s8Vfnh>dKTrVufrhuEWTJcC<$JcCr6rr at WMc2[eDp](7As"j[.s"!spr?VCnq&o>\eKF<*
+o-!cPo-XD\r=/?CbtJ"9s%E5iqdP-Vl2U\^huE]VJcC<$V>pPqTeHEGJcDkPr;b[RqZ)3Ih>dKT
+JcE"Trr at WMrVultJcF@%rr at WMrrC[Nr;_EKS,`KgJcE(VJ,~>
+kPtP^s8Vfnh>dKTrVufrhuEWTJcC<$JcCr6rr at WMc2[eDp]#d[nJ;''o+nr2JcG!7r;baTrr at WM
+JcDSHSH+6 at XoJ>"h>d?PJcFR+rr at WMZ2ah(JcG]Krr at WMfDkjNJcG`MfDkdLJcD5>rr at WMZi>O~>
+l2U2PhuE]Vq>^BnJcFL)rr at WMJcD/<rr at WMc2[eDq>](Fq=F4VoCN"\oCMqEq>L!XpZVY?p\j:H
+nc&RPoCM_UrU]:QJcEXfr;_EKJcD_LrrAbmrr at WMXoJ>"h>dKTrVufrJcF^/rr at WMZiC%*JcGWI
+rr at WMfDkjNJcG`MJcC<$qu?ZroDeahJcE4ZJ,~>
+l2U2PhuE]Vq>^BnJcFL)rr at WMJcD/<rr at WMc2[eDq>^ICs"j[.s#0m-q^DCnq&o8Zm3)EZo-"&`
+r?1DNr?hCaocsJJnL!cNf1Z'CpIk0[qdP-V_uKZ8JcC<$WW2tuTeHEGJcDkPr;b[RrrE#tr;_EK
+iW&oXJcE(Vrr at WMqu?ZrJcF@%rr at WMrr@WMJcGWIrrDZjr;_EK\,Us~>
+l2U2PhuE]Vq>^BnJcFL)rr at WMJcD/<rr at WMc2[eDq>Z!]rrD!n[nD;P_uKZ8JcC<$WW/LhJcDkP
+r;b[RrrE#tr;_EKiW&oXJcE(Vrr at WMqu?ZrJcF@%rr at WMrr@WMJcGWIrrDZjr;_EK\,Us~>
+l2U2PhuE]Vq>^BnJcFL)rr at WMJcD/<rr at WMc2[eDq>](Fq=F4VoCN"\oCMqEq>L!XpZVY?p\j:H
+nc&RPoCM_UrU]:QJcEXfr;_EKJcD_LrrAbmrr at WMXoJ>"h>dKTrVufrJcF^/rr at WMZiC%*JcGWI
+rr at WMfDkjNJcG`MJcC<$qu?ZroDeahJcE4ZJ,~>
+l2U2PhuE]Vq>^BnJcFL)rr at WMJcD/<rr at WMc2[eDq>^ICs"j[.s#0m-q^DCnq&o8Zm3)EZo-"&`
+r?1DNr?hCaocsJJnL!cNf1Z'CpIk0[qdP-V_uKZ8JcC<$WW2tuTeHEGJcDkPr;b[RrrE#tr;_EK
+iW&oXJcE(Vrr at WMqu?ZrJcF@%rr at WMrr@WMJcGWIrrDZjr;_EK\,Us~>
+l2U2PhuE]Vq>^BnJcFL)rr at WMJcD/<rr at WMc2[eDq>Z!]rrD!n[nD;P_uKZ8JcC<$WW/LhJcDkP
+r;b[RrrE#tr;_EKiW&oXJcE(Vrr at WMqu?ZrJcF@%rr at WMrr@WMJcGWIrrDZjr;_EK\,Us~>
+l2U\^p](*jiW&oXp&Fsjp&G$lJcG-;rr at WMJcGWIr;_EKJcG-;rrDrre,B7:nbr.PrVc?Zs604U
+p%/(ErVccZp\j4Fn,E"Og\ud(fDkjNli6n`JcC<$XoJD$U&Y,mJcCH(rrDlpr;_EKJcC<$JcC<$
+iW&oXJcC<$JcGQGrrDNfr;_EK]DmB~>
+l2U\^p](*jiW&oXp&Fsjp&G$lJcG-;rr at WMJcGWIr;_EKJcG-;rrDrrq_S71s"!spq^_IbnLO,P
+r@@O`r@@ghm3D?Pruh%\s!IaWm3_QPdnBR=qb-ferF5e-qdP-VfDkjNli6n`JcC<$XoJD$TeHEG
+JcCH(rrDlpr;_EKJcC<$JcC<$iW&oXJcC<$JcGQGrrDNfr;_EK]DmB~>
+l2U\^p](*jiW&oXp&Fsjp&G$lJcG-;rr at WMJcGWIr;_EKJcG-;rrDrrJJS8$rrD'p[7c)NfDkjN
+li6n`JcC<$XoFplJcCH(rrDlpr;_EKJcC<$JcC<$iW&oXJcC<$JcGQGrrDNfr;_EK]DmB~>
+l2U\^p](*jiW&oXp&Fsjp&G$lJcG-;rr at WMJcGWIr;_EKJcG-;rrDrre,B7:nbr.PrVc?Zs604U
+p%/(ErVccZp\j4Fn,E"Og\ud(fDkjNli6n`JcC<$XoJD$U&Y,mJcCH(rrDlpr;_EKJcC<$JcC<$
+iW&oXJcC<$JcGQGrrDNfr;_EK]DmB~>
+l2U\^p](*jiW&oXp&Fsjp&G$lJcG-;rr at WMJcGWIr;_EKJcG-;rrDrrq_S71s"!spq^_IbnLO,P
+r@@O`r@@ghm3D?Pruh%\s!IaWm3_QPdnBR=qb-ferF5e-qdP-VfDkjNli6n`JcC<$XoJD$TeHEG
+JcCH(rrDlpr;_EKJcC<$JcC<$iW&oXJcC<$JcGQGrrDNfr;_EK]DmB~>
+l2U\^p](*jiW&oXp&Fsjp&G$lJcG-;rr at WMJcGWIr;_EKJcG-;rrDrrJJS8$rrD'p[7c)NfDkjN
+li6n`JcC<$XoFplJcCH(rrDlpr;_EKJcC<$JcC<$iW&oXJcC<$JcGQGrrDNfr;_EK]DmB~>
+g&M!NoDegjnc/Uhnc/Ofqu?ZrJcC<$JcC<$JcEpnrrDrr^&@cuq>L!XoDS at Rs6/qMjn%a9q=EA?
+JcFF'rrD6^r;_EKJcE"TrrAbmrr at WML]@;Qp&FsjJcC<$WW2nsJcC<$_>jN8JcC<$JcFj3rrE*!
+r;_EK^]/f~>
+g&M!NoDegjnc/Uhnc/Ofqu?ZrJcC<$JcC<$JcEpnrrDrrs#0m5s#U0<s""$rs"=7#q&o2XrA*sk
+rA+C'q&oJ`ocsJhq'5V\q^VIflR)EWr?Kcaq,[Acqc<Z)s&T#+JcFF'rrD6^r;_EKJcE"TrrA`G
+rr at WML]@;Qp&FsjJcC<$WW2nsJcC<$_>jN8JcC<$JcFj3rrE*!r;_EK^]/f~>
+g&M!NoDegjnc/Uhnc/Ofqu?ZrJcC<$JcC<$JcEpnrrDrrJJR,YZV,lLg&M'PkPtJ\JcC<$Z2^?p
+JcCN*r;cNjr;_EKJcD_Lr;_EKJcERdrr at WMJcC<$jo>>\s8W#tJcELbJ,~>
+g&M!NoDegjnc/Uhnc/Ofqu?ZrJcC<$JcC<$JcEpnrrDrr^&@cuq>L!XoDS at Rs6/qMjn%a9q=EA?
+JcFF'rrD6^r;_EKJcE"TrrAbmrr at WML]@;Qp&FsjJcC<$WW2nsJcC<$_>jN8JcC<$JcFj3rrE*!
+r;_EK^]/f~>
+g&M!NoDegjnc/Uhnc/Ofqu?ZrJcC<$JcC<$JcEpnrrDrrs#0m5s#U0<s""$rs"=7#q&o2XrA*sk
+rA+C'q&oJ`ocsJhq'5V\q^VIflR)EWr?Kcaq,[Acqc<Z)s&T#+JcFF'rrD6^r;_EKJcE"TrrA`G
+rr at WML]@;Qp&FsjJcC<$WW2nsJcC<$_>jN8JcC<$JcFj3rrE*!r;_EK^]/f~>
+g&M!NoDegjnc/Uhnc/Ofqu?ZrJcC<$JcC<$JcEpnrrDrrJJR,YZV,lLg&M'PkPtJ\JcC<$Z2^?p
+JcCN*r;cNjr;_EKJcD_Lr;_EKJcERdrr at WMJcC<$jo>>\s8W#tJcELbJ,~>
+g&M!Nnc/Ofp&G$lmJm+bJcC<$JcG3=r;_EKJcFR+rrE#t]D_Qsq>L'Znbr4Rl2C#@rMT\ejo55M
+g\ud(h>dERiW&iVJcC<$[K$7,U&Y,mJcCN*r;cBfr;_EKJcERdrr at WMJcDkPr;_EK`W,r<]Dqm2
+JcG!7rrE#tr;_EK_uG5~>
+g&M!Nnc/Ofp&G$lmJm+bJcC<$JcG3=r;_EKJcFR+rrE#ts#0m5s#U0<r@@atr@@[dq^_7ns#p*'
+q(hamq()1ar@[slod9Ves#'a)lR)9SrCd(hk=bbSoh50_rF5e"qc<B!JcFR+r;bgVr;_EKJcE.X
+rrA`Grr at WML]@;Qnc/OfJcC<$_>jN8JcC<$XoJ>"JcE^hrrB\2rr at WMl2Ub`rVufrJcEXfJ,~>
+g&M!Nnc/Ofp&G$lmJm+bJcC<$JcG3=r;_EKJcFR+rrE#tJJR,YrCd(h\P%MRh>dERiW&iVJcC<$
+[JuctJcCN*r;cBfr;_EKJcERdrr at WMJcDkPr;_EK`W,r<]Dqm2JcG!7rrE#tr;_EK_uG5~>
+g&M!Nnc/Ofp&G$lmJm+bJcC<$JcG3=r;_EKJcFR+rrE#t]D_Qsq>L'Znbr4Rl2C#@rMT\ejo55M
+g\ud(h>dERiW&iVJcC<$[K$7,U&Y,mJcCN*r;cBfr;_EKJcERdrr at WMJcDkPr;_EK`W,r<]Dqm2
+JcG!7rrE#tr;_EK_uG5~>
+g&M!Nnc/Ofp&G$lmJm+bJcC<$JcG3=r;_EKJcFR+rrE#ts#0m5s#U0<r@@atr@@[dq^_7ns#p*'
+q(hamq()1ar@[slod9Ves#'a)lR)9SrCd(hk=bbSoh50_rF5e"qc<B!JcFR+r;bgVr;_EKJcE.X
+rrA`Grr at WML]@;Qnc/OfJcC<$_>jN8JcC<$XoJ>"JcE^hrrB\2rr at WMl2Ub`rVufrJcEXfJ,~>
+g&M!Nnc/Ofp&G$lmJm+bJcC<$JcG3=r;_EKJcFR+rrE#tJJR,YrCd(h\P%MRh>dERiW&iVJcC<$
+[JuctJcCN*r;cBfr;_EKJcERdrr at WMJcDkPr;_EK`W,r<]Dqm2JcG!7rrE#tr;_EK_uG5~>
+g&M!NmJm%`qu?Zrp](0lp](0lJcC<$[K$7,JcC<$RK*9es8TS,rU]d^q=F"Pqt'"Ljn$+`JcE4Z
+r;_EKJcE:\rrAbmrr at WML&_/QmJm1dJcC<$_uK`:rVultJcC<$ZiBt(JcEXfrrBb4rr at WMhuE]V
+JcE^hJ,~>
+g&M!NmJm%`qu?Zrp](0lp](0lJcC<$[K$7,JcC<$RK*9es8W$UrAss:s""%:s#Ts6r?2+jmkXc'
+q'Phkr?h=qs#'g+q]ktjq]kh^r at 7b'pF>\[pF=ojqc<Mcqc<N%qc<T'rGDRDJcE4Zr;_EKJcE:\
+rrA`Grr at WML&_/QmJm1dJcC<$_uK`:rVultJcC<$ZiBt(JcEXfrrBb4rr at WMhuE]VJcE^hJ,~>
+g&M!NmJm%`qu?Zrp](0lp](0lJcC<$[K$7,JcC<$RK*9es8RWch\N=eJcE4Zr;_EKJcE:\SH+6@
+L&_/QmJm1dJcC<$_uK`:rVultJcC<$ZiBt(JcEXfrrBb4rr at WMhuE]VJcE^hJ,~>
+g&M!NmJm%`qu?Zrp](0lp](0lJcC<$[K$7,JcC<$RK*9es8TS,rU]d^q=F"Pqt'"Ljn$+`JcE4Z
+r;_EKJcE:\rrAbmrr at WML&_/QmJm1dJcC<$_uK`:rVultJcC<$ZiBt(JcEXfrrBb4rr at WMhuE]V
+JcE^hJ,~>
+g&M!NmJm%`qu?Zrp](0lp](0lJcC<$[K$7,JcC<$RK*9es8W$UrAss:s""%:s#Ts6r?2+jmkXc'
+q'Phkr?h=qs#'g+q]ktjq]kh^r at 7b'pF>\[pF=ojqc<Mcqc<N%qc<T'rGDRDJcE4Zr;_EKJcE:\
+rrA`Grr at WML&_/QmJm1dJcC<$_uK`:rVultJcC<$ZiBt(JcEXfrrBb4rr at WMhuE]VJcE^hJ,~>
+g&M!NmJm%`qu?Zrp](0lp](0lJcC<$[K$7,JcC<$RK*9es8RWch\N=eJcE4Zr;_EKJcE:\SH+6@
+L&_/QmJm1dJcC<$_uK`:rVultJcC<$ZiBt(JcEXfrrBb4rr at WMhuE]VJcE^hJ,~>
+l2U\^p&FsjkPtJ\s8W*!jo>8ZJcC<$\c;[0JcC<$RK*9es8TS,s7>j\rU]@RrU].Ljn$%^kPtP^
+JcF-tr;_EKJcEF`rrAbmrr at WML&_/Qli6n`JcC<$_uK`:JcC<$YQ+V&JcC<$JcF@%r;_EKao?k~>
+l2U\^p&FsjkPtJ\s8W*!jo>8ZJcC<$\c;[0JcC<$RK*9es8W*ns"j[9s#0mCs%*/YrAs[2s#oa)
+q`Xg'oeQOopG2\)r at 7h)q(D[lod9\gq).mrs"3slod\]hq,[N)rCcreq-s;'q-s;>s'k0krr at WM
+dJs.FJcC<$^&S*4Tg/PWJcCH(rrDBbr;_EKJcEXfrr at WMJcDqRrr@WMJcC<$fDkdLJcEjlJ,~>
+l2U\^p&FsjkPtJ\s8W*!jo>8ZJcC<$\c;[0JcC<$RK*9es8RWch\N7ckPtP^JcF-tr;_EKJcEF`
+SH+6 at L&_/Qli6n`JcC<$_uK`:JcC<$YQ+V&JcC<$JcF@%r;_EKao?k~>
+l2U\^p&FsjkPtJ\s8W*!jo>8ZJcC<$\c;[0JcC<$RK*9es8TS,s7>j\rU]@RrU].Ljn$%^kPtP^
+JcF-tr;_EKJcEF`rrAbmrr at WML&_/Qli6n`JcC<$_uK`:JcC<$YQ+V&JcC<$JcF@%r;_EKao?k~>
+l2U\^p&FsjkPtJ\s8W*!jo>8ZJcC<$\c;[0JcC<$RK*9es8W*ns"j[9s#0mCs%*/YrAs[2s#oa)
+q`Xg'oeQOopG2\)r at 7h)q(D[lod9\gq).mrs"3slod\]hq,[N)rCcreq-s;'q-s;>s'k0krr at WM
+dJs.FJcC<$^&S*4Tg/PWJcCH(rrDBbr;_EKJcEXfrr at WMJcDqRrr@WMJcC<$fDkdLJcEjlJ,~>
+l2U\^p&FsjkPtJ\s8W*!jo>8ZJcC<$\c;[0JcC<$RK*9es8RWch\N7ckPtP^JcF-tr;_EKJcEF`
+SH+6 at L&_/Qli6n`JcC<$_uK`:JcC<$YQ+V&JcC<$JcF@%r;_EKao?k~>
+l2UV\q>^BniW&iViW&iVJcC<$MuW_UJcC<$c2[eDV>^Aaao1>m]Dh!nrr at WMc2[_BJcC<$_>jN8
+U&Y,mJcCH(rrD6^r;_EKJcC<$JcC<$oDegjJcC<$JcF:#qZ)3Ic2W:~>
+l2UV\q>^BniW&iViW&iVJcC<$MuW_UJcC<$c2[eDs%WMOrAssEs%*)Ws#Ts6pHA+'pHAO'kq`,n
+r at 7V#s"=<rpEoPjpF>tjs!ICgf1Z!ArF5^uqc<B!s&T#+qebNrrr at WMc2[_BJcC<$_>jN8Tg/PW
+JcCH(rrD6^r;_EKJcC<$JcC<$oDegjJcC<$JcF:#qZ)3Ic2W:~>
+l2UV\q>^BniW&iViW&iVJcC<$MuW_UJcC<$c2[eDJJR,YWCuFSrr at WMc2[_BJcC<$_>g&+JcCH(
+rrD6^r;_EKJcC<$JcC<$oDegjJcC<$JcF:#qZ)3Ic2W:~>
+l2UV\q>^BniW&iViW&iVJcC<$MuW_UJcC<$c2[eDV>^Aaao1>m]Dh!nrr at WMc2[_BJcC<$_>jN8
+U&Y,mJcCH(rrD6^r;_EKJcC<$JcC<$oDegjJcC<$JcF:#qZ)3Ic2W:~>
+l2UV\q>^BniW&iViW&iVJcC<$MuW_UJcC<$c2[eDs%WMOrAssEs%*)Ws#Ts6pHA+'pHAO'kq`,n
+r at 7V#s"=<rpEoPjpF>tjs!ICgf1Z!ArF5^uqc<B!s&T#+qebNrrr at WMc2[_BJcC<$_>jN8Tg/PW
+JcCH(rrD6^r;_EKJcC<$JcC<$oDegjJcC<$JcF:#qZ)3Ic2W:~>
+l2UV\q>^BniW&iViW&iVJcC<$MuW_UJcC<$c2[eDJJR,YWCuFSrr at WMc2[_BJcC<$_>g&+JcCH(
+rrD6^r;_EKJcC<$JcC<$oDegjJcC<$JcF:#qZ)3Ic2W:~>
+kPt&PhuE]Vh>dERJcC<$JcC`0rr at WMc2[eDJc4j3jn&BKs0BK?JcF4!r;bgVr;_EKJcE^hrrAbm
+rr at WML&_/Qj8]&XJcGWIrr at WMj8]&XJcF!prr at WMfDkjNJcG`M\,ZI.JcDGDrrE*!r;_EKdJn^~>
+kPt&PhuE]Vh>dERJcC<$JcC`0rr at WMc2[eDs#0m<s$crRrCHrWrAsm8nNHP#of_n%s#p05m5=ho
+q^2=uoelOpnLaVfk=bgTnOr[YqdTA%oj[r<qdTG>JcF4!r;bgVr;_EKJcE^hrrA`Wrr at WML&_/Q
+j8]&XJcGWIrr at WMj8]&XJcF!prr at WMfDkjNJcG`M\,ZI.JcDGDrrE*!r;_EKdJn^~>
+kPt&PhuE]Vh>dERJcC<$JcC`0rr at WMc2[eDJJR2[k=bgT_+T at Ze,T at HiW&iVJcC<$`W)J/JcCH(
+rrD*Zr;_EKqu?ZrJcFd1r;_EKc2[eDJcF@%rr at WMrrBP.rr@WMU&Y,ms8W#tJcF-tJ,~>
+kPt&PhuE]Vh>dERJcC<$JcC`0rr at WMc2[eDJc4j3jn&BKs0BK?JcF4!r;bgVr;_EKJcE^hrrAbm
+rr at WML&_/Qj8]&XJcGWIrr at WMj8]&XJcF!prr at WMfDkjNJcG`M\,ZI.JcDGDrrE*!r;_EKdJn^~>
+kPt&PhuE]Vh>dERJcC<$JcC`0rr at WMc2[eDs#0m<s$crRrCHrWrAsm8nNHP#of_n%s#p05m5=ho
+q^2=uoelOpnLaVfk=bgTnOr[YqdTA%oj[r<qdTG>JcF4!r;bgVr;_EKJcE^hrrA`Wrr at WML&_/Q
+j8]&XJcGWIrr at WMj8]&XJcF!prr at WMfDkjNJcG`M\,ZI.JcDGDrrE*!r;_EKdJn^~>
+kPt&PhuE]Vh>dERJcC<$JcC`0rr at WMc2[eDJJR2[k=bgT_+T at Ze,T at HiW&iVJcC<$`W)J/JcCH(
+rrD*Zr;_EKqu?ZrJcFd1r;_EKc2[eDJcF@%rr at WMrrBP.rr@WMU&Y,ms8W#tJcF-tJ,~>
+jo>&Tg].9Rg&M!NJcGWIrr at WMX8i+uJcG?Arr at WMc2[h,Jc5ECs6'"Ps7?-djo5:c_u>5eX8i+u
+JcC<$aoDA at U&Y,mJcCH(rrCsVr;_EKs8W*!JcC<$X8i2"JcF@%rr at WMrrBJ,rr at WMaoDA@ec5RJ
+JcF:#J,~>
+jo>&Tg].9Rg&M!NJcGWIrr at WMX8i+uJcG?Arr at WMc2[f%s#pBYs$clWrC-ZGm61J?q(hP)o.p8-
+q_J%+s$667s#Bm-s#BO+r at 7g\nLa]!s#'%ArCd.jo1Sm[pL=)%o4%`:rF5Y at JcDeNr;_EKJcEjl
+rrA`Wrr at WML&_/QhuEWTJcGcMrr at WMJcDeNrr@WMfDkjNJcG`M[K$7,JcEjlrrCULr;_EKec1.~>
+jo>&Tg].9Rg&M!NJcGWIrr at WMX8i+uJcG?Arr at WMc2[eDJJS%srrD@#j\,UR_b5R\X8i+uJcC<$
+ao at n3JcCH(rrCsVr;_EKs8W*!JcC<$X8i2"JcF@%rr at WMrrBJ,rr at WMaoDA@ec5RJJcF:#J,~>
+jo>&Tg].9Rg&M!NJcGWIrr at WMX8i+uJcG?Arr at WMc2[h,Jc5ECs6'"Ps7?-djo5:c_u>5eX8i+u
+JcC<$aoDA at U&Y,mJcCH(rrCsVr;_EKs8W*!JcC<$X8i2"JcF@%rr at WMrrBJ,rr at WMaoDA@ec5RJ
+JcF:#J,~>
+jo>&Tg].9Rg&M!NJcGWIrr at WMX8i+uJcG?Arr at WMc2[f%s#pBYs$clWrC-ZGm61J?q(hP)o.p8-
+q_J%+s$667s#Bm-s#BO+r at 7g\nLa]!s#'%ArCd.jo1Sm[pL=)%o4%`:rF5Y at JcDeNr;_EKJcEjl
+rrA`Wrr at WML&_/QhuEWTJcGcMrr at WMJcDeNrr@WMfDkjNJcG`M[K$7,JcEjlrrCULr;_EKec1.~>
+jo>&Tg].9Rg&M!NJcGWIrr at WMX8i+uJcG?Arr at WMc2[eDJJS%srrD@#j\,UR_b5R\X8i+uJcC<$
+ao at n3JcCH(rrCsVr;_EKs8W*!JcC<$X8i2"JcF@%rr at WMrrBJ,rr at WMaoDA@ec5RJJcF:#J,~>
+[K$7,ec5XLJcG]Krr at WMJcC<$JcFj3s8Du\Jc5ECs6&eJU&KWCiW&oXbQ%M at JcC<$c2[eDU&Y,m
+JcCH(rrCgRr;_EKJcC<$JcC<$s8W*!JcC<$JcGQGrrCIHr;_EKg&HR~>
+[K$7,ec5XLJcG]Krr at WMJcC<$JcFj3s&8qEs%r_aqag`UrAs=/qagT>nNHV%q`Xm5q_e79q)/+1
+r at Rb'pGMn!rtkD]pGh,4s'kRmqc<;ts&Sf%qec at Bqe^oaiW&oXbQ%M at JcC<$c2[eDTg/PWJcCH(
+rrCgRr;_EKJcC<$JcC<$s8W*!JcC<$JcGQGrrCIHr;_EKg&HR~>
+[K$7,ec5XLJcG]Krr at WMJcC<$JcFj3rtbV7JJS%srrDF%ThBt:iW&oXbQ%M at JcC<$c2X=7JcCH(
+rrCgRr;_EKJcC<$JcC<$s8W*!JcC<$JcGQGrrCIHr;_EKg&HR~>
+[K$7,ec5XLJcG]Krr at WMJcC<$JcFj3s8Du\Jc5ECs6&eJU&KWCiW&oXbQ%M at JcC<$c2[eDU&Y,m
+JcCH(rrCgRr;_EKJcC<$JcC<$s8W*!JcC<$JcGQGrrCIHr;_EKg&HR~>
+[K$7,ec5XLJcG]Krr at WMJcC<$JcFj3s&8qEs%r_aqag`UrAs=/qagT>nNHV%q`Xm5q_e79q)/+1
+r at Rb'pGMn!rtkD]pGh,4s'kRmqc<;ts&Sf%qec at Bqe^oaiW&oXbQ%M at JcC<$c2[eDTg/PWJcCH(
+rrCgRr;_EKJcC<$JcC<$s8W*!JcC<$JcGQGrrCIHr;_EKg&HR~>
+[K$7,ec5XLJcG]Krr at WMJcC<$JcFj3rtbV7JJS%srrDF%ThBt:iW&oXbQ%M at JcC<$c2X=7JcCH(
+rrCgRr;_EKJcC<$JcC<$s8W*!JcC<$JcGQGrrCIHr;_EKg&HR~>
+[K$7,e,T at HJcC<$\,ZI.JcC<$YQ+Y$s6"t3j8G\NJcF^/rrC+>r;_EKJcF-trrAbmrr at WML]@;Q
+fDkjNJcC<$p&FsjJcC<$OoPF]JcC<$JcEXfrr at WMg])d~>
+[K$7,e,T at HJcC<$\,ZI.JcC<$YQ+Vss#pBYs%E5[s$crKs$5s7q+1N at mlgJ%pHAO3q_e79q).P!
+rB1$9r at 7Upo/P]0q-s.mq,ZTdqec at XrG@,ciW&oXa8c)<JcC<$dJs4HTg/PWJcCN*r;bILrr at WM
+JcGECr;_EKJcCl4rr at WMJcC<$_uK`:JcFL)J,~>
+[K$7,e,T at HJcC<$\,ZI.JcC<$YQ+V<rr at Tcite=]JcF^/rrC+>r;_EKJcF-tSH+6 at L]@;QfDkjN
+JcC<$p&FsjJcC<$OoPF]JcC<$JcEXfrr at WMg])d~>
+[K$7,e,T at HJcC<$\,ZI.JcC<$YQ+Y$s6"t3j8G\NJcF^/rrC+>r;_EKJcF-trrAbmrr at WML]@;Q
+fDkjNJcC<$p&FsjJcC<$OoPF]JcC<$JcEXfrr at WMg])d~>
+[K$7,e,T at HJcC<$\,ZI.JcC<$YQ+Vss#pBYs%E5[s$crKs$5s7q+1N at mlgJ%pHAO3q_e79q).P!
+rB1$9r at 7Upo/P]0q-s.mq,ZTdqec at XrG@,ciW&oXa8c)<JcC<$dJs4HTg/PWJcCN*r;bILrr at WM
+JcGECr;_EKJcCl4rr at WMJcC<$_uK`:JcFL)J,~>
+[K$7,e,T at HJcC<$\,ZI.JcC<$YQ+V<rr at Tcite=]JcF^/rrC+>r;_EKJcF-tSH+6 at L]@;QfDkjN
+JcC<$p&FsjJcC<$OoPF]JcC<$JcEXfrr at WMg])d~>
+[K$7,ci<qDJcC<$^&S*4JcC<$YQ+S"s6&)6h>X\Xe,KBQc2N:oa8c/>huEWTJcC<$ec5XLU&Y,m
+JcCN*r;bCJr;_EKJcFR+rr at WMJcDkPr;_EKJcG]Krr at WMbQ%A<JcFX-J,~>
+[K$7,ci<qDJcC<$^&S*4JcC<$YQ+Q"s#L$NrCHrWrBTa5qagU$m:,rnrF5Xeq_e17q_e71s$ZH<
+pH8=)rC$<<hcBDZrtbW-q,[)rrGD:<qec:VrG@,ca8c/>huEWTJcC<$ec5XLTg/PWJcCN*r;bCJ
+r;_EKJcFR+rr at WMJcDkPr;_EKJcG]Krr at WMbQ%A<JcFX-J,~>
+[K$7,ci<qDJcC<$^&S*4JcC<$YQ+P:rrC^fh+P!gdnB]@btEWfa8c/>huEWTJcC<$ec20?JcCN*
+r;bCJr;_EKJcFR+rr at WMJcDkPr;_EKJcG]Krr at WMbQ%A<JcFX-J,~>
+[K$7,ci<qDJcC<$^&S*4JcC<$YQ+S"s6&)6h>X\Xe,KBQc2N:oa8c/>huEWTJcC<$ec5XLU&Y,m
+JcCN*r;bCJr;_EKJcFR+rr at WMJcDkPr;_EKJcG]Krr at WMbQ%A<JcFX-J,~>
+[K$7,ci<qDJcC<$^&S*4JcC<$YQ+Q"s#L$NrCHrWrBTa5qagU$m:,rnrF5Xeq_e17q_e71s$ZH<
+pH8=)rC$<<hcBDZrtbW-q,[)rrGD:<qec:VrG@,ca8c/>huEWTJcC<$ec5XLTg/PWJcCN*r;bCJ
+r;_EKJcFR+rr at WMJcDkPr;_EKJcG]Krr at WMbQ%A<JcFX-J,~>
+[K$7,ci<qDJcC<$^&S*4JcC<$YQ+P:rrC^fh+P!gdnB]@btEWfa8c/>huEWTJcC<$ec20?JcCN*
+r;bCJr;_EKJcFR+rr at WMJcDkPr;_EKJcG]Krr at WMbQ%A<JcFX-J,~>
+[K$7,bQ%M at JcC<$e,TFJJcC<$ScAZes6&A>bPo-PdJj0Oci/Lq`W,r<h>dERJcC<$g&M'PU&Y,m
+JcCH(rrCIHr;_EKNW8qWg&M'PJcC<$XoJ>"JcDSHr;b[Rrr at WM_uKZ8JcFd1J,~>
+[K$7,bQ%M at JcC<$e,TFJJcC<$ScAXes#L*Pqag`[rBTg7s'kS:mpc5ro4%`#og&I5q`+UDof2V,
+s"s[HqaC0<h,a2XrtbWDqc<5rqec.<qec4TJcE^hrrCmTr;_EKJcFF'rrA`Wrr at WML&_/QdJs.F
+JcC`0r;bONrr at WMJcDkPr;_EKV>pJoh>dKTJcEXfr;_EKj8XW~>
+[K$7,bQ%M at JcC<$e,TFJJcC<$ScAX(rrD!nb=fG_d7aK>cV&ih`W,r<h>dERJcC<$g&ITCJcCH(
+rrCIHr;_EKNW8qWg&M'PJcC<$XoJ>"JcDSHr;b[Rrr at WM_uKZ8JcFd1J,~>
+[K$7,bQ%M at JcC<$e,TFJJcC<$ScAZes6&A>bPo-PdJj0Oci/Lq`W,r<h>dERJcC<$g&M'PU&Y,m
+JcCH(rrCIHr;_EKNW8qWg&M'PJcC<$XoJ>"JcDSHr;b[Rrr at WM_uKZ8JcFd1J,~>
+[K$7,bQ%M at JcC<$e,TFJJcC<$ScAXes#L*Pqag`[rBTg7s'kS:mpc5ro4%`#og&I5q`+UDof2V,
+s"s[HqaC0<h,a2XrtbWDqc<5rqec.<qec4TJcE^hrrCmTr;_EKJcFF'rrA`Wrr at WML&_/QdJs.F
+JcC`0r;bONrr at WMJcDkPr;_EKV>pJoh>dKTJcEXfr;_EKj8XW~>
+[K$7,bQ%M at JcC<$e,TFJJcC<$ScAX(rrD!nb=fG_d7aK>cV&ih`W,r<h>dERJcC<$g&ITCJcCH(
+rrCIHr;_EKNW8qWg&M'PJcC<$XoJ>"JcDSHr;b[Rrr at WM_uKZ8JcFd1J,~>
+[K$7,a8c)<JcC<$fDk^JJcC<$U]:5is6&SD^&H"LRJu[Trr at WMZ2ab&JcC<$h>dKTU&Y,mJcCH(
+rrC=Dr;_EKJcC<$JcCl4rrE*!rr at WMJcC<$\c;U.JcFp5J,~>
+[K$7,a8c)<JcC<$fDk^JJcC<$U]:9ks%r_Qs%E;]s%E;Us&T.upHAC_nSR)ks&Sr)rBU<=rAa[B
+pGhn0s$-0Kq)I,0nRDH6rDrN!q/-.VrF5Y at q0;B.rr at WMZ2ab&JcC<$h>dKTTg/PWJcCH(rrC=D
+r;_EKJcC<$JcCl4rrE*!rr at WMJcC<$\c;U.JcFp5J,~>
+[K$7,a8c)<JcC<$fDk^JJcC<$U]:3,rrD3t]h?<[R7m#Krr at WMZ2ab&JcC<$h>a#GJcCH(rrC=D
+r;_EKJcC<$JcCl4rrE*!rr at WMJcC<$\c;U.JcFp5J,~>
+[K$7,a8c)<JcC<$fDk^JJcC<$U]:5is6&SD^&H"LRJu[Trr at WMZ2ab&JcC<$h>dKTU&Y,mJcCH(
+rrC=Dr;_EKJcC<$JcCl4rrE*!rr at WMJcC<$\c;U.JcFp5J,~>
+[K$7,a8c)<JcC<$fDk^JJcC<$U]:9ks%r_Qs%E;]s%E;Us&T.upHAC_nSR)ks&Sr)rBU<=rAa[B
+pGhn0s$-0Kq)I,0nRDH6rDrN!q/-.VrF5Y at q0;B.rr at WMZ2ab&JcC<$h>dKTTg/PWJcCH(rrC=D
+r;_EKJcC<$JcCl4rrE*!rr at WMJcC<$\c;U.JcFp5J,~>
+[K$7,a8c)<JcC<$fDk^JJcC<$U]:3,rrD3t]h?<[R7m#Krr at WMZ2ab&JcC<$h>a#GJcCH(rrC=D
+r;_EKJcC<$JcCl4rrE*!rr at WMJcC<$\c;U.JcFp5J,~>
+[K$7,_uKZ8JcC<$JcC<$JcGQGq>L?Vli"0hc2F".n,NCfJcDkPr;_EKJcF^/rrAbmrr at WML&_/Q
+aoD;>JcC<$JcC<$OoPF]JcC<$JcE.Xr;_EKli2J~>
+[K$7,_uKZ8JcC<$JcC<$JcGQGrEfM&s&T.WrCHs"s'kq-pJ^fqmqqN&s)$e*rAaU at q)J+2s$uZQ
+rBL<AfiIWPq/,_4q/-(Ts'ke at qfqT0rr@WMXoJ>"JcC<$iW&oXThk[gJcCH(rrC1 at r;_EKJcC<$
+JcCl4rr at WMJcC<$[K$1*JcG'9J,~>
+[K$7,_uKZ8JcC<$JcC<$JcGQGq%iu1lP?g"bncX=n,NCfJcDkPr;_EKJcF^/SH+6 at L&_/QaoD;>
+JcC<$JcC<$OoPF]JcC<$JcE.Xr;_EKli2J~>
+[K$7,_uKZ8JcC<$JcC<$JcGQGq>L?Vli"0hc2F".n,NCfJcDkPr;_EKJcF^/rrAbmrr at WML&_/Q
+aoD;>JcC<$JcC<$OoPF]JcC<$JcE.Xr;_EKli2J~>
+[K$7,_uKZ8JcC<$JcC<$JcGQGrEfM&s&T.WrCHs"s'kq-pJ^fqmqqN&s)$e*rAaU at q)J+2s$uZQ
+rBL<AfiIWPq/,_4q/-(Ts'ke at qfqT0rr@WMXoJ>"JcC<$iW&oXThk[gJcCH(rrC1 at r;_EKJcC<$
+JcCl4rr at WMJcC<$[K$1*JcG'9J,~>
+[K$7,_uKZ8JcC<$JcC<$JcGQGq%iu1lP?g"bncX=n,NCfJcDkPr;_EKJcF^/SH+6 at L&_/QaoD;>
+JcC<$JcC<$OoPF]JcC<$JcE.Xr;_EKli2J~>
+[K$7,^]464JcC<$li6tbJcEXfrr at WMec5IDs6&kLVuG6F^]+8=g&?R&]Dqm2huE]VJcC<$j8],Z
+U&Y,mJcCH(rrC%<rrADcrrA8_r;_EKScA]iJcF@%rr at WMrr@WMJcE4ZrrE*!rr at WMmJh\~>
+[K$7,^]464JcC<$li6tbJcEXfrr at WMec5YYs&8r$s%EALs'GY8qc<Smq0;jIlYZ6&rGD4:rGD.8
+s&T#+rC$H at q)n[InOi[Cf2hENq/--Toj[f8q0;dRq07Jj]Dqm2huE]VJcC<$j8],ZThk[gJcCH(
+rrC%<rrADcrrA8_r;_EKScA]iJcF@%rr at WMrr@WMJcE4ZrrE*!rr at WMmJh\~>
+[K$7,^]464JcC<$li6tbJcEXfrr at WMec5F\rrDL'Vb>PU^J"S,fh6nr]Dqm2huE]VJcC<$j8YYM
+JcCH(rrC%<rrADcrrA8_r;_EKScA]iJcF@%rr at WMrr@WMJcE4ZrrE*!rr at WMmJh\~>
+[K$7,^]464JcC<$li6tbJcEXfrr at WMec5IDs6&kLVuG6F^]+8=g&?R&]Dqm2huE]VJcC<$j8],Z
+U&Y,mJcCH(rrC%<rrADcrrA8_r;_EKScA]iJcF@%rr at WMrr@WMJcE4ZrrE*!rr at WMmJh\~>
+[K$7,^]464JcC<$li6tbJcEXfrr at WMec5YYs&8r$s%EALs'GY8qc<Smq0;jIlYZ6&rGD4:rGD.8
+s&T#+rC$H at q)n[InOi[Cf2hENq/--Toj[f8q0;dRq07Jj]Dqm2huE]VJcC<$j8],ZThk[gJcCH(
+rrC%<rrADcrrA8_r;_EKScA]iJcF@%rr at WMrr@WMJcE4ZrrE*!rr at WMmJh\~>
+[K$7,^]464JcC<$li6tbJcEXfrr at WMec5F\rrDL'Vb>PU^J"S,fh6nr]Dqm2huE]VJcC<$j8YYM
+JcCH(rrC%<rrADcrrA8_r;_EKScA]iJcF@%rr at WMrr@WMJcE4ZrrE*!rr at WMmJh\~>
+[K$7,]Dqg0RK*9eJcFL)rr at WM_>jN8JcF@%p\k-ToDP6Zli$kHp&2N%s0CDYJcE:\rrCsVr;_EK
+JcFp5rrAbmrr at WML&_/Q_uKZ8S,`KgJcC<$X8i2"JcG'9r;cBfrrDlprr at uWrrADcrr@WMkPtP^
+^&S*4s8W#tJcG9?J,~>
+[K$7,]Dqg0RK*9eJcFL)rr at WM_>jN8JcF@%rEfM-s&T//s%**"s'kq-rDW<4s'k;2o4%Z8oj[l:
+j^S0Jq)nUGqb$lFpIbHMeQ23LpMKpRs)%R at q/-"RrIb&cqfm\l\c;[0huEWTJcC<$kPtP^Thk[g
+JcCH(rrBt:r;`>err at WMJcDeNrr@WMli6n`nc/Uhq>^HpMuWeWQiI'cJcFp5rrBb4rrE*!r;_EK
+nc++~>
+[K$7,]Dqg0RK*9eJcFL)rr at WM_>jN8JcF@%pD3c/o+mlilPBL#obP/4rrCeHJcE:\rrCsVr;_EK
+JcFp5SH+6 at L&_/Q_uKZ8S,`KgJcC<$X8i2"JcG'9r;cBfrrDlprr at uWrrADcrr@WMkPtP^^&S*4
+s8W#tJcG9?J,~>
+[K$7,]Dqg0RK*9eJcFL)rr at WM_>jN8JcF@%p\k-ToDP6Zli$kHp&2N%s0CDYJcE:\rrCsVr;_EK
+JcFp5rrAbmrr at WML&_/Q_uKZ8S,`KgJcC<$X8i2"JcG'9r;cBfrrDlprr at uWrrADcrr@WMkPtP^
+^&S*4s8W#tJcG9?J,~>
+[K$7,]Dqg0RK*9eJcFL)rr at WM_>jN8JcF@%rEfM-s&T//s%**"s'kq-rDW<4s'k;2o4%Z8oj[l:
+j^S0Jq)nUGqb$lFpIbHMeQ23LpMKpRs)%R at q/-"RrIb&cqfm\l\c;[0huEWTJcC<$kPtP^Thk[g
+JcCH(rrBt:r;`>err at WMJcDeNrr@WMli6n`nc/Uhq>^HpMuWeWQiI'cJcFp5rrBb4rrE*!r;_EK
+nc++~>
+[K$7,]Dqg0RK*9eJcFL)rr at WM_>jN8JcF@%pD3c/o+mlilPBL#obP/4rrCeHJcE:\rrCsVr;_EK
+JcFp5SH+6 at L&_/Q_uKZ8S,`KgJcC<$X8i2"JcG'9r;cBfrrDlprr at uWrrADcrr@WMkPtP^^&S*4
+s8W#tJcG9?J,~>
+[K$7,\,ZC,ScA]iJcC<$JcC<$mJlqZs6'(RQ2^=Ps6'(ROoBq3l2Ub`XoJ>"JcC<$li6tbU&Y,m
+JcCH(rrBh6r;_EK^&S*4JcC<$JcF^/rrDfnrr at WMTE"okJcG!7rrBJ,r;_EKp&BO~>
+[K$7,\,ZC,ScA]iJcC<$JcC<$mJm2qs&8r$rF5e&rFQ"<rDrqsms+/8s*49Iq/,q:q/,k8rGD4:
+qc<YXs&/keq+CZDpIbHMeQ23LnSS;NqdTG>q0;dhq07Jjl2Ub`XoJ>"JcC<$li6tbThk[gJcCH(
+rrBh6r;_EK^&S*4JcC<$JcF^/rrDfnrr at WMTE"okJcG!7rrBJ,r;_EKp&BO~>
+[K$7,\,ZC,ScA]iJcC<$JcC<$mJlnrrrD^-PtUW_rrD^-O\:9*l2Ub`XoJ>"JcC<$li3LUJcCH(
+rrBh6r;_EK^&S*4JcC<$JcF^/rrDfnrr at WMTE"okJcG!7rrBJ,r;_EKp&BO~>
+[K$7,\,ZC,ScA]iJcC<$JcC<$mJlqZs6'(RQ2^=Ps6'(ROoBq3l2Ub`XoJ>"JcC<$li6tbU&Y,m
+JcCH(rrBh6r;_EK^&S*4JcC<$JcF^/rrDfnrr at WMTE"okJcG!7rrBJ,r;_EKp&BO~>
+[K$7,\,ZC,ScA]iJcC<$JcC<$mJm2qs&8r$rF5e&rFQ"<rDrqsms+/8s*49Iq/,q:q/,k8rGD4:
+qc<YXs&/keq+CZDpIbHMeQ23LnSS;NqdTG>q0;dhq07Jjl2Ub`XoJ>"JcC<$li6tbThk[gJcCH(
+rrBh6r;_EK^&S*4JcC<$JcF^/rrDfnrr at WMTE"okJcG!7rrBJ,r;_EKp&BO~>
+[K$7,\,ZC,ScA]iJcC<$JcC<$mJlnrrrD^-PtUW_rrD^-O\:9*l2Ub`XoJ>"JcC<$li3LUJcCH(
+rrBh6r;_EK^&S*4JcC<$JcF^/rrDfnrr at WMTE"okJcG!7rrBJ,r;_EKp&BO~>
+[K$7,ZiBt(JcCT,r;_EKJcCT,p&4pRq>H0LmJZ/GrVs)#JcG!7rrB%ur;_EKJcG3=rrAbmrr at WM
+L]@;Q]Dqg0JcEXfrr at WMJcC<$rrD$Xrr at WMJcC<$VuQ\qJcGQGJ,~>
+[K$7,ZiBt(JcCT,r;_EKJcCT,s)%dBs'#G>s'l"As%iZ+s'kq-m<JS^mqqrHq-s/:qdT;:pL=)<
+oj[_trGDRDm7QJ at rVuCgnRD*,qfr-Mq/-"Rq1JQhJcG!7rrB%ur;_EKJcG3=rrA`grr at WML]@;Q
+]Dqg0JcEXfrr at WMJcC<$rrD$Xrr at WMJcC<$VuQ\qJcGQGJ,~>
+[K$7,ZiBt(JcCT,r;_EKJcCT,obRQ-q%ef[m2"eVrVs&oJcG!7rrB%ur;_EKJcG3=SH+6 at L]@;Q
+]Dqg0JcEXfrr at WMJcC<$rrD$Xrr at WMJcC<$VuQ\qJcGQGJ,~>
+[K$7,ZiBt(JcCT,r;_EKJcCT,p&4pRq>H0LmJZ/GrVs)#JcG!7rrB%ur;_EKJcG3=rrAbmrr at WM
+L]@;Q]Dqg0JcEXfrr at WMJcC<$rrD$Xrr at WMJcC<$VuQ\qJcGQGJ,~>
+[K$7,ZiBt(JcCT,r;_EKJcCT,s)%dBs'#G>s'l"As%iZ+s'kq-m<JS^mqqrHq-s/:qdT;:pL=)<
+oj[_trGDRDm7QJ at rVuCgnRD*,qfr-Mq/-"Rq1JQhJcG!7rrB%ur;_EKJcG3=rrA`grr at WML]@;Q
+]Dqg0JcEXfrr at WMJcC<$rrD$Xrr at WMJcC<$VuQ\qJcGQGJ,~>
+[K$7,ZiBt(JcCT,r;_EKJcCT,obRQ-q%ef[m2"eVrVs&oJcG!7rrB%ur;_EKJcG3=SH+6 at L]@;Q
+]Dqg0JcEXfrr at WMJcC<$rrD$Xrr at WMJcC<$VuQ\qJcGQGJ,~>
+[K$7,YQ+P$JcC<$JcC<$OoP+Qs6':Xg&CUA\,Q!toD[_K^&ET_XoJD$iW&iVJcC<$oDegjU&Y,m
+JcCN*r;a>,r;_EKJcGWIrr at WMJcF'rrrD$Xr;_EKJcG]Krr at WMX8i%sJcG]KJ,~>
+[K$7,YQ+P$JcC<$JcC<$OoPGjs'#GAs'l"As(24+s(24>s&SH1qh+QYrDi`'rC[*!okjY:pMK_8
+qebq6rDr`2qdT.hs'kY%iW&pYnRD$*qfr-nqec4Ton39hJcDkPrrD$Xr;_EKJcG?ArrA`grr at WM
+L]@;Q\,ZC,JcC<$qu?ZrJcC<$ci="FiW&iVJcC<$rVultJcDeNqZ)3IrVqB~>
+[K$7,YQ+P$JcC<$JcC<$OoP(irrDp3fh:oP[nH<.o1S'B]h<qVXoJD$iW&iVJcC<$oDb?]JcCN*
+r;a>,r;_EKJcGWIrr at WMJcF'rrrD$Xr;_EKJcG]Krr at WMX8i%sJcG]KJ,~>
+[K$7,YQ+P$JcC<$JcC<$OoP+Qs6':Xg&CUA\,Q!toD[_K^&ET_XoJD$iW&iVJcC<$oDegjU&Y,m
+JcCN*r;a>,r;_EKJcGWIrr at WMJcF'rrrD$Xr;_EKJcG]Krr at WMX8i%sJcG]KJ,~>
+[K$7,YQ+P$JcC<$JcC<$OoPGjs'#GAs'l"As(24+s(24>s&SH1qh+QYrDi`'rC[*!okjY:pMK_8
+qebq6rDr`2qdT.hs'kY%iW&pYnRD$*qfr-nqec4Ton39hJcDkPrrD$Xr;_EKJcG?ArrA`grr at WM
+L]@;Q\,ZC,JcC<$qu?ZrJcC<$ci="FiW&iVJcC<$rVultJcDeNqZ)3IrVqB~>
+[K$7,YQ+P$JcC<$JcC<$OoP(irrDp3fh:oP[nH<.o1S'B]h<qVXoJD$iW&iVJcC<$oDb?]JcCN*
+r;a>,r;_EKJcGWIrr at WMJcF'rrrD$Xr;_EKJcG]Krr at WMX8i%sJcG]KJ,~>
+[K$7,X8i+uJcDABrrC[Nrr at WMJcDYJoDS^PrVbjWec!>`qu-9ge,SD+rNbVcJcDkPrrCsVr;_EK
+JcGKErrAbmrr at WML&_/QZiBt(JcFL)r;`hsrr at WMJcDkPr;_EKL&_/Qqu?ZrJcD_LrrE*!r;_EK
+J,~>
+[K$7,X8i+uJcDABrrC[Nrr at WMJcDYJs)%dIs)A!TrFl4Bs%iZ+s&SH1qh+i`oi:`prCZ`_s%W*%
+rF5M<oj[r%pMKS4qb$frqc;2GpL<Z0qfr,ls#9t1s)%RVo7MVoXoJD$huEWTJcC<$p](6nThk[g
+JcCH(rrBD*r;_EKg].3PWW2tuJcC<$XoJ>"JcCH(rrDrrrr at WMWW2tus8W#tJcC6~>
+[K$7,X8i+uJcDABrrC[Nrr at WMJcDYJo+q?+r>+KfeJ>toq\Jp!e,SB"r;c"RJcDkPrrCsVr;_EK
+JcGKESH+6 at L&_/QZiBt(JcFL)r;`hsrr at WMJcDkPr;_EKL&_/Qqu?ZrJcD_LrrE*!r;_EKJ,~>
+[K$7,X8i+uJcDABrrC[Nrr at WMJcDYJoDS^PrVbjWec!>`qu-9ge,SD+rNbVcJcDkPrrCsVr;_EK
+JcGKErrAbmrr at WML&_/QZiBt(JcFL)r;`hsrr at WMJcDkPr;_EKL&_/Qqu?ZrJcD_LrrE*!r;_EK
+J,~>
+[K$7,X8i+uJcDABrrC[Nrr at WMJcDYJs)%dIs)A!TrFl4Bs%iZ+s&SH1qh+i`oi:`prCZ`_s%W*%
+rF5M<oj[r%pMKS4qb$frqc;2GpL<Z0qfr,ls#9t1s)%RVo7MVoXoJD$huEWTJcC<$p](6nThk[g
+JcCH(rrBD*r;_EKg].3PWW2tuJcC<$XoJ>"JcCH(rrDrrrr at WMWW2tus8W#tJcC6~>
+[K$7,X8i+uJcDABrrC[Nrr at WMJcDYJo+q?+r>+KfeJ>toq\Jp!e,SB"r;c"RJcDkPrrCsVr;_EK
+JcGKESH+6 at L&_/QZiBt(JcFL)r;`hsrr at WMJcDkPr;_EKL&_/Qqu?ZrJcD_LrrE*!r;_EKJ,~>
+[K$7,VuQbsJcDMFrrCULrr at WMJcD_LnbrLNkPiI!_>_LTao:u5rr at WMPQ1R]JcC<$qu?ZrU&Y,m
+JcCH(rrB8&rr at WMJcC<$JcFR+r;b7FrrD<`r;_EKTE"okJcD5>rr@]OJ,~>
+[K$7,VuQbsJcDMFrrCULrr at WMJcD_Ls)%dFrG_^KrFQ")s+BQ\okaA&pL4(oo2YHdrGDLBpMKS4
+okj#(a8c$Go54;Jq1JQho7Q`9rr at WMPQ1R]JcC<$qu?ZrThk[gJcCH(rrB8&rr at WMJcC<$JcFR+
+r;b7FrrD<`r;_EKTE"okJcD5>rr@]OJ,~>
+[K$7,VuQbsJcDMFrrCULrr at WMJcD_LnJ;-)k=`c0_+ViKa\2=,rr at WMPQ1R]JcC<$qu<2eJcCH(
+rrB8&rr at WMJcC<$JcFR+r;b7FrrD<`r;_EKTE"okJcD5>rr@]OJ,~>
+[K$7,VuQbsJcDMFrrCULrr at WMJcD_LnbrLNkPiI!_>_LTao:u5rr at WMPQ1R]JcC<$qu?ZrU&Y,m
+JcCH(rrB8&rr at WMJcC<$JcFR+r;b7FrrD<`r;_EKTE"okJcD5>rr@]OJ,~>
+[K$7,VuQbsJcDMFrrCULrr at WMJcD_Ls)%dFrG_^KrFQ")s+BQ\okaA&pL4(oo2YHdrGDLBpMKS4
+okj#(a8c$Go54;Jq1JQho7Q`9rr at WMPQ1R]JcC<$qu?ZrThk[gJcCH(rrB8&rr at WMJcC<$JcFR+
+r;b7FrrD<`r;_EKTE"okJcD5>rr@]OJ,~>
+[K$7,VuQbsJcDMFrrCULrr at WMJcD_LnJ;-)k=`c0_+ViKa\2=,rr at WMPQ1R]JcC<$qu<2eJcCH(
+rrB8&rr at WMJcC<$JcFR+r;b7FrrD<`r;_EKTE"okJcD5>rr@]OJ,~>
+[K$7,V>pJoJcC<$JcC<$TE"`crTF.Xs0D%k[JeAL^]2RXp](6nJcCf2r;_EKJcGcMrrAbmrr at WM
+L&_/QXoJ>"JcG3=rr at WMJcC<$_>jN8JcC<$JcD/<r;_WQJ,~>
+[K$7,V>pJoJcC<$JcC<$TE"q.s*t&fs*+E>rFQ!fm<JS<nSJ)&o3q5js)7F1rET/8pL=)Gokj/,
+^]3h at qfqphs,Qu$o7Qf;rr at WMO8o.YJcC<$s8W*!TjRg"JcCH(rrB2$r;_EKn,NCfJcC<$JcERd
+rr at WMJcC<$RK*3cL];l~>
+[K$7,V>pJoJcC<$JcC<$TE"^&r;cd3rrDFZ[2."[^]2POp](6nJcCf2r;_EKJcGcMSH+6 at L&_/Q
+XoJ>"JcG3=rr at WMJcC<$_>jN8JcC<$JcD/<r;_WQJ,~>
+[K$7,V>pJoJcC<$JcC<$TE"`crTF.Xs0D%k[JeAL^]2RXp](6nJcCf2r;_EKJcGcMrrAbmrr at WM
+L&_/QXoJ>"JcG3=rr at WMJcC<$_>jN8JcC<$JcD/<r;_WQJ,~>
+[K$7,V>pJoJcC<$JcC<$TE"q.s*t&fs*+E>rFQ!fm<JS<nSJ)&o3q5js)7F1rET/8pL=)Gokj/,
+^]3h at qfqphs,Qu$o7Qf;rr at WMO8o.YJcC<$s8W*!TjRg"JcCH(rrB2$r;_EKn,NCfJcC<$JcERd
+rr at WMJcC<$RK*3cL];l~>
+[K$7,V>pJoJcC<$JcC<$TE"^&r;cd3rrDFZ[2."[^]2POp](6nJcCf2r;_EKJcGcMSH+6 at L&_/Q
+XoJ>"JcG3=rr at WMJcC<$_>jN8JcC<$JcD/<r;_WQJ,~>
+[K$7,U&Y&kJcE@^r;_EKPQ1X_JcFX-nbrLes0D1oWVtNL\,XkTJcDGDrrD$Xr;_EKKE(rOU&Y,m
+JcCH(rrB%ur;a8*rrBt:rr at WMJcG'9rrAJerrBn8rr at WMrr@WMJcD):r;_cUJ,~>
+[K$7,U&Y&kJcE@^r;_EKPQ1X_JcFX-s)e9Ss*Xicqe6"@s+C>1nTak<nSJ)&ojRl:oi;#prGV at 3
+s)7R8s)%XBqfqdNo4#3/okjMLqh+d+s*4-fJcDGDrrD$Xr;_EKKE(rOTjRg"JcCH(rrB%ur;a8*
+rrBt:rr at WMJcG'9rrAJerrBn8rr at WMrr@WMJcD):r;_cUJ,~>
+[K$7,U&Y&kJcE@^r;_EKPQ1X_JcFX-nJ;-trrDR^W>=/[\,XiKJcDGDrrD$Xr;_EKKE%JBJcCH(
+rrB%ur;a8*rrBt:rr at WMJcG'9rrAJerrBn8rr at WMrr@WMJcD):r;_cUJ,~>
+[K$7,U&Y&kJcE@^r;_EKPQ1X_JcFX-nbrLes0D1oWVtNL\,XkTJcDGDrrD$Xr;_EKKE(rOU&Y,m
+JcCH(rrB%ur;a8*rrBt:rr at WMJcG'9rrAJerrBn8rr at WMrr@WMJcD):r;_cUJ,~>
+[K$7,U&Y&kJcE@^r;_EKPQ1X_JcFX-s)e9Ss*Xicqe6"@s+C>1nTak<nSJ)&ojRl:oi;#prGV at 3
+s)7R8s)%XBqfqdNo4#3/okjMLqh+d+s*4-fJcDGDrrD$Xr;_EKKE(rOTjRg"JcCH(rrB%ur;a8*
+rrBt:rr at WMJcG'9rrAJerrBn8rr at WMrr@WMJcD):r;_cUJ,~>
+[K$7,U&Y&kJcE@^r;_EKPQ1X_JcFX-nJ;-trrDR^W>=/[\,XiKJcDGDrrD$Xr;_EKKE%JBJcCH(
+rrB%ur;a8*rrBt:rr at WMJcG'9rrAJerrBn8rr at WMrr@WMJcD):r;_cUJ,~>
+[K$7,ScAWg\,ZI.JcC<$RK*9eJcFd1rrE*!oDSXes0DCus0A3ol2L^gs8K5%jo54ap&9OBTE"ok
+huEWTJcCN*rrAbmrr at WML&_/QV>pJo\c;[0JcC<$X8i2"S,`Kg^]4<6JcG`MJcC<$qu?ZrTE"]e
+O8j_~>
+[K$7,ScAWg\,ZI.JcC<$RK*9eJcFd1rrE*!s)%dcs)A!^rFl4Bs+C??s%`<Ks"*nQm;2f&o3qT6
+pJq*/oi_<5o3D5ks(D4RokjS8rtbWDYQ+E8q0;^frJphDon.hqTE"okhuEWTJcCN*rrAa"rr at WM
+L&_/QV>pJo\c;[0JcC<$X8i2"S,`Kg^]4<6JcG`MJcC<$qu?ZrTE"]eO8j_~>
+[K$7,ScAWg\,ZI.JcC<$RK*9eJcFd1rrE*!o+q9trrDddrrAT*ktD$Vs%BQqj\,OPoh0l9TE"ok
+huEWTJcCN*SH+6 at L&_/QV>pJo\c;[0JcC<$X8i2"S,`Kg^]4<6JcG`MJcC<$qu?ZrTE"]eO8j_~>
+[K$7,ScAWg\,ZI.JcC<$RK*9eJcFd1rrE*!oDSXes0DCus0A3ol2L^gs8K5%jo54ap&9OBTE"ok
+huEWTJcCN*rrAbmrr at WML&_/QV>pJo\c;[0JcC<$X8i2"S,`Kg^]4<6JcG`MJcC<$qu?ZrTE"]e
+O8j_~>
+[K$7,ScAWg\,ZI.JcC<$RK*9eJcFd1rrE*!s)%dcs)A!^rFl4Bs+C??s%`<Ks"*nQm;2f&o3qT6
+pJq*/oi_<5o3D5ks(D4RokjS8rtbWDYQ+E8q0;^frJphDon.hqTE"okhuEWTJcCN*rrAa"rr at WM
+L&_/QV>pJo\c;[0JcC<$X8i2"S,`Kg^]4<6JcG`MJcC<$qu?ZrTE"]eO8j_~>
+[K$7,ScAWg\,ZI.JcC<$RK*9eJcFd1rrE*!o+q9trrDddrrAT*ktD$Vs%BQqj\,OPoh0l9TE"ok
+huEWTJcCN*SH+6 at L&_/QV>pJo\c;[0JcC<$X8i2"S,`Kg^]4<6JcG`MJcC<$qu?ZrTE"]eO8j_~>
+[K$7,RK*3c]Dqm2S,`EeJcC<$JcFj3rrE*!oDSRcs0DJ"rVccZRJlURs0AR&g&?R&n,NCfNW8qW
+JcCZ.rrAbmrr at WML&_/QU&Y&kNW8qWJcC<$JcE"TrrCaPrr at WMTE"iiM?!SUQiI!aPQ-.~>
+[K$7,RK*3c]Dqm2S,`EeJcC<$JcFj3rrE*!s)e9js*Xijs)e9Ss*sp7s$QUBs*F]hs'YY2lYQ6&
+qeZ(.q/?"1s)7jVo3D<.q.fqSokjY:rt_O4rGDFVq1J@#pOe%sn,NCfNW8qWJcCZ.rrAa"rr at WM
+L&_/QU&Y&kNW8qWJcC<$JcE"TrrCaPrr at WMTE"iiM?!SUQiI!aPQ-.~>
+[K$7,RK*3c]Dqm2S,`EeJcC<$JcFj3rrE*!o+q3rrrDjfr>,D5R256arrAtsfh6nrn,NCfNW8qW
+JcCZ.SH+6 at L&_/QU&Y&kNW8qWJcC<$JcE"TrrCaPrr at WMTE"iiM?!SUQiI!aPQ-.~>
+[K$7,RK*3c]Dqm2S,`EeJcC<$JcFj3rrE*!oDSRcs0DJ"rVccZRJlURs0AR&g&?R&n,NCfNW8qW
+JcCZ.rrAbmrr at WML&_/QU&Y&kNW8qWJcC<$JcE"TrrCaPrr at WMTE"iiM?!SUQiI!aPQ-.~>
+[K$7,RK*3c]Dqm2S,`EeJcC<$JcFj3rrE*!s)e9js*Xijs)e9Ss*sp7s$QUBs*F]hs'YY2lYQ6&
+qeZ(.q/?"1s)7jVo3D<.q.fqSokjY:rt_O4rGDFVq1J@#pOe%sn,NCfNW8qWJcCZ.rrAa"rr at WM
+L&_/QU&Y&kNW8qWJcC<$JcE"TrrCaPrr at WMTE"iiM?!SUQiI!aPQ-.~>
+[K$7,RK*3c]Dqm2S,`EeJcC<$JcFj3rrE*!o+q3rrrDjfr>,D5R256arrAtsfh6nrn,NCfNW8qW
+JcCZ.SH+6 at L&_/QU&Y&kNW8qWJcC<$JcE"TrrCaPrr at WMTE"iiM?!SUQiI!aPQ-.~>
+[K$7,Q2gd_JcC<$JcC<$ZiB^sq>UE"qu2HNp\pldh>W!*n,NCfM?!MSJcCf2rrAbmrrDBbr;_EK
+U&Y&kScAWgJcC<$JcCl4r;a,&rrC[Nrr at WMJcC<$[K$7,Q2c@~>
+[K$7,Q2gd_JcC<$JcC<$ZiC&_s*suks(MF^q3q=Nqi:W$q02dGm;2fHojRZ4qc3B/qcWl9rGqL7
+s(D(@qd95;rF2K#q0;^fo8`^#JcG3=rr at oUr;_EKO8o4[TjRg"li6n`JcDGDr;`Dgr;_EKJcC<$
+OoP@[Z2ah(fDkjNJcC<$JcE.XrrA>aJ,~>
+[K$7,Q2gd_JcC<$JcC<$ZiB\6q+L_fqb)b]pIh4[h+N>!n,NCfM?!MSJcCf2SH/!Ur;_EKU&Y&k
+ScAWgJcC<$JcCl4r;a,&rrC[Nrr at WMJcC<$[K$7,Q2c@~>
+[K$7,Q2gd_JcC<$JcC<$ZiB^sq>UE"qu2HNp\pldh>W!*n,NCfM?!MSJcCf2rrAbmrrDBbr;_EK
+U&Y&kScAWgJcC<$JcCl4r;a,&rrC[Nrr at WMJcC<$[K$7,Q2c@~>
+[K$7,Q2gd_JcC<$JcC<$ZiC&_s*suks(MF^q3q=Nqi:W$q02dGm;2fHojRZ4qc3B/qcWl9rGqL7
+s(D(@qd95;rF2K#q0;^fo8`^#JcG3=rr at oUr;_EKO8o4[TjRg"li6n`JcDGDr;`Dgr;_EKJcC<$
+OoP@[Z2ah(fDkjNJcC<$JcE.XrrA>aJ,~>
+[K$7,Q2gd_JcC<$JcC<$ZiB\6q+L_fqb)b]pIh4[h+N>!n,NCfM?!MSJcCf2SH/!Ur;_EKU&Y&k
+ScAWgJcC<$JcCl4r;a,&rrC[Nrr at WMJcC<$[K$7,Q2c@~>
+[K$7,OoP@[JcC<$JcC<$bQ%M at oDeL^p\t2us8ITJs8DusS,_CFJcC<$oDeahJcCr6rrAbmrrDBb
+r;_EKU&Y&kRK*9eJcD):rr at WMJcDkPr;_EKJcG]Krr at WMNW8qWRK%d~>
+[K$7,OoP@[JcC<$JcC<$bQ%M at oDei4s*t&rrHJ9kq3q>Ds$QgHq0MdZlYQNDq-j#6rDil6pM]q3
+s)7^RpK[`=okO;0rF>l`S,`G3q1J:!s-ih;JcC<$oDeahJcCr6rrAa"rrDBbr;_EKU&Y&kRK*9e
+JcD):rr at WMJcDkPr;_EKJcG]Krr at WMNW8qWRK%d~>
+[K$7,OoP@[JcC<$JcC<$bQ%M at oDeJ!pIkMds%@nYrtbW-S,_A=JcC<$oDeahJcCr6SH/!Ur;_EK
+U&Y&kRK*9eJcD):rr at WMJcDkPr;_EKJcG]Krr at WMNW8qWRK%d~>
+[K$7,OoP@[JcC<$JcC<$bQ%M at oDeL^p\t2us8ITJs8DusS,_CFJcC<$oDeahJcCr6rrAbmrrDBb
+r;_EKU&Y&kRK*9eJcD):rr at WMJcDkPr;_EKJcG]Krr at WMNW8qWRK%d~>
+[K$7,OoP@[JcC<$JcC<$bQ%M at oDei4s*t&rrHJ9kq3q>Ds$QgHq0MdZlYQNDq-j#6rDil6pM]q3
+s)7^RpK[`=okO;0rF>l`S,`G3q1J:!s-ih;JcC<$oDeahJcCr6rrAa"rrDBbr;_EKU&Y&kRK*9e
+JcD):rr at WMJcDkPr;_EKJcG]Krr at WMNW8qWRK%d~>
+[K$7,OoP@[JcC<$JcC<$bQ%M at oDeJ!pIkMds%@nYrtbW-S,_A=JcC<$oDeahJcCr6SH/!Ur;_EK
+U&Y&kRK*9eJcD):rr at WMJcDkPr;_EKJcG]Krr at WMNW8qWRK%d~>
+[K$7,NW8qWJcG3=r;`bqrr at WMJcDqRp\jdas0Chds6#mMq>Ql`kPkFcJcD#8r;baTr;_EKQiI'c
+U&Y,mmJm%`JcDABrrADcr;`bqr;_EKq>^HpJcC<$XoJ>"JcC<$rVultJcCZ.qZ*2eJ,~>
+[K$7,NW8qWJcG3=r;`bqrr at WMJcDqRs,-i+s*+L&s*sd3s,R+Hq0M^Xs+:2cs&J`.qgJ9QrGqjZ
+rG;L6o5FY3rGVLPq-<l=s)n!Lqd9A5q;%P?s*4EnnW*X<s%`SQJcD#8r;baTr;_EKQiI'cTjRg"
+mJm%`JcDABrrADcr;`bqr;_EKq>^HpJcC<$XoJ>"JcC<$rVultJcCZ.qZ*2eJ,~>
+[K$7,NW8qWJcG3=r;`bqrr at WMJcDqRpD3EprrD3trrAN(q+I4Wk=baRJcD#8r;baTr;_EKQiETV
+mJm%`JcDABrrADcr;`bqr;_EKq>^HpJcC<$XoJ>"JcC<$rVultJcCZ.qZ*2eJ,~>
+[K$7,NW8qWJcG3=r;`bqrr at WMJcDqRp\jdas0Chds6#mMq>Ql`kPkFcJcD#8r;baTr;_EKQiI'c
+U&Y,mmJm%`JcDABrrADcr;`bqr;_EKq>^HpJcC<$XoJ>"JcC<$rVultJcCZ.qZ*2eJ,~>
+[K$7,NW8qWJcG3=r;`bqrr at WMJcDqRs,-i+s*+L&s*sd3s,R+Hq0M^Xs+:2cs&J`.qgJ9QrGqjZ
+rG;L6o5FY3rGVLPq-<l=s)n!Lqd9A5q;%P?s*4EnnW*X<s%`SQJcD#8r;baTr;_EKQiI'cTjRg"
+mJm%`JcDABrrADcr;`bqr;_EKq>^HpJcC<$XoJ>"JcC<$rVultJcCZ.qZ*2eJ,~>
+[K$7,NW8qWJcG3=r;`bqrr at WMJcDqRpD3EprrD3trrAN(q+I4Wk=baRJcD#8r;baTr;_EKQiETV
+mJm%`JcDABrrADcr;`bqr;_EKq>^HpJcC<$XoJ>"JcC<$rVultJcCZ.qZ*2eJ,~>
+[K$7,M?!MSJcD#8rr at WMJcF'rrrD0\p\jdas8Du\jo,5BTDeN`QiH7Jqu?ZrJcC<$oDeahJcD5>
+rrAbmrrDNfq#H!GTE"okPQ1R]JcC<$JcDeNr;`Pkrr at WMJcFj3rr@WMU&Y,ms8W#tU&TW~>
+[K$7,M?!MSJcD#8rr at WMJcF'rrrD0\s,-i+s+UE2pR;,Bs*F]Uq0MdZqh"c_s'5;=q0i3Sqf;(H
+q/?"Jqcs)?rH7dJrEoS7pYD29qh+L#qjRE^rr at WMJcG?Ar;_EKS,`KgTjRg"n,N1`JcDABrrA8_
+r;_EKJcC<$X8i+uU&Y,mJcC<$jo>>\JcDGDrrE*!r;`PkJ,~>
+[K$7,M?!MSJcD#8rr at WMJcF'rrrD0\pD3EprtbV7jVIjrT,./oQiH5Aqu?ZrJcC<$oDeahJcD5>
+SH/-Yq#H!GTE"okPQ1R]JcC<$JcDeNr;`Pkrr at WMJcFj3rr@WMU&Y,ms8W#tU&TW~>
+[K$7,M?!MSJcD#8rr at WMJcF'rrrD0\p\jdas8Du\jo,5BTDeN`QiH7Jqu?ZrJcC<$oDeahJcD5>
+rrAbmrrDNfq#H!GTE"okPQ1R]JcC<$JcDeNr;`Pkrr at WMJcFj3rr@WMU&Y,ms8W#tU&TW~>
+[K$7,M?!MSJcD#8rr at WMJcF'rrrD0\s,-i+s+UE2pR;,Bs*F]Uq0MdZqh"c_s'5;=q0i3Sqf;(H
+q/?"Jqcs)?rH7dJrEoS7pYD29qh+L#qjRE^rr at WMJcG?Ar;_EKS,`KgTjRg"n,N1`JcDABrrA8_
+r;_EKJcC<$X8i+uU&Y,mJcC<$jo>>\JcDGDrrE*!r;`PkJ,~>
+[K$7,M?!MSJcD#8rr at WMJcF'rrrD0\pD3EprtbV7jVIjrT,./oQiH5Aqu?ZrJcC<$oDeahJcD5>
+SH/-Yq#H!GTE"okPQ1R]JcC<$JcDeNr;`Pkrr at WMJcFj3rr@WMU&Y,ms8W#tU&TW~>
+[K$7,L&_)OL]@;QJcC<$JcFj3rrD*Zq>L!crVccZKDkQDg&LI=c2[&-rVultJcC<$n,N=dJcDAB
+rrAbmrrDNfrrE*!r;_EKTE"okO8o.Y^&S*4JcC<$JcCl4rrC1 at r;_EKTE"okJcD5>r;`\oJ,~>
+[K$7,L&_)OL]@;QJcC<$JcFj3rrD*Zs,m>2rJgK=rHeKSq0MdZs+:-)olB_Rs(D4Lq/u^gmreYU
+pN$4;rGqjZokOG4pYFO&mt:Y#c2[fro8`X8rVultJcC<$n,N=dJcDABrrAa2rrDNfrrE*!r;_EK
+TE"okO8o.Y^&S*4JcC<$JcCl4rrC1 at r;_EKTE"okJcD5>r;`\oJ,~>
+[K$7,L&_)OL]@;QJcC<$JcFj3rrD*Zq%iWrr>,D5K,42Sg&LG4c2[$$rVultJcC<$n,N=dJcDAB
+SH/-YrrE*!r;_EKTE"okO8o.Y^&S*4JcC<$JcCl4rrC1 at r;_EKTE"okJcD5>r;`\oJ,~>
+[K$7,L&_)OL]@;QJcC<$JcFj3rrD*Zq>L!crVccZKDkQDg&LI=c2[&-rVultJcC<$n,N=dJcDAB
+rrAbmrrDNfrrE*!r;_EKTE"okO8o.Y^&S*4JcC<$JcCl4rrC1 at r;_EKTE"okJcD5>r;`\oJ,~>
+[K$7,L&_)OL]@;QJcC<$JcFj3rrD*Zs,m>2rJgK=rHeKSq0MdZs+:-)olB_Rs(D4Lq/u^gmreYU
+pN$4;rGqjZokOG4pYFO&mt:Y#c2[fro8`X8rVultJcC<$n,N=dJcDABrrAa2rrDNfrrE*!r;_EK
+TE"okO8o.Y^&S*4JcC<$JcCl4rrC1 at r;_EKTE"okJcD5>r;`\oJ,~>
+[K$7,L&_)OL]@;QJcC<$JcFj3rrD*Zq%iWrr>,D5K,42Sg&LG4c2[$$rVultJcC<$n,N=dJcDAB
+SH/-YrrE*!r;_EKTE"okO8o.Y^&S*4JcC<$JcCl4rrC1 at r;_EKTE"okJcD5>r;`\oJ,~>
+[K$7,JcGZKJcC<$JcG!7rr at WMkPt;Tp\t'gs6#+7p&<qMg]#\%mJ_\:JcFp5r;_EKU&Y,mU&Y,m
+nc/Ofs8W#tJcDABrr at uWr;b=HrrDZjrr at WMJcE@^rrC7Br;_u[rrBn8pTjUje,TFJJcC<$JcGQG
+r;`hsJ,~>
+[K$7,JcGZKJcC<$JcG!7rr at WMkPtREs*t'=rJgQ?s+UDts()"Qq02jeoniE`omQ^Xq/uXeol^4a
+s)n![s'5MCqfVLFs3^SsiW&(noo at N$o8`^:JcC<$kPtJ\JcDGDrrAa2rrDThr;cltr;_EKTE"ok
+MuW_Ue,TFJoDegjJcC<$]Dqm2bQ%M at OoPF]_>is>e,TFJJcC<$JcGQGr;`hsJ,~>
+[K$7,JcGZKJcC<$JcG!7rr at WMkPt8lpIkB!rr@`goh49DgIp#qm7W$1JcFp5r;_EKU&UY`nc/Of
+s8W#tJcDABrr at uWr;b=HrrDZjrr at WMJcE@^rrC7Br;_u[rrBn8mhXCPrr at WMJcC<$q>^BnWW.J~>
+[K$7,JcGZKJcC<$JcG!7rr at WMkPt;Tp\t'gs6#+7p&<qMg]#\%mJ_\:JcFp5r;_EKU&Y,mU&Y,m
+nc/Ofs8W#tJcDABrr at uWr;b=HrrDZjrr at WMJcE@^rrC7Br;_u[rrBn8pTjUje,TFJJcC<$JcGQG
+r;`hsJ,~>
+[K$7,JcGZKJcC<$JcG!7rr at WMkPtREs*t'=rJgQ?s+UDts()"Qq02jeoniE`omQ^Xq/uXeol^4a
+s)n![s'5MCqfVLFs3^SsiW&(noo at N$o8`^:JcC<$kPtJ\JcDGDrrAa2rrDThr;cltr;_EKTE"ok
+MuW_Ue,TFJoDegjJcC<$]Dqm2bQ%M at OoPF]_>is>e,TFJJcC<$JcGQGr;`hsJ,~>
+[K$7,JcGZKJcC<$JcG!7rr at WMkPt8lpIkB!rr@`goh49DgIp#qm7W$1JcFp5r;_EKU&UY`nc/Of
+s8W#tJcDABrr at uWr;b=HrrDZjrr at WMJcE@^rrC7Br;_u[rrBn8mhXCPrr at WMJcC<$q>^BnWW.J~>
+[K$7,JcG]Kr;bILrr at WMJcD/<rrA>ar;bONp\jjcq>L?VfDYa4Zi0Rrs8W*!l2T$-g&LI=q>^Hp
+JcCr6r;c0`qZ-Zrrr at WMU]9ue[K#guoDeahrVufrJcDABrr at iSr;bILrr at WMJcDeNrr@WMfDkjN
+_uKJ:rNH$mec5XLJcC<$qu?ZrJcGcMr;`nuJ,~>
+[K$7,JcG]Kr;bILrr at WMJcD/<rrA>ar;bONs,I&@s+UE2s/#O[s,$W!s()"QrHJ3ks*aKqq/ZF^
+s(D4Ws,$\pq/uXeol^4am<SYXrH7jLs3^Sss8W*!l2UX at jb*#^g&L`*q3q-Zrr at WMPQ1R]li6h^
+s8W*!JcDMFo`2C<o)SC^r;cfrr;_EKTE"okL]@;QfDkjNJcC<$X8i2"JcF@%rrBt:lPA%Nrr at WM
+JcGWIrr at WMs8W#tX8d\~>
+[K$7,JcG]Kr;bILrr at WMJcD/<rrA>ar;bONpD3Krq%iu1f,"AdZPN4,s8W*!l2T"$g&LG4q>^Hp
+JcCr6r;c0`qZ-Zrrr at WMU]6e`oDeahrVufrJcDABrr at iSr;bILrr at WMJcDeNrr@WMfDkjN_uK$<
+ec5XLJcC<$qu?ZrJcGcMr;`nuJ,~>
+[K$7,JcG]Kr;bILrr at WMJcD/<rrA>ar;bONp\jjcq>L?VfDYa4Zi0Rrs8W*!l2T$-g&LI=q>^Hp
+JcCr6r;c0`qZ-Zrrr at WMU]9ue[K#guoDeahrVufrJcDABrr at iSr;bILrr at WMJcDeNrr@WMfDkjN
+_uKJ:rNH$mec5XLJcC<$qu?ZrJcGcMr;`nuJ,~>
+[K$7,JcG]Kr;bILrr at WMJcD/<rrA>ar;bONs,I&@s+UE2s/#O[s,$W!s()"QrHJ3ks*aKqq/ZF^
+s(D4Ws,$\pq/uXeol^4am<SYXrH7jLs3^Sss8W*!l2UX at jb*#^g&L`*q3q-Zrr at WMPQ1R]li6h^
+s8W*!JcDMFo`2C<o)SC^r;cfrr;_EKTE"okL]@;QfDkjNJcC<$X8i2"JcF@%rrBt:lPA%Nrr at WM
+JcGWIrr at WMs8W#tX8d\~>
+[K$7,JcG]Kr;bILrr at WMJcD/<rrA>ar;bONpD3Krq%iu1f,"AdZPN4,s8W*!l2T"$g&LG4q>^Hp
+JcCr6r;c0`qZ-Zrrr at WMU]6e`oDeahrVufrJcDABrr at iSr;bILrr at WMJcDeNrr@WMfDkjN_uK$<
+ec5XLJcC<$qu?ZrJcGcMr;`nuJ,~>
+[K$7,JcGQGrrCaPrrC7Br;_EKJcC<$\c;L(p\spcs6%r2s6$lioD\dirrDHd_uAEjnc&:_rr at WM
+rr at cQq#L6jrr at WMU&Y,mU&Y,moDegjqu?TpJcDABrr@]OrrCaPr;_EKJcC<$JcG`Ma8c1IpTjUu
+q4rTAJcF'rrr at cQqZ-ZrrrB,"J,~>
+[K$7,JcGQGrrCaPrrC7Br;_EKJcC<$\c;\ls+UKCs,I&Tq3q8=qg/9QrHeKfqgn]onVR3bq0i9U
+s*aj&s)RpXq18?aqgnd#pNc^jrH\3dqf2XNrR(Aqs8W*!mJlp at jb)fXg].)0q3q'Xrr at WMrr@cQ
+q#L6jrr at WMU&Y,mTl9r2oDegjqu?TpJcDABrr@]OrrCaPr;_EKJcC<$JcG`Ma8b6:JcC<$ci="F
+L&_#Ms8W*!X8d\~>
+[K$7,JcGQGrrCaPrrC7Br;_EKJcC<$\c;I at pIk5rrrCRbrrBMDo1T,`rrDHd_b8banOrWVrr at WM
+rr at cQq#L6jrr at WMU&UY`oDegjqu?TpJcDABrr@]OrrCaPr;_EKJcC<$JcG`Ma8b6:JcC<$ci="F
+L&_#Ms8W*!X8d\~>
+[K$7,JcGQGrrCaPrrC7Br;_EKJcC<$\c;L(p\spcs6%r2s6$lioD\dirrDHd_uAEjnc&:_rr at WM
+rr at cQq#L6jrr at WMU&Y,mU&Y,moDegjqu?TpJcDABrr@]OrrCaPr;_EKJcC<$JcG`Ma8c1IpTjUu
+q4rTAJcF'rrr at cQqZ-ZrrrB,"J,~>
+[K$7,JcGQGrrCaPrrC7Br;_EKJcC<$\c;\ls+UKCs,I&Tq3q8=qg/9QrHeKfqgn]onVR3bq0i9U
+s*aj&s)RpXq18?aqgnd#pNc^jrH\3dqf2XNrR(Aqs8W*!mJlp at jb)fXg].)0q3q'Xrr at WMrr@cQ
+q#L6jrr at WMU&Y,mTl9r2oDegjqu?TpJcDABrr@]OrrCaPr;_EKJcC<$JcG`Ma8b6:JcC<$ci="F
+L&_#Ms8W*!X8d\~>
+[K$7,JcGQGrrCaPrrC7Br;_EKJcC<$\c;I at pIk5rrrCRbrrBMDo1T,`rrDHd_b8banOrWVrr at WM
+rr at cQq#L6jrr at WMU&UY`oDegjqu?TpJcDABrr@]OrrCaPr;_EKJcC<$JcG`Ma8b6:JcC<$ci="F
+L&_#Ms8W*!X8d\~>
+[K$7,JcGKEr;_EKJcC<$Q2gd_bQ%D:p\sjas6#==oD\(U\c1Fbp&9OBp&G$lMuWYSnc/UhJcDGD
+rrAbmrrD`lrrDlpr;_EKU&Y&kJcGZKJcC<$JcFR+r;_EKrrC1 at q8*$;rNH6gq60[kJcDkPr;_EK
+Z2a\$q>^HpX8d\~>
+[K$7,JcGKEr;_EKJcC<$Q2gd_bQ%U<s,m>Os-Wb]qjRJ?q0N'Os*FEjs*a?mrGqRZqhb,kq18?a
+rIOp#pNc^js*=?dqf2SurU]pBli6R:jb)`VrL2RBqi:QBJcGECrr at uWqZ-0drr@WMU&Y,mTl9r2
+p&G$lq>^BnJcDGDr;_EKr;_EKJcC<$h>dERJcG`MaoClHrrDX+JcDkPr;_EKZ2a\$q>^HpX8d\~>
+[K$7,JcGKEr;_EKJcC<$Q2gd_bQ%ARpIk/prr at rmo1SEL\P(cYoh0l9p&G$lMuWYSnc/UhJcDGD
+SH/?_rrDlpr;_EKU&Y&kJcGZKJcC<$JcFR+r;_EKrrC1 at nJ;-)o+loWXoJ>"JcE"TqZ-HlrrB,"
+J,~>
+[K$7,JcGKEr;_EKJcC<$Q2gd_bQ%D:p\sjas6#==oD\(U\c1Fbp&9OBp&G$lMuWYSnc/UhJcDGD
+rrAbmrrD`lrrDlpr;_EKU&Y&kJcGZKJcC<$JcFR+r;_EKrrC1 at q8*$;rNH6gq60[kJcDkPr;_EK
+Z2a\$q>^HpX8d\~>
+[K$7,JcGKEr;_EKJcC<$Q2gd_bQ%U<s,m>Os-Wb]qjRJ?q0N'Os*FEjs*a?mrGqRZqhb,kq18?a
+rIOp#pNc^js*=?dqf2SurU]pBli6R:jb)`VrL2RBqi:QBJcGECrr at uWqZ-0drr@WMU&Y,mTl9r2
+p&G$lq>^BnJcDGDr;_EKr;_EKJcC<$h>dERJcG`MaoClHrrDX+JcDkPr;_EKZ2a\$q>^HpX8d\~>
+[K$7,JcGKEr;_EKJcC<$Q2gd_bQ%ARpIk/prr at rmo1SEL\P(cYoh0l9p&G$lMuWYSnc/UhJcDGD
+SH/?_rrDlpr;_EKU&Y&kJcGZKJcC<$JcFR+r;_EKrrC1 at nJ;-)o+loWXoJ>"JcE"TqZ-HlrrB,"
+J,~>
+[K$7,JcG?Ar;aD.r;_EKJcC<$X8i(qp\sd_s6#C?nc&"WZ2WSZp\oaDL&_#Mli6tbJcDGDrrAbm
+rrDfnr;cZnr;_EKU&Y&kJcG]Kr;c<drr at WMaoDA@JcC<$XoJ>"bQ%7OrNcC*s-WJ_s.k5GfDkjN
+JcC`0qZ-6frrB,"J,~>
+[K$7,JcG?Ar;aD.r;_EKJcC<$X8i3^rLEh_qjRPArL`tWs,m>-s-NP4rI+'iomQXmqfVR_rH8!g
+rIjulqh4upomHdZqrmeGn,Mj:jb)`Vq3p.>s,QoDJcCH(qZ,s^rr at WMU&Y,mTl9r2p](0lq>^Bn
+JcDGDr;_EKrVufrn,NCfJcEjlrr at WMJcDkPr;b%@m2#^%o+loWfDkjNJcC`0qZ-6frrB,"J,~>
+[K$7,JcG?Ar;aD.r;_EKJcC<$X8i&4pIk)nrrA#onOr?NYtNpQpIg);L&_#Mli6tbJcDGDSH/Ea
+r;cZnr;_EKU&Y&kJcG]Kr;c<drr at WMaoDA@JcC<$XoJ>"bQ$rFrrDX+JcF@%rr at WMNW8kUoDegj
+X8d\~>
+[K$7,JcG?Ar;aD.r;_EKJcC<$X8i(qp\sd_s6#C?nc&"WZ2WSZp\oaDL&_#Mli6tbJcDGDrrAbm
+rrDfnr;cZnr;_EKU&Y&kJcG]Kr;c<drr at WMaoDA@JcC<$XoJ>"bQ%7OrNcC*s-WJ_s.k5GfDkjN
+JcC`0qZ-6frrB,"J,~>
+[K$7,JcG?Ar;aD.r;_EKJcC<$X8i3^rLEh_qjRPArL`tWs,m>-s-NP4rI+'iomQXmqfVR_rH8!g
+rIjulqh4upomHdZqrmeGn,Mj:jb)`Vq3p.>s,QoDJcCH(qZ,s^rr at WMU&Y,mTl9r2p](0lq>^Bn
+JcDGDr;_EKrVufrn,NCfJcEjlrr at WMJcDkPr;b%@m2#^%o+loWfDkjNJcC`0qZ-6frrB,"J,~>
+[K$7,JcG?Ar;aD.r;_EKJcC<$X8i&4pIk)nrrA#onOr?NYtNpQpIg);L&_#Mli6tbJcDGDSH/Ea
+r;cZnr;_EKU&Y&kJcG]Kr;c<drr at WMaoDA@JcC<$XoJ>"bQ$rFrrDX+JcF@%rr at WMNW8kUoDegj
+X8d\~>
+[K$7,JcG3=r;_EKYQ+V&JcC<$\c;L(q>Tp_s6#C?oD\:[WW(`Rqu5p]rr at WMU]:2kp](0loDegj
+JcDGDrrAbmrrDfnm/V_;U]:>oJcGQGr;cNjrr at WMa8c/>JcEF`rr at WMoDeahc2[COs1SB:n#ube
+JcFF'rr at WMQ2gX[nc/Uhs8W*!X8d\~>
+[K$7,JcG3=r;_EKYQ+V&JcC<$\c;]*s,m8MrMBI]s.]C_qjd\Qs+1-8s.]ICs*a3is-38+qhb91
+rH7das)n3iq1SWjqh5!*omHdZrTO"Inc/QVm>g:\l&PG*h>dA at li6tbJcDMFqZ-Bjr;cHhrr at WM
+U&Y,mTl9r2p]'U\JcDMFrr at WMq>^Bnp&G$lJcEdjrr at WM^&S*4JcG?Ar;b+BfbT/=g&M'PJcD#8
+q#KsbrrE*!rrB,"J,~>
+[K$7,JcG3=r;_EKYQ+V&JcC<$\c;I at q+L5nrrA#oo1SWRWCu(Iqb-8Trr at WMU]:2kp](0loDegj
+JcDGDSH/Eam/V_;U]:>oJcGQGr;cNjrr at WMa8c/>JcEF`rr at WMoDeahc2ZH4JcFF'rr at WMQ2gX[
+nc/Uhs8W*!X8d\~>
+[K$7,JcG3=r;_EKYQ+V&JcC<$\c;L(q>Tp_s6#C?oD\:[WW(`Rqu5p]rr at WMU]:2kp](0loDegj
+JcDGDrrAbmrrDfnm/V_;U]:>oJcGQGr;cNjrr at WMa8c/>JcEF`rr at WMoDeahc2[COs1SB:n#ube
+JcFF'rr at WMQ2gX[nc/Uhs8W*!X8d\~>
+[K$7,JcG3=r;_EKYQ+V&JcC<$\c;]*s,m8MrMBI]s.]C_qjd\Qs+1-8s.]ICs*a3is-38+qhb91
+rH7das)n3iq1SWjqh5!*omHdZrTO"Inc/QVm>g:\l&PG*h>dA at li6tbJcDMFqZ-Bjr;cHhrr at WM
+U&Y,mTl9r2p]'U\JcDMFrr at WMq>^Bnp&G$lJcEdjrr at WM^&S*4JcG?Ar;b+BfbT/=g&M'PJcD#8
+q#KsbrrE*!rrB,"J,~>
+[K$7,JcG3=r;_EKYQ+V&JcC<$\c;I at q+L5nrrA#oo1SWRWCu(Iqb-8Trr at WMU]:2kp](0loDegj
+JcDGDSH/Eam/V_;U]:>oJcGQGr;cNjrr at WMa8c/>JcEF`rr at WMoDeahc2ZH4JcFF'rr at WMQ2gX[
+nc/Uhs8W*!X8d\~>
+[K$7,JcG'9r;b1Drr at WMkPtP^JcC<$r;aP2qu-?in,<:La8Pu"c2I23oDbN`huE`UrrDBbrr at WM
+XoJ1siW&iVJcDGDrrAbmrrDfnm/V_;U]:>oJcGECr;_EKJcC<$q>^HpJcG3=rrCCFo>1=;rNbss
+rM5#EJcC<$oDe[fl2Ub`s8W*!X8d\~>
+[K$7,JcG'9r;b1Drr at WMkPtP^JcC<$r;aP2s,m>Zs.'%as-itls.]C_qjd\\s-Nb:rKmDUs*a9k
+s-3PQqh5!*oooE'rGhjnnU^LhrH\3ls+p>qqrmeGoDe]Vm>g:\kDo)$huE_FrrDBbrr at WMXoJ1s
+iW&iVJcDGDrrAa2rrDfnm/V_;U]:>oJcGECr;_EKJcC<$q>^HpJcG3=rrCCFeJ<`9JcC<$oDe[f
+l2Ub`s8W*!X8d\~>
+[K$7,JcG'9r;b1Drr at WMkPtP^JcC<$r;aP2q\K!#mhYp'`tnURbnfhBoDbLWhuE^LrrDBbrr at WM
+XoJ1siW&iVJcDGDSH/Eam/V_;U]:>oJcGECr;_EKJcC<$q>^HpJcG3=rrCCFeJ<`9JcC<$oDe[f
+l2Ub`s8W*!X8d\~>
+[K$7,JcG'9r;b1Drr at WMkPtP^JcC<$r;aP2qu-?in,<:La8Pu"c2I23oDbN`huE`UrrDBbrr at WM
+XoJ1siW&iVJcDGDrrAbmrrDfnm/V_;U]:>oJcGECr;_EKJcC<$q>^HpJcG3=rrCCFo>1=;rNbss
+rM5#EJcC<$oDe[fl2Ub`s8W*!X8d\~>
+[K$7,JcG'9r;b1Drr at WMkPtP^JcC<$r;aP2s,m>Zs.'%as-itls.]C_qjd\\s-Nb:rKmDUs*a9k
+s-3PQqh5!*oooE'rGhjnnU^LhrH\3ls+p>qqrmeGoDe]Vm>g:\kDo)$huE_FrrDBbrr at WMXoJ1s
+iW&iVJcDGDrrAa2rrDfnm/V_;U]:>oJcGECr;_EKJcC<$q>^HpJcG3=rrCCFeJ<`9JcC<$oDe[f
+l2Ub`s8W*!X8d\~>
+[K$7,JcG'9r;b1Drr at WMkPtP^JcC<$r;aP2q\K!#mhYp'`tnURbnfhBoDbLWhuE^LrrDBbrr at WM
+XoJ1siW&iVJcDGDSH/Eam/V_;U]:>oJcGECr;_EKJcC<$q>^HpJcG3=rrCCFeJ<`9JcC<$oDe[f
+l2Ub`s8W*!X8d\~>
+[K$7,JcFp5r;bCJrr at WMJcC<$ScATcq>Td[s6#OCnc&.[S,VCHrr at WMS,`?cg&M!NJcDGDrrAbm
+rrDBbr;_EKTE"okJcGQGr;cfrrr at WMJcC<$JcFp5rrCIHs2X`Iqn<$NrNc+"s-WhirM5#EV>pJo
+JcFL)qZ,ORrrB,"J,~>
+[K$7,JcFp5r;bCJrr at WMJcC<$ScAYgs.'+nrMBOurM'1]s.'%brKmP8s-NVWrL`h at pQ,3 at rIk3,
+o98d%s.9+Dq1Scnq1S^&pO)l%p[e"Vq3p]2jb)`VnXBEQiW&oXJcD5>qZ,=Lr;_EKU&Y,mTn!(B
+li6n`JcDABrr at WMq>^BnrVultJcC<$JcC<$kPtP^dJql8rrDp3JcDSHr;_EKg].-NhuE]VX8d\~>
+[K$7,JcFp5r;bCJrr at WMJcC<$ScAR&q+L)jrrA/snOrKRRnM`?rr at WMS,`?cg&M!NJcDGDSH/!U
+r;_EKTE"okJcGQGr;cfrrr at WMJcC<$JcFp5rrCIHfbXSfq\Fb_V>pJoJcFL)qZ,ORrrB,"J,~>
+[K$7,JcFp5r;bCJrr at WMJcC<$ScATcq>Td[s6#OCnc&.[S,VCHrr at WMS,`?cg&M!NJcDGDrrAbm
+rrDBbr;_EKTE"okJcGQGr;cfrrr at WMJcC<$JcFp5rrCIHs2X`Iqn<$NrNc+"s-WhirM5#EV>pJo
+JcFL)qZ,ORrrB,"J,~>
+[K$7,JcFp5r;bCJrr at WMJcC<$ScAYgs.'+nrMBOurM'1]s.'%brKmP8s-NVWrL`h at pQ,3 at rIk3,
+o98d%s.9+Dq1Scnq1S^&pO)l%p[e"Vq3p]2jb)`VnXBEQiW&oXJcD5>qZ,=Lr;_EKU&Y,mTn!(B
+li6n`JcDABrr at WMq>^BnrVultJcC<$JcC<$kPtP^dJql8rrDp3JcDSHr;_EKg].-NhuE]VX8d\~>
+[K$7,JcFp5r;bCJrr at WMJcC<$ScAR&q+L)jrrA/snOrKRRnM`?rr at WMS,`?cg&M!NJcDGDSH/!U
+r;_EKTE"okJcGQGr;cfrrr at WMJcC<$JcFp5rrCIHfbXSfq\Fb_V>pJoJcFL)qZ,ORrrB,"J,~>
+[K$7,JcFd1r;_EKJcCN*rrC%<r;a&$qu-Ekli$kHPPstLp]$HVJcCB&qZ,%Drr at WMU&Y,mU&Y,m
+li6n`JcDABrr at WMn,N=dn,NCfJcC<$X8i2"qu?TpJcF^/rrCIHo>1=;rQ,#EnZVt[qkW9Prr at WM
+JcDMFqZ,=LrrB,"J,~>
+[K$7,JcFd1r;_EKJcCN*rrC%<r;a&$s,m>]s.'+crO`$&qk*nYqkj=Ys+13:qkEt[s,$9,q4%D;
+o993Go8*F<rJ:!%rIk'(qgA5'p[e.ZopY3,jb)fXnXB9MJcCB&qZ,%Drr at WMU&Y,mTn!(Bli6n`
+JcDABrr at WMn,N=dn,NCfJcC<$X8i2"qu?TpJcF^/rrCIHf,"Adq\J5lrr at WMJcDMFqZ,=LrrB,"
+J,~>
+[K$7,JcFd1r;_EKJcCN*rrC%<r;a&$q\K'%lPBL#P8<U[p]$FMJcCB&qZ,%Drr at WMU&UY`li6n`
+JcDABrr at WMn,N=dn,NCfJcC<$X8i2"qu?TpJcF^/rrCIHf,"Adq\J5lrr at WMJcDMFqZ,=LrrB,"
+J,~>
+[K$7,JcFd1r;_EKJcCN*rrC%<r;a&$qu-Ekli$kHPPstLp]$HVJcCB&qZ,%Drr at WMU&Y,mU&Y,m
+li6n`JcDABrr at WMn,N=dn,NCfJcC<$X8i2"qu?TpJcF^/rrCIHo>1=;rQ,#EnZVt[qkW9Prr at WM
+JcDMFqZ,=LrrB,"J,~>
+[K$7,JcFd1r;_EKJcCN*rrC%<r;a&$s,m>]s.'+crO`$&qk*nYqkj=Ys+13:qkEt[s,$9,q4%D;
+o993Go8*F<rJ:!%rIk'(qgA5'p[e.ZopY3,jb)fXnXB9MJcCB&qZ,%Drr at WMU&Y,mTn!(Bli6n`
+JcDABrr at WMn,N=dn,NCfJcC<$X8i2"qu?TpJcF^/rrCIHf,"Adq\J5lrr at WMJcDMFqZ,=LrrB,"
+J,~>
+[K$7,JcFd1r;_EKJcCN*rrC%<r;a&$q\K'%lPBL#P8<U[p]$FMJcCB&qZ,%Drr at WMU&UY`li6n`
+JcDABrr at WMn,N=dn,NCfJcC<$X8i2"qu?TpJcF^/rrCIHf,"Adq\J5lrr at WMJcDMFqZ,=LrrB,"
+J,~>
+[K$7,JcFX-r;cNjrrDrrr;_EKJcDMFrr at WMnc/Lbqu5jYs6#[Gn,E(]s0@^b_uK`:JcF'rq#JV<
+rr at WMU&Y,mU&Y,mli6n`JcDABrr at WMli6n`oDegjJcC<$X8i2"JcF@%rrCOJs2Y#\q8*$Cq8hs,
+rM8KRrr at WMJcGWIrrB>(qZ,+FrrB,"J,~>
+[K$7,JcFX-r;cNjrrDrrr;_EKJcDMFrr at WMnc/Qfs.'+nrO_s$qk*b_qj7>6q4dn]rMfgoo8iX8
+s+p91rLWb>qk!hDpP]'Fqht91s+C?!q<7SEp](7go:#',jb)`VnXB?OrNO3>rr at WMci<e at bQ%SB
+JcDGDrrAaBrrDBbr;_EKTE"okJcG'9r;cHhrr at WMJcDeNrr@WMfDkjNe,RZ.j8],ZJcC<$qu?Zr
+Z2a\$e,TFJX8d\~>
+[K$7,JcFX-r;cNjrrDrrr;_EKJcDMFrr at WMnc/J%qb-/hrrA<"mn<ETrrA*Q_uK`:JcF'rq#JV<
+rr at WMU&UY`li6n`JcDABrr at WMli6n`oDegjJcC<$X8i2"JcF@%rrCOJbnf@>rr at WMJcGWIrrB>(
+qZ,+FrrB,"J,~>
+[K$7,JcFX-r;cNjrrDrrr;_EKJcDMFrr at WMnc/Lbqu5jYs6#[Gn,E(]s0@^b_uK`:JcF'rq#JV<
+rr at WMU&Y,mU&Y,mli6n`JcDABrr at WMli6n`oDegjJcC<$X8i2"JcF@%rrCOJs2Y#\q8*$Cq8hs,
+rM8KRrr at WMJcGWIrrB>(qZ,+FrrB,"J,~>
+[K$7,JcFX-r;cNjrrDrrr;_EKJcDMFrr at WMnc/Qfs.'+nrO_s$qk*b_qj7>6q4dn]rMfgoo8iX8
+s+p91rLWb>qk!hDpP]'Fqht91s+C?!q<7SEp](7go:#',jb)`VnXB?OrNO3>rr at WMci<e at bQ%SB
+JcDGDrrAaBrrDBbr;_EKTE"okJcG'9r;cHhrr at WMJcDeNrr@WMfDkjNe,RZ.j8],ZJcC<$qu?Zr
+Z2a\$e,TFJX8d\~>
+[K$7,JcFX-r;cNjrrDrrr;_EKJcDMFrr at WMnc/J%qb-/hrrA<"mn<ETrrA*Q_uK`:JcF'rq#JV<
+rr at WMU&UY`li6n`JcDABrr at WMli6n`oDegjJcC<$X8i2"JcF@%rrCOJbnf@>rr at WMJcGWIrrB>(
+qZ,+FrrB,"J,~>
+[K$7,JcFL)r;cZnrr at WMJcC<$L]@>Oqu5dWs6$lirTE5>n,E._s8N&(MuL]qrrAbmrrBV0qZ+P6
+rr at WMU&Y,mU&Y,mli6n`JcDABrr at oUr;bmXr;_EKJcDSHrr at WMdJs4Hec5ZirQP;fqoo#TrOr*L
+s2FB/qkSfCJcFR+rrBP.qZ+n at rrB,"J,~>
+[K$7,JcFL)r;cZnrr at WMJcC<$L]@C^s/Q+'s2P)Ns0;HqrL`n_qj7>6rM'%crMK7KpRD2Sooo9E
+pPAd>s+gVrq2>3Fqht91rIaqFp[e4\s-is_o:#',jb)`VnXB9Mqln'>rrAbmrrBV0qZ+P6rr at WM
+U&Y,mTn!(Bli6n`JcDABrr at oUr;bmXr;_EKJcDSHrr at WMdJs4Hec3`,JcC<$h>dKT\,Z=*c2[eD
+X8d\~>
+[K$7,JcFL)r;cZnrr at WMJcC<$L]@;gqb-)frrBMDr;bjnmn<KVs%E at lMbD%hrrAbmrrBV0qZ+P6
+rr at WMU&UY`li6n`JcDABrr at oUr;bmXr;_EKJcDSHrr at WMdJs4Hec3`,JcC<$h>dKT\,Z=*c2[eD
+X8d\~>
+[K$7,JcFL)r;cZnrr at WMJcC<$L]@>Oqu5dWs6$lirTE5>n,E._s8N&(MuL]qrrAbmrrBV0qZ+P6
+rr at WMU&Y,mU&Y,mli6n`JcDABrr at oUr;bmXr;_EKJcDSHrr at WMdJs4Hec5ZirQP;fqoo#TrOr*L
+s2FB/qkSfCJcFR+rrBP.qZ+n at rrB,"J,~>
+[K$7,JcFL)r;cZnrr at WMJcC<$L]@C^s/Q+'s2P)Ns0;HqrL`n_qj7>6rM'%crMK7KpRD2Sooo9E
+pPAd>s+gVrq2>3Fqht91rIaqFp[e4\s-is_o:#',jb)`VnXB9Mqln'>rrAbmrrBV0qZ+P6rr at WM
+U&Y,mTn!(Bli6n`JcDABrr at oUr;bmXr;_EKJcDSHrr at WMdJs4Hec3`,JcC<$h>dKT\,Z=*c2[eD
+X8d\~>
+[K$7,JcFL)r;cZnrr at WMJcC<$L]@;gqb-)frrBMDr;bjnmn<KVs%E at lMbD%hrrAbmrrBV0qZ+P6
+rr at WMU&UY`li6n`JcDABrr at oUr;bmXr;_EKJcDSHrr at WMdJs4Hec3`,JcC<$h>dKT\,Z=*c2[eD
+X8d\~>
+[K$7,JcF@%r;_EKJcC<$jo>8ZU]:;kqu5^Us6#aIn,E._Jc:6#kPtP^^]402^&S*4JcDGDrrAbm
+rr at WML]@;QJcFd1r;_EKJcDeNrr at WMci="Fec5Zus31GfqonrRq8iNRqlft0pTOOks-SB;S,`Kg
+JcGTIa8c/>X8d\~>
+[K$7,JcF@%r;_EKJcC<$jo>8ZU]::ms02OCs1A<9s/,ahs.At]qj7>6o;VVaq2b9>s.97iooo9E
+q2"j<pP\pBrJUE1n,E._m@*F&mt:;0l&P;&q5*hiJcFp5rrBh6qZ+>0rr at WMU&Y,mTn!(BJcCN*
+r;_EKj8]&XJcC<$X8i2"JcF'rrrCUL`tj7+S,`KgJcGTIa8c/>X8d\~>
+[K$7,JcF@%r;_EKJcC<$jo>8ZU]:9.qb-#drrAB$mn<KVJP1RokPtP^^]402^&S*4JcDGDSH+6@
+L]@;QJcFd1r;_EKJcDeNrr at WMci="Fec3Z*JcD5>rr at WMqZ+\:rrB,"J,~>
+[K$7,JcF@%r;_EKJcC<$jo>8ZU]:;kqu5^Us6#aIn,E._Jc:6#kPtP^^]402^&S*4JcDGDrrAbm
+rr at WML]@;QJcFd1r;_EKJcDeNrr at WMci="Fec5Zus31GfqonrRq8iNRqlft0pTOOks-SB;S,`Kg
+JcGTIa8c/>X8d\~>
+[K$7,JcF@%r;_EKJcC<$jo>8ZU]::ms02OCs1A<9s/,ahs.At]qj7>6o;VVaq2b9>s.97iooo9E
+q2"j<pP\pBrJUE1n,E._m@*F&mt:;0l&P;&q5*hiJcFp5rrBh6qZ+>0rr at WMU&Y,mTn!(BJcCN*
+r;_EKj8]&XJcC<$X8i2"JcF'rrrCUL`tj7+S,`KgJcGTIa8c/>X8d\~>
+[K$7,JcF@%r;_EKJcC<$jo>8ZU]:9.qb-#drrAB$mn<KVJP1RokPtP^^]402^&S*4JcDGDSH+6@
+L]@;QJcFd1r;_EKJcDeNrr at WMci="Fec3Z*JcD5>rr at WMqZ+\:rrB,"J,~>
+[K$7,JcF@%rrE*!r;_EKJcC<$L]@>Oqu5^Us6#gKmJd"_Jc>QGJcDkPqZ+,*rr at WMU&Y,mU&Y,m
+JcCN*r;`2arrC7Br;_EKe,TFJJcC<$XoJ>"fDkm"qp5#\s2"TVs2b)VrNH+0ornCks-Widr;_EK
+l2Ub`\c;[0MuWSQ_>jN8X8d\~>
+[K$7,JcF@%rrE*!r;_EKJcC<$L]@C^s/Q+'s2P)Ns0;HqoqqVQs.97Sor7\_qiCK at s.91gq31QE
+qhY- at rLs+Hq4[hHpQ"Y?qu>uNl]1prh50_'nXB?Oo<<fGXoJ7u\,ZI.JcDGDrrAaBrr at WML]@;Q
+QiI'cbQ%M at JcF4!rr at WMJcDkPr;bIL`>8LRr;_EKl2Ub`\c;[0MuWSQ_>jN8X8d\~>
+[K$7,JcF@%rrE*!r;_EKJcC<$L]@;gqb-#drrAH&m7[?VJP5l5JcDkPqZ+,*rr at WMU&UY`JcCN*
+r;`2arrC7Br;_EKe,TFJJcC<$XoJ>"fDif*s8W#tJcG!7rrBV0rr at uWq#J82rrB,"J,~>
+[K$7,JcF@%rrE*!r;_EKJcC<$L]@>Oqu5^Us6#gKmJd"_Jc>QGJcDkPqZ+,*rr at WMU&Y,mU&Y,m
+JcCN*r;`2arrC7Br;_EKe,TFJJcC<$XoJ>"fDkm"qp5#\s2"TVs2b)VrNH+0ornCks-Widr;_EK
+l2Ub`\c;[0MuWSQ_>jN8X8d\~>
+[K$7,JcF@%rrE*!r;_EKJcC<$L]@C^s/Q+'s2P)Ns0;HqoqqVQs.97Sor7\_qiCK at s.91gq31QE
+qhY- at rLs+Hq4[hHpQ"Y?qu>uNl]1prh50_'nXB?Oo<<fGXoJ7u\,ZI.JcDGDrrAaBrr at WML]@;Q
+QiI'cbQ%M at JcF4!rr at WMJcDkPr;bIL`>8LRr;_EKl2Ub`\c;[0MuWSQ_>jN8X8d\~>
+[K$7,JcF@%rrE*!r;_EKJcC<$L]@;gqb-#drrAH&m7[?VJP5l5JcDkPqZ+,*rr at WMU&UY`JcCN*
+r;`2arrC7Br;_EKe,TFJJcC<$XoJ>"fDif*s8W#tJcG!7rrBV0rr at uWq#J82rrB,"J,~>
+[K$7,JcF'rr;_EKci="FJcE"Tr;`,_rVcWmj8K#@RJlURqu;6Hp&9OB\c;I*Z2ah(JcDGDrrAbm
+rr at WML&_/QRK*9e`W,r<JcF:#rr at WMn,N=dJcEXfr;bILs3pkkmEGIHot'h"s.o[^JcFj3rr at WM
+a8c#:^&S*4s8W*!X8d\~>
+[K$7,JcF'rr;_EKci="FJcE"Tr;`,_s0_m,s1A<Ns1A67rM'=koqq\SrLX%Qor7\_rK$W at ql0CT
+pR_>>q4 at PYqht9Ds,6W3n,E4arMAhKmuG_jqi:38q5*\es1<j^\c;I*Z2ah(JcDGDrrAaBrr at WM
+L&_/QRK*9e`W,r<JcF:#rr at WMn,N=dJcEXfr;bIL_\Rh'jo>>\JcEdjqZ+>0rrE*!rrB,"J,~>
+[K$7,JcF'rr;_EKci="FJcE"Tr;`,_r>,9'ithXpR256aqu;4?oh0l9\c;I*Z2ah(JcDGDSH+6@
+L&_/QRK*9e`W,r<JcF:#rr at WMn,N=dJcEXfr;bIL_\Rh'jo>>\JcEdjqZ+>0rrE*!rrB,"J,~>
+[K$7,JcF'rr;_EKci="FJcE"Tr;`,_rVcWmj8K#@RJlURqu;6Hp&9OB\c;I*Z2ah(JcDGDrrAbm
+rr at WML&_/QRK*9e`W,r<JcF:#rr at WMn,N=dJcEXfr;bILs3pkkmEGIHot'h"s.o[^JcFj3rr at WM
+a8c#:^&S*4s8W*!X8d\~>
+[K$7,JcF'rr;_EKci="FJcE"Tr;`,_s0_m,s1A<Ns1A67rM'=koqq\SrLX%Qor7\_rK$W at ql0CT
+pR_>>q4 at PYqht9Ds,6W3n,E4arMAhKmuG_jqi:38q5*\es1<j^\c;I*Z2ah(JcDGDrrAaBrr at WM
+L&_/QRK*9e`W,r<JcF:#rr at WMn,N=dJcEXfr;bIL_\Rh'jo>>\JcEdjqZ+>0rrE*!rrB,"J,~>
+[K$7,JcF'rr;_EKci="FJcE"Tr;`,_r>,9'ithXpR256aqu;4?oh0l9\c;I*Z2ah(JcDGDSH+6@
+L&_/QRK*9e`W,r<JcF:#rr at WMn,N=dJcEXfr;bIL_\Rh'jo>>\JcEdjqZ+>0rrE*!rrB,"J,~>
+[K$7,JcFp5r;c*^rr at WMdJs4HJcC<$_>jQ6qu5RQs6$<YrTF"TmJd(aJc>-;rVultc2[_BJcGTI
+X8i+uJcDGDrrAbmrr at WML&_/QJcFF'r;_EKJcC<$JcG`Mg&M*$q9SfZrR_"lrQ+lTpU]t"s-SB;
+JcDqRqZ+,*rrE*!rrB,"J,~>
+[K$7,JcFp5r;c*^rr at WMdJs4HJcC<$_>jPJs1A6LrNZ<qs/G[gs.]C^s/H$^or7V]s,ZoDs.9%c
+rKHiEs+pKBqk=%Jq4[hHpQ"Y?rVubkl^IL,_klmlq5*VcrO`%.rrC=Dr;_EKqZ*\sr;_EKU&Y,m
+Tn!(BJcCH(rr at WMg&M!NJcC<$JcC<$rrCaP_%qV%JcDqRqZ+,*rrE*!rrB,"J,~>
+[K$7,JcFp5r;c*^rr at WMdJs4HJcC<$_>jNNqb,l`rrAr4r;cX/m7[EXJP5H)rVultc2[_BJcGTI
+X8i+uJcDGDSH+6 at L&_/QJcFF'r;_EKJcC<$JcG`Mg&Jl(JcC<$YQ+J"\,ZI.s8W*!X8d\~>
+[K$7,JcFp5r;c*^rr at WMdJs4HJcC<$_>jQ6qu5RQs6$<YrTF"TmJd(aJc>-;rVultc2[_BJcGTI
+X8i+uJcDGDrrAbmrr at WML&_/QJcFF'r;_EKJcC<$JcG`Mg&M*$q9SfZrR_"lrQ+lTpU]t"s-SB;
+JcDqRqZ+,*rrE*!rrB,"J,~>
+[K$7,JcFp5r;c*^rr at WMdJs4HJcC<$_>jPJs1A6LrNZ<qs/G[gs.]C^s/H$^or7V]s,ZoDs.9%c
+rKHiEs+pKBqk=%Jq4[hHpQ"Y?rVubkl^IL,_klmlq5*VcrO`%.rrC=Dr;_EKqZ*\sr;_EKU&Y,m
+Tn!(BJcCH(rr at WMg&M!NJcC<$JcC<$rrCaP_%qV%JcDqRqZ+,*rrE*!rrB,"J,~>
+[K$7,JcFp5r;c*^rr at WMdJs4HJcC<$_>jNNqb,l`rrAr4r;cX/m7[EXJP5H)rVultc2[_BJcGTI
+X8i+uJcDGDSH+6 at L&_/QJcFF'r;_EKJcC<$JcG`Mg&Jl(JcC<$YQ+J"\,ZI.s8W*!X8d\~>
+[K$7,JcEjlr;_EKJcCl4rr at iSrVc]ohu3T<Sc.sTrVqHJl2L\_JcF'rqZ*Jmr;_EKU&Y,mU&Y,m
+JcCH(rrB%ur;a,&r;_EKJcC<$L&_/Qg&M*$qp4rZrR_"lrQ+lTpU]mus-SB;JcE4ZqZ*burrB,"
+J,~>
+[K$7,JcEjlr;_EKJcCl4rr at iSs0_m,s3^kds1eN;s.]IkrMKD's1eH&s/H$^pSm\[s-rh[pTXUa
+l_NpAs.oOPmJd(aq5*DGq2W4dqlog`q5*Vcq7HY,JcF'rqZ*Jmr;_EKU&Y,mTn!(BJcCH(rrB%u
+r;a,&r;_EKJcC<$L&_/Qg&Jf&JcC<$\,Z=*XoJD$X8d\~>
+[K$7,JcEjlr;_EKJcCl4rr at iSr>,?)h\Q4l_\VtajVI5VrVqFAktD$VJcF'rqZ*Jmr;_EKU&UY`
+JcCH(rrB%ur;a,&r;_EKJcC<$L&_/Qg&Jf&JcC<$\,Z=*XoJD$X8d\~>
+[K$7,JcEjlr;_EKJcCl4rr at iSrVc]ohu3T<Sc.sTrVqHJl2L\_JcF'rqZ*Jmr;_EKU&Y,mU&Y,m
+JcCH(rrB%ur;a,&r;_EKJcC<$L&_/Qg&M*$qp4rZrR_"lrQ+lTpU]mus-SB;JcE4ZqZ*burrB,"
+J,~>
+[K$7,JcEjlr;_EKJcCl4rr at iSs0_m,s3^kds1eN;s.]IkrMKD's1eH&s/H$^pSm\[s-rh[pTXUa
+l_NpAs.oOPmJd(aq5*DGq2W4dqlog`q5*Vcq7HY,JcF'rqZ*Jmr;_EKU&Y,mTn!(BJcCH(rrB%u
+r;a,&r;_EKJcC<$L&_/Qg&Jf&JcC<$\,Z=*XoJD$X8d\~>
+[K$7,JcEjlr;_EKJcCl4rr at iSr>,?)h\Q4l_\VtajVI5VrVqFAktD$VJcF'rqZ*Jmr;_EKU&UY`
+JcCH(rrB%ur;a,&r;_EKJcC<$L&_/Qg&Jf&JcC<$\,Z=*XoJD$X8d\~>
+[K$7,JcGECrrCOJr;_EKJcDSHrrD`lrr at cQs8Doqh>RB:Sc.sTs8RZLj8OW0fDk^JScA]iJcDGD
+rrAbmrr at WML&_/QJcFF'rrDrrr;_EKJcFR+r;b[Rrr at WMfDkjNg].6$qp5#\q:GYjqoJ`Tot'au
+s.o8drrDrrrr at WMVuQ\qZiBn&VuQbsX8d\~>
+[K$7,JcGECrrCOJr;_EKJcDSHrrD`lrr at cQs1JBZs2P)RrNZC"rMfP(rPSHGs/H$^pSmtcqlp+4
+pS at JdnYH2hjeVd6mJd.cpSI,Cs,OXdpTXO`q5*\eq7HUFJcF@%qZ*2err at WMU&Y,mTo]3RJcCH(
+rr at WMg&M'Pqu?TpJcC<$h>dERh>dKTJcF@%rrCgR]b^5>rrDrrrr at WMVuQ\qZiBn&VuQbsX8d\~>
+[K$7,JcGECrrCOJr;_EKJcDSHrrD`lrr at cQrtbQ+h%p"j_\V>OpD3-hs8RXCj%Ft'fDk^JScA]i
+JcDGDSH+6 at L&_/QJcFF'rrDrrr;_EKJcFR+r;b[Rrr at WMfDkjNg]+r&oDegjqu?ZrJcDYJr;a2(
+qZ*PorrB,"J,~>
+[K$7,JcGECrrCOJr;_EKJcDSHrrD`lrr at cQs8Doqh>RB:Sc.sTs8RZLj8OW0fDk^JScA]iJcDGD
+rrAbmrr at WML&_/QJcFF'rrDrrr;_EKJcFR+r;b[Rrr at WMfDkjNg].6$qp5#\q:GYjqoJ`Tot'au
+s.o8drrDrrrr at WMVuQ\qZiBn&VuQbsX8d\~>
+[K$7,JcGECrrCOJr;_EKJcDSHrrD`lrr at cQs1JBZs2P)RrNZC"rMfP(rPSHGs/H$^pSmtcqlp+4
+pS at JdnYH2hjeVd6mJd.cpSI,Cs,OXdpTXO`q5*\eq7HUFJcF@%qZ*2err at WMU&Y,mTo]3RJcCH(
+rr at WMg&M'Pqu?TpJcC<$h>dERh>dKTJcF@%rrCgR]b^5>rrDrrrr at WMVuQ\qZiBn&VuQbsX8d\~>
+[K$7,JcGECrrCOJr;_EKJcDSHrrD`lrr at cQrtbQ+h%p"j_\V>OpD3-hs8RXCj%Ft'fDk^JScA]i
+JcDGDSH+6 at L&_/QJcFF'rrDrrr;_EKJcFR+r;b[Rrr at WMfDkjNg]+r&oDegjqu?ZrJcDYJr;a2(
+qZ*PorrB,"J,~>
+[K$7,JcGKErrCgRrrD`lr;_EKJcD_Lrr at WMq>^ElrVkXOs6$<Yq>0pYp&=pioD\cqJc>-;JcFd1
+q#Hc]rr at WMU&Y,mU&Y,mJcCH(rrBP.rrAnqrrDfnr;_EKJcE:\rr at WMfDkjNh>dN+s3peipWWHb
+pW3<PpU]t"s.o[^oDegjrVultJcC<$qu?Zrj8\uVU&Y,mX8d\~>
+[K$7,JcGKErrCgRrrD`lr;_EKJcD_Lrr at WMq>^K-s/Q+Hs2P)RrNZC%rQG#LrPS<Cs-*8Xs/,Cl
+rO_m$os"%`rNPsjrNPmhs,QLGrVuPes-is_n!^_^o<A7`q5*Vcq7HODJcFd1q#Hc]rr at WMU&Y,m
+To]3RJcCH(rrBP.rrAnqrrDfnr;_EKJcE:\rr at WMfDkjNh>b#$oDegjrVultJcC<$qu?Zrj8\uV
+U&Y,mX8d\~>
+[K$7,JcGKErrCgRrrD`lr;_EKJcD_Lrr at WMq>^C/rCbr^rrBqPjVdk7q-s"irVuI^rr at UCmn863
+j8\oTQiI'cJcDGDSH+6 at L&_/Q\,ZI.V>pPqp](0lJcC<$\c;[0JcF@%rrCmT\JFf:rrE#trr at WM
+JcGWIrrD*ZqZ*>irrB,"J,~>
+[K$7,JcGKErrCgRrrD`lr;_EKJcD_Lrr at WMq>^ElrVkXOs6$<Yq>0pYp&=pioD\cqJc>-;JcFd1
+q#Hc]rr at WMU&Y,mU&Y,mJcCH(rrBP.rrAnqrrDfnr;_EKJcE:\rr at WMfDkjNh>dN+s3peipWWHb
+pW3<PpU]t"s.o[^oDegjrVultJcC<$qu?Zrj8\uVU&Y,mX8d\~>
+[K$7,JcGKErrCgRrrD`lr;_EKJcD_Lrr at WMq>^K-s/Q+Hs2P)RrNZC%rQG#LrPS<Cs-*8Xs/,Cl
+rO_m$os"%`rNPsjrNPmhs,QLGrVuPes-is_n!^_^o<A7`q5*Vcq7HODJcFd1q#Hc]rr at WMU&Y,m
+To]3RJcCH(rrBP.rrAnqrrDfnr;_EKJcE:\rr at WMfDkjNh>b#$oDegjrVultJcC<$qu?Zrj8\uV
+U&Y,mX8d\~>
+[K$7,JcGKErrCgRrrD`lr;_EKJcD_Lrr at WMq>^C/rCbr^rrBqPjVdk7q-s"irVuI^rr at UCmn863
+j8\oTQiI'cJcDGDSH+6 at L&_/Q\,ZI.V>pPqp](0lJcC<$\c;[0JcF@%rrCmT\JFf:rrE#trr at WM
+JcGWIrrD*ZqZ*>irrB,"J,~>
+[K$7,JcF'rrrDThr;_EKJcDqRr;_EKq>^KnrVkRMs6$B[q>0jWrMTJ_s8VWgs0 at 4TmJb*)r;a\6
+rrDHdqZ)]Wrr at WMU&Y,mU&Y,mJcF:#q#KUXo`3nLrrBV0rrA8_r;_EKJcG?Arr at WMU&Y,mh>dH&
+qp5#\pXfGpq8iNRpU]mus.k5GJcFj3rrD<`qZ*,crrB,"J,~>
+[K$7,JcF'rrrDThr;_EKJcDqRr;_EKq>^K-s3^kds1eN;s2Y)]s1eHDqnr*As/H%5s/GIkq7HU$
+o<A8,oq_Pjoq_Pjo;)-[rNc7us8W,'oqh\Ws%`0SrNNc-nZ_u(rMB%gq7HIB`W,l:_>jN8mJm%`
+O8o4[JcDGDrrAaRrr at WMec5FFkPt2ThuE]V\c;[0PQ1R]JcC<$oDegjJcDGDrrCmT\JBbrJcFj3
+rrD<`qZ*,crrB,"J,~>
+[K$7,JcF'rrrDThr;_EKJcDqRr;_EKq>^I1rCbl\rrC"RjVdk7pL=(:q-sC(nOrl^JP5B'`W,l:
+_>jN8mJm%`O8o4[JcDGDSH+6 at ec5FFkPt2ThuE]V\c;[0PQ1R]JcC<$oDegjJcDGDrrCmT\JBbr
+JcFj3rrD<`qZ*,crrB,"J,~>
+[K$7,JcF'rrrDThr;_EKJcDqRr;_EKq>^KnrVkRMs6$B[q>0jWrMTJ_s8VWgs0 at 4TmJb*)r;a\6
+rrDHdqZ)]Wrr at WMU&Y,mU&Y,mJcF:#q#KUXo`3nLrrBV0rrA8_r;_EKJcG?Arr at WMU&Y,mh>dH&
+qp5#\pXfGpq8iNRpU]mus.k5GJcFj3rrD<`qZ*,crrB,"J,~>
+[K$7,JcF'rrrDThr;_EKJcDqRr;_EKq>^K-s3^kds1eN;s2Y)]s1eHDqnr*As/H%5s/GIkq7HU$
+o<A8,oq_Pjoq_Pjo;)-[rNc7us8W,'oqh\Ws%`0SrNNc-nZ_u(rMB%gq7HIB`W,l:_>jN8mJm%`
+O8o4[JcDGDrrAaRrr at WMec5FFkPt2ThuE]V\c;[0PQ1R]JcC<$oDegjJcDGDrrCmT\JBbrJcFj3
+rrD<`qZ*,crrB,"J,~>
+[K$7,JcF'rrrDThr;_EKJcDqRr;_EKq>^I1rCbl\rrC"RjVdk7pL=(:q-sC(nOrl^JP5B'`W,l:
+_>jN8mJm%`O8o4[JcDGDSH+6 at ec5FFkPt2ThuE]V\c;[0PQ1R]JcC<$oDegjJcDGDrrCmT\JBbr
+JcFj3rrD<`qZ*,crrB,"J,~>
+[K$7,L]@;Q\,ZC,JcC<$JcD_Ls8Doqg&:s6WVuYhmIUAXJc=@%JcG`MoDe[fM?!SUJcDGDrrAbm
+rr at WMfDkLDli6JTj8]&XJcE^hrr at WMJcGKErr@WMTE"okhuE`8rR:`,s69RFqp5;dpXfGppW3BR
+ot'aurM5#EJcF4!qZ)o]rrB,"J,~>
+[K$7,L]@;Q\,ZC,JcC<$JcD_Ls3q#(s3^e[s0;UEs3CSdrOi0Mq8;m?s/Gt:n$)W"rM9+jrO_g"
+q69[jqlo[fmJd.crNPsknXB?Z[AEDtqn)m)o<A&&q8S!crrDZjqZ)KQrr at WMU&Y,mTo]3RJcF@%
+o`4=XnGqVLr;_EK`W,r<JcC<$p](6nJcDABrrCsV[2+>nJcF4!qZ)o]rrB,"J,~>
+[K$7,L]@;Q\,ZC,JcC<$JcD_LrtbQ+fbXSf`>7PQq&Sj3s8RXCfh6nrrrDZjqZ)KQrr at WMU&UY`
+JcF@%o`4=XnGqVLr;_EK`W,r<JcC<$p](6nJcDABrrCsV[2+>nJcF4!qZ)o]rrB,"J,~>
+[K$7,L]@;Q\,ZC,JcC<$JcD_Ls8Doqg&:s6WVuYhmIUAXJc=@%JcG`MoDe[fM?!SUJcDGDrrAbm
+rr at WMfDkLDli6JTj8]&XJcE^hrr at WMJcGKErr@WMTE"okhuE`8rR:`,s69RFqp5;dpXfGppW3BR
+ot'aurM5#EJcF4!qZ)o]rrB,"J,~>
+[K$7,L]@;Q\,ZC,JcC<$JcD_Ls3q#(s3^e[s0;UEs3CSdrOi0Mq8;m?s/Gt:n$)W"rM9+jrO_g"
+q69[jqlo[fmJd.crNPsknXB?Z[AEDtqn)m)o<A&&q8S!crrDZjqZ)KQrr at WMU&Y,mTo]3RJcF@%
+o`4=XnGqVLr;_EK`W,r<JcC<$p](6nJcDABrrCsV[2+>nJcF4!qZ)o]rrB,"J,~>
+[K$7,L]@;Q\,ZC,JcC<$JcD_LrtbQ+fbXSf`>7PQq&Sj3s8RXCfh6nrrrDZjqZ)KQrr at WMU&UY`
+JcF@%o`4=XnGqVLr;_EK`W,r<JcC<$p](6nJcDABrrCsV[2+>nJcF4!qZ)o]rrB,"J,~>
+[K$7,JcE.Xr;_EKJcE^hrr at WMli7"`rVkLKs6$H]q>0FKJc=:#JcGQGq#H'Irr at WMU&Y,mU&Y,m
+JcFF'r;cZnr;c<dqZ-Bjr;bsZr;at>r;_EKs8W#tJcG3=rr at WMJcDkPr;baTrR:`,rTX at Dqp5;d
+q:GSppW3<PpU]t"rM5#Eli6tbS,`Eeh>d9NO8o4[X8d\~>
+[K$7,JcE.Xr;_EKJcE^hrr at WMli7!trR(Y[s0VgHs3CMbs1J<Mqnr*As2P)Bqo801pUg%$qn)["
+q69[jq69Uhli-^aoqhDOortp%nZ_i$rPnN7q7HODJcGQGq#H'Irr at WMU&Y,mTo]3RJcFF'r;cZn
+r;c<dqZ-Bjr;bsZr;at>r;_EKs8W#tJcG3=rr at WMJcDkPr;baT[2+>nli6tbS,`Eeh>d9NO8o4[
+X8d\~>
+[K$7,JcE.Xr;_EKJcE^hrr at WMli6u#rCbfZrrC(TjVdk7lXGE<f1U\pq>^6jKE(rOJcDGDSH+6@
+g&M!Nq>^Bnn,N7bp](0ljo>8ZaoD;>JcGcMr;_EKn,NCfJcC<$XoJ>"huC)"JcG'9rrAPgr;b[R
+q#HKUrrB,"J,~>
+[K$7,JcE.Xr;_EKJcE^hrr at WMli7"`rVkLKs6$H]q>0FKJc=:#JcGQGq#H'Irr at WMU&Y,mU&Y,m
+JcFF'r;cZnr;c<dqZ-Bjr;bsZr;at>r;_EKs8W#tJcG3=rr at WMJcDkPr;baTrR:`,rTX at Dqp5;d
+q:GSppW3<PpU]t"rM5#Eli6tbS,`Eeh>d9NO8o4[X8d\~>
+[K$7,JcE.Xr;_EKJcE^hrr at WMli7!trR(Y[s0VgHs3CMbs1J<Mqnr*As2P)Bqo801pUg%$qn)["
+q69[jq69Uhli-^aoqhDOortp%nZ_i$rPnN7q7HODJcGQGq#H'Irr at WMU&Y,mTo]3RJcFF'r;cZn
+r;c<dqZ-Bjr;bsZr;at>r;_EKs8W#tJcG3=rr at WMJcDkPr;baT[2+>nli6tbS,`Eeh>d9NO8o4[
+X8d\~>
+[K$7,JcE.Xr;_EKJcE^hrr at WMli6u#rCbfZrrC(TjVdk7lXGE<f1U\pq>^6jKE(rOJcDGDSH+6@
+g&M!Nq>^Bnn,N7bp](0ljo>8ZaoD;>JcGcMr;_EKn,NCfJcC<$XoJ>"huC)"JcG'9rrAPgr;b[R
+q#HKUrrB,"J,~>
+[K$7,QiI!aTE"iiJcG-;rr at WMiW&oXJcG'9s8DoqfDYa4X8Vqllgo],e,FpuqZ)3Iqu?ZrJcDGD
+rrAbmrr at WMg&M!Nq>^Bnn,N=dp&Fsjj8],ZJcELbr;_EKoDegjTE"iiJcCr6r;baTrTX at DrTX4@
+rQk5is4%#)pW3BRq7?UFpU^7*rM8]Xr;_]Srr at WMq>^<lMuWeWs8W*!X8d\~>
+[K$7,QiI!aTE"iiJcG-;rr at WMiW&oXJcG'9s3q#(s3^e[s2Y)`rQG5Uqo8NNq7lgHs0)7<os",$
+os"8(qkWtjqkWtjq5!?UpTX=eq3poZ\#&W!q7HIBq69\,q8S!cqZ)3Iqu?ZrJcDGDrrAaRrr at WM
+g&M!Nq>^Bnn,N=dp&Fsjj8],ZJcELbr;_EKoDegjTE"iiJcCr6r;baTZPMg*r;_]Srr at WMq>^<l
+MuWeWs8W*!X8d\~>
+[K$7,QiI!aTE"iiJcG-;rr at WMiW&oXJcG'9rtbQ+f,"Ad`tmbSq]5!3JP4HbJcGTIJcGWIrr at WM
+U&UY`JcFF'r;cZnr;c<dr;cNjr;bmXrr at WM^]464JcG?ArrA\kr;_EKPQ1R]huC"ul2U\^M?!SU
+JcGQGqZ)QSrrE*!rrB,"J,~>
+[K$7,QiI!aTE"iiJcG-;rr at WMiW&oXJcG'9s8DoqfDYa4X8Vqllgo],e,FpuqZ)3Iqu?ZrJcDGD
+rrAbmrr at WMg&M!Nq>^Bnn,N=dp&Fsjj8],ZJcELbr;_EKoDegjTE"iiJcCr6r;baTrTX at DrTX4@
+rQk5is4%#)pW3BRq7?UFpU^7*rM8]Xr;_]Srr at WMq>^<lMuWeWs8W*!X8d\~>
+[K$7,QiI!aTE"iiJcG-;rr at WMiW&oXJcG'9s3q#(s3^e[s2Y)`rQG5Uqo8NNq7lgHs0)7<os",$
+os"8(qkWtjqkWtjq5!?UpTX=eq3poZ\#&W!q7HIBq69\,q8S!cqZ)3Iqu?ZrJcDGDrrAaRrr at WM
+g&M!Nq>^Bnn,N=dp&Fsjj8],ZJcELbr;_EKoDegjTE"iiJcCr6r;baTZPMg*r;_]Srr at WMq>^<l
+MuWeWs8W*!X8d\~>
+[K$7,QiI!aTE"iiJcG-;rr at WMiW&oXJcG'9rtbQ+f,"Ad`tmbSq]5!3JP4HbJcGTIJcGWIrr at WM
+U&UY`JcFF'r;cZnr;c<dr;cNjr;bmXrr at WM^]464JcG?ArrA\kr;_EKPQ1R]huC"ul2U\^M?!SU
+JcGQGqZ)QSrrE*!rrB,"J,~>
+[K$7,JcDkPr;_EKnc/UhJcC<$aoDD>s8LRIs6$H]qtfXMq>UE"Jc=p5s0DCu\,ZC,ec5LHJcGKE
+r;_EKU&Y,mU&Y,mJcFL)r;cNjr;cBfr;cNjr;bmXrr at WM]Dqg0JcC<$JcDABrrD$Xs5*e?s6TXI
+q;qY#pXfGprSR at js2FrJq8N*>rNH0qJcC<$l2UV\L&_/Qs8W*!X8d\~>
+[K$7,JcDkPr;_EKnc/UhJcC<$aoDCis3^kls1eTbrQb;`qo8HLrP/*Hs0)1:pTXD(rPnT9pUgC"
+os"CjpTXIhli-^as((f!qjR&Z\#&Ptq7HC at rNQ74s)7qLq8ToDr;bCJqZ)3Ip](0lJcDGDrrAaR
+rr at WMg].3Pp&Fsjnc/Ofp&Fsjj8],ZJcE@^r;_EKJcC<$TE"okiW$.uJcC<$l2UV\L&_/Qs8W*!
+X8d\~>
+[K$7,JcDkPr;_EKnc/UhJcC<$aoDAVs%D5bru(VJrrC.Viu._7lXKZ_rr at UCktD$VpIi!qr;bCJ
+qZ)3Ip](0lJcDGDSH+6 at g].3Pp&Fsjnc/Ofp&Fsjj8],ZJcE@^r;_EKJcC<$TE"okiW$.uJcC<$
+l2UV\L&_/Qs8W*!X8d\~>
+[K$7,JcDkPr;_EKnc/UhJcC<$aoDD>s8LRIs6$H]qtfXMq>UE"Jc=p5s0DCu\,ZC,ec5LHJcGKE
+r;_EKU&Y,mU&Y,mJcFL)r;cNjr;cBfr;cNjr;bmXrr at WM]Dqg0JcC<$JcDABrrD$Xs5*e?s6TXI
+q;qY#pXfGprSR at js2FrJq8N*>rNH0qJcC<$l2UV\L&_/Qs8W*!X8d\~>
+[K$7,JcDkPr;_EKnc/UhJcC<$aoDCis3^kls1eTbrQb;`qo8HLrP/*Hs0)1:pTXD(rPnT9pUgC"
+os"CjpTXIhli-^as((f!qjR&Z\#&Ptq7HC at rNQ74s)7qLq8ToDr;bCJqZ)3Ip](0lJcDGDrrAaR
+rr at WMg].3Pp&Fsjnc/Ofp&Fsjj8],ZJcE@^r;_EKJcC<$TE"okiW$.uJcC<$l2UV\L&_/Qs8W*!
+X8d\~>
+[K$7,JcDkPr;_EKnc/UhJcC<$aoDAVs%D5bru(VJrrC.Viu._7lXKZ_rr at UCktD$VpIi!qr;bCJ
+qZ)3Ip](0lJcDGDSH+6 at g].3Pp&Fsjnc/Ofp&Fsjj8],ZJcE@^r;_EKJcC<$TE"okiW$.uJcC<$
+l2UV\L&_/Qs8W*!X8d\~>
+[K$7,JcD_Lr;_EKJcFd1r;_EKhuE`TrVk at Gs6&;<lh^AMn,<.[lgsfKs0 at 4Tli-pip\p0PqZ)3I
+nc/OfJcDGDrrAbmrr at WMg].3Pp&Fsjn,N=dq>^BniW&oXg&M!NJcFd1r;_EKV>pPqJcC<$rrD$X
+p$);6s5Ne)s4%#)ouQgFo=Fmrs."Z?JcG9?qZ)3Iqu?ZrX8d\~>
+[K$7,JcD_Lr;_EKJcFd1r;_EKhuE`-s5!_&s1eTbs3^ejrQG#VqnrHKo>^g6ou?m5ot1+ at qlob*
+s.o7js.o7jrM8cYos"I!pSIhWn$'3rnZ_i$o>^g7s1A;LrO_sHNW8kUJcG9?r;_EKU&Y,mTo]3R
+JcFL)r;cNjr;c<dr;cZnr;bgVrrCaPr;_EKj8]&XJcDSHrr at WMJcG`MiW$(sJcC<$nc/IdJcGWI
+rrB,"J,~>
+[K$7,JcD_Lr;_EKJcFd1r;_EKhuE]lrCc/dq\f2FrrCpllQ,^Bmhu!ClXKN[rr at UClV%6XpIgMG
+qZ)3Inc/OfJcDGDSH+6 at g].3Pp&Fsjn,N=dq>^BniW&oXg&M!NJcFd1r;_EKV>pPqJcC<$rrD$X
+Y82]hJcG9?qZ)3Iqu?ZrX8d\~>
+[K$7,JcD_Lr;_EKJcFd1r;_EKhuE`TrVk at Gs6&;<lh^AMn,<.[lgsfKs0 at 4Tli-pip\p0PqZ)3I
+nc/OfJcDGDrrAbmrr at WMg].3Pp&Fsjn,N=dq>^BniW&oXg&M!NJcFd1r;_EKV>pPqJcC<$rrD$X
+p$);6s5Ne)s4%#)ouQgFo=Fmrs."Z?JcG9?qZ)3Iqu?ZrX8d\~>
+[K$7,JcD_Lr;_EKJcFd1r;_EKhuE`-s5!_&s1eTbs3^ejrQG#VqnrHKo>^g6ou?m5ot1+ at qlob*
+s.o7js.o7jrM8cYos"I!pSIhWn$'3rnZ_i$o>^g7s1A;LrO_sHNW8kUJcG9?r;_EKU&Y,mTo]3R
+JcFL)r;cNjr;c<dr;cZnr;bgVrrCaPr;_EKj8]&XJcDSHrr at WMJcG`MiW$(sJcC<$nc/IdJcGWI
+rrB,"J,~>
+[K$7,JcD_Lr;_EKJcFd1r;_EKhuE]lrCc/dq\f2FrrCpllQ,^Bmhu!ClXKN[rr at UClV%6XpIgMG
+qZ)3Inc/OfJcDGDSH+6 at g].3Pp&Fsjn,N=dq>^BniW&oXg&M!NJcFd1r;_EKV>pPqJcC<$rrD$X
+Y82]hJcG9?qZ)3Iqu?ZrX8d\~>
+[K$7,VuQ\qKE(lMJcC<$`W,r<JcGcMrVk:Es6&kLg\U%+qt'jDn+6SUJc=!pQiHj]JcG!7rr at WM
+U&Y,mU&Y,mJcFL)r;cNjr;c6bo`3nLrr at WMg&M'Ph>dERJcDeNrrB,"rr at WMfDkjNj8]/Gs69RM
+q<@_:s5Ne)s5Nq5pW3B]pVl[6rM9&brr at WML]@5OJcGECrrB,"J,~>
+[K$7,VuQ\qKE(lMJcC<$`W,r<JcGcMs5!_&s3CSoqp,5bs3^_`q8;aBs0)%6rNPt,qo8N;ot17"
+j08KXmJd'ros"+cl`f9ClauV^nZ_i$n](UVqn)[DQiHj]JcG!7rr at WMU&Y,mTqD>bJcFL)r;cNj
+r;c6bo`3nLrr at WMg&M'Ph>dERJcDeNrrB,"rr at WMfDkjNj8Z4soDegjJcCN*qZ)3Ip&G$lX8d\~>
+[K$7,VuQ\qKE(lMJcC<$`W,r<JcGcMrCc/dq\f,DrrDL'gE#Auq]l,cmpc;;JP4<^QiHj]JcG!7
+rr at WMU&UY`JcFL)r;cNjr;c6bo`3nLrr at WMg&M'Ph>dERJcDeNrrB,"rr at WMfDkjNj8Z4soDegj
+JcCN*qZ)3Ip&G$lX8d\~>
+[K$7,VuQ\qKE(lMJcC<$`W,r<JcGcMrVk:Es6&kLg\U%+qt'jDn+6SUJc=!pQiHj]JcG!7rr at WM
+U&Y,mU&Y,mJcFL)r;cNjr;c6bo`3nLrr at WMg&M'Ph>dERJcDeNrrB,"rr at WMfDkjNj8]/Gs69RM
+q<@_:s5Ne)s5Nq5pW3B]pVl[6rM9&brr at WML]@5OJcGECrrB,"J,~>
+[K$7,VuQ\qKE(lMJcC<$`W,r<JcGcMs5!_&s3CSoqp,5bs3^_`q8;aBs0)%6rNPt,qo8N;ot17"
+j08KXmJd'ros"+cl`f9ClauV^nZ_i$n](UVqn)[DQiHj]JcG!7rr at WMU&Y,mTqD>bJcFL)r;cNj
+r;c6bo`3nLrr at WMg&M'Ph>dERJcDeNrrB,"rr at WMfDkjNj8Z4soDegjJcCN*qZ)3Ip&G$lX8d\~>
+[K$7,VuQ\qKE(lMJcC<$`W,r<JcGcMrCc/dq\f,DrrDL'gE#Auq]l,cmpc;;JP4<^QiHj]JcG!7
+rr at WMU&UY`JcFL)r;cNjr;c6bo`3nLrr at WMg&M'Ph>dERJcDeNrrB,"rr at WMfDkjNj8Z4soDegj
+JcCN*qZ)3Ip&G$lX8d\~>
+h>dERh>dKTJcF'rrrCULr;_EKJcGQGrrCOJrr at WMs8DusdJa+.p\iY=jnJZDleUb's0 at 4Tl2I7R
+qZ)3IiW&oXJcDGDrrAbmrr at WMg].3Pp&FsjmJlbXiW&oXl2U\^JcGECrrCaPrr at WMJcF:#rr at WM
+fDkjNj8]/DrTsFGpZ;A5q:GT)rSRFlrRCS\n[e[ps.&c^rr at WMNW8kUs8W*!q>^HpJcG]KrrB,"
+J,~>
+h>dERh>dKTJcF'rrrCULr;_EKJcGQGrrCOJrr at WMs475+s3CYts474trQbGdrR(M^rPS$Bs0)%6
+s021.pW!6;o=P%Bo<A87o<A7jli-jpos"1es)75-l)!"Dq5*Vcq7H1:q9f#XScAQeJcF^/rr at WM
+U&Y,mTqD>bJcFL)r;cNjr;c6bo)RbLrrD<`r;_EKp&G$lg&M'PJcC<$ec5XLJcF@%rrD*ZWttC.
+rr at WMNW8kUs8W*!q>^HpJcG]KrrB,"J,~>
+h>dERh>dKTJcF'rrrCULr;_EKJcGQGrrCOJrr at WMrtbW-jVIS.pD3c/pD2:"jWOFFlZhScrr at UC
+kt at TIqZ)3IiW&oXJcDGDSH+6 at g].3Pp&FsjmJlbXiW&oXl2U\^JcGECrrCaPrr at WMJcF:#rr at WM
+fDkjNj8Z.qp&G$lJcC`0qZ-ZrrrDlprr at WMrVultX8d\~>
+h>dERh>dKTJcF'rrrCULr;_EKJcGQGrrCOJrr at WMs8DusdJa+.p\iY=jnJZDleUb's0 at 4Tl2I7R
+qZ)3IiW&oXJcDGDrrAbmrr at WMg].3Pp&FsjmJlbXiW&oXl2U\^JcGECrrCaPrr at WMJcF:#rr at WM
+fDkjNj8]/DrTsFGpZ;A5q:GT)rSRFlrRCS\n[e[ps.&c^rr at WMNW8kUs8W*!q>^HpJcG]KrrB,"
+J,~>
+h>dERh>dKTJcF'rrrCULr;_EKJcGQGrrCOJrr at WMs475+s3CYts474trQbGdrR(M^rPS$Bs0)%6
+s021.pW!6;o=P%Bo<A87o<A7jli-jpos"1es)75-l)!"Dq5*Vcq7H1:q9f#XScAQeJcF^/rr at WM
+U&Y,mTqD>bJcFL)r;cNjr;c6bo)RbLrrD<`r;_EKp&G$lg&M'PJcC<$ec5XLJcF@%rrD*ZWttC.
+rr at WMNW8kUs8W*!q>^HpJcG]KrrB,"J,~>
+h>dERh>dKTJcF'rrrCULr;_EKJcGQGrrCOJrr at WMrtbW-jVIS.pD3c/pD2:"jWOFFlZhScrr at UC
+kt at TIqZ)3IiW&oXJcDGDSH+6 at g].3Pp&FsjmJlbXiW&oXl2U\^JcGECrrCaPrr at WMJcF:#rr at WM
+fDkjNj8Z.qp&G$lJcC`0qZ-ZrrrDlprr at WMrVultX8d\~>
+h>dERh>dKT\,ZC,ScA]idJs4HJcC<$rVultJcF'rrVk4Cs6'@ZchcbtrU]@2s7>FQrN_"Rli*m`
+rrE#tqZ,m\rr at WMp&G$lJcDGDrrAbmrr at WMg].3Pp&Fsjn,N=dq>^<lj8],ZJcDkPr;_EK_>jH6
+JcC<$nc/Uhjo>AIs69RMq<@_:qr7M)qr7S3q8iNas3UMZo=Ft*rM8-Hrr at WMYQ+J"n,NCfJcG]K
+rrB,"J,~>
+h>dERh>dKT\,ZC,ScA]idJs4HJcC<$rVultJcF'rs5!_&s5a42s4mLsrR(G\s240Bs0(t4ot0t<
+s02+,s2OZ7s2OZ7li-dnos"7gs1A;Ls((N$n"nFDq8WH2nZ_i$n](=NrPki:rrE#tqZ,m\rr at WM
+p&G$lJcDGDrrAabrr at WMg].3Pp&Fsjn,N=dq>^<lj8],ZJcDkPr;_EK_>jH6JcC<$nc/Uhjo;:q
+g&M'PJcDqRqZ-*brr at WMrVultX8d\~>
+h>dERh>dKT\,ZC,ScA]idJs4HJcC<$rVultJcF'rrCc;hobmK>rrE!5cQ2*ir?LWQs!-]"r;_CA
+lV"5WrrE#tqZ,m\rr at WMp&G$lJcDGDSH+6 at g].3Pp&Fsjn,N=dq>^<lj8],ZJcDkPr;_EK_>jH6
+JcC<$nc/Uhjo;:qg&M'PJcDqRqZ-*brr at WMrVultX8d\~>
+h>dERh>dKT\,ZC,ScA]idJs4HJcC<$rVultJcF'rrVk4Cs6'@ZchcbtrU]@2s7>FQrN_"Rli*m`
+rrE#tqZ,m\rr at WMp&G$lJcDGDrrAbmrr at WMg].3Pp&Fsjn,N=dq>^<lj8],ZJcDkPr;_EK_>jH6
+JcC<$nc/Uhjo>AIs69RMq<@_:qr7M)qr7S3q8iNas3UMZo=Ft*rM8-Hrr at WMYQ+J"n,NCfJcG]K
+rrB,"J,~>
+h>dERh>dKT\,ZC,ScA]idJs4HJcC<$rVultJcF'rs5!_&s5a42s4mLsrR(G\s240Bs0(t4ot0t<
+s02+,s2OZ7s2OZ7li-dnos"7gs1A;Ls((N$n"nFDq8WH2nZ_i$n](=NrPki:rrE#tqZ,m\rr at WM
+p&G$lJcDGDrrAabrr at WMg].3Pp&Fsjn,N=dq>^<lj8],ZJcDkPr;_EK_>jH6JcC<$nc/Uhjo;:q
+g&M'PJcDqRqZ-*brr at WMrVultX8d\~>
+h>dERh>dKT\,ZC,ScA]idJs4HJcC<$rVultJcF'rrCc;hobmK>rrE!5cQ2*ir?LWQs!-]"r;_CA
+lV"5WrrE#tqZ,m\rr at WMp&G$lJcDGDSH+6 at g].3Pp&Fsjn,N=dq>^<lj8],ZJcDkPr;_EK_>jH6
+JcC<$nc/Uhjo;:qg&M'PJcDqRqZ-*brr at WMrVultX8d\~>
+huEQRh>dKTJcD5>r;_EKJcC<$ci=%Ds8L at Cs5VB#jnJZDmG7g6iVrk_Jc>!7X8i%sj8],ZJcGEC
+rr at WMU&Y,mU&Y,mJcFL)r;cNjr;cBfr;cNjr;cBfr;cZnr;_EKWW2nsJcC<$JcE"TrrD0\qs=.C
+q;qG3rR^l)rSRRpq:,/Xo=Fn(s.o[bg&M'PJcE4ZqZ)3Ij8],ZX8d\~>
+huEQRh>dKTJcD5>r;_EKJcC<$ci=%3s5!_#s5a.6rQb;frPnTen&GC2n](UVq7H7<ot1+ at pTXP7
+os!i_q7H7&rMB>%s((N$pSH!Do>^O/q7H1:o?mTXX8i%sj8],ZJcGECrr at WMU&Y,mTqD>bJcFL)
+r;cNjr;cBfr;cNjr;cBfr;cZnr;_EKWW2nsJcC<$JcE"TrrD0\V\[tcrr at WM\,Z=*JcFd1rrB,"
+J,~>
+huEQRh>dKTJcD5>r;_EKJcC<$ci="\s%DSlo,73:rs$^gjWOFFm<JXUiCj1NJP5<%X8i%sj8],Z
+JcGECrr at WMU&UY`JcFL)r;cNjr;cBfr;cNjr;cBfr;cZnr;_EKWW2nsJcC<$JcE"TrrD0\V\[tc
+rr at WM\,Z=*JcFd1rrB,"J,~>
+huEQRh>dKTJcD5>r;_EKJcC<$ci=%Ds8L at Cs5VB#jnJZDmG7g6iVrk_Jc>!7X8i%sj8],ZJcGEC
+rr at WMU&Y,mU&Y,mJcFL)r;cNjr;cBfr;cNjr;cBfr;cZnr;_EKWW2nsJcC<$JcE"TrrD0\qs=.C
+q;qG3rR^l)rSRRpq:,/Xo=Fn(s.o[bg&M'PJcE4ZqZ)3Ij8],ZX8d\~>
+huEQRh>dKTJcD5>r;_EKJcC<$ci=%3s5!_#s5a.6rQb;frPnTen&GC2n](UVq7H7<ot1+ at pTXP7
+os!i_q7H7&rMB>%s((N$pSH!Do>^O/q7H1:o?mTXX8i%sj8],ZJcGECrr at WMU&Y,mTqD>bJcFL)
+r;cNjr;cBfr;cNjr;cBfr;cZnr;_EKWW2nsJcC<$JcE"TrrD0\V\[tcrr at WM\,Z=*JcFd1rrB,"
+J,~>
+huEQRh>dKTJcD5>r;_EKJcC<$ci="\s%DSlo,73:rs$^gjWOFFm<JXUiCj1NJP5<%X8i%sj8],Z
+JcGECrr at WMU&UY`JcFL)r;cNjr;cBfr;cNjr;cBfr;cZnr;_EKWW2nsJcC<$JcE"TrrD0\V\[tc
+rr at WM\,Z=*JcFd1rrB,"J,~>
+iW&]Rh>dKT`W,r<JcF:#r;_EKQ2gd_JcEXfs8M9]s8)-]qtg?Qc2-PrrU]F4rUYU>ao8XHq#H!G
+ci="FJcDGDrrAbmrr at WMg].3Pp&Fsjnc/Ofp&FsjmJm+brVufrq>^BnJcE"Tr;_iWrr at WMJcDkP
+r;c$\q<\"CpZ;51s4?r's53jtpXJrVn[eb(rM5#EoDegjV>p>kJcFR+rrB,"J,~>
+iW&]Rh>dKT`W,r<JcF:#r;_EKQ2gd_JcEXfs5!_1s5a42s4mY%s3CMhleM0Qs0)%6rR(GQou@$Z
+ot1+ at pTXP7pTX&aot0n$s/#J%l`g8_rPlskn](OTrNQ+0n](+HZiBh$JcF'rrr at WMU&Y,mTqD>b
+JcFL)r;cNjr;cBfr;cNjr;c6br;cfrr;cZnr;_EKZ2ab&NW9"YJcC<$XoJ>"kPq at oJcG?ArrAnq
+q#H!Gh>dKTX8d\~>
+iW&]Rh>dKT`W,r<JcF:#r;_EKQ2gd_JcEXfs%EA0pD3cHpD3cLo,7E at q]5\@boPmgr?L]Sr?Hkd
+a\/u?q#H!Gci="FJcDGDSH+6 at g].3Pp&Fsjnc/Ofp&FsjmJm+brVufrq>^BnJcE"Tr;_iWrr at WM
+JcDkPr;c$\V&"X^oDegjV>p>kJcFR+rrB,"J,~>
+iW&]Rh>dKT`W,r<JcF:#r;_EKQ2gd_JcEXfs8M9]s8)-]qtg?Qc2-PrrU]F4rUYU>ao8XHq#H!G
+ci="FJcDGDrrAbmrr at WMg].3Pp&Fsjnc/Ofp&FsjmJm+brVufrq>^BnJcE"Tr;_iWrr at WMJcDkP
+r;c$\q<\"CpZ;51s4?r's53jtpXJrVn[eb(rM5#EoDegjV>p>kJcFR+rrB,"J,~>
+iW&]Rh>dKT`W,r<JcF:#r;_EKQ2gd_JcEXfs5!_1s5a42s4mY%s3CMhleM0Qs0)%6rR(GQou@$Z
+ot1+ at pTXP7pTX&aot0n$s/#J%l`g8_rPlskn](OTrNQ+0n](+HZiBh$JcF'rrr at WMU&Y,mTqD>b
+JcFL)r;cNjr;cBfr;cNjr;c6br;cfrr;cZnr;_EKZ2ab&NW9"YJcC<$XoJ>"kPq at oJcG?ArrAnq
+q#H!Gh>dKTX8d\~>
+iW&]Rh>dKT`W,r<JcF:#r;_EKQ2gd_JcEXfs%EA0pD3cHpD3cLo,7E at q]5\@boPmgr?L]Sr?Hkd
+a\/u?q#H!Gci="FJcDGDSH+6 at g].3Pp&Fsjnc/Ofp&FsjmJm+brVufrq>^BnJcE"Tr;_iWrr at WM
+JcDkPr;c$\V&"X^oDegjV>p>kJcFR+rrB,"J,~>
+iW&oXs8W#th>dKTa8c/>JcF'rr;_cUrr at WMJcF-ts8Dusli$eYnbr4Ys5VH%jnJZDmG7g6Jc<^h
+\c;O,JcEdjrr at WMU&Y,mU&Y,mJcFF'r;cZnqZ-0dr;cNjr;c*^r;cltrr at WMU&Y&kOoPF]ci<qD
+JcC<$j8]&XkPtAEqs!q<l/Ma#s2aras2b#Tn[e\&s.k5GoDegjX8i%sfDkdLL]@ASs8W*!X8d\~>
+iW&oXs8W#th>dKTa8c/>JcF'rr;_cUrr at WMJcF-ts6TdArT*q4s3CSjrTNG"q8WH<o>^[Tqn)O@
+rR(AOqo8H9q8W05mJcdjos",$l`g>aqo6ain&G7Ps02=2n](1J\c;O,JcEdjrr at WMU&Y,mTqD>b
+JcFF'r;cZnqZ-0dr;cNjr;c*^r;cltrr at WMU&Y&kOoPF]ci<qDJcC<$j8]&XkPq at oJcG?ArrB,"
+qZ,7Jr;_WQrrE*!rrB,"J,~>
+iW&oXs8W#th>dKTa8c/>JcF'rr;_cUrr at WMJcF-trtbW-pD3]Fq%ioLobm]DpDs8<cQ2*iq]kKQ
+s!*(fa%NuCqZ)3Ia8c/>JcDGDSH+6 at g&M!Nq>^<lnc/Ofp&Fsjl2U\^s8W*!JcDGDr;_u[rrCCF
+r;_EKJcFd1r;c$\V&"X^oDegjX8i%sfDkdLL]@ASs8W*!X8d\~>
+iW&oXs8W#th>dKTa8c/>JcF'rr;_cUrr at WMJcF-ts8Dusli$eYnbr4Ys5VH%jnJZDmG7g6Jc<^h
+\c;O,JcEdjrr at WMU&Y,mU&Y,mJcFF'r;cZnqZ-0dr;cNjr;c*^r;cltrr at WMU&Y&kOoPF]ci<qD
+JcC<$j8]&XkPtAEqs!q<l/Ma#s2aras2b#Tn[e\&s.k5GoDegjX8i%sfDkdLL]@ASs8W*!X8d\~>
+iW&oXs8W#th>dKTa8c/>JcF'rr;_cUrr at WMJcF-ts6TdArT*q4s3CSjrTNG"q8WH<o>^[Tqn)O@
+rR(AOqo8H9q8W05mJcdjos",$l`g>aqo6ain&G7Ps02=2n](1J\c;O,JcEdjrr at WMU&Y,mTqD>b
+JcFF'r;cZnqZ-0dr;cNjr;c*^r;cltrr at WMU&Y&kOoPF]ci<qDJcC<$j8]&XkPq at oJcG?ArrB,"
+qZ,7Jr;_WQrrE*!rrB,"J,~>
+iW&oXs8W#th>dKTa8c/>JcF'rr;_cUrr at WMJcF-trtbW-pD3]Fq%ioLobm]DpDs8<cQ2*iq]kKQ
+s!*(fa%NuCqZ)3Ia8c/>JcDGDSH+6 at g&M!Nq>^<lnc/Ofp&Fsjl2U\^s8W*!JcDGDr;_u[rrCCF
+r;_EKJcFd1r;c$\V&"X^oDegjX8i%sfDkdLL]@ASs8W*!X8d\~>
+j8]&Xs8W#th>dKTJcCf2r;_oYrrAbmr;_EK[K$:+li$eYoDS:Ws5VH%jnJ`FmG7a4dJj0OM>mO\
+nc$B)qZ,[Vrr at WMj8]&XJcDGDrrAbmrr at WMg&M!Nq>^Bnn,N7bq>^<ljo>8ZJcD;@rr at WMJcC<$
+]Dqm2kPtSNrTs at Eq;qA1s6]F;s53M!pVla8qlg$qJcDMFqZ)3Ie,TFJs8W*!X8d\~>
+j8]&Xs8W#th>dKTJcCf2r;_oYrrAbmr;_EK[K$3ss5a.6s3^klq<6qqqo8Z>o>^URs1 at sDqpG5O
+pW!*7pW!*7mJd.*ot0t&s2O`Do<A7*qlob5bId5_p!N`Mo>^fWn^52QqZ,[Vrr at WMj8]&XJcDGD
+rrAabrr at WMg&M!Nq>^Bnn,N7bq>^<ljo>8ZJcD;@rr at WMJcC<$]Dqm2kPq:mJcDMFqZ)3Ie,TFJ
+s8W*!X8d\~>
+j8]&Xs8W#th>dKTJcCf2r;_oYrrAbmr;_EK[K$8"ru(hPru(\Lru(VJr>kJIo,[i8cQ2*ir?L]S
+r?K]_rr at mKrrDR^_>jB4j8],ZJcFd1r;_EKU&UY`JcFF'r;cZnr;c<dqZ-HlqZ,aXr;_EKScA]i
+JcC<$JcE@^rrD6^UDAF\U]:2kJcF4!rrE*!rrB,"J,~>
+j8]&Xs8W#th>dKTJcCf2r;_oYrrAbmr;_EK[K$:+li$eYoDS:Ws5VH%jnJ`FmG7a4dJj0OM>mO\
+nc$B)qZ,[Vrr at WMj8]&XJcDGDrrAbmrr at WMg&M!Nq>^Bnn,N7bq>^<ljo>8ZJcD;@rr at WMJcC<$
+]Dqm2kPtSNrTs at Eq;qA1s6]F;s53M!pVla8qlg$qJcDMFqZ)3Ie,TFJs8W*!X8d\~>
+j8]&Xs8W#th>dKTJcCf2r;_oYrrAbmr;_EK[K$3ss5a.6s3^klq<6qqqo8Z>o>^URs1 at sDqpG5O
+pW!*7pW!*7mJd.*ot0t&s2O`Do<A7*qlob5bId5_p!N`Mo>^fWn^52QqZ,[Vrr at WMj8]&XJcDGD
+rrAabrr at WMg&M!Nq>^Bnn,N7bq>^<ljo>8ZJcD;@rr at WMJcC<$]Dqm2kPq:mJcDMFqZ)3Ie,TFJ
+s8W*!X8d\~>
+j8]&Xs8W#th>dKTJcCf2r;_oYrrAbmr;_EK[K$8"ru(hPru(\Lru(VJr>kJIo,[i8cQ2*ir?L]S
+r?K]_rr at mKrrDR^_>jB4j8],ZJcFd1r;_EKU&UY`JcFF'r;cZnr;c<dqZ-HlqZ,aXr;_EKScA]i
+JcC<$JcE@^rrD6^UDAF\U]:2kJcF4!rrE*!rrB,"J,~>
+jo>8ZrVufrh>dKTfDkdLJcE:\r;_EKJcC<$j8]/Yli$_Wp&4pboD8LIh>6a7l1"`Iqt':4rU\;5
+s0 at R^s0D1oaoD/:g].9RJcFj3r;_EKU&Y,mU&Y,mJcF@%o)SUdr;cZnnGqPJrr at WMS,`EeJcG9?
+rr at WMJcF-trrD<`q<\"Cs6TLEq;VA?p#?#/p!i`Tn[e\&s.mp>r;_EKiW&cTJcEjlrrB,"J,~>
+jo>8ZrVufrh>dKTfDkdLJcE:\r;_EKJcC<$j8]/Ns4mY8s60F:s3CH(hq\7Os0)+8pX0#Qou?mV
+q7HC at rNPt7qloPgrPnH@q69h;ot0h"s()/6o>\nan](+Hs5!@fs*O:`aoD/:g].9RJcFj3r;_EK
+U&Y,mTqD>bJcF@%o)SUdr;cZnnGqPJrr at WMS,`EeJcG9?rr at WMJcF-trrD<`TbboQr;_EKiW&cT
+JcEjlrrB,"J,~>
+jo>8ZrVufrh>dKTfDkdLJcE:\r;_EKJcC<$j8]-Pru(hPru(\Lr>GJJq]5>IrugnRrs%:"o-<KH
+ruh1`ms+dUbtJ':MbF'MnOq"(q#K1Lrr at WMjo>8ZJcDGDSH+6 at fDkFBq>^Bnq>]sbiW&oXJcD5>
+r;_EKnc/UhJcC<$dJs4Hl2RFmc2[_BJcF^/qZ)3IaoDA at X8d\~>
+jo>8ZrVufrh>dKTfDkdLJcE:\r;_EKJcC<$j8]/Yli$_Wp&4pboD8LIh>6a7l1"`Iqt':4rU\;5
+s0 at R^s0D1oaoD/:g].9RJcFj3r;_EKU&Y,mU&Y,mJcF@%o)SUdr;cZnnGqPJrr at WMS,`EeJcG9?
+rr at WMJcF-trrD<`q<\"Cs6TLEq;VA?p#?#/p!i`Tn[e\&s.mp>r;_EKiW&cTJcEjlrrB,"J,~>
+jo>8ZrVufrh>dKTfDkdLJcE:\r;_EKJcC<$j8]/Ns4mY8s60F:s3CH(hq\7Os0)+8pX0#Qou?mV
+q7HC at rNPt7qloPgrPnH@q69h;ot0h"s()/6o>\nan](+Hs5!@fs*O:`aoD/:g].9RJcFj3r;_EK
+U&Y,mTqD>bJcF@%o)SUdr;cZnnGqPJrr at WMS,`EeJcG9?rr at WMJcF-trrD<`TbboQr;_EKiW&cT
+JcEjlrrB,"J,~>
+jo>8ZrVufrh>dKTfDkdLJcE:\r;_EKJcC<$j8]-Pru(hPru(\Lr>GJJq]5>IrugnRrs%:"o-<KH
+ruh1`ms+dUbtJ':MbF'MnOq"(q#K1Lrr at WMjo>8ZJcDGDSH+6 at fDkFBq>^Bnq>]sbiW&oXJcD5>
+r;_EKnc/UhJcC<$dJs4Hl2RFmc2[_BJcF^/qZ)3IaoDA at X8d\~>
+jo>>\qu?Tph>dKTJcCN*r;_EKJcFd1rr at iSs8MEaqtg'crV,jYs5WSEj7D7!rR(/TrU#18_uA!^
+qZ)3IZiC%*JcDGDrrAbmrr at WMec5FFp&Fsjp]'mdhuE]VJcFF'rrBn8r;_EKp](6nJcGWIrr at WM
+fDkjNl2UePrTsRYs7?3`s7>pJqr7SAoA]Gms2b#Tn[eV$s.oPlrr at WM\c;O,JcEXfrrB,"J,~>
+jo>>\qu?Tph>dKTJcCN*r;_EKJcFd1rr at iSrU^'Ms60F:pZUGgs0)+8pX0#rpVusTrO_[@s0219
+rNP\gqo8<@qlot;ot0h"n&EJ]n](+Hqq_"dn^5\_qZ)3IZiC%*JcDGDrrAarrr at WMec5FFp&Fsj
+p]'mdhuE]VJcFF'rrBn8r;_EKp](6nJcGWIrr at WMfDkjNl2U>jrunQ]qu?ZrJcE:\qZ)3I_uK`:
+X8d\~>
+jo>>\qu?Tph>dKTJcCN*r;_EKJcFd1rr at iSs%EA0rtbVPr>,8Jr>,8NpDNoPnK%W6miCF5i?nMU
+nW*PtJP3mRci<kBJcE(Vrr at WMU&UY`JcF:#q#L*fr;cTlo`3nLrr at WMg&M'P_>jH6JcGKErr at WM
+qu?ZrJcF@%rrD<`T,.>(rr at WM\c;O,JcEXfrrB,"J,~>
+jo>>\qu?Tph>dKTJcCN*r;_EKJcFd1rr at iSs8MEaqtg'crV,jYs5WSEj7D7!rR(/TrU#18_uA!^
+qZ)3IZiC%*JcDGDrrAbmrr at WMec5FFp&Fsjp]'mdhuE]VJcFF'rrBn8r;_EKp](6nJcGWIrr at WM
+fDkjNl2UePrTsRYs7?3`s7>pJqr7SAoA]Gms2b#Tn[eV$s.oPlrr at WM\c;O,JcEXfrrB,"J,~>
+jo>>\qu?Tph>dKTJcCN*r;_EKJcFd1rr at iSrU^'Ms60F:pZUGgs0)+8pX0#rpVusTrO_[@s0219
+rNP\gqo8<@qlot;ot0h"n&EJ]n](+Hqq_"dn^5\_qZ)3IZiC%*JcDGDrrAarrr at WMec5FFp&Fsj
+p]'mdhuE]VJcFF'rrBn8r;_EKp](6nJcGWIrr at WMfDkjNl2U>jrunQ]qu?ZrJcE:\qZ)3I_uK`:
+X8d\~>
+jo>>\qu?Tph>dKTJcCN*r;_EKJcFd1rr at iSs%EA0rtbVPr>,8Jr>,8NpDNoPnK%W6miCF5i?nMU
+nW*PtJP3mRci<kBJcE(Vrr at WMU&UY`JcF:#q#L*fr;cTlo`3nLrr at WMg&M'P_>jH6JcGKErr at WM
+qu?ZrJcF@%rrD<`T,.>(rr at WM\c;O,JcEXfrrB,"J,~>
+kPtP^q>^Bnh>dKTjo>>\JcG-;rrBP.r;_EKaoD;>U]:>oM?!VTp\k-gq>L-cqu-?bnbW:Gq>/e9
+iUHfno>^arhu<Y]Jc=^/fDk^JJcDkPrr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'P^&S$2JcE"TrMR^9
+rr at WMfDkjNli7"Ks6p!Sp\4XXoBH/>oA]Gms2b#Tn[eV$s.oPlrr at WM^]402_uK`:n,NCfOoPF]
+X8d\~>
+kPtP^q>^Bnh>dKTjo>>\JcG-;rrBP.r;_EKaoD;>U]:>oM?!PGs6p!OrS7)0h;%\Cp!N`nq8W0V
+rO_+0s01tkq8W*>rNQ+;qn)lHrO_a,mDd8[n&FnFpYG_dn^5tgqZ)3IXoJD$JcDGDrrAarrr at WM
+L&_/QJcFF'rrBb4r;_EKZ2ae$a8c/>JcF@%rrDBbq\K2Tq%ioPYnm6:rr at WM^]402_uK`:n,NCf
+OoPF]X8d\~>
+kPtP^q>^Bnh>dKTjo>>\JcG-;rrBP.r;_EKaoD;>U]:>oM?!TKru(hPru(bNruM%Ur>,2Lq\f2P
+nK%W6q&S-5i?nMUo8`c!hb3tLJP5#rfDk^JJcDkPrr at WMU&UY`JcCH(rr at WMg&M'P^&S$2JcE"T
+rHuZcrr at WMfDkjNli3Lkqu?ZrJcELbqZ+P6rrDNfrrA2]rrB,"J,~>
+kPtP^q>^Bnh>dKTjo>>\JcG-;rrBP.r;_EKaoD;>U]:>oM?!VTp\k-gq>L-cqu-?bnbW:Gq>/e9
+iUHfno>^arhu<Y]Jc=^/fDk^JJcDkPrr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'P^&S$2JcE"TrMR^9
+rr at WMfDkjNli7"Ks6p!Sp\4XXoBH/>oA]Gms2b#Tn[eV$s.oPlrr at WM^]402_uK`:n,NCfOoPF]
+X8d\~>
+kPtP^q>^Bnh>dKTjo>>\JcG-;rrBP.r;_EKaoD;>U]:>oM?!PGs6p!OrS7)0h;%\Cp!N`nq8W0V
+rO_+0s01tkq8W*>rNQ+;qn)lHrO_a,mDd8[n&FnFpYG_dn^5tgqZ)3IXoJD$JcDGDrrAarrr at WM
+L&_/QJcFF'rrBb4r;_EKZ2ae$a8c/>JcF@%rrDBbq\K2Tq%ioPYnm6:rr at WM^]402_uK`:n,NCf
+OoPF]X8d\~>
+kPtP^q>^Bnh>dKTjo>>\JcG-;rrBP.r;_EKaoD;>U]:>oM?!TKru(hPru(bNruM%Ur>,2Lq\f2P
+nK%W6q&S-5i?nMUo8`c!hb3tLJP5#rfDk^JJcDkPrr at WMU&UY`JcCH(rr at WMg&M'P^&S$2JcE"T
+rHuZcrr at WMfDkjNli3Lkqu?ZrJcELbqZ+P6rrDNfrrA2]rrB,"J,~>
+l2U\^q>^Bnn,NCfnc/UhkPtP^JcG'9rrBD*r;_EKJcC<$nc/Xgq>L?iq>L'arVcQdn,!(Es8(:;
+iUHfnn](Ophu<Y]Jc=^/h>d?P\c;[0s8W*!JcGECrr at WMU&Y,mU&Y,mJcCH(rr at WMO8o.YO8o.Y
+XoJ3pJcD;@rrDBbs6p!ap%S at Tp$)MGqsF"7p!j#_rPe`^pVm*Bq6,AL^&Rs0^&S*4mJm1dPQ1X_
+X8d\~>
+l2U\^q>^Bnn,NCfnc/UhkPtP^JcG'9rrBD*r;_EKJcC<$nc/RZrTO::s7?!KgYDhKs609up!N`n
+q8W*TiPt9aq8W$<ou?sBs)7kJpTX\Flc.,[n&FnFoA0Gdn^61mqZ+2,rrE*!rr at WMp&G$lJcDGD
+rrAarrr at WML&_/QJcCf2r;_oYr;`u"q>GmEScA]ili6u#q]YhPq'!'[JcEF`qZ+>0rrDHdrrA8_
+rrB,"J,~>
+l2U\^q>^Bnn,NCfnc/UhkPtP^JcG'9rrBD*r;_EKJcC<$nc/V^q\fDLruLtSrtb>Lr>GDRmiDE4
+ruKW7i?nMUnW*Pthb3tLJP5#rh>d?P\c;[0s8W*!JcGECrr at WMU&UY`JcCH(rr at WMO8o.YO8o.Y
+XoJ3EJcD;@rrDBbSJHeV^&Rs0^&S*4mJm1dPQ1X_X8d\~>
+l2U\^q>^Bnn,NCfnc/UhkPtP^JcG'9rrBD*r;_EKJcC<$nc/Xgq>L?iq>L'arVcQdn,!(Es8(:;
+iUHfnn](Ophu<Y]Jc=^/h>d?P\c;[0s8W*!JcGECrr at WMU&Y,mU&Y,mJcCH(rr at WMO8o.YO8o.Y
+XoJ3pJcD;@rrDBbs6p!ap%S at Tp$)MGqsF"7p!j#_rPe`^pVm*Bq6,AL^&Rs0^&S*4mJm1dPQ1X_
+X8d\~>
+l2U\^q>^Bnn,NCfnc/UhkPtP^JcG'9rrBD*r;_EKJcC<$nc/RZrTO::s7?!KgYDhKs609up!N`n
+q8W*TiPt9aq8W$<ou?sBs)7kJpTX\Flc.,[n&FnFoA0Gdn^61mqZ+2,rrE*!rr at WMp&G$lJcDGD
+rrAarrr at WML&_/QJcCf2r;_oYr;`u"q>GmEScA]ili6u#q]YhPq'!'[JcEF`qZ+>0rrDHdrrA8_
+rrB,"J,~>
+l2U\^q>^Bnn,NCfnc/UhkPtP^JcG'9rrBD*r;_EKJcC<$nc/V^q\fDLruLtSrtb>Lr>GDRmiDE4
+ruKW7i?nMUnW*Pthb3tLJP5#rh>d?P\c;[0s8W*!JcGECrr at WMU&UY`JcCH(rr at WMO8o.YO8o.Y
+XoJ3EJcD;@rrDBbSJHeV^&Rs0^&S*4mJm1dPQ1X_X8d\~>
+l2U,Nnc/Ofp&G$lJcC<$qu?TpJcF^/r;_EKS,`Nfq>L9gqu-9crVcKbnbW:Ws4u/qj7)rno>^ar
+]Dhc7L]6E8q#I]"r;_EKp&G$lJcDGDrrAbmrr at WML]@;QJcCZ.r;_EK]DqW'JcDABrrDBbs6op\
+s8)Qcqt'LFs7#pQoA]Gms2b5Zqp>#TrOVm0s.mL2rr at oUq#H!GZ2ah(X8d\~>
+l2U,Nnc/Ofp&G$lJcC<$qu?TpJcF^/r;_EKS,`BWs60L<rU]dIgYDhVrTO-upX/flrPnHVo>^aa
+ou?CupVum<s3^MZot11,qpFrRrHnRaah.)_n^6m_s60(%jo>,VZ2ab&JcGECrr at WMU&Y,mTs+Ir
+JcCN*r;_EKMuW_UJcE@^p\f[CTE"okli6u#q]YhPq'!!Y_>jN8M?!AOJcE"TrrB,"J,~>
+l2U,Nnc/Ofp&G$lJcC<$qu?TpJcF^/r;_EKS,`L]q&0,Or>GVNpDs2MpE8uHs!.OQdj*m"qh+L#
+r at 5EPr;_UGjo>,VZ2ab&JcGECrr at WMU&UY`JcCN*r;_EKMuW_UJcE@^pO%PlTE"okli3Fi_>jN8
+M?!AOJcE"TrrB,"J,~>
+l2U,Nnc/Ofp&G$lJcC<$qu?TpJcF^/r;_EKS,`Nfq>L9gqu-9crVcKbnbW:Ws4u/qj7)rno>^ar
+]Dhc7L]6E8q#I]"r;_EKp&G$lJcDGDrrAbmrr at WML]@;QJcCZ.r;_EK]DqW'JcDABrrDBbs6op\
+s8)Qcqt'LFs7#pQoA]Gms2b5Zqp>#TrOVm0s.mL2rr at oUq#H!GZ2ah(X8d\~>
+l2U,Nnc/Ofp&G$lJcC<$qu?TpJcF^/r;_EKS,`BWs60L<rU]dIgYDhVrTO-upX/flrPnHVo>^aa
+ou?CupVum<s3^MZot11,qpFrRrHnRaah.)_n^6m_s60(%jo>,VZ2ab&JcGECrr at WMU&Y,mTs+Ir
+JcCN*r;_EKMuW_UJcE@^p\f[CTE"okli6u#q]YhPq'!!Y_>jN8M?!AOJcE"TrrB,"J,~>
+l2U,Nnc/Ofp&G$lJcC<$qu?TpJcF^/r;_EKS,`L]q&0,Or>GVNpDs2MpE8uHs!.OQdj*m"qh+L#
+r at 5EPr;_UGjo>,VZ2ab&JcGECrr at WMU&UY`JcCN*r;_EKMuW_UJcE@^pO%PlTE"okli3Fi_>jN8
+M?!AOJcE"TrrB,"J,~>
+l2U,NmJm%`qu?Zrp](0lJcCH(r;_EKJcC<$qu?]mq>L?iqu-3aoCr"Uq=FXBeaqbhrR(5VqsAt6
+]Dh3tqZ)3IRK*9eJcDGDrrAbmrr at WML]@;QJcCN*rrB%urrE#trrA\kor!B at U&Y&kmJm4Ts8)ci
+rVHEcp[e4Fs7?3YrU'49s4?qnq9\`Ps18$0^]4<6^&S*4fDk^JJcD_LrrB,"J,~>
+l2U,NmJm%`qu?Zrp](0lJcCH(r;_EKJcC<$qu?WdrTO4OpZU;cs3^f/rPnNXq:tqgp!N`nou?sc
+ou?J"o>^O:s3^MZot17.pX/BJah.)_n'U[]qrme%mJm%`JcD/<rr at WMU&Y,mTs+IrJcCN*r;_EK
+L]@ASWW2turVultTE"T_JcDGDr;c6brtbJTq%i]JZPL=UrrBb4rrC[NqZ)3IWW2tuX8d\~>
+l2U,NmJm%`qu?Zrp](0lJcCH(r;_EKJcC<$qu?[:q\fDLruLtSoc<WHpDs&SrsdL'i?nMUo8`\t
+JP3UJmJm%`JcD/<rr at WMU&UY`JcCN*r;_EKL]@ASWW2turVultTE"S3JcDGDr;c6bR23R;rrBb4
+rrC[NqZ)3IWW2tuX8d\~>
+l2U,NmJm%`qu?Zrp](0lJcCH(r;_EKJcC<$qu?]mq>L?iqu-3aoCr"Uq=FXBeaqbhrR(5VqsAt6
+]Dh3tqZ)3IRK*9eJcDGDrrAbmrr at WML]@;QJcCN*rrB%urrE#trrA\kor!B at U&Y&kmJm4Ts8)ci
+rVHEcp[e4Fs7?3YrU'49s4?qnq9\`Ps18$0^]4<6^&S*4fDk^JJcD_LrrB,"J,~>
+l2U,NmJm%`qu?Zrp](0lJcCH(r;_EKJcC<$qu?WdrTO4OpZU;cs3^f/rPnNXq:tqgp!N`nou?sc
+ou?J"o>^O:s3^MZot17.pX/BJah.)_n'U[]qrme%mJm%`JcD/<rr at WMU&Y,mTs+IrJcCN*r;_EK
+L]@ASWW2turVultTE"T_JcDGDr;c6brtbJTq%i]JZPL=UrrBb4rrC[NqZ)3IWW2tuX8d\~>
+l2U,NmJm%`qu?Zrp](0lJcCH(r;_EKJcC<$qu?[:q\fDLruLtSoc<WHpDs&SrsdL'i?nMUo8`\t
+JP3UJmJm%`JcD/<rr at WMU&UY`JcCN*r;_EKL]@ASWW2turVultTE"S3JcDGDr;c6bR23R;rrBb4
+rrC[NqZ)3IWW2tuX8d\~>
+h>dERj8]&Xs8W*!JcC<$oDeahX8i2"JcC<$g&M*Os8DuorVc]krVccjp\Op]p%S:Yp%/4>eaqhj
+qpG#TrU#18\c24#qZ)3IPQ1X_JcDGDrrAbmrr at WML&_/QJcCH(r;`u"rrE*!rrA\knY^s<U]:8m
+mJm4Ts8)cirVHEcp[e4Fq=+ at Mp#?#'q:,H%rRC_kn\t=-JcGQGrrCmTqZ)?MrrAnqrrE*!rrB,"
+J,~>
+h>dERj8]&Xs8W*!JcC<$oDeahX8i2"JcC<$g&M*OrU^'Qs8DofpZU;cs3^`-s2Of\p"]/drS7.e
+q:tecmJc^sq7HUQou?[:p!N0Hjh'p-q7H+8n^6m_pZVM%oDe[fJcCr6rr at WMU&Y,mTs+IrJcCH(
+rr at WML&_)OXoJD$s8W*!TE"H[JcDMFr;c6brtbJTq\JiJZPJ,lq>^Hph>d?PL&_/QV>pPqs8W*!
+X8d\~>
+h>dERj8]&Xs8W*!JcC<$oDeahX8i2"JcC<$g&M(Fru(hWr>GPSr>GVXpDs8YocX&NocsJGeKa*$
+qh+L#r at 3@k\P)PoqZ)3IPQ1X_JcDGDSH+6 at L&_/QJcCH(r;`u"rrE*!rrA\knU,ofU]:8mmJiRi
+JcGQGrrCmTqZ)?MrrAnqrrE*!rrB,"J,~>
+h>dERj8]&Xs8W*!JcC<$oDeahX8i2"JcC<$g&M*Os8DuorVc]krVccjp\Op]p%S:Yp%/4>eaqhj
+qpG#TrU#18\c24#qZ)3IPQ1X_JcDGDrrAbmrr at WML&_/QJcCH(r;`u"rrE*!rrA\knY^s<U]:8m
+mJm4Ts8)cirVHEcp[e4Fq=+ at Mp#?#'q:,H%rRC_kn\t=-JcGQGrrCmTqZ)?MrrAnqrrE*!rrB,"
+J,~>
+h>dERj8]&Xs8W*!JcC<$oDeahX8i2"JcC<$g&M*OrU^'Qs8DofpZU;cs3^`-s2Of\p"]/drS7.e
+q:tecmJc^sq7HUQou?[:p!N0Hjh'p-q7H+8n^6m_pZVM%oDe[fJcCr6rr at WMU&Y,mTs+IrJcCH(
+rr at WML&_)OXoJD$s8W*!TE"H[JcDMFr;c6brtbJTq\JiJZPJ,lq>^Hph>d?PL&_/QV>pPqs8W*!
+X8d\~>
+h>dERj8]&Xs8W*!JcC<$oDeahX8i2"JcC<$g&M(Fru(hWr>GPSr>GVXpDs8YocX&NocsJGeKa*$
+qh+L#r at 3@k\P)PoqZ)3IPQ1X_JcDGDSH+6 at L&_/QJcCH(r;`u"rrE*!rrA\knU,ofU]:8mmJiRi
+JcGQGrrCmTqZ)?MrrAnqrrE*!rrB,"J,~>
+h>dERhuEWTJcC<$n,N=dYQ+V&dJs.FJcC`0s8)Wkqtg?ks7c9as7>jVrVHQ`oCN"<fCRtjrR(5V
+qsAt6ci3sMmJcq]qZ)3IO8o.YJcDGDrrAbmrr at WML&_/QJcC<$r;_EKaoCh-JcDMFrrDHds8)ci
+rVH?ap%/(Fp[J4MoA]f%qpbZ'rRC_kn\tO>q6,ALg].-NJcG]KrrAtsrrE*!rrB,"J,~>
+h>dERhuEWTJcC<$n,N=dYQ+V&dJs.FJcC`0s8Duhs60L]rU]^GgYDhms3^Z+pX/Zho?mHjq8W6c
+q8Vn&rS7(cqn)[Oou?g>o?lmDn[mi/p"f5Zn^7*es,m99oB?5%q>^<lJcCf2r;_EKU&Y,mTs+Ir
+JcCH(rr at WMJcGZKJcEjln,7h;U]:>omJlu*q\JcHZPJ,lg].-NJcG]KrrAtsrrE*!rrB,"J,~>
+h>dERhuEWTJcC<$n,N=dYQ+V&dJs.FJcC`0s![a^q]5\Sruh%Vs!.+Xr>knbo-=8Ef-B6$rIa^%
+q^R.icV+9<m7[9TqZ)3IO8o.YJcDGDSH+6 at L&_/QJcC<$r;_EKaoCgWJcDMFrrDHdQPP/Pg].-N
+JcG]KrrAtsrrE*!rrB,"J,~>
+h>dERhuEWTJcC<$n,N=dYQ+V&dJs.FJcC`0s8)Wkqtg?ks7c9as7>jVrVHQ`oCN"<fCRtjrR(5V
+qsAt6ci3sMmJcq]qZ)3IO8o.YJcDGDrrAbmrr at WML&_/QJcC<$r;_EKaoCh-JcDMFrrDHds8)ci
+rVH?ap%/(Fp[J4MoA]f%qpbZ'rRC_kn\tO>q6,ALg].-NJcG]KrrAtsrrE*!rrB,"J,~>
+h>dERhuEWTJcC<$n,N=dYQ+V&dJs.FJcC`0s8Duhs60L]rU]^GgYDhms3^Z+pX/Zho?mHjq8W6c
+q8Vn&rS7(cqn)[Oou?g>o?lmDn[mi/p"f5Zn^7*es,m99oB?5%q>^<lJcCf2r;_EKU&Y,mTs+Ir
+JcCH(rr at WMJcGZKJcEjln,7h;U]:>omJlu*q\JcHZPJ,lg].-NJcG]KrrAtsrrE*!rrB,"J,~>
+h>dERhuEWTJcC<$n,N=dYQ+V&dJs.FJcC`0s![a^q]5\Sruh%Vs!.+Xr>knbo-=8Ef-B6$rIa^%
+q^R.icV+9<m7[9TqZ)3IO8o.YJcDGDSH+6 at L&_/QJcC<$r;_EKaoCgWJcDMFrrDHdQPP/Pg].-N
+JcG]KrrAtsrrE*!rrB,"J,~>
+h>dERh>dKTJcC<$li6tbJcC<$M?!VTs8Duos8DulrVHQmrV-3cqt'LTs8)W^oCN"<jn&*2j6?HQ
+o<A2UVuHY#X8`.)mJcn]M?!MSL&_)OJcDGDrrAbmrr at WML&_/QJcC<$rVufr_>jH6PQ1$JJcDMF
+rrDNfs6od[q=jRRrTX at Rp[J4MoA]f%rRC`%s4$kko>U[>qld at +rrB>(qZ)3IQiI'cX8d\~>
+h>dERh>dKTJcC<$li6tbJcC<$M?!VTs8DuhrVc]dpZVM0s8DidkM6+$s3^T)q9eljs604)q:tke
+pY>YcmJd(>o>^gBpX/ZRqn)CGlc/b4s,m>9hpLiIqo8*Pq;)(5qq^l-q#H9Or;_QOr;_EKU&Y,m
+Ts+IrJcCH(rr at WMJcG]Kr;a\6r;`&]mJVV9U]:>on,ND'q]YbNo-(FUZiC%*Z2a\$JcD):rrB,"
+J,~>
+h>dERh>dKTJcC<$li6tbJcC<$M?!TKs!7Ubru(hZr>knUr?1tXq]kbVruLt`o-=8EjWj at Hj":.s
+o;2C>Vb?sgX%WHmm7[6TM?!MSL&_)OJcDGDSH+6 at L&_/QJcC<$rVufr_>jH6PQ1#tJcDMFrrDNf
+Pnp_+rrB>(qZ)3IQiI'cX8d\~>
+h>dERh>dKTJcC<$li6tbJcC<$M?!VTs8Duos8DulrVHQmrV-3cqt'LTs8)W^oCN"<jn&*2j6?HQ
+o<A2UVuHY#X8`.)mJcn]M?!MSL&_)OJcDGDrrAbmrr at WML&_/QJcC<$rVufr_>jH6PQ1$JJcDMF
+rrDNfs6od[q=jRRrTX at Rp[J4MoA]f%rRC`%s4$kko>U[>qld at +rrB>(qZ)3IQiI'cX8d\~>
+h>dERh>dKTJcC<$li6tbJcC<$M?!VTs8DuhrVc]dpZVM0s8DidkM6+$s3^T)q9eljs604)q:tke
+pY>YcmJd(>o>^gBpX/ZRqn)CGlc/b4s,m>9hpLiIqo8*Pq;)(5qq^l-q#H9Or;_QOr;_EKU&Y,m
+Ts+IrJcCH(rr at WMJcG]Kr;a\6r;`&]mJVV9U]:>on,ND'q]YbNo-(FUZiC%*Z2a\$JcD):rrB,"
+J,~>
+h>dERh>dKTJcC<$li6tbJcC<$M?!TKs!7Ubru(hZr>knUr?1tXq]kbVruLt`o-=8EjWj at Hj":.s
+o;2C>Vb?sgX%WHmm7[6TM?!MSL&_)OJcDGDSH+6 at L&_/QJcC<$rVufr_>jH6PQ1#tJcDMFrrDNf
+Pnp_+rrB>(qZ)3IQiI'cX8d\~>
+h>dERh>dKTJcC<$l2U\^PQ1R]JcG?ArrA,[qtg?ks7cKgrV-3cqt'LTp[IeGs5!;<kO%6mrO_[*
+qrWJ/^&Im/s8ITLJcG`MJcDGDrrAbmrr at WML&_/QJcFF'rrAhor;_EKe,Sg5ci="FJcF@%rrDNf
+p\Od]naleFs7>pQs6]L=s4@;#q;;/#qp=lPs18*2s.')h[K$7,\c;O,JcCl4rrB,"J,~>
+h>dERh>dKTJcC<$l2U\^PQ1R]JcG?ArrA,[s8DuhrVcWbq<7YQoCMA)s60L1pZVM%p"]N0pX/fl
+qo8<arPn=*qqUe_s1A$Qou?sBmEt=@rO_s_gX53?n^6m_q<7\Us6,%6JcG`MJcDGDrrAarrr at WM
+L&_/QJcFF'rrAhor;_EKe,Sh6ci="FJcF@%rrDNfq'#PLnKIE<ruo>srrBJ,rrBV0qZ)3IOoPF]
+X8d\~>
+h>dERh>dKTJcC<$l2U\^PQ1R]JcG?ArrA,[s![mfs![mbruh7\r?1tXq]kbVpEoJVrseQEk:5FB
+rL3>Sq_3Ro]hA5&s%@qCJcG`MJcDGDSH+6 at L&_/QJcFF'rrAhor;_EKe,Sf_ci="FJcF@%rrDNf
+P8=/u[K$7,\c;O,JcCl4rrB,"J,~>
+h>dERh>dKTJcC<$l2U\^PQ1R]JcG?ArrA,[qtg?ks7cKgrV-3cqt'LTp[IeGs5!;<kO%6mrO_[*
+qrWJ/^&Im/s8ITLJcG`MJcDGDrrAbmrr at WML&_/QJcFF'rrAhor;_EKe,Sg5ci="FJcF@%rrDNf
+p\Od]naleFs7>pQs6]L=s4@;#q;;/#qp=lPs18*2s.')h[K$7,\c;O,JcCl4rrB,"J,~>
+h>dERh>dKTJcC<$l2U\^PQ1R]JcG?ArrA,[s8DuhrVcWbq<7YQoCMA)s60L1pZVM%p"]N0pX/fl
+qo8<arPn=*qqUe_s1A$Qou?sBmEt=@rO_s_gX53?n^6m_q<7\Us6,%6JcG`MJcDGDrrAarrr at WM
+L&_/QJcFF'rrAhor;_EKe,Sh6ci="FJcF@%rrDNfq'#PLnKIE<ruo>srrBJ,rrBV0qZ)3IOoPF]
+X8d\~>
+h>dERh>dKTJcC<$l2U\^PQ1R]JcG?ArrA,[s![mfs![mbruh7\r?1tXq]kbVpEoJVrseQEk:5FB
+rL3>Sq_3Ro]hA5&s%@qCJcG`MJcDGDSH+6 at L&_/QJcFF'rrAhor;_EKe,Sf_ci="FJcF@%rrDNf
+P8=/u[K$7,\c;O,JcCl4rrB,"J,~>
+[K$7,JcF'rrrAJer;_EKL&_/QOoPI\rVHQms7cKgqtL'cs7#pWq=jROnale:rU\k4j6?HQos">U
+fDbfUJc>'9qZ-HkJcC<$rr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PTE"iiJcFF'l)2r/rr at WMfDkjN
+nc/Xfs8)coqtg3an+6)=oA]f%q;;/#qp=lPrOVm0rr at WMnc/IdOoPF]JcG]KrrB,"J,~>
+[K$7,JcF'rrrAJer;_EKL&_/QOoPI\s8DuhrVc]dqrm_On+6/+rTO:/p#uA%p"]H.qpG)ls2OZc
+s2OO,qqV/+ou?[Po>^fbmEt=@pYFTOkM?%!pX/Nes60=[q<3D0JcG`MJcDGDrrAb-rr at WML&_/Q
+JcFF'rrA\kr;_EKg&L=8dJs4HJcF@%rrDThru(VUq\JQBobRKL`>8IRJcG9?qZ)cYrr at WMrVult
+X8d\~>
+[K$7,JcF'rrrAJer;_EKL&_/QOoPGSs![mfru(hZr>kbXr>knbq]knZod92RrseoOh(%G:qjR2S
+q_6Vprr at UCm7[<Vq+H;=JcG`MJcDGDSH+6 at L&_/QJcFF'rrA\kr;_EKg&L;adJs4HJcF@%rrDTh
+OV[rsJcG9?qZ)cYrr at WMrVultX8d\~>
+[K$7,JcF'rrrAJer;_EKL&_/QOoPI\rVHQms7cKgqtL'cs7#pWq=jROnale:rU\k4j6?HQos">U
+fDbfUJc>'9qZ-HkJcC<$rr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PTE"iiJcFF'l)2r/rr at WMfDkjN
+nc/Xfs8)coqtg3an+6)=oA]f%q;;/#qp=lPrOVm0rr at WMnc/IdOoPF]JcG]KrrB,"J,~>
+[K$7,JcF'rrrAJer;_EKL&_/QOoPI\s8DuhrVc]dqrm_On+6/+rTO:/p#uA%p"]H.qpG)ls2OZc
+s2OO,qqV/+ou?[Po>^fbmEt=@pYFTOkM?%!pX/Nes60=[q<3D0JcG`MJcDGDrrAb-rr at WML&_/Q
+JcFF'rrA\kr;_EKg&L=8dJs4HJcF@%rrDThru(VUq\JQBobRKL`>8IRJcG9?qZ)cYrr at WMrVult
+X8d\~>
+[K$7,JcF'rrrAJer;_EKL&_/QOoPGSs![mfru(hZr>kbXr>knbq]knZod92RrseoOh(%G:qjR2S
+q_6Vprr at UCm7[<Vq+H;=JcG`MJcDGDSH+6 at L&_/QJcFF'rrA\kr;_EKg&L;adJs4HJcF@%rrDTh
+OV[rsJcG9?qZ)cYrr at WMrVultX8d\~>
+[K$7,JcF'rrrA>ar;`hsrr at WMJcG9?qtg9cs8)ceqtL-es7#jUqtK^OoCN"Ls45rliT^<Qo<A2U
+ec,TSJc>9?qZ-6eO8o4[JcGECrr at WMU&Y,mU&Y,mJcCH(rr at WMJcG9?rrCgRr;_QOl)0+4V>pPq
+nc/@[q=j at LnaQ).q;;/#qp=lPqmua0JcGECqZ)QSrrCCFr;a2(rrB,"J,~>
+[K$7,JcF'rrrA>ar;`hsrr at WMJcG9?s8Duhqu-Kbs60(Ql1=Z)rTO:/oB>l&q<7_'p"]SeoA'Ac
+n,E:@qq_"ds5!:opW!6hs+]pgn](+Th9kEAp#uA%p"fKFoB;88rr at WMp&G$lJcDGDrrAb-rr at WM
+L&_/QJcC<$nc/Uhg].3PL&^E9JcDSHrrDThpEBDLmih]^obRKL`>4%)p&FmhMuWeWci<qDZiC%*
+X8d\~>
+[K$7,JcF'rrrA>ar;`hsrr at WMJcG9?s![mfs![ggruM+aruh=lruh=^s!IOdq]PJWo-=8brtF-:
+i at Y"so;2C>eP#oBJP5T-qZ-4\O8o4[JcGECrr at WMU&UY`JcCH(rr at WMJcG9?rrCgRr;_QOl$S'^
+V>pPqnc+^eJcGECqZ)QSrrCCFr;a2(rrB,"J,~>
+[K$7,JcF'rrrA>ar;`hsrr at WMJcG9?qtg9cs8)ceqtL-es7#jUqtK^OoCN"Ls45rliT^<Qo<A2U
+ec,TSJc>9?qZ-6eO8o4[JcGECrr at WMU&Y,mU&Y,mJcCH(rr at WMJcG9?rrCgRr;_QOl)0+4V>pPq
+nc/@[q=j at LnaQ).q;;/#qp=lPqmua0JcGECqZ)QSrrCCFr;a2(rrB,"J,~>
+[K$7,JcF'rrrA>ar;`hsrr at WMJcG9?s8Duhqu-Kbs60(Ql1=Z)rTO:/oB>l&q<7_'p"]SeoA'Ac
+n,E:@qq_"ds5!:opW!6hs+]pgn](+Th9kEAp#uA%p"fKFoB;88rr at WMp&G$lJcDGDrrAb-rr at WM
+L&_/QJcC<$nc/Uhg].3PL&^E9JcDSHrrDThpEBDLmih]^obRKL`>4%)p&FmhMuWeWci<qDZiC%*
+X8d\~>
+[K$7,JcF'rrrA>ar;`hsrr at WMJcG9?s![mfs![ggruM+aruh=lruh=^s!IOdq]PJWo-=8brtF-:
+i at Y"so;2C>eP#oBJP5T-qZ-4\O8o4[JcGECrr at WMU&UY`JcCH(rr at WMJcG9?rrCgRr;_QOl$S'^
+V>pPqnc+^eJcGECqZ)QSrrCCFr;a2(rrB,"J,~>
+[K$7,JcC<$h>dERYQ+V&JcC<$nc/XUrVHKerVHQcrV-?grUB^UrV,jOp[e4Js45rlj6?HQos">U
+PQ(Nd^]+$/li*%HrrD6^r;`&]rr at WMU&Y,mU&Y,mJcCN*r;_EKJcG3=r;_EKiW&)=JcDSHrrDTh
+s8)coqtg-_n+6)=s5j"7s6]dEq;;/#rQt)Rqmu[.JcGcMq#H!GJcGcMrrB,"J,~>
+[K$7,JcC<$h>dERYQ+V&JcC<$nc/@^rU^'QnbqYBqqV)4s3^H%p"]<*s3^Gns60(0n,E4>qq_"d
+rS at .oq8WBhld>CFmG7H_rJ'Xcl.tgls5!JNqq^f+OoPF]kPtJ\PQ1X_JcDGDrrAb-rr at WML]@;Q
+JcC<$n,N=dJcF^/kP]u3V>pPqnc/D.q%iEBs"*gYr?:hLruoc*JcGcMq#H!GJcGcMrrB,"J,~>
+[K$7,JcC<$h>dERYQ+V&JcC<$nc/VIr@%Uer>kn_r@@mgr?hCdr?1VWpETJ`rtF-:j":.soqhO>
+P=tiS^J"A&lV!B?rrD6^r;`&]rr at WMU&UY`JcCN*r;_EKJcG3=r;_EKiW&(gJcDSHrrDThNu!<H
+s8VlpJcC<$s8W*!X8d\~>
+[K$7,JcC<$h>dERYQ+V&JcC<$nc/XUrVHKerVHQcrV-?grUB^UrV,jOp[e4Js45rlj6?HQos">U
+PQ(Nd^]+$/li*%HrrD6^r;`&]rr at WMU&Y,mU&Y,mJcCN*r;_EKJcG3=r;_EKiW&)=JcDSHrrDTh
+s8)coqtg-_n+6)=s5j"7s6]dEq;;/#rQt)Rqmu[.JcGcMq#H!GJcGcMrrB,"J,~>
+[K$7,JcC<$h>dERYQ+V&JcC<$nc/@^rU^'QnbqYBqqV)4s3^H%p"]<*s3^Gns60(0n,E4>qq_"d
+rS at .oq8WBhld>CFmG7H_rJ'Xcl.tgls5!JNqq^f+OoPF]kPtJ\PQ1X_JcDGDrrAb-rr at WML]@;Q
+JcC<$n,N=dJcF^/kP]u3V>pPqnc/D.q%iEBs"*gYr?:hLruoc*JcGcMq#H!GJcGcMrrB,"J,~>
+[K$7,JcC<$h>dERYQ+V&JcC<$nc/VIr@%Uer>kn_r@@mgr?hCdr?1VWpETJ`rtF-:j":.soqhO>
+P=tiS^J"A&lV!B?rrD6^r;`&]rr at WMU&UY`JcCN*r;_EKJcG3=r;_EKiW&(gJcDSHrrDThNu!<H
+s8VlpJcC<$s8W*!X8d\~>
+[K$7,JcC<$g&M!NJcC<$U&Y#drV-?gs7?-^qsaLSs7c!Oqt'LJs45rlj6?NSo<A2UJc='rqZ,[U
+JcCB&rr at WMU&Y,mU&Y,mJcCN*r;_EKJcG'9r;cHhr;bONrrAbmjem\0WW2nsoDejhs8)coqtg3a
+mITf9pYu5?rSmY1rRC_kn\tC:rNE.!r;bmXq#H!GJcGQGrrB,"J,~>
+[K$7,JcC<$g&M!NJcC<$U&Y/ks7?-drU]LVjn&H+qrn(-oB?5Gq:tZ,s3^Gns60(0n,E:@q;(kd
+qq^qmq8WBhl-]CJl.t+AkM>gpqZ-TdpYGB'JcCB&rr at WMU&Y,mTtgU-JcCN*r;_EKJcG'9r;cHh
+r;bONrrAbmjo'c1WW2nsoDehDq'#VNm32EZq%icLpD3cPd2&Y[r;bmXq#H!GJcGQGrrB,"J,~>
+[K$7,JcC<$g&M!NJcC<$U&Y- at ruM+fr?2+\s!.Ckq^21brugbWq]kb`rtF-:j":4uo;2C>JP4B`
+qZ,YLJcCB&rr at WMU&UY`JcCN*r;_EKJcG'9r;cHhr;bONrrAbmja;XZWW2nsoDadcVuQ\qj8\oT
+JcC<$q>^HpX8d\~>
+[K$7,JcC<$g&M!NJcC<$U&Y#drV-?gs7?-^qsaLSs7c!Oqt'LJs45rlj6?NSo<A2UJc='rqZ,[U
+JcCB&rr at WMU&Y,mU&Y,mJcCN*r;_EKJcG'9r;cHhr;bONrrAbmjem\0WW2nsoDejhs8)coqtg3a
+mITf9pYu5?rSmY1rRC_kn\tC:rNE.!r;bmXq#H!GJcGQGrrB,"J,~>
+[K$7,JcC<$g&M!NJcC<$U&Y/ks7?-drU]LVjn&H+qrn(-oB?5Gq:tZ,s3^Gns60(0n,E:@q;(kd
+qq^qmq8WBhl-]CJl.t+AkM>gpqZ-TdpYGB'JcCB&rr at WMU&Y,mTtgU-JcCN*r;_EKJcG'9r;cHh
+r;bONrrAbmjo'c1WW2nsoDehDq'#VNm32EZq%icLpD3cPd2&Y[r;bmXq#H!GJcGQGrrB,"J,~>
+[K$7,JcC<$g&M!NJcC<$U&Y- at ruM+fr?2+\s!.Ckq^21brugbWq]kb`rtF-:j":4uo;2C>JP4B`
+qZ,YLJcCB&rr at WMU&UY`JcCN*r;_EKJcG'9r;cHhr;bONrrAbmja;XZWW2nsoDadcVuQ\qj8\oT
+JcC<$q>^HpX8d\~>
+[K$7,JcC<$ec5RJaoD5<JcC<$jo>AIs7?9eqtL'\rV-3Yqt'.Cn*U/+h<jCirT!LGrL3WAJc=:#
+qZ,IOJcCB&rr at WMU&Y,mU&Y,mJcCH(rr at WMJcFp5r;b%@rrAhoj/7J.X8i%soDe^dqtg9cs8D]g
+s7cE^mI:/;qr7SArSmY1rRC_kn\tC:rND.ZqZ-Nnrr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$ec5RJaoD5<JcC<$jo>)RrU]LViUd*)qrn(-p#uAGq:tZ,s7>j;s60.2n,E at NrS7/'
+rPnZho?mNVq;(AarPn$VgX53?qrmnWrTNqGrS@#-JcCB&rr at WMU&Y,mTtgU-JcCH(rr at WMJcFp5
+r;b%@rrAhoj8FQ/X8i%soDehDq'#VNmihQZq%icLq%ioPd2%Z?qZ-Nnrr at WMJcG]KrrE*!rrB,"
+J,~>
+[K$7,JcC<$ec5RJaoD5<JcC<$jo>?=s"=="s""$js!.Orr@@alq]kDRmje>Nh(%S>rA=,MrO_qc
+JP4TfqZ,GFJcCB&rr at WMU&UY`JcCH(rr at WMJcFp5r;b%@rrAhoj*ZFXX8i%soDadcMuWYSqu?Zr
+JcC<$rVults8W*!X8d\~>
+[K$7,JcC<$ec5RJaoD5<JcC<$jo>AIs7?9eqtL'\rV-3Yqt'.Cn*U/+h<jCirT!LGrL3WAJc=:#
+qZ,IOJcCB&rr at WMU&Y,mU&Y,mJcCH(rr at WMJcFp5r;b%@rrAhoj/7J.X8i%soDe^dqtg9cs8D]g
+s7cE^mI:/;qr7SArSmY1rRC_kn\tC:rND.ZqZ-Nnrr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$ec5RJaoD5<JcC<$jo>)RrU]LViUd*)qrn(-p#uAGq:tZ,s7>j;s60.2n,E at NrS7/'
+rPnZho?mNVq;(AarPn$VgX53?qrmnWrTNqGrS@#-JcCB&rr at WMU&Y,mTtgU-JcCH(rr at WMJcFp5
+r;b%@rrAhoj8FQ/X8i%soDehDq'#VNmihQZq%icLq%ioPd2%Z?qZ-Nnrr at WMJcG]KrrE*!rrB,"
+J,~>
+[K$7,JcC<$ec5RJaoD5<JcC<$jo>?=s"=="s""$js!.Orr@@alq]kDRmje>Nh(%S>rA=,MrO_qc
+JP4TfqZ,GFJcCB&rr at WMU&UY`JcCH(rr at WMJcFp5r;b%@rrAhoj*ZFXX8i%soDadcMuWYSqu?Zr
+JcC<$rVults8W*!X8d\~>
+[K$7,JcC<$dJs.Fc2[eDJcC<$iW&rHs5a4OrV-9^rV--WrU^'Vn*pAAmHsr)j6cI#lf7T5rL3]C
+Jc=L)q#Ksas0CheJcCN*r;_EKU&Y,mU&Y,mJcCH(rr at WMJcFd1r;_EKn,M at EJcD_LrrDZjs8)co
+qtg9crVcQgq=jp\mI:/;qr7M?rSm_3qpbSkn\t=8s0)I.PQ1L[JcDkPrrC%<rrE*!rrB,"J,~>
+[K$7,JcC<$dJs.Fc2[eDJcC<$iW&ZNs7>XViUd*Jqrn(-p#u;EqqUl.s7>p=qrme0n,E at Ns4m;'
+rPnTfp!NfZpYG/_s2O*Th9kKCq#L*OrU^&eq=FXBn`YQ(L]@;QJcDGDrrAb-rr at WML&_/QJcC<$
+j8]&XJcG3=iVe?-WW2tuoDeV0q%iEBq^hU[pEB>Jq]X?&PQ1L[JcDkPrrC%<rrE*!rrB,"J,~>
+[K$7,JcC<$dJs.Fc2[eDJcC<$iW&p6s$$H8r?2+bs"=7#s"aHur?M=lmjA&dm4/,Lj!sXSlSS4;
+rO`"eJP4flq#KqXrrD4TJcCN*r;_EKU&UY`JcCH(rr at WMJcFd1r;_EKn,M?oJcD_LrrDZjM\_NV
+qZ)3IXoJD$`W,r<s8W*!X8d\~>
+[K$7,JcC<$dJs.Fc2[eDJcC<$iW&rHs5a4OrV-9^rV--WrU^'Vn*pAAmHsr)j6cI#lf7T5rL3]C
+Jc=L)q#Ksas0CheJcCN*r;_EKU&Y,mU&Y,mJcCH(rr at WMJcFd1r;_EKn,M at EJcD_LrrDZjs8)co
+qtg9crVcQgq=jp\mI:/;qr7M?rSm_3qpbSkn\t=8s0)I.PQ1L[JcDkPrrC%<rrE*!rrB,"J,~>
+[K$7,JcC<$dJs.Fc2[eDJcC<$iW&ZNs7>XViUd*Jqrn(-p#u;EqqUl.s7>p=qrme0n,E at Ns4m;'
+rPnTfp!NfZpYG/_s2O*Th9kKCq#L*OrU^&eq=FXBn`YQ(L]@;QJcDGDrrAb-rr at WML&_/QJcC<$
+j8]&XJcG3=iVe?-WW2tuoDeV0q%iEBq^hU[pEB>Jq]X?&PQ1L[JcDkPrrC%<rrE*!rrB,"J,~>
+[K$7,JcC<$dJs.Fc2[eDJcC<$iW&p6s$$H8r?2+bs"=7#s"aHur?M=lmjA&dm4/,Lj!sXSlSS4;
+rO`"eJP4flq#KqXrrD4TJcCN*r;_EKU&UY`JcCH(rr at WMJcFd1r;_EKn,M?oJcD_LrrDZjM\_NV
+qZ)3IXoJD$`W,r<s8W*!X8d\~>
+[K$7,JcC<$c2[_Bh>dKTJcC<$fDkm;s7?9es7?9bs7$!Ys7c?YrU^!ToC2YAmHsr)oBkZ%lf7T5
+rL3WAJc>]KrNb\eqZ,m[s0CheJcFp5r;`\or;_EKU&Y,mU&Y,mJcCH(rr at WMJcG!7r;c`pr;_EK
+oDddIJcD_LrrD`lqu-Egq>L-cp\4(ErT4(=q<e.?qqq;#rQt)Rq7?O.RK*-aJcDSHrrBt:rrB,"
+J,~>
+[K$7,JcC<$c2[_Bh>dKTJcC<$fDjb,iUd$HrTO:/pZVACs4m50s7>p=qrmk2n,E:Ls4m;'s2O`f
+p!NHgmEtstiSE\ErJ(-qn_O'BrS@#-rU^&ep[e at _p#pu,kPtJ\V>pJoJcDGDrrAb-rr at WML&_/Q
+JcC<$l2U\^qu?TpJcG?AiVe?-WW2tup&G%Fq]Y\bmihKXr>,,Nq\JuNd2&/MqZ)3IV>pPq_uK`:
+X8d\~>
+[K$7,JcC<$c2[_Bh>dKTJcC<$fDkk/s"=="s"=<os!I[ss""+)q^27dr at 7Ccq^q1brtFuRjY6!W
+o<A2*q_s(!s%E:jktCmRktD$Vk=^C+kPtJ\V>pJoJcDGDSH+6 at L&_/QJcC<$l2U\^qu?TpJcG?A
+iI$4VWW2tup&BjaRK*-aJcDSHrrBt:rrB,"J,~>
+[K$7,JcC<$c2[_Bh>dKTJcC<$fDkm;s7?9es7?9bs7$!Ys7c?YrU^!ToC2YAmHsr)oBkZ%lf7T5
+rL3WAJc>]KrNb\eqZ,m[s0CheJcFp5r;`\or;_EKU&Y,mU&Y,mJcCH(rr at WMJcG!7r;c`pr;_EK
+oDddIJcD_LrrD`lqu-Egq>L-cp\4(ErT4(=q<e.?qqq;#rQt)Rq7?O.RK*-aJcDSHrrBt:rrB,"
+J,~>
+[K$7,JcC<$c2[_Bh>dKTJcC<$fDjb,iUd$HrTO:/pZVACs4m50s7>p=qrmk2n,E:Ls4m;'s2O`f
+p!NHgmEtstiSE\ErJ(-qn_O'BrS@#-rU^&ep[e at _p#pu,kPtJ\V>pJoJcDGDrrAb-rr at WML&_/Q
+JcC<$l2U\^qu?TpJcG?AiVe?-WW2tup&G%Fq]Y\bmihKXr>,,Nq\JuNd2&/MqZ)3IV>pPq_uK`:
+X8d\~>
+[K$7,JcC<$c2[_Bh>dKTJcC<$fDkk/s"=="s"=<os!I[ss""+)q^27dr at 7Ccq^q1brtFuRjY6!W
+o<A2*q_s(!s%E:jktCmRktD$Vk=^C+kPtJ\V>pJoJcDGDSH+6 at L&_/QJcC<$l2U\^qu?TpJcG?A
+iI$4VWW2tup&BjaRK*-aJcDSHrrBt:rrB,"J,~>
+[K$7,JcC<$aoD;>j8],ZJcERdrrADcs6p!Es7?3`qt'ROs7?3Vp$heAlg=`'rU&A%lf7T5rL3]C
+Jc=j3qZ+\9JcCH(rr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PL&_/QJcGKEhl#$)rr at WMli6n`nc/Uh
+q>^Hps8VuprVH9eq>0dYmI:/;s5NkAqr7M1rRC_ko>UO:s.fUtTE"]eJcC<$iW&oXX8d\~>
+[K$7,JcC<$aoD;>j8],ZJcERdrrADciVh[*qu-QYs3^T)p[eF?p#u;Eq:t`.qqUZ>qrm_/s7>p>
+pX0$)p"f)aqrm(rgX5cOqZ-BHn`]N7p\t'RJcCH(rr at WMU&Y,mTtgU-JcCH(rr at WMg&M'PL&_/Q
+JcGKEhu2+*rr at WMli6n`nc/Uhq>^Hps8W*Pr?;+js"F1!nKI]Zr>,&Lr>,2PeJA/brt_7,q#H!G
+JcF^/rrB,"J,~>
+[K$7,JcC<$aoD;>j8],ZJcERdrrADcs"j[Ds"=6mq_%h&q^2=fr at 7Ieq(:n^rtG>\gG%qMo<A2*
+rAT:#k=b[PcV+:=qb)M?L&_/QJcDGDSH+6 at L&_/QJcFF'rr at cQrr@WMp]',uec5XLJcG'9r;cBf
+rrDlprrE*!N>DNort_7,q#H!GJcF^/rrB,"J,~>
+[K$7,JcC<$aoD;>j8],ZJcERdrrADcs6p!Es7?3`qt'ROs7?3Vp$heAlg=`'rU&A%lf7T5rL3]C
+Jc=j3qZ+\9JcCH(rr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PL&_/QJcGKEhl#$)rr at WMli6n`nc/Uh
+q>^Hps8VuprVH9eq>0dYmI:/;s5NkAqr7M1rRC_ko>UO:s.fUtTE"]eJcC<$iW&oXX8d\~>
+[K$7,JcC<$aoD;>j8],ZJcERdrrADciVh[*qu-QYs3^T)p[eF?p#u;Eq:t`.qqUZ>qrm_/s7>p>
+pX0$)p"f)aqrm(rgX5cOqZ-BHn`]N7p\t'RJcCH(rr at WMU&Y,mTtgU-JcCH(rr at WMg&M'PL&_/Q
+JcGKEhu2+*rr at WMli6n`nc/Uhq>^Hps8W*Pr?;+js"F1!nKI]Zr>,&Lr>,2PeJA/brt_7,q#H!G
+JcF^/rrB,"J,~>
+[K$7,JcC<$aoD;>j8],ZJcERdrrADcs"j[Ds"=6mq_%h&q^2=fr at 7Ieq(:n^rtG>\gG%qMo<A2*
+rAT:#k=b[PcV+:=qb)M?L&_/QJcDGDSH+6 at L&_/QJcFF'rr at cQrr@WMp]',uec5XLJcG'9r;cBf
+rrDlprrE*!N>DNort_7,q#H!GJcF^/rrB,"J,~>
+[K$7,JcF'rrr at WMq>^BnJcDSHrrAJes6TdBrU^'`s5j4Np[J4IqsF.IpZ_)4s5s at -g#hV\o;2DS
+rSYs"s0A?tqZ+D1JcCN*rr at WMU&Y,mU&Y,moDeI`li6JTJcE^hrr at WMg&M'PU&Y,mjo>8ZJcGWI
+hl#$)rr at WMfDkjNp](9Vqu-Kiq>L'aoCq_Cs5j:Mq<e(=qqq;#s3Uf.q:u"sqo/HDs.fUts0AR&
+qZ-Hlrr at WMl2Ub`JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMq>^BnJcDSHrrAJehu2O*p\k->pZVACs8DWSqt'X=pZVS2n,E.Hp"fZ>p"fAi
+rTO(5s,m?;o?mBtj5&J;rS@>Nn_Na!n+65OrTJh4L]@ASJcDGDrrAb=rrDZjo`4=XnGn.?`W,r<
+JcFF'rrAbmrrD0\r;_EKqu>RPec5XLJcF@%rrDfnru(bYq^hb#pFPt\pFQ=[o-+,LpEA'&rrE!5
+VuQVoq>^HpJcG!7rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMq>^BnJcDSHrrAJes#0mGr@\*ms#p<5q_J*ss"4*tpEoVdm4/,iru0QElSS4;
+rO`"ebtJ':ThG7_a%QA3rC__AL]@ASJcDGDSH/9]o`4=XnGn.?`W,r<JcFF'rrAbmrrD0\r;_EK
+qu>Q$ec5XLJcF@%rrDfnrrA#orrE!5VuQVoq>^HpJcG!7rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMq>^BnJcDSHrrAJes6TdBrU^'`s5j4Np[J4IqsF.IpZ_)4s5s at -g#hV\o;2DS
+rSYs"s0A?tqZ+D1JcCN*rr at WMU&Y,mU&Y,moDeI`li6JTJcE^hrr at WMg&M'PU&Y,mjo>8ZJcGWI
+hl#$)rr at WMfDkjNp](9Vqu-Kiq>L'aoCq_Cs5j:Mq<e(=qqq;#s3Uf.q:u"sqo/HDs.fUts0AR&
+qZ-Hlrr at WMl2Ub`JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMq>^BnJcDSHrrAJehu2O*p\k->pZVACs8DWSqt'X=pZVS2n,E.Hp"fZ>p"fAi
+rTO(5s,m?;o?mBtj5&J;rS@>Nn_Na!n+65OrTJh4L]@ASJcDGDrrAb=rrDZjo`4=XnGn.?`W,r<
+JcFF'rrAbmrrD0\r;_EKqu>RPec5XLJcF@%rrDfnru(bYq^hb#pFPt\pFQ=[o-+,LpEA'&rrE!5
+VuQVoq>^HpJcG!7rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMq>^BnJcDSHrrAJes#0mGr@\*ms#p<5q_J*ss"4*tpEoVdm4/,iru0QElSS4;
+rO`"ebtJ':ThG7_a%QA3rC__AL]@ASJcDGDSH/9]o`4=XnGn.?`W,r<JcFF'rrAbmrrD0\r;_EK
+qu>Q$ec5XLJcF@%rrDfnrrA#orrE!5VuQVoq>^HpJcG!7rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMp&Fsjqu?TpJcC<$aoDD*s5*eIs7cQTrU^'Vq=+FKqsF4Kp$)#6q<%_'g#hV\
+oqhPSrSYs"s0AX'q#Iu)Q2gjaJcGECrr at WMU&Y,mU&Y,mp&FO^mJl\VJcE^hrr at WMJcGQGrrCsV
+r;_EKs8V\gs.&JSJcF!prrD$XrrDfnqu-Kip\jpan+ZAAs5j:Mp[.q=qqqA%s69LEq:tqqrPeNB
+s0&R)qZ)3Ig&M'PYQ+V&dJs4HX8d\~>
+[K$7,JcF'rrr at WMp&Fsjqu?TpJcC<$aoC8siUcgBs6'4Ap%/4^pZVACrS7)0rS6l at q<7S/rU]X:
+qpG<)q;)(5s5!@qpZUSliR.H$leV$nnal;MQ2gjaJcGECrr at WMU&Y,mU!N`=p&FO^mJl\VJcE^h
+rr at WMJcGQGrrCsVr;_EKs8UpRJcF!prrD$XrrDfns"FBqs#9m-s"EsppEB2\o-+,Loc_]uXoJ7u
+JcFF'rrB8&rrCIHrrB,"J,~>
+[K$7,JcF'rrr at WMp&Fsjqu?TpJcC<$aoDB%s$cr?s""+4r@\+-rA+<us"4*tq'PbdnLF>gru0QE
+lSS:=qn)ecbtJ':WD!$e_+XT)Q2gjaJcGECrr at WMU&UY`p&FO^mJl\VJcE^hrr at WMJcGQGrrCsV
+r;_EKs8V\<s+fuhJcF!prrD$XrrDfnKbgfjqZ)3Ig&M'PYQ+V&dJs4HX8d\~>
+[K$7,JcF'rrr at WMp&Fsjqu?TpJcC<$aoDD*s5*eIs7cQTrU^'Vq=+FKqsF4Kp$)#6q<%_'g#hV\
+oqhPSrSYs"s0AX'q#Iu)Q2gjaJcGECrr at WMU&Y,mU&Y,mp&FO^mJl\VJcE^hrr at WMJcGQGrrCsV
+r;_EKs8V\gs.&JSJcF!prrD$XrrDfnqu-Kip\jpan+ZAAs5j:Mp[.q=qqqA%s69LEq:tqqrPeNB
+s0&R)qZ)3Ig&M'PYQ+V&dJs4HX8d\~>
+[K$7,JcF'rrr at WMp&Fsjqu?TpJcC<$aoC8siUcgBs6'4Ap%/4^pZVACrS7)0rS6l at q<7S/rU]X:
+qpG<)q;)(5s5!@qpZUSliR.H$leV$nnal;MQ2gjaJcGECrr at WMU&Y,mU!N`=p&FO^mJl\VJcE^h
+rr at WMJcGQGrrCsVr;_EKs8UpRJcF!prrD$XrrDfns"FBqs#9m-s"EsppEB2\o-+,Loc_]uXoJ7u
+JcFF'rrB8&rrCIHrrB,"J,~>
+[K$7,JcF'rrr at WMp&Fsjqu?TpJcC<$aoDB%s$cr?s""+4r@\+-rA+<us"4*tq'PbdnLF>gru0QE
+lSS:=qn)ecbtJ':WD!$e_+XT)Q2gjaJcGECrr at WMU&UY`p&FO^mJl\VJcE^hrr at WMJcGQGrrCsV
+r;_EKs8V\<s+fuhJcF!prrD$XrrDfnKbgfjqZ)3Ig&M'PYQ+V&dJs4HX8d\~>
+[K$7,JcC<$^&S*4JcC<$_uKc'rSISGrT4"Lq=+ at IqsF@On`ff8oB-)!gZIh^q5*hGrS2u'p\t$i
+q>UE"]De)qrrC+>rrB>(rr at WMU&Y,mU&Y,mp](0lp](*jn,N=dJcE@^r;_EKJcF-tr;_KMo;DVY
+mAGO8ci="FhuE]Vp](-hs8)Eeq>0RSmI9l;qr7S3s4%#3rT<q2qp>A^pU^C.s0B-6q#H!GJcG]K
+rrCOJrrB,"J,~>
+[K$7,JcC<$^&S*4JcC<$_uJWmiUca at s6'4Ap%/.\q<7SErS7#.n,E"Dq;(r>p"fSoq<7M-pX0$4
+pZUSlp!NC&qZ-H`s/5\aoA/s#nal;MQ2gjaa8c/>Z2ah(JcDGDrrAb=rrDfnr;cTlqZ-*br;_EK
+]Dqg0JcC<$dJs.FKE'd+JcF'rrrCsVrrDfns"jZus#9s/r at dans#9`sodo\Xs"*gdcPF"iq#H!G
+JcG]KrrCOJrrB,"J,~>
+[K$7,JcC<$^&S*4JcC<$_uK`prC-`=rB:*3q_J0ur at Rmrr?h%dpF>bgru0WGlSSFApW!.mJP5`1
+qZ-FbrrBr0q,Wd\rrC+>rrB>(rr at WMU&UY`p](0lp](*jn,N=dJcE@^r;_EKJcF-tr;_KMo6gRn
+m<jKbci="FhuE]Vp]#j]\,Z7(JcC<$rVulte,TFJX8d\~>
+[K$7,JcC<$^&S*4JcC<$_uKc'rSISGrT4"Lq=+ at IqsF@On`ff8oB-)!gZIh^q5*hGrS2u'p\t$i
+q>UE"]De)qrrC+>rrB>(rr at WMU&Y,mU&Y,mp](0lp](*jn,N=dJcE@^r;_EKJcF-tr;_KMo;DVY
+mAGO8ci="FhuE]Vp](-hs8)Eeq>0RSmI9l;qr7S3s4%#3rT<q2qp>A^pU^C.s0B-6q#H!GJcG]K
+rrCOJrrB,"J,~>
+[K$7,JcC<$^&S*4JcC<$_uJWmiUca at s6'4Ap%/.\q<7SErS7#.n,E"Dq;(r>p"fSoq<7M-pX0$4
+pZUSlp!NC&qZ-H`s/5\aoA/s#nal;MQ2gjaa8c/>Z2ah(JcDGDrrAb=rrDfnr;cTlqZ-*br;_EK
+]Dqg0JcC<$dJs.FKE'd+JcF'rrrCsVrrDfns"jZus#9s/r at dans#9`sodo\Xs"*gdcPF"iq#H!G
+JcG]KrrCOJrrB,"J,~>
+[K$7,JcC<$^&S*4JcC<$_uK`prC-`=rB:*3q_J0ur at Rmrr?h%dpF>bgru0WGlSSFApW!.mJP5`1
+qZ-FbrrBr0q,Wd\rrC+>rrB>(rr at WMU&UY`p](0lp](*jn,N=dJcE@^r;_EKJcF-tr;_KMo6gRn
+m<jKbci="FhuE]Vp]#j]\,Z7(JcC<$rVulte,TFJX8d\~>
+[K$7,JcC<$`W,r<q>^BnJcC<$a8c1cs4@;Bs5*_9s7?9XqsaRKqr7Y;s7#LArU'"7s3KH^s5X"7
+oA&krqqQc%rVlZonc&Qo^&ET_fDkjNZiC%*JcDGDrrAbmrrDfnr;cNjr;c<dr;_EK]Dqg0JcCT,
+r;at>r;bsZrrAnqo;DVYmAGO8XoJ>"q>]dZq>0LQmI9r=qr7S3q<@qApY>SkpU^C1^&Rs0fDkjN
+qu?ZrJcC<$q>^HpX8d\~>
+[K$7,JcC<$`W,r<q>^BnJcC<$a8aWemIU#Ls6'F\rTNqGqu-?Sp%._;nc&.Dqq_)>p"fYqp#u/+
+q9f04p#tGlrR(0,qZ-0Xs/5P]rVlcOn`]N7nc"+>fDkjNZiC%*JcDGDrrAb=rrDfnr;cNjr;c<d
+r;_EK]Dqg0JcCT,r;at>r;bsZrrAnqh>Mp)XoJ>"q>^INs![n+s"+%#odp&#q]YP^o-+,boc_Ws
+^&Rs0fDkjNqu?ZrJcC<$q>^HpX8d\~>
+[K$7,JcC<$`W,r<q>^BnJcC<$a8c0<s%EAEs$clLs"==/q_J+%q`t0Es"a=.q(;Opm4ePYgG&Xa
+q`"+-n](GeJP5r7qZ-.ZrrC#2q,W(HfDkjNZiC%*JcDGDSH/Ear;cNjr;c<dr;_EK]Dqg0JcCT,
+r;at>r;bsZrrAnqo6gRnm<jKbXoJ>"q>Z!]^&Rs0fDkjNqu?ZrJcC<$q>^HpX8d\~>
+[K$7,JcC<$`W,r<q>^BnJcC<$a8c1cs4@;Bs5*_9s7?9XqsaRKqr7Y;s7#LArU'"7s3KH^s5X"7
+oA&krqqQc%rVlZonc&Qo^&ET_fDkjNZiC%*JcDGDrrAbmrrDfnr;cNjr;c<dr;_EK]Dqg0JcCT,
+r;at>r;bsZrrAnqo;DVYmAGO8XoJ>"q>]dZq>0LQmI9r=qr7S3q<@qApY>SkpU^C1^&Rs0fDkjN
+qu?ZrJcC<$q>^HpX8d\~>
+[K$7,JcC<$`W,r<q>^BnJcC<$a8aWemIU#Ls6'F\rTNqGqu-?Sp%._;nc&.Dqq_)>p"fYqp#u/+
+q9f04p#tGlrR(0,qZ-0Xs/5P]rVlcOn`]N7nc"+>fDkjNZiC%*JcDGDrrAb=rrDfnr;cNjr;c<d
+r;_EK]Dqg0JcCT,r;at>r;bsZrrAnqh>Mp)XoJ>"q>^INs![n+s"+%#odp&#q]YP^o-+,boc_Ws
+^&Rs0fDkjNqu?ZrJcC<$q>^HpX8d\~>
+[K$7,JcC<$`W,r<q>^BnJcC<$a8c0<s%EAEs$clLs"==/q_J+%q`t0Es"a=.q(;Opm4ePYgG&Xa
+q`"+-n](GeJP5r7qZ-.ZrrC#2q,W(HfDkjNZiC%*JcDGDSH/Ear;cNjr;c<dr;_EK]Dqg0JcCT,
+r;at>r;bsZrrAnqo6gRnm<jKbXoJ>"q>Z!]^&Rs0fDkjNqu?ZrJcC<$q>^HpX8d\~>
+[K$7,JcC<$a8c/>oDeahkPtP^JcC<$l2UeBqqh;5s7?3VrUBjOrSRM3s7#LAs6](5s3L#nl/;0g
+nW*S'Jc>NHU],iEM?!SUJcDGDrrAbmrrD6^r;c<dr;_EK\c;[0JcC<$aoDA at kPtP^VuQ:brLE>S
+JcFX-r;b=Hr;cZnnbrFLs8DcimJ$YPn*p/?qr7Y5pZ_Y=q:temq7?U>s0'??qZ+tBrrE#trr at WM
+JcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$a8c/>oDeahkPtP^JcC<$l2T$,nalGPs6'@Zs60.Iq>L9UoCMM9nc&.DrS at 5>oA0*'
+p"fSoqt'LEjk]IuqZ,IDp&=RHnal;MJcCT,rr at WMU&Y,mU!N`=kPtJ\n,N=dJcE:\rr at WMJcEjl
+rrD6^rrAtsg\l^'huEWTe,T at Hq>^IJrAXa-q_.t#r>,8]q`"HsnLX>Vs"*gdq%ioPgD7^,qZ+tB
+rrE#trr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$a8c/>oDeahkPtP^JcC<$l2UcLqaLHHs"=7-rA+C)rC$NJs"a+(s"47#kqN,UlS.Q^
+o/cE]rAoL&qZ*Ziq,W(HM?!SUJcDGDSH.jQr;c<dr;_EK\c;[0JcC<$aoDA at kPtP^VuQ:7rJ0ih
+JcFX-r;b=Hr;cZnnJ;''Pnq:;qZ+tBrrE#trr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$a8c/>oDeahkPtP^JcC<$l2UeBqqh;5s7?3VrUBjOrSRM3s7#LAs6](5s3L#nl/;0g
+nW*S'Jc>NHU],iEM?!SUJcDGDrrAbmrrD6^r;c<dr;_EK\c;[0JcC<$aoDA at kPtP^VuQ:brLE>S
+JcFX-r;b=Hr;cZnnbrFLs8DcimJ$YPn*p/?qr7Y5pZ_Y=q:temq7?U>s0'??qZ+tBrrE#trr at WM
+JcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$a8c/>oDeahkPtP^JcC<$l2T$,nalGPs6'@Zs60.Iq>L9UoCMM9nc&.DrS at 5>oA0*'
+p"fSoqt'LEjk]IuqZ,IDp&=RHnal;MJcCT,rr at WMU&Y,mU!N`=kPtJ\n,N=dJcE:\rr at WMJcEjl
+rrD6^rrAtsg\l^'huEWTe,T at Hq>^IJrAXa-q_.t#r>,8]q`"HsnLX>Vs"*gdq%ioPgD7^,qZ+tB
+rrE#trr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$a8c/>oDeahkPtP^JcC<$l2UcLqaLHHs"=7-rA+C)rC$NJs"a+(s"47#kqN,UlS.Q^
+o/cE]rAoL&qZ*Ziq,W(HM?!SUJcDGDSH.jQr;c<dr;_EK\c;[0JcC<$aoDA at kPtP^VuQ:7rJ0ih
+JcFX-r;b=Hr;cZnnJ;''Pnq:;qZ+tBrrE#trr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$ZiBt(li6tbJcC<$l2Ue0s4@;Bs4 at 52rU'RQs4$r'rSmk4n*0l4n)jSprT=.+pZCAk
+oA&krrS32-q#J,-s0C\aJcCZ.r;_EKU]9ue[K#gul2U\^mJm1ds8VfnJcEXfrr at WMQiI'cZiBt(
+O8naJrLE8QJcDkPrrDlpmJZeUmJ$YPmI:#?qr7YCpZ_Y=q:t_kqmua>s/O9BqZ)3IJcEF`rrE*!
+rrB,"J,~>
+[K$7,JcC<$ZiBt(li6tbJcC<$l2Sm(p[e:\rTF.Xs6'@Zs604Kp\k'SoCMS;nc&Ren`^#/p[e(6
+s7>pIp"fYqp[e.CleV1(q#K%<mJd"Hs/5J[nc"+>MuW_UJcDMFo`2DGo)S%Tr;c6brrE*!pAfdE
+_uK`:JcD):rrBD*r;_oYg&6L%XoJD$q>^INrAXO*odou!r?:\^pEBJdoca2Jq]XW.bQ%G>JcC<$
+^&S*4s8W*!X8d\~>
+[K$7,JcC<$ZiBt(li6tbJcC<$l2Uc^s%EAEs%E;RrAFO/s%iM[rBUBQml:>3s#fg*r>PVgru1Vc
+h`(-fn](MgLJ.FC`Cp53qb-qhlV%%SJcCZ.r;_EKU]6e`l2U\^mJm1ds8VfnJcEXfrr at WMQiI'c
+ZiBt(O8n`trJ0cfJcDkPrrDlpJJS8$bQ%G>JcC<$^&S*4s8W*!X8d\~>
+[K$7,JcC<$ZiBt(li6tbJcC<$l2Ue0s4@;Bs4 at 52rU'RQs4$r'rSmk4n*0l4n)jSprT=.+pZCAk
+oA&krrS32-q#J,-s0C\aJcCZ.r;_EKU]9ue[K#gul2U\^mJm1ds8VfnJcEXfrr at WMQiI'cZiBt(
+O8naJrLE8QJcDkPrrDlpmJZeUmJ$YPmI:#?qr7YCpZ_Y=q:t_kqmua>s/O9BqZ)3IJcEF`rrE*!
+rrB,"J,~>
+[K$7,JcC<$ZiBt(li6tbJcC<$l2Sm(p[e:\rTF.Xs6'@Zs604Kp\k'SoCMS;nc&Ren`^#/p[e(6
+s7>pIp"fYqp[e.CleV1(q#K%<mJd"Hs/5J[nc"+>MuW_UJcDMFo`2DGo)S%Tr;c6brrE*!pAfdE
+_uK`:JcD):rrBD*r;_oYg&6L%XoJD$q>^INrAXO*odou!r?:\^pEBJdoca2Jq]XW.bQ%G>JcC<$
+^&S*4s8W*!X8d\~>
+[K$7,JcC<$ZiBt(li6tbJcC<$l2Uc^s%EAEs%E;RrAFO/s%iM[rBUBQml:>3s#fg*r>PVgru1Vc
+h`(-fn](MgLJ.FC`Cp53qb-qhlV%%SJcCZ.r;_EKU]6e`l2U\^mJm1ds8VfnJcEXfrr at WMQiI'c
+ZiBt(O8n`trJ0cfJcDkPrrDlpJJS8$bQ%G>JcC<$^&S*4s8W*!X8d\~>
+[K$7,JcC<$fDkdLh>dERJcC<$fDkm0s3pqus4[M7s5O"Es4[M&qqqA3s4mY3oBH56rT=.8lfS5n
+fAQ2SnW*S'NW/eTci3sMl2L^gj8OW0bQ%SB_uKZ8JcDGDrrAbmrrDNfq#Kg^mf7q=`W,r<JcD/<
+rrB2$r;`&]o;DJUmAGO8n,NCf_>jN8q>]j\q>0FOrU]LIq<e.?s6]LDs5s.4p!ETIs1SH<dJs(D
+JcC<$ec5RJj8],ZX8d\~>
+[K$7,JcC<$fDkdLh>dERJcC<$fDihgq=F4Vs6':Xp[e(VoCMqZp#trFrVc?OoCMe6rU]^Gp"f<4
+pZV)%p%/%\ch%1Bl2L^\oCMMOJcEpnrrBt:r;_EKU&Y,mU!N`=n,N1`mJlVTJcE^hrr at WMRK*9e
+XoJ>"PQ0>7JcG3=rrBn8rrDlps$$HAs"jO*o.9\rrupn`pEBJdo-+&Jq]XW.dJs(DJcC<$ec5RJ
+j8],ZX8d\~>
+[K$7,JcC<$fDkdLh>dERJcC<$fDkk:s%rYes%*/Qs$6N?s%*/cqaCBJs%!)Wo/Q\5rB1*MlS/>W
+rAXaCh)Fjbn](MgND'-KcV+9<nOr[YrrD at Xq,W(HbQ%SB_uKZ8JcDGDSH/-Yq#Kg^mf7q=`W,r<
+JcD/<rrB2$r;`&]o6gFjm<jKbn,NCf_>jN8q>Z!]rta#^qZ)3IJcF:#r;bmXrrB,"J,~>
+[K$7,JcC<$fDkdLh>dERJcC<$fDkm0s3pqus4[M7s5O"Es4[M&qqqA3s4mY3oBH56rT=.8lfS5n
+fAQ2SnW*S'NW/eTci3sMl2L^gj8OW0bQ%SB_uKZ8JcDGDrrAbmrrDNfq#Kg^mf7q=`W,r<JcD/<
+rrB2$r;`&]o;DJUmAGO8n,NCf_>jN8q>]j\q>0FOrU]LIq<e.?s6]LDs5s.4p!ETIs1SH<dJs(D
+JcC<$ec5RJj8],ZX8d\~>
+[K$7,JcC<$fDkdLh>dERJcC<$fDihgq=F4Vs6':Xp[e(VoCMqZp#trFrVc?OoCMe6rU]^Gp"f<4
+pZV)%p%/%\ch%1Bl2L^\oCMMOJcEpnrrBt:r;_EKU&Y,mU!N`=n,N1`mJlVTJcE^hrr at WMRK*9e
+XoJ>"PQ0>7JcG3=rrBn8rrDlps$$HAs"jO*o.9\rrupn`pEBJdo-+&Jq]XW.dJs(DJcC<$ec5RJ
+j8],ZX8d\~>
+[K$7,JcC<$fDkdLh>dERJcC<$fDkk:s%rYes%*/Qs$6N?s%*/cqaCBJs%!)Wo/Q\5rB1*MlS/>W
+rAXaCh)Fjbn](MgND'-KcV+9<nOr[YrrD at Xq,W(HbQ%SB_uKZ8JcDGDSH/-Yq#Kg^mf7q=`W,r<
+JcD/<rrB2$r;`&]o6gFjm<jKbn,NCf_>jN8q>Z!]rta#^qZ)3IJcF:#r;bmXrrB,"J,~>
+[K$7,JcC<$X8i+uJcELbrrA\ks3L_ss5*e-s5j:<rU'X=rRC`%s5O"4p$);4rT=.8s2FTlqr%Lr
+pYc(nj5BOanW*S'OoG4Xa8Z+Eao6kkbQ%SB_uK`:JcDGDrrAbmrrDNfpAj[^r;cTlqZ)3Ia8c/>
+JcFF'rr at WMl2U\^QiHZTqjd&Og&M'PS,`Kg^]4<6qu?!\q>0LQq=F(EqsFFCrU':Bs5s.4p!ETI
+s1SH<fDk^JJcC<$XoJD$X8d\~>
+[K$7,JcC<$X8i+uJcELbrrA\k`Voi"qt'FXs6'4Vs7?9GrU]^\oCMqZpZV/HrVccqoB>f;q;)#@
+oB?#+rVlQ_p#u#'q=FI`a7K>:jo4rEnc"+>bQ%SB_uK`:JcDGDrrAb=rrDNfpAj[^r;cTlqZ)3I
+a8c/>JcFF'rr at WMl2U\^QiGb;g&M'PS,`Kg^]4<6qu?[Ps$$HAs"jO*odohrmk"2Vq^hC`rtbDR
+ithXpq%hT^qZ)3IJcDkPrrB,"J,~>
+[K$7,JcC<$X8i+uJcELbrrA\ks&8qjs$cr\s#pBMrAFUGrD3;Ys$6NQof2b3rB1*MnM'i!ruh8!
+rBgNCrug>\o/cE]rAp'6qZ+Z0rrDX`o2b6Oq,W(HbQ%SB_uK`:JcDGDSH/-YpAj[^r;cTlqZ)3I
+a8c/>JcFF'rr at WMl2U\^QiHZ)qhOQdg&M'PS,`Kg^]4<6qu;EerrDj1fDk^JJcC<$XoJD$X8d\~>
+[K$7,JcC<$X8i+uJcELbrrA\ks3L_ss5*e-s5j:<rU'X=rRC`%s5O"4p$);4rT=.8s2FTlqr%Lr
+pYc(nj5BOanW*S'OoG4Xa8Z+Eao6kkbQ%SB_uK`:JcDGDrrAbmrrDNfpAj[^r;cTlqZ)3Ia8c/>
+JcFF'rr at WMl2U\^QiHZTqjd&Og&M'PS,`Kg^]4<6qu?!\q>0LQq=F(EqsFFCrU':Bs5s.4p!ETI
+s1SH<fDk^JJcC<$XoJD$X8d\~>
+[K$7,JcC<$X8i+uJcELbrrA\k`Voi"qt'FXs6'4Vs7?9GrU]^\oCMqZpZV/HrVccqoB>f;q;)#@
+oB?#+rVlQ_p#u#'q=FI`a7K>:jo4rEnc"+>bQ%SB_uK`:JcDGDrrAb=rrDNfpAj[^r;cTlqZ)3I
+a8c/>JcFF'rr at WMl2U\^QiGb;g&M'PS,`Kg^]4<6qu?[Ps$$HAs"jO*odohrmk"2Vq^hC`rtbDR
+ithXpq%hT^qZ)3IJcDkPrrB,"J,~>
+[K$7,JcC<$X8i+uJcELbrrA\ks&8qjs$cr\s#pBMrAFUGrD3;Ys$6NQof2b3rB1*MnM'i!ruh8!
+rBgNCrug>\o/cE]rAp'6qZ+Z0rrDX`o2b6Oq,W(HbQ%SB_uK`:JcDGDSH/-YpAj[^r;cTlqZ)3I
+a8c/>JcFF'rr at WMl2U\^QiHZ)qhOQdg&M'PS,`Kg^]4<6qu;EerrDj1fDk^JJcC<$XoJD$X8d\~>
+[K$7,JcF'rrrAPgr;ah:r;_EK_uK`:U&Y/Hs31Gns4[M7s53kDs31AirSRM-s53Y:pZ)/5s2Frl
+qr[S0s2jrls2jH^oA'B!s+Bofs4,$ds0C8Uq#I&ds7>RUJcCZ.rr at WMU&Y,mU&Y,ml2UV\iW&iV
+JcEdjrr at WMg&M'Pe,T at HQiI!aS,`)Xqjd&Og&M'PJcF@%rrDrrli$YUrV-?MoCr(Pn*or9pZ__?
+pY>Miqmua>s/OuVqZ*Vqr;_]Srr at WMrVultX8d\~>
+[K$7,JcF'rrrAPgr;ah:r;_EK_uK`:U&W+1s6'@Zs7>dZs6'4VrU^'Enbr4Rq>L-Qnc&RerVlKR
+rVlK]qq_)>p#uA1s,m3Xp[e(ApYGf>q#J8&h>[<Cnc"+>MuWeWJcDGDrrAbMrrD<`qZ,UTr;_EK
+a8c/>JcFF'rrCOJr;`2ar;`>eg&9V(rr at WMfDkjNqu?[[s#9sAs"jO*odontruqD$mk">Zq(1hT
+ithXppD2ZdqZ*Vqr;_]Srr at WMrVultX8d\~>
+[K$7,JcF'rrrAPgr;ah:r;_EK_uK`:U&Y-`s&T(ks%*/Qs$ZlEs&T"mrC$NQs$ZZBpHSO;s"OCA
+q_7\%ruh>#qa16?rugtnrBg6;o/cn8s3^Gos$=OqrrCYDq#IZmmoKHto1Sm[JcCZ.rr at WMU&UY`
+l2UV\iW&iVJcEdjrr at WMg&M'Pe,T at HQiI!aS,`)-qhOQdg&M'PJcF@%rrDrrh\Q4lWtt^8pD2Zd
+qZ*Vqr;_]Srr at WMrVultX8d\~>
+[K$7,JcF'rrrAPgr;ah:r;_EK_uK`:U&Y/Hs31Gns4[M7s53kDs31AirSRM-s53Y:pZ)/5s2Frl
+qr[S0s2jrls2jH^oA'B!s+Bofs4,$ds0C8Uq#I&ds7>RUJcCZ.rr at WMU&Y,mU&Y,ml2UV\iW&iV
+JcEdjrr at WMg&M'Pe,T at HQiI!aS,`)Xqjd&Og&M'PJcF@%rrDrrli$YUrV-?MoCr(Pn*or9pZ__?
+pY>Miqmua>s/OuVqZ*Vqr;_]Srr at WMrVultX8d\~>
+[K$7,JcF'rrrAPgr;ah:r;_EK_uK`:U&W+1s6'@Zs7>dZs6'4VrU^'Enbr4Rq>L-Qnc&RerVlKR
+rVlK]qq_)>p#uA1s,m3Xp[e(ApYGf>q#J8&h>[<Cnc"+>MuWeWJcDGDrrAbMrrD<`qZ,UTr;_EK
+a8c/>JcFF'rrCOJr;`2ar;`>eg&9V(rr at WMfDkjNqu?[[s#9sAs"jO*odontruqD$mk">Zq(1hT
+ithXppD2ZdqZ*Vqr;_]Srr at WMrVultX8d\~>
+[K$7,JcF'rrrAPgr;ah:r;_EK_uK`:U&Y-`s&T(ks%*/Qs$ZlEs&T"mrC$NQs$ZZBpHSO;s"OCA
+q_7\%ruh>#qa16?rugtnrBg6;o/cn8s3^Gos$=OqrrCYDq#IZmmoKHto1Sm[JcCZ.rr at WMU&UY`
+l2UV\iW&iVJcEdjrr at WMg&M'Pe,T at HQiI!aS,`)-qhOQdg&M'PJcF@%rrDrrh\Q4lWtt^8pD2Zd
+qZ*Vqr;_]Srr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMfDkdLJcC<$jo>A,s4@:es4@;4s53kDs31MarRCf's4I5(s53_<p#H#5q:tr!
+oAKYjhr*nTs+BofrRJgbs0CJ[qZ)u^q=F.URK*9eJcGECrr at WMU&Y,mU&Y,mkPtJ\iW&iVJcEdj
+rr at WMJcE4Zr;`PknYc8SmAGO8r;a,&rrDrrmJZeUqtL-Kp%S4PnaQ/;pZ__?pY>Aes180Bs0Chf
+q#H!GVuQbsJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMfDkdLJcC<$jo;I]s6'.TrU]RXp[e4ZqrmSLrVcWmpZVSToCN"<p[e(ArS at LZ
+qu69[pZVM1s8Mlq\b!l at RK*9eJcGECrr at WMU&Y,mU#5kMkPtJ\iW&iVJcEdjrr at WMJcE4Zr;`Pk
+fDU:#r;a,&rrDrrs$$HAs$$H=q_.UnpG`*qmk">Zq(1bRfbWcNq#H!GVuQbsJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMfDkdLJcC<$jo>?Zs%EB$s%EATs$ZlEs&T/'rD3A[s%</Ys$Z`DofrC;q+(BX
+o/H[ls#9a?nMgD5rAX+-s3^GorB\=orrCkJqZ*NenQ,Hpq+LNaRK*9eJcGECrr at WMU&UY`kPtJ\
+iW&iVJcEdjrr at WMJcE4Zr;`PknU14hm<jKbr;a,&rrDrrh%p"jTbchkq#H!GVuQbsJcG]KrrB,"
+J,~>
+[K$7,JcF'rrr at WMfDkdLJcC<$jo>A,s4@:es4@;4s53kDs31MarRCf's4I5(s53_<p#H#5q:tr!
+oAKYjhr*nTs+BofrRJgbs0CJ[qZ)u^q=F.URK*9eJcGECrr at WMU&Y,mU&Y,mkPtJ\iW&iVJcEdj
+rr at WMJcE4Zr;`PknYc8SmAGO8r;a,&rrDrrmJZeUqtL-Kp%S4PnaQ/;pZ__?pY>Aes180Bs0Chf
+q#H!GVuQbsJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMfDkdLJcC<$jo;I]s6'.TrU]RXp[e4ZqrmSLrVcWmpZVSToCN"<p[e(ArS at LZ
+qu69[pZVM1s8Mlq\b!l at RK*9eJcGECrr at WMU&Y,mU#5kMkPtJ\iW&iVJcEdjrr at WMJcE4Zr;`Pk
+fDU:#r;a,&rrDrrs$$HAs$$H=q_.UnpG`*qmk">Zq(1bRfbWcNq#H!GVuQbsJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMfDkdLJcC<$jo>?Zs%EB$s%EATs$ZlEs&T/'rD3A[s%</Ys$Z`DofrC;q+(BX
+o/H[ls#9a?nMgD5rAX+-s3^GorB\=orrCkJqZ*NenQ,Hpq+LNaRK*9eJcGECrr at WMU&UY`kPtJ\
+iW&iVJcEdjrr at WMJcE4Zr;`PknU14hm<jKbr;a,&rrDrrh%p"jTbchkq#H!GVuQbsJcG]KrrB,"
+J,~>
+[K$7,JcC<$TE"iiJcC<$li7"'s31MZrR_#*s31M^qpbZ's4I5(s53e>qr at Y!rT!e;s4mA!oAKYj
+mGQmTnTb)aU&OohV>gM#n,DqMp&:H\rrAtsrrCIHrr at WMU&Y,mU&Y,mp](0lp&FsjiW&iVJcEjl
+r;_EKJcE(VrrAhonYc2QmAGO8YQ+V&rVu3^q>0FOp[dkCp$MG:s5s.4o?dHIrOqUuqZ)3IJcDeN
+rrDThrrB,"J,~>
+[K$7,JcC<$TE"iiJcC<$li5H4rTE#8s6'.Ts7>XVqt'R\qrmSLs8Dcmq<7_TkO\B1s5!GKp%.k?
+qZ-To[Ia(js0C2SS,`KgVuQbsdJs4HJcDGDrrAbMrrDfnr;cNjr;bgVr;_EKaoD;>JcC<$ZiC%*
+U]8mCJcDqRrrE#ts"jU;s"jO*o.9Pnmk"D\pFQ%^s"*gdfbWuTqZ)3IJcDeNrrDThrrB,"J,~>
+[K$7,JcC<$TE"iiJcC<$li6uks&T//rCd)Ws&T/*qbR5[s%</Ys$ZfFq`k$-rBL0As$ufXo/H[l
+s#9a?pG_t5qap*;n_O42ThG7_V+^ggs%Dl_o4%Ykq,X!brrAtsrrCIHrr at WMU&UY`p](0lp&Fsj
+iW&iVJcEjlr;_EKJcE(VrrAhonU1.fm<jKbYQ+V&rVqEaq%iAtqZ)3IJcDeNrrDThrrB,"J,~>
+[K$7,JcC<$TE"iiJcC<$li7"'s31MZrR_#*s31M^qpbZ's4I5(s53e>qr at Y!rT!e;s4mA!oAKYj
+mGQmTnTb)aU&OohV>gM#n,DqMp&:H\rrAtsrrCIHrr at WMU&Y,mU&Y,mp](0lp&FsjiW&iVJcEjl
+r;_EKJcE(VrrAhonYc2QmAGO8YQ+V&rVu3^q>0FOp[dkCp$MG:s5s.4o?dHIrOqUuqZ)3IJcDeN
+rrDThrrB,"J,~>
+[K$7,JcC<$TE"iiJcC<$li5H4rTE#8s6'.Ts7>XVqt'R\qrmSLs8Dcmq<7_TkO\B1s5!GKp%.k?
+qZ-To[Ia(js0C2SS,`KgVuQbsdJs4HJcDGDrrAbMrrDfnr;cNjr;bgVr;_EKaoD;>JcC<$ZiC%*
+U]8mCJcDqRrrE#ts"jU;s"jO*o.9Pnmk"D\pFQ%^s"*gdfbWuTqZ)3IJcDeNrrDThrrB,"J,~>
+[K$7,JcC<$TE"iiJcC<$li6uks&T//rCd)Ws&T/*qbR5[s%</Ys$ZfFq`k$-rBL0As$ufXo/H[l
+s#9a?pG_t5qap*;n_O42ThG7_V+^ggs%Dl_o4%Ykq,X!brrAtsrrCIHrr at WMU&UY`p](0lp&Fsj
+iW&iVJcEjlr;_EKJcE(VrrAhonU1.fm<jKbYQ+V&rVqEaq%iAtqZ)3IJcDeNrrDThrrB,"J,~>
+[K$7,JcC<$p](0lWW2nsJcC<$nc/X:s3LY[s4@;#s53k#rPeZ`rRh#&s53;*rT=.<o@<Nls2k)p
+n(I`Xl.Q)ho6C;cV>g>lSc8Ypn,DkKs60 at ZJcEF`rrCOJrr at WMU&Y,mU&Y,mp](0lp&Fsjnc/Of
+p&FsjJcEjlr;_EK\c;U.JcG]KqZ*Vqo;D>QmAGO8Z2ab&rVtdRnb;YHnaQ/;pZ__?q:tMes180B
+oDe[fScA]iJcCT,rrDZjrrB,"J,~>
+[K$7,JcC<$p](0lWW2nsJcC<$nc/XgX8W(]kPbGDrVcWbp&4pSnc&Rep\t'Rq>TLIpZV5Jp[e:G
+qZ-Bi[Ia"hs0C8UJcEF`rrCOJrr at WMU&Y,mU#5kMp](0lp&Fsjnc/Ofp&FsjJcEjlr;_EK\c;U.
+JcG]KqZ*Vqebt(!Z2ab&rVuaYs"jO*q^hb#r at IItmk"J^odon^r at I[dfbX2ZqZ*2err at WMM?!SU
+oDegjX8d\~>
+[K$7,JcC<$p](0lWW2nsJcC<$nc/WAs&8l*s%EAfs$ZlfrE]:rrCZrWs$Z<?rB1*Ho1em:ruh,(
+rCQZGs%35GrCQB?s3^Gos$<JSqZ*0[rrDLgnRDN8qc8:J^&S*4e,TFJJcDGDSH/Ear;cNjr;cBf
+r;cNjr;_EKaoD;>JcE:\r;_EKrVu`pWW2R;pP8-`JcE"Tr;cfrJJS%soDe[fScA]iJcCT,rrDZj
+rrB,"J,~>
+[K$7,JcC<$p](0lWW2nsJcC<$nc/X:s3LY[s4@;#s53k#rPeZ`rRh#&s53;*rT=.<o@<Nls2k)p
+n(I`Xl.Q)ho6C;cV>g>lSc8Ypn,DkKs60 at ZJcEF`rrCOJrr at WMU&Y,mU&Y,mp](0lp&Fsjnc/Of
+p&FsjJcEjlr;_EK\c;U.JcG]KqZ*Vqo;D>QmAGO8Z2ab&rVtdRnb;YHnaQ/;pZ__?q:tMes180B
+oDe[fScA]iJcCT,rrDZjrrB,"J,~>
+[K$7,JcC<$p](0lWW2nsJcC<$nc/XgX8W(]kPbGDrVcWbp&4pSnc&Rep\t'Rq>TLIpZV5Jp[e:G
+qZ-Bi[Ia"hs0C8UJcEF`rrCOJrr at WMU&Y,mU#5kMp](0lp&Fsjnc/Ofp&FsjJcEjlr;_EK\c;U.
+JcG]KqZ*Vqebt(!Z2ab&rVuaYs"jO*q^hb#r at IItmk"J^odon^r at I[dfbX2ZqZ*2err at WMM?!SU
+oDegjX8d\~>
+[K$7,JcC<$p](0lWW2nsJcC<$nc/WAs&8l*s%EAfs$ZlfrE]:rrCZrWs$Z<?rB1*Ho1em:ruh,(
+rCQZGs%35GrCQB?s3^Gos$<JSqZ*0[rrDLgnRDN8qc8:J^&S*4e,TFJJcDGDSH/Ear;cNjr;cBf
+r;cNjr;_EKaoD;>JcE:\r;_EKrVu`pWW2R;pP8-`JcE"Tr;cfrJJS%soDe[fScA]iJcCT,rrDZj
+rrB,"J,~>
+[K$7,JcC<$RK*-aJcC<$p&G'1s31MSs4@:ts53jtrPefXrRC_srS7Fln)O<'n(%0js2+H^s3C5h
+s2+*TnTb)aXoA+rKDtE4q<3D0NW9"YJcDGDrrAbmrrDfnr;cTlqZ-0dqZ-Hlr;_EK`W,r<JcC<$
+XoJ>"X8hdhpRLWKPQ1R]U]:8mrVtXNp%S(Ln*p#;pZ__?q:tGcrOr6:qu?NnQiI'cli6tbJcD#8
+rrE*!rrB,"J,~>
+[K$7,JcC<$RK*-aJcC<$p&EqJs6%Z*s6&MBs6'F\rU]XZs60"Ps8DWirTO"Tp[eFaoCM_?oD\RW
+q#LHYoDZ/ha8UYiNW9"YJcDGDrrAbMrrDfnr;cTlqZ-0dqZ-Hlr;_EK`W,r<JcC<$XoJ>"X8g`K
+PQ1R]U]:8mrVuaYs"jO*r at In#r at IItmk"J^odot`q^hIbf,"8`qZ)u_rrDBbrr at WMQ2gjas8W*!
+X8d\~>
+[K$7,JcC<$RK*-aJcC<$p&G%us&T/5s%EAis$ZljrE]G,rD3;_rC?lAmm$\9mnNO8s!RJ2s&A_V
+rCR#Es%2TAn_O42h+RcKdnBK:P=tFHnRD<2JcC`0rr at WMU&UY`p](0lp](*jnc/Idq>^BnJcE^h
+rr at WMJcDkPr;`nuo6g:fm<k,tr;`Vmr;cfrJJRtqqu?NnQiI'cli6tbJcD#8rrE*!rrB,"J,~>
+[K$7,JcC<$RK*-aJcC<$p&G'1s31MSs4@:ts53jtrPefXrRC_srS7Fln)O<'n(%0js2+H^s3C5h
+s2+*TnTb)aXoA+rKDtE4q<3D0NW9"YJcDGDrrAbmrrDfnr;cTlqZ-0dqZ-Hlr;_EK`W,r<JcC<$
+XoJ>"X8hdhpRLWKPQ1R]U]:8mrVtXNp%S(Ln*p#;pZ__?q:tGcrOr6:qu?NnQiI'cli6tbJcD#8
+rrE*!rrB,"J,~>
+[K$7,JcC<$RK*-aJcC<$p&EqJs6%Z*s6&MBs6'F\rU]XZs60"Ps8DWirTO"Tp[eFaoCM_?oD\RW
+q#LHYoDZ/ha8UYiNW9"YJcDGDrrAbMrrDfnr;cTlqZ-0dqZ-Hlr;_EK`W,r<JcC<$XoJ>"X8g`K
+PQ1R]U]:8mrVuaYs"jO*r at In#r at IItmk"J^odot`q^hIbf,"8`qZ)u_rrDBbrr at WMQ2gjas8W*!
+X8d\~>
+[K$7,JcC<$RK*-aJcC<$p&G%us&T/5s%EAis$ZljrE]G,rD3;_rC?lAmm$\9mnNO8s!RJ2s&A_V
+rCR#Es%2TAn_O42h+RcKdnBK:P=tFHnRD<2JcC`0rr at WMU&UY`p](0lp](*jnc/Idq>^BnJcE^h
+rr at WMJcDkPr;`nuo6g:fm<k,tr;`Vmr;cfrJJRtqqu?NnQiI'cli6tbJcD#8rrE*!rrB,"J,~>
+[K$7,JcCN*r;`2arrE#tr;_EKJcGWIs3^kfs0_mCs4@;#s2b5arPe`bs3:MprS7Fls4Hr'rS7;.
+mFD$cs2+N`rQa6Ps*4-Ps3e1OqZ)ENs0DCunalS?JcCf2r;_EKU&Y,mU&Y,mp&FO^q>^Bnq>]sb
+JcE^hrr at WMa8c/>JcFj3r;a&$o;D>QpS\%]q58fDYQ+V&s8U^Lp\4^ZrS at 5>naQ5=p$);-n'M*G
+rOr(.JcGKErr at WMQiI'cs8W*!X8d\~>
+[K$7,JcCN*r;`2arrE#tr;_EKJcGWIs8M!Us6%T(s6&;<s7>j\nc&ReoD\dRp&=^WrVlK]q<7AJ
+s7?*frU^!On,Bffli-pihu83,O8o.YJcDGDrrAbMrrD`lnGrCbr;cZnnGn.?`W,r<JcEdjrr at WM
+jo>8ZYQ*/OJcDqRrrE*!s$cfKs"j7"r at ICrq(2I[mk">Zq^hIbf,"5`JcGKErr at WMQiI'cs8W*!
+X8d\~>
+[K$7,JcCN*r;`2arrE#tr;_EKJcGWIs+C>Ts)%dFs%EAfs'#G'rE]@ts&K"irC?lAs%;lIrC-TM
+m7mC?s!RP4rD`SVoh"[;s5!;1s%qHCrDqZGqZ)OIrDrq+pK$fnq/(]_O8o.YJcDGDSH/?_nGrCb
+r;cZnnGn.?`W,r<JcEdjrr at WMjo>8ZYQ+3ApP8Kjs+gDtJcDqRrrE*!b81$VY87!8JcGKErr at WM
+QiI'cs8W*!X8d\~>
+[K$7,JcCN*r;`2arrE#tr;_EKJcGWIs3^kfs0_mCs4@;#s2b5arPe`bs3:MprS7Fls4Hr'rS7;.
+mFD$cs2+N`rQa6Ps*4-Ps3e1OqZ)ENs0DCunalS?JcCf2r;_EKU&Y,mU&Y,mp&FO^q>^Bnq>]sb
+JcE^hrr at WMa8c/>JcFj3r;a&$o;D>QpS\%]q58fDYQ+V&s8U^Lp\4^ZrS at 5>naQ5=p$);-n'M*G
+rOr(.JcGKErr at WMQiI'cs8W*!X8d\~>
+[K$7,JcCN*r;`2arrE#tr;_EKJcGWIs8M!Us6%T(s6&;<s7>j\nc&ReoD\dRp&=^WrVlK]q<7AJ
+s7?*frU^!On,Bffli-pihu83,O8o.YJcDGDrrAbMrrD`lnGrCbr;cZnnGn.?`W,r<JcEdjrr at WM
+jo>8ZYQ*/OJcDqRrrE*!s$cfKs"j7"r at ICrq(2I[mk">Zq^hIbf,"5`JcGKErr at WMQiI'cs8W*!
+X8d\~>
+[K$7,JcCN*r;`2arrE#tr;_EKJcGWIs+C>Ts)%dFs%EAfs'#G'rE]@ts&K"irC?lAs%;lIrC-TM
+m7mC?s!RP4rD`SVoh"[;s5!;1s%qHCrDqZGqZ)OIrDrq+pK$fnq/(]_O8o.YJcDGDSH/?_nGrCb
+r;cZnnGn.?`W,r<JcEdjrr at WMjo>8ZYQ+3ApP8Kjs+gDtJcDqRrrE*!b81$VY87!8JcGKErr at WM
+QiI'cs8W*!X8d\~>
+[K$7,JcC<$O8o4[JcC<$rVuo9s2b5Os2"`^rQ+rVs2b5is3:Gns4mS's4I)+qqV),n^[H\qq;"d
+pY#GhmFh*ZnSP]5qZ)3Hs0DCun+6A=JcCl4r;_EKU&Y,mU&Y,moDeI`p](0lp]'sfJcERdrr at WM
+aoDA at JcFX-r;a8*nYc,Oq5=+[q5:(hr;_u[rrE*!g&:mGq=jFNnaQ/;pZ_G-p!E`gs3UWCJcC<$
+JcG`MX8d\~>
+[K$7,JcC<$O8o4[JcC<$rVreos6&;<s7>j\iVrl at p&=dYqu69[qrmYNqZ-B^s6/kL[I`ebs0CJ[
+JcCl4r;_EKU&Y,mU#5kMoDeI`p](0lp]'sfJcERdrr at WMaoDA@JcFX-r;a8*dJ]pAr;_u[rrE*!
+s$$HKs$$H=q_.t*q_.gtml08Xr?:tfoc`3.qZ)3IJcC<$rrB,"J,~>
+[K$7,JcC<$O8o4[JcC<$rVun(s'#G9s'l"+rEB/*s'#Fus&Jqgs%!#^s%<#MqaLBKnP/gYq`b$8
+pIY6]q`a[Es$$$Bn`^!Rh+RWGiCj%JKhMAFrsSR%mpc*0JcCl4r;_EKU&UY`oDeI`p](0lp]'sf
+JcERdrr at WMaoDA@JcFX-r;a8*nU1(dq0`'pq0]%=r;_u[rrE*!JJS+uqZ)3IJcC<$rrB,"J,~>
+[K$7,JcC<$O8o4[JcC<$rVuo9s2b5Os2"`^rQ+rVs2b5is3:Gns4mS's4I)+qqV),n^[H\qq;"d
+pY#GhmFh*ZnSP]5qZ)3Hs0DCun+6A=JcCl4r;_EKU&Y,mU&Y,moDeI`p](0lp]'sfJcERdrr at WM
+aoDA at JcFX-r;a8*nYc,Oq5=+[q5:(hr;_u[rrE*!g&:mGq=jFNnaQ/;pZ_G-p!E`gs3UWCJcC<$
+JcG`MX8d\~>
+[K$7,JcC<$O8o4[JcC<$rVreos6&;<s7>j\iVrl at p&=dYqu69[qrmYNqZ-B^s6/kL[I`ebs0CJ[
+JcCl4r;_EKU&Y,mU#5kMoDeI`p](0lp]'sfJcERdrr at WMaoDA@JcFX-r;a8*dJ]pAr;_u[rrE*!
+s$$HKs$$H=q_.t*q_.gtml08Xr?:tfoc`3.qZ)3IJcC<$rrB,"J,~>
+[K$7,JcC<$O8o4[JcC<$rVun(s'#G9s'l"+rEB/*s'#Fus&Jqgs%!#^s%<#MqaLBKnP/gYq`b$8
+pIY6]q`a[Es$$$Bn`^!Rh+RWGiCj%JKhMAFrsSR%mpc*0JcCl4r;_EKU&UY`oDeI`p](0lp]'sf
+JcERdrr at WMaoDA@JcFX-r;a8*nU1(dq0`'pq0]%=r;_u[rrE*!JJS+uqZ)3IJcC<$rrB,"J,~>
+[K$7,JcC<$NW8qWJcFR+rrB%us3^k[s0)I6s3UeZs2b5WrPefMs0r$QrRh/*rP/$Bq:tl*pXSfZ
+rRq4fq:YShqq;#"pX9)_qpPMWrR14Qn,E at Yc2RS?RK!6Xhu<S[rVl?Yq<3D0Z2ab&j8],ZJcDGD
+rrAbmrr at WML&_/QJcFF'rr at WMbQ%M@\c;9!opkiUq4.>[h>dKTJcF@%rrE*!g&:gErV,^NnaQ5=
+pZ__?qqV5/q9]/QqZ-ZCrOr6:JcC<$KE(rOX8d\~>
+[K$7,JcC<$NW8qWJcFR+rrB%us8MKcrTClms6&#4s6'@Zci3n7q>U!Ws604VqZ-Nmp[d_Mg%4>)
+q=EeKrNbPaJcE"Tr;bmXrr at WMU&Y,mU#5kMJcCH(rr at WMg&M'PJcEpnr;aD.dJ_o$rr at WMfDkjN
+s8W*_s$?ZKs"j[.s$m#[qaUT=r at I=pnLX]!odp%bq(21^k8*jnq%eP]JcCB&rrB,"J,~>
+[K$7,JcC<$NW8qWJcFR+rrB%us+C>_s)e9Ss&/l.s'#G2rE]F_s$-N`rC[)[rFGS0q*k0IpJ(0W
+rBC6:q+:B]q`b$RpJCloqaCH:rC$2>rDrM_s'kFiq,ZZOqZ*rqk>qUlktCbOr<rR)nRD<2JcE"T
+r;bmXrr at WMU&UY`JcCH(rr at WMg&M'PJcEpnr;aD.o6g4dq0`!nqg at 6"rr at WMfDkjNs8R]eq#L4+
+JcC<$KE(rOX8d\~>
+[K$7,JcC<$NW8qWJcFR+rrB%us3^k[s0)I6s3UeZs2b5WrPefMs0r$QrRh/*rP/$Bq:tl*pXSfZ
+rRq4fq:YShqq;#"pX9)_qpPMWrR14Qn,E at Yc2RS?RK!6Xhu<S[rVl?Yq<3D0Z2ab&j8],ZJcDGD
+rrAbmrr at WML&_/QJcFF'rr at WMbQ%M@\c;9!opkiUq4.>[h>dKTJcF@%rrE*!g&:gErV,^NnaQ5=
+pZ__?qqV5/q9]/QqZ-ZCrOr6:JcC<$KE(rOX8d\~>
+[K$7,JcC<$NW8qWJcFR+rrB%us8MKcrTClms6&#4s6'@Zci3n7q>U!Ws604VqZ-Nmp[d_Mg%4>)
+q=EeKrNbPaJcE"Tr;bmXrr at WMU&Y,mU#5kMJcCH(rr at WMg&M'PJcEpnr;aD.dJ_o$rr at WMfDkjN
+s8W*_s$?ZKs"j[.s$m#[qaUT=r at I=pnLX]!odp%bq(21^k8*jnq%eP]JcCB&rrB,"J,~>
+[K$7,JcC<$NW8qWJcFR+rrB%us+C>_s)e9Ss&/l.s'#G2rE]F_s$-N`rC[)[rFGS0q*k0IpJ(0W
+rBC6:q+:B]q`b$RpJCloqaCH:rC$2>rDrM_s'kFiq,ZZOqZ*rqk>qUlktCbOr<rR)nRD<2JcE"T
+r;bmXrr at WMU&UY`JcCH(rr at WMg&M'PJcEpnr;aD.o6g4dq0`!nqg at 6"rr at WMfDkjNs8R]eq#L4+
+JcC<$KE(rOX8d\~>
+[K$7,JcF'rrrC7Br;_EKp](0lJcF^/rrB%us1SH<qmug at s2+`Rs2b)^rPJHHq82m<q;D5%ld#I^
+s2+Tbs3CG`rRLShs2b#as1JB[o54O-n,E at Yec, at Es0@jfoCM)CnalS?JcCf2rr at WMU&Y,mU&Y,m
+JcCH(rr at WMg&M!NJcEjlrrB\2o;D8Oqks+WrMSKOrr at WMfDkjNfDYOAs7bpPnaQ5=p$)A/s53e%
+qZ-TAqpbSXJcCT,rr at WMrVultX8d\~>
+[K$7,JcF'rrrC7Br;_EKp](0lJcF^/rrB%uV>^GWec#O2s8DQgs8V!UrU]d_p%/.]q#LH#p\t![
+l2K`7RJqd;O8o4[JcDGDrrAb]rr at WML&_/QJcFF'r;_EKaoDA@]Dp:Wh>dKTJcF@%rrE'qq`b$O
+s$lrYq*t<6lSnJfrAWmjpEAi<qZ-4'JcCT,rr at WMrVultX8d\~>
+[K$7,JcF'rrrC7Br;_EKp](0lJcF^/rrB%us(24Lqe6"@s'bk3s'#;"rF,S6q-j#1q*P$SlW!mJ
+s%35Gq+:Tcq,dS^s%N)^s',:es"==>oB?5Sqc<A_s'kFipK$fWpAjYTrDq6;gK*oToh4gUnRD<2
+JcCf2rr at WMU&UY`JcCH(rr at WMg&M!NJcEjlrrB\2o6g4dqgA'lrI!H$rr at WMfDkjNKbjOco+loW
+M?!SUJcG]KrrB,"J,~>
+[K$7,JcF'rrrC7Br;_EKp](0lJcF^/rrB%us1SH<qmug at s2+`Rs2b)^rPJHHq82m<q;D5%ld#I^
+s2+Tbs3CG`rRLShs2b#as1JB[o54O-n,E at Yec, at Es0@jfoCM)CnalS?JcCf2rr at WMU&Y,mU&Y,m
+JcCH(rr at WMg&M!NJcEjlrrB\2o;D8Oqks+WrMSKOrr at WMfDkjNfDYOAs7bpPnaQ5=p$)A/s53e%
+qZ-TAqpbSXJcCT,rr at WMrVultX8d\~>
+[K$7,JcF'rrrC7Br;_EKp](0lJcF^/rrB%uV>^GWec#O2s8DQgs8V!UrU]d_p%/.]q#LH#p\t![
+l2K`7RJqd;O8o4[JcDGDrrAb]rr at WML&_/QJcFF'r;_EKaoDA@]Dp:Wh>dKTJcF@%rrE'qq`b$O
+s$lrYq*t<6lSnJfrAWmjpEAi<qZ-4'JcCT,rr at WMrVultX8d\~>
+[K$7,JcF'rrrC7Br;_EKp](0lJcF^/rrB%us(24Lqe6"@s'bk3s'#;"rF,S6q-j#1q*P$SlW!mJ
+s%35Gq+:Tcq,dS^s%N)^s',:es"==>oB?5Sqc<A_s'kFipK$fWpAjYTrDq6;gK*oToh4gUnRD<2
+JcCf2rr at WMU&UY`JcCH(rr at WMg&M!NJcEjlrrB\2o6g4dqgA'lrI!H$rr at WMfDkjNKbjOco+loW
+M?!SUJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WM\c;U.JcC`0s1A<Es0)Brs180GrPefRs3:SQrPJHHqnhs:s1eNjj3I\Xs2+T^
+pWNTep!W`YpX8qUq-rglrU\eCqZ-Hks0 at jfl1=BCn+6A=TE"okJcGECrr at WMU&Y,mU&Y,mJcCH(
+rr at WMJcD5>r;aV4o;D2MrMT7Ws/3:)r;_EKrrC[Lp\O:Ks5!;9oBl;:rT<nUpX&ferOmd^jo>8Z
+WW2tuJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WM\c;U.JcC`0s8MuqrTC<]s6%f.ci3t9p&=^WqZ-Hks0DCurU](KmIQD<TE"ok
+JcGECrr at WMU&Y,mU$r!]JcCH(rr at WMJcD5>r;aV4dJ^KQr;_EKrrE'_s$?ZKs&Jkdq*tBOs"*Or
+s$QH1rAXU)rtb&SpEB8Hr?:t:m1t9Qjo>8ZWW2tuJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WM\c;U.JcC`0s-it!s)e3;s(M@>rE]G3s&K)8rF,S6qdK)/s()'pj&H%Ms"aCD
+pK.A\ohbNipI+oBq=FD_pIkHonOrOUpIkA`q+L_fo1Sm[f1XRnl!jZcnQ,*fq/)c(rr at WMp&G$l
+JcDGDSH+6 at L&_/QJcC<$S,`Ee^]3nQo8!9lo8!?n[K$1*JcG`M\JG2Ff,"/^m1t9Qjo>8ZWW2tu
+JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WM\c;U.JcC`0s1A<Es0)Brs180GrPefRs3:SQrPJHHqnhs:s1eNjj3I\Xs2+T^
+pWNTep!W`YpX8qUq-rglrU\eCqZ-Hks0 at jfl1=BCn+6A=TE"okJcGECrr at WMU&Y,mU&Y,mJcCH(
+rr at WMJcD5>r;aV4o;D2MrMT7Ws/3:)r;_EKrrC[Lp\O:Ks5!;9oBl;:rT<nUpX&ferOmd^jo>8Z
+WW2tuJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WM\c;U.JcC`0s8MuqrTC<]s6%f.ci3t9p&=^WqZ-Hks0DCurU](KmIQD<TE"ok
+JcGECrr at WMU&Y,mU$r!]JcCH(rr at WMJcD5>r;aV4dJ^KQr;_EKrrE'_s$?ZKs&Jkdq*tBOs"*Or
+s$QH1rAXU)rtb&SpEB8Hr?:t:m1t9Qjo>8ZWW2tuJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WM\c;U.JcC`0s-it!s)e3;s(M@>rE]G3s&K)8rF,S6qdK)/s()'pj&H%Ms"aCD
+pK.A\ohbNipI+oBq=FD_pIkHonOrOUpIkA`q+L_fo1Sm[f1XRnl!jZcnQ,*fq/)c(rr at WMp&G$l
+JcDGDSH+6 at L&_/QJcC<$S,`Ee^]3nQo8!9lo8!?n[K$1*JcG`M\JG2Ff,"/^m1t9Qjo>8ZWW2tu
+JcG]KrrB,"J,~>
+[K$7,JcDYJr;_EKhuEWTJcCl4s1863qmug:s2+`Rs1eTYrO;a;qnN*Ho=Ot9rOD%9rQG5Vs1eH]
+oumBNp!W`Ys3gejo4%b"n,E4Up&>!_nc&CcrUYgDkO\T7p&=LQq<4INrr at WMp&G$lJcDGDrrAbm
+rr at WML]@;QJcFp5rr at WMZiBt(`W,J+o:5iYnXTWWJcE"TrrC[Lp%n(Is4[)6p$MS>qZ-NXs5s(&
+q:,AVJcC<$L&_/QX8d\~>
+[K$7,JcDYJr;_EKhuEWTJcCl4U](5Ue,An;s8UFErU]mdkPkMQiVrB=MuK at Krr@WMp&G$lJcDGD
+rrAb]rr at WML]@;QJcFp5rr at WMZiBt(`W+9_JcE"TrrE'_s$?ZKpIY0MrBos2s$QH1rAXO'rtbVc
+s#9U%pEBDLruq7>r?:>>JcC<$L&_/QX8d\~>
+[K$7,JcDYJr;_EKhuEWTJcCl4s(MFVqe6"Gs'bk3s().0rG;FFqdfY6o4S#4rG(LprE'#/s#0aJ
+oiM0'ohbNis$Z`ToCN"^q,[5_qdT4ks'kY%rCd"frF5"apK$$AcW94<qec",nRD<2TE"okJcGEC
+rr at WMU&UY`JcCN*r;_EKkPtP^JcE(Vr;ah:nU0q`s*X?ls*TCtZ2ah([heuDh\Q(hitd4GJcCH(
+rrB,"J,~>
+[K$7,JcDYJr;_EKhuEWTJcCl4s1863qmug:s2+`Rs1eTYrO;a;qnN*Ho=Ot9rOD%9rQG5Vs1eH]
+oumBNp!W`Ys3gejo4%b"n,E4Up&>!_nc&CcrUYgDkO\T7p&=LQq<4INrr at WMp&G$lJcDGDrrAbm
+rr at WML]@;QJcFp5rr at WMZiBt(`W,J+o:5iYnXTWWJcE"TrrC[Lp%n(Is4[)6p$MS>qZ-NXs5s(&
+q:,AVJcC<$L&_/QX8d\~>
+[K$7,JcDYJr;_EKhuEWTJcCl4U](5Ue,An;s8UFErU]mdkPkMQiVrB=MuK at Krr@WMp&G$lJcDGD
+rrAb]rr at WML]@;QJcFp5rr at WMZiBt(`W+9_JcE"TrrE'_s$?ZKpIY0MrBos2s$QH1rAXO'rtbVc
+s#9U%pEBDLruq7>r?:>>JcC<$L&_/QX8d\~>
+[K$7,JcDYJr;_EKhuEWTJcCl4s(MFVqe6"Gs'bk3s().0rG;FFqdfY6o4S#4rG(LprE'#/s#0aJ
+oiM0'ohbNis$Z`ToCN"^q,[5_qdT4ks'kY%rCd"frF5"apK$$AcW94<qec",nRD<2TE"okJcGEC
+rr at WMU&UY`JcCN*r;_EKkPtP^JcE(Vr;ah:nU0q`s*X?ls*TCtZ2ah([heuDh\Q(hitd4GJcCH(
+rrB,"J,~>
+[K$7,JcC<$JcG]Kr;_EKScA]irVuo0s/5n#s0qs<rPJTRs1eT8rO;g2s1A0Cs2+6:pUKb=pWNNN
+s1eH]oumBJq9o;hq8E*Toj[t$n,E.Sp&>!_q>U0irVl]cli-qUSc7gDp#uARqt'caqt'XIJcDMF
+r;cHhrr at WMU&Y,mU&Y,mJcCN*r;_EKl2Ub`JcEdjrrD<`r;at>nYbuKs/5CWs/5mm`W,r<JcG?A
+rrE)^g&:O=lgs`;p$MeDqZ-<Rqr[_$qpbSXO8o4[JcC<$q>^HpX8d\~>
+[K$7,JcC<$JcG]Kr;_EKScA]irVuosU](5Ue,At=s8ULGq#LBb_uBE%Qi?rhoDX=@U]:8moDegj
+JcDGDrrAb]rr at WML]@;QJcG!7rr at WMa8c/>l2U\^aoBWa`W,r<JcG?ArrE'ZrB^H`pIY6OrBpNY
+ml124q(2>#pFQ>'odobZqZ-:4kn]?[rr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$JcG]Kr;_EKScA]irVunds*Xigs(qXIrF,_3s().RrG;LSs(D4>s'bA/pM04tpK.<'
+s#0aJoiM0*q,%)iq-Nkfp%/4`oiCr_q-s"is'ke)q#L at dqdSkas'k_'iCh3lk at 4+$rDrf)r>,9>
+q/(]_U]:8moDegjJcDGDSH+6 at L]@;QJcG!7rr at WMa8c/>l2U\^aoCmYo8!?nnV at -ls*r#frr at WM
+oDeahR25Z"h%l(Orr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$JcG]Kr;_EKScA]irVuo0s/5n#s0qs<rPJTRs1eT8rO;g2s1A0Cs2+6:pUKb=pWNNN
+s1eH]oumBJq9o;hq8E*Toj[t$n,E.Sp&>!_q>U0irVl]cli-qUSc7gDp#uARqt'caqt'XIJcDMF
+r;cHhrr at WMU&Y,mU&Y,mJcCN*r;_EKl2Ub`JcEdjrrD<`r;at>nYbuKs/5CWs/5mm`W,r<JcG?A
+rrE)^g&:O=lgs`;p$MeDqZ-<Rqr[_$qpbSXO8o4[JcC<$q>^HpX8d\~>
+[K$7,JcC<$JcG]Kr;_EKScA]irVuosU](5Ue,At=s8ULGq#LBb_uBE%Qi?rhoDX=@U]:8moDegj
+JcDGDrrAb]rr at WML]@;QJcG!7rr at WMa8c/>l2U\^aoBWa`W,r<JcG?ArrE'ZrB^H`pIY6OrBpNY
+ml124q(2>#pFQ>'odobZqZ-:4kn]?[rr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$JcG]Kr;_EKScA]irVunds*Xigs(qXIrF,_3s().RrG;LSs(D4>s'bA/pM04tpK.<'
+s#0aJoiM0*q,%)iq-Nkfp%/4`oiCr_q-s"is'ke)q#L at dqdSkas'k_'iCh3lk at 4+$rDrf)r>,9>
+q/(]_U]:8moDegjJcDGDSH+6 at L]@;QJcG!7rr at WMa8c/>l2U\^aoCmYo8!?nnV at -ls*r#frr at WM
+oDeahR25Z"h%l(Orr at WMJcGQGrrB,"J,~>
+[K$7,JcE.Xrr at WMkPtP^j8]&XJcDMFrrDrrs1863rNH74s0r$Fs2G#Qs/>t!s0r$4rO_sAn[n8"
+qp+`TrP8H4rRLSas2=lHq9SfRrQk.Gs8W*!s0D1oq=F@[rU^'gqZ-<gqt'4SrU\eCqt%r/kO\6-
+s5!;<pZR2.PQ1X_JcDGDrrAbmrr at WML&_/QJcC<$XoJD$jo>8Zc2[C5hjjYCa8c/>JcG9?rrE)^
+g&:I;mITr=q<e%Zn*0Z1qp>5irOn9lrr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcE.Xrr at WMkPtP^j8]&XJcDMFrrDrrU&G#Sec#1?s8W*!s0C>WqZ-Nmqt%`)qt#C<s8ITL
+PQ1X_JcDGDrrAb]rr at WML&_/QJcC<$XoJD$jo>8Zc2Z&ea8c/>JcG9?rrE'Os$?Zes&K(nqapTQ
+rBpNYnMg>4q(2>#q(2J'odot`qZ-(.kn]?[rr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcE.Xrr at WMkPtP^j8]&XJcDMFrrDrrs(MFVrH/'Qs(q^Ds'>Y8s*F]hs(q^UrFc"<nRq<*
+qc*)erF>^uoiM0"rFu(+pKmehp%/4`rrE',pK%/aq-s(krF5e-qZ-Loqb-fqm7[CeoiC6KqdRZJ
+k at 3sus*4-EpMGK]PQ1X_JcDGDSH+6 at L&_/QJcC<$XoJD$jo>8Zc2[B_hhV/Xa8c/>JcG9?r;`H*
+qZ,4`O8o4[JcC<$rVults8W*!X8d\~>
+[K$7,JcE.Xrr at WMkPtP^j8]&XJcDMFrrDrrs1863rNH74s0r$Fs2G#Qs/>t!s0r$4rO_sAn[n8"
+qp+`TrP8H4rRLSas2=lHq9SfRrQk.Gs8W*!s0D1oq=F@[rU^'gqZ-<gqt'4SrU\eCqt%r/kO\6-
+s5!;<pZR2.PQ1X_JcDGDrrAbmrr at WML&_/QJcC<$XoJD$jo>8Zc2[C5hjjYCa8c/>JcG9?rrE)^
+g&:I;mITr=q<e%Zn*0Z1qp>5irOn9lrr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcE.Xrr at WMkPtP^j8]&XJcDMFrrDrrU&G#Sec#1?s8W*!s0C>WqZ-Nmqt%`)qt#C<s8ITL
+PQ1X_JcDGDrrAb]rr at WML&_/QJcC<$XoJD$jo>8Zc2Z&ea8c/>JcG9?rrE'Os$?Zes&K(nqapTQ
+rBpNYnMg>4q(2>#q(2J'odot`qZ-(.kn]?[rr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcE.Xrr at WMkPtP^j8]&XJcDMFrrDrrs(MFVrH/'Qs(q^Ds'>Y8s*F]hs(q^UrFc"<nRq<*
+qc*)erF>^uoiM0"rFu(+pKmehp%/4`rrE',pK%/aq-s(krF5e-qZ-Loqb-fqm7[CeoiC6KqdRZJ
+k at 3sus*4-EpMGK]PQ1X_JcDGDSH+6 at L&_/QJcC<$XoJD$jo>8Zc2[B_hhV/Xa8c/>JcG9?r;`H*
+qZ,4`O8o4[JcC<$rVults8W*!X8d\~>
+[K$7,JcE4Zrr at WMjo>>\huEWTJcDGDs1A</s0)I(s0)I/s0r$Fs1eT4s/c70rNQ=6rP/BBo=O=u
+s0_==qnW62s1nZbs3(/TqmlOKpVd$Vs'kdsrVu?cp%/"YqZ-0cq=F"QrU\kEq=D`-kO\_DoB>r)
+q=FFGJcD#8r;_EKU&Y,mU&Y,mJcCH(rr at WMq>^BnJcD):r;b7Fo;CE7s/1GJZiC'gg&:C9n+65A
+s4[MBqZ-N\n*0T/rQtAirOmd^g&M!NJcE4ZrrE*!rrB,"J,~>
+[K$7,JcE4Zrr at WMjo>>\huEWTJcDGDs8J_js6%r2p\t-kg]%'Mp&=p]^]+9)VuH_%g&?R&Q2gd_
+JcDGDrrAb]rr at WML&_/QJcGQGr;_EKQiI!adJqJiJcE(Vs""+OrDiklqapTQrBpHWo/HP6q(2>#
+q(2D%q^ha_s"+$Ir?;1lmigj0JcFF'r;_EK\,ZI.s8W*!X8d\~>
+[K$7,JcE4Zrr at WMjo>>\huEWTJcDGDs-it8s)e9bs)e9Zs(q^Ds().Us*+KZrGqpNrFGqCo4RB(
+s).:,qd]Y"s'u(&s&\r$qe>k)pKmehs7?'crVuIirCcfmq+LSboiD#aq-r_arF5G#ktCh]a]@S6
+rupuNpNZLCq/(]_Q2gd_JcDGDSH+6 at L&_/QJcGQGr;_EKQiI!adJrfch1u#XJcE(VrrB#6rrE'7
+qZ+qXJcFF'r;_EK\,ZI.s8W*!X8d\~>
+[K$7,JcE4Zrr at WMjo>>\huEWTJcDGDs1A</s0)I(s0)I/s0r$Fs1eT4s/c70rNQ=6rP/BBo=O=u
+s0_==qnW62s1nZbs3(/TqmlOKpVd$Vs'kdsrVu?cp%/"YqZ-0cq=F"QrU\kEq=D`-kO\_DoB>r)
+q=FFGJcD#8r;_EKU&Y,mU&Y,mJcCH(rr at WMq>^BnJcD):r;b7Fo;CE7s/1GJZiC'gg&:C9n+65A
+s4[MBqZ-N\n*0T/rQtAirOmd^g&M!NJcE4ZrrE*!rrB,"J,~>
+[K$7,JcE4Zrr at WMjo>>\huEWTJcDGDs8J_js6%r2p\t-kg]%'Mp&=p]^]+9)VuH_%g&?R&Q2gd_
+JcDGDrrAb]rr at WML&_/QJcGQGr;_EKQiI!adJqJiJcE(Vs""+OrDiklqapTQrBpHWo/HP6q(2>#
+q(2D%q^ha_s"+$Ir?;1lmigj0JcFF'r;_EK\,ZI.s8W*!X8d\~>
+[K$7,JcE4Zrr at WMjo>>\huEWTJcDGDs-it8s)e9bs)e9Zs(q^Ds().Us*+KZrGqpNrFGqCo4RB(
+s).:,qd]Y"s'u(&s&\r$qe>k)pKmehs7?'crVuIirCcfmq+LSboiD#aq-r_arF5G#ktCh]a]@S6
+rupuNpNZLCq/(]_Q2gd_JcDGDSH+6 at L&_/QJcGQGr;_EKQiI!adJrfch1u#XJcE(VrrB#6rrE'7
+qZ+qXJcFF'r;_EK\,ZI.s8W*!X8d\~>
+[K$7,JcC<$JcG9?r;_EK]Dqg0n,NElrN-%&s0Ma7s2+fNrM]atrNQ74s1eNBpUgI5n$rD&q6fb9
+rP8HDs.fV)s3LAVq76IMqo&NNqnDetqu?-ap%/4_qZ-NboD\FSnc&FWiVrNAao:Jps.&WCoA0H<
+q<3D0Q2gd_JcDGDrrAbmrr at WML&_/QJcC<$L]@ASe,T$;h44MCfDkdLJcFd1s8Du\g&:C9mIU/C
+qZ-<VmHOB-rQtGkrOmd^JcCN*rrB,"J,~>
+[K$7,JcC<$JcG9?r;_EK]Dqg0n,NFeU&G#SfDYICqu>XSqZ-*as7:g at iVrk_g&?R&Q2gd_JcDGD
+rrAb]rr at WML&_/QJcC<$L]@ASe,R\kfDkdLJcFd1s%r_Gs&f;$rD!/\q*t<MqbH`Aqa:63pG_n!
+q`"I)qZ-XIq]Ynhmigj0JcC<$L]@ASX8d\~>
+[K$7,JcC<$JcG9?r;_EK]Dqg0n,NEarHJ9`s)7pRs'bq<rHeKfrGqjLs()(CpLjMDmqVlBq/5_(
+rF>kAs&8r3s&8Ssq.]e+qd0),p\t'inQ,Z_oj[qoqZ-M&oiD)coj[GaqdT5!m7[+]a]@S6rupoL
+o6C:Eq/(]_Q2gd_JcDGDSH+6 at L&_/QJcC<$L]@ASe,T#eh1u#XfDkdLJcFd1rtbV7WttR4aVKI-
+JcCN*rrB,"J,~>
+[K$7,JcC<$JcG9?r;_EK]Dqg0n,NElrN-%&s0Ma7s2+fNrM]atrNQ74s1eNBpUgI5n$rD&q6fb9
+rP8HDs.fV)s3LAVq76IMqo&NNqnDetqu?-ap%/4_qZ-NboD\FSnc&FWiVrNAao:Jps.&WCoA0H<
+q<3D0Q2gd_JcDGDrrAbmrr at WML&_/QJcC<$L]@ASe,T$;h44MCfDkdLJcFd1s8Du\g&:C9mIU/C
+qZ-<VmHOB-rQtGkrOmd^JcCN*rrB,"J,~>
+[K$7,JcC<$JcG9?r;_EK]Dqg0n,NFeU&G#SfDYICqu>XSqZ-*as7:g at iVrk_g&?R&Q2gd_JcDGD
+rrAb]rr at WML&_/QJcC<$L]@ASe,R\kfDkdLJcFd1s%r_Gs&f;$rD!/\q*t<MqbH`Aqa:63pG_n!
+q`"I)qZ-XIq]Ynhmigj0JcC<$L]@ASX8d\~>
+[K$7,JcC<$JcG9?r;_EK]Dqg0n,NEarHJ9`s)7pRs'bq<rHeKfrGqjLs()(CpLjMDmqVlBq/5_(
+rF>kAs&8r3s&8Ssq.]e+qd0),p\t'inQ,Z_oj[qoqZ-M&oiD)coj[GaqdT5!m7[+]a]@S6rupoL
+o6C:Eq/(]_Q2gd_JcDGDSH+6 at L&_/QJcC<$L]@ASe,T#eh1u#XfDkdLJcFd1rtbV7WttR4aVKI-
+JcCN*rrB,"J,~>
+[K$7,JcEdjr;_EKX8i+uJcG]KrrB>(s.'+^s0)I(s0)I/s0r$?rM]atqlp+4s1eNBq7HU5n[SJ$
+pU0b=rP\TDs.fV)s/u+7pUU7Gqn`*Bq+LP`nc&@Uq#LBmq=F:Ys60.IoD\LUkPk#Ca8Y8nn`]N!
+rR(S6JcCr6rr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcDqRr;bONnYb35s/4cSrr at WMg&M*Ns6&/8
+lh^)As7#mcqsa:GmHOT3s3LZ+rQtAis1O!`JcCN*rrB,"J,~>
+[K$7,JcEdjr;_EKX8i+uJcG]KrrB>(Sc/TOfDYOEq>]^Yq#H!FU&P"rJcCr6rr at WMU&Y,mU$r!]
+JcCH(rr at WMg&M'PJcDqRr;bONbPg>urr at WMg&M(Ks""+Os&K(nq+:BOs$QNUof)\6r at I\%q^hV'
+qZ-FCr?;%hmihQDrrDL'JcC<$L]@ASX8d\~>
+[K$7,JcEdjr;_EKX8i+uJcG]KrrB>(s+gW+s)e9bs)e9Zs(q^JrHeKfqf;^Ls()(Cq.KYDnS7r@
+pMT_,rEfA8s&8r3s)e!ApM'S,o3qIoq>]tcq-s."rCcrqoiD*0oj[McpL<ktnOrC]a&_A4nSRf@
+rIb%lJcCr6rr at WMU&UY`JcCH(rr at WMg&M'PJcDqRr;bONnU0/Js*W`(rr at WMg&M'frrB;>qZ,4`
+rrDL'JcC<$L]@ASX8d\~>
+[K$7,JcEdjr;_EKX8i+uJcG]KrrB>(s.'+^s0)I(s0)I/s0r$?rM]atqlp+4s1eNBq7HU5n[SJ$
+pU0b=rP\TDs.fV)s/u+7pUU7Gqn`*Bq+LP`nc&@Uq#LBmq=F:Ys60.IoD\LUkPk#Ca8Y8nn`]N!
+rR(S6JcCr6rr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcDqRr;bONnYb35s/4cSrr at WMg&M*Ns6&/8
+lh^)As7#mcqsa:GmHOT3s3LZ+rQtAis1O!`JcCN*rrB,"J,~>
+[K$7,JcEdjr;_EKX8i+uJcG]KrrB>(Sc/TOfDYOEq>]^Yq#H!FU&P"rJcCr6rr at WMU&Y,mU$r!]
+JcCH(rr at WMg&M'PJcDqRr;bONbPg>urr at WMg&M(Ks""+Os&K(nq+:BOs$QNUof)\6r at I\%q^hV'
+qZ-FCr?;%hmihQDrrDL'JcC<$L]@ASX8d\~>
+[K$7,JcEdjr;_EKX8i+uJcG]KrrB>(s+gW+s)e9bs)e9Zs(q^JrHeKfqf;^Ls()(Cq.KYDnS7r@
+pMT_,rEfA8s&8r3s)e!ApM'S,o3qIoq>]tcq-s."rCcrqoiD*0oj[McpL<ktnOrC]a&_A4nSRf@
+rIb%lJcCr6rr at WMU&UY`JcCH(rr at WMg&M'PJcDqRr;bONnU0/Js*W`(rr at WMg&M'frrB;>qZ,4`
+rrDL'JcC<$L]@ASX8d\~>
+[K$7,JcF'rrr at WMScAWgJcG`Me,TFJiW&q^s.KCWs0)I/s0r$?ql'Okqlon+qn)a5pUKt&o<n>2
+q76O#s1/04q8E<LosXb6q7c`!p](3Up&>!Ts/5_oq=FXcp[e(Ws60.Iq>UE"s8M]_l2L)Aao:Jp
+n`]Gtq9acnQ2gjaJcDGDrrAbmrr at WML&_/QM?!MSec5XLJcDeNr;b[RnYb35s/4uYrrE#trr at WM
+g&M*Ns6&/8lh^5EqZ-6Wp$M54rT=.+qr[q*q:,AZJcCf2rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMScAWgJcG`Me,TFJiW&rWTDefQg&:mKs7?!bn,E?mqZ+h=s0 at 4TbPm(mQ2gja
+JcDGDrrAb]rr at WML&_/QM?!MSec5XLJcDeNr;b[RbPgQ&rrE#trr at WMg&M(Cs$?Tcs%W;\qaUNO
+pJ1HApI"m1of)h#qZ-XTodp+dq(1tXq\K23m1t9QO8o4[JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMScAWgJcG`Me,TFJiW&qSs+:91s)e9Zs(q^Jqg/9jqf;LIqe,eDpM0GBo5=;/
+q.]k-s(VLTq-O)0oka5.qu6?irGD4.s)%cOqZ-G$s%E)qoiD*0oj[_irrE'loj[Spoh4[]a]@S6
+nSR`>q1F7uQ2gjaJcDGDSH+6 at L&_/QM?!MSec5XLJcDeNr;b[RnU0/Js*Wr.rrE#trr at WMg&M'f
+rrBMDqZ,"ZrrDF%JcCf2rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMScAWgJcG`Me,TFJiW&q^s.KCWs0)I/s0r$?ql'Okqlon+qn)a5pUKt&o<n>2
+q76O#s1/04q8E<LosXb6q7c`!p](3Up&>!Ts/5_oq=FXcp[e(Ws60.Iq>UE"s8M]_l2L)Aao:Jp
+n`]Gtq9acnQ2gjaJcDGDrrAbmrr at WML&_/QM?!MSec5XLJcDeNr;b[RnYb35s/4uYrrE#trr at WM
+g&M*Ns6&/8lh^5EqZ-6Wp$M54rT=.+qr[q*q:,AZJcCf2rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMScAWgJcG`Me,TFJiW&rWTDefQg&:mKs7?!bn,E?mqZ+h=s0 at 4TbPm(mQ2gja
+JcDGDrrAb]rr at WML&_/QM?!MSec5XLJcDeNr;b[RbPgQ&rrE#trr at WMg&M(Cs$?Tcs%W;\qaUNO
+pJ1HApI"m1of)h#qZ-XTodp+dq(1tXq\K23m1t9QO8o4[JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMScAWgJcG`Me,TFJiW&qSs+:91s)e9Zs(q^Jqg/9jqf;LIqe,eDpM0GBo5=;/
+q.]k-s(VLTq-O)0oka5.qu6?irGD4.s)%cOqZ-G$s%E)qoiD*0oj[_irrE'loj[Spoh4[]a]@S6
+nSR`>q1F7uQ2gjaJcDGDSH+6 at L&_/QM?!MSec5XLJcDeNr;b[RnU0/Js*Wr.rrE#trr at WMg&M'f
+rrBMDqZ,"ZrrDF%JcCf2rr at WMrVultX8d\~>
+[K$7,JcF:#rrE#trr at WMRK*3cJcF@%rrD$Xs-WhZrN-$ts0Ma0s/#[mrMBIsq7-C8q6g%.os+8!
+ql]\3q76O#s/u=#qn_m4rPA6BrCch`rTO"TqZ,aLq>U?Vp%/"Ys0D[gp%.SMs6/e?ao:Jpn*';t
+q9bu;rr at WMp&G$lJcDGDrrAbmrr at WML&_/QJcC<$JcG]Kr;bgVnYb-3s.noZrr at WMe,TCFs6&/8
+l2(AMq#L<`oC2G?n*0H+pXK5VJcEpnrrC+>rr at WMrVultX8d\~>
+[K$7,JcF:#rrE#trr at WMRK*3cJcF@%rrD$XS,NBMiViTKrU]^^oD\Ue`W#nCJc<jlU]:>oJcGEC
+rr at WMU&Y,mU&Y,mJcCH(rr at WMJcC<$rVufriW%$ul2Ub`JcF4!s%rY[rE0(oqapTQrBp6Qq)A%8
+r at Ib'q#L4Lkq)9Hk8&XKbQ%SBa8c/>JcG]KrrB,"J,~>
+[K$7,JcF:#rrE#trr at WMRK*3cJcF@%rrD$Xs,-i.rHJ9fs)7pXs*ailrI+Wbq.fk at q/6"Col9_D
+qfMR=q.]k-s)e3aqdK)4o3qUsp&Fu-pK%.kj^S$drGD4:q+L_fs)%F<oiCl]s)%(2a]@S6mqqT>
+q1GIBrr at WMp&G$lJcDGDSH+6 at L&_/QJcC<$JcG]Kr;bgVnU0)Hs*s;5rr at WMe,T@^rrBeLq#If<
+JcEpnrrC+>rr at WMrVultX8d\~>
+[K$7,JcF:#rrE#trr at WMRK*3cJcF@%rrD$Xs-WhZrN-$ts0Ma0s/#[mrMBIsq7-C8q6g%.os+8!
+ql]\3q76O#s/u=#qn_m4rPA6BrCch`rTO"TqZ,aLq>U?Vp%/"Ys0D[gp%.SMs6/e?ao:Jpn*';t
+q9bu;rr at WMp&G$lJcDGDrrAbmrr at WML&_/QJcC<$JcG]Kr;bgVnYb-3s.noZrr at WMe,TCFs6&/8
+l2(AMq#L<`oC2G?n*0H+pXK5VJcEpnrrC+>rr at WMrVultX8d\~>
+[K$7,JcF:#rrE#trr at WMRK*3cJcF@%rrD$XS,NBMiViTKrU]^^oD\Ue`W#nCJc<jlU]:>oJcGEC
+rr at WMU&Y,mU&Y,mJcCH(rr at WMJcC<$rVufriW%$ul2Ub`JcF4!s%rY[rE0(oqapTQrBp6Qq)A%8
+r at Ib'q#L4Lkq)9Hk8&XKbQ%SBa8c/>JcG]KrrB,"J,~>
+[K$7,JcF:#rrE#trr at WMRK*3cJcF@%rrD$Xs,-i.rHJ9fs)7pXs*ailrI+Wbq.fk at q/6"Col9_D
+qfMR=q.]k-s)e3aqdK)4o3qUsp&Fu-pK%.kj^S$drGD4:q+L_fs)%F<oiCl]s)%(2a]@S6mqqT>
+q1GIBrr at WMp&G$lJcDGDSH+6 at L&_/QJcC<$JcG]Kr;bgVnU0)Hs*s;5rr at WMe,T@^rrBeLq#If<
+JcEpnrrC+>rr at WMrVultX8d\~>
+[K$7,JcF@%rr at WMNW9"YJcE4Zs-it\s-<V\s/>t,s-inbs.TIhrNQ=(q7-I:pU0t0nZi&#o<.o-
+rOMm8s.B1gqn`$8rNc+1rCch`qrn"XqZ-NWjn&BKqrmYCqu6KVp%._QqrmG=ao:Jpn*';tq9bu;
+rr at WMp&G$lJcDGDrrAbmrr at WML]@;QQiI'cJcC<$jo>8Zjo=kKgRS;AJcE:\rVccZg\pI7qZ-6Z
+oC2MAs475!n*0N-s4mG"s1s9daoDA at JcEXfrrB,"J,~>
+[K$7,JcF@%rr at WMNW9"YJcE4Zs8JSfs6&_HnbW4Up&FdcqZ)3HL]4(Krr at WMp&G$lJcDGDrrAbm
+rr at WML]@;QQiI'cJcC<$jo>8Zjo<I$JcE:\s%r_ts$?ZerD!/\q*t<MohP<AogA[:qZ-RRs"*h%
+pFQ>'q(2O]rsS??k8&XKaoDA at JcEXfrrB,"J,~>
+[K$7,JcF@%rr at WMNW9"YJcE4Zs1A;_s,I&,s*F]]s,$]#s+12urGqp\q.fqBpMTqEnT"MFo5se7
+rFu4Hs&T#AqdK)4ojRgup&Fo+rDrdqqebG(qc<T2o4%Siqec"8pK%/aqeb_0a]@S6mqqT>q1GIB
+rr at WMp&G$lJcDGDSH+6 at L]@;QQiI'cJcC<$jo>8Zjo=jugP>fVJcE:\r>,D5`>8=NgD9_ff+rr;
+aoDA at JcEXfrrB,"J,~>
+[K$7,JcF@%rr at WMNW9"YJcE4Zs-it\s-<V\s/>t,s-inbs.TIhrNQ=(q7-I:pU0t0nZi&#o<.o-
+rOMm8s.B1gqn`$8rNc+1rCch`qrn"XqZ-NWjn&BKqrmYCqu6KVp%._QqrmG=ao:Jpn*';tq9bu;
+rr at WMp&G$lJcDGDrrAbmrr at WML]@;QQiI'cJcC<$jo>8Zjo=kKgRS;AJcE:\rVccZg\pI7qZ-6Z
+oC2MAs475!n*0N-s4mG"s1s9daoDA at JcEXfrrB,"J,~>
+[K$7,JcF@%rr at WMNW9"YJcE4Zs8JSfs6&_HnbW4Up&FdcqZ)3HL]4(Krr at WMp&G$lJcDGDrrAbm
+rr at WML]@;QQiI'cJcC<$jo>8Zjo<I$JcE:\s%r_ts$?ZerD!/\q*t<MohP<AogA[:qZ-RRs"*h%
+pFQ>'q(2O]rsS??k8&XKaoDA at JcEXfrrB,"J,~>
+[K$7,JcF@%rr at WMNW9"YJcE4Zs1A;_s,I&,s*F]]s,$]#s+12urGqp\q.fqBpMTqEnT"MFo5se7
+rFu4Hs&T#AqdK)4ojRgup&Fo+rDrdqqebG(qc<T2o4%Siqec"8pK%/aqeb_0a]@S6mqqT>q1GIB
+rr at WMp&G$lJcDGDSH+6 at L]@;QQiI'cJcC<$jo>8Zjo=jugP>fVJcE:\r>,D5`>8=NgD9_ff+rr;
+aoDA at JcEXfrrB,"J,~>
+[K$7,JcC<$JcFX-r;_EKmJm+bec5Z:s.KCPs-<V_s0M`os/#aos.TCfs02I(qmcU4qk!hqs1%O&
+l`U9+s2"H<s.B+erPA04rMTD(nc/XQq#L<kqrm_Es60(Gqu6ETp%/.]q<7MCoD\RLmISBtkO\6-
+n(mfeq>^HpJcDGDrr at WMU&Y,mU&Y,mJcCN*r;`8crr at WMQiI'cbQ%SBkPt.Ofpr)?q>^BnJcE^h
+s8DoZg\p[=qZ-Tkn+6/?p$M54p#c;0q:,G\s1+Eprr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$JcFX-r;_EKmJm+bec2'9s6&kLoD8 at Ync/Xgq#H!FJc>]Kq>^HpJcDGDrr at WMU&Y,m
+U&Y,mJcCN*r;`8crr at WMQiI'cbQ%SBkPr[&q>^BnJcE^hs%*)Ss&f4oqapZSs%WMbqc3SlrD*/I
+pI"fXpG`+'of)[trAXI%migd.Q2gjaJcC<$q>^HpX8d\~>
+[K$7,JcC<$JcFX-r;_EKmJm+bec5Z,s+:98s,I&)s)7pos*aons+1,ss)S'\qeH(Iqh4ues(_"B
+lZE/5s'bY<s&Sr?rF,A8rHS'Fnc/W+q#L:mqec"8s)%@:qc<N0oj[kmq/,e6pK%5cq/,M.a&_A4
+nSR`>q1JMCrr at WMU&Y,mJcDGDSH+6 at L]@;QRK*9eJcD):rrC7BrrD6^o6f5Hs*XYBr;_EK`W,rR
+r;b"VqZ*H.Q2gjaJcC<$q>^HpX8d\~>
+[K$7,JcC<$JcFX-r;_EKmJm+bec5Z:s.KCPs-<V_s0M`os/#aos.TCfs02I(qmcU4qk!hqs1%O&
+l`U9+s2"H<s.B+erPA04rMTD(nc/XQq#L<kqrm_Es60(Gqu6ETp%/.]q<7MCoD\RLmISBtkO\6-
+n(mfeq>^HpJcDGDrr at WMU&Y,mU&Y,mJcCN*r;`8crr at WMQiI'cbQ%SBkPt.Ofpr)?q>^BnJcE^h
+s8DoZg\p[=qZ-Tkn+6/?p$M54p#c;0q:,G\s1+Eprr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$JcFX-r;_EKmJm+bec2'9s6&kLoD8 at Ync/Xgq#H!FJc>]Kq>^HpJcDGDrr at WMU&Y,m
+U&Y,mJcCN*r;`8crr at WMQiI'cbQ%SBkPr[&q>^BnJcE^hs%*)Ss&f4oqapZSs%WMbqc3SlrD*/I
+pI"fXpG`+'of)[trAXI%migd.Q2gjaJcC<$q>^HpX8d\~>
+[K$7,JcC<$JcFX-r;_EKmJm+bec5Z,s+:98s,I&)s)7pos*aons+1,ss)S'\qeH(Iqh4ues(_"B
+lZE/5s'bY<s&Sr?rF,A8rHS'Fnc/W+q#L:mqec"8s)%@:qc<N0oj[kmq/,e6pK%5cq/,M.a&_A4
+nSR`>q1JMCrr at WMU&Y,mJcDGDSH+6 at L]@;QRK*9eJcD):rrC7BrrD6^o6f5Hs*XYBr;_EK`W,rR
+r;b"VqZ*H.Q2gjaJcC<$q>^HpX8d\~>
+[K$7,JcFp5r;_EK\,ZI.`W,l:JcERdrL3bOs/#aorL3b_rLs7fs02I(s1&#noq(uKpTa+gq5XJ2
+qmQI#s-3PQq5<hirMTP,rU]^^qZ-NWqu6?Rp[eFKs.'+ep%/4_pZV;ArVlWVp%.kUpZUr7ec,I%
+qu5dMn`]Gtq9es:rr at WMU]:>oJcDGDrrAbmrr at WML&_/QJcC<$XoJD$aoD;>mJl^Sf:7El]Dqj.
+rTE#8p%nOcp\O at MoC2G?n*0N-s4mY3qpbYts1O]trr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcFp5r;_EK\,ZI.`W,l:JcERds8JYhrV?KVs7u9bqtg![rVlKiqZ,OQrN_"RSc8B`rr at WM
+U]:>oJcDGDrrAbmrr at WML&_/QJcC<$XoJD$aoD;>mJk6*JcE@^rEfLis%*/ls%W;\s$lr]rCQld
+q,./erAXU at qZ-X`o/H\Eof)[trAXI%migd.Q2gjaJcC<$rVults8W*!X8d\~>
+[K$7,JcFp5r;_EK\,ZI.`W,l:JcERds1A;fs,I&,s*FX#s*aiss*aofrH8-TrJ^E&q2"cbm<&/K
+s'bY<s'bqOq0;LIrHS3JrF5I"qZ-M1qc<H.pL=/>ruqCXoj[r%pMKS4rCcs'oj[SppMK5*eQ2Ql
+qc;lhnSR`>q1JGArr at WMU]:>oJcDGDSH+6 at L&_/QJcC<$XoJD$aoD;>mJl^(f8"qW]DqgFr;b4\
+qZ*6(Q2gjaJcC<$rVults8W*!X8d\~>
+[K$7,JcFp5r;_EK\,ZI.`W,l:JcERdrL3bOs/#aorL3b_rLs7fs02I(s1&#noq(uKpTa+gq5XJ2
+qmQI#s-3PQq5<hirMTP,rU]^^qZ-NWqu6?Rp[eFKs.'+ep%/4_pZV;ArVlWVp%.kUpZUr7ec,I%
+qu5dMn`]Gtq9es:rr at WMU]:>oJcDGDrrAbmrr at WML&_/QJcC<$XoJD$aoD;>mJl^Sf:7El]Dqj.
+rTE#8p%nOcp\O at MoC2G?n*0N-s4mY3qpbYts1O]trr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcFp5r;_EK\,ZI.`W,l:JcERds8JYhrV?KVs7u9bqtg![rVlKiqZ,OQrN_"RSc8B`rr at WM
+U]:>oJcDGDrrAbmrr at WML&_/QJcC<$XoJD$aoD;>mJk6*JcE@^rEfLis%*/ls%W;\s$lr]rCQld
+q,./erAXU at qZ-X`o/H\Eof)[trAXI%migd.Q2gjaJcC<$rVults8W*!X8d\~>
+[K$7,JcFp5r;_EK\,ZI.`W,l:JcERds1A;fs,I&,s*FX#s*aiss*aofrH8-TrJ^E&q2"cbm<&/K
+s'bY<s'bqOq0;LIrHS3JrF5I"qZ-M1qc<H.pL=/>ruqCXoj[r%pMKS4rCcs'oj[SppMK5*eQ2Ql
+qc;lhnSR`>q1JGArr at WMU]:>oJcDGDSH+6 at L&_/QJcC<$XoJD$aoD;>mJl^(f8"qW]DqgFr;b4\
+qZ*6(Q2gjaJcC<$rVults8W*!X8d\~>
+[K$7,JcC<$RK*9e_>jH6KE(rOa8c1,s.K=Ns/>s`s-itarLs1ds/H%#rKdDGq4@,GmB6&\s.B1c
+rM0CTq3V,Zos4Ims5!SDq>^<ls8ViWqu6?Rq=FLIoCMY=oCMY=p[e.Yp#t`5kPirdqt'ics7>^C
+n_O#gJcD/<r;_EKU&Y,mU&Y,mJcCH(rrB%ur;_EKJcEpnr;cBfnYboIs-W&@JcE@^qu-QXg\q*I
+qZ-*]n+65Ap$M/2p#c;3q:,G\JcC<$O8o4[s8W*!X8d\~>
+[K$7,JcC<$RK*9e_>jH6KE(rOa8_k3p\Fj\q>'pdqtg-_q>U3iqZ-ZrJc;ABs0C2SJcD/<r;_EK
+U&Y,mU&Y,mJcCH(rrB%ur;_EKJcEpnr;cBfa8LSh]Dqn-rE0(cs&f:qqapTXrCQldpJLlJqZ-L\
+s%`/Es%`5Gq^hV'pFPbVjVEFIJcCf2rrE*!rrB,"J,~>
+[K$7,JcC<$RK*9e_>jH6KE(rOa8c0ss+:36s*F^(s,$c(rIOoqs*=WerJ^]9q1S9om<%rEs+C&^
+s)IjYs*43Qq0;dGq>^<ls8Vh1qc<H.q-s5<o4%B0o4%B0pL<ktokj#(k>p&VqdTR at s'kG6nTak^
+JcD/<r;_EKU&UY`JcCH(rrB%ur;_EKJcEpnr;cBfnU0k^s,-&rJcE@^q\K23f,"5`R21ARJcCf2
+rrE*!rrB,"J,~>
+[K$7,JcC<$RK*9e_>jH6KE(rOa8c1,s.K=Ns/>s`s-itarLs1ds/H%#rKdDGq4@,GmB6&\s.B1c
+rM0CTq3V,Zos4Ims5!SDq>^<ls8ViWqu6?Rq=FLIoCMY=oCMY=p[e.Yp#t`5kPirdqt'ics7>^C
+n_O#gJcD/<r;_EKU&Y,mU&Y,mJcCH(rrB%ur;_EKJcEpnr;cBfnYboIs-W&@JcE@^qu-QXg\q*I
+qZ-*]n+65Ap$M/2p#c;3q:,G\JcC<$O8o4[s8W*!X8d\~>
+[K$7,JcC<$RK*9e_>jH6KE(rOa8_k3p\Fj\q>'pdqtg-_q>U3iqZ-ZrJc;ABs0C2SJcD/<r;_EK
+U&Y,mU&Y,mJcCH(rrB%ur;_EKJcEpnr;cBfa8LSh]Dqn-rE0(cs&f:qqapTXrCQldpJLlJqZ-L\
+s%`/Es%`5Gq^hV'pFPbVjVEFIJcCf2rrE*!rrB,"J,~>
+[K$7,JcC<$RK*9e_>jH6KE(rOa8c0ss+:36s*F^(s,$c(rIOoqs*=WerJ^]9q1S9om<%rEs+C&^
+s)IjYs*43Qq0;dGq>^<ls8Vh1qc<H.q-s5<o4%B0o4%B0pL<ktokj#(k>p&VqdTR at s'kG6nTak^
+JcD/<r;_EKU&UY`JcCH(rrB%ur;_EKJcEpnr;cBfnU0k^s,-&rJcE@^q\K23f,"5`R21ARJcCf2
+rrE*!rrB,"J,~>
+[K$7,JcGECrr at WMJcF^/r;_]SrrC%<s-it?s,R,Us,6iEs.91_rLWnPqigoKo:,QCpTF+fqj[VE
+pS7bNq3V&=pS7Q?qt'jfqZ-NnoB?5Rp#u5CqrmYCoB>r?s5!A3p%/.]n*'01nc$SbrR(Y"rR(0!
+n_NreJcD5>r;_EKU&Y,mU&Y,mJcCH(rr at WMJcC<$li6n`p&FQ[nXTWHnXTQ3rLAH=]Dqd,s6&5:
+qZ,gUnalAAp$MM<s3pl0s5s(?rSRM%s1s9d^&S$2JcF4!rrB,"J,~>
+[K$7,JcGECrr at WMJcF^/r;_]SrrC%<s8K(tn+m"TrV?-[s7?3]oD\diqZ-NnJc;;@s0C,QJcD5>
+r;_EKU&Y,mU&Y,mJcCH(rr at WMJcC<$li6n`p&EA:rTF.XJcE@^s(_R9s'G^ks&f:qrCR#cq+^fZ
+rDiShqZ-:VrD*#Es%`5Gq^hV'pFPnZrsScKk8&XK^&S$2JcF4!rrB,"J,~>
+[K$7,JcGECrr at WMJcF^/r;_]SrrC%<s1A<'s-3P3s-N\@s+L?%rIk',qiCW-o8*4#pN6"Oqfi'm
+pMBkLq02dipMBYMqdTU*qZ-Nno54M.okjM6qebq6o5452s*43Roj[l#mqqH$nQ*\TrIb,/rIaWW
+nTae\JcD5>r;_EKU&UY`JcCH(rr at WMJcC<$li6n`p&FQ0nV at .%nV@'^rJ,t(]DqaDrrCjjqZ*r<
+rrD'pJcEF`r;_EKe,TFJX8d\~>
+[K$7,JcGECrr at WMJcF^/r;_]SrrC%<s-it?s,R,Us,6iEs.91_rLWnPqigoKo:,QCpTF+fqj[VE
+pS7bNq3V&=pS7Q?qt'jfqZ-NnoB?5Rp#u5CqrmYCoB>r?s5!A3p%/.]n*'01nc$SbrR(Y"rR(0!
+n_NreJcD5>r;_EKU&Y,mU&Y,mJcCH(rr at WMJcC<$li6n`p&FQ[nXTWHnXTQ3rLAH=]Dqd,s6&5:
+qZ,gUnalAAp$MM<s3pl0s5s(?rSRM%s1s9d^&S$2JcF4!rrB,"J,~>
+[K$7,JcGECrr at WMJcF^/r;_]SrrC%<s8K(tn+m"TrV?-[s7?3]oD\diqZ-NnJc;;@s0C,QJcD5>
+r;_EKU&Y,mU&Y,mJcCH(rr at WMJcC<$li6n`p&EA:rTF.XJcE@^s(_R9s'G^ks&f:qrCR#cq+^fZ
+rDiShqZ-:VrD*#Es%`5Gq^hV'pFPnZrsScKk8&XK^&S$2JcF4!rrB,"J,~>
+[K$7,JcGECrr at WMJcF^/r;_]SrrC%<s1A<'s-3P3s-N\@s+L?%rIk',qiCW-o8*4#pN6"Oqfi'm
+pMBkLq02dipMBYMqdTU*qZ-Nno54M.okjM6qebq6o5452s*43Roj[l#mqqH$nQ*\TrIb,/rIaWW
+nTae\JcD5>r;_EKU&UY`JcCH(rr at WMJcC<$li6n`p&FQ0nV at .%nV@'^rJ,t(]DqaDrrCjjqZ*r<
+rrD'pJcEF`r;_EKe,TFJX8d\~>
+[K$7,JcGKErr at WMJcFL)r;`>errBV0s*Xj8rJpo at s,6oGs-*DTrLX%QrKd>ErLX%VopbK=o;_bY
+q3V&=qkO1Xs,m,DrJ^R9pYGWFp&FXIs8MWRrU]dIp[eF at oB?#ArS@/1p%/4_mHEs/p\r"bn'Usp
+n(mfeli6tbJcE"Trr at WMU&Y,mU&Y,mJcCH(rrBP.rrAnqrr at WMOoP@[q>]u_nXTQFl^\!Nj8],Z
+JcFR+qu-QXj8JiTq>KRSnalAAp$MG:s3pr2s3p`,qqqA%s4@:eJcC<$NW9"YX8d\~>
+[K$7,JcGKErr at WMJcFL)r;`>errBV0Xo7S]s7ZK]q=aj[s7GdZq#L*fJc:6"n,DYQrr at WMZ2ah(
+JcDGDrrAbmrr at WML&_/Q\,ZI.V>pPqJcCl4r;cZn`Vnisrr at WMh>dL]s&f;-s$?TXrCR#cq+^fZ
+rDienqZ-RlrC6NKrD*)GrD)rCs"*t)odo\XrsSiMrtbV7kn\jMJcC`0rrB,"J,~>
+[K$7,JcGKErr at WMJcFL)r;`>errBV0s/5mRrKR>Es-NbBs,[,0rIk33rJ^W7rIk3/on`-ro6BqP
+rIau`s*+K_q02diq/,kNq#L*fo54M.o54G8pMKY6s*4-Pq-s;IokjA2s&SN(m:,fj_0GF$q/,SF
+q1J#5rr at WMZ2ah(JcDGDSH+6 at L&_/Q\,ZI.V>pPqJcCl4r;cZnnU0k^rJKors*s)/rr at WMh>d?f
+rrD'pqZ*Z4rrE!5rrD:!JcC<$NW9"YX8d\~>
+[K$7,JcGKErr at WMJcFL)r;`>errBV0s*Xj8rJpo at s,6oGs-*DTrLX%QrKd>ErLX%VopbK=o;_bY
+q3V&=qkO1Xs,m,DrJ^R9pYGWFp&FXIs8MWRrU]dIp[eF at oB?#ArS@/1p%/4_mHEs/p\r"bn'Usp
+n(mfeli6tbJcE"Trr at WMU&Y,mU&Y,mJcCH(rrBP.rrAnqrr at WMOoP@[q>]u_nXTQFl^\!Nj8],Z
+JcFR+qu-QXj8JiTq>KRSnalAAp$MG:s3pr2s3p`,qqqA%s4@:eJcC<$NW9"YX8d\~>
+[K$7,JcGKErr at WMJcFL)r;`>errBV0Xo7S]s7ZK]q=aj[s7GdZq#L*fJc:6"n,DYQrr at WMZ2ah(
+JcDGDrrAbmrr at WML&_/Q\,ZI.V>pPqJcCl4r;cZn`Vnisrr at WMh>dL]s&f;-s$?TXrCR#cq+^fZ
+rDienqZ-RlrC6NKrD*)GrD)rCs"*t)odo\XrsSiMrtbV7kn\jMJcC`0rrB,"J,~>
+[K$7,JcGKErr at WMJcFL)r;`>errBV0s/5mRrKR>Es-NbBs,[,0rIk33rJ^W7rIk3/on`-ro6BqP
+rIau`s*+K_q02diq/,kNq#L*fo54M.o54G8pMKY6s*4-Pq-s;IokjA2s&SN(m:,fj_0GF$q/,SF
+q1J#5rr at WMZ2ah(JcDGDSH+6 at L&_/Q\,ZI.V>pPqJcCl4r;cZnnU0k^rJKors*s)/rr at WMh>d?f
+rrD'pqZ*Z4rrE!5rrD:!JcC<$NW9"YX8d\~>
+[K$7,JcF'rrr at WMJcGcMr;`Pkr;aD.s-it?s,R,Us,6oGs-*JSs.TI^rJ:K>rK-o?rL!>Ko9f?<
+rMoaaop>K5rM0CZs,m8HrS@@uqrn"7qZ-ZPs7>j^s3]ljs7>pIp[eF at s,m>OpZVMGqq_57s.&uM
+p%.M5lgt)S]A;Ytn_O#gl2Ub`JcE(Vrr at WMU&Y,mU&Y,mJcF:#q#KOVpAj+NrrBV0rrAhorr at WM
+NW8qWrVuDcnXTQFs+Td/j8],ZJcFX-q>L?Vl2CJZnbq_KnalGCp$M54s3p`,qqq;#s1s9dPQ1X_
+JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMJcGcMr;`Pkr;aD.s8KM+lhU;Ks6p!Zs7G^XqZ-TooDcl1rNbVcs0 at 4Ta8Y?'
+rr at WMZiC%*JcDGDrrAbmrr at WMec5FFjo>&ThuE]V\c;[0U]:>oJcC`0r;cfrh>RB:li#lDrr at WM
+huE^Tqd0:grD!;`rD<;as%3/hqZ- at fqaUHMqbHlErD)rCs"*n'pFPbVrtbV7kn\jMPQ1X_JcG]K
+rrB,"J,~>
+[K$7,JcF'rrr at WMJcGcMr;`Pkr;aD.s1A<'s-3P3s-NbBs,[25s+13+rL<hGrKI,>rJUE+o8EF)
+rHRdTq1JW^s*+K_rHJ3bqh+c_rHS2>s*4QQoDeiCj)+g*okjG4s*4Ppruq,RqdTGIrGDQXqec"8
+lYYrsrDpOTkC`;Lq1Ir3rr at WMZiC%*JcDGDSH+6 at ec5FFjo>&ThuE]V\c;[0U]:>oJcC`0r;cfr
+nU0k^rJLVol\FO#rr at WMhuEKfrrD:!qZ*6(rrD:!JcCr6rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMJcGcMr;`Pkr;aD.s-it?s,R,Us,6oGs-*JSs.TI^rJ:K>rK-o?rL!>Ko9f?<
+rMoaaop>K5rM0CZs,m8HrS@@uqrn"7qZ-ZPs7>j^s3]ljs7>pIp[eF at s,m>OpZVMGqq_57s.&uM
+p%.M5lgt)S]A;Ytn_O#gl2Ub`JcE(Vrr at WMU&Y,mU&Y,mJcF:#q#KOVpAj+NrrBV0rrAhorr at WM
+NW8qWrVuDcnXTQFs+Td/j8],ZJcFX-q>L?Vl2CJZnbq_KnalGCp$M54s3p`,qqq;#s1s9dPQ1X_
+JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMJcGcMr;`Pkr;aD.s8KM+lhU;Ks6p!Zs7G^XqZ-TooDcl1rNbVcs0 at 4Ta8Y?'
+rr at WMZiC%*JcDGDrrAbmrr at WMec5FFjo>&ThuE]V\c;[0U]:>oJcC`0r;cfrh>RB:li#lDrr at WM
+huE^Tqd0:grD!;`rD<;as%3/hqZ- at fqaUHMqbHlErD)rCs"*n'pFPbVrtbV7kn\jMPQ1X_JcG]K
+rrB,"J,~>
+[K$7,JcF'rrr at WMJcGcMr;`Pkr;aD.s1A<'s-3P3s-NbBs,[25s+13+rL<hGrKI,>rJUE+o8EF)
+rHRdTq1JW^s*+K_rHJ3bqh+c_rHS2>s*4QQoDeiCj)+g*okjG4s*4Ppruq,RqdTGIrGDQXqec"8
+lYYrsrDpOTkC`;Lq1Ir3rr at WMZiC%*JcDGDSH+6 at ec5FFjo>&ThuE]V\c;[0U]:>oJcC`0r;cfr
+nU0k^rJLVol\FO#rr at WMhuEKfrrD:!qZ*6(rrD:!JcCr6rr at WMrVultX8d\~>
+[K$7,L]@;Qc2[eDJcC<$qu?TpJcFL)s*Xj!s+(-0rJUW<s.TI^qhY34qigoEqj[2Eq3:c0s-rJD
+q2G?Ks-NcAs,m37q9f0)qZ-HJnc/X:oB?5%oB?5Gp#u5Cqq^r/qt'X>s60KQq<7YGs5!#)mIRaA
+kL'+Fq;(koVuQbsJcGECrr at WMU&Y,mU&Y,mJcF@%o`47Vo)RbLrr at WMJcC<$huE]Vn#,]Gs-Wh<
+l(!>)^]4-.s6&qNq#KaZl2'rAoC2MAj6?BsrRCl!JcCr6rr at WMrVultX8d\~>
+[K$7,L]@;Qc2[eDJcC<$qu?TpJcFL)]D_'kp%J at Us8N&(n,E1aq>TpaWW)q'Jc<^hVuQbsJcGEC
+rr at WMU&Y,mU&Y,mJcF@%o`47Vo)RbLrr at WMJcC<$huE]Vh>RB:l2?25^]4=Ks&f5+s$?ZZs'Y_9
+s'u"%q#LFpo25NmrC6ZOqbHlEqbHB7pFPbVjVEFIPQ1X_JcG]KrrB,"J,~>
+[K$7,L]@;Qc2[eDJcC<$qu?TpJcFL)s/5mhs.]OXrKmJDs+13+qj[PJqiCW4qhXj%o8`3^q1J]`
+s*+Kfs"+%lq1JW_qZ-G:nc/WAo54M[o54M:okjM6qfqdNqdTAGs)%cZq/,q:s*3jHm:*JJkC`Sj
+q0;^fVuQbsJcGECrr at WMU&Y,mTb%/'JcF@%o`47Vo)RbLrr at WMJcC<$huE]VmsOY\s,-htl%aii
+^]4*FrrDR)q#Gs]rt^1cPQ1X_JcG]KrrB,"J,~>
+[K$7,L]@;Qc2[eDJcC<$qu?TpJcFL)s*Xj!s+(-0rJUW<s.TI^qhY34qigoEqj[2Eq3:c0s-rJD
+q2G?Ks-NcAs,m37q9f0)qZ-HJnc/X:oB?5%oB?5Gp#u5Cqq^r/qt'X>s60KQq<7YGs5!#)mIRaA
+kL'+Fq;(koVuQbsJcGECrr at WMU&Y,mU&Y,mJcF@%o`47Vo)RbLrr at WMJcC<$huE]Vn#,]Gs-Wh<
+l(!>)^]4-.s6&qNq#KaZl2'rAoC2MAj6?BsrRCl!JcCr6rr at WMrVultX8d\~>
+[K$7,L]@;Qc2[eDJcC<$qu?TpJcFL)]D_'kp%J at Us8N&(n,E1aq>TpaWW)q'Jc<^hVuQbsJcGEC
+rr at WMU&Y,mU&Y,mJcF@%o`47Vo)RbLrr at WMJcC<$huE]Vh>RB:l2?25^]4=Ks&f5+s$?ZZs'Y_9
+s'u"%q#LFpo25NmrC6ZOqbHlEqbHB7pFPbVjVEFIPQ1X_JcG]KrrB,"J,~>
+[K$7,L]@;Qc2[eDJcC<$qu?TpJcFL)s/5mhs.]OXrKmJDs+13+qj[PJqiCW4qhXj%o8`3^q1J]`
+s*+Kfs"+%lq1JW_qZ-G:nc/WAo54M[o54M:okjM6qfqdNqdTAGs)%cZq/,q:s*3jHm:*JJkC`Sj
+q0;^fVuQbsJcGECrr at WMU&Y,mTb%/'JcF@%o`47Vo)RbLrr at WMJcC<$huE]VmsOY\s,-htl%aii
+^]4*FrrDR)q#Gs]rt^1cPQ1X_JcG]KrrB,"J,~>
+[K$7,JcC<$JcEXfr;aD.r;`u"s).dfs,R,!s,6o=s-*JSs-s%BrJ:?4s-*D?rL!PQs-38Fs,m2C
+q1SWrnX'-3qpGAus,m37rR(E at oA0$<rR(<%rR(6#s3^H%rU]j at oB?5GpYGN+qt'^@lfds3Z/+Tj
+n](Ubq9c2Arr at WMp&G$lJcDGDrrAbmrr at WMg&M!Nq>^BnmJm%`q>^Hpj8]&XaoD;>JcC<$RK*3c
+qksCgs/5=UrKui>JcELbq>L?Vp\jshiVi*=nalAAp$Lf(qqqG*s4%)#s29KgZ2ab&JcFd1rrB,"
+J,~>
+[K$7,JcC<$JcEXfr;aD.r;`u"s8Dus_u8uuq=ad]rUfj`s0DCuq#L$coDaC at Jc=p5WW2tuJcGEC
+rr at WMU&Y,mU&Y,mJcFF'r;cZnr;c6bqZ-HlrrD*Zr;at>r;_EKJcD/<r;an:JcELbs(_L=s&f:e
+s'tq<s'tp+rCQrfnPT<kqaUNOq+gfGq+g05pFPbVitd4GZ2ab&JcFd1rrB,"J,~>
+[K$7,JcC<$JcEXfr;aD.r;`u"s.KD>s.B=Us0;Tjs-*JDs+LE.s.91Yqih&@rKdD?rJ:K6pP\?t
+nTXYYrHS>nqfr'lq#L#2oDecAokjY[o54M[o54G8q0;LJs'k_IokjS8qfqFDo4"tLkC`;bs*4?l
+WW2tuJcGECrr at WMU&Y,mTb%/'JcFF'r;cZnr;c6bqZ-HlrrD*Zr;at>r;_EKJcD/<r;c_BrI=ip
+mt^k!l%aii^]4*FrrDd/qZ)0_obN,YZ2ab&JcFd1rrB,"J,~>
+[K$7,JcC<$JcEXfr;aD.r;`u"s).dfs,R,!s,6o=s-*JSs-s%BrJ:?4s-*D?rL!PQs-38Fs,m2C
+q1SWrnX'-3qpGAus,m37rR(E at oA0$<rR(<%rR(6#s3^H%rU]j at oB?5GpYGN+qt'^@lfds3Z/+Tj
+n](Ubq9c2Arr at WMp&G$lJcDGDrrAbmrr at WMg&M!Nq>^BnmJm%`q>^Hpj8]&XaoD;>JcC<$RK*3c
+qksCgs/5=UrKui>JcELbq>L?Vp\jshiVi*=nalAAp$Lf(qqqG*s4%)#s29KgZ2ab&JcFd1rrB,"
+J,~>
+[K$7,JcC<$JcEXfr;aD.r;`u"s8Dus_u8uuq=ad]rUfj`s0DCuq#L$coDaC at Jc=p5WW2tuJcGEC
+rr at WMU&Y,mU&Y,mJcFF'r;cZnr;c6bqZ-HlrrD*Zr;at>r;_EKJcD/<r;an:JcELbs(_L=s&f:e
+s'tq<s'tp+rCQrfnPT<kqaUNOq+gfGq+g05pFPbVitd4GZ2ab&JcFd1rrB,"J,~>
+[K$7,JcC<$JcEXfr;aD.r;`u"s.KD>s.B=Us0;Tjs-*JDs+LE.s.91Yqih&@rKdD?rJ:K6pP\?t
+nTXYYrHS>nqfr'lq#L#2oDecAokjY[o54M[o54G8q0;LJs'k_IokjS8qfqFDo4"tLkC`;bs*4?l
+WW2tuJcGECrr at WMU&Y,mTb%/'JcFF'r;cZnr;c6bqZ-HlrrD*Zr;at>r;_EKJcD/<r;c_BrI=ip
+mt^k!l%aii^]4*FrrDd/qZ)0_obN,YZ2ab&JcFd1rrB,"J,~>
+[K$7,QiI!aJcC<$XoJ>"JcFj3s*Xj,s+(,hrJUW<rIt3+s+1-1s-*>=s-WhUrKR,FrK7,Eq1S?j
+op>^7p!NfZs5!^;rS@>NqpGH-oA0$<qpG0%qpG*#s3^H%rU]d>p#u))p#uAGq;(B#p%,<Al-\t>
+rO`$Uh>dKTJcERdrr at WMU&Y,mU&Y,mJcFF'r;cZnr;c6br;bILr;_EKJcDkPrrBD*rMTSos/5ai
+rLEh?pRM2Ln!sEFrLAH=_>j?0rTF.XqZ,=Jlh^/Cp$hYAq<@qHoBH5&s69F<s5O(.s4@:eRK*9e
+JcC<$q>^HpX8d\~>
+[K$7,QiI!aJcC<$XoJ>"JcFj3s8Dusao1W&q=aj_rUfRXs0DV&qZ,s]oDaC at Jc=p5h>dKTJcERd
+rr at WMU&Y,mU&Y,mJcFF'r;cZnr;c6br;bILr;_EKJcDkPrrBD*rVcZpp&4jPg\l^'_>jO9qd0:g
+s%NH-s(;-.qd]Y6s%3/ho25Hkq*tBOq+gfGq+gZCs%`5GpFPbVpD3]-nJ7Pmrr at WMJcGQGrrB,"
+J,~>
+[K$7,QiI!aJcC<$XoJ>"JcFj3s/5n:s.]OurKmJDrLWtWs.TCTs,[&Cs,6o5rJp]3jc9"Xs*43h
+s,R,(s"++nqZ-MGs)%@PoDe]?pMKe[okj_]o54G8pNZ at Jom$.HrF5SIlYZ<(Xa')_muI at 8rI`r+
+rr at WM_>jN8JcDGDrrA`'rr at WMg&M!Nq>^BnmJm+bfDkdLJcC<$XoJD$ZiBuOr;ckFqg\R"rG_Ld
+rJL'!s,-c1JcERdq%io/r>,81K,4CcnJ7Pmrr at WMJcGQGrrB,"J,~>
+[K$7,QiI!aJcC<$XoJ>"JcFj3s*Xj,s+(,hrJUW<rIt3+s+1-1s-*>=s-WhUrKR,FrK7,Eq1S?j
+op>^7p!NfZs5!^;rS@>NqpGH-oA0$<qpG0%qpG*#s3^H%rU]d>p#u))p#uAGq;(B#p%,<Al-\t>
+rO`$Uh>dKTJcERdrr at WMU&Y,mU&Y,mJcFF'r;cZnr;c6br;bILr;_EKJcDkPrrBD*rMTSos/5ai
+rLEh?pRM2Ln!sEFrLAH=_>j?0rTF.XqZ,=Jlh^/Cp$hYAq<@qHoBH5&s69F<s5O(.s4@:eRK*9e
+JcC<$q>^HpX8d\~>
+[K$7,QiI!aJcC<$XoJ>"JcFj3s8Dusao1W&q=aj_rUfRXs0DV&qZ,s]oDaC at Jc=p5h>dKTJcERd
+rr at WMU&Y,mU&Y,mJcFF'r;cZnr;c6br;bILr;_EKJcDkPrrBD*rVcZpp&4jPg\l^'_>jO9qd0:g
+s%NH-s(;-.qd]Y6s%3/ho25Hkq*tBOq+gfGq+gZCs%`5GpFPbVpD3]-nJ7Pmrr at WMJcGQGrrB,"
+J,~>
+[K$7,QiI!aJcC<$XoJ>"JcFj3s/5n:s.]OurKmJDrLWtWs.TCTs,[&Cs,6o5rJp]3jc9"Xs*43h
+s,R,(s"++nqZ-MGs)%@PoDe]?pMKe[okj_]o54G8pNZ at Jom$.HrF5SIlYZ<(Xa')_muI at 8rI`r+
+rr at WM_>jN8JcDGDrrA`'rr at WMg&M!Nq>^BnmJm+bfDkdLJcC<$XoJD$ZiBuOr;ckFqg\R"rG_Ld
+rJL'!s,-c1JcERdq%io/r>,81K,4CcnJ7Pmrr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$RK*9eV>pJoJcG'9s*Xj!s+(-0s)J'ss+p]=s*=Qss+p]+rK.&Cqi(QBqipuFs,m82
+qh49drKm?9pX/rZs5!PPp!NfZp"f6>q9f$%q9es#rR(6#s7>p>pZVY)s,m'3p#uGIpYG0!q=FX6
+X52sdn](C:g].9RJcEXfrr at WMU&Y,mU&Y,mJcFL)r;cNjr;cBfr;b=Hrr at WMJcDkPrrBD*q5=/k
+rM9I\nXTQFnXTKDs."Z?_>j?0s6'7ZdJ`J/nalAAp[.kBrU'":q;;5(s4%)#RK*9eJcC<$rVult
+s8W*!X8d\~>
+[K$7,JcC<$RK*9eV>pJoJcG'9s8Dusci*2*qtC!_rUf at RqZ,gYoDc/rs0 at 4T\,P.^rr at WM_uK`:
+JcDGDrrAbmrr at WMg].3Pp&Fsjnc/Ofe,TFJJcC<$XoJD$ZiBk"r;b1BJcERds(_RCrEfM+qZ-S,
+q.'G4s(hR5o25BiqaUT_q+gfGq+gZCrD*)Godon^pFPDARK*9eJcC<$rVults8W*!X8d\~>
+[K$7,JcC<$RK*9eV>pJoJcG'9s/5nEs.]OXs0;Tjs-s%Ls/Gsgs-s%^rKI8Bqj.8?qi:Q3hi at YZ
+q0;XdrJpo&qZ-;As,QbsoDeW=q/,q[pMKk]o54M:om$4Js+C>&pNZ at Js'k_IlYZH,s+@@skC`;b
+q3p(<rr at WM_uK`:JcDGDrrA`'rr at WMg].3Pp&Fsjnc/Ofe,TFJJcC<$XoJD$ZiBiKr;ceGs,-?%
+rJL-#qhkE/JcERdq%ic+JJRJcRK*9eJcC<$rVults8W*!X8d\~>
+[K$7,JcC<$RK*9eV>pJoJcG'9s*Xj!s+(-0s)J'ss+p]=s*=Qss+p]+rK.&Cqi(QBqipuFs,m82
+qh49drKm?9pX/rZs5!PPp!NfZp"f6>q9f$%q9es#rR(6#s7>p>pZVY)s,m'3p#uGIpYG0!q=FX6
+X52sdn](C:g].9RJcEXfrr at WMU&Y,mU&Y,mJcFL)r;cNjr;cBfr;b=Hrr at WMJcDkPrrBD*q5=/k
+rM9I\nXTQFnXTKDs."Z?_>j?0s6'7ZdJ`J/nalAAp[.kBrU'":q;;5(s4%)#RK*9eJcC<$rVult
+s8W*!X8d\~>
+[K$7,JcC<$RK*9eV>pJoJcG'9s8Dusci*2*qtC!_rUf at RqZ,gYoDc/rs0 at 4T\,P.^rr at WM_uK`:
+JcDGDrrAbmrr at WMg].3Pp&Fsjnc/Ofe,TFJJcC<$XoJD$ZiBk"r;b1BJcERds(_RCrEfM+qZ-S,
+q.'G4s(hR5o25BiqaUT_q+gfGq+gZCrD*)Godon^pFPDARK*9eJcC<$rVults8W*!X8d\~>
+[K$7,JcC<$RK*9eV>pJoJcG'9s/5nEs.]OXs0;Tjs-s%Ls/Gsgs-s%^rKI8Bqj.8?qi:Q3hi at YZ
+q0;XdrJpo&qZ-;As,QbsoDeW=q/,q[pMKk]o54M:om$4Js+C>&pNZ at Js'k_IlYZH,s+@@skC`;b
+q3p(<rr at WM_uK`:JcDGDrrA`'rr at WMg].3Pp&Fsjnc/Ofe,TFJJcC<$XoJD$ZiBiKr;ceGs,-?%
+rJL-#qhkE/JcERdq%ic+JJRJcRK*9eJcC<$rVults8W*!X8d\~>
+[K$7,JcC<$RK*9eU&Y&kec5RJTE"q=s+C?%s)J'ss+UK:s*=QsrIP!&s,d8;q2G-6s-WV5rIjKf
+qo8Hfp!NX:s,m99p!NfZp"f6>q9f$%q9es#qpG*#s7>p>pZVS's,m'3pZVY)pYG0!rU]j4Xkj#3
+l-]%@pUc"VTE"iiJcDGDrrAbmrr at WMg].3Pp&Fsjnc/OfrVuZnhuE]Vg&M!NJcC<$M?!INs,HuQ
+r;ce`opkiFopkiFs.'+VJcEXfrVcTns6%Z*lh^/Cp$hYArTX:JmHOH(qq(kdJcC<$Q2gjas8W*!
+X8d\~>
+[K$7,JcC<$RK*9eU&Y&kec5RJTE"ris8LRIp%eX]q>'p]s7cKakPk>Ys0C\aoDc)ps0 at 4Tli-pi
+ci/LqTE"iiJcDGDrrAbmrr at WMg].3Pp&Fsjnc/OfrVuZnhuE]Vg&M!NJcC<$M?!JOs6'@Zr;b7D
+JcEXfs(_R?qZ-Xps(_FCq.'G4s(hR5o25BiqaUT_q+glIohPBCqbHfCpFQ7drAX=!k8&XKJcD#8
+rrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eU&Y&kec5RJTE"qhs3^k at s0;Tjs.97Os/GsgrLs7_s-*JNq3Li:s,5Qjq0;Rb
+qZ-XIrHS!fs,QbsoDeW=q/,q[pMKe[okj_<om$4JrIb,$pNZFLs+C&jlYZT0q1Geos#91pnW*@4
+JcDABr;_EKU&Y,mTb%/'JcFL)r;cNjr;cBfr;cfrq#K=PrrCaPr;_EKJcCT,qgAEWrI=bGrJL9'
+q24j#q253-s,)C-_uKZNq#Gs]itd4GJcD#8rrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eU&Y&kec5RJTE"q=s+C?%s)J'ss+UK:s*=QsrIP!&s,d8;q2G-6s-WV5rIjKf
+qo8Hfp!NX:s,m99p!NfZp"f6>q9f$%q9es#qpG*#s7>p>pZVS's,m'3pZVY)pYG0!rU]j4Xkj#3
+l-]%@pUc"VTE"iiJcDGDrrAbmrr at WMg].3Pp&Fsjnc/OfrVuZnhuE]Vg&M!NJcC<$M?!INs,HuQ
+r;ce`opkiFopkiFs.'+VJcEXfrVcTns6%Z*lh^/Cp$hYArTX:JmHOH(qq(kdJcC<$Q2gjas8W*!
+X8d\~>
+[K$7,JcC<$RK*9eU&Y&kec5RJTE"ris8LRIp%eX]q>'p]s7cKakPk>Ys0C\aoDc)ps0 at 4Tli-pi
+ci/LqTE"iiJcDGDrrAbmrr at WMg].3Pp&Fsjnc/OfrVuZnhuE]Vg&M!NJcC<$M?!JOs6'@Zr;b7D
+JcEXfs(_R?qZ-Xps(_FCq.'G4s(hR5o25BiqaUT_q+glIohPBCqbHfCpFQ7drAX=!k8&XKJcD#8
+rrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eU&Y&kec5RJTE"qhs3^k at s0;Tjs.97Os/GsgrLs7_s-*JNq3Li:s,5Qjq0;Rb
+qZ-XIrHS!fs,QbsoDeW=q/,q[pMKe[okj_<om$4JrIb,$pNZFLs+C&jlYZT0q1Geos#91pnW*@4
+JcDABr;_EKU&Y,mTb%/'JcFL)r;cNjr;cBfr;cfrq#K=PrrCaPr;_EKJcCT,qgAEWrI=bGrJL9'
+q24j#q253-s,)C-_uKZNq#Gs]itd4GJcD#8rrE*!rrB,"J,~>
+[K$7,VuQ\qJcC<$OoPF]JcG?As)%dgs+(&fs+UK/rH\Esqgnd$s,$W3rJCK;s+K?^o>^[`rR(E@
+qo8Yus5!@qrPnTfnc/@2rTNq%qrmk'p#uG'p"fH-qpG)mpZVY)p"ertpX-,!s+]dcn&G18JcDAB
+r;_EKU&Y,mU&Y,mJcFL)r;cNjr;cBfmf;>Hrr at WMJcC<$h>dGOs,cuNr;cM\q3^oHpR(uNs-SB;
+`W,f8qu-QXbPgi)nalGCp$MeDq<dY8q;;53rR_(fJcDMFrr at WMnc/UhX8d\~>
+[K$7,VuQ\qJcC<$OoPF]JcG?As8Dusg&:U>qtC!as7?3_s7cKal2LJYqu6W$jo4fMJc;):s0BuM
+JcDABr;_EKU&Y,mU&Y,mJcFL)r;cNjr;cBfmf;>Hrr at WMJcC<$h>dHPs6'.Tr;bCHJcE^hqZ-Y=
+s).jZs&8`*qd]S4rG2F5o25BiqaUN]q+grKohPBCqbHfCpFQ%tnLWuAJcDMFrr at WMnc/UhX8d\~>
+[K$7,VuQ\qJcC<$OoPF]JcG?As0_mSs.]Iss.97[rMfggqk=%]s-`bMrL(ojqfr'lq#L;Ps"+1p
+on34'pNZ6.pOiE]on3-Yq1J?Ws+Buhq/-"]om$4Js+BuhlYZBKXa'k)l%AGbq3lm7TE"iiJcDGD
+rrA`'rr at WMg].3Pp&Fsjnc/%XiW&oXJcC<$JcFR+rI"WVpOE,AonW@#pP8L#s+gW3JcE^hqZ-L/
+rr at Tcitd4GU]:>oJcG9?rrB,"J,~>
+[K$7,VuQ\qJcC<$OoPF]JcG?As)%dgs+(&fs+UK/rH\Esqgnd$s,$W3rJCK;s+K?^o>^[`rR(E@
+qo8Yus5!@qrPnTfnc/@2rTNq%qrmk'p#uG'p"fH-qpG)mpZVY)p"ertpX-,!s+]dcn&G18JcDAB
+r;_EKU&Y,mU&Y,mJcFL)r;cNjr;cBfmf;>Hrr at WMJcC<$h>dGOs,cuNr;cM\q3^oHpR(uNs-SB;
+`W,f8qu-QXbPgi)nalGCp$MeDq<dY8q;;53rR_(fJcDMFrr at WMnc/UhX8d\~>
+[K$7,VuQ\qJcC<$OoPF]JcG?As8Dusg&:U>qtC!as7?3_s7cKal2LJYqu6W$jo4fMJc;):s0BuM
+JcDABr;_EKU&Y,mU&Y,mJcFL)r;cNjr;cBfmf;>Hrr at WMJcC<$h>dHPs6'.Tr;bCHJcE^hqZ-Y=
+s).jZs&8`*qd]S4rG2F5o25BiqaUN]q+grKohPBCqbHfCpFQ%tnLWuAJcDMFrr at WMnc/UhX8d\~>
+[K$7,VuQ\qJcC<$OoPF]JcG?As0_mSs.]Iss.97[rMfggqk=%]s-`bMrL(ojqfr'lq#L;Ps"+1p
+on34'pNZ6.pOiE]on3-Yq1J?Ws+Buhq/-"]om$4Js+BuhlYZBKXa'k)l%AGbq3lm7TE"iiJcDGD
+rrA`'rr at WMg].3Pp&Fsjnc/%XiW&oXJcC<$JcFR+rI"WVpOE,AonW@#pP8L#s+gW3JcE^hqZ-L/
+rr at Tcitd4GU]:>oJcG9?rrB,"J,~>
+jo=uRh>dKTJcC<$JcE"Tr;c0`r;b=HrrBn8s)n?os'u(KrIt2qs+U?$s+UE.rJ^]3rIk3%s(geK
+lc/t\qZ-N at q8WG]s5!@qqo8HfoDeL2rTNq%qrmk'pZVS'oA0B/q9elkq<7e)p"f*#o?jVpkL&h>
+q7FuQrr at WMdJs4HJcDGDrrAbmrr@WMg].3Pp&Fsjnc/Cbqu?TpiW&oXl2U\^JcGECrr at WML]@=N
+oq_PRrrDe`q3^oHopGcLjo>>\JcG!7qZ-<fs6%N&mJ?GGoC2MAs69 at HrTX@2p$);0s5Nq-JcDGD
+rr at WMoDegjX8d\~>
+jo=uRh>dKTJcC<$JcE"Tr;c0`r;b=HrrBn8s8Dushu30Bq=ajas7?3_s7?9_l2LP[oD\cqjo4lO
+Jc:6"j8RC)rr at WMdJs4HJcDGDrrAbmrr@WMg].3Pp&Fsjnc/Cbqu?TpiW&oXl2U\^JcGECrr at WM
+L]?c?rrC[Ljo>>\JcG!7qZ-Y2s'l"7s)n?Zs(_R4qe#Y6rF#S>o256erC6Z]qbI/MohPBCqbHfC
+q(2P5pG_n!rtbJ_rupbFJcDGDrr at WMoDegjX8d\~>
+jo=uRh>dKTJcC<$JcE"Tr;c0`r;b=HrrBn8s/l=Ks1eT=rLWtes.9+]s.91WrKdDMqi:]Pd>n6O
+qZ-MGq2YJBs*43hqi:JsoDeK9rGD4[qec.]pMKk]o6C4Nq1J?bq/-(_om#qBo7O)gkC`;bq3oY0
+rr at WMdJs4HJcDGDrrA`'rr at WMg].3Pp&Fsjnc/Cbqu?TpiW&oXl2U\^JcGECrr at WML]@=#omcpt
+rrDeKq24p%onrd)jo>>\JcG!7qZ-:)rr at TcrrD-rJcDGDrr@WMoDegjX8d\~>
+jo=uRh>dKTJcC<$JcE"Tr;c0`r;b=HrrBn8s)n?os'u(KrIt2qs+U?$s+UE.rJ^]3rIk3%s(geK
+lc/t\qZ-N at q8WG]s5!@qqo8HfoDeL2rTNq%qrmk'pZVS'oA0B/q9elkq<7e)p"f*#o?jVpkL&h>
+q7FuQrr at WMdJs4HJcDGDrrAbmrr@WMg].3Pp&Fsjnc/Cbqu?TpiW&oXl2U\^JcGECrr at WML]@=N
+oq_PRrrDe`q3^oHopGcLjo>>\JcG!7qZ-<fs6%N&mJ?GGoC2MAs69 at HrTX@2p$);0s5Nq-JcDGD
+rr at WMoDegjX8d\~>
+jo=uRh>dKTJcC<$JcE"Tr;c0`r;b=HrrBn8s8Dushu30Bq=ajas7?3_s7?9_l2LP[oD\cqjo4lO
+Jc:6"j8RC)rr at WMdJs4HJcDGDrrAbmrr@WMg].3Pp&Fsjnc/Cbqu?TpiW&oXl2U\^JcGECrr at WM
+L]?c?rrC[Ljo>>\JcG!7qZ-Y2s'l"7s)n?Zs(_R4qe#Y6rF#S>o256erC6Z]qbI/MohPBCqbHfC
+q(2P5pG_n!rtbJ_rupbFJcDGDrr at WMoDegjX8d\~>
+jo=uRh>dKTJcC<$JcE"Tr;c0`r;b=HrrBn8s/l=Ks1eT=rLWtes.9+]s.91WrKdDMqi:]Pd>n6O
+qZ-MGq2YJBs*43hqi:JsoDeK9rGD4[qec.]pMKk]o6C4Nq1J?bq/-(_om#qBo7O)gkC`;bq3oY0
+rr at WMdJs4HJcDGDrrA`'rr at WMg].3Pp&Fsjnc/Cbqu?TpiW&oXl2U\^JcGECrr at WML]@=#omcpt
+rrDeKq24p%onrd)jo>>\JcG!7qZ-:)rr at TcrrD-rJcDGDrr@WMoDegjX8d\~>
+kPt&PhuE]V\,ZC,ScA]iJcC<$iW&iV^&S*4_uKaRs*4Qos(;:KrIt2qqgn]ps,$c7s+^Q1rF>kF
+nS at lMl,NT#p!NTTs*O at bqo8Nhnc.^urTO"'pZVS'oA0B/q9elkrLEoOqpG)mn`]MjX52sdn](=8
+ci="FJcF4!rr at WMU&Y,mU&Y,mJcFL)r;cNjr;cBfqZ-Bjr;cBfr;cTlrr at WMg&M'PJcCr6r;c`p
+s.oUkoq_JPr;c_bq3^oHopGcLjo>>\JcG3=qZ-Nnp&4pRao1W'nalGCp[/"Mq<e.Fs3pT(q;;53
+s4@:es29KgRK*9eJcG]KrrB,"J,~>
+kPt&PhuE]V\,ZC,ScA]iJcC<$iW&iV^&S*4_uKc8s8M!UoD/4Uq=FXYl2LP[mJd-kkPk#OU]14t
+Jc<Rdci="FJcF4!rr at WMU&Y,mU&Y,mJcFL)r;cNjr;cBfqZ-Bjr;cBfr;cTlrr at WMg&M'PJcCr6
+r;c`pl2CP\g\p76rr at WMn,N7bqu?\2s'kkJs(_R4qe#Y6s'Y_>s(D"%pK[_fq,-NSrAXOIof)b!
+rBp<<q(2O]q^h[hnJ;-)rt^1cRK*9eJcG]KrrB,"J,~>
+kPt&PhuE]V\,ZC,ScA]iJcC<$iW&iV^&S*4_uKbEs5!^Ls1JB=rLWteqk<tas-`nQrL*Vfn"ej$
+qZ-;Aq2YJBo7Qq#qfqZ2jb*MKpOi3WrIa]drGD at _om$EYs)%Xcom$"DnUmlekC`;bpR9G.rr at WM
+e,TFJJcDGDrrA`'rr at WMg].3Pp&Fsjnc/Idp](0lnc/Ofp](6nJcFF'rr at WMPQ1R]qu?\GrI"9f
+qhk=PqhP!)pP8F!s+f_9rr at WMn,N7bqu?=)rr at TcrrD3trrE'7JcD/<rr at WMrVultX8d\~>
+kPt&PhuE]V\,ZC,ScA]iJcC<$iW&iV^&S*4_uKaRs*4Qos(;:KrIt2qqgn]ps,$c7s+^Q1rF>kF
+nS at lMl,NT#p!NTTs*O at bqo8Nhnc.^urTO"'pZVS'oA0B/q9elkrLEoOqpG)mn`]MjX52sdn](=8
+ci="FJcF4!rr at WMU&Y,mU&Y,mJcFL)r;cNjr;cBfqZ-Bjr;cBfr;cTlrr at WMg&M'PJcCr6r;c`p
+s.oUkoq_JPr;c_bq3^oHopGcLjo>>\JcG3=qZ-Nnp&4pRao1W'nalGCp[/"Mq<e.Fs3pT(q;;53
+s4@:es29KgRK*9eJcG]KrrB,"J,~>
+kPt&PhuE]V\,ZC,ScA]iJcC<$iW&iV^&S*4_uKc8s8M!UoD/4Uq=FXYl2LP[mJd-kkPk#OU]14t
+Jc<Rdci="FJcF4!rr at WMU&Y,mU&Y,mJcFL)r;cNjr;cBfqZ-Bjr;cBfr;cTlrr at WMg&M'PJcCr6
+r;c`pl2CP\g\p76rr at WMn,N7bqu?\2s'kkJs(_R4qe#Y6s'Y_>s(D"%pK[_fq,-NSrAXOIof)b!
+rBp<<q(2O]q^h[hnJ;-)rt^1cRK*9eJcG]KrrB,"J,~>
+kPt&PhuE]V\,ZC,ScA]iJcC<$iW&iV^&S*4_uKbEs5!^Ls1JB=rLWteqk<tas-`nQrL*Vfn"ej$
+qZ-;Aq2YJBo7Qq#qfqZ2jb*MKpOi3WrIa]drGD at _om$EYs)%Xcom$"DnUmlekC`;bpR9G.rr at WM
+e,TFJJcDGDrrA`'rr at WMg].3Pp&Fsjnc/Idp](0lnc/Ofp](6nJcFF'rr at WMPQ1R]qu?\GrI"9f
+qhk=PqhP!)pP8F!s+f_9rr at WMn,N7bqu?=)rr at TcrrD3trrE'7JcD/<rr at WMrVultX8d\~>
+l2U\^p](*jiW&oXJcF'rrr at WMJcFR+qZ)9Ks(_Rds'u(Ks).jjrH\EdrIOors,$c7rF#S6l"g='
+lc/f%qo8BXpW!5[s2Of\pW!0foDddss60.'qrmk'p"fZ3p!NNis,m?Fs+^?spYGH)mEr&lkL&b<
+q7Ed/rr at WMp&G$lJcDGDrrAb]rr at WMg].3Pp&Fsjnc/Ofp&FsjmJm1dq>^HpJcC<$JcFX-rMT=a
+q3_,Nr;ckfq3^oHo9b+/fDk^Jp]'j`s6%H$mJ?GGp$h_Cs7#dMn*0Z*s5O"/s/pqQRK*9eJcG]K
+rrB,"J,~>
+l2U\^p](*jiW&oXJcF'rrr at WMJcFR+qZ)9Ks8DuskParHq=a^Ws7GRTqZ,gYs0CheoDbN`s0D\(
+s0 at 4T`W!">rr at WMp&G$lJcDGDrrAbmrr at WMg].3Pp&Fsjnc/Ofp&FsjmJm1dq>^HpJcC<$JcFX-
+jo,,Xhu/-+fDk^Jp](8"s(_R?qfVpRs&8f,q.'G4qeQ.CpJLZis$l`[mnWg?pJ1HAq^h\5pG_Un
+q]YJFrr at WMRK*9eJcG]KrrB,"J,~>
+l2U\^p](*jiW&oXJcF'rrr at WMJcFR+qZ)9Ks1/0Ws1eT=s0VftrMfgurLs1cs-`nQq60%Ys/#%A
+qZ-MRpOi4#s$QgHpOi4#rHRr6iIh/Ion3-Yq1J?bs)%F]pNZ]hs)%cpq1JEdo53lIXa'#]muI44
+XoJD$JcGECrr at WMU&Y,mTca:7JcFL)r;cNjr;cBfr;cNjr;c6brrDlprr at WMJcC<$huEY&omcdp
+rJ1=Os+gE-pP8?tJcF@%qZ-Bjo+q?+JJR8]rr at WMRK*9eJcG]KrrB,"J,~>
+l2U\^p](*jiW&oXJcF'rrr at WMJcFR+qZ)9Ks(_Rds'u(Ks).jjrH\EdrIOors,$c7rF#S6l"g='
+lc/f%qo8BXpW!5[s2Of\pW!0foDddss60.'qrmk'p"fZ3p!NNis,m?Fs+^?spYGH)mEr&lkL&b<
+q7Ed/rr at WMp&G$lJcDGDrrAb]rr at WMg].3Pp&Fsjnc/Ofp&FsjmJm1dq>^HpJcC<$JcFX-rMT=a
+q3_,Nr;ckfq3^oHo9b+/fDk^Jp]'j`s6%H$mJ?GGp$h_Cs7#dMn*0Z*s5O"/s/pqQRK*9eJcG]K
+rrB,"J,~>
+l2U\^p](*jiW&oXJcF'rrr at WMJcFR+qZ)9Ks8DuskParHq=a^Ws7GRTqZ,gYs0CheoDbN`s0D\(
+s0 at 4T`W!">rr at WMp&G$lJcDGDrrAbmrr at WMg].3Pp&Fsjnc/Ofp&FsjmJm1dq>^HpJcC<$JcFX-
+jo,,Xhu/-+fDk^Jp](8"s(_R?qfVpRs&8f,q.'G4qeQ.CpJLZis$l`[mnWg?pJ1HAq^h\5pG_Un
+q]YJFrr at WMRK*9eJcG]KrrB,"J,~>
+l2U\^p](*jiW&oXJcF'rrr at WMJcFR+qZ)9Ks1/0Ws1eT=s0VftrMfgurLs1cs-`nQq60%Ys/#%A
+qZ-MRpOi4#s$QgHpOi4#rHRr6iIh/Ion3-Yq1J?bs)%F]pNZ]hs)%cpq1JEdo53lIXa'#]muI44
+XoJD$JcGECrr at WMU&Y,mTca:7JcFL)r;cNjr;cBfr;cNjr;c6brrDlprr at WMJcC<$huEY&omcdp
+rJ1=Os+gE-pP8?tJcF@%qZ-Bjo+q?+JJR8]rr at WMRK*9eJcG]KrrB,"J,~>
+l2U\^p&FsjiW&oX`W,r<JcC<$JcFj3qZ)EOs(;:Us'u(@s).jjs).j^s*"?lrI4caqdBG6rF#)0
+pTX>1q#L0/rO_mQpW!5[rPnZ\pW!6hnc/4.s2O*Hqrmk'p"fYfp!NHgp!NHgpZUqjfA5?(q7Gh;
+n&G18XoJD$JcGECrr at WMU&Y,mU$r!]JcFL)r;cNjr;cBfr;cNjr;c0`rrE#tr;cZnr;_EKJcC<$
+li6p]oq_>LqjdTbqj at 2LnX+n-huEKPnc/4Zs6%H$mJ?GGoC2YErUBRKn*0Z*rSme-JcC<$PQ1X_
+X8d\~>
+l2U\^p&FsjiW&oX`W,r<JcC<$JcFj3qZ)EOs8Dusli$;Jq=a^Wli-\[iVrk_l2L5QJc:6"hu9bX
+rr at WMp&G$lJcDGDrrAbmrr at WMg].3Pp&Fsjnc/Ofp&Fsjli6tbrVufrq>^BnJcC<$JcG'9iVi]T
+j8FQ/huEKPnc/Q)rH8-bs)n?Vs%rT)q.'G4qeQ.CpJLTgpJLlas&nM[pG`%%q*Xs:mk">ZnJ6]U
+JcCr6rrB,"J,~>
+l2U\^p&FsjiW&oX`W,r<JcC<$JcFj3qZ)EOs1JBfs1eTHs0Vfts0Vg*s/c0mqkWngn"f]SooAhJ
+pQ#3 at q1JF%s$QaFq1JF%s*4)6o7R('j+I5Gq1J?bs,Qc)om$.^om$4Jl\!f6hi at N$kC`5`q3nGc
+rr at WMp&G$lJcDGDrrA`7rr at WMg].3Pp&Fsjnc/Ofp&Fsjli6tbrVufrq>^BnJcC<$JcG'9rI"9f
+pPSj'r;c_Pq1nKtJcFX-q#Ksbo+q?+JJR2[JcC<$PQ1X_X8d\~>
+l2U\^p&FsjiW&oX`W,r<JcC<$JcFj3qZ)EOs(;:Us'u(@s).jjs).j^s*"?lrI4caqdBG6rF#)0
+pTX>1q#L0/rO_mQpW!5[rPnZ\pW!6hnc/4.s2O*Hqrmk'p"fYfp!NHgp!NHgpZUqjfA5?(q7Gh;
+n&G18XoJD$JcGECrr at WMU&Y,mU$r!]JcFL)r;cNjr;cBfr;cNjr;c0`rrE#tr;cZnr;_EKJcC<$
+li6p]oq_>LqjdTbqj at 2LnX+n-huEKPnc/4Zs6%H$mJ?GGoC2YErUBRKn*0Z*rSme-JcC<$PQ1X_
+X8d\~>
+l2U\^p&FsjiW&oX`W,r<JcC<$JcFj3qZ)EOs8Dusli$;Jq=a^Wli-\[iVrk_l2L5QJc:6"hu9bX
+rr at WMp&G$lJcDGDrrAbmrr at WMg].3Pp&Fsjnc/Ofp&Fsjli6tbrVufrq>^BnJcC<$JcG'9iVi]T
+j8FQ/huEKPnc/Q)rH8-bs)n?Vs%rT)q.'G4qeQ.CpJLTgpJLlas&nM[pG`%%q*Xs:mk">ZnJ6]U
+JcCr6rrB,"J,~>
+l2U\^p&FsjiW&oX`W,r<JcC<$JcFj3qZ)EOs1JBfs1eTHs0Vfts0Vg*s/c0mqkWngn"f]SooAhJ
+pQ#3 at q1JF%s$QaFq1JF%s*4)6o7R('j+I5Gq1J?bs,Qc)om$.^om$4Jl\!f6hi at N$kC`5`q3nGc
+rr at WMp&G$lJcDGDrrA`7rr at WMg].3Pp&Fsjnc/Ofp&Fsjli6tbrVufrq>^BnJcC<$JcG'9rI"9f
+pPSj'r;c_Pq1nKtJcFX-q#Ksbo+q?+JJR2[JcC<$PQ1X_X8d\~>
+g&M!NiW&oXa8c/>JcC<$JcFR+r;_cUs(;:Js(;4Is(hXPs)\3`s+13!rGMX7rF#Y8qdB#2n$)i3
+qZ-*)qn)gSou@#YrPn`^o>^D%rPnNXrPmsHrTO"'p"fYfp!NNis2O`Zp"fN/qo8$NiSE&(lauc9
+n](C:JcDABrr at WMU&Y,mU$r!]JcFF'r;cZnqZ-0dr;cNjr;c*^q#H!GJcDkPrrCCFr;c0`rMT=a
+pR(cHs-W`brL!JPn!J\+kPtDZl2UGTrTD/un+uYIs7c3UqsF at Op[.A4q;;53rR[V?rr at WMqu?Tp
+KE(rOX8d\~>
+g&M!NiW&oXa8c/>JcC<$JcFR+r;_cUs8Dusn,;_NqtBpYs7G^XqZ,=Ks0CngoDaC at Jc=L)JcDAB
+rr at WMU&Y,mU&Y,mJcFF'r;cZnqZ-0dr;cNjr;c*^q#H!GJcDkPrrCCFr;c0`h>R9Pjo'c1kPtDZ
+l2Ucus'kkJs(_R4s%rT)qd]S:qf2RPpJLZis(D"%rE8;Yof)V4q)@anq'#>FScA]iJcGWIr;_KM
+rrB,"J,~>
+g&M!NiW&oXa8c/>JcC<$JcFR+r;_cUs1JBqs1J<;s1&*9s02O)s.T=cs17m,o;(iOs,QsVmuI:6
+rIad's$QaFqh+L#oDecLon34'jb*MKpOi-`s,Qc)pNZ^uon2p^qec4jm=XABeW/sao7QRnq3lm7
+TE"okJcDGDrrA`7rr at WMg&M!Nq>^<lnc/Ofp&Fsjl2UPZJcC<$XoJD$ci<qDli6p2omc^nq1o!-
+r;ceRqhOWtJcFp5qZ,m\obRK+JJR2[ScA]iJcGWIr;_KMrrB,"J,~>
+g&M!NiW&oXa8c/>JcC<$JcFR+r;_cUs(;:Js(;4Is(hXPs)\3`s+13!rGMX7rF#Y8qdB#2n$)i3
+qZ-*)qn)gSou@#YrPn`^o>^D%rPnNXrPmsHrTO"'p"fYfp!NNis2O`Zp"fN/qo8$NiSE&(lauc9
+n](C:JcDABrr at WMU&Y,mU$r!]JcFF'r;cZnqZ-0dr;cNjr;c*^q#H!GJcDkPrrCCFr;c0`rMT=a
+pR(cHs-W`brL!JPn!J\+kPtDZl2UGTrTD/un+uYIs7c3UqsF at Op[.A4q;;53rR[V?rr at WMqu?Tp
+KE(rOX8d\~>
+g&M!NiW&oXa8c/>JcC<$JcFR+r;_cUs8Dusn,;_NqtBpYs7G^XqZ,=Ks0CngoDaC at Jc=L)JcDAB
+rr at WMU&Y,mU&Y,mJcFF'r;cZnqZ-0dr;cNjr;c*^q#H!GJcDkPrrCCFr;c0`h>R9Pjo'c1kPtDZ
+l2Ucus'kkJs(_R4s%rT)qd]S:qf2RPpJLZis(D"%rE8;Yof)V4q)@anq'#>FScA]iJcGWIr;_KM
+rrB,"J,~>
+g&M!NiW&oXa8c/>JcC<$JcFR+r;_cUs1JBqs1J<;s1&*9s02O)s.T=cs17m,o;(iOs,QsVmuI:6
+rIad's$QaFqh+L#oDecLon34'jb*MKpOi-`s,Qc)pNZ^uon2p^qec4jm=XABeW/sao7QRnq3lm7
+TE"okJcDGDrrA`7rr at WMg&M!Nq>^<lnc/Ofp&Fsjl2UPZJcC<$XoJD$ci<qDli6p2omc^nq1o!-
+r;ceRqhOWtJcFp5qZ,m\obRK+JJR2[ScA]iJcGWIr;_KMrrB,"J,~>
+g].3PhuE]VJcC<$RK*9eU&Y&kli6n`OoPGns*4KPs).jPs).jXs*"EnrGMX;s&AZ!pM90#qZ,m#
+qn)gSou@#Yqo8T^o>^D%rPnNXrPnNXrPmsHq;)"hp!NNirPnTZrS at L9qq_57q8VgLkM=D&kI^Vq
+s3^;Tq7FQEr;_EKj8],ZJcDGDrrAb]rr at WMg&M!Nq>^BnmJm+bq>^<ljo>8ZJcC<$XoJD$[K$3'
+s.oU\qkWtRq4.>Lr;c_bn!J\+mJm%`j8\fNrTD)sn+u_Ks7c3UrU'FMq<dS6q;;/1s4@:hTE"ok
+JcC<$rVults8W*!X8d\~>
+g].3PhuE]VJcC<$RK*9eU&Y&kli6n`OoPI[s8MQeq=s^[qtC![s7#FTqZ,+Es0CngoDagLs0 at 4T
+dJh&`r;_EKj8],ZJcDGDrrAbmrr at WMg&M!Nq>^BnmJm+bq>^<ljo>8ZJcC<$XoJD$[K"qYr;c*\
+JcG-;qZ,[Vs)%d\s)n?ds)n?Vs&8qorFZ"<rG):CrGhXNs&f4soj%N0ohk`os&o"is&o"ipG`+I
+pI"[6nLXJZnJ7bsrr at WMJcG]KrrE*!rrB,"J,~>
+g].3PhuE]VJcC<$RK*9eU&Y&kli6n`OoPHos5!Xgs0Vg9s0Vg1s/c6orM9D'orn+cmA9[[l&PY0
+rIad's$Q[DrIa^%oDecLon34'on34'jb*ARrJpQ'pNZXspOiEhs"+%lrGD at jm=XSHc&UtUqka=F
+muI44_uKZ8JcFd1rr at WMU&Y,mTca:7JcFF'r;cZnr;c6br;cZnqZ,aXr;_EKJcDkPrrBJ,rI"Wp
+rJLK%pPSd%qhk=PqhOWtJcG-;qZ,[VobRK+JJR,YTE"okJcC<$rVults8W*!X8d\~>
+g].3PhuE]VJcC<$RK*9eU&Y&kli6n`OoPGns*4KPs).jPs).jXs*"EnrGMX;s&AZ!pM90#qZ,m#
+qn)gSou@#Yqo8T^o>^D%rPnNXrPnNXrPmsHq;)"hp!NNirPnTZrS at L9qq_57q8VgLkM=D&kI^Vq
+s3^;Tq7FQEr;_EKj8],ZJcDGDrrAb]rr at WMg&M!Nq>^BnmJm+bq>^<ljo>8ZJcC<$XoJD$[K$3'
+s.oU\qkWtRq4.>Lr;c_bn!J\+mJm%`j8\fNrTD)sn+u_Ks7c3UrU'FMq<dS6q;;/1s4@:hTE"ok
+JcC<$rVults8W*!X8d\~>
+g].3PhuE]VJcC<$RK*9eU&Y&kli6n`OoPI[s8MQeq=s^[qtC![s7#FTqZ,+Es0CngoDagLs0 at 4T
+dJh&`r;_EKj8],ZJcDGDrrAbmrr at WMg&M!Nq>^BnmJm+bq>^<ljo>8ZJcC<$XoJD$[K"qYr;c*\
+JcG-;qZ,[Vs)%d\s)n?ds)n?Vs&8qorFZ"<rG):CrGhXNs&f4soj%N0ohk`os&o"is&o"ipG`+I
+pI"[6nLXJZnJ7bsrr at WMJcG]KrrE*!rrB,"J,~>
+g].3PhuE]VJcC<$RK*9eU&Y&kli6n`OoPHos5!Xgs0Vg9s0Vg1s/c6orM9D'orn+cmA9[[l&PY0
+rIad's$Q[DrIa^%oDecLon34'on34'jb*ARrJpQ'pNZXspOiEhs"+%lrGD at jm=XSHc&UtUqka=F
+muI44_uKZ8JcFd1rr at WMU&Y,mTca:7JcFF'r;cZnr;c6br;cZnqZ,aXr;_EKJcDkPrrBJ,rI"Wp
+rJLK%pPSd%qhk=PqhOWtJcG-;qZ,[VobRK+JJR,YTE"okJcC<$rVults8W*!X8d\~>
+iW&]Rh>dKTfDkdLJcC<$a8c/>KE(lMQiI(^s(;:Js'u(Hs'YkBs(D:BrGML3ojIZ4nZ_fhpTX,+
+pUgIQou@#Yqo8T^ou?V'qo8BXqo8<VrPmsHqq_.ho?mHkqo8<VrS at L9rS@M;pVuOHn(l%(rO`)J
+mCVnmpW!$@JcDMFr;_EKU&Y,mU$r!]JcF@%o)SUdr;cZnnGqPJrr at WMJcCN*rrCgRs/5mmqj at 8V
+opG]JopGaZrLEnTrJgK;JcG?AqZ,ORnbrLN_u9'#p%/4XoC2eIq=+.GmHON*rSmk/s4[5Ir;_EK
+JcDYJrrE*!rrB,"J,~>
+iW&]Rh>dKTfDkdLJcC<$a8c/>KE(lMQiI$_s8MckoD&@]s7ZEerV$3]s7#RXq#J\=s0CtioDa[H
+s0 at R^s0BiIJcDMFr;_EKU&Y,mU&Y,mJcF@%o)SUdr;cZnnGqPJrr at WMJcCN*rrCgRec#LJlhuD7
+oDe[fhuE_$s)%d\s)n?ds)n9Ts%rZ+q.fqAqf2FLqcNMrs(D"%s'5S,ohPNiohP6?s%`;UpG_Un
+pEB,Dp](0lJcC<$VuQbss8W*!X8d\~>
+iW&]Rh>dKTfDkdLJcC<$a8c/>KE(lMQiI*7s1JBqs1eT at s24lHs1A62rM9>%orn7gnYQ$]pSI>=
+pR;,7ooB&>qi:W-ooAYDqi:E'qi:?%rJoulqfr!uo7Qpbqi:?%rHS>nrHS?ZpQ"Qlms)m5rL3a]
+m@*RApQ#'<JcDMFr;_EKU&Y,mTca:7JcF@%o)SUdr;cZnnGqPJrr at WMJcCN*rrCgRs*Xirqhk9#
+onr^'onrbLrJ1E1rK[&5JcG?AqZ,ORnJ;-)JJR,Yp](0lJcC<$VuQbss8W*!X8d\~>
+iW&]Rh>dKTfDkdLJcC<$a8c/>KE(lMQiI(^s(;:Js'u(Hs'YkBs(D:BrGML3ojIZ4nZ_fhpTX,+
+pUgIQou@#Yqo8T^ou?V'qo8BXqo8<VrPmsHqq_.ho?mHkqo8<VrS at L9rS@M;pVuOHn(l%(rO`)J
+mCVnmpW!$@JcDMFr;_EKU&Y,mU$r!]JcF@%o)SUdr;cZnnGqPJrr at WMJcCN*rrCgRs/5mmqj at 8V
+opG]JopGaZrLEnTrJgK;JcG?AqZ,ORnbrLN_u9'#p%/4XoC2eIq=+.GmHON*rSmk/s4[5Ir;_EK
+JcDYJrrE*!rrB,"J,~>
+iW&]Rh>dKTfDkdLJcC<$a8c/>KE(lMQiI$_s8MckoD&@]s7ZEerV$3]s7#RXq#J\=s0CtioDa[H
+s0 at R^s0BiIJcDMFr;_EKU&Y,mU&Y,mJcF@%o)SUdr;cZnnGqPJrr at WMJcCN*rrCgRec#LJlhuD7
+oDe[fhuE_$s)%d\s)n?ds)n9Ts%rZ+q.fqAqf2FLqcNMrs(D"%s'5S,ohPNiohP6?s%`;UpG_Un
+pEB,Dp](0lJcC<$VuQbss8W*!X8d\~>
+iW&]Rh>dKTfDkdLJcC<$a8c/>KE(lMQiI*7s1JBqs1eT at s24lHs1A62rM9>%orn7gnYQ$]pSI>=
+pR;,7ooB&>qi:W-ooAYDqi:E'qi:?%rJoulqfr!uo7Qpbqi:?%rHS>nrHS?ZpQ"Qlms)m5rL3a]
+m@*RApQ#'<JcDMFr;_EKU&Y,mTca:7JcF@%o)SUdr;cZnnGqPJrr at WMJcCN*rrCgRs*Xirqhk9#
+onr^'onrbLrJ1E1rK[&5JcG?AqZ,ORnJ;-)JJR,Yp](0lJcC<$VuQbss8W*!X8d\~>
+iW&WPhuE]VJcC<$JcE^hrrCOJr;`>es%36"s)%dGs'YkBs&f;2s(;:=s&f(rpL*r8o<A)lmBH-#
+pUgI0ou@#Ylc/Prq8W6Xq8W6Xqo8<Vs2OZXqq_(fp!N`oq8W*TpYGM^ld>C]_8cGcs)7;:l*13-
+q7D4XU]:8mJcDGDrrAb]rr at WMec5FFp&Fsjp]'mdhuE]VJcC<$M?!SUg&M)MpR(oTopG]JopGcL
+r;cYQpR$O3q>^<lg&LU at s6%5sn+ukOqtKFGp[.Y<q<e(:rSme-JcC<$Q2gjaX8d\~>
+iW&WPhuE]VJcC<$JcE^hrrCOJr;`>es8Doqqu-9as7QEes7uWes7u]ds7ZE_s6oRYqZ+V7s0Cti
+oDaC at OoGBdbPm(mU]:8mJcDGDrrAbmrr at WMec5FFp&Fsjp]'mdhuE]VJcC<$M?!SUg&KP"r;c<b
+JcGQGqZ,=Ls)%dgs)n9bs)n9Ts%r`-s)%RHs(;.JpMTq3s'te.rFbq'qcrehs&o"iq)A7IpI"[6
+nLXDXo+loWJcD#8rrB,"J,~>
+iW&WPhuE]VJcC<$JcE^hrrCOJr;`>es4RGDs60Kts24lHs1866s/c7(pU^+&rM9%]qZ-#[nW*@4
+s/#CKs$Q+4oDeWHq1JL'q1JR)on3:)o7Qpbq2Y-#rHS-uon3!`ooA?jom"<5rL3a]m@*:9s,QoD
+JcDMFr;_EKU&Y,mTca:7JcF:#q#L*fr;cTlo`3nLrr at WMJcCT,rrCaPs*XQurI=KtrJ1''s+gOQ
+q3C]3JcGQGqZ,=LnJ;-)JJR,YJcC<$Q2gjaX8d\~>
+iW&WPhuE]VJcC<$JcE^hrrCOJr;`>es%36"s)%dGs'YkBs&f;2s(;:=s&f(rpL*r8o<A)lmBH-#
+pUgI0ou@#Ylc/Prq8W6Xq8W6Xqo8<Vs2OZXqq_(fp!N`oq8W*TpYGM^ld>C]_8cGcs)7;:l*13-
+q7D4XU]:8mJcDGDrrAb]rr at WMec5FFp&Fsjp]'mdhuE]VJcC<$M?!SUg&M)MpR(oTopG]JopGcL
+r;cYQpR$O3q>^<lg&LU at s6%5sn+ukOqtKFGp[.Y<q<e(:rSme-JcC<$Q2gjaX8d\~>
+iW&WPhuE]VJcC<$JcE^hrrCOJr;`>es8Doqqu-9as7QEes7uWes7u]ds7ZE_s6oRYqZ+V7s0Cti
+oDaC at OoGBdbPm(mU]:8mJcDGDrrAbmrr at WMec5FFp&Fsjp]'mdhuE]VJcC<$M?!SUg&KP"r;c<b
+JcGQGqZ,=Ls)%dgs)n9bs)n9Ts%r`-s)%RHs(;.JpMTq3s'te.rFbq'qcrehs&o"iq)A7IpI"[6
+nLXDXo+loWJcD#8rrB,"J,~>
+iW&WPhuE]VJcC<$JcE^hrrCOJr;`>es4RGDs60Kts24lHs1866s/c7(pU^+&rM9%]qZ-#[nW*@4
+s/#CKs$Q+4oDeWHq1JL'q1JR)on3:)o7Qpbq2Y-#rHS-uon3!`ooA?jom"<5rL3a]m@*:9s,QoD
+JcDMFr;_EKU&Y,mTca:7JcF:#q#L*fr;cTlo`3nLrr at WMJcCT,rrCaPs*XQurI=KtrJ1''s+gOQ
+q3C]3JcGQGqZ,=LnJ;-)JJR,YJcC<$Q2gjaX8d\~>
+g].-NoDegjnc/Uhjo>>\JcC<$JcFj3rrC=Dr;bONrrC7Bs%r`-s)%dGs(D at .rE0#+s&f(rpL+#t
+os";njfnEtot17.ou@#YmDebtpW!*XpW!*XpVusTrPnNXrS at 4fp!NfqpVumRq;(S\mEtac]uK0G
+l*1&]rO[X\U]:>oJcDGDrrAb]rr at WML&_/QJcFF'rr at WMMuWaOpR(oTopG]JopG]Js-W`bqi1E=
+kPtP^S,`?ce,St:s6%5sn+ukOqtK at Eq<e42qs!_>s5O"7rSmk/s29KgM?!SUOoPF]X8d\~>
+g].-NoDegjnc/Uhjo>>\JcC<$JcFj3rrC=Dr;bONrrC7BrVccqrVcEas7Q?drV$3]s7ZKaoD\Ue
+^]+8=mJc_WJc:6"ec(."U]:>oJcDGDrrAbmrr at WML&_/QJcFF'rr at WMMuV'#r;cHfkPtP^S,`?c
+e,TGbs*4Qds*4Kbs(_RGs%rZ2q.fqAqf2 at JrE0#.qcs#2q,.#os&o.mqcWSeq`"IKpI"[6q^ha_
+q(21^o+loWM?!SUOoPF]X8d\~>
+g].-NoDegjnc/Uhjo>>\JcC<$JcFj3rrC=Dr;bONrrC7Bs3q"\s60Kts1A<KrOVs2pU^+&s020m
+qZ,`SooA^6s/#CKs$Q16oDeQFqh+X'qh+X'pOiF)on33fpQ"p!s*49uon3'bnW*!hq09T5jdPG1
+qlp$fJcDMFrr at WMU&Y,mTca:7JcCH(rr at WMg&M'PJcCZ.rI=R!rI=KtrJ1''rJ1E1r;c_[q24A8
+rrAPgqZ,+FnJ;-)JJS7ch\LeCM?!SUOoPF]X8d\~>
+g].-NoDegjnc/Uhjo>>\JcC<$JcFj3rrC=Dr;bONrrC7Bs%r`-s)%dGs(D at .rE0#+s&f(rpL+#t
+os";njfnEtot17.ou@#YmDebtpW!*XpW!*XpVusTrPnNXrS at 4fp!NfqpVumRq;(S\mEtac]uK0G
+l*1&]rO[X\U]:>oJcDGDrrAb]rr at WML&_/QJcFF'rr at WMMuWaOpR(oTopG]JopG]Js-W`bqi1E=
+kPtP^S,`?ce,St:s6%5sn+ukOqtK at Eq<e42qs!_>s5O"7rSmk/s29KgM?!SUOoPF]X8d\~>
+g].-NoDegjnc/Uhjo>>\JcC<$JcFj3rrC=Dr;bONrrC7BrVccqrVcEas7Q?drV$3]s7ZKaoD\Ue
+^]+8=mJc_WJc:6"ec(."U]:>oJcDGDrrAbmrr at WML&_/QJcFF'rr at WMMuV'#r;cHfkPtP^S,`?c
+e,TGbs*4Qds*4Kbs(_RGs%rZ2q.fqAqf2 at JrE0#.qcs#2q,.#os&o.mqcWSeq`"IKpI"[6q^ha_
+q(21^o+loWM?!SUOoPF]X8d\~>
+g].-NoDegjnc/Uhjo>>\JcC<$JcFj3rrC=Dr;bONrrC7Bs3q"\s60Kts1A<KrOVs2pU^+&s020m
+qZ,`SooA^6s/#CKs$Q16oDeQFqh+X'qh+X'pOiF)on33fpQ"p!s*49uon3'bnW*!hq09T5jdPG1
+qlp$fJcDMFrr at WMU&Y,mTca:7JcCH(rr at WMg&M'PJcCZ.rI=R!rI=KtrJ1''rJ1E1r;c_[q24A8
+rrAPgqZ,+FnJ;-)JJS7ch\LeCM?!SUOoPF]X8d\~>
+g&M!Nnc/Ofp&G$lkPtP^JcG'9rr at WMJcERdr;b[RrrC7Bs%36-s'l"%s%r_es&f;#s'Yk#pJh#t
+qka1oqZ,HVpVus>qloh7s*OX_rO_gDoDeR)qpG/XqpG/Xq9f)Zo?m6Np!NfOqo8Y_rPnNXrS?q^
+mEtmg\&RUCkHOcY[K$1*JcG?Arr at WMU&Y,mU$r!]JcCH(rr at WMg&M'PJcEXfr;b+BrM91Ts.o7R
+rLEPJrLEbEr;ceUqj?RHrrAbmqZ+tBn,<:L^]!^!q=FLXp[J.Qp[J"Gs3pr2n*U/7s53e7s4@;)
+JcD;@rrDHdrrA8_rrB,"J,~>
+g&M!Nnc/Ofp&G$lkPtP^JcG'9rr at WMJcERdr;b[RrrC7Bs8Doqp%\R_s7ZKgqtBpYp&=gg\c2W7
+mJc_WS,WGnJc<@^[K$1*JcG?Arr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcEXfr;b+Bao2/<p\j:T
+rrAbmqZ+tBs*4Qrqfr-`rG)@Es&]/9qeH(Aqf2:Hq.'A.qe,_%q-<_jqcWSerAXUKogAO6q^ha_
+pFPt\obN,YScA]imJm1dPQ1X_X8d\~>
+g&M!Nnc/Ofp&G$lkPtP^JcG'9rr at WMJcERdr;b[RrrC7Bs4RG9s7?91s24lVrOW$4s2OfEqlfn$
+qka/ih50k+pR:uUpQ#8 at qi:WDpQ"kFpQ#-'pQ#-'pQ#'%qi:9#ooA]ts-ihFs$QaFon33fmuHdf
+rHPf3kF1S1q67:,r;_EKoDegjJcDGDrrA`7rr at WML&_/QJcFF'rr at WM_uKZ8c2[`lpPT!#o8<L%
+onr^'qj%*[rK[8;kPtP^U&Xuici<GLrr at TcrrCplJcD;@rrDHdrrA8_rrB,"J,~>
+g&M!Nnc/Ofp&G$lkPtP^JcG'9rr at WMJcERdr;b[RrrC7Bs%36-s'l"%s%r_es&f;#s'Yk#pJh#t
+qka1oqZ,HVpVus>qloh7s*OX_rO_gDoDeR)qpG/XqpG/Xq9f)Zo?m6Np!NfOqo8Y_rPnNXrS?q^
+mEtmg\&RUCkHOcY[K$1*JcG?Arr at WMU&Y,mU$r!]JcCH(rr at WMg&M'PJcEXfr;b+BrM91Ts.o7R
+rLEPJrLEbEr;ceUqj?RHrrAbmqZ+tBn,<:L^]!^!q=FLXp[J.Qp[J"Gs3pr2n*U/7s53e7s4@;)
+JcD;@rrDHdrrA8_rrB,"J,~>
+g&M!Nnc/Ofp&G$lkPtP^JcG'9rr at WMJcERdr;b[RrrC7Bs8Doqp%\R_s7ZKgqtBpYp&=gg\c2W7
+mJc_WS,WGnJc<@^[K$1*JcG?Arr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcEXfr;b+Bao2/<p\j:T
+rrAbmqZ+tBs*4Qrqfr-`rG)@Es&]/9qeH(Aqf2:Hq.'A.qe,_%q-<_jqcWSerAXUKogAO6q^ha_
+pFPt\obN,YScA]imJm1dPQ1X_X8d\~>
+g&M!Nnc/Ofp&G$lkPtP^JcG'9rr at WMJcERdr;b[RrrC7Bs4RG9s7?91s24lVrOW$4s2OfEqlfn$
+qka/ih50k+pR:uUpQ#8 at qi:WDpQ"kFpQ#-'pQ#-'pQ#'%qi:9#ooA]ts-ihFs$QaFon33fmuHdf
+rHPf3kF1S1q67:,r;_EKoDegjJcDGDrrA`7rr at WML&_/QJcFF'rr at WM_uKZ8c2[`lpPT!#o8<L%
+onr^'qj%*[rK[8;kPtP^U&Xuici<GLrr at TcrrCplJcD;@rrDHdrrA8_rrB,"J,~>
+l2U\^p&FsjmJm+bq>^HpJcF'rrr at WMMuW_U\,ZC,X8i2rs'YjXs&8q`s%35ms&B#+s%2rarF#Gt
+q#JsLq8W0 at q69\7s*OX_rO_mFoDeF%s3^GXs3^MZq9f)Zo?m0LpX0#Qqo8Y_rPnNXs5!:drHnRa
+mEtsG[DqCAkHOcYZ2ah(JcGECrr at WMU&Y,mU#5kMJcCH(rr at WMJcC<$iW&qUj-]k:o9fQ?pPo+O
+q3[0AqZ+b<n,<:L^]!WtrU]dXq=+ at Sp[IqEs68q<q;VA)l2Ub`JcE4Zrr at WMrVultX8d\~>
+l2U\^p&FsjmJm+bq>^HpJcF'rrr at WMMuW_U\,ZC,X8i.ss6]FQs7QEerV$-[q>U0iZi:!1n,DqY
+RK!5liVre]Jc=X-Z2ah(JcGECrr at WMU&Y,mU&Y,mJcCH(rr at WMJcC<$iW$mqr;cZlNW8kUaoDBc
+s+C2ns)n9Ts)%d;s)%RHs(;.Jo5=;4s'5G6q,-rmq+gfiohPNGpJ1HMq)@anoc`uDl2Ub`JcE4Z
+rr at WMrVultX8d\~>
+l2U\^p&FsjmJm+bq>^HpJcF'rrr at WMMuW_U\,ZC,X8i4Ks24m.s1eT]s2P#Ks0)IBpU^=,q69Yp
+eYW)%pR:oSq2YJBqi:WDq2Y(Ho8`j'o8`j'ooAj#qi:9#o8`Qts-ihFs$QaFon39ho8`c:s,QK!
+s-g?UkF1S1q67.(rr at WMp&G$lJcDGDrrA`Grr at WML&_/QJcC<$JcF^/s*Wjas+g3's-!,Ar;cYN
+NW8kUaoCfFrr at Tch%o8Trr at WM\,ZI.JcG]KrrB,"J,~>
+l2U\^p&FsjmJm+bq>^HpJcF'rrr at WMMuW_U\,ZC,X8i2rs'YjXs&8q`s%35ms&B#+s%2rarF#Gt
+q#JsLq8W0 at q69\7s*OX_rO_mFoDeF%s3^GXs3^MZq9f)Zo?m0LpX0#Qqo8Y_rPnNXs5!:drHnRa
+mEtsG[DqCAkHOcYZ2ah(JcGECrr at WMU&Y,mU#5kMJcCH(rr at WMJcC<$iW&qUj-]k:o9fQ?pPo+O
+q3[0AqZ+b<n,<:L^]!WtrU]dXq=+ at Sp[IqEs68q<q;VA)l2Ub`JcE4Zrr at WMrVultX8d\~>
+l2U\^p&FsjmJm+bq>^HpJcF'rrr at WMMuW_U\,ZC,X8i.ss6]FQs7QEerV$-[q>U0iZi:!1n,DqY
+RK!5liVre]Jc=X-Z2ah(JcGECrr at WMU&Y,mU&Y,mJcCH(rr at WMJcC<$iW$mqr;cZlNW8kUaoDBc
+s+C2ns)n9Ts)%d;s)%RHs(;.Jo5=;4s'5G6q,-rmq+gfiohPNGpJ1HMq)@anoc`uDl2Ub`JcE4Z
+rr at WMrVultX8d\~>
+l2U\^p&FsjmJm+bq>^HpJcF'rrr at WMMuW_U\,ZC,X8i4Ks24m.s1eT]s2P#Ks0)IBpU^=,q69Yp
+eYW)%pR:oSq2YJBqi:WDq2Y(Ho8`j'o8`j'ooAj#qi:9#o8`Qts-ihFs$QaFon39ho8`c:s,QK!
+s-g?UkF1S1q67.(rr at WMp&G$lJcDGDrrA`Grr at WML&_/QJcC<$JcF^/s*Wjas+g3's-!,Ar;cYN
+NW8kUaoCfFrr at Tch%o8Trr at WM\,ZI.JcG]KrrB,"J,~>
+l2U\^p&Fsjl2U\^rVultp](0lJcC<$JcCr6rrB2$s$6N6s$?ZVs%NAjrCQ`_qka/ibHUrbot1%(
+q8WG]rPnZFqo87-o>^gXo>^gXou?mVpVusTs1 at mBq9f/Qou?[Plc/D at rO]JWkI]o]q5(@rrr at WM
+p&G$lJcDGDrrAbMrr at WML]@;QJcC<$VuQbs^&S,1j-]k:o9fQ?o8WbMqj<ZKq#J>4n,<:L^&@Kt
+rU]dXq=+ at Sp[I)-q;VG+s2XC(rr at WMJcE(VrrB,"J,~>
+l2U\^p&Fsjl2U\^rVultp](0lJcC<$JcCr6rrB2$s7lQ[p\=XYrV$9_s6ojaqZ*\rs0D+moDaC@
+Jc=-tZ2ah(JcGECrr at WMU&Y,mU&Y,mJcCN*r;_EKJcDYJrrBb4_>XB6qu)f[q#J>4s)e9nqfr-`
+s(_RQs)%d;s)%RHs(;.Jo5=52q.KY'pK[_qrD*/kohPNGpJ1HMpG_Uno-*cBl2Ub`JcC<$ZiC%*
+X8d\~>
+l2U\^p&Fsjl2U\^rVultp](0lJcC<$JcCr6rrB2$s3gl;s3^ebrOVsIpU^7+qZ+g9rJpQ>q5*nI
+s$QaFq3q2 at oDeEBs+Bp's+C!)qh+X'pOiL7o8`X!rL3D>on2Rjmt:S-[>sF=kGA!YZ2ah(JcGEC
+rr at WMU&Y,mTeHEGJcCN*r;_EKJcDYJrrBb4s*Wjas+g3's,uu=rrDqRQ2gX[_uK0 at rr@TcgD9&R
+rr at WMJcE(VrrB,"J,~>
+l2U\^p&Fsjl2U\^rVultp](0lJcC<$JcCr6rrB2$s$6N6s$?ZVs%NAjrCQ`_qka/ibHUrbot1%(
+q8WG]rPnZFqo87-o>^gXo>^gXou?mVpVusTs1 at mBq9f/Qou?[Plc/D at rO]JWkI]o]q5(@rrr at WM
+p&G$lJcDGDrrAbMrr at WML]@;QJcC<$VuQbs^&S,1j-]k:o9fQ?o8WbMqj<ZKq#J>4n,<:L^&@Kt
+rU]dXq=+ at Sp[I)-q;VG+s2XC(rr at WMJcE(VrrB,"J,~>
+l2U\^p&Fsjl2U\^rVultp](0lJcC<$JcCr6rrB2$s7lQ[p\=XYrV$9_s6ojaqZ*\rs0D+moDaC@
+Jc=-tZ2ah(JcGECrr at WMU&Y,mU&Y,mJcCN*r;_EKJcDYJrrBb4_>XB6qu)f[q#J>4s)e9nqfr-`
+s(_RQs)%d;s)%RHs(;.Jo5=52q.KY'pK[_qrD*/kohPNGpJ1HMpG_Uno-*cBl2Ub`JcC<$ZiC%*
+X8d\~>
+l2U\^p&Fsjl2U\^rVultp](0lJcC<$JcCr6rrB2$s3gl;s3^ebrOVsIpU^7+qZ+g9rJpQ>q5*nI
+s$QaFq3q2 at oDeEBs+Bp's+C!)qh+X'pOiL7o8`X!rL3D>on2Rjmt:S-[>sF=kGA!YZ2ah(JcGEC
+rr at WMU&Y,mTeHEGJcCN*r;_EKJcDYJrrBb4s*Wjas+g3's,uu=rrDqRQ2gX[_uK0 at rr@TcgD9&R
+rr at WMJcE(VrrB,"J,~>
+l2U\^p](*jjo>2XJcC<$JcFp5r;`Pkr;a8*s%E;Ns"+1Ds$$HSrD`_epJh0]qZ-MirNQ6he$/ej
+pUg+&qo8Y_rPnZFqo87-o>^g7j2V,Hou?aRrO_aBqpG;Qou?aRs1 at O8p!NTI[Dq=?kHOcYJcDSH
+rr at WMU&Y,mU#5kMJcCN*r;_EKJcDkPrrE*!rrB\2s/4nEs.&bLm>_&Es-T;UqZ+>0n,<4J^&@Er
+s7>pXrUB^Up$hkGs7#:?q;VG+s4X7Jrr at WMg].9RU&Y,mX8d\~>
+l2U\^p](*jjo>2XJcC<$JcFp5r;`Pkr;a8*s2P$4s6]RUrUp3^s7ZE_s6p!eqZ*Jls0D+moDaC@
+Jc='rJcDSHrr at WMU&Y,mU&Y,mJcCN*r;_EKJcDkPrrE*!rrB\2^]"*2s8AGeqZ+>0s*4Qrq0;p^
+s(_RQrE'#9q.fqAqf24Fs*=EMrGMLFrDE5mrD*/kkt^t?pG_Uno-*cBU]:>oJcFL)rrAbmrrB,"
+J,~>
+l2U\^p](*jjo>2XJcC<$JcFp5r;`Pkr;a8*s8MuMs7?91s3^kdrOVsIpU^C:qZ-MtrMBJ)e#!#'
+pR:cOqi:\DrJp]Bqi::Jo8`jIj,X.looAd!rL3D>qh+d7ooAd!s-i24on3(/[>s@;kGA!YJcDSH
+rr at WMU&Y,mTeHEGJcCN*r;_EKJcDkPrrE*!rrB\2s*Wjas+g9)m?RVMs,*<GqZ+>0mhYj%JJQuU
+U]:>oJcFL)rrAbmrrB,"J,~>
+l2U\^p](*jjo>2XJcC<$JcFp5r;`Pkr;a8*s%E;Ns"+1Ds$$HSrD`_epJh0]qZ-MirNQ6he$/ej
+pUg+&qo8Y_rPnZFqo87-o>^g7j2V,Hou?aRrO_aBqpG;Qou?aRs1 at O8p!NTI[Dq=?kHOcYJcDSH
+rr at WMU&Y,mU#5kMJcCN*r;_EKJcDkPrrE*!rrB\2s/4nEs.&bLm>_&Es-T;UqZ+>0n,<4J^&@Er
+s7>pXrUB^Up$hkGs7#:?q;VG+s4X7Jrr at WMg].9RU&Y,mX8d\~>
+l2U\^p](*jjo>2XJcC<$JcFp5r;`Pkr;a8*s2P$4s6]RUrUp3^s7ZE_s6p!eqZ*Jls0D+moDaC@
+Jc='rJcDSHrr at WMU&Y,mU&Y,mJcCN*r;_EKJcDkPrrE*!rrB\2^]"*2s8AGeqZ+>0s*4Qrq0;p^
+s(_RQrE'#9q.fqAqf24Fs*=EMrGMLFrDE5mrD*/kkt^t?pG_Uno-*cBU]:>oJcFL)rrAbmrrB,"
+J,~>
+l2U\^p](*jjo>2XJcC<$JcFp5r;`Pkr;a8*s8MuMs7?91s3^kdrOVsIpU^C:qZ-MtrMBJ)e#!#'
+pR:cOqi:\DrJp]Bqi::Jo8`jIj,X.looAd!rL3D>qh+d7ooAd!s-i24on3(/[>s@;kGA!YJcDSH
+rr at WMU&Y,mTeHEGJcCN*r;_EKJcDkPrrE*!rrB\2s*Wjas+g9)m?RVMs,*<GqZ+>0mhYj%JJQuU
+U]:>oJcFL)rrAbmrrB,"J,~>
+kPt&PhuE]VJcC<$RK*9eJcG!7r;aP2rCd/FrAjm$s$?TTs&B"^rCQlcqZ-Skqi:'4gT^@_os">5
+s*O^apUgIFoDeipo>^g7o>^g7o>^gXou?gTqn)O at rR(AOou?mVqn)16pX/`IZc;1?kHOcYVuQ\q
+KE(rOJcDGDrrAbMrrDZjo`0RCTE"okJcC<$XoJD$\,ZK(eX5``rL!N`U]:2k\,YpqrTCfknbVkO
+rUBXSp[J.Kqs`k;q;VG.U]:>oJcFF'rrAtsrrE*!rrB,"J,~>
+kPt&PhuE]VJcC<$RK*9eJcG!7r;aP2rPna0s6]XWrUp3]s7QE`s6ogbTDnkrnc&.[Jc:6"ci0jB
+r;_KMrr at WMU&Y,mU&Y,moDeI`JcDABrr at WMJcDkPrrBP.]D_[.U]:2k\,ZJQs+C?$rHS?bs(_RQ
+s,R%ps+C?%qeH.Cqf2:HrH\3Kqel at FrDE5ms&&ekpK at 5cs&o(kpI"[6nLX2RpD0P(rr at WMg&M'P
+VuQbss8W*!X8d\~>
+kPt&PhuE]VJcC<$RK*9eJcG!7r;aP2rVliUrRq5Ls3^ebs186XrPn`GqZ-T!qo8$8gSOS3oqhPG
+s$QaFpR;,BoDeieo8`jIo8`jIo8`j'ooAj#qjR2<rIaj5ooAp%qjQi2pOi4/Z]=4;kGA!YVuQ\q
+KE(rOJcDGDrrA`GrrDZjo`0RCTE"okJcC<$XoJD$\,ZJXeV`aZrJLORU]:2k\,Yn4r;_BagD6Ra
+rr at WMg&M'PVuQbss8W*!X8d\~>
+kPt&PhuE]VJcC<$RK*9eJcG!7r;aP2rCd/FrAjm$s$?TTs&B"^rCQlcqZ-Skqi:'4gT^@_os">5
+s*O^apUgIFoDeipo>^g7o>^g7o>^gXou?gTqn)O at rR(AOou?mVqn)16pX/`IZc;1?kHOcYVuQ\q
+KE(rOJcDGDrrAbMrrDZjo`0RCTE"okJcC<$XoJD$\,ZK(eX5``rL!N`U]:2k\,YpqrTCfknbVkO
+rUBXSp[J.Kqs`k;q;VG.U]:>oJcFF'rrAtsrrE*!rrB,"J,~>
+kPt&PhuE]VJcC<$RK*9eJcG!7r;aP2rPna0s6]XWrUp3]s7QE`s6ogbTDnkrnc&.[Jc:6"ci0jB
+r;_KMrr at WMU&Y,mU&Y,moDeI`JcDABrr at WMJcDkPrrBP.]D_[.U]:2k\,ZJQs+C?$rHS?bs(_RQ
+s,R%ps+C?%qeH.Cqf2:HrH\3Kqel at FrDE5ms&&ekpK at 5cs&o(kpI"[6nLX2RpD0P(rr at WMg&M'P
+VuQbss8W*!X8d\~>
+kPt&PhuE]VJcC<$RK*9eJcG!7r;aP2rVliUrRq5Ls3^ebs186XrPn`GqZ-T!qo8$8gSOS3oqhPG
+s$QaFpR;,BoDeieo8`jIo8`jIo8`j'ooAj#qjR2<rIaj5ooAp%qjQi2pOi4/Z]=4;kGA!YVuQ\q
+KE(rOJcDGDrrA`GrrDZjo`0RCTE"okJcC<$XoJD$\,ZJXeV`aZrJLORU]:2k\,Yn4r;_BagD6Ra
+rr at WMg&M'PVuQbss8W*!X8d\~>
+jo=uRh>dKTJcC<$RK*9eJcFj3r;ab8qb-lGrtbW#s$$HSs&B"^rCQebrL3b_pQ"L,hm!-Wq7H1$
+rPnkas2O`Ds2O[1s0219rNPt7rNPD'qpG5Oo>^gXpUg+<rR(GQlc/hLs1A5JpUdiQs)7/6kHOcY
+JcDYJr;_EKU&Y,mU#5kMp&FO^JcDGDrr at WMJcE:\r;a&$s.n,2m>_"1s8W#tXoJ7uZ2a4is6%#m
+nbVkOs7#dSp[J.Kqs`k;q;VG+s3og(rr at WMJcE^hrrE*!rrB,"J,~>
+jo=uRh>dKTJcC<$RK*9eJcFj3r;ab8qo8U0s6]d[s7QEerUp3]q#Hi^s0D1ooDaC at jo54aX8`.)
+a8UYiVuQ\qJcDGDrrAbmrrD`lnGn.?U&Y,mJcC<$\c;U.YQ)*1s8W#tXoJ7uZ2ai]s+C?$rHS?b
+rK at 2@s+C>gs+C?%s,6nlrFYqHoks_Rq.';>rFc.-o3D;moi_)crE8kipI"[6nLX2RobQB`rr at WM
+JcE^hrrE*!rrB,"J,~>
+jo=uRh>dKTJcC<$RK*9eJcFj3r;ab8qu6QLs8DoDs2P)Ms3^ebq#LB*s027;l+>iLs02<fnYQ2E
+s$QgHopYo at oDeieooB!IooB!Ijc94jq3po8s+C'7ooB!'q3pW0qh+p;rD**U[>t8^l'ge3q65GM
+VuQ\qJcDGDrrA`GrrD`lnGn.?U&Y,mJcC<$\c;U.YQ+WPdu*OXqhkFRr;`u"qZ*o$m2#^%JJQoS
+h>dKTJcC<$`W,r<s8W*!X8d\~>
+jo=uRh>dKTJcC<$RK*9eJcFj3r;ab8qb-lGrtbW#s$$HSs&B"^rCQebrL3b_pQ"L,hm!-Wq7H1$
+rPnkas2O`Ds2O[1s0219rNPt7rNPD'qpG5Oo>^gXpUg+<rR(GQlc/hLs1A5JpUdiQs)7/6kHOcY
+JcDYJr;_EKU&Y,mU#5kMp&FO^JcDGDrr at WMJcE:\r;a&$s.n,2m>_"1s8W#tXoJ7uZ2a4is6%#m
+nbVkOs7#dSp[J.Kqs`k;q;VG+s3og(rr at WMJcE^hrrE*!rrB,"J,~>
+jo=uRh>dKTJcC<$RK*9eJcFj3r;ab8qo8U0s6]d[s7QEerUp3]q#Hi^s0D1ooDaC at jo54aX8`.)
+a8UYiVuQ\qJcDGDrrAbmrrD`lnGn.?U&Y,mJcC<$\c;U.YQ)*1s8W#tXoJ7uZ2ai]s+C?$rHS?b
+rK at 2@s+C>gs+C?%s,6nlrFYqHoks_Rq.';>rFc.-o3D;moi_)crE8kipI"[6nLX2RobQB`rr at WM
+JcE^hrrE*!rrB,"J,~>
+jo=uRh>dKTJcC<$RK*9eJcFj3r;ab8qu6QLs8DoDs2P)Ms3^ebq#LB*s027;l+>iLs02<fnYQ2E
+s$QgHopYo at oDeieooB!IooB!Ijc94jq3po8s+C'7ooB!'q3pW0qh+p;rD**U[>t8^l'ge3q65GM
+VuQ\qJcDGDrrA`GrrD`lnGn.?U&Y,mJcC<$\c;U.YQ+WPdu*OXqhkFRr;`u"qZ*o$m2#^%JJQoS
+h>dKTJcC<$`W,r<s8W*!X8d\~>
+[K$7,JcC<$JcGKEr;_QOr;b%@q+LZ=s#L*&s$$BQs$$;[s&Af_ooA($j08KYqn)=$s2P(cs2O`D
+oDecnou?m5pW!09o>^g7o>^aVpUg+<ot0n:s3^SQlc/nNn%6!Is)7)4l*0oYJcD_Lr;_EKU&Y,m
+U#5kMp](0lp](*jJcDMFrr at WMJcC<$j8].Te!TH\rL!K^r;a>,qZ*\smJ[(J\c)'poCr"NmI9<+
+qr7Y-s4Z6-rr at WMJcEXfrrB,"J,~>
+[K$7,JcC<$JcGKEr;_QOr;b%@q8W=,s6]j]s7QEes7Q6hs6l0Ns0D7qoDaC at M>mO\`VtGgWW2ns
+JcDGDrrAbmrrDfnr;cTlqZ)3IU]:>oJcC<$JcFd1\,H4(r;a>,qZ*\srJLJss,6i=s,R,3s)%dd
+qhtJdqf24Fqg&'Kq/6.Do3D;ms'5;$q+glkpJ1BKq)@annKIWBg].9RJcC<$_uK`:X8d\~>
+[K$7,JcC<$JcGKEr;_QOr;b%@q>U?Rs4RGNs3^ebs3^]Ds18$<ou?%(j/)^YqjQuMs,R+Hs,Qc@
+oDeccooApGpQ#3Ko8`jIo8`d%pR:c8opYQ6s+C'7l]1prn!^YEs%_aGl)"-YJcD_Lr;_EKU&Y,m
+TeHEGp](0lp](*jJcDMFrr at WMJcC<$j8]./du*IVrJLLPr;a>,qZ*\sm2#^%JJQoSg].9RJcC<$
+_uK`:X8d\~>
+[K$7,JcC<$JcGKEr;_QOr;b%@q+LZ=s#L*&s$$BQs$$;[s&Af_ooA($j08KYqn)=$s2P(cs2O`D
+oDecnou?m5pW!09o>^g7o>^aVpUg+<ot0n:s3^SQlc/nNn%6!Is)7)4l*0oYJcD_Lr;_EKU&Y,m
+U#5kMp](0lp](*jJcDMFrr at WMJcC<$j8].Te!TH\rL!K^r;a>,qZ*\smJ[(J\c)'poCr"NmI9<+
+qr7Y-s4Z6-rr at WMJcEXfrrB,"J,~>
+[K$7,JcC<$JcGKEr;_QOr;b%@q8W=,s6]j]s7QEes7Q6hs6l0Ns0D7qoDaC at M>mO\`VtGgWW2ns
+JcDGDrrAbmrrDfnr;cTlqZ)3IU]:>oJcC<$JcFd1\,H4(r;a>,qZ*\srJLJss,6i=s,R,3s)%dd
+qhtJdqf24Fqg&'Kq/6.Do3D;ms'5;$q+glkpJ1BKq)@annKIWBg].9RJcC<$_uK`:X8d\~>
+[K$7,JcC<$JcGKEr;_QOr;b%@q>U?Rs4RGNs3^ebs3^]Ds18$<ou?%(j/)^YqjQuMs,R+Hs,Qc@
+oDeccooApGpQ#3Ko8`jIo8`d%pR:c8opYQ6s+C'7l]1prn!^YEs%_aGl)"-YJcD_Lr;_EKU&Y,m
+TeHEGp](0lp](*jJcDMFrr at WMJcC<$j8]./du*IVrJLLPr;a>,qZ*\sm2#^%JJQoSg].9RJcC<$
+_uK`:X8d\~>
+[K$7,JcC<$JcC<$oDeahp](6nhuE at Bs#0m;rtbPsqZ-X[s%36NqjRJ9oo at pul*0u[rO_O&s2P(c
+o=OVoqlon9q69\7q69V5rNPn5s3^MOpW!6;o=Ob:s0270l,N,&dDkRXl)"'bkHOcYJcDYJrr at WM
+U&Y,mU#5kMp](0lp&FsjJcDMFrr at WMg&M'PJcC`0s.n24l&GS-q>^Bnp](6nc2[Y at VuQ)]s6$rk
+nbVkOp%.eEs4[MBs2O6hrSmkEs4W&(JcD5>rrB,"J,~>
+[K$7,JcC<$JcC<$oDeahp](6nhuEYeq8WC.s6]j]s7Q6hrUZ*Ls0D7qoDaC at Jc<jlJcDYJrr at WM
+U&Y,mU&Y,mp](0lp&FsjJcDMFrr at WMg&M'PJcC`0[Jfq$r;cTlrrC=DqZ*Pos*4Qrs*suls,Qu>
+s,R,3s)%ddqhtK1qf24Fqg&-MokseBo3D;ms'5;$qbI#kohP6KpG`+'rtbVcs%E/=mihKBJcC<$
+S,`KgX8d\~>
+[K$7,JcC<$JcC<$oDeahp](6nhuEBKs4mY-s8DoDqZ-ZDrPn`HrR(;Xhn/-Lq69gdn"p&Es$QCH
+oDe]aq2Y9Iq2Y9IpQ#3Ko8`j'opYW8s/#=UpQ#9MpR:?,m@)F_mA9'OopY'?q65GMVuQbsJcDGD
+rrA`GrrDfnr;cNjr;_EKU]:>oJcFF'rr at WMNW9$.eV`UVqhk4Lr;cTlrrC=DqZ*PolPBL#JJS7c
+rtbW-h\LeCJcD5>rrB,"J,~>
+[K$7,JcC<$JcC<$oDeahp](6nhuE at Bs#0m;rtbPsqZ-X[s%36NqjRJ9oo at pul*0u[rO_O&s2P(c
+o=OVoqlon9q69\7q69V5rNPn5s3^MOpW!6;o=Ob:s0270l,N,&dDkRXl)"'bkHOcYJcDYJrr at WM
+U&Y,mU#5kMp](0lp&FsjJcDMFrr at WMg&M'PJcC`0s.n24l&GS-q>^Bnp](6nc2[Y at VuQ)]s6$rk
+nbVkOp%.eEs4[MBs2O6hrSmkEs4W&(JcD5>rrB,"J,~>
+[K$7,JcC<$JcC<$oDeahp](6nhuEYeq8WC.s6]j]s7Q6hrUZ*Ls0D7qoDaC at Jc<jlJcDYJrr at WM
+U&Y,mU&Y,mp](0lp&FsjJcDMFrr at WMg&M'PJcC`0[Jfq$r;cTlrrC=DqZ*Pos*4Qrs*suls,Qu>
+s,R,3s)%ddqhtK1qf24Fqg&-MokseBo3D;ms'5;$qbI#kohP6KpG`+'rtbVcs%E/=mihKBJcC<$
+S,`KgX8d\~>
+[K$7,JcC<$JcC<$oDeahp](6nhuEBKs4mY-s8DoDqZ-ZDrPn`HrR(;Xhn/-Lq69gdn"p&Es$QCH
+oDe]aq2Y9Iq2Y9IpQ#3Ko8`j'opYW8s/#=UpQ#9MpR:?,m@)F_mA9'OopY'?q65GMVuQbsJcDGD
+rrA`GrrDfnr;cNjr;_EKU]:>oJcFF'rr at WMNW9$.eV`UVqhk4Lr;cTlrrC=DqZ*PolPBL#JJS7c
+rtbW-h\LeCJcD5>rrB,"J,~>
+[K$7,JcF'rrr at WM]Dqg0JcG-;r;c`prrD$Xoh566q#LFNrBC6Qs,R&Hq1J@#h4!Z6q5+,'l`gD9
+ot0hqq69\7q69\7q69V5rNPn5o=Ob:rNPt,s2P(cqo8Z?ot0\4rNPV"h8\KZh51(=l`g2]RK*9e
+OoPF]JcDGDrrAbMrrD6^r;_EKU]:>oJcFF'rr at WMoDeahTE!B-l&GS-p&G$lq>^Hpe,T:FU&XHW
+s6$linbVqQp%/"KqpGFurR(S`lg=T/s4W&(U&Y,mci<qDZiC%*X8d\~>
+[K$7,JcF'rrr at WM]Dqg0JcG-;r;c`prrD$Xot11tq#LBas6fpUNW/s`p&=R_PQ(TfJc<4ZRK*9e
+OoPF]JcDGDrrAbmrrD6^r;_EKU]:>oJcFF'rr at WMoDeahTDu=tp&G$lq>^Hpe,T:FU&Y.Xs+C?$
+s*4R(s-<JErIb,es+(!)rJ:DloksSNrF>M<s(Cq.s)\-Dq-!SiqcWSepI"g:qb-qhq+LZ;mihKB
+JcDGDrrCCFr;a2(rrB,"J,~>
+[K$7,JcF'rrr at WM]Dqg0JcG-;r;c`prrD$Xp&=pQq#LHMrR(S`rO_mQou>h"l_XE]s-i8Ms$QIJ
+oDeW_q2Y9Iq2Y9IpQ#3Ko8`F2pQ#3KopYo at s$Q[Ds/#CWmuI at Cl^HXij/(S9rO_Blq66:errA2]
+rr at WMU&Y,mTeHEGkPtJ\JcDMFrr at WMg&M'PJcG?Ar;`Jidu*CTqhk(HrrDlprrCOJqZ*>ilPBL#
+LDKb[rrDjfitd4GU&Y,mci<qDZiC%*X8d\~>
+[K$7,JcF'rrr at WM]Dqg0JcG-;r;c`prrD$Xoh566q#LFNrBC6Qs,R&Hq1J@#h4!Z6q5+,'l`gD9
+ot0hqq69\7q69\7q69V5rNPn5o=Ob:rNPt,s2P(cqo8Z?ot0\4rNPV"h8\KZh51(=l`g2]RK*9e
+OoPF]JcDGDrrAbMrrD6^r;_EKU]:>oJcFF'rr at WMoDeahTE!B-l&GS-p&G$lq>^Hpe,T:FU&XHW
+s6$linbVqQp%/"KqpGFurR(S`lg=T/s4W&(U&Y,mci<qDZiC%*X8d\~>
+[K$7,JcF'rrr at WM]Dqg0JcG-;r;c`prrD$Xot11tq#LBas6fpUNW/s`p&=R_PQ(TfJc<4ZRK*9e
+OoPF]JcDGDrrAbmrrD6^r;_EKU]:>oJcFF'rr at WMoDeahTDu=tp&G$lq>^Hpe,T:FU&Y.Xs+C?$
+s*4R(s-<JErIb,es+(!)rJ:DloksSNrF>M<s(Cq.s)\-Dq-!SiqcWSepI"g:qb-qhq+LZ;mihKB
+JcDGDrrCCFr;a2(rrB,"J,~>
+[K$7,JcF'rrr at WM]Dqg0JcG-;r;c`prrD$Xp&=pQq#LHMrR(S`rO_mQou>h"l_XE]s-i8Ms$QIJ
+oDeW_q2Y9Iq2Y9IpQ#3Ko8`F2pQ#3KopYo at s$Q[Ds/#CWmuI at Cl^HXij/(S9rO_Blq66:errA2]
+rr at WMU&Y,mTeHEGkPtJ\JcDMFrr at WMg&M'PJcG?Ar;`Jidu*CTqhk(HrrDlprrCOJqZ*>ilPBL#
+LDKb[rrDjfitd4GU&Y,mci<qDZiC%*X8d\~>
+[K$7,JcF'rrr at WMJcDABr;bgVo1Sr\rtbPsrA4I;s+C91s-ib9oo@^on$)J]l`gD-ot0hqpTXV9
+os"D7pTXJ5q69P3s021.q8W<9ot17Ds*O^arNPt,n](I1lb!+Bl,MD\hkfk3pTXCg\,ZI.jo>>\
+PQ1X_JcDMFo`2DWo)S%Tr;_EKU&Y,mJcC<$JcFd1e!T<XrL!3Vr;b=HqZ*,cli$kH\,GjnoCr"N
+rUB@)q8Vghs5O(?s6]j?JcDMFrr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMJcDABr;bgVo=Ol"s6]dXrUU!WM>mO\p&=R_PQ(Tf_>aD=Jc>QG\,ZI.jo>>\
+PQ1X_JcDMFo`2E"o)S%Tr;_EKU&Y,mJcC<$JcFd1[Jf^sr;b=HqZ*,crJLW)rJpc<s,R&1s)%dd
+qht?-s)I^LpNcdKokseTo3D<:rET/$rD*/kohP6Ks#918m329 at JcDMFrr@WMrVultX8d\~>
+[K$7,JcF'rrr at WMJcDABr;bgVoD\Ues8DoDrS7A!rPnlLq9elTft6^Los!bYs%`6UoDeQ]rJpQI
+rJpWKq2Y9IooB'KopY]:qk`tSs,R+HrJpiQopYE2qk`VIrBoh0fqmT1n[nOlpTV.,rrD0\rrA8_
+rr at WMU]9ue[4h+Ol2U\^JcDGDrr at WMJcC<$j8[SckEZ"'oDeahe,T:FS,_dirr at rmktC+RJcDMF
+rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMJcDABr;bgVo1Sr\rtbPsrA4I;s+C91s-ib9oo@^on$)J]l`gD-ot0hqpTXV9
+os"D7pTXJ5q69P3s021.q8W<9ot17Ds*O^arNPt,n](I1lb!+Bl,MD\hkfk3pTXCg\,ZI.jo>>\
+PQ1X_JcDMFo`2DWo)S%Tr;_EKU&Y,mJcC<$JcFd1e!T<XrL!3Vr;b=HqZ*,cli$kH\,GjnoCr"N
+rUB@)q8Vghs5O(?s6]j?JcDMFrr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMJcDABr;bgVo=Ol"s6]dXrUU!WM>mO\p&=R_PQ(Tf_>aD=Jc>QG\,ZI.jo>>\
+PQ1X_JcDMFo`2E"o)S%Tr;_EKU&Y,mJcC<$JcFd1[Jf^sr;b=HqZ*,crJLW)rJpc<s,R&1s)%dd
+qht?-s)I^LpNcdKokseTo3D<:rET/$rD*/kohP6Ks#918m329 at JcDMFrr@WMrVultX8d\~>
+[K$7,JcF'rrr at WMJcDABr;bgVoD\Ues8DoDrS7A!rPnlLq9elTft6^Los!bYs%`6UoDeQ]rJpQI
+rJpWKq2Y9IooB'KopY]:qk`tSs,R+HrJpiQopYE2qk`VIrBoh0fqmT1n[nOlpTV.,rrD0\rrA8_
+rr at WMU]9ue[4h+Ol2U\^JcDGDrr at WMJcC<$j8[SckEZ"'oDeahe,T:FS,_dirr at rmktC+RJcDMF
+rr at WMrVultX8d\~>
+[K$7,JcC<$Q2gjaJcF:#r;c*^oh5/^s""*truD%Ss$$H2s"j[7s+C3/pOi.!eXH*6o;1iYs&o*.
+oDeKfrPnN7rPnN7qo8H9pW!09o=Ot at q69P(qo8N;ot0h8q691slc.DXh50;'q5(S#rr at WMp&G$l
+JcDGDrrAb=rrDNfq#H!GU&Y&kJcC<$g&M!NO8m[rkDfG-n,N=dhuEKPQiH=Ks6$linbVkOp%.Y"
+pVu[hrSmkEs4Yg!r;_EKJcF4!rrB,"J,~>
+[K$7,JcC<$Q2gjaJcF:#r;c*^ot1)$s7cQcs7QEDs7Q?]s6b[As0DCuoDaC at Jc<Xf\,ZI.JcGEC
+rr at WMU&Y,mU&Y,mn,N1`JcDGDr;_EKJcFF'r;_oY[JfRor;baTq#Hc]s*t!)s*t'/s-<JEs,R&1
+s)%Xkq2#&qoksMLs't_>rH\'@s)\-DpK at MkpK@5cpI"%8mihKBci<qDJcC<$e,TFJX8d\~>
+[K$7,JcC<$Q2gjaJcF:#r;c*^p&=ggrTF4Os8DuFs6'F;rR(M^pX/ZRe[tFLo<@VYs((kmoDeK[
+rJpQIrJpQIqi:KKpQ#3Ko:#W<q5*bQqi:QMopYK4q5*DGl]0Gjh6?(Sq67 at .rr@WMp&G$lJcDGD
+rrA`WrrDNfq#H!GU&Y&kJcC<$g&M!NO8m[dkEZ"'n,N=dhuEKPQiH:crrA#oj\+bPci<qDJcC<$
+e,TFJX8d\~>
+[K$7,JcC<$Q2gjaJcF:#r;c*^oh5/^s""*truD%Ss$$H2s"j[7s+C3/pOi.!eXH*6o;1iYs&o*.
+oDeKfrPnN7rPnN7qo8H9pW!09o=Ot at q69P(qo8N;ot0h8q691slc.DXh50;'q5(S#rr at WMp&G$l
+JcDGDrrAb=rrDNfq#H!GU&Y&kJcC<$g&M!NO8m[rkDfG-n,N=dhuEKPQiH=Ks6$linbVkOp%.Y"
+pVu[hrSmkEs4Yg!r;_EKJcF4!rrB,"J,~>
+[K$7,JcC<$Q2gjaJcF:#r;c*^ot1)$s7cQcs7QEDs7Q?]s6b[As0DCuoDaC at Jc<Xf\,ZI.JcGEC
+rr at WMU&Y,mU&Y,mn,N1`JcDGDr;_EKJcFF'r;_oY[JfRor;baTq#Hc]s*t!)s*t'/s-<JEs,R&1
+s)%Xkq2#&qoksMLs't_>rH\'@s)\-DpK at MkpK@5cpI"%8mihKBci<qDJcC<$e,TFJX8d\~>
+[K$7,JcC<$Q2gjaJcF:#r;c*^p&=ggrTF4Os8DuFs6'F;rR(M^pX/ZRe[tFLo<@VYs((kmoDeK[
+rJpQIrJpQIqi:KKpQ#3Ko:#W<q5*bQqi:QMopYK4q5*DGl]0Gjh6?(Sq67 at .rr@WMp&G$lJcDGD
+rrA`WrrDNfq#H!GU&Y&kJcC<$g&M!NO8m[dkEZ"'n,N=dhuEKPQiH:crrA#oj\+bPci<qDJcC<$
+e,TFJX8d\~>
+[K$7,JcC<$QiI'cJcF'rr;c<dq+LSbrCd/&s""+*r>,Dss"j\"rIb-1s*49joo at Fgos"%amBHUn
+pUg%sos"J9j08L%pTXD3rNPn*rPnZ;o=P%BpTXD(ou?[/mCVo.rM at oGh50;'q2U%+WW2tuJcDGD
+rrAb=rrDNfpAfdEU]:8mJcC<$XoJD$\c:3Ijc05+li6n`l2UV\O8nVGqrbBcnbVqQp[eF at mEt[J
+na6;7s7$'BVuQbsJcC<$q>^HpX8d\~>
+[K$7,JcC<$QiI'cJcF'rr;c<dq7HM(rO`+(s7lWes4@;1s763]KDtnVp\sdaJc:6"`VtGgWW2tu
+JcDGDrrAbmrrDNfpAfdEU]:8mJcC<$XoJD$\c9)9li6n`l2UV\O8o6Fs,-i+rJpoCqi^u>rGDRK
+rJU]=q2YK5qfVdRpNc at JrH\-BrH%j at q-!_mpK at 5cq*X+6nKI]DVuQbsJcC<$q>^HpX8d\~>
+[K$7,JcC<$QiI'cJcF'rr;c<dq>U6krVliqs6'F;rVccDs4mY1rR(Ybs5!Fsou>Ckoqh8amA9hn
+pR:^Roqh\Kj/)^7pSIVErMB+SrJp]Mo:#]>pSIVQooA^Am@*R*rNO\Gh6?(Sq8S!cWW2tuJcDGD
+rrA`WrrDNfpAfdEU]:8mJcC<$XoJD$\c:3;jd#e%li6n`l2UV\O8nS_qZ)ZmiCiDNVuQbsJcC<$
+q>^HpX8d\~>
+[K$7,JcC<$QiI'cJcF'rr;c<dq+LSbrCd/&s""+*r>,Dss"j\"rIb-1s*49joo at Fgos"%amBHUn
+pUg%sos"J9j08L%pTXD3rNPn*rPnZ;o=P%BpTXD(ou?[/mCVo.rM at oGh50;'q2U%+WW2tuJcDGD
+rrAb=rrDNfpAfdEU]:8mJcC<$XoJD$\c:3Ijc05+li6n`l2UV\O8nVGqrbBcnbVqQp[eF at mEt[J
+na6;7s7$'BVuQbsJcC<$q>^HpX8d\~>
+[K$7,JcC<$QiI'cJcF'rr;c<dq7HM(rO`+(s7lWes4@;1s763]KDtnVp\sdaJc:6"`VtGgWW2tu
+JcDGDrrAbmrrDNfpAfdEU]:8mJcC<$XoJD$\c9)9li6n`l2UV\O8o6Fs,-i+rJpoCqi^u>rGDRK
+rJU]=q2YK5qfVdRpNc at JrH\-BrH%j at q-!_mpK at 5cq*X+6nKI]DVuQbsJcC<$q>^HpX8d\~>
+[K$7,JcC<$QiI'cJcF'rr;c<dq>U6krVliqs6'F;rVccDs4mY1rR(Ybs5!Fsou>Ckoqh8amA9hn
+pR:^Roqh\Kj/)^7pSIVErMB+SrJp]Mo:#]>pSIVQooA^Am@*R*rNO\Gh6?(Sq8S!cWW2tuJcDGD
+rrA`WrrDNfpAfdEU]:8mJcC<$XoJD$\c:3;jd#e%li6n`l2UV\O8nS_qZ)ZmiCiDNVuQbsJcC<$
+q>^HpX8d\~>
+[K$7,JcC<$RK*9eJcEjlr;cTlrCcqdpIkN#s![mertbVus![nlqh+ilpOi.!c^O[6n"oQYs/#`u
+s/#P'p&ELFrPnN7qo8H9ot17Dos",$os",$q8W$1lauo2pSH?Ch50;'q2UC5rrAbmrr at WMU&Y,m
+U!N`=l2UV\JcDMFrr at WMJcDkPrrB\2e!T0Ts-W!Lr;cHhqZ)KQli$eF[JfXloCr.RrS?kgo>^Ch
+s5O(Js6]jCWW2tuJcE@^rrC%<rrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eJcEjlr;cTlrO_k*pUg=ss5O(Ls6bI;s0DCup&BUBJc<RdMuWeWU&Y,mJcDGD
+rrAbmrrD<`qZ)3IU]:>oJcC<$XoJD$]Do59kPtJ\oDe[fM?!U at s,-i+s,R&Cqi^u>s+C>gs(V at n
+q2YK5pN?.Ss+U2bqg&3Oq-<l>qcrMkohPHQgIq,]q%ft0rr at WM]Dqm2`W,r<s8W*!X8d\~>
+[K$7,JcC<$RK*9eJcEjlr;cTlrVlTmp\t3ks6'FQs8DuFs6'F<qpGAupX/ZRcb'"Ln$)>Ys02N6
+s02<fp&EL;rJpQIqi:KKopYo at oqh>Moqh>Mq2Y'Cl^IR.pTW,Ch6?(Sq8S?mrrAbmrr at WMU&Y,m
+Tg/PWl2UV\JcDMFrr at WMJcDkPrrB\2du*1Ns,-">r;cHhqZ)KQlPBF!OVZ\ElP?K"rr at WM]Dqm2
+`W,r<s8W*!X8d\~>
+[K$7,JcC<$RK*9eJcEjlr;cTlrCcqdpIkN#s![mertbVus![nlqh+ilpOi.!c^O[6n"oQYs/#`u
+s/#P'p&ELFrPnN7qo8H9ot17Dos",$os",$q8W$1lauo2pSH?Ch50;'q2UC5rrAbmrr at WMU&Y,m
+U!N`=l2UV\JcDMFrr at WMJcDkPrrB\2e!T0Ts-W!Lr;cHhqZ)KQli$eF[JfXloCr.RrS?kgo>^Ch
+s5O(Js6]jCWW2tuJcE@^rrC%<rrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eJcEjlr;cTlrO_k*pUg=ss5O(Ls6bI;s0DCup&BUBJc<RdMuWeWU&Y,mJcDGD
+rrAbmrrD<`qZ)3IU]:>oJcC<$XoJD$]Do59kPtJ\oDe[fM?!U at s,-i+s,R&Cqi^u>s+C>gs(V at n
+q2YK5pN?.Ss+U2bqg&3Oq-<l>qcrMkohPHQgIq,]q%ft0rr at WM]Dqm2`W,r<s8W*!X8d\~>
+[K$7,JcC<$RK*9eJcEjlr;cTlrVlTmp\t3ks6'FQs8DuFs6'F<qpGAupX/ZRcb'"Ln$)>Ys02N6
+s02<fp&EL;rJpQIqi:KKopYo at oqh>Moqh>Mq2Y'Cl^IR.pTW,Ch6?(Sq8S?mrrAbmrr at WMU&Y,m
+Tg/PWl2UV\JcDMFrr at WMJcDkPrrB\2du*1Ns,-">r;cHhqZ)KQlPBF!OVZ\ElP?K"rr at WM]Dqm2
+`W,r<s8W*!X8d\~>
+[K$7,JcC<$VuQ\qp](6nJcE^hr;cfrqZ-.Zrt58ZruCtQs![hjrIb&non2ptc'nO6mA9EYs/#`u
+s/#V)oDeEds/#=ks/"b[qo8H9ot17#os",$os",$qo801lb!&6q5+$ms/",IrMBNsj/(q-q2UC5
+rrAnqr;_EKU&Y,mU!N`=kPtJ\JcDMFrr at WMJcG!7r;_EKe!T0TrKu^Hr;cfrqZ)?MkPbGDZi0Ll
+oCr4Tqq_;9n'U[Fp$Me=s5j:Ms4W&(JcFX-rrC+>rrE*!rrB,"J,~>
+[K$7,JcC<$VuQ\qp](6nJcE^hr;cfrqZ-/us7cQcs7QEOs31N3Jc>]Ks0DJ"oDaC@^&Iu9bPqOI
+_>]AmrrAnqr;_EKU&Y,mU&Y,mkPtJ\JcDMFrr at WMJcG!7r;_EKZ2Near;cfrqZ)?MqhkE=s,R,E
+qi^u>qh+ofqi^c8rJUJorIF]hs+U2bqg&3Oq-<f<qcrSmohPNSf1Yc[q%eP]JcFX-rrC+>rrE*!
+rrB,"J,~>
+[K$7,JcC<$VuQ\qp](6nJcE^hr;cfrqZ-0cs8Du\s76-es6'@:rR(T"p!NHPc+EkLmBH2Ys02N6
+s02BhoDeEYs02*ks01O[qi:KKopYoboqh>Moqh>Mqi:3Cl^I^2q69g.s00nIrNQ<4j07^Yq8S?m
+rrAnqr;_EKU&Y,mTg/PWkPtJ\JcDMFrr at WMJcG!7r;_EKdu*1NrJK_:r;cfrqZ)?Mk8+'tP8;bC
+m1t9QJcFX-rrC+>rrE*!rrB,"J,~>
+[K$7,JcC<$VuQ\qp](6nJcE^hr;cfrqZ-.Zrt58ZruCtQs![hjrIb&non2ptc'nO6mA9EYs/#`u
+s/#V)oDeEds/#=ks/"b[qo8H9ot17#os",$os",$qo801lb!&6q5+$ms/",IrMBNsj/(q-q2UC5
+rrAnqr;_EKU&Y,mU!N`=kPtJ\JcDMFrr at WMJcG!7r;_EKe!T0TrKu^Hr;cfrqZ)?MkPbGDZi0Ll
+oCr4Tqq_;9n'U[Fp$Me=s5j:Ms4W&(JcFX-rrC+>rrE*!rrB,"J,~>
+[K$7,JcC<$VuQ\qp](6nJcE^hr;cfrqZ-/us7cQcs7QEOs31N3Jc>]Ks0DJ"oDaC@^&Iu9bPqOI
+_>]AmrrAnqr;_EKU&Y,mU&Y,mkPtJ\JcDMFrr at WMJcG!7r;_EKZ2Near;cfrqZ)?MqhkE=s,R,E
+qi^u>qh+ofqi^c8rJUJorIF]hs+U2bqg&3Oq-<f<qcrSmohPNSf1Yc[q%eP]JcFX-rrC+>rrE*!
+rrB,"J,~>
+[K$7,JcC<$VuQ\qp](6nJcE^hr;cfrqZ-0cs8Du\s76-es6'@:rR(T"p!NHPc+EkLmBH2Ys02N6
+s02BhoDeEYs02*ks01O[qi:KKopYoboqh>Moqh>Mqi:3Cl^I^2q69g.s00nIrNQ<4j07^Yq8S?m
+rrAnqr;_EKU&Y,mTg/PWkPtJ\JcDMFrr at WMJcG!7r;_EKdu*1NrJK_:r;cfrqZ)?Mk8+'tP8;bC
+m1t9QJcFX-rrC+>rrE*!rrB,"J,~>
+[K$7,JcC<$JcC<$fDkdLm7[H`rt58ZruD%SrGDLXs+C>grHS'hoo at ._s01gcos"Cks&o;srO_\$
+o<A1ios"Ckos"Imo<A25pTX>&s/#CmpUgI%os",$rPn<1lb!2:n"nF9rMBNsj/(q-q2U%+XoJ>"
+JcDGDrrAb=rrDfnr;cNjr;_EKU]:>oJcC<$JcFj3e!T0TrKuRDr;_EKs8VuprTE_Ls6'4Vs6%)o
+nbVqQs7?'Bs6/q!n](1fs5O(Js4Y<hrr at WMJcF^/rrB,"J,~>
+[K$7,JcC<$JcC<$fDkdLq69P(s7cQcs7QE_s1s9cqu6W$q>U!cJc:<$s0BK?JcDkPr;_EKU&Y,m
+U&Y,mp](0lp&FsjJcDMFrr at WMJcC<$jo;UaiW&iVJcGcMs-<VDs.K=?s-<JEs,R&1s,-hqrK@,>
+s*4L&rJUJoqgeQhs+U2bq0E!MrET/>qcs)&s)7R5ohO%1o-*uH_>jN8JcC<$iW&oXX8d\~>
+[K$7,JcC<$JcC<$fDkdLmJd(_s6'FQs8Do[rS at M$s60F;pX/ZRah.SLl`g&YrNQ<4rNQ6hoDeEY
+rNPskrNPsks02*krJpWKopYoboqhDOs020mopYi>n"o?=s,QQPdA?fGs((/okI^Q0JcDkPr;_EK
+U&Y,mTg/PWp](0lp&FsjJcDMFrr at WMJcC<$jo<eej-BS#iW&iVJcGcMq\K,1nJ;-)q%iu1T,,sM
+m2!P<rr at WMJcF^/rrB,"J,~>
+[K$7,JcC<$JcC<$fDkdLm7[H`rt58ZruD%SrGDLXs+C>grHS'hoo at ._s01gcos"Cks&o;srO_\$
+o<A1ios"Ckos"Imo<A25pTX>&s/#CmpUgI%os",$rPn<1lb!2:n"nF9rMBNsj/(q-q2U%+XoJ>"
+JcDGDrrAb=rrDfnr;cNjr;_EKU]:>oJcC<$JcFj3e!T0TrKuRDr;_EKs8VuprTE_Ls6'4Vs6%)o
+nbVqQs7?'Bs6/q!n](1fs5O(Js4Y<hrr at WMJcF^/rrB,"J,~>
+[K$7,JcC<$JcC<$fDkdLq69P(s7cQcs7QE_s1s9cqu6W$q>U!cJc:<$s0BK?JcDkPr;_EKU&Y,m
+U&Y,mp](0lp&FsjJcDMFrr at WMJcC<$jo;UaiW&iVJcGcMs-<VDs.K=?s-<JEs,R&1s,-hqrK@,>
+s*4L&rJUJoqgeQhs+U2bq0E!MrET/>qcs)&s)7R5ohO%1o-*uH_>jN8JcC<$iW&oXX8d\~>
+[K$7,JcC<$JcC<$fDkdLmJd(_s6'FQs8Do[rS at M$s60F;pX/ZRah.SLl`g&YrNQ<4rNQ6hoDeEY
+rNPskrNPsks02*krJpWKopYoboqhDOs020mopYi>n"o?=s,QQPdA?fGs((/okI^Q0JcDkPr;_EK
+U&Y,mTg/PWp](0lp&FsjJcDMFrr at WMJcC<$jo<eej-BS#iW&iVJcGcMq\K,1nJ;-)q%iu1T,,sM
+m2!P<rr at WMJcF^/rrB,"J,~>
+[K$7,JcC<$[K$7,JcE(VrrDfns%E at llV%6is![mertbY7s)%^Zs+C>gqfqjfpQ"creXGg#s-i\d
+rMBNsrMBP+oDecXpTXOkpTXOkos"Imj08?krMB+iqn)a%os",$l`fiil_W"5h50;'q2U%+X8i2"
+JcDGDrrAb=rrDfnr;cNjr;_EKU]:>oJcFF'rrAbmrr at WMnc..,iJmf'mJm1dp](6nJcG]KkPbGD
+p\k-T^&@R!oCr.<rTO"'s+^?sqo8Z`q8WC#s7#pQs5O(Js7?9I_>jN8JcC<$j8],ZX8d\~>
+[K$7,JcC<$[K$7,JcE(VrrDfns02M'q69J&s763_s763+s8RZLqu6W$qu63eJc:6"^]&faX8i2"
+JcDGDrrAbmrrDfnr;cNjr;_EKU]:>oJcFF'rrAbmrr at WMnc,lmmJm1dp](6nJcG]Ks-<VAq3Ci?
+s,R&8s+gW$rK@&<s*4?tqfV^bs*=Kqq/6"RrF>k4q/c@:s&o;=oi_#am7[HZktC[mq%ggHrr at WM
+JcFd1rrB,"J,~>
+[K$7,JcC<$[K$7,JcE(VrrDfns8N#uli-q_s6'FQs8Duts60F;s3^l1qq_"opVuaNe[t.Os1A$%
+rNQ<4rNQ<joDed$pSIbkpSIbkoqh\mj/)R?rNPmiqjRDdoqh>Ml_X'=l`ed5h6?(Sq8S!cX8i2"
+JcDGDrrA`WrrDfnr;cNjr;_EKU]:>oJcFF'rrAbmrr at WMnc.-siKaA!mJm1dp](6nJcG]Kk8+'t
+pD3c/Tbd#grrD:Vm2!P<rr at WMJcFd1rrB,"J,~>
+[K$7,JcC<$[K$7,JcE(VrrDfns%E at llV%6is![mertbY7s)%^Zs+C>gqfqjfpQ"creXGg#s-i\d
+rMBNsrMBP+oDecXpTXOkpTXOkos"Imj08?krMB+iqn)a%os",$l`fiil_W"5h50;'q2U%+X8i2"
+JcDGDrrAb=rrDfnr;cNjr;_EKU]:>oJcFF'rrAbmrr at WMnc..,iJmf'mJm1dp](6nJcG]KkPbGD
+p\k-T^&@R!oCr.<rTO"'s+^?sqo8Z`q8WC#s7#pQs5O(Js7?9I_>jN8JcC<$j8],ZX8d\~>
+[K$7,JcC<$[K$7,JcE(VrrDfns02M'q69J&s763_s763+s8RZLqu6W$qu63eJc:6"^]&faX8i2"
+JcDGDrrAbmrrDfnr;cNjr;_EKU]:>oJcFF'rrAbmrr at WMnc,lmmJm1dp](6nJcG]Ks-<VAq3Ci?
+s,R&8s+gW$rK@&<s*4?tqfV^bs*=Kqq/6"RrF>k4q/c@:s&o;=oi_#am7[HZktC[mq%ggHrr at WM
+JcFd1rrB,"J,~>
+[K$7,JcC<$[K$7,JcE(VrrDfns8N#uli-q_s6'FQs8Duts60F;s3^l1qq_"opVuaNe[t.Os1A$%
+rNQ<4rNQ<joDed$pSIbkpSIbkoqh\mj/)R?rNPmiqjRDdoqh>Ml_X'=l`ed5h6?(Sq8S!cX8i2"
+JcDGDrrA`WrrDfnr;cNjr;_EKU]:>oJcFF'rrAbmrr at WMnc.-siKaA!mJm1dp](6nJcG]Kk8+'t
+pD3c/Tbd#grrD:Vm2!P<rr at WMJcFd1rrB,"J,~>
+[K$7,JcF'rrr at WMli6tbJcE"TrrDlprCd.jm7[<gruD(=rGDLXrGDLXpOiF)s*3RVh4!`-qjRDd
+qka<qqk`oarL3Jbqka%kqka%kqk`DYqn)a%o<A2*qka<qos"2&s/#%co=O+\dBMN)kF2.*JcGcM
+rrB>(rr at WMU&Y,mU!N`=p](0lp](*jJcDMFrr at WMg&M'PU]:>oJcG3=eX5<Ts-<VOmJm1dp](6n
+L&_/QrVu!Xs6$ZcoD8Lcp\4^Oqq_/5q9f4sq9f5^qpG/Xs6]dSqsF at Os4W&(VuQbsYQ+V&dJs4H
+X8d\~>
+[K$7,JcF'rrr at WMli6tbJcE"TrrDlprNQ;%rNPh(s7lQ`s6TdcJc>KEs0DP$oDagLs0 at 4TZi5OU
+s8W*!Z2ah(JcDGDrrAbmrrDfnr;cTlqZ)3IU]:>oJcFF'rrAhorr at WMn,KZkmJm1dp](6nL&_/Q
+rVunTs-WhDq3Ci?s-<P?s+gW$rK?u:q2>2oomlpnqel.RrF>k4q/c@:s&o;=oi_)clV%6Xk=bIk
+q\Fb_VuQbsYQ+V&dJs4HX8d\~>
+[K$7,JcF'rrr at WMli6tbJcE"TrrDlprVlfsmJd"]s763irTO49rTO49pX/rZs4u__h7N'Yqn)a%
+qlp*2qlo\lrO_g#qlogkqlogkqlo1YqjRDdo;2DSqlp*2oqhDOs01gco:"dFdA>a)kI^K.JcGcM
+rrB>(rr at WMU&Y,mTg/PWp](0lp](*jJcDMFrr at WMg&M'PU]:>oJcG3=eV`=Ns,I&9mJm1dp](6n
+L&_/QrVtsprrAB$lV%6Xk=b7ZJcDYJrrB8&rrCIHrrB,"J,~>
+[K$7,JcF'rrr at WMli6tbJcE"TrrDlprCd.jm7[<gruD(=rGDLXrGDLXpOiF)s*3RVh4!`-qjRDd
+qka<qqk`oarL3Jbqka%kqka%kqk`DYqn)a%o<A2*qka<qos"2&s/#%co=O+\dBMN)kF2.*JcGcM
+rrB>(rr at WMU&Y,mU!N`=p](0lp](*jJcDMFrr at WMg&M'PU]:>oJcG3=eX5<Ts-<VOmJm1dp](6n
+L&_/QrVu!Xs6$ZcoD8Lcp\4^Oqq_/5q9f4sq9f5^qpG/Xs6]dSqsF at Os4W&(VuQbsYQ+V&dJs4H
+X8d\~>
+[K$7,JcF'rrr at WMli6tbJcE"TrrDlprNQ;%rNPh(s7lQ`s6TdcJc>KEs0DP$oDagLs0 at 4TZi5OU
+s8W*!Z2ah(JcDGDrrAbmrrDfnr;cTlqZ)3IU]:>oJcFF'rrAhorr at WMn,KZkmJm1dp](6nL&_/Q
+rVunTs-WhDq3Ci?s-<P?s+gW$rK?u:q2>2oomlpnqel.RrF>k4q/c@:s&o;=oi_)clV%6Xk=bIk
+q\Fb_VuQbsYQ+V&dJs4HX8d\~>
+[K$7,JcF'rrr at WMli6tbJcE"TrrDlprVlfsmJd"]s763irTO49rTO49pX/rZs4u__h7N'Yqn)a%
+qlp*2qlo\lrO_g#qlogkqlogkqlo1YqjRDdo;2DSqlp*2oqhDOs01gco:"dFdA>a)kI^K.JcGcM
+rrB>(rr at WMU&Y,mTg/PWp](0lp](*jJcDMFrr at WMg&M'PU]:>oJcG3=eV`=Ns,I&9mJm1dp](6n
+L&_/QrVtsprrAB$lV%6Xk=b7ZJcDYJrrB8&rrCIHrrB,"J,~>
+[K$7,JcF'rrr at WMJcCr6q+L_fmn<Zbr=T&LrVun7rHS9Xqfqjfqfq"Nj-oq,n"ooMqlosos&o;s
+oDe]Vq69Uiqlogkq69amos"Imo<A,(q5*bgs1A*'s&o$!q7HU%l`g&oj/)RUs('lgh50;'q2W)e
+rrC%<rrBD*rr at WMU&Y,mU!N`=p&FO^JcDGDrr at WMJcC<$jo<kuhi7Z'iW&oXL]@ASqu>dVs6$Ta
+p%n^eq=jjOrS@;5kL'%DrU'RQrU'XHs7$'FJcDYJrrB2$rrCOJrrB,"J,~>
+[K$7,JcF'rrr at WMJcCr6q69l!rNPt,s2P*5s7--[s6KX`Jc>KEs0DV&oDaaJs0A?ts0 at ph]Dqm2
+`W,r<ZiC%*JcDGDrrAbmrrD`lnGn.?U&Y,mJcC<$JcFj3Z2NY]rr at iSrrDrrs.'+Ks.K1QrK at 2J
+qhkE/s*O^-q2Y3-s)n!bs,6i0qel.RrF>kQpN-4:s)\-Woi_/ebtI^Qq\Fb_VuQbsXoJD$e,TFJ
+X8d\~>
+[K$7,JcF'rrr at WMJcCr6q>UBon,E4_s76-gs60F;rTO.7pX/lohpLJrrPn<1qn)a%qlp*2rNPnn
+qn)[#pTXOkpTXIiqloais02*kqjR>boqh\Wq69m0oqhJQrNPUaopXpFq5+*ogSN`1kI^Q0]Dqm2
+`W,r<ZiC%*JcDGDrrA`WrrD`lnGn.?U&Y,mJcC<$JcFj3eV`7Ls,,e8rr at iSrrDrrjVIjrR24%?
+mhUKSVuQbsXoJD$e,TFJX8d\~>
+[K$7,JcF'rrr at WMJcCr6q+L_fmn<Zbr=T&LrVun7rHS9Xqfqjfqfq"Nj-oq,n"ooMqlosos&o;s
+oDe]Vq69Uiqlogkq69amos"Imo<A,(q5*bgs1A*'s&o$!q7HU%l`g&oj/)RUs('lgh50;'q2W)e
+rrC%<rrBD*rr at WMU&Y,mU!N`=p&FO^JcDGDrr at WMJcC<$jo<kuhi7Z'iW&oXL]@ASqu>dVs6$Ta
+p%n^eq=jjOrS@;5kL'%DrU'RQrU'XHs7$'FJcDYJrrB2$rrCOJrrB,"J,~>
+[K$7,JcF'rrr at WMJcCr6q69l!rNPt,s2P*5s7--[s6KX`Jc>KEs0DV&oDaaJs0A?ts0 at ph]Dqm2
+`W,r<ZiC%*JcDGDrrAbmrrD`lnGn.?U&Y,mJcC<$JcFj3Z2NY]rr at iSrrDrrs.'+Ks.K1QrK at 2J
+qhkE/s*O^-q2Y3-s)n!bs,6i0qel.RrF>kQpN-4:s)\-Woi_/ebtI^Qq\Fb_VuQbsXoJD$e,TFJ
+X8d\~>
+[K$7,JcF'rrr at WMJcCr6q>UBon,E4_s76-gs60F;rTO.7pX/lohpLJrrPn<1qn)a%qlp*2rNPnn
+qn)[#pTXOkpTXIiqloais02*kqjR>boqh\Wq69m0oqhJQrNPUaopXpFq5+*ogSN`1kI^Q0]Dqm2
+`W,r<ZiC%*JcDGDrrA`WrrD`lnGn.?U&Y,mJcC<$JcFj3eV`7Ls,,e8rr at iSrrDrrjVIjrR24%?
+mhUKSVuQbsXoJD$e,TFJX8d\~>
+[K$7,JcC<$a8c)<JcDABpIkMdmn<Zbrt593s'l$.rGDRZs'kqDrHS-jq0:SFkF2:.nYQ&MrNQ0q
+s&o;soDeWTqlogkqlogkqlommos"Ckos"D,pSIPes1 at s#os"D,qk`V_q7HToj/)LSs('rih50;'
+q2W)err at WMp&G$lJcDGDrrAb-rrDZjo`0RCU&Y&kJcCT,r;_EKiW%Gqhi7Z'iW&oXJcGcMjo,5B
+YPn.js8Dcfqrn(9q<6qfpW!7#qsaROs7$'[ZiC%*JcC<$nc/UhX8d\~>
+[K$7,JcC<$a8c)<JcDABpTXYtq69V*s7QE[rVlisJc>ECs0DV&oDaC at VuH_%Qi=Vsrr at WMp&G$l
+JcDGDrrAbmrrDZjo`0RCU&Y&kJcCT,r;_EKiW$1]iW&oXJcGcMs-<VDs.KC^rK[8Cs-<J=s+gW$
+rK?u:pP]&oomm"!s+U>fom-RIs*=?[qcs/BrGV at 3qbG=-oca8LZiC%*JcC<$nc/UhX8d\~>
+[K$7,JcC<$a8c)<JcDABp\t0mn,E:as8N&is8W&]s5!_HrTO49q9f#og!Supqo801q7HU%qlp*2
+rNPnnq7HO#pTXOkpTXOkq69OgrNPskrL3Jboqh\Wos"+crL3Vfl_XEGrO_*opSImmh5/r3kI^Q0
+]Dqm2JcGECrr at WMU&Y,mThk[goDeI`JcDGDr;_EKM?!MSJcF^/eV`7Ls,,e8rr at WMs8V0rrrAH&
+b=h@@ZiC%*JcC<$nc/UhX8d\~>
+[K$7,JcC<$a8c)<JcDABpIkMdmn<Zbrt593s'l$.rGDRZs'kqDrHS-jq0:SFkF2:.nYQ&MrNQ0q
+s&o;soDeWTqlogkqlogkqlommos"Ckos"D,pSIPes1 at s#os"D,qk`V_q7HToj/)LSs('rih50;'
+q2W)err at WMp&G$lJcDGDrrAb-rrDZjo`0RCU&Y&kJcCT,r;_EKiW%Gqhi7Z'iW&oXJcGcMjo,5B
+YPn.js8Dcfqrn(9q<6qfpW!7#qsaROs7$'[ZiC%*JcC<$nc/UhX8d\~>
+[K$7,JcC<$a8c)<JcDABpTXYtq69V*s7QE[rVlisJc>ECs0DV&oDaC at VuH_%Qi=Vsrr at WMp&G$l
+JcDGDrrAbmrrDZjo`0RCU&Y&kJcCT,r;_EKiW$1]iW&oXJcGcMs-<VDs.KC^rK[8Cs-<J=s+gW$
+rK?u:pP]&oomm"!s+U>fom-RIs*=?[qcs/BrGV at 3qbG=-oca8LZiC%*JcC<$nc/UhX8d\~>
+[K$7,JcC<$a8c)<JcDABp\t0mn,E:as8N&is8W&]s5!_HrTO49q9f#og!Supqo801q7HU%qlp*2
+rNPnnq7HO#pTXOkpTXOkq69OgrNPskrL3Jboqh\Wos"+crL3Vfl_XEGrO_*opSImmh5/r3kI^Q0
+]Dqm2JcGECrr at WMU&Y,mThk[goDeI`JcDGDr;_EKM?!MSJcF^/eV`7Ls,,e8rr at WMs8V0rrrAH&
+b=h@@ZiC%*JcC<$nc/UhX8d\~>
+[K$7,JcC<$JcC<$j8\dFrrDR^rs&K8s&T//rVun7s*4QQrGDFVrIacff7WCXpQ"pCpR;,drE9)q
+s&oAuoDeQRqloais020mqlogkq69amo<@naos"Iboqh>cs1A$%l`g?"qjQK?e$.Z)kF2.*JcDqR
+rr at WMU&Y,mTtgU-JcCN*r;_EKJcDkPrrBb4eX50Ps-VdFrrADcr;c6bkPbABl2CSDbPh23qu-Kf
+mHE`\ou?gss6]dSs4XgZrrE#trr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$JcC<$j8\eVrrE#%ot17ps6fjbrVqHJs8Mu&rVli&s8MWiJc:6"\,LsYYQ+V&JcDGD
+rrAbmrr at WML]@;QJcC<$XoJD$^&P;7iW&oXQiI!amJm3Rs.K1QrK at 2Js-<J=rHnR-pQ"p)rFu.Z
+q2>9,rGM:Rs'u"Qq/cL>rH%pUoi_5ga%Q.Mq\HO<rrE#trr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$JcC<$j8\fOrrDTgrVccqs7?3hs60L=s7?3Qqq_4up"e6Ilauo2os"2&s/#[)rNQ<4
+s02+ppUg=!os"Imos"=ipTXIiqlo[gos"+cs1 at s.oqh\WpTWt[rL3VqiNUe-h6?(SpVqdaYQ+V&
+JcDGDrrA`grr at WML]@;QJcC<$XoJD$^&QW?h3J"tiW&oXQiI!amJl>br;c'tr;a;Ba%Pq<ZiC%*
+rVultJcC<$q>^HpX8d\~>
+[K$7,JcC<$JcC<$j8\dFrrDR^rs&K8s&T//rVun7s*4QQrGDFVrIacff7WCXpQ"pCpR;,drE9)q
+s&oAuoDeQRqloais020mqlogkq69amo<@naos"Iboqh>cs1A$%l`g?"qjQK?e$.Z)kF2.*JcDqR
+rr at WMU&Y,mTtgU-JcCN*r;_EKJcDkPrrBb4eX50Ps-VdFrrADcr;c6bkPbABl2CSDbPh23qu-Kf
+mHE`\ou?gss6]dSs4XgZrrE#trr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$JcC<$j8\eVrrE#%ot17ps6fjbrVqHJs8Mu&rVli&s8MWiJc:6"\,LsYYQ+V&JcDGD
+rrAbmrr at WML]@;QJcC<$XoJD$^&P;7iW&oXQiI!amJm3Rs.K1QrK at 2Js-<J=rHnR-pQ"p)rFu.Z
+q2>9,rGM:Rs'u"Qq/cL>rH%pUoi_5ga%Q.Mq\HO<rrE#trr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$JcC<$j8\fOrrDTgrVccqs7?3hs60L=s7?3Qqq_4up"e6Ilauo2os"2&s/#[)rNQ<4
+s02+ppUg=!os"Imos"=ipTXIiqlo[gos"+cs1 at s.oqh\WpTWt[rL3VqiNUe-h6?(SpVqdaYQ+V&
+JcDGDrrA`grr at WML]@;QJcC<$XoJD$^&QW?h3J"tiW&oXQiI!amJl>br;c'tr;a;Ba%Pq<ZiC%*
+rVultJcC<$q>^HpX8d\~>
+[K$7,JcC<$fDkdLa8c/>JcF-tnOrl^o1T)`rs&KrrDrsurGDLBrGDLXs+C8eom"r<n!`p0pSIPO
+q5+*os/#>eopYobo;2Jko;2JkoqhPiq5*\eo;28erL3DUos"+cl`g,PiMGY?ac>PQq2U%+nc/Uh
+_>jN8JcDGDrrAb-rr at WML&_/QJcD):rrAJerrBb4o9fQCopGc=o9e?ns-WhDj8],ZJcFj1rTC<]
+q>1!es7bjCkL&tBs6]^Qs6]dSs5'mXrr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$fDkdLa8c/>JcF-tnZ`#ns021.s8;obqu6WqJc>?As0D\(oDaC at Jc<.XJcG9?rrBn8
+rr at WMU&Y,mU&Y,mJcCH(rr at WMQiI'cRK*9e^&P55j8],ZJcGbJs-WhZs.&tOs-!>Js-<P?s+gQ"
+s-!2<oo&j9pON!rs).4Lq/cL>qfD^SpK at Mk`CoqKq\H=6rr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$fDkdLa8c/>JcF-tnc&OgoD\^equ6WqrTO4OrTO49s3^f/p"e*En%884pTX>&q69m0
+s02+pot17#o<A7ko<A7kos"=iq69Ieo<A%erO_a,oqh>cl_X?fiNVF?ai<MUq8S!cnc/Uh_>jN8
+JcDGDrrA`grr at WML&_/QJcD):rrAJerrBb4o8<R-onrd7o8;@hs,-iDj8],ZJcFgIr;`B(`Co_:
+XoJD$JcC<$rVults8W*!X8d\~>
+[K$7,JcC<$fDkdLa8c/>JcF-tnOrl^o1T)`rs&KrrDrsurGDLBrGDLXs+C8eom"r<n!`p0pSIPO
+q5+*os/#>eopYobo;2Jko;2JkoqhPiq5*\eo;28erL3DUos"+cl`g,PiMGY?ac>PQq2U%+nc/Uh
+_>jN8JcDGDrrAb-rr at WML&_/QJcD):rrAJerrBb4o9fQCopGc=o9e?ns-WhDj8],ZJcFj1rTC<]
+q>1!es7bjCkL&tBs6]^Qs6]dSs5'mXrr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$fDkdLa8c/>JcF-tnZ`#ns021.s8;obqu6WqJc>?As0D\(oDaC at Jc<.XJcG9?rrBn8
+rr at WMU&Y,mU&Y,mJcCH(rr at WMQiI'cRK*9e^&P55j8],ZJcGbJs-WhZs.&tOs-!>Js-<P?s+gQ"
+s-!2<oo&j9pON!rs).4Lq/cL>qfD^SpK at Mk`CoqKq\H=6rr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$fDkdLa8c/>JcF-tnc&OgoD\^equ6WqrTO4OrTO49s3^f/p"e*En%884pTX>&q69m0
+s02+pot17#o<A7ko<A7kos"=iq69Ieo<A%erO_a,oqh>cl_X?fiNVF?ai<MUq8S!cnc/Uh_>jN8
+JcDGDrrA`grr at WML&_/QJcD):rrAJerrBb4o8<R-onrd7o8;@hs,-iDj8],ZJcFgIr;`B(`Co_:
+XoJD$JcC<$rVults8W*!X8d\~>
+[K$7,JcC<$RK*9eJcF4!mn<Z\o1T)frDrr-rVun7s&T//qec:Vqec(Pc\(hXo8`XCs%`<WrJpcO
+s&oAuq>^Hps8V\Zs01O[s020mqlogkpTX[do;2>gqjR2SpTX[doqh&[o:"^9n$)hPs-is_qjQu6
+s$P\(mt:G)q2U%+n,NCf`W,l:JcDGDrrAb-rr at WML&_/QJcD/<rr at WMdJrg*rK[,Es,HW;h2VH"
+s-VjHrrAnqrrCsVj8K#@Xo8(lqu-Qhq<7eKpZUefo>^Uqs6]jUs7:gAJcE^hr;c$\rrE*!rrB,"
+J,~>
+[K$7,JcC<$RK*9eJcF4!n$)flqlon.s6':YrVqfTs0D%ks0D\(q>^Hps8RZLQ2^fhl2L^g^&ET_
+n,NCf`W,l:JcDGDrrAbmrr at WML&_/QJcD/<rr at WMdJp?Ij8],ZV>pPqhuE_As.o[fs.&tOqj at DK
+rJLW1s-!D/s-!2<oo&j9pON!rs)mXQqfD^@qfD^Soi]1*pEBJNJcC<$`W,l:kPtP^s8W*!X8d\~>
+[K$7,JcC<$RK*9eJcF4!n,E=eoD\dgrVligrVuo]s8N&iqrn"7qrme1cdD?ro>^U1s)7YDrPn`=
+s()/6q>^Hps8V]&s/"b[s/#Cmqka%kpSIo%o<A+gqn)O*pSIo%os!h[o=O%en"p'(s1A;Lqn)=:
+s*NYCn'UsCq8S!cn,NCf`W,l:JcDGDrrA`grr at WML&_/QJcD/<rr at WMdJrfqrJgQ/s-<25h3J#"
+s,,k:rrAnqrrCsVithXpSJK+9o+loWJcE^hr;c$\rrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eJcF4!mn<Z\o1T)frDrr-rVun7s&T//qec:Vqec(Pc\(hXo8`XCs%`<WrJpcO
+s&oAuq>^Hps8V\Zs01O[s020mqlogkpTX[do;2>gqjR2SpTX[doqh&[o:"^9n$)hPs-is_qjQu6
+s$P\(mt:G)q2U%+n,NCf`W,l:JcDGDrrAb-rr at WML&_/QJcD/<rr at WMdJrg*rK[,Es,HW;h2VH"
+s-VjHrrAnqrrCsVj8K#@Xo8(lqu-Qhq<7eKpZUefo>^Uqs6]jUs7:gAJcE^hr;c$\rrE*!rrB,"
+J,~>
+[K$7,JcC<$RK*9eJcF4!n$)flqlon.s6':YrVqfTs0D%ks0D\(q>^Hps8RZLQ2^fhl2L^g^&ET_
+n,NCf`W,l:JcDGDrrAbmrr at WML&_/QJcD/<rr at WMdJp?Ij8],ZV>pPqhuE_As.o[fs.&tOqj at DK
+rJLW1s-!D/s-!2<oo&j9pON!rs)mXQqfD^@qfD^Soi]1*pEBJNJcC<$`W,l:kPtP^s8W*!X8d\~>
+[K$7,JcC<$RK*9eJcF4!n,E=eoD\dgrVligrVuo]s8N&iqrn"7qrme1cdD?ro>^U1s)7YDrPn`=
+s()/6q>^Hps8V]&s/"b[s/#Cmqka%kpSIo%o<A+gqn)O*pSIo%os!h[o=O%en"p'(s1A;Lqn)=:
+s*NYCn'UsCq8S!cn,NCf`W,l:JcDGDrrA`grr at WML&_/QJcD/<rr at WMdJrfqrJgQ/s-<25h3J#"
+s,,k:rrAnqrrCsVithXpSJK+9o+loWJcE^hr;c$\rrE*!rrB,"J,~>
+[K$7,JcC<$JcC<$li6?FrrD^brs&Krqc<ass)%d:rF5_BrHS?OrGD4Pc%G\XnW*REs&o#`rJpcO
+s&o$prrDYZs,Q]Is-huEs020mq69aboqhPiq3puQqlosdpSI>_nXAL7pTXCPrL3a]rL328s$P\(
+kC`_Xqi67-ZiBt(JcDGDrrAb-rr at WML&_/QJcC<$JcFp5opGK=qj at DCo9e?ns-<VOj8],ZVuQbs
+h>cO6s6$H]rVH?gs8MiXrU]dIq9f5un'UgJs3^T1s7?9IJcC<$V>pPqX8d\~>
+[K$7,JcC<$JcC<$li6 at VrrE#%q7H[pq>UEoMuNa^li-pip&G$lJc:l4s0Ctis0B99JcE(Vr;_EK
+U&Y,mU&Y,mJcCH(rr at WMJcC<$kPq[_j8],ZVuQbsh>dMBs.o[ms.'%Qs-!>Js-<J=s+gW;s*Od/
+q2Y-+rKd80oo&-]mrSMIpK>7(q'#VNJcC<$V>pPqX8d\~>
+[K$7,JcC<$JcC<$li6AOrrD`ks8Dcms8W,_s8MugrTO49s7?3Qp"dm?ot0b6rNQ<4ot11Bqlp*2
+p&G$lo=P%Bo<A8,j08Q[os"7gqn)O*qka,#os"=iqn)U,n"oQdj089SpW!0Ds)7kJn&GBSho=j,
+rS@@jJcE(Vr;_EKU&Y,mThk[gJcCH(rr at WMJcC<$kPt44pPo'-s-<25h3J#"s,,k:rrAtsrrCmT
+ithXpT,,17o+loWJcDSHrrB,"J,~>
+[K$7,JcC<$JcC<$li6?FrrD^brs&Krqc<ass)%d:rF5_BrHS?OrGD4Pc%G\XnW*REs&o#`rJpcO
+s&o$prrDYZs,Q]Is-huEs020mq69aboqhPiq3puQqlosdpSI>_nXAL7pTXCPrL3a]rL328s$P\(
+kC`_Xqi67-ZiBt(JcDGDrrAb-rr at WML&_/QJcC<$JcFp5opGK=qj at DCo9e?ns-<VOj8],ZVuQbs
+h>cO6s6$H]rVH?gs8MiXrU]dIq9f5un'UgJs3^T1s7?9IJcC<$V>pPqX8d\~>
+[K$7,JcC<$JcC<$li6 at VrrE#%q7H[pq>UEoMuNa^li-pip&G$lJc:l4s0Ctis0B99JcE(Vr;_EK
+U&Y,mU&Y,mJcCH(rr at WMJcC<$kPq[_j8],ZVuQbsh>dMBs.o[ms.'%Qs-!>Js-<J=s+gW;s*Od/
+q2Y-+rKd80oo&-]mrSMIpK>7(q'#VNJcC<$V>pPqX8d\~>
+[K$7,JcC<$JcC<$li6AOrrD`ks8Dcms8W,_s8MugrTO49s7?3Qp"dm?ot0b6rNQ<4ot11Bqlp*2
+p&G$lo=P%Bo<A8,j08Q[os"7gqn)O*qka,#os"=iqn)U,n"oQdj089SpW!0Ds)7kJn&GBSho=j,
+rS@@jJcE(Vr;_EKU&Y,mThk[gJcCH(rr at WMJcC<$kPt44pPo'-s-<25h3J#"s,,k:rrAtsrrCmT
+ithXpT,,17o+loWJcDSHrrB,"J,~>
+[K$7,JcC<$kPtJ\JcC`0pIkMdoh5;bpIkMjrCd)irVugsrF5_BrF5Y at pNXf4pR:Q2s/#CWq2YEM
+s&o$pnXBK<oqhVUo;2JIo;2JkoqhJgqjR2SrNQ$boqhVkq3puQo<@\PiMHRYnW*@4bDt\:q07Jj
+Z2ah(JcDGDrrAb-rr at WML&_/QJcFF'rrCOJr;_EK_uKIuo9K9As,HW;iJmkps,I&Ds-W9TrrDfn
+rr@]OiVif>g&:s6ec#ICq>L?mqrmqKp#uA%s,m99n^7$Ls3^N/s5'[Rr;_EKKE(rOX8d\~>
+[K$7,JcC<$kPtJ\JcC`0q5++qs((f,rrDf*s5a"TrVqHJoD\cqp&BUBJc;qRJcE"Trr at WMU&Y,m
+U&Y,mJcCH(rr at WMg&M'Pe,T at HJcEXfXo7_grrDfnrr@]Os/5n#s.K=\rK[8Iq5jUOs-!D/s-!2<
+oo&d7qgeL#s)n@"s-E\8pNc^kq0DLOs)7X7j%KCPhb3\er>)=2r;_EKKE(rOX8d\~>
+[K$7,JcC<$kPtJ\JcC`0p\t2up&=skp\t3kq>U?mrVlcerTO4Oqrme1ajKjpn&GC3ot1%>rNQ<4
+p&FQos2O`9rO_[*s2OZ7s/#Cmq5*u#os"CkpUg+&rMB>%os"%an%7P_s/#8*pUeVgjjEn[JcE"T
+rr at WMU&Y,mThk[gJcCH(rr at WMg&M'Pe,T at HJcEXfpPSR%rJLW?o8;Lls-WhOs,I&9n,NCfp](6n
+KE'mGrrC^frrC.Vj%KCPhb3PVVuQ\qJcCB&rrB,"J,~>
+[K$7,JcC<$kPtJ\JcC`0pIkMdoh5;bpIkMjrCd)irVugsrF5_BrF5Y at pNXf4pR:Q2s/#CWq2YEM
+s&o$pnXBK<oqhVUo;2JIo;2JkoqhJgqjR2SrNQ$boqhVkq3puQo<@\PiMHRYnW*@4bDt\:q07Jj
+Z2ah(JcDGDrrAb-rr at WML&_/QJcFF'rrCOJr;_EK_uKIuo9K9As,HW;iJmkps,I&Ds-W9TrrDfn
+rr@]OiVif>g&:s6ec#ICq>L?mqrmqKp#uA%s,m99n^7$Ls3^N/s5'[Rr;_EKKE(rOX8d\~>
+[K$7,JcC<$kPtJ\JcC`0q5++qs((f,rrDf*s5a"TrVqHJoD\cqp&BUBJc;qRJcE"Trr at WMU&Y,m
+U&Y,mJcCH(rr at WMg&M'Pe,T at HJcEXfXo7_grrDfnrr@]Os/5n#s.K=\rK[8Iq5jUOs-!D/s-!2<
+oo&d7qgeL#s)n@"s-E\8pNc^kq0DLOs)7X7j%KCPhb3\er>)=2r;_EKKE(rOX8d\~>
+[K$7,JcC<$kPtJ\JcC`0p\t2up&=skp\t3kq>U?mrVlcerTO4Oqrme1ajKjpn&GC3ot1%>rNQ<4
+p&FQos2O`9rO_[*s2OZ7s/#Cmq5*u#os"CkpUg+&rMB>%os"%an%7P_s/#8*pUeVgjjEn[JcE"T
+rr at WMU&Y,mThk[gJcCH(rr at WMg&M'Pe,T at HJcEXfpPSR%rJLW?o8;Lls-WhOs,I&9n,NCfp](6n
+KE'mGrrC^frrC.Vj%KCPhb3PVVuQ\qJcCB&rrB,"J,~>
+[K$7,JcF'rrr at WMJcDSHoh5;boh5;bo1T*as%EAms8W$urF5_BqdTM at om"N0qjRDBrBp=>s/#CW
+q2YEMrrD`ls,Qc at rJpQIrL3DUrJop7rNQ*do;2,Kqka<qrMBOupR:cOpTX[Xm@*.5l&PS.ac>P:
+q07JjZ2ah(JcDGDrrAb-rr at WML&_/QJcFF'rr at WMOoP0Co9K9As,H]=hi7Yns,I&Ds-W9TrrDfn
+rrBP.r;b7FiVif>fDYa4ec#OEqu-EkrTO(KpZVS's,m99n^6sJs3^`5s7?9[s7:gAX8i2"JcG]K
+rrB,"J,~>
+[K$7,JcF'rrr at WMJcDSHoqh[ks/#IorrE#%s1A6LrU]pcs8SMdrNb8YrrD`lL&V+XJc;kPJcE"T
+rr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcCl4Xo7_grrDfnrrBP.r;b7Fs.'+bs/5merK[DQqlfmu
+rM]aZs*OR%o8EL3rIFX#s)n at -rIF]hrIt&mrH&!folKq3iCj1Nh+RPer>'taX8i2"JcG]KrrB,"
+J,~>
+[K$7,JcF'rrr at WMJcDSHp&=usp&=skmJd.crVlcerTO.MrTNq1a3jdrqo8S]pW!6;ot1%>rNQ;%
+p&G'3ot11Bos"D,os"D7j08KYq7H7&ot1+*s())4s/#J%os"1es2OH<jfn!hq7FbgkL'+]JcE"T
+rr at WMU&Y,mThk[gJcCH(rr at WMg&M'PJcCl4pPSR%rJLW?onqXls-WhOs,I&9n,NCfp](6n\,ZC,
+dJr/@rrCXdrrC:ZiCj1Nh+RDVJcDeNrr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMJcDSHoh5;boh5;bo1T*as%EAms8W$urF5_BqdTM at om"N0qjRDBrBp=>s/#CW
+q2YEMrrD`ls,Qc at rJpQIrL3DUrJop7rNQ*do;2,Kqka<qrMBOupR:cOpTX[Xm@*.5l&PS.ac>P:
+q07JjZ2ah(JcDGDrrAb-rr at WML&_/QJcFF'rr at WMOoP0Co9K9As,H]=hi7Yns,I&Ds-W9TrrDfn
+rrBP.r;b7FiVif>fDYa4ec#OEqu-EkrTO(KpZVS's,m99n^6sJs3^`5s7?9[s7:gAX8i2"JcG]K
+rrB,"J,~>
+[K$7,JcF'rrr at WMJcDSHoqh[ks/#IorrE#%s1A6LrU]pcs8SMdrNb8YrrD`lL&V+XJc;kPJcE"T
+rr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcCl4Xo7_grrDfnrrBP.r;b7Fs.'+bs/5merK[DQqlfmu
+rM]aZs*OR%o8EL3rIFX#s)n at -rIF]hrIt&mrH&!folKq3iCj1Nh+RPer>'taX8i2"JcG]KrrB,"
+J,~>
+[K$7,JcF'rrr at WMJcDSHp&=usp&=skmJd.crVlcerTO.MrTNq1a3jdrqo8S]pW!6;ot1%>rNQ;%
+p&G'3ot11Bos"D,os"D7j08KYq7H7&ot1+*s())4s/#J%os"1es2OH<jfn!hq7FbgkL'+]JcE"T
+rr at WMU&Y,mThk[gJcCH(rr at WMg&M'PJcCl4pPSR%rJLW?onqXls-WhOs,I&9n,NCfp](6n\,ZC,
+dJr/@rrCXdrrC:ZiCj1Nh+RDVJcDeNrr at WMrVultX8d\~>
+[K$7,JcF'rrrB,"r;_EKJcFh)rrDR^s&T*urDrl+s)%d:rF5Y at om"H.rL3&4pR:c8s/#_qp](2P
+opYnJrJp]Mq3q&Sqi:?Gs,Q]Is020boqh>Mqka<qrMB1UoqhJgrJp34l_W^'pR:u>s$P7qkC`ST
+^]4<6VuQ\qe,TFJJcDGDrrAb-rr at WML&_/QJcC<$JcFp5q3^W9s-WhGopFp%s,-]5rJLW?s-VjH
+rr@]OiVif>U&FlfrTO(KpZVY)q;(Sgo>^gXq=+ at Ss6P=:XoJD$O8o4[nc/UhX8d\~>
+[K$7,JcF'rrrB,"r;_EKJcG,6q69l!s02O8rPnm/q>U?mJc>3=rrDfnnc&QoQ2^fhJc>\TZ2VN<
+rrAtsr;b=Hrr at WMU&Y,mU&Y,mJcCH(rr at WMJcC<$kPq[_j8],ZKE(t=s.o[ms.'%Qs0DO*qlK[n
+s-!2<oo&X3rIFR!s-EP4qg&-opNcd[s*jW^q,t=&q'#VNJcDkPrrA,[rrDThrrB,"J,~>
+[K$7,JcF'rrrB,"r;_EKJcFj2rrDNerVuiqrU^'Qs8Mugqrm_/`R4Xrlc/\2ou@$9rrDfnrPnNB
+s*O^aq69\,pTXP7os"J9o<A7kot0n$ot1+*s())4ot0n$q5+&0lauJeji7&,qo8Y_e&LRuq;&gc
+rrAtsr;b=Hrr at WMU&Y,mThk[gJcCH(rr at WMJcC<$kPt at 8mu@@)s-<87kEZ(7qj%,Is,I&9j8],Z
+KE'mGrrA`.]1_`2JcDkPrrA,[rrDThrrB,"J,~>
+[K$7,JcF'rrrB,"r;_EKJcFh)rrDR^s&T*urDrl+s)%d:rF5Y at om"H.rL3&4pR:c8s/#_qp](2P
+opYnJrJp]Mq3q&Sqi:?Gs,Q]Is020boqh>Mqka<qrMB1UoqhJgrJp34l_W^'pR:u>s$P7qkC`ST
+^]4<6VuQ\qe,TFJJcDGDrrAb-rr at WML&_/QJcC<$JcFp5q3^W9s-WhGopFp%s,-]5rJLW?s-VjH
+rr@]OiVif>U&FlfrTO(KpZVY)q;(Sgo>^gXq=+ at Ss6P=:XoJD$O8o4[nc/UhX8d\~>
+[K$7,JcF'rrrB,"r;_EKJcG,6q69l!s02O8rPnm/q>U?mJc>3=rrDfnnc&QoQ2^fhJc>\TZ2VN<
+rrAtsr;b=Hrr at WMU&Y,mU&Y,mJcCH(rr at WMJcC<$kPq[_j8],ZKE(t=s.o[ms.'%Qs0DO*qlK[n
+s-!2<oo&X3rIFR!s-EP4qg&-opNcd[s*jW^q,t=&q'#VNJcDkPrrA,[rrDThrrB,"J,~>
+[K$7,JcF'rrrB,"r;_EKJcFj2rrDNerVuiqrU^'Qs8Mugqrm_/`R4Xrlc/\2ou@$9rrDfnrPnNB
+s*O^aq69\,pTXP7os"J9o<A7kot0n$ot1+*s())4ot0n$q5+&0lauJeji7&,qo8Y_e&LRuq;&gc
+rrAtsr;b=Hrr at WMU&Y,mThk[gJcCH(rr at WMJcC<$kPt at 8mu@@)s-<87kEZ(7qj%,Is,I&9j8],Z
+KE'mGrrA`.]1_`2JcDkPrrA,[rrDThrrB,"J,~>
+[K$7,JcC<$JcC<$p&F&FrrD^bs&T.ms&T*us&T)-s)%d:qdTM at om$@dokiB7s#9n/l]1prq3pu:
+s8W*!p](,Nq3q8Bs$QgHq5*nUq5*nIpSIhKo;2JkopYWOs,Q]>pSInMopYWOqlosXl^I:=iK!Z$
+q2YJBeW/gFpNXOSrr at WMp&G$lJcDGDrrAarrr at WML]@;QJcE:\r;_EK[K$&im?R^=s,H]=kDfM!
+q2PE3s-<VOj8],ZL&^'/s0D+m[Jfq#s604Kp#u/+n^7$LrR(N3s7?9[s7:gAJcE4ZrrDZjrrB,"
+J,~>
+[K$7,JcC<$JcC<$p&FKWos"GrrO`*Ls60LSq>U?mVuH_%ci3tErrDfnn,E?mJc:l4s0Ap/_>jN8
+JcGECrr at WMU&Y,mU&Y,mJcCN*r;_EK\c;U.JcE.XX8V)Yrr at cQs/5n#s/Q*ss.'+Ss0DI(qlK[n
+s*OdcnZ`%Oq3Lu0oo&d7rIFcjrIsuks)\3holL.OrE6U&q'#\PJcC<$\,ZI.oDegjX8d\~>
+[K$7,JcC<$JcC<$p&F(OrrDNerVuosrU^'Qs8MoerTNq1qpG*#g!ThSrR'rNrR(GQou@%3rrDfn
+qo8HDrPnkas2Ol=q7HI,q8W05rPnH5s/#D#pTX\;o=Ob$s2O`DpTXOkqo7s6n$(cjpUg7 at s*N;9
+kL'%[_>jN8JcGECrr at WMU&Y,mTjRg"JcCN*r;_EK\c;U.JcE.Xq24R!s,-iAonqpts-WVIs-WhG
+s,,k:rr at cQh\Q4lmn:&([nHB0JcC<$\,ZI.oDegjX8d\~>
+[K$7,JcC<$JcC<$p&F&FrrD^bs&T.ms&T*us&T)-s)%d:qdTM at om$@dokiB7s#9n/l]1prq3pu:
+s8W*!p](,Nq3q8Bs$QgHq5*nUq5*nIpSIhKo;2JkopYWOs,Q]>pSInMopYWOqlosXl^I:=iK!Z$
+q2YJBeW/gFpNXOSrr at WMp&G$lJcDGDrrAarrr at WML]@;QJcE:\r;_EK[K$&im?R^=s,H]=kDfM!
+q2PE3s-<VOj8],ZL&^'/s0D+m[Jfq#s604Kp#u/+n^7$LrR(N3s7?9[s7:gAJcE4ZrrDZjrrB,"
+J,~>
+[K$7,JcC<$JcC<$p&FKWos"GrrO`*Ls60LSq>U?mVuH_%ci3tErrDfnn,E?mJc:l4s0Ap/_>jN8
+JcGECrr at WMU&Y,mU&Y,mJcCN*r;_EK\c;U.JcE.XX8V)Yrr at cQs/5n#s/Q*ss.'+Ss0DI(qlK[n
+s*OdcnZ`%Oq3Lu0oo&d7rIFcjrIsuks)\3holL.OrE6U&q'#\PJcC<$\,ZI.oDegjX8d\~>
+[K$7,JcC<$JcC<$p&F(OrrDNerVuosrU^'Qs8MoerTNq1qpG*#g!ThSrR'rNrR(GQou@%3rrDfn
+qo8HDrPnkas2Ol=q7HI,q8W05rPnH5s/#D#pTX\;o=Ob$s2O`DpTXOkqo7s6n$(cjpUg7 at s*N;9
+kL'%[_>jN8JcGECrr at WMU&Y,mTjRg"JcCN*r;_EK\c;U.JcE.Xq24R!s,-iAonqpts-WVIs-WhG
+s,,k:rr at cQh\Q4lmn:&([nHB0JcC<$\,ZI.oDegjX8d\~>
+[K$7,JcCH(rr at WMJcGKEhb3tLo1T*arVugss'l"$rDrl+qec(Ps'kA4qfq.Rs#9b+m>h-tq3pu:
+s8W*!p](,Nq3q&<rMB1Uqka+Kq5*tKo;2&Iq5*tKopY]QrJpQ>oqh\mq2Xd0o;19'pR93akC`ST
+JcE(Vrr at WMU&Y,mTs+IrJcCN*r;_EKJcDkPrrBh6q3^Q7s-WhGopFp%s,-W3rJLW?j8],Za8c)<
+_uJcqs8Mu&li+Hnp\sjWpZVM1rU]pUpX/ZRrR(N3qt%)mrrDBbrr at WMOoPF]X8d\~>
+[K$7,JcCH(rr at WMJcGKEmA9EYrrE#0s5!YFqu6QoVuH_%c2RbCrrDfnJc:6"Xo<nOZiC%*JcDGD
+rrAbmrr at WML]@;QJcC<$XoJD$^]1A5j8],Za8c)<_uKb:s0)I#rLEo$s0DO*q5jUps2P"arPnB3
+s1A)moo&^5qge]lq1\Wis+UE#pN- at XrE7lJq.0M.k=bUor>)[<rrDBbrr at WMOoPF]X8d\~>
+[K$7,JcCH(rr at WMJcGKEhu<WUnc&LerVligqu6Qcqrme1s7>XAqq^;[s+^?smDf+Pq7H=>s8W*!
+p](-1q7HC at rNPt,qlon9q69b9o<@huq69b9ot1%(rPnNBos"Imq8Va4o<@&jpUePekL'+]JcE(V
+rr at WMU&Y,mTjRg"JcCN*r;_EKJcDkPrrBh6q24R!s,-iAonqpts-WVIrL!VEj8],Za8c)<_uJa4
+s%E:jlV"c(gIq8Vk=bI`Z2ah(li6tbJcCl4rrB,"J,~>
+[K$7,JcCH(rr at WMJcGKEhb3tLo1T*arVugss'l"$rDrl+qec(Ps'kA4qfq.Rs#9b+m>h-tq3pu:
+s8W*!p](,Nq3q&<rMB1Uqka+Kq5*tKo;2&Iq5*tKopY]QrJpQ>oqh\mq2Xd0o;19'pR93akC`ST
+JcE(Vrr at WMU&Y,mTs+IrJcCN*r;_EKJcDkPrrBh6q3^Q7s-WhGopFp%s,-W3rJLW?j8],Za8c)<
+_uJcqs8Mu&li+Hnp\sjWpZVM1rU]pUpX/ZRrR(N3qt%)mrrDBbrr at WMOoPF]X8d\~>
+[K$7,JcCH(rr at WMJcGKEmA9EYrrE#0s5!YFqu6QoVuH_%c2RbCrrDfnJc:6"Xo<nOZiC%*JcDGD
+rrAbmrr at WML]@;QJcC<$XoJD$^]1A5j8],Za8c)<_uKb:s0)I#rLEo$s0DO*q5jUps2P"arPnB3
+s1A)moo&^5qge]lq1\Wis+UE#pN- at XrE7lJq.0M.k=bUor>)[<rrDBbrr at WMOoPF]X8d\~>
+[K$7,JcCH(rr at WMJcGKEhu<WUnc&LerVligqu6Qcqrme1s7>XAqq^;[s+^?smDf+Pq7H=>s8W*!
+p](-1q7HC at rNPt,qlon9q69b9o<@huq69b9ot1%(rPnNBos"Imq8Va4o<@&jpUePekL'+]JcE(V
+rr at WMU&Y,mTjRg"JcCN*r;_EKJcDkPrrBh6q24R!s,-iAonqpts-WVIrL!VEj8],Za8c)<_uJa4
+s%E:jlV"c(gIq8Vk=bI`Z2ah(li6tbJcCl4rrB,"J,~>
+[K$7,JcCN*rrA>arr at WMjo=.0rrDX`s&T*us&T//s%E5irF5Y at rHS3KlYZ<>h1P6Xq1JX7ooB"N
+rrDlpq2Y?@ooB!IopYiUooApGq2Y-Es,Qc at qka+KopYcSqi:?<oqh>Al^IXGf8fZqac>P:q07Jj
+ZiC%*JcDGDrrAarrr at WML&_/QJcEdjrr at WMl2Ub`^]4+sm?R^/rJgQ=kDfM!q2P?1rKZLErr at cQ
+jo,/WrNb\eiVi`<iViHKp%.qAs5!MBp$hq-o>^aVrUB^Us6R)lrrD<`rr at WMQiI'cs8W*!X8d\~>
+[K$7,JcCN*rrA>arr at WMjo=M?pTXYts1A<NrU]jarVqHJoD\^grrDlpJc:6"X8[\MZiC%*JcDGD
+rrAbmrr at WML&_/QJcEdjrr at WMl2Ub`^]1;3jo>>\L&_1\s.o[ms.'+SrNc=(q5jP7rHnL_nZ_u(
+qj-o5qj.&.rGMRfq0E!orI4Q`rHA3Dh+REOq-!#Vq'#\PZiC%*l2Ub`JcD):rrE*!rrB,"J,~>
+[K$7,JcCN*rrA>arr at WMjo=09rrDTgrVuoss7?'crU]pMrS at ABlfe#th9kc4q9f/Qou?t1rrDlp
+q8W<Dou?s7ot11,ou?m5q8W*3s2O`Dqlon9ot1+*qo8<@os",/lautsf>dWuai<Mkq;$W%ZiC%*
+JcDGDrrAa"rr at WML&_/QJcEdjrr at WMl2Ub`^]4+em>_.5rK[,7kEZ(7q3CoGrJfq=rr at cQjVIef
+r;c(Ti>2 at li>16Bm2#"\obOn6rrD<`rr at WMQiI'cs8W*!X8d\~>
+[K$7,JcCN*rrA>arr at WMjo=.0rrDX`s&T*us&T//s%E5irF5Y at rHS3KlYZ<>h1P6Xq1JX7ooB"N
+rrDlpq2Y?@ooB!IopYiUooApGq2Y-Es,Qc at qka+KopYcSqi:?<oqh>Al^IXGf8fZqac>P:q07Jj
+ZiC%*JcDGDrrAarrr at WML&_/QJcEdjrr at WMl2Ub`^]4+sm?R^/rJgQ=kDfM!q2P?1rKZLErr at cQ
+jo,/WrNb\eiVi`<iViHKp%.qAs5!MBp$hq-o>^aVrUB^Us6R)lrrD<`rr at WMQiI'cs8W*!X8d\~>
+[K$7,JcCN*rrA>arr at WMjo=M?pTXYts1A<NrU]jarVqHJoD\^grrDlpJc:6"X8[\MZiC%*JcDGD
+rrAbmrr at WML&_/QJcEdjrr at WMl2Ub`^]1;3jo>>\L&_1\s.o[ms.'+SrNc=(q5jP7rHnL_nZ_u(
+qj-o5qj.&.rGMRfq0E!orI4Q`rHA3Dh+REOq-!#Vq'#\PZiC%*l2Ub`JcD):rrE*!rrB,"J,~>
+[K$7,JcCN*rrA>arr at WMjo=09rrDTgrVuoss7?'crU]pMrS at ABlfe#th9kc4q9f/Qou?t1rrDlp
+q8W<Dou?s7ot11,ou?m5q8W*3s2O`Dqlon9ot1+*qo8<@os",/lautsf>dWuai<Mkq;$W%ZiC%*
+JcDGDrrAa"rr at WML&_/QJcEdjrr at WMl2Ub`^]4+em>_.5rK[,7kEZ(7q3CoGrJfq=rr at cQjVIef
+r;c(Ti>2 at li>16Bm2#"\obOn6rrD<`rr at WMQiI'cs8W*!X8d\~>
+[K$7,JcC<$RK*9eJcFp5gIqPHoh5<crVugsrCd)iqdTM at s*49Im;;<:rIb&-kC`AdpOiL7ooB"N
+rrDlppQ#3 at ooB'KqjRO[qjRP]o8`dGpQ#!ErJpK<rMB=Mo:#]UpQ"p8q5*\Cl^IdKduO0ko8`i<
+gQ(HLpNV8hfDkdLjo>8ZJcDGDrrAarrr at WML&_/QJcEjlrr at WMU]:4Yl]qL-rJgQ=l&GY!q2P9/
+s-VpJrrC[Nr;a8*kPb/Ss0Cbc_>X'+p%/"CrV-'Xp$hq-ou?sXqsaXWrV(mCJcDkPrrE*!rrB,"
+J,~>
+[K$7,JcC<$RK*9eJcFp5kG at jUrrE)=s60FQs60F\rVs;)rNa9=rVultq>]@Os0 at 4TRK!5l\,LsY
+fDkdLjo>8ZJcDGDrrAbmrr at WML&_/QJcEjlrr at WMU]7=ljo>>\fDkdL[K$9)s0)I&s/5mes1SB:
+qlft"pW!5[qo8<5pUgHkoo&^5q1/9pq0Dpms*jcbrHA3KiCiWMq-!)Xq'#\PJcC<$XoJD$s8W*!
+X8d\~>
+[K$7,JcC<$RK*9eJcFp5g]%3QoD\^gp&=j[rTO:;p[de9n(mrirJ'L_o>^OPs1 at sDrVultq>^3/
+rO_aBs02C4s)7eHs02+7rNQ%9pTXV9o=Ot*q8W$<s027;ot1%(o>^+.rNObjpUg%:s*NM?kL'%[
+JcF@%r;bsZr;_EKU&Y,mTjRg"JcCH(rr at WMaoDA@JcDMFqhj^!s-WbMpPS4#rL!DGqj at D@jo>>\
+fDkdL[K#D*pIkMdj\*E*iCi>Lm7[*fJcC<$XoJD$s8W*!X8d\~>
+[K$7,JcC<$RK*9eJcFp5gIqPHoh5<crVugsrCd)iqdTM at s*49Im;;<:rIb&-kC`AdpOiL7ooB"N
+rrDlppQ#3 at ooB'KqjRO[qjRP]o8`dGpQ#!ErJpK<rMB=Mo:#]UpQ"p8q5*\Cl^IdKduO0ko8`i<
+gQ(HLpNV8hfDkdLjo>8ZJcDGDrrAarrr at WML&_/QJcEjlrr at WMU]:4Yl]qL-rJgQ=l&GY!q2P9/
+s-VpJrrC[Nr;a8*kPb/Ss0Cbc_>X'+p%/"CrV-'Xp$hq-ou?sXqsaXWrV(mCJcDkPrrE*!rrB,"
+J,~>
+[K$7,JcC<$RK*9eJcFp5kG at jUrrE)=s60FQs60F\rVs;)rNa9=rVultq>]@Os0 at 4TRK!5l\,LsY
+fDkdLjo>8ZJcDGDrrAbmrr at WML&_/QJcEjlrr at WMU]7=ljo>>\fDkdL[K$9)s0)I&s/5mes1SB:
+qlft"pW!5[qo8<5pUgHkoo&^5q1/9pq0Dpms*jcbrHA3KiCiWMq-!)Xq'#\PJcC<$XoJD$s8W*!
+X8d\~>
+[K$7,JcC<$RK*9eJcFp5g]%3QoD\^gp&=j[rTO:;p[de9n(mrirJ'L_o>^OPs1 at sDrVultq>^3/
+rO_aBs02C4s)7eHs02+7rNQ%9pTXV9o=Ot*q8W$<s027;ot1%(o>^+.rNObjpUg%:s*NM?kL'%[
+JcF@%r;bsZr;_EKU&Y,mTjRg"JcCH(rr at WMaoDA@JcDMFqhj^!s-WbMpPS4#rL!DGqj at D@jo>>\
+fDkdL[K#D*pIkMdj\*E*iCi>Lm7[*fJcC<$XoJD$s8W*!X8d\~>
+[K$7,JcD):r;_EKJcG-;fh;>Fo1T&^s&T(kqc<Z)rGDR8pL<H*lZhB at pQ"p!ooAqLrrDrrooB'@
+nW*F6s%`H[o8`dGpQ#'Gqi:9:s/#CKopYQ6opYcSnW)q(c]7ago8`i<rJphDj,W5Rq07Jj\,ZC,
+JcDGDrrAarrr at WML&_/QJcC<$JcG!7qj?]7s,-c7q3_&=s,-9)rJLE1qhkE at jo>>\L]?W;p&=us
+j8R$rnc&4QrTO.Qp[e"Gs7?!4s2Or`rUB^UJcC<$WW2tuX8d\~>
+[K$7,JcD):r;_EKJcG-;rL3&Kos"J.rrE)Hs60LSqu6WerVqHJoD\XerrDrrg]%5YJc;/<s0DV&
+rNa3;JcE4Zr;_EKU&Y,mU&Y,mJcCH(rr at WMJcC<$l2Ra]jo>>\L]@CSs0)I&s/5h/rNc=(s/bn5
+s*OR]pTX>&s.T1Fq3Lu0rJUQ,qg&'ms*jcbrHA3Mj%KDjmpu)omn<O$r>'taJcD_LrrB,"J,~>
+[K$7,JcD):r;_EKJcG-;g&D!OoD\^gp&=p]rTO:\p[d_7leUOIpVumRou?n/rrDrrou@$Dn](C:
+s)7eHo>^a5pW!$5qo86>s0219ot0n:ot1+*n]'n,cc5^ko>^fWrPne_j2U3.q;$W%\,ZC,JcDGD
+rrAa"rr at WML&_/QJcC<$JcG!7qhj^!s-WbMq25'7s-W8?rL!DGqj at D@jo>>\L]?TSoh5;bj%I?,
+iCi,Fmn<BjJcC<$WW2tuX8d\~>
+[K$7,JcD):r;_EKJcG-;fh;>Fo1T&^s&T(kqc<Z)rGDR8pL<H*lZhB at pQ"p!ooAqLrrDrrooB'@
+nW*F6s%`H[o8`dGpQ#'Gqi:9:s/#CKopYQ6opYcSnW)q(c]7ago8`i<rJphDj,W5Rq07Jj\,ZC,
+JcDGDrrAarrr at WML&_/QJcC<$JcG!7qj?]7s,-c7q3_&=s,-9)rJLE1qhkE at jo>>\L]?W;p&=us
+j8R$rnc&4QrTO.Qp[e"Gs7?!4s2Or`rUB^UJcC<$WW2tuX8d\~>
+[K$7,JcD):r;_EKJcG-;rL3&Kos"J.rrE)Hs60LSqu6WerVqHJoD\XerrDrrg]%5YJc;/<s0DV&
+rNa3;JcE4Zr;_EKU&Y,mU&Y,mJcCH(rr at WMJcC<$l2Ra]jo>>\L]@CSs0)I&s/5h/rNc=(s/bn5
+s*OR]pTX>&s.T1Fq3Lu0rJUQ,qg&'ms*jcbrHA3Mj%KDjmpu)omn<O$r>'taJcD_LrrB,"J,~>
+[K$7,JcD):r;_EKJcG-;g&D!OoD\^gp&=p]rTO:\p[d_7leUOIpVumRou?n/rrDrrou@$Dn](C:
+s)7eHo>^a5pW!$5qo86>s0219ot0n:ot1+*n]'n,cc5^ko>^fWrPne_j2U3.q;$W%\,ZC,JcDGD
+rrAa"rr at WML&_/QJcC<$JcG!7qhj^!s-WbMq25'7s-W8?rL!DGqj at D@jo>>\L]?TSoh5;bj%I?,
+iCi,Fmn<BjJcC<$WW2tuX8d\~>
+[K$7,JcC<$JcC<$j\,URoh5;boh58`s&T"irDrf)rDrT#m;;TBs"*bdjb*SXpQ"itpQ#.NrrDrr
+jc9 at no:#]3j,X#5q2Y-:o8`L4ooA^6rMAtCm at +'-c&VUgac>P:q07Jj[K$7,JcDGDrrAarrr at WM
+L&_/QJcFF'r;_EKQ2g`Kl]qF+s,HiAqi1W5mu@:'q2P9/s-W?VrrDfnrr at iSli$GSs0CV_a8PQ-
+p%/4Iq=jpFq=F:KrU^'Yn^7=)qt'jSJcC<$X8i2"X8d\~>
+[K$7,JcC<$JcC<$pR:WKs02N6pTX\0rrE#]s7?9Ss8N&irVs_5s0B!1qu?Zrqu;6HJc;SHJcE.X
+rr at WMU&Y,mU&Y,mJcCH(rr at WMg&M!NJcD#8WVuAerrDfnrr at iSrO)['s1SHKs1SH<qlg%$o>^fW
+q8W05pUgCDq2>!5rIFd'rIt,oq1\]eqf_pIk=bblrFGq'ojmYsnOr[$r>'taJcDeNrrB,"J,~>
+[K$7,JcC<$JcC<$jo5:cp&=skp&=pip&=j[rVlK]mHF<#s,lp/jjF+apVugPpW!+1rrDrrji7>J
+o=P%Mj2Uu#q8W*>o>^I8ou?[:rNPb1mCWDGc,TRkai<Mkq;$W%[K$7,JcDGDrrAa"rr at WML&_/Q
+JcFF'r;_EKQ2g`=l](k1s-<D;qj%2Kn!3j=q3CiEs,- at HrrDfnrr@iSlPB(brrD"N`tm].q%iu1
+k8*S\obN,YJcDeNrrB,"J,~>
+[K$7,JcC<$JcC<$j\,URoh5;boh58`s&T"irDrf)rDrT#m;;TBs"*bdjb*SXpQ"itpQ#.NrrDrr
+jc9 at no:#]3j,X#5q2Y-:o8`L4ooA^6rMAtCm at +'-c&VUgac>P:q07Jj[K$7,JcDGDrrAarrr at WM
+L&_/QJcFF'r;_EKQ2g`Kl]qF+s,HiAqi1W5mu@:'q2P9/s-W?VrrDfnrr at iSli$GSs0CV_a8PQ-
+p%/4Iq=jpFq=F:KrU^'Yn^7=)qt'jSJcC<$X8i2"X8d\~>
+[K$7,JcC<$JcC<$pR:WKs02N6pTX\0rrE#]s7?9Ss8N&irVs_5s0B!1qu?Zrqu;6HJc;SHJcE.X
+rr at WMU&Y,mU&Y,mJcCH(rr at WMg&M!NJcD#8WVuAerrDfnrr at iSrO)['s1SHKs1SH<qlg%$o>^fW
+q8W05pUgCDq2>!5rIFd'rIt,oq1\]eqf_pIk=bblrFGq'ojmYsnOr[$r>'taJcDeNrrB,"J,~>
+[K$7,JcC<$JcC<$jo5:cp&=skp&=pip&=j[rVlK]mHF<#s,lp/jjF+apVugPpW!+1rrDrrji7>J
+o=P%Mj2Uu#q8W*>o>^I8ou?[:rNPb1mCWDGc,TRkai<Mkq;$W%[K$7,JcDGDrrAa"rr at WML&_/Q
+JcFF'r;_EKQ2g`=l](k1s-<D;qj%2Kn!3j=q3CiEs,- at HrrDfnrr@iSlPB(brrD"N`tm].q%iu1
+k8*S\obN,YJcDeNrrB,"J,~>
+[K$7,JcF'rrrCaPrr at WMJcFd1iCj1Noh5;boh58`q+LZerF5Y)oj[<*q0;ojms+#JrHS-uo7Qdt
+qu?ZrrVuJLs+Bp'rIad3s+B?lrMB7KopYo5ooAd8s+C?3s$QUBopYoWl]1S*q1I"RpR:c8hg"g2
+l\"qVJcE4Zrr at WMU&Y,mTs+IrJcCH(rr at WMg&M'PJcD#8q3^K5rJLW7q3_&=rJL-)qhk91qhkE=
+nc/Uhp](6nkPtJ\VuQ)]nc&Qohu;C/s6'"PmJckOp\4^Gq=FFOp[eFSn^7=)s7?3`NW8qWWW2tu
+JcG]KrrB,"J,~>
+[K$7,JcF'rrrCaPrr at WMJcFd1m@*^Es((r0s1A<YrrE)_s7?9Ss8MugrVse7s0Ap/qu?ZrrVqHJ
+rVli&Jc;YJJcE4Zrr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcD#8Vu?/crrDfnrrD6^r;`bqs0_m1
+s/Q*srOr08qlfP0s*OL[q69V*rPnlAqht37rIFd'qh=uos+UJjrIt9#rH%p\qdSe_qeuFDs%`5t
+nQGBTq]YnRNW8qWWW2tuJcG]KrrB,"J,~>
+[K$7,JcF'rrrCaPrr at WMJcFd1iVrk_p&=skp&=pip&=p]qu69[mHFB%s,ld+kL'7aq8W$RpW!+1
+rrE#to>^gXo>^aVot17Oj2V&%pVum<s3^MZpUgIQs2P(cq8W*>s01h/o=OhGcc5^kou>nFp#t_h
+pYCE#\,ZI.JcDGDrrAa"rr at WML&_/QJcFF'rr at WMQ2gZ;l](k1s-<D;qj%,InWj!=qj%&Gs,HRK
+rrDfnrrD6^r;`bqlPB"`rrCqLgD9eho+p at ZpD3c/jVIAZpD/bgr;`hsrr at WMrVultX8d\~>
+[K$7,JcF'rrrCaPrr at WMJcFd1iCj1Noh5;boh58`q+LZerF5Y)oj[<*q0;ojms+#JrHS-uo7Qdt
+qu?ZrrVuJLs+Bp'rIad3s+B?lrMB7KopYo5ooAd8s+C?3s$QUBopYoWl]1S*q1I"RpR:c8hg"g2
+l\"qVJcE4Zrr at WMU&Y,mTs+IrJcCH(rr at WMg&M'PJcD#8q3^K5rJLW7q3_&=rJL-)qhk91qhkE=
+nc/Uhp](6nkPtJ\VuQ)]nc&Qohu;C/s6'"PmJckOp\4^Gq=FFOp[eFSn^7=)s7?3`NW8qWWW2tu
+JcG]KrrB,"J,~>
+[K$7,JcF'rrrCaPrr at WMJcFd1m@*^Es((r0s1A<YrrE)_s7?9Ss8MugrVse7s0Ap/qu?ZrrVqHJ
+rVli&Jc;YJJcE4Zrr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcD#8Vu?/crrDfnrrD6^r;`bqs0_m1
+s/Q*srOr08qlfP0s*OL[q69V*rPnlAqht37rIFd'qh=uos+UJjrIt9#rH%p\qdSe_qeuFDs%`5t
+nQGBTq]YnRNW8qWWW2tuJcG]KrrB,"J,~>
+[K$7,JcF'rrrCaPrr at WMJcFd1iVrk_p&=skp&=pip&=p]qu69[mHFB%s,ld+kL'7aq8W$RpW!+1
+rrE#to>^gXo>^aVot17Oj2V&%pVum<s3^MZpUgIQs2P(cq8W*>s01h/o=OhGcc5^kou>nFp#t_h
+pYCE#\,ZI.JcDGDrrAa"rr at WML&_/QJcFF'rr at WMQ2gZ;l](k1s-<D;qj%,InWj!=qj%&Gs,HRK
+rrDfnrrD6^r;`bqlPB"`rrCqLgD9eho+p at ZpD3c/jVIAZpD/bgr;`hsrr at WMrVultX8d\~>
+[K$7,JcF'rrrCgRrr at WMJcFd1d7aK>pIkJbq+LZes'kq"rDrT#lYYU*l\#(ZrJp?!qi:LPrrE#t
+o8`d%pQ#-'pR:u3ooB')o8`dGpQ#!:rIad'q3q25s$QO at pR;,7l]1Y,pOgePq3o]UheiCGq09mY
+rr at iSr;cHhrr at WMU&Y,mTs+IrJcCH(rr at WMkPtP^JcCN*qj?W5rJLW7q3_&=rJL3+q25'/qhkE=
+jo>>\M>uuAn,E?mh>Z1-s6'(RmJcqQs8)cop\4FRrUBLOrUBF+rUB^UJcE"Trr at WMrVultX8d\~>
+[K$7,JcF'rrrCgRrr at WMJcFd1m@*^EpTX\0s2P)drrE)_s5!_=s8N&irVqHJnc&@arrE#tJc>WI
+s0 at 4TWW'm:rr at iSr;cHhrr at WMU&Y,mU&Y,mJcCH(rr at WMkPtP^JcCN*Vu>`Wrr at oUs/Q+,s/Q+4
+s2"`KrNcC*n&GBSpW!*7ot1+ at s02H[pQkc.q2>3*s*=Kqs).dhrH%p\qdSkaq/>_4nQGleo1Ss(
+s"+0cJcE"Trr at WMrVultX8d\~>
+[K$7,JcF'rrrCgRrr at WMJcFd1dJj.Gp\t-kp&>!_q>U'Ylfd<`ld>UcrPn<Rqo8I3rrE#to>^aV
+pW!*XpUg=Mou@$Zo>^a5pVus>rR(;Xq7HOOs*OL[pUgIQlc/V0pX.=,q7G&1hrt*fq;'$irr at iS
+r;cHhrr at WMU&Y,mTjRg"JcCH(rr at WMkPtP^JcCN*qhjWtrL!VMq25'7rL!2Aq3_&Eqj at DCjo>>\
+M>urYmn<Z\h+QK<rrD^-j\+,>o1SfnJcE"Trr at WMrVultX8d\~>
+[K$7,JcF'rrrCgRrr at WMJcFd1d7aK>pIkJbq+LZes'kq"rDrT#lYYU*l\#(ZrJp?!qi:LPrrE#t
+o8`d%pQ#-'pR:u3ooB')o8`dGpQ#!:rIad'q3q25s$QO at pR;,7l]1Y,pOgePq3o]UheiCGq09mY
+rr at iSr;cHhrr at WMU&Y,mTs+IrJcCH(rr at WMkPtP^JcCN*qj?W5rJLW7q3_&=rJL3+q25'/qhkE=
+jo>>\M>uuAn,E?mh>Z1-s6'(RmJcqQs8)cop\4FRrUBLOrUBF+rUB^UJcE"Trr at WMrVultX8d\~>
+[K$7,JcF'rrrCgRrr at WMJcFd1m@*^EpTX\0s2P)drrE)_s5!_=s8N&irVqHJnc&@arrE#tJc>WI
+s0 at 4TWW'm:rr at iSr;cHhrr at WMU&Y,mU&Y,mJcCH(rr at WMkPtP^JcCN*Vu>`Wrr at oUs/Q+,s/Q+4
+s2"`KrNcC*n&GBSpW!*7ot1+ at s02H[pQkc.q2>3*s*=Kqs).dhrH%p\qdSkaq/>_4nQGleo1Ss(
+s"+0cJcE"Trr at WMrVultX8d\~>
+[K$7,JcF'rrrCgRrr at WMJcFd1dJj.Gp\t-kp&>!_q>U'Ylfd<`ld>UcrPn<Rqo8I3rrE#to>^aV
+pW!*XpUg=Mou@$Zo>^a5pVus>rR(;Xq7HOOs*OL[pUgIQlc/V0pX.=,q7G&1hrt*fq;'$irr at iS
+r;cHhrr at WMU&Y,mTjRg"JcCH(rr at WMkPtP^JcCN*qhjWtrL!VMq25'7rL!2Aq3_&Eqj at DCjo>>\
+M>urYmn<Z\h+QK<rrD^-j\+,>o1SfnJcE"Trr at WMrVultX8d\~>
+[K$7,JcC<$JcCT,cV+9<pIkJbq+LZerCd#goj[N0r?;2Xhg#0<mt:@Zs,QK!rJp^RrrE*!s*43s
+qh+X'qh+X3qh+j-rBpUFqh+!jqjRD7o8`d<q1J@#q3q87l]1_.on1YPds1gBq0:_4q-q>Crr at WM
+p&G$lJcDGDrrAabrr at WML&_/QJcG!7rr at WML&_%;l';.'q3_&=rJL3+q25'/q24;6rrD`lrrADc
+n,;YQs0CDYci*81qt'jarVcKbp[eFSoCMkKp!Nfqs7$!Ys7cQ^JcC<$XoJD$X8d\~>
+[K$7,JcC<$JcCT,rJpE:oqhDes1A<Ns3^l1rrE)Ts60L^rU^!fdJj*MV>g;jrrE*!ao;7EJc:r6
+rNa]I`W,r<JcGECrr at WMU&Y,mU&Y,mJcCH(rr at WMl2Ub`JcCH(Vu>`WrrD`lrrADcs2"`Cs/Q+4
+s2"`KrNcI,mDf0Qou?s7ot1+ at rNQ<[op5?1rIt8sonEEeqf_dEmn<CnmptrkrD)rWr?;1lr>'ta
+JcDkPrrB,"J,~>
+[K$7,JcC<$JcCT,ci3qEp\t-kli-SKoB?.Cs6/@rs6/q!pYGkhmEtmPq>^Hps8W,Tou?mVpW!*X
+pUg=MrPne_s2Or`ji720qpG#TrO_mQou?g>rR'rNpUg+GdDjYkrK6p3h<=\+`W,r<JcGECrr at WM
+U&Y,mTl9r2JcCH(rr at WMl2Ub`JcCH(qhjWtqj at 2:qj%,Io9K-=qj$uEjo>>\p&G$lQiHLim7[HZ
+gIoj.k=a2<o1SfnJcC<$XoJD$X8d\~>
+[K$7,JcC<$JcCT,cV+9<pIkJbq+LZerCd#goj[N0r?;2Xhg#0<mt:@Zs,QK!rJp^RrrE*!s*43s
+qh+X'qh+X3qh+j-rBpUFqh+!jqjRD7o8`d<q1J@#q3q87l]1_.on1YPds1gBq0:_4q-q>Crr at WM
+p&G$lJcDGDrrAabrr at WML&_/QJcG!7rr at WML&_%;l';.'q3_&=rJL3+q25'/q24;6rrD`lrrADc
+n,;YQs0CDYci*81qt'jarVcKbp[eFSoCMkKp!Nfqs7$!Ys7cQ^JcC<$XoJD$X8d\~>
+[K$7,JcC<$JcCT,rJpE:oqhDes1A<Ns3^l1rrE)Ts60L^rU^!fdJj*MV>g;jrrE*!ao;7EJc:r6
+rNa]I`W,r<JcGECrr at WMU&Y,mU&Y,mJcCH(rr at WMl2Ub`JcCH(Vu>`WrrD`lrrADcs2"`Cs/Q+4
+s2"`KrNcI,mDf0Qou?s7ot1+ at rNQ<[op5?1rIt8sonEEeqf_dEmn<CnmptrkrD)rWr?;1lr>'ta
+JcDkPrrB,"J,~>
+[K$7,JcC<$JcCT,ci3qEp\t-kli-SKoB?.Cs6/@rs6/q!pYGkhmEtmPq>^Hps8W,Tou?mVpW!*X
+pUg=MrPne_s2Or`ji720qpG#TrO_mQou?g>rR'rNpUg+GdDjYkrK6p3h<=\+`W,r<JcGECrr at WM
+U&Y,mTl9r2JcCH(rr at WMl2Ub`JcCH(qhjWtqj at 2:qj%,Io9K-=qj$uEjo>>\p&G$lQiHLim7[HZ
+gIoj.k=a2<o1SfnJcC<$XoJD$X8d\~>
+[K$7,JcE4Zr;_EKJcFF'btJ':q+L\dq+L`gq+LTcpL<H*hg#*:nUpR\l\#4tp](6ns8W%BpQ#'%
+qi:E'qjR83q2Y?)ooB')o8`^:q1J@#s-i\7ooAp<qh+-nrL38/foEglh/2mqJcE:\rr at WMU&Y,m
+TqD>bJcCH(rr at WMJcDkPrrBn8qj?W5qhk3:qi1Q3o8Wd-rI=j)q2P3-kPtP^p](6nQiHOQmJd'i
+g&BJ!l2L_SrVHEip\3qDq=+.+s5!_ErU^!^\,ZI.JcC<$q>^HpX8d\~>
+[K$7,JcE4Zr;_EKJcFF'pQ#!:nYQ,es1A6LrR(WFqrn(OrVqHJnc&:_rrE*!Jc:6"TDjEA\c;[0
+JcDGDrrAbmrr at WML&_/QJcC<$XoJD$_>gA1kPtP^p](6nQiHrjs1SBIs1SH<s0(h0rHn4WrNQ%.
+q8WB;s1 at rioo&j(s*=9ks*=QdpL<Ycs*FEXm:>fkqbHfWq]YnR\,ZI.JcC<$q>^HpX8d\~>
+[K$7,JcE4Zr;_EKJcFF'c2R_Cq>U?ml2LGKlfd6^rTNe!pYG/_s2Og5rrE*!rS at 4fq9f)ZpX/lM
+pX/fVqpG)Vs3^GXqn)[Oou@$DpX/ZRqn)aQl,N\6n^6%0^YR`0p[`t9\c;[0JcDGDrrAa2rr at WM
+L&_/QJcC<$XoJD$_>jCil&GS-q25'7rL!2As-Wb\s-WVIq3^@FrrDfnrrADcmhY:`r;bMDdh_+>
+bnftFpD17<rr at WMJcGQGrrB,"J,~>
+[K$7,JcE4Zr;_EKJcFF'btJ':q+L\dq+L`gq+LTcpL<H*hg#*:nUpR\l\#4tp](6ns8W%BpQ#'%
+qi:E'qjR83q2Y?)ooB')o8`^:q1J@#s-i\7ooAp<qh+-nrL38/foEglh/2mqJcE:\rr at WMU&Y,m
+TqD>bJcCH(rr at WMJcDkPrrBn8qj?W5qhk3:qi1Q3o8Wd-rI=j)q2P3-kPtP^p](6nQiHOQmJd'i
+g&BJ!l2L_SrVHEip\3qDq=+.+s5!_ErU^!^\,ZI.JcC<$q>^HpX8d\~>
+[K$7,JcE4Zr;_EKJcFF'pQ#!:nYQ,es1A6LrR(WFqrn(OrVqHJnc&:_rrE*!Jc:6"TDjEA\c;[0
+JcDGDrrAbmrr at WML&_/QJcC<$XoJD$_>gA1kPtP^p](6nQiHrjs1SBIs1SH<s0(h0rHn4WrNQ%.
+q8WB;s1 at rioo&j(s*=9ks*=QdpL<Ycs*FEXm:>fkqbHfWq]YnR\,ZI.JcC<$q>^HpX8d\~>
+[K$7,JcE4Zr;_EKJcFF'c2R_Cq>U?ml2LGKlfd6^rTNe!pYG/_s2Og5rrE*!rS at 4fq9f)ZpX/lM
+pX/fVqpG)Vs3^GXqn)[Oou@$DpX/ZRqn)aQl,N\6n^6%0^YR`0p[`t9\c;[0JcDGDrrAa2rr at WM
+L&_/QJcC<$XoJD$_>jCil&GS-q25'7rL!2As-Wb\s-WVIq3^@FrrDfnrrADcmhY:`r;bMDdh_+>
+bnftFpD17<rr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$RK*9eJcGKEb=hj8q+L\dnOra[oj[r<rupoLhg"s6on2j\l\"s3rrDq at q2Y3%qi:E'
+qjR83qi:K)ooB')o8`d<pOi.!s-iV5ooB'@q1Ipls-i>-iJtBlhei*sJcE:\rr at WMU&Y,mTqD>b
+JcCH(rr at WMq>^BnJcE:\rrBn8rKui7q2533rL!D?rJL9-rJLK%s+:--qhkE=kPtP^MuW>Gli-jg
+fDa>!s8N&(mJd.Ws8)Qip\4RVrV,jRq=+.+s5!_Es7?3`\,ZI.bQ%M at JcE4ZrrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eJcGKEpQ"R.rMBCqrO`$Js3^l1rrE#]rU^!fh>[G[Qi?aZrr at WLJc;5>JcE:\
+rr at WMU&Y,mU&Y,mJcCH(rr at WMq>^BnJcE:\rrBn8V>]TWrr at uWs2"`Cs/Q+4s2"`KrNbb/rHn.U
+s0270q8WB;rO_fio8EX<onEEkrHA3MrtbE>o1T%.pM]M2nQG`aoh56,s"+0c\,ZI.bQ%M at JcE4Z
+rrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eJcGKEbPqMAq>U?mli-SKs60KQn`\ldq<7M!oA/`[p](6nqq_(fpX/lXpX/lM
+pX/lXq9elTs3^GXrO_gOou@$Dp!NHPs1A*Sl,Nb8mEsn4\)#s*p[`t9\c;[0JcDGDrrAa2rr at WM
+L&_/QJcGQGr;_EK\c;[0_>jIkl&GM+s-<P?q3CoGop,KCqkX7bqj%&Gs,H4Arr at uWnJ:F`r;bGB
+eJA0XrrD at Xb80bDq%gI>rrC7Br;_EK\,ZI.s8W*!X8d\~>
+[K$7,JcC<$RK*9eJcGKEb=hj8q+L\dnOra[oj[r<rupoLhg"s6on2j\l\"s3rrDq at q2Y3%qi:E'
+qjR83qi:K)ooB')o8`d<pOi.!s-iV5ooB'@q1Ipls-i>-iJtBlhei*sJcE:\rr at WMU&Y,mTqD>b
+JcCH(rr at WMq>^BnJcE:\rrBn8rKui7q2533rL!D?rJL9-rJLK%s+:--qhkE=kPtP^MuW>Gli-jg
+fDa>!s8N&(mJd.Ws8)Qip\4RVrV,jRq=+.+s5!_Es7?3`\,ZI.bQ%M at JcE4ZrrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eJcGKEpQ"R.rMBCqrO`$Js3^l1rrE#]rU^!fh>[G[Qi?aZrr at WLJc;5>JcE:\
+rr at WMU&Y,mU&Y,mJcCH(rr at WMq>^BnJcE:\rrBn8V>]TWrr at uWs2"`Cs/Q+4s2"`KrNbb/rHn.U
+s0270q8WB;rO_fio8EX<onEEkrHA3MrtbE>o1T%.pM]M2nQG`aoh56,s"+0c\,ZI.bQ%M at JcE4Z
+rrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eJcGKEbPqMAq>U?mli-SKs60KQn`\ldq<7M!oA/`[p](6nqq_(fpX/lXpX/lM
+pX/lXq9elTs3^GXrO_gOou@$Dp!NHPs1A*Sl,Nb8mEsn4\)#s*p[`t9\c;[0JcDGDrrAa2rr at WM
+L&_/QJcGQGr;_EK\c;[0_>jIkl&GM+s-<P?q3CoGop,KCqkX7bqj%&Gs,H4Arr at uWnJ:F`r;bGB
+eJA0XrrD at Xb80bDq%gI>rrC7Br;_EK\,ZI.s8W*!X8d\~>
+[K$7,JcEdjr;_EKfDkjNJcGQGa\2X6qb-nfmn<OYoj[qEpK%*!hg"m4pOi!\mt:<5rrDk>qi:E'
+rJpK%s-iV5qi:E'q2Y?)o8`KrooB&son2pton2Rjl\";Zf6I<Hhg!soq-npT]Dqg0JcDGDrrAab
+rr at WML&_/QJcC<$JcG'9rKui7pPSp:q2P?1oo9!/q1&?prJg]3s-W-PqZ)QSnbq_Os0C2Sg&:gI
+s0D+ms8Duoq>L'^rU]p\nalSGpX0#sqt'j^s6kO=JcE(VrrE*!rrB,"J,~>
+[K$7,JcEdjr;_EKfDkjNJcGQGpQ"R.rMBOus/#b"rO`*LrR(Z/s5!\Ts5!_=s7?3hh>[G[Qi?[X
+rr at WLJc>'9s0B!1JcE@^r;_EKU&Y,mU&Y,mJcCH(rr at WMJcC<$li3g[li6h^MuWgns0_a?s1SB:
+l,NaMo>^g7pUg1>s02C4qj.8Uo8EX<o7d3iqdTR at qdT4kqg/!TmptrkqbHfWr?;1lr>'taJcE(V
+rrE*!rrB,"J,~>
+[K$7,JcEdjr;_EKfDkjNJcGQGao;;?qu6Qol2LAIs.&i_q=EM"pZVA!n_NZ]p&G$lq;(qfpX/rZ
+o?mTMp!NZVpX/fVqpG#Tp!NHPs5!@qou?[Plc/8<ji5p.s,l3ph<=\+JcE@^r;_EKU&Y,mTl9r2
+JcCH(rr at WMJcC<$li6p at l&GG)rJLE9rL!8Cs-WVXrLj+Sqj at D@li6h^MuW;_ktD$VeP"R2qb-qh
+mn:b<oh5#pJcC<$ZiC%*s8W*!X8d\~>
+[K$7,JcEdjr;_EKfDkjNJcGQGa\2X6qb-nfmn<OYoj[qEpK%*!hg"m4pOi!\mt:<5rrDk>qi:E'
+rJpK%s-iV5qi:E'q2Y?)o8`KrooB&son2pton2Rjl\";Zf6I<Hhg!soq-npT]Dqg0JcDGDrrAab
+rr at WML&_/QJcC<$JcG'9rKui7pPSp:q2P?1oo9!/q1&?prJg]3s-W-PqZ)QSnbq_Os0C2Sg&:gI
+s0D+ms8Duoq>L'^rU]p\nalSGpX0#sqt'j^s6kO=JcE(VrrE*!rrB,"J,~>
+[K$7,JcEdjr;_EKfDkjNJcGQGpQ"R.rMBOus/#b"rO`*LrR(Z/s5!\Ts5!_=s7?3hh>[G[Qi?[X
+rr at WLJc>'9s0B!1JcE@^r;_EKU&Y,mU&Y,mJcCH(rr at WMJcC<$li3g[li6h^MuWgns0_a?s1SB:
+l,NaMo>^g7pUg1>s02C4qj.8Uo8EX<o7d3iqdTR at qdT4kqg/!TmptrkqbHfWr?;1lr>'taJcE(V
+rrE*!rrB,"J,~>
+[K$7,JcEdjr;_EKfDkjNJcGQGao;;?qu6Qol2LAIs.&i_q=EM"pZVA!n_NZ]p&G$lq;(qfpX/rZ
+o?mTMp!NZVpX/fVqpG#Tp!NHPs5!@qou?[Plc/8<ji5p.s,l3ph<=\+JcE@^r;_EKU&Y,mTl9r2
+JcCH(rr at WMJcC<$li6p at l&GG)rJLE9rL!8Cs-WVXrLj+Sqj at D@li6h^MuW;_ktD$VeP"R2qb-qh
+mn:b<oh5#pJcC<$ZiC%*s8W*!X8d\~>
+[K$7,JcC<$JcCl4a%QF4qb-nfmn<U[q-rennRCa-o54AWms+;Rp&G%Cq0;juo7R('o7R(3o7R('
+on3:)rBpUFqh+L#o7Qk!rHS!fpQ#8uon2Xls*3j^l]0A;s"*&Ps)%]Xj)+U$JcE@^r;_EKU&Y,m
+TqD>bJcCH(rr at WMJcC<$li6pNl';"#rL!JAq24p+pOE'ls,Ho5s-;dIrr at uWoDRkOs0C,Qg\pC9
+nbqqNnalMEq9f/srU^!^JcC<$YQ+V&X8d\~>
+[K$7,JcC<$JcCl4pQ"R.q5++qqn)mJqpGH"rrE)_s7?9SrVucos7:g at q>U'es0B-5rN_"R]Dhi9
+h>[AYg\ud(]Dqg0JcDGDrrAbmrr at WML&_/QJcC<$JcG'9V>]TWrr at uWs1JB>qn`<Gs0Ch-s*O at W
+s3^SQpVus>rKdDUoo&jDo7d3inRD;eq0MdRmptrkq+gTUruqCnr>'taJcDqRrrB,"J,~>
+[K$7,JcC<$JcCl4a8Z)=qu6Qoli-_On,DkKl.tspqpFlgn'Uh.s,m-5rPnHVs2OZXs1 at mMs2O`Z
+s2P"as2Or`o>^CLq8WBhp!NNRs5!@qmDf1^ld>%<dG=hbhqe=rrLDp3q=B1;]Dqg0JcDGDrrAa2
+rr at WML&_/QJcC<$JcG'9rJKj!pR(o:qj$uEpQbKKqk3tSqj at DCkPtP^MuWAak=bgTdnAF2ktAu2
+oh5)rJcC<$YQ+V&X8d\~>
+[K$7,JcC<$JcCl4a%QF4qb-nfmn<U[q-rennRCa-o54AWms+;Rp&G%Cq0;juo7R('o7R(3o7R('
+on3:)rBpUFqh+L#o7Qk!rHS!fpQ#8uon2Xls*3j^l]0A;s"*&Ps)%]Xj)+U$JcE@^r;_EKU&Y,m
+TqD>bJcCH(rr at WMJcC<$li6pNl';"#rL!JAq24p+pOE'ls,Ho5s-;dIrr at uWoDRkOs0C,Qg\pC9
+nbqqNnalMEq9f/srU^!^JcC<$YQ+V&X8d\~>
+[K$7,JcC<$JcCl4pQ"R.q5++qqn)mJqpGH"rrE)_s7?9SrVucos7:g at q>U'es0B-5rN_"R]Dhi9
+h>[AYg\ud(]Dqg0JcDGDrrAbmrr at WML&_/QJcC<$JcG'9V>]TWrr at uWs1JB>qn`<Gs0Ch-s*O at W
+s3^SQpVus>rKdDUoo&jDo7d3inRD;eq0MdRmptrkq+gTUruqCnr>'taJcDqRrrB,"J,~>
+[K$7,JcC<$JcCl4a8Z)=qu6Qoli-_On,DkKl.tspqpFlgn'Uh.s,m-5rPnHVs2OZXs1 at mMs2O`Z
+s2P"as2Or`o>^CLq8WBhp!NNRs5!@qmDf1^ld>%<dG=hbhqe=rrLDp3q=B1;]Dqg0JcDGDrrAa2
+rr at WML&_/QJcC<$JcG'9rJKj!pR(o:qj$uEpQbKKqk3tSqj at DCkPtP^MuWAak=bgTdnAF2ktAu2
+oh5)rJcC<$YQ+V&X8d\~>
+[K$7,JcC<$JcCr6dnB]@oh5;brCd+hmn<U[rsSiBrCcT[lXK7+nSS5Wm<J5ToDehApNZ^udt@[\
+on3.%q1J@#s*4-fqi:Puon3(#rHS!fnW*Eim=XkfVg.*9pL8^R]Dqm2JcDGDrrAabrr at WML&_/Q
+M?!MSec5XLJcD):s-<PMl';"#rL!JAq24p+pOE'ls,Hi3q>^HprVultp](6nNW8VKjo5:cdJi&%
+kPk#MrV-?MoCqeHp[J(-rS at GDs7cQiJcC<$YQ+V&X8d\~>
+[K$7,JcC<$JcCr6pQ"R.s/#aarMBIss1A;LrPnf`rS at JRrTO4[rVlceoD\]oMuN>Js0 at 4TJc;/<
+JcE@^rr at WMU&Y,mU&Y,mJcCH(rr at oUr;bCJrr at WMQiEiZq>^HprVultp](6nNW9$ps1JBUqn`<G
+ji7=Io>^gXq7H=>ot16irLrtDrLrh:rGD.8q+LO0pM^(Bs%`/rnQGT]pIkN0r at IsaJcC<$YQ+V&
+X8d\~>
+[K$7,JcC<$JcCr6e,KBQp&=skrVlcqli-pis/52^lgsN"n`]r!mG7B]oDeiQpYGkhe'\38p!NZV
+q9elTs5!:oqo8Nhp!NTTrS at .on](C\mEtCBVqp7op[`t9]Dqm2JcDGDrrAa2rr at WML&_/QM?!MS
+ec5XLJcD):s,Hu7l&GG)rJLK;q3^oApS@\Zs-<DIq>^HprVultp](6nNW8Scj\,URd7`@4k=b1X
+rrC^fpIk;tJcC<$YQ+V&X8d\~>
+[K$7,JcC<$JcCr6dnB]@oh5;brCd+hmn<U[rsSiBrCcT[lXK7+nSS5Wm<J5ToDehApNZ^udt@[\
+on3.%q1J@#s*4-fqi:Puon3(#rHS!fnW*Eim=XkfVg.*9pL8^R]Dqm2JcDGDrrAabrr at WML&_/Q
+M?!MSec5XLJcD):s-<PMl';"#rL!JAq24p+pOE'ls,Hi3q>^HprVultp](6nNW8VKjo5:cdJi&%
+kPk#MrV-?MoCqeHp[J(-rS at GDs7cQiJcC<$YQ+V&X8d\~>
+[K$7,JcC<$JcCr6pQ"R.s/#aarMBIss1A;LrPnf`rS at JRrTO4[rVlceoD\]oMuN>Js0 at 4TJc;/<
+JcE@^rr at WMU&Y,mU&Y,mJcCH(rr at oUr;bCJrr at WMQiEiZq>^HprVultp](6nNW9$ps1JBUqn`<G
+ji7=Io>^gXq7H=>ot16irLrtDrLrh:rGD.8q+LO0pM^(Bs%`/rnQGT]pIkN0r at IsaJcC<$YQ+V&
+X8d\~>
+[K$7,JcC<$JcCr6e,KBQp&=skrVlcqli-pis/52^lgsN"n`]r!mG7B]oDeiQpYGkhe'\38p!NZV
+q9elTs5!:oqo8Nhp!NTTrS at .on](C\mEtCBVqp7op[`t9]Dqm2JcDGDrrAa2rr at WML&_/QM?!MS
+ec5XLJcD):s,Hu7l&GG)rJLK;q3^oApS@\Zs-<DIq>^HprVultp](6nNW8Scj\,URd7`@4k=b1X
+rrC^fpIk;tJcC<$YQ+V&X8d\~>
+[K$7,JcF@%r;cfrrr at WMJcEpncV+9<oh5;brCd+hmn<U[qb-<Wk at 4%-m;;*4on2r;s*4PppNZ4\
+s*4-fs*3RVs,Qc)q2Y>son3.%q0;^fs#9t1qi:Puon2ptpNZ"Voo>elh/2ssJcE@^rr at WMU&Y,m
+TqD>bJcCH(rr at WMg&M'PJcD):rKuc5pPSp:qi1E/q2PE+omcpls,Hi3qu?Zrqu?Zrp](6nNW8VK
+l2LY[s6'(Rh>Z=1l2L/MrV-?Ms7cQip\44Lp[J"+rS at GDs7cQ^JcG?ArrC+>rr at WMrVultX8d\~>
+[K$7,JcF@%r;cfrrr at WMJcEpnjc9)(rMBIsrO`)JrPnm$qq_8PrTO4[s8N&^rUYU>q>U'es8N&(
+Jc>KEs0 at 4TV>c&G]Dqm2JcDGDrrAbmrr at WML&_/QJcFF'rr at WMQiEiZqu?Zrqu?Zrp](6nNW9$p
+s0_a?s1SH<l,N\-s.&hhs0)IBs3^YSou@$ZpUgHkrLrtDrLs7LonE?]o4%SirHeEks*FEXs().)
+o47AopJ1BSruqCnr>'taoDegja8c/>JcG]KrrB,"J,~>
+[K$7,JcF@%r;cfrrr at WMJcEpnci3sMp&=skrVlcqdJi>#oA/ftl.u$[p&G'Js,m'3n^7Bmo?mTo
+j3dnHp!NTTqq^qmqo8Hfq9f4ss3^_`qq^qmou?a^ld>CFUYXbiq=B1;]Dqm2JcDGDrrAa2rr at WM
+L&_/QJcFF'rr at WMQiI#AkDf5'rJLK;q3^uCs.K%\rLj1Uq3_'ZrrDrrrrDfnrrA&Yo+pR`r>,D5
+obQ at Vh\PHLlPBL#fbX6Rq%eP]oDegja8c/>JcG]KrrB,"J,~>
+[K$7,JcF@%r;cfrrr at WMJcEpncV+9<oh5;brCd+hmn<U[qb-<Wk at 4%-m;;*4on2r;s*4PppNZ4\
+s*4-fs*3RVs,Qc)q2Y>son3.%q0;^fs#9t1qi:Puon2ptpNZ"Voo>elh/2ssJcE@^rr at WMU&Y,m
+TqD>bJcCH(rr at WMg&M'PJcD):rKuc5pPSp:qi1E/q2PE+omcpls,Hi3qu?Zrqu?Zrp](6nNW8VK
+l2LY[s6'(Rh>Z=1l2L/MrV-?Ms7cQip\44Lp[J"+rS at GDs7cQ^JcG?ArrC+>rr at WMrVultX8d\~>
+[K$7,JcF@%r;cfrrr at WMJcEpnjc9)(rMBIsrO`)JrPnm$qq_8PrTO4[s8N&^rUYU>q>U'es8N&(
+Jc>KEs0 at 4TV>c&G]Dqm2JcDGDrrAbmrr at WML&_/QJcFF'rr at WMQiEiZqu?Zrqu?Zrp](6nNW9$p
+s0_a?s1SH<l,N\-s.&hhs0)IBs3^YSou@$ZpUgHkrLrtDrLs7LonE?]o4%SirHeEks*FEXs().)
+o47AopJ1BSruqCnr>'taoDegja8c/>JcG]KrrB,"J,~>
+[K$7,JcF@%r;cfrrr at WMJcEpnci3sMp&=skrVlcqdJi>#oA/ftl.u$[p&G'Js,m'3n^7Bmo?mTo
+j3dnHp!NTTqq^qmqo8Hfq9f4ss3^_`qq^qmou?a^ld>CFUYXbiq=B1;]Dqm2JcDGDrrAa2rr at WM
+L&_/QJcFF'rr at WMQiI#AkDf5'rJLK;q3^uCs.K%\rLj1Uq3_'ZrrDrrrrDfnrrA&Yo+pR`r>,D5
+obQ at Vh\PHLlPBL#fbX6Rq%eP]oDegja8c/>JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMJcF!p^J"S,s%E=jpIkMdqb-ripIjsUiF;P+lYZ$6s)%L_oDei8s"*nhs)%F]
+rHS!frHRpds*4-fs,Qc)q2Y>son34'pNZLds#9t1rJp\uon3"!om#eTq2V(lh/2ssaoDA at JcGEC
+rr at WMU&Y,mTqD>bJcCH(rrADcrr at WMJcFF'rKuc5pPSp:qi1E/qi1Q+omcjjq24A8rrA&Yp&44U
+q>L?VnbqAEiVi*ArTEYJrV-3cq=jFNp$hk+rS at GDs7cQiJcG9?rrC1 at rr@WMrVultX8d\~>
+[K$7,JcF'rrr at WMJcF!pjc9)(qka=sqn)gHrR(T"s60I_s60F]s8N&^rU^'gs0DJ"rUYmFoDeji
+s0 at 4Tq>UE"Jc;MFaoDA at JcGECrr@WMU&Y,mU&Y,mJcCH(rrADcrr at WMJcFF'U]'BUrrA&Ys2Y/`
+s2Y)Ss1Ra<s0_a0s.&hhrNH74s3^_Uou@$ZpUgIFrLrtDqk=%JpP&K]o4%_ms)7pJs*FWmrHe3V
+mpu#mohP6Sruq=lrt^1cnc/UhaoDA at JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMJcF!p^]+65s8Musp\t2uh>ZC)pYG0!mG7g+pX/U4s5!^;pYGl5p!N`op!N`o
+o?mToo?mTXp!NTTqq^qmrPnTfq9f4ss3^ebq;(_kpVum^ld>OJTAA>eq=D`.rr at WMp&G$lJcDGD
+rrAa2rr at WML&_/QQiI'cJcC<$g&M#.kDf5'rJLK;q3_&ErLihZqk3bPkPtP^NW8YelV%$hrrDR)
+hb2oDlV%0V_%uc<q%eP]nc/UhaoDA at JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMJcF!p^J"S,s%E=jpIkMdqb-ripIjsUiF;P+lYZ$6s)%L_oDei8s"*nhs)%F]
+rHS!frHRpds*4-fs,Qc)q2Y>son34'pNZLds#9t1rJp\uon3"!om#eTq2V(lh/2ssaoDA at JcGEC
+rr at WMU&Y,mTqD>bJcCH(rrADcrr at WMJcFF'rKuc5pPSp:qi1E/qi1Q+omcjjq24A8rrA&Yp&44U
+q>L?VnbqAEiVi*ArTEYJrV-3cq=jFNp$hk+rS at GDs7cQiJcG9?rrC1 at rr@WMrVultX8d\~>
+[K$7,JcF'rrr at WMJcF!pjc9)(qka=sqn)gHrR(T"s60I_s60F]s8N&^rU^'gs0DJ"rUYmFoDeji
+s0 at 4Tq>UE"Jc;MFaoDA at JcGECrr@WMU&Y,mU&Y,mJcCH(rrADcrr at WMJcFF'U]'BUrrA&Ys2Y/`
+s2Y)Ss1Ra<s0_a0s.&hhrNH74s3^_Uou@$ZpUgIFrLrtDqk=%JpP&K]o4%_ms)7pJs*FWmrHe3V
+mpu#mohP6Sruq=lrt^1cnc/UhaoDA at JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMJcF!p^]+65s8Musp\t2uh>ZC)pYG0!mG7g+pX/U4s5!^;pYGl5p!N`op!N`o
+o?mToo?mTXp!NTTqq^qmrPnTfq9f4ss3^ebq;(_kpVum^ld>OJTAA>eq=D`.rr at WMp&G$lJcDGD
+rrAa2rr at WML&_/QQiI'cJcC<$g&M#.kDf5'rJLK;q3_&ErLihZqk3bPkPtP^NW8YelV%$hrrDR)
+hb2oDlV%0V_%uc<q%eP]nc/UhaoDA at JcG]KrrB,"J,~>
+[K$7,JcFp5r;_EKJcE:\]hAA*s%E=jq+L_fmn<%KhdZD+l##m6rGD at _p&Fu8s"*tjrGD4[qfqjf
+qfqjfrHRFVs,R+Hs,Qo"o7Q^\on3:)pNZ@`q2Y&kl\#.rR<\=?rupiJpL;>Grr at WMp&G$lJcDGD
+rrAabrr at WML&_/QRK*9eJcC<$fDkf:nWj-3q3C]3s-<D>q25'/s+9ilrIY&cs)\!nl2Ub`O8nnO
+n,DqWs6&eJiVqs;l2L#IrV-3cp\44Lp$hq-qq_;Ds7cQiJcC<$Z2ah(X8d\~>
+[K$7,JcFp5r;_EKJcE:\rIa?ppR;,Ys-itas02O"s02I6s2P#bqq_;9rrE)_rVui[rU^&pqu6Ka
+L]6uHrVli&VuH_%Jc:l4s0CbcbQ%SBJcGECrr at WMU&Y,mU&Y,mJcCH(rrAJerr at WMJcF@%Xo84]
+q>KRXrrA,[s3q"\s31M`rPAN]q8W6dq6g+*s.&hhs0)=2s.oV*pW!0ZpUgCDrLs+Hq4[hHq1\W]
+o4%_ms+^Q"q0r?ipM]M2nQGN[pIkH9rt^1cJcE"TrrB,"J,~>
+[K$7,JcFp5r;_EKJcE:\^&J$3s8Musq>UE"g]$+%q;(<!n(ms+q9em8rS at L9q;)#5p!NZmpX/lo
+pX/rqjjF+Js*Odcq;(Yip"f;gs2Ofhp!NTToA/`[rPk8]oB?4En*'N;bQ%SBJcGECrr at WMU&Y,m
+Tl9r2JcCH(rrAJerr at WMJcF@%rJL-)s-WVApR(u?q3CcCqj%2So;)>Xs,-i.q3^FHrrA,[obR!h
+o+q?+m2"YRjVI)R],(-6q\Fb_JcE"TrrB,"J,~>
+[K$7,JcFp5r;_EKJcE:\]hAA*s%E=jq+L_fmn<%KhdZD+l##m6rGD at _p&Fu8s"*tjrGD4[qfqjf
+qfqjfrHRFVs,R+Hs,Qo"o7Q^\on3:)pNZ@`q2Y&kl\#.rR<\=?rupiJpL;>Grr at WMp&G$lJcDGD
+rrAabrr at WML&_/QRK*9eJcC<$fDkf:nWj-3q3C]3s-<D>q25'/s+9ilrIY&cs)\!nl2Ub`O8nnO
+n,DqWs6&eJiVqs;l2L#IrV-3cp\44Lp$hq-qq_;Ds7cQiJcC<$Z2ah(X8d\~>
+[K$7,JcFp5r;_EKJcE:\rIa?ppR;,Ys-itas02O"s02I6s2P#bqq_;9rrE)_rVui[rU^&pqu6Ka
+L]6uHrVli&VuH_%Jc:l4s0CbcbQ%SBJcGECrr at WMU&Y,mU&Y,mJcCH(rrAJerr at WMJcF@%Xo84]
+q>KRXrrA,[s3q"\s31M`rPAN]q8W6dq6g+*s.&hhs0)=2s.oV*pW!0ZpUgCDrLs+Hq4[hHq1\W]
+o4%_ms+^Q"q0r?ipM]M2nQGN[pIkH9rt^1cJcE"TrrB,"J,~>
+[K$7,JcFp5r;_EKJcE:\^&J$3s8Musq>UE"g]$+%q;(<!n(ms+q9em8rS at L9q;)#5p!NZmpX/lo
+pX/rqjjF+Js*Odcq;(Yip"f;gs2Ofhp!NTToA/`[rPk8]oB?4En*'N;bQ%SBJcGECrr at WMU&Y,m
+Tl9r2JcCH(rrAJerr at WMJcF@%rJL-)s-WVApR(u?q3CcCqj%2So;)>Xs,-i.q3^FHrrA,[obR!h
+o+q?+m2"YRjVI)R],(-6q\Fb_JcE"TrrB,"J,~>
+[K$7,JcC<$JcD;@]1`/(rVtnNm8htNs*3^DnTakHrIa_As)%d\s"*tjqec.]q0;^fq0;^fqfq^b
+s)%@[s,R+1q0;Rbs)%FRon39]om$4`qi:,il[tOKnSS:Lmqql0JcEF`rr at WMU&Y,mTo]3RJcCH(
+rr at WMJcDkPrrBt:rL!2ArJLE9pPT!9q2P3-qi1W-o7-XhpPS58rrA,[p&4F[oDSXNl2BZAkPa`G
+l2CYVq>0j[nalGCqpGAus7?3`]Dqm2JcC<$q>^HpX8d\~>
+[K$7,JcC<$JcD;@pOi!rnXBKSs02O"rNQ74rPnf`s5!_=s5!\TrVui[rU]pcp[a7 at oDedgs0AL#
+s0 at 4TPQ(TfkPg&4^&S*4JcDGDrrAbmrr at WML&_/QJcC<$XoJD$_uHG/l2Ub`O8o6rs31Mlqn`<[
+rPnTfs3LYfrO)U0rLE\hrNH%.s.o[upW!*Xq7HODs.T=Jq4[bFqh=c]oj[r[rJ(,ss*FEXmptrk
+ohP6Sr at Isa]Dqm2JcC<$q>^HpX8d\~>
+[K$7,JcC<$JcD;@]Dhg1rVt4Cg[kI$kNMHlq<7e)oDejSs5!^;q;(r3q9f#oq9f#oq9f)qo?mU%
+o?mTXs,m-5p!Ng'p"f;gs60.3pX/lXn(m<WQeh2qs.&QAq=B1;^&S*4JcDGDrrAaBrr at WML&_/Q
+JcC<$XoJD$_uK[mo8W^9q2P-9s,Hi>q3_&Es.JtZqk3\Nl2Ub`O8nkgnOrHhr;c'tj%JPNlV"c(
+pIkB!]Dqm2JcC<$q>^HpX8d\~>
+[K$7,JcC<$JcD;@]1`/(rVtnNm8htNs*3^DnTakHrIa_As)%d\s"*tjqec.]q0;^fq0;^fqfq^b
+s)%@[s,R+1q0;Rbs)%FRon39]om$4`qi:,il[tOKnSS:Lmqql0JcEF`rr at WMU&Y,mTo]3RJcCH(
+rr at WMJcDkPrrBt:rL!2ArJLE9pPT!9q2P3-qi1W-o7-XhpPS58rrA,[p&4F[oDSXNl2BZAkPa`G
+l2CYVq>0j[nalGCqpGAus7?3`]Dqm2JcC<$q>^HpX8d\~>
+[K$7,JcC<$JcD;@pOi!rnXBKSs02O"rNQ74rPnf`s5!_=s5!\TrVui[rU]pcp[a7 at oDedgs0AL#
+s0 at 4TPQ(TfkPg&4^&S*4JcDGDrrAbmrr at WML&_/QJcC<$XoJD$_uHG/l2Ub`O8o6rs31Mlqn`<[
+rPnTfs3LYfrO)U0rLE\hrNH%.s.o[upW!*Xq7HODs.T=Jq4[bFqh=c]oj[r[rJ(,ss*FEXmptrk
+ohP6Sr at Isa]Dqm2JcC<$q>^HpX8d\~>
+[K$7,JcC<$JcD;@]Dhg1rVt4Cg[kI$kNMHlq<7e)oDejSs5!^;q;(r3q9f#oq9f#oq9f)qo?mU%
+o?mTXs,m-5p!Ng'p"f;gs60.3pX/lXn(m<WQeh2qs.&QAq=B1;^&S*4JcDGDrrAaBrr at WML&_/Q
+JcC<$XoJD$_uK[mo8W^9q2P-9s,Hi>q3_&Es.JtZqk3\Nl2Ub`O8nkgnOrHhr;c'tj%JPNlV"c(
+pIkB!]Dqm2JcC<$q>^HpX8d\~>
+[K$7,JcGECrr at WMVuQbsM>t+Zr;cltj\+uAf4*iYo6C(JrIaeCrGDRZs"+%lq/,q[q0;dhpNZLd
+q0;XdrGD.Ys,QbspOiK_o6C(`rGD4Pon3:)m<J)PrGAlcj^R7Nqec.<JcEF`rr at WMU&Y,mTo]3R
+JcCH(rrB%ur;_EKM?!SU_uKb(nWj'1q3CW1q2P3-qi1W-o7-RfqhkE'l2Ub`O8ntQnc&(WrTEAB
+j8S<Ali-)Gp\O^[l1=fArR(Mus7?9bs8'G/rr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcGECrr at WMVuQbsM?!=&nW*X<rJpW at s/#aas/#Usqo8T^qq_;9r;cltrTO4OrVlQ_L]6uH
+qu6W$Jc:6"RJqd;^&S*4JcDGDrrAbmrr at WML&_/QWW2nsJcCT,rrBt:U&F6UrrA,[s2Y/`s2Y)S
+rR(;orQkAbs0_g2rLE\hrNH%.s.oUsq8W<Zqn)UBqht9DrJUQ,pMKS4s,?u4s,$Q#s*FEXmptrk
+o1o$Qr at Isl^&S*4JcC<$rVults8W*!X8d\~>
+[K$7,JcGECrr at WMVuQbsM>t-cr;cltdJhbhjll<lq<7e)p&G!Ss5!^;qq_)3q9f#oqpG/oq9f#o
+pX/s'o?mTXp"fAis60(1q9f0)p"f;gs2OH^n'V*tZeaa7j8Sr>q=B1;^&S*4JcDGDrrAaBrr at WM
+L&_/QWW2nsJcCT,rrBt:s,-?+rL!D?opGQ?q3_&Es.JtZq4RVPs.noZrrA,[pD39lnJ;''k8*)N
+kn`SX[he^2q\HmFrr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcGECrr at WMVuQbsM>t+Zr;cltj\+uAf4*iYo6C(JrIaeCrGDRZs"+%lq/,q[q0;dhpNZLd
+q0;XdrGD.Ys,QbspOiK_o6C(`rGD4Pon3:)m<J)PrGAlcj^R7Nqec.<JcEF`rr at WMU&Y,mTo]3R
+JcCH(rrB%ur;_EKM?!SU_uKb(nWj'1q3CW1q2P3-qi1W-o7-RfqhkE'l2Ub`O8ntQnc&(WrTEAB
+j8S<Ali-)Gp\O^[l1=fArR(Mus7?9bs8'G/rr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcGECrr at WMVuQbsM?!=&nW*X<rJpW at s/#aas/#Usqo8T^qq_;9r;cltrTO4OrVlQ_L]6uH
+qu6W$Jc:6"RJqd;^&S*4JcDGDrrAbmrr at WML&_/QWW2nsJcCT,rrBt:U&F6UrrA,[s2Y/`s2Y)S
+rR(;orQkAbs0_g2rLE\hrNH%.s.oUsq8W<Zqn)UBqht9DrJUQ,pMKS4s,?u4s,$Q#s*FEXmptrk
+o1o$Qr at Isl^&S*4JcC<$rVults8W*!X8d\~>
+[K$7,JcGECrr at WMVuQbsM>t-cr;cltdJhbhjll<lq<7e)p&G!Ss5!^;qq_)3q9f#oqpG/oq9f#o
+pX/s'o?mTXp"fAis60(1q9f0)p"f;gs2OH^n'V*tZeaa7j8Sr>q=B1;^&S*4JcDGDrrAaBrr at WM
+L&_/QWW2nsJcCT,rrBt:s,-?+rL!D?opGQ?q3_&Es.JtZq4RVPs.noZrrA,[pD39lnJ;''k8*)N
+kn`SX[he^2q\HmFrr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcGKErr at WMV>pPqMuU7ZrrE*!j%Jc?eRIWWpNZ at JoDe])s"+%lpMKk]om$Ffom$FfpNZLd
+qebqWo6C(`qec"Nqh+c_om$.^lZhrPqea/os'l!DgLAu>pIg);_>jH6JcDGDrrAaRrr at WML&_/Q
+JcC<$JcG-;s-W>ArJLK;o8<@'pPT!1rIY'!rFl"Vq1AL$s*s;5rrA2]p\j^_li$kHj8J0?li$/K
+mJ[(Jqu-9cp\3e at rR(Mus7?9bs8%<Hjo>8ZJcF@%rrE*!rrB,"J,~>
+[K$7,JcGKErr at WMV>pPqMuWO(l]1_.s/#aas/#Uss1A6Ls3^kds3^`"s60I_s8W&]rU^'grTO"I
+M>m,Hqu6W$Jc:6"mJd-kXo<nO_>jH6JcDGDrrAbmrr at WML&_/QJcC<$JcG-;^&@oml2BlHrrA2]
+s3q#)s3q"gs2"Z]pYGYkqoo#[rNcHnq6Kt&pU^1(rPn`^qn)UBrJUEDqhtK.okj_Rq-s5[s,$K!
+s)7p?qetq6nQGHYpIkH9rt^1cjo>8ZJcF@%rrE*!rrB,"J,~>
+[K$7,JcGKErr at WMV>pPqMuU9crrE*!ci2JdjllHpp#u#Iqrn'Bqq_#1rR(;orR(;orR(Aqq9f*'
+o?m0cq9f*'p"fMmqrm_/p!N*]n^76t_;5._s/4WCe,Fpu_>jH6JcDGDrrAaBrr at WML&_/QJcC<$
+JcG-;s,-?+rL!JAo9f?=pR(uGrLj1drJgWKq4RVPs.noZrrA2]pD3?nlPBL#itgfNlPAeZm2#^%
+b80hFq\Fb_jo>8ZJcF@%rrE*!rrB,"J,~>
+[K$7,JcGKErr at WMV>pPqMuU7ZrrE*!j%Jc?eRIWWpNZ at JoDe])s"+%lpMKk]om$Ffom$FfpNZLd
+qebqWo6C(`qec"Nqh+c_om$.^lZhrPqea/os'l!DgLAu>pIg);_>jH6JcDGDrrAaRrr at WML&_/Q
+JcC<$JcG-;s-W>ArJLK;o8<@'pPT!1rIY'!rFl"Vq1AL$s*s;5rrA2]p\j^_li$kHj8J0?li$/K
+mJ[(Jqu-9cp\3e at rR(Mus7?9bs8%<Hjo>8ZJcF@%rrE*!rrB,"J,~>
+[K$7,JcGKErr at WMV>pPqMuWO(l]1_.s/#aas/#Uss1A6Ls3^kds3^`"s60I_s8W&]rU^'grTO"I
+M>m,Hqu6W$Jc:6"mJd-kXo<nO_>jH6JcDGDrrAbmrr at WML&_/QJcC<$JcG-;^&@oml2BlHrrA2]
+s3q#)s3q"gs2"Z]pYGYkqoo#[rNcHnq6Kt&pU^1(rPn`^qn)UBrJUEDqhtK.okj_Rq-s5[s,$K!
+s)7p?qetq6nQGHYpIkH9rt^1cjo>8ZJcF@%rrE*!rrB,"J,~>
+[K$7,JcGKErr at WMV>pPqMuU9crrE*!ci2JdjllHpp#u#Iqrn'Bqq_#1rR(;orR(;orR(Aqq9f*'
+o?m0cq9f*'p"fMmqrm_/p!N*]n^76t_;5._s/4WCe,Fpu_>jH6JcDGDrrAaBrr at WML&_/QJcC<$
+JcG-;s,-?+rL!JAo9f?=pR(uGrLj1drJgWKq4RVPs.noZrrA2]pD3?nlPBL#itgfNlPAeZm2#^%
+b80hFq\Fb_jo>8ZJcF@%rrE*!rrB,"J,~>
+[K$7,JcC<$JcDMF`Cp.0oh5;bs8V1Rm8hVDl#$B.q0;RLp&Fi)s"++nokjY[om$Lho6C4dom$@d
+q/,eWs)%FRs+C>1s+C,aom$@dqec"NpOiK_l$2rTpMJ)uoj[q:fja&DrsS^)q+H;=_>jH6JcDGD
+rrAaRrr at WMX8i+uhuE]V\,ZI.JcC<$\c;\snWj'1qj$]/qi1?-s,Hu/o7-RfqhkE'l2Ub`OoP1S
+p&=4Ss6&A>kPjlIli-5Ks6':Xp\O^[qt'j^lgt)&rS at MFrV(mCJcE(VrrB,"J,~>
+[K$7,JcC<$JcDMFpOhdlo:#WSrNQ12rHnRls5!_&s5!Y;rrE*!rTO4OrTNqGM>m2Jq>UE"Qi@#j
+Jc=@%s0B?;s0D7qJcERdr;_EKU&Y,mU&Y,mJcDeNr;baTrrBP.rr at WMJcE:\U&F6UrrA2]s2Y)e
+s2Y/Us3^l1q;))"qp5)^rQ+rCs.&njs0)+,pTOD?qn)UBs02N]oqD>Bs+U2arHS-IrJ^c<s,$K!
+rGV^=rGV.8nQGBWq+LZ;rt^1cJcE(VrrB,"J,~>
+[K$7,JcC<$JcDMF`W#hAp&=sks8ULGdIZVdrU]j at p#u)Kq<7j at rS@/1rR(;os3^GorR(;oqpG6'
+p!Ng'p"fYqs+^R$q<7M-qpG<)p"fAis6/_'pX/a!bMDj_s/4QAjo5:coDX=@_>jH6JcDGDrrAaB
+rr at WMX8i+uhuE]V\,ZI.JcC<$\c;\enW!L7qi1-5qj$oCs-<PUo;)2Tqj at DZl2Ub`OoP.koh4Nb
+rrD!nk=b1XlV$OZrrC4Xq+LT#JcC<$ZiC%*X8d\~>
+[K$7,JcC<$JcDMF`Cp.0oh5;bs8V1Rm8hVDl#$B.q0;RLp&Fi)s"++nokjY[om$Lho6C4dom$@d
+q/,eWs)%FRs+C>1s+C,aom$@dqec"NpOiK_l$2rTpMJ)uoj[q:fja&DrsS^)q+H;=_>jH6JcDGD
+rrAaRrr at WMX8i+uhuE]V\,ZI.JcC<$\c;\snWj'1qj$]/qi1?-s,Hu/o7-RfqhkE'l2Ub`OoP1S
+p&=4Ss6&A>kPjlIli-5Ks6':Xp\O^[qt'j^lgt)&rS at MFrV(mCJcE(VrrB,"J,~>
+[K$7,JcC<$JcDMFpOhdlo:#WSrNQ12rHnRls5!_&s5!Y;rrE*!rTO4OrTNqGM>m2Jq>UE"Qi@#j
+Jc=@%s0B?;s0D7qJcERdr;_EKU&Y,mU&Y,mJcDeNr;baTrrBP.rr at WMJcE:\U&F6UrrA2]s2Y)e
+s2Y/Us3^l1q;))"qp5)^rQ+rCs.&njs0)+,pTOD?qn)UBs02N]oqD>Bs+U2arHS-IrJ^c<s,$K!
+rGV^=rGV.8nQGBWq+LZ;rt^1cJcE(VrrB,"J,~>
+[K$7,JcC<$JcDMF`W#hAp&=sks8ULGdIZVdrU]j at p#u)Kq<7j at rS@/1rR(;os3^GorR(;oqpG6'
+p!Ng'p"fYqs+^R$q<7M-qpG<)p"fAis6/_'pX/a!bMDj_s/4QAjo5:coDX=@_>jH6JcDGDrrAaB
+rr at WMX8i+uhuE]V\,ZI.JcC<$\c;\enW!L7qi1-5qj$oCs-<PUo;)2Tqj at DZl2Ub`OoP.koh4Nb
+rrD!nk=b1XlV$OZrrC4Xq+LT#JcC<$ZiC%*X8d\~>
+[K$7,L]@;QJcC<$U]8/'rrDdds8W*!j%K&Goh3\Am;;f2qfqdNoDeW'ruq>cokj_]j*:TVo6C4d
+pMKYWrGD.Ns+C>1q/,_Js+C&_om$@dqebYDq1J9UeTeu at j&Z0frDr_eJcELbrr at WMU&Y,mTo]3R
+JcF:#q#K=Pr;baTrrBV0rrAhorr at WMRK*;Ps-W>Aqhk?;nV[:)qhkDprJLW7rIXWjq1AWrqhk(H
+rrDfnrrA2]q>L!ckPbGDhu2a;nbqeQj8K#@p\O^[s7?-^l1=r&qq_;Ds7cQiJcC<$[K$7,X8d\~>
+[K$7,L]@;QJcC<$U]:(@l]1S*rMBIsqn)gHs+^L"rS at M;s8W*!rTO4OqrmeGM>m,Hq>UE"Q2^fh
+Jc:l4s0D=sJcELbrr at WMU&Y,mU&Y,mJcF:#q#K=Pr;baTrrBV0rrAhorr at WMRK(D-s6&)6p&G$l
+p](6nOoPI%s3q"gs2"`_rTO.7rR:Yiq98`Ws0DZpqm-1(pU^CDpTOV.q9f/Qou@$9oqD>Bs+C&_
+qfr'Kqi(Q:s,$Dtq/?:9qdfAGqeu:5mnW[Or at IslJcC<$[K$7,X8d\~>
+[K$7,L]@;QJcC<$U]810s0DCus8W*!bPoo\mHFN?qq^r/oDeXMs.'&Dp#uG'j5'a_oA0AmpZVA!
+rTNk/s3^k$q<7G+s3^T)p"fMmqrmA%q9efte_S.7j8T(ap&9OB^]4<6JcDGDrrAaBrr at WMec5FF
+huEWThuE]V\c;[0U]:>oJcD/<s,I&9nW!F5rJg?7rK[8Is+:3:s-<PUo;)2Ts.oOZp&G$lp](6n
+OoP4moh4H`rrCplk=b=\lV$7RrrC@\q+LT#JcC<$[K$7,X8d\~>
+[K$7,L]@;QJcC<$U]8/'rrDdds8W*!j%K&Goh3\Am;;f2qfqdNoDeW'ruq>cokj_]j*:TVo6C4d
+pMKYWrGD.Ns+C>1q/,_Js+C&_om$@dqebYDq1J9UeTeu at j&Z0frDr_eJcELbrr at WMU&Y,mTo]3R
+JcF:#q#K=Pr;baTrrBV0rrAhorr at WMRK*;Ps-W>Aqhk?;nV[:)qhkDprJLW7rIXWjq1AWrqhk(H
+rrDfnrrA2]q>L!ckPbGDhu2a;nbqeQj8K#@p\O^[s7?-^l1=r&qq_;Ds7cQiJcC<$[K$7,X8d\~>
+[K$7,L]@;QJcC<$U]:(@l]1S*rMBIsqn)gHs+^L"rS at M;s8W*!rTO4OqrmeGM>m,Hq>UE"Q2^fh
+Jc:l4s0D=sJcELbrr at WMU&Y,mU&Y,mJcF:#q#K=Pr;baTrrBV0rrAhorr at WMRK(D-s6&)6p&G$l
+p](6nOoPI%s3q"gs2"`_rTO.7rR:Yiq98`Ws0DZpqm-1(pU^CDpTOV.q9f/Qou@$9oqD>Bs+C&_
+qfr'Kqi(Q:s,$Dtq/?:9qdfAGqeu:5mnW[Or at IslJcC<$[K$7,X8d\~>
+[K$7,L]@;QJcC<$U]810s0DCus8W*!bPoo\mHFN?qq^r/oDeXMs.'&Dp#uG'j5'a_oA0AmpZVA!
+rTNk/s3^k$q<7G+s3^T)p"fMmqrmA%q9efte_S.7j8T(ap&9OB^]4<6JcDGDrrAaBrr at WMec5FF
+huEWThuE]V\c;[0U]:>oJcD/<s,I&9nW!F5rJg?7rK[8Is+:3:s-<PUo;)2Ts.oOZp&G$lp](6n
+OoP4moh4H`rrCplk=b=\lV$7RrrC@\q+LT#JcC<$[K$7,X8d\~>
+[K$7,JcF'rrr at WMJcFL)^J"S,pIkPdrrBl.fjaJgq-s;IokjC%pMKpRs*4'No6C:Pj*:NTpMK_Y
+qebqLs+Bu]om$FPruq8Vom$Ffq/,GBrIaQUgN^D at h,a8CJcERdrr at WMU&Y,mTo]3RJcF@%o`4%P
+qZ,ORrr at WMg&M'PJcD/<s-<VOnWj!/rKZo1rJgc5s)\'prIXQhq1AWrqhk(HrrDfnrrA8_p\jjc
+jo,5Bh>QU;nbqkSiVif>p\O^[s8)Qclgsr.s7?9bs8%<H]Dqm2JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMJcFL)mt:4ls-inHpR:uUs02I6s2P)Ns2P(nrR(Z$s60L1s8W*!rTO49rTNqG
+qu69[S,W*\p\t2uJc>KEs0 at 4TTDjEA_>jN8JcDGDrrAbmrr at WMfDkLDj8\uVhuE]VJcFF'rr at WM
+RK(J/s6&#4p&G$lp](6nPQ1[3s5*e)s2Y/Uqrn"7rR:Sgq98ZUs.&tlrNGt,rPeT9rOVmRs1 at mB
+s020irJUW,q/-"Rs'l"qqi(K8omZ^Ts&oA4nTsqJqcWGaq+LZ;rt^1c]Dqm2JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMJcFL)^]+8=p\t3mrrBn7g%4atq=FR at p#u)KpZVXIs5!5/oA0H1j5'[]pZVG#
+qrmY-s3^N'p"fT1s.&uMp"fSoq<7/#rR()tgYKR7e,Fpu_>jN8JcDGDrrAaBrr at WMfDkLDj8\uV
+huE]VJcFF'rr at WMRK*;Hs,-?+qj@>AnX09?rL!V:qj@>TnYGuRs.oOZp&G$lp](6nPQ1 at mpIjT`
+rrCjjktCO^m7ZCRrrC@\q+LT#JcE@^rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMJcFL)^J"S,pIkPdrrBl.fjaJgq-s;IokjC%pMKpRs*4'No6C:Pj*:NTpMK_Y
+qebqLs+Bu]om$FPruq8Vom$Ffq/,GBrIaQUgN^D at h,a8CJcERdrr at WMU&Y,mTo]3RJcF@%o`4%P
+qZ,ORrr at WMg&M'PJcD/<s-<VOnWj!/rKZo1rJgc5s)\'prIXQhq1AWrqhk(HrrDfnrrA8_p\jjc
+jo,5Bh>QU;nbqkSiVif>p\O^[s8)Qclgsr.s7?9bs8%<H]Dqm2JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMJcFL)mt:4ls-inHpR:uUs02I6s2P)Ns2P(nrR(Z$s60L1s8W*!rTO49rTNqG
+qu69[S,W*\p\t2uJc>KEs0 at 4TTDjEA_>jN8JcDGDrrAbmrr at WMfDkLDj8\uVhuE]VJcFF'rr at WM
+RK(J/s6&#4p&G$lp](6nPQ1[3s5*e)s2Y/Uqrn"7rR:Sgq98ZUs.&tlrNGt,rPeT9rOVmRs1 at mB
+s020irJUW,q/-"Rs'l"qqi(K8omZ^Ts&oA4nTsqJqcWGaq+LZ;rt^1c]Dqm2JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMJcFL)^]+8=p\t3mrrBn7g%4atq=FR at p#u)KpZVXIs5!5/oA0H1j5'[]pZVG#
+qrmY-s3^N'p"fT1s.&uMp"fSoq<7/#rR()tgYKR7e,Fpu_>jN8JcDGDrrAaBrr at WMfDkLDj8\uV
+huE]VJcFF'rr at WMRK*;Hs,-?+qj@>AnX09?rL!V:qj@>TnYGuRs.oOZp&G$lp](6nPQ1 at mpIjT`
+rrCjjktCO^m7ZCRrrC@\q+LT#JcE@^rr at WMrVultX8d\~>
+[K$7,Q2gja^&S*4JcC<$h>beor;c(TrVult_b9l-gLBbkpL<f4oDeQ%rupoLs'kSEs)%@Ps)%:N
+o54AWq/,eLo545Hqec?Vqec"Ns+C&_lZiG^m;:g,[:7rmq+K'6rr at WMp&G$lJcDGDrrAaRrr at WM
+g&M!Nq>^BnkPt>XhuE]VaoD;>JcC<$X8i3en!3d-rK[&5s*t'+rJgK-rIXKfqh"itq24M<rrA8_
+q>L!cjo,5Bg\pC9oDS(Uh>R*ErV-9eq=j.Fs60 at 9rV(mCfDkdLl2Ub`JcG]KrrB,"J,~>
+[K$7,Q2gja^&S*4JcC<$h>cYjooAd8s/#Zsqlp%2s2Or`rS at M$rVults60 at 9rTO"Is8MQ[S,W$Z
+p\t2uJc>KEs0 at 4TTDm1:rr at WMp&G$lJcDGDrrAbmrr at WMg&M!Nq>^BnkPt>XhuE]VaoD;>JcC<$
+X8eahli6tbPQ1['s475!s2Y/erTO.7rR:SgqonfUq6Kt&pU^=Bq60\,rR(YWn&G*qrJUW,qec(P
+s-WbDqiLi7pO;jTms=YFrE8Saq+LZ;JcF@%r;c*^rr at WMrVultX8d\~>
+[K$7,Q2gja^&S*4JcC<$h>bh#rNb\erVult^&HdXoB>r?p#u#IpZVXIn`^#EoA0H1oA0H1n_Ng#
+qpG6'p"f6'pYG`1s.&uMp"fYqpZUr!s3^5tiSCp5ec*nprr at WMp&G$lJcDGDrrAaBrr at WMg&M!N
+q>^BnkPt>XhuE]VaoD;>JcC<$X8i3Wmu at 43rJgK;s.o[^rK[&CrLiVTqk3tbq3^LJrrA8_q%iWr
+jVIjrgD9$Ho+p^dWttM(r>'tafDkdLl2Ub`JcG]KrrB,"J,~>
+[K$7,Q2gja^&S*4JcC<$h>beor;c(TrVult_b9l-gLBbkpL<f4oDeQ%rupoLs'kSEs)%@Ps)%:N
+o54AWq/,eLo545Hqec?Vqec"Ns+C&_lZiG^m;:g,[:7rmq+K'6rr at WMp&G$lJcDGDrrAaRrr at WM
+g&M!Nq>^BnkPt>XhuE]VaoD;>JcC<$X8i3en!3d-rK[&5s*t'+rJgK-rIXKfqh"itq24M<rrA8_
+q>L!cjo,5Bg\pC9oDS(Uh>R*ErV-9eq=j.Fs60 at 9rV(mCfDkdLl2Ub`JcG]KrrB,"J,~>
+[K$7,Q2gja^&S*4JcC<$h>cYjooAd8s/#Zsqlp%2s2Or`rS at M$rVults60 at 9rTO"Is8MQ[S,W$Z
+p\t2uJc>KEs0 at 4TTDm1:rr at WMp&G$lJcDGDrrAbmrr at WMg&M!Nq>^BnkPt>XhuE]VaoD;>JcC<$
+X8eahli6tbPQ1['s475!s2Y/erTO.7rR:SgqonfUq6Kt&pU^=Bq60\,rR(YWn&G*qrJUW,qec(P
+s-WbDqiLi7pO;jTms=YFrE8Saq+LZ;JcF@%r;c*^rr at WMrVultX8d\~>
+[K$7,Q2gja^&S*4JcC<$h>bh#rNb\erVult^&HdXoB>r?p#u#IpZVXIn`^#EoA0H1oA0H1n_Ng#
+qpG6'p"f6'pYG`1s.&uMp"fYqpZUr!s3^5tiSCp5ec*nprr at WMp&G$lJcDGDrrAaBrr at WMg&M!N
+q>^BnkPt>XhuE]VaoD;>JcC<$X8i3Wmu at 43rJgK;s.o[^rK[&CrLiVTqk3tbq3^LJrrA8_q%iWr
+jVIjrgD9$Ho+p^dWttM(r>'tafDkdLl2Ub`JcG]KrrB,"J,~>
+[K$7,QiI'cJcC<$QiF<`rVult_b9Z'hdZ=so4%H2p&F]%ruqDOokjS8pNZRPpNZRPom$LGo54GY
+pMKSJs'kY<s*4PprHRdJpNZ^IpMK5 at s'k;2l$0C at h,aDGrrCCFrr at WMp&G$lJcDGDrrAaRrr at WM
+g&M!Nq>^BnkPtP^s8W#thuE]VJcC<$JcG3=s-W8?qhk?;q25,ls*t'+rJgK-rIXKfqh"crrJLW1
+li6tbPQ1OYp&="Ms6&)6l2LGUli,`=rVHKQs8)ciqtg-_l1=r2s60F;s7?9bs8%<HJcE4ZrrB,"
+J,~>
+[K$7,QiI'cJcC<$QiH6$ooAX4s/#Uss1A*Hs3^l&s2P#brVultqq_57p[eFKn+3%Jp&F^as0 at FZ
+s0 at 4TPQ(Tfci="FJcGECrr at WMU&Y,mU&Y,mJcFF'r;cZnr;c$\rrE*!r;baTrr at WMJcC<$n,M/@
+rTD6"li6tbPQ1[>s475!s3^`-rS at A"qp5)^pW309s0)+,rPeZ;pU^CPs1@[<pS%D8rGD:Rs-WbD
+q2k?"s*"9Xs+^DsrFG_MnSdkkq+LZ;rulsnJcE4ZrrB,"J,~>
+[K$7,QiI'cJcC<$QiF>irVult\,P:VpZV5?pZV;Mp#uFGs7>pIqt'R<qrme1qrm_/s7>jGrR(B'
+p"fZ>p#uG3s,m99n*'N%s7?!KleVU4lfdThYOgBFs0BuNrr at WMp&G$lJcDGDrrAaBrr at WMg&M!N
+q>^BnkPtP^s8W#thuE]VJcC<$JcG3=s,-9)qj@>Aq3_,4s.o[^rK[&CrLiVTqk3n`rL!VTli6tb
+PQ1Lqoh4<\rrC^fktCadlV#nHr;bFbq+LT#JcC<$\,ZI.X8d\~>
+[K$7,QiI'cJcC<$QiF<`rVult_b9Z'hdZ=so4%H2p&F]%ruqDOokjS8pNZRPpNZRPom$LGo54GY
+pMKSJs'kY<s*4PprHRdJpNZ^IpMK5 at s'k;2l$0C at h,aDGrrCCFrr at WMp&G$lJcDGDrrAaRrr at WM
+g&M!Nq>^BnkPtP^s8W#thuE]VJcC<$JcG3=s-W8?qhk?;q25,ls*t'+rJgK-rIXKfqh"crrJLW1
+li6tbPQ1OYp&="Ms6&)6l2LGUli,`=rVHKQs8)ciqtg-_l1=r2s60F;s7?9bs8%<HJcE4ZrrB,"
+J,~>
+[K$7,QiI'cJcC<$QiH6$ooAX4s/#Uss1A*Hs3^l&s2P#brVultqq_57p[eFKn+3%Jp&F^as0 at FZ
+s0 at 4TPQ(Tfci="FJcGECrr at WMU&Y,mU&Y,mJcFF'r;cZnr;c$\rrE*!r;baTrr at WMJcC<$n,M/@
+rTD6"li6tbPQ1[>s475!s3^`-rS at A"qp5)^pW309s0)+,rPeZ;pU^CPs1@[<pS%D8rGD:Rs-WbD
+q2k?"s*"9Xs+^DsrFG_MnSdkkq+LZ;rulsnJcE4ZrrB,"J,~>
+[K$7,QiI'cJcC<$QiF>irVult\,P:VpZV5?pZV;Mp#uFGs7>pIqt'R<qrme1qrm_/s7>jGrR(B'
+p"fZ>p#uG3s,m99n*'N%s7?!KleVU4lfdThYOgBFs0BuNrr at WMp&G$lJcDGDrrAaBrr at WMg&M!N
+q>^BnkPtP^s8W#thuE]VJcC<$JcG3=s,-9)qj@>Aq3_,4s.o[^rK[&CrLiVTqk3n`rL!VTli6tb
+PQ1Lqoh4<\rrC^fktCadlV#nHr;bFbq+LT#JcC<$\,ZI.X8d\~>
+[K$7,JcC<$JcDkPgIqJFgIqMFs%E at l`CoZ#j^S6jpMKM2q/,a'okj^PrF5M<qdT;Eqec(Pqec"N
+s'kS:s+Bu]pNZXGokjYPs"+1pmqqlFrF5G:nTaq?lYZ$6X('mcq+L_fJcEXfrr at WMU&Y,mTn!(B
+JcFL)r;cNjr;c0`r;cltr;baTrr at WMJcDkPrrC%<m?RL)s-<87s*t!)s,H]/rIXKfqh"crrJLW)
+li6tbQ2g[Yp\s4OrTDf2li-YWmJbl=mJ?YQl1=l;rS at MJs8'S3rr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$JcDkPqfqL\ooAuGpR;&WrNQ=6s2P)NrPnf`s2P#brVuoRrrDrPrTO.MrTN_AS,W$Z
+p&=usL&V+XJc:l4s0 at 4U_uK`:JcDGDrrAbmrr at WMg].3Pp&Fsjli6n`s8W#thuE]VJcC<$XoJD$
+`W)M-li6tbQ2gm8s5*e)s2Xs!s5!M"qp5)^q8iTAs1SH^s0DU,pU^1>rNGn*s5!:ds5!XnpS%D8
+s)%LTrLX%JpQ53"s+12ns)7dhms=G at mnW[Os"+0n_>jN8JcC<$q>^HpX8d\~>
+[K$7,JcC<$JcDkPg]%/Wg]%0Os8N#uZi9(Xs8McVoCMeAoDeLIs.'&ZpZVMGpYG`1pYG`1p"fZ>
+oB?5%p#u/+rU]^GrS at L9s5!/-q;)#@p#tr%qt'.;mG4i7ec,TSJcEXfrr at WMU&Y,mTo]3RJcFL)
+r;cNjr;c0`r;cltr;baTrr at WMJcDkPrrC%<m>^q/s,H]=s.oU\s-<8ErLiVTqk3n`rL!V\li6tb
+Q2gXqpIjN^r;bFblV$sfm7X>mq+LZ%_>jN8JcC<$q>^HpX8d\~>
+[K$7,JcC<$JcDkPgIqJFgIqMFs%E at l`CoZ#j^S6jpMKM2q/,a'okj^PrF5M<qdT;Eqec(Pqec"N
+s'kS:s+Bu]pNZXGokjYPs"+1pmqqlFrF5G:nTaq?lYZ$6X('mcq+L_fJcEXfrr at WMU&Y,mTn!(B
+JcFL)r;cNjr;c0`r;cltr;baTrr at WMJcDkPrrC%<m?RL)s-<87s*t!)s,H]/rIXKfqh"crrJLW)
+li6tbQ2g[Yp\s4OrTDf2li-YWmJbl=mJ?YQl1=l;rS at MJs8'S3rr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$JcDkPqfqL\ooAuGpR;&WrNQ=6s2P)NrPnf`s2P#brVuoRrrDrPrTO.MrTN_AS,W$Z
+p&=usL&V+XJc:l4s0 at 4U_uK`:JcDGDrrAbmrr at WMg].3Pp&Fsjli6n`s8W#thuE]VJcC<$XoJD$
+`W)M-li6tbQ2gm8s5*e)s2Xs!s5!M"qp5)^q8iTAs1SH^s0DU,pU^1>rNGn*s5!:ds5!XnpS%D8
+s)%LTrLX%JpQ53"s+12ns)7dhms=G at mnW[Os"+0n_>jN8JcC<$q>^HpX8d\~>
+[K$7,JcC<$JcDkPg]%/Wg]%0Os8N#uZi9(Xs8McVoCMeAoDeLIs.'&ZpZVMGpYG`1pYG`1p"fZ>
+oB?5%p#u/+rU]^GrS at L9s5!/-q;)#@p#tr%qt'.;mG4i7ec,TSJcEXfrr at WMU&Y,mTo]3RJcFL)
+r;cNjr;c0`r;cltr;baTrr at WMJcDkPrrC%<m>^q/s,H]=s.oU\s-<8ErLiVTqk3n`rL!V\li6tb
+Q2gXqpIjN^r;bFblV$sfm7X>mq+LZ%_>jN8JcC<$q>^HpX8d\~>
+[K$7,VuQ\qJcC<$p](6nRK'H`rVumjrrC#2m8iCZrDrf4mpc02p&G&$okj^ErF5S>pL=#EpMKeP
+q/,kNqdSZ(qfr!Io54GNm;;`FqdT58o6C(?lYZ0:V./7]q+H;=_uK`:JcDGDrrAaBrr at WMg].3P
+p&FsjmJm+brVufrhuE]Vg&M!NJcC<$g&M'P`W,t*n!3j/s)\3ts-<87s*t!)s,Hc1rI=j!msk4d
+rI=d's*sA7rrA>aqu-9giVi`<ec"h5q>K^[g&:gErVcQgq=j.Fqrn(9rV-?j_uK`:JcC<$rVult
+s8W*!X8d\~>
+[K$7,VuQ\qJcC<$p](6nRK)l'on2dppR:oSs02I6qo8Z`rPnf`rVuoRrrE#RrTO4Os5!S9n+3%J
+p&FX_s0 at 4TJc:l4JcEXfrr at WMU&Y,mU&Y,mJcFL)r;cNjr;c6br;cfrr;baTrrCaPr;_EKJcFF'
+rrC%<l2CYF\,GXmrrA>arSde*s3^Z+s47(rq9Sl\q8iTAs1SH^s0DU,pU^1>rNGn*s2FZNrS@@j
+q4[P8pNZY.s,?]6s+U?!s+12ns,?i0ms=A>nP8mQr at Isa_uK`:JcC<$rVults8W*!X8d\~>
+[K$7,VuQ\qJcC<$p](6nRK'JirVuosrrB>'kO\ZOqrmM?qrm_Qs7>pIs/5heq<7SEqq_#1qq_)3
+pYG`<jllTtqt'FCrS?l)qq_/@p#u#'q=Eq9n_L&5ec(."_uK`:JcDGDrrAaRrr at WMg].3Pp&Fsj
+mJm+brVufrhuE]Vg&M!NJcC<$g&M'P`W,sqmu@:5s+:9<s,H]=s.oU\s-<>GrM9Idn"fiRrM9CZ
+s.nu\rrA>aq\Jp!i>2 at leJ@IDq%i?jV\])$q\I*Lrr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,VuQ\qJcC<$p](6nRK'H`rVumjrrC#2m8iCZrDrf4mpc02p&G&$okj^ErF5S>pL=#EpMKeP
+q/,kNqdSZ(qfr!Io54GNm;;`FqdT58o6C(?lYZ0:V./7]q+H;=_uK`:JcDGDrrAaBrr at WMg].3P
+p&FsjmJm+brVufrhuE]Vg&M!NJcC<$g&M'P`W,t*n!3j/s)\3ts-<87s*t!)s,Hc1rI=j!msk4d
+rI=d's*sA7rrA>aqu-9giVi`<ec"h5q>K^[g&:gErVcQgq=j.Fqrn(9rV-?j_uK`:JcC<$rVult
+s8W*!X8d\~>
+[K$7,VuQ\qJcC<$p](6nRK)l'on2dppR:oSs02I6qo8Z`rPnf`rVuoRrrE#RrTO4Os5!S9n+3%J
+p&FX_s0 at 4TJc:l4JcEXfrr at WMU&Y,mU&Y,mJcFL)r;cNjr;c6br;cfrr;baTrrCaPr;_EKJcFF'
+rrC%<l2CYF\,GXmrrA>arSde*s3^Z+s47(rq9Sl\q8iTAs1SH^s0DU,pU^1>rNGn*s2FZNrS@@j
+q4[P8pNZY.s,?]6s+U?!s+12ns,?i0ms=A>nP8mQr at Isa_uK`:JcC<$rVults8W*!X8d\~>
+[K$7,VuQ\qJcC<$p](6nRK'JirVuosrrB>'kO\ZOqrmM?qrm_Qs7>pIs/5heq<7SEqq_#1qq_)3
+pYG`<jllTtqt'FCrS?l)qq_/@p#u#'q=Eq9n_L&5ec(."_uK`:JcDGDrrAaRrr at WMg].3Pp&Fsj
+mJm+brVufrhuE]Vg&M!NJcC<$g&M'P`W,sqmu@:5s+:9<s,H]=s.oU\s-<>GrM9Idn"fiRrM9CZ
+s.nu\rrA>aq\Jp!i>2 at leJ@IDq%i?jV\])$q\I*Lrr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eSc>fbrVughrrC)4k>ptZq,[H2m:-*4oDebupMKpGqdTG>pL=#EpMKePpMK_N
+qdT58s'kS:rHS'Gokj_RlYZTFq-s#6om$.=m;;N at cXQnieRI?8q+H;=`W,l:JcDGDrrAaBrr at WM
+g].3Pp&FsjmJm1dqu?TphuE]VJcC<$JcG3=s-W>ArJLVrmu%'ns,-i9pPS3bq1AWrrJLW)li6tb
+QiHm[q>T4Ks6%l0li-k]mJb`9rVHEiq>0p]kO\T7s7?9bs8%<HbQ%SBJcGECrrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eScA)%m=Y at tpR;,Ys-in_s02I6s2P)Ns2P)ds1A<NrR(TDrS at JRrS@G9qq_57
+mIQnJoDeF]s0 at 4TJc>'9s0AX'JcE^hr;_EKU&Y,mU&Y,mJcFL)r;cNjr;c6brrDrrr;baTrr at WM
+JcC<$n,M_Ps6$fgli6tbQiI*Ss5*e,s3pf-rRUkpq9Sr^q:#;gs2=lirOM[6q8N<9ot(1Bs0)1:
+rS@:hrLrn:q0;_,pQ5E/rI4]rs-WhFq1e?am;MSks&o4lr at IslJcEpnrr@WMp&G$ls8W*!X8d\~>
+[K$7,JcC<$RK*9eSc>hkrVuiqrrB2#mIU/QrTNY?s60(SrU]dIs/5bcqrmeGqq_#1qq_#1q;(r>
+p#uGIoB?//p[e(As5!#)rS@;@p#u))p%.S7p"dscs/4E=ec(."`W,l:JcDGDrrAaRrr at WMg].3P
+p&FsjmJm1dqu?TphuE]VJcC<$JcG3=s,-?+rL!V:n!O'Ls-WhOpR(3 at q4Rb`rL!V\li6tbQiHjs
+q+KNZrrCL`lV%0lm7X2iqb-f%JcEpnrr at WMp&G$ls8W*!X8d\~>
+[K$7,JcC<$RK*9eSc>fbrVughrrC)4k>ptZq,[H2m:-*4oDebupMKpGqdTG>pL=#EpMKePpMK_N
+qdT58s'kS:rHS'Gokj_RlYZTFq-s#6om$.=m;;N at cXQnieRI?8q+H;=`W,l:JcDGDrrAaBrr at WM
+g].3Pp&FsjmJm1dqu?TphuE]VJcC<$JcG3=s-W>ArJLVrmu%'ns,-i9pPS3bq1AWrrJLW)li6tb
+QiHm[q>T4Ks6%l0li-k]mJb`9rVHEiq>0p]kO\T7s7?9bs8%<HbQ%SBJcGECrrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eScA)%m=Y at tpR;,Ys-in_s02I6s2P)Ns2P)ds1A<NrR(TDrS at JRrS@G9qq_57
+mIQnJoDeF]s0 at 4TJc>'9s0AX'JcE^hr;_EKU&Y,mU&Y,mJcFL)r;cNjr;c6brrDrrr;baTrr at WM
+JcC<$n,M_Ps6$fgli6tbQiI*Ss5*e,s3pf-rRUkpq9Sr^q:#;gs2=lirOM[6q8N<9ot(1Bs0)1:
+rS@:hrLrn:q0;_,pQ5E/rI4]rs-WhFq1e?am;MSks&o4lr at IslJcEpnrr@WMp&G$ls8W*!X8d\~>
+[K$7,JcC<$RK*9eSc>hkrVuiqrrB2#mIU/QrTNY?s60(SrU]dIs/5bcqrmeGqq_#1qq_#1q;(r>
+p#uGIoB?//p[e(As5!#)rS@;@p#u))p%.S7p"dscs/4E=ec(."`W,l:JcDGDrrAaRrr at WMg].3P
+p&FsjmJm1dqu?TphuE]VJcC<$JcG3=s,-?+rL!V:n!O'Ls-WhOpR(3 at q4Rb`rL!V\li6tbQiHjs
+q+KNZrrCL`lV%0lm7X2iqb-f%JcEpnrr at WMp&G$ls8W*!X8d\~>
+jo=uRh>dKT\,ZC,JcC<$KE't)r;b)8rVughrrC)4j]:hZpK$Ths)%H/qdTA<s'l!DqdTM at o4%`E
+o54MPokjSNq-s)8qdT58rHS'GgMQUmokjMLo4%$&qfr'?cXQnieRI?8pIk8\rr at WMe,T at HJcDGD
+rrAaBrr at WMg].3Pp&Fsjn,NCfq>^BnhuE]Vl2U\^JcC<$NW9$Ds-W>Al&,Fhs,-i9pPS3bq1AQp
+s,-i+li6tbQiHs]q>T.Is6%f.mJd(_mJbZ7s8)Wkp\O^[l1=f9s5!_Ls8%<HaoDA at JcG?ArrB,"
+J,~>
+jo=uRh>dKT\,ZC,JcC<$KE(=`pOiE'qh+j-o:#WSs02O8s02I6rPnlLrPnf`rVuiPrrE)Ts60:7
+qrmM?S,W*\nc&QoJc:6"mJd-kVuHGjrr at WMe,T at HJcDGDrrAbmrr@WMg].3Pp&Fsjn,NCfq>^Bn
+huE]Vl2U\^JcC<$NW5LHli6tbQiI*:s5F",s7?-Os5Eq-qpYGgrQOr`rQkM^rS%:^qo&NNrOVaB
+o=Fn>s0)7<rS@:hrLrt<rJpc"q4@>BrIt9#rIP!9s,?c.ms=;<ohPNiq+L`=s#5N/aoDA at JcG?A
+rrB,"J,~>
+jo=uRh>dKT\,ZC,JcC<$KE(!2rNa]IrVuiqrrB,!n+6;Qlgt/?p&Fp\q<7kMs/5bcrTNkEs5!;1
+s5!A3qq_)>pZVMGp#uA1p[d/'p%.k?q;(Z6lfe6%rVk.7s/4E=e,K+Arr at WMe,T at HJcDGDrrAaR
+rr at WMg].3Pp&Fsjn,NCfq>^BnhuE]Vl2U\^JcC<$NW9$<s,-?+l'VFFs-WhOpR(3 at q4R\^s-Wh^
+li6tbQiHpuq+KHXrrCF^m7[Bnm7X2iq+LZ%JcEjlrr at WMoDegjX8d\~>
+jo=uRh>dKT\,ZC,JcC<$KE't)r;b)8rVughrrC)4j]:hZpK$Ths)%H/qdTA<s'l!DqdTM at o4%`E
+o54MPokjSNq-s)8qdT58rHS'GgMQUmokjMLo4%$&qfr'?cXQnieRI?8pIk8\rr at WMe,T at HJcDGD
+rrAaBrr at WMg].3Pp&Fsjn,NCfq>^BnhuE]Vl2U\^JcC<$NW9$Ds-W>Al&,Fhs,-i9pPS3bq1AQp
+s,-i+li6tbQiHs]q>T.Is6%f.mJd(_mJbZ7s8)Wkp\O^[l1=f9s5!_Ls8%<HaoDA at JcG?ArrB,"
+J,~>
+jo=uRh>dKT\,ZC,JcC<$KE(=`pOiE'qh+j-o:#WSs02O8s02I6rPnlLrPnf`rVuiPrrE)Ts60:7
+qrmM?S,W*\nc&QoJc:6"mJd-kVuHGjrr at WMe,T at HJcDGDrrAbmrr@WMg].3Pp&Fsjn,NCfq>^Bn
+huE]Vl2U\^JcC<$NW5LHli6tbQiI*:s5F",s7?-Os5Eq-qpYGgrQOr`rQkM^rS%:^qo&NNrOVaB
+o=Fn>s0)7<rS@:hrLrt<rJpc"q4@>BrIt9#rIP!9s,?c.ms=;<ohPNiq+L`=s#5N/aoDA at JcG?A
+rrB,"J,~>
+jo=uRh>dKT\,ZC,JcC<$KE(!2rNa]IrVuiqrrB,!n+6;Qlgt/?p&Fp\q<7kMs/5bcrTNkEs5!;1
+s5!A3qq_)>pZVMGp#uA1p[d/'p%.k?q;(Z6lfe6%rVk.7s/4E=e,K+Arr at WMe,T at HJcDGDrrAaR
+rr at WMg].3Pp&Fsjn,NCfq>^BnhuE]Vl2U\^JcC<$NW9$<s,-?+l'VFFs-WhOpR(3 at q4R\^s-Wh^
+li6tbQiHpuq+KHXrrCF^m7[Bnm7X2iq+LZ%JcEjlrr at WMoDegjX8d\~>
+kPt&PhuE]VJcC<$JcE4ZY=nlqs%E=jqb-qha%PGno4%;lm:,\eq-s5<s'l!Dq-sA at o4%6,s*4-P
+s*43Gq/-"<o54/0pMKk<o54FLrGD.8okjSNnRCg$s*4??VdeCRqc<Mcp&G$lJcF4!rr at WMU&Y,m
+Tn!(BJcFL)r;cNjr;cBfr;cZnr;c6br;cTlrr at WMg&M'PJcD5>q3Co.q3C3%rI=KtkC<;ZrI=j)
+s*seCrrDfnrrADcqu-?ig\q08ci)Prg\q08nbr:[s7cQOrV,RJs7cESrV-?jJcC<$]Dqm2X8d\~>
+kPt&PhuE]VJcC<$JcE4Zm<J#NrJpoHrJp]BrMBCqqn)mJrO`*Ls+^R$rVucNrrD`JrTNY?Sc86\
+nc&QoJc>ECrN_"R_uAunoD\F_rr at WMe,TFJJcDGDrrAbmrr at WMg].3Pp&Fsjnc/Ofq>^BnmJm+b
+p](6nJcFF'rr at WMS,`<_rTC*Wp](6np](6nQiI*Ps5F",q<7k;s47"pqp4f]rQkM^qqCqcrPANX
+pVlg:qo/N;rPnZhq8W)[qi:]$pR_DKpQ5E/rIOp7rJ^c2s)7plms=kLs&nl1ohPNiqb-l=rt^1c
+JcE@^rrB,"J,~>
+kPt&PhuE]VJcC<$JcE4ZYQ"R-s8Musqu6TqWW)M\oD\.KoDeXXqrn(Os/5\as60(Gn`^#/oB?51
+p%/"Cqt'FCp%.qArU]XErLEiMoCMY=qq^f6lfeB)q>R;`c2RD9rr at WMe,TFJJcDGDrrAaRrr at WM
+g].3Pp&Fsjnc/Ofq>^BnmJm+bp](6nJcFF'rr at WMS,`;DrHJ'sl'VFFopFp<q4R\^s-Wh^p](6n
+p](6nQiHpuq+KHXrrC@\fh:'8rrD3trrD'pqb-f%JcC<$]Dqm2X8d\~>
+kPt&PhuE]VJcC<$JcE4ZY=nlqs%E=jqb-qha%PGno4%;lm:,\eq-s5<s'l!Dq-sA at o4%6,s*4-P
+s*43Gq/-"<o54/0pMKk<o54FLrGD.8okjSNnRCg$s*4??VdeCRqc<Mcp&G$lJcF4!rr at WMU&Y,m
+Tn!(BJcFL)r;cNjr;cBfr;cZnr;c6br;cTlrr at WMg&M'PJcD5>q3Co.q3C3%rI=KtkC<;ZrI=j)
+s*seCrrDfnrrADcqu-?ig\q08ci)Prg\q08nbr:[s7cQOrV,RJs7cESrV-?jJcC<$]Dqm2X8d\~>
+kPt&PhuE]VJcC<$JcE4Zm<J#NrJpoHrJp]BrMBCqqn)mJrO`*Ls+^R$rVucNrrD`JrTNY?Sc86\
+nc&QoJc>ECrN_"R_uAunoD\F_rr at WMe,TFJJcDGDrrAbmrr at WMg].3Pp&Fsjnc/Ofq>^BnmJm+b
+p](6nJcFF'rr at WMS,`<_rTC*Wp](6np](6nQiI*Ps5F",q<7k;s47"pqp4f]rQkM^qqCqcrPANX
+pVlg:qo/N;rPnZhq8W)[qi:]$pR_DKpQ5E/rIOp7rJ^c2s)7plms=kLs&nl1ohPNiqb-l=rt^1c
+JcE@^rrB,"J,~>
+kPt&PhuE]VJcC<$JcE4ZYQ"R-s8Musqu6TqWW)M\oD\.KoDeXXqrn(Os/5\as60(Gn`^#/oB?51
+p%/"Cqt'FCp%.qArU]XErLEiMoCMY=qq^f6lfeB)q>R;`c2RD9rr at WMe,TFJJcDGDrrAaRrr at WM
+g].3Pp&Fsjnc/Ofq>^BnmJm+bp](6nJcFF'rr at WMS,`;DrHJ'sl'VFFopFp<q4R\^s-Wh^p](6n
+p](6nQiHpuq+KHXrrC@\fh:'8rrD3trrD'pqb-f%JcC<$]Dqm2X8d\~>
+l2UV\q>^<liW&oXJcF'rrr at WMJcG-;mn<TZ_b:"0s%E=jqb-qha\1GjpL<YnmpbtipL=)<rF5dB
+l!iUgs*43Gqec.<okj_0o4%N4rF5G:ruq8VnRD0.rHRd?m;;Ms^LFTDJcE^hrr at WMU&Y,mTn!(B
+JcFL)r;cNjr;cBfm/ZPRrrDlprr at WMg&M'PJcD5>m?R!pqg\9rkC<;ZrI=d'p](6np](6nRK*0_
+q>T(Gs6%Z*n,E at en,D)?s6&qNp\Opas5<kMl1=`7s7cQiJcERdrr at WMrVultX8d\~>
+l2UV\q>^<liW&oXJcF'rrr at WMJcG-;ms+j`s#9D!s,R&1rJp]Bs/#aarMBOus1A<8s1A<NrO`$J
+s*OdcrVucNrrDfLqrmM?S,W*\n,E?mJc>KEs0 at 4T^]*'\JcE^hrr at WMU&Y,mU&Y,mJcFL)r;cNj
+r;cBfm/ZPRrrDlprr at WMg&M'PJcD5>S,N*]rrDfnrrAJes6p!Hs475Aqrn";s47(rrQkGnn^INa
+s4[LkqqD"eqn`0Rqo/6>qo/H9s2Oljq8WI7q1JL's*4:0s-*2=rIt-9rJ^c2s)7pls*F]oo6U4N
+s&nl1pJ1`kq+L`=rulsn_>jN8JcG]KrrB,"J,~>
+l2UV\q>^<liW&oXJcF'rrr at WMJcG-;n,E9k_uB\As8Musqu6TqV>g5\nc&"Kp&FdXrTO4Os/5,Q
+iTU<tp%/(Eq=F:Cs8MW]q<7eKp#uFGqrmSAp#uA1n+5r1p&;_t[JkaW`W,r<JcDGDrrAaRrr at WM
+g].3Pp&Fsjnc.tVmJm1dq>^HpJcFF'rr at WMS,_l8l^7RFopFp<q4R\^rL!?ZrrDfnrrAJeq\K!#
+fbXSfbnfb at s8VO\gD9ehjVIjrjVIYbr>'ta_>jN8JcG]KrrB,"J,~>
+l2UV\q>^<liW&oXJcF'rrr at WMJcG-;mn<TZ_b:"0s%E=jqb-qha\1GjpL<YnmpbtipL=)<rF5dB
+l!iUgs*43Gqec.<okj_0o4%N4rF5G:ruq8VnRD0.rHRd?m;;Ms^LFTDJcE^hrr at WMU&Y,mTn!(B
+JcFL)r;cNjr;cBfm/ZPRrrDlprr at WMg&M'PJcD5>m?R!pqg\9rkC<;ZrI=d'p](6np](6nRK*0_
+q>T(Gs6%Z*n,E at en,D)?s6&qNp\Opas5<kMl1=`7s7cQiJcERdrr at WMrVultX8d\~>
+l2UV\q>^<liW&oXJcF'rrr at WMJcG-;ms+j`s#9D!s,R&1rJp]Bs/#aarMBOus1A<8s1A<NrO`$J
+s*OdcrVucNrrDfLqrmM?S,W*\n,E?mJc>KEs0 at 4T^]*'\JcE^hrr at WMU&Y,mU&Y,mJcFL)r;cNj
+r;cBfm/ZPRrrDlprr at WMg&M'PJcD5>S,N*]rrDfnrrAJes6p!Hs475Aqrn";s47(rrQkGnn^INa
+s4[LkqqD"eqn`0Rqo/6>qo/H9s2Oljq8WI7q1JL's*4:0s-*2=rIt-9rJ^c2s)7pls*F]oo6U4N
+s&nl1pJ1`kq+L`=rulsn_>jN8JcG]KrrB,"J,~>
+l2UV\q>^<liW&oXJcF'rrr at WMJcG-;n,E9k_uB\As8Musqu6TqV>g5\nc&"Kp&FdXrTO4Os/5,Q
+iTU<tp%/(Eq=F:Cs8MW]q<7eKp#uFGqrmSAp#uA1n+5r1p&;_t[JkaW`W,r<JcDGDrrAaRrr at WM
+g].3Pp&Fsjnc.tVmJm1dq>^HpJcFF'rr at WMS,_l8l^7RFopFp<q4R\^rL!?ZrrDfnrrAJeq\K!#
+fbXSfbnfb at s8VO\gD9ehjVIjrjVIYbr>'ta_>jN8JcG]KrrB,"J,~>
+l2U\^p&FsjiW&oXa8c)<NW9"YJcC<$n,K@[rVu[drrC/6hcB\KqdSqno4%=koj[r<rF5dBq-sA)
+oj[l#okjY.o54#,rGD:<pMKq2o4%T6qdT58ruq8Vmpc$.l!j1"nQ*nDVb>S?rr at WMp&G$lJcDGD
+rrAaBrrDZjo`4=XnGo'Yr;cNjr;cBfm/ZJPrrDrrrrDlpr;_EKJcC<$rVu8Ml\bRhonqp^q1AQp
+rJLW&mJm1dRK*0_qu54Gs6%T(nc&LeoDZ`-q>0p]qt'j^naleTqrn(Ss8%<H_>jN8JcG]KrrB,"
+J,~>
+l2U\^p&FsjiW&oXa8c)<NW9"YJcC<$n,MWsl\#.rq3q>[s-in_qlp+4s2P#Lq8WC5qq_;"rrDfL
+rTNkEp#u5CX8__jn,E?mJc>KEs0 at 4T^&HjZec5XLJcGECrr at WMU&Y,mU&Y,moDeI`li6JTS,`Ee
+p&Fsjnc.tVli6tbqu?Zrq>^BnJcC<$JcG]KRJlOQrrAJes475/s475ArTO:Bs5Eq-qpYSkrRUMf
+rQkMts2=`es2=fNpWWZVs3UMOqo/B7q;(kdrVubIq2YKOpR_>Iq2kW1s-rnQqi(K.qgS3akAU)i
+rE9"js"+1/JcERdrr at WMrVultX8d\~>
+l2U\^p&FsjiW&oXa8c)<NW9"YJcC<$n,KBdrVu]mrrAhnqt'4SoCMSRp%/4IrU^&eq=FXcp%/.]
+p#uARoB>`9rTO"IpZVYVoCMkCqt'LEs.&uMn+6;;l1=H/nc$f)VuG6Hrr at WMp&G$lJcDGDrrAaR
+rrDZjo`4=XnGo'Yr;cNjr;cBfm/ZJPrrDrrrrDlpr;_EKJcC<$rVu8El^7RFopFp<q4R\^rL!V_
+mJm1dRK*."qb,NVrrC4XnOri\o1PPgqb-l'JcERdrr at WMrVultX8d\~>
+l2U\^p&FsjiW&oXa8c)<NW9"YJcC<$n,K@[rVu[drrC/6hcB\KqdSqno4%=koj[r<rF5dBq-sA)
+oj[l#okjY.o54#,rGD:<pMKq2o4%T6qdT58ruq8Vmpc$.l!j1"nQ*nDVb>S?rr at WMp&G$lJcDGD
+rrAaBrrDZjo`4=XnGo'Yr;cNjr;cBfm/ZJPrrDrrrrDlpr;_EKJcC<$rVu8Ml\bRhonqp^q1AQp
+rJLW&mJm1dRK*0_qu54Gs6%T(nc&LeoDZ`-q>0p]qt'j^naleTqrn(Ss8%<H_>jN8JcG]KrrB,"
+J,~>
+l2U\^p&FsjiW&oXa8c)<NW9"YJcC<$n,MWsl\#.rq3q>[s-in_qlp+4s2P#Lq8WC5qq_;"rrDfL
+rTNkEp#u5CX8__jn,E?mJc>KEs0 at 4T^&HjZec5XLJcGECrr at WMU&Y,mU&Y,moDeI`li6JTS,`Ee
+p&Fsjnc.tVli6tbqu?Zrq>^BnJcC<$JcG]KRJlOQrrAJes475/s475ArTO:Bs5Eq-qpYSkrRUMf
+rQkMts2=`es2=fNpWWZVs3UMOqo/B7q;(kdrVubIq2YKOpR_>Iq2kW1s-rnQqi(K.qgS3akAU)i
+rE9"js"+1/JcERdrr at WMrVultX8d\~>
+l2U\^p&FsjiW&oXa8c)<NW9"YJcC<$n,KBdrVu]mrrAhnqt'4SoCMSRp%/4IrU^&eq=FXcp%/.]
+p#uARoB>`9rTO"IpZVYVoCMkCqt'LEs.&uMn+6;;l1=H/nc$f)VuG6Hrr at WMp&G$lJcDGDrrAaR
+rrDZjo`4=XnGo'Yr;cNjr;cBfm/ZJPrrDrrrrDlpr;_EKJcC<$rVu8El^7RFopFp<q4R\^rL!V_
+mJm1dRK*."qb,NVrrC4XnOri\o1PPgqb-l'JcERdrr at WMrVultX8d\~>
+l2U\^p&FsjiW&oXJcC<$JcEF`Vb@!gq+L_fa\1Mlqb-lsm8igfp&FDgrtbK at rDrT#rDrT.rDrN,
+s&S`#s)%F<q/-"0oj[l:pL<Z0m:,m.rDr5nokj(seRG.Dec5XLJcGECrr at WMU&Y,mTn!(Bp&FO^
+mJl\VRK*3cq>^<ljo>8Zjo>8Zs8W*!JcC<$JcGQGr;cfrn!3p9s+g!!qg\9rja[/ZrI=d's*X56
+rrAJerVcQkfDYa4bPh&3qu?9e`VoW/kP+lFrV-9Ss7?9bs8 at NK^]464KE(rOX8d\~>
+l2U\^p&FsjiW&oXJcC<$JcEF`hg"gHrJpoHs,R&Hs,R,Jqka7qpUgIFs1A6LrVuoRs2P#brrDlN
+qrn"Ms5!)+naj*dp&FFYs0 at 4TJc<"Th=K1srr at WMp&G$lJcDGDrrAbmrrD`lnGqtVnGo!Wr;cZn
+qZ,aXr;bsZr;cltrr at WMJcC<$q>^BnrVr;amJm1dRK*<Rs5EqJrTO:Bs5Eq-qpYGnn^IH_s4[Lk
+q:bkeqn`$Ns4@:tq7?=>rNH7?q;(qfqu?VIpQ#9coq)2Iq2kW1rL<bQqi(K.qgS-_kAU/kqcWeh
+s#9ruJcELbr;_KMrrB,"J,~>
+l2U\^p&FsjiW&oXJcC<$JcEF`VuHYpq>UBoU&P#^mJc_Kp&FFNs/5bcrVlK]rVlKRrVlEPs8MW]
+s60.Iq<7_Tp%/.Gp[dq=mIU/;rVl-Sp#tfBeaoF4ec5XLJcGECrr at WMU&Y,mTo]3Rp&FO^mJl\V
+RK*3cq>^<ljo>8Zjo>8Zs8W*!JcC<$JcGQGr;cfrmu@@0s.&JDqkWnPjeVdHrM9CZs/58arrAJe
+r>,3%f,"Adb80\Bqu?7\R25Zmr>'ta^]464KE(rOX8d\~>
+l2U\^p&FsjiW&oXJcC<$JcEF`Vb@!gq+L_fa\1Mlqb-lsm8igfp&FDgrtbK at rDrT#rDrT.rDrN,
+s&S`#s)%F<q/-"0oj[l:pL<Z0m:,m.rDr5nokj(seRG.Dec5XLJcGECrr at WMU&Y,mTn!(Bp&FO^
+mJl\VRK*3cq>^<ljo>8Zjo>8Zs8W*!JcC<$JcGQGr;cfrn!3p9s+g!!qg\9rja[/ZrI=d's*X56
+rrAJerVcQkfDYa4bPh&3qu?9e`VoW/kP+lFrV-9Ss7?9bs8 at NK^]464KE(rOX8d\~>
+l2U\^p&FsjiW&oXJcC<$JcEF`hg"gHrJpoHs,R&Hs,R,Jqka7qpUgIFs1A6LrVuoRs2P#brrDlN
+qrn"Ms5!)+naj*dp&FFYs0 at 4TJc<"Th=K1srr at WMp&G$lJcDGDrrAbmrrD`lnGqtVnGo!Wr;cZn
+qZ,aXr;bsZr;cltrr at WMJcC<$q>^BnrVr;amJm1dRK*<Rs5EqJrTO:Bs5Eq-qpYGnn^IH_s4[Lk
+q:bkeqn`$Ns4@:tq7?=>rNH7?q;(qfqu?VIpQ#9coq)2Iq2kW1rL<bQqi(K.qgS-_kAU/kqcWeh
+s#9ruJcELbr;_KMrrB,"J,~>
+l2U\^p&FsjiW&oXJcC<$JcEF`VuHYpq>UBoU&P#^mJc_Kp&FFNs/5bcrVlK]rVlKRrVlEPs8MW]
+s60.Iq<7_Tp%/.Gp[dq=mIU/;rVl-Sp#tfBeaoF4ec5XLJcGECrr at WMU&Y,mTo]3Rp&FO^mJl\V
+RK*3cq>^<ljo>8Zjo>8Zs8W*!JcC<$JcGQGr;cfrmu@@0s.&JDqkWnPjeVdHrM9CZs/58arrAJe
+r>,3%f,"Adb80\Bqu?7\R25Zmr>'ta^]464KE(rOX8d\~>
+g&M!NiW&oXfDkdLJcC<$JcG-;q+LYdZV18spIkMd_b9/npIjaOpL<aoo4%`#rF5dBqdTG'q-s/#
+q/,q.pMKk0j^S+(q,ZZfo54).r>,?@qec42lXKU*lW2hNQV6TCr;_EKj8],ZJcDGDrrAa2rrDfn
+qZ-HlqZ-*br;_iWr;cZnr;bmXr;bgVr;_EKJcDkPrrC+>nWj'9rJ0j!qg\9rja[/Zqg\X's*sG9
+rrAPgqu-EkfDY[2ao1o3q>^3g_u9?+s7cEemJ$SNs7cESs7cQia8c/>JcC<$q>^HpX8d\~>
+g&M!NiW&oXfDkdLJcC<$JcG-;rGDLXr at I8Zon3(#rL3bHs-itas-itaqlon.s2P)NrPng9s5!^p
+qpGEDq;)#5qq^Z'l1;OdoDe4Ws0 at 4TkPkFcJc='rh=Kn2r;_EKj8],ZJcDGDrrAbmrrDfnqZ-Hl
+qZ-*br;_iWr;cZnr;bmXr;bgVr;_EKJcDkPrrC+>RJlOQrrAPgs7?3Js7?3Qs5a.;s47(rq:>)b
+rQkG\pY,S^p!!Bdq7?=>rNH1=qq_.hq>^JIq2YEcs/#I]rKI,?qj[JMqi(K1qgS3aj_t#kqcWeh
+s"+0na8c/>JcC<$q>^HpX8d\~>
+g&M!NiW&oXfDkdLJcC<$JcG-;q>U>uZi9q'p\t0mL]7&>oDeFRs8Mugs/5bcqu6E_q>U3Rq>U-P
+rVkpMqrmkTkO\</oCMpYrU]pMqu5pQpZUrBh=I!4l2U\^JcFd1rr at WMU&Y,mTqD>bp](*jq>^<l
+n,N=dNW8qWq>^Bnj8]&XiW&iVJcC<$XoJD$a8b[hrK7&Kn!O!JopFj:qk3h^s-Wh^mJm1dS,`@$
+qb,NVr;aqToh5,\pIghgqb-l'a8c/>JcC<$q>^HpX8d\~>
+g&M!NiW&oXfDkdLJcC<$JcG-;q+LYdZV18spIkMd_b9/npIjaOpL<aoo4%`#rF5dBqdTG'q-s/#
+q/,q.pMKk0j^S+(q,ZZfo54).r>,?@qec42lXKU*lW2hNQV6TCr;_EKj8],ZJcDGDrrAa2rrDfn
+qZ-HlqZ-*br;_iWr;cZnr;bmXr;bgVr;_EKJcDkPrrC+>nWj'9rJ0j!qg\9rja[/Zqg\X's*sG9
+rrAPgqu-EkfDY[2ao1o3q>^3g_u9?+s7cEemJ$SNs7cESs7cQia8c/>JcC<$q>^HpX8d\~>
+g&M!NiW&oXfDkdLJcC<$JcG-;rGDLXr at I8Zon3(#rL3bHs-itas-itaqlon.s2P)NrPng9s5!^p
+qpGEDq;)#5qq^Z'l1;OdoDe4Ws0 at 4TkPkFcJc='rh=Kn2r;_EKj8],ZJcDGDrrAbmrrDfnqZ-Hl
+qZ-*br;_iWr;cZnr;bmXr;bgVr;_EKJcDkPrrC+>RJlOQrrAPgs7?3Js7?3Qs5a.;s47(rq:>)b
+rQkG\pY,S^p!!Bdq7?=>rNH1=qq_.hq>^JIq2YEcs/#I]rKI,?qj[JMqi(K1qgS3aj_t#kqcWeh
+s"+0na8c/>JcC<$q>^HpX8d\~>
+g&M!NiW&oXfDkdLJcC<$JcG-;q>U>uZi9q'p\t0mL]7&>oDeFRs8Mugs/5bcqu6E_q>U3Rq>U-P
+rVkpMqrmkTkO\</oCMpYrU]pMqu5pQpZUrBh=I!4l2U\^JcFd1rr at WMU&Y,mTqD>bp](*jq>^<l
+n,N=dNW8qWq>^Bnj8]&XiW&iVJcC<$XoJD$a8b[hrK7&Kn!O!JopFj:qk3h^s-Wh^mJm1dS,`@$
+qb,NVr;aqToh5,\pIghgqb-l'a8c/>JcC<$q>^HpX8d\~>
+g].3PhuE]VJcC<$RK*9eX8f(jqu?C`rrBf,lW3[OkuRUhp&FVmrDrl+rtbQBq,[<#q,[<.q,[<.
+qc<;ts&S`#rGD at 2k@4+$s&SAns)%R4l!jU.j]:JPO%Y'(aoDA at JcDGDrrAa2rrDfnr;cNjr;c<d
+r;_cUo)SUdr;c<dr;baTrr at WMJcDkPrrCmTrrDHds,-K7qi^c1o8<EppPS!\rIXips,-i+mJm1d
+S,`Hcqu5.ErTD6"p\speq>S5/qtg?kq>1!_rS[ACs7?3`rTO4Va8c/>JcC<$rVults8W*!X8d\~>
+g].3PhuE]VJcC<$RK*9eX8hp2l$2`NrJpiFs,R,Js/#aas/#b"s/#b"o=P%Bqu?W7rR(Z$rrDrP
+s6045mHE['^]*p+li-piJc:6"Z2WSNJcEjlrr at WMU&Y,mU&Y,mp](0lp&Fsjn,N=dMuWAKq>^Bn
+n,N=dhuE]VJcC<$XoJD$h>dKTmJiUQmJm1dS,`NTs5EqJs60FBrSde-s3pr"rTsL6o@*Zas4[Fi
+q:bl#rPA0Nqq(karOVaBrNH+;qq_4jp](&LrO`*+pR_>IrK-uTrL<\Oqi(K1qgS3am;Mr+qeu@,
+qcWkjs"+1/a8c/>JcC<$rVults8W*!X8d\~>
+g].3PhuE]VJcC<$RK*9eX8f*squ?Eirr at cPq=F:ZoCMq[rU^&erU]jaq=FF]q<7YRq<7_ToCN"]
+oCMqEq>TRKp#uGTl1=r=q>TXMrTNABjn"Q4JcEjlrr at WMU&Y,mTqD>bp](0lp&Fsjn,N=dMuWAK
+q>^Bnn,N=dhuE]VJcC<$XoJD$h>dKTmJm3Roo8j2q4.&DqkWtRj.uXHq5"%Xs.o&^rrAPgr>,9'
+eJA)``tnDBp](%^WttX6mhYjpr>*HRrr at WMJcG]KrrE*!rrB,"J,~>
+g].3PhuE]VJcC<$RK*9eX8f(jqu?C`rrBf,lW3[OkuRUhp&FVmrDrl+rtbQBq,[<#q,[<.q,[<.
+qc<;ts&S`#rGD at 2k@4+$s&SAns)%R4l!jU.j]:JPO%Y'(aoDA at JcDGDrrAa2rrDfnr;cNjr;c<d
+r;_cUo)SUdr;c<dr;baTrr at WMJcDkPrrCmTrrDHds,-K7qi^c1o8<EppPS!\rIXips,-i+mJm1d
+S,`Hcqu5.ErTD6"p\speq>S5/qtg?kq>1!_rS[ACs7?3`rTO4Va8c/>JcC<$rVults8W*!X8d\~>
+g].3PhuE]VJcC<$RK*9eX8hp2l$2`NrJpiFs,R,Js/#aas/#b"s/#b"o=P%Bqu?W7rR(Z$rrDrP
+s6045mHE['^]*p+li-piJc:6"Z2WSNJcEjlrr at WMU&Y,mU&Y,mp](0lp&Fsjn,N=dMuWAKq>^Bn
+n,N=dhuE]VJcC<$XoJD$h>dKTmJiUQmJm1dS,`NTs5EqJs60FBrSde-s3pr"rTsL6o@*Zas4[Fi
+q:bl#rPA0Nqq(karOVaBrNH+;qq_4jp](&LrO`*+pR_>IrK-uTrL<\Oqi(K1qgS3am;Mr+qeu@,
+qcWkjs"+1/a8c/>JcC<$rVults8W*!X8d\~>
+g].3PhuE]VJcC<$RK*9eX8f*squ?Eirr at cPq=F:ZoCMq[rU^&erU]jaq=FF]q<7YRq<7_ToCN"]
+oCMqEq>TRKp#uGTl1=r=q>TXMrTNABjn"Q4JcEjlrr at WMU&Y,mTqD>bp](0lp&Fsjn,N=dMuWAK
+q>^Bnn,N=dhuE]VJcC<$XoJD$h>dKTmJm3Roo8j2q4.&DqkWtRj.uXHq5"%Xs.o&^rrAPgr>,9'
+eJA)``tnDBp](%^WttX6mhYjpr>*HRrr at WMJcG]KrrE*!rrB,"J,~>
+huEKPhuE]Vjo>>\JcC<$\,ZI.Z2ab&V+^deoh5;b]1_ZpnOr+IrF5Bus&Sl'q,[N)rtbQBq,[B%
+oiD$.pK%*,q,[6!rDrN!s)%F0pL=/'o4%N4rDr/loiCBfs)$dslXK*OrrAfeJcEpnr;_EKU&Y,m
+Tl9r2p](0lp&Fsjn,N=dM?!AOp&Fsjn,N=dhuE]VJcC<$M?!SUmJldCq3(Q/o8<EppPS!\s+9up
+s,-i+mJm1dS,`Hcqu5(Cs6%B"qu69gq>S5/rVHKkq>04IrTO:Qs7cQlJcC<$_uK`:s8W*!X8d\~>
+huEKPhuE]Vjo>>\JcC<$\,ZI.Z2ab&mqqT>nUpe#s-inHqjRP]s02O"s02O8s0270rPng9rPnf`
+rS at JRrS@M$pYG6#ht+hdoDe.Us0 at 4TJc>'9s0B]Eh=H3tbQ%M at JcDGDrrAbmrrDfnr;cNjr;c<d
+r;_]Sq#L*fr;c<dr;baTrr at WMJcCT,rrDHdQi6=OrrAPgs7?9LrU^'QrT+";rRV#FrU9XMrTX"(
+rQkGrs2=`erR_(cpWWHbrPANFpVm*7q8N<gs2Oa3q2YEcrMB=]qih&ArMKI]rL!D>s,$Q#pNkk<
+qbI#kqb-rJs"As'JcEXfrrE*!rrB,"J,~>
+huEKPhuE]Vjo>>\JcC<$\,ZI.Z2ab&V>gGnp&=skKDti at oDejip[e4[s7?8grU]jaqt'L[rTO"T
+q<7YRp[e at _oCN"Gp&=^Ws8MW]q<7eVl1=TIlgt/?j8SB9l2L^gU],iEbQ%M at JcDGDrrAabrrDfn
+r;cNjr;c<dr;_]Sq#L*fr;c<dr;baTrr at WMJcCT,rrDHdo8WR.q4.&DqkWtRj.u^JpS at hVs.o&^
+rrAPgr>,9'dh_r``>8>Dp&Fh\Pns6ir>'taJcEXfrrE*!rrB,"J,~>
+huEKPhuE]Vjo>>\JcC<$\,ZI.Z2ab&V+^deoh5;b]1_ZpnOr+IrF5Bus&Sl'q,[N)rtbQBq,[B%
+oiD$.pK%*,q,[6!rDrN!s)%F0pL=/'o4%N4rDr/loiCBfs)$dslXK*OrrAfeJcEpnr;_EKU&Y,m
+Tl9r2p](0lp&Fsjn,N=dM?!AOp&Fsjn,N=dhuE]VJcC<$M?!SUmJldCq3(Q/o8<EppPS!\s+9up
+s,-i+mJm1dS,`Hcqu5(Cs6%B"qu69gq>S5/rVHKkq>04IrTO:Qs7cQlJcC<$_uK`:s8W*!X8d\~>
+huEKPhuE]Vjo>>\JcC<$\,ZI.Z2ab&mqqT>nUpe#s-inHqjRP]s02O"s02O8s0270rPng9rPnf`
+rS at JRrS@M$pYG6#ht+hdoDe.Us0 at 4TJc>'9s0B]Eh=H3tbQ%M at JcDGDrrAbmrrDfnr;cNjr;c<d
+r;_]Sq#L*fr;c<dr;baTrr at WMJcCT,rrDHdQi6=OrrAPgs7?9LrU^'QrT+";rRV#FrU9XMrTX"(
+rQkGrs2=`erR_(cpWWHbrPANFpVm*7q8N<gs2Oa3q2YEcrMB=]qih&ArMKI]rL!D>s,$Q#pNkk<
+qbI#kqb-rJs"As'JcEXfrrE*!rrB,"J,~>
+huEKPhuE]Vjo>>\JcC<$\,ZI.Z2ab&V>gGnp&=skKDti at oDejip[e4[s7?8grU]jaqt'L[rTO"T
+q<7YRp[e at _oCN"Gp&=^Ws8MW]q<7eVl1=TIlgt/?j8SB9l2L^gU],iEbQ%M at JcDGDrrAabrrDfn
+r;cNjr;c<dr;_]Sq#L*fr;c<dr;baTrr at WMJcCT,rrDHdo8WR.q4.&DqkWtRj.u^JpS at hVs.o&^
+rrAPgr>,9'dh_r``>8>Dp&Fh\Pns6ir>'taJcEXfrrE*!rrB,"J,~>
+iW&cTmJm1dnc/UhkPtP^JcC<$JcF^/V+^deo1T)`[nHBpmn;tIrF5I"rDrZ%q,[N)rtbWDoiD$#
+oiD$.oiD$.pK%*!qc<;to2bZrqc<B!qec42lXKleoiCHhs%D<OnRCNOrrAfeJcEpnr;_EKU]9ue
+[;YX:kPtJ\n,NCfs8VfnJcEXfrr at WMJcC<$oDeKKq3(E+onrQpq23dRs,-i+mJm1dScAZequ5"A
+s6%;urVlEgrVj5'q>0:Kqrn"TJcE"TrrA2]rrB,"J,~>
+iW&cTmJm1dnc/UhkPtP^JcC<$JcF^/j_a[8pOi4#s-itJs-itas-itaqlp%2rNQ=6rPng9qo8T^
+rS at JRrR(;omHE<rao:u5l2L^gJc:6"mJd-ka8XodJcEpnr;_EKU]9ue[K#gukPtJ\n,NCfs8Vfn
+JcEXfrr at WMJcC<$oDb0UmJm1dScA`]s5F"Ws7?9SqrIe9s7cKgrU9XMqs!k(rQkGrs2=`erR_(c
+pWWHbrPANXl,E\Ys2O[1rJpceqka1]rKI8Iqkj7[rL!D>s,$Q#q0N'iiG\ZiqcWehs"+1/JcE"T
+rrA2]rrB,"J,~>
+iW&cTmJm1dnc/UhkPtP^JcC<$JcF^/V>gGnoD\aiKDti at p&G!ip[e4[s7?8gs7>p_rU]^]rTNqR
+rTO"Tq=FL_oCMSQq=FL_p%/(Equ5pQoD\.Khu<0;j8T(aU],iEbQ%M at JcDMFo`2Clo)RtRr;c<d
+rrE*!pAfdE_uK`:JcC<$JcG?Aoo8d0opk]Bq5!hRf;/G6s.o&^rrAVir>,9'd2)`^_\W2DoDeb^
+P8=$gr>'taZ2ah(OoPF]X8d\~>
+iW&cTmJm1dnc/UhkPtP^JcC<$JcF^/V+^deo1T)`[nHBpmn;tIrF5I"rDrZ%q,[N)rtbWDoiD$#
+oiD$.oiD$.pK%*!qc<;to2bZrqc<B!qec42lXKleoiCHhs%D<OnRCNOrrAfeJcEpnr;_EKU]9ue
+[;YX:kPtJ\n,NCfs8VfnJcEXfrr at WMJcC<$oDeKKq3(E+onrQpq23dRs,-i+mJm1dScAZequ5"A
+s6%;urVlEgrVj5'q>0:Kqrn"TJcE"TrrA2]rrB,"J,~>
+iW&cTmJm1dnc/UhkPtP^JcC<$JcF^/j_a[8pOi4#s-itJs-itas-itaqlp%2rNQ=6rPng9qo8T^
+rS at JRrR(;omHE<rao:u5l2L^gJc:6"mJd-ka8XodJcEpnr;_EKU]9ue[K#gukPtJ\n,NCfs8Vfn
+JcEXfrr at WMJcC<$oDb0UmJm1dScA`]s5F"Ws7?9SqrIe9s7cKgrU9XMqs!k(rQkGrs2=`erR_(c
+pWWHbrPANXl,E\Ys2O[1rJpceqka1]rKI8Iqkj7[rL!D>s,$Q#q0N'iiG\ZiqcWehs"+1/JcE"T
+rrA2]rrB,"J,~>
+iW&cTmJm1dnc/UhkPtP^JcC<$JcF^/V>gGnoD\aiKDti at p&G!ip[e4[s7?8gs7>p_rU]^]rTNqR
+rTO"Tq=FL_oCMSQq=FL_p%/(Equ5pQoD\.Khu<0;j8T(aU],iEbQ%M at JcDMFo`2Clo)RtRr;c<d
+rrE*!pAfdE_uK`:JcC<$JcG?Aoo8d0opk]Bq5!hRf;/G6s.o&^rrAVir>,9'd2)`^_\W2DoDeb^
+P8=$gr>'taZ2ah(OoPF]X8d\~>
+jo>2XkPtJ\p&G$lJcC<$JcF:#rrD`lUJ(RcrrD^brrBH"q,ZfSlW3WWqc<T'oiD).o2bm#o2bm.
+o2bg,oiCs!q,[/ts%E#cqdTA%oj[l:q,ZllrCd#gr<rX+mpc5giE#V\JP5r7h>dERJcG?Arr at WM
+U&Y,mTl9r2l2U\^n,MhVJcE^hrr at WMg&M'PJcEXfr;baTs,-Q9q3(E+pPS]pq23XNq>^Hpp](6n
+ScAZerVk.As6%5ss8MQgs8LRIs6&G at q>04IrTO:Qs8%<HYQ+V&PQ1X_X8d\~>
+jo>2XkPtJ\p&G$lJcC<$JcF:#rrD`ls'k/.om$4`s,R,3pQ#->qka7qs1A66rO`*Ls1A70s*Odc
+rR(T"s2P'=rR(AqmHE0nc2R>7l2L^gJc=:#rN_"Rh>Z7%h>dERJcG?Arr at WMU&Y,mU&Y,ml2U\^
+n,MhVJcE^hrr at WMg&M'PJcEXfr;baTQi6a[rrDfnrrAVis7?9LrU^'QrT+";s7cQlrVHQ_q<[k?
+qpYMirS%:iqqCr!s5Ndsq:GS]rQONFs2OU/s,QoerMB=]s-*D`rMKC[s-WbDs*"F$s,$Q#qg/3i
+hf&Niq-!Sfs#5N/YQ+V&PQ1X_X8d\~>
+jo>2XkPtJ\p&G$lJcC<$JcF:#rrD`lU]15ls0D=srr at WLoDe^eqt'L[s/5Jfs7>j]s60(RrTNqR
+qt'X_p%.eSqt'X_p%/.Gq>TdQp\t,ss8MKYh>[*=Jc>WIh>dERJcG?Arr at WMU&Y,mTqD>bl2U\^
+n,MhVJcE^hrr at WMg&M'PJcEXfr;baTs-WP?q2t??pR(]Nq3]X,q>^Hpp](6nScAX(rCd/.d2)`^
+_&!&Dnc/V^eJA/b^D?]>rt^1cYQ+V&PQ1X_X8d\~>
+jo>2XkPtJ\p&G$lJcC<$JcF:#rrD`lUJ(RcrrD^brrBH"q,ZfSlW3WWqc<T'oiD).o2bm#o2bm.
+o2bg,oiCs!q,[/ts%E#cqdTA%oj[l:q,ZllrCd#gr<rX+mpc5giE#V\JP5r7h>dERJcG?Arr at WM
+U&Y,mTl9r2l2U\^n,MhVJcE^hrr at WMg&M'PJcEXfr;baTs,-Q9q3(E+pPS]pq23XNq>^Hpp](6n
+ScAZerVk.As6%5ss8MQgs8LRIs6&G at q>04IrTO:Qs8%<HYQ+V&PQ1X_X8d\~>
+jo>2XkPtJ\p&G$lJcC<$JcF:#rrD`ls'k/.om$4`s,R,3pQ#->qka7qs1A66rO`*Ls1A70s*Odc
+rR(T"s2P'=rR(AqmHE0nc2R>7l2L^gJc=:#rN_"Rh>Z7%h>dERJcG?Arr at WMU&Y,mU&Y,ml2U\^
+n,MhVJcE^hrr at WMg&M'PJcEXfr;baTQi6a[rrDfnrrAVis7?9LrU^'QrT+";s7cQlrVHQ_q<[k?
+qpYMirS%:iqqCr!s5Ndsq:GS]rQONFs2OU/s,QoerMB=]s-*D`rMKC[s-WbDs*"F$s,$Q#qg/3i
+hf&Niq-!Sfs#5N/YQ+V&PQ1X_X8d\~>
+jo>2XkPtJ\p&G$lJcC<$JcF:#rrD`lU]15ls0D=srr at WLoDe^eqt'L[s/5Jfs7>j]s60(RrTNqR
+qt'X_p%.eSqt'X_p%/.Gq>TdQp\t,ss8MKYh>[*=Jc>WIh>dERJcG?Arr at WMU&Y,mTqD>bl2U\^
+n,MhVJcE^hrr at WMg&M'PJcEXfr;baTs-WP?q2t??pR(]Nq3]X,q>^Hpp](6nScAX(rCd/.d2)`^
+_&!&Dnc/V^eJA/b^D?]>rt^1cYQ+V&PQ1X_X8d\~>
+kPtDZiW&cTqu?Zrp](0lJcFR+rr at WMMuWeWp&Cd[rVumjrrD^brrB;srDr/Um8io[q,[B%oiD).
+o2blao2blaj&Z+fpK%#trCc`_rF5S'o4%`:rDrq+rDrGtq+LB]o4%MgiE#hbJP5f3JcEpnrr at WM
+U&Y,mTl9r2mJlt^n,N=dp](*jJcEdjrr at WMg&M'PJcD;@s,-Q9q3(E+pPS]pq23XNs*X_DrrDfn
+rrAVis8Dioci*n,_>Wj&e,B=0iViTKn+Zk?qtL'Qs7?9es8 at NKa8c/>JcG]KrrB,"J,~>
+kPtDZiW&cTqu?Zrp](0lJcFR+rr at WMMuWeWp&Fhsm;;N at o7QdtqjRDYrNQ=6s/#b"rO`*Ls1A70
+s2P(cs2P#brPnlbrrE)Hp"f$!e+:udp&F4Ss0 at 4Tq>UE"Jc<4Zh=H3tbQ%SBJcDGDrrAbmrrDHd
+q#Km`r;cTlqZ)3Ia8c/>JcFF'rr at WMSc=uRqu?Zrp](6nScA`]s8MugqrI_Ms8DuorU9XMp$)MF
+s4RA%qr.Rts5Eq1qq(l-pWWB`s2"TVlc&>mpUg=!qk!hRrN6$qq4%>Ms,?u$rJ^c5q0r?iqgSQk
+iG\`ks$QZdqb-rJs"As'a8c/>JcG]KrrB,"J,~>
+kPtDZiW&cTqu?Zrp](0lJcFR+rr at WMMuWeWp&CfdrVuoss0D=srr at WLp&Fjeqt'L[s/3d6rU]d_
+p[dkQrU]jaoCN"GrVli&rVl?YmJc_Kg&Cm?Jc>KEJcEpnrr at WMU&Y,mTqD>bmJlt^n,N=dp](*j
+JcEdjrr at WMg&M'PJcD;@s-WP?q2t??pR(]Nq3]X,s/5borrDfnrrAVirtbK)cPHN\_%uM>dh_r`
+`tn[Tq\K'%r>'taa8c/>JcG]KrrB,"J,~>
+kPtDZiW&cTqu?Zrp](0lJcFR+rr at WMMuWeWp&Cd[rVumjrrD^brrB;srDr/Um8io[q,[B%oiD).
+o2blao2blaj&Z+fpK%#trCc`_rF5S'o4%`:rDrq+rDrGtq+LB]o4%MgiE#hbJP5f3JcEpnrr at WM
+U&Y,mTl9r2mJlt^n,N=dp](*jJcEdjrr at WMg&M'PJcD;@s,-Q9q3(E+pPS]pq23XNs*X_DrrDfn
+rrAVis8Dioci*n,_>Wj&e,B=0iViTKn+Zk?qtL'Qs7?9es8 at NKa8c/>JcG]KrrB,"J,~>
+kPtDZiW&cTqu?Zrp](0lJcFR+rr at WMMuWeWp&Fhsm;;N at o7QdtqjRDYrNQ=6s/#b"rO`*Ls1A70
+s2P(cs2P#brPnlbrrE)Hp"f$!e+:udp&F4Ss0 at 4Tq>UE"Jc<4Zh=H3tbQ%SBJcDGDrrAbmrrDHd
+q#Km`r;cTlqZ)3Ia8c/>JcFF'rr at WMSc=uRqu?Zrp](6nScA`]s8MugqrI_Ms8DuorU9XMp$)MF
+s4RA%qr.Rts5Eq1qq(l-pWWB`s2"TVlc&>mpUg=!qk!hRrN6$qq4%>Ms,?u$rJ^c5q0r?iqgSQk
+iG\`ks$QZdqb-rJs"As'a8c/>JcG]KrrB,"J,~>
+kPtDZiW&cTqu?Zrp](0lJcFR+rr at WMMuWeWp&CfdrVuoss0D=srr at WLp&Fjeqt'L[s/3d6rU]d_
+p[dkQrU]jaoCN"GrVli&rVl?YmJc_Kg&Cm?Jc>KEJcEpnrr at WMU&Y,mTqD>bmJlt^n,N=dp](*j
+JcEdjrr at WMg&M'PJcD;@s-WP?q2t??pR(]Nq3]X,s/5borrDfnrrAVirtbK)cPHN\_%uM>dh_r`
+`tn[Tq\K'%r>'taa8c/>JcG]KrrB,"J,~>
+kPtJ\g&M!Ns8W*!JcF'rrr at WMJcGcMThG@anOrl^PtURHoDePcs'kS#rrDXks%Dras%Dras%Dra
+s'kY%q-s4oo2bm#oiC`pqc<_)rDrN!pIk0[pL<egiDtM&o1Rd:rr at WMp&G$lJcDGDrrAa2rrDNf
+qZ,CNr;_EKa8c/>JcC<$VuQbsci=$&q3C];o8!.!pOE!rdsqCFn,NCfTE"lgrVk(?s6%5ss8MQg
+s8KA'q>0LQs5<eKrTO4VJcEdjrr at WMrVultX8d\~>
+kPtJ\g&M!Ns8W*!JcF'rrr at WMJcGcMnRD0.om$@drHS3lpQ#->qka=ss1A<-rNQ+0rVui9s3^Y^
+s3^iHs3^SsmHDmfec,1?kPkLeJc>KEs0 at 4T\c1FVg&M'PJcGECrr at WMU&Y,mU&Y,mn,N7bg].3P
+JcEdjrr at WMJcDYJrrCCFQ2U1OrrA\ks7cQ[s8MugrT+"Ts7cKjs8)]_qs=4Es7?'TrRUl)s2t)p
+s4@;1q98N`s2"HRs2G#bo>Ua6nc/XFq7HO#rLX%_q5s[oq4%DUs-WV at s,$>rrKR>EiG\`ks$QZd
+rCd)JJcEdjrr at WMrVultX8d\~>
+kPtJ\g&M!Ns8W*!JcF'rrr at WMJcGcMU&P#jnc&OgKDtKBp\t3aoD\cq_uB]-p&=dYmJd.Wp&=XU
+qu6W$rVlE[li-YMJc<^hg&M'PJcGECrr at WMU&Y,mTqD>bn,N7bg].3PJcEdjrr at WMJcDYJrrCCF
+s-WVApQ>';q3^oPq3]X,s/5>crrA\kruqCXrCd/.cPHN\_&!&Dnc/V^QPTT$q\K-'r>'taa8c/>
+JcG]KrrB,"J,~>
+kPtJ\g&M!Ns8W*!JcF'rrr at WMJcGcMThG@anOrl^PtURHoDePcs'kS#rrDXks%Dras%Dras%Dra
+s'kY%q-s4oo2bm#oiC`pqc<_)rDrN!pIk0[pL<egiDtM&o1Rd:rr at WMp&G$lJcDGDrrAa2rrDNf
+qZ,CNr;_EKa8c/>JcC<$VuQbsci=$&q3C];o8!.!pOE!rdsqCFn,NCfTE"lgrVk(?s6%5ss8MQg
+s8KA'q>0LQs5<eKrTO4VJcEdjrr at WMrVultX8d\~>
+kPtJ\g&M!Ns8W*!JcF'rrr at WMJcGcMnRD0.om$@drHS3lpQ#->qka=ss1A<-rNQ+0rVui9s3^Y^
+s3^iHs3^SsmHDmfec,1?kPkLeJc>KEs0 at 4T\c1FVg&M'PJcGECrr at WMU&Y,mU&Y,mn,N7bg].3P
+JcEdjrr at WMJcDYJrrCCFQ2U1OrrA\ks7cQ[s8MugrT+"Ts7cKjs8)]_qs=4Es7?'TrRUl)s2t)p
+s4@;1q98N`s2"HRs2G#bo>Ua6nc/XFq7HO#rLX%_q5s[oq4%DUs-WV at s,$>rrKR>EiG\`ks$QZd
+rCd)JJcEdjrr at WMrVultX8d\~>
+kPtJ\g&M!Ns8W*!JcF'rrr at WMJcGcMU&P#jnc&OgKDtKBp\t3aoD\cq_uB]-p&=dYmJd.Wp&=XU
+qu6W$rVlE[li-YMJc<^hg&M'PJcGECrr at WMU&Y,mTqD>bn,N7bg].3PJcEdjrr at WMJcDYJrrCCF
+s-WVApQ>';q3^oPq3]X,s/5>crrA\kruqCXrCd/.cPHN\_&!&Dnc/V^QPTT$q\K-'r>'taa8c/>
+JcG]KrrB,"J,~>
+l2U\^e,T at HJcC<$JcFp5r;c0`ThG at amn<Z\P=tFHp&F,SrrD^mqb-Zaqb-T_s%DBQqdT at ok>q=d
+s%E#coj[SeoiClto1S+EJP5H)g].9RJcGECrr at WMU&Y,mTl9r2oDe[ffDkdLJcEdjrr at WMJcD_L
+rrC=Ds,-W;pQG-'q24orqhijPs,-i(n,NCfTE"riqu4k=s6%5srVlEgrVj5'q>04Is7?9Ss7?9h
+JcDMFrrAbmrrB,"J,~>
+l2U\^e,T at HJcC<$JcFp5r;c0`m:,m.pNZ^Tom$Ffs,R,3q2YEBqka7qs/#[uq7HV*o>^aVrrD`J
+q<7;'e+;2jp&F.Qs0 at 4TS,WHZU&OHCjk\\krr at WMp&G$lJcDGDrrAbmrrDZjqZ,7Jr;_EKa8c/>
+JcC<$WW2tuc2X(-n,NCfTE"r_rVligs60LDs8)cirVc]ks6odMs69FPq=":5qr.Rtp#5r;s69F)
+p"/fZrQt5VrNPnnrS@@_q5++_s.T1hs/,aarLX%VpPeuurM01Qq2t]3kAU0!qb-rJJcDMFrrAbm
+rrB,"J,~>
+l2U\^e,T at HJcC<$JcFp5r;c0`U&P#jn,E=eKDtQDjo5:cZi9jnhu<BAoD\FSl2LMMJc<Rdg].9R
+JcGECrr at WMU&Y,mTqD>boDe[ffDkdLJcEdjrr at WMJcD_LrrC=Ds-WVApQ>';q3^oPqj>j.s-Wha
+n,NCfTE"p,qb-r,rtbVXdh_r`_%uuBoDeb^OV[gert^1cU]:>oU&Y,mX8d\~>
+l2U\^e,T at HJcC<$JcFp5r;c0`ThG at amn<Z\P=tFHp&F,SrrD^mqb-Zaqb-T_s%DBQqdT at ok>q=d
+s%E#coj[SeoiClto1S+EJP5H)g].9RJcGECrr at WMU&Y,mTl9r2oDe[ffDkdLJcEdjrr at WMJcD_L
+rrC=Ds,-W;pQG-'q24orqhijPs,-i(n,NCfTE"riqu4k=s6%5srVlEgrVj5'q>04Is7?9Ss7?9h
+JcDMFrrAbmrrB,"J,~>
+l2U\^e,T at HJcC<$JcFp5r;c0`m:,m.pNZ^Tom$Ffs,R,3q2YEBqka7qs/#[uq7HV*o>^aVrrD`J
+q<7;'e+;2jp&F.Qs0 at 4TS,WHZU&OHCjk\\krr at WMp&G$lJcDGDrrAbmrrDZjqZ,7Jr;_EKa8c/>
+JcC<$WW2tuc2X(-n,NCfTE"r_rVligs60LDs8)cirVc]ks6odMs69FPq=":5qr.Rtp#5r;s69F)
+p"/fZrQt5VrNPnnrS@@_q5++_s.T1hs/,aarLX%VpPeuurM01Qq2t]3kAU0!qb-rJJcDMFrrAbm
+rrB,"J,~>
+l2U\^e,T at HJcC<$JcFp5r;c0`U&P#jn,E=eKDtQDjo5:cZi9jnhu<BAoD\FSl2LMMJc<Rdg].9R
+JcGECrr at WMU&Y,mTqD>boDe[ffDkdLJcEdjrr at WMJcD_LrrC=Ds-WVApQ>';q3^oPqj>j.s-Wha
+n,NCfTE"p,qb-r,rtbVXdh_r`_%uuBoDeb^OV[gert^1cU]:>oU&Y,mX8d\~>
+l2U,NiW&oXJcC<$JcF'rT1f._mn<Z\O\>@Jp&FVas%E#cs%E at ls%E)eqb-Zaqb-Zaqb-T_s%Dra
+rF5LopK%5coiCltrCc`_q-rkepK%0#s%E at lo1S=KJP5<%ci<qDKE(rOJcDGDrrAa2rrD`lqZ,1H
+r;_EKa8c/>JcC<$XoJD$aoDBuq3C];nV@"!pOE'tdsqCTs*sM;rrAbmrVc]oc2IV(_u9E1p](-i
+Zi0^rjnJ`FrVFe=rr at WMg&M'PU]:>oX8d\~>
+l2U,NiW&oXJcC<$JcF'rm:,I"om$:bpQ#9Bs/#aas/#[urMB=orO`%.s2P)NpW!0ZrrDfLqpF`c
+pZU<%h>[*Ij8T(aJc<^hs0CDYq=D/rfBD>Pci<qDKE(rOJcDGDrrAbmrrD`lqZ,1Hr;_EKa8c/>
+JcC<$XoJD$ao at Y)n,NCfU&Y/ks7?9irU^'QrVHEirVHQ_qs=.Mq=":Ks47/-rQ=lnrTsRKrR:ej
+p"06'p!!Hfs3UMZq69Vnqq_.]q5++is1%g*s/,gcq4@>>s*k!?qkNnMqiUc1lYlN#rCd)Jc2[eD
+JcFF'rrAhorrB,"J,~>
+l2U,NiW&oXJcC<$JcF'rTDnfhn,E=eL&UcFj8T(aZi9pph>[6An,E.SkPkAMs8N&(Jc<Xfci<qD
+KE(rOJcDGDrrAabrrD`lqZ,1Hr;_EKa8c/>JcC<$XoJD$aoDC.q2P-2nXTKDpS@\Re"m#2s.o,`
+rrAbmr>,?)r>GVYdh_l^_\W&@p](+`Nu%[er>*ZXrr at WMg&M'PU]:>oX8d\~>
+l2U,NiW&oXJcC<$JcF'rT1f._mn<Z\O\>@Jp&FVas%E#cs%E at ls%E)eqb-Zaqb-Zaqb-T_s%Dra
+rF5LopK%5coiCltrCc`_q-rkepK%0#s%E at lo1S=KJP5<%ci<qDKE(rOJcDGDrrAa2rrD`lqZ,1H
+r;_EKa8c/>JcC<$XoJD$aoDBuq3C];nV@"!pOE'tdsqCTs*sM;rrAbmrVc]oc2IV(_u9E1p](-i
+Zi0^rjnJ`FrVFe=rr at WMg&M'PU]:>oX8d\~>
+l2U,NiW&oXJcC<$JcF'rm:,I"om$:bpQ#9Bs/#aas/#[urMB=orO`%.s2P)NpW!0ZrrDfLqpF`c
+pZU<%h>[*Ij8T(aJc<^hs0CDYq=D/rfBD>Pci<qDKE(rOJcDGDrrAbmrrD`lqZ,1Hr;_EKa8c/>
+JcC<$XoJD$ao at Y)n,NCfU&Y/ks7?9irU^'QrVHEirVHQ_qs=.Mq=":Ks47/-rQ=lnrTsRKrR:ej
+p"06'p!!Hfs3UMZq69Vnqq_.]q5++is1%g*s/,gcq4@>>s*k!?qkNnMqiUc1lYlN#rCd)Jc2[eD
+JcFF'rrAhorrB,"J,~>
+l2U,NiW&oXJcC<$JcF'rTDnfhn,E=eL&UcFj8T(aZi9pph>[6An,E.SkPkAMs8N&(Jc<Xfci<qD
+KE(rOJcDGDrrAabrrD`lqZ,1Hr;_EKa8c/>JcC<$XoJD$aoDC.q2P-2nXTKDpS@\Re"m#2s.o,`
+rrAbmr>,?)r>GVYdh_l^_\W&@p](+`Nu%[er>*ZXrr at WMg&M'PU]:>oX8d\~>
+l2U,NiW&oXJcC<$RK*9ehuE]VhuB<ArVu7XrrA*QpK$teo2bf_pK%;errE'lq,[5_qc<Gaqc<Mc
+pK%5co2bm#oh5$[rCcfaqdT at ooiCs!mn<=Ss'kjurrD^bm8ed2k=^C+c2[eDJcDGDrrAa"rrD`l
+r;bmXr;cNjr;_EKa8c/>JcC<$\c;U.q>^HpbQ%Nuqj$i;nV@"!pOE'tc[YE`rrAbms8DoqbPhD&
+_u9?/q>^9i[JfptjnJfHs60LSs8C4Brr at WMJcG]KrrE*!rrB,"J,~>
+l2U,NiW&oXJcC<$RK*9ehuE]VhuE.SlYZ<>s+C>rrIaj)s-itJs-i\Yq69h0rVui.pW!*XrrE#R
+p!N0_n*&U!li-qUp\sjcj8T(aJc<Xfs0CV_p%-0%alqpDJcF!prr at WMU&Y,mU&Y,mp&Fsjj8]&X
+p&FsjJcEdjrr at WMJcE:\r;cZnrrC7BPPstMrrAbms8DoqrU^!aq>L?irU9dQp%/"JrTsRYrSd^t
+pYl/=rTX4.s5*M%s5Ndsqq(S]q69n2q>^9Hqn)a%s/>t-or\7`q4 at VMq2G'Cs-WVHqiU]/lYlT%
+qb-rJc2[eDJcC<$rVults8W*!X8d\~>
+l2U,NiW&oXJcC<$RK*9ehuE]VhuB>JrVu9arr at cPp&F(Os0B!1s7>"Eqt'4Sqt&kIs7?-es0 at 4T
+a8UYic2[eDJcDGDrrAarrrD`lr;bmXr;cNjr;_EKa8c/>JcC<$\c;U.q>^HpbQ%O.qi192nXTKD
+pS@\Rc_U%0rrAbmruqDCs%E;.r?;1YeJA)`_\Vu>q>^7`OV[gert`lZrr at WMJcG]KrrE*!rrB,"
+J,~>
+l2U,NiW&oXJcC<$RK*9ehuE]VhuB<ArVu7XrrA*QpK$teo2bf_pK%;errE'lq,[5_qc<Gaqc<Mc
+pK%5co2bm#oh5$[rCcfaqdT at ooiCs!mn<=Ss'kjurrD^bm8ed2k=^C+c2[eDJcDGDrrAa"rrD`l
+r;bmXr;cNjr;_EKa8c/>JcC<$\c;U.q>^HpbQ%Nuqj$i;nV@"!pOE'tc[YE`rrAbms8DoqbPhD&
+_u9?/q>^9i[JfptjnJfHs60LSs8C4Brr at WMJcG]KrrE*!rrB,"J,~>
+l2U,NiW&oXJcC<$RK*9ehuE]VhuE.SlYZ<>s+C>rrIaj)s-itJs-i\Yq69h0rVui.pW!*XrrE#R
+p!N0_n*&U!li-qUp\sjcj8T(aJc<Xfs0CV_p%-0%alqpDJcF!prr at WMU&Y,mU&Y,mp&Fsjj8]&X
+p&FsjJcEdjrr at WMJcE:\r;cZnrrC7BPPstMrrAbms8DoqrU^!aq>L?irU9dQp%/"JrTsRYrSd^t
+pYl/=rTX4.s5*M%s5Ndsqq(S]q69n2q>^9Hqn)a%s/>t-or\7`q4 at VMq2G'Cs-WVHqiU]/lYlT%
+qb-rJc2[eDJcC<$rVults8W*!X8d\~>
+l2U,NiW&oXJcC<$RK*9ehuE]VhuB>JrVu9arr at cPp&F(Os0B!1s7>"Eqt'4Sqt&kIs7?-es0 at 4T
+a8UYic2[eDJcDGDrrAarrrD`lr;bmXr;cNjr;_EKa8c/>JcC<$\c;U.q>^HpbQ%O.qi192nXTKD
+pS@\Rc_U%0rrAbmruqDCs%E;.r?;1YeJA)`_\Vu>q>^7`OV[gert`lZrr at WMJcG]KrrE*!rrB,"
+J,~>
+[K$7,JcC<$RK*9eiW&oXhuB<Aqu?%VrrA$Oqc<Cis%E#cqb-`crCd.jrCd)ioh56aoh50_pIk<_
+qb-N]o1Ss]qb-N]rF5RqoiD$#m7[+QlV$bKa%QF4SP+P6dJs.FJcDGDrrAa"rrDfnr;bgVqZ-Hl
+r;_EK`W,r<JcC<$JcGECrJLK;ooed!rJL?!qhijPs*Xirn,NCfU&Y/krVjq;s6%;up&=pip&;At
+mJ?GKs8)ces/5n[s8 at NKJcEjlrrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eiW&oXhuE.Sl#$$:rIaj)s-itJs-iVWqlp%2qu?W,pW!0Zs5!\Ts2O`ZleUmj
+ht-=9qt'^ap&G'`j8T(aJc;SHnakB3s0DP$^Zae8JcF-tr;_EKU&Y,mU&Y,mp](0liW&cTq>^Bn
+JcE^hrr at WMJcC<$p&C6Sn,NCfU&Y/arVlces8)QirVHQ_s6T at Kq=":KrV-9Ls2t)ps6TXIs3pl%
+qq(f+pWWNds31;Xq69h0rVuo]pYGe[rMBOmrP/BBpT=1]s-*D?rM0Ciq4mtWpQYQ;pP/'Rq-!_j
+rrE'Bs"As'JcEjlrrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eiW&oXhuB>Jqu?'_rr at iRp&F"Ms0 at L\rU]FUrUYU>s0A3pJcF-tr;_EKU&Y,m
+Ts+Irp](0liW&cTq>^BnJcE^hrr at WMJcC<$p&FuXqi192n!s?DpS@\Re"m#As.o,`rrAbmrtbQ+
+r>GVYs!5u-rrBqPoh58`oh1D_s%E:jrt^1cJcEjlrrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eiW&oXhuB<Aqu?%VrrA$Oqc<Cis%E#cqb-`crCd.jrCd)ioh56aoh50_pIk<_
+qb-N]o1Ss]qb-N]rF5RqoiD$#m7[+QlV$bKa%QF4SP+P6dJs.FJcDGDrrAa"rrDfnr;bgVqZ-Hl
+r;_EK`W,r<JcC<$JcGECrJLK;ooed!rJL?!qhijPs*Xirn,NCfU&Y/krVjq;s6%;up&=pip&;At
+mJ?GKs8)ces/5n[s8 at NKJcEjlrrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eiW&oXhuE.Sl#$$:rIaj)s-itJs-iVWqlp%2qu?W,pW!0Zs5!\Ts2O`ZleUmj
+ht-=9qt'^ap&G'`j8T(aJc;SHnakB3s0DP$^Zae8JcF-tr;_EKU&Y,mU&Y,mp](0liW&cTq>^Bn
+JcE^hrr at WMJcC<$p&C6Sn,NCfU&Y/arVlces8)QirVHQ_s6T at Kq=":KrV-9Ls2t)ps6TXIs3pl%
+qq(f+pWWNds31;Xq69h0rVuo]pYGe[rMBOmrP/BBpT=1]s-*D?rM0Ciq4mtWpQYQ;pP/'Rq-!_j
+rrE'Bs"As'JcEjlrrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eiW&oXhuB>Jqu?'_rr at iRp&F"Ms0 at L\rU]FUrUYU>s0A3pJcF-tr;_EKU&Y,m
+Ts+Irp](0liW&cTq>^BnJcE^hrr at WMJcC<$p&FuXqi192n!s?DpS@\Re"m#As.o,`rrAbmrtbQ+
+r>GVYs!5u-rrBqPoh58`oh1D_s%E:jrt^1cJcEjlrrE*!rrB,"J,~>
+[K$7,JcC<$JcF:#SP/q]lV%6XMbF(NoDeb^q,[5_rDregrrE!jrDrM_s&SecrDrSaqc<McoiCTU
+rDrYcoiD*%pIk*Ys'k:eq,Z`Qo2`h'rrAT_JcF-tr;_EKU&Y,mTjRg"p]'U\qu?Tpq>]sbJcE^h
+rr at WMJcC<$p&G&Lq3CW9mt^k!pOE'tdsqCFs*sM;rrAhos8Doqa8Q&$`VoE-rVuQiXo7edp%SLX
+s8N&is8 at NKJcE^hrrB,"J,~>
+[K$7,JcC<$JcF:#m:,Buo6C4ds,R,3qi:]Fs,R&Ho;2DirO`%.rO_gDs3^_`rrE)=p!N0_jlk[p
+oD\LUs8MWirU].Ms0 at 4Tci3t9h>Zg5g&D#A\`i/2JcF-tr;_EKU&Y,mU&Y,mp]'U\qu?Tpq>]sb
+JcE^hrr at WMJcC<$p&C6Sn,NCfU]:AmrVlces8Duoq>L9gnalSFqs=:UrSde!pYl/=qs".0pYPr%
+qr7Fqq:GYjrPeT:qn)h,rTO(5rO`$)s/>h0q5s\$s/#I]s-*DVqkj7crL!DFqiUQ+mr/#)qb-rJ
+JcC<$`W,r<X8d\~>
+[K$7,JcC<$JcF:#Sc8Tfli-naM>m,HiVrk_M>mPHl2L_SJc>\TSc43?dJs.FJcDGDrrAarrrDfn
+m/[%`r;cZnnGn.?`W,r<JcC<$JcGECs-WVAoo\^5rL!>Tqj>j.s/5mmn,NCfU]:?;s&T.mr>GV\
+ruqC[pD3cHh%p"j`>8&<rVuO`OV[gert^1cJcE^hrrB,"J,~>
+[K$7,JcC<$JcF:#SP/q]lV%6XMbF(NoDeb^q,[5_rDregrrE!jrDrM_s&SecrDrSaqc<McoiCTU
+rDrYcoiD*%pIk*Ys'k:eq,Z`Qo2`h'rrAT_JcF-tr;_EKU&Y,mTjRg"p]'U\qu?Tpq>]sbJcE^h
+rr at WMJcC<$p&G&Lq3CW9mt^k!pOE'tdsqCFs*sM;rrAhos8Doqa8Q&$`VoE-rVuQiXo7edp%SLX
+s8N&is8 at NKJcE^hrrB,"J,~>
+[K$7,JcC<$JcF:#m:,Buo6C4ds,R,3qi:]Fs,R&Ho;2DirO`%.rO_gDs3^_`rrE)=p!N0_jlk[p
+oD\LUs8MWirU].Ms0 at 4Tci3t9h>Zg5g&D#A\`i/2JcF-tr;_EKU&Y,mU&Y,mp]'U\qu?Tpq>]sb
+JcE^hrr at WMJcC<$p&C6Sn,NCfU]:AmrVlces8Duoq>L9gnalSFqs=:UrSde!pYl/=qs".0pYPr%
+qr7Fqq:GYjrPeT:qn)h,rTO(5rO`$)s/>h0q5s\$s/#I]s-*DVqkj7crL!DFqiUQ+mr/#)qb-rJ
+JcC<$`W,r<X8d\~>
+[K$7,JcC<$JcF:#Sc8Tfli-naM>m,HiVrk_M>mPHl2L_SJc>\TSc43?dJs.FJcDGDrrAarrrDfn
+m/[%`r;cZnnGn.?`W,r<JcC<$JcGECs-WVAoo\^5rL!>Tqj>j.s/5mmn,NCfU]:?;s&T.mr>GV\
+ruqC[pD3cHh%p"j`>8&<rVuO`OV[gert^1cJcE^hrrB,"J,~>
+[K$7,JcC<$L]@;Qec215rVuUbrrD^brr at sMs&Sgmqb-`cpIkHcqb-qhgIqQIoh50_pIk<_mn<U[
+pIk0[o1SaWktCtUj\,URq,W&>gIoB_rrA2]rr at WMU&Y,mTjRg"p]'U\qu?Tpp]'sfJcERdrr at WM
+g&M'PJcG?Ar;a,&s,-]=ooe]ts,-K!rJK!Ps*Xirs*XeFrrDfnrrAhos8Doqa8Q&$`Vo?+s8V]i
+h>RB:ec"n3q=jpcrU^'fJcD):r;a2(rrB,"J,~>
+[K$7,JcC<$L]@;Qec4N9okjGJq1JR)s+C?3q3q&SrNQ74rVuc,rPnkas2P)Nq8WF7p!N*]iTT=n
+p&=^Ws8M]kqt&qKs0 at 4Te,K17mJd-kq>TXMiVotCkM<uSrrA2]rr at WMU&Y,mU&Y,mp]'U\qu?Tp
+p]'sfJcERdrr at WMg&M'PJcG?Ar;a,&Oo>7YrrDfnrrAhos8Doqs7?9hs8)Kgs8)conalSFqs=4S
+s5F"#q;MA?pZ_A-s69LAqonfdrQkM_q69\,s8W&]pYGk]s/#aoq7lg/qlogds-*DVqkj7crL!>D
+rK6]+mr/#)rCd/LJcD):r;a2(rrB,"J,~>
+[K$7,JcC<$L]@;Qec23>rVuWks0D=srr at oTp&EqKs0 at 4T\,QE5Jc=-t_>jN8OoPF]JcDGDrrAar
+rrDfnm/[%`r;cTlpAfdE_>jN8JcFF'rr at WMoDeahZ2aikqi192m@=3Doq_PRdA6f?s.o[mrVult
+p](6nU]:?;s&T.mru(h^ruqCfru(VJr>FE,rrC"RnOro^o1RmTrrBMDrCd/+JcD):r;a2(rrB,"
+J,~>
+[K$7,JcC<$L]@;Qec215rVuUbrrD^brr at sMs&Sgmqb-`cpIkHcqb-qhgIqQIoh50_pIk<_mn<U[
+pIk0[o1SaWktCtUj\,URq,W&>gIoB_rrA2]rr at WMU&Y,mTjRg"p]'U\qu?Tpp]'sfJcERdrr at WM
+g&M'PJcG?Ar;a,&s,-]=ooe]ts,-K!rJK!Ps*Xirs*XeFrrDfnrrAhos8Doqa8Q&$`Vo?+s8V]i
+h>RB:ec"n3q=jpcrU^'fJcD):r;a2(rrB,"J,~>
+[K$7,JcC<$L]@;Qec4N9okjGJq1JR)s+C?3q3q&SrNQ74rVuc,rPnkas2P)Nq8WF7p!N*]iTT=n
+p&=^Ws8M]kqt&qKs0 at 4Te,K17mJd-kq>TXMiVotCkM<uSrrA2]rr at WMU&Y,mU&Y,mp]'U\qu?Tp
+p]'sfJcERdrr at WMg&M'PJcG?Ar;a,&Oo>7YrrDfnrrAhos8Doqs7?9hs8)Kgs8)conalSFqs=4S
+s5F"#q;MA?pZ_A-s69LAqonfdrQkM_q69\,s8W&]pYGk]s/#aoq7lg/qlogds-*DVqkj7crL!>D
+rK6]+mr/#)rCd/LJcD):r;a2(rrB,"J,~>
+[K$7,JcC<$L]@;Qec23>rVuWks0D=srr at oTp&EqKs0 at 4T\,QE5Jc=-t_>jN8OoPF]JcDGDrrAar
+rrDfnm/[%`r;cTlpAfdE_>jN8JcFF'rr at WMoDeahZ2aikqi192m@=3Doq_PRdA6f?s.o[mrVult
+p](6nU]:?;s&T.mru(h^ruqCfru(VJr>FE,rrC"RnOro^o1RmTrrBMDrCd/+JcD):r;a2(rrB,"
+J,~>
+[K$7,JcF'rrr at WMO8kV@rVuUbrrD^brr at sMoDeVZrDr5WrrC58s&Secqc;TIpK$fWs&T.-qc;lQ
+s&S)OrsSj-JP4Nd_>jN8PQ1X_JcDGDrrAa"rr at WML&_/QJcFF'rr at WMTE"qKqj$i;l\G(]s,,uh
+s*X3`s*Xirs*XeFrrDfnrrAhorVlina8Q&$`Vo?+s8DKehu3T<e,AV/rV-?gs7?9is8)coJcF!p
+rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMO8o/ZiF;Cqq0;plrHS?pqi:]/rJpcDqka=]rMBIsrMBJmrO_sHs)7qLpW!45
+p!N0_gZ[bjq>U'YoDeXXkPkLeli-qUU]15`oD\cqqu6WekPk5Ili-pis8M-OkPhCCjk[cQrrA8_
+rr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcDABOo>7YrrDfnrrAhorVliqs7>p^s8)con+6ADrTs at S
+s5F"#q;MA?pZ_A-rTX at Aqonfdqp5/DpUgITrTNq1s/>\,s0M[+qlp*sqk!hqs-*J^pSRh_rL!DF
+rK6W)nSe5+rCd/Ls#u#6c2[eDJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMO8kXIrVuWks0D=srr at uVoDd_Is0@4Tq>UE"^]+8=Jc=-t_>jN8PQ1X_JcDGD
+rrAarrr at WML&_/QJcFF'rr at WMTE"qYqi192l^[RBs-VuFs/57[s/5mms/5hqrrDfnrrAhos&T.m
+ruM+Wq]ttQr>F?*rrC"RnOrltnOqaTrrBMDrCd))JcF!prr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMO8kV@rVuUbrrD^brr at sMoDeVZrDr5WrrC58s&Secqc;TIpK$fWs&T.-qc;lQ
+s&S)OrsSj-JP4Nd_>jN8PQ1X_JcDGDrrAa"rr at WML&_/QJcFF'rr at WMTE"qKqj$i;l\G(]s,,uh
+s*X3`s*Xirs*XeFrrDfnrrAhorVlina8Q&$`Vo?+s8DKehu3T<e,AV/rV-?gs7?9is8)coJcF!p
+rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMO8o/ZiF;Cqq0;plrHS?pqi:]/rJpcDqka=]rMBIsrMBJmrO_sHs)7qLpW!45
+p!N0_gZ[bjq>U'YoDeXXkPkLeli-qUU]15`oD\cqqu6WekPk5Ili-pis8M-OkPhCCjk[cQrrA8_
+rr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcDABOo>7YrrDfnrrAhorVliqs7>p^s8)con+6ADrTs at S
+s5F"#q;MA?pZ_A-rTX at Aqonfdqp5/DpUgITrTNq1s/>\,s0M[+qlp*sqk!hqs-*J^pSRh_rL!DF
+rK6W)nSe5+rCd/Ls#u#6c2[eDJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMO8kXIrVuWks0D=srr at uVoDd_Is0@4Tq>UE"^]+8=Jc=-t_>jN8PQ1X_JcDGD
+rrAarrr at WML&_/QJcFF'rr at WMTE"qYqi192l^[RBs-VuFs/57[s/5mms/5hqrrDfnrrAhos&T.m
+ruM+Wq]ttQr>F?*rrC"RnOrltnOqaTrrBMDrCd))JcF!prr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMaoDA@bQ!u'rVu%Rrr at sMp&F\Xs&SGYrrB`*qc;NGqc</Ys&T.-rDpg/s&O\D
+dnATurr at WMp&G$lJcDGDrrAa"rr at WML&_/QJcC<$g&M!NU&Y.MrKZu;l\G(]s,,uhs*X-^s)A!c
+nc/UhV>pSlrVlcos8'q;s6%H$n,E:anc#fll2(AQs8)ces8N&sq>^BnJcFF'rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMaoDA@bQ%69l!j7$o6C4ds,R&1rJpoHs,R,JrMBI]rMBIsrMBJmqn)mJs02C4
+pW!45pX/<_g$%Phqu69[p&F^Vnc&R[qu6W$rVlcep&=p]p&=p]bPqP5mJd"SoD\cqrVl]cli-SK
+l2K`7mJ`gCjk\horr at WMp&G$lJcDGDrrAbmrr at WML&_/QJcC<$g&M!NU&U8Rnc/UhV>pSorVlig
+n,;eJq="4Ip\4^1q;MA?q<@qNpYP`1qonlfs4[FtrR(SJpUgCRs60(1pV6a7s/l+$rMBOcrO)[)
+s/l$mqkO+Wq3:i?mtU at Nq-!Yhs#9cRr;_EKg&M'PJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMaoDA@bQ""0rVu'[rr at uVp&EkIs0 at 4Tq>UE"Jc:`0huE]VJcGECrr at WMU&Y,m
+Ts+IrJcCH(rr at WMJcFF'r;`Pks-WbEo9&@/o;)DRkG8-Ul_OQds/5DerrAnqs![nJs%EA0s!7Um
+r?V7Uq\e-(rrC(Tmn<TpnOo&]rCd/+q>^BnJcFF'rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMaoDA@bQ!u'rVu%Rrr at sMp&F\Xs&SGYrrB`*qc;NGqc</Ys&T.-rDpg/s&O\D
+dnATurr at WMp&G$lJcDGDrrAa"rr at WML&_/QJcC<$g&M!NU&Y.MrKZu;l\G(]s,,uhs*X-^s)A!c
+nc/UhV>pSlrVlcos8'q;s6%H$n,E:anc#fll2(AQs8)ces8N&sq>^BnJcFF'rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMaoDA@bQ%69l!j7$o6C4ds,R&1rJpoHs,R,JrMBI]rMBIsrMBJmqn)mJs02C4
+pW!45pX/<_g$%Phqu69[p&F^Vnc&R[qu6W$rVlcep&=p]p&=p]bPqP5mJd"SoD\cqrVl]cli-SK
+l2K`7mJ`gCjk\horr at WMp&G$lJcDGDrrAbmrr at WML&_/QJcC<$g&M!NU&U8Rnc/UhV>pSorVlig
+n,;eJq="4Ip\4^1q;MA?q<@qNpYP`1qonlfs4[FtrR(SJpUgCRs60(1pV6a7s/l+$rMBOcrO)[)
+s/l$mqkO+Wq3:i?mtU at Nq-!Yhs#9cRr;_EKg&M'PJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMaoDA@bQ""0rVu'[rr at uVp&EkIs0 at 4Tq>UE"Jc:`0huE]VJcGECrr at WMU&Y,m
+Ts+IrJcCH(rr at WMJcFF'r;`Pks-WbEo9&@/o;)DRkG8-Ul_OQds/5DerrAnqs![nJs%EA0s!7Um
+r?V7Uq\e-(rrC(Tmn<TpnOo&]rCd/+q>^BnJcFF'rr at WMrVultX8d\~>
+[K$7,JcC<$QiI'cbQ!u'qu>hPrrA$Op&Ei at r;aH&s&RlIqc<)WrDnJBO\=U3rr at WMp&G$lJcDGD
+rrAa"rr at WML&_/QJcC<$JcGECs,-c?rK@,7qi^9#o7-dtkC<MZl[SqRs*XA:rrAnqs60L^s8)?c
+s8(:Es6%H$nc&@_oDYrll2(GSs8)ces8MuqJcC<$aoDA at X8d\~>
+[K$7,JcC<$QiI'cbQ$s1nRD*,o6C"^q2YEBs/#[_rMBOuqka2irO`$4qn)O at rrDf@mG67TkO\`Q
+p%.kVoCMSQrU^!erNcJ&qt'R]qt'L[rU]X[s7>(GrU]FUqt':Uq=F"Qnal/Is6/G5oDY6CkM>%q
+rr at WMp&G$lJcDGDrrAbmrr at WML&_/QJcC<$JcGECOo=hMrrAnqrVl-]nal_Jp[e.Xs3^f/rSdM8
+rU]jApZ__/s31;jrS%:tqpG/Mq:,H.pYGl at otUO5q69goqmH='pSRnaqj at 2DrK6Q'nSe;-rCd/L
+s!WHuJcEjlrrB,"J,~>
+[K$7,JcC<$QiI'cbQ""0qu>jYrrA&Xp&EkIrN_"RJc:B&huE]VJcGECrr at WMU&Y,mTs+IrJcCH(
+rr at WMJcC<$p&G&ZrJgc<rLEbIl^[RBs-VuFs/51Ys0D[&nc/UhV>pR4s&T.?q'>tXr>,DRq\ei<
+obmQ at rrC(TnOrZno1P8_rCd))JcC<$aoDA at X8d\~>
+[K$7,JcC<$QiI'cbQ!u'qu>hPrrA$Op&Ei at r;aH&s&RlIqc<)WrDnJBO\=U3rr at WMp&G$lJcDGD
+rrAa"rr at WML&_/QJcC<$JcGECs,-c?rK@,7qi^9#o7-dtkC<MZl[SqRs*XA:rrAnqs60L^s8)?c
+s8(:Es6%H$nc&@_oDYrll2(GSs8)ces8MuqJcC<$aoDA at X8d\~>
+[K$7,JcC<$QiI'cbQ$s1nRD*,o6C"^q2YEBs/#[_rMBOuqka2irO`$4qn)O at rrDf@mG67TkO\`Q
+p%.kVoCMSQrU^!erNcJ&qt'R]qt'L[rU]X[s7>(GrU]FUqt':Uq=F"Qnal/Is6/G5oDY6CkM>%q
+rr at WMp&G$lJcDGDrrAbmrr at WML&_/QJcC<$JcGECOo=hMrrAnqrVl-]nal_Jp[e.Xs3^f/rSdM8
+rU]jApZ__/s31;jrS%:tqpG/Mq:,H.pYGl at otUO5q69goqmH='pSRnaqj at 2DrK6Q'nSe;-rCd/L
+s!WHuJcEjlrrB,"J,~>
+[K$7,JcC<$QiI'cbQ""0qu>jYrrA&Xp&EkIrN_"RJc:B&huE]VJcGECrr at WMU&Y,mTs+IrJcCH(
+rr at WMJcC<$p&G&ZrJgc<rLEbIl^[RBs-VuFs/51Ys0D[&nc/UhV>pR4s&T.?q'>tXr>,DRq\ei<
+obmQ at rrC(TnOrZno1P8_rCd))JcC<$aoDA at X8d\~>
+[K$7,JcC<$JcF^/QV7;Wj\,URO%]*Ej%K7LrCd(hQV79XlV%7YYtP)sJP4ln[K$7,U&Y,mJcDGD
+rrAa"rr at WML&_/QJcC<$XoJD$bQ%U"rK[26qi^9#o7-dtkC<MZl[SqRs*XA:rrAtss6p!erVHQm
+s8)Qis8)3_rVGjYrTD6"nc&:]oDZ#nkPG5Qs8)]ns8CFHrr at WM]Dqm2_>jN8X8d\~>
+[K$7,JcC<$JcF^/j];1dmqqfDs+C>rq1JR)opYQMrVui.qlp%2ou@$ZrrDlBmG6+Ph=L7<nalMS
+rU]ucs0DV&s0D[&qt'X_q=FF]q=F@[rU\kEqt'@Wp[e"Up[dkQn+6)Kqrm_Es/5>Wp\pNCjk[?E
+rrAbmrr at WMU&Y,mU&Y,mJcCH(rr at WMJcDkPrrC7BOo=hMrrAtss8Dusl2BZ6q>L9`qrn"Mq<@kL
+q;1r3s6Td:s5Ek,qqD(rq9f#MpXJrns7?9HpV6[5qlp$qs1A<=rODg.pSRnaqj@,Bs,l]'o5FG-
+rCd/Le,TFJJcE@^rrBn8rrB,"J,~>
+[K$7,JcC<$JcF^/Qi?s`jo58[O8ebNj8Sq]rVlc$Jc;_Ls0 at 4Thu:%`rrAbmrr at WMU&Y,mTs+Ir
+JcCH(rr at WMJcDkPrrC7Bs-WbEq4.>El^[RBs-VuFs/51Ys0D[&nc/UhVuQcQs&T(=s!7Umr?V=W
+ruLtSobRKHnJV3>r=?panOrTlo1P8_rCd/+e,TFJJcE@^rrBn8rrB,"J,~>
+[K$7,JcC<$JcF^/QV7;Wj\,URO%]*Ej%K7LrCd(hQV79XlV%7YYtP)sJP4ln[K$7,U&Y,mJcDGD
+rrAa"rr at WML&_/QJcC<$XoJD$bQ%U"rK[26qi^9#o7-dtkC<MZl[SqRs*XA:rrAtss6p!erVHQm
+s8)Qis8)3_rVGjYrTD6"nc&:]oDZ#nkPG5Qs8)]ns8CFHrr at WM]Dqm2_>jN8X8d\~>
+[K$7,JcC<$JcF^/j];1dmqqfDs+C>rq1JR)opYQMrVui.qlp%2ou@$ZrrDlBmG6+Ph=L7<nalMS
+rU]ucs0DV&s0D[&qt'X_q=FF]q=F@[rU\kEqt'@Wp[e"Up[dkQn+6)Kqrm_Es/5>Wp\pNCjk[?E
+rrAbmrr at WMU&Y,mU&Y,mJcCH(rr at WMJcDkPrrC7BOo=hMrrAtss8Dusl2BZ6q>L9`qrn"Mq<@kL
+q;1r3s6Td:s5Ek,qqD(rq9f#MpXJrns7?9HpV6[5qlp$qs1A<=rODg.pSRnaqj@,Bs,l]'o5FG-
+rCd/Le,TFJJcE@^rrBn8rrB,"J,~>
+[K$7,JcC<$JcF^/Qi?s`jo58[O8ebNj8Sq]rVlc$Jc;_Ls0 at 4Thu:%`rrAbmrr at WMU&Y,mTs+Ir
+JcCH(rr at WMJcDkPrrC7Bs-WbEq4.>El^[RBs-VuFs/51Ys0D[&nc/UhVuQcQs&T(=s!7Umr?V=W
+ruLtSobRKHnJV3>r=?panOrTlo1P8_rCd/+e,TFJJcE@^rrBn8rrB,"J,~>
+[K$7,JcC<$VuQ\qp](6nc2X,'qu>bNrrA*Qp&F8Lo`4_Zr;_CAX\8ZoJP4rpZiC%*U]:>oJcDGD
+rrA`grr at WML&_/QJcC<$l2U\^aoDA at c2[a"rK[,4rK?K%s*WLLs*XirrH.RZs*Xirnc/UhVuQen
+s8N&ps7?3cqu-KioDSR_p\k-Tqu-ETrU'LFci*>3p&4L]Z2Ne\s7?9is8CFHrr at WM\c;[0a8c/>
+s8W*!X8d\~>
+[K$7,JcC<$VuQ\qp](6nc2Zm+nRD60o6Bq\rJpW at oqhQcq69b.pW!0ZrrDlBmG6%Nlgt)=q=F:Z
+n+6GUrNc6squ6QcrMT\equ6?]qu6?]q>U9_hu<HCoD\FSp&=RSoD\.KoD\RLoCN![nal_YOm)Pe
+n&D^6rrAhorr at WMU&Y,mU&Y,mJcCH(rr at WMJcG!7r;at>rrC=DO8\VKrrAtss8Dusli$#<s4mYG
+rVcWVrV??<nalY7pZ__Es47)+s4@/%p!NZKpXK5aq;))BrS@:aqm61(qn)g:qlTUis.fCWq3:oA
+l\>"LqcWkjs#8F,rr at WM\c;[0a8c/>s8W*!X8d\~>
+[K$7,JcC<$VuQ\qp](6nc2X.0qu>dWrrA,Zp&F:Uos4>krN_"RXoA at +Jc=X-ZiC%*U]:>oJcDGD
+rrAb-rr at WML&_/QJcC<$l2U\^aoDA at c2[a0rJgQArK6E9s/4PGs/5mmrNGaes/5mmnc/UhVuQcF
+s&T.?s"F=!r?VCYr>kbQq%iiJpDNu5r>GVNqZ-R1qZ+qXmn<<ho1P>arCd/+e,TFJJcE:\rrC+>
+rrE*!rrB,"J,~>
+[K$7,JcC<$VuQ\qp](6nc2X,'qu>bNrrA*Qp&F8Lo`4_Zr;_CAX\8ZoJP4rpZiC%*U]:>oJcDGD
+rrA`grr at WML&_/QJcC<$l2U\^aoDA at c2[a"rK[,4rK?K%s*WLLs*XirrH.RZs*Xirnc/UhVuQen
+s8N&ps7?3cqu-KioDSR_p\k-Tqu-ETrU'LFci*>3p&4L]Z2Ne\s7?9is8CFHrr at WM\c;[0a8c/>
+s8W*!X8d\~>
+[K$7,JcC<$VuQ\qp](6nc2Zm+nRD60o6Bq\rJpW at oqhQcq69b.pW!0ZrrDlBmG6%Nlgt)=q=F:Z
+n+6GUrNc6squ6QcrMT\equ6?]qu6?]q>U9_hu<HCoD\FSp&=RSoD\.KoD\RLoCN![nal_YOm)Pe
+n&D^6rrAhorr at WMU&Y,mU&Y,mJcCH(rr at WMJcG!7r;at>rrC=DO8\VKrrAtss8Dusli$#<s4mYG
+rVcWVrV??<nalY7pZ__Es47)+s4@/%p!NZKpXK5aq;))BrS@:aqm61(qn)g:qlTUis.fCWq3:oA
+l\>"LqcWkjs#8F,rr at WM\c;[0a8c/>s8W*!X8d\~>
+[K$7,JcC<$VuQ\qp](6nc2X.0qu>dWrrA,Zp&F:Uos4>krN_"RXoA at +Jc=X-ZiC%*U]:>oJcDGD
+rrAb-rr at WML&_/QJcC<$l2U\^aoDA at c2[a0rJgQArK6E9s/4PGs/5mmrNGaes/5mmnc/UhVuQcF
+s&T.?s"F=!r?VCYr>kbQq%iiJpDNu5r>GVNqZ-R1qZ+qXmn<<ho1P>arCd/+e,TFJJcE:\rrC+>
+rrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eci98'rVtnNrrA0SoDe8PqZ,ePr;_CAJP5f3rrABYJcF@%r;_EKU&Y,mThk[g
+JcCH(rr at WMJcC<$p](2Ls-<22s,u]'s*WRNrI"E_o7-^dnc/UhVuQe\s8)cas8Duoqu-Egp\jj_
+q>L?Vs8DiXoBlG<e,Ah9oDS4YZi0(`s8DuorVliqmJm1dJcC<$jo>>\s8W*!X8d\~>
+[K$7,JcC<$RK*9eci<*-nRD0.qfr-XrHS!frJpoHs,QuFs/#aapSIigpTXV.ou?sXrrDrDmG5nJ
+n+6G?qt'FZs60"Es/5h$s8M]_rVlWarMT\poCMq[p[e4[q=F@[rU]RYp[e(Ws60.Ip\t-Tp%.kU
+lgslMoB>6+gZ\[-cfj34mDa_WfDkdLJcDGDrrAbmrr at WML&_/QJcC<$JcGKEO8\VKrrAtss8M9]
+l1=r1s7?9GrTEkLs5X.,rS7;Aqu-QdrSIA7qs=.;qqCYhs1 at sRs2b)nrU]pBqnN$7rNQ=Aqn)g:
+q5sOkrMfglqj@,Bl%\kLq-!_js&T.kmJm1dJcC<$jo>>\s8W*!X8d\~>
+[K$7,JcC<$RK*9eci9:0rVtpWrrA2\oDe:Yqm,DarN_"RJc>KEs0A!jJcF@%r;_EKU&Y,mTtgU-
+JcCH(rr at WMJcC<$p](2Zs,HW?s,lW;s/4VIrMTIpo;)>_nc/UhVuQd6s![n's!7Umq]u%Zq\f>J
+pDs&Irr`9=r<*'"o+q3'dh_IHo+pjhPns<krtb#%rr at WMJcFj3rrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eci98'rVtnNrrA0SoDe8PqZ,ePr;_CAJP5f3rrABYJcF@%r;_EKU&Y,mThk[g
+JcCH(rr at WMJcC<$p](2Ls-<22s,u]'s*WRNrI"E_o7-^dnc/UhVuQe\s8)cas8Duoqu-Egp\jj_
+q>L?Vs8DiXoBlG<e,Ah9oDS4YZi0(`s8DuorVliqmJm1dJcC<$jo>>\s8W*!X8d\~>
+[K$7,JcC<$RK*9eci<*-nRD0.qfr-XrHS!frJpoHs,QuFs/#aapSIigpTXV.ou?sXrrDrDmG5nJ
+n+6G?qt'FZs60"Es/5h$s8M]_rVlWarMT\poCMq[p[e4[q=F@[rU]RYp[e(Ws60.Ip\t-Tp%.kU
+lgslMoB>6+gZ\[-cfj34mDa_WfDkdLJcDGDrrAbmrr at WML&_/QJcC<$JcGKEO8\VKrrAtss8M9]
+l1=r1s7?9GrTEkLs5X.,rS7;Aqu-QdrSIA7qs=.;qqCYhs1 at sRs2b)nrU]pBqnN$7rNQ=Aqn)g:
+q5sOkrMfglqj@,Bl%\kLq-!_js&T.kmJm1dJcC<$jo>>\s8W*!X8d\~>
+[K$7,JcC<$RK*9eci9:0rVtpWrrA2\oDe:Yqm,DarN_"RJc>KEs0A!jJcF@%r;_EKU&Y,mTtgU-
+JcCH(rr at WMJcC<$p](2Zs,HW?s,lW;s/4VIrMTIpo;)>_nc/UhVuQd6s![n's!7Umq]u%Zq\f>J
+pDs&Irr`9=r<*'"o+q3'dh_IHo+pjhPns<krtb#%rr at WMJcFj3rrE*!rrB,"J,~>
+[K$7,JcC<$[K$7,[JuLbrVthLrrA0Sp&FVVq#K;Fr;_CAJP5r7rrABYJcF@%r;_EKU&Y,mThk[g
+JcCH(rr at WMJcGKErr@]OrJLW?o8!@/m>(XfgOK6NrG_LQpOE'foDegjWW3"ps8N&ps6op_rVcWi
+s8Dofs8DWequ-Q^qrd52rTD`0nc&(Wnc#rpjnf#Us7?9is8D9`rr at WMJcFd1rrB,"J,~>
+[K$7,JcC<$[K$7,[K#>hnRD0.s*4EXqfqjfq2Y-:q5+&ipTXP,pW!*XrrE#FleTPDoCMeArU]^^
+rTO"Iq5=8arVlK]s8MW]s0D[&p%/4_oCMq[p[e4[qt'FYoCMeWrTNkEqu6KVp%.qWs6/_=qu6-L
+kO[<hs.&!1bL,duJcF@%r;_EKU&Y,mU&Y,mJcCH(rr at WMJcGKErr@]ONW&JKrrB%us8Dush>R0@
+s6oj?s6oLRrT!qHrS7ACq>L?Ws5*S9rTsRYpYl))n^7$ZrQ+rnqt'^@rP/07rPnZFs1%m,rMKIk
+s.fCWq3:&sol'_1rCd/Lli6tbJcC<$j8],ZX8d\~>
+[K$7,JcC<$[K$7,[JuNkrVtjUrrA2\p&FX_q6JoWrN_"RJc>WIs0A!jJcF@%r;_EKU&Y,mTtgU-
+JcCH(rr at WMJcGKErr@]OrL!VEo:5iCm@=-QgSFkIrNc1$pS@\aoDegjWW2uHs&T.?s"jU%r?V7\
+ru(bgruq+bruLnQqZHj9lPBF!eJ@[JnJ:XfQPTNmrtar#rr at WMJcFd1rrB,"J,~>
+[K$7,JcC<$[K$7,[JuLbrVthLrrA0Sp&FVVq#K;Fr;_CAJP5r7rrABYJcF@%r;_EKU&Y,mThk[g
+JcCH(rr at WMJcGKErr@]OrJLW?o8!@/m>(XfgOK6NrG_LQpOE'foDegjWW3"ps8N&ps6op_rVcWi
+s8Dofs8DWequ-Q^qrd52rTD`0nc&(Wnc#rpjnf#Us7?9is8D9`rr at WMJcFd1rrB,"J,~>
+[K$7,JcC<$[K$7,[K#>hnRD0.s*4EXqfqjfq2Y-:q5+&ipTXP,pW!*XrrE#FleTPDoCMeArU]^^
+rTO"Iq5=8arVlK]s8MW]s0D[&p%/4_oCMq[p[e4[qt'FYoCMeWrTNkEqu6KVp%.qWs6/_=qu6-L
+kO[<hs.&!1bL,duJcF@%r;_EKU&Y,mU&Y,mJcCH(rr at WMJcGKErr@]ONW&JKrrB%us8Dush>R0@
+s6oj?s6oLRrT!qHrS7ACq>L?Ws5*S9rTsRYpYl))n^7$ZrQ+rnqt'^@rP/07rPnZFs1%m,rMKIk
+s.fCWq3:&sol'_1rCd/Lli6tbJcC<$j8],ZX8d\~>
+[K$7,JcC<$[K$7,[JuNkrVtjUrrA2\p&FX_q6JoWrN_"RJc>WIs0A!jJcF@%r;_EKU&Y,mTtgU-
+JcCH(rr at WMJcGKErr@]OrL!VEo:5iCm@=-QgSFkIrNc1$pS@\aoDegjWW2uHs&T.?s"jU%r?V7\
+ru(bgruq+bruLnQqZHj9lPBF!eJ@[JnJ:XfQPTNmrtar#rr at WMJcFd1rrB,"J,~>
+[K$7,JcC<$\,ZI.[JuF`rVu=ZrrD^brrA6Up&FbZqZ-RfrrCkJq#Gt=JP28$VuQbsZ2ah(JcDGD
+rrA`grr at WML&_/QJcFF'rrAhorr at WMs,-c?h1trVgOK*>pN6.Zs*Xics*XkHrrDfnrrB%us60LW
+rU9^]s8DulrVHQ_qt'X[rT!qSq<-Z&rTDr6nc%qSoD\"Qs6%;unbW4_rVliqJcC<$s8W*!dJs4H
+X8d\~>
+[K$7,JcC<$\,ZI.[K#>hnRD60s'k_>rHS?ps*4?lqi:QBs,R&Hq5++[rVuVrrO`$Js*OX_qpGED
+rR(#g_<CXbp#u)Kq<7kMqksDas/5hes8MW]s60(Gs.&tal1=rSoCMkYq=F:YoCMeWqrm_Equ6KV
+p%/"YrTNM;rVl9LlgqaP^X;MiVuQbsZ2ah(JcDGDrrAbmrr at WML&_/QJcFF'rrAhorr at WMNW&nW
+rrDfnrrB%us8LpSrTF4Zs6':7q=!eJq=":;q>L9Us7?3Rqs=@Wp#5r7o?mU-s4[.qrQP*/qq_.a
+qm6=Fs2OlHs/#IlpSmtUpQXoso5FS1s().&s&T.UJcC<$s8W*!dJs4HX8d\~>
+[K$7,JcC<$\,ZI.[JuHirVu?cs0D=srrA8^p&Fdcqm-2"s0CJ[q6GSNJc:r6VuQbsZ2ah(JcDGD
+rrAb-rr at WML&_/QJcFF'rrAhorr at WMs-WbEh44GAgSF_PpTO=es/5n&s/5nsrrDfnrrB%us)%cd
+rA4C#s!7Upr>knoq_.anr=T&Xrsno.q&/?2r;bRfnOr6bo1S<`rrB5<rCd/+JcC<$s8W*!dJs4H
+X8d\~>
+[K$7,JcC<$\,ZI.[JuF`rVu=ZrrD^brrA6Up&FbZqZ-RfrrCkJq#Gt=JP28$VuQbsZ2ah(JcDGD
+rrA`grr at WML&_/QJcFF'rrAhorr at WMs,-c?h1trVgOK*>pN6.Zs*Xics*XkHrrDfnrrB%us60LW
+rU9^]s8DulrVHQ_qt'X[rT!qSq<-Z&rTDr6nc%qSoD\"Qs6%;unbW4_rVliqJcC<$s8W*!dJs4H
+X8d\~>
+[K$7,JcC<$\,ZI.[K#>hnRD60s'k_>rHS?ps*4?lqi:QBs,R&Hq5++[rVuVrrO`$Js*OX_qpGED
+rR(#g_<CXbp#u)Kq<7kMqksDas/5hes8MW]s60(Gs.&tal1=rSoCMkYq=F:YoCMeWqrm_Equ6KV
+p%/"YrTNM;rVl9LlgqaP^X;MiVuQbsZ2ah(JcDGDrrAbmrr at WML&_/QJcFF'rrAhorr at WMNW&nW
+rrDfnrrB%us8LpSrTF4Zs6':7q=!eJq=":;q>L9Us7?3Rqs=@Wp#5r7o?mU-s4[.qrQP*/qq_.a
+qm6=Fs2OlHs/#IlpSmtUpQXoso5FS1s().&s&T.UJcC<$s8W*!dJs4HX8d\~>
+[K$7,JcC<$\,ZI.[JuHirVu?cs0D=srrA8^p&Fdcqm-2"s0CJ[q6GSNJc:r6VuQbsZ2ah(JcDGD
+rrAb-rr at WML&_/QJcFF'rrAhorr at WMs-WbEh44GAgSF_PpTO=es/5n&s/5nsrrDfnrrB%us)%cd
+rA4C#s!7Upr>knoq_.anr=T&Xrsno.q&/?2r;bRfnOr6bo1S<`rrB5<rCd/+JcC<$s8W*!dJs4H
+X8d\~>
+[K$7,JcF'rrr at WMTDt*JrVu7XrrD^brrA<WoDeh`q#JN0r;_sQrrA`cr;_CAm7XAWrrBD*rr at WM
+U&Y,mThk[gJcCH(rr at WMg&M'PJcDGDs,-iAs,,Wfqg@:Ns)e-WolU"Zs*Xics*XkHrrDfnrrB,"
+s6p!es8)carVHQmrV-?grU9dXs6Td[q>1!Ke*[+shu3*Eli$GSli$kH^&@X#s8Doqs8 at NKe,TFJ
+XoJD$e,TFJX8d\~>
+[K$7,JcF'rrr at WMTE!GBoj[Z4q0;RbrJpoHqi:WDrMBI]rVuVrqn)gHs*O^aq9f3Bs3^/g^ZbLb
+pZV5Ks609KnaleEoCN"GoCN"Gqt'carU^'Qj7E6Kp[e.YrTNkErVlWVp%/.]qrn'Ms60.IrVlWV
+lgt/Ulfdg/s5!Y;rLD'p\'aT_VuQbsZiC%*JcDGDrrAbmrr at WML&_/QJcFF'rr at WMU&U,Ns8W*!
+p](6nX8i4us8LpSqrdqRp[@MFp[A.XrTF(Vq=FLMs7c3FrTNq%s7$!@q:,GrrQP<$qt'X>rP/<;
+s2t;bq7H['s1%g*q5O+Uq3:o6qhacrol'e3s()($s$hS>e,TFJXoJD$e,TFJX8d\~>
+[K$7,JcF'rrr at WMTDt,SrVu9as0D=srrA>`oDejiq6J-ArN_Rbs0A?trN_"RmJa$`rrBD*rr at WM
+U&Y,mTtgU-JcCH(rr at WMg&M'PJcDGDs-WhGs-VW4qkr>Is0)=*orn1es/5n&s/5nsrrDfnrrB,"
+s"j[Us![n'r@%[kr@@mgrA4I,s#0m-q'c+Pr?V%RithRnh\P`TlPB(blPBL#Y87(0rt^1ce,TFJ
+XoJD$e,TFJX8d\~>
+[K$7,JcF'rrr at WMTDt*JrVu7XrrD^brrA<WoDeh`q#JN0r;_sQrrA`cr;_CAm7XAWrrBD*rr at WM
+U&Y,mThk[gJcCH(rr at WMg&M'PJcDGDs,-iAs,,Wfqg@:Ns)e-WolU"Zs*Xics*XkHrrDfnrrB,"
+s6p!es8)carVHQmrV-?grU9dXs6Td[q>1!Ke*[+shu3*Eli$GSli$kH^&@X#s8Doqs8 at NKe,TFJ
+XoJD$e,TFJX8d\~>
+[K$7,JcF'rrr at WMTE!GBoj[Z4q0;RbrJpoHqi:WDrMBI]rVuVrqn)gHs*O^aq9f3Bs3^/g^ZbLb
+pZV5Ks609KnaleEoCN"GoCN"Gqt'carU^'Qj7E6Kp[e.YrTNkErVlWVp%/.]qrn'Ms60.IrVlWV
+lgt/Ulfdg/s5!Y;rLD'p\'aT_VuQbsZiC%*JcDGDrrAbmrr at WML&_/QJcFF'rr at WMU&U,Ns8W*!
+p](6nX8i4us8LpSqrdqRp[@MFp[A.XrTF(Vq=FLMs7c3FrTNq%s7$!@q:,GrrQP<$qt'X>rP/<;
+s2t;bq7H['s1%g*q5O+Uq3:o6qhacrol'e3s()($s$hS>e,TFJXoJD$e,TFJX8d\~>
+[K$7,JcF'rrr at WMTDt,SrVu9as0D=srrA>`oDejiq6J-ArN_Rbs0A?trN_"RmJa$`rrBD*rr at WM
+U&Y,mTtgU-JcCH(rr at WMg&M'PJcDGDs-WhGs-VW4qkr>Is0)=*orn1es/5n&s/5nsrrDfnrrB,"
+s"j[Us![n'r@%[kr@@mgrA4I,s#0m-q'c+Pr?V%RithRnh\P`TlPB(blPBL#Y87(0rt^1ce,TFJ
+XoJD$e,TFJX8d\~>
+[K$7,JcF'rrr at WMqu?TpX8eAVqu>PHrrA<Wp](*js%E:j_b9q.PtV,WJP1hmjo>>\JcGECrr at WM
+U&Y,mThk[gJcCH(rr at WMM?!MSJcG?As,-iAgP>ZRhgbZJqf)4Mq1&Els)A!coDegjX8i4`s7cQ^
+s69LYrV-3Xs7?9As6T^\qr at Y?c0bJmj8JNIl2C5QU](#brVccqrV_<Iec5XLJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMqu?TpX8i&igK*uVpMKqTs)%^Zqh+onrIb'/s-ihFrL3b_qjRE^q69b.ou?gT
+rrE)HmG5D<rU]^Gp](6nrLEoOrLEoOnaleEp%/(Ep[e:Gq=FWas.'&Op%/4IoCN"]p%/"YqrmYC
+s8McVoCMeAs.',Qp%/4_pZV#9rS?f'oCMe6c02:Wn&FJhrr at WMp&G$lJcDGDrrAbmrr at WML&_/Q
+JcCT,r;_EKoDagKoDegjX8i5!li$kHqu-ETp%eFPlhUAFqtg9Ss8DW^qtKjDqrme%s7#p>rRCet
+s31B"rU]d>s1eT?rQ>)`ot0t#q5OCcq3_,FrL!VDqha]pol'e3s().&s#^6HJcF:#rr at WMrVult
+X8d\~>
+[K$7,JcF'rrr at WMqu?TpX8eC_qu>RQrrA>`p](6nrNcJ&rNa??rN_^fs0 at 4TM>lW:rr at WMp&G$l
+JcDGDrrAb-rr at WML&_/QJcCT,r;_EKoDeiXs,Gd'qkr>Is0)=*orn1es/5n&s/5JgrrB,"s)%cd
+s"j[9r@%Upq_S7*ruh>"r@%OTr?qCdq&/Q8ruptLr;bjnnOr*^o1PDcs%E;+JcF:#rr at WMrVult
+X8d\~>
+[K$7,JcF'rrr at WMqu?TpX8eAVqu>PHrrA<Wp](*js%E:j_b9q.PtV,WJP1hmjo>>\JcGECrr at WM
+U&Y,mThk[gJcCH(rr at WMM?!MSJcG?As,-iAgP>ZRhgbZJqf)4Mq1&Els)A!coDegjX8i4`s7cQ^
+s69LYrV-3Xs7?9As6T^\qr at Y?c0bJmj8JNIl2C5QU](#brVccqrV_<Iec5XLJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMqu?TpX8i&igK*uVpMKqTs)%^Zqh+onrIb'/s-ihFrL3b_qjRE^q69b.ou?gT
+rrE)HmG5D<rU]^Gp](6nrLEoOrLEoOnaleEp%/(Ep[e:Gq=FWas.'&Op%/4IoCN"]p%/"YqrmYC
+s8McVoCMeAs.',Qp%/4_pZV#9rS?f'oCMe6c02:Wn&FJhrr at WMp&G$lJcDGDrrAbmrr at WML&_/Q
+JcCT,r;_EKoDagKoDegjX8i5!li$kHqu-ETp%eFPlhUAFqtg9Ss8DW^qtKjDqrme%s7#p>rRCet
+s31B"rU]d>s1eT?rQ>)`ot0t#q5OCcq3_,FrL!VDqha]pol'e3s().&s#^6HJcF:#rr at WMrVult
+X8d\~>
+[K$7,JcF'rrr at WMqu?TpX8eC_qu>RQrrA>`p](6nrNcJ&rNa??rN_^fs0 at 4TM>lW:rr at WMp&G$l
+JcDGDrrAb-rr at WML&_/QJcCT,r;_EKoDeiXs,Gd'qkr>Is0)=*orn1es/5n&s/5JgrrB,"s)%cd
+s"j[9r@%Upq_S7*ruh>"r@%OTr?qCdq&/Q8ruptLr;bjnnOr*^o1PDcs%E;+JcF:#rr at WMrVult
+X8d\~>
+[K$7,JcC<$JcG3=O\>ZQh+RbJQV75UqZ*rqr;_CAJP2V.jo>>\JcGECrr at WMU&Y,mThk[gJcCH(
+rr at WMJcC<$p](8Ns-;>oqg at p`s*XEfs)e'UolTqXs)A!coDegjXoJFgs60LZs69RPs8)]gs5EkD
+s475:s47//pZhYCs6'F;qrdG5lg=Z6l2C/Ojo+fMU](#bs8Doqs8CpVr;_EKJcG?ArrB,"J,~>
+[K$7,JcC<$JcG3=o1S+Eoj[N0rHS9nrHS9nooB!>s/#O[rVuVrrO_aBpX0!@mG4i,qu?Nnn`]Z;
+qrmkIq<7YGq<7SEs60EOp[e:Gjn&HMpZV;AoB>r?oB>l=p#tl9qq^T%p[e(6e**^Wn&FJhrr at WM
+p&G$lJcDGDrrAbmrr at WML&_/QJcC<$JcGKENW&JKrrB2$s8DusmJ[(Js8DiXmJ6YJmJ6eYq=".U
+s82iZs4mA?s8Dojq;M#1rR(N3q:bf!s31;us7>p>s0MaJq9AZGs027"ql0Ocqj at DQqj@DBq2+Kn
+pM^"5s()(/s%22Lr;_EKJcG?ArrB,"J,~>
+[K$7,JcC<$JcG3=OoG=Zh>[ESQi?m^qZ*u%rN_"RJc;;@jo>>\JcGECrr at WMU&Y,mTtgU-JcCH(
+rr at WMJcC<$p](8\s,Gd'qkrt[s/5Ias0)7(orn+cs0D[&oDegjXoJDFs)%cas#U09s![grs$?N<
+ruh>"ruh7PpF#h`s""+-q]P>Ir?:VFr;c'tnOqsZo1PJerCd/+iW&iVJcC<$oDegjX8d\~>
+[K$7,JcC<$JcG3=O\>ZQh+RbJQV75UqZ*rqr;_CAJP2V.jo>>\JcGECrr at WMU&Y,mThk[gJcCH(
+rr at WMJcC<$p](8Ns-;>oqg at p`s*XEfs)e'UolTqXs)A!coDegjXoJFgs60LZs69RPs8)]gs5EkD
+s475:s47//pZhYCs6'F;qrdG5lg=Z6l2C/Ojo+fMU](#bs8Doqs8CpVr;_EKJcG?ArrB,"J,~>
+[K$7,JcC<$JcG3=o1S+Eoj[N0rHS9nrHS9nooB!>s/#O[rVuVrrO_aBpX0!@mG4i,qu?Nnn`]Z;
+qrmkIq<7YGq<7SEs60EOp[e:Gjn&HMpZV;AoB>r?oB>l=p#tl9qq^T%p[e(6e**^Wn&FJhrr at WM
+p&G$lJcDGDrrAbmrr at WML&_/QJcC<$JcGKENW&JKrrB2$s8DusmJ[(Js8DiXmJ6YJmJ6eYq=".U
+s82iZs4mA?s8Dojq;M#1rR(N3q:bf!s31;us7>p>s0MaJq9AZGs027"ql0Ocqj at DQqj@DBq2+Kn
+pM^"5s()(/s%22Lr;_EKJcG?ArrB,"J,~>
+[K$7,JcC<$JcG3=OoG=Zh>[ESQi?m^qZ*u%rN_"RJc;;@jo>>\JcGECrr at WMU&Y,mTtgU-JcCH(
+rr at WMJcC<$p](8\s,Gd'qkrt[s/5Ias0)7(orn+cs0D[&oDegjXoJDFs)%cas#U09s![grs$?N<
+ruh>"ruh7PpF#h`s""+-q]P>Ir?:VFr;c'tnOqsZo1PJerCd/+iW&iVJcC<$oDegjX8d\~>
+[K$7,JcC<$ec5XLTE!#+l'L@%rVt\Hs8W*!jo;Y[q#LBnZV1)oJP1PeThCmTrrBn8rr at WMU&Y,m
+Thk[gJcCH(rr at WMQiI'cRK*9eci<m"gP>TPo7-dfo7-d^q/GqIq1&E`s*XG<rrB2$s5!_Ls5a4E
+rVHQgrSd_DqptB(q<.Y1s6&G-na6A>li$AQj8JTKU&FrdrVccqs8CXNrr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$ec5XLTE"4MlW3[frUBjUq=+ at Qs76-YrHS9nooB'@s,QoDrVuVrqn)UBpX0$@rrD0\
+Zfq2brVu?Mq=F at Eqt'RGqt'RGqt'dMqjd\aqt'^Kp%/4IoCMq[pZVACn`]f?n*'T=rS@/1oCMe6
+lfe09oA/0bT@*&GS,`Kg_>jN8JcDGDrrAbmrr at WML&_/QJcD):rrAJerrCCFMuE8IrrB2$s8MEa
+qrd):rU9X[q>'d]qsXR]p&"dEq=FL^q;Lr/s3^`5qqD#*s4?r's7?!@s604%s2+ZFs1eT?or\+j
+s.97nq6Bn$rJ^Q/mtULRs&o;2s%EA]g&M'PJcC<$q>^HpX8d\~>
+[K$7,JcC<$ec5XLTE!%4l$MCgrVt^Qs8W*!jo;[dq#LBnZi9d+Jc:6"U&LP]rrBn8rr at WMU&Y,m
+TtgU-JcCH(rr at WMQiI'cRK*9eci<m0gRS);o;)Dao;)Diq6KUqq5"%rs/5JgrrB2$s*4Pos$$HD
+r@%[rrB^B<q]PJXq()>#rug\Kq^;=^obRKLrrD@#nOqmXo1PJes%EA-g&M'PJcC<$q>^HpX8d\~>
+[K$7,JcC<$ec5XLTE!#+l'L@%rVt\Hs8W*!jo;Y[q#LBnZV1)oJP1PeThCmTrrBn8rr at WMU&Y,m
+Thk[gJcCH(rr at WMQiI'cRK*9eci<m"gP>TPo7-dfo7-d^q/GqIq1&E`s*XG<rrB2$s5!_Ls5a4E
+rVHQgrSd_DqptB(q<.Y1s6&G-na6A>li$AQj8JTKU&FrdrVccqs8CXNrr at WMJcGQGrrB,"J,~>
+[K$7,JcC<$ec5XLTE"4MlW3[frUBjUq=+ at Qs76-YrHS9nooB'@s,QoDrVuVrqn)UBpX0$@rrD0\
+Zfq2brVu?Mq=F at Eqt'RGqt'RGqt'dMqjd\aqt'^Kp%/4IoCMq[pZVACn`]f?n*'T=rS@/1oCMe6
+lfe09oA/0bT@*&GS,`Kg_>jN8JcDGDrrAbmrr at WML&_/QJcD):rrAJerrCCFMuE8IrrB2$s8MEa
+qrd):rU9X[q>'d]qsXR]p&"dEq=FL^q;Lr/s3^`5qqD#*s4?r's7?!@s604%s2+ZFs1eT?or\+j
+s.97nq6Bn$rJ^Q/mtULRs&o;2s%EA]g&M'PJcC<$q>^HpX8d\~>
+[K$7,JcC<$ec5XLTE!%4l$MCgrVt^Qs8W*!jo;[dq#LBnZi9d+Jc:6"U&LP]rrBn8rr at WMU&Y,m
+TtgU-JcCH(rr at WMQiI'cRK*9eci<m0gRS);o;)Dao;)Diq6KUqq5"%rs/5JgrrB2$s*4Pos$$HD
+r@%[rrB^B<q]PJXq()>#rug\Kq^;=^obRKLrrD@#nOqmXo1PJes%EA-g&M'PJcC<$q>^HpX8d\~>
+[K$7,JcC<$fDkjN`W,r<h>beos-N,;q3UuCrKlhCqu>bNp](6nh>bAcq#LBnrrE#tWD!0iJP31>
+r;_CAqb*@WrrBt:rr at WMU&Y,mTg/PWJcCH(rr at WMRK*9eQiI'cci<m"gP>TPo7-^domd!`q/GqI
+q1&E`s*XG<rrB2$rSde at s6p!Js5!Y4s3CSkqqUr2rT!_:q:sfkp$M_ at n,;eUiViBIU&G#frVc]o
+s8C^Prr at WMS,`EekPtP^s8W*!X8d\~>
+[K$7,JcC<$fDkjN`W,r<h>cS0nQ,Nrp$__GrUKpWq=4 at Qs+C!)q3q3\pTXV.ou@$Zp](6nh>bCV
+qjdZdrVultrVu9Kq=F at ErU]^GrU]^GrU]^Gs7?2eq<7SEqrm_Es8M]Tp[dq=qt'4=qt'^@p#u)?
+p"erts7>X6n`]qAp#qgkn&CdqrrBt:rr at WMU&Y,mU&Y,mJcCH(rr at WMRK*9eQiI'cci8q%oDegj
+XoJ4qrTF.Xqrd):htmBAs7,XVs7-'CrU]pbrTO4=n`]l>rS%)(s6]L=q;)#@s60:'rPJTHrP/<;
+pT=IprP8B>q6Baus/PsQm=t at RrE9/2rDrqig].9RJcD5>r;c$\rrE*!rrB,"J,~>
+[K$7,JcC<$fDkjN`W,r<h>bh#s*O-_q0W!grHml0qu>dWp](6nh>bClqm-5%rVultrVrkrrN_"R
+YQ"L+Jc>QGRK*9e_uK`:JcDGDrrAb=rr at WML&_/QJcD/<rrADcrrCCFqj?-.q5<h[rMT=as0)7(
+o<7tcs0D[&oDegjXoJ>cs#U09rt58JrB^H3r?M1tpF#nlq()8!m2Z!NpDj&Gr?;1Vr;c:%nOqgV
+o1PPgrCd/+g].9RJcD5>r;c$\rrE*!rrB,"J,~>
+[K$7,JcC<$fDkjN`W,r<h>beos-N,;q3UuCrKlhCqu>bNp](6nh>bAcq#LBnrrE#tWD!0iJP31>
+r;_CAqb*@WrrBt:rr at WMU&Y,mTg/PWJcCH(rr at WMRK*9eQiI'cci<m"gP>TPo7-^domd!`q/GqI
+q1&E`s*XG<rrB2$rSde at s6p!Js5!Y4s3CSkqqUr2rT!_:q:sfkp$M_ at n,;eUiViBIU&G#frVc]o
+s8C^Prr at WMS,`EekPtP^s8W*!X8d\~>
+[K$7,JcC<$fDkjN`W,r<h>cS0nQ,Nrp$__GrUKpWq=4 at Qs+C!)q3q3\pTXV.ou@$Zp](6nh>bCV
+qjdZdrVultrVu9Kq=F at ErU]^GrU]^GrU]^Gs7?2eq<7SEqrm_Es8M]Tp[dq=qt'4=qt'^@p#u)?
+p"erts7>X6n`]qAp#qgkn&CdqrrBt:rr at WMU&Y,mU&Y,mJcCH(rr at WMRK*9eQiI'cci8q%oDegj
+XoJ4qrTF.Xqrd):htmBAs7,XVs7-'CrU]pbrTO4=n`]l>rS%)(s6]L=q;)#@s60:'rPJTHrP/<;
+pT=IprP8B>q6Baus/PsQm=t at RrE9/2rDrqig].9RJcD5>r;c$\rrE*!rrB,"J,~>
+[K$7,JcC<$fDkjN`W,r<h>bh#s*O-_q0W!grHml0qu>dWp](6nh>bClqm-5%rVultrVrkrrN_"R
+YQ"L+Jc>QGRK*9e_uK`:JcDGDrrAb=rr at WML&_/QJcD/<rrADcrrCCFqj?-.q5<h[rMT=as0)7(
+o<7tcs0D[&oDegjXoJ>cs#U09rt58JrB^H3r?M1tpF#nlq()8!m2Z!NpDj&Gr?;1Vr;c:%nOqgV
+o1PPgrCd/+g].9RJcD5>r;c$\rrE*!rrB,"J,~>
+[K$7,JcC<$RK*9eiW%:ue!0`rnOri\lV$^HrrC[NcV+-8rCch`UJ(OcJP2D(rrA6UJcFL)r;_EK
+U&Y,mTg/PWJcCH(rr at WMJcC<$q>^DNfn]BNo7-^dpOE-`q/GkGqg\Q`s*XM>rrB8&s5!_6s5*e?
+s6p!Js1eNTqq:l%rTaF at qr@G6qqV/.g$8>!rTEkPnc%ACoDYH^s8)]ms8N&sJcC<$ec5XLs8W*!
+X8d\~>
+[K$7,JcC<$RK*9eiW%q2moKDTp$_MAq=4LUs7-'Yqt']FpR;'\pTXP,qo8+)rrC[Ncfk7rrTNqS
+l0/*;oB?5Gj66O7p#uAGs60EOqrmqKq<7MCs5!;1qt'4=s7>R?rU]j at p#u/AoA/ftl.tOdn^7Ak
+V:"bOJcFL)r;_EKU&Y,mU&Y,mJcCH(rr at WMJcC<$q>Z<Mp&G$lYQ+Y%q>L?hqrd):htm6IrUKFT
+qsj^As6'4VrTO:\oB?)Gs7$'Bq;2)Ap#?"qqq_5BrTO.'rPJTRrP/69qlTh7rP8<<q6BaurMogQ
+m=t at Rs&o;2s&T.hJcC<$ec5XLs8W*!X8d\~>
+[K$7,JcC<$RK*9eiW%=)dsq7Anc&Leli-AQrrC[Nci3gIrVlKiU]14tJc;):s0 at jfJcFL)r;_EK
+U&Y,mU!N`=JcCH(rr at WMJcC<$q>^D\fpql9o;)>_pS at bkq6KOoqkX1rs/5PirrB8&s*4Q0s$crK
+s"j[-s#0g+q`=U4r?qV#q_%Unq_nC/mi;3PnJqKNq\K,1obR'jh%oTTRhl#srt^1cJcF:#rrE*!
+rrB,"J,~>
+[K$7,JcC<$RK*9eiW%:ue!0`rnOri\lV$^HrrC[NcV+-8rCch`UJ(OcJP2D(rrA6UJcFL)r;_EK
+U&Y,mTg/PWJcCH(rr at WMJcC<$q>^DNfn]BNo7-^dpOE-`q/GkGqg\Q`s*XM>rrB8&s5!_6s5*e?
+s6p!Js1eNTqq:l%rTaF at qr@G6qqV/.g$8>!rTEkPnc%ACoDYH^s8)]ms8N&sJcC<$ec5XLs8W*!
+X8d\~>
+[K$7,JcC<$RK*9eiW%q2moKDTp$_MAq=4LUs7-'Yqt']FpR;'\pTXP,qo8+)rrC[Ncfk7rrTNqS
+l0/*;oB?5Gj66O7p#uAGs60EOqrmqKq<7MCs5!;1qt'4=s7>R?rU]j at p#u/AoA/ftl.tOdn^7Ak
+V:"bOJcFL)r;_EKU&Y,mU&Y,mJcCH(rr at WMJcC<$q>Z<Mp&G$lYQ+Y%q>L?hqrd):htm6IrUKFT
+qsj^As6'4VrTO:\oB?)Gs7$'Bq;2)Ap#?"qqq_5BrTO.'rPJTRrP/69qlTh7rP8<<q6BaurMogQ
+m=t at Rs&o;2s&T.hJcC<$ec5XLs8W*!X8d\~>
+[K$7,JcC<$RK*9eiW%=)dsq7Anc&Leli-AQrrC[Nci3gIrVlKiU]14tJc;):s0 at jfJcFL)r;_EK
+U&Y,mU!N`=JcCH(rr at WMJcC<$q>^D\fpql9o;)>_pS at bkq6KOoqkX1rs/5PirrB8&s*4Q0s$crK
+s"j[-s#0g+q`=U4r?qV#q_%Unq_nC/mi;3PnJqKNq\K,1obR'jh%oTTRhl#srt^1cJcF:#rrE*!
+rrB,"J,~>
+[K$7,JcC<$kPtJ\QiGT/rJ:K<l]C"gpIkJbmn;pFrrCIHgIqDDs%E:jrCch`T1f+_JP2P,rrA0S
+JcFR+r;_EKU&Y,mTg/PWJcCH(rr at WMWW2nsJcF:#rJK?bpO)R^rI"?hs)dpQo5skZrG_dap&G$l
+YQ+XVs5F"'s3gl%s2P)ds3CSrqqV#*qr at G6qqV/.e*?brrTF"Tnc%;AoDY<ZrVliqec5XLJcC<$
+rrB,"J,~>
+[K$7,JcC<$kPtJ\QiH)=o2b\Tp$__Gs6opUp$r"Oqt'jYrU^&Lq3q9^pTXP,s2O='rrCIHgZ\O)
+s60EOrTNqSVs+0Pqrn!Ks60 at Oq<7MCs5!;1rU]@=s7>L=p"f<)qt'@6n*&rjlfd``s+[Z'jh$*D
+h>dERJcDGDrrAbmrr at WML&_/QJcD_Lr;_EKec1L)p&G$lYQ+S"s7uQTjn[g1oDARXs82iooDARX
+rUU!drTF.XrTO.XpZVGIs7?'CrU^'RpYu.qs5!SDqrn"'s2+ZPrP/69s/l=Hs24fTs1nN>pTaOs
+s/Q$il\>.PrFGk-s&IVLrr at WMJcG`MX8d\~>
+[K$7,JcC<$kPtJ\QiGV8rJLW)l[n#Dp\t-kn,DSOrrCIHg]%)Us8Mu&rVlKiTDnepJc;5>s0 at dd
+JcFR+r;_EKU&Y,mU!N`=JcCH(rr at WMWW2nsJcF:#rKu?0pS[VYrMTCcs0)+$o<8%erNcI$p&G$l
+YQ+Vns$?ZRs!.IZs%NGYs$clIq_nI1q_J%$pFH,!rA3s`pF#PPq^;1Tr;cX/nOqUPo1PVirCd/+
+ec5XLJcC<$rrB,"J,~>
+[K$7,JcC<$kPtJ\QiGT/rJ:K<l]C"gpIkJbmn;pFrrCIHgIqDDs%E:jrCch`T1f+_JP2P,rrA0S
+JcFR+r;_EKU&Y,mTg/PWJcCH(rr at WMWW2nsJcF:#rJK?bpO)R^rI"?hs)dpQo5skZrG_dap&G$l
+YQ+XVs5F"'s3gl%s2P)ds3CSrqqV#*qr at G6qqV/.e*?brrTF"Tnc%;AoDY<ZrVliqec5XLJcC<$
+rrB,"J,~>
+[K$7,JcC<$kPtJ\QiH)=o2b\Tp$__Gs6opUp$r"Oqt'jYrU^&Lq3q9^pTXP,s2O='rrCIHgZ\O)
+s60EOrTNqSVs+0Pqrn!Ks60 at Oq<7MCs5!;1rU]@=s7>L=p"f<)qt'@6n*&rjlfd``s+[Z'jh$*D
+h>dERJcDGDrrAbmrr at WML&_/QJcD_Lr;_EKec1L)p&G$lYQ+S"s7uQTjn[g1oDARXs82iooDARX
+rUU!drTF.XrTO.XpZVGIs7?'CrU^'RpYu.qs5!SDqrn"'s2+ZPrP/69s/l=Hs24fTs1nN>pTaOs
+s/Q$il\>.PrFGk-s&IVLrr at WMJcG`MX8d\~>
+[K$7,JcC<$kPtJ\QiGV8rJLW)l[n#Dp\t-kn,DSOrrCIHg]%)Us8Mu&rVlKiTDnepJc;5>s0 at dd
+JcFR+r;_EKU&Y,mU!N`=JcCH(rr at WMWW2nsJcF:#rKu?0pS[VYrMTCcs0)+$o<8%erNcI$p&G$l
+YQ+Vns$?ZRs!.IZs%NGYs$clIq_nI1q_J%$pFH,!rA3s`pF#PPq^;1Tr;cX/nOqUPo1PVirCd/+
+ec5XLJcC<$rrB,"J,~>
+[K$7,JcC<$JcGWIf1Z'uh2qGsqiL?4rCd%foh4iTrrD`lrrC=Dk=bUNo1ScVSP/t_s%E at lJP1Pe
+X\46Fg].9RJcDGDrrA`Wrr at WML&_/QJcFF'rr at WMU]::MgP>HLomcpfpOE3bol0GCrI=ips)A!c
+rrDfnrrBJ,r;ckqs2tA[s3gr#s5X.!s3^khs3CSrqqV),q;_;6qqV#*dH^PprTF.XoD[;=p&=dc
+s6%Z*p&=.Qs8N&se,TFJJcCB&rrB,"J,~>
+[K$7,JcC<$JcGWIj%K&Gp[7_CrUB^QrUB^Ss7#pUrUU![qss^WrUg&Wqu?Dps1 at h$rrD`lrrC=D
+kNM`3oB>lIfBE1hp#uA1p#uA1lfeA=s60KQs60LSp#u5Cqq^r/s7=Y%oA0*'rU]F4oB>;ln`Zmu
+rPm<uJcFL)rr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcDMFM>dGSp](6n[K$1*s7#pKjn[g1n,)eU
+rVQKiqssX^rTF.Cp\t-Tq=jjas5a.8qt'^Lqr7Y"rQkN*rU]jKrQtM^s0)IAs1eN=rRLqqq8W6<
+q6Baus/Q$is3^SQpP/E\rFGq at s&T.he,TFJJcCB&rrB,"J,~>
+[K$7,JcC<$JcGWIfDb`+h1GHPqh"?frVl]op&=L]rrD`lrrC=DkPk:_oD\F_Sc8Yps8N&(Jc:6"
+Xo<nOg].9RJcDGDrrAb=rr at WML&_/QJcFF'rr at WMU]::[gRRr7oq_PapS at hmos4+krM9Iks0D[&
+rrDfnrrBJ,r;ckBs""+(s!.P)s"==Fs$?ZUs$clIq_n=,q(DInq_n7+o,RKPoc3cTr>bVKr;cd3
+o1RULoh5)rrrC:Zoh4H`s%EA-e,TFJJcCB&rrB,"J,~>
+[K$7,JcC<$JcGWIf1Z'uh2qGsqiL?4rCd%foh4iTrrD`lrrC=Dk=bUNo1ScVSP/t_s%E at lJP1Pe
+X\46Fg].9RJcDGDrrA`Wrr at WML&_/QJcFF'rr at WMU]::MgP>HLomcpfpOE3bol0GCrI=ips)A!c
+rrDfnrrBJ,r;ckqs2tA[s3gr#s5X.!s3^khs3CSrqqV),q;_;6qqV#*dH^PprTF.XoD[;=p&=dc
+s6%Z*p&=.Qs8N&se,TFJJcCB&rrB,"J,~>
+[K$7,JcC<$JcGWIj%K&Gp[7_CrUB^QrUB^Ss7#pUrUU![qss^WrUg&Wqu?Dps1 at h$rrD`lrrC=D
+kNM`3oB>lIfBE1hp#uA1p#uA1lfeA=s60KQs60LSp#u5Cqq^r/s7=Y%oA0*'rU]F4oB>;ln`Zmu
+rPm<uJcFL)rr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcDMFM>dGSp](6n[K$1*s7#pKjn[g1n,)eU
+rVQKiqssX^rTF.Cp\t-Tq=jjas5a.8qt'^Lqr7Y"rQkN*rU]jKrQtM^s0)IAs1eN=rRLqqq8W6<
+q6Baus/Q$is3^SQpP/E\rFGq at s&T.he,TFJJcCB&rrB,"J,~>
+[K$7,JcC<$JcGWIfDb`+h1GHPqh"?frVl]op&=L]rrD`lrrC=DkPk:_oD\F_Sc8Yps8N&(Jc:6"
+Xo<nOg].9RJcDGDrrAb=rr at WML&_/QJcFF'rr at WMU]::[gRRr7oq_PapS at hmos4+krM9Iks0D[&
+rrDfnrrBJ,r;ckBs""+(s!.P)s"==Fs$?ZUs$clIq_n=,q(DInq_n7+o,RKPoc3cTr>bVKr;cd3
+o1RULoh5)rrrC:Zoh4H`s%EA-e,TFJJcCB&rrB,"J,~>
+[K$7,JcF'rrrB%urr at uWfh;@$nV-4hqh=X'nWa"PpIjoRrrD`lrrC1 at nOrTVnOrQTR7mP[s%E:j
+Y=nlqJP5qALJ*^.r;b=Hrr at WMU&Y,mTg/PWJcCH(rr at WMg&M'PJcDMFrJK?bomHF^rI"EjrH.^O
+nT=_Zs*Xics*XhHp](6n\,Z=*s1/0As3CSrs24lVrQ>)lrS7A&qr%A3pZMG/q:>T!pZ(r3s5<#(
+qsFFHs0D7qe,At=qu-QXfDXb/n,<4as8 at NKg].9RO8o4[nc/UhX8d\~>
+[K$7,JcF'rrrB%urr at uWiCiuIp$VYErU0FKrUBdUqsaRSp%&(Qp[nFapTX&brrD`lrrC1 at n`]_;
+n`]ZGjll[!pZVM1pZVM1pZVM1p#uA1q<7jKs60EOp#u;Eq;'ljrS@#-s.',Qn_Nm%l.u*thqe%j
+mEtleajKRsdCYJ>r;b=Hrr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcDMFM>dGSp](6n\,Z=*s6&A:
+j8/<Cj8AlHs8;Wis6'Efp&>!TqtL!arT+"8q=FLJrSmk=s3LT(s7?!Ks3U_`s0)C?s0MOOq8WHM
+q6g%'s/u7Tq9e`ErJ(&bs(D at Bs&T//s"]0*g].9RO8o4[nc/UhX8d\~>
+[K$7,JcF'rrrB%urr at uWg&D#/nVudbqi13!nULN;p\sR[rrD`lrrC1 at nc&9gnc&4]RK!5ls8Mu&
+YQ"R-Jc>VRL]3A7r;b=Hrr at WMU&Y,mU!N`=JcCH(rr at WMg&M'PJcDMFrKu?0or%JYrMTIerNGn"
+nZVnes/5n&s/5ksp](6n\,Z=*s#pBas$clIs%r_hrCHlJrAOU;q_J%$pFH,!q*"a=pET\XpF#ts
+pDiuVpDj&Gr;cXdrDrqkdh_ULq\K23f,!C>mhYjprrI]Ng].9RO8o4[nc/UhX8d\~>
+[K$7,JcF'rrrB%urr at uWfh;@$nV-4hqh=X'nWa"PpIjoRrrD`lrrC1 at nOrTVnOrQTR7mP[s%E:j
+Y=nlqJP5qALJ*^.r;b=Hrr at WMU&Y,mTg/PWJcCH(rr at WMg&M'PJcDMFrJK?bomHF^rI"EjrH.^O
+nT=_Zs*Xics*XhHp](6n\,Z=*s1/0As3CSrs24lVrQ>)lrS7A&qr%A3pZMG/q:>T!pZ(r3s5<#(
+qsFFHs0D7qe,At=qu-QXfDXb/n,<4as8 at NKg].9RO8o4[nc/UhX8d\~>
+[K$7,JcF'rrrB%urr at uWiCiuIp$VYErU0FKrUBdUqsaRSp%&(Qp[nFapTX&brrD`lrrC1 at n`]_;
+n`]ZGjll[!pZVM1pZVM1pZVM1p#uA1q<7jKs60EOp#u;Eq;'ljrS@#-s.',Qn_Nm%l.u*thqe%j
+mEtleajKRsdCYJ>r;b=Hrr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcDMFM>dGSp](6n\,Z=*s6&A:
+j8/<Cj8AlHs8;Wis6'Efp&>!TqtL!arT+"8q=FLJrSmk=s3LT(s7?!Ks3U_`s0)C?s0MOOq8WHM
+q6g%'s/u7Tq9e`ErJ(&bs(D at Bs&T//s"]0*g].9RO8o4[nc/UhX8d\~>
+[K$7,JcF'rrrB%urr at uWg&D#/nVudbqi13!nULN;p\sR[rrD`lrrC1 at nc&9gnc&4]RK!5ls8Mu&
+YQ"R-Jc>VRL]3A7r;b=Hrr at WMU&Y,mU!N`=JcCH(rr at WMg&M'PJcDMFrKu?0or%JYrMTIerNGn"
+nZVnes/5n&s/5ksp](6n\,Z=*s#pBas$clIs%r_hrCHlJrAOU;q_J%$pFH,!q*"a=pET\XpF#ts
+pDiuVpDj&Gr;cXdrDrqkdh_ULq\K23f,!C>mhYjprrI]Ng].9RO8o4[nc/UhX8d\~>
+[K$7,JcF'rrrB,"rr at uWfh;-pmt1 at prK-W)kE,_/s.KCZqb,]DrrC+>q+LSbktCXJO\>WQZV1;u
+JP1Vgli6tbJcGECrr at WMU&Y,mTg/PWJcCH(rr at WM\c;U.JcE^hrJK?bomHF^rI"EjrH.^OnT=_Z
+s*Xics*XM>rrBt:rrE#tqZ-Rfs.',:s2tAes4R at gs1eTVs3CSrs4mM&rS[M3rTF(9p"')plf8#u
+hs171s3LYLs3LN?dJ`b;fDX>#oDS^gs8 at NKg].9RNW9"YoDegjX8d\~>
+[K$7,JcF'rrrB,"rr at uWfh;50n*]r=rUBjWq=+ at Qs763[q==FSq=OR_qlniTrrC+>q<7^Gl0.a=
+p#uA1pZVG/q<7Y1q<7Y1q<7Y1q<7_3n`]qApZVYKpYGN+s5!)+qq^f+s.&K4q<7e)leVC#rR'T[
+qrkT<iPs?Yli6tbJcGECrr at WMU&Y,mU&Y,mJcCH(rr at WM\c;U.JcE^hM>d,IrrBt:rrE#tqZ-TB
+s7"e=n+uMMn,34aoDJRcs75^YrNcJ%q>UEms7c?cqrIeRqt'XJoB$#DpZV at jpXT;dq8W0:s0;7Q
+p!N6?q/?:DrFc.2s%.eAg].9RNW9"YoDegjX8d\~>
+[K$7,JcF'rrrB,"rr at uWqt&_Eq2Oj*q1\d!o8Vpbs,I&1s,-^Qg].9Ra8bu7qm,JcoDasPrN`d/
+s0 at 4TKDt3:rr at WMp&G$lJcDGDrrAb=rr at WML&_/QJcE:\r;_EK`W,n(gRRr7oq_Paq5!tmos4+k
+rM9Iks0D[&p&G$l_uK`:rVu`prVlhLs$?ZUs$crKrD<Mms%*/YrAss:q`Xm5q(DUrq_Ih-rAsTr
+pFcJ,pDioTo,RcFs%*(gs%)rdru'9$oh3mPf1Y]Ns%EA-JcFL)rrA&YrrDZjrrB,"J,~>
+[K$7,JcF'rrrB,"rr at uWfh;-pmt1 at prK-W)kE,_/s.KCZqb,]DrrC+>q+LSbktCXJO\>WQZV1;u
+JP1Vgli6tbJcGECrr at WMU&Y,mTg/PWJcCH(rr at WM\c;U.JcE^hrJK?bomHF^rI"EjrH.^OnT=_Z
+s*Xics*XM>rrBt:rrE#tqZ-Rfs.',:s2tAes4R at gs1eTVs3CSrs4mM&rS[M3rTF(9p"')plf8#u
+hs171s3LYLs3LN?dJ`b;fDX>#oDS^gs8 at NKg].9RNW9"YoDegjX8d\~>
+[K$7,JcF'rrrB,"rr at uWfh;50n*]r=rUBjWq=+ at Qs763[q==FSq=OR_qlniTrrC+>q<7^Gl0.a=
+p#uA1pZVG/q<7Y1q<7Y1q<7Y1q<7_3n`]qApZVYKpYGN+s5!)+qq^f+s.&K4q<7e)leVC#rR'T[
+qrkT<iPs?Yli6tbJcGECrr at WMU&Y,mU&Y,mJcCH(rr at WM\c;U.JcE^hM>d,IrrBt:rrE#tqZ-TB
+s7"e=n+uMMn,34aoDJRcs75^YrNcJ%q>UEms7c?cqrIeRqt'XJoB$#DpZV at jpXT;dq8W0:s0;7Q
+p!N6?q/?:DrFc.2s%.eAg].9RNW9"YoDegjX8d\~>
+[K$7,JcF'rrrB,"rr at uWqt&_Eq2Oj*q1\d!o8Vpbs,I&1s,-^Qg].9Ra8bu7qm,JcoDasPrN`d/
+s0 at 4TKDt3:rr at WMp&G$lJcDGDrrAb=rr at WML&_/QJcE:\r;_EK`W,n(gRRr7oq_Paq5!tmos4+k
+rM9Iks0D[&p&G$l_uK`:rVu`prVlhLs$?ZUs$crKrD<Mms%*/YrAss:q`Xm5q(DUrq_Ih-rAsTr
+pFcJ,pDioTo,RcFs%*(gs%)rdru'9$oh3mPf1Y]Ns%EA-JcFL)rrA&YrrDZjrrB,"J,~>
+[K$7,JcC<$JcFItqh=3bqi1E'onDXls.KCWs+UE=h>dFHrrDR^ec5LHj%K(FMbF!KJP1Pe[nH&e
+rr at WMp&G$lJcDGDrrA`Wrr at WML&_/QJcC<$JcGWIrJK9`omHL`q0`'hrH.^Omr\MXrG_H0rrC%<
+q#L.^s1eT at s3CYmrPSZMrQ>/cs4R.trS[S5pYbYoqq:AsrRq#,pZq_Ap[%pus3L_TrNcIOs8L:A
+p&<kIci3V9rVliqJcC<$fDkjNX8d\~>
+[K$7,JcC<$JcFItq<dY=p[A.OrU9ROq=44MrU]dUrVccirVbRPrNQ;%pUg=Bec5XLrLDp3p&FXI
+rS at 53q;(r3p"fT1pYG`1pYGZ/q;(f/rS at G9rLEcKs7>p>q<7_3n`]`'oB>Mrqrmq)leVO'q9e0W
+s6.5Ff>c:Oli6tbJcGECrr at WMU&Y,mU&Y,mJcCH(rr at WMJcC<$qu;HMp&G$l`W,`6pX.gmnbV_O
+nbi"WrVZEgs75XWs6'?ds8Dusp\k'erT*eNs7?3Rq<[e9pZVY5qo/TtrS7;#rQ>#Ws1A6;mG7H_
+n[ngtqeuL\rFc.2s'l")JcC<$fDkjNX8d\~>
+[K$7,JcC<$JcGE7kPk@<kE5Xqq2t?0kCWYlrJKG2rVlfsnc%)=rrE#'j8S`OMuN[\Jc:6"\,P^n
+rr at WMp&G$lJcDGDrrAb=rr at WML&_/QJcC<$JcGWIrKu9.or%P[q5=+crNGn"n#u\crNc+rrrC%<
+q#L0gs&8r(s$crQrD<MmrCHrWs#Tm;rA+7&pG2>'q`=Ntoe-2(q]l+npF#hXpDa-=s%*/Er<rX%
+s&T.Fq&.d"oh40XcV*pHrCd/+JcC<$fDkjNX8d\~>
+[K$7,JcC<$JcFItqh=3bqi1E'onDXls.KCWs+UE=h>dFHrrDR^ec5LHj%K(FMbF!KJP1Pe[nH&e
+rr at WMp&G$lJcDGDrrA`Wrr at WML&_/QJcC<$JcGWIrJK9`omHL`q0`'hrH.^Omr\MXrG_H0rrC%<
+q#L.^s1eT at s3CYmrPSZMrQ>/cs4R.trS[S5pYbYoqq:AsrRq#,pZq_Ap[%pus3L_TrNcIOs8L:A
+p&<kIci3V9rVliqJcC<$fDkjNX8d\~>
+[K$7,JcC<$JcFItq<dY=p[A.OrU9ROq=44MrU]dUrVccirVbRPrNQ;%pUg=Bec5XLrLDp3p&FXI
+rS at 53q;(r3p"fT1pYG`1pYGZ/q;(f/rS at G9rLEcKs7>p>q<7_3n`]`'oB>Mrqrmq)leVO'q9e0W
+s6.5Ff>c:Oli6tbJcGECrr at WMU&Y,mU&Y,mJcCH(rr at WMJcC<$qu;HMp&G$l`W,`6pX.gmnbV_O
+nbi"WrVZEgs75XWs6'?ds8Dusp\k'erT*eNs7?3Rq<[e9pZVY5qo/TtrS7;#rQ>#Ws1A6;mG7H_
+n[ngtqeuL\rFc.2s'l")JcC<$fDkjNX8d\~>
+[K$7,JcC<$JcGE7kPk@<kE5Xqq2t?0kCWYlrJKG2rVlfsnc%)=rrE#'j8S`OMuN[\Jc:6"\,P^n
+rr at WMp&G$lJcDGDrrAb=rr at WML&_/QJcC<$JcGWIrKu9.or%P[q5=+crNGn"n#u\crNc+rrrC%<
+q#L0gs&8r(s$crQrD<MmrCHrWs#Tm;rA+7&pG2>'q`=Ntoe-2(q]l+npF#hXpDa-=s%*/Er<rX%
+s&T.Fq&.d"oh40XcV*pHrCd/+JcC<$fDkjNX8d\~>
+[K$7,JcCN*r;_EKh+R]ms**FRs,HW%pP&Kro7d40rLj%Qs-W-PnOrl^j\+k<q#LHpr;bqPp&Be?
+qZ)1?JP3OHJcFX-rr at WMU&Y,mTg/PWJcCH(rr at WMa8c/>JcG!7rrCIHrJK9`omHL`q0`-jqfMLM
+mr\MXrG_H0rrC1 at qZ-4\s0D[Ps0VgHs3gqbs1JBHs2tAes4RG#q:>N&s5X(6p#,Moq:Y5sqq:N#
+na-:orQ+lKs0D[Qs7"51p\s at S`W#W1s8N&siW&oXli6n`JcCr6rrB,"J,~>
+[K$7,JcCN*r;_EKh+RM0n*]`7q=+FSs7#pUq==LUp[n(Uli7!]os"J.rrDf*n&FVlq#LHprrE(h
+jllC;rS at 53q;(r3p"fZ3oA0H1oA0H1oA0B/pYGZ/qq_/5qjd]MoA0<-q;(Z+p"f6'leVO'q9eH_
+pX/$W_pQfMdCXu0huE]VJcDGDrrAbmrr at WML&_/QJcEdjrr at WMl2Ub`dJo"#p&G$laoD5<q8W<Z
+s7#.Gn+uSOn,16)s6'EfnbrLas5`qNs6odMs7cKYq;qS/qrn"7s2FltrS7;#rQ>)YkM>aWn[nar
+rGV^Hs(D at Is&T/%iW&oXli6n`JcCr6rrB,"J,~>
+[K$7,JcCN*r;_EKmITlIrL!VTiK=.oo9&d,qiUE.rIXp+s,-.Bnc&Ogjo4NEq#LHprrE))jo4rQ
+L]71VJc:6"\c.0[huE]VJcDGDrrAb=rr at WML&_/QJcEdjrr at WMl2Ub`dJs04fpq`5pS at V_rM9=o
+os4%irM9Ctp&G$laoD5<oD\c+s$?Zks%EAWs%r_rs&8qgs$crKs$6BCrA+C*rAF7'of`+3q'5Vd
+q`=U!pFcIno,I^9rEK54s#L)es%r_>obm!0rupnJpIjZb`Coq at s%EA-iW&oXli6n`JcCr6rrB,"
+J,~>
+[K$7,JcCN*r;_EKh+R]ms**FRs,HW%pP&Kro7d40rLj%Qs-W-PnOrl^j\+k<q#LHpr;bqPp&Be?
+qZ)1?JP3OHJcFX-rr at WMU&Y,mTg/PWJcCH(rr at WMa8c/>JcG!7rrCIHrJK9`omHL`q0`-jqfMLM
+mr\MXrG_H0rrC1 at qZ-4\s0D[Ps0VgHs3gqbs1JBHs2tAes4RG#q:>N&s5X(6p#,Moq:Y5sqq:N#
+na-:orQ+lKs0D[Qs7"51p\s at S`W#W1s8N&siW&oXli6n`JcCr6rrB,"J,~>
+[K$7,JcCN*r;_EKh+RM0n*]`7q=+FSs7#pUq==LUp[n(Uli7!]os"J.rrDf*n&FVlq#LHprrE(h
+jllC;rS at 53q;(r3p"fZ3oA0H1oA0H1oA0B/pYGZ/qq_/5qjd]MoA0<-q;(Z+p"f6'leVO'q9eH_
+pX/$W_pQfMdCXu0huE]VJcDGDrrAbmrr at WML&_/QJcEdjrr at WMl2Ub`dJo"#p&G$laoD5<q8W<Z
+s7#.Gn+uSOn,16)s6'EfnbrLas5`qNs6odMs7cKYq;qS/qrn"7s2FltrS7;#rQ>)YkM>aWn[nar
+rGV^Hs(D at Is&T/%iW&oXli6n`JcCr6rrB,"J,~>
+[K$7,JcCN*r;_EKmITlIrL!VTiK=.oo9&d,qiUE.rIXp+s,-.Bnc&Ogjo4NEq#LHprrE))jo4rQ
+L]71VJc:6"\c.0[huE]VJcDGDrrAb=rr at WML&_/QJcEdjrr at WMl2Ub`dJs04fpq`5pS at V_rM9=o
+os4%irM9Ctp&G$laoD5<oD\c+s$?Zks%EAWs%r_rs&8qgs$crKs$6BCrA+C*rAF7'of`+3q'5Vd
+q`=U!pFcIno,I^9rEK54s#L)es%r_>obm!0rupnJpIjZb`Coq at s%EA-iW&oXli6n`JcCr6rrB,"
+J,~>
+[K$7,JcC<$RK*9enc.?:s*FWfon)dbj+@;bon*'ps+:!.qj%2Kp&F8LrrCqLp&Fmhnc.iHoDaM;
+rrE'lr;_CAX\8ZoP=pK,r;bmXrr at WMU&Y,mTeHEGJcCH(rr at WMaoDA@JcFp5rrCIHrJK9`o6g@`
+q0`-jrH.XMmr\MXrG_dap](6nec5RJs8Vrrm7[Jos0VgOs2Y/Ws1J<Fs2tAes3gYms5<q2qq^r'
+pX]#joAfl3qqCf*q;qY2rT4(GqsFF)q7Q[As/H%aqsi#2p&=L[]Dh^+rVliqj8],ZJcC<$rVult
+s8W*!X8d\~>
+[K$7,JcC<$RK*9enc.?:p[.G;rU9dSp[@_CrUK^Sqt'XUn,;qZq5*bgrO`(0q7Gh0p&Fmhnc.k;
+oDe^Dqrm_/s60(1s6/M!s60(1s60.3qrme1qrn'Ms60E9oA0H1pYGN+s3^Mqp#tSpp!N0_o?lgY
+c-cQGrR&U(e%:22r;bmXrr at WMU&Y,mU&Y,mJcCH(rr at WMaoDA@JcFp5rrCIHL&LcGrrCULr;clt
+qZ-B1pX/7$n+uSOnbg#ts6'FUnbr:[s8DidrTsRYqs=4AqqCr2s5!YQrT="4rRLqjqrm5!n^6m=
+qka==rFc(<s%qbUrr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$RK*9enc.Y at q>UD]rLEPCo9A9ts,H]6qi192qi1W5p&F:UrrCsUp&Fmhnc.kQoDaOD
+s0D\(rN_"RXoA at +PQ$.5r;bmXrr at WMU&Y,mU#5kMJcCH(rr at WMaoDA@JcFp5rrCIHrKu9.o;DD[
+q5=1erNGgun#u\crNcI$p](6nec5RJs8VrrmJd,as'G^os%EAgs&T(ss%*/Ys$6<As"aU6q_e%%
+pHA11q]khfq`=U!r@[mts#Bs$q&B?<q.BS8s%NG3q\JoDm2#^FmhYRhnJ8`0q\K-'rtaYprr at WM
+JcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$RK*9enc.?:s*FWfon)dbj+@;bon*'ps+:!.qj%2Kp&F8LrrCqLp&Fmhnc.iHoDaM;
+rrE'lr;_CAX\8ZoP=pK,r;bmXrr at WMU&Y,mTeHEGJcCH(rr at WMaoDA@JcFp5rrCIHrJK9`o6g@`
+q0`-jrH.XMmr\MXrG_dap](6nec5RJs8Vrrm7[Jos0VgOs2Y/Ws1J<Fs2tAes3gYms5<q2qq^r'
+pX]#joAfl3qqCf*q;qY2rT4(GqsFF)q7Q[As/H%aqsi#2p&=L[]Dh^+rVliqj8],ZJcC<$rVult
+s8W*!X8d\~>
+[K$7,JcC<$RK*9enc.?:p[.G;rU9dSp[@_CrUK^Sqt'XUn,;qZq5*bgrO`(0q7Gh0p&Fmhnc.k;
+oDe^Dqrm_/s60(1s6/M!s60(1s60.3qrme1qrn'Ms60E9oA0H1pYGN+s3^Mqp#tSpp!N0_o?lgY
+c-cQGrR&U(e%:22r;bmXrr at WMU&Y,mU&Y,mJcCH(rr at WMaoDA@JcFp5rrCIHL&LcGrrCULr;clt
+qZ-B1pX/7$n+uSOnbg#ts6'FUnbr:[s8DidrTsRYqs=4AqqCr2s5!YQrT="4rRLqjqrm5!n^6m=
+qka==rFc(<s%qbUrr at WMJcG]KrrE*!rrB,"J,~>
+[K$7,JcC<$RK*9enc.Y at q>UD]rLEPCo9A9ts,H]6qi192qi1W5p&F:UrrCsUp&Fmhnc.kQoDaOD
+s0D\(rN_"RXoA at +PQ$.5r;bmXrr at WMU&Y,mU#5kMJcCH(rr at WMaoDA@JcFp5rrCIHrKu9.o;DD[
+q5=1erNGgun#u\crNcI$p](6nec5RJs8VrrmJd,as'G^os%EAgs&T(ss%*/Ys$6<As"aU6q_e%%
+pHA11q]khfq`=U!r@[mts#Bs$q&B?<q.BS8s%NG3q\JoDm2#^FmhYRhnJ8`0q\K-'rtaYprr at WM
+JcG]KrrE*!rrB,"J,~>
+[K$7,JcD):r;_WQrrDZjh+Rcoqfi!jhgb*Hqg\9js*t'#nWNd7s,Gu1rrC_FpAjU\lV$pNJP5l5
+r;_CA[nH`$qb-qhPtQ].iW&iVJcDGDrrA`Grr at WML&_/QJcC<$JcGWIrJK9`o6g@`q0`-jrH.XM
+mr\MXrG_dap](6nfDkkDqZ,kRs3^k at s0VgHqn2sDs2t;\s3g_os3L_Uqq^l%qpt_lo@!Nlq;1r$
+n`Bf+p#c:eot^Ols5a4Bq=E#4p\spc[Jp(%s8N&sJcC<$h>dKTs8W*!X8d\~>
+[K$7,JcD):r;_WQrrDZjh+RM0kO/*5oC2_Kp[\:Sq=NqMs-iVWo<A2*rrDr.ho>BjmJlM9p&FjD
+rTL$4rTO"3q<7_'rK6j1s60.3pZVY)oA06+rR'reo?m$_n^6[YdF%uKrR(Ybs*MZ'e%:22iW&iV
+JcDGDrrAbmrr at WML&_/QJcC<$JcGWIL&LcGrrC[Ns2Op9pVugPmJ6;Kn,)YQZ2OXpl2CMNs8Doj
+q<\.CqqD#*s60:Xs5s.4s7?!Kl.tgUo=Omrs02N6s(D at Is&T/%JcC<$h>dKTs8W*!X8d\~>
+[K$7,JcD):r;_WQrrDZjh=LZ5s-rtWrK6!%mudL3oo]9=mudL,s-;RBrrCaOpAjU\li-SWJc>QG
+rN_"R\,QE5qu6W$Q2Z at 7iW&iVJcDGDrrAbMrr at WML&_/QJcC<$JcGWIrKu9.o;DD[q5=1erNGgu
+n#u\crNcI$p](6nfDkmMqZ,m[s$?[(s'G^uqc<_qs%*)]s$6BCs$Qfiq_dt#q`XmFo0E=*oelP+
+r?Cnds#9Tos(:q6r@%[]pD!?>obREJm2#FhpD1/0q\K3)rt^1cJcFR+rrE*!rrB,"J,~>
+[K$7,JcD):r;_WQrrDZjh+Rcoqfi!jhgb*Hqg\9js*t'#nWNd7s,Gu1rrC_FpAjU\lV$pNJP5l5
+r;_CA[nH`$qb-qhPtQ].iW&iVJcDGDrrA`Grr at WML&_/QJcC<$JcGWIrJK9`o6g@`q0`-jrH.XM
+mr\MXrG_dap](6nfDkkDqZ,kRs3^k at s0VgHqn2sDs2t;\s3g_os3L_Uqq^l%qpt_lo@!Nlq;1r$
+n`Bf+p#c:eot^Ols5a4Bq=E#4p\spc[Jp(%s8N&sJcC<$h>dKTs8W*!X8d\~>
+[K$7,JcD):r;_WQrrDZjh+RM0kO/*5oC2_Kp[\:Sq=NqMs-iVWo<A2*rrDr.ho>BjmJlM9p&FjD
+rTL$4rTO"3q<7_'rK6j1s60.3pZVY)oA06+rR'reo?m$_n^6[YdF%uKrR(Ybs*MZ'e%:22iW&iV
+JcDGDrrAbmrr at WML&_/QJcC<$JcGWIL&LcGrrC[Ns2Op9pVugPmJ6;Kn,)YQZ2OXpl2CMNs8Doj
+q<\.CqqD#*s60:Xs5s.4s7?!Kl.tgUo=Omrs02N6s(D at Is&T/%JcC<$h>dKTs8W*!X8d\~>
+[K$7,JcD):r;_WQrrDZjh=LZ5s-rtWrK6!%mudL3oo]9=mudL,s-;RBrrCaOpAjU\li-SWJc>QG
+rN_"R\,QE5qu6W$Q2Z at 7iW&iVJcDGDrrAbMrr at WML&_/QJcC<$JcGWIrKu9.o;DD[q5=1erNGgu
+n#u\crNcI$p](6nfDkmMqZ,m[s$?[(s'G^uqc<_qs%*)]s$6BCs$Qfiq_dt#q`XmFo0E=*oelP+
+r?Cnds#9Tos(:q6r@%[]pD!?>obREJm2#FhpD1/0q\K3)rt^1cJcFR+rrE*!rrB,"J,~>
+[K$7,JcC<$MuVU+q02XUfmigLpOE'lrI=d+mum^)s*F^!s*E]urrCqLqZ-Rfj8\XBp&BS9oh55`
+JP3UJrr at sMJcFd1r;_EKU&Y,mTeHEGJcCH(rr at WMg&M!NJcDYJs,,KbnU1.^q0`-jrH.RKmr\SZ
+rG_dap](6nj8],ZrVumjqZ,YLs1eT at s2Y/ErOi*Ds2=lVrRV"`qmlO8s1eHhrS%"lo@!Zfp"o_t
+q:,5ts5<k<rS7A6rTO:CpT=IprPn[#rT=(Hs6BXVs7,j[h>O,JrVc]os8 at NKJcFL)rrB,"J,~>
+[K$7,JcC<$MuVU+l0\03p[A.OrU9ROrUKXQrU]pYli$YOoqh>cqn)k.qn(t0qg8:]j8\Z5p&F^@
+s6-fFs3^Gos60(1qrmk's5!X9mG7U%qpG)mqrmq)mG7<[oA/f]n(mr^dF%u@]>i71JcFd1r;_EK
+U&Y,mU&Y,mJcCH(rr at WMg&M!NJcDYJL&LcGrrD*ZrrE#ts2Op9pVuUJoD.qQnb_kSV>^AdmJZqR
+qu-9Us6od?rU]jap[e.CkM>USo=OstrNQ65rF5e'JcC<$g].9RX8d\~>
+[K$7,JcC<$MuVW)s-rnUq4H?)q2tE9qiU]=mudX0s-WhGs-VjGrrCsUqm-2"j8\ZKp&BUBp&=oq
+Jc<:\s0 at R^JcFd1r;_EKU&Y,mU#5kMJcCH(rr at WMg&M!NJcDYJs-VK0nYc2Yq5=1erNGasn#ube
+rNcI$p](6nj8],ZrVuosqZ,[Us&8r(s%EB$rDrkqs%`McrB:0Zqc`ers&8eMrAaO=nNd+(pGMt9
+q*4m.q_\=/r at In+r?;+]s!%2[s*=QJq^2=^r=o2Ks!ds]rtb>Lq\K&Pkn^$er>,?)rt^1cJcFL)
+rrB,"J,~>
+[K$7,JcC<$MuVU+q02XUfmigLpOE'lrI=d+mum^)s*F^!s*E]urrCqLqZ-Rfj8\XBp&BS9oh55`
+JP3UJrr at sMJcFd1r;_EKU&Y,mTeHEGJcCH(rr at WMg&M!NJcDYJs,,KbnU1.^q0`-jrH.RKmr\SZ
+rG_dap](6nj8],ZrVumjqZ,YLs1eT at s2Y/ErOi*Ds2=lVrRV"`qmlO8s1eHhrS%"lo@!Zfp"o_t
+q:,5ts5<k<rS7A6rTO:CpT=IprPn[#rT=(Hs6BXVs7,j[h>O,JrVc]os8 at NKJcFL)rrB,"J,~>
+[K$7,JcC<$MuVU+l0\03p[A.OrU9ROrUKXQrU]pYli$YOoqh>cqn)k.qn(t0qg8:]j8\Z5p&F^@
+s6-fFs3^Gos60(1qrmk's5!X9mG7U%qpG)mqrmq)mG7<[oA/f]n(mr^dF%u@]>i71JcFd1r;_EK
+U&Y,mU&Y,mJcCH(rr at WMg&M!NJcDYJL&LcGrrD*ZrrE#ts2Op9pVuUJoD.qQnb_kSV>^AdmJZqR
+qu-9Us6od?rU]jap[e.CkM>USo=OstrNQ65rF5e'JcC<$g].9RX8d\~>
+[K$7,JcC<$MuVW)s-rnUq4H?)q2tE9qiU]=mudX0s-WhGs-VjGrrCsUqm-2"j8\ZKp&BUBp&=oq
+Jc<:\s0 at R^JcFd1r;_EKU&Y,mU#5kMJcCH(rr at WMg&M!NJcDYJs-VK0nYc2Yq5=1erNGasn#ube
+rNcI$p](6nj8],ZrVuosqZ,[Us&8r(s%EB$rDrkqs%`McrB:0Zqc`ers&8eMrAaO=nNd+(pGMt9
+q*4m.q_\=/r at In+r?;+]s!%2[s*=QJq^2=^r=o2Ks!ds]rtb>Lq\K&Pkn^$er>,?)rt^1cJcFL)
+rrB,"J,~>
+[K$7,JcC<$NW7m/s*+KZrHIdQnULLYomd!_qg\Wto7-deo8`X0s,Qu+s+:8ss+UK!o1T)`oh5;b
+k=bUNo1S3Foh4uXJP5N+qZ)1?JP4$VJcF^/rr at WMU&Y,mTeHEGJcCH(rr at WMg&M'PJcDSHs,-9#
+qh+EonU1.^q0`3lqfM at Imr\SZrG_dJp](6njo>>\s%E4hh+RdBs/uCBs0;O8s1eTErQ"rds1e<=
+qn2sDqmlUXq9Slbp!`lrqqq5!s46l$s5O"/rSm_2o<A8Wq<7eGs60LErSm_ at s7?!]j8K#@U]15j
+s8N&s^&S$2JcDMFrrB,"J,~>
+[K$7,JcC<$NW7m/kO%s1naH;CqsjLQrU^']l2CAKrUou_qlp*2rNQ+0rrE#0lc/aIou@$Zjo>#;
+p&FX>s3\71qpG)ms3^GorTO"'rS@@5rR(;oqrmk'p"fT1pX/NemEt[al-]1[pVtn6Z,Yh9nYLg:
+iW&oXJcDGDrrAbmrr at WML&_/QJcFF'rr at WMV>l>Ls6'.VrrD0\rrE)=qZ-$'n^71.nbVeQnbemT
+rV#d[rU]j`qt'^RqrIYGs5!SOp[e.CkM>OQot17DrMBIss(D at Is'l"1^&S$2JcDMFrrB,"J,~>
+[K$7,JcC<$NW7o-s-s%crLEDMnWa!Eop#KKqiq,Co9B9Ao9B'5q3:oAs-WhGs-WEWs0D=srrD6]
+q6KVkjo>#Qp&BUBnc&EkJc:6"a8UYiiW&oXJcDGDrrAbMrr at WML&_/QJcFF'rr at WMV>pR_n!s9I
+nXT-Iq5!has.oOqnZqVes.oV!s,d!TrrD0\rrE)uqZ,IOs)A!Ls%EB$rDrqss'#@os$6T_pKIGp
+s&8euq`+C=m6LV-q_\+5s#pB1pG;h(rB1$*q^M,Ws"4*uruh7Xrt>>HrA"0grtY>Ms![afkna:!
+UJ(P$s%EA-^&S$2JcDMFrrB,"J,~>
+[K$7,JcC<$NW7m/s*+KZrHIdQnULLYomd!_qg\Wto7-deo8`X0s,Qu+s+:8ss+UK!o1T)`oh5;b
+k=bUNo1S3Foh4uXJP5N+qZ)1?JP4$VJcF^/rr at WMU&Y,mTeHEGJcCH(rr at WMg&M'PJcDSHs,-9#
+qh+EonU1.^q0`3lqfM at Imr\SZrG_dJp](6njo>>\s%E4hh+RdBs/uCBs0;O8s1eTErQ"rds1e<=
+qn2sDqmlUXq9Slbp!`lrqqq5!s46l$s5O"/rSm_2o<A8Wq<7eGs60LErSm_ at s7?!]j8K#@U]15j
+s8N&s^&S$2JcDMFrrB,"J,~>
+[K$7,JcC<$NW7m/kO%s1naH;CqsjLQrU^']l2CAKrUou_qlp*2rNQ+0rrE#0lc/aIou@$Zjo>#;
+p&FX>s3\71qpG)ms3^GorTO"'rS@@5rR(;oqrmk'p"fT1pX/NemEt[al-]1[pVtn6Z,Yh9nYLg:
+iW&oXJcDGDrrAbmrr at WML&_/QJcFF'rr at WMV>l>Ls6'.VrrD0\rrE)=qZ-$'n^71.nbVeQnbemT
+rV#d[rU]j`qt'^RqrIYGs5!SOp[e.CkM>OQot17DrMBIss(D at Is'l"1^&S$2JcDMFrrB,"J,~>
+[K$7,JcC<$NW7o-s-s%crLEDMnWa!Eop#KKqiq,Co9B9Ao9B'5q3:oAs-WhGs-WEWs0D=srrD6]
+q6KVkjo>#Qp&BUBnc&EkJc:6"a8UYiiW&oXJcDGDrrAbMrr at WML&_/QJcFF'rr at WMV>pR_n!s9I
+nXT-Iq5!has.oOqnZqVes.oV!s,d!TrrD0\rrE)uqZ,IOs)A!Ls%EB$rDrqss'#@os$6T_pKIGp
+s&8euq`+C=m6LV-q_\+5s#pB1pG;h(rB1$*q^M,Ws"4*uruh7Xrt>>HrA"0grtY>Ms![afkna:!
+UJ(P$s%EA-^&S$2JcDMFrrB,"J,~>
+[K$7,JcF'rrrCgRr;_EKmJl':s(qXXl#ZZMpN-.[qfD^crHn9grJUW)o7Qp]q1&ErrHJ3dpIkMd
+oh5;bm7[<VrCd(hmn;jDq+L>ZJP5H)rrE'lr;b/:rr at UCiCj1NT1ab8p&FsjoDegjJcDGDrrA`G
+rr at WML&_/QJcFp5rrD`lrr at WMV>pRQnV?dirI"ErmsP"^pO)j[nSmr=s*suds'#0srrD<`q#K)@
+rNuO.rOi0Fs1/0Js2Y/Eost%6s0_I/s4[@rrR1GhrQY;dpXo/cp"TAmrS at M3s4dL0p]'d_s0DU$
+nc&LVs7cEep\jjcs0A?ts8Doqs8 at NKj8],ZJcG]KrrB,"J,~>
+[K$7,JcF'rrrCgRr;_EKmJl':kO%s1rU9dSp[@kGrUK^SrU]@RrU]dUp\"Q_q69m0rNQ+0rrE)2
+n&G6OrPne_pW!$VkPtAAoDeL>qpDt1q9ermrR(5ms60.'qq_:7s3^e"oA0H1pX/TgpX0"qoA/`[
+q;)"hld>I_ou>h8iPtnEcc5^kn$)2UJcGECr;cHhrr at WMU&Y,mU&Y,mJcCH(rr at WMkPtP^p&G$l
+JcDSHL].89p](6nl2UPZkJm, at rV?']nb_kSX8Vemnc&Ekp&=p]q>L!XqrmqVs0DJ"p[e4EkM>IO
+pUgCDs/#[us-it#rF5e'JcFd1rr at WMrVultX8d\~>
+[K$7,JcF'rrrCgRr;_EKmJl)8s/,gcs.&>Gq3:WGq3:cKrKR8IpQYWCrM&\Oq3:oArLEhRp\t2u
+p&=skmJd!grVlc$n,DMMq>U!cJc>-;s0D\(rNacKs0 at 4TiVrk_TDjEAp&FsjoDegjJcDGDrrAbM
+rr at WML&_/QJcFp5rrD`lrr at WMV>pR_nXT9ErMTI]n#-&YpS[nlnZqVes.oV!s.&i`rrD<`q#K+I
+rEfG3rDrqss'#Fts%EB$oih;ps'>5"s#BmCo0E7ErC6NBogJI4qa(02s!RgurL!?Zq,[;arrE!5
+nOrg)ruD%er>kVJpIkMdThGD$rCd/+JcFd1rr at WMrVultX8d\~>
+[K$7,JcF'rrrCgRr;_EKmJl':s(qXXl#ZZMpN-.[qfD^crHn9grJUW)o7Qp]q1&ErrHJ3dpIkMd
+oh5;bm7[<VrCd(hmn;jDq+L>ZJP5H)rrE'lr;b/:rr at UCiCj1NT1ab8p&FsjoDegjJcDGDrrA`G
+rr at WML&_/QJcFp5rrD`lrr at WMV>pRQnV?dirI"ErmsP"^pO)j[nSmr=s*suds'#0srrD<`q#K)@
+rNuO.rOi0Fs1/0Js2Y/Eost%6s0_I/s4[@rrR1GhrQY;dpXo/cp"TAmrS at M3s4dL0p]'d_s0DU$
+nc&LVs7cEep\jjcs0A?ts8Doqs8 at NKj8],ZJcG]KrrB,"J,~>
+[K$7,JcF'rrrCgRr;_EKmJl':kO%s1rU9dSp[@kGrUK^SrU]@RrU]dUp\"Q_q69m0rNQ+0rrE)2
+n&G6OrPne_pW!$VkPtAAoDeL>qpDt1q9ermrR(5ms60.'qq_:7s3^e"oA0H1pX/TgpX0"qoA/`[
+q;)"hld>I_ou>h8iPtnEcc5^kn$)2UJcGECr;cHhrr at WMU&Y,mU&Y,mJcCH(rr at WMkPtP^p&G$l
+JcDSHL].89p](6nl2UPZkJm, at rV?']nb_kSX8Vemnc&Ekp&=p]q>L!XqrmqVs0DJ"p[e4EkM>IO
+pUgCDs/#[us-it#rF5e'JcFd1rr at WMrVultX8d\~>
+[K$7,JcF'rrrCgRr;_EKmJl)8s/,gcs.&>Gq3:WGq3:cKrKR8IpQYWCrM&\Oq3:oArLEhRp\t2u
+p&=skmJd!grVlc$n,DMMq>U!cJc>-;s0D\(rNacKs0 at 4TiVrk_TDjEAp&FsjoDegjJcDGDrrAbM
+rr at WML&_/QJcFp5rrD`lrr at WMV>pR_nXT9ErMTI]n#-&YpS[nlnZqVes.oV!s.&i`rrD<`q#K+I
+rEfG3rDrqss'#Fts%EB$oih;ps'>5"s#BmCo0E7ErC6NBogJI4qa(02s!RgurL!?Zq,[;arrE!5
+nOrg)ruD%er>kVJpIkMdThGD$rCd/+JcFd1rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WM`W+ggs(q^Zo5jA=s*F?Vs)\3iolKkSs*t'/omlplqf)4LrI=j!qfi'dlV%6X
+o1Sr\h+R#4rCcb^JP5)tr;b;>rr at UChb3tLThFqUrr@WMp&G$lJcDGDrrA`Grr at WML&_/QJcG!7
+rr at WMQiI)@s,-E'o7R'fs*XWtmsP"^pO)j[nSn)As)A![s*t&rrG_N2rrD`lr;cltqZ,)<s+^QJ
+s/uC,s/Q%1rOMsKs0;U(pUU=0qmGt)s2b5^p!*6Vs2+fTq:bkqqpGGds2"I/q=FL_nc/.Yqt'cl
+Jc>3=s8Duss8 at NKj8],ZJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WM`W+ggn*Tqln&tUSrU9LMrUKXQmJZkPp%7qMqlosopTXYts021.qg7YKo?lh&
+rTNkQp"fAi]A<;1pYG_op"f/crS@:srK6j1o?m<gs2Of\s+^4&l-]Caqo7sLqq^e^j3dn=gW'8?
+f>cXNn"oRSrr at WMp&G$lJcDGDrrAbmrr at WML&_/QJcG!7rr at WMQiD^:p](6np&Fsjs8Vrrji6c:
+s7#j[nbVkSqu"A1l2L5Qli-jgq>UEcp&=^WrTN_Lp[e4EkM>CMpUgIFs/#Uss-it2s'l"1JcFd1
+rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WM`W+ies/,gcs.8nUn$)hfos"Igs-32KpQtiCoqM>UqkEbUrKR>Eqjd\Rli-na
+oD\Wmh>Z[=rVlEgJc=d1rNaoOs0 at 4Thu<Y]U&OT^rr at WMp&G$lJcDGDrrAbMrr at WML&_/QJcG!7
+rr at WMQiI)Us-WDJo:Q&_s/5[_n#-&YpS[nlnZqbis0D[.s.o[mrNc1trrD`lr;cltqZ,+Es-`n+
+s(24>s(M at 3rEB4os'l"ApKIT*qd&_qrCZ`QpI>0[s%iGNs$Z`Os%35hpK%*!qb-JZq,[;aqdTL(
+pIk0[LJ.X_s%EA-JcFd1rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WM`W+ggs(q^Zo5jA=s*F?Vs)\3iolKkSs*t'/omlplqf)4LrI=j!qfi'dlV%6X
+o1Sr\h+R#4rCcb^JP5)tr;b;>rr at UChb3tLThFqUrr@WMp&G$lJcDGDrrA`Grr at WML&_/QJcG!7
+rr at WMQiI)@s,-E'o7R'fs*XWtmsP"^pO)j[nSn)As)A![s*t&rrG_N2rrD`lr;cltqZ,)<s+^QJ
+s/uC,s/Q%1rOMsKs0;U(pUU=0qmGt)s2b5^p!*6Vs2+fTq:bkqqpGGds2"I/q=FL_nc/.Yqt'cl
+Jc>3=s8Duss8 at NKj8],ZJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WM`W+ggn*Tqln&tUSrU9LMrUKXQmJZkPp%7qMqlosopTXYts021.qg7YKo?lh&
+rTNkQp"fAi]A<;1pYG_op"f/crS@:srK6j1o?m<gs2Of\s+^4&l-]Caqo7sLqq^e^j3dn=gW'8?
+f>cXNn"oRSrr at WMp&G$lJcDGDrrAbmrr at WML&_/QJcG!7rr at WMQiD^:p](6np&Fsjs8Vrrji6c:
+s7#j[nbVkSqu"A1l2L5Qli-jgq>UEcp&=^WrTN_Lp[e4EkM>CMpUgIFs/#Uss-it2s'l"1JcFd1
+rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WM`W+ies/,gcs.8nUn$)hfos"Igs-32KpQtiCoqM>UqkEbUrKR>Eqjd\Rli-na
+oD\Wmh>Z[=rVlEgJc=d1rNaoOs0 at 4Thu<Y]U&OT^rr at WMp&G$lJcDGDrrAbMrr at WML&_/QJcG!7
+rr at WMQiI)Us-WDJo:Q&_s/5[_n#-&YpS[nlnZqbis0D[.s.o[mrNc1trrD`lr;cltqZ,+Es-`n+
+s(24>s(M at 3rEB4os'l"ApKIT*qd&_qrCZ`QpI>0[s%iGNs$Z`Os%35hpK%*!qb-JZq,[;aqdTL(
+pIk0[LJ.X_s%EA-JcFd1rr at WMrVultX8d\~>
+[K$7,JcE4Zr;_EKj8\"0s(MFKok=A9eSk>+s)@d\rIFornUU:Oo5jeQs(q^Zm7[HZq+LG^f1YH0
+s%E%bJP4lnr;_CAJP4B`nc/UhJcGECrr at WMU&Y,mTeHEGJcCH(rr at WMJcC<$rVuhRonW'irHS-n
+msP(`omH^[mr8)Eq/H:Ss*Xcap](6np&FmhbtJ)>s.]Ous/Q+(s1J6>rMo\(rNc=.q76I0q6TtC
+pWifcqoSlPs1eTarVlK]rTO(Vq=FL_oDe:Yqt'jerN_"Rnc&Res8N&sJcC<$huE]VX8d\~>
+[K$7,JcE4Zr;_EKj8\"0na5edoum*UqpPH4rUK^Sli$SLp[n"Kq5*bgrrDl,pM^#Bn&FbBli7"K
+p&FX>pX-\1p!NZmq9ermn'V*ipX0#srK7'7s2OZXq;)"ho?mBirPn*Ls5!Ljl-]OemDeD<qn'J[
+dBN)9nc/UhJcGECrr at WMU&Y,mU&Y,mJcCH(rr at WMJcC<$rVqNKp](6np&FmhpUfP,o?mC0nbVkS
+c2H8noDe"QrNbhip[eFKmJckOpZUktkL'+;rPnl6rNQ6hs*"EZs$D;:JcFX-rrB,"J,~>
+[K$7,JcE4Zr;_EKj8\$.s/H$qor7u$rN+\Vqk*n_q3V&Ss/+nPo:PoMs/5memJd+cq>U,ofDb+9
+s8M]kJc=R+rN_"RJc='rnc/UhJcGECrr at WMU&Y,mU#5kMJcCH(rr at WMJcC<$rVuh`opkQErMo[`
+n#-,[or%bln$;bmq6Kt&s/5h$p](6np&Fmhc2R`Ss)A!Is(MFAs&T##rFl"1rF,S/q-*H"qa^BM
+s$Z`Vs&T/!s$$B^oj[l:q,[<#qb-P\oiCr_qdTRur;cXdoi?c>rtbW-rrI]NJcFX-rrB,"J,~>
+[K$7,JcE4Zr;_EKj8\"0s(MFKok=A9eSk>+s)@d\rIFornUU:Oo5jeQs(q^Zm7[HZq+LG^f1YH0
+s%E%bJP4lnr;_CAJP4B`nc/UhJcGECrr at WMU&Y,mTeHEGJcCH(rr at WMJcC<$rVuhRonW'irHS-n
+msP(`omH^[mr8)Eq/H:Ss*Xcap](6np&FmhbtJ)>s.]Ous/Q+(s1J6>rMo\(rNc=.q76I0q6TtC
+pWifcqoSlPs1eTarVlK]rTO(Vq=FL_oDe:Yqt'jerN_"Rnc&Res8N&sJcC<$huE]VX8d\~>
+[K$7,JcE4Zr;_EKj8\"0na5edoum*UqpPH4rUK^Sli$SLp[n"Kq5*bgrrDl,pM^#Bn&FbBli7"K
+p&FX>pX-\1p!NZmq9ermn'V*ipX0#srK7'7s2OZXq;)"ho?mBirPn*Ls5!Ljl-]OemDeD<qn'J[
+dBN)9nc/UhJcGECrr at WMU&Y,mU&Y,mJcCH(rr at WMJcC<$rVqNKp](6np&FmhpUfP,o?mC0nbVkS
+c2H8noDe"QrNbhip[eFKmJckOpZUktkL'+;rPnl6rNQ6hs*"EZs$D;:JcFX-rrB,"J,~>
+[K$7,JcE4Zr;_EKj8\$.s/H$qor7u$rN+\Vqk*n_q3V&Ss/+nPo:PoMs/5memJd+cq>U,ofDb+9
+s8M]kJc=R+rN_"RJc='rnc/UhJcGECrr at WMU&Y,mU#5kMJcCH(rr at WMJcC<$rVuh`opkQErMo[`
+n#-,[or%bln$;bmq6Kt&s/5h$p](6np&Fmhc2R`Ss)A!Is(MFAs&T##rFl"1rF,S/q-*H"qa^BM
+s$Z`Vs&T/!s$$B^oj[l:q,[<#qb-P\oiCr_qdTRur;cXdoi?c>rtbW-rrI]NJcFX-rrB,"J,~>
+[K$7,JcC<$QiGr9ok=;7bA[>us,6c)q0i!fnSnGJpMg.DrHJ9Xs**p)pAiB0iW"I%fh;8DJP1Pe
+dn>8ljo>>\JcDGDrrA`Grr at WML&_/QJcGQGr;_EK\c;[0e,TH*o7ujgrHS-nmsP(`pO*![rH.LI
+q/l at Ms)e9jrG_N2rrDrrqZ+`2s+^QJs/uBos/Q%*rOMm,s/u=2qm-+,s1/*6o<\D)qoANSq=FLI
+rVlK]rTO(Vp[e at _oDe@[p[e at _rNcJ&s7>RUs7;6Ls8D3^rrC7Brr at WMZ2ah(X8d\~>
+[K$7,JcC<$QiGr9p$M(doum*UpX9#jrUT.Mp[e.OrUp3_oC`'Yo<A5pq/>l:n]'h at iW&N*o?m0c
+rR(;orR(;os3^Amo?mNmp!NTkiR.PYrK7&up!NZmq8W*Tqq_.hld>=DmEt1<mEtU=a2Z0(mA5C6
+jo>>\JcDGDrrAbmrr at WML&_/QJcGQGr;_EK\c;[0e,P(!p](6nqu?NnmCVW&p!Ng/s7u9_nb`:_
+g&9%loDdkMrNbtmp[d_Mp[e.CkM>=Kqn)aFqlp*hs/#a)s&eOcrrC7Brr at WMZ2ah(X8d\~>
+[K$7,JcC<$QiGt7or7o"qlJ2LrM'=YqkEn`kG%pIpS.\irLEncs.&QWrrDl#bPpK#Jc=@%rN_"R
+Jc=-tJcFj3rr at WMU&Y,mU#5kMJcCH(rr at WMq>^BnJcE:\rrCOJs-WDJnXoc[q4-oOrM91cs0DU,
+n$;bmpTjh&s.oV!p](6nqu?Nnao;=.s)A!Ls)\3RrE]A*rFl4BrEB),qd'5*mpZ0"qb?lYq-s5<
+rDrT#rGD at 2pL=(ooDeJarCclorCd(hs%EB$oiCf[s'gs\rtal!rrC7Brr at WMZ2ah(X8d\~>
+[K$7,JcC<$QiGr9ok=;7bA[>us,6c)q0i!fnSnGJpMg.DrHJ9Xs**p)pAiB0iW"I%fh;8DJP1Pe
+dn>8ljo>>\JcDGDrrA`Grr at WML&_/QJcGQGr;_EK\c;[0e,TH*o7ujgrHS-nmsP(`pO*![rH.LI
+q/l at Ms)e9jrG_N2rrDrrqZ+`2s+^QJs/uBos/Q%*rOMm,s/u=2qm-+,s1/*6o<\D)qoANSq=FLI
+rVlK]rTO(Vp[e at _oDe@[p[e at _rNcJ&s7>RUs7;6Ls8D3^rrC7Brr at WMZ2ah(X8d\~>
+[K$7,JcC<$QiGr9p$M(doum*UpX9#jrUT.Mp[e.OrUp3_oC`'Yo<A5pq/>l:n]'h at iW&N*o?m0c
+rR(;orR(;os3^Amo?mNmp!NTkiR.PYrK7&up!NZmq8W*Tqq_.hld>=DmEt1<mEtU=a2Z0(mA5C6
+jo>>\JcDGDrrAbmrr at WML&_/QJcGQGr;_EK\c;[0e,P(!p](6nqu?NnmCVW&p!Ng/s7u9_nb`:_
+g&9%loDdkMrNbtmp[d_Mp[e.CkM>=Kqn)aFqlp*hs/#a)s&eOcrrC7Brr at WMZ2ah(X8d\~>
+[K$7,JcC<$QiGt7or7o"qlJ2LrM'=YqkEn`kG%pIpS.\irLEncs.&QWrrDl#bPpK#Jc=@%rN_"R
+Jc=-tJcFj3rr at WMU&Y,mU#5kMJcCH(rr at WMq>^BnJcE:\rrCOJs-WDJnXoc[q4-oOrM91cs0DU,
+n$;bmpTjh&s.oV!p](6nqu?Nnao;=.s)A!Ls)\3RrE]A*rFl4BrEB),qd'5*mpZ0"qb?lYq-s5<
+rDrT#rGD at 2pL=(ooDeJarCclorCd(hs%EB$oiCf[s'gs\rtal!rrC7Brr at WMZ2ah(X8d\~>
+[K$7,JcC<$RK*9eiCj2as(2(@qdfG>qdeAus/#aas)n9jpO3!WrIEdEs(24OrFl4Ioh5)\_+Wtk
+JP4Zhr;cjjrr at UCX%WHmX\46Fjo>>\JcDGDrrA`Grr at WML&_/QJcC<$XoJD$e,TH*onW!grHS?p
+qhOWfrI=Qhs)@pYmr8/Go5O_ZrG_daqu?Bj_b:#rs.]OcrMon*rOMs#rMon#q6Kt,s0)I.os=V!
+rNZ=,s/b\\q<7eVp[e:Gq>U-[s8MQgnc&:Sq>UE"s/52^s7;0Js8D9`rrC1 at rr@WM\,ZI.s8W*!
+X8d\~>
+[K$7,JcC<$RK*9eiCiq4l,`P at pWrT^qpkZEnbrFVrVcK^q=OXWqt0FOs/#Ios().JrrE(;n%8&.
+jjE8koA/l_p"fSopYG_op"fSop"eTSqq^Yes2OZXs5!X9s2P(cs2OZXs5!Fhp!N`oq8VgLn](%F
+kJm&>n[m2gs02N6^Td1'JcFj3rr at WMU&Y,mU&Y,mJcCH(rr at WMJcDkPrrCOJJc5KGpAk5tkI^9(
+n^7Bmp%n:WoDIeM^]*d'hu<S[p&=^Wli-YMpZVANp%/.<kL'+;rPnZ;rMBO2s$>uNrrC1 at rr@WM
+\,ZI.s8W*!X8d\~>
+[K$7,JcC<$RK*9eiUd)Ks/l0tqmcO)rNQ12f<G:es/l6oo;:9:s/l<nrMomqp&=oqrrE))_>`Wt
+Jc=@%rNcJ&s0 at 4TX8`.)Xo<nOjo>>\JcDGDrrAbMrr at WML&_/QJcC<$XoJD$e,TH8opkKCrMomi
+qjd,QrM91cs0DU,n$;hoo<SClrNcI$qu?Bj_uB[_s)A!ZrFl4:rEB5BrFl4Bq-j5-s((_0rFZ"<
+rF,_=mpc*0rDrZ%qec.0pL=.qnc/8_rCcloq+L_frtb9.pIkNqMbF'Nli6tbaoDA at JcE4ZrrE*!
+rrB,"J,~>
+[K$7,JcC<$RK*9eiCj2as(2(@qdfG>qdeAus/#aas)n9jpO3!WrIEdEs(24OrFl4Ioh5)\_+Wtk
+JP4Zhr;cjjrr at UCX%WHmX\46Fjo>>\JcDGDrrA`Grr at WML&_/QJcC<$XoJD$e,TH*onW!grHS?p
+qhOWfrI=Qhs)@pYmr8/Go5O_ZrG_daqu?Bj_b:#rs.]OcrMon*rOMs#rMon#q6Kt,s0)I.os=V!
+rNZ=,s/b\\q<7eVp[e:Gq>U-[s8MQgnc&:Sq>UE"s/52^s7;0Js8D9`rrC1 at rr@WM\,ZI.s8W*!
+X8d\~>
+[K$7,JcC<$RK*9eiCiq4l,`P at pWrT^qpkZEnbrFVrVcK^q=OXWqt0FOs/#Ios().JrrE(;n%8&.
+jjE8koA/l_p"fSopYG_op"fSop"eTSqq^Yes2OZXs5!X9s2P(cs2OZXs5!Fhp!N`oq8VgLn](%F
+kJm&>n[m2gs02N6^Td1'JcFj3rr at WMU&Y,mU&Y,mJcCH(rr at WMJcDkPrrCOJJc5KGpAk5tkI^9(
+n^7Bmp%n:WoDIeM^]*d'hu<S[p&=^Wli-YMpZVANp%/.<kL'+;rPnZ;rMBO2s$>uNrrC1 at rr@WM
+\,ZI.s8W*!X8d\~>
+[K$7,JcC<$RK*9eiUd)Ks/l0tqmcO)rNQ12f<G:es/l6oo;:9:s/l<nrMomqp&=oqrrE))_>`Wt
+Jc=@%rNcJ&s0 at 4TX8`.)Xo<nOjo>>\JcDGDrrAbMrr at WML&_/QJcC<$XoJD$e,TH8opkKCrMomi
+qjd,QrM91cs0DU,n$;hoo<SClrNcI$qu?Bj_uB[_s)A!ZrFl4:rEB5BrFl4Bq-j5-s((_0rFZ"<
+rF,_=mpc*0rDrZ%qec.0pL=.qnc/8_rCcloq+L_frtb9.pIkNqMbF'Nli6tbaoDA at JcE4ZrrE*!
+rrB,"J,~>
+[K$7,JcEdjr;_EKfDkjNrVu+Ts(M at BrFl";pM^"@qdT58m;MluqjRP]qgJ9WrI*L at rFPk>s(qX,
+qZ-RfrrB`*li2N/cV+3:JP4NdrrCeHrrB/oJcG!7r;_EKU&Y,mTca:7JcCH(rr at WMJcC<$rVunT
+onW!gqfr'pl[8_^pO*![rH.LIqfMFKs*suds*XeFqZ+B(s*F^>s/5mhs/Q+,s1/)us.B=ks/5[u
+s0_g/q6Tn!s0D[*p"f00pZV;Aq<7eVp%/4_oDe:Yp[e4[rU]unnc&LYNW/tXs8 at NKJcFj3rrE*!
+rrB,"J,~>
+[K$7,JcEdjr;_EKfDkjNrVu+Tp[.:frU':Gs6o^.q9o;noD\Xcq=4F^p%/4Uq=FLUn+H_SrNQ00
+s02O8rrDN"l,Mo6li6S4ld>Oaq9f#oq9f#oq9ermiR.V[mEtmPo?mNmqo8S]p!NHPo?m6Nn^6gF
+o?lO:pX/B?ou@#YkJm2!s(&sMmA5C6l2U\^JcDGDrrAbmrr at WML&_/QJcC<$JcG]KJc5QIqZ-Ap
+n%8,0o?mBis7?-aoDA4Yl2A$hoDdMCrNc7uq=EeKp[eFKnc&"KkL'1=qo8N;s-itas8W+/JcC<$
+jo>>\s8W*!X8d\~>
+[K$7,JcEdjr;_EKfDkjNrVu-Rs/Gt!rMfV&qlKb#rO_s3oqpoVqn)m4n#"p8rN5sss/5hpqm-2"
+rrBb3li2P8ci3mKJc=4!s0CDYs0Ad+JcG!7r;_EKU&Y,mU$r!]JcCH(rr at WMJcC<$rVunbopkKC
+ql9Ubl_jcYpS\%srNG[qqlfUss.oV!s/5hqqZ+D1s.o[6s(q^Vs(MF<s'#AFs)\3Rs(qL>s'>S6
+q-j)2s'l"Bom$"9pMKS4q/-(2oj[qooDeD_rCcloq+LZqr<rF%q+LZqND'<Ort^1cJcFj3rrE*!
+rrB,"J,~>
+[K$7,JcEdjr;_EKfDkjNrVu+Ts(M at BrFl";pM^"@qdT58m;MluqjRP]qgJ9WrI*L at rFPk>s(qX,
+qZ-RfrrB`*li2N/cV+3:JP4NdrrCeHrrB/oJcG!7r;_EKU&Y,mTca:7JcCH(rr at WMJcC<$rVunT
+onW!gqfr'pl[8_^pO*![rH.LIqfMFKs*suds*XeFqZ+B(s*F^>s/5mhs/Q+,s1/)us.B=ks/5[u
+s0_g/q6Tn!s0D[*p"f00pZV;Aq<7eVp%/4_oDe:Yp[e4[rU]unnc&LYNW/tXs8 at NKJcFj3rrE*!
+rrB,"J,~>
+[K$7,JcEdjr;_EKfDkjNrVu+Tp[.:frU':Gs6o^.q9o;noD\Xcq=4F^p%/4Uq=FLUn+H_SrNQ00
+s02O8rrDN"l,Mo6li6S4ld>Oaq9f#oq9f#oq9ermiR.V[mEtmPo?mNmqo8S]p!NHPo?m6Nn^6gF
+o?lO:pX/B?ou@#YkJm2!s(&sMmA5C6l2U\^JcDGDrrAbmrr at WML&_/QJcC<$JcG]KJc5QIqZ-Ap
+n%8,0o?mBis7?-aoDA4Yl2A$hoDdMCrNc7uq=EeKp[eFKnc&"KkL'1=qo8N;s-itas8W+/JcC<$
+jo>>\s8W*!X8d\~>
+[K$7,JcEdjr;_EKfDkjNrVu-Rs/Gt!rMfV&qlKb#rO_s3oqpoVqn)m4n#"p8rN5sss/5hpqm-2"
+rrBb3li2P8ci3mKJc=4!s0CDYs0Ad+JcG!7r;_EKU&Y,mU$r!]JcCH(rr at WMJcC<$rVunbopkKC
+ql9Ubl_jcYpS\%srNG[qqlfUss.oV!s/5hqqZ+D1s.o[6s(q^Vs(MF<s'#AFs)\3Rs(qL>s'>S6
+q-j)2s'l"Bom$"9pMKS4q/-(2oj[qooDeD_rCcloq+LZqr<rF%q+LZqND'<Ort^1cJcFj3rrE*!
+rrB,"J,~>
+[K$7,JcC<$O8nZAs'>S7s(M(9rGVXOo4%N4qe?"8rFu4Kqk`tSs/#a6q/-"Ws)%dFqdoY6ok!l:
+rFPq at rF5d,pIkMd]1_JiJP46\r;_CAfh;>FKhI!sl2U\^JcDGDrrA`7rr at WML&_/QM?!MSJcC<$
+q>^JPpP8-gqfr-ns+fofs*scjrG_dYm;W)InSnM3rG_d?r;cdhrrBf,s-3PXs.B=hs/Q+,rLEn[
+s.fOjrNcI(qlg%*q5s\"s/YPCnalM=p%/"CrVlE[oDe@[p%/"Yqt'jerNc1sqt#aFs8W,tJcC<$
+j8],ZX8d\~>
+[K$7,JcC<$O8nZAq<d^np$MG?p$_kKrR1*4s4-r8qu-?^s75pUqt0 at Ms7ZE[s()#2rO`(0n[mi$
+l-\hspYG)]qq_"oqq_"oqq_"oq;(MerPmaBq8W*Ts5!@frJ(-qo>^OPo>^CLlc/\Hho>Q at kI^K.
+s*O.QX0D&hJcG!7r;_EKU&Y,mU&Y,mJcCH(rr at oUr;_EKJcGQGM>dJ;rVccZr;cf#rrE#%kI^?*
+n^76is8)?ap&+.SXo at qlec,NQqu6Qcjo5)ImJcGCld>agrO_mFqlp$qs8W+2JcC<$j8],ZX8d\~>
+[K$7,JcC<$O8n\?s0Va,s/G\$rN,spo<J+gql0P$rMfOqot11,nYZ>kqlTb#or[t_rN6$urM0Cu
+p\t0m]Dh-rJc<pnrN_"Rg&D#WL&QZ'l2U\^JcDGDrrAb]rr at WML&_/QM?!MSJcC<$q>^J^pRLWC
+ql9[gs.&DQs.oCerNcI,mBZbqnZr1brNcHnr;cfqrrBh5s*t&fs)\3Vs(MF<rHJ9_s)7jPrF,_=
+qdf_8q.BY<s(UkFnRD60oj[`6rDrN!oDe>]oj[_iqdTS+r<rL'rCd#sj%KDQX%WKmrt^1cJcFd1
+rrB,"J,~>
+[K$7,JcC<$O8nZAs'>S7s(M(9rGVXOo4%N4qe?"8rFu4Kqk`tSs/#a6q/-"Ws)%dFqdoY6ok!l:
+rFPq at rF5d,pIkMd]1_JiJP46\r;_CAfh;>FKhI!sl2U\^JcDGDrrA`7rr at WML&_/QM?!MSJcC<$
+q>^JPpP8-gqfr-ns+fofs*scjrG_dYm;W)InSnM3rG_d?r;cdhrrBf,s-3PXs.B=hs/Q+,rLEn[
+s.fOjrNcI(qlg%*q5s\"s/YPCnalM=p%/"CrVlE[oDe@[p%/"Yqt'jerNc1sqt#aFs8W,tJcC<$
+j8],ZX8d\~>
+[K$7,JcC<$O8nZAq<d^np$MG?p$_kKrR1*4s4-r8qu-?^s75pUqt0 at Ms7ZE[s()#2rO`(0n[mi$
+l-\hspYG)]qq_"oqq_"oqq_"oq;(MerPmaBq8W*Ts5!@frJ(-qo>^OPo>^CLlc/\Hho>Q at kI^K.
+s*O.QX0D&hJcG!7r;_EKU&Y,mU&Y,mJcCH(rr at oUr;_EKJcGQGM>dJ;rVccZr;cf#rrE#%kI^?*
+n^76is8)?ap&+.SXo at qlec,NQqu6Qcjo5)ImJcGCld>agrO_mFqlp$qs8W+2JcC<$j8],ZX8d\~>
+[K$7,JcC<$O8n\?s0Va,s/G\$rN,spo<J+gql0P$rMfOqot11,nYZ>kqlTb#or[t_rN6$urM0Cu
+p\t0m]Dh-rJc<pnrN_"Rg&D#WL&QZ'l2U\^JcDGDrrAb]rr at WML&_/QM?!MSJcC<$q>^J^pRLWC
+ql9[gs.&DQs.oCerNcI,mBZbqnZr1brNcHnr;cfqrrBh5s*t&fs)\3Vs(MF<rHJ9_s)7jPrF,_=
+qdf_8q.BY<s(UkFnRD60oj[`6rDrN!oDe>]oj[_iqdTS+r<rL'rCd#sj%KDQX%WKmrt^1cJcFd1
+rrB,"J,~>
+[K$7,JcF@%r;_EK\,Z1qs(MF9s(1e4qdTSBmpc64qe>q6s(V:Ss/#IYqdfSBs)%^_s)IjDs'GA-
+pLX;4rGDF9qdTS=s'YXqrrBN$mJh`1b=hd6JP1Pehb/P#kPtP^JcDGDrrA`7rr at WML&_/QJcFF'
+rr at WMVuQdSpP8-gqfr-ns+fofs*silqf)RWm;W)Io5OG-q+L_f_+Xf_s.]OIs.'%fs0DZps.B=Y
+qksCnrNH7$rN6+&s/Y29oCM_?s5!MBpZVSTp%._Rs60(RoCMq[q=FRaqm-+uq=FF]s0A!js8W,u
+JcC<$j8],ZX8d\~>
+[K$7,JcF@%r;_EK\,Z1qqsF!rna6#;p$_kKq>L!cqpPAls7-!brU]pWp%/.SoC_eErV$&krrDr#
+q7GJ&l-\nuqq^A]s5!:os5!:os5!:orS?qiqo7O at q8W*To>^aVrJ(@"n](CPn](7Ll,NPHrO_%.
+s3]l=l,KL&n"kU8kPtP^JcDGDrrAbmrr at WML&_/QJcFF'rr at WMVuM\Rq<.eHq69l!qlo=sn](+H
+s5!_Lq>9j_li!a\nc.);qm-8$rU]RYs0DCuqt'.QkO\/irS at Lcq8W<9rMBPos)!>eJcFd1rrB,"
+J,~>
+[K$7,JcF@%r;_EK\,Z3os/H%.s/kn&s02I,s/,7irMKIkqm?*ss02%*qlosppTab*os+7nrNZ<u
+ql9Ogs/Q+)q>UBo\,PdpJc<jlrN_"RJc=R+JcFp5rr at WMU&Y,mU$r!]JcCH(rr at WMg&M'PJcDYJ
+s-WPNm at X9Us.B=]l_jcYq5=+qs0(gqs0)%"q4.Jcq>UBo_>aJ&s)A!ts*+ETs'bqOs)\3dqeZ4D
+rFGqBrFZ(@s(UM<o4%H2s*4?KpMKk0oj[Iks)%@.o4%Ykq-s;'q[<F)rCcrqq+L_fnOrg]X%WKm
+s%@qCJcFd1rrB,"J,~>
+[K$7,JcF@%r;_EK\,Z1qs(MF9s(1e4qdTSBmpc64qe>q6s(V:Ss/#IYqdfSBs)%^_s)IjDs'GA-
+pLX;4rGDF9qdTS=s'YXqrrBN$mJh`1b=hd6JP1Pehb/P#kPtP^JcDGDrrA`7rr at WML&_/QJcFF'
+rr at WMVuQdSpP8-gqfr-ns+fofs*silqf)RWm;W)Io5OG-q+L_f_+Xf_s.]OIs.'%fs0DZps.B=Y
+qksCnrNH7$rN6+&s/Y29oCM_?s5!MBpZVSTp%._Rs60(RoCMq[q=FRaqm-+uq=FF]s0A!js8W,u
+JcC<$j8],ZX8d\~>
+[K$7,JcF@%r;_EK\,Z1qqsF!rna6#;p$_kKq>L!cqpPAls7-!brU]pWp%/.SoC_eErV$&krrDr#
+q7GJ&l-\nuqq^A]s5!:os5!:os5!:orS?qiqo7O at q8W*To>^aVrJ(@"n](CPn](7Ll,NPHrO_%.
+s3]l=l,KL&n"kU8kPtP^JcDGDrrAbmrr at WML&_/QJcFF'rr at WMVuM\Rq<.eHq69l!qlo=sn](+H
+s5!_Lq>9j_li!a\nc.);qm-8$rU]RYs0DCuqt'.QkO\/irS at Lcq8W<9rMBPos)!>eJcFd1rrB,"
+J,~>
+[K$7,JcF@%r;_EK\,Z3os/H%.s/kn&s02I,s/,7irMKIkqm?*ss02%*qlosppTab*os+7nrNZ<u
+ql9Ogs/Q+)q>UBo\,PdpJc<jlrN_"RJc=R+JcFp5rr at WMU&Y,mU$r!]JcCH(rr at WMg&M'PJcDYJ
+s-WPNm at X9Us.B=]l_jcYq5=+qs0(gqs0)%"q4.Jcq>UBo_>aJ&s)A!ts*+ETs'bqOs)\3dqeZ4D
+rFGqBrFZ(@s(UM<o4%H2s*4?KpMKk0oj[Iks)%@.o4%Ykq-s;'q[<F)rCcrqq+L_fnOrg]X%WKm
+s%@qCJcFd1rrB,"J,~>
+[K$7,JcF'rrr at WMfDkeBjo>?RrEAl)s'FYns)%dMrEf;;qg&!Ts-i[mqeuLFs-it-q-s5-oj[r4
+q-s5*q-s;6rFl4:qb-qh\P)8gJP40Zq#KeTrr at UCJP5`1JcG!7rr at WMU&Y,mTca:7JcCH(rrADc
+rrC%<rr at WMWW3!Rs,-Q+m=Y:\rIaE`s*silj`(6Aq/H at Aqca#-s'>S2q+L_f_b:$#s-3JPs.B=d
+s0DZpqj at D]s.KCms/c0us/c7!g"lDop#uG3q=F:CoCMSRrTNqRs60(GrVlWaq>U8sp[e4[s0 at ph
+s8W,tVuQ\qaoDA at JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMfDkeBjo>?RrU':!mHsT7p[@GHs8MiBpXT<Cs8D]_p%/(Qqt:!]rU'XQp\"@U
+qlp)#qlo\(ho>-4li6q>j3dnHo?mTXo?mTXo?mTon'UmLpX/rZn^7$Lq9eZNs3^e"rHn(SrR(Xl
+n&G1NrO_C8rR(GQj2Toen]%-(rMB%QJcG!7rr at WMU&Y,mU&Y,mJcCH(rrADcrrC%<rr at WMWW/%X
+s7Q9Pq=aWgrrDl!n[n>2o?mBis8DomrVQEgmJW[VoDd)7rNcI$n,E?mp\t-_l2Kf9n'V*is1A*H
+qlp*ss02P's(82/r;at>rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMfDkg*jo>APn[SV*rNPCgs/,gqosFUqq6]h,qlp%2pTaV&os+P!q6Bgsq6Bn#
+rMon*qu6Tq\c1ppJc<jlq6KDes0 at 4TJc>ECJcG!7rr at WMU&Y,mU$r!]JcCH(rrADcrrC%<rr at WM
+WW3!gs-WPNm at X9UrL`DRs.oIgjg+oipTj[ds0D[4rNc7urrBt9s)A!frHJ9_s)7pGs*+?ds(q^U
+rFc(Ds(D at Jfm*7#okj_Rq-s#6o4%=krGD4.s)%@:rCcrqq,[G%rrDe&q+L_fo1Ss]WD!9krt_O4
+r;at>rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMfDkeBjo>?RrEAl)s'FYns)%dMrEf;;qg&!Ts-i[mqeuLFs-it-q-s5-oj[r4
+q-s5*q-s;6rFl4:qb-qh\P)8gJP40Zq#KeTrr at UCJP5`1JcG!7rr at WMU&Y,mTca:7JcCH(rrADc
+rrC%<rr at WMWW3!Rs,-Q+m=Y:\rIaE`s*silj`(6Aq/H at Aqca#-s'>S2q+L_f_b:$#s-3JPs.B=d
+s0DZpqj at D]s.KCms/c0us/c7!g"lDop#uG3q=F:CoCMSRrTNqRs60(GrVlWaq>U8sp[e4[s0 at ph
+s8W,tVuQ\qaoDA at JcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMfDkeBjo>?RrU':!mHsT7p[@GHs8MiBpXT<Cs8D]_p%/(Qqt:!]rU'XQp\"@U
+qlp)#qlo\(ho>-4li6q>j3dnHo?mTXo?mTXo?mTon'UmLpX/rZn^7$Lq9eZNs3^e"rHn(SrR(Xl
+n&G1NrO_C8rR(GQj2Toen]%-(rMB%QJcG!7rr at WMU&Y,mU&Y,mJcCH(rrADcrrC%<rr at WMWW/%X
+s7Q9Pq=aWgrrDl!n[n>2o?mBis8DomrVQEgmJW[VoDd)7rNcI$n,E?mp\t-_l2Kf9n'V*is1A*H
+qlp*ss02P's(82/r;at>rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMfDkg*jo>APn[SV*rNPCgs/,gqosFUqq6]h,qlp%2pTaV&os+P!q6Bgsq6Bn#
+rMon*qu6Tq\c1ppJc<jlq6KDes0 at 4TJc>ECJcG!7rr at WMU&Y,mU$r!]JcCH(rrADcrrC%<rr at WM
+WW3!gs-WPNm at X9UrL`DRs.oIgjg+oipTj[ds0D[4rNc7urrBt9s)A!frHJ9_s)7pGs*+?ds(q^U
+rFc(Ds(D at Jfm*7#okj_Rq-s#6o4%=krGD4.s)%@:rCcrqq,[G%rrDe&q+L_fo1Ss]WD!9krt_O4
+r;at>rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMg&Le>li6isrL3UorEeAjmr&/Nqel:;rEJr*qjROqs'kS+qdTG/q-3`*rE&r,
+qdoe at s'>RrrrBZ(kPp*+`Cp.0nOrl^JP3gPr;aH&p](6nJcGECrr at WMU&Y,mTca:7JcCH(rrAJe
+rr at WMJcG!7onVpeq0;jjl[8_^q0_:Coih0!s'>S2q+L_f_b:#Us.'+Cs.'%_s.&tRs.K=as/H%!
+s/49#q=F at ErS@;@p#u#=oDedQp&>!ToCN"]p[e(Ws7?2eqt#[Ds8W,tJcG-;rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMg&Le>li6k\rVl]8lg=B5rU8qJs6odQs3gYlqu6WKq==:OrUg-]rUfpQp%A"O
+rNQ;%rNPOuji6o>kPsSirPnNXrPnHVs2OZXs2OTVou?gTqo86To>^URn&G=Rqo8S]ou@$Zs2P(c
+n&G7Pqn)+4pUfP,gUm4"c*7.Wh6>e*p](6nJcGECrr at WMU&Y,mU&Y,mJcCH(rrAJerr at WMJcG!7
+RJlgAq=XXYq69l!s02%*n](1JoA0H at p\X at VRJugXa8Z%Cao:>lo?mHkpW!09s1A<-s02P's%n:H
+mJm1dJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMg&Lg&li6jmrO_s:rNlI,j0A'[s/G[urOD7,s0;1&qm$%*q5X=srOi*6qlTmu
+s0_h)rrB\1kPp,4`W#hAnc&QoJc<LbrNa'7p](6nJcGECrr at WMU&Y,mU$r!]JcCH(rrAJerr at WM
+JcG!7opkEAq5XCcl_jcYq5<>[opki`s0_g2q>UBo_uB\3s*+L&s*+E[s*+?dqf;^Os(VLMd<PIr
+pMKkRq-s#6o4%=krGD4.s)%@:s%E)qoiD*%r>,9>m7[1SVb@'irrI]NmJm1dJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMg&Le>li6isrL3UorEeAjmr&/Nqel:;rEJr*qjROqs'kS+qdTG/q-3`*rE&r,
+qdoe at s'>RrrrBZ(kPp*+`Cp.0nOrl^JP3gPr;aH&p](6nJcGECrr at WMU&Y,mTca:7JcCH(rrAJe
+rr at WMJcG!7onVpeq0;jjl[8_^q0_:Coih0!s'>S2q+L_f_b:#Us.'+Cs.'%_s.&tRs.K=as/H%!
+s/49#q=F at ErS@;@p#u#=oDedQp&>!ToCN"]p[e(Ws7?2eqt#[Ds8W,tJcG-;rr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMg&Le>li6k\rVl]8lg=B5rU8qJs6odQs3gYlqu6WKq==:OrUg-]rUfpQp%A"O
+rNQ;%rNPOuji6o>kPsSirPnNXrPnHVs2OZXs2OTVou?gTqo86To>^URn&G=Rqo8S]ou@$Zs2P(c
+n&G7Pqn)+4pUfP,gUm4"c*7.Wh6>e*p](6nJcGECrr at WMU&Y,mU&Y,mJcCH(rrAJerr at WMJcG!7
+RJlgAq=XXYq69l!s02%*n](1JoA0H at p\X at VRJugXa8Z%Cao:>lo?mHkpW!09s1A<-s02P's%n:H
+mJm1dJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMg&Lg&li6jmrO_s:rNlI,j0A'[s/G[urOD7,s0;1&qm$%*q5X=srOi*6qlTmu
+s0_h)rrB\1kPp,4`W#hAnc&QoJc<LbrNa'7p](6nJcGECrr at WMU&Y,mU$r!]JcCH(rrAJerr at WM
+JcG!7opkEAq5XCcl_jcYq5<>[opki`s0_g2q>UBo_uB\3s*+L&s*+E[s*+?dqf;^Os(VLMd<PIr
+pMKkRq-s#6o4%=krGD4.s)%@:s%E)qoiD*%r>,9>m7[1SVb@'irrI]NmJm1dJcG]KrrB,"J,~>
+[K$7,JcFp5r;_EK`W,I$nc/W$s(_:gqd]YDrGhL>s'+l+nS\)-pKRN*qjR=kmp>lns'G_7s',5,
+rE&r,rFQ"4s(249s%E:j^J!VeJP3mRr;_CAJP50!q>^HpJcGECrr at WMU&Y,mTca:7JcCH(rr at WM
+JcC<$s8VbIm=Y4ZrIb,pm<nqYq0_ at Eqc`Mts&/f's'>LprrE'lrrC/6s,6o=s*t'=s-Wh]s,-iA
+s-WbNs.97_s-q3fq=F at Eqq_/@p#u)?oDeXMq>U9Tp%/4_p%.qWqt'icrU]LWrUZZ\s8W,uJcC<$
+kPtP^X8d\~>
+[K$7,JcFp5r;_EK`W,I$nc/Rdp\sjap$MeIh>R6>p[J.OqpkTCq:Yf=nalYFrUg-Wp%@kKs02M'
+s((B+ho>K>j8\;iq8W6Xq8W0Vqo8BXrPnBTo>^aVpVusTn](IRho>VAiPtiDq7Gt4o=O>.f=Uq"
+YHZ?Aq>^HpJcGECrr at WMU&Y,mU&Y,mJcCH(rr at WMJcC<$s8SSeqrdA>rV$,mrrE)'s((`5o>^OP
+oA0B/s8DilmJW=LoDcZ+s0BiIiUc`iqq_"drNQ=6s/#b"s8W+ZJcC<$kPtP^X8d\~>
+[K$7,JcFp5r;_EK`W,Janc/X%s1.mDqnN0<nZhDikHsunmCVhoqlTn*s0;U(pTa\0rNZ='s1/03
+s0_n+rrE))^]*9nJc<RdrN_"RJc=j3q>^HpJcGECrr at WMU&Y,mU$r!]JcCH(rr at WMJcC<$s8Vb^
+m at X3SrLa+imAKuaq5<D]qjd2^s2"Z>s0_b'rrE)us0BcGrIY'6s*+Khs)7pos*aonrI+Weaa!Vj
+pMKePqdT58oj[Omq/,q.qec"8s%E#opK%0#rtbQBmn<UgpK"7ds8W*lJcC<$kPtP^X8d\~>
+[K$7,JcFp5r;_EK`W,I$nc/W$s(_:gqd]YDrGhL>s'+l+nS\)-pKRN*qjR=kmp>lns'G_7s',5,
+rE&r,rFQ"4s(249s%E:j^J!VeJP3mRr;_CAJP50!q>^HpJcGECrr at WMU&Y,mTca:7JcCH(rr at WM
+JcC<$s8VbIm=Y4ZrIb,pm<nqYq0_ at Eqc`Mts&/f's'>LprrE'lrrC/6s,6o=s*t'=s-Wh]s,-iA
+s-WbNs.97_s-q3fq=F at Eqq_/@p#u)?oDeXMq>U9Tp%/4_p%.qWqt'icrU]LWrUZZ\s8W,uJcC<$
+kPtP^X8d\~>
+[K$7,JcFp5r;_EK`W,I$nc/Rdp\sjap$MeIh>R6>p[J.OqpkTCq:Yf=nalYFrUg-Wp%@kKs02M'
+s((B+ho>K>j8\;iq8W6Xq8W0Vqo8BXrPnBTo>^aVpVusTn](IRho>VAiPtiDq7Gt4o=O>.f=Uq"
+YHZ?Aq>^HpJcGECrr at WMU&Y,mU&Y,mJcCH(rr at WMJcC<$s8SSeqrdA>rV$,mrrE)'s((`5o>^OP
+oA0B/s8DilmJW=LoDcZ+s0BiIiUc`iqq_"drNQ=6s/#b"s8W+ZJcC<$kPtP^X8d\~>
+[K$7,JcFp5r;_EK`W,Janc/X%s1.mDqnN0<nZhDikHsunmCVhoqlTn*s0;U(pTa\0rNZ='s1/03
+s0_n+rrE))^]*9nJc<RdrN_"RJc=j3q>^HpJcGECrr at WMU&Y,mU$r!]JcCH(rr at WMJcC<$s8Vb^
+m at X3SrLa+imAKuaq5<D]qjd2^s2"Z>s0_b'rrE)us0BcGrIY'6s*+Khs)7pos*aonrI+Weaa!Vj
+pMKePqdT58oj[Omq/,q.qec"8s%E#opK%0#rtbQBmn<UgpK"7ds8W*lJcC<$kPtP^X8d\~>
+[K$7,JcC<$X8h?Uq>^J,s(_ at iq.'GBq/P#%s',/&nQYmZo47`)q,I)pqdTM.rEfA"s'G_:qca#*
+rrBf,oDeh`n,Ir3_+X_,JP1PelUug/li6tbJcDGDrrA`7rr at WML&_/QWW2nsJcCT,rrCULpP8'e
+pNZ^js*49cs)@d]s*4?eo5O_5rG_X;s'=qus'>Y4s(qR*rrE!jrrC58s().Ns+UK?s.fUOs-<VI
+s-<PErR&[ArU]^Gqq_5Bp#uA1p[e"Vq<7YRqrm57q>U?VrU]oanc&FWSc8Zhs8MWirr at WMJcGQG
+rrB,"J,~>
+[K$7,JcC<$X8h?Uq>^Elq>SA3p[@kGrUKpWrUKdapY#N#s76-[q<dqKoC_SGrrD;qgW'3>oDej1
+n,M_$ou?sXou?mVq8W0Vqo8<Vn](UVou?gTmDf1Rlc/t:n](NSs2P#Llc/P.n](%0n&G=1f=SGp
+rM at Q'JcG'9rr at WMU&Y,mU&Y,mJcCH(rrB%ur;_EKM?!SUec2QGs6'@Zqre"OkOnlKqlp)#rNQ<4
+n[nD4s3^MqpZVYOq>BpaO8ebN_>a>;ci2blpX/lopW!09s1A<-s02P's,Q^Nrr at WMJcGQGrrB,"
+J,~>
+[K$7,JcC<$X8hA=q>^K-s1.sFq7ls:q6AJ[osF8!mCW8&q6B\$qm$+0rNuI:s0Vg.qmla7rrBh5
+oDejin,It<_>aD=Jc:6"li)J8li6tbJcDGDrrAb]rr at WML&_/QWW2nsJcCT,rrCULpRLQApT"7c
+s/Pgks0DHus/Pmmo<SCdrNc<js0_0us0_m4s/5bnrrE#ss0BiIs1A<'s,I&)s)7pos*aous*a]q
+a*@PlokjSNrF5G:rHS'GoDeW'q,[B0k at 46frGDLBq\J]pqdT;#Vb@'is%Dt`rr at WMJcGQGrrB,"
+J,~>
+[K$7,JcC<$X8h?Uq>^J,s(_ at iq.'GBq/P#%s',/&nQYmZo47`)q,I)pqdTM.rEfA"s'G_:qca#*
+rrBf,oDeh`n,Ir3_+X_,JP1PelUug/li6tbJcDGDrrA`7rr at WML&_/QWW2nsJcCT,rrCULpP8'e
+pNZ^js*49cs)@d]s*4?eo5O_5rG_X;s'=qus'>Y4s(qR*rrE!jrrC58s().Ns+UK?s.fUOs-<VI
+s-<PErR&[ArU]^Gqq_5Bp#uA1p[e"Vq<7YRqrm57q>U?VrU]oanc&FWSc8Zhs8MWirr at WMJcGQG
+rrB,"J,~>
+[K$7,JcC<$X8h?Uq>^Elq>SA3p[@kGrUKpWrUKdapY#N#s76-[q<dqKoC_SGrrD;qgW'3>oDej1
+n,M_$ou?sXou?mVq8W0Vqo8<Vn](UVou?gTmDf1Rlc/t:n](NSs2P#Llc/P.n](%0n&G=1f=SGp
+rM at Q'JcG'9rr at WMU&Y,mU&Y,mJcCH(rrB%ur;_EKM?!SUec2QGs6'@Zqre"OkOnlKqlp)#rNQ<4
+n[nD4s3^MqpZVYOq>BpaO8ebN_>a>;ci2blpX/lopW!09s1A<-s02P's,Q^Nrr at WMJcGQGrrB,"
+J,~>
+[K$7,JcC<$X8hA=q>^K-s1.sFq7ls:q6AJ[osF8!mCW8&q6B\$qm$+0rNuI:s0Vg.qmla7rrBh5
+oDejin,It<_>aD=Jc:6"li)J8li6tbJcDGDrrAb]rr at WML&_/QWW2nsJcCT,rrCULpRLQApT"7c
+s/Pgks0DHus/Pmmo<SCdrNc<js0_0us0_m4s/5bnrrE#ss0BiIs1A<'s,I&)s)7pos*aous*a]q
+a*@PlokjSNrF5G:rHS'GoDeW'q,[B0k at 46frGDLBq\J]pqdT;#Vb@'is%Dt`rr at WMJcGQGrrB,"
+J,~>
+[K$7,JcGKEr;_EK]Dq7krrD^bs',;Zq.'A at s)IpOs'X`"pKRMsrEeqsrG2F;o47krrD`f$rD`_l
+s&8f$oiqH&pJ_)us&8l"rrBl.p&Fh\n,Ir3_b9e*JP1Pemn863li6tbJcDGDrrA`7rr at WML&_/Q
+JcC<$XoJD$ec5Z,q1n9gpNZ^js*49cs)@d]s*4Ego5OM/qdBG0lX9`us'YkCqb-qha%QGYs,-i1
+s-WhLs,-i3s-*JDrPn`^rS at Lco>]P at rU]dIpYGl at p#uA1q=F.Vq<7YRqrm_Es60.Iqu6KVp[eE_
+s0DCuq=C*Ts8W,tp&G$lX8i2"JcF:#rrE*!rrB,"J,~>
+[K$7,JcGKEr;_EK]Dq7krrD^bs8Dcmao2,)p$__Gs6opUqsjX`s75d7s2P$)s7?3Vp%7qMqtBp[
+q=agglatcgp&Fj-n,Mk(o>^aVou?sXou?mVq8W0Vn&GC>o>^aVe].R"n](NSrGV_JmDe\.o>^+.
+o>^U1h7L;'nYO?rJcG'9rr at WMU&Y,mU&Y,mJcCH(rr at WMJcDkPrrCULWVuYUp%7eIq=a]irrDT$
+o>^CLp#uGIs8)]lp&0gJnc-6#rNaoOg[k6gq;(kds3^kNrO`$4s8W+*p&G$lX8i2"JcF:#rrE*!
+rrB,"J,~>
+[K$7,JcGKEr;_EK]Dq9Ss,m'3s60L'q8W6FrNuU0qmc[De[YLfrNth!o=P$urNZC4rNZ==s1eH<
+osk%/pV6a8s1eNCrrBn7p&Fjen,It<_uBJ;Jc:6"n, at n<li6tbJcDGDrrAb]rr at WML&_/QJcC<$
+XoJD$ec5Z:q4-cCpT"7cs/Pgks0DHus/Psoo<S1^qm-70la$Pus0D[&qu6Tqa8Z+7s,$c8s*F]r
+s,$c7s+13'rJpc-rHS at 2o8_RMrF5M<pNZ^IokjYPq-rmoq/,q.qec"8s)%F<qc<T2pL=.<rrDdd
+q-s)!V+^jgrtb;-rrB,"rr at WMec5XLs8W*!X8d\~>
+[K$7,JcGKEr;_EK]Dq7krrD^bs',;Zq.'A at s)IpOs'X`"pKRMsrEeqsrG2F;o47krrD`f$rD`_l
+s&8f$oiqH&pJ_)us&8l"rrBl.p&Fh\n,Ir3_b9e*JP1Pemn863li6tbJcDGDrrA`7rr at WML&_/Q
+JcC<$XoJD$ec5Z,q1n9gpNZ^js*49cs)@d]s*4Ego5OM/qdBG0lX9`us'YkCqb-qha%QGYs,-i1
+s-WhLs,-i3s-*JDrPn`^rS at Lco>]P at rU]dIpYGl at p#uA1q=F.Vq<7YRqrm_Es60.Iqu6KVp[eE_
+s0DCuq=C*Ts8W,tp&G$lX8i2"JcF:#rrE*!rrB,"J,~>
+[K$7,JcGKEr;_EK]Dq7krrD^bs8Dcmao2,)p$__Gs6opUqsjX`s75d7s2P$)s7?3Vp%7qMqtBp[
+q=agglatcgp&Fj-n,Mk(o>^aVou?sXou?mVq8W0Vn&GC>o>^aVe].R"n](NSrGV_JmDe\.o>^+.
+o>^U1h7L;'nYO?rJcG'9rr at WMU&Y,mU&Y,mJcCH(rr at WMJcDkPrrCULWVuYUp%7eIq=a]irrDT$
+o>^CLp#uGIs8)]lp&0gJnc-6#rNaoOg[k6gq;(kds3^kNrO`$4s8W+*p&G$lX8i2"JcF:#rrE*!
+rrB,"J,~>
+[K$7,JcGKEr;_EK]Dq9Ss,m'3s60L'q8W6FrNuU0qmc[De[YLfrNth!o=P$urNZC4rNZ==s1eH<
+osk%/pV6a8s1eNCrrBn7p&Fjen,It<_uBJ;Jc:6"n, at n<li6tbJcDGDrrAb]rr at WML&_/QJcC<$
+XoJD$ec5Z:q4-cCpT"7cs/Pgks0DHus/Psoo<S1^qm-70la$Pus0D[&qu6Tqa8Z+7s,$c8s*F]r
+s,$c7s+13'rJpc-rHS at 2o8_RMrF5M<pNZ^IokjYPq-rmoq/,q.qec"8s)%F<qc<T2pL=.<rrDdd
+q-s)!V+^jgrtb;-rrB,"rr at WMec5XLs8W*!X8d\~>
+[K$7,JcC<$YQ*o]rrDjfrE&l!s&8`'rGMLJpL*<&nQYNcs',Fuqcj#7rEK5&rFGe#s()(2ohbZ^
+ohbNis'GFus'GY&rrBr0p&F\Xn,Ir3]hA;(JP5Z/rrB`*r;al2JcG3=r;_EKU&Y,mTb%/'JcCH(
+rrBP.rr at WMJcEpns,-]/l%AMNq0`3]q0`3eqgA3Ys)%X:ojI`(m9os"rF#LqrrC/6s+:8Rs)\3i
+s-!D-s+g?grR(GQmDe&>s7?!KpYGl at p#uA1q=F4XpZVMRq<7SErTNqGqu6KVp%/'drVlQ_S,WHf
+s8JMfrr at WMfDkjNs8W*!X8d\~>
+[K$7,JcC<$YQ*o]rrDjfrU'L's6\/2s6]LIp[A(MqsXLQqsjX`rUU!Ys76-ArPJTSqqV/Ap%8:W
+rUfROp\+Ues7ZJsn[mDmp&F^)n,Mq*e&M at 6ou?mVmDf1<o>^aVmDf+:n&G18n](I<s)7pan]'t.
+pVuI0pVum1iOeWas('T_l_XP_a-qSZn,N=dJcDGDrrAbmrr at WML&_/Q\,ZI.JcC<$bQ"^CqrdeH
+oCVYIqtBokrrE)'o=Oh<o?m6es60FQs8;onp\fgFoDc<!qm+iQg%5*gpYG_ds3^eLs1A66s8W+Z
+S,`KgJcF@%rrE*!rrB,"J,~>
+[K$7,JcC<$YQ*qEs,m-5rOVm at s1S6CrNuI3pVYaqn[eb1rPS6:rOVs>qkX8(rPnNJs2O`Lqmc[5
+pV6a8rP/@4s2W+Xp&F^an,It<^&Iu9Jc>?As0B?;rNaKCJcG3=r;_EKU&Y,mU&Y,mJcCH(rrBP.
+rr at WMJcEpns-W\Rl(@LGq5=7uq5=7mqks7qs0_`oos4P(mBZc"rNc>"rrC1?s,m?$s.B=Us+13=
+s,?]4rIap7m>g(Ks'k_>pNZ^IokjYPq-rsqpMKe.q/,k8rGD4:qc<T2oj[durCclopK"+`s8W*l
+S,`KgJcF@%rrE*!rrB,"J,~>
+[K$7,JcC<$YQ*o]rrDjfrE&l!s&8`'rGMLJpL*<&nQYNcs',Fuqcj#7rEK5&rFGe#s()(2ohbZ^
+ohbNis'GFus'GY&rrBr0p&F\Xn,Ir3]hA;(JP5Z/rrB`*r;al2JcG3=r;_EKU&Y,mTb%/'JcCH(
+rrBP.rr at WMJcEpns,-]/l%AMNq0`3]q0`3eqgA3Ys)%X:ojI`(m9os"rF#LqrrC/6s+:8Rs)\3i
+s-!D-s+g?grR(GQmDe&>s7?!KpYGl at p#uA1q=F4XpZVMRq<7SErTNqGqu6KVp%/'drVlQ_S,WHf
+s8JMfrr at WMfDkjNs8W*!X8d\~>
+[K$7,JcC<$YQ*o]rrDjfrU'L's6\/2s6]LIp[A(MqsXLQqsjX`rUU!Ys76-ArPJTSqqV/Ap%8:W
+rUfROp\+Ues7ZJsn[mDmp&F^)n,Mq*e&M at 6ou?mVmDf1<o>^aVmDf+:n&G18n](I<s)7pan]'t.
+pVuI0pVum1iOeWas('T_l_XP_a-qSZn,N=dJcDGDrrAbmrr at WML&_/Q\,ZI.JcC<$bQ"^CqrdeH
+oCVYIqtBokrrE)'o=Oh<o?m6es60FQs8;onp\fgFoDc<!qm+iQg%5*gpYG_ds3^eLs1A66s8W+Z
+S,`KgJcF@%rrE*!rrB,"J,~>
+[K$7,JcC<$YQ*qEs,m-5rOVm at s1S6CrNuI3pVYaqn[eb1rPS6:rOVs>qkX8(rPnNJs2O`Lqmc[5
+pV6a8rP/@4s2W+Xp&F^an,It<^&Iu9Jc>?As0B?;rNaKCJcG3=r;_EKU&Y,mU&Y,mJcCH(rrBP.
+rr at WMJcEpns-W\Rl(@LGq5=7uq5=7mqks7qs0_`oos4P(mBZc"rNc>"rrC1?s,m?$s.B=Us+13=
+s,?]4rIap7m>g(Ks'k_>pNZ^IokjYPq-rsqpMKe.q/,k8rGD4:qc<T2oj[durCclopK"+`s8W*l
+S,`KgJcF@%rrE*!rrB,"J,~>
+[K$7,JcC<$ZiAiSs&]/%oi(`lrG2"4qeQ"3rD</ks%r`"nQ>Z^s%3/nqeQ49s&f(os$QB\rD<;`
+nPK6is%r;crrE'toh55`f1Yf:mn<3NJP3UJr;_CAq+L_fJP6#9JcG3=r;_EKU&Y,mTb%/'oDeI`
+JcG3=q#KUXo`3nLrrBV0rr at WMJcEpns*XWtl%AMNq0`3]q0`3erI"WVs'#GAs'#A&mpQ*"m9orl
+rF#LqrrC58s).j>s)\3cs-*J/rO_gDpUf\0iSFO]pZVA-s3^T)q;(r>oDeLIrVlQTq=FRKp%/.]
+q<7MCrVlc$s.&cRS,WHfs8ITLJcG-;rrB,"J,~>
+[K$7,JcC<$ZiAoUrU'R)n*TB<oBl5=mI0rArUKd`rUK^Ls2+fhpY>f,nau5Ap\+Ues7ZKepUgBB
+qn(\(p&FL#nc/@2^W-6"mDf%8ou@$ZmDf%8n](=8o>^I8rHn:Ylauu4rNPV"q8W$1jh'oas('lg
+h5/5^JcG3=r;_EKU&Y,mU&Y,moDeI`JcG3=q#KUXo`3nLrrBV0rr at WMJcEpn\,H9gs8DiXp%._G
+nb)kSqlp)#rNPn*rPnTZp"fB+s8Duos8;cmJc>9 at Zi9j-g&B[rrR(;oqo8Z`s02I6rNQ>%s-eN=
+JcG-;rrB,"J,~>
+[K$7,JcC<$ZiB"?s60L%s180DotC71rODI:qmc[7qmcUBosk%>s1%U1q8W*;s18$5s0)%6rPSHN
+n\bC:s24HCrrE)6s2Xm5rNb&Sp&FL[nc+1>]Dhc7Jc>KEs0 at 4Ts8ITLn,N=dJcDGDrrAbmrrDZj
+o`0RCn,N1`kPt2ThuE]V\c;[0JcC<$bQ%U?q4-]AnZ)D_s0DHus/Q$qs,d8Ns0DZprL`ParO)$u
+s2"Z>qu6TqbPqO6s2P)2s-it=s-`hSpQ#!:l&O_Is+C&_pNZ^jpMK_NqdT0sokjY.pMK_8rGD4:
+rDr`2oj[kmr;cj at oj[YrV+^jgs%@qCJcG-;rrB,"J,~>
+[K$7,JcC<$ZiAiSs&]/%oi(`lrG2"4qeQ"3rD</ks%r`"nQ>Z^s%3/nqeQ49s&f(os$QB\rD<;`
+nPK6is%r;crrE'toh55`f1Yf:mn<3NJP3UJr;_CAq+L_fJP6#9JcG3=r;_EKU&Y,mTb%/'oDeI`
+JcG3=q#KUXo`3nLrrBV0rr at WMJcEpns*XWtl%AMNq0`3]q0`3erI"WVs'#GAs'#A&mpQ*"m9orl
+rF#LqrrC58s).j>s)\3cs-*J/rO_gDpUf\0iSFO]pZVA-s3^T)q;(r>oDeLIrVlQTq=FRKp%/.]
+q<7MCrVlc$s.&cRS,WHfs8ITLJcG-;rrB,"J,~>
+[K$7,JcC<$ZiAoUrU'R)n*TB<oBl5=mI0rArUKd`rUK^Ls2+fhpY>f,nau5Ap\+Ues7ZKepUgBB
+qn(\(p&FL#nc/@2^W-6"mDf%8ou@$ZmDf%8n](=8o>^I8rHn:Ylauu4rNPV"q8W$1jh'oas('lg
+h5/5^JcG3=r;_EKU&Y,mU&Y,moDeI`JcG3=q#KUXo`3nLrrBV0rr at WMJcEpn\,H9gs8DiXp%._G
+nb)kSqlp)#rNPn*rPnTZp"fB+s8Duos8;cmJc>9 at Zi9j-g&B[rrR(;oqo8Z`s02I6rNQ>%s-eN=
+JcG-;rrB,"J,~>
+[K$7,JcC<$ZiB"?s60L%s180DotC71rODI:qmc[7qmcUBosk%>s1%U1q8W*;s18$5s0)%6rPSHN
+n\bC:s24HCrrE)6s2Xm5rNb&Sp&FL[nc+1>]Dhc7Jc>KEs0 at 4Ts8ITLn,N=dJcDGDrrAbmrrDZj
+o`0RCn,N1`kPt2ThuE]V\c;[0JcC<$bQ%U?q4-]AnZ)D_s0DHus/Q$qs,d8Ns0DZprL`ParO)$u
+s2"Z>qu6TqbPqO6s2P)2s-it=s-`hSpQ#!:l&O_Is+C&_pNZ^jpMK_NqdT0sokjY.pMK_8rGD4:
+rDr`2oj[kmr;cj at oj[YrV+^jgs%@qCJcG-;rrB,"J,~>
+[K$7,L]@;QJcE(Vh+R]As&o(ppJClomnig^q+U`hqcj"qs%N#dqb6lYs()(Ds&AqorE0(ns$lrY
+nQGNYqbZrZpJCl\rrE'is&708oDe,Lnc+/5\P)l$JP1PepIg);n,NCfJcDGDrrA`'rrD`lnGn.?
+oDeI`li6JTiW&oXJcFF'rr at WMX8hpLl%AMNq0`-[qgA?es*XiXrEB5/rE\r$qd&Sss&/l&s'Y^s
+rrDL\r;beLs(24fs)A!arNQ74q8W*>ji6E<s3^Z+p"fYqpZVG/rU]RZp#uGTp#u;EqrmYCs8McV
+p[e:]s60EOs/5\aRK!6ds8 at NKJcG3=rrB,"J,~>
+[K$7,L]@;QJcE(Vhb4":qoHnHp$VeIqsO4IqsaRSqu-EXqssdQs763]qqV5)qqV50p[mkGp%JCc
+qtKQkiPtKhlc/JpqpD=]q7H=>s1 at a>q7H7<ot0n:s021.rPne_rPn*6rPnZ;l+?u8mBGoga0=0l
+a-qSZn,NCfJcDGDrrAbmrrD`lnGn.?oDeI`li6JTiW&oXJcFF'rr at WMX8f[-qrdSBoCVSGp\+Kg
+rrD`(qo8S]rPnlbpYGT-qt'jcqu)*Fs8MQgYQ"F)h>Z$trR(;orPnf`rO`*LrNQ>%s'C9VJcG3=
+rrB,"J,~>
+[K$7,L]@;QJcE(VrR'`_s60L%rQG5UpV$=;s0_mCn\Y+5q8WBEqmcUBs2OZAou@$DrODm4rNuO7
+s2P)RiPtc4ou?aDs3(EBs3(GWs2WIboDe.Unc+1>\c2Q5Jc:6"p\oaDn,NCfJcDGDrrAbmrrD`l
+nGn.?oDeI`li6JTiW&oXJcFF'rr at WMX8hpal(@LGq5=1sqksCms/5mYrLEnnrO)1$qmGgss2"`C
+s0DP$rrDNerNbD]s/l<Xs.]O]rMBI]q2Y-:jc8GIs+C,aom$LhpMK_NrF5<sokj_0okjS8qebq6
+s&Sl2pL="ms)%]XrtbE>pK"%^s8W*7JcC<$n,NCfX8d\~>
+[K$7,L]@;QJcE(Vh+R]As&o(ppJClomnig^q+U`hqcj"qs%N#dqb6lYs()(Ds&AqorE0(ns$lrY
+nQGNYqbZrZpJCl\rrE'is&708oDe,Lnc+/5\P)l$JP1PepIg);n,NCfJcDGDrrA`'rrD`lnGn.?
+oDeI`li6JTiW&oXJcFF'rr at WMX8hpLl%AMNq0`-[qgA?es*XiXrEB5/rE\r$qd&Sss&/l&s'Y^s
+rrDL\r;beLs(24fs)A!arNQ74q8W*>ji6E<s3^Z+p"fYqpZVG/rU]RZp#uGTp#u;EqrmYCs8McV
+p[e:]s60EOs/5\aRK!6ds8 at NKJcG3=rrB,"J,~>
+[K$7,L]@;QJcE(Vhb4":qoHnHp$VeIqsO4IqsaRSqu-EXqssdQs763]qqV5)qqV50p[mkGp%JCc
+qtKQkiPtKhlc/JpqpD=]q7H=>s1 at a>q7H7<ot0n:s021.rPne_rPn*6rPnZ;l+?u8mBGoga0=0l
+a-qSZn,NCfJcDGDrrAbmrrD`lnGn.?oDeI`li6JTiW&oXJcFF'rr at WMX8f[-qrdSBoCVSGp\+Kg
+rrD`(qo8S]rPnlbpYGT-qt'jcqu)*Fs8MQgYQ"F)h>Z$trR(;orPnf`rO`*LrNQ>%s'C9VJcG3=
+rrB,"J,~>
+[K$7,L]@;QJcE(VrR'`_s60L%rQG5UpV$=;s0_mCn\Y+5q8WBEqmcUBs2OZAou@$DrODm4rNuO7
+s2P)RiPtc4ou?aDs3(EBs3(GWs2WIboDe.Unc+1>\c2Q5Jc:6"p\oaDn,NCfJcDGDrrAbmrrD`l
+nGn.?oDeI`li6JTiW&oXJcFF'rr at WMX8hpal(@LGq5=1sqksCms/5mYrLEnnrO)1$qmGgss2"`C
+s0DP$rrDNerNbD]s/l<Xs.]O]rMBI]q2Y-:jc8GIs+C,aom$LhpMK_NrF5<sokj_0okjS8qebq6
+s&Sl2pL="ms)%]XrtbE>pK"%^s8W*7JcC<$n,NCfX8d\~>
+[K$7,JcF'rrr at WMli5p:s%iYfrD*)clVR1HrE/_ds&f5!q+:6]q+U`Ys&o at hrD*AlrE/qjpIXmX
+q+U`Yoh><Mq,%)[rrE'qrCG=/oDduHnc+/5a%Q at 2q+L_fs%E:jJP1Peqb)M?n,NCfJcDGDrrA`'
+rrDfnqZ-HlqZ)3Ip](0lq>^Bnn,N7bq>^<lj8],ZaoD;>Q2gjaJcDeNs*XWtl%AGLqgA?]qgA?O
+s(2"6rE\r$qd&Sss&/l&s'Y^srrC;:s(24<s(hY=s-itlrO_sHrNPt,j2U9<rR(N+p"fYqpZVA-
+s7>j^oB?5Rp#u;Eq<7MCp#u/ArVl]Xs.',\rMTVcRK!6ds8ITLp&G$lJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMli5p:rU'R)a6i3\p[@kGs8DoZs6KXRp[\@Uqss^=rS75,rUfLMoCi1aq=jKm
+iPtKhkJm&ls3\Hus1 at a>pUg1>rO_U>ot0t<n[nV:rNQ74rGVYHrPnkas2P(cs()/6l+?\ol+?8c
+n%8Opc`k`lc'nNiJcG3=rr at WMU&Y,mU&Y,mp](*jq>^<lJcGKEr;cZnr;c<dqZ-HlqZ,[VrrC1@
+r;`,_rr at WMX8fm3qrd_EoCMSGoC_qQqlp)#q7H=>p!Nfqq<7YGs8MooJc>QGoDbljs0D\(rNbD]
+earggp"fSdqpGASrNQ>%s,M[1p&G$lJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMli6_,leVTWs2=rXs3(/Mn\P+>o>U[>ou?m?q8W*=o>^g6s.o\%qmsnhrR(GY
+s3CWEs24fYs2WUfoDe"Qnc+1>a8Z%Cq>UE"s8Mu&Jc:6"qu20Hn,NCfJcDGDrrAbmrrDfnqZ-Hl
+qZ)3Ip](0lq>^Bnn,N7bq>^<lj8],ZaoD;>Q2gjaJcDeNs/5[_l(@FEqksCuqksCWs,d&^rO)1$
+qmGgss2"`Cs0DP$rrC=Cs/l==s/H$ps1A<-rL3VDrMB1Uj,W;IrIauaom$LhpMKYLs'kU"o54M.
+okjS8q/,e6okjG4rCd$)ruqDOr>,?@pK"%^s8W*lJcGECrr at WMrVultX8d\~>
+[K$7,JcF'rrr at WMli5p:s%iYfrD*)clVR1HrE/_ds&f5!q+:6]q+U`Ys&o at hrD*AlrE/qjpIXmX
+q+U`Yoh><Mq,%)[rrE'qrCG=/oDduHnc+/5a%Q at 2q+L_fs%E:jJP1Peqb)M?n,NCfJcDGDrrA`'
+rrDfnqZ-HlqZ)3Ip](0lq>^Bnn,N7bq>^<lj8],ZaoD;>Q2gjaJcDeNs*XWtl%AGLqgA?]qgA?O
+s(2"6rE\r$qd&Sss&/l&s'Y^srrC;:s(24<s(hY=s-itlrO_sHrNPt,j2U9<rR(N+p"fYqpZVA-
+s7>j^oB?5Rp#u;Eq<7MCp#u/ArVl]Xs.',\rMTVcRK!6ds8ITLp&G$lJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMli5p:rU'R)a6i3\p[@kGs8DoZs6KXRp[\@Uqss^=rS75,rUfLMoCi1aq=jKm
+iPtKhkJm&ls3\Hus1 at a>pUg1>rO_U>ot0t<n[nV:rNQ74rGVYHrPnkas2P(cs()/6l+?\ol+?8c
+n%8Opc`k`lc'nNiJcG3=rr at WMU&Y,mU&Y,mp](*jq>^<lJcGKEr;cZnr;c<dqZ-HlqZ,[VrrC1@
+r;`,_rr at WMX8fm3qrd_EoCMSGoC_qQqlp)#q7H=>p!Nfqq<7YGs8MooJc>QGoDbljs0D\(rNbD]
+earggp"fSdqpGASrNQ>%s,M[1p&G$lJcG]KrrB,"J,~>
+[K$7,JcF'rrr at WMli6_,leVTWs2=rXs3(/Mn\P+>o>U[>ou?m?q8W*=o>^g6s.o\%qmsnhrR(GY
+s3CWEs24fYs2WUfoDe"Qnc+1>a8Z%Cq>UE"s8Mu&Jc:6"qu20Hn,NCfJcDGDrrAbmrrDfnqZ-Hl
+qZ)3Ip](0lq>^Bnn,N7bq>^<lj8],ZaoD;>Q2gjaJcDeNs/5[_l(@FEqksCuqksCWs,d&^rO)1$
+qmGgss2"`Cs0DP$rrC=Cs/l==s/H$ps1A<-rL3VDrMB1Uj,W;IrIauaom$LhpMKYLs'kU"o54M.
+okjS8q/,e6okjG4rCd$)ruqDOr>,?@pK"%^s8W*lJcGECrr at WMrVultX8d\~>
+[K$7,QiI!a^&S*4JcG3=h+R]As&o.rmnhb4s%35ioh#$[s%3#[s%3)Ts&o:qs&Aq\s$?ZYnO`=T
+s%N/Yoh>6Kqb[:mqaLNJs%(a7p&EuDnc+/5]1`/(rCd(hJP31>r;b;>s8W*!JcGECrr at WMU&Y,m
+Tb%/'p](0lp&FsjJcGKEr;cZnr;c<dr;cNjr;bmXrr at WMJcC<$s*X^!l%AAJqgA?Gqdo_>s(q^8
+qdBA.nR26"m9orls'>Y4s'>RrrrCA<s(q^)rMBCqrO`$Jqloh,ho=p:rR(N+pYG_oqrm_/s7>j^
+oB?5Rp#uAGpZVACs5!G5s.'+ep[e.Cs7?&aQi@$bs8J5^r;c*^rr at WMrVultX8d\~>
+[K$7,QiI!a^&S*4JcG3=hb4":qoHhFrU0LKp[7eEs7$!Us7$!Ps6'F\rTjLRq==RUp%&.Ps4m;*
+mIg#CrrE)mq=j]sho>?hiPtEf]uKr]o>^C6qo8HDo>^I8pVua8qo8H9ot11Bs*O^Ks().JmCVto
+n%7beo=OgpeZd)jq3q7Wl^I'us8W*!JcGECrr at WMU&Y,mU&Y,mp](0lp&FsjJcGKEr;cZnr;c<d
+r;cNjr;bmXrr at WMJcC<$a8Pbqp[[S?oCV_Kq=ackrrE)'s1 at a>qpG/oqrmqVrV_<Hp\sda_>aD=
+li-^cjo3a#oA0AbrR(SUs2P#As8W+fPQ1R]l2Ub`JcG]KrrB,"J,~>
+[K$7,QiI!a^&S*4JcG3=p!N*]s2=lVpUot2mD\J4s17mCqmuI?rP/B9s2P#Es18*Tai=5*qnrF6
+qp,5ms3'$np&F"Mnc+1>]Dhi9rVlc$Jc;kPrNaoOs8W*!JcGECrr at WMU&Y,mU&Y,mp](0lp&Fsj
+JcGKEr;cZnr;c<dr;cNjr;bmXrr at WMJcC<$s/5aal(@@CqksC_qiLcVs/5n1qm-1.nZr&"mBZc.
+s0_m4s0_h)rrCCEs.]PKrNQ0qrL3\Fqka%Uhi?rGrIauapNZRfqec"Ns'kU"o54M.okjY:pMKY6
+s*49TruqCXpL<l6s'kd>pK!t\s8W*lPQ1R]l2Ub`JcG]KrrB,"J,~>
+[K$7,QiI!a^&S*4JcG3=h+R]As&o.rmnhb4s%35ioh#$[s%3#[s%3)Ts&o:qs&Aq\s$?ZYnO`=T
+s%N/Yoh>6Kqb[:mqaLNJs%(a7p&EuDnc+/5]1`/(rCd(hJP31>r;b;>s8W*!JcGECrr at WMU&Y,m
+Tb%/'p](0lp&FsjJcGKEr;cZnr;c<dr;cNjr;bmXrr at WMJcC<$s*X^!l%AAJqgA?Gqdo_>s(q^8
+qdBA.nR26"m9orls'>Y4s'>RrrrCA<s(q^)rMBCqrO`$Jqloh,ho=p:rR(N+pYG_oqrm_/s7>j^
+oB?5Rp#uAGpZVACs5!G5s.'+ep[e.Cs7?&aQi@$bs8J5^r;c*^rr at WMrVultX8d\~>
+[K$7,QiI!a^&S*4JcG3=hb4":qoHhFrU0LKp[7eEs7$!Us7$!Ps6'F\rTjLRq==RUp%&.Ps4m;*
+mIg#CrrE)mq=j]sho>?hiPtEf]uKr]o>^C6qo8HDo>^I8pVua8qo8H9ot11Bs*O^Ks().JmCVto
+n%7beo=OgpeZd)jq3q7Wl^I'us8W*!JcGECrr at WMU&Y,mU&Y,mp](0lp&FsjJcGKEr;cZnr;c<d
+r;cNjr;bmXrr at WMJcC<$a8Pbqp[[S?oCV_Kq=ackrrE)'s1 at a>qpG/oqrmqVrV_<Hp\sda_>aD=
+li-^cjo3a#oA0AbrR(SUs2P#As8W+fPQ1R]l2Ub`JcG]KrrB,"J,~>
+[K$7,QiI!a^&S*4JcG3=p!N*]s2=lVpUot2mD\J4s17mCqmuI?rP/B9s2P#Es18*Tai=5*qnrF6
+qp,5ms3'$np&F"Mnc+1>]Dhi9rVlc$Jc;kPrNaoOs8W*!JcGECrr at WMU&Y,mU&Y,mp](0lp&Fsj
+JcGKEr;cZnr;c<dr;cNjr;bmXrr at WMJcC<$s/5aal(@@CqksC_qiLcVs/5n1qm-1.nZr&"mBZc.
+s0_m4s0_h)rrCCEs.]PKrNQ0qrL3\Fqka%Uhi?rGrIauapNZRfqec"Ns'kU"o54M.okjY:pMKY6
+s*49TruqCXpL<l6s'kd>pK!t\s8W*lPQ1R]l2Ub`JcG]KrrB,"J,~>
+[K$7,JcC<$^&Qn]rD*Ahqc!#]f1bR's&Akeq*Y0RrE9(jpHIn7o3(`Xqb7#]q*+aNrrDj`s#L*B
+mn<Z\nOrKRhb3M>JP4TfrrCkJrr at UCJP6#9s8W*!JcGECrr at WMU]9ue[1Dj/p](0lp&FsjJcGQG
+r;cNjr;cBfr;cNjr;bmXrr at WMJcC<$q1ncus*4-fm<JYYs(2.4s'YeAqe6"Gs&Jr(rE\r$qd&Ss
+s&/f$s(qX,rrCG>s'5Sms8W+qs02Nls02I6s2Ol=ot0&"mG7Tcs60.3qpG<)p"f6>s3^H%s3^H%
+s7?!Kp[eF at p#u)?pZVACQ2^g`s8ITLJcG?ArrB,"J,~>
+[K$7,JcC<$^&Qt_s6]d+\aB.Zp$_kCs5s at Hs7$!cqsj^Wqsj^Ss6o^QqsaXUoAK65n+Qb]p%S?q
+ou@#Yn](2#ho>3dj2V,2h8]?(ou?O6rPnTDou?O6qo8$8s*OLEot11Bq69n2s)7G>nZ_Pqj08?k
+o;19I_56OfgQ)=6rr at WMp&G$lJcDMFo`2E"o)SObr;cNjr;_EKq>^Bnp&Fsjnc/Ofp&Fsjj8],Z
+JcC<$JcEplqrdqJoCD#7oCW(UoCi3gs1A:2pUg+<q9f5uq<7YRs8Duss8RZLq>U!cJc>]Ke+<1e
+s2Or`s1A6LrNQ>%s-eN=JcG?ArrB,"J,~>
+[K$7,JcC<$^&RcQleVTZrQ"rRqn2mCotgUFmD[i"s18*Iq7l[DpX.+&q9f/\rrDl?s4RG'n,E?m
+nc&.[hu<0GJc=:#s0CJ[s0 at 4TJc>]Ks8W*!JcGECrr at WMU]9ue[K#gup](0lp&FsjJcGQGr;cNj
+r;cBfr;cNjr;bmXrr at WMJcC<$q4.8Qs/P[_mAg2as,d2Ls0DU$ql9[os1S<8rO)1$qmGgss2"ZA
+s/5hprrCIGs0;U9s8W,'s/#b-s/#[_s,QoOopX]sm<JGZs)%FRqh+c_om$*.s+Bo[s+Bo[s'k_>
+pL=/IokjA2pMKY6pK!nZs8W*lJcC<$oDegjX8d\~>
+[K$7,JcC<$^&Qn]rD*Ahqc!#]f1bR's&Akeq*Y0RrE9(jpHIn7o3(`Xqb7#]q*+aNrrDj`s#L*B
+mn<Z\nOrKRhb3M>JP4TfrrCkJrr at UCJP6#9s8W*!JcGECrr at WMU]9ue[1Dj/p](0lp&FsjJcGQG
+r;cNjr;cBfr;cNjr;bmXrr at WMJcC<$q1ncus*4-fm<JYYs(2.4s'YeAqe6"Gs&Jr(rE\r$qd&Ss
+s&/f$s(qX,rrCG>s'5Sms8W+qs02Nls02I6s2Ol=ot0&"mG7Tcs60.3qpG<)p"f6>s3^H%s3^H%
+s7?!Kp[eF at p#u)?pZVACQ2^g`s8ITLJcG?ArrB,"J,~>
+[K$7,JcC<$^&Qt_s6]d+\aB.Zp$_kCs5s at Hs7$!cqsj^Wqsj^Ss6o^QqsaXUoAK65n+Qb]p%S?q
+ou@#Yn](2#ho>3dj2V,2h8]?(ou?O6rPnTDou?O6qo8$8s*OLEot11Bq69n2s)7G>nZ_Pqj08?k
+o;19I_56OfgQ)=6rr at WMp&G$lJcDMFo`2E"o)SObr;cNjr;_EKq>^Bnp&Fsjnc/Ofp&Fsjj8],Z
+JcC<$JcEplqrdqJoCD#7oCW(UoCi3gs1A:2pUg+<q9f5uq<7YRs8Duss8RZLq>U!cJc>]Ke+<1e
+s2Or`s1A6LrNQ>%s-eN=JcG?ArrB,"J,~>
+[K$7,JcC<$^&RcQleVTZrQ"rRqn2mCotgUFmD[i"s18*Iq7l[DpX.+&q9f/\rrDl?s4RG'n,E?m
+nc&.[hu<0GJc=:#s0CJ[s0 at 4TJc>]Ks8W*!JcGECrr at WMU]9ue[K#gup](0lp&FsjJcGQGr;cNj
+r;cBfr;cNjr;bmXrr at WMJcC<$q4.8Qs/P[_mAg2as,d2Ls0DU$ql9[os1S<8rO)1$qmGgss2"ZA
+s/5hprrCIGs0;U9s8W,'s/#b-s/#[_s,QoOopX]sm<JGZs)%FRqh+c_om$*.s+Bo[s+Bo[s'k_>
+pL=/IokjA2pMKY6pK!nZs8W*lJcC<$oDegjX8d\~>
+[K$7,V>pPqJcD;@iCj2Es%EAes&o at urDW_ioha+2kt1V:rCQlhs%2fGkt1JLmn*==s$?Ybqa(6B
+s$crJs#ogDrrD^bp&E]<nc+/5gIqPHfh;8DJP1VgJcG9?rr at WMU&Y,mTb%/'kPtJ\JcGQGr;cNj
+r;bgVr;bmXrrCaPr;_EKJcFF'rrC[Ns*X^!q1J]lo7Q^\s'l"QqdTSAqdBA=qe6"Gs&Jr(qd&l&
+q-EAqs&K(ss'>Y4rCd.jhb3tLq+L`ss'5Sms8W%os-injrO_g.ot/tun(mfes60.3q9f0)p"f6>
+rR(<%s3^#nq=FWKrS@/1q=FXBp#u/ArNc%on+40jq>^HpJcC<$q>^HpX8d\~>
+[K$7,V>pPqJcD;@iCj4Js6]d+\aAqTs6odIs5s:IrVHQms7--Yq=4FOqsXRUs6ojSs7-!Us4mM0
+qr at YJs76'Ynb2t_oCr'mpW!5[ou?\)fuER^kJmJ4o>^gBn&G+6q8V=(q8Vm8rPn6:s)7S7o=O\"
+s1A5JpUfgspUf=erO_Npj08QP];>Cnc]3SVnc/UhJcDGDrrAbmrrD6^r;_EKq>^Bnp&FsjiW&iV
+j8],Zg&M!NJcC<$g&M'PfDjD"s6'F\qrdS at oCDAAnauYMp%J?grrE#0ou?aRq<7jKqt'dcs8Dus
+s8RZLp\sdac2RaKdJj*MfDab#p"fGks1A6Ls02>!rr at WMJcGQGrrB,"J,~>
+[K$7,V>pPqJcD;@pX/<_s2+fSs2Y/Ps1nTGs24fNq8)C8ou5b,pV6C at o?k\"pX0!@qpGGss3CYt
+s46Z<s0D=sp&E_Enc+1>g]%5Yg&CrUJc:<$JcG9?rr at WMU&Y,mU&Y,mkPtJ\JcGQGr;cNjr;bgV
+r;bmXrrCaPr;_EKJcFF'rrC[Ns/5aaq4I\eo:P]Us-3P`qiq,Yqm-0uql9[os1S<8qmH+&q6fUq
+s1SHKs0_m4rVlfshu<Y]q>UEcs0;U9s8W&%s1A6+rL3JWopXWqms+Y\s)%FRq1JW_om$*.rIac[
+s+BKOq-s at TrHS!Pq-sAKokjG4r<rL'q+L0cpK#7+q>^HpJcC<$q>^HpX8d\~>
+[K$7,V>pPqJcD;@iCj2Es%EAes&o at urDW_ioha+2kt1V:rCQlhs%2fGkt1JLmn*==s$?Ybqa(6B
+s$crJs#ogDrrD^bp&E]<nc+/5gIqPHfh;8DJP1VgJcG9?rr at WMU&Y,mTb%/'kPtJ\JcGQGr;cNj
+r;bgVr;bmXrrCaPr;_EKJcFF'rrC[Ns*X^!q1J]lo7Q^\s'l"QqdTSAqdBA=qe6"Gs&Jr(qd&l&
+q-EAqs&K(ss'>Y4rCd.jhb3tLq+L`ss'5Sms8W%os-injrO_g.ot/tun(mfes60.3q9f0)p"f6>
+rR(<%s3^#nq=FWKrS@/1q=FXBp#u/ArNc%on+40jq>^HpJcC<$q>^HpX8d\~>
+[K$7,V>pPqJcD;@iCj4Js6]d+\aAqTs6odIs5s:IrVHQms7--Yq=4FOqsXRUs6ojSs7-!Us4mM0
+qr at YJs76'Ynb2t_oCr'mpW!5[ou?\)fuER^kJmJ4o>^gBn&G+6q8V=(q8Vm8rPn6:s)7S7o=O\"
+s1A5JpUfgspUf=erO_Npj08QP];>Cnc]3SVnc/UhJcDGDrrAbmrrD6^r;_EKq>^Bnp&FsjiW&iV
+j8],Zg&M!NJcC<$g&M'PfDjD"s6'F\qrdS at oCDAAnauYMp%J?grrE#0ou?aRq<7jKqt'dcs8Dus
+s8RZLp\sdac2RaKdJj*MfDab#p"fGks1A6Ls02>!rr at WMJcGQGrrB,"J,~>
+[K$7,V>pPqJcD;@pX/<_s2+fSs2Y/Ps1nTGs24fNq8)C8ou5b,pV6C at o?k\"pX0!@qpGGss3CYt
+s46Z<s0D=sp&E_Enc+1>g]%5Yg&CrUJc:<$JcG9?rr at WMU&Y,mU&Y,mkPtJ\JcGQGr;cNjr;bgV
+r;bmXrrCaPr;_EKJcFF'rrC[Ns/5aaq4I\eo:P]Us-3P`qiq,Yqm-0uql9[os1S<8qmH+&q6fUq
+s1SHKs0_m4rVlfshu<Y]q>UEcs0;U9s8W&%s1A6+rL3JWopXWqms+Y\s)%FRq1JW_om$*.rIac[
+s+BKOq-s at TrHS!Pq-sAKokjG4r<rL'q+L0cpK#7+q>^HpJcC<$q>^HpX8d\~>
+[K$7,VuQbsJcDABh+R]As%r_erDW_ipJBa at hb!i8rAXC at qcWAOlUgn9ohPNNoh"mArrDp^rAOU7
+s#oO<oDd?6nc+/5YtOroJP1\iJcG?Arr at WMU&Y,mTb%/'l2U\^JcGKEr;cNjr;bmXr;bgVrr at WM
+JcDkPrrC[NqhP3(s*4EnrHS!fpNZREqe6"GqdBA=q.Te.qdB;,ojIZ&s&/5ls&K(ss'>Y4rCd.j
+h+RbJs%E;ks'>S`s8W+qrL3\hs1A<-q69P(f>d@:pX/`kpX0$)oA0$<rR(B'rR'`jrU^&eqq^r/
+qt'dBp#u/ArVlc$qu6KVnaj<js8W,us8W*!JcC<$rVults8W*!X8d\~>
+[K$7,VuQbsJcDABhb4":rQ,$+s6%_qn*9r?oBuM>qsXFLqtg9Ys6fdSrU04Ep[J(Mp#G`:q=ad]
+rrDT`rO_C8oDd@\nc.ppq7HC at rO_U>ot1+ at mCWD&o=On>e[t at UpUg%$rO_rFrO_C"q7HU%iNVXE
+kHOiP^SSi.JcG?Arr at WMU&Y,mU&Y,ml2U\^JcGKEr;cNjr;bmXr;bgVrr at WMJcDkPrrC[NfDYU0
+l1+B9oCMSGp%A(QrNQ;%rO_sHp!N`orTO.Ms0DP$s8Doqs8RZLp\sdaci3sMbPqIGec+\%p"fGk
+rPnf?s8W+fs8W*!JcC<$rVults8W*!X8d\~>
+[K$7,VuQbsJcDABn^6g]s2=lVs1nZFrOi0Js1nHHl,<86iPto4rQ=TKn'UI at ld>CFpX0!@qpGAt
+rRq5%kPk)Qec,+=Jc;qRqm(ePL&QZ'oDegjJcDGDrrAbmrrD<`r;_EKp](0lp&Fsjj8]&XiW&oX
+JcC<$XoJD$fDk`<s.B=kqk*heoq1uYqipuXs/5b"rMTIks1S<8qmH+&qmHI?mBZc*s2"`Cs0DV&
+rrCmSs0DP$s0;OBs8W,'rO`$)s-itlq5*bQf8fBGpOi3bpOiK_o6Bm,rIai]rIa3KrF5dBqfqdN
+qdTMKokjG4rDrk)s&T(kqebk4nQ*b)s8W*ls8W*!JcC<$rVults8W*!X8d\~>
+[K$7,VuQbsJcDABh+R]As%r_erDW_ipJBa at hb!i8rAXC at qcWAOlUgn9ohPNNoh"mArrDp^rAOU7
+s#oO<oDd?6nc+/5YtOroJP1\iJcG?Arr at WMU&Y,mTb%/'l2U\^JcGKEr;cNjr;bmXr;bgVrr at WM
+JcDkPrrC[NqhP3(s*4EnrHS!fpNZREqe6"GqdBA=q.Te.qdB;,ojIZ&s&/5ls&K(ss'>Y4rCd.j
+h+RbJs%E;ks'>S`s8W+qrL3\hs1A<-q69P(f>d@:pX/`kpX0$)oA0$<rR(B'rR'`jrU^&eqq^r/
+qt'dBp#u/ArVlc$qu6KVnaj<js8W,us8W*!JcC<$rVults8W*!X8d\~>
+[K$7,VuQbsJcDABhb4":rQ,$+s6%_qn*9r?oBuM>qsXFLqtg9Ys6fdSrU04Ep[J(Mp#G`:q=ad]
+rrDT`rO_C8oDd@\nc.ppq7HC at rO_U>ot1+ at mCWD&o=On>e[t at UpUg%$rO_rFrO_C"q7HU%iNVXE
+kHOiP^SSi.JcG?Arr at WMU&Y,mU&Y,ml2U\^JcGKEr;cNjr;bmXr;bgVrr at WMJcDkPrrC[NfDYU0
+l1+B9oCMSGp%A(QrNQ;%rO_sHp!N`orTO.Ms0DP$s8Doqs8RZLp\sdaci3sMbPqIGec+\%p"fGk
+rPnf?s8W+fs8W*!JcC<$rVults8W*!X8d\~>
+[K$7,VuQbsJcDABn^6g]s2=lVs1nZFrOi0Js1nHHl,<86iPto4rQ=TKn'UI at ld>CFpX0!@qpGAt
+rRq5%kPk)Qec,+=Jc;qRqm(ePL&QZ'oDegjJcDGDrrAbmrrD<`r;_EKp](0lp&Fsjj8]&XiW&oX
+JcC<$XoJD$fDk`<s.B=kqk*heoq1uYqipuXs/5b"rMTIks1S<8qmH+&qmHI?mBZc*s2"`Cs0DV&
+rrCmSs0DP$s0;OBs8W,'rO`$)s-itlq5*bQf8fBGpOi3bpOiK_o6Bm,rIai]rIa3KrF5dBqfqdN
+qdTMKokjG4rDrk)s&T(kqebk4nQ*b)s8W*ls8W*!JcC<$rVults8W*!X8d\~>
+h>dKTg].9RJcC<$`W+aerD*;[s$$BTq,$<Lf1Gp.s#9a;q+:HdlTXu5m6:,:s$$H=qapTIrrE'_
+s"jU>q_nC5m7['NcV*g.JP5H)r;al2rrE'lr;`$SrrAT_rrCqLJcGECr;_EKU&UY`mJlt^JcGKE
+r;cNjr;c$\q#KCRrrD<`r;_EKJcDABs*X^!pOi?fpOiEhqdT53s(qR?rG;@Es&/ksrF#G,ojI`(
+qbmGonR2Ass&/l&s'YdurrCkJrDrr-s*4R(s-iufs/#aUs-injs1A<-pTX>&e].:<pX0#\pYGSk
+s60.3oDe^8pZVM%pZVY)oB?/Eq;(`-rU]j at pZVACq>UE"s.&oKn+4*hs8W,uM?!MSJcGKErrE*!
+rrB,"J,~>
+h>dKTg].9RJcC<$`W+ggs6]d+rU'XJh<it^rTj at Bp[A.Ks6]jQqtg9Yq<n:Ks6fjSs6fXMrUBjS
+qsaRSrUU!Wp#H)7p%/(QrrE)krV-3arV-?emDebtcc5MTn&G+6q8W6Bou?O6s2OH<qlo\(s2OB:
+s02C4rGVGBn$)W"nZ_o&s)7qLs&oA4l`g8uqk`>WkG at XOs-is_q3oF%h2_M&hi<9fp&FsjJcDGD
+rrAbmrrDHdq#H!Gp](0lp&FsjkPt>XiW&oXl2U\^JcC<$TE![EqrdkGl1+<7nalAEs7Q!Ws7cK(
+rrDr.rPn`^pYG`1nc&RgJc>ECoDasPrNauQkO\H(s60 at -s1A6Ls02O8s8W+fM?!MSJcGKErrE*!
+rrB,"J,~>
+h>dKTg].9RJcC<$`W,8Op"fYdrQ"l[s2=lRrP8BJkJ[&4ji786s2t/bo>^+Dou>h8s4mLkq9f3B
+s3^l%rR(MtrRpT;oDd/9nc+1>n,E9ka8Z+Es8Mu&PQ(TfSc8Yphu83,p&FsjJcDGDrrAbmrrDHd
+q#H!Gp](0lp&FsjkPt>XiW&oXl2U\^JcC<$TE"qhqjdDQql9C_rMoaZorA%iqm-0uql9\4s1SB:
+q6fn$rO)O=s1Rs.s1SHKs0_m4rVlfsg&D$Cs5!^ps1A=2s02OCs1A6+s-itlpSIPOeW0<IpOiL+
+pNZFbs)%FRoDe]?pMKe[pMKq_o54G8q0;RLrF5SIpMKY6q,[M'ruq2Tmpb`db=hm8s%A4Kr;_EK
+p](6ns8W*!X8d\~>
+h>dKTg].9RJcC<$`W+aerD*;[s$$BTq,$<Lf1Gp.s#9a;q+:HdlTXu5m6:,:s$$H=qapTIrrE'_
+s"jU>q_nC5m7['NcV*g.JP5H)r;al2rrE'lr;`$SrrAT_rrCqLJcGECr;_EKU&UY`mJlt^JcGKE
+r;cNjr;c$\q#KCRrrD<`r;_EKJcDABs*X^!pOi?fpOiEhqdT53s(qR?rG;@Es&/ksrF#G,ojI`(
+qbmGonR2Ass&/l&s'YdurrCkJrDrr-s*4R(s-iufs/#aUs-injs1A<-pTX>&e].:<pX0#\pYGSk
+s60.3oDe^8pZVM%pZVY)oB?/Eq;(`-rU]j at pZVACq>UE"s.&oKn+4*hs8W,uM?!MSJcGKErrE*!
+rrB,"J,~>
+h>dKTg].9RJcC<$`W+ggs6]d+rU'XJh<it^rTj at Bp[A.Ks6]jQqtg9Yq<n:Ks6fjSs6fXMrUBjS
+qsaRSrUU!Wp#H)7p%/(QrrE)krV-3arV-?emDebtcc5MTn&G+6q8W6Bou?O6s2OH<qlo\(s2OB:
+s02C4rGVGBn$)W"nZ_o&s)7qLs&oA4l`g8uqk`>WkG at XOs-is_q3oF%h2_M&hi<9fp&FsjJcDGD
+rrAbmrrDHdq#H!Gp](0lp&FsjkPt>XiW&oXl2U\^JcC<$TE![EqrdkGl1+<7nalAEs7Q!Ws7cK(
+rrDr.rPn`^pYG`1nc&RgJc>ECoDasPrNauQkO\H(s60 at -s1A6Ls02O8s8W+fM?!MSJcGKErrE*!
+rrB,"J,~>
+h>dKTg].9RJcC<$`W,8Op"fYdrQ"l[s2=lRrP8BJkJ[&4ji786s2t/bo>^+Dou>h8s4mLkq9f3B
+s3^l%rR(MtrRpT;oDd/9nc+1>n,E9ka8Z+Es8Mu&PQ(TfSc8Yphu83,p&FsjJcDGDrrAbmrrDHd
+q#H!Gp](0lp&FsjkPt>XiW&oXl2U\^JcC<$TE"qhqjdDQql9C_rMoaZorA%iqm-0uql9\4s1SB:
+q6fn$rO)O=s1Rs.s1SHKs0_m4rVlfsg&D$Cs5!^ps1A=2s02OCs1A6+s-itlpSIPOeW0<IpOiL+
+pNZFbs)%FRoDe]?pMKe[pMKq_o54G8q0;RLrF5SIpMKY6q,[M'ruq2Tmpb`db=hm8s%A4Kr;_EK
+p](6ns8W*!X8d\~>
+huEWTg].9R\,ZC,JcD):hb3u?rD*5Yqb6l`m7d%Aq`a[Es$$<Oq*Y0RrAXO9qap`hs%_fBq+9U1
+pJ1`Uq_S%3rrE!]s"j[=rA4C1s""*oo1ScVrrC/6nc+/5X%WBkQV7>YRnNb]hb/P#p](0lJcDGD
+SH/-YqZ)3IoDeahp&Fsjl2UV\li6n`p](6nJcC<$KE(t!qhP2rq1JQhrIauarF5/-qdBA=qe6"-
+s&K#*q-E`&qd'(sqc35qs&/l&s'YdurrCkJrF5_Ms-iods,R&HrNQ6spTX>&e&M.<pX/rZq;(_k
+p"f6>q9f*'q9es#rR(S6q<7eKq;(`-s7?!@pZVACqu6QXqjdWKn+4$fJcC<$p&G$lX8d\~>
+huEWTg].9R\,ZC,JcD):hb4":rQ*a\fBWCrqrRkDs5j:?pZ_YCqtg3WrU0 at Es6TRMrUBXMs6fjU
+rU0LMrT!_9rU]dUrrE)krUodWo>^J'rrC0\nc/4#o=Ot at pUg1>gUm9ch7NWin%7nirO_I$qn)a%
+rFG<"pSI&Wj/)@OqjRO[pR9X/d>n5ohi<9fp](0lJcDGDrrAbmrrDNfqZ)3IoDeahp&Fsjl2UV\
+li6n`p](6nJcC<$KE('3pZMSFp$hMAnac/?oCVkOoCi-errD`3q9f$%s8Mugp&=piJc>ECoDdYG
+rN`p3qm+cOl1=`,rTO.+qo8Z?s1<j^JcGECrrB,"J,~>
+huEWTg].9R\,ZC,JcD):iR.\]s2b/ZqoelSqnVsDn&5%@rQtSls2OlRs2P)dqo8HHs2P#[q9erV
+kL'+Fg!TWNq9f3BrR(Z#s3^Yts6'FNoD\F_rrC1?nc+1>X8`('Qi@#jS,WGnhu83,p](0lJcDGD
+rrAbmrrDNfqZ)3IoDeahp&Fsjl2UV\li6n`p](6nJcC<$KE(tLqjd\dq4IParL`tDrKQ]Lqm-0u
+ql9\4s1SB:q6ft&qmH=;qn;U,s2"`Cs0DV&rrCmSrU^!Ds1A70s2P#LrMBIspSIPOduO0IpOiF)
+q0;Rbom$*.q1JQ]q1JEYrIb%lq/-(>q0;RLs'k_IpMKY6qc<Z4q]YoTmpbT`btEWfJcGECrrB,"
+J,~>
+huEWTg].9R\,ZC,JcD):hb3u?rD*5Yqb6l`m7d%Aq`a[Es$$<Oq*Y0RrAXO9qap`hs%_fBq+9U1
+pJ1`Uq_S%3rrE!]s"j[=rA4C1s""*oo1ScVrrC/6nc+/5X%WBkQV7>YRnNb]hb/P#p](0lJcDGD
+SH/-YqZ)3IoDeahp&Fsjl2UV\li6n`p](6nJcC<$KE(t!qhP2rq1JQhrIauarF5/-qdBA=qe6"-
+s&K#*q-E`&qd'(sqc35qs&/l&s'YdurrCkJrF5_Ms-iods,R&HrNQ6spTX>&e&M.<pX/rZq;(_k
+p"f6>q9f*'q9es#rR(S6q<7eKq;(`-s7?!@pZVACqu6QXqjdWKn+4$fJcC<$p&G$lX8d\~>
+huEWTg].9R\,ZC,JcD):hb4":rQ*a\fBWCrqrRkDs5j:?pZ_YCqtg3WrU0 at Es6TRMrUBXMs6fjU
+rU0LMrT!_9rU]dUrrE)krUodWo>^J'rrC0\nc/4#o=Ot at pUg1>gUm9ch7NWin%7nirO_I$qn)a%
+rFG<"pSI&Wj/)@OqjRO[pR9X/d>n5ohi<9fp](0lJcDGDrrAbmrrDNfqZ)3IoDeahp&Fsjl2UV\
+li6n`p](6nJcC<$KE('3pZMSFp$hMAnac/?oCVkOoCi-errD`3q9f$%s8Mugp&=piJc>ECoDdYG
+rN`p3qm+cOl1=`,rTO.+qo8Z?s1<j^JcGECrrB,"J,~>
+huEWTg].9R\,ZC,JcD):iR.\]s2b/ZqoelSqnVsDn&5%@rQtSls2OlRs2P)dqo8HHs2P#[q9erV
+kL'+Fg!TWNq9f3BrR(Z#s3^Yts6'FNoD\F_rrC1?nc+1>X8`('Qi@#jS,WGnhu83,p](0lJcDGD
+rrAbmrrDNfqZ)3IoDeahp&Fsjl2UV\li6n`p](6nJcC<$KE(tLqjd\dq4IParL`tDrKQ]Lqm-0u
+ql9\4s1SB:q6ft&qmH=;qn;U,s2"`Cs0DV&rrCmSrU^!Ds1A70s2P#LrMBIspSIPOduO0IpOiF)
+q0;Rbom$*.q1JQ]q1JEYrIb%lq/-(>q0;RLs'k_IpMKY6qc<Z4q]YoTmpbT`btEWfJcGECrrB,"
+J,~>
+iW&cTg].9RJcC<$bQ$Hms%*)`rC-`_q+UfbrCQZUlUgn9pIY<Is#9mDq+:*?s%3/ls%^0iqbI#U
+rA4C9rrE!]pG;gts"j[*ruh23oDe\\rrC/6oDaA7s%E at lX%WBkJP2%sJcGECrr at WMU&UY`oDe[f
+JcG3=r;cNjr;c6bqZ,[VrrDlprr at WMg&M'PJcDkPs*X^!s*4EnpNZRPs)[F<qdBA=qe6"-s&K#*
+q-E`&rE]4sq,R)qrDNT"s%E at liCj2[s&T//s)%d\rJppXrJpoHs02NlrMB7mot/VkpYGSkrPn`j
+p!NfZp"f<@pX/m%q9f$%qpG*#s7>p>pZVYKpYGT-p%/4_q<7jKs60EOn+3sdJcC<$p](6nX8d\~>
+iW&cTg].9RJcC<$bQ$NorU'R)iU,1\qr at G:qrme=qtL-QrU'ROp$;A=s7#dMrU0RKq=":JrTs at B
+rTX at Sqsj[drUTjYp%\F(oDe^-s*Ml-oDeL'iOf!,n%8P&n%8=upUgC.n[ng>q69J&l*13"l`g?"
+q5+%orFGN(o;1iYhkg(Ol^HY+V2g-,p&G$lJcDGDrrAbmrrDZjqZ)3In,N=dp&FsjmJm%`j8],Z
+q>^HpJcFF'rr at WMXoIS_qrd_BoC2AAoCDGCoCV_Kp%JF[s1A:2rO`*LpX/fmqt'@Ws8RZLp&=Xa
+MuNa^s8Mu&ec+n+q;))7q9f)ZrO[X\JcGKErrB,"J,~>
+iW&cTg].9RJcC<$bQ$PKs24lVrP\ZXs1nHJs1n6DlbrhBq9\rVs2P#bs2t;Tq8VsPqo5tipY>_p
+rrE#FpY>f3s4mY;s76'doDe^es0BcGoDaC at s8N&(X8`('Jc:`0JcGECrr at WMU&Y,mU&Y,moDe[f
+JcG3=r;cNjr;c6bqZ,[VrrDlprr at WMg&M'PJcDkPs/5aas/PsgpT"+Is.APUqm-0uql9\4s1SB:
+q6ft&rO)I;q7ZI,rPAH?s8N#uiVrlKs8N&is60L=rPnm;rPnlLs/#b-rNQ$mopX9gpNZFbrJpc"
+on3:)om$00pOi?[q1JK[qh+QYs'kYGpMKq>pNZFLoj[r%q/--Ts)%]XmpbH\cV&ihJcGKErrB,"
+J,~>
+iW&cTg].9RJcC<$bQ$Hms%*)`rC-`_q+UfbrCQZUlUgn9pIY<Is#9mDq+:*?s%3/ls%^0iqbI#U
+rA4C9rrE!]pG;gts"j[*ruh23oDe\\rrC/6oDaA7s%E at lX%WBkJP2%sJcGECrr at WMU&UY`oDe[f
+JcG3=r;cNjr;c6bqZ,[VrrDlprr at WMg&M'PJcDkPs*X^!s*4EnpNZRPs)[F<qdBA=qe6"-s&K#*
+q-E`&rE]4sq,R)qrDNT"s%E at liCj2[s&T//s)%d\rJppXrJpoHs02NlrMB7mot/VkpYGSkrPn`j
+p!NfZp"f<@pX/m%q9f$%qpG*#s7>p>pZVYKpYGT-p%/4_q<7jKs60EOn+3sdJcC<$p](6nX8d\~>
+iW&cTg].9RJcC<$bQ$NorU'R)iU,1\qr at G:qrme=qtL-QrU'ROp$;A=s7#dMrU0RKq=":JrTs at B
+rTX at Sqsj[drUTjYp%\F(oDe^-s*Ml-oDeL'iOf!,n%8P&n%8=upUgC.n[ng>q69J&l*13"l`g?"
+q5+%orFGN(o;1iYhkg(Ol^HY+V2g-,p&G$lJcDGDrrAbmrrDZjqZ)3In,N=dp&FsjmJm%`j8],Z
+q>^HpJcFF'rr at WMXoIS_qrd_BoC2AAoCDGCoCV_Kp%JF[s1A:2rO`*LpX/fmqt'@Ws8RZLp&=Xa
+MuNa^s8Mu&ec+n+q;))7q9f)ZrO[X\JcGKErrB,"J,~>
+iW&cTg].9RJcC<$bQ$PKs24lVrP\ZXs1nHJs1n6DlbrhBq9\rVs2P#bs2t;Tq8VsPqo5tipY>_p
+rrE#FpY>f3s4mY;s76'doDe^es0BcGoDaC at s8N&(X8`('Jc:`0JcGECrr at WMU&Y,mU&Y,moDe[f
+JcG3=r;cNjr;c6bqZ,[VrrDlprr at WMg&M'PJcDkPs/5aas/PsgpT"+Is.APUqm-0uql9\4s1SB:
+q6ft&rO)I;q7ZI,rPAH?s8N#uiVrlKs8N&is60L=rPnm;rPnlLs/#b-rNQ$mopX9gpNZFbrJpc"
+on3:)om$00pOi?[q1JK[qh+QYs'kYGpMKq>pNZFLoj[r%q/--Ts)%]XmpbH\cV&ihJcGKErrB,"
+J,~>
+kPt2Tg].9R`W,r<NW9"YKE'h%s%*)`rC-`_pItHUpIsgCofi=Gs$$09q+:$=s%35ns%_`@rA2hb
+s"jC:s"jZTq`as7s![h%s![n's#^66p&DQqoDaG9rrAriqZ)1?R7i,2n,NCfJcDGDSH/?_qZ)3I
+mJm+bp&Fsjn,N7bhuE]Vqu?Zrq>^BnJcFj3rr at WMXoJEKrJ1>rrIb,erHS3Kq/be6q-a5=qe6"-
+s&K#*q-E`&s'>@sq,R)qrDNT"s%E at lj%KDQrF5eDs*4L&s8W%XrD*<[rMB7mot/Piqq_"oq8WBh
+p!N`Xq;(ZBpX/m%q9f54qrmq)oB>l'pZVY)pYGN+q=FXBn*'eAnaj0fJcG]Krr at WMrVultX8d\~>
+kPt2Tg].9R`W,r<NW9"YKE'h%s6]d+iU,7^pZ)#6qrm_;rV-'KrTO(Cp$DY at rTX:Kn*BZ5rU'FF
+s6]jWrrDlcqt9j]rVcEh\]47 at qo7C&s2ON>q69J&os"8(qlo\(s)7Y9ot17#c`m)=rNQ00q69Cc
+n$(QCs01URj/&T4JcG3=rr at WMU&Y,mU&Y,mp&FmhJcG-;r;cNjr;c<dqZ,ORrrDrrrrDlpr;_EK
+jo>>\JcDkPoDS^PrVcWVmI0Z9oC;GCnalAEs7Q!WqtL-&rrE)2pW!$bp[e"Us8W&srN_"RrVlEg
+l2L^gSc8Ypec+n+qq_57qpGH"qo8ZJJcG]Krr at WMrVultX8d\~>
+kPt2Tg].9R`W,r<NW9"YKE'iVs2P#UrQ>/UkJQW(s2FZXrPefapWE<On'V*RjjF%^dF%R at rrDrD
+rS7G9rS7G9s4mY<s7>p`\c24#KDtnVVuHS!Jc;):JcG3=rr at WMU&Y,mU&Y,mp&FmhJcG-;r;cNj
+r;c<dqZ,ORrrDrrrrDlpr;_EKjo>>\JcDkPs/5gcrMoggs,$]SqipoKl)OQbs/5aos2"`KrNc7,
+pTjh,pVH[=os4P4rO)\)rrD$WrU^'Qs5!Xns8W&;rGVYHrNQ$mopX3eqfqjfq2YDuon34'q0;N2
+pOi?[q1J\jqec4_o54/FpMKq_pNZ at Jq-sAKmqr(JnRCT\d7]&jrVultJcG]KrrB,"J,~>
+kPt2Tg].9R`W,r<NW9"YKE'h%s%*)`rC-`_pItHUpIsgCofi=Gs$$09q+:$=s%35ns%_`@rA2hb
+s"jC:s"jZTq`as7s![h%s![n's#^66p&DQqoDaG9rrAriqZ)1?R7i,2n,NCfJcDGDSH/?_qZ)3I
+mJm+bp&Fsjn,N7bhuE]Vqu?Zrq>^BnJcFj3rr at WMXoJEKrJ1>rrIb,erHS3Kq/be6q-a5=qe6"-
+s&K#*q-E`&s'>@sq,R)qrDNT"s%E at lj%KDQrF5eDs*4L&s8W%XrD*<[rMB7mot/Piqq_"oq8WBh
+p!N`Xq;(ZBpX/m%q9f54qrmq)oB>l'pZVY)pYGN+q=FXBn*'eAnaj0fJcG]Krr at WMrVultX8d\~>
+kPt2Tg].9R`W,r<NW9"YKE'h%s6]d+iU,7^pZ)#6qrm_;rV-'KrTO(Cp$DY at rTX:Kn*BZ5rU'FF
+s6]jWrrDlcqt9j]rVcEh\]47 at qo7C&s2ON>q69J&os"8(qlo\(s)7Y9ot17#c`m)=rNQ00q69Cc
+n$(QCs01URj/&T4JcG3=rr at WMU&Y,mU&Y,mp&FmhJcG-;r;cNjr;c<dqZ,ORrrDrrrrDlpr;_EK
+jo>>\JcDkPoDS^PrVcWVmI0Z9oC;GCnalAEs7Q!WqtL-&rrE)2pW!$bp[e"Us8W&srN_"RrVlEg
+l2L^gSc8Ypec+n+qq_57qpGH"qo8ZJJcG]Krr at WMrVultX8d\~>
+kPt2Tg].9R`W,r<NW9"YKE'iVs2P#UrQ>/UkJQW(s2FZXrPefapWE<On'V*RjjF%^dF%R at rrDrD
+rS7G9rS7G9s4mY<s7>p`\c24#KDtnVVuHS!Jc;):JcG3=rr at WMU&Y,mU&Y,mp&FmhJcG-;r;cNj
+r;c<dqZ,ORrrDrrrrDlpr;_EKjo>>\JcDkPs/5gcrMoggs,$]SqipoKl)OQbs/5aos2"`KrNc7,
+pTjh,pVH[=os4P4rO)\)rrD$WrU^'Qs5!Xns8W&;rGVYHrNQ$mopX3eqfqjfq2YDuon34'q0;N2
+pOi?[q1J\jqec4_o54/FpMKq_pNZ at Jq-sAKmqr(JnRCT\d7]&jrVultJcG]KrrB,"J,~>
+kPt2Tg].9Ra8c/>MuWeWL&^+)rCHl^s$cl_q+UTUqb6*Co03%1pHJIGm6:P;s%_fBpG:8^oeZVm
+rrE(9rIau7s#9sFq)A=,s8T8qoDaA7Vb@$is%E:jJP3+<rrDNfrr at WMp&G$lJcDGDSH/?_r;_EK
+l2U\^q>^<ln,N=dg].3Ps8W*!JcC<$KE(srrJ1>rs+C8erF5Y;q/bk8s'>G.s(qRGrDNT%pKdT&
+ohtNapL*qts'>Y4s%E at lk=bhUs%EAms'l"Fs*4L&rVunXq3q8Yos"J.pSIJcgW'3JpX/fVrS at .o
+rPnZhoDeR4rTO()s+^R$qrmk'pZVY)p"fH-rR(;opZVMGrS?l)rMT8Y[JkaWs8W*!s8W*!JcG`M
+X8d\~>
+kPt2Tg].9Ra8c/>MuWeWL&^+)rU'R)jmCmhqrdk7pZMS:s6BLIrTNq=rV-!Ip#uGBs6KXMqrn"C
+s6K@@q<RqErTX(Aqs4:Ks8N#uqu6E_qtg3gs8Vc>]uL)aoDej1a1M)Mot0aurO_m0o=OUuq7HU%
+l`g>al`fuWqlp*2s02H4l_X9YfqmSpmA6qFs$Q8Trr at WMp&G$lJcDGDrrAbmrrD`lr;_EKl2U\^
+q>^<ln,N=dg].3Ps8W*!JcC<$KE(WCq<.eGjmVg1oC;GCq=F4Mp\"LYp%SL+rrDr9pYG`1rU]RY
+rVqHJp&=R_li-piRK!/jec+t-rS at A7rR(T"rPnfJJcGcMrrE*!rr at WMrrB,"J,~>
+kPt2Tg].9Ra8c/>MuWeWL&_%ikL'7JrP\`Ys1eTLkJQW(s2FTVs2k5^pX/lXmEtshkL'%Ze'[jD
+s5!\Ts60F/qqV58s4mG6s7?9jYQ".nJc;SHs0D\(rN_"RXoA at +n,NCfJcGECrr at WMU&Y,mU&Y,m
+p&FsjJcG!7r;cZnqZ-*br;bUPr;cltrr at WMJcCB&s/Q$frMomirJCK;ql9Ial`0umq6L$uql9V2
+rNc1*q6K\0pV$=,rPANAs0D\(rrD$Ws7?9Ss5!XnrVuo;q7HU0oqh\WpTX7cgQ)5WpOi:%rHS!f
+rJp\uoDeQ;rGD at _s#9t1qec.]pMKq_om$:LrIacfpMKe:rHR^Hr>,!6j&XW%JcGcMrrE*!rr at WM
+rrB,"J,~>
+kPt2Tg].9Ra8c/>MuWeWL&^+)rCHl^s$cl_q+UTUqb6*Co03%1pHJIGm6:P;s%_fBpG:8^oeZVm
+rrE(9rIau7s#9sFq)A=,s8T8qoDaA7Vb@$is%E:jJP3+<rrDNfrr at WMp&G$lJcDGDSH/?_r;_EK
+l2U\^q>^<ln,N=dg].3Ps8W*!JcC<$KE(srrJ1>rs+C8erF5Y;q/bk8s'>G.s(qRGrDNT%pKdT&
+ohtNapL*qts'>Y4s%E at lk=bhUs%EAms'l"Fs*4L&rVunXq3q8Yos"J.pSIJcgW'3JpX/fVrS at .o
+rPnZhoDeR4rTO()s+^R$qrmk'pZVY)p"fH-rR(;opZVMGrS?l)rMT8Y[JkaWs8W*!s8W*!JcG`M
+X8d\~>
+kPt2Tg].9Ra8c/>MuWeWL&^+)rU'R)jmCmhqrdk7pZMS:s6BLIrTNq=rV-!Ip#uGBs6KXMqrn"C
+s6K@@q<RqErTX(Aqs4:Ks8N#uqu6E_qtg3gs8Vc>]uL)aoDej1a1M)Mot0aurO_m0o=OUuq7HU%
+l`g>al`fuWqlp*2s02H4l_X9YfqmSpmA6qFs$Q8Trr at WMp&G$lJcDGDrrAbmrrD`lr;_EKl2U\^
+q>^<ln,N=dg].3Ps8W*!JcC<$KE(WCq<.eGjmVg1oC;GCq=F4Mp\"LYp%SL+rrDr9pYG`1rU]RY
+rVqHJp&=R_li-piRK!/jec+t-rS at A7rR(T"rPnfJJcGcMrrE*!rr at WMrrB,"J,~>
+kPt2Tg].9Ra8c/>MuWeWL&_%ikL'7JrP\`Ys1eTLkJQW(s2FTVs2k5^pX/lXmEtshkL'%Ze'[jD
+s5!\Ts60F/qqV58s4mG6s7?9jYQ".nJc;SHs0D\(rN_"RXoA at +n,NCfJcGECrr at WMU&Y,mU&Y,m
+p&FsjJcG!7r;cZnqZ-*br;bUPr;cltrr at WMJcCB&s/Q$frMomirJCK;ql9Ial`0umq6L$uql9V2
+rNc1*q6K\0pV$=,rPANAs0D\(rrD$Ws7?9Ss5!XnrVuo;q7HU0oqh\WpTX7cgQ)5WpOi:%rHS!f
+rJp\uoDeQ;rGD at _s#9t1qec.]pMKq_om$:LrIacfpMKe:rHR^Hr>,!6j&XW%JcGcMrrE*!rr at WM
+rrB,"J,~>
+huEWTg].9RJcC<$ec4T$rDWYtqb[)^oh#0Woh"sCq+:<Eq)?tjrBog5oeY2`qh+QdrrDq5s+C8p
+rGDRZq'c7_hb3tLd7a*2QV78WO%]EOJP3UJp&G$lnc/UhJcGECrr at WMU&UY`p](0lJcFp5r;cZn
+r;c<dr;bCJr;_EKJcCB&s*Xj%s*XcSrGDRUok=;Fl"L$$qdB;7qbmB#pKdT&ohtNapL*qts'>Y4
+s%E at lk=b\Qs)%d\s)%d\s,R-ZrJpoHs,R&HrMB7moqh&[ho>WNpX/`Tp!NZVqq^lDo?mU%p!Na%
+pX/g#rR(;oq<7e)p"fB+rU]pBmHFN?rMTD]Zi5OUqu?ZrKE(rOX8d\~>
+huEWTg].9RJcC<$ec4Z&qsF@'jmD6rp#l//oB6)4pZ2/3rTX:Tp#bZ*qrRe at s6K:>rTO"?s6BXI
+s6/qNrrDNes7$'\rV$9en^6gFs*NG=q7H7uh7NQgo=OUuq7H+"s1A*2rFGZ7rMB1kqn)[#n$)\c
+mBH,Wos"ImrE8Tcq69gdh5/kpo;/^Pp&G$lnc/UhJcGECrr at WMU&Y,mU&Y,mp](0lJcFp5r;cZn
+r;c<dr;bCJr;_EKJcCB&qu-?Rp$V;;naQ#;nac_OnauSKqtBj[rV6E4rrE)=qpGH"q<7kMs6/kL
+s8RZLp&=R_Jc>QGrNauQnale[rS at A7rR(T"rPnfJJcGWIrr@]OrrB,"J,~>
+huEWTg].9RJcC<$ec56\n^7BSrO`$=qnM1/rP\NXq8E$Sq8rN\hpMDXl-]1ZdF%XCrrDr[s3^f$
+rTO:;q<.eKhu<Y]dJib;Qi?rhO8f*`Jc<:\p&G$lnc/UhJcGECrr at WMU&Y,mU&Y,mp](0lJcFp5
+r;cZnr;c<dr;bCJr;_EKJcCB&s/5mes/5g[rJCQHor at t_l)O]iqm-+!qn`6:pU0h&otgC9pTjb6
+s0_m4s8N#uiVrl at s5!_=s5!^ps8W&;s1A<NrO`$4pSIPemA8^#rHS'hpQ"p!qi:PuoDeE7s)%F]
+rGD:]q/-(_om$:LrIacfpMKk<qfqLFrF5^@pL<#\eOtJnqu?ZrKE(rOX8d\~>
+huEWTg].9RJcC<$ec4T$rDWYtqb[)^oh#0Woh"sCq+:<Eq)?tjrBog5oeY2`qh+QdrrDq5s+C8p
+rGDRZq'c7_hb3tLd7a*2QV78WO%]EOJP3UJp&G$lnc/UhJcGECrr at WMU&UY`p](0lJcFp5r;cZn
+r;c<dr;bCJr;_EKJcCB&s*Xj%s*XcSrGDRUok=;Fl"L$$qdB;7qbmB#pKdT&ohtNapL*qts'>Y4
+s%E at lk=b\Qs)%d\s)%d\s,R-ZrJpoHs,R&HrMB7moqh&[ho>WNpX/`Tp!NZVqq^lDo?mU%p!Na%
+pX/g#rR(;oq<7e)p"fB+rU]pBmHFN?rMTD]Zi5OUqu?ZrKE(rOX8d\~>
+huEWTg].9RJcC<$ec4Z&qsF@'jmD6rp#l//oB6)4pZ2/3rTX:Tp#bZ*qrRe at s6K:>rTO"?s6BXI
+s6/qNrrDNes7$'\rV$9en^6gFs*NG=q7H7uh7NQgo=OUuq7H+"s1A*2rFGZ7rMB1kqn)[#n$)\c
+mBH,Wos"ImrE8Tcq69gdh5/kpo;/^Pp&G$lnc/UhJcGECrr at WMU&Y,mU&Y,mp](0lJcFp5r;cZn
+r;c<dr;bCJr;_EKJcCB&qu-?Rp$V;;naQ#;nac_OnauSKqtBj[rV6E4rrE)=qpGH"q<7kMs6/kL
+s8RZLp&=R_Jc>QGrNauQnale[rS at A7rR(T"rPnfJJcGWIrr@]OrrB,"J,~>
+huEWTg].9RJcC<$ec56\n^7BSrO`$=qnM1/rP\NXq8E$Sq8rN\hpMDXl-]1ZdF%XCrrDr[s3^f$
+rTO:;q<.eKhu<Y]dJib;Qi?rhO8f*`Jc<:\p&G$lnc/UhJcGECrr at WMU&Y,mU&Y,mp](0lJcFp5
+r;cZnr;c<dr;bCJr;_EKJcCB&s/5mes/5g[rJCQHor at t_l)O]iqm-+!qn`6:pU0h&otgC9pTjb6
+s0_m4s8N#uiVrl at s5!_=s5!^ps8W&;s1A<NrO`$4pSIPemA8^#rHS'hpQ"p!qi:PuoDeE7s)%F]
+rGD:]q/-(_om$:LrIacfpMKk<qfqLFrF5^@pL<#\eOtJnqu?ZrKE(rOX8d\~>
+huEWTg].9RfDkdLJcCH(qb-B\s%`Sts&].tqcWemq+U$Eo03+Eq`am9rBC0=nNQn-mlp\;rA3n+
+nMB,fnUpLZrrE(Dqec4TokjXIhb3tLdnB<4JP2P,r;_CAa\.3bbQ%SBJcDGDSH/Eam/V_;p&FU`
+q>^Bnqu?$`j8],ZJcC<$XoJD$h>dERs(24Ls'kq?qfDFDrH%4:rE];.qe5k)s&J_tqdB"noi:fq
+s&K(ss'>Y4s%E at lktCtUs)%d:rGDRZs,R'Xs,R,Js,R&Hqka7qqjR2Sl*0-dpX/ZRp!NTTrS@)F
+q9f.qn^7=!pX/g#qpG)mrTO()pYGT-s7?!@n*'`Aq5=,]\,QE5rVhBJJcG]KrrB,"J,~>
+huEWTg].9RfDkdLJcCH(qb-=tq<e(#kO%[%n`Tf-rTF.;p#l;6pZ2A9rT*k;rU]jFrT=.Ds5rk8
+qrRS7rTF.?q;qS;s6&MCrrD6]s7cQin'U[Fs*NYCot0hqhn/]got0auqn)7"s/#Cmq7HO#os"D,
+pSIDapSIDamA9W_q5+$mo;2>gqjQK?eXHB3[>oh<bQ%SBJcDGDrrAbmrrDfnm/V_;p&FU`q>^Bn
+qu?$`j8],ZJcC<$XoJD$h>dERqrd53oC);?oC;AAoCMSGs7Q'YqtL'as2P'=qpG5qqrmGHrVqHJ
+p&=R_q>U>uL]7+TfDbC5rVliQq<7k+qq_:ls+^Qcs2KWiJcG]KrrB,"J,~>
+huEWTg].9RfDkdLJcCH(qo868rOMsHs0_m:rO_s;qnM+-pWi``rP\TZqoJ`_rQ5#bp!N`nn'Usd
+n'U[\dF%XCrrE)Tqrmq5p#uAFhu<Y]e,Jt=Jc;5>rN_"Rao6kkbQ%SBJcDGDrrAbmrrDfnm/V_;
+p&FU`q>^Bnqu?$`j8],ZJcC<$XoJD$h>dERs,d87s-3J^qk*P]rL`>SrO)O.ql9P0s1S*5qm,h0
+otC1,s1SHKs0_m4s8N#ujo5;Ds8Mu\s5!^prVuo;s1A<NrO_s2rMBD'os!\WiK!YbooA]tq2YDu
+oDeW=rAX8!rGD:]q/-"]om$FPq1JEdpMKq>pNZ.DrF5R<qdSA^gIqPHrC__AJcG]KrrB,"J,~>
+huEWTg].9RfDkdLJcCH(qb-B\s%`Sts&].tqcWemq+U$Eo03+Eq`am9rBC0=nNQn-mlp\;rA3n+
+nMB,fnUpLZrrE(Dqec4TokjXIhb3tLdnB<4JP2P,r;_CAa\.3bbQ%SBJcDGDSH/Eam/V_;p&FU`
+q>^Bnqu?$`j8],ZJcC<$XoJD$h>dERs(24Ls'kq?qfDFDrH%4:rE];.qe5k)s&J_tqdB"noi:fq
+s&K(ss'>Y4s%E at lktCtUs)%d:rGDRZs,R'Xs,R,Js,R&Hqka7qqjR2Sl*0-dpX/ZRp!NTTrS@)F
+q9f.qn^7=!pX/g#qpG)mrTO()pYGT-s7?!@n*'`Aq5=,]\,QE5rVhBJJcG]KrrB,"J,~>
+huEWTg].9RfDkdLJcCH(qb-=tq<e(#kO%[%n`Tf-rTF.;p#l;6pZ2A9rT*k;rU]jFrT=.Ds5rk8
+qrRS7rTF.?q;qS;s6&MCrrD6]s7cQin'U[Fs*NYCot0hqhn/]got0auqn)7"s/#Cmq7HO#os"D,
+pSIDapSIDamA9W_q5+$mo;2>gqjQK?eXHB3[>oh<bQ%SBJcDGDrrAbmrrDfnm/V_;p&FU`q>^Bn
+qu?$`j8],ZJcC<$XoJD$h>dERqrd53oC);?oC;AAoCMSGs7Q'YqtL'as2P'=qpG5qqrmGHrVqHJ
+p&=R_q>U>uL]7+TfDbC5rVliQq<7k+qq_:ls+^Qcs2KWiJcG]KrrB,"J,~>
+huEWTg].9RfDkdLJcCH(qo868rOMsHs0_m:rO_s;qnM+-pWi``rP\TZqoJ`_rQ5#bp!N`nn'Usd
+n'U[\dF%XCrrE)Tqrmq5p#uAFhu<Y]e,Jt=Jc;5>rN_"Rao6kkbQ%SBJcDGDrrAbmrrDfnm/V_;
+p&FU`q>^Bnqu?$`j8],ZJcC<$XoJD$h>dERs,d87s-3J^qk*P]rL`>SrO)O.ql9P0s1S*5qm,h0
+otC1,s1SHKs0_m4s8N#ujo5;Ds8Mu\s5!^prVuo;s1A<NrO_s2rMBD'os!\WiK!YbooA]tq2YDu
+oDeW=rAX8!rGD:]q/-"]om$FPq1JEdpMKq>pNZ.DrF5R<qdSA^gIqPHrC__AJcG]KrrB,"J,~>
+huEWTg].9RJcC<$g]..DmnWaIq`"IVs%NAfq+UHQs$QNPlTY2)jZ`PtnNQn=q_Rh-lSIijm;;`Q
+pNZ]<s*49TrHS9Xs'l"FqdTR5Y=nKeWD!0iJP5`1r;_CAfh6nr^]4<6JcDGDSH/Eam/V_;oDeUd
+p&Fsjqu?$`j8],ZJcC<$XoJD$huEWTs(2.Qqe5kJok=;Fl"L$$qdB;7qbmGooj.H&nP]$[qdBG(
+rDNZ$s%E at lktCnSrGDRZs,R'Xs,R,3rJpiFrMBOuqjRO[oqgcSj2V,2q9efRq9erVrS@)Ff?sKZ
+q9elks604)pYGZ/rR(Aqn*'H9rMT\e\,QE5qu20HKE(rOs8W*!X8d\~>
+huEWTg].9RJcC<$g]..DhoP!Js5WY7n`Tf-kNDm*rT+"=pZ255rU]R>rT*k7s5O(Bq;qG7rTF(=
+rT4(<s5Ml6rrD*Ys7cQLn'T\*n%82kj1Fugq7H$us1 at g*rFGl'o<A2*q5*\eoqh>co;2,al)"9]
+o;2CgoqhDOje^@n]8hIB^]4<6JcDGDrrAbmrrDfnm/V_;oDeUdp&Fsjqu?$`j8],ZJcC<$XoJD$
+huEWTs6':HjmMa/oC2AAoCD_KoCVeMrV$![rV6E4rrE)Hq;(r3s8N&^n,E:cl2L^gNW/PLJc>9?
+rNb,UoCMq[s5!M7s3^`"s*Odns1A<NJcCB&rrE*!rrB,"J,~>
+huEWTg].9RJcC<$g]./jn%nnIqqD"Zs2+`LotpOBs1J*Dp!3<XqoJ`^p!EBZqqU_hpY>AfleLgR
+mHFGppYGiLs5!G5rS at G9s7?9Sqt'jdYQ".nWW)k%Jc>ECrN_"Rg&?R&^]4<6JcDGDrrAbmrrDfn
+m/V_;oDeUdp&Fsjqu?$`j8],ZJcC<$XoJD$huEWTs,d2Lql9Ocor at t_l)O]iqm-+!qn`<GosO\&
+n\On3qm-78rPANAs8N#uj8T#@s5!^prVuo;s3^ebrO`$4s/#V)s)7S7je_!ts-ib9o8`X!pQ#2s
+oDdEpqec.]om$LRpOi3bq/-(_pNZ.Doj[k8s'j_`h+RbJqb)M?KE(rOs8W*!X8d\~>
+huEWTg].9RJcC<$g]..DmnWaIq`"IVs%NAfq+UHQs$QNPlTY2)jZ`PtnNQn=q_Rh-lSIijm;;`Q
+pNZ]<s*49TrHS9Xs'l"FqdTR5Y=nKeWD!0iJP5`1r;_CAfh6nr^]4<6JcDGDSH/Eam/V_;oDeUd
+p&Fsjqu?$`j8],ZJcC<$XoJD$huEWTs(2.Qqe5kJok=;Fl"L$$qdB;7qbmGooj.H&nP]$[qdBG(
+rDNZ$s%E at lktCnSrGDRZs,R'Xs,R,3rJpiFrMBOuqjRO[oqgcSj2V,2q9efRq9erVrS@)Ff?sKZ
+q9elks604)pYGZ/rR(Aqn*'H9rMT\e\,QE5qu20HKE(rOs8W*!X8d\~>
+huEWTg].9RJcC<$g]..DhoP!Js5WY7n`Tf-kNDm*rT+"=pZ255rU]R>rT*k7s5O(Bq;qG7rTF(=
+rT4(<s5Ml6rrD*Ys7cQLn'T\*n%82kj1Fugq7H$us1 at g*rFGl'o<A2*q5*\eoqh>co;2,al)"9]
+o;2CgoqhDOje^@n]8hIB^]4<6JcDGDrrAbmrrDfnm/V_;oDeUdp&Fsjqu?$`j8],ZJcC<$XoJD$
+huEWTs6':HjmMa/oC2AAoCD_KoCVeMrV$![rV6E4rrE)Hq;(r3s8N&^n,E:cl2L^gNW/PLJc>9?
+rNb,UoCMq[s5!M7s3^`"s*Odns1A<NJcCB&rrE*!rrB,"J,~>
+huEWTg].9RJcC<$g]./jn%nnIqqD"Zs2+`LotpOBs1J*Dp!3<XqoJ`^p!EBZqqU_hpY>AfleLgR
+mHFGppYGiLs5!G5rS at G9s7?9Sqt'jdYQ".nWW)k%Jc>ECrN_"Rg&?R&^]4<6JcDGDrrAbmrrDfn
+m/V_;oDeUdp&Fsjqu?$`j8],ZJcC<$XoJD$huEWTs,d2Lql9Ocor at t_l)O]iqm-+!qn`<GosO\&
+n\On3qm-78rPANAs8N#uj8T#@s5!^prVuo;s3^ebrO`$4s/#V)s)7S7je_!ts-ib9o8`X!pQ#2s
+oDdEpqec.]om$LRpOi3bq/-(_pNZ.Doj[k8s'j_`h+RbJqb)M?KE(rOs8W*!X8d\~>
+huEWTmJm+boDegjjo>>\JcC<$qu?UfmnWaIrAXUHr?;2;q+U<Ms$QZTm6:8'jZ`DppHJU5qa:08
+pHIgto031&h/3%6rrE"BpMKqTqec at Bs)%XBs&T.%YtO]gJP2V.r;cjjr;a/srrBH"aoDA at JcG?A
+r;_EKU&UY`JcCH(rr at WMJcCf2qZ-Rfs(qXXqe5kJok=;Fl"Ks"rF#M9qbmGooj.N(s&JSeoi:ls
+s&K"qs'>XtrrD:Vs&T/:s&T/:qfr/@s,R,3rJpiFqka%Us&o)miNVLbs1A*So>^URou?V's2O`Z
+rPmsHrTO()p"fZ3pX/ZirTO.+pYG6#oCN![s7<GnJcCH(rrE*!rrB,"J,~>
+huEWTmJm+boDegjjo>>\JcC<$qu?UfjiI<lrQ+Bnqs+4ApZh;3pYb5tq;_51qrReJs7$'Ks5Ne5
+rT*k7rSmk9rSmS3s5a(8qr-0+rrCsUs8DuRn^6+2l+?QekI^>iqn(Iaq5*bgs1 at s#pTX1aq69Cc
+pTX[df;8FKs/#Zsqk`nQl_WF+s%`<W^Q-G9rr at WMoDeahJcDGDrrAb]rr at WML&_/QJcC<$O8o(W
+rCchNjmMa/oC2MEnac_OnauSKq=ad]q=t!0rrDrDqq_/5mJd.cjo5:cOoFtPJc>'9s0C8Up[e:]
+pZVG/rR(S`JcCH(rrE*!rrB,"J,~>
+huEWTmJm+boDegjjo>>\JcC<$qu?W7n%o%JrQkGrqpGB3s1ds<rPSZJqnr*Pq9SfVrQk/`p!NNh
+pX/NdpX/6\o?mU$h<=alrrE#RpZVY5qrn(Os60 at Os8N&sZ2X at pJc;;@rNcJ&rN`d/s0B'3aoDA@
+JcG?Ar;_EKU&Y,mU&Y,mJcCH(rr at WMJcCf2qZ-Tos/5gcql9Ocor at t_l)OWgrNc=#qn`<GosOb(
+s1Rs=otC7.s1SBIs0_n+rrD6]s60L^s60 at 9s8W,=s3^ebrO_s2pUgH9pTWVQkDoS2q1J:!q1J@#
+oDeiNon34'jb*MKq1J?bs)%L_om$FPqh+Wfm;;H(rtbWDfiH]tJcCH(rrE*!rrB,"J,~>
+huEWTmJm+boDegjjo>>\JcC<$qu?UfmnWaIrAXUHr?;2;q+U<Ms$QZTm6:8'jZ`DppHJU5qa:08
+pHIgto031&h/3%6rrE"BpMKqTqec at Bs)%XBs&T.%YtO]gJP2V.r;cjjr;a/srrBH"aoDA at JcG?A
+r;_EKU&UY`JcCH(rr at WMJcCf2qZ-Rfs(qXXqe5kJok=;Fl"Ks"rF#M9qbmGooj.N(s&JSeoi:ls
+s&K"qs'>XtrrD:Vs&T/:s&T/:qfr/@s,R,3rJpiFqka%Us&o)miNVLbs1A*So>^URou?V's2O`Z
+rPmsHrTO()p"fZ3pX/ZirTO.+pYG6#oCN![s7<GnJcCH(rrE*!rrB,"J,~>
+huEWTmJm+boDegjjo>>\JcC<$qu?UfjiI<lrQ+Bnqs+4ApZh;3pYb5tq;_51qrReJs7$'Ks5Ne5
+rT*k7rSmk9rSmS3s5a(8qr-0+rrCsUs8DuRn^6+2l+?QekI^>iqn(Iaq5*bgs1 at s#pTX1aq69Cc
+pTX[df;8FKs/#Zsqk`nQl_WF+s%`<W^Q-G9rr at WMoDeahJcDGDrrAb]rr at WML&_/QJcC<$O8o(W
+rCchNjmMa/oC2MEnac_OnauSKq=ad]q=t!0rrDrDqq_/5mJd.cjo5:cOoFtPJc>'9s0C8Up[e:]
+pZVG/rR(S`JcCH(rrE*!rrB,"J,~>
+huEWTmJm+boDegjjo>>\JcC<$qu?W7n%o%JrQkGrqpGB3s1ds<rPSZJqnr*Pq9SfVrQk/`p!NNh
+pX/NdpX/6\o?mU$h<=alrrE#RpZVY5qrn(Os60 at Os8N&sZ2X at pJc;;@rNcJ&rN`d/s0B'3aoDA@
+JcG?Ar;_EKU&Y,mU&Y,mJcCH(rr at WMJcCf2qZ-Tos/5gcql9Ocor at t_l)OWgrNc=#qn`<GosOb(
+s1Rs=otC7.s1SBIs0_n+rrD6]s60L^s60 at 9s8W,=s3^ebrO_s2pUgH9pTWVQkDoS2q1J:!q1J@#
+oDeiNon34'jb*MKq1J?bs)%L_om$FPqh+Wfm;;H(rtbWDfiH]tJcCH(rrE*!rrB,"J,~>
+huEWTl2U\^p](6nkPtP^JcC<$rVughmnWmMq)A1DpEBK/j[o,/q)@+noeZD-s"jO>pG;V/jYQct
+s!Z93rrE"Bmqr#4s)%dFs&T//s&Q<roDaA7QV78W[nH`$^Iu9?rr at WMp&FsjJcDGDSH+6 at L&_/Q
+JcC<$QiHj]pIkO"s*+KZrFl"Jo4\/Fl"Ks"rF#M9q,6lkrF#Y*nP]$[qdBG(rDNT"rrD at Xs&T/:
+s&T/:s*4Q\s*4MBrIb'/rL3b_s,QiBo;1?Klc/h6rR()RqpG)Vq>^Bns8W,=p!N`Xp!NfZo?mU%
+pX/Zip!NHgs60:+pYG6#naldYs0Aj-JcGECr;`&]rrB,"J,~>
+huEWTl2U\^p](6nkPtP^JcC<$rVughjiI<lpW2mloBPr1q;Cl-s5W;#pYl#,s6]jXs7$!HpZ)55
+p#5l/pZ)//s5F"7dJj.Gg]%6:s5!4mho=ikoDe-gn$)i(f<G"Gos"%aq69=aqloIaqlosdl_XWM
+kGA,[nXAjAgRA.;rL1Wa^&S*4JcGECr;_EKU&Y,mU$r!]JcCH(rr at WMJcD):q#L.^na5Z1n*ff9
+nacAEn+?;Hq=jparV?Hns3^`"qrn(Zs7>^YrVqHJoD\Rcr;cltJc>!7rNb,Uq=FF]pZVG/rR(S`
+JcGECr;`&]rrB,"J,~>
+huEWTl2U\^p](6nkPtP^JcC<$rVui9n%o%Jq:b_np[IXgo>C=Js3LM^p!<*RqpG)lq9eZdq9e<Z
+qpGH,dHLT1rS?r+rU^'Qs7?9is7<AloDaC at Qi?rh\,QE5^](qHrr at WMp&FsjJcDGDrrAbmrr at WM
+L&_/QJcC<$QiHj]p\t2ms.'+erMo[co;_h_l)OWgrNc=#q8)a3rNcI:n\On3qm-78rPAH?rrD<_
+s60L^s60L=s60L=rVuiDrPnfJs02OCpUg%$hkfY!qjRJ9muI9tooAkJr;clts,Qc)rJpQ's,Q]'
+s)%L_om$.^om$LRq1JEdm;;B&rtbVBfiH]tJcGECr;`&]rrB,"J,~>
+huEWTl2U\^p](6nkPtP^JcC<$rVughmnWmMq)A1DpEBK/j[o,/q)@+noeZD-s"jO>pG;V/jYQct
+s!Z93rrE"Bmqr#4s)%dFs&T//s&Q<roDaA7QV78W[nH`$^Iu9?rr at WMp&FsjJcDGDSH+6 at L&_/Q
+JcC<$QiHj]pIkO"s*+KZrFl"Jo4\/Fl"Ks"rF#M9q,6lkrF#Y*nP]$[qdBG(rDNT"rrD at Xs&T/:
+s&T/:s*4Q\s*4MBrIb'/rL3b_s,QiBo;1?Klc/h6rR()RqpG)Vq>^Bns8W,=p!N`Xp!NfZo?mU%
+pX/Zip!NHgs60:+pYG6#naldYs0Aj-JcGECr;`&]rrB,"J,~>
+huEWTl2U\^p](6nkPtP^JcC<$rVughjiI<lpW2mloBPr1q;Cl-s5W;#pYl#,s6]jXs7$!HpZ)55
+p#5l/pZ)//s5F"7dJj.Gg]%6:s5!4mho=ikoDe-gn$)i(f<G"Gos"%aq69=aqloIaqlosdl_XWM
+kGA,[nXAjAgRA.;rL1Wa^&S*4JcGECr;_EKU&Y,mU$r!]JcCH(rr at WMJcD):q#L.^na5Z1n*ff9
+nacAEn+?;Hq=jparV?Hns3^`"qrn(Zs7>^YrVqHJoD\Rcr;cltJc>!7rNb,Uq=FF]pZVG/rR(S`
+JcGECr;`&]rrB,"J,~>
+huEWTl2U\^p](6nkPtP^JcC<$rVui9n%o%Jq:b_np[IXgo>C=Js3LM^p!<*RqpG)lq9eZdq9e<Z
+qpGH,dHLT1rS?r+rU^'Qs7?9is7<AloDaC at Qi?rh\,QE5^](qHrr at WMp&FsjJcDGDrrAbmrr at WM
+L&_/QJcC<$QiHj]p\t2ms.'+erMo[co;_h_l)OWgrNc=#q8)a3rNcI:n\On3qm-78rPAH?rrD<_
+s60L^s60L=s60L=rVuiDrPnfJs02OCpUg%$hkfY!qjRJ9muI9tooAkJr;clts,Qc)rJpQ's,Q]'
+s)%L_om$.^om$LRq1JEdm;;B&rtbVBfiH]tJcGECr;`&]rrB,"J,~>
+huEWTjo>>\q>^HpJcC<$j8]-PmmHh.qb-`.rtbJTiCWu3q)@%lmkao+s"jO>o/$D1iA:Kts!Z-/
+rrE(9rHS!Ps'kqDq-sA)s'l"/fh;8DgIq5>]hA;(JP4`jrr at UCrC__AV>pPqJcDGDSH+6 at L&_/Q
+JcFF'rr at WM`W,f8nOrmqs*+?RqfD:@s)[F<qd'/.qe5e'o3MB(mo&gYs%<5ts&K"qs'>Y.rrDFZ
+qc<T2s*4MBrIb'/rL3VDpR:cOgT^(bq7H[Sn&G=Ro>^J'qo8BXrPnNXs2OZXs60.'q;)"hp!NNi
+pX/Zin*'63qm*R-JcCB&rrB,"J,~>
+huEWTjo>>\q>^HpJcC<$j8]-PjiI<ln]:IloBQ#3q;D/5n`/llpYl#+qsF@>pYc)1s5<S+rSIS4
+s5*M.s5!_3c2R_Cg&D$CrS@(mn&G<Qou?1,p&FKmc`m at YpTX7cq69=arNPUas01gcrNQ*dmA9cM
+kGA-Gs%`0SnYOd)a,Y`NV>pPqJcDGDrrAb]rr at WML&_/QJcFF'rr at WM`W,f8nOr9:oBu/;naQ;C
+oCD_KoCV_Kp%S:WrrDrDrS at ABn,E:cJc>3=p&BUBkPk at ag]%$?q>U3Rs7?'BqpBupKE(rOX8d\~>
+huEWTjo>>\q>^HpJcC<$j8]/!n'(UZs4[@tnaQ4gmDJnJq8`N\mEbIPrR()hrR'rds3]f\s3^l0
+c050-s60F;p#uGIrTO(Ks8N&ifDb`Sg]$mG^&Iu9Jc=F's0 at 4TrVhBJV>pPqJcDGDrrAbmrr at WM
+L&_/QJcFF'rr at WM`W,f8q=FF]s/Q*hql9OcnZ)V]l)OWgrNc=#q8)[1s0D+0otCCHrNcI:rPANA
+s1/.0kPkABs5!YRrR(S`rO_sHpUg+&gSO:tq3q>9muI@!o8`MDqi:E'rJpQ's,Q]'s)%F]q0;ju
+on3!`pOi-`mqqN&q[;.Zfh6nrKE(rOX8d\~>
+huEWTjo>>\q>^HpJcC<$j8]-PmmHh.qb-`.rtbJTiCWu3q)@%lmkao+s"jO>o/$D1iA:Kts!Z-/
+rrE(9rHS!Ps'kqDq-sA)s'l"/fh;8DgIq5>]hA;(JP4`jrr at UCrC__AV>pPqJcDGDSH+6 at L&_/Q
+JcFF'rr at WM`W,f8nOrmqs*+?RqfD:@s)[F<qd'/.qe5e'o3MB(mo&gYs%<5ts&K"qs'>Y.rrDFZ
+qc<T2s*4MBrIb'/rL3VDpR:cOgT^(bq7H[Sn&G=Ro>^J'qo8BXrPnNXs2OZXs60.'q;)"hp!NNi
+pX/Zin*'63qm*R-JcCB&rrB,"J,~>
+huEWTjo>>\q>^HpJcC<$j8]-PjiI<ln]:IloBQ#3q;D/5n`/llpYl#+qsF@>pYc)1s5<S+rSIS4
+s5*M.s5!_3c2R_Cg&D$CrS@(mn&G<Qou?1,p&FKmc`m at YpTX7cq69=arNPUas01gcrNQ*dmA9cM
+kGA-Gs%`0SnYOd)a,Y`NV>pPqJcDGDrrAb]rr at WML&_/QJcFF'rr at WM`W,f8nOr9:oBu/;naQ;C
+oCD_KoCV_Kp%S:WrrDrDrS at ABn,E:cJc>3=p&BUBkPk at ag]%$?q>U3Rs7?'BqpBupKE(rOX8d\~>
+huEWTjo>>\q>^HpJcC<$j8]/!n'(UZs4[@tnaQ4gmDJnJq8`N\mEbIPrR()hrR'rds3]f\s3^l0
+c050-s60F;p#uGIrTO(Ks8N&ifDb`Sg]$mG^&Iu9Jc=F's0 at 4TrVhBJV>pPqJcDGDrrAbmrr at WM
+L&_/QJcFF'rr at WM`W,f8q=FF]s/Q*hql9OcnZ)V]l)OWgrNc=#q8)[1s0D+0otCCHrNcI:rPANA
+s1/.0kPkABs5!YRrR(S`rO_sHpUg+&gSO:tq3q>9muI@!o8`MDqi:E'rJpQ's,Q]'s)%F]q0;ju
+on3!`pOi-`mqqN&q[;.Zfh6nrKE(rOX8d\~>
+huEWTj8]&XrVultp](0lJcFR+rrAPgrCcTHq`"=Dq'#\Pr?:tPk=PV>s#9m?s#8[rkqi3(dkh"P
+a)1hVm;;l4s)%L>qc9spoDaA7P=tiSLJ+iNoh0l9rVultJcDGDSH+6 at L&_/QJcFF'rr at WMci="F
+s8VrrlV%7ks*+?RqfD:@s)[L>q-Er,rFkq'o3MArmo&gYs%</rrDNT"rrDFZrDrf4rHS;@s+C3/
+rIb'/opYQMfs'qbq7H[SmDf1Rqo8S]s2O[1qo8HZq8W6Xqo7gHq;)"hp!NNip!NNin*'Z?rR(Aq
+s,m?;rK7-9hu<ZIg]!-2rr at WMrVultX8d\~>
+huEWTj8]&XrVultp](0lJcFR+rrAPgrCcCrq+Ktns6]jLp$2;7qr%G9s5<5'l/;U#s5<_3rSIG=
+rSR;+oA06!rS[S/a8Z)=fDbgAs60F;o?lO:l+?Qeo=MiCnYQ,emA9iec_^<'nYQ&Ml_XEGrD*$S
+pSHK1a,[A'okf9[rVultJcDGDrrAb]rr at WML&_/QJcFF'rr at WMci="Fs8VrrlV$L0p$VG?oC2;?
+p%&.SnauSKp\+ at VrV?Hns3^`"rU]@SrVqHJq>U>us8MWiJc=d1s0D\(rNb2WrU]d_qrn"Mqq_;9
+qpC?%rr at WMrVultX8d\~>
+huEWTj8]&XrVultp](0lJcFR+rrAPgrPn<Mqq(Y`l1"SemDJn8s2Y)`s2XHOp!EZb[G:fFa6<O'
+mHFTAs604KX8__jJc:l4rN_4XYQ+:pJcG]Krr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcF'rrrE*!
+qZ-*VrVlhss.&tdqk*DYs.AVWq6g1,rMoV.o<nV3n%n\1s2b)CrPAH?rrD<_qrn"7rVuoFqo8T^
+rPnNBos!,GmuI44s+B^!s+C3/rBpUFoDe]Jq1JL'q1JR)kC`STrJpQ'pNZ@`pNZ.DqdTMVpNZ]h
+s*4Jns*3F%s'j_UMuWeWJcG]KrrB,"J,~>
+huEWTj8]&XrVultp](0lJcFR+rrAPgrCcTHq`"=Dq'#\Pr?:tPk=PV>s#9m?s#8[rkqi3(dkh"P
+a)1hVm;;l4s)%L>qc9spoDaA7P=tiSLJ+iNoh0l9rVultJcDGDSH+6 at L&_/QJcFF'rr at WMci="F
+s8VrrlV%7ks*+?RqfD:@s)[L>q-Er,rFkq'o3MArmo&gYs%</rrDNT"rrDFZrDrf4rHS;@s+C3/
+rIb'/opYQMfs'qbq7H[SmDf1Rqo8S]s2O[1qo8HZq8W6Xqo7gHq;)"hp!NNip!NNin*'Z?rR(Aq
+s,m?;rK7-9hu<ZIg]!-2rr at WMrVultX8d\~>
+huEWTj8]&XrVultp](0lJcFR+rrAPgrCcCrq+Ktns6]jLp$2;7qr%G9s5<5'l/;U#s5<_3rSIG=
+rSR;+oA06!rS[S/a8Z)=fDbgAs60F;o?lO:l+?Qeo=MiCnYQ,emA9iec_^<'nYQ&Ml_XEGrD*$S
+pSHK1a,[A'okf9[rVultJcDGDrrAb]rr at WML&_/QJcFF'rr at WMci="Fs8VrrlV$L0p$VG?oC2;?
+p%&.SnauSKp\+ at VrV?Hns3^`"rU]@SrVqHJq>U>us8MWiJc=d1s0D\(rNb2WrU]d_qrn"Mqq_;9
+qpC?%rr at WMrVultX8d\~>
+huEWTj8]&XrVultp](0lJcFR+rrAPgrPn<Mqq(Y`l1"SemDJn8s2Y)`s2XHOp!EZb[G:fFa6<O'
+mHFTAs604KX8__jJc:l4rN_4XYQ+:pJcG]Krr at WMU&Y,mU&Y,mJcCH(rr at WMg&M'PJcF'rrrE*!
+qZ-*VrVlhss.&tdqk*DYs.AVWq6g1,rMoV.o<nV3n%n\1s2b)CrPAH?rrD<_qrn"7rVuoFqo8T^
+rPnNBos!,GmuI44s+B^!s+C3/rBpUFoDe]Jq1JL'q1JR)kC`STrJpQ'pNZ@`pNZ.DqdTMVpNZ]h
+s*4Jns*3F%s'j_UMuWeWJcG]KrrB,"J,~>
+huEWThuEQRJcF'rrrA\kqb-HHo1Sm&q\K2To+pjfq*Y0Rks"u#nNQ1nrBp*2q^C\bs"2-*rrDk3
+s'k_>rF5eDrF5e-s'ke)YtO]gd7aE<JP4*Xq#HUOZiBVirrDddJcGcMrr at WMU&UY`JcCH(rr at WM
+JcDYJqZ,_Ns(MFKqe5kJqe5Y5lY,lqs(M4+s%i5ls&JMco2Yf_rF#M#s'>X)mn<IWs)%d\s'ks,
+rIb'/rIb!-pR:cOqlp$0hlu^lpUgI0mDf1Rou?V'qo8HZq8W6Xqo8<Vs2O`Zqq_.hp!NTkrPnTZ
+pYG<%pX/HcrK7!5kPkGOg]!34rr at WMrVultX8d\~>
+huEWThuEQRJcF'rrrA\kqb-J#o1SVps1\<MrNc7aq<.S3rTE;&jl#snrSIM?p##Z)p"fT'rS./'
+s4>0frrCUKs7?9SrS@(miPt,ooDeQsgT^Wes/#+emA9iel_XWMl_XWMl)"!?oqh>Mn"o]Gq+gaS
+qka1Mh3uNIZiBW6ruq,RJcGcMrr at WMU&Y,mU$r!]JcCH(rr at WMJcDYJqZ,_NmHsrAoum7#oC);?
+naZYMp%._Gs7Q-[p\4R[s7uZprS at MFrTO4On,E:ce,K<OU]0lbJc=L)rNb8Ys7>p_qrn"Mqq_;9
+qpCE'rr at WMrVultX8d\~>
+huEWThuEQRJcF'rrrA\kqo80Mo>^OlmI9_as24ZFs24ZXn^%*dp!EZbs4c/\qrd.t_s%+#q<7kM
+pZVSIs60FQs8N&iWW)MhdJj*MJc<djq6H4`ZiBXrs0DCuJcGcMrr at WMU&Y,mU&Y,mJcCH(rr at WM
+JcDYJqZ,aLs/Q*sql9Ocql9>$l`0Qas/Pn2s2=N:s1Rm;o=b1FrNc=:s0_k,kPkMFs5!_HrVuiD
+rPnf`qo8BBos"=irE8$So8`R6s/#+Cs+C!)oDe]Jq1JL'q1JR)on3:)on3-dqi:?%q0;jupOi3b
+mqqfOms+d^qfq:)rF4MSNW9"YJcG]KrrB,"J,~>
+huEWThuEQRJcF'rrrA\kqb-HHo1Sm&q\K2To+pjfq*Y0Rks"u#nNQ1nrBp*2q^C\bs"2-*rrDk3
+s'k_>rF5eDrF5e-s'ke)YtO]gd7aE<JP4*Xq#HUOZiBVirrDddJcGcMrr at WMU&UY`JcCH(rr at WM
+JcDYJqZ,_Ns(MFKqe5kJqe5Y5lY,lqs(M4+s%i5ls&JMco2Yf_rF#M#s'>X)mn<IWs)%d\s'ks,
+rIb'/rIb!-pR:cOqlp$0hlu^lpUgI0mDf1Rou?V'qo8HZq8W6Xqo8<Vs2O`Zqq_.hp!NTkrPnTZ
+pYG<%pX/HcrK7!5kPkGOg]!34rr at WMrVultX8d\~>
+huEWThuEQRJcF'rrrA\kqb-J#o1SVps1\<MrNc7aq<.S3rTE;&jl#snrSIM?p##Z)p"fT'rS./'
+s4>0frrCUKs7?9SrS@(miPt,ooDeQsgT^Wes/#+emA9iel_XWMl_XWMl)"!?oqh>Mn"o]Gq+gaS
+qka1Mh3uNIZiBW6ruq,RJcGcMrr at WMU&Y,mU$r!]JcCH(rr at WMJcDYJqZ,_NmHsrAoum7#oC);?
+naZYMp%._Gs7Q-[p\4R[s7uZprS at MFrTO4On,E:ce,K<OU]0lbJc=L)rNb8Ys7>p_qrn"Mqq_;9
+qpCE'rr at WMrVultX8d\~>
+huEWThuEQRJcF'rrrA\kqo80Mo>^OlmI9_as24ZFs24ZXn^%*dp!EZbs4c/\qrd.t_s%+#q<7kM
+pZVSIs60FQs8N&iWW)MhdJj*MJc<djq6H4`ZiBXrs0DCuJcGcMrr at WMU&Y,mU&Y,mJcCH(rr at WM
+JcDYJqZ,aLs/Q*sql9Ocql9>$l`0Qas/Pn2s2=N:s1Rm;o=b1FrNc=:s0_k,kPkMFs5!_HrVuiD
+rPnf`qo8BBos"=irE8$So8`R6s/#+Cs+C!)oDe]Jq1JL'q1JR)on3:)on3-dqi:?%q0;jupOi3b
+mqqfOms+d^qfq:)rF4MSNW9"YJcG]KrrB,"J,~>
+huEWTg].9RJcC<$mJl-<pEAW6q+:HNs%35Xs#91+oeZ>+k;3'(nMBthm5+ce^MWuNq/-"<q/-(>
+s&T)-pK"Ijp&BS9ND'3MSP-HlktD$VpIkGbKE(rOJcDGDSH+6 at L&_/QJcC<$YQ+CuiCj2grG;@E
+qfD^LnRV$#o3MB0q,75goj.Sqs&JMco2Yf_rF#Y*rDNZ$rrDFZrDrr8s*4QQrVuhKs,R,(qh+j-
+opYQMe$/MbpUgI0mDf1<pVuh)pW!0ZpW!*Xq8W0VrPnNXrS@:hp!NZmqo8BXpYGN+n'UOYrK6p3
+li-kSg\ud(li6tbU&Y,mX8d\~>
+huEWTg].9RJcC<$mJl-<n&YC?rQ+lArP&<sqrdk7s6':;j5]ahoA06!rS%57p"TB"rRq5)s4RA)
+q:kr)rRnm`rrC[Ms7?9is7?3QrS at .olc/%uqlobnqn(C_rMAteeYW55mA9]KmA9?ApSIDKo;1cA
+rD*6Ys/#OOiL8#O\,Z8KnSS:LpMKj/KE(rOJcDGDrrAb]rr at WML&_/QJcC<$YQ+CuiCj4Jna6;C
+n]UarrU94EnaZMIq=F4Mp%A(Rq=sparrE)Hqrn"Mn,E:cJc>3=oDaC at fDb`Shu<ZIp&=pRqt'dB
+rTO.+JcG'9rrAbmrrB,"J,~>
+huEWTg].9RJcC<$mJl.boBkf3q83$@s24lLs2XlZo?[*`s3LMfrS,rZq<./#s4tHRrrDlYqt'XI
+rU^'grUZlbp&BUBNW/m^Sc6+ul2L^gp\t*kKE(rOJcDGDrrAbmrr at WML&_/QJcC<$YQ+CuiUd)A
+s/,goql9OcrMoD"mAfccs/Pn2s2=T<s2"`Kn%nV/s2b/Es1SBIs0_k,l2L_Hs5!_HrVuiDs2P)p
+qpGA^ot0n$e"u_tpR;,Ym>h48pQ"kFpQ#3)pQ#-'q2Y3%rJpQ'rHS-uon3-dqi:E'pNZ at Jmt:"P
+r at IbhlW3sngIm+tli6tbU&Y,mX8d\~>
+huEWTg].9RJcC<$mJl-<pEAW6q+:HNs%35Xs#91+oeZ>+k;3'(nMBthm5+ce^MWuNq/-"<q/-(>
+s&T)-pK"Ijp&BS9ND'3MSP-HlktD$VpIkGbKE(rOJcDGDSH+6 at L&_/QJcC<$YQ+CuiCj2grG;@E
+qfD^LnRV$#o3MB0q,75goj.Sqs&JMco2Yf_rF#Y*rDNZ$rrDFZrDrr8s*4QQrVuhKs,R,(qh+j-
+opYQMe$/MbpUgI0mDf1<pVuh)pW!0ZpW!*Xq8W0VrPnNXrS@:hp!NZmqo8BXpYGN+n'UOYrK6p3
+li-kSg\ud(li6tbU&Y,mX8d\~>
+huEWTg].9RJcC<$mJl-<n&YC?rQ+lArP&<sqrdk7s6':;j5]ahoA06!rS%57p"TB"rRq5)s4RA)
+q:kr)rRnm`rrC[Ms7?9is7?3QrS at .olc/%uqlobnqn(C_rMAteeYW55mA9]KmA9?ApSIDKo;1cA
+rD*6Ys/#OOiL8#O\,Z8KnSS:LpMKj/KE(rOJcDGDrrAb]rr at WML&_/QJcC<$YQ+CuiCj4Jna6;C
+n]UarrU94EnaZMIq=F4Mp%A(Rq=sparrE)Hqrn"Mn,E:cJc>3=oDaC at fDb`Shu<ZIp&=pRqt'dB
+rTO.+JcG'9rrAbmrrB,"J,~>
+huEWTg].9RJcC<$mJl.boBkf3q83$@s24lLs2XlZo?[*`s3LMfrS,rZq<./#s4tHRrrDlYqt'XI
+rU^'grUZlbp&BUBNW/m^Sc6+ul2L^gp\t*kKE(rOJcDGDrrAbmrr at WML&_/QJcC<$YQ+CuiUd)A
+s/,goql9OcrMoD"mAfccs/Pn2s2=T<s2"`Kn%nV/s2b/Es1SBIs0_k,l2L_Hs5!_HrVuiDs2P)p
+qpGA^ot0n$e"u_tpR;,Ym>h48pQ"kFpQ#3)pQ#-'q2Y3%rJpQ'rHS-uon3-dqi:E'pNZ at Jmt:"P
+r at IbhlW3sngIm+tli6tbU&Y,mX8d\~>
+huEWTg].9RJcC<$nc.WBs"*mfh\Q)Voh"O7nMBu)k;3'(nMBhdo/$Dk]5 at QJq/,q:s&T)8qdTS+
+s'kY%cV+3:j\,:HJP1nor;``g]Dp8OJcG`MJcDGDSH+6 at L&_/QJcC<$\,Z7(q>]DHs(q^Zq.TYH
+s(Le1mqD;us(M4+s%iYupKdess&JGaoi;#^rF#Y*rDNZ$rrDL\rDrr8s&T)-rVunMs)%^ZrIb!-
+pR:]MdBNGdot11,pW!/YrPnlLpVuh)pW!0Zou?sXpW!$VrPnHVs5!Fhp!Nfqq8W0Vp"fN/s2OHR
+l.uB%pYG<;q=F.Us0D1oJcG!7rrAhorrB,"J,~>
+huEWTg].9RJcC<$nc.WBlcAt;s2b#ArP&<0s0DO[qrdk7jl>CWq;2)(rTX(2q;(l"rS%5)s4I;'
+s4+[ZrrCUKrU^'Qs7?9SrS at .omDf+:rGV5<os",hs1 at U$s/#+eq5*\el_XQKn"oiKnYQ&MnYPQ?
+qk`bMoqgc=rD)sEkF0_W]Dq>Ej)'AIrr at WMU&Y,mU$r!]JcCH(rr at WMJcE4Zq#L6jiCiS*s2aZP
+rU0ROoC2AAoCDqQnauYMp%JF[qtU!_rrE#]p[dqSrVqTNrNbtmoDaC at e,KBQci3t.s/5bcs5!Y;
+rR$2rl2Ub`U]:>oX8d\~>
+huEWTg].9RJcC<$nc.Xhs5NS9jm`/ZrPJBJo?R6Zo at j6!q9]/re_Ki\oA'B%]BK7pq<7YGs8Mu\
+qt'jes7=/-rNbPap&BUBMuN[\VuF=.dJe^srr at WMU&Y,mU&Y,mJcCH(rr at WMJcE4Zq#L6jiUd)H
+s-rtdrMoaes/PIun#Gues/Pn2s2=rJpU1%;s1Rg9otCCLrNcI:rPANArrDBas60L^rU^!fs3^l1
+rS at G"qo8BBo<?W=q2Y-:rMB7KrBpODs-i\BoDeQFrIad'rIaj)q1JX+o7R'fpQ"p!s*4@"pOi-`
+qec at nm=XYJs"*nhmoK6npIkHcs%E at lnOnH5l2Ub`U]:>oX8d\~>
+huEWTg].9RJcC<$nc.WBs"*mfh\Q)Voh"O7nMBu)k;3'(nMBhdo/$Dk]5 at QJq/,q:s&T)8qdTS+
+s'kY%cV+3:j\,:HJP1nor;``g]Dp8OJcG`MJcDGDSH+6 at L&_/QJcC<$\,Z7(q>]DHs(q^Zq.TYH
+s(Le1mqD;us(M4+s%iYupKdess&JGaoi;#^rF#Y*rDNZ$rrDL\rDrr8s&T)-rVunMs)%^ZrIb!-
+pR:]MdBNGdot11,pW!/YrPnlLpVuh)pW!0Zou?sXpW!$VrPnHVs5!Fhp!Nfqq8W0Vp"fN/s2OHR
+l.uB%pYG<;q=F.Us0D1oJcG!7rrAhorrB,"J,~>
+huEWTg].9RJcC<$nc.WBlcAt;s2b#ArP&<0s0DO[qrdk7jl>CWq;2)(rTX(2q;(l"rS%5)s4I;'
+s4+[ZrrCUKrU^'Qs7?9SrS at .omDf+:rGV5<os",hs1 at U$s/#+eq5*\el_XQKn"oiKnYQ&MnYPQ?
+qk`bMoqgc=rD)sEkF0_W]Dq>Ej)'AIrr at WMU&Y,mU$r!]JcCH(rr at WMJcE4Zq#L6jiCiS*s2aZP
+rU0ROoC2AAoCDqQnauYMp%JF[qtU!_rrE#]p[dqSrVqTNrNbtmoDaC at e,KBQci3t.s/5bcs5!Y;
+rR$2rl2Ub`U]:>oX8d\~>
+huEWTg].9RJcC<$nc.Xhs5NS9jm`/ZrPJBJo?R6Zo at j6!q9]/re_Ki\oA'B%]BK7pq<7YGs8Mu\
+qt'jes7=/-rNbPap&BUBMuN[\VuF=.dJe^srr at WMU&Y,mU&Y,mJcCH(rr at WMJcE4Zq#L6jiUd)H
+s-rtdrMoaes/PIun#Gues/Pn2s2=rJpU1%;s1Rg9otCCLrNcI:rPANArrDBas60L^rU^!fs3^l1
+rS at G"qo8BBo<?W=q2Y-:rMB7KrBpODs-i\BoDeQFrIad'rIaj)q1JX+o7R'fpQ"p!s*4@"pOi-`
+qec at nm=XYJs"*nhmoK6npIkHcs%E at lnOnH5l2Ub`U]:>oX8d\~>
+huEWTg].9RJcC<$p&Fh\s"*b7pFQ+`i>24hmn*+7lSJQ)lSJPhrA4C>o/#nbpG;ho[r)-FpMKe:
+rDrr8qdTM)s'kq-s%EAms%EAmY=nQgj\,OPJP2t8r;a)q^]2>IJcG`MJcDGDSH+6 at L&_/QJcC<$
+]Dqa.rCcb^j\,Ves*+9PqfD"4nS%N"s(M4+s%iYupKd#]qc3MkrC?lqs&K"qs'>X)nOr[YrF5a*
+rGDLXqh+j-pR;,7ooA^6fs(@npUg7*o>^[>q8W+-ou@$Zo>^gXou?mVq8W*Tou?[PpVumRpYGl5
+q8VmNleVB!pYGH?p[e"Us0D+mJcCf2rrE*!rrB,"J,~>
+huEWTg].9RJcC<$p&Fh\s2ae)jiI83os4UqrK7&Kqrd_3n`/*Ss5*_.rTX(2s5!Y.s5!S*rR_)%
+s4 at 5%s4RG&[Jp1+e,K=;qrn"7o?m$Hlaubmp&FKbq5++qrFGZ,pSIPel_XKInYPuKo;2,KoqgoA
+rMAnMq5+%Mj-p".rBp=>l^H4]^]3>=j_]SKrr at WMU&Y,mU$r!]JcCH(rr at WMJcE@^qZ-RfoDdoF
+n*Tqlo?70[p$_MAnaZSKp[dqIs7Q-[q=j^[rV?Hns3^f/qt'@WrVqHJn,E"[Jc=-tq6JEIs/5\a
+q<7k+JcCf2rrE*!rrB,"J,~>
+huEWTg].9RJcC<$p&G!&rPnlso>^OaoBk`1q:beao>C=JrQk#fqqM.trS-ers6&_'n`TZ%s4t0J
+rrDfWqt'dcs60 at OrVligU]0rdjo54aJc;YJrN`^-^]2 at RJcG`MJcDGDrrAbmrr at WML&_/QJcC<$
+]Dqa.rS@)Fjn&MOs-rh`qk*,bnZ)2gs/Pn2s2=rJpU08%qn;mCrQP;Is1SBIs0_k,l2LYQrVui[
+rS@@urPnTDs3^MZot/nRqi:E>q5*\CqjR>@p&F]Fs+Bp's+C!)qh+^)on2pton3"!on3!`s)%Rl
+mt9qNq(28bo2bTppIkHcrrDL\JcCf2rrE*!rrB,"J,~>
+huEWTg].9RJcC<$p&Fh\s"*b7pFQ+`i>24hmn*+7lSJQ)lSJPhrA4C>o/#nbpG;ho[r)-FpMKe:
+rDrr8qdTM)s'kq-s%EAms%EAmY=nQgj\,OPJP2t8r;a)q^]2>IJcG`MJcDGDSH+6 at L&_/QJcC<$
+]Dqa.rCcb^j\,Ves*+9PqfD"4nS%N"s(M4+s%iYupKd#]qc3MkrC?lqs&K"qs'>X)nOr[YrF5a*
+rGDLXqh+j-pR;,7ooA^6fs(@npUg7*o>^[>q8W+-ou@$Zo>^gXou?mVq8W*Tou?[PpVumRpYGl5
+q8VmNleVB!pYGH?p[e"Us0D+mJcCf2rrE*!rrB,"J,~>
+huEWTg].9RJcC<$p&Fh\s2ae)jiI83os4UqrK7&Kqrd_3n`/*Ss5*_.rTX(2s5!Y.s5!S*rR_)%
+s4 at 5%s4RG&[Jp1+e,K=;qrn"7o?m$Hlaubmp&FKbq5++qrFGZ,pSIPel_XKInYPuKo;2,KoqgoA
+rMAnMq5+%Mj-p".rBp=>l^H4]^]3>=j_]SKrr at WMU&Y,mU$r!]JcCH(rr at WMJcE@^qZ-RfoDdoF
+n*Tqlo?70[p$_MAnaZSKp[dqIs7Q-[q=j^[rV?Hns3^f/qt'@WrVqHJn,E"[Jc=-tq6JEIs/5\a
+q<7k+JcCf2rrE*!rrB,"J,~>
+huEWTg].9RJcC<$p&G!&rPnlso>^OaoBk`1q:beao>C=JrQk#fqqM.trS-ers6&_'n`TZ%s4t0J
+rrDfWqt'dcs60 at OrVligU]0rdjo54aJc;YJrN`^-^]2 at RJcG`MJcDGDrrAbmrr at WML&_/QJcC<$
+]Dqa.rS@)Fjn&MOs-rh`qk*,bnZ)2gs/Pn2s2=rJpU08%qn;mCrQP;Is1SBIs0_k,l2LYQrVui[
+rS@@urPnTDs3^MZot/nRqi:E>q5*\CqjR>@p&F]Fs+Bp's+C!)qh+^)on2pton3"!on3!`s)%Rl
+mt9qNq(28bo2bTppIkHcrrDL\JcCf2rrE*!rrB,"J,~>
+[K$7,JcC<$p](%^k:HQTithFjr>,D5r>+inpHI%^q^DD1o/#b^s"jOsrF4Gsj'r%*rrDe1q-s5%
+qdTM)s'kq-s%EAms%EAmYtO]gJP1noq#Jf8rrDFZ_>h2AL&_)OJcDGDSH+6 at L&_/QJcC<$`W,r<
+s8Vrro1ScVrrD:Vs(MFKq.TYHl"'<tpKdf&s'>@ss%iYuq-Eqss%i#[rDiYkrC?lns&K"qs'>X)
+mn<U[rF5a*rGDFVrIb!-s-ib9o8`:.qlp*2kHOj'pUgI0s())4o>^[>qo87-ji7>Jou?sXpVusT
+s1 at sDpX0#Qou?aRpYGS`n'U1OrK6j1p&=XUiVnE.OoPF]s8W*!X8d\~>
+[K$7,JcC<$p](%^f?!^#q6L$jqiUoVs0DZps0DZpp#,T)c/&EVrS%57rS."tq:>AnrRJ+NrrCIG
+rU]pMrS@@us2Or`n&F\*os"&fo<@napTX1aqlo=]q3poOopYQMo:#EMkF2F2l'hRIq2X^.qi:J>
+qi:-6rIaKts$Q16_>i87j)'MMr;_EKU&Y,mU$r!]JcCH(rr at WMJcE^hrrE*!qZ-4\p&G$lktCL4
+ouQgLs6fLIq=*qEqss:Kqt0RSs7Z?ap\=X]rrE#]rU]LWrVsS1s0C2Ss0C\aoDaC at bPqIGe,K+5
+q<7k+JcCl4rrE*!rrB,"J,~>
+[K$7,JcC<$p]('$s53)#lg=B7q:bf:s4[G at qni$Dqp,/dn_3Hdp"]H-n(d<ns4mM-rU\_+j7E<7
+rrDfWq=FL_qt'dcs7<)doDaC at MuNOXdJj0OmJas%^&E`cr;_EKU&Y,mU&Y,mJcCH(rr at WMJcE^h
+rrE*!qZ-6Dp&G&il1=qSs/,Uks.91]l+?JcpU1%3s0_U;s2=rJq6g1;s2=<@rOr$CrQP;Ls1SBI
+s0_k,li-kSrVui[qq_4uqo8ZJq9efRn%8Ins&nN]qi:E>s/#`urMB+GqjRDBoDdp4s+C!)rIaj)
+pOiL7ooAd!s-iV at pOi3bpQ"]pj*:MRpNZ at 3oj[ekqc<)WJcCl4rrE*!rrB,"J,~>
+[K$7,JcC<$p](%^k:HQTithFjr>,D5r>+inpHI%^q^DD1o/#b^s"jOsrF4Gsj'r%*rrDe1q-s5%
+qdTM)s'kq-s%EAms%EAmYtO]gJP1noq#Jf8rrDFZ_>h2AL&_)OJcDGDSH+6 at L&_/QJcC<$`W,r<
+s8Vrro1ScVrrD:Vs(MFKq.TYHl"'<tpKdf&s'>@ss%iYuq-Eqss%i#[rDiYkrC?lns&K"qs'>X)
+mn<U[rF5a*rGDFVrIb!-s-ib9o8`:.qlp*2kHOj'pUgI0s())4o>^[>qo87-ji7>Jou?sXpVusT
+s1 at sDpX0#Qou?aRpYGS`n'U1OrK6j1p&=XUiVnE.OoPF]s8W*!X8d\~>
+[K$7,JcC<$p](%^f?!^#q6L$jqiUoVs0DZps0DZpp#,T)c/&EVrS%57rS."tq:>AnrRJ+NrrCIG
+rU]pMrS@@us2Or`n&F\*os"&fo<@napTX1aqlo=]q3poOopYQMo:#EMkF2F2l'hRIq2X^.qi:J>
+qi:-6rIaKts$Q16_>i87j)'MMr;_EKU&Y,mU$r!]JcCH(rr at WMJcE^hrrE*!qZ-4\p&G$lktCL4
+ouQgLs6fLIq=*qEqss:Kqt0RSs7Z?ap\=X]rrE#]rU]LWrVsS1s0C2Ss0C\aoDaC at bPqIGe,K+5
+q<7k+JcCl4rrE*!rrB,"J,~>
+[K$7,JcC<$p]('$s53)#lg=B7q:bf:s4[G at qni$Dqp,/dn_3Hdp"]H-n(d<ns4mM-rU\_+j7E<7
+rrDfWq=FL_qt'dcs7<)doDaC at MuNOXdJj0OmJas%^&E`cr;_EKU&Y,mU&Y,mJcCH(rr at WMJcE^h
+rrE*!qZ-6Dp&G&il1=qSs/,Uks.91]l+?JcpU1%3s0_U;s2=rJq6g1;s2=<@rOr$CrQP;Ls1SBI
+s0_k,li-kSrVui[qq_4uqo8ZJq9efRn%8Ins&nN]qi:E>s/#`urMB+GqjRDBoDdp4s+C!)rIaj)
+pOiL7ooAd!s-iV at pOi3bpQ"]pj*:MRpNZ at 3oj[ekqc<)WJcCl4rrE*!rrB,"J,~>
+[K$7,JcC<$qu?C`k:GX/qZ-(#s$$*Iq`b$=q**Cdr@%V's$QB6m3r!OrHS-IiGI7WrrE",q/-"<
+q,[H'qc<_is&T(ks&Q6pp&FbZr;_CAO\>WQeP#oBo1R(&ZV0ukr;`,_r;_EKU&UY`JcCH(rr at WM
+JcEdjqZ,qTp&G$llV%7ks(qRGqfDdUk at F0tpKdf&s'>@srD35prDNYkm8Em_q,7/]s'>Y)qbmFo
+nOrg]rF5a*qec:Vqh+p/s*43hooA:*rNQ<4kHP!+pUgI0s((r0ou?m at qo8=/j2V,'o>^gXpVusT
+rO_aBqpGASou?aRqq^k`mEsnKrK6j1q>U!Wj8OW0NW9"YX8d\~>
+[K$7,JcC<$qu?C`fuWp%qm-0js,m,TrNc<jpYc#1qq_;'gYMPRrR^r/qq(Yrs4R5!s4 at 4urRItJ
+rrCIGqt'dMq;)"sn]'P"os",hpTXU!oqhJgn"ouel)"'ApSIDKq5*PKqk`JErJp-2ooAF.muI?6
+rJpQ>pOhpps$QC<`W+>1j)+Jhr;`,_r;_EKU&Y,mU#5kMJcCH(rr at WMJcEdjqZ,qTp&G$llV$d8
+pW2gHnaHMIoC;AAp%/.Sq=XLUqtL'aqt^3frrE)_p[e(WrVsG-s0C>Ws0CV_p&BUB`W#hAe,K79
+s8MiXJcC`0rrB,"J,~>
+[K$7,JcC<$qu?E&q;:Z#j6c`tn*pA%rPJBJqp,5^qp,5fn(RHhp"]N/rTNe,mH=N5rS@;@iTStd
+rrE#hq<7_Iq>U?aSc8<^p\t,sJc:f2rNauQs0D7q`W*:Dp&FsjQ2gd_JcDGDrrAbmrr at WML&_/Q
+JcC<$a8c#:leV76rrDBVs/H$qrMfgsqk*nmkI^>cpU1%3s0_U;rP\N>rPANPmD8b7q8*$Rs0_m?
+qn`:4mJd(UrVucYrS@@us2P)pp!NHPl+?njs&nN]s,QiBs/#`uq5*bEqjRDBp&F'4s/#=Is+C'+
+pOiF5ooAp%rL3D>pOi?fo8`3jiHY;PpNZL7o4%YkpK$fWJcC`0rrB,"J,~>
+[K$7,JcC<$qu?C`k:GX/qZ-(#s$$*Iq`b$=q**Cdr@%V's$QB6m3r!OrHS-IiGI7WrrE",q/-"<
+q,[H'qc<_is&T(ks&Q6pp&FbZr;_CAO\>WQeP#oBo1R(&ZV0ukr;`,_r;_EKU&UY`JcCH(rr at WM
+JcEdjqZ,qTp&G$llV%7ks(qRGqfDdUk at F0tpKdf&s'>@srD35prDNYkm8Em_q,7/]s'>Y)qbmFo
+nOrg]rF5a*qec:Vqh+p/s*43hooA:*rNQ<4kHP!+pUgI0s((r0ou?m at qo8=/j2V,'o>^gXpVusT
+rO_aBqpGASou?aRqq^k`mEsnKrK6j1q>U!Wj8OW0NW9"YX8d\~>
+[K$7,JcC<$qu?C`fuWp%qm-0js,m,TrNc<jpYc#1qq_;'gYMPRrR^r/qq(Yrs4R5!s4 at 4urRItJ
+rrCIGqt'dMq;)"sn]'P"os",hpTXU!oqhJgn"ouel)"'ApSIDKq5*PKqk`JErJp-2ooAF.muI?6
+rJpQ>pOhpps$QC<`W+>1j)+Jhr;`,_r;_EKU&Y,mU#5kMJcCH(rr at WMJcEdjqZ,qTp&G$llV$d8
+pW2gHnaHMIoC;AAp%/.Sq=XLUqtL'aqt^3frrE)_p[e(WrVsG-s0C>Ws0CV_p&BUB`W#hAe,K79
+s8MiXJcC`0rrB,"J,~>
+[K$7,JcC<$qu?E&q;:Z#j6c`tn*pA%rPJBJqp,5^qp,5fn(RHhp"]N/rTNe,mH=N5rS@;@iTStd
+rrE#hq<7_Iq>U?aSc8<^p\t,sJc:f2rNauQs0D7q`W*:Dp&FsjQ2gd_JcDGDrrAbmrr at WML&_/Q
+JcC<$a8c#:leV76rrDBVs/H$qrMfgsqk*nmkI^>cpU1%3s0_U;rP\N>rPANPmD8b7q8*$Rs0_m?
+qn`:4mJd(UrVucYrS@@us2P)pp!NHPl+?njs&nN]s,QiBs/#`uq5*bEqjRDBp&F'4s/#=Is+C'+
+pOiF5ooAp%rL3D>pOi?fo8`3jiHY;PpNZL7o4%YkpK$fWJcC`0rrB,"J,~>
+[K$7,JcC<$s8Vabm4A,Xk8*pprtbP5m2#(Qs#9a;h)"pVq`"O'pG;1bq/,k8kAA[WrrE",rDrl6
+q-s)!s'kk+s%EAm]hA;(mn<?RJP1Per;b)8a8`25L&_/QJcDGDSH+6 at L&_/QJcFF'rr at WMp](*j
+iCieBmn<[os(qRGqfDdUj^e+!oj.T$s'>@srD35prDNYkm8EsapJUlYq,74mo1T$_s'l"/qu?V3
+rHS3lqfqjfo8`"&iNW'gos"21pUgIFoDeipou?s7ou@$9ji72Fqn)O at qpG;QpVusTrS?q^n'TtI
+rK6j1rVl?Yj8OW0iW&iVZiC%*X8d\~>
+[K$7,JcC<$s8Vabh8o9'rNc<js/5gXq5<nUqr%)%s46Snp"K#gs4@;%qr[k/pXoN!s4.(rq:#Ak
+VuH\rci3n7qrmk3rR(/Tlb!+6qn)O*p&FonmA9cceYVf)q5*PKqk`\KrMA\Gq2Xj2o8`:.l&P^0
+q3po-j,V1[aa!2ipL8jVrr at WMU&Y,mU#5kMJcCH(rr at WMg&M'PJcGKEqZ,SJoDe8Pna6.no?6sU
+q=""GoC;_KoCMYIs7Q3]p\4LYqt^6lrTO.Mp&=jgJc>-;oDaC at _>aD=ec,I;rVl]XJcF^/r;a2(
+rrB,"J,~>
+[K$7,JcC<$s8Vc(oABH)iU-Nns7$!@mI9Mgs2Y/bqp4lfp"T5rqrdk?s6'.3mH=</p[dS3e+<S>
+rU^!erTO(Kp\t3aZi9p/n,E"[Jc:6"rNa]Ia8`4>L&_/QJcDGDrrAbmrr at WML&_/QJcFF'rr at WM
+p](*jqpFT_oDe:Ns/H$qql0Ibs01UspT!nos1/0;pVHgHq6g1;s2=<@s1S0CqonlPrrDNes7?9i
+qu?WYrS@@uqq_"oo>]t*iMH:;oqhDCpR;,BoDeieooB!IooB'Kjc94jqjR2<qh+d7pQ#!#rHRdk
+mt9G at r@I\frDrGtrCclcnOnH5iW&iVZiC%*X8d\~>
+[K$7,JcC<$s8Vabm4A,Xk8*pprtbP5m2#(Qs#9a;h)"pVq`"O'pG;1bq/,k8kAA[WrrE",rDrl6
+q-s)!s'kk+s%EAm]hA;(mn<?RJP1Per;b)8a8`25L&_/QJcDGDSH+6 at L&_/QJcFF'rr at WMp](*j
+iCieBmn<[os(qRGqfDdUj^e+!oj.T$s'>@srD35prDNYkm8EsapJUlYq,74mo1T$_s'l"/qu?V3
+rHS3lqfqjfo8`"&iNW'gos"21pUgIFoDeipou?s7ou@$9ji72Fqn)O at qpG;QpVusTrS?q^n'TtI
+rK6j1rVl?Yj8OW0iW&iVZiC%*X8d\~>
+[K$7,JcC<$s8Vabh8o9'rNc<js/5gXq5<nUqr%)%s46Snp"K#gs4@;%qr[k/pXoN!s4.(rq:#Ak
+VuH\rci3n7qrmk3rR(/Tlb!+6qn)O*p&FonmA9cceYVf)q5*PKqk`\KrMA\Gq2Xj2o8`:.l&P^0
+q3po-j,V1[aa!2ipL8jVrr at WMU&Y,mU#5kMJcCH(rr at WMg&M'PJcGKEqZ,SJoDe8Pna6.no?6sU
+q=""GoC;_KoCMYIs7Q3]p\4LYqt^6lrTO.Mp&=jgJc>-;oDaC at _>aD=ec,I;rVl]XJcF^/r;a2(
+rrB,"J,~>
+[K$7,JcC<$s8Vc(oABH)iU-Nns7$!@mI9Mgs2Y/bqp4lfp"T5rqrdk?s6'.3mH=</p[dS3e+<S>
+rU^!erTO(Kp\t3aZi9p/n,E"[Jc:6"rNa]Ia8`4>L&_/QJcDGDrrAbmrr at WML&_/QJcFF'rr at WM
+p](*jqpFT_oDe:Ns/H$qql0Ibs01UspT!nos1/0;pVHgHq6g1;s2=<@s1S0CqonlPrrDNes7?9i
+qu?WYrS@@uqq_"oo>]t*iMH:;oqhDCpR;,BoDeieooB!IooB'Kjc94jqjR2<qh+d7pQ#!#rHRdk
+mt9G at r@I\frDrGtrCclcnOnH5iW&iVZiC%*X8d\~>
+[K$7,JcF'rrrBP.o1S6ilPB?th\P69iA:?Zq`"C#q_R[hq/,Y2m;:0YrrDq*q,[B%moKB[s&Q$j
+rVultqu;4?JP6#9r;bGBaoA,/L&_/QJcDGDSH+6 at L&_/QJcFF'rr at WMpAif<oDeJVs(qFCrH&!W
+j(.mtoj.N"q,7)cs'#A,qbmGiiDTPCs&/kmrDNXqoh5<cs%E5irVuh5qfr'VqfqddooA""l*1+s
+s/#P'o<A&1pUgIFoDeipou?s7pW!09ji78Hq7H=>rR(GQpVumRmDeVBh;.sjp"fZIn+5Z?QiI'c
+JcG]KrrB,"J,~>
+[K$7,JcF'rrrBP.o1Ru^otLI3qjd\lo;D,Ks,lL#l.YUWqr[k/s4I(rqpPMnrQtSlU]18nc2Rb7
+q<7Y1qpG#TkI^2erVultqu>'?s-i>Om at +!Me!g<5kF2.*n!`^*opXj"s$Qf]m=X_baoB2%pMK;,
+L&_/QJcDGDrrAbMrr at WML&_/QJcFF'rr at WMpAif<oDeJVna5qho?7*Yp[@_Cp[S4Qn+6GKp\"LY
+qtKp]q>('frrE)_rU]RYrVrGfrNauQoDaC at _>a>;ec,I;rVl]XQiI'cJcG]KrrB,"J,~>
+[K$7,JcF'rrrBP.o=O\[h<k*js6\q;rU]F%pWrTfp"TH#s4dM-qrdk?qrdk3n)sN1nal/3ch%/:
+qt'X_qt#mJrVultqu;6HJc>]KrNb&SaoA.8L&_/QJcDGDrrAbmrr at WML&_/QJcFF'rr at WMpAjg4
+jk]P.p%/3\pSn+_s01OqpT!norOMa?qo&NFrO)O=s2<m4qoo)Vs2=lPrrDBarVui[qq_57qq^qm
+ou>t&l)">]s02<fo;28CpR;,BoDeieooB!IpQ#3Kjc9:lq3pu:rIap7pQ"p!m>gXfh0AfJom$L;
+mpbrjnOo5Krr at WMrVultX8d\~>
+[K$7,JcF'rrrBP.o1S6ilPB?th\P69iA:?Zq`"C#q_R[hq/,Y2m;:0YrrDq*q,[B%moKB[s&Q$j
+rVultqu;4?JP6#9r;bGBaoA,/L&_/QJcDGDSH+6 at L&_/QJcFF'rr at WMpAif<oDeJVs(qFCrH&!W
+j(.mtoj.N"q,7)cs'#A,qbmGiiDTPCs&/kmrDNXqoh5<cs%E5irVuh5qfr'VqfqddooA""l*1+s
+s/#P'o<A&1pUgIFoDeipou?s7pW!09ji78Hq7H=>rR(GQpVumRmDeVBh;.sjp"fZIn+5Z?QiI'c
+JcG]KrrB,"J,~>
+[K$7,JcF'rrrBP.o1Ru^otLI3qjd\lo;D,Ks,lL#l.YUWqr[k/s4I(rqpPMnrQtSlU]18nc2Rb7
+q<7Y1qpG#TkI^2erVultqu>'?s-i>Om at +!Me!g<5kF2.*n!`^*opXj"s$Qf]m=X_baoB2%pMK;,
+L&_/QJcDGDrrAbMrr at WML&_/QJcFF'rr at WMpAif<oDeJVna5qho?7*Yp[@_Cp[S4Qn+6GKp\"LY
+qtKp]q>('frrE)_rU]RYrVrGfrNauQoDaC at _>a>;ec,I;rVl]XQiI'cJcG]KrrB,"J,~>
+[K$7,JcF'rrrBP.o=O\[h<k*js6\q;rU]F%pWrTfp"TH#s4dM-qrdk?qrdk3n)sN1nal/3ch%/:
+qt'X_qt#mJrVultqu;6HJc>]KrNb&SaoA.8L&_/QJcDGDrrAbmrr at WML&_/QJcFF'rr at WMpAjg4
+jk]P.p%/3\pSn+_s01OqpT!norOMa?qo&NFrO)O=s2<m4qoo)Vs2=lPrrDBarVui[qq_57qq^qm
+ou>t&l)">]s02<fo;28CpR;,BoDeieooB!IpQ#3Kjc9:lq3pu:rIap7pQ"p!m>gXfh0AfJom$L;
+mpbrjnOo5Krr at WMrVultX8d\~>
+[K$7,JcF'rrrB\2nOr$gnJ:j!fbW[5jYQ]\q`"=!rA3slpMKA.nSQHYrrDq*oiD$#moH2Vs8W*!
+q>Z"=JP6#9rrE'lr;b_Jc2Xn=rrDL\L]@ASJcDGDSH+6 at L&_/QJcC<$g&LpLbtI[.q+La(pLsMH
+s)6k,q.TM.qc`enqbR5qrE]A"rD2BMqa^Zas%iSkrrDX`qc<[qqec:@qec:Von2jrhjX;Ds((f,
+rMBD'nZ_o1o=O\qrNQ%9qloh7qloh7rNPt7rR(GQou@$ZpUg+<q9f5SmDeVBfA6Cfp"f*.p&>!_
+oDY0Xrr at WMrVultX8d\~>
+[K$7,JcF'rrrB\2nOqo`otLI(q4.Jjor%>MpQ>"%j4a%Ss3pl*q:,;lqpPMjrQtSiTDnijdJj1;
+s8Mugq<7k7rR(Z$qpG#Tn[mtgs8W*!q>]!Aq3piMl^IjMl^Ij6l'hX4l'h:*nXAj*pR;,7iK!ps
+s+C8/nUp:jc2Y>!oj[q:mp_(Prr at WMU&Y,mU#5kMJcCH(rr at WMJcFF'qZ+l6oDeVZna5kfo?7*Y
+p$_MAnacAErUfpYp\+FWs7lKeqtpBnrU]pMp\t-kVuH_%a8Yc3Jc<4ZrNauQs7?'crTK[Lrr at WM
+rVultX8d\~>
+[K$7,JcF'rrrB\2n[nP[iU-BjrU&G1o?QsRqqD#'rS%##rS753qrmk=rS6r+pZV);n`\0frrDrf
+p&=p]OoGC\rrDlpJc:6"s8N&(s8Mu&hu:n#XoA at +n,A+Brr at WMU&Y,mU&Y,mJcCH(rr at WMJcFF'
+qZ-<:h;/%noDeXXs/,OirLX%js1%+$q5X1sqmlO=qo&NFrO)U?rP[[2qoo)Vs2=lPrrDHcrVucY
+rU]pMrS at .oo>]\"pSImmoqhVkqjR&Oqi:9:p&FuepQ#-IpQ#-IpQ#3KooB!'q3pu:s+C'7ooAj#
+s-i>8mt95:r at IVdmpbrjs'kdss&T(kRK*9eJcG]KrrB,"J,~>
+[K$7,JcF'rrrB\2nOr$gnJ:j!fbW[5jYQ]\q`"=!rA3slpMKA.nSQHYrrDq*oiD$#moH2Vs8W*!
+q>Z"=JP6#9rrE'lr;b_Jc2Xn=rrDL\L]@ASJcDGDSH+6 at L&_/QJcC<$g&LpLbtI[.q+La(pLsMH
+s)6k,q.TM.qc`enqbR5qrE]A"rD2BMqa^Zas%iSkrrDX`qc<[qqec:@qec:Von2jrhjX;Ds((f,
+rMBD'nZ_o1o=O\qrNQ%9qloh7qloh7rNPt7rR(GQou@$ZpUg+<q9f5SmDeVBfA6Cfp"f*.p&>!_
+oDY0Xrr at WMrVultX8d\~>
+[K$7,JcF'rrrB\2nOqo`otLI(q4.Jjor%>MpQ>"%j4a%Ss3pl*q:,;lqpPMjrQtSiTDnijdJj1;
+s8Mugq<7k7rR(Z$qpG#Tn[mtgs8W*!q>]!Aq3piMl^IjMl^Ij6l'hX4l'h:*nXAj*pR;,7iK!ps
+s+C8/nUp:jc2Y>!oj[q:mp_(Prr at WMU&Y,mU#5kMJcCH(rr at WMJcFF'qZ+l6oDeVZna5kfo?7*Y
+p$_MAnacAErUfpYp\+FWs7lKeqtpBnrU]pMp\t-kVuH_%a8Yc3Jc<4ZrNauQs7?'crTK[Lrr at WM
+rVultX8d\~>
+[K$7,JcF'rrrB\2n[nP[iU-BjrU&G1o?QsRqqD#'rS%##rS753qrmk=rS6r+pZV);n`\0frrDrf
+p&=p]OoGC\rrDlpJc:6"s8N&(s8Mu&hu:n#XoA at +n,A+Brr at WMU&Y,mU&Y,mJcCH(rr at WMJcFF'
+qZ-<:h;/%noDeXXs/,OirLX%js1%+$q5X1sqmlO=qo&NFrO)U?rP[[2qoo)Vs2=lPrrDHcrVucY
+rU]pMrS at .oo>]\"pSImmoqhVkqjR&Oqi:9:p&FuepQ#-IpQ#-IpQ#3KooB!'q3pu:s+C'7ooAj#
+s-i>8mt95:r at IVdmpbrjs'kdss&T(kRK*9eJcG]KrrB,"J,~>
+[K$7,JcCZ.mn;geobRE)q\K23f,![9q(r%%lSJ>brAXBtruCVYpMK/(pMIr[rrDk(k>qOSs&Pgd
+p&BS9JP6#9rrE!jr;c"Rci9n9rrDL\l2U\^U]:>oJcDGDSH+6 at L&_/QJcC<$iW&]R_b9b(r;cdh
+s(MFKq.TeLrGUY*q.TM.rEB4sq,7)cs'#A,rDNMgmo'0]pJUfWqbmFooh50_rVun7rDrl+qec4T
+on2jrh4"5Fs()/6s((l.qka8'n$)c1ot0hqqlon9q69b9q69V5rNPt7s3^MOpW!6;pUg+<rR(MS
+mDeP at e_U1dp"f62rTO(VrU]^]JcCr6rrB,"J,~>
+[K$7,JcCZ.mn;ibotLI(rLEbjs.&b[nXT35q;(Ajs3pYprRUShrT!Y%qpk_lrQkGhs3@,5rrCCE
+q=FLIrS at .oqo8*:iNW"TfqnG3o;0p)qi:-6qi:'4muI.2s+BQrrL3V9jc94js#9n/rAXD%o8_/s
+]m0Qom:-)2mpbP]r;`Vmrr at WMU&Y,mU#5kMJcCH(rr at WMJcF^/q#J<*p](0lrCcbLlcA\@qsX(E
+q=4 at QoCMYIs7Q3]p\4LYqt^9grrE)TqrmeRrVreps0D\(s0BiIoDaC@[Jp-1fDbgAp\oaDPQ1X_
+X8d\~>
+[K$7,JcCZ.n%88WkO&/tqsFF7p[.)3rU]@#rRq/'s3pl!p"TH#q<._?p#lAGoB5l3l1=Z5a7K<2
+q=B1:p&BUBJc>]Ks0DV&rNbVcci9pBs0D+ml2U\^U]:>oJcDGDrrAbmrr at WML&_/QJcC<$iW&]R
+mEt%OoB>rKr;cffs/H$qq5OCcrN,t-jh(>gpU0t1s2=`Lqo&NFrO)U?qo%s>s2=ZJq98`PrrDNe
+rVuo]rVlceqrmq5p!NBNh7NQ\s&oAus&o)mqlp$fn"ouCopYLPqka+Kq5*tKq5*hGrMB1Is+C!5
+pQ#9MpR:c8rIb!9m>gRdeTh$Dom$(;rGD at 2rF5RqrDnLLPQ1X_X8d\~>
+[K$7,JcCZ.mn;geobRE)q\K23f,![9q(r%%lSJ>brAXBtruCVYpMK/(pMIr[rrDk(k>qOSs&Pgd
+p&BS9JP6#9rrE!jr;c"Rci9n9rrDL\l2U\^U]:>oJcDGDSH+6 at L&_/QJcC<$iW&]R_b9b(r;cdh
+s(MFKq.TeLrGUY*q.TM.rEB4sq,7)cs'#A,rDNMgmo'0]pJUfWqbmFooh50_rVun7rDrl+qec4T
+on2jrh4"5Fs()/6s((l.qka8'n$)c1ot0hqqlon9q69b9q69V5rNPt7s3^MOpW!6;pUg+<rR(MS
+mDeP at e_U1dp"f62rTO(VrU]^]JcCr6rrB,"J,~>
+[K$7,JcCZ.mn;ibotLI(rLEbjs.&b[nXT35q;(Ajs3pYprRUShrT!Y%qpk_lrQkGhs3@,5rrCCE
+q=FLIrS at .oqo8*:iNW"TfqnG3o;0p)qi:-6qi:'4muI.2s+BQrrL3V9jc94js#9n/rAXD%o8_/s
+]m0Qom:-)2mpbP]r;`Vmrr at WMU&Y,mU#5kMJcCH(rr at WMJcF^/q#J<*p](0lrCcbLlcA\@qsX(E
+q=4 at QoCMYIs7Q3]p\4LYqt^9grrE)TqrmeRrVreps0D\(s0BiIoDaC@[Jp-1fDbgAp\oaDPQ1X_
+X8d\~>
+[K$7,JcCZ.n%88WkO&/tqsFF7p[.)3rU]@#rRq/'s3pl!p"TH#q<._?p#lAGoB5l3l1=Z5a7K<2
+q=B1:p&BUBJc>]Ks0DV&rNbVcci9pBs0D+ml2U\^U]:>oJcDGDrrAbmrr at WML&_/QJcC<$iW&]R
+mEt%OoB>rKr;cffs/H$qq5OCcrN,t-jh(>gpU0t1s2=`Lqo&NFrO)U?qo%s>s2=ZJq98`PrrDNe
+rVuo]rVlceqrmq5p!NBNh7NQ\s&oAus&o)mqlp$fn"ouCopYLPqka+Kq5*tKq5*hGrMB1Is+C!5
+pQ#9MpR:c8rIb!9m>gRdeTh$Dom$(;rGD at 2rF5RqrDnLLPQ1X_X8d\~>
+[K$7,JcC`0mn<0omhYd#`tm\ks"*[rq'c,!odKbYpF,]Ok at 4=*qc:gJrrDk(o2blaoiD#as&QI!
+r;cjjrrDddp&BS9JP5`1r;c@\ci8nrM?!SUJcDGDSH+6 at L&_/QJcC<$kPtDZ[nHDos%EB*s(qLE
+s)\-WhdlUtpKd`$s%iGgqbR5qrE]A"qbQ`[rD3)aqa^Zas%iYmrrE(&q+LTcqu?UqqdTG>rHS!f
+o8_Lms02N6o<@tcs1 at a(rPnNBp&Filqo8B7qo8H9q8W<9o>^I8q8WB;ot0t<s3^SQmDeVBdG=b`
+pYGN6s/5hZq>U9_p\oaDfDkdL_uK`:X8d\~>
+[K$7,JcC`0mn<,jn\4t"s.&hhor%DOm?.F'j4`\Fqr at M%s3UYks3CMfs36o0rrCOIrU^'gq=FRK
+qq_.srPnlbqo8*:o<A1(s02N6rNQ0qp&EjEo:#KOd at 0lknXB34nXAj*q3q87l&Pe4pOh^jmt:Qt
+pOi@'ci:h+o53/iM?!SUJcDGDrrAbMrr at WML&_/QJcC<$kPtDZ[nHDos%DtNn&Xt at s3L`6naQ5A
+s75^Oq=OFSrV$-_q=sd]rVHNos82cYp\t'iWW)q'`W#Q1Jc;kPrNbbgs0CbcJcF@%r;ab8rrB,"
+J,~>
+[K$7,JcC`0n%7uOoBlG+iU-+'q=Eq*q:bkts4[/#s4mG5qrm_9rUT^Gp#tT1qrmqVan,N4q=BaJ
+rNcJ&s0DCup&BUBJc>ECrNbtmci8q&M?!SUJcDGDrrAbmrr at WML&_/QJcC<$kPtDZrPmsHjk]Ol
+p&G'`s/H$qq5OCcs/c7)hn/ccpU0t1s2=`Lqo&NFrO)U?qo&$@rP\BFqoo)Vs2=rRrrE)0oD\Xe
+rVl]cqrn"7p!NBNft79\s&nripTX[dn"ouCopYRRq5*tKpSIbIq5*nIqk`nEopY]:rMB1UpQ#9+
+pR:K0mt9#4r at I\foj[q:rGD at 2qdTLsqc8:JfDkdL_uK`:X8d\~>
+[K$7,JcC`0mn<0omhYd#`tm\ks"*[rq'c,!odKbYpF,]Ok at 4=*qc:gJrrDk(o2blaoiD#as&QI!
+r;cjjrrDddp&BS9JP5`1r;c@\ci8nrM?!SUJcDGDSH+6 at L&_/QJcC<$kPtDZ[nHDos%EB*s(qLE
+s)\-WhdlUtpKd`$s%iGgqbR5qrE]A"qbQ`[rD3)aqa^Zas%iYmrrE(&q+LTcqu?UqqdTG>rHS!f
+o8_Lms02N6o<@tcs1 at a(rPnNBp&Filqo8B7qo8H9q8W<9o>^I8q8WB;ot0t<s3^SQmDeVBdG=b`
+pYGN6s/5hZq>U9_p\oaDfDkdL_uK`:X8d\~>
+[K$7,JcC`0mn<,jn\4t"s.&hhor%DOm?.F'j4`\Fqr at M%s3UYks3CMfs36o0rrCOIrU^'gq=FRK
+qq_.srPnlbqo8*:o<A1(s02N6rNQ0qp&EjEo:#KOd at 0lknXB34nXAj*q3q87l&Pe4pOh^jmt:Qt
+pOi@'ci:h+o53/iM?!SUJcDGDrrAbMrr at WML&_/QJcC<$kPtDZ[nHDos%DtNn&Xt at s3L`6naQ5A
+s75^Oq=OFSrV$-_q=sd]rVHNos82cYp\t'iWW)q'`W#Q1Jc;kPrNbbgs0CbcJcF@%r;ab8rrB,"
+J,~>
+[K$7,JcC`0n%7uOoBlG+iU-+'q=Eq*q:bkts4[/#s4mG5qrm_9rUT^Gp#tT1qrmqVan,N4q=BaJ
+rNcJ&s0DCup&BUBJc>ECrNbtmci8q&M?!SUJcDGDrrAbmrr at WML&_/QJcC<$kPtDZrPmsHjk]Ol
+p&G'`s/H$qq5OCcs/c7)hn/ccpU0t1s2=`Lqo&NFrO)U?qo&$@rP\BFqoo)Vs2=rRrrE)0oD\Xe
+rVl]cqrn"7p!NBNft79\s&nripTX[dn"ouCopYRRq5*tKpSIbIq5*nIqk`nEopY]:rMB1UpQ#9+
+pR:K0mt9#4r at I\foj[q:rGD at 2qdTLsqc8:JfDkdL_uK`:X8d\~>
+[K$7,JcCl4m7ZITqZ-X3r;aePf/*.Lq`"6tpDj,[o53MspK#CFrrDk(nQ,T]q,X=brrDddp]#e;
+JP5T-rrDdddJnnnM?!SUJcDGDSH+6 at L&_/QJcC<$mJm%`Y=nQgs*49OqetA&qe5_0rEB.qqbm;e
+s'#G.qbm;enP]<]ohtZWs&/kms&/jss%i;\qu?UqqdTG>qfqddo8_FknZ_bal`g&ooDeQhrPnT9
+rPnN7qo8N;ou@$9ot1%>rNPt,pW!6;pUfh4o?mNKj2UKBqiUX/q=FWaq<7eVp[e4[JcD5>rrE*!
+rrB,"J,~>
+[K$7,JcCl4m7ZohotLC&s.'+prLEbjor%DOmud@!n(R`kj4!tes5<_"qpPMiqp5;ePQ(R^dJit5
+s60LSrTO(5qpG)Vn[n+ks&o)mp]'3Km at +!Md at 0`gopYQ6o:"p(rL3P7m>gdjm>g@^s#9b+s,PM,
+_g(Kafj]g<rr at WMU&Y,mU#5kMJcCH(rr at WMJcG-;qZ*fmp&G'jp[.Fjo?6sUqsX(Es7,dQnaleQ
+q=XLUq=jpaqt^'arrE)rs60F\s60FQqu;6Hli-MUJc;eNqm,\is0C\aJcD5>rrE*!rrB,"J,~>
+[K$7,JcCl4mCVQGrU'L5s6]d9j6cC+oCMM*o at illrT="?qrme;p[\:GoB>6+p\r;+rrDldM>mO\
+p\speJc:6"oD\cqp\rS?L&Qr/rr at WMU&Y,mU&Y,mJcCH(rr at WMJcG-;qZ-6-jjE2Gp#u)Ks/Psq
+rMob!hn/ccpU0t1rP\TLqo&NFs0_a?qo&$@rP\BFqoo)Vs2=rRrrE);p&=jgrVl]cqrmq5p!NBN
+f=URLpTWt[opYLPpSIhKpSIhKoqhPGqk`tGs/#CWq2YEMopYW8s/#IYm>gdjrL2c,m<JLZpNZLC
+rtbEIrDrZ%s%E5iJcD5>rrE*!rrB,"J,~>
+[K$7,JcCl4m7ZITqZ-X3r;aePf/*.Lq`"6tpDj,[o53MspK#CFrrDk(nQ,T]q,X=brrDddp]#e;
+JP5T-rrDdddJnnnM?!SUJcDGDSH+6 at L&_/QJcC<$mJm%`Y=nQgs*49OqetA&qe5_0rEB.qqbm;e
+s'#G.qbm;enP]<]ohtZWs&/kms&/jss%i;\qu?UqqdTG>qfqddo8_FknZ_bal`g&ooDeQhrPnT9
+rPnN7qo8N;ou@$9ot1%>rNPt,pW!6;pUfh4o?mNKj2UKBqiUX/q=FWaq<7eVp[e4[JcD5>rrE*!
+rrB,"J,~>
+[K$7,JcCl4m7ZohotLC&s.'+prLEbjor%DOmud@!n(R`kj4!tes5<_"qpPMiqp5;ePQ(R^dJit5
+s60LSrTO(5qpG)Vn[n+ks&o)mp]'3Km at +!Md at 0`gopYQ6o:"p(rL3P7m>gdjm>g@^s#9b+s,PM,
+_g(Kafj]g<rr at WMU&Y,mU#5kMJcCH(rr at WMJcG-;qZ*fmp&G'jp[.Fjo?6sUqsX(Es7,dQnaleQ
+q=XLUq=jpaqt^'arrE)rs60F\s60FQqu;6Hli-MUJc;eNqm,\is0C\aJcD5>rrE*!rrB,"J,~>
+[K$7,JcCl4mCVQGrU'L5s6]d9j6cC+oCMM*o at illrT="?qrme;p[\:GoB>6+p\r;+rrDldM>mO\
+p\speJc:6"oD\cqp\rS?L&Qr/rr at WMU&Y,mU&Y,mJcCH(rr at WMJcG-;qZ-6-jjE2Gp#u)Ks/Psq
+rMob!hn/ccpU0t1rP\TLqo&NFs0_a?qo&$@rP\BFqoo)Vs2=rRrrE);p&=jgrVl]cqrmq5p!NBN
+f=URLpTWt[opYLPpSIhKpSIhKoqhPGqk`tGs/#CWq2YEMopYW8s/#IYm>gdjrL2c,m<JLZpNZLC
+rtbEIrDrZ%s%E5iJcD5>rrE*!rrB,"J,~>
+[K$7,JcD#8lV$IXq#Il>h)"^PrAXBtpDj3Bo53MsnQ*hBrrDe&o2bZ[qc:C'rrD"Np&BS9JP5Z/
+qZ-Xhnc/Uhjo9m)rC`.Mr;_EKU&UY`JcCH(rr at WMJcGECq#I6aq>^>:qe5kFh.6P!oj.N"rD3;g
+qbR/oqbm;eo2>H]ohtTUrD3Fns&/Saqu?OorF5Y at qfr-nrGD.NpOh_!rD)sQo<@namBH8qp&F]h
+s2OZ7s2O`9rPnT9q8WB;o=Ot at q69V*q8WB;pUfh4q9elIh8]'Bs,m?;rK6j1q=F at Es8M]_qu20H
+ScA]is8W*!X8d\~>
+[K$7,JcD#8lV$]fqnDs*s.&\dor%DOnWE9pq:bSol-oOUrS[_&rQkGhs3geis3L_hNW/qXec,U?
+s8Mcas60LSrTO49s3^l&qpG)Vo=P$@l`g,[p&F-Ml^IjMd at 0ZepR:W4pR;,7l&PFhmuHjho8_j`
+q`"P-nc/Uhjo<;EiGI7WNW8qWJcDGDrrAbMrr at WML&_/QJcC<$p&FgfV+^Xaqu-EZlcA\@qp5*,
+q=+4MnacYMp%8:Wq=aRWq=sj_rVHNos8)]Xqt'^b[Jp-1\c2:%Jc;YJs0D\(rNaiMJcD;@rrE*!
+rrB,"J,~>
+[K$7,JcD#8lauEGrR:_rg[3nfs7>p:n(RZnqr[e=rTNq;p[\@UoB>6+nc$`'rrDfbU&P(tiVrNM
+Jc:6"p&=ios8MQgrrD0\Jc>WINW8qWJcDGDrrAbmrr at WML&_/QJcC<$p&Fgfl,Mi4kM>anq>^,f
+qlnngs/Pb"rOMmFqn`0JrOMgAqo&*Bqo&0Dq98fUrrE)8p\t'iqu6Qcqrmq5s3^f/oA0/gl+?n4
+o=OUjos!h[opYRRoqh\Ko;2JIoqhVIpSI\GrMB+SrJp]MpR:o<rMB7Wm>h!popX]so6C9ds*4Jn
+pNZLCpMKq2oj[f!JcD;@rrE*!rrB,"J,~>
+[K$7,JcD#8lV$IXq#Il>h)"^PrAXBtpDj3Bo53MsnQ*hBrrDe&o2bZ[qc:C'rrD"Np&BS9JP5Z/
+qZ-Xhnc/Uhjo9m)rC`.Mr;_EKU&UY`JcCH(rr at WMJcGECq#I6aq>^>:qe5kFh.6P!oj.N"rD3;g
+qbR/oqbm;eo2>H]ohtTUrD3Fns&/Saqu?OorF5Y at qfr-nrGD.NpOh_!rD)sQo<@namBH8qp&F]h
+s2OZ7s2O`9rPnT9q8WB;o=Ot at q69V*q8WB;pUfh4q9elIh8]'Bs,m?;rK6j1q=F at Es8M]_qu20H
+ScA]is8W*!X8d\~>
+[K$7,JcD#8lV$]fqnDs*s.&\dor%DOnWE9pq:bSol-oOUrS[_&rQkGhs3geis3L_hNW/qXec,U?
+s8Mcas60LSrTO49s3^l&qpG)Vo=P$@l`g,[p&F-Ml^IjMd at 0ZepR:W4pR;,7l&PFhmuHjho8_j`
+q`"P-nc/Uhjo<;EiGI7WNW8qWJcDGDrrAbMrr at WML&_/QJcC<$p&FgfV+^Xaqu-EZlcA\@qp5*,
+q=+4MnacYMp%8:Wq=aRWq=sj_rVHNos8)]Xqt'^b[Jp-1\c2:%Jc;YJs0D\(rNaiMJcD;@rrE*!
+rrB,"J,~>
+[K$7,JcD#8lauEGrR:_rg[3nfs7>p:n(RZnqr[e=rTNq;p[\@UoB>6+nc$`'rrDfbU&P(tiVrNM
+Jc:6"p&=ios8MQgrrD0\Jc>WINW8qWJcDGDrrAbmrr at WML&_/QJcC<$p&Fgfl,Mi4kM>anq>^,f
+qlnngs/Pb"rOMmFqn`0JrOMgAqo&*Bqo&0Dq98fUrrE)8p\t'iqu6Qcqrmq5s3^f/oA0/gl+?n4
+o=OUjos!h[opYRRoqh\Ko;2JIoqhVIpSI\GrMB+SrJp]MpR:o<rMB7Wm>h!popX]so6C9ds*4Jn
+pNZLCpMKq2oj[f!JcD;@rrE*!rrB,"J,~>
+[K$7,JcD/<k=b7ZpAhN8j"pEXruq=hrAXI!pDj!<pMJr"moJU\kuRaUrrDphrF5:tq+LZe^J"S,
+h+RG at JP1Peoh5;bs8W#toDegjli2N/pIj?BrrBD*r;_EKU&UY`JcCH(rr at WMJcGQGqZ**Ys8W+H
+q0;pKs()"Fh.6P!oj.N"rD3Aiq+prmrDNGeo2>H]ohtTUrD3Fns&/Ycqu?OoqdTSBrDrf)qec"N
+m=X5`pTXOkrE9#onZ_tgq7H7uos"J9jfn^'pTXJ5qlob*s2Of;ot11Bqloh,lc/D*f>d@:s,m'3
+s3^f:p#uG3p[e:GJcD/<rrB,"J,~>
+[K$7,JcD/<k=b?ds1\H0qjd>bo;D2MnWE-ln^d6Zq9T)_rQkH#rQkMjrQYAfs3:ShrQL,trrD$W
+s7?!arU^'grU^'QrU^'Qs7?3QrS at M$s5!Y$o>^U<s02N6l*0iWp&F?Sd at 0rmn!`X(qjQu6qjRD7
+l]1Lfo8`3joo at p^s#9uXr;cHhrrDBba*?9Sj'qa`h>dKTZiBt(JcDGDrrAb=rr at WML&_/QJcC<$
+q>^<lRnNe]p\k-TlcAV>qp5$*s7#XMoCDkOq=O at Qq=j^[q>'parrE)rs60 at Oqu;`VrNb>[oDaC@
+U&P(te,FpuRK*9eX8d\~>
+[K$7,JcD/<kI^3Iq:#ApfBqVfqt'R8n(RfrpZDM7rTF.CpZM;Aq=F at Ej7Da=kO[g7rrDrqrUZf`
+s0CJ[p&BUBJc>?As0D\)r;cHhrrDBbJc>ECh>dKTZiBt(JcDGDrrAbmrr at WML&_/QJcC<$q>^<l
+iPsp*leV$ns8W+sq5XIZs1A04h7N]eosOb/rP\ZNq8E6BrPA<Jo>1=BotgIJrP\^9s2"O1qu?Qm
+qt'jOrVl]cqrm_/mEsb%pSIbkrFGf0nYQ2gq3ppToqh\Kje_p9pSI\Gqk`tSs,QiMopYi>qka%U
+l]1G&f8fBGs"*nhs+C8Zokj_RpL=#:JcD/<rrB,"J,~>
+[K$7,JcD/<k=b7ZpAhN8j"pEXruq=hrAXI!pDj!<pMJr"moJU\kuRaUrrDphrF5:tq+LZe^J"S,
+h+RG at JP1Peoh5;bs8W#toDegjli2N/pIj?BrrBD*r;_EKU&UY`JcCH(rr at WMJcGQGqZ**Ys8W+H
+q0;pKs()"Fh.6P!oj.N"rD3Aiq+prmrDNGeo2>H]ohtTUrD3Fns&/Ycqu?OoqdTSBrDrf)qec"N
+m=X5`pTXOkrE9#onZ_tgq7H7uos"J9jfn^'pTXJ5qlob*s2Of;ot11Bqloh,lc/D*f>d@:s,m'3
+s3^f:p#uG3p[e:GJcD/<rrB,"J,~>
+[K$7,JcD/<k=b?ds1\H0qjd>bo;D2MnWE-ln^d6Zq9T)_rQkH#rQkMjrQYAfs3:ShrQL,trrD$W
+s7?!arU^'grU^'QrU^'Qs7?3QrS at M$s5!Y$o>^U<s02N6l*0iWp&F?Sd at 0rmn!`X(qjQu6qjRD7
+l]1Lfo8`3joo at p^s#9uXr;cHhrrDBba*?9Sj'qa`h>dKTZiBt(JcDGDrrAb=rr at WML&_/QJcC<$
+q>^<lRnNe]p\k-TlcAV>qp5$*s7#XMoCDkOq=O at Qq=j^[q>'parrE)rs60 at Oqu;`VrNb>[oDaC@
+U&P(te,FpuRK*9eX8d\~>
+[K$7,JcD/<kI^3Iq:#ApfBqVfqt'R8n(RfrpZDM7rTF.CpZM;Aq=F at Ej7Da=kO[g7rrDrqrUZf`
+s0CJ[p&BUBJc>?As0D\)r;cHhrrDBbJc>ECh>dKTZiBt(JcDGDrrAbmrr at WML&_/QJcC<$q>^<l
+iPsp*leV$ns8W+sq5XIZs1A04h7N]eosOb/rP\ZNq8E6BrPA<Jo>1=BotgIJrP\^9s2"O1qu?Qm
+qt'jOrVl]cqrm_/mEsb%pSIbkrFGf0nYQ2gq3ppToqh\Kje_p9pSI\Gqk`tSs,QiMopYi>qka%U
+l]1G&f8fBGs"*nhs+C8Zokj_RpL=#:JcD/<rrB,"J,~>
+[K$7,JcD;@j\,1\qZ*N0lSIuXruq>"pF,hWoj[f8j'q=Tm:-)gj];=QrrD^bo2bNWs&PU^rrDfn
+JP1PepIk8\r;bmXJP5N+h>dKTZiC%*JcDGDSH+6 at L&_/QJcFF'rrB%uqZ)gQs(M.Os&oAurGUG$
+oj.N"rD3Aiq+q#os%iSkq+pT[qbQl_q+(BZrrE()qb-hdqc<Seqc<T'qebqLl%@l^q69CcnZ_tg
+q7H7uos"Imf<G.lq69P(os",$s2Ol=ot0b6rNPb&dDkk8rK7!5qpGH8p#uA1q=FLIJcF!prrCIH
+rrB,"J,~>
+[K$7,JcD;@j\,Wfq8iNKrMT[cn$;P_opkQ7m=t@]p"'#hld,UQrS[Xuq9Af[L&V)Phu<TGq>U-[
+s60LSpZVS3q9efRq7GampSImmp]']Yc^OZinXAd(rL3&4s-i\7muHjhpQ"Kjq2YDuiIgn)r;bmX
+s)$#*cY`,[lW2jArrBD*rr at WMU&Y,mU!N`=JcCH(rr at WMg&M'PWW2hqP=trCp\k,ts8M]4n]UOM
+s6oXMrUKLMoCN"Sp\":SrV-9cq>'pas82frs82]bqu;6HkPk)QJc;;@rNauQJcF!prrCIHrrB,"
+J,~>
+[K$7,JcD;@jh(-KqpYN.cgBobp[e@:n(Rg'n`Kl!rTO"=q==4Mqrm)3li-;Chu<WUJc>9?s0DD!
+Jc:6"p\sper;bmXJc>3=h>dKTZiC%*JcDGDrrAbmrr at WML&_/QJcFF'rrB%uqZ,Tph9kcKkNMrE
+pT"7(qlnheosOb/rP\ZNq8E<Ds2=lPq8Dm at qo&0Dq98fUrrE),qu6Kmn,E4UqrmY-l-\D#q5*Vc
+nYQ2gq3ppToqh\mf;8A)q5*bQoqh>Ms,QoOopYE2rMAtOd>mmEr at Ihjqh+oXokjYPq-s5<JcF!p
+rrCIHrrB,"J,~>
+[K$7,JcD;@j\,1\qZ*N0lSIuXruq>"pF,hWoj[f8j'q=Tm:-)gj];=QrrD^bo2bNWs&PU^rrDfn
+JP1PepIk8\r;bmXJP5N+h>dKTZiC%*JcDGDSH+6 at L&_/QJcFF'rrB%uqZ)gQs(M.Os&oAurGUG$
+oj.N"rD3Aiq+q#os%iSkq+pT[qbQl_q+(BZrrE()qb-hdqc<Seqc<T'qebqLl%@l^q69CcnZ_tg
+q7H7uos"Imf<G.lq69P(os",$s2Ol=ot0b6rNPb&dDkk8rK7!5qpGH8p#uA1q=FLIJcF!prrCIH
+rrB,"J,~>
+[K$7,JcD;@j\,Wfq8iNKrMT[cn$;P_opkQ7m=t@]p"'#hld,UQrS[Xuq9Af[L&V)Phu<TGq>U-[
+s60LSpZVS3q9efRq7GampSImmp]']Yc^OZinXAd(rL3&4s-i\7muHjhpQ"Kjq2YDuiIgn)r;bmX
+s)$#*cY`,[lW2jArrBD*rr at WMU&Y,mU!N`=JcCH(rr at WMg&M'PWW2hqP=trCp\k,ts8M]4n]UOM
+s6oXMrUKLMoCN"Sp\":SrV-9cq>'pas82frs82]bqu;6HkPk)QJc;;@rNauQJcF!prrCIHrrB,"
+J,~>
+[K$7,JcD;@jh(-KqpYN.cgBobp[e@:n(Rg'n`Kl!rTO"=q==4Mqrm)3li-;Chu<WUJc>9?s0DD!
+Jc:6"p\sper;bmXJc>3=h>dKTZiC%*JcDGDrrAbmrr at WML&_/QJcFF'rrB%uqZ,Tph9kcKkNMrE
+pT"7(qlnheosOb/rP\ZNq8E<Ds2=lPq8Dm at qo&0Dq98fUrrE),qu6Kmn,E4UqrmY-l-\D#q5*Vc
+nYQ2gq3ppToqh\mf;8A)q5*bQoqh>Ms,QoOopYE2rMAtOd>mmEr at Ihjqh+oXokjYPq-s5<JcF!p
+rrCIHrrB,"J,~>
+[K$7,JcF'rrrCULj%K+^qZ*6(h'i4\pF,hWmpc<6j'q1Poj[_ij&Z1QrrDL\pK#7+r;b)8rrDfn
+JP1PerCcVZr;c6bJP5<%NW9"YJcDGDSH+6 at L&_/QJcFF'rrB>(q#HCIs(MFDs(M:Sqka=]gLU%a
+rEB"ms&/McrDNAcpJU`]pJUfWs&/kmrrE'srCd%foh50_qdTG>o6BSRrAX\-iL9_LmA9EYqka2%
+p&FWfs/#CmrMAV[rPnZ;ot0n$ot0n$pUg+<q697uc,TM6rK7'7q9em!qq_/@qrjgTrrB2$rrCOJ
+rrB,"J,~>
+[K$7,JcF'rrrCULj%K-\qksJ.nZqbao:5E7m=t(Uq:=`Ts31Gsqoo#`s2t;`s2T]irrCsUq=FRa
+p%/"Cs5!_=rS@@us2P)drPnkas)7qLrPn`Hj089SrrDfno;0d%ooA^6l&Pdrl&PFho8`-hq2XQh
+s,QhukC`7'r;c6bq/+Z,a)1W]iDts<rr at WMU&Y,mU!N`=JcCH(rr at WMg&M'PZ2aV"ND'09qu-?i
+s2aBHpWrg,p[J.OnacMIp%8"Pq=j^[q>(!crrE)rrTO.Y^]+2;X8_elJc;):rNb&SU]:>oXoJD$
+e,TFJX8d\~>
+[K$7,JcF'rrrCULj1G'MqpY*"fBqhlnaleBrT*G/p#c5:pZMACn+6SCj7DI5p%-l9rrB%trNa]I
+rrDfnJc:6"rVl9cr;c6bJc>!7NW9"YJcDGDrrAbmrr at WML&_/QJcFF'rrB>(q#K*fkL&DIlfeAI
+s/c7"ql9Otft7!drOMaBs2"BHrPA6HpVHUBpVH[Ls2"`RrrE)8rVl]on,E4UqrmY-ld>ZcrR'T9
+rMAnco;2>gqjR3Xo;2JkoqhVkje_p9q5*bQoqh>MoqhDOooAjEm@):[pNZWfrHS-jokjSNqdTG>
+U]:>oXoJD$e,TFJX8d\~>
+[K$7,JcF'rrrCULj%K+^qZ*6(h'i4\pF,hWmpc<6j'q1Poj[_ij&Z1QrrDL\pK#7+r;b)8rrDfn
+JP1PerCcVZr;c6bJP5<%NW9"YJcDGDSH+6 at L&_/QJcFF'rrB>(q#HCIs(MFDs(M:Sqka=]gLU%a
+rEB"ms&/McrDNAcpJU`]pJUfWs&/kmrrE'srCd%foh50_qdTG>o6BSRrAX\-iL9_LmA9EYqka2%
+p&FWfs/#CmrMAV[rPnZ;ot0n$ot0n$pUg+<q697uc,TM6rK7'7q9em!qq_/@qrjgTrrB2$rrCOJ
+rrB,"J,~>
+[K$7,JcF'rrrCULj%K-\qksJ.nZqbao:5E7m=t(Uq:=`Ts31Gsqoo#`s2t;`s2T]irrCsUq=FRa
+p%/"Cs5!_=rS@@us2P)drPnkas)7qLrPn`Hj089SrrDfno;0d%ooA^6l&Pdrl&PFho8`-hq2XQh
+s,QhukC`7'r;c6bq/+Z,a)1W]iDts<rr at WMU&Y,mU!N`=JcCH(rr at WMg&M'PZ2aV"ND'09qu-?i
+s2aBHpWrg,p[J.OnacMIp%8"Pq=j^[q>(!crrE)rrTO.Y^]+2;X8_elJc;):rNb&SU]:>oXoJD$
+e,TFJX8d\~>
+[K$7,JcF'rrrCULj1G'MqpY*"fBqhlnaleBrT*G/p#c5:pZMACn+6SCj7DI5p%-l9rrB%trNa]I
+rrDfnJc:6"rVl9cr;c6bJc>!7NW9"YJcDGDrrAbmrr at WML&_/QJcFF'rrB>(q#K*fkL&DIlfeAI
+s/c7"ql9Otft7!drOMaBs2"BHrPA6HpVHUBpVH[Ls2"`RrrE)8rVl]on,E4UqrmY-ld>ZcrR'T9
+rMAnco;2>gqjR3Xo;2JkoqhVkje_p9q5*bQoqh>MoqhDOooAjEm@):[pNZWfrHS-jokjSNqdTG>
+U]:>oXoJD$e,TFJX8d\~>
+[K$7,JcF'rrrCgRhb3n`q#LF1r;`H*i at +R^q'c%Ym:-)rj^R7NqdT(gj];CSrrD:VrDnhLp&BS9
+K1kJ/qZ-<hJP6"Ck=^m9rr at WMU&UY`JcCH(rr at WMMuWYSLJ.ATs-ih]qjQDQpKd`$q+q#gohYNa
+pJ:N]pJ:N]pIG6ZrrE'ss%iOlo1Ss]qdTG>o6B/Fj-p"PmA9iOpTXCgs1 at n&os"=ipTXUmos"Im
+o<A87os"8(rMB1kq7H['os"2&pVus3mCUEYrS@:3p!NU!p"fH-V>pPqJcG]KrrB,"J,~>
+[K$7,JcF'rrrCgRhb3p^q5=8,rMT=onYbuKs+^3/mtUj\m<\eCkKj%LqqV.os3:G`s3(G_Jc>WI
+rrDHcrU]d_p[e at _qt'jOs7?!Ks5!_=rS@@upVug:l`fiSp&FiakF2F2l'h4(pR:?,rIaErnUpRr
+kC`epiIgfJl\"I%qZ-<hokiH._eo?]oiD)#k>mZDrr at WMU&Y,mU!N`=JcCH(rr at WMMuWYSLJ.C/
+oD[prq9Sm*oC;GCrU]jWp%A(Rq=sd]qtg<mrVQKlJc=d1oDaC at RK!#fg&@iJrr at WMrVultX8d\~>
+[K$7,JcF'rrrCgRhn/jOq:#B.rR:)siU,gtn+6M=n)a<+qrmk=q=<qEs8M-Oj8SrIe,K at IJc>-;
+p&BUBKDt-8qZ-<hJc>\TkPgPBrr at WMU&Y,mU&Y,mJcCH(rr at WMMuWYSq7G7ukL&DIn`^#EpSn2)
+qlnbcpU0t1q8E<Lou-gFpVcgBpVcgBpWWZUrrE)8s2=g7mJd"SqrmY-hpLJrs/#+es1A$%pTX[d
+oDeK[qlogkrNPsks02*ks,QcKq3q8doqhJQs020mpR:i:pSI8Ga,^+Cq(22kq/,eLq/)u.rr at WM
+rVultX8d\~>
+[K$7,JcF'rrrCgRhb3n`q#LF1r;`H*i at +R^q'c%Ym:-)rj^R7NqdT(gj];CSrrD:VrDnhLp&BS9
+K1kJ/qZ-<hJP6"Ck=^m9rr at WMU&UY`JcCH(rr at WMMuWYSLJ.ATs-ih]qjQDQpKd`$q+q#gohYNa
+pJ:N]pJ:N]pIG6ZrrE'ss%iOlo1Ss]qdTG>o6B/Fj-p"PmA9iOpTXCgs1 at n&os"=ipTXUmos"Im
+o<A87os"8(rMB1kq7H['os"2&pVus3mCUEYrS@:3p!NU!p"fH-V>pPqJcG]KrrB,"J,~>
+[K$7,JcF'rrrCgRhb3p^q5=8,rMT=onYbuKs+^3/mtUj\m<\eCkKj%LqqV.os3:G`s3(G_Jc>WI
+rrDHcrU]d_p[e at _qt'jOs7?!Ks5!_=rS@@upVug:l`fiSp&FiakF2F2l'h4(pR:?,rIaErnUpRr
+kC`epiIgfJl\"I%qZ-<hokiH._eo?]oiD)#k>mZDrr at WMU&Y,mU!N`=JcCH(rr at WMMuWYSLJ.C/
+oD[prq9Sm*oC;GCrU]jWp%A(Rq=sd]qtg<mrVQKlJc=d1oDaC at RK!#fg&@iJrr at WMrVultX8d\~>
+[K$7,JcF'rrrCgRhn/jOq:#B.rR:)siU,gtn+6M=n)a<+qrmk=q=<qEs8M-Oj8SrIe,K at IJc>-;
+p&BUBKDt-8qZ-<hJc>\TkPgPBrr at WMU&Y,mU&Y,mJcCH(rr at WMMuWYSq7G7ukL&DIn`^#EpSn2)
+qlnbcpU0t1q8E<Lou-gFpVcgBpVcgBpWWZUrrE)8s2=g7mJd"SqrmY-hpLJrs/#+es1A$%pTX[d
+oDeK[qlogkrNPsks02*ks,QcKq3q8doqhJQs020mpR:i:pSI8Ga,^+Cq(22kq/,eLq/)u.rr at WM
+rVultX8d\~>
+[K$7,JcDeNh+RVFNu$h*rAXO#q&J^0qc<#lh,`o9j];CSrrBN$rrBT&p&BS9M+cn/rrE*!r;clt
+JP5l5rrD.Re,TFJ_>jN8JcDGDSH+6 at L&_/QJcD#8rrE*!qZ)1?pLsS;s)7k4q3q=Yj(/0mq-Er&
+q+q#go2#BapJ:N]pJ:N]pIG6ZrrE'ss'GU&oh50_qdTG>o6C"^s#9+njdQ40mA9iOs02N6qlogk
+s1 at t(rL3Jbqka+mq5*nkqk`J[qn)a%os">*qka%kot11BnZ_Jo_oDN.s,m>9o?mO#p"fSorTJh4
+U&Y,mX8d\~>
+[K$7,JcDeNh+RXCotL=/mAKQGqhFp/rHe-kqeu(Pojm[?o?@0gs31G`qo\lXJc>KErrDBaqt'X_
+p[eFaqt'dMs7?3Qs5!_=qq_:7s5!Y$qo8ZJrPnH at n$),Sp&G&gkF24,n!`X(rL2o0q1J3tm=Y4p
+a+No,mt9[#rrE*!r;cltm;:m.`GP9WoiD)#j]9k1rrBn8rr at WMU&Y,mU!N`=JcCH(rr at WMQ2gja
+s8VrrJP5b)rQ+[2s0_C?n^$t!naZSKp%.kLp\+X]qtU!_q>1-grrE)rs8DipbPqOIZ2Xd/n,E"[
+Jc:`0rNb2WJcDGDrrB,"J,~>
+[K$7,JcDeNs01CmqpXBcg[4P#lgt/Nn)a<+rTO(?q=<kCqu5pQX8`,!\,QE5\c2:%Jc:N*j8],Z
+s8W#ts8RZLqu6W$jo3a/rrBn8rr at WMU&Y,mU&Y,mJcCH(rr at WMQ2gjas8Vrrn%78mjjE2GoB>qJ
+s1&*1rNQ+0s.n\es2OlBrOMaBs2"<Fs2"HJpVHUBpVHUJs2=p;s2"`Rqu?-aqt'^KoA0/gs+]^a
+jh(Q4mBHW&s/#`uqka%ks-iW\rO_g#qlommq69[kqlo7[qjRDdoqhPSqlogkopYi>nYP]C_iFP;
+s"+1/o7R!Yom$FfrG@,cU&Y,mX8d\~>
+[K$7,JcDeNh+RVFNu$h*rAXO#q&J^0qc<#lh,`o9j];CSrrBN$rrBT&p&BS9M+cn/rrE*!r;clt
+JP5l5rrD.Re,TFJ_>jN8JcDGDSH+6 at L&_/QJcD#8rrE*!qZ)1?pLsS;s)7k4q3q=Yj(/0mq-Er&
+q+q#go2#BapJ:N]pJ:N]pIG6ZrrE'ss'GU&oh50_qdTG>o6C"^s#9+njdQ40mA9iOs02N6qlogk
+s1 at t(rL3Jbqka+mq5*nkqk`J[qn)a%os">*qka%kot11BnZ_Jo_oDN.s,m>9o?mO#p"fSorTJh4
+U&Y,mX8d\~>
+[K$7,JcDeNh+RXCotL=/mAKQGqhFp/rHe-kqeu(Pojm[?o?@0gs31G`qo\lXJc>KErrDBaqt'X_
+p[eFaqt'dMs7?3Qs5!_=qq_:7s5!Y$qo8ZJrPnH at n$),Sp&G&gkF24,n!`X(rL2o0q1J3tm=Y4p
+a+No,mt9[#rrE*!r;cltm;:m.`GP9WoiD)#j]9k1rrBn8rr at WMU&Y,mU!N`=JcCH(rr at WMQ2gja
+s8VrrJP5b)rQ+[2s0_C?n^$t!naZSKp%.kLp\+X]qtU!_q>1-grrE)rs8DipbPqOIZ2Xd/n,E"[
+Jc:`0rNb2WJcDGDrrB,"J,~>
+[K$7,JcDeNs01CmqpXBcg[4P#lgt/Nn)a<+rTO(?q=<kCqu5pQX8`,!\,QE5\c2:%Jc:N*j8],Z
+s8W#ts8RZLqu6W$jo3a/rrBn8rr at WMU&Y,mU&Y,mJcCH(rr at WMQ2gjas8Vrrn%78mjjE2GoB>qJ
+s1&*1rNQ+0s.n\es2OlBrOMaBs2"<Fs2"HJpVHUBpVHUJs2=p;s2"`Rqu?-aqt'^KoA0/gs+]^a
+jh(Q4mBHW&s/#`uqka%ks-iW\rO_g#qlommq69[kqlo7[qjRDdoqhPSqlogkopYi>nYP]C_iFP;
+s"+1/o7R!Yom$FfrG@,cU&Y,mX8d\~>
+[K$7,JcDqRhb3\DN>Cb,q`"C#q&K9 at r>,'8pK$ZjhcAu7j&Z0[\P)r&[nHJqrr at UCMbDh)s%E:j
+JP4lndJs4H_uK`:JcDGDSH+6 at L&_/QJcD/<q#Gt=qb-`urFGkFs/#IYs%_Zds&o/'rEB"ms&/Yg
+s$Q<Pq,6l]pJU`Us%iXps'l"7rVuO`qc<T'q/,eLpOiK)iIgB`rJp?CrL3bjs()/6oqh9[rL3Jb
+qka+mq5*nkqk`tis/#Cmqn)a%os"D,q5*bgpUgIFn$)2k`Q%k's1A6cs3^k$n^6saqpBupU&Y,m
+X8d\~>
+[K$7,JcDqRhb3nJqks>*jeq^?pP/X/q0Mjkol'YPmpu=An'(gerRq.krQ>)Zs2=g6rN_"Rs8N#u
+li-YMrVl3UpZVY5s60L=s,m?/rS at G"qo8THs2OZBn$)2Up](6nkF2.*nXAd(s-i,2pOi'tl%B"r
+jb*GTkC`/Ho7Pfts)%]Xmqq<6a)1-OfiHN#rrBt:rr at WMU&Y,mU!N`=JcCH(rr at WMRK*'_JP5l5
+q<e"!p&=usq9/0Os3gN.p[S.Oq=F at Qs7Q-[nb<(Zq>1'errE#rrVt(?s0Ad+s0D7qoDaC at Qi?rh
+q>UE"h>W!*U&Y,mX8d\~>
+[K$7,JcDqRpTWnorGVS^hs&n_kOA*7rV-?Qp#Yr1qrmq?q==FSrMT>[p\sROWW)nt\c2W7\,Q.%
+rr at WLMuMK2s8Mu&Jc=R+dJs4H_uK`:JcDGDrrAbmrr at WML&_/QJcD/<q#KNggW&:$l.tsps/>go
+rODg-s0270s)7#2s2OlBrOMaBs2"NLs3L5Rq8)aBpVHUJs2=p;s2"`RrVu?cqt'XIp"fAis+]L[
+l+?o6n$)c&s/#`us/#CmoDed$pSIbkq5*nkq5*tmoqh\moqhPSqloairL3PdoqhDOs,QQEm@)"S
+rBpURrHS?ps#9J#o6C.bJcDGDrrB,"J,~>
+[K$7,JcDqRhb3\DN>Cb,q`"C#q&K9 at r>,'8pK$ZjhcAu7j&Z0[\P)r&[nHJqrr at UCMbDh)s%E:j
+JP4lndJs4H_uK`:JcDGDSH+6 at L&_/QJcD/<q#Gt=qb-`urFGkFs/#IYs%_Zds&o/'rEB"ms&/Yg
+s$Q<Pq,6l]pJU`Us%iXps'l"7rVuO`qc<T'q/,eLpOiK)iIgB`rJp?CrL3bjs()/6oqh9[rL3Jb
+qka+mq5*nkqk`tis/#Cmqn)a%os"D,q5*bgpUgIFn$)2k`Q%k's1A6cs3^k$n^6saqpBupU&Y,m
+X8d\~>
+[K$7,JcDqRhb3nJqks>*jeq^?pP/X/q0Mjkol'YPmpu=An'(gerRq.krQ>)Zs2=g6rN_"Rs8N#u
+li-YMrVl3UpZVY5s60L=s,m?/rS at G"qo8THs2OZBn$)2Up](6nkF2.*nXAd(s-i,2pOi'tl%B"r
+jb*GTkC`/Ho7Pfts)%]Xmqq<6a)1-OfiHN#rrBt:rr at WMU&Y,mU!N`=JcCH(rr at WMRK*'_JP5l5
+q<e"!p&=usq9/0Os3gN.p[S.Oq=F at Qs7Q-[nb<(Zq>1'errE#rrVt(?s0Ad+s0D7qoDaC at Qi?rh
+q>UE"h>W!*U&Y,mX8d\~>
+[K$7,JcDqRpTWnorGVS^hs&n_kOA*7rV-?Qp#Yr1qrmq?q==FSrMT>[p\sROWW)nt\c2W7\,Q.%
+rr at WLMuMK2s8Mu&Jc=R+dJs4H_uK`:JcDGDrrAbmrr at WML&_/QJcD/<q#KNggW&:$l.tsps/>go
+rODg-s0270s)7#2s2OlBrOMaBs2"NLs3L5Rq8)aBpVHUJs2=p;s2"`RrVu?cqt'XIp"fAis+]L[
+l+?o6n$)c&s/#`us/#CmoDed$pSIbkq5*nkq5*tmoqh\moqhPSqloairL3PdoqhDOs,QQEm@)"S
+rBpURrHS?ps#9J#o6C.bJcDGDrrB,"J,~>
+[K$7,JcE(ViCj%Js%@t[m3qolr@%C[l!j6bo4$TXj%JK7rr at UClV%!Prr at UCO\=I/pIkGbJP4rp
+PQ1X_JcDGDSH+6 at L&_/QJcDABqZ)1?oh5=%q.T_;qeuLFo:#DarE8r,qcWf%rEB"ms%E/`s$Q<P
+q,6l]pJU`Us%iXps'G_7s8V7Tqc<N%qfpSBl^I^2o;28OrNPskp&FiVqlogkrNQ$mqlommpTXUm
+o<A8,pSIPepSIPeq7H['mBGui_8c;_s3^e"o?mNVpYG_oJcE^hr;c$\rrE*!rrB,"J,~>
+[K$7,JcE(ViCj%Js%D1GnXT9,s,m&%rJ'i\rHdd?rE8[7rQ5#krQ5)^qoA`TJc>3=rrD<_p%/4_
+p%/4IrU]pMs5!_=pYGSkqo8$8n$)2Up](6nm@*R*pR:9*s+BWto7Q^rbCfV8l\"GHpOh6#pMKjP
+nSRf at a_g'Ih,aDGPQ1X_JcDGDrrAb=rr at WML&_/QJcDABqZ)1?oh5>^q<djroD[jtnaQSKoCDSH
+q=Xd]mJ$GOqt^6lrVccrqrmqKJc>-;p&BUBL]77Xhu83,`W,l:kPtP^s8W*!X8d\~>
+[K$7,JcE(Vn$)DqqeuMHg$.8Yl1"$1s7c9LpZDG<rTEqGl1=NGoCJgXrr at WLli-YYrr@WLOoF,8
+p\t,sJc=X-PQ1X_JcDGDrrAbmrr at WML&_/QJcDABqZ,Teh8\9un(mHrs.K7fs/Gt,qlKh-l+?o6
+q7HODqmHC5q8E<Rq8E<Zn\k7>ou-U at pWWZUrrE);s2"a8iVrZEqq]`Klb!&6o<A&&rMB1kp&Fj"
+qka%krMB7mqka+mpSIhmo;2JUpTX=epTX=eq3q>fmA93=_2e>[s+C8/o7R"%pNZRfJcE^hr;c$\
+rrE*!rrB,"J,~>
+[K$7,JcE(ViCj%Js%@t[m3qolr@%C[l!j6bo4$TXj%JK7rr at UClV%!Prr at UCO\=I/pIkGbJP4rp
+PQ1X_JcDGDSH+6 at L&_/QJcDABqZ)1?oh5=%q.T_;qeuLFo:#DarE8r,qcWf%rEB"ms%E/`s$Q<P
+q,6l]pJU`Us%iXps'G_7s8V7Tqc<N%qfpSBl^I^2o;28OrNPskp&FiVqlogkrNQ$mqlommpTXUm
+o<A8,pSIPepSIPeq7H['mBGui_8c;_s3^e"o?mNVpYG_oJcE^hr;c$\rrE*!rrB,"J,~>
+[K$7,JcE(ViCj%Js%D1GnXT9,s,m&%rJ'i\rHdd?rE8[7rQ5#krQ5)^qoA`TJc>3=rrD<_p%/4_
+p%/4IrU]pMs5!_=pYGSkqo8$8n$)2Up](6nm@*R*pR:9*s+BWto7Q^rbCfV8l\"GHpOh6#pMKjP
+nSRf at a_g'Ih,aDGPQ1X_JcDGDrrAb=rr at WML&_/QJcDABqZ)1?oh5>^q<djroD[jtnaQSKoCDSH
+q=Xd]mJ$GOqt^6lrVccrqrmqKJc>-;p&BUBL]77Xhu83,`W,l:kPtP^s8W*!X8d\~>
+[K$7,JcE(Vn$)DqqeuMHg$.8Yl1"$1s7c9LpZDG<rTEqGl1=NGoCJgXrr at WLli-YYrr@WLOoF,8
+p\t,sJc=X-PQ1X_JcDGDrrAbmrr at WML&_/QJcDABqZ,Teh8\9un(mHrs.K7fs/Gt,qlKh-l+?o6
+q7HODqmHC5q8E<Rq8E<Zn\k7>ou-U at pWWZUrrE);s2"a8iVrZEqq]`Klb!&6o<A&&rMB1kp&Fj"
+qka%krMB7mqka+mpSIhmo;2JUpTX=epTX=eq3q>fmA93=_2e>[s+C8/o7R"%pNZRfJcE^hr;c$\
+rrE*!rrB,"J,~>
+[K$7,JcE4Zj\,CLq+H8So-jPrs"*g_l!j*^ojZl\hb3'3rrC/6r;`Zep&BS9QV6*5rrDR^r;_CA
+j\(m=r;_EKU&UY`JcCH(rr at WMVuQPmJP5H)s(MFDqe5q=qeu at Bo:#PerE8r,qcWf%rEB"ms%E/`
+s$Q6Nqbm)_pJU`Us&8pts'G_;k=b\QpL=(:q/+`9n!a'4o;28Os020moDeWTqlogkrNPskrNQ$m
+qlosoo<@napTX[doqhDeqn)a%mBH&k^W-#[qhFdkpW!0fqpBupWW2tus8W*!X8d\~>
+[K$7,JcE4Zj\,CLq+KbGnXT3*o6UFknSd`(o3(t7q8rNerPnfVs24lQJc>'9rrD<_oCN"Gp%/.G
+s/5mes60F;s60F;s3^f$pX/rZo=P%,qn)C&o;28Op&FWPm>h"2l&PXnm>gXfq2XWjs*3^Zom#qX
+j`p`Vg].9snSS4JokjGJs'j5ifja2HnOo/Ir;_EKU&Y,mU!N`=JcCH(rr at WMVuQPmJP5H)p[.Ll
+oD\(%s3gT0q=4 at Qp%/4Un+HAJq=sd]s8DrtrVcWWqt&kIrN_RboDaC at L&UtTiVnE.WW2tus8W*!
+X8d\~>
+[K$7,JcE4ZkHOuuq/?)@e`koWmI9N7q=jjLrT=.ArT=(Bs7>pSl1=BCp%+sXrrC1?rN`:!p&BUB
+Qi>b>s0D1orN_"Rjo1PFr;_EKU&Y,mU&Y,mJcCH(rr at WMVuQPmh7M@[jjE8In`^"Os/c*rrODa+
+qmc%*rPnZFqo8N at rOMaBs2XrRs3L/Pqn_sDpVHUJs3L]Fs2=rMiVrTCrMTJTf?s'!q8W$1q7H['
+os"&fq7HO#pTXUmos"CkpTXOkqlo[gos"1es1 at s.pSIbUqloIan!_"OpR:t<on3"!rHS3lJcD_L
+rrE*!rrB,"J,~>
+[K$7,JcE4Zj\,CLq+H8So-jPrs"*g_l!j*^ojZl\hb3'3rrC/6r;`Zep&BS9QV6*5rrDR^r;_CA
+j\(m=r;_EKU&UY`JcCH(rr at WMVuQPmJP5H)s(MFDqe5q=qeu at Bo:#PerE8r,qcWf%rEB"ms%E/`
+s$Q6Nqbm)_pJU`Us&8pts'G_;k=b\QpL=(:q/+`9n!a'4o;28Os020moDeWTqlogkrNPskrNQ$m
+qlosoo<@napTX[doqhDeqn)a%mBH&k^W-#[qhFdkpW!0fqpBupWW2tus8W*!X8d\~>
+[K$7,JcE4Zj\,CLq+KbGnXT3*o6UFknSd`(o3(t7q8rNerPnfVs24lQJc>'9rrD<_oCN"Gp%/.G
+s/5mes60F;s60F;s3^f$pX/rZo=P%,qn)C&o;28Op&FWPm>h"2l&PXnm>gXfq2XWjs*3^Zom#qX
+j`p`Vg].9snSS4JokjGJs'j5ifja2HnOo/Ir;_EKU&Y,mU!N`=JcCH(rr at WMVuQPmJP5H)p[.Ll
+oD\(%s3gT0q=4 at Qp%/4Un+HAJq=sd]s8DrtrVcWWqt&kIrN_RboDaC at L&UtTiVnE.WW2tus8W*!
+X8d\~>
+[K$7,JcE4ZkHOuuq/?)@e`koWmI9N7q=jjLrT=.ArT=(Bs7>pSl1=BCp%+sXrrC1?rN`:!p&BUB
+Qi>b>s0D1orN_"Rjo1PFr;_EKU&Y,mU&Y,mJcCH(rr at WMVuQPmh7M@[jjE8In`^"Os/c*rrODa+
+qmc%*rPnZFqo8N at rOMaBs2XrRs3L/Pqn_sDpVHUJs3L]Fs2=rMiVrTCrMTJTf?s'!q8W$1q7H['
+os"&fq7HO#pTXUmos"CkpTXOkqlo[gos"1es1 at s.pSIbUqloIan!_"OpR:t<on3"!rHS3lJcD_L
+rrE*!rrB,"J,~>
+[K$7,JcE@^k=b[PrCd(hqb)JUrtb8UrAXa)q&JR,kuR[jqb-$OgIpd3s%E at lJP50!p]#e;RnMN9
+s%E at lnOrf\s%E:jJP50!a8c/>e,T at HJcDGDSH+6@L&_/QJcDeNqZ)1?ktD%is(2.BqdfSBpLNla
+s()(2q.0A*qd'5*pJ:f^q+q#Xmn`m[nPAmWqa^Zes&8pts%iYrktChQo4%6,h1P6dpQ#!EopYQM
+p&F]Rs01U]s020mqlommpTX[doqhDes-iVWos"J.q5*J_n%8%bl`g?-rHn"Qot16Bs1A5aq9efR
+rO`$UJcDYJrrB,"J,~>
+[K$7,JcE@^k=b[PrCd(hqb-1Om@<d&o6TqFm:>Tes%`7/s4RG&qo8ZQs20Eel2L_SrrD<_naleE
+p[e(ArS at M;rS at M$s5!S"s2P)dqo86>qlommrNPggopYXTpR:9*s-i,2pOi!rm=Y at tkC`STm=XqR
+o7Q"Hg].:jrupoLr?;2Xr?:oPs*4?KeSWWAm8iUIa8c/>e,T at HJcDGDrrAb-rr@WML&_/QJcDeN
+qZ)1?ktCj>lcA\sp!<H^p[IkGs75jSqt0FOq=aj_q=sd]rVc`rrVQQWqt#C<mJceYJc;GDrNbJ_
+s0D\(rNbJ_JcDYJrrB,"J,~>
+[K$7,JcE@^kHOtsrGVYHrGVSFe`kiUlgX63rV-3Nqr[k at s6'4KkO[s;qt$HZrr at WLkPk5UJc;/<
+g].<Qs0D1orNcJ&rN_"RkPiO%rrCOJr;_EKU&Y,mU&Y,mJcCH(rr at WMX8i%se[sGQjjE8Ip#uFS
+s/c0uqmcO)s1%=*rPnZFqo8N at s1.mBs2XrRs3L/PrPA$BpVH[Ls3L]Fs2=rMiVrH?n`\fVn[nP8
+pTX>&os",hot17#jfnc]os"=iq69Uis1 at s.pSIo%os"+cs-ibfmA99?n$),SrJphDmuI(0s%`T_
+rAXP)o8`d<rI]\$VuQbsX8d\~>
+[K$7,JcE@^k=b[PrCd(hqb)JUrtb8UrAXa)q&JR,kuR[jqb-$OgIpd3s%E at lJP50!p]#e;RnMN9
+s%E at lnOrf\s%E:jJP50!a8c/>e,T at HJcDGDSH+6@L&_/QJcDeNqZ)1?ktD%is(2.BqdfSBpLNla
+s()(2q.0A*qd'5*pJ:f^q+q#Xmn`m[nPAmWqa^Zes&8pts%iYrktChQo4%6,h1P6dpQ#!EopYQM
+p&F]Rs01U]s020mqlommpTX[doqhDes-iVWos"J.q5*J_n%8%bl`g?-rHn"Qot16Bs1A5aq9efR
+rO`$UJcDYJrrB,"J,~>
+[K$7,JcE@^k=b[PrCd(hqb-1Om@<d&o6TqFm:>Tes%`7/s4RG&qo8ZQs20Eel2L_SrrD<_naleE
+p[e(ArS at M;rS at M$s5!S"s2P)dqo86>qlommrNPggopYXTpR:9*s-i,2pOi!rm=Y at tkC`STm=XqR
+o7Q"Hg].:jrupoLr?;2Xr?:oPs*4?KeSWWAm8iUIa8c/>e,T at HJcDGDrrAb-rr@WML&_/QJcDeN
+qZ)1?ktCj>lcA\sp!<H^p[IkGs75jSqt0FOq=aj_q=sd]rVc`rrVQQWqt#C<mJceYJc;GDrNbJ_
+s0D\(rNbJ_JcDYJrrB,"J,~>
+[K$7,JcE@^kHOtsrGVYHrGVSFe`kiUlgX63rV-3Nqr[k at s6'4KkO[s;qt$HZrr at WLkPk5UJc;/<
+g].<Qs0D1orNcJ&rN_"RkPiO%rrCOJr;_EKU&Y,mU&Y,mJcCH(rr at WMX8i%se[sGQjjE8Ip#uFS
+s/c0uqmcO)s1%=*rPnZFqo8N at s1.mBs2XrRs3L/PrPA$BpVH[Ls3L]Fs2=rMiVrH?n`\fVn[nP8
+pTX>&os",hot17#jfnc]os"=iq69Uis1 at s.pSIo%os"+cs-ibfmA99?n$),SrJphDmuI(0s%`T_
+rAXP)o8`d<rI]\$VuQbsX8d\~>
+[K$7,JcERdk=b[Pmn83Iq\K&WrAXO#ruC32o2betpK%6%q+KsQf1Z!Am7[HZfh;8DP=tTKJP2V.
+h>cA*r;_CAlV#4srrCOJrr at WMU&UY`JcCH(rr at WMg&M'Pg].-NJP5#rs(MFDrFkA)pR;+Ws$Qfh
+q.0;(s'>S,pJ:f^qbR/Xmn`m[nPAmWrC?`crrDplm7[=WrsSF-lYYI1pR:]6q5*hSs,QiMs8W#t
+q>^,Vs01U]s020mrNQ$mpTXUboqhPiqjR8UpTX[dpSI8]ot0C`j08!ln%8U<s()#So>^U<JcD_L
+rrB,"J,~>
+[K$7,JcERdk=b[Pmn<>Ojdbjqo6TqFmptliohPJ-s2P#frPnfQs1m=erN`3tmIU>XoCMYSoCMpN
+s60:MpZVM1s3^f$pX0#\s3^_`ot1%(je_^?p&FuZac?%Hoo@:LpNZ.Zms+SZhg!uWhei<8rGD4:
+gMP&Am8iUI`W,r<e,TFJJcDGDrrAb-rr at WML&_/QJcFF'rrCgRqZ)1?j%K48kK*DsrNcILn^@+"
+s7,^On+?MMp\+ at Us7lKequ-Npqtp9^mJd-kKDtoNr;cZnJc:6"q>U>ujo0i2WW2tuX8d\~>
+[K$7,JcERdkHOnqs)7A<fBM&Wl1"*3p\4^LrT=(Bq<.eKkO\<ErNc1srUZTZrrCaOrN_Xdp&BUB
+TDm[Hhu<S[Jc>!7`W,r<e,TFJJcDGDrrAbmrr at WML&_/QJcFF'rrCgRqZ+gOf>d"$jk]ars/>t!
+s/>ssosj7us)7pas2OlHq8WHBrOM[@s2Y#TrQjrNrPA$BpVHUJrrDr7kPkLeoCM;3h9ku/o>^U1
+pUgIFpTX\tr;cZnot17#jfnc]os"CkpTXCgrO_a,qka2%pTXCgs1A$0mA9KEkHO!CmuHk*s%`Ss
+qh+L#q3lm7WW2tuX8d\~>
+[K$7,JcERdk=b[Pmn83Iq\K&WrAXO#ruC32o2betpK%6%q+KsQf1Z!Am7[HZfh;8DP=tTKJP2V.
+h>cA*r;_CAlV#4srrCOJrr at WMU&UY`JcCH(rr at WMg&M'Pg].-NJP5#rs(MFDrFkA)pR;+Ws$Qfh
+q.0;(s'>S,pJ:f^qbR/Xmn`m[nPAmWrC?`crrDplm7[=WrsSF-lYYI1pR:]6q5*hSs,QiMs8W#t
+q>^,Vs01U]s020mrNQ$mpTXUboqhPiqjR8UpTX[dpSI8]ot0C`j08!ln%8U<s()#So>^U<JcD_L
+rrB,"J,~>
+[K$7,JcERdk=b[Pmn<>Ojdbjqo6TqFmptliohPJ-s2P#frPnfQs1m=erN`3tmIU>XoCMYSoCMpN
+s60:MpZVM1s3^f$pX0#\s3^_`ot1%(je_^?p&FuZac?%Hoo@:LpNZ.Zms+SZhg!uWhei<8rGD4:
+gMP&Am8iUI`W,r<e,TFJJcDGDrrAb-rr at WML&_/QJcFF'rrCgRqZ)1?j%K48kK*DsrNcILn^@+"
+s7,^On+?MMp\+ at Us7lKequ-Npqtp9^mJd-kKDtoNr;cZnJc:6"q>U>ujo0i2WW2tuX8d\~>
+[K$7,JcERdkHOnqs)7A<fBM&Wl1"*3p\4^LrT=(Bq<.eKkO\<ErNc1srUZTZrrCaOrN_Xdp&BUB
+TDm[Hhu<S[Jc>!7`W,r<e,TFJJcDGDrrAbmrr at WML&_/QJcFF'rrCgRqZ+gOf>d"$jk]ars/>t!
+s/>ssosj7us)7pas2OlHq8WHBrOM[@s2Y#TrQjrNrPA$BpVHUJrrDr7kPkLeoCM;3h9ku/o>^U1
+pUgIFpTX\tr;cZnot17#jfnc]os"CkpTXCgrO_a,qka2%pTXCgs1A$0mA9KEkHO!CmuHk*s%`Ss
+qh+L#q3lm7WW2tuX8d\~>
+[K$7,JcF'rrrDlplV$mNmn83Iq%ioWrAXO#rGCk0iE#VEm8gbjrr at UCj\,:Hqb-kfJP31>j8]&X
+s8U\Dr;_CAm7WfGrr at WMU&UY`JcCH(rr at WMg&M'PiW&cTJP4flq.Sf!q3q8Bs-igqq-!`'rEAqk
+rCd)brBp$LrDN/]pJUffs%!(hqbQTPrDrq+o4$s$rHR4Pq3pi6rMB1UrJp]Mp&FWPs,QcKs-iPU
+s,Q]Is020mqlosdoqhVkq3puQqlp$foqh&[rO`#sje_^Us((5qq8Va4rFGr4s3^GXq7Ep3rrA,[
+rrDThrrB,"J,~>
+[K$7,JcF'rrrDlplV$mNmn;K,nV6X]nSdr.m9/sSs$Qb)rRLe^s1j3bqu5^KrrDNZrTO4ZnalYA
+s5!YFqrn"7s60 at 9s3^l&pX/ZRot1%(je_^?p&FoLrBo+qmt:FrkC`eZl%ASPon2LRqh*jPj8]&X
+s8Ubhs'kpBo4$fua(".2m7WfGrr at WMU&Y,mTtgU-JcCH(rr at WMg&M'PiW&cTJP4flq<d4`oD\@0
+p[J(Mq==@QnaueQqtBdYq=sdas8)`qrVQWmqt':Us0 at 4Tp&BUBYQ"R-a8Z%CkPhadrrA,[rrDTh
+rrB,"J,~>
+[K$7,JcF'rrrDlpl`g%ms02%*dHTQUmI9N7p%SL_rT=(Bq<._?lgo],q>UBoJc=d1p&FpgrN_"R
+YQ!S^r;cltfDb`SJc>'9QiI'cJcDGDrrAbmrr at WML&_/QJcFF'rrD$XqZ+IEgW&:$l.u1!q5F>#
+o=4+urPnZFq8WHBrOM[@rQ"lTrQjrNrPA$BpVHUJrrDr7l2L^goCM51rS?AYq7H1:rNPt,rPnZ;
+p&FWqs2O`9s1 at m,s2OZ7s/#Cmqka2%os"Ckq7H=(qka8'os!h[rL3\sjfnKUs&nH[q2Xd0rE9/s
+s+Bp'q3nSgrrA,[rrDThrrB,"J,~>
+[K$7,JcF'rrrDlplV$mNmn83Iq%ioWrAXO#rGCk0iE#VEm8gbjrr at UCj\,:Hqb-kfJP31>j8]&X
+s8U\Dr;_CAm7WfGrr at WMU&UY`JcCH(rr at WMg&M'PiW&cTJP4flq.Sf!q3q8Bs-igqq-!`'rEAqk
+rCd)brBp$LrDN/]pJUffs%!(hqbQTPrDrq+o4$s$rHR4Pq3pi6rMB1UrJp]Mp&FWPs,QcKs-iPU
+s,Q]Is020mqlosdoqhVkq3puQqlp$foqh&[rO`#sje_^Us((5qq8Va4rFGr4s3^GXq7Ep3rrA,[
+rrDThrrB,"J,~>
+[K$7,JcF'rrrDlplV$mNmn;K,nV6X]nSdr.m9/sSs$Qb)rRLe^s1j3bqu5^KrrDNZrTO4ZnalYA
+s5!YFqrn"7s60 at 9s3^l&pX/ZRot1%(je_^?p&FoLrBo+qmt:FrkC`eZl%ASPon2LRqh*jPj8]&X
+s8Ubhs'kpBo4$fua(".2m7WfGrr at WMU&Y,mTtgU-JcCH(rr at WMg&M'PiW&cTJP4flq<d4`oD\@0
+p[J(Mq==@QnaueQqtBdYq=sdas8)`qrVQWmqt':Us0 at 4Tp&BUBYQ"R-a8Z%CkPhadrrA,[rrDTh
+rrB,"J,~>
+[K$7,JcF'rrrDlpl`g%ms02%*dHTQUmI9N7p%SL_rT=(Bq<._?lgo],q>UBoJc=d1p&FpgrN_"R
+YQ!S^r;cltfDb`SJc>'9QiI'cJcDGDrrAbmrr at WML&_/QJcFF'rrD$XqZ+IEgW&:$l.u1!q5F>#
+o=4+urPnZFq8WHBrOM[@rQ"lTrQjrNrPA$BpVHUJrrDr7l2L^goCM51rS?AYq7H1:rNPt,rPnZ;
+p&FWqs2O`9s1 at m,s2OZ7s/#Cmqka2%os"Ckq7H=(qka8'os!h[rL3\sjfnKUs&nH[q2Xd0rE9/s
+s+Bp'q3nSgrrA,[rrDThrrB,"J,~>
+[K$7,JcF'rrrE#tm7[<Vj\(.?pD3d%s#9a%q/,S0hcB8?o2`7lrr at UCj%K.HJP2t8h>beorrA6U
+rrCkJRK*9eJcDGDSH+6 at L&_/QJcEF`qZ)1?f1Z-TrFk"trL3\FqjROqq-!`'rEAqkrCd)bqa9mL
+s&/;]q,76%qc<YcrrDplmn<OYnRCg$pNYYLrL328rMB7Wq2YEMoDeKPrJpQIrL3JWrJp!9rNQ*d
+oqh\mpR:cOrNQ*dpSI>_opY!=qlp*2iNW3Us2OB:s02N6os">5q7F!5rrA&YrrDZjrrB,"J,~>
+[K$7,JcF'rrrE#tm7[<Vj\+R&mtUF[o5F/0mof0UpI"t*s3gk_s1eTLJc>WIht-jJmIU/;oCMkC
+rS at GDqrn"7s60F;rR(Z$rR(S`s3^_`s1A<Nqn)a0s1A*2kG at j?p]&Kum=Y:rl%AeVmt:(RpOhXR
+s+B9Th>c/FpL=.<oj[6(a^XX<rsSF!lV!ZGrr at WMU&Y,mTtgU-JcCH(rr at WM^&Rs0JP4TfqsE@`
+rQFg3pX9$0naZ/@q=O at Qs7Z9_q=sdarVHNoqtg9IqriV1oD\@]Jc;qRs0BK?s0CheZiC%*NW9"Y
+oDegjX8d\~>
+[K$7,JcF'rrrE#tmBHIun$)PudHTEQlgXN;p\4R]s8N&^q<.S;n+2,0p&=skJc=^/p]#gDWW(`R
+ci3sMPQ(Tfh>WiBrr at WMU&Y,mU&Y,mJcCH(rr at WM^&Rs0qln&Oh8\9un(mU!s/c7!s/GV"kI^]4
+q7HIBs0_g9pVd$NrP\TZn\kIDn&4t:pWWX;qo%aunal)1pYFfUrO_O<rNQ%.q8WB;oDeKqrPnN7
+rO_g.rPms'rMB>%os"ImpUg+&rMB>%pTX+_ot0=iqka<qiMHFUs,QE6s/#`uoqhPGq3nYirrA&Y
+rrDZjrrB,"J,~>
+[K$7,JcF'rrrE#tm7[<Vj\(.?pD3d%s#9a%q/,S0hcB8?o2`7lrr at UCj%K.HJP2t8h>beorrA6U
+rrCkJRK*9eJcDGDSH+6 at L&_/QJcEF`qZ)1?f1Z-TrFk"trL3\FqjROqq-!`'rEAqkrCd)bqa9mL
+s&/;]q,76%qc<YcrrDplmn<OYnRCg$pNYYLrL328rMB7Wq2YEMoDeKPrJpQIrL3JWrJp!9rNQ*d
+oqh\mpR:cOrNQ*dpSI>_opY!=qlp*2iNW3Us2OB:s02N6os">5q7F!5rrA&YrrDZjrrB,"J,~>
+[K$7,JcF'rrrE#tm7[<Vj\+R&mtUF[o5F/0mof0UpI"t*s3gk_s1eTLJc>WIht-jJmIU/;oCMkC
+rS at GDqrn"7s60F;rR(Z$rR(S`s3^_`s1A<Nqn)a0s1A*2kG at j?p]&Kum=Y:rl%AeVmt:(RpOhXR
+s+B9Th>c/FpL=.<oj[6(a^XX<rsSF!lV!ZGrr at WMU&Y,mTtgU-JcCH(rr at WM^&Rs0JP4TfqsE@`
+rQFg3pX9$0naZ/@q=O at Qs7Z9_q=sdarVHNoqtg9IqriV1oD\@]Jc;qRs0BK?s0CheZiC%*NW9"Y
+oDegjX8d\~>
+[K$7,JcF'rrrE#tmBHIun$)PudHTEQlgXN;p\4R]s8N&^q<.S;n+2,0p&=skJc=^/p]#gDWW(`R
+ci3sMPQ(Tfh>WiBrr at WMU&Y,mU&Y,mJcCH(rr at WM^&Rs0qln&Oh8\9un(mU!s/c7!s/GV"kI^]4
+q7HIBs0_g9pVd$NrP\TZn\kIDn&4t:pWWX;qo%aunal)1pYFfUrO_O<rNQ%.q8WB;oDeKqrPnN7
+rO_g.rPms'rMB>%os"ImpUg+&rMB>%pTX+_ot0=iqka<qiMHFUs,QE6s/#`uoqhPGq3nYirrA&Y
+rrDZjrrB,"J,~>
+[K$7,JcF'rm7[6Tj%Fq=q%ip%rtbP]nSS#0h,`o9oiAClrrD:Vr;_CAs%E%bJP31>li6n`p]&K2
+q#HaSrrCkJRK*9eJcDGDSH+6 at L&_/QJcEdjpAfb;dnB^Xs(2.BgLU>Qqi:QBs,QnXrEB"mqb-l`
+qa9mLs&/Seq)JC9rDNT'rDrecrrE!ns&]"hr;cF^oj[0&o6B;Js-i>8opY]:rMB2es,Qc at rJpWK
+qjR8Uqi:EIrJpQIrNQ$bpSInMopYWOs026dpSIJcnXAR9fs((En[nU-nZ_hcJcDqRrrB,"J,~>
+[K$7,JcF'rm7[6Tj%JR*qiUK)o6U"HnRV)knP8aErGDQnrP*p_rVkLArrDHXrTO3MqrmkIq<7_3
+qrmq5s3^f$rR(YbrR(S`s3^ebot1%(hkg(9p&EL$c%Gb8nUp.Pqh+!Ts)$kBli6n`p]&ubo4%M2
+pL<`2b at 9R6rsS?tm7WlIrr at WMU&Y,mTtgU-JcCH(rr at WMa8bl6JP4Hbs82]\kK*>>nc&F6s4-f4
+p[[kGs7H'Yp\+X]q=sdaqtg<mqtg?Kqrn!Vp%*b6p&BUBJc>-;q6K8aJcDqRrrB,"J,~>
+[K$7,JcF'rmBHCsjfncse*5WSl1"B;p%SL_s7cKks8DoZn`]`=Jc>-;rrD<_rN_"Rs8M]kJc;kP
+li6n`p]&M;q6H at ds0CJ[RK*9eJcDGDrrAbmrr at WML&_/QJcEdjpAj`fbIcHIjjE2Gq<7jOs/c7!
+s/G\$jh(E0qn)UBrOMaBqoAZRqp4fNs2"HJq:bl#q8)gLrrE#9s1J1,rNc%op%.G3oA/HSs1@[<
+ot1%>rNPtps2O`DrPnT9qn)U,qo8B7rPnN7rMB8#pTX\;ot0t&s/#J%pTX7cn[mnefqn;EnXB8V
+nYQ&cJcDqRrrB,"J,~>
+[K$7,JcF'rm7[6Tj%Fq=q%ip%rtbP]nSS#0h,`o9oiAClrrD:Vr;_CAs%E%bJP31>li6n`p]&K2
+q#HaSrrCkJRK*9eJcDGDSH+6 at L&_/QJcEdjpAfb;dnB^Xs(2.BgLU>Qqi:QBs,QnXrEB"mqb-l`
+qa9mLs&/Seq)JC9rDNT'rDrecrrE!ns&]"hr;cF^oj[0&o6B;Js-i>8opY]:rMB2es,Qc at rJpWK
+qjR8Uqi:EIrJpQIrNQ$bpSInMopYWOs026dpSIJcnXAR9fs((En[nU-nZ_hcJcDqRrrB,"J,~>
+[K$7,JcF'rm7[6Tj%JR*qiUK)o6U"HnRV)knP8aErGDQnrP*p_rVkLArrDHXrTO3MqrmkIq<7_3
+qrmq5s3^f$rR(YbrR(S`s3^ebot1%(hkg(9p&EL$c%Gb8nUp.Pqh+!Ts)$kBli6n`p]&ubo4%M2
+pL<`2b at 9R6rsS?tm7WlIrr at WMU&Y,mTtgU-JcCH(rr at WMa8bl6JP4Hbs82]\kK*>>nc&F6s4-f4
+p[[kGs7H'Yp\+X]q=sdaqtg<mqtg?Kqrn!Vp%*b6p&BUBJc>-;q6K8aJcDqRrrB,"J,~>
+[K$7,JcF'rmBHCsjfncse*5WSl1"B;p%SL_s7cKks8DoZn`]`=Jc>-;rrD<_rN_"Rs8M]kJc;kP
+li6n`p]&M;q6H at ds0CJ[RK*9eJcDGDrrAbmrr at WML&_/QJcEdjpAj`fbIcHIjjE2Gq<7jOs/c7!
+s/G\$jh(E0qn)UBrOMaBqoAZRqp4fNs2"HJq:bl#q8)gLrrE#9s1J1,rNc%op%.G3oA/HSs1@[<
+ot1%>rNPtps2O`DrPnT9qn)U,qo8B7rPnN7rMB8#pTX\;ot0t&s/#J%pTX7cn[mnefqn;EnXB8V
+nYQ&cJcDqRrrB,"J,~>
+[K$7,JcF4!mn<NXrCd.jiCe_;r>,?)q\K53mqr#4gK*u?r;cRbqc9mnrr at UCiCiqFJP37@huCMc
+r;_CAo1Qdsr;bmXrr at WMU&UY`JcCH(rr at WMbQ%A<JP46\s(MFDrFjqrrE9)ZrL3\Fs$QgHrE9/(
+pJ:ZZs%iGXk>1h3s#^6RqdTS+q+(GbrD3G\j%K8Ml##g4jb)r\s+C-9ooAYDrJpiFs%`T_q2Y9I
+q3q2Wq2Y3GrJpKGopY]QrJpQ>pSInMpR:cOq69mZm@*RArE9#of<FS;q7HO.rFGN(q5&ZBZ2ah(
+X8d\~>
+[K$7,JcF4!mn<NXrCd.jiCid4mudF#nTseFo47AonP8aErAX[lq^hdI\c2Q5nc&FWiVqC!rrDHX
+n`^#/qt'^KpYGf3qq_;"s5!S"s2P#brPnlLrPn`Hs02I6qloUej-o`Bf8e%,o6Bq\l$35\j`pZ>
+kBPnagMQ+_r>,9>q/+Aca]@e%^&S$2j8],ZJcDGDrrAb-rr at WML&_/QJcEpnq#Gt=btIm"jiI&:
+p&=uss8MuIq=3qEq=F:Op\+ at Up\jparrDrmqrmSAJc>9 at q>UE"Jc<djrN`R)rNbbgJcE"TrrB,"
+J,~>
+[K$7,JcF4!n$)\"rNQ<4jfn]qdHTWWl1"B;rV-?`p\4Xcs8Duos8Dutn*'`Aci3mKTDnijJc=X-
+p]#gDZ2WY\_>aD=Jc>9?^&S$2j8],ZJcDGDrrAbmrr at WML&_/QJcEpnq#KT^bIcHIjjE8Iqrn'Y
+s/c0to=4%sq8WBFrPnkaqo8ZHpVcsLs2=`ZkJ[,KrR^q_pWWX;rP\`^h>Z[&mG6mOmDf1Rq7H=>
+oDed/rO`)Js1A*Hq69\,qlon9pTXV9o<@o"q69h;ot0t&s2OfFos"7gs2OH<nZ_t&qln\Kl`g2R
+qka6oo;28eJcE"TrrB,"J,~>
+[K$7,JcF4!mn<NXrCd.jiCe_;r>,?)q\K53mqr#4gK*u?r;cRbqc9mnrr at UCiCiqFJP37@huCMc
+r;_CAo1Qdsr;bmXrr at WMU&UY`JcCH(rr at WMbQ%A<JP46\s(MFDrFjqrrE9)ZrL3\Fs$QgHrE9/(
+pJ:ZZs%iGXk>1h3s#^6RqdTS+q+(GbrD3G\j%K8Ml##g4jb)r\s+C-9ooAYDrJpiFs%`T_q2Y9I
+q3q2Wq2Y3GrJpKGopY]QrJpQ>pSInMpR:cOq69mZm@*RArE9#of<FS;q7HO.rFGN(q5&ZBZ2ah(
+X8d\~>
+[K$7,JcF4!mn<NXrCd.jiCid4mudF#nTseFo47AonP8aErAX[lq^hdI\c2Q5nc&FWiVqC!rrDHX
+n`^#/qt'^KpYGf3qq_;"s5!S"s2P#brPnlLrPn`Hs02I6qloUej-o`Bf8e%,o6Bq\l$35\j`pZ>
+kBPnagMQ+_r>,9>q/+Aca]@e%^&S$2j8],ZJcDGDrrAb-rr at WML&_/QJcEpnq#Gt=btIm"jiI&:
+p&=uss8MuIq=3qEq=F:Op\+ at Up\jparrDrmqrmSAJc>9 at q>UE"Jc<djrN`R)rNbbgJcE"TrrB,"
+J,~>
+[K$7,JcF4!n$)\"rNQ<4jfn]qdHTWWl1"B;rV-?`p\4Xcs8Duos8Dutn*'`Aci3mKTDnijJc=X-
+p]#gDZ2WY\_>aD=Jc>9?^&S$2j8],ZJcDGDrrAbmrr at WML&_/QJcEpnq#KT^bIcHIjjE8Iqrn'Y
+s/c0to=4%sq8WBFrPnkaqo8ZHpVcsLs2=`ZkJ[,KrR^q_pWWX;rP\`^h>Z[&mG6mOmDf1Rq7H=>
+oDed/rO`)Js1A*Hq69\,qlon9pTXV9o<@o"q69h;ot0t&s2OfFos"7gs2OH<nZ_t&qln\Kl`g2R
+qka6oo;28eJcE"TrrB,"J,~>
+[K$7,JcFF'nOrZXf1UZ1rtbQ+q\K)/m:+mPj%K>OX\8Zoq+LYdJP5<%p]'\Tr;_CAbtI[.rrDNf
+\P)l$JP5`1S,`KgJcDGDSH+6 at L&_/QJcF-tqZ)1?`Cp5:s(24Dfjsn]rL3VDs$QaFs&o(lq+LNN
+ktgt3s%*)]s'l"+pIG5`s#C$Ss$Pm at nQ,0slZhTFmuI9tqjR2<p&FoLqjRO[q2Y?KpR:uUq2Y9I
+qi:?Gs,Qc at qka1MopY]QrJpQ>pSIbkrJp96je^Y7iMH at SrFGT*q5&ZB\,ZI.s8W*!X8d\~>
+[K$7,JcFF'nOrZXf1Y(brJ'igo5F52nQGBWogAU8rGDKaruq:>VuHM`jo3[!rrDldrMTD]n`]r-
+s7?'MpYGl5qq_4us5!S"pW!0Ds2OrJrNQ=6qloUej-o`BmuI?6nW(kHms+Y\j`pfBkBQ`<m<J7&
+rrDNfh/1tWr>*Laa]@RtS,`KgJcDGDrrAb-rr at WML&_/QJcF-tqZ)1?`Cp*qhoPE4p\t2urVliI
+jmrHCp[n:SrV$![q>L-arVHNorVHKis60"EJc>]Kp&F^as0 at 4TJc>-;rNbhiJcE4ZrrE*!rrB,"
+J,~>
+[K$7,JcFF'nZ_h"hlupgc0=EYl1"05p\4XcrVHQmqu?'TJc=j3rrDlorN_"Rli-YYn,E9kJc<pn
+oDegjn,KrtrN_"Rp\pZ^rr at WMU&Y,mU&Y,mJcCH(rr at WMdJs(DiNU;5fuE4&n_Ng#s0Ma,s/>h%
+o=42"q8WBFqo8Y_qo8BKq8`<Wl,<2IrR_"apWWX;s4[Lks3L_cfDb=(leUaOn&G7Pqn)O at p&Fp/
+qn)lHq8W<9pUg=,q8W67qo8<5s2O`Dqlot;ot1%(rPnNBpTXOkrPn6:jfmF7iNW-SrE8fiq65GM
+\,ZI.s8W*!X8d\~>
+[K$7,JcFF'nOrZXf1UZ1rtbQ+q\K)/m:+mPj%K>OX\8Zoq+LYdJP5<%p]'\Tr;_CAbtI[.rrDNf
+\P)l$JP5`1S,`KgJcDGDSH+6 at L&_/QJcF-tqZ)1?`Cp5:s(24Dfjsn]rL3VDs$QaFs&o(lq+LNN
+ktgt3s%*)]s'l"+pIG5`s#C$Ss$Pm at nQ,0slZhTFmuI9tqjR2<p&FoLqjRO[q2Y?KpR:uUq2Y9I
+qi:?Gs,Qc at qka1MopY]QrJpQ>pSIbkrJp96je^Y7iMH at SrFGT*q5&ZB\,ZI.s8W*!X8d\~>
+[K$7,JcFF'nOrZXf1Y(brJ'igo5F52nQGBWogAU8rGDKaruq:>VuHM`jo3[!rrDldrMTD]n`]r-
+s7?'MpYGl5qq_4us5!S"pW!0Ds2OrJrNQ=6qloUej-o`BmuI?6nW(kHms+Y\j`pfBkBQ`<m<J7&
+rrDNfh/1tWr>*Laa]@RtS,`KgJcDGDrrAb-rr at WML&_/QJcF-tqZ)1?`Cp*qhoPE4p\t2urVliI
+jmrHCp[n:SrV$![q>L-arVHNorVHKis60"EJc>]Kp&F^as0 at 4TJc>-;rNbhiJcE4ZrrE*!rrB,"
+J,~>
+[K$7,JcFF'nZ_h"hlupgc0=EYl1"05p\4XcrVHQmqu?'TJc=j3rrDlorN_"Rli-YYn,E9kJc<pn
+oDegjn,KrtrN_"Rp\pZ^rr at WMU&Y,mU&Y,mJcCH(rr at WMdJs(DiNU;5fuE4&n_Ng#s0Ma,s/>h%
+o=42"q8WBFqo8Y_qo8BKq8`<Wl,<2IrR_"apWWX;s4[Lks3L_cfDb=(leUaOn&G7Pqn)O at p&Fp/
+qn)lHq8W<9pUg=,q8W67qo8<5s2O`Dqlot;ot1%(rPnNBpTXOkrPn6:jfmF7iNW-SrE8fiq65GM
+\,ZI.s8W*!X8d\~>
+[K$7,JcFR+o1Sr\s%E:jf1UZ1rCd))oDe8ghc>S,rr at UChb3YBJP3[Lnc/Uhnc,jer;_CAq+I@[
+r;_EKU&UY`JcCH(rr at WMfDk^JJP3aNs(MFDs(Le1oj[`-q-!Z,o8`iWq+pfZq*XOFof2h>rCd/P
+s&/S]rrE'Rs%iY^s%hlPkuRUskBQ0BnW*L!rL3D>oDeWHrL3D>s/#=Us/#CKrMB7Kq5+%Mo:#WS
+q2Y-:rMBCOopYWOs02<Zm at +'Os&nT_f<F;3opYhSs-ihhpSEH@\c;[0s8W*!X8d\~>
+[K$7,JcFR+o1Sr\s%E:jf1Y(bnTs_Do47Gqo1nmEq)A7]s"+0noDbrlp%.GIc1Cr8lgsZ1q;(r3
+mG7`gs2P#bou?a<qlp$qrNPggjdPlBiJu*6lZiA\kBQl at lZi#<nTaU(rrDThh/1bQs&T(+eRHX$
+h+OC?r;_EKU&Y,mTtgU-JcCH(rr at WMfDk^JJP3aNqsEdlp$MXtqoef]oD\dglgjfAs7GdQrV-'b
+q=sj_rrE)jqtopTJc>]KoDaC at bPqOIQ2^`fn, at n<\c;[0s8W*!X8d\~>
+[K$7,JcFR+o<A+&s02H4gT^XgcfsQYlgX<5q=jjerVH-cn+2,0kPkJ]Jc=R+p&BUB^&IR%rrDTh
+Z2X^-Jc>KETE"iiJcDGDrrAbmrr at WML&_/QJcF@%qZ,TZ]t;t;n'UCUp#uFSs/c7!pU'\)rNQ+&
+q7HIBrO_[@pVcmJq9SHHn(RZjs2"HRrrE)Ks2=r`s2<=aq<7"tkL&h>qpGASou?V'q8WBFou@$9
+o=P%,ou?s7pW!$5rPnH at rNQ+;ot11,qo8<@pTX[oq8Vg6s02N6l*/d9j083grGV_Jqka%kJcE:\
+rrE*!rrB,"J,~>
+[K$7,JcFR+o1Sr\s%E:jf1UZ1rCd))oDe8ghc>S,rr at UChb3YBJP3[Lnc/Uhnc,jer;_CAq+I@[
+r;_EKU&UY`JcCH(rr at WMfDk^JJP3aNs(MFDs(Le1oj[`-q-!Z,o8`iWq+pfZq*XOFof2h>rCd/P
+s&/S]rrE'Rs%iY^s%hlPkuRUskBQ0BnW*L!rL3D>oDeWHrL3D>s/#=Us/#CKrMB7Kq5+%Mo:#WS
+q2Y-:rMBCOopYWOs02<Zm at +'Os&nT_f<F;3opYhSs-ihhpSEH@\c;[0s8W*!X8d\~>
+[K$7,JcFR+o1Sr\s%E:jf1Y(bnTs_Do47Gqo1nmEq)A7]s"+0noDbrlp%.GIc1Cr8lgsZ1q;(r3
+mG7`gs2P#bou?a<qlp$qrNPggjdPlBiJu*6lZiA\kBQl at lZi#<nTaU(rrDThh/1bQs&T(+eRHX$
+h+OC?r;_EKU&Y,mTtgU-JcCH(rr at WMfDk^JJP3aNqsEdlp$MXtqoef]oD\dglgjfAs7GdQrV-'b
+q=sj_rrE)jqtopTJc>]KoDaC at bPqOIQ2^`fn, at n<\c;[0s8W*!X8d\~>
+[K$7,JcFR+o<A+&s02H4gT^XgcfsQYlgX<5q=jjerVH-cn+2,0kPkJ]Jc=R+p&BUB^&IR%rrDTh
+Z2X^-Jc>KETE"iiJcDGDrrAbmrr at WML&_/QJcF@%qZ,TZ]t;t;n'UCUp#uFSs/c7!pU'\)rNQ+&
+q7HIBrO_[@pVcmJq9SHHn(RZjs2"HRrrE)Ks2=r`s2<=aq<7"tkL&h>qpGASou?V'q8WBFou@$9
+o=P%,ou?s7pW!$5rPnH at rNQ+;ot11,qo8<@pTX[oq8Vg6s02N6l*/d9j083grGV_Jqka%kJcE:\
+rrE*!rrB,"J,~>
+[K$7,JcFd1o1Sr\btEU's%E;+n,Mcak>m4.rr at UCh+RMBJP3aNiW$#Qq#Gt=qb*X_r;_EKU&UY`
+JcCH(rr at WMh>d?PJP3OHrFQ"BmptrtqdfM*rFGk0pQ#,WrD35^q*XOFpGht>q`FgUpIG5`s#BmO
+lV$JCqdTM at j*9g at ooAd!s-iV at p&FcHrL3D>s/#=Uo8`dGpQ#'Gqi:?<s/#IMopYoWpQ#!:q5*\C
+n!a8Ol_Wp-q3q8Bos!DOpR:tSq3q&<JcE4ZrrB,"J,~>
+[K$7,JcFd1o1Sr\btI;`l[&/@o47Gqo1nmEq)A7's'kpMn,KZln+6#Ian,N4l1=N1p"fT1p"fYq
+rS@@us2P#bqo8ZJs2OrJs02I6qlo=]jdPrDjc8GTrHRX\bBWbums+;<om#Hqs'jl&f4+VXq[<E>
+hdXc0dn?D7r;_EKU&Y,mTs+IrJcCH(rr at WMh>d?PJP3OHqsEjnna6:rrQFfYp\t'goCDSGqt0 at M
+q>L'_q>($jq>1'Gp[`t8rVlKiJc<jls0 at jfqm,\iJcE4ZrrB,"J,~>
+[K$7,JcFd1o<A+&c*5IWiU,t#p%.qPs8Munn,MeHJc=p5rr at WLh>[0KJc<F`iW$%Zq6GSNqu3;h
+r;_EKU&Y,mU&Y,mJcCH(rr at WMh>d?Pf<E0)h8\X*kM>strN-$trNu1+rNPt"qn)[DrO_[@pVcmJ
+q9SHHn(RZjs2"HRrrE)Qqo$t_qt'dMj5&tIou?aRs1 at sDp&Fd+rO_aBs02+,o>^a5pW!$5qo8<@
+s027;ot17.pVus>q69J1n%8U<l`f]pq7HUFoqgWOpUg<@q7HC at JcE4ZrrB,"J,~>
+[K$7,JcFd1o1Sr\btEU's%E;+n,Mcak>m4.rr at UCh+RMBJP3aNiW$#Qq#Gt=qb*X_r;_EKU&UY`
+JcCH(rr at WMh>d?PJP3OHrFQ"BmptrtqdfM*rFGk0pQ#,WrD35^q*XOFpGht>q`FgUpIG5`s#BmO
+lV$JCqdTM at j*9g at ooAd!s-iV at p&FcHrL3D>s/#=Uo8`dGpQ#'Gqi:?<s/#IMopYoWpQ#!:q5*\C
+n!a8Ol_Wp-q3q8Bos!DOpR:tSq3q&<JcE4ZrrB,"J,~>
+[K$7,JcFd1o1Sr\btI;`l[&/@o47Gqo1nmEq)A7's'kpMn,KZln+6#Ian,N4l1=N1p"fT1p"fYq
+rS@@us2P#bqo8ZJs2OrJs02I6qlo=]jdPrDjc8GTrHRX\bBWbums+;<om#Hqs'jl&f4+VXq[<E>
+hdXc0dn?D7r;_EKU&Y,mTs+IrJcCH(rr at WMh>d?PJP3OHqsEjnna6:rrQFfYp\t'goCDSGqt0 at M
+q>L'_q>($jq>1'Gp[`t8rVlKiJc<jls0 at jfqm,\iJcE4ZrrB,"J,~>
+[K$7,JcFd1o<A+&c*5IWiU,t#p%.qPs8Munn,MeHJc=p5rr at WLh>[0KJc<F`iW$%Zq6GSNqu3;h
+r;_EKU&Y,mU&Y,mJcCH(rr at WMh>d?Pf<E0)h8\X*kM>strN-$trNu1+rNPt"qn)[DrO_[@pVcmJ
+q9SHHn(RZjs2"HRrrE)Qqo$t_qt'dMj5&tIou?aRs1 at sDp&Fd+rO_aBs02+,o>^a5pW!$5qo8<@
+s027;ot17.pVus>q69J1n%8U<l`f]pq7HUFoqgWOpUg<@q7HC at JcE4ZrrB,"J,~>
+[K$7,JcFp5oh5)\b=dO)rCd))l2U3]lW2P/rrBAur;cjjrr at UCgIq;@JP3sTqu?Tpli3YOr;_CA
+s%BWsr;cHhrr at WMU&UY`JcCH(rr at WMjo>,Vqb-qhJP3[Ls'>Y9rFk_3lXKm)pK at N,q-!TTs+C,R
+q+LNNmn`a=pIP<DrB($:s#]sFrrE'drD3GYlV$JCpL<*+l\#4^pQ"p!pQ"kFkDoRpo:"^"rMB=M
+opYK4q3q>9ooA^6rMB%Em@*dGh2_<"m>g;)o:#VQqjR8>JcE:\rrB,"J,~>
+[K$7,JcFp5oh5)\b=hAfpP/3ao5F52o3(Z[ogAI4r at InVruqCXl2S0jq=FWap[e"UbOb\1s7?6j
+rU^'Qs5!5:n`])jrR(Z$qpG/XrO`*Lqn)g2s1A04o;2DSrMAnMpQ#"Jl]1(Zq0;:Zc$8hso6BS<
+q0;f:r;c0`qdST&fjaDNs'kpBlXJ%<b=f,?r;cHhrr at WMU&Y,mTs+IrJcCH(rr at WMjo>,Vqb-qh
+JP3[Lq<d^nna65Aq9/BUq>U3grUTROnauYMp\k'bs7lWas7lEcs8)`qq>1'Gq<7kMJc>]KoDaC@
+Jc=4!rNbtmJcE:\rrB,"J,~>
+[K$7,JcFp5os"7&c*75[bN\-UlgXT=q=jjes8)col2U5D^]+8=Zi9p/s8N#uJc=F'p]#gD`W#c7
+r;c0`U&P"rJc>]KZ2ab&oDegjJcDGDrrAbmrr at WML&_/QJcFj3q#L;rs('ZabIcBGkL&bSp#uF^
+s/c0trNu7-s01mqs1A$Fs1 at mBs3^Y\q8`<Wn&4VIrR_(rs4@"hrrE)FrP\`ae,K+5iSEhIs5!Fh
+p!NNRoDe!ns3^GMj2V&%q8W*>o>^U<s3^MZot11,n]'t.pTWJnq7H%6jfn?grGVSFpVqda\c;[0
+X8d\~>
+[K$7,JcFp5oh5)\b=dO)rCd))l2U3]lW2P/rrBAur;cjjrr at UCgIq;@JP3sTqu?Tpli3YOr;_CA
+s%BWsr;cHhrr at WMU&UY`JcCH(rr at WMjo>,Vqb-qhJP3[Ls'>Y9rFk_3lXKm)pK at N,q-!TTs+C,R
+q+LNNmn`a=pIP<DrB($:s#]sFrrE'drD3GYlV$JCpL<*+l\#4^pQ"p!pQ"kFkDoRpo:"^"rMB=M
+opYK4q3q>9ooA^6rMB%Em@*dGh2_<"m>g;)o:#VQqjR8>JcE:\rrB,"J,~>
+[K$7,JcFp5oh5)\b=hAfpP/3ao5F52o3(Z[ogAI4r at InVruqCXl2S0jq=FWap[e"UbOb\1s7?6j
+rU^'Qs5!5:n`])jrR(Z$qpG/XrO`*Lqn)g2s1A04o;2DSrMAnMpQ#"Jl]1(Zq0;:Zc$8hso6BS<
+q0;f:r;c0`qdST&fjaDNs'kpBlXJ%<b=f,?r;cHhrr at WMU&Y,mTs+IrJcCH(rr at WMjo>,Vqb-qh
+JP3[Lq<d^nna65Aq9/BUq>U3grUTROnauYMp\k'bs7lWas7lEcs8)`qq>1'Gq<7kMJc>]KoDaC@
+Jc=4!rNbtmJcE:\rrB,"J,~>
+[K$7,JcFp5os"7&c*75[bN\-UlgXT=q=jjes8)col2U5D^]+8=Zi9p/s8N#uJc=F'p]#gD`W#c7
+r;c0`U&P"rJc>]KZ2ab&oDegjJcDGDrrAbmrr at WML&_/QJcFj3q#L;rs('ZabIcBGkL&bSp#uF^
+s/c0trNu7-s01mqs1A$Fs1 at mBs3^Y\q8`<Wn&4VIrR_(rs4@"hrrE)FrP\`ae,K+5iSEhIs5!Fh
+p!NNRoDe!ns3^GMj2V&%q8W*>o>^U<s3^MZot11,n]'t.pTWJnq7H%6jfn?grGVSFpVqda\c;[0
+X8d\~>
+[K$7,JcG-;pIk;^rCd.jb=dU+rCd/+j8\LUnQ*t/rrB5qrr at UCgIq5>j\,OPJP56#j8YN?r;_CA
+U&Y,mJcDGDSH+6 at L&_/QJcG!7qZ)1?Y=nn/s(24DnRUflpK at N,oi_<Ts+C8Vs%*/YrEK:prBU6I
+mn`mApIP0 at s#^6<s#^0=rBpNRrrE'ds#C$Ss$Q0HkuR=`j*9sDrHS4"o7Qdtp&F-6s+C8Fq3q87
+ooB')o8`jIooAj:rIad'qjRD7pQ"p8l]1p=o:#]UeW0HogQ(s'nXBDOrL3J at _>jN8JcG]KrrB,"
+J,~>
+[K$7,JcG-;pIk;^rCd.jb=h#QpNl:HojmYso1nsGpG_t#s'l"/rupG&\c23ls/5V_q>UEXch$hn
+rrDlYn_Na!n_O5mpYGMiou?a<o<@h_n!`^*p&FWDo7R!#o7Q^\o7P52mqqfDkAC0Bj8\d]l##*_
+kuRalr>,'8buVYRU&Y,mJcDGDrrAarrr at WML&_/QJcG!7qZ)1?Y=nc[n]:%`rU0F'pWrfdrVlco
+rTF.Xp[dYAp\jp^s7#p\rV?EgrrDlks5!G5q=B=>p&F(OrN_"Rqu6Q"Jc>QGrNc%o_>jN8JcG]K
+rrB,"J,~>
+[K$7,JcG-;pTXI(rNQ<4bHT7UjmDC'p%/"RrVlinj8\N<^]+8=YQ"P%Jc=F'p&F.QrN_"Rl2K`C
+RK!/jMuNJBU&Y,mJcDGDrrAbmrr at WML&_/QJcG!7qZ+O<bIcHIn'UCUp#uFSs/c7!pU'h-q69=m
+pW!6Fo>^gXrP\`=s0;IArR1Shn&4VIs4@:ts4 at 5'rQkGdrrE)Fs4[Lks3K6pnakesmEtmgqo86T
+pVun+ji7>JrGVMDrR(;Xs3^GXs0219q7HUQou?m at qpG/Xot0P0rGV;>s01%nq7GD$os!turGVYH
+pVt&Lrr at WMrVultX8d\~>
+[K$7,JcG-;pIk;^rCd.jb=dU+rCd/+j8\LUnQ*t/rrB5qrr at UCgIq5>j\,OPJP56#j8YN?r;_CA
+U&Y,mJcDGDSH+6 at L&_/QJcG!7qZ)1?Y=nn/s(24DnRUflpK at N,oi_<Ts+C8Vs%*/YrEK:prBU6I
+mn`mApIP0 at s#^6<s#^0=rBpNRrrE'ds#C$Ss$Q0HkuR=`j*9sDrHS4"o7Qdtp&F-6s+C8Fq3q87
+ooB')o8`jIooAj:rIad'qjRD7pQ"p8l]1p=o:#]UeW0HogQ(s'nXBDOrL3J at _>jN8JcG]KrrB,"
+J,~>
+[K$7,JcG-;pIk;^rCd.jb=h#QpNl:HojmYso1nsGpG_t#s'l"/rupG&\c23ls/5V_q>UEXch$hn
+rrDlYn_Na!n_O5mpYGMiou?a<o<@h_n!`^*p&FWDo7R!#o7Q^\o7P52mqqfDkAC0Bj8\d]l##*_
+kuRalr>,'8buVYRU&Y,mJcDGDrrAarrr at WML&_/QJcG!7qZ)1?Y=nc[n]:%`rU0F'pWrfdrVlco
+rTF.Xp[dYAp\jp^s7#p\rV?EgrrDlks5!G5q=B=>p&F(OrN_"Rqu6Q"Jc>QGrNc%o_>jN8JcG]K
+rrB,"J,~>
+[K$7,JcG-;pTXI(rNQ<4bHT7UjmDC'p%/"RrVlinj8\N<^]+8=YQ"P%Jc=F'p&F.QrN_"Rl2K`C
+RK!/jMuNJBU&Y,mJcDGDrrAbmrr at WML&_/QJcG!7qZ+O<bIcHIn'UCUp#uFSs/c7!pU'h-q69=m
+pW!6Fo>^gXrP\`=s0;IArR1Shn&4VIs4@:ts4 at 5'rQkGdrrE)Fs4[Lks3K6pnakesmEtmgqo86T
+pVun+ji7>JrGVMDrR(;Xs3^GXs0219q7HUQou?m at qpG/Xot0P0rGV;>s01%nq7GD$os!turGVYH
+pVt&Lrr at WMrVultX8d\~>
+[K$7,JcG?ApIkA`]h=8!rCd/+h>cqQpK!2Fr;c:Zrr at UCfh;)>JP4<^rrD$XP=tiSZV1;udn?J9
+rr at WMU&UY`JcCH(rr at WMn,N7bJP2t8s'>Y9s(M"7j^S6gq-!`.oi_5gqd0)&s%r_\qa9mLs#B[B
+q)J=7q`+OAs$6TSrrE'ds#C$Ss$QfOk=bDIlXK+'rGD(Wq0;junUp_!oDeKDrIaj)qh+X3rIad'
+s+Bp's/#CKqjRD7ooB!>q1J@#q3q>9l]1S*qh*@Xq3o]km=Y?rs+C&j_uK`:JcG]KrrB,"J,~>
+[K$7,JcG?ApIkA`]h at UEqg.^Lo47Mso1nsGpG_n!rDrq6h>b7hj7E6Kq<6T)s/5men*'cOq<7)!
+pZV5)qpG5qqpGG`rR(M^s1A<Nqn)g2s1 at s.nYPcEm>gr at pQ"3bms+SZbBWDkqfq4>rupA$o4%*(
+gLB2Dq-s:<s'j;Tk=bgTdn?J9rr at WMU&Y,mTs+IrJcCH(rr at WMn,N7bJP2t8qsF!rkO&69oulsT
+nbqYCp&4XZoD&@^rrDlks82WUn+2V>oDaC at Jc<jlrNc+q_uK`:JcG]KrrB,"J,~>
+[K$7,JcG?ApTXO*]s.Ite`l2_lgXT=q=jjes8(ROn+2,0rNbnkrr at WLg&CaGJc=!ps0CV`PQ(Nd
+Zi:!1kPjl?U]:>oJcDGDrrAbmrr at WML&_/QJcG3=qZ+=6c+DfOl-\VKq<7jbs/c7!qm?1/q697k
+s1eBLs1 at sDrR(M\q8`Nas3gejn\jbIrR^r#rQkMls31KCs3L`!s2=r`s3fU"lgsAsrTNe!q;)"h
+n^76RoDeL'rR(AZqpG/MrR(;Xs3^GXs0219qn)aQou?sBq9elTq7H[Slc/P.qpEm4q7G%omEtle
+s3^Ss_uK`:JcG]KrrB,"J,~>
+[K$7,JcG?ApIkA`]h=8!rCd/+h>cqQpK!2Fr;c:Zrr at UCfh;)>JP4<^rrD$XP=tiSZV1;udn?J9
+rr at WMU&UY`JcCH(rr at WMn,N7bJP2t8s'>Y9s(M"7j^S6gq-!`.oi_5gqd0)&s%r_\qa9mLs#B[B
+q)J=7q`+OAs$6TSrrE'ds#C$Ss$QfOk=bDIlXK+'rGD(Wq0;junUp_!oDeKDrIaj)qh+X3rIad'
+s+Bp's/#CKqjRD7ooB!>q1J@#q3q>9l]1S*qh*@Xq3o]km=Y?rs+C&j_uK`:JcG]KrrB,"J,~>
+[K$7,JcG?ApIkA`]h at UEqg.^Lo47Mso1nsGpG_n!rDrq6h>b7hj7E6Kq<6T)s/5men*'cOq<7)!
+pZV5)qpG5qqpGG`rR(M^s1A<Nqn)g2s1 at s.nYPcEm>gr at pQ"3bms+SZbBWDkqfq4>rupA$o4%*(
+gLB2Dq-s:<s'j;Tk=bgTdn?J9rr at WMU&Y,mTs+IrJcCH(rr at WMn,N7bJP2t8qsF!rkO&69oulsT
+nbqYCp&4XZoD&@^rrDlks82WUn+2V>oDaC at Jc<jlrNc+q_uK`:JcG]KrrB,"J,~>
+[K$7,JcG?ApTXO*]s.Ite`l2_lgXT=q=jjes8(ROn+2,0rNbnkrr at WLg&CaGJc=!ps0CV`PQ(Nd
+Zi:!1kPjl?U]:>oJcDGDrrAbmrr at WML&_/QJcG3=qZ+=6c+DfOl-\VKq<7jbs/c7!qm?1/q697k
+s1eBLs1 at sDrR(M\q8`Nas3gejn\jbIrR^r#rQkMls31KCs3L`!s2=r`s3fU"lgsAsrTNe!q;)"h
+n^76RoDeL'rR(AZqpG/MrR(;Xs3^GXs0219qn)aQou?sBq9elTq7H[Slc/P.qpEm4q7G%omEtle
+s3^Ss_uK`:JcG]KrrB,"J,~>
+[K$7,JcGKEq+LSbs%E:j^IsP%rCbcBm:(W>m7[HZJP4Tfp]#e;dnB]@j8Y05rrE'lr;a<"rrCM@
+U]:>oJcDGDSH/!Urr at WMScA]iJcGKEq#K/Brr at UCb=hk=s(24Dojm/ns&]5!lWO*[s%iZ$q-3eo
+s&8k`o2#Bmq+1H=pGi17pGi+=s$6Sas$QfGs%iY^hb3cGk at 3n)q/,_UpNZ(XrJpRNs*43srIaj)
+qh+^5q1JL'qh+R%s+C!)rL3J5ooA]tpQ#->qh+9rpR:i/duO6mc]7CFq`"7oJcELbrrB,"J,~>
+[K$7,JcGKEq+LSbs%E:j^J!gGm;MT,o3(`]ogAI4q(2Ohs&T.mfDibfh=LC)iUc0prrDfWl.u<c
+rTNk/q9f5^rS@@urPnlbqo8<@n$)D[n!`X(p](8Rhh16>qh+!Ts)%"FkAC6Dj_b"tj8\LUo535k
+h,aD^rsSj-r<q4XiCj1Ndn?J9rr at WMU&Y,mTs+Irli6tbJcD;@rr at WMp]($hgIqPHJP40ZqsF't
+lg=H7qoe`[p!Wm0nbqqKp\k-Ts6ojYs7bpUrrE#ns8)]kqrm;9PQ(7TJc:6"a8YtAp\oaD^]4<6
+X8d\~>
+[K$7,JcGKEq69a,s02H4^Tdb#e`l2_lgXH9rV-9ifDk70Jc>'9rr at WLfDbOEJc=-trrD*ZO8f0b
+s8Mu&\,QE5n,DG?U]:>oJcDGDrrAbmrrDBbrr at WMScA]iJcGKEq#K0Rs((5qbIcHIjjEJOp#uFb
+s/c7!rNuC1rNPOks1JBHlc/hLrP\NPrR:Yin\k7Ws2=repY,Z!pY,Sls3goIs3L`!s2=r`s2Wgl
+kO\/uq<7FtpYG5arPnO1s5!@frR(AZqpG5Oq9f#XqpG)Vs3^MZrO_gOou?[PpW!*BqpFfNpUg1I
+e&M3qcc5A"qhFk$JcELbrrB,"J,~>
+[K$7,JcGKEq+LSbs%E:j^IsP%rCbcBm:(W>m7[HZJP4Tfp]#e;dnB]@j8Y05rrE'lr;a<"rrCM@
+U]:>oJcDGDSH/!Urr at WMScA]iJcGKEq#K/Brr at UCb=hk=s(24Dojm/ns&]5!lWO*[s%iZ$q-3eo
+s&8k`o2#Bmq+1H=pGi17pGi+=s$6Sas$QfGs%iY^hb3cGk at 3n)q/,_UpNZ(XrJpRNs*43srIaj)
+qh+^5q1JL'qh+R%s+C!)rL3J5ooA]tpQ#->qh+9rpR:i/duO6mc]7CFq`"7oJcELbrrB,"J,~>
+[K$7,JcGKEq+LSbs%E:j^J!gGm;MT,o3(`]ogAI4q(2Ohs&T.mfDibfh=LC)iUc0prrDfWl.u<c
+rTNk/q9f5^rS@@urPnlbqo8<@n$)D[n!`X(p](8Rhh16>qh+!Ts)%"FkAC6Dj_b"tj8\LUo535k
+h,aD^rsSj-r<q4XiCj1Ndn?J9rr at WMU&Y,mTs+Irli6tbJcD;@rr at WMp]($hgIqPHJP40ZqsF't
+lg=H7qoe`[p!Wm0nbqqKp\k-Ts6ojYs7bpUrrE#ns8)]kqrm;9PQ(7TJc:6"a8YtAp\oaD^]4<6
+X8d\~>
+[K$7,JcGKEq69a,s02H4^Tdb#e`l2_lgXH9rV-9ifDk70Jc>'9rr at WLfDbOEJc=-trrD*ZO8f0b
+s8Mu&\,QE5n,DG?U]:>oJcDGDrrAbmrrDBbrr at WMScA]iJcGKEq#K0Rs((5qbIcHIjjEJOp#uFb
+s/c7!rNuC1rNPOks1JBHlc/hLrP\NPrR:Yin\k7Ws2=repY,Z!pY,Sls3goIs3L`!s2=r`s2Wgl
+kO\/uq<7FtpYG5arPnO1s5!@frR(AZqpG5Oq9f#XqpG)Vs3^MZrO_gOou?[PpW!*BqpFfNpUg1I
+e&M3qcc5A"qhFk$JcELbrrB,"J,~>
+[K$7,JcG]Kq+LSbdnBW>k=^jOs%EA-dJon5rrD"NrrCqLrr at UCf1Yf:JP4Tfj8Xs/rrE!jr;_[I
+V>pPqJcDGDSH/'Wr;c*^nGn.?`W,r<JcGWIqZ,)<rr at UCbtJ(?s(1e4j^S6krDW)dqbI)cs%E5n
+qb[5is$QTXrEf:jnMpP+pGi+=s$6Sas$QfGs%iY^s%hHDs&S/hnTaeFpOi'^mt:Y#p&Fu8pQ#'%
+qi:E'rL3J5qi:K)pQ#3)o8`j>pOi4#s*43hooAd!rJphDo8`d<nUo;Nq3oWim=YEts+C8/q07Jj
+_>jN8X8d\~>
+[K$7,JcG]Kq+LSbdnBW>k=bE$s*EpJo47GqohP0IpG_n!r?;26rta#^ao:,frTO9OpZUr7s/5ng
+iTU:ApZUerq9efiqpGA^rS@@uou?a<mBHJarL3\]n!`^*p&F')aa!Vum<If2s'k),j8\@QpMJ_q
+cW:&RrDrk)j&W'NV>pPqJcDGDrrAarrrDHdr;c*^nGn.?`W,r<JcGWIqZ,)<rr at UCbtJ$&o>p7b
+p$Vk'n^%$ZrUBjWnbr4Sp&4FSnbE.[rrE#nqtg9TkOXu<p&BUBjo54aJc=^/s0D\(rNc7uJcERd
+rrB,"J,~>
+[K$7,JcG]Kq69a,e$/d]l*13"dHTWWoC2;ArV-?ks8(.CU&P(tiVrk_hu<WUJc=:#p&BUBfDah1
+M>mO\rVlc$YQ!;JV>pPqJcDGDrrAbmrrDHdr;c*^nGn.?`W,r<JcGWIqZ,*Ls((5qah-6GjjE\U
+oB?4`s/c%'qmcI+mBQ](rP.a>qpGA\q8`B]qp4rRl.Z0npY,Sls3goIs3L`!s2=r`s2<[kj7Dfs
+pZVA!oA/l_s2Oa3rS at 4fq9f)ZpX/rOpX/lXq9erVrR(5Vs1A$QpW!6hp!NHPpX/rZrHn.UrO_UI
+e&M3qcc5A"s+^R$rJ(.(JcERdrrB,"J,~>
+[K$7,JcG]Kq+LSbdnBW>k=^jOs%EA-dJon5rrD"NrrCqLrr at UCf1Yf:JP4Tfj8Xs/rrE!jr;_[I
+V>pPqJcDGDSH/'Wr;c*^nGn.?`W,r<JcGWIqZ,)<rr at UCbtJ(?s(1e4j^S6krDW)dqbI)cs%E5n
+qb[5is$QTXrEf:jnMpP+pGi+=s$6Sas$QfGs%iY^s%hHDs&S/hnTaeFpOi'^mt:Y#p&Fu8pQ#'%
+qi:E'rL3J5qi:K)pQ#3)o8`j>pOi4#s*43hooAd!rJphDo8`d<nUo;Nq3oWim=YEts+C8/q07Jj
+_>jN8X8d\~>
+[K$7,JcG]Kq+LSbdnBW>k=bE$s*EpJo47GqohP0IpG_n!r?;26rta#^ao:,frTO9OpZUr7s/5ng
+iTU:ApZUerq9efiqpGA^rS@@uou?a<mBHJarL3\]n!`^*p&F')aa!Vum<If2s'k),j8\@QpMJ_q
+cW:&RrDrk)j&W'NV>pPqJcDGDrrAarrrDHdr;c*^nGn.?`W,r<JcGWIqZ,)<rr at UCbtJ$&o>p7b
+p$Vk'n^%$ZrUBjWnbr4Sp&4FSnbE.[rrE#nqtg9TkOXu<p&BUBjo54aJc=^/s0D\(rNc7uJcERd
+rrB,"J,~>
+[K$7,JcG]Kq69a,e$/d]l*13"dHTWWoC2;ArV-?ks8(.CU&P(tiVrk_hu<WUJc=:#p&BUBfDah1
+M>mO\rVlc$YQ!;JV>pPqJcDGDrrAbmrrDHdr;c*^nGn.?`W,r<JcGWIqZ,*Ls((5qah-6GjjE\U
+oB?4`s/c%'qmcI+mBQ](rP.a>qpGA\q8`B]qp4rRl.Z0npY,Sls3goIs3L`!s2=r`s2<[kj7Dfs
+pZVA!oA/l_s2Oa3rS at 4fq9f)ZpX/rOpX/lXq9erVrR(5Vs1A$QpW!6hp!NHPpX/rZrHn.UrO_UI
+e&M3qcc5A"s+^R$rJ(.(JcERdrrB,"J,~>
+[K$7,KE(gApAhNmOV[sibQ"2-rrD.RrrCkJrr at UCeP#Z:fh;>FO%]EOqb,uLJP5l5r;_aKVuQbs
+JcDGDSH/-YqZ,m\nGn.?`W,r<KE(`IJP2D(s'>S7ojmH!s&]#*q,?`bqbI)cqb-`]rB:0Zs'G_$
+rEfLps'GXpm5Y,'of2t=s$6Sas$6NBs$QfOf1Y.5pNZ:Hqh+E`m=Y*3qfr!upOiF)on343q1J]+
+s+C91pOi@'q1J@#on3(#rHS!fpQ#8upOhjns*3p`duO6mc&V7Fq/--TpL8^RaoDA at s8W*!X8d\~>
+[K$7,KE(gApAhNmnTsYBnRV5oohP0IpG_n!q]Yu4bQ#idh=LC)s.&oKmIU@?h<=k=pZUero?mBi
+q9f)ZqpG;\rO`*Lqn)g2s1 at a(q5*>EooAj#p]'E/o6C9dfm*1,nTa/4qdT58r?;&Tj8\.KrGCA"
+_,gLBm8fiPVuQbsJcDGDrrAarrrDNfqZ,m\nGn.?`W,r<KE(`IJP2D(qsF'tjmDg1rQFfYqpP6/
+q>L9TrVccgrVccZqu,jSrV-3aqt^6ls7uKeqq^T0PQ(7Tci3sMJc:6"n,E?mp\oaDaoDA at s8W*!
+X8d\~>
+[K$7,KE(hQpLLb;rO^>=kO%m1nal_Rs8L4ATDnkrjo5:ch>[ESJc=4!p]&qGs0@^brNc>"j8X]0
+qu6Q"]Dg4LVuQbsJcDGDrrAbmrrDNfqZ,m\nGn.?`W,r<KE(`IXg$!\h8\@"n_O$)s0M[*qm?71
+os"7ss1J04q7lC<qpGA\qoAN]rOMsSq8E<9s2=0Us5!A%s3L_nrrE)IrS%:ts3fNuj7E$$oB?)!
+n_NT[p&FpFqo8BXrPnNXrO_mQs+^R$rPnTZqo8HZou?[Pq8WBhp!NNRs5!FsmDf1^mEsD&q7Fnk
+n'Usps.&iTJcEjlrrE*!rrB,"J,~>
+[K$7,KE(gApAhNmOV[sibQ"2-rrD.RrrCkJrr at UCeP#Z:fh;>FO%]EOqb,uLJP5l5r;_aKVuQbs
+JcDGDSH/-YqZ,m\nGn.?`W,r<KE(`IJP2D(s'>S7ojmH!s&]#*q,?`bqbI)cqb-`]rB:0Zs'G_$
+rEfLps'GXpm5Y,'of2t=s$6Sas$6NBs$QfOf1Y.5pNZ:Hqh+E`m=Y*3qfr!upOiF)on343q1J]+
+s+C91pOi@'q1J@#on3(#rHS!fpQ#8upOhjns*3p`duO6mc&V7Fq/--TpL8^RaoDA at s8W*!X8d\~>
+[K$7,KE(gApAhNmnTsYBnRV5oohP0IpG_n!q]Yu4bQ#idh=LC)s.&oKmIU@?h<=k=pZUero?mBi
+q9f)ZqpG;\rO`*Lqn)g2s1 at a(q5*>EooAj#p]'E/o6C9dfm*1,nTa/4qdT58r?;&Tj8\.KrGCA"
+_,gLBm8fiPVuQbsJcDGDrrAarrrDNfqZ,m\nGn.?`W,r<KE(`IJP2D(qsF'tjmDg1rQFfYqpP6/
+q>L9TrVccgrVccZqu,jSrV-3aqt^6ls7uKeqq^T0PQ(7Tci3sMJc:6"n,E?mp\oaDaoDA at s8W*!
+X8d\~>
+[K$7,KE(hQpLLb;rO^>=kO%m1nal_Rs8L4ATDnkrjo5:ch>[ESJc=4!p]&qGs0@^brNc>"j8X]0
+qu6Q"]Dg4LVuQbsJcDGDrrAbmrrDNfqZ,m\nGn.?`W,r<KE(`IXg$!\h8\@"n_O$)s0M[*qm?71
+os"7ss1J04q7lC<qpGA\qoAN]rOMsSq8E<9s2=0Us5!A%s3L_nrrE)IrS%:ts3fNuj7E$$oB?)!
+n_NT[p&FpFqo8BXrPnNXrO_mQs+^R$rPnTZqo8HZou?[Pq8WBhp!NNRs5!FsmDf1^mEsD&q7Fnk
+n'Usps.&iTJcEjlrrE*!rrB,"J,~>
+[K$7,M?!HGqZ-LdrrBAuPnsBmrt`TRJP4flrr at UCdnBH8fh;>FM+cn/JP5Z/r;_mOWW2nsJcDGD
+SH/?_o`47Vr;_EK\c;[0M?!GQJP2+us'>S7pLNT!s&]#*pJ_)ps%`5iq+g`YrBU<Xqc!Aus%*/r
+s%)H8rAF7-s$QfOrrE'arAagEs$5%+j^S%1nSS5Wms+ATp&Fc2rJpQ's,Q8ps#9t<on3.%q1JF%
+s*4-frJp\uon3.%rHS!fnW*Qmm=XAX^NeROruqCXq-npTbQ%SBs8W*!X8d\~>
+[K$7,M?!HGqZ-LdrrBAunTseFnRV5oohP0IpG_n!q]Yu4rt`TRe,J1pl0.[/qq^)lrrD`Ul.tmW
+s2OrlqpG/XrR(M^rO`*Lqn)=$s/#[uq5*VMmuI-pp]']7lZiF\h0AI,om#Y:pL<N,j8Zf%fiJ,G
+j&Z*dq,WhTWW2nsJcDGDrrAarrrD`lo`47Vr;_EK\c;[0M?!GQJP2+uqsF.!l0[s-n^%0^rRLT2
+nbrLNrVc!Sp\4^_qt^6lp\O^ArTNkEPQ(7TbPqOIJc:6"n,E9kq>PsFbQ%SBs8W*!X8d\~>
+[K$7,M?!IWrrE".qlp*2\$5hCcfsW[mI9lAs7cQms8'_7Jc=L)rr at WLe,K+Ag&D#WM>lQ8Jc>?A
+rNaKCch%%tWW2nsJcDGDrrAbmrrD`lo`47Vr;_EK\c;[0M?!GQX0BdZfuE("l.u7#s0M[*s0VU3
+q69Iqs1J04pV6aJs3^MZq9f#YrR1Ynqp5/Xs/uC?l.Z*lp"KGls3goIs3gl"s3L_ne,JJ#q;(T)
+rR()in^7%0pYGefp!NfZkL'<as2O`Zqo8HZpW!6ho?mNVq;(_kqo8Tjp!N<LrS?kgiPrXgh<=m/
+s/5\aJcEpnrrE*!rrB,"J,~>
+[K$7,M?!HGqZ-LdrrBAuPnsBmrt`TRJP4flrr at UCdnBH8fh;>FM+cn/JP5Z/r;_mOWW2nsJcDGD
+SH/?_o`47Vr;_EK\c;[0M?!GQJP2+us'>S7pLNT!s&]#*pJ_)ps%`5iq+g`YrBU<Xqc!Aus%*/r
+s%)H8rAF7-s$QfOrrE'arAagEs$5%+j^S%1nSS5Wms+ATp&Fc2rJpQ's,Q8ps#9t<on3.%q1JF%
+s*4-frJp\uon3.%rHS!fnW*Qmm=XAX^NeROruqCXq-npTbQ%SBs8W*!X8d\~>
+[K$7,M?!HGqZ-LdrrBAunTseFnRV5oohP0IpG_n!q]Yu4rt`TRe,J1pl0.[/qq^)lrrD`Ul.tmW
+s2OrlqpG/XrR(M^rO`*Lqn)=$s/#[uq5*VMmuI-pp]']7lZiF\h0AI,om#Y:pL<N,j8Zf%fiJ,G
+j&Z*dq,WhTWW2nsJcDGDrrAarrrD`lo`47Vr;_EK\c;[0M?!GQJP2+uqsF.!l0[s-n^%0^rRLT2
+nbrLNrVc!Sp\4^_qt^6lp\O^ArTNkEPQ(7TbPqOIJc:6"n,E9kq>PsFbQ%SBs8W*!X8d\~>
+[K$7,M?!IWrrE".qlp*2\$5hCcfsW[mI9lAs7cQms8'_7Jc=L)rr at WLe,K+Ag&D#WM>lQ8Jc>?A
+rNaKCch%%tWW2nsJcDGDrrAbmrrD`lo`47Vr;_EK\c;[0M?!GQX0BdZfuE("l.u7#s0M[*s0VU3
+q69Iqs1J04pV6aJs3^MZq9f#YrR1Ynqp5/Xs/uC?l.Z*lp"KGls3goIs3gl"s3L_ne,JJ#q;(T)
+rR()in^7%0pYGefp!NfZkL'<as2O`Zqo8HZpW!6ho?mNVq;(_kqo8Tjp!N<LrS?kgiPrXgh<=m/
+s/5\aJcEpnrrE*!rrB,"J,~>
+[K$7,O8o)MqZ*NeQPTTo^]0Kjr;b/:rr at UCdnBB6JP5f3r;c@\j8X['nOrl^s%E at lO%ZPRr;_EK
+U&UY`p&F[bl2U\^JcE:\rrA,[qZ)1?MbF(Us(245pLNT!s&]#*pJ_)ps%`5iq+g`Yq*=gUpKm)D
+rAF1+s$6Sas$6TAs#C$Ss$QfOd7`Y3rHR^HlZi)ToDeQ0s,Q2ns*4-fs*4-fs,Qi+q2Y>son34'
+q0;RbrJp\upOi.!pNZ(XmuFYtgMQm)s'kq"JcEjlrrB,"J,~>
+[K$7,O8o)MqZ*NenTt(Nm:>fkohP0IpG_n!q]YtTs%C-,fDaOrjlla9rMTVcp"eNhrrD`UkM>[U
+rPnlnq9erVs3^_`qn)m4rO_I$oqh2ImuI-pp&F];`H^]cqfq4>q-s:<s'kS:j8\(Iqc;`dgK+&A
+j];Bhs&T.-O%ZPRr;_EKU&Y,mTs+Irp&F[bl2U\^JcE:\rrA,[qZ)1?MbF$9ouQCboBuSGpWrHZ
+naZ/Jlh:#Gp\=agp%nXCp#u;EPQ(1RJc:6"Zi9p/qu20HaoDA at X8d\~>
+[K$7,O8o*]rrE".Vm-3`e`l8algX`ArV-?k^]0MsrNacKrr at WLe,K%?Jc>KErNbtmj8X]0nc&Qo
+s8N&(dJhJ`n`[%Rr;_EKU&Y,mU&Y,mp&F[bl2U\^JcE:\rrA,[qZ*CqbIcBGmEshIs60Khs/c78
+qm?=3pTX=qs1J04pV6aJs3^MZq9f#Yq9o/dpVc=MrS@)!s3goIs3gr's4[Lks3L_ndJi>#rS?l)
+leV6]oDeR at s2O0Js5!:os5!:os2Of\q8W<fp!N`Xq;(_krPnZhpX/ZRpYG5an&DWggZ\U6s7?3g
+JcEjlrrB,"J,~>
+[K$7,O8o)MqZ*NeQPTTo^]0Kjr;b/:rr at UCdnBB6JP5f3r;c@\j8X['nOrl^s%E at lO%ZPRr;_EK
+U&UY`p&F[bl2U\^JcE:\rrA,[qZ)1?MbF(Us(245pLNT!s&]#*pJ_)ps%`5iq+g`Yq*=gUpKm)D
+rAF1+s$6Sas$6TAs#C$Ss$QfOd7`Y3rHR^HlZi)ToDeQ0s,Q2ns*4-fs*4-fs,Qi+q2Y>son34'
+q0;RbrJp\upOi.!pNZ(XmuFYtgMQm)s'kq"JcEjlrrB,"J,~>
+[K$7,O8o)MqZ*NenTt(Nm:>fkohP0IpG_n!q]YtTs%C-,fDaOrjlla9rMTVcp"eNhrrD`UkM>[U
+rPnlnq9erVs3^_`qn)m4rO_I$oqh2ImuI-pp&F];`H^]cqfq4>q-s:<s'kS:j8\(Iqc;`dgK+&A
+j];Bhs&T.-O%ZPRr;_EKU&Y,mTs+Irp&F[bl2U\^JcE:\rrA,[qZ)1?MbF$9ouQCboBuSGpWrHZ
+naZ/Jlh:#Gp\=agp%nXCp#u;EPQ(1RJc:6"Zi9p/qu20HaoDA at X8d\~>
+[K$7,O8o*]rrE".Vm-3`e`l8algX`ArV-?k^]0MsrNacKrr at WLe,K%?Jc>KErNbtmj8X]0nc&Qo
+s8N&(dJhJ`n`[%Rr;_EKU&Y,mU&Y,mp&F[bl2U\^JcE:\rrA,[qZ*CqbIcBGmEshIs60Khs/c78
+qm?=3pTX=qs1J04pV6aJs3^MZq9f#Yq9o/dpVc=MrS@)!s3goIs3gr's4[Lks3L_ndJi>#rS?l)
+leV6]oDeR at s2O0Js5!:os5!:os2Of\q8W<fp!N`Xq;(_krPnZhpX/ZRpYG5an&DWggZ\U6s7?3g
+JcEjlrrB,"J,~>
+[K$7,PQ1SSqZ-Xhr;a#or;cjjRhl#srt`0FPtV,WbtJ':JP4B`p]#e;ktC(:JP5<%rrE'lr;_sQ
+X8i2"JcDGDSH/'Wr;c*^r;_EK\c;[0QiHj]X%WBkJP4lns'#G6pLO;1lXKlqq-s"qs%`;kpJ1NW
+rBU<As%rYmpKm_fnMpD'o/Qb;rrE!_s#C$Ss$P+*s&S5jlYZ$6s)%L_p&FW.on33fon33fon39h
+jb*Mlq0;L`om$:bs#9s/pNZ@`qi:8mm=Y.nVg.<?q,[M'qZ-LdJcF!prrB,"J,~>
+[K$7,PQ1SSqZ-Xhr;a#or;cjjom5e3o3(Z[pI"[6q(2CdrtbW-rt`0Fhu;=#iTU=5s/5ngn_N*d
+rrD`UkM>[Uq8W<ZmDf%8s02I6n$)VarL3b_nXAp,pOi5?rI_k0l#$HFj_aHqpMJsjiF;O^l!iCJ
+nOqtEs%E at ls%E:jO\;bTrr at WMU&Y,mTqD>bmJm+bl2U\^JcE:\rrADcq#IHgr;_CAhb3q8pW2C^
+oBuYIp!<H^s4-f4rTEMFoChqQoD&=cs7l?bs5!/-OoG%RJc>QGrN_"R]DhW3qu20Hc2[eDX8d\~>
+[K$7,PQ1TcrrE".s02H4YH[t9s01&<kO%[+p[eFZs8N&p\c7ros0BoKrr at WLdJin?Jc=p5j8X]0
+li-pis8Mu&h>YalkNJuHrr at WMU&Y,mU&Y,mmJm+bl2U\^JcE:\rrADcq#IJ"rFGN(bIcZOld=\I
+qrn'hs/c%'s1&*8os"1qs1J04otUOSpVusTq8`H^rOi0ZrQk5Vle;6lo at j5jrrE#Gs4[Lks3L_c
+ci3%tlfd`ls604)p&FX>p!N`op!N`op!NfqjjF%Hq;(Yip"fGks+^Q9pYGMiqo86`mEt[JVqpIu
+q>U2qqu20Hc2[eDX8d\~>
+[K$7,PQ1SSqZ-Xhr;a#or;cjjRhl#srt`0FPtV,WbtJ':JP4B`p]#e;ktC(:JP5<%rrE'lr;_sQ
+X8i2"JcDGDSH/'Wr;c*^r;_EK\c;[0QiHj]X%WBkJP4lns'#G6pLO;1lXKlqq-s"qs%`;kpJ1NW
+rBU<As%rYmpKm_fnMpD'o/Qb;rrE!_s#C$Ss$P+*s&S5jlYZ$6s)%L_p&FW.on33fon33fon39h
+jb*Mlq0;L`om$:bs#9s/pNZ@`qi:8mm=Y.nVg.<?q,[M'qZ-LdJcF!prrB,"J,~>
+[K$7,PQ1SSqZ-Xhr;a#or;cjjom5e3o3(Z[pI"[6q(2CdrtbW-rt`0Fhu;=#iTU=5s/5ngn_N*d
+rrD`UkM>[Uq8W<ZmDf%8s02I6n$)VarL3b_nXAp,pOi5?rI_k0l#$HFj_aHqpMJsjiF;O^l!iCJ
+nOqtEs%E at ls%E:jO\;bTrr at WMU&Y,mTqD>bmJm+bl2U\^JcE:\rrADcq#IHgr;_CAhb3q8pW2C^
+oBuYIp!<H^s4-f4rTEMFoChqQoD&=cs7l?bs5!/-OoG%RJc>QGrN_"R]DhW3qu20Hc2[eDX8d\~>
+[K$7,PQ1TcrrE".s02H4YH[t9s01&<kO%[+p[eFZs8N&p\c7ros0BoKrr at WLdJin?Jc=p5j8X]0
+li-pis8Mu&h>YalkNJuHrr at WMU&Y,mU&Y,mmJm+bl2U\^JcE:\rrADcq#IJ"rFGN(bIcZOld=\I
+qrn'hs/c%'s1&*8os"1qs1J04otUOSpVusTq8`H^rOi0ZrQk5Vle;6lo at j5jrrE#Gs4[Lks3L_c
+ci3%tlfd`ls604)p&FX>p!N`op!N`op!NfqjjF%Hq;(Yip"fGks+^Q9pYGMiqo86`mEt[JVqpIu
+q>U2qqu20Hc2[eDX8d\~>
+[K$7,RK*:[q#I$[SJM5uZi?dnrrDX`rrCA<rrDddq>Z"=iCiqFcV+9<ThFMIJP4lnr;`*UX8i2"
+JcDMFRfMjUr;c*^rrE*!pAfdE_uK`:S,`?cJP1Pes%EAqs(1q8l!jTmqdT:us%*/bpK@/arCd/U
+pJCfes%iMus$crBq+16>pGMP%rrE!_s#'g9s$QfOdnBL;k at 3aonTaqJqh+SAo6C:Pon3-dq1JQh
+pOi?fq1J]+rGD4[s,QbspOiK_om$:brGD4PpOiL+m<J#NSTsmGj];=Qr;cdhec5XLJcG]KrrB,"
+J,~>
+[K$7,RK*:[q#I$[hdl7[ohP6KpG_n!q]YnRs%B]ujo3m'l0//;p#uG3s,lj-hrt(?pZVGQleV0[
+ou?sXou?sBs2OlHrNQ=6n$)\cl'h($pOi5?cZoI at om#S8s'k/.lXKa.jo>?]j'qOZmpb$PlV$VG
+nOrf\PtS1Xrr at WMU]9ue[@d$jmJm+bl2Ub`s8VfnJcEXfrrAPgqZ)1?JP6#9rU'@#kO%a+s6oR*
+s3g_nqsj:Vs7?'bs6'4VqtB^WnbE+as7lKerVG^@RJumZ\c2W7Jc:6"nc&KmrVk at Irr@WMrVult
+X8d\~>
+[K$7,RK*;kqZ-Y,UTj^/fBMJcmI9lAs7cQmZi?g"s0D7qs0BuMrrDfmq>Z$FiVrTOci3sMU&O0R
+Jc=R+rNbVcdIZ8ZX8i2"JcDMFo`2E"o)S1Xr;c*^rrE*!pAfdE_uK`:S,`?cRBXrJfuE4&l.u$r
+s0r$0s0VU3q69CorOi$4pV6aOs3^S\p!N`Ys3gYjrQk;Xs5*don(RNlo at j3ErR1`%s4[M!s3f*i
+kO\$'n_O*+qpG*:oA0H1p!NZmq9f)qpX/loq9f4srTNq%s2O`fpX0$)p"fGkrTNq1pX0#\mG70W
+S_a&(iVre]rVk at Irr@WMrVultX8d\~>
+[K$7,RK*:[q#I$[SJM5uZi?dnrrDX`rrCA<rrDddq>Z"=iCiqFcV+9<ThFMIJP4lnr;`*UX8i2"
+JcDMFRfMjUr;c*^rrE*!pAfdE_uK`:S,`?cJP1Pes%EAqs(1q8l!jTmqdT:us%*/bpK@/arCd/U
+pJCfes%iMus$crBq+16>pGMP%rrE!_s#'g9s$QfOdnBL;k at 3aonTaqJqh+SAo6C:Pon3-dq1JQh
+pOi?fq1J]+rGD4[s,QbspOiK_om$:brGD4PpOiL+m<J#NSTsmGj];=Qr;cdhec5XLJcG]KrrB,"
+J,~>
+[K$7,RK*:[q#I$[hdl7[ohP6KpG_n!q]YnRs%B]ujo3m'l0//;p#uG3s,lj-hrt(?pZVGQleV0[
+ou?sXou?sBs2OlHrNQ=6n$)\cl'h($pOi5?cZoI at om#S8s'k/.lXKa.jo>?]j'qOZmpb$PlV$VG
+nOrf\PtS1Xrr at WMU]9ue[@d$jmJm+bl2Ub`s8VfnJcEXfrrAPgqZ)1?JP6#9rU'@#kO%a+s6oR*
+s3g_nqsj:Vs7?'bs6'4VqtB^WnbE+as7lKerVG^@RJumZ\c2W7Jc:6"nc&KmrVk at Irr@WMrVult
+X8d\~>
+[K$7,RK*;kqZ-Y,UTj^/fBMJcmI9lAs7cQmZi?g"s0D7qs0BuMrrDfmq>Z$FiVrTOci3sMU&O0R
+Jc=R+rNbVcdIZ8ZX8i2"JcDMFo`2E"o)S1Xr;c*^rrE*!pAfdE_uK`:S,`?cRBXrJfuE4&l.u$r
+s0r$0s0VU3q69CorOi$4pV6aOs3^S\p!N`Ys3gYjrQk;Xs5*don(RNlo at j3ErR1`%s4[M!s3f*i
+kO\$'n_O*+qpG*:oA0H1p!NZmq9f)qpX/loq9f4srTNq%s2O`fpX0$)p"fGkrTNq1pX0#\mG70W
+S_a&(iVre]rVk at Irr@WMrVultX8d\~>
+[K$7,TE"papAg[UUDEl&X8f(jrrBr0qu?ZrhuA7#nOrQTcV+9<_+X_,lV$:<JP4Zhr;b5<rrC/6
+XoJD$JcDGDSH/'Wr;c0`mf7q=`W,r<U&XuiJP1Peq+LZiq.0M3lXK`mrF5e.pJ_#]pK@/arEJqk
+rBpHXs'G^os%*/EpIP0 at pGMP%rrE!_s#'g9s$QfOeP#L7l!isqo6C.Lqh+SAs)%LTqec.]q0;dh
+pNZRfq0;^fs)%cZs)%@[om$:brGD4Pqh+c_om$4`lZi#Rqe`H[mpasNrCd.jrCbcBrr at WMrVult
+X8d\~>
+[K$7,TE"papAg[Ul"'6co1o$IpG_n!q]YnRs%BEmn,Cf-kNMr9pZUerkNMgCrrCsVqq^eiji6u*
+n$)\cs02Bso:#Q:s-i>8q1JA?kBQl at ms+j`qfq4>qdSl.s'kpBm:-*4j8]'Yk at 3gZo4$NVj\,2G
+k=baRd7aK>a\/c9rr at WMU&Y,mTqD>bmJm+bli6DRJcE^hrrAbmqZ)1?JP5f3rU'F%l0\$/p[A"*
+p!Wfhnbr4Rqu-QXp\jj\mJ-\]p%eX8l0/*;Sc8<^\,QE5Jc:6"oD\^[s/5hefDkjNJcG]KrrB,"
+J,~>
+[K$7,TE"qqqZ-S*UTjR+h<EhaoC2SIs7cQmX8f*ss0BQAqu?ZrhuA9,nc&4]ci3sM_>aD=li,rE
+Jc=@%rNc%oht-lGp%-_tXoJD$JcDGDrrAbmrrDHdr;c0`mf7q=`W,r<U&XuiRBXZBf>d.(n(mHr
+rO;[2s1&*8pTX=qqn2m4s1J*@rQFrTp!N`Yp!`lcq8E<is4[Lkn_3`no at j3ErR1`%s4[M!s3ese
+l1=6)oA0<-qpG*:s6045qrmk'q;(qqpYG_oq;(kos60KQs60(%p"fGkrTNq1qpG<)p"fAileV0[
+qrk0<n+5*/s0DV&fDkjNJcG]KrrB,"J,~>
+[K$7,TE"papAg[UUDEl&X8f(jrrBr0qu?ZrhuA7#nOrQTcV+9<_+X_,lV$:<JP4Zhr;b5<rrC/6
+XoJD$JcDGDSH/'Wr;c0`mf7q=`W,r<U&XuiJP1Peq+LZiq.0M3lXK`mrF5e.pJ_#]pK@/arEJqk
+rBpHXs'G^os%*/EpIP0 at pGMP%rrE!_s#'g9s$QfOeP#L7l!isqo6C.Lqh+SAs)%LTqec.]q0;dh
+pNZRfq0;^fs)%cZs)%@[om$:brGD4Pqh+c_om$4`lZi#Rqe`H[mpasNrCd.jrCbcBrr at WMrVult
+X8d\~>
+[K$7,TE"papAg[Ul"'6co1o$IpG_n!q]YnRs%BEmn,Cf-kNMr9pZUerkNMgCrrCsVqq^eiji6u*
+n$)\cs02Bso:#Q:s-i>8q1JA?kBQl at ms+j`qfq4>qdSl.s'kpBm:-*4j8]'Yk at 3gZo4$NVj\,2G
+k=baRd7aK>a\/c9rr at WMU&Y,mTqD>bmJm+bli6DRJcE^hrrAbmqZ)1?JP5f3rU'F%l0\$/p[A"*
+p!Wfhnbr4Rqu-QXp\jj\mJ-\]p%eX8l0/*;Sc8<^\,QE5Jc:6"oD\^[s/5hefDkjNJcG]KrrB,"
+J,~>
+[K$7,TE"qqqZ-S*UTjR+h<EhaoC2SIs7cQmX8f*ss0BQAqu?ZrhuA9,nc&4]ci3sM_>aD=li,rE
+Jc=@%rNc%oht-lGp%-_tXoJD$JcDGDrrAbmrrDHdr;c0`mf7q=`W,r<U&XuiRBXZBf>d.(n(mHr
+rO;[2s1&*8pTX=qqn2m4s1J*@rQFrTp!N`Yp!`lcq8E<is4[Lkn_3`no at j3ErR1`%s4[M!s3ese
+l1=6)oA0<-qpG*:s6045qrmk'q;(qqpYG_oq;(kos60KQs60(%p"fGkrTNq1qpG<)p"fAileV0[
+qrk0<n+5*/s0DV&fDkjNJcG]KrrB,"J,~>
+[K$7,V>pQgqZ)gQV&')(VuM<@mn<9PrrC[NJP5`1p]#e;pIjQHJP4HbqZ,/>rrC)4YQ+V&JcDGD
+SH/'Wr;c0`r;cTlqZ)3Ia8c/>VuQVoJP1Peoh5<gs(245q.0M3lXK`mrF5FurCHreq-!SirAXb/
+rEK.qq*=sIqbR5Os#'79oel>#rrE!_rAFUBs$51/moJ[^m;;l4pNZFLs+C"ErGD:Rq/-(_om$Ff
+pNZXhom$@dq/,kYs)%@PrIao_s*4Jnqfr-npMKYLqh+c_lZi5Xokhlsd:23<nOrf\rC__Aec5XL
+X8d\~>
+[K$7,V>pQgqZ)gQmptfgo1o$IpG_n!q]YhPs%B9i`UhjJj5'1foDegjfDkHin](U at pVug:n$)\c
+s-ih]o:#K8jb*=-lZi)>m<I`0oj[H.j^R9MpK$Zjk>qCfh,`E+qc;TIqZ,/>rrC)4YQ+V&JcDGD
+rrAabrrDHdr;c0`r;cTlqZ)3Ia8c/>VuQVoJP1Peoh58NpW2I`oBuAArQk5drNcJ&p\k']nal5J
+s7bjSs7uZpp%eR6s5!/-p[b0Zp&BgHrN_"RXo at k^rMTVcJcF:#rrB,"J,~>
+[K$7,V>pS"qZ*%gqn(DCl0\05p[eFOs7</gJc>-;oDegjfDgF$p\speJc>ECj8X]0e,K6MrVkLA
+s/5hebNQ/0rr at WMU&Y,mU&Y,mmJm+bli6n`p](*jJcEdjrrAtsqZ)te]t<+?n'U7Qp#uFbs/c78
+qm?C5s0MC&pTaV.rNZ%1rQG5Uq8W<ZrJ(@"rQ"faq9o;hqo&Ngs5!.tp"f5nrrE#GrS at M"s3emc
+l1=<+s7?!@pZVY)p&G!SpYGZ/rR(;orR(AqrR(;oqpG6'pX0$)oA0Amq<7k7rK7!5s3^T)pYG_o
+qrmA%q9em!bMCS;ec,NQrVhBJec5XLX8d\~>
+[K$7,V>pQgqZ)gQV&')(VuM<@mn<9PrrC[NJP5`1p]#e;pIjQHJP4HbqZ,/>rrC)4YQ+V&JcDGD
+SH/'Wr;c0`r;cTlqZ)3Ia8c/>VuQVoJP1Peoh5<gs(245q.0M3lXK`mrF5FurCHreq-!SirAXb/
+rEK.qq*=sIqbR5Os#'79oel>#rrE!_rAFUBs$51/moJ[^m;;l4pNZFLs+C"ErGD:Rq/-(_om$Ff
+pNZXhom$@dq/,kYs)%@PrIao_s*4Jnqfr-npMKYLqh+c_lZi5Xokhlsd:23<nOrf\rC__Aec5XL
+X8d\~>
+[K$7,V>pQgqZ)gQmptfgo1o$IpG_n!q]YhPs%B9i`UhjJj5'1foDegjfDkHin](U at pVug:n$)\c
+s-ih]o:#K8jb*=-lZi)>m<I`0oj[H.j^R9MpK$Zjk>qCfh,`E+qc;TIqZ,/>rrC)4YQ+V&JcDGD
+rrAabrrDHdr;c0`r;cTlqZ)3Ia8c/>VuQVoJP1Peoh58NpW2I`oBuAArQk5drNcJ&p\k']nal5J
+s7bjSs7uZpp%eR6s5!/-p[b0Zp&BgHrN_"RXo at k^rMTVcJcF:#rrB,"J,~>
+[K$7,V>pS"qZ*%gqn(DCl0\05p[eFOs7</gJc>-;oDegjfDgF$p\speJc>ECj8X]0e,K6MrVkLA
+s/5hebNQ/0rr at WMU&Y,mU&Y,mmJm+bli6n`p](*jJcEdjrrAtsqZ)te]t<+?n'U7Qp#uFbs/c78
+qm?C5s0MC&pTaV.rNZ%1rQG5Uq8W<ZrJ(@"rQ"faq9o;hqo&Ngs5!.tp"f5nrrE#GrS at M"s3emc
+l1=<+s7?!@pZVY)p&G!SpYGZ/rR(;orR(AqrR(;oqpG6'pX0$)oA0Amq<7k7rK7!5s3^T)pYG_o
+qrmA%q9em!bMCS;ec,NQrVhBJec5XLX8d\~>
+[K$7,X8i2mqZ)[MnJ;'']b^W at TDuGpr;af0li6tbci8PhrCcnbT1f+_iCi;4JP46\rrE'lr;`B]
+YQ+V&JcDGDSH/'Wr;bUPr;_EKa8c/>XoJ7uK1l4EJP5H)s'#G6s&o50rEef!q,dT*oi(`Yq-!_m
+on39Ks%rARs$QZZrAFI3ognsKq_dt)rrE!_rAFO at s$571lW3=\mqr#4qfqdNp&Fi)qfqjPrIacf
+s+Bofs+BuhrIai]q1JQ]om$LhpMKSJokjAHs+C,alZiG^mqpm*]jgS6j%K7Ls%@qCfDkjNX8d\~>
+[K$7,X8i2mqZ)[MqdfG(rBp0Zo1o$IpG_n!q]YhPs%B!abOb2drLEEAh;.njli6tbci<ggo>^[>
+q8W<DrNQ=6os"Imqlosol^IX0jb*=-lZi)>o6B;4o4%T6r?;,Vj^R?Oo2b<hj];=hh,^dRrrE'l
+r;`B]YQ+V&JcDGDrrAabrrDHdr;bUPr;_EKa8c/>XoJ7uK1l4EJP5H)rU'F%j6cC)q=".*s3gT>
+rVcE[naleQn,;eOrV?HnoD/4<p#tr;WW)SjJc:6"\c1X\s/5gXs4r8+fDkjNX8d\~>
+[K$7,X8i4(qZ)b_s1 at gcrR:/ukO%s3q=FXQs8JYj\c2Q5`W#3'rrCCFJc>WIp]$lbrNbD]jo9o2
+c2RaKs7?2eg%32HYQ+V&JcDGDrrAbmrrDHdr;bUPr;_EKa8c/>XoJ7uNNi/hs)6Auh8\R(l.u$r
+s0r$0s1eH at rNl=(o<J,(s0;73qoefTo?mTYs3pYhs3LS\rS?qrqqh5+o at j3ErR1Z#rQkMl_uAun
+n*'`Aqq^r/p&FjOqq_#1rR(;os3^Gos3^MqrR(B'q9f*'p"fYqpZV;+p#u))s3^Z+leVTgn*&T`
+^%9eRqm-8$JcF@%rrB,"J,~>
+[K$7,X8i2mqZ)[MnJ;'']b^W at TDuGpr;af0li6tbci8PhrCcnbT1f+_iCi;4JP46\rrE'lr;`B]
+YQ+V&JcDGDSH/'Wr;bUPr;_EKa8c/>XoJ7uK1l4EJP5H)s'#G6s&o50rEef!q,dT*oi(`Yq-!_m
+on39Ks%rARs$QZZrAFI3ognsKq_dt)rrE!_rAFO at s$571lW3=\mqr#4qfqdNp&Fi)qfqjPrIacf
+s+Bofs+BuhrIai]q1JQ]om$LhpMKSJokjAHs+C,alZiG^mqpm*]jgS6j%K7Ls%@qCfDkjNX8d\~>
+[K$7,X8i2mqZ)[MqdfG(rBp0Zo1o$IpG_n!q]YhPs%B!abOb2drLEEAh;.njli6tbci<ggo>^[>
+q8W<DrNQ=6os"Imqlosol^IX0jb*=-lZi)>o6B;4o4%T6r?;,Vj^R?Oo2b<hj];=hh,^dRrrE'l
+r;`B]YQ+V&JcDGDrrAabrrDHdr;bUPr;_EKa8c/>XoJ7uK1l4EJP5H)rU'F%j6cC)q=".*s3gT>
+rVcE[naleQn,;eOrV?HnoD/4<p#tr;WW)SjJc:6"\c1X\s/5gXs4r8+fDkjNX8d\~>
+[K$7,X8i4(qZ)b_s1 at gcrR:/ukO%s3q=FXQs8JYj\c2Q5`W#3'rrCCFJc>WIp]$lbrNbD]jo9o2
+c2RaKs7?2eg%32HYQ+V&JcDGDrrAbmrrDHdr;bUPr;_EKa8c/>XoJ7uNNi/hs)6Auh8\R(l.u$r
+s0r$0s1eH at rNl=(o<J,(s0;73qoefTo?mTYs3pYhs3LS\rS?qrqqh5+o at j3ErR1Z#rQkMl_uAun
+n*'`Aqq^r/p&FjOqq_#1rR(;os3^Gos3^MqrR(B'q9f*'p"fYqpZV;+p#u))s3^Z+leVTgn*&T`
+^%9eRqm-8$JcF@%rrB,"J,~>
+[K$7,Z2aV"s%E:jO\;_jRK&+:r;cXdkPtP^ao?udp&E!(rrBf,j8X['_b9q.T1cHhrr at WMU&UY`
+mJm+bg].3PJcEdjrrBJ,q#Gt=qb-qhJP5N+rEB5(qdfY3lXKZks'kY"rCHrSs%NGqs,Q]'s%`Se
+o0E7ArD3;Jq)J1 at pI5$<of2sOrBU6;s$QfMfh:R1l!j=&q-s;IokjC%pMKqTo54)Ds)$e at okjSY
+q/,kNs"+0cokjMLnSS)Hs'kY<ms+kAlYYm2ZXVBVrrE'lr;cjjJcFX-rrE*!rrB,"J,~>
+[K$7,Z2aV"s%E:jO\=e=nP8gGpG_n!q]YbNRK(V)gZ[VPrK7'7rTNGErrC1 at s3^AVq7HUFq7H+"
+rMBOuqka+WrJpW at pQ"Ehp&F?&pMKYLmqr(JpMK;,q/,5&j8\RKojZl\s%D<OUJ(OcT1cHhrr at WM
+U&Y,mTqD>bmJm+bg].3PJcEdjrrBJ,q#Gt=qb-qhJP5N+rU'F%l0\$/p$_kCs3L67s4.#:oCD_K
+p[mqQq=sd]rrD`fs8DQFrTNS=XoA"nQ2^`fJc;_LkO\N*s,m?;rK7-9JcFX-rrE*!rrB,"J,~>
+[K$7,Z2aV"s02H4Qa$A!gZdtip$heKs7cQ[RK&-CrNc7ukPtP^ao@"mp&E#1s0BE=j8X]0ci3V/
+rMScK]BHO"rr at WMU&Y,mU&Y,mmJm+bg].3PJcEdjrrBJ,q#H8Uo=P$@gUl:]hpLoKn*'_Zs1eT@
+rODg4qloUqq7Qa4otUIKs2=rJrPnBTs2X`ZrQkG\qq^erpYPl)p"KEGrR1T!s3L_l_>`]jp#u5C
+rS@/1p&FdMs5!;1oA0H1j5'ClqpG6'pYGk3s/5PRq;(T)q;))Bp#tl#s7>R?l.r];e,KBQs8Mu&
+s8ITLhuE]Vs8W*!X8d\~>
+[K$7,Z2aV"s%E:jO\;_jRK&+:r;cXdkPtP^ao?udp&E!(rrBf,j8X['_b9q.T1cHhrr at WMU&UY`
+mJm+bg].3PJcEdjrrBJ,q#Gt=qb-qhJP5N+rEB5(qdfY3lXKZks'kY"rCHrSs%NGqs,Q]'s%`Se
+o0E7ArD3;Jq)J1 at pI5$<of2sOrBU6;s$QfMfh:R1l!j=&q-s;IokjC%pMKqTo54)Ds)$e at okjSY
+q/,kNs"+0cokjMLnSS)Hs'kY<ms+kAlYYm2ZXVBVrrE'lr;cjjJcFX-rrE*!rrB,"J,~>
+[K$7,Z2aV"s%E:jO\=e=nP8gGpG_n!q]YbNRK(V)gZ[VPrK7'7rTNGErrC1 at s3^AVq7HUFq7H+"
+rMBOuqka+WrJpW at pQ"Ehp&F?&pMKYLmqr(JpMK;,q/,5&j8\RKojZl\s%D<OUJ(OcT1cHhrr at WM
+U&Y,mTqD>bmJm+bg].3PJcEdjrrBJ,q#Gt=qb-qhJP5N+rU'F%l0\$/p$_kCs3L67s4.#:oCD_K
+p[mqQq=sd]rrD`fs8DQFrTNS=XoA"nQ2^`fJc;_LkO\N*s,m?;rK7-9JcFX-rrE*!rrB,"J,~>
+[K$7,Z2aV"s02H4Qa$A!gZdtip$heKs7cQ[RK&-CrNc7ukPtP^ao@"mp&E#1s0BE=j8X]0ci3V/
+rMScK]BHO"rr at WMU&Y,mU&Y,mmJm+bg].3PJcEdjrrBJ,q#H8Uo=P$@gUl:]hpLoKn*'_Zs1eT@
+rODg4qloUqq7Qa4otUIKs2=rJrPnBTs2X`ZrQkG\qq^erpYPl)p"KEGrR1T!s3L_l_>`]jp#u5C
+rS@/1p&FdMs5!;1oA0H1j5'ClqpG6'pYGk3s/5PRq;(T)q;))Bp#tl#s7>R?l.r];e,KBQs8Mu&
+s8ITLhuE]Vs8W*!X8d\~>
+[K$7,\,Z=*KhJTbOoNNrrrBf,iW&oX_uGKbp]&-(rrDL\rrC_Fj8X[']1`)&ThDfnr;_EKU&UY`
+mJm+bg].3PJcG?Aq#K7NrrB\2qZ)1?JP4rps'#G*qdfS1lXKZks'kY"rCHrjs'u"fq1JK<s$QBC
+rBpT\s#Bm5of2tBr@[b3of2sOs#'gAq_eC at s#&D$k>ptZs&Sr4oj[T2p&F]%s*43RrF5GEs)%FR
+rGD4Ps'kS:s+C8er?;,Vq0;jIokjYPm;;`FqdT;:o6C(?m;;H>\RN0Dr;_EKiW&oXs8W*!X8d\~>
+[K$7,\,Z=*KhLf9mnWOCpG_n!q]YbNOoO&)oB?4El0-aTiW&oX_uKDLot17Dqn)a0rMB7moqhJQ
+pQ#3 at q2XQhp]'Q(okjYPl#$GDrGD.8rtbE>rGCY*j8\FGq-r;`qb-$ORnN\[ThDfnr;_EKU&Y,m
+TqD>bmJm+bg].3PJcG?Aq#K7NrrB\2qZ)1?JP4rps6]X'j6cI+p[A(Zp&>!>q:5B4oCDqQn+?YY
+rTEkPs7l?arrDfhrVH!=l1;1Zp&CfdrN_"RRJugLkM?/brr at WMiW&oXs8W*!X8d\~>
+[K$7,\,Z=*O0JAjhs'=kp$heKs6PmJao;=G^]*3lrrBt:L]7&J_uB\An,E?mg&C%3Jc=-tl1=kO
+naj$L[K$1*JcDGDrrAbmrrDHdr;bUPr;_EKoDeUdh>dKT]Dqa.LTnn4fuE.$jk]Ols0r$Cqm?C/
+rNl7&os+>*s0;73qof#SrPnBTs4m4orQkM^s4[A+o at j/`p"oAqrrE)Ts3gf#s3L`$^&IEjs8MiX
+p%.k?p&F^Ks5!A3rU]^<s60.3rTNq1s7>jGs3^f/rLEiMq;)#@p#uA1mHFH'qt'RGoA066mHF/t
+\b!H4s0DY)JcF^/rrE*!rrB,"J,~>
+[K$7,\,Z=*KhJTbOoNNrrrBf,iW&oX_uGKbp]&-(rrDL\rrC_Fj8X[']1`)&ThDfnr;_EKU&UY`
+mJm+bg].3PJcG?Aq#K7NrrB\2qZ)1?JP4rps'#G*qdfS1lXKZks'kY"rCHrjs'u"fq1JK<s$QBC
+rBpT\s#Bm5of2tBr@[b3of2sOs#'gAq_eC at s#&D$k>ptZs&Sr4oj[T2p&F]%s*43RrF5GEs)%FR
+rGD4Ps'kS:s+C8er?;,Vq0;jIokjYPm;;`FqdT;:o6C(?m;;H>\RN0Dr;_EKiW&oXs8W*!X8d\~>
+[K$7,\,Z=*KhLf9mnWOCpG_n!q]YbNOoO&)oB?4El0-aTiW&oX_uKDLot17Dqn)a0rMB7moqhJQ
+pQ#3 at q2XQhp]'Q(okjYPl#$GDrGD.8rtbE>rGCY*j8\FGq-r;`qb-$ORnN\[ThDfnr;_EKU&Y,m
+TqD>bmJm+bg].3PJcG?Aq#K7NrrB\2qZ)1?JP4rps6]X'j6cI+p[A(Zp&>!>q:5B4oCDqQn+?YY
+rTEkPs7l?arrDfhrVH!=l1;1Zp&CfdrN_"RRJugLkM?/brr at WMiW&oXs8W*!X8d\~>
+[K$7,\,Z=*O0JAjhs'=kp$heKs6PmJao;=G^]*3lrrBt:L]7&J_uB\An,E?mg&C%3Jc=-tl1=kO
+naj$L[K$1*JcDGDrrAbmrrDHdr;bUPr;_EKoDeUdh>dKT]Dqa.LTnn4fuE.$jk]Ols0r$Cqm?C/
+rNl7&os+>*s0;73qof#SrPnBTs4m4orQkM^s4[A+o at j/`p"oAqrrE)Ts3gf#s3L`$^&IEjs8MiX
+p%.k?p&F^Ks5!A3rU]^<s60.3rTNq1s7>jGs3^f/rLEiMq;)#@p#uA1mHFH'qt'RGoA066mHF/t
+\b!H4s0DY)JcF^/rrE*!rrB,"J,~>
+[K$7,^&Rg,KhJ`fs%A at Ob=hj8_+WVarrBh6M+dUCZV1;ufh:H,JP3=Br;`Tc\,ZC,JcDGDSH/'W
+r;c0`r;cNjr;_EKp&F[bhuE]V_>jB4JP1Peh+RcDs'#G*qdfS1lXKZks'k_$q,mT*s,R,3o1o<Q
+nNd+As%iYSq_dt)s#'C:rCH`DrrE'Vs$6H=s$QfDdnAq+nRDArrGD(6q/,g)o54M:okjY:pNZRP
+q0;dRpNZREkAC*@q-r/spL<f4q0;RAlYZNDrDpmHWD!0iJcF^/rrB,"J,~>
+[K$7,^&Rg,KhM)AlV at +?pG_n!q]YbNs%A at Og[jt!s.&E=fA59_rrBh6q8W$<s02C4qlosoqloso
+rL3\]qjR&8qh+p/l\#(Zp]'Q(fkp7grta9sjo=FCs'jqfoh4UOP=tiSUJ&)rr;_EKU&Y,mTqD>b
+mJm+bli6n`p&FsjJcGECo`3nLrrBn8qZ)1?JP4flrU'F%j6c='p&4jgp!WfhnacGGn+?)Iq>($j
+qt^'aleUgs\,Q(#Jc:6"Zi:!rq<75%ou?q1JcF^/rrB,"J,~>
+[K$7,^&Rs0rFD%pot02Il0\05q=FXQs7;6MbPqOI_>`9jrrBh6M>m8LZi:!1g&C+5Jc=4!ht-fE
+qt$fN\,ZC,JcDGDrrAbmrrDHdr;c0`r;cNjr;_EKp&F[bhuE]V_>jB4LTnP*fuE.$kM>mrs2+fF
+s1eT at rODa2q69Iqq7Qa4pV6OIrP/BPn^7Bln^@H`s2=rkqq^kts5!;'p"KEGs5!_'qq_:us4t<d
+nalYWrTNeCq<7MOoB?5Gp#uAGpYG`1q;(r3pYG`<kNMg!q=EG+p[e(Aq;(`8lfe6%rVje-WW)hr
+JcF^/rrB,"J,~>
+[K$7,^&Rg,KhJ`fs%A at Ob=hj8_+WVarrBh6M+dUCZV1;ufh:H,JP3=Br;`Tc\,ZC,JcDGDSH/'W
+r;c0`r;cNjr;_EKp&F[bhuE]V_>jB4JP1Peh+RcDs'#G*qdfS1lXKZks'k_$q,mT*s,R,3o1o<Q
+nNd+As%iYSq_dt)s#'C:rCH`DrrE'Vs$6H=s$QfDdnAq+nRDArrGD(6q/,g)o54M:okjY:pNZRP
+q0;dRpNZREkAC*@q-r/spL<f4q0;RAlYZNDrDpmHWD!0iJcF^/rrB,"J,~>
+[K$7,^&Rg,KhM)AlV at +?pG_n!q]YbNs%A at Og[jt!s.&E=fA59_rrBh6q8W$<s02C4qlosoqloso
+rL3\]qjR&8qh+p/l\#(Zp]'Q(fkp7grta9sjo=FCs'jqfoh4UOP=tiSUJ&)rr;_EKU&Y,mTqD>b
+mJm+bli6n`p&FsjJcGECo`3nLrrBn8qZ)1?JP4flrU'F%j6c='p&4jgp!WfhnacGGn+?)Iq>($j
+qt^'aleUgs\,Q(#Jc:6"Zi:!rq<75%ou?q1JcF^/rrB,"J,~>
+[K$7,^&Rs0rFD%pot02Il0\05q=FXQs7;6MbPqOI_>`9jrrBh6M>m8LZi:!1g&C+5Jc=4!ht-fE
+qt$fN\,ZC,JcDGDrrAbmrrDHdr;c0`r;cNjr;_EKp&F[bhuE]V_>jB4LTnP*fuE.$kM>mrs2+fF
+s1eT at rODa2q69Iqq7Qa4pV6OIrP/BPn^7Bln^@H`s2=rkqq^kts5!;'p"KEGs5!_'qq_:us4t<d
+nalYWrTNeCq<7MOoB?5Gp#uAGpYG`1q;(r3pYG`<kNMg!q=EG+p[e(Aq;(`8lfe6%rVje-WW)hr
+JcF^/rrB,"J,~>
+[K$7,`W,`6JP5r7fbXSfi>2GdL&[9.fDkjN\c7^`p&C(Gjo9m)YtP#qs%E:jVb=Gtrr at WMU&UY`
+mJm+bli6h^q>^BnJcGECr;cZnr;bgVrrC+>qZ)1?JP4TfrEB5(rFGe3l!jBgrCm)uq,mT*s&nke
+s$Q<As$Qf^q).h)q).n8q+1HDrrE'Vs$6B;s$4n'lW3[fpK%<2mpc64oDeK#qdTA<q-s5GpMKeP
+q/,qPqdT;:rF5_Br?;&Ts*49IpMKq>lYZ6&pMKkRmpba&oiBUPPtV,WJcFd1rrB,"J,~>
+[K$7,`W,`6JP5r7j\GJ9s"*n'q(2=bq\K3)L&^3)fBCoDfDkjN\c;WJo=Ot*s1A04pSIhmqka1Y
+s,QuFo8`9lms+O*m<IH(a("01_cH5!nQ(cFr;cjjr;``g[K$7,JcDGDrrAaRrrDHdr;c0`qZ-Hl
+r;_EKp&Fsjq>^BniW&oXa8c#:JP1Pef1Z)0qoIsfoBuS at n,;e)rRLN1nalMIq=X4TrV?HnrV?3a
+leVO'l1;UfoDbN`rN_"RTDn0?q;)(ulc/r)JcFd1rrB,"J,~>
+[K$7,`W,`6NNhrbjluI*s46r3oC2YKs6TdWL&[;7fDkjN\c7`ip&C*Pjo9o2rVlcehu;C%rMT\e
+rLC(Tq;&IYrr at WMU&Y,mU&Y,mmJm+bli6h^q>^BnJcGECr;cZnr;bgVrrC+>qZ)2O_7SOCh9k]I
+n`]q\s1eT at s1%s4qloOopUpI8qnMsMrP/BPn^7Bln^@H`s2=`hp"K5tpYPSsrrE)Ts3g`!s3eIW
+p%.qWs6/qCrTNkQp#u;Eq<7YGqq_#1qq_)3q;(r>pZVSIrTO3Mqrn(9p[e.Cs7>R?oCM_?rS?r6
+n*'HDeao(*rr at WMj8],ZX8d\~>
+[K$7,`W,`6JP5r7fbXSfi>2GdL&[9.fDkjN\c7^`p&C(Gjo9m)YtP#qs%E:jVb=Gtrr at WMU&UY`
+mJm+bli6h^q>^BnJcGECr;cZnr;bgVrrC+>qZ)1?JP4TfrEB5(rFGe3l!jBgrCm)uq,mT*s&nke
+s$Q<As$Qf^q).h)q).n8q+1HDrrE'Vs$6B;s$4n'lW3[fpK%<2mpc64oDeK#qdTA<q-s5GpMKeP
+q/,qPqdT;:rF5_Br?;&Ts*49IpMKq>lYZ6&pMKkRmpba&oiBUPPtV,WJcFd1rrB,"J,~>
+[K$7,`W,`6JP5r7j\GJ9s"*n'q(2=bq\K3)L&^3)fBCoDfDkjN\c;WJo=Ot*s1A04pSIhmqka1Y
+s,QuFo8`9lms+O*m<IH(a("01_cH5!nQ(cFr;cjjr;``g[K$7,JcDGDrrAaRrrDHdr;c0`qZ-Hl
+r;_EKp&Fsjq>^BniW&oXa8c#:JP1Pef1Z)0qoIsfoBuS at n,;e)rRLN1nalMIq=X4TrV?HnrV?3a
+leVO'l1;UfoDbN`rN_"RTDn0?q;)(ulc/r)JcFd1rrB,"J,~>
+[K$7,`W,`6NNhrbjluI*s46r3oC2YKs6TdWL&[;7fDkjN\c7`ip&C*Pjo9o2rVlcehu;C%rMT\e
+rLC(Tq;&IYrr at WMU&Y,mU&Y,mmJm+bli6h^q>^BnJcGECr;cZnr;bgVrrC+>qZ)2O_7SOCh9k]I
+n`]q\s1eT at s1%s4qloOopUpI8qnMsMrP/BPn^7Bln^@H`s2=`hp"K5tpYPSsrrE)Ts3g`!s3eIW
+p%.qWs6/qCrTNkQp#u;Eq<7YGqq_#1qq_)3q;(r>pZVSIrTO3Mqrn(9p[e.Cs7>R?oCM_?rS?r6
+n*'HDeao(*rr at WMj8],ZX8d\~>
+[K$7,bQ%A<JP5f3eJA/bk8&XKs8UnJr;aN(l2U\^n,NCf[Ju@^p]&3*r;b;>j8X['V+^aeWCs`#
+rr at WMU&UY`mJm+bp&Fsjq>]sbJcGECr;cZnr;bgVrrC=DqZ)1?dnBW>K1l/Hs&o;2qd/StpK.#t
+qcNkhqc!#[rBp0As$QfGpGM\)oelV8ogo)_rAFU?q_eC=s$"b%m8j6[q-rqrm:-*4p&Fu"q/,q:
+qec(:rHS!PrHS!PrHS'Gqec.<okjA2q/-"<mqqT(pMKq2m:,[(moJIXMbEjGmJm1dJcG]KrrB,"
+J,~>
+[K$7,bQ%A<JP5f3lV?t;q`"Nus#9a)q'#PLJcGcMlgs`3rLE!5g"komr;c<drrBJ,o=OUumA9]K
+qi:]Fo8`9lms+U,ms*`,q-s:<dphA;`E):tpJui<r;`fi\,ZI.JcDGDrrAaRrrDHdr;cNjr;cZn
+nGn.?p&Fsjq>^BniW&oXc2[Y at JP4Hbr;_ICrU'L'j6c[1n,<(Oq9nrds7,^OnaleQnb)ALrrDZe
+s8DKDp#t`5^]*p+Jc:6"_uAWYo?m<Pqn)fFr;c6brr at WMrVultX8d\~>
+[K$7,bQ%G>s($nho=O8OmHsr)rU'.Es7?3RJcGcMh>[AY^&I9rr;c<drrBJ,OoG+T`W#hAe,JD-
+Jc>E8j8Ra'p#u at E]BJ_>\,ZI.JcDGDrrAbmrrDHdr;cNjr;cZnnGn.?p&Fsjq>^BniW&oXc2[Y@
+J["mQh7NW(o=Nhuh9kKCn`]q\s1eN>s0DU0pTX=qpUp16q9/ZMn^7<jo@!Zbs4[5'pY,;rqqh#"
+rrE#Rs3gf#s3gqo\c2EroD\.Ks60.UrU]jKq=FLIp[e@>p#uA1p#uA1p[e:Gq=F:Cp%/"Cqt':?
+nalM=s8MEWoB>ZBj7A3.rNcA%mJm1dJcG]KrrB,"J,~>
+[K$7,bQ%A<JP5f3eJA/bk8&XKs8UnJr;aN(l2U\^n,NCf[Ju@^p]&3*r;b;>j8X['V+^aeWCs`#
+rr at WMU&UY`mJm+bp&Fsjq>]sbJcGECr;cZnr;bgVrrC=DqZ)1?dnBW>K1l/Hs&o;2qd/StpK.#t
+qcNkhqc!#[rBp0As$QfGpGM\)oelV8ogo)_rAFU?q_eC=s$"b%m8j6[q-rqrm:-*4p&Fu"q/,q:
+qec(:rHS!PrHS!PrHS'Gqec.<okjA2q/-"<mqqT(pMKq2m:,[(moJIXMbEjGmJm1dJcG]KrrB,"
+J,~>
+[K$7,bQ%A<JP5f3lV?t;q`"Nus#9a)q'#PLJcGcMlgs`3rLE!5g"komr;c<drrBJ,o=OUumA9]K
+qi:]Fo8`9lms+U,ms*`,q-s:<dphA;`E):tpJui<r;`fi\,ZI.JcDGDrrAaRrrDHdr;cNjr;cZn
+nGn.?p&Fsjq>^BniW&oXc2[Y at JP4Hbr;_ICrU'L'j6c[1n,<(Oq9nrds7,^OnaleQnb)ALrrDZe
+s8DKDp#t`5^]*p+Jc:6"_uAWYo?m<Pqn)fFr;c6brr at WMrVultX8d\~>
+[K$7,bQ%G>s($nho=O8OmHsr)rU'.Es7?3RJcGcMh>[AY^&I9rr;c<drrBJ,OoG+T`W#hAe,JD-
+Jc>E8j8Ra'p#u at E]BJ_>\,ZI.JcDGDrrAbmrrDHdr;cNjr;cZnnGn.?p&Fsjq>^BniW&oXc2[Y@
+J["mQh7NW(o=Nhuh9kKCn`]q\s1eN>s0DU0pTX=qpUp16q9/ZMn^7<jo@!Zbs4[5'pY,;rqqh#"
+rrE#Rs3gf#s3gqo\c2EroD\.Ks60.UrU]jKq=FLIp[e@>p#uA1p#uA1p[e:Gq=F:Cp%/"Cqt':?
+nalM=s8MEWoB>ZBj7A3.rNcA%mJm1dJcG]KrrB,"J,~>
+[K$7,dJs(DrCd.jJP5f3]bZ2!p]$^Uci="Fp]'JNe,PV)p]%iur;beLjo9m)SP/n]nOrl^]h>p9
+rr at WMU&UY`mJm+bp&Fsjp]'sfJcG?Ar;cNjr;bmXrrCOJqZ)1?JP40Zs'#A(rFGe3m:-*"rE&l.
+ojd_erDW;_qa9m=s#Ba1q)Ih#s$cr?pIP;arC-`Oq_eC at s$4b#o2bZ[s'kFtmpbtiq-s5<pL=/>
+o4%`Ej_b$Boj[r<ruqDZq-s)8rDrl+rtbK at rGD@>o53f&qec:4lXKa.kuR1\JP5f3r;cBfrr at WM
+rVultX8d\~>
+[K$7,dJs(DrCd.jJP5f3o1naAof)[tq'#PLJcGKErU\(ng"k!SrrDfnmDf+:e,T*Qqlp$qrNPsk
+s-in_q3pW0nUp4Rp]'u4h/2Ccr>+@$jo<;#j\,PQJP5f3r;c@\rrB`*\c;[0JcDGDrrAaRrrDHd
+r;cNjr;cTlpAfdEoDeahp&Fsjj8],Ze,T:FJP1Peb=hm&q8hads6'@Jn,<"LrUBR0pXT02q==.K
+q=O.Ks8Du\p\k*lrVcEcoA/s#l1;mnp&D)ls0Cbcs0 at 4T_uAKUl-]ONmCW;snc/UhJcG]KrrB,"
+J,~>
+[K$7,dJs(DrNQ<4K<Y*^lfm[$naQSMrTSn5p]$`^ci="Fp]'LWe,PX2p]%l)rNbD]jo9o2nal)G
+g%4OnrLEEAs.%d+jk[KIrr at WMU&Y,mU&Y,mmJm+bp&Fsjp]'sfJcG?Ar;cNjr;bmXrrCOJqZ)2O
+oru]QgW&-uhqdths0qsArODa2q69Oss/Ph+otU7ErP.sOqqU_is4[5'q:b;ns5*drpY,WIrSIS&
+qq_:us3e=Ss7>^Yn+65Pq=FLIp[eFKoCN"<jlla#p%/4Is.',Qq=F at ErVlces/5bcrTO(KoB>N3
+qrn"Xlgt#;l2L)AJc>KEr;cBfrr at WMrVultX8d\~>
+[K$7,dJs(DrCd.jJP5f3]bZ2!p]$^Uci="Fp]'JNe,PV)p]%iur;beLjo9m)SP/n]nOrl^]h>p9
+rr at WMU&UY`mJm+bp&Fsjp]'sfJcG?Ar;cNjr;bmXrrCOJqZ)1?JP40Zs'#A(rFGe3m:-*"rE&l.
+ojd_erDW;_qa9m=s#Ba1q)Ih#s$cr?pIP;arC-`Oq_eC at s$4b#o2bZ[s'kFtmpbtiq-s5<pL=/>
+o4%`Ej_b$Boj[r<ruqDZq-s)8rDrl+rtbK at rGD@>o53f&qec:4lXKa.kuR1\JP5f3r;cBfrr at WM
+rVultX8d\~>
+[K$7,dJs(DrCd.jJP5f3o1naAof)[tq'#PLJcGKErU\(ng"k!SrrDfnmDf+:e,T*Qqlp$qrNPsk
+s-in_q3pW0nUp4Rp]'u4h/2Ccr>+@$jo<;#j\,PQJP5f3r;c@\rrB`*\c;[0JcDGDrrAaRrrDHd
+r;cNjr;cTlpAfdEoDeahp&Fsjj8],Ze,T:FJP1Peb=hm&q8hads6'@Jn,<"LrUBR0pXT02q==.K
+q=O.Ks8Du\p\k*lrVcEcoA/s#l1;mnp&D)ls0Cbcs0 at 4T_uAKUl-]ONmCW;snc/UhJcG]KrrB,"
+J,~>
+[K$7,dJs(DrNQ<4K<Y*^lfm[$naQSMrTSn5p]$`^ci="Fp]'LWe,PX2p]%l)rNbD]jo9o2nal)G
+g%4OnrLEEAs.%d+jk[KIrr at WMU&Y,mU&Y,mmJm+bp&Fsjp]'sfJcG?Ar;cNjr;bmXrrCOJqZ)2O
+oru]QgW&-uhqdths0qsArODa2q69Oss/Ph+otU7ErP.sOqqU_is4[5'q:b;ns5*drpY,WIrSIS&
+qq_:us3e=Ss7>^Yn+65Pq=FLIp[eFKoCN"<jlla#p%/4Is.',Qq=F at ErVlces/5bcrTO(KoB>N3
+qrn"Xlgt#;l2L)AJc>KEr;cBfrr at WMrVultX8d\~>
+[K$7,fDk^JJP5H)_%qV%nc/&Nr;a5ubQ%SBd7`<qPtUlOf1Z,Da\1aqJP28$r;cL`rrBZ(]Dqm2
+JcDGDSH+6@\,ZC,p&Fsjj8],Zg&LpLJP1Pe`Cp57rE9/2q-NN!s',MCpLa;4qc!5[s&8keohPBO
+nNcb)q)I[ts"X=?rrE'is$cras$clDs$6TAa\2A/oh4[Qo4%CmpL=)<j^S6jokj_0o54M.oj[q:
+s)%F<qec42qdTR at rF5eDoj[Z4s&SGps)%L2m:-)gj&Yn`JP5B'r;_EKn,NCfX8d\~>
+[K$7,fDk^JJP5H)rD)TEof)[tq'#PLJcG9?n*'_?h<<PJbQ%SBj2UQ"h>d;_q697_rL3b_qjR&8
+s+C3/nUp4Rp]&o`s'l!Da^XB3j&Z+Ok>m.,d7aE<oh5;b]1]d9rr at WMU&Y,mTo]3RJcE4Zr;cNj
+r;bmXrrCaPqZ)1?JP3sTs6]^)kO&<4n,;eFqsa:,qpkH2oCMSGoC`"Ss6'4VrrDlnq>0d?lfd[+
+ao:u5X8`.)iVrk_Jc='rg$%VHlaunfr;_EKn,NCfX8d\~>
+[K$7,fDk^JJ[#*Wo=O,KoBl#9rTSn5nc/(WrN`j1bQ%SBdJhu%Q2^OXfDbfUao:E%KDt3.nc%55
+iTU61p#uFGhrrnP]Dqm2JcDGDrrAbmrr at WM\,ZC,p&Fsjj8],Zg&LpLJ["mQbIc0AkL&8En*'e]
+rPSZFq6U+*nZi+os0;=2otU7Es1eNUp!NZln^@*dq:b/js2=`errE)Qs5*e)s5*_1s3gr'TDnHR
+p&FdXrTNA7s8M]Ts8MWRs8M]_s/5n\p%/(Equ6Kas/5hes60.IpZVYVlgt/?p\sROiVrTCJc>'9
+r;_EKn,NCfX8d\~>
+[K$7,fDk^JJP5H)_%qV%nc/&Nr;a5ubQ%SBd7`<qPtUlOf1Z,Da\1aqJP28$r;cL`rrBZ(]Dqm2
+JcDGDSH+6@\,ZC,p&Fsjj8],Zg&LpLJP1Pe`Cp57rE9/2q-NN!s',MCpLa;4qc!5[s&8keohPBO
+nNcb)q)I[ts"X=?rrE'is$cras$clDs$6TAa\2A/oh4[Qo4%CmpL=)<j^S6jokj_0o54M.oj[q:
+s)%F<qec42qdTR at rF5eDoj[Z4s&SGps)%L2m:-)gj&Yn`JP5B'r;_EKn,NCfX8d\~>
+[K$7,fDk^JJP5H)rD)TEof)[tq'#PLJcG9?n*'_?h<<PJbQ%SBj2UQ"h>d;_q697_rL3b_qjR&8
+s+C3/nUp4Rp]&o`s'l!Da^XB3j&Z+Ok>m.,d7aE<oh5;b]1]d9rr at WMU&Y,mTo]3RJcE4Zr;cNj
+r;bmXrrCaPqZ)1?JP3sTs6]^)kO&<4n,;eFqsa:,qpkH2oCMSGoC`"Ss6'4VrrDlnq>0d?lfd[+
+ao:u5X8`.)iVrk_Jc='rg$%VHlaunfr;_EKn,NCfX8d\~>
+[K$7,fDk^JJ[#*Wo=O,KoBl#9rTSn5nc/(WrN`j1bQ%SBdJhu%Q2^OXfDbfUao:E%KDt3.nc%55
+iTU61p#uFGhrrnP]Dqm2JcDGDrrAbmrr at WM\,ZC,p&Fsjj8],Zg&LpLJ["mQbIc0AkL&8En*'e]
+rPSZFq6U+*nZi+os0;=2otU7Es1eNUp!NZln^@*dq:b/js2=`errE)Qs5*e)s5*_1s3gr'TDnHR
+p&FdXrTNA7s8M]Ts8MWRs8M]_s/5n\p%/(Equ6Kas/5hes60.IpZVYVlgt/?p\sROiVrTCJc>'9
+r;_EKn,NCfX8d\~>
+[K$7,huE?LJP5H)`>8FPrr at WMn,K4Wci<f6rrC/6huB0=p]&o>rrC58jo9m)P=tiSs%E at lX\6A-
+rr at WMU&UY`JcE4Zr;cNjr;bmXrrCsVqZ)1?JP3gPs%iYus&o;2q-NZ%q.p"<q.B:upIP<_rCHTV
+q*Xg?o/6>'lS\W#qag_es%)lQrADPerDrG]m8isjoDdu_s&Sf%rDrZ0qc<H.rDr#hrGD:0pL=/'
+oj[`6rDr;prCclcnRDAgiDtM&iCj+LJcG?ArrB,"J,~>
+[K$7,huE?LJP5H)m6gJ(pFQ1bpD3`-rr at WMn,LYrg"k!Sq8WF7iPt,ohuEYeqlomms-i\Yo:#92
+kC`;Ls)%N1hei7"rtaj.s&S5jjo=@ApIjmSJP4<^r;cjjrrB/o^&S*4JcDGDrrAaRrr at WM\,ZC,
+p&Fsjj8],ZhuEQRJP1Pe_+XaoqoJ*jn,<:SoC)AAqpP)ds7,jSoCMkOoC__Kqu-Npp&4jcpYFrp
+lgrI%oDaC at Jc=X-g$%PFlauJZr;_EKoDegjX8d\~>
+[K$7,huEKPrFCJ`n%7iKna5l9rTX:\rr at WMn,K6`ci<h?rrC1?huB2Fp]&qGs0BiIjo9u4jn&<I
+g%4%`rLEoOs.%j-e(q_;rr at WMU&Y,mU&Y,mJcE4Zr;cNjr;bmXrrCsVqZ)2OpTVcOc,SekleUsl
+s7?9.s1&*HrOD[0qlon$q7-IBq7QC8pWNTOrQFl]q:tYkoA05rleV<hrrE)QpYPl)Sc8BToDe"F
+s8M]_rVlQTqu6?RrVkpMrTO"Tp[eFap%/"CrVl3UoD\:OJc<:\r;_EKoDegjX8d\~>
+[K$7,huE?LJP5H)`>8FPrr at WMn,K4Wci<f6rrC/6huB0=p]&o>rrC58jo9m)P=tiSs%E at lX\6A-
+rr at WMU&UY`JcE4Zr;cNjr;bmXrrCsVqZ)1?JP3gPs%iYus&o;2q-NZ%q.p"<q.B:upIP<_rCHTV
+q*Xg?o/6>'lS\W#qag_es%)lQrADPerDrG]m8isjoDdu_s&Sf%rDrZ0qc<H.rDr#hrGD:0pL=/'
+oj[`6rDr;prCclcnRDAgiDtM&iCj+LJcG?ArrB,"J,~>
+[K$7,huE?LJP5H)m6gJ(pFQ1bpD3`-rr at WMn,LYrg"k!Sq8WF7iPt,ohuEYeqlomms-i\Yo:#92
+kC`;Ls)%N1hei7"rtaj.s&S5jjo=@ApIjmSJP4<^r;cjjrrB/o^&S*4JcDGDrrAaRrr at WM\,ZC,
+p&Fsjj8],ZhuEQRJP1Pe_+XaoqoJ*jn,<:SoC)AAqpP)ds7,jSoCMkOoC__Kqu-Npp&4jcpYFrp
+lgrI%oDaC at Jc=X-g$%PFlauJZr;_EKoDegjX8d\~>
+[K$7,huEKPrFCJ`n%7iKna5l9rTX:\rr at WMn,K6`ci<h?rrC1?huB2Fp]&qGs0BiIjo9u4jn&<I
+g%4%`rLEoOs.%j-e(q_;rr at WMU&Y,mU&Y,mJcE4Zr;cNjr;bmXrrCsVqZ)2OpTVcOc,SekleUsl
+s7?9.s1&*HrOD[0qlon$q7-IBq7QC8pWNTOrQFl]q:tYkoA05rleV<hrrE)QpYPl)Sc8BToDe"F
+s8M]_rVlQTqu6?RrVkpMrTO"Tp[eFap%/"CrVl3UoD\:OJc<:\r;_EKoDegjX8d\~>
+[K$7,jo>2XJP50!`tn at Jrr@WMnc,R]e,T/8r;cjjrrBl.j8YZCp]%-aj8X['M+ddIY=lY1rr at WM
+U&UY`JcE4Zr;cNjr;bmXrrD6^q#Gt=X%WBkPtV-QrE9/2pKml/rEK;2s)I^IrF#S#s&\qnogo*]
+qagHVq*Xg?nMU8)kr&8rs%*.is%)`MY=n7`q-s$soj[l#pL=##q-s/#q/,q.qec at 6r<rX+pL=)%
+o4%AnqdTA%oj[r<pK$fnqb-T_pL<egkuN at .gIqDDJcGQGrrE*!rrB,"J,~>
+[K$7,jo>2XJP50!nO)h*pFQ1bpD3H%rr at WMnc.)%fA4pUpW!/Ys2P'=iPt&mqlo,\q69amqjR>W
+qjRDBs-iP>nUp:TpMK[)j_`scq,Zfjj8\4Ao1SUSJP3mRr;a#o^]4<6JcDGDrrAaRrr at WM\,ZC,
+p&Fsjj8],ZkPt>XJP3%:r;`*Us6]^)p$M_ at s6]:Rp$VG?p[J.0o@<I'oCN"Snb)AEs8Drtnbr@@
+hrsCtdJih=\c2Q5Jc=X-qt&SAg$%JDl+?bqoqhJQrD*@mJcGQGrrE*!rrB,"J,~>
+[K$7,jo>2XJ[#$UmCV]Klg=H9rTX"Trr at WMnc,Tfe,T1ArNcJ&rrBn7j8Y\Lp]%/jj8Xi4ht-mI
+g[ibTrLE'7aka`3rr at WMU&Y,mU&Y,mJcE4Zr;cNjr;bmXrrD6^q#GuMpTVEEpW!/Yji63*mG6sh
+qnrHDpTsn(rMfh$s0;7,q8<6FpV6CEs1eHSpX/flp!WBdrS$MlpY,WIs4[)$S,W6Tp&F^VrVlQ_
+qu6E_q>U3Rq>U9Ts8Mu&s8McarVlE[p&=j[q>U'Ys604Vnal5Kp[`t8\,Q?3rr at WMq>^Hps8W*!
+X8d\~>
+[K$7,jo>2XJP50!`tn at Jrr@WMnc,R]e,T/8r;cjjrrBl.j8YZCp]%-aj8X['M+ddIY=lY1rr at WM
+U&UY`JcE4Zr;cNjr;bmXrrD6^q#Gt=X%WBkPtV-QrE9/2pKml/rEK;2s)I^IrF#S#s&\qnogo*]
+qagHVq*Xg?nMU8)kr&8rs%*.is%)`MY=n7`q-s$soj[l#pL=##q-s/#q/,q.qec at 6r<rX+pL=)%
+o4%AnqdTA%oj[r<pK$fnqb-T_pL<egkuN at .gIqDDJcGQGrrE*!rrB,"J,~>
+[K$7,jo>2XJP50!nO)h*pFQ1bpD3H%rr at WMnc.)%fA4pUpW!/Ys2P'=iPt&mqlo,\q69amqjR>W
+qjRDBs-iP>nUp:TpMK[)j_`scq,Zfjj8\4Ao1SUSJP3mRr;a#o^]4<6JcDGDrrAaRrr at WM\,ZC,
+p&Fsjj8],ZkPt>XJP3%:r;`*Us6]^)p$M_ at s6]:Rp$VG?p[J.0o@<I'oCN"Snb)AEs8Drtnbr@@
+hrsCtdJih=\c2Q5Jc=X-qt&SAg$%JDl+?bqoqhJQrD*@mJcGQGrrE*!rrB,"J,~>
+[K$7,jo>2XJ[#$UmCV]Klg=H9rTX"Trr at WMnc,Tfe,T1ArNcJ&rrBn7j8Y\Lp]%/jj8Xi4ht-mI
+g[ibTrLE'7aka`3rr at WMU&Y,mU&Y,mJcE4Zr;cNjr;bmXrrD6^q#GuMpTVEEpW!/Yji63*mG6sh
+qnrHDpTsn(rMfh$s0;7,q8<6FpV6CEs1eHSpX/flp!WBdrS$MlpY,WIs4[)$S,W6Tp&F^VrVlQ_
+qu6E_q>U3Rq>U9Ts8Mu&s8McarVlE[p&=j[q>U'Ys604Vnal5Kp[`t8\,Q?3rr at WMq>^Hps8W*!
+X8d\~>
+[K$7,li6b\JP5)tb8,[/h>dERYtNXIlV%6X]1_8cT1eqYm7[BXa\2R4j8X['JP5qAZV/.7r;_EK
+U&UY`JcE4Zr;cNjr;cBfrrD`lrrDHdq#Gt=JP3CDs'#A(s((q3rF5_Fo5"A1pJCT_ogo*]qagHV
+q*Xg?rA!t&rAa%!pGi0Qs%*/Bs$crKqaLN]s$<h]m8j0pp&G%mpL<r!qdT;#rF5G#rGD:0rGD4.
+qdTA%pL=.qo2bm#pK$rroiC`poh5$[qdT(gmoG!4cV+3:JcG]KrrE*!rrB,"J,~>
+[K$7,li6b\JP5)tqa9a0pFQ+`pD/>[h>dKTs.%j-fA5!Wlc/r)ho=omos!QXrNQ*oq3q8Yq3pW0
+nUp:TpMK[)m;;e;j'q[^o4%Y6j8\4Am7[1SJP3UJr;a/s_>jH6JcDGDrrAaRrr at WM\,ZC,p&Fsj
+nc/Uhp&G$lmJlt^JP1Pe[7gPeqoJHtn,;eEn*g)Aq9o#frUKLMrU]^Snb)MIs7cNns8Du\oDS^F
+g$%hpec,7AJc;):oCM/EfBD8Bqo8*:n$)bem@*tRJcG]KrrE*!rrB,"J,~>
+[K$7,li6h^s($\brNPOun*00*p[J.GJcFR+rrE))Z2W;Rli-na]DgplTDnTbmJd'iao;7Ej8Xo6
+\+ at T&rLEEA_qi0/r;_EKU&Y,mU&Y,mJcE4Zr;cNjr;cBfrrD`lrrDHdq#GuMn$'X?h8\@"j5'%b
+s0qsEs1%m2rNQ7*n[S>2pV6CEs1eHSpX/flp!Wftp"fT#l.u*frrE)Qs2Y/rs69F;s3q#,S,WBX
+p&G'kp[e4[qt'R]rU]^]rTO"TrTNqRqt'X_p[dqSs7?!ap%.kUp%.MKqt#C<XoA8!JcG]KrrE*!
+rrB,"J,~>
+[K$7,li6b\JP5)tb8,[/h>dERYtNXIlV%6X]1_8cT1eqYm7[BXa\2R4j8X['JP5qAZV/.7r;_EK
+U&UY`JcE4Zr;cNjr;cBfrrD`lrrDHdq#Gt=JP3CDs'#A(s((q3rF5_Fo5"A1pJCT_ogo*]qagHV
+q*Xg?rA!t&rAa%!pGi0Qs%*/Bs$crKqaLN]s$<h]m8j0pp&G%mpL<r!qdT;#rF5G#rGD:0rGD4.
+qdTA%pL=.qo2bm#pK$rroiC`poh5$[qdT(gmoG!4cV+3:JcG]KrrE*!rrB,"J,~>
+[K$7,li6b\JP5)tqa9a0pFQ+`pD/>[h>dKTs.%j-fA5!Wlc/r)ho=omos!QXrNQ*oq3q8Yq3pW0
+nUp:TpMK[)m;;e;j'q[^o4%Y6j8\4Am7[1SJP3UJr;a/s_>jH6JcDGDrrAaRrr at WM\,ZC,p&Fsj
+nc/Uhp&G$lmJlt^JP1Pe[7gPeqoJHtn,;eEn*g)Aq9o#frUKLMrU]^Snb)MIs7cNns8Du\oDS^F
+g$%hpec,7AJc;):oCM/EfBD8Bqo8*:n$)bem@*tRJcG]KrrE*!rrB,"J,~>
+[K$7,li6h^s($\brNPOun*00*p[J.GJcFR+rrE))Z2W;Rli-na]DgplTDnTbmJd'iao;7Ej8Xo6
+\+ at T&rLEEA_qi0/r;_EKU&Y,mU&Y,mJcE4Zr;cNjr;cBfrrD`lrrDHdq#GuMn$'X?h8\@"j5'%b
+s0qsEs1%m2rNQ7*n[S>2pV6CEs1eHSpX/flp!Wftp"fT#l.u*frrE)Qs2Y/rs69F;s3q#,S,WBX
+p&G'kp[e4[qt'R]rU]^]rTO"TrTNqRqt'X_p[dqSs7?!ap%.kUp%.MKqt#C<XoA8!JcG]KrrE*!
+rrB,"J,~>
+[K$7,nc/IdrCd.jJP5)tcPD*3ec2sKec4f*rrBH"kPq;Mp]%Kkj8X['JP5f3r;a5u_uKZ8JcDGD
+SH+6@\,ZC,p&Fsjn,N=dq>^HpoDe[fJP1PeX\8[trE9/&qd0;?qf2XDq.oe1ohbH_ogo*]q+1BX
+ogAO?s#'a0oelb/jYcops"XNRs#C$9s"==4qaLN]s$cndY=n=bp&Fniq-s)!s'k(js)%X6rsS^)
+s)%F0rF5M%q-s4ok>qUlr>,EBrCcfaqdT(goiCBOpJui<`Cp.0JcG]KrrB,"J,~>
+[K$7,nc/IdrCd.jJP5)tm5O\hq'#JJJcF:#hrrVHec4gPrrCrrkI^8gkPtRdqk`tSs/#U]l]1Lf
+ms+SDp]'o'gLBVPojZt]qb-6UktCnSJP3=Br;a5u_uKZ8JcDGDrrAaRrr at WM\,ZC,p&Fsjn,N=d
+q>^HpoDe[fJP1PeX\8]]rQ,$%qsEkNrU'4EnaH#;s3gGfnacYMnauAEqtBp]rrE#ls6'(RrVtL5
+mIT*3p&Dr/s0B'3rN`R)lgsZGg$%DBn&G18l`fiHooAtNJcG]KrrB,"J,~>
+[K$7,nc/IdrNQ<4J["7JoBGT.p[J.GJcF:#Zi8MTkPkJ][Jo at hU]1#fZ2We`L]4jU]BK3`rTLfJ
+_uKZ8JcDGDrrAbmrr at WM\,ZC,p&Fsjn,N=dq>^HpoDe[fJ["1=bIcZOh9k'7n*'`As1&$Fs/l1)
+s0V[.s24B:ou$U?oumBMq9/Z_p"]Aks5!Y4p"fZ%jk]gfs5EtXs4[M/s2Y0(qqhA%s5*_SSc8<^
+qu6E_p\t3ajo5;Dqu6W$qu6WZp&=p]p\t![iVrlKrMT\enc&FWJc:N*r;_EKrVultX8d\~>
+[K$7,nc/IdrCd.jJP5)tcPD*3ec2sKec4f*rrBH"kPq;Mp]%Kkj8X['JP5f3r;a5u_uKZ8JcDGD
+SH+6@\,ZC,p&Fsjn,N=dq>^HpoDe[fJP1PeX\8[trE9/&qd0;?qf2XDq.oe1ohbH_ogo*]q+1BX
+ogAO?s#'a0oelb/jYcops"XNRs#C$9s"==4qaLN]s$cndY=n=bp&Fniq-s)!s'k(js)%X6rsS^)
+s)%F0rF5M%q-s4ok>qUlr>,EBrCcfaqdT(goiCBOpJui<`Cp.0JcG]KrrB,"J,~>
+[K$7,nc/IdrCd.jJP5)tm5O\hq'#JJJcF:#hrrVHec4gPrrCrrkI^8gkPtRdqk`tSs/#U]l]1Lf
+ms+SDp]'o'gLBVPojZt]qb-6UktCnSJP3=Br;a5u_uKZ8JcDGDrrAaRrr at WM\,ZC,p&Fsjn,N=d
+q>^HpoDe[fJP1PeX\8]]rQ,$%qsEkNrU'4EnaH#;s3gGfnacYMnauAEqtBp]rrE#ls6'(RrVtL5
+mIT*3p&Dr/s0B'3rN`R)lgsZGg$%DBn&G18l`fiHooAtNJcG]KrrB,"J,~>
+[K$7,nc/IdrNQ<4J["7JoBGT.p[J.GJcF:#Zi8MTkPkJ][Jo at hU]1#fZ2We`L]4jU]BK3`rTLfJ
+_uKZ8JcDGDrrAbmrr at WM\,ZC,p&Fsjn,N=dq>^HpoDe[fJ["1=bIcZOh9k'7n*'`As1&$Fs/l1)
+s0V[.s24B:ou$U?oumBMq9/Z_p"]Aks5!Y4p"fZ%jk]gfs5EtXs4[M/s2Y0(qqhA%s5*_SSc8<^
+qu6E_p\t3ajo5;Dqu6W$qu6WZp&=p]p\t![iVrlKrMT\enc&FWJc:N*r;_EKrVultX8d\~>
+[K$7,q>^6jJP4`jdh^L6rrA,[r;cBf]1^]SiCj1NYtO9[V+^R_s%E:j]h at DcJP1Peoh5)\[nFX=
+rr at WMU&UY`JcE4Zr;cNjr;c0`r;cfrrrDlpqZ)1?JP2t8s%iYus&o at hs'GS?s'u"Is(hXBs%rAm
+mnis]ogo*Gq+1BXogAO?s#'a0f/<Rfq_A*NrA"7.pI4oXYtO[hp&FberF5G#s'k(js%E;krsSX'
+s%DHSrF5RqpK%5coiD$#q+LB]rF5.eqc;lQrDnJB]hAD*r;_EKrrB,"J,~>
+[K$7,q>^6jJP4`jof)InpEB8Hec5XLO8o.Ync.k;e(rRSiPtltho=iknZ_tgkPtFUo:#]>rL3><
+l%AGLpMK[)s)%]Mh.#VLq-rCapIjmSJP22"q#Ils_uK`:JcDGDrrAaBrr at WM\,ZC,p&Fsjli6n`
+rVultq>^<lJP1PeWD!3Ws2b5Gs6]@Tna5r9p$_MAs7,^2rRpr9oCMMEoC`.Wq=jmhq=jX^q>].3
+mIT67p&Dr/s0 at 4Ts8Moel2Kf9q>T(2iR-i.l`fcFm>h5Hr;_EKrrB,"J,~>
+[K$7,q>^6jJ[#$UiOejKl0\<9rTVl4rrA,[r;cBf]Dg@\iVriWZ2WqdV>g5hs8Mu&^&I'lVuH_f
+j8Q[^[HRX\qiSMHrR&O_rr at WMU&Y,mU&Y,mJcE4Zr;cNjr;c0`r;cfrrrDlpqZ)2Oj06_=h8\@"
+h;.P`q=FX(s1&*Hs/c7,qm?C<rNZC4rPS<<n&,+=oumBdq9/Z_p"]Aks5!Y4fA6J\qr.PTrSd_2
+pYP`GU]0rdp\t-_p&>!_hu<Y]g]%0Chu<TGmJd(UJc:B&s8W#tJcG`MX8d\~>
+[K$7,q>^6jJP4`jdh^L6rrA,[r;cBf]1^]SiCj1NYtO9[V+^R_s%E:j]h at DcJP1Peoh5)\[nFX=
+rr at WMU&UY`JcE4Zr;cNjr;c0`r;cfrrrDlpqZ)1?JP2t8s%iYus&o at hs'GS?s'u"Is(hXBs%rAm
+mnis]ogo*Gq+1BXogAO?s#'a0f/<Rfq_A*NrA"7.pI4oXYtO[hp&FberF5G#s'k(js%E;krsSX'
+s%DHSrF5RqpK%5coiD$#q+LB]rF5.eqc;lQrDnJB]hAD*r;_EKrrB,"J,~>
+[K$7,q>^6jJP4`jof)InpEB8Hec5XLO8o.Ync.k;e(rRSiPtltho=iknZ_tgkPtFUo:#]>rL3><
+l%AGLpMK[)s)%]Mh.#VLq-rCapIjmSJP22"q#Ils_uK`:JcDGDrrAaBrr at WM\,ZC,p&Fsjli6n`
+rVultq>^<lJP1PeWD!3Ws2b5Gs6]@Tna5r9p$_MAs7,^2rRpr9oCMMEoC`.Wq=jmhq=jX^q>].3
+mIT67p&Dr/s0 at 4Ts8Moel2Kf9q>T(2iR-i.l`fcFm>h5Hr;_EKrrB,"J,~>
+[K$7,q>^6jJ[#$UiOejKl0\<9rTVl4rrA,[r;cBf]Dg@\iVriWZ2WqdV>g5hs8Mu&^&I'lVuH_f
+j8Q[^[HRX\qiSMHrR&O_rr at WMU&Y,mU&Y,mJcE4Zr;cNjr;c0`r;cfrrrDlpqZ)2Oj06_=h8\@"
+h;.P`q=FX(s1&*Hs/c7,qm?C<rNZC4rPS<<n&,+=oumBdq9/Z_p"]Aks5!Y4fA6J\qr.PTrSd_2
+pYP`GU]0rdp\t-_p&>!_hu<Y]g]%0Chu<TGmJd(UJc:B&s8W#tJcG`MX8d\~>
+[K$7,s8Vrrs%E:jJP4`jf+uX2rr at WMrVsW*ec4GurrDjfrrBH"kPqMSp]%p"j8X['JP56#r;aB$
+`W,r<JcDGDSH+6@[K$1*q>^<lkPtDZs8VrrJP1PerrAfes&o;\qel at Bs)J!Aqb[#km83g]ogo*G
+qagZSrD)rOq`t0=q_?h_pG)[Jq_A+.s!n%+rC-`Pp&D?kpK$tej];CSoiD#apK%/apK%5coiD)c
+o2bm#oh50_qb-N]oh5$[JP1hmp&FmhL&_/QX8d\~>
+[K$7,s8Vrrs%E:jJP4`js#9BtpEB2Fc2[eDJcG]KoB=HTec4IFrrDl7s*NqKkI^>ipSI'Qo:#Q:
+s-iP>q1JEdqh+?^pMK[)h.#DFs'k$gnOrISJP1bkr;aB$`W,r<JcDGDrrAaBrr at WM[K$1*q>^<l
+kPtDZs8VrrJP1PerrAlgs6]j-rVlKgn*TT3naH)=o@<fmp%&"OnauGGp\+R[rrDffs7lKip&E_/
+n+6#Is7?!ap&BUBg]%6El2LGKmJd.LiUbgfiR-i.l*0QDmuI)@qZ)?MrrB,"J,~>
+[K$7,s8Vrrs02H4J[#0Yh7NLIlg=T=s5j4Dc2[eDJcG]K^])d`h>[ESq>UE"[Jo at hWW)Yl^&I'l
+VuHM`l2JBf[HR5<rK5.Vo?kPWrr at WMU&Y,mU&Y,mJcE.Xr;cZnqZ,gZqZ-ZrqZ)2Oj06e?e&ME7
+jjE&Clfe*7s2P)VrPn`ArP/B;rODaBpUKV.s1e6Ms47(jrQbAhoA'5ks5!S2gYMV_rrDrTs5!_>
+s5!Y1s5EYNWW)SjRK!6XJc:6"c2RD9qZ)?MrrB,"J,~>
+[K$7,s8Vrrs%E:jJP4`jf+uX2rr at WMrVsW*ec4GurrDjfrrBH"kPqMSp]%p"j8X['JP56#r;aB$
+`W,r<JcDGDSH+6@[K$1*q>^<lkPtDZs8VrrJP1PerrAfes&o;\qel at Bs)J!Aqb[#km83g]ogo*G
+qagZSrD)rOq`t0=q_?h_pG)[Jq_A+.s!n%+rC-`Pp&D?kpK$tej];CSoiD#apK%/apK%5coiD)c
+o2bm#oh50_qb-N]oh5$[JP1hmp&FmhL&_/QX8d\~>
+[K$7,s8Vrrs%E:jJP4`js#9BtpEB2Fc2[eDJcG]KoB=HTec4IFrrDl7s*NqKkI^>ipSI'Qo:#Q:
+s-iP>q1JEdqh+?^pMK[)h.#DFs'k$gnOrISJP1bkr;aB$`W,r<JcDGDrrAaBrr at WM[K$1*q>^<l
+kPtDZs8VrrJP1PerrAlgs6]j-rVlKgn*TT3naH)=o@<fmp%&"OnauGGp\+R[rrDffs7lKip&E_/
+n+6#Is7?!ap&BUBg]%6El2LGKmJd.LiUbgfiR-i.l*0QDmuI)@qZ)?MrrB,"J,~>
+[K$7,s8Vrrs02H4J[#0Yh7NLIlg=T=s5j4Dc2[eDJcG]K^])d`h>[ESq>UE"[Jo at hWW)Yl^&I'l
+VuHM`l2JBf[HR5<rK5.Vo?kPWrr at WMU&Y,mU&Y,mJcE.Xr;cZnqZ,gZqZ-ZrqZ)2Oj06e?e&ME7
+jjE&Clfe*7s2P)VrPn`ArP/B;rODaBpUKV.s1e6Ms47(jrQbAhoA'5ks5!S2gYMV_rrDrTs5!_>
+s5!Y1s5EYNWW)SjRK!6XJc:6"c2RD9qZ)?MrrB,"J,~>
+[K$1*JP4HbfbT/=_>hDGfDjGqrrDddrrB;sl2RkYp]&'&jo>8ZJP1Peoh55`o1T#^]1^3Err at WM
+U&UY`JcE.Xr;cZnr;bmXqZ)1?JP5f3rrB;sr;cjjrVun(rJpbms'u"+s'kq2qb[#klVR7Fs#p6M
+rC-Z[o0`IAs#'U,pGMt*kr&,grrDjLs!mn'rB^&T[7gBtp&FVarCclcqb-`cq+LYos&Skeqc<Mc
+q,[AcpK$`Us&SkepK$fWqc88 at ND'<Or;cNjs%E at ls%E:jM?!SUX8d\~>
+[K$1*JP4HbnLX>VobN,Y_>hF/fDjIBrrDf5s*O"MkI^8go;1^OopYc<rIaj)q1J3^j_ablj'pnH
+jo>8Zmn<CUJP2+ur;cF^r;aH&a8c/>JcDGDrrAaBrr at WM[K$1*q>^Bnj8\uVJP1Peq+L_fYtP#q
+s%E=js8Doqq>KdLn*]Z5naQSKn^[ZmoCDGDnb)GGrrDlhq=speoDdS/mIU#Mqt'^ap&EA;rN`@#
+s7>XWqt':UnalGQpZUl5hrrtFji6Vjl^I:&s8W#tp&G&/ruqDZr;_]SrrB,"J,~>
+[K$1*J["sSgUm at Ilg=T=s5j4DJcERd_uA9ffDbdMp\t2uZ2X"fXoA(p_>`QrrrE))WW)M\nc$/l
+\*3_FrK6^-rK5Rbl-[QOrr at WMU&Y,mU&Y,mJcE.Xr;cZnr;bmXqZ)2Oj06e?bJsR:j3d2KjllZ5
+s7?3hs2=lUqm?78s0;O4qnr0<lbiD=s47(jrQbAhoA';ms5!M0pYGl.l.u$krrDlRs69F:rSdAJ
+YQ"4pci3mKJc:6"Sc8Zhr;cNjs8N&(s8MrsM?!SUX8d\~>
+[K$1*JP4HbfbT/=_>hDGfDjGqrrDddrrB;sl2RkYp]&'&jo>8ZJP1Peoh55`o1T#^]1^3Err at WM
+U&UY`JcE.Xr;cZnr;bmXqZ)1?JP5f3rrB;sr;cjjrVun(rJpbms'u"+s'kq2qb[#klVR7Fs#p6M
+rC-Z[o0`IAs#'U,pGMt*kr&,grrDjLs!mn'rB^&T[7gBtp&FVarCclcqb-`cq+LYos&Skeqc<Mc
+q,[AcpK$`Us&SkepK$fWqc88 at ND'<Or;cNjs%E at ls%E:jM?!SUX8d\~>
+[K$1*JP4HbnLX>VobN,Y_>hF/fDjIBrrDf5s*O"MkI^8go;1^OopYc<rIaj)q1J3^j_ablj'pnH
+jo>8Zmn<CUJP2+ur;cF^r;aH&a8c/>JcDGDrrAaBrr at WM[K$1*q>^Bnj8\uVJP1Peq+L_fYtP#q
+s%E=js8Doqq>KdLn*]Z5naQSKn^[ZmoCDGDnb)GGrrDlhq=speoDdS/mIU#Mqt'^ap&EA;rN`@#
+s7>XWqt':UnalGQpZUl5hrrtFji6Vjl^I:&s8W#tp&G&/ruqDZr;_]SrrB,"J,~>
+[K$1*J["sSgUm at Ilg=T=s5j4DJcERd_uA9ffDbdMp\t2uZ2X"fXoA(p_>`QrrrE))WW)M\nc$/l
+\*3_FrK6^-rK5Rbl-[QOrr at WMU&Y,mU&Y,mJcE.Xr;cZnr;bmXqZ)2Oj06e?bJsR:j3d2KjllZ5
+s7?3hs2=lUqm?78s0;O4qnr0<lbiD=s47(jrQbAhoA';ms5!M0pYGl.l.u$krrDlRs69F:rSdAJ
+YQ"4pci3mKJc:6"Sc8Zhr;cNjs8N&(s8MrsM?!SUX8d\~>
+\,Z7(JP4Tfh%kSAhuEWThuCekfDj;mrrA`cl2S4cr;cdhp]&9,j8X['JP4Zhr;aN(aoDA at JcDGD
+SH+6 at ZiBUsl2UV\rVufrJP1PeWD!!cs(_Lms).jCqc!N$qcikmq-35_rC-HOs#p6MqaL$BrBUB?
+pG)J$rA!t&q'u=ipG)[Jq(_mrq)/1#rrDTh[nHa%p&Ft`pK%)_qc<GarDrSas&SecrDrSarDrYc
+qc;TIrDr;Ys&T."JP2+un,MoNrr at uWrrB,"J,~>
+\,Z7(JP4Tfq(2+\o+loWhuEWThuCgSfDj=>rrD`3qn(aipUft"nYQ8Sl2URJq2Y9'qi:K)nTaG<
+r?;,Vp]'Pgh,`S9k=bbSJP1PepIkGb]h?KIrr at WMU&Y,mTn!(BJcE(Vo)S%TqZ-Tpr;_CAJP2t8
+p](9lrVliqn*TT3lgOH7q=4:2q:YT7p[dqInb)SKrrE)ms7c-[s6'C^nc.A-n+6ASp[eFap&G!^
+Jc>ECq=F4Ws/5\aoD\.Kq>U!Ln+6M6j65ILji6Phm@*F&n,Moprr at uWrrB,"J,~>
+\,Z7(J[!b<s68k:rUBdIrTSn5huEWThuCgtfDj>!rrAbll2S6lrNcD$p]&;5j8[1!rU].Mn+65O
+^%8_shqe6nh;.&;aoDA at JcDGDrrAbmrr@WMZiBUsl2UV\rVufrJ["IEc+D0=h9k]Ihrsh7s1/*J
+rNuI:s0V[5q8<$<mDJnJpWNTfqoel^n_F)ks5!G.q;)#.p"fH.rTs:;rrDlRs6TR;s3CWEnc-#r
+p&BUBh>[G[Jc:f2n,MqWrr at uWrrB,"J,~>
+\,Z7(JP4Tfh%kSAhuEWThuCekfDj;mrrA`cl2S4cr;cdhp]&9,j8X['JP4Zhr;aN(aoDA at JcDGD
+SH+6 at ZiBUsl2UV\rVufrJP1PeWD!!cs(_Lms).jCqc!N$qcikmq-35_rC-HOs#p6MqaL$BrBUB?
+pG)J$rA!t&q'u=ipG)[Jq(_mrq)/1#rrDTh[nHa%p&Ft`pK%)_qc<GarDrSas&SecrDrSarDrYc
+qc;TIrDr;Ys&T."JP2+un,MoNrr at uWrrB,"J,~>
+\,Z7(JP4Tfq(2+\o+loWhuEWThuCgSfDj=>rrD`3qn(aipUft"nYQ8Sl2URJq2Y9'qi:K)nTaG<
+r?;,Vp]'Pgh,`S9k=bbSJP1PepIkGb]h?KIrr at WMU&Y,mTn!(BJcE(Vo)S%TqZ-Tpr;_CAJP2t8
+p](9lrVliqn*TT3lgOH7q=4:2q:YT7p[dqInb)SKrrE)ms7c-[s6'C^nc.A-n+6ASp[eFap&G!^
+Jc>ECq=F4Ws/5\aoD\.Kq>U!Ln+6M6j65ILji6Phm@*F&n,Moprr at uWrrB,"J,~>
+\,Z7(J[!b<s68k:rUBdIrTSn5huEWThuCgtfDj>!rrAbll2S6lrNcD$p]&;5j8[1!rU].Mn+65O
+^%8_shqe6nh;.&;aoDA at JcDGDrrAbmrr@WMZiBUsl2UV\rVufrJ["IEc+D0=h9k]Ihrsh7s1/*J
+rNuI:s0V[5q8<$<mDJnJpWNTfqoel^n_F)ks5!G.q;)#.p"fH.rTs:;rrDlRs6TR;s3CWEnc-#r
+p&BUBh>[G[Jc:f2n,MqWrr at uWrrB,"J,~>
+^&Rs0q>^BnJP4fli>/Qqrr at oUcV)ggcV+9<RnN#GZV1&mcV*6sJP1Peq+L_fhb3tLs%E:j^IucM
+rr at WMU&UY`JcE"Tq#Ka\qZ-6fr;_CAJP3=Bnc/WLs&oA#rEfA"q-3SiqciGarC-HOs#p6MqaKs@
+s$6TApG)P&q_ at h&q'u1eq(_mLq(_gpq)/1Fn,Kpkp&Fh\qc<A_s&R05s&SecrDq`Is&S;Urr at UC
+RnN\[nc.iHr;_oYrrB,"J,~>
+^&Rs0q>^BnJP4flo-*Q<XoJD$M>toXec3t8rrE)=n%7D[q5*Vco;28Ol2U^Nq2XcnnTa/4p]'Vi
+j&Y.=JP1Peq+L_fhb3tLs%E:j^IucMrr at WMU&Y,mTn!(BJcE"Tq#Ka\qZ-6fr;_CAJP3=Bnc/Xg
+s2a`tlgEm'oC2_KpXT)mqss at Mp%7eIp%JCcqtK^Ws2OO-gZ\+trVlK]p&FjZO8f%JoD\FSp\t3V
+s7?8gq=FF]rTNS=s8MELp[e(6mHENVji6Phq5*\OmuIE8rrDThmqqr2r;_oYrrB,"J,~>
+^&Rs0q>^BnMm1aDs2OHnrUBdIrTUHarr at oUci2Jpci3qES,V[PZi9_!ci2o'`W#c+li-)=qu5RG
+q<7#5\*3eHs,l3ps,m?;rK6@#f?qeArr at WMU&Y,mU&Y,mJcE"Tq#Ka\qZ-6fr;_DQpTVKGe]-Fm
+jk]1bnc/R-s1eN>qnMs:pVZm<mDJnJpWNTfqoel^n(drks5!G.qq_/.pYGZ0q<[q9rrDlRrTs at 9
+s8MKe\c2:%Jc=@%s0 at 4TS,WGnrrDThl2LV]O8o4[X8d\~>
+^&Rs0q>^BnJP4fli>/Qqrr at oUcV)ggcV+9<RnN#GZV1&mcV*6sJP1Peq+L_fhb3tLs%E:j^IucM
+rr at WMU&UY`JcE"Tq#Ka\qZ-6fr;_CAJP3=Bnc/WLs&oA#rEfA"q-3SiqciGarC-HOs#p6MqaKs@
+s$6TApG)P&q_ at h&q'u1eq(_mLq(_gpq)/1Fn,Kpkp&Fh\qc<A_s&R05s&SecrDq`Is&S;Urr at UC
+RnN\[nc.iHr;_oYrrB,"J,~>
+^&Rs0q>^BnJP4flo-*Q<XoJD$M>toXec3t8rrE)=n%7D[q5*Vco;28Ol2U^Nq2XcnnTa/4p]'Vi
+j&Y.=JP1Peq+L_fhb3tLs%E:j^IucMrr at WMU&Y,mTn!(BJcE"Tq#Ka\qZ-6fr;_CAJP3=Bnc/Xg
+s2a`tlgEm'oC2_KpXT)mqss at Mp%7eIp%JCcqtK^Ws2OO-gZ\+trVlK]p&FjZO8f%JoD\FSp\t3V
+s7?8gq=FF]rTNS=s8MELp[e(6mHENVji6Phq5*\OmuIE8rrDThmqqr2r;_oYrrB,"J,~>
+^&Rs0q>^BnMm1aDs2OHnrUBdIrTUHarr at oUci2Jpci3qES,V[PZi9_!ci2o'`W#c+li-)=qu5RG
+q<7#5\*3eHs,l3ps,m?;rK6@#f?qeArr at WMU&Y,mU&Y,mJcE"Tq#Ka\qZ-6fr;_DQpTVKGe]-Fm
+jk]1bnc/R-s1eN>qnMs:pVZm<mDJnJpWNTfqoel^n(drks5!G.qq_/.pYGZ0q<[q9rrDlRrTs at 9
+s8MKe\c2:%Jc=@%s0 at 4TS,WGnrrDThl2LV]O8o4[X8d\~>
+`W,`6n,N=dJP5)tjVIkhV>pPq_>jH6c2Z<efDircrrD:VrrB;sl2T.(r;c.Vp]&]8iW"I%JP5`1
+rrCeHrrE!jr;aZ,c2[eDJcDGDSH+6 at Q2gjal2U\^JP1Pe_+X_,n,ND\s%WGps&8r(qc!Mkqci_i
+qciGaqaL<Os#p<Oq*k<DnO*=6oeH>$q_ at t*od]V]rA"<Pq(_gpq_eC.qb-DX^J"8"oh5<ck=baR
+JP1PeThFeQhb3nJQiI'cs8W*!X8d\~>
+`W,`6n,N=dJP5)tpEAu at s%B3grrBn8r;b+Be_SjWq7G1srO`(0mCW>$s((/onYQ&cnYPuKl2UdP
+qi:9#l$35Fr?:KDp]'PgkuQdCJP1PepIkMdgIqPHrCd(h_+W&Qrr at WMU&Y,mTn!(BJcD#8rrD<`
+r;_CAJP3gPr;c<ds%EChrQ+TtjmMO)n*p5Ep!s#op[[qIrUf^Snb3"WrrDlhp%\F(n,M5-n+6SC
+p[e(Xp%.;Es0D[&s7?!arU]^]rU]^]s7>4Kp[e.Ys60.Iqu6KVp%/([qrmG=rS?f's7>X6p#tG`
+ji6JfnYQ2Qm>gT6mqqT(r;`2arrE*!rrB,"J,~>
+`W,`6n,N=dQ*AfNrPn<ns7#pIs69R>V>pPq_>jH6c2Z>nfDitlrrD<_s0Ap/l2T01rNbbgp]&_A
+iW$mrp%._Qj7E<MiUc[)mIRsRpYGk3gYMmlrS at F7oA.a?c2[eDJcDGDrrAbmrr at WMQ2gjal2U\^
+JZu\sh8\@"h;.\drLE?Vs8N&6rPnlPs0V[<s24`Dou$[:mDJhHq9/fhrQG#^s4Qqts5!A,qq_/.
+qq^r0p$DY9rrDlRrTsF;s5EkSn,L0%p&E_ErN_"RJc;ABmJl)Cr;`2arrE*!rrB,"J,~>
+`W,`6n,N=dJP5)tjVIkhV>pPq_>jH6c2Z<efDircrrD:VrrB;sl2T.(r;c.Vp]&]8iW"I%JP5`1
+rrCeHrrE!jr;aZ,c2[eDJcDGDSH+6 at Q2gjal2U\^JP1Pe_+X_,n,ND\s%WGps&8r(qc!Mkqci_i
+qciGaqaL<Os#p<Oq*k<DnO*=6oeH>$q_ at t*od]V]rA"<Pq(_gpq_eC.qb-DX^J"8"oh5<ck=baR
+JP1PeThFeQhb3nJQiI'cs8W*!X8d\~>
+`W,`6n,N=dJP5)tpEAu at s%B3grrBn8r;b+Be_SjWq7G1srO`(0mCW>$s((/onYQ&cnYPuKl2UdP
+qi:9#l$35Fr?:KDp]'PgkuQdCJP1PepIkMdgIqPHrCd(h_+W&Qrr at WMU&Y,mTn!(BJcD#8rrD<`
+r;_CAJP3gPr;c<ds%EChrQ+TtjmMO)n*p5Ep!s#op[[qIrUf^Snb3"WrrDlhp%\F(n,M5-n+6SC
+p[e(Xp%.;Es0D[&s7?!arU]^]rU]^]s7>4Kp[e.Ys60.Iqu6KVp%/([qrmG=rS?f's7>X6p#tG`
+ji6JfnYQ2Qm>gT6mqqT(r;`2arrE*!rrB,"J,~>
+`W,`6n,N=dQ*AfNrPn<ns7#pIs69R>V>pPq_>jH6c2Z>nfDitlrrD<_s0Ap/l2T01rNbbgp]&_A
+iW$mrp%._Qj7E<MiUc[)mIRsRpYGk3gYMmlrS at F7oA.a?c2[eDJcDGDrrAbmrr at WMQ2gjal2U\^
+JZu\sh8\@"h;.\drLE?Vs8N&6rPnlPs0V[<s24`Dou$[:mDJhHq9/fhrQG#^s4Qqts5!A,qq_/.
+qq^r0p$DY9rrDlRrTsF;s5EkSn,L0%p&E_ErN_"RJc;ABmJl)Cr;`2arrE*!rrB,"J,~>
+a8c/>jo>2XJP5<%kn\jMU]9(Aec3T]rrD4TrrB/ol2S at gp]&u at huD_0rr@UCJP4rpr;a`.dJs.F
+JcDGDSH+6 at JcGKEr;_CAJP5f3r;b;>n,N2Vs%iSrpJ_)gqciYgs'+ecq*k6Qq`XsMq*k<DnO*=8
+o.g8&pG)\*od]JYs"XNRq(_gps"XI0rA"+ at n,L@"p&BS9JP1Peq+L,Tfh;, at S,`Kgs8W*!X8d\~>
+a8c/>jo>2XJP5<%rup\DJcDMFgYLE[ot0&"ot15(lb!,"s((/ol_XWco;1uGl2U^Bo7QRXs)%XX
+j_abllXKBbhuD_0rr at UCJP4rpr;a`.dJs.FJcDGDrrAaBrr at WMJcGKEr;_CAJP5f3r;b;>n,N2V
+s6]d+n*TH/naGr9p$qq0p"B<7nalYMoC_YIs7cNnp%S4Uq8Vn'h<=V)q<7_Ip&FRRp&=p]p\t']
+q>U3]q>U3]q>U9_p\t-_oD\FSqu6ETp%/4_pZV;Ap#u)?pYG<%jk]t#iR-c,l*0KMm>gT6qfqdN
+mpc5rr<rQ(S,`Kgs8W*!X8d\~>
+a8c/>jo>2XT<QqZpVumnrUB^Gs65+7U]9*Jec3VfrrD6]s0Ad+l2SBpp]'"IhuDa9s0Cbcn+6;Q
+_t39ZoCKTX^YSjNs4tZAdJs.FJcDGDrrAbmrr at WMJcGKEr;_b[\\$\;hpMDYrK63tn*'6?rU^!e
+s2=lUpV6aGqmc78s1%C4q9Jr^qptejq9K#nn_F0.oAT`*pYl/.p$)#5s5EtXq;M;=s5Eq4rSdSO
+n,LB+p&BUBJc:6"q>Td]g&CrUr;`>errE*!rrB,"J,~>
+a8c/>jo>2XJP5<%kn\jMU]9(Aec3T]rrD4TrrB/ol2S at gp]&u at huD_0rr@UCJP4rpr;a`.dJs.F
+JcDGDSH+6 at JcGKEr;_CAJP5f3r;b;>n,N2Vs%iSrpJ_)gqciYgs'+ecq*k6Qq`XsMq*k<DnO*=8
+o.g8&pG)\*od]JYs"XNRq(_gps"XI0rA"+ at n,L@"p&BS9JP1Peq+L,Tfh;, at S,`Kgs8W*!X8d\~>
+a8c/>jo>2XJP5<%rup\DJcDMFgYLE[ot0&"ot15(lb!,"s((/ol_XWco;1uGl2U^Bo7QRXs)%XX
+j_abllXKBbhuD_0rr at UCJP4rpr;a`.dJs.FJcDGDrrAaBrr at WMJcGKEr;_CAJP5f3r;b;>n,N2V
+s6]d+n*TH/naGr9p$qq0p"B<7nalYMoC_YIs7cNnp%S4Uq8Vn'h<=V)q<7_Ip&FRRp&=p]p\t']
+q>U3]q>U3]q>U9_p\t-_oD\FSqu6ETp%/4_pZV;Ap#u)?pYG<%jk]t#iR-c,l*0KMm>gT6qfqdN
+mpc5rr<rQ(S,`Kgs8W*!X8d\~>
+a8c/>jo>2XT<QqZpVumnrUB^Gs65+7U]9*Jec3VfrrD6]s0Ad+l2SBpp]'"IhuDa9s0Cbcn+6;Q
+_t39ZoCKTX^YSjNs4tZAdJs.FJcDGDrrAbmrr at WMJcGKEr;_b[\\$\;hpMDYrK63tn*'6?rU^!e
+s2=lUpV6aGqmc78s1%C4q9Jr^qptejq9K#nn_F0.oAT`*pYl/.p$)#5s5EtXq;M;=s5Eq4rSdSO
+n,LB+p&BUBJc:6"q>Td]g&CrUr;`>errE*!rrB,"J,~>
+VuQbss8W#tJP5T-m2#^pJcFd1rrB\2j%Il$_+Xe.ND&I7lV%6Xf1Yl<j%J;0gIqPHJP2h4r;aT*
+r;af0e,T at HJcDGDSH+6@JcG?Ar;_CAJP4TfrrE!jn,MuPs%iYtpJ_#eqciYgs'+ecq*k<Ls%*#M
+s%)rSrAjI:s#9O(s#'O*s#'O#m3_i5pG)Uns"XO2s!n%$oh5;boDcp*p&F&Frr at UCJP2P,s8W#t
+oDd!,r;`>errB,"J,~>
+VuQbss8W#tJP5T-m2#^pJcFd1rrB\2j5&2an[mi$s02%*rrDAsh6?.?rL3DUo:#W<kPt.+q0;oj
+qfqXJm:,him:,fjhuDG(rr at UCV+^ae^J"M*`Cn\[r;_EKU&Y,mTn!(BJcC<$oDeahJP1Pef1Z,D
+rCcVZo1T,Ns2aZrna>l7n*of9s75d7s4m/9oCVYIoCi1anb;qUou@"3oDdY1qt'LEs7>p`rTNeC
+q>UEcs/5hequ6?]rVlK]rVlQ_rVlK]qu6E_p\t3VoCN"]pZVACn`]lAqq^r/qt'@6p#tMnj3cu.
+kHO9Km>h5Hr;cHho6C4Nmpb`dr;`>errB,"J,~>
+VuQbss8W#tWNb!dou?anqsaRGs4r8+j8],Z]Dppje,R8`rrA&XkPslIs0C8Up]':QhuDI1s0Cti
+lgt#Q_t3'Tq=D;`qq_45_qk:=rJ&;=e,T at HJcDGDrrAbmrr@WMJcG?Ar;`+e\\$b=h9k'7p#uFG
+rTN_MoCN"#s2OfJrPSNBo>CU<lbiPDs3^kiqptejq9JrloA'B0oAT`*pYl/.pZ_)3rrDfPrTsRC
+s5!_>s5`kPrrDZjao:u5j8T(aJc:6"Sc8Zhr;cHhbPqG?S,`KgX8d\~>
+VuQbss8W#tJP5T-m2#^pJcFd1rrB\2j%Il$_+Xe.ND&I7lV%6Xf1Yl<j%J;0gIqPHJP2h4r;aT*
+r;af0e,T at HJcDGDSH+6@JcG?Ar;_CAJP4TfrrE!jn,MuPs%iYtpJ_#eqciYgs'+ecq*k<Ls%*#M
+s%)rSrAjI:s#9O(s#'O*s#'O#m3_i5pG)Uns"XO2s!n%$oh5;boDcp*p&F&Frr at UCJP2P,s8W#t
+oDd!,r;`>errB,"J,~>
+VuQbss8W#tJP5T-m2#^pJcFd1rrB\2j5&2an[mi$s02%*rrDAsh6?.?rL3DUo:#W<kPt.+q0;oj
+qfqXJm:,him:,fjhuDG(rr at UCV+^ae^J"M*`Cn\[r;_EKU&Y,mTn!(BJcC<$oDeahJP1Pef1Z,D
+rCcVZo1T,Ns2aZrna>l7n*of9s75d7s4m/9oCVYIoCi1anb;qUou@"3oDdY1qt'LEs7>p`rTNeC
+q>UEcs/5hequ6?]rVlK]rVlQ_rVlK]qu6E_p\t3VoCN"]pZVACn`]lAqq^r/qt'@6p#tMnj3cu.
+kHO9Km>h5Hr;cHho6C4Nmpb`dr;`>errB,"J,~>
+VuQbss8W#tWNb!dou?anqsaRGs4r8+j8],Z]Dppje,R8`rrA&XkPslIs0C8Up]':QhuDI1s0Cti
+lgt#Q_t3'Tq=D;`qq_45_qk:=rJ&;=e,T at HJcDGDrrAbmrr@WMJcG?Ar;`+e\\$b=h9k'7p#uFG
+rTN_MoCN"#s2OfJrPSNBo>CU<lbiPDs3^kiqptejq9JrloA'B0oAT`*pYl/.pZ_)3rrDfPrTsRC
+s5!_>s5`kPrrDZjao:u5j8T(aJc:6"Sc8Zhr;cHhbPqG?S,`KgX8d\~>
+TE"iiJP5f3nJ;-tJcFX-rrBV0lV#S(]hAA*LJ-h1o1T)`eP#Z:ktBk4JP1PeZV1;us%E:ja%On]
+rr at WMU&UY`JcC<$n,NCfJP1PegIqPHn,McJrE8qpqb[/ogJI]7rB^<Ds%*#Uq`478rAXC(s#'O*
+od]>UrrDdJr?hP!s#'g+s"X+<rrDThd7a*2j%KCPJP5#rr;_CA_b9Iu^J"S,ScA]iX8d\~>
+TE"iiJP5f3nJ;-tJcFX-rrBV0leTnelauK&pTX8$rrDAsh6?(=q3q2WnXB96kPt at 1qfr,lq0;@F
+mpc%klXKlph>`%!JP3=BrrE'lr;al2e,TFJJcDGDrrAaBrr at WMJcG3=rr at UCJP4`jrrDNfm7[E!
+p[.G;n*f`7n+$5Eq:YMtq=F.Klh1#GrrE#knb<(Yo>^e1nc.##oDeXMnal_Ys7?8gq=FXcjn&N9
+jn&HMp[e:]q<7MCoB?)Cn*'`Aq;)">q<7kMleVO'q9eTcs2O0JrO_=6l*0KMl]1H6m<J)/moK0U
+rrAVirrB,"J,~>
+TE"ii[BS2nn](InrUBdIs69R>JcFX-rrBV0li,61^&J$3L]6K:oD\cqec,=Cl2KN=_u?S*S`m]A
+p!Neos3^e"a3iB9rr at WMU&Y,mU&Y,mJcC<$n,NCfSZoZ:ho=L"h;.Vbs.&QXn+6SYrPnZJqnr<@
+gV`j4rR(Mns3(;bqq:SrrTNq5s5!G.p$(l1rrDfPrTsRCs5!_>s5ESKrrDThdJib;j8T(aJc=^/
+rN_"R_uB-)^]+65ScA]iX8d\~>
+TE"iiJP5f3nJ;-tJcFX-rrBV0lV#S(]hAA*LJ-h1o1T)`eP#Z:ktBk4JP1PeZV1;us%E:ja%On]
+rr at WMU&UY`JcC<$n,NCfJP1PegIqPHn,McJrE8qpqb[/ogJI]7rB^<Ds%*#Uq`478rAXC(s#'O*
+od]>UrrDdJr?hP!s#'g+s"X+<rrDThd7a*2j%KCPJP5#rr;_CA_b9Iu^J"S,ScA]iX8d\~>
+TE"iiJP5f3nJ;-tJcFX-rrBV0leTnelauK&pTX8$rrDAsh6?(=q3q2WnXB96kPt at 1qfr,lq0;@F
+mpc%klXKlph>`%!JP3=BrrE'lr;al2e,TFJJcDGDrrAaBrr at WMJcG3=rr at UCJP4`jrrDNfm7[E!
+p[.G;n*f`7n+$5Eq:YMtq=F.Klh1#GrrE#knb<(Yo>^e1nc.##oDeXMnal_Ys7?8gq=FXcjn&N9
+jn&HMp[e:]q<7MCoB?)Cn*'`Aq;)">q<7kMleVO'q9eTcs2O0JrO_=6l*0KMl]1H6m<J)/moK0U
+rrAVirrB,"J,~>
+TE"ii[BS2nn](InrUBdIs69R>JcFX-rrBV0li,61^&J$3L]6K:oD\cqec,=Cl2KN=_u?S*S`m]A
+p!Neos3^e"a3iB9rr at WMU&Y,mU&Y,mJcC<$n,NCfSZoZ:ho=L"h;.Vbs.&QXn+6SYrPnZJqnr<@
+gV`j4rR(Mns3(;bqq:SrrTNq5s5!G.p$(l1rrDfPrTsRCs5!_>s5ESKrrDThdJib;j8T(aJc=^/
+rN_"R_uB-)^]+65ScA]iX8d\~>
+S,`EeJP5YOs%@qCqu?TpQ2g_Sa8`VArrC_FrrB)mjo<Lsp]'hXg&HUrK1l4EX\8ZorCd(ha\11a
+rr at WMU&UY`JcC<$mJm+bJP1Pej%Jk at ktD%NrE8qprD<;oh,*i7rB^HArB9sFq)S1:q`"1&s"=+%
+r?h=is!-nXrrDdJr?hP!s"==$s"Wt8nc.-4oDaA7JP1bkr;cBf[nHZ"U&Y,mX8d\~>
+S,`EeJP5YOs%@qCqu?TpQ2ga;a8b85n&Ft'o=P#&l+?Jis((T&l)"!?s/#=Uo8_r4s+BidmqqN&
+p]'hog&HUrK1l4EX\8ZorCd(ha\11arr at WMU&Y,mTl9r2JcC<$mJm+bJP1Pej%Jk at ktD'RrQ+s)
+n*]N1oC1l3qssR9q:tl=oCV)9qtC$iqtBRSn&Fnte`cW)p#u#=s60.IrTNqGrTO"IqrmeGrTNqG
+s60(Gs8M]Tqt&G'oA06+rR'rep!NBepVuUJo=O\8kHO9Km>h,Fnc/!$s)%:8moJmMr;`PkrrB,"
+J,~>
+S,`Ee^Tc8#n&G=ns7#pIs4r8+qu?TpQ2ga\a8`XJrrCaOs0A^)jo<O'p]'jag&K%jV=VOeqq^At
+rS at L9_;4M+s+^L"rJ&GAec5XLJcDGDrrAbmrr at WMJcG-;r;`b"\\$b=h9k'7n*'6?n+6GUs1nTQ
+q7lmGq7,7upWi`bs4mS(q9JfhpY>Z0p#5r3q;M;=q<@qJmHjiQpYl);s5F"=s69RBn,DkWec,1?
+Jc:6"L]75Pnc-)tr;`PkrrB,"J,~>
+S,`EeJP5YOs%@qCqu?TpQ2g_Sa8`VArrC_FrrB)mjo<Lsp]'hXg&HUrK1l4EX\8ZorCd(ha\11a
+rr at WMU&UY`JcC<$mJm+bJP1Pej%Jk at ktD%NrE8qprD<;oh,*i7rB^HArB9sFq)S1:q`"1&s"=+%
+r?h=is!-nXrrDdJr?hP!s"==$s"Wt8nc.-4oDaA7JP1bkr;cBf[nHZ"U&Y,mX8d\~>
+S,`EeJP5YOs%@qCqu?TpQ2ga;a8b85n&Ft'o=P#&l+?Jis((T&l)"!?s/#=Uo8_r4s+BidmqqN&
+p]'hog&HUrK1l4EX\8ZorCd(ha\11arr at WMU&Y,mTl9r2JcC<$mJm+bJP1Pej%Jk at ktD'RrQ+s)
+n*]N1oC1l3qssR9q:tl=oCV)9qtC$iqtBRSn&Fnte`cW)p#u#=s60.IrTNqGrTO"IqrmeGrTNqG
+s60(Gs8M]Tqt&G'oA06+rR'rep!NBepVuUJo=O\8kHO9Km>h,Fnc/!$s)%:8moJmMr;`PkrrB,"
+J,~>
+S,`Ee^Tc8#n&G=ns7#pIs4r8+qu?TpQ2ga\a8`XJrrCaOs0A^)jo<O'p]'jag&K%jV=VOeqq^At
+rS at L9_;4M+s+^L"rJ&GAec5XLJcDGDrrAbmrr at WMJcG-;r;`b"\\$b=h9k'7n*'6?n+6GUs1nTQ
+q7lmGq7,7upWi`bs4mS(q9JfhpY>Z0p#5r3q;M;=q<@qJmHjiQpYl);s5F"=s69RBn,DkWec,1?
+Jc:6"L]75Pnc-)tr;`PkrrB,"J,~>
+RK*-as8S!Mq%j!'JcFX-r;_EKmJjLcrrCYDrrB#koDeahoDd32p](1bfDiTYrr at UC_b:"0ThGCc
+a\17crr at WMU&UY`JcC<$l2U\^JP1PepIkMds%E:js%Dh\j%KDJs&o.rqb[)mh,*o9qa(6?rB9sF
+pGr%:q`"1&s"=+%r?hCkr?L\VrrE'Gq(_ans"XO2rA!\4nc.?:oDe8Pr;_CAJP2\0mJj at _qZ*Jm
+rrB,"J,~>
+RK*-as8S!Mq%j!'JcFX-r;_EKmJl(UpVuU)o=P#&l+?Dgs((Z(kG at d=rJpQ>o8`j'oDeahoDeK.
+nSRZ&p](2$fDiTYrr at UC_b:"0ThGCca\17crr at WMU&Y,mTl9r2JcC<$l2U\^JP1PepIkMds%E:j
+s%Dh\j%KF>s2aHmkO8$3l1+T?pY#N#p[e"Klh1#GrrE)moCr(UmDe\rgZ\8/n`^#ErMTVcqrmkI
+q<7_IpZVMGq<7YGq<7YGqrm_Es5!A3rU]F?s5!/-mG7g+pX/Nen'Usen](=Nl+?o6l*0EKm>gT6
+ms+G at qdSqnktCmRV>pPqX8d\~>
+RK*-as8U9He[t4gs5Nq;s3ZDthuEWTJcG-;Zi9t)fDbfUWW)Mhr;cHhdJin?rVkFK_uBW+s/4'3
+rTNG9_<CLHmHFB%s,k:Vh9l7WajJ`?rr at WMU&Y,mU&Y,mJcC<$l2U\^Z*:jPgW&-uh;.njs.',Q
+rLEoOn,MqLoD\d.s2OlLqnr6>h8B'6qpGH!rRUeipY#Atqrm_3s5a"7rTsFGrU9.?rrE)cq;M5;
+s5F"6rSd/Cnc.ACoDe:YrN_"RJc;ABmJjBhs0DS'V>pPqX8d\~>
+RK*-as8S!Mq%j!'JcFX-r;_EKmJjLcrrCYDrrB#koDeahoDd32p](1bfDiTYrr at UC_b:"0ThGCc
+a\17crr at WMU&UY`JcC<$l2U\^JP1PepIkMds%E:js%Dh\j%KDJs&o.rqb[)mh,*o9qa(6?rB9sF
+pGr%:q`"1&s"=+%r?hCkr?L\VrrE'Gq(_ans"XO2rA!\4nc.?:oDe8Pr;_CAJP2\0mJj at _qZ*Jm
+rrB,"J,~>
+RK*-as8S!Mq%j!'JcFX-r;_EKmJl(UpVuU)o=P#&l+?Dgs((Z(kG at d=rJpQ>o8`j'oDeahoDeK.
+nSRZ&p](2$fDiTYrr at UC_b:"0ThGCca\17crr at WMU&Y,mTl9r2JcC<$l2U\^JP1PepIkMds%E:j
+s%Dh\j%KF>s2aHmkO8$3l1+T?pY#N#p[e"Klh1#GrrE)moCr(UmDe\rgZ\8/n`^#ErMTVcqrmkI
+q<7_IpZVMGq<7YGq<7YGqrm_Es5!A3rU]F?s5!/-mG7g+pX/Nen'Usen](=Nl+?o6l*0EKm>gT6
+ms+G at qdSqnktCmRV>pPqX8d\~>
+RK*-as8U9He[t4gs5Nq;s3ZDthuEWTJcG-;Zi9t)fDbfUWW)Mhr;cHhdJin?rVkFK_uBW+s/4'3
+rTNG9_<CLHmHFB%s,k:Vh9l7WajJ`?rr at WMU&Y,mU&Y,mJcC<$l2U\^Z*:jPgW&-uh;.njs.',Q
+rLEoOn,MqLoD\d.s2OlLqnr6>h8B'6qpGH!rRUeipY#Atqrm_3s5a"7rTsFGrU9.?rrE)cq;M5;
+s5F"6rSd/Cnc.ACoDe:YrN_"RJc;ABmJjBhs0DS'V>pPqX8d\~>
+QiI'cs8W#trVr-UrtbQ+rt^1cJcE^hY=nlqJP5`1g]-#$dJp[Krr at UCJP4rpr;b#6g&M'PJcDGD
+SH+6 at JcFj3r;_CAJP5f3rrDThgIqQAs&o4tq,$rmgJI]7rB^<=s#p0HpGr%:q)A+(r@[t%q^21i
+r?L\VrrE'Gq(_ans"XO+s!n%!lV$^HiCikDJP1PeND&[=Vb@$is%E:jWW2tuX8d\~>
+QiI'cs8W#trVr-UrtbQ+rt^1cJcE^hgUm@&kHOWkrrD;qh51.Ul)!p=q2Y?@nW*L!g]-_Zm:+KC
+[nH`$JP1PeiCj+Lb=gOgrr at WMU&Y,mTl9r2JcC<$jo>8ZJP1Peq+L_fnc.E<s&T*AkO.[)n*ol;
+oCDk5p"]H9nauAEnb2t_oCr(Us8;?*rR(*6iTTt7lfe6;pZVSIp#uGIoB?5Gp#uAGp#uAGpZVMG
+q;(f/s5!/-q;(`-leV*Yq;)"hld=t:s3^#AkHO9Kl]1B4ms+;<qdS_hlV%6Xs%E:jWW2tuX8d\~>
+QiI'cs8W#trVtKRf=U at gs3^l.rR(Z%JcC<$`W*. at rr@WLp\rqIg]#V#hu<TGkPk5Is/499pZV#9
+_<C:Bp#s*Fe'\,Ke'\!2g&M'PJcDGDrrAbmrr at WMJcFj3r;aI6]=ZJ1kL&2Cn`^"Cnc/(LmJd.5
+s2OrNq8<*>gV`j4rR(Mts47"kpY#Atq<7Y5rT*k7qs=4ErU9.?rrE)cq;M5;s5F"=s69RDli-AQ
+iVrNMJc:6"NW/>FVuH^os7?0hWW2tuX8d\~>
+QiI'cs8W#trVr-UrtbQ+rt^1cJcE^hY=nlqJP5`1g]-#$dJp[Krr at UCJP4rpr;b#6g&M'PJcDGD
+SH+6 at JcFj3r;_CAJP5f3rrDThgIqQAs&o4tq,$rmgJI]7rB^<=s#p0HpGr%:q)A+(r@[t%q^21i
+r?L\VrrE'Gq(_ans"XO+s!n%!lV$^HiCikDJP1PeND&[=Vb@$is%E:jWW2tuX8d\~>
+QiI'cs8W#trVr-UrtbQ+rt^1cJcE^hgUm@&kHOWkrrD;qh51.Ul)!p=q2Y?@nW*L!g]-_Zm:+KC
+[nH`$JP1PeiCj+Lb=gOgrr at WMU&Y,mTl9r2JcC<$jo>8ZJP1Peq+L_fnc.E<s&T*AkO.[)n*ol;
+oCDk5p"]H9nauAEnb2t_oCr(Us8;?*rR(*6iTTt7lfe6;pZVSIp#uGIoB?5Gp#uAGp#uAGpZVMG
+q;(f/s5!/-q;(`-leV*Yq;)"hld=t:s3^#AkHO9Kl]1B4ms+;<qdS_hlV%6Xs%E:jWW2tuX8d\~>
+QiI'cs8W#trVtKRf=U at gs3^l.rR(Z%JcC<$`W*. at rr@WLp\rqIg]#V#hu<TGkPk5Is/499pZV#9
+_<C:Bp#s*Fe'\,Ke'\!2g&M'PJcDGDrrAbmrr at WMJcFj3r;aI6]=ZJ1kL&2Cn`^"Cnc/(LmJd.5
+s2OrNq8<*>gV`j4rR(Mts47"kpY#Atq<7Y5rT*k7qs=4ErU9.?rrE)cq;M5;s5F"=s69RDli-AQ
+iVrNMJc:6"NW/>FVuH^os7?0hWW2tuX8d\~>
+O8o.Yqu<3[rt^1chuE]VJcFp5WD!6kJP5r7rrDddOoKu*K1l.CO%]?MbtHgkrr at WMU&UY`JcC<$
+iW&iVJP1hmrrE!jn,M!4s$6Teq,@)cqciYgrClTTq*k6Jq)875rC-<<rBp<<q(_b!s"X6ps!mgh
+mjA&7r?hCrq^2=ts"==$s!Ho%r;cNjk=bFHpIkMdJP3CDr;_CAmn<WZr;cNjQV78WXoJD$X8d\~>
+O8o.Yqu<3[rt^1chuE]VJcFp5e[seEot15(ot/PHopYKKo:#92s-iP>s#9h-rHOJ)JP1Vgr;_mO
+qZ+l6g].9RJcDGDrrAa2rr at WMJcF^/r;_CAM+djKrCcVZh+RWGs6fp1kO.g-n*ol;n+-GKoA&m.
+nb)5ArrE)mnb;qUo>^INr;cNjkNMO;pZVXIoB?5Gjlla#oB?51p#uG3oB?5GoB?5GpYGZ/qq^l-
+p"fH-rR(/kn'V/is,m?;q8VsPkJl\sl*12Vl_X!/rVufrp&FE(mqqZ*lW2t;r;`u"rrB,"J,~>
+O8o.Yqu>c^e[t.eqpGH#JcFX-rr at WMkPqO\rr at WLrVli&p\p<Th>[0?mJb)roB>`9_s$4<qrn(9
+rK5(TbL-3Ah9kc4g].9RJcDGDrrAbmrr at WMJcF^/r;ag@]=Z8+j3d,IpZVXIrTN_Mn+5fCs3gqe
+q7laCqmc78rPn6Bq9Jrdq:u#'rQb#frS7/2q;M53s5E_=s69 at Jn*L&SrTsF?qs=@As5a4Es6SqJ
+r;cNjkPk)Qp\t2uJc<(VrN_"Rn,E:cr;cNjV>g)Xr;`u"rrB,"J,~>
+O8o.Yqu<3[rt^1chuE]VJcFp5WD!6kJP5r7rrDddOoKu*K1l.CO%]?MbtHgkrr at WMU&UY`JcC<$
+iW&iVJP1hmrrE!jn,M!4s$6Teq,@)cqciYgrClTTq*k6Jq)875rC-<<rBp<<q(_b!s"X6ps!mgh
+mjA&7r?hCrq^2=ts"==$s!Ho%r;cNjk=bFHpIkMdJP3CDr;_CAmn<WZr;cNjQV78WXoJD$X8d\~>
+O8o.Yqu<3[rt^1chuE]VJcFp5e[seEot15(ot/PHopYKKo:#92s-iP>s#9h-rHOJ)JP1Vgr;_mO
+qZ+l6g].9RJcDGDrrAa2rr at WMJcF^/r;_CAM+djKrCcVZh+RWGs6fp1kO.g-n*ol;n+-GKoA&m.
+nb)5ArrE)mnb;qUo>^INr;cNjkNMO;pZVXIoB?5Gjlla#oB?51p#uG3oB?5GoB?5GpYGZ/qq^l-
+p"fH-rR(/kn'V/is,m?;q8VsPkJl\sl*12Vl_X!/rVufrp&FE(mqqZ*lW2t;r;`u"rrB,"J,~>
+O8o.Yqu>c^e[t.eqpGH#JcFX-rr at WMkPqO\rr at WLrVli&p\p<Th>[0?mJb)roB>`9_s$4<qrn(9
+rK5(TbL-3Ah9kc4g].9RJcDGDrrAbmrr at WMJcF^/r;ag@]=Z8+j3d,IpZVXIrTN_Mn+5fCs3gqe
+q7laCqmc78rPn6Bq9Jrdq:u#'rQb#frS7/2q;M53s5E_=s69 at Jn*L&SrTsF?qs=@As5a4Es6SqJ
+r;cNjkPk)Qp\t2uJc<(VrN_"Rn,E:cr;cNjV>g)Xr;`u"rrB,"J,~>
+MuW_Uq>[Kgrt^1cg&M'Pp](0lJcGQGUJ(UeJP6#9rrDFZTDsI8JP1\irrE'lr;b/:h>dKTJcDGD
+SH+6 at JcFR+r;_CAO%]KQn,Ld.s$6Teqc!5cqciqom7d1LqaLBJpGVt=o/Zb:of)h(q(D\%pEoVZ
+mjA&7r?hO`rA"0rru:tms!.Ouj%JqBm7[-Poh5;bJP1PeUJ("SND'3M[K$7,s8W*!X8d\~>
+MuW_Uq>[Kgrt^1cg&M'Pp](0lJcGQGe%=A=pUgG*rO^%Fm at +!MnXB'0rIap+s$QgHqh+QdTDsI8
+JP1\irrE'lr;b/:h>dKTJcDGDrrAa2rr at WMJcFR+r;_CAO%]KQn,M3:oiD+\s3'ftn*ff9n+#l;
+p[e49q;Cf8nb);CrrE#kn+ZkWo>^=Jnc/"?p&F^Ks.'&DpZVM1q<7Y1q<7_3q<7Y1q<7_3pZVS3
+oB>f%rTO"3q<7e)oA0H1pX/Zild>=DpX0#Qlc/t/l+?2apR:]Mm>gT6m<J):mpb`df1Z&B[K$7,
+s8W*!X8d\~>
+MuW_Uq>]uhe[t4gqpGGtJcFF'rrDfnr;_EKq>[5hrr at WLs8N&(mJ`aXh>Zm7oDZ`#mHF<9_s!`K
+_pSL=s3^e"l-\\6h>dKTJcDGDrrAbmrr at WMJcFR+r;b0J]=Z8+h9kcKn`^"Cn,MkJj8T),s2OrN
+pVZm<qnqg at ou$[PqpG/nrQb#frS7)0rSdS5s5E_=p[@S;rrE#as7cKNqs=@Ws5F"Hs5E#;nc/"U
+p&F^as0 at 4TJc;GDmJj$^n+6G?r;a8*rrE*!rrB,"J,~>
+MuW_Uq>[Kgrt^1cg&M'Pp](0lJcGQGUJ(UeJP6#9rrDFZTDsI8JP1\irrE'lr;b/:h>dKTJcDGD
+SH+6 at JcFR+r;_CAO%]KQn,Ld.s$6Teqc!5cqciqom7d1LqaLBJpGVt=o/Zb:of)h(q(D\%pEoVZ
+mjA&7r?hO`rA"0rru:tms!.Ouj%JqBm7[-Poh5;bJP1PeUJ("SND'3M[K$7,s8W*!X8d\~>
+MuW_Uq>[Kgrt^1cg&M'Pp](0lJcGQGe%=A=pUgG*rO^%Fm at +!MnXB'0rIap+s$QgHqh+QdTDsI8
+JP1\irrE'lr;b/:h>dKTJcDGDrrAa2rr at WMJcFR+r;_CAO%]KQn,M3:oiD+\s3'ftn*ff9n+#l;
+p[e49q;Cf8nb);CrrE#kn+ZkWo>^=Jnc/"?p&F^Ks.'&DpZVM1q<7Y1q<7_3q<7Y1q<7_3pZVS3
+oB>f%rTO"3q<7e)oA0H1pX/Zild>=DpX0#Qlc/t/l+?2apR:]Mm>gT6m<J):mpb`df1Z&B[K$7,
+s8W*!X8d\~>
+MuW_Uq>]uhe[t4gqpGGtJcFF'rrDfnr;_EKq>[5hrr at WLs8N&(mJ`aXh>Zm7oDZ`#mHF<9_s!`K
+_pSL=s3^e"l-\\6h>dKTJcDGDrrAbmrr at WMJcFR+r;b0J]=Z8+h9kcKn`^"Cn,MkJj8T),s2OrN
+pVZm<qnqg at ou$[PqpG/nrQb#frS7)0rSdS5s5E_=p[@S;rrE#as7cKNqs=@Ws5F"Hs5E#;nc/"U
+p&F^as0 at 4TJc;GDmJj$^n+6G?r;a8*rrE*!rrB,"J,~>
+M?!GQp&DQqJcC<$^]0itrrC/6r;`B]YQ'k\rr at UCo1T#^JP5Z/r;b/:j8]&XJcDGDSH+6 at JcFF'
+rr at UCPtUTGo1T)`gIqQAs&o4tpJC`ks%qfNqb[)Wqa's7s$?ZRnN$V:of)h(q(D[lpEoVZmjA&7
+r?hO`q_A$rru:tms!.Ojs"<>)nc/2RoDaA7JP2D(r;cBfK1l4E\,ZI.s8W*!X8d\~>
+M?!GQp&DQqJcC<$^]2]nf<G(_s/#_qaeer=rMA\Gs,Qc at nW*Etqi:K)nTb(NYQ'k\rr at UCo1T#^
+JP5Z/r;b/:j8]&XJcDGDrrAa2rr at WMJcFF'rr at UCPtUTGo1T)`j\,>KrQFg#n*ff9n+#l;n+6G3
+q;CZ4oC_SGrrD<Xs8DQ/n^6n,oB>fGqq_)3q;(r3pYGf3p"fZ3p"fT1p"fT1pYG`1q;(l1qpG)m
+s3^Gos604)pYGefp!NZmqo80RmDf1RpUft8q69D$q5*Vcn!a3Ol]1oDnc/!$mqqN&moI\+rrBP.
+rrE*!rrB,"J,~>
+M?!GQp&ERSlc/hLJcC<$^]0l(rrC1?rN`!nYQ*;TlgslMh=LZEmITH's7=.lj5'Zr_;2NHrJ'pk
+h8\LTr;_EKU&Y,mU&Y,mJcC<$g&M'Pfs&$!bJrGen(mHrn,N"Ns/5ngh>[H%s2OrNpVZm<s23s<
+qnr6TqpG/ns3^kln_*rtp#uA5q;hSEp[%YCn*L&SrTsRYqr.M?s7cQPs6p!Ss5;r:nc/4[oDaC@
+Jc;):r;cBfV>frTn`]uQ\,ZI.s8W*!X8d\~>
+M?!GQp&DQqJcC<$^]0itrrC/6r;`B]YQ'k\rr at UCo1T#^JP5Z/r;b/:j8]&XJcDGDSH+6 at JcFF'
+rr at UCPtUTGo1T)`gIqQAs&o4tpJC`ks%qfNqb[)Wqa's7s$?ZRnN$V:of)h(q(D[lpEoVZmjA&7
+r?hO`q_A$rru:tms!.Ojs"<>)nc/2RoDaA7JP2D(r;cBfK1l4E\,ZI.s8W*!X8d\~>
+M?!GQp&DQqJcC<$^]2]nf<G(_s/#_qaeer=rMA\Gs,Qc at nW*Etqi:K)nTb(NYQ'k\rr at UCo1T#^
+JP5Z/r;b/:j8]&XJcDGDrrAa2rr at WMJcFF'rr at UCPtUTGo1T)`j\,>KrQFg#n*ff9n+#l;n+6G3
+q;CZ4oC_SGrrD<Xs8DQ/n^6n,oB>fGqq_)3q;(r3pYGf3p"fZ3p"fT1p"fT1pYG`1q;(l1qpG)m
+s3^Gos604)pYGefp!NZmqo80RmDf1RpUft8q69D$q5*Vcn!a3Ol]1oDnc/!$mqqN&moI\+rrBP.
+rrE*!rrB,"J,~>
+M?!GQp&ERSlc/hLJcC<$^]0l(rrC1?rN`!nYQ*;TlgslMh=LZEmITH's7=.lj5'Zr_;2NHrJ'pk
+h8\LTr;_EKU&Y,mU&Y,mJcC<$g&M'Pfs&$!bJrGen(mHrn,N"Ns/5ngh>[H%s2OrNpVZm<s23s<
+qnr6TqpG/ns3^kln_*rtp#uA5q;hSEp[%YCn*L&SrTsRYqr.M?s7cQPs6p!Ss5;r:nc/4[oDaC@
+Jc;):r;cBfV>frTn`]uQ\,ZI.s8W*!X8d\~>
+L]@ASs8W#tn,LR(JcFF'r;_EKli35CrrA*Qr;b)8_uGQdrr at UCJP4rpr;b5<jo>8ZJcDGDSH+6@
+c2[G:oDeUdXoJ>"JP2h4r;cjjn,M]HrrCkJs%`GipJC`ks&e/Ps%rM[qa's7s$?ZRnN$V:o/HCr
+s!.=do-<cPrrDpCru:nkr?hI^s"=6shb3M>qb-P\s%E:jJP1PeThFeQJP6#9q#Io(rrB,"J,~>
+L]@ASs8W#tn,LR(JcFF'r;_EKli5;Cc`m5ArrBg1l'h@,qjR>@rBpODon3:)q1J9`okhVHM+djK
+JP1PeiCj+Ld7`U$r;_EKU&Y,mTl9r2JcF!po`4U`q#IPsr;_CAV+^aes%Dh\lV%6Xj\,DMs3(0)
+naGr9n+#l;l1=Z)qr%/>nb)5ArrD<Xs7l'&n^6n,qrmYOs5!X9qq_;9oA0H1a5-dCjk]n!pX/fm
+qpG)ms2O`ZrS at 4fp!NHPpX0#QmDe\.q8Vs/q7H0nq691Rl]1B4ms+5:mpb`da\2F0\,ZI.X8d\~>
+L]@ASs8W#tn,ML]mDf%NJcFF'r;_EKli37LrrA,ZrNa]I_uJ9dj7E<Mj7E65p[eE_oCJgBU"ucs
+rJ(@"e&LMLr;_EKU&Y,mU&Y,mJcF!po`4U`q#IPsr;bl^\\$&)hpLoKp#u at Es6/qOn+6MWs0CJ[
+s3^_YpVZm<s17+-s24ZXqpG/ns3^kln_*rtoB>r0s6odMoC)59rrDr_s7cKNrTsLWs5a.Fhu<0G
+qu63es8Mu&Jc:6"U&OHZV>frTmHFM=r;a>,rrB,"J,~>
+L]@ASs8W#tn,LR(JcFF'r;_EKli35CrrA*Qr;b)8_uGQdrr at UCJP4rpr;b5<jo>8ZJcDGDSH+6@
+c2[G:oDeUdXoJ>"JP2h4r;cjjn,M]HrrCkJs%`GipJC`ks&e/Ps%rM[qa's7s$?ZRnN$V:o/HCr
+s!.=do-<cPrrDpCru:nkr?hI^s"=6shb3M>qb-P\s%E:jJP1PeThFeQJP6#9q#Io(rrB,"J,~>
+L]@ASs8W#tn,LR(JcFF'r;_EKli5;Cc`m5ArrBg1l'h@,qjR>@rBpODon3:)q1J9`okhVHM+djK
+JP1PeiCj+Ld7`U$r;_EKU&Y,mTl9r2JcF!po`4U`q#IPsr;_CAV+^aes%Dh\lV%6Xj\,DMs3(0)
+naGr9n+#l;l1=Z)qr%/>nb)5ArrD<Xs7l'&n^6n,qrmYOs5!X9qq_;9oA0H1a5-dCjk]n!pX/fm
+qpG)ms2O`ZrS at 4fp!NHPpX0#QmDe\.q8Vs/q7H0nq691Rl]1B4ms+5:mpb`da\2F0\,ZI.X8d\~>
+L]@ASs8W#tn,ML]mDf%NJcFF'r;_EKli37LrrA,ZrNa]I_uJ9dj7E<Mj7E65p[eE_oCJgBU"ucs
+rJ(@"e&LMLr;_EKU&Y,mU&Y,mJcF!po`4U`q#IPsr;bl^\\$&)hpLoKp#u at Es6/qOn+6MWs0CJ[
+s3^_YpVZm<s17+-s24ZXqpG/ns3^kln_*rtoB>r0s6odMoC)59rrDr_s7cKNrTsLWs5a.Fhu<0G
+qu63es8Mu&Jc:6"U&OHZV>frTmHFM=r;a>,rrB,"J,~>
+rVuNjoDeUdV>pPqj8\46JcC<$]Dmj`rr at UCb=g7_JP1bkrr at UCh+R\HdnAg&rr at WMU&UY`JcF'r
+nGr=`o`2&mr;_CAWCu^[_+Xens%`GipJCfmrE/#PrCR#QrC-TLoeub7nN$V"o/HItq]l%dnK[QN
+rrDp at rtt\hq^2=^s"=<rs!HJns8W#tq>^IfoDaA7ND'9OPtUNEJP5N+r;aJ0rrB,"J,~>
+rVuNjoDeUdV>pPqj8\46JcC<$]DqoNc+DB-o;2He^SU+^j,WY^s*4KpnTaS at qdRtQJP1bkrr@UC
+h+R\HdnAg&rr at WMU&Y,mTl9r2JcF'rnGr=`o`2&mr;_CAWCu^[b=hS1s6fp1s6f at En*of9mIK</
+s4m;*qt0 at MkP"oUs7YpUqtTKsn^7C:r;cZns60(SoA0Go\_[/1pYGeqp"f/cs5!@qqq_.ho?m6N
+q9eZNs3^SQo>^a at s)7G>l*0EKl^I."mJlX"m;;<$moI%nr;aJ0rrB,"J,~>
+rVuNjoDeUdV>pPqj8]"gmDf1RJcC<$]Dmlirr at WLbPoohfD`\Zq<7/9`T[?Xjlkm`s,k"NV:#7]
+rHm#5jo>>\JcDGDrrAbmrr at WMci<M8p]'mdX8i+umBF.5c,SSemG7<rn,MkJe,KBqs3^_YpVZs>
+rOUh)s3^ejqpG)lrR(/gs6'";q;hGArTs(Cna-8UqsXR]rSdY?s7cQSs6p!Sg]%6Qr;cZns8MWi
+Jc:Z.s0 at phmJj$^n+5H#r;aJ0rrB,"J,~>
+rVuNjoDeUdV>pPqj8\46JcC<$]Dmj`rr at UCb=g7_JP1bkrr at UCh+R\HdnAg&rr at WMU&UY`JcF'r
+nGr=`o`2&mr;_CAWCu^[_+Xens%`GipJCfmrE/#PrCR#QrC-TLoeub7nN$V"o/HItq]l%dnK[QN
+rrDp at rtt\hq^2=^s"=<rs!HJns8W#tq>^IfoDaA7ND'9OPtUNEJP5N+r;aJ0rrB,"J,~>
+rVuNjoDeUdV>pPqj8\46JcC<$]DqoNc+DB-o;2He^SU+^j,WY^s*4KpnTaS at qdRtQJP1bkrr@UC
+h+R\HdnAg&rr at WMU&Y,mTl9r2JcF'rnGr=`o`2&mr;_CAWCu^[b=hS1s6fp1s6f at En*of9mIK</
+s4m;*qt0 at MkP"oUs7YpUqtTKsn^7C:r;cZns60(SoA0Go\_[/1pYGeqp"f/cs5!@qqq_.ho?m6N
+q9eZNs3^SQo>^a at s)7G>l*0EKl^I."mJlX"m;;<$moI%nr;aJ0rrB,"J,~>
+rVuNjoDeUdV>pPqj8]"gmDf1RJcC<$]Dmlirr at WLbPoohfD`\Zq<7/9`T[?Xjlkm`s,k"NV:#7]
+rHm#5jo>>\JcDGDrrAbmrr at WMci<M8p]'mdX8i+umBF.5c,SSemG7<rn,MkJe,KBqs3^_YpVZs>
+rOUh)s3^ejqpG)lrR(/gs6'";q;hGArTs(Cna-8UqsXR]rSdY?s7cQSs6p!Sg]%6Qr;cZns8MWi
+Jc:Z.s0 at phmJj$^n+5H#r;aJ0rrB,"J,~>
+s8VThp]'mdV>pJoJcDSHrrC1 at r;a&$JP5r7rrAZar;_[Ip]#e;MbF'MJP4flr;cjjr;b;>l2Ub`
+JcDGDSH+6 at dJs(Dq>^<lqu?Tpq>^BnWW2nsJP3=Bn,L!ms$Qfhs%*/gohbZmrE.rNrCQrOs$cfN
+oeuh9rAO7-r@@Iuq_%ajr?h%Zod9V^rrDp at r>>Peq^2=^s"XNus!HDll2Q<-LJ.XIT1f._r;cNj
+JP5)tr;aV4rrB,"J,~>
+s8VThp]'mdV>pJoJcDSHrrC1 at r;a&$mDd\gdBN#7rrBa/l'hL0rBpIBqh+X'o7Q at RnSRGum8iu]
+JP1norr at UCh+R\Hs%E:jdnAs*rr at WMU&Y,mTjRg"JcF-tqZ-HlqZ-Nnr;cZnr;`hsr;_CAZV0ce
+btIM+rQk*(n*of9j7;O-qt0R>s5WYBiV*9OmJ$MQl,N8 at l2UA2pX-h5p!N`opX/fmn^7<To?m6N
+q9eZNs3^5Rn[n\<qlot0s)7YDl`fWMl^I4$rVufrp&FE(mqqH$moH\dr;aV4rrB,"J,~>
+s8VThp]'mdV>pJoJcDSHrrC1 at r;a&$Jc>WIrrA\jrN_:Zp]&kEan,,fnajfbq;(<!jk]s!iSF=W
+l.r8bpW!/Ys2P"ae&LYPrr at WMU&Y,mU&Y,mJcF-tqZ-HlqZ-Nnr;cZnr;`hsr;cSr\\$,+h9k9=
+qrmMKn+4g's4mXos3(GWou$g>rOUb'rR(YjqpG)ls3^f#o at a**oB?)4qsXLMnaH/;rU9adqsXL[
+s5a(Ds7cQPs6p!Sg&C79Jc:H(s0A9rrVufrp&Cfdn+5H#pYGcJ^]4<6X8d\~>
+s8VThp]'mdV>pJoJcDSHrrC1 at r;a&$JP5r7rrAZar;_[Ip]#e;MbF'MJP4flr;cjjr;b;>l2Ub`
+JcDGDSH+6 at dJs(Dq>^<lqu?Tpq>^BnWW2nsJP3=Bn,L!ms$Qfhs%*/gohbZmrE.rNrCQrOs$cfN
+oeuh9rAO7-r@@Iuq_%ajr?h%Zod9V^rrDp at r>>Peq^2=^s"XNus!HDll2Q<-LJ.XIT1f._r;cNj
+JP5)tr;aV4rrB,"J,~>
+s8VThp]'mdV>pJoJcDSHrrC1 at r;a&$mDd\gdBN#7rrBa/l'hL0rBpIBqh+X'o7Q at RnSRGum8iu]
+JP1norr at UCh+R\Hs%E:jdnAs*rr at WMU&Y,mTjRg"JcF-tqZ-HlqZ-Nnr;cZnr;`hsr;_CAZV0ce
+btIM+rQk*(n*of9j7;O-qt0R>s5WYBiV*9OmJ$MQl,N8 at l2UA2pX-h5p!N`opX/fmn^7<To?m6N
+q9eZNs3^5Rn[n\<qlot0s)7YDl`fWMl^I4$rVufrp&FE(mqqH$moH\dr;aV4rrB,"J,~>
+s8VThp]'mdV>pJoJcDSHrrC1 at r;a&$Jc>WIrrA\jrN_:Zp]&kEan,,fnajfbq;(<!jk]s!iSF=W
+l.r8bpW!/Ys2P"ae&LYPrr at WMU&Y,mU&Y,mJcF-tqZ-HlqZ-Nnr;cZnr;`hsr;cSr\\$,+h9k9=
+qrmMKn+4g's4mXos3(GWou$g>rOUb'rR(YjqpG)ls3^f#o at a**oB?)4qsXLMnaH/;rU9adqsXL[
+s5a(Ds7cQPs6p!Sg&C79Jc:H(s0A9rrVufrp&Cfdn+5H#pYGcJ^]4<6X8d\~>
+qZ-HlqZ-Nnr;cZnr;`Vmr;_EKX8i2"JcG3=JP6#9rrBT&r;_CAm7[9TJP1PeJP4`jr;bA at li6tb
+JcDGDSH+6 at dJs.Fp&Fsjqu?Tpq>^BnV>pJoJP3gPr;c<d[7gNps&8qgs&8Ygs%N;lhb<u?q*+aC
+nM^>%pGr73r@@Css"<=Vq^2+`rrDp at r>>Per?M=hr>Y\[ru]icp&FsjJP1PeV+^4UJP4`jr;ab8
+rrB,"J,~>
+qZ-HlqZ-Nnr;cZnr;`Vmr;_EKX8i2"JcG3=n&F%me$/#3rrBa/rL3[[n!`d,pOiF)nUpFXs)%XX
+nSRGum8j&_JP1PeJP4`jr;bA at li6tbJcDGDrrAa"rr at WMdJs.Fp&Fsjqu?Tpq>^BnV>pJoJP3gP
+r;c<dbtIM+qdTTOp[@S?n+#l;q=F at OnalGGqr%5/oC_5=rV-<ll1b5Qs8;'"n^7%0r;cHFn^6sa
+s3^Gos3^Mqs3^Goj3dn_n'UsNpX/NNs3^5RrO_U>lauhopUgI%mBGiOl^I4$mJlQumqqH$moH>Z
+r;ab8rrB,"J,~>
+qZ-HlqZ-Nnr;cZnr;`Vmr;_EKX8i2"JcG3=Jc>]KrrBV/rN_"RmJcq]ec*tflfe09`TZpLn`[mH
+n^6m_VpX\IrHm)7li6tbJcDGDrrAbmrr at WMdJs.Fp&Fsjqu?Tpq>^BnV>pJo\\$,+h9k3;rK6RK
+n+4U!s3^k]s3(GWpV[$NqmtP%p!N0^pY#T%rTE_7s5`5/qs=.IrrDrbrVHQTrU9dQrV-9Zs6eM<
+p&FsjJc:6"V>fl^U]0`RhrsI`r;ab8rrB,"J,~>
+qZ-HlqZ-Nnr;cZnr;`Vmr;_EKX8i2"JcG3=JP6#9rrBT&r;_CAm7[9TJP1PeJP4`jr;bA at li6tb
+JcDGDSH+6 at dJs.Fp&Fsjqu?Tpq>^BnV>pJoJP3gPr;c<d[7gNps&8qgs&8Ygs%N;lhb<u?q*+aC
+nM^>%pGr73r@@Css"<=Vq^2+`rrDp at r>>Per?M=hr>Y\[ru]icp&FsjJP1PeV+^4UJP4`jr;ab8
+rrB,"J,~>
+qZ-HlqZ-Nnr;cZnr;`Vmr;_EKX8i2"JcG3=n&F%me$/#3rrBa/rL3[[n!`d,pOiF)nUpFXs)%XX
+nSRGum8j&_JP1PeJP4`jr;bA at li6tbJcDGDrrAa"rr at WMdJs.Fp&Fsjqu?Tpq>^BnV>pJoJP3gP
+r;c<dbtIM+qdTTOp[@S?n+#l;q=F at OnalGGqr%5/oC_5=rV-<ll1b5Qs8;'"n^7%0r;cHFn^6sa
+s3^Gos3^Mqs3^Goj3dn_n'UsNpX/NNs3^5RrO_U>lauhopUgI%mBGiOl^I4$mJlQumqqH$moH>Z
+r;ab8rrB,"J,~>
+qZ-HlqZ-Nnr;cZnr;`Vmr;_EKX8i2"JcG3=Jc>]KrrBV/rN_"RmJcq]ec*tflfe09`TZpLn`[mH
+n^6m_VpX\IrHm)7li6tbJcDGDrrAbmrr at WMdJs.Fp&Fsjqu?Tpq>^BnV>pJo\\$,+h9k3;rK6RK
+n+4U!s3^k]s3(GWpV[$NqmtP%p!N0^pY#T%rTE_7s5`5/qs=.IrrDrbrVHQTrU9dQrV-9Zs6eM<
+p&FsjJc:6"V>fl^U]0`RhrsI`r;ab8rrB,"J,~>
+r;cNjr;c`pr;cZnr;`Vmq#H!GJcD5>JP6#9rr at UCThG.[JP5r7r;`Zer;_CA_+X_,f1YN2rr at WM
+U&UY`JcF-tr;cNjr;cfrr;cNjr;`Vmrr at UC`Co\"`Cp.0mn<[UrDWAcs%N;lk=knArCm)[pHJUC
+nM^8#q)S7$o/H\%q'5n^m3DQVpET\<q]ktTq]l%Yr?M=hfh:`4JP1PeX\8Tmnc+/5eP#c>`W,r<
+X8d\~>
+r;cNjr;c`pr;cZnr;`Vmq#H!GJcD5>mDe+se$.f-rrD#SjdPe$m@*R*nUpjdon2dZl##TmmoK2_
+JP5r7r;`Zer;_CA_+X_,f1YN2rr at WMU&Y,mTjRg"JcF-tr;cNjr;cfrr;cNjr;`Vmrr at UC`Co\"
+btIk5r<rL'oj[sIrU94En+#l;ht-=/s7Q!Dn+H/Cp\4[fmJ$GOj2Ui at mJlq:ld>Ucq9f#oq9f#o
+qpG5qn^76Rp!NfZo?m0LrR()RrO_U>pUg1>rNPb&n$)i(pSIPel)!d9l]1oDnc/!$mqqN&moH&R
+qZ+V8rrB,"J,~>
+r;cNjr;c`pr;cZnr;`Vmq#H!GJcD5>Jc>]Krr at WLU&Ofdec+1lkNMm9n`]qAg$%hZpZUr!rK6!n
+l-]=_VpX>?rHm/9mJm1dJcDGDrrAbmrr at WMdJs.Fp&FsjrVufrp&FsjU]:>o_n4+3h9k'7n,MqL
+ec,NQn,E at 7rP/$Cs2OrIkJmPLpVumRleM<hq<.A5s5a"Es75RGrTs:IrrDrbqtg3YrV-9Zs6SG<
+mJhb:Jc;eNr;cBfV>frTh<=%XrK7*[`W,r<X8d\~>
+r;cNjr;c`pr;cZnr;`Vmq#H!GJcD5>JP6#9rr at UCThG.[JP5r7r;`Zer;_CA_+X_,f1YN2rr at WM
+U&UY`JcF-tr;cNjr;cfrr;cNjr;`Vmrr at UC`Co\"`Cp.0mn<[UrDWAcs%N;lk=knArCm)[pHJUC
+nM^8#q)S7$o/H\%q'5n^m3DQVpET\<q]ktTq]l%Yr?M=hfh:`4JP1PeX\8Tmnc+/5eP#c>`W,r<
+X8d\~>
+r;cNjr;c`pr;cZnr;`Vmq#H!GJcD5>mDe+se$.f-rrD#SjdPe$m@*R*nUpjdon2dZl##TmmoK2_
+JP5r7r;`Zer;_CA_+X_,f1YN2rr at WMU&Y,mTjRg"JcF-tr;cNjr;cfrr;cNjr;`Vmrr at UC`Co\"
+btIk5r<rL'oj[sIrU94En+#l;ht-=/s7Q!Dn+H/Cp\4[fmJ$GOj2Ui at mJlq:ld>Ucq9f#oq9f#o
+qpG5qn^76Rp!NfZo?m0LrR()RrO_U>pUg1>rNPb&n$)i(pSIPel)!d9l]1oDnc/!$mqqN&moH&R
+qZ+V8rrB,"J,~>
+r;cNjr;c`pr;cZnr;`Vmq#H!GJcD5>Jc>]Krr at WLU&Ofdec+1lkNMm9n`]qAg$%hZpZUr!rK6!n
+l-]=_VpX>?rHm/9mJm1dJcDGDrrAbmrr at WMdJs.Fp&FsjrVufrp&FsjU]:>o_n4+3h9k'7n,MqL
+ec,NQn,E at 7rP/$Cs2OrIkJmPLpVumRleM<hq<.A5s5a"Es75RGrTs:IrrDrbqtg3YrV-9Zs6SG<
+mJhb:Jc;eNr;cBfV>frTh<=%XrK7*[`W,r<X8d\~>
+r;cNjr;cfrr;cNjr;`Dgr;_EK_uKZ8JcFX-JP6"CY=nfoJP5Z/p]#e;JP1Pef1Z&Bf1YZ6rr at WM
+U&UY`JcERdr;cfrr;cNjr;`Pkr;_CAeP#oBrCcVZX%WIWrCHrepJCf^qcN#Ts$?TWrCQTEs"j=+
+pG;b.s#0U%of)n%q]kt\i?S@&q]ktTq]l+Xru:h[h+ReJr;cNjrrDlpJP1Pe[nH,gJP4*Xr;at>
+rrB,"J,~>
+r;cNjr;cfrr;cNjr;`Dgr;_EK_uKZ8JcFX-n&FP&dBMH'rrDG_f:))erBpU;q3pi6o7Qj`q1J3^
+o54M:qebM*m8iu]JP1PeJP4Tfr;bGBnc/UhJcDGDrrAa"rr at WM_>jH6rVufrp&FsjU&Y&kJP4Nd
+rrE!jn,LX*moJsfs8;?Tn+#l;ht-=/p\".<p%@kKnb<%`nb;_OiPtiDs8W#tp&G$lq>^KNjjF+a
+jjF+ao?mTon^7*NqpG5Zq9eZNs1 at g@pUg1>rNPt,rPnT9pUgI%mBH,Wqlombo;1iCs+B^!mJlQu
+mqqN&moGWFr;at>rrB,"J,~>
+r;cNjr;cfrr;cNjr;`Dgr;_EK_uKZ8JcFX-Jc>ZLYQ"L+Jc>?Ap]&kEg[hE.jk]t#`SHBudDl-3
+f>d@\rr at WMU&Y,mU&Y,mJcERdr;cfrr;cNjr;`Pkr;b*SbJrAcj5'`trS?rBmIS*ls3CSds1e<G
+rPn`GkJmPLq8W$Rl.l6js4mA3p#uGIqsXFQiU?dHqsXFYqsXR]s7cEZh>[HSr;cNjrrDlpJc:6"
+\,PdpV>frTh<<\Ns3^cFaoDA at X8d\~>
+r;cNjr;cfrr;cNjr;`Dgr;_EK_uKZ8JcFX-JP6"CY=nfoJP5Z/p]#e;JP1Pef1Z&Bf1YZ6rr at WM
+U&UY`JcERdr;cfrr;cNjr;`Pkr;_CAeP#oBrCcVZX%WIWrCHrepJCf^qcN#Ts$?TWrCQTEs"j=+
+pG;b.s#0U%of)n%q]kt\i?S@&q]ktTq]l+Xru:h[h+ReJr;cNjrrDlpJP1Pe[nH,gJP4*Xr;at>
+rrB,"J,~>
+r;cNjr;cfrr;cNjr;`Dgr;_EK_uKZ8JcFX-n&FP&dBMH'rrDG_f:))erBpU;q3pi6o7Qj`q1J3^
+o54M:qebM*m8iu]JP1PeJP4Tfr;bGBnc/UhJcDGDrrAa"rr at WM_>jH6rVufrp&FsjU&Y&kJP4Nd
+rrE!jn,LX*moJsfs8;?Tn+#l;ht-=/p\".<p%@kKnb<%`nb;_OiPtiDs8W#tp&G$lq>^KNjjF+a
+jjF+ao?mTon^7*NqpG5Zq9eZNs1 at g@pUg1>rNPt,rPnT9pUgI%mBH,Wqlombo;1iCs+B^!mJlQu
+mqqN&moGWFr;at>rrB,"J,~>
+r;cNjr;cfrr;cNjr;`Dgr;_EK_uKZ8JcFX-Jc>ZLYQ"L+Jc>?Ap]&kEg[hE.jk]t#`SHBudDl-3
+f>d@\rr at WMU&Y,mU&Y,mJcERdr;cfrr;cNjr;`Pkr;b*SbJrAcj5'`trS?rBmIS*ls3CSds1e<G
+rPn`GkJmPLq8W$Rl.l6js4mA3p#uGIqsXFQiU?dHqsXFYqsXR]s7cEZh>[HSr;cNjrrDlpJc:6"
+\,PdpV>frTh<<\Ns3^cFaoDA at X8d\~>
+nc/OfrVufrp&FsjRK*3cJcC<$li6tb\c74Rrr at UCSP/_WJP31>rr at UCY=nfos%E:jfh:r:rr at WM
+U&UY`JcEXfr;c`pr;cNjr;`Dgr;_CAgIqPHnc, at Ws%`Sms%)l\rCm#hk=knAs%N;]ofi7/q)87'
+oeZV.s#0O#pG`+'q]kt\nK[uTocsJ:q]knRr?M7Xru:t_rttb\j\,.Dqb-nfrrDlpJP1PerCd(h
+a%Ph"JP3aNr;b7FrrE*!rrB,"J,~>
+nc/OfrVufrp&FsjRK*3cJcC<$li6tb\c;':n%6uOf;8KIpSH-'kDo:ho8`?no6C:fo6BeBhdZ1X
+qb-\`JP31>rr at UCY=nfos%E:jfh:r:rr at WMU&Y,mTjRg"JcEXfr;c`pr;cNjr;`Dgr;_CAgIqPH
+nc-d*moJmdrGDS_p$hG?nabN-n+?)Aq<%Y9rUoXQlhCDZmJ$AMji6ijqo8U7rrDlpkL'7JpX/lX
+pX/rZp!N`Xp!Mg>rR(/Tq7HC at n[nb>pTXD(nZ_u(q5*bgl_XWMrD**Uqka1Mo:#E+ooAG>q/,kN
+s'kG6mpb`dM+ddIdJs4Hs8W*!X8d\~>
+nc/OfrVufrp&FsjRK*3cJcC<$li6tb\c76[rr at WLSc8B`g]$+%Vs)Oas,l!jMp]ehrHnRarHm5;
+oDegjJcDGDrrAbmrr at WM_uKZ8qu?Tpp&FsjScAWgf=T5Gh9k-9s,ljOj7C+ds3^k]s3(/SrPnZE
+kJmPLq8W*ToA'B/p"]T#s4m;1pZVYKqsXFQnaHGIp$_n\qsX at WrU9^]s7cQ^s8)cajo4fMqu6Qo
+rrDlpJc:6"rVlc$a8YK+V>frTh<<\Np!N^<dJs4Hs8W*!X8d\~>
+nc/OfrVufrp&FsjRK*3cJcC<$li6tb\c74Rrr at UCSP/_WJP31>rr at UCY=nfos%E:jfh:r:rr at WM
+U&UY`JcEXfr;c`pr;cNjr;`Dgr;_CAgIqPHnc, at Ws%`Sms%)l\rCm#hk=knAs%N;]ofi7/q)87'
+oeZV.s#0O#pG`+'q]kt\nK[uTocsJ:q]knRr?M7Xru:t_rttb\j\,.Dqb-nfrrDlpJP1PerCd(h
+a%Ph"JP3aNr;b7FrrE*!rrB,"J,~>
+nc/OfrVufrp&FsjRK*3cJcC<$li6tb\c;':n%6uOf;8KIpSH-'kDo:ho8`?no6C:fo6BeBhdZ1X
+qb-\`JP31>rr at UCY=nfos%E:jfh:r:rr at WMU&Y,mTjRg"JcEXfr;c`pr;cNjr;`Dgr;_CAgIqPH
+nc-d*moJmdrGDS_p$hG?nabN-n+?)Aq<%Y9rUoXQlhCDZmJ$AMji6ijqo8U7rrDlpkL'7JpX/lX
+pX/rZp!N`Xp!Mg>rR(/Tq7HC at n[nb>pTXD(nZ_u(q5*bgl_XWMrD**Uqka1Mo:#E+ooAG>q/,kN
+s'kG6mpb`dM+ddIdJs4Hs8W*!X8d\~>
+nc/OfrVufrp&FsjRK*3cJcC<$li6tb\c76[rr at WLSc8B`g]$+%Vs)Oas,l!jMp]ehrHnRarHm5;
+oDegjJcDGDrrAbmrr at WM_uKZ8qu?Tpp&FsjScAWgf=T5Gh9k-9s,ljOj7C+ds3^k]s3(/SrPnZE
+kJmPLq8W*ToA'B/p"]T#s4m;1pZVYKqsXFQnaHGIp$_n\qsX at WrU9^]s7cQ^s8)cajo4fMqu6Qo
+rrDlpJc:6"rVlc$a8YK+V>frTh<<\Np!N^<dJs4Hs8W*!X8d\~>
+oDeahqu?Tpp&FsjQ2gd_JcFL)r;`2arrBV0K1l4E^J"M*mn<TZJP5f3p]#e;YtP)sJP2b2r;bMD
+q>^BnJcDGDSH+6 at a8br8qu?Tpp&FsjRK*3cJP5)tn,JqOs%`M`q,$r^q,lfRrB^<Pofi1-q_nI&
+oeZP)pFH7lpG`%%s!.7\ocs8TpET\<q'5\Pr?M=Zru:h[ktCRHoh4iTJP1Pea\2[6r;cHhJP3CD
+r;bCJrrE*!rrB,"J,~>
+oDeahqu?Tpp&FsjQ2gd_JcFL)r;`2arrBV0n&G%4c`klprrE(q`L?acrBp%6rAX8!qi:9#nTaqJ
+pNZ4FnRCT\q+LJ^JP37 at rr@UCUJ(Ocfh;/@r;_EKU&Y,mTjRg"JcEdjq#L<lr;cNjr;`8cr;_CA
+j\,(Bb=h;)mpc$.s3gf6naZ)=n+6MMoCMGCn+HSOoB,Z<jnJcTrV-3ap%S:Wl,N8nou?P%n'UgJ
+rR(AZrR(;XrR(AZqpFrRqn)O at s1@g at ot11BmCVnms1@[&nYQ,emA9-;o8`^:m=YG!s8W#toDe>t
+s*43Gq/,S0moG!4s%E:jec5XLs8W*!X8d\~>
+oDeahqu?Tpp&FsjQ2gd_JcFL)r;`2arrBV0KDtlN^]+2;n,E9kJc>KEp]':Qh=IK,ce\V`h;+":
+]uL"tfuEjfr;_EKU&Y,mU&Y,mJcEdjq#L<lr;cNjr;`8cr;bfgbJrAchqdc$h=JJ^s3^egq8<*L
+q7>b/rR(M^p!NBds6&q-p#l)5rU^'Xp[\"Gq==:KrrDl`q>1'Ys8)ciqsWeKnc/:]nc+1>Jc<dj
+s8W#toDbZdn+5B!h;.DEr;bCJrrE*!rrB,"J,~>
+oDeahqu?Tpp&FsjQ2gd_JcFL)r;`2arrBV0K1l4E^J"M*mn<TZJP5f3p]#e;YtP)sJP2b2r;bMD
+q>^BnJcDGDSH+6 at a8br8qu?Tpp&FsjRK*3cJP5)tn,JqOs%`M`q,$r^q,lfRrB^<Pofi1-q_nI&
+oeZP)pFH7lpG`%%s!.7\ocs8TpET\<q'5\Pr?M=Zru:h[ktCRHoh4iTJP1Pea\2[6r;cHhJP3CD
+r;bCJrrE*!rrB,"J,~>
+oDeahqu?Tpp&FsjQ2gd_JcFL)r;`2arrBV0n&G%4c`klprrE(q`L?acrBp%6rAX8!qi:9#nTaqJ
+pNZ4FnRCT\q+LJ^JP37 at rr@UCUJ(Ocfh;/@r;_EKU&Y,mTjRg"JcEdjq#L<lr;cNjr;`8cr;_CA
+j\,(Bb=h;)mpc$.s3gf6naZ)=n+6MMoCMGCn+HSOoB,Z<jnJcTrV-3ap%S:Wl,N8nou?P%n'UgJ
+rR(AZrR(;XrR(AZqpFrRqn)O at s1@g at ot11BmCVnms1@[&nYQ,emA9-;o8`^:m=YG!s8W#toDe>t
+s*43Gq/,S0moG!4s%E:jec5XLs8W*!X8d\~>
+oDeahqu?Tpp&FsjQ2gd_JcFL)r;`2arrBV0KDtlN^]+2;n,E9kJc>KEp]':Qh=IK,ce\V`h;+":
+]uL"tfuEjfr;_EKU&Y,mU&Y,mJcEdjq#L<lr;cNjr;`8cr;bfgbJrAchqdc$h=JJ^s3^egq8<*L
+q7>b/rR(M^p!NBds6&q-p#l)5rU^'Xp[\"Gq==:KrrDl`q>1'Ys8)ciqsWeKnc/:]nc+1>Jc<dj
+s8W#toDbZdn+5B!h;.DEr;bCJrrE*!rrB,"J,~>
+p]($hqu?Tpp&FsjQ2gX[JcC<$VuMBBrr at UCRnNMUJP5T-r;_CAJP4rprrCYDrVufrJcDGDSH+6@
+aoD5<p](0lp&FsjQ2gd_JP5T-r;c<dRnNb]s$-HQq,$l\qcNMboh#0Wqa(*Nofi%)s#0m*o/$Cp
+pFH1jq`"=%ocX&TpE92TrrDj>q&'&Tr>>DVmn<]\r;cTllV$jLJP1Ped7`s.JP3%:qZ,1HrrB,"
+J,~>
+p]($hqu?Tpp&FsjQ2gX[JcC<$VuQ/(s1?O[c_^Z1rrBm(kDneZs*4-fnTa_Ds*4'NmpbH\pIk8\
+JP5T-r;_CAJP4rprrCYDrVufrJcDGDrrAa"rr at WMaoD5<p](0lp&FsjQ2gd_JP5T-r;c<db=h;)
+mpbs,ruqF?n+#l;s7>pQrU]XQrU]LMnb)GGoB,rDhtR-NoD&@[oD%dos8W#tp]'R!oDeL2Z,ZIK
+rPnTDq8V7&n$)benZ_DWs-i>Om@*F&l\"[+m;:TemoG!4pIkA`ec5XLX8d\~>
+p]($hqu?Tpp&FsjQ2gX[JcC<$VuMDKrr at WLS,W0^mJbf1_s%-Vn*'_?rTL6:Mp\lNs*NA;rVufr
+JcDGDrrAbmrr at WMaoD5<p](0lp&FsjQ2gd_lat?[h9k9=rK6RKh=JD\s0D[MrQG#Sq8W<CkJmDH
+qo8<VoA'B/oA&m!qrmkIp%%qIp[\(IrrDl`q>1'YrVHE[n,E at er;cTlli-MUJc:6"dJiV7U]0`R
+h<<\Nj3dm]r;bCJrrB,"J,~>
+p]($hqu?Tpp&FsjQ2gX[JcC<$VuMBBrr at UCRnNMUJP5T-r;_CAJP4rprrCYDrVufrJcDGDSH+6@
+aoD5<p](0lp&FsjQ2gd_JP5T-r;c<dRnNb]s$-HQq,$l\qcNMboh#0Wqa(*Nofi%)s#0m*o/$Cp
+pFH1jq`"=%ocX&TpE92TrrDj>q&'&Tr>>DVmn<]\r;cTllV$jLJP1Ped7`s.JP3%:qZ,1HrrB,"
+J,~>
+p]($hqu?Tpp&FsjQ2gX[JcC<$VuQ/(s1?O[c_^Z1rrBm(kDneZs*4-fnTa_Ds*4'NmpbH\pIk8\
+JP5T-r;_CAJP4rprrCYDrVufrJcDGDrrAa"rr at WMaoD5<p](0lp&FsjQ2gd_JP5T-r;c<db=h;)
+mpbs,ruqF?n+#l;s7>pQrU]XQrU]LMnb)GGoB,rDhtR-NoD&@[oD%dos8W#tp]'R!oDeL2Z,ZIK
+rPnTDq8V7&n$)benZ_DWs-i>Om@*F&l\"[+m;:TemoG!4pIkA`ec5XLX8d\~>
+p]($hqu?Tpp&FsjQ2gX[JcC<$VuMDKrr at WLS,W0^mJbf1_s%-Vn*'_?rTL6:Mp\lNs*NA;rVufr
+JcDGDrrAbmrr at WMaoD5<p](0lp&FsjQ2gd_lat?[h9k9=rK6RKh=JD\s0D[MrQG#Sq8W<CkJmDH
+qo8<VoA'B/oA&m!qrmkIp%%qIp[\(IrrDl`q>1'YrVHE[n,E at er;cTlli-MUJc:6"dJiV7U]0`R
+h<<\Nj3dm]r;bCJrrB,"J,~>
+q>^<lp](0lp&FsjNW8qWJcC<$X8dfFrrC;:rr at UCcV+$4JP3sTr;_CAO%]EOfh;;Drr at WMU&UY`
+JcF!pqZ-6fr;cNjr;_u[r;_CAq+L2VP=tp,s%*/YqbZrZrE0"llUgt;qapHEo/$=noeZUfs![ap
+q'c2#pFQ%]q]k\Tq'5n>q'5VNs!.CXs!.O\ruUi+nc.]Dnc+/5JP4`jrrDThJP2b2rrE'lr;bON
+rrB,"J,~>
+q>^<lp](0lp&FsjNW8qWJcC<$X8hq6`N[adq3q<`c'nZ-pR:9*kC`MRqh+KbnSS/4pMKG0j];+K
+p]#e;`Cp.0JP2%sr;bMDrVultJcDGDrrAa"rr at WMc2[Y at oDeahp&FsjOoP@[JP5f3n,LR(moJmd
+nSS5Ls1e6sn+,r:p[S(Oqt9^Uqt:![p\""KqtL-TpZDM?iV36ErrD*Ss8;Q0nc.^jnc/R8_oDMa
+pVua8s02+,s2ON>qlob*s/#7ipSIVgrL38Qq3puQs,QQ:m>gLbrrDThm;;<$oiCltmoG!4mn<Z\
+s%E:jg&M'PX8d\~>
+q>^<lp](0lp&FsjNW8qWJcC<$X8dhOrrC=Cs0 at 4Tci3\=p\re9_s$jNmHE*VrK5dhX3pa_ld;cQ
+rHm5;rVultJcDGDrrAbmrr at WMc2[Y at oDeahp&FsjOoP@[ot/DehpL99n,M58\,QEIs3(Gfqnr*H
+rOV13qpG;\p!NBdrTEk/s75^CrTO"Ip[\4MoCD_GrrDl`p\OpYqtg?]s8)cap&=L]jo4fMJc:6"
+g]%3Qnc,B`n+5B!h;-i5s+^R$r;bONrrB,"J,~>
+q>^<lp](0lp&FsjNW8qWJcC<$X8dfFrrC;:rr at UCcV+$4JP3sTr;_CAO%]EOfh;;Drr at WMU&UY`
+JcF!pqZ-6fr;cNjr;_u[r;_CAq+L2VP=tp,s%*/YqbZrZrE0"llUgt;qapHEo/$=noeZUfs![ap
+q'c2#pFQ%]q]k\Tq'5n>q'5VNs!.CXs!.O\ruUi+nc.]Dnc+/5JP4`jrrDThJP2b2rrE'lr;bON
+rrB,"J,~>
+q>^<lp](0lp&FsjNW8qWJcC<$X8hq6`N[adq3q<`c'nZ-pR:9*kC`MRqh+KbnSS/4pMKG0j];+K
+p]#e;`Cp.0JP2%sr;bMDrVultJcDGDrrAa"rr at WMc2[Y at oDeahp&FsjOoP@[JP5f3n,LR(moJmd
+nSS5Ls1e6sn+,r:p[S(Oqt9^Uqt:![p\""KqtL-TpZDM?iV36ErrD*Ss8;Q0nc.^jnc/R8_oDMa
+pVua8s02+,s2ON>qlob*s/#7ipSIVgrL38Qq3puQs,QQ:m>gLbrrDThm;;<$oiCltmoG!4mn<Z\
+s%E:jg&M'PX8d\~>
+q>^<lp](0lp&FsjNW8qWJcC<$X8dhOrrC=Cs0 at 4Tci3\=p\re9_s$jNmHE*VrK5dhX3pa_ld;cQ
+rHm5;rVultJcDGDrrAbmrr at WMc2[Y at oDeahp&FsjOoP@[ot/DehpL99n,M58\,QEIs3(Gfqnr*H
+rOV13qpG;\p!NBdrTEk/s75^CrTO"Ip[\4MoCD_GrrDl`p\OpYqtg?]s8)cap&=L]jo4fMJc:6"
+g]%3Qnc,B`n+5B!h;-i5s+^R$r;bONrrB,"J,~>
+rVu`poDeahp&FsjM?!MSJcGKEr;_EKq>^Hp`W(WbrrCA<rr at UCb=hU0JP1PeJP4B`rrE'lr;bMD
+rr at WMU&UY`JcF'rqZ-0dr;cNjr;_oYr;_UGrrE!jn,JA?rCHrWrD;rVk=PP7rCQTEoeZInoeZUf
+r@%[rodKJaiun.BrrDj>pDEoTq\]>XrttbXrCd.jnc.?:qu?TprVqFAJP5f3rrDFZrVultp&BS9
+PtV,Wg].9RX8d\~>
+rVu`poDeahp&FsjM?!MSJcGKEr;_EKq>^Hp`W*i[dA?H'rrCB6s%`0SkDneZnTb(No6BeBiF:nL
+pIk8\JP1PeJP4B`rrE'lr;bMDrr at WMU&Y,mThk[gJcF'rqZ-0dr;cNjr;_oYr;_UGrrE!jn,LR(
+moJsfmqqfDq=3qEs7>dMnaZGGlh1/Gn+QAIp$)5Fp\=X[p%\Oej7rZQrPnkanc.@`qu?TprVu!!
+s1 at 70ot11Bn[nV$pUgC.ot17#o<A2*q5*hinYQ8iopY]Qn!a9QpQ#!:s+Bd#s$Q1+rVultp&FDr
+mpb$PJP4rprrCgRrrB,"J,~>
+rVu`poDeahp&FsjM?!MSJcGKEr;_EKq>^Hp`W(YkrrCCEs0 at 4TbPq89fCQc@n_Nm%WSOW&n](7L
+UW3=\s2P"afuF$lJcDGDrrAbmrr at WMci<kBnc/Ofp&FsjO8o.YrO^7mhpLK?s,m99n,M58Z2X^F
+s3CS\e].L6rPnHVp"]H-p"]T<n)sB8j7<$7rrDl`p\OpYqtg?]s8)c`rVli&nc.ACqu?TprVqHJ
+Jc>KEs0D%krVultp&Cfdn+5B!hqcK'rrCgRrrB,"J,~>
+rVu`poDeahp&FsjM?!MSJcGKEr;_EKq>^Hp`W(WbrrCA<rr at UCb=hU0JP1PeJP4B`rrE'lr;bMD
+rr at WMU&UY`JcF'rqZ-0dr;cNjr;_oYr;_UGrrE!jn,JA?rCHrWrD;rVk=PP7rCQTEoeZInoeZUf
+r@%[rodKJaiun.BrrDj>pDEoTq\]>XrttbXrCd.jnc.?:qu?TprVqFAJP5f3rrDFZrVultp&BS9
+PtV,Wg].9RX8d\~>
+rVu`poDeahp&FsjM?!MSJcGKEr;_EKq>^Hp`W*i[dA?H'rrCB6s%`0SkDneZnTb(No6BeBiF:nL
+pIk8\JP1PeJP4B`rrE'lr;bMDrr at WMU&Y,mThk[gJcF'rqZ-0dr;cNjr;_oYr;_UGrrE!jn,LR(
+moJsfmqqfDq=3qEs7>dMnaZGGlh1/Gn+QAIp$)5Fp\=X[p%\Oej7rZQrPnkanc.@`qu?TprVu!!
+s1 at 70ot11Bn[nV$pUgC.ot17#o<A2*q5*hinYQ8iopY]Qn!a9QpQ#!:s+Bd#s$Q1+rVultp&FDr
+mpb$PJP4rprrCgRrrB,"J,~>
+rVu`poDeahp&FsjM?!MSJcGKEr;_EKq>^Hp`W(YkrrCCEs0 at 4TbPq89fCQc@n_Nm%WSOW&n](7L
+UW3=\s2P"afuF$lJcDGDrrAbmrr at WMci<kBnc/Ofp&FsjO8o.YrO^7mhpLK?s,m99n,M58Z2X^F
+s3CS\e].L6rPnHVp"]H-p"]T<n)sB8j7<$7rrDl`p\OpYqtg?]s8)c`rVli&nc.ACqu?TprVqHJ
+Jc>KEs0D%krVultp&Cfdn+5B!hqcK'rrCgRrrB,"J,~>
+s8Vrrnc/Ofp&FsjL&_)OJcC<$mJm1da8^idrrAH[r;_ICp]#e;eP#oBJP1PerCd.jrCd(hj\,FL
+rr at WMU&UY`JcF'rr;c6br;cZnqZ)QSr;_gMrrDNfM+dk6s%*/Us$cl_o1\19q*+gMofht'q^D1p
+r>b8SruC\_q&oVUmi_KPrrDj>mhl'=s!.O\s8W*!oDd94oDaA7JP5l5rrD^bn,Ir3ND'3MhuE]V
+X8d\~>
+s8Vrrnc/Ofp&FsjL&_)OJcC<$mJm1da8a8cdA?6!rrC00s,Q]'m>gjlrAXJ'nTakHq0;LJnRC6R
+nOrWVJP4Ndrr at UCJP5r7rrE!jr;bqPq>^HpJcDGDrrA`grr at WMci<qDmJm+bq>^<lMuW_UND'9O
+n,LR(nQ,*fmqqZ at rUK@IrU]^On+#l;s7?'[qt9^Tq=aXYs7GpWp$(<-rrD$Qs8W*!oDd:ZoDe3t
+pUg=Bq7HIBn%8V(o=OUurO_g.qn)[#pTX1arNPaen!a9Qm@*R*rL3J5pQ#8urIb,/on2`5m;;<$
+gK&kufh;8DhuE]VX8d\~>
+s8Vrrnc/Ofp&FsjL&_)OJcC<$mJm1da8^kmrrAJdrN_(Tp]'(@^Zb">q<6Mfs,lj-qpF`cX3p1O
+rR%+Ss*O^arHmYGq>^HpJcDGDrrAbmrr at WMci<qDmJm+bq>^<lMuW_Ue&L4khqe<pn,M58XoA at K
+s3(Gis3CS\e].F4s2O`ZoA'6+pY>`<n)s`Ap%.57qsXObq=!eKs8Duds8)cqrrDZje,Jt=Jc:6"
+qu6W$p&=F[U]0`Rh<<bPbL-.*r;baTrrB,"J,~>
+s8Vrrnc/Ofp&FsjL&_)OJcC<$mJm1da8^idrrAH[r;_ICp]#e;eP#oBJP1PerCd.jrCd(hj\,FL
+rr at WMU&UY`JcF'rr;c6br;cZnqZ)QSr;_gMrrDNfM+dk6s%*/Us$cl_o1\19q*+gMofht'q^D1p
+r>b8SruC\_q&oVUmi_KPrrDj>mhl'=s!.O\s8W*!oDd94oDaA7JP5l5rrD^bn,Ir3ND'3MhuE]V
+X8d\~>
+s8Vrrnc/Ofp&FsjL&_)OJcC<$mJm1da8a8cdA?6!rrC00s,Q]'m>gjlrAXJ'nTakHq0;LJnRC6R
+nOrWVJP4Ndrr at UCJP5r7rrE!jr;bqPq>^HpJcDGDrrA`grr at WMci<qDmJm+bq>^<lMuW_UND'9O
+n,LR(nQ,*fmqqZ at rUK@IrU]^On+#l;s7?'[qt9^Tq=aXYs7GpWp$(<-rrD$Qs8W*!oDd:ZoDe3t
+pUg=Bq7HIBn%8V(o=OUurO_g.qn)[#pTX1arNPaen!a9Qm@*R*rL3J5pQ#8urIb,/on2`5m;;<$
+gK&kufh;8DhuE]VX8d\~>
+s8Vrrnc/Ofp&FsjL&_)OJcC<$mJm1da8^kmrrAJdrN_(Tp]'(@^Zb">q<6Mfs,lj-qpF`cX3p1O
+rR%+Ss*O^arHmYGq>^HpJcDGDrrAbmrr at WMci<qDmJm+bq>^<lMuW_Ue&L4khqe<pn,M58XoA at K
+s3(Gis3CS\e].F4s2O`ZoA'6+pY>`<n)s`Ap%.57qsXObq=!eKs8Duds8)cqrrDZje,Jt=Jc:6"
+qu6W$p&=F[U]0`Rh<<bPbL-.*r;baTrrB,"J,~>
+s8W#tmJm+bq>^<lL&^rKO8o.YJcD_LLJ.XIhb3nJJP3UJp]#e;ktCsToh5;bJP1PenOrf\mn<9P
+rr at WMU&UY`JcF-tr;c0`r;cZnr;_QOr;`*Un,J#5s#9sKs$cl_oh=77q*+gMofht'q^D1pr>b8S
+r>bJ]r?1nUnK@]RrrE'Dq]PhOnJM9Zs![mip]&E0nc+/5JP5`1r;cHhJP1Vgr;bmXrrB,"J,~>
+s8W#tmJm+bq>^<lL&^rKO8o.YJcD_LdBM#pkF2DNhjXR?s$Q16h1P`Pl\"_PnSS;8o54#,k>p\;
+p]#e;ktCsToh5;bJP1PenOrf\mn<9Prr at WMU&Y,mThk[gJcF-tr;c0`r;cZnr;_QOr;`*Un,LX*
+moJmdmqqN<s+C at JoCDeMp[IYAnacAErUBj\rV,pTs7H'[qt0p]qtU3crUg'Qq<d)7rrD0Uqu-9h
+bJs)Pou?%(s2ON>pTXP,nZ_neos"%arNPaeqjR,Qn!a-6o:#',mt:Y#om$:br;cHhm;;<$moK0U
+pJui<cV+3:j8],ZX8d\~>
+s8W#tmJm+bq>^<lL&^rKO8o.YJcD_LL]7;Rhu<S[Jc<:\p]'4D_<C":s6/Y%rK6d/s,m!1o?m*a
+XjM^>n&G<Qn&Fu!rr at WMU&Y,mU&Y,mJcF-tr;c0`r;cZnr;_QOr;bZnh9k'7n,M58VuH_Ks3(Gf
+rPR+(q9f5^p!NBdqrd_/rUTF?rUTXQjmr<;rrE)fqss^anbW:Ws8)cap]&G9nc+1>Jc>ECr;cHh
+U]0`RhrrnPbL,dur;bmXrrB,"J,~>
+s8W#tmJm+bq>^<lL&^rKO8o.YJcD_LLJ.XIhb3nJJP3UJp]#e;ktCsToh5;bJP1PenOrf\mn<9P
+rr at WMU&UY`JcF-tr;c0`r;cZnr;_QOr;`*Un,J#5s#9sKs$cl_oh=77q*+gMofht'q^D1pr>b8S
+r>bJ]r?1nUnK@]RrrE'Dq]PhOnJM9Zs![mip]&E0nc+/5JP5`1r;cHhJP1Vgr;bmXrrB,"J,~>
+s8W#tmJm+bq>^<lL&^rKO8o.YJcD_LdBM#pkF2DNhjXR?s$Q16h1P`Pl\"_PnSS;8o54#,k>p\;
+p]#e;ktCsToh5;bJP1PenOrf\mn<9Prr at WMU&Y,mThk[gJcF-tr;c0`r;cZnr;_QOr;`*Un,LX*
+moJmdmqqN<s+C at JoCDeMp[IYAnacAErUBj\rV,pTs7H'[qt0p]qtU3crUg'Qq<d)7rrD0Uqu-9h
+bJs)Pou?%(s2ON>pTXP,nZ_neos"%arNPaeqjR,Qn!a-6o:#',mt:Y#om$:br;cHhm;;<$moK0U
+pJui<cV+3:j8],ZX8d\~>
+s8W#tmJm+bq>^<lL&^rKO8o.YJcD_LL]7;Rhu<S[Jc<:\p]'4D_<C":s6/Y%rK6d/s,m!1o?m*a
+XjM^>n&G<Qn&Fu!rr at WMU&Y,mU&Y,mJcF-tr;c0`r;cZnr;_QOr;bZnh9k'7n,M58VuH_Ks3(Gf
+rPR+(q9f5^p!NBdqrd_/rUTF?rUTXQjmr<;rrE)fqss^anbW:Ws8)cap]&G9nc+1>Jc>ECr;cHh
+U]0`RhrrnPbL,dur;bmXrrB,"J,~>
+r;c0`r;cZnr;_EKqu?TpJcC<$\,V4Vrr at UCP=tZMJP1PeJP3sTr;cXdmJm1dJcDGDSH+6 at dJrS6
+q>^$dJcGZKV+^aes%Dh\JP5r7s%*/Us$craq+U`Vhb!Q+s%2lIo/$7lpG;afnL4,OpFQ%YlQH3-
+q&oDGr=SoTs"F=!rVs],oDaA7JP6#9n,Ir3JP5r7q#KUXrrB,"J,~>
+r;c0`r;cZnr;_EKqu?TpJcC<$\,Y'adA>fjrrD;Ph2^BFnTae\nTaS at pL=#:nRCZ^j\, at JJP1Pe
+JP3sTr;cXdmJm1dJcDGDrrA`grr at WMdJrS6q>^$dJcGZKV+^aes%Dh\btIM+mpba&ms+Y\q==@Q
+rU'LOn+#r=nalGDrUg-]oCW"Up%A@[rUp3aqt9^Np%eL[qt^'_rrDN_s7--Pp&4jh_8c*Hqo7U,
+qloh,hludMqloOcrL3>SopYcSm@*X,rL3P7ooAElm<J+"m;;<$moG!4[7g;qkPtP^X8d\~>
+r;c0`r;cZnr;_EKqu?TpJcC<$\,V6_rr at WLPQ(=ViUb1TWSQshq;&1#J]?fkrHn@[mJm1dJcDGD
+rrAbmrr at WMdJrS6q>^$dJcGZKkJl?*j5'Zrs5!/Dht*K>s3(Gis3CY^q8WBJho>E<s2O`ZoA'6+
+pY>`<n`TZ;p[dA7rrDlcp\k-`s5X"Qs7?3crVs_5oDaC at Jc>]Kn,K6`n+5B!h;-9%l,N[Kr;c$\
+rrB,"J,~>
+r;c0`r;cZnr;_EKqu?TpJcC<$\,V4Vrr at UCP=tZMJP1PeJP3sTr;cXdmJm1dJcDGDSH+6 at dJrS6
+q>^$dJcGZKV+^aes%Dh\JP5r7s%*/Us$craq+U`Vhb!Q+s%2lIo/$7lpG;afnL4,OpFQ%YlQH3-
+q&oDGr=SoTs"F=!rVs],oDaA7JP6#9n,Ir3JP5r7q#KUXrrB,"J,~>
+r;c0`r;cZnr;_EKqu?TpJcC<$\,Y'adA>fjrrD;Ph2^BFnTae\nTaS at pL=#:nRCZ^j\, at JJP1Pe
+JP3sTr;cXdmJm1dJcDGDrrA`grr at WMdJrS6q>^$dJcGZKV+^aes%Dh\btIM+mpba&ms+Y\q==@Q
+rU'LOn+#r=nalGDrUg-]oCW"Up%A@[rUp3aqt9^Np%eL[qt^'_rrDN_s7--Pp&4jh_8c*Hqo7U,
+qloh,hludMqloOcrL3>SopYcSm@*X,rL3P7ooAElm<J+"m;;<$moG!4[7g;qkPtP^X8d\~>
+r;c0`r;cZnr;_EKqu?TpJcC<$\,V6_rr at WLPQ(=ViUb1TWSQshq;&1#J]?fkrHn@[mJm1dJcDGD
+rrAbmrr at WMdJrS6q>^$dJcGZKkJl?*j5'Zrs5!/Dht*K>s3(Gis3CY^q8WBJho>E<s2O`ZoA'6+
+pY>`<n`TZ;p[dA7rrDlcp\k-`s5X"Qs7?3crVs_5oDaC at Jc>]Kn,K6`n+5B!h;-9%l,N[Kr;c$\
+rrB,"J,~>
+m/Zt^o)O at Ap](0lV>pPqJcEjlrrCIHM+djKm7[HZJP2n6p]#e;m7[BXJP1Pehb3tLs%E:jl2Ub`
+JcDGDSH+6 at dJrS6p]($hJcGQGr;`fin,Ir3q+L`Qs%*)WpIs=5ks"brpF,hnr>b>Uoc3WUq&K>U
+q\8o>rs&K0rrDd9r=o&Qq'c7grtr:>q>^HprVqFAMbF'Mn,NCfJP1PenOrf\n,NCfs8W*!X8d\~>
+m/Zt^o)O at Ap](0lV>pPqJcEjlrrCIHhltG'h4"?DnXBE:s$PP$h1O=(o53Aok>p\;p]#e;m7[BX
+JP1Pehb3tLs%E:jl2Ub`JcDGDrrA`grr at WMdJrS6p]($hJcGQGr;`fin,LX*moJmdmqqN<on356
+oCMqMnaZ)=nal_Op$qkKrUp-]qt9jWqt9FOs7Q'Sl1tASs7uZpq>'p_n,<:^s3\[&qn)\(rrE#t
+j1FugrO^skh50k7q5)o9m>g^hs,QK!ms+j`n,ND2mqqN&moG!4Vb?sgn,NCfs8W*!X8d\~>
+m/Zt^o)O at Ap](0lV>pPqJcEjlrrCIHM>mMTmJd-kJc;SHp]'4DdHJ:"rK6X+jjF+aYL.p at ho>\C
+s2P!;l2Ub`JcDGDrrAbmrr at WMdJrS6p]($hJcGQGr;cB-h9k'7n,M;:S,WH9s3(AddDkFup"]<)
+q:tr>n`TT9p%.kInbrIfp[\"Uq>1-is8';*q>^HprVqHJMuNa^n,NEnVuH/Vh<<\NbL,(ar;c<d
+rrE*!rrB,"J,~>
+m/Zt^o)O at Ap](0lV>pPqJcEjlrrCIHM+djKm7[HZJP2n6p]#e;m7[BXJP1Pehb3tLs%E:jl2Ub`
+JcDGDSH+6 at dJrS6p]($hJcGQGr;`fin,Ir3q+L`Qs%*)WpIs=5ks"brpF,hnr>b>Uoc3WUq&K>U
+q\8o>rs&K0rrDd9r=o&Qq'c7grtr:>q>^HprVqFAMbF'Mn,NCfJP1PenOrf\n,NCfs8W*!X8d\~>
+m/Zt^o)O at Ap](0lV>pPqJcEjlrrCIHhltG'h4"?DnXBE:s$PP$h1O=(o53Aok>p\;p]#e;m7[BX
+JP1Pehb3tLs%E:jl2Ub`JcDGDrrA`grr at WMdJrS6p]($hJcGQGr;`fin,LX*moJmdmqqN<on356
+oCMqMnaZ)=nal_Op$qkKrUp-]qt9jWqt9FOs7Q'Sl1tASs7uZpq>'p_n,<:^s3\[&qn)\(rrE#t
+j1FugrO^skh50k7q5)o9m>g^hs,QK!ms+j`n,ND2mqqN&moG!4Vb?sgn,NCfs8W*!X8d\~>
+m/Zt^o)O at Ap](0lV>pPqJcEjlrrCIHM>mMTmJd-kJc;SHp]'4DdHJ:"rK6X+jjF+aYL.p at ho>\C
+s2P!;l2Ub`JcDGDrrAbmrr at WMdJrS6p]($hJcGQGr;cB-h9k'7n,M;:S,WH9s3(AddDkFup"]<)
+q:tr>n`TT9p%.kInbrIfp[\"Uq>1-is8';*q>^HprVqHJMuNa^n,NEnVuH/Vh<<\NbL,(ar;c<d
+rrE*!rrB,"J,~>
+m/Zn\q#H!Gn,N=dX8i2"JcE^hrrCOJM+djKmn<Z\SP/t_MbEaCJP1PeJP40ZrVultrVufrn,N=d
+JcDGDSH+6 at JcDABr;a/snc+/5nOrmBs$?TPs%NGYrCkm9pHJU5pHJ1)pF,npq&K&Umi;'Qq],,<
+r<E9%rsA]Jru(hZs"F$jru(hbr>>PWrtPJE\P)burrE#tJP2+us8W*!oDeVZrr at UCJP5H)rrDTh
+rrE*!rrB,"J,~>
+m/Zn\q#H!Gn,N=dX8i2"JcE^hrrCOJkHN4-f:)^>q3q&<s$PCuh1P$<s"*n]qfqXJl!iONj\,:H
+JP1PeJP40ZrVultrVufrn,N=dJcDGDrrA`grr at WMJcDABr;a/snc-d*moJmdmqqN<nUpk%nal;@
+qssLMnaQ5=s7,^Os6fRKrUT^Ts7?'[s7c-YqsaRUs8)!UrrE#ns7?9dn,<(Xs8DuFa2[eaq>^Hp
+rVu2qhm!-WnZ_P[pR:oSh4"(upR;,7nW*!hrHRpdm<J[2rrDZjq/--TpMKA.moG!4SP/t_nc/Uh
+s8W*!X8d\~>
+m/Zn\q#H!Gn,N=dX8i2"JcE^hrrCOJM>mMTn,E?mSc8YpMuNDLj7CmdVqmK_J]?NcrVultrVufr
+n,N=dJcDGDrrAbmrr at WMJcDABr;c`7h9k'7nc.G:Q2^g:s3^ejs2P)de]. at 2s4m@roA'*'qqV#<
+p#kf7p[e:QmJ[%bs8Dugs6TdVs7>j\qtg?`rVa;+q>^HprVqHJOoGC\rrDZjq>UE"YQ""^h<<\N
+bL+_WrrDThrrE*!rrB,"J,~>
+m/Zn\q#H!Gn,N=dX8i2"JcE^hrrCOJM+djKmn<Z\SP/t_MbEaCJP1PeJP40ZrVultrVufrn,N=d
+JcDGDSH+6 at JcDABr;a/snc+/5nOrmBs$?TPs%NGYrCkm9pHJU5pHJ1)pF,npq&K&Umi;'Qq],,<
+r<E9%rsA]Jru(hZs"F$jru(hbr>>PWrtPJE\P)burrE#tJP2+us8W*!oDeVZrr at UCJP5H)rrDTh
+rrE*!rrB,"J,~>
+m/Zn\q#H!Gn,N=dX8i2"JcE^hrrCOJkHN4-f:)^>q3q&<s$PCuh1P$<s"*n]qfqXJl!iONj\,:H
+JP1PeJP40ZrVultrVufrn,N=dJcDGDrrA`grr at WMJcDABr;a/snc-d*moJmdmqqN<nUpk%nal;@
+qssLMnaQ5=s7,^Os6fRKrUT^Ts7?'[s7c-YqsaRUs8)!UrrE#ns7?9dn,<(Xs8DuFa2[eaq>^Hp
+rVu2qhm!-WnZ_P[pR:oSh4"(upR;,7nW*!hrHRpdm<J[2rrDZjq/--TpMKA.moG!4SP/t_nc/Uh
+s8W*!X8d\~>
+m/Zn\q#H!Gn,N=dX8i2"JcE^hrrCOJM>mMTn,E?mSc8YpMuNDLj7CmdVqmK_J]?NcrVultrVufr
+n,N=dJcDGDrrAbmrr at WMJcDABr;c`7h9k'7nc.G:Q2^g:s3^ejs2P)de]. at 2s4m@roA'*'qqV#<
+p#kf7p[e:QmJ[%bs8Dugs6TdVs7>j\qtg?`rVa;+q>^HprVqHJOoGC\rrDZjq>UE"YQ""^h<<\N
+bL+_WrrDThrrE*!rrB,"J,~>
+JcEjlrrE*!rr at WMJcEF`MbF'MLJ.XIMbEgEJP6#9r;bqPrr at UCJP5Z/mJm+boDeahJcDGDSH/!U
+rr at WMJcE(VrrBf,r;cBfJP5<%s#pBJs$crOs%NGYs%M$9pHJU5pHJ1npMKePq-s#6oj[Y8q(2Oc
+mh,L&rrE':rr`-OpE]bQrsAW<rtt\Krtr.:oDaA7RnN5MJP1Peh+R\Hnc/UhX8d\~>
+JcEjlrrE*!rr at WMJcEF`o<??5d at 1(8_iEQ*l$34ZiGIggnQ++3p]#e;s%E:jj\,URJP1Peoh4]P
+r;cHhr;_EKU&Y,mThk[gli6tbJcC<$ZiC%*^J"M*nc-d*moJmdmqqT>mt:Frp[e at Up$r"Op$_MA
+rUTFF_uB]/s7H3_q=F at Tqtg-arrE)ts6&qNnbN(0dDkLaoDeEohlupQq69=anXBKSn!a'4pR:W4
+s-iV5qi:&ro6C4dm<J+"pL<l6mpb`dJP28$r;cBfrrB,"J,~>
+JcEjlrrE*!rr at WMJcEF`MuN_VL]7=ZSc8*Lp]'4Dh<;c4rK6F%qpGFuRF-T*h8\j^r;cHhr;_EK
+U&Y,mU&Y,mli6tbJcC<$ZiC%*hpLE=s,m<]nc.G:O8f11s3^kls3^kds3]B:pX0#rpX/TgpZVM1
+q=F:Cp%.qKq=FXWli$h`s8Du\qt':Ts8)]ms8'/&oDaC at S,VmV\,QF!nc&"Kh<<\NbL+GOr;cBf
+rrB,"J,~>
+JcEjlrrE*!rr at WMJcEF`MbF'MLJ.XIMbEgEJP6#9r;bqPrr at UCJP5Z/mJm+boDeahJcDGDSH/!U
+rr at WMJcE(VrrBf,r;cBfJP5<%s#pBJs$crOs%NGYs%M$9pHJU5pHJ1npMKePq-s#6oj[Y8q(2Oc
+mh,L&rrE':rr`-OpE]bQrsAW<rtt\Krtr.:oDaA7RnN5MJP1Peh+R\Hnc/UhX8d\~>
+JcEjlrrE*!rr at WMJcEF`o<??5d at 1(8_iEQ*l$34ZiGIggnQ++3p]#e;s%E:jj\,URJP1Peoh4]P
+r;cHhr;_EKU&Y,mThk[gli6tbJcC<$ZiC%*^J"M*nc-d*moJmdmqqT>mt:Frp[e at Up$r"Op$_MA
+rUTFF_uB]/s7H3_q=F at Tqtg-arrE)ts6&qNnbN(0dDkLaoDeEohlupQq69=anXBKSn!a'4pR:W4
+s-iV5qi:&ro6C4dm<J+"pL<l6mpb`dJP28$r;cBfrrB,"J,~>
+JcEjlrrE*!rr at WMJcEF`MuN_VL]7=ZSc8*Lp]'4Dh<;c4rK6F%qpGFuRF-T*h8\j^r;cHhr;_EK
+U&Y,mU&Y,mli6tbJcC<$ZiC%*hpLE=s,m<]nc.G:O8f11s3^kls3^kds3]B:pX0#rpX/TgpZVM1
+q=F:Cp%.qKq=FXWli$h`s8Du\qt':Ts8)]ms8'/&oDaC at S,VmV\,QF!nc&"Kh<<\NbL+GOr;cBf
+rrB,"J,~>
+JcEdjrrE*!r;a\6r;_EKL&['(rrE'lr;_CAP=tZMJP4lnrr at UCJP6#9iW&iVp&G$lJcDGDSH/'W
+r;_EKJcE"Tr;al2n,Ir3k=bh8s$?ZRs$$HVs$?ZYlUh%Bmn*IAqh+onpOi'^pMKePq-s#6j'r$#
+r?:tKq]YnRrrDp6r at e0rpD!Q4rtPJFrttbMrsA]>ZV0oiJP2n6r;cBfJP1PeeP#c>p&G$lX8d\~>
+JcEdjrrE*!r;a\6r;_EKL&_1W_55PJrJpmXs,R%Fa,\u.l$2H0rF5_Bk at 3s^dnBH8JP4lnrr at UC
+JP6#9iW&iVp&G$lJcDGDrrA`grrDHdr;_EKJcE"Tr;al2n,LR(moJmdmqqT>mt::nrU]dUq=4 at Q
+q=":IrUKdSq==ROs6QBWs7Q?^qtL-ep\k*lp&4^_n+le,f>cpaoDe^"nZ_nepTWJMhjX(qs-iD:
+gOns>rGD.Ns"+0Mnc/&es&SStmoG!4ND'-Kp&G$lX8d\~>
+JcEdjrrE*!r;a\6r;_EKL&[)1rrE)urN_"RVuH)Tp]'XPgZYKip!Neo^!Zl"kL"k#ho=XTr;cNj
+rr at WMU&Y,mU&Y,mmJm+bJcC<$Z2ab&l-\DEn,M58MuNb0s3^kls3^kds3^)NrP.g at pX0#spX/Tg
+pZVM1q=F:Cj7DO6rrDrprU]FTs8)WkZi9RrJc;SHs0DY)nc-)tp%/([n+5B!h;-?'^W-;#r;cNj
+rrB,"J,~>
+JcEdjrrE*!r;a\6r;_EKL&['(rrE'lr;_CAP=tZMJP4lnrr at UCJP6#9iW&iVp&G$lJcDGDSH/'W
+r;_EKJcE"Tr;al2n,Ir3k=bh8s$?ZRs$$HVs$?ZYlUh%Bmn*IAqh+onpOi'^pMKePq-s#6j'r$#
+r?:tKq]YnRrrDp6r at e0rpD!Q4rtPJFrttbMrsA]>ZV0oiJP2n6r;cBfJP1PeeP#c>p&G$lX8d\~>
+JcEdjrrE*!r;a\6r;_EKL&_1W_55PJrJpmXs,R%Fa,\u.l$2H0rF5_Bk at 3s^dnBH8JP4lnrr at UC
+JP6#9iW&iVp&G$lJcDGDrrA`grrDHdr;_EKJcE"Tr;al2n,LR(moJmdmqqT>mt::nrU]dUq=4 at Q
+q=":IrUKdSq==ROs6QBWs7Q?^qtL-ep\k*lp&4^_n+le,f>cpaoDe^"nZ_nepTWJMhjX(qs-iD:
+gOns>rGD.Ns"+0Mnc/&es&SStmoG!4ND'-Kp&G$lX8d\~>
+JcEdjrrE*!r;a\6r;_EKL&[)1rrE)urN_"RVuH)Tp]'XPgZYKip!Neo^!Zl"kL"k#ho=XTr;cNj
+rr at WMU&Y,mU&Y,mmJm+bJcC<$Z2ab&l-\DEn,M58MuNb0s3^kls3^kds3^)NrP.g at pX0#spX/Tg
+pZVM1q=F:Cj7DO6rrDrprU]FTs8)WkZi9RrJc;SHs0DY)nc-)tp%/([n+5B!h;-?'^W-;#r;cNj
+rrB,"J,~>
+JcELbr;_EKJcG!7rrCmTND'9OJP1nop]#e;JP1Pej%J/,rrE*!r;cZnrr at WMU&UY`n,N7bJcC<$
+XoJ>"f1Z&Bs%Dh\JP4rps#L*FrBC0GgI_:&on33fq1J9`pMKkRpL<l6s&S5jo2betq]YtTrrDp#
+rsA]Jo+_32r=o8DrsAW<YtOcirr at UCX\8-_JP1PebtJ':s%E:jq>^HpX8d\~>
+JcELbr;_EKJcG!7rrCmTa/.1PpQ#7R_2d?(kBQ6.iF;7VdnBH8JP1PeJP5#rg].9Rs8W#tq>^Hp
+JcDGDrrA`WrrDNfqZ)3IJcDkPr;bGBr;cjjn,LR(moJmdnSR`>mt:.js-iWQs7-'ZrUTdQp$qkD
+L]7=Zs5WqOrrE)nlh^5Kp!MI4lb!%up&G$lo<@h_rNPggq3q&Sh4!emqh+R%mt:@Zq1J-\o54AL
+n,MicpK%#tmoG!4KhMFGs%E:jq>^HpX8d\~>
+JcELbr;_EKJcG!7rrCmTNW/qXJc;;@mIU)Pp[d)%V;8?&pVu[LJ]?Teg].9Rs8W#tq>^HpJcDGD
+rrAbmrrDNfqZ)3IJcDkPr;cH:n_O$)rS at F7s5!/Dh=H@"s4R.oe].:0rS@:soA00)rS at 5>pZVYV
+jn&*Cs0D[fq>L<nq>L?ajo)I`p&G$lJc;eNn,Klrh=KIdh;-?'\&SGps2P!;q>^HpX8d\~>
+JcELbr;_EKJcG!7rrCmTND'9OJP1nop]#e;JP1Pej%J/,rrE*!r;cZnrr at WMU&UY`n,N7bJcC<$
+XoJ>"f1Z&Bs%Dh\JP4rps#L*FrBC0GgI_:&on33fq1J9`pMKkRpL<l6s&S5jo2betq]YtTrrDp#
+rsA]Jo+_32r=o8DrsAW<YtOcirr at UCX\8-_JP1PebtJ':s%E:jq>^HpX8d\~>
+JcELbr;_EKJcG!7rrCmTa/.1PpQ#7R_2d?(kBQ6.iF;7VdnBH8JP1PeJP5#rg].9Rs8W#tq>^Hp
+JcDGDrrA`WrrDNfqZ)3IJcDkPr;bGBr;cjjn,LR(moJmdnSR`>mt:.js-iWQs7-'ZrUTdQp$qkD
+L]7=Zs5WqOrrE)nlh^5Kp!MI4lb!%up&G$lo<@h_rNPggq3q&Sh4!emqh+R%mt:@Zq1J-\o54AL
+n,MicpK%#tmoG!4KhMFGs%E:jq>^HpX8d\~>
+JcELbr;_EKJcG!7rrCmTNW/qXJc;;@mIU)Pp[d)%V;8?&pVu[LJ]?Teg].9Rs8W#tq>^HpJcDGD
+rrAbmrrDNfqZ)3IJcDkPr;cH:n_O$)rS at F7s5!/Dh=H@"s4R.oe].:0rS@:soA00)rS at 5>pZVYV
+jn&*Cs0D[fq>L<nq>L?ajo)I`p&G$lJc;eNn,Klrh=KIdh;-?'\&SGps2P!;q>^HpX8d\~>
+JcE@^r;bILrr at WMQiI'chuB*;r;cXdrr at UCq+L_fP=tZMPtV&UJP1PegIp#qrrE#tr;cfrrr at WM
+U&UY`p&F[bJcC<$WW2nsgIq#8JP4fls!.P%s$?ZKrB^HIj[o?0s+C--on33fqh+KbokjYPpL<l6
+rDr/lk>qUUrrD]rq[r]>r<`K<r=T&Drs>f#p](6ns8RXC]1`/(s%Dh\dnBW>JP1PenOrf\rVult
+X8d\~>
+JcE@^r;bILrr at WMQiI'chuCrtd at 1#orBpC at rrCH,mt9G at q/,YHpMKpRo54#,pK%0#nQ+%1p]$LO
+r;_CAJP4`je,TFJrVufrrVultJcDGDrrA`WrrD`lo`0RCJcD_Lr;bSFn,LR(moJmdnSR`>mt:.j
+qjR9Os7Z9[rUBLMrU0^OJc>3=rrE#ms7bjUp\F@,h8\oqo<@uhrrE*!qlntSnXBKSnXB34q3pc4
+o7R"%mt9A>o54LNs)%6)mpbBZr<rL'JP1PepIkGbrVultX8d\~>
+JcE@^r;bILrr at WMQiI'chuB,DrNc7urr at WLq>UE"VuH)Tp]&k/^YSjNleS\jn](=NJ]?Tee,TFJ
+rVufrrVultJcDGDrrAbmrrD`lo`0RCJcD_Lr;clFn(mHrn,M58Jc>]<s4m at rho>]Dq8W*TrS@@u
+oA0*'rS at 5>pZVSTl1=$9rrCgPXoA(prrE*!Jc<:\s0D\(n,Ll9rNb\eh=KIdh;-?'WQ+l:rVult
+X8d\~>
+JcE@^r;bILrr at WMQiI'chuB*;r;cXdrr at UCq+L_fP=tZMPtV&UJP1PegIp#qrrE#tr;cfrrr at WM
+U&UY`p&F[bJcC<$WW2nsgIq#8JP4fls!.P%s$?ZKrB^HIj[o?0s+C--on33fqh+KbokjYPpL<l6
+rDr/lk>qUUrrD]rq[r]>r<`K<r=T&Drs>f#p](6ns8RXC]1`/(s%Dh\dnBW>JP1PenOrf\rVult
+X8d\~>
+JcE@^r;bILrr at WMQiI'chuCrtd at 1#orBpC at rrCH,mt9G at q/,YHpMKpRo54#,pK%0#nQ+%1p]$LO
+r;_CAJP4`je,TFJrVufrrVultJcDGDrrA`WrrD`lo`0RCJcD_Lr;bSFn,LR(moJmdnSR`>mt:.j
+qjR9Os7Z9[rUBLMrU0^OJc>3=rrE#ms7bjUp\F@,h8\oqo<@uhrrE*!qlntSnXBKSnXB34q3pc4
+o7R"%mt9A>o54LNs)%6)mpbBZr<rL'JP1PepIkGbrVultX8d\~>
+JcE@^r;bILrr at WMQiI'chuB,DrNc7urr at WLq>UE"VuH)Tp]&k/^YSjNleS\jn](=NJ]?Tee,TFJ
+rVufrrVultJcDGDrrAbmrrD`lo`0RCJcD_Lr;clFn(mHrn,M58Jc>]<s4m at rho>]Dq8W*TrS@@u
+oA0*'rS at 5>pZVSTl1=$9rrCgPXoA(prrE*!Jc<:\s0D\(n,Ll9rNb\eh=KIdh;-?'WQ+l:rVult
+X8d\~>
+JcE:\qZ,IPrr at WMJcG3=O%]KQJP5`1rrA<Wp&BS9f1Z,DJP2V._uKT6JcDGDSH/?_o`0RCJcDSH
+r;bqPn,Ir3f1Z-(s$?TIs$?TIm7Ho0rIb!-pOi?fqh+Kbo54MPoj[f8qc<#lj];CSrrDphqZc^*
+r<`E:r=T&9rt2;)oDaA7_+Xe.nc+/5JP3CDqZ*\sJ,~>
+JcE:\qZ,IPrr at WMJcG3=eYUZ^l]1uFh2^NJh0A1$s*49Truq&PnRCrfoh56adnBB6JP4Tfrr at UC
+T1d*%qZ)3IU&Y,mTg/PWp&F[bJcC<$V>pJoj\,(Bb=h;)nRCs(ms+;RnW*:2rUg!\q=F at Ns6]dQ
+Jc=p5rrDrqs7lWklh^GQn^6I<jh(,goDdjIh4!5]mt:L^on2XVq/,kNmqr()nc/&em8isSq,W&>
+JP5B'qZ*\sJ,~>
+JcE:\qZ,IPrr at WMJcG3=O8f.ZJc>ECs0AR%n+65PiTS&4s3]raf?sVQgX59*s3ZD;ho<S6qZ)3I
+U&Y,mU&Y,mp&F[bJcC<$V>pJopYG<%n,M58Jc>QGs4R(mho>WBqo8BXqq_.soA0$%s5!A>qrmqV
+lgs09rrDrqhu0VToDaC at _>aH7nc-)th=KIdhqcK'T>pa.X8d\~>
+JcE:\qZ,IPrr at WMJcG3=O%]KQJP5`1rrA<Wp&BS9f1Z,DJP2V._uKT6JcDGDSH/?_o`0RCJcDSH
+r;bqPn,Ir3f1Z-(s$?TIs$?TIm7Ho0rIb!-pOi?fqh+Kbo54MPoj[f8qc<#lj];CSrrDphqZc^*
+r<`E:r=T&9rt2;)oDaA7_+Xe.nc+/5JP3CDqZ*\sJ,~>
+JcE:\qZ,IPrr at WMJcG3=eYUZ^l]1uFh2^NJh0A1$s*49Truq&PnRCrfoh56adnBB6JP4Tfrr at UC
+T1d*%qZ)3IU&Y,mTg/PWp&F[bJcC<$V>pJoj\,(Bb=h;)nRCs(ms+;RnW*:2rUg!\q=F at Ns6]dQ
+Jc=p5rrDrqs7lWklh^GQn^6I<jh(,goDdjIh4!5]mt:L^on2XVq/,kNmqr()nc/&em8isSq,W&>
+JP5B'qZ*\sJ,~>
+JcE:\qZ,IPrr at WMJcG3=O8f.ZJc>ECs0AR%n+65PiTS&4s3]raf?sVQgX59*s3ZD;ho<S6qZ)3I
+U&Y,mU&Y,mp&F[bJcC<$V>pJopYG<%n,M58Jc>QGs4R(mho>WBqo8BXqq_.soA0$%s5!A>qrmqV
+lgs09rrDrqhu0VToDaC at _>aH7nc-)th=KIdhqcK'T>pa.X8d\~>
+JcE4ZrrE*!r;_EKJcF!pO%]KQJP1bkp]%-ar;a/srr at UCWCsf%r;_EKU&UY`mJm+bJcC<$U&Y&k
+o1T#^n,Ir3dnB]cs#0U8nO`,.rIb-1s$QgHpOi9drIa]do54MPoj[f8qc<#ls&T(+lW4$YrrDX`
+pC[?.rsA]>rt588r=l/&oDaA7b=h=(JP1PeY=n`mX8d\~>
+JcE4ZrrE*!r;_EKJcF!ph5/Gdjc9?@kDn/Hh0A1$oj[N0nRD#h_+XP&Vb?sgZV1;uJP2t8\c;U.
+JcDGDrrA`WrrDHdr;_EKJcDGDr;cF^r;c<db=hA+mpba&ms+;RnW*..q=a^Ws7H-WqsNYHs0A-n
+rNb\errDZis8;]ip%nX_mEt%8kI^8goDe-QnXBK<nXAp,q1JF%mt::Xqh+?^nSS;NmqqOnrDrN!
+moG!4JP4HbqZ*\sJ,~>
+JcE4ZrrE*!r;_EKJcF!pO8f.ZJc;eNg[k1>iTS><s,m>9q9eTccdDcIj3`Fta2Y[ir;_EKU&Y,m
+U&Y,mmJm+bJcC<$U&Y&koB?.Cn,M58Jc>ECs6p!CpX.g:rR(Ybs*OdcpX/fmrR(5moB?51p%/(E
+qu5pQs8Mu&l2L\_oD[qOVuH;fJc<jln,Klrh=KOfh;-9%RE#8Rr;`nuJ,~>
+JcE4ZrrE*!r;_EKJcF!pO%]KQJP1bkp]%-ar;a/srr at UCWCsf%r;_EKU&UY`mJm+bJcC<$U&Y&k
+o1T#^n,Ir3dnB]cs#0U8nO`,.rIb-1s$QgHpOi9drIa]do54MPoj[f8qc<#ls&T(+lW4$YrrDX`
+pC[?.rsA]>rt588r=l/&oDaA7b=h=(JP1PeY=n`mX8d\~>
+JcE4ZrrE*!r;_EKJcF!ph5/Gdjc9?@kDn/Hh0A1$oj[N0nRD#h_+XP&Vb?sgZV1;uJP2t8\c;U.
+JcDGDrrA`WrrDHdr;_EKJcDGDr;cF^r;c<db=hA+mpba&ms+;RnW*..q=a^Ws7H-WqsNYHs0A-n
+rNb\errDZis8;]ip%nX_mEt%8kI^8goDe-QnXBK<nXAp,q1JF%mt::Xqh+?^nSS;NmqqOnrDrN!
+moG!4JP4HbqZ*\sJ,~>
+JcE4ZrrE*!r;_EKJcF!pO8f.ZJc;eNg[k1>iTS><s,m>9q9eTccdDcIj3`Fta2Y[ir;_EKU&Y,m
+U&Y,mmJm+bJcC<$U&Y&koB?.Cn,M58Jc>ECs6p!CpX.g:rR(Ybs*OdcpX/fmrR(5moB?51p%/(E
+qu5pQs8Mu&l2L\_oD[qOVuH;fJc<jln,Klrh=KOfh;-9%RE#8Rr;`nuJ,~>
+JcDqRr;cNjr;_EKJcF^/X%WBkktD$VJP1\ip]#e;JP1Vg\c;I*JcDGDRfMjUr;_EKJcD;@rrDdd
+n,Ir3btJ'[s"O12q+9\.qh+p/s$QO5q0;jjo6BkDo4%T6qc<)ns%DHSs%E at lnOrg]r=So2rt58F
+rs&K8rsA];Vb?X]JP4Tfr;c<dJP1PeX\8BgX8d\~>
+JcDqRr;cNjr;_EKJcF^/j/((jqi:VBl&PcDmuG_Hh0A+"f4+8N_+XP&JP1PeK1icTq#H!GU&Xcc
+[6O6_mJm+bJcC<$ScA]ipIjuTbtIM+mpba&ms+;RnW*..qlp+_s8;ojs7?3]qsj^Ws6e_Bs0 at 4T
+rrDHcq>9j]s7u!.kJlu&n$)\coDeEYn!a!2qjQu6h1OO.mqql0qec9Tn,N&]qdT"pJP1Ped7a36
+X8d\~>
+JcDqRr;cNjr;_EKJcF^/X8`('l2L\_Jc;_Lg[k1>iTSPBn'UgaYL.p at a2Y[iq#H!GU&Xcc[K#gu
+mJm+bJcC<$ScA]ipZV)Gh=H3snc&Res4m at rh8]?>s2P(cpX/fmrR(5moB>f;qrmqVmIT<9rrDHc
+li!a\oDaC at fDb`Sn,Klrn+6SCnal;7q;(f/h;-9%QcAb"X8d\~>
+JcDqRr;cNjr;_EKJcF^/X%WBkktD$VJP1\ip]#e;JP1Vg\c;I*JcDGDRfMjUr;_EKJcD;@rrDdd
+n,Ir3btJ'[s"O12q+9\.qh+p/s$QO5q0;jjo6BkDo4%T6qc<)ns%DHSs%E at lnOrg]r=So2rt58F
+rs&K8rsA];Vb?X]JP4Tfr;c<dJP1PeX\8BgX8d\~>
+JcDqRr;cNjr;_EKJcF^/j/((jqi:VBl&PcDmuG_Hh0A+"f4+8N_+XP&JP1PeK1icTq#H!GU&Xcc
+[6O6_mJm+bJcC<$ScA]ipIjuTbtIM+mpba&ms+;RnW*..qlp+_s8;ojs7?3]qsj^Ws6e_Bs0 at 4T
+rrDHcq>9j]s7u!.kJlu&n$)\coDeEYn!a!2qjQu6h1OO.mqql0qec9Tn,N&]qdT"pJP1Ped7a36
+X8d\~>
+JcDqRr;cNjr;_EKJcF^/X8`('l2L\_Jc;_Lg[k1>iTSPBn'UgaYL.p at a2Y[iq#H!GU&Xcc[K#gu
+mJm+bJcC<$ScA]ipZV)Gh=H3snc&Res4m at rh8]?>s2P(cpX/fmrR(5moB>f;qrmqVmIT<9rrDHc
+li!a\oDaC at fDb`Sn,Klrn+6SCnal;7q;(f/h;-9%QcAb"X8d\~>
+JcDeNr;_EKJcG-;r;c0`O\>]SJP56#rrAT_p]%csrr at UCJP4Nd]Dq[,q>^BnJcDMFSH/'Wr;_EK
+JcD;@qZ-*bJP4*Xs!.P%ofiCIiK!_ds,Qc)q0;jjom$"Do4%Z8q,[<#r>,9>rCc6Qs%E at lmn<IW
+qZd'4rtPD9rstktp](0lJP4fln,KF]rr at UCM+dRCp](0lYQ'+~>
+JcDeNr;_EKJcG-;r;c0`n"n-pgQ):6pQ!4Fh0A+"m:-)2s'kY%rF54r_+XP&\P)r&JP1PeeP!OS
+q#L6jr;_EKU]:>oTg/PWmJm+bJcC<$ScAQen,LX*moJmdmqqN<mt:.jnXB3VrV$9cqt0pYrUPO=
+rNb,UrrD6]rVQWbq>1-is4uqen](%0mBH2Yp](0lrMAtOhi?NFh0AC*mpbbch,_iprr at UCM+dRC
+p](0lYQ'+~>
+JcDeNr;_EKJcG-;r;c0`OoG@\Jc=p5s0BQAg[k1>iTStNs,m?;l-]CaXjM^>ai:smq#L6jr;_EK
+U]:>oU&Y,mmJm+bJcC<$ScAQen,MkJs8MW]Jc>!7s6p!Cp!M[:q9f5^p!NTkrR(;on`]T9rTO(V
+q=FQ_qt&_ErrD6]nbo6^p](0lJc=L)n,KrtoCN![s7>jGrU]LAbMC at hS&YDRqZ-Bjr;a&$J,~>
+JcDeNr;_EKJcG-;r;c0`O\>]SJP56#rrAT_p]%csrr at UCJP4Nd]Dq[,q>^BnJcDMFSH/'Wr;_EK
+JcD;@qZ-*bJP4*Xs!.P%ofiCIiK!_ds,Qc)q0;jjom$"Do4%Z8q,[<#r>,9>rCc6Qs%E at lmn<IW
+qZd'4rtPD9rstktp](0lJP4fln,KF]rr at UCM+dRCp](0lYQ'+~>
+JcDeNr;_EKJcG-;r;c0`n"n-pgQ):6pQ!4Fh0A+"m:-)2s'kY%rF54r_+XP&\P)r&JP1PeeP!OS
+q#L6jr;_EKU]:>oTg/PWmJm+bJcC<$ScAQen,LX*moJmdmqqN<mt:.jnXB3VrV$9cqt0pYrUPO=
+rNb,UrrD6]rVQWbq>1-is4uqen](%0mBH2Yp](0lrMAtOhi?NFh0AC*mpbbch,_iprr at UCM+dRC
+p](0lYQ'+~>
+JcDeNr;_EKJcG-;r;c0`OoG@\Jc=p5s0BQAg[k1>iTStNs,m?;l-]CaXjM^>ai:smq#L6jr;_EK
+U]:>oU&Y,mmJm+bJcC<$ScAQen,MkJs8MW]Jc>!7s6p!Cp!M[:q9f5^p!NTkrR(;on`]T9rTO(V
+q=FQ_qt&_ErrD6]nbo6^p](0lJc=L)n,KrtoCN![s7>jGrU]LAbMC at hS&YDRqZ-Bjr;a&$J,~>
+JcDkPpAfdEJcF@%]hA;(fh;>FJP50!rrAT_p]%p"rrA6Urr at UCa\08GqZ-TprrDZjr;_EKVuN:f
+mJm+bJcC<$U&Y&kqu?Tpq>Z"=_b:"Qs"jC5s+B3hm=Y.Xs+BofnSRl,rGD at 2mpc5gj&Z0[m7[=W
+rCd.pr=T&6rt588rrA`coDaA7k=b:DUJ(UeJP1tqqZ-$`r;a2(J,~>
+JcDkPpAfdEJcF@%q5)'!rBo7urrE(Z]n>-ckABNortbWDkuRaUqc:O+p]%p"rrA6Urr at UCa\08G
+qZ-TprrDZjr;_EKVuQbsTg/PWmJm+bJcC<$U&Y&kqu?Tpq>\]4moJmdmqqN<nUp:jnXB9Mqlp+4
+s69RXrUg'Zs6bI;dJj.Gj8T)RrVQWirVHQmrS?_cou?U8jfn?QoDeKPhi@/XrHRpdms+YFpNZ.D
+mpbbch,_Qhrr at UCND'-KmJm+bZi>O~>
+JcDkPpAfdEJcF@%^&Iu9g&D!OJc=j3s0BQAj7E*1p]'49h;/*cPL9DbJ]>gO]Dqa.rVultoDeah
+JcDYJrrAbmrrDHdr;_EKJcDGDr;c`pr;cZnnalAOrUYU>jo5;Ys4m:pho>'2pYGksoA/s#oCMqE
+q>TjShu<WUj8SZKU&OZ`Jc=j3n,LT1rU]X[n+6MAs.&-5h;.tUp"dg=QcAn&mJm+bZi>O~>
+JcDkPpAfdEJcF@%]hA;(fh;>FJP50!rrAT_p]%p"rrA6Urr at UCa\08GqZ-TprrDZjr;_EKVuN:f
+mJm+bJcC<$U&Y&kqu?Tpq>Z"=_b:"Qs"jC5s+B3hm=Y.Xs+BofnSRl,rGD at 2mpc5gj&Z0[m7[=W
+rCd.pr=T&6rt588rrA`coDaA7k=b:DUJ(UeJP1tqqZ-$`r;a2(J,~>
+JcDkPpAfdEJcF@%q5)'!rBo7urrE(Z]n>-ckABNortbWDkuRaUqc:O+p]%p"rrA6Urr at UCa\08G
+qZ-TprrDZjr;_EKVuQbsTg/PWmJm+bJcC<$U&Y&kqu?Tpq>\]4moJmdmqqN<nUp:jnXB9Mqlp+4
+s69RXrUg'Zs6bI;dJj.Gj8T)RrVQWirVHQmrS?_cou?U8jfn?QoDeKPhi@/XrHRpdms+YFpNZ.D
+mpbbch,_Qhrr at UCND'-KmJm+bZi>O~>
+JcDkPpAfdEJcF@%^&Iu9g&D!OJc=j3s0BQAj7E*1p]'49h;/*cPL9DbJ]>gO]Dqa.rVultoDeah
+JcDYJrrAbmrrDHdr;_EKJcDGDr;c`pr;cZnnalAOrUYU>jo5;Ys4m:pho>'2pYGksoA/s#oCMqE
+q>TjShu<WUj8SZKU&OZ`Jc=j3n,LT1rU]X[n+6MAs.&-5h;.tUp"dg=QcAn&mJm+bZi>O~>
+JcE(VqZ-NnrrE*!r;_EKJcFF'P=toUJP1Pes%E+dJP46\rr at UCd7_+OqZ,[Vr;_EKX8e^jmJm+b
+JcC<$VuQVooDeahJP3gPruV+prBC+2h2^lTkBQT8nRDN8oiCZnq+KgMrrD at XrDr_ert5,4rr\fb
+p&BS9oh5;brCcVZJP1PeY=nZkj8],Z[Jta~>
+JcE(VqZ-NnrrE*!r;_EKJcFF'`L>27s+C=O\V'^&bAHKQk>o&bp]#e;btJ':JP4B`]Dqa.j8]&X
+JcDeNrrA`WrrDHdr;_EKJcDYJqZ-6fr;b/:moJmdmqqN<nUp:jnXB'Gqn)n+s7cKbs71a?bPqMA
+mJd.Wp\t3as7lWks7lQiqq^Yen&Ft2l*0]Ss-iW\rL2Q&nUpFXrIaQ`h/2gortbQBn,MiWpIk<_
+JP1PednBK:j8],Z[Jta~>
+JcE(VqZ-NnrrE*!r;_EKJcFF'PQ(R^Jc;kPjn%m'p]'LAfA2_>qo8Y_J]?*W]Dqa.j8]&XJcDeN
+rrAbmrrDHdr;_EKJcDYJqZ-6fr;cH\Jc=!ps6opApX.g:mEt+QoB>`9s60.ToCLf;rrCsUp\gZ^
+p&BUBp&=usrVl9cbPq,)rVl9Wh<<\No?mNmh9l8Bn^3cEq#KITrrBJ,J,~>
+JcE(VqZ-NnrrE*!r;_EKJcFF'P=toUJP1Pes%E+dJP46\rr at UCd7_+OqZ,[Vr;_EKX8e^jmJm+b
+JcC<$VuQVooDeahJP3gPruV+prBC+2h2^lTkBQT8nRDN8oiCZnq+KgMrrD at XrDr_ert5,4rr\fb
+p&BS9oh5;brCcVZJP1PeY=nZkj8],Z[Jta~>
+JcE(VqZ-NnrrE*!r;_EKJcFF'`L>27s+C=O\V'^&bAHKQk>o&bp]#e;btJ':JP4B`]Dqa.j8]&X
+JcDeNrrA`WrrDHdr;_EKJcDYJqZ-6fr;b/:moJmdmqqN<nUp:jnXB'Gqn)n+s7cKbs71a?bPqMA
+mJd.Wp\t3as7lWks7lQiqq^Yen&Ft2l*0]Ss-iW\rL2Q&nUpFXrIaQ`h/2gortbQBn,MiWpIk<_
+JP1PednBK:j8],Z[Jta~>
+JcE(VqZ-NnrrE*!r;_EKJcFF'PQ(R^Jc;kPjn%m'p]'LAfA2_>qo8Y_J]?*W]Dqa.j8]&XJcDeN
+rrAbmrrDHdr;_EKJcDYJqZ-6fr;cH\Jc=!ps6opApX.g:mEt+QoB>`9s60.ToCLf;rrCsUp\gZ^
+p&BUBp&=usrVl9cbPq,)rVl9Wh<<\No?mNmh9l8Bn^3cEq#KITrrBJ,J,~>
+JcE:\qZ-$`r;_EKJcFR+btJ':a\2X6JP1Pes%E%bd7aE<JP1Pefh8sWo`3hJrr at WMXoFplmJm+b
+JcC<$WW2tul2U\^JP3sTrsSi_s$$I-q1IL`m=Y@^r at IJ`nSR`(s&T(+qc<B!pIjUKrrD at XrDr_e
+s&T.mqZd'#SP/SSJP5l5rrDNfJP1PeY=n`mNW4M~>
+JcE:\qZ-$`r;_EKJcFR+c'nZ-d>n$TrrC5pj`oTuf4*oD\P)Vqd7aE<JP1Pefh8sWo`3hJrr at WM
+XoJD$Tg/PWmJm+bJcC<$WW2tul2U\^fh:d7mpba&ms+ATmuHq,o;2,ls8Doh]Dhc7c2R[Iao;;?
+mJd.Wp\t3arVlips7lWks8DcLp!N<LmCVhknYPuKoDdj2mt9MBmqqf.q/,Y2rtb)'moG!4JP3gP
+qZ)WUJ,~>
+JcE:\qZ-$`r;_EKJcFR+c2RaKao;;?Jc;eNjn%s)p&F^Kh;/$loA,tbJ]>mQ]DqO(h>dKTJcDkP
+rrAbmrrDHdr;_EKJcD_LrrD<`r;cffJc<djs8DuQs3^l&q9e$<mEtmgrK6X+n`]H5s8Mu&qu69[
+g]%3Qg]%$ISc86\Jc>QGs0D+nbPp>hh<<\NbL-"&rR$tOqZ)WUJ,~>
+JcE:\qZ-$`r;_EKJcFR+btJ':a\2X6JP1Pes%E%bd7aE<JP1Pefh8sWo`3hJrr at WMXoFplmJm+b
+JcC<$WW2tul2U\^JP3sTrsSi_s$$I-q1IL`m=Y@^r at IJ`nSR`(s&T(+qc<B!pIjUKrrD at XrDr_e
+s&T.mqZd'#SP/SSJP5l5rrDNfJP1PeY=n`mNW4M~>
+JcE:\qZ-$`r;_EKJcFR+c'nZ-d>n$TrrC5pj`oTuf4*oD\P)Vqd7aE<JP1Pefh8sWo`3hJrr at WM
+XoJD$Tg/PWmJm+bJcC<$WW2tul2U\^fh:d7mpba&ms+ATmuHq,o;2,ls8Doh]Dhc7c2R[Iao;;?
+mJd.Wp\t3arVlips7lWks8DcLp!N<LmCVhknYPuKoDdj2mt9MBmqqf.q/,Y2rtb)'moG!4JP3gP
+qZ)WUJ,~>
+JcE:\qZ-$`r;_EKJcFR+c2RaKao;;?Jc;eNjn%s)p&F^Kh;/$loA,tbJ]>mQ]DqO(h>dKTJcDkP
+rrAbmrrDHdr;_EKJcD_LrrD<`r;cffJc<djs8DuQs3^l&q9e$<mEtmgrK6X+n`]H5s8Mu&qu69[
+g]%3Qg]%$ISc86\Jc>QGs0D+nbPp>hh<<\NbL-"&rR$tOqZ)WUJ,~>
+JcE@^rrD*Zr;_EKJcG-;r;cTld7aK>a%QF4JP1PerCcnbJP1PeX%U))qZ)3IJcGWISH/'Wr;_EK
+JcC`0r;_CAa\2XTrtbVjs*49jh2^lTl$2`8mpbrjoj[Ygj];B]ktD%WpIkNerCd(nR7m5Qrr@[E
+n,Ir3JP31>qZ)EOJ,~>
+JcE@^rrD*Zr;_EKJcG-;r;cTleXHGss$P=so7R&Cf7Vb$h/2=aoiCs!kuP8dp]#e;JP3%:]Dqa.
+JcC<$qu?ZrTeHEGmJm+bJcC<$NW8qWiCiW?mpba&nTaMTmuHq,o;2,lrPnm9s5j:PJc<XfrrDHc
+rU]jarU]pcs7u]lrTO(5p!NHPo=O1io;2&Ip&G$lm>gXfhg"U,h.#jQmoG!4JP3gPqZ)EOJ,~>
+JcE@^rrD*Zr;_EKJcG-;r;cTldJj0Oa8Z)=Jc;_LkO\*)p](9W_;2fPrPn*LJ]>sS]Dqa.JcC<$
+qu?ZrU&Y,mmJm+bJcC<$NW8qWJc<djs6p!ds4mY1pX.g:mEt1Sn`]H5p&=XUg]%3QfDbaIRJumZ
+rr@]Nn,LT1h=KIdh;-?'KuWuiL];l~>
+JcE@^rrD*Zr;_EKJcG-;r;cTld7aK>a%QF4JP1PerCcnbJP1PeX%U))qZ)3IJcGWISH/'Wr;_EK
+JcC`0r;_CAa\2XTrtbVjs*49jh2^lTl$2`8mpbrjoj[Ygj];B]ktD%WpIkNerCd(nR7m5Qrr@[E
+n,Ir3JP31>qZ)EOJ,~>
+JcE@^rrD*Zr;_EKJcG-;r;cTleXHGss$P=so7R&Cf7Vb$h/2=aoiCs!kuP8dp]#e;JP3%:]Dqa.
+JcC<$qu?ZrTeHEGmJm+bJcC<$NW8qWiCiW?mpba&nTaMTmuHq,o;2,lrPnm9s5j:PJc<XfrrDHc
+rU]jarU]pcs7u]lrTO(5p!NHPo=O1io;2&Ip&G$lm>gXfhg"U,h.#jQmoG!4JP3gPqZ)EOJ,~>
+JcE@^rrD*Zr;_EKJcG-;r;cTldJj0Oa8Z)=Jc;_LkO\*)p](9W_;2fPrPn*LJ]>sS]Dqa.JcC<$
+qu?ZrU&Y,mmJm+bJcC<$NW8qWJc<djs6p!ds4mY1pX.g:mEt1Sn`]H5p&=XUg]%3QfDbaIRJumZ
+rr@]Nn,LT1h=KIdh;-?'KuWuiL];l~>
+JcD):r;_EKJcFd1PtV,WJP4Zhr;``gp]'2Frr at UCJP4Nd]Dq[,JcC<$p]$camJm+bJcC<$M?!MS
+JP46\rrN.Es+C>rpOh@`m=XSHo54;4rtbE>o2bTpoh4CIrrD4Ts&SS]rrABYp](6ns8S9Ur;cjj
+n,Ir3rCd(hJP3UJpAfdEJ,~>
+JcD):r;_EKJcFd1gR?HKm=YE=iIfC"h/2=alW3rls%Dra[nHJqiCj1NJP1PeeP!OSq#H!GJcGKE
+rrA`GrrDHdr;_EKJcCT,r;c.VmoJmdnSR`>mt:(hnXB'Got1%>s3^l2MuNa^\c2U/li-kSq>U?a
+rVlces8;iZpYGMiou?U8l*0]So:#FRrrE*!pQ"]phg"U,j'qs&s'kHss%Dl_O%]EOJP3UJpAfdE
+J,~>
+JcD):r;_EKJcFd1Q2^d`Jc=@%rNb&Sjn%m'p]'4.s,l9r`R4 at un^2p-c,RBqq#H!GJcGKErrAbm
+rrDHdr;_EKJcCT,r;_EJc2RbAs5!_&s5!Fsho>'2kM>anq=FWaq=F4Wp[d);rrCOIs8A;`p](6n
+s8S;^rNcJ&n,M5Cqt'L[h=KIdqq_45kM=D1M8oL at qZ)3IJ,~>
+JcD):r;_EKJcFd1PtV,WJP4Zhr;``gp]'2Frr at UCJP4Nd]Dq[,JcC<$p]$camJm+bJcC<$M?!MS
+JP46\rrN.Es+C>rpOh@`m=XSHo54;4rtbE>o2bTpoh4CIrrD4Ts&SS]rrABYp](6ns8S9Ur;cjj
+n,Ir3rCd(hJP3UJpAfdEJ,~>
+JcD):r;_EKJcFd1gR?HKm=YE=iIfC"h/2=alW3rls%Dra[nHJqiCj1NJP1PeeP!OSq#H!GJcGKE
+rrA`GrrDHdr;_EKJcCT,r;c.VmoJmdnSR`>mt:(hnXB'Got1%>s3^l2MuNa^\c2U/li-kSq>U?a
+rVlces8;iZpYGMiou?U8l*0]So:#FRrrE*!pQ"]phg"U,j'qs&s'kHss%Dl_O%]EOJP3UJpAfdE
+J,~>
+JcD):r;_EKJcFd1Q2^d`Jc=@%rNb&Sjn%m'p]'4.s,l9r`R4 at un^2p-c,RBqq#H!GJcGKErrAbm
+rrDHdr;_EKJcCT,r;_EJc2RbAs5!_&s5!Fsho>'2kM>anq=FWaq=F4Wp[d);rrCOIs8A;`p](6n
+s8S;^rNcJ&n,M5Cqt'L[h=KIdqq_45kM=D1M8oL at qZ)3IJ,~>
+JcD/<r;cltr;_EKJcFj3j%K=N\P)r&JP1Peq+LJ^j\,URJP5#rr;_CAqb+X&q#H!GJcG3=SH/'W
+r;_EKJcCH(r;_CAdnB]\s8Vt at q1IL`m=XSHo54A6rtb?<o2bZro1S1GrrCG>rrA<Wp&C:Mn,Ir3
+JP31>qZ)3Iqu;0~>
+JcD/<r;cltr;_EKJcFj3jdQ40rBo%okC`d7l%?luh/2=akuOWRp]'>Jrr at UCj%K=NJP5l5^&Rm.
+JcC<$n,NCfTeHEGmJm+bJcC<$L&_)Ooh4aSnRCs(ms+;RmuHq,nYPojq8WB\s7cQnNW/s`\,QC-
+li-eQqu6QcrVligs8N&is82]WpYGMiou?[:nZ_JYn!a38p&G&Pmt:(RrGD4Pmqplin,N&Rqc88@
+JP3gPqZ)3Iqu;0~>
+JcD/<r;cltr;_EKJcFj3j8T"_\c2U/Jc<:\qt'L[n+5T'p]'@2s,l?ta3j:oq9dg6rHj+8qo6>L
+q#H!GJcG3=rrAbmrrDHdr;_EKJcCH(r;_EJe,KC<s8VuPq9e$<mEt+QoB?)Cs/5V_oD\RWfDbdM
+dJj1EQ2^IVQ2^7Ph>Zs9s8MKYq<7SEh<<\Nc-_6bqZ)3Iqu;0~>
+JcD/<r;cltr;_EKJcFj3j%K=N\P)r&JP1Peq+LJ^j\,URJP5#rr;_CAqb+X&q#H!GJcG3=SH/'W
+r;_EKJcCH(r;_CAdnB]\s8Vt at q1IL`m=XSHo54A6rtb?<o2bZro1S1GrrCG>rrA<Wp&C:Mn,Ir3
+JP31>qZ)3Iqu;0~>
+JcD/<r;cltr;_EKJcFj3jdQ40rBo%okC`d7l%?luh/2=akuOWRp]'>Jrr at UCj%K=NJP5l5^&Rm.
+JcC<$n,NCfTeHEGmJm+bJcC<$L&_)Ooh4aSnRCs(ms+;RmuHq,nYPojq8WB\s7cQnNW/s`\,QC-
+li-eQqu6QcrVligs8N&is82]WpYGMiou?[:nZ_JYn!a38p&G&Pmt:(RrGD4Pmqplin,N&Rqc88@
+JP3gPqZ)3Iqu;0~>
+JcD/<r;cltr;_EKJcFj3j8T"_\c2U/Jc<:\qt'L[n+5T'p]'@2s,l?ta3j:oq9dg6rHj+8qo6>L
+q#H!GJcG3=rrAbmrrDHdr;_EKJcCH(r;_EJe,KC<s8VuPq9e$<mEt+QoB?)Cs/5V_oD\RWfDbdM
+dJj1EQ2^IVQ2^7Ph>Zs9s8MKYq<7SEh<<\Nc-_6bqZ)3Iqu;0~>
+JcCf2rr at WMJcFp5QV7>YJP1PepIk8\JP1Pe_b7]CqZ)3IJcFp5SH/'Wr;_EKJcC<$r;_CAfh;>j
+s8W+Ds)%d\pOh:^m=X_Ls"*\Wmpblhq-rkek>qT_d7aKDrrA<WoDb^]rrDphn,Ir3JP31>qZ)3I
+p&BO~>
+JcCf2rr at WMJcFp5m@)4YiIh.1nUnGuh/2=ak>nEPp]#e;JP3mR^&Rs0JcC<$kPtP^TeHEGmJm+b
+JcC<$JcGZKs%Df]nRCs(ms+;RmuHq,nYPo_pW!0Zs5!_Rs8Skns0A9rrrDBaq=FRaqt'dcrU^'e
+s6fpNrS at M;pYG)Rot1+*n"oKAooAYDpOhpZo54MPmqqN&s&Sr)rtbK at n,Ir3JP31>qZ)3Ip&BO~>
+JcCf2rr at WMJcFp5Qi@!bJc<4ZkO[Bjp]&Rq_pO%TZc9]YqZ)3IJcFp5rrAbmrrDHdr;_EKJcC<$
+r;_EJg&D$?s8W,Ts60L=pX.g:mEt7Us,lj8n+6/Mq=E5;rrCIGrV`#\oDb`fs0DP$n,M5Ch=L1#
+s7>^Cq;(f/hqcK'KuWuiJcGECJ,~>
+JcCf2rr at WMJcFp5QV7>YJP1PepIk8\JP1Pe_b7]CqZ)3IJcFp5SH/'Wr;_EKJcC<$r;_CAfh;>j
+s8W+Ds)%d\pOh:^m=X_Ls"*\Wmpblhq-rkek>qT_d7aKDrrA<WoDb^]rrDphn,Ir3JP31>qZ)3I
+p&BO~>
+JcCf2rr at WMJcFp5m@)4YiIh.1nUnGuh/2=ak>nEPp]#e;JP3mR^&Rs0JcC<$kPtP^TeHEGmJm+b
+JcC<$JcGZKs%Df]nRCs(ms+;RmuHq,nYPo_pW!0Zs5!_Rs8Skns0A9rrrDBaq=FRaqt'dcrU^'e
+s6fpNrS at M;pYG)Rot1+*n"oKAooAYDpOhpZo54MPmqqN&s&Sr)rtbK at n,Ir3JP31>qZ)3Ip&BO~>
+JcCf2rr at WMJcFp5Qi@!bJc<4ZkO[Bjp]&Rq_pO%TZc9]YqZ)3IJcFp5rrAbmrrDHdr;_EKJcC<$
+r;_EJg&D$?s8W,Ts60L=pX.g:mEt7Us,lj8n+6/Mq=E5;rrCIGrV`#\oDb`fs0DP$n,M5Ch=L1#
+s7>^Cq;(f/hqcK'KuWuiJcGECJ,~>
+JcC`0r;_EKJcG'9r;cL`rrB#krr at UCJP5Z/p](%^r;_CAJP4Tf^&Rs0s8W*!JcC<$jo:kOmJm+b
+JcC<$JcG]Kr;_CAhb3t`s'l$.s)%^ZpOh:^m=XYJruq>Xr?;,Vmpb`drF54gk>qT_JP4floDbpc
+rrE'ln,Ir3JP37 at q#H!Gn,In~>
+JcC`0r;_EKJcG'9rrE'oqjRDBs$P+mgOoM+pOfesqeaGak>nEPp](%^r;_CAJP4Tf^&Rs0s8W*!
+JcC<$jo>>\TeHEGmJm+bJcC<$JcG]Kr;cXompba&ms+;RmuHq,nYPi]q8W<ZrS at MPs8N&uU&P(t
+rVlc$WW)ntli-_OrVlWas8N&is8MugrTO(5q9efRmCW>$o;1oEmuI@!oDdosl##luoiD*%rtbWD
+n,Ir3JP37 at q#H!Gn,In~>
+JcC`0r;_EKJcG'9rrE))p&=usWW)ntJc<.XkO[Bjp]('FrK6-r_pO%TZc9]YqZ-Zrrr at WMJcFj3
+rrAbmrrDHdr;_EKJcC<$rVufrJc=R+s8Duhs8W,_rS at 4qh8\j0l.uB0rTO3MrTN_An,E:Wec,RK
+Jc=L)oDbrls0D\(n,M5Ch=KIdc/$RjLW9@@qZ)3In,In~>
+JcC`0r;_EKJcG'9r;cL`rrB#krr at UCJP5Z/p](%^r;_CAJP4Tf^&Rs0s8W*!JcC<$jo:kOmJm+b
+JcC<$JcG]Kr;_CAhb3t`s'l$.s)%^ZpOh:^m=XYJruq>Xr?;,Vmpb`drF54gk>qT_JP4floDbpc
+rrE'ln,Ir3JP37 at q#H!Gn,In~>
+JcC`0r;_EKJcG'9rrE'oqjRDBs$P+mgOoM+pOfesqeaGak>nEPp](%^r;_CAJP4Tf^&Rs0s8W*!
+JcC<$jo>>\TeHEGmJm+bJcC<$JcG]Kr;cXompba&ms+;RmuHq,nYPi]q8W<ZrS at MPs8N&uU&P(t
+rVlc$WW)ntli-_OrVlWas8N&is8MugrTO(5q9efRmCW>$o;1oEmuI@!oDdosl##luoiD*%rtbWD
+n,Ir3JP37 at q#H!Gn,In~>
+JcC`0r;_EKJcG'9rrE))p&=usWW)ntJc<.XkO[Bjp]('FrK6-r_pO%TZc9]YqZ-Zrrr at WMJcFj3
+rrAbmrrDHdr;_EKJcC<$rVufrJc=R+s8Duhs8W,_rS at 4qh8\j0l.uB0rTO3MrTN_An,E:Wec,RK
+Jc=L)oDbrls0D\(n,M5Ch=KIdc/$RjLW9@@qZ)3In,In~>
+JcCT,r;_EKJcG-;oh5;bVb@$iJP4*Xr;a#op]#e;JP4Hb^&Rs0JcC<$g]*fEJcC<$JcFd1qZ)1?
+j\,Ufs'l$.s*4Q\rHS-jh2^fRl$2f:mpb`drF54gk>qT_btJ'@O%]6Ir;a/sn,Ir3eP#oBJP4ln
+q#H!Gl2Q8~>
+JcCT,r;_EKJcG-;ooB&>duMt2rrE(O]m0!_dpgj.qb-kfY=nWiJP1Pedn at CSqZ)3IJcFL)rrA`G
+rr at WMJcC<$j8\uVnRCs(ms+;RmuHq,nYPi]pW!$Vs5!_=s8Duss8RZL^&J$3li-YMrVl]cs8Mic
+s6fdJqq_"oou?[:o<@h_opYK4o7Qf;r;c),mqqN&moJoWJP4Ndrr at UChb3bFJcG!7J,~>
+JcCT,r;_EKJcG-;p&=usVuH\rJc<djrNbtmkO[Tpqq_#HiSDE!J]=t7^&Rs0JcC<$g].9RU&Y,m
+JcC<$JcFd1qZ)3Hjo5;Ys7?9js5!_=rS@:sh8\d.l.tspn+6#IrU\S=rrC=Cs8A#Xp](0lZi9Fn
+h>Z7%h<<,>p!Neog!PSpq#H!Gl2Q8~>
+JcCT,r;_EKJcG-;oh5;bVb@$iJP4*Xr;a#op]#e;JP4Hb^&Rs0JcC<$g]*fEJcC<$JcFd1qZ)1?
+j\,Ufs'l$.s*4Q\rHS-jh2^fRl$2f:mpb`drF54gk>qT_btJ'@O%]6Ir;a/sn,Ir3eP#oBJP4ln
+q#H!Gl2Q8~>
+JcCT,r;_EKJcG-;ooB&>duMt2rrE(O]m0!_dpgj.qb-kfY=nWiJP1Pedn at CSqZ)3IJcFL)rrA`G
+rr at WMJcC<$j8\uVnRCs(ms+;RmuHq,nYPi]pW!$Vs5!_=s8Duss8RZL^&J$3li-YMrVl]cs8Mic
+s6fdJqq_"oou?[:o<@h_opYK4o7Qf;r;c),mqqN&moJoWJP4Ndrr at UChb3bFJcG!7J,~>
+JcCT,r;_EKJcG-;p&=usVuH\rJc<djrNbtmkO[Tpqq_#HiSDE!J]=t7^&Rs0JcC<$g].9RU&Y,m
+JcC<$JcFd1qZ)3Hjo5;Ys7?9js5!_=rS@:sh8\d.l.tspn+6#IrU\S=rrC=Cs8A#Xp](0lZi9Fn
+h>Z7%h<<,>p!Neog!PSpq#H!Gl2Q8~>
+JcCT,q#H!GJcG3=RnNb]JP1Peo1T#^q>Z"=]hA;(UJ&B%pAfdEJcF@%SH+6 at JcC<$h>dKTJP50!
+s&T//s8W+9rHS'hh2^lTms+j`rHRjLnRClds'k at gk>qT_JP4NdoDcd&r;cdhn,Ir3btJ':JP56#
+q#H!GiW"E~>
+JcCT,q#H!GJcG3=c&U2(s*4PDa`u][dphK at PtV&Uq>Z"=]hA;(UJ&B%pAfdEJcF@%rrA`Grr at WM
+JcC<$h>dKTq-rf0ms+;RmuHq,nYPi]ou?gTrS at M;qu6WqVuH_%RK!3ds7>RUp[eFaq=FXcq=FRK
+s5!_=q;(emou?[:q69=ao:#92o7QZ7o6B_ at mpc#lr<rR)n,Ir3btJ':JP56#q#H!GiW"E~>
+JcCT,q#H!GJcG3=S,WEfJc<(Vjn%Nrq;)(5rrDlpmG5P)PK*QJUW1(KpAfdEJcF@%rrAbmrr at WM
+JcC<$h>dKTJc=d1s7?9js60F;pX.g:mEtCYs,m99n`]N7mJd.We,K at IJc=4!oDcf/rNcD$n,M5C
+h=KOfh;/+Yn_NT[s+]L[M8oRBqZ)3IiW"E~>
+JcCT,q#H!GJcG3=RnNb]JP1Peo1T#^q>Z"=]hA;(UJ&B%pAfdEJcF@%SH+6 at JcC<$h>dKTJP50!
+s&T//s8W+9rHS'hh2^lTms+j`rHRjLnRClds'k at gk>qT_JP4NdoDcd&r;cdhn,Ir3btJ':JP56#
+q#H!GiW"E~>
+JcCT,q#H!GJcG3=c&U2(s*4PDa`u][dphK at PtV&Uq>Z"=]hA;(UJ&B%pAfdEJcF@%rrA`Grr at WM
+JcC<$h>dKTq-rf0ms+;RmuHq,nYPi]ou?gTrS at M;qu6WqVuH_%RK!3ds7>RUp[eFaq=FXcq=FRK
+s5!_=q;(emou?[:q69=ao:#92o7QZ7o6B_ at mpc#lr<rR)n,Ir3btJ':JP56#q#H!GiW"E~>
+JcCT,q#H!GJcG3=S,WEfJc<(Vjn%Nrq;)(5rrDlpmG5P)PK*QJUW1(KpAfdEJcF@%rrAbmrr at WM
+JcC<$h>dKTJc=d1s7?9js60F;pX.g:mEtCYs,m99n`]N7mJd.We,K at IJc=4!oDcf/rNcD$n,M5C
+h=KOfh;/+Yn_NT[s+]L[M8oRBqZ)3IiW"E~>
+JcC<$r;_EKJcGQGr;cltRnNb]JP1Pemn<ETJP1Pej%I/eqZ)3IJcF!pSH+6 at JcC<$g].3PJP5B'
+s&T//s8W%7rHS'hh2^lTnTb'bqfq^Ls'l!Do4%)fs'k at gmoK6Wrr@UCd7a04`Co\"JP1PeYtOro
+JcFL)J,~>
+JcC<$r;_EKJcGQGr;clteW.t.q0;o>ds0D[dphK at O\>HKJP1Pej%I/eqZ)3IJcF!prrA`Grr at WM
+JcC<$g].3PnSR`>mt:.jn!`dCnZ_o&qo8HZrS at G9qu6WqVuH_%li-pi\,Q3prrDfboD[_?rTO.7
+s3^`"qpGA^mCW>$nYP]CmuHpjp&Fo6mqqN&moJoWJP1PeYtOroJcFL)J,~>
+JcC<$r;_EKJcGQGr;cltS,WEfJc<Xfh=KCbp"fBBq;&[1J]@)srO_O<pUg1>rO_[@^]402JcC<$
+c2[eDU&Y,mJcC<$JcFL)r;_EJli-qUs8W&]rS at 4qh8\j0n_O5-qq^l-s7?8goCMAKs7=_=rr at WL
+dJih=`W#?+h>Zm7qrm_EhrrnPp!NZmbL)*bqZ)3Ig])d~>
+JcC<$r;_EKJcGQGr;cltRnNb]JP1Pemn<ETJP1Pej%I/eqZ)3IJcF!pSH+6 at JcC<$g].3PJP5B'
+s&T//s8W%7rHS'hh2^lTnTb'bqfq^Ls'l!Do4%)fs'k at gmoK6Wrr@UCd7a04`Co\"JP1PeYtOro
+JcFL)J,~>
+JcC<$r;_EKJcGQGr;clteW.t.q0;o>ds0D[dphK at O\>HKJP1Pej%I/eqZ)3IJcF!prrA`Grr at WM
+JcC<$g].3PnSR`>mt:.jn!`dCnZ_o&qo8HZrS at G9qu6WqVuH_%li-pi\,Q3prrDfboD[_?rTO.7
+s3^`"qpGA^mCW>$nYP]CmuHpjp&Fo6mqqN&moJoWJP1PeYtOroJcFL)J,~>
+JcC<$r;_EKJcGQGr;cltS,WEfJc<Xfh=KCbp"fBBq;&[1J]@)srO_O<pUg1>rO_[@^]402JcC<$
+c2[eDU&Y,mJcC<$JcFL)r;_EJli-qUs8W&]rS at 4qh8\j0n_O5-qq^l-s7?8goCMAKs7=_=rr at WL
+dJih=`W#?+h>Zm7qrm_EhrrnPp!NZmbL)*bqZ)3Ig])d~>
+JcC<$rVufrJcC<$p&FbZrrB#krr at UCJP5H)p&BS9JP5<%^]402JcC<$a8_\1JcC<$_>jN8RK*3c
+JP5T-s&T//rVun7qfqphgQ(ZRl$2f:rF5dBoj[;hlV$hMoh5;bJP4<^oDd-0n,Ir3JP37 at qZ)3I
+ec1.~>
+JcC<$rVufrJcC<$p&FcHs$Q%2c\(h6rrCl"a_fL9k>md>p&BS9JP5<%^]402JcC<$a8c/>Tca:7
+JcC<$_>jN8RK*3cqebeHmt:.jn!`^Ao<@o"pX/lorTO.XrVqlVs0B?;p%/1`oCM_Up%/4InaleE
+s7?-OrS@:spVum<o<@nao:#30nUpX^oDeE!mpb`dn,Ir3JP37 at qZ)3Iec1.~>
+JcC<$rVufrJcC<$p&Fdcs0AX'rr at WL_uAK`gZ\Cfp&DAGJ]@B&ot0t<n%8V>o=Ot@^]402JcC<$
+a8c/>U&Y,mJcC<$_>jN8RK*3cJc>3=s7?3hs60 at 9q9ds:mEt1SoB?/Es/5P]^&J$3Jc=!poDd/9
+n,MkUp[e4[n+6/7s7>(1h;-9%pW!$VLW92kJcF:#J,~>
+JcC<$rVufrJcC<$p&FbZrrB#krr at UCJP5H)p&BS9JP5<%^]402JcC<$a8_\1JcC<$_>jN8RK*3c
+JP5T-s&T//rVun7qfqphgQ(ZRl$2f:rF5dBoj[;hlV$hMoh5;bJP4<^oDd-0n,Ir3JP37 at qZ)3I
+ec1.~>
+JcC<$rVufrJcC<$p&FcHs$Q%2c\(h6rrCl"a_fL9k>md>p&BS9JP5<%^]402JcC<$a8c/>Tca:7
+JcC<$_>jN8RK*3cqebeHmt:.jn!`^Ao<@o"pX/lorTO.XrVqlVs0B?;p%/1`oCM_Up%/4InaleE
+s7?-OrS@:spVum<o<@nao:#30nUpX^oDeE!mpb`dn,Ir3JP37 at qZ)3Iec1.~>
+JcC<$rVufrJcC<$p&Fdcs0AX'rr at WL_uAK`gZ\Cfp&DAGJ]@B&ot0t<n%8V>o=Ot@^]402JcC<$
+a8c/>U&Y,mJcC<$_>jN8RK*3cJc>3=s7?3hs60 at 9q9ds:mEt1SoB?/Es/5P]^&J$3Jc=!poDd/9
+n,MkUp[e4[n+6/7s7>(1h;-9%pW!$VLW92kJcF:#J,~>
+JcG'9rrA2]r;_EKOoP@[mJliPrrB)mrr at UC\P)l$cV+3:mn<?RJP1Peo1Qq"q#LHprr at WMJcE^h
+SH+6 at JcEXfr;cNjnGooqqZ)1?q+L`grF5g,rGDLXpOh:^m=YF`r at I>\o54#,lW37Cq,[#Yrr at UC
+b=hO.r;beLr;cjjn,Ir3X\8ZoM+dXEM?!5KoDeUdl2Q8~>
+JcG'9rrA2]r;_EKOoP@[mJlj>s$QC<c%GD.rrD/*^MVM1j]:83r;b/:r;c:Zp&BS9JP5T-_>j<2
+s8W*!JcC<$`W,r<Tca:7JcC<$_uKZ8p&FO^ZiBn&o6BeXmuHk*n"oW[o=ObEqq_/5q>UEo[Jp-1
+RJuaJrrDNZqu63Ys60.Is60LSpZVM1q9erVot1%(n"oWErJp?!ms+O*rrE'Bs)%"0qc<Y's&SUg
+JP3+<rr at mKq#H9Oo`4U`q#K[ZJ,~>
+JcG'9rrA2]r;_EKOoP@[mJlkYs0A^)rr at WL_>a9%rMSoOkNMl7q<7S/p&DAGJ]@Z.`Oitdq#LHp
+rr at WMJcE^hrrAbmrr at WMJcEXfr;cNjnGooqqZ)3Hp\t-_s8W&]rS at 4qh8\j0s5!X9mG7BtnajBl
+rr at WLbPq27rrE))iVre]s8MKen,D59h<=gnoB>#dbL,k"s*KUBs*OVCM?!5KoDeUdl2Q8~>
+JcG'9rrA2]r;_EKOoP@[mJliPrrB)mrr at UC\P)l$cV+3:mn<?RJP1Peo1Qq"q#LHprr at WMJcE^h
+SH+6 at JcEXfr;cNjnGooqqZ)1?q+L`grF5g,rGDLXpOh:^m=YF`r at I>\o54#,lW37Cq,[#Yrr at UC
+b=hO.r;beLr;cjjn,Ir3X\8ZoM+dXEM?!5KoDeUdl2Q8~>
+JcG'9rrA2]r;_EKOoP@[mJlj>s$QC<c%GD.rrD/*^MVM1j]:83r;b/:r;c:Zp&BS9JP5T-_>j<2
+s8W*!JcC<$`W,r<Tca:7JcC<$_uKZ8p&FO^ZiBn&o6BeXmuHk*n"oW[o=ObEqq_/5q>UEo[Jp-1
+RJuaJrrDNZqu63Ys60.Is60LSpZVM1q9erVot1%(n"oWErJp?!ms+O*rrE'Bs)%"0qc<Y's&SUg
+JP3+<rr at mKq#H9Oo`4U`q#K[ZJ,~>
+JcG'9rrA2]r;_EKOoP@[mJlkYs0A^)rr at WL_>a9%rMSoOkNMl7q<7S/p&DAGJ]@Z.`Oitdq#LHp
+rr at WMJcE^hrrAbmrr at WMJcEXfr;cNjnGooqqZ)3Hp\t-_s8W&]rS at 4qh8\j0s5!X9mG7BtnajBl
+rr at WLbPq27rrE))iVre]s8MKen,D59h<=gnoB>#dbL,k"s*KUBs*OVCM?!5KoDeUdl2Q8~>
+JcG-;r;cNjnGo]kq#H!GJcGWIT1f1aJP1PelV$pNJP3CDrrC/6_>jB4JcG]Ko`4U`q#H!GhuB5I
+JcC<$`W,f8p&FO^XoJ>"JP6#9qc<[qrGDLXpOh:^m=XYJnSRf*m8iCCqc</Yrr at UCa%Q%(j%Jk@
+JP2h4rrA*QqZ)?MnGr=`o`4=XJ,~>
+JcG-;r;cNjnGo]kq#H!GJcGWImuGSDkBR",m<H*WpL;TPo1T*aO\>BIJP3CDrrC/6_>jB4JcG]K
+o`4U`q#H!GhuE]VTca:7JcC<$`W,f8p&FO^XoJ>"s*4!bmuHk*n"oQYo=ObEq;)#5rU]pcrVqHJ
+bPpu%rrDNZrTO4Zp%/4Iq=FXMs7>pIs5!_=qq_(qou?g>rNPggn!a-6on2^XpMKO%k at 4Bjn,Ir3
+V+^ggO%]?ML&^ZCp]'mdli2J~>
+JcG-;r;cNjnGo]kq#H!GJcGWITDnijJc<F`h=L+!j5'D.ZdFKHs1A;Lah,ChqZ)3IrVuNjoDeUd
+JcFX-rrAbmrr at WMJcE^hqZ-<hnGo]kr;_EJq>U?mrTO49pX.g:mEt1Sn`]N7]Dhg1Jc<^hoDdkM
+n,MkUht,[foA0B/h;-9%l,NaMO2h%sL&^ZCp]'mdli2J~>
+JcG-;r;cNjnGo]kq#H!GJcGWIT1f1aJP1PelV$pNJP3CDrrC/6_>jB4JcG]Ko`4U`q#H!GhuB5I
+JcC<$`W,f8p&FO^XoJ>"JP6#9qc<[qrGDLXpOh:^m=XYJnSRf*m8iCCqc</Yrr at UCa%Q%(j%Jk@
+JP2h4rrA*QqZ)?MnGr=`o`4=XJ,~>
+JcG-;r;cNjnGo]kq#H!GJcGWImuGSDkBR",m<H*WpL;TPo1T*aO\>BIJP3CDrrC/6_>jB4JcG]K
+o`4U`q#H!GhuE]VTca:7JcC<$`W,f8p&FO^XoJ>"s*4!bmuHk*n"oQYo=ObEq;)#5rU]pcrVqHJ
+bPpu%rrDNZrTO4Zp%/4Iq=FXMs7>pIs5!_=qq_(qou?g>rNPggn!a-6on2^XpMKO%k at 4Bjn,Ir3
+V+^ggO%]?ML&^ZCp]'mdli2J~>
+JcG-;r;cNjnGo]kq#H!GJcGWITDnijJc<F`h=L+!j5'D.ZdFKHs1A;Lah,ChqZ)3IrVuNjoDeUd
+JcFX-rrAbmrr at WMJcE^hqZ-<hnGo]kr;_EJq>U?mrTO49pX.g:mEt1Sn`]N7]Dhg1Jc<^hoDdkM
+n,MkUht,[foA0B/h;-9%l,NaMO2h%sL&^ZCp]'mdli2J~>
+JcG3=qZ-<hnGoEcr;_EKVuQbsg]*m=rr at UCP=tiSgIq5>JP3CDrrCG>_>j60JcG]KnGr=`o`0RC
+iW#GKJcC<$bQ%58p&FsjScAWgKhM;DrVuh5rHS'hgQ(ZRl$2f:nRCfbk=bbSm7[HZJP3mRoDeJV
+rrDphn,Ir3JP3CDrrE'lqZ)3IqZ-HlqZ-Nnr;cZnr;c6bJ,~>
+JcG3=qZ-<hnGoEcr;_EKVuQbsg].)0ab/JqrrDY8_/8 at EdoNG@r;bSFp&BS9[7gN"d7_=UpAfdE
+rVuBfp]'mdJcF^/rrA`7rr at WMJcEpno`4[br;`Dgr;cSEmuHk*n"oQYo=O\Cq;(r3rU]pcrVqHJ
+bPpo#rrDNZqrn(Zp%/.Gq=FXMs7?'Ms5!_=rS at M$qq_(qq8WHHos"%ao:#?4o7QXZo54+!oj[q:
+qdT$oJP1Pe[7gN"s%E4hJcGTIq>^<lqu?Tpq>^BnmJh\~>
+JcG3=qZ-<hnGoEcr;_EKVuQbsg]*oFrr at WLci2hnkNMl7q<6kpp&DSMLW9)#s)6;s_>j60JcG]K
+nGr=`o`0RCiW&oXU&Y,mJcC<$bQ%58p&FsjScAWgJc>]KrVui[rS at 4qgW&X.l.tspnaj<jrr at WL
+_uB9-p&=usqu6'anc%A9h<<&<c-_*^pW!5[s2Op9JcGTIq>^<lqu?Tpq>^BnmJh\~>
+JcG3=qZ-<hnGoEcr;_EKVuQbsg]*m=rr at UCP=tiSgIq5>JP3CDrrCG>_>j60JcG]KnGr=`o`0RC
+iW#GKJcC<$bQ%58p&FsjScAWgKhM;DrVuh5rHS'hgQ(ZRl$2f:nRCfbk=bbSm7[HZJP3mRoDeJV
+rrDphn,Ir3JP3CDrrE'lqZ)3IqZ-HlqZ-Nnr;cZnr;c6bJ,~>
+JcG3=qZ-<hnGoEcr;_EKVuQbsg].)0ab/JqrrDY8_/8 at EdoNG@r;bSFp&BS9[7gN"d7_=UpAfdE
+rVuBfp]'mdJcF^/rrA`7rr at WMJcEpno`4[br;`Dgr;cSEmuHk*n"oQYo=O\Cq;(r3rU]pcrVqHJ
+bPpo#rrDNZqrn(Zp%/.Gq=FXMs7?'Ms5!_=rS at M$qq_(qq8WHHos"%ao:#?4o7QXZo54+!oj[q:
+qdT$oJP1Pe[7gN"s%E4hJcGTIq>^<lqu?Tpq>^BnmJh\~>
+JcG3=qZ-<hnGoEcr;_EKVuQbsg]*oFrr at WLci2hnkNMl7q<6kpp&DSMLW9)#s)6;s_>j60JcG]K
+nGr=`o`0RCiW&oXU&Y,mJcC<$bQ%58p&FsjScAWgJc>]KrVui[rS at 4qgW&X.l.tspnaj<jrr at WL
+_uB9-p&=usqu6'anc%A9h<<&<c-_*^pW!5[s2Op9JcGTIq>^<lqu?Tpq>^BnmJh\~>
+JcGECo`4[br;`,_r;_EKXoJD$fDk/0rrBT&rr at UCJP50!p&BS9MbCtfq#H!Gp&Fmhq>^<lqu?Tp
+q>^BnJcFd1SH+6 at JcEpno`4[br;`8crr at mKs&T.mrDrmsrGDLXpOh:^q1JW)q1IjTo54#,rDrk)
+oiB=1rr at UC^J"8"q+L_fs%Dh\JP1PeYtOroJcGWIr;cNjr;c`pr;cZnr;c6bJ,~>
+JcGECo`4[br;`,_r;_EKXoJD$fDk/hs#8nhfm*Msqfp(sfj`E2JP6#9p&BS9MbCtfq#H!Gp&Fmh
+q>^<lqu?Tpq>^BnJcFd1rrA`7rr at WMJcEpno`4[br;`8crrE(OmuHk*n"oQYn[nJAq;(l1rU]ja
+rVse7rNa-9rNb,Ul1=oTn+6;;p%/.Gqt'FCs5!_=rS@:sq8W*>os"%aopY]:mt:.To541#q-s@>
+s'kHsJP1PeYtOroJcGWIr;cNjr;c`pr;cZnr;c6bJ,~>
+JcGECo`4[br;`,_r;_EKXoJD$fDk19s0B37rr at WLci2blgZ[\Rp&DkUS]:W?n&E>Y_uKN4JcGEC
+qZ-HlqZ-Nnr;cZnr;_EKj8],ZU&Y,mJcC<$bQ%58p&FsjRK*9eJc>WJrTO49pX.g:q9f.qq9eB]
+oB>`9rVlc$_>aH7Jc<F`p&Fjes0D\(n,MSMkO[NnbMCFjJ]@<$qZ)3Iqu?Tpp&Fsjqu?Tpq>^Bn
+mJh\~>
+JcGECo`4[br;`,_r;_EKXoJD$fDk/0rrBT&rr at UCJP50!p&BS9MbCtfq#H!Gp&Fmhq>^<lqu?Tp
+q>^BnJcFd1SH+6 at JcEpno`4[br;`8crr at mKs&T.mrDrmsrGDLXpOh:^q1JW)q1IjTo54#,rDrk)
+oiB=1rr at UC^J"8"q+L_fs%Dh\JP1PeYtOroJcGWIr;cNjr;c`pr;cZnr;c6bJ,~>
+JcGECo`4[br;`,_r;_EKXoJD$fDk/hs#8nhfm*Msqfp(sfj`E2JP6#9p&BS9MbCtfq#H!Gp&Fmh
+q>^<lqu?Tpq>^BnJcFd1rrA`7rr at WMJcEpno`4[br;`8crrE(OmuHk*n"oQYn[nJAq;(l1rU]ja
+rVse7rNa-9rNb,Ul1=oTn+6;;p%/.Gqt'FCs5!_=rS@:sq8W*>os"%aopY]:mt:.To541#q-s@>
+s'kHsJP1PeYtOroJcGWIr;cNjr;c`pr;cZnr;c6bJ,~>
+JcGECo`4[br;`,_r;_EKXoJD$fDk19s0B37rr at WLci2blgZ[\Rp&DkUS]:W?n&E>Y_uKN4JcGEC
+qZ-HlqZ-Nnr;cZnr;_EKj8],ZU&Y,mJcC<$bQ%58p&FsjRK*9eJc>WJrTO49pX.g:q9f.qq9eB]
+oB>`9rVlc$_>aH7Jc<F`p&Fjes0D\(n,MSMkO[NnbMCFjJ]@<$qZ)3Iqu?Tpp&Fsjqu?Tpq>^Bn
+mJh\~>
+JcGECo`4[br;_u[r;_EKL&^C1rrBZ(rr at UCWD!6kqb-qha%Q+*JP22"_uKN4JcG3=r;cNjr;c`p
+r;cZnr;_EKj8YYMJcC<$_uKZ8p&FsjQiI!aMbF"LrVuh5rHS!fh2^lTl$2f:mpbZbbtJ':JP3[L
+oDegjnc+/5JP37 at q#H!Gp&Fsjp&FsjrVufrp&Fsjn,In~>
+JcGECo`4[br;_u[r;_EKL&^Cis#91pds1lmbAGF3doO at ZrrDphrrC)4p&BS9P=rgnq#H!Gn,N=d
+p&Fsjqu?Tpq>^BnJcFd1rrA`7rr at WMJcEXfr;cNjr;`2ar;cSPn!`^AnZ_Pqo?m<gqrmqKq>U?m
+Jc=!pkO\]RmIU)9p[e:Gqt'XIpYGksrS@@upW!$@nZ_nen!a9:nUp:Tmqr)6oDeh+nc+/5JP37@
+q#H!Gp&Fsjp&FsjrVufrp&Fsjn,In~>
+JcGECo`4[br;_u[r;_EKL&^E:s0B99rr at WLc2QPjs.&uMs.&37j5'D.bL)g!ot0t<`Oj%fq#H!G
+n,N=dp&Fsjqu?Tpq>^BnJcFd1rrAbmrr at WMJcEXfr;cNjr;`2ar;_WPrVui[rS at .oh8\j0l.tsp
+n+4*hrr at WL^&IX's0D1ph>Zm7h<<&<c-_*^ou?e-JcGECr;cNjr;cfrr;cNjr;c<dJ,~>
+JcGECo`4[br;_u[r;_EKL&^C1rrBZ(rr at UCWD!6kqb-qha%Q+*JP22"_uKN4JcG3=r;cNjr;c`p
+r;cZnr;_EKj8YYMJcC<$_uKZ8p&FsjQiI!aMbF"LrVuh5rHS!fh2^lTl$2f:mpbZbbtJ':JP3[L
+oDegjnc+/5JP37 at q#H!Gp&Fsjp&FsjrVufrp&Fsjn,In~>
+JcGECo`4[br;_u[r;_EKL&^Cis#91pds1lmbAGF3doO at ZrrDphrrC)4p&BS9P=rgnq#H!Gn,N=d
+p&Fsjqu?Tpq>^BnJcFd1rrA`7rr at WMJcEXfr;cNjr;`2ar;cSPn!`^AnZ_Pqo?m<gqrmqKq>U?m
+Jc=!pkO\]RmIU)9p[e:Gqt'XIpYGksrS@@upW!$@nZ_nen!a9:nUp:Tmqr)6oDeh+nc+/5JP37@
+q#H!Gp&Fsjp&FsjrVufrp&Fsjn,In~>
+JcGECo`4[br;_u[r;_EKL&^E:s0B99rr at WLc2QPjs.&uMs.&37j5'D.bL)g!ot0t<`Oj%fq#H!G
+n,N=dp&Fsjqu?Tpq>^BnJcFd1rrAbmrr at WMJcEXfr;cNjr;`2ar;_WPrVui[rS at .oh8\j0l.tsp
+n+4*hrr at WL^&IX's0D1ph>Zm7h<<&<c-_*^ou?e-JcGECr;cNjr;cfrr;cNjr;c<dJ,~>
+JcG-;r;cNjr;_u[rrE*!r;_EK`W,l:a8_o-rr at UCVb@$is%E at l_b9\&JP3+<rrDR^_uKT6JcFp5
+r;cNjr;cfrr;cNjr;_EKjo:kOJcC<$_uKZ8p&G$ls8VfnScAWgO\>XRrVuh5qfqjfiK!q*rJp8t
+l$2f:nRCldb=hj8JP3UJr;cTlrrDlpJP1PerCd(h]1_r"JcFR+r;cfrr;cNjr;c<dJ,~>
+JcG-;r;cNjr;_u[rrE*!r;_EK`W,l:a8abDd<PV,rrCMb_d_(q_+Xe.s%E at l_b9\&JP3+<rrDR^
+_uKT6JcFp5r;cNjr;cfrr;cNjr;_EKjo>>\Tca:7JcC<$_uKZ8p&G$ls8VfnScAWgn!a-Xoqh]#
+o<@bso?m6eq<7_Iq>U?mc2RaKKDt'*rrDHXp#u5Cqrn(9rU^!Os5!Y;pYG_oq8W0 at n$)\co:#?4
+o7Qd^mqqf.rtbV7p](6nq>Z"=JP5r7r;aH&q#H!Gh>dERrVufrp&Fsjn,In~>
+JcG-;r;cNjr;_u[rrE*!r;_EK`W,l:a8_q6rr at WLbPp>hs.',Qs.&99h;.c(e^9f)mCWD<f=V'$
+n[l^=qZ)3IkPtJ\p&FsjrVufrp&FsjJcFj3rrAbmrr at WMJcEXfr;cNjrrE*!pAgcar;_iVrVui[
+qq_"oiPtnErPn6Pl.tspnaj6hrr at WL]Dhi9rrDfnrrDlph>Zm7h<<,>bL+/GrHl/rs*OVCJcFR+
+r;cfrr;cNjr;c<dJ,~>
+JcG-;r;cNjr;_u[rrE*!r;_EK`W,l:a8_o-rr at UCVb@$is%E at l_b9\&JP3+<rrDR^_uKT6JcFp5
+r;cNjr;cfrr;cNjr;_EKjo:kOJcC<$_uKZ8p&G$ls8VfnScAWgO\>XRrVuh5qfqjfiK!q*rJp8t
+l$2f:nRCldb=hj8JP3UJr;cTlrrDlpJP1PerCd(h]1_r"JcFR+r;cfrr;cNjr;c<dJ,~>
+JcG-;r;cNjr;_u[rrE*!r;_EK`W,l:a8abDd<PV,rrCMb_d_(q_+Xe.s%E at l_b9\&JP3+<rrDR^
+_uKT6JcFp5r;cNjr;cfrr;cNjr;_EKjo>>\Tca:7JcC<$_uKZ8p&G$ls8VfnScAWgn!a-Xoqh]#
+o<@bso?m6eq<7_Iq>U?mc2RaKKDt'*rrDHXp#u5Cqrn(9rU^!Os5!Y;pYG_oq8W0 at n$)\co:#?4
+o7Qd^mqqf.rtbV7p](6nq>Z"=JP5r7r;aH&q#H!Gh>dERrVufrp&Fsjn,In~>
+JcG-;r;cNjr;_u[rrE*!r;_EK`W,l:a8_q6rr at WLbPp>hs.',Qs.&99h;.c(e^9f)mCWD<f=V'$
+n[l^=qZ)3IkPtJ\p&FsjrVufrp&FsjJcFj3rrAbmrr at WMJcEXfr;cNjrrE*!pAgcar;_iVrVui[
+qq_"oiPtnErPn6Pl.tspnaj6hrr at WL]Dhi9rrDfnrrDlph>Zm7h<<,>bL+/GrHl/rs*OVCJcFR+
+r;cfrr;cNjr;c<dJ,~>
+JcG-;r;cNjrrE*!pAgW]rrE#tr;_EKMuTPFrr at UCJP4rpp&BS9X\8Zoq+JX*qZ)3IdJs.FrVufr
+p&FsjJcFj3SH+6 at JcEXfr;cTlmf8jWr;`0Wqc<[qrGDLXon2:bs$Q[Dm=Y.Xs)%FRo54#,m8hD'
+rr at UC]1_PkJP1PeZV1/qJcFF'r;c`pr;cNjr;c<dJ,~>
+JcG-;r;cNjrrE*!pAgW]rrE#tr;_EKMuV[ed<P>$rrCkl[pnf,JP4rpp&BS9X\8Zoq+JX*qZ)3I
+dJs.FrVufrp&FsjJcFj3rrA`7rr at WMJcEXfr;cTlmf8jWr;cY^nZ_VsrNQ%9qn)CGp"fH-q=F@[
+rVt4Cs0@:Vjn&KPmITr5s5!SDqrn"7qrme1s3^f$qpG5ZpUg+&oqhVUm>gXfnSR`(mJh`1JP3=B
+qZ)3Ig&M!Nqu?Tpp&Fsjn,In~>
+JcG-;r;cNjrrE*!pAgW]rrE#tr;_EKMuTROrr at WLg]$%#h<<2 at p&EpsQc?SJs)7_F_uKT6JcF-t
+r;cfrr;cNjr;_EKjo>>\U&Y,mJcC<$_uKZ8p]'[^S,`EeOoG=ZrTO49p!Mg>s*OX_mEt[as60.3
+oB>`9\,QC-Jc<:\mJl)Cn+5B!c/$RjJ]@B&qZ)3Ig&M!Nqu?Tpp&Fsjn,In~>
+JcG-;r;cNjrrE*!pAgW]rrE#tr;_EKMuTPFrr at UCJP4rpp&BS9X\8Zoq+JX*qZ)3IdJs.FrVufr
+p&FsjJcFj3SH+6 at JcEXfr;cTlmf8jWr;`0Wqc<[qrGDLXon2:bs$Q[Dm=Y.Xs)%FRo54#,m8hD'
+rr at UC]1_PkJP1PeZV1/qJcFF'r;c`pr;cNjr;c<dJ,~>
+JcG-;r;cNjrrE*!pAgW]rrE#tr;_EKMuV[ed<P>$rrCkl[pnf,JP4rpp&BS9X\8Zoq+JX*qZ)3I
+dJs.FrVufrp&FsjJcFj3rrA`7rr at WMJcEXfr;cTlmf8jWr;cY^nZ_VsrNQ%9qn)CGp"fH-q=F@[
+rVt4Cs0@:Vjn&KPmITr5s5!SDqrn"7qrme1s3^f$qpG5ZpUg+&oqhVUm>gXfnSR`(mJh`1JP3=B
+qZ)3Ig&M!Nqu?Tpp&Fsjn,In~>
+JcG-;r;cNjrrE*!pAgW]rrE#tr;_EKMuTROrr at WLg]$%#h<<2 at p&EpsQc?SJs)7_F_uKT6JcF-t
+r;cfrr;cNjr;_EKjo>>\U&Y,mJcC<$_uKZ8p]'[^S,`EeOoG=ZrTO49p!Mg>s*OX_mEt[as60.3
+oB>`9\,QC-Jc<:\mJl)Cn+5B!c/$RjJ]@B&qZ)3Ig&M!Nqu?Tpp&Fsjn,In~>
+JcG-;r;cTlmf8LMr;_EKg].9R[K#,WrrC/6rr at UCZV15sYtOciJP3%:`W,T2JcF-tr;c`pr;cNj
+r;_EKjo:kOJcC<$_uKZ8p](0lp](*jRK*3cSP/i\rVuh5qfqR^j,WMZom$LRpNZ:HnRCldrCd.j
+cV+9<JP4*XrrDphj8X['JP3[LqZ)3IfDkXHqu?Tpp&Fsjn,In~>
+JcG-;r;cTlmf8LMr;_EKg].9R[K#KDpNZ]hgN`1(rrD.t]40`"[7gGuYtOciJP3%:`W,T2JcF-t
+r;c`pr;cNjr;_EKjo>>\Tb%/'JcC<$_uKZ8p](0lp](*jRK*3co<@\qn&FtHoA00)qt'L[rVqHJ
+jo5:cmJc/;rrDBVoB?51rU]pMqq_57p"fMms2P#bpW!0Dn$)\cqjR,:nUpR\o54G8rtbK at j8X['
+JP3[LqZ)3IfDkXHqu?Tpp&Fsjn,In~>
+JcG-;r;cTlmf8LMr;_EKg].9R[K#.`s0BcGrr at WLg]#t!s60EOj65%LqpG*:iR+49YIhdRo`0RC
+dJs.Fqu?Tpp&FsjJcFj3rrAbmrr at WMJcEXfr;cTlr;cTlqZ*&ar;`2`rVui[qq^_gj2UK6p"fZ3
+pYGH)nal#Es0BuMrr at WLao;=Gqu5XUl2L/Ch<<bPpX/fmbL(m\ou?k/JcF@%q#L<lr;cNjr;c<d
+J,~>
+JcG-;r;cTlmf8LMr;_EKg].9R[K#,WrrC/6rr at UCZV15sYtOciJP3%:`W,T2JcF-tr;c`pr;cNj
+r;_EKjo:kOJcC<$_uKZ8p](0lp](*jRK*3cSP/i\rVuh5qfqR^j,WMZom$LRpNZ:HnRCldrCd.j
+cV+9<JP4*XrrDphj8X['JP3[LqZ)3IfDkXHqu?Tpp&Fsjn,In~>
+JcG-;r;cTlmf8LMr;_EKg].9R[K#KDpNZ]hgN`1(rrD.t]40`"[7gGuYtOciJP3%:`W,T2JcF-t
+r;c`pr;cNjr;_EKjo>>\Tb%/'JcC<$_uKZ8p](0lp](*jRK*3co<@\qn&FtHoA00)qt'L[rVqHJ
+jo5:cmJc/;rrDBVoB?51rU]pMqq_57p"fMms2P#bpW!0Dn$)\cqjR,:nUpR\o54G8rtbK at j8X['
+JP3[LqZ)3IfDkXHqu?Tpp&Fsjn,In~>
+JcG-;r;cTlmf8LMr;_EKg].9R[K#.`s0BcGrr at WLg]#t!s60EOj65%LqpG*:iR+49YIhdRo`0RC
+dJs.Fqu?Tpp&FsjJcFj3rrAbmrr at WMJcEXfr;cTlr;cTlqZ*&ar;`2`rVui[qq^_gj2UK6p"fZ3
+pYGH)nal#Es0BuMrr at WLao;=Gqu5XUl2L/Ch<<bPpX/fmbL(m\ou?k/JcF@%q#L<lr;cNjr;c<d
+J,~>
+JcG-;r;cTlr;cTlqZ)]Wr;_EKiW&oXZiAiSrrC58rr at UCR7mP[a%Q+*JP3=B`W,f8JcEjlq#L<l
+r;cNjr;_EKjo:kOJcC<$_uKZ8kPtJ\Q2gd_UJ(JbrVub3rHRd`pQ#2>muHdfom$FPq0;LJnRCrf
+q+L_fd7aK>JP40ZrrE'ln,N2VoDaA7JP4$VqZ)3Ie,T:Fp](0lp&Fsjn,In~>
+JcG-;r;cTlr;cTlqZ)]Wr;_EKiW&oXZiBQJm<JX^j*9g*rrDA%`F at .oSP/t_a%Q+*JP3=B`W,f8
+JcEjlq#L<lr;cNjr;_EKjo>>\Tb%/'JcC<$_uKZ8kPtJ\Q2gd_rNPb&n&FnFoA00)q=F:YrVtXO
+rN_@\s0D1oiUd'Llgs`3rS at MFqrmk3rTO.7s3^f$qpG;\pUfmuqk`tSo8`^#ms+G at ruqDOn,N2a
+oDaA7JP4$VqZ)3Ie,T:Fp](0lp&Fsjn,In~>
+JcG-;r;cTlr;cTlqZ)]Wr;_EKiW&oXZiAk\s0BiIrr at WLg&Bh!jll`7q<6kpmEtV,hpJ at AYIhdR
+qZ)3IaoD/:qu?Tpp&FsjJcFj3rrAbmrr at WMJcEXfr;c$\r;`,_r;`DfrVucYrS?qipW!/Yn&FbB
+p"fT1q;(Z+nakrCs0C&Orr at WLbPqOIs8MKeq>U!coD[qEjlkUXbL-4,p!K,Gqn)O at s1@mBqZ)3I
+e,T:Fp](0lp&Fsjn,In~>
+JcG-;r;cTlr;cTlqZ)]Wr;_EKiW&oXZiAiSrrC58rr at UCR7mP[a%Q+*JP3=B`W,f8JcEjlq#L<l
+r;cNjr;_EKjo:kOJcC<$_uKZ8kPtJ\Q2gd_UJ(JbrVub3rHRd`pQ#2>muHdfom$FPq0;LJnRCrf
+q+L_fd7aK>JP40ZrrE'ln,N2VoDaA7JP4$VqZ)3Ie,T:Fp](0lp&Fsjn,In~>
+JcG-;r;cTlr;cTlqZ)]Wr;_EKiW&oXZiBQJm<JX^j*9g*rrDA%`F at .oSP/t_a%Q+*JP3=B`W,f8
+JcEjlq#L<lr;cNjr;_EKjo>>\Tb%/'JcC<$_uKZ8kPtJ\Q2gd_rNPb&n&FnFoA00)q=F:YrVtXO
+rN_@\s0D1oiUd'Llgs`3rS at MFqrmk3rTO.7s3^f$qpG;\pUfmuqk`tSo8`^#ms+G at ruqDOn,N2a
+oDaA7JP4$VqZ)3Ie,T:Fp](0lp&Fsjn,In~>
+JcG-;r;cTlr;cTlqZ)]Wr;_EKiW&oXZiAk\s0BiIrr at WLg&Bh!jll`7q<6kpmEtV,hpJ at AYIhdR
+qZ)3IaoD/:qu?Tpp&FsjJcFj3rrAbmrr at WMJcEXfr;c$\r;`,_r;`DfrVucYrS?qipW!/Yn&FbB
+p"fT1q;(Z+nakrCs0C&Orr at WLbPqOIs8MKeq>U!coD[qEjlkUXbL-4,p!K,Gqn)O at s1@mBqZ)3I
+e,T:Fp](0lp&Fsjn,In~>
+JcG-;r;c$\r;_oYrrE*!rr at WMOoM=Prr at UC_+Xe.fh;>Fa%Q+*JP3UJli6tbh>d9NJcEdjqZ-Bj
+r;cNjr;_EKjo:kOJcC<$_uKZ8kPtJ\PQ1R]Vb?nfrVub3qfqR^iK!;XpNZRPq0;LJnRCrfa%QF4
+JP46\n,MiLp](0lJP1Peoh5;bhb3hHJcF-tqZ-6fr;cNjr;c<dJ,~>
+JcG-;r;c$\r;_oYrrE*!rr at WMOoPB4a`ui_rrDY-a^W.g`Cp42fh;>Fa%Q+*JP3UJli6tbh>d9N
+JcEdjqZ-Bjr;cNjr;_EKjo>>\Tb%/'JcC<$_uKZ8kPtJ\PQ1R]o=OJ2n^6sap#u5CoD\^gJc=!p
+ht-jJlgs`3q;(r3pYGl5rS@(mq8W6Bos"+cqjQu6rIa]dmqqOnmoK2_r;_CAJP5Z/rrCqLqZ)3I
+dJs(DoDeahp&Fsjn,In~>
+JcG-;r;c$\r;_oYrrE*!rr at WMOoM?Yrr at WLfDb+-s/5P]jll`7q<6kpmEtV,hpJXIYIj-#rrCmT
+q#H!Ga8c#:p](0lp&FsjJcFj3rrAbmrr at WMJcEXfr;c$\r;`&]r;`PjrVucYqq^_giPt94pYG`1
+q;(Z+naj0frr at WLc2R23n,E(]rrE))rVkXEn`\fbbL,k"s3[gcqn)UBs*O:Js2OfFqo8L5JcF-t
+qZ-6fr;cNjr;c<dJ,~>
+JcG-;r;c$\r;_oYrrE*!rr at WMOoM=Prr at UC_+Xe.fh;>Fa%Q+*JP3UJli6tbh>d9NJcEdjqZ-Bj
+r;cNjr;_EKjo:kOJcC<$_uKZ8kPtJ\PQ1R]Vb?nfrVub3qfqR^iK!;XpNZRPq0;LJnRCrfa%QF4
+JP46\n,MiLp](0lJP1Peoh5;bhb3hHJcF-tqZ-6fr;cNjr;c<dJ,~>
+JcG-;r;c$\r;_oYrrE*!rr at WMOoPB4a`ui_rrDY-a^W.g`Cp42fh;>Fa%Q+*JP3UJli6tbh>d9N
+JcEdjqZ-Bjr;cNjr;_EKjo>>\Tb%/'JcC<$_uKZ8kPtJ\PQ1R]o=OJ2n^6sap#u5CoD\^gJc=!p
+ht-jJlgs`3q;(r3pYGl5rS@(mq8W6Bos"+cqjQu6rIa]dmqqOnmoK2_r;_CAJP5Z/rrCqLqZ)3I
+dJs(DoDeahp&Fsjn,In~>
+JcG-;r;c$\r;_oYrrE*!rr at WMOoM?Yrr at WLfDb+-s/5P]jll`7q<6kpmEtV,hpJXIYIj-#rrCmT
+q#H!Ga8c#:p](0lp&FsjJcFj3rrAbmrr at WMJcEXfr;c$\r;`&]r;`PjrVucYqq^_giPt94pYG`1
+q;(Z+naj0frr at WLc2R23n,E(]rrE))rVkXEn`\fbbL,k"s3[gcqn)UBs*O:Js2OfFqo8L5JcF-t
+qZ-6fr;cNjr;c<dJ,~>
+JcG-;r;c$\r;_iWrrE*!r;_EKp](0lU]75brr at UC_b:"0QV7)QJP3mRj8],ZkPt>XJcEXfqZ-6f
+r;cNjr;_EKjo:kOJcC<$_uKZ8kPtJ\O8o.YX\8Olqu?V3qfqX`s#8nsm=Y(Vqec4To54#,moID#
+rr at UCgIqJFrCcVZk=bFHJP1Peoh5;blV$sPJcF!pqZ-0dr;cNjr;c<dJ,~>
+JcG-;r;c$\r;_iWrrE*!r;_EKp](0lU]8S`gMQrjq/+Ac[oUUDrrABYp]#e;_b9%irrD6^q#H!G
+_uKT6oDeahp&FsjJcFj3rrA`'rr at WMJcEXfr;c$\r;_oYr;cf.n&FnFn_Nm%p[e"Uqu>jYs0 at 4T
+mJbr5rrDBVn`]`'s6/q-qpG5ZrO`$Jl`g8_qjR,:on2j\s)%]XrGD$'moK6WoDaA7JP5Z/rrD at X
+pAfdEc2[Y at nc/Ofp&Fsjn,In~>
+JcG-;r;c$\r;_iWrrE*!r;_EKp](0lU]77krr at WLec,%/s/5V_l0-ILld>J,l-ZWQYIiiprrD6^
+q#H!G_uKT6oDeahp&FsjJcFj3rrAbmrr at WMJcEXfr;c$\r;_oYr;`bpqu?WYqq^eis+]LPmEtU_
+qrmq5oB>`9Zi9t)Jc=F'rNcD$n,MSMoDdkBn*&T`bL)Zrn[nh at qn)lHlb!+6qZ)3Ic2[Y at nc/Of
+p&Fsjn,In~>
+JcG-;r;c$\r;_iWrrE*!r;_EKp](0lU]75brr at UC_b:"0QV7)QJP3mRj8],ZkPt>XJcEXfqZ-6f
+r;cNjr;_EKjo:kOJcC<$_uKZ8kPtJ\O8o.YX\8Olqu?V3qfqX`s#8nsm=Y(Vqec4To54#,moID#
+rr at UCgIqJFrCcVZk=bFHJP1Peoh5;blV$sPJcF!pqZ-0dr;cNjr;c<dJ,~>
+JcG-;r;c$\r;_iWrrE*!r;_EKp](0lU]8S`gMQrjq/+Ac[oUUDrrABYp]#e;_b9%irrD6^q#H!G
+_uKT6oDeahp&FsjJcFj3rrA`'rr at WMJcEXfr;c$\r;_oYr;cf.n&FnFn_Nm%p[e"Uqu>jYs0 at 4T
+mJbr5rrDBVn`]`'s6/q-qpG5ZrO`$Jl`g8_qjR,:on2j\s)%]XrGD$'moK6WoDaA7JP5Z/rrD at X
+pAfdEc2[Y at nc/Ofp&Fsjn,In~>
+JcG-;r;c$\r;_iWrrE*!r;_EKp](0lU]77krr at WLec,%/s/5V_l0-ILld>J,l-ZWQYIiiprrD6^
+q#H!G_uKT6oDeahp&FsjJcFj3rrAbmrr at WMJcEXfr;c$\r;_oYr;`bpqu?WYqq^eis+]LPmEtU_
+qrmq5oB>`9Zi9t)Jc=F'rNcD$n,MSMoDdkBn*&T`bL)Zrn[nh at qn)lHlb!+6qZ)3Ic2[Y at nc/Of
+p&Fsjn,In~>
+JcG-;r;c$\r;_QOr;_EKQiF$Xrr at UCJP4Ndp]#e;b=fnUqZ)3I^&Rs0nc/Ofp&FsjJcFj3SH+6@
+JcEXfr;cTlr;cNjr;_cUr;a5uq,[Cmqec:VnUpj#s+BQrs+C3/m=Y(Vq/-(To54#,moID#rr at UC
+fh:f6h+RA>JP1Pej%K7LJcEdjr;c6br;cZnqZ-*bJ,~>
+JcG-;r;c$\r;_QOr;_EKQiGT\eSY<ds)#qg[8qiOfh;)>JP40Za8c#:JcEF`qZ-0dr;cNjr;_EK
+jo>>\Tb%/'JcC<$_uKZ8p](0lp&FsjMuW_Uou?OLn_Ng#p[dqSqu>jYs0 at 4Tli,`3rrD<ToB>l'
+s60.3rR(Z$qpG5Zq7H$us/#=UooAd!ms+=$pL<ero1S]TJP1Pej%K7LJcEdjr;c6br;cZnqZ-*b
+J,~>
+JcG-;r;c$\r;_QOr;_EKQiF&arr at WLkPj6-h<<2 at ld>J,o?j>Q\%B]\qZ)3I^&Rs0nc/Ofp&Fsj
+JcFj3rrAbmrr at WMJcEXfr;cTlr;cNjr;_cUr;`u!qu?QWrS@"ks+^R$l,NbNqo8$Np"fH-rS@)/
+naj*drr at WLg&CI?h>[$GmITZ-g"k-)Qc@:^qZ)3Ia8c)<mJm+bq>^<ln,In~>
+JcG-;r;c$\r;_QOr;_EKQiF$Xrr at UCJP4Ndp]#e;b=fnUqZ)3I^&Rs0nc/Ofp&FsjJcFj3SH+6@
+JcEXfr;cTlr;cNjr;_cUr;a5uq,[Cmqec:VnUpj#s+BQrs+C3/m=Y(Vq/-(To54#,moID#rr at UC
+fh:f6h+RA>JP1Pej%K7LJcEdjr;c6br;cZnqZ-*bJ,~>
+JcG-;r;c$\r;_QOr;_EKQiGT\eSY<ds)#qg[8qiOfh;)>JP40Za8c#:JcEF`qZ-0dr;cNjr;_EK
+jo>>\Tb%/'JcC<$_uKZ8p](0lp&FsjMuW_Uou?OLn_Ng#p[dqSqu>jYs0 at 4Tli,`3rrD<ToB>l'
+s60.3rR(Z$qpG5Zq7H$us/#=UooAd!ms+=$pL<ero1S]TJP1Pej%K7LJcEdjr;c6br;cZnqZ-*b
+J,~>
+JcG-;r;c$\r;_QOr;_EKQiF&arr at WLkPj6-h<<2 at ld>J,o?j>Q\%B]\qZ)3I^&Rs0nc/Ofp&Fsj
+JcFj3rrAbmrr at WMJcEXfr;cTlr;cNjr;_cUr;`u!qu?QWrS@"ks+^R$l,NbNqo8$Np"fH-rS@)/
+naj*drr at WLg&CI?h>[$GmITZ-g"k-)Qc@:^qZ)3Ia8c)<mJm+bq>^<ln,In~>
+JcG-;r;cTlr;cNjr;_EKr;_oYr;_oYeP#i at gIqPHJP4Hbr;aH&rrC;:p]#e;dn at a]qZ-Zrrr at WM
+]Dqg0mJm+bq>^<lJcFj3SH+6 at JcEXfr;cTlqZ-Hlr;_QOr;aH&q,[Cmqec4Tmt9kbqh+j-m=Y.X
+pMKkRo54).moJUEr;beLrr at UChb3G<dnB<4JP1Pemn<HVJcEXfr;c0`r;cZnr;c6bJ,~>
+JcG-;r;cTlr;cNjr;_EKr;_oYr;_oYhg"m4r?:'8rF5d,a(!@q^J"M*]1`/(btIg2JP4Hba8c#:
+s8W*!JcE@^r;c6br;cZnqZ)3Ijo>>\Tb%/'JcC<$_uKZ8p](*jq>^BnL&_)Os2OTVn_Na!p[dkQ
+qu;6Hci3t9rMSWGrrE)jrTNk/rU]XEoA0GopYGYms2P#bq8W0 at pTX=eqjQo4ms+=$mpblho1S]T
+JP1Pemn<HVJcEXfr;c0`r;cZnr;c6bJ,~>
+JcG-;r;cTlr;cNjr;_EKr;_oYr;_oYec,NQg]%3QJc=d1n+6LUnakT#n(n#+mG6aKp](9 at Qc?eP
+a8c#:s8W*!JcE@^r;c6br;cZnqZ)3Ijo>>\U&Y,mJcC<$_uKZ8p](*jq>^BnL&_)OZi9k%qrmq5
+n'UC>qpGA^mEt[apZVS3oB>f;ec,NQiVriWJc=R+n,Ll9oDeRVj65+Nh9hS/cb&uQJcEXfr;c0`
+r;cZnr;c6bJ,~>
+JcG-;r;cTlr;cNjr;_EKr;_oYr;_oYeP#i at gIqPHJP4Hbr;aH&rrC;:p]#e;dn at a]qZ-Zrrr at WM
+]Dqg0mJm+bq>^<lJcFj3SH+6 at JcEXfr;cTlqZ-Hlr;_QOr;aH&q,[Cmqec4Tmt9kbqh+j-m=Y.X
+pMKkRo54).moJUEr;beLrr at UChb3G<dnB<4JP1Pemn<HVJcEXfr;c0`r;cZnr;c6bJ,~>
+JcG-;r;cTlr;cNjr;_EKr;_oYr;_oYhg"m4r?:'8rF5d,a(!@q^J"M*]1`/(btIg2JP4Hba8c#:
+s8W*!JcE@^r;c6br;cZnqZ)3Ijo>>\Tb%/'JcC<$_uKZ8p](*jq>^BnL&_)Os2OTVn_Na!p[dkQ
+qu;6Hci3t9rMSWGrrE)jrTNk/rU]XEoA0GopYGYms2P#bq8W0 at pTX=eqjQo4ms+=$mpblho1S]T
+JP1Pemn<HVJcEXfr;c0`r;cZnr;c6bJ,~>
+JcG-;r;cTlr;cNjr;_EKr;_oYr;_oYec,NQg]%3QJc=d1n+6LUnakT#n(n#+mG6aKp](9 at Qc?eP
+a8c#:s8W*!JcE@^r;c6br;cZnqZ)3Ijo>>\U&Y,mJcC<$_uKZ8p](*jq>^BnL&_)OZi9k%qrmq5
+n'UC>qpGA^mEt[apZVS3oB>f;ec,NQiVriWJc=R+n,Ll9oDeRVj65+Nh9hS/cb&uQJcEXfr;c0`
+r;cZnr;c6bJ,~>
+JcG-;r;cTlqZ-Hlr;_EKrVu`pJcD;@X%WHmJP1bkrrC;:p]#e;gIoZgq#H!GZiBt(li6n`q>^Bn
+JcFd1SH+6 at JcEXfr;cNjnGn4AqZ+H*qc<Omqec4Ts+C8/o7Q:fjb*5NkAB`umoI>!rr at UClV%0V
+s%Dh\a\2=,rr at UCJP5f3qZ)3I]Dq6uq>^$dmJh\~>
+JcG-;r;cTlqZ-Hlr;_EKrVu`pJcD;@j`o0ipL=.&`F at M$JP5<%rrC;:p]#e;gIoZgq#H!GZiBt(
+li6n`q>^BnJcFd1rrA`'rr at WMJcEXfr;cNjnGn4AqZ-H>n(mU!oCMMOq>^'crN_"RiVqU's60I_
+q<75%p#u#'rR(GsqpG5Zq7Gssq5+%YnW*?rs*4Jns*4#4nRCrflV$pNrr at UCJP5f3qZ)3I]Dq6u
+q>^$dmJh\~>
+JcG-;r;cTlqZ-Hlr;_EKrVu`pJcD;@X8`,!Jc=^/h=KCbn(n#+mG6aKp]$Z$_n4%jq#H!GZiBt(
+li6n`q>^BnJcFd1rrAbmrr at WMJcEXfr;cNjnGn4AqZ+8-q>^?Uqq_;"rJ'pkl,Mi4p"efpnaj$b
+rr at WLli-jgs8MKec2R\5p&G$lh<<\NhpI_/cb'&SJcE@^m/Zt^o)S1XJ,~>
+JcG-;r;cTlqZ-Hlr;_EKrVu`pJcD;@X%WHmJP1bkrrC;:p]#e;gIoZgq#H!GZiBt(li6n`q>^Bn
+JcFd1SH+6 at JcEXfr;cNjnGn4AqZ+H*qc<Omqec4Ts+C8/o7Q:fjb*5NkAB`umoI>!rr at UClV%0V
+s%Dh\a\2=,rr at UCJP5f3qZ)3I]Dq6uq>^$dmJh\~>
+JcG-;r;cTlqZ-Hlr;_EKrVu`pJcD;@j`o0ipL=.&`F at M$JP5<%rrC;:p]#e;gIoZgq#H!GZiBt(
+li6n`q>^BnJcFd1rrA`'rr at WMJcEXfr;cNjnGn4AqZ-H>n(mU!oCMMOq>^'crN_"RiVqU's60I_
+q<75%p#u#'rR(GsqpG5Zq7Gssq5+%YnW*?rs*4Jns*4#4nRCrflV$pNrr at UCJP5f3qZ)3I]Dq6u
+q>^$dmJh\~>
+JcG-;r;cTlqZ-Hlr;_EKrVu`pJcD;@X8`,!Jc=^/h=KCbn(n#+mG6aKp]$Z$_n4%jq#H!GZiBt(
+li6n`q>^BnJcFd1rrAbmrr at WMJcEXfr;cNjnGn4AqZ+8-q>^?Uqq_;"rJ'pkl,Mi4p"efpnaj$b
+rr at WLli-jgs8MKec2R\5p&G$lh<<\NhpI_/cb'&SJcE@^m/Zt^o)S1XJ,~>
+JcG-;r;cNjnGn.?qu?Zrs8W#tJcDABX\8ZoJP5#rr;_CAnOrQTJP50!a8bl6s8W#tJcE.Xm/Zt^
+o)O at Aj8YYMJcC<$_uKZ8oDeObJcGQGrrC)4q,[=kqec.Rm=X_bj+I#LkABg"moI7trr at UCm7ZpJ
+]hA,"rrE*!JP1VgqZ-Nnr;_EK^]3[$p]($hl2Q8~>
+JcG-;r;cNjnGn.?qu?Zrs8W#tJcDABnT`;qnRDLu`F at G"a\2R4JP5N+p&BS9k=`kqpAk6nr;_EK
+[K#Uoq>^$dJcFd1rrA`'rr at WMJcEXfr;cHhpAfdEq>^Hpn(mg2q<7MCmJcq]Jc=!ph=LO-rrDlY
+l.uBeqrmY-qpGA^rS@@uq8W6BmBHVeo:#W<mt:*/mpb`diCiqFrrE*!JP1VgqZ-Nnr;_EK^]3[$
+p]($hl2Q8~>
+JcG-;r;cNjnGn.?qu?Zrs8W#tJcDABXoA>#Jc=^/s0D[&ht,snce[R-p&Cf,`Oj1jpAk6nr;_EK
+[K#Uoq>^$dJcFd1rrAbmrr at WMJcEXfr;cHhpAfdEq>^Hp^]+'/qrmk3mEt7>j3dPUkNMO/YQ"P%
+Jc>'9n,LT1oCM_VrrE*!kNLaXhpJ at ArO_[@cb'&Squ?TpJcELbm/Zn\q#K[ZJ,~>
+JcG-;r;cNjnGn.?qu?Zrs8W#tJcDABX\8ZoJP5#rr;_CAnOrQTJP50!a8bl6s8W#tJcE.Xm/Zt^
+o)O at Aj8YYMJcC<$_uKZ8oDeObJcGQGrrC)4q,[=kqec.Rm=X_bj+I#LkABg"moI7trr at UCm7ZpJ
+]hA,"rrE*!JP1VgqZ-Nnr;_EK^]3[$p]($hl2Q8~>
+JcG-;r;cNjnGn.?qu?Zrs8W#tJcDABnT`;qnRDLu`F at G"a\2R4JP5N+p&BS9k=`kqpAk6nr;_EK
+[K#Uoq>^$dJcFd1rrA`'rr at WMJcEXfr;cHhpAfdEq>^Hpn(mg2q<7MCmJcq]Jc=!ph=LO-rrDlY
+l.uBeqrmY-qpGA^rS@@uq8W6BmBHVeo:#W<mt:*/mpb`diCiqFrrE*!JP1VgqZ-Nnr;_EK^]3[$
+p]($hl2Q8~>
+JcG-;r;cNjnGn.?qu?Zrs8W#tJcDABXoA>#Jc=^/s0D[&ht,snce[R-p&Cf,`Oj1jpAk6nr;_EK
+[K#Uoq>^$dJcFd1rrAbmrr at WMJcEXfr;cHhpAfdEq>^Hp^]+'/qrmk3mEt7>j3dPUkNMO/YQ"P%
+Jc>'9n,LT1oCM_VrrE*!kNLaXhpJ at ArO_[@cb'&Squ?TpJcELbm/Zn\q#K[ZJ,~>
+JcG-;r;cHhpAfdEn,N=dX8i+uJcG]KX\8ZoJP1PebtIa0JP5H)a8c#:nc/UhJcE4Zm/Zn\q#H!G
+huB5IJcC<$JcD;@r;bSFrDr_epK%+iq/-"Rm=XY`jb*5Nokj_<okj5.moI7trr at UCq+L_frCcVZ
+ZV0ukJP1tqq#Ksbr;_EKL&ZZ~>
+JcG-;r;cHhpAfdEn,N=dX8i+uJcG]Kq0:/$l!jYm_d_;"JP3=Bp&BS9mn:_$qZ-0drr at WM\,Ygq
+p]($hJcFX-SH+6 at JcC<$ScAWgq;(T4s8M]_li-_[Jc<pniUcg-rrDlYkM?$_n_O)iq8W<Zq8W0@
+qloUeq3q8Bq1J]+rIaS=q/,_4o2aI9p&BS9ND''Inc/OfJcCH(J,~>
+JcG-;r;cHhpAfdEn,N=dX8i+uJcG]KXoA>#Jc=^/lgrThdG<^-p&D/6_n3thqZ-0drr at WM\,Ygq
+p]($hJcFX-rrAbmrr at WMJcC<$ScAWg`W#]5q<7_3mEt1<jjEbWp#uGIp#tr;YQ"P%Jc>KEs0DV&
+n,LT1l1=TJn*&Zbe^:S?o=Ot at dC]EsqZ-0dr;_EKL&ZZ~>
+JcG-;r;cHhpAfdEn,N=dX8i+uJcG]KX\8ZoJP1PebtIa0JP5H)a8c#:nc/UhJcE4Zm/Zn\q#H!G
+huB5IJcC<$JcD;@r;bSFrDr_epK%+iq/-"Rm=XY`jb*5Nokj_<okj5.moI7trr at UCq+L_frCcVZ
+ZV0ukJP1tqq#Ksbr;_EKL&ZZ~>
+JcG-;r;cHhpAfdEn,N=dX8i+uJcG]Kq0:/$l!jYm_d_;"JP3=Bp&BS9mn:_$qZ-0drr at WM\,Ygq
+p]($hJcFX-SH+6 at JcC<$ScAWgq;(T4s8M]_li-_[Jc<pniUcg-rrDlYkM?$_n_O)iq8W<Zq8W0@
+qloUeq3q8Bq1J]+rIaS=q/,_4o2aI9p&BS9ND''Inc/OfJcCH(J,~>
+JcG-;r;cHhpAfdEn,N=dX8i+uJcG]KXoA>#Jc=^/lgrThdG<^-p&D/6_n3thqZ-0drr at WM\,Ygq
+p]($hJcFX-rrAbmrr at WMJcC<$ScAWg`W#]5q<7_3mEt1<jjEbWp#uGIp#tr;YQ"P%Jc>KEs0DV&
+n,LT1l1=TJn*&Zbe^:S?o=Ot at dC]EsqZ-0dr;_EKL&ZZ~>
+JcC<$]Dqg0JcDSHa\2R4lV%6XJP1Peb=hO.JP5`1a8c#:l2U\^JcC<$JcG?ASH+6 at JcC<$RK*3c
+j%J]=p](2/ruqCnqfqFZl]1"Xom$.HrF5M<o4%/hdnB]@mn<Z\JP5l5rrDNfX%W'aJP28$qZ,gZ
+r;_EKM>r)~>
+JcC<$]Dqg0JcDSHc#*Dgr>+^.rrBrGf2dGqZV0ukJP5`1a8c#:l2U\^JcC<$JcG?ASH+6 at JcC<$
+RK*3coCMYSrU]@Sp](3krN_"Rec+h)s/5heoB?2SpZUktp!NNiq9efRq7HC*mA9cMooB')s#9EH
+mqqZ*o2aO;oDaA7PtUuSkPtJ\JcCT,J,~>
+JcC<$]Dqg0JcDSHao;7Eli-naJc>QGdIYiNj5%u-p&DM at _7RbfqZ,m\r;_EKJcC<$oDegjU&Y,m
+JcC<$JcD/<r;b+Ap](3Us.'+Oqq^Sclc.u4p"f<)rU]dIoCKfts0D+mrr at WLqu6W$n,LB+kO\<F
+q<6_lbL*l?]t=.AkPtJ\JcCT,J,~>
+JcC<$]Dqg0JcDSHa\2R4lV%6XJP1Peb=hO.JP5`1a8c#:l2U\^JcC<$JcG?ASH+6 at JcC<$RK*3c
+j%J]=p](2/ruqCnqfqFZl]1"Xom$.HrF5M<o4%/hdnB]@mn<Z\JP5l5rrDNfX%W'aJP28$qZ,gZ
+r;_EKM>r)~>
+JcC<$]Dqg0JcDSHc#*Dgr>+^.rrBrGf2dGqZV0ukJP5`1a8c#:l2U\^JcC<$JcG?ASH+6 at JcC<$
+RK*3coCMYSrU]@Sp](3krN_"Rec+h)s/5heoB?2SpZUktp!NNiq9efRq7HC*mA9cMooB')s#9EH
+mqqZ*o2aO;oDaA7PtUuSkPtJ\JcCT,J,~>
+JcC<$]Dqg0JcDSHao;7Eli-naJc>QGdIYiNj5%u-p&DM at _7RbfqZ,m\r;_EKJcC<$oDegjU&Y,m
+JcC<$JcD/<r;b+Ap](3Us.'+Oqq^Sclc.u4p"f<)rU]dIoCKfts0D+mrr at WLqu6W$n,LB+kO\<F
+q<6_lbL*l?]t=.AkPtJ\JcCT,J,~>
+JcC<$\,ZC,_uKZ8JcG'9Y=nlqJP5T-r;_aKr;b;>p]#e;s%CK6q#LHprrD*Zr;_EKJcC<$p]$ca
+JcC<$JcD#8r;c4Xo2bTps&Ssqq/,qPl\"G^j+I)No54G8q/,Y2moIh/rrDR^rr at UCs%Dh\ThG"W
+rr at UCThG7_h>dKTJcCZ.J,~>
+JcC<$\,ZC,_uKZ8JcG'9eSX&MrrC;Qb?!Flr;_aKr;b;>p]#e;s%CK6q#LHprrD*Zr;_EKJcC<$
+p]$caJcC<$JcD#8r;cfffDbUGJc<jljn&MMn`]uQpZUero?mTXqq_.sn](C:pTXCgo:#K8n,Min
+mpb`df1Y`8rr at UCThG7_h>dKTJcCZ.J,~>
+JcC<$\,ZC,_uKZ8JcG'9YQ"P%Jc>KEqt'cag[inXj5'[]rJ&eKp]%_Bah,[pq#LHprrD*Zr;_EK
+JcC<$p](6nU&Y,mJcC<$JcD#8r;baSp[eFaq>^9Sq;(Aal,Mc2pYGH)rU]jKnajNps0D1orr at WL
+s8MKe]Dh3hqrmYOs,l?tbL*l?]t=.Ah>dKTJcCZ.J,~>
+JcC<$\,ZC,_uKZ8JcG'9Y=nlqJP5T-r;_aKr;b;>p]#e;s%CK6q#LHprrD*Zr;_EKJcC<$p]$ca
+JcC<$JcD#8r;c4Xo2bTps&Ssqq/,qPl\"G^j+I)No54G8q/,Y2moIh/rrDR^rr at UCs%Dh\ThG"W
+rr at UCThG7_h>dKTJcCZ.J,~>
+JcC<$\,ZC,_uKZ8JcG'9eSX&MrrC;Qb?!Flr;_aKr;b;>p]#e;s%CK6q#LHprrD*Zr;_EKJcC<$
+p]$caJcC<$JcD#8r;cfffDbUGJc<jljn&MMn`]uQpZUero?mTXqq_.sn](C:pTXCgo:#K8n,Min
+mpb`df1Y`8rr at UCThG7_h>dKTJcCZ.J,~>
+JcC<$\,ZC,_uKZ8JcG'9YQ"P%Jc>KEqt'cag[inXj5'[]rJ&eKp]%_Bah,[pq#LHprrD*Zr;_EK
+JcC<$p](6nU&Y,mJcC<$JcD#8r;baSp[eFaq>^9Sq;(Aal,Mc2pYGH)rU]jKnajNps0D1orr at WL
+s8MKe]Dh3hqrmYOs,l?tbL*l?]t=.Ah>dKTJcCZ.J,~>
+JcC<$\c;U.s8W#tJcDeNYtP)sJP1Pe`Con(MbD+jqZ)3IJcC<$ao at n3JcC<$JcCr6qZ-:^o2bNn
+rVufrs8Vn3q0;4XkDo"`s*4?lom$.Hq-s5<o4%/h]hAA*MbF!KmJiMGp&G$lJP3%:q#H!GJcFX-
+J,~>
+JcC<$\c;U.s8W#tJcDeNh/1\OrrCSYa]<scWCupaMbD+jqZ)3IJcC<$ao at n3JcC<$JcCr6qZ,CM
+rVufrs8RZLbPpVpmHFQMpZUern^70PqpFrRpUg7*s/#7SrD)b[pNZ:Hoj[AjbtIa0rr at UCX%W6g
+JcC<$huA3~>
+JcC<$\c;U.s8W#tJcDeNZ2Xb'Jc>KEdIZD^dG<!np&DSBe%<[#qZ)3IJcC<$aoDA at U&Y,mJcC<$
+JcCr6qZ,gYp%/.^r;cltq<7Y1ld=n8n'V0kq9elkp#u5CqrmYCX8`,!MuN[\mJj`rn+6)5p&G$l
+leTb3]>hOrs)7c7JcC<$huA3~>
+JcC<$\c;U.s8W#tJcDeNYtP)sJP1Pe`Con(MbD+jqZ)3IJcC<$ao at n3JcC<$JcCr6qZ-:^o2bNn
+rVufrs8Vn3q0;4XkDo"`s*4?lom$.Hq-s5<o4%/h]hAA*MbF!KmJiMGp&G$lJP3%:q#H!GJcFX-
+J,~>
+JcC<$\c;U.s8W#tJcDeNh/1\OrrCSYa]<scWCupaMbD+jqZ)3IJcC<$ao at n3JcC<$JcCr6qZ,CM
+rVufrs8RZLbPpVpmHFQMpZUern^70PqpFrRpUg7*s/#7SrD)b[pNZ:Hoj[AjbtIa0rr at UCX%W6g
+JcC<$huA3~>
+JcC<$\c;U.s8W#tJcDeNZ2Xb'Jc>KEdIZD^dG<!np&DSBe%<[#qZ)3IJcC<$aoDA at U&Y,mJcC<$
+JcCr6qZ,gYp%/.^r;cltq<7Y1ld=n8n'V0kq9elkp#u5CqrmYCX8`,!MuN[\mJj`rn+6)5p&G$l
+leTb3]>hOrs)7c7JcC<$huA3~>
+JcC<$YQ+P$g&M'PJcFF'YtP)sK1l.CJP3sTp&C4Ka8bl6JcC<$JcEdjSH+6 at JcC<$NW8qWs%Dl_
+oj[Uoq/,qPl%A5\m=Y@^qh+QdokjM6rGD(6nQ*7prrA$OmJi/=oDaA7[7g;qJcC<$g&HR~>
+JcC<$YQ+P$g&M'PJcFF'iGHtOrrCe_cW8dnr;_CA`Con(P=rsrpAfdEJcC<$a8_\1JcC<$JcC`0
+r;bmWp&BUBao:Jplfe?Kp#tYrn^6mHqn)UBpTXCgopY:Jms+A>s'kFt_b9V$JP3CDq#H!GJcFF'
+J,~>
+JcC<$YQ+P$g&M'PJcFF'Z2Xb'KDthTq>TFGdHJp4e'\'4p&D_Ff=T*'pAfdEJcC<$a8c/>U&Y,m
+JcC<$JcC`0r;c<cp%.kVq<7Y1l-\b8mEtmgqpG)mp#u5CrTNeCX8`,!NW/>F\c2-jjll=9p"dg=
+]>hOrq#H!GJcFF'J,~>
+JcC<$YQ+P$g&M'PJcFF'YtP)sK1l.CJP3sTp&C4Ka8bl6JcC<$JcEdjSH+6 at JcC<$NW8qWs%Dl_
+oj[Uoq/,qPl%A5\m=Y@^qh+QdokjM6rGD(6nQ*7prrA$OmJi/=oDaA7[7g;qJcC<$g&HR~>
+JcC<$YQ+P$g&M'PJcFF'iGHtOrrCe_cW8dnr;_CA`Con(P=rsrpAfdEJcC<$a8_\1JcC<$JcC`0
+r;bmWp&BUBao:Jplfe?Kp#tYrn^6mHqn)UBpTXCgopY:Jms+A>s'kFt_b9V$JP3CDq#H!GJcFF'
+J,~>
+JcC<$YQ+P$g&M'PJcFF'Z2Xb'KDthTq>TFGdHJp4e'\'4p&D_Ff=T*'pAfdEJcC<$a8c/>U&Y,m
+JcC<$JcC`0r;c<cp%.kVq<7Y1l-\b8mEtmgqpG)mp#u5CrTNeCX8`,!NW/>F\c2-jjll=9p"dg=
+]>hOrq#H!GJcFF'J,~>
+JcC<$X8i+uhuE]VJcF:#]hA;(qb-qhJP1Pe^J">$RnLm'q#H!GJcC<$^&OW'JcC<$JcCT,rrDdo
+o4%CmpMK_Nl%A/Zmt:L^rIacfokjG4rGD.8moI1rrrE'lrrAH[rrE'lmJh`1p&BS9]hA5&JcC<$
+dJn^~>
+JcC<$X8i+uhuE]VJcF:#iGIC[r>,9>rrD(gd8kfkND'$GRnLm'q#H!GJcC<$^&OW'JcC<$JcCT,
+rrD<_p&BUBa8Y8nmHFS?s60I_p#tSpn^6sJn%8=uq5+*os/#,_rIaWbmqql0o2`Otp&BS9]hA5&
+JcC<$dJn^~>
+JcC<$X8i+uhuE]VJcF:#^&Iu9qu6TqJc>?Aj7C[^g"jp#ou?b+_oCBAaoD/:JcC<$JcEF`rrAbm
+rr at WMJcC<$M?!SUp\sdUp&FdMq;(;_kJlu<qq_4up"f<)p[e at IoCK*`s0D\(rrAJds0D\(mJj`r
+jn%[!s5!AJrS>ZE]>hOrqZ)3IJcF-tJ,~>
+JcC<$X8i+uhuE]VJcF:#]hA;(qb-qhJP1Pe^J">$RnLm'q#H!GJcC<$^&OW'JcC<$JcCT,rrDdo
+o4%CmpMK_Nl%A/Zmt:L^rIacfokjG4rGD.8moI1rrrE'lrrAH[rrE'lmJh`1p&BS9]hA5&JcC<$
+dJn^~>
+JcC<$X8i+uhuE]VJcF:#iGIC[r>,9>rrD(gd8kfkND'$GRnLm'q#H!GJcC<$^&OW'JcC<$JcCT,
+rrD<_p&BUBa8Y8nmHFS?s60I_p#tSpn^6sJn%8=uq5+*os/#,_rIaWbmqql0o2`Otp&BS9]hA5&
+JcC<$dJn^~>
+JcC<$X8i+uhuE]VJcF:#^&Iu9qu6TqJc>?Aj7C[^g"jp#ou?b+_oCBAaoD/:JcC<$JcEF`rrAbm
+rr at WMJcC<$M?!SUp\sdUp&FdMq;(;_kJlu<qq_4up"f<)p[e at IoCK*`s0D\(rrAJds0D\(mJj`r
+jn%[!s5!AJrS>ZE]>hOrqZ)3IJcF-tJ,~>
+JcC<$VuQ\qJcE(V[7gN"O\>]SJP4`jr;bMDp&Cp_a8br8JcC<$JcE4ZSH+6 at JcC<$L]@;QnRDFs
+q>^J>pMK_Nl%A/Zm=Y4Zs+BuhokjA2s)%@:nQ*7pr;`B]s8W*!n,Ir3q+L>ZJP4$VqZ)3IJcEpn
+J,~>
+JcC<$VuQ\qJcE(Vj)*7SrrD at odoP!lrr at UCgIqJFfh;#<Vb>)1q#H!GJcC<$\,W!!JcC<$JcCN*
+r;cBer;cZnJc<XfkO[s%s.')hp#tSpn^6mHn%87ss8W*!n,NEJon2j\pMKG0o2`OtoDaA7a%Q:0
+JcC<$bQ!(~>
+JcC<$VuQ\qJcE(V[Jp1+OoGBdoD[;3dHK9>mEtlejjEb at p&DqLjh&S5q#H!GJcC<$\,ZI.U&Y,m
+JcC<$JcCN*r;cBZr;cZns5!G5q;(;_kJlo:q;)(up"f<)p%/4IoCK$^s0DY)Sc8ZhrrDNfYQ!_V
+n*'N%oDd4c[Dp+rqZ)3IJcEpnJ,~>
+JcC<$VuQ\qJcE(V[7gN"O\>]SJP4`jr;bMDp&Cp_a8br8JcC<$JcE4ZSH+6 at JcC<$L]@;QnRDFs
+q>^J>pMK_Nl%A/Zm=Y4Zs+BuhokjA2s)%@:nQ*7pr;`B]s8W*!n,Ir3q+L>ZJP4$VqZ)3IJcEpn
+J,~>
+JcC<$VuQ\qJcE(Vj)*7SrrD at odoP!lrr at UCgIqJFfh;#<Vb>)1q#H!GJcC<$\,W!!JcC<$JcCN*
+r;cBer;cZnJc<XfkO[s%s.')hp#tSpn^6mHn%87ss8W*!n,NEJon2j\pMKG0o2`OtoDaA7a%Q:0
+JcC<$bQ!(~>
+JcC<$VuQ\qJcE(V[Jp1+OoGBdoD[;3dHK9>mEtlejjEb at p&DqLjh&S5q#H!GJcC<$\,ZI.U&Y,m
+JcC<$JcCN*r;cBZr;cZns5!G5q;(;_kJlo:q;)(up"f<)p%/4IoCK$^s0DY)Sc8ZhrrDNfYQ!_V
+n*'N%oDd4c[Dp+rqZ)3IJcEpnJ,~>
+JcC<$WW2nss8W#tp](0lJcE^h[7gN"P=toUJP3%:p&D9i`W,f8JcC<$JcDqRSH+6 at JcC<$L&_#M
+qdT0slZhlNrJpi/kDo"`lZi)>j^S6_nQ*1nrrDR^kPs"(jo9m)mn<?Rr;_CAdnBQ<JcC<$`W(G~>
+JcC<$WW2nss8W#tp](0lJcE^hiGI+SrrDRueQ1!hrr at UCX%W-cYtN(9qZ)3IJcC<$YQ(-nJcC<$
+JcCH(qZ-NmoDaC at _uAijjll^EoB?51kPt/$n](+2jo>(8q1J-\s)%:8moHnjp&FsjJP4HbqZ)3I
+JcE^hJ,~>
+JcC<$WW2nss8W#tp](0lJcE^h[Jp1+PQ(Tfs8L(1g$$c<c-c4(p&DqLn%6R=qZ)3IJcC<$YQ+V&
+U&Y,mJcC<$JcCH(qZ-NboDe.4n'V*RrR'fJn'UIWp#tN/VuH\rnc%_Oe,JJ/VuH/Vl0.`pp&G$l
+s+]4SYK"i!qZ)3IJcE^hJ,~>
+JcC<$WW2nss8W#tp](0lJcE^h[7gN"P=toUJP3%:p&D9i`W,f8JcC<$JcDqRSH+6 at JcC<$L&_#M
+qdT0slZhlNrJpi/kDo"`lZi)>j^S6_nQ*1nrrDR^kPs"(jo9m)mn<?Rr;_CAdnBQ<JcC<$`W(G~>
+JcC<$WW2nss8W#tp](0lJcE^hiGI+SrrDRueQ1!hrr at UCX%W-cYtN(9qZ)3IJcC<$YQ(-nJcC<$
+JcCH(qZ-NmoDaC at _uAijjll^EoB?51kPt/$n](+2jo>(8q1J-\s)%:8moHnjp&FsjJP4HbqZ)3I
+JcE^hJ,~>
+JcC<$WW2nss8W#tp](0lJcE^h[Jp1+PQ(Tfs8L(1g$$c<c-c4(p&DqLn%6R=qZ)3IJcC<$YQ+V&
+U&Y,mJcC<$JcCH(qZ-NboDe.4n'V*RrR'fJn'UIWp#tN/VuH\rnc%_Oe,JJ/VuH/Vl0.`pp&G$l
+s+]4SYK"i!qZ)3IJcE^hJ,~>
+JcC<$TE"okJcE4Z[nH`$JP1Pe[nHDo]1^3Eq#H!GJcC<$WW/LhJcC<$JcC<$qZ-<hom$:brHRd`
+hi@)VlZi)>o4%`#oj[kmoiAOprrDjfZiBt(n,Ir3j%K"DJP4flq#H!GJcELbJ,~>
+JcC<$TE"okJcE4Zj)*=UrrDk(eQ.5oJP5<%p&DWsa8br8JcC<$JcD_LSH+6 at JcC<$JcGTIp&BUB
+e,KC=n,DSCj66LCq<50br;c<dm>h4!nTa_Doj[SpX\89cJP4flq#H!GJcELbJ,~>
+JcC<$TE"okJcE4Z\,QC-O8d2kfBCoDbL,Xqp&DqLq7F]Iq#H!GJcC<$WW2tuU&Y,mJcC<$JcC<$
+qZ-<hp"fGkrS?qiho>'2leV6toCN"]p%,*\rrDloZiBt(n,K6`n+5H#oA0$<g!R4IdC]EsqZ)3I
+JcELbJ,~>
+JcC<$TE"okJcE4Z[nH`$JP1Pe[nHDo]1^3Eq#H!GJcC<$WW/LhJcC<$JcC<$qZ-<hom$:brHRd`
+hi@)VlZi)>o4%`#oj[kmoiAOprrDjfZiBt(n,Ir3j%K"DJP4flq#H!GJcELbJ,~>
+JcC<$TE"okJcE4Zj)*=UrrDk(eQ.5oJP5<%p&DWsa8br8JcC<$JcD_LSH+6 at JcC<$JcGTIp&BUB
+e,KC=n,DSCj66LCq<50br;c<dm>h4!nTa_Doj[SpX\89cJP4flq#H!GJcELbJ,~>
+JcC<$TE"okJcE4Z\,QC-O8d2kfBCoDbL,Xqp&DqLq7F]Iq#H!GJcC<$WW2tuU&Y,mJcC<$JcC<$
+qZ-<hp"fGkrS?qiho>'2leV6toCN"]p%,*\rrDloZiBt(n,K6`n+5H#oA0$<g!R4IdC]EsqZ)3I
+JcELbJ,~>
+JcC<$U]:8ms8W#tJcE@^[nH`$rCd(hX%WBkJP2>&p&E!(`W,f8s8W#tJcC<$JcDYJSH+6 at JcC<$
+L]@5Oqu?TprVuJ6j+H6Lm=X_Lokj;0rDrZ%qb-T_[nH`$s%B!aJP4TfoDaA7j\,INJcC<$\c70~>
+JcC<$U]:8ms8W#tJcE@^iGI1UrrE(.s&T(+h,_ipr;_CAQV7#O`Cn2MqZ-Zrr;_EKJcC<$VuN:f
+JcC<$JcCN*qZ-Nnr;cfrJc=!ps7>d[l1<ltrrE)_TE"_Uo8`KrqfqRHnRDN!UJ(4YJP5)tqZ)3I
+JcE:\J,~>
+JcC<$U]:8ms8W#tJcE@^\,QC-rVlc$X8`('n,D#3`TZ"2bL,Xqp&E"N`W,f8s8W#tJcC<$JcDYJ
+rrAb]rr at WMJcC<$L]@5Oqu?TprVuKFj3cc(mEt7Up#u#=rVlQ_V>gJps8JYjS,W$NiTTU`oDd^q
+\]2t-qZ)3IJcE:\J,~>
+JcC<$U]:8ms8W#tJcE@^[nH`$rCd(hX%WBkJP2>&p&E!(`W,f8s8W#tJcC<$JcDYJSH+6 at JcC<$
+L]@5Oqu?TprVuJ6j+H6Lm=X_Lokj;0rDrZ%qb-T_[nH`$s%B!aJP4TfoDaA7j\,INJcC<$\c70~>
+JcC<$U]:8ms8W#tJcE@^iGI1UrrE(.s&T(+h,_ipr;_CAQV7#O`Cn2MqZ-Zrr;_EKJcC<$VuN:f
+JcC<$JcCN*qZ-Nnr;cfrJc=!ps7>d[l1<ltrrE)_TE"_Uo8`KrqfqRHnRDN!UJ(4YJP5)tqZ)3I
+JcE:\J,~>
+JcC<$U]:8ms8W#tJcE@^\,QC-rVlc$X8`('n,D#3`TZ"2bL,Xqp&E"N`W,f8s8W#tJcC<$JcDYJ
+rrAb]rr at WMJcC<$L]@5Oqu?TprVuKFj3cc(mEt7Up#u#=rVlQ_V>gJps8JYjS,W$NiTTU`oDd^q
+\]2t-qZ)3IJcE:\J,~>
+JcC<$WW2hqp](0lJcEF`\P)r&JP1Pefh;8Dh+RG at d7_CWqZ)3IJcC<$S,]#ZJcC<$JcC`0qZ-0d
+r;cY<l%Aqpqh*^bm=X_LokjA2q,[<#qb-Za[nHc$rrDfnr;a8*JP4*XoDaA7mn<NXJcC<$Zi>O~>
+JcC<$WW2hqp](0lJcEF`l#"mYs&T."gK&kuJP6#9r;bYHp&EE4_uKT6JcC<$JcD5>SH+6 at JcC<$
+NW8kUnc/OfJc='rrU]X[l1<lts8W*!p](0l[K#Q]s,QK!rHRpNmpc)nThG"WJP5H)qZ)3IJcE(V
+J,~>
+JcC<$WW2hqp](0lJcEF`\c2U/MuME$c03R2gX5tSp!N$Dp&EFZ_uKT6JcC<$JcD5>rrAb]rr at WM
+JcC<$NW8kUnc/Ofq;(;_rPn`^h8\j0leV6tp%/"Yq=CN`s8W*!p](0l[Ju6coCMA5hqdo(l-[&]
+cb'&SJcC<$Zi>O~>
+JcC<$WW2hqp](0lJcEF`\P)r&JP1Pefh;8Dh+RG at d7_CWqZ)3IJcC<$S,]#ZJcC<$JcC`0qZ-0d
+r;cY<l%Aqpqh*^bm=X_LokjA2q,[<#qb-Za[nHc$rrDfnr;a8*JP4*XoDaA7mn<NXJcC<$Zi>O~>
+JcC<$WW2hqp](0lJcEF`l#"mYs&T."gK&kuJP6#9r;bYHp&EE4_uKT6JcC<$JcD5>SH+6 at JcC<$
+NW8kUnc/OfJc='rrU]X[l1<lts8W*!p](0l[K#Q]s,QK!rHRpNmpc)nThG"WJP5H)qZ)3IJcE(V
+J,~>
+JcC<$WW2hqp](0lJcEF`\c2U/MuME$c03R2gX5tSp!N$Dp&EFZ_uKT6JcC<$JcD5>rrAb]rr at WM
+JcC<$NW8kUnc/Ofq;(;_rPn`^h8\j0leV6tp%/"Yq=CN`s8W*!p](0l[Ju6coCMA5hqdo(l-[&]
+cb'&SJcC<$Zi>O~>
+JcC<$YQ+J"nc/CbJcELb]1`/(YtP)sJP1Pes%E%bh+PTaq#H!GJcC<$QiETVJcC<$JcCf2rrD<`
+r;ckBl%@BDm=X_Lokj;0q,[B%pIkBa\P)i"rrB\2r;c`pJP3UJp&G$lJP5f3qZ)3IJcDkPJ,~>
+JcC<$YQ+J"nc/CbJcELbo52rcpK%:oj&XK!rr at UCJP6#9p&Ei at _>j<2JcC<$JcD):SH+6 at JcC<$
+O8o4[l2U\^Jc=4!q=F@[s6/e?s4uf#qu?Zr]Dqg0qu?Den!a-6o7Q^\qebe2moH,Tp&G$lJP5f3
+qZ)3IJcDkPJ,~>
+JcC<$YQ+J"nc/CbJcELb]Dhg1Z2Xd/g]#mtg$$Q6dF$dip&Ejf_>j<2JcC<$JcD):rrAb]rr at WM
+JcC<$O8o4[l2U\^s4uqedDkS$leV6toCMeWqt$fdqu?Zr]Dqg0qu;NPnal/3hqe+Up&G&Ho?k1i
+c+EiQJcC<$XoEn~>
+JcC<$YQ+J"nc/CbJcELb]1`/(YtP)sJP1Pes%E%bh+PTaq#H!GJcC<$QiETVJcC<$JcCf2rrD<`
+r;ckBl%@BDm=X_Lokj;0q,[B%pIkBa\P)i"rrB\2r;c`pJP3UJp&G$lJP5f3qZ)3IJcDkPJ,~>
+JcC<$YQ+J"nc/CbJcELbo52rcpK%:oj&XK!rr at UCJP6#9p&Ei at _>j<2JcC<$JcD):SH+6 at JcC<$
+O8o4[l2U\^Jc=4!q=F@[s6/e?s4uf#qu?Zr]Dqg0qu?Den!a-6o7Q^\qebe2moH,Tp&G$lJP5f3
+qZ)3IJcDkPJ,~>
+JcC<$YQ+J"nc/CbJcELb]Dhg1Z2Xd/g]#mtg$$Q6dF$dip&Ejf_>j<2JcC<$JcD):rrAb]rr at WM
+JcC<$O8o4[l2U\^s4uqedDkS$leV6toCMeWqt$fdqu?Zr]Dqg0qu;NPnal/3hqe+Up&G&Ho?k1i
+c+EiQJcC<$XoEn~>
+JcC<$Z2ah(j8]&XJcEXf]1`/(ZV1;uJP1Peqb-V^ktAekq#H!GJcC<$O8kaNJcC<$JcC<$oDe[f
+m=W`Fm=X_LokjA2oiD$#pIkBa]hA,"rrBn8JP2t8p&G$lK1l"?L&_/QJcDSHJ,~>
+JcC<$Z2ah(j8]&XJcEXfqea_inQ,YilW2,#rr at UCJP5l5p&F8L^]4*0JcC<$JcCf2SH+6 at JcC<$
+JcG?AqZ)3Hg&Cg=p\t-Tn+6G4lfe*CrrBn8q691]qjQu6s+B]`rGD.8moGiLp&G$lK1l"?L&_/Q
+JcDSHJ,~>
+JcC<$Z2ah(j8]&XJcEXf]Dhg1Zi:!1iVq0pg$$]:bL,4ep&F9r^]4*0JcC<$JcCf2rrAb]rr at WM
+JcC<$JcG?AqZ-$2cc5A"leV6tp%.kUrU[/jp](6n_>f)cmITH'l.tmWp&G$lqpDgke[tVWL&_/Q
+JcDSHJ,~>
+JcC<$Z2ah(j8]&XJcEXf]1`/(ZV1;uJP1Peqb-V^ktAekq#H!GJcC<$O8kaNJcC<$JcC<$oDe[f
+m=W`Fm=X_LokjA2oiD$#pIkBa]hA,"rrBn8JP2t8p&G$lK1l"?L&_/QJcDSHJ,~>
+JcC<$Z2ah(j8]&XJcEXfqea_inQ,YilW2,#rr at UCJP5l5p&F8L^]4*0JcC<$JcCf2SH+6 at JcC<$
+JcG?AqZ)3Hg&Cg=p\t-Tn+6G4lfe*CrrBn8q691]qjQu6s+B]`rGD.8moGiLp&G$lK1l"?L&_/Q
+JcDSHJ,~>
+JcC<$Z2ah(j8]&XJcEXf]Dhg1Zi:!1iVq0pg$$]:bL,4ep&F9r^]4*0JcC<$JcCf2rrAb]rr at WM
+JcC<$JcG?AqZ-$2cc5A"leV6tp%.kUrU[/jp](6n_>f)cmITH'l.tmWp&G$lqpDgke[tVWL&_/Q
+JcDSHJ,~>
+JcC<$NW8qWJcE^h]hAA*m7[HZJP1Pe]hA%uoh3!uqZ)3Ip](6nJcC<$PQ.0RJcC<$JcC<$mJm+b
+on1GJmt9qNokj;0oiD*%o1T*a]hA%urrC[No1T)`JP2V.oDaeCqZ)3Is8W#tp&FO^JcERdJ,~>
+JcC<$NW8qWJcE^heRIcDrrDRirCd.jJP1Pe]hA%uoh3!uqZ)3Ip](6nJcC<$PQ.0RJcC<$JcC<$
+mJm+bJc=R+p%/([qrmSAq;(H%p&G$lfDkHSs((Z(n"ouOmuI3rom$(Fo4%;lPtU`KND'-KJcGcM
+r;cNjnGn.?_>f#~>
+JcC<$NW8qWJcE^h^&J$3mJd-kZi8/>c03L0bL,.cp&F^)^&Rs0JcGKErr at WMJcCr6rrAb]rr at WM
+JcC<$JcG-;r;cN<bJs"uleV6toCMYSs7<Alp&G$lfDkIAs0 at 4TrVl!Ol0.TlkL&o$YK#J3qZ)3I
+s8W#tp&FO^JcERdJ,~>
+JcC<$NW8qWJcE^h]hAA*m7[HZJP1Pe]hA%uoh3!uqZ)3Ip](6nJcC<$PQ.0RJcC<$JcC<$mJm+b
+on1GJmt9qNokj;0oiD*%o1T*a]hA%urrC[No1T)`JP2V.oDaeCqZ)3Is8W#tp&FO^JcERdJ,~>
+JcC<$NW8qWJcE^heRIcDrrDRirCd.jJP1Pe]hA%uoh3!uqZ)3Ip](6nJcC<$PQ.0RJcC<$JcC<$
+mJm+bJc=R+p%/([qrmSAq;(H%p&G$lfDkHSs((Z(n"ouOmuI3rom$(Fo4%;lPtU`KND'-KJcGcM
+r;cNjnGn.?_>f#~>
+JcC<$NW8qWJcE^h^&J$3mJd-kZi8/>c03L0bL,.cp&F^)^&Rs0JcGKErr at WMJcCr6rrAb]rr at WM
+JcC<$JcG-;r;cN<bJs"uleV6toCMYSs7<Alp&G$lfDkIAs0 at 4TrVl!Ol0.TlkL&o$YK#J3qZ)3I
+s8W#tp&FO^JcERdJ,~>
+JcC<$M?!MSJcEjl]hAA*lV%6XgIqJFJP1norrCkJYQ+J"s8W*!JcGKEr;cNjnGn.?JcDqRSH+6@
+JcC<$JcG!7r;ceK`K'PBlZi#<oj[MnY=nEcrrD6^rrD4Trr at UCR7m/OQV72UJcGWIqZ-<hnGn.?
+_>f#~>
+JcC<$M?!MSJcEjlh.#>DrrDjqo1T)`gIqJFJP1norrCkJYQ+J"s8W*!JcGKEr;cNjnGn.?JcDqR
+SH+6 at JcC<$JcG!7r;_EJjo4lCrVlQTp%.k4oB>`ErrD6^s*Nq at s)7;/q5*VMq2Xuts*4!Lmpb`d
+PtU`KQV72UJcGWIqZ-<hnGn.?_>f#~>
+JcC<$M?!MSJcEjl^&J$3li-pig]%/WkPiZrc034(ajL-Ch8ZYuqZ-Zrrr at WMp](0lp&FO^JcC<$
+YQ+V&U$r!]JcC<$JcC<$l2U\^rR&U(o?lm[oB>l=U&OT^rrD6^s0Ches0 at 4Tq>TXMn*&rjjjE]"
+\&RC=qZ)3Iqu?Nnp&FO^JcERdJ,~>
+JcC<$M?!MSJcEjl]hAA*lV%6XgIqJFJP1norrCkJYQ+J"s8W*!JcGKEr;cNjnGn.?JcDqRSH+6@
+JcC<$JcG!7r;ceK`K'PBlZi#<oj[MnY=nEcrrD6^rrD4Trr at UCR7m/OQV72UJcGWIqZ-<hnGn.?
+_>f#~>
+JcC<$M?!MSJcEjlh.#>DrrDjqo1T)`gIqJFJP1norrCkJYQ+J"s8W*!JcGKEr;cNjnGn.?JcDqR
+SH+6 at JcC<$JcG!7r;_EJjo4lCrVlQTp%.k4oB>`ErrD6^s*Nq at s)7;/q5*VMq2Xuts*4!Lmpb`d
+PtU`KQV72UJcGWIqZ-<hnGn.?_>f#~>
+JcC<$M?!MSJcEjl^&J$3li-pig]%/WkPiZrc034(ajL-Ch8ZYuqZ-Zrrr at WMp](0lp&FO^JcC<$
+YQ+V&U$r!]JcC<$JcC<$l2U\^rR&U(o?lm[oB>l=U&OT^rrD6^s0Ches0 at 4Tq>TXMn*&rjjjE]"
+\&RC=qZ)3Iqu?Nnp&FO^JcERdJ,~>
+JcC<$M?!AOJcEpn^J"S,JP1Pea%QF4hb1HYq#H!Gn,N7bp&FO^JcC<$YQ(-nJcC<$JcC<$jo>8Z
+_iFDBlZi)>o4%;lZV0]crrDNfpIkMdJP1Peqb-P\ThG7_JcGWIo`4[br;_EK[Jta~>
+JcC<$M?!AOJcEpnj^QtFrrE("JP1Pea\2X6hb1HYq#H!Gn,N7bp&FO^JcC<$YQ(-nJcC<$JcC<$
+jo>8ZJc=p5oCN"]p#u/AoA00)mJm1dn,N.%s*Nk>nZ_tgl^Ij6mt:F\o54).moG?>oDbLWqZ)3I
+qu?<hp&FsjJcE.XJ,~>
+JcC<$M?!AOJcEpn^]+65YPu<.c03F._pSL=s3]fF\,Z7(JcG3=qZ-<hnGn.?JcDqRrrAb]rr at WM
+JcC<$JcFj3r;aaTp!N*]p#u#=V>fl^rrDNfp\t2uJc=R+n+6#3h;.2?oDcMDjh(BiJcGWIo`4[b
+r;_EK[Jta~>
+JcC<$M?!AOJcEpn^J"S,JP1Pea%QF4hb1HYq#H!Gn,N7bp&FO^JcC<$YQ(-nJcC<$JcC<$jo>8Z
+_iFDBlZi)>o4%;lZV0]crrDNfpIkMdJP1Peqb-P\ThG7_JcGWIo`4[br;_EK[Jta~>
+JcC<$M?!AOJcEpnj^QtFrrE("JP1Pea\2X6hb1HYq#H!Gn,N7bp&FO^JcC<$YQ(-nJcC<$JcC<$
+jo>8ZJc=p5oCN"]p#u/AoA00)mJm1dn,N.%s*Nk>nZ_tgl^Ij6mt:F\o54).moG?>oDbLWqZ)3I
+qu?<hp&FsjJcE.XJ,~>
+JcC<$M?!AOJcEpn^]+65YPu<.c03F._pSL=s3]fF\,Z7(JcG3=qZ-<hnGn.?JcDqRrrAb]rr at WM
+JcC<$JcFj3r;aaTp!N*]p#u#=V>fl^rrDNfp\t2uJc=R+n+6#3h;.2?oDcMDjh(BiJcGWIo`4[b
+r;_EK[Jta~>
+JcC<$JcGZKJcF!p_+Xe.dnBW>JP1PeiCgHUpAfdEnc/7^p&FsjJcC<$U]6kbJcC<$JcC<$j8\uV
+ac?%HlZi)>o4%;lZV0WarrDfnj\,OPJP1VgoDbjaqZ)3Ip&F[bp&FsjJcE.XJ,~>
+JcC<$JcGZKJcF!pmpaaHrrCM at r;_CAJP4rpZ2aOuJcG9?o`4[br;_EKJcDMFSH+6 at JcC<$JcFd1
+qZ)3Hn,DeIp#u5Cn_O$)li6tbp]'R!qn)fFn%8P&n"o]GooAj#ms+G at rF54rJP5V7X%W<iJcGEC
+o`4[br;_EK[Jta~>
+JcC<$JcGZKJcF!p_>aH7e,K<Ol2J*^c03F.^X;MiZ2aOuJcG9?o`4[br;_EKJcDMFrrAb]rr at WM
+JcC<$JcFd1qZ+aXp!N*]p#u#=V>ff\rrDfnjo54aJc>3=n+5f-j5&J;oDcMDn%8GsJcGECo`4[b
+r;_EK[Jta~>
+JcC<$JcGZKJcF!p_+Xe.dnBW>JP1PeiCgHUpAfdEnc/7^p&FsjJcC<$U]6kbJcC<$JcC<$j8\uV
+ac?%HlZi)>o4%;lZV0WarrDfnj\,OPJP1VgoDbjaqZ)3Ip&F[bp&FsjJcE.XJ,~>
+JcC<$JcGZKJcF!pmpaaHrrCM at r;_CAJP4rpZ2aOuJcG9?o`4[br;_EKJcDMFSH+6 at JcC<$JcFd1
+qZ)3Hn,DeIp#u5Cn_O$)li6tbp]'R!qn)fFn%8P&n"o]GooAj#ms+G at rF54rJP5V7X%W<iJcGEC
+o`4[br;_EK[Jta~>
+JcC<$JcGZKJcF!p_>aH7e,K<Ol2J*^c03F.^X;MiZ2aOuJcG9?o`4[br;_EKJcDMFrrAb]rr at WM
+JcC<$JcFd1qZ+aXp!N*]p#u#=V>ff\rrDfnjo54aJc>3=n+5f-j5&J;oDcMDn%8GsJcGECo`4[b
+r;_EK[Jta~>
+JcC<$JcG]Kr;_EKdJq$UrrCkJrr at UCJP4rpX8i%sJcFp5o`4[br;_EKJcDMFSH+6 at JcC<$JcFR+
+rrE*!c&VONlZi#<oj[Mn[7f]_rrDrrJP1PegIq;@r;a5uqZ)3IkPtJ\p&FsjJcE.XJ,~>
+JcC<$JcG]Kr;_EKdJrrMb?"WCh+RbJJP1PeiCg6OqZ)3IkPt2Tp&FsjJcC<$U]6kbJcC<$JcC<$
+h>dKTs8RZLp&=FOn`]rCmG7g+kPtP^qu>j!lau2Rs-i86ms+;<qdT5!JP5`1p](0l[7gAsJcFp5
+r;cNjr;_EK[Jta~>
+JcC<$JcG]Kr;_EKdJq&^rrCmSs0CbcX7O[$aka_Zs2M,>qZ)3IkPt2Tp&FsjJcC<$U]:>oU#5kM
+JcC<$JcC<$h>dKTs8U?`pX/<_oB>l=VuGlZrrDrrJc=-tl1=*%jk\P9p](6ns*MH!q7HM(JcFp5
+r;cNjr;_EK[Jta~>
+JcC<$JcG]Kr;_EKdJq$UrrCkJrr at UCJP4rpX8i%sJcFp5o`4[br;_EKJcDMFSH+6 at JcC<$JcFR+
+rrE*!c&VONlZi#<oj[Mn[7f]_rrDrrJP1PegIq;@r;a5uqZ)3IkPtJ\p&FsjJcE.XJ,~>
+JcC<$JcG]Kr;_EKdJrrMb?"WCh+RbJJP1PeiCg6OqZ)3IkPt2Tp&FsjJcC<$U]6kbJcC<$JcC<$
+h>dKTs8RZLp&=FOn`]rCmG7g+kPtP^qu>j!lau2Rs-i86ms+;<qdT5!JP5`1p](0l[7gAsJcFp5
+r;cNjr;_EK[Jta~>
+JcC<$JcG]Kr;_EKdJq&^rrCmSs0CbcX7O[$aka_Zs2M,>qZ)3IkPt2Tp&FsjJcC<$U]:>oU#5kM
+JcC<$JcC<$h>dKTs8U?`pX/<_oB>l=VuGlZrrDrrJc=-tl1=*%jk\P9p](6ns*MH!q7HM(JcFp5
+r;cNjr;_EK[Jta~>
+JcC<$JcGQGr;_EKe,R<YrrCeHrr at UCJP5H)oDegj\,Z7(JcFF'r;cNjr;_EKJcDMFSH+6 at JcC<$
+JcFL)r;b6*o7QFTokjA2nQ*+ljo>>\ktD$VJP1Pem7['N^J"A&JcF^/r;cNjrrE*!pAfdE^]/f~>
+JcC<$JcGQGr;_EKe,R<drrCeHrr at UCJP5H)oDegj\,Z7(JcFF'r;cNjr;_EKJcDMFSH+6 at JcC<$
+JcFL)r;_EJq>TjSn*'fCleU\&rrD<'s*OR]pUg1(l)"-CooA]tq0;@Fo4%;lJP5f3oDcQuq#H!G
+iW&iVp&G$ls8VfnJcELbJ,~>
+JcC<$JcGQGr;_EKe,R>brrCgQs0D+mYOfm"_;3;^oDegj\,Z7(JcFF'r;cNjr;_EKJcDMFrrAbM
+rr at WMJcC<$JcFL)r;b6bo?ls]p#u)?VuGfXrrD<_s0 at 4TkPjT7n*&T`h9l2 at oDcSFs*OVCJcF^/
+r;cNjrrE*!pAfdE^]/f~>
+JcC<$JcGQGr;_EKe,R<YrrCeHrr at UCJP5H)oDegj\,Z7(JcFF'r;cNjr;_EKJcDMFSH+6 at JcC<$
+JcFL)r;b6*o7QFTokjA2nQ*+ljo>>\ktD$VJP1Pem7['N^J"A&JcF^/r;cNjrrE*!pAfdE^]/f~>
+JcC<$JcGQGr;_EKe,R<drrCeHrr at UCJP5H)oDegj\,Z7(JcFF'r;cNjr;_EKJcDMFSH+6 at JcC<$
+JcFL)r;_EJq>TjSn*'fCleU\&rrD<'s*OR]pUg1(l)"-CooA]tq0;@Fo4%;lJP5f3oDcQuq#H!G
+iW&iVp&G$ls8VfnJcELbJ,~>
+JcC<$JcGQGr;_EKe,R>brrCgQs0D+mYOfm"_;3;^oDegj\,Z7(JcFF'r;cNjr;_EKJcDMFrrAbM
+rr at WMJcC<$JcFL)r;b6bo?ls]p#u)?VuGfXrrD<_s0 at 4TkPjT7n*&T`h9l2 at oDcSFs*OVCJcF^/
+r;cNjrrE*!pAfdE^]/f~>
+JcC<$JcGQGrrE*!r;_EKec3T]rrD(Pr;_CAJP5`1j8],Z^]402rVultJcF@%r;cNjrrE*!pAfdE
+JcDkPSH/3[q#K[ZnGn.?JcC<$QiI!af8f<PnTa_Do4%;l[nGi_s%E at llV%6Xmn<TZJP1PerCcb^
+a%Q:0JcFL)r;cTlmf7q=_>f#~>
+JcC<$JcGQGrrE*!r;_EKec3ThrrE("j\,OPJP1PepIjQHrrBh6qZ-Tprr at WMfDkdLp&G$ls8Vfn
+JcC<$XoFplnc/Cbl2U8RJcC<$JcD):r;_EJs8MKYn*'#ljo>A#rrDB)s*OL[q69g.pTX7cm at +!6
+m=YF`nSR`(moG!4pIk,Xa%Q:0JcFL)r;cTlmf7q=_>f#~>
+JcC<$JcGQGrrE*!r;_EKec3VfrrD*YrNb\eZh)#s_;3qpj8],Z^]402rVultJcF@%r;cNjrrE*!
+pAfdEJcDkPrrAbMrrDThq#K[ZnGn.?JcC<$QiI!af>d:,n_Nm%oCJs\jo>A[rrDBas0D+mrN_"R
+p\sXQn*&T`h9ki6oDckNqZ)3Ig].3Pp]'[^JcERdJ,~>
+JcC<$JcGQGrrE*!r;_EKec3T]rrD(Pr;_CAJP5`1j8],Z^]402rVultJcF@%r;cNjrrE*!pAfdE
+JcDkPSH/3[q#K[ZnGn.?JcC<$QiI!af8f<PnTa_Do4%;l[nGi_s%E at llV%6Xmn<TZJP1PerCcb^
+a%Q:0JcFL)r;cTlmf7q=_>f#~>
+JcC<$JcGQGrrE*!r;_EKec3ThrrE("j\,OPJP1PepIjQHrrBh6qZ-Tprr at WMfDkdLp&G$ls8Vfn
+JcC<$XoFplnc/Cbl2U8RJcC<$JcD):r;_EJs8MKYn*'#ljo>A#rrDB)s*OL[q69g.pTX7cm at +!6
+m=YF`nSR`(moG!4pIk,Xa%Q:0JcFL)r;cTlmf7q=_>f#~>
+JcC<$JcGQGrrE*!r;_EKec3VfrrD*YrNb\eZh)#s_;3qpj8],Z^]402rVultJcF@%r;cNjrrE*!
+pAfdEJcDkPrrAbMrrDThq#K[ZnGn.?JcC<$QiI!af>d:,n_Nm%oCJs\jo>A[rrDBas0D+mrN_"R
+p\sXQn*&T`h9ki6oDckNqZ)3Ig].3Pp]'[^JcERdJ,~>
+JcC<$JcGKErrE#tr;_EKg&K#arr at UCJP5)tQ2g^]JcEpnr;cTlmf7q=JcDqRSH/9]o`4=XnGn.?
+JcC<$rVultS,`?cgQ(ZRom$.Ho4%;l\P)&aqb-qhJP1Peb=hI,dnBK:JcF:#r;cTlr;cTlqZ)3I
+_uG5~>
+JcC<$JcGKErrE#tr;_EKg&K#lrrE!uJP1Pekt@<AqZ)3IbQ%M at p]'[^JcC<$YQ(-noDeI`li6JT
+JcC<$JcG]KrrAPgqZ)9Jnal55leU\&qo8X9kJlJbrMAbIm=Y"Tqebe2moG!4m7['NdnBK:JcF:#
+r;cTlr;cTlqZ)3I_uG5~>
+JcC<$JcGKErrE#tr;_EKg&K%jrrC%;Zh)#sbMD:-Q2g^]JcEpnr;cTlmf7q=JcDqRrrAbMrrDZj
+o`4=XnGn.?JcC<$rVultS,`?cgW&X.p"f<)oCK$^jo>5Wrr at WLci3D)n*&T`e'[d,oDd:Zq#H!G
+ec5RJp](0lp](*jJcEXfJ,~>
+JcC<$JcGKErrE#tr;_EKg&K#arr at UCJP5)tQ2g^]JcEpnr;cTlmf7q=JcDqRSH/9]o`4=XnGn.?
+JcC<$rVultS,`?cgQ(ZRom$.Ho4%;l\P)&aqb-qhJP1Peb=hI,dnBK:JcF:#r;cTlr;cTlqZ)3I
+_uG5~>
+JcC<$JcGKErrE#tr;_EKg&K#lrrE!uJP1Pekt@<AqZ)3IbQ%M at p]'[^JcC<$YQ(-noDeI`li6JT
+JcC<$JcG]KrrAPgqZ)9Jnal55leU\&qo8X9kJlJbrMAbIm=Y"Tqebe2moG!4m7['NdnBK:JcF:#
+r;cTlr;cTlqZ)3I_uG5~>
+JcC<$JcGKErrE#tr;_EKg&K%jrrC%;Zh)#sbMD:-Q2g^]JcEpnr;cTlmf7q=JcDqRrrAbMrrDZj
+o`4=XnGn.?JcC<$rVultS,`?cgW&X.p"f<)oCK$^jo>5Wrr at WLci3D)n*&T`e'[d,oDd:Zq#H!G
+ec5RJp](0lp](*jJcEXfJ,~>
+JcC<$huE]VOoP@[JcFL)a%QF4o1T#^hb3tLJP3%:MuWMOJcEjlr;cTlr;cTlqZ)3IJcE"TSH/?_
+r;cZnr;c6br;_EKJcC<$oDeahnc/CbXoJ>"gQ(lXom$(Foj[Mn\P),cpIkMdqb-kfJP1Ped7a04
+rrCkJqZ)3Ic2[_BkPtJ\JcEXfJ,~>
+JcC<$huE]VOoP@[JcFL)a&`3?o1T#^hb3tLJP3%:MuWMOJcEjlr;cTlr;cTlqZ)3IJcE"TSH/?_
+r;cZnr;c6br;_EKJcC<$oDeahnc/CbXoJ>"M>m&:n*')nkPt:rrrDr9rHn:Yhm!!Sm at +!6nUp4R
+s)%:8nQ(36iCikDrrCkJqZ)3Ic2[_BkPtJ\JcEXfJ,~>
+JcC<$huE]VOoP@[JcFL)a8Z)=oD\]ohu<Y]q>R_l^Z`ksq9b-#pAfdEaoD;>p](0lp](*jJcC<$
+Z2ah(U#5kMp&Fsjq>^BnmJm+bJcC<$JcG?Ar;cBfq#IPsr;bTlo?m6eoB>l=X8_;^p\t0mqu6Q"
+Jc=R+n+5Z)jk\2/n](8%rrClpqZ)3Ic2[_BkPtJ\JcEXfJ,~>
+JcC<$huE]VOoP@[JcFL)a%QF4o1T#^hb3tLJP3%:MuWMOJcEjlr;cTlr;cTlqZ)3IJcE"TSH/?_
+r;cZnr;c6br;_EKJcC<$oDeahnc/CbXoJ>"gQ(lXom$(Foj[Mn\P),cpIkMdqb-kfJP1Ped7a04
+rrCkJqZ)3Ic2[_BkPtJ\JcEXfJ,~>
+JcC<$huE]VOoP@[JcFL)a&`3?o1T#^hb3tLJP3%:MuWMOJcEjlr;cTlr;cTlqZ)3IJcE"TSH/?_
+r;cZnr;c6br;_EKJcC<$oDeahnc/CbXoJ>"M>m&:n*')nkPt:rrrDr9rHn:Yhm!!Sm at +!6nUp4R
+s)%:8nQ(36iCikDrrCkJqZ)3Ic2[_BkPtJ\JcEXfJ,~>
+JcC<$huE]VOoP@[JcFL)a8Z)=oD\]ohu<Y]q>R_l^Z`ksq9b-#pAfdEaoD;>p](0lp](*jJcC<$
+Z2ah(U#5kMp&Fsjq>^BnmJm+bJcC<$JcG?Ar;cBfq#IPsr;bTlo?m6eoB>l=X8_;^p\t0mqu6Q"
+Jc=R+n+5Z)jk\2/n](8%rrClpqZ)3Ic2[_BkPtJ\JcEXfJ,~>
+JcC<$iW&iVnc/CbV>pPqJcFL)a\2X6b=hj8JP3[LV>pPqiW&]RJcELbr;c$\r;_EKJcE"TSH/?_
+r;cZnr;c6br;_EKJcC<$p&FmhoDeI`X8i2"s8Uu:on2p^o54/0o2`Cpl2U?Jrr at UCJP3mRp](6n
+s8V7TqZ)3Ia8c)<kPtJ\JcEXfJ,~>
+JcC<$iW&iVnc/CbV>pPqJcFL)cW9p9rrC58rr at UC]h>4%rrD$Xq#H!G^]464kPtJ\JcC<$Z2^?p
+p&Fsjq>^BnmJm+bJcC<$JcGECqZ-6fo`2&mrrE*!O8e\@n*')nl2U at prrDZ1rO_0qnYPuKo8`X!
+ms+G at o4%;lJP4flp](6ns8V7TqZ)3Ia8c)<kPtJ\JcEXfJ,~>
+JcC<$iW&iVnc/CbV>pPqJcFL)ao;;?bPqOIq>Rqr\`hT"V>pPqiW&]RJcELbr;c$\r;_EKJcE"T
+rrAbMrrD`lr;cZnr;c6br;_EKJcC<$p&FmhoDeI`X8i2"s8Uurp!NHgoB>l=X8_A`oD\aiJc=@%
+kO[m#j5&D9ji7&prrE*!kJmB!JcEdjr;c$\r;_EK_uG5~>
+JcC<$iW&iVnc/CbV>pPqJcFL)a\2X6b=hj8JP3[LV>pPqiW&]RJcELbr;c$\r;_EKJcE"TSH/?_
+r;cZnr;c6br;_EKJcC<$p&FmhoDeI`X8i2"s8Uu:on2p^o54/0o2`Cpl2U?Jrr at UCJP3mRp](6n
+s8V7TqZ)3Ia8c)<kPtJ\JcEXfJ,~>
+JcC<$iW&iVnc/CbV>pPqJcFL)cW9p9rrC58rr at UC]h>4%rrD$Xq#H!G^]464kPtJ\JcC<$Z2^?p
+p&Fsjq>^BnmJm+bJcC<$JcGECqZ-6fo`2&mrrE*!O8e\@n*')nl2U at prrDZ1rO_0qnYPuKo8`X!
+ms+G at o4%;lJP4flp](6ns8V7TqZ)3Ia8c)<kPtJ\JcEXfJ,~>
+JcC<$iW&iVnc/CbV>pPqJcFL)ao;;?bPqOIq>Rqr\`hT"V>pPqiW&]RJcELbr;c$\r;_EKJcE"T
+rrAbMrrD`lr;cZnr;c6br;_EKJcC<$p&FmhoDeI`X8i2"s8Uurp!NHgoB>l=X8_A`oD\aiJc=@%
+kO[m#j5&D9ji7&prrE*!kJmB!JcEdjr;c$\r;_EK_uG5~>
+JcC<$j8\uVoDeI`VuQVoJcFX-a\2R4JP2>&PQ1X_l2UPZJcE:\r;c$\r;_EKJcE"TSH/Ear;cNj
+r;c<dr;_EKJcC<$qu?<hp&Fsjq>^BnX8i+us8V2 at on2p^o54/0o2`Irl2U3FrrC)4r;_CAJP5r7
+p&FJRqZ)3I_>jH6kPtJ\JcEXfJ,~>
+JcC<$j8\uVoDeI`VuQVoJcFX-f2hK9r;_CAQV3PBrrD<`q#H!G\c;U.kPtJ\JcC<$Z2^?pp](0l
+p&Fsjn,N=dJcC<$JcGWIo`4[br;cZnr;`nur;cltQ2^=Fn*'/pl2U4lrrDl7ot0Uqn"otcrMAh?
+s+BidmqqN&nQ(36h+RG at mn<NXJcERdr;c$\r;_EK_uG5~>
+JcC<$j8\uVoDeI`VuQVoJcFX-ao;;?s0BiI]CWMqh;+:prrD<`q#H!G\c;U.kPtJ\JcC<$Z2ah(
+U#5kMp](0lp&Fsjn,N=dJcC<$JcGWIo`4[br;cZnr;`nur;cltji6u at p"f6'p%,<bl2U5OrrC+=
+rN_Xdl1=B-h;-W/ji6unn&G5)JcERdr;c$\r;_EK_uG5~>
+JcC<$j8\uVoDeI`VuQVoJcFX-a\2R4JP2>&PQ1X_l2UPZJcE:\r;c$\r;_EKJcE"TSH/Ear;cNj
+r;c<dr;_EKJcC<$qu?<hp&Fsjq>^BnX8i+us8V2 at on2p^o54/0o2`Irl2U3FrrC)4r;_CAJP5r7
+p&FJRqZ)3I_>jH6kPtJ\JcEXfJ,~>
+JcC<$j8\uVoDeI`VuQVoJcFX-f2hK9r;_CAQV3PBrrD<`q#H!G\c;U.kPtJ\JcC<$Z2^?pp](0l
+p&Fsjn,N=dJcC<$JcGWIo`4[br;cZnr;`nur;cltQ2^=Fn*'/pl2U4lrrDl7ot0Uqn"otcrMAh?
+s+BidmqqN&nQ(36h+RG at mn<NXJcERdr;c$\r;_EK_uG5~>
+JcC<$j8\uVoDeI`VuQVoJcFX-ao;;?s0BiI]CWMqh;+:prrD<`q#H!G\c;U.kPtJ\JcC<$Z2ah(
+U#5kMp](0lp&Fsjn,N=dJcC<$JcGWIo`4[br;cZnr;`nur;cltji6u at p"f6'p%,<bl2U5OrrC+=
+rN_Xdl1=B-h;-W/ji6unn&G5)JcERdr;c$\r;_EK_uG5~>
+JcC<$l2UDVp&Fsjq>^BnVuQbss8W#tJcF^/b=hj8JP2h4JcG3=qZ)3IZ2ab&kPtJ\JcC<$Zi?Kp
+p](0lp&Fsjn,NCfs8VfnJcC<$L&^fGp&Fsjq>^BnVuQ\qs8VJHo7Q^\o54/0o2`Irli6QLr;cdh
+rr at UCJP3[LoDeVZqZ)3I]Dqg0p](0lp&FsjJcEXfJ,~>
+JcC<$l2UDVp&Fsjq>^BnVuQbss8W#tJcF^/hcB,;rr at UCV+ZC>n,N7bJcE"Tr;c$\r;_EKJcE(V
+RfN3_r;cNjr;c<drrE*!pAfdEJcCH(o`4[br;cZnr;`bqr;cltS,VsLn*'/pli6RrrHnL_rrE#;
+n%8=uje_@)o7QpbmqqN&moG!4f1Y`8q+LSbJcE@^r;cTlr;cNjr;_EK_uG5~>
+JcC<$l2UDVp&Fsjq>^BnVuQbss8W#tJcF^/bPqMAdJgiNWT`m.JcG3=qZ)3IZ2ab&kPtJ\JcC<$
+ZiB[u[GUQUp](0lp&Fsjn,NCfs8VfnJcC<$L&^fGp&Fsjq>^BnVuQ\qs8VK+o?m6eoB>l=Xo at Yd
+oD\]orVlfsJc=4!n+5`+kM=>/ji6olq8W:3JcE@^r;cTlr;cNjr;_EK_uG5~>
+JcC<$l2UDVp&Fsjq>^BnVuQbss8W#tJcF^/b=hj8JP2h4JcG3=qZ)3IZ2ab&kPtJ\JcC<$Zi?Kp
+p](0lp&Fsjn,NCfs8VfnJcC<$L&^fGp&Fsjq>^BnVuQ\qs8VJHo7Q^\o54/0o2`Irli6QLr;cdh
+rr at UCJP3[LoDeVZqZ)3I]Dqg0p](0lp&FsjJcEXfJ,~>
+JcC<$l2UDVp&Fsjq>^BnVuQbss8W#tJcF^/hcB,;rr at UCV+ZC>n,N7bJcE"Tr;c$\r;_EKJcE(V
+RfN3_r;cNjr;c<drrE*!pAfdEJcCH(o`4[br;cZnr;`bqr;cltS,VsLn*'/pli6RrrHnL_rrE#;
+n%8=uje_@)o7QpbmqqN&moG!4f1Y`8q+LSbJcE@^r;cTlr;cNjr;_EK_uG5~>
+JcC<$l2UDVp&Fsjq>^BnVuQbss8W#tJcF^/bPqMAdJgiNWT`m.JcG3=qZ)3IZ2ab&kPtJ\JcC<$
+ZiB[u[GUQUp](0lp&Fsjn,NCfs8VfnJcC<$L&^fGp&Fsjq>^BnVuQ\qs8VK+o?m6eoB>l=Xo at Yd
+oD\]orVlfsJc=4!n+5`+kM=>/ji6olq8W:3JcE@^r;cTlr;cNjr;_EK_uG5~>
+JcC<$l2UDVp&Fsjq>^BnTE"iiJcFd1btJ':JP3=BJcG!7q#H!GX8i+up](0lp&FsjJcC<$Z2^?p
+p](0lp&Fsjnc/%XJcC<$JcGcMr;cTlr;cNjr;`bqqZ-/Hon2j\o54/0o2`Otli6- at rr@UCJP3OH
+p&FmhJcE.Xr;cTlqZ-Hlr;_EK_>f#~>
+JcC<$l2UDVp&Fsjq>^BnTE"iiJcFd1kuQn=rr at UCZV,lLl2UPZJcDeNr;cTlr;cNjr;_EKJcE"T
+SH/Ear;cNjr;cBfmf7q=JcC<$s8W#tp](0lp&FsjVuQVoTDnBPn*'5rli6.frrD;qs01[_qjR&8
+m=YF`nSR`(moG!4btIa0qZ)3I[K$1*p](*jq>^BnJcERdJ,~>
+JcC<$l2UDVp&Fsjq>^BnTE"iiJcFd1c2R_CfD`8NVs&^3l2UPZJcDeNr;cTlr;cNjr;_EKJcE"T
+rrAb=rrDfnr;cNjr;cBfmf7q=JcC<$s8W#tp](0lp&FsjVuQVon](7LoA0$%p%,Bdli6/Irr at WL
+g]$[5hrs1Xe^<-kp&FmhJcE.Xr;cTlqZ-Hlr;_EK_>f#~>
+JcC<$l2UDVp&Fsjq>^BnTE"iiJcFd1btJ':JP3=BJcG!7q#H!GX8i+up](0lp&FsjJcC<$Z2^?p
+p](0lp&Fsjnc/%XJcC<$JcGcMr;cTlr;cNjr;`bqqZ-/Hon2j\o54/0o2`Otli6- at rr@UCJP3OH
+p&FmhJcE.Xr;cTlqZ-Hlr;_EK_>f#~>
+JcC<$l2UDVp&Fsjq>^BnTE"iiJcFd1kuQn=rr at UCZV,lLl2UPZJcDeNr;cTlr;cNjr;_EKJcE"T
+SH/Ear;cNjr;cBfmf7q=JcC<$s8W#tp](0lp&FsjVuQVoTDnBPn*'5rli6.frrD;qs01[_qjR&8
+m=YF`nSR`(moG!4btIa0qZ)3I[K$1*p](*jq>^BnJcERdJ,~>
+JcC<$l2UDVp&Fsjq>^BnTE"iiJcFd1c2R_CfD`8NVs&^3l2UPZJcDeNr;cTlr;cNjr;_EKJcE"T
+rrAb=rrDfnr;cNjr;cBfmf7q=JcC<$s8W#tp](0lp&FsjVuQVon](7LoA0$%p%,Bdli6/Irr at WL
+g]$[5hrs1Xe^<-kp&FmhJcE.Xr;cTlqZ-Hlr;_EK_>f#~>
+JcC<$iW&iVp](0lp&FsjScAWgJcFj3hb3nJoh5;b]hA;(M+`F"iW&QNJcD_Lr;cTlqZ-Hlr;_EK
+JcDqRSH/Ear;cNjr;cBfr;cTlqZ)3IJcC<$r;cTlr;cNjr;`Pkr;cYRo7QXZokj;0o2`Otli6oV
+r;c4Xrr at UCJP3CDq#LHpr;_EK[K$1*p&FO^JcERdJ,~>
+JcC<$iW&iVp](0lp&FsjScAWgJcFj3o2b6Or;cL`rrB`*r;_[IJcF^/o`0RCWW2nsp](*jq>^Bn
+JcC<$YQ(-np](0lp&Fsjnc/Ofp](*jJcC<$JcGZKp](0lp&FsjU&Y&kV>g#Vn`]Arli6q'rHn(S
+rO`(0mCVPXnXB?8m=Y(Vo54).o2^E8_b9e*s8W#tJcE.Xr;cNjnGn.?_>f#~>
+JcC<$iW&iVp](0lp&FsjScAWgJcFj3hu<S[p&=skhu;O)rMS-9\*/DCiW&QNJcD_Lr;cTlqZ-Hl
+r;_EKJcDqRrrAb=rrDfnr;cNjr;cBfr;cTlqZ)3IJcC<$r;cTlr;cNjr;`Pkr;cZ5o?m0cp#u#=
+YQ!kfrVlc$mJd+cJc=X-lgs0#h;-W/fuEgfs8W#tJcE.Xr;cNjnGn.?_>f#~>
+JcC<$iW&iVp](0lp&FsjScAWgJcFj3hb3nJoh5;b]hA;(M+`F"iW&QNJcD_Lr;cTlqZ-Hlr;_EK
+JcDqRSH/Ear;cNjr;cBfr;cTlqZ)3IJcC<$r;cTlr;cNjr;`Pkr;cYRo7QXZokj;0o2`Otli6oV
+r;c4Xrr at UCJP3CDq#LHpr;_EK[K$1*p&FO^JcERdJ,~>
+JcC<$iW&iVp](0lp&FsjScAWgJcFj3o2b6Or;cL`rrB`*r;_[IJcF^/o`0RCWW2nsp](*jq>^Bn
+JcC<$YQ(-np](0lp&Fsjnc/Ofp](*jJcC<$JcGZKp](0lp&FsjU&Y&kV>g#Vn`]Arli6q'rHn(S
+rO`(0mCVPXnXB?8m=Y(Vo54).o2^E8_b9e*s8W#tJcE.Xr;cNjnGn.?_>f#~>
+JcC<$iW&iVp](0lp&FsjScAWgJcFj3hu<S[p&=skhu;O)rMS-9\*/DCiW&QNJcD_Lr;cTlqZ-Hl
+r;_EKJcDqRrrAb=rrDfnr;cNjr;cBfr;cTlqZ)3IJcC<$r;cTlr;cNjr;`Pkr;cZ5o?m0cp#u#=
+YQ!kfrVlc$mJd+cJc=X-lgs0#h;-W/fuEgfs8W#tJcE.Xr;cNjnGn.?_>f#~>
+JcC<$iW&iVp](0lp&FsjS,`?cJcG!7cV+9<JP46\JcFL)qZ-Hlr;_EKWW2nsp&FO^JcC<$YQ(-n
+p](0lp&FsjiW&iVJcC<$JcGZKp](0lp&FsjScAWgo7QXZo54).o2`V!li5p:rrBN$rr at UCLJ.FC
+p&G$lJcE4Zr;cHhpAfdE^&NT~>
+JcC<$iW&iVp](0lp&FsjS,`?cJcG!7q,Z*?rr at UCbtEWfg].-Nq>^BnJcD_Lr;cNjnGn.?JcDqR
+SH/Ear;cNjr;bgVr;_EKJcC<$r;cTlr;cNjr;`Dgr;`ntoCMG7n(m=0lc/\2rrDZ&kG at L5on39'
+rIaK^mqqZ*oi?W:b=hX2p&G$lJcE4Zr;cHhpAfdE^&NT~>
+JcC<$iW&iVp](0lp&FsjS,`?cJcG!7ci3qEjo2+J`TVmQg].-Nq>^BnJcD_Lr;cNjnGn.?JcDqR
+rrAb=rrDfnr;cNjr;bgVr;_EKJcC<$r;cTlr;cNjr;`Dgr;cH:oA0$%oCK6dli5rCrrBP-s0Aj-
+jn%m'h;-?'iPtZnp&G$lJcE4Zr;cHhpAfdE^&NT~>
+JcC<$iW&iVp](0lp&FsjS,`?cJcG!7cV+9<JP46\JcFL)qZ-Hlr;_EKWW2nsp&FO^JcC<$YQ(-n
+p](0lp&FsjiW&iVJcC<$JcGZKp](0lp&FsjScAWgo7QXZo54).o2`V!li5p:rrBN$rr at UCLJ.FC
+p&G$lJcE4Zr;cHhpAfdE^&NT~>
+JcC<$iW&iVp](0lp&FsjS,`?cJcG!7q,Z*?rr at UCbtEWfg].-Nq>^BnJcD_Lr;cNjnGn.?JcDqR
+SH/Ear;cNjr;bgVr;_EKJcC<$r;cTlr;cNjr;`Dgr;`ntoCMG7n(m=0lc/\2rrDZ&kG at L5on39'
+rIaK^mqqZ*oi?W:b=hX2p&G$lJcE4Zr;cHhpAfdE^&NT~>
+JcC<$iW&iVp](0lp&FsjS,`?cJcG!7ci3qEjo2+J`TVmQg].-Nq>^BnJcD_Lr;cNjnGn.?JcDqR
+rrAb=rrDfnr;cNjr;bgVr;_EKJcC<$r;cTlr;cNjr;`Dgr;cH:oA0$%oCK6dli5rCrrBP-s0Aj-
+jn%m'h;-?'iPtZnp&G$lJcE4Zr;cHhpAfdE^&NT~>
+JcC<$iW&iVp](0lp&FsjRK*9es8W#tJcG'9mn<Z\j\,URJP4ZhJcF@%pAja`r;_EKXoJ>"oDeOb
+JcC<$X8e^jp](0lp&FsjiW&iVJcC<$JcGZKp](0lp&FsjRK*9eq1J3^o54).o2`V!mJl!8rrBH"
+rr at UCO%]?Mli6n`JcC<$JcFL)J,~>
+JcC<$iW&iVp](0lp&FsjRK*9es8W#tJcG'9mn<Z\j\,URJP4ZhJcF@%pAja`r;_EKXoJ>"oDeOb
+JcC<$X8e^jp](0lp&FsjiW&iVJcC<$JcGZKp](0lp&FsjRK*9eZ2X:bn*'5rmJlLlo=P#&q7Gmf
+l^I3ns*4PpnTaM>mpb`dJP4NdqZ,s^r;_EKJcC<$g])d~>
+JcC<$iW&iVp](0lp&FsjRK*9es8W#tJcG'9n,E?mjo58[mJ`sRaln<UfDkRFnc/OfJcDkPr;cHh
+pAfdEJcDeNrrAb=rrDfnr;cNjr;bgVr;_EKJcC<$r;cTlr;cNjr;`8crrDlBn_Ng#oCK6dmJl#A
+rrBJ+s0Ad+mIT`/fA4Wtlc/f%li6n`JcC<$JcFL)J,~>
+JcC<$iW&iVp](0lp&FsjRK*9es8W#tJcG'9mn<Z\j\,URJP4ZhJcF@%pAja`r;_EKXoJ>"oDeOb
+JcC<$X8e^jp](0lp&FsjiW&iVJcC<$JcGZKp](0lp&FsjRK*9eq1J3^o54).o2`V!mJl!8rrBH"
+rr at UCO%]?Mli6n`JcC<$JcFL)J,~>
+JcC<$iW&iVp](0lp&FsjRK*9es8W#tJcG'9mn<Z\j\,URJP4ZhJcF@%pAja`r;_EKXoJ>"oDeOb
+JcC<$X8e^jp](0lp&FsjiW&iVJcC<$JcGZKp](0lp&FsjRK*9eZ2X:bn*'5rmJlLlo=P#&q7Gmf
+l^I3ns*4PpnTaM>mpb`dJP4NdqZ,s^r;_EKJcC<$g])d~>
+JcC<$iW&iVp](0lp&FsjRK*9es8W#tJcG'9n,E?mjo58[mJ`sRaln<UfDkRFnc/OfJcDkPr;cHh
+pAfdEJcDeNrrAb=rrDfnr;cNjr;bgVr;_EKJcC<$r;cTlr;cNjr;`8crrDlBn_Ng#oCK6dmJl#A
+rrBJ+s0Ad+mIT`/fA4Wtlc/f%li6n`JcC<$JcFL)J,~>
+JcC<$iW&iVp](0lp&FsjOoP@[JcG-;o1T)`j%KCPJP5#rJcF4!qZ,[Vr;_EKJcC<$JcELbSH/Ea
+r;cNjr;bgVr;_EKJcC<$r;cTlr;cNjr;`8cqZ-YKo6BeBoj[Mn^J!tor;bYHrr at UCJP4$VqZ,UT
+r;_EKJcC<$huA3~>
+JcC<$iW&iVp](0lp&FsjOoP@[JcG-;o1T)`j%KCPJP5#rJcF4!qZ,[Vr;_EKJcC<$JcELbSH/Ea
+r;cNjr;bgVr;_EKJcC<$r;cTlr;cNjr;`8cqZ+,)nal;7n(mC2rHn"Qqlob*rrE#0l_Wp9pQ#!#
+ms+5:nRCrfJP4HbqZ,UTr;_EKJcC<$huA3~>
+JcC<$iW&iVp](0lp&FsjOoP@[JcG-;oD\cqj8T&YoDYZZbNONWe,T:Fj8]&XJcC<$JcC<$^]4<6
+U!N`=p](0lp&FsjiW&iVJcC<$JcGZKp](0lp&FsjRK*-as3^Gon`]Z;Z2X.jrNb8Yrr at WLj8SN=
+j65+NbL-"&qZ,UTr;_EKJcC<$huA3~>
+JcC<$iW&iVp](0lp&FsjOoP@[JcG-;o1T)`j%KCPJP5#rJcF4!qZ,[Vr;_EKJcC<$JcELbSH/Ea
+r;cNjr;bgVr;_EKJcC<$r;cTlr;cNjr;`8cqZ-YKo6BeBoj[Mn^J!tor;bYHrr at UCJP4$VqZ,UT
+r;_EKJcC<$huA3~>
+JcC<$iW&iVp](0lp&FsjOoP@[JcG-;o1T)`j%KCPJP5#rJcF4!qZ,[Vr;_EKJcC<$JcELbSH/Ea
+r;cNjr;bgVr;_EKJcC<$r;cTlr;cNjr;`8cqZ+,)nal;7n(mC2rHn"Qqlob*rrE#0l_Wp9pQ#!#
+ms+5:nRCrfJP4HbqZ,UTr;_EKJcC<$huA3~>
+JcC<$iW&iVp](0lp&FsjOoP@[JcG-;oD\cqj8T&YoDYZZbNONWe,T:Fj8]&XJcC<$JcC<$^]4<6
+U!N`=p](0lp&FsjiW&iVJcC<$JcGZKp](0lp&FsjRK*-as3^Gon`]Z;Z2X.jrNb8Yrr at WLj8SN=
+j65+NbL-"&qZ,UTr;_EKJcC<$huA3~>
+JcC<$iW&iVp](0lp&FsjNW8qWJcG3=eP#oBX\8Tm`Ckd^ci<kBg&M!NJcC<$JcC<$_uH8-p&Fsj
+q>^<lnc/Ofp&FsjJcC<$JcGZKp](0lp&FsjPQ1R]q0;4Bq-rqr^J"%qeP#oBJP1PebtIp6JcC<$
+JcE.XJ,~>
+JcC<$iW&iVp](0lp&FsjNW8qWJcG3=eP#oBX\8Tm`Ckd^ci<kBg&M!NJcC<$JcC<$_uH8-p&Fsj
+q>^<lnc/Ofp&FsjJcC<$JcGZKp](0lp&FsjPQ1R]^]*cpn*'5rn,M^nos"2&rrDG_l^I4$ms+;<
+mpb`dJP4HbqZ)3IJcC<$[Jta~>
+JcC<$iW&iVp](0lp&FsjNW8qWJcG3=ec,RKqu3qnrMT,UfB at ecci<kBg&M!NJcC<$JcC<$_uK`:
+U!N`=p&Fsjq>^<lnc/Ofp&FsjJcC<$JcGZKp](0lp&FsjPQ1R]q;(B#q=Cljn,Lr;rr at WLl2L/C
+h<<\N_9r;&qZ)3IJcC<$[Jta~>
+JcC<$iW&iVp](0lp&FsjNW8qWJcG3=eP#oBX\8Tm`Ckd^ci<kBg&M!NJcC<$JcC<$_uH8-p&Fsj
+q>^<lnc/Ofp&FsjJcC<$JcGZKp](0lp&FsjPQ1R]q0;4Bq-rqr^J"%qeP#oBJP1PebtIp6JcC<$
+JcE.XJ,~>
+JcC<$iW&iVp](0lp&FsjNW8qWJcG3=eP#oBX\8Tm`Ckd^ci<kBg&M!NJcC<$JcC<$_uH8-p&Fsj
+q>^<lnc/Ofp&FsjJcC<$JcGZKp](0lp&FsjPQ1R]^]*cpn*'5rn,M^nos"2&rrDG_l^I4$ms+;<
+mpb`dJP4HbqZ)3IJcC<$[Jta~>
+JcC<$iW&iVp](0lp&FsjNW8qWJcG3=ec,RKqu3qnrMT,UfB at ecci<kBg&M!NJcC<$JcC<$_uK`:
+U!N`=p&Fsjq>^<lnc/Ofp&FsjJcC<$JcGZKp](0lp&FsjPQ1R]q;(B#q=Cljn,Lr;rr at WLl2L/C
+h<<\N_9r;&qZ)3IJcC<$[Jta~>
+JcC<$iW&iVp](0lp&FsjM?!MSJcGKEr;cltf1Z,DJP5`1JcEpnqZ-Zrrr at WMJcC<$JcD#8SH/?_
+r;cZnr;c<dqZ-Hlr;_EKJcC<$s8W#tp](0lp&FsjO8o.Yj)+Bg^J"8"rrE#td7aK>JP1PednBQ<
+JcC<$JcDqRJ,~>
+JcC<$iW&iVp](0lp&FsjM?!MSJcGKEr;cltf1Z,DJP5`1JcEpnqZ-Zrrr at WMJcC<$JcD#8SH/?_
+r;cZnr;c<dqZ-Hlr;_EKJcC<$s8W#tp](0lp&FsjO8o.Y`W#E!n`]Gtp&G$lrVuo0mDeV!s1A0)
+rrDYel^I4$q1J9`o53r*moG!4dnBQ<JcC<$JcDqRJ,~>
+JcC<$iW&iVp](0lp&FsjM?!MSJcGKEr;cltfDbdMQ1O&"JcEpnqZ-Zrrr at WMJcC<$JcD#8rrAb=
+rrD`lr;cZnr;c<dqZ-Hlr;_EKJcC<$s8W#tp](0lp&FsjO8o.Yj63cIp&G$lrVt:Err at WLn,DMA
+jlk=P`R4P_JcC<$JcDqRJ,~>
+JcC<$iW&iVp](0lp&FsjM?!MSJcGKEr;cltf1Z,DJP5`1JcEpnqZ-Zrrr at WMJcC<$JcD#8SH/?_
+r;cZnr;c<dqZ-Hlr;_EKJcC<$s8W#tp](0lp&FsjO8o.Yj)+Bg^J"8"rrE#td7aK>JP1PednBQ<
+JcC<$JcDqRJ,~>
+JcC<$iW&iVp](0lp&FsjM?!MSJcGKEr;cltf1Z,DJP5`1JcEpnqZ-Zrrr at WMJcC<$JcD#8SH/?_
+r;cZnr;c<dqZ-Hlr;_EKJcC<$s8W#tp](0lp&FsjO8o.Y`W#E!n`]Gtp&G$lrVuo0mDeV!s1A0)
+rrDYel^I4$q1J9`o53r*moG!4dnBQ<JcC<$JcDqRJ,~>
+JcC<$iW&iVp](0lp&FsjM?!MSJcGKEr;cltfDbdMQ1O&"JcEpnqZ-Zrrr at WMJcC<$JcD#8rrAb=
+rrD`lr;cZnr;c<dqZ-Hlr;_EKJcC<$s8W#tp](0lp&FsjO8o.Yj63cIp&G$lrVt:Err at WLn,DMA
+jlk=P`R4P_JcC<$JcDqRJ,~>
+JcC<$iW&iVp](0lp&FsjMuW_Us8W#tJcGECf1Z,DJP1RoaoD/:JcC<$JcC<$MuT=JoDeC^q>^Bn
+q>]sbJcC<$JcGcMr;cNjr;cZnqZ)QSr;c/#qdT;#_+XD"rrE#tcV+9<Vb?sgJP3IFqZ)3IJcC<$
+WW.J~>
+JcC<$iW&iVp](0lp&FsjMuW_Us8W#tJcGECf1Z,DJP1RoaoD/:JcC<$JcC<$MuT=JoDeC^q>^Bn
+q>]sbJcC<$JcGcMr;cNjr;cZnqZ)QSr;b+Anal55n_Ng:rrE#tqn)O at l`g,[rrDkkl^I4$mt:4V
+rGDLBr>,-:moG!4dnBQ<JcC<$JcD_LJ,~>
+JcC<$iW&iVp](0lp&FsjMuW_Us8W#tJcGECh>[<CrrADWlf`p"aoD/:JcC<$JcC<$MuWeWU!N`=
+oDeC^q>^Bnq>]sbJcC<$JcGcMr;cNjr;cZnqZ)QSr;c0Iqt%;roDegjrVt4CrrAtrrNaQEkO[g!
+g"jp#qZ)3IJcC<$WW.J~>
+JcC<$iW&iVp](0lp&FsjMuW_Us8W#tJcGECf1Z,DJP1RoaoD/:JcC<$JcC<$MuT=JoDeC^q>^Bn
+q>]sbJcC<$JcGcMr;cNjr;cZnqZ)QSr;c/#qdT;#_+XD"rrE#tcV+9<Vb?sgJP3IFqZ)3IJcC<$
+WW.J~>
+JcC<$iW&iVp](0lp&FsjMuW_Us8W#tJcGECf1Z,DJP1RoaoD/:JcC<$JcC<$MuT=JoDeC^q>^Bn
+q>]sbJcC<$JcGcMr;cNjr;cZnqZ)QSr;b+Anal55n_Ng:rrE#tqn)O at l`g,[rrDkkl^I4$mt:4V
+rGDLBr>,-:moG!4dnBQ<JcC<$JcD_LJ,~>
+JcC<$iW&iVp](0lp&FsjMuW_Us8W#tJcGECh>[<CrrADWlf`p"aoD/:JcC<$JcC<$MuWeWU!N`=
+oDeC^q>^Bnq>]sbJcC<$JcGcMr;cNjr;cZnqZ)QSr;c0Iqt%;roDegjrVt4CrrAtrrNaQEkO[g!
+g"jp#qZ)3IJcC<$WW.J~>
+JcC<$iW&iVp&Fsjq>^<lJcGZKO8o.YmJkj4rr at mKJcEdjpAfdEJcC<$JcCN*SH/3[q#L*fr;cTl
+pAfdEJcC<$qu?Tpp&Fsjq>^BnL]@5Oo54).s&Qs/mJk@&rr at UCJP4lnqZ)3IJcC<$U]5i~>
+JcC<$iW&iVp&Fsjq>^<lJcGZKO8o.YmJkj4rr at mKJcEdjpAfdEJcC<$JcCN*SH/3[q#L*fr;cTl
+pAfdEJcC<$qu?Tpp&Fsjq>^BnL]@5Oec,+1n*';tmJljkqo8$-nYQ6crMAnMm>gXfms+eJo4$f^
+JP4flqZ)3IJcC<$U]5i~>
+JcC<$iW&iVp&Fsjq>^<lJcGZKO8o.YmJl;Ip%/1`S+H+4JcEdjpAfdEJcC<$JcCN*rrAb-rrDTh
+q#L*fr;cTlpAfdEJcC<$qu?Tpp&Fsjq>^BnL]@5OoB>f;^]*X#bPqMAJc=p5n+5H#h;-E)qZ)3I
+JcC<$U]5i~>
+JcC<$iW&iVp&Fsjq>^<lJcGZKO8o.YmJkj4rr at mKJcEdjpAfdEJcC<$JcCN*SH/3[q#L*fr;cTl
+pAfdEJcC<$qu?Tpp&Fsjq>^BnL]@5Oo54).s&Qs/mJk@&rr at UCJP4lnqZ)3IJcC<$U]5i~>
+JcC<$iW&iVp&Fsjq>^<lJcGZKO8o.YmJkj4rr at mKJcEdjpAfdEJcC<$JcCN*SH/3[q#L*fr;cTl
+pAfdEJcC<$qu?Tpp&Fsjq>^BnL]@5Oec,+1n*';tmJljkqo8$-nYQ6crMAnMm>gXfms+eJo4$f^
+JP4flqZ)3IJcC<$U]5i~>
+JcC<$iW&iVp&Fsjq>^<lJcGZKO8o.YmJl;Ip%/1`S+H+4JcEdjpAfdEJcC<$JcCN*rrAb-rrDTh
+q#L*fr;cTlpAfdEJcC<$qu?Tpp&Fsjq>^BnL]@5OoB>f;^]*X#bPqMAJc=p5n+5H#h;-E)qZ)3I
+JcC<$U]5i~>
+JcC<$iW&iVp&Fsjq>^BnJcGWIr;_EKq>]2BrrAT_r;cXdJcE^hqZ)3IJcC<$JcC<$rVrDgJcC<$
+JcELbr;cHho)OLErrE*!rrDk3nRB=-qu?Tpq>\E,rr at UCJP5)tqZ)3IJcC<$Sc=3~>
+JcC<$iW&iVp&Fsjq>^BnJcGWIr;_EKq>]2BrrAT_r;cXdJcE^hqZ)3IJcC<$JcC<$rVrDgJcC<$
+JcELbr;cHho)OLErrE*!rrCgQn+6)5n_O*Br;cZnmCVbimA9g_n!`^*m=XkPo54).k>m.,j\,IN
+JcC<$JcD;@J,~>
+JcC<$iW&iVp&Fsjq>^BnJcGWIr;_EKq>]p_mIU>XSb)fXs7?-OJcE^hqZ)3IJcC<$JcC<$rVult
+TtgU-JcC<$JcELbr;cHho)OLErrE*!rrDlYnajTrqu?Tpq>\G5rr at WLn,DeIhrrbLe'\$mJcC<$
+JcD;@J,~>
+JcC<$iW&iVp&Fsjq>^BnJcGWIr;_EKq>]2BrrAT_r;cXdJcE^hqZ)3IJcC<$JcC<$rVrDgJcC<$
+JcELbr;cHho)OLErrE*!rrDk3nRB=-qu?Tpq>\E,rr at UCJP5)tqZ)3IJcC<$Sc=3~>
+JcC<$iW&iVp&Fsjq>^BnJcGWIr;_EKq>]2BrrAT_r;cXdJcE^hqZ)3IJcC<$JcC<$rVrDgJcC<$
+JcELbr;cHho)OLErrE*!rrCgQn+6)5n_O*Br;cZnmCVbimA9g_n!`^*m=XkPo54).k>m.,j\,IN
+JcC<$JcD;@J,~>
+JcC<$iW&iVp&Fsjq>^BnJcGWIr;_EKq>]p_mIU>XSb)fXs7?-OJcE^hqZ)3IJcC<$JcC<$rVult
+TtgU-JcC<$JcELbr;cHho)OLErrE*!rrDlYnajTrqu?Tpq>\G5rr at WLn,DeIhrrbLe'\$mJcC<$
+JcD;@J,~>
+JcC<$iW&iVoDeC^JcGKEr;_EKqu>JFrrAH[JcE^hq#H!GJcC<$JcC<$p]$caJcC<$JcELbr;cBf
+q#H!Gqu?Tpo4#I-n,L3srr at UCJP5B'q#H!GJcC<$QiDR~>
+JcC<$iW&iVoDeC^JcGKEr;_EKqu>JFrrAH[JcE^hq#H!GJcC<$JcC<$p]$caJcC<$JcELbr;cBf
+q#H!Gqu?Tpj8ST?n*';tn,Mden$)2UqjRNbopY?0m=XkPmqqN&moG!4k=bUNJcC<$JcD):J,~>
+JcC<$iW&iVoDeC^JcGKEr;_EKqu?Kkjn&KPRIc"0`W,`6JcC<$JcC<$JcGKErrAb-rr at WMJcC<$
+^]464nc/CbJcGWIr;cH\^]*^%_>aH7Jc>?AmIT<#ce[L+q#H!GJcC<$QiDR~>
+JcC<$iW&iVoDeC^JcGKEr;_EKqu>JFrrAH[JcE^hq#H!GJcC<$JcC<$p]$caJcC<$JcELbr;cBf
+q#H!Gqu?Tpo4#I-n,L3srr at UCJP5B'q#H!GJcC<$QiDR~>
+JcC<$iW&iVoDeC^JcGKEr;_EKqu>JFrrAH[JcE^hq#H!GJcC<$JcC<$p]$caJcC<$JcELbr;cBf
+q#H!Gqu?Tpj8ST?n*';tn,Mden$)2UqjRNbopY?0m=XkPmqqN&moG!4k=bUNJcC<$JcD):J,~>
+JcC<$iW&iVoDeC^JcGKEr;_EKqu?Kkjn&KPRIc"0`W,`6JcC<$JcC<$JcGKErrAb-rr at WMJcC<$
+^]464nc/CbJcGWIr;cH\^]*^%_>aH7Jc>?AmIT<#ce[L+q#H!GJcC<$QiDR~>
+JcC<$iW&iVnc/CbJcGECr;cltr;`nur;bILhb3tLThBt:_uKT6rVultJcC<$JcC<$JcGECSH+6@
+JcC<$JcD/<r;c_(^J"%q]hAA*QV7>YJP4lnqZ)3IJcC<$O8j_~>
+JcC<$iW&iVnc/CbJcGECr;cltr;`nur;bILhb3tLThBt:_uKT6rVultJcC<$JcC<$JcGECSH+6@
+JcC<$JcD/<r;c0_nal55n_N[6n%7tkn"o]GrrDqbmuHdfms+;<mpc)nrsSX'JP50!qZ)3IJcC<$
+O8j_~>
+JcC<$iW&iVnc/CbJcGECr;cltr;`nur;bILht-jJU%<j8_uKT6rVultJcC<$JcC<$JcGECrrAb-
+rr at WMJcC<$JcD/<r;c`d^]*^%^&J$3Qi@#jl2KZ5jljnDl-]A.JcC<$JcCf2J,~>
+JcC<$iW&iVnc/CbJcGECr;cltr;`nur;bILhb3tLThBt:_uKT6rVultJcC<$JcC<$JcGECSH+6@
+JcC<$JcD/<r;c_(^J"%q]hAA*QV7>YJP4lnqZ)3IJcC<$O8j_~>
+JcC<$iW&iVnc/CbJcGECr;cltr;`nur;bILhb3tLThBt:_uKT6rVultJcC<$JcC<$JcGECSH+6@
+JcC<$JcD/<r;c0_nal55n_N[6n%7tkn"o]GrrDqbmuHdfms+;<mpc)nrsSX'JP50!qZ)3IJcC<$
+O8j_~>
+JcC<$iW&iVnc/CbJcGECr;cltr;`nur;bILht-jJU%<j8_uKT6rVultJcC<$JcC<$JcGECrrAb-
+rr at WMJcC<$JcD/<r;c`d^]*^%^&J$3Qi@#jl2KZ5jljnDl-]A.JcC<$JcCf2J,~>
+JcC<$JcDqRrr at WMrVthLrrB#kJcERdqZ)3IJcC<$JcC<$l2R:SJcC<$JcC<$Q2gd__+Xh.r;cNj
+\P)r&PtV,WJP50!qZ)3IJcC<$M>r)~>
+JcC<$JcDqRrr at WMrVthLrrB#kJcERdqZ)3IJcC<$JcC<$l2R:SJcC<$JcC<$Q2gd_oD\:On`]Gt
+s8W#tp&FKmn$)8Wn!a7VmuHdfms+;<mpbffrr at UCk=b[PJcC<$JcCT,J,~>
+JcC<$JcDqRrr at WMrVtjJrrB%iJcERdqZ)3IJcC<$JcC<$l2Ub`TtgU-JcC<$JcC<$Q2gd__>aK7
+r;cNj\c2U/Q2^fhnc%A9iTSD>o?mF8JcC<$JcCT,J,~>
+JcC<$JcDqRrr at WMrVthLrrB#kJcERdqZ)3IJcC<$JcC<$l2R:SJcC<$JcC<$Q2gd__+Xh.r;cNj
+\P)r&PtV,WJP50!qZ)3IJcC<$M>r)~>
+JcC<$JcDqRrr at WMrVthLrrB#kJcERdqZ)3IJcC<$JcC<$l2R:SJcC<$JcC<$Q2gd_oD\:On`]Gt
+s8W#tp&FKmn$)8Wn!a7VmuHdfms+;<mpbffrr at UCk=b[PJcC<$JcCT,J,~>
+JcC<$JcDqRrr at WMrVtjJrrB%iJcERdqZ)3IJcC<$JcC<$l2Ub`TtgU-JcC<$JcC<$Q2gd__>aK7
+r;cNj\c2U/Q2^fhnc%A9iTSD>o?mF8JcC<$JcCT,J,~>
+JcC<$JcDkPr;a\6r;ab8j%KCPY=mdQr;_EKl2UDVJcC<$JcC<$JcFp5SH+6 at JcC<$JcCr6qZ+f4
+n,K^err at UCJP6#9qZ)3IJcC<$KE$H~>
+JcC<$JcDkPr;a\6r;ab8j%KCPY=mdQr;_EKl2UDVJcC<$JcC<$JcFp5SH+6 at JcC<$JcCr6qZ-To
+nal55n_N[6n%8%mmA99?rJpmXooAKnm<J):nRCrfJP5)tqZ)3IJcC<$KE$H~>
+JcC<$JcDkPr;a\6r;ab8j7E9NYOgZOr;_EKl2UDVJcC<$JcC<$JcFp5rrAb-rr at WMJcC<$JcCr6
+qZ+h=n,K`nrr at WLs8M3Qh<<,>o?mF8JcC<$JcCB&J,~>
+JcC<$JcDkPr;a\6r;ab8j%KCPY=mdQr;_EKl2UDVJcC<$JcC<$JcFp5SH+6 at JcC<$JcCr6qZ+f4
+n,K^err at UCJP6#9qZ)3IJcC<$KE$H~>
+JcC<$JcDkPr;a\6r;ab8j%KCPY=mdQr;_EKl2UDVJcC<$JcC<$JcFp5SH+6 at JcC<$JcCr6qZ-To
+nal55n_N[6n%8%mmA99?rJpmXooAKnm<J):nRCrfJP5)tqZ)3IJcC<$KE$H~>
+JcC<$JcDkPr;a\6r;ab8j7E9NYOgZOr;_EKl2UDVJcC<$JcC<$JcFp5rrAb-rr at WMJcC<$JcCr6
+qZ+h=n,K`nrr at WLs8M3Qh<<,>o?mF8JcC<$JcCB&J,~>
+JcC<$JcD_Lr;_EKj\,UR[nD;P_>jB4JcC<$JcC<$JcFL)SH+6 at JcC<$JcC`0r;bGBr;c<dY=nlq
+JP1\iqZ)EOrr at WMJcC<$q>Ys~>
+JcC<$JcD_Lr;_EKj\,UR[nD;P_>jB4JcC<$JcC<$JcFL)SH+6 at JcC<$JcC`0r;cN^n`]T#rK6RK
+n%8%mn"oKApQ#7Rqi:,tms+;<mpb`dJP5)tqZ)EOrr at WMJcC<$q>Ys~>
+JcC<$JcD_Lr;_EKjn&KP\+>1N_>jB4JcC<$JcC<$JcFL)rrAb-rr at WMJcC<$JcC`0r;bIKrNbnl
+YQ"P%Jc>WIn+5;takcd?qZ)EOrr at WMJcC<$q>Ys~>
+JcC<$JcD_Lr;_EKj\,UR[nD;P_>jB4JcC<$JcC<$JcFL)SH+6 at JcC<$JcC`0r;bGBr;c<dY=nlq
+JP1\iqZ)EOrr at WMJcC<$q>Ys~>
+JcC<$JcD_Lr;_EKj\,UR[nD;P_>jB4JcC<$JcC<$JcFL)SH+6 at JcC<$JcC`0r;cN^n`]T#rK6RK
+n%8%mn"oKApQ#7Rqi:,tms+;<mpb`dJP5)tqZ)EOrr at WMJcC<$q>Ys~>
+JcC<$JcD_Lr;_EKjn&KP\+>1N_>jB4JcC<$JcC<$JcFL)rrAb-rr at WMJcC<$JcC`0r;bIKrNbnl
+YQ"P%Jc>WIn+5;takcd?qZ)EOrr at WMJcC<$q>Ys~>
+JcC<$JcD_Lq#K%HrrB8&k=bgT]h<qV_>j<2JcG]Krr at WMJcC<$JcFR+SH+6 at JcC<$JcCT,rrCeH
+n,K@[rr at gIrr@gIqZ)9Kr;cBfq#H!GJcCl4J,~>
+JcC<$JcD_Lq#K%HrrB8&k=bgT]h<qV_>j<2JcG]Krr at WMJcC<$JcFR+SH+6 at JcC<$JcCT,rrE#h
+n*';tn,Mjgn$)8Wn!`d,rrDM?ms+;<mpbN^k=bgTLJ.LEKE(lMnc/CbJcC<$OoKq~>
+JcC<$JcD_Lq#K%HrrB8&kO\]R^%6gT_>j<2JcG]Krr at WMJcC<$JcFR+rrAb-rr at WMJcC<$JcCT,
+rrCgQn,KBdrr at iRs0D\(kO[BjbME$qKE(lMnc/CbJcC<$OoKq~>
+JcC<$JcD_Lq#K%HrrB8&k=bgT]h<qV_>j<2JcG]Krr at WMJcC<$JcFR+SH+6 at JcC<$JcCT,rrCeH
+n,K@[rr at gIrr@gIqZ)9Kr;cBfq#H!GJcCl4J,~>
+JcC<$JcD_Lq#K%HrrB8&k=bgT]h<qV_>j<2JcG]Krr at WMJcC<$JcFR+SH+6 at JcC<$JcCT,rrE#h
+n*';tn,Mjgn$)8Wn!`d,rrDM?ms+;<mpbN^k=bgTLJ.LEKE(lMnc/CbJcC<$OoKq~>
+JcC<$JcD_Lq#K%HrrB8&kO\]R^%6gT_>j<2JcG]Krr at WMJcC<$JcFR+rrAb-rr at WMJcC<$JcCT,
+rrCgQn,KBdrr at iRs0D\(kO[BjbME$qKE(lMnc/CbJcC<$OoKq~>
+JcC<$JcDGDr;b[RrrB,"ktD$V`Ckd^^]402JcGKEr;cBfq#H!GJcC<$JcGECSH+6 at JcC<$JcCN*
+r;bkNnc, at Wrr@aGrrA*QqZ)3Is8VrroDeI`JcC<$PQ-.~>
+JcC<$JcDGDr;b[RrrB,"ktD$V`Ckd^^]402JcGKEr;cBfq#H!GJcC<$JcGECSH+6 at JcC<$JcCN*
+r;cNSn(mO6n%8%mn"oKAmuI@!rrD_Ems+;<mpb0TktD$VO%]?MJcGcMqZ-6fo`0RCJcCr6J,~>
+JcC<$JcDGDr;b[RrrB,"l1=oT`UeZ\^]402JcGKEr;cBfq#H!GJcC<$JcGECrrAb-rr at WMJcC<$
+JcCN*r;bmWnc,B`rr at oTrU^&ejn%<lce\HuJcGcMqZ-6fo`0RCJcCr6J,~>
+JcC<$JcDGDr;b[RrrB,"ktD$V`Ckd^^]402JcGKEr;cBfq#H!GJcC<$JcGECSH+6 at JcC<$JcCN*
+r;bkNnc, at Wrr@aGrrA*QqZ)3Is8VrroDeI`JcC<$PQ-.~>
+JcC<$JcDGDr;b[RrrB,"ktD$V`Ckd^^]402JcGKEr;cBfq#H!GJcC<$JcGECSH+6 at JcC<$JcCN*
+r;cNSn(mO6n%8%mn"oKAmuI@!rrD_Ems+;<mpb0TktD$VO%]?MJcGcMqZ-6fo`0RCJcCr6J,~>
+JcC<$JcDGDr;b[RrrB,"l1=oT`UeZ\^]402JcGKEr;cBfq#H!GJcC<$JcGECrrAb-rr at WMJcC<$
+JcCN*r;bmWnc,B`rr at oTrU^&ejn%<lce\HuJcGcMqZ-6fo`0RCJcCr6J,~>
+JcC<$JcD;@r;_WQlV%6XbtG>ArrA2]q#H!GoDe[foDeI`JcC<$JcC<$p]$caJcC<$JcC<$L&_#M
+nOrf\nc,.Qrr at UCQV72UJcGcMo`4[br;cZnr;_EKJcD#8J,~>
+JcC<$JcD;@r;_WQlV%6XbtG>ArrA2]q#H!GoDe[foDeI`JcC<$JcC<$p]$caJcC<$JcC<$L&_#M
+s60(1rK6XMn%8%mn"oKAmuI-prrDqKms+;<mpb*RJP5`1qZ)3Is8V`lp&Fsjq>^BnJcC<$Q2c@~>
+JcC<$JcD;@r;_WQlgt,Vc1A4?rrA2]q#H!GoDe[foDeI`JcC<$JcC<$p](6nTs+IrJcC<$JcC<$
+L&_#Mnc&Kmnc,0ZrrA,Zh=KIddG=["JcGcMo`4[br;cZnr;_EKJcD#8J,~>
+JcC<$JcD;@r;_WQlV%6XbtG>ArrA2]q#H!GoDe[foDeI`JcC<$JcC<$p]$caJcC<$JcC<$L&_#M
+nOrf\nc,.Qrr at UCQV72UJcGcMo`4[br;cZnr;_EKJcD#8J,~>
+JcC<$JcD;@r;_WQlV%6XbtG>ArrA2]q#H!GoDe[foDeI`JcC<$JcC<$p]$caJcC<$JcC<$L&_#M
+s60(1rK6XMn%8%mn"oKAmuI-prrDqKms+;<mpb*RJP5`1qZ)3Is8V`lp&Fsjq>^BnJcC<$Q2c@~>
+JcC<$JcD;@r;_WQlgt,Vc1A4?rrA2]q#H!GoDe[foDeI`JcC<$JcC<$p](6nTs+IrJcC<$JcC<$
+L&_#Mnc&Kmnc,0ZrrA,Zh=KIddG=["JcGcMo`4[br;cZnr;_EKJcD#8J,~>
+JcC<$JcD/<r;cNjr;`8cm7[HZdn?\?rrAJeqZ-Zrr;_EKp]'mdp&Fsjq>^BnJcC<$JcC<$q>Zuc
+JcC<$JcC<$JcGcMr;cRbn,JeKrr at UCT1et[JcGQGo`4[br;cZnr;_EKJcD#8J,~>
+JcC<$JcD/<r;cNjr;`8cm7[HZdn?\?rrAJeqZ-Zrr;_EKp]'mdp&Fsjq>^BnJcC<$JcC<$q>Zuc
+JcC<$JcC<$JcGcMr;cTJn,Mpin$)8Wn!`^*nUpiAms+;<mpb*RJP5f3q#H!Gq>^*fp&Fsjq>^Bn
+JcC<$Q2c@~>
+JcC<$JcD/<r;cNjr;`8cmIU>Xe+9R=rrAJeqZ-Zrr;_EKp]'mdp&Fsjq>^BnJcC<$JcC<$q>^Hp
+Ts+IrJcC<$JcC<$JcGcMr;cTkn,JgTrrA>`ht,7Zh;.l,JcGQGo`4[br;cZnr;_EKJcD#8J,~>
+JcC<$JcD/<r;cNjr;`8cm7[HZdn?\?rrAJeqZ-Zrr;_EKp]'mdp&Fsjq>^BnJcC<$JcC<$q>Zuc
+JcC<$JcC<$JcGcMr;cRbn,JeKrr at UCT1et[JcGQGo`4[br;cZnr;_EKJcD#8J,~>
+JcC<$JcD/<r;cNjr;`8cm7[HZdn?\?rrAJeqZ-Zrr;_EKp]'mdp&Fsjq>^BnJcC<$JcC<$q>Zuc
+JcC<$JcC<$JcGcMr;cTJn,Mpin$)8Wn!`^*nUpiAms+;<mpb*RJP5f3q#H!Gq>^*fp&Fsjq>^Bn
+JcC<$Q2c@~>
+JcC<$JcD/<r;cNjr;`8cmIU>Xe+9R=rrAJeqZ-Zrr;_EKp]'mdp&Fsjq>^BnJcC<$JcC<$q>^Hp
+Ts+IrJcC<$JcC<$JcGcMr;cTkn,JgTrrA>`ht,7Zh;.l,JcGQGo`4[br;cZnr;_EKJcD#8J,~>
+JcC<$JcD/<rrE*!r;_]SnOrl^gIm+t^&Rs0JcG'9o`4[br;cZnr;_EKJcC<$JcGQGSH+6 at JcC<$
+JcC<$rVu`pn,JSErr at UCV+^[cJcG!7r;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcD/<rrE*!r;_]SnOrl^gIm+t^&Rs0JcG'9o`4[br;cZnr;_EKJcC<$JcGQGSH+6 at JcC<$
+JcC<$rVu`pn,N:)pUfmun"oKAmuHjhrHS>Bom#qBk at 3ORJP5f3qZ)3Il2U\^p](0lp&FsjJcC<$
+QiDR~>
+JcC<$JcD/<rrE*!r;_]Snalb\g[g!r^&Rs0JcG'9o`4[br;cZnr;_EKJcC<$JcGQGrrAarrr at WM
+JcC<$JcC<$rVu`pn,JUNrrA2\kOZgZkM?"8JcG!7r;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcD/<rrE*!r;_]SnOrl^gIm+t^&Rs0JcG'9o`4[br;cZnr;_EKJcC<$JcGQGSH+6 at JcC<$
+JcC<$rVu`pn,JSErr at UCV+^[cJcG!7r;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcD/<rrE*!r;_]SnOrl^gIm+t^&Rs0JcG'9o`4[br;cZnr;_EKJcC<$JcGQGSH+6 at JcC<$
+JcC<$rVu`pn,N:)pUfmun"oKAmuHjhrHS>Bom#qBk at 3ORJP5f3qZ)3Il2U\^p](0lp&FsjJcC<$
+QiDR~>
+JcC<$JcD/<rrE*!r;_]Snalb\g[g!r^&Rs0JcG'9o`4[br;cZnr;_EKJcC<$JcGQGrrAarrr at WM
+JcC<$JcC<$rVu`pn,JUNrrA2\kOZgZkM?"8JcG!7r;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcD):r;cltr;_cUo1T)`iCeb%^]4$.JcFX-r;cTlr;cNjr;_EKJcC<$JcGWISH+6 at JcC<$
+JcCB&qZ-NnrrDfnND'9OJP5`1r;aB$q#H!Gjo>8Zp](0lp&FsjJcC<$QiDR~>
+JcC<$JcD):r;cltr;_cUo1T)`iCeb%^]4$.JcFX-r;cTlr;cNjr;_EKJcC<$JcGWISH+6 at JcC<$
+JcCB&qZ-NnrrDfno>^gBn$)8Wn!`^*mt:@ZrrDq at mqplimoID#r;aB$q#H!Gjo>8Zp](0lp&Fsj
+JcC<$QiDR~>
+JcC<$JcD):r;cltr;_cUoCMt^iU_X#^]4$.JcFX-r;cTlr;cNjr;_EKJcC<$JcGWIrrAarrr at WM
+JcC<$JcCB&qZ-NnrrDfnNW/qXOoFP8rMRj&n(md>JcFj3r;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcD):r;cltr;_cUo1T)`iCeb%^]4$.JcFX-r;cTlr;cNjr;_EKJcC<$JcGWISH+6 at JcC<$
+JcCB&qZ-NnrrDfnND'9OJP5`1r;aB$q#H!Gjo>8Zp](0lp&FsjJcC<$QiDR~>
+JcC<$JcD):r;cltr;_cUo1T)`iCeb%^]4$.JcFX-r;cTlr;cNjr;_EKJcC<$JcGWISH+6 at JcC<$
+JcCB&qZ-NnrrDfno>^gBn$)8Wn!`^*mt:@ZrrDq at mqplimoID#r;aB$q#H!Gjo>8Zp](0lp&Fsj
+JcC<$QiDR~>
+JcC<$JcD):r;cltr;_cUoCMt^iU_X#^]4$.JcFX-r;cTlr;cNjr;_EKJcC<$JcGWIrrAarrr at WM
+JcC<$JcCB&qZ-NnrrDfnNW/qXOoFP8rMRj&n(md>JcFj3r;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcD;@qZ-Bjr;_iWoh5;bk=^U1rrB\2qZ)3Iec5RJp](0lp&FsjJcC<$JcC<$qu<2eJcC<$
+JcC<$M?!GQoDeahLJ.XIJP37 at qZ)3Ih>dERp](0lp&FsjJcC<$QiDR~>
+JcC<$JcD;@qZ-Bjr;_iWoh5;bk=^U1rrB\2qZ)3Iec5RJp](0lp&FsjJcC<$JcC<$qu<2eJcC<$
+JcC<$M?!GQoDeahn](%%n"oKAmuHjhnTb'6mqplinQ(36pIkA`JcFR+r;cTlr;cNjr;_EKJcD):
+J,~>
+JcC<$JcD;@qZ-Bjr;_iWp%/1`kOXK/rrB\2qZ)3Iec5RJp](0lp&FsjJcC<$JcC<$qu?ZrTs+Ir
+JcC<$JcC<$M?!GQoDeahL]7;RQi>h4bNSWTqZ)3Ih>dERp](0lp&FsjJcC<$QiDR~>
+JcC<$JcD;@qZ-Bjr;_iWoh5;bk=^U1rrB\2qZ)3Iec5RJp](0lp&FsjJcC<$JcC<$qu<2eJcC<$
+JcC<$M?!GQoDeahLJ.XIJP37 at qZ)3Ih>dERp](0lp&FsjJcC<$QiDR~>
+JcC<$JcD;@qZ-Bjr;_iWoh5;bk=^U1rrB\2qZ)3Iec5RJp](0lp&FsjJcC<$JcC<$qu<2eJcC<$
+JcC<$M?!GQoDeahn](%%n"oKAmuHjhnTb'6mqplinQ(36pIkA`JcFR+r;cTlr;cNjr;_EKJcD):
+J,~>
+JcC<$JcD;@qZ-Bjr;_iWp%/1`kOXK/rrB\2qZ)3Iec5RJp](0lp&FsjJcC<$JcC<$qu?ZrTs+Ir
+JcC<$JcC<$M?!GQoDeahL]7;RQi>h4bNSWTqZ)3Ih>dERp](0lp&FsjJcC<$QiDR~>
+JcC<$JcDMFqZ-$`r;_iWq+L_fmn863rVult_uKT6JcF'rr;cTlr;cNjr;_EKJcC<$JcGWISH+6@
+JcC<$JcCZ.rrDBbqZ)OIrr at UC[nHSuJcF@%r;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcDMFqZ-$`r;_iWq+L_fmn863rVult_uKT6JcF'rr;cTlr;cNjr;_EKJcC<$JcGWISH+6@
+JcC<$JcCZ.rrDBbqZ-N5n$)8Wn!`^*mt:(RrGDQ7okiSqmoG!4pIkA`JcF@%r;cTlr;cNjr;_EK
+JcD):J,~>
+JcC<$JcDMFqZ-$`r;_iWq=FUdn+2,1rVult_uKT6JcF'rr;cTlr;cNjr;_EKJcC<$JcGWIrrAar
+rr at WMJcC<$JcCZ.rrDBbqZ)QRrrAVhh=JhRp"fKFJcF@%r;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcDMFqZ-$`r;_iWq+L_fmn863rVult_uKT6JcF'rr;cTlr;cNjr;_EKJcC<$JcGWISH+6@
+JcC<$JcCZ.rrDBbqZ)OIrr at UC[nHSuJcF@%r;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcDMFqZ-$`r;_iWq+L_fmn863rVult_uKT6JcF'rr;cTlr;cNjr;_EKJcC<$JcGWISH+6@
+JcC<$JcCZ.rrDBbqZ-N5n$)8Wn!`^*mt:(RrGDQ7okiSqmoG!4pIkA`JcF@%r;cTlr;cNjr;_EK
+JcD):J,~>
+JcC<$JcDMFqZ-$`r;_iWq=FUdn+2,1rVult_uKT6JcF'rr;cTlr;cNjr;_EKJcC<$JcGWIrrAar
+rr at WMJcC<$JcCZ.rrDBbqZ)QRrrAVhh=JhRp"fKFJcF@%r;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcDSHrrD6^rrE*!r;_oYqb-qhoh0l9^]4*0s8W*!JcF!pr;cTlr;cNjr;_EKJcC<$JcGWI
+SH+6 at JcC<$JcC<$mJm+bO%]KQJP3[Lq#H!Ge,T at Hp](0lp&FsjJcC<$QiDR~>
+JcC<$JcDSHrrD6^rrE*!r;_oYqb-qhoh0l9^]4*0s8W*!JcF!pr;cTlr;cNjr;_EKJcC<$JcGWI
+SH+6 at JcC<$JcC<$mJm+bo<@\[n!`^*mt:(RpMKp1qeb5"moG!4pIk;^JcF4!r;cTlr;cNjr;_EK
+JcD):J,~>
+JcC<$JcDSHrrD6^rrE*!r;_oYqt'gfp%*b7^]4*0s8W*!JcF!pr;cTlr;cNjr;_EKJcC<$JcGWI
+rrAarrr at WMJcC<$JcC<$mJm+bO8f.ZU]0*@_<CpTq#H!Ge,T at Hp](0lp&FsjJcC<$QiDR~>
+JcC<$JcDSHrrD6^rrE*!r;_oYqb-qhoh0l9^]4*0s8W*!JcF!pr;cTlr;cNjr;_EKJcC<$JcGWI
+SH+6 at JcC<$JcC<$mJm+bO%]KQJP3[Lq#H!Ge,T at Hp](0lp&FsjJcC<$QiDR~>
+JcC<$JcDSHrrD6^rrE*!r;_oYqb-qhoh0l9^]4*0s8W*!JcF!pr;cTlr;cNjr;_EKJcC<$JcGWI
+SH+6 at JcC<$JcC<$mJm+bo<@\[n!`^*mt:(RpMKp1qeb5"moG!4pIk;^JcF4!r;cTlr;cNjr;_EK
+JcD):J,~>
+JcC<$JcDSHrrD6^rrE*!r;_oYqt'gfp%*b7^]4*0s8W*!JcF!pr;cTlr;cNjr;_EKJcC<$JcGWI
+rrAarrr at WMJcC<$JcC<$mJm+bO8f.ZU]0*@_<CpTq#H!Ge,T at Hp](0lp&FsjJcC<$QiDR~>
+JcC<$JcCN*rrE#tr;_oYs%E at lrC__A^&Rs0JcERdr;cTlr;cNjr;_EKJcC<$JcGWISH+6 at JcC<$
+JcC<$l2U\^P=toUJP50!rrCqLqZ)3IbQ%M at p](0lp&FsjJcC<$QiDR~>
+JcC<$JcCN*rrE#tr;_oYs%E at lrC__A^&Rs0JcERdr;cTlr;cNjr;_EKJcC<$JcGWISH+6 at JcC<$
+JcC<$l2U\^rNPaen!`^*mt:(RnSS:+hdZ%TRnNb]hb3hHJcEpnr;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcCN*rrE#tr;_oYs7?6jrUYU?^&Rs0JcERdr;cTlr;cNjr;_EKJcC<$JcGWIrrAarrr at WM
+JcC<$JcC<$l2U\^PQ(R^WW(N at l0//;hrsq;JcEpnr;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcCN*rrE#tr;_oYs%E at lrC__A^&Rs0JcERdr;cTlr;cNjr;_EKJcC<$JcGWISH+6 at JcC<$
+JcC<$l2U\^P=toUJP50!rrCqLqZ)3IbQ%M at p](0lp&FsjJcC<$QiDR~>
+JcC<$JcCN*rrE#tr;_oYs%E at lrC__A^&Rs0JcERdr;cTlr;cNjr;_EKJcC<$JcGWISH+6 at JcC<$
+JcC<$l2U\^rNPaen!`^*mt:(RnSS:+hdZ%TRnNb]hb3hHJcEpnr;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcCN*rrE#tr;_oYs7?6jrUYU?^&Rs0JcERdr;cTlr;cNjr;_EKJcC<$JcGWIrrAarrr at WM
+JcC<$JcC<$l2U\^PQ(R^WW(N at l0//;hrsq;JcEpnr;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcC<$rVufrOoPF]JcFR+rrD0\pAfdE^]464p](0lp&FsjJcC<$JcC<$qu<2eJcC<$JcC<$
+JcFj3r;`0Wrr at UCj\,URk=b[PJcE^hr;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcC<$rVufrOoPF]JcFR+rrD0\pAfdE^]464p](0lp&FsjJcC<$JcC<$qu<2eJcC<$JcC<$
+JcFj3r;cMen!`^*mt:.Tmqqr2rrD.imoGWFrrD4TqZ)3I`W,l:p](0lp&FsjJcC<$QiDR~>
+JcC<$JcC<$rVufrOoPF]JcFR+rrD0\pAfdE^]464p](0lp&FsjJcC<$JcC<$qu?ZrTqD>bJcC<$
+JcC<$JcFj3r;`2`rrB8%c1C8bs.&99qZ)3I`W,l:p](0lp&FsjJcC<$QiDR~>
+JcC<$JcC<$rVufrOoPF]JcFR+rrD0\pAfdE^]464p](0lp&FsjJcC<$JcC<$qu<2eJcC<$JcC<$
+JcFj3r;`0Wrr at UCj\,URk=b[PJcE^hr;cTlr;cNjr;_EKJcD):J,~>
+JcC<$JcC<$rVufrOoPF]JcFR+rrD0\pAfdE^]464p](0lp&FsjJcC<$JcC<$qu<2eJcC<$JcC<$
+JcFj3r;cMen!`^*mt:.Tmqqr2rrD.imoGWFrrD4TqZ)3I`W,l:p](0lp&FsjJcC<$QiDR~>
+JcC<$JcC<$rVufrOoPF]JcFR+rrD0\pAfdE^]464p](0lp&FsjJcC<$JcC<$qu?ZrTqD>bJcC<$
+JcC<$JcFj3r;`2`rrB8%c1C8bs.&99qZ)3I`W,l:p](0lp&FsjJcC<$QiDR~>
+JcC<$JcC<$q>^HpPQ1X_JcFL)rrDHdqZ)3I[K$1*p](0lp&FsjJcC<$JcC<$qu<2eJcC<$JcC<$
+JcFj3qZ*$Wrr at UCd7a98JcELbr;cNjr;cZnqZ)3IJcD):J,~>
+JcC<$JcC<$q>^HpPQ1X_JcFL)rrDHdqZ)3I[K$1*p](0lp&FsjJcC<$JcC<$qu<2eJcC<$JcC<$
+JcFj3qZ-Skn!`^*nUp:Tmqq`,rrD at omoG!4q+LM`JcELbr;cNjr;cZnqZ)3IJcD):J,~>
+JcC<$JcC<$q>^HpPQ1X_JcFL)rrDHdqZ)3I[K$1*p](0lp&FsjJcC<$JcC<$qu?ZrTqD>bJcC<$
+JcC<$JcFj3qZ*&`rrBJ+c1B?Hq#H!G^]464p&Fsjq>^<lJcC<$QiDR~>
+JcC<$JcC<$q>^HpPQ1X_JcFL)rrDHdqZ)3I[K$1*p](0lp&FsjJcC<$JcC<$qu<2eJcC<$JcC<$
+JcFj3qZ*$Wrr at UCd7a98JcELbr;cNjr;cZnqZ)3IJcD):J,~>
+JcC<$JcC<$q>^HpPQ1X_JcFL)rrDHdqZ)3I[K$1*p](0lp&FsjJcC<$JcC<$qu<2eJcC<$JcC<$
+JcFj3qZ-Skn!`^*nUp:Tmqq`,rrD at omoG!4q+LM`JcELbr;cNjr;cZnqZ)3IJcD):J,~>
+JcC<$JcC<$q>^HpPQ1X_JcFL)rrDHdqZ)3I[K$1*p](0lp&FsjJcC<$JcC<$qu?ZrTqD>bJcC<$
+JcC<$JcFj3qZ*&`rrBJ+c1B?Hq#H!G^]464p&Fsjq>^<lJcC<$QiDR~>
+JcC<$JcC<$q>^<lQiI'cJcF!pq#H!GYQ+P$p&Fsjq>^<lJcC<$JcC<$qu<2eJcC<$JcC<$JcFX-
+r;`B]rr at UCf1Yu@JcE4Zr;cNjr;cZnr;_EKJcD#8J,~>
+JcC<$JcC<$q>^<lQiI'cJcF!pq#H!GYQ+P$p&Fsjq>^<lJcC<$JcC<$qu<2eJcC<$JcC<$JcFX-
+r;cMZnW*'jms+;<mpc:snRCrfJP5f3qZ)3I\,ZC,p&Fsjq>^BnJcC<$Q2c@~>
+JcC<$JcC<$q>^<lQiI'cJcF!pq#H!GYQ+P$p&Fsjq>^<lJcC<$JcC<$qu?ZrTqD>bJcC<$JcC<$
+JcFX-r;`DfrrB\1c1B?HqZ)3I\,ZC,p&Fsjq>^BnJcC<$Q2c@~>
+JcC<$JcC<$q>^<lQiI'cJcF!pq#H!GYQ+P$p&Fsjq>^<lJcC<$JcC<$qu<2eJcC<$JcC<$JcFX-
+r;`B]rr at UCf1Yu@JcE4Zr;cNjr;cZnr;_EKJcD#8J,~>
+JcC<$JcC<$q>^<lQiI'cJcF!pq#H!GYQ+P$p&Fsjq>^<lJcC<$JcC<$qu<2eJcC<$JcC<$JcFX-
+r;cMZnW*'jms+;<mpc:snRCrfJP5f3qZ)3I\,ZC,p&Fsjq>^BnJcC<$Q2c@~>
+JcC<$JcC<$q>^<lQiI'cJcF!pq#H!GYQ+P$p&Fsjq>^<lJcC<$JcC<$qu?ZrTqD>bJcC<$JcC<$
+JcFX-r;`DfrrB\1c1B?HqZ)3I\,ZC,p&Fsjq>^BnJcC<$Q2c@~>
+JcC<$JcC<$p](6ns8W#tS,`KgJcF4!qZ-Tprr at WMXoJ>"p&Fsjq>^BnJcC<$JcC<$q>ZucJcC<$
+JcC<$JcFL)r;`Narr at UCh+RJBJcE.Xr;cHho)O at AJcD#8J,~>
+JcC<$JcC<$p](6ns8W#tS,`KgJcF4!qZ-Tprr at WMXoJ>"p&Fsjq>^BnJcC<$JcC<$q>ZucJcC<$
+JcC<$JcFL)r;ckdnW*'jms+;<l!jYmpL<SlJP5f3pAfdE[K$1*oDeC^JcC<$Q2c@~>
+JcC<$JcC<$p](6ns8W#tS,`KgJcF4!qZ-Tprr at WMXoJ>"p&Fsjq>^BnJcC<$JcC<$q>^HpTqD>b
+JcC<$JcC<$JcFL)r;`PjrrBn7c1B?HpAfdE[K$1*oDeC^JcC<$Q2c@~>
+JcC<$JcC<$p](6ns8W#tS,`KgJcF4!qZ-Tprr at WMXoJ>"p&Fsjq>^BnJcC<$JcC<$q>ZucJcC<$
+JcC<$JcFL)r;`Narr at UCh+RJBJcE.Xr;cHho)O at AJcD#8J,~>
+JcC<$JcC<$p](6ns8W#tS,`KgJcF4!qZ-Tprr at WMXoJ>"p&Fsjq>^BnJcC<$JcC<$q>ZucJcC<$
+JcC<$JcFL)r;ckdnW*'jms+;<l!jYmpL<SlJP5f3pAfdE[K$1*oDeC^JcC<$Q2c@~>
+JcC<$JcC<$p](6ns8W#tS,`KgJcF4!qZ-Tprr at WMXoJ>"p&Fsjq>^BnJcC<$JcC<$q>^HpTqD>b
+JcC<$JcC<$JcFL)r;`PjrrBn7c1B?HpAfdE[K$1*oDeC^JcC<$Q2c@~>
+JcC<$JcC<$n,N=dTE"okJcFF'qZ-Tprr at WMVuQ\qoDeC^JcC<$JcC<$q>ZucJcC<$JcC<$JcF@%
+r;`Zerr at UCj%K7Lqu?TpJcE.Xr;cBfq#H!GJcCl4J,~>
+JcC<$JcC<$n,N=dTE"okJcFF'qZ-Tprr at WMVuQ\qoDeC^JcC<$JcC<$q>ZucJcC<$JcC<$JcF@%
+r;cYRmt:(Rmqq)orrE",moG!4q+LSbqu?TpJcE.Xr;cBfq#H!GJcCl4J,~>
+JcC<$JcC<$n,N=dTE"okJcFF'qZ-Tprr at WMVuQ\qoDeC^JcC<$JcC<$q>^HpTqD>bJcC<$JcC<$
+JcF@%r;`\nrrC1?bOa-FqZ-Nnr;_EK[K$1*nc/CbJcC<$OoKq~>
+JcC<$JcC<$n,N=dTE"okJcFF'qZ-Tprr at WMVuQ\qoDeC^JcC<$JcC<$q>ZucJcC<$JcC<$JcF@%
+r;`Zerr at UCj%K7Lqu?TpJcE.Xr;cBfq#H!GJcCl4J,~>
+JcC<$JcC<$n,N=dTE"okJcFF'qZ-Tprr at WMVuQ\qoDeC^JcC<$JcC<$q>ZucJcC<$JcC<$JcF@%
+r;cYRmt:(Rmqq)orrE",moG!4q+LSbqu?TpJcE.Xr;cBfq#H!GJcCl4J,~>
+JcC<$JcC<$n,N=dTE"okJcFF'qZ-Tprr at WMVuQ\qoDeC^JcC<$JcC<$q>^HpTqD>bJcC<$JcC<$
+JcF@%r;`\nrrC1?bOa-FqZ-Nnr;_EK[K$1*nc/CbJcC<$OoKq~>
+JcC<$JcC<$li6n`U]:>oJcF^/o`4gfr;_EKX8i+unc/CbJcC<$JcC<$p&CQ_JcC<$JcC<$JcF:#
+qZ*Tgrr at UCktCmRnc/OfJcC<$JcC<$XoEn~>
+JcC<$JcC<$li6n`U]:>oJcF^/o`4gfr;_EKX8i+unc/CbJcC<$JcC<$p&CQ_JcC<$JcC<$JcF:#
+qZ-/=ms+;<h.$BanQ(36q+LSbnc/OfJcC<$JcC<$XoEn~>
+JcC<$JcC<$li6n`U]:>oJcF^/o`4gfr;_EKX8i+unc/CbJcC<$JcC<$p&G$lTqD>bJcC<$JcC<$
+JcF:#qZ*VprrC1?bOa?LqZ-0dr;_EKJcC<$JcDkPJ,~>
+JcC<$JcC<$li6n`U]:>oJcF^/o`4gfr;_EKX8i+unc/CbJcC<$JcC<$p&CQ_JcC<$JcC<$JcF:#
+qZ*Tgrr at UCktCmRnc/OfJcC<$JcC<$XoEn~>
+JcC<$JcC<$li6n`U]:>oJcF^/o`4gfr;_EKX8i+unc/CbJcC<$JcC<$p&CQ_JcC<$JcC<$JcF:#
+qZ-/=ms+;<h.$BanQ(36q+LSbnc/OfJcC<$JcC<$XoEn~>
+JcC<$JcC<$li6n`U]:>oJcF^/o`4gfr;_EKX8i+unc/CbJcC<$JcC<$p&G$lTqD>bJcC<$JcC<$
+JcF:#qZ*VprrC1?bOa?LqZ-0dr;_EKJcC<$JcDkPJ,~>
+JcC<$JcC<$kPtJ\VuQbsJcFp5qZ,m\r;_EKJcC<$JcC<$L]<nFJcC<$JcC<$JcF4!rrE*!r;`rm
+rr at UCmn<NXs8W*!li6n`JcC<$JcC<$Z2]=~>
+JcC<$JcC<$kPtJ\VuQbsJcFp5qZ,m\r;_EKJcC<$JcC<$L]<nFJcC<$JcC<$JcF4!rrE*!r;c_I
+ms+;<h.$7^rrDjqJP5`1qZ-ZrrrDBbr;_EKJcC<$JcE"TJ,~>
+JcC<$JcC<$kPtJ\VuQbsJcFp5qZ,m\r;_EKJcC<$JcC<$L]@ASTqD>bJcC<$JcC<$JcF4!rrE*!
+r;`u!rrC%;bOa]VqZ-ZrrrDBbr;_EKJcC<$JcE"TJ,~>
+JcC<$JcC<$kPtJ\VuQbsJcFp5qZ,m\r;_EKJcC<$JcC<$L]<nFJcC<$JcC<$JcF4!rrE*!r;`rm
+rr at UCmn<NXs8W*!li6n`JcC<$JcC<$Z2]=~>
+JcC<$JcC<$kPtJ\VuQbsJcFp5qZ,m\r;_EKJcC<$JcC<$L]<nFJcC<$JcC<$JcF4!rrE*!r;c_I
+ms+;<h.$7^rrDjqJP5`1qZ-ZrrrDBbr;_EKJcC<$JcE"TJ,~>
+JcC<$JcC<$kPtJ\VuQbsJcFp5qZ,m\r;_EKJcC<$JcC<$L]@ASTqD>bJcC<$JcC<$JcF4!rrE*!
+r;`u!rrC%;bOa]VqZ-ZrrrDBbr;_EKJcC<$JcE"TJ,~>
+JcC<$JcC<$l2U\^s8W#tX8i2"JcG-;q#KCRr;_EKJcC<$JcC<$MuT=JJcC<$JcC<$X8h\iZ2ah(
+Y=nlqJP5Z/qZ,IPrr at WMJcC<$JcE(VJ,~>
+JcC<$JcC<$l2U\^s8W#tX8i2"JcG-;q#KCRr;_EKJcC<$JcC<$MuT=JJcC<$JcC<$X8h\iZ2ah(
+nTaA:j'qU\rrE("JP5`1qZ,IPrr at WMJcC<$JcE(VJ,~>
+JcC<$JcC<$l2U\^s8W#tX8i2"JcG-;q#KCRr;_EKJcC<$JcC<$MuWeWTqD>bJcC<$JcC<$X8h\i
+Z2ah(YQ"P%ao9KTj66@?h>dKTJcC<$JcC<$Zi>O~>
+JcC<$JcC<$l2U\^s8W#tX8i2"JcG-;q#KCRr;_EKJcC<$JcC<$MuT=JJcC<$JcC<$X8h\iZ2ah(
+Y=nlqJP5Z/qZ,IPrr at WMJcC<$JcE(VJ,~>
+JcC<$JcC<$l2U\^s8W#tX8i2"JcG-;q#KCRr;_EKJcC<$JcC<$MuT=JJcC<$JcC<$X8h\iZ2ah(
+nTaA:j'qU\rrE("JP5`1qZ,IPrr at WMJcC<$JcE(VJ,~>
+JcC<$JcC<$l2U\^s8W#tX8i2"JcG-;q#KCRr;_EKJcC<$JcC<$MuWeWTqD>bJcC<$JcC<$X8h\i
+Z2ah(YQ"P%ao9KTj66@?h>dKTJcC<$JcC<$Zi>O~>
+JcC<$JcEdjnGoQgr;a&$rr at WMp&Fgfec5XLJcC<$JcC<$JcC`0SH+6 at JcC<$JcDeNnGocmr;a/s
+rr at UCqb-_bJcC<$JcC<$M>r)~>
+JcC<$JcEdjnGoQgr;a&$rr at WMp&Fgfec5XLJcC<$JcC<$JcC`0SH+6 at JcC<$JcDeNnGocmr;c_>
+iGIskm8j5eJP5l5q#H!GJcC<$JcCT,J,~>
+JcC<$JcEdjnGoQgr;a&$rr at WMp&Fgfec5XLJcC<$JcC<$JcC`0rrAaRrr at WMJcC<$JcDeNnGocm
+r;a2'rrCCEbOacXq#H!GJcC<$JcCT,J,~>
+JcC<$JcEdjnGoQgr;a&$rr at WMp&Fgfec5XLJcC<$JcC<$JcC`0SH+6 at JcC<$JcDeNnGocmr;a/s
+rr at UCqb-_bJcC<$JcC<$M>r)~>
+JcC<$JcEdjnGoQgr;a&$rr at WMp&Fgfec5XLJcC<$JcC<$JcC`0SH+6 at JcC<$JcDeNnGocmr;c_>
+iGIskm8j5eJP5l5q#H!GJcC<$JcCT,J,~>
+JcC<$JcEdjnGoQgr;a&$rr at WMp&Fgfec5XLJcC<$JcC<$JcC`0rrAaRrr at WMJcC<$JcDeNnGocm
+r;a2'rrCCEbOacXq#H!GJcC<$JcCT,J,~>
+JcC<$JcEdjnGoEcr;a2(rr at WMqu?NnJcC<$JcC<$JcC<$fDhBAJcC<$JcC<$X8i+uTE"ii[nH`$
+JP5k?JcC<$JcC<$JcC6~>
+JcC<$JcEdjnGoEcr;a2(rr at WMqu?NnJcC<$JcC<$JcC<$fDhBAJcC<$JcC<$X8i+uTE"iij)+6o
+k>qT_s&ObFqZ)3IJcC<$JcC<$J,~>
+JcC<$JcEdjnGoEcr;a2(rr at WMqu?NnJcC<$JcC<$JcC<$fDkjNTo]3RJcC<$JcC<$X8i+uTE"ii
+\,QC-ec*b`j66@?JcC<$JcC<$JcC6~>
+JcC<$JcEdjnGoEcr;a2(rr at WMqu?NnJcC<$JcC<$JcC<$fDhBAJcC<$JcC<$X8i+uTE"ii[nH`$
+JP5k?JcC<$JcC<$JcC6~>
+JcC<$JcEdjnGoEcr;a2(rr at WMqu?NnJcC<$JcC<$JcC<$fDhBAJcC<$JcC<$X8i+uTE"iij)+6o
+k>qT_s&ObFqZ)3IJcC<$JcC<$J,~>
+JcC<$JcEdjnGoEcr;a2(rr at WMqu?NnJcC<$JcC<$JcC<$fDkjNTo]3RJcC<$JcC<$X8i+uTE"ii
+\,QC-ec*b`j66@?JcC<$JcC<$JcC6~>
+JcC<$JcEdjr;`,_r;a>,rr at WMqZ-Zrrr@WMJcC<$JcC<$JcF:#SH+6 at JcC<$JcDeNr;`DgqZ+6$
+rr at mKq#H!GJcC<$JcC<$qu;0~>
+JcC<$JcEdjr;`,_r;a>,rr at WMqZ-Zrrr@WMJcC<$JcC<$JcF:#SH+6 at JcC<$JcDeNr;`DgqZ-##
+mpb6VrrE("MbEjGJcC<$JcC<$JcGWIJ,~>
+JcC<$JcEdjr;`,_r;a>,rr at WMqZ-Zrrr@WMJcC<$JcC<$JcF:#rrAaRrr at WMJcC<$JcDeNr;`Dg
+qZ+8-rrCgQ_=R-Zq#H!GJcC<$JcC<$qu;0~>
+JcC<$JcEdjr;`,_r;a>,rr at WMqZ-Zrrr@WMJcC<$JcC<$JcF:#SH+6 at JcC<$JcDeNr;`DgqZ+6$
+rr at mKq#H!GJcC<$JcC<$qu;0~>
+JcC<$JcEdjr;`,_r;a>,rr at WMqZ-Zrrr@WMJcC<$JcC<$JcF:#SH+6 at JcC<$JcDeNr;`DgqZ-##
+mpb6VrrE("MbEjGJcC<$JcC<$JcGWIJ,~>
+JcC<$JcEdjr;`,_r;a>,rr at WMqZ-Zrrr@WMJcC<$JcC<$JcF:#rrAaRrr at WMJcC<$JcDeNr;`Dg
+qZ+8-rrCgQ_=R-Zq#H!GJcC<$JcC<$qu;0~>
+JcC<$JcEdjr;`2ar;cltr;aJ0rr at iSqZ)3IJcC<$JcC<$JcEpnSH+6 at JcC<$JcDeNr;`2ar;aT*
+rrA*QqZ-Zrrr at WMJcC<$JcC<$p]#a~>
+JcC<$JcEdjr;`2ar;cltr;aJ0rr at iSqZ)3IJcC<$JcC<$JcEpnSH+6 at JcC<$JcDeNr;`2ar;cS/
+mpb*Rs%E at lO%]?Ms8W*!JcC<$JcC<$JcGKEJ,~>
+JcC<$JcEdjr;`2ar;cltr;aJ0rr at iSqZ)3IJcC<$JcC<$JcEpnrrAaRrr at WMJcC<$JcDeNr;`2a
+r;aV3rrD$W]CY^ZqZ-Zrrr at WMJcC<$JcC<$p]#a~>
+JcC<$JcEdjr;`2ar;cltr;aJ0rr at iSqZ)3IJcC<$JcC<$JcEpnSH+6 at JcC<$JcDeNr;`2ar;aT*
+rrA*QqZ-Zrrr at WMJcC<$JcC<$p]#a~>
+JcC<$JcEdjr;`2ar;cltr;aJ0rr at iSqZ)3IJcC<$JcC<$JcEpnSH+6 at JcC<$JcDeNr;`2ar;cS/
+mpb*Rs%E at lO%]?Ms8W*!JcC<$JcC<$JcGKEJ,~>
+JcC<$JcEdjr;`2ar;cltr;aJ0rr at iSqZ)3IJcC<$JcC<$JcEpnrrAaRrr at WMJcC<$JcDeNr;`2a
+r;aV3rrD$W]CY^ZqZ-Zrrr at WMJcC<$JcC<$p]#a~>
+JcC<$JcEdjr;_iWr;aV4rrA,[pAfdEJcC<$JcC<$JcEdjSH+6 at JcC<$JcDeNrrE*!pAgcar;a`.
+rrA<WqZ)3IJcC<$JcC<$mJh\~>
+JcC<$JcEdjr;_iWr;aV4rrA,[pAfdEJcC<$JcC<$JcEdjSH+6 at JcC<$JcDeNrrE*!pAgcar;c:q
+h,a>ErrA<WqZ)3IJcC<$JcC<$mJh\~>
+JcC<$JcEdjr;_iWr;aV4rrA,[pAfdEJcC<$JcC<$JcEdjrrAaRrr at WMJcC<$JcDeNrrE*!pAgca
+r;ab7rrD<_\b#LXqZ)3IJcC<$JcC<$mJh\~>
+JcC<$JcEdjr;_iWr;aV4rrA,[pAfdEJcC<$JcC<$JcEdjSH+6 at JcC<$JcDeNrrE*!pAgcar;a`.
+rrA<WqZ)3IJcC<$JcC<$mJh\~>
+JcC<$JcEdjr;_iWr;aV4rrA,[pAfdEJcC<$JcC<$JcEdjSH+6 at JcC<$JcDeNrrE*!pAgcar;c:q
+h,a>ErrA<WqZ)3IJcC<$JcC<$mJh\~>
+JcC<$JcEdjr;_iWr;aV4rrA,[pAfdEJcC<$JcC<$JcEdjrrAaRrr at WMJcC<$JcDeNrrE*!pAgca
+r;ab7rrD<_\b#LXqZ)3IJcC<$JcC<$mJh\~>
+JcC<$JcEdjrrE*!pAgEWr;ab8rrA>aqZ)3IJcC<$JcC<$JcEF`SH+6 at JcC<$JcDkPmf8jWrrC#2
+rrAN]q#H!GJcC<$JcC<$l2Q8~>
+JcC<$JcEdjrrE*!pAgEWr;ab8rrA>aqZ)3IJcC<$JcC<$JcEF`SH+6 at JcC<$JcDkPmf8jWrrDe&
+h,a,?rrAN]q#H!GJcC<$JcC<$l2Q8~>
+JcC<$JcEdjrrE*!pAgEWr;ab8rrA>aqZ)3IJcC<$JcC<$JcEF`rrAaRrr at WMJcC<$JcDkPmf8jW
+rrC%;rrDNeZ1IqXq#H!GJcC<$JcC<$l2Q8~>
+JcC<$JcEdjrrE*!pAgEWr;ab8rrA>aqZ)3IJcC<$JcC<$JcEF`SH+6 at JcC<$JcDkPmf8jWrrC#2
+rrAN]q#H!GJcC<$JcC<$l2Q8~>
+JcC<$JcEdjrrE*!pAgEWr;ab8rrA>aqZ)3IJcC<$JcC<$JcEF`SH+6 at JcC<$JcDkPmf8jWrrDe&
+h,a,?rrAN]q#H!GJcC<$JcC<$l2Q8~>
+JcC<$JcEdjrrE*!pAgEWr;ab8rrA>aqZ)3IJcC<$JcC<$JcEF`rrAaRrr at WMJcC<$JcDkPmf8jW
+rrC%;rrDNeZ1IqXq#H!GJcC<$JcC<$l2Q8~>
+JcC<$JcEjlmf8LMr;an<rrAPgqZ)3IJcC<$JcC<$JcE4ZSH+6 at JcC<$JcDkPr;cTlqZ*2eqZ+`2
+rrA`cqZ)3IJcC<$JcC<$iW"E~>
+JcC<$JcEjlmf8LMr;an<rrAPgqZ)3IJcC<$JcC<$JcE4ZSH+6 at JcC<$JcDkPr;cTlqZ*2eqZ,GQ
+m7[HZThG7_JcC<$JcC<$JcF^/J,~>
+JcC<$JcEjlmf8LMr;an<rrAPgqZ)3IJcC<$JcC<$JcE4ZrrAaRrr at WMJcC<$JcDkPr;cTlqZ*2e
+qZ+b;rrD`kXn2DiJcC<$JcC<$JcF^/J,~>
+JcC<$JcEjlmf8LMr;an<rrAPgqZ)3IJcC<$JcC<$JcE4ZSH+6 at JcC<$JcDkPr;cTlqZ*2eqZ+`2
+rrA`cqZ)3IJcC<$JcC<$iW"E~>
+JcC<$JcEjlmf8LMr;an<rrAPgqZ)3IJcC<$JcC<$JcE4ZSH+6 at JcC<$JcDkPr;cTlqZ*2eqZ,GQ
+m7[HZThG7_JcC<$JcC<$JcF^/J,~>
+JcC<$JcEjlmf8LMr;an<rrAPgqZ)3IJcC<$JcC<$JcE4ZrrAaRrr at WMJcC<$JcDkPr;cTlqZ*2e
+qZ+b;rrD`kXn2DiJcC<$JcC<$JcF^/J,~>
+JcC<$JcEjlr;cTlqZ)o]r;cltr;b%@rrAhoq#LHprr at WMJcC<$JcC<$JcE.XSH+6 at JcC<$JcD;@
+r;`2ar;b)8rrAriqZ)3IJcC<$JcC<$g])d~>
+JcC<$JcEjlr;cTlqZ)o]r;cltr;b%@rrAhoq#LHprr at WMJcC<$JcC<$JcE.XSH+6 at JcC<$JcD;@
+r;`2ar;c(_j\,URVb?meJcC<$JcC<$JcFL)J,~>
+JcC<$JcEjlr;cTlqZ)o]r;cltr;b%@rrAhoq#LHprr at WMJcC<$JcC<$JcE.XSH+6 at JcC<$JcD;@
+r;`2ar;b+ArrDrqXn2DiJcC<$JcC<$JcFL)J,~>
+JcC<$JcEjlr;cTlqZ)o]r;cltr;b%@rrAhoq#LHprr at WMJcC<$JcC<$JcE.XSH+6 at JcC<$JcD;@
+r;`2ar;b)8rrAriqZ)3IJcC<$JcC<$g])d~>
+JcC<$JcEjlr;cTlqZ)o]r;cltr;b%@rrAhoq#LHprr at WMJcC<$JcC<$JcE.XSH+6 at JcC<$JcD;@
+r;`2ar;c(_j\,URVb?meJcC<$JcC<$JcFL)J,~>
+JcC<$JcEjlr;cTlqZ)o]r;cltr;b%@rrAhoq#LHprr at WMJcC<$JcC<$JcE.XSH+6 at JcC<$JcD;@
+r;`2ar;b+ArrDrqXn2DiJcC<$JcC<$JcFL)J,~>
+JcC<$JcE:\r;_cUrrC=DrrB%uqZ)3IJcC<$JcC<$JcDeNo`2E"o`0RCJcC<$JcD5>r;`&]r;b5<
+rrB/opAfdEJcC<$JcC<$g&HR~>
+JcC<$JcE:\r;_cUrrC=DrrB%uqZ)3IJcC<$JcC<$JcDeNo`2E"o`0RCJcC<$JcD5>r;`&]r;cFi
+hb3tLX\8BgJcC<$JcC<$JcFF'J,~>
+JcC<$JcE:\r;_cUrrC=DrrB%uqZ)3IJcC<$JcC<$JcDeNo`2E"o`0RCJcC<$JcD5>r;`&]r;b7E
+rrB1mpAfdEJcC<$JcC<$g&HR~>
+JcC<$JcE:\r;_cUrrC=DrrB%uqZ)3IJcC<$JcC<$JcDeNo`2E"o`0RCJcC<$JcD5>r;`&]r;b5<
+rrB/opAfdEJcC<$JcC<$g&HR~>
+JcC<$JcE:\r;_cUrrC=DrrB%uqZ)3IJcC<$JcC<$JcDeNo`2E"o`0RCJcC<$JcD5>r;`&]r;cFi
+hb3tLX\8BgJcC<$JcC<$JcFF'J,~>
+JcC<$JcE:\r;_cUrrC=DrrB%uqZ)3IJcC<$JcC<$JcDeNo`2E"o`0RCJcC<$JcD5>r;`&]r;b7E
+rrB1mpAfdEJcC<$JcC<$g&HR~>
+JcC<$JcE:\r;_]Sr;b7FrrB8&pAfdEJcC<$JcC<$JcC<$JcC<$JcC<$JcFX-r;_oYr;bA at rrBAu
+qZ)3IJcC<$JcC<$ci8L~>
+JcC<$JcE:\r;_]Sr;b7FrrB8&pAfdEJcC<$JcC<$JcC<$JcC<$JcC<$JcFX-r;_oYr;cdsfh;>F
+ZV1/qJcC<$JcC<$JcF'rJ,~>
+JcC<$JcE:\r;_]Sr;b7FrrB8&pAfdEJcC<$JcC<$JcC<$JcC<$JcC<$JcFX-r;_oYr;bOMrU^$h
+Zh+%oJcC<$JcC<$JcF'rJ,~>
+JcC<$JcE:\r;_]Sr;b7FrrB8&pAfdEJcC<$JcC<$JcC<$JcC<$JcC<$JcFX-r;_oYr;bA at rrBAu
+qZ)3IJcC<$JcC<$ci8L~>
+JcC<$JcE:\r;_]Sr;b7FrrB8&pAfdEJcC<$JcC<$JcC<$JcC<$JcC<$JcFX-r;_oYr;cdsfh;>F
+ZV1/qJcC<$JcC<$JcF'rJ,~>
+JcC<$JcE:\r;_]Sr;b7FrrB8&pAfdEJcC<$JcC<$JcC<$JcC<$JcC<$JcFX-r;_oYr;bOMrU^$h
+Zh+%oJcC<$JcC<$JcF'rJ,~>
+JcE"TqZ-6fqZ)3IU]:8mL&_)Oec5XL\,Z7(JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$jo>8Zp&Fsj
+NW8qWf1Z,D]1_r"M?!)GJcC<$JcC<$dJn^~>
+JcE"TqZ-6fqZ)3IU]:8mL&_)Oec5XL\,Z7(JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$jo>8Zp&Fsj
+NW8qWf1Z,D]1_r"M?!)GJcC<$JcC<$dJn^~>
+JcE"TqZ-6fqZ)3IU]:8mL&_)Oec5XL\,Z7(JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$jo>8Zp&Fsj
+NW8qWiVrTCrrB\&q#H9OnGn.?JcC<$JcF-tJ,~>
+JcE"TqZ-6fqZ)3IU]:8mL&_)Oec5XL\,Z7(JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$jo>8Zp&Fsj
+NW8qWf1Z,D]1_r"M?!)GJcC<$JcC<$dJn^~>
+JcE"TqZ-6fqZ)3IU]:8mL&_)Oec5XL\,Z7(JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$jo>8Zp&Fsj
+NW8qWf1Z,D]1_r"M?!)GJcC<$JcC<$dJn^~>
+JcE"TqZ-6fqZ)3IU]:8mL&_)Oec5XL\,Z7(JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$jo>8Zp&Fsj
+NW8qWiVrTCrrB\&q#H9OnGn.?JcC<$JcF-tJ,~>
+JcE"TqZ-6fqZ)3IZiBt(p&FsjL&_/Qs8W#tg&M'P^&Rm.JcGWInGn.?JcC<$JcC<$JcC<$JcC<$
+JcC<$p&Fmhq>^BnM?!GQgIqPH_+XY*rVultL]?lEJcC<$JcC<$dJn^~>
+JcE"TqZ-6fqZ)3IZiBt(p&FsjL&_/Qs8W#tg&M'P^&Rm.JcGWInGn.?JcC<$JcC<$JcC<$JcC<$
+JcC<$p&Fmhq>^BnM?!GQgIqPH_+XY*rVultL]?lEJcC<$JcC<$dJn^~>
+JcE"TqZ-6fqZ)3IZiBt(p&FsjL&_/Qs8W#tg&M'P^&Rm.JcGWInGn.?JcC<$JcC<$JcC<$JcC<$
+JcC<$p&Fmhq>^BnM?!GQli-GGrrBn,qZ-Tprr at iSnGn.?JcC<$JcF-tJ,~>
+JcE"TqZ-6fqZ)3IZiBt(p&FsjL&_/Qs8W#tg&M'P^&Rm.JcGWInGn.?JcC<$JcC<$JcC<$JcC<$
+JcC<$p&Fmhq>^BnM?!GQgIqPH_+XY*rVultL]?lEJcC<$JcC<$dJn^~>
+JcE"TqZ-6fqZ)3IZiBt(p&FsjL&_/Qs8W#tg&M'P^&Rm.JcGWInGn.?JcC<$JcC<$JcC<$JcC<$
+JcC<$p&Fmhq>^BnM?!GQgIqPH_+XY*rVultL]?lEJcC<$JcC<$dJn^~>
+JcE"TqZ-6fqZ)3IZiBt(p&FsjL&_/Qs8W#tg&M'P^&Rm.JcGWInGn.?JcC<$JcC<$JcC<$JcC<$
+JcC<$p&Fmhq>^BnM?!GQli-GGrrBn,qZ-Tprr at iSnGn.?JcC<$JcF-tJ,~>
+JcDqRqZ-<hqZ)3IZiBn&q>^BnJcG`MrVufrh>dKT_uKT6JcG?AnGn.?JcC<$JcC<$JcC<$JcC<$
+c2[Y at oDe[fJcERdnGn4Ar;b_JrrC)4qZ)3Iqu?TpJcC<$JcC<$`W(G~>
+JcDqRqZ-<hqZ)3IZiBn&q>^BnJcG`MrVufrh>dKT_uKT6JcG?AnGn.?JcC<$JcC<$JcC<$JcC<$
+c2[Y at oDe[fJcERdnGn4Ar;b_JrrC)4qZ)3Iqu?TpJcC<$JcC<$`W(G~>
+JcDqRqZ-<hqZ)3IZiBn&q>^BnJcG`MrVufrh>dKT_uKT6JcG?AnGn.?JcC<$JcC<$JcC<$JcC<$
+c2[Y at oDe[fJcERdnGn4Ar;cNilgt,Va7K0.JcGWIr;_EKJcC<$JcE^hJ,~>
+JcDqRqZ-<hqZ)3IZiBn&q>^BnJcG`MrVufrh>dKT_uKT6JcG?AnGn.?JcC<$JcC<$JcC<$JcC<$
+c2[Y at oDe[fJcERdnGn4Ar;b_JrrC)4qZ)3Iqu?TpJcC<$JcC<$`W(G~>
+JcDqRqZ-<hqZ)3IZiBn&q>^BnJcG`MrVufrh>dKT_uKT6JcG?AnGn.?JcC<$JcC<$JcC<$JcC<$
+c2[Y at oDe[fJcERdnGn4Ar;b_JrrC)4qZ)3Iqu?TpJcC<$JcC<$`W(G~>
+JcDqRqZ-<hqZ)3IZiBn&q>^BnJcG`MrVufrh>dKT_uKT6JcG?AnGn.?JcC<$JcC<$JcC<$JcC<$
+c2[Y at oDe[fJcERdnGn4Ar;cNilgt,Va7K0.JcGWIr;_EKJcC<$JcE^hJ,~>
+JcDqRq#L6jqZ)3IYQ++mJcGKEr;bgVrrC1 at qZ)3ImJm+bJcC<$JcC<$JcC<$JcC<$JcERdqZ-6f
+qZ)3I^]4$.JcGWIr;bkNrrC;:pAfdEq>^BnJcC<$JcC<$`W(G~>
+JcDqRq#L6jqZ)3IYQ++mJcGKEr;bgVrrC1 at qZ)3ImJm+bJcC<$JcC<$JcC<$JcC<$JcERdqZ-6f
+qZ)3I^]4$.JcGWIr;bkNrrC;:pAfdEq>^BnJcC<$JcC<$`W(G~>
+JcDqRq#L6jqZ)3IYQ++mJcGKEr;bgVrrC1 at qZ)3ImJm+bJcC<$JcC<$JcC<$JcC<$JcERdqZ-6f
+qZ)3I^]4$.JcGWIr;clsjn&KPc1CZ0JcGQGr;_EKJcC<$JcE^hJ,~>
+JcDqRq#L6jqZ)3IYQ++mJcGKEr;bgVrrC1 at qZ)3ImJm+bJcC<$JcC<$JcC<$JcC<$JcERdqZ-6f
+qZ)3I^]4$.JcGWIr;bkNrrC;:pAfdEq>^BnJcC<$JcC<$`W(G~>
+JcDqRq#L6jqZ)3IYQ++mJcGKEr;bgVrrC1 at qZ)3ImJm+bJcC<$JcC<$JcC<$JcC<$JcERdqZ-6f
+qZ)3I^]4$.JcGWIr;bkNrrC;:pAfdEq>^BnJcC<$JcC<$`W(G~>
+JcDqRq#L6jqZ)3IYQ++mJcGKEr;bgVrrC1 at qZ)3ImJm+bJcC<$JcC<$JcC<$JcC<$JcERdqZ-6f
+qZ)3I^]4$.JcGWIr;clsjn&KPc1CZ0JcGQGr;_EKJcC<$JcE^hJ,~>
+JcDkPqZ-HlqZ)3IXoJ+qJcG3=r;bsZrrCIHo`0RCli6n`JcC<$JcC<$JcC<$JcC<$JcELbqZ-<h
+qZ)3IJcDeNr;c"RrrCM at qZ)3In,N=dJcC<$JcC<$`W(G~>
+JcDkPqZ-HlqZ)3IXoJ+qJcG3=r;bsZrrCIHo`0RCli6n`JcC<$JcC<$JcC<$JcC<$JcELbqZ-<h
+qZ)3IJcDeNr;c"RrrCM at qZ)3In,N=dJcC<$JcC<$`W(G~>
+JcDkPqZ-HlqZ)3IXoJ+qJcG3=r;bsZrrCIHo`0RCli6n`JcC<$JcC<$JcC<$JcC<$JcELbqZ-<h
+qZ)3IJcDeNr;c$PrrCO>qZ)3In,N=dJcC<$JcC<$`W(G~>
+JcDkPqZ-HlqZ)3IXoJ+qJcG3=r;bsZrrCIHo`0RCli6n`JcC<$JcC<$JcC<$JcC<$JcELbqZ-<h
+qZ)3IJcDeNr;c"RrrCM at qZ)3In,N=dJcC<$JcC<$`W(G~>
+JcDkPqZ-HlqZ)3IXoJ+qJcG3=r;bsZrrCIHo`0RCli6n`JcC<$JcC<$JcC<$JcC<$JcELbqZ-<h
+qZ)3IJcDeNr;c"RrrCM at qZ)3In,N=dJcC<$JcC<$`W(G~>
+JcDkPqZ-HlqZ)3IXoJ+qJcG3=r;bsZrrCIHo`0RCli6n`JcC<$JcC<$JcC<$JcC<$JcELbqZ-<h
+qZ)3IJcDeNr;c$PrrCO>qZ)3In,N=dJcC<$JcC<$`W(G~>
+JcDkPq#LBnq#H!GJcCl4rrE*!r;c*^rrC[NqZ)3IhuEWTJcC<$JcC<$JcC<$JcC<$JcELbq#L6j
+qZ)3IJcD_Lq#K_RrrC_FqZ)3Il2Ub`s8VfnJcC<$JcC<$ci8L~>
+JcDkPq#LBnq#H!GJcCl4rrE*!r;c*^rrC[NqZ)3IhuEWTJcC<$JcC<$JcC<$JcC<$JcELbq#L6j
+qZ)3IJcD_Lq#K_RrrC_FqZ)3Il2Ub`s8VfnJcC<$JcC<$ci8L~>
+JcDkPq#LBnq#H!GJcCl4rrE*!r;c*^rrC[NqZ)3IhuEWTJcC<$JcC<$JcC<$JcC<$JcELbq#L6j
+qZ)3IJcD_Lq#KaPrrCaDqZ)3Il2Ub`s8VfnJcC<$JcC<$ci8L~>
+JcDkPq#LBnq#H!GJcCl4rrE*!r;c*^rrC[NqZ)3IhuEWTJcC<$JcC<$JcC<$JcC<$JcELbq#L6j
+qZ)3IJcD_Lq#K_RrrC_FqZ)3Il2Ub`s8VfnJcC<$JcC<$ci8L~>
+JcDkPq#LBnq#H!GJcCl4rrE*!r;c*^rrC[NqZ)3IhuEWTJcC<$JcC<$JcC<$JcC<$JcELbq#L6j
+qZ)3IJcD_Lq#K_RrrC_FqZ)3Il2Ub`s8VfnJcC<$JcC<$ci8L~>
+JcDkPq#LBnq#H!GJcCl4rrE*!r;c*^rrC[NqZ)3IhuEWTJcC<$JcC<$JcC<$JcC<$JcELbq#L6j
+qZ)3IJcD_Lq#KaPrrCaDqZ)3Il2Ub`s8VfnJcC<$JcC<$ci8L~>
+JcDeNqZ-TpqZ)3IJcC`0rrE#tr;c6brrCmTq#H!Gg].9Rs8VfnJcC<$JcC<$JcC<$JcC<$JcEdj
+qZ-HlqZ)3IJcDGDrrDFZrrCqLqZ-Zrrr at WMl2U2PJcC<$JcC<$dJn^~>
+JcDeNqZ-TpqZ)3IJcC`0rrE#tr;c6brrCmTq#H!Gg].9Rs8VfnJcC<$JcC<$JcC<$JcC<$JcEdj
+qZ-HlqZ)3IJcDGDrrDFZrrCqLqZ-Zrrr at WMl2U2PJcC<$JcC<$dJn^~>
+JcDeNqZ-TpqZ)3IJcC`0rrE#tr;c6brrCmTq#H!Gg].9Rs8VfnJcC<$JcC<$JcC<$JcC<$JcEdj
+qZ-HlqZ)3IJcDGDrrDHXrrCsJqZ-Zrrr at WMl2U2PJcC<$JcC<$dJn^~>
+JcDeNqZ-TpqZ)3IJcC`0rrE#tr;c6brrCmTq#H!Gg].9Rs8VfnJcC<$JcC<$JcC<$JcC<$JcEdj
+qZ-HlqZ)3IJcDGDrrDFZrrCqLqZ-Zrrr at WMl2U2PJcC<$JcC<$dJn^~>
+JcDeNqZ-TpqZ)3IJcC`0rrE#tr;c6brrCmTq#H!Gg].9Rs8VfnJcC<$JcC<$JcC<$JcC<$JcEdj
+qZ-HlqZ)3IJcDGDrrDFZrrCqLqZ-Zrrr at WMl2U2PJcC<$JcC<$dJn^~>
+JcDeNqZ-TpqZ)3IJcC`0rrE#tr;c6brrCmTq#H!Gg].9Rs8VfnJcC<$JcC<$JcC<$JcC<$JcEdj
+qZ-HlqZ)3IJcDGDrrDHXrrCsJqZ-Zrrr at WMl2U2PJcC<$JcC<$dJn^~>
+JcDeNqZ-TpqZ)3IJcCB&r;cBfrrD0\q#H!Gec5(<JcC<$JcC<$JcC<$JcC<$JcEjlq#LBnq#H!G
+JcDABr;c@\rrD.RqZ)3IhuEWTp](*jJcC<$JcC<$e,Op~>
+JcDeNqZ-TpqZ)3IJcCB&r;cBfrrD0\q#H!Gec5(<JcC<$JcC<$JcC<$JcC<$JcEjlq#LBnq#H!G
+JcDABr;c@\rrD.RqZ)3IhuEWTp](*jJcC<$JcC<$e,Op~>
+JcDeNqZ-TpqZ)3IJcCB&r;cBfrrD0\q#H!Gec5(<JcC<$JcC<$JcC<$JcC<$JcEjlq#LBnq#H!G
+JcDABr;cBZrrD0PqZ)3IhuEWTp](*jJcC<$JcC<$e,Op~>
+JcDeNqZ-TpqZ)3IJcCB&r;cBfrrD0\q#H!Gec5(<JcC<$JcC<$JcC<$JcC<$JcEjlq#LBnq#H!G
+JcDABr;c@\rrD.RqZ)3IhuEWTp](*jJcC<$JcC<$e,Op~>
+JcDeNqZ-TpqZ)3IJcCB&r;cBfrrD0\q#H!Gec5(<JcC<$JcC<$JcC<$JcC<$JcEjlq#LBnq#H!G
+JcDABr;c@\rrD.RqZ)3IhuEWTp](*jJcC<$JcC<$e,Op~>
+JcDeNqZ-TpqZ)3IJcCB&r;cBfrrD0\q#H!Gec5(<JcC<$JcC<$JcC<$JcC<$JcEjlq#LBnq#H!G
+JcDABr;cBZrrD0PqZ)3IhuEWTp](*jJcC<$JcC<$e,Op~>
+JcD_Lo`0RCJcC<$rVufrp&G$lli6h^JcF!pr;cTlqZ)3IJcC<$JcC<$JcC<$JcC<$aoD5<rVu`p
+JcC<$RK*3coh5;bm7[0RJcEpnr;_EKJcC<$JcF4!J,~>
+JcD_Lo`0RCJcC<$rVufrp&G$lli6h^JcF!pr;cTlqZ)3IJcC<$JcC<$JcC<$JcC<$aoD5<rVu`p
+JcC<$RK*3coh5;bm7[0RJcEpnr;_EKJcC<$JcF4!J,~>
+JcD_Lo`0RCJcC<$rVufrp&G$lli6h^JcF!pr;cTlqZ)3IJcC<$JcC<$JcC<$JcC<$aoD5<rVu`p
+JcC<$RK*3cp%/1`mIU&PJcEpnr;_EKJcC<$JcF4!J,~>
+JcD_Lo`0RCJcC<$rVufrp&G$lli6h^JcF!pr;cTlqZ)3IJcC<$JcC<$JcC<$JcC<$aoD5<rVu`p
+JcC<$RK*3coh5;bm7[0RJcEpnr;_EKJcC<$JcF4!J,~>
+JcD_Lo`0RCJcC<$rVufrp&G$lli6h^JcF!pr;cTlqZ)3IJcC<$JcC<$JcC<$JcC<$aoD5<rVu`p
+JcC<$RK*3coh5;bm7[0RJcEpnr;_EKJcC<$JcF4!J,~>
+JcD_Lo`0RCJcC<$rVufrp&G$lli6h^JcF!pr;cTlqZ)3IJcC<$JcC<$JcC<$JcC<$aoD5<rVu`p
+JcC<$RK*3cp%/1`mIU&PJcEpnr;_EKJcC<$JcF4!J,~>
+JcD_Lo`0RCJcC<$rVults8W#tq>^Hpnc/Ids8W*!JcE@^r;_EKJcC<$JcC<$JcC<$JcC<$aoD5<
+rVu`pJcC<$QiHp_q+L_fo1Sr\JcERdr;_EKJcC<$JcF4!J,~>
+JcD_Lo`0RCJcC<$rVults8W#tq>^Hpnc/Ids8W*!JcE@^r;_EKJcC<$JcC<$JcC<$JcC<$aoD5<
+rVu`pJcC<$QiHp_q+L_fo1Sr\JcERdr;_EKJcC<$JcF4!J,~>
+JcD_Lo`0RCJcC<$rVults8W#tq>^Hpnc/Ids8W*!JcE@^r;_EKJcC<$JcC<$JcC<$JcC<$aoD5<
+rVu`pJcC<$QiHp_q=FUdoCMhZJcERdr;_EKJcC<$JcF4!J,~>
+JcD_Lo`0RCJcC<$rVults8W#tq>^Hpnc/Ids8W*!JcE@^r;_EKJcC<$JcC<$JcC<$JcC<$aoD5<
+rVu`pJcC<$QiHp_q+L_fo1Sr\JcERdr;_EKJcC<$JcF4!J,~>
+JcD_Lo`0RCJcC<$rVults8W#tq>^Hpnc/Ids8W*!JcE@^r;_EKJcC<$JcC<$JcC<$JcC<$aoD5<
+rVu`pJcC<$QiHp_q+L_fo1Sr\JcERdr;_EKJcC<$JcF4!J,~>
+JcD_Lo`0RCJcC<$rVults8W#tq>^Hpnc/Ids8W*!JcE@^r;_EKJcC<$JcC<$JcC<$JcC<$aoD5<
+rVu`pJcC<$QiHp_q=FUdoCMhZJcERdr;_EKJcC<$JcF4!J,~>
+JcDYJpAfdEJcC<$qu?ZrrVufrrVultq>^6jJcE"Tr;_EKJcC<$JcC<$JcC<$JcC<$a8bf4JcC<$
+PQ1X_s8W#trCd.jq+LSbJcE@^r;_EKJcC<$JcF4!J,~>
+JcDYJpAfdEJcC<$qu?ZrrVufrrVultq>^6jJcE"Tr;_EKJcC<$JcC<$JcC<$JcC<$a8bf4JcC<$
+PQ1X_s8W#trCd.jq+LSbJcE@^r;_EKJcC<$JcF4!J,~>
+JcDYJpAfdEJcC<$qu?ZrrVufrrVultq>^6jJcE"Tr;_EKJcC<$JcC<$JcC<$JcC<$a8bf4JcC<$
+PQ1X_s8W#trU^$hq=FI`JcE@^r;_EKJcC<$JcF4!J,~>
+JcDYJpAfdEJcC<$qu?ZrrVufrrVultq>^6jJcE"Tr;_EKJcC<$JcC<$JcC<$JcC<$a8bf4JcC<$
+PQ1X_s8W#trCd.jq+LSbJcE@^r;_EKJcC<$JcF4!J,~>
+JcDYJpAfdEJcC<$qu?ZrrVufrrVultq>^6jJcE"Tr;_EKJcC<$JcC<$JcC<$JcC<$a8bf4JcC<$
+PQ1X_s8W#trCd.jq+LSbJcE@^r;_EKJcC<$JcF4!J,~>
+JcDYJpAfdEJcC<$qu?ZrrVufrrVultq>^6jJcE"Tr;_EKJcC<$JcC<$JcC<$JcC<$a8bf4JcC<$
+PQ1X_s8W#trU^$hq=FI`JcE@^r;_EKJcC<$JcF4!J,~>
+JcDYJq#H!GJcC<$n,N7bs8VfnJcDkPr;_EKJcC<$JcC<$JcC<$JcC<$a8bf4JcC<$MuWYSs%E4h
+s8W#tJcEpnr;cNjr;_EKJcC<$JcF4!J,~>
+JcDYJq#H!GJcC<$n,N7bs8VfnJcDkPr;_EKJcC<$JcC<$JcC<$JcC<$a8bf4JcC<$MuWYSs%E4h
+s8W#tJcEpnr;cNjr;_EKJcC<$JcF4!J,~>
+JcDYJq#H!GJcC<$n,N7bs8VfnJcDkPr;_EKJcC<$JcC<$JcC<$JcC<$a8bf4JcC<$MuWYSs7?*f
+s8W#tJcEpnr;cNjr;_EKJcC<$JcF4!J,~>
+JcDYJq#H!GJcC<$n,N7bs8VfnJcDkPr;_EKJcC<$JcC<$JcC<$JcC<$a8bf4JcC<$MuWYSs%E4h
+s8W#tJcEpnr;cNjr;_EKJcC<$JcF4!J,~>
+JcDYJq#H!GJcC<$n,N7bs8VfnJcDkPr;_EKJcC<$JcC<$JcC<$JcC<$a8bf4JcC<$MuWYSs%E4h
+s8W#tJcEpnr;cNjr;_EKJcC<$JcF4!J,~>
+JcDYJq#H!GJcC<$n,N7bs8VfnJcDkPr;_EKJcC<$JcC<$JcC<$JcC<$a8bf4JcC<$MuWYSs7?*f
+s8W#tJcEpnr;cNjr;_EKJcC<$JcF4!J,~>
+JcDSHqZ)3IJcC<$li6n`JcE(Vr;cNjr;_EKJcC<$JcC<$JcC<$JcC<$`W,Z4JcC<$L]@;QJcELb
+qZ-Hlr;_EKU]:2kp](*jJcC<$`W(G~>
+JcDSHqZ)3IJcC<$li6n`JcE(Vr;cNjr;_EKJcC<$JcC<$JcC<$JcC<$`W,Z4JcC<$L]@;QJcELb
+qZ-Hlr;_EKU]:2kp](*jJcC<$`W(G~>
+JcDSHqZ)3IJcC<$li6n`JcE(Vr;cNjr;_EKJcC<$JcC<$JcC<$JcC<$`W,Z4JcC<$L]@;QJcELb
+qZ-Hlr;_EKU]:2kp](*jJcC<$`W(G~>
+JcDSHqZ)3IJcC<$li6n`JcE(Vr;cNjr;_EKJcC<$JcC<$JcC<$JcC<$`W,Z4JcC<$L]@;QJcELb
+qZ-Hlr;_EKU]:2kp](*jJcC<$`W(G~>
+JcDSHqZ)3IJcC<$li6n`JcE(Vr;cNjr;_EKJcC<$JcC<$JcC<$JcC<$`W,Z4JcC<$L]@;QJcELb
+qZ-Hlr;_EKU]:2kp](*jJcC<$`W(G~>
+JcDSHqZ)3IJcC<$li6n`JcE(Vr;cNjr;_EKJcC<$JcC<$JcC<$JcC<$`W,Z4JcC<$L]@;QJcELb
+qZ-Hlr;_EKU]:2kp](*jJcC<$`W(G~>
+JcDSHqZ)3IJcC<$n,N=dJcDqRqZ-Hlr;_EKJcC<$JcC<$JcC<$JcC<$_uKN4JcC<$M?!GQJcE@^
+nGn.?U]:,iqu?HlJcC<$`W(G~>
+JcDSHqZ)3IJcC<$n,N=dJcDqRqZ-Hlr;_EKJcC<$JcC<$JcC<$JcC<$_uKN4JcC<$M?!GQJcE@^
+nGn.?U]:,iqu?HlJcC<$`W(G~>
+JcDSHqZ)3IJcC<$n,N=dJcDqRqZ-Hlr;_EKJcC<$JcC<$JcC<$JcC<$_uKN4JcC<$M?!GQJcE@^
+nGn.?U]:,iqu?HlJcC<$`W(G~>
+JcDSHqZ)3IJcC<$n,N=dJcDqRqZ-Hlr;_EKJcC<$JcC<$JcC<$JcC<$_uKN4JcC<$M?!GQJcE@^
+nGn.?U]:,iqu?HlJcC<$`W(G~>
+JcDSHqZ)3IJcC<$n,N=dJcDqRqZ-Hlr;_EKJcC<$JcC<$JcC<$JcC<$_uKN4JcC<$M?!GQJcE@^
+nGn.?U]:,iqu?HlJcC<$`W(G~>
+JcDSHqZ)3IJcC<$n,N=dJcDqRqZ-Hlr;_EKJcC<$JcC<$JcC<$JcC<$_uKN4JcC<$M?!GQJcE@^
+nGn.?U]:,iqu?HlJcC<$`W(G~>
+JcDYJqZ)3IJcC<$oDe[frVufrJcE"TnGn.?JcC<$JcC<$JcC<$JcC<$_>jB4JcC<$OoP4Wqu?Tp
+JcEF`pAfdEScAQequ?NnJcC<$_uG5~>
+JcDYJqZ)3IJcC<$oDe[frVufrJcE"TnGn.?JcC<$JcC<$JcC<$JcC<$_>jB4JcC<$OoP4Wqu?Tp
+JcEF`pAfdEScAQequ?NnJcC<$_uG5~>
+JcDYJqZ)3IJcC<$oDe[frVufrJcE"TnGn.?JcC<$JcC<$JcC<$JcC<$_>jB4JcC<$OoP4Wqu?Tp
+JcEF`pAfdEScAQequ?NnJcC<$_uG5~>
+JcDYJqZ)3IJcC<$oDe[frVufrJcE"TnGn.?JcC<$JcC<$JcC<$JcC<$_>jB4JcC<$OoP4Wqu?Tp
+JcEF`pAfdEScAQequ?NnJcC<$_uG5~>
+JcDYJqZ)3IJcC<$oDe[frVufrJcE"TnGn.?JcC<$JcC<$JcC<$JcC<$_>jB4JcC<$OoP4Wqu?Tp
+JcEF`pAfdEScAQequ?NnJcC<$_uG5~>
+JcDYJqZ)3IJcC<$oDe[frVufrJcE"TnGn.?JcC<$JcC<$JcC<$JcC<$_>jB4JcC<$OoP4Wqu?Tp
+JcEF`pAfdEScAQequ?NnJcC<$_uG5~>
+JcDYJqZ)3IJcC<$q>^<loDeahJcE(VpAfdES,`?cp](*jJcC<$JcC<$JcC<$JcE:\qZ)3IJcD#8
+r;c<dr;_EKJcC<$dJs(Ds8VrrJcC<$_>f#~>
+JcDYJqZ)3IJcC<$q>^<loDeahJcE(VpAfdES,`?cp](*jJcC<$JcC<$JcC<$JcE:\qZ)3IJcD#8
+r;c<dr;_EKJcC<$dJs(Ds8VrrJcC<$_>f#~>
+JcDYJqZ)3IJcC<$q>^<loDeahJcE(VpAfdES,`?cp](*jJcC<$JcC<$JcC<$JcE:\qZ)3IJcD#8
+r;c<dr;_EKJcC<$dJs(Ds8VrrJcC<$_>f#~>
+JcDYJqZ)3IJcC<$q>^<loDeahJcE(VpAfdES,`?cp](*jJcC<$JcC<$JcC<$JcE:\qZ)3IJcD#8
+r;c<dr;_EKJcC<$dJs(Ds8VrrJcC<$_>f#~>
+JcDYJqZ)3IJcC<$q>^<loDeahJcE(VpAfdES,`?cp](*jJcC<$JcC<$JcC<$JcE:\qZ)3IJcD#8
+r;c<dr;_EKJcC<$dJs(Ds8VrrJcC<$_>f#~>
+JcDYJqZ)3IJcC<$q>^<loDeahJcE(VpAfdES,`?cp](*jJcC<$JcC<$JcC<$JcE:\qZ)3IJcD#8
+r;c<dr;_EKJcC<$dJs(Ds8VrrJcC<$_>f#~>
+JcD_LqZ)3IJcC<$q>^Hpl2U\^JcC<$JcEdjq#L<lq#H!GJcC<$JcC<$JcC<$]Dqa.JcC<$JcGQG
+r;_EKJcC<$ec54 at JcC<$_>f#~>
+JcD_LqZ)3IJcC<$q>^Hpl2U\^JcC<$JcEdjq#L<lq#H!GJcC<$JcC<$JcC<$]Dqa.JcC<$JcGQG
+r;_EKJcC<$ec54 at JcC<$_>f#~>
+JcD_LqZ)3IJcC<$q>^Hpl2U\^JcC<$JcEdjq#L<lq#H!GJcC<$JcC<$JcC<$]Dqa.JcC<$JcGQG
+r;_EKJcC<$ec54 at JcC<$_>f#~>
+JcD_LqZ)3IJcC<$q>^Hpl2U\^JcC<$JcEdjq#L<lq#H!GJcC<$JcC<$JcC<$]Dqa.JcC<$JcGQG
+r;_EKJcC<$ec54 at JcC<$_>f#~>
+JcD_LqZ)3IJcC<$q>^Hpl2U\^JcC<$JcEdjq#L<lq#H!GJcC<$JcC<$JcC<$]Dqa.JcC<$JcGQG
+r;_EKJcC<$ec54 at JcC<$_>f#~>
+JcD_LqZ)3IJcC<$q>^Hpl2U\^JcC<$JcEdjq#L<lq#H!GJcC<$JcC<$JcC<$]Dqa.JcC<$JcGQG
+r;_EKJcC<$ec54 at JcC<$_>f#~>
+JcDkPpAfdEJcC<$g].3PJcC<$JcEjlqZ-NnqZ)3IJcC<$JcC<$JcC<$\c;O,JcC<$JcC<$JcC<$
+a8bl6JcC<$^]/f~>
+JcDkPpAfdEJcC<$g].3PJcC<$JcEjlqZ-NnqZ)3IJcC<$JcC<$JcC<$\c;O,JcC<$JcC<$JcC<$
+a8bl6JcC<$^]/f~>
+JcDkPpAfdEJcC<$g].3PJcC<$JcEjlqZ-NnqZ)3IJcC<$JcC<$JcC<$\c;O,JcC<$JcC<$JcC<$
+a8bl6JcC<$^]/f~>
+JcDkPpAfdEJcC<$g].3PJcC<$JcEjlqZ-NnqZ)3IJcC<$JcC<$JcC<$\c;O,JcC<$JcC<$JcC<$
+a8bl6JcC<$^]/f~>
+JcDkPpAfdEJcC<$g].3PJcC<$JcEjlqZ-NnqZ)3IJcC<$JcC<$JcC<$\c;O,JcC<$JcC<$JcC<$
+a8bl6JcC<$^]/f~>
+JcDkPpAfdEJcC<$g].3PJcC<$JcEjlqZ-NnqZ)3IJcC<$JcC<$JcC<$\c;O,JcC<$JcC<$JcC<$
+a8bl6JcC<$^]/f~>
+JcDkPq#H!GJcC<$JcC<$JcD5>qZ-ZrqZ)3IJcC<$JcC<$JcC<$\c;O,JcC<$JcC<$JcC<$_uKT6
+JcC<$^&NT~>
+JcDkPq#H!GJcC<$JcC<$JcD5>qZ-ZrqZ)3IJcC<$JcC<$JcC<$\c;O,JcC<$JcC<$JcC<$_uKT6
+JcC<$^&NT~>
+JcDkPq#H!GJcC<$JcC<$JcD5>qZ-ZrqZ)3IJcC<$JcC<$JcC<$\c;O,JcC<$JcC<$JcC<$_uKT6
+JcC<$^&NT~>
+JcDkPq#H!GJcC<$JcC<$JcD5>qZ-ZrqZ)3IJcC<$JcC<$JcC<$\c;O,JcC<$JcC<$JcC<$_uKT6
+JcC<$^&NT~>
+JcDkPq#H!GJcC<$JcC<$JcD5>qZ-ZrqZ)3IJcC<$JcC<$JcC<$\c;O,JcC<$JcC<$JcC<$_uKT6
+JcC<$^&NT~>
+JcDkPq#H!GJcC<$JcC<$JcD5>qZ-ZrqZ)3IJcC<$JcC<$JcC<$\c;O,JcC<$JcC<$JcC<$_uKT6
+JcC<$^&NT~>
+JcC<$JcC<$JcC<$JcC<$^]3m*JcC<$JcC<$JcC<$JcEF`pAfdEJcC<$JcC<$JcE^hpAfdEJcELb
+J,~>
+JcC<$JcC<$JcC<$JcC<$^]3m*JcC<$JcC<$JcC<$JcEF`pAfdEJcC<$JcC<$JcE^hpAfdEJcELb
+J,~>
+JcC<$JcC<$JcC<$JcC<$^]3m*JcC<$JcC<$JcC<$JcEF`pAfdEJcC<$JcC<$JcE^hpAfdEJcELb
+J,~>
+JcC<$JcC<$JcC<$JcC<$^]3m*JcC<$JcC<$JcC<$JcEF`pAfdEJcC<$JcC<$JcE^hpAfdEJcELb
+J,~>
+JcC<$JcC<$JcC<$JcC<$^]3m*JcC<$JcC<$JcC<$JcEF`pAfdEJcC<$JcC<$JcE^hpAfdEJcELb
+J,~>
+JcC<$JcC<$JcC<$JcC<$^]3m*JcC<$JcC<$JcC<$JcEF`pAfdEJcC<$JcC<$JcE^hpAfdEJcELb
+J,~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcE@^q#H!GJcC<$JcC<$JcEXfpAfdEJcELb
+J,~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcE@^q#H!GJcC<$JcC<$JcEXfpAfdEJcELb
+J,~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcE@^q#H!GJcC<$JcC<$JcEXfpAfdEJcELb
+J,~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcE@^q#H!GJcC<$JcC<$JcEXfpAfdEJcELb
+J,~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcE@^q#H!GJcC<$JcC<$JcEXfpAfdEJcELb
+J,~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcE@^q#H!GJcC<$JcC<$JcEXfpAfdEJcELb
+J,~>
+JcC<$JcC<$JcC<$JcC<$]Dqa.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$p&Fmhs8VrrJcC<$
+_>f#~>
+JcC<$JcC<$JcC<$JcC<$]Dqa.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$p&Fmhs8VrrJcC<$
+_>f#~>
+JcC<$JcC<$JcC<$JcC<$]Dqa.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$p&Fmhs8VrrJcC<$
+_>f#~>
+JcC<$JcC<$JcC<$JcC<$]Dqa.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$p&Fmhs8VrrJcC<$
+_>f#~>
+JcC<$JcC<$JcC<$JcC<$]Dqa.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$p&Fmhs8VrrJcC<$
+_>f#~>
+JcC<$JcC<$JcC<$JcC<$]Dqa.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$p&Fmhs8VrrJcC<$
+_>f#~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$q>^6js8VlpJcC<$
+_uG5~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$q>^6js8VlpJcC<$
+_uG5~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$q>^6js8VlpJcC<$
+_uG5~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$q>^6js8VlpJcC<$
+_uG5~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$q>^6js8VlpJcC<$
+_uG5~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$q>^6js8VlpJcC<$
+_uG5~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$q>^<lqu?NnJcC<$
+_uG5~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$q>^<lqu?NnJcC<$
+_uG5~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$q>^<lqu?NnJcC<$
+_uG5~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$q>^<lqu?NnJcC<$
+_uG5~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$q>^<lqu?NnJcC<$
+_uG5~>
+JcC<$JcC<$JcC<$JcC<$^&Rg,JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$q>^<lqu?NnJcC<$
+_uG5~>
+JcC<$JcC<$JcC<$JcC<$^]402s8VrrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$rVuZnqu?Hl
+JcC<$`W(G~>
+JcC<$JcC<$JcC<$JcC<$^]402s8VrrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$rVuZnqu?Hl
+JcC<$`W(G~>
+JcC<$JcC<$JcC<$JcC<$^]402s8VrrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$rVuZnqu?Hl
+JcC<$`W(G~>
+JcC<$JcC<$JcC<$JcC<$^]402s8VrrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$rVuZnqu?Hl
+JcC<$`W(G~>
+JcC<$JcC<$JcC<$JcC<$^]402s8VrrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$rVuZnqu?Hl
+JcC<$`W(G~>
+JcC<$JcC<$JcC<$JcC<$^]402s8VrrJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$rVuZnqu?Hl
+JcC<$`W(G~>
+JcC<$JcC<$JcC<$JcC<$_>j<2s8VlpJcC<$JcC<$JcC<$JcC<$JcC<$j8\oTJcC<$JcDSHqZ-Bj
+qZ)3IJcE^hJ,~>
+JcC<$JcC<$JcC<$JcC<$_>j<2s8VlpJcC<$JcC<$JcC<$JcC<$JcC<$j8\oTJcC<$JcDSHqZ-Bj
+qZ)3IJcE^hJ,~>
+JcC<$JcC<$JcC<$JcC<$_>j<2s8VlpJcC<$JcC<$JcC<$JcC<$JcC<$j8\oTJcC<$JcDSHqZ-Bj
+qZ)3IJcE^hJ,~>
+JcC<$JcC<$JcC<$JcC<$_>j<2s8VlpJcC<$JcC<$JcC<$JcC<$JcC<$j8\oTJcC<$JcDSHqZ-Bj
+qZ)3IJcE^hJ,~>
+JcC<$JcC<$JcC<$JcC<$_>j<2s8VlpJcC<$JcC<$JcC<$JcC<$JcC<$j8\oTJcC<$JcDSHqZ-Bj
+qZ)3IJcE^hJ,~>
+JcC<$JcC<$JcC<$JcC<$_>j<2s8VlpJcC<$JcC<$JcC<$JcC<$JcC<$j8\oTJcC<$JcDSHqZ-Bj
+qZ)3IJcE^hJ,~>
+JcC<$JcC<$\,Z7(JcC<$JcCr6qZ-NnqZ)3IJcC<$JcC<$JcC<$JcC<$JcFj3o`0RCJcC<$JcC<$
+JcF:#J,~>
+JcC<$JcC<$\,Z7(JcC<$JcCr6qZ-NnqZ)3IJcC<$JcC<$JcC<$JcC<$JcFj3o`0RCJcC<$JcC<$
+JcF:#J,~>
+JcC<$JcC<$\,Z7(JcC<$JcCr6qZ-NnqZ)3IJcC<$JcC<$JcC<$JcC<$JcFj3o`0RCJcC<$JcC<$
+JcF:#J,~>
+JcC<$JcC<$\,Z7(JcC<$JcCr6qZ-NnqZ)3IJcC<$JcC<$JcC<$JcC<$JcFj3o`0RCJcC<$JcC<$
+JcF:#J,~>
+JcC<$JcC<$\,Z7(JcC<$JcCr6qZ-NnqZ)3IJcC<$JcC<$JcC<$JcC<$JcFj3o`0RCJcC<$JcC<$
+JcF:#J,~>
+JcC<$JcC<$\,Z7(JcC<$JcCr6qZ-NnqZ)3IJcC<$JcC<$JcC<$JcC<$JcFj3o`0RCJcC<$JcC<$
+JcF:#J,~>
+JcC<$JcC<$\c;=&JcC<$JcD):q#L<lq#H!GJcC<$JcC<$JcC<$JcC<$JcG!7r;cZnr;_EKJcC<$
+JcC<$JcF@%J,~>
+JcC<$JcC<$\c;=&JcC<$JcD):q#L<lq#H!GJcC<$JcC<$JcC<$JcC<$JcG!7r;cZnr;_EKJcC<$
+JcC<$JcF@%J,~>
+JcC<$JcC<$\c;=&JcC<$JcD):q#L<lq#H!GJcC<$JcC<$JcC<$JcC<$JcG!7r;cZnr;_EKJcC<$
+JcC<$JcF@%J,~>
+JcC<$JcC<$\c;=&JcC<$JcD):q#L<lq#H!GJcC<$JcC<$JcC<$JcC<$JcG!7r;cZnr;_EKJcC<$
+JcC<$JcF@%J,~>
+JcC<$JcC<$\c;=&JcC<$JcD):q#L<lq#H!GJcC<$JcC<$JcC<$JcC<$JcG!7r;cZnr;_EKJcC<$
+JcC<$JcF@%J,~>
+JcC<$JcC<$\c;=&JcC<$JcD):q#L<lq#H!GJcC<$JcC<$JcC<$JcC<$JcG!7r;cZnr;_EKJcC<$
+JcC<$JcF@%J,~>
+JcC<$JcC<$]Dqg0q>^BnJcC<$JcD/<qZ-BjqZ)3IJcC<$JcC<$JcC<$JcC<$JcG!7r;cZnr;aP2
+q#H!GJcC<$JcC<$U]5i~>
+JcC<$JcC<$]Dqg0q>^BnJcC<$JcD/<qZ-BjqZ)3IJcC<$JcC<$JcC<$JcC<$JcG!7r;cZnr;aP2
+q#H!GJcC<$JcC<$U]5i~>
+JcC<$JcC<$]Dqg0q>^BnJcC<$JcD/<qZ-BjqZ)3IJcC<$JcC<$JcC<$JcC<$JcG!7r;cZnr;aP2
+q#H!GJcC<$JcC<$U]5i~>
+JcC<$JcC<$]Dqg0q>^BnJcC<$JcD/<qZ-BjqZ)3IJcC<$JcC<$JcC<$JcC<$JcG!7r;cZnr;aP2
+q#H!GJcC<$JcC<$U]5i~>
+JcC<$JcC<$]Dqg0q>^BnJcC<$JcD/<qZ-BjqZ)3IJcC<$JcC<$JcC<$JcC<$JcG!7r;cZnr;aP2
+q#H!GJcC<$JcC<$U]5i~>
+JcC<$JcC<$]Dqg0q>^BnJcC<$JcD/<qZ-BjqZ)3IJcC<$JcC<$JcC<$JcC<$JcG!7r;cZnr;aP2
+q#H!GJcC<$JcC<$U]5i~>
+JcC<$JcC<$]Dqg0q>^Bn^&Rm.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE:\r;cNjr;a\6o`0RC
+JcC<$JcC<$V>l&~>
+JcC<$JcC<$]Dqg0q>^Bn^&Rm.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE:\r;cNjr;a\6o`0RC
+JcC<$JcC<$V>l&~>
+JcC<$JcC<$]Dqg0q>^Bn^&Rm.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE:\r;cNjr;a\6o`0RC
+JcC<$JcC<$V>l&~>
+JcC<$JcC<$]Dqg0q>^Bn^&Rm.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE:\r;cNjr;a\6o`0RC
+JcC<$JcC<$V>l&~>
+JcC<$JcC<$]Dqg0q>^Bn^&Rm.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE:\r;cNjr;a\6o`0RC
+JcC<$JcC<$V>l&~>
+JcC<$JcC<$]Dqg0q>^Bn^&Rm.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE:\r;cNjr;a\6o`0RC
+JcC<$JcC<$V>l&~>
+JcC<$JcC<$^&S$2p&Fsj_>j0.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE@^r;cNjr;ab8r;cZn
+r;_EKJcC<$JcC<$VuM8~>
+JcC<$JcC<$^&S$2p&Fsj_>j0.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE@^r;cNjr;ab8r;cZn
+r;_EKJcC<$JcC<$VuM8~>
+JcC<$JcC<$^&S$2p&Fsj_>j0.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE@^r;cNjr;ab8r;cZn
+r;_EKJcC<$JcC<$VuM8~>
+JcC<$JcC<$^&S$2p&Fsj_>j0.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE@^r;cNjr;ab8r;cZn
+r;_EKJcC<$JcC<$VuM8~>
+JcC<$JcC<$^&S$2p&Fsj_>j0.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE@^r;cNjr;ab8r;cZn
+r;_EKJcC<$JcC<$VuM8~>
+JcC<$JcC<$^&S$2p&Fsj_>j0.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE@^r;cNjr;ab8r;cZn
+r;_EKJcC<$JcC<$VuM8~>
+JcC<$JcC<$^&S$2p&Fsj_uKZ8q>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cNjr;ab8
+r;cZnr;_EKJcC<$JcC<$VuM8~>
+JcC<$JcC<$^&S$2p&Fsj_uKZ8q>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cNjr;ab8
+r;cZnr;_EKJcC<$JcC<$VuM8~>
+JcC<$JcC<$^&S$2p&Fsj_uKZ8q>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cNjr;ab8
+r;cZnr;_EKJcC<$JcC<$VuM8~>
+JcC<$JcC<$^&S$2p&Fsj_uKZ8q>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cNjr;ab8
+r;cZnr;_EKJcC<$JcC<$VuM8~>
+JcC<$JcC<$^&S$2p&Fsj_uKZ8q>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cNjr;ab8
+r;cZnr;_EKJcC<$JcC<$VuM8~>
+JcC<$JcC<$^&S$2p&Fsj_uKZ8q>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cNjr;ab8
+r;cZnr;_EKJcC<$JcC<$VuM8~>
+JcC<$JcC<$^&S$2p&Fsj_uKZ8q>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj_uKZ8q>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj_uKZ8q>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj_uKZ8q>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj_uKZ8q>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj_uKZ8q>^BnJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcELbr;cNjr;ah:
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cZnqZ+V8
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cZnqZ+V8
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cZnqZ+V8
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cZnqZ+V8
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cZnqZ+V8
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$^&S$2p&Fsj`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cZnqZ+V8
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$]Dqg0q>^<l`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cZnr;ab8
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$]Dqg0q>^<l`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cZnr;ab8
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$]Dqg0q>^<l`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cZnr;ab8
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$]Dqg0q>^<l`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cZnr;ab8
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$]Dqg0q>^<l`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cZnr;ab8
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$]Dqg0q>^<l`W,l:p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`r;cZnr;ab8
+r;cNjr;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$]Dqg0q>^Bn_uKZ8p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE@^o)Q].r;cNj
+r;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$]Dqg0q>^Bn_uKZ8p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE@^o)Q].r;cNj
+r;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$]Dqg0q>^Bn_uKZ8p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE@^o)Q].r;cNj
+r;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$]Dqg0q>^Bn_uKZ8p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE@^o)Q].r;cNj
+r;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$]Dqg0q>^Bn_uKZ8p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE@^o)Q].r;cNj
+r;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$]Dqg0q>^Bn_uKZ8p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE@^o)Q].r;cNj
+r;_EKJcC<$JcC<$WW.J~>
+JcC<$JcC<$\c;7$_uKZ8p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE:\q#J,.r;cZnqZ)3I
+JcC<$JcC<$WW.J~>
+JcC<$JcC<$\c;7$_uKZ8p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE:\q#J,.r;cZnqZ)3I
+JcC<$JcC<$WW.J~>
+JcC<$JcC<$\c;7$_uKZ8p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE:\q#J,.r;cZnqZ)3I
+JcC<$JcC<$WW.J~>
+JcC<$JcC<$\c;7$_uKZ8p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE:\q#J,.r;cZnqZ)3I
+JcC<$JcC<$WW.J~>
+JcC<$JcC<$\c;7$_uKZ8p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE:\q#J,.r;cZnqZ)3I
+JcC<$JcC<$WW.J~>
+JcC<$JcC<$\c;7$_uKZ8p&FsjJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcE:\q#J,.r;cZnqZ)3I
+JcC<$JcC<$WW.J~>
+JcC<$JcC<$\,Z7(^&S$2q>^<lJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$mJm+bq>^BnJcC<$
+JcC<$JcDYJJ,~>
+JcC<$JcC<$\,Z7(^&S$2q>^<lJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$mJm+bq>^BnJcC<$
+JcC<$JcDYJJ,~>
+JcC<$JcC<$\,Z7(^&S$2q>^<lJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$mJm+bq>^BnJcC<$
+JcC<$JcDYJJ,~>
+JcC<$JcC<$\,Z7(^&S$2q>^<lJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$mJm+bq>^BnJcC<$
+JcC<$JcDYJJ,~>
+JcC<$JcC<$\,Z7(^&S$2q>^<lJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$mJm+bq>^BnJcC<$
+JcC<$JcDYJJ,~>
+JcC<$JcC<$\,Z7(^&S$2q>^<lJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$mJm+bq>^BnJcC<$
+JcC<$JcDYJJ,~>
+JcC<$JcC<$JcG'9r;cZnr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG!7o)O at AJcC<$JcC<$
+VuM8~>
+JcC<$JcC<$JcG'9r;cZnr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG!7o)O at AJcC<$JcC<$
+VuM8~>
+JcC<$JcC<$JcG'9r;cZnr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG!7o)O at AJcC<$JcC<$
+VuM8~>
+JcC<$JcC<$JcG'9r;cZnr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG!7o)O at AJcC<$JcC<$
+VuM8~>
+JcC<$JcC<$JcG'9r;cZnr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG!7o)O at AJcC<$JcC<$
+VuM8~>
+JcC<$JcC<$JcG'9r;cZnr;_EKJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG!7o)O at AJcC<$JcC<$
+VuM8~>
+JcC<$JcC<$JcG!7o)O at AJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFp5q#H!GJcC<$JcC<$U]5i~>
+JcC<$JcC<$JcG!7o)O at AJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFp5q#H!GJcC<$JcC<$U]5i~>
+JcC<$JcC<$JcG!7o)O at AJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFp5q#H!GJcC<$JcC<$U]5i~>
+JcC<$JcC<$JcG!7o)O at AJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFp5q#H!GJcC<$JcC<$U]5i~>
+JcC<$JcC<$JcG!7o)O at AJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFp5q#H!GJcC<$JcC<$U]5i~>
+JcC<$JcC<$JcG!7o)O at AJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFp5q#H!GJcC<$JcC<$U]5i~>
+JcC<$JcC<$JcFp5q#H!GJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$JcFp5q#H!GJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$JcFp5q#H!GJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$JcFp5q#H!GJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$JcFp5q#H!GJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$JcFp5q#H!GJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFL)J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
+
+%%EndDocument
+ @endspecial 2612 x Ft(Figure)430 b(5:)591 b(Results)431
+b(for)g(the)g Fr(pvakx)h Ft(example)e(problem)g(in)h(2D.)f(The)g
+(gradien)-34 b(t)432 b(with)f(resp)34 b(ect)430 b(to)g(the)4000
+29171 y(source)445 b(parameters)g(is)g(pictured)h(on)g(the)f(left.)663
+b(On)445 b(the)h(righ)-34 b(t,)456 b(the)445 b(gradien)-34
+b(t)446 b(w)-34 b(as)446 b(color)f(co)34 b(ded)445 b(and)4000
+30676 y(sup)34 b(erimp)g(osed)404 b(o)-34 b(v)g(er)404
+b(the)h(nominal)f(v)-67 b(alue)404 b(of)g(the)h(source)e(parameters.)p
+Black 4000 34215 a Fr(fB)385 b Ft(b)34 b(efore)385 b(ev)-67
+b(aluation)384 b(of)h(the)g(lo)34 b(cal)384 b(residual)h(comp)34
+b(onen)-34 b(ts.)533 b(Since)384 b(there)h(is)g(no)g(additional)g(comm)
+-34 b(u-)4000 35721 y(nication)421 b(required)g(for)g(the)g
+Fq(cvbbdpre)h Ft(preconditioner,)j(a)c Fr(NULL)i Ft(p)34
+b(oin)-34 b(ter)421 b(is)g(passed)h(for)f Fr(gloc)h Ft(and)4000
+37226 y Fr(glocB)406 b Ft(in)e(the)h(calls)e(to)h Fr(CVBBSPrecAlloc)409
+b Ft(and)c Fr(CVBBDPrecAllocB)p Ft(,)k(resp)34 b(ectivley)-101
+b(.)5882 38732 y(F)g(or)601 b(the)h(sak)-34 b(e)601 b(of)h(clarit)-34
+b(y)-101 b(,)649 b(the)602 b Fr(pvakx)h Ft(example)e(do)34
+b(es)601 b(not)h(use)g(the)f(most)h(memory-e\261cien)-34
+b(t)4000 40237 y(implemen)g(tation)543 b(p)34 b(ossible,)576
+b(as)542 b(the)g(lo)34 b(cal)541 b(segmen)-34 b(t)542
+b(of)g(the)h(solution)f(v)-34 b(ectors)542 b(\()p Fr(y)g
+Ft(on)h(the)f(forw)-34 b(ard)4000 41743 y(phase)417 b(and)g
+Fr(yB)g Ft(on)g(the)g(bac)-34 b(kw)g(ard)417 b(phase\))h(and)f(the)g
+(data)g(receiv)-34 b(ed)415 b(from)i(neigh)-34 b(b)34
+b(oring)416 b(pro)34 b(cesses)416 b(is)4000 43248 y(loaded)401
+b(in)-34 b(to)401 b(a)f(temp)34 b(orary)400 b(arra)-34
+b(y)399 b Fr(y)p 21103 43248 382 45 v 459 w(ext)i Ft(whic)-34
+b(h)401 b(is)f(then)h(used)g(exclusiv)-34 b(ely)399 b(in)h(computing)h
+(the)g(lo)34 b(cal)4000 44754 y(comp)g(onen)-34 b(ts)405
+b(of)g(the)f(righ)-34 b(t-hand)406 b(sides.)5882 46259
+y(Note)537 b(that)i(if)e Fr(pvakx)i Ft(is)e(giv)-34 b(en)537
+b(an)-34 b(y)538 b(command)g(line)f(argumen)-34 b(t,)571
+b(it)537 b(will)g(generate)g(a)g(series)g(of)4000 47765
+y(MA)-101 b(TLAB)482 b(\257les)g(whic)-34 b(h)483 b(can)f(b)34
+b(e)482 b(used)h(to)g(visualize)e(the)h(solution.)774
+b(Results)482 b(for)h(a)f(2-D)g(sim)-34 b(ulation)4000
+49270 y(and)448 b(adjoin)-34 b(t)449 b(sensitivit)-34
+b(y)447 b(analysis)h(with)g Fr(pvakx)h Ft(on)f(a)f(80)298
+b Fp(\243)g Ft(80)448 b(grid)f(and)h(2)298 b Fp(\243)g
+Ft(4)409 b(=)f(8)448 b(pro)34 b(cesses)446 b(are)4000
+50776 y(sho)-34 b(wn)417 b(in)e(Fig.)g(5.)572 b(Results)416
+b(in)g(3-D)21175 50336 y Fj(y)21648 50776 y Ft(,)f(on)h(a)f(80)277
+b Fp(\243)g Ft(80)g Fp(\243)f Ft(40)416 b(grid)f(and)h(2)277
+b Fp(\243)f Ft(4)h Fp(\243)g Ft(2)355 b(=)g(16)416 b(pro)34
+b(cesses)414 b(are)4000 52281 y(sho)-34 b(wn)347 b(in)e(Figs.)g(6)h
+(and)g(7.)1038 b(A)345 b(sample)h(output)h(generated)e(b)-34
+b(y)346 b Fr(pvakx)h Ft(for)f(a)f(2D)g(calculation)g(is)g(sho)-34
+b(wn)4000 53787 y(b)34 b(elo)-34 b(w.)p 4000 55768 17898
+45 v 22479 55834 a Fg(pvakx)582 b(sample)g(output)p 34102
+55768 V 4000 56568 45 801 v 51956 56568 V 4000 57896
+45 1329 v 4844 57497 a(Parallel)h(Krylov)f(adjoint)g(sensitivity)h
+(analysis)f(example)p 51956 57896 V 4000 59224 V 4844
+58826 a(2D)g(Advection)g(diffusion)h(PDE)e(with)h(homogeneous)h
+(Neumann)f(B.C.)p 51956 59224 V 4000 60553 V 4844 60154
+a(Computes)h(gradient)f(of)f(G)h(=)f(int_t_Omega)i(\()e(c_i^2)h(\))f
+(dt)h(dOmega)p 51956 60553 V 4000 61881 V 4844 61482
+a(with)g(respect)g(to)g(the)f(source)h(values)g(at)g(each)g(grid)f
+(point.)p 51956 61881 V 4000 63209 V 51956 63209 V 4000
+64538 V 4844 64139 a(Domain:)p 51956 64538 V 4000 65866
+V 6588 65468 a(0.000000)h(<)f(x)h(<)f(20.000000)1745
+b(mx)581 b(=)h(20)1162 b(npe_x)582 b(=)f(2)p 51956 65866
+V 4000 67194 V 6588 66796 a(0.000000)h(<)f(y)h(<)f(20.000000)1745
+b(my)581 b(=)h(40)1162 b(npe_y)582 b(=)f(2)p 51956 67194
+V 4000 68523 V 51956 68523 V 4000 69851 V 4844 69453
+a(Begin)h(forward)g(integration...)i(done.)1744 b(G)581
+b(=)g(3.723818e+03)p 51956 69851 V 4000 71179 V 51956
+71179 V 4000 72508 V 4844 72109 a(Final)h(Statistics..)p
+51956 72508 V 4000 73836 V 51956 73836 V 4000 75165 V
+4844 74766 a(lenrw)1745 b(=)e(8746)2906 b(leniw)582 b(=)2325
+b(212)p 51956 75165 V 4000 76493 V 4844 76094 a(llrw)h(=)1743
+b(8656)2906 b(lliw)1163 b(=)2906 b(80)p 51956 76493 V
+Black 4000 77248 19200 45 v 5406 77997 a Fi(y)5843 78420
+y Fh(The)341 b(name)h(of)f(executable)j(for)c(the)i(3-D)g(v)-28
+b(ersion)341 b(is)h Fb(pvakx3D)p Fh(.)p Black Black 27394
+81741 a Ft(33)p Black eop
+%%Page: 34 38
+34 37 bop Black Black Black 6000 34637 a @beginspecial
+14 @llx 14 @lly 428 @urx 315 @ury 3240 @rwi @setspecial
+%%BeginDocument: pvakx3Dcf.eps
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.12 by Peter Kirchgessner
+%%Title: /home/radu/CODES/sundials/cvodes/doc/pvakx3Dcf.eps
+%%CreationDate: Mon Nov 29 13:20:33 2004
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 428 315
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228 14.173228 translate
+% Translate to begin of first scanline
+0.000000 300.240000 translate
+413.040000 -300.240000 scale
+% Image geometry
+1721 1251 8
+% Transformation matrix
+[ 1721 0 0 1251 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 1721 string def
+/gstr 1721 string def
+/bstr 1721 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:       658515 ASCII Bytes
+colorimage
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcDABrrE*!rr at WMJcC<$JcC<$YlB4~>
+JcC<$JcC<$JcC<$JcDABrrE*!rr at WMJcC<$JcC<$YlB4~>
+JcC<$JcC<$JcC<$JcDABrrE*!rr at WMJcC<$JcC<$YlB4~>
+JcC<$JcC<$JcC<$JcDABrrE*!rr at WMJcC<$JcC<$YlB4~>
+JcC<$JcC<$JcC<$JcDABrrE*!rr at WMJcC<$JcC<$YlB4~>
+JcC<$JcC<$JcC<$JcDABrrE*!rr at WMJcC<$JcC<$YlB4~>
+JcC<$JcC<$JcC<$JcDYJq#LHprrE*!r;_EKJcC<$JcC<$[/YX~>
+JcC<$JcC<$JcC<$JcDYJq#LHprrE*!r;_EKJcC<$JcC<$[/YX~>
+JcC<$JcC<$JcC<$JcDYJq#LHprrE*!r;_EKJcC<$JcC<$[/YX~>
+JcC<$JcC<$JcC<$JcDYJq#LHprrE*!r;_EKJcC<$JcC<$[/YX~>
+JcC<$JcC<$JcC<$JcDYJq#LHprrE*!r;_EKJcC<$JcC<$[/YX~>
+JcC<$JcC<$JcC<$JcDYJq#LHprrE*!r;_EKJcC<$JcC<$[/YX~>
+JcC<$JcC<$JcC<$JcDqRq#L0hrrDrrr;_EKJcC<$JcC<$\Gq'~>
+JcC<$JcC<$JcC<$JcDqRq#L0hrrDrrr;_EKJcC<$JcC<$\Gq'~>
+JcC<$JcC<$JcC<$JcDqRq#L0hrrDrrr;_EKJcC<$JcC<$\Gq'~>
+JcC<$JcC<$JcC<$JcDqRq#L0hrrDrrr;_EKJcC<$JcC<$\Gq'~>
+JcC<$JcC<$JcC<$JcDqRq#L0hrrDrrr;_EKJcC<$JcC<$\Gq'~>
+JcC<$JcC<$JcC<$JcDqRq#L0hrrDrrr;_EKJcC<$JcC<$\Gq'~>
+JcC<$JcC<$JcC<$JcE.XqZ-*brrDfnr;_EKJcC<$JcC<$]`3K~>
+JcC<$JcC<$JcC<$JcE.XqZ-*brrDfnr;_EKJcC<$JcC<$]`3K~>
+JcC<$JcC<$JcC<$JcE.XqZ-*brrDfnr;_EKJcC<$JcC<$]`3K~>
+JcC<$JcC<$JcC<$JcE.XqZ-*brrDfnr;_EKJcC<$JcC<$]`3K~>
+JcC<$JcC<$JcC<$JcE.XqZ-*brrDfnr;_EKJcC<$JcC<$]`3K~>
+JcC<$JcC<$JcC<$JcE.XqZ-*brrDfnr;_EKJcC<$JcC<$]`3K~>
+JcC<$JcC<$JcC<$JcEF`q#K[ZrrDZjr;_EKJcC<$JcC<$_#Jo~>
+JcC<$JcC<$JcC<$JcEF`q#K[ZrrDZjr;_EKJcC<$JcC<$_#Jo~>
+JcC<$JcC<$JcC<$JcEF`q#K[ZrrDZjr;_EKJcC<$JcC<$_#Jo~>
+JcC<$JcC<$JcC<$JcEF`q#K[ZrrDZjr;_EKJcC<$JcC<$_#Jo~>
+JcC<$JcC<$JcC<$JcEF`q#K[ZrrDZjr;_EKJcC<$JcC<$_#Jo~>
+JcC<$JcC<$JcC<$JcEF`q#K[ZrrDZjr;_EKJcC<$JcC<$_#Jo~>
+JcC<$JcC<$JcC<$JcE^hq#KCRrrDNfr;_EKJcC<$JcC<$`;b>~>
+JcC<$JcC<$JcC<$JcE^hq#KCRrrDNfr;_EKJcC<$JcC<$`;b>~>
+JcC<$JcC<$JcC<$JcE^hq#KCRrrDNfr;_EKJcC<$JcC<$`;b>~>
+JcC<$JcC<$JcC<$JcE^hq#KCRrrDNfr;_EKJcC<$JcC<$`;b>~>
+JcC<$JcC<$JcC<$JcE^hq#KCRrrDNfr;_EKJcC<$JcC<$`;b>~>
+JcC<$JcC<$JcC<$JcE^hq#KCRrrDNfr;_EKJcC<$JcC<$`;b>~>
+JcC<$JcC<$JcC<$JcF!pq#K+JrrDBbqZ)3IJcC<$JcC<$b5Zt~>
+JcC<$JcC<$JcC<$JcF!pq#K+JrrDBbqZ)3IJcC<$JcC<$b5Zt~>
+JcC<$JcC<$JcC<$JcF!pq#K+JrrDBbqZ)3IJcC<$JcC<$b5Zt~>
+JcC<$JcC<$JcC<$JcF!pq#K+JrrDBbqZ)3IJcC<$JcC<$b5Zt~>
+JcC<$JcC<$JcC<$JcF!pq#K+JrrDBbqZ)3IJcC<$JcC<$b5Zt~>
+JcC<$JcC<$JcC<$JcF!pq#K+JrrDBbqZ)3IJcC<$JcC<$b5Zt~>
+JcC<$JcC<$JcC<$JcF4!qZ,%DrrD0\r;_EKJcC<$JcC<$cMrC~>
+JcC<$JcC<$JcC<$JcF4!qZ,%DrrD0\r;_EKJcC<$JcC<$cMrC~>
+JcC<$JcC<$JcC<$JcF4!qZ,%DrrD0\r;_EKJcC<$JcC<$cMrC~>
+JcC<$JcC<$JcC<$JcF4!qZ,%DrrD0\r;_EKJcC<$JcC<$cMrC~>
+JcC<$JcC<$JcC<$JcF4!qZ,%DrrD0\r;_EKJcC<$JcC<$cMrC~>
+JcC<$JcC<$JcC<$JcF4!qZ,%DrrD0\r;_EKJcC<$JcC<$cMrC~>
+JcC<$JcC<$JcC<$JcFL)q#JV<rrD$Xr;_EKJcC<$JcC<$df4g~>
+JcC<$JcC<$JcC<$JcFL)q#JV<rrD$Xr;_EKJcC<$JcC<$df4g~>
+JcC<$JcC<$JcC<$JcFL)q#JV<rrD$Xr;_EKJcC<$JcC<$df4g~>
+JcC<$JcC<$JcC<$JcFL)q#JV<rrD$Xr;_EKJcC<$JcC<$df4g~>
+JcC<$JcC<$JcC<$JcFL)q#JV<rrD$Xr;_EKJcC<$JcC<$df4g~>
+JcC<$JcC<$JcC<$JcFL)q#JV<rrD$Xr;_EKJcC<$JcC<$df4g~>
+JcC<$JcC<$JcC<$JcFd1q#J>4rrCmTr;_EKJcC<$JcC<$f)L7~>
+JcC<$JcC<$JcC<$JcFd1q#J>4rrCmTr;_EKJcC<$JcC<$f)L7~>
+JcC<$JcC<$JcC<$JcFd1q#J>4rrCmTr;_EKJcC<$JcC<$f)L7~>
+JcC<$JcC<$JcC<$JcFd1q#J>4rrCmTr;_EKJcC<$JcC<$f)L7~>
+JcC<$JcC<$JcC<$JcFd1q#J>4rrCmTr;_EKJcC<$JcC<$f)L7~>
+JcC<$JcC<$JcC<$JcFd1q#J>4rrCmTr;_EKJcC<$JcC<$f)L7~>
+JcC<$JcC<$JcC<$JcG!7qZ+8.rrCaPr;_EKJcC<$JcC<$gAc[~>
+JcC<$JcC<$JcC<$JcG!7qZ+8.rrCaPr;_EKJcC<$JcC<$gAc[~>
+JcC<$JcC<$JcC<$JcG!7qZ+8.rrCaPr;_EKJcC<$JcC<$gAc[~>
+JcC<$JcC<$JcC<$JcG!7qZ+8.rrCaPr;_EKJcC<$JcC<$gAc[~>
+JcC<$JcC<$JcC<$JcG!7qZ+8.rrCaPr;_EKJcC<$JcC<$gAc[~>
+JcC<$JcC<$JcC<$JcG!7qZ+8.rrCaPr;_EKJcC<$JcC<$gAc[~>
+JcC<$JcC<$JcC<$JcG9?q#Ii&rrCULr;_EKJcC<$JcC<$hZ&*~>
+JcC<$JcC<$JcC<$JcG9?q#Ii&rrCULr;_EKJcC<$JcC<$hZ&*~>
+JcC<$JcC<$JcC<$JcG9?q#Ii&rrCULr;_EKJcC<$JcC<$hZ&*~>
+JcC<$JcC<$JcC<$JcG9?q#Ii&rrCULr;_EKJcC<$JcC<$hZ&*~>
+JcC<$JcC<$JcC<$JcG9?q#Ii&rrCULr;_EKJcC<$JcC<$hZ&*~>
+JcC<$JcC<$JcC<$JcG9?q#Ii&rrCULr;_EKJcC<$JcC<$hZ&*~>
+JcC<$JcC<$JcC<$JcGQGq#IPsrrCIHqZ)3IJcC<$JcC<$jSs`~>
+JcC<$JcC<$JcC<$JcGQGq#IPsrrCIHqZ)3IJcC<$JcC<$jSs`~>
+JcC<$JcC<$JcC<$JcGQGq#IPsrrCIHqZ)3IJcC<$JcC<$jSs`~>
+JcC<$JcC<$JcC<$JcGQGq#IPsrrCIHqZ)3IJcC<$JcC<$jSs`~>
+JcC<$JcC<$JcC<$JcGQGq#IPsrrCIHqZ)3IJcC<$JcC<$jSs`~>
+JcC<$JcC<$JcC<$JcGQGq#IPsrrCIHqZ)3IJcC<$JcC<$jSs`~>
+JcC<$JcC<$JcC<$JcGcMqZ*JmrrC7Br;_EKJcC<$JcC<$kl6/~>
+JcC<$JcC<$JcC<$JcGcMqZ*JmrrC7Br;_EKJcC<$JcC<$kl6/~>
+JcC<$JcC<$JcC<$JcGcMqZ*JmrrC7Br;_EKJcC<$JcC<$kl6/~>
+JcC<$JcC<$JcC<$JcGcMqZ*JmrrC7Br;_EKJcC<$JcC<$kl6/~>
+JcC<$JcC<$JcC<$JcGcMqZ*JmrrC7Br;_EKJcC<$JcC<$kl6/~>
+JcC<$JcC<$JcC<$JcGcMqZ*JmrrC7Br;_EKJcC<$JcC<$kl6/~>
+JcC<$JcC<$JcC<$L]@/MTE"oka8c)<JcC<$JcC<$JcG*:J,~>
+JcC<$JcC<$JcC<$L]@/MTE"oka8c)<JcC<$JcC<$JcG*:J,~>
+JcC<$JcC<$JcC<$L]@/MTE"oka8c)<JcC<$JcC<$JcG*:J,~>
+JcC<$JcC<$JcC<$L]@/MTE"oka8c)<JcC<$JcC<$JcG*:J,~>
+JcC<$JcC<$JcC<$L]@/MTE"oka8c)<JcC<$JcC<$JcG*:J,~>
+JcC<$JcC<$JcC<$L]@/MTE"oka8c)<JcC<$JcC<$JcG*:J,~>
+JcC<$JcC<$JcC<$O8o"UQiI'c_uKZ8JcC<$JcC<$JcG6>J,~>
+JcC<$JcC<$JcC<$O8o"UQiI'c_uKZ8JcC<$JcC<$JcG6>J,~>
+JcC<$JcC<$JcC<$O8o"UQiI'c_uKZ8JcC<$JcC<$JcG6>J,~>
+JcC<$JcC<$JcC<$O8o"UQiI'c_uKZ8JcC<$JcC<$JcG6>J,~>
+JcC<$JcC<$JcC<$O8o"UQiI'c_uKZ8JcC<$JcC<$JcG6>J,~>
+JcC<$JcC<$JcC<$O8o"UQiI'c_uKZ8JcC<$JcC<$JcG6>J,~>
+JcC<$JcC<$JcC<$Q2g^]O8o4[^]464JcC<$JcC<$JcGBBJ,~>
+JcC<$JcC<$JcC<$Q2g^]O8o4[^]464JcC<$JcC<$JcGBBJ,~>
+JcC<$JcC<$JcC<$Q2g^]O8o4[^]464JcC<$JcC<$JcGBBJ,~>
+JcC<$JcC<$JcC<$Q2g^]O8o4[^]464JcC<$JcC<$JcGBBJ,~>
+JcC<$JcC<$JcC<$Q2g^]O8o4[^]464JcC<$JcC<$JcGBBJ,~>
+JcC<$JcC<$JcC<$Q2g^]O8o4[^]464JcC<$JcC<$JcGBBJ,~>
+JcC<$JcC<$JcC<$ScAKcM?!SU]Dqa.JcC<$JcC<$JcGTHJ,~>
+JcC<$JcC<$JcC<$ScAKcM?!SU]Dqa.JcC<$JcC<$JcGTHJ,~>
+JcC<$JcC<$JcC<$ScAKcM?!SU]Dqa.JcC<$JcC<$JcGTHJ,~>
+JcC<$JcC<$JcC<$ScAKcM?!SU]Dqa.JcC<$JcC<$JcGTHJ,~>
+JcC<$JcC<$JcC<$ScAKcM?!SU]Dqa.JcC<$JcC<$JcGTHJ,~>
+JcC<$JcC<$JcC<$ScAKcM?!SU]Dqa.JcC<$JcC<$JcGTHJ,~>
+JcC<$JcC<$JcC<$V>p>kJcG`M[K$1*JcC<$JcC<$JcG`LJ,~>
+JcC<$JcC<$JcC<$V>p>kJcG`M[K$1*JcC<$JcC<$JcG`LJ,~>
+JcC<$JcC<$JcC<$V>p>kJcG`M[K$1*JcC<$JcC<$JcG`LJ,~>
+JcC<$JcC<$JcC<$V>p>kJcG`M[K$1*JcC<$JcC<$JcG`LJ,~>
+JcC<$JcC<$JcC<$V>p>kJcG`M[K$1*JcC<$JcC<$JcG`LJ,~>
+JcC<$JcC<$JcC<$V>p>kJcG`M[K$1*JcC<$JcC<$JcG`LJ,~>
+JcC<$JcC<$JcC<$XoJ1sJcGQGrrB>(r;_EKJcC<$JcC?%J,~>
+JcC<$JcC<$JcC<$XoJ1sJcGQGrrB>(r;_EKJcC<$JcC?%J,~>
+JcC<$JcC<$JcC<$XoJ1sJcGQGrrB>(r;_EKJcC<$JcC?%J,~>
+JcC<$JcC<$JcC<$XoJ1sJcGQGrrB>(r;_EKJcC<$JcC?%J,~>
+JcC<$JcC<$JcC<$XoJ1sJcGQGrrB>(r;_EKJcC<$JcC?%J,~>
+JcC<$JcC<$JcC<$XoJ1sJcGQGrrB>(r;_EKJcC<$JcC?%J,~>
+JcC<$JcC<$JcC<$ZiBn&JcG9?rrB2$r;_EKJcC<$JcCK)J,~>
+JcC<$JcC<$JcC<$ZiBn&JcG9?rrB2$r;_EKJcC<$JcCK)J,~>
+JcC<$JcC<$JcC<$ZiBn&JcG9?rrB2$r;_EKJcC<$JcCK)J,~>
+JcC<$JcC<$JcC<$ZiBn&JcG9?rrB2$r;_EKJcC<$JcCK)J,~>
+JcC<$JcC<$JcC<$ZiBn&JcG9?rrB2$r;_EKJcC<$JcCK)J,~>
+JcC<$JcC<$JcC<$ZiBn&JcG9?rrB2$r;_EKJcC<$JcCK)J,~>
+JcC<$JcC<$JcC<$]Dq[,JcG'9rrB%ur;_EKJcC<$JcCW-J,~>
+JcC<$JcC<$JcC<$]Dq[,JcG'9rrB%ur;_EKJcC<$JcCW-J,~>
+JcC<$JcC<$JcC<$]Dq[,JcG'9rrB%ur;_EKJcC<$JcCW-J,~>
+JcC<$JcC<$JcC<$]Dq[,JcG'9rrB%ur;_EKJcC<$JcCW-J,~>
+JcC<$JcC<$JcC<$]Dq[,JcG'9rrB%ur;_EKJcC<$JcCW-J,~>
+JcC<$JcC<$JcC<$]Dq[,JcG'9rrB%ur;_EKJcC<$JcCW-J,~>
+JcC<$JcC<$JcC<$_uKN4JcFd1rrAnqr;_EKJcC<$JcCc1J,~>
+JcC<$JcC<$JcC<$_uKN4JcFd1rrAnqr;_EKJcC<$JcCc1J,~>
+JcC<$JcC<$JcC<$_uKN4JcFd1rrAnqr;_EKJcC<$JcCc1J,~>
+JcC<$JcC<$JcC<$_uKN4JcFd1rrAnqr;_EKJcC<$JcCc1J,~>
+JcC<$JcC<$JcC<$_uKN4JcFd1rrAnqr;_EKJcC<$JcCc1J,~>
+JcC<$JcC<$JcC<$_uKN4JcFd1rrAnqr;_EKJcC<$JcCc1J,~>
+JcC<$JcC<$JcC<$aoD5<s8W+JJcFX-rrAbmqZ)3IJcC<$JcCu7J,~>
+JcC<$JcC<$JcC<$aoD5<s8W+JJcFX-rrAbmqZ)3IJcC<$JcCu7J,~>
+JcC<$JcC<$JcC<$aoD5<s8W,=JcFX-rrAbmqZ)3IJcC<$JcCu7J,~>
+JcC<$JcC<$JcC<$aoD5<s8W+JJcFX-rrAbmqZ)3IJcC<$JcCu7J,~>
+JcC<$JcC<$JcC<$aoD5<s8W+JJcFX-rrAbmqZ)3IJcC<$JcCu7J,~>
+JcC<$JcC<$JcC<$aoD5<s8W,=JcFX-rrAbmqZ)3IJcC<$JcCu7J,~>
+JcC<$JcC<$JcC<$dJs"Bq>^>@JcFd1rrAPgr;_EKJcC<$JcD,;J,~>
+JcC<$JcC<$JcC<$dJs"Bq>^>@JcFd1rrAPgr;_EKJcC<$JcD,;J,~>
+JcC<$JcC<$JcC<$dJs"Bq>^?3JcFd1rrAPgr;_EKJcC<$JcD,;J,~>
+JcC<$JcC<$JcC<$dJs"Bq>^>@JcFd1rrAPgr;_EKJcC<$JcD,;J,~>
+JcC<$JcC<$JcC<$dJs"Bq>^>@JcFd1rrAPgr;_EKJcC<$JcD,;J,~>
+JcC<$JcC<$JcC<$dJs"Bq>^?3JcFd1rrAPgr;_EKJcC<$JcD,;J,~>
+JcC<$JcC<$JcC<$g&LjJnc/?4JcFp5rrADcr;_EKJcC<$JcD8?J,~>
+JcC<$JcC<$JcC<$g&LjJnc/?4JcFp5rrADcr;_EKJcC<$JcD8?J,~>
+JcC<$JcC<$JcC<$g&LjJnc/@'JcFp5rrADcr;_EKJcC<$JcD8?J,~>
+JcC<$JcC<$JcC<$g&LjJnc/?4JcFp5rrADcr;_EKJcC<$JcD8?J,~>
+JcC<$JcC<$JcC<$g&LjJnc/?4JcFp5rrADcr;_EKJcC<$JcD8?J,~>
+JcC<$JcC<$JcC<$g&LjJnc/@'JcFp5rrADcr;_EKJcC<$JcD8?J,~>
+JcC<$JcC<$JcC<$huEQRl2U@(JcG'9rrA8_r;_EKJcC<$JcDDCJ,~>
+JcC<$JcC<$JcC<$huEQRl2U@(JcG'9rrA8_r;_EKJcC<$JcDDCJ,~>
+JcC<$JcC<$JcC<$huEQRl2U at pJcG'9rrA8_r;_EKJcC<$JcDDCJ,~>
+JcC<$JcC<$JcC<$huEQRl2U@(JcG'9rrA8_r;_EKJcC<$JcDDCJ,~>
+JcC<$JcC<$JcC<$huEQRl2U@(JcG'9rrA8_r;_EKJcC<$JcDDCJ,~>
+JcC<$JcC<$JcC<$huEQRl2U at pJcG'9rrA8_r;_EKJcC<$JcDDCJ,~>
+JcC<$JcC<$JcC<$kPt>Xj8\LqJcG9?rrA,[r;_EKJcC<$JcDPGJ,~>
+JcC<$JcC<$JcC<$kPt>Xj8\LqJcG9?rrA,[r;_EKJcC<$JcDPGJ,~>
+JcC<$JcC<$JcC<$kPt>Xj8\MdJcG9?rrA,[r;_EKJcC<$JcDPGJ,~>
+JcC<$JcC<$JcC<$kPt>Xj8\LqJcG9?rrA,[r;_EKJcC<$JcDPGJ,~>
+JcC<$JcC<$JcC<$kPt>Xj8\LqJcG9?rrA,[r;_EKJcC<$JcDPGJ,~>
+JcC<$JcC<$JcC<$kPt>Xj8\MdJcG9?rrA,[r;_EKJcC<$JcDPGJ,~>
+JcC<$JcC<$JcC<$n,N1`g]-MeJcGECrr at uWr;_EKJcC<$JcD\KJ,~>
+JcC<$JcC<$JcC<$n,N1`g]-MeJcGECrr at uWr;_EKJcC<$JcD\KJ,~>
+JcC<$JcC<$JcC<$n,N1`g]-NXJcGECrr at uWr;_EKJcC<$JcD\KJ,~>
+JcC<$JcC<$JcC<$n,N1`g]-MeJcGECrr at uWr;_EKJcC<$JcD\KJ,~>
+JcC<$JcC<$JcC<$n,N1`g]-MeJcGECrr at uWr;_EKJcC<$JcD\KJ,~>
+JcC<$JcC<$JcC<$n,N1`g]-NXJcGECrr at uWr;_EKJcC<$JcD\KJ,~>
+JcC<$JcC<$JcC<$p&Fmhe,SNYJcGQGrr at iSqZ)3IJcC<$JcDnQJ,~>
+JcC<$JcC<$JcC<$p&Fmhe,SNYJcGQGrr at iSqZ)3IJcC<$JcDnQJ,~>
+JcC<$JcC<$JcC<$p&Fmhe,SOLJcGQGrr at iSqZ)3IJcC<$JcDnQJ,~>
+JcC<$JcC<$JcC<$p&Fmhe,SNYJcGQGrr at iSqZ)3IJcC<$JcDnQJ,~>
+JcC<$JcC<$JcC<$p&Fmhe,SNYJcGQGrr at iSqZ)3IJcC<$JcDnQJ,~>
+JcC<$JcC<$JcC<$p&Fmhe,SOLJcGQGrr at iSqZ)3IJcC<$JcDnQJ,~>
+JcC<$JcC<$JcC<$rVuZnc2ZaOJcG]Krr at WMr;_EKJcC<$JcE%UJ,~>
+JcC<$JcC<$JcC<$rVuZnc2ZaOJcG]Krr at WMr;_EKJcC<$JcE%UJ,~>
+JcC<$JcC<$JcC<$rVuZnc2ZbBJcG]Krr at WMr;_EKJcC<$JcE%UJ,~>
+JcC<$JcC<$JcC<$rVuZnc2ZaOJcG]Krr at WMr;_EKJcC<$JcE%UJ,~>
+JcC<$JcC<$JcC<$rVuZnc2ZaOJcG]Krr at WMr;_EKJcC<$JcE%UJ,~>
+JcC<$JcC<$JcC<$rVuZnc2ZbBJcG]Krr at WMr;_EKJcC<$JcE%UJ,~>
+JcC<$JcC<$JcCH(q#JD6h0sqTrr at WMrVufrJcC<$JcC<$[f:j~>
+JcC<$JcC<$JcCH(q#JD6h0sqTrr at WMrVufrJcC<$JcC<$[f:j~>
+JcC<$JcC<$JcCH(q#JD6h8Y$Grr at WMrVufrJcC<$JcC<$[f:j~>
+JcC<$JcC<$JcCH(q#JD6h0sqTrr at WMrVufrJcC<$JcC<$[f:j~>
+JcC<$JcC<$JcCH(q#JD6h0sqTrr at WMrVufrJcC<$JcC<$[f:j~>
+JcC<$JcC<$JcCH(q#JD6h8Y$Grr at WMrVufrJcC<$JcC<$[f:j~>
+JcC<$JcC<$JcC`0q#J,.fm\YTrr at WMq>^BnJcC<$JcC<$])R9~>
+JcC<$JcC<$JcC`0q#J,.fm\YTrr at WMq>^BnJcC<$JcC<$])R9~>
+JcC<$JcC<$JcC`0q#J,.fuAaGrr at WMq>^BnJcC<$JcC<$])R9~>
+JcC<$JcC<$JcC`0q#J,.fm\YTrr at WMq>^BnJcC<$JcC<$])R9~>
+JcC<$JcC<$JcC`0q#J,.fm\YTrr at WMq>^BnJcC<$JcC<$])R9~>
+JcC<$JcC<$JcC`0q#J,.fuAaGrr at WMq>^BnJcC<$JcC<$])R9~>
+JcC<$JcC<$JcCr6qZ+&(dsd5Trr at WMp&FsjJcC<$JcC<$^Ai]~>
+JcC<$JcC<$JcCr6qZ+&(dsd5Trr at WMp&FsjJcC<$JcC<$^Ai]~>
+JcC<$JcC<$JcCr6qZ+&(e&I=Grr at WMp&FsjJcC<$JcC<$^Ai]~>
+JcC<$JcC<$JcCr6qZ+&(dsd5Trr at WMp&FsjJcC<$JcC<$^Ai]~>
+JcC<$JcC<$JcCr6qZ+&(dsd5Trr at WMp&FsjJcC<$JcC<$^Ai]~>
+JcC<$JcC<$JcCr6qZ+&(e&I=Grr at WMp&FsjJcC<$JcC<$^Ai]~>
+JcC<$JcC<$JcD5>q#IVuc[LrTrr at WMnc/OfJcC<$JcC<$_Z,,~>
+JcC<$JcC<$JcD5>q#IVuc[LrTrr at WMnc/OfJcC<$JcC<$_Z,,~>
+JcC<$JcC<$JcD5>q#IVucc2%Grr at WMnc/OfJcC<$JcC<$_Z,,~>
+JcC<$JcC<$JcD5>q#IVuc[LrTrr at WMnc/OfJcC<$JcC<$_Z,,~>
+JcC<$JcC<$JcD5>q#IVuc[LrTrr at WMnc/OfJcC<$JcC<$_Z,,~>
+JcC<$JcC<$JcD5>q#IVucc2%Grr at WMnc/OfJcC<$JcC<$_Z,,~>
+JcC<$JcC<$JcDMFq#I>mbC5ZTrr at WMmJm%`JcC<$JcC<$aT$b~>
+JcC<$JcC<$JcDMFq#I>mbC5ZTrr at WMmJm%`JcC<$JcC<$aT$b~>
+JcC<$JcC<$JcDMFq#I>mbJobGrr at WMmJm%`JcC<$JcC<$aT$b~>
+JcC<$JcC<$JcDMFq#I>mbC5ZTrr at WMmJm%`JcC<$JcC<$aT$b~>
+JcC<$JcC<$JcDMFq#I>mbC5ZTrr at WMmJm%`JcC<$JcC<$aT$b~>
+JcC<$JcC<$JcDMFq#I>mbJobGrr at WMmJm%`JcC<$JcC<$aT$b~>
+JcC<$JcC<$JcD_LqZ*8ga*sBTrr at WMkPtJ\JcC<$JcC<$bl<1~>
+JcC<$JcC<$JcD_LqZ*8ga*sBTrr at WMkPtJ\JcC<$JcC<$bl<1~>
+JcC<$JcC<$JcD_LqZ*8ga2XJGrr at WMkPtJ\JcC<$JcC<$bl<1~>
+JcC<$JcC<$JcD_LqZ*8ga*sBTrr at WMkPtJ\JcC<$JcC<$bl<1~>
+JcC<$JcC<$JcD_LqZ*8ga*sBTrr at WMkPtJ\JcC<$JcC<$bl<1~>
+JcC<$JcC<$JcD_LqZ*8ga2XJGrr at WMkPtJ\JcC<$JcC<$bl<1~>
+JcC<$JcC<$JcE"Tq#Hi__g\*Trr at WMj8]&XJcC<$JcC<$d/SU~>
+JcC<$JcC<$JcE"Tq#Hi__g\*Trr at WMj8]&XJcC<$JcC<$d/SU~>
+JcC<$JcC<$JcE"Tq#Hi__oA2Grr at WMj8]&XJcC<$JcC<$d/SU~>
+JcC<$JcC<$JcE"Tq#Hi__g\*Trr at WMj8]&XJcC<$JcC<$d/SU~>
+JcC<$JcC<$JcE"Tq#Hi__g\*Trr at WMj8]&XJcC<$JcC<$d/SU~>
+JcC<$JcC<$JcE"Tq#Hi__oA2Grr at WMj8]&XJcC<$JcC<$d/SU~>
+JcC<$JcC<$JcE:\q#HQW]mc[Trr at WMhuEWTJcC<$JcC<$eGk%~>
+JcC<$JcC<$JcE:\q#HQW]mc[Trr at WMhuEWTJcC<$JcC<$eGk%~>
+JcC<$JcC<$JcE:\q#HQW]uHcGrr at WMhuEWTJcC<$JcC<$eGk%~>
+JcC<$JcC<$JcE:\q#HQW]mc[Trr at WMhuEWTJcC<$JcC<$eGk%~>
+JcC<$JcC<$JcE:\q#HQW]mc[Trr at WMhuEWTJcC<$JcC<$eGk%~>
+JcC<$JcC<$JcE:\q#HQW]uHcGrr at WMhuEWTJcC<$JcC<$eGk%~>
+JcC<$JcC<$JcELbqZ)KQ\ULCTrr at WMg].3PJcC<$JcC<$f`-I~>
+JcC<$JcC<$JcELbqZ)KQ\ULCTrr at WMg].3PJcC<$JcC<$f`-I~>
+JcC<$JcC<$JcELbqZ)KQ\]1KGrr at WMg].3PJcC<$JcC<$f`-I~>
+JcC<$JcC<$JcELbqZ)KQ\ULCTrr at WMg].3PJcC<$JcC<$f`-I~>
+JcC<$JcC<$JcELbqZ)KQ\ULCTrr at WMg].3PJcC<$JcC<$f`-I~>
+JcC<$JcC<$JcELbqZ)KQ\]1KGrr at WMg].3PJcC<$JcC<$f`-I~>
+JcC<$JcC<$JcEdjq#H'I[=5+Trr at WMfDkdLJcC<$JcC<$h#Dm~>
+JcC<$JcC<$JcEdjq#H'I[=5+Trr at WMfDkdLJcC<$JcC<$h#Dm~>
+JcC<$JcC<$JcEdjq#H'I[Do3Grr at WMfDkdLJcC<$JcC<$h#Dm~>
+JcC<$JcC<$JcEdjq#H'I[=5+Trr at WMfDkdLJcC<$JcC<$h#Dm~>
+JcC<$JcC<$JcEdjq#H'I[=5+Trr at WMfDkdLJcC<$JcC<$h#Dm~>
+JcC<$JcC<$JcEdjq#H'I[Do3Grr at WMfDkdLJcC<$JcC<$h#Dm~>
+JcC<$JcC<$JcF'rq#H!Gqu<pMXoJD$JcF4!qZ)3IJcC<$JcFa0J,~>
+JcC<$JcC<$JcF'rq#H!Gqu<pMXoJD$JcF4!qZ)3IJcC<$JcFa0J,~>
+JcC<$JcC<$JcF'rq#H!Gqu<q at XoJD$JcF4!qZ)3IJcC<$JcFa0J,~>
+JcC<$JcC<$JcF'rq#H!Gqu<pMXoJD$JcF4!qZ)3IJcC<$JcFa0J,~>
+JcC<$JcC<$JcF'rq#H!Gqu<pMXoJD$JcF4!qZ)3IJcC<$JcFa0J,~>
+JcC<$JcC<$JcF'rq#H!Gqu<q at XoJD$JcF4!qZ)3IJcC<$JcFa0J,~>
+JcC<$JcC<$JcF:#qZ)3IoDbqAZ2ah(JcF!pr;_EKJcC<$JcFm4J,~>
+JcC<$JcC<$JcF:#qZ)3IoDbqAZ2ah(JcF!pr;_EKJcC<$JcFm4J,~>
+JcC<$JcC<$JcF:#qZ)3IoDbr4Z2ah(JcF!pr;_EKJcC<$JcFm4J,~>
+JcC<$JcC<$JcF:#qZ)3IoDbqAZ2ah(JcF!pr;_EKJcC<$JcFm4J,~>
+JcC<$JcC<$JcF:#qZ)3IoDbqAZ2ah(JcF!pr;_EKJcC<$JcFm4J,~>
+JcC<$JcC<$JcF:#qZ)3IoDbr4Z2ah(JcF!pr;_EKJcC<$JcFm4J,~>
+JcC<$JcC<$JcFR+q#H!GmJj/7[K$7,JcEjlr;_EKJcC<$JcG$8J,~>
+JcC<$JcC<$JcFR+q#H!GmJj/7[K$7,JcEjlr;_EKJcC<$JcG$8J,~>
+JcC<$JcC<$JcFR+q#H!GmJj0*[K$7,JcEjlr;_EKJcC<$JcG$8J,~>
+JcC<$JcC<$JcFR+q#H!GmJj/7[K$7,JcEjlr;_EKJcC<$JcG$8J,~>
+JcC<$JcC<$JcFR+q#H!GmJj/7[K$7,JcEjlr;_EKJcC<$JcG$8J,~>
+JcC<$JcC<$JcFR+q#H!GmJj0*[K$7,JcEjlr;_EKJcC<$JcG$8J,~>
+JcC<$JcC<$JcFj3q#H!Gjo;*)]Dqm2JcE^hr;_EKJcC<$JcG0<J,~>
+JcC<$JcC<$JcFj3q#H!Gjo;*)]Dqm2JcE^hr;_EKJcC<$JcG0<J,~>
+JcC<$JcC<$JcFj3q#H!Gjo;*q]Dqm2JcE^hr;_EKJcC<$JcG0<J,~>
+JcC<$JcC<$JcFj3q#H!Gjo;*)]Dqm2JcE^hr;_EKJcC<$JcG0<J,~>
+JcC<$JcC<$JcFj3q#H!Gjo;*)]Dqm2JcE^hr;_EKJcC<$JcG0<J,~>
+JcC<$JcC<$JcFj3q#H!Gjo;*q]Dqm2JcE^hr;_EKJcC<$JcG0<J,~>
+JcC<$JcC<$JcG-;q#H!Gh>a*r^]4<6JcERdr;_EKJcC<$JcG<@J,~>
+JcC<$JcC<$JcG-;q#H!Gh>a*r^]4<6JcERdr;_EKJcC<$JcG<@J,~>
+JcC<$JcC<$JcG-;q#H!Gh>a+e^]4<6JcERdr;_EKJcC<$JcG<@J,~>
+JcC<$JcC<$JcG-;q#H!Gh>a*r^]4<6JcERdr;_EKJcC<$JcG<@J,~>
+JcC<$JcC<$JcG-;q#H!Gh>a*r^]4<6JcERdr;_EKJcC<$JcG<@J,~>
+JcC<$JcC<$JcG-;q#H!Gh>a+e^]4<6JcERdr;_EKJcC<$JcG<@J,~>
+JcC<$JcC<$JcG?AqZ)3Iec2+f_uK`:JcEF`qZ)3IJcC<$JcGNFJ,~>
+JcC<$JcC<$JcG?AqZ)3Iec2+f_uK`:JcEF`qZ)3IJcC<$JcGNFJ,~>
+JcC<$JcC<$JcG?AqZ)3Iec2,Y_uK`:JcEF`qZ)3IJcC<$JcGNFJ,~>
+JcC<$JcC<$JcG?AqZ)3Iec2+f_uK`:JcEF`qZ)3IJcC<$JcGNFJ,~>
+JcC<$JcC<$JcG?AqZ)3Iec2+f_uK`:JcEF`qZ)3IJcC<$JcGNFJ,~>
+JcC<$JcC<$JcG?AqZ)3Iec2,Y_uK`:JcEF`qZ)3IJcC<$JcGNFJ,~>
+JcC<$JcC<$JcGWIq#H!Gci9>\a8c/>JcE4Zr;_EKJcC<$JcGZJJ,~>
+JcC<$JcC<$JcGWIq#H!Gci9>\a8c/>JcE4Zr;_EKJcC<$JcGZJJ,~>
+JcC<$JcC<$JcGWIq#H!Gci9?Oa8c/>JcE4Zr;_EKJcC<$JcGZJJ,~>
+JcC<$JcC<$JcGWIq#H!Gci9>\a8c/>JcE4Zr;_EKJcC<$JcGZJJ,~>
+JcC<$JcC<$JcGWIq#H!Gci9>\a8c/>JcE4Zr;_EKJcC<$JcGZJJ,~>
+JcC<$JcC<$JcGWIq#H!Gci9?Oa8c/>JcE4Zr;_EKJcC<$JcGZJJ,~>
+JcC<$JcC<$KE(`IJcEdjPCC^Trr at WMZiBt(JcC<$JcC<$!<7Q~>
+JcC<$JcC<$KE(`IJcEdjPCC^Trr at WMZiBt(JcC<$JcC<$!<7Q~>
+JcC<$JcC<$KE(`IJcEdjPK(fGrr at WMZiBt(JcC<$JcC<$!<7Q~>
+JcC<$JcC<$KE(`IJcEdjPCC^Trr at WMZiBt(JcC<$JcC<$!<7Q~>
+JcC<$JcC<$KE(`IJcEdjPCC^Trr at WMZiBt(JcC<$JcC<$!<7Q~>
+JcC<$JcC<$KE(`IJcEdjPK(fGrr at WMZiBt(JcC<$JcC<$!<7Q~>
+JcC<$JcC<$M?!GQJcELbO+,FTrr at WMYQ+P$JcC<$JcCE'J,~>
+JcC<$JcC<$M?!GQJcELbO+,FTrr at WMYQ+P$JcC<$JcCE'J,~>
+JcC<$JcC<$M?!GQJcELbO2fNGrr at WMYQ+P$JcC<$JcCE'J,~>
+JcC<$JcC<$M?!GQJcELbO+,FTrr at WMYQ+P$JcC<$JcCE'J,~>
+JcC<$JcC<$M?!GQJcELbO+,FTrr at WMYQ+P$JcC<$JcCE'J,~>
+JcC<$JcC<$M?!GQJcELbO2fNGrr at WMYQ+P$JcC<$JcCE'J,~>
+JcC<$JcC<$OoP4WJcE:\M14"Trr at WMX8i+uJcC<$JcCQ+J,~>
+JcC<$JcC<$OoP4WJcE:\M14"Trr at WMX8i+uJcC<$JcCQ+J,~>
+JcC<$JcC<$OoP4WJcE:\M8n*Grr at WMX8i+uJcC<$JcCQ+J,~>
+JcC<$JcC<$OoP4WJcE:\M14"Trr at WMX8i+uJcC<$JcCQ+J,~>
+JcC<$JcC<$OoP4WJcE:\M14"Trr at WMX8i+uJcC<$JcCQ+J,~>
+JcC<$JcC<$OoP4WJcE:\M8n*Grr at WMX8i+uJcC<$JcCQ+J,~>
+JcC<$JcC<$RK*'_JcE"TKmq_Trr at WMVuQ\qJcC<$JcC]/J,~>
+JcC<$JcC<$RK*'_JcE"TKmq_Trr at WMVuQ\qJcC<$JcC]/J,~>
+JcC<$JcC<$RK*'_JcE"TKuVgGrr at WMVuQ\qJcC<$JcC]/J,~>
+JcC<$JcC<$RK*'_JcE"TKmq_Trr at WMVuQ\qJcC<$JcC]/J,~>
+JcC<$JcC<$RK*'_JcE"TKmq_Trr at WMVuQ\qJcC<$JcC]/J,~>
+JcC<$JcC<$RK*'_JcE"TKuVgGrr at WMVuQ\qJcC<$JcC]/J,~>
+JcC<$JcC<$TE"cgJcD_LJUZGTrr at WMU]:2kJcC<$JcCo5J,~>
+JcC<$JcC<$TE"cgJcD_LJUZGTrr at WMU]:2kJcC<$JcCo5J,~>
+JcC<$JcC<$TE"cgJcD_LJ]?OGrr at WMU]:2kJcC<$JcCo5J,~>
+JcC<$JcC<$TE"cgJcD_LJUZGTrr at WMU]:2kJcC<$JcCo5J,~>
+JcC<$JcC<$TE"cgJcD_LJUZGTrr at WMU]:2kJcC<$JcCo5J,~>
+JcC<$JcC<$TE"cgJcD_LJ]?OGrr at WMU]:2kJcC<$JcCo5J,~>
+JcC<$JcC<$VuQPmJcDMFJU[QHiW&oXJcD;@r;_EKJcC<$QN)I~>
+JcC<$JcC<$VuQPmJcDMFJU[QHiW&oXJcD;@r;_EKJcC<$QN)I~>
+JcC<$JcC<$VuQPmJcDMFJ]@Z.iW&oXJcD;@r;_EKJcC<$QN)I~>
+JcC<$JcC<$VuQPmJcDMFJU[QHiW&oXJcD;@r;_EKJcC<$QN)I~>
+JcC<$JcC<$VuQPmJcDMFJU[QHiW&oXJcD;@r;_EKJcC<$QN)I~>
+JcC<$JcC<$VuQPmJcDMFJ]@Z.iW&oXJcD;@r;_EKJcC<$QN)I~>
+JcC<$JcC<$YQ+CuJcD5>JU[EDjo>>\JcD/<r;_EKJcC<$Rf at m~>
+JcC<$JcC<$YQ+CuJcD5>JU[EDjo>>\JcD/<r;_EKJcC<$Rf at m~>
+JcC<$JcC<$YQ+CuJcD5>J]@N*jo>>\JcD/<r;_EKJcC<$Rf at m~>
+JcC<$JcC<$YQ+CuJcD5>JU[EDjo>>\JcD/<r;_EKJcC<$Rf at m~>
+JcC<$JcC<$YQ+CuJcD5>JU[EDjo>>\JcD/<r;_EKJcC<$Rf at m~>
+JcC<$JcC<$YQ+CuJcD5>J]@N*jo>>\JcD/<r;_EKJcC<$Rf at m~>
+JcC<$JcC<$\,Z7(JcCr6JU[3>li6tbJcD#8r;_EKJcC<$T)X<~>
+JcC<$JcC<$\,Z7(JcCr6JU[3>li6tbJcD#8r;_EKJcC<$T)X<~>
+JcC<$JcC<$\,Z7(JcCr6J]@<$li6tbJcD#8r;_EKJcC<$T)X<~>
+JcC<$JcC<$\,Z7(JcCr6JU[3>li6tbJcD#8r;_EKJcC<$T)X<~>
+JcC<$JcC<$\,Z7(JcCr6JU[3>li6tbJcD#8r;_EKJcC<$T)X<~>
+JcC<$JcC<$\,Z7(JcCr6J]@<$li6tbJcD#8r;_EKJcC<$T)X<~>
+JcC<$JcC<$^&Rs0JcCZ.JU[':n,NCfJcCl4r;_EKJcC<$UAo`~>
+JcC<$JcC<$^&Rs0JcCZ.JU[':n,NCfJcCl4r;_EKJcC<$UAo`~>
+JcC<$JcC<$^&Rs0JcCZ.J]@/un,NCfJcCl4r;_EKJcC<$UAo`~>
+JcC<$JcC<$^&Rs0JcCZ.JU[':n,NCfJcCl4r;_EKJcC<$UAo`~>
+JcC<$JcC<$^&Rs0JcCZ.JU[':n,NCfJcCl4r;_EKJcC<$UAo`~>
+JcC<$JcC<$^&Rs0JcCZ.J]@/un,NCfJcCl4r;_EKJcC<$UAo`~>
+JcC<$JcC<$`W,`6JcCH(JUZp6oDegjJcC`0r;_EKJcC<$VZ2/~>
+JcC<$JcC<$`W,`6JcCH(JUZp6oDegjJcC`0r;_EKJcC<$VZ2/~>
+JcC<$JcC<$`W,`6JcCH(J]@#qoDegjJcC`0r;_EKJcC<$VZ2/~>
+JcC<$JcC<$`W,`6JcCH(JUZp6oDegjJcC`0r;_EKJcC<$VZ2/~>
+JcC<$JcC<$`W,`6JcCH(JUZp6oDegjJcC`0r;_EKJcC<$VZ2/~>
+JcC<$JcC<$`W,`6JcCH(J]@#qoDegjJcC`0r;_EKJcC<$VZ2/~>
+JcC<$JcC<$c2[S>JcC<$rVqFtkC31*rr at WMM?!GQJcC<$JcDhOJ,~>
+JcC<$JcC<$c2[S>JcC<$rVqFtkC31*rr at WMM?!GQJcC<$JcDhOJ,~>
+JcC<$JcC<$c2[S>JcC<$rVqGgkJm8rrr at WMM?!GQJcC<$JcDhOJ,~>
+JcC<$JcC<$c2[S>JcC<$rVqFtkC31*rr at WMM?!GQJcC<$JcDhOJ,~>
+JcC<$JcC<$c2[S>JcC<$rVqFtkC31*rr at WMM?!GQJcC<$JcDhOJ,~>
+JcC<$JcC<$c2[S>JcC<$rVqGgkJm8rrr at WMM?!GQJcC<$JcDhOJ,~>
+JcC<$JcC<$e,T:FJcC<$p&BSlj*pn*rr at WMMuWa)rVufrJcC<$JcDtSJ,~>
+JcC<$JcC<$e,T:FJcC<$p&BSlj*pn*rr at WMMuWa)rVufrJcC<$JcDtSJ,~>
+JcC<$JcC<$e,T:FJcC<$p&BT_j2Uurrr at WMMuWaqrVufrJcC<$JcDtSJ,~>
+JcC<$JcC<$e,T:FJcC<$p&BSlj*pn*rr at WMMuWa)rVufrJcC<$JcDtSJ,~>
+JcC<$JcC<$e,T:FJcC<$p&BSlj*pn*rr at WMMuWa)rVufrJcC<$JcDtSJ,~>
+JcC<$JcC<$e,T:FJcC<$p&BT_j2Uurrr at WMMuWaqrVufrJcC<$JcDtSJ,~>
+JcC<$JcC<$g].'LJcC<$n,Irfj*pn*rr at WMPQ1<)q>^BnJcC<$JcE+WJ,~>
+JcC<$JcC<$g].'LJcC<$n,Irfj*pn*rr at WMPQ1<)q>^BnJcC<$JcE+WJ,~>
+JcC<$JcC<$g].'LJcC<$n,IsYj2Uurrr at WMPQ1<qq>^BnJcC<$JcE+WJ,~>
+JcC<$JcC<$g].'LJcC<$n,Irfj*pn*rr at WMPQ1<)q>^BnJcC<$JcE+WJ,~>
+JcC<$JcC<$g].'LJcC<$n,Irfj*pn*rr at WMPQ1<)q>^BnJcC<$JcE+WJ,~>
+JcC<$JcC<$g].'LJcC<$n,IsYj2Uurrr at WMPQ1<qq>^BnJcC<$JcE+WJ,~>
+JcC<$JcC<$j8\oTJcC<$kPp*^j*pn*rrE(JJcD;@m=+a.r;_EKJcC<$\Gq'~>
+JcC<$JcC<$j8\oTJcC<$kPp*^j*pn*rrE(JJcD;@m=+a.r;_EKJcC<$\Gq'~>
+JcC<$JcC<$j8\oTJcC<$kPp+Qj2UurrrE)=JcD;@mDei!r;_EKJcC<$\Gq'~>
+JcC<$JcC<$j8\oTJcC<$kPp*^j*pn*rrE(JJcD;@m=+a.r;_EKJcC<$\Gq'~>
+JcC<$JcC<$j8\oTJcC<$kPp*^j*pn*rrE(JJcD;@m=+a.r;_EKJcC<$\Gq'~>
+JcC<$JcC<$j8\oTJcC<$kPp+Qj2UurrrE)=JcD;@mDei!r;_EKJcC<$\Gq'~>
+JcC<$JcC<$l2UV\JcC<$huA7Vj*pn*rrDqFJcDYJkC2t$r;_EKJcC<$]`3K~>
+JcC<$JcC<$l2UV\JcC<$huA7Vj*pn*rrDqFJcDYJkC2t$r;_EKJcC<$]`3K~>
+JcC<$JcC<$l2UV\JcC<$huA8Ij2UurrrDr9JcDYJkJm&lr;_EKJcC<$]`3K~>
+JcC<$JcC<$l2UV\JcC<$huA7Vj*pn*rrDqFJcDYJkC2t$r;_EKJcC<$]`3K~>
+JcC<$JcC<$l2UV\JcC<$huA7Vj*pn*rrDqFJcDYJkC2t$r;_EKJcC<$]`3K~>
+JcC<$JcC<$l2UV\JcC<$huA8Ij2UurrrDr9JcDYJkJm&lr;_EKJcC<$]`3K~>
+JcC<$JcC<$nc/CbJcC<$g&HVPj*pn*rrDeBJcE(VhgXtmr;_EKJcC<$_#Jo~>
+JcC<$JcC<$nc/CbJcC<$g&HVPj*pn*rrDeBJcE(VhgXtmr;_EKJcC<$_#Jo~>
+JcC<$JcC<$nc/CbJcC<$g&HWCj2UurrrDf5JcE(Vho>'`r;_EKJcC<$_#Jo~>
+JcC<$JcC<$nc/CbJcC<$g&HVPj*pn*rrDeBJcE(VhgXtmr;_EKJcC<$_#Jo~>
+JcC<$JcC<$nc/CbJcC<$g&HVPj*pn*rrDeBJcE(VhgXtmr;_EKJcC<$_#Jo~>
+JcC<$JcC<$nc/CbJcC<$g&HWCj2UurrrDf5JcE(Vho>'`r;_EKJcC<$_#Jo~>
+JcC<$JcC<$q>^6jJcC<$dJncHj*pn*rrDY>JcELbf7)uaqZ)3IJcC<$`rCP~>
+JcC<$JcC<$q>^6jJcC<$dJncHj*pn*rrDY>JcELbf7)uaqZ)3IJcC<$`rCP~>
+JcC<$JcC<$q>^6jJcC<$dJnd;j2UurrrDZ1JcELbf>d(TqZ)3IJcC<$`rCP~>
+JcC<$JcC<$q>^6jJcC<$dJncHj*pn*rrDY>JcELbf7)uaqZ)3IJcC<$`rCP~>
+JcC<$JcC<$q>^6jJcC<$dJncHj*pn*rrDY>JcELbf7)uaqZ)3IJcC<$`rCP~>
+JcC<$JcC<$q>^6jJcC<$dJnd;j2UurrrDZ1JcELbf>d(TqZ)3IJcC<$`rCP~>
+JcC<$JcC<$s8VrrJcC<$ao?p at j*pn*rrDM:JcEpnc[OpSr;_EKJcC<$b5Zt~>
+JcC<$JcC<$s8VrrJcC<$ao?p at j*pn*rrDM:JcEpnc[OpSr;_EKJcC<$b5Zt~>
+JcC<$JcC<$s8VrrJcC<$ao?q3j2UurrrDN-JcEpncc5#Fr;_EKJcC<$b5Zt~>
+JcC<$JcC<$s8VrrJcC<$ao?p at j*pn*rrDM:JcEpnc[OpSr;_EKJcC<$b5Zt~>
+JcC<$JcC<$s8VrrJcC<$ao?p at j*pn*rrDM:JcEpnc[OpSr;_EKJcC<$b5Zt~>
+JcC<$JcC<$s8VrrJcC<$ao?q3j2UurrrDN-JcEpncc5#Fr;_EKJcC<$b5Zt~>
+JcC<$JcCN*q#H!GJcEXfJUZX.qu?Zrl$e3`fDisAhuEWTJcC<$JcF$qJ,~>
+JcC<$JcCN*q#H!GJcEXfJUZX.qu?Zrl$e3`fDisAhuEWTJcC<$JcF$qJ,~>
+JcC<$JcCN*q#H!GJcEXfJ]?`iqu?Zrl,J;SfDit4huEWTJcC<$JcF$qJ,~>
+JcC<$JcCN*q#H!GJcEXfJUZX.qu?Zrl$e3`fDisAhuEWTJcC<$JcF$qJ,~>
+JcC<$JcCN*q#H!GJcEXfJUZX.qu?Zrl$e3`fDisAhuEWTJcC<$JcF$qJ,~>
+JcC<$JcCN*q#H!GJcEXfJ]?`iqu?Zrl,J;SfDit4huEWTJcC<$JcF$qJ,~>
+JcC<$JcCf2q#H!GJcE@^JUZX.qu?ZrjaMd\j8ZrEg].3PJcC<$JcF0uJ,~>
+JcC<$JcCf2q#H!GJcE@^JUZX.qu?ZrjaMd\j8ZrEg].3PJcC<$JcF0uJ,~>
+JcC<$JcCf2q#H!GJcE@^J]?`iqu?Zrji2lOj8Zs8g].3PJcC<$JcF0uJ,~>
+JcC<$JcCf2q#H!GJcE@^JUZX.qu?ZrjaMd\j8ZrEg].3PJcC<$JcF0uJ,~>
+JcC<$JcCf2q#H!GJcE@^JUZX.qu?ZrjaMd\j8ZrEg].3PJcC<$JcF0uJ,~>
+JcC<$JcCf2q#H!GJcE@^J]?`iqu?Zrji2lOj8Zs8g].3PJcC<$JcF0uJ,~>
+JcC<$JcD):q#H!GJcE(VJUZX.qu?ZriI6 at Xn,KqIfDkdLJcC<$JcF=$J,~>
+JcC<$JcD):q#H!GJcE(VJUZX.qu?ZriI6 at Xn,KqIfDkdLJcC<$JcF=$J,~>
+JcC<$JcD):q#H!GJcE(VJ]?`iqu?ZriPpHKn,Kr<fDkdLJcC<$JcF=$J,~>
+JcC<$JcD):q#H!GJcE(VJUZX.qu?ZriI6 at Xn,KqIfDkdLJcC<$JcF=$J,~>
+JcC<$JcD):q#H!GJcE(VJUZX.qu?ZriI6 at Xn,KqIfDkdLJcC<$JcF=$J,~>
+JcC<$JcD):q#H!GJcE(VJ]?`iqu?ZriPpHKn,Kr<fDkdLJcC<$JcF=$J,~>
+JcC<$JcD;@qZ)3IJcDeNJUZX.qu?Zrh0sqTq>[dMe,T at HJcC<$JcFI(J,~>
+JcC<$JcD;@qZ)3IJcDeNJUZX.qu?Zrh0sqTq>[dMe,T at HJcC<$JcFI(J,~>
+JcC<$JcD;@qZ)3IJcDeNJ]?`iqu?Zrh8Y$Gq>[e at e,T at HJcC<$JcFI(J,~>
+JcC<$JcD;@qZ)3IJcDeNJUZX.qu?Zrh0sqTq>[dMe,T at HJcC<$JcFI(J,~>
+JcC<$JcD;@qZ)3IJcDeNJUZX.qu?Zrh0sqTq>[dMe,T at HJcC<$JcFI(J,~>
+JcC<$JcD;@qZ)3IJcDeNJ]?`iqu?Zrh8Y$Gq>[e at e,T at HJcC<$JcFI(J,~>
+JcC<$JcDSHq#H!GJcDSHJUZX.qu?Zrfm\YTX+&CpqZ)3IJcC<$i;\<~>
+JcC<$JcDSHq#H!GJcDSHJUZX.qu?Zrfm\YTX+&CpqZ)3IJcC<$i;\<~>
+JcC<$JcDSHq#H!GJcDSHJ]?`iqu?ZrfuAaGX2`KcqZ)3IJcC<$i;\<~>
+JcC<$JcDSHq#H!GJcDSHJUZX.qu?Zrfm\YTX+&CpqZ)3IJcC<$i;\<~>
+JcC<$JcDSHq#H!GJcDSHJUZX.qu?Zrfm\YTX+&CpqZ)3IJcC<$i;\<~>
+JcC<$JcDSHq#H!GJcDSHJ]?`iqu?ZrfuAaGX2`KcqZ)3IJcC<$i;\<~>
+JcC<$JcDkPq#H!GJcD;@JUZX.qu?ZreUEY\UOL>br;_EKJcC<$jSs`~>
+JcC<$JcDkPq#H!GJcD;@JUZX.qu?ZreUEY\UOL>br;_EKJcC<$jSs`~>
+JcC<$JcDkPq#H!GJcD;@J]?`iqu?Zre]*aOUW1FUr;_EKJcC<$jSs`~>
+JcC<$JcDkPq#H!GJcD;@JUZX.qu?ZreUEY\UOL>br;_EKJcC<$jSs`~>
+JcC<$JcDkPq#H!GJcD;@JUZX.qu?ZreUEY\UOL>br;_EKJcC<$jSs`~>
+JcC<$JcDkPq#H!GJcD;@J]?`iqu?Zre]*aOUW1FUr;_EKJcC<$jSs`~>
+JcC<$JcE(VqZ)3IJcD#8JUZX.qu?Zrc[MGbSUSQXr;_EKJcC<$kl6/~>
+JcC<$JcE(VqZ)3IJcD#8JUZX.qu?Zrc[MGbSUSQXr;_EKJcC<$kl6/~>
+JcC<$JcE(VqZ)3IJcD#8J]?`iqu?Zrcc2OUS]8YKr;_EKJcC<$kl6/~>
+JcC<$JcE(VqZ)3IJcD#8JUZX.qu?Zrc[MGbSUSQXr;_EKJcC<$kl6/~>
+JcC<$JcE(VqZ)3IJcD#8JUZX.qu?Zrc[MGbSUSQXr;_EKJcC<$kl6/~>
+JcC<$JcE(VqZ)3IJcD#8J]?`iqu?Zrcc2OUS]8YKr;_EKJcC<$kl6/~>
+JcC<$JcE@^q#H!GJcCf2JUZX.qu?ZrbC6GjQ%$RLr;_EKJcC<$m/MS~>
+JcC<$JcE@^q#H!GJcCf2JUZX.qu?ZrbC6GjQ%$RLr;_EKJcC<$m/MS~>
+JcC<$JcE@^q#H!GJcCf2J]?`iqu?ZrbJpO]Q,^Z?r;_EKJcC<$m/MS~>
+JcC<$JcE@^q#H!GJcCf2JUZX.qu?ZrbC6GjQ%$RLr;_EKJcC<$m/MS~>
+JcC<$JcE@^q#H!GJcCf2JUZX.qu?ZrbC6GjQ%$RLr;_EKJcC<$m/MS~>
+JcC<$JcE@^q#H!GJcCf2J]?`iqu?ZrbJpO]Q,^Z?r;_EKJcC<$m/MS~>
+JcC<$JcEXfq#H!GJcCN*JUZX.qu?Zra*tGrNIJS at r;_EKJcC<$nGe"~>
+JcC<$JcEXfq#H!GJcCN*JUZX.qu?Zra*tGrNIJS at r;_EKJcC<$nGe"~>
+JcC<$JcEXfq#H!GJcCN*J]?`iqu?Zra2YOeNQ/[3r;_EKJcC<$nGe"~>
+JcC<$JcEXfq#H!GJcCN*JUZX.qu?Zra*tGrNIJS at r;_EKJcC<$nGe"~>
+JcC<$JcEXfq#H!GJcCN*JUZX.qu?Zra*tGrNIJS at r;_EKJcC<$nGe"~>
+JcC<$JcEXfq#H!GJcCN*J]?`iqu?Zra2YOeNQ/[3r;_EKJcC<$nGe"~>
+JcC<$JcEjlqZ)3IJcC<$s8RY!j*pn*rrBrc_>f4<\c;O,JcC<$JcGHDJ,~>
+JcC<$JcEjlqZ)3IJcC<$s8RY!j*pn*rrBrc_>f4<\c;O,JcC<$JcGHDJ,~>
+JcC<$JcEjlqZ)3IJcC<$s8RYij2UurrrBsV_>f5/\c;O,JcC<$JcGHDJ,~>
+JcC<$JcEjlqZ)3IJcC<$s8RY!j*pn*rrBrc_>f4<\c;O,JcC<$JcGHDJ,~>
+JcC<$JcEjlqZ)3IJcC<$s8RY!j*pn*rrBrc_>f4<\c;O,JcC<$JcGHDJ,~>
+JcC<$JcEjlqZ)3IJcC<$s8RYij2UurrrBsV_>f5/\c;O,JcC<$JcGHDJ,~>
+JcC<$JcF-tq#H!GJcC<$q>Z"pj*pn*rrBf_bQ!-Bs*h<Sr;_EKJcC<$qYu'~>
+JcC<$JcF-tq#H!GJcC<$q>Z"pj*pn*rrBf_bQ!-Bs*h<Sr;_EKJcC<$qYu'~>
+JcC<$JcF-tq#H!GJcC<$q>Z#cj2UurrrBgRbQ!.5s2MDFr;_EKJcC<$qYu'~>
+JcC<$JcF-tq#H!GJcC<$q>Z"pj*pn*rrBf_bQ!-Bs*h<Sr;_EKJcC<$qYu'~>
+JcC<$JcF-tq#H!GJcC<$q>Z"pj*pn*rrBf_bQ!-Bs*h<Sr;_EKJcC<$qYu'~>
+JcC<$JcF-tq#H!GJcC<$q>Z#cj2UurrrBgRbQ!.5s2MDFr;_EKJcC<$qYu'~>
+JcC<$JcFF'q#H!GJcC<$nc+/hj*pn*rrBZ[fDgDNpO9=Gr;_EKJcC<$rr7K~>
+JcC<$JcFF'q#H!GJcC<$nc+/hj*pn*rrBZ[fDgDNpO9=Gr;_EKJcC<$rr7K~>
+JcC<$JcFF'q#H!GJcC<$nc+0[j2UurrrB[NfDgEApVsE:r;_EKJcC<$rr7K~>
+JcC<$JcFF'q#H!GJcC<$nc+/hj*pn*rrBZ[fDgDNpO9=Gr;_EKJcC<$rr7K~>
+JcC<$JcFF'q#H!GJcC<$nc+/hj*pn*rrBZ[fDgDNpO9=Gr;_EKJcC<$rr7K~>
+JcC<$JcFF'q#H!GJcC<$nc+0[j2UurrrB[NfDgEApVsE:r;_EKJcC<$rr7K~>
+JcC<$JcFX-qZ)3IJcC<$l2Q<`j*pn*rrBHUjo9m\ms_>;r;_EKJcC?%J,~>
+JcC<$JcFX-qZ)3IJcC<$l2Q<`j*pn*rrBHUjo9m\ms_>;r;_EKJcC?%J,~>
+JcC<$JcFX-qZ)3IJcC<$l2Q=Sj2UurrrBIHjo9nOn&DF.r;_EKJcC?%J,~>
+JcC<$JcFX-qZ)3IJcC<$l2Q<`j*pn*rrBHUjo9m\ms_>;r;_EKJcC?%J,~>
+JcC<$JcFX-qZ)3IJcC<$l2Q<`j*pn*rrBHUjo9m\ms_>;r;_EKJcC?%J,~>
+JcC<$JcFX-qZ)3IJcC<$l2Q=Sj2UurrrBIHjo9nOn&DF.r;_EKJcC?%J,~>
+JcC<$JcFp5q#H!GJcC<$j8X[Zj*pn*rrB<Qn,Irfl$fQ1r;_EKJcCK)J,~>
+JcC<$JcFp5q#H!GJcC<$j8X[Zj*pn*rrB<Qn,Irfl$fQ1r;_EKJcCK)J,~>
+JcC<$JcFp5q#H!GJcC<$j8X\Mj2UurrrB=Dn,IsYl,KY$r;_EKJcCK)J,~>
+JcC<$JcFp5q#H!GJcC<$j8X[Zj*pn*rrB<Qn,Irfl$fQ1r;_EKJcCK)J,~>
+JcC<$JcFp5q#H!GJcC<$j8X[Zj*pn*rrB<Qn,Irfl$fQ1r;_EKJcCK)J,~>
+JcC<$JcFp5q#H!GJcC<$j8X\Mj2UurrrB=Dn,IsYl,KY$r;_EKJcCK)J,~>
+JcC<$JcG3=q#H!GJcC<$g])hRj*pn*rrB0Mqu;4riI7R%r;_EKJcCW-J,~>
+JcC<$JcG3=q#H!GJcC<$g])hRj*pn*rrB0Mqu;4riI7R%r;_EKJcCW-J,~>
+JcC<$JcG3=q#H!GJcC<$g])iEj2UurrrB1 at qu;5eiPqYmr;_EKJcCW-J,~>
+JcC<$JcG3=q#H!GJcC<$g])hRj*pn*rrB0Mqu;4riI7R%r;_EKJcCW-J,~>
+JcC<$JcG3=q#H!GJcC<$g])hRj*pn*rrB0Mqu;4riI7R%r;_EKJcCW-J,~>
+JcC<$JcG3=q#H!GJcC<$g])iEj2UurrrB1 at qu;5eiPqYmr;_EKJcCW-J,~>
+JcC<$JcGKEq#H!GJcC<$e,OuJj*pn*rrB6Oq`]R[hgV3tqZ)3IJcCi3J,~>
+JcC<$JcGKEq#H!GJcC<$e,OuJj*pn*rrB6Oq`]R[hgV3tqZ)3IJcCi3J,~>
+JcC<$JcGKEq#H!GJcC<$e,P!=j2UurrrB7Bql54eho;;gqZ)3IJcCi3J,~>
+JcC<$JcGKEq#H!GJcC<$e,OuJj*pn*rrB6Oq`]R[hgV3tqZ)3IJcCi3J,~>
+JcC<$JcGKEq#H!GJcC<$e,OuJj*pn*rrB6Oq`]R[hgV3tqZ)3IJcCi3J,~>
+JcC<$JcGKEq#H!GJcC<$e,P!=j2UurrrB7Bql54eho;;gqZ)3IJcCi3J,~>
+JcC<$JcG]KqZ)3IJcC<$bQ!-Bj*pn*rrBHUnNMMQj*mErr;_EKJcCu7J,~>
+JcC<$JcG]KqZ)3IJcC<$bQ!-Bj*pn*rrBHUnNMMQj*mErr;_EKJcCu7J,~>
+JcC<$JcG]KqZ)3IJcC<$bQ!.5j2UurrrBIHnZ%/[j2RMer;_EKJcCu7J,~>
+JcC<$JcG]KqZ)3IJcC<$bQ!-Bj*pn*rrBHUnNMMQj*mErr;_EKJcCu7J,~>
+JcC<$JcG]KqZ)3IJcC<$bQ!-Bj*pn*rrBHUnNMMQj*mErr;_EKJcCu7J,~>
+JcC<$JcG]KqZ)3IJcC<$bQ!.5j2UurrrBIHnZ%/[j2RMer;_EKJcCu7J,~>
+JcC<$L&^rKJcC<$JcE^hJUZX.qu?Zr]mf!*JUZj4Q2gd_JcC<$R/_[~>
+JcC<$L&^rKJcC<$JcE^hJUZX.qu?Zr]mf!*JUZj4Q2gd_JcC<$R/_[~>
+JcC<$L&^rKJcC<$JcE^hJ]?`iqu?Zrlc/hBfuE'PJ]?roQ2gd_JcC<$R/_[~>
+JcC<$L&^rKJcC<$JcE^hJUZX.qu?Zr]mf!*JUZj4Q2gd_JcC<$R/_[~>
+JcC<$L&^rKJcC<$JcE^hJUZX.qu?Zr]mf!*JUZj4Q2gd_JcC<$R/_[~>
+JcC<$L&^rKJcC<$JcE^hJ]?`iqu?Zrlc/hBfuE'PJ]?roQ2gd_JcC<$R/_[~>
+JcC<$NW8eSJcC<$JcEF`JUZX.qu?Zr`I?E&JU[!8OoP@[JcC<$SH"*~>
+JcC<$NW8eSJcC<$JcEF`JUZX.qu?Zr`I?E&JU[!8OoP@[JcC<$SH"*~>
+JcC<$NW8eSJcC<$JcEF`K?!r3ji7>@qu?ZrmDf1HqoJ`Vji5oPJ]@)sOoP@[JcC<$SH"*~>
+JcC<$NW8eSJcC<$JcEF`JUZX.qu?Zr`I?E&JU[!8OoP@[JcC<$SH"*~>
+JcC<$NW8eSJcC<$JcEF`JUZX.qu?Zr`I?E&JU[!8OoP@[JcC<$SH"*~>
+JcC<$NW8eSJcC<$JcEF`K?!r3ji7>@qu?ZrmDf1HqoJ`Vji5oPJ]@)sOoP@[JcC<$SH"*~>
+JcC<$PQ1L[JcC<$JcE.XJUZX.qu?Zrc$mi"JU[-<NW8qWJcC<$T`9N~>
+JcC<$PQ1L[JcC<$JcE.XJUZX.qu?Zrc$mi"JU[-<NW8qWJcC<$T`9N~>
+JcC<$PQ1L[JcC<$JcE.XKuX/5s2b)XmDf1Hs2b*;rrE)>n&GCKqoSfXrQ"HJbGp-5n]$Rgr;_EK
+JcDDCJ,~>
+JcC<$PQ1L[JcC<$JcE.XJUZX.qu?Zrc$mi"JU[-<NW8qWJcC<$T`9N~>
+JcC<$PQ1L[JcC<$JcE.XJUZX.qu?Zrc$mi"JU[-<NW8qWJcC<$T`9N~>
+JcC<$PQ1L[JcC<$JcE.XKuX/5s2b)XmDf1Hs2b*;rrE)>n&GCKqoSfXrQ"HJbGp-5n]$Rgr;_EK
+JcDDCJ,~>
+JcC<$S,`9aJcC<$JcDqRJUZX.qu?Zrdsf+sJU[9 at M?!MSJcC<$V#Pr~>
+JcC<$S,`9aJcC<$JcDqRJUZX.qu?Zrdsf+sJU[9 at M?!MSJcC<$V#Pr~>
+JcC<$S,`9aJcC<$JcDqRLW9A7s2b/\rQ+rXn](UMs2k0<rrE)?rQ"TNs2Y/]qo\lZrQ+rXqo6IP
+bJsG"Z,VY#r;_EKJcDPGJ,~>
+JcC<$S,`9aJcC<$JcDqRJUZX.qu?Zrdsf+sJU[9 at M?!MSJcC<$V#Pr~>
+JcC<$S,`9aJcC<$JcDqRJUZX.qu?Zrdsf+sJU[9 at M?!MSJcC<$V#Pr~>
+JcC<$S,`9aJcC<$JcDqRLW9A7s2b/\rQ+rXn](UMs2k0<rrE)?rQ"TNs2Y/]qo\lZrQ+rXqo6IP
+bJsG"Z,VY#r;_EKJcDPGJ,~>
+JcC<$U]:,iJcC<$JcDYJJUZX.qu?ZrgO?OoJU[EDL&_#MJcC<$WrIS~>
+JcC<$U]:,iJcC<$JcDYJJUZX.qu?ZrgO?OoJU[EDL&_#MJcC<$WrIS~>
+JcC<$U]:,iJcC<$JcDYJLW9A8s2k5^rQ5#ZrQ"ZPs2Y/]s2t6=rrE)@rQ+rXqo8ZVs2b5_qoer\
+rQ5)\s/WW/f>dX,qoH%^L&_#MJcC<$WrIS~>
+JcC<$U]:,iJcC<$JcDYJJUZX.qu?ZrgO?OoJU[EDL&_#MJcC<$WrIS~>
+JcC<$U]:,iJcC<$JcDYJJUZX.qu?ZrgO?OoJU[EDL&_#MJcC<$WrIS~>
+JcC<$U]:,iJcC<$JcDYJLW9A8s2k5^rQ5#ZrQ"ZPs2Y/]s2t6=rrE)@rQ+rXqo8ZVs2b5_qoer\
+rQ5)\s/WW/f>dX,qoH%^L&_#MJcC<$WrIS~>
+JcC<$WW2hqJcC<$JcDABJUZX.qu?Zrj*mskJU[QHJcGcMr;_EKJcDnQJ,~>
+JcC<$WW2hqJcC<$JcDABJUZX.qu?Zrj*mskJU[QHJcGcMr;_EKJcDnQJ,~>
+JcC<$WW2hqJcC<$JcDABPK*XCq8WHTs2k;`rQG/^rQ5#ZrQ"lVs2Y/\s2tAbqu?Zrs2t;^rQ+rX
+s2P)[s2k;aqoo)`qlKUo\#SE,qoANRqoSlYh8]K8fuAUCs8W#tJcC<$Y5a"~>
+JcC<$WW2hqJcC<$JcDABJUZX.qu?Zrj*mskJU[QHJcGcMr;_EKJcDnQJ,~>
+JcC<$WW2hqJcC<$JcDABJUZX.qu?Zrj*mskJU[QHJcGcMr;_EKJcDnQJ,~>
+JcC<$WW2hqJcC<$JcDABPK*XCq8WHTs2k;`rQG/^rQ5#ZrQ"lVs2Y/\s2tAbqu?Zrs2t;^rQ+rX
+s2P)[s2k;aqoo)`qlKUo\#SE,qoANRqoSlYh8]K8fuAUCs8W#tJcC<$Y5a"~>
+JcC<$Z2aV"JcC<$JcD/<JUZX.qu?Zrl$f0eK78COqu?TpJcC<$ZN#F~>
+JcC<$Z2aV"JcC<$JcD/<JUZX.qu?Zrl$f0eK78COqu?TpJcC<$ZN#F~>
+JcC<$Z2aV"JcC<$JcD/<Q,`jEs2b/ZrPnlYs2tAbrQP5`rQ>)\rQ+rXs2b5^s3(Gdqu?Zrs3(A`
+rQ5#Zs2Y/]s2tAcs3:AAq5j=k\#So:q8`BRq8rNVs2b5\kJm><s2b5\gW"gEqu?TpJcC<$ZN#F~>
+JcC<$Z2aV"JcC<$JcD/<JUZX.qu?Zrl$f0eK78COqu?TpJcC<$ZN#F~>
+JcC<$Z2aV"JcC<$JcD/<JUZX.qu?Zrl$f0eK78COqu?TpJcC<$ZN#F~>
+JcC<$Z2aV"JcC<$JcD/<Q,`jEs2b/ZrPnlYs2tAbrQP5`rQ>)\rQ+rXs2b5^s3(Gdqu?Zrs3(A`
+rQ5#Zs2Y/]s2tAcs3:AAq5j=k\#So:q8`BRq8rNVs2b5\kJm><s2b5\gW"gEqu?TpJcC<$ZN#F~>
+JcC<$\c;I*rVuhFJcC<$JcD/<JUZX.qu?ZrnU?TaLOOgSp](0lJcC<$[f:j~>
+JcC<$\c;I*rVuhFJcC<$JcD/<JUZX.qu?ZrnU?TaLOOgSp](0lJcC<$[f:j~>
+JcC<$\c;I*rVui9JcC<$JcD/<Q,`jFs2k5\s2Y/\s2k;as31GdrQP5`rQ>)\rQ,#\s2tAcs3:H@
+rrE)CrQG/^rQ5)\rN-%$ql]asq5j=k\#T>Fq8`<PqoSZVqof#]s2b5\n](CFq8iTXs2`s7JcGKE
+r;_EKJcE1YJ,~>
+JcC<$\c;I*rVuhFJcC<$JcD/<JUZX.qu?ZrnU?TaLOOgSp](0lJcC<$[f:j~>
+JcC<$\c;I*rVuhFJcC<$JcD/<JUZX.qu?ZrnU?TaLOOgSp](0lJcC<$[f:j~>
+JcC<$\c;I*rVui9JcC<$JcD/<Q,`jFs2k5\s2Y/\s2k;as31GdrQP5`rQ>)\rQ,#\s2tAcs3:H@
+rrE)CrQG/^rQ5)\rN-%$ql]asq5j=k\#T>Fq8`<PqoSZVqof#]s2b5\n](CFq8iTXs2`s7JcGKE
+r;_EKJcE1YJ,~>
+JcC<$^]402p&Fi:JcC<$JcD;@JUZX.qu?Zrq0n#]Mgg6WoDeahJcC<$])R9~>
+JcC<$^]402p&Fi:JcC<$JcD;@JUZX.qu?Zrq0n#]Mgg6WoDeahJcC<$])R9~>
+JcC<$^]402p&Fj-JcC<$JcD;@QcB'Gs2k;`rQ5)\s2k;`s31MfrQbAdrQP5`rQ>)\s2tAbs3:Sh
+qu?Zrs3:Mds3(;@s/Z1$s/kssq5sCmq5_!)s2XrVqoSZVq9/ZZs2tA`s2b5\q8W<Pq8iBRs2tA`
+s2X0>qo=9foDeahJcC<$])R9~>
+JcC<$^]402p&Fi:JcC<$JcD;@JUZX.qu?Zrq0n#]Mgg6WoDeahJcC<$])R9~>
+JcC<$^]402p&Fi:JcC<$JcD;@JUZX.qu?Zrq0n#]Mgg6WoDeahJcC<$])R9~>
+JcC<$^]402p&Fj-JcC<$JcD;@QcB'Gs2k;`rQ5)\s2k;`s31MfrQbAdrQP5`rQ>)\s2tAbs3:Sh
+qu?Zrs3:Mds3(;@s/Z1$s/kssq5sCmq5_!)s2XrVqoSZVq9/ZZs2tA`s2b5\q8W<Pq8iBRs2tA`
+s2X0>qo=9foDeahJcC<$])R9~>
+JcC<$a8br8n,N'0JcC<$JcDGDJUZX.qu?Zrs*fM_q`^'iJcG3=r;_EKJcEIaJ,~>
+JcC<$a8br8n,N'0JcC<$JcDGDJUZX.qu?Zrs*fM_q`^'iJcG3=r;_EKJcEIaJ,~>
+JcC<$a8br8n,N(#JcC<$JcDGDUW3>Sq8WHTs2b5_s3(A`s2k;`s3(GepWi`^rQP5`rQ>/`s31Mg
+s3LTBrrE)Eq5sOqrN6+&qlfgupT=7mq5_?3pT+25qo\`Xq98`\s3(Gbs2k;^q8`BRq8rHTs3(Gb
+s2b5\mDetBqoF?gn,N=dJcC<$^Ai]~>
+JcC<$a8br8n,N'0JcC<$JcDGDJUZX.qu?Zrs*fM_q`^'iJcG3=r;_EKJcEIaJ,~>
+JcC<$a8br8n,N'0JcC<$JcDGDJUZX.qu?Zrs*fM_q`^'iJcG3=r;_EKJcEIaJ,~>
+JcC<$a8br8n,N(#JcC<$JcDGDUW3>Sq8WHTs2b5_s3(A`s2k;`s3(GepWi`^rQP5`rQ>/`s31Mg
+s3LTBrrE)Eq5sOqrN6+&qlfgupT=7mq5_?3pT+25qo\`Xq98`\s3(Gbs2k;^q8`BRq8rHTs3(Gb
+s2b5\mDetBqoF?gn,N=dJcC<$^Ai]~>
+JcC<$ci<e at kPt($JcC<$JcDSHJUZX.s8W%Hrr at U6ofeRgJcG'9qZ)3IJcE[gJ,~>
+JcC<$ci<e at kPt($JcC<$JcDSHJUZX.s8W%Hrr at U6ofeRgJcG'9qZ)3IJcE[gJ,~>
+JcC<$ci<e at kPt(lJcC<$JcDSHUW3>TrQ"lVs2b5^s3(GdrQG5`s3(Gdn]q*XrQP5`s31Mfs3L_l
+s8W&;s%*$ior\7sorn1opT=7mq5_]=o;hbis2t5^q98ZZqp,5cs3(Gbs2k)XqoSZVq9/f^s3(Ga
+s2b5\pW!$Lq8iHTJcG'9qZ)3IJcE[gJ,~>
+JcC<$ci<e at kPt($JcC<$JcDSHJUZX.s8W%Hrr at U6ofeRgJcG'9qZ)3IJcE[gJ,~>
+JcC<$ci<e at kPt($JcC<$JcDSHJUZX.s8W%Hrr at U6ofeRgJcG'9qZ)3IJcE[gJ,~>
+JcC<$ci<e at kPt(lJcC<$JcDSHUW3>TrQ"lVs2b5^s3(GdrQG5`s3(Gdn]q*XrQP5`s31Mfs3L_l
+s8W&;s%*$ior\7sorn1opT=7mq5_]=o;hbis2t5^q98ZZqp,5cs3(Gbs2k)XqoSZVq9/f^s3(Ga
+s2b5\pW!$Lq8iHTJcG'9qZ)3IJcE[gJ,~>
+JcC<$fDkXHhuE(mJcC<$JcD_LJUZj4q`an+rr at U6nNN:gJcFj3r;_EKJcEgkJ,~>
+JcC<$fDkXHhuE(mJcC<$JcD_LJUZj4q`an+rr at U6nNN:gJcFj3r;_EKJcEgkJ,~>
+JcC<$fDkXHhuE)`JcC<$JcD_LV8iPUs2k5\rQ"r[s2tAcs3:Mds3(Gds3:;`qp55drQY;bs3:SH
+rNH+<s%*0nq6'UsrN?1(qlon"pTF=oq5jCmf;eGCnZ;bmrQP)^q9Jl`s3:Sfs3(Gbq8rNVq9/ZZ
+rQYAds2tA`s2b5\s2OrVq8iBRqoXKijo>8ZJcC<$aT$b~>
+JcC<$fDkXHhuE(mJcC<$JcD_LJUZj4q`an+rr at U6nNN:gJcFj3r;_EKJcEgkJ,~>
+JcC<$fDkXHhuE(mJcC<$JcD_LJUZj4q`an+rr at U6nNN:gJcFj3r;_EKJcEgkJ,~>
+JcC<$fDkXHhuE)`JcC<$JcD_LV8iPUs2k5\rQ"r[s2tAcs3:Mds3(Gds3:;`qp55drQY;bs3:SH
+rNH+<s%*0nq6'UsrN?1(qlon"pTF=oq5jCmf;eGCnZ;bmrQP)^q9Jl`s3:Sfs3(Gbq8rNVq9/ZZ
+rQYAds2tA`s2b5\s2OrVq8iBRqoXKijo>8ZJcC<$aT$b~>
+JcC<$h>d?PfDk#_JcC<$JcDqRJU[-<o03&#rr at U6lTUkgJcF^/r;_EKJcEsoJ,~>
+JcC<$h>d?PfDk#_JcC<$JcDqRJU[-<o03&#rr at U6lTUkgJcF^/r;_EKJcEsoJ,~>
+JcC<$h>d?PfDk$RJcC<$JcDqRVoJbWs2b5_rQ5#Zs2tAbs3:ShrQYAds3:5^qp>;fs3CYIrN6%$
+s0)I,qo8Y,pTOCqs0)+"q60Oqq5sIopT*DUnZ28_o<&%qqp,#`qp>Ags3:Sfs3(;^q9/TXqp#)b
+s3:Ses2tA`s2b5\qoJTTq9&TXJcF^/r;_EKJcEsoJ,~>
+JcC<$h>d?PfDk#_JcC<$JcDqRJU[-<o03&#rr at U6lTUkgJcF^/r;_EKJcEsoJ,~>
+JcC<$h>d?PfDk#_JcC<$JcDqRJU[-<o03&#rr at U6lTUkgJcF^/r;_EKJcEsoJ,~>
+JcC<$h>d?PfDk$RJcC<$JcDqRVoJbWs2b5_rQ5#Zs2tAbs3:ShrQYAds3:5^qp>;fs3CYIrN6%$
+s0)I,qo8Y,pTOCqs0)+"q60Oqq5sIopT*DUnZ28_o<&%qqp,#`qp>Ags3:Sfs3(;^q9/TXqp#)b
+s3:Ses2tA`s2b5\qoJTTq9&TXJcF^/r;_EKJcEsoJ,~>
+JcC<$jo>,VdJr6UJcC<$JcE(VJU[?Bm6:Drrr at U6lTUkgJcFR+r;_EKJcF*sJ,~>
+JcC<$jo>,VdJr6UJcC<$JcE(VJU[?Bm6:Drrr at U6lTUkgJcFR+r;_EKJcF*sJ,~>
+JcC<$jo>,VdJr7HJcC<$JcE(VVoJbXs2k;arQ>)\s3(Gdq9K#bp!3T`qpGAGpTFP"rNQ1=s%*0o
+rNH1(rNH7(rNH7*qm#t$pTOCqq5sCmq5`tao;hJanZDViqp5/dq9f5gs3CYhs31A`q98ZZqp,/d
+s3CYgs3(Gbs2k;^qoSZVq9/ZZJcFR+r;_EKJcF*sJ,~>
+JcC<$jo>,VdJr6UJcC<$JcE(VJU[?Bm6:Drrr at U6lTUkgJcFR+r;_EKJcF*sJ,~>
+JcC<$jo>,VdJr6UJcC<$JcE(VJU[?Bm6:Drrr at U6lTUkgJcFR+r;_EKJcF*sJ,~>
+JcC<$jo>,VdJr7HJcC<$JcE(VVoJbXs2k;arQ>)\s3(Gdq9K#bp!3T`qpGAGpTFP"rNQ1=s%*0o
+rNH1(rNH7(rNH7*qm#t$pTOCqq5sCmq5`tao;hJanZDViqp5/dq9f5gs3CYhs31A`q98ZZqp,/d
+s3CYgs3(Gbs2k;^qoSZVq9/ZZJcFR+r;_EKJcF*sJ,~>
+JcC<$mJlt^aoC7IJcC<$JcE4ZJU[WJjZ`Qjrr at U6lTUkgJcFF'r;_EKJcF7"J,~>
+JcC<$mJlt^aoC7IJcC<$JcE4ZJU[WJjZ`Qjrr at U6lTUkgJcFF'r;_EKJcF7"J,~>
+JcC<$mJlt^aoC8<JcC<$JcE4ZZc;saqo8ZVs2k;`s31GbrQ>/as39lTs0)=(q60b"rNH7*s0;I@
+s%*$krNZ=*s0)C*os+7qq60Usq5sCmorJ+mo;hD_o<%Ves0)=HqpG5fs3Uels3CYhqonl\q9Jl`
+rQtSjs3:Sfs3(Gbs2k/\q9/TXqos]lg&M!NJcC<$eGk%~>
+JcC<$mJlt^aoC7IJcC<$JcE4ZJU[WJjZ`Qjrr at U6lTUkgJcFF'r;_EKJcF7"J,~>
+JcC<$mJlt^aoC7IJcC<$JcE4ZJU[WJjZ`Qjrr at U6lTUkgJcFF'r;_EKJcF7"J,~>
+JcC<$mJlt^aoC8<JcC<$JcE4ZZc;saqo8ZVs2k;`s31GbrQ>/as39lTs0)=(q60b"rNH7*s0;I@
+s%*$krNZ=*s0)C*os+7qq60Usq5sCmorJ+mo;hD_o<%Ves0)=HqpG5fs3Uels3CYhqonl\q9Jl`
+rQtSjs3:Sfs3(Gbs2k/\q9/TXqos]lg&M!NJcC<$eGk%~>
+JcC<$oDe[f_>i8=JcC<$JcE@^LOS&CqgSPFJNiB`q0r9+WIBEuec5RJJcC<$f`-I~>
+JcC<$oDe[f_>i8=JcC<$JcE@^LOS&CqgSPFJNiB`q0r9+WIBEuec5RJJcC<$f`-I~>
+JcC<$oDe[f_>i90JcC<$JcE@^[Dr6erQ+lVs2b5_s3(GerQP5`s3:5^rQk;Bs0)1$q60b$rNZ7>
+s%*$lrNcC,s02I,q6Kh$pTXIsq6'IoqlKh"s/c7&q5jIoo;qPco<.hkqpGGlrNQ+Hs3^kns3L_j
+qp"r^q9SrbrR(Yls3CYhs31Mds2t5^q98ZZqp'cmec5RJJcC<$f`-I~>
+JcC<$oDe[f_>i8=JcC<$JcE@^LOS&CqgSPFJNiB`q0r9+WIBEuec5RJJcC<$f`-I~>
+JcC<$oDe[f_>i8=JcC<$JcE@^LOS&CqgSPFJNiB`q0r9+WIBEuec5RJJcC<$f`-I~>
+JcC<$oDe[f_>i90JcC<$JcE@^[Dr6erQ+lVs2b5_s3(GerQP5`s3:5^rQk;Bs0)1$q60b$rNZ7>
+s%*$lrNcC,s02I,q6Kh$pTXIsq6'IoqlKh"s/c7&q5jIoo;qPco<.hkqpGGlrNQ+Hs3^kns3L_j
+qp"r^q9SrbrR(Yls3CYhs31Mds2t5^q98ZZqp'cmec5RJJcC<$f`-I~>
+JcC<$qu?Hl]DpK3JcC<$JcELbNIKJCqgSPFJNiB`q0r-'XaYj$dJs(DJcC<$hZ&*~>
+JcC<$qu?Hl]DpK3JcC<$JcELbNIKJCqgSPFJNiB`q0r-'XaYj$dJs(DJcC<$hZ&*~>
+JcC<$qu?Hl]DpL&JcC<$JcELb[Dr6frQ4rXs2k;as31MgrQY;bp!3T?rNH+$s0)I,qm#gurNZ=,
+qo8Y,s0;O.rNlI.s0;O.rNl=*pTaOuq60Uss/k[kqlTUoo<%Pco<81uqpPMnrNQ7*rRCkqs3^kn
+s3LSfrQkMjs3LMfqpGAjs3^kms3CYhs31Mdqonl\o?MpedJs(DJcC<$hZ&*~>
+JcC<$qu?Hl]DpK3JcC<$JcELbNIKJCqgSPFJNiB`q0r-'XaYj$dJs(DJcC<$hZ&*~>
+JcC<$qu?Hl]DpK3JcC<$JcELbNIKJCqgSPFJNiB`q0r-'XaYj$dJs(DJcC<$hZ&*~>
+JcC<$qu?Hl]DpL&JcC<$JcELb[Dr6frQ4rXs2k;as31MgrQY;bp!3T?rNH+$s0)I,qm#gurNZ=,
+qo8Y,s0;O.rNlI.s0;O.rNl=*pTaOuq60Uss/k[kqlTUoo<%Pco<81uqpPMnrNQ7*rRCkqs3^kn
+s3LSfrQkMjs3LMfqpGAjs3^kms3CYhs31Mdqonl\o?MpedJs(DJcC<$hZ&*~>
+RK)p[oDeUdNW8eSZiAF%JcC<$JcE^hQ%%%CqgSPFJNiB`q0qp!Z[RK*bQ%M at JcC<$ir=N~>
+RK)p[oDeUdNW8eSZiAF%JcC<$JcE^hQ%%%CqgSPFJNiB`q0qp!Z[RK*bQ%M at JcC<$ir=N~>
+RK)p[oDeUdNW8eSZiAFmJcC<$JcE^h\&SHgs2k5^qoSl\s31Mfqp,/brQb5Aorn=upTa\$rNZ=,
+rNlC at s%*0qrNlI0rNlO0os=J"pTaOul*(,ks0)I,q60Usor[hgo<7nmqpYSpos+P$s3gqps3Uel
+rQtMjs3gYhqpPGls3gqos3L_jpW`NZrQk5`JcEpnr;_EKJcFa0J,~>
+RK)p[oDeUdNW8eSZiAF%JcC<$JcE^hQ%%%CqgSPFJNiB`q0qp!Z[RK*bQ%M at JcC<$ir=N~>
+RK)p[oDeUdNW8eSZiAF%JcC<$JcE^hQ%%%CqgSPFJNiB`q0qp!Z[RK*bQ%M at JcC<$ir=N~>
+RK)p[oDeUdNW8eSZiAFmJcC<$JcE^h\&SHgs2k5^qoSl\s31Mfqp,/brQb5Aorn=upTa\$rNZ=,
+rNlC at s%*0qrNlI0rNlO0os=J"pTaOul*(,ks0)I,q60Usor[hgo<7nmqpYSpos+P$s3gqps3Uel
+rQtMjs3gYhqpPGls3gqos3L_jpW`NZrQk5`JcEpnr;_EKJcFa0J,~>
+S,`!Yp]'mdQ2g^]X8gFnJcC<$JcEjlSUSUCqgSPFJNiB`q0qcr[sio.a8c)<JcC<$k5Tr~>
+S,`!Yp]'mdQ2g^]X8gFnJcC<$JcEjlSUSUCqgSPFJNiB`q0qcr[sio.a8c)<JcC<$k5Tr~>
+S,`!Yp]'mdQ2g^]X8gGaJcC<$JcEjl\]4Zis2b5_rQG)\s3(Geq9JT7rNH1(s0)C*rNZ7*q6Bn(
+rNlO2s0MUBs%*0rrNuO2rNuU2q6]h$qm-%&qlp+*s02O.s01amqlp+(s02I*nZMDco<A8"qpbYr
+rNZ1(rNZC,s3gqprR1Yns4%(tqpP;hrRCkrs3^kns3LGbq9T#ds3LMdJcEdjr;_EKJcFm4J,~>
+S,`!Yp]'mdQ2g^]X8gFnJcC<$JcEjlSUSUCqgSPFJNiB`q0qcr[sio.a8c)<JcC<$k5Tr~>
+S,`!Yp]'mdQ2g^]X8gFnJcC<$JcEjlSUSUCqgSPFJNiB`q0qcr[sio.a8c)<JcC<$k5Tr~>
+S,`!Yp]'mdQ2g^]X8gGaJcC<$JcEjl\]4Zis2b5_rQG)\s3(Geq9JT7rNH1(s0)C*rNZ7*q6Bn(
+rNlO2s0MUBs%*0rrNuO2rNuU2q6]h$qm-%&qlp+*s02O.s01amqlp+(s02I*nZMDco<A8"qpbYr
+rNZ1(rNZC,s3gqprR1Yns4%(tqpP;hrRCkrs3^kns3LGbq9T#ds3LMdJcEdjr;_EKJcFm4J,~>
+ScAQeq>^<lqu?Tpq>^BnTE"]eV>nYdJcC<$JcF!pUOL$CqgSPFJNiB`q0qWn]7,>2_uKZ8JcC<$
+lMlA~>
+ScAQeq>^<lqu?Tpq>^BnTE"]eV>nYdJcC<$JcF!pUOL$CqgSPFJNiB`q0qWn]7,>2_uKZ8JcC<$
+lMlA~>
+ScAQeq>^<lqu?Tpq>^BnTE"]eV>nZWJcC<$JcF!p\]4Zjs2k;arQP/^s31GemB6Jmq69h&rNcI0
+os4P&q6^%=s%*0srO)U4rO)[4rO)1&rNkOiqm6=.s0Ma2s0MO,q6Bh$rNH7(o<7bipTaVGs46_G
+rNZC,rRCktrRV#!s4%"rq:,Ans4%(ts3^knpWrZ^qpGGiqp'cm_uKZ8JcC<$lMlA~>
+ScAQeq>^<lqu?Tpq>^BnTE"]eV>nYdJcC<$JcF!pUOL$CqgSPFJNiB`q0qWn]7,>2_uKZ8JcC<$
+lMlA~>
+ScAQeq>^<lqu?Tpq>^BnTE"]eV>nYdJcC<$JcF!pUOL$CqgSPFJNiB`q0qWn]7,>2_uKZ8JcC<$
+lMlA~>
+ScAQeq>^<lqu?Tpq>^BnTE"]eV>nZWJcC<$JcF!p\]4Zjs2k;arQP/^s31GemB6Jmq69h&rNcI0
+os4P&q6^%=s%*0srO)U4rO)[4rO)1&rNkOiqm6=.s0Ma2s0MO,q6Bh$rNH7(o<7bipTaVGs46_G
+rNZC,rRCktrRV#!s4%"rq:,Ans4%(ts3^knpWrZ^qpGGiqp'cm_uKZ8JcC<$lMlA~>
+ScAWgp&Fsjqu?Tpq>^BnVuQPmSc?ZXJcC<$JcF-tX+%TCqgSPFJNiB`q0qKj^OCb6^]464JcC<$
+mf.e~>
+ScAWgp&Fsjqu?Tpq>^BnVuQPmSc?ZXJcC<$JcF-tX+%TCqgSPFJNiB`q0qKj^OCb6^]464JcC<$
+mf.e~>
+ScAWgp&Fsjqu?Tpq>^BnVuQPmSc?[KJcC<$JcF-t]>jlks2k;`s31GdrQP5Bore=uq6'b$rNQ1(
+rNc1(rNcC.rNuI0s0V[Cs%*0trO2[6rO2I.rNuC.q6]t(s0Vg4s0Vg4s0Vg4qm?7.osFJ"q6L%*
+qlp%&nZ_Vis0DUSrR_"Ros=V&s0;O.s4 at 5%s4@;%s4./!q:5Gps4./!s3q"rs3^Yhq9f)fs3Uel
+rQ]uo^]464JcC<$mf.e~>
+ScAWgp&Fsjqu?Tpq>^BnVuQPmSc?ZXJcC<$JcF-tX+%TCqgSPFJNiB`q0qKj^OCb6^]464JcC<$
+mf.e~>
+ScAWgp&Fsjqu?Tpq>^BnVuQPmSc?ZXJcC<$JcF-tX+%TCqgSPFJNiB`q0qKj^OCb6^]464JcC<$
+mf.e~>
+ScAWgp&Fsjqu?Tpq>^BnVuQPmSc?[KJcC<$JcF-t]>jlks2k;`s31GdrQP5Bore=uq6'b$rNQ1(
+rNc1(rNcC.rNuI0s0V[Cs%*0trO2[6rO2I.rNuC.q6]t(s0Vg4s0Vg4s0Vg4qm?7.osFJ"q6L%*
+qlp%&nZ_Vis0DUSrR_"Ros=V&s0;O.s4 at 5%s4@;%s4./!q:5Gps4./!s3q"rs3^Yhq9f)fs3Uel
+rQ]uo^]464JcC<$mf.e~>
+ScAWgp&FsjrVufrp&FsjYQ+J"Q2e[LJcC<$JcF:#Z[T/CqgSPFJNiB`q0q?f_g[1:]Dqa.JcC<$
+o`'F~>
+ScAWgp&FsjrVufrp&FsjYQ+J"Q2e[LJcC<$JcF:#Z[T/CqgSPFJNiB`q0q?f_g[1:]Dqa.JcC<$
+o`'F~>
+ScAWgp&FsjrVufrp&FsjYQ+J"Q2e\?JcC<$JcF:#]uL)ms2b5_s3(GerN?%"ore+os/u=(s02I,
+rNcC.qm?1*rNuO2s0hg4qo8Y,s0hm8rODg8qmQ=.s0hg6q6p=2s0h=&s0hg6q6on&q6^1.s0DO,
+pTX7opTjbMrRpkMrNuO0s0DO.s0Vg[s4RG)s4@"rqq(l!s4./!s3q"rqpG5fqpYSms3Uels3?2q
+]Dqa.JcC<$o`'F~>
+ScAWgp&FsjrVufrp&FsjYQ+J"Q2e[LJcC<$JcF:#Z[T/CqgSPFJNiB`q0q?f_g[1:]Dqa.JcC<$
+o`'F~>
+ScAWgp&FsjrVufrp&FsjYQ+J"Q2e[LJcC<$JcF:#Z[T/CqgSPFJNiB`q0q?f_g[1:]Dqa.JcC<$
+o`'F~>
+ScAWgp&FsjrVufrp&FsjYQ+J"Q2e\?JcC<$JcF:#]uL)ms2b5_s3(GerN?%"ore+os/u=(s02I,
+rNcC.qm?1*rNuO2s0hg4qo8Y,s0hm8rODg8qmQ=.s0hg6q6p=2s0h=&s0hg6q6on&q6^1.s0DO,
+pTX7opTjbMrRpkMrNuO0s0DO.s0Vg[s4RG)s4@"rqq(l!s4./!s3q"rqpG5fqpYSms3Uels3?2q
+]Dqa.JcC<$o`'F~>
+NW8qWrVufrp&Fsj\,Z7(O8lnBJcC<$JcFF']7-_CqgSPFJNiB`q0q3ba*rU>[K$1*JcC<$q#>j~>
+NW8qWrVufrp&Fsj\,Z7(O8lnBJcC<$JcFF']7-_CqgSPFJNiB`q0q3ba*rU>[K$1*JcC<$q#>j~>
+NW8qWrVufrp&Fsj\,Z7(O8lo5JcC<$JcFF']uL)ns/Z1$s/kOgs0)I,qlft&rNZC.rNlI0s0_O,
+rO)C.s0_aDs%*1!rODg:qmcU6qmQO6s1%s:o=4V*s0hs:s0hm8s1%s:o=4V*q6p=2s0Va2qm,n"
+pTjV$rS%5)mBlo"qm?=0s0Vg[s4RG)q:GGps4@;%s4./!s3pqpq:#5js3gqps3UekJcE.Xr;_EK
+JcGNFJ,~>
+NW8qWrVufrp&Fsj\,Z7(O8lnBJcC<$JcFF']7-_CqgSPFJNiB`q0q3ba*rU>[K$1*JcC<$q#>j~>
+NW8qWrVufrp&Fsj\,Z7(O8lnBJcC<$JcFF']7-_CqgSPFJNiB`q0q3ba*rU>[K$1*JcC<$q#>j~>
+NW8qWrVufrp&Fsj\,Z7(O8lo5JcC<$JcFF']uL)ns/Z1$s/kOgs0)I,qlft&rNZC.rNlI0s0_O,
+rO)C.s0_aDs%*1!rODg:qmcU6qmQO6s1%s:o=4V*s0hs:s0hm8s1%s:o=4V*q6p=2s0Va2qm,n"
+pTjV$rS%5)mBlo"qm?=0s0Vg[s4RG)q:GGps4@;%s4./!s3pqpq:#5js3gqps3UekJcE.Xr;_EK
+JcGNFJ,~>
+O8o.Yqu?Tpp&Fsj^]4*0L]=i4JcC<$JcFX-_1&.CqgSPFJNiB`q0q!\c$k6DZ2ab&JcC<$r;V9~>
+O8o.Yqu?Tpp&Fsj^]4*0L]=i4JcC<$JcFX-_1&.CqgSPFJNiB`q0q!\c$k6DZ2ab&JcC<$r;V9~>
+O8o.Yqu?Tpp&Fsj^]4*0L]=j'JcC<$JcFX-_8cGRs/Z1$rN5Cgs0)1$rNZ=,rNlO2pU0t,rO)U4
+q7$=2qo8Y,s1&$<rOVa6qmc[:s18*>pU^=8rOVs<qmcU8n[nh6rO`*@qmlO4s0r$:s0_g4q6Th$
+q6Tn(rS7A-rO)I.q6g70qmHC2rO)U2s4R;%pY#T!s4@;%s4./!s3pkpq:5Mos3gqps3Q>sZ2ab&
+JcC<$r;V9~>
+O8o.Yqu?Tpp&Fsj^]4*0L]=i4JcC<$JcFX-_1&.CqgSPFJNiB`q0q!\c$k6DZ2ab&JcC<$r;V9~>
+O8o.Yqu?Tpp&Fsj^]4*0L]=i4JcC<$JcFX-_1&.CqgSPFJNiB`q0q!\c$k6DZ2ab&JcC<$r;V9~>
+O8o.Yqu?Tpp&Fsj^]4*0L]=j'JcC<$JcFX-_8cGRs/Z1$rN5Cgs0)1$rNZ=,rNlO2pU0t,rO)U4
+q7$=2qo8Y,s1&$<rOVa6qmc[:s18*>pU^=8rOVs<qmcU8n[nh6rO`*@qmlO4s0r$:s0_g4q6Th$
+q6Tn(rS7A-rO)I.q6g70qmHC2rO)U2s4R;%pY#T!s4@;%s4./!s3pkpq:5Mos3gqps3Q>sZ2ab&
+JcC<$r;V9~>
+PQ1FYqu?Tpp&Fsja8br8JcGcMZ[RK*JcC<$j8[5MRm-^urr at U6lTY,neNVB0JcDkPr;_EKJc>`M
+J,~>
+PQ1FYqu?Tpp&Fsja8br8JcGcMZ[RK*JcC<$j8[5MRm-^urr at U6lTY,neNVB0JcDkPr;_EKJc>`M
+J,~>
+PQ1FYqu?Tpp&Fsja8br8JcGcMZc7RrJcC<$j8[6 at pT"7orN-%$ore=uq6'\"s02O.s02I,rNc=,
+s0Va4rO2O0rO2[6q7-C4qo8Y,s1/*>qn)a<rO`*@s1A6Bqn;g<qn;m>rO`$>s1A<Ds1S$<s1eNH
+s1SHFqn)a:s1/0>s0r$:q6fh$s0_g4q6g1XrSRR^o<nV,s0_a4rO;a6rO)U2rRq)%rS.A+s4RG)
+s4@;%q:5;ls4./!s3q"rJcDkPr;_EKJc>`MJ,~>
+PQ1FYqu?Tpp&Fsja8br8JcGcMZ[RK*JcC<$j8[5MRm-^urr at U6lTY,neNVB0JcDkPr;_EKJc>`M
+J,~>
+PQ1FYqu?Tpp&Fsja8br8JcGcMZ[RK*JcC<$j8[5MRm-^urr at U6lTY,neNVB0JcDkPr;_EKJc>`M
+J,~>
+PQ1FYqu?Tpp&Fsja8br8JcGcMZc7RrJcC<$j8[6 at pT"7orN-%$ore=uq6'\"s02O.s02I,rNc=,
+s0Va4rO2O0rO2[6q7-C4qo8Y,s1/*>qn)a<rO`*@s1A6Bqn;g<qn;m>rO`$>s1A<Ds1S$<s1eNH
+s1SHFqn)a:s1/0>s0r$:q6fh$s0_g4q6g1XrSRR^o<nV,s0_a4rO;a6rO)U2rRq)%rS.A+s4RG)
+s4@;%q:5;ls4./!s3q"rJcDkPr;_EKJc>`MJ,~>
+Q2g^]p](0lp&FsjoDegjh>d?PJcGKEYC;'&JcC<$kPrqYP<Skmrr at U6lTY,nd6?*0JcD_Lr;_EK
+K`?Q~>
+Q2g^]p](0lp&FsjoDegjh>d?PJcGKEYC;'&JcC<$kPrqYP<Skmrr at U6lTY,nd6?*0JcD_Lr;_EK
+K`?Q~>
+Q2g^]p](0lp&FsjoDegjh>d?PJcGKEYJu.nJcC<$kPrrLn#HDgs/c7&o<.torN?1(s02C*rNcC.
+q6^10pU:+0s0hm8rOD[6s1&*>qo8Y,s186Bs1J6Bq7ca>s1\<DqnE$DrP8BHotLI at s1n<DrPJNL
+s1nZLqnE*DrOi0Bs186 at s1&$:s0h[2mC)uOrSd^arO2[4q6p+.rODg8rO2[4rNuIVqqV5+s4[M+
+s4IA'qptMns475#s3uW"WW2nsJcCE'J,~>
+Q2g^]p](0lp&FsjoDegjh>d?PJcGKEYC;'&JcC<$kPrqYP<Skmrr at U6lTY,nd6?*0JcD_Lr;_EK
+K`?Q~>
+Q2g^]p](0lp&FsjoDegjh>d?PJcGKEYC;'&JcC<$kPrqYP<Skmrr at U6lTY,nd6?*0JcD_Lr;_EK
+K`?Q~>
+Q2g^]p](0lp&FsjoDegjh>d?PJcGKEYJu.nJcC<$kPrrLn#HDgs/c7&o<.torN?1(s02C*rNcC.
+q6^10pU:+0s0hm8rOD[6s1&*>qo8Y,s186Bs1J6Bq7ca>s1\<DqnE$DrP8BHotLI at s1n<DrPJNL
+s1nZLqnE*DrOi0Bs186 at s1&$:s0h[2mC)uOrSd^arO2[4q6p+.rODg8rO2[4rNuIVqqV5+s4[M+
+s4IA'qptMns475#s3uW"WW2nsJcCE'J,~>
+RK*-aoDeahp&Fsjnc/Ofl2UPZJcG9?X+#X"JcC<$li5RcNB[5grr at U6lTY,nbs'g0JcDSHr;_EK
+M#Vu~>
+RK*-aoDeahp&Fsjnc/Ofl2UPZJcG9?X+#X"JcC<$li5RcNB[5grr at U6lTY,nbs'g0JcDSHr;_EK
+M#Vu~>
+RK*-aoDeahp&Fsjnc/Ofl2UPZJcG9?X2]_jJcC<$li5SVl`0ucs/c1$ore=us02=&rNQ=,rNcC.
+pU't.rO2[6rO2[6rODg:ot(1CrQ"q0rOr6FrP/BJqn`6Hs1eTLrPANNrPAHJrPA<Hotg[FrPS<H
+rPe`Rs24lRqn`<Js1eNHs1SHFs1A<Blad&*pUC+\rT!jdrO;a6qmZ=0rOMm:rO;a6q6g7Xq;))+
+s4dS-s4RG)rR^kts4RG)s4@;%JcDSHr;_EKM#Vu~>
+RK*-aoDeahp&Fsjnc/Ofl2UPZJcG9?X+#X"JcC<$li5RcNB[5grr at U6lTY,nbs'g0JcDSHr;_EK
+M#Vu~>
+RK*-aoDeahp&Fsjnc/Ofl2UPZJcG9?X+#X"JcC<$li5RcNB[5grr at U6lTY,nbs'g0JcDSHr;_EK
+M#Vu~>
+RK*-aoDeahp&Fsjnc/Ofl2UPZJcG9?X2]_jJcC<$li5SVl`0ucs/c1$ore=us02=&rNQ=,rNcC.
+pU't.rO2[6rO2[6rODg:ot(1CrQ"q0rOr6FrP/BJqn`6Hs1eTLrPANNrPAHJrPA<Hotg[FrPS<H
+rPe`Rs24lRqn`<Js1eNHs1SHFs1A<Blad&*pUC+\rT!jdrO;a6qmZ=0rOMm:rO;a6q6g7Xq;))+
+s4dS-s4RG)rR^kts4RG)s4@;%JcDSHr;_EKM#Vu~>
+S,`?cnc/Ofp&FsjmJm%`p]($hJcG!7Vga3sJcC<$n,M9oKg,B_rr at U6lTY,naZeO0JcDGDqZ)3I
+NrOV~>
+S,`?cnc/Ofp&FsjmJm%`p]($hJcG!7Vga3sJcC<$n,M9oKg,B_rrCe;rBHQ2q0pFLh0sqTU&Xui
+JcCc1J,~>
+S,`?cnc/Ofp&FsjmJm%`p]($hJcG!7VoF;fJcC<$n,M:bjf89[s/c7&ore7sqlp%&s02O.rNcI0
+rNu7*s0h[2rODg:rOVa8s1JBOs2Y/\s%<=+s1nTLrPJ<Hs2+`Pq8E0Js2=fRrP\`Rs2=`Ps2OZN
+rQ+rXs2P#VrP\`Rs2+`Ns1nZKs1Rs8pUgI:s1/$:rT+"?s5s3hq7-=4s18*<rOVs<rODg8rO2U2
+s0hm_s53k5s5!_1s4dS-s4RG)q:Y`#s4RG)JcDGDqZ)3INrOV~>
+S,`?cnc/Ofp&FsjmJm%`p]($hJcG!7Vga3sJcC<$n,M9oKg,B_rr at U6lTY,naZeO0JcDGDqZ)3I
+NrOV~>
+S,`?cnc/Ofp&FsjmJm%`p]($hJcG!7Vga3sJcC<$n,M9oKg,B_rrCe;rBHQ2q0pFLh0sqTU&Xui
+JcCc1J,~>
+S,`?cnc/Ofp&FsjmJm%`p]($hJcG!7VoF;fJcC<$n,M:bjf89[s/c7&ore7sqlp%&s02O.rNcI0
+rNu7*s0h[2rODg:rOVa8s1JBOs2Y/\s%<=+s1nTLrPJ<Hs2+`Pq8E0Js2=fRrP\`Rs2=`Ps2OZN
+rQ+rXs2P#VrP\`Rs2+`Ns1nZKs1Rs8pUgI:s1/$:rT+"?s5s3hq7-=4s18*<rOVs<rODg8rO2U2
+s0hm_s53k5s5!_1s4dS-s4RG)q:Y`#s4RG)JcDGDqZ)3INrOV~>
+S,`EemJm+bq>^<lkPtJ\s8W#tJcF^/UOIdoJcC<$oDe!&JNj#rqgSPFJNiB`q0p4Fj*lRZS,`Ee
+JcCo5J,~>
+S,`EemJm+bq>^<lkPtJ\s8W#tJcF^/UOIdoJcC<$oDe!&JNj#rqgSPFq`amAks"i+R6LFq_`m+0
+JcD5>r;_EKP5g%~>
+S,`EemJm+bq>^<lkPtJ\s8W#tJcF^/UW.lbJcC<$oDe!nh5^LUs/c7&o</+ss02O.q69h&s0D[2
+rNuU4rO2U2s0hs:qmc[8s1/$<qn)[:rOr6Ns2Y/]s%E=-rPSZRs2FlTq8N<Ps2Y)XrPe`Tq8`BP
+qoJfZo?-sRrQ>/^rQ+rXs2P)XrP\`Qs2"`NqnMU6s1SHFs1A0>s5s:Cs60Kpqmua:rOVg:rOVs>
+rOVs<rODg8pU:%0s5<q7s5*e3s4mY/pY,N!s4W&(S,`EeJcCo5J,~>
+S,`EemJm+bq>^<lkPtJ\s8W#tJcF^/UOIdoJcC<$oDe!&JNj#rqgSPFJNiB`q0p4Fj*lRZS,`Ee
+JcCo5J,~>
+S,`EemJm+bq>^<lkPtJ\s8W#tJcF^/UOIdoJcC<$oDe!&JNj#rqgSPFq`amAks"i+R6LFq_`m+0
+JcD5>r;_EKP5g%~>
+S,`EemJm+bq>^<lkPtJ\s8W#tJcF^/UW.lbJcC<$oDe!nh5^LUs/c7&o</+ss02O.q69h&s0D[2
+rNuU4rO2U2s0hs:qmc[8s1/$<qn)[:rOr6Ns2Y/]s%E=-rPSZRs2FlTq8N<Ps2Y)XrPe`Tq8`BP
+qoJfZo?-sRrQ>/^rQ+rXs2P)XrP\`Qs2"`NqnMU6s1SHFs1A0>s5s:Cs60Kpqmua:rOVg:rOVs>
+rOVs<rODg8pU:%0s5<q7s5*e3s4mY/pY,N!s4W&(S,`EeJcCo5J,~>
+ScAWgli6n`q>^BniW&iVs8W#tJcFj3SUQ.iJcC<$q>]i2JNiflqgSPFJNiB`q0p(BkC/!^QiI!a
+JcD&9J,~>
+ScAWgli6n`q>^BniW&iVs8W#tJcFj3SUQ.iJcC<$q>]i2JNiflqgSPFrBC6GrBU6Em6:&)UH\]B
+s$$7-^HUh0JcD):r;_EKQN)I~>
+ScAWgli6n`q>^BniW&iVs8W#tJcFj3S]66\JcC<$q>]j%frG(QrN-%$ore=urNQ1(rNQ=,s0DU0
+s0Vg6o="\.qmc[:s180 at qn2g>qnE*Fs2P)Zs2k:7rPefVs2G#Xs2XlTs2Y)Zq8rTVrQ5)^q8rZX
+s2k;`qonZVqp,/bs31GbrQ>/^s2b/Zs2=rTs2+6 at q8!$Fs1\HFs1JBrrTaFKqn2a:qn2sBpUpI:
+rOVs<qmcI2qmc[8s5<q7s5*e3s4mG)q:pQ$QiI!aJcD&9J,~>
+ScAWgli6n`q>^BniW&iVs8W#tJcFj3SUQ.iJcC<$q>]i2JNiflqgSPFJNiB`q0p(BkC/!^QiI!a
+JcD&9J,~>
+ScAWgli6n`q>^BniW&iVs8W#tJcFj3SUQ.iJcC<$q>]i2JNiflqgSPFrBC6GrBU6Em6:&)UH\]B
+s$$7-^HUh0JcD):r;_EKQN)I~>
+ScAWgli6n`q>^BniW&iVs8W#tJcFj3S]66\JcC<$q>]j%frG(QrN-%$ore=urNQ1(rNQ=,s0DU0
+s0Vg6o="\.qmc[:s180 at qn2g>qnE*Fs2P)Zs2k:7rPefVs2G#Xs2XlTs2Y)Zq8rTVrQ5)^q8rZX
+s2k;`qonZVqp,/bs31GbrQ>/^s2b/Zs2=rTs2+6 at q8!$Fs1\HFs1JBrrTaFKqn2a:qn2sBpUpI:
+rOVs<qmcI2qmc[8s5<q7s5*e3s4mG)q:pQ$QiI!aJcD&9J,~>
+ScA'Wq>^$dhuE]Vqu?TpJcG!7R=9_eJcC<$rVuP>JNiNdqgSPFJNiB`q0oq>l[FEbPQ1R]JcD2=
+J,~>
+ScA'Wq>^$dhuE]Vqu?TpJcG!7R=9_eJcC<$rVuP>JNifls$-BEqgSPFrBC6GrB^<Gq`ja;rBL6G
+rBL<Iq*1uFpHSJ&]0>P0JcCr6r;_EKRf at m~>
+ScA'Wq>^$dhuE]Vqu?TpJcG!7RDsgXJcC<$rVuQ1e#NAIs/c7&o</+ss02O.s0DI*rNcI0s0Va4
+s0hm8qmQO6s1%s:s186Cqn;m at qnN$Ds2P)Zs2k:7rQ"rZs2Y/\s2jlTrQG5brQG/^rQG5bpWNT\
+s3:Shs3L;`qpGAjs3UelrQbAds31Mds2tA`s2OrTrP\0Bs2+fPrP8BHrTsROs6fp$qn;s at rOr$@
+q7Za>rO_s<qmlU6qml[8s0r$ds53k5s5!S-qq_;/JcCr6r;_EKRf at m~>
+ScA'Wq>^$dhuE]Vqu?TpJcG!7R=9_eJcC<$rVuP>JNiNdqgSPFJNiB`q0oq>l[FEbPQ1R]JcD2=
+J,~>
+ScA'Wq>^$dhuE]Vqu?TpJcG!7R=9_eJcC<$rVuP>JNifls$-BEqgSPFrBC6GrB^<Gq`ja;rBL6G
+rBL<Iq*1uFpHSJ&]0>P0JcCr6r;_EKRf at m~>
+ScA'Wq>^$dhuE]Vqu?TpJcG!7RDsgXJcC<$rVuQ1e#NAIs/c7&o</+ss02O.s0DI*rNcI0s0Va4
+s0hm8qmQO6s1%s:s186Cqn;m at qnN$Ds2P)Zs2k:7rQ"rZs2Y/\s2jlTrQG5brQG/^rQG5bpWNT\
+s3:Shs3L;`qpGAjs3UelrQbAds31Mds2tA`s2OrTrP\0Bs2+fPrP8BHrTsROs6fp$qn;s at rOr$@
+q7Za>rO_s<qmlU6qml[8s0r$ds53k5s5!S-qq_;/JcCr6r;_EKRf at m~>
+ScA'Wp]($hg].9Rp](0lJcG-;Q%";aJcC<$qgO)[ks"unrr at U6lTY,n[m'80JcCf2r;_EKT)X<~>
+ScA'Wp]($hg].9Rp](0lJcG-;Q%";aJcC<$qgO)[o02n5qgSPFs$$HIs$6NLrB^HMs$?TKrBL0C
+rBL*Cqa(0Gq`hVTmm$i%qgQ"<ms]ifO8o.YJcD>AJ,~>
+ScA'Wp]($hg].9Rp](0lJcG-;Q,\CTJcC<$qo6m\s/Z1$s/kmqs0)I,rNZ7*rNZC.s0M[2s0_m8
+osan0rOMs?s1JBFs1\<DpV?gFs2+fUs2Y/]s%NI7rQ>/^s2t/\s31MdrQP;dq9Jr`qp+r\s3CYj
+s3^kpp!`rjqpkYrs4%(ts3gqprQtSjs3CYhs3(G`qoA<JpVm0Ns24fPs2"[&s7$'YqnMs at rP/<H
+qnN*Dqn;m>qn)g<s1.s:rOMm:s0r$ds53k5rS at A-s5/D-O8o.YJcD>AJ,~>
+ScA'Wp]($hg].9Rp](0lJcG-;Q%";aJcC<$qgO)[ks"unrr at U6lTY,n[m'80JcCf2r;_EKT)X<~>
+ScA'Wp]($hg].9Rp](0lJcG-;Q%";aJcC<$qgO)[o02n5qgSPFs$$HIs$6NLrB^HMs$?TKrBL0C
+rBL*Cqa(0Gq`hVTmm$i%qgQ"<ms]ifO8o.YJcD>AJ,~>
+ScA'Wp]($hg].9Rp](0lJcG-;Q,\CTJcC<$qo6m\s/Z1$s/kmqs0)I,rNZ7*rNZC.s0M[2s0_m8
+osan0rOMs?s1JBFs1\<DpV?gFs2+fUs2Y/]s%NI7rQ>/^s2t/\s31MdrQP;dq9Jr`qp+r\s3CYj
+s3^kpp!`rjqpkYrs4%(ts3gqprQtSjs3CYhs3(G`qoA<JpVm0Ns24fPs2"[&s7$'YqnMs at rP/<H
+qnN*Dqn;m>qn)g<s1.s:rOMm:s0r$ds53k5rS at A-s5/D-O8o.YJcD>AJ,~>
+JcF-trrDZjr;_EKnc+`#JcC<$L&_%!JNi<^qgSPFJNiB`q0oY6o6u8jMuW_UJcDJEJ,~>
+JcF-trrDZjr;_EKnc+`#JcC<$L&_%!JNi`js$-BGrBL1.rrE'`s$6TMrBpTOqa:BMrB^HKrBL<G
+rBL<Iqa(*GrB^BIq`i%`pHSO?q`k*Gs$-O6qgRcnq*3=lo6u8jMuW_UJcDJEJ,~>
+JcF-trrDZjr;_EKnc+`kJcC<$L&_%ic`7#GrN-%$ore=urNQ=,os4P&s0Vg6rO2a8rODm:rODg:
+s186Bs1JBFs1eHHo>1CBs2P)Zs2k:7s2tAbs31MdrQOrZs3CYjs3UenrQtMhqp>)`s3Uens3q"t
+s4-kps4I5%rS.A*s4@;%s4%"rs3gqps3L_is2t#Vq8i<NrPnlVrP\[*s7?9_s2"TJrP/<Hq8*$F
+q7lmBqn;m>ot116rOMm:s0r$ds53k5qqqG3JcCZ.r;_EKUAo`~>
+JcF-trrDZjr;_EKnc+`#JcC<$L&_%!JNi<^qgSPFJNiB`q0oY6o6u8jMuW_UJcDJEJ,~>
+JcF-trrDZjr;_EKnc+`#JcC<$L&_%!JNi`js$-BGrBL1.rrE'`s$6TMrBpTOqa:BMrB^HKrBL<G
+rBL<Iqa(*GrB^BIq`i%`pHSO?q`k*Gs$-O6qgRcnq*3=lo6u8jMuW_UJcDJEJ,~>
+JcF-trrDZjr;_EKnc+`kJcC<$L&_%ic`7#GrN-%$ore=urNQ=,os4P&s0Vg6rO2a8rODm:rODg:
+s186Bs1JBFs1eHHo>1CBs2P)Zs2k:7s2tAbs31MdrQOrZs3CYjs3UenrQtMhqp>)`s3Uens3q"t
+s4-kps4I5%rS.A*s4@;%s4%"rs3gqps3L_is2t#Vq8i<NrPnlVrP\[*s7?9_s2"TJrP/<Hq8*$F
+q7lmBqn;m>ot116rOMm:s0r$ds53k5qqqG3JcCZ.r;_EKUAo`~>
+JcF-trrDNfr;_EKp&C##JcC<$PQ1N/rVubDJNi<^qgSPFJNiB`q0oM2pO7\nL]@5OJcD\KJ,~>
+JcF-trrDNfr;_EKp&C##JcC<$PQ1N/rVubDJNi`js$-6DqgSPFs$-NLs$HNLs$crUqa:BMrB^<G
+qa(6Kqa:<KrB^<GrBJ[nofr==qa'sAs+13"rI49#ofrC?s$+mppO7\nL]@5OJcD\KJ,~>
+JcF-trrDNfr;_EKp&C#kJcC<$PQ1O"rVuc7dAm/Gs/c7&o</+ss02O.o<SD&s0Va4s0hs:q7-C6
+rOW$@s1JBGs1eTLs2"NJs24ZLrPSZTs2Y/]s%NI9s3:Shs3:;`s3L_jrQkGirR1_ppX8f`s3gqs
+s4./$s4I)!s4dS/s5!_3rSRY2s4dS,s4 at 5#s4..us3^kms3:Ses31;^q9&HRrQ+rXs2P$1s7ZKe
+qni0FpVQmFpV?[@qnE$BpUpI:rOVs<qmcI[s5AP/L]@5OJcD\KJ,~>
+JcF-trrDNfr;_EKp&C##JcC<$PQ1N/rVubDJNi<^qgSPFJNiB`q0oM2pO7\nL]@5OJcD\KJ,~>
+JcF-trrDNfr;_EKp&C##JcC<$PQ1N/rVubDJNi`js$-6DqgSPFs$-NLs$HNLs$crUqa:BMrB^<G
+qa(6Kqa:<KrB^<GrBJ[nofr==qa'sAs+13"rI49#ofrC?s$+mppO7\nL]@5OJcD\KJ,~>
+JcF-trrDNfr;_EKp&C#kJcC<$PQ1O"rVuc7dAm/Gs/c7&o</+ss02O.o<SD&s0Va4s0hs:q7-C6
+rOW$@s1JBGs1eTLs2"NJs24ZLrPSZTs2Y/]s%NI9s3:Shs3:;`s3L_jrQkGirR1_ppX8f`s3gqs
+s4./$s4I)!s4dS/s5!_3rSRY2s4dS,s4 at 5#s4..us3^kms3:Ses31;^q9&HRrQ+rXs2P$1s7ZKe
+qni0FpVQmFpV?[@qnE$BpUpI:rOVs<qmcI[s5AP/L]@5OJcD\KJ,~>
+JcF-trrDBbqZ)3Iqu;G#JcC<$U&X_5rVubDJNi<^qgSPFJNiB`q0o;,rI0=tJcGZKJcDhOJ,~>
+JcF-trrDBbqZ)3Iqu;G#JcC<$U&X_5rVubDJNj)uq*+gCs$6<FqgSPFs$?ZOs$QZPqaUHOs$ZTK
+qa1<MqaCBMrBg<Gs$6HGh`gj#s$6TKq*=gCqa16Is$6TMs$6U9s+(-!s*jc-q*4O;rB^BHbs))T
+JcC<$r;_EKXT*e~>
+JcF-trrDBbqZ)3Iqu;GkJcC<$U&X`(rVuc7dAm5Is/c1$ore=us02I,os4V(rNuU4s0hm8s1%s:
+rOVs>s1JBGs1eTLrPJNNqo&<Js2=rTs2P)[s2k:8s3:Shs3Uels3Uelp!E`ds3genp!ilfrRCkt
+s4@;'s4[M-pY>f*s53k8s5O"<s5O(:s4mY.rRq5's475!s3^kms3:Shq9A`Zo?70VrQ5$5s7u]k
+s2=fPpVQgFrPJ6DqnW*DqnDs at rOi$>qmug<s1&$:s5F";JcC<$r;_EKXT*e~>
+JcF-trrDBbqZ)3Iqu;G#JcC<$U&X_5rVubDJNi<^qgSPFJNiB`q0o;,rI0=tJcGZKJcDhOJ,~>
+JcF-trrDBbqZ)3Iqu;G#JcC<$U&X_5rVubDJNj)uq*+gCs$6<FqgSPFs$?ZOs$QZPqaUHOs$ZTK
+qa1<MqaCBMrBg<Gs$6HGh`gj#s$6TKq*=gCqa16Is$6TMs$6U9s+(-!s*jc-q*4O;rB^BHbs))T
+JcC<$r;_EKXT*e~>
+JcF-trrDBbqZ)3Iqu;GkJcC<$U&X`(rVuc7dAm5Is/c1$ore=us02I,os4V(rNuU4s0hm8s1%s:
+rOVs>s1JBGs1eTLrPJNNqo&<Js2=rTs2P)[s2k:8s3:Shs3Uels3Uelp!E`ds3genp!ilfrRCkt
+s4@;'s4[M-pY>f*s53k8s5O"<s5O(:s4mY.rRq5's475!s3^kms3:Shq9A`Zo?70VrQ5$5s7u]k
+s2=fPpVQgFrPJ6DqnW*DqnDs at rOi$>qmug<s1&$:s5F";JcC<$r;_EKXT*e~>
+JcF-trrD0\r;_EKs8R_#JcC<$XoI^9rVubDJNi<^qgSPFJNiB`q0o/(JcC<$rVufrJcDtSJ,~>
+JcF-trrD0\r;_EKs8R_#JcC<$XoI^9rVubDK0K)qs$$HIs$6TMq*Y0MqgSPFs$ZlUs$lfSs%)rU
+s$m#Wq*t6Ms$Z`QrC$BIrBgNMrBU<Gks"u/q`sg?q*OsGrBgBIs+C?&s+(-!s$$BGq*=mErBgBI
+rBgNMs$,a3s$,O-JcC<$rVufrJcDtSJ,~>
+JcF-trrD0\r;_EKs8R_kJcC<$XoI_,rVuc7e#NGKrN-%$ore7ss02O.os4P&s0Vg6s0hm8s1&$<
+rOVs>s1JBFs1\NJs2"`PrPSTPqo/HNqo/TVs2k;`s%`U>s3L;as3gqprR1_pqpbMnqptYrs4I;'
+s4[M-s5!_3pYZ#0s5O(?s6'@Es5s at As5<q5rS7G-s4RG's4%(rrQtAdq9Jf\s31GdrQP;brVQWm
+s8Do8s2=6 at q830Lqni6HqnW0FqnDs@rOi$>s186 at qm_4WJcG]Kr;_EKYlB4~>
+JcF-trrD0\r;_EKs8R_#JcC<$XoI^9rVubDJNi<^qgSPFJNiB`q0o/(JcC<$rVufrJcDtSJ,~>
+JcF-trrD0\r;_EKs8R_#JcC<$XoI^9rVubDK0K)qs$$HIs$6TMq*Y0MqgSPFs$ZlUs$lfSs%)rU
+s$m#Wq*t6Ms$Z`QrC$BIrBgNMrBU<Gks"u/q`sg?q*OsGrBgBIs+C?&s+(-!s$$BGq*=mErBgBI
+rBgNMs$,a3s$,O-JcC<$rVufrJcDtSJ,~>
+JcF-trrD0\r;_EKs8R_kJcC<$XoI_,rVuc7e#NGKrN-%$ore7ss02O.os4P&s0Vg6s0hm8s1&$<
+rOVs>s1JBFs1\NJs2"`PrPSTPqo/HNqo/TVs2k;`s%`U>s3L;as3gqprR1_pqpbMnqptYrs4I;'
+s4[M-s5!_3pYZ#0s5O(?s6'@Es5s at As5<q5rS7G-s4RG's4%(rrQtAdq9Jf\s31GdrQP;brVQWm
+s8Do8s2=6 at q830Lqni6HqnW0FqnDs@rOi$>s186 at qm_4WJcG]Kr;_EKYlB4~>
+JcF-trrD$Xr;_KMJU[WJJcC<$\,YQ=rVubDJNi<^qgSPFJNiB`q0o/(rI0=tJcG]Kr;_EK[/YX~>
+JcF-trrD$Xr;_KMJU[WJJcC<$\,YQ=rVubDK0K/trBL<Is$?ZOrC$NOqgSPFs$m#Ys%)TMrCH`U
+qagZUrC6`Sq*b6Os$ZlSrBgNMrBU<Gofi19rBU<Iqa1<Mq*OmEqaCBMrBgNMs+L?'s+L>9s$?BG
+pI"sIrBpTOs$6TKo02h3jZ`WlJcC<$rVufrJcE+WJ,~>
+JcF-trrD$Xr;_KMJ]@`0JcC<$\,YR0rVuc7eZ/SKs/c7&o</+ss02O.o<SD&s0Va4s0hm9rOMs>
+rO`$@s1SHHs1eTMs2+ZNs2=rVn&GCLs2tAcs%i[@s3^Yjp!`rjqpkYrrR_)%s4RG+qqM))rS at M1
+s5<S0s5a4As60LJrU'XMs6'FBs5Eq6s5*e2s4RG(s4./!s3q"rqpG5dq9T)ds3LMdq>UE6rPefT
+pVZaDq8<0Lqnr<JrPAHJq7lg at qn;s at s186@s1&*>rPjEgJcG]Kr;_EK[/YX~>
+JcF-trrD$Xr;_KMJU[WJJcC<$\,YQ=rVubDJNi<^qgSPFJNiB`q0o/(rI0=tJcG]Kr;_EK[/YX~>
+JcF-trrD$Xr;_KMJU[WJJcC<$\,YQ=rVubDK0K/trBL<Is$?ZOrC$NOqgSPFs$m#Ys%)TMrCH`U
+qagZUrC6`Sq*b6Os$ZlSrBgNMrBU<Gofi19rBU<Iqa1<Mq*OmEqaCBMrBgNMs+L?'s+L>9s$?BG
+pI"sIrBpTOs$6TKo02h3jZ`WlJcC<$rVufrJcE+WJ,~>
+JcF-trrD$Xr;_KMJ]@`0JcC<$\,YR0rVuc7eZ/SKs/c7&o</+ss02O.o<SD&s0Va4s0hm9rOMs>
+rO`$@s1SHHs1eTMs2+ZNs2=rVn&GCLs2tAcs%i[@s3^Yjp!`rjqpkYrrR_)%s4RG+qqM))rS at M1
+s5<S0s5a4As60LJrU'XMs6'FBs5Eq6s5*e2s4RG(s4./!s3q"rqpG5dq9T)ds3LMdq>UE6rPefT
+pVZaDq8<0Lqnr<JrPAHJq7lg at qn;s at s186@s1&*>rPjEgJcG]Kr;_EK[/YX~>
+JcF-trrCmTr;_WQJU[KFJcC<$_uJPArVubDJNi<^qgSPFJNiB`q0o/(q0mnpJcG]Kr;_EK\Gq'~>
+JcF-trrCmTr;_WQJU[KFJcC<$_uJPArVubDKg,N$qa(6Is$?ZOs$QfSs$clUrC?a6rrE'js%<;a
+qb6NQq+UZYrC[)]s%*/[s$lrUqaUNQs$ZfQs$H`OrBU$?rBU6GrBgBKq*b0Kq*b*KrC$NMrJCK1
+qa:$ErC-HKs$QfPs$6TKq`aa=q`t0GjZ`KhJcC<$rVufrJcE7[J,~>
+JcF-trrCmTr;_WQJ]@T,JcC<$_uJQ4rVuc7eZ/YMs/c1$ore=urNQ=,os4V(rNuU4s0hs:rOMm<
+s1A6BrOr6Fs1nZNs2+TMs2G#Xq8`NVs2Y#Xs2tAbs3:R?s3UeoqpY5frRLkts4@;'s4RG+rS.A-
+s5!_3rSRS3rSde9s5We6s6'FGs6K^QrUKpTs6BXHs5a.<s5F"8s4mY.s4RG)s4@;%s4./!s3pel
+p!NZ`s3LN?rPnlVrP\`Ro>L[Jq8E*JrP\`Rqni<JrP8HLqnW*DrP&<Fs1JBDs186 at q8S!cJcG]K
+r;_EK\Gq'~>
+JcF-trrCmTr;_WQJU[KFJcC<$_uJPArVubDJNi<^qgSPFJNiB`q0o/(q0mnpJcG]Kr;_EK\Gq'~>
+JcF-trrCmTr;_WQJU[KFJcC<$_uJPArVubDKg,N$qa(6Is$?ZOs$QfSs$clUrC?a6rrE'js%<;a
+qb6NQq+UZYrC[)]s%*/[s$lrUqaUNQs$ZfQs$H`OrBU$?rBU6GrBgBKq*b0Kq*b*KrC$NMrJCK1
+qa:$ErC-HKs$QfPs$6TKq`aa=q`t0GjZ`KhJcC<$rVufrJcE7[J,~>
+JcF-trrCmTr;_WQJ]@T,JcC<$_uJQ4rVuc7eZ/YMs/c1$ore=urNQ=,os4V(rNuU4s0hs:rOMm<
+s1A6BrOr6Fs1nZNs2+TMs2G#Xq8`NVs2Y#Xs2tAbs3:R?s3UeoqpY5frRLkts4@;'s4RG+rS.A-
+s5!_3rSRS3rSde9s5We6s6'FGs6K^QrUKpTs6BXHs5a.<s5F"8s4mY.s4RG)s4@;%s4./!s3pel
+p!NZ`s3LN?rPnlVrP\`Ro>L[Jq8E*JrP\`Rqni<JrP8HLqnW*DrP&<Fs1JBDs186 at q8S!cJcG]K
+r;_EK\Gq'~>
+JcF-trrCaPr;_cUJU[?BJcC<$ci;OErVubDJNi<^qgSPFJNiB`q0o/(omVJlJcG]Kr;_EK]`3K~>
+JcF-trrCaPr;_cUJU[?BJcC<$ci;OErVubDLHb`&s$6BHs$QfSs$crWs$ulUqgSPFrCm5co1o6Y
+rD*Ags%rYiqbI)as%NGcs%<;^q+(HUs%!)YrC-`SrBpNMs$QZMs$6NKrBgBKrC$NOs$llSs$ZZO
+nOEP>qiLbGs$c<EqaLNQs$H`Os$6NIq`t0IrBU6Gs$6TKk<AQfJcC<$rVufrJcEC_J,~>
+JcF-trrCaPr;_cUJ]@H(JcC<$ci;P8rVuc7f;ekOrN-%$ore7ss02O.s0D[2pTjh*s0Vg6s0hs:
+s1&$=s1A6BrOr6Fs1eTLs2"`Ps2=`PrQ"`TpW<HYs31Mgs&&gDs3pkpq:5GprR_#$s4[M-s4mY1
+rSIS3s5<q9s5O";rT+"?rT<e:s69RLs6fpVs7?9]s7$'Us69RHrT4(?s5O(:s5*e3s4mY/s4[M+
+s4IA's4."rpXB)hrR(Ylq>U?4rPeHJn\tCFrPefTq8<0JrPAHLqn`0FrP/BGs1JBDs17mCJcC<$
+rVufrJcEC_J,~>
+JcF-trrCaPr;_cUJU[?BJcC<$ci;OErVubDJNi<^qgSPFJNiB`q0o/(omVJlJcG]Kr;_EK]`3K~>
+JcF-trrCaPr;_cUJU[?BJcC<$ci;OErVubDLHb`&s$6BHs$QfSs$crWs$ulUqgSPFrCm5co1o6Y
+rD*Ags%rYiqbI)as%NGcs%<;^q+(HUs%!)YrC-`SrBpNMs$QZMs$6NKrBgBKrC$NOs$llSs$ZZO
+nOEP>qiLbGs$c<EqaLNQs$H`Os$6NIq`t0IrBU6Gs$6TKk<AQfJcC<$rVufrJcEC_J,~>
+JcF-trrCaPr;_cUJ]@H(JcC<$ci;P8rVuc7f;ekOrN-%$ore7ss02O.s0D[2pTjh*s0Vg6s0hs:
+s1&$=s1A6BrOr6Fs1eTLs2"`Ps2=`PrQ"`TpW<HYs31Mgs&&gDs3pkpq:5GprR_#$s4[M-s4mY1
+rSIS3s5<q9s5O";rT+"?rT<e:s69RLs6fpVs7?9]s7$'Us69RHrT4(?s5O(:s5*e3s4mY/s4[M+
+s4IA's4."rpXB)hrR(Ylq>U?4rPeHJn\tCFrPefTq8<0JrPAHLqn`0FrP/BGs1JBDs17mCJcC<$
+rVufrJcEC_J,~>
+JcF-trrCULr;_oYJU[3>JcC<$g&KBIrVubDJNi<^qgSPFJNiB`q0o/(nU?&hJcG]KqZ)3I_Z,,~>
+JcF-trrCULr;_oYJU[3>JcC<$g&KBIrVubDOZr_.q`b$Es$?NLs$ZlUs$m#Ys%*/]q+CO5rrE'o
+s%iYknPT<_rDESms&8koqbd5es%`SgrCd)]rCQrYs%!)Ys%!)Yogf$Os$crUrBpHMrC-ZSpIG$K
+rC?lYo1AbDrCQBIrC?fUs$clSs$QfQqa'g?s$?ZMs$,a3nU?&hJcG]KqZ)3I_Z,,~>
+JcF-trrCULr;_oYJ]@<$JcC<$g&KC<rVuc7frG"Os/c7&o</+ss02I,s0DO.rNcI0s0Va4s0hs;
+s1/*?s1J<DrP&<Hs1nZNs24lTqo8TTrQ+fVqo\l\s31Mfs3L^Cs3gqsqpkSps4 at 5%rRq/)s5!_3
+s53k7rSde9s5X.?s5j4As6'FGs69LIoBZGDs7$'ZrUg-\s6p!Ss6BRHs6'FDs5X.=s5F"9s53k5
+rS7G-s4RG)s4@;%rRLeprR:_ns3^ZAs2Y)XrPefTn\t%<rPefTrPSZRrPSTNqnr<Jqn`<Js1eTJ
+s1SHEn]$.[JcG]KqZ)3I_Z,,~>
+JcF-trrCULr;_oYJU[3>JcC<$g&KBIrVubDJNi<^qgSPFJNiB`q0o/(nU?&hJcG]KqZ)3I_Z,,~>
+JcF-trrCULr;_oYJU[3>JcC<$g&KBIrVubDOZr_.q`b$Es$?NLs$ZlUs$m#Ys%*/]q+CO5rrE'o
+s%iYknPT<_rDESms&8koqbd5es%`SgrCd)]rCQrYs%!)Ys%!)Yogf$Os$crUrBpHMrC-ZSpIG$K
+rC?lYo1AbDrCQBIrC?fUs$clSs$QfQqa'g?s$?ZMs$,a3nU?&hJcG]KqZ)3I_Z,,~>
+JcF-trrCULr;_oYJ]@<$JcC<$g&KC<rVuc7frG"Os/c7&o</+ss02I,s0DO.rNcI0s0Va4s0hs;
+s1/*?s1J<DrP&<Hs1nZNs24lTqo8TTrQ+fVqo\l\s31Mfs3L^Cs3gqsqpkSps4 at 5%rRq/)s5!_3
+s53k7rSde9s5X.?s5j4As6'FGs69LIoBZGDs7$'ZrUg-\s6p!Ss6BRHs6'FDs5X.=s5F"9s53k5
+rS7G-s4RG)s4@;%rRLeprR:_ns3^ZAs2Y)XrPefTn\t%<rPefTrPSZRrPSTNqnr<Jqn`<Js1eTJ
+s1SHEn]$.[JcG]KqZ)3I_Z,,~>
+JcF-trrCIHqZ)o]JU[!8JcC<$kPrSOrVubDJNi<^qgSPFJNiB`q0o/(l[FEbJcG]Kr;_EK`rCP~>
+JcF-trrCIHqZ)o]JU[!8JcC<$kPrSOrVubDP<SY(s$6TNrC$ZSs$m#Ys%*/]s%<;aqb7#aqgSPF
+rDESmqc!Mos&JemrDikuqc3Soqc!Mls%r_krD*AerCm5`oh5<Ys%E;arCd/_s%*/[pI>*Oqag`Y
+pIP<UrC[)_oh>B[q4.CWs%DrUoh#0Ss%!)Ys$crUq*Y*Kq*Y0Ks$?ZMs$,g5l[FEbJcG]Kr;_EK
+`rCP~>
+JcF-trrCIHqZ)o]J]@)sJcC<$kPrTBrVuc7frG(Qs/c1$ore=urNQ=,s0D[2s0VU.s0Va4s0hs:
+s1/0 at rOi0DrP&6Fs1nZNs24lUs2XlTrQ4lXqoer^s3:Shs3UdEs3q"urRUr!rRh/'rS%5)s5*_4
+s5F";s5X(=s5j:Cs6'FGrTX at Is6K^Os6]@Es6p!Xs7H9_s7?9\s6fpSrTjLKs69LFs5j:As5X.=
+s5F"9s53k4s4mY/s4RG)s47(trRCeps3g`Bs2b)Xs2OfPkJmP at ou-gHpVcsHrPJTMs1eTJs1Ra<
+JcC<$rVufrJcEaiJ,~>
+JcF-trrCIHqZ)o]JU[!8JcC<$kPrSOrVubDJNi<^qgSPFJNiB`q0o/(l[FEbJcG]Kr;_EK`rCP~>
+JcF-trrCIHqZ)o]JU[!8JcC<$kPrSOrVubDP<SY(s$6TNrC$ZSs$m#Ys%*/]s%<;aqb7#aqgSPF
+rDESmqc!Mos&JemrDikuqc3Soqc!Mls%r_krD*AerCm5`oh5<Ys%E;arCd/_s%*/[pI>*Oqag`Y
+pIP<UrC[)_oh>B[q4.CWs%DrUoh#0Ss%!)Ys$crUq*Y*Kq*Y0Ks$?ZMs$,g5l[FEbJcG]Kr;_EK
+`rCP~>
+JcF-trrCIHqZ)o]J]@)sJcC<$kPrTBrVuc7frG(Qs/c1$ore=urNQ=,s0D[2s0VU.s0Va4s0hs:
+s1/0 at rOi0DrP&6Fs1nZNs24lUs2XlTrQ4lXqoer^s3:Shs3UdEs3q"urRUr!rRh/'rS%5)s5*_4
+s5F";s5X(=s5j:Cs6'FGrTX at Is6K^Os6]@Es6p!Xs7H9_s7?9\s6fpSrTjLKs69LFs5j:As5X.=
+s5F"9s53k4s4mY/s4RG)s47(trRCeps3g`Bs2b)Xs2OfPkJmP at ou-gHpVcsHrPJTMs1eTJs1Ra<
+JcC<$rVufrJcEaiJ,~>
+JcF-trrC7Br;`8cJUZj4JcC<$oDcRSrVubDJNi<^qgSPFJNiB`q0o/(kC/!^JcG]Kr;_EKb5Zt~>
+JcF-trrC7Br;`8cJUZj4JcC<$oDcRSrVubDPs4k*s$?ZOs$QfTs$m#Ys%*/]s%<;as%NGeqbI/f
+qgSPFs&8qss&Jqss&]5&qcEYsqcWl"rE&kss&B"sohtferD<MinPK6]s%`Sgs%NGcs%<;_qagZW
+rCZr[q+U`]s%`;arD<<arD3Ggs%WMes%W)Yqb-r]rCR#[s%!)Ys$crUq*k0Ks$QfQs$?TJs$$0A
+q**tjJcC<$rVufrJcEmmJ,~>
+JcF-trrC7Br;`8cJ]?roJcC<$oDcSFrVuc7gT(:SrN-%$ore7ss02O.rNcI0pU't.rO2a8s1&*?
+s1J<Ds1\HHrP8BJs2G#Ys2b)Zq9&NVqoo#`s3CYjs3^jGs4%)"s4@;'rRq/'s4dM-rS at M3s5O(=
+s5a4As5s at ErTO:Gs6BXMrTsROs6fjSrUBLMs763]s7Q?bs7H?^s7--YrU0XOrTjLJs60LGs5s at C
+s5X.=s5<q7s5*e2s4dS,s4 at 5#rRLkrs3pfCs2k/Zs2Ws8rPeZPrPe`Rou6sLqnrHNs2"`Ns1[[9
+JcC<$rVufrJcEmmJ,~>
+JcF-trrC7Br;`8cJUZj4JcC<$oDcRSrVubDJNi<^qgSPFJNiB`q0o/(kC/!^JcG]Kr;_EKb5Zt~>
+JcF-trrC7Br;`8cJUZj4JcC<$oDcRSrVubDPs4k*s$?ZOs$QfTs$m#Ys%*/]s%<;as%NGeqbI/f
+qgSPFs&8qss&Jqss&]5&qcEYsqcWl"rE&kss&B"sohtferD<MinPK6]s%`Sgs%NGcs%<;_qagZW
+rCZr[q+U`]s%`;arD<<arD3Ggs%WMes%W)Yqb-r]rCR#[s%!)Ys$crUq*k0Ks$QfQs$?TJs$$0A
+q**tjJcC<$rVufrJcEmmJ,~>
+JcF-trrC7Br;`8cJ]?roJcC<$oDcSFrVuc7gT(:SrN-%$ore7ss02O.rNcI0pU't.rO2a8s1&*?
+s1J<Ds1\HHrP8BJs2G#Ys2b)Zq9&NVqoo#`s3CYjs3^jGs4%)"s4@;'rRq/'s4dM-rS at M3s5O(=
+s5a4As5s at ErTO:Gs6BXMrTsROs6fjSrUBLMs763]s7Q?bs7H?^s7--YrU0XOrTjLJs60LGs5s at C
+s5X.=s5<q7s5*e2s4dS,s4 at 5#rRLkrs3pfCs2k/Zs2Ws8rPeZPrPe`Rou6sLqnrHNs2"`Ns1[[9
+JcC<$rVufrJcEmmJ,~>
+JcF-trrC+>r;`DgJUZ^0JcC<$s8TQWrVubDJNi<^qgSPFJNiB`q0o/(j*lRZJcG]Kr;_EKcMrC~>
+JcF-trrC+>r;`DgJUZ^0JcC<$s8TQWrVubDPs5.2rBUBIs$?ZOs$QfTs$m#Zs%35_s%EAcs%WMg
+s%iSis&&epqgSPFqcEf"rE9/(s',G*qcj#(s'>S.s',G*qcWr#pK7Ass&f;&s&T(urD`Mks&B"s
+s&&_ks%iYis%WA`s%NGes%`5_rD<Giq,7)gq5F6is&&_kohY<Ws%WMes%EAas%3/[s%!)YrC?fU
+rC-`Ss$QfQs$?ZMq`k$ErBL0Cj*lRZJcG]Kr;_EKcMrC~>
+JcF-trrC+>r;`DgJ]?fkJcC<$s8TRJrVuc7gT(:Ss/c7&o</+ss02I,s0D[2s0Vg6rNuU4rO2[6
+s1&*>s1A<ErP&<HrP8BJrPJTRrQ4rZq9/TXqp#)bs3L_ls3gpIs4./$s4IA*rS.;+s5!Y1s53k7
+s5O(>s5s at Es60LIs6BRKs6TdQrU0XQrUBjWrUTpYq=OXYs7cKes7ZKcs7H?_rUKjUs6p!Us6]jQ
+s6BXKs60LFs5j:@s5O(;s53k5s4dS,s4IA'rRUqts4$lDs2t5\rQ+rXiPtE,pW!6PrP\TNs2+fP
+s1m[7JcC<$rVufrJcF$qJ,~>
+JcF-trrC+>r;`DgJUZ^0JcC<$s8TQWrVubDJNi<^qgSPFJNiB`q0o/(j*lRZJcG]Kr;_EKcMrC~>
+JcF-trrC+>r;`DgJUZ^0JcC<$s8TQWrVubDPs5.2rBUBIs$?ZOs$QfTs$m#Zs%35_s%EAcs%WMg
+s%iSis&&epqgSPFqcEf"rE9/(s',G*qcj#(s'>S.s',G*qcWr#pK7Ass&f;&s&T(urD`Mks&B"s
+s&&_ks%iYis%WA`s%NGes%`5_rD<Giq,7)gq5F6is&&_kohY<Ws%WMes%EAas%3/[s%!)YrC?fU
+rC-`Ss$QfQs$?ZMq`k$ErBL0Cj*lRZJcG]Kr;_EKcMrC~>
+JcF-trrC+>r;`DgJ]?fkJcC<$s8TRJrVuc7gT(:Ss/c7&o</+ss02I,s0D[2s0Vg6rNuU4rO2[6
+s1&*>s1A<ErP&<HrP8BJrPJTRrQ4rZq9/TXqp#)bs3L_ls3gpIs4./$s4IA*rS.;+s5!Y1s53k7
+s5O(>s5s at Es60LIs6BRKs6TdQrU0XQrUBjWrUTpYq=OXYs7cKes7ZKcs7H?_rUKjUs6p!Us6]jQ
+s6BXKs60LFs5j:@s5O(;s53k5s4dS,s4IA'rRUqts4$lDs2t5\rQ+rXiPtE,pW!6PrP\TNs2+fP
+s1m[7JcC<$rVufrJcF$qJ,~>
+JcF-trrBt:r;`PkJUZX.JcCN*Z$uZOqgO)[ks"unrr at U6lTY,nV*<dcJcC<$rVufrJcF0uJ,~>
+JcF-trrBt:r;`PkJUZX.JcCN*Z$uZOqgOkqrBL0Es$?ZOs$ZlUs$m#Zs%<;as%NGes%`Sis%r_m
+rDNYps&T#GrrE(&qcj#(s'>Y2s'>S0qd95.s'PY0rE];,s'Pe4q-X),s'>Y0s',M,q-!`$s&oA(
+s&]5$s&K(us&8emrDEMis&&_moi(fgqc3Gmq6'`us&K"srDWGgqbd;grD3Ggs%WMes%EAas%3#W
+qa^ZUs$crUs$QfQs$?TKrB^HKs$-BEhgU.VJcG]Kr;_EKdf4g~>
+JcF-trrBt:r;`PkJ]?`iJcCN*Z,ZbBqo7Hls/Z1$rN5aqs0)C*s0;U0s0M[2qmHI4rO;a8s1/0@
+s1JBGrP/BJrPAHLrPSZTs2k;`qoefZq9Al`rQkMjs3^kps3q!Ks475&s4RG,rS at M1rSRS3s5F";
+s5a4Bs60LJs6K^Os6]dQrU9^SrUKjWrU^']rUp-_rV-3arV?Eds7ZKcrUg-]s763[s7$'Ws6fpS
+s6TdOs69RIs5s at Cs5a4>s5<q5s4dS-rRq5's4@;%s4-rEs3(;^rQ5#ZrQ!s<qo.sBs2FrTs24fR
+s24lQho:6IJcG]Kr;_EKdf4g~>
+JcF-trrBt:r;`PkJUZX.JcCN*Z$uZOqgO)[ks"unrr at U6lTY,nV*<dcJcC<$rVufrJcF0uJ,~>
+JcF-trrBt:r;`PkJUZX.JcCN*Z$uZOqgOkqrBL0Es$?ZOs$ZlUs$m#Zs%<;as%NGes%`Sis%r_m
+rDNYps&T#GrrE(&qcj#(s'>Y2s'>S0qd95.s'PY0rE];,s'Pe4q-X),s'>Y0s',M,q-!`$s&oA(
+s&]5$s&K(us&8emrDEMis&&_moi(fgqc3Gmq6'`us&K"srDWGgqbd;grD3Ggs%WMes%EAas%3#W
+qa^ZUs$crUs$QfQs$?TKrB^HKs$-BEhgU.VJcG]Kr;_EKdf4g~>
+JcF-trrBt:r;`PkJ]?`iJcCN*Z,ZbBqo7Hls/Z1$rN5aqs0)C*s0;U0s0M[2qmHI4rO;a8s1/0@
+s1JBGrP/BJrPAHLrPSZTs2k;`qoefZq9Al`rQkMjs3^kps3q!Ks475&s4RG,rS at M1rSRS3s5F";
+s5a4Bs60LJs6K^Os6]dQrU9^SrUKjWrU^']rUp-_rV-3arV?Eds7ZKcrUg-]s763[s7$'Ws6fpS
+s6TdOs69RIs5s at Cs5a4>s5<q5s4dS-rRq5's4@;%s4-rEs3(;^rQ5#ZrQ!s<qo.sBs2FrTs24fR
+s24lQho:6IJcG]Kr;_EKdf4g~>
+JcF-trrBh6r;`\oJUZX.JcCf2WIFgGqgO)[ks"unrrCM3s$)u:q0o/(gO=_RJcG]Kr;_EKf)L7~>
+JcF-trrBh6r;`\oJUZX.JcCf2WIFgGqgOqsrBL6GrB^HMs$ZlUs$m#Zs%<;bs%WMgs%iYks&&eo
+s&8qss&K)#s&o5JrrE"(s'PS0qdKG4qd]Y:qd]S8rF>e:q.9G8s(24 at s'u":s'bk6s'PY0s'>Y0
+rEK5(s&o5$rE&SkpK.;qpK at I%rO)Z.rE0#"s&SkorD`Yms&/kos%r_krD*Aes%NGcrCZlWs%*/[
+s$m#Ws$ZlSs$H`OrBgNMs$6TKrBAtbJcC<$rVufrJcF=$J,~>
+JcF-trrBh6r;`\oJ]?`iJcCf2WQ+o:qo7NnrN#t"s/kssrNH7*s0;O.s0Ma4s0_a4s0qs:rOMs>
+s1A<Es1eNJs2"ZNrPSTPs2Y/]s3(;`q9Al`rQkGhrR(Yns3pqrs&]6Ps4RG+s4mY2s53k7rSd_7
+s5X.?s5s at Fs6BXNs6fjSrUBdUrUTpYrUg']s7ZEcrV6?erVHEgs8)]is7lWgs7ZKcs7H?_s763[
+rUBjUs6fpRs6K^Ms60LGs5j:?s53k4s4mS-s4[M+s4IA&q>UE<qoer\rQ5#ZrQ!1&rPeNLs23U2
+JcC<$rVufrJcF=$J,~>
+JcF-trrBh6r;`\oJUZX.JcCf2WIFgGqgO)[ks"unrrCM3s$)u:q0o/(gO=_RJcG]Kr;_EKf)L7~>
+JcF-trrBh6r;`\oJUZX.JcCf2WIFgGqgOqsrBL6GrB^HMs$ZlUs$m#Zs%<;bs%WMgs%iYks&&eo
+s&8qss&K)#s&o5JrrE"(s'PS0qdKG4qd]Y:qd]S8rF>e:q.9G8s(24 at s'u":s'bk6s'PY0s'>Y0
+rEK5(s&o5$rE&SkpK.;qpK at I%rO)Z.rE0#"s&SkorD`Yms&/kos%r_krD*Aes%NGcrCZlWs%*/[
+s$m#Ws$ZlSs$H`OrBgNMs$6TKrBAtbJcC<$rVufrJcF=$J,~>
+JcF-trrBh6r;`\oJ]?`iJcCf2WQ+o:qo7NnrN#t"s/kssrNH7*s0;O.s0Ma4s0_a4s0qs:rOMs>
+s1A<Es1eNJs2"ZNrPSTPs2Y/]s3(;`q9Al`rQkGhrR(Yns3pqrs&]6Ps4RG+s4mY2s53k7rSd_7
+s5X.?s5s at Fs6BXNs6fjSrUBdUrUTpYrUg']s7ZEcrV6?erVHEgs8)]is7lWgs7ZKcs7H?_s763[
+rUBjUs6fpRs6K^Ms60LGs5j:?s53k4s4mS-s4[M+s4IA&q>UE<qoer\rQ5#ZrQ!1&rPeNLs23U2
+JcC<$rVufrJcF=$J,~>
+JcF-trrB\2r;`hsJUZX.q>^JDJcDGDTmlt?qgO)[ks"unrrDXSrBKC-q`g]:q0o/(eUE)LJcGcM
+qZ)3Ih#Dm~>
+JcF-trrB\2r;`hsJUZX.q>^JDJcDGDTmlt?qgOqss$-HIrB^HNs$ZlUs%!)[s%<;bs%`Sis%r_m
+s&8qsrDil!s&f;)s'5GMrrE(-rF5M3qdo_<rFc.Dqe?"DrFu:HrG2"@s(hXLs(VFFrFc.Bs(24@
+rF>_6s'be4s'P_2qd'5,oih/qoj%I-rOi/9s'5M,rEB5(q,mSsrDrqurD`eqs&/kos%rYis%`Sg
+rCm)]s%<;_s%*/[s$m#Ws$ZZMs$?ZMs$-NIeUE)LJcGcMqZ)3Ih#Dm~>
+JcF-trrB\2r;`hsJ]?`iq>^K7JcDGDTuR'2qo7Nns/Z1$s/kmqs0)I,rNZ=,s0Ma4s0_m8rO;g:
+rOMm<s1A<Ds1\NKrPANNqnrHPrPefWs2k;as31Gdq9JrcrR(SlrR:ers4.)!s&f<Rs4[M-s5!_4
+s5Eq9s5X(=s5j:Cs60LJs6TdRs7$!WrUTpYrUg']rV$3arV6EgrVHKirVZQks8;ims8)cks7lWg
+s7ZKcs7H?_s76-Ys7$'Ws6fpSs6K^Ms6'FCs5F"8s5*_1s4mY/s4[M)q>U?;rQP5`rQ>)\rQ+rX
+cc5q&s2=fRs2<I-JcC<$s8VrrJcFO*J,~>
+JcF-trrB\2r;`hsJUZX.q>^JDJcDGDTmlt?qgO)[ks"unrrDXSrBKC-q`g]:q0o/(eUE)LJcGcM
+qZ)3Ih#Dm~>
+JcF-trrB\2r;`hsJUZX.q>^JDJcDGDTmlt?qgOqss$-HIrB^HNs$ZlUs%!)[s%<;bs%`Sis%r_m
+s&8qsrDil!s&f;)s'5GMrrE(-rF5M3qdo_<rFc.Dqe?"DrFu:HrG2"@s(hXLs(VFFrFc.Bs(24@
+rF>_6s'be4s'P_2qd'5,oih/qoj%I-rOi/9s'5M,rEB5(q,mSsrDrqurD`eqs&/kos%rYis%`Sg
+rCm)]s%<;_s%*/[s$m#Ws$ZZMs$?ZMs$-NIeUE)LJcGcMqZ)3Ih#Dm~>
+JcF-trrB\2r;`hsJ]?`iq>^K7JcDGDTuR'2qo7Nns/Z1$s/kmqs0)I,rNZ=,s0Ma4s0_m8rO;g:
+rOMm<s1A<Ds1\NKrPANNqnrHPrPefWs2k;as31Gdq9JrcrR(SlrR:ers4.)!s&f<Rs4[M-s5!_4
+s5Eq9s5X(=s5j:Cs60LJs6TdRs7$!WrUTpYrUg']rV$3arV6EgrVHKirVZQks8;ims8)cks7lWg
+s7ZKcs7H?_s76-Ys7$'Ws6fpSs6K^Ms6'FCs5F"8s5*_1s4mY/s4[M)q>U?;rQP5`rQ>)\rQ+rX
+cc5q&s2=fRs2<I-JcC<$s8VrrJcFO*J,~>
+JcF-trrBP.qZ*i"JUZX.q>^8>JcDkPRst>9qgO)[ks"unrrDXSq*41/ofo38q0o/(d=-ZHJcG]K
+r;_EKi;\<~>
+JcF-trrBP.qZ*i"JUZX.q>^8>JcDkPRst>9qgP"us$-NKrB^HMs$QfSs$crXs%*/^s%NGfs%r_m
+s&/krs&K)"s&]5&s'#G,s'>Y3qgSPFrFQ"@o4\/<s(_RLs(q^PrGMRPrG_^Rs)A!Xs)S-\rGqdV
+s)S'Xs)A!Vs).^PrG_dTs(q^MrFu:Fs(D4 at s(2(<s'u(;s'Yk6o3V<$q-a6>qnrA?s'P_2rE]G.
+qcj#&s&o;&s&]5$rDikss&8kos&&ems%iYiqb@)as%EAas%35]s%!)Ys$cfQs$H`Os$6TKd=-ZH
+JcG]Kr;_EKi;\<~>
+JcF-trrBP.qZ*i"J]?`iq>^91JcDkPS&YF,qo7Nns/Z1$s/ksss0)C*s0;I,s0Ma4s0_m8s0r$<
+s1/*>rO`*Bs1SHIs1nTMqnrHPrPefVs2Y/]s3(GdrQb5bs3^kprR:_prRLr!s4 at 5%s'#HUs4dS/
+s5*e6s5O"<rT4(As6'FGs6BXNs6fpVrUU![rUg']rV$3arV6?erVHQkrVZ-_rVZ]ms8)cks7lWg
+s7ZKcs7H9]s763[s7$'Ws6fpRs69RGs5X.<rS[_5s5*e3s4dS+q>U?<rQY;brQG/^rQ5#Zs2WI*
+ou5=uJcC<$rVufrJcF[.J,~>
+JcF-trrBP.qZ*i"JUZX.q>^8>JcDkPRst>9qgO)[ks"unrrDXSq*41/ofo38q0o/(d=-ZHJcG]K
+r;_EKi;\<~>
+JcF-trrBP.qZ*i"JUZX.q>^8>JcDkPRst>9qgP"us$-NKrB^HMs$QfSs$crXs%*/^s%NGfs%r_m
+s&/krs&K)"s&]5&s'#G,s'>Y3qgSPFrFQ"@o4\/<s(_RLs(q^PrGMRPrG_^Rs)A!Xs)S-\rGqdV
+s)S'Xs)A!Vs).^PrG_dTs(q^MrFu:Fs(D4 at s(2(<s'u(;s'Yk6o3V<$q-a6>qnrA?s'P_2rE]G.
+qcj#&s&o;&s&]5$rDikss&8kos&&ems%iYiqb@)as%EAas%35]s%!)Ys$cfQs$H`Os$6TKd=-ZH
+JcG]Kr;_EKi;\<~>
+JcF-trrBP.qZ*i"J]?`iq>^91JcDkPS&YF,qo7Nns/Z1$s/ksss0)C*s0;I,s0Ma4s0_m8s0r$<
+s1/*>rO`*Bs1SHIs1nTMqnrHPrPefVs2Y/]s3(GdrQb5bs3^kprR:_prRLr!s4 at 5%s'#HUs4dS/
+s5*e6s5O"<rT4(As6'FGs6BXNs6fpVrUU![rUg']rV$3arV6?erVHQkrVZ-_rVZ]ms8)cks7lWg
+s7ZKcs7H9]s763[s7$'Ws6fpRs69RGs5X.<rS[_5s5*e3s4dS+q>U?<rQY;brQG/^rQ5#Zs2WI*
+ou5=uJcC<$rVufrJcF[.J,~>
+JcF-trrB>(r;a2(JUZX.q>^,:JcE:\PCEK1qgO)[ks"unrrD^Us$-BGs$-NKs$-$;rBL<Iq`k*G
+rBInXq*4O9q0o/(c$k6DJcG]Kr;_EKjSs`~>
+JcF-trrB>(r;a2(JUZX.q>^,:JcE:\PCEK1qgP)"s$-NKs$?TMs$QfSs$m#Ys%*/^s%NGfs%r_n
+s&8qts&]5&s&oA*s',M/s'Pe6s'kkSrrE(4s(VLJokaYFrGMXRs)S-\rH/!\rHA-^s*"Eds*=Wj
+om-R^qfi'cs*F]lqgAEjs*=Wfs)\3[s)7jRs)%^NrG2FJs(VLGs(;:BrFGq<q-s52q.0<Ds()(<
+s'kq8rF#Y4qd0;.s'5M,rEB5(rE0)#rDikss&8qqs%rSgs%`Sgs%NGcs%<;_s%*/[s$lrUs$QfQ
+s$?ZMc$k6DJcG]Kr;_EKjSs`~>
+JcF-trrB>(r;a2(J]?`iq>^--JcE:\PK*S$qo7Nns/Z1$s/ksss0)I,s0;C*s0Ma4s0_m8s0r$<
+s1/0 at s1A6Bs1SHHs1nZNrPSHLs2FrVs2b5^s3(GerQk;ds3gqsrRLkts4 at 5%s4RA)s'5TYs4mY1
+s53k8s5X. at s5s@ErTO:Gs6BXNs6fpVs76-\s7Q?arV--_s7u]krVQQkj8K#Us82ims7u]is7cQe
+rUp3_s7?9]s7--Ys6fpQs60LEs5X(;s5F"9s5*e2s4R5Is3UelrQbAdrQP5`rQ>)\s2WC(rPcgs
+JcC<$rVufrJcFg2J,~>
+JcF-trrB>(r;a2(JUZX.q>^,:JcE:\PCEK1qgO)[ks"unrrD^Us$-BGs$-NKs$-$;rBL<Iq`k*G
+rBInXq*4O9q0o/(c$k6DJcG]Kr;_EKjSs`~>
+JcF-trrB>(r;a2(JUZX.q>^,:JcE:\PCEK1qgP)"s$-NKs$?TMs$QfSs$m#Ys%*/^s%NGfs%r_n
+s&8qts&]5&s&oA*s',M/s'Pe6s'kkSrrE(4s(VLJokaYFrGMXRs)S-\rH/!\rHA-^s*"Eds*=Wj
+om-R^qfi'cs*F]lqgAEjs*=Wfs)\3[s)7jRs)%^NrG2FJs(VLGs(;:BrFGq<q-s52q.0<Ds()(<
+s'kq8rF#Y4qd0;.s'5M,rEB5(rE0)#rDikss&8qqs%rSgs%`Sgs%NGcs%<;_s%*/[s$lrUs$QfQ
+s$?ZMc$k6DJcG]Kr;_EKjSs`~>
+JcF-trrB>(r;a2(J]?`iq>^--JcE:\PK*S$qo7Nns/Z1$s/ksss0)I,s0;C*s0Ma4s0_m8s0r$<
+s1/0 at s1A6Bs1SHHs1nZNrPSHLs2FrVs2b5^s3(GerQk;ds3gqsrRLkts4 at 5%s4RA)s'5TYs4mY1
+s53k8s5X. at s5s@ErTO:Gs6BXNs6fpVs76-\s7Q?arV--_s7u]krVQQkj8K#Us82ims7u]is7cQe
+rUp3_s7?9]s7--Ys6fpQs60LEs5X(;s5F"9s5*e2s4R5Is3UelrQbAdrQP5`rQ>)\s2WC(rPcgs
+JcC<$rVufrJcFg2J,~>
+JcF-trrB2$r;a>,JUZX.q>]u6JcE^hMgkX)qgO)[ks"unrrDdWs$-NKqa(6IrBgNLrBL$?rBL0E
+s$?ZOs$?ZMq`i1dmm$P1q0o/(aaSg at JcG]Kr;_EKkl6/~>
+JcF-trrB2$r;a>,JUZX.q>]u6JcE^hMgkX)qgP)"s$-NLs$HZOs$ZlVs%!)[s%<;bs%`Sjs&/kr
+s&K)#s&oA*s',M/s'G_5s'l"<s(2(VrrE(8s)%dSq/H at PrGhjXs)J'Zs)n?ds*=Wjs*OWjrHnQl
+s*aoso76jlrIY'&s+UK-s+gK-s+gW.s+:9#s*aons*+KcrH%jVs)A!Us(q^NrG)@HrFl.Bs(;.@
+q.TfVqpG at Ts(;4 at rFGq<rF5_6rF#S2s'G_2rETA,s'#A's&]5$s&K(ts&/ems%r_ks%`Sgs%NGc
+s%<;_s%*/[s$m#Ws$QfQs$=bUJcC<$rVufrJcFs6J,~>
+JcF-trrB2$r;a>,J]?`iq>^!)JcE^hMoP_qqo7Nns/Z1$s/l$us0)I,rNZ1(s0Ma4s0_m8s0r$<
+s1/0ArOi0Ds1\NJs2"`PpVd*NrPnlXs2k;`s31MgrQtAfs3q"urR_##s4RA)s4dM-s'GZ[s53k8
+s5X. at s6'@Fs6BXMs6BXMs6]jTs763^rV$3as7lQgrVHKgs8)cmrVYFKs8;oos8)cks7lWgrV$9a
+s7H?^s7--Xs6]jOs6'@Bs5a4?s5O(9s5!_/q>UEBs3^knrQkMhrQY;brQG5`s2k;]MoL>JJcG]K
+r;_EKkl6/~>
+JcF-trrB2$r;a>,JUZX.q>]u6JcE^hMgkX)qgO)[ks"unrrDdWs$-NKqa(6IrBgNLrBL$?rBL0E
+s$?ZOs$?ZMq`i1dmm$P1q0o/(aaSg at JcG]Kr;_EKkl6/~>
+JcF-trrB2$r;a>,JUZX.q>]u6JcE^hMgkX)qgP)"s$-NLs$HZOs$ZlVs%!)[s%<;bs%`Sjs&/kr
+s&K)#s&oA*s',M/s'G_5s'l"<s(2(VrrE(8s)%dSq/H at PrGhjXs)J'Zs)n?ds*=Wjs*OWjrHnQl
+s*aoso76jlrIY'&s+UK-s+gK-s+gW.s+:9#s*aons*+KcrH%jVs)A!Us(q^NrG)@HrFl.Bs(;.@
+q.TfVqpG at Ts(;4 at rFGq<rF5_6rF#S2s'G_2rETA,s'#A's&]5$s&K(ts&/ems%r_ks%`Sgs%NGc
+s%<;_s%*/[s$m#Ws$QfQs$=bUJcC<$rVufrJcFs6J,~>
+JcF-trrB2$r;a>,J]?`iq>^!)JcE^hMoP_qqo7Nns/Z1$s/l$us0)I,rNZ1(s0Ma4s0_m8s0r$<
+s1/0ArOi0Ds1\NJs2"`PpVd*NrPnlXs2k;`s31MgrQtAfs3q"urR_##s4RA)s4dM-s'GZ[s53k8
+s5X. at s6'@Fs6BXMs6BXMs6]jTs763^rV$3as7lQgrVHKgs8)cmrVYFKs8;oos8)cks7lWgrV$9a
+s7H?^s7--Xs6]jOs6'@Bs5a4?s5O(9s5!_/q>UEBs3^knrQkMhrQY;brQG5`s2k;]MoL>JJcG]K
+r;_EKkl6/~>
+JcF-trrB%ur;aJ0JUZX.q>]i2JcF'rKms"#qgO)[ks"unrrDdWs$-NLqa1<Ms$crUs$Q`Os$6TK
+rBC0Es$6TMs$6TMs$H`QrBgHKs$6NIeNWdnrBUBKs$66Aq*+V'o02t7]0=>cJcC<$q>^BnJcG*:
+J,~>
+JcF-trrB%ur;aJ0JUZX.q>]i2JcF'rKms"#qgP/$s$-NKs$H`Qs$ZlUs$m#Ys%35_s%NGfs%r_n
+s&B#!s&f;)s'5S0s'G_5s'bq;s(24Bs(V at ZrrE(<s)J'[qfMdXs)n9`s)n?bs*=Wls*aoss+1'!
+rIP!#s+L?)s+^Q/s+pW2s,6o9rJpo>s,m8Dq3:oAs,R,<s,$c1s+C?$s*O]irHS?cs)e9]s)J'X
+rGVXPs)%dPq.oeBs4[M+s4IA)s(hRJs(VFFrFc.Bqdo_:rF>k:s'bq8rEoS1s'5S.s'#G*s&f;%
+s&K"rs&/kos%r_ks%`Sgs%NGcs%<;_s%*/Zs$crUs$OnWJcC<$q>^BnJcG*:J,~>
+JcF-trrB%ur;aJ0J]?`iq>]j%JcF'rKuX)kqo7Nns/Z1$s/l$us0)I,s0;=(s0Ma4s0_m8s0r$<
+s1/0As1JBFrP&<Is2+fRpVm0PrQ"rZs2tAcs3:SirR(Ghs4%)"s4IA)rS%;+rS7G/rSIQ_s53k7
+s5O(>s5s at Fs6BXMs6TdQs6TdOs6TdRrUBjZs7cQgrV?KirVQWms82]iq>:3ig\q0Ms82ims7u]i
+s7cQes7QE`s763Zs6fpRs6BXJs6'FEs5j:@s5<q6s4dAKs4%(trR1_ns3Uels3CYhqoo)`s2k;]
+MoL>JJcGQGr;_EKm/MS~>
+JcF-trrB%ur;aJ0JUZX.q>]i2JcF'rKms"#qgO)[ks"unrrDdWs$-NLqa1<Ms$crUs$Q`Os$6TK
+rBC0Es$6TMs$6TMs$H`QrBgHKs$6NIeNWdnrBUBKs$66Aq*+V'o02t7]0=>cJcC<$q>^BnJcG*:
+J,~>
+JcF-trrB%ur;aJ0JUZX.q>]i2JcF'rKms"#qgP/$s$-NKs$H`Qs$ZlUs$m#Ys%35_s%NGfs%r_n
+s&B#!s&f;)s'5S0s'G_5s'bq;s(24Bs(V at ZrrE(<s)J'[qfMdXs)n9`s)n?bs*=Wls*aoss+1'!
+rIP!#s+L?)s+^Q/s+pW2s,6o9rJpo>s,m8Dq3:oAs,R,<s,$c1s+C?$s*O]irHS?cs)e9]s)J'X
+rGVXPs)%dPq.oeBs4[M+s4IA)s(hRJs(VFFrFc.Bqdo_:rF>k:s'bq8rEoS1s'5S.s'#G*s&f;%
+s&K"rs&/kos%r_ks%`Sgs%NGcs%<;_s%*/Zs$crUs$OnWJcC<$q>^BnJcG*:J,~>
+JcF-trrB%ur;aJ0J]?`iq>]j%JcF'rKuX)kqo7Nns/Z1$s/l$us0)I,s0;=(s0Ma4s0_m8s0r$<
+s1/0As1JBFrP&<Is2+fRpVm0PrQ"rZs2tAcs3:SirR(Ghs4%)"s4IA)rS%;+rS7G/rSIQ_s53k7
+s5O(>s5s at Fs6BXMs6TdQs6TdOs6TdRrUBjZs7cQgrV?KirVQWms82]iq>:3ig\q0Ms82ims7u]i
+s7cQes7QE`s763Zs6fpRs6BXJs6'FEs5j:@s5<q6s4dAKs4%(trR1_ns3Uels3CYhqoo)`s2k;]
+MoL>JJcGQGr;_EKm/MS~>
+JcF-trrAnqr;aV4JUZX.q>]].JcFL)JU[QHrVubDJNi<^qgSPFs$6NIs$$HIs$6TNrBpTQs$lrW
+rC-`Us$ZlSs$?TJrBU<Is$H`Rs$crUqa:BMs$?TKs$,I+q`k$Eq*FsGs$?BErBL0Cq0r-'pHS[C
+rBItZaaSg at JcGECqZ)3Io)F4~>
+JcF-trrAnqr;aV4JUZX.q>]].JcFL)JU[QHrVubDTg&K at s$6TMs$QfSs$crWs%*/]s%<;bs%`Sj
+s&/krs&T/&s'#G-s'G_5s'bq;s().As(MFIs(qR]rrE(>s)e9arHS9bs*"EerH\Efs*=WlrI=j!
+s+LE,s+gQ/s+gW1s,-i8s,R, at s-!DGrKR>Is-E\Qs-itXs.01^pRqPWs-itTs-<VJs,[2<s+gW-
+s+13"s*aoos*=WgrHA3`s)e-Zs)IRJs5O(;rS[WlrGDRNrG2 at Hqe?"BrFc.BrFGq<s'l":s'Yk5
+s'>Y0s',M+s&f;%s&K(us&8qqrDESjs%`Sgs%NGcs%<;^s%!)Xs$XtXJcC<$p&FmhJcG<@J,~>
+JcF-trrAnqr;aV4J]?`iq>]^!JcFL)J]@Z.rVuc7hl?^Ws/c7&pTFP"s02O.pTjh*s0Vg6s0hs:
+s1&*?s1J<Ds1\NJs2"`Ps2G#Ys2P)Zs2P)ZqoJfZs3(Ges3CYkrR1Mjs4./$s4RG,rS7G/rSIM2
+s5Eugs5F";s5a4Cs69RLs6TdQrU0^Qs6TdQs6p!Ws6p!Ys7ZKfs7u]lrVZWms8;onrV?KirV?Ki
+rVQWmg\q0Ls8)cjrV-?cs7H?_s7$'WrU'XNs6BXKs6'FCs5O(9s5!MMs475#rRCkqs3^kns3CSf
+rQP;bs2k;]MoL>JJcGECqZ)3Io)F4~>
+JcF-trrAnqr;aV4JUZX.q>]].JcFL)JU[QHrVubDJNi<^qgSPFs$6NIs$$HIs$6TNrBpTQs$lrW
+rC-`Us$ZlSs$?TJrBU<Is$H`Rs$crUqa:BMs$?TKs$,I+q`k$Eq*FsGs$?BErBL0Cq0r-'pHS[C
+rBItZaaSg at JcGECqZ)3Io)F4~>
+JcF-trrAnqr;aV4JUZX.q>]].JcFL)JU[QHrVubDTg&K at s$6TMs$QfSs$crWs%*/]s%<;bs%`Sj
+s&/krs&T/&s'#G-s'G_5s'bq;s().As(MFIs(qR]rrE(>s)e9arHS9bs*"EerH\Efs*=WlrI=j!
+s+LE,s+gQ/s+gW1s,-i8s,R, at s-!DGrKR>Is-E\Qs-itXs.01^pRqPWs-itTs-<VJs,[2<s+gW-
+s+13"s*aoos*=WgrHA3`s)e-Zs)IRJs5O(;rS[WlrGDRNrG2 at Hqe?"BrFc.BrFGq<s'l":s'Yk5
+s'>Y0s',M+s&f;%s&K(us&8qqrDESjs%`Sgs%NGcs%<;^s%!)Xs$XtXJcC<$p&FmhJcG<@J,~>
+JcF-trrAnqr;aV4J]?`iq>]^!JcFL)J]@Z.rVuc7hl?^Ws/c7&pTFP"s02O.pTjh*s0Vg6s0hs:
+s1&*?s1J<Ds1\NJs2"`Ps2G#Ys2P)Zs2P)ZqoJfZs3(Ges3CYkrR1Mjs4./$s4RG,rS7G/rSIM2
+s5Eugs5F";s5a4Cs69RLs6TdQrU0^Qs6TdQs6p!Ws6p!Ys7ZKfs7u]lrVZWms8;onrV?KirV?Ki
+rVQWmg\q0Ls8)cjrV-?cs7H?_s7$'WrU'XNs6BXKs6'FCs5O(9s5!MMs475#rRCkqs3^kns3CSf
+rQP;bs2k;]MoL>JJcGECqZ)3Io)F4~>
+JcF-trrAbmr;ab8JUZX.q>]K(JcG!7JU[9 at rVubDJNi<^qgSPFs$H`Oq`t0Is$Q`Qs$m#Zs%<;_
+s%*/]s%<;^s%!#Vs$QfQs$?TMs$ZlUs$lfQs$ZfQs$H`Os$6TKlTY83s$6HIrBgHMs$HZOs$ZlS
+s$HNHq`k$Cq0r9,s$6HIq`t0Is$6TK]fsPeq>^>@JcC<$rVufrJcGHDJ,~>
+JcF-trrAbmr;ab8JUZX.q>]K(JcG!7JU[9 at rVubDTg&K at s$?ZOs$ZlUs$m#Zs%35_s%NGfs%r_n
+s&B#!s&oA+s'>Y3s'bq:s().As(D at Gs(hXOs)@jarrE(@s*"Ees*FWjrHe9es*aots+13%s+UK/
+s,$c5s,?u<s,m>Fs-<VNs-`nVrLNnYs.B=as.fUjs/5mrs/Psts/l=&s/H$rs.o[gs.B=\s-<VH
+s,R,;s+p]/s+13!s*XclrHeEfs*4QeqfVdXs)n?`s6BXKs60LGs)S-Zs)A!Vq/64LokaYDs(_RI
+s(D:Bs(24?s'l"9s'Pe4s'5S.s&oA(s&]5$s&K(us&8qqs%r_ks%`Sgs%NGbs%*/[s$k+Zq>^>@
+JcC<$rVufrJcGHDJ,~>
+JcF-trrAbmr;ab8J]?`iq>]KpJcG!7J]@B&rVuc7hl?^Ws/c7&pTFP"s02O.pTjh*s0Vg6s0hs:
+s1/0As1JBFs1\NJs1nZOs2=rWpW36Rs2tAcs3CYjs3^eoq:,Gqs4IA*s4mY1s53k7rSde:rT*uk
+s5O(>s5s at Gs6K^Ps6p!Ws7--Xs6fpSs6fpVrU9dVs7H9`s7u]mrVccos82ilp%\L]s8)]ks8;-[
+s8;]is8)cks7lQes7QEas7--YrU9dSs6]jQs6BXIs5a4<s5*SNs4IA&s4./!s3gkns3L_jqp#/a
+s2k;]MoPSmqo43eJcG]Kr;_EKpA]X~>
+JcF-trrAbmr;ab8JUZX.q>]K(JcG!7JU[9 at rVubDJNi<^qgSPFs$H`Oq`t0Is$Q`Qs$m#Zs%<;_
+s%*/]s%<;^s%!#Vs$QfQs$?TMs$ZlUs$lfQs$ZfQs$H`Os$6TKlTY83s$6HIrBgHMs$HZOs$ZlS
+s$HNHq`k$Cq0r9,s$6HIq`t0Is$6TK]fsPeq>^>@JcC<$rVufrJcGHDJ,~>
+JcF-trrAbmr;ab8JUZX.q>]K(JcG!7JU[9 at rVubDTg&K at s$?ZOs$ZlUs$m#Zs%35_s%NGfs%r_n
+s&B#!s&oA+s'>Y3s'bq:s().As(D at Gs(hXOs)@jarrE(@s*"Ees*FWjrHe9es*aots+13%s+UK/
+s,$c5s,?u<s,m>Fs-<VNs-`nVrLNnYs.B=as.fUjs/5mrs/Psts/l=&s/H$rs.o[gs.B=\s-<VH
+s,R,;s+p]/s+13!s*XclrHeEfs*4QeqfVdXs)n?`s6BXKs60LGs)S-Zs)A!Vq/64LokaYDs(_RI
+s(D:Bs(24?s'l"9s'Pe4s'5S.s&oA(s&]5$s&K(us&8qqs%r_ks%`Sgs%NGbs%*/[s$k+Zq>^>@
+JcC<$rVufrJcGHDJ,~>
+JcF-trrAbmr;ab8J]?`iq>]KpJcG!7J]@B&rVuc7hl?^Ws/c7&pTFP"s02O.pTjh*s0Vg6s0hs:
+s1/0As1JBFs1\NJs1nZOs2=rWpW36Rs2tAcs3CYjs3^eoq:,Gqs4IA*s4mY1s53k7rSde:rT*uk
+s5O(>s5s at Gs6K^Ps6p!Ws7--Xs6fpSs6fpVrU9dVs7H9`s7u]mrVccos82ilp%\L]s8)]ks8;-[
+s8;]is8)cks7lQes7QEas7--YrU9dSs6]jQs6BXIs5a4<s5*SNs4IA&s4./!s3gkns3L_jqp#/a
+s2k;]MoPSmqo43eJcG]Kr;_EKpA]X~>
+JcF-trrAViqZ+b<JUZX.q>]?$JcGECJU[!8rVubDJNi<^qgSPFs$ZlSs$HZPqaLNTs%35`qb7#a
+s%`Sfs%E;_s%35\s$m#Ws$ZlUs%!)[q+(HSqaLNQs$Q`Ns$-6ArBL6Gs$?ZOq*Y*KrC-ZQrC-`S
+s$QfQqa(6IrBL6Es+(-$s+LE,qa1<MrC$ZPrB^HMs$?ZMs$+7^aaX'cpO7\nJcG]Kr;_EKqYu'~>
+JcF-trrAViqZ+b<JUZX.q>]?$JcGECJU[!8rVubDUH\]Bs$6TNs$QfTs$m#Zs%35`s%NGes%r_n
+s&B#!s&f;*s'G_4s'bq;s(24Cs(VLJs(q^Qs)J'[qgSPFs*"Ees*FWjs*XcnrI4]ps+(-$rIk3,
+s,?u=s,d8Es-E\Qs.'+]s.TIfs/#[lrM]aqs/Q+$s0)I.s0Vg6s0qs:s1/0>s0hs6s02O*s/Q*q
+s.B=\s-WhOs-!DCs,6o3s+:9%rIFotrI4corHnKhqfr-ds*4S7s6p!Ts6K],s)\-Zs)J'Xqf2:J
+s)7pTs)%dOs(_RJs(MFFs(24 at s'u(;s'Pe4s'5S.s&oA(s&]/"s&B"ss&&ems%iYis%NGbs%*/[
+aaX'cpO7\nJcG]Kr;_EKqYu'~>
+JcF-trrAViqZ+b<J]?`iq>]?lJcGECJ]@)srVuc7hl?^Ws/c7&pTFP"s02O.q6Kt*s0Vg6s0hs:
+s1/0Bs1SBGs2"`Ps2=rWs2XrWq9&`\s3:Sis3UeorRC_ps475%s4RG,s5!_5s5O(=rT+"@rTF2q
+s5a4As6'FGs6BXOs7$!Xs7$'Ws6fdQs6fpVs763]s763^s7cQhs8)cms8)cjqtL'_s7cQgs7cQg
+rV?Kis82iop&4pgqtpEip\F^]s7cQes7Q?]qsj^Us6fpSs6BXIs5X.;s8Dups7u]hs4@;%s4./!
+s3gknrQkMhs3:Shs31Mcs2U&;q>^3/JcC<$rVufrJcGTHJ,~>
+JcF-trrAViqZ+b<JUZX.q>]?$JcGECJU[!8rVubDJNi<^qgSPFs$ZlSs$HZPqaLNTs%35`qb7#a
+s%`Sfs%E;_s%35\s$m#Ws$ZlUs%!)[q+(HSqaLNQs$Q`Ns$-6ArBL6Gs$?ZOq*Y*KrC-ZQrC-`S
+s$QfQqa(6IrBL6Es+(-$s+LE,qa1<MrC$ZPrB^HMs$?ZMs$+7^aaX'cpO7\nJcG]Kr;_EKqYu'~>
+JcF-trrAViqZ+b<JUZX.q>]?$JcGECJU[!8rVubDUH\]Bs$6TNs$QfTs$m#Zs%35`s%NGes%r_n
+s&B#!s&f;*s'G_4s'bq;s(24Cs(VLJs(q^Qs)J'[qgSPFs*"Ees*FWjs*XcnrI4]ps+(-$rIk3,
+s,?u=s,d8Es-E\Qs.'+]s.TIfs/#[lrM]aqs/Q+$s0)I.s0Vg6s0qs:s1/0>s0hs6s02O*s/Q*q
+s.B=\s-WhOs-!DCs,6o3s+:9%rIFotrI4corHnKhqfr-ds*4S7s6p!Ts6K],s)\-Zs)J'Xqf2:J
+s)7pTs)%dOs(_RJs(MFFs(24 at s'u(;s'Pe4s'5S.s&oA(s&]/"s&B"ss&&ems%iYis%NGbs%*/[
+aaX'cpO7\nJcG]Kr;_EKqYu'~>
+JcF-trrAViqZ+b<J]?`iq>]?lJcGECJ]@)srVuc7hl?^Ws/c7&pTFP"s02O.q6Kt*s0Vg6s0hs:
+s1/0Bs1SBGs2"`Ps2=rWs2XrWq9&`\s3:Sis3UeorRC_ps475%s4RG,s5!_5s5O(=rT+"@rTF2q
+s5a4As6'FGs6BXOs7$!Xs7$'Ws6fdQs6fpVs763]s763^s7cQhs8)cms8)cjqtL'_s7cQgs7cQg
+rV?Kis82iop&4pgqtpEip\F^]s7cQes7Q?]qsj^Us6fpSs6BXIs5X.;s8Dups7u]hs4@;%s4./!
+s3gknrQkMhs3:Shs31Mcs2U&;q>^3/JcC<$rVufrJcGTHJ,~>
+JcF-trrADcr;b+BJUZX.q>]2uJcGcMJUZd2rVubDJNi<^qgSPFs$m#Ws$lrXrCR#]rCd/brD3Gi
+s&&eos&&_js%r_js%WGbs%<;_s%)lUqag`Ws$m#WrC$ZPs$?NIs$?TMrBpNOs$clUs$clUrC?`S
+s%!)Ys$crTrBgNMrBUBKs$H`Os+p]4s,?u<s$m#Vs$cfSs$ZlSs$H`Qs$H`Os$6TK_*5tiq>^&8
+JcC<$rVufrJcG`LJ,~>
+JcF-trrADcr;b+BJUZX.q>]2uJcGcMJUZd2rVubDV*=oDs$6TMs$QfSs$m#Zs%35`s%NGes%iYm
+s&B#!s&f;*s'G_5s'l"=s(;:Fs(_RMs)%dTs)S-]s*+?hrrE(Ds*FWjrI"Wns*juurIP!#s+C?+
+s+p]5s,[2Ds-NbQs-s%Zs.KCfs/5mts/uC+s0;O.rNlO2s0r$=s1JBHs1nZNs2+fRs2=rTs2"`L
+s186?s0Vg0s/Q*rs.fUds.01Xs-<VGs,?u7s+^K+s+LE(s+1&ss*joos*O]js7QE_s7$'Vs)n?b
+s)n?`rH%jXq/cLVs)\3\s)J'Ws).jRs(q^Ms(VLGs(;:As'l":s'Pe4s'5S.s'#G*s&f;&s&K(t
+s&/kos%r_js%NGbs%1=]q>^&8JcC<$rVufrJcG`LJ,~>
+JcF-trrADcr;b+BJ]?`iq>]3hJcGcMJ]?lmrVuc7hl?^Ws/c7&pTFP"s02O.q6L%,s0Va4s0r$=
+s1A<Es1eTLs2"`Ps24lUs2Y/\q9&TXrQP;es3Uens3pqsrRUr!s4RG,s5!_4s5O(>s5s:Cs69LI
+s)%eus6'@Es6BXOs7#pUs7$!Us6fpSs6K^PrU0^Qs6p!YrUg-_s7ZKerV$'[s7ZKcs7ZEcrV6Eg
+rVQWmrVQWkq>('cqtL-cp%SL[rUg-]s7H9]s7--Ys6TdLs5X.;s7ZKbs763Zs4./#s4./!s3gkm
+rQkAds31Mcs2^,<q>^'+JcC<$rVufrJcG`LJ,~>
+JcF-trrADcr;b+BJUZX.q>]2uJcGcMJUZd2rVubDJNi<^qgSPFs$m#Ws$lrXrCR#]rCd/brD3Gi
+s&&eos&&_js%r_js%WGbs%<;_s%)lUqag`Ws$m#WrC$ZPs$?NIs$?TMrBpNOs$clUs$clUrC?`S
+s%!)Ys$crTrBgNMrBUBKs$H`Os+p]4s,?u<s$m#Vs$cfSs$ZlSs$H`Qs$H`Os$6TK_*5tiq>^&8
+JcC<$rVufrJcG`LJ,~>
+JcF-trrADcr;b+BJUZX.q>]2uJcGcMJUZd2rVubDV*=oDs$6TMs$QfSs$m#Zs%35`s%NGes%iYm
+s&B#!s&f;*s'G_5s'l"=s(;:Fs(_RMs)%dTs)S-]s*+?hrrE(Ds*FWjrI"Wns*juurIP!#s+C?+
+s+p]5s,[2Ds-NbQs-s%Zs.KCfs/5mts/uC+s0;O.rNlO2s0r$=s1JBHs1nZNs2+fRs2=rTs2"`L
+s186?s0Vg0s/Q*rs.fUds.01Xs-<VGs,?u7s+^K+s+LE(s+1&ss*joos*O]js7QE_s7$'Vs)n?b
+s)n?`rH%jXq/cLVs)\3\s)J'Ws).jRs(q^Ms(VLGs(;:As'l":s'Pe4s'5S.s'#G*s&f;&s&K(t
+s&/kos%r_js%NGbs%1=]q>^&8JcC<$rVufrJcG`LJ,~>
+JcF-trrADcr;b+BJ]?`iq>]3hJcGcMJ]?lmrVuc7hl?^Ws/c7&pTFP"s02O.q6L%,s0Va4s0r$=
+s1A<Es1eTLs2"`Ps24lUs2Y/\q9&TXrQP;es3Uens3pqsrRUr!s4RG,s5!_4s5O(>s5s:Cs69LI
+s)%eus6'@Es6BXOs7#pUs7$!Us6fpSs6K^PrU0^Qs6p!YrUg-_s7ZKerV$'[s7ZKcs7ZEcrV6Eg
+rVQWmrVQWkq>('cqtL-cp%SL[rUg-]s7H9]s7--Ys6TdLs5X.;s7ZKbs763Zs4./#s4./!s3gkm
+rQkAds31Mcs2^,<q>^'+JcC<$rVufrJcG`LJ,~>
+JcF-trrA8_r;b7FJUZX.q>]&qMuS?WhgYP(qgO)[o03%9rBC+-rrE'is%!)]rCm/as%iYkrDESm
+s&8qss&K)"q,RGoqbmGks%r_ks%`SfpIkHWs%3/[qapf[s%35\qaLBOs$u`QrCQfUs%!)Ys$cfQ
+s$clUrC?mLs-!DHs-E[Ws%35\s%*)[s%!)XrC$ZQs$H`Os$6TKq`amAcT]I"q>]o4JcC<$rVufr
+K)^?~>
+JcF-trrA8_r;b7FJUZX.q>]&qMuS?WhgYP(qgPA*s$-NLs$H`Rs$crXs%35_s%NGes%iYms&B#!
+s&f;)s'>Y4s'u(?s(D at Gs(q^Ps)7pVs)S-^s*4QiqgSPFs*FKgs*aips+(-$s+UK/s,6o:s,d8D
+s-NbSs.01_s.]Ois/5mts/uC-s0_m;s1A6BrOr6Fs2"`Qs2P)\s2t)Zs2k;^s2G#Ts1SHBs0Vg1
+s/l=#s/5mls.B=[s-E\Ks,d8 at s,?u6s+gW.rIk3&s+(,trI"Qjs7lWes7?9\q02j^s)n?bms"eT
+s)n?_s)J!Us).jQs(hXLs(MFEs().>s'bq7s'GY/s',M+s&f;%s&B"ss&/kns%`Sfs%CI_q>]o4
+JcC<$rVufrK)^?~>
+JcF-trrA8_r;b7FJ]?`iq>]'dMuS at Jho>Wpqo7Nns/Z1$s/l$us0)I,s0;I,s0M[2s0_m8s1&*?
+s1JBHs1nTMs2=rVs2Y/\s2k)[qoo#`s3L_ms3gqss475%rRh)%s4dS0s53k8s5X. at s6'FIs6K^O
+rU'W(s6'FGrTF4Fs6TdSs6fjSrU0^Ps6K^Ls60 at Es60LJs6T^Os6fpUs7$'ZrUg'[rUg-]s7H3]
+p[nLZs7cQgs7cQerV-?cqt9p]qt9p]s7cKcs7QEcs7QEas7--Xs6BXHs5F"7s6p!Ts6K^Ls4%"t
+s4%(srQkMhrQkMhs3L_is3(GarQ"rXqo+oAq>]p'JcC<$rVufrK)^?~>
+JcF-trrA8_r;b7FJUZX.q>]&qMuS?WhgYP(qgO)[o03%9rBC+-rrE'is%!)]rCm/as%iYkrDESm
+s&8qss&K)"q,RGoqbmGks%r_ks%`SfpIkHWs%3/[qapf[s%35\qaLBOs$u`QrCQfUs%!)Ys$cfQ
+s$clUrC?mLs-!DHs-E[Ws%35\s%*)[s%!)XrC$ZQs$H`Os$6TKq`amAcT]I"q>]o4JcC<$rVufr
+K)^?~>
+JcF-trrA8_r;b7FJUZX.q>]&qMuS?WhgYP(qgPA*s$-NLs$H`Rs$crXs%35_s%NGes%iYms&B#!
+s&f;)s'>Y4s'u(?s(D at Gs(q^Ps)7pVs)S-^s*4QiqgSPFs*FKgs*aips+(-$s+UK/s,6o:s,d8D
+s-NbSs.01_s.]Ois/5mts/uC-s0_m;s1A6BrOr6Fs2"`Qs2P)\s2t)Zs2k;^s2G#Ts1SHBs0Vg1
+s/l=#s/5mls.B=[s-E\Ks,d8 at s,?u6s+gW.rIk3&s+(,trI"Qjs7lWes7?9\q02j^s)n?bms"eT
+s)n?_s)J!Us).jQs(hXLs(MFEs().>s'bq7s'GY/s',M+s&f;%s&B"ss&/kns%`Sfs%CI_q>]o4
+JcC<$rVufrK)^?~>
+JcF-trrA8_r;b7FJ]?`iq>]'dMuS at Jho>Wpqo7Nns/Z1$s/l$us0)I,s0;I,s0M[2s0_m8s1&*?
+s1JBHs1nTMs2=rVs2Y/\s2k)[qoo#`s3L_ms3gqss475%rRh)%s4dS0s53k8s5X. at s6'FIs6K^O
+rU'W(s6'FGrTF4Fs6TdSs6fjSrU0^Ps6K^Ls60 at Es60LJs6T^Os6fpUs7$'ZrUg'[rUg-]s7H3]
+p[nLZs7cQgs7cQerV-?cqt9p]qt9p]s7cKcs7QEcs7QEas7--Xs6BXHs5F"7s6p!Ts6K^Ls4%"t
+s4%(srQkMhrQkMhs3L_is3(GarQ"rXqo+oAq>]p'JcC<$rVufrK)^?~>
+JcF-trrA,[r;bCJJUZX.q>\omQiDVcf7*\uqgO)[o031>s$?ZMrBL1.rrE'ks%EAes%rYks&/ks
+rDrkurE0)&qc`r&s&o5$s&]5$s&K(us&/kns%`AarD*Ags&&_mrDW_os%r_js%NGbq+:TYrCd#[
+rCcZQs%EAarCd/as%WMerL3bVs.96cs%W;^s%35]s$lrUs$QfQs$?ZMrBL6GrB^HJd6>[$q>]c0
+JcC<$rVufrLAuc~>
+JcF-trrA,[r;bCJJUZX.q>\omQiDVcf7*\uqgPG,s$-NKs$H`Qs$crWs%*/^s%EAds%`Sks&8qt
+s&f;)s'>Y4s'u(?s(D at Hs(q^Rs)@pWs)e9bs*F]nqgSPFs*XiprI"Qls*t'#s+UK/s,6o;s,m>H
+s-NbSs.97as.o[ms/Q+$s/uC-s0_m;s1JBIs2+fSs2P#Xs2k;as3:Sis3^enqpYSns3^kms3:Se
+s2Y/Vs1\NEs0r$8s0;U+s/H$os.KC_s-itTs-<VHs,?u6s+^Q,s+:9$s*jurs*Xcls7u]is7ZKb
+s*4EdrHS9dq0Mpbs*F]js*+Kcs)\3[s)S-Zs)A!Us)%dOs(VLGs(;:As'u(;s'Pe4s'>Y0s'#G*
+s&]5#s&B"rs%r_js%UUaq>]c0JcC<$rVufrLAuc~>
+JcF-trrA,[r;bCJJ]?`iq>\p`QiDWVf>ddhqo7Nns/Z1$s/l$us0)I,s0;I,s0Ma4s0_g6s1&*@
+s1\NKs2+fRs2=rVs2Y/\s2k;`q98`\rQbGis3gqrs4./$s4RA)rS.A.s53k8s5X.?s5s at Fs6K^P
+s6p!Ws7-,1s69RIrTF4FrTsLJrTX at GrTF4Cs5a4As5a.=s5j. at s60LIs6BXMs6]jTs7-!WrUKpW
+s6p!Us6]^Ms6]jSs7$'Zs7?'Yqt'LQqt:!_s7QEas763Zs6p!Ts60LDs53k3rT=. at s5Nk(s3^ej
+s3:Shqp5;es3(GarQ"rXs2G#Vs24lURE#(&lc+MUJcG]Kr;_TPJ,~>
+JcF-trrA,[r;bCJJUZX.q>\omQiDVcf7*\uqgO)[o031>s$?ZMrBL1.rrE'ks%EAes%rYks&/ks
+rDrkurE0)&qc`r&s&o5$s&]5$s&K(us&/kns%`AarD*Ags&&_mrDW_os%r_js%NGbq+:TYrCd#[
+rCcZQs%EAarCd/as%WMerL3bVs.96cs%W;^s%35]s$lrUs$QfQs$?ZMrBL6GrB^HJd6>[$q>]c0
+JcC<$rVufrLAuc~>
+JcF-trrA,[r;bCJJUZX.q>\omQiDVcf7*\uqgPG,s$-NKs$H`Qs$crWs%*/^s%EAds%`Sks&8qt
+s&f;)s'>Y4s'u(?s(D at Hs(q^Rs)@pWs)e9bs*F]nqgSPFs*XiprI"Qls*t'#s+UK/s,6o;s,m>H
+s-NbSs.97as.o[ms/Q+$s/uC-s0_m;s1JBIs2+fSs2P#Xs2k;as3:Sis3^enqpYSns3^kms3:Se
+s2Y/Vs1\NEs0r$8s0;U+s/H$os.KC_s-itTs-<VHs,?u6s+^Q,s+:9$s*jurs*Xcls7u]is7ZKb
+s*4EdrHS9dq0Mpbs*F]js*+Kcs)\3[s)S-Zs)A!Us)%dOs(VLGs(;:As'u(;s'Pe4s'>Y0s'#G*
+s&]5#s&B"rs%r_js%UUaq>]c0JcC<$rVufrLAuc~>
+JcF-trrA,[r;bCJJ]?`iq>\p`QiDWVf>ddhqo7Nns/Z1$s/l$us0)I,s0;I,s0Ma4s0_g6s1&*@
+s1\NKs2+fRs2=rVs2Y/\s2k;`q98`\rQbGis3gqrs4./$s4RA)rS.A.s53k8s5X.?s5s at Fs6K^P
+s6p!Ws7-,1s69RIrTF4FrTsLJrTX at GrTF4Cs5a4As5a.=s5j. at s60LIs6BXMs6]jTs7-!WrUKpW
+s6p!Us6]^Ms6]jSs7$'Zs7?'Yqt'LQqt:!_s7QEas763Zs6p!Ts60LDs53k3rT=. at s5Nk(s3^ej
+s3:Shqp5;es3(GarQ"rXs2G#Vs24lURE#(&lc+MUJcG]Kr;_TPJ,~>
+JcF-trr at uWr;bONJUZX.q>\ciU&T[md=2&oqgO)[ofiC?qa1<Ks$HU3rrE'ns%r_ns&Aqss&f;)
+s',G,rE]A.rEoM2s'b_1s'G_2s'5S.s&oA's&K"rs&B"urE'#%s'#A*rETA,s&oA's&K(ts&&ek
+rClZSs%`Siqb[)cs%r_mqbmHjs.fUis/5lps&&elqbI/bs%<;_s%!)YrC-ZQs$QfPrBgHMs$?ZL
+dltm&q>]W,JcC<$rVu`pN;nD~>
+JcF-trr at uWr;bONJUZX.q>\ciU&T[md=2&oqgPM.s$-NKs$?ZPs$ZlVs%!)\s%EAcs%`Sjs&/ks
+s&]5's'5S2s'l">s(MFIs)%dSs)S-\rH/'_s*=Wlq0r>DrI+]ps+(-$s+LE,s+p]5s,R,As-*JL
+s-itZs.TIgs/5mss/l=+s0Vg7s1/0Bs1nZPs2Y/]s3(Ges3CYks3gqrs4./$rRpr!s4IA's4..u
+s3L_gs2Y/Xs2"`Ls1A<?s0Ma.s/Q*ss.o[gs.'+Us-!DBs,$c/s+:9$s*jurqgAA=s7u]hqg/3f
+s*F]lrI"KjrI"Khs*=Wgs)n?_rH/'\s)S-Zs)7pRs(_RJs(D at Ds().>s'bq8s'G_2s',M+s&f;%
+s&B"rs%r_kaaX'ckC/!^JcG]KqZ)TTJ,~>
+JcF-trr at uWr;bONJ]?`iq>\d\U&T\`dDl.bqo7Nns/Z1$s/l$us0)I,s0;O.s0Ma4rO)[6s0r$=
+s1JBHs2+fRrPefWs2b5^s2tAbq9Al`rQkMjs3^kqs4%)"s4IA*rS7A-s53k8s5X(>s6'FHs6TdQ
+s763]s7H>7s69RIs5s at Cs5s@Es5s at Cs5a.=s5Nk5s5<q7rSIA.s5F";s5X.?s5s at Fs6BXNs6]jQ
+rTaFIs6'FEpZ;G<s60LJs6K^Ps7$!Xqsj at Ms7--YqsXLOs6T^Ms5s@@s5!_/s4mY2s5!_0rR:er
+s3q"prQYAds3:Ges31Mbs2Y/Ys2P)Xs2=lRs2=rVS&Y:(kJi)QJcG]KqZ)TTJ,~>
+JcF-trr at uWr;bONJUZX.q>\ciU&T[md=2&oqgO)[ofiC?qa1<Ks$HU3rrE'ns%r_ns&Aqss&f;)
+s',G,rE]A.rEoM2s'b_1s'G_2s'5S.s&oA's&K"rs&B"urE'#%s'#A*rETA,s&oA's&K(ts&&ek
+rClZSs%`Siqb[)cs%r_mqbmHjs.fUis/5lps&&elqbI/bs%<;_s%!)YrC-ZQs$QfPrBgHMs$?ZL
+dltm&q>]W,JcC<$rVu`pN;nD~>
+JcF-trr at uWr;bONJUZX.q>\ciU&T[md=2&oqgPM.s$-NKs$?ZPs$ZlVs%!)\s%EAcs%`Sjs&/ks
+s&]5's'5S2s'l">s(MFIs)%dSs)S-\rH/'_s*=Wlq0r>DrI+]ps+(-$s+LE,s+p]5s,R,As-*JL
+s-itZs.TIgs/5mss/l=+s0Vg7s1/0Bs1nZPs2Y/]s3(Ges3CYks3gqrs4./$rRpr!s4IA's4..u
+s3L_gs2Y/Xs2"`Ls1A<?s0Ma.s/Q*ss.o[gs.'+Us-!DBs,$c/s+:9$s*jurqgAA=s7u]hqg/3f
+s*F]lrI"KjrI"Khs*=Wgs)n?_rH/'\s)S-Zs)7pRs(_RJs(D at Ds().>s'bq8s'G_2s',M+s&f;%
+s&B"rs%r_kaaX'ckC/!^JcG]KqZ)TTJ,~>
+JcF-trr at uWr;bONJ]?`iq>\d\U&T\`dDl.bqo7Nns/Z1$s/l$us0)I,s0;O.s0Ma4rO)[6s0r$=
+s1JBHs2+fRrPefWs2b5^s2tAbq9Al`rQkMjs3^kqs4%)"s4IA*rS7A-s53k8s5X(>s6'FHs6TdQ
+s763]s7H>7s69RIs5s at Cs5s@Es5s at Cs5a.=s5Nk5s5<q7rSIA.s5F";s5X.?s5s at Fs6BXNs6]jQ
+rTaFIs6'FEpZ;G<s60LJs6K^Ps7$!Xqsj at Ms7--YqsXLOs6T^Ms5s@@s5!_/s4mY2s5!_0rR:er
+s3q"prQYAds3:Ges31Mbs2Y/Ys2P)Xs2=lRs2=rVS&Y:(kJi)QJcG]KqZ)TTJ,~>
+JcF-trr at iSr;b[RJUZX.q>\QcYQ'0&aaX3gqgO)[pHJUAs$?ZPs$ZfQs$lm7rrE'ss&B#!s&f;(
+s',M/s'Ye6rF5_8s().>s(). at ok+58s().>s'l":rF#M/rEoS4s'l"<s()"<s().=s'Yk5s'5S-
+s&]5#s&&elpJCles&8kqs&K)"qcE_urE'#"s&]/$s02O+s/l=)s&T/"s&8qqs&&ems%iYis%WMe
+s%E;^rCHrYs$clSrC-`Rs$5$saaX'ciI6 at XJcG]Kr;_rZJ,~>
+JcF-trr at iSr;b[RJUZX.q>\QcYQ'0&aaX3gqgPM.s$-NKs$H`Rs$crXs%*/^s%NGes%iYls&B#!
+s&oA+s'G_6s(24Ds(_RNs)A!Zs)n3^s*4Qjq0r?nrrN.Ms+13&s+^Q0s,-i8s,R,As-3PMs-`nW
+s.KCes.o[os/l=+s0Vg8s1A<Es1nZPs2Y/^s3CYks3^kqs4%)"s4@;)s5!_3s5<k7qr7Y7s5<q6
+s4mY.s474us3L_is2tA_s2G#Ss1SHAs0D[.s/Z0ts.]Oas-WhNs,[2;s+UK'rI4cprI"S at s8;on
+s*OWjrI+EhrI+Wlqg8?gs*+KcrHA3bs*"Eas)S-Ys).jQs(_RJs(D at Ds().>s'bq7s'G_1s'#G)
+s&T/!s&/koaaX'ciI6 at XJcG]Kr;_rZJ,~>
+JcF-trr at iSr;b[RJ]?`iq>\RVYQ'0nai=;Zqo7Nns/Z1$s/l+"s0)C*s0;U0rNlO2s0_m8rO;g;
+s1JBIs24lUs2P)Zs2b5^s2tAbs31Acs3LYjrR(Sls4%)!s4@;(s4dS0s5*_3s5F"<s5j4As60LJ
+s6TdOs7Q?as*4S,s5j:@s5F"<s5O(;s53e3s5!_1qqM/+s4dS-rRq##s4dS/s5!Y1s53k7s5Ee5
+s5F"9s53k5qq_;/s53k8s5X.?s5s at Gs6K^QqsXLQs6p!Us6]jQs6K^Ms69 at Cs6'FGs6'FCs5<q3
+s4IA!s3q"us4$qps3^kms3:Sfs3(Gbs3(Abs2k;]s2=rSs2=rVs2=rTs2+fRs2CJIq>]EnJcC<$
+rVufrOT0h~>
+JcF-trr at iSr;b[RJUZX.q>\QcYQ'0&aaX3gqgO)[pHJUAs$?ZPs$ZfQs$lm7rrE'ss&B#!s&f;(
+s',M/s'Ye6rF5_8s().>s(). at ok+58s().>s'l":rF#M/rEoS4s'l"<s()"<s().=s'Yk5s'5S-
+s&]5#s&&elpJCles&8kqs&K)"qcE_urE'#"s&]/$s02O+s/l=)s&T/"s&8qqs&&ems%iYis%WMe
+s%E;^rCHrYs$clSrC-`Rs$5$saaX'ciI6 at XJcG]Kr;_rZJ,~>
+JcF-trr at iSr;b[RJUZX.q>\QcYQ'0&aaX3gqgPM.s$-NKs$H`Rs$crXs%*/^s%NGes%iYls&B#!
+s&oA+s'G_6s(24Ds(_RNs)A!Zs)n3^s*4Qjq0r?nrrN.Ms+13&s+^Q0s,-i8s,R,As-3PMs-`nW
+s.KCes.o[os/l=+s0Vg8s1A<Es1nZPs2Y/^s3CYks3^kqs4%)"s4@;)s5!_3s5<k7qr7Y7s5<q6
+s4mY.s474us3L_is2tA_s2G#Ss1SHAs0D[.s/Z0ts.]Oas-WhNs,[2;s+UK'rI4cprI"S at s8;on
+s*OWjrI+EhrI+Wlqg8?gs*+KcrHA3bs*"Eas)S-Ys).jQs(_RJs(D at Ds().>s'bq7s'G_1s'#G)
+s&T/!s&/koaaX'ciI6 at XJcG]Kr;_rZJ,~>
+JcF-trr at iSr;b[RJ]?`iq>\RVYQ'0nai=;Zqo7Nns/Z1$s/l+"s0)C*s0;U0rNlO2s0_m8rO;g;
+s1JBIs24lUs2P)Zs2b5^s2tAbs31Acs3LYjrR(Sls4%)!s4@;(s4dS0s5*_3s5F"<s5j4As60LJ
+s6TdOs7Q?as*4S,s5j:@s5F"<s5O(;s53e3s5!_1qqM/+s4dS-rRq##s4dS/s5!Y1s53k7s5Ee5
+s5F"9s53k5qq_;/s53k8s5X.?s5s at Gs6K^QqsXLQs6p!Us6]jQs6K^Ms69 at Cs6'FGs6'FCs5<q3
+s4IA!s3q"us4$qps3^kms3:Sfs3(Gbs3(Abs2k;]s2=rSs2=rVs2=rTs2+fRs2CJIq>]EnJcC<$
+rVufrOT0h~>
+JcF-trr@]OqZ,[VJUZX.q>\E_]DmG2_1)@_qgO)[pHJUBs$HTOs%!)]qgSPFs&]5&s'#G-s'G_6
+s'u">rFc(Bs(VLHs(D at Fs(VLJs(h"<s(hXLrFu(Cs(q^PqelFNs(hXKs(D at Ds'u(:s'>Y-s&]5$
+s&B"urDrr"s&oA*s',M.rE]/(pKdg2s186?s0r#3s&oA(s&]5$s&K(us&8kos%r_js%WGcs%EA`
+s%!)Ys%!)[s$crSs$5*uaaX'ch0sqTJcG]Kr;`)^J,~>
+JcF-trr@]OqZ,[VJUZX.q>\E_]DmG2_1)@_qgPS0rBL<Js$QfSs$m#Zs%35`s%WMgs&&eps&K)$
+s'#G.s'Yk:s(D at Hs)%dTs)\3`q0;pcs*aors*t'!s+:9'rrrFUs+^Q0s,?u<s,d8Ds-3PMs-itX
+s.B=cs/,ans/c7)s0_m;s1SHKs2=rXs2tAds3^krs475%s4IA)s4dS0s53k8s5a.BpZ__ at s5s@B
+s5O(8s4[M*s4..us3^kls2k;Zs1\NDs0hs5s/l="s.fUds-itQs,d8=s+^Q*s*soorVZWmqgJKn
+s*aKfrI+]ns*O]ls*Ocks*+EdrH\Efs*"E`s)J'Ws)%dPs(_RJs(D at Ds().=s'Yk5s'>Y/s&f;%
+s&K(taaX'ch0sqTJcG]Kr;`)^J,~>
+JcF-trr@]OqZ,[VJ]?`iq>\FR]DmH%_8cHRqo7Nns/Z1$s/l+"s0)I,s0;O.s0Ma4s0_g6s0r$<
+s186Ds1nZQs2P)[s2k;`s3(Gds3:Shqp5;hrR1YnrRCkts475&s4[M.s5*e6rSde:s5j:CrTF4F
+rTjLJs7ZEcs*=Y)s5F"9s5*e3s4mY/s4[M+s4IA'q:5Gqs475#s4$elq:,Gps475%s4I;%qq1r#
+pX]Ass4RG,s4mY2s5F"=s6'FHs6BXMs6BXKs60LGs5s at Cs5a4?qr7G1s5O(;s5*e/s474js2k;a
+s3:Sls3q"qs3L_is3(Gaq8`NWs2Y/Xs2"`Ns2"ZOrPJTPs2=rWrPtVOq>]9jJcC<$rVufrPlH7~>
+JcF-trr@]OqZ,[VJUZX.q>\E_]DmG2_1)@_qgO)[pHJUBs$HTOs%!)]qgSPFs&]5&s'#G-s'G_6
+s'u">rFc(Bs(VLHs(D at Fs(VLJs(h"<s(hXLrFu(Cs(q^PqelFNs(hXKs(D at Ds'u(:s'>Y-s&]5$
+s&B"urDrr"s&oA*s',M.rE]/(pKdg2s186?s0r#3s&oA(s&]5$s&K(us&8kos%r_js%WGcs%EA`
+s%!)Ys%!)[s$crSs$5*uaaX'ch0sqTJcG]Kr;`)^J,~>
+JcF-trr@]OqZ,[VJUZX.q>\E_]DmG2_1)@_qgPS0rBL<Js$QfSs$m#Zs%35`s%WMgs&&eps&K)$
+s'#G.s'Yk:s(D at Hs)%dTs)\3`q0;pcs*aors*t'!s+:9'rrrFUs+^Q0s,?u<s,d8Ds-3PMs-itX
+s.B=cs/,ans/c7)s0_m;s1SHKs2=rXs2tAds3^krs475%s4IA)s4dS0s53k8s5a.BpZ__ at s5s@B
+s5O(8s4[M*s4..us3^kls2k;Zs1\NDs0hs5s/l="s.fUds-itQs,d8=s+^Q*s*soorVZWmqgJKn
+s*aKfrI+]ns*O]ls*Ocks*+EdrH\Efs*"E`s)J'Ws)%dPs(_RJs(D at Ds().=s'Yk5s'>Y/s&f;%
+s&K(taaX'ch0sqTJcG]Kr;`)^J,~>
+JcF-trr@]OqZ,[VJ]?`iq>\FR]DmH%_8cHRqo7Nns/Z1$s/l+"s0)I,s0;O.s0Ma4s0_g6s0r$<
+s186Ds1nZQs2P)[s2k;`s3(Gds3:Shqp5;hrR1YnrRCkts475&s4[M.s5*e6rSde:s5j:CrTF4F
+rTjLJs7ZEcs*=Y)s5F"9s5*e3s4mY/s4[M+s4IA'q:5Gqs475#s4$elq:,Gps475%s4I;%qq1r#
+pX]Ass4RG,s4mY2s5F"=s6'FHs6BXMs6BXKs60LGs5s at Cs5a4?qr7G1s5O(;s5*e/s474js2k;a
+s3:Sls3q"qs3L_is3(Gaq8`NWs2Y/Xs2"`Ns2"ZOrPJTPs2=rWrPtVOq>]9jJcC<$rVufrPlH7~>
+JcF-trr at WMrVufrkPp*^j*ph(_1'B'JUY4[rVubDJNilns$-NLs$ZlVs%!)[s%EAeqgSPFs'5S0
+s'Pe7s'u(@s(VLKrG;FLrGMXOs(hXNs)%dRs)%dTs)\3_o6:4Xs)n?`rH8-`rHJ9bq02j^s)n?^
+s)A!Vs(q^Ms(;:As'l"9s'Pe3rETA.s'Pe7s'l"<q.0A6s((q8s2P)Xs24lQs'Pe4s'>Y0s',G*
+s&oA(s&]5$s&8qprD<Mis%WMdrCR#]s%!)Ws$H`Mq*+aAj$(S6q>],sJcC<$rVufrR/_[~>
+JcF-trr at WMrVufrkPp*^j*ph(_1'B'JUY4[rVubDX$6PJs$6TMs$QfTs%!)\s%<;bs%`Sjs&/ks
+s&]5's'5S2s'l"?s(VLLs)A!Zs*"Eeqg/9hs*aots+13%s+C?*s+gU\s,$c5s,?u>s-3PLs-WhT
+s.01^s.]Ohs/5grs/c7)s0Vg:s186Gs2G#]s3:Sjs3q#"s4[M.s5!_3s53k8s5O"<s60LKs6fpV
+qsj^Us6p!Ts6K^Ls5j:>s53k2s4IA%s3q"os2tA\s1eTHs1&*8s/uC$s/#ags-s%Ss,m>?s+p]/
+s+:9#s*akEs8N&somQF\s*aWhs*OckrHeKjs*Xins*=Wgs)n?^s)A!Vs)%dPs(_RJs(D at Bs'u(;
+s'Pe3s',M*s&]5#aaX'cfm\MPJcG]Kr;`5bJ,~>
+JcF-trr at WMrVufrkPp+Qj2Uop_8aIoJ]>=ArVuc7hl?^Ws/c7&ql]t&s02I,rNcI0s0Vg6s0hs:
+rODm=s1SHKs2=rXs2k;`s3(Gds3:Shs3LShs3^kqs4%"ts47/#s4IA)s4dS0s53k8s5O(=s5j:C
+s6'@Es69RKs60LGs7cKes*F_&s5!_1s4[M*s4@;%s4%(ts3gqpqp5;is3q"rs3^kns3^kms3:Se
+s2k/\rQG5`s3(Gdp!*N^s3LSfs3L_ls3gqss4./$s4RG-s5*e5s5<q9qr7Y7s5<q7s5*e3s4mG)
+s4[G+s4[M+s475"s1SHIs2"`Qs3^kns3:Ses2k;]s2FfOrP\`Qs1eTIs1eTLrPJTNs2+fSs2G#Y
+s2b/Zs2P#VX2au8fuAUCJcG]Kr;`5bJ,~>
+JcF-trr at WMrVufrkPp*^j*ph(_1'B'JUY4[rVubDJNilns$-NLs$ZlVs%!)[s%EAeqgSPFs'5S0
+s'Pe7s'u(@s(VLKrG;FLrGMXOs(hXNs)%dRs)%dTs)\3_o6:4Xs)n?`rH8-`rHJ9bq02j^s)n?^
+s)A!Vs(q^Ms(;:As'l"9s'Pe3rETA.s'Pe7s'l"<q.0A6s((q8s2P)Xs24lQs'Pe4s'>Y0s',G*
+s&oA(s&]5$s&8qprD<Mis%WMdrCR#]s%!)Ws$H`Mq*+aAj$(S6q>],sJcC<$rVufrR/_[~>
+JcF-trr at WMrVufrkPp*^j*ph(_1'B'JUY4[rVubDX$6PJs$6TMs$QfTs%!)\s%<;bs%`Sjs&/ks
+s&]5's'5S2s'l"?s(VLLs)A!Zs*"Eeqg/9hs*aots+13%s+C?*s+gU\s,$c5s,?u>s-3PLs-WhT
+s.01^s.]Ohs/5grs/c7)s0Vg:s186Gs2G#]s3:Sjs3q#"s4[M.s5!_3s53k8s5O"<s60LKs6fpV
+qsj^Us6p!Ts6K^Ls5j:>s53k2s4IA%s3q"os2tA\s1eTHs1&*8s/uC$s/#ags-s%Ss,m>?s+p]/
+s+:9#s*akEs8N&somQF\s*aWhs*OckrHeKjs*Xins*=Wgs)n?^s)A!Vs)%dPs(_RJs(D at Bs'u(;
+s'Pe3s',M*s&]5#aaX'cfm\MPJcG]Kr;`5bJ,~>
+JcF-trr at WMrVufrkPp+Qj2Uop_8aIoJ]>=ArVuc7hl?^Ws/c7&ql]t&s02I,rNcI0s0Vg6s0hs:
+rODm=s1SHKs2=rXs2k;`s3(Gds3:Shs3LShs3^kqs4%"ts47/#s4IA)s4dS0s53k8s5O(=s5j:C
+s6'@Es69RKs60LGs7cKes*F_&s5!_1s4[M*s4@;%s4%(ts3gqpqp5;is3q"rs3^kns3^kms3:Se
+s2k/\rQG5`s3(Gdp!*N^s3LSfs3L_ls3gqss4./$s4RG-s5*e5s5<q9qr7Y7s5<q7s5*e3s4mG)
+s4[G+s4[M+s475"s1SHIs2"`Qs3^kns3:Ses2k;]s2FfOrP\`Qs1eTIs1eTLrPJTNs2+fSs2G#Y
+s2b/Zs2P#VX2au8fuAUCJcG]Kr;`5bJ,~>
+JcF-trr at WMq>^Bnli2Nbj*ph(]meB/JUXqSrVubDJNirps$-NLs$QfTrCHr^s%iYmqgSPFs'bq;
+s(). at s(D at Hs).jVqf;XVs)S-Zs)7pVs)J'[s)S-^s*4Qis*jots+:9%s+:3#s+(-!rIFp!q1AWt
+rIFots*juqs*F]js*+Kbs)A!Us(q^Ns(VLGs(;:Bs(). at s(D at Fs(VLJq.p"HrG2FJrFu:Fs3^kl
+s31MbrF>e8s'bq8s'P_2s'>Y/s&oA's&K(us&8qps%iYhs%EAcs%35[s$ZlQq*4gCs$,U/aaX'c
+eUE)LJcG]Kr;`AfJ,~>
+JcF-trr at WMq>^Bnli2Nbj*ph(]meB/JUXqSrVubDXZl\Js$6TNs$ZlVs%*/^s%EAds%iYls&B#!
+s&f;*s'G_6s().Cs(hXQs)S-^s*4Qjs*Xips*juts+:9's+LE+s+^Q0s,-gcs,I&=s,d8Ds-NbT
+s.01_s.fUjs/>sts/l1%s0Vg9s1A<Es2+fWs3:Sjs475(s5!_5s5F";s5X.?s5s at Es60LIs6TdS
+s7--\s7Q9as7ZKcs7--Ws69RGs5X.;s5!_/s4IA%s3Uehs2P)Us1\NDs0Vg1s/Z0ss.TI_s-NbL
+s,R,;s+p]/s+14Js82ims7lVAqgJKlrI+9ds*aopq0i9irI"WnrI4cos*=Wgs)e9]s)J'Xs)7pS
+s(q^Ms(D at Cs().=s'Yk4s',M+s&[<kq>\uoJcC<$rVufrSH"*~>
+JcF-trr at WMq>^Bnli2OUj2Uop]uJJ"J]>%9rVuc7hl?^Ws/c7&rN?1(rNQ=,qm-7.s0Vg6s0hs:
+s1&*>s1A<Fs2"`Ss2b5_s31Mfs3CYjrQtGhs3gqss4.)"s4I;'rS%;,s5*e6s5O(=s5j4Bs60FG
+s6BXJs5s at Bs7lQgs*Oe"s4RG)s475"s3gqos3L_is31MdrQ5)^s31Ges3:Mds2tA_s2P)Vs2"ZL
+q8**Js24lRrPSTNs24lTs2G#XrQ"r[s2tAbs31Mfs3L_ns4%)!s475%rRh##s4IA's47/!pXK5n
+s4%(ss3^kns0Vg7s1&*?s3L_hs2k;]s2G#Us2"BDs1eTHs1A<Ds1\NKrPANNs24lUs2Y)Zs2Y/Z
+qo,\Wq>]!bJcC<$rVufrSH"*~>
+JcF-trr at WMq>^Bnli2Nbj*ph(]meB/JUXqSrVubDJNirps$-NLs$QfTrCHr^s%iYmqgSPFs'bq;
+s(). at s(D at Hs).jVqf;XVs)S-Zs)7pVs)J'[s)S-^s*4Qis*jots+:9%s+:3#s+(-!rIFp!q1AWt
+rIFots*juqs*F]js*+Kbs)A!Us(q^Ns(VLGs(;:Bs(). at s(D at Fs(VLJq.p"HrG2FJrFu:Fs3^kl
+s31MbrF>e8s'bq8s'P_2s'>Y/s&oA's&K(us&8qps%iYhs%EAcs%35[s$ZlQq*4gCs$,U/aaX'c
+eUE)LJcG]Kr;`AfJ,~>
+JcF-trr at WMq>^Bnli2Nbj*ph(]meB/JUXqSrVubDXZl\Js$6TNs$ZlVs%*/^s%EAds%iYls&B#!
+s&f;*s'G_6s().Cs(hXQs)S-^s*4Qjs*Xips*juts+:9's+LE+s+^Q0s,-gcs,I&=s,d8Ds-NbT
+s.01_s.fUjs/>sts/l1%s0Vg9s1A<Es2+fWs3:Sjs475(s5!_5s5F";s5X.?s5s at Es60LIs6TdS
+s7--\s7Q9as7ZKcs7--Ws69RGs5X.;s5!_/s4IA%s3Uehs2P)Us1\NDs0Vg1s/Z0ss.TI_s-NbL
+s,R,;s+p]/s+14Js82ims7lVAqgJKlrI+9ds*aopq0i9irI"WnrI4cos*=Wgs)e9]s)J'Xs)7pS
+s(q^Ms(D at Cs().=s'Yk4s',M+s&[<kq>\uoJcC<$rVufrSH"*~>
+JcF-trr at WMq>^Bnli2OUj2Uop]uJJ"J]>%9rVuc7hl?^Ws/c7&rN?1(rNQ=,qm-7.s0Vg6s0hs:
+s1&*>s1A<Fs2"`Ss2b5_s31Mfs3CYjrQtGhs3gqss4.)"s4I;'rS%;,s5*e6s5O(=s5j4Bs60FG
+s6BXJs5s at Bs7lQgs*Oe"s4RG)s475"s3gqos3L_is31MdrQ5)^s31Ges3:Mds2tA_s2P)Vs2"ZL
+q8**Js24lRrPSTNs24lTs2G#XrQ"r[s2tAbs31Mfs3L_ns4%)!s475%rRh##s4IA's47/!pXK5n
+s4%(ss3^kns0Vg7s1&*?s3L_hs2k;]s2G#Us2"BDs1eTHs1A<Ds1\NKrPANNs24lUs2Y)Zs2Y/Z
+qo,\Wq>]!bJcC<$rVufrSH"*~>
+JcF-trr at WMp&Fsjn,Irfj*ph(\UNB7JUXYKrVubDJNirps$?ZQs$m#Zs%<;cs%r_os&T#GrrE(2
+s(M at Fs(hXPs)S-\s)n?cqfr-bs)n?`s)n?brHS?hs*juus+:9*s,$Q1rJUW3rJU]8s,R&;qi(Q4
+s+p]1s+UK+s+:9#s*Ocks*+Kcs)S-ZrG_RMs)@jTq/ZLTs)A!Us)%dPs4RG's4%(rs(D:Ds(D at D
+rFQ">s'u(<s'bq7s'5S-s&f;&s&K(ts&&els%`Ses%35\s$crTs$6HIs$H`Ns$,[1aaX'cd=-ZH
+JcG]Kr;`MjJ,~>
+JcF-trr at WMp&Fsjn,Irfj*ph(\UNB7JUXYKrVubDY<MnLs$6TMs$H`Rs%!)\s%EAcs%`Sjs&8qt
+s&f;)s'>Y4s'u(@s(_RNs)J']s*4Qjs*aors*t'"s+:9(s+^Q/s+p]3s,6o:rt59ns-!DGs-<VP
+s.97bs.fUks/Q+$s0)I.s0M[2s1/*As1eTQs2tAgs3^kts4mY6s5s at Es60LIs6BRLrU'XSs763_
+s7ZKfqtpEis7lWes7--Vs6BXJs5a4=s5*e3s4[M's3Ueis2b5Xs1eTFs0hs4s/c6us.]Oas-`nO
+s,d8>s+p]-s7cQes7QE`s*=?drI+?fo6p:\s*Ocks*"EarH&!Zs)A!Vs)%dNs(MFEs().=s'Yk5
+s',M+aaX'cd=-ZHJcG]Kr;`MjJ,~>
+JcF-trr at WMp&Fsjn,IsYj2Uop\]3J*J]=b1rVuc7iMujWs/c7&rN?1(s02O.q6L%,s0Vg6s0hs:
+s1&*>s1A<Fs2+fTs2b5`s3:Shs3L_lrR(Mjs3q"us4@;'s4RG+rS.;+s5!_4s5F"<s5s at FrTF4E
+s69RKs60LEs5X.=s7uWis*Xjts4./!s3q"qs3CYgs3(Gas2P)WrPSZTs2b5_s2k;^s2Y/\s2G#U
+s2"`Ms1JBCq7$C4s0qm8s1/0>s0r$<s1/0ArOi0Ds1eTLrPANOs2G#Zs2tAbs31Mgqp5;hrR(Yl
+s3LMdrQY5brQYAds/Q+$s0)I-s31Mas2G#Us2"`Ms1S<Bq7H[<s1/0 at s1A<Es1eTLs2"`Ps24lT
+s2FrWs2P)XrP\`TYK$D<dDgb;JcG]Kr;`MjJ,~>
+JcF-trr at WMp&Fsjn,Irfj*ph(\UNB7JUXYKrVubDJNirps$?ZQs$m#Zs%<;cs%r_os&T#GrrE(2
+s(M at Fs(hXPs)S-\s)n?cqfr-bs)n?`s)n?brHS?hs*juus+:9*s,$Q1rJUW3rJU]8s,R&;qi(Q4
+s+p]1s+UK+s+:9#s*Ocks*+Kcs)S-ZrG_RMs)@jTq/ZLTs)A!Us)%dPs4RG's4%(rs(D:Ds(D at D
+rFQ">s'u(<s'bq7s'5S-s&f;&s&K(ts&&els%`Ses%35\s$crTs$6HIs$H`Ns$,[1aaX'cd=-ZH
+JcG]Kr;`MjJ,~>
+JcF-trr at WMp&Fsjn,Irfj*ph(\UNB7JUXYKrVubDY<MnLs$6TMs$H`Rs%!)\s%EAcs%`Sjs&8qt
+s&f;)s'>Y4s'u(@s(_RNs)J']s*4Qjs*aors*t'"s+:9(s+^Q/s+p]3s,6o:rt59ns-!DGs-<VP
+s.97bs.fUks/Q+$s0)I.s0M[2s1/*As1eTQs2tAgs3^kts4mY6s5s at Es60LIs6BRLrU'XSs763_
+s7ZKfqtpEis7lWes7--Vs6BXJs5a4=s5*e3s4[M's3Ueis2b5Xs1eTFs0hs4s/c6us.]Oas-`nO
+s,d8>s+p]-s7cQes7QE`s*=?drI+?fo6p:\s*Ocks*"EarH&!Zs)A!Vs)%dNs(MFEs().=s'Yk5
+s',M+aaX'cd=-ZHJcG]Kr;`MjJ,~>
+JcF-trr at WMp&Fsjn,IsYj2Uop\]3J*J]=b1rVuc7iMujWs/c7&rN?1(s02O.q6L%,s0Vg6s0hs:
+s1&*>s1A<Fs2+fTs2b5`s3:Shs3L_lrR(Mjs3q"us4@;'s4RG+rS.;+s5!_4s5F"<s5s at FrTF4E
+s69RKs60LEs5X.=s7uWis*Xjts4./!s3q"qs3CYgs3(Gas2P)WrPSZTs2b5_s2k;^s2Y/\s2G#U
+s2"`Ms1JBCq7$C4s0qm8s1/0>s0r$<s1/0ArOi0Ds1eTLrPANOs2G#Zs2tAbs31Mgqp5;hrR(Yl
+s3LMdrQY5brQYAds/Q+$s0)I-s31Mas2G#Us2"`Ms1S<Bq7H[<s1/0 at s1A<Es1eTLs2"`Ps24lT
+s2FrWs2P)XrP\`TYK$D<dDgb;JcG]Kr;`MjJ,~>
+JcF-trr at WMnc/OfoDaAjj*ph(Z[V0=JUXGErVubDJNj#rs$6TPs$m#Zs%<;cs&&eqs&]5(qgSPF
+s(hXNrGDRQs)S'\s*+Kgs*O]ms*Xims*=Qhs*Xiqs+(-%s+LE,s,-i:s,m>Es-<VMs-<VMqj%2I
+s-NbQs-`bQs-s%Vs-E\Ks,m>Bs,?u7s+UK*s+13!s*XinrHe-\q0;p`s*"Eas)S-ZrGV_ps5*e2
+s4REfs(q^Qs)%dPs(hXLrFu:Fs(D at Bs'l"8s'>Y/s&oA's&T/!s&/kms%WMds%35\s$clQrBpTO
+s$6TKks!4<q>\WeJcC<$s8W#tV#Pr~>
+JcF-trr at WMnc/OfoDaAjj*ph(Z[V0=JUXGErVubDY<MnLs$6TMs$QfTs%*/^s%NGes%r_ns&B#"
+s&oA,s'Pe8s(24Ds(q^Ss)e9bs*F]ms*k!!s+:9's+LE,s+p]4s,6o9s,R, at rtPEss-E\Os.'+^
+s/#aks/>t!s0;U4rODm<s186Fqn`<Qs3:Sjs3^kts4dS4s5s at IrU0^Ss7$!Ws763^qtBjYs7cKe
+s7H?]s6fpRs69RGs5X.<s5*e1s475!s3L_fs2G#Rs1JB at s0D[,s/5mjs.'+Ss,m>As+gW+s763[
+s7$'Vs*4QhpO)pfomZphl[Jk^s*Ocjs*"9^s)\3\s)A!Ts(hXKs(D at Cs'l"9s'G_0aaX'cbC5$B
+JcGcMr;`YnJ,~>
+JcF-trr at WMnc/OfoDaB]j2UopZc;80J]=P+rVuc7iMupYs/c1$s/uC*s02I,q6L%,s0Vg6s0hs;
+s1/0 at s1JBHs2+fUs2k;as3CYks3^_lqpYSps475&s4RG,s4mS/s5*_3s5O(>s5s at Gs6BXJs6'FG
+rTX at Es5X.<s53kQrVQVCs3gqps3Uels3:Sds2b5^s2Y/Xs2"`Ls1eTMs24lUs2=rVs2=rTs1nZK
+s1SHFs1/0;s0Ma2s0)=%s/uC*ql]n"qlKgus/c7(s0Ma6s0r$=s1A<Fs1nZNs2=rVs2P)Xs2O`Q
+q8`NVs2k5_s2tAbs2tA8s.fUks/>t>s2G#Ss1eTHs186 at qmcU6rO2[6s1&*>s186Bs1SHIrP8HM
+s24lUs2Y/Zs2FrSs2=rVZ,ZV>bJo,5JcGcMr;`YnJ,~>
+JcF-trr at WMnc/OfoDaAjj*ph(Z[V0=JUXGErVubDJNj#rs$6TPs$m#Zs%<;cs&&eqs&]5(qgSPF
+s(hXNrGDRQs)S'\s*+Kgs*O]ms*Xims*=Qhs*Xiqs+(-%s+LE,s,-i:s,m>Es-<VMs-<VMqj%2I
+s-NbQs-`bQs-s%Vs-E\Ks,m>Bs,?u7s+UK*s+13!s*XinrHe-\q0;p`s*"Eas)S-ZrGV_ps5*e2
+s4REfs(q^Qs)%dPs(hXLrFu:Fs(D at Bs'l"8s'>Y/s&oA's&T/!s&/kms%WMds%35\s$clQrBpTO
+s$6TKks!4<q>\WeJcC<$s8W#tV#Pr~>
+JcF-trr at WMnc/OfoDaAjj*ph(Z[V0=JUXGErVubDY<MnLs$6TMs$QfTs%*/^s%NGes%r_ns&B#"
+s&oA,s'Pe8s(24Ds(q^Ss)e9bs*F]ms*k!!s+:9's+LE,s+p]4s,6o9s,R, at rtPEss-E\Os.'+^
+s/#aks/>t!s0;U4rODm<s186Fqn`<Qs3:Sjs3^kts4dS4s5s at IrU0^Ss7$!Ws763^qtBjYs7cKe
+s7H?]s6fpRs69RGs5X.<s5*e1s475!s3L_fs2G#Rs1JB at s0D[,s/5mjs.'+Ss,m>As+gW+s763[
+s7$'Vs*4QhpO)pfomZphl[Jk^s*Ocjs*"9^s)\3\s)A!Ts(hXKs(D at Cs'l"9s'G_0aaX'cbC5$B
+JcGcMr;`YnJ,~>
+JcF-trr at WMnc/OfoDaB]j2UopZc;80J]=P+rVuc7iMupYs/c1$s/uC*s02I,q6L%,s0Vg6s0hs;
+s1/0 at s1JBHs2+fUs2k;as3CYks3^_lqpYSps475&s4RG,s4mS/s5*_3s5O(>s5s at Gs6BXJs6'FG
+rTX at Es5X.<s53kQrVQVCs3gqps3Uels3:Sds2b5^s2Y/Xs2"`Ls1eTMs24lUs2=rVs2=rTs1nZK
+s1SHFs1/0;s0Ma2s0)=%s/uC*ql]n"qlKgus/c7(s0Ma6s0r$=s1A<Fs1nZNs2=rVs2P)Xs2O`Q
+q8`NVs2k5_s2tAbs2tA8s.fUks/>t>s2G#Ss1eTHs186 at qmcU6rO2[6s1&*>s186Bs1SHIrP8HM
+s24lUs2Y/Zs2FrSs2=rVZ,ZV>bJo,5JcGcMr;`YnJ,~>
+JcF-trr at WMmJm+bp]#enj*ph(YC?0EJUX/=rVubDJNj)ts$-NMs$m#[s%EAds&&ers&f;*s'GSO
+rrE":rGhjYs*"Eds*"Ees*F]nrI4css*surs*aoss+:9*rJ:K2s,R,BrK[DMs-s%[qk3t_s.]Oi
+s/5mqrMfaqs/>sos.]Ocs-itRs-*JEs,R,;s+p]0rIk3'q1/Ens*aoos*F]js*4Kds)n?_s)S-Z
+s6'FEs5a4=s)7pVrGqjVs)A!Vs).jRs(q^Ms(D at Cs'l"9s'G_2s',M+s&]5"s&&els%WMds%35[
+rC$ZSs$QfQs$5g4aaX'ca*rU>MuWSQs8W*!V#Pr~>
+JcF-trr at WMmJm+bp]#enj*ph(YC?0EJUX/=rVubDY<MtNs$6TMs$H`Rs$m#[s%EAds%iYls&B#!
+s&f;*s'G_6s().Bs(hXQs)S-_s*FWks*k!"s+L?*s+p]4s,?u<s,[2Bs-*I!qj at DPs.97cs/,go
+s/Z1(s0_m:s186DrP/BMrP\`Ts2tAes3Ueos4@;+s5<q<s69ROs76-]s7ZKcrU^'ZrUBXOs7--[
+s7?9_s7QE_s7$'Us6BXIs5s at As53k4s4RG&s3Ueis2b5Xs1JB=s/uC"s.TI_s-NbLs,R,7s+::9
+s6TdOs69Q/s*FKfrI"WnpO<'hl$iY\s*F]iqfi'`s)n?_s)A!Us(q^Ms(D at Cs'l"9s'<`qq>\Ka
+JcCZ.q#LHprrAkpJ,~>
+JcF-trr at WMmJm+bp]#faj2UopYK$88J]=8#rVuc7j/W-[rN-%$rN?1(s02O.pTjh+s0_m8s0r$=
+s186Cs1\NKs24lVs2k;bs3CYls3genqpbYrs4@;(s4[M.s5*e5s5<q9rSmk=s6'FHrTjLJs6'@E
+s6'FCs5F"8s4mYOrVZ\Es3CSfs31Mcs2Y/Zs2Y/Ys2+fNqnE*FrPANNs2"`Ms1A6 at s1/0;s0D[.
+s/uC's/>sprM9Iis.o[hs.B=^s.'%WrL3bUs.B=cs/,gss02O/s0Vg7s1&*@s1JBFs1JBFs1eHH
+rPANNs24lUs2P#XqoJfZs2b/-s.01^s2P)Us1\NFs1&*;s0_g4s0MO,s0M[3s0hm8s1&*@s1SHH
+s1eTLs2+fTs2P)WrPJTPs2;1^q>\LTJcCZ.q#LHprrAkpJ,~>
+JcF-trr at WMmJm+bp]#enj*ph(YC?0EJUX/=rVubDJNj)ts$-NMs$m#[s%EAds&&ers&f;*s'GSO
+rrE":rGhjYs*"Eds*"Ees*F]nrI4css*surs*aoss+:9*rJ:K2s,R,BrK[DMs-s%[qk3t_s.]Oi
+s/5mqrMfaqs/>sos.]Ocs-itRs-*JEs,R,;s+p]0rIk3'q1/Ens*aoos*F]js*4Kds)n?_s)S-Z
+s6'FEs5a4=s)7pVrGqjVs)A!Vs).jRs(q^Ms(D at Cs'l"9s'G_2s',M+s&]5"s&&els%WMds%35[
+rC$ZSs$QfQs$5g4aaX'ca*rU>MuWSQs8W*!V#Pr~>
+JcF-trr at WMmJm+bp]#enj*ph(YC?0EJUX/=rVubDY<MtNs$6TMs$H`Rs$m#[s%EAds%iYls&B#!
+s&f;*s'G_6s().Bs(hXQs)S-_s*FWks*k!"s+L?*s+p]4s,?u<s,[2Bs-*I!qj at DPs.97cs/,go
+s/Z1(s0_m:s186DrP/BMrP\`Ts2tAes3Ueos4@;+s5<q<s69ROs76-]s7ZKcrU^'ZrUBXOs7--[
+s7?9_s7QE_s7$'Us6BXIs5s at As53k4s4RG&s3Ueis2b5Xs1JB=s/uC"s.TI_s-NbLs,R,7s+::9
+s6TdOs69Q/s*FKfrI"WnpO<'hl$iY\s*F]iqfi'`s)n?_s)A!Us(q^Ms(D at Cs'l"9s'<`qq>\Ka
+JcCZ.q#LHprrAkpJ,~>
+JcF-trr at WMmJm+bp]#faj2UopYK$88J]=8#rVuc7j/W-[rN-%$rN?1(s02O.pTjh+s0_m8s0r$=
+s186Cs1\NKs24lVs2k;bs3CYls3genqpbYrs4@;(s4[M.s5*e5s5<q9rSmk=s6'FHrTjLJs6'@E
+s6'FCs5F"8s4mYOrVZ\Es3CSfs31Mcs2Y/Zs2Y/Ys2+fNqnE*FrPANNs2"`Ms1A6 at s1/0;s0D[.
+s/uC's/>sprM9Iis.o[hs.B=^s.'%WrL3bUs.B=cs/,gss02O/s0Vg7s1&*@s1JBFs1JBFs1eHH
+rPANNs24lUs2P#XqoJfZs2b/-s.01^s2P)Us1\NFs1&*;s0_g4s0MO,s0M[3s0hm8s1&*@s1SHH
+s1eTLs2+fTs2P)WrPJTPs2;1^q>\LTJcCZ.q#LHprrAkpJ,~>
+JcF-trr at WMl2UV\rVqFtj*ph(JUW0!^OH.]qgO)[s$$HKs$crZs%NGes&&ers&oA,s'Pe8qgSPF
+rH/!\s*+KgrHS?gs*X]ms+'ors+C?*s,6i7s,R,Bs-E\Ps-`nWs.97bs/#aqs/uC+s0D[3s0hs:
+rODg:s1&*9s0;U,s/Q*ps.B=[s-NbMs,m>Bs,R,=s,6i4s+p]/s+1,us*aops*F]js*4Qhs*+Kd
+rH/)+s6]jQs69Q)s)e9arHJ9brH8-^s)\3\s)7pRs(VLFs().>s'l"9s'G_1s&oA&s&8qps%iYh
+s%<;]rC6fUs$QfPs$,g5aaX'c_g[1:QiHj]p](6nV#Pr~>
+JcF-trr at WMl2UV\rVqFtj*ph(JUW0!^OH.]qgP_4s$-NKs$?ZOs$crXs%<;bs%`Sjs&8qts&]5(
+s'>Y4s'u(@s(VLMs)J']s*=WlrI+]qs+:9*rJ:K2s,?u<s,d8Ds-3PLru1j)s.'+\s.fUls/>ss
+s/uC/s0r$=s1A<Fs2"`Rs2OrWs31Mgs3^kps4@;+s53k9s6'FJs7$'Zs7?9]s6opRs6KXKq<@qF
+s6TdQs6fpVs763^s7--Xs6TdNs6'FCs5O(:s4mY)s3L_fs24lMs0hs1s/5mis.'+Ws-<VDs+^Q)
+s5F">s5s at Bs*=WjrHnQlrHnQlpO2pdkC3GYs*FQfrHS?cs)e9\s)7pRs(_RHs(24>s'Nlsq>\?]
+JcD):q#L0hrrAkpJ,~>
+JcF-trr at WMl2UV\rVqGgj2UopJ]<8\^W-6Pqo7Zrs/Z1$s/l1$s0)I,s0;O.qm6=1s0hs:s1&*?
+s1A<Es1eTNs24lWs2tAcs3L_ms3pkpqpk_ts4IA*s4mY2s5<q:s5X.?rT4(Cs6BRLs6K^MrTO:D
+s5j:?s53k4s4RGMrVcbGs3(Gbs2k;^s2G#Us2=rVs24lPo=k7>s1\NGqmZU5s0D[-s/c7$s/>so
+s.]Oas-WhOs-*JFs,[2=rJUW3s,$c6s,R,Bs-<VQs.KCgs/Z1%s0)I.s0M[2s0_g7s1&*?s1eNK
+s2+fRs2=`Ps2P)Zs2P)'rKI8Is2+fMs1A<@s0Vg3s0;U.s0)7$s0)I-rNc=,s0Vg8s186Cs1SHH
+s1nZOs2=rTrPANNs2=rVZc;h at _o@9-QiHj]p](6nV#Pr~>
+JcF-trr at WMl2UV\rVqFtj*ph(JUW0!^OH.]qgO)[s$$HKs$crZs%NGes&&ers&oA,s'Pe8qgSPF
+rH/!\s*+KgrHS?gs*X]ms+'ors+C?*s,6i7s,R,Bs-E\Ps-`nWs.97bs/#aqs/uC+s0D[3s0hs:
+rODg:s1&*9s0;U,s/Q*ps.B=[s-NbMs,m>Bs,R,=s,6i4s+p]/s+1,us*aops*F]js*4Qhs*+Kd
+rH/)+s6]jQs69Q)s)e9arHJ9brH8-^s)\3\s)7pRs(VLFs().>s'l"9s'G_1s&oA&s&8qps%iYh
+s%<;]rC6fUs$QfPs$,g5aaX'c_g[1:QiHj]p](6nV#Pr~>
+JcF-trr at WMl2UV\rVqFtj*ph(JUW0!^OH.]qgP_4s$-NKs$?ZOs$crXs%<;bs%`Sjs&8qts&]5(
+s'>Y4s'u(@s(VLMs)J']s*=WlrI+]qs+:9*rJ:K2s,?u<s,d8Ds-3PLru1j)s.'+\s.fUls/>ss
+s/uC/s0r$=s1A<Fs2"`Rs2OrWs31Mgs3^kps4@;+s53k9s6'FJs7$'Zs7?9]s6opRs6KXKq<@qF
+s6TdQs6fpVs763^s7--Xs6TdNs6'FCs5O(:s4mY)s3L_fs24lMs0hs1s/5mis.'+Ws-<VDs+^Q)
+s5F">s5s at Bs*=WjrHnQlrHnQlpO2pdkC3GYs*FQfrHS?cs)e9\s)7pRs(_RHs(24>s'Nlsq>\?]
+JcD):q#L0hrrAkpJ,~>
+JcF-trr at WMl2UV\rVqGgj2UopJ]<8\^W-6Pqo7Zrs/Z1$s/l1$s0)I,s0;O.qm6=1s0hs:s1&*?
+s1A<Es1eTNs24lWs2tAcs3L_ms3pkpqpk_ts4IA*s4mY2s5<q:s5X.?rT4(Cs6BRLs6K^MrTO:D
+s5j:?s53k4s4RGMrVcbGs3(Gbs2k;^s2G#Us2=rVs24lPo=k7>s1\NGqmZU5s0D[-s/c7$s/>so
+s.]Oas-WhOs-*JFs,[2=rJUW3s,$c6s,R,Bs-<VQs.KCgs/Z1%s0)I.s0M[2s0_g7s1&*?s1eNK
+s2+fRs2=`Ps2P)Zs2P)'rKI8Is2+fMs1A<@s0Vg3s0;U.s0)7$s0)I-rNc=,s0Vg8s186Cs1SHH
+s1nZOs2=rTrPANNs2=rVZc;h at _o@9-QiHj]p](6nV#Pr~>
+JcF-trr at WMj8]&XJUZX.q>[dMofdqUR=>,7qgO)[s$-NNs%!)^s%`Sks&K)%s'>Y4s'u(@qgSPF
+rHS9drHnQjs*=Wks*acns+(-#s+(-#s+:9*s,$c8s,[2As-!DJs-`nUs.97bs/5mts/uC.s1&*A
+s2"`Qs2FlUrQ,#Zs24lPs1SHCs0Ma.s/H$os.97[s-`nRs-<VHs,I&;s,-i2s+1-!s*t&ss*Ocl
+s*=Qhs*4Qfs*"G4s763]s7-,5s*=Wjs*O]ls*Ocks*+Kcs)e9^s)A!Ts(_RIrFc.As'u(;s'G_0
+s&f;$s&8qps%`SerCHrYs$crTs$?ZLm68X at q>\3YJcDGDqZ-*brrAkpJ,~>
+JcF-trr at WMj8]&XJUZX.q>[dMofdqUR=>,7qgP_4s$-NKs$?ZPs$m#Zs%EAds%r_ns&B#"s&oA,
+s'Pe8s(24Ds(hXQs)\3as*OcprI+]qs+C?,rJLW6s,R, at s,m>Hs-NbSru_93s.B=bs.o[os/Q+"
+s/c7*s0qs;s1JBHs2+fVs2k;arQP;es3L_ms3q##s4dS1s53k8s5X. at rTO4Cs60LGs5j4?q;_M:
+s5s at Es60LJs6TdRs7--\s7$'Ws6TdMs5j:>s4dS(s3L_fs24lMs0r$4s/>sks.'+Vs-3PCs+^Q(
+s4IA,s5<q7s*FQhrI+]nrHeKhs*FQhrHeKkkC3GYqg89fs*=Wfs)e9\s)7pRs(VLGs().<aaX'c
+^OCb6U&Xuin,NCfV#Pr~>
+JcF-trr at WMj8]&XJ]?`iq>[e at or<S_RE#4*qo7`ts/Z1$rN5t"s0)I,s0;O.s0M[2s0hs:s1&*>
+s1A<Es1eTMs24lUs2Y/^s3:Sis3^kqqpkYrs4@;'s4[M.s5*e6s5O(>s5s at ErTO:Is6]jSs6]jQ
+s6K^Ls60LDs5O(:s5!_/s4@;LrVlhHs2Y/Ys2=rTrPANNs24lQn%Sh6s1/0<s0Vg4s0D[-s/c7#
+s/,gis-s%Ss,m>?s+p]/s+(,us*XinrHeEfs*F]ns+13(s,$c:s-<VQs.B=gs/H$us/Z1%s02O0
+s0_m8s186FqnW6Ks24fRrPSZRs2G#Vs,R,=s,6o:s1\NFs0r$9s0;U,q5s[us/Q+"s/l=(qlp%&
+s02O0s0hs<s186Bs1SHJs2"`PrP8HLs24lTs2DCcq>\4LJcDGDqZ-*brrAkpJ,~>
+JcF-trr at WMj8]&XJUZX.q>[dMofdqUR=>,7qgO)[s$-NNs%!)^s%`Sks&K)%s'>Y4s'u(@qgSPF
+rHS9drHnQjs*=Wks*acns+(-#s+(-#s+:9*s,$c8s,[2As-!DJs-`nUs.97bs/5mts/uC.s1&*A
+s2"`Qs2FlUrQ,#Zs24lPs1SHCs0Ma.s/H$os.97[s-`nRs-<VHs,I&;s,-i2s+1-!s*t&ss*Ocl
+s*=Qhs*4Qfs*"G4s763]s7-,5s*=Wjs*O]ls*Ocks*+Kcs)e9^s)A!Ts(_RIrFc.As'u(;s'G_0
+s&f;$s&8qps%`SerCHrYs$crTs$?ZLm68X at q>\3YJcDGDqZ-*brrAkpJ,~>
+JcF-trr at WMj8]&XJUZX.q>[dMofdqUR=>,7qgP_4s$-NKs$?ZPs$m#Zs%EAds%r_ns&B#"s&oA,
+s'Pe8s(24Ds(hXQs)\3as*OcprI+]qs+C?,rJLW6s,R, at s,m>Hs-NbSru_93s.B=bs.o[os/Q+"
+s/c7*s0qs;s1JBHs2+fVs2k;arQP;es3L_ms3q##s4dS1s53k8s5X. at rTO4Cs60LGs5j4?q;_M:
+s5s at Es60LJs6TdRs7--\s7$'Ws6TdMs5j:>s4dS(s3L_fs24lMs0r$4s/>sks.'+Vs-3PCs+^Q(
+s4IA,s5<q7s*FQhrI+]nrHeKhs*FQhrHeKkkC3GYqg89fs*=Wfs)e9\s)7pRs(VLGs().<aaX'c
+^OCb6U&Xuin,NCfV#Pr~>
+JcF-trr at WMj8]&XJ]?`iq>[e at or<S_RE#4*qo7`ts/Z1$rN5t"s0)I,s0;O.s0M[2s0hs:s1&*>
+s1A<Es1eTMs24lUs2Y/^s3:Sis3^kqqpkYrs4@;'s4[M.s5*e6s5O(>s5s at ErTO:Is6]jSs6]jQ
+s6K^Ls60LDs5O(:s5!_/s4@;LrVlhHs2Y/Ys2=rTrPANNs24lQn%Sh6s1/0<s0Vg4s0D[-s/c7#
+s/,gis-s%Ss,m>?s+p]/s+(,us*XinrHeEfs*F]ns+13(s,$c:s-<VQs.B=gs/H$us/Z1%s02O0
+s0_m8s186FqnW6Ks24fRrPSZRs2G#Vs,R,=s,6o:s1\NFs0r$9s0;U,q5s[us/Q+"s/l=(qlp%&
+s02O0s0hs<s186Bs1SHJs2"`PrP8HLs24lTs2DCcq>\4LJcDGDqZ-*brrAkpJ,~>
+JcF-trr at WMhuEWTJUZd2q>\!SlTTlKSUUP;qgO/]s$-NMs$m#\s%`Sks&K)%s'>Y5s().Bs(_F[
+rrE(Ds*F]mrI+]nrHnQmq0r9ms*aoss+13(s,-i;s,m>Gs-NbVs.TIhs/H%#s0D[3s0r$@s2"`S
+s2k;ds4%"uqq(l!s3q"os31Mas24lMs1/0;s/uC!s.B=[s-E\JrJpo9s+^Q*qge]qs*Xins*FQh
+rH\G:s7cQgs7u\As*a]ls*Xims*4QerH8-^s)J'Vs(qXLs(_RIs(D at As'Yk4s'#G(s&K(ss%iYg
+s%<;^s$m#Ws$QfPs$,s9aaX'c]7,>2XoJ1sl2Ub`V#Pr~>
+JcF-trr at WMhuEWTJUZd2q>\!SlTTlKSUUP;qgP_4s$-NKs$?ZPs$m#[s%NGfs&&eps&T/%s',M0
+s'bq<s(D at Hs)%dUs)n?es*acns+(-%s+gW3s,?u<s,d8Ds-<VQs.97as!Ic=s.fUks/Q+#s/l=(
+s0)I0s1&$=s1SHJs2=rZs3(Ges3CYks3L_mrR1SnrRV#$s4[A+s4mY1s5*e5rSIA+s53k7s5F";
+s5a4Bs69RMrU'XQs6TdLs5j:>s4[M&s3L_fs24lMs1&*6s/Q*ns.01Ws-!D at s+UK's3L_os4@;)
+s*FWjs*=Qhs*=E_s*=Wjqg&3gs*X!Ys*ainrHnQjs*=Wfs)e9\s)7pQs(VLFs's0"q>\'UJcDkP
+q#K[ZrrAkpJ,~>
+JcF-trr at WMhuEWTJ]?lmq>\"Fl`,NUS]:X.qo7`ts/Z1$s/l+"s0)I,s0;O.s0Ma5s0hs:s1&*>
+s186Cs1\NKs2+fTs2Y/]s3(Ges3Ueos3q"urR_##s4RG+s4mY2s5<q:s5a4Bs69RKrTjLOs7$'W
+s6fpSs6TdNs6'FBs5<q5s4dS*s3plEs*t'fs24lQqnN0Hs2"`Mn%Sh6s1&*:s0Ma0s/l=!s.]Oa
+s-WhNs,[2;s+UK's*Xils)n?\s(q^MrFu4Ds(VLMs)A![s*=Wns+LE/s,R,Ds.'+bs/>sus/uC,
+s0D[4s186Eq8!$HqniBLs2+fRs2+els+^Q-s+C?_s0r$9s0Vg2s/uC(s/uC(s/c7$rM]ars/c1$
+s/c1"s/c7(s0D[4rODm>s1JBFs1\HHs1nZNs2+fRs2DIeq>\(HJcDkPq#K[ZrrAkpJ,~>
+JcF-trr at WMhuEWTJUZd2q>\!SlTTlKSUUP;qgO/]s$-NMs$m#\s%`Sks&K)%s'>Y5s().Bs(_F[
+rrE(Ds*F]mrI+]nrHnQmq0r9ms*aoss+13(s,-i;s,m>Gs-NbVs.TIhs/H%#s0D[3s0r$@s2"`S
+s2k;ds4%"uqq(l!s3q"os31Mas24lMs1/0;s/uC!s.B=[s-E\JrJpo9s+^Q*qge]qs*Xins*FQh
+rH\G:s7cQgs7u\As*a]ls*Xims*4QerH8-^s)J'Vs(qXLs(_RIs(D at As'Yk4s'#G(s&K(ss%iYg
+s%<;^s$m#Ws$QfPs$,s9aaX'c]7,>2XoJ1sl2Ub`V#Pr~>
+JcF-trr at WMhuEWTJUZd2q>\!SlTTlKSUUP;qgP_4s$-NKs$?ZPs$m#[s%NGfs&&eps&T/%s',M0
+s'bq<s(D at Hs)%dUs)n?es*acns+(-%s+gW3s,?u<s,d8Ds-<VQs.97as!Ic=s.fUks/Q+#s/l=(
+s0)I0s1&$=s1SHJs2=rZs3(Ges3CYks3L_mrR1SnrRV#$s4[A+s4mY1s5*e5rSIA+s53k7s5F";
+s5a4Bs69RMrU'XQs6TdLs5j:>s4[M&s3L_fs24lMs1&*6s/Q*ns.01Ws-!D at s+UK's3L_os4@;)
+s*FWjs*=Qhs*=E_s*=Wjqg&3gs*X!Ys*ainrHnQjs*=Wfs)e9\s)7pQs(VLFs's0"q>\'UJcDkP
+q#K[ZrrAkpJ,~>
+JcF-trr at WMhuEWTJ]?lmq>\"Fl`,NUS]:X.qo7`ts/Z1$s/l+"s0)I,s0;O.s0Ma5s0hs:s1&*>
+s186Cs1\NKs2+fTs2Y/]s3(Ges3Ueos3q"urR_##s4RG+s4mY2s5<q:s5a4Bs69RKrTjLOs7$'W
+s6fpSs6TdNs6'FBs5<q5s4dS*s3plEs*t'fs24lQqnN0Hs2"`Mn%Sh6s1&*:s0Ma0s/l=!s.]Oa
+s-WhNs,[2;s+UK's*Xils)n?\s(q^MrFu4Ds(VLMs)A![s*=Wns+LE/s,R,Ds.'+bs/>sus/uC,
+s0D[4s186Eq8!$HqniBLs2+fRs2+els+^Q-s+C?_s0r$9s0Vg2s/uC(s/uC(s/c7$rM]ars/c1$
+s/c1"s/c7(s0D[4rODm>s1JBFs1\HHs1nZNs2+fRs2DIeq>\(HJcDkPq#K[ZrrAkpJ,~>
+JcF-trr at WMhuEY(r;_Ctl[J[0_1(9*JUX;ArVubDK0K<$s$ZlXs%NGhs&K)%s'>Y5s(24Ds(hXP
+qgSPFs*=Wks*acns*aoppO<-ls*aoos*aoss+LE-s,d8Js.KCfs/>t"s0;U3s1/0As1SHJs2G#\
+s3:Sjs4./(s5<q<qr[q?s5O(9s4dS*s3gqjs2G#Ps0hs1s/>sks-`nNs,[2?s,6o4s+:3#s*t&t
+s*aimq0`3hs82iorVc>:s*Xims*4Ebs)n?^s)@jRs)%dPs(MFDs'l"7s'5S,s&T.us%r_js%EA`
+s%!)Ys$ZlQs$-$;aaX'c[sio.\c;I*iW&oXV#Pr~>
+JcF-trr at WMhuEY(r;_Ctl[J[0_1(9*JUX;ArVubDY<MtNs$6TNs$ZlWs%35as%iYms&K)#s'#G.
+s'Yk:s(;:Fs(q^Rs)\3as*OcoqgSQqs+C?,s,-i:s-!DIs-WhTs.KCfs/>rLs.fUks/H%"s/uC*
+s02O.s0hs;s186Cs1\NLs2Y/`s3CYks3^krs3gqns3:McrQP/`s3Ueos3q"rqpYSqs46qrs4RG+
+s4dS/s5*e6s5O(=rT+"?rT=. at s5<q2s4%(ps2tAZs1\NCs0D[+s.o[es-`nNs,I&5s*t'gs2tAe
+s3^jls*+Kds)e-\s)J!Vs)J'\s*+KfrHJ9es*OcokC3GZrI"Khs*=Wfs)e9\s).jPs(MFDaaX'c
+[sio.\c;I*iW&oXV#Pr~>
+JcF-trr at WMhuEYpr;_Dglc/c#_8bB4J]=D'rVuc7jf8?]s/bsts0)I,s0;O.s0Ma5s0r$=s186B
+s1JBGs1nZOs2=rWs2b5_s31Mgs3Ueos4%)"s4IA)rS%;+s4mY2s5<q:s5a4Bs60LKs6]jSs6opV
+s7$'Ws6fpSs69RGs5O(8s4[M)s3q"oqu6VFs2=rRs1eHFrP.a6s1A<?s0;U(s.o[es-itQs,d8=
+s+^Q*s*juns)e9[s)%dMs(24=s'>Y.rE0)$s&oA,s'Yk:s(MFMs)e9es+13+s,d8Is.97fs/c7(
+s0;U3s1/0Dq7lsFrPA6Ds+:9$s*t&ts1/0>s0r$:s0Ma0s/uC*s/uC(s/Z0us/,gos/H%!s/Q*u
+rMT[os/Z1&s0;U2s0hs;s1/*>s1A<Es1\NJs1nZNs24lU\]4IF\&O"!\c;I*iW&oXV#Pr~>
+JcF-trr at WMhuEY(r;_Ctl[J[0_1(9*JUX;ArVubDK0K<$s$ZlXs%NGhs&K)%s'>Y5s(24Ds(hXP
+qgSPFs*=Wks*acns*aoppO<-ls*aoos*aoss+LE-s,d8Js.KCfs/>t"s0;U3s1/0As1SHJs2G#\
+s3:Sjs4./(s5<q<qr[q?s5O(9s4dS*s3gqjs2G#Ps0hs1s/>sks-`nNs,[2?s,6o4s+:3#s*t&t
+s*aimq0`3hs82iorVc>:s*Xims*4Ebs)n?^s)@jRs)%dPs(MFDs'l"7s'5S,s&T.us%r_js%EA`
+s%!)Ys$ZlQs$-$;aaX'c[sio.\c;I*iW&oXV#Pr~>
+JcF-trr at WMhuEY(r;_Ctl[J[0_1(9*JUX;ArVubDY<MtNs$6TNs$ZlWs%35as%iYms&K)#s'#G.
+s'Yk:s(;:Fs(q^Rs)\3as*OcoqgSQqs+C?,s,-i:s-!DIs-WhTs.KCfs/>rLs.fUks/H%"s/uC*
+s02O.s0hs;s186Cs1\NLs2Y/`s3CYks3^krs3gqns3:McrQP/`s3Ueos3q"rqpYSqs46qrs4RG+
+s4dS/s5*e6s5O(=rT+"?rT=. at s5<q2s4%(ps2tAZs1\NCs0D[+s.o[es-`nNs,I&5s*t'gs2tAe
+s3^jls*+Kds)e-\s)J!Vs)J'\s*+KfrHJ9es*OcokC3GZrI"Khs*=Wfs)e9\s).jPs(MFDaaX'c
+[sio.\c;I*iW&oXV#Pr~>
+JcF-trr at WMhuEYpr;_Dglc/c#_8bB4J]=D'rVuc7jf8?]s/bsts0)I,s0;O.s0Ma5s0r$=s186B
+s1JBGs1nZOs2=rWs2b5_s31Mgs3Ueos4%)"s4IA)rS%;+s4mY2s5<q:s5a4Bs60LKs6]jSs6opV
+s7$'Ws6fpSs69RGs5O(8s4[M)s3q"oqu6VFs2=rRs1eHFrP.a6s1A<?s0;U(s.o[es-itQs,d8=
+s+^Q*s*juns)e9[s)%dMs(24=s'>Y.rE0)$s&oA,s'Yk:s(MFMs)e9es+13+s,d8Is.97fs/c7(
+s0;U3s1/0Dq7lsFrPA6Ds+:9$s*t&ts1/0>s0r$:s0Ma0s/uC*s/uC(s/Z0us/,gos/H%!s/Q*u
+rMT[os/Z1&s0;U2s0hs;s1/*>s1A<Es1\NJs1nZNs24lU\]4IF\&O"!\c;I*iW&oXV#Pr~>
+JcF-trr at WMhuEM$r;_Ctmsb*4aaVW$JUXMGrVubDKg,N$s$QfVs%EAfs&8r"s'5S4s(24Es(q^R
+s)S!crrE(Fs*Xipm=,(`s*Ocjs*ap#s,-i=s-`n\s/H%%s0Vg9s1SHJs24lUs2P)\s3CYms4./%
+s5!_7s6'FIs6p!Zs7QEas7--Vs6'F?s4RG$s3:S`s1\NBs0D[*s.fU`s-*JBs,-i3s+C?&s+(-!
+s*aorrI"?fs8;oos7u]is*XKgs*aoos*=QfrH\Eds)e-Zs)S-Zs)%dNs(D at As'Yk4s'#G(s&B"r
+s%`Ses%<;^s$m#Vs$?0=aaX'cZ$q9(a8br8g&M'PV#Pr~>
+JcF-trr at WMhuEM$r;_Ctmsb*4aaVW$JUXMGrVubDY<MtNs$?ZOs$ZlWs%<;cs%r_ns&K)$s',M1
+s'l">s(MFJs).jWs)n?es*XipqgSQss+^Q3s,[2Es-WhUs.01_s/,grs0)G[s/5mrs/c7&s/uC+
+s0D[3s0hs;s186Ds1eTPs2k;dqp5;is3CYgs2k;]qnrBNrPeZTqoSl\s3(Ges3L_lrR(MkrRCku
+s4I5&qq_;/s5!_/s4%(ps2tAZs1SHBs0D[,s/#afs-`nOs,I&6s+:9`s1nZPs2P(]s)S-ZqeuLP
+rG;LLs(q^Rs)\'\s*4Qhs*OcopO<-jomZjfrI"Wls*Xins*=Wfs)e9[s)%dNs(BH&q>[^KJcEdj
+q#K+JrrAkpJ,~>
+JcF-trr at WMhuEMlr;_Dgn&G2'ai;`.J]=V-rVuc7jf8?]s/bsts0)I,s0;O.s0Ma6s1&*?s1A<D
+s1SHIs2"`Qs2P)Zs2tAcs3CYks3^kqs4./$s4RG,rS7G/s5*e6s5O(>s5s at Fs6BXOs6p!Xs763]
+s763[s7$'Ws6TdLs5X.9s4[M(s3gqms2t6<s*t'cs1ma1s1A<?s0;U(s.o[cs-E\Is,?u5s+:9!
+s*=Wes)J'Us(MFCs'bq5s'#G&s&/kms%NGas%!)[s%NGhs&K)'s'u(Bs).jYs*Xj"s,-i=s-`n\
+s/H%'s0_m;s1[m8rP&)Vs1A<Bs1/0>s0_m5rNZC+s/uC's/H$rs/#ans/>sqs/#aks.fUis/5ms
+s/l=*s0Ma4rO)[6s0r$=s1JBFs1\NJs2"`Q\]4IFZ,V at pa8br8g&M'PV#Pr~>
+JcF-trr at WMhuEM$r;_Ctmsb*4aaVW$JUXMGrVubDKg,N$s$QfVs%EAfs&8r"s'5S4s(24Es(q^R
+s)S!crrE(Fs*Xipm=,(`s*Ocjs*ap#s,-i=s-`n\s/H%%s0Vg9s1SHJs24lUs2P)\s3CYms4./%
+s5!_7s6'FIs6p!Zs7QEas7--Vs6'F?s4RG$s3:S`s1\NBs0D[*s.fU`s-*JBs,-i3s+C?&s+(-!
+s*aorrI"?fs8;oos7u]is*XKgs*aoos*=QfrH\Eds)e-Zs)S-Zs)%dNs(D at As'Yk4s'#G(s&B"r
+s%`Ses%<;^s$m#Vs$?0=aaX'cZ$q9(a8br8g&M'PV#Pr~>
+JcF-trr at WMhuEM$r;_Ctmsb*4aaVW$JUXMGrVubDY<MtNs$?ZOs$ZlWs%<;cs%r_ns&K)$s',M1
+s'l">s(MFJs).jWs)n?es*XipqgSQss+^Q3s,[2Es-WhUs.01_s/,grs0)G[s/5mrs/c7&s/uC+
+s0D[3s0hs;s186Ds1eTPs2k;dqp5;is3CYgs2k;]qnrBNrPeZTqoSl\s3(Ges3L_lrR(MkrRCku
+s4I5&qq_;/s5!_/s4%(ps2tAZs1SHBs0D[,s/#afs-`nOs,I&6s+:9`s1nZPs2P(]s)S-ZqeuLP
+rG;LLs(q^Rs)\'\s*4Qhs*OcopO<-jomZjfrI"Wls*Xins*=Wfs)e9[s)%dNs(BH&q>[^KJcEdj
+q#K+JrrAkpJ,~>
+JcF-trr at WMhuEMlr;_Dgn&G2'ai;`.J]=V-rVuc7jf8?]s/bsts0)I,s0;O.s0Ma6s1&*?s1A<D
+s1SHIs2"`Qs2P)Zs2tAcs3CYks3^kqs4./$s4RG,rS7G/s5*e6s5O(>s5s at Fs6BXOs6p!Xs763]
+s763[s7$'Ws6TdLs5X.9s4[M(s3gqms2t6<s*t'cs1ma1s1A<?s0;U(s.o[cs-E\Is,?u5s+:9!
+s*=Wes)J'Us(MFCs'bq5s'#G&s&/kms%NGas%!)[s%NGhs&K)'s'u(Bs).jYs*Xj"s,-i=s-`n\
+s/H%'s0_m;s1[m8rP&)Vs1A<Bs1/0>s0_m5rNZC+s/uC's/H$rs/#ans/>sqs/#aks.fUis/5ms
+s/l=*s0Ma4rO)[6s0r$=s1JBFs1\NJs2"`Q\]4IFZ,V at pa8br8g&M'PV#Pr~>
+JcF-trr at WMhuE@ur;_Cto7$N8c[NnuJUXYKrVubDKg,N's$m#\s%WMjs&T/(s'Pe:s(VLMs)A!Z
+s*"9grrE(Gs*aWjrHnQmqgSQps+13%s+p]8s-3PQs.fUps0Ma8s1SHLs2Y/`s3CYjs3Ueos4IA+
+s5!_5s5a4Es6]jVs7Q?crV?Kbs6fpMs5<q3s474qs2P)Rs1A<=s/l<ts.97Ws,R,7s+C?&s+(,u
+q0i9ls*aoprHnS=s7ZKbs7?89s*aQhs*aooqg/9hs*F]iqfi!^s)S-Xs(hXIs().<s'G_0s&oA&
+s&/kms%NGcs%35[s$QfOo019Fq>[RGJcF-tqZ,%DrrAkpJ,~>
+JcF-trr at WMhuE@ur;_Cto7$N8c[NnuJUXYKrVubDY<MtNs$?ZPs$crYs%<;cs%r_os&T/&s'5S3
+s'u(As(_RNs)A![s*+Kis*Xiqs+(-#s+C?,s,6o=s-3POs.01_s.fUjs/c7)s0_kgs/Q+#s/l=(
+s0)I-s0Ma6s1&*>s186Ds1nZPs2P#Zs2tAcs3:Ses2b5[s2G#Ss1\NGs1A0 at s1SHHs1eNJrP/BK
+s24`Qs2OrXs2tAbs3:Sis3Uens3p_ms4%(ss3L_fs24lMs1&*8s/l=!s.KC\s-<VGs,6o0s0;U2
+s1&*@s)S-Ws(hRJs(MFFs(;. at s(hXPs)S'[s*"Ees*F]mrI4Qjo7$Xdq0`3hs*=Wfs)\3Zs)%dN
+aaX'cXaYj$dJs(DdJs4HV#Pr~>
+JcF-trr at WMhuEAhr;_Dgo>^V+cc4#*J]=b1rVuc7jf8?]s/bsts0)I,s0;O.s0Vg7s1&*@s1SHH
+s1eTMs24lUs2Y/^s31Mgs3^kps3q"ts475&s4[M.s5!_3s53k7s5O(>s5s at Fs6BXNs6p!Xs7?9`
+s7H?_s7--Xs6]jNs5j:=s4dS)s3gqms2tA]qu6VFs2"`MmCrV5s1/0;s0D[-s/Q*ps.01Us,d8;
+s+LE%s*F]fs)A!Ss(MFCs'Yk2s&f;#s&&eks%<;\s$QfOq`b$Fs$cr[s%r_rs'5S5s(MFOs*+Kk
+s+LE2s-3PRs/,h#s1/0CqnMU6q0r at Ws1JBDs186>s0hs7s0Ma0s0)I)s/Q*ts/,aks.fUgs.KCa
+s.KCes/,gqs/c7's02I,s0D[3s0hs<s1A<Ds1SHIs2"`R]>j[HXi>qldJs(DdJs4HV#Pr~>
+JcF-trr at WMhuE@ur;_Cto7$N8c[NnuJUXYKrVubDKg,N's$m#\s%WMjs&T/(s'Pe:s(VLMs)A!Z
+s*"9grrE(Gs*aWjrHnQmqgSQps+13%s+p]8s-3PQs.fUps0Ma8s1SHLs2Y/`s3CYjs3Ueos4IA+
+s5!_5s5a4Es6]jVs7Q?crV?Kbs6fpMs5<q3s474qs2P)Rs1A<=s/l<ts.97Ws,R,7s+C?&s+(,u
+q0i9ls*aoprHnS=s7ZKbs7?89s*aQhs*aooqg/9hs*F]iqfi!^s)S-Xs(hXIs().<s'G_0s&oA&
+s&/kms%NGcs%35[s$QfOo019Fq>[RGJcF-tqZ,%DrrAkpJ,~>
+JcF-trr at WMhuE@ur;_Cto7$N8c[NnuJUXYKrVubDY<MtNs$?ZPs$crYs%<;cs%r_os&T/&s'5S3
+s'u(As(_RNs)A![s*+Kis*Xiqs+(-#s+C?,s,6o=s-3POs.01_s.fUjs/c7)s0_kgs/Q+#s/l=(
+s0)I-s0Ma6s1&*>s186Ds1nZPs2P#Zs2tAcs3:Ses2b5[s2G#Ss1\NGs1A0 at s1SHHs1eNJrP/BK
+s24`Qs2OrXs2tAbs3:Sis3Uens3p_ms4%(ss3L_fs24lMs1&*8s/l=!s.KC\s-<VGs,6o0s0;U2
+s1&*@s)S-Ws(hRJs(MFFs(;. at s(hXPs)S'[s*"Ees*F]mrI4Qjo7$Xdq0`3hs*=Wfs)\3Zs)%dN
+aaX'cXaYj$dJs(DdJs4HV#Pr~>
+JcF-trr at WMhuEAhr;_Dgo>^V+cc4#*J]=b1rVuc7jf8?]s/bsts0)I,s0;O.s0Vg7s1&*@s1SHH
+s1eTMs24lUs2Y/^s31Mgs3^kps3q"ts475&s4[M.s5!_3s53k7s5O(>s5s at Fs6BXNs6p!Xs7?9`
+s7H?_s7--Xs6]jNs5j:=s4dS)s3gqms2tA]qu6VFs2"`MmCrV5s1/0;s0D[-s/Q*ps.01Us,d8;
+s+LE%s*F]fs)A!Ss(MFCs'Yk2s&f;#s&&eks%<;\s$QfOq`b$Fs$cr[s%r_rs'5S5s(MFOs*+Kk
+s+LE2s-3PRs/,h#s1/0CqnMU6q0r at Ws1JBDs186>s0hs7s0Ma0s0)I)s/Q*ts/,aks.fUgs.KCa
+s.KCes/,gqs/c7's02I,s0D[3s0hs<s1A<Ds1SHIs2"`R]>j[HXi>qldJs(DdJs4HV#Pr~>
+JcF-trr at WMhuE4qqZ)1rq0r/>f7(=qJUXeOrVubDLHb`'s$ZlXs%NGhs&B#$s'G_7s(D at Is)7pY
+s*+KiqgSPFs*XQis*aijs*ap!s+^Q/s,-i7s,I&Bs-WhXs.o[rs0_m?s2+fVs3(Ghs475%s4RG+
+s4mY4s5X. at s60LLs7$'WqsOLOs6fpVs7?9_s6fpNs5X.9s474rs2k;Zs1\NBs0)I%s.]O]s,m><
+s+13"s*jurrI"Wls*F]js*4Kds763Zs6p!Us*+Khs*aQhs*XclrI"Wns*Xcls*=Whs*+Kds)\3Y
+s(hXJs(24>s'Pe3s'#G's&8qns%WMes%35[s$H`MofgKHq>[FCJcFR+q#JV<rrAkpJ,~>
+JcF-trr at WMhuE4qqZ)1rq0r/>f7(=qJUXeOrVubDY<MtOs$H`Qs$crYs%EAes&&eps&T/'s'>Y5
+s().Cs(q^Rs)S-_s*F]ns+13&s+UK-s+p]6s,d8Gs-`nXs.TIhs/H%!s0D[5s1A:ss/c1%s0)I,
+s0D[4s186Bs186 at s1&*@s1SHJs24lTs2P)[s2tA^rPefTs1nZIs186 at s0hs7rNlO2s0_[2s0_m6
+qm6=0s1&*ArP8HMs2=rVs2Y/\s3(Ads3:Sfs3CYgs2tA_s2P)Vs1SHBs0Ma.s/H$ns.97Xs-*JC
+s+gWOs/H%"s02NBs(hXIs(24?s'bq8s'P_6s'u(@s(_RNs)J'[s)n?bs*+Kgs*F?do7$Xds*X]l
+s*Ocks)n?^s)7pRaaX'cWIBEuh>d9NbQ%SBV#Pr~>
+JcF-trr at WMhuE5dqZ)2eq8W71f>bG&J]=n5rVuc7jf8?]s/bsts0)I,s0;O.s0Vg8s1/0As1\NJ
+s1nZOs2=rWs2b5as3CYlrRCers4@;(s4dS0s5*e6s5F";s5a4Bs60LJs6TdSs7--\rUg-\s7--X
+s6]jOs5s@@s5!_-s3q"os2tA\s2"U3s*t'`o=k7<s1A<@s0_m4s/Z0us.o[gs.01Us,d8;s+C?!
+s*+K`s)%dKs'l"7s',M)s&B"os%NG`s$crSmlpb9s$cr[s%r_qs'5S6s(VLOs*+Kms+gW8s-Wh\
+s/c7/l+ZtBrP&<Fs1JBCs1/0=s0hs5s02O,s/Z1!s/5mns.]OerLa+]rLj1cs/,gps/Q+"rN6+&
+s02O0s0hs=s1A<Ds1SHIs2+fT]uKmJWQ'Mhh>d9NbQ%SBV#Pr~>
+JcF-trr at WMhuE4qqZ)1rq0r/>f7(=qJUXeOrVubDLHb`'s$ZlXs%NGhs&B#$s'G_7s(D at Is)7pY
+s*+KiqgSPFs*XQis*aijs*ap!s+^Q/s,-i7s,I&Bs-WhXs.o[rs0_m?s2+fVs3(Ghs475%s4RG+
+s4mY4s5X. at s60LLs7$'WqsOLOs6fpVs7?9_s6fpNs5X.9s474rs2k;Zs1\NBs0)I%s.]O]s,m><
+s+13"s*jurrI"Wls*F]js*4Kds763Zs6p!Us*+Khs*aQhs*XclrI"Wns*Xcls*=Whs*+Kds)\3Y
+s(hXJs(24>s'Pe3s'#G's&8qns%WMes%35[s$H`MofgKHq>[FCJcFR+q#JV<rrAkpJ,~>
+JcF-trr at WMhuE4qqZ)1rq0r/>f7(=qJUXeOrVubDY<MtOs$H`Qs$crYs%EAes&&eps&T/'s'>Y5
+s().Cs(q^Rs)S-_s*F]ns+13&s+UK-s+p]6s,d8Gs-`nXs.TIhs/H%!s0D[5s1A:ss/c1%s0)I,
+s0D[4s186Bs186 at s1&*@s1SHJs24lTs2P)[s2tA^rPefTs1nZIs186 at s0hs7rNlO2s0_[2s0_m6
+qm6=0s1&*ArP8HMs2=rVs2Y/\s3(Ads3:Sfs3CYgs2tA_s2P)Vs1SHBs0Ma.s/H$ns.97Xs-*JC
+s+gWOs/H%"s02NBs(hXIs(24?s'bq8s'P_6s'u(@s(_RNs)J'[s)n?bs*+Kgs*F?do7$Xds*X]l
+s*Ocks)n?^s)7pRaaX'cWIBEuh>d9NbQ%SBV#Pr~>
+JcF-trr at WMhuE5dqZ)2eq8W71f>bG&J]=n5rVuc7jf8?]s/bsts0)I,s0;O.s0Vg8s1/0As1\NJ
+s1nZOs2=rWs2b5as3CYlrRCers4@;(s4dS0s5*e6s5F";s5a4Bs60LJs6TdSs7--\rUg-\s7--X
+s6]jOs5s@@s5!_-s3q"os2tA\s2"U3s*t'`o=k7<s1A<@s0_m4s/Z0us.o[gs.01Us,d8;s+C?!
+s*+K`s)%dKs'l"7s',M)s&B"os%NG`s$crSmlpb9s$cr[s%r_qs'5S6s(VLOs*+Kms+gW8s-Wh\
+s/c7/l+ZtBrP&<Fs1JBCs1/0=s0hs5s02O,s/Z1!s/5mns.]OerLa+]rLj1cs/,gps/Q+"rN6+&
+s02O0s0hs=s1A<Ds1SHIs2+fT]uKmJWQ'Mhh>d9NbQ%SBV#Pr~>
+JcF-trr at WMhuE"kr;_CtrI4SBhgVamJUXqSrVubDM*Cr(s$QfVs%EAfs&8r!s'5S4s(24Fs).jW
+s*"Egs*acnrrE(Iq0r?os*juqs+(-'s,$c9s,[2Ds-E\Os.01`s/5n!s0hsAs2P)_s3Ueqs4RG0
+s5<q:s5a4Bs60LKs6BXJs6'FEs5j4?qr at _=s60LKs6]jTs6BXGs53k/s3gqls2Y/Ts186;s/l<s
+s.'+Rs,I&4s*aomrHS9bs*"EbrH/#(s6BXKs)e9cs*O?dqgJ?js*aops*F]jrHS?ds)\3Ys(q^L
+s(;:@s'bq6s'#G(s&8qos%`Ses%*/Ys$H`MpHH]Jq>[:?JcG!7q#J>4rrAkpJ,~>
+JcF-trr at WMhuE"kr;_CtrI4SBhgVamJUXqSrVubDY<MtOs$H`Rs$m#[s%EAes&&eqs&]5)s'G_7
+s(24Es)%dVs*"Ehs*juus+UK/s,-i7s,I&@s-<VQs.97bs/,gqs/l=*s1&*As2"_*qlg%(rNcI3
+s186 at s1&*<s1&*@s186Bs1\NKs24lTs2P)Ws2+fRs2+fMs180=s0_m4s/uC'rN#sus/H$qs.oUf
+rLs7as.]Ojs/Q+%s0D[8s1A<Ds1SHJs24fTrPefVs2G#Us1nZLs1JBDs1JBBs0Vg0s/>sks.'+U
+s-!D>rLX%_s/#a8s(hXHs'Yk3s'#G*s&f;*s'>Y2s'l">s(VLLs)7pWs)S-\s)e9as*FKgrI+9d
+omQjes*4Qds)J'VaaX'cV1+!ql2UPZ_uK`:V#Pr~>
+JcF-trr at WMhuE#^r;_DgrPn[5ho;k"J]>%9rVuc7jf8?]s/bsts0)I,s0;U0s0Ma5s0r$>s1JBG
+s1nZOs2=rWs2Y/]s3:Sjs3pqtrR_)%s4[M.s5*e5s5F"<s5a4Bs60LJs6TdRs7$'ZrUg-]s7--X
+s6]jPs6'FBs5*e0s4..rs31M`s2+fMqu6VFpV-[?s186>s0Ma1s/uC&s/>sjs-s%Ts-3PFs,$c.
+s*Xihs)7pPs(24;s'#G&s&&eks%<;]s$QfNj$*K2s%35es&T/)s'l"Cs)S-cs+:9/s-<VVs/H%&
+s0hs?n%SUHq7cmBs1JBCs1/0;s0D[/s/l=%s/H$qs.fUfs.KCas.97_s.97_s.]Ohs/#ans/>ss
+s/Z1%s02O0s0hs=s1A<Ds1\NKs24lU^W-*LV8e)dl2UPZ_uK`:V#Pr~>
+JcF-trr at WMhuE"kr;_CtrI4SBhgVamJUXqSrVubDM*Cr(s$QfVs%EAfs&8r!s'5S4s(24Fs).jW
+s*"Egs*acnrrE(Iq0r?os*juqs+(-'s,$c9s,[2Ds-E\Os.01`s/5n!s0hsAs2P)_s3Ueqs4RG0
+s5<q:s5a4Bs60LKs6BXJs6'FEs5j4?qr at _=s60LKs6]jTs6BXGs53k/s3gqls2Y/Ts186;s/l<s
+s.'+Rs,I&4s*aomrHS9bs*"EbrH/#(s6BXKs)e9cs*O?dqgJ?js*aops*F]jrHS?ds)\3Ys(q^L
+s(;:@s'bq6s'#G(s&8qos%`Ses%*/Ys$H`MpHH]Jq>[:?JcG!7q#J>4rrAkpJ,~>
+JcF-trr at WMhuE"kr;_CtrI4SBhgVamJUXqSrVubDY<MtOs$H`Rs$m#[s%EAes&&eqs&]5)s'G_7
+s(24Es)%dVs*"Ehs*juus+UK/s,-i7s,I&@s-<VQs.97bs/,gqs/l=*s1&*As2"_*qlg%(rNcI3
+s186 at s1&*<s1&*@s186Bs1\NKs24lTs2P)Ws2+fRs2+fMs180=s0_m4s/uC'rN#sus/H$qs.oUf
+rLs7as.]Ojs/Q+%s0D[8s1A<Ds1SHJs24fTrPefVs2G#Us1nZLs1JBDs1JBBs0Vg0s/>sks.'+U
+s-!D>rLX%_s/#a8s(hXHs'Yk3s'#G*s&f;*s'>Y2s'l">s(VLLs)7pWs)S-\s)e9as*FKgrI+9d
+omQjes*4Qds)J'VaaX'cV1+!ql2UPZ_uK`:V#Pr~>
+JcF-trr at WMhuE#^r;_DgrPn[5ho;k"J]>%9rVuc7jf8?]s/bsts0)I,s0;U0s0Ma5s0r$>s1JBG
+s1nZOs2=rWs2Y/]s3:Sjs3pqtrR_)%s4[M.s5*e5s5F"<s5a4Bs60LJs6TdRs7$'ZrUg-]s7--X
+s6]jPs6'FBs5*e0s4..rs31M`s2+fMqu6VFpV-[?s186>s0Ma1s/uC&s/>sjs-s%Ts-3PFs,$c.
+s*Xihs)7pPs(24;s'#G&s&&eks%<;]s$QfNj$*K2s%35es&T/)s'l"Cs)S-cs+:9/s-<VVs/H%&
+s0hs?n%SUHq7cmBs1JBCs1/0;s0D[/s/l=%s/H$qs.fUfs.KCas.97_s.97_s.]Ohs/#ans/>ss
+s/Z1%s02O0s0hs=s1A<Ds1\NKs24lU^W-*LV8e)dl2UPZ_uK`:V#Pr~>
+JcF-trr at WMhuDkgr;_Ctq>]Q*V*9HZ[sn;UqgOAcs$?ZRs%35bs&&ess'#G0s().Ds)%dUs)e9c
+s*XWkrrE(Js*t'"s+C?+s+UK)s+13*s,I&@rKdJQs.B=cs/,gss0;U5s1nZUs3Uers4RG/s5X.B
+s69LJs6BXHs5O(:s5*e3s4dS-qq;#%s4RG,s5*e6s5O(?s60LKs6'F at s4dS)s3Uegs2=rPs1&*5
+s/5mgs-NbHs+^Q&s*+Kcs)e9^s)S-ZrG_etrT4(?s)S-^s*4QjkC3GZs*Oclqg&3cs)\3Zs)%dN
+s(D at Cs'l"8s',M)s&B"qs%`Ses%*/Xs$?BCaaX'cTmhRmoDe[f]Dqm2V#Pr~>
+JcF-trr at WMhuDkgr;_Ctq>]Q*V*9HZ[sn;UqgP_4s$6TNs$ZlVs%35as%iYms&B##s'5S3s().C
+s(q^Ss*"Egs*t'#s+C?-s,I&>s,m>Es-E\Rs.B=ds/,grs/u=+s1\NMs2Y.6rNH1&s0)I-s0hs<
+s0hs8s0hs<s1A<BrO`*Cs1eTMs2+fOs2"`Ps2"`Ks1/0>s0r$8s0;U*s/,ggs-itTs-E\Ls,m8A
+rK$u=s,[2Ds-WhUs.KChs/c7+s0_m:s1JBGs1eNHs1eBDs1J6?s1/0:s/l<ts.B=[s-<VEs-NbN
+s-E\Qs)J'Ts(;:=s&oA$s&/kos&B#!s&oA,s'Yk:s(;:Fs)%dRs)7pVs)S-_s*FKgrI+?fqgJ?j
+s*aons*+Kas)?)/q>[.;JcG?AqZ+8.rrAkpJ,~>
+JcF-trr at WMhuDlZr;_Dgq>]QrV5f*d\&SCHqo7`ts/Z1$pTFP"s02O.s0D[3s0_m:s186Cs1eTM
+s24lUs2Y/\s2tAes3gqtrRh)%s4[M-s5!_4s5<q:s5a4Bs60LJs6TdRs7$'Ys7?9`s7H?^s7$'U
+s6K^Ks5a4<s4dS*s3gqls2k;Zs1eTJqu6VFs1\NHs1A<As0r$9s0Ma0s/H$qs.o[gs.01Us,[2;
+s+gW,s*Xiis)7pNs'l"5s&]4us%WMas$ZlQf094%s%35ds&K)(s(24Is)n?js+p]<s.'+as/H%%
+s0hs?o=k$LotLI>s1JBAs0_m4s0)I)s/Z0us/#ais.TIcs.B=as.97]s.97_s.TIes.fUjs/>st
+s/l=*s0Ma7s186Bs1SHIs2"`Q^W-*LTuMZ`oDe[f]Dqm2V#Pr~>
+JcF-trr at WMhuDkgr;_Ctq>]Q*V*9HZ[sn;UqgOAcs$?ZRs%35bs&&ess'#G0s().Ds)%dUs)e9c
+s*XWkrrE(Js*t'"s+C?+s+UK)s+13*s,I&@rKdJQs.B=cs/,gss0;U5s1nZUs3Uers4RG/s5X.B
+s69LJs6BXHs5O(:s5*e3s4dS-qq;#%s4RG,s5*e6s5O(?s60LKs6'F at s4dS)s3Uegs2=rPs1&*5
+s/5mgs-NbHs+^Q&s*+Kcs)e9^s)S-ZrG_etrT4(?s)S-^s*4QjkC3GZs*Oclqg&3cs)\3Zs)%dN
+s(D at Cs'l"8s',M)s&B"qs%`Ses%*/Xs$?BCaaX'cTmhRmoDe[f]Dqm2V#Pr~>
+JcF-trr at WMhuDkgr;_Ctq>]Q*V*9HZ[sn;UqgP_4s$6TNs$ZlVs%35as%iYms&B##s'5S3s().C
+s(q^Ss*"Egs*t'#s+C?-s,I&>s,m>Es-E\Rs.B=ds/,grs/u=+s1\NMs2Y.6rNH1&s0)I-s0hs<
+s0hs8s0hs<s1A<BrO`*Cs1eTMs2+fOs2"`Ps2"`Ks1/0>s0r$8s0;U*s/,ggs-itTs-E\Ls,m8A
+rK$u=s,[2Ds-WhUs.KChs/c7+s0_m:s1JBGs1eNHs1eBDs1J6?s1/0:s/l<ts.B=[s-<VEs-NbN
+s-E\Qs)J'Ts(;:=s&oA$s&/kos&B#!s&oA,s'Yk:s(;:Fs)%dRs)7pVs)S-_s*FKgrI+?fqgJ?j
+s*aons*+Kas)?)/q>[.;JcG?AqZ+8.rrAkpJ,~>
+JcF-trr at WMhuDlZr;_Dgq>]QrV5f*d\&SCHqo7`ts/Z1$pTFP"s02O.s0D[3s0_m:s186Cs1eTM
+s24lUs2Y/\s2tAes3gqtrRh)%s4[M-s5!_4s5<q:s5a4Bs60LJs6TdRs7$'Ys7?9`s7H?^s7$'U
+s6K^Ks5a4<s4dS*s3gqls2k;Zs1eTJqu6VFs1\NHs1A<As0r$9s0Ma0s/H$qs.o[gs.01Us,[2;
+s+gW,s*Xiis)7pNs'l"5s&]4us%WMas$ZlQf094%s%35ds&K)(s(24Is)n?js+p]<s.'+as/H%%
+s0hs?o=k$LotLI>s1JBAs0_m4s0)I)s/Z0us/#ais.TIcs.B=as.97]s.97_s.TIes.fUjs/>st
+s/l=*s0Ma7s186Bs1SHIs2"`Q^W-*LTuMZ`oDe[f]Dqm2V#Pr~>
+JcF-trr at WMhuD_cr;_P#q>]i2R6H1N]70_YqgOGes$-NMs%!)^s%iYos&oA-s'l"@s(hXQs)\3a
+s*OWls*t'!rr`:Qs+LE-s,6o:s,-i3s+UK3s-3POs.01]s.fUls/uC-s0hs>s2"`Ws3^l#s53k:
+s60FJs60LEs5X.=s53k2s475"s3gqps3UMcs3^kqs475&s4[M/s5F"=s6'FCs53k0s4%(qs2tAY
+s1868s/H$ms-`nKs+UK%s*=WcrGV^RrGDSjs5*_3s)7pYs*"Efs*Xiqs*aops*Ocls*O?ds*Xin
+qg/9hs*+Kbs)J'Vs(q^Ls(;:@s'Pe1s&f;#s%r_is%<;]s$ZlPq*)oLq>Zq5JcGNG[K$7,V#Pr~>
+JcF-trr at WMhuD_cr;_P#q>]i2R6H1N]70_YqgP_4s$6TNs$ZlWs%<;bs%iYms&K)%s'>Y7s(D at I
+s)7pYs*=Wns+C?*s+gW4s,d8Fs-E\Os-s%\s.fUls/Z1's0D[4s0MaDs2b5bs&8s$s/uC(s/Z1$
+s02O2s1/0<s0Ma6s1/0Bqn)m at rP&0Ds1nZLs1JBBs1&*7s/c6ts.B=Ys-!DAs,$c/s+13"s*jin
+s*Xips+13(s,$c9s-3PPs.KChs0)I0s0r$<s1/0As1S6Bs1JBCs1/0 at s1&*;s0;U)s.fUcs-`nM
+s,d8 at s,?u<s)S-Vs(;:<s&f;!s%iYhs%iYnrDrr$s'5S2s'u(@s(_RLs(q^Qs)S-_qg89hrI+!\
+s*aops*=Wes)Q51q>Zq5JcGNG[K$7,V#Pr~>
+JcF-trr at WMhuD`Vr;_Pkq>]j%RAthX]>jgLqo7`ts/Z1$pTFP"s0;U0s0Ma5s0hs;s186Ds1eTM
+s2=rXs2b5^s3(Ggs3q#"rS%5)rS7G0s5<q:s5a4Bs69RKs6TdRs7$'Zs7?-[s763Ys6TdLs5j:>
+s5!_-s4%(ps2tA]s2"ZJs8N&ss8;nFs186 at s0hs5s02O+s/c7"s.]O`s-itSs-*JAs+UK$s*=Wf
+s)7pNs'l"4s&K(ps%<;[s$6TKcT_ at qs%*/cs&]5-s(MFPs*Od"s,[2Gs.'+`s/c7+s0hs>pV-HP
+n\5%8s1&*:s0D[/s/l=$s/5mms.]Ods.B=as.B=_rL<hWs.01^s.]Ois/5mss/l=*s0Vg8s186C
+s1SHIs2"`R_8c<NS&U$Zq#Ii&rrAkpJ,~>
+JcF-trr at WMhuD_cr;_P#q>]i2R6H1N]70_YqgOGes$-NMs%!)^s%iYos&oA-s'l"@s(hXQs)\3a
+s*OWls*t'!rr`:Qs+LE-s,6o:s,-i3s+UK3s-3POs.01]s.fUls/uC-s0hs>s2"`Ws3^l#s53k:
+s60FJs60LEs5X.=s53k2s475"s3gqps3UMcs3^kqs475&s4[M/s5F"=s6'FCs53k0s4%(qs2tAY
+s1868s/H$ms-`nKs+UK%s*=WcrGV^RrGDSjs5*_3s)7pYs*"Efs*Xiqs*aops*Ocls*O?ds*Xin
+qg/9hs*+Kbs)J'Vs(q^Ls(;:@s'Pe1s&f;#s%r_is%<;]s$ZlPq*)oLq>Zq5JcGNG[K$7,V#Pr~>
+JcF-trr at WMhuD_cr;_P#q>]i2R6H1N]70_YqgP_4s$6TNs$ZlWs%<;bs%iYms&K)%s'>Y7s(D at I
+s)7pYs*=Wns+C?*s+gW4s,d8Fs-E\Os-s%\s.fUls/Z1's0D[4s0MaDs2b5bs&8s$s/uC(s/Z1$
+s02O2s1/0<s0Ma6s1/0Bqn)m at rP&0Ds1nZLs1JBBs1&*7s/c6ts.B=Ys-!DAs,$c/s+13"s*jin
+s*Xips+13(s,$c9s-3PPs.KChs0)I0s0r$<s1/0As1S6Bs1JBCs1/0 at s1&*;s0;U)s.fUcs-`nM
+s,d8 at s,?u<s)S-Vs(;:<s&f;!s%iYhs%iYnrDrr$s'5S2s'u(@s(_RLs(q^Qs)S-_qg89hrI+!\
+s*aops*=Wes)Q51q>Zq5JcGNG[K$7,V#Pr~>
+JcF-trr at WMhuD`Vr;_Pkq>]j%RAthX]>jgLqo7`ts/Z1$pTFP"s0;U0s0Ma5s0hs;s186Ds1eTM
+s2=rXs2b5^s3(Ggs3q#"rS%5)rS7G0s5<q:s5a4Bs69RKs6TdRs7$'Zs7?-[s763Ys6TdLs5j:>
+s5!_-s4%(ps2tA]s2"ZJs8N&ss8;nFs186 at s0hs5s02O+s/c7"s.]O`s-itSs-*JAs+UK$s*=Wf
+s)7pNs'l"4s&K(ps%<;[s$6TKcT_ at qs%*/cs&]5-s(MFPs*Od"s,[2Gs.'+`s/c7+s0hs>pV-HP
+n\5%8s1&*:s0D[/s/l=$s/5mms.]Ods.B=as.B=_rL<hWs.01^s.]Ois/5mss/l=*s0Vg8s186C
+s1SHIs2"`R_8c<NS&U$Zq#Ii&rrAkpJ,~>
+JcF-trr at WMhuDS_r;_\'q>^,:M`u]@_1)@_qgOMgs$-NLs$ZlXs%WMjs&T/(s'Yk<s(_ROs)S-_
+s*=Wms*juts+(-%s+UIYs+^Q0s,?o>s,R,;s,-i=s-it\s/#ams/Q+'s1&*Cs2+fVs31Mls4dS6
+pZ;G5s5!_1s4[M)s3q"os31Mcs2Y/Yqo&NPs2=rWs2b5`s3:Sjs3q#"s4[M0s5Eq<s5<q3s474p
+s2=rLs0Ma,s.fU^s,I&5s+12ss)\3Xs(_LHs475%s4IA*s)%dTs)\3`s*=Wjs*=QfrHJ9gomZph
+s*X]jrI"Wis)n?^s)A!Ts(_RHs'u(9s',M)s&8qos%WMbs$m#Us$6HFaaX'cQ[Xqoq#IPsrrAkp
+J,~>
+JcF-trr at WMhuDS_r;_\'q>^,:M`u]@_1)@_qgP_4s$6TNs$ZlWs%<;cs%r_os&T/'s'G_:s(_RO
+s)S-`s*Xius+^Q1s,-i;s-3PMs-s%Ys.KCfs/>t!s0)I/s0r$:s0_mLs3CYms&f<*s0)I)s/H%!
+s02O1s1&*:s0Vg7s17s;pV-[Bs1A<<s/uC$s.fUds-`nMs,6o1s+(,ss*4Qbs).jQrG2 at Hs(hXQ
+s)\3as*Xius+p]7s-3PSs/5n%s0r$=s1A<Eq7cmAs186 at s186?s0_m3s/l=!s.TI`s-<V at s+gW.
+s+C>ls(q^Is'Yk2s&B"qs%iYks&&_ms&8qus&oA-s'Yk;s(D at Fs(_ROs)S-`qg89hs*a3^rI+]m
+s*+KbaaX'cQ[Xqoq#IPsrrAkpJ,~>
+JcF-trr at WMhuDTRr;_\oq>^--MlM?J_8cHRqo7`ts/Z1%rN?%$s02O/s0Ma4s0hs:s1&*?s1SHI
+s2+fSs2Y/]s2tAds3Ueqs4I;*rS at M1s53k7s5O(?s6'FHs6K^Os6fpVs763^rUp-]s763Ys6TdK
+s5O(8s4[M's3^kjs2Y/WrP&<Fs8Duos7lV>s0hs8s0D[+s/H$rs/#ais-s%Rs,d8?s,$c-s*F]d
+s(q^Ls'l"4s&K(os%!)Xs$QfQs$6TKb<Gqms%<;hs'#G5s).j]s+:9-s,[2Hs.]Ols/c7*s0r$?
+qnDlTn\5%9s186?s0_m4s0)I(s/H$qs.fUfs.KCcs.B=^s-itSs-WhSs-s%[s.TIgs/5mts/uC-
+s0_m:s186Bs1SHIs2+fS_oDNPQc>$bq#IPsrrAkpJ,~>
+JcF-trr at WMhuDS_r;_\'q>^,:M`u]@_1)@_qgOMgs$-NLs$ZlXs%WMjs&T/(s'Yk<s(_ROs)S-_
+s*=Wms*juts+(-%s+UIYs+^Q0s,?o>s,R,;s,-i=s-it\s/#ams/Q+'s1&*Cs2+fVs31Mls4dS6
+pZ;G5s5!_1s4[M)s3q"os31Mcs2Y/Yqo&NPs2=rWs2b5`s3:Sjs3q#"s4[M0s5Eq<s5<q3s474p
+s2=rLs0Ma,s.fU^s,I&5s+12ss)\3Xs(_LHs475%s4IA*s)%dTs)\3`s*=Wjs*=QfrHJ9gomZph
+s*X]jrI"Wis)n?^s)A!Ts(_RHs'u(9s',M)s&8qos%WMbs$m#Us$6HFaaX'cQ[Xqoq#IPsrrAkp
+J,~>
+JcF-trr at WMhuDS_r;_\'q>^,:M`u]@_1)@_qgP_4s$6TNs$ZlWs%<;cs%r_os&T/'s'G_:s(_RO
+s)S-`s*Xius+^Q1s,-i;s-3PMs-s%Ys.KCfs/>t!s0)I/s0r$:s0_mLs3CYms&f<*s0)I)s/H%!
+s02O1s1&*:s0Vg7s17s;pV-[Bs1A<<s/uC$s.fUds-`nMs,6o1s+(,ss*4Qbs).jQrG2 at Hs(hXQ
+s)\3as*Xius+p]7s-3PSs/5n%s0r$=s1A<Eq7cmAs186 at s186?s0_m3s/l=!s.TI`s-<V at s+gW.
+s+C>ls(q^Is'Yk2s&B"qs%iYks&&_ms&8qus&oA-s'Yk;s(D at Fs(_ROs)S-`qg89hs*a3^rI+]m
+s*+KbaaX'cQ[Xqoq#IPsrrAkpJ,~>
+JcF-trr at WMhuDTRr;_\oq>^--MlM?J_8cHRqo7`ts/Z1%rN?%$s02O/s0Ma4s0hs:s1&*?s1SHI
+s2+fSs2Y/]s2tAds3Ueqs4I;*rS at M1s53k7s5O(?s6'FHs6K^Os6fpVs763^rUp-]s763Ys6TdK
+s5O(8s4[M's3^kjs2Y/WrP&<Fs8Duos7lV>s0hs8s0D[+s/H$rs/#ais-s%Rs,d8?s,$c-s*F]d
+s(q^Ls'l"4s&K(os%!)Xs$QfQs$6TKb<Gqms%<;hs'#G5s).j]s+:9-s,[2Hs.]Ols/c7*s0r$?
+qnDlTn\5%9s186?s0_m4s0)I(s/H$qs.fUfs.KCcs.B=^s-itSs-WhSs-s%[s.TIgs/5mts/uC-
+s0_m:s186Bs1SHIs2+fS_oDNPQc>$bq#IPsrrAkpJ,~>
+JcF-trr at WMhuDG[r;_h+q>^DBJNj)tJUYRerVubDNB[A-s$H`Ss%<;ds&8r"s'>Y7s(MFKs)A![
+s*4QlrIFp!s+:9)s,-gcs,-i8s,d8Gs-E\Ks,d8 at s-<VUs/,ass0Ma:s2+fXs3CYns4IA+s5!_5
+s5!M-s4RG&s4%(ss3Ueis2b5Zs2+fNs1SHDq76O<s1\NLs24lUs2tAfs3q#"s4[M0s5X. at s6'FA
+s4I at ss2P)Ps0hs0s.TIXs,R,9s+C>rs)S-Ws(VLFs3L_ls3gqss(_RNs)A!Zs)n?cs*"Ebs)e9^
+s)e9cs*XKgs*aclrI+]ns*=Wfs)\3Zs)%dNs(;:?s'G_/s&T.ts%iYgs%35Zs$H`MrBA>Pq>ZY-
+QiHp_V>pPqV#Pr~>
+JcF-trr at WMhuDG[r;_h+q>^DBJNj)tJUYRerVubDY<MtOs$H`Ss%*/_s%WMis&8r!s',M1s(;:J
+s)J']s*F]ps+LE/s,?u<s-!DKs-s%[s.TIhs/H%#s0;U3s1/0 at s1/0>s3gqts4 at 9Vs0;U.s/uC'
+s/l=*s0Ma7s0hs:s1&*?s1SHFqn;sBs1JB at s0Ma/s/Z0qs.B=Zs-3PEs,6o2s*juls)\3Ys(q^J
+s'l"7s',M+rE0)&s'5S4s(24Fs)A!^s*ap%s,d8Ls.fUps0Vg<s1S6Bs1JBDrOW$<s0Vg1s/uC$
+s.fUcs-`n=s+(&ss*"E^s(hXGs'Pe/s&8qos&/eos%r_js%r_os&T/'s'G_7s().As(_ROs)\3a
+s*FWjrI"Wnm=,"^s*Xils)uM5q>ZY-QiHp_V>pPqV#Pr~>
+JcF-trr at WMhuDHNr;_hsq>^E5JZAaMJ]>[KrVuc7jf8?]s/c1&qlp+*s0Ma4s0_m9s1&*>s186D
+s1eTNs2=rXs2tAbs3CYls4./&s5!_3s53k7s5F";s5X. at s60LJs6TdRs6p!Ws763^s7ZKes7ZKc
+s7H?^s6p!Rs5j:>s4mY+s3gqms2k;Zs1eNGs1JC0s7u]es)n at Is0;U,s/>sms.KC`s-s%Qs,R,7
+s+C?$s*4Q_s(VLBs'5S(s%r_hs%35[s$crTs$H`Ns$+[js$-NMs$cr^s&]5/s(hXWs*Xius,I&G
+s.97bs/5n$s0Vg9s1A<Fq0qkJs1JBCs1&*;s0Vg2s/uC&s/>sos.]Ics.B=]s-itSs-<VMs-`nW
+s.B=cs/#aps/c7)s0Ma6s1&*>s1A<Es1nZOs2Dssq>ZYuQiHp_V>pPqV#Pr~>
+JcF-trr at WMhuDG[r;_h+q>^DBJNj)tJUYRerVubDNB[A-s$H`Ss%<;ds&8r"s'>Y7s(MFKs)A![
+s*4QlrIFp!s+:9)s,-gcs,-i8s,d8Gs-E\Ks,d8 at s-<VUs/,ass0Ma:s2+fXs3CYns4IA+s5!_5
+s5!M-s4RG&s4%(ss3Ueis2b5Zs2+fNs1SHDq76O<s1\NLs24lUs2tAfs3q#"s4[M0s5X. at s6'FA
+s4I at ss2P)Ps0hs0s.TIXs,R,9s+C>rs)S-Ws(VLFs3L_ls3gqss(_RNs)A!Zs)n?cs*"Ebs)e9^
+s)e9cs*XKgs*aclrI+]ns*=Wfs)\3Zs)%dNs(;:?s'G_/s&T.ts%iYgs%35Zs$H`MrBA>Pq>ZY-
+QiHp_V>pPqV#Pr~>
+JcF-trr at WMhuDG[r;_h+q>^DBJNj)tJUYRerVubDY<MtOs$H`Ss%*/_s%WMis&8r!s',M1s(;:J
+s)J']s*F]ps+LE/s,?u<s-!DKs-s%[s.TIhs/H%#s0;U3s1/0 at s1/0>s3gqts4 at 9Vs0;U.s/uC'
+s/l=*s0Ma7s0hs:s1&*?s1SHFqn;sBs1JB at s0Ma/s/Z0qs.B=Zs-3PEs,6o2s*juls)\3Ys(q^J
+s'l"7s',M+rE0)&s'5S4s(24Fs)A!^s*ap%s,d8Ls.fUps0Vg<s1S6Bs1JBDrOW$<s0Vg1s/uC$
+s.fUcs-`n=s+(&ss*"E^s(hXGs'Pe/s&8qos&/eos%r_js%r_os&T/'s'G_7s().As(_ROs)\3a
+s*FWjrI"Wnm=,"^s*Xils)uM5q>ZY-QiHp_V>pPqV#Pr~>
+JcF-trr at WMhuDHNr;_hsq>^E5JZAaMJ]>[KrVuc7jf8?]s/c1&qlp+*s0Ma4s0_m9s1&*>s186D
+s1eTNs2=rXs2tAbs3CYls4./&s5!_3s53k7s5F";s5X. at s60LJs6TdRs6p!Ws763^s7ZKes7ZKc
+s7H?^s6p!Rs5j:>s4mY+s3gqms2k;Zs1eNGs1JC0s7u]es)n at Is0;U,s/>sms.KC`s-s%Qs,R,7
+s+C?$s*4Q_s(VLBs'5S(s%r_hs%35[s$crTs$H`Ns$+[js$-NMs$cr^s&]5/s(hXWs*Xius,I&G
+s.97bs/5n$s0Vg9s1A<Fq0qkJs1JBCs1&*;s0Vg2s/uC&s/>sos.]Ics.B=]s-itSs-<VMs-`nW
+s.B=cs/#aps/c7)s0Ma6s1&*>s1A<Es1nZOs2Dssq>ZYuQiHp_V>pPqV#Pr~>
+JcF-trr at WMhuD;WqZ)h/qu?\FJNiflJUY^irVubDO$<S.s$?ZQs%!)^s%r_qs'#G0s(24Fs)7pY
+s*+Kis+('"s+C?)s+gW5rt>?ls,d8Fs-E\Os-WhNs-!DNs.]Oos0Ma5s1JBMs31Mis3q"ts4@;)
+s4mY3s4dA$s3q"os3:Ses2b5Zs2+fNs1A<@s0_m5s0;U-s/uC*s0;U2s0r$?s1\NNs2k;cs3^kr
+s4[M/s5<q;s5s at Bs4[M!s2Y/Ts0_m+s.01Ts,d89s*Xijs)\3Xs(MGTs3:Sjs3gp\s(VLLs)7pX
+s)\3\s)IpTs)e9ds*aQhqgJ?js*Xils*"E`s)7pRs(VLEs'bq5s&oA%s&/kls%EA_s$crSs$-NI
+aaX'cO+*l(q#I&errAkpJ,~>
+JcF-trr at WMhuD;WqZ)h/qu?\FJNiflJUY^irVubDY<MtOs$QfTs%*/_s%`Sks&B##s',M2s(D at L
+s)e9cs*ap!s+gW4s,d8Cs-E\Rs.97bs/,gss02O1s1/0Cs1nTHs1A<as4mY2s'l#6s0;U-s02O.
+s0D[4s0r$=rOW$As1\NHs1\NHs186=s02O)s/5mls.97Zs-<VGs,-i1s+(,ss*+K_s(_RGs'l"7
+s',M(s&/kms%EA_s$m#Ys%EAgs&T/*s().Es)A!_s+C?2s-3PRs/#aus0qg<rOi*@s0r$7s0;U.
+s/Z0rs.B=\q0r?js*"E]s(VLDs'>Y+s&/kqs&K(us%iYis%NGfs%r_ps&f;+s'Yk9s(;:Gs)7pY
+s*+KhrHnQlrI+-`rI+]ns*OcjaaX'cO+*l(q#I&errAkpJ,~>
+JcF-trr at WMhuD<JqZ)i"qu?]9JZAIEJ]>gOrVuc7jf8?]s/c7(s02C*s0Ma4s0_m8s1&*>s186B
+s1SHIs2+fSs2Y/^s31Mhs3gqus4[M0s5<q:s5X.?s5j:Cs60LKs6]jTs7--[s7?9_s7ZEds7cQe
+s7H?^s6fpPs5a4<s4dS(s3Uehs2P)Ts1SBDs1A=.s7lWcs)J(As/l=$s.o[es-`nRs-3PCs+gW)
+s*=Wes).jKs'Pe0s&B"rs%iYfs%*/Ys$ZlSs$H`Ns$+[js$-NMs$ZlVs%35hs'G_=s)7p^s+C?3
+s-3PNs.KCks/l=*s0Vg:q0qkJs1JBCs1&*<s0_m4s02O*s/Q*ss.oUfs.B=]s-itSs-3PKs-WhU
+s.97as.fUls/Q+%s0;U1s0_m9s1/0As1\NKs24lUa2[rTO2dspq#I&errAkpJ,~>
+JcF-trr at WMhuD;WqZ)h/qu?\FJNiflJUY^irVubDO$<S.s$?ZQs%!)^s%r_qs'#G0s(24Fs)7pY
+s*+Kis+('"s+C?)s+gW5rt>?ls,d8Fs-E\Os-WhNs-!DNs.]Oos0Ma5s1JBMs31Mis3q"ts4@;)
+s4mY3s4dA$s3q"os3:Ses2b5Zs2+fNs1A<@s0_m5s0;U-s/uC*s0;U2s0r$?s1\NNs2k;cs3^kr
+s4[M/s5<q;s5s at Bs4[M!s2Y/Ts0_m+s.01Ts,d89s*Xijs)\3Xs(MGTs3:Sjs3gp\s(VLLs)7pX
+s)\3\s)IpTs)e9ds*aQhqgJ?js*Xils*"E`s)7pRs(VLEs'bq5s&oA%s&/kls%EA_s$crSs$-NI
+aaX'cO+*l(q#I&errAkpJ,~>
+JcF-trr at WMhuD;WqZ)h/qu?\FJNiflJUY^irVubDY<MtOs$QfTs%*/_s%`Sks&B##s',M2s(D at L
+s)e9cs*ap!s+gW4s,d8Cs-E\Rs.97bs/,gss02O1s1/0Cs1nTHs1A<as4mY2s'l#6s0;U-s02O.
+s0D[4s0r$=rOW$As1\NHs1\NHs186=s02O)s/5mls.97Zs-<VGs,-i1s+(,ss*+K_s(_RGs'l"7
+s',M(s&/kms%EA_s$m#Ys%EAgs&T/*s().Es)A!_s+C?2s-3PRs/#aus0qg<rOi*@s0r$7s0;U.
+s/Z0rs.B=\q0r?js*"E]s(VLDs'>Y+s&/kqs&K(us%iYis%NGfs%r_ps&f;+s'Yk9s(;:Gs)7pY
+s*+KhrHnQlrI+-`rI+]ns*OcjaaX'cO+*l(q#I&errAkpJ,~>
+JcF-trr at WMhuD<JqZ)i"qu?]9JZAIEJ]>gOrVuc7jf8?]s/c7(s02C*s0Ma4s0_m8s1&*>s186B
+s1SHIs2+fSs2Y/^s31Mhs3gqus4[M0s5<q:s5X.?s5j:Cs60LKs6]jTs7--[s7?9_s7ZEds7cQe
+s7H?^s6fpPs5a4<s4dS(s3Uehs2P)Ts1SBDs1A=.s7lWcs)J(As/l=$s.o[es-`nRs-3PCs+gW)
+s*=Wes).jKs'Pe0s&B"rs%iYfs%*/Ys$ZlSs$H`Ns$+[js$-NMs$ZlVs%35hs'G_=s)7p^s+C?3
+s-3PNs.KCks/l=*s0Vg:q0qkJs1JBCs1&*<s0_m4s02O*s/Q*ss.oUfs.B=]s-itSs-3PKs-WhU
+s.97as.fUls/Q+%s0;U1s0_m9s1/0As1\NKs24lUa2[rTO2dspq#I&errAkpJ,~>
+JcF-trr at WMhuD)Qr;`77s$$7-JNiZhJUYjmrVubDOZre0s$?ZPs$crYs%WMks&]5*s'bq?s)%dU
+s)n?es*aots+C?)s+UK-s,$c9rtYQss-3PKs-W\Os-it]s/>t%s1&*Bs2+fVs3:Sks4./!s475'
+s4dS1s4[M's3gkns3CYes2Y/Ws2"`Ls1A<@s0Vg1s/uC'pT"7qs02O1s1&*Bs2+fUs2tAfs4./%
+s4[M/s5X.=s5*e0s3^kgs1SH;s/#aes-NbEs+12us*=Wes(q_Vs3(Gfs3U^Ws(VLLs).jUs)7pT
+s)%^Ns)J']s*EjWs*Ocjs)n?^s)7pQs(MFCs'Yk3s&oA%s&&eks%EA^s$ZlQs$"PRq>ZA%YQ+Cu
+QiI'cV#Pr~>
+JcF-trr at WMhuD)Qr;`77s$$7-JNiZhJUYjmrVubDY<MtOs$QfUs%35as%`Sks&B##s'5S3s(D at L
+s)n?gs+(-&s,$c9s-!DIs-`nYs.fUms/l=-s1&*As2"`Ss2=rRs1nZKs5<q;s5j8os0Ma2s0Ma5
+rO2a9s186Bs1JBFs1\NFs0r$8s02O*s/H$ks-s%Ts-*JCs,-i2s+(,rs)n?]s)%dMs().8s&f;$
+s&&eks%<;\s$QfNq`b$Es$ZlZs%r_ss'>Y7s(hXWs*k!%s,I&Es.B=hs/uC1s1SHHs1S<Bs1&*9
+s0Ma2s/l=!s.]Odq0r?ps*F]es).jMs'l"5s&T/!s&T/!s%iYhs%NGcs%NGgs&/kts'#G/s'l"?
+s(hXQs)\3bs*F]lrI"QlnUCFbs*Xins*De9q>ZA%YQ+CuQiI'cV#Pr~>
+JcF-trr at WMhuD*Dr;`8*s/Pn7JZA=AJ]>sSrVuc7jf8?]s/c7(s0;I,s0Vg6s0hs:s1/0 at s1A<D
+s1\NJs2+fSs2Y/^s3:Sjs4%)#s4dS2s5F">s5s at Es60LIs6K^Qs7$'Zs7H?as7ZKes7lWjs7u]i
+s7cQds763Ws60LCs5*e/s3q"ms2b5Xs1eTIrO`*@s8)cis762.s/Q*us/,ghs-s%Rs,d8?s+^Q(
+s*=Wbs)%dKs'l"5s&].rs%`Sds%!)WrBpTOs$6TKb<Gqjs$H`Rs$crYs%WMjs',M6s).j^s+LE0
+s,d8Ks.]Ojs/H%$s0_ZOn\5%9s186 at s1&*;s0Ma1s0)I(s/H$qs.o[hs.B=^s-itTs-E\Ms-NbS
+s.01^s.TIhs/>t!s/uC+s0D[3s0r$=s1JBGs2"`Qa2[rTMoMt#q#Hc]rrAkpJ,~>
+JcF-trr at WMhuD)Qr;`77s$$7-JNiZhJUYjmrVubDOZre0s$?ZPs$crYs%WMks&]5*s'bq?s)%dU
+s)n?es*aots+C?)s+UK-s,$c9rtYQss-3PKs-W\Os-it]s/>t%s1&*Bs2+fVs3:Sks4./!s475'
+s4dS1s4[M's3gkns3CYes2Y/Ws2"`Ls1A<@s0Vg1s/uC'pT"7qs02O1s1&*Bs2+fUs2tAfs4./%
+s4[M/s5X.=s5*e0s3^kgs1SH;s/#aes-NbEs+12us*=Wes(q_Vs3(Gfs3U^Ws(VLLs).jUs)7pT
+s)%^Ns)J']s*EjWs*Ocjs)n?^s)7pQs(MFCs'Yk3s&oA%s&&eks%EA^s$ZlQs$"PRq>ZA%YQ+Cu
+QiI'cV#Pr~>
+JcF-trr at WMhuD)Qr;`77s$$7-JNiZhJUYjmrVubDY<MtOs$QfUs%35as%`Sks&B##s'5S3s(D at L
+s)n?gs+(-&s,$c9s-!DIs-`nYs.fUms/l=-s1&*As2"`Ss2=rRs1nZKs5<q;s5j8os0Ma2s0Ma5
+rO2a9s186Bs1JBFs1\NFs0r$8s02O*s/H$ks-s%Ts-*JCs,-i2s+(,rs)n?]s)%dMs().8s&f;$
+s&&eks%<;\s$QfNq`b$Es$ZlZs%r_ss'>Y7s(hXWs*k!%s,I&Es.B=hs/uC1s1SHHs1S<Bs1&*9
+s0Ma2s/l=!s.]Odq0r?ps*F]es).jMs'l"5s&T/!s&T/!s%iYhs%NGcs%NGgs&/kts'#G/s'l"?
+s(hXQs)\3bs*F]lrI"QlnUCFbs*Xins*De9q>ZA%YQ+CuQiI'cV#Pr~>
+JcF-trr at WMhuD*Dr;`8*s/Pn7JZA=AJ]>sSrVuc7jf8?]s/c7(s0;I,s0Vg6s0hs:s1/0 at s1A<D
+s1\NJs2+fSs2Y/^s3:Sjs4%)#s4dS2s5F">s5s at Es60LIs6K^Qs7$'Zs7H?as7ZKes7lWjs7u]i
+s7cQds763Ws60LCs5*e/s3q"ms2b5Xs1eTIrO`*@s8)cis762.s/Q*us/,ghs-s%Rs,d8?s+^Q(
+s*=Wbs)%dKs'l"5s&].rs%`Sds%!)WrBpTOs$6TKb<Gqjs$H`Rs$crYs%WMjs',M6s).j^s+LE0
+s,d8Ks.]Ojs/H%$s0_ZOn\5%9s186 at s1&*;s0Ma1s0)I(s/H$qs.o[hs.B=^s-itTs-E\Ms-NbS
+s.01^s.TIhs/>t!s/uC+s0D[3s0r$=s1JBGs2"`Qa2[rTMoMt#q#Hc]rrAkpJ,~>
+JcF-trr at WMhuCrMr;`[CpHJD%JNiNdJUZ!qrVubDOZre0s$H`Rs%!)]s%iYos&oA.s().Ds)7pZ
+s*4Qks*juus+C?+s+gW1s,6o=rtk^#rKmPPs-itWs.01as/H%%s0_m=s1nZPs2b5cs3gr!s475#
+s4IA+s5!_.s4%(ps3:Sfs2k;Zs2"`Ks186?s0_m4s/tahs/l=,s0r$@s1nZQs3(Ghs4%)!s4I;.
+s4mY,s4%(qs2G#Ks/l=!s.01Rs,-i1s+12rs)J(Ys2k;as3CXXrFZ(Cs(hXNs(hXLqe?(Is)S-_
+s*O]nq0hj`s*Ocjs)e9\s).jPs(D at As'Pe2s&f;#s%r_is%<;]s$QfOaaX'cLOQl8q#HKUrrAkp
+J,~>
+JcF-trr at WMhuCrMr;`[CpHJD%JNiNdJUZ!qrVubDYs/1Ps$?ZQs$m#[s%NGgs&/kss&oA,s'bq@
+s)7p\s*ap!s+gW5s,m>Is-it\s/#aqs0)I0s186Gs2G#[s3(G`s2P)Vs2"`us6BXNs)7qFs0Vg9
+s1/0 at s1A<Ds1SHFs186>s0_m3s/Q*rs.fUds.'+Qs,6o4s+:9"s*F]fs)J'Ts(;:?s'G_.s&K(q
+s%EA_s$ZlPm6:P<s%<;fs&T/+s(D at Ls)n?js+^Q7s-NbWs/#ats0Vg=qn<$?s0r$:s0_m2s/Q*s
+s/#O?s+gW)s*=Wcs)%dKs'Yk1s&f;%s&8qms%WMds%35]s%EAes&&ers&oA.s'l"@s(hXQs)e9d
+s*F]lrI"Qlo7$Xds*Xins*De9q>Z5!]Dq[,O8o4[V#Pr~>
+JcF-trr at WMhuCs@r;`\6pT"&/JZA1=J]?*WrVuc7jf8?]s/c7(s0;I-s0_m8s0r$<s186Bs1JBF
+s1eTLs2+fTs2b5`s3CYms4./&s5!_5s5O(@s69RKs6K^Os6fpWs7?9`s7cQgs7u]ks82ios8)ck
+s7cQds7$'Ss5s@?s4mY*s3Uehs2P)Ts1\NHs1A<Bs1/1*s7ZK_s).k7s/#ais.'+Us,m>>s+^Q'
+s*=Wcs(q^Js().:s&oA$rD*Aes%35[s$Q`Os$?ZMs$+[js$-NMs$QfSs%!)_s%r_ps'#G5s)7p`
+s*t')s-!DOs.B=cs/Q+(q0r at Wo=k7;rOW$>s0r$8s0D[0s/uC&s/>sos.fUes.97[s-`nSs-NbO
+s-`nVs.01^s.fUks/Q+"s/l=)s0;U2s0r$>s1JBHs2"`Rai=/VLW6t+q#HKUrrAkpJ,~>
+JcF-trr at WMhuCrMr;`[CpHJD%JNiNdJUZ!qrVubDOZre0s$H`Rs%!)]s%iYos&oA.s().Ds)7pZ
+s*4Qks*juus+C?+s+gW1s,6o=rtk^#rKmPPs-itWs.01as/H%%s0_m=s1nZPs2b5cs3gr!s475#
+s4IA+s5!_.s4%(ps3:Sfs2k;Zs2"`Ks186?s0_m4s/tahs/l=,s0r$@s1nZQs3(Ghs4%)!s4I;.
+s4mY,s4%(qs2G#Ks/l=!s.01Rs,-i1s+12rs)J(Ys2k;as3CXXrFZ(Cs(hXNs(hXLqe?(Is)S-_
+s*O]nq0hj`s*Ocjs)e9\s).jPs(D at As'Pe2s&f;#s%r_is%<;]s$QfOaaX'cLOQl8q#HKUrrAkp
+J,~>
+JcF-trr at WMhuCrMr;`[CpHJD%JNiNdJUZ!qrVubDYs/1Ps$?ZQs$m#[s%NGgs&/kss&oA,s'bq@
+s)7p\s*ap!s+gW5s,m>Is-it\s/#aqs0)I0s186Gs2G#[s3(G`s2P)Vs2"`us6BXNs)7qFs0Vg9
+s1/0 at s1A<Ds1SHFs186>s0_m3s/Q*rs.fUds.'+Qs,6o4s+:9"s*F]fs)J'Ts(;:?s'G_.s&K(q
+s%EA_s$ZlPm6:P<s%<;fs&T/+s(D at Ls)n?js+^Q7s-NbWs/#ats0Vg=qn<$?s0r$:s0_m2s/Q*s
+s/#O?s+gW)s*=Wcs)%dKs'Yk1s&f;%s&8qms%WMds%35]s%EAes&&ers&oA.s'l"@s(hXQs)e9d
+s*F]lrI"Qlo7$Xds*Xins*De9q>Z5!]Dq[,O8o4[V#Pr~>
+JcF-trr at WMhuCs@r;`\6pT"&/JZA1=J]?*WrVuc7jf8?]s/c7(s0;I-s0_m8s0r$<s186Bs1JBF
+s1eTLs2+fTs2b5`s3CYms4./&s5!_5s5O(@s69RKs6K^Os6fpWs7?9`s7cQgs7u]ks82ios8)ck
+s7cQds7$'Ss5s@?s4mY*s3Uehs2P)Ts1\NHs1A<Bs1/1*s7ZK_s).k7s/#ais.'+Us,m>>s+^Q'
+s*=Wcs(q^Js().:s&oA$rD*Aes%35[s$Q`Os$?ZMs$+[js$-NMs$QfSs%!)_s%r_ps'#G5s)7p`
+s*t')s-!DOs.B=cs/Q+(q0r at Wo=k7;rOW$>s0r$8s0D[0s/uC&s/>sos.fUes.97[s-`nSs-NbO
+s-`nVs.01^s.fUks/Q+"s/l=)s0;U2s0r$>s1JBHs2"`Rai=/VLW6t+q#HKUrrAkpJ,~>
+JcF-trr at WMhuCfIr;a$MnNQbtJNiHbJUZ'srVubDOZre0s$H`Ss%*/`s&&ess',M2s(;:Is)S-_
+s*FWms+(-%s+^Q1s,-i9s-!C"s-EVNs-s%Ys.97cs/H%$s0Vg;s1nZRs2P)\s3L_ps4RG)rR_)'
+s4mY,s3q"ns2k;^s2G#Rs1JBAs0Vg2s02O+s/bUfs/Z1%s0;U4s1/0Fs2P)_s3L_ms475,s5!_.
+s4./!s3L_ds2"`Fs0)I!s-s%Os,I&6s*t&ls2P)Zs2k;bs(VLGs(;:As(D at Gs(MFFs(;4 at s(_RO
+s)\3as*Xipq0`3jomZphs*F]hs)e9[s)%dNs(;:?s'Pe1s&]5!s%r_hs%35Zs$FhVq>Z"pa8c#:
+L]@ASV#Pr~>
+JcF-trr at WMhuCfIr;a$MnNQbtJNiHbJUZ'srVubDYs/1Ps$?ZQs%!)]s%WMhs&/kss&oA-s'bq@
+s)7p\s*k!&s,?u at s-WhWs.KChs/c7*s0hs>s2"`Vs3:Sjs3L_is2tA^s2G$+s7--\s*"FPs186C
+rP&<Fs1A<?s0Ma1s/uC's/>sjs-`nQs-!DBs+^Q&s*+K`s).jOs(24=s'5S*s&/kls%<;\s$G[.
+s$QfXs&&eus'Pe<s).j\s*t''s,R,Es.01fs0)I1s1A<Fs1JBCs1/0>s0Ma/s/c7#q0r@(s+gW(
+s*4Qas(q^Hs'Pe2s&]5!s%`Sfs%EA`s%!)[s%NGgs&&ers'#G/s'u(As(hXRs)n?frHnKjs*aKf
+rI+]nrHlY8q>Z"pa8c#:L]@ASV#Pr~>
+JcF-trr at WMhuCg<r;a%@nZ)E)JZA+;J]?0YrVuc7jf8?]s/c7(s0;U1rNuU5s0r$<s1/0As1JBG
+s1eTMs2+fSs2P)\s31Mis3q#"s4[M0s5F"<s6'FIs6]jSs6p!Xs7H?bs7lWjs82ioqu-Qls7u]h
+s7H?Zs69REs53k1s4%(os2b5Xs1eTJs1SHEs186?s7lWes7$&*s/5mks.97Xs-!D?s+LE$s*=Wc
+s(q^Is'bq7s'5S)s&&_fs%<;^s$cfNrBUBIb<GqjrBgNOs$m#]s%iYls&]5-s(;:Ms*4Qps,6oA
+s-WhXs/,guq0r at VrOqs>s1J<Bs186?s0_m6s0Ma0s/l=$s/>sos.TIbs.'+Ys-itUrL!VQs-s%Z
+s.TIgs/5mqs/Q+#s/l=+s0_m:s186Ds1nZPai=/VJ]>b1qZ)EOrrAkpJ,~>
+JcF-trr at WMhuCfIr;a$MnNQbtJNiHbJUZ'srVubDOZre0s$H`Ss%*/`s&&ess',M2s(;:Is)S-_
+s*FWms+(-%s+^Q1s,-i9s-!C"s-EVNs-s%Ys.97cs/H%$s0Vg;s1nZRs2P)\s3L_ps4RG)rR_)'
+s4mY,s3q"ns2k;^s2G#Rs1JBAs0Vg2s02O+s/bUfs/Z1%s0;U4s1/0Fs2P)_s3L_ms475,s5!_.
+s4./!s3L_ds2"`Fs0)I!s-s%Os,I&6s*t&ls2P)Zs2k;bs(VLGs(;:As(D at Gs(MFFs(;4 at s(_RO
+s)\3as*Xipq0`3jomZphs*F]hs)e9[s)%dNs(;:?s'Pe1s&]5!s%r_hs%35Zs$FhVq>Z"pa8c#:
+L]@ASV#Pr~>
+JcF-trr at WMhuCfIr;a$MnNQbtJNiHbJUZ'srVubDYs/1Ps$?ZQs%!)]s%WMhs&/kss&oA-s'bq@
+s)7p\s*k!&s,?u at s-WhWs.KChs/c7*s0hs>s2"`Vs3:Sjs3L_is2tA^s2G$+s7--\s*"FPs186C
+rP&<Fs1A<?s0Ma1s/uC's/>sjs-`nQs-!DBs+^Q&s*+K`s).jOs(24=s'5S*s&/kls%<;\s$G[.
+s$QfXs&&eus'Pe<s).j\s*t''s,R,Es.01fs0)I1s1A<Fs1JBCs1/0>s0Ma/s/c7#q0r@(s+gW(
+s*4Qas(q^Hs'Pe2s&]5!s%`Sfs%EA`s%!)[s%NGgs&&ers'#G/s'u(As(hXRs)n?frHnKjs*aKf
+rI+]nrHlY8q>Z"pa8c#:L]@ASV#Pr~>
+JcF-trr at WMhuCg<r;a%@nZ)E)JZA+;J]?0YrVuc7jf8?]s/c7(s0;U1rNuU5s0r$<s1/0As1JBG
+s1eTMs2+fSs2P)\s31Mis3q#"s4[M0s5F"<s6'FIs6]jSs6p!Xs7H?bs7lWjs82ioqu-Qls7u]h
+s7H?Zs69REs53k1s4%(os2b5Xs1eTJs1SHEs186?s7lWes7$&*s/5mks.97Xs-!D?s+LE$s*=Wc
+s(q^Is'bq7s'5S)s&&_fs%<;^s$cfNrBUBIb<GqjrBgNOs$m#]s%iYls&]5-s(;:Ms*4Qps,6oA
+s-WhXs/,guq0r at VrOqs>s1J<Bs186?s0_m6s0Ma0s/l=$s/>sos.TIbs.'+Ys-itUrL!VQs-s%Z
+s.TIgs/5mqs/Q+#s/l=+s0_m:s186Ds1nZPai=/VJ]>b1qZ)EOrrAkpJ,~>
+JcF-trr at WMhuCZEr;aHYks"olJNiHbJUZ'srVubDOZre0s$H`Ss%*/as&8r"s'>Y6s(MFMs)e9d
+s*aips+(-%s+^Q1s,?u=s-3O&s-<VPs.'+]s.TIhs/Z1)s0Ma9s1eTQs2tAbs3:Sks475)s4[M+
+s4IA)s4dS*s3gqls2b5Ys2"`Js1/0;s0D[0s02O+s/bUfs/Z1%s0)I-s0_m=s2+fVs3(Gfs4./)
+s4dS*s4./#s3^khs24lNs0hs0s.o[`s-<VCs+LE!rPnlXs2t at Vs(MFFs'u(>s(24 at s'tq8s(;:H
+s)7pZs*49bs*XipomZphs*=Wfs)\3Zs)%dMs(;:?s'G_/s&K(rs%`Sds%!)VaaX'cJU[QHe,T4D
+JcG`MV#Pr~>
+JcF-trr at WMhuCZEr;aHYks"olJNiHbJUZ'srVubDZTe=Ps$H`Ss%*/^s%WMis&8qus'#G.s'l"C
+s)S-cs+C?0s-3POs.B=ds/,gts0Ma8s1SHLs2k;es4%)!s4%(ss3L_hs2k<6s7lWjs*aj[s1JBD
+s1/0=s0hs5s/Z0us/#ajs.B=Xs,R,9s+UK(s*=Was(VLBs'G_.s&K(rs%NG`s$QfNf094$s%35e
+s&]5-s(D at Ms*"Eks+UK5s-it^s/>t#s0_m=s1SHFs1A<>s0Vg2s0)6Is-<VEs+^Q)s*=Was(_RE
+s'Pe/s&B"ps%iYhs%<;^s%!)]s%EAds&&ess'#G/s'u(As(q^Ts*+KhrHnKjs*aKfs*ains*Mk:
+q>Z"prI35qq#H!GrrAkpJ,~>
+JcF-trr at WMhuC[8r;aILl)OR!JZA+;J]?0YrVuc7jf8?]s/c7(s0;U1s0Vg6s0r$<s1/0 at s1JBG
+s1nZNs24lTs2P)Zs2tAds3^kss4IA,s53k9s5a4Ds6K^Rs7--[s7QEds7u]lp&4pfs7u]hs763W
+s6'FAs5!_,s3^kis2P)Ts1eTJs1SHEs186?s7cQcs6ou(s/,gfs-NbIs,$c-s*Ocgs)\3Ws(;:=
+s',M+s&]5!s%`SbrC?lWs$Z`Lq`i7fs$-HJs$H`Ss%35bs%`Sns'5S6s(_RRs*F]us,I&As-it^
+s/GgCs1A6BpV-[@rOi0Bs1/0=s0hs8s0D[.s/l=%s/>sns.TIas.01[rL<hTs-NbRs-s%\s.]Oh
+s/#ans/H%!s0)I.s0hs<s1JBHs2)mtq>Z#crPm=dq#H!GrrAkpJ,~>
+JcF-trr at WMhuCZEr;aHYks"olJNiHbJUZ'srVubDOZre0s$H`Ss%*/as&8r"s'>Y6s(MFMs)e9d
+s*aips+(-%s+^Q1s,?u=s-3O&s-<VPs.'+]s.TIhs/Z1)s0Ma9s1eTQs2tAbs3:Sks475)s4[M+
+s4IA)s4dS*s3gqls2b5Ys2"`Js1/0;s0D[0s02O+s/bUfs/Z1%s0)I-s0_m=s2+fVs3(Gfs4./)
+s4dS*s4./#s3^khs24lNs0hs0s.o[`s-<VCs+LE!rPnlXs2t at Vs(MFFs'u(>s(24 at s'tq8s(;:H
+s)7pZs*49bs*XipomZphs*=Wfs)\3Zs)%dMs(;:?s'G_/s&K(rs%`Sds%!)VaaX'cJU[QHe,T4D
+JcG`MV#Pr~>
+JcF-trr at WMhuCZEr;aHYks"olJNiHbJUZ'srVubDZTe=Ps$H`Ss%*/^s%WMis&8qus'#G.s'l"C
+s)S-cs+C?0s-3POs.B=ds/,gts0Ma8s1SHLs2k;es4%)!s4%(ss3L_hs2k<6s7lWjs*aj[s1JBD
+s1/0=s0hs5s/Z0us/#ajs.B=Xs,R,9s+UK(s*=Was(VLBs'G_.s&K(rs%NG`s$QfNf094$s%35e
+s&]5-s(D at Ms*"Eks+UK5s-it^s/>t#s0_m=s1SHFs1A<>s0Vg2s0)6Is-<VEs+^Q)s*=Was(_RE
+s'Pe/s&B"ps%iYhs%<;^s%!)]s%EAds&&ess'#G/s'u(As(q^Ts*+KhrHnKjs*aKfs*ains*Mk:
+q>Z"prI35qq#H!GrrAkpJ,~>
+JcF-trr at WMhuC[8r;aILl)OR!JZA+;J]?0YrVuc7jf8?]s/c7(s0;U1s0Vg6s0r$<s1/0 at s1JBG
+s1nZNs24lTs2P)Zs2tAds3^kss4IA,s53k9s5a4Ds6K^Rs7--[s7QEds7u]lp&4pfs7u]hs763W
+s6'FAs5!_,s3^kis2P)Ts1eTJs1SHEs186?s7cQcs6ou(s/,gfs-NbIs,$c-s*Ocgs)\3Ws(;:=
+s',M+s&]5!s%`SbrC?lWs$Z`Lq`i7fs$-HJs$H`Ss%35bs%`Sns'5S6s(_RRs*F]us,I&As-it^
+s/GgCs1A6BpV-[@rOi0Bs1/0=s0hs8s0D[.s/l=%s/>sns.TIas.01[rL<hTs-NbRs-s%\s.]Oh
+s/#ans/H%!s0)I.s0hs<s1JBHs2)mtq>Z#crPm=dq#H!GrrAkpJ,~>
+JcF-trr at WMhuCNAr;aleiBI'dJNiHbq0r9+JUZL*rVubDOZre0s$H`Ss%35cs&B#$s'Pe;s(hXS
+s*+KiqgSQqs+C?+s+p]7s-*JPs!7W8s.TCds/,gus0Vg:s1A<Fs2=r[s3L_ls3gqrs4IA-s4mY/
+s4[M+s4[M(s3^kjs2Y/Us1eTGs1&*9s0;U.s0)I*s/bUfs/Z1%s0)I-s0Ma8s1SHMs2P)`s4%#$
+s475%s4IA#s31M^s24lKs0Ma+s.]O^s,m><s+(!ds2b4Us(VLGnRDN.s(D at Js)A!\s*+9bs*Ocn
+s*aQhs*Xils)n?^s)7pRs(MFCs'Yk3s&f;"s%iYgs%*/YaaX'cJU[EDhuEKPJcGQGrrAkpJ,~>
+JcF-trr at WMhuCNAr;aleiBI'dJNiHbq0r9+JUZL*rVubDZTeCRs$6TNs$crYs%<;cs%r_os&]5*
+s'bq?s)7p]s*t')s,d8Ks.KChs/H%"s0Ma9s1eTPs2k;fs47/%s4IA&s3q"ps3:TAs8N&ss*t!\
+s186<s0Ma2s0;U+s/,ggs.'+Xs-E\Fs+UK#s*4Qcs(q^Gs'5S&s%`Scs$crRb<Gqls%*/ds&]5-
+s(;:Js)n?ms,I&Ds-s%^s/c7+s0hs=s1\NFs1/0<s0VTNs.'+Ss,R,9s+12qs)J'Qs'l"5s&]5!
+s&&eks%NGbs%3/Zs%35bs&/kts'#G0s'u(Bs)%dVs*4QirHnQlrI+9ds*ainaaX'cJU[EDhuEKP
+JcGQGrrAkpJ,~>
+JcF-trr at WMhuCO4r;amXiMu^nJZA+;q8WB5J]?TerVuc7jf8?]s/c7(s0;U1s0Vg7s1&*>s186B
+s1SHIs2+fRs2G#Xs2b5^s3(Ggs3q#!s4[M/s5<q;s5j:Fs6TdTs7?9`s7lWis82iop&4pfs7u]g
+s7--Us5s@>s4[M&s3CYds24lPs1eTJs1SHEs186?s7cQ`s69Pns-itNs,?u5s+(,ps)S-Us(VLG
+s'Yk1s&B"ss&&ems%EA\rC$ZQs$HTI`BO;drBUBKs$ZlXs%<;as&&f!s'Yk;s(hXVs*ap%s,R,F
+s.97fq0r at Ts1A<DotLC<s1JBCs1/0>s0r$8s0;U.s/uC&s/5mms.TIcs.B=^s.'+XrKmPPs.01^
+s.KCds/#ams/Q+%s0;U3s1&*@s1\NLai=/VJ]@N*huEKPJcGQGrrAkpJ,~>
+JcF-trr at WMhuCNAr;aleiBI'dJNiHbq0r9+JUZL*rVubDOZre0s$H`Ss%35cs&B#$s'Pe;s(hXS
+s*+KiqgSQqs+C?+s+p]7s-*JPs!7W8s.TCds/,gus0Vg:s1A<Fs2=r[s3L_ls3gqrs4IA-s4mY/
+s4[M+s4[M(s3^kjs2Y/Us1eTGs1&*9s0;U.s0)I*s/bUfs/Z1%s0)I-s0Ma8s1SHMs2P)`s4%#$
+s475%s4IA#s31M^s24lKs0Ma+s.]O^s,m><s+(!ds2b4Us(VLGnRDN.s(D at Js)A!\s*+9bs*Ocn
+s*aQhs*Xils)n?^s)7pRs(MFCs'Yk3s&f;"s%iYgs%*/YaaX'cJU[EDhuEKPJcGQGrrAkpJ,~>
+JcF-trr at WMhuCNAr;aleiBI'dJNiHbq0r9+JUZL*rVubDZTeCRs$6TNs$crYs%<;cs%r_os&]5*
+s'bq?s)7p]s*t')s,d8Ks.KChs/H%"s0Ma9s1eTPs2k;fs47/%s4IA&s3q"ps3:TAs8N&ss*t!\
+s186<s0Ma2s0;U+s/,ggs.'+Xs-E\Fs+UK#s*4Qcs(q^Gs'5S&s%`Scs$crRb<Gqls%*/ds&]5-
+s(;:Js)n?ms,I&Ds-s%^s/c7+s0hs=s1\NFs1/0<s0VTNs.'+Ss,R,9s+12qs)J'Qs'l"5s&]5!
+s&&eks%NGbs%3/Zs%35bs&/kts'#G0s'u(Bs)%dVs*4QirHnQlrI+9ds*ainaaX'cJU[EDhuEKP
+JcGQGrrAkpJ,~>
+JcF-trr at WMhuCO4r;amXiMu^nJZA+;q8WB5J]?TerVuc7jf8?]s/c7(s0;U1s0Vg7s1&*>s186B
+s1SHIs2+fRs2G#Xs2b5^s3(Ggs3q#!s4[M/s5<q;s5j:Fs6TdTs7?9`s7lWis82iop&4pfs7u]g
+s7--Us5s@>s4[M&s3CYds24lPs1eTJs1SHEs186?s7cQ`s69Pns-itNs,?u5s+(,ps)S-Us(VLG
+s'Yk1s&B"ss&&ems%EA\rC$ZQs$HTI`BO;drBUBKs$ZlXs%<;as&&f!s'Yk;s(hXVs*ap%s,R,F
+s.97fq0r at Ts1A<DotLC<s1JBCs1/0>s0r$8s0;U.s/uC&s/5mms.TIcs.B=^s.'+XrKmPPs.01^
+s.KCds/#ams/Q+%s0;U3s1&*@s1\NLai=/VJ]@N*huEKPJcGQGrrAkpJ,~>
+JcF-trr at WMhuCB=qZ,)ogHPF^JNiHbq0r-'JUZX.rVubDOZre0s$H`Ss%<;es&K)&s'Yk=s)%dW
+s*=Ehs+(-&s,$c:s-NbWs/,fLs/#aps/Z1"s/uC0s1JBJs24lUs2k;es4%)!s4@;'s4[M1s5*e3
+s4mY/s4[M&s3L_es2=rOs1SHDs0r$7s02O,rN?1%mAg2es/l=)s02O/s0r$?s1nZSs31MlrRq5'
+s4RG+s4..ps2tA_s1nZEs02O&s.KCXs,R,5q8WGNs(_RGmpc<-s(MFLs)J'\s*+?cs*F]ls*XEe
+s*Ocjs)n?^s).jOs(;:?s'G_/s&K(rs%WMcs$k+Zq>Z"pomZ0*qZ)3Inc/UhV#Pr~>
+JcF-trr at WMhuCB=qZ,)ogHPF^JNiHbq0r-'JUZX.rVubD[6FORs$6TOs$m#Zs%EAes&8r!s'5S4
+s(24Gs)\3fs+LE3s-<VUs/,gts0)I/s1/0Es2G#]s3UetrS7A-s4[M)s3gqlrVccos*jpZs1/08
+s/uC(s/c7!s.TI\s-*JFs,I&4s*Xifs(hXIs'Pe-s%`S`s$+=`s$6TSs%`Sps'>Y<s)e9ks+p]8
+s-Nb\s/H%#s0;U6s1A<Fs1A<Aq0r@=s.'+Ts,m><s+12qs)A!Ps'bq2s&K(ts%r_is%EAas%!)V
+s$crZs%`Sls&T/(s'Pe:s(VLNs)e9ds*F]ls*Xcno7$Xds*Vq;q>Z"pomZ0*qZ)3Inc/UhV#Pr~>
+JcF-trr at WMhuCC0qZ,*bgT((hJZA+;q8W61J]?`irVuc7jf8?]s/l=)s0;U1s0Vg7s1&*?s1A<D
+s1\NKs24lUs2Y/\s2tAbs3CYks4%)$s4dS1s5F"=s5s at Hs6]jVs7H?bs7lWis82iop&4pfs7lWe
+s7$'Ss5j:<s4RG#s31M_s2"`Ns1eTJs1SHDs0hs4s6]jKs5!]Vs,I&4s*t&rs*+K^s(VLCs'Yk5
+s'#G%s%`Sgs%EA`s%!)UrB^HKs$+1\rBL<Is$QfTs%!)[s%`Sps',M/s(24Js*+Kls+gW;s-it^
+q0r at Ss186Cn\5%:s1JBDs186 at s0hs7s0Ma1s/uC%s/5mms.fUgs.KC_s-s%Us-E\Os-itXs.97`
+s.]Ois/H%#s02O1s0r$?s1SHJai=/VJ]@B&l2UV\JcG9?rrAkpJ,~>
+JcF-trr at WMhuCB=qZ,)ogHPF^JNiHbq0r-'JUZX.rVubDOZre0s$H`Ss%<;es&K)&s'Yk=s)%dW
+s*=Ehs+(-&s,$c:s-NbWs/,fLs/#aps/Z1"s/uC0s1JBJs24lUs2k;es4%)!s4@;'s4[M1s5*e3
+s4mY/s4[M&s3L_es2=rOs1SHDs0r$7s02O,rN?1%mAg2es/l=)s02O/s0r$?s1nZSs31MlrRq5'
+s4RG+s4..ps2tA_s1nZEs02O&s.KCXs,R,5q8WGNs(_RGmpc<-s(MFLs)J'\s*+?cs*F]ls*XEe
+s*Ocjs)n?^s).jOs(;:?s'G_/s&K(rs%WMcs$k+Zq>Z"pomZ0*qZ)3Inc/UhV#Pr~>
+JcF-trr at WMhuCB=qZ,)ogHPF^JNiHbq0r-'JUZX.rVubD[6FORs$6TOs$m#Zs%EAes&8r!s'5S4
+s(24Gs)\3fs+LE3s-<VUs/,gts0)I/s1/0Es2G#]s3UetrS7A-s4[M)s3gqlrVccos*jpZs1/08
+s/uC(s/c7!s.TI\s-*JFs,I&4s*Xifs(hXIs'Pe-s%`S`s$+=`s$6TSs%`Sps'>Y<s)e9ks+p]8
+s-Nb\s/H%#s0;U6s1A<Fs1A<Aq0r@=s.'+Ts,m><s+12qs)A!Ps'bq2s&K(ts%r_is%EAas%!)V
+s$crZs%`Sls&T/(s'Pe:s(VLNs)e9ds*F]ls*Xcno7$Xds*Vq;q>Z"pomZ0*qZ)3Inc/UhV#Pr~>
+JcF-trr at WMhuCC0qZ,*bgT((hJZA+;q8W61J]?`irVuc7jf8?]s/l=)s0;U1s0Vg7s1&*?s1A<D
+s1\NKs24lUs2Y/\s2tAbs3CYks4%)$s4dS1s5F"=s5s at Hs6]jVs7H?bs7lWis82iop&4pfs7lWe
+s7$'Ss5j:<s4RG#s31M_s2"`Ns1eTJs1SHDs0hs4s6]jKs5!]Vs,I&4s*t&rs*+K^s(VLCs'Yk5
+s'#G%s%`Sgs%EA`s%!)UrB^HKs$+1\rBL<Is$QfTs%!)[s%`Sps',M/s(24Js*+Kls+gW;s-it^
+q0r at Ss186Cn\5%:s1JBDs186 at s0hs7s0Ma1s/uC%s/5mms.fUgs.KC_s-s%Us-E\Os-itXs.97`
+s.]Ois/H%#s02O1s0r$?s1SHJai=/VJ]@B&l2UV\JcG9?rrAkpJ,~>
+JcF-trr at WMhuC07r;b`(dm!SVJNiHbq0r!#JUZd2rVubDOZre0s$H`Ts%EAgs&T/(s'l"As).jZ
+s*O]ns+(-$s,$c:s-3PPs.]Oms0;Sbs/uC-s0Ma4s0r$As2=rZs3(Ges3Ueqs4RG+s4mY1s5*e7
+s5<q5s4[M)s3q"qs31M_s2"`Is186 at s0hs5s0)I*rN6+$mAg2es/l7&s0;U4s186Es24lZs3gr"
+s4RG+s4dS/s4@:us3L_is2G#Os0_m3s/>shs-<VBq8WGOs(_RGm:-*,s(VLMs)A!Zs*"?cs*=Wj
+s*Ocoo7$^ds*+Kbs)J'Us(MFCs'Yk3s&]5!s%iYfs%(7\q>Z"pnUC02q#H!Gli6tbV#Pr~>
+JcF-trr at WMhuC07r;b`(dm!SVJNiHbq0r!#JUZd2rVubD[m'aTs$6TMs$ZlWs%<;cs%r_qs',M2
+s(24Fs)A!_s+13,s-*JOs.fUos0;U3s1/0Es2G#]s3gr"s5*_4s5*e3s4IA#s3CYdrVccns*ajX
+s1&*6s/Z0us/5mls.'+Rs,I&7s+LE!s)\3Ts'bq2s&/kks%*/Ws$++Zs$m#`s',M9s)\3ds+:92
+s-it\s.o[os0Ma6s1/0As1S5Ws/Q*ps.B=Zs,m><s+(,ns)A!Ps'bq2s&K(ss%iYhs%<;\s$H`O
+s$cr[s%`Sls&]5)s'Yk<s(hXRs)n?fs*OcnrI+3brI)e:q>Z"pnUC02q#H!Gli6tbV#Pr~>
+JcF-trr at WMhuC1*r;b`pe#N5`JZA+;q8W*-J]?lmrVuc7kGnQ_s/c7&s0)I-s0Ma4s0hs;s1A<D
+s1SHIs2"`Rs2Y/]s2tAcs3:Sjs3q#!s4RG-s53k9s5j:Ds6K^Qs763_s7cQgs7u]ls8;Qgs82ij
+s7H?[s6BXFs5*e-s3^khs2=rRs1nZJs186;s0)I's/,hUs4[M#s%EBCs*=Wcs)A!Ts(D@=s'#G(
+s&K(ss%`Sbs%!)Xs$QfQs$*bPs$-NLs$H`Rs$cr\s&/kss&]5-s(MFPs)n?js,$c>s./t7s1&*?
+s1Ia5s1SHFs1A<As0r$:s0Vg2s/l=$s/5mos/#ais.B=]s-itSs-E\Os-`nVs.01_s.o[ns/c7(
+s0Ma6s186Es1nZTbJsAXJ]@6"p&FgfJcG'9rrAkpJ,~>
+JcF-trr at WMhuC07r;b`(dm!SVJNiHbq0r!#JUZd2rVubDOZre0s$H`Ts%EAgs&T/(s'l"As).jZ
+s*O]ns+(-$s,$c:s-3PPs.]Oms0;Sbs/uC-s0Ma4s0r$As2=rZs3(Ges3Ueqs4RG+s4mY1s5*e7
+s5<q5s4[M)s3q"qs31M_s2"`Is186 at s0hs5s0)I*rN6+$mAg2es/l7&s0;U4s186Es24lZs3gr"
+s4RG+s4dS/s4@:us3L_is2G#Os0_m3s/>shs-<VBq8WGOs(_RGm:-*,s(VLMs)A!Zs*"?cs*=Wj
+s*Ocoo7$^ds*+Kbs)J'Us(MFCs'Yk3s&]5!s%iYfs%(7\q>Z"pnUC02q#H!Gli6tbV#Pr~>
+JcF-trr at WMhuC07r;b`(dm!SVJNiHbq0r!#JUZd2rVubD[m'aTs$6TMs$ZlWs%<;cs%r_qs',M2
+s(24Fs)A!_s+13,s-*JOs.fUos0;U3s1/0Es2G#]s3gr"s5*_4s5*e3s4IA#s3CYdrVccns*ajX
+s1&*6s/Z0us/5mls.'+Rs,I&7s+LE!s)\3Ts'bq2s&/kks%*/Ws$++Zs$m#`s',M9s)\3ds+:92
+s-it\s.o[os0Ma6s1/0As1S5Ws/Q*ps.B=Zs,m><s+(,ns)A!Ps'bq2s&K(ss%iYhs%<;\s$H`O
+s$cr[s%`Sls&]5)s'Yk<s(hXRs)n?fs*OcnrI+3brI)e:q>Z"pnUC02q#H!Gli6tbV#Pr~>
+JcF-trr at WMhuC1*r;b`pe#N5`JZA+;q8W*-J]?lmrVuc7kGnQ_s/c7&s0)I-s0Ma4s0hs;s1A<D
+s1SHIs2"`Rs2Y/]s2tAcs3:Sjs3q#!s4RG-s53k9s5j:Ds6K^Qs763_s7cQgs7u]ls8;Qgs82ij
+s7H?[s6BXFs5*e-s3^khs2=rRs1nZJs186;s0)I's/,hUs4[M#s%EBCs*=Wcs)A!Ts(D@=s'#G(
+s&K(ss%`Sbs%!)Xs$QfQs$*bPs$-NLs$H`Rs$cr\s&/kss&]5-s(MFPs)n?js,$c>s./t7s1&*?
+s1Ia5s1SHFs1A<As0r$:s0Vg2s/l=$s/5mos/#ais.B=]s-itSs-E\Os-`nVs.01_s.o[ns/c7(
+s0Ma6s186Es1nZTbJsAXJ]@6"p&FgfJcG'9rrAkpJ,~>
+JcF-trr at WMhuC$3r;c/4b<G`NJNiHbq0qitJUZp6rVubDOZre0s$QfVs%NGis&]5+s'u(Cs)A!^
+s+(-&s+^Q0s,-i=s-`nZs.o[ss0Vg=s$csrs186Cs1eTNs2G#^s3^kqs4./%s4[M0s53k8s5<q6
+s4mY.s4@;#s3^kks31Mbs24lNs1&*<s0hs8s0;U,s/l1"mAg2eqlTn&s0_m;s1A<Hs2Y/cs475)
+s4mY1s5*e/s475"s3gqis2+fLs1/06s/,ges-EK#s).jOs(:S+s(;:Gs)%dTs)\3`s*+Kfs*=Wj
+s*XipomZphs*F]hs)\3Ys(hXHs'l"7s&oA%s&&ejs%1=]q>Z"pm=+j2JcFd1rrAkpJ,~>
+JcF-trr at WMhuC$3r;c/4b<G`NJNiHbq0qitJUZp6rVubD[m'aTs$6TMs$cr[s%NGgs&/kus'G_:
+s(_RPs)e9gs+^Q6s-WhZs/5n"s0_m=s1eTQs3(Gis4IA.rSde6s4mY.s4..rs3(G^rVccns*XdV
+s0r$4s/Q*os.]Obs-NbHs+p]*s*Ocds(_RCs',M&s&&ejs%*/Ws$+%Xs$H`[s'#G7s)%d\s+UK8
+s-NbTs.o[ts0;U2s0hs?q0r at Ls/c6us.TI\s,m>:s*juls)A!Os'Yk2s&T.ts%`Sds$m#Ts$-NL
+s$m#\s%`Sms&]5*s'l"@s(q^Us*+Kis*Xcnmsb:baaX'cJU[!8q#H!Gj8],ZV#Pr~>
+JcF-trr at WMhuC%&r;c0'bGtBXJZA+;q8Vs)J]@#qrVuc7mAg&as/c7&s/uC+s0;U1s0Vg7s1&*@
+s1SHHs1nZOs2G#Zs3(Gds3CYks3gqts4@;*s5*e7s5j:Es6BXNs6p!Zs7ZKfrV?Kjs8;Qgs8)ch
+s7?9Ys69RDs4mY*s3L_ds1nZHs1/0<s0Ma,s.o[es-s&>s3L_bs$-O+s)%dKs().<s'>Y*s&&ek
+s%NGas%!)Us$?ZLV`t,Fs$?ZOs%*/`s%iYls&oA2s(D at Js)n?ks,-i=q0r at Rs186Cl+[22s1JBC
+s1/0=s0Vg1s/l=$s/H$ss.fUes.01Zs-WhPs-<VNs-`nVs.97cs/5mts/uC-s0_m;s1SHJs2W=&
+q>Z#cmDer%JcFd1rrAkpJ,~>
+JcF-trr at WMhuC$3r;c/4b<G`NJNiHbq0qitJUZp6rVubDOZre0s$QfVs%NGis&]5+s'u(Cs)A!^
+s+(-&s+^Q0s,-i=s-`nZs.o[ss0Vg=s$csrs186Cs1eTNs2G#^s3^kqs4./%s4[M0s53k8s5<q6
+s4mY.s4@;#s3^kks31Mbs24lNs1&*<s0hs8s0;U,s/l1"mAg2eqlTn&s0_m;s1A<Hs2Y/cs475)
+s4mY1s5*e/s475"s3gqis2+fLs1/06s/,ges-EK#s).jOs(:S+s(;:Gs)%dTs)\3`s*+Kfs*=Wj
+s*XipomZphs*F]hs)\3Ys(hXHs'l"7s&oA%s&&ejs%1=]q>Z"pm=+j2JcFd1rrAkpJ,~>
+JcF-trr at WMhuC$3r;c/4b<G`NJNiHbq0qitJUZp6rVubD[m'aTs$6TMs$cr[s%NGgs&/kus'G_:
+s(_RPs)e9gs+^Q6s-WhZs/5n"s0_m=s1eTQs3(Gis4IA.rSde6s4mY.s4..rs3(G^rVccns*XdV
+s0r$4s/Q*os.]Obs-NbHs+p]*s*Ocds(_RCs',M&s&&ejs%*/Ws$+%Xs$H`[s'#G7s)%d\s+UK8
+s-NbTs.o[ts0;U2s0hs?q0r at Ls/c6us.TI\s,m>:s*juls)A!Os'Yk2s&T.ts%`Sds$m#Ts$-NL
+s$m#\s%`Sms&]5*s'l"@s(q^Us*+Kis*Xcnmsb:baaX'cJU[!8q#H!Gj8],ZV#Pr~>
+JcF-trr at WMhuC%&r;c0'bGtBXJZA+;q8Vs)J]@#qrVuc7mAg&as/c7&s/uC+s0;U1s0Vg7s1&*@
+s1SHHs1nZOs2G#Zs3(Gds3CYks3gqts4@;*s5*e7s5j:Es6BXNs6p!Zs7ZKfrV?Kjs8;Qgs8)ch
+s7?9Ys69RDs4mY*s3L_ds1nZHs1/0<s0Ma,s.o[es-s&>s3L_bs$-O+s)%dKs().<s'>Y*s&&ek
+s%NGas%!)Us$?ZLV`t,Fs$?ZOs%*/`s%iYls&oA2s(D at Js)n?ks,-i=q0r at Rs186Cl+[22s1JBC
+s1/0=s0Vg1s/l=$s/H$ss.fUes.01Zs-WhPs-<VNs-`nVs.97cs/5mts/uC-s0_m;s1SHJs2W=&
+q>Z#cmDer%JcFd1rrAkpJ,~>
+JcF-trr at WMhuBm/r;cS at _`mmFJNiHbq0qWnJU[-<rVubDOZre0s$ZlXs%WMks&f;.s(;:Js)n?i
+s+gW5s,R, at s-!DNs.fUns0)I4s1eTSs%ra1s24lWs2tAds3Ueqs4RG,s5!_5s5F"8s5!_0s4RG(
+s4..us3^kls2tA^s2P)Ws1nZHs0_m6s0Ma2s02O*s/c*umAg2eqlKh$s0Vg7s0r$As2=r]s3Ueq
+s4RG/s5<q5s4dS,s4@:ss2k;[s2"`Fs/uC!s.T8.s).jOs(:M)s(;:Fs(q^Rs)S-^s*+Kgs*F]l
+rI+?fs*Xils*"E_s)%dLs().;s',M)s&8qns%CI_q>Z"pomZ]:s*fP!h>dKTV#Pr~>
+JcF-trr at WMhuBm/r;cS at _`mmFJNiHbq0qWnJU[-<rVubD[m'gVs$6TMs$H`Ss%EAes&&eqs&oA0
+s(MFMs)\3cs+13-s-*JQs/#ars0D[8s1eTQs3(Ghs475*s5O(;s5<q6s4mY-s3q"ms2Y/VrVccn
+s*XdUs0hs2s/H$ms.01Xs-!D>s+C>us)e9Xs(;:<s&f:us%r_is%*/Ws$+%Xs$H`Vs%iYts'u(I
+s*Xj&s,R,Ds.B=js/c7(s0Ma;q0r at Ts0Vg0s/H$ls-WhHs+UK%s*+K\s(;:>s'5S*s&&ehs$m#S
+rBC6Js$m#]s%iYos&oA.s'u(Cs).jXs*4QkrI))&q>Z"pomZ]:s*fP!h>dKTV#Pr~>
+JcF-trr at WMhuBn"r;cT3_lEOPJZA+;q8Va#J]@6"rVuc7or at hgqlKh"s/uC*s02O.s0D[3s0hs;
+s1A<Es1eTMs24lVs2k;bs3CYks3gqss4@;(s5!_6s5a4Ds6K^Ps6fpVs7H?cs7uWis82iop\k-i
+s7u]fs763Ws60LAs4[M$s3(G\s1/09s0;U-s/c6rs-s%Qs,d9(s2=rLs"j[hs'bq3s&f;#s&&ej
+s%!)Xs$QfORm-j:s$QfUs%*/_s&8r$s'G_7s(q^Ys*t'&q0r at Rs186CjhCc.s1JBCs0r$7s02O*
+s/c7"s.o[gs.97\s-`nRrK[DKs-`nXs.TIhs/Q+$s0;U2s1/0Bs1eTSbJsAXJ]@B&q#LH7JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuBm/r;cS at _`mmFJNiHbq0qWnJU[-<rVubDOZre0s$ZlXs%WMks&f;.s(;:Js)n?i
+s+gW5s,R, at s-!DNs.fUns0)I4s1eTSs%ra1s24lWs2tAds3Ueqs4RG,s5!_5s5F"8s5!_0s4RG(
+s4..us3^kls2tA^s2P)Ws1nZHs0_m6s0Ma2s02O*s/c*umAg2eqlKh$s0Vg7s0r$As2=r]s3Ueq
+s4RG/s5<q5s4dS,s4@:ss2k;[s2"`Fs/uC!s.T8.s).jOs(:M)s(;:Fs(q^Rs)S-^s*+Kgs*F]l
+rI+?fs*Xils*"E_s)%dLs().;s',M)s&8qns%CI_q>Z"pomZ]:s*fP!h>dKTV#Pr~>
+JcF-trr at WMhuBm/r;cS at _`mmFJNiHbq0qWnJU[-<rVubD[m'gVs$6TMs$H`Ss%EAes&&eqs&oA0
+s(MFMs)\3cs+13-s-*JQs/#ars0D[8s1eTQs3(Ghs475*s5O(;s5<q6s4mY-s3q"ms2Y/VrVccn
+s*XdUs0hs2s/H$ms.01Xs-!D>s+C>us)e9Xs(;:<s&f:us%r_is%*/Ws$+%Xs$H`Vs%iYts'u(I
+s*Xj&s,R,Ds.B=js/c7(s0Ma;q0r at Ts0Vg0s/H$ls-WhHs+UK%s*+K\s(;:>s'5S*s&&ehs$m#S
+rBC6Js$m#]s%iYos&oA.s'u(Cs).jXs*4QkrI))&q>Z"pomZ]:s*fP!h>dKTV#Pr~>
+JcF-trr at WMhuBn"r;cT3_lEOPJZA+;q8Va#J]@6"rVuc7or at hgqlKh"s/uC*s02O.s0D[3s0hs;
+s1A<Es1eTMs24lVs2k;bs3CYks3gqss4@;(s5!_6s5a4Ds6K^Ps6fpVs7H?cs7uWis82iop\k-i
+s7u]fs763Ws60LAs4[M$s3(G\s1/09s0;U-s/c6rs-s%Qs,d9(s2=rLs"j[hs'bq3s&f;#s&&ej
+s%!)Xs$QfORm-j:s$QfUs%*/_s&8r$s'G_7s(q^Ys*t'&q0r at Rs186CjhCc.s1JBCs0r$7s02O*
+s/c7"s.o[gs.97\s-`nRrK[DKs-`nXs.TIhs/Q+$s0;U2s1/0Bs1eTSbJsAXJ]@B&q#LH7JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuBa+r;aMpq0mlYm6:>pk<=HGomZl>qgOYks$-NOs%35cs&8r#s().Gs)\3es+13.
+s-3PLs-WhUs.]Oos0Vg:s2=r\s3gpOs2Y/as3gqts4IA+s5*e7s53k4s4mY.s4IA&s4%(ss3Uek
+s31Mcs2Y/Xs2"`Ms1\NGs1&*7s0;U.s0)I*s/c7$jf83Ys/uC-s0Ma4s186Hs2b5_s3CYns4IA,
+rS[_4s4mY(s3^kks2k;Vs0r$5s/c%9s*"EZs(:M)s'u(@s(VLLs)A!Zs*+Kfs*=Wks*Xipo7$^e
+s*4Qcs)A!Rs(;:?s'G_.s&K(rs%UUaq>Z"pqgSDBpO7\nh>dKTV#Pr~>
+JcF-trr at WMhuBa+r;aMpq0mlYm6:>pk<=HGomZl>qgQ"<s$-NKs$?ZOs$cr\s%r_os&T/)s'u(E
+s)S-as*ap%s,[2Is.TIls0)I2s1\NPs3(Ggs4%)&s5<k:s5<q6s4dS+s3gqjs2=rPrVccns*XjW
+s1&*:s/uC#s.TI^s-3PBs+LE"s)e9Xs(_RDs'5S(s%`Sgs%NG`s$QfN\N^$[s%*/cs&B#'s(;:P
+s*t'&s,[2Ks.o[ms/Q+)s18#Ts1JBCs0r$5s/>sis-E\Ds+UK$s)e9Ws(D@@s'5S's%iYds$Q`K
+s$-NNs%!)_s%r_qs',M2s(24Fs)A!\s*FWl[=7rOJU[KFqZ-A>JcFR+rrAkpJ,~>
+JcF-trr at WMhuBasr;aO2q8RucmAg!%kGj*Qou?t1qo8</q5jIqs/uC*s02I,s0D[2s0hs;s1A<E
+s1nZOs2=rXs2tAds3Ueos4%)"s4RG,s53k:s6'FIs6fjTs7--]s7lQhrVQWmp\k-is7lWds7--U
+s5s@:s4..ps2P)Ss0hs/s/Q*ss/#ads-3P at s+UKgs1/06s![nQs&K(ps%EA_s$crSO$<S/s$H`S
+s%WMjs&K)%s'u(Gs)\3cq0r at Is0hs?iP,?*s186=s0Ma1s/uC%s/#ais.B=^s-itTs-EVKs-WhU
+s.KCfs/>t!s02O0s1&*@s1SHQbJsAXJ]@T,qZ-B1JcFR+rrAkpJ,~>
+JcF-trr at WMhuBa+r;aMpq0mlYm6:>pk<=HGomZl>qgOYks$-NOs%35cs&8r#s().Gs)\3es+13.
+s-3PLs-WhUs.]Oos0Vg:s2=r\s3gpOs2Y/as3gqts4IA+s5*e7s53k4s4mY.s4IA&s4%(ss3Uek
+s31Mcs2Y/Xs2"`Ms1\NGs1&*7s0;U.s0)I*s/c7$jf83Ys/uC-s0Ma4s186Hs2b5_s3CYns4IA,
+rS[_4s4mY(s3^kks2k;Vs0r$5s/c%9s*"EZs(:M)s'u(@s(VLLs)A!Zs*+Kfs*=Wks*Xipo7$^e
+s*4Qcs)A!Rs(;:?s'G_.s&K(rs%UUaq>Z"pqgSDBpO7\nh>dKTV#Pr~>
+JcF-trr at WMhuBa+r;aMpq0mlYm6:>pk<=HGomZl>qgQ"<s$-NKs$?ZOs$cr\s%r_os&T/)s'u(E
+s)S-as*ap%s,[2Is.TIls0)I2s1\NPs3(Ggs4%)&s5<k:s5<q6s4dS+s3gqjs2=rPrVccns*XjW
+s1&*:s/uC#s.TI^s-3PBs+LE"s)e9Xs(_RDs'5S(s%`Sgs%NG`s$QfN\N^$[s%*/cs&B#'s(;:P
+s*t'&s,[2Ks.o[ms/Q+)s18#Ts1JBCs0r$5s/>sis-E\Ds+UK$s)e9Ws(D@@s'5S's%iYds$Q`K
+s$-NNs%!)_s%r_qs',M2s(24Fs)A!\s*FWl[=7rOJU[KFqZ-A>JcFR+rrAkpJ,~>
+JcF-trr at WMhuBasr;aO2q8RucmAg!%kGj*Qou?t1qo8</q5jIqs/uC*s02I,s0D[2s0hs;s1A<E
+s1nZOs2=rXs2tAds3Ueos4%)"s4RG,s53k:s6'FIs6fjTs7--]s7lQhrVQWmp\k-is7lWds7--U
+s5s@:s4..ps2P)Ss0hs/s/Q*ss/#ads-3P at s+UKgs1/06s![nQs&K(ps%EA_s$crSO$<S/s$H`S
+s%WMjs&K)%s'u(Gs)\3cq0r at Is0hs?iP,?*s186=s0Ma1s/uC%s/#ais.B=^s-itTs-EVKs-WhU
+s.KCfs/>t!s02O0s1&*@s1SHQbJsAXJ]@T,qZ-B1JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)s$$A]_*7[DJNiHbq0q?fJU[EDrVubDOZre0s$ZlZs%iYos',M9s)J'as+(-'
+s,[2Is.97as.fUos0Ma<s2=r`s475+s(;;Xs4IA-rS[_5s5*e1s4IA&s4..us3^kms3:Ses2k;]
+s2G#Us2"`Ls1A<As1&*;s0Vg0rN6+$s/XnSs/l=)s02O.s0hsAs2"`Rs2b5bs3gqts4RG-s53k8
+s4mY-s4..ss2b5Vs1JB at q8WGds*4Q^s(1G(s'u(As(_RNs)A![s*4Qhs*FWks*aKfs*Ocis)S-V
+s(VLDs'Yk2s&]4us%^[bq>Z(rq#Kr6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)s$$A]_*7[DJNiHbq0q?fJU[EDrVubD[m'gVs$6NKs$cr[s%r_qs&oA.s(24I
+s)n?hs+:9.s-*JRs/,h!s0hs at s2G#^s3q"us4IA.s5X.Bs5s@@s5!_0s4@:us2tAZs1SC0s82hD
+s1/0=s0Vg.s/#acs-*J at s+UK$s)n?Ys(;:As'Yk0s&/kis%<;_s%*/Ws$+%Xs$H`Vs%iYls&f;1
+s(q^Ys+(-,s-<VVs.]Ols0;U7q0r at Vs186?s0hs2s/,ges-3PBs+C>ts)S-Vs(MF?s&f;"s%WM`
+s$H`Ns$$HIs$ZlXs%WMks&]5*s'l"@s(q^Ts*+Kjs*_;(q>Z(rq#Kr6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qs/Q"t_5d=NJZA+;q8VHpJ]@N*rVuc7orA%nqlTaus0)I,rNZ=,s0Ma6s1&*@
+s1SHJs24lUs2b5`s3CYls4%)"s4IA+s5!_5s5j:Fs6]jVrU^']s7QEfrVQKip\k-is7lWds7$'S
+s5a46s3^kgs24lMs0D['s.]Ods.97Vs,I&2s*=XPs/uBuruM,;s%35Xs$)3$s$-NOs%*/`s%r`!
+s'bq?s)%R\s.o[qs0D[:j1bQ,s1A<As0hs7s0)I's/,gks.KC`s-s%Vs-NbOs-<VNs-s%\s.]Ok
+s/Z1's0Ma7s186Cs2W=&q>Z)eq#Ks)JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)s$$A]_*7[DJNiHbq0q?fJU[EDrVubDOZre0s$ZlZs%iYos',M9s)J'as+(-'
+s,[2Is.97as.fUos0Ma<s2=r`s475+s(;;Xs4IA-rS[_5s5*e1s4IA&s4..us3^kms3:Ses2k;]
+s2G#Us2"`Ls1A<As1&*;s0Vg0rN6+$s/XnSs/l=)s02O.s0hsAs2"`Rs2b5bs3gqts4RG-s53k8
+s4mY-s4..ss2b5Vs1JB at q8WGds*4Q^s(1G(s'u(As(_RNs)A![s*4Qhs*FWks*aKfs*Ocis)S-V
+s(VLDs'Yk2s&]4us%^[bq>Z(rq#Kr6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)s$$A]_*7[DJNiHbq0q?fJU[EDrVubD[m'gVs$6NKs$cr[s%r_qs&oA.s(24I
+s)n?hs+:9.s-*JRs/,h!s0hs at s2G#^s3q"us4IA.s5X.Bs5s@@s5!_0s4@:us2tAZs1SC0s82hD
+s1/0=s0Vg.s/#acs-*J at s+UK$s)n?Ys(;:As'Yk0s&/kis%<;_s%*/Ws$+%Xs$H`Vs%iYls&f;1
+s(q^Ys+(-,s-<VVs.]Ols0;U7q0r at Vs186?s0hs2s/,ges-3PBs+C>ts)S-Vs(MF?s&f;"s%WM`
+s$H`Ns$$HIs$ZlXs%WMks&]5*s'l"@s(q^Ts*+Kjs*_;(q>Z(rq#Kr6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qs/Q"t_5d=NJZA+;q8VHpJ]@N*rVuc7orA%nqlTaus0)I,rNZ=,s0Ma6s1&*@
+s1SHJs24lUs2b5`s3CYls4%)"s4IA+s5!_5s5j:Fs6]jVrU^']s7QEfrVQKip\k-is7lWds7$'S
+s5a46s3^kgs24lMs0D['s.]Ods.97Vs,I&2s*=XPs/uBuruM,;s%35Xs$)3$s$-NOs%*/`s%r`!
+s'bq?s)%R\s.o[qs0D[:j1bQ,s1A<As0hs7s0)I's/,gks.KC`s-s%Vs-NbOs-<VNs-s%\s.]Ok
+s/Z1's0Ma7s186Cs2W=&q>Z)eq#Ks)JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)q`alWa$0<JJNiHbq0q3bJU[QHrVubDOZre0s$ZlZs%iYps'5S<s)n?ks+LE/
+s-*JQs.o[os/Z1*s1A<Ls2tAqs5F"As)S.ns53k5s5!_0s4[M+s474us3L_js31Mcs2b5[s2=rS
+s1nZKs1JBDs1&*:s0Ma2s02O+s/aVJs/c7&s/uC.s1/0As1\NMs2Y/_s3CYls4./%s4dS1s5F"6
+s4RG"s31M`s2+TOs,I&3s*F]^s(VLFlXKm)s(D at Is).jWs*"Efs*F]ls*XcnomZphs*=Wes)A!R
+s(;:>s'5S+s&8qnaaX'cMgkI%l$e3`h>dKTV#Pr~>
+JcF-trr at WMhuB[)q`alWa$0<JJNiHbq0q3bJU[QHrVubD[m'gVs$6NKs$cr[s%iYps',M3s(MFO
+s*+Kms+gW9s-`n^s/c7.s1\NPs31Mls4[M.s5*e8s5j4Ds5j:<s4[M(s3Uefs2+fMrVccns*XjU
+s0D[+s.fU_s,m>:s+(,ts*"E[s(;:<s'>Y/s&T.qs%*/[s$m#Ws$QfN\N^$[s%*/as%`Sos'Pe>
+s)A!as+UK7s-it[s/5n$s1%lRs1JBCs1&*<s0;U(s.o[as-!D=s+(,os)\3Vs().8s&]4ts%EA]
+s$ZlRs$?ZMs$crZs%`Sns&oA.s'u(Cs).jXs*4Ql[=7rOMgkI%l$e3`h>dKTV#Pr~>
+JcF-trr at WMhuB[qql9Mna/\sTJZA+;q8V<lJ]@Z.rVuc7orA%ns/l7&qlg%(rNZ=,s0Ma4s0hs;
+s1A<Fs2"`Rs2P)\s31Mhs3gqts4@;)s4mY2s5O(@s6K^Ss7H9`s7cQgs8)]lnbrLcs7lWds7$'R
+s5X.3s3:S_s1eTEs0)I!s.01Xs-NbHs+^Q$s)S.>s.fU^rt>?&s$D9#rBC6Gs$QfVs%r_qs',M2
+q0r at 3s.KCis0Vg8s17C-s1SHEs1/0=s0_m2s/c6us.o[gs.B=]s-itTqj7>Os.97bs/#aqs0)I/
+s0hs<s1A<ObJsAXMoPPml,J;Sh>dKTV#Pr~>
+JcF-trr at WMhuB[)q`alWa$0<JJNiHbq0q3bJU[QHrVubDOZre0s$ZlZs%iYps'5S<s)n?ks+LE/
+s-*JQs.o[os/Z1*s1A<Ls2tAqs5F"As)S.ns53k5s5!_0s4[M+s474us3L_js31Mcs2b5[s2=rS
+s1nZKs1JBDs1&*:s0Ma2s02O+s/aVJs/c7&s/uC.s1/0As1\NMs2Y/_s3CYls4./%s4dS1s5F"6
+s4RG"s31M`s2+TOs,I&3s*F]^s(VLFlXKm)s(D at Is).jWs*"Efs*F]ls*XcnomZphs*=Wes)A!R
+s(;:>s'5S+s&8qnaaX'cMgkI%l$e3`h>dKTV#Pr~>
+JcF-trr at WMhuB[)q`alWa$0<JJNiHbq0q3bJU[QHrVubD[m'gVs$6NKs$cr[s%iYps',M3s(MFO
+s*+Kms+gW9s-`n^s/c7.s1\NPs31Mls4[M.s5*e8s5j4Ds5j:<s4[M(s3Uefs2+fMrVccns*XjU
+s0D[+s.fU_s,m>:s+(,ts*"E[s(;:<s'>Y/s&T.qs%*/[s$m#Ws$QfN\N^$[s%*/as%`Sos'Pe>
+s)A!as+UK7s-it[s/5n$s1%lRs1JBCs1&*<s0;U(s.o[as-!D=s+(,os)\3Vs().8s&]4ts%EA]
+s$ZlRs$?ZMs$crZs%`Sns&oA.s'u(Cs).jXs*4Ql[=7rOMgkI%l$e3`h>dKTV#Pr~>
+JcF-trr at WMhuB[qql9Mna/\sTJZA+;q8V<lJ]@Z.rVuc7orA%ns/l7&qlg%(rNZ=,s0Ma4s0hs;
+s1A<Fs2"`Rs2P)\s31Mhs3gqts4@;)s4mY2s5O(@s6K^Ss7H9`s7cQgs8)]lnbrLcs7lWds7$'R
+s5X.3s3:S_s1eTEs0)I!s.01Xs-NbHs+^Q$s)S.>s.fU^rt>?&s$D9#rBC6Gs$QfVs%r_qs',M2
+q0r at 3s.KCis0Vg8s17C-s1SHEs1/0=s0_m2s/c6us.o[gs.B=]s-itTqj7>Os.97bs/#aqs0)I/
+s0hs<s1A<ObJsAXMoPPml,J;Sh>dKTV#Pr~>
+JcF-trr at WMhuB[)ofi<Sb<G`NJNiHbq0q'^JU[RtqgOYks$-NOs%<;es&K)(s(VLVs+:9,s,I&F
+s.KCjs0)I/s186Js2tAfs5X.Ds6]i-s4[M1s5*e.s475#s4%(rs3:Sbs2P)Xs24lQs1eTIs1A<A
+s0r$9s0Ma2s0)I)s/a8 at s/Z1(s0D[4s1&*As2"`Rs2Y/^s3CYls4%)#s4dS1s5F"5s4@;!s3:AZ
+s-WhIs+C>os)S-Ws(_REm:-*,s(MFJs)7pYs*+KgrHnQlrI+?fs*Ochs)J'Ts(D@@s'>Y-s&B"p
+aaX'cOad0-iI6 at Xh>dKTV#Pr~>
+JcF-trr at WMhuB[)ofi<Sb<G`NJNiHbq0q'^JU[RtqgQ"<s$-BGs$ZlYs%iYps'5S6s(hXUs*Xj"
+s,I&Es.KCls0Ma;s2=r]s3q#%s5F"<rT4(Cs6TdOs6'F at s4RG&s3L_ds2+fNs8N&os7H>1s/H$o
+s.97Xs,[26s*Xihs)S-Xs(D@<s&]5#s&B"rs%NG]s$ZlSrBgNK\N^$[s%*/^s%EAis'5S8s(VLS
+s*k!*s-<VUs/,h"s0qfQs1JBCs1/0>s0D[*s/#ags-WhIs+^Q&s*4Q_s(MF at s',M's%iYes%*/Z
+s$ZlQs$QfUs%EAgs&K)'s'Yk<s(_RQs)n?g[=7rOOad0-iI6 at Xh>dKTV#Pr~>
+JcF-trr at WMhuB[qor at rjbGtBXJZA+;q8V0hJ]@Zgqo8</s/c7&rNH%$s0;O.s0Ma4s0_m8s1/0B
+s1eTNs2G#Ys2tAds3Ueps475&s4mY2s5<q;s60LMs763arV?Kis82iomJ[(_s7lWds6p!Qs5X.3
+s31M[s1JB?s/Z0os-itOs,d8:s*t&ks(hY/s-s%Rrt,3$s$D9#pHJUEs%35ds&AfCs,R,Es.KCo
+s02O0s0r$@s1Rg6s1SHEs1/0>s0hs4s/l="s/#ais.KC_s-rnRs-WhTs.97as/#aps/uC.s0_m:
+s186NbJsAXOiI7uiPpHKh>dKTV#Pr~>
+JcF-trr at WMhuB[)ofi<Sb<G`NJNiHbq0q'^JU[RtqgOYks$-NOs%<;es&K)(s(VLVs+:9,s,I&F
+s.KCjs0)I/s186Js2tAfs5X.Ds6]i-s4[M1s5*e.s475#s4%(rs3:Sbs2P)Xs24lQs1eTIs1A<A
+s0r$9s0Ma2s0)I)s/a8 at s/Z1(s0D[4s1&*As2"`Rs2Y/^s3CYls4%)#s4dS1s5F"5s4@;!s3:AZ
+s-WhIs+C>os)S-Ws(_REm:-*,s(MFJs)7pYs*+KgrHnQlrI+?fs*Ochs)J'Ts(D@@s'>Y-s&B"p
+aaX'cOad0-iI6 at Xh>dKTV#Pr~>
+JcF-trr at WMhuB[)ofi<Sb<G`NJNiHbq0q'^JU[RtqgQ"<s$-BGs$ZlYs%iYps'5S6s(hXUs*Xj"
+s,I&Es.KCls0Ma;s2=r]s3q#%s5F"<rT4(Cs6TdOs6'F at s4RG&s3L_ds2+fNs8N&os7H>1s/H$o
+s.97Xs,[26s*Xihs)S-Xs(D@<s&]5#s&B"rs%NG]s$ZlSrBgNK\N^$[s%*/^s%EAis'5S8s(VLS
+s*k!*s-<VUs/,h"s0qfQs1JBCs1/0>s0D[*s/#ags-WhIs+^Q&s*4Q_s(MF at s',M's%iYes%*/Z
+s$ZlQs$QfUs%EAgs&K)'s'Yk<s(_RQs)n?g[=7rOOad0-iI6 at Xh>dKTV#Pr~>
+JcF-trr at WMhuB[qor at rjbGtBXJZA+;q8V0hJ]@Zgqo8</s/c7&rNH%$s0;O.s0Ma4s0_m8s1/0B
+s1eTNs2G#Ys2tAds3Ueps475&s4mY2s5<q;s60LMs763arV?Kis82iomJ[(_s7lWds6p!Qs5X.3
+s31M[s1JB?s/Z0os-itOs,d8:s*t&ks(hY/s-s%Rrt,3$s$D9#pHJUEs%35ds&AfCs,R,Es.KCo
+s02O0s0r$@s1Rg6s1SHEs1/0>s0hs4s/l="s/#ais.KC_s-rnRs-WhTs.97as/#aps/uC.s0_m:
+s186NbJsAXOiI7uiPpHKh>dKTV#Pr~>
+JcF-trr at WMhuB[)nNQmOcT_/RJNiHbq0ppZKms"#qgOYks$-NOs%<;fs&T/*s(_RXs+C?1s,m>N
+s.o[rs0Ma:s2+fYs3CYls5s at Hs6]i-s4[M1s5*e,s3^kns3L_hs2b5Xs1eTJs1JBCs1&*;s0Vg3
+s02O+s/c7$]rM+6s0)I.s0hs=s1SHJs24lWs2tAds3Ueqs4@;+s5*e7s5!_-q8WH0s-`nFs*aon
+s*"E^s(MFEs().>nRDN0s(VLMs)J']s*=Wjs*O]lrI+Ehs*Xiks)\3Xs(VLDs'Pe0s&K(raaX'c
+R==r3gO=_Rh>dKTV#Pr~>
+JcF-trr at WMhuB[)nNQmOcT_/RJNiHbq0ppZKms"#qgQ"<rBL6Gs$ZlYs%iYqs'G_<s)A!_s+13-
+s-!DPs/,h#s186Is3(Gks4[M3s60LJrTsRMrU0^Ns5X.6s4%(os2G#Ps1&+%s6]jJs'l"ts-<VG
+s,6o1s*F]bs(_RHs().;s&]4ss%`Sfs%EA`s$H`Os$6NI[m'gYs$crXs%*/cs&oA/s'l"Es*+Kp
+s,6oDs.o[ts0h`Ps1J<As1/09s/c6ts.o[bs-3PBs+LE"s)e9Ws(24;s&oA#s%`Sfs%EA]s$QfQ
+s$ZlYs%NGjs&]5*s'l"As).jXs*=Wm[sn/QR==r3gO=_Rh>dKTV#Pr~>
+JcF-trr at WMhuB[qnZ)Nfc`6f\JZA+;q8V$dKuX)kqo8</s/c7&s0)I,qm$%(s0Ma4s0_m8s0r$>
+s1SHJs24lVs2b5`s3:Sjs3q#"s4RG.s53k8s5j:Fs6p![s8)]lkPbGYs7lWds6p!Ps5O(1s31MZ
+s1&*7s/>shs-NbIs,$c,s*4Q^s(;;&s-`nPrt,3$s$D9#o031As%)s7s+C?1s-`nas/H%"s0;U7
+s186Cs1Rs:s1SHErOMs;s0D[-s/H$qs.fUfs.97\rL<bSs-s%[s.TIgs/H%$s0D[3s0r$=s2W=&
+q>Zl&q#K0hJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)nNQmOcT_/RJNiHbq0ppZKms"#qgOYks$-NOs%<;fs&T/*s(_RXs+C?1s,m>N
+s.o[rs0Ma:s2+fYs3CYls5s at Hs6]i-s4[M1s5*e,s3^kns3L_hs2b5Xs1eTJs1JBCs1&*;s0Vg3
+s02O+s/c7$]rM+6s0)I.s0hs=s1SHJs24lWs2tAds3Ueqs4@;+s5*e7s5!_-q8WH0s-`nFs*aon
+s*"E^s(MFEs().>nRDN0s(VLMs)J']s*=Wjs*O]lrI+Ehs*Xiks)\3Xs(VLDs'Pe0s&K(raaX'c
+R==r3gO=_Rh>dKTV#Pr~>
+JcF-trr at WMhuB[)nNQmOcT_/RJNiHbq0ppZKms"#qgQ"<rBL6Gs$ZlYs%iYqs'G_<s)A!_s+13-
+s-!DPs/,h#s186Is3(Gks4[M3s60LJrTsRMrU0^Ns5X.6s4%(os2G#Ps1&+%s6]jJs'l"ts-<VG
+s,6o1s*F]bs(_RHs().;s&]4ss%`Sfs%EA`s$H`Os$6NI[m'gYs$crXs%*/cs&oA/s'l"Es*+Kp
+s,6oDs.o[ts0h`Ps1J<As1/09s/c6ts.o[bs-3PBs+LE"s)e9Ws(24;s&oA#s%`Sfs%EA]s$QfQ
+s$ZlYs%NGjs&]5*s'l"As).jXs*=Wm[sn/QR==r3gO=_Rh>dKTV#Pr~>
+JcF-trr at WMhuB[qnZ)Nfc`6f\JZA+;q8V$dKuX)kqo8</s/c7&s0)I,qm$%(s0Ma4s0_m8s0r$>
+s1SHJs24lVs2b5`s3:Sjs3q#"s4RG.s53k8s5j:Fs6p![s8)]lkPbGYs7lWds6p!Ps5O(1s31MZ
+s1&*7s/>shs-NbIs,$c,s*4Q^s(;;&s-`nPrt,3$s$D9#o031As%)s7s+C?1s-`nas/H%"s0;U7
+s186Cs1Rs:s1SHErOMs;s0D[-s/H$qs.fUfs.97\rL<bSs-s%[s.TIgs/H%$s0D[3s0r$=s2W=&
+q>Zl&q#K0hJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)m6:IKdm!SVJNiHbq0p^TMgkX)qgOYks$-NOs%<;fs&T/*s(_RXs+C?2s-<VV
+s/H%&s1/0Gs2G#\s3CYms69RNs6fo.s4[M1s5*e,s3L_gs2tA^s24lNs186>s0_m5s0;U-s/l=%
+Z)[i*s0)I/s0hs<s1JBIs24lVs2k;cs3Uets4RG-s5*e7q8WH;s.TIVs+^Q*s*jujs(q^Ms(MFF
+nRDN.s(;:Gs).jWs*"EgrHnQlrI+Ehs*Xils)e9Zs(_RFs'Yk2s&T.taaX'cTmle;dsclJh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)m6:IKdm!SVJNiHbq0p^TMgkX)qgQ"<q`k*Gs$cr]s&8r$s'l"Ds)n?is+^Q6
+s-Wh\s/l=1s1nZVs3^l"s5F"As6p!XrU^!Ys7--Us5a47s3gqcs1JB>s0)Igs5a44s&8rWs+gW+
+s*Xijs)7pLs'Pe2s&oA&s%r_es%!)Xs$QfQs$*\Ns$?ZOs$ZlUs%NGls&f;*s(24Ls*Ocrs,?uG
+s/,h&q0r at VrO`*@s0Vg.s/Q*ts.KCZs,d8<s+12ps)A!Ps'u(7s&]4us%r_is%*/Ys$ZlSs$m#[
+s%iYps'#G2s(;:Is)S-as*Oco\UOASTmle;dsclJh>dKTV#Pr~>
+JcF-trr at WMhuB[qmAg*be#N5`JZA+;q8Ug^MoP_qqo8</s/c7&s0)I-qm-%(s0_m8s0r$<s1A<F
+s2"`Rs2Y/]s31Mgs3^krs4@;)s5!_5s5X.As6K^Ts7ZKjj8K#Us7lWcs6fpOs5O(1s3(GYs0r$3
+s.o[as-3PAs+:9!s)e9Vs'l"rs-<VKrt,3$s$D9#mlpPrs*4Qts-!DSs.]Ois/uC1s0r$=s17a7
+s1SHErOW$=s0Ma/s/Z1!s/,gjs.B7\rLEnWs.01]s.KCfs/>t"s02O0s0hs;s2W=&q>[/.q#Jm`
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)m6:IKdm!SVJNiHbq0p^TMgkX)qgOYks$-NOs%<;fs&T/*s(_RXs+C?2s-<VV
+s/H%&s1/0Gs2G#\s3CYms69RNs6fo.s4[M1s5*e,s3L_gs2tA^s24lNs186>s0_m5s0;U-s/l=%
+Z)[i*s0)I/s0hs<s1JBIs24lVs2k;cs3Uets4RG-s5*e7q8WH;s.TIVs+^Q*s*jujs(q^Ms(MFF
+nRDN.s(;:Gs).jWs*"EgrHnQlrI+Ehs*Xils)e9Zs(_RFs'Yk2s&T.taaX'cTmle;dsclJh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)m6:IKdm!SVJNiHbq0p^TMgkX)qgQ"<q`k*Gs$cr]s&8r$s'l"Ds)n?is+^Q6
+s-Wh\s/l=1s1nZVs3^l"s5F"As6p!XrU^!Ys7--Us5a47s3gqcs1JB>s0)Igs5a44s&8rWs+gW+
+s*Xijs)7pLs'Pe2s&oA&s%r_es%!)Xs$QfQs$*\Ns$?ZOs$ZlUs%NGls&f;*s(24Ls*Ocrs,?uG
+s/,h&q0r at VrO`*@s0Vg.s/Q*ts.KCZs,d8<s+12ps)A!Ps'u(7s&]4us%r_is%*/Ys$ZlSs$m#[
+s%iYps'#G2s(;:Is)S-as*Oco\UOASTmle;dsclJh>dKTV#Pr~>
+JcF-trr at WMhuB[qmAg*be#N5`JZA+;q8Ug^MoP_qqo8</s/c7&s0)I-qm-%(s0_m8s0r$<s1A<F
+s2"`Rs2Y/]s31Mgs3^krs4@;)s5!_5s5X.As6K^Ts7ZKjj8K#Us7lWcs6fpOs5O(1s3(GYs0r$3
+s.o[as-3PAs+:9!s)e9Vs'l"rs-<VKrt,3$s$D9#mlpPrs*4Qts-!DSs.]Ois/uC1s0r$=s17a7
+s1SHErOW$=s0Ma/s/Z1!s/,gjs.B7\rLEnWs.01]s.KCfs/>t"s02O0s0hs;s2W=&q>[/.q#Jm`
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)ks#%Gf09"ZJNiHbq0pRPO+.'-qgOYks$-NPs%EAhs&]5,s(hXZs+LE4s-s%c
+s02O5s2"`WrQG5es3gr6s7$'Ys)\4os53k5s474rs2Y/Ys2+fMs1/0;s02O+s/`&ss/c7(s0D[4
+s1/0Bs1eTNs2G#]s3gqss4@;(s5Edns0r$-s-s%Ks,-i/s*=W`s).jRs(Lk1s().Cs(q^Ss)e9c
+rHnQlrI+Ehs*Xils*"E^s(q^Js'l"6s&f;"aaX'cVgeLCbC5$Bh>dKTV#Pr~>
+JcF-trr at WMhuB[)ks#%Gf09"ZJNiHbq0pRPO+.'-qgQ(>s$-NKs$?ZOs$QfWs%r_ss'G_;s)7p^
+s+13-s-*JQs/5n&s1SHQs3L_ss53k>s6p!]s7lQhs7u]gs7--Ss5<q.s3:SYs0Ma,s/,hUs4dS"
+s$cs:s*=Wds).jNs'u(5s&8qos%WMcs%!)Us$3DEs$-NKs$H`Ws%WMis&B#(s(VLOs)e9ls,R,K
+s/#O?s1SBDs1A<<s02O+s/c6rs.'+Ts,m>;s*t&ks)%dKs'bq3s&T/!s%iYes%!)Ys$crTs%!)`
+s&8r"s'Pe;s(hXRs*"Egs*Xip]70SUVgeLCbC5$Bh>dKTV#Pr~>
+JcF-trr at WMhuB[ql)O[^f;eYdJZA+;q8U[ZO2h.uqo8</s/c7&s0)I-s0DU0q6^11s0r$<s1/0B
+s1eTNs2G#Zs2tAcs3CYls4%)$s4[M0s5F"=s60LMs763as8:pUs8;oks7?9Ys60LAs474ns1nZC
+s/Q*is-*J?s+:8rs)n?\s(D@<s-<VHs,d6ls%*/VJNiNdq0r?_s*k!+s-WhUs.TIns0Ma4s0hs<
+n\5%:qn)m=s0Vg1s/uC's/H$ps.]OcrLWnWs.B=as.fUms/Z1's0D[4s0r$LrQ!7(q>[A4qZ+gZ
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)ks#%Gf09"ZJNiHbq0pRPO+.'-qgOYks$-NPs%EAhs&]5,s(hXZs+LE4s-s%c
+s02O5s2"`WrQG5es3gr6s7$'Ys)\4os53k5s474rs2Y/Ys2+fMs1/0;s02O+s/`&ss/c7(s0D[4
+s1/0Bs1eTNs2G#]s3gqss4@;(s5Edns0r$-s-s%Ks,-i/s*=W`s).jRs(Lk1s().Cs(q^Ss)e9c
+rHnQlrI+Ehs*Xils*"E^s(q^Js'l"6s&f;"aaX'cVgeLCbC5$Bh>dKTV#Pr~>
+JcF-trr at WMhuB[)ks#%Gf09"ZJNiHbq0pRPO+.'-qgQ(>s$-NKs$?ZOs$QfWs%r_ss'G_;s)7p^
+s+13-s-*JQs/5n&s1SHQs3L_ss53k>s6p!]s7lQhs7u]gs7--Ss5<q.s3:SYs0Ma,s/,hUs4dS"
+s$cs:s*=Wds).jNs'u(5s&8qos%WMcs%!)Us$3DEs$-NKs$H`Ws%WMis&B#(s(VLOs)e9ls,R,K
+s/#O?s1SBDs1A<<s02O+s/c6rs.'+Ts,m>;s*t&ks)%dKs'bq3s&T/!s%iYes%!)Ys$crTs%!)`
+s&8r"s'Pe;s(hXRs*"Egs*Xip]70SUVgeLCbC5$Bh>dKTV#Pr~>
+JcF-trr at WMhuB[ql)O[^f;eYdJZA+;q8U[ZO2h.uqo8</s/c7&s0)I-s0DU0q6^11s0r$<s1/0B
+s1eTNs2G#Zs2tAcs3CYls4%)$s4[M0s5F"=s60LMs763as8:pUs8;oks7?9Ys60LAs474ns1nZC
+s/Q*is-*J?s+:8rs)n?\s(D@<s-<VHs,d6ls%*/VJNiNdq0r?_s*k!+s-WhUs.TIns0Ma4s0hs<
+n\5%:qn)m=s0Vg1s/uC's/H$ps.]OcrLWnWs.B=as.fUms/Z1's0D[4s0r$LrQ!7(q>[A4qZ+gZ
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)jZ`VCgHPF^JNiHbq0pFLPCEK1qgOYks$6TRs%EAhs&]5,s).jbs,?uFs/#b!
+s1&*Es2k;gs3gqms3L_os6p!Zs7H>7s4[M1s5*e,s3L_cs1nZJs1/0:s02O)SZ;^js/uC-s0_m:
+s1A<Hs2P)`s3L_ns4@;0q8WHLs0;U!s-E\Is+gW&s)e9]s)A!Om:-*,s(VLMs)J']s*=Wks*Xcn
+pO<-is*=Wfs)S-Vs(MFBs'G_.s&@*hq>[XIq#JB_JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)jZ`VCgHPF^JNiHbq0pFLPCEK1qgQ:Dq`k*Hs$H`Qs$ZlUs%EAjs',M4s(_RT
+s*Xj#s,[2Hs.TIns0hsEs3:Sps5*e;s6]jZqu-Qms7u]gs6p!Ms4mY's2k;Rs/uBss.02Cs3gqe
+s#g=#s(hXGs'Yk2s&K(qs%*/Ys$H`MRm-j:s$QfUs%35bs&T/,s().Ds)n?os,R,Gq0r at XrOr6D
+s0hs7s0D[/s/>sjs.01Ws,[27s*Xifs(q^Hs'Pe0s&T.ss%NGas%*/Ys$QfTs%EAhs&T/)s'u(C
+s)7p[s*4Qis*VG-q>[XIq#JB_JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qjf87ZgT((hJZA+;q8UOVPK*S$qo8</s/c7&s0)I-s0DU1q6g73s1&*>s186D
+s1nZPs2P)\s2tAds3L_ns4./%s4dS2s5O(?s60LMs763as8:pUs8;oks763Ws60LAs4%(fs1&*1
+s.B=Us,-i-s*=W`s(hXKs'u(4s,m>@s,?sds%*/VJNiNdq0r?Xs*+Krs,m>Hs.97hs02O/s0Ma9
+n\5%:qn2s?s0_m5s0;U-s/c7!s.o[grLj1_rLX%]s.KCes/5mss/l=*s0Ma7s2k5\rQ!C,q>[Y<
+q#JCRJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)jZ`VCgHPF^JNiHbq0pFLPCEK1qgOYks$6TRs%EAhs&]5,s).jbs,?uFs/#b!
+s1&*Es2k;gs3gqms3L_os6p!Zs7H>7s4[M1s5*e,s3L_cs1nZJs1/0:s02O)SZ;^js/uC-s0_m:
+s1A<Hs2P)`s3L_ns4@;0q8WHLs0;U!s-E\Is+gW&s)e9]s)A!Om:-*,s(VLMs)J']s*=Wks*Xcn
+pO<-is*=Wfs)S-Vs(MFBs'G_.s&@*hq>[XIq#JB_JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)jZ`VCgHPF^JNiHbq0pFLPCEK1qgQ:Dq`k*Hs$H`Qs$ZlUs%EAjs',M4s(_RT
+s*Xj#s,[2Hs.TIns0hsEs3:Sps5*e;s6]jZqu-Qms7u]gs6p!Ms4mY's2k;Rs/uBss.02Cs3gqe
+s#g=#s(hXGs'Yk2s&K(qs%*/Ys$H`MRm-j:s$QfUs%35bs&T/,s().Ds)n?os,R,Gq0r at XrOr6D
+s0hs7s0D[/s/>sjs.01Ws,[27s*Xifs(q^Hs'Pe0s&T.ss%NGas%*/Ys$QfTs%EAhs&T/)s'u(C
+s)7p[s*4Qis*VG-q>[XIq#JB_JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qjf87ZgT((hJZA+;q8UOVPK*S$qo8</s/c7&s0)I-s0DU1q6g73s1&*>s186D
+s1nZPs2P)\s2tAds3L_ns4./%s4dS2s5O(?s60LMs763as8:pUs8;oks763Ws60LAs4%(fs1&*1
+s.B=Us,-i-s*=W`s(hXKs'u(4s,m>@s,?sds%*/VJNiNdq0r?Xs*+Krs,m>Hs.97hs02O/s0Ma9
+n\5%:qn2s?s0_m5s0;U-s/c7!s.o[grLj1_rLX%]s.KCes/5mss/l=*s0Ma7s2k5\rQ!C,q>[Y<
+q#JCRJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)iBI,=iBI'dJNiHbq0p:HQ[\o5qgOYks$6TRs%WMns'>Y;s*4R"s-Nb\s02O6
+s1nZUs3^l"s4[M(s3gqrs763`s7cP=s4mY3s5*e,s3L_cs1eTEs0hs6s0)I(Q`C(gs0;U2s1A<I
+s2b5_s3:Sqs5Edns2+fFs/Z0ks-<VBs+12ps*"E]s(Le/s'u(As(hXQs)\3as*F]mrI+Ehs*Xil
+s*"E`s)7pPs(24<s',M'aaX'c[sn,Q]mbP4h>dKTV#Pr~>
+JcF-trr at WMhuB[)iBI,=iBI'dJNiHbq0p:HQ[\o5qgQFHrBL0Es$H`Ss$m#Ys%*/bs&T/,s(;:L
+s*+Kns,$c>s.'+cs02O8s2Y/fs4dS6s6BXSs7cEhs8;oms7QE[s5X.4s3L_as1&*/s.'+Rs3Uef
+s1SFfs(249s&]4us%NG_s$Dc1s$-NMs$m#as&B#$s'G_?s*4Qos,$Q#s0hs=s1\NHs186?s0hs7
+s/c6us.o[es-E\Es+C>ss)S-Ts().8s&f;"s%`Ses%35Zs$QfSs%35cs&B#%s'bq?s).jXs*+Kg
+s*F]m]mfeW[sn,Q]mbP4h>dKTV#Pr~>
+JcF-trr at WMhuB[qiMubTiMu^nJZA+;q8UCRQcB"(qo8T7q5aOss/l=)s0;U0s0Vg6q6p=5s1/0@
+s1A<Fs2"`Rs2Y/]s3(Ges3L_os475's4mY4s5X.Bs6BXOs763as8:pUs8;oks7--Ss5O(3s2k;Q
+s/l<ps-<VAs+12ps)7pMs'l"9s'>Y*s,I&8s+p[\s$m#TJNiNdq0r?Ts)J'es,-i>s-s%bs/l=)
+s0Ma9n%Sb6s1JBCs0r$:s0Vg3s0)I's/,gks.]Ics.B=_s.KCcs.fUjs/>sus0)I.s0hsMrQ5#Z
+rQ!O0q>[qDq#J+JJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)iBI,=iBI'dJNiHbq0p:HQ[\o5qgOYks$6TRs%WMns'>Y;s*4R"s-Nb\s02O6
+s1nZUs3^l"s4[M(s3gqrs763`s7cP=s4mY3s5*e,s3L_cs1eTEs0hs6s0)I(Q`C(gs0;U2s1A<I
+s2b5_s3:Sqs5Edns2+fFs/Z0ks-<VBs+12ps*"E]s(Le/s'u(As(hXQs)\3as*F]mrI+Ehs*Xil
+s*"E`s)7pPs(24<s',M'aaX'c[sn,Q]mbP4h>dKTV#Pr~>
+JcF-trr at WMhuB[)iBI,=iBI'dJNiHbq0p:HQ[\o5qgQFHrBL0Es$H`Ss$m#Ys%*/bs&T/,s(;:L
+s*+Kns,$c>s.'+cs02O8s2Y/fs4dS6s6BXSs7cEhs8;oms7QE[s5X.4s3L_as1&*/s.'+Rs3Uef
+s1SFfs(249s&]4us%NG_s$Dc1s$-NMs$m#as&B#$s'G_?s*4Qos,$Q#s0hs=s1\NHs186?s0hs7
+s/c6us.o[es-E\Es+C>ss)S-Ts().8s&f;"s%`Ses%35Zs$QfSs%35cs&B#%s'bq?s).jXs*+Kg
+s*F]m]mfeW[sn,Q]mbP4h>dKTV#Pr~>
+JcF-trr at WMhuB[qiMubTiMu^nJZA+;q8UCRQcB"(qo8T7q5aOss/l=)s0;U0s0Vg6q6p=5s1/0@
+s1A<Fs2"`Rs2Y/]s3(Ges3L_os475's4mY4s5X.Bs6BXOs763as8:pUs8;oks7--Ss5O(3s2k;Q
+s/l<ps-<VAs+12ps)7pMs'l"9s'>Y*s,I&8s+p[\s$m#TJNiNdq0r?Ts)J'es,-i>s-s%bs/l=)
+s0Ma9n%Sb6s1JBCs0r$:s0Vg3s0)I's/,gks.]Ics.B=_s.KCcs.fUjs/>sus0)I.s0hsMrQ5#Z
+rQ!O0q>[qDq#J+JJcFR+rrAkpJ,~>
+OoPF]_uK`:JcFX-WIEScr;bqCq0mlYm6:>p_*4?;rVubDP<T"2s$H`[s&K)*s(;:Ls+136s.TIq
+s186Js2tAhs4RG2s5O(8s4[M(s7QEfs8)bCs53k7s5*e,s3CYas1SHBs0hs6s0)I(PH+Yds0hs?
+s24lUs31Mps5Edns2G#Ls/uBus-itKs+UK#s*=W`s(Le/s'u(>s(MFKs)A![s*4QkrI+Ehs*Xil
+s*"E`s)7pQs(;:>s',M(aaX'c^OGtY[=3],h>dKTV#Pr~>
+OoPF]_uK`:JcFX-WIEScr;bqCq0mlYm6:>p_*4?;rVubD_`n)bs$6HIs$QfVs%35_s%EAhs&oA2
+s(_RSs*F]ts,?uEs.KCls0VgAs3(Gns53k:s6BXRs7cEhs8;oms7QE[s5O(/s31M[s0_m)s-`nF
+s2Y/Ss0VeTs'5S#s%35Ys$H`Os$)?(s$ZlYs%`Sms'Pe at s)S-dq0r at Gs0;U3s1JBGs1JBCs1&*6
+s/uC&s/,ges-*J>s*t&ns)J'Rs'l"5s&T.rs%WMbs$crTs$ZlWs%NGjs&f;.s(24Hs)S-^s*+Kg
+s*Oco^OH"Y^OGtY[=3],h>dKTV#Pr~>
+OoPF]_uK`:JcFX-WQ*\mr;brZq8RucmAg!%_5a!ErVuc7s/Q+"q5jOss0)I-s0D[3s0_[3s1/0@
+s1A<Ds1eTNs2G#Ys2tAcs3CYls4%)#s4dS1s5F">s69RMs6fpXs7cQkj8K#Ss7--Ss5X.6s3gq_
+s02Nus-NbDs+(,ns)7pLs'G_.s&]5"s&/lRs+UK+rri?fs$2-!mlpPrs'bqEs*=Wrs,R,Hs.]On
+s/l=-s1.I0s1SHEs186 at s0r$9s0D[,s/>sos.o[is.TC`s.KCcs.fUis/5mss/uC-s0r$OrQ>)\
+rQ,#ZfuEjf^W-'L[Dmdth>dKTV#Pr~>
+OoPF]_uK`:JcFX-WIEScr;bqCq0mlYm6:>p_*4?;rVubDP<T"2s$H`[s&K)*s(;:Ls+136s.TIq
+s186Js2tAhs4RG2s5O(8s4[M(s7QEfs8)bCs53k7s5*e,s3CYas1SHBs0hs6s0)I(PH+Yds0hs?
+s24lUs31Mps5Edns2G#Ls/uBus-itKs+UK#s*=W`s(Le/s'u(>s(MFKs)A![s*4QkrI+Ehs*Xil
+s*"E`s)7pQs(;:>s',M(aaX'c^OGtY[=3],h>dKTV#Pr~>
+OoPF]_uK`:JcFX-WIEScr;bqCq0mlYm6:>p_*4?;rVubD_`n)bs$6HIs$QfVs%35_s%EAhs&oA2
+s(_RSs*F]ts,?uEs.KCls0VgAs3(Gns53k:s6BXRs7cEhs8;oms7QE[s5O(/s31M[s0_m)s-`nF
+s2Y/Ss0VeTs'5S#s%35Ys$H`Os$)?(s$ZlYs%`Sms'Pe at s)S-dq0r at Gs0;U3s1JBGs1JBCs1&*6
+s/uC&s/,ges-*J>s*t&ns)J'Rs'l"5s&T.rs%WMbs$crTs$ZlWs%NGjs&f;.s(24Hs)S-^s*+Kg
+s*Oco^OH"Y^OGtY[=3],h>dKTV#Pr~>
+OoPF]_uK`:JcFX-WQ*\mr;brZq8RucmAg!%_5a!ErVuc7s/Q+"q5jOss0)I-s0D[3s0_[3s1/0@
+s1A<Ds1eTNs2G#Ys2tAcs3CYls4%)#s4dS1s5F">s69RMs6fpXs7cQkj8K#Ss7--Ss5X.6s3gq_
+s02Nus-NbDs+(,ns)7pLs'G_.s&]5"s&/lRs+UK+rri?fs$2-!mlpPrs'bqEs*=Wrs,R,Hs.]On
+s/l=-s1.I0s1SHEs186 at s0r$9s0D[,s/>sos.o[is.TC`s.KCcs.fUis/5mss/uC-s0r$OrQ>)\
+rQ,#ZfuEjf^W-'L[Dmdth>dKTV#Pr~>
+PQ1R]p&FO^huE]VJcFX-WIEG_r;c(Gq0mlYm6:>p]0;p;rVubDRm-j:s$6TMrBgNQs&B#(s(24J
+s*+L#s.'+js1&*Is3:Sns4[M3s69RKs5s@@s5*eNs8;oqs*t(,s5*e2s4%(ms2=rLrO)[3s0)I(
+PH+Ybs0;U5s1\NMs31Mps5Edns2b5Rs0D[,s.]OZs,-i,s*=W`s(Le/rF>k=s(VLMs)J']s*=Qk
+pO<-is*=Wfs)\3Zs(q^Is'bq4s&R6jq>\E_qZ*aIJcFR+rrAkpJ,~>
+PQ1R]p&FO^huE]VJcFX-WIEG_r;c(Gq0mlYm6:>p]0;p;rVubD_`n)bs$?NKs$ZlXs%EAds%`Sn
+s'5S8s)%dZs*k!'s,d8Ls.o[ts1&*Hs3L_us5X.?s69RQs7cEhs8;ols7H?Ys5O(.s2b5Ss0;U!
+s-<V?s1\NAs/Z/Bs&K(ls$crUs$H`Os$)3$s$QfWs&8r%s().Gq0r@>s/>t!s1/0As1JBFs1JBA
+s0_m4s/l<ss-`nJs+UK%s*+K]s(D@?s',M&s%`Scs$crTs$ZlWs%<;fs&T/*s'u(Ds)A![s*"Ee
+s*F]m^OH"Y`I@[aXaYj$h>dKTV#Pr~>
+PQ1R]p&FO^huE]VJcFX-WQ*Pir;c)^q8RucmAg!%];hRErVuc7s/Q+#q5sUus0)I-s0D[3s0_m9
+qmc[;s1A<Ds1\NKs24lWs2k;as3:Sjs3gqts4RG-s53k9s6'FJs6fpVs7?9bs8;3]rVZWks7lW[
+s5X.7s4%(ls1/0-s-WhGs+12ms)%dIs'>Y(s%r_js%EA`s+UK(s+(+LJNiB`q0r?Ls(VLTs*=Wu
+s-!DRs/5n!s0Ma9kJ$u0s1JBCs1&*9s0)I&s/5mos/#ais.KCas.TIes.fUis/5mss/uC-s0r$P
+rQG/^rQ5)\fuEjf`Q%cTXi>qlh>dKTV#Pr~>
+PQ1R]p&FO^huE]VJcFX-WIEG_r;c(Gq0mlYm6:>p]0;p;rVubDRm-j:s$6TMrBgNQs&B#(s(24J
+s*+L#s.'+js1&*Is3:Sns4[M3s69RKs5s@@s5*eNs8;oqs*t(,s5*e2s4%(ms2=rLrO)[3s0)I(
+PH+Ybs0;U5s1\NMs31Mps5Edns2b5Rs0D[,s.]OZs,-i,s*=W`s(Le/rF>k=s(VLMs)J']s*=Qk
+pO<-is*=Wfs)\3Zs(q^Is'bq4s&R6jq>\E_qZ*aIJcFR+rrAkpJ,~>
+PQ1R]p&FO^huE]VJcFX-WIEG_r;c(Gq0mlYm6:>p]0;p;rVubD_`n)bs$?NKs$ZlXs%EAds%`Sn
+s'5S8s)%dZs*k!'s,d8Ls.o[ts1&*Hs3L_us5X.?s69RQs7cEhs8;ols7H?Ys5O(.s2b5Ss0;U!
+s-<V?s1\NAs/Z/Bs&K(ls$crUs$H`Os$)3$s$QfWs&8r%s().Gq0r@>s/>t!s1/0As1JBFs1JBA
+s0_m4s/l<ss-`nJs+UK%s*+K]s(D@?s',M&s%`Scs$crTs$ZlWs%<;fs&T/*s'u(Ds)A![s*"Ee
+s*F]m^OH"Y`I@[aXaYj$h>dKTV#Pr~>
+PQ1R]p&FO^huE]VJcFX-WQ*Pir;c)^q8RucmAg!%];hRErVuc7s/Q+#q5sUus0)I-s0D[3s0_m9
+qmc[;s1A<Ds1\NKs24lWs2k;as3:Sjs3gqts4RG-s53k9s6'FJs6fpVs7?9bs8;3]rVZWks7lW[
+s5X.7s4%(ls1/0-s-WhGs+12ms)%dIs'>Y(s%r_js%EA`s+UK(s+(+LJNiB`q0r?Ls(VLTs*=Wu
+s-!DRs/5n!s0Ma9kJ$u0s1JBCs1&*9s0)I&s/5mos/#ais.KCas.TIes.fUis/5mss/uC-s0r$P
+rQG/^rQ5)\fuEjf`Q%cTXi>qlh>dKTV#Pr~>
+Q2g^]p&FO^huE]VJcFX-WIE;[r;c4Kq0mlYm6:>p[m$X;rVubDRm-j:s$QfSrC-`Ws&]53s)%dY
+s*t'2s.o\'s2+f]s4@;.s5a4Fs7--[s6fpPs5j:Zs82ils*=Xts4@;$s3gqis2+fHrNlO0s0)I(
+PH+Ybs0;U3s1/0Hs3:Sqs5Edns3(GXs186=s/Q*js-!D<s*Ocbs(Le/rF>k<s(D at Is)7pYs*+Ki
+s*aWjs*Xils*"E`s)A!Ss(D@@s'5S*aaX'cc$oHgVga3sh>dKTV#Pr~>
+Q2g^]p&FO^huE]VJcFX-WIE;[r;c4Kq0mlYm6:>p[m$X;rVubD_`n)bs$?ZOrBpTRs%35as%iYl
+s&]5-s(MFNs*=Wqs,6oAs.B=ks0Vg=s2Y/fs5!_;s60LIs7$'_qu-Qls7lWds6TdEs4%(gs1A<6
+s.KCTs+UK`s0;U%ru_8?s%<5Xs$H`Os$)&us$cr^s&T/+q0r at 4s.B=js0hs;s1/0 at rP&<Es1/0:
+s/Q*ls-<VBs+LE#s)e9Ws(;:=s&oA"s%NG^s$QfSs%!)]s%`Sns',M3s(MFNs)\3`s*4Qis*VS1
+q>\]gq#I=AJcFR+rrAkpJ,~>
+Q2g^]p&FO^huE]VJcFX-WQ*Der;c5bq8RucmAg!%\#Q:ErVuc7s/Q+#q6'Uus0;U0s0Vg6s0r$<
+rOMs?s1JBFs1eTNs2G#Zs2tAds3L_ns4%)#s4[M/s5F"=s60LMs7$'Zs7QEds8;3]rVHKgs7ZKW
+s4mY)s3CY_s0M`us,[24s*+KYs'l"4s&B"ks%!)Ws$H`NqgSPFJNiB`q0r?Hs(24Gs)A!cs+p]?
+s.KCms0Ma9j1bQ,s1A<>s0;U*s/H$ss/,gks.TIcs.TIes.o[ks/5mss/uC.s1&*RrQP5`rQ>/]
+fuEjfc,TPZVoF;fh>dKTV#Pr~>
+Q2g^]p&FO^huE]VJcFX-WIE;[r;c4Kq0mlYm6:>p[m$X;rVubDRm-j:s$QfSrC-`Ws&]53s)%dY
+s*t'2s.o\'s2+f]s4@;.s5a4Fs7--[s6fpPs5j:Zs82ils*=Xts4@;$s3gqis2+fHrNlO0s0)I(
+PH+Ybs0;U3s1/0Hs3:Sqs5Edns3(GXs186=s/Q*js-!D<s*Ocbs(Le/rF>k<s(D at Is)7pYs*+Ki
+s*aWjs*Xils*"E`s)A!Ss(D@@s'5S*aaX'cc$oHgVga3sh>dKTV#Pr~>
+Q2g^]p&FO^huE]VJcFX-WIE;[r;c4Kq0mlYm6:>p[m$X;rVubD_`n)bs$?ZOrBpTRs%35as%iYl
+s&]5-s(MFNs*=Wqs,6oAs.B=ks0Vg=s2Y/fs5!_;s60LIs7$'_qu-Qls7lWds6TdEs4%(gs1A<6
+s.KCTs+UK`s0;U%ru_8?s%<5Xs$H`Os$)&us$cr^s&T/+q0r at 4s.B=js0hs;s1/0 at rP&<Es1/0:
+s/Q*ls-<VBs+LE#s)e9Ws(;:=s&oA"s%NG^s$QfSs%!)]s%`Sns',M3s(MFNs)\3`s*4Qis*VS1
+q>\]gq#I=AJcFR+rrAkpJ,~>
+Q2g^]p&FO^huE]VJcFX-WQ*Der;c5bq8RucmAg!%\#Q:ErVuc7s/Q+#q6'Uus0;U0s0Vg6s0r$<
+rOMs?s1JBFs1eTNs2G#Zs2tAds3L_ns4%)#s4[M/s5F"=s60LMs7$'Zs7QEds8;3]rVHKgs7ZKW
+s4mY)s3CY_s0M`us,[24s*+KYs'l"4s&B"ks%!)Ws$H`NqgSPFJNiB`q0r?Hs(24Gs)A!cs+p]?
+s.KCms0Ma9j1bQ,s1A<>s0;U*s/H$ss/,gks.TIcs.TIes.o[ks/5mss/uC.s1&*RrQP5`rQ>/]
+fuEjfc,TPZVoF;fh>dKTV#Pr~>
+S,`-]p&Fsje,TFJJcFX-WIE/Wr;c at Oq0mlYm6:>pZTb@;qu?VDRm-j:s$ZlWrCHr]s'#G:s)n?i
+s+gWBs/c76s31Mqs5O(Cs6p![s8)cks763Ss5<qNs7H?^s)S.fs3Ueks31Mas1nZDrNZC,s0)I(
+PH+Ybs0;U3s0r$Es31Mps5Edns3CY`s2+fMs0D[%s-s%Os+UJts(h"2rF>k<s(24Ds(q^Ss)e9c
+s*XQis*Xims*+Kbs)J'Us(D@@s'>Y+aaX'ceUI;oT72 at kh>dKTV#Pr~>
+S,`-]p&Fsje,TFJJcFX-WIE/Wr;c at Oq0mlYm6:>pZTb@;qu?VD_`n)bs$?ZOrC$ZTs%<;cs%r_p
+s'#G4s(hXUs*Xj$s,d8Ls/#b!s1/0Gs2tAls5F"Cs6K^Ps7$'_qu-Qls7cQbs6TdEs3q"fs1&*/
+s-s%Js*t'Ss/c6truV2=s%3/Vs$H`Os$)&us$6TNs%!)cq0r at +s-`nas0Ma5s0hs<q7cm at s02O#
+s-s%Ns,-i.s*=Wbs(hXGs'>Y*s%r_fs$m#Ws%!)]s%WMls'#G2s(MFMs)\3`s*4Qis*VS1q>\uo
+q#I%9JcFR+rrAkpJ,~>
+S,`-]p&Fsje,TFJJcFX-WQ*8ar;cAfq8RucmAg!%Z`:"Equ?W7s/Q+#s/u7&qlp+*s0D[3s0_m9
+s1&$=s1JBFs1\NKs2=rXs2tAcs3CYks3q#!s4RG-s53k9s5s at Hs6p!Ys7H?cs7u]mli$k[s7lQe
+s7H?Ss4RFus2Y/Rs/c6gs+p]"s)%dEs&f:us%35Wq*+\)rr at U6lTY,ns&K)*s'l"@s)\3is,6oC
+s.TIns0gn#s1JBAs0Ma.s/Z1!s/5mms.]Oes.]Ogs.o[ks/5mss0)I/s1&*SrQY;bs3(Gbs2`m5
+q>]!bq#I&,JcFR+rrAkpJ,~>
+S,`-]p&Fsje,TFJJcFX-WIE/Wr;c at Oq0mlYm6:>pZTb@;qu?VDRm-j:s$ZlWrCHr]s'#G:s)n?i
+s+gWBs/c76s31Mqs5O(Cs6p![s8)cks763Ss5<qNs7H?^s)S.fs3Ueks31Mas1nZDrNZC,s0)I(
+PH+Ybs0;U3s0r$Es31Mps5Edns3CY`s2+fMs0D[%s-s%Os+UJts(h"2rF>k<s(24Ds(q^Ss)e9c
+s*XQis*Xims*+Kbs)J'Us(D@@s'>Y+aaX'ceUI;oT72 at kh>dKTV#Pr~>
+S,`-]p&Fsje,TFJJcFX-WIE/Wr;c at Oq0mlYm6:>pZTb@;qu?VD_`n)bs$?ZOrC$ZTs%<;cs%r_p
+s'#G4s(hXUs*Xj$s,d8Ls/#b!s1/0Gs2tAls5F"Cs6K^Ps7$'_qu-Qls7cQbs6TdEs3q"fs1&*/
+s-s%Js*t'Ss/c6truV2=s%3/Vs$H`Os$)&us$6TNs%!)cq0r at +s-`nas0Ma5s0hs<q7cm at s02O#
+s-s%Ns,-i.s*=Wbs(hXGs'>Y*s%r_fs$m#Ws%!)]s%WMls'#G2s(MFMs)\3`s*4Qis*VS1q>\uo
+q#I%9JcFR+rrAkpJ,~>
+S,`-]p&Fsje,TFJJcFX-WQ*8ar;cAfq8RucmAg!%Z`:"Equ?W7s/Q+#s/u7&qlp+*s0D[3s0_m9
+s1&$=s1JBFs1\NKs2=rXs2tAcs3CYks3q#!s4RG-s53k9s5s at Hs6p!Ys7H?cs7u]mli$k[s7lQe
+s7H?Ss4RFus2Y/Rs/c6gs+p]"s)%dEs&f:us%35Wq*+\)rr at U6lTY,ns&K)*s'l"@s)\3is,6oC
+s.TIns0gn#s1JBAs0Ma.s/Z1!s/5mms.]Oes.]Ogs.o[ks/5mss0)I/s1&*SrQY;bs3(Gbs2`m5
+q>]!bq#I&,JcFR+rrAkpJ,~>
+S,`-]p&Fsje,TFJJcFX-WIE#Sr;cLSq0mlYm6:>pY<K(;p](8BSNd'<s$ZlYrCd/cs'>Y?s*=Wt
+s,R,Qs0MaEs3q#,s6K^Vs7ZKgs8;ofs6BXCs4IA?s6]jPs(hYXs2k;]s2G#Us1\N at rNH1&s/_Ea
+s/l=+s0Vg6s1eTVs4./,q8WH^s3CYes2P)Ms/uBus.'+Ms+:8os(VLEnRDH,s(). at s(;:Gs)7pY
+s*4QkpO<-is*F]hs)e9\s)%dLs'u(7s&dBlq>]2uqZ)t3JcFR+rrAkpJ,~>
+S,`-]p&Fsje,TFJJcFX-WIE#Sr;cLSq0mlYm6:>pY<K(;p](8B`BO;ds$?ZOs$ZlUs%!)^s%`Sk
+s&T/+s(D at Ms*+Kos,-iBs.KCls0_mAs2P)bs4RG5s6]jTs7--\s7cEhs82ijs7?9Ws5F")s1eT:
+s.]OXs+^Pus/Z0rs.fT7s&/kfqa1<Ks$)&us$6TNs$ZlVq0r@"s-E\\s02O/s0Ma9q7cmAs0Vg-
+s.TIZs,[28s*juls)A!Ps'bq2s&B"ns%<;^s%<;as%WMks&oA0s(D at Ls)S-^s*4Qis*VS1q>]2u
+qZ)t3JcFR+rrAkpJ,~>
+S,`-]p&Fsje,TFJJcFX-WQ*,]r;cMjq8RucmAg!%YH"_Ep](96s/c7's0)C*qm$+*s0Vg6s0r$<
+s186Bs1SHHs1eTMs2G#Zs3(Ges3Ueos4./%s4dS1s5F"=s60LLs7--]s7ZKgs82'Zs8)cirUp3]
+s5j:5s31MZs0r$*s-*J7s)S-Ls&f:rs%35Ys$6BDqgSPFJNiB`q0r??s&K)%s'G_?s*"Ens,?uD
+s.TIos1&*@jhCc-s1&*9s02O*s/Q*ts/#ajrM'=es/#ams/>sus0)I0s1/0UrQbAds31Mcs2`m5
+q>]3hqZ)u&JcFR+rrAkpJ,~>
+S,`-]p&Fsje,TFJJcFX-WIE#Sr;cLSq0mlYm6:>pY<K(;p](8BSNd'<s$ZlYrCd/cs'>Y?s*=Wt
+s,R,Qs0MaEs3q#,s6K^Vs7ZKgs8;ofs6BXCs4IA?s6]jPs(hYXs2k;]s2G#Us1\N at rNH1&s/_Ea
+s/l=+s0Vg6s1eTVs4./,q8WH^s3CYes2P)Ms/uBus.'+Ms+:8os(VLEnRDH,s(). at s(;:Gs)7pY
+s*4QkpO<-is*F]hs)e9\s)%dLs'u(7s&dBlq>]2uqZ)t3JcFR+rrAkpJ,~>
+S,`-]p&Fsje,TFJJcFX-WIE#Sr;cLSq0mlYm6:>pY<K(;p](8B`BO;ds$?ZOs$ZlUs%!)^s%`Sk
+s&T/+s(D at Ms*+Kos,-iBs.KCls0_mAs2P)bs4RG5s6]jTs7--\s7cEhs82ijs7?9Ws5F")s1eT:
+s.]OXs+^Pus/Z0rs.fT7s&/kfqa1<Ks$)&us$6TNs$ZlVq0r@"s-E\\s02O/s0Ma9q7cmAs0Vg-
+s.TIZs,[28s*juls)A!Ps'bq2s&B"ns%<;^s%<;as%WMks&oA0s(D at Ls)S-^s*4Qis*VS1q>]2u
+qZ)t3JcFR+rrAkpJ,~>
+S,`-]p&Fsje,TFJJcFX-WQ*,]r;cMjq8RucmAg!%YH"_Ep](96s/c7's0)C*qm$+*s0Vg6s0r$<
+s186Bs1SHHs1eTMs2G#Zs3(Ges3Ueos4./%s4dS1s5F"=s60LLs7--]s7ZKgs82'Zs8)cirUp3]
+s5j:5s31MZs0r$*s-*J7s)S-Ls&f:rs%35Ys$6BDqgSPFJNiB`q0r??s&K)%s'G_?s*"Ens,?uD
+s.TIos1&*@jhCc-s1&*9s02O*s/Q*ts/#ajrM'=es/#ams/>sus0)I0s1/0UrQbAds31Mcs2`m5
+q>]3hqZ)u&JcFR+rrAkpJ,~>
+PQ1R]p&Fsje,TFJJcFX-WIDlOqZ-LWq0mlYm6:>pX$3e;p](,>Tg&K at s$ZlYs%WMgs&&f(s).j`
+s,-iBs/>t0s31Mss6'FMs7?9as7u]ms763Ls4[M#s60LFs5a2js2=rSs1nZKs1JBCs0M[+rN-%"
+PH+Ybs0;U0s0Ma=s2b5hs4I.es4RG's3gqms2+fGs0)I"s-`nGs*jufs)%dMs(:q5rF>k<rFQ"D
+s)7pYs*4QkpO<-is*F]is)n?^s).jMs'u(8s&dBlq>]K(q#HP+JcFR+rrAkpJ,~>
+PQ1R]p&Fsje,TFJJcFX-WIDlOqZ-LWq0mlYm6:>pX$3e;p](,>aZf_hs$?ZOs$ZlVs%35bs&&es
+s'#G3s(hXVs*Xj#s,[2Ks/#b"s186Ks31Mms5!_=s7--\s7QEds7lKis82iis7$'Ls474gs0Ma"
+s-E\Es*t&fs.o[ds.'*/s&&edq*G$FJNj*!s$H`Rs$ca4s+UK:s.TIps0)I/s1.s>s1JB=s/c6r
+s.01Ss,?u1s*Xihs)%dIs'G_-s&/kjs%EAcs%`Sis&/l"s'Yk>s)%dVs)n?ds*F]m^OH"Yj*pe(
+Oa_l]h>dKTV#Pr~>
+PQ1R]p&Fsje,TFJJcFX-WQ)uYqZ-Mnq8RucmAg!%X/`GEp](96s2k;`s0)C+qm-1,s0Vg6s0r$<
+s186Bs1\NJs1nZOs2G#[s3:Sis3^krs4@;)s5!_5s5X.As6BXPs7?9`s7cQhs82'Zs8)cis7H?_
+s7$'Ks474ms1JB:s.B=Ms*Oc^s'G_)s%`Scs$ZlPq*+\)rr at U6lTY,ns%!)_s%r_ps'bqDs*+Kp
+s,?uEs.o\"s0Vg8s17I/s1JBAs0Vg1s/uC&s/H$qs.oUgs.o[ks/,gps/Z1(s0Vg:s3U_jrQbGf
+s2tA_fuEjfj2UlpOiDtPh>dKTV#Pr~>
+PQ1R]p&Fsje,TFJJcFX-WIDlOqZ-LWq0mlYm6:>pX$3e;p](,>Tg&K at s$ZlYs%WMgs&&f(s).j`
+s,-iBs/>t0s31Mss6'FMs7?9as7u]ms763Ls4[M#s60LFs5a2js2=rSs1nZKs1JBCs0M[+rN-%"
+PH+Ybs0;U0s0Ma=s2b5hs4I.es4RG's3gqms2+fGs0)I"s-`nGs*jufs)%dMs(:q5rF>k<rFQ"D
+s)7pYs*4QkpO<-is*F]is)n?^s).jMs'u(8s&dBlq>]K(q#HP+JcFR+rrAkpJ,~>
+PQ1R]p&Fsje,TFJJcFX-WIDlOqZ-LWq0mlYm6:>pX$3e;p](,>aZf_hs$?ZOs$ZlVs%35bs&&es
+s'#G3s(hXVs*Xj#s,[2Ks/#b"s186Ks31Mms5!_=s7--\s7QEds7lKis82iis7$'Ls474gs0Ma"
+s-E\Es*t&fs.o[ds.'*/s&&edq*G$FJNj*!s$H`Rs$ca4s+UK:s.TIps0)I/s1.s>s1JB=s/c6r
+s.01Ss,?u1s*Xihs)%dIs'G_-s&/kjs%EAcs%`Sis&/l"s'Yk>s)%dVs)n?ds*F]m^OH"Yj*pe(
+Oa_l]h>dKTV#Pr~>
+PQ1R]p&Fsje,TFJJcFX-WQ)uYqZ-Mnq8RucmAg!%X/`GEp](96s2k;`s0)C+qm-1,s0Vg6s0r$<
+s186Bs1\NJs1nZOs2G#[s3:Sis3^krs4@;)s5!_5s5X.As6BXPs7?9`s7cQhs82'Zs8)cis7H?_
+s7$'Ks474ms1JB:s.B=Ms*Oc^s'G_)s%`Scs$ZlPq*+\)rr at U6lTY,ns%!)_s%r_ps'bqDs*+Kp
+s,?uEs.o\"s0Vg8s17I/s1JBAs0Vg1s/uC&s/H$qs.oUgs.o[ks/,gps/Z1(s0Vg:s3U_jrQbGf
+s2tA_fuEjfj2UlpOiDtPh>dKTV#Pr~>
+PQ1R]p&G$ls8Vfnh>dKTJcFX-WIDZIr;cj]q0mlYm6:>pV`qM;p]'u:V*=oDs$ZlYs%WMks&B#-
+s)A!es,?uKs/uC:s3L`"s69RPs7?9as7u]ms763Js3gqhs5F"8s5!][s1SHEs1/0=s0_m5s0;O'
+NN3#\s0)I,s0;U9s2P)as3^Y^s5F"7s4[M(s3(GZs1/06s.fU[s+^Q!s)n?]s).jJs'te4s'u"<
+s(24Fs)7pYs*4QkpO<-is*F]is)n?^s).jNs().9s&mHmq>]c0q#H8#JcFR+rrAkpJ,~>
+PQ1R]p&G$ls8Vfnh>dKTJcFX-WIDZIr;cj]q0mlYm6:>pV`qM;p]'u:bs).ls$?ZQs$m#Zs%WMj
+s&K)&s'G_;s)7p^s+(-,s-3PUs/Q+-s1nZWs3gr$s5O(Es7QEds7u]ls8;oqs8)cjs7H?Zs60L:
+s2tAPs/5m_s,-i.s*4QXs.01Vs-<U!s%r_bq*=sEJNj*!s$H`Qs$Z[3s+:94s.97js/l=-s1.s>
+s1JB=s/c6rs.TI\s,m>;s+12qs)J'Qs'l"5s&K(ps%WMhrD<Mms&oA0s(;:Js)J'\s*+Khs*VS1
+q>]c0q#H8#JcFR+rrAkpJ,~>
+PQ1R]p&G$ls8Vfnh>dKTJcFX-WQ)cSr;cktq8RucmAg!%VlI/Ep](96s2k;`s31Mfs0DO.qm?C2
+s0r$<s186Bs1\NKs2"`Qs2P)\s3:Sjs3q#!s4RG-s53k9s5j:Es6TdSs7?9`s7cQhs82'Zs8)ci
+s7H?]s6fpHs4..ks1A<3s-itDs*4QXs',M%s%`Scs$ZlPq*+\)rr at U6lTY,ns$$HLs%!)^s&]50
+s)%d\s+:91s.01is/l=*s0Ma<s1Rg6s1JBAs0Vg3s02O*s/Q*ss/#[is/#ams/5mrs/c7)s0_m<
+s3^elrQkMgs2tA_fuEjflc/`#M8k,Hh>dKTV#Pr~>
+PQ1R]p&G$ls8Vfnh>dKTJcFX-WIDZIr;cj]q0mlYm6:>pV`qM;p]'u:V*=oDs$ZlYs%WMks&B#-
+s)A!es,?uKs/uC:s3L`"s69RPs7?9as7u]ms763Js3gqhs5F"8s5!][s1SHEs1/0=s0_m5s0;O'
+NN3#\s0)I,s0;U9s2P)as3^Y^s5F"7s4[M(s3(GZs1/06s.fU[s+^Q!s)n?]s).jJs'te4s'u"<
+s(24Fs)7pYs*4QkpO<-is*F]is)n?^s).jNs().9s&mHmq>]c0q#H8#JcFR+rrAkpJ,~>
+PQ1R]p&G$ls8Vfnh>dKTJcFX-WIDZIr;cj]q0mlYm6:>pV`qM;p]'u:bs).ls$?ZQs$m#Zs%WMj
+s&K)&s'G_;s)7p^s+(-,s-3PUs/Q+-s1nZWs3gr$s5O(Es7QEds7u]ls8;oqs8)cjs7H?Zs60L:
+s2tAPs/5m_s,-i.s*4QXs.01Vs-<U!s%r_bq*=sEJNj*!s$H`Qs$Z[3s+:94s.97js/l=-s1.s>
+s1JB=s/c6rs.TI\s,m>;s+12qs)J'Qs'l"5s&K(ps%WMhrD<Mms&oA0s(;:Js)J'\s*+Khs*VS1
+q>]c0q#H8#JcFR+rrAkpJ,~>
+PQ1R]p&G$ls8Vfnh>dKTJcFX-WQ)cSr;cktq8RucmAg!%VlI/Ep](96s2k;`s31Mfs0DO.qm?C2
+s0r$<s186Bs1\NKs2"`Qs2P)\s3:Sjs3q#!s4RG-s53k9s5j:Es6TdSs7?9`s7cQhs82'Zs8)ci
+s7H?]s6fpHs4..ks1A<3s-itDs*4QXs',M%s%`Scs$ZlPq*+\)rr at U6lTY,ns$$HLs%!)^s&]50
+s)%d\s+:91s.01is/l=*s0Ma<s1Rg6s1JBAs0Vg3s02O*s/Q*ss/#[is/#ams/5mrs/c7)s0_m<
+s3^elrQkMgs2tA_fuEjflc/`#M8k,Hh>dKTV#Pr~>
+PQ1R]p]'[^huE]VJcFX-WIDNEr;c_DJNiHbq0o#$]70MSo7!Z&s$-NOs%35bs&/kus(24Ps+C?8
+s.o[us1nZ]s5!_ at s7--]s7ZKgs8;ofs5<q&s2+fis4IA&s&K*-s0Vg3s02O+s/_!UrN6+&s0)I5
+s2=rXs2t/Ws4[M/s5F"7s4..ns24lJs/uBns,R,1s*aoms)J'Ps(;:Bs((q7s'u"<s(VLNs)\3b
+s*XQis*Xims*4Qds)\3Ys(VLDs'Pe/aaX'cnUC?8JUW1Mh>dKTV#Pr~>
+PQ1R]p]'[^huE]VJcFX-WIDNEr;c_DJNiHbq0o#$]70MSo7#4RrBL<Ks$ZlWs%35`s%r_qs&oA.
+s'l"Cs)\3gs+UK6s-Wh]s/uC6s2G#bs4@;.s60LQs7lWjs82]ks763Zs6TdJs5F"+s1eT9s.'+H
+s*juls).jGs-E\Hs,R*hs%<;[q*0Eos$$HJrBgNOq0r?js,6oGs/5n!s0Ma9q7cmAs0Vg-s/>so
+s.01Ts,I&4s*aois)%dJs'Pe.s&/kns&&eos%r_os'#G1s(D at Js)J'\s*+Khs*VS1q>]u6qZ)1r
+JcFR+rrAkpJ,~>
+PQ1R]p]'[^huE]VJcFX-WQ)WOr;c`7JZA+;q8T,.]>jUFs2Y/]s2tAcs3:Sis3U_Oq6g73s1&*?
+s1A<Fs2"`Ps2=rXs2tAes3^kss4IA+s5*e7s5a4Bs60LLs6p!Ys7H?bs7u]ll2CYYs7cQcs7--U
+s5<q*s24lDs.]O[s+^Prs(D at 6s%r_is%35Ys$6BDqgSPFJNiB`q0r3)s$H`[s&f;2s)%d\s+^Q>
+s.fUks/H%'s186Bs1JBFn\5%9s1&*:s0Vg3s0)I(s/H$rrMBOkrMT[ps/c7*s0_m=s3gkns3Uel
+s3:Sds2`m5q>^!)qZ)2eJcFR+rrAkpJ,~>
+PQ1R]p]'[^huE]VJcFX-WIDNEr;c_DJNiHbq0o#$]70MSo7!Z&s$-NOs%35bs&/kus(24Ps+C?8
+s.o[us1nZ]s5!_ at s7--]s7ZKgs8;ofs5<q&s2+fis4IA&s&K*-s0Vg3s02O+s/_!UrN6+&s0)I5
+s2=rXs2t/Ws4[M/s5F"7s4..ns24lJs/uBns,R,1s*aoms)J'Ps(;:Bs((q7s'u"<s(VLNs)\3b
+s*XQis*Xims*4Qds)\3Ys(VLDs'Pe/aaX'cnUC?8JUW1Mh>dKTV#Pr~>
+PQ1R]p]'[^huE]VJcFX-WIDNEr;c_DJNiHbq0o#$]70MSo7#4RrBL<Ks$ZlWs%35`s%r_qs&oA.
+s'l"Cs)\3gs+UK6s-Wh]s/uC6s2G#bs4@;.s60LQs7lWjs82]ks763Zs6TdJs5F"+s1eT9s.'+H
+s*juls).jGs-E\Hs,R*hs%<;[q*0Eos$$HJrBgNOq0r?js,6oGs/5n!s0Ma9q7cmAs0Vg-s/>so
+s.01Ts,I&4s*aois)%dJs'Pe.s&/kns&&eos%r_os'#G1s(D at Js)J'\s*+Khs*VS1q>]u6qZ)1r
+JcFR+rrAkpJ,~>
+PQ1R]p]'[^huE]VJcFX-WQ)WOr;c`7JZA+;q8T,.]>jUFs2Y/]s2tAcs3:Sis3U_Oq6g73s1&*?
+s1A<Fs2"`Ps2=rXs2tAes3^kss4IA+s5*e7s5a4Bs60LLs6p!Ys7H?bs7u]ll2CYYs7cQcs7--U
+s5<q*s24lDs.]O[s+^Prs(D at 6s%r_is%35Ys$6BDqgSPFJNiB`q0r3)s$H`[s&f;2s)%d\s+^Q>
+s.fUks/H%'s186Bs1JBFn\5%9s1&*:s0Vg3s0)I(s/H$rrMBOkrMT[ps/c7*s0_m=s3gkns3Uel
+s3:Sds2`m5q>^!)qZ)2eJcFR+rrAkpJ,~>
+PQ1R]p](0lp](*jiW&oXJcFX-WIDHCs*jnHs*fM_m6:>pSNaf;p]']2XZlbLs$ZlYs%iYqs'G_B
+s*Xj)s-s%is0hsEs3^l(s6]jXrV$9es8;ofs5<q&s1JB\s3^kms%`Tts/l=%JZA[Ls/c7&s0r$A
+s1nZPq8WH`s475(s5F"6s474qs2=rGs/5m`s,$c0s*t&js(hXLs(MFEq-s;4s().Ds).jXs*4Qk
+pO<-is*F]is)n?_s)7pOs().9s&mHmq>^8>q#GtpqgO+rh>dKTV#Pr~>
+PQ1R]p](0lp](*jiW&oXJcFX-WIDHCs*jnHs*fM_m6:>pSNaf;p]']2h`h')rBU<Is$ZlWs%<;b
+s%iYns&f;-s'l"?s)%d[s+(-,s-*JRs/>t(s1eTWs4./*s5j:Is7?3arVHQls82ids60LDs5*e/
+s3(GOs.TISs*t&is(hXEs'#G`s,$c2rs&Kjs$;3"pHJUBrB^HMq0r?cs+LE9s.B=ls0Ma9q7cmA
+s0Vg/s/c7"s.TI\s,m>>s+C>ts)J'Rs'l"4s&K(ts&B"rs%r_ps'#G2s(;:Is)A!Zs*"Efs*VS1
+q>^8>q#GtpqgO+rh>dKTV#Pr~>
+PQ1R]p](0lp](*jiW&oXJcFX-WQ)QMs2P!;s2KVimAg!%SZ9HEp](97s2k;`s31Mfs3L_lrR1MM
+s0r$<s186Bs1\NLs24lUs2b5`s3L_ns4@;)s4mY3s5O(?s6'FGs6TdSs763^s7ZKfs8)cnli$k[
+s7cQas6]jKs4@:ms1862s-`nJs+C>ms().0s%WMcs%35Ys$6BDqgSPFJNiB`q0r3)s$-NPs%`Ss
+s'u(Js*t'0s.'+]s.o[us1&*>s186Bn\5%9s1&*<s0hs7s0;U,s/Z1!rMTOks/Q+$s0D[6s1JB\
+rR1_ns3L_is2tA_rQ!a6q>^91q#Gucqo43eh>dKTV#Pr~>
+PQ1R]p](0lp](*jiW&oXJcFX-WIDHCs*jnHs*fM_m6:>pSNaf;p]']2XZlbLs$ZlYs%iYqs'G_B
+s*Xj)s-s%is0hsEs3^l(s6]jXrV$9es8;ofs5<q&s1JB\s3^kms%`Tts/l=%JZA[Ls/c7&s0r$A
+s1nZPq8WH`s475(s5F"6s474qs2=rGs/5m`s,$c0s*t&js(hXLs(MFEq-s;4s().Ds).jXs*4Qk
+pO<-is*F]is)n?_s)7pOs().9s&mHmq>^8>q#GtpqgO+rh>dKTV#Pr~>
+PQ1R]p](0lp](*jiW&oXJcFX-WIDHCs*jnHs*fM_m6:>pSNaf;p]']2h`h')rBU<Is$ZlWs%<;b
+s%iYns&f;-s'l"?s)%d[s+(-,s-*JRs/>t(s1eTWs4./*s5j:Is7?3arVHQls82ids60LDs5*e/
+s3(GOs.TISs*t&is(hXEs'#G`s,$c2rs&Kjs$;3"pHJUBrB^HMq0r?cs+LE9s.B=ls0Ma9q7cmA
+s0Vg/s/c7"s.TI\s,m>>s+C>ts)J'Rs'l"4s&K(ts&B"rs%r_ps'#G2s(;:Is)A!Zs*"Efs*VS1
+q>^8>q#GtpqgO+rh>dKTV#Pr~>
+PQ1R]p](0lp](*jiW&oXJcFX-WQ)QMs2P!;s2KVimAg!%SZ9HEp](97s2k;`s31Mfs3L_lrR1MM
+s0r$<s186Bs1\NLs24lUs2b5`s3L_ns4@;)s4mY3s5O(?s6'FGs6TdSs763^s7ZKfs8)cnli$k[
+s7cQas6]jKs4@:ms1862s-`nJs+C>ms().0s%WMcs%35Ys$6BDqgSPFJNiB`q0r3)s$-NPs%`Ss
+s'u(Js*t'0s.'+]s.o[us1&*>s186Bn\5%9s1&*<s0hs7s0;U,s/Z1!rMTOks/Q+$s0D[6s1JB\
+rR1_ns3L_is2tA_rQ!a6q>^91q#Gucqo43eh>dKTV#Pr~>
+PQ1R]kPtJ\oDegjnc/UhJcFX-WIDHCqgSJDJNiNdq0n_q_g_@[l[H0(s$-NMs%35es&]5,s(;:R
+s+LE9s.]P"s1SHQs3q#,s6p!\rV6Egs8;ofs5<q&s1SHVs2tA_s%%^@orA%ms0D[4s1/0Bq8WHY
+s3L_ps5F"6s4RG&s3CYZs0)Hps,m>@s+:8ps).jRs(hXHpL=)2s(MFLs)\3bs*XQis*Xims*+Kc
+s)\3Ys(VLCs'G_-aaX'cq#Gtpo6u8jh>dKTV#Pr~>
+PQ1R]kPtJ\oDegjnc/UhJcFX-WIDHCqgSJDJNiNdq0n_q_g_@[l[IkXs$?TMrBpTSs%<;cs%iYm
+s&T/(s'bq>s(_RRs*Od!s,I&Gs.TIos1&*Hs3L_us53k<s6TdVqtL-ds82ims7$'Ms4mY+s3gqb
+s02Nks+LDns(D@=s&]4qs+p],s+(+LJNiZhs$-HIs$?I0s)%das,6o at s.97js0_[:s1JB=s0D[/
+s/l<ts.01Ws,m><s+(,ns).jJs'G_-s&T/"s&8qps&B#&s'bq>s(hXRs)\3`s*=Wl^OH"Yq#Gtp
+o6u8jh>dKTV#Pr~>
+PQ1R]kPtJ\oDegjnc/UhJcFX-WQ)QMqo8R7JZA1=q8Si&_oDHNrQ5)^s31Mfs3L_ls3genrO;a8
+s186Bs1\NLs24lVs2k;cs3Ueqs4RG,s5!_5s5X.As6'FHs6TdSs7--\s7QEes8)WjnbrLas7H?[
+s6BXGs5*e$s1eT>s.fUVs+gW&s)A!Hs&/khs%!)Ys$ZlPq*+\)rr at U6lTY,nq`b$Es$cr\s&&f!
+s(VLXs+p]?s-Wh\s/l=0s0r$<s1 at g8s1JBCs1/0>s0hs6s02O*s/Z*tql9[ts0)I/s1&*Cs4%"r
+s3^kms3:Sds2k5\rQ!m:q>^6jJ]@<$JcFR+rrAkpJ,~>
+PQ1R]kPtJ\oDegjnc/UhJcFX-WIDHCqgSJDJNiNdq0n_q_g_@[l[H0(s$-NMs%35es&]5,s(;:R
+s+LE9s.]P"s1SHQs3q#,s6p!\rV6Egs8;ofs5<q&s1SHVs2tA_s%%^@orA%ms0D[4s1/0Bq8WHY
+s3L_ps5F"6s4RG&s3CYZs0)Hps,m>@s+:8ps).jRs(hXHpL=)2s(MFLs)\3bs*XQis*Xims*+Kc
+s)\3Ys(VLCs'G_-aaX'cq#Gtpo6u8jh>dKTV#Pr~>
+PQ1R]kPtJ\oDegjnc/UhJcFX-WIDHCqgSJDJNiNdq0n_q_g_@[l[IkXs$?TMrBpTSs%<;cs%iYm
+s&T/(s'bq>s(_RRs*Od!s,I&Gs.TIos1&*Hs3L_us53k<s6TdVqtL-ds82ims7$'Ms4mY+s3gqb
+s02Nks+LDns(D@=s&]4qs+p],s+(+LJNiZhs$-HIs$?I0s)%das,6o at s.97js0_[:s1JB=s0D[/
+s/l<ts.01Ws,m><s+(,ns).jJs'G_-s&T/"s&8qps&B#&s'bq>s(hXRs)\3`s*=Wl^OH"Yq#Gtp
+o6u8jh>dKTV#Pr~>
+PQ1R]kPtJ\oDegjnc/UhJcFX-WQ)QMqo8R7JZA1=q8Si&_oDHNrQ5)^s31Mfs3L_ls3genrO;a8
+s186Bs1\NLs24lVs2k;cs3Ueqs4RG,s5!_5s5X.As6'FHs6TdSs7--\s7QEes8)WjnbrLas7H?[
+s6BXGs5*e$s1eT>s.fUVs+gW&s)A!Hs&/khs%!)Ys$ZlPq*+\)rr at U6lTY,nq`b$Es$cr\s&&f!
+s(VLXs+p]?s-Wh\s/l=0s0r$<s1 at g8s1JBCs1/0>s0hs6s02O*s/Z*tql9[ts0)I/s1&*Cs4%"r
+s3^kms3:Sds2k5\rQ!m:q>^6jJ]@<$JcFR+rrAkpJ,~>
+PQ1R]kPtJ\nc/Ofp&G$lJcFX-WIDHCq0r?-r;_C4o02u!Ps36;p]'?(^HVZ_s$?ZOs$ZlWs&&eu
+s'Pe<s).jbs,?uHs/H%0s2=r_s4@;2s7--`s7u]ks82ios763Js3CYXs3(A\s%%^@o;_hks/uC-
+s0_[Bs2G#Zs4%)-s5!_.s4..ts2G#Is/5mbs,m>8s*F]bs)A!Ss(:q5s'u(Bs)%dVs*+KjpO<-i
+s*=Wgs)e9]s).jMs'u(7s&dBlq#Gtpl[FEbh>dKTV#Pr~>
+PQ1R]kPtJ\nc/Ofp&G$lJcFX-WIDHCq0r?-r;_C4o02u!Ps36;p]'?(ks#,5rC$ZSs$m#Zs%NGh
+s&/kss&oA.s().Ds).jZs*t')s,m>Os/,h#s186Ks3L_us5*e:s6K^TrV$9as7lWjs7u]`s5a43
+s3L_fs1A<0s-!D/s(D at 9s&B"ks$Ha8rI4bHJNiTfrBL<Iq0r?Us)n?ks+gW;s.97is0r$?rP&<E
+s1&*;s0Vg2s/H$ms.97Xs,[27s*Xifs(_RCs',M*s&T.us&&ers',M2s(24Hs)A!Zs*"Efs*VS1
+q#Gtpl[FEbh>dKTV#Pr~>
+PQ1R]kPtJ\nc/Ofp&G$lJcFX-WQ)QMq8WH7r;_DKo;_W+Q)_mEp](-5s31Mfs3L_ls3gqrrRC_p
+s1/0 at s1A<Fs2"`Rs2Y/_s3L_ns475)s5!_3s5F"=s6'FGs6BXMs6fpWs7?9`s7cQhs82]kqu-Qm
+s82ims7u]gs6TdKs5O(7s4..hs0hs-s-s%Fs*t&ks(q^As%iYbs$ZlSs$H`Nq*+\)rr at U6lTY,n
+q`b$Es$cr\s&&ers'u(Ks+131s-<VWs/Z1,s0_m9s1 at g8s1SHFs1A<Bs1&*:s0D[/s/l1"rN6+&
+s0;U3s186Fs4./!s3q"qs3L_irQ>)\rQ*s;q#Guclc+MUh>dKTV#Pr~>
+PQ1R]kPtJ\nc/Ofp&G$lJcFX-WIDHCq0r?-r;_C4o02u!Ps36;p]'?(^HVZ_s$?ZOs$ZlWs&&eu
+s'Pe<s).jbs,?uHs/H%0s2=r_s4@;2s7--`s7u]ks82ios763Js3CYXs3(A\s%%^@o;_hks/uC-
+s0_[Bs2G#Zs4%)-s5!_.s4..ts2G#Is/5mbs,m>8s*F]bs)A!Ss(:q5s'u(Bs)%dVs*+KjpO<-i
+s*=Wgs)e9]s).jMs'u(7s&dBlq#Gtpl[FEbh>dKTV#Pr~>
+PQ1R]kPtJ\nc/Ofp&G$lJcFX-WIDHCq0r?-r;_C4o02u!Ps36;p]'?(ks#,5rC$ZSs$m#Zs%NGh
+s&/kss&oA.s().Ds).jZs*t')s,m>Os/,h#s186Ks3L_us5*e:s6K^TrV$9as7lWjs7u]`s5a43
+s3L_fs1A<0s-!D/s(D at 9s&B"ks$Ha8rI4bHJNiTfrBL<Iq0r?Us)n?ks+gW;s.97is0r$?rP&<E
+s1&*;s0Vg2s/H$ms.97Xs,[27s*Xifs(_RCs',M*s&T.us&&ers',M2s(24Hs)A!Zs*"Efs*VS1
+q#Gtpl[FEbh>dKTV#Pr~>
+PQ1R]kPtJ\nc/Ofp&G$lJcFX-WQ)QMq8WH7r;_DKo;_W+Q)_mEp](-5s31Mfs3L_ls3gqrrRC_p
+s1/0 at s1A<Fs2"`Rs2Y/_s3L_ns475)s5!_3s5F"=s6'FGs6BXMs6fpWs7?9`s7cQhs82]kqu-Qm
+s82ims7u]gs6TdKs5O(7s4..hs0hs-s-s%Fs*t&ks(q^As%iYbs$ZlSs$H`Nq*+\)rr at U6lTY,n
+q`b$Es$cr\s&&ers'u(Ks+131s-<VWs/Z1,s0_m9s1 at g8s1SHFs1A<Bs1&*:s0D[/s/l1"rN6+&
+s0;U3s186Fs4./!s3q"qs3L_irQ>)\rQ*s;q#Guclc+MUh>dKTV#Pr~>
+PQ1R]kPtJ\mJm%`qu?ZrJcFX-WIDHCq0r3)r;_C4pHJD%OZps;rVuhFs8V&,`BO;fs$crWs%*/]
+s%NGos'Yk>s).j[s+UK:s.TIss2"`Ys4./*s5a4Ns7u]ls8;ios763Js3L_Zs3(A\s%%^@n#HDg
+s/u1;s1\NQs4%)-s5!_.s475"s2Y/Ms/c6ns-3P?s*aohs)S-Us(:k3s(D at Js)S-`s*XQis*Xil
+s*"Eas)S-Ws(MFAs'>Y+c[P`kq>Z"pl[FEbh>dKTV#Pr~>
+PQ1R]kPtJ\mJm%`qu?ZrJcFX-WIDHCq0r3)r;_C4pHJD%OZps;rVuhFs8V&,m6:P9s$ZlVs%!)[
+s%<;ds&/kss&f;+s'bq?s(q^Us*=Wss,?uCs.KCjs02O7s2G#bs4[M0s5X.Ds7#pYs7cQhs7lW^
+s5X.1s2b5Ws0Vg"s,-hus'>Y&s%WM`s$?[7rI4bHJNiHbs$-=.s'PeAs)\3ds+^Q:s.B=ps0Ma7
+s186Es1JBCs1&*:s/l="s.o[ds-<VCs+12ps)7pMs'Yk1s&]5"s&/kts'5S4s(;:Is)A!Zs*"Ef
+s*Ve7qZ-HlJUZp6JcFR+rrAkpJ,~>
+PQ1R]kPtJ\mJm%`qu?ZrJcFX-WQ)QMq8W<3r;_DKpT"&/OfHUErVui9s8Vu>s31Mfs3L_ls3gqr
+rRLerrR_(_s1nZPs2P)]s3:Sks4%)$s5!_4s5<q:s5j:Es69RLs6TdRs7$'Zs7H?cs7uQhs8;io
+s82iks7cQes7QE_s6'F>s4[M's3:SXs0)Hrs-*J6s*"EZs().7s%NG\s$?ZMrBL*AqgSPFJNiB`
+q0r3)s$-NPs%EAfs&/l)s).j`s+p]=s.97js0D[2s0r$?mCrV6s1JBCs0r$8s0D[.s/u1$s0;U0
+s0hs>s2"`ds4..us3^kms3:McrQ>/^s2aBCqZ-HlJ]@#qJcFR+rrAkpJ,~>
+PQ1R]kPtJ\mJm%`qu?ZrJcFX-WIDHCq0r3)r;_C4pHJD%OZps;rVuhFs8V&,`BO;fs$crWs%*/]
+s%NGos'Yk>s).j[s+UK:s.TIss2"`Ys4./*s5a4Ns7u]ls8;ios763Js3L_Zs3(A\s%%^@n#HDg
+s/u1;s1\NQs4%)-s5!_.s475"s2Y/Ms/c6ns-3P?s*aohs)S-Us(:k3s(D at Js)S-`s*XQis*Xil
+s*"Eas)S-Ws(MFAs'>Y+c[P`kq>Z"pl[FEbh>dKTV#Pr~>
+PQ1R]kPtJ\mJm%`qu?ZrJcFX-WIDHCq0r3)r;_C4pHJD%OZps;rVuhFs8V&,m6:P9s$ZlVs%!)[
+s%<;ds&/kss&f;+s'bq?s(q^Us*=Wss,?uCs.KCjs02O7s2G#bs4[M0s5X.Ds7#pYs7cQhs7lW^
+s5X.1s2b5Ws0Vg"s,-hus'>Y&s%WM`s$?[7rI4bHJNiHbs$-=.s'PeAs)\3ds+^Q:s.B=ps0Ma7
+s186Es1JBCs1&*:s/l="s.o[ds-<VCs+12ps)7pMs'Yk1s&]5"s&/kts'5S4s(;:Is)A!Zs*"Ef
+s*Ve7qZ-HlJUZp6JcFR+rrAkpJ,~>
+PQ1R]kPtJ\mJm%`qu?ZrJcFX-WQ)QMq8W<3r;_DKpT"&/OfHUErVui9s8Vu>s31Mfs3L_ls3gqr
+rRLerrR_(_s1nZPs2P)]s3:Sks4%)$s5!_4s5<q:s5j:Es69RLs6TdRs7$'Zs7H?cs7uQhs8;io
+s82iks7cQes7QE_s6'F>s4[M's3:SXs0)Hrs-*J6s*"EZs().7s%NG\s$?ZMrBL*AqgSPFJNiB`
+q0r3)s$-NPs%EAfs&/l)s).j`s+p]=s.97js0D[2s0r$?mCrV6s1JBCs0r$8s0D[.s/u1$s0;U0
+s0hs>s2"`ds4..us3^kms3:McrQ>/^s2aBCqZ-HlJ]@#qJcFR+rrAkpJ,~>
+PQ1R]p](0lp&FsjkPtJ\s8W*!JcFX-WIDHCq0r'%qZ)12rBC%+Ma#O;rVubDs$#=haZf_js%35`
+s%WMgs&&f$s(D at Ms*"Eks,I&Is/>t,s2b5gs4dS7s6BXUs7u]ns82ils7cQ`s5<q's1\NVrPnk.
+JZA%9q8WHEs2P)gs5F"6s4RG)s474ls1A<6s/5mcs,?u.s*+K`s(q^Io4%`4s(q^Ts*+KjpO<-i
+s*=Wfs)\3[s)%dKs'l"5s&[g$q#L;@q>Z"pl[FEbh>dKTV#Pr~>
+PQ1R]p](0lp&FsjkPtJ\s8W*!JcFX-WIDHCq0r'%qZ)12rBC%+Ma#O;rVubDs$#=hnNQt=s$ZlW
+s%35_s%NGhs&B#"s',M1s().Es)A!\s*k!(s,d8Ks.o[ss0D[:s2G#bs4[M0s5X.Cs6opYs7QEd
+s7lWgs6]jGs4..is1863s-itAs)A!Cs&/kks%!)Ts*surrr at U6lTY,ns&]5-s(;:Ks*F^!s-Nb`
+s/Z1's0DU:s1\NGs1/09s/uC%s.o[as,m>9s*aohs(q^Hs'G_0s&f;#s&]5*s'bq>s)%dUs)\3`
+s*=Wlc$oHgqgSA at JUZp6JcFR+rrAkpJ,~>
+PQ1R]p](0lp&FsjkPtJ\s8W*!JcFX-WQ)QMq8W0/qZ)2IrMo\5MlP1ErVuc7s0)CFrQYAgs3Ueo
+s3q"urR_##rRq5+s5*dps2b5as3L_os475(s53k8s5O(>s5s at Gs6BXMs6TdRs7$'Zs7H?bs7lKg
+s8;ios82ihs7?9]s7--Ws5X.4s3gqks2G#Hs/>sds,6o&s).jJs'5S's%EAYs$-*=qgSPFJNiB`
+q0r3)s$-NPs%EAcs%iZ#s(hXZs+(-0s.'+fs02O0s0r$?l+[21s1/0<s0Vg2s02I,rNcI0s0Vg9
+s1SHLs4@;$s3q"qs3L_irQP5`s2tA_n&G/'qo8I3J]@#qJcFR+rrAkpJ,~>
+PQ1R]p](0lp&FsjkPtJ\s8W*!JcFX-WIDHCq0r'%qZ)12rBC%+Ma#O;rVubDs$#=haZf_js%35`
+s%WMgs&&f$s(D at Ms*"Eks,I&Is/>t,s2b5gs4dS7s6BXUs7u]ns82ils7cQ`s5<q's1\NVrPnk.
+JZA%9q8WHEs2P)gs5F"6s4RG)s474ls1A<6s/5mcs,?u.s*+K`s(q^Io4%`4s(q^Ts*+KjpO<-i
+s*=Wfs)\3[s)%dKs'l"5s&[g$q#L;@q>Z"pl[FEbh>dKTV#Pr~>
+PQ1R]p](0lp&FsjkPtJ\s8W*!JcFX-WIDHCq0r'%qZ)12rBC%+Ma#O;rVubDs$#=hnNQt=s$ZlW
+s%35_s%NGhs&B#"s',M1s().Es)A!\s*k!(s,d8Ks.o[ss0D[:s2G#bs4[M0s5X.Cs6opYs7QEd
+s7lWgs6]jGs4..is1863s-itAs)A!Cs&/kks%!)Ts*surrr at U6lTY,ns&]5-s(;:Ks*F^!s-Nb`
+s/Z1's0DU:s1\NGs1/09s/uC%s.o[as,m>9s*aohs(q^Hs'G_0s&f;#s&]5*s'bq>s)%dUs)\3`
+s*=Wlc$oHgqgSA at JUZp6JcFR+rrAkpJ,~>
+PQ1R]p](0lp&FsjkPtJ\s8W*!JcFX-WQ)QMq8W0/qZ)2IrMo\5MlP1ErVuc7s0)CFrQYAgs3Ueo
+s3q"urR_##rRq5+s5*dps2b5as3L_os475(s53k8s5O(>s5s at Gs6BXMs6TdRs7$'Zs7H?bs7lKg
+s8;ios82ihs7?9]s7--Ws5X.4s3gqks2G#Hs/>sds,6o&s).jJs'5S's%EAYs$-*=qgSPFJNiB`
+q0r3)s$-NPs%EAcs%iZ#s(hXZs+(-0s.'+fs02O0s0r$?l+[21s1/0<s0Vg2s02I,rNcI0s0Vg9
+s1SHLs4@;$s3q"qs3L_irQP5`s2tA_n&G/'qo8I3J]@#qJcFR+rrAkpJ,~>
+PQ1R]p](*jq>^BniW&iVJcFX-WIDHCq0qitr;_C4q0n)_eUIJsqgSE+hgWg6s$?ZVs%r_ns&8qu
+s'bqDs*"Eks+^Q<s.]Oss1\NZs4RG3s6BXPs763^s7ZKbs763Zs6K^Ds3Ue\s3(A\s%%^@l`0d#
+s1&*Ks4%)-s5!_0s4[M*s3(GUs0_m2s.]OXs+^Q!s)S-Us(:k3s(D at Js)J'_s*XQis*Xils*"E`
+s)J'Us(D@?s'5S)hgYA$o7$N8JUZp6JcFR+rrAkpJ,~>
+PQ1R]p](*jq>^BniW&iVJcFX-WIDHCq0qitr;_C4q0n)_eUIJsqgSE+hgY5^s$?ZQs%!)]s%NGf
+s&/kts&oA-s'l"As).jYs*=Wrs,?uCs.97is0;U4s1A<Ns3^l#s5*e9s60LMs7?9_s7Q9`s6TdE
+s4%(es0Vg,s-s%Cs)A!Cs&/kks%!)Ts*surrr at U6lTY,ns%EAjs'#G3s).jbs,[2Ps.fUls02I7
+qn<$?s0_m2s/Q*ls-E\Ds+:8rs)J'Qs'u(:s'5M*s'>Y6s(D at Ks)J'\s*"Efs*W at Gq#L#8q>Z"p
+l[FEbh>dKTV#Pr~>
+PQ1R]p](*jq>^BniW&iVJcFX-WQ)QMq8Vs)r;_DKq8S2ie].Rfqo8T=s0;OJs3L_ls3gqss475&
+s4RA)s4dS/s5*e6s5O(>s3CYls4./%s4mY5s5X.?s5s at Es6BXMs6TdQs6p!Ws7--\s7ZKfrVHQk
+s8;ios82ihs6p!Us6]jOs53k,s3(G\s1SH9s.TIVs+C>ks(D@<s&K(ps%35Wq`jg=qgSPFJNiB`
+q0r3)s$-NPs%*/]s%NGrs(D at Ns*"Ers-*JVs/uC.s0r$?l+[22s1A<@s0hs6s0D[2q6^10s1/0E
+s2=rhs4..us3^kms3CSfrQP;as2arSq#L$+q>Z#clc+MUh>dKTV#Pr~>
+PQ1R]p](*jq>^BniW&iVJcFX-WIDHCq0qitr;_C4q0n)_eUIJsqgSE+hgWg6s$?ZVs%r_ns&8qu
+s'bqDs*"Eks+^Q<s.]Oss1\NZs4RG3s6BXPs763^s7ZKbs763Zs6K^Ds3Ue\s3(A\s%%^@l`0d#
+s1&*Ks4%)-s5!_0s4[M*s3(GUs0_m2s.]OXs+^Q!s)S-Us(:k3s(D at Js)J'_s*XQis*Xils*"E`
+s)J'Us(D@?s'5S)hgYA$o7$N8JUZp6JcFR+rrAkpJ,~>
+PQ1R]p](*jq>^BniW&iVJcFX-WIDHCq0qitr;_C4q0n)_eUIJsqgSE+hgY5^s$?ZQs%!)]s%NGf
+s&/kts&oA-s'l"As).jYs*=Wrs,?uCs.97is0;U4s1A<Ns3^l#s5*e9s60LMs7?9_s7Q9`s6TdE
+s4%(es0Vg,s-s%Cs)A!Cs&/kks%!)Ts*surrr at U6lTY,ns%EAjs'#G3s).jbs,[2Ps.fUls02I7
+qn<$?s0_m2s/Q*ls-E\Ds+:8rs)J'Qs'u(:s'5M*s'>Y6s(D at Ks)J'\s*"Efs*W at Gq#L#8q>Z"p
+l[FEbh>dKTV#Pr~>
+PQ1R]p](*jq>^BniW&iVJcFX-WQ)QMq8Vs)r;_DKq8S2ie].Rfqo8T=s0;OJs3L_ls3gqss475&
+s4RA)s4dS/s5*e6s5O(>s3CYls4./%s4mY5s5X.?s5s at Es6BXMs6TdQs6p!Ws7--\s7ZKfrVHQk
+s8;ios82ihs6p!Us6]jOs53k,s3(G\s1SH9s.TIVs+C>ks(D@<s&K(ps%35Wq`jg=qgSPFJNiB`
+q0r3)s$-NPs%*/]s%NGrs(D at Ns*"Ers-*JVs/uC.s0r$?l+[22s1A<@s0hs6s0D[2q6^10s1/0E
+s2=rhs4..us3^kms3CSfrQP;as2arSq#L$+q>Z#clc+MUh>dKTV#Pr~>
+PQ1R]p&FO^huE]VJcFX-WIDHCq0q]pr;_O8q0mr[fm`o"qgS9'hgWs:s$?ZVs%r_ss&f;*s(;:N
+s*Xj$s,R,Ks/H%,s2G#gs4dS4s6'FJrUBjUs6]jPs69REs4mY%s1eTWrPnk.JZA%9q8WHEs2P)g
+s5F"7s5!_1s4[Lss2"`Ks1&*/s.'+Ls+12os).jKq-s52s(D at Js)J'_s*XQis*Xils*"E`s)A!S
+s(;:>s',M(jaR(,l[J[0JUZp6JcFR+rrAkpJ,~>
+PQ1R]p&FO^huE]VJcFX-WIDHCq0q]pr;_O8q0mr[fm`o"qgS9'hgYAbs$?ZQs%!)]s%WMis&B##
+s'5S3s(;:Is)S-as*ap%s,d8Ks.]Oqs0hs>s1nZSs3^l#s5*e9s60LLs763^s7Q?bs7H?Ts4dRt
+s1JB5s/>ses+^Pns'5S%s%NG_s$?[7rI4bHJNiB`q0r?/s$m#`s&T/0s)n?ss-NbTs.KCqrO`$@
+s1SHEs1/0<s02O#s-s%Ns+gW's)n?Ys(MFCs'bq4s'>Y5s().Cs).jWs)e9bs*=WlgOB#"l[J[0
+JUZp6JcFR+rrAkpJ,~>
+PQ1R]p&FO^huE]VJcFX-WQ)QMq8Vg%r;_POq8S&efuF!jqo8T>qm-7Ks3^kqs4./$s4RG,rS7G/
+s5*e6s5O(>s5s at Fs6Td;s4[M0s5O(?s5s at Fs69RLrTsROs6fpUs7--\s7QEdrVHQks8;ios82ih
+s6p!Qs69RGs4dS$s2Y/Ps0hs+s-itHs*Xi^s'u(7s&T.rs%<;Yq*4[=qgSPFJNiB`q0r3)s$-NN
+s$crWs%35ls'u(As)%d`s,-iDs/,h!s0hs>l+[22s1A<As0r$9s0Vg6s0hs:rO2a8s1A<Hs2G#i
+s4..us3^ekrQbGfs31Mcs2b/YqZ,s%q>Z#clc+MUh>dKTV#Pr~>
+PQ1R]p&FO^huE]VJcFX-WIDHCq0q]pr;_O8q0mr[fm`o"qgS9'hgWs:s$?ZVs%r_ss&f;*s(;:N
+s*Xj$s,R,Ks/H%,s2G#gs4dS4s6'FJrUBjUs6]jPs69REs4mY%s1eTWrPnk.JZA%9q8WHEs2P)g
+s5F"7s5!_1s4[Lss2"`Ks1&*/s.'+Ls+12os).jKq-s52s(D at Js)J'_s*XQis*Xils*"E`s)A!S
+s(;:>s',M(jaR(,l[J[0JUZp6JcFR+rrAkpJ,~>
+PQ1R]p&FO^huE]VJcFX-WIDHCq0q]pr;_O8q0mr[fm`o"qgS9'hgYAbs$?ZQs%!)]s%WMis&B##
+s'5S3s(;:Is)S-as*ap%s,d8Ks.]Oqs0hs>s1nZSs3^l#s5*e9s60LLs763^s7Q?bs7H?Ts4dRt
+s1JB5s/>ses+^Pns'5S%s%NG_s$?[7rI4bHJNiB`q0r?/s$m#`s&T/0s)n?ss-NbTs.KCqrO`$@
+s1SHEs1/0<s02O#s-s%Ns+gW's)n?Ys(MFCs'bq4s'>Y5s().Cs).jWs)e9bs*=WlgOB#"l[J[0
+JUZp6JcFR+rrAkpJ,~>
+PQ1R]p&FO^huE]VJcFX-WQ)QMq8Vg%r;_POq8S&efuF!jqo8T>qm-7Ks3^kqs4./$s4RG,rS7G/
+s5*e6s5O(>s5s at Fs6Td;s4[M0s5O(?s5s at Fs69RLrTsROs6fpUs7--\s7QEdrVHQks8;ios82ih
+s6p!Qs69RGs4dS$s2Y/Ps0hs+s-itHs*Xi^s'u(7s&T.rs%<;Yq*4[=qgSPFJNiB`q0r3)s$-NN
+s$crWs%35ls'u(As)%d`s,-iDs/,h!s0hs>l+[22s1A<As0r$9s0Vg6s0hs:rO2a8s1A<Hs2G#i
+s4..us3^ekrQbGfs31Mcs2b/YqZ,s%q>Z#clc+MUh>dKTV#Pr~>
+PQ1R]oDeObg].9RJcFX-WIDHCq0qQlr;_[<q0mlYs$#7frVubDo02&\eNX"!s%35es&f;,s'YkB
+s*"Ens,6oCs.]Oqs1&*Js3q#"s5*e9s6'@Ks69RGs5a4>s4mY)s3:SZs3(A\s%%^@l`0d#s1&*K
+s4%)-s5<q7s5*e2s3CYds2G#Rs0D[#s-E\As+(,ms(q^Fs'k_4s(MFKs)J'_s*XQis*Xils*"E`
+s)A!Ss(;:=s',M'm=+j2jaR%*JUZp6JcFR+rrAkpJ,~>
+PQ1R]oDeObg].9RJcFX-WIDHCq0qQlr;_[<q0mlYs$#7frVubDo02&\rBC6Is$ZlWs%EAfs&8r!
+s',M1s'u(Cs)A!]s*Xits,-i?s.01fs0D[9s1eTPs2k;hs4[M0s5X.Cs6TdUqssdVs6TdDs3q"d
+s0Vg's.TI\s+gVos'>Y's%WMas$Ha8rI4bHJNiB`q0r?/s$H`Rs%<;qs)%dcs,[2Ds.B=orOW$@
+s1JBFs1A<As1&*9s/Z0ms-E\Ds+C>ss)J'Ts(VLErF#Y9s(MFJs)A!Zs)n?cs*F]mj*pe(jaR%*
+JUZp6JcFR+rrAkpJ,~>
+PQ1R]oDeObg].9RJcFX-WQ)QMq8V[!r;_\Sq8Rucs/OnprVuc7s0DI,s0Vg7s4%)"s4IA*s4mY1
+s5*e5s5<q:s5a4Bs60LJs6fpWs7QEMs5a4Bs60LIs6BLIs6TdRs6p!Ws763_s7cQhs8)cms8;io
+s82ihs6p!Ps5j:?s4I at rs24lHs/uBqs-E\Bs*ao`s(24:s&f;!s%EAZs$6HGq*+\)rr at U6lTY,n
+q`b$Es$6TNs$QfUs&B#%s'G_9s)S-js,d8Ps/,gus0_m?lb<D4s1A<As0r$:s0_m9s1&*>qmc[=
+s2+fTs4@;$s3q"qrQtMhs3CYgq#KNrq>Z#clc+MUh>dKTV#Pr~>
+PQ1R]oDeObg].9RJcFX-WIDHCq0qQlr;_[<q0mlYs$#7frVubDo02&\eNX"!s%35es&f;,s'YkB
+s*"Ens,6oCs.]Oqs1&*Js3q#"s5*e9s6'@Ks69RGs5a4>s4mY)s3:SZs3(A\s%%^@l`0d#s1&*K
+s4%)-s5<q7s5*e2s3CYds2G#Rs0D[#s-E\As+(,ms(q^Fs'k_4s(MFKs)J'_s*XQis*Xils*"E`
+s)A!Ss(;:=s',M'm=+j2jaR%*JUZp6JcFR+rrAkpJ,~>
+PQ1R]oDeObg].9RJcFX-WIDHCq0qQlr;_[<q0mlYs$#7frVubDo02&\rBC6Is$ZlWs%EAfs&8r!
+s',M1s'u(Cs)A!]s*Xits,-i?s.01fs0D[9s1eTPs2k;hs4[M0s5X.Cs6TdUqssdVs6TdDs3q"d
+s0Vg's.TI\s+gVos'>Y's%WMas$Ha8rI4bHJNiB`q0r?/s$H`Rs%<;qs)%dcs,[2Ds.B=orOW$@
+s1JBFs1A<As1&*9s/Z0ms-E\Ds+C>ss)J'Ts(VLErF#Y9s(MFJs)A!Zs)n?cs*F]mj*pe(jaR%*
+JUZp6JcFR+rrAkpJ,~>
+PQ1R]oDeObg].9RJcFX-WQ)QMq8V[!r;_\Sq8Rucs/OnprVuc7s0DI,s0Vg7s4%)"s4IA*s4mY1
+s5*e5s5<q:s5a4Bs60LJs6fpWs7QEMs5a4Bs60LIs6BLIs6TdRs6p!Ws763_s7cQhs8)cms8;io
+s82ihs6p!Ps5j:?s4I at rs24lHs/uBqs-E\Bs*ao`s(24:s&f;!s%EAZs$6HGq*+\)rr at U6lTY,n
+q`b$Es$6TNs$QfUs&B#%s'G_9s)S-js,d8Ps/,gus0_m?lb<D4s1A<As0r$:s0_m9s1&*>qmc[=
+s2+fTs4@;$s3q"qrQtMhs3CYgq#KNrq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>jZ`VCNB[/eJNirpiI:b*qgRuth1"*Bs$?ZVs%r_ts'Yk<s)A!bs+^Q8
+s-s%_s/l=1s24lbs475(s5<q=rTsRIs53k4s4dS(s3CYas1eTWrPnk.JZA%9q8WHEs2P)gs4mY3
+s5F"9s5*e+s3^kks2b5Os/c6ls,m>;s*juhs(MFEs(24?qdf_?s)%dVs*+KjpO<-is*=Wfs)\3Y
+s(hXGs'Pe0s&AZ?q#K6"q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>jZ`VCNB[/eJNirpiI:b*qgRutiI:fVs+:8?s%35bs&&ess'#G/s'l"?
+s(q^Vs*F]qs+^Q6s-NbZs/Z1.s1eTPs2k;ds3q#%s5*e9s6'FJs6ojLs60LDs4I at os1JB6s.B=[
+s-*J<s)S-Gs&B"ns%35Xs*surrr at U6lTY,ns$6TNs$ZlVs&K)1s*+Kus,d8Ps/l71s186Cs1SHE
+s1/0>s0_m.s.o[as,m>:s*aois)A!Ts(MFBs().Cs(hXPs)S-_s*+Kgs*F]ml[JX0h1#2"JUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Hjf87ZNN2foJZAUIiPtirqo8ZAq6^10s0r$=s1A<as4dS0s5*e6s5F";
+s5a4Bs60LJs6TdTs7?9bs8)cos8N&^s69FGs6K^Os6]jSs7$'Zs7H?bs7u]ks82iorVccns7QE\
+s69RDs5*e*s2k;Ts0Ma(s.TIYs,-i*s).jKs'Yk0s&8qjs$ZfNrBL*AqgSPFJNiB`q0r'%s$-NK
+s$Qf[s&&ers',M;s*4R"s-E\Vs/#b!s1/0 at s1Ig7s1SHEs1/0>s0r$:s1&*>s180>s186Es24lV
+s4@;$s3q"rrR(E at s2tA_iPt]nJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>jZ`VCNB[/eJNirpiI:b*qgRuth1"*Bs$?ZVs%r_ts'Yk<s)A!bs+^Q8
+s-s%_s/l=1s24lbs475(s5<q=rTsRIs53k4s4dS(s3CYas1eTWrPnk.JZA%9q8WHEs2P)gs4mY3
+s5F"9s5*e+s3^kks2b5Os/c6ls,m>;s*juhs(MFEs(24?qdf_?s)%dVs*+KjpO<-is*=Wfs)\3Y
+s(hXGs'Pe0s&AZ?q#K6"q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>jZ`VCNB[/eJNirpiI:b*qgRutiI:fVs+:8?s%35bs&&ess'#G/s'l"?
+s(q^Vs*F]qs+^Q6s-NbZs/Z1.s1eTPs2k;ds3q#%s5*e9s6'FJs6ojLs60LDs4I at os1JB6s.B=[
+s-*J<s)S-Gs&B"ns%35Xs*surrr at U6lTY,ns$6TNs$ZlVs&K)1s*+Kus,d8Ps/l71s186Cs1SHE
+s1/0>s0_m.s.o[as,m>:s*aois)A!Ts(MFBs().Cs(hXPs)S-_s*+Kgs*F]ml[JX0h1#2"JUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Hjf87ZNN2foJZAUIiPtirqo8ZAq6^10s0r$=s1A<as4dS0s5*e6s5F";
+s5a4Bs60LJs6TdTs7?9bs8)cos8N&^s69FGs6K^Os6]jSs7$'Zs7H?bs7u]ks82iorVccns7QE\
+s69RDs5*e*s2k;Ts0Ma(s.TIYs,-i*s).jKs'Yk0s&8qjs$ZfNrBL*AqgSPFJNiB`q0r'%s$-NK
+s$Qf[s&&ers',M;s*4R"s-E\Vs/#b!s1/0 at s1Ig7s1SHEs1/0>s0r$:s1&*>s180>s186Es24lV
+s4@;$s3q"rrR(E at s2tA_iPt]nJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>iBI2?OZrSiJNifljaR1.qgRcnhgXHHs$?ZVs%r_ts'bqCs)n?ls,6oB
+s.KCfs/l=1s2+f_s4%)$s4mY7rTaFEs5!_+s4%(os2Y/Ss186RrPnk.JZA%9q8WHEs2P)es4./%
+s4dS2s5<q5s4RG&s3Ue_s0Vg's-itLs+^Pus)%dOs(_RIqdf_ at s)%dVs*+KjpO<-is*4Qds)J'V
+s(_REs'G_.s&8fDqZ,/qq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>iBI2?OZrSiJNifljaR1.qgRcnmsb4brIFp!s+LE.s,6nQs&8r"s'>Y5
+s(24Es)7p\s*ap#s,-i>s-s%bs0)I7s24lXs3:Sls475's5!_6s5j:Fs6]jHrS[_5s4dS"s2+fC
+s/5mas-3PBs+(,js'Pe+s%iYes$Ha8rI4bHJNiB`q0r?/s$H`Rs$cres'u(Ks+(-1s.97ls1&*>
+s186Cs1SHErOMs:s/l<ts.'+Ss,6o.s*=Wds)A!SrFc.Gs).jUs)n?ds*F]js*F]mnUC?8eUI>o
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HiMuhVOfJ5sJZAIElc/hBrVuc7s0D[3qmHI4s1&*?s1JBGs1eTMs5<q9
+s5X.?s5s at Fs6BXNs6fpWs7H?cs8)coqu6EVs6K^Ps6fpUs7--]s7ZKfs7u]ks8;ios82ihs6p!P
+s5F"2s3CY^s1&*2s.]Obs-E\Cs*t&es(MF at s',M%s%NG\s$?ZMrBL*AqgSPFJNiB`q0qp!s$-NN
+s%*/`s&/l)s)A!gs,R,Fs.01js0_m8s1&*?n\5%:s1A<Bs1/0>s0r$=s1JBFrOi0Ds1nZQs2Y/k
+s4..uqZ-ZDs3Ueks31Mcs2a0=q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>iBI2?OZrSiJNifljaR1.qgRcnhgXHHs$?ZVs%r_ts'bqCs)n?ls,6oB
+s.KCfs/l=1s2+f_s4%)$s4mY7rTaFEs5!_+s4%(os2Y/Ss186RrPnk.JZA%9q8WHEs2P)es4./%
+s4dS2s5<q5s4RG&s3Ue_s0Vg's-itLs+^Pus)%dOs(_RIqdf_ at s)%dVs*+KjpO<-is*4Qds)J'V
+s(_REs'G_.s&8fDqZ,/qq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>iBI2?OZrSiJNifljaR1.qgRcnmsb4brIFp!s+LE.s,6nQs&8r"s'>Y5
+s(24Es)7p\s*ap#s,-i>s-s%bs0)I7s24lXs3:Sls475's5!_6s5j:Fs6]jHrS[_5s4dS"s2+fC
+s/5mas-3PBs+(,js'Pe+s%iYes$Ha8rI4bHJNiB`q0r?/s$H`Rs$cres'u(Ks+(-1s.97ls1&*>
+s186Cs1SHErOMs:s/l<ts.'+Ss,6o.s*=Wds)A!SrFc.Gs).jUs)n?ds*F]js*F]mnUC?8eUI>o
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HiMuhVOfJ5sJZAIElc/hBrVuc7s0D[3qmHI4s1&*?s1JBGs1eTMs5<q9
+s5X.?s5s at Fs6BXNs6fpWs7H?cs8)coqu6EVs6K^Ps6fpUs7--]s7ZKfs7u]ks8;ios82ihs6p!P
+s5F"2s3CY^s1&*2s.]Obs-E\Cs*t&es(MF at s',M%s%NG\s$?ZMrBL*AqgSPFJNiB`q0qp!s$-NN
+s%*/`s&/l)s)A!gs,R,Fs.01js0_m8s1&*?n\5%:s1A<Bs1/0>s0r$=s1JBFrOi0Ds1nZQs2Y/k
+s4..uqZ-ZDs3Ueks31Mcs2a0=q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>h*1]9QTk4oJNiTfl[Jg4qgRWjhgXTLs$H`Ys&B#)s(D at Os*F^!s,d8L
+s/#aps/uC0s1nZ[s3q#"s4dS4rTO:As4dS%s3:Sas1eTFs0hgEs%%^@l`0d#s1&*Ks3(Gfs3^kr
+s4IA/s5<q9s5!_-s2tASs/uBrs-WhEs*aofs)A!Vs(VLDrFQ"Cs).jXs*+KjpO<-gs*+Kas)A!S
+s(MFBs'>Y,q#J`iq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>h*1]9QTk4oJNiTfl[Jg4qgRWjo7$XhrIY'%s+^Q2s,R,As-<Ufs'Pe:
+s(MFKs)S-bs+(-)s,R,Fs.B=js0D[>s2Y/_s3CYms4./%s4dS2s5X.Bs6K^Ds4I;%s3q"fs1864
+s.KCTs,I&4s*F]`s'Yk,s%r_es$?O2rr at U6lTY,ns$6TNs$QfSs&8r,s)A!`s,6oJs/Z1/s1/0@
+s1JBFs1A6 at s0r$2s/,ghs-itLs+UK%s*4Qbs)7pPs(hXQs)J'[s*4Qis*Ocks*F]mq0r,>c[P]i
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Hh5^>PQ`Bl$JZA7?ou?sNqoJa9qo8ZAs0V[3s0r$=s1A<Es1eTLs2+fS
+s2P*"s5s at Fs6BXNs6]jTs7--]s7cQis8D]ks69RKs6K^Os6]jTs7--\s7QEes7u]ks82ios8Duo
+s763Us5X.6s3q"hs1SH<s/5mes-WhOs,?u.s)A!Ps'l"5s&B"ls$crRs$6NIq*+\)rr at U6lTY,n
+m6:P;s%35ms(MFWs+^Q5s-`nbs0;U0s0Vg:n\5%:qn)m=s186Cs1eNJrP/BKs2Fd6s4%"rs3gqo
+s3CYgs2tA_rQ"$>q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>h*1]9QTk4oJNiTfl[Jg4qgRWjhgXTLs$H`Ys&B#)s(D at Os*F^!s,d8L
+s/#aps/uC0s1nZ[s3q#"s4dS4rTO:As4dS%s3:Sas1eTFs0hgEs%%^@l`0d#s1&*Ks3(Gfs3^kr
+s4IA/s5<q9s5!_-s2tASs/uBrs-WhEs*aofs)A!Vs(VLDrFQ"Cs).jXs*+KjpO<-gs*+Kas)A!S
+s(MFBs'>Y,q#J`iq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>h*1]9QTk4oJNiTfl[Jg4qgRWjo7$XhrIY'%s+^Q2s,R,As-<Ufs'Pe:
+s(MFKs)S-bs+(-)s,R,Fs.B=js0D[>s2Y/_s3CYms4./%s4dS2s5X.Bs6K^Ds4I;%s3q"fs1864
+s.KCTs,I&4s*F]`s'Yk,s%r_es$?O2rr at U6lTY,ns$6TNs$QfSs&8r,s)A!`s,6oJs/Z1/s1/0@
+s1JBFs1A6 at s0r$2s/,ghs-itLs+UK%s*4Qbs)7pPs(hXQs)J'[s*4Qis*Ocks*F]mq0r,>c[P]i
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Hh5^>PQ`Bl$JZA7?ou?sNqoJa9qo8ZAs0V[3s0r$=s1A<Es1eTLs2+fS
+s2P*"s5s at Fs6BXNs6]jTs7--]s7cQis8D]ks69RKs6K^Os6]jTs7--\s7QEes7u]ks82ios8Duo
+s763Us5X.6s3q"hs1SH<s/5mes-WhOs,?u.s)A!Ps'l"5s&B"ls$crRs$6NIq*+\)rr at U6lTY,n
+m6:P;s%35ms(MFWs+^Q5s-`nbs0;U0s0Vg:n\5%:qn)m=s186Cs1eNJrP/BKs2Fd6s4%"rs3gqo
+s3CYgs2tA_rQ"$>q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>f09-5Rm-XsJNiHbmsb68qgRKfhgXrVs$6TMs$QfVs&&f#s().Hs*+Kn
+s,-iAs.B=ks/uC-s0Vg at s3:Sks4./&s5*e;s5s@?s4RG"s2b5Ws1SHEs1/$Hs%%^@l`0d#s1&*E
+s2=rXs2tAds4%#(s53k7s53k)s2=rHs/Q*ks,m>5s*+Kcs)\3Ss()(>s(_ROs)\3bs*XQis*F]f
+s)S-Ws(hE1s&$meq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>f09-5Rm-XsJNiHbmsb68qgRKfpO<-ns+C9's+UK/s,?u>s-*JLs.'+_
+s(;:Hs)7p[s*Xj!s,-i=s-it_s/Z1+s1eTSs2tAds3^krs4@;(s5!_6s5j:Fs53k.s3L_js2tAU
+s0D[$s-WhEs+gW(s)e9Ts'G_,s&&efs$?O2rr at U6lTY,ns$6NLs$Qfas'bqCs)J'ks-<V^s0hs<
+s186Cs1SHFrO`*>s0)I#s/#afs-<VAs+C>us*"E_s).jTs)S-]s*+Kjs*jups*=Wjs*XVBa+!ja
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Hf;ecLS#Z;(JZA+;q8WHTs2b)ZrVuc7s0D[3s0hm8s1&*?s1JBGs1nZN
+s24lUs2Y/]s3(H,s6K^Ps6fpVs763^s7cQis8DQgs6BXNs6]jSs7$'[s7QEds7lEcs7QEYs5j::
+s4..os2+fFs/c6os-E\Js,[2>s+12is(_REs'G_+s%`S`s$?ZMrBL*AqgSPFJNiB`q0qWns$?Z]
+s'YkGs*k!'s-<VZs/l=(s0;U7n\4t8rOi*@s1eHKq#LH;s4@;%rRLkrs3gqos3CYgs2tA`qoJfX
+l,NQ!J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>f09-5Rm-XsJNiHbmsb68qgRKfhgXrVs$6TMs$QfVs&&f#s().Hs*+Kn
+s,-iAs.B=ks/uC-s0Vg at s3:Sks4./&s5*e;s5s@?s4RG"s2b5Ws1SHEs1/$Hs%%^@l`0d#s1&*E
+s2=rXs2tAds4%#(s53k7s53k)s2=rHs/Q*ks,m>5s*+Kcs)\3Ss()(>s(_ROs)\3bs*XQis*F]f
+s)S-Ws(hE1s&$meq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>f09-5Rm-XsJNiHbmsb68qgRKfpO<-ns+C9's+UK/s,?u>s-*JLs.'+_
+s(;:Hs)7p[s*Xj!s,-i=s-it_s/Z1+s1eTSs2tAds3^krs4@;(s5!_6s5j:Fs53k.s3L_js2tAU
+s0D[$s-WhEs+gW(s)e9Ts'G_,s&&efs$?O2rr at U6lTY,ns$6NLs$Qfas'bqCs)J'ks-<V^s0hs<
+s186Cs1SHFrO`*>s0)I#s/#afs-<VAs+C>us*"E_s).jTs)S-]s*+Kjs*jups*=Wjs*XVBa+!ja
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Hf;ecLS#Z;(JZA+;q8WHTs2b)ZrVuc7s0D[3s0hm8s1&*?s1JBGs1nZN
+s24lUs2Y/]s3(H,s6K^Ps6fpVs763^s7cQis8DQgs6BXNs6]jSs7$'[s7QEds7lEcs7QEYs5j::
+s4..os2+fFs/c6os-E\Js,[2>s+12is(_REs'G_+s%`S`s$?ZMrBL*AqgSPFJNiB`q0qWns$?Z]
+s'YkGs*k!'s-<VZs/l=(s0;U7n\4t8rOi*@s1eHKq#LH;s4@;%rRLkrs3gqos3CYgs2tA`qoJfX
+l,NQ!J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>dm!^1T0E("JNiB`nUCH:qgR?bhgY5^s$H`Rs$crWs%*/`s&]5/s(_RU
+s*ap%s,d8Ls.o[us0Ma5s0r$As3(Ghs3q#"s4mY5s5O(8s4@:ts2b5Ws1nZKs1J6Ks%%^@l`0d#
+s0hs<s1SHJs24lWs3gl$s5!_3s53k,s3(GWs0D[#s-E\?s*aons)\3Ss(). at s(;:Gs)7pYs*4Qk
+pO<-gq#LG+s'Yk2s&T.raaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>dm!^1T0E("JNiB`nUCH:qgR?bqgSQrs+LE,rJ1E1s,R,Bs-<VPs.97c
+s/>t"s)S-as*t''s,R,Es-s%`s/Z1+s1\NQs2k;bs3Ueps475&s4mY3s5X.Bs5*e+s3:S_s2+fE
+s/H$hs,d85s*juos)S-Rs'Yk0s&&efs$?O2rr at U6lTY,ns$6NKs$H`_s'Pe9s(VLZs,?uLs/uC/
+s1/0BrOr0Bs1/06s/c7#s.o[`s,[28s+(,ss*4Qcs)\3_s*4Qis*t'!q#J0Yq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\He#N?HT;q_,JZA%9qo8ZVs2k/\rVuc7s0D[3s0hs:s1&*>s1A<Es1eTM
+s2+fSs2P)[s2tAcs3:Sis6fpUs7--\s7QEds8)con,E at Rs6fpVs763^s7c?^s7H?\s5s@=s4@:s
+s2Y/Ps0;U$s-s%Ms,?u8s+p],s)S-Ts(;:=s&f:ts%*/Ws$?TJq*+\)rr at U6lTY,nlTY>7s%WMr
+s(MFUs+C?6s.B=js/Q+(s1.I0s1SHFs1S4.rPnlYs2tAds4IA'rRUqts3gqos3CYgrQ>#Zs2aHE
+q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>dm!^1T0E("JNiB`nUCH:qgR?bhgY5^s$H`Rs$crWs%*/`s&]5/s(_RU
+s*ap%s,d8Ls.o[us0Ma5s0r$As3(Ghs3q#"s4mY5s5O(8s4@:ts2b5Ws1nZKs1J6Ks%%^@l`0d#
+s0hs<s1SHJs24lWs3gl$s5!_3s53k,s3(GWs0D[#s-E\?s*aons)\3Ss(). at s(;:Gs)7pYs*4Qk
+pO<-gq#LG+s'Yk2s&T.raaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>dm!^1T0E("JNiB`nUCH:qgR?bqgSQrs+LE,rJ1E1s,R,Bs-<VPs.97c
+s/>t"s)S-as*t''s,R,Es-s%`s/Z1+s1\NQs2k;bs3Ueps475&s4mY3s5X.Bs5*e+s3:S_s2+fE
+s/H$hs,d85s*juos)S-Rs'Yk0s&&efs$?O2rr at U6lTY,ns$6NKs$H`_s'Pe9s(VLZs,?uLs/uC/
+s1/0BrOr0Bs1/06s/c7#s.o[`s,[28s+(,ss*4Qcs)\3_s*4Qis*t'!q#J0Yq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\He#N?HT;q_,JZA%9qo8ZVs2k/\rVuc7s0D[3s0hs:s1&*>s1A<Es1eTM
+s2+fSs2P)[s2tAcs3:Sis6fpUs7--\s7QEds8)con,E at Rs6fpVs763^s7c?^s7H?\s5s@=s4@:s
+s2Y/Ps0;U$s-s%Ms,?u8s+p],s)S-Ts(;:=s&f:ts%*/Ws$?TJq*+\)rr at U6lTY,nlTY>7s%WMr
+s(MFUs+C?6s.B=js/Q+(s1.I0s1SHFs1S4.rPnlYs2tAds4IA'rRUqts3gqos3CYgrQ>#Zs2aHE
+q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>cT_:-UH\L&JNiB`nUCH:qgR3^h1#5bs$H`Ws%<;as%WMjs'5S:s)A!a
+s+C?1s-E\Ws/H%*s0hs<s1A<Gs2tAes3^krs4@;*s53k3s4..ps2b5Ys2+fOs1\BMs%%^@l`0d#
+s0)I.s0hs<s1JBNs3U_us4dS1s53k,s3(GYs1&*.s-s%Is+:8us)\3Ts(24Cs(MFIs)7pYs*4Qk
+qgSDBs)n?[s(hXJs'u(8s&oA$s%gacq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>cT_:-UH\L&JNiB`nUCH:qgR3^s*k!!s+LE.rJCQ5s,d8Fs-NbTs.KCg
+s/Q+&s0_m>s24kos-!DMs.B=cs/Q+)s1\NQs2b5`s3L_ns4./$s4dS1s5F">s4mY(s3(GYs1/03
+s.TIYs,6o-s*juos)S-Rs'bq1s&&efs$?O2rr at U6lTY,nrBL<Is$?Z]s&]5)s'YkIs+LE<s/,gs
+s0;U5rP&6Ds186:s0;U-s/H$js-3PCs+gW,s*juns*4Qis*OVCs*joms*VS1q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\Hc`6pDUT4.0JZA%9qo8ZVs2k/]rVuc7s0D[3s0hs:s1/0 at s1JBFs1eTM
+s2+fTs2Y/]s3(Ges3CYks3gqss763^s7ZKes8)col2L_Rs7H?bs7H?]qsaXPs5O(3s3^kgs2"`D
+s/Z0ms-<VAs+gW.s+C?$s)\3Ws(MFAs'#G#s%<;[s$QfPs$-<CqgSPFJNiB`q0qWns$?ZZs&oA5
+s)A!fs,I&Js/#aps0;U7n%Sb8qZ-Z7s2k)Zs3(Gfs3Uf"s4RG)s4@;%s4..ts3Ueks31Gbqo\r[
+l,NQ!J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>cT_:-UH\L&JNiB`nUCH:qgR3^h1#5bs$H`Ws%<;as%WMjs'5S:s)A!a
+s+C?1s-E\Ws/H%*s0hs<s1A<Gs2tAes3^krs4@;*s53k3s4..ps2b5Ys2+fOs1\BMs%%^@l`0d#
+s0)I.s0hs<s1JBNs3U_us4dS1s53k,s3(GYs1&*.s-s%Is+:8us)\3Ts(24Cs(MFIs)7pYs*4Qk
+qgSDBs)n?[s(hXJs'u(8s&oA$s%gacq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>cT_:-UH\L&JNiB`nUCH:qgR3^s*k!!s+LE.rJCQ5s,d8Fs-NbTs.KCg
+s/Q+&s0_m>s24kos-!DMs.B=cs/Q+)s1\NQs2b5`s3L_ns4./$s4dS1s5F">s4mY(s3(GYs1/03
+s.TIYs,6o-s*juos)S-Rs'bq1s&&efs$?O2rr at U6lTY,nrBL<Is$?Z]s&]5)s'YkIs+LE<s/,gs
+s0;U5rP&6Ds186:s0;U-s/H$js-3PCs+gW,s*juns*4Qis*OVCs*joms*VS1q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\Hc`6pDUT4.0JZA%9qo8ZVs2k/]rVuc7s0D[3s0hs:s1/0 at s1JBFs1eTM
+s2+fTs2Y/]s3(Ges3CYks3gqss763^s7ZKes8)col2L_Rs7H?bs7H?]qsaXPs5O(3s3^kgs2"`D
+s/Z0ms-<VAs+gW.s+C?$s)\3Ws(MFAs'#G#s%<;[s$QfPs$-<CqgSPFJNiB`q0qWns$?ZZs&oA5
+s)A!fs,I&Js/#aps0;U7n%Sb8qZ-Z7s2k)Zs3(Gfs3Uf"s4RG)s4@;%s4..ts3Ueks31Gbqo\r[
+l,NQ!J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>b<Gk)V`sp*JNiB`q0r?-qgSMDqgR!XhgYShs$H`Xs%iYks&/kts'bqD
+s*"Ems,$c=s.'+cs0)I4s186Cs1\NMs2b5^s3(Ges3UeqrRq5!s3(G^s2G#Vs24lQqo8Y,JZA%9
+q8WH7s/Z1's0D[7s24l^s4IA)s4[M0s53k,s3(GZs1SH8s.KCSs+^Q$s)n?Xs(MFHs(hXNs)7pY
+s*4>>rI4cms)n?[s(_RGs'l"6s&f;"s%^[bq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>b<Gk)V`sp*JNiB`q0r?-qgSMDqgR-\s$?ZQs+pW3s,R,Bs-E\Qs.01a
+s/>t"s0Ma9s1nZTs3CYqs.01bs/,grs0D[<s2G#Ys2tAds3^krs4./&s4mY4s5X.6s3gqis1nZ?
+s/Q*ls-E\Cs+(,us*F]cs(VLCs'5S%s%35VqgSPFJNiB`q0r9+s$-NKs%EAfs&8r"s(_R]s,R,N
+s.fUns02C6s1\NFs1&*;s0Vg/s.o[^s,m>@s,$c/q#LGHs+LE)s*t&rs*F]m^OH"YJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HbGtL at VlKR4JZA%9qo8ZVs/Z1CrQP6?qo8ZAs0Vg7s0r$=s186Cs1SHI
+s2"`Ps2P)[s2tAcs3CYjs3^kqs4./$s4RG-s7lWjs8D'Ys7ZKbs6opQs6K^Ks5*e+s3(G[s1A<8
+s/#aas,[25s+:9$s*juos)e9Zs(_REs'5S's%WMas$m#Vs$?HEqgSPFJNiB`q0qWns$?ZZs&oA4
+s(_RZs+p]As.TIls0;U7o=k##rP8HMs2Y/_s3CMds3L_ms3q#'s4dS-s4RG)s4..us3Ueks3:Md
+rQG5`s2aHEq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>b<Gk)V`sp*JNiB`q0r?-qgSMDqgR!XhgYShs$H`Xs%iYks&/kts'bqD
+s*"Ems,$c=s.'+cs0)I4s186Cs1\NMs2b5^s3(Ges3UeqrRq5!s3(G^s2G#Vs24lQqo8Y,JZA%9
+q8WH7s/Z1's0D[7s24l^s4IA)s4[M0s53k,s3(GZs1SH8s.KCSs+^Q$s)n?Xs(MFHs(hXNs)7pY
+s*4>>rI4cms)n?[s(_RGs'l"6s&f;"s%^[bq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>b<Gk)V`sp*JNiB`q0r?-qgSMDqgR-\s$?ZQs+pW3s,R,Bs-E\Qs.01a
+s/>t"s0Ma9s1nZTs3CYqs.01bs/,grs0D[<s2G#Ys2tAds3^krs4./&s4mY4s5X.6s3gqis1nZ?
+s/Q*ls-E\Cs+(,us*F]cs(VLCs'5S%s%35VqgSPFJNiB`q0r9+s$-NKs%EAfs&8r"s(_R]s,R,N
+s.fUns02C6s1\NFs1&*;s0Vg/s.o[^s,m>@s,$c/q#LGHs+LE)s*t&rs*F]m^OH"YJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HbGtL at VlKR4JZA%9qo8ZVs/Z1CrQP6?qo8ZAs0Vg7s0r$=s186Cs1SHI
+s2"`Ps2P)[s2tAcs3CYjs3^kqs4./$s4RG-s7lWjs8D'Ys7ZKbs6opQs6K^Ks5*e+s3(G[s1A<8
+s/#aas,[25s+:9$s*juos)e9Zs(_REs'5S's%WMas$m#Vs$?HEqgSPFJNiB`q0qWns$?ZZs&oA4
+s(_RZs+p]As.TIls0;U7o=k##rP8HMs2Y/_s3CMds3L_ms3q#'s4dS-s4RG)s4..us3Ueks3:Md
+rQG5`s2aHEq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>a$0G%X$6?.JNiB`q0r3)s*jqHqgQjTiI:fYs%<;gs&T/$s',M8s)J'd
+s+^Q7s-`n]s/Z1-s1SHHs1SHHs1nZSs2+fSs2P)\s31Mjs4..rs2k;\s2G#Vs24lRqo8Y,JZA%9
+q8W<3s/Z1.s2"`Zs475%s4[M0s53k,s3(G_s2+fBs/#a]s,$c's*+K]s(_RMs)%Q3s*XQis*F]f
+s)7pPs(24<s',M(s&&eiaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>a$0G%X$6?.JNiB`q0r3)s*jqHqgR-\s$?ZQs%*/_s,I&?s-3PNs.'+^
+s/,gts0;U5s1SHNs3(Gjs4[M3s5s?\s/c7+s1JBMs2P)\s31Mis3gqss4@;*s5*e6s4@:qs2=rI
+s/Z1!s.KCXs,6o-s*juos)S-Rs(;:<s&T.ns$HU3rr at U6lTY,nq`b$Es$QfVs%EAgs'l"Ms+^Q>
+s-s%^s0)C6rOr6Fs1SHEs1/09s/>sfq#LGIs+:9(s+UK-s+gW.s+12urI"Eis*`"<q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Ha/](<X/c!8JZA%9qo8ZVs/Z1$s/l=GrVuc7s0D[3s0hs:s1/0 at s1JBF
+s1eTMs2+fUs2k;as3:Sis3Ueos4%)"s4IA+s5!_5s5X.Xj8T)Us6p!QrTF4As4[M#s2P)Ps0Vg*
+s.97Ss+pQ$s*aoos*"E^s(q^Is'G_+s%iYes%*/Zs$?HEqgSPFJNiB`q0qWns$?ZZs&oA.s().N
+s+:95s.97is0;U7qnDk+rP&<HqnW6Ms2k;ds3UYjs3q"ts475,s5!_1s4dS,s475"s3^kms3CSf
+rQP;as2aHEq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>a$0G%X$6?.JNiB`q0r3)s*jqHqgQjTiI:fYs%<;gs&T/$s',M8s)J'd
+s+^Q7s-`n]s/Z1-s1SHHs1SHHs1nZSs2+fSs2P)\s31Mjs4..rs2k;\s2G#Vs24lRqo8Y,JZA%9
+q8W<3s/Z1.s2"`Zs475%s4[M0s53k,s3(G_s2+fBs/#a]s,$c's*+K]s(_RMs)%Q3s*XQis*F]f
+s)7pPs(24<s',M(s&&eiaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>a$0G%X$6?.JNiB`q0r3)s*jqHqgR-\s$?ZQs%*/_s,I&?s-3PNs.'+^
+s/,gts0;U5s1SHNs3(Gjs4[M3s5s?\s/c7+s1JBMs2P)\s31Mis3gqss4@;*s5*e6s4@:qs2=rI
+s/Z1!s.KCXs,6o-s*juos)S-Rs(;:<s&T.ns$HU3rr at U6lTY,nq`b$Es$QfVs%EAgs'l"Ms+^Q>
+s-s%^s0)C6rOr6Fs1SHEs1/09s/>sfq#LGIs+:9(s+UK-s+gW.s+12urI"Eis*`"<q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Ha/](<X/c!8JZA%9qo8ZVs/Z1$s/l=GrVuc7s0D[3s0hs:s1/0 at s1JBF
+s1eTMs2+fUs2k;as3:Sis3Ueos4%)"s4IA+s5!_5s5X.Xj8T)Us6p!QrTF4As4[M#s2P)Ps0Vg*
+s.97Ss+pQ$s*aoos*"E^s(q^Is'G_+s%iYes%*/Zs$?HEqgSPFJNiB`q0qWns$?ZZs&oA.s().N
+s+:95s.97is0;U7qnDk+rP&<HqnW6Ms2k;ds3UYjs3q"ts475,s5!_1s4dS,s475"s3^kms3CSf
+rQP;as2aHEq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>_`mqtYs.u4JNiB`q0r-'pO::LjaR5]s,-i=s&oA,s'YkBs*"Ens,6oB
+s.B=hs0)I3s1\NHrOi0Ds24lOs1JBHs2+fTs2t;bs2b5[s2G#VrPSNPs%%^@l`0d#q5XJ&s1eTV
+s4%)"s4[M0s53k,s3L_hs2Y/Ls/Q*hs,[23s*F]cqZ-Y9s)\3^s*4QkpO<-gs)n?[s(_REs'Pe0
+s&K(qs%CI_q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>_`mqtYs.u4JNiB`q0r-'pO:^Xs$?ZQs%*/_s%iYns-NbTs.B=ds/H%&
+s0hs>s2"`Vs3L_rs5*e;s6BXOs6ouns1A<Ks2G#Zs3(Gfs3Ueos4./#rR_(ps2=rLs0;U"s.]Od
+s-E\Cs+(,us*F]cs(q^Ms'u(3s%iYaqgSPFJNiB`q0r'%s$-NNs%*/ns(q^as,R,Cs.01mrO`$@
+q7c_+s-`nQs-3PEs,$c2s,$]3s,6o6s+LE&s*aorpO1/4q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\H_lES6Z)[W>JZA%9qo8ZVs/Z1$s/l=(pW!6>s0Vg7s0r$=s186Cs1SHI
+s2"`Ps2P)\s31Mgs3Uens3q"us4@;(s4mY2s5F"<rT3/?s82ihs6p!Ks5X.;s474ps2+fGs/uBs
+s-`nKs+^>us*Xiks)\3Xs(MF?s&oA"s%WMds%!)Tq*+\)rr at U6lTY,nlTY>7s%WMns&f;-s)%d`
+s,6oEs.fUss1/",otLI at rP8HLs2=r[s3L_oqpbYss4@;(s5<q7s5*e2s4[M)s4..ts3Uelqp,5c
+s2tA_l,NQ!J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>_`mqtYs.u4JNiB`q0r-'pO::LjaR5]s,-i=s&oA,s'YkBs*"Ens,6oB
+s.B=hs0)I3s1\NHrOi0Ds24lOs1JBHs2+fTs2t;bs2b5[s2G#VrPSNPs%%^@l`0d#q5XJ&s1eTV
+s4%)"s4[M0s53k,s3L_hs2Y/Ls/Q*hs,[23s*F]cqZ-Y9s)\3^s*4QkpO<-gs)n?[s(_REs'Pe0
+s&K(qs%CI_q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>_`mqtYs.u4JNiB`q0r-'pO:^Xs$?ZQs%*/_s%iYns-NbTs.B=ds/H%&
+s0hs>s2"`Vs3L_rs5*e;s6BXOs6ouns1A<Ks2G#Zs3(Gfs3Ueos4./#rR_(ps2=rLs0;U"s.]Od
+s-E\Cs+(,us*F]cs(q^Ms'u(3s%iYaqgSPFJNiB`q0r'%s$-NNs%*/ns(q^as,R,Cs.01mrO`$@
+q7c_+s-`nQs-3PEs,$c2s,$]3s,6o6s+LE&s*aorpO1/4q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\H_lES6Z)[W>JZA%9qo8ZVs/Z1$s/l=(pW!6>s0Vg7s0r$=s186Cs1SHI
+s2"`Ps2P)\s31Mgs3Uens3q"us4@;(s4mY2s5F"<rT3/?s82ihs6p!Ks5X.;s474ps2+fGs/uBs
+s-`nKs+^>us*Xiks)\3Xs(MF?s&oA"s%WMds%!)Tq*+\)rr at U6lTY,nlTY>7s%WMns&f;-s)%d`
+s,6oEs.fUss1/",otLI at rP8HLs2=r[s3L_oqpbYss4@;(s5<q7s5*e2s4[M)s4..ts3Uelqp,5c
+s2tA_l,NQ!J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>]fuAp[6FD8JNiB`q0r-'rI4]/s*i!Pl$iYas,-i=s-`n\s(24Ls*Od#
+s,d8Ks.B=hs0)I3s1\NGrO`*Bs2"`Ks1/0>s186Ds2+fTs2P)[s2P)Xs2=lRqo8Y,JZA%9q8W61
+s0_mAs2k;hs475(s5*e5s475"s3^kjs1SH9s.];hs)\3[s)S-]s)n?cs*4QkpO<-gs)e9Ys(MFA
+s'>Y,s&8qms%1=]q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>]fuAp[6FD8JNiB`q0r-'rI4]/s*iQ`s$H`Ts%35bs&&ess'#G/s.]Oj
+s/c7,s186Fs2G#^s3q#&s5O(Cs6fpWs7?9as7u]3s2=rXs2t;bs3(Gds3:Mfs2G#Ms0D[&s-rtU
+s-E\Cs+(,us*F]cs)A!Ts(D@;s&8qhqgSPFJNiB`q0qp!s$6T^s().Qs+UK3s.01lrOW$@s1J.-
+s1867s.o[cs-itSs-3PDs,?c6s,?u5s+:9$s*t&tqgJKlaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\H]rM#2[As&BJZA%9qo8ZVs/Z1$s/l=(rPnf9s2P)Gs0_m8s0r$=s186C
+s1SHIs2"`Ps2P)\s31Mhs3^kps4%)"s4IA*s4mY3s5F"<q;pl?s82ihs6p!Ps5O(6s3gqhs1\N?
+s/Q*os-`nKs+^>us*Xiks)e9[s(_RDs',M&s%iYhs%!)Tq*+\)rr at U6lTY,nlTY>7s%NGgs&/l!
+s(D at Ts+U7Ks1JBFo=k7>rP8HLs2G#]s3^krs47/#s4IA*s4mY6s5F"9s5!_0s4IA&s3q"qs3U_j
+s3CYgs2tA_l,NQ!J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>]fuAp[6FD8JNiB`q0r-'rI4]/s*i!Pl$iYas,-i=s-`n\s(24Ls*Od#
+s,d8Ks.B=hs0)I3s1\NGrO`*Bs2"`Ks1/0>s186Ds2+fTs2P)[s2P)Xs2=lRqo8Y,JZA%9q8W61
+s0_mAs2k;hs475(s5*e5s475"s3^kjs1SH9s.];hs)\3[s)S-]s)n?cs*4QkpO<-gs)e9Ys(MFA
+s'>Y,s&8qms%1=]q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>]fuAp[6FD8JNiB`q0r-'rI4]/s*iQ`s$H`Ts%35bs&&ess'#G/s.]Oj
+s/c7,s186Fs2G#^s3q#&s5O(Cs6fpWs7?9as7u]3s2=rXs2t;bs3(Gds3:Mfs2G#Ms0D[&s-rtU
+s-E\Cs+(,us*F]cs)A!Ts(D@;s&8qhqgSPFJNiB`q0qp!s$6T^s().Qs+UK3s.01lrOW$@s1J.-
+s1867s.o[cs-itSs-3PDs,?c6s,?u5s+:9$s*t&tqgJKlaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\H]rM#2[As&BJZA%9qo8ZVs/Z1$s/l=(rPnf9s2P)Gs0_m8s0r$=s186C
+s1SHIs2"`Ps2P)\s31Mhs3^kps4%)"s4IA*s4mY3s5F"<q;pl?s82ihs6p!Ps5O(6s3gqhs1\N?
+s/Q*os-`nKs+^>us*Xiks)e9[s(_RDs',M&s%iYhs%!)Tq*+\)rr at U6lTY,nlTY>7s%NGgs&/l!
+s(D at Ts+U7Ks1JBFo=k7>rP8HLs2G#]s3^krs47/#s4IA*s4mY6s5F"9s5!_0s4IA&s3q"qs3U_j
+s3CYgs2tA_l,NQ!J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>\N]rl\N]h<JNiB`q0r-'rI4W-ruT-Cm=,(es,-i=s-`n\s/Z1-s+(--
+s-<VUs.KCis0)I3s1\NGs1A<Bs1A<Hs1JB at s0D[2s0hs>s1\NKs2=rWs2FrTs24`Rs%*0ls/U^N
+n#H3'q5XJ&s1eTUs3:Sms4[M0s53k2s4RG'q#LGas,R,6s*aols*=Whs*+Kfs*=Wks*Xcos*ain
+s*4Qas(q^Is'Yk2s&]4us%WM`aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>\N]rl\N]h<JNiB`q0r-'rI4W-ruU,_q*4mIs%*/_s%iYns&f;,s'bq=
+s(VM:s0hs at s24lYs3Uets53k=s6]jWs7QEes8)corVli:s2b/^s2+fRs2=lTs1JB;s/H$iq2t]8
+s+(,us*F]gs)\3[s(_RAs&]4pqgSPFJNiB`q0qp!s$6TZs'>YBs*ap*s.'+jq#L6)s1867s/,gi
+s.01Ys-NbLs,m>EqiUo=s,$c/s+:9%s+(,uqg?M7q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\H\Z5T.\Z5JFJZA%9s2OrVs/Z1$s/l=(rPn`7s.TD"s0r$=s186Cs1SHI
+s2"`Ps2P)\s31Mhs3gqrs4./$s4RG,s4mY3s5F";qrIe=s5s at EmJd._s7QE\s69RCs4[M!s2=rJ
+s0)I!s.]O]s,d88q0r?ks*4Qcs)A!Ss(24:s&]4us%WM`s$?HEqgSPFJNiB`q0qWns$?ZSs%35a
+q#LGRs-Nb[s/uC3s1/0As1S0 at s1eTLs2+fRs2Y/as3q#!s4I;'s4dS0s53k;s5X.<s5*e2s4RG(
+s4%(ss3^els3CYgs2tA_l,NQ!J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>\N]rl\N]h<JNiB`q0r-'rI4W-ruT-Cm=,(es,-i=s-`n\s/Z1-s+(--
+s-<VUs.KCis0)I3s1\NGs1A<Bs1A<Hs1JB at s0D[2s0hs>s1\NKs2=rWs2FrTs24`Rs%*0ls/U^N
+n#H3'q5XJ&s1eTUs3:Sms4[M0s53k2s4RG'q#LGas,R,6s*aols*=Whs*+Kfs*=Wks*Xcos*ain
+s*4Qas(q^Is'Yk2s&]4us%WM`aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>\N]rl\N]h<JNiB`q0r-'rI4W-ruU,_q*4mIs%*/_s%iYns&f;,s'bq=
+s(VM:s0hs at s24lYs3Uets53k=s6]jWs7QEes8)corVli:s2b/^s2+fRs2=lTs1JB;s/H$iq2t]8
+s+(,us*F]gs)\3[s(_RAs&]4pqgSPFJNiB`q0qp!s$6TZs'>YBs*ap*s.'+jq#L6)s1867s/,gi
+s.01Ys-NbLs,m>EqiUo=s,$c/s+:9%s+(,uqg?M7q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\H\Z5T.\Z5JFJZA%9s2OrVs/Z1$s/l=(rPn`7s.TD"s0r$=s186Cs1SHI
+s2"`Ps2P)\s31Mhs3gqrs4./$s4RG,s4mY3s5F";qrIe=s5s at EmJd._s7QE\s69RCs4[M!s2=rJ
+s0)I!s.]O]s,d88q0r?ks*4Qcs)A!Ss(24:s&]4us%WM`s$?HEqgSPFJNiB`q0qWns$?ZSs%35a
+q#LGRs-Nb[s/uC3s1/0As1S0 at s1eTLs2+fRs2Y/as3q#!s4I;'s4dS0s53k;s5X.<s5*e2s4RG(
+s4%(ss3^els3CYgs2tA_l,NQ!J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>[6FNh]fu7 at JNiB`q0r-'rI4W-q]<^?nUCLis,-i?s.'+cs0)I6s2G#b
+s4[LJs/#ans0)I3s1\NGs1A<As186Fs1A<<s0)I(s/uC.s1&*@s1eTOs2FlRqo8Y,s0)I*s/l=%
+JZA=Aq8W61s0_mAs2G#Zs3CYps4d>Ls474ks1A<6s.TIWs,?u0s*aoss+(,us*F]mrI+]ns*O]j
+s*=Wfs)A!Qs().9s&oA%s%r_gs$k+Zq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>[6FNh]fu7 at JNiB`q0r-'rI4W-q]=oas$-<Es$cr[s%WMjs&K)&s'Pe:
+s(MFKs)S-bs1nZTs3:Sns4dS6s6BXSs7ZKfs8)cms8D]ks2tAXs186BrOi09s/H$ks-<P=s,$c5
+s+p]*s*juqs*=Wgs)e9Ys().5s%rTArr at U6lTY,no031>s%`T"s(hE1s1&*>s1A<Dq7cm?s02O#
+rLs7^s-itTs-<VKqih&As,6o3s+LE)s+:9"rI"WlaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\H[As0*]rLnJJZA%9s2Y#Xs/Z1$s/l=(rPn`7qkF,"s1/0 at s1JBFs1eTM
+s2+fUs2k;bs3L_os4%)"s4IA*s4mY1s5*e6s5Nq:s5j:Cs6'FGs69(Qs82igs6]jKs5*e,s2tAV
+s0_m,s.KC_s-`nKs+^>us*Xiks)e9]s).jLs'Yk0s&8qls%!)Tq*+\)rr at U6lTY,nlTY+Es%NGr
+s(VLXs+^Q9s.'+hs0Vg6s0r$=q7cmEs2"`Qs2=rWs2tAfs4./&rS.A-s5*e6s5O(@s5a4>s53k4
+s4[M*s4..us3gqps3Ueks31Mcs2b5\lc/c#J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>[6FNh]fu7 at JNiB`q0r-'rI4W-q]<^?nUCLis,-i?s.'+cs0)I6s2G#b
+s4[LJs/#ans0)I3s1\NGs1A<As186Fs1A<<s0)I(s/uC.s1&*@s1eTOs2FlRqo8Y,s0)I*s/l=%
+JZA=Aq8W61s0_mAs2G#Zs3CYps4d>Ls474ks1A<6s.TIWs,?u0s*aoss+(,us*F]mrI+]ns*O]j
+s*=Wfs)A!Qs().9s&oA%s%r_gs$k+Zq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>[6FNh]fu7 at JNiB`q0r-'rI4W-q]=oas$-<Es$cr[s%WMjs&K)&s'Pe:
+s(MFKs)S-bs1nZTs3:Sns4dS6s6BXSs7ZKfs8)cms8D]ks2tAXs186BrOi09s/H$ks-<P=s,$c5
+s+p]*s*juqs*=Wgs)e9Ys().5s%rTArr at U6lTY,no031>s%`T"s(hE1s1&*>s1A<Dq7cm?s02O#
+rLs7^s-itTs-<VKqih&As,6o3s+LE)s+:9"rI"WlaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\H[As0*]rLnJJZA%9s2Y#Xs/Z1$s/l=(rPn`7qkF,"s1/0 at s1JBFs1eTM
+s2+fUs2k;bs3L_os4%)"s4IA*s4mY1s5*e6s5Nq:s5j:Cs6'FGs69(Qs82igs6]jKs5*e,s2tAV
+s0_m,s.KC_s-`nKs+^>us*Xiks)e9]s).jLs'Yk0s&8qls%!)Tq*+\)rr at U6lTY,nlTY+Es%NGr
+s(VLXs+^Q9s.'+hs0Vg6s0r$=q7cmEs2"`Qs2=rWs2tAfs4./&rS.A-s5*e6s5O(@s5a4>s53k4
+s4[M*s4..us3gqps3Ueks31Mcs2b5\lc/c#J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>Ys/*d_*7[DJNiB`q0r-'rI4W-pE%49qgSQps+(-'s,R,Gs.KCks0Ma?
+s2tAls53k?s6BWbs0)I3s1\NGs1A<As186Es1868s/Z1!s/5mus0D[8s1\NNqo/TRqo8Y,s0D[/
+s0)I'JZA=Aq8W61s0_m at s1nZPqZ-ZSrSde7s4dS!s2"`Bs/5mcs,m>:s+:9(s+gW)s*OcnrI+]m
+s*=WhrHJ9_s).jMs'l"5s&]5!s%`Sds$XtXq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Ys/*d_*7[DJNiB`q0r-'rI4W-pE&Was$6BGs$m#]s%iYns&]5*s'bq>
+s(hXQs)n?hs+C?/s,m?6s53k=s6]jXs7cQgs8)cms8D]ks82ibs0qs4s0Ma)s.KCYs,?o+s+:9'
+s+13"s*jurs*Xims*4Q`s(D@<s&AlErr at U6lTY,no031>qZ-Y9s+UK?s/Q+.s1/0As1J0As1867
+s/,ams/#ais.B=Zs-EPIs-!DAs+p]0s+UK)s*juqrHlY8q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HZ)[a&_5d=NJZA1=rN#t>qoSl=s/c7&s/u=?ql9[jq4mu$s1JBFs1eTM
+s24lVs2tAds3Ueqs4./$s4RG,s5!Y1s5<q9rT!q=s5j:Cs6'FGs69RKs6K^Oqu6Qms7lW`s69RC
+s4[M$s2P)Ms02O"s.'+Ws-<VGs+^>us*Xiks)n?`s)A!Ps'l"4s&K(ns%!)Tq*+\)rr at U6lTY,n
+nNQgMq`b$Es$cres'u(Ls+(--s-Wh`s02O.s0Ma9q7cmFs2=rVs2Y/\s31Mjs4@;*s5!_3s53k8
+s5O(>s60LEs5X.;s5*e1s4RG's4%(ts3gqos3CYgs2t;]rQ"BHq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Ys/*d_*7[DJNiB`q0r-'rI4W-pE%49qgSQps+(-'s,R,Gs.KCks0Ma?
+s2tAls53k?s6BWbs0)I3s1\NGs1A<As186Es1868s/Z1!s/5mus0D[8s1\NNqo/TRqo8Y,s0D[/
+s0)I'JZA=Aq8W61s0_m at s1nZPqZ-ZSrSde7s4dS!s2"`Bs/5mcs,m>:s+:9(s+gW)s*OcnrI+]m
+s*=WhrHJ9_s).jMs'l"5s&]5!s%`Sds$XtXq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Ys/*d_*7[DJNiB`q0r-'rI4W-pE&Was$6BGs$m#]s%iYns&]5*s'bq>
+s(hXQs)n?hs+C?/s,m?6s53k=s6]jXs7cQgs8)cms8D]ks82ibs0qs4s0Ma)s.KCYs,?o+s+:9'
+s+13"s*jurs*Xims*4Q`s(D@<s&AlErr at U6lTY,no031>qZ-Y9s+UK?s/Q+.s1/0As1J0As1867
+s/,ams/#ais.B=Zs-EPIs-!DAs+p]0s+UK)s*juqrHlY8q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HZ)[a&_5d=NJZA1=rN#t>qoSl=s/c7&s/u=?ql9[jq4mu$s1JBFs1eTM
+s24lVs2tAds3Ueqs4./$s4RG,s5!Y1s5<q9rT!q=s5j:Cs6'FGs69RKs6K^Oqu6Qms7lW`s69RC
+s4[M$s2P)Ms02O"s.'+Ws-<VGs+^>us*Xiks)n?`s)A!Ps'l"4s&K(ns%!)Tq*+\)rr at U6lTY,n
+nNQgMq`b$Es$cres'u(Ls+(--s-Wh`s02O.s0Ma9q7cmFs2=rVs2Y/\s31Mjs4@;*s5!_3s53k8
+s5O(>s60LEs5X.;s5*e1s4RG's4%(ts3gqos3CYgs2t;]rQ"BHq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>XZl[``BO*HJNiB`q0r-'rI4W-nK,e9s$6TMrIY'%s+p]<s-s%as/l=1
+s24l_s4[M6s6]jTs7$'Ys0r$Bs1JBDrOMsAs0hs1s/>sps.o[os0)I2s1JBLs2OrTqo8Y,s0Vg4
+s02O(JZA=Aq8W61q#LH5s2tAls53_3s53k+s2Y/Ns/l<os-E\Ds+gW3s,$c+s*OcnrI+]ms*+Ea
+s)e9\s(hXHs'Yk1s&K(qs%NG`s$OnWq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>XZl[``BO*HJNiB`q0r-'rI4W-nK.3as$6BHs%!)_s&&ers&oA.s'u(B
+s)%dVs*4Qns+^Q5s-3PPs.TJUs6fpZrV6Ehs82ipp\t3is6p!Js474Ls/Q*ls-NbFs+C>ps*4Qj
+q0r?ls*Xins*F]fs(hXCs&])Hrr at U6lTY,nq*+TSs%`T"s().Es*ap0s/#b&s1/0As1J6Cs1eTG
+s0D[*s/uC*s/c7"s/5mjs-ihOs-3PEs,-i4s+gW+s*juqrHlY8q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HXfD="`N&aRJZA1=rN#t?qo\l=s/l=(rPn`7q4mnas/#ams1nZOs2=rX
+s3(Gfs3^kss475&s4[M.rSIM1s5Eq:s5a4As5s at ErTO:Gs6KXMs6]jarVQWgs6TdIs5*e,s3CY]
+s0_m-s.KCYs-3PGs,R,6q0r?ks*4Qfs*"E_s(hXFs'G_-s%r_es$?HEqgSPFJNiB`q0r-'q#L"M
+s$?Z[s'>Y at s*F^"s-3PXs/c7&s0;U7q7cmFs2P)[s2k;as3L_ps4RG.s53k8s5X.?s5j:Cs69RG
+s5a4=s53k3s4[M)s4./!s3gqos3CYgs2t;^rQ,#Zn](D)J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>XZl[``BO*HJNiB`q0r-'rI4W-nK,e9s$6TMrIY'%s+p]<s-s%as/l=1
+s24l_s4[M6s6]jTs7$'Ys0r$Bs1JBDrOMsAs0hs1s/>sps.o[os0)I2s1JBLs2OrTqo8Y,s0Vg4
+s02O(JZA=Aq8W61q#LH5s2tAls53_3s53k+s2Y/Ns/l<os-E\Ds+gW3s,$c+s*OcnrI+]ms*+Ea
+s)e9\s(hXHs'Yk1s&K(qs%NG`s$OnWq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>XZl[``BO*HJNiB`q0r-'rI4W-nK.3as$6BHs%!)_s&&ers&oA.s'u(B
+s)%dVs*4Qns+^Q5s-3PPs.TJUs6fpZrV6Ehs82ipp\t3is6p!Js474Ls/Q*ls-NbFs+C>ps*4Qj
+q0r?ls*Xins*F]fs(hXCs&])Hrr at U6lTY,nq*+TSs%`T"s().Es*ap0s/#b&s1/0As1J6Cs1eTG
+s0D[*s/uC*s/c7"s/5mjs-ihOs-3PEs,-i4s+gW+s*juqrHlY8q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HXfD="`N&aRJZA1=rN#t?qo\l=s/l=(rPn`7q4mnas/#ams1nZOs2=rX
+s3(Gfs3^kss475&s4[M.rSIM1s5Eq:s5a4As5s at ErTO:Gs6KXMs6]jarVQWgs6TdIs5*e,s3CY]
+s0_m-s.KCYs-3PGs,R,6q0r?ks*4Qfs*"E_s(hXFs'G_-s%r_es$?HEqgSPFJNiB`q0r-'q#L"M
+s$?Z[s'>Y at s*F^"s-3PXs/c7&s0;U7q7cmFs2P)[s2k;as3L_ps4RG.s53k8s5X.?s5j:Cs69RG
+s5a4=s53k3s4[M)s4./!s3gqos3CYgs2t;^rQ,#Zn](D)J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>WBU1Zb<G`NJNiB`q0r-'rI4W-m2jM9s$?ZQrC-a at s,6oBs.B=is0;U9
+s2Y/gs53k at s763^s7QEcs7lWns1JBDqmla5s/Z0ss.fUfs/,gts0Ma9s1nZQs2G#Xs2FlTs%*1!
+s0_m2s/U^No;_W+q#LH"s0Vg7s1/0Es2Y/hs5*_3s5<q7s4..ms2"`Cs/5mes-!DAs,[2;s+12s
+s*Xcns*Ocis)\-Zs).jNs'u(8s&f;"s%`Sds$m#SaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>WBU1Zb<G`NJNiB`q0r-'rI4W-m2kpas$6TNqa:BSs%WMks&]5)s'Yk<
+s(_RPs)n?gs+:9-s,[2Gs.'+`s/>t$s7Q?ds8)cms8D]ks82ibs5X.1s2tA[s-NbFs+LDus)J'^
+s*OQjs*aops*Ocls*"EZs(247qgSPFJNiB`q0r,>q`b$Fs%`Sss'5S6s*"F"s.01ls0D[7s1J<E
+s2"`Ps1eTBs0M[4s0Vg2s/uC#s.]O`s-itUs-E\Is,?u8s+gW+s*juqs*OclaaX'cJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HWN,gqbGtBXJZA1=rN#t at qof#@rN6+&rPn`7s.f=as/#ams/5mqs2G#Z
+s31Mhs3gqus4@;(s4dS0qqqA1s5O(=s5a4As5s:Cs60LIs6BRKs6BXMs6Td]s7H?Vs5F"3s3gqh
+s1SH;s/#abs-!DCs,?u7s+^>us*Xims*=Whs)e9Xs(D@?s',M&s%NG]s$6TKrBC+-rr at U6lTY,n
+q#K_Es$?Z[s'#G7s)e9ms,d8Ps/>sss0;U7q7cmFs2P)]s31Mfs3^kus4mY3s5O(>s5s at Es60LI
+s6BXIs5j:?s53k4s4[M*s475"s3gqos3CYgs3(A`rQ5)\n](D)J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>WBU1Zb<G`NJNiB`q0r-'rI4W-m2jM9s$?ZQrC-a at s,6oBs.B=is0;U9
+s2Y/gs53k at s763^s7QEcs7lWns1JBDqmla5s/Z0ss.fUfs/,gts0Ma9s1nZQs2G#Xs2FlTs%*1!
+s0_m2s/U^No;_W+q#LH"s0Vg7s1/0Es2Y/hs5*_3s5<q7s4..ms2"`Cs/5mes-!DAs,[2;s+12s
+s*Xcns*Ocis)\-Zs).jNs'u(8s&f;"s%`Sds$m#SaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>WBU1Zb<G`NJNiB`q0r-'rI4W-m2kpas$6TNqa:BSs%WMks&]5)s'Yk<
+s(_RPs)n?gs+:9-s,[2Gs.'+`s/>t$s7Q?ds8)cms8D]ks82ibs5X.1s2tA[s-NbFs+LDus)J'^
+s*OQjs*aops*Ocls*"EZs(247qgSPFJNiB`q0r,>q`b$Fs%`Sss'5S6s*"F"s.01ls0D[7s1J<E
+s2"`Ps1eTBs0M[4s0Vg2s/uC#s.]O`s-itUs-E\Is,?u8s+gW+s*juqs*OclaaX'cJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HWN,gqbGtBXJZA1=rN#t at qof#@rN6+&rPn`7s.f=as/#ams/5mqs2G#Z
+s31Mhs3gqus4@;(s4dS0qqqA1s5O(=s5a4As5s:Cs60LIs6BRKs6BXMs6Td]s7H?Vs5F"3s3gqh
+s1SH;s/#abs-!DCs,?u7s+^>us*Xims*=Whs)e9Xs(D@?s',M&s%NG]s$6TKrBC+-rr at U6lTY,n
+q#K_Es$?Z[s'#G7s)e9ms,d8Ps/>sss0;U7q7cmFs2P)]s31Mfs3^kus4mY3s5O(>s5s at Es60LI
+s6BXIs5j:?s53k4s4[M*s475"s3gqos3CYgs3(A`rQ5)\n](D)J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>UH\VVcT_/RJNiB`q0r-'rI4W-koS59s$?ZSrCHr[s%`T^s.fUqs0_mA
+s3(Gos5X.Is7cQhs8)cmrVccns7lW%s0Ma1s02O&s.fUfs.97cs/H%&s0hs at s2"`Ps24lTqo8Y,
+s1/0;s02O(JZA=As2Op9q5XIrs0)I-s0Vg;s2P)fs5!Y1s5<q7s4@:qs2=rMs/uBrs-NbKs,d8<
+s+1,rrI+]ms*+Kas)A!Vs(hXHs'bq3s&T.ss%NG`s$ZlPaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>UH\VVcT_/RJNiB`q0r-'rI4W-koTXas$6TNs$Q`Qs%35cs&8r"s'>Y6
+s(D at Js)S-`s*ap#s,6o>s-WhXs.fUns02O3s181*s82ipp\t3is6p!Js474ms1SH;s.o[Gs*=Wa
+s*"Ehq0r?ls*Xcls*"E[s(249qgSPFJNiB`s*jhFo031>s%`Sls&K)(s)7pis-E\^s/Z1(s0hm?
+s24lVs2+fLs1A<Es1\NFs1&*;s02O&s.fUbs.'+Ws-3PDs,6o4s+:9"s*Xims*;_8q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HUT47mc`6f\JZA1=rN#tAqonr>s/u=?ql9IfrMBOks/5mqs/H$us/Z1E
+s3Ueps4@;'s4[M.s5*e5qr%M5s5O(=s5a4As5s4As60LJs6K^Ms60FGs6BXHs60L>s4..ps2G#K
+s/l<ps-E\Es,-i3s+LE'q0r?ls*Xins*F]gs)7pPs().9s&]4rs%*/Ws$H`Os$-C0rr at U6lTY>t
+qZ,Y?s$?Z[s'#G7s)A!es,?uHs.o[os0;U7q7cmFs2P)]s3CYks4%)%s5*e8s5j:Ds69LIrTjLI
+s5s at As53k4s4[M*s475"s3gqos3CSerQG/^s2a`Mq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>UH\VVcT_/RJNiB`q0r-'rI4W-koS59s$?ZSrCHr[s%`T^s.fUqs0_mA
+s3(Gos5X.Is7cQhs8)cmrVccns7lW%s0Ma1s02O&s.fUfs.97cs/H%&s0hs at s2"`Ps24lTqo8Y,
+s1/0;s02O(JZA=As2Op9q5XIrs0)I-s0Vg;s2P)fs5!Y1s5<q7s4@:qs2=rMs/uBrs-NbKs,d8<
+s+1,rrI+]ms*+Kas)A!Vs(hXHs'bq3s&T.ss%NG`s$ZlPaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>UH\VVcT_/RJNiB`q0r-'rI4W-koTXas$6TNs$Q`Qs%35cs&8r"s'>Y6
+s(D at Js)S-`s*ap#s,6o>s-WhXs.fUns02O3s181*s82ipp\t3is6p!Js474ms1SH;s.o[Gs*=Wa
+s*"Ehq0r?ls*Xcls*"E[s(249qgSPFJNiB`s*jhFo031>s%`Sls&K)(s)7pis-E\^s/Z1(s0hm?
+s24lVs2+fLs1A<Es1\NFs1&*;s02O&s.fUbs.'+Ws-3PDs,6o4s+:9"s*Xims*;_8q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HUT47mc`6f\JZA1=rN#tAqonr>s/u=?ql9IfrMBOks/5mqs/H$us/Z1E
+s3Ueps4@;'s4[M.s5*e5qr%M5s5O(=s5a4As5s4As60LJs6K^Ms60FGs6BXHs60L>s4..ps2G#K
+s/l<ps-E\Es,-i3s+LE'q0r?ls*Xins*F]gs)7pPs().9s&]4rs%*/Ws$H`Os$-C0rr at U6lTY>t
+qZ,Y?s$?Z[s'#G7s)A!es,?uHs.o[os0;U7q7cmFs2P)]s3CYks4%)%s5*e8s5j:Ds69LIrTjLI
+s5s at As53k4s4[M*s475"s3gqos3CSerQG/^s2a`Mq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>T0E2Rdm!SVJNiB`q0r-'rI4W-jW;r9s$?ZSs%<;as%NGis'5S9s02O6
+s24l_s4dS:s7?9gq>UEms7QE`s7$'Us6BW_s/,ghs.97[s.KChs/l=-s1A<Gs1nZNs2=fSs%*1$
+s0_m2s/U^Nq5X5jqo8</s/c7(s1/0Ks3gr&s5!_3s5<q7s4RG!s2k;Zs0hs-s.01Us,d8=s+1,r
+rI+]ms*+Kas)7pSs(VLDs'G_.s&B"ps%NG`s$ZlPaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>T0E2Rdm!SVJNiB`q0r-'rI4W-jW=@as$6TNs$Q`Rs%<;es&B#$s'G_9
+s(VLNs)e9ds*t''s,I&Bs-it\s/#aqs0;U5qn)n+s8D]ks82ibs5O(.s2Y/Ns0;U"s-WhEs*t&l
+s*OQjs*ains*Ocis).jKs'Y_Qrr at U6nNQaKqgS-#s$6TTs%EAes&K)4s*Xj-s.B=es/H%)rP&<L
+rQ,#Xs2+fTs2P)Vs1nZJs0r$5s/Z0ps.B=]s-NbJs,?u5s+12ts*F]is*)S6q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HT;qhie#N5`JZA1=rN#tAs31Gds/l1$rPn`7s.oCcs/,gos/>sss/Q+#
+s/uC*s4%)$s4RG,s5!_4s5<_3s5O(=s5a4Aqr[qAs60LIrTaFHs5s:Cs5X.6s3q"rs2tAXs0_m+
+s.01Ps+gW.s+C?&s+'cks*aops*4Qas)%dLs'bq2s&/kis%!)Xs$ZlPqgSPFJNiTfq#L;@j$*K/
+s%`Sts'u(Es*=X#s-E\Ys/H%'s1.s>s2"`Ts2tAfs3gqus4mY5s5j:Es69RKrTjFKs69RHs5X.:
+s5!_/s4IA&s4%(ss3UekrQY;bs3(Gbs2a`Mq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>T0E2Rdm!SVJNiB`q0r-'rI4W-jW;r9s$?ZSs%<;as%NGis'5S9s02O6
+s24l_s4dS:s7?9gq>UEms7QE`s7$'Us6BW_s/,ghs.97[s.KChs/l=-s1A<Gs1nZNs2=fSs%*1$
+s0_m2s/U^Nq5X5jqo8</s/c7(s1/0Ks3gr&s5!_3s5<q7s4RG!s2k;Zs0hs-s.01Us,d8=s+1,r
+rI+]ms*+Kas)7pSs(VLDs'G_.s&B"ps%NG`s$ZlPaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>T0E2Rdm!SVJNiB`q0r-'rI4W-jW=@as$6TNs$Q`Rs%<;es&B#$s'G_9
+s(VLNs)e9ds*t''s,I&Bs-it\s/#aqs0;U5qn)n+s8D]ks82ibs5O(.s2Y/Ns0;U"s-WhEs*t&l
+s*OQjs*ains*Ocis).jKs'Y_Qrr at U6nNQaKqgS-#s$6TTs%EAes&K)4s*Xj-s.B=es/H%)rP&<L
+rQ,#Xs2+fTs2P)Vs1nZJs0r$5s/Z0ps.B=]s-NbJs,?u5s+12ts*F]is*)S6q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HT;qhie#N5`JZA1=rN#tAs31Gds/l1$rPn`7s.oCcs/,gos/>sss/Q+#
+s/uC*s4%)$s4RG,s5!_4s5<_3s5O(=s5a4Aqr[qAs60LIrTaFHs5s:Cs5X.6s3q"rs2tAXs0_m+
+s.01Ps+gW.s+C?&s+'cks*aops*4Qas)%dLs'bq2s&/kis%!)Xs$ZlPqgSPFJNiTfq#L;@j$*K/
+s%`Sts'u(Es*=X#s-E\Ys/H%'s1.s>s2"`Ts2tAfs3gqus4mY5s5j:Es69RKrTjFKs69RHs5X.:
+s5!_/s4IA&s4%(ss3UekrQY;bs3(Gbs2a`Mq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Rm-cNf09"ZJNiB`q0r-'rI4W-i?$Z9s$?ZSs%<5cs&B#*s(VLSs*ap&
+s3q#*s6BXWp\t3ks7H?Zs6K^Ks5j:?s53jJs-s%Us.01bs/Q+(s1&*As1SHIs2=fSs%*1%s0_m2
+s/U^Nq#L;lq8W$+s/Z10s2=rbs4dS/s5*e6s53k0s3gqps3(GUs0;U#s-`nLs,6o/q0i9is*+Ka
+s)7pQs(;:>s'5S)s&&eks%NG`s$ZlPaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>Rm-cNf09"ZJNiB`q0r-'rI4W-i?&"as$H`Qs$crWs%EAgs&K)&s'Pe;
+s(hXRs*"Ehs+13+s,[2Gs.'+`s/5mus0D[7qn2m at s1\I2s8Duqs7u]\s5!_%s2+fDs/uBts-WhE
+s*s]js*acls*+K]s(D at BqgSPFs$)&uq`afUq`ah)nNQt=s$ZlWs%`T&s)n?ts-WhWs.fV#rP&<L
+s2b5bs31Mcs31Mfs2tA_s2G#Qs1&*6s/H$os.B=[s-*JCs,$c-s*F]is*"EbaaX'cJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HS#ZDef;eYdJZA1=rN#tAs31Geq6'\9ql9[lqka7gs/5mqs/H$us/Z1$
+s/uC+s0;U1s4[M.s5*e6pYl/3s5X.?rT3q=s6'FHs6BXKs6'FErT+":s4I at us2Y/Ts1/07s/#aa
+s,[27s+LE)s+13#nUCLbs)n?\s(hXFs'>Y)s%`Sds%*/Zs$6I1rr at U6q*+TSq`ah)j$*K/s%`Ss
+s'G_;s)e9ns,m>Rs/H%'s1.s>s2"`Ts2tAfs4%)%s5*e9s6':FrTsLMs6BXIs5X.:s5!_/s4IA&
+s4%(ss3UelrQbAds31Mcs2a`Mq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Rm-cNf09"ZJNiB`q0r-'rI4W-i?$Z9s$?ZSs%<5cs&B#*s(VLSs*ap&
+s3q#*s6BXWp\t3ks7H?Zs6K^Ks5j:?s53jJs-s%Us.01bs/Q+(s1&*As1SHIs2=fSs%*1%s0_m2
+s/U^Nq#L;lq8W$+s/Z10s2=rbs4dS/s5*e6s53k0s3gqps3(GUs0;U#s-`nLs,6o/q0i9is*+Ka
+s)7pQs(;:>s'5S)s&&eks%NG`s$ZlPaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>Rm-cNf09"ZJNiB`q0r-'rI4W-i?&"as$H`Qs$crWs%EAgs&K)&s'Pe;
+s(hXRs*"Ehs+13+s,[2Gs.'+`s/5mus0D[7qn2m at s1\I2s8Duqs7u]\s5!_%s2+fDs/uBts-WhE
+s*s]js*acls*+K]s(D at BqgSPFs$)&uq`afUq`ah)nNQt=s$ZlWs%`T&s)n?ts-WhWs.fV#rP&<L
+s2b5bs31Mcs31Mfs2tA_s2G#Qs1&*6s/H$os.B=[s-*JCs,$c-s*F]is*"EbaaX'cJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HS#ZDef;eYdJZA1=rN#tAs31Geq6'\9ql9[lqka7gs/5mqs/H$us/Z1$
+s/uC+s0;U1s4[M.s5*e6pYl/3s5X.?rT3q=s6'FHs6BXKs6'FErT+":s4I at us2Y/Ts1/07s/#aa
+s,[27s+LE)s+13#nUCLbs)n?\s(hXFs'>Y)s%`Sds%*/Zs$6I1rr at U6q*+TSq`ah)j$*K/s%`Ss
+s'G_;s)e9ns,m>Rs/H%'s1.s>s2"`Ts2tAfs4%)%s5*e9s6':FrTsLMs6BXIs5X.:s5!_/s4IA&
+s4%(ss3UelrQbAds31Mcs2a`Mq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>QTk?JgHPF^JNiB`q0r-'rI4W-h&bB9s$?ZSs%<;es&/kus'l"Es*"Em
+s,-iAs.B>Vs7Q-cs8Duis6K^Is5X.;s5!_/s4@:us-<VQs.KCis/uC1s1/0As1eTPqo8Y,s1JB?
+s02O(LT:4Oo;_W+o;_hks1&*Is3Uf"s4mY2s5<q7s4RG)s4RG$s2G#Ks/Z0ms-E\Gs+C,qs*Oci
+s)S-Vs(VLDs'Pe/s&B"nrCd/]s$ZlPaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>QTk?JgHPF^JNiB`q0r-'rI4W-i?&"@ruh>0s$m#Ys%NGis&T/(s'Yk=
+s)%dVs*4Qls+C?/s,m>Ks.97ds/H%$s0Vg:qn;sBs1SBDs8)cks7ZKUs4RFrs1\N<s/Q*os-WhE
+s*s]jqgJKls*4Q^s(hXJqgSPFs$QfPs$)3$qZ-4Oq0q]ps$6TRs'#G?s+134s-E\[s0M[<s24lX
+s3:Sjs3L_os4..ts3L_hs2P)Rs0hs1s/5mks.'+Ss,d8=s+LDus*"Eas)Z;2q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HQ`BuagT((hJZA1=rN#tAs31Geq6'\9ql9[ls/#Ogs/5mqs/H$us/Z1%
+s0)I,s0DU1s0_m`s5<Y1s5O(=s5a";s5s at Es60FGs6'FDs5O(;s5!_*s3:S^s1SH?s/c6qs-`nI
+s+UK+s+C?&s+'Kcs)\3Xs(D@>s&f:us%WMds$m#RqgSPFJNj)tqZ-4Oq0q?fs$?Z[s&B#$s'YkF
+s*ap,s-s%as/uC3q7cmFs2P)^s3^kts4dS3s5j:FrU'XOrU'ROs6K^Js5X.:s5!_/s4IA&s4%(s
+rQtMhrQbGes2tA_n](D)J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>QTk?JgHPF^JNiB`q0r-'rI4W-h&bB9s$?ZSs%<;es&/kus'l"Es*"Em
+s,-iAs.B>Vs7Q-cs8Duis6K^Is5X.;s5!_/s4@:us-<VQs.KCis/uC1s1/0As1eTPqo8Y,s1JB?
+s02O(LT:4Oo;_W+o;_hks1&*Is3Uf"s4mY2s5<q7s4RG)s4RG$s2G#Ks/Z0ms-E\Gs+C,qs*Oci
+s)S-Vs(VLDs'Pe/s&B"nrCd/]s$ZlPaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>QTk?JgHPF^JNiB`q0r-'rI4W-i?&"@ruh>0s$m#Ys%NGis&T/(s'Yk=
+s)%dVs*4Qls+C?/s,m>Ks.97ds/H%$s0Vg:qn;sBs1SBDs8)cks7ZKUs4RFrs1\N<s/Q*os-WhE
+s*s]jqgJKls*4Q^s(hXJqgSPFs$QfPs$)3$qZ-4Oq0q]ps$6TRs'#G?s+134s-E\[s0M[<s24lX
+s3:Sjs3L_os4..ts3L_hs2P)Rs0hs1s/5mks.'+Ss,d8=s+LDus*"Eas)Z;2q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HQ`BuagT((hJZA1=rN#tAs31Geq6'\9ql9[ls/#Ogs/5mqs/H$us/Z1%
+s0)I,s0DU1s0_m`s5<Y1s5O(=s5a";s5s at Es60FGs6'FDs5O(;s5!_*s3:S^s1SH?s/c6qs-`nI
+s+UK+s+C?&s+'Kcs)\3Xs(D@>s&f:us%WMds$m#RqgSPFJNj)tqZ-4Oq0q?fs$?Z[s&B#$s'YkF
+s*ap,s-s%as/uC3q7cmFs2P)^s3^kts4dS3s5j:FrU'XOrU'ROs6K^Js5X.:s5!_/s4IA&s4%(s
+rQtMhrQbGes2tA_n](D)J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>P<SpFh`gjbJNiB`q0r-'rI4W-f,is9s$?ZSs%<;es&B#&s(24Ks*=Ws
+s,?uCs.B=ks0_V#s8Duis6K^Ds5*e1s4IA%s3gqns2b5[s.01ds/c7,s0r$>s1eTPqo8Y,s1JB@
+s0;U+s/V9^q#Kf^q8W$+s/Z10s2=ras4RG-s5*e6s53k3s5!_4s4[Lss1nZ?s/,gds-3P>s+(-!
+s*aops*4Qcs)7pPs(24=s'5S*s&&eis%3/[s$ZlPaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>P<SpFh`gjbJNiB`q0r-'rI4W-iu\4Bruh=bs!%Cds%WMks&]5*s'bq?
+s).jYs*F]ps+UK3s-*JOs.KChs/Z1(s0hs>pV-[?qmla=s7?9Os4..js1864s/,ggs-NbDs*sWh
+qgJKhs)S-Xs(qR]rrE'hs$crTs$6TKOZrR at m6:>plTY>7s&8r0s*F^&s-*JXs0M[<s24lXs3:Sk
+s3gr!s4[M*s474us3(GZs1/07s/Q*qs.97Ws-!DAs+^Q#s*"E`s)H/0q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HPH+Q]hl?LlJZA1=rN#tAs31Geq6'\9ql9[ls/#[krMT[os/H$us/Z1$
+s/l=)s0;U0rNuU4s0hm8q;MA5s5X";qrRk?s60LIs60LFs5a4=s53k1s3gqhs1nZFs0;U(s.TIZ
+s,?u2rIb-$s+'?_s(_RDs',M&s%r_hs$m#RqgSPFLHbM6m6:>pj$*K/s%EAfs&B#&s(_RZs,$cB
+s.KCls0_m>s1SBGs24lYs3CYos4RG/s5O(As6KRNrU0XQs6K^Js5X.:s5!_/s4IA&s4%(srR(Sj
+s3L_js31Mcs2a`Mq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>P<SpFh`gjbJNiB`q0r-'rI4W-f,is9s$?ZSs%<;es&B#&s(24Ks*=Ws
+s,?uCs.B=ks0_V#s8Duis6K^Ds5*e1s4IA%s3gqns2b5[s.01ds/c7,s0r$>s1eTPqo8Y,s1JB@
+s0;U+s/V9^q#Kf^q8W$+s/Z10s2=ras4RG-s5*e6s53k3s5!_4s4[Lss1nZ?s/,gds-3P>s+(-!
+s*aops*4Qcs)7pPs(24=s'5S*s&&eis%3/[s$ZlPaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>P<SpFh`gjbJNiB`q0r-'rI4W-iu\4Bruh=bs!%Cds%WMks&]5*s'bq?
+s).jYs*F]ps+UK3s-*JOs.KChs/Z1(s0hs>pV-[?qmla=s7?9Os4..js1864s/,ggs-NbDs*sWh
+qgJKhs)S-Xs(qR]rrE'hs$crTs$6TKOZrR at m6:>plTY>7s&8r0s*F^&s-*JXs0M[<s24lXs3:Sk
+s3gr!s4[M*s474us3(GZs1/07s/Q*qs.97Ws-!DAs+^Q#s*"E`s)H/0q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HPH+Q]hl?LlJZA1=rN#tAs31Geq6'\9ql9[ls/#[krMT[os/H$us/Z1$
+s/l=)s0;U0rNuU4s0hm8q;MA5s5X";qrRk?s60LIs60LFs5a4=s53k1s3gqhs1nZFs0;U(s.TIZ
+s,?u2rIb-$s+'?_s(_RDs',M&s%r_hs$m#RqgSPFLHbM6m6:>pj$*K/s%EAfs&B#&s(_RZs,$cB
+s.KCls0_m>s1SBGs24lYs3CYos4RG/s5O(As6KRNrU0XQs6K^Js5X.:s5!_/s4IA&s4%(srR(Sj
+s3L_js31Mcs2a`Mq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>O$<F at jZ`KhJNiB`q0r-'rI4W-diR[9s$?ZSs%EAgs&K))s(MFQs*Xj$
+s,[2Gs.B=ks0_g>qu6Wos7H?Ws5F"2s475!s3Uejs2tA^qo8Z8s0;U3s186Fs2=fSs%*1's1&*7
+s02O,s/l=%SZ;Jcjf8-ro;_hks1&*Is3L_ps4IA,s5<q7s5F";s5a4=s4%(hs1/03s.fU]s,-i-
+s*t&ss*Ochs)A!Ss(D@@s'G_.s&B"os%3/Ys$crUs$4\Tq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>O$<F at jZ`KhJNiB`q0r-'rI4W-iu\4Bruh=bs!%Ifs!7Uks!dtMs'>Y6
+s(MFNs)n?hs+13*s,R,Es.'+`s/>t"s0D[6s1A$>s1JBArO2a9s0hs,s3gqcs0hs,s.]O_s-*J@
+s*sKds*aoms*"E`s)@jarrE'ls%35\s$?NHSNciLjZ`KhlTY>7s&/l+s)\3ms-*JXs0M[<s24lX
+s3:Sks4./'s4mY.s4IA&s3CY`s1JB=s/l=!s.KC[s-3PEs+gW%s*+K`s)A!fbC99eJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HO/i'Wjf8-rJZA1=rN#tAs31Geq6'\9ql9[ls/#[krMT[os/H$us/Z1$
+s/uC+s0;U1qmHI4q7$=]s5O";q;hS;s5s at Es60LGs5j:@s53k3s4@:rs2G#Ns0_m/s/5mhs-<VA
+s+1-#s+13#jaR59s&]4us%NG^s$6I1rrA*Dq#KM?q0q?fs$?ZSs%<;es&T/2s)n?qs-!DPs/,h'
+s1JBGs1eTMs2P)_s3^kus4mY5s5j:Fs6]jVrUU!Ys6opUs6TdKs5X.:s5!_/s4IA&s4%(trR1Yl
+s3Ueks31Mcs2a`Mq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>O$<F at jZ`KhJNiB`q0r-'rI4W-diR[9s$?ZSs%EAgs&K))s(MFQs*Xj$
+s,[2Gs.B=ks0_g>qu6Wos7H?Ws5F"2s475!s3Uejs2tA^qo8Z8s0;U3s186Fs2=fSs%*1's1&*7
+s02O,s/l=%SZ;Jcjf8-ro;_hks1&*Is3L_ps4IA,s5<q7s5F";s5a4=s4%(hs1/03s.fU]s,-i-
+s*t&ss*Ochs)A!Ss(D@@s'G_.s&B"os%3/Ys$crUs$4\Tq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>O$<F at jZ`KhJNiB`q0r-'rI4W-iu\4Bruh=bs!%Ifs!7Uks!dtMs'>Y6
+s(MFNs)n?hs+13*s,R,Es.'+`s/>t"s0D[6s1A$>s1JBArO2a9s0hs,s3gqcs0hs,s.]O_s-*J@
+s*sKds*aoms*"E`s)@jarrE'ls%35\s$?NHSNciLjZ`KhlTY>7s&/l+s)\3ms-*JXs0M[<s24lX
+s3:Sks4./'s4mY.s4IA&s3CY`s1JB=s/l=!s.KC[s-3PEs+gW%s*+K`s)A!fbC99eJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HO/i'Wjf8-rJZA1=rN#tAs31Geq6'\9ql9[ls/#[krMT[os/H$us/Z1$
+s/uC+s0;U1qmHI4q7$=]s5O";q;hS;s5s at Es60LGs5j:@s53k3s4@:rs2G#Ns0_m/s/5mhs-<VA
+s+1-#s+13#jaR59s&]4us%NG^s$6I1rrA*Dq#KM?q0q?fs$?ZSs%<;es&T/2s)n?qs-!DPs/,h'
+s1JBGs1eTMs2P)_s3^kus4mY5s5j:Fs6]jVrUU!Ys6opUs6TdKs5X.:s5!_/s4IA&s4%(trR1Yl
+s3Ueks31Mcs2a`Mq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>M*Ck<ks"olJNiB`q0r-'rI4W-cQ;C9s$H`Vs%WMks&]5-s(hXWs*t'*
+s-!DMs.KCls0_[:s8N&ss7H?Ws5F"1s3^kls3(Gbs2b5\pW!6 at s186Fs2=fSs%*1(s1/0;s0Vg3
+s02O,s/W&tq#K6Nq8W$+s/Z10s2=r[s3L_os4@;*s5O(@s6'FHs5s at 9s3:SXs0;U%s-s%Hs+:9$
+s*juos)\3Xs(VLDs'Pe1s&T.ss%NG_s$ZlSrBgNLaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>M*Ck<ks"olJNiB`q0r-'rI4W-iu\4Bruh=cs!.Ifs!Rgqs"+1&s'u(C
+s)A!]s*ap"s,$c;s-NbWs.o[os/uC-s0r$?pV-[?s1&*9s0Ma5s0Ma%s-`nGs0D[$s.97Ws,[29
+s*sEbs*aons*+KbqgSPFs%iYhs%*/Uq*1c at q#K57q0qWns$?Z_s'l"Ks+136s.fV#rP&<Ls2tAg
+s4./'s4mY1s4dS,s4IA!s2b5Ts0r$4s/H$ms-s%Ss,d8:s*aols)\3Ys*r4 at q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HM5pLSl)OR!JZA1=rN#tAs31Geq6'\9ql9[ls/#[ks/5mqs/H$us/Z1$
+s/l=(s02O/s0MU1s0hU0s5Nk7rT+"?s5s at Es60LFs5X.;s4mY-s4%(ks2"`Fs0;U's.fUbs-*J<
+s*sipiI:f)s%NG^s$6I1rrABLq#K57q0q?fs$-NLs$cr[s&&f)s)J'is,R,Hs.o\%s1SHIs1nZP
+s2tAfs4./'s5<q<s60LLs6p!ZrUp3_s76-Ys6]jMs5a4;s5!_/s4IA&rRCeprR1_ms3CYgs2tA_
+s2X`Nq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>M*Ck<ks"olJNiB`q0r-'rI4W-cQ;C9s$H`Vs%WMks&]5-s(hXWs*t'*
+s-!DMs.KCls0_[:s8N&ss7H?Ws5F"1s3^kls3(Gbs2b5\pW!6 at s186Fs2=fSs%*1(s1/0;s0Vg3
+s02O,s/W&tq#K6Nq8W$+s/Z10s2=r[s3L_os4@;*s5O(@s6'FHs5s at 9s3:SXs0;U%s-s%Hs+:9$
+s*juos)\3Xs(VLDs'Pe1s&T.ss%NG_s$ZlSrBgNLaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>M*Ck<ks"olJNiB`q0r-'rI4W-iu\4Bruh=cs!.Ifs!Rgqs"+1&s'u(C
+s)A!]s*ap"s,$c;s-NbWs.o[os/uC-s0r$?pV-[?s1&*9s0Ma5s0Ma%s-`nGs0D[$s.97Ws,[29
+s*sEbs*aons*+KbqgSPFs%iYhs%*/Uq*1c at q#K57q0qWns$?Z_s'l"Ks+136s.fV#rP&<Ls2tAg
+s4./'s4mY1s4dS,s4IA!s2b5Ts0r$4s/H$ms-s%Ss,d8:s*aols)\3Ys*r4 at q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HM5pLSl)OR!JZA1=rN#tAs31Geq6'\9ql9[ls/#[ks/5mqs/H$us/Z1$
+s/l=(s02O/s0MU1s0hU0s5Nk7rT+"?s5s at Es60LFs5X.;s4mY-s4%(ks2"`Fs0;U's.fUbs-*J<
+s*sipiI:f)s%NG^s$6I1rrABLq#K57q0q?fs$-NLs$cr[s&&f)s)J'is,R,Hs.o\%s1SHIs1nZP
+s2tAfs4./'s5<q<s60LLs6p!ZrUp3_s76-Ys6]jMs5a4;s5!_/s4IA&rRCeprR1_ms3CYgs2tA_
+s2X`Nq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Kg,G8m6:>pJNiB`q0r-'rI4W-b9$+9s$QfYs%iYos&oA1s)%d\s+:90
+s-E\Ts.fUos0_U8s1SI)s6K^Ds4I at ss3:Ses2tA_s2XZLs2=fSs%*1)s186 at s0r$:s0Vg3s/W9%
+qZ,0Hq8W$+s/Z10s2"`Ss2k;ds3gr"s5O(@s6BXPs6TdDs3^k`s0_m-s.B=Os+:9%s*jums)J'S
+s(;:>s'5S+s&8qms%35YrB^HKrBJDQq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Kg,G8m6:>pJNiB`q0r-'rI4W-iu\4Bruh=cs!.Ohs!@[ms!n%"s"FC,
+s"saqs*+Kls+LE1s-!DMs.KChs/Q+%s0D[6s1A$>s1JBAs0Vg2s0D[.s.TIXs+p]&s)J(-s-*J@
+s+UK&kC3GVqgSPFs&8qos%35Ws$6HGXZlU^eNWeXlTY>7s&/l+s)A!ds,[2Rs0VgAs2"`Us3CYo
+s4RG0s5F"8s5!_0s4[M&s2tAXs1/08s/Z0qs.01Ws-!D=s*juns)e9Zs*r4 at q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HKrY(OmAg!%JZA1=rN#tAs31Geq6'\9ql9[ls/#[ks/5mqs/H$us/Z1$
+s/l=)s0;U0s0Vg6qmQ1,rODmeqr at _;s5j:Cs6'FGs5j:=s4mY-s474ts2Y/Ps0Vg.s/#afs-`nL
+s+^Q&s*rRJs$6I1rrATRqZ,/1q0q?fs$-NLs$QfTs%NGus)%das,-i at s.]P!s1\NKs2+fUs3:Sl
+s4IA-s5X.Bs6K^Rs763`rV6Ees7QE`s763Xs69RFs5<q5s4dS+s47/!rRCkrs3gqos3CYgs2t5[
+rQ"`Rq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Kg,G8m6:>pJNiB`q0r-'rI4W-b9$+9s$QfYs%iYos&oA1s)%d\s+:90
+s-E\Ts.fUos0_U8s1SI)s6K^Ds4I at ss3:Ses2tA_s2XZLs2=fSs%*1)s186 at s0r$:s0Vg3s/W9%
+qZ,0Hq8W$+s/Z10s2"`Ss2k;ds3gr"s5O(@s6BXPs6TdDs3^k`s0_m-s.B=Os+:9%s*jums)J'S
+s(;:>s'5S+s&8qms%35YrB^HKrBJDQq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Kg,G8m6:>pJNiB`q0r-'rI4W-iu\4Bruh=cs!.Ohs!@[ms!n%"s"FC,
+s"saqs*+Kls+LE1s-!DMs.KChs/Q+%s0D[6s1A$>s1JBAs0Vg2s0D[.s.TIXs+p]&s)J(-s-*J@
+s+UK&kC3GVqgSPFs&8qos%35Ws$6HGXZlU^eNWeXlTY>7s&/l+s)A!ds,[2Rs0VgAs2"`Us3CYo
+s4RG0s5F"8s5!_0s4[M&s2tAXs1/08s/Z0qs.01Ws-!D=s*juns)e9Zs*r4 at q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HKrY(OmAg!%JZA1=rN#tAs31Geq6'\9ql9[ls/#[ks/5mqs/H$us/Z1$
+s/l=)s0;U0s0Vg6qmQ1,rODmeqr at _;s5j:Cs6'FGs5j:=s4mY-s474ts2Y/Ps0Vg.s/#afs-`nL
+s+^Q&s*rRJs$6I1rrATRqZ,/1q0q?fs$-NLs$QfTs%NGus)%das,-i at s.]P!s1\NKs2+fUs3:Sl
+s4IA-s5X.Bs6K^Rs763`rV6Ees7QE`s763Xs69RFs5<q5s4dS+s47/!rRCkrs3gqos3CYgs2t5[
+rQ"`Rq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNj#4nNQbtJNiB`q0r-'rI4W-`uah9s$QfZs&&ess',M5s)7p`s+UK6
+s-`n[s/,gus0_U8s1SH=s/Q*ls4@:qs31Mds2tA_s2XBDs%*1*s1\NGs1A<As1&*7s/WQ-q#Ja@
+q8W$+s/Z1/s1JBIs2=rZs3:Sss5X.Bs6KXPs5j:2s2P)Ls/uBrs,m>8s+12ts)n?Zs(VLCs'G_.
+s&K(qs%EA]s$HZK_g_F]JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNj#4nNQbtJNiB`q0r-'rI4W-iu\4Bruh=cs!.Igs![mss"47(s"aU3
+s#C$?s*t'&s,I&Cs-s%_s/>t!s/uC-s0r$?pV-[?s1&*9s0;U,s/Z0js,m>7s*4Q[s(_RHs(24a
+s*rpTrrE(#s&&efs$HZLrBI\Rq#J`)q0qWns$?Z_s'l"Es*=X(s.KCus2+fSs31Mks4IA.s5a4B
+s5X.9s5!_1s474ps2=rLs0Vg.s/,ggs-`nNs,-i+s+LE)s+13"bC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZAYKnZ)E)JZA1=rN#tAs31Geq6'\9ql9[ls/#[ks/5mqs/Q+"s/c7&
+s/uC*s0;U1s0VU1o=+V,s5O(=s5a4As5s at Es60LEs53k1s4@;#s3CY^s1/06s/H$ls-s%Rs,I&3
+s*XWjdsh;sV*=\TcT_/Rj$*K-s$?ZPs$cr[s&oA9s*=X!s-*JUs02O:s2"`Rs2k;fs4./(s5<q>
+s6BXPs763_s7uWjs8)cis7QE`s6p!Qs5s@?s5*e2s4RG(rRUqts4%(ss3Ueks31McqoSfXq8W71
+J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNj#4nNQbtJNiB`q0r-'rI4W-`uah9s$QfZs&&ess',M5s)7p`s+UK6
+s-`n[s/,gus0_U8s1SH=s/Q*ls4@:qs31Mds2tA_s2XBDs%*1*s1\NGs1A<As1&*7s/WQ-q#Ja@
+q8W$+s/Z1/s1JBIs2=rZs3:Sss5X.Bs6KXPs5j:2s2P)Ls/uBrs,m>8s+12ts)n?Zs(VLCs'G_.
+s&K(qs%EA]s$HZK_g_F]JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNj#4nNQbtJNiB`q0r-'rI4W-iu\4Bruh=cs!.Igs![mss"47(s"aU3
+s#C$?s*t'&s,I&Cs-s%_s/>t!s/uC-s0r$?pV-[?s1&*9s0;U,s/Z0js,m>7s*4Q[s(_RHs(24a
+s*rpTrrE(#s&&efs$HZLrBI\Rq#J`)q0qWns$?Z_s'l"Es*=X(s.KCus2+fSs31Mks4IA.s5a4B
+s5X.9s5!_1s474ps2=rLs0Vg.s/,ggs-`nNs,-i+s+LE)s+13"bC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZAYKnZ)E)JZA1=rN#tAs31Geq6'\9ql9[ls/#[ks/5mqs/Q+"s/c7&
+s/uC*s0;U1s0VU1o=+V,s5O(=s5a4As5s at Es60LEs53k1s4@;#s3CY^s1/06s/H$ls-s%Rs,I&3
+s*XWjdsh;sV*=\TcT_/Rj$*K-s$?ZPs$cr[s&oA9s*=X!s-*JUs02O:s2"`Rs2k;fs4./(s5<q>
+s6BXPs763_s7uWjs8)cis7QE`s6p!Qs5s@?s5*e2s4RG(rRUqts4%(ss3Ueks31McqoSfXq8W71
+J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNj#rr;cLSq0mlYlTY,nq*+b+q`_n=pHJUEs%EAis&f;,s(24Ms*Xj&
+s-!DPs.fUos02O4pV-[@s0D[(s.B=Ws,?p"s2tA_s2XBDs%*1-s2"`Ns1\NHs1/08s/Wi5q#JI8
+q8W$+s/Z1*s0r$?s2"`Ts3Uf%s6'FGs6T^Rs5s at 5s2tATs0;U#s-3P>s+:8rs)\3Us(;:>s',M(
+s&/kks%'bNq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNj#rr;cLSq0mlYlTY,nq*+b+q`a$]ru_7`s!%Ifs!@[ls![mts"47)
+s"aU3s#L*As$-NMs,R,Fs.01cs/Z1's0;U1s0r$?pV-[?s1&*9s0;U*s/5mbs,R,2s)n?Vs(MFE
+s'u(;s'X`5rrE(%s&&egs$QfPs$6NI]fu5la$0<JlTY>8s&/l(s(VLUs,I&Os0VgDs2P)as475+
+s5X.Ds6K^Ls5O(:s53k0s3Uecs1\NAs02O%s.TI^s-3PCs+gW.s+C?&s*r4 at q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HJZA[Kr;cMjq8Rucn#H>es3(GdrQb5ArPn`7s.o[krMKUms/>sts/Z1$
+s/l=(s02O/s0Ma5s0h1$qmc[es5j:CrTF4As5*e.s4%(ss31MZs0r$1s/#ads-NbJs+p]+s*OWj
+s*`@FrrB/bq#JH!q0q?fs$-NLs$QfSs%35ms(D at Ss+C?6s.97ns1A<Is2Y/`s3q##s5*e9s69RN
+s7--^rVlcos82iks7ZKbs7$'Ss6'FAs53k4s4[M*rR_#!s4%(ss3Ueks31Mdqo\r\s2b#Uq>Z#c
+lc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNj#rr;cLSq0mlYlTY,nq*+b+q`_n=pHJUEs%EAis&f;,s(24Ms*Xj&
+s-!DPs.fUos02O4pV-[@s0D[(s.B=Ws,?p"s2tA_s2XBDs%*1-s2"`Ns1\NHs1/08s/Wi5q#JI8
+q8W$+s/Z1*s0r$?s2"`Ts3Uf%s6'FGs6T^Rs5s at 5s2tATs0;U#s-3P>s+:8rs)\3Us(;:>s',M(
+s&/kks%'bNq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNj#rr;cLSq0mlYlTY,nq*+b+q`a$]ru_7`s!%Ifs!@[ls![mts"47)
+s"aU3s#L*As$-NMs,R,Fs.01cs/Z1's0;U1s0r$?pV-[?s1&*9s0;U*s/5mbs,R,2s)n?Vs(MFE
+s'u(;s'X`5rrE(%s&&egs$QfPs$6NI]fu5la$0<JlTY>8s&/l(s(VLUs,I&Os0VgDs2P)as475+
+s5X.Ds6K^Ls5O(:s53k0s3Uecs1\NAs02O%s.TI^s-3PCs+gW.s+C?&s*r4 at q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HJZA[Kr;cMjq8Rucn#H>es3(GdrQb5ArPn`7s.o[krMKUms/>sts/Z1$
+s/l=(s02O/s0Ma5s0h1$qmc[es5j:CrTF4As5*e.s4%(ss31MZs0r$1s/#ads-NbJs+p]+s*OWj
+s*`@FrrB/bq#JH!q0q?fs$-NLs$QfSs%35ms(D at Ss+C?6s.97ns1A<Is2Y/`s3q##s5*e9s69RN
+s7--^rVlcos82iks7ZKbs7$'Ss6'FAs53k4s4[M*rR_#!s4%(ss3Ueks31Mdqo\r\s2b#Uq>Z#c
+lc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNilnr;cXWq0mlYlTY,nq*+b+q`_\7rBC6Ks%EAis'#G0s(D at Qs*k!*
+s-<VVs/,gus0Ma9pV-[@s0D['s.97Us,6i5s2tA_s2XBDs%*10s2G#Us2+fOs1/08s/X&;qZ+C2
+q8Vs)s/l=,s0r$Cs2P)fs5<qBs6K^PrUKpNs4I at ps1nZAs/>sas,6o/s*4Q_s(VLDs'G_.Z[V`M
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNilnr;cXWq0mlYlTY,nq*+b+q`a$]ru_7`s!%Ifs!@[ls!dsus"==*
+s"j[5s#L*As$-NNs$m#\s%`Tks/l=+s0Ma5s0r$?pV-[?s1&*9s0)I's/#a^s,6o,s)S-Ps(;:A
+s'bq7s'G_7s(CA at rrE(Js&/khs$QfPs$6NI_`mqt^HVIBm6:P7s$H`_s',M7s)S-rs.TJ#s2=rX
+s3L_ss5F"@s6fpVs6fpNs5X.<s4dS%s2k;Vs1/08s/Z0ps.'+Ss,R,8s+UK*s+13"bC99eJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZAOGr;cYnq8Rucn#H>es3(GdrQb5ArPn`7s.o[krMKUms/>sts/Z1%
+s/uC*s02O/s0Vg6jgY2urOMs>rTF4 at s5*e-s3gqos2tAVs0_m,s.TI\s-*JBs+^Q's*FWjs*Xip
+dsh;ss*h@>qZ+Apq0q?fs$-NLrBpTUs&]54s)e9ls,R,Ls/c72s2"`Xs3L_rs4dS4s5rkNs8;om
+s7cQds7--Us60LCs5<q6s4dS,rRh/%s475"s3gqos3CSeqof#^s2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNilnr;cXWq0mlYlTY,nq*+b+q`_\7rBC6Ks%EAis'#G0s(D at Qs*k!*
+s-<VVs/,gus0Ma9pV-[@s0D['s.97Us,6i5s2tA_s2XBDs%*10s2G#Us2+fOs1/08s/X&;qZ+C2
+q8Vs)s/l=,s0r$Cs2P)fs5<qBs6K^PrUKpNs4I at ps1nZAs/>sas,6o/s*4Q_s(VLDs'G_.Z[V`M
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNilnr;cXWq0mlYlTY,nq*+b+q`a$]ru_7`s!%Ifs!@[ls!dsus"==*
+s"j[5s#L*As$-NNs$m#\s%`Tks/l=+s0Ma5s0r$?pV-[?s1&*9s0)I's/#a^s,6o,s)S-Ps(;:A
+s'bq7s'G_7s(CA at rrE(Js&/khs$QfPs$6NI_`mqt^HVIBm6:P7s$H`_s',M7s)S-rs.TJ#s2=rX
+s3L_ss5F"@s6fpVs6fpNs5X.<s4dS%s2k;Vs1/08s/Z0ps.'+Ss,R,8s+UK*s+13"bC99eJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZAOGr;cYnq8Rucn#H>es3(GdrQb5ArPn`7s.o[krMKUms/>sts/Z1%
+s/uC*s02O/s0Vg6jgY2urOMs>rTF4 at s5*e-s3gqos2tAVs0_m,s.TI\s-*JBs+^Q's*FWjs*Xip
+dsh;ss*h@>qZ+Apq0q?fs$-NLrBpTUs&]54s)e9ls,R,Ls/c72s2"`Xs3L_rs4dS4s5rkNs8;om
+s7cQds7--Us60LCs5<q6s4dS,rRh/%s475"s3gqos3CSeqof#^s2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNi`jqZ-X[q0mlYlTY,nq*+b+q`_P3s$QfZs&/l#s'bqAs)n?ls,?uE
+s.KChs/l=-s1.m<s1SH<s/5mfs-3P at qhb?/s2XBDs%*%,s2G#Rs1/08s/X>Cq#It*q8Vs)s/c7'
+s0D[;s2tAns5a4Js6p!WrUU!Ps4RFus2=rHs/Z0gs,6o/s*4Q]s(8B^q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNi`jqZ-X[q0mlYlTY,nq*+b+q`a$]ru_7`s!%Igs!@[ms!dt!s"==+
+s"j[5s#U0Cs$6TOs%!)^s%iYns&T0+s0_m9s1/0ApV-[?s0r$6s/uC$s.fUZs,$c(s)A!Ls'u(<
+s'Pe3s'5S3s(24Fs)7(LrrDqFs$ZlQs$6NIb<G_%\N]h<m6:P7s$H`[s&]50s).jks.B>"s2G#Z
+s3Uf#s5j:Hs763^s7?9Ys69REs5*e+s31M\s1A<<s/l<ss.01Us,d8;s+UK*s+13"bC99eJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZACCqZ-Yrq8Rucn#H>es3(Gds3CYjq60b:ql9[ls/#[ks/5mqs/Q+"
+s/l=(s0)I-s0Ma4s0h$urODg:qmugfs5!_,s3gqms2b5Rs0Ma(s.97Ws,m>?s+UK%s*FWjs*Xip
+dsh;sqgQ at Fq#Irhq0q?fs$-NLrBgNSs&T/2s)J'fs,6oFs/Q+0s2"`Xs3gr#li-q^s8)cjs7ZK`
+s6]jNs5a4=s53k3s4[G)s4IA&s4%(ss3UekrQY5`s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNi`jqZ-X[q0mlYlTY,nq*+b+q`_P3s$QfZs&/l#s'bqAs)n?ls,?uE
+s.KChs/l=-s1.m<s1SH<s/5mfs-3P at qhb?/s2XBDs%*%,s2G#Rs1/08s/X>Cq#It*q8Vs)s/c7'
+s0D[;s2tAns5a4Js6p!WrUU!Ps4RFus2=rHs/Z0gs,6o/s*4Q]s(8B^q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNi`jqZ-X[q0mlYlTY,nq*+b+q`a$]ru_7`s!%Igs!@[ms!dt!s"==+
+s"j[5s#U0Cs$6TOs%!)^s%iYns&T0+s0_m9s1/0ApV-[?s0r$6s/uC$s.fUZs,$c(s)A!Ls'u(<
+s'Pe3s'5S3s(24Fs)7(LrrDqFs$ZlQs$6NIb<G_%\N]h<m6:P7s$H`[s&]50s).jks.B>"s2G#Z
+s3Uf#s5j:Hs763^s7?9Ys69REs5*e+s31M\s1A<<s/l<ss.01Us,d8;s+UK*s+13"bC99eJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZACCqZ-Yrq8Rucn#H>es3(Gds3CYjq60b:ql9[ls/#[ks/5mqs/Q+"
+s/l=(s0)I-s0Ma4s0h$urODg:qmugfs5!_,s3gqms2b5Rs0Ma(s.97Ws,m>?s+UK%s*FWjs*Xip
+dsh;sqgQ at Fq#Irhq0q?fs$-NLrBgNSs&T/2s)J'fs,6oFs/Q+0s2"`Xs3gr#li-q^s8)cjs7ZK`
+s6]jNs5a4=s53k3s4[G)s4IA&s4%(ss3UekrQY5`s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiNdr;c_DJNiB`q0r-'rI4W-\K:bos!@\Cs'#G3s(hXYs+:91s-Wh[
+s/,gus0Ma9pV-[@s0D[&s.'+Qs,$Q-s+gW/lc/rqpW!6Ds0D[*e#N3DZ)[W>nZ)Vjs/uC-s1A<U
+s4[M9s7--[s7?9_s763Ss4mY's2b5Ps/uBms,I&=s+gW*X+'mEJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiNdr;c_DJNiB`q0r-'rI4W-iu\4BruqCds!7Uks![mss"+1's"XO1
+s#9s=s$$HJs$ZlWs%EAfs&8r!s&oA*s1/0As1S0 at s1JB?s0;U*s/5mjs-*J;s*F]^s'l":s'Pe3
+s',M,s'G_8s(D at Js)S-`l[Jj6pO<--rBJapq#IZ`q0q]ps$-NLs%<;js'G_ at s+C?Bs0hsIs2k;h
+s53k at s6p!]rV6Ecs6p!Os5<q/s3CY`s1SH at s/uBus.97Ws,m>=s+^Q,s+13"bC99eJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA1=r;c`7JZA1=rN#tAs31Mgs3LMErPn`7s.o[krMKUms/>sts/Z1%
+s/uC+s0;U1s0Vg7jgY2uqml[:s1&*:s4@;!s3:S`s1A<9s/,ges-E\Is,6o1s*juns*F]ls*Xip
+dsh;spO:@Nq#IZ`q0q?fs$-NKrB^HQs&K)/s).j`s+p]@s/5n+s7?9cs8;-\s8;ons7u]hs7?9Y
+s6BXGs5O(:s5!_0rS%;(s475"s3gqoq9K#bs31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiNdr;c_DJNiB`q0r-'rI4W-\K:bos!@\Cs'#G3s(hXYs+:91s-Wh[
+s/,gus0Ma9pV-[@s0D[&s.'+Qs,$Q-s+gW/lc/rqpW!6Ds0D[*e#N3DZ)[W>nZ)Vjs/uC-s1A<U
+s4[M9s7--[s7?9_s763Ss4mY's2b5Ps/uBms,I&=s+gW*X+'mEJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiNdr;c_DJNiB`q0r-'rI4W-iu\4BruqCds!7Uks![mss"+1's"XO1
+s#9s=s$$HJs$ZlWs%EAfs&8r!s&oA*s1/0As1S0 at s1JB?s0;U*s/5mjs-*J;s*F]^s'l":s'Pe3
+s',M,s'G_8s(D at Js)S-`l[Jj6pO<--rBJapq#IZ`q0q]ps$-NLs%<;js'G_ at s+C?Bs0hsIs2k;h
+s53k at s6p!]rV6Ecs6p!Os5<q/s3CY`s1SH at s/uBus.97Ws,m>=s+^Q,s+13"bC99eJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA1=r;c`7JZA1=rN#tAs31Mgs3LMErPn`7s.o[krMKUms/>sts/Z1%
+s/uC+s0;U1s0Vg7jgY2uqml[:s1&*:s4@;!s3:S`s1A<9s/,ges-E\Is,6o1s*juns*F]ls*Xip
+dsh;spO:@Nq#IZ`q0q?fs$-NKrB^HQs&K)/s).j`s+p]@s/5n+s7?9cs8;-\s8;ons7u]hs7?9Y
+s6BXGs5O(:s5!_0rS%;(s475"s3gqoq9K#bs31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbs*jnHs*fM_lTY,nq*+b+q`_P3ruqCgs!dt"s'u(Fs*4Qrs,R,I
+s.]Oks/l=-s1.m<s1SH<s/5mes-!D<q1np's+gW3n&GAun]'7^qZ*Uqq8Vs)s/c7's0;U8s31N!
+s6K^Xs7ZKes7lWds6BXBs4@:ps1eT>s.fU\s,d8;s+7;#q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbs*jnHs*fM_lTY,nq*+b+q`a$]ru_7as!.Ois!Iaos!n%#s"FC-
+s"sa8s#^6Es$?ZQs%*/`s%r_ps&f;)s',G,s1S0 at s1JB?s02O(s/,ghs-!D8s*+KYs'Yk5s'5S-
+s&oA(s'5S3s(24Fs)7pZs*4Qimsb9:nUB.TqZ*TZq0q]ps$-NLs%35gs',M9s+(-<s0MaGs2tAm
+s5X.Hqu6Wms7QE\s69RCs4RG!s2Y/Ss0r$3s/,ggs-WhLs,6o4s+UK)s*r4 at q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;s2P!;s2KVin#H>es3(Gds3CYjs0)=(rPn`7s.o[krMKUms/>st
+s/Z1%s/uC+s0;U1s0Vg7jgY2upUU=6s0_m4s02OIs2G#Ls0)I!s-s%Qs,[2;s+C?"s*4Qis*Ocn
+s*a-\s*aoomsb9:nUB.TqZ*TZq0q?frBL6Gs$cres'YkBs*4R_s3q#-s6TdUs7ZKil2L_\s8)ck
+s7cQcs6p!Rs5s at As5F"7s4mY/s4[M*s475"s3gqopWif_s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbs*jnHs*fM_lTY,nq*+b+q`_P3ruqCgs!dt"s'u(Fs*4Qrs,R,I
+s.]Oks/l=-s1.m<s1SH<s/5mes-!D<q1np's+gW3n&GAun]'7^qZ*Uqq8Vs)s/c7's0;U8s31N!
+s6K^Xs7ZKes7lWds6BXBs4@:ps1eT>s.fU\s,d8;s+7;#q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbs*jnHs*fM_lTY,nq*+b+q`a$]ru_7as!.Ois!Iaos!n%#s"FC-
+s"sa8s#^6Es$?ZQs%*/`s%r_ps&f;)s',G,s1S0 at s1JB?s02O(s/,ghs-!D8s*+KYs'Yk5s'5S-
+s&oA(s'5S3s(24Fs)7pZs*4Qimsb9:nUB.TqZ*TZq0q]ps$-NLs%35gs',M9s+(-<s0MaGs2tAm
+s5X.Hqu6Wms7QE\s69RCs4RG!s2Y/Ss0r$3s/,ggs-WhLs,6o4s+UK)s*r4 at q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;s2P!;s2KVin#H>es3(Gds3CYjs0)=(rPn`7s.o[krMKUms/>st
+s/Z1%s/uC+s0;U1s0Vg7jgY2upUU=6s0_m4s02OIs2G#Ls0)I!s-s%Qs,[2;s+C?"s*4Qis*Ocn
+s*a-\s*aoomsb9:nUB.TqZ*TZq0q?frBL6Gs$cres'YkBs*4R_s3q#-s6TdUs7ZKil2L_\s8)ck
+s7cQcs6p!Rs5s at As5F"7s4mY/s4[M*s475"s3gqopWif_s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbqgSJDJNiHbq0r-'rI4W-\K:bos!@[os"47*s#0n&s+LE5s-it_
+s/>t"s0Ma9pV-[@s0D[&s.'+Ps+g9%s+gW3s,I&@s-<8ss%)Osjf8+VUT4.0nZ)Vjs/uC+s1/0Q
+s5!_Bs7lWis8)cms7lW]s5a47s3Ue_s0Vg&s-`nMs,6o0X+'mEJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbqgSJDJNiHbq0r-'rI4W-iu\4BruqCes!@[ms!dsus"47)s"aU3
+s#C$?s$-NLs$crYs%NGhs&B##s'#G,rETA.s'GN8s1JB?s0)I&s/#afs,m>6s*"EUs'>Y/s&oA'
+rDrr$s'>Y6s(D at Ks)J']s*+Kgs*XipomZo at m=+.\q#I0Rq0q]ps$-NLs%35gs',M8s*t'9s0;UB
+s3CZ:s8)Qjs82ihs6p!Qs5a47s3gqhs2"`Fs02O$s.KC[s-*JAs+p]0s+C?$bC99eJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;qo8R7JZA7?rN#tAs31Mgs3L_KrNQ=,rPn`7s.o[krMKUms/>st
+s/Z1%s/uC+s0;U1s0Vg7jgY2upUU=5s0Vg3s0)I(s/H%.s/uBss-itNs,I&7s+:8us*+Kgs*F]m
+s*a-\s*aoos*=Wgs)[j^rrDG8jZ`J?UH\L&h`h!'s$Zlas.01gs0VgCs3Uf(s6BXQs7H?fl2L_\
+s8)cks7lWes7$'Ts6'FCs5O(9s5!_1s4[M*s475"s3gqopWif_s2tA_q8W71J]@#qJcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)]0?%>JNiHbqgSJDJNiHbq0r-'rI4W-\K:bos!@[os"47*s#0n&s+LE5s-it_
+s/>t"s0Ma9pV-[@s0D[&s.'+Ps+g9%s+gW3s,I&@s-<8ss%)Osjf8+VUT4.0nZ)Vjs/uC+s1/0Q
+s5!_Bs7lWis8)cms7lW]s5a47s3Ue_s0Vg&s-`nMs,6o0X+'mEJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbqgSJDJNiHbq0r-'rI4W-iu\4BruqCes!@[ms!dsus"47)s"aU3
+s#C$?s$-NLs$crYs%NGhs&B##s'#G,rETA.s'GN8s1JB?s0)I&s/#afs,m>6s*"EUs'>Y/s&oA'
+rDrr$s'>Y6s(D at Ks)J']s*+Kgs*XipomZo at m=+.\q#I0Rq0q]ps$-NLs%35gs',M8s*t'9s0;UB
+s3CZ:s8)Qjs82ihs6p!Qs5a47s3gqhs2"`Fs02O$s.KC[s-*JAs+p]0s+C?$bC99eJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;qo8R7JZA7?rN#tAs31Mgs3L_KrNQ=,rPn`7s.o[krMKUms/>st
+s/Z1%s/uC+s0;U1s0Vg7jgY2upUU=5s0Vg3s0)I(s/H%.s/uBss-itNs,I&7s+:8us*+Kgs*F]m
+s*a-\s*aoos*=Wgs)[j^rrDG8jZ`J?UH\L&h`h!'s$Zlas.01gs0VgCs3Uf(s6BXQs7H?fl2L_\
+s8)cks7lWes7$'Ts6'FCs5O(9s5!_1s4[M*s475"s3gqopWif_s2tA_q8W71J]@#qJcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0r?-r;_C4nNQbtq*+b+q`_P3ruqChs!n%$s"aU4s#g<Is%!*Y
+s.o[os/uC.s1.m<s1SH<s/5mfs-!D;onNL%s,-i9s,d8Es-`nZq8WG*l,N7nq#Hnaq8Vs)s/c7&
+s0)I4s2tAss6fpbs8Doqs8)ccs60L>s3q"es0hs*s-s%Qs,I&2X+'mEJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0r?-r;_C4nNQbtq*+b+q`a$]ru_7as!.Ojs!Rgqs""+%s"OI/
+s#'g:s#g<Gs$H`Ss%35bs&&ers&o;)rETA.q-O*8s1JB?s0)I%s.o[ds,d84s)n?Ss',M*s&T/!
+rDW_ts',M2s(24Fs).jWs)e9as*=Wks*Xipq0r>Dl$i.dq#HmJq0q]ps$-NLs%35gs',M7s*k!g
+s4[M:s6fpZs8)Qjs82ihs6p!Ss5s@;s4%(ls2+fHs0;U&s.TI]s-3PCs,$c2s+C?$bC99eJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8WH7r;_DKor at tks3(Gds3CYjs0)I,rNZ=@ql9[ls/#ams/5mq
+s/H$us/Z1%s/uC+s0;U1s0Vg7jgY,sq76O7s0Vg2s0)I(s/>sls.0+Us,d8=s+^Q)s*Ochs*4Qh
+s*Ocns*a3^s*aoos*=Wgs)e9Zs(V:XrrD;4nNQaKRm-Xsh`h!fs+:92s-itas0;U=s3CZ$s60LM
+s763dl2L_\rVHQis7ZK_s6]jMs5j:@s5<q6s4mY.s4IA&s4%(ss3UMcs31Mcs2b#Uq>Z#clc+MU
+h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0r?-r;_C4nNQbtq*+b+q`_P3ruqChs!n%$s"aU4s#g<Is%!*Y
+s.o[os/uC.s1.m<s1SH<s/5mfs-!D;onNL%s,-i9s,d8Es-`nZq8WG*l,N7nq#Hnaq8Vs)s/c7&
+s0)I4s2tAss6fpbs8Doqs8)ccs60L>s3q"es0hs*s-s%Qs,I&2X+'mEJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0r?-r;_C4nNQbtq*+b+q`a$]ru_7as!.Ojs!Rgqs""+%s"OI/
+s#'g:s#g<Gs$H`Ss%35bs&&ers&o;)rETA.q-O*8s1JB?s0)I%s.o[ds,d84s)n?Ss',M*s&T/!
+rDW_ts',M2s(24Fs).jWs)e9as*=Wks*Xipq0r>Dl$i.dq#HmJq0q]ps$-NLs%35gs',M7s*k!g
+s4[M:s6fpZs8)Qjs82ihs6p!Ss5s@;s4%(ls2+fHs0;U&s.TI]s-3PCs,$c2s+C?$bC99eJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8WH7r;_DKor at tks3(Gds3CYjs0)I,rNZ=@ql9[ls/#ams/5mq
+s/H$us/Z1%s/uC+s0;U1s0Vg7jgY,sq76O7s0Vg2s0)I(s/>sls.0+Us,d8=s+^Q)s*Ochs*4Qh
+s*Ocns*a3^s*aoos*=Wgs)e9Zs(V:XrrD;4nNQaKRm-Xsh`h!fs+:92s-itas0;U=s3CZ$s60LM
+s763dl2L_\rVHQis7ZK_s6]jMs5j:@s5<q6s4mY.s4IA&s4%(ss3UMcs31Mcs2b#Uq>Z#clc+MU
+h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0r3)r;_C4ofi2#q*+b+q`_P3ruqChs!n%$s"aU5s#pBKs%!)`
+s&&frs0)I0s1.m<s1SH=s/>shs-*J>s+g?'s+gW3s,I&=s-!DKs.01bqo8Y,ji78!q#HVYq8Vs)
+rN-%%s0r$Ms5j:Pq>UEks7?9Vs5F"/s2Y/Ls/H$hs-E\Es+BWdq*)oLq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0r3)r;_C4ofi2#q*+b+q`a$]ru_7as!.Ojs![mss"+1&s"XO0
+s#0m;s#g<Gs$H`Ts%35bs&&ers&o;)rETA.pKml*s0hs2s/H$ns.01Ns+12ls(;:7s&]5#s&/ko
+s%r_ps&f;,s'l"@s(hXPs)J'[s*+Kgs*F]ls*X]mrrD/0rBC#WP<Sekm6:P7s$?ZVs,d8Is.KCu
+s2P)ls6'FMs7H?fq>UEks7QE^s6fpNs53k-s31M\s1869s/H$ms-s%Rs)n?Ys(D@=s*r4 at q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8W<3r;_DKq5XCos3(Gds3CYjs0)I,s0;U0rPn`7s.o[ks/,go
+s/>sss/Q+"s/l=(s02O.s0Ma4s0h$uosk%4s0r$8s0;U,s/Z0ts.TI_s-NbKs,R,9s+LE%s*F]f
+s*+Kfs*F]ls*X]lnUCLds*Ocks*4Qds)A!Qs()"UrrD/0rBC#WP<Sekk<AQfs+:90s-E\Zs/uC8
+s31Mus5s at Is763dli-q_s8;oorVHQgs763Xs69RGs5a4=s53k3s4[M*s475"s3gqopWif_s2tA_
+q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0r3)r;_C4ofi2#q*+b+q`_P3ruqChs!n%$s"aU5s#pBKs%!)`
+s&&frs0)I0s1.m<s1SH=s/>shs-*J>s+g?'s+gW3s,I&=s-!DKs.01bqo8Y,ji78!q#HVYq8Vs)
+rN-%%s0r$Ms5j:Pq>UEks7?9Vs5F"/s2Y/Ls/H$hs-E\Es+BWdq*)oLq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0r3)r;_C4ofi2#q*+b+q`a$]ru_7as!.Ojs![mss"+1&s"XO0
+s#0m;s#g<Gs$H`Ts%35bs&&ers&o;)rETA.pKml*s0hs2s/H$ns.01Ns+12ls(;:7s&]5#s&/ko
+s%r_ps&f;,s'l"@s(hXPs)J'[s*+Kgs*F]ls*X]mrrD/0rBC#WP<Sekm6:P7s$?ZVs,d8Is.KCu
+s2P)ls6'FMs7H?fq>UEks7QE^s6fpNs53k-s31M\s1869s/H$ms-s%Rs)n?Ys(D@=s*r4 at q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8W<3r;_DKq5XCos3(Gds3CYjs0)I,s0;U0rPn`7s.o[ks/,go
+s/>sss/Q+"s/l=(s02O.s0Ma4s0h$uosk%4s0r$8s0;U,s/Z0ts.TI_s-NbKs,R,9s+LE%s*F]f
+s*+Kfs*F]ls*X]lnUCLds*Ocks*4Qds)A!Qs()"UrrD/0rBC#WP<Sekk<AQfs+:90s-E\Zs/uC8
+s31Mus5s at Is763dli-q_s8;oorVHQgs763Xs69RGs5a4=s53k3s4[M*s475"s3gqopWif_s2tA_
+q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0r'%qZ)12q`ah)q*+b+q`_P3ruqChs!n%%s"j[6s#pBKs%*/a
+s&/krs&]6.s17s=s1SH>s/H$js-3P at s+pE(s+gW3s,?u;s,d8Hs.'+]qo8Y,kJmB!MlQTmnZ)Vi
+rQ,#^s4IA5s7?'cs82ifs6K^Fs4I at ns1862s.KCYs,I&2nUC'naaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0r'%qZ)12q`ah)q*+b+q`a$]ru_7as!.Ojs![mss"+1's"XO1
+s#0m<s#pBIs$QfUs%<;ds&/kts'#5's'>A*s'>Y.s&T0!s.fUas,R,1s)e9Qs'#G's&B"rs%iYi
+s&/kts',M1s().Cs(hXPs)J']rHS?fs*X]mrrD52qZ)O<q0qcrrI4css+p]9s-E\Ws0D[Ds4IA6
+s6]jXs8)Qjs82iis7?9[s6BXCs4I at rs2=rLs0Ma*s-*J=s*juis(q^Hs'>YSbC99eJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8W0/qZ)2Is/Q$us3(Gds3CYjs0)I,s0;U0rPn`7s/#ams/5mq
+s/Gsss/Z1%s/uC+s0;U1s0Vg7jgXoms1/0=s0Vg1s/uC%s/,gis-s%Ss,m>@s,-i4s*aols)e9a
+s*+Kgs*F]lqg at p_s*aoos*F]js*"E]s(hXJqgSPFkC3:.Ma$rcmlp,fs+:90s-E\Xs/c74s2tAq
+s5a4Fs763dnc&@_s8;cks7cQbs6p!Qs6'FDs5O(9s4mY.s4IA&s4%(ss3UMcs31Mcs2b#Uq>Z#c
+lc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0r'%qZ)12q`ah)q*+b+q`_P3ruqChs!n%%s"j[6s#pBKs%*/a
+s&/krs&]6.s17s=s1SH>s/H$js-3P at s+pE(s+gW3s,?u;s,d8Hs.'+]qo8Y,kJmB!MlQTmnZ)Vi
+rQ,#^s4IA5s7?'cs82ifs6K^Fs4I at ns1862s.KCYs,I&2nUC'naaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0r'%qZ)12q`ah)q*+b+q`a$]ru_7as!.Ojs![mss"+1's"XO1
+s#0m<s#pBIs$QfUs%<;ds&/kts'#5's'>A*s'>Y.s&T0!s.fUas,R,1s)e9Qs'#G's&B"rs%iYi
+s&/kts',M1s().Cs(hXPs)J']rHS?fs*X]mrrD52qZ)O<q0qcrrI4css+p]9s-E\Ws0D[Ds4IA6
+s6]jXs8)Qjs82iis7?9[s6BXCs4I at rs2=rLs0Ma*s-*J=s*juis(q^Hs'>YSbC99eJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8W0/qZ)2Is/Q$us3(Gds3CYjs0)I,s0;U0rPn`7s/#ams/5mq
+s/Gsss/Z1%s/uC+s0;U1s0Vg7jgXoms1/0=s0Vg1s/uC%s/,gis-s%Ss,m>@s,-i4s*aols)e9a
+s*+Kgs*F]lqg at p_s*aoos*F]js*"E]s(hXJqgSPFkC3:.Ma$rcmlp,fs+:90s-E\Xs/c74s2tAq
+s5a4Fs763dnc&@_s8;cks7cQbs6p!Qs6'FDs5O(9s4mY.s4IA&s4%(ss3UMcs31Mcs2b#Uq>Z#c
+lc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0qitr;_C4s$$7-q*+b+q`_P3ruqChs!n%%s"j[7s$$HMs%*/b
+s&/kss&]5's'5<4s1SH>s/Q*ls-<VBs,$c2q1ep)rJLW5s,[2Es-`nVqo8Y,s1RsBq#L*-OfJ5s
+or at o/rQ"r\s4@;4s7?'cs82ifs6K^Fs4[Lrs1JB6s.]O[s,I&2q0r?.m68X at q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0qitr;_C4s$$7-q*+b+q`a$]ru_7as!.Ojs![mss"47(s"aU2
+s#9s=s#pBIs$QfVs%<;ds&/kts'#;)rE]/(s'>Y.s&]5"s&&fds,[23s)n?Ss',M)s&B"prD!;g
+s&B##s'5S4s(24Ds(hXQs)\-^s*4QkqgSPFs*X?cq#L):OZrSiofi,!s+(-*s,R,Es.97qs2=rh
+s5j:Is763cq>UEks7lWes763Vs5X.4s3CY[s0_m+s.'+Os+gW&s)\3Ts'u(5s*r4 at q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8Vs)r;_JMrN#tAs31Mgs3L_Ks02O.s0DUCql9[ms/,gos/>ss
+s/Q+"s/c7&s/uC+s0;U1s0Vg7j1"cms1/0=s0Vg1s/l=$s/,ghs-s%Rs,d8>s,$c2s+UK*s)\3_
+s*"Ees*=WjrHnQlnUCLdrHnQjs*+K_s)%dOqgSPFs%;g1q#L):OZrSiofhPfs+:90s-E\Xs/Z12
+s2b5ls5O(Ds763dq>Tj]qu$Khs7H?\s6K^Ks5s at As53k3s4[M*s475"s3gqopWif_s2tA_q8W71
+J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0qitr;_C4s$$7-q*+b+q`_P3ruqChs!n%%s"j[7s$$HMs%*/b
+s&/kss&]5's'5<4s1SH>s/Q*ls-<VBs,$c2q1ep)rJLW5s,[2Es-`nVqo8Y,s1RsBq#L*-OfJ5s
+or at o/rQ"r\s4@;4s7?'cs82ifs6K^Fs4[Lrs1JB6s.]O[s,I&2q0r?.m68X at q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0qitr;_C4s$$7-q*+b+q`a$]ru_7as!.Ojs![mss"47(s"aU2
+s#9s=s#pBIs$QfVs%<;ds&/kts'#;)rE]/(s'>Y.s&]5"s&&fds,[23s)n?Ss',M)s&B"prD!;g
+s&B##s'5S4s(24Ds(hXQs)\-^s*4QkqgSPFs*X?cq#L):OZrSiofi,!s+(-*s,R,Es.97qs2=rh
+s5j:Is763cq>UEks7lWes763Vs5X.4s3CY[s0_m+s.'+Os+gW&s)\3Ts'u(5s*r4 at q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8Vs)r;_JMrN#tAs31Mgs3L_Ks02O.s0DUCql9[ms/,gos/>ss
+s/Q+"s/c7&s/uC+s0;U1s0Vg7j1"cms1/0=s0Vg1s/l=$s/,ghs-s%Rs,d8>s,$c2s+UK*s)\3_
+s*"Ees*=WjrHnQlnUCLdrHnQjs*+K_s)%dOqgSPFs%;g1q#L):OZrSiofhPfs+:90s-E\Xs/Z12
+s2b5ls5O(Ds763dq>Tj]qu$Khs7H?\s6K^Ks5s at As53k3s4[M*s475"s3gqopWif_s2tA_q8W71
+J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0q]pr;_I6q0r-'rI4W-\K:bos!Iaqs"FC/s#C$Bs$QfXs%`Sm
+s&K)#s&oA,rEfB8s1SH>s/Z0ns-E\Ds,-i4s+gK+s+gW1rJCQ6s-*JJs-NW&s%*1"s1JBJs2G#X
+q#K[!Q)aZ"rMo>+s2k;ms5j:Pq>UEks7?9Vs5a47s31MVs0)Hss-NbFs+C>Bs$m#Us$?ZLm68X@
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0q]pr;_I6q0r-'rI4W-iu\4BruqCes!Iaos!n%#s"OI.s#'g8
+s#^6Es$?ZQs%!)^s%iYns&]5)pKdN"s'>Y.s&]5"s&&ejs%!*As)n?Ss',M)s&8qns%NGcs%`Sl
+s&K)%s'>Y6s(24Es)%dUrH/'as*X]mrrE(Hs*=Wfs)\3hq#KZ.Ps5"mrBB\!s+(-(s,I&Cs.01o
+s24lfs5a4Gs7--bq>UEms8)cis7H?Ys5O(/s2k;Ts0Ma's-s%Ls+UK"s)S-Rs'bq1s*r4 at q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8Vg%r;_VQrN#tAs31Mgs3L_Ks02O.s0DUCql9[ns/5mqs/H$u
+rN#t"s/l=(s02O.s0Ma4s0gamrODm<s0r$8s02O*s/H$ps.B=[s-3PFs,6o6s+gW-s+:9$s+12m
+s*+Kfs*=Qhs*X?cs*ains*Ocjs)S-Ys)7d`rrE'ps%35Ys$-O4q#KZ.Ps5"mrBB+fs+:90s-E\W
+s/Q+0s2Y/js5O(Ds763ds7cQgs8)cml2CYXs7QE^s6TdMs6'FBs53k3s4[M*s475"s3gqopWif_
+s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0q]pr;_I6q0r-'rI4W-\K:bos!Iaqs"FC/s#C$Bs$QfXs%`Sm
+s&K)#s&oA,rEfB8s1SH>s/Z0ns-E\Ds,-i4s+gK+s+gW1rJCQ6s-*JJs-NW&s%*1"s1JBJs2G#X
+q#K[!Q)aZ"rMo>+s2k;ms5j:Pq>UEks7?9Vs5a47s31MVs0)Hss-NbFs+C>Bs$m#Us$?ZLm68X@
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0q]pr;_I6q0r-'rI4W-iu\4BruqCes!Iaos!n%#s"OI.s#'g8
+s#^6Es$?ZQs%!)^s%iYns&]5)pKdN"s'>Y.s&]5"s&&ejs%!*As)n?Ss',M)s&8qns%NGcs%`Sl
+s&K)%s'>Y6s(24Es)%dUrH/'as*X]mrrE(Hs*=Wfs)\3hq#KZ.Ps5"mrBB\!s+(-(s,I&Cs.01o
+s24lfs5a4Gs7--bq>UEms8)cis7H?Ys5O(/s2k;Ts0Ma's-s%Ls+UK"s)S-Rs'bq1s*r4 at q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8Vg%r;_VQrN#tAs31Mgs3L_Ks02O.s0DUCql9[ns/5mqs/H$u
+rN#t"s/l=(s02O.s0Ma4s0gamrODm<s0r$8s02O*s/H$ps.B=[s-3PFs,6o6s+gW-s+:9$s+12m
+s*+Kfs*=Qhs*X?cs*ains*Ocjs)S-Ys)7d`rrE'ps%35Ys$-O4q#KZ.Ps5"mrBB+fs+:90s-E\W
+s/Q+0s2Y/js5O(Ds763ds7cQgs8)cml2CYXs7QE^s6TdMs6'FBs53k3s4[M*s475"s3gqopWif_
+s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0qQlr;_U:q0r-'rI4W-\K:bos!Iaqs"FC/s#L*Cs$QfWs%`Sl
+s&K)#s&oA,q-O*8s1SH>s/Z0ns-NbFs,6o6s+p]1qhG')s+p]6s,[2Bs-*?"s%*0rs0qk*s2Em8
+RB$5*rVu3's2tAns5j:Pq>UEks7?9Ws5j:9s3:SXs02Nus(q^@s%iYcs$m#Us$?ZLm68X at q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0qQlr;_U:q0r-'rI4W-koTXBruqCes!Iaos!n%#s"OI/s#'g9
+s#^6Es$?ZQs%*/_s%iYns&]5)q-EZ"s'>Y.s&f;$s&/kls%!)Ss#U0ns'5S+s&8qmrC[)as%r_o
+s&]5)s'Pe9s(D at Is)7pXs)e9cs*X]mrrE(Hs*=JAs(C5<R6LRurVu24s*t''s,?uAs.'+ms2+fd
+s5X.Es7--bq>UEms8)cjs7QEYs5<q+s2Y/Ps0;U#s-`nIs+LDus)A!Os'Yk/s*r4 at q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8V[!r;_bUrN#tAs31Mgs3L_Ks02O.s0DUCql9[ns/5mqs/H$u
+s/Z1$s/l=(s0)I,s0;U1s0Vg7h7*?ms1/0=s0Vg1s/c7!s.o[es-itQs,d8>s,$c2s+LE(s+('!
+s+:8ps*4Qhs*F]mmsb4`s*Xils*"Eas)S!crrE'us%iLls$,CiR6LRurVtW$s+:90s-<VUs/H%.
+s2P)hs5F"1s5j:Ns7cQgs8)cmli$k_s8)chs763Ws6BXIs5X.:s4mY.s4IA&s4%(ss3U_jqp,5c
+s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0qQlr;_U:q0r-'rI4W-\K:bos!Iaqs"FC/s#L*Cs$QfWs%`Sl
+s&K)#s&oA,q-O*8s1SH>s/Z0ns-NbFs,6o6s+p]1qhG')s+p]6s,[2Bs-*?"s%*0rs0qk*s2Em8
+RB$5*rVu3's2tAns5j:Pq>UEks7?9Ws5j:9s3:SXs02Nus(q^@s%iYcs$m#Us$?ZLm68X at q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0qQlr;_U:q0r-'rI4W-koTXBruqCes!Iaos!n%#s"OI/s#'g9
+s#^6Es$?ZQs%*/_s%iYns&]5)q-EZ"s'>Y.s&f;$s&/kls%!)Ss#U0ns'5S+s&8qmrC[)as%r_o
+s&]5)s'Pe9s(D at Is)7pXs)e9cs*X]mrrE(Hs*=JAs(C5<R6LRurVu24s*t''s,?uAs.'+ms2+fd
+s5X.Es7--bq>UEms8)cjs7QEYs5<q+s2Y/Ps0;U#s-`nIs+LDus)A!Os'Yk/s*r4 at q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8V[!r;_bUrN#tAs31Mgs3L_Ks02O.s0DUCql9[ns/5mqs/H$u
+s/Z1$s/l=(s0)I,s0;U1s0Vg7h7*?ms1/0=s0Vg1s/c7!s.o[es-itQs,d8>s,$c2s+LE(s+('!
+s+:8ps*4Qhs*F]mmsb4`s*Xils*"Eas)S!crrE'us%iLls$,CiR6LRurVtW$s+:90s-<VUs/H%.
+s2P)hs5F"1s5j:Ns7cQgs8)cmli$k_s8)chs763Ws6BXIs5X.:s4mY.s4IA&s4%(ss3U_jqp,5c
+s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0qEhr;_a>q0r-'rI4W-\K:bos!Iaqs"FC.s#C$Bs$H`Vs%WMk
+s&K)#s&oA,pKml*s&oB&s.TI[s,R,<s,-i5s+p]1q1ep)s,$c6s,I&>rPnX5s0r$As1eTMs24lU
+ho;:gs2Om7mDf1Hs3(Gps5s at Qq>UEks7?9Xs5s@;s0DZrs,?u)s(q^?s%`Sas$m#Us$?ZLm68X@
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0qEhr;_a>q0r-'rI4W-m2l!Druh=bs!.Ojs![mss"47*s"j[5
+s#C$@s$-NMs$crYs%NGhs&B##s'4qts'>Y/s&f;$s&/kls%*/Us#^6;s"47$s&/kks%35]s%EAe
+s&&ers&oA-s'bq=s(VLMs)A![s*4QkrI4PBs*"Ebs)A!Ps'l"4hgV1]s*jeDl[Jk`s+^Q4s-!DO
+s/uC<s4%).s69RRs7u]orVccos8)cjs7ZKas6K^As3^kcs1866s.fU]s,?u0s*4Q^s(;:<s&T/M
+bC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8VNrr;`%]q5aP=s31Mgs3L_Ks02O.s0DUCql9[os/>sss/Q+"
+s/c1$s/uC*s02O.s0Ma4s0gamrODm<s0r$8s02O)s/H$ps.B=[s-<VGs,?u7s+^Q,s+1-!s+1-#
+rIb,rs*X-]s*aoos*=Whs*"?iq#LFis%*/Ys$QfPs$,CiT0E:(q>]2us+:90s-3PSs/>s`s/Q+2
+s31Mqs5j:Os7cQgs8)cmli$k_s82ijs7?9Ys6K^Js5X.:s4mY.s4IA&s4%(ss3^elrQkMhs31Mc
+s2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0qEhr;_a>q0r-'rI4W-\K:bos!Iaqs"FC.s#C$Bs$H`Vs%WMk
+s&K)#s&oA,pKml*s&oB&s.TI[s,R,<s,-i5s+p]1q1ep)s,$c6s,I&>rPnX5s0r$As1eTMs24lU
+ho;:gs2Om7mDf1Hs3(Gps5s at Qq>UEks7?9Xs5s@;s0DZrs,?u)s(q^?s%`Sas$m#Us$?ZLm68X@
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0qEhr;_a>q0r-'rI4W-m2l!Druh=bs!.Ojs![mss"47*s"j[5
+s#C$@s$-NMs$crYs%NGhs&B##s'4qts'>Y/s&f;$s&/kls%*/Us#^6;s"47$s&/kks%35]s%EAe
+s&&ers&oA-s'bq=s(VLMs)A![s*4QkrI4PBs*"Ebs)A!Ps'l"4hgV1]s*jeDl[Jk`s+^Q4s-!DO
+s/uC<s4%).s69RRs7u]orVccos8)cjs7ZKas6K^As3^kcs1866s.fU]s,?u0s*4Q^s(;:<s&T/M
+bC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8VNrr;`%]q5aP=s31Mgs3L_Ks02O.s0DUCql9[os/>sss/Q+"
+s/c1$s/uC*s02O.s0Ma4s0gamrODm<s0r$8s02O)s/H$ps.B=[s-<VGs,?u7s+^Q,s+1-!s+1-#
+rIb,rs*X-]s*aoos*=Whs*"?iq#LFis%*/Ys$QfPs$,CiT0E:(q>]2us+:90s-3PSs/>s`s/Q+2
+s31Mqs5j:Os7cQgs8)cmli$k_s82ijs7?9Ys6K^Js5X.:s4mY.s4IA&s4%(ss3^elrQkMhs31Mc
+s2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0q9dr;_mBq0r-'rI4W-\K:bos!@[ps"==-s#C$As$H`Us%WMj
+s&B#"s&oA,pKml*s&oA$s%iZ^s,[2>s,6o7s+p]1onNL%q#LH7s%*0hs/l=-s1/0As1SHIs24fS
+ho;^spW!%/mDf1Is31Mrs6'FSq>UEks6K^Bs3q"ds0)Hls,-i&s(hX>s%WG\s$QfPs$,m7aaX'c
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0q9dr;_mBq0r-'rI4W-m2l3Jq&o\]s!.Ojs![mss"47*s"sa6
+s#L*As$-NMs$crZs%NGhs&B##s'4qts'>Y/s&f;%s&8qns%*/Us#^6;s"==%s![mos%*/[s%35a
+s%iYns&]5)s'G_7s(D at Is)A![q#LGDrrE(Hs*=Wgs*"E^s(_RDs'Pe.s%qU%X$69,q>]c0s*t''
+s,?u at s.'+ls1nZ`s5F"As7$'`qu-Qks7lWfs7H?^s6BX>s3L__s1&*2s.TIYs,6o.s*+K[s(249
+s&K)LbC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8VBnr;`Cgo;ho7s31Mgs3L_Ks02O.s0DUCql9Uns/H$us/Z1$
+s/l=(s0)I,s0;U0s0Ma4s0gamrODm<s0r$8s02O*s/H$ps.B=[s-<VGs,?u7s+^Q,s+13"s+('!
+rIY'%s+LE+kC3GZq#LGDrrE(*s&oA#s%WMcs%!)Xs$?TJhgVUipO;r<gOB0Ss&]53s)\3ns-Whf
+s1JBUs4IA5s763bs7u]ks82-\s8N&qs7cQbs6p!Rs6'FBs53k3s4[M*s475"rR1YlrQtSis31Mc
+s2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0q9dr;_mBq0r-'rI4W-\K:bos!@[ps"==-s#C$As$H`Us%WMj
+s&B#"s&oA,pKml*s&oA$s%iZ^s,[2>s,6o7s+p]1onNL%q#LH7s%*0hs/l=-s1/0As1SHIs24fS
+ho;^spW!%/mDf1Is31Mrs6'FSq>UEks6K^Bs3q"ds0)Hls,-i&s(hX>s%WG\s$QfPs$,m7aaX'c
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0q9dr;_mBq0r-'rI4W-m2l3Jq&o\]s!.Ojs![mss"47*s"sa6
+s#L*As$-NMs$crZs%NGhs&B##s'4qts'>Y/s&f;%s&8qns%*/Us#^6;s"==%s![mos%*/[s%35a
+s%iYns&]5)s'G_7s(D at Is)A![q#LGDrrE(Hs*=Wgs*"E^s(_RDs'Pe.s%qU%X$69,q>]c0s*t''
+s,?u at s.'+ls1nZ`s5F"As7$'`qu-Qks7lWfs7H?^s6BX>s3L__s1&*2s.TIYs,6o.s*+K[s(249
+s&K)LbC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8VBnr;`Cgo;ho7s31Mgs3L_Ks02O.s0DUCql9Uns/H$us/Z1$
+s/l=(s0)I,s0;U0s0Ma4s0gamrODm<s0r$8s02O*s/H$ps.B=[s-<VGs,?u7s+^Q,s+13"s+('!
+rIY'%s+LE+kC3GZq#LGDrrE(*s&oA#s%WMcs%!)Xs$?TJhgVUipO;r<gOB0Ss&]53s)\3ns-Whf
+s1JBUs4IA5s763bs7u]ks82-\s8N&qs7cQbs6p!Rs6'FBs53k3s4[M*s475"rR1YlrQtSis31Mc
+s2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0q-`qZ)mFq0r-'rI4W-\K:bos!@[os"==,s#9s at s$?ZTs%NGi
+s&8qus&oA,pKml*s&oA$s%r_hs%*0Ls,6o7s+p]1q1ebHs+^Q/qo8Y,s.o[os0)I0s0r$=s1JBJ
+s24fRs2Em8\#So:q>]p's2Y/]s3:Sts60LUs8N&qs7lWfs7--Ps4mY$s2"`:s-WhAs*=W[s',Lr
+s$ZfQs$?ZLm68X at q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0q-`qZ)mFq0r-'rI4W-m2l3Jq]Pn^s!%Igs!Iaos!n%#s"XO1
+s#9s<s#pBHs$QfUs%35as%r_ps&f;*s'>)"s'>Y/s&f;%s&8qns%35Ws#^6;s"==%s![mns!.Of
+s%!)]s%WMjs&K)$s'5S3s()!,s*+KjqgSPFs*Xcjs*4Qbs(q^Is().8s&B"ls$Yan[m'80q>]c0
+s*t''s,?u at s.01ds1/0Ss5*e>s7$'`qu-Qks7ZKbs763[s69R<s3CY\s0hs.s.B=Us,$c*s)n?X
+s'u(5s&8rJbC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8V6jqZ*CkqlBOos3(Gds3CYjs0)I,s0;U0rPn`7s/>ssrMomu
+s/c1%s0)I,s0;U0s0Ma4s0gamrODm<s0r$8s02O*s/H$ps.KC]s-<VHs,?u7s+gW-s+13"rIFp!
+rIY'%s+LE+rJ'ciqZ-YFs*acnrrE(/s'G_,s&&eks%NGas$QfPrBUBIhgW$umsb*4iI:ems$ZlX
+s%iZ!s(D at Ss+^QCs0)I;s31Mqs5j:Ps7uWis82-\s8N&qs7cQbs6p!Rs6'FBs53k3s4[M*s475"
+rR:_ns3^kns3CYgs2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0q-`qZ)mFq0r-'rI4W-\K:bos!@[os"==,s#9s at s$?ZTs%NGi
+s&8qus&oA,pKml*s&oA$s%r_hs%*0Ls,6o7s+p]1q1ebHs+^Q/qo8Y,s.o[os0)I0s0r$=s1JBJ
+s24fRs2Em8\#So:q>]p's2Y/]s3:Sts60LUs8N&qs7lWfs7--Ps4mY$s2"`:s-WhAs*=W[s',Lr
+s$ZfQs$?ZLm68X at q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0q-`qZ)mFq0r-'rI4W-m2l3Jq]Pn^s!%Igs!Iaos!n%#s"XO1
+s#9s<s#pBHs$QfUs%35as%r_ps&f;*s'>)"s'>Y/s&f;%s&8qns%35Ws#^6;s"==%s![mns!.Of
+s%!)]s%WMjs&K)$s'5S3s()!,s*+KjqgSPFs*Xcjs*4Qbs(q^Is().8s&B"ls$Yan[m'80q>]c0
+s*t''s,?u at s.01ds1/0Ss5*e>s7$'`qu-Qks7ZKbs763[s69R<s3CY\s0hs.s.B=Us,$c*s)n?X
+s'u(5s&8rJbC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8V6jqZ*CkqlBOos3(Gds3CYjs0)I,s0;U0rPn`7s/>ssrMomu
+s/c1%s0)I,s0;U0s0Ma4s0gamrODm<s0r$8s02O*s/H$ps.KC]s-<VHs,?u7s+gW-s+13"rIFp!
+rIY'%s+LE+rJ'ciqZ-YFs*acnrrE(/s'G_,s&&eks%NGas$QfPrBUBIhgW$umsb*4iI:ems$ZlX
+s%iZ!s(D at Ss+^QCs0)I;s31Mqs5j:Ps7uWis82-\s8N&qs7cQbs6p!Rs6'FBs53k3s4[M*s475"
+rR:_ns3^kns3CYgs2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0ppZr;`6Lq0r-'rI4W-\K:bos!@[os"47+s#9s?s$?ZSs%NGh
+s&8qus&oA,oj7Z%s&T.ts%`Ses%!)Ws,-i4s+gCMpP/Rbs%*0^s/#ars02O0s0_m<s1nTMs24lU
+s2"`Jh8[@4l,NQ!n](ULs2b5_s3CZ!s6'FQs8)chs7?9\s6TdGs4I at rs1\N4s-3P:s*"EWs'#Fp
+rBgHKs$,m7aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0ppZr;`6Lq0r-'rI4W-m2l3Jruh1^s!.Ohs!Iaos!n%#s"XO1
+s#9s=s#pBHs$H`Ss%*/`s%r_os&]5)rE\r"s'>Y/s&f;%s&B"ps%35Ws#g<=s"FC&s![mns!%Ic
+s!%Ifs%EAfs&/Xms(24Es)7pZs*FQkrrE(Hs*Ocls*=Wds)%dNs(MF at s&oA!s%NG_s$PUk_`m=6
+q>]c0s*t''s*+Krs-!DZs186Us53k at s7$'`qu-Qks7ZK`s7--Ys60L:s3:SYs0Vg*s.01Qs+gW&
+s)e9Us'l"3s&&fHbC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8V$dr;`aqrN#[orQP;es3L_Ks02O.s0DUCql9[ps/Gsss/Z1$
+s/uC*s02O.s0DU0s0Vg7h7*?ms1/0=s0Vg2s/l=#s/#ags-s%Ss,m>@s,-i3s+LE'rI=itrIP!#
+s+C?)s+U9'qgS>@nUCK<s(MFAs'5S)s&8qps%EA\s$Q`Os$-HGh1!7*l$iI.kC3Fqs$6TNs$m#[
+s%WMls'PeAs*4R#s.01ps2"`\s4IA6s7H?fqto^Xs8N&qs7cQbs6p!Rs6'FBs53k3s4[M*s47(s
+rR:eps3Ueks31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0ppZr;`6Lq0r-'rI4W-\K:bos!@[os"47+s#9s?s$?ZSs%NGh
+s&8qus&oA,oj7Z%s&T.ts%`Ses%!)Ws,-i4s+gCMpP/Rbs%*0^s/#ars02O0s0_m<s1nTMs24lU
+s2"`Jh8[@4l,NQ!n](ULs2b5_s3CZ!s6'FQs8)chs7?9\s6TdGs4I at rs1\N4s-3P:s*"EWs'#Fp
+rBgHKs$,m7aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0ppZr;`6Lq0r-'rI4W-m2l3Jruh1^s!.Ohs!Iaos!n%#s"XO1
+s#9s=s#pBHs$H`Ss%*/`s%r_os&]5)rE\r"s'>Y/s&f;%s&B"ps%35Ws#g<=s"FC&s![mns!%Ic
+s!%Ifs%EAfs&/Xms(24Es)7pZs*FQkrrE(Hs*Ocls*=Wds)%dNs(MF at s&oA!s%NG_s$PUk_`m=6
+q>]c0s*t''s*+Krs-!DZs186Us53k at s7$'`qu-Qks7ZK`s7--Ys60L:s3:SYs0Vg*s.01Qs+gW&
+s)e9Us'l"3s&&fHbC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8V$dr;`aqrN#[orQP;es3L_Ks02O.s0DUCql9[ps/Gsss/Z1$
+s/uC*s02O.s0DU0s0Vg7h7*?ms1/0=s0Vg2s/l=#s/#ags-s%Ss,m>@s,-i3s+LE'rI=itrIP!#
+s+C?)s+U9'qgS>@nUCK<s(MFAs'5S)s&8qps%EA\s$Q`Os$-HGh1!7*l$iI.kC3Fqs$6TNs$m#[
+s%WMls'PeAs*4R#s.01ps2"`\s4IA6s7H?fqto^Xs8N&qs7cQbs6p!Rs6'FBs53k3s4[M*s47(s
+rR:eps3Ueks31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0pdVr;`BPq0r-'rI4W-\K:bos!@[ns"47*s#0m>s$6TRs%EAg
+s&/kss&f;*oj7Z(s&oA%s&&ejs%3"dmtU_Zs%*0Zs.TIjs/c7(s0Ma9s1eTLs2"`Ps2G#Ss1JB@
+s0Ma0ho=!BiPt]nn](OKs2k;as4IA3s6fp\s763Xs6K^Js5*e)s2k;Ps/,gYs+12ks(D at 6s%*/U
+rBU<Gm68X at q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0pdVr;`BPq0r-'rI4W-m2l3Jruh7`s!%Ifs!@[ms![mss"47)
+s"j[5s#L*As$-NMs$crYs%EAfs&8r!s'#G-rE]#$s'>Y/s&f;%s&B"qs%<;Zs$$HAs"XO(s![mn
+s!%Icruq1<s&8r!s',M0s'l"?s(q^Ts*"9grrE(IrI"Wls*"E^s)7pSs(;:;s&]5!s%`Sds$m#S
+s$,CicT^<:q>]o4s&]5*s'l"Fs*=X!s-<V^s1A<Ws5<qBs7--bqu-Qks7ZK`s7$'Ws5s at 7s31MW
+s0D[&s-s%Ms+UK#s)\3Ts'bq1s%r`GbC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8Um`r;`murN#t"q5sV?s3CYjs0)I,s0;U0rPn`7s/>ssrMomu
+s/c7's0)I,s0;U0s0Ma4s0_m8h7*9ks0r$8s0;U+s/Q*rs.KC]s-E\Is,I&9s+gW-s+1,urIFit
+s+:9(rIt3)q#KZ.rrE(9s(D@>s'#G(s&8qls%!)Xs$ZlRs$-6AhgWm8iI:V&msb:$s$6TMs$H`Q
+s$crWs%EAes&/l!s(24Ls*Xj)s.KD!s2=rbs4dS:s7QEhqu#dYs8N&qs7cQbs6p!Rs6'FBs5<q5
+s4dS+s47(trRCkqs3Ueks31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0pdVr;`BPq0r-'rI4W-\K:bos!@[ns"47*s#0m>s$6TRs%EAg
+s&/kss&f;*oj7Z(s&oA%s&&ejs%3"dmtU_Zs%*0Zs.TIjs/c7(s0Ma9s1eTLs2"`Ps2G#Ss1JB@
+s0Ma0ho=!BiPt]nn](OKs2k;as4IA3s6fp\s763Xs6K^Js5*e)s2k;Ps/,gYs+12ks(D at 6s%*/U
+rBU<Gm68X at q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0pdVr;`BPq0r-'rI4W-m2l3Jruh7`s!%Ifs!@[ms![mss"47)
+s"j[5s#L*As$-NMs$crYs%EAfs&8r!s'#G-rE]#$s'>Y/s&f;%s&B"qs%<;Zs$$HAs"XO(s![mn
+s!%Icruq1<s&8r!s',M0s'l"?s(q^Ts*"9grrE(IrI"Wls*"E^s)7pSs(;:;s&]5!s%`Sds$m#S
+s$,CicT^<:q>]o4s&]5*s'l"Fs*=X!s-<V^s1A<Ws5<qBs7--bqu-Qks7ZK`s7$'Ws5s at 7s31MW
+s0D[&s-s%Ms+UK#s)\3Ts'bq1s%r`GbC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8Um`r;`murN#t"q5sV?s3CYjs0)I,s0;U0rPn`7s/>ssrMomu
+s/c7's0)I,s0;U0s0Ma4s0_m8h7*9ks0r$8s0;U+s/Q*rs.KC]s-E\Is,I&9s+gW-s+1,urIFit
+s+:9(rIt3)q#KZ.rrE(9s(D@>s'#G(s&8qls%!)Xs$ZlRs$-6AhgWm8iI:V&msb:$s$6TMs$H`Q
+s$crWs%EAes&/l!s(24Ls*Xj)s.KD!s2=rbs4dS:s7QEhqu#dYs8N&qs7cQbs6p!Rs6'FBs5<q5
+s4dS+s47(trRCkqs3Ueks31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0pXRr;`NTq0r-'rI4W-\K:bos!@[ns"+1)s#0m=s$6TQs%EAf
+s&/kss&f;*oj7Z(s',:!s%*/Xs$QgAmtU_Zs%*0Ws.01as/>t!s0;U5s1SBGs2+fTs2"`Js0r$:
+s0Ma/s/b+tgT&rHq>^--rPefWqoJfes53kAs763Ws69RGs5O(3s3CY_s0_m$s,R,.s)A!Js&K(h
+q`j=/aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0pXRr;`NTq0r-'rI4W-m2l3Jruh=br?D7es!Ians!dsts"47)
+s"j[5s#L*As$-NLs$ZlWs%EAfs&/kts'#A+s'>5&s'>Y/s&oA's&K(ss%NG^s$-NDs"j[,s![[C
+s!%Ifs!7V=s%r_ps&f;*s'Pe9s(VLNs)\'drrE(Is*jurs*Xiks*"E`s)J'Rs'l"7s'#G&s&&ej
+s$m#Vs$?ZLhgX<Dfm`bspO<-1s%<;fs&T/(s'Yk:s)7pbs+p]As/Q+3s3Uf)s6K^Us8)Wks8)ch
+s7?9[s6fpKs4I at ps1SH;s/#aas,[25s*Ocds(VL at s&]4qs+&:Aq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8Ua\r;a%$rN#t"q5sP>s3L_Ks02O.s0DUCql9[ps/Gsss/Z1$
+s/uC*s0;U0s0M[2s0_m8h7*9ks0hs7s02O+s/Q*rs.KC]s-E\Is,I&9s+gW-s+1,uqge]ts+:9'
+q#L;HkC3F2s)A!Rs(24;s',M's%iYds%!)Ys$H`Mo02&\gHO;>q>^2<s$$BGrBUBLs$crXs%*/]
+s%EAfs&8r!s'>Y>s)n?ms,d8Us0hsIs3q#)s69RWs8;!Ws8N&qs7cQbs6p!Rs6'FCs5F"8s4mY.
+rR_#!s4./!s3gqos3CYgs2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0pXRr;`NTq0r-'rI4W-\K:bos!@[ns"+1)s#0m=s$6TQs%EAf
+s&/kss&f;*oj7Z(s',:!s%*/Xs$QgAmtU_Zs%*0Ws.01as/>t!s0;U5s1SBGs2+fTs2"`Js0r$:
+s0Ma/s/b+tgT&rHq>^--rPefWqoJfes53kAs763Ws69RGs5O(3s3CY_s0_m$s,R,.s)A!Js&K(h
+q`j=/aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0pXRr;`NTq0r-'rI4W-m2l3Jruh=br?D7es!Ians!dsts"47)
+s"j[5s#L*As$-NLs$ZlWs%EAfs&/kts'#A+s'>5&s'>Y/s&oA's&K(ss%NG^s$-NDs"j[,s![[C
+s!%Ifs!7V=s%r_ps&f;*s'Pe9s(VLNs)\'drrE(Is*jurs*Xiks*"E`s)J'Rs'l"7s'#G&s&&ej
+s$m#Vs$?ZLhgX<Dfm`bspO<-1s%<;fs&T/(s'Yk:s)7pbs+p]As/Q+3s3Uf)s6K^Us8)Wks8)ch
+s7?9[s6fpKs4I at ps1SH;s/#aas,[25s*Ocds(VL at s&]4qs+&:Aq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8Ua\r;a%$rN#t"q5sP>s3L_Ks02O.s0DUCql9[ps/Gsss/Z1$
+s/uC*s0;U0s0M[2s0_m8h7*9ks0hs7s02O+s/Q*rs.KC]s-E\Is,I&9s+gW-s+1,uqge]ts+:9'
+q#L;HkC3F2s)A!Rs(24;s',M's%iYds%!)Ys$H`Mo02&\gHO;>q>^2<s$$BGrBUBLs$crXs%*/]
+s%EAfs&8r!s'>Y>s)n?ms,d8Us0hsIs3q#)s69RWs8;!Ws8N&qs7cQbs6p!Rs6'FCs5F"8s4mY.
+rR_#!s4./!s3gqos3CYgs2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0pLNr;`ZXq0r-'rI4W-\K:bos!@[ns"+1(s#'g<s$-NPs%<;e
+s&/kss&f;*pKm^ss'#G's&/kls%<;\s$QgAmtU_Zs%*0Us-s%]s/#aqs02O3s1JBFs1eTNs2G#S
+s1JBBs1&*:s0D[.s/c7$ho=cXe&M4`rPnlMs1eTOs2FrTs2G#Ys2b5\s3Uf#s5s at Ls69RFs5F"5
+s4%(js1\N:s.01Hs*F]]s'G_&s$bs3aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0pLNr;`ZXq0r-'rI4W-m2l3Jruh=br?D7es!Ians!dsts"47(
+s"aU3s#C$?s$$HKs$ZlWs%<;ds&/kts&oA+rETA.o3VH%s'#G)s&T/!s%`Sbs$?ZHqZ-XBs!%Ic
+r?;1bs!.P:s%`Sls&K)$s'5S3s(;:Gs)7d`rrE(GrI"Wns*Xims*4Qes)7pOs(24=s'>Y,s&8qk
+s%35\s$ZlPs$,CijZ_.Bq>^DBs$?ZQs%!)\s%`Sns'#G1s(24Cs)S-gs,6oGs/c77s3^l+s6TdW
+s8)Wks8)cis7H?]s6]jIs4@:ms1JB8s.o[_s,R,3s*F]bs(MF=s&T.os+&:Aq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8UUXr;a1(rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c7's0)I-s0D[2s0Vg6s0g[kqmc[7s0Ma0s/l=$s/,gis.'+Us-!DBs,6o4s+UK(q1&EpqZ-YK
+rIk-'rJ'KarrE(=s)%dLs'u(7s&]4ts%EA`s$m#Ts$,s9hgXZNdsh,mrI4W-s$-HJrBgNPs%*/_
+s%NGfs%iYos&f;+s'l"Hs*F^$s-E\`s1A<Rs4@;1s6]j]j8K#Ws82ijs7?9Zs6K^Js5j:?s5<q5
+s4dM)rR_)#s4%(ss3Ueks31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0pLNr;`ZXq0r-'rI4W-\K:bos!@[ns"+1(s#'g<s$-NPs%<;e
+s&/kss&f;*pKm^ss'#G's&/kls%<;\s$QgAmtU_Zs%*0Us-s%]s/#aqs02O3s1JBFs1eTNs2G#S
+s1JBBs1&*:s0D[.s/c7$ho=cXe&M4`rPnlMs1eTOs2FrTs2G#Ys2b5\s3Uf#s5s at Ls69RFs5F"5
+s4%(js1\N:s.01Hs*F]]s'G_&s$bs3aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0pLNr;`ZXq0r-'rI4W-m2l3Jruh=br?D7es!Ians!dsts"47(
+s"aU3s#C$?s$$HKs$ZlWs%<;ds&/kts&oA+rETA.o3VH%s'#G)s&T/!s%`Sbs$?ZHqZ-XBs!%Ic
+r?;1bs!.P:s%`Sls&K)$s'5S3s(;:Gs)7d`rrE(GrI"Wns*Xims*4Qes)7pOs(24=s'>Y,s&8qk
+s%35\s$ZlPs$,CijZ_.Bq>^DBs$?ZQs%!)\s%`Sns'#G1s(24Cs)S-gs,6oGs/c77s3^l+s6TdW
+s8)Wks8)cis7H?]s6]jIs4@:ms1JB8s.o[_s,R,3s*F]bs(MF=s&T.os+&:Aq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8UUXr;a1(rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c7's0)I-s0D[2s0Vg6s0g[kqmc[7s0Ma0s/l=$s/,gis.'+Us-!DBs,6o4s+UK(q1&EpqZ-YK
+rIk-'rJ'KarrE(=s)%dLs'u(7s&]4ts%EA`s$m#Ts$,s9hgXZNdsh,mrI4W-s$-HJrBgNPs%*/_
+s%NGfs%iYos&f;+s'l"Hs*F^$s-E\`s1A<Rs4@;1s6]j]j8K#Ws82ijs7?9Zs6K^Js5j:?s5<q5
+s4dM)rR_)#s4%(ss3Ueks31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0p at Jr;`f\q0r-'rI4W-\K:bos!@[ns"+1(s"sa9s$$HMs%*/a
+s&/kss&f;*s'GL$s'G_2s'5S.s&oA%s&&ejs%35Zs+g&tqo8Y,s-3POs.97as/5n"s0Vg;s1JBH
+s2+fTs2"`Ks1JBDs1&*9s0;U.s/uC(s/Y%snZ'dPrVuoGs4@:Xs1&*As1eTOs2FrRs2=rVs2P)\
+s3CYrs5O(Ds5j:>s5!_,s3CY_s1&*.s-Nb=s)n?Ts'5S#s$Ym2aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0p at Jr;`f\q0r-'rI4W-m2l3Jruh7`s!%Igs!Ians!dsts"47(
+s"aU3s#C$?s$$HJs$QfUs%<;ds&&ers&o;)s'5M.oj7Z(s'5S-s&f;$q#LFRs"XO(s!Iairuh7`
+s!%Ifs%<;bs%iYms&K)%s'>Y6s(D at JqgSPFs*=Qhs*Xips*juqs*F]fs)A!Ss(MFCs'Pe.s&/km
+s%NGas$ZlRs$?ZLhgY)ZbC9Eis+(-%s$QfUs%35`s%`Sks&8r#s'Pe;s(VLLs)n?ms,I&Ks0)I=
+s3q#.s6]jYs8)Wks8)cis7?9Zs6K^Fs4..js1865s.fU]s,I&1s*=W`s(;::s&B"ks+&:Aq>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8UITr;a=,rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c7's0)I-s0D[3rO)[6f=1dis0hs6s02O*s/Q*ss.]Oas-WhNs,d8=s+gW.s+:9#q#LGFs+13%
+rIb'%s+UE+rI+!\rrE(?s).jNs(;:=s'#G$s%WMds$m#Ts$,g5hgY)ZbC9EirI4K)s$-NMs$Q`Q
+s$m#\s%iYls&/krs&f;,s'bq at s)e9ks,R,Ls/uC:s3L`#s5j:Ls7kXQs8N&qs7cQbs6p!Rs60LF
+s5X.<s5*e2rRq/%s475"s3gqos3CYgs2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0p at Jr;`f\q0r-'rI4W-\K:bos!@[ns"+1(s"sa9s$$HMs%*/a
+s&/kss&f;*s'GL$s'G_2s'5S.s&oA%s&&ejs%35Zs+g&tqo8Y,s-3POs.97as/5n"s0Vg;s1JBH
+s2+fTs2"`Ks1JBDs1&*9s0;U.s/uC(s/Y%snZ'dPrVuoGs4@:Xs1&*As1eTOs2FrRs2=rVs2P)\
+s3CYrs5O(Ds5j:>s5!_,s3CY_s1&*.s-Nb=s)n?Ts'5S#s$Ym2aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0p at Jr;`f\q0r-'rI4W-m2l3Jruh7`s!%Igs!Ians!dsts"47(
+s"aU3s#C$?s$$HJs$QfUs%<;ds&&ers&o;)s'5M.oj7Z(s'5S-s&f;$q#LFRs"XO(s!Iairuh7`
+s!%Ifs%<;bs%iYms&K)%s'>Y6s(D at JqgSPFs*=Qhs*Xips*juqs*F]fs)A!Ss(MFCs'Pe.s&/km
+s%NGas$ZlRs$?ZLhgY)ZbC9Eis+(-%s$QfUs%35`s%`Sks&8r#s'Pe;s(VLLs)n?ms,I&Ks0)I=
+s3q#.s6]jYs8)Wks8)cis7?9Zs6K^Fs4..js1865s.fU]s,I&1s*=W`s(;::s&B"ks+&:Aq>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8UITr;a=,rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c7's0)I-s0D[3rO)[6f=1dis0hs6s02O*s/Q*ss.]Oas-WhNs,d8=s+gW.s+:9#q#LGFs+13%
+rIb'%s+UE+rI+!\rrE(?s).jNs(;:=s'#G$s%WMds$m#Ts$,g5hgY)ZbC9EirI4K)s$-NMs$Q`Q
+s$m#\s%iYls&/krs&f;,s'bq at s)e9ks,R,Ls/uC:s3L`#s5j:Ls7kXQs8N&qs7cQbs6p!Rs60LF
+s5X.<s5*e2rRq/%s475"s3gqos3CYgs2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0p4FqZ*f`q0r-'rI4W-\K:bos!7Ums"+1's"j[7s#pBJs%!)_
+s&&RlpKml*s'5M,s&]5!s%iYfs%!*GmtU_Zs%*0Qs-NbTs.01bs/Q+(s1&*As1eTNs2G#Ss1eTJ
+s1SHDs0r$9s0Ma2s02O+s/l=%ho>Vpa2\.Zs/c7Gs3q#"s4mX_s1&*As1eTOs2G#Ts2"`Ps2=rX
+s31Mks4@;/s5s@?s5!_.s3q"is1SH;s.fUWs+:8ls(;:8s%iY^j$(S6q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0p4FqZ*f`q0r-'rI4W-lQ6!Hruh7`s!7Uks!Rgqs!n%#s"FC,
+s"sa7s#U0Cs$6TOs$m#[s%WMjs&K)$s'#G,rETA.o3V4ms&&ehs$crPs#L*8s"47!s!.C`ruqCd
+s%35`s%WMis&8qus'#G0s'u(BqgSPFs*+Kfs*=Wlq0i9js*+Kas)7pQs().9s&]5"s&/kks%!)Y
+s$ZlRrBK1grBA8Ns$-NKs+UK/s,6o;s%35bs%r_ns&K)$s'#G.s'u(Cs).jUs*F]ts,d8Qs0;UA
+s4753s6fpZs8)cos8;oos7lWds7$'Ts60L at s4%(gs1/02s.TIYs,6o.s*4Q]s().5s&/khs+(&t
+c[P]iJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8U=PqZ+=0rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c7's0)I-s0D[3rO)[6e[PRes0Ma0s/uC&s/>sms.B=[s-<VHs,?aRrI=irrI=its+1-#s+C?)
+qh=usl[Jj6s)e9[s(hXKs().8s&T.rs%EA]s$H`Mk<@dPrBA8NrBC%+pHJUAs$H`SrC6fXs%NGi
+s&K)#s&f;,s'bq>s(q^\s+^Q<s.]P"s2+f`s5!_;s7$'aj8K#Ws82ijs7?9Zs6TdMs6'FCs5O(9
+s5!Y-s4RG)s475"s3gqos3CYgs2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0p4FqZ*f`q0r-'rI4W-\K:bos!7Ums"+1's"j[7s#pBJs%!)_
+s&&RlpKml*s'5M,s&]5!s%iYfs%!*GmtU_Zs%*0Qs-NbTs.01bs/Q+(s1&*As1eTNs2G#Ss1eTJ
+s1SHDs0r$9s0Ma2s02O+s/l=%ho>Vpa2\.Zs/c7Gs3q#"s4mX_s1&*As1eTOs2G#Ts2"`Ps2=rX
+s31Mks4@;/s5s@?s5!_.s3q"is1SH;s.fUWs+:8ls(;:8s%iY^j$(S6q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0p4FqZ*f`q0r-'rI4W-lQ6!Hruh7`s!7Uks!Rgqs!n%#s"FC,
+s"sa7s#U0Cs$6TOs$m#[s%WMjs&K)$s'#G,rETA.o3V4ms&&ehs$crPs#L*8s"47!s!.C`ruqCd
+s%35`s%WMis&8qus'#G0s'u(BqgSPFs*+Kfs*=Wlq0i9js*+Kas)7pQs().9s&]5"s&/kks%!)Y
+s$ZlRrBK1grBA8Ns$-NKs+UK/s,6o;s%35bs%r_ns&K)$s'#G.s'u(Cs).jUs*F]ts,d8Qs0;UA
+s4753s6fpZs8)cos8;oos7lWds7$'Ts60L at s4%(gs1/02s.TIYs,6o.s*4Q]s().5s&/khs+(&t
+c[P]iJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8U=PqZ+=0rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c7's0)I-s0D[3rO)[6e[PRes0Ma0s/uC&s/>sms.B=[s-<VHs,?aRrI=irrI=its+1-#s+C?)
+qh=usl[Jj6s)e9[s(hXKs().8s&T.rs%EA]s$H`Mk<@dPrBA8NrBC%+pHJUAs$H`SrC6fXs%NGi
+s&K)#s&f;,s'bq>s(q^\s+^Q<s.]P"s2+f`s5!_;s7$'aj8K#Ws82ijs7?9Zs6TdMs6'FCs5O(9
+s5!Y-s4RG)s475"s3gqos3CYgs2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0p"@r;a/fq0r-'rI4W-\K:bns!.Oks""+%s"aU5s#^6GqZ-Xq
+s&f;*oj7Z(s'5M,s'#G's&/kls%<<Os+g-!qo8Y,s,d8Gs-NbRs.B=gs/l=,s1&*Bs2+fTs24lR
+s2"`Ns1SHDs1&*<s0_m6s0D[/s0)I)s/Y>&p]&RZs/Z1$s/l=(s0)IOs4IA,s5Epes1JBHs24lU
+s2+`Ns24l[s3Uers4dS4s5O(7s4RG&s3L_`s1866s.]OUs+12js(246s%`S]j$(S6q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0p"@r;a/fq0r-'rI4W-koTjHr?2+`s!.Ois!Rgqs!n%#s"FC,
+s"sa7s#U0Cs$-NMs$crZs%WMis&B##s'#G,rETA.q-Npus'G_2s',M*s&/kks%!)Ts#^6<s"FC%
+s!@ObruqCds%*/]s%EAes&&eps&]5)s'Yk<qgSPFs)n?bs*4Qjs*XWjs*Xims*"E^s(_RDs'>Y.
+s&T.ss%EA`s%*/Ys$?ZMrBKIop]&Qgs$-NKs$?ZOs$csLs-*JKs-`m^s&8r!s&oA,s'Pe7s().C
+s).jWs)n?js+p];s.o\&s2P)ks6'FLs763as8)cks7lWes7--Vs69REs4mY$s2=rHs/Q*ks-<VA
+s+(,ms(q^Es&f:ts%36ArIFirdsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8U+Jr;a[6rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c7&s0)I,s0D[2s0Vg6s0gIes0hs7s0;U,s/c7!s.o[fs.&rds,$c0s+:9$rI=cprI=its+1-#
+s+C?)rIt9!s*a3^rrE(Bs)J'Vs)%dKs'bq2s&K(ps%35Ws$,O-kC31*c[PUPq0r'%s$-NMs$clW
+s%<;ds&8r!s',M/s'bq>s(_RRs*k!*s-E\[s0VgDs3gr(s6'FPs7t^Rs8N&qs7cQbs6p!Ts6BXJ
+s5j:@s5<q6rS.A+s4IA&s4%(ss3Ueks31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0p"@r;a/fq0r-'rI4W-\K:bns!.Oks""+%s"aU5s#^6GqZ-Xq
+s&f;*oj7Z(s'5M,s'#G's&/kls%<<Os+g-!qo8Y,s,d8Gs-NbRs.B=gs/l=,s1&*Bs2+fTs24lR
+s2"`Ns1SHDs1&*<s0_m6s0D[/s0)I)s/Y>&p]&RZs/Z1$s/l=(s0)IOs4IA,s5Epes1JBHs24lU
+s2+`Ns24l[s3Uers4dS4s5O(7s4RG&s3L_`s1866s.]OUs+12js(246s%`S]j$(S6q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0p"@r;a/fq0r-'rI4W-koTjHr?2+`s!.Ois!Rgqs!n%#s"FC,
+s"sa7s#U0Cs$-NMs$crZs%WMis&B##s'#G,rETA.q-Npus'G_2s',M*s&/kks%!)Ts#^6<s"FC%
+s!@ObruqCds%*/]s%EAes&&eps&]5)s'Yk<qgSPFs)n?bs*4Qjs*XWjs*Xims*"E^s(_RDs'>Y.
+s&T.ss%EA`s%*/Ys$?ZMrBKIop]&Qgs$-NKs$?ZOs$csLs-*JKs-`m^s&8r!s&oA,s'Pe7s().C
+s).jWs)n?js+p];s.o\&s2P)ks6'FLs763as8)cks7lWes7--Vs69REs4mY$s2=rHs/Q*ks-<VA
+s+(,ms(q^Es&f:ts%36ArIFirdsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8U+Jr;a[6rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c7&s0)I,s0D[2s0Vg6s0gIes0hs7s0;U,s/c7!s.o[fs.&rds,$c0s+:9$rI=cprI=its+1-#
+s+C?)rIt9!s*a3^rrE(Bs)J'Vs)%dKs'bq2s&K(ps%35Ws$,O-kC31*c[PUPq0r'%s$-NMs$clW
+s%<;ds&8r!s',M/s'bq>s(_RRs*k!*s-E\[s0VgDs3gr(s6'FPs7t^Rs8N&qs7cQbs6p!Ts6BXJ
+s5j:@s5<q6rS.A+s4IA&s4%(ss3Ueks31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0ok<r;a;jq0r-'rI4W-\K:bns!%Iis!n%#q#LF^s%35cs&8r"
+s',/&s'>S.s',M,s&f;#s%r_hs-*JAnV6q\s%*0Ms,m>Fs-<VRs.]Ols/l=,s1&*Bs24lVs2=rT
+s2+fNs1\NGs186 at s0r$9s0Vg3s0;U-s/l=&s/P\1mJkq\s/Q+"s/c7&s/uC*s02O.s0D[Xs5!_6
+s5s?nrOi0Fs24lUs2+fPs1nZSs3CYns4RG/s5<q6s4[M(s3gqks2"`Gs/uBqs,d82s)J'Ls&o at r
+s$Pg1aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0ok<r;a;jq0r-'rI4W-k8sXFr?2+bs!@[ms!dsts"47(s"XO1
+s#0m;s#g<Gs$H`Ss%*/`s%iYns&]5's',G,s'>F#pKml)s'#G%s%`Sbs$H`Ks#9s5s"+0us!%C`
+ruh=bs$m#Ys%35as%`Sks&K)%s'>Y5qgSPFs)\3^s*4QjrI"Kjs*Xins*F]gs)A!Ps'l"8s'#G%
+s%`Sgs%EA^s$HZMs$6HFo7$*,gOB#as$?ZOs$QfSs$crYs-s%[s.TIgs&B#$s'>Y5s'u(@s(VLK
+s).jWs*+Khs+C?1s-`nds186Qs4[M8s6K^Qs7H?bs7QEas7--Ws6BXHs5F"1s31MYs0Ma(s.97S
+s+p])s)e9Us'Yk-s%`Sbs+C9$s+(-!dsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8TtFr;ag:rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c7&s/uC+s0;U1s0Vg6s0gIes0hs8s0D[.s/c"rs-`nOs,[2;s+^Q*s+(&tqgSKns+(-#s+:9'
+s+L?)s*Xipl[Jj6s*+Kbs)S-Ys(hXFs'G_0s&K(os%!)Th*1FZmJkpimlpPrpHJUAs$H`Ss%*/^
+s%NGhs&K)%s'G_7s(;:Fs)%dXs+13.s-Nb]s0_mFs3q#*s60LQs7t^Rs8N&qs7cQbs7$'Vs6K^L
+s5s at Bs5F"8rS7G,s4IA&s4%(ss3Ueks31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0ok<r;a;jq0r-'rI4W-\K:bns!%Iis!n%#q#LF^s%35cs&8r"
+s',/&s'>S.s',M,s&f;#s%r_hs-*JAnV6q\s%*0Ms,m>Fs-<VRs.]Ols/l=,s1&*Bs24lVs2=rT
+s2+fNs1\NGs186 at s0r$9s0Vg3s0;U-s/l=&s/P\1mJkq\s/Q+"s/c7&s/uC*s02O.s0D[Xs5!_6
+s5s?nrOi0Fs24lUs2+fPs1nZSs3CYns4RG/s5<q6s4[M(s3gqks2"`Gs/uBqs,d82s)J'Ls&o at r
+s$Pg1aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0ok<r;a;jq0r-'rI4W-k8sXFr?2+bs!@[ms!dsts"47(s"XO1
+s#0m;s#g<Gs$H`Ss%*/`s%iYns&]5's',G,s'>F#pKml)s'#G%s%`Sbs$H`Ks#9s5s"+0us!%C`
+ruh=bs$m#Ys%35as%`Sks&K)%s'>Y5qgSPFs)\3^s*4QjrI"Kjs*Xins*F]gs)A!Ps'l"8s'#G%
+s%`Sgs%EA^s$HZMs$6HFo7$*,gOB#as$?ZOs$QfSs$crYs-s%[s.TIgs&B#$s'>Y5s'u(@s(VLK
+s).jWs*+Khs+C?1s-`nds186Qs4[M8s6K^Qs7H?bs7QEas7--Ws6BXHs5F"1s31MYs0Ma(s.97S
+s+p])s)e9Us'Yk-s%`Sbs+C9$s+(-!dsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8TtFr;ag:rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c7&s/uC+s0;U1s0Vg6s0gIes0hs8s0D[.s/c"rs-`nOs,[2;s+^Q*s+(&tqgSKns+(-#s+:9'
+s+L?)s*Xipl[Jj6s*+Kbs)S-Ys(hXFs'G_0s&K(os%!)Th*1FZmJkpimlpPrpHJUAs$H`Ss%*/^
+s%NGhs&K)%s'G_7s(;:Fs)%dXs+13.s-Nb]s0_mFs3q#*s60LQs7t^Rs8N&qs7cQbs7$'Vs6K^L
+s5s at Bs5F"8rS7G,s4IA&s4%(ss3Ueks31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0o_8r;aGnq0r-'rI4W-\K:bnq#LFKs#'g:s#pBKs%!)_s&&es
+s',/&rE]G.rEK;)s&]5!s%iZ^s,m>>o7m.^s%*0Js,I&>s,m>Js.97cs/5n!s0D[7s1SHJs24fS
+s24lQs1eTJs1JBDs1/0=s0hs7s0D[/s0)I)s/c7#s2O$tkJmP%s/Z1$s/l=(s0)I,s0;U0s0Ma4
+s0_m8s5<q:s5s at IrP&<Hs1nZPs2G#Ts2"`Ps2tAis4@;+s5<q5s4[M*s4%(qs2tAUs0hs0s.KCQ
+s*t&fs'u(2s%WM\j$(S6q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0o_8r;aGnq0r-'rI4W-k8sRDruh=cs!7Uls!dsts"47(s"XO1
+s#0m;s#g<Gs$?ZQs%!)^s%`Sls&K)$q#Kegs',M's%r_fs$ZlOs#U0;s"OI's!Iahru_7`ruqD1
+s$crXs%35as%iYns&]5)s'PYPrrE(=s)e9bs*F]ls*X]ls*Xcls*+K`s).jMs'u(7s&f;!s%r_i
+s%*/Xs$QfQs$6<Bs*ir,kC3 at nrBL0Es$QfUs%!)[s%35as.]Oms/c7(s'#G/s'u(As(_RNs)A!Y
+s)n?ds*Ocps+gW9s.97ms1JBUs4mY;s6K^Os7$'[s763[s6fpPs6'FAs5!_)s2b5Qs02O!s-itM
+s+^Q$s)S-Qs'G_*s%iYds+L?&s+13"dsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8ThBr;as>rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c7&s/uC*s0;U0s0Ma5s0gIes0h_'s/Q*rs.fUds-itQs,d8=s+gW,s+(&tqgSKns+(-#s+:9'
+s+L?)s*Xipl[Jj6s*=Wgs*"Eas).jMs().;s'#G%s%WM`s$ZlQs$,C)s*ir,kC2SXq0r'%s$-NM
+s$crYs%NGfs&/kus'5S4s(24Cs(hXPs*"Eps,I&Gs/#b(s2G#fs5<qAs7--bl2CMWs8N&qs7cQb
+s7--Xs6TdNs6'FCs5O(:s5!_1s4[M*s475"s3gqos3CYgs2tA_qoA`Vq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0o_8r;aGnq0r-'rI4W-\K:bnq#LFKs#'g:s#pBKs%!)_s&&es
+s',/&rE]G.rEK;)s&]5!s%iZ^s,m>>o7m.^s%*0Js,I&>s,m>Js.97cs/5n!s0D[7s1SHJs24fS
+s24lQs1eTJs1JBDs1/0=s0hs7s0D[/s0)I)s/c7#s2O$tkJmP%s/Z1$s/l=(s0)I,s0;U0s0Ma4
+s0_m8s5<q:s5s at IrP&<Hs1nZPs2G#Ts2"`Ps2tAis4@;+s5<q5s4[M*s4%(qs2tAUs0hs0s.KCQ
+s*t&fs'u(2s%WM\j$(S6q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0o_8r;aGnq0r-'rI4W-k8sRDruh=cs!7Uls!dsts"47(s"XO1
+s#0m;s#g<Gs$?ZQs%!)^s%`Sls&K)$q#Kegs',M's%r_fs$ZlOs#U0;s"OI's!Iahru_7`ruqD1
+s$crXs%35as%iYns&]5)s'PYPrrE(=s)e9bs*F]ls*X]ls*Xcls*+K`s).jMs'u(7s&f;!s%r_i
+s%*/Xs$QfQs$6<Bs*ir,kC3 at nrBL0Es$QfUs%!)[s%35as.]Oms/c7(s'#G/s'u(As(_RNs)A!Y
+s)n?ds*Ocps+gW9s.97ms1JBUs4mY;s6K^Os7$'[s763[s6fpPs6'FAs5!_)s2b5Qs02O!s-itM
+s+^Q$s)S-Qs'G_*s%iYds+L?&s+13"dsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8ThBr;as>rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c7&s/uC*s0;U0s0Ma5s0gIes0h_'s/Q*rs.fUds-itQs,d8=s+gW,s+(&tqgSKns+(-#s+:9'
+s+L?)s*Xipl[Jj6s*=Wgs*"Eas).jMs().;s'#G%s%WM`s$ZlQs$,C)s*ir,kC2SXq0r'%s$-NM
+s$crYs%NGfs&/kus'5S4s(24Cs(hXPs*"Eps,I&Gs/#b(s2G#fs5<qAs7--bl2CMWs8N&qs7cQb
+s7--Xs6TdNs6'FCs5O(:s5!_1s4[M*s475"s3gqos3CYgs2tA_qoA`Vq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0oS4r;aSrq0r-'rI4W-^E31Ns!%Igs!Rgss"FC/s#C$@s$6TQ
+s%<;es&B#$o3VH&rETA,s'#G*s&K(rs.01Vs,d8<onN@`s%*0Fs,$c6s,I&Bs-WhWs.]Oks/l=,
+s1&*@s1SHJs24fSs24lQs1nZKs1JBDs1/0>s0_m5s0D[Rs3Uegs2b5\huE;fs/Q+"rN-%$s/uC*
+rNZC.s0Ma4s0_m8s0r$<s1/0ms69RLs7$'(rPANNs24lUs2+fPs2Y/as4%)%s5!_1s4RG's4..t
+s3CYcs1JB=s/Z0ks,R,.s)7pHs&]4ps$Pg1aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0oS4r;aSrq0r-'rI4W-jW=@Bs!%Igs!Iaos!n%#s"FC,s"j[4
+s#C$?s$$HKs$ZlWs%<(es&oA+s'5S0m9]fus&f;!s%WMas$QfMs#L*8s"==#s!7Ueru_7`s$H`Q
+s$ZlWs%<;cs&&ers&oA,qgSPFs)A!Zs*+Khs*OcnqgJKlrHnQgs)\3Ys(hXHs'bq3s&T.us%`Sd
+rC-`Ss$6NHpO;$"o7$?rs$6NKrBgNQs%*/^s%EAcs%iZos0;U6s1A;<s().Cs)%dUs)e9bs*=Wl
+rI+]qs+gW=s.]Ots1\NYs5!_<s6TdQrU9dSs6]jOs6'FBs5*e/s3Ueas1&*1s.TIZs,I&2s*F]a
+s(D@<s&T.rs%<<FrIb-$s*rLHq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8T\>r;b*BrN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c1$s0)I,s0D[2s0Vg7gUHtYs0_m5s0;U,s/Z0ts.o[fs-s%Ss,m>?s+p].rI=Qjs*suts+13&
+rIk3)s*Xipl[Jj6s*Xins*=Wgs)S-Vs(VLFs'Yk0s&8qls%<;]s$ZlQs$,a3pO;$"o7#R\q0r'%
+s$-NMs$crYs%WMjs&K)&s'Pe:s(MFHs(q^Ts*=X!s,d8Ls/5n+s2P)hs5F"Bs7--bmJ[(_rVQQi
+s8N&qs7cQcs763Zs6]jPs6'FCs5O(:s5*e2s4[M*s475"s3gqos3CYgs2tA`qoJfXq>Z#clc+MU
+h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0oS4r;aSrq0r-'rI4W-^E31Ns!%Igs!Rgss"FC/s#C$@s$6TQ
+s%<;es&B#$o3VH&rETA,s'#G*s&K(rs.01Vs,d8<onN@`s%*0Fs,$c6s,I&Bs-WhWs.]Oks/l=,
+s1&*@s1SHJs24fSs24lQs1nZKs1JBDs1/0>s0_m5s0D[Rs3Uegs2b5\huE;fs/Q+"rN-%$s/uC*
+rNZC.s0Ma4s0_m8s0r$<s1/0ms69RLs7$'(rPANNs24lUs2+fPs2Y/as4%)%s5!_1s4RG's4..t
+s3CYcs1JB=s/Z0ks,R,.s)7pHs&]4ps$Pg1aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0oS4r;aSrq0r-'rI4W-jW=@Bs!%Igs!Iaos!n%#s"FC,s"j[4
+s#C$?s$$HKs$ZlWs%<(es&oA+s'5S0m9]fus&f;!s%WMas$QfMs#L*8s"==#s!7Ueru_7`s$H`Q
+s$ZlWs%<;cs&&ers&oA,qgSPFs)A!Zs*+Khs*OcnqgJKlrHnQgs)\3Ys(hXHs'bq3s&T.us%`Sd
+rC-`Ss$6NHpO;$"o7$?rs$6NKrBgNQs%*/^s%EAcs%iZos0;U6s1A;<s().Cs)%dUs)e9bs*=Wl
+rI+]qs+gW=s.]Ots1\NYs5!_<s6TdQrU9dSs6]jOs6'FBs5*e/s3Ueas1&*1s.TIZs,I&2s*F]a
+s(D@<s&T.rs%<<FrIb-$s*rLHq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8T\>r;b*BrN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c1$s0)I,s0D[2s0Vg7gUHtYs0_m5s0;U,s/Z0ts.o[fs-s%Ss,m>?s+p].rI=Qjs*suts+13&
+rIk3)s*Xipl[Jj6s*Xins*=Wgs)S-Vs(VLFs'Yk0s&8qls%<;]s$ZlQs$,a3pO;$"o7#R\q0r'%
+s$-NMs$crYs%WMjs&K)&s'Pe:s(MFHs(q^Ts*=X!s,d8Ls/5n+s2P)hs5F"Bs7--bmJ[(_rVQQi
+s8N&qs7cQcs763Zs6]jPs6'FCs5O(:s5*e2s4[M*s475"s3gqos3CYgs2tA`qoJfXq>Z#clc+MU
+h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0oG0r;a`!q0r-'rI4W-`?+mVq]>b[s!%Igs!Rgrs"==,s#9s>
+s$-NOs%35cs&/kus'5/%s'>S.s'#G*s&f;#s.]O`s-<VFs+pE(qo8Y,rJ(?-s,$c9s-*JLs.'+_
+s/5n!s0D[4s1&*?s1eTMs24fSs24lRs1nZKs1SHEs5X.:s4mY-s3q"ms3(Gbs2k;]huEYps/Pss
+s/u=(s02O.s0Ma4s0_m8s0r$<s1/0 at s1A<Ds1SI#s7$'Ys7Q?.s2=lTs2=rQs2"`Us3:Sms4[M-
+s4IA%s3gqps3Ueis2P)Ms0D['s-s%Hs*Xias'l"0s%WM\j$(S6q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0oG0r;a`!q0r-'rI4W-iu\4BruqCes!Iaos!n%"s"==+s"j[4
+s#C$?s$$HJqZ-Xis%r_os&T/%s'#G-s'>"us'>Y/s&T.ss%NG^s$?ZIs#9s5s"+0us!.Ias$6TM
+s$H`Ss%*/_s%iYns&T/&qgSPFs).jWs*"Efs*OcnqgJ?hs*4Qbs)7pTs(VLDs'G_.s&K(qs%EA^
+s$m#Vs+BchhuEY(mlpb:s$HZOs$ZlVs%<;cs%iYks&8s%s1&*Fs2P(Ms(VLNs)\3as*F]lrI"Ql
+s*k!)s-Wh_s0VgCs3Uf&s60LMs6fpUs6TdOs6BXIs5X.:s4[M's31MYs0Vg)s.01Ss,6o.s*4Q]
+s(24:s&]4ts%EBHs+LE)s+13"dsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8TP:r;b6FrN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c1$s/uC+s0;U0s0Vg6s0gssqZ-N&s0hs8s0Ma2s0)I(s/H$ps.KC^s-WhMs,R,9s+UK(q0r?l
+s*jors+(-#s+:9's+LE+s*Xipl[Jj6rI4cps*Ochs)\3Ys(q^Hs'Pe/s&8qos%WMds$crTs$?ZL
+o02PjhuEY(ffo4\pHJUBs$crZs%`Sls&T/&s'G_8s(MFKs)%dRs)\3es+p]<s.01is1/0Ns475/
+s69RRs7u3`rVZ]ms8)Wgs8N&qs7lWes7?9\s6fpQs6'FCs5O(:s5*e2s4[M*s475"s3gqos3CYg
+rQ>#Zs2b$9J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0oG0r;a`!q0r-'rI4W-`?+mVq]>b[s!%Igs!Rgrs"==,s#9s>
+s$-NOs%35cs&/kus'5/%s'>S.s'#G*s&f;#s.]O`s-<VFs+pE(qo8Y,rJ(?-s,$c9s-*JLs.'+_
+s/5n!s0D[4s1&*?s1eTMs24fSs24lRs1nZKs1SHEs5X.:s4mY-s3q"ms3(Gbs2k;]huEYps/Pss
+s/u=(s02O.s0Ma4s0_m8s0r$<s1/0 at s1A<Ds1SI#s7$'Ys7Q?.s2=lTs2=rQs2"`Us3:Sms4[M-
+s4IA%s3gqps3Ueis2P)Ms0D['s-s%Hs*Xias'l"0s%WM\j$(S6q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0oG0r;a`!q0r-'rI4W-iu\4BruqCes!Iaos!n%"s"==+s"j[4
+s#C$?s$$HJqZ-Xis%r_os&T/%s'#G-s'>"us'>Y/s&T.ss%NG^s$?ZIs#9s5s"+0us!.Ias$6TM
+s$H`Ss%*/_s%iYns&T/&qgSPFs).jWs*"Efs*OcnqgJ?hs*4Qbs)7pTs(VLDs'G_.s&K(qs%EA^
+s$m#Vs+BchhuEY(mlpb:s$HZOs$ZlVs%<;cs%iYks&8s%s1&*Fs2P(Ms(VLNs)\3as*F]lrI"Ql
+s*k!)s-Wh_s0VgCs3Uf&s60LMs6fpUs6TdOs6BXIs5X.:s4[M's31MYs0Vg)s.01Ss,6o.s*4Q]
+s(24:s&]4ts%EBHs+LE)s+13"dsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8TP:r;b6FrN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c1$s/uC+s0;U0s0Vg6s0gssqZ-N&s0hs8s0Ma2s0)I(s/H$ps.KC^s-WhMs,R,9s+UK(q0r?l
+s*jors+(-#s+:9's+LE+s*Xipl[Jj6rI4cps*Ochs)\3Ys(q^Hs'Pe/s&8qos%WMds$crTs$?ZL
+o02PjhuEY(ffo4\pHJUBs$crZs%`Sls&T/&s'G_8s(MFKs)%dRs)\3es+p]<s.01is1/0Ns475/
+s69RRs7u3`rVZ]ms8)Wgs8N&qs7lWes7?9\s6fpQs6'FCs5O(:s5*e2s4[M*s475"s3gqos3CYg
+rQ>#Zs2b$9J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0o;,qZ+`%q0r-'rI4W-boZZ\ocF,Us!%Igs!Rgqs"47*s#0m<
+s$$HLs$m#]s%r_qs&oA,oj7T&s'5S.s'#G)s&T/ts.TI]s-3PCs+gE)qo8Y,q1ep+s,I&As-E\T
+s.TIjs/l=)s0D[5s1A<Es1eTMs2=lTs8)chs763Xs69RFs5O(8s474ss3CYhs3(G`rQ"+$s2P#X
+s2k;`s/c1$s02I-s0Ma4s0hs:rOMs>s1A<Ds1SHHs1eTLs7QEds7lWjrPefTs2+fPs1\NGs1nZS
+s3:Sms4RG(s4%(rs3CYhs31Mcs2=rIs02Nus-E\@s*=W\s'bq/s%WM\j$(S6q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0o;,qZ+`%q0r-'rI4W-iu\4BruqCes!@[ms!dt!s"==*s"aU2
+q#LF^s$m#[s%NGgs&/kss&]5's',M/m9]`ss'#G%s%iYes$crPs#^6<s"OI's!RgjruV2(s$-NK
+s$QfUs%35bs&&eps&T#GrrE(6s)7pZs*4Qjs*X]lqgAEgs)e9]s)A!Rs(;:>s'>Y+s&&fds-*JE
+s,-i/l[J$spO;Wrs$6TNs$ZfSs%*/_s%iYms&8qus0r$Ds2b5es(_RPs)S-^s*4Qis*O]lrI+]q
+s,I&Js/H%-s2P)es5*e?s6fpUs6]jOs6'FEs5X.:s4[M's3Uefs1SH;s/#aas-!D=s*t&ls(q^F
+s'5S*s&&eis+gW.s+C?&s*rLHq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8TD6qZ,6JrN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c1$s/uC*s02O/s0Ma5s0h7&q#L)ss0hs8s0Ma2s02O*s/Q*qs.TI`s-`nPs,d8>s+gW,s*t&t
+qgJEls*t'!s+13%s+C9's*Xipl[Jj6q0r?ks*4Qds)J'Ss(24;s&oA&s&8qns%<;^s$m#Vs$6TK
+s$#CjkPt:*gHPF^s$$HIs$6TNs$QfUs%<;es&8r"s'5S1s'bq>s(hXQs)A!Zs*"Eks,6oBs.TIr
+s1JBTs4IA2s69RRs7u?dq>C9is7u]irV-?ks82ils7ZKbs763Ys6K^Js5a4>s5<q6s4mY.s4IA&
+s4%(ss3Ueks31A`rQ>/]q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0o;,qZ+`%q0r-'rI4W-boZZ\ocF,Us!%Igs!Rgqs"47*s#0m<
+s$$HLs$m#]s%r_qs&oA,oj7T&s'5S.s'#G)s&T/ts.TI]s-3PCs+gE)qo8Y,q1ep+s,I&As-E\T
+s.TIjs/l=)s0D[5s1A<Es1eTMs2=lTs8)chs763Xs69RFs5O(8s474ss3CYhs3(G`rQ"+$s2P#X
+s2k;`s/c1$s02I-s0Ma4s0hs:rOMs>s1A<Ds1SHHs1eTLs7QEds7lWjrPefTs2+fPs1\NGs1nZS
+s3:Sms4RG(s4%(rs3CYhs31Mcs2=rIs02Nus-E\@s*=W\s'bq/s%WM\j$(S6q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0o;,qZ+`%q0r-'rI4W-iu\4BruqCes!@[ms!dt!s"==*s"aU2
+q#LF^s$m#[s%NGgs&/kss&]5's',M/m9]`ss'#G%s%iYes$crPs#^6<s"OI's!RgjruV2(s$-NK
+s$QfUs%35bs&&eps&T#GrrE(6s)7pZs*4Qjs*X]lqgAEgs)e9]s)A!Rs(;:>s'>Y+s&&fds-*JE
+s,-i/l[J$spO;Wrs$6TNs$ZfSs%*/_s%iYms&8qus0r$Ds2b5es(_RPs)S-^s*4Qis*O]lrI+]q
+s,I&Js/H%-s2P)es5*e?s6fpUs6]jOs6'FEs5X.:s4[M's3Uefs1SH;s/#aas-!D=s*t&ls(q^F
+s'5S*s&&eis+gW.s+C?&s*rLHq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8TD6qZ,6JrN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c1$s/uC*s02O/s0Ma5s0h7&q#L)ss0hs8s0Ma2s02O*s/Q*qs.TI`s-`nPs,d8>s+gW,s*t&t
+qgJEls*t'!s+13%s+C9's*Xipl[Jj6q0r?ks*4Qds)J'Ss(24;s&oA&s&8qns%<;^s$m#Vs$6TK
+s$#CjkPt:*gHPF^s$$HIs$6TNs$QfUs%<;es&8r"s'5S1s'bq>s(hXQs)A!Zs*"Eks,6oBs.TIr
+s1JBTs4IA2s69RRs7u?dq>C9is7u]irV-?ks82ils7ZKbs763Ys6K^Js5a4>s5<q6s4mY.s4IA&
+s4%(ss3Ueks31A`rQ>/]q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0o)&r;b)+q0r-'rI4W-eK4Mdm2l9Ms!%Igs!Rgqs"+1(s"sa8
+s#g<Hs$ZlYs%WMks&]5(s'>;(rE]G-s'#G*s&]6%s/,ggs-`nNs,Hi/qo8Y,q1ep)s,$c7s,m>I
+s.'+_s/5mss/l=,s0r$=s1A<us7QEds7u]ms8Duns7H?[s6K^Ks5F"2s3q"rs3Ueis2k5\s2Y)X
+p&G'3q8`HTs31Mfs3CYjs0)I-s0Vg6s0hs:s1/0 at s1JBFs1\NJs1nZNs2+fRs2=s8s8N&rs8)c3
+s1nZKs1SHEs1/0As1nZSs31Mks4%(ss3Uejs2tA`s2b5[s2+fEs/Z0ks,m>6s*"EVs'Pe,s%WM\
+j$(S6q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0o)&r;b)+q0r-'rI4W-iu\4Bruh=cs!@[ms!dsuq#LFRs#U0C
+s$-NMs$crYs%EAes&&eqs&T/%s'#G-m9]`ss'5S+s&8qls%*/Ws$$HCs"j[.s!n$qruq>)s$-NL
+s$crYs%EAes%r_oqgSPFs(D at Is)A![s*+KhpO3'hs*=Wes)e9^s).jNs3(G^s1865s.TIYs,d8<
+s+BE^p&F?,ofiC at s$H`Ss$m#Ys%35bs%r_ps&]5(s1\NRs3CYqs(q^Rs)S-_s*=QirI"Qls+UK8
+s.B=ns1JBQs4./.s6BXQs6fpQs60LEs5X.;s4mY+s3gqls2P)Ls/uBrs-NbHs+^Q%s)e9Us'l"4
+s&T.ss%NHJs+UK*s+13"dsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8T20r;bTPrN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c1$s/uC*s02O.s0Ma4s0hO.q#Kfks0hs8s0Ma2s0;U-s/Z0ts.fUds-s%Ts-*JCs,$c0s+13!
+qgJEls*t'!s+1-#s+C?)s*F]ms*a9`rrDkDs*aops*F]hs)J'Ss(24;s'5S,s&B"os%NGbs-!D=
+s+^Q+s+0!Tp&F?,h`h!fs+13&s$QfSs$m#Zs%35as%r_ps&oA.s'l"=s(;:Gs)7pYs)n?cs*F]q
+s,I&Hs/,h&s2"`\s4dS7s6K^Us7u?drVZWks8)cks7cKcs8N&rs8)cis7QE`s6p!Rs6'FCs5O(:
+s5*e2s4[M*s475"s3gqos3CYhqoo)`s2tA_q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0o)&r;b)+q0r-'rI4W-eK4Mdm2l9Ms!%Igs!Rgqs"+1(s"sa8
+s#g<Hs$ZlYs%WMks&]5(s'>;(rE]G-s'#G*s&]6%s/,ggs-`nNs,Hi/qo8Y,q1ep)s,$c7s,m>I
+s.'+_s/5mss/l=,s0r$=s1A<us7QEds7u]ms8Duns7H?[s6K^Ks5F"2s3q"rs3Ueis2k5\s2Y)X
+p&G'3q8`HTs31Mfs3CYjs0)I-s0Vg6s0hs:s1/0 at s1JBFs1\NJs1nZNs2+fRs2=s8s8N&rs8)c3
+s1nZKs1SHEs1/0As1nZSs31Mks4%(ss3Uejs2tA`s2b5[s2+fEs/Z0ks,m>6s*"EVs'Pe,s%WM\
+j$(S6q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0o)&r;b)+q0r-'rI4W-iu\4Bruh=cs!@[ms!dsuq#LFRs#U0C
+s$-NMs$crYs%EAes&&eqs&T/%s'#G-m9]`ss'5S+s&8qls%*/Ws$$HCs"j[.s!n$qruq>)s$-NL
+s$crYs%EAes%r_oqgSPFs(D at Is)A![s*+KhpO3'hs*=Wes)e9^s).jNs3(G^s1865s.TIYs,d8<
+s+BE^p&F?,ofiC at s$H`Ss$m#Ys%35bs%r_ps&]5(s1\NRs3CYqs(q^Rs)S-_s*=QirI"Qls+UK8
+s.B=ns1JBQs4./.s6BXQs6fpQs60LEs5X.;s4mY+s3gqls2P)Ls/uBrs-NbHs+^Q%s)e9Us'l"4
+s&T.ss%NHJs+UK*s+13"dsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8T20r;bTPrN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c1$s/uC*s02O.s0Ma4s0hO.q#Kfks0hs8s0Ma2s0;U-s/Z0ts.fUds-s%Ts-*JCs,$c0s+13!
+qgJEls*t'!s+1-#s+C?)s*F]ms*a9`rrDkDs*aops*F]hs)J'Ss(24;s'5S,s&B"os%NGbs-!D=
+s+^Q+s+0!Tp&F?,h`h!fs+13&s$QfSs$m#Zs%35as%r_ps&oA.s'l"=s(;:Gs)7pYs)n?cs*F]q
+s,I&Hs/,h&s2"`\s4dS7s6K^Us7u?drVZWks8)cks7cKcs8N&rs8)cis7QE`s6p!Rs6'FCs5O(:
+s5*e2s4[M*s475"s3gqos3CYhqoo)`s2tA_q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0nr"r;b5/q0r-'rI4W-gE-4ljW=FEs!%Ifs!@[ms!n%$s"aU4
+s#U0Ds$H`Ts%EAgs&B#"s'###s'>Y0s'#G*s&f<)s/c6ts.KC\s-3PBqhG!fs%)s?s+gW2s,6o:
+s,m>Is.'+_s.o[os/uCSs4mY4s60LPs763^s7cQks82ims7QE^s6K^Gs4mY*s4..ts3:SdrQ5)\
+q8WI7q8WHTqoJ`Xs3:Sjs3^kps3q##s0hs;s1/0 at s1JBFs1eTLs2"`Ps24lTrPefTs7lWfs7H?^
+s1SHDs1/0=s0hs:s1A<Gs2G#^rQkMhs31Mbs2P)Xs24lRs1eT?s/5mbs,?u-s)\3Qs'>Y(s%EAX
+j$(S6q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0nr"r;b5/q0r-'rI4W-iu\4Bruh=cs!7IAs"47(s"XO0s#0m;
+s#g<Gs$H`Ss%*/_s%`Sks&8qts&]5(s'5S0mp>rus'5S.s&T.ss%NG^s$?ZIs#9s5s"==#s!@\4
+s$-NKs$H`Rs%!)\s%EAds%rTArrE(/s(MFKs)A!Zs*"Efs*XiqqgJKis*4Qfs6]jHs4RG%s3L__
+s0r$.s.]OZs,-i/iI:h,iI:Sds$6TNs$crXs%*/_s%`Sls&K)&s'>ZCs31Mls4dQks)A!Zs*"Ef
+rHnKjs*aous,?uFs/#b#s1eTWs4@;2s6TdSs6TdMs5s at As5<q5s4[M's3Uehs2+fEs/Z0ls-3PB
+s+C>us)S-Qs'bq2s&K(rs%NHIs+LE(s+13"dsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8T&,r;b`TrN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c1$s/uC*s02O.s0Ma4s0ha4qZ,Zcs0_m6s0Ma2s02O*s/H$ps.TI`s-`nPs,d8>s+gW-s+'on
+s*jors+(-#rIY'%s*=WkrI"WnnUCK<q0r?ls*Xins*F]hs)J'Ss(24>s'>Y,s/H$os.KCZs,[2=
+s,-i3s+13#h1#D(iI9rRs$-NKs+UK.s,-i8s%!)]s%NGfs%iYms&T/'s'Pe9s(D at Gs(q^Qs)S-`
+s*=Wls*k!$s,d8Ps/Q+/s2G#cs5!_;s6]jYs82Kfs8;cks8)cjs7cQds7H?js8;ons7lWfs7?9Z
+s6K^Js5a4>s5<q6s4mY.s4IA&s4%(ss3U_iqp#/bs2tA_q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0nr"r;b5/q0r-'rI4W-gE-4ljW=FEs!%Ifs!@[ms!n%$s"aU4
+s#U0Ds$H`Ts%EAgs&B#"s'###s'>Y0s'#G*s&f<)s/c6ts.KC\s-3PBqhG!fs%)s?s+gW2s,6o:
+s,m>Is.'+_s.o[os/uCSs4mY4s60LPs763^s7cQks82ims7QE^s6K^Gs4mY*s4..ts3:SdrQ5)\
+q8WI7q8WHTqoJ`Xs3:Sjs3^kps3q##s0hs;s1/0 at s1JBFs1eTLs2"`Ps24lTrPefTs7lWfs7H?^
+s1SHDs1/0=s0hs:s1A<Gs2G#^rQkMhs31Mbs2P)Xs24lRs1eT?s/5mbs,?u-s)\3Qs'>Y(s%EAX
+j$(S6q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0nr"r;b5/q0r-'rI4W-iu\4Bruh=cs!7IAs"47(s"XO0s#0m;
+s#g<Gs$H`Ss%*/_s%`Sks&8qts&]5(s'5S0mp>rus'5S.s&T.ss%NG^s$?ZIs#9s5s"==#s!@\4
+s$-NKs$H`Rs%!)\s%EAds%rTArrE(/s(MFKs)A!Zs*"Efs*XiqqgJKis*4Qfs6]jHs4RG%s3L__
+s0r$.s.]OZs,-i/iI:h,iI:Sds$6TNs$crXs%*/_s%`Sls&K)&s'>ZCs31Mls4dQks)A!Zs*"Ef
+rHnKjs*aous,?uFs/#b#s1eTWs4@;2s6TdSs6TdMs5s at As5<q5s4[M's3Uehs2+fEs/Z0ls-3PB
+s+C>us)S-Qs'bq2s&K(rs%NHIs+LE(s+13"dsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HJZA+;q8T&,r;b`TrN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c1$s/uC*s02O.s0Ma4s0ha4qZ,Zcs0_m6s0Ma2s02O*s/H$ps.TI`s-`nPs,d8>s+gW-s+'on
+s*jors+(-#rIY'%s*=WkrI"WnnUCK<q0r?ls*Xins*F]hs)J'Ss(24>s'>Y,s/H$os.KCZs,[2=
+s,-i3s+13#h1#D(iI9rRs$-NKs+UK.s,-i8s%!)]s%NGfs%iYms&T/'s'Pe9s(D at Gs(q^Qs)S-`
+s*=Wls*k!$s,d8Ps/Q+/s2G#cs5!_;s6]jYs82Kfs8;cks8)cjs7cQds7H?js8;ons7lWfs7?9Z
+s6K^Js5a4>s5<q6s4mY.s4IA&s4%(ss3U_iqp#/bs2tA_q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0nesr;bA3q0r-'rI4W-iu\!rh&cS=s!%Igs!Iaos"+1(s"sa8
+s#g<Hs$ZlXs%WMks&K)$s',)$s'5S.s'#G*rNZC)s/5mjs-s%Ps,6i1qo8Y,q1ep)s,$c6s,?u=
+s-*JKs/Q+*s1SHPs3Ueqs4[M5s6K^Ps6p!Zs8)cks7lWgs7QE[s6'F>s4RG(s3q"ns3(A`s2b5[
+pT",1s2Y/\rQ5#\s3CYls4%)!s475)s5F"?s1JBFs1eTLs2+fRqo/TRrPSZOs7$'Vs6TdMs1/0<
+s0Ma2s0;U5s186Fs2FlYs2k;^s2P)Us2"ZKs1A<7s.fU[s,$c's)J'Ms',M$s%35Vj$(S6q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0nesr;bA3q0r-'rI4W-iu\!rs!Iaos!n%"s"FC,s"j[5s#L*A
+s$-NLs$ZlWs%<;cs%r_os&K)#s&oA+rE\r"rE]G.s',M,s&B"os%<;[s$-NFs#0m4s"47"s%EAY
+s$?ZPs$crXrCHr\s%N<=rrE(,s().Cs(q^Rs)S-^s*4Qis*Xiqs8Duns7cQds763Rs5F"6s4I at q
+s1nZCs0)Hts-NbDs+'?_pHIJ`rBC6Hs$H`Ss%!)\s%WMjs&K)&s'G_5s2k;gs4IA0s)J'Zs)\3a
+s*FKgs*ap's-*JTs/c71s2G#as4[M8s6p!Ss69RGs5X.;s5!_0s4IA#s3CYbs1\N=s/5mes,m>;
+s+(,os)A!Ns'Yk0s&B"ps%NHHs+C?&s+&LGq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8So(r;blXrN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c1$s/uC*s02O.s0Ma4s0h_'h7*Ems0_m6s0Ma1s/uC&s/5mls.B=\s-NbKs,R,9s+^Q+s+(,t
+s*XiprI4crrIFits+:8ps*=Wjs*O]ls*aQhrrDkDs*aoprHnQhs)n?]s4[M#s2P)Os0D[,s/5mg
+s-<VIs,d8=s+LE)s+13#kC3.hhgY/\rBL<IrB^HOs,R, at s-*JJs%NGgs&/krs&K)$s'5S3s().D
+s)%dSs)J'[s*"Egs*aots+C?-s-3PWs/uC6s2b5hs53k?s6p!]s82Kfs8;imrVHQhs7ZKbs7?9i
+s8;ons7lWfs7?9Zs6K^Js5a4>s5<q6s4mY.s4IA&s4%(ss3UMcs31Mcs2b$9J]@#qJcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0nesr;bA3q0r-'rI4W-iu\!rh&cS=s!%Igs!Iaos"+1(s"sa8
+s#g<Hs$ZlXs%WMks&K)$s',)$s'5S.s'#G*rNZC)s/5mjs-s%Ps,6i1qo8Y,q1ep)s,$c6s,?u=
+s-*JKs/Q+*s1SHPs3Ueqs4[M5s6K^Ps6p!Zs8)cks7lWgs7QE[s6'F>s4RG(s3q"ns3(A`s2b5[
+pT",1s2Y/\rQ5#\s3CYls4%)!s475)s5F"?s1JBFs1eTLs2+fRqo/TRrPSZOs7$'Vs6TdMs1/0<
+s0Ma2s0;U5s186Fs2FlYs2k;^s2P)Us2"ZKs1A<7s.fU[s,$c's)J'Ms',M$s%35Vj$(S6q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNiHbq0nesr;bA3q0r-'rI4W-iu\!rs!Iaos!n%"s"FC,s"j[5s#L*A
+s$-NLs$ZlWs%<;cs%r_os&K)#s&oA+rE\r"rE]G.s',M,s&B"os%<;[s$-NFs#0m4s"47"s%EAY
+s$?ZPs$crXrCHr\s%N<=rrE(,s().Cs(q^Rs)S-^s*4Qis*Xiqs8Duns7cQds763Rs5F"6s4I at q
+s1nZCs0)Hts-NbDs+'?_pHIJ`rBC6Hs$H`Ss%!)\s%WMjs&K)&s'G_5s2k;gs4IA0s)J'Zs)\3a
+s*FKgs*ap's-*JTs/c71s2G#as4[M8s6p!Ss69RGs5X.;s5!_0s4IA#s3CYbs1\N=s/5mes,m>;
+s+(,os)A!Ns'Yk0s&B"ps%NHHs+C?&s+&LGq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HJZA+;q8So(r;blXrN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>ssrMomu
+s/c1$s/uC*s02O.s0Ma4s0h_'h7*Ems0_m6s0Ma1s/uC&s/5mls.B=\s-NbKs,R,9s+^Q+s+(,t
+s*XiprI4crrIFits+:8ps*=Wjs*O]ls*aQhrrDkDs*aoprHnQhs)n?]s4[M#s2P)Os0D[,s/5mg
+s-<VIs,d8=s+LE)s+13#kC3.hhgY/\rBL<IrB^HOs,R, at s-*JJs%NGgs&/krs&K)$s'5S3s().D
+s)%dSs)J'[s*"Egs*aots+C?-s-3PWs/uC6s2b5hs53k?s6p!]s82Kfs8;imrVHQhs7ZKbs7?9i
+s8;ons7lWfs7?9Zs6K^Js5a4>s5<q6s4mY.s4IA&s4%(ss3UMcs31Mcs2b$9J]@#qJcFR+rrAkp
+J,~>
+JcF-trr at WMg]+C)]0?%>JNiHbq0nYor;bM7q0r-'rI4W-lQ5j%diSN3s!%Igs!Rgrs"==,s#0m<
+s$$HLs$m#]s%iYms&K)%s'55's'>Y0s',M,rNlO2s/uC#s.]O^s-!D=s+^Ejs%)s?s+gW2s,6o6
+s,[2Gs.01bs/Z1-s1\NSs3:Sos5*e<s60LJs7--as7cQes7QEcs7$'Qs5O(6s4IA$s3L_hrN-%"
+nZ)W/s2Y/\rQ>)^s3L_ns475&s4RG/s5a4Es6p!Zs2+fRrP\`Ts24fPs2"`Ns1\Nss5s at Bs5F!c
+s0D[-s/c7*s0hs=s1eTPqo8ZTs24lPq7cm>s/c6ns-*J;s*F]`s'u(3s%r_cs$>[/aaX'cJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMg]+C)]0?%>JNiHbq0nYor;bM7q0r-'rI4W-lQ5j%ru_7`s!%Ifs!@[ms!n%"s"==*
+s"aU3s#C$?s$$HJs$QfUs%35as%iYms&B#"s&oA+s'5S0nQu0"s'5M,s&f;"s%`Sbs$QfNs#U0<
+s"XO*s&8qis$QfSs$m#Yqag`YqgSPFs'5S3s().Cs(hXPs)J)*s7$'[s7cQis8Duqs8)cis6fpP
+s5s@?s4..ks24lLs02O!s-WhJs,$c,omZ3jhgYSjs$H`Ts%EAfs&&ess'#G/s'u(?s3L_rs5!_:
+s)\3^s)n?cs*FWkrI+^"s,d8Ls/,h&s1eTWs4./,s60LLs69RGs5X.;s5!_/s4IA%s3^kis24lJ
+s/uBss-WhHs+UK$s)n?Ys(;:<s&oA$s%iYes+LE(s+(-!d=1okJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMg]+Cq];k\HJZA+;q8Sc$r;c#\rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>mqrMomu
+rN6+&s0)I,q#JmQs0hs8s0Vg3s0)I(s/H$os.TI_s-`nOs,d8>s,$c1s+:9#s*Xcns*jorrIFit
+s*"EerH\Ehs*OcnrI+KjrrDkDs*aops*OeAs7?9Xs5s@?s4RFus2G#Ms0hs0s.o[as-`nQs,R,7
+s+^Q,s+C9"o7$!hhgYMfq`k*Hs$H`QrC$ZUs-E\Qs.'+\s%r_ps&f;)s'5S1s'l"?s(_ROs)S-^
+s*+Kgs*Ocps+(-$s+LE1s-Nb]s0;U<s2tAls5F"Cs7--`s82Kfs8;oorVHQis7cQes7H?^s8N&r
+s8)cjs7QE_s6fpPs6'FCs5O(:s5*e2s4[M*s475"s3gqopWif_s2tA_q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMg]+C)]0?%>JNiHbq0nYor;bM7q0r-'rI4W-lQ5j%diSN3s!%Igs!Rgrs"==,s#0m<
+s$$HLs$m#]s%iYms&K)%s'55's'>Y0s',M,rNlO2s/uC#s.]O^s-!D=s+^Ejs%)s?s+gW2s,6o6
+s,[2Gs.01bs/Z1-s1\NSs3:Sos5*e<s60LJs7--as7cQes7QEcs7$'Qs5O(6s4IA$s3L_hrN-%"
+nZ)W/s2Y/\rQ>)^s3L_ns475&s4RG/s5a4Es6p!Zs2+fRrP\`Ts24fPs2"`Ns1\Nss5s at Bs5F!c
+s0D[-s/c7*s0hs=s1eTPqo8ZTs24lPq7cm>s/c6ns-*J;s*F]`s'u(3s%r_cs$>[/aaX'cJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMg]+C)]0?%>JNiHbq0nYor;bM7q0r-'rI4W-lQ5j%ru_7`s!%Ifs!@[ms!n%"s"==*
+s"aU3s#C$?s$$HJs$QfUs%35as%iYms&B#"s&oA+s'5S0nQu0"s'5M,s&f;"s%`Sbs$QfNs#U0<
+s"XO*s&8qis$QfSs$m#Yqag`YqgSPFs'5S3s().Cs(hXPs)J)*s7$'[s7cQis8Duqs8)cis6fpP
+s5s@?s4..ks24lLs02O!s-WhJs,$c,omZ3jhgYSjs$H`Ts%EAfs&&ess'#G/s'u(?s3L_rs5!_:
+s)\3^s)n?cs*FWkrI+^"s,d8Ls/,h&s1eTWs4./,s60LLs69RGs5X.;s5!_/s4IA%s3^kis24lJ
+s/uBss-WhHs+UK$s)n?Ys(;:<s&oA$s%iYes+LE(s+(-!d=1okJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMg]+Cq];k\HJZA+;q8Sc$r;c#\rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/>mqrMomu
+rN6+&s0)I,q#JmQs0hs8s0Vg3s0)I(s/H$os.TI_s-`nOs,d8>s,$c1s+:9#s*Xcns*jorrIFit
+s*"EerH\Ehs*OcnrI+KjrrDkDs*aops*OeAs7?9Xs5s@?s4RFus2G#Ms0hs0s.o[as-`nQs,R,7
+s+^Q,s+C9"o7$!hhgYMfq`k*Hs$H`QrC$ZUs-E\Qs.'+\s%r_ps&f;)s'5S1s'l"?s(_ROs)S-^
+s*+Kgs*Ocps+(-$s+LE1s-Nb]s0;U<s2tAls5F"Cs7--`s82Kfs8;oorVHQis7cQes7H?^s8N&r
+s8)cjs7QE_s6fpPs6'FCs5O(:s5*e2s4[M*s475"s3gqopWif_s2tA_q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMfDi+)]0?%>JNiHbq0nMkr;bY;q0r-'rI4W-nK.Q-b9$[*ruqCes!@[os"+1(s"sa8
+s#g<Hs$ZlXs%NGhs&8qus&oA,oj7Z(s'5S.rO)[6s0_m1s/Q*ns-`nKs+gKks%*$As*k!!s+UK-
+s+gW6s-3PQs.97fs/uC2s1nZUs3Uf!s5F"<s69RQs7ZKcs7H?as7cQ`s6BXFs5*e/s0;U-rN6+$
+s/YOes2b5_s3(Abs3Ueps4@;)s4mY5s6'FKs7-']s7cK0s2=rSs1nZLrP&<Es5X.9s4mY-s0;U,
+s/Q+"s02O3s186Eq830Js1nZLqnE*Ds0Vg)s.'+Ns+C>rs)%dEs&]4qs%!)Tj$(S6q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMfDi+)]0?%>JNiHbq0nMkr;bY;q0r-'rI4W-nK.Q-q&]PXruh=cs!.Ois!Rgqs""+%
+s"OI.s#'g8s#U0Cs$-NMs$crYs%EAes&&eps&T/%s'#A+s'>5&rE]G.rEK;*s&]4us%NG_s$H`L
+s#U0<s"XOXs&/kis$clVq+1C3rrE($s'5S3s3(Gis4@;-s5j:Fs6TdTs7QEes82ips8;oks7?9Z
+s6BX at s474ss2k;Ss0;U&s.KC[s,m>=s+:9"iBHFRs+13)s,?uBs%WMjs&K)$s'#G/s'u(As(VMc
+s4dS5s6BW-rHJ9ds*OWks+13/s-Nb[s/l=3s2=r`s4IA2s6BXJs5j:@s5<q5s4[M)s4..ts3L_c
+s1eTAs/Q*ks-<VBs+:8ss)S-Ts(24:s&f;"s%`Scs+C?&s*r at Dq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMfDi+q];k\HJZA+;q8SVur;c/`rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/5mqrMfgs
+s/Z1$s/l.us0;U1s0Vg7dC9.as0_m5s02O*s/Q*rs.]Obs-itRs-*JDs,6o5s+UK(s*aops*aip
+qg\Wrs+12ls*"Eds*4Qhs*F]lrI"WnqgSPFqgSSEs8;ils7u]es6]jLs5a49s4..os2=rMs0Ma*
+s.TIbs-`nLs,-i5s+gW-rIFirrI3]hjaR5Zs+(-#rBUBKs$QfTs$m#Ys%*/^s.01bs/#aos&K)%
+s'5S3s'l"=s(MFKs)A![s*4QirI"Wns*juus+:9)s,d8Ns/>t)s2"`Zs4@;2s6TdWs7cQjp&4pg
+s82cks7u]hs7QE`s763hs8;ons7lWds7--Vs69RGs5a4>s5<q6s4mY.s4IA&s4%(ss3UMcs31Mc
+s2b$9J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMfDi+)]0?%>JNiHbq0nMkr;bY;q0r-'rI4W-nK.Q-b9$[*ruqCes!@[os"+1(s"sa8
+s#g<Hs$ZlXs%NGhs&8qus&oA,oj7Z(s'5S.rO)[6s0_m1s/Q*ns-`nKs+gKks%*$As*k!!s+UK-
+s+gW6s-3PQs.97fs/uC2s1nZUs3Uf!s5F"<s69RQs7ZKcs7H?as7cQ`s6BXFs5*e/s0;U-rN6+$
+s/YOes2b5_s3(Abs3Ueps4@;)s4mY5s6'FKs7-']s7cK0s2=rSs1nZLrP&<Es5X.9s4mY-s0;U,
+s/Q+"s02O3s186Eq830Js1nZLqnE*Ds0Vg)s.'+Ns+C>rs)%dEs&]4qs%!)Tj$(S6q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMfDi+)]0?%>JNiHbq0nMkr;bY;q0r-'rI4W-nK.Q-q&]PXruh=cs!.Ois!Rgqs""+%
+s"OI.s#'g8s#U0Cs$-NMs$crYs%EAes&&eps&T/%s'#A+s'>5&rE]G.rEK;*s&]4us%NG_s$H`L
+s#U0<s"XOXs&/kis$clVq+1C3rrE($s'5S3s3(Gis4@;-s5j:Fs6TdTs7QEes82ips8;oks7?9Z
+s6BX at s474ss2k;Ss0;U&s.KC[s,m>=s+:9"iBHFRs+13)s,?uBs%WMjs&K)$s'#G/s'u(As(VMc
+s4dS5s6BW-rHJ9ds*OWks+13/s-Nb[s/l=3s2=r`s4IA2s6BXJs5j:@s5<q5s4[M)s4..ts3L_c
+s1eTAs/Q*ks-<VBs+:8ss)S-Ts(24:s&f;"s%`Scs+C?&s*r at Dq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMfDi+q];k\HJZA+;q8SVur;c/`rN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/5mqrMfgs
+s/Z1$s/l.us0;U1s0Vg7dC9.as0_m5s02O*s/Q*rs.]Obs-itRs-*JDs,6o5s+UK(s*aops*aip
+qg\Wrs+12ls*"Eds*4Qhs*F]lrI"WnqgSPFqgSSEs8;ils7u]es6]jLs5a49s4..os2=rMs0Ma*
+s.TIbs-`nLs,-i5s+gW-rIFirrI3]hjaR5Zs+(-#rBUBKs$QfTs$m#Ys%*/^s.01bs/#aos&K)%
+s'5S3s'l"=s(MFKs)A![s*4QirI"Wns*juus+:9)s,d8Ns/>t)s2"`Zs4@;2s6TdWs7cQjp&4pg
+s82cks7u]hs7QE`s763hs8;ons7lWds7--Vs69RGs5a4>s5<q6s4mY.s4IA&s4%(ss3UMcs31Mc
+s2b$9J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMdJp\)]0?%>JNiHbq0nAgqZ,Y?q0r-'rI4W-q&]>3_]Jh"ruqCfs!Rgss"==,s#0m<
+s$$HLs$m#\s%WMis&B#"s'#G.oj7Z(s'5N3rODm9s0;U's.KCYs,Qurs%)s7s+13&s+LE+s,6o?
+s-NbRs.TIls0D[7s2+fZs4%)(s5<q?s6fpZrU^'_s7lWbs1JBCs1&*;s0D[.s/uC(s/c7$mAg2e
+s/c7DrQYAis4%)$s4dS2s5X.Cs6]jWs7cKbs7ZKes7lW1s1\NHs1JBDs1/0ds4IA#s3^kKs/Q*s
+s/uC-s0hs<rOr6Fs1nTMs1nZLqnE*?s0)Hts-NbDs+12ns(_R at s&K(ns%!)Tj$(S6q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMdJp\)]0?%>JNiHbq0nAgqZ,Y?q0r-'rI4W-q&]>3o,doRruh=cs!.Ois!Iaps""+$
+s"FC,s"sa6s#L*As$-NLs$ZlWs%<;cs%r_ns&K)$s'#G,s'5M.o3VH&rET;*s'#G's&&ehs$m#T
+s$$HDs#'gds',M%s%NA]q+1C3rrE)"s0Ma;s24lYs3L_ss5*e8s5j:Gs7$'[s7ZKfs82ips8;ol
+s7H?Us5X.8s4@:ns1eTDs02O&s%r_hs%*/Xs$>O+o7$^is+LE/s,I&As-E\Rs.TIms0D[9s'G_5
+s'u(As(q^Qs5F"<s6'FNs*4Qhs*FWks*jurs*k!(s-!DPs/#b"s1A<Os3gr&s5s at Es5j:?s53k4
+s4[M)s3q"rs3L_fs24lKs0;U$s.'+Ps+p]*s*4Q_s(VLDs'G_-s&8qls%*0As+&@Cq>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMdJp\q];k\HJZA+;q8SJqqZ-/drN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/5gos/Geo
+s/uC*s02O.s0Ma4s0g7_s0hs7s0;U,s/Z0us.o[fs.'+Vs-<VHs,R,;s+gW-s+'upq0r?ns+(,j
+s)n?bs*+Kfs*=WjrHnQlqgSPFq>UElrVQWks7QE[s6BXJs5F"2s3^kis2+fHs02O%s.fUas-3PC
+s,?u8s+UE&rBJt!nUC:`s+(-%s+LE+s+^Q/s$ZlWs%35_s%EAds.fUns/uC,s'#G.s'bq<s(MFI
+s).jWs*"Ees*F]lrI"Wns*juus+:9.s-<VXs/l=3s24l^s4[M7s6fpYs7cQjp&4pgs82imrV6Ed
+s7QE`s7--gs8;ons7cQbs7$'Ts60LFs5a4>s5<q6s4mY.s4IA&s4%(ss3UMcs31Mcs2b$9J]@#q
+JcFR+rrAkpJ,~>
+JcF-trr at WMdJp\)]0?%>JNiHbq0nAgqZ,Y?q0r-'rI4W-q&]>3_]Jh"ruqCfs!Rgss"==,s#0m<
+s$$HLs$m#\s%WMis&B#"s'#G.oj7Z(s'5N3rODm9s0;U's.KCYs,Qurs%)s7s+13&s+LE+s,6o?
+s-NbRs.TIls0D[7s2+fZs4%)(s5<q?s6fpZrU^'_s7lWbs1JBCs1&*;s0D[.s/uC(s/c7$mAg2e
+s/c7DrQYAis4%)$s4dS2s5X.Cs6]jWs7cKbs7ZKes7lW1s1\NHs1JBDs1/0ds4IA#s3^kKs/Q*s
+s/uC-s0hs<rOr6Fs1nTMs1nZLqnE*?s0)Hts-NbDs+12ns(_R at s&K(ns%!)Tj$(S6q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMdJp\)]0?%>JNiHbq0nAgqZ,Y?q0r-'rI4W-q&]>3o,doRruh=cs!.Ois!Iaps""+$
+s"FC,s"sa6s#L*As$-NLs$ZlWs%<;cs%r_ns&K)$s'#G,s'5M.o3VH&rET;*s'#G's&&ehs$m#T
+s$$HDs#'gds',M%s%NA]q+1C3rrE)"s0Ma;s24lYs3L_ss5*e8s5j:Gs7$'[s7ZKfs82ips8;ol
+s7H?Us5X.8s4@:ns1eTDs02O&s%r_hs%*/Xs$>O+o7$^is+LE/s,I&As-E\Rs.TIms0D[9s'G_5
+s'u(As(q^Qs5F"<s6'FNs*4Qhs*FWks*jurs*k!(s-!DPs/#b"s1A<Os3gr&s5s at Es5j:?s53k4
+s4[M)s3q"rs3L_fs24lKs0;U$s.'+Ps+p]*s*4Q_s(VLDs'G_-s&8qls%*0As+&@Cq>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMdJp\q];k\HJZA+;q8SJqqZ-/drN#t"s/l1$qp,5fs0)I,s0;U0rPn`7s/5gos/Geo
+s/uC*s02O.s0Ma4s0g7_s0hs7s0;U,s/Z0us.o[fs.'+Vs-<VHs,R,;s+gW-s+'upq0r?ns+(,j
+s)n?bs*+Kfs*=WjrHnQlqgSPFq>UElrVQWks7QE[s6BXJs5F"2s3^kis2+fHs02O%s.fUas-3PC
+s,?u8s+UE&rBJt!nUC:`s+(-%s+LE+s+^Q/s$ZlWs%35_s%EAds.fUns/uC,s'#G.s'bq<s(MFI
+s).jWs*"Ees*F]lrI"Wns*juus+:9.s-<VXs/l=3s24l^s4[M7s6fpYs7cQjp&4pgs82imrV6Ed
+s7QE`s7--gs8;ons7cQbs7$'Ts60LFs5a4>s5<q6s4mY.s4IA&s4%(ss3UMcs31Mcs2b$9J]@#q
+JcFR+rrAkpJ,~>
+JcF-trr at WMc2YD)]0?%>JNiHbq0n/ar;c"Eq0r-'rI4W-q#IrHruh=cs!Iaps"47)s"sa8s#g<G
+s$QfVs%EAes&&eqs&]5)o3VH&rOMm<s1A<@s02O$s.97Uqu?Zrq0r9ns+:9's,$c;s-!DHs.'+b
+s/l=*s186Ks3:Sqs5*e;s6TdVs7--*s24lUs2"`Ls1SHEs1/0;s0;U-s/l=&s/YOes/Z1$s/l7&
+s3gqus4[M1s5X.?s69ROs7?9cs7ZKas7H?as7ZK`s6]iurOMs:s4RG$s3:Scs/H$qs/Q+(s0_m;
+rOr0Ds1nZPs2+fOs1eNHs1A<;s/Q*js-!D;s*aofs(MF<s&8qls%!)Tj$(S6q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMc2YD)]0?%>JNiHbq0n/ar;c"Eq0r-'rI4W-q#K_%ru_7`s!%Ifs!@[ls![mss"47(
+s"XO0s#'g9s#^6Es$6TOs$m#[s%NGgs&&eqs&]5'rEK;,rE])&rE]A,s',G*s&K(ps%<;\s$H`L
+s#L*ps'u(5s&8qiq+1NUqu?Zrs/#ass0Ma;s2"`Vs3Uets4dS2s5j:Hs6fpWs7?9cs8)cmrVcci
+s7$'Rs5a44s(;:@s'Pe1s&f;"s%iYgs%*/Ys$>I)s*t'$s+gW4s,[2Fs-`nXs.]Ojs/Q+&s0r$C
+s2Y/`s3L^Ys(q^Ss)\5*s6TdSs7H><s*Xips*t'!s*jurs+:90s-<VVs/>t(s1\NUs4./,s5j:@
+s5F"7s4mY-s4@;#s3Uels31M^s1\NBs/l<qs-`nJs+^Q&s*"E\s(MFBs'>Y,s&/kjs%!*?s*r:B
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMc2YDq];k\HJZA+;q8S8kr;cMjrN#t"s/l1$qp,5fs0)I,s0;U0rPn`7q#LGos/Q+"
+s/l=(s0)I,s0;U1s0Vg7c+!_\s0D[.s/c7"s/,gjs.97[s-WhNs,m>As,-i3s+C?%q0i-hs*t&g
+s)\3^s)n?cs*4Qhs*F]ls*X_DrrDlos8Doos82iis7$'Vs6TdIs5!_+s3gqhs1nZDs/uC!s.B=X
+s,d8As$ZlRrBU<Gdm!MTq1/Krs+LE-s+p]3s,-i:s-3OVs%WMgs%r`ps0)I1s185:s'l">s(VLL
+s)7pWs)e9as*=QirI"Wns*juus+UK6s-itbs0D[<s2Y/fs4mY;s7$'[s7cQjq>L9is8)cks7lWg
+rV$9`s763[s8N&rs7u]gs763Ys6K^Ks5s at Bs5O(:s5*e2s4[M*s475"s3gqopWif_s2tA_q>Z#c
+lc+MUh>dKTV#Pr~>
+JcF-trr at WMc2YD)]0?%>JNiHbq0n/ar;c"Eq0r-'rI4W-q#IrHruh=cs!Iaps"47)s"sa8s#g<G
+s$QfVs%EAes&&eqs&]5)o3VH&rOMm<s1A<@s02O$s.97Uqu?Zrq0r9ns+:9's,$c;s-!DHs.'+b
+s/l=*s186Ks3:Sqs5*e;s6TdVs7--*s24lUs2"`Ls1SHEs1/0;s0;U-s/l=&s/YOes/Z1$s/l7&
+s3gqus4[M1s5X.?s69ROs7?9cs7ZKas7H?as7ZK`s6]iurOMs:s4RG$s3:Scs/H$qs/Q+(s0_m;
+rOr0Ds1nZPs2+fOs1eNHs1A<;s/Q*js-!D;s*aofs(MF<s&8qls%!)Tj$(S6q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMc2YD)]0?%>JNiHbq0n/ar;c"Eq0r-'rI4W-q#K_%ru_7`s!%Ifs!@[ls![mss"47(
+s"XO0s#'g9s#^6Es$6TOs$m#[s%NGgs&&eqs&]5'rEK;,rE])&rE]A,s',G*s&K(ps%<;\s$H`L
+s#L*ps'u(5s&8qiq+1NUqu?Zrs/#ass0Ma;s2"`Vs3Uets4dS2s5j:Hs6fpWs7?9cs8)cmrVcci
+s7$'Rs5a44s(;:@s'Pe1s&f;"s%iYgs%*/Ys$>I)s*t'$s+gW4s,[2Fs-`nXs.]Ojs/Q+&s0r$C
+s2Y/`s3L^Ys(q^Ss)\5*s6TdSs7H><s*Xips*t'!s*jurs+:90s-<VVs/>t(s1\NUs4./,s5j:@
+s5F"7s4mY-s4@;#s3Uels31M^s1\NBs/l<qs-`nJs+^Q&s*"E\s(MFBs'>Y,s&/kjs%!*?s*r:B
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMc2YDq];k\HJZA+;q8S8kr;cMjrN#t"s/l1$qp,5fs0)I,s0;U0rPn`7q#LGos/Q+"
+s/l=(s0)I,s0;U1s0Vg7c+!_\s0D[.s/c7"s/,gjs.97[s-WhNs,m>As,-i3s+C?%q0i-hs*t&g
+s)\3^s)n?cs*4Qhs*F]ls*X_DrrDlos8Doos82iis7$'Vs6TdIs5!_+s3gqhs1nZDs/uC!s.B=X
+s,d8As$ZlRrBU<Gdm!MTq1/Krs+LE-s+p]3s,-i:s-3OVs%WMgs%r`ps0)I1s185:s'l">s(VLL
+s)7pWs)e9as*=QirI"Wns*juus+UK6s-itbs0D[<s2Y/fs4mY;s7$'[s7cQjq>L9is8)cks7lWg
+rV$9`s763[s8N&rs7u]gs763Ys6K^Ks5s at Bs5O(:s5*e2s4[M*s475"s3gqopWif_s2tA_q>Z#c
+lc+MUh>dKTV#Pr~>
+JcF-trr at WMaoB,)]0?%>JNiHbq0n#]r;c.Iq0r-'s*jbDY9*]es!7Ums""+%s"XO2s#L*Bs$6TP
+s%*/_s%iYms&K)$s',)$rO`$@rOr#Uqu?ZrpO<-ls+(-#s+gW3s,I&>s-NbXs.o[ns0D[:s2G#^
+s4I@]s1SHJs2+fTs2Y/]s2=lOs1\NGs1/0;s0D[/s/l=%mAg2es/l=)s02O.s0D[3s5*e9s6'FG
+s6BXQs7H?es7cQcs763]s7H?\s6K^Is5F!ds0VgUs3CYcs2+f4s/,h!s0_m;s1\NLs1\HHs1nTM
+s1nZLs1\NHs0hs1s/#a`s,I&2s*4Q]s().4s&/kks%!)Tj$(S6q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMaoB,)]0?%>JNiHbq0n#]r;c.Iq0r-'s*jbDi?&"AruqCes!7Ujs![mss"+1&s"OI/
+s#'g8s#U0Cs$-NMs$crYs%EAes%r_os&T/&s'#G,rETA.o3VB$rETA,s'#G*s&B"ns%<;\s$?ZJ
+s)\3Us'u(4s&/kgs+LE-s,$c5qu?Zrs.KCis/l=-s186Hs2k;fs4%)&s5<q>s69RLs7$']s7cQg
+s8)]ms*aons*+K`s)7pQs(D at As'Pe1s&]5!s%r_hs%!)Ws$?ZLks#,3s$?ZPs$m#Zs-E\Rs.97d
+s/H%$s0D[5s1A<Gs2=r]s4%)%s5!_5s5a3&s*+M7s7ZKfs8)bDs*jors*juqs*ap&s,d8Ls.fUq
+s0hsDs3:SrrSde7s5*e1s4IA%s3q"ps3:Sfs2Y/Ts1/09s/Q*ms-WhHs+UK$s)n?Zs(D@@s'5S*
+s&&ehs$m$=bC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMaoB,q];k\HJZA+;q8S,gr;cYnrN#t"s/l1$qp,5fs0)I,s0;U0s2Oj7rMKUmrM]aq
+s/Z1$s/uC*s02O.s0Ma4s0g1]s0hs6s02O*s/Z0us/#ahs.97[s-NbMs,d8>s,$c1s+:9#s*XWj
+s*juts)A!Ys)\3^s*"Eds7?9_s7cQhqu?Zrp\t-is8;oks7H?^s7$'Qs5F"6s4RG!s2Y/Rs0r$0
+s%r_hs%*/[s$crSq`t0GcT_5Ts+'uts+:9)s+p]5s,?u;s,m>Js.'+`s&&eps0)I1s1A<Js'u(@
+s(VLLs).jUs)S-]s*+KgrHnKjs*aors+13.s-3PUs/Z1/s2"`Zs475.s6K^Ss7?9bs82iprVZWk
+s8)cks7lWgrUp-]s763Zs8N&rs7lWes7--Ws6BXJs5s at Bs5O(:s5*e2s4[M*s475"s3gqopWif_
+s2tA_q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMaoB,)]0?%>JNiHbq0n#]r;c.Iq0r-'s*jbDY9*]es!7Ums""+%s"XO2s#L*Bs$6TP
+s%*/_s%iYms&K)$s',)$rO`$@rOr#Uqu?ZrpO<-ls+(-#s+gW3s,I&>s-NbXs.o[ns0D[:s2G#^
+s4I@]s1SHJs2+fTs2Y/]s2=lOs1\NGs1/0;s0D[/s/l=%mAg2es/l=)s02O.s0D[3s5*e9s6'FG
+s6BXQs7H?es7cQcs763]s7H?\s6K^Is5F!ds0VgUs3CYcs2+f4s/,h!s0_m;s1\NLs1\HHs1nTM
+s1nZLs1\NHs0hs1s/#a`s,I&2s*4Q]s().4s&/kks%!)Tj$(S6q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMaoB,)]0?%>JNiHbq0n#]r;c.Iq0r-'s*jbDi?&"AruqCes!7Ujs![mss"+1&s"OI/
+s#'g8s#U0Cs$-NMs$crYs%EAes%r_os&T/&s'#G,rETA.o3VB$rETA,s'#G*s&B"ns%<;\s$?ZJ
+s)\3Us'u(4s&/kgs+LE-s,$c5qu?Zrs.KCis/l=-s186Hs2k;fs4%)&s5<q>s69RLs7$']s7cQg
+s8)]ms*aons*+K`s)7pQs(D at As'Pe1s&]5!s%r_hs%!)Ws$?ZLks#,3s$?ZPs$m#Zs-E\Rs.97d
+s/H%$s0D[5s1A<Gs2=r]s4%)%s5!_5s5a3&s*+M7s7ZKfs8)bDs*jors*juqs*ap&s,d8Ls.fUq
+s0hsDs3:SrrSde7s5*e1s4IA%s3q"ps3:Sfs2Y/Ts1/09s/Q*ms-WhHs+UK$s)n?Zs(D@@s'5S*
+s&&ehs$m$=bC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMaoB,q];k\HJZA+;q8S,gr;cYnrN#t"s/l1$qp,5fs0)I,s0;U0s2Oj7rMKUmrM]aq
+s/Z1$s/uC*s02O.s0Ma4s0g1]s0hs6s02O*s/Z0us/#ahs.97[s-NbMs,d8>s,$c1s+:9#s*XWj
+s*juts)A!Ys)\3^s*"Eds7?9_s7cQhqu?Zrp\t-is8;oks7H?^s7$'Qs5F"6s4RG!s2Y/Rs0r$0
+s%r_hs%*/[s$crSq`t0GcT_5Ts+'uts+:9)s+p]5s,?u;s,m>Js.'+`s&&eps0)I1s1A<Js'u(@
+s(VLLs).jUs)S-]s*+KgrHnKjs*aors+13.s-3PUs/Z1/s2"`Zs475.s6K^Ss7?9bs82iprVZWk
+s8)cks7lWgrUp-]s763Zs8N&rs7lWes7--Ws6BXJs5s at Bs5O(:s5*e2s4[M*s475"s3gqopWif_
+s2tA_q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WM`W*i)]0?%>JNiHbq0mlYr;c:Mq0r9+qZ-YFq`_2)ru_7bs!@[ns"+1's"aU4s#U0D
+s$?ZRs%35as%iYms&T/&s'55'rOr6Fo7$T:rrDY>s*t'$s+UK/s,-i>s-`nWs.KCls0Ma&s/Q+(
+s1/0Fs24lUs2b5_s31Mas2=rTs2+fNs1JBBs0_m5s02O+s/bajs/Z1&s0;U1s0Vg6s0r$=s186B
+s6K^Os6]jUs7QEgs7lWes7?9\s763Xs69REs53k1s4..qs2k;Xs1A<*s/Q+)s186Es24lQs1eNJ
+qn`<Js1eTJs1&*6s/H$ks-3P?s*t&js(_RAs&T.qs%EA]s$>[/aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WM`W*i)]0?%>JNiHbq0mlYr;c:Mq0r9+qZ-YFq``s[ru_7as!%Ifs!@[ms!dt!s"==*
+s"aU2s#9s<s#g<Gs$?ZQs%!)]s%WMhs&/kss&f;)s',G,s'>/$rE]G.rEK;*s&f;!s%`Sds$crR
+s*Xifs(_R_s*t'!s+:9(s+^Q/qu?Zrs-s%_s/>t#s0_m=s2+fXs3CYps4dS4s5a4Ds6]jWs7H?a
+s*OQis*juos*+Kas)7pQs(D at As'G_0s&]4us%`Ses%*/Ys$H`MofiC?s$?ZOs$ZlVs%*/^s%WMh
+s&&eqs/uC.s1/0Ds2+fUs3(Ggs4%)%s5O(@s6BXOs7--^s8)cnrVccos*Ocns*aors*aoos+:9/
+s-<VUs/>t%s186Ks3L`"rS at M/s4[M)s4%(ss3L_is2tA_s2=rNs0hs3s/>sjs-NbFs+LE"s)e9X
+s(;:>s',M(s%r_fs$cs;bC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WM`W*iq];k\HJZA+;q8Rucr;cerrN#t"rN6%$qp,5fs0)I,qZ-Z9ql9[ms/,ams/>ss
+s/Q+#s/l=)s02O.s0Ma4s0^%Zs0_m4s0)I)s/Q*ts.o[gs.97Zs-NbLs,[2=s+p]/s+:9"rI"Ql
+rI4ccs)J'Zs6BXNs6p!Xs7?9as7lKkrrDZis8Duos7lWfs7H?Ys6'FCs5<q/s3CXRs'Pe0s&K(p
+s%<;]s$crTrB^HKs$+[js*juus+13%rIb-)s,$c8s,[2As-3PPs.B=fs/Q+&s0_m=s2+fWs(24D
+s(hXPs)A!Ys)\3_s*+Khq0`3js*k!&s,d8Ks.o\!s1A<Ms3Uf"s5a4Is763_s7cQirVQQirV?Kf
+s7ZKcs7H9]s763[s7$'fs82ijs7H?\s6]jOs60LFs5a4>s5<q6s4mY.s4IA&s4%(ss3UMcs31Mc
+s2b$9J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WM`W*i)]0?%>JNiHbq0mlYr;c:Mq0r9+qZ-YFq`_2)ru_7bs!@[ns"+1's"aU4s#U0D
+s$?ZRs%35as%iYms&T/&s'55'rOr6Fo7$T:rrDY>s*t'$s+UK/s,-i>s-`nWs.KCls0Ma&s/Q+(
+s1/0Fs24lUs2b5_s31Mas2=rTs2+fNs1JBBs0_m5s02O+s/bajs/Z1&s0;U1s0Vg6s0r$=s186B
+s6K^Os6]jUs7QEgs7lWes7?9\s763Xs69REs53k1s4..qs2k;Xs1A<*s/Q+)s186Es24lQs1eNJ
+qn`<Js1eTJs1&*6s/H$ks-3P?s*t&js(_RAs&T.qs%EA]s$>[/aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WM`W*i)]0?%>JNiHbq0mlYr;c:Mq0r9+qZ-YFq``s[ru_7as!%Ifs!@[ms!dt!s"==*
+s"aU2s#9s<s#g<Gs$?ZQs%!)]s%WMhs&/kss&f;)s',G,s'>/$rE]G.rEK;*s&f;!s%`Sds$crR
+s*Xifs(_R_s*t'!s+:9(s+^Q/qu?Zrs-s%_s/>t#s0_m=s2+fXs3CYps4dS4s5a4Ds6]jWs7H?a
+s*OQis*juos*+Kas)7pQs(D at As'G_0s&]4us%`Ses%*/Ys$H`MofiC?s$?ZOs$ZlVs%*/^s%WMh
+s&&eqs/uC.s1/0Ds2+fUs3(Ggs4%)%s5O(@s6BXOs7--^s8)cnrVccos*Ocns*aors*aoos+:9/
+s-<VUs/>t%s186Ks3L`"rS at M/s4[M)s4%(ss3L_is2tA_s2=rNs0hs3s/>sjs-NbFs+LE"s)e9X
+s(;:>s',M(s%r_fs$cs;bC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WM`W*iq];k\HJZA+;q8Rucr;cerrN#t"rN6%$qp,5fs0)I,qZ-Z9ql9[ms/,ams/>ss
+s/Q+#s/l=)s02O.s0Ma4s0^%Zs0_m4s0)I)s/Q*ts.o[gs.97Zs-NbLs,[2=s+p]/s+:9"rI"Ql
+rI4ccs)J'Zs6BXNs6p!Xs7?9as7lKkrrDZis8Duos7lWfs7H?Ys6'FCs5<q/s3CXRs'Pe0s&K(p
+s%<;]s$crTrB^HKs$+[js*juus+13%rIb-)s,$c8s,[2As-3PPs.B=fs/Q+&s0_m=s2+fWs(24D
+s(hXPs)A!Ys)\3_s*+Khq0`3js*k!&s,d8Ks.o\!s1A<Ms3Uf"s5a4Is763_s7cQirVQQirV?Kf
+s7ZKcs7H9]s763[s7$'fs82ijs7H?\s6]jOs60LFs5a4>s5<q6s4mY.s4IA&s4%(ss3UMcs31Mc
+s2b$9J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WM_>hQ)]0?%>JNiHbq0mlYrBC/[o03,%q#L at WrI4W-XWIKas!.Ojs!dt!s"FC.s#9s=
+s$$HLs$m#[s%WMis&8qus&oA-q-O(bm=+s4rrDM:s+(-%s+UK4s,d8Ds-<VSs.fUks/Z1*s1/0G
+s2+fTs3(Gfs3Uejs2k;\s2G#Ts1eTIs1/0<s0Ma1s0)I*s/c7$s/Q+"s/c7&s/uC*s0D[4s0r$<
+s180Cs1eTLrPAO(s763`s82ils7ZKas7--Ys6TdKs5O(6s4..qs2b5Vs186:s/#b!s0r$Bs2+fR
+s2"`Nqn`0Fs1eTGs0Ma,s.o[as,[26s*Ocbs(;:9s&8qks%*/WiBGA4q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WM_>hQ)]0?%>JNiHbq0mlYrBC/[o03,%q#L at WrI4W-i?&"@ruh=cs!.Ohs!Rgqs""+$
+s"FC-s"sa6s#C$?s$$HJs$QfUs%35`s%`Sjs&8qus&f;*rETA.mp?$"rET;*s'#G's&/kls%35S
+omZpks+13&s+L:LrrE(bs.01bs/H%&s0hs at s24lYs3Uess4mY3s5j9&s*+KgrHeEirI+Qls*Oci
+s)\3Ys(_RGs'l"7s&oA%s&&eks%EA_s$crSrBL<Is$H`Qs$crXs%35`s%WMgs%r_ps&]5's',M/
+s'YlJs3CYms4@;*s53k;s60LOs7?9bs8)cps8Duqs82cks7uV?rI"Wls*t')s,d8Ks.fUqs0_m@
+s2b5hs4[G)s4IA&s3q"qs3CYgs2tA_s2P)Us1A<<s/uC!s.B=Ws,?u1s*Oces(q^Hs'Yk1s&K(p
+s%35Ys*r4 at q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WM_>hQq];k\HJZA+;q8RucrMoers/Q+"rN,t"s/u=Gq#LH"s0DUCql9Uks/,ams/>st
+s/Z1%s/uC*s0;U0s0Vg6s0g+[s0Vg2s0)I(s/Q*ss.o[gs.01Ys-E\Js,R,;s+gW-s+12urI"Wn
+s*k!Vs5F"<s5j:Ds6BXOs7$'Zs7QEdqu?Zrn,E at bs8)cjs7--Ws)e9^s).jNs(D at Bs'Pe0s&B"q
+s%NG_s$Q`Ns$6TKaZf_hs+13&rIk3+s,-i:s,m>Fs-NbVs.]Ols0)I1s1JBKs2k;es(VLJs)%dT
+s)S-]rH8-bs*FKgs*aous,6oBs.B=js0_mAs2k;js5!_<s6fpYs7ZKfs82imrV?Ees7cQes7QEa
+rUTpWs7$'Ws8N&qs7cQbs6p!Ts6BXJs5s at Bs5O(:s5*e2s4[M*s475"s3gqopWif_s2tA_q>Z#c
+lc+MUh>dKTV#Pr~>
+JcF-trr at WM_>hQ)]0?%>JNiHbq0mlYrBC/[o03,%q#L at WrI4W-XWIKas!.Ojs!dt!s"FC.s#9s=
+s$$HLs$m#[s%WMis&8qus&oA-q-O(bm=+s4rrDM:s+(-%s+UK4s,d8Ds-<VSs.fUks/Z1*s1/0G
+s2+fTs3(Gfs3Uejs2k;\s2G#Ts1eTIs1/0<s0Ma1s0)I*s/c7$s/Q+"s/c7&s/uC*s0D[4s0r$<
+s180Cs1eTLrPAO(s763`s82ils7ZKas7--Ys6TdKs5O(6s4..qs2b5Vs186:s/#b!s0r$Bs2+fR
+s2"`Nqn`0Fs1eTGs0Ma,s.o[as,[26s*Ocbs(;:9s&8qks%*/WiBGA4q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WM_>hQ)]0?%>JNiHbq0mlYrBC/[o03,%q#L at WrI4W-i?&"@ruh=cs!.Ohs!Rgqs""+$
+s"FC-s"sa6s#C$?s$$HJs$QfUs%35`s%`Sjs&8qus&f;*rETA.mp?$"rET;*s'#G's&/kls%35S
+omZpks+13&s+L:LrrE(bs.01bs/H%&s0hs at s24lYs3Uess4mY3s5j9&s*+KgrHeEirI+Qls*Oci
+s)\3Ys(_RGs'l"7s&oA%s&&eks%EA_s$crSrBL<Is$H`Qs$crXs%35`s%WMgs%r_ps&]5's',M/
+s'YlJs3CYms4@;*s53k;s60LOs7?9bs8)cps8Duqs82cks7uV?rI"Wls*t')s,d8Ks.fUqs0_m@
+s2b5hs4[G)s4IA&s3q"qs3CYgs2tA_s2P)Us1A<<s/uC!s.B=Ws,?u1s*Oces(q^Hs'Yk1s&K(p
+s%35Ys*r4 at q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WM_>hQq];k\HJZA+;q8RucrMoers/Q+"rN,t"s/u=Gq#LH"s0DUCql9Uks/,ams/>st
+s/Z1%s/uC*s0;U0s0Vg6s0g+[s0Vg2s0)I(s/Q*ss.o[gs.01Ys-E\Js,R,;s+gW-s+12urI"Wn
+s*k!Vs5F"<s5j:Ds6BXOs7$'Zs7QEdqu?Zrn,E at bs8)cjs7--Ws)e9^s).jNs(D at Bs'Pe0s&B"q
+s%NG_s$Q`Ns$6TKaZf_hs+13&rIk3+s,-i:s,m>Fs-NbVs.]Ols0)I1s1JBKs2k;es(VLJs)%dT
+s)S-]rH8-bs*FKgs*aous,6oBs.B=js0_mAs2k;js5!_<s6fpYs7ZKfs82imrV?Ees7cQes7QEa
+rUTpWs7$'Ws8N&qs7cQbs6p!Ts6BXJs5s at Bs5O(:s5*e2s4[M*s475"s3gqopWif_s2tA_q>Z#c
+lc+MUh>dKTV#Pr~>
+JcF-trr at WM^&Q9)]0?%>JNiHbq0mlYq*+`Wq`afUrI4Q+rI4W-Wuh9`s!.Oks!n%#s"OI0s#9s>
+s$-NNs$m#\s%WMjs&B#"s'#.\m=+s4rrDG8rJ^c9s,m>Hs-WhYs/#aos/Z1*s186Gs2"`Qs2Y/`
+rR1_ks3(G`s2G#Us2"`Ks186=s0_a1s0Vg4s0;O,s0;U2s0hs<s1A<Ds1nNMs2FrYs2P)Ws7cQk
+s8)cis7H?^s6p!Os5F"2s3^khs2G#Rs1/08s/Z0ts0D[:s24lUs2+fOs1eTMs2+fOq7ls<s/uC"
+s.B=Ws,6o.s*+KZs'l"2s%r_es$ZlPiBGA4q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WM^&Q9)]0?%>JNiHbq0mlYq*+`Wq`afUrI4Q+rI4W-i?&"@ruh=bs!%Igs!Iaos!n%#
+s"FC,s"j[5s#C$>s#pBHs$H`Rs%!)\s%NGfs&&eqs&T/'rETA.m9]furET;*pHJ+rs*t'"qu?Zr
+s,m>Js.97ds/Z1)s0r$As24lZs(D at Js)A!Ys*"Efs*Ocos*OWjs*a]ls*aoos*"E_s).jOs(24<
+s',M*s&K(rrD*;es%WMbs%*/]s%EAds%iYls&8qts&]5(s'G_6s'u(?s(MFIs)%eqs6'FJs6p![
+s7lWms8Mims8)]hs7cQes7?28s*Ocns+UK5s-E\Vs/>t&s1/0Is3:Mos475#rR:ens3L_is3(Ga
+s2P)Ws1nZFs0D[*s.fUas-3PAs+:8ss)S-Ts().:s&oA$s%`Sbs$Qg9bC99eJUZp6JcFR+rrAkp
+J,~>
+JcF-trr at WM^&Q9q];k\HJZA+;q8Rucq5XAns/Z+"q#LH?s3L_Ks02O.s0DUCql9[ls/#[ks/5mq
+s/H%!s/c7's0)I,s0D[2s0_g6c+!_]s0Ma1s/uC's/Q*ss.o[fs.'+Ws-<VHs,I&9s+gW,s*t'Q
+s0D[2s0Vg6s5<q9s5O(?s60LKs6fpWs7H?bqu?ZrmJd-7s*aoos*=Whs*"E^s).jQs(VLDs'Pe0
+s&]4us%WMas$QfPs$6TKaZfYfs$6O:s+p]5s,[2Cs-<VSs.fUps0D[8s1\NNs2k;fs4@;*s)%dS
+s)S-]s*"?bs*4QjpO3'ss,d8Ls.o[ts1/0Is3:Sqs5F"Bs6p![s7cQhs8)cks7lQerV$9`s7?9]
+s7-'WrU9dSs8N&qs7cQbs6p!Ts6BXJs5s at Bs5O(:s5*e2s4[M*s475"s3gqopWif_s2tA_q>Z#c
+lc+MUh>dKTV#Pr~>
+JcF-trr at WM^&Q9)]0?%>JNiHbq0mlYq*+`Wq`afUrI4Q+rI4W-Wuh9`s!.Oks!n%#s"OI0s#9s>
+s$-NNs$m#\s%WMjs&B#"s'#.\m=+s4rrDG8rJ^c9s,m>Hs-WhYs/#aos/Z1*s186Gs2"`Qs2Y/`
+rR1_ks3(G`s2G#Us2"`Ks186=s0_a1s0Vg4s0;O,s0;U2s0hs<s1A<Ds1nNMs2FrYs2P)Ws7cQk
+s8)cis7H?^s6p!Os5F"2s3^khs2G#Rs1/08s/Z0ts0D[:s24lUs2+fOs1eTMs2+fOq7ls<s/uC"
+s.B=Ws,6o.s*+KZs'l"2s%r_es$ZlPiBGA4q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WM^&Q9)]0?%>JNiHbq0mlYq*+`Wq`afUrI4Q+rI4W-i?&"@ruh=bs!%Igs!Iaos!n%#
+s"FC,s"j[5s#C$>s#pBHs$H`Rs%!)\s%NGfs&&eqs&T/'rETA.m9]furET;*pHJ+rs*t'"qu?Zr
+s,m>Js.97ds/Z1)s0r$As24lZs(D at Js)A!Ys*"Efs*Ocos*OWjs*a]ls*aoos*"E_s).jOs(24<
+s',M*s&K(rrD*;es%WMbs%*/]s%EAds%iYls&8qts&]5(s'G_6s'u(?s(MFIs)%eqs6'FJs6p![
+s7lWms8Mims8)]hs7cQes7?28s*Ocns+UK5s-E\Vs/>t&s1/0Is3:Mos475#rR:ens3L_is3(Ga
+s2P)Ws1nZFs0D[*s.fUas-3PAs+:8ss)S-Ts().:s&oA$s%`Sbs$Qg9bC99eJUZp6JcFR+rrAkp
+J,~>
+JcF-trr at WM^&Q9q];k\HJZA+;q8Rucq5XAns/Z+"q#LH?s3L_Ks02O.s0DUCql9[ls/#[ks/5mq
+s/H%!s/c7's0)I,s0D[2s0_g6c+!_]s0Ma1s/uC's/Q*ss.o[fs.'+Ws-<VHs,I&9s+gW,s*t'Q
+s0D[2s0Vg6s5<q9s5O(?s60LKs6fpWs7H?bqu?ZrmJd-7s*aoos*=Whs*"E^s).jQs(VLDs'Pe0
+s&]4us%WMas$QfPs$6TKaZfYfs$6O:s+p]5s,[2Cs-<VSs.fUps0D[8s1\NNs2k;fs4@;*s)%dS
+s)S-]s*"?bs*4QjpO3'ss,d8Ls.o[ts1/0Is3:Sqs5F"Bs6p![s7cQhs8)cks7lQerV$9`s7?9]
+s7-'WrU9dSs8N&qs7cQbs6p!Ts6BXJs5s at Bs5O(:s5*e2s4[M*s475"s3gqopWif_s2tA_q>Z#c
+lc+MUh>dKTV#Pr~>
+JcF-trr at WMhuEY(h>blO]0?%>JNiHbq0mlYofi6QrBC%+q*+b+q`^u#ruqCfs!Rgrs"==+s"sa8
+s#g<Gs$QfVs%EAenNQ>hqu?Zro7$_+s-E\Ls-*JGs,m>Gs-WhUs.TIis/H%"s0Ma:s1nZNs24lU
+s2k;es3Uens3Ueis2k;]s2G#Ss1eTJs1S0 at s1A<ArO2a9s1A<Es1eTNs2OrYs31Ghs3CYgs2tA`
+s2=s2s7$'Qs5X.8s474qs2P)Qs186>s0;U(s.fUds.'+Xs2Y/Ys2+fOs1eNKqnN0Fs1/07s/H$m
+s-itMs+gW&s)\3Rs'Pe,s%WM_s$>O+aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuEY(h>blO]0?%>JNiHbq0mlYofi6QrBC%+q*+b+q``s[ru_7`ruqCds!.Ojs![ms
+s"+1&s"XO0s#'g8s#L*@s#pBIs$H`Ss%!)]s%NGgs&/krs&f;*s'5S0m9]`snNQ>hqu?Zrs,?u@
+s-`nZs/,gts0DZ0s'bq>s(q^Ss)n?`s*+Kis*aoss*jims*a]lrI+]ns*=Wes)A!Rs(;:?rF,S2
+rF,_6s'5S+s&B"qs&8qts&f;)s',M0s'bq<s(MFIs(q^Rs)S-^s*=Qjq>UEmq>C9gs7ZKcs7H?_
+s7--Vs69Q/s+:9/s-*JPs.o[rs0_m at s2b5gs4./!rR:eps3Ueks3:Ses2k;]s24lQs1SHAs02O%
+s.KC[s,m><s+12qs)J'Rs'u(8s&f;"s%WM`s$Qg9bC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuEYph>bmB];k\HJZA+;q8Rucor at lhs/c7&qp,5fs0)I,s0;U0rPn`7s.o[krMKUm
+s/>sss/Q+#s/l=(s02O.s0Ma4s0_m8bI at MZs0Ma0s/uC's/Q*ss.fUds.'+Vs-3PFs,Hu[s0)I,
+s0;U0s0Vg6s5*e5s5<q;s5s at Gs6TdSs763_qu?ZroD\E3s*aoos*F]fs)\3[s).jNs().<s'G_.
+s&B"os%<;\s$H`MaZfYfs$6TMs$H`Qs,R,Ds-s%_s/,gus0_m>s2=rYs3(Ghs4@;-s5O(>s5s?'
+s*"EerH\Ehs*OQis+LE3s-NbYs/H%)s1SHPs3Uf#s5X.Es7$']s7lQgs7lWgs7ZEas7H?_s763[
+rU9^QrU'Xas82ijs7?9Zs6]jOs60LFs5a4>s5<q6s4mY.s4IA&s4%(ss3UMcs31Mcs2b$9J]@#q
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuEY(h>blO]0?%>JNiHbq0mlYofi6QrBC%+q*+b+q`^u#ruqCfs!Rgrs"==+s"sa8
+s#g<Gs$QfVs%EAenNQ>hqu?Zro7$_+s-E\Ls-*JGs,m>Gs-WhUs.TIis/H%"s0Ma:s1nZNs24lU
+s2k;es3Uens3Ueis2k;]s2G#Ss1eTJs1S0 at s1A<ArO2a9s1A<Es1eTNs2OrYs31Ghs3CYgs2tA`
+s2=s2s7$'Qs5X.8s474qs2P)Qs186>s0;U(s.fUds.'+Xs2Y/Ys2+fOs1eNKqnN0Fs1/07s/H$m
+s-itMs+gW&s)\3Rs'Pe,s%WM_s$>O+aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuEY(h>blO]0?%>JNiHbq0mlYofi6QrBC%+q*+b+q``s[ru_7`ruqCds!.Ojs![ms
+s"+1&s"XO0s#'g8s#L*@s#pBIs$H`Ss%!)]s%NGgs&/krs&f;*s'5S0m9]`snNQ>hqu?Zrs,?u@
+s-`nZs/,gts0DZ0s'bq>s(q^Ss)n?`s*+Kis*aoss*jims*a]lrI+]ns*=Wes)A!Rs(;:?rF,S2
+rF,_6s'5S+s&B"qs&8qts&f;)s',M0s'bq<s(MFIs(q^Rs)S-^s*=Qjq>UEmq>C9gs7ZKcs7H?_
+s7--Vs69Q/s+:9/s-*JPs.o[rs0_m at s2b5gs4./!rR:eps3Ueks3:Ses2k;]s24lQs1SHAs02O%
+s.KC[s,m><s+12qs)J'Rs'u(8s&f;"s%WM`s$Qg9bC99eJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuEYph>bmB];k\HJZA+;q8Rucor at lhs/c7&qp,5fs0)I,s0;U0rPn`7s.o[krMKUm
+s/>sss/Q+#s/l=(s02O.s0Ma4s0_m8bI at MZs0Ma0s/uC's/Q*ss.fUds.'+Vs-3PFs,Hu[s0)I,
+s0;U0s0Vg6s5*e5s5<q;s5s at Gs6TdSs763_qu?ZroD\E3s*aoos*F]fs)\3[s).jNs().<s'G_.
+s&B"os%<;\s$H`MaZfYfs$6TMs$H`Qs,R,Ds-s%_s/,gus0_m>s2=rYs3(Ghs4@;-s5O(>s5s?'
+s*"EerH\Ehs*OQis+LE3s-NbYs/H%)s1SHPs3Uf#s5X.Es7$']s7lQgs7lWgs7ZEas7H?_s763[
+rU9^QrU'Xas82ijs7?9Zs6]jOs60LFs5a4>s5<q6s4mY.s4IA&s4%(ss3UMcs31Mcs2b$9J]@#q
+JcFR+rrAkpJ,~>
+OoPF]_uK`:JcFX-pO;$"eUG+oq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-V]Pj]s!@[ns""+%s"aU3
+s#L*Bks"K`qu?ZrqgSROs/l=!s.KC^s.01Zs-itUs-WhTs.'+]s.fUls/Q+%s0Vg;s1eTMs24lU
+s2Y/_rQYAfrQkMhs3:Ses2k#Vs2k;^s2P)Ws2"ZLs1eTNs2=rYs31Aes4%##s4@;#s3^kjs2P)R
+s1/0bs474ss2tAZs1A<;s0)I(s/H$ms-s%Ss-3PHs,d8=s2"`Ms1\HHqnE*Cs0Vg-s.o[cs-<VB
+s+:8qs)7pJs'5S&s%<;Yh*/r0q>Z"pl[FEbh>dKTV#Pr~>
+OoPF]_uK`:JcFX-pO;$"eUG+oq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-i?&"@ruh=bs!%Ifs!@[m
+s!dt!s"==*s"aU1s#'g8s#L*@s$$HJs$QfTs%*/^s%WMhs&/kts&oA,s'>/$ks"K`qu?Zrs+gW6
+s-3O^s&f;+s'Yk:s(24Fs)A![qfr-hs*t'#s+13"s*Ocns*a]lrI+]ns*Ocls*4Qes)e-ZrGqdV
+s)S-Ws(_RGs'l"7s',M0s'Yk9s().Bs(hXPs)J'\s*+Khs*Xits+:9%s*t&trVliqq>:3es7QE_
+s7--Ys6fpPs5s@@s5<p=s-`n\s/H%'s186Is3:Sns3pqps3^kns3:Mcs2tA_s2=rRs1eTGs0_m/
+s/#ads-E\Fs+gW(s*+K^s(MFAs'>Y+s&&eis%!)Vs*r4 at q>Z"pl[FEbh>dKTV#Pr~>
+OoPF]_uK`:JcFX-pVu+je],5$q8RucmAg!%JZA=ArrE)"s/c7&s3:Mfs3L_Ks02O.s0DUCql9[l
+s/#[ks/5mqs/H$us/Z1$s/uC*s0;U0s0Va4s0g+[s0_m4s02O+s/c7"s/,gjs.97lq5sUus0)I-
+s0D[2s0Vg]s5!_3s5F"=s6'FIs6]jUs7?-frrDrql$iY\s*F]is*"E`s).jOs(D at Bs'Pe0s&K(q
+s%NG`s$ZlPb<Gkhs$6TOs$m#[s%NGhs/>t$s0Ma7s1eTRs3CYms4./$s5*e;s69RLs6]jSs7?8:
+rHnQlrI+Wns+(-,s-*JRs/,h"s1/0Hs3(Gls5*e;s6TdVs7cQhrV6Ees7ZKcs7H9]s7--Ys6p!U
+qsF at Ks8N&qs7cQbs6p!Ts6BXJs5s at Bs5O(:s5*e2s4[M*s475"s3gqopWif_s2tA_q>Z#clc+MU
+h>dKTV#Pr~>
+OoPF]_uK`:JcFX-pO;$"eUG+oq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-V]Pj]s!@[ns""+%s"aU3
+s#L*Bks"K`qu?ZrqgSROs/l=!s.KC^s.01Zs-itUs-WhTs.'+]s.fUls/Q+%s0Vg;s1eTMs24lU
+s2Y/_rQYAfrQkMhs3:Ses2k#Vs2k;^s2P)Ws2"ZLs1eTNs2=rYs31Aes4%##s4@;#s3^kjs2P)R
+s1/0bs474ss2tAZs1A<;s0)I(s/H$ms-s%Ss-3PHs,d8=s2"`Ms1\HHqnE*Cs0Vg-s.o[cs-<VB
+s+:8qs)7pJs'5S&s%<;Yh*/r0q>Z"pl[FEbh>dKTV#Pr~>
+OoPF]_uK`:JcFX-pO;$"eUG+oq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-i?&"@ruh=bs!%Ifs!@[m
+s!dt!s"==*s"aU1s#'g8s#L*@s$$HJs$QfTs%*/^s%WMhs&/kts&oA,s'>/$ks"K`qu?Zrs+gW6
+s-3O^s&f;+s'Yk:s(24Fs)A![qfr-hs*t'#s+13"s*Ocns*a]lrI+]ns*Ocls*4Qes)e-ZrGqdV
+s)S-Ws(_RGs'l"7s',M0s'Yk9s().Bs(hXPs)J'\s*+Khs*Xits+:9%s*t&trVliqq>:3es7QE_
+s7--Ys6fpPs5s@@s5<p=s-`n\s/H%'s186Is3:Sns3pqps3^kns3:Mcs2tA_s2=rRs1eTGs0_m/
+s/#ads-E\Fs+gW(s*+K^s(MFAs'>Y+s&&eis%!)Vs*r4 at q>Z"pl[FEbh>dKTV#Pr~>
+OoPF]_uK`:JcFX-pVu+je],5$q8RucmAg!%JZA=ArrE)"s/c7&s3:Mfs3L_Ks02O.s0DUCql9[l
+s/#[ks/5mqs/H$us/Z1$s/uC*s0;U0s0Va4s0g+[s0_m4s02O+s/c7"s/,gjs.97lq5sUus0)I-
+s0D[2s0Vg]s5!_3s5F"=s6'FIs6]jUs7?-frrDrql$iY\s*F]is*"E`s).jOs(D at Bs'Pe0s&K(q
+s%NG`s$ZlPb<Gkhs$6TOs$m#[s%NGhs/>t$s0Ma7s1eTRs3CYms4./$s5*e;s69RLs6]jSs7?8:
+rHnQlrI+Wns+(-,s-*JRs/,h"s1/0Hs3(Gls5*e;s6TdVs7cQhrV6Ees7ZKcs7H9]s7--Ys6p!U
+qsF at Ks8N&qs7cQbs6p!Ts6BXJs5s at Bs5O(:s5*e2s4[M*s475"s3gqopWif_s2tA_q>Z#clc+MU
+h>dKTV#Pr~>
+PQ1R]nc/Cbg].9RJcFX-o7#Tsfm^Osq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-V]Pj[s!%Ihs!dt!
+iBHXXqu?\GqnE*?s0D[+s/#ahs.fUgs.TIcs.B=bs.fUjs/5mrs/c7(s0_m;s1eTLs2+fSs2P)[
+s2k;as31Mgs3Ueps4@;$s4%(ts3gYjs3Ueks315[s3CYmrRV#%s5!_4s4mY,s4%(rs3:S`s1nZF
+s0hs6s24lNs1&*5s/>sms.KC_s-itOs,R,<s,-i4s+^Q)s+'dVs0r$3s/5mhs-WhHs+UK#s)S-R
+s'bq0s%r_cs$5C(aaX'cJUZp6JcFR+rrAkpJ,~>
+PQ1R]nc/Cbg].9RJcFX-o7#Tsfm^Osq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-i?&"@ruh=br?D7e
+s!Rgqs""+$s"==*s"aU2s#0m:s#U0Bs$-NLs$QfUs%*/_s%WMis&B#"s'#G.q-N#Dm=+s4ruqDH
+rE0))s'Yk<s(VFIs).jXs*4QkrHnQls+(-&s+C?&s*juqs*a]lrI+]qs+:9)s+^K-rJ(?+rIk-'
+s+^Q,s+(,ss*=Wes)J'Us(_RHs(VLKs).jVs)n?ds*FWjs*t'%s+UK+s+:9(s+:9#s8Dupqtg?e
+s7H?]s6fpSs6K^Js5X.:s4dS+s4%(Gs0)I3s1eTTqpPMls3Uels3:Ses2k;^s2Y/Zs2+fMs1JBA
+s0;U(s.TI]s-*J at s+LE"s)n?Zs(D@?s'5S)s%r_gs%!)Vs*r4 at q>Z"pl[FEbh>dKTV#Pr~>
+PQ1R]nc/Cbg].9RJcFX-o>]\ffuCY(q8RucmAg!%JZA=ArrE"us/c7Es3:Shs3L_Ks02I,rPn`7
+s.o[krMKUms/>mqs/Z1$s/l=)s02O/s0Ma4s0_g6bI at MYs0D[/s/l1!q5jIqs/uC*s02O.rNlIV
+s4mY3s5O(?s60LKs6fpVqu?ZrhgYTRs*Ocks)e9\s).jPs(;:>s'5S*s&8qns%EA^s$ZlQd6 at Rp
+s$H`Ss%!)]s%NGgs&8qus&oA-s1nZQs2k;fs4IA,s53k9s5j:Is7$'Zs7H?as7cQjs8;nFpO<-s
+s,d8Ks.fUqs0hsBs2b5fs4[M2s5s at Ks7H9brV-?cs7QEas7?9]s7--Ys6p!Us6]^MrTjL_s82ij
+s7?9Zs6]jOs60LEs5X.<s5<q6s4mY.s4IA&s4%(ss3UMcs31Mcs2b$9J]@#qJcFR+rrAkpJ,~>
+PQ1R]nc/Cbg].9RJcFX-o7#Tsfm^Osq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-V]Pj[s!%Ihs!dt!
+iBHXXqu?\GqnE*?s0D[+s/#ahs.fUgs.TIcs.B=bs.fUjs/5mrs/c7(s0_m;s1eTLs2+fSs2P)[
+s2k;as31Mgs3Ueps4@;$s4%(ts3gYjs3Ueks315[s3CYmrRV#%s5!_4s4mY,s4%(rs3:S`s1nZF
+s0hs6s24lNs1&*5s/>sms.KC_s-itOs,R,<s,-i4s+^Q)s+'dVs0r$3s/5mhs-WhHs+UK#s)S-R
+s'bq0s%r_cs$5C(aaX'cJUZp6JcFR+rrAkpJ,~>
+PQ1R]nc/Cbg].9RJcFX-o7#Tsfm^Osq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-i?&"@ruh=br?D7e
+s!Rgqs""+$s"==*s"aU2s#0m:s#U0Bs$-NLs$QfUs%*/_s%WMis&B#"s'#G.q-N#Dm=+s4ruqDH
+rE0))s'Yk<s(VFIs).jXs*4QkrHnQls+(-&s+C?&s*juqs*a]lrI+]qs+:9)s+^K-rJ(?+rIk-'
+s+^Q,s+(,ss*=Wes)J'Us(_RHs(VLKs).jVs)n?ds*FWjs*t'%s+UK+s+:9(s+:9#s8Dupqtg?e
+s7H?]s6fpSs6K^Js5X.:s4dS+s4%(Gs0)I3s1eTTqpPMls3Uels3:Ses2k;^s2Y/Zs2+fMs1JBA
+s0;U(s.TI]s-*J at s+LE"s)n?Zs(D@?s'5S)s%r_gs%!)Vs*r4 at q>Z"pl[FEbh>dKTV#Pr~>
+PQ1R]nc/Cbg].9RJcFX-o>]\ffuCY(q8RucmAg!%JZA=ArrE"us/c7Es3:Shs3L_Ks02I,rPn`7
+s.o[krMKUms/>mqs/Z1$s/l=)s02O/s0Ma4s0_g6bI at MYs0D[/s/l1!q5jIqs/uC*s02O.rNlIV
+s4mY3s5O(?s60LKs6fpVqu?ZrhgYTRs*Ocks)e9\s).jPs(;:>s'5S*s&8qns%EA^s$ZlQd6 at Rp
+s$H`Ss%!)]s%NGgs&8qus&oA-s1nZQs2k;fs4IA,s53k9s5j:Is7$'Zs7H?as7cQjs8;nFpO<-s
+s,d8Ks.fUqs0hsBs2b5fs4[M2s5s at Ks7H9brV-?cs7QEas7?9]s7--Ys6p!Us6]^MrTjL_s82ij
+s7?9Zs6]jOs60LEs5X.<s5<q6s4mY.s4IA&s4%(ss3UMcs31Mcs2b$9J]@#qJcFR+rrAkpJ,~>
+Q2g^]oDeI`h>dKTJcFX-msa0oh0ut"q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-V&n;Rm=,*6rVlhH
+qnE*Ds0r$5s/Q*rs/>sss/>sqs/,gps/Q+#s/u=)s0;U3s1/0Ds1nZOs24lUs2P)[s2tAcs3CYj
+s3q##s4dS1q;)#+s5!_0s4RG(rRLeps475'rS%;,s5!_4s4mY,s4..ss3:Sas1nZFs0hs7s0D[/
+s/Z0rs.01Ws-<VIs,[2<s+^Q,s+:9$pO<"Rs1/08s/Q*ns-itNs+p])s*"EYs'u(6s&B"ls$YU*
+aaX'cJUZp6JcFR+rrAkpJ,~>
+Q2g^]oDeI`h>dKTJcFX-msa0oh0ut"q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-i?&"@ruh7`s!%If
+s!Iaos!n%"s"47's"OI.s"sa6s#C$>s#g<Gs$?ZQs$m#[s%EAes&/kss&f;+ffnePs1SHBs0M_Y
+s(VLErFGqBs)%dUqfDd]s*Ocrs*surs+(-'rIk3%s*jurrI4cts+UK/s,-i9s,d8Eqiq,GrKmPM
+qj7>Ms-NbLs,R,;s+gW,s+(,ts*Ocis)\3^s)n?cs*=Wjs*Ocns+:9+s+p]1s+^Q3s,$c1s+:9"
+s8)]is7ZKas7$'Ts6BXJs5a4<s4mY+s3q"ns2k;[s1JBMs3:Sls3^kns3L_js3:Ses2b5[rPefT
+s1nZIs186=s/uC!s.B=Xs,d8:s+12rs)\3Vs(;:=s',M's%iYfs%!)Vs*r4 at q>Z"pl[FEbh>dKT
+V#Pr~>
+Q2g^]oDeI`h>dKTJcFX-n&F8bh8[(,q8RucmAg!%JZA=ArrE)!s/Z1$s3(Gds3CYjrNH7*s0;OB
+ql9[ls/#[ks/5mqrMfgss/Z1%s/uC+s0;U1s0Va4rO0t[pT"%iq5jUus/uC*s02O.rNcCSs4[M/
+s5<q;s5s at Gs6K^Ps*surrrE(Hs*`^Ps*Ocjs)n?]s(q^Js'l"7s&oA%s&&eks%EA_s$ZlQs$,C)
+s$-NLs$H`Rs$m#[s%EAes%r_os&T/&s'>Y4s'u(?s(DA]s4[M4s5s at Gs6TdRs7?9bs7u]ls8D]k
+qgSQts,I&Es.B=js0D[;s2G#`s4@;.s5a4Fs7$']s7u]is7cQes7QEas7?9]s7-'Ws6p!Us6]jQ
+rTjFIs8N&qs7cQbs6p!Ts6BXIs5a4>s5<q7s5!_1s4[M*s475"s3gqopWif_s2tA_q>Z#clc+MU
+h>dKTV#Pr~>
+Q2g^]oDeI`h>dKTJcFX-msa0oh0ut"q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-V&n;Rm=,*6rVlhH
+qnE*Ds0r$5s/Q*rs/>sss/>sqs/,gps/Q+#s/u=)s0;U3s1/0Ds1nZOs24lUs2P)[s2tAcs3CYj
+s3q##s4dS1q;)#+s5!_0s4RG(rRLeps475'rS%;,s5!_4s4mY,s4..ss3:Sas1nZFs0hs7s0D[/
+s/Z0rs.01Ws-<VIs,[2<s+^Q,s+:9$pO<"Rs1/08s/Q*ns-itNs+p])s*"EYs'u(6s&B"ls$YU*
+aaX'cJUZp6JcFR+rrAkpJ,~>
+Q2g^]oDeI`h>dKTJcFX-msa0oh0ut"q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-i?&"@ruh7`s!%If
+s!Iaos!n%"s"47's"OI.s"sa6s#C$>s#g<Gs$?ZQs$m#[s%EAes&/kss&f;+ffnePs1SHBs0M_Y
+s(VLErFGqBs)%dUqfDd]s*Ocrs*surs+(-'rIk3%s*jurrI4cts+UK/s,-i9s,d8Eqiq,GrKmPM
+qj7>Ms-NbLs,R,;s+gW,s+(,ts*Ocis)\3^s)n?cs*=Wjs*Ocns+:9+s+p]1s+^Q3s,$c1s+:9"
+s8)]is7ZKas7$'Ts6BXJs5a4<s4mY+s3q"ns2k;[s1JBMs3:Sls3^kns3L_js3:Ses2b5[rPefT
+s1nZIs186=s/uC!s.B=Xs,d8:s+12rs)\3Vs(;:=s',M's%iYfs%!)Vs*r4 at q>Z"pl[FEbh>dKT
+V#Pr~>
+Q2g^]oDeI`h>dKTJcFX-n&F8bh8[(,q8RucmAg!%JZA=ArrE)!s/Z1$s3(Gds3CYjrNH7*s0;OB
+ql9[ls/#[ks/5mqrMfgss/Z1%s/uC+s0;U1s0Va4rO0t[pT"%iq5jUus/uC*s02O.rNcCSs4[M/
+s5<q;s5s at Gs6K^Ps*surrrE(Hs*`^Ps*Ocjs)n?]s(q^Js'l"7s&oA%s&&eks%EA_s$ZlQs$,C)
+s$-NLs$H`Rs$m#[s%EAes%r_os&T/&s'>Y4s'u(?s(DA]s4[M4s5s at Gs6TdRs7?9bs7u]ls8D]k
+qgSQts,I&Es.B=js0D[;s2G#`s4@;.s5a4Fs7$']s7u]is7cQes7QEas7?9]s7-'Ws6p!Us6]jQ
+rTjFIs8N&qs7cQbs6p!Ts6BXIs5a4>s5<q7s5!_1s4[M*s475"s3gqopWif_s2tA_q>Z#clc+MU
+h>dKTV#Pr~>
+S,`-]p&Fsjq>^BnhuE]VJcFX-l[IakiI8C&q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-Wuf_RomZqS
+rOi0Bs8)cns8N%Jq7cmAs0hs2s/Z1%s/uC*s/uC(s0)I-s0Ma5rO;g:rOMs at s1\NJs2"`Ps24lV
+s2tAcs3CYjs3q##s5!_4s5O(@pZVY>s5X.<qqqG0s4dM+s4RG+s4mY2s53k3s4IA%s3gqms2Y/U
+s186>s0Vg4s0)I.s1&)ls,I&9s+gW-s+0Kbs1JB=s/l<ts.01Ts,?u0s*=W`s(;:;s&T.qs%!)R
+gHN`.q>Z"pl[FEbh>dKTV#Pr~>
+S,`-]p&Fsjq>^BnhuE]VJcFX-l[IakiI8C&q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-i?%q>ruh7`
+s!.Ois!Rgqs""+#s"47(s"XO0s#'g8s#L*?s#pBHs$H`Rs%!)\s%NGhdm!GRs.TI]s-*JBs2P)V
+s2"^us*+Kaqf2XYs*4KhrHeKns+C9%s+13#rIk3'rIY'%s+p]6s,d8Fs-WhSs-itYs.KCcrM'=e
+s/#ams/>mqrMomss/#ahs.01Xs-<VIs,d8>s+p]-s*juos*4QhrHnQos+UK1s,6o7s,I&As,d8?
+rJCQ/s+::Gs7ZK`s6p!Rs60LEs5<q2s4..rs31Mas24lNs186<rQtSjs3CSfs2tA_s2P)Ws24lR
+s2"`Ls1A<@s0D[*s.fUas-<VEs+^Q's*4Q`s(hXGs'Pe0s&B"ns%<;]s$Qg9bC99eJUZp6JcFR+
+rrAkpJ,~>
+S,`-]p&Fsjq>^BnhuE]VJcFX-lc.i^iPrL0q8RucmAg!%JZA=ArrE)!rN#tAs31Ges/uC*rNQ7?
+ql9[ls/#[ks/5mqrMfgss/Z1$s/uC*s0;U0s0Ma4rO)U4e[OqGq5aIqs/l=(s0)I,qm$+Ns4IA+
+s5*e7s)J'\s*"Ees+C?&s*jtJs*O]ls*`^Ps*Xiks)\3Xs(VLDs'Yk3s&f;#s&&eks%EA^s$ZlR
+s$,g5s$-NKs$H`Qs$crXs%35`s%WMhs&/krs&]5's'>Y4s'u(As(_RMs).jUs)J)*s7$'[s7ZKf
+s82-]s+(-+s-*JQs/#b!s1&*Gs3(Gls5!_8s60LMs7?9ds7lWgs7ZKcs7H?_s763[s7$!Us6fpS
+s6TdOrTa at Gs8N&qs7cQbs6p!Ts6BXHs5X.<s53k5s4mY/s4RG)s475"s3gqopWif_s2tA_q>Z#c
+lc+MUh>dKTV#Pr~>
+S,`-]p&Fsjq>^BnhuE]VJcFX-l[IakiI8C&q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-Wuf_RomZqS
+rOi0Bs8)cns8N%Jq7cmAs0hs2s/Z1%s/uC*s/uC(s0)I-s0Ma5rO;g:rOMs at s1\NJs2"`Ps24lV
+s2tAcs3CYjs3q##s5!_4s5O(@pZVY>s5X.<qqqG0s4dM+s4RG+s4mY2s53k3s4IA%s3gqms2Y/U
+s186>s0Vg4s0)I.s1&)ls,I&9s+gW-s+0Kbs1JB=s/l<ts.01Ts,?u0s*=W`s(;:;s&T.qs%!)R
+gHN`.q>Z"pl[FEbh>dKTV#Pr~>
+S,`-]p&Fsjq>^BnhuE]VJcFX-l[IakiI8C&q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-i?%q>ruh7`
+s!.Ois!Rgqs""+#s"47(s"XO0s#'g8s#L*?s#pBHs$H`Rs%!)\s%NGhdm!GRs.TI]s-*JBs2P)V
+s2"^us*+Kaqf2XYs*4KhrHeKns+C9%s+13#rIk3'rIY'%s+p]6s,d8Fs-WhSs-itYs.KCcrM'=e
+s/#ams/>mqrMomss/#ahs.01Xs-<VIs,d8>s+p]-s*juos*4QhrHnQos+UK1s,6o7s,I&As,d8?
+rJCQ/s+::Gs7ZK`s6p!Rs60LEs5<q2s4..rs31Mas24lNs186<rQtSjs3CSfs2tA_s2P)Ws24lR
+s2"`Ls1A<@s0D[*s.fUas-<VEs+^Q's*4Q`s(hXGs'Pe0s&B"ns%<;]s$Qg9bC99eJUZp6JcFR+
+rrAkpJ,~>
+S,`-]p&Fsjq>^BnhuE]VJcFX-lc.i^iPrL0q8RucmAg!%JZA=ArrE)!rN#tAs31Ges/uC*rNQ7?
+ql9[ls/#[ks/5mqrMfgss/Z1$s/uC*s0;U0s0Ma4rO)U4e[OqGq5aIqs/l=(s0)I,qm$+Ns4IA+
+s5*e7s)J'\s*"Ees+C?&s*jtJs*O]ls*`^Ps*Xiks)\3Xs(VLDs'Yk3s&f;#s&&eks%EA^s$ZlR
+s$,g5s$-NKs$H`Qs$crXs%35`s%WMhs&/krs&]5's'>Y4s'u(As(_RMs).jUs)J)*s7$'[s7ZKf
+s82-]s+(-+s-*JQs/#b!s1&*Gs3(Gls5!_8s60LMs7?9ds7lWgs7ZKcs7H?_s763[s7$!Us6fpS
+s6TdOrTa at Gs8N&qs7cQbs6p!Ts6BXHs5X.<s53k5s4mY/s4RG)s475"s3gqopWif_s2tA_q>Z#c
+lc+MUh>dKTV#Pr~>
+S,`-]p&Fsjq>^BnhuE]VJcFX-kC27ekC1$,q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-ZQ@:RrI4dQ
+s0Vg6s0hs=rOMs<s7cQhs8DtIpV-[>s0Vg1s0D[2s0Vg6s0Vg7s1&*?s1JBGs1J<BrOW$@s1SHH
+s1nZNs2=rZs31Mgs3L_os4IA-s5F"=s6'FKs7$!Ys763Zs6fpRs60LEs5F"6qqM)%s4[M/s53k4
+s4RG's3gqms2Y/Us1A<?s0_m4s/l=+s0hs>s1eS`hgYTus-WhIs+^Q$s)\3Ss'bq1s&&egs$GC&
+aaX'cJUZp6JcFR+rrAkpJ,~>
+S,`-]p&Fsjq>^BnhuE]VJcFX-kC27ekC1$,q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-h]De>r?2+`
+s!%Igs!Iaos!n%!s"+1&s"FC,s"j[4s#9s<s#^6Es$6TNb<GlRs0hs5s/u=#s.fUas-E]2s31Mf
+s%EBGs+:9#s*jurs*k!!rIb-%s+13%s+gW/rIt9)s+C?,s,$c7s,R,As-E\Ss.B=ds/5gos/Z1&
+s0)I,s0;U0s0Ma4s0hs;s180As1A<?s0Ma/s/Q*qs.]Ocs-s%Ss,m>As,$c/s*t&qs*k!#s+p]7
+s,R,?s-3POs-WhNs-!DHs-!DAs,-i3s7--Vs60LBs5!_-s3q"ns2k;[s2"`Ks1&*9s0)I(s/H$p
+s3:Sfs2tA_s2P)Vs2"ZLs1eTHs186;s/c6ts.KC\s-*JAs+LE#s*"E\s(_REs'G_.s&8qls%35[
+s$Ha8bC99eJUZp6JcFR+rrAkpJ,~>
+S,`-]p&Fsjq>^BnhuE]VJcFX-kJl?XkJk-6q8RucmAg!%JZA=ArrE)!rN#tAs31GerN?1(s02IA
+ql9[ls/#[ks/5mqrMfgss/Z1$s/l=)s02O/s0M[2rO)[6h7)@CqlBaus/l=(s0)C*rNZ=Os*FWh
+s*4Qds*+Kfs*F^#s+UK'rrE(Es*F]ls*XcnjaR)Vs*aons)n?\s(hXIs'u(9s',M*s&K(rs%WMd
+s%*/Ys$H`MofiC?s$?ZPs$ZlVs%*/]s%NGfs%r_ms&8qus&f;*s'>Y4s'u(@s(_RNs)A!Zs)e9a
+s*4Qis*XkFhu<YMs/c7.s1\NSs3^l$s5F"@s6TdUs7cQhs7cQes7QEas7?9]s7--Ys6ojQs6]jQ
+s6K^Ms69LGs8N&ps7cQbs6p!Ss69RFs5O(:s5*e3s4dS-s4IA's475"s3gqopWif_s2tA_q>Z#c
+lc+MUh>dKTV#Pr~>
+S,`-]p&Fsjq>^BnhuE]VJcFX-kC27ekC1$,q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-ZQ@:RrI4dQ
+s0Vg6s0hs=rOMs<s7cQhs8DtIpV-[>s0Vg1s0D[2s0Vg6s0Vg7s1&*?s1JBGs1J<BrOW$@s1SHH
+s1nZNs2=rZs31Mgs3L_os4IA-s5F"=s6'FKs7$!Ys763Zs6fpRs60LEs5F"6qqM)%s4[M/s53k4
+s4RG's3gqms2Y/Us1A<?s0_m4s/l=+s0hs>s1eS`hgYTus-WhIs+^Q$s)\3Ss'bq1s&&egs$GC&
+aaX'cJUZp6JcFR+rrAkpJ,~>
+S,`-]p&Fsjq>^BnhuE]VJcFX-kC27ekC1$,q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-h]De>r?2+`
+s!%Igs!Iaos!n%!s"+1&s"FC,s"j[4s#9s<s#^6Es$6TNb<GlRs0hs5s/u=#s.fUas-E]2s31Mf
+s%EBGs+:9#s*jurs*k!!rIb-%s+13%s+gW/rIt9)s+C?,s,$c7s,R,As-E\Ss.B=ds/5gos/Z1&
+s0)I,s0;U0s0Ma4s0hs;s180As1A<?s0Ma/s/Q*qs.]Ocs-s%Ss,m>As,$c/s*t&qs*k!#s+p]7
+s,R,?s-3POs-WhNs-!DHs-!DAs,-i3s7--Vs60LBs5!_-s3q"ns2k;[s2"`Ks1&*9s0)I(s/H$p
+s3:Sfs2tA_s2P)Vs2"ZLs1eTHs186;s/c6ts.KC\s-*JAs+LE#s*"E\s(_REs'G_.s&8qls%35[
+s$Ha8bC99eJUZp6JcFR+rrAkpJ,~>
+S,`-]p&Fsjq>^BnhuE]VJcFX-kJl?XkJk-6q8RucmAg!%JZA=ArrE)!rN#tAs31GerN?1(s02IA
+ql9[ls/#[ks/5mqrMfgss/Z1$s/l=)s02O/s0M[2rO)[6h7)@CqlBaus/l=(s0)C*rNZ=Os*FWh
+s*4Qds*+Kfs*F^#s+UK'rrE(Es*F]ls*XcnjaR)Vs*aons)n?\s(hXIs'u(9s',M*s&K(rs%WMd
+s%*/Ys$H`MofiC?s$?ZPs$ZlVs%*/]s%NGfs%r_ms&8qus&f;*s'>Y4s'u(@s(_RNs)A!Zs)e9a
+s*4Qis*XkFhu<YMs/c7.s1\NSs3^l$s5F"@s6TdUs7cQhs7cQes7QEas7?9]s7--Ys6ojQs6]jQ
+s6K^Ms69LGs8N&ps7cQbs6p!Ss69RFs5O(:s5*e3s4dS-s4IA's475"s3gqopWif_s2tA_q>Z#c
+lc+MUh>dKTV#Pr~>
+PQ1R]p](0lp&FsjiW&oXJcFX-iI9\al[HH0q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-],npTs%iZm
+s/Q+"s/c7&s/uC-s0r$:s0_n!s7ZKhs*s^Us1/0;s0r$<s1/*?qn;s at s1SBDrO`*Bs1\HFs1\NM
+s2Y/_s3CYjs3q#$s5!_7s5j:Fs6fpXs7cKhs7cQas6fpPs6'FAs5*e2s4dS-rRV#$s4dS0s4dS-
+s475!s3L_ds2+fJs1&*:s02O)s0)I2s1SHHfm`sXs+(,ms)%dHs'5S's%NG\f07<*q>Z"pl[FEb
+h>dKTV#Pr~>
+PQ1R]p](0lp&FsjiW&oXJcFX-iI9\al[HH0q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-h&cS<r?2+a
+s!.Ois!Rgqs!n%!s"47's"OI.s"sa5s#7n\s'G`>s1JBBs0_m3rN6+$s/,ggs4IA%s473Qs-*JE
+s,I&:s,-i5s,6o9rJLQ1qhkE3s,?u;s-*JKs-WhTs.01as/5n!s0D[5rODm<s1A<Es1\NJs1nZN
+s2+fSs2P)[s3(Gfs3:Sbs2+fLs1&*9s0;U,s/Q*qs.TIas-`nOs,[2:s+gW/s,6o=s-!DKs-s%]
+s.B=\s.01^s.01Ws-*JGs6BXGs5<q3s474ts31M`s2+fMs186>s0D[,s/H$qs.fUes.'+Us2b5Z
+s24lQs1eNHs1SHEs1&*5s/>sls.'+Ts,[2:s+:8ts)e9Ys(VLCs'>Y,s&/kjs%*/Ys$?[7bC99e
+JUZp6JcFR+rrAkpJ,~>
+PQ1R]p](0lp&FsjiW&oXJcFX-iPsdTlc-Q:q8RucmAg!%JZA=ArrE)!rN#tAs31GerN?+&rPn`7
+s.o[krMKUms/>mqs/Q$us/l=(s02O.s0D[2rNuU4rO1mueZ/YMs/c7&s/uC*qlp*\s+p].s+C?'
+s+13#s*aoms*Ocos,6o6s+LCPs*4Kfs*O]lrI+9ds*t'!s+1,uqge]rs*Ocls*"E^s)%dMs(24=
+s'G_0s&]5!s&&eks%EA^s$crSs$6TKs$6TNs$QfTs%!)\s%<;bs%`Sis&/krs&T/%s'#G.s'Pe7
+s().Bs(_RNs)A![s*+Kgs*OcoqgR5ts1A<Ls3CYrs5<q=s6K^Rs7H9bs7ZKcs7H?_s763[s7$'W
+s6fdOs6TdOs6BRIs60LGs8Duos7ZKas6p!Rs60LDs5F"8s5!_1s4[M+s4 at 5#s4%(ss3UMcs31Mc
+s2b$9J]@#qJcFR+rrAkpJ,~>
+PQ1R]p](0lp&FsjiW&oXJcFX-iI9\al[HH0q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-],npTs%iZm
+s/Q+"s/c7&s/uC-s0r$:s0_n!s7ZKhs*s^Us1/0;s0r$<s1/*?qn;s at s1SBDrO`*Bs1\HFs1\NM
+s2Y/_s3CYjs3q#$s5!_7s5j:Fs6fpXs7cKhs7cQas6fpPs6'FAs5*e2s4dS-rRV#$s4dS0s4dS-
+s475!s3L_ds2+fJs1&*:s02O)s0)I2s1SHHfm`sXs+(,ms)%dHs'5S's%NG\f07<*q>Z"pl[FEb
+h>dKTV#Pr~>
+PQ1R]p](0lp&FsjiW&oXJcFX-iI9\al[HH0q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-h&cS<r?2+a
+s!.Ois!Rgqs!n%!s"47's"OI.s"sa5s#7n\s'G`>s1JBBs0_m3rN6+$s/,ggs4IA%s473Qs-*JE
+s,I&:s,-i5s,6o9rJLQ1qhkE3s,?u;s-*JKs-WhTs.01as/5n!s0D[5rODm<s1A<Es1\NJs1nZN
+s2+fSs2P)[s3(Gfs3:Sbs2+fLs1&*9s0;U,s/Q*qs.TIas-`nOs,[2:s+gW/s,6o=s-!DKs-s%]
+s.B=\s.01^s.01Ws-*JGs6BXGs5<q3s474ts31M`s2+fMs186>s0D[,s/H$qs.fUes.'+Us2b5Z
+s24lQs1eNHs1SHEs1&*5s/>sls.'+Ts,[2:s+:8ts)e9Ys(VLCs'>Y,s&/kjs%*/Ys$?[7bC99e
+JUZp6JcFR+rrAkpJ,~>
+PQ1R]p](0lp&FsjiW&oXJcFX-iPsdTlc-Q:q8RucmAg!%JZA=ArrE)!rN#tAs31GerN?+&rPn`7
+s.o[krMKUms/>mqs/Q$us/l=(s02O.s0D[2rNuU4rO1mueZ/YMs/c7&s/uC*qlp*\s+p].s+C?'
+s+13#s*aoms*Ocos,6o6s+LCPs*4Kfs*O]lrI+9ds*t'!s+1,uqge]rs*Ocls*"E^s)%dMs(24=
+s'G_0s&]5!s&&eks%EA^s$crSs$6TKs$6TNs$QfTs%!)\s%<;bs%`Sis&/krs&T/%s'#G.s'Pe7
+s().Bs(_RNs)A![s*+Kgs*OcoqgR5ts1A<Ls3CYrs5<q=s6K^Rs7H9bs7ZKcs7H?_s763[s7$'W
+s6fdOs6TdOs6BRIs60LGs8Duos7ZKas6p!Rs60LDs5F"8s5!_1s4[M+s4 at 5#s4%(ss3UMcs31Mc
+s2b$9J]@#qJcFR+rrAkpJ,~>
+iW&iVmJm+bci<qDp](0lp&FsjiW&oXJcFX-h1"8]ms_l4q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-
+_&gW\s#pBIs$QfVs%<<^s.TIfs.o[ks/,grs0)I/s0D[ps7?9bs*XFPs186CrOr6Ds1A<DrO`$>
+s1J<Dqn2sDs1nZLs1\NKs2G#[s3CYks4%)%s5*e8s6'FJqsOLOs6fpXs7H?\s6TdLs5X.9rS7G+
+s4./!s475's4IA&s4./!s3q"os2k;Xs1JBAs0Vg2s/uC.s1A6Dq0r at WhgYTEs(D@=s&]4rs%!)R
+f07<*q>Z"pl[FEbh>dKTV#Pr~>
+iW&iVmJm+bci<qDp](0lp&FsjiW&oXJcFX-h1"8]ms_l4q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-
+h&cM:ruh=bs!.Ohs!Iaos!dsts"+1%s"==*a$06(rP&<Es1&*9qlp+(s/>tVs5*e5s'l#%s.97Z
+s-WbOrKdJJs-*JFrK.&Cs-3PKrKdJSs.]Ohs/5mrs/uC.s1/0Ds2=rXs2b/\s3(Ges3CYjrQtSm
+pXK5ks3^kjs2P)Vs1eTHs1&*9s0;U-s/Q*ps.97Zs-NbOs-<VKs-`nYs.]OkrMKUms/>sns.B7[
+s5X.9s4RG%s/Z1Bs2G#Rs1A<?s0Ma0s/c6us.fUes.01Xs-E\Js,I&8s2"`MqnE*Ds1A<<s/c6r
+s.97Xs-!D?s+UK&s*4Qbs)%dLs'l"5s&]4ts%EA^s$ZlQs*r4 at q>Z"pl[FEbh>dKTV#Pr~>
+iW&iVmJm+bci<qDp](0lp&FsjiW&oXJcFX-h8\@Pn&Du>q8RucmAg!%JZA=ArrE)!rN#tAs31Ge
+ql]t&rPn`7s.o[krMKOks/>mqs/Q+"s/c7's0)I-s0DU0rNuU4rO21(c`7#Gs/c7&s/uBos.'+W
+s-E\Ks-!DAs,?u9s,-i5s+UK's*aoss,[2>s+p[Xs*"Eds*=WjrHnQlqgJKos+'uts+:9's+LE'
+s+'uts+(,ss*F]is*"Eas)A!Ss(MFDs'bq5s'#G(s&B"prD*;es%`Sds%!)\s%<;bs%`Sks&/kr
+s&T/%s'#G.s'Pe7s().As(VLKs)%dTs)e9bs*F]nomZ`9s*il)s4%))s5X.Cs6]jWrV-?cs7QEa
+s7?9]s7--Ys6p!Us6]XKs6K^Ms69RIs6'FEs8;oms7QE_s6fpPs6'FBs5<q6s4mY/s4RG)qptes
+s3gqopWif_s2tA_q>Z#clc+MUh>dKTV#Pr~>
+iW&iVmJm+bci<qDp](0lp&FsjiW&oXJcFX-h1"8]ms_l4q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-
+_&gW\s#pBIs$QfVs%<<^s.TIfs.o[ks/,grs0)I/s0D[ps7?9bs*XFPs186CrOr6Ds1A<DrO`$>
+s1J<Dqn2sDs1nZLs1\NKs2G#[s3CYks4%)%s5*e8s6'FJqsOLOs6fpXs7H?\s6TdLs5X.9rS7G+
+s4./!s475's4IA&s4./!s3q"os2k;Xs1JBAs0Vg2s/uC.s1A6Dq0r at WhgYTEs(D@=s&]4rs%!)R
+f07<*q>Z"pl[FEbh>dKTV#Pr~>
+iW&iVmJm+bci<qDp](0lp&FsjiW&oXJcFX-h1"8]ms_l4q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-
+h&cM:ruh=bs!.Ohs!Iaos!dsts"+1%s"==*a$06(rP&<Es1&*9qlp+(s/>tVs5*e5s'l#%s.97Z
+s-WbOrKdJJs-*JFrK.&Cs-3PKrKdJSs.]Ohs/5mrs/uC.s1/0Ds2=rXs2b/\s3(Ges3CYjrQtSm
+pXK5ks3^kjs2P)Vs1eTHs1&*9s0;U-s/Q*ps.97Zs-NbOs-<VKs-`nYs.]OkrMKUms/>sns.B7[
+s5X.9s4RG%s/Z1Bs2G#Rs1A<?s0Ma0s/c6us.fUes.01Xs-E\Js,I&8s2"`MqnE*Ds1A<<s/c6r
+s.97Xs-!D?s+UK&s*4Qbs)%dLs'l"5s&]4ts%EA^s$ZlQs*r4 at q>Z"pl[FEbh>dKTV#Pr~>
+iW&iVmJm+bci<qDp](0lp&FsjiW&oXJcFX-h8\@Pn&Du>q8RucmAg!%JZA=ArrE)!rN#tAs31Ge
+ql]t&rPn`7s.o[krMKOks/>mqs/Q+"s/c7's0)I-s0DU0rNuU4rO21(c`7#Gs/c7&s/uBos.'+W
+s-E\Ks-!DAs,?u9s,-i5s+UK's*aoss,[2>s+p[Xs*"Eds*=WjrHnQlqgJKos+'uts+:9's+LE'
+s+'uts+(,ss*F]is*"Eas)A!Ss(MFDs'bq5s'#G(s&B"prD*;es%`Sds%!)\s%<;bs%`Sks&/kr
+s&T/%s'#G.s'Pe7s().As(VLKs)%dTs)e9bs*F]nomZ`9s*il)s4%))s5X.Cs6]jWrV-?cs7QEa
+s7?9]s7--Ys6p!Us6]XKs6K^Ms69RIs6'FEs8;oms7QE_s6fpPs6'FBs5<q6s4mY/s4RG)qptes
+s3gqopWif_s2tA_q>Z#clc+MUh>dKTV#Pr~>
+iW&cTn,N=dci<qDp](0lp&FsjiW&oXJcFX-fm_iYo7";8q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-
+aWAJds"==+s"sa7s#L*@s$-NMs$csOs-NbSs.'+[s.97bs/5n!s0)Ijs7$'\s*=XVpV-[@s1JBD
+s1/0>s0r$:s180>rODm=s1SHHqn<$Es2+fRs1nZOs2=rXs31Mis4./'rSI;+s5*e5s5X.As69RM
+s69REs53k4s4dS*s3q"rrRLqrs3^kns3L_is2tA_s2=rPs1JBBs0hs6s1&*DrP&)Vs186Cs1R<=
+s'#G#s%<;XeNV*(q>Z"pl[FEbh>dKTV#Pr~>
+iW&cTn,N=dci<qDp](0lp&FsjiW&oXJcFX-fm_iYo7";8q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-
+gE-;8ruqCds!7Ujs!Rgps!buPmp>n*s1A<?qm6=0s0;Uhs6'FGs(hS6s/5mos/#aks.]Ocs.01Z
+s-WbNs.'+[qk*ncs/l=*s0Ma5s1A<Gs2=rZs3Ueqs47/%s4[M.s5!_3s4m5"s4IA's475#s3gqn
+s3(G_s2=rSs1nZGs0Vg0s/Z0us/5morM0Chs/H%"s/Z1%s/uC*s/Z$ps4mY+s3gqls0;U5s1JBB
+s0Vg1s/c7"s/#ahs.01Ys-NbLs,d8 at s,6o5s+LE'qnE*Ds1&*5s/>sjs-itPs,I&6s+12ss)n?\
+s(hXIs'bq3s&T.rs%<;\s$QfPs*r4 at q>Z"pl[FEbh>dKTV#Pr~>
+iW&cTn,N=dci<qDp](0lp&FsjiW&oXJcFX-fuDqLo>\DBq8RucmAg!%JZA=ArrE)!rN#tAs31Ge
+q6'\9ql9Ujs/#[ks/5gos/Gsss/c7&s0)I,s0;U0rNlO2rO)U4q7"DEs/l=$s/>sos.]Oes.97[
+s-NbTs-NbNs-*JGs,m>@s+p]-s+:98s,m>?rs8XLs*"Ees*=Qhs*Ocps+(-$s+LE,s+gQ+s+UK-
+s+gW.q1AWts*aons*4Qfs*"Eas)S-Xs(hXIs'u"8pL!r.s'Pe1s&]5"s&&eos&B#!s&f;)s'5S1
+s'Yk:s(;:Fs(q^Qs)A!Zs*"Eds*=Wjs*XipomZ`9s+:9$s*s;4s8Doos82ims5j:Gs6p![s7ZEa
+s7H?_s763[s7$'Ws6fpSs6TRIs6BXKs60FEs5a4Ws7lWds7--Vs69RGs5O(9s5!_0s4[M*s4@/!
+s4%(ss3USes3:Sfs2tA_q>Z#clc+MUh>dKTV#Pr~>
+iW&cTn,N=dci<qDp](0lp&FsjiW&oXJcFX-fm_iYo7";8q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-
+aWAJds"==+s"sa7s#L*@s$-NMs$csOs-NbSs.'+[s.97bs/5n!s0)Ijs7$'\s*=XVpV-[@s1JBD
+s1/0>s0r$:s180>rODm=s1SHHqn<$Es2+fRs1nZOs2=rXs31Mis4./'rSI;+s5*e5s5X.As69RM
+s69REs53k4s4dS*s3q"rrRLqrs3^kns3L_is2tA_s2=rPs1JBBs0hs6s1&*DrP&)Vs186Cs1R<=
+s'#G#s%<;XeNV*(q>Z"pl[FEbh>dKTV#Pr~>
+iW&cTn,N=dci<qDp](0lp&FsjiW&oXJcFX-fm_iYo7";8q0mlYm6:>pJNiZhrrDp[q0r-'rI4W-
+gE-;8ruqCds!7Ujs!Rgps!buPmp>n*s1A<?qm6=0s0;Uhs6'FGs(hS6s/5mos/#aks.]Ocs.01Z
+s-WbNs.'+[qk*ncs/l=*s0Ma5s1A<Gs2=rZs3Ueqs47/%s4[M.s5!_3s4m5"s4IA's475#s3gqn
+s3(G_s2=rSs1nZGs0Vg0s/Z0us/5morM0Chs/H%"s/Z1%s/uC*s/Z$ps4mY+s3gqls0;U5s1JBB
+s0Vg1s/c7"s/#ahs.01Ys-NbLs,d8 at s,6o5s+LE'qnE*Ds1&*5s/>sjs-itPs,I&6s+12ss)n?\
+s(hXIs'bq3s&T.rs%<;\s$QfPs*r4 at q>Z"pl[FEbh>dKTV#Pr~>
+iW&cTn,N=dci<qDp](0lp&FsjiW&oXJcFX-fuDqLo>\DBq8RucmAg!%JZA=ArrE)!rN#tAs31Ge
+q6'\9ql9Ujs/#[ks/5gos/Gsss/c7&s0)I,s0;U0rNlO2rO)U4q7"DEs/l=$s/>sos.]Oes.97[
+s-NbTs-NbNs-*JGs,m>@s+p]-s+:98s,m>?rs8XLs*"Ees*=Qhs*Ocps+(-$s+LE,s+gQ+s+UK-
+s+gW.q1AWts*aons*4Qfs*"Eas)S-Xs(hXIs'u"8pL!r.s'Pe1s&]5"s&&eos&B#!s&f;)s'5S1
+s'Yk:s(;:Fs(q^Qs)A!Zs*"Eds*=Wjs*XipomZ`9s+:9$s*s;4s8Doos82ims5j:Gs6p![s7ZEa
+s7H?_s763[s7$'Ws6fpSs6TRIs6BXKs60FEs5a4Ws7lWds7--Vs69RGs5O(9s5!_0s4[M*s4@/!
+s4%(ss3USes3:Sfs2tA_q>Z#clc+MUh>dKTV#Pr~>
+iW&WPoDeahci<qDp](0lp&FsjoDegjnc/UhJcFX-eUHEUpO9_<q0mlYm6:>pJNiZhrrDp[q0r-'
+rI4W-d2p=ls!.Ois!Rgqs!n%#s"OI.s#'g8s#U0Cs$6U at s,I&?s-3JIs-it[s/#aqs6K^Ps7-,4
+s1&*As1\NGs186>rO)[6s0Vg4s0D[0s0Va6rO2a9s1A6DrOr6Hs2+fSs2+fSs2Y/^s31Gds3CSh
+pX&rds3Ueps4@;)s5!_5s5X.;s5!_.s4..ts3^kqs3Uejs31Gbs2Y)WrP\`Ps1SHDs1&*Bs1eNH
+q0r at Qs1/0 at s1&*<hgYSodltm&q>Z"pl[FEbh>dKTV#Pr~>
+iW&WPoDeahci<qDp](0lp&FsjoDegjnc/UhJcFX-eUHEUpO9_<q0mlYm6:>pJNiZhrrDp[q0r-'
+rI4W-fcL/8ruh=cs!,QJs',A*mp>h(s18*9s0r$<s7?9[s7-,2s0Va4s0;U+s/H$ps.fUis.]Od
+rLNt_s/5gos/H%%s0hs?s1eTNs2Y/`s3^kss4mY3s5O(>rTF4Cs5j:@s5NY.s5*e3s4mY/s4mY1
+s4[M)s4..us3Uehs2G#Rs1A<As1&*;s0)I*s0)I,s0;U0s0Vg6s0hs6qm$1Ns3Uehs2P)Js1J<I
+s2=r9s/#ahs.97[s-NbMs-!DDs,R,<s,6o5s+LE'rI4d\s1JB=s/c6rs.'+Ts,d8;s+C?"s*+K`
+s)%dLs().:s'#G&s%iYds$crTs$?[7bC99eJUZp6JcFR+rrAkpJ,~>
+iW&WPoDeahci<qDp](0lp&FsjoDegjnc/UhJcFX-e]-MHpVshFq8RucmAg!%JZA=ArrE)!rN#tA
+s31Geq6'\9ql9UjrMBIis/5gos/H$us/Z1%s/uC+s0;O.rNlO2rO)[6a/]0Hs0Ma2s0;U.s/uC&
+s/>sps.o[is.KC^s/#ahs.97\s-s%Vs-<VGs,6o3s-WhOs,d6hs*Ocjs*+Khs*aots+L?*s+p]4
+s,6o9s,-i3s+p]3s,-i4s+U?&s+:9"s*Ocks*4Qfs)n?`s)S-\s)S!Vq/H:Ps)A!Ss(VLEs'bq6
+s',M.s'G_5s'l"=s(D at Gs)%dUs)e9as*+Khq0W-hs*aQhq>UDKs+LE)s+UK.oD\dgrVZ]mrV?Kg
+s7cQes7H?]s7ZKcs7H9]s763[s7$'Ws6fpSs6TdOq<IqCs60LGs5s at As8)cis7?9[s6TdLs5j:>
+s5*e2s4[M+s4@(ts4%(ss3USes31Mds2k;^q>Z#clc+MUh>dKTV#Pr~>
+iW&WPoDeahci<qDp](0lp&FsjoDegjnc/UhJcFX-eUHEUpO9_<q0mlYm6:>pJNiZhrrDp[q0r-'
+rI4W-d2p=ls!.Ois!Rgqs!n%#s"OI.s#'g8s#U0Cs$6U at s,I&?s-3JIs-it[s/#aqs6K^Ps7-,4
+s1&*As1\NGs186>rO)[6s0Vg4s0D[0s0Va6rO2a9s1A6DrOr6Hs2+fSs2+fSs2Y/^s31Gds3CSh
+pX&rds3Ueps4@;)s5!_5s5X.;s5!_.s4..ts3^kqs3Uejs31Gbs2Y)WrP\`Ps1SHDs1&*Bs1eNH
+q0r at Qs1/0 at s1&*<hgYSodltm&q>Z"pl[FEbh>dKTV#Pr~>
+iW&WPoDeahci<qDp](0lp&FsjoDegjnc/UhJcFX-eUHEUpO9_<q0mlYm6:>pJNiZhrrDp[q0r-'
+rI4W-fcL/8ruh=cs!,QJs',A*mp>h(s18*9s0r$<s7?9[s7-,2s0Va4s0;U+s/H$ps.fUis.]Od
+rLNt_s/5gos/H%%s0hs?s1eTNs2Y/`s3^kss4mY3s5O(>rTF4Cs5j:@s5NY.s5*e3s4mY/s4mY1
+s4[M)s4..us3Uehs2G#Rs1A<As1&*;s0)I*s0)I,s0;U0s0Vg6s0hs6qm$1Ns3Uehs2P)Js1J<I
+s2=r9s/#ahs.97[s-NbMs-!DDs,R,<s,6o5s+LE'rI4d\s1JB=s/c6rs.'+Ts,d8;s+C?"s*+K`
+s)%dLs().:s'#G&s%iYds$crTs$?[7bC99eJUZp6JcFR+rrAkpJ,~>
+iW&WPoDeahci<qDp](0lp&FsjoDegjnc/UhJcFX-e]-MHpVshFq8RucmAg!%JZA=ArrE)!rN#tA
+s31Geq6'\9ql9UjrMBIis/5gos/H$us/Z1%s/uC+s0;O.rNlO2rO)[6a/]0Hs0Ma2s0;U.s/uC&
+s/>sps.o[is.KC^s/#ahs.97\s-s%Vs-<VGs,6o3s-WhOs,d6hs*Ocjs*+Khs*aots+L?*s+p]4
+s,6o9s,-i3s+p]3s,-i4s+U?&s+:9"s*Ocks*4Qfs)n?`s)S-\s)S!Vq/H:Ps)A!Ss(VLEs'bq6
+s',M.s'G_5s'l"=s(D at Gs)%dUs)e9as*+Khq0W-hs*aQhq>UDKs+LE)s+UK.oD\dgrVZ]mrV?Kg
+s7cQes7H?]s7ZKcs7H9]s763[s7$'Ws6fpSs6TdOq<IqCs60LGs5s at As8)cis7?9[s6TdLs5j:>
+s5*e2s4[M+s4@(ts4%(ss3USes31Mds2k;^q>Z#clc+MUh>dKTV#Pr~>
+iW&QNp&Fsjci<qDp](0lp&Fsjnc/Ofp&G$lJcFX-d=1!QqgQ. at q0mlYm6:>pJNiZhrrDp[q0r-'
+rI4W-f,hsrr>tt]s!%Igs!Iaos!Rgqs"+1&s"XO0s#'g9s#^71s+C?+s,-c7s-!DKs.01as60LJ
+s6fo-s0D[2s0_m6s0D[.s/l=&rNH7(s/l=&s0)I/s0_g4s0r$=s1JBHs1SHHs1nZOs24lTs2G#U
+s2+fOq7lsFq8*$Fs2"`Rs2Y/_s3CYls4%)"s4RG)s4%(qs3L_js3(;^s2Y/WqniBJs1\HHs1SBG
+rP&)Vs0Va5q6/\)eNV*(q>Z"pl[FEbh>dKTV#Pr~>
+iW&QNp&Fsjci<qDp](0lp&Fsjnc/Ofp&G$lJcFX-d=1!QqgQ. at q0mlYm6:>pJNiZhrrDp[q0r-'
+rI4W-f,hsrs&])#qca#*nQu%*s1S<?s186Bs8;ils*XjWrODm8s0;U+s/H$qs/H$us/5gks/Q+&
+qm-73s1\NPs3(Gfs3q##s5!_7s60LJs69LGs6'FGs6BXKs60(:s5a4?s5O(;s5O";rT=. at s5F"5
+s474ts3(G_s2G#Rs1/*<s1/*;s186Ds1\<@s31Mas2=rPs1JBKs2G#Ts2=rWs2k;0s-WhPs-3PH
+s,d8 at s,?u8s,$c3s+LE'q0r at Js/>sis-WhLs,?u3s*t&os)\3Ys(_RFs'bq5s&f;"s%`Sbs$crT
+s$?[7bC99eJUZp6JcFR+rrAkpJ,~>
+iW&QNp&Fsjci<qDp](0lp&Fsjnc/Ofp&G$lJcFX-dDk)Dqo67Jq8RucmAg!%JZA=ArrE)!rN#tA
+s31Geq6'\9ql9OhrMBOkrMT[orMfgts/c7's0)I,s0;O.s0Ma4a/]*Is0hs8s0Vg4rNcI.s0)I(
+s/H$ss/,gls.TIqs/Q*ts/#ajs.TI`s-WhMs,[2Ms-`nOrt>?`rIFp#s+^Q1s,I&>rJgi<s,m>E
+s,[2=s,6o9s,I&:s+p]0rIk3's*t&ss*O]is*Ocos*suuqh"j!rIFits+:9$s*aoms*"E_s).jQ
+s(VFDs(MFIs)%dTs)e9brHS?hs*jutrI4]qs*s]jq>UDOs,$c3s,R, at s-!DHs8Moos8;ims8)ck
+s7cQes7QEas7?9\s6fpRs7?3[rUKpWs6p!Us6]jQs6K^Mp$)M?s6'FDs5O(Ss7ZK`s6p!Rs6'FC
+s5<q6s4mY.s4I(ss4%(ss3UYgs3:Ses2tA_s2Xs8J]@#qJcFR+rrAkpJ,~>
+iW&QNp&Fsjci<qDp](0lp&Fsjnc/Ofp&G$lJcFX-d=1!QqgQ. at q0mlYm6:>pJNiZhrrDp[q0r-'
+rI4W-f,hsrr>tt]s!%Igs!Iaos!Rgqs"+1&s"XO0s#'g9s#^71s+C?+s,-c7s-!DKs.01as60LJ
+s6fo-s0D[2s0_m6s0D[.s/l=&rNH7(s/l=&s0)I/s0_g4s0r$=s1JBHs1SHHs1nZOs24lTs2G#U
+s2+fOq7lsFq8*$Fs2"`Rs2Y/_s3CYls4%)"s4RG)s4%(qs3L_js3(;^s2Y/WqniBJs1\HHs1SBG
+rP&)Vs0Va5q6/\)eNV*(q>Z"pl[FEbh>dKTV#Pr~>
+iW&QNp&Fsjci<qDp](0lp&Fsjnc/Ofp&G$lJcFX-d=1!QqgQ. at q0mlYm6:>pJNiZhrrDp[q0r-'
+rI4W-f,hsrs&])#qca#*nQu%*s1S<?s186Bs8;ils*XjWrODm8s0;U+s/H$qs/H$us/5gks/Q+&
+qm-73s1\NPs3(Gfs3q##s5!_7s60LJs69LGs6'FGs6BXKs60(:s5a4?s5O(;s5O";rT=. at s5F"5
+s474ts3(G_s2G#Rs1/*<s1/*;s186Ds1\<@s31Mas2=rPs1JBKs2G#Ts2=rWs2k;0s-WhPs-3PH
+s,d8 at s,?u8s,$c3s+LE'q0r at Js/>sis-WhLs,?u3s*t&os)\3Ys(_RFs'bq5s&f;"s%`Sbs$crT
+s$?[7bC99eJUZp6JcFR+rrAkpJ,~>
+iW&QNp&Fsjci<qDp](0lp&Fsjnc/Ofp&G$lJcFX-dDk)Dqo67Jq8RucmAg!%JZA=ArrE)!rN#tA
+s31Geq6'\9ql9OhrMBOkrMT[orMfgts/c7's0)I,s0;O.s0Ma4a/]*Is0hs8s0Vg4rNcI.s0)I(
+s/H$ss/,gls.TIqs/Q*ts/#ajs.TI`s-WhMs,[2Ms-`nOrt>?`rIFp#s+^Q1s,I&>rJgi<s,m>E
+s,[2=s,6o9s,I&:s+p]0rIk3's*t&ss*O]is*Ocos*suuqh"j!rIFits+:9$s*aoms*"E_s).jQ
+s(VFDs(MFIs)%dTs)e9brHS?hs*jutrI4]qs*s]jq>UDOs,$c3s,R, at s-!DHs8Moos8;ims8)ck
+s7cQes7QEas7?9\s6fpRs7?3[rUKpWs6p!Us6]jQs6K^Mp$)M?s6'FDs5O(Ss7ZK`s6p!Rs6'FC
+s5<q6s4mY.s4I(ss4%(ss3UYgs3:Ses2tA_s2Xs8J]@#qJcFR+rrAkpJ,~>
+iW&iVs8Vfnq>^Bnci<qDp](0lp&FsjmJm+bq>^HpJcFX-c$nLK]0?%>JNiHbq0mlYo030Sq`ah)
+q*+b+q``mYa$0/;ru_7`s!%Igr?hOjs![mss"47(s"XO0s#0n!s*4Qks*t'$s+UK0s,[2Fs-iuF
+s5O(>s(DA0s/>sts/c7#s/5mns.o[mrMfgqs/5mss/uC,rNcI2s0r$>s1SHHs1eTLs1\NFs1/0>
+s0r$9s0MU.qm$%(rNZC.s0_m:s1JBHs2+fSs2P)[s3(Gfs3L_js31McrQ5)\s2=rQs1\NJs1\B@
+s1A<ErP/<Fq0r at Ks0Ma.q5=7gs.%nogHN`.q>Z"pl[FEbh>dKTV#Pr~>
+iW&iVs8Vfnq>^Bnci<qDp](0lp&FsjmJm+bq>^HpJcFX-c$nLK]0?%>JNiHbq0mlYo030Sq`ah)
+q*+b+q``mYa$0Mrs%WMhs&&eqs&T)"qcNl&s'>5&pV-O;s1SHHrVlips*apYs1/0>s1/0;s02O)
+s/Q+$s02O+rN#t's0hs<rOi0Is2b5cs4./'s53k:s5j:Cs6'FHqrn(Cs60LJs6TdQs6TdOp[%qF
+s69RIs6'FGrTX at Js6fpWs7$'Ss5j:;s4IA#s3Uefs2+fPs2+fPs1JBFs1nZOs2=rVs2P#Vs2=rQ
+s1JBAs2+fVs2G#Ss24lWrQ>/^s-*JFs,d8 at s,?u8s+pW/s+LE'o7$_(s,R,8s+12ss)n?\s(q^J
+s'l"7s',M(s&&eis%!)Xs$QfPs*r4 at q>Z"pl[FEbh>dKTV#Pr~>
+iW&iVs8Vfnq>^Bnci<qDp](0lp&FsjmJm+bq>^HpJcFX-c,ST>];k\HJZA+;q8Ruco;_fjs/Q$u
+s3(GdrQb5ArPn`7q5!tcs/,ams/>sss/Q+#s/l=)s02O.a/\a?s0hs8s0Va2s0Vg3s0)I(s/Z1"
+s/>sps1&*9s0D[.s/c7"s/#ags.'+Vs/,gjs.B<4s,I&;rJU]9s-!DJs-WhPs-3PKs-NbQs-<VI
+s,d8As,d8 at s,6o6s+gW.s+LE's+C?)s+UK-s+p]4s,I&=rK$u?s,m>EqiUi?s,m>@s,-i2s+C?$
+s*Xims*4Qds)J'Ws)J'\s*"Efs*F]ls*t'#s+C9%rJ(?+s+C?%q0r/=s,R,=s,m>Js-`nUs.'+^
+s/>nos8)]is7lWgs7QE`s763[s7$'Vs6TdMs6'FDs5a4LrU9dSs6]jQs6K^Mq<@_=s5s at Bs5F"Q
+s7QE^s6fpPs5s at As5<q6s4mY.s4I(ss4%(ss3U_is3:Sfs2tA`s2Y/Zq>Z#clc+MUh>dKTV#Pr~>
+iW&iVs8Vfnq>^Bnci<qDp](0lp&FsjmJm+bq>^HpJcFX-c$nLK]0?%>JNiHbq0mlYo030Sq`ah)
+q*+b+q``mYa$0/;ru_7`s!%Igr?hOjs![mss"47(s"XO0s#0n!s*4Qks*t'$s+UK0s,[2Fs-iuF
+s5O(>s(DA0s/>sts/c7#s/5mns.o[mrMfgqs/5mss/uC,rNcI2s0r$>s1SHHs1eTLs1\NFs1/0>
+s0r$9s0MU.qm$%(rNZC.s0_m:s1JBHs2+fSs2P)[s3(Gfs3L_js31McrQ5)\s2=rQs1\NJs1\B@
+s1A<ErP/<Fq0r at Ks0Ma.q5=7gs.%nogHN`.q>Z"pl[FEbh>dKTV#Pr~>
+iW&iVs8Vfnq>^Bnci<qDp](0lp&FsjmJm+bq>^HpJcFX-c$nLK]0?%>JNiHbq0mlYo030Sq`ah)
+q*+b+q``mYa$0Mrs%WMhs&&eqs&T)"qcNl&s'>5&pV-O;s1SHHrVlips*apYs1/0>s1/0;s02O)
+s/Q+$s02O+rN#t's0hs<rOi0Is2b5cs4./'s53k:s5j:Cs6'FHqrn(Cs60LJs6TdQs6TdOp[%qF
+s69RIs6'FGrTX at Js6fpWs7$'Ss5j:;s4IA#s3Uefs2+fPs2+fPs1JBFs1nZOs2=rVs2P#Vs2=rQ
+s1JBAs2+fVs2G#Ss24lWrQ>/^s-*JFs,d8 at s,?u8s+pW/s+LE'o7$_(s,R,8s+12ss)n?\s(q^J
+s'l"7s',M(s&&eis%!)Xs$QfPs*r4 at q>Z"pl[FEbh>dKTV#Pr~>
+iW&iVs8Vfnq>^Bnci<qDp](0lp&FsjmJm+bq>^HpJcFX-c,ST>];k\HJZA+;q8Ruco;_fjs/Q$u
+s3(GdrQb5ArPn`7q5!tcs/,ams/>sss/Q+#s/l=)s02O.a/\a?s0hs8s0Va2s0Vg3s0)I(s/Z1"
+s/>sps1&*9s0D[.s/c7"s/#ags.'+Vs/,gjs.B<4s,I&;rJU]9s-!DJs-WhPs-3PKs-NbQs-<VI
+s,d8As,d8 at s,6o6s+gW.s+LE's+C?)s+UK-s+p]4s,I&=rK$u?s,m>EqiUi?s,m>@s,-i2s+C?$
+s*Xims*4Qds)J'Ws)J'\s*"Efs*F]ls*t'#s+C9%rJ(?+s+C?%q0r/=s,R,=s,m>Js-`nUs.'+^
+s/>nos8)]is7lWgs7QE`s763[s7$'Vs6TdMs6'FDs5a4LrU9dSs6]jQs6K^Mq<@_=s5s at Bs5F"Q
+s7QE^s6fpPs5s at As5<q6s4mY.s4I(ss4%(ss3U_is3:Sfs2tA`s2Y/Zq>Z#clc+MUh>dKTV#Pr~>
+iW&iVrVuTlqu?Tpci<qDp](0lp&Fsjl2U\^rVultJcFX-a+!(KrI2LFq0mlYm6:>pJNiZhrrDp[
+q0r-'rI4W-k8qZ-lQ6'JruqCes!@Ofs!Iaps""+$s"FC,s(_ROs)S-^s*=Wls+13(s,-i;s4%)#
+s4I?Us.'+[s.B=as.TIbs.01[s.B=bs.o[is.]Ois/H%"s0)I,s0Ma5qmc[6s0Ma0s/u=$s/Q*t
+s/,OerM9CerM'=es/,gqs/c7)s0Ma5s0r$=s1SHKs2G#Zs3(GarQ,#Ws1nZIrO`*>s0Vg4s0Vg7
+s0_m9s1A6Dq0r at Is/c6sqk*nZs-`nMs,-i/s*W^Qh`f/2q>Z"pl[FEbh>dKTV#Pr~>
+iW&iVrVuTlqu?Tpci<qDp](0lp&Fsjl2U\^rVultJcFX-a+!(KrI2LFq0mlYm6:>pJNiZhrrDp[
+q0r-'rI4W-k8qZ-s$-NLs$QfUs%*/^s%NGfs&&eps&B"uqc<`"s',)$mCrPus8DtHs1A<Bqmla6
+s02O*s02O0s0_g2s1&*As1nZRs2P)_s3gr"s4dS1s5<q9s5O(>s5j:Cqrn(Cs60LJs6]dQs7#dR
+s7$'Ws6fpSs6fpUrU'XRs7-'Zs763Us5j:=s4[M%s31Gbs2P)Ts2+fTs2Y/Ys2Y/`rQkMUs1&*9
+s02ODs2k;[s2+fSs2Y/^s2b5\s2P#Vs,?u8s+p]0rIt9)s+0Wfs+LE#s*+K`s)%dMs().:s'5S,
+s&B"os%<;\s$ZlRs$6U6bC99eJUZp6JcFR+rrAkpJ,~>
+iW&iVrVuTlqu?Tpci<qDp](0lp&Fsjl2U\^rVultJcFX-a2[0>rPlUPq8RucmAg!%JZA=ArrE)!
+rN#tAs31Geq6'\9ql9Cds/#[ks/5gos/Q+"a/\C5s0hs8rNuO2s0D[.s/uC(s/c7#s2+fMs1A<@
+s0_m4s/uC%s/,gks0;U,s/c5Ms-WhQrKdJMs-itZs.KCas.'+Ys.'+[s-itTs-EVIs,m>Aqi(Q8
+s,[2Bs-!DGs-3PKs-WhTrLEhWs.97`s.TCcrM0Ces.97Zs-NbLs,d8?s,?u6s+LE%s*Ocjs*"Ef
+rI"Wps+C9*s+^Q1s,I&;s,6i4s+^Q*rI4SAs-*JIs-it\s.]Ogs/,grs0;U6s1nZSrV-?cs7QE`
+s7--Xs6fpSs6K^Ls5s at Bs5Eq7s53eBrTsRMs6BXKp#uG=s5j:@s5<qOs7H?\s6]jNs5j:?s5<q6
+s4mY.s4I(ss4%(ss3U_is31Mds2k;^rPn[5J]@#qJcFR+rrAkpJ,~>
+iW&iVrVuTlqu?Tpci<qDp](0lp&Fsjl2U\^rVultJcFX-a+!(KrI2LFq0mlYm6:>pJNiZhrrDp[
+q0r-'rI4W-k8qZ-lQ6'JruqCes!@Ofs!Iaps""+$s"FC,s(_ROs)S-^s*=Wls+13(s,-i;s4%)#
+s4I?Us.'+[s.B=as.TIbs.01[s.B=bs.o[is.]Ois/H%"s0)I,s0Ma5qmc[6s0Ma0s/u=$s/Q*t
+s/,OerM9CerM'=es/,gqs/c7)s0Ma5s0r$=s1SHKs2G#Zs3(GarQ,#Ws1nZIrO`*>s0Vg4s0Vg7
+s0_m9s1A6Dq0r at Is/c6sqk*nZs-`nMs,-i/s*W^Qh`f/2q>Z"pl[FEbh>dKTV#Pr~>
+iW&iVrVuTlqu?Tpci<qDp](0lp&Fsjl2U\^rVultJcFX-a+!(KrI2LFq0mlYm6:>pJNiZhrrDp[
+q0r-'rI4W-k8qZ-s$-NLs$QfUs%*/^s%NGfs&&eps&B"uqc<`"s',)$mCrPus8DtHs1A<Bqmla6
+s02O*s02O0s0_g2s1&*As1nZRs2P)_s3gr"s4dS1s5<q9s5O(>s5j:Cqrn(Cs60LJs6]dQs7#dR
+s7$'Ws6fpSs6fpUrU'XRs7-'Zs763Us5j:=s4[M%s31Gbs2P)Ts2+fTs2Y/Ys2Y/`rQkMUs1&*9
+s02ODs2k;[s2+fSs2Y/^s2b5\s2P#Vs,?u8s+p]0rIt9)s+0Wfs+LE#s*+K`s)%dMs().:s'5S,
+s&B"os%<;\s$ZlRs$6U6bC99eJUZp6JcFR+rrAkpJ,~>
+iW&iVrVuTlqu?Tpci<qDp](0lp&Fsjl2U\^rVultJcFX-a2[0>rPlUPq8RucmAg!%JZA=ArrE)!
+rN#tAs31Geq6'\9ql9Cds/#[ks/5gos/Q+"a/\C5s0hs8rNuO2s0D[.s/uC(s/c7#s2+fMs1A<@
+s0_m4s/uC%s/,gks0;U,s/c5Ms-WhQrKdJMs-itZs.KCas.'+Ys.'+[s-itTs-EVIs,m>Aqi(Q8
+s,[2Bs-!DGs-3PKs-WhTrLEhWs.97`s.TCcrM0Ces.97Zs-NbLs,d8?s,?u6s+LE%s*Ocjs*"Ef
+rI"Wps+C9*s+^Q1s,I&;s,6i4s+^Q*rI4SAs-*JIs-it\s.]Ogs/,grs0;U6s1nZSrV-?cs7QE`
+s7--Xs6fpSs6K^Ls5s at Bs5Eq7s53eBrTsRMs6BXKp#uG=s5j:@s5<qOs7H?\s6]jNs5j:?s5<q6
+s4mY.s4I(ss4%(ss3U_is31Mds2k;^rPn[5J]@#qJcFR+rrAkpJ,~>
+iW&iVqu?BjrVufrci<qDp&Fsjq>^<ljo>2XJcFX-_g^eKq0p4Fq0mlYm6:>pJNiZhrrDp[q0r-'
+rI4W-miKG3iu\4Bruq=cq]c%ds!Rgqs""+$s'Yk;s(MFKs)A![s*"Egs*t'%s2k;bs3:R?s,d8D
+s-3PKrKmPLs-3PMs-`nWs.97]s.KCfs/5mss/l7$s/Z*us/>sps.fUerLNtYs-s%VrL!PMs-WbO
+s-<VKrKI8Gs-NbSs.97bs/#aos/H%"s0)I/s0r$>s1\NMs2Y/Ys2"`Ks1/0=s0hs4s/l7&s0)I)
+s0)I/s0hs;q0r at Ds.o[cqj7>Hs,[29s+(,ps)e9Xs(C5<j$(S6q>Z"pl[FEbh>dKTV#Pr~>
+iW&iVqu?BjrVufrci<qDp&Fsjq>^<ljo>2XJcFX-_g^eKq0p4Fq0mlYm6:>pJNiZhrrDp[q0r-'
+rI4W-miKG3s#0m:s#U0Bs$-NLs$QfTs%!)\s%EAes%r_ms&8eos&]5's'55'qnDs at q7cb*s*t']
+s1A6 at s1A<As0Vg2s0Ma6s1&$<s1\NMs2P)^s3CYls3q"us4IA*s5!_3s5<q9s5O(>s6'@Es6'FG
+s6BXOrU9dVs7H?bqtU3bs7QE`s763[s6opRs6p!Xs7$!WrUU!Ss5X.7s4./!s3gqks2P)ZrQ>/[
+s2b5bs3Ueps0Ma0s/l=$s31Mcs2P)Vs2FrXs2Y/Zs2G#VrPSZPs+^Q,rIb-%s+0Kbs)e9Zs(_RG
+s'bq5s'#G(s&/kks%*/Ys$QfPs$+VSq>Z"pl[FEbh>dKTV#Pr~>
+iW&iVqu?BjrVufrci<qDp&Fsjq>^<ljo>2XJcFX-_oCm>q8U=Pq8RucmAg!%JZA=ArrE)!rN#tA
+s31Geq6'\9ql9=bs/#[k`N%n+s0hm6qmQO2s0;U.s0)I*s3(G_s2=rPs1JBAs0r$8s0;U+s1JBB
+s0r"ds.fUgqk=%as/,gqs/5mns.fUgs.fUfs.97\s-`nRrL!POs-itXs.01^s.TIes.fUis/,gp
+s/Q$urN-%$s/uC+s0D[2s0Vg3s0)I's/>sms.97\s-`nQs-!DAs,$c1s+LE's*k!!s+LE-rJU]7
+s,d8Fs-*DDs-!DCs,6o4s+L4Is-NbVs.fUms/Q+#s0)I/s1A<Js2k;bs3gr#s7H?_s7--Xs6]jP
+s6BXJs5s at As5Eq5rS@G-s6TdOs6BXKq<7_=s5j:@s5O(9s7ZKas6p!Ss60LEs5O(:s5*e2s4[M*
+q:>Srs3q"rs3Ueks3:Ses2tA_s2Y)Xq>Z#clc+MUh>dKTV#Pr~>
+iW&iVqu?BjrVufrci<qDp&Fsjq>^<ljo>2XJcFX-_g^eKq0p4Fq0mlYm6:>pJNiZhrrDp[q0r-'
+rI4W-miKG3iu\4Bruq=cq]c%ds!Rgqs""+$s'Yk;s(MFKs)A![s*"Egs*t'%s2k;bs3:R?s,d8D
+s-3PKrKmPLs-3PMs-`nWs.97]s.KCfs/5mss/l7$s/Z*us/>sps.fUerLNtYs-s%VrL!PMs-WbO
+s-<VKrKI8Gs-NbSs.97bs/#aos/H%"s0)I/s0r$>s1\NMs2Y/Ys2"`Ks1/0=s0hs4s/l7&s0)I)
+s0)I/s0hs;q0r at Ds.o[cqj7>Hs,[29s+(,ps)e9Xs(C5<j$(S6q>Z"pl[FEbh>dKTV#Pr~>
+iW&iVqu?BjrVufrci<qDp&Fsjq>^<ljo>2XJcFX-_g^eKq0p4Fq0mlYm6:>pJNiZhrrDp[q0r-'
+rI4W-miKG3s#0m:s#U0Bs$-NLs$QfTs%!)\s%EAes%r_ms&8eos&]5's'55'qnDs at q7cb*s*t']
+s1A6 at s1A<As0Vg2s0Ma6s1&$<s1\NMs2P)^s3CYls3q"us4IA*s5!_3s5<q9s5O(>s6'@Es6'FG
+s6BXOrU9dVs7H?bqtU3bs7QE`s763[s6opRs6p!Xs7$!WrUU!Ss5X.7s4./!s3gqks2P)ZrQ>/[
+s2b5bs3Ueps0Ma0s/l=$s31Mcs2P)Vs2FrXs2Y/Zs2G#VrPSZPs+^Q,rIb-%s+0Kbs)e9Zs(_RG
+s'bq5s'#G(s&/kks%*/Ys$QfPs$+VSq>Z"pl[FEbh>dKTV#Pr~>
+iW&iVqu?BjrVufrci<qDp&Fsjq>^<ljo>2XJcFX-_oCm>q8U=Pq8RucmAg!%JZA=ArrE)!rN#tA
+s31Geq6'\9ql9=bs/#[k`N%n+s0hm6qmQO2s0;U.s0)I*s3(G_s2=rPs1JBAs0r$8s0;U+s1JBB
+s0r"ds.fUgqk=%as/,gqs/5mns.fUgs.fUfs.97\s-`nRrL!POs-itXs.01^s.TIes.fUis/,gp
+s/Q$urN-%$s/uC+s0D[2s0Vg3s0)I's/>sms.97\s-`nQs-!DAs,$c1s+LE's*k!!s+LE-rJU]7
+s,d8Fs-*DDs-!DCs,6o4s+L4Is-NbVs.fUms/Q+#s0)I/s1A<Js2k;bs3gr#s7H?_s7--Xs6]jP
+s6BXJs5s at As5Eq5rS@G-s6TdOs6BXKq<7_=s5j:@s5O(9s7ZKas6p!Ss60LEs5O(:s5*e2s4[M*
+q:>Srs3q"rs3Ueks3:Ses2tA_s2Y)Xq>Z#clc+MUh>dKTV#Pr~>
+iW&iVp]'gbci<qDp&Fsjq>^BnhuE]VJcFX-^OGMKomXqFq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-
+ocD.;fcL/9s!%Cbr?2+`s!.Ois!Rgrs'#G-s'Yk;s(MFKs).jTs)e9ds1SHJs2+e)s+UK.s,$c5
+s,?u<s,I&;s,[2Bs-3PLs-WhUs.'+[s.91]rLWtYs-s%Vs-E\Ks,d8As,R,=s,?u9qhk?1s,-i4
+s+gW/rIt9.s,I&@s-3PMs-itXs.97bs/#aos/c7)s0Vg:s1A<Ds1/0;s0Ma/s/Z0ss/>sss/,gl
+s/,grs/uC(q0r@<s.'+SrK$u<s,$c0s*juks)A!Ss(24;s&f;#hgX`PaaX'cJUZp6JcFR+rrAkp
+J,~>
+iW&iVp]'gbci<qDp&Fsjq>^BnhuE]VJcFX-^OGMKomXqFq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-
+ocD.;s"47(s"XO/s"sa6s#C$>s#g<Gs$?ZPs$ZlVs%*/_s%WMgs%r_mrDNYqs&]5(s'5G-rE]H8
+rOr*@s1S<Dqu6VFs1SHFqn)m at s1/0<s0r$=s1A<Es1nZQs2G#Xs2k;as3CYks3gqts4@;)s4mY1
+s5*e6s5O(?s6'FGs6'FGs6BXOs6p!Ws763`s7lWjrVZ]ls7lWes7?9]s6opRs6p!Ws6fjSrUBjT
+s6]jKs53k4s4@;!rQP;fs3(G_s2k;ds3gqps/l=$s/5mms31Mds2Y/Xqo8ZTs2=rTrPJNLs1nZK
+rIOotkC3GDs'u(8s',M*s&K(qs%EA^s$ZlRs$6TJaaX'cJUZp6JcFR+rrAkpJ,~>
+iW&iVp]'gbci<qDp&Fsjq>^BnhuE]VJcFX-^W,U>ou>%Pq8RucmAg!%JZA=ArrE)!rN#tAs31Ge
+q6'\9ql9=ba/[h%q6p72s0hs8s0Ma2s02OMs3CYes2P)UrP&<Hs1JBAs2Y/Xs2+e&s/uC(q5jV"
+s0;U-s/uC's/Q*uqksIkrMBCgs/5mrs/Z1%s0)I,s0;U0s0Vg7s0qs;s186 at s186Cs1SHIs2"ZO
+s1\NDs0_m3s/l=$s/5mms.KC^s-`nPs-!DDs,I&9s,$c6s,[2As-3PMs-s%Ws-NbSs.'+Vs-3JD
+q>UDes/,gss0;U1s0_m;s1SHNs3(Ghs3q#$s53k<s69RPs6]jPs69RHs5j:@s5F"8s5!_1rS.A+
+rRq5's6BXKs604?s5j:As5O(:s5*eKs763Xs6K^Js5j:?s5<q6s4mY.s4I5"s4./!s3gqps3L_j
+s31Mcs2k;]qo8I3J]@#qJcFR+rrAkpJ,~>
+iW&iVp]'gbci<qDp&Fsjq>^BnhuE]VJcFX-^OGMKomXqFq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-
+ocD.;fcL/9s!%Cbr?2+`s!.Ois!Rgrs'#G-s'Yk;s(MFKs).jTs)e9ds1SHJs2+e)s+UK.s,$c5
+s,?u<s,I&;s,[2Bs-3PLs-WhUs.'+[s.91]rLWtYs-s%Vs-E\Ks,d8As,R,=s,?u9qhk?1s,-i4
+s+gW/rIt9.s,I&@s-3PMs-itXs.97bs/#aos/c7)s0Vg:s1A<Ds1/0;s0Ma/s/Z0ss/>sss/,gl
+s/,grs/uC(q0r@<s.'+SrK$u<s,$c0s*juks)A!Ss(24;s&f;#hgX`PaaX'cJUZp6JcFR+rrAkp
+J,~>
+iW&iVp]'gbci<qDp&Fsjq>^BnhuE]VJcFX-^OGMKomXqFq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-
+ocD.;s"47(s"XO/s"sa6s#C$>s#g<Gs$?ZPs$ZlVs%*/_s%WMgs%r_mrDNYqs&]5(s'5G-rE]H8
+rOr*@s1S<Dqu6VFs1SHFqn)m at s1/0<s0r$=s1A<Es1nZQs2G#Xs2k;as3CYks3gqts4@;)s4mY1
+s5*e6s5O(?s6'FGs6'FGs6BXOs6p!Ws763`s7lWjrVZ]ls7lWes7?9]s6opRs6p!Ws6fjSrUBjT
+s6]jKs53k4s4@;!rQP;fs3(G_s2k;ds3gqps/l=$s/5mms31Mds2Y/Xqo8ZTs2=rTrPJNLs1nZK
+rIOotkC3GDs'u(8s',M*s&K(qs%EA^s$ZlRs$6TJaaX'cJUZp6JcFR+rrAkpJ,~>
+iW&iVp]'gbci<qDp&Fsjq>^BnhuE]VJcFX-^W,U>ou>%Pq8RucmAg!%JZA=ArrE)!rN#tAs31Ge
+q6'\9ql9=ba/[h%q6p72s0hs8s0Ma2s02OMs3CYes2P)UrP&<Hs1JBAs2Y/Xs2+e&s/uC(q5jV"
+s0;U-s/uC's/Q*uqksIkrMBCgs/5mrs/Z1%s0)I,s0;U0s0Vg7s0qs;s186 at s186Cs1SHIs2"ZO
+s1\NDs0_m3s/l=$s/5mms.KC^s-`nPs-!DDs,I&9s,$c6s,[2As-3PMs-s%Ws-NbSs.'+Vs-3JD
+q>UDes/,gss0;U1s0_m;s1SHNs3(Ghs3q#$s53k<s69RPs6]jPs69RHs5j:@s5F"8s5!_1rS.A+
+rRq5's6BXKs604?s5j:As5O(:s5*eKs763Xs6K^Js5j:?s5<q6s4mY.s4I5"s4./!s3gqps3L_j
+s31Mcs2k;]qo8I3J]@#qJcFR+rrAkpJ,~>
+iW&iVp&F[bci<qDoDeC^huE]VJcFX-]705KnUAYFq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-r>s!C
+cQ<$-r?(tZruh=ds!@[nrDrr#s'5S3s().As(D at Gs)%eAs0_m9s#U1+s*Xiqs*t'"s+C9's+gW2
+s,6o:rJpo=s,d8CrK@,ArK.&>s,?u8s+^Q+s+13#s*surs*ains*aorq0`3hs*Xiqs+(-&s+gW2
+s,?u<s,m>Gs-E\Qs.01as/,gqs/c7&s/uC+s/l=#s/#ags.]Ods.97[s.97bs.fUgq0r at 4s-3PC
+s+gW/s+:9#s*Oces)%dLs'u(7s&].rs%NG`hgXlTaaX'cJUZp6JcFR+rrAkpJ,~>
+iW&iVp&F[bci<qDoDeC^huE]VJcFX-]705KnUAYFq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-r>s!C
+s!Rgqs!n%!s"+1%s"FC+s"aU2s#0m:s#U0Bs$$HJs$H`Qs$crYs%<;as%WMgrD<Mms&K)$s'#;)
+rEK<2s186Cqn)m at s1SBFqu6VFs1\NHqn2m at s1A<DqnE*Fs1nZOs24lVs2b5_s3:Sis3gqss4@;(
+s4dS/s5!_5s5X. at s60LGs60LJs6]jSs7--]p\"R\s7lWfs7QE_s6opRs6p!Us6T^Os6fpSs6K^M
+s60LGs5X.8s4@:us3gqos31Mas3(Ghs3^kls/5mms.TIas31Mds2b5Zs2P#UrPSTMrP8HJs1\B@
+hgYT1s&oA&s&8qms%<;\s$QfPs$-NIaaX'cJUZp6JcFR+rrAkpJ,~>
+iW&iVp&F[bci<qDoDeC^huE]VJcFX-]>j=>n]&bPq8RucmAg!%JZA=ArrE)!rN#tAs31Geq6'\9
+ql9Uja/[Ips0hg6rODm:s0_m5s0;ONs3^kjs2k5XrPnlTs3gqns3CX=s186?s0r$<qmZU9s0r$:
+s0Va2qm?C0rNcC.rNuU5s1&*?s1JBGs1nZNs2+fRs2G#Yq8iTXpWENWs2Y/Ws1\NFs1/0<s0Ma.
+s/Z0us.o[gs.97[s-`nSs-E\Ls-NbTs.97brLs7ds/#ahs.0+Yq>UDos0)I0s186Cs1eTOs2Y/b
+s4%)#s4RG0s5j:Hs6BXNs6fpOs6'FDs5a4>s5<q6s4mY/rRq5'rR_#!s4$l-s5s at Cs5a4>s5<q7
+s5!_Is7--Vs6BXHs5a4>s5<q6s4mY.s4I5"s4%(ts3^knrQbGes2tA_q8W71J]@#qJcFR+rrAkp
+J,~>
+iW&iVp&F[bci<qDoDeC^huE]VJcFX-]705KnUAYFq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-r>s!C
+cQ<$-r?(tZruh=ds!@[nrDrr#s'5S3s().As(D at Gs)%eAs0_m9s#U1+s*Xiqs*t'"s+C9's+gW2
+s,6o:rJpo=s,d8CrK@,ArK.&>s,?u8s+^Q+s+13#s*surs*ains*aorq0`3hs*Xiqs+(-&s+gW2
+s,?u<s,m>Gs-E\Qs.01as/,gqs/c7&s/uC+s/l=#s/#ags.]Ods.97[s.97bs.fUgq0r at 4s-3PC
+s+gW/s+:9#s*Oces)%dLs'u(7s&].rs%NG`hgXlTaaX'cJUZp6JcFR+rrAkpJ,~>
+iW&iVp&F[bci<qDoDeC^huE]VJcFX-]705KnUAYFq0mlYm6:>pJNiZhrrDp[q0r-'rI4W-r>s!C
+s!Rgqs!n%!s"+1%s"FC+s"aU2s#0m:s#U0Bs$$HJs$H`Qs$crYs%<;as%WMgrD<Mms&K)$s'#;)
+rEK<2s186Cqn)m at s1SBFqu6VFs1\NHqn2m at s1A<DqnE*Fs1nZOs24lVs2b5_s3:Sis3gqss4@;(
+s4dS/s5!_5s5X. at s60LGs60LJs6]jSs7--]p\"R\s7lWfs7QE_s6opRs6p!Us6T^Os6fpSs6K^M
+s60LGs5X.8s4@:us3gqos31Mas3(Ghs3^kls/5mms.TIas31Mds2b5Zs2P#UrPSTMrP8HJs1\B@
+hgYT1s&oA&s&8qms%<;\s$QfPs$-NIaaX'cJUZp6JcFR+rrAkpJ,~>
+iW&iVp&F[bci<qDoDeC^huE]VJcFX-]>j=>n]&bPq8RucmAg!%JZA=ArrE)!rN#tAs31Geq6'\9
+ql9Uja/[Ips0hg6rODm:s0_m5s0;ONs3^kjs2k5XrPnlTs3gqns3CX=s186?s0r$<qmZU9s0r$:
+s0Va2qm?C0rNcC.rNuU5s1&*?s1JBGs1nZNs2+fRs2G#Yq8iTXpWENWs2Y/Ws1\NFs1/0<s0Ma.
+s/Z0us.o[gs.97[s-`nSs-E\Ls-NbTs.97brLs7ds/#ahs.0+Yq>UDos0)I0s186Cs1eTOs2Y/b
+s4%)#s4RG0s5j:Hs6BXNs6fpOs6'FDs5a4>s5<q6s4mY/rRq5'rR_#!s4$l-s5s at Cs5a4>s5<q7
+s5!_Is7--Vs6BXHs5a4>s5<q6s4mY.s4I5"s4%(ts3^knrQbGes2tA_q8W71J]@#qJcFR+rrAkp
+J,~>
+iW&iVnc/Cbci<qDnc/Cbg].9RJcFX-[smrKm=*AFq0mlYm6:>pJNiZhrrDp[q0r-'rI2XJ],ptq
+s!.OjrDNYms&B##s'5S1s'Pe6s'l#+s/Q+#s"FCjs)J'Zs)e9as*+Khs*Ocns*juus+13&s+13%
+s+C?)rIt3'rIb-$s*t&ss*F]hs)n?_s)S-Zs)@jRs)RjTs)S-\s)n?cs*=Wjs*Ocos+(-%s+^Q0
+s,6o;s-3PMs-itXs.97_qk=%^rL<hSs-E\Ks-E\Qs-WhQq0r@(s,$c/s*t&rs*4Qds)J'Qs().;
+s',M'qbI/_s$ZlPs$#7fnNP'Dq>Z"pl[FEbh>dKTV#Pr~>
+iW&iVnc/Cbci<qDnc/Cbg].9RJcFX-[smrKm=*AFq0mlYm6:>pJNiZhrrDp[q0r-'rI2XJs!.Oh
+s!@[ls!Rgps!dsts"+1%s"==*s"aU2s#0m9s#U0Bs$$HIs$?ZPs$ZlWs%*/^s%EAds%`Sjs&8qt
+s&]5'rEB/&s0Ma6q7?U<s1JBFs1\C0s*t'_q7ZgBpV$O<s1\NJs1nZPs2G#Ys2tAcs3L_ms3q#!
+s4IA*s4dS1s5<q;s5s at Es60LJs6TdOs6TdQs6f^Ms6p!Xs763^s7?9[qsFFMrTa at Is6BXJs6'FD
+s5a4>s5<q5s4@;%s3gqms2tAds3Uels31M:s.97[s-Wi.s2b5\s2P)WrPJNLs1nNHs1\NDq6^1,
+h1#B$s%WMbs$crSs$6NHaaX'cJUZp6JcFR+rrAkpJ,~>
+iW&iVnc/Cbci<qDnc/Cbg].9RJcFX-\&S%>mDdJPq8RucmAg!%JZA=ArrE)!rN#tAs31Geq6'\9
+_lCP^qmc[7s0_m5rRCkus3q"orQG5bs3CYhs5!_/s4RETs2=lRq830Js1eTJs1SBDqn`<JrP/<H
+rPANOs2G#Ys2k;as3:Sis3^kps3q"us475#s3q"rrR(Ghs3Ueks3:Sfs2tA^s2=rRs1\NFs0r$7
+s02O*s/Q*ts/,gmqkO1frM]ars/c7's/Q*srM]Pks0_m<s1\NMs2P)\s31Mis4IA+s5!_5s5s:H
+s6K^Ps6opVs5X.=s5F"8s5!_0s4[M*s4@;%rRLkrs3q"qrQtT,s5j:As5O(;s53k5s4mYGs7$'T
+s69RFs5X.<s5<q6s4mY.s4I;$s4..us3gqos3LYhs31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+iW&iVnc/Cbci<qDnc/Cbg].9RJcFX-[smrKm=*AFq0mlYm6:>pJNiZhrrDp[q0r-'rI2XJ],ptq
+s!.OjrDNYms&B##s'5S1s'Pe6s'l#+s/Q+#s"FCjs)J'Zs)e9as*+Khs*Ocns*juus+13&s+13%
+s+C?)rIt3'rIb-$s*t&ss*F]hs)n?_s)S-Zs)@jRs)RjTs)S-\s)n?cs*=Wjs*Ocos+(-%s+^Q0
+s,6o;s-3PMs-itXs.97_qk=%^rL<hSs-E\Ks-E\Qs-WhQq0r@(s,$c/s*t&rs*4Qds)J'Qs().;
+s',M'qbI/_s$ZlPs$#7fnNP'Dq>Z"pl[FEbh>dKTV#Pr~>
+iW&iVnc/Cbci<qDnc/Cbg].9RJcFX-[smrKm=*AFq0mlYm6:>pJNiZhrrDp[q0r-'rI2XJs!.Oh
+s!@[ls!Rgps!dsts"+1%s"==*s"aU2s#0m9s#U0Bs$$HIs$?ZPs$ZlWs%*/^s%EAds%`Sjs&8qt
+s&]5'rEB/&s0Ma6q7?U<s1JBFs1\C0s*t'_q7ZgBpV$O<s1\NJs1nZPs2G#Ys2tAcs3L_ms3q#!
+s4IA*s4dS1s5<q;s5s at Es60LJs6TdOs6TdQs6f^Ms6p!Xs763^s7?9[qsFFMrTa at Is6BXJs6'FD
+s5a4>s5<q5s4@;%s3gqms2tAds3Uels31M:s.97[s-Wi.s2b5\s2P)WrPJNLs1nNHs1\NDq6^1,
+h1#B$s%WMbs$crSs$6NHaaX'cJUZp6JcFR+rrAkpJ,~>
+iW&iVnc/Cbci<qDnc/Cbg].9RJcFX-\&S%>mDdJPq8RucmAg!%JZA=ArrE)!rN#tAs31Geq6'\9
+_lCP^qmc[7s0_m5rRCkus3q"orQG5bs3CYhs5!_/s4RETs2=lRq830Js1eTJs1SBDqn`<JrP/<H
+rPANOs2G#Ys2k;as3:Sis3^kps3q"us475#s3q"rrR(Ghs3Ueks3:Sfs2tA^s2=rRs1\NFs0r$7
+s02O*s/Q*ts/,gmqkO1frM]ars/c7's/Q*srM]Pks0_m<s1\NMs2P)\s31Mis4IA+s5!_5s5s:H
+s6K^Ps6opVs5X.=s5F"8s5!_0s4[M*s4@;%rRLkrs3q"qrQtT,s5j:As5O(;s53k5s4mYGs7$'T
+s69RFs5X.<s5<q6s4mY.s4I;$s4..us3gqos3LYhs31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+iW&iVn,N7bNW9"YJcFX-Z[VZKkC1rFq0mlYm6:>pJNiZhrrDp[q0r-'rI2pRZQB,gruqCfrD*Ae
+s%NGhs&B#!rE'#$s.'+]s.TH<s().As(MFIs)%dSs)S-\s)J'[s)n?bs*+Kds)n?bs*+KfrHJ3`
+s)n?`s)S-Ys).jPs(VLGs(2.>rFQ"ArFu(Bs(VLJs(q^Qs)7jUs)A!Ys)n?cs*=Wls+(-'s+p]5
+s,I&>s,m>Fs-3>Cs,d8 at s,6i9s,I&;q0r?rs*juns*+K`s).jPs(D@?s'5S+s&8qls%<5_s$m#S
+pHIJ`ofgKHq>Z"pl[FEbh>dKTV#Pr~>
+iW&iVn,N7bNW9"YJcFX-Z[VZKkC1rFq0mlYm6:>pJNiZhrrDp[q0r-'rI2pRr>tt\ruh=cs!.Oh
+r?_Iks![mrs!n%!s"+1&s"OI.s"sa5s#9s<s#g<Es$-NKs$H`Rs$crXs%*/^s%EAds%iYls&8qt
+s&]5&rE'$&s0D[5qmla<s1A<Ds1S=/s*t!]rOr6Ds1A6 at qn2m>s1SBFs1nZOs2=rXs2k;bs3CYk
+s3q"us4@;'s4dS1s5Ek8qrIe=p#c;<s69RLs6]jSs6p!Us6TdOs6BRHs69RIs6'FDs5a4>s5<q7
+s5!_1s4[M*s4%(qs31Mhs3CYgs2tA2s-WhOs,m?$s2G#Vs2+fPrP8<FqnE*Bs0_a.s0)I's/,gh
+s-qnps%*/Xs$?ZLrBA>Pq>Z"pl[FEbh>dKTV#Pr~>
+iW&iVn,N7bNW9"YJcFX-Zc;b>kJl&Pq8RucmAg!%JZA=ArrE)!rN#tAs31Geq6'\9bGtTM\$uCI
+s0r$:s0VaVs4IA)s47.rs3q"us4757s5j:As())Rs3:Sfs2tA`s2Y/Zs2b5\s2G#Vs2G#[s3:Sh
+s3:Mds3:Gds3Ueos4%)"s4IA*s4mY2s5<k5s5*e2s4[(ts4@;%s4%(trRCkrs3Uejs2tA]s24lO
+s1JBBs0hs8s0Ma1rNQ1(s0Ma5s0r$8s0M[2q>UE0s2G#[s2tAes3q#!s4[M1s5O(>s5s at Js6p!T
+s6TdRs7$'Ys7$'WrU0^Bs4mY.s4RG(s4./!rR:_ns3^knqp5;fs5O(;s5<q6s4mY.s763Ys6K^J
+s5a4>s5<q7s5!_1s4[M*s475#s4%(ss3^kmqp,5cs2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+iW&iVn,N7bNW9"YJcFX-Z[VZKkC1rFq0mlYm6:>pJNiZhrrDp[q0r-'rI2pRZQB,gruqCfrD*Ae
+s%NGhs&B#!rE'#$s.'+]s.TH<s().As(MFIs)%dSs)S-\s)J'[s)n?bs*+Kds)n?bs*+KfrHJ3`
+s)n?`s)S-Ys).jPs(VLGs(2.>rFQ"ArFu(Bs(VLJs(q^Qs)7jUs)A!Ys)n?cs*=Wls+(-'s+p]5
+s,I&>s,m>Fs-3>Cs,d8 at s,6i9s,I&;q0r?rs*juns*+K`s).jPs(D@?s'5S+s&8qls%<5_s$m#S
+pHIJ`ofgKHq>Z"pl[FEbh>dKTV#Pr~>
+iW&iVn,N7bNW9"YJcFX-Z[VZKkC1rFq0mlYm6:>pJNiZhrrDp[q0r-'rI2pRr>tt\ruh=cs!.Oh
+r?_Iks![mrs!n%!s"+1&s"OI.s"sa5s#9s<s#g<Es$-NKs$H`Rs$crXs%*/^s%EAds%iYls&8qt
+s&]5&rE'$&s0D[5qmla<s1A<Ds1S=/s*t!]rOr6Ds1A6 at qn2m>s1SBFs1nZOs2=rXs2k;bs3CYk
+s3q"us4@;'s4dS1s5Ek8qrIe=p#c;<s69RLs6]jSs6p!Us6TdOs6BRHs69RIs6'FDs5a4>s5<q7
+s5!_1s4[M*s4%(qs31Mhs3CYgs2tA2s-WhOs,m?$s2G#Vs2+fPrP8<FqnE*Bs0_a.s0)I's/,gh
+s-qnps%*/Xs$?ZLrBA>Pq>Z"pl[FEbh>dKTV#Pr~>
+iW&iVn,N7bNW9"YJcFX-Zc;b>kJl&Pq8RucmAg!%JZA=ArrE)!rN#tAs31Geq6'\9bGtTM\$uCI
+s0r$:s0VaVs4IA)s47.rs3q"us4757s5j:As())Rs3:Sfs2tA`s2Y/Zs2b5\s2G#Vs2G#[s3:Sh
+s3:Mds3:Gds3Ueos4%)"s4IA*s4mY2s5<k5s5*e2s4[(ts4@;%s4%(trRCkrs3Uejs2tA]s24lO
+s1JBBs0hs8s0Ma1rNQ1(s0Ma5s0r$8s0M[2q>UE0s2G#[s2tAes3q#!s4[M1s5O(>s5s at Js6p!T
+s6TdRs7$'Ys7$'WrU0^Bs4mY.s4RG(s4./!rR:_ns3^knqp5;fs5O(;s5<q6s4mY.s763Ys6K^J
+s5a4>s5<q7s5!_1s4[M*s475#s4%(ss3^kmqp,5cs2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuBg-rVto,ffo4\JNiHbq0mlYo030Sq`aCrdls`Pru_7brC[)]rCHr^rD*Ags%r`X
+s-3PLru1oBs'Pe7s'l"=s(D at Gs(_LGs(VLKs(q^Ns(VLHs(_RLrG):Fs(MFEs().=s'Yk6s'GM.
+rEfG0s'Y_4rF#Y6s'u(?s(;:ErFc"@s(_RNs)S-_s*=Wms+(-$s+L3&rJ:K/s+^Q+s+LE)s+:9%
+q0r?gs)\-Ws(_RGs'bq5s&oA$s%r_gs$crXrCHrUnNPiZq*)oLq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuBg-rVto,ffo4\JNiHbq0mlYo030Sq`aCrdm!@Eru_7as!%Ifr?VChs!Ians!dst
+s""+#s"==*s"aU1s#'g8s#L*@s#g<Fs$-NLs$H`Rs$crXs%*/^s%EAes%r_ns&8eps/Z1&s0D[4
+rODm<s186Bs1J7.s*k![qmug<s1&$:s180 at rOW$As1SHHrP/BKs2=rWs2k;as3:Sjs3gqss4./#
+s4IA)s4[M+s4[M-rS7G/s5*e5q;2/0s5O(=s5j:Cs6'@Es69RIqr[q?s5a4>s5<q7s5!_0s4[M+
+s475#s3q"rrQbGes2tA_s-<VIs,[2<s24lRs2"0<s1SHAs0;I&s/H$ps.KC\s-<VGs,,]_s$6HF
+aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuBgurVtotfrFkfJZA+;q8Ruco;_fjs/Q$us3(GdrQb)Ue#NGOs0;U0s0Ma4o<uEC
+s0_gYs4dM-rRh/'s4dS0s7?9\s6ou)s4$qos3UelrQP;es3L_jrQYAjs47)#rS%5)s4mY1s53k8
+s5X"<rT+"=qrIe:s5Eq7q;MA2s5!_1rS.;+s5!_1s4RG&s3gqms3(G_s2=rSs1nHErO`*Cs1\NK
+s1eNJs2"O1s3(Ghs3gqps4./'s5*e9s5j:Ds69RMs763Zs6fpSs6p!Xs7$'Ws6fdOs6Td=s4IA&
+s4%(srR(SjrQkAdqp#/ts4mY.s4RGBs6fpPs5s at As5F"8s5*e2s4dS,s4IA&s4%(ts3^knq9K#a
+s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuBg-rVto,ffo4\JNiHbq0mlYo030Sq`aCrdls`Pru_7brC[)]rCHr^rD*Ags%r`X
+s-3PLru1oBs'Pe7s'l"=s(D at Gs(_LGs(VLKs(q^Ns(VLHs(_RLrG):Fs(MFEs().=s'Yk6s'GM.
+rEfG0s'Y_4rF#Y6s'u(?s(;:ErFc"@s(_RNs)S-_s*=Wms+(-$s+L3&rJ:K/s+^Q+s+LE)s+:9%
+q0r?gs)\-Ws(_RGs'bq5s&oA$s%r_gs$crXrCHrUnNPiZq*)oLq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuBg-rVto,ffo4\JNiHbq0mlYo030Sq`aCrdm!@Eru_7as!%Ifr?VChs!Ians!dst
+s""+#s"==*s"aU1s#'g8s#L*@s#g<Fs$-NLs$H`Rs$crXs%*/^s%EAes%r_ns&8eps/Z1&s0D[4
+rODm<s186Bs1J7.s*k![qmug<s1&$:s180 at rOW$As1SHHrP/BKs2=rWs2k;as3:Sjs3gqss4./#
+s4IA)s4[M+s4[M-rS7G/s5*e5q;2/0s5O(=s5j:Cs6'@Es69RIqr[q?s5a4>s5<q7s5!_0s4[M+
+s475#s3q"rrQbGes2tA_s-<VIs,[2<s24lRs2"0<s1SHAs0;I&s/H$ps.KC\s-<VGs,,]_s$6HF
+aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuBgurVtotfrFkfJZA+;q8Ruco;_fjs/Q$us3(GdrQb)Ue#NGOs0;U0s0Ma4o<uEC
+s0_gYs4dM-rRh/'s4dS0s7?9\s6ou)s4$qos3UelrQP;es3L_jrQYAjs47)#rS%5)s4mY1s53k8
+s5X"<rT+"=qrIe:s5Eq7q;MA2s5!_1rS.;+s5!_1s4RG&s3gqms3(G_s2=rSs1nHErO`*Cs1\NK
+s1eNJs2"O1s3(Ghs3gqps4./'s5*e9s5j:Ds69RMs763Zs6fpSs6p!Xs7$'Ws6fdOs6Td=s4IA&
+s4%(srR(SjrQkAdqp#/ts4mY.s4RGBs6fpPs5s at As5F"8s5*e2s4dS,s4IA&s4%(ts3^knq9K#a
+s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuAI\h*1X`JNiHbq0mlYo030Sq`aiUomYXZT-""TrC6fUs$ZlSs$ZlUs$m#Ys%36L
+s,I&?rtYQ8s'#G-s'#G-s'Pe7s'l"9rEfM3s'bq8s'G_2s'5G,rETA,qcWl$rE9#$s&oA(rE&es
+qcEf#s'5S0s'P_2s'Pe6rEoS4s().Cs(q^Ss)\3_s*+?cs*FWls*Xins*F]js*4Qfs*"3es)%dL
+rFc.>s'GY,s&8qls%*/Ws$H`RrC-`Om69EVrBA>Pq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuAI\h*1X`JNiHbq0mlYo030Sq`aiUomYXZkoTjHruqCdr?M=fs!@[ls!Rgps!dst
+s"+1&s"FC,s"j[4s#9s;s#U0As#p<Fs$?ZOs$ZlUs%!)[s%<;bs%`Sjs&&_ns/5mss/uC,s0_m9
+s1&*>rOVt(s7u\?s0hm6rO2a6rNuU6s1/0 at rOMs?s1JBFrP/BJs2"`Qs2P)[s2t/]s3:Shs3LYj
+s3^eos4./#p"05ss4[M.s5*e5qr%M5s5X.?s5X.=s5F"9s5*e3s4dS,s4IA&s4..ts3^kms3CYh
+s31Mcs2b5[s,[2=s,$c0s1nZLs1SBCrOi0As1JBFrP&<Bs0Ma-rM]ans.fUds-itPs,d8=s+UK'
+s*EROrBA>Pq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuAJOh5^:jJZA+;q8Ruco;_fjs/Q$uq>^--gT(:TrN6%$s02O.s0D[2rO)C.^UO6O
+rS7G/s5*e5rSIS4rSmeMs7?81s4I;#s4@;%s4%(ss3^krrR_)"s475(s5*e9s5j:As5s at ErTO:G
+rTjFIqs"(Cs6'FGqs!_9s5s at Cs5X.=q;_A5s5<q4s4IA$s3^kms3:Gas2t;Zs2Y/\s2k;arQP;d
+q>UEGs4dS,s4@;*s53e9s60LLs6p!Ys7?9\rU0XRs6p!Us6]^Ms6KXKs4..us3^ekqp,#^q98l^
+s4RG(s7$'Us69RFs5O(:s5*e3s4dS-s4IA's475"s3gqos3LMds31Mcs2b#Uq>Z#clc+MUh>dKT
+V#Pr~>
+JcF-trr at WMhuAI\h*1X`JNiHbq0mlYo030Sq`aiUomYXZT-""TrC6fUs$ZlSs$ZlUs$m#Ys%36L
+s,I&?rtYQ8s'#G-s'#G-s'Pe7s'l"9rEfM3s'bq8s'G_2s'5G,rETA,qcWl$rE9#$s&oA(rE&es
+qcEf#s'5S0s'P_2s'Pe6rEoS4s().Cs(q^Ss)\3_s*+?cs*FWls*Xins*F]js*4Qfs*"3es)%dL
+rFc.>s'GY,s&8qls%*/Ws$H`RrC-`Om69EVrBA>Pq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuAI\h*1X`JNiHbq0mlYo030Sq`aiUomYXZkoTjHruqCdr?M=fs!@[ls!Rgps!dst
+s"+1&s"FC,s"j[4s#9s;s#U0As#p<Fs$?ZOs$ZlUs%!)[s%<;bs%`Sjs&&_ns/5mss/uC,s0_m9
+s1&*>rOVt(s7u\?s0hm6rO2a6rNuU6s1/0 at rOMs?s1JBFrP/BJs2"`Qs2P)[s2t/]s3:Shs3LYj
+s3^eos4./#p"05ss4[M.s5*e5qr%M5s5X.?s5X.=s5F"9s5*e3s4dS,s4IA&s4..ts3^kms3CYh
+s31Mcs2b5[s,[2=s,$c0s1nZLs1SBCrOi0As1JBFrP&<Bs0Ma-rM]ans.fUds-itPs,d8=s+UK'
+s*EROrBA>Pq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuAJOh5^:jJZA+;q8Ruco;_fjs/Q$uq>^--gT(:TrN6%$s02O.s0D[2rO)C.^UO6O
+rS7G/s5*e5rSIS4rSmeMs7?81s4I;#s4@;%s4%(ss3^krrR_)"s475(s5*e9s5j:As5s at ErTO:G
+rTjFIqs"(Cs6'FGqs!_9s5s at Cs5X.=q;_A5s5<q4s4IA$s3^kms3:Gas2t;Zs2Y/\s2k;arQP;d
+q>UEGs4dS,s4@;*s53e9s60LLs6p!Ys7?9\rU0XRs6p!Us6]^Ms6KXKs4..us3^ekqp,#^q98l^
+s4RG(s7$'Us69RFs5O(:s5*e3s4dS-s4IA's475"s3gqos3LMds31Mcs2b#Uq>Z#clc+MUh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)rBB+fiBI'dJNiHbq0mlYo030SqgSA at omYj`QQH)ls$?ZMs$-NIs$6TNs$crX
+s,-c5rt,3.s&K)#s&K(us&]5's'#G)s&T/!s&K)"s&B"ss&/_js%iYks&/eprDiess&K(uqc3Yq
+s&8els%r_kq+grds&/krs&K"us&f;(qc`r&s'Pe9s(;:Es(VLKrG;LPrGqpXs)A!Ys)J'Vs(q^N
+q0r?QrEoS2s'#G's&B"us%iYcs$H`Ls$-NLrBf[2VgeIAJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)rBB+fiBI'dJNiHbq0mlYo030SqgSA at omYj`i?&"Aruq=br?M=fs!Ians![mr
+s!n%"s"47(s"XO0s"sa6s#9s<s#^6Cs#pBGs$-NLs$H`Rs$crXs%35`s%NGfs%iYks.fUks/Q+$
+s0;U2s0_g4s0M[qs7H>5s0;O,s0;U1s0DU.s0Vg7s1&$<s186Bs1JBGs1eTLs2"`PrPA6Fs24lU
+qo8ZVs2k;as31Mfs3L_lq9T)gs3q"ts475%s4I;%s4IA)s4dS0s53k5s5!_0s4RG(s475"s3q"p
+s3CYhs3(Gbs2Y)Xs2G#Vs,$c1s+:9#s1\NHs1A<BrO`*?s0hs;s1/*?s0_m1s/H$os.fUes.01X
+s-3PDs,6o3s+(,rs)n?]s(nT^q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qrMnbpiMu^nJZA+;q8Ruco;_fjqo8I3ou>gfrN#murN6+'s02O.s0DU1pU1%0
+^UO0urS[Y6s5X.=s5X.=rV6Ees)n at rrRq5*s4mY.rR_)&s4mY3rSIS7s6'FKs6p!Ws7--[s7?9\
+rU9dSrU'RMs6]dOs6K^Os6]XMs6odQs6fpRs6KXKs6K^Lqrn(Es60LIs5j:>s5*e2s4[A&s4%"n
+s3^kps3Ueos4./%s4R5Is5F";s53k4s5F">s6'FEs6BXPs76-\s76-Ws7$'Ws6fpSs6TRIs6BXK
+s60LGs3U_iqp"r\qoefXs6p!Ss60LDs5F"8s5!_1s4[M+s4 at 5#s4%(ss3UMcs31Mcs2b#Uq>Z#c
+lc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)rBB+fiBI'dJNiHbq0mlYo030SqgSA at omYj`QQH)ls$?ZMs$-NIs$6TNs$crX
+s,-c5rt,3.s&K)#s&K(us&]5's'#G)s&T/!s&K)"s&B"ss&/_js%iYks&/eprDiess&K(uqc3Yq
+s&8els%r_kq+grds&/krs&K"us&f;(qc`r&s'Pe9s(;:Es(VLKrG;LPrGqpXs)A!Ys)J'Vs(q^N
+q0r?QrEoS2s'#G's&B"us%iYcs$H`Ls$-NLrBf[2VgeIAJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)rBB+fiBI'dJNiHbq0mlYo030SqgSA at omYj`i?&"Aruq=br?M=fs!Ians![mr
+s!n%"s"47(s"XO0s"sa6s#9s<s#^6Cs#pBGs$-NLs$H`Rs$crXs%35`s%NGfs%iYks.fUks/Q+$
+s0;U2s0_g4s0M[qs7H>5s0;O,s0;U1s0DU.s0Vg7s1&$<s186Bs1JBGs1eTLs2"`PrPA6Fs24lU
+qo8ZVs2k;as31Mfs3L_lq9T)gs3q"ts475%s4I;%s4IA)s4dS0s53k5s5!_0s4RG(s475"s3q"p
+s3CYhs3(Gbs2Y)Xs2G#Vs,$c1s+:9#s1\NHs1A<BrO`*?s0hs;s1/*?s0_m1s/H$os.fUes.01X
+s-3PDs,6o3s+(,rs)n?]s(nT^q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qrMnbpiMu^nJZA+;q8Ruco;_fjqo8I3ou>gfrN#murN6+'s02O.s0DU1pU1%0
+^UO0urS[Y6s5X.=s5X.=rV6Ees)n at rrRq5*s4mY.rR_)&s4mY3rSIS7s6'FKs6p!Ws7--[s7?9\
+rU9dSrU'RMs6]dOs6K^Os6]XMs6odQs6fpRs6KXKs6K^Lqrn(Es60LIs5j:>s5*e2s4[A&s4%"n
+s3^kps3Ueos4./%s4R5Is5F";s53k4s5F">s6'FEs6BXPs76-\s76-Ws7$'Ws6fpSs6TRIs6BXK
+s60LGs3U_iqp"r\qoefXs6p!Ss60LDs5F"8s5!_1s4[M+s4 at 5#s4%(ss3UMcs31Mcs2b#Uq>Z#c
+lc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)q**\bjZ`KhJNiHbq0mlYq*+\)rrDqFq>^,:krt.Lo031>s$QfTs+p]3s+p[_
+s%WMis&/knrD3Gjs&/kns%`Sfs%<;as%35]s$m#Ws$m#Zs%<;cs%iAds&/koq,%)es%`SfrCd/_
+s%35\qaLNUs%<;bs%`Sis&&eps&Aqss&Sqss&f;)s'5S1s'Pe6s'u(As(;:Bs(;:Gs(VLFs().>
+q0r?GrE'#"s&/kls%r_ms%EA[q*+aAj$)LPrVt,kq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)q**\bjZ`KhJNiHbq0mlYq*+\)rrDqFq>^,:ks!cAru_7`r?;+`s!.Ohs!@[l
+s!Rgqs!n%!s"47(s"XO/s"j[4s#0m:rAss?s#g<Fs$-NLs$H`Rs$crXs%35_s%NGes.B=cs.o[m
+s/H%"qlTn"rTsROs)7q=rN#t"s/uC*s/uC*s0;U1s0_g8s1/0 at s1A0As1A<Bo==n4s1A<DrOr6F
+s1eTMs24lUs2P#Xs2b5\s2b5_s3(Acs3L_jrQY;es3^kqs4./$s4RG(s475"s3gqos3CYgs2tA`
+s2b5Zs2"ZLs1eTJs+LE(s+13"s1SHFs186 at s186@s0_m4s0Vg6s0r$8s0)I&s/#ags.01Ys-NbL
+s,I&8s+^Q)s*Ocgs)J'Ts(MFCs'Xl9rVt,kq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qq5W>ljf8-rJZA+;q8Rucq5X>3rrDr9q>^--l)O][rM][orMogsrN-%%s0)I,
+s0DU0rNuI0rO0POpYl/3q;_AJs*=Y%rS7G0s53k7rS at M2s5O(>s5s at Es6K^Ss7H9bs7cQds7?9]
+s7$!WrUBdSqsaXSs7$'Ys76'Ys7QEcs7cQgs7cQds7H?^rUBjUs6]XKs6K^OrU'XOs6BXIrT4(=
+s5*_-s4dS-s4@;(s4mY3s5<qUrVZ]ms69RHs5j:?s5s at Gs60LGs6K^Rqt'jYs7$!Us6fpSs6TdO
+q<J"ErTO:Es5s at Cq98ZXqo\`VrVuo\s5X.;s5*e2s4dS,s4I5"s4%(ss3UMcs31Mcs2b#Uq>Z#c
+lc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)q**\bjZ`KhJNiHbq0mlYq*+\)rrDqFq>^,:krt.Lo031>s$QfTs+p]3s+p[_
+s%WMis&/knrD3Gjs&/kns%`Sfs%<;as%35]s$m#Ws$m#Zs%<;cs%iAds&/koq,%)es%`SfrCd/_
+s%35\qaLNUs%<;bs%`Sis&&eps&Aqss&Sqss&f;)s'5S1s'Pe6s'u(As(;:Bs(;:Gs(VLFs().>
+q0r?GrE'#"s&/kls%r_ms%EA[q*+aAj$)LPrVt,kq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)q**\bjZ`KhJNiHbq0mlYq*+\)rrDqFq>^,:ks!cAru_7`r?;+`s!.Ohs!@[l
+s!Rgqs!n%!s"47(s"XO/s"j[4s#0m:rAss?s#g<Fs$-NLs$H`Rs$crXs%35_s%NGes.B=cs.o[m
+s/H%"qlTn"rTsROs)7q=rN#t"s/uC*s/uC*s0;U1s0_g8s1/0 at s1A0As1A<Bo==n4s1A<DrOr6F
+s1eTMs24lUs2P#Xs2b5\s2b5_s3(Acs3L_jrQY;es3^kqs4./$s4RG(s475"s3gqos3CYgs2tA`
+s2b5Zs2"ZLs1eTJs+LE(s+13"s1SHFs186 at s186@s0_m4s0Vg6s0r$8s0)I&s/#ags.01Ys-NbL
+s,I&8s+^Q)s*Ocgs)J'Ts(MFCs'Xl9rVt,kq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qq5W>ljf8-rJZA+;q8Rucq5X>3rrDr9q>^--l)O][rM][orMogsrN-%%s0)I,
+s0DU0rNuI0rO0POpYl/3q;_AJs*=Y%rS7G0s53k7rS at M2s5O(>s5s at Es6K^Ss7H9bs7cQds7?9]
+s7$!WrUBdSqsaXSs7$'Ys76'Ys7QEcs7cQgs7cQds7H?^rUBjUs6]XKs6K^OrU'XOs6BXIrT4(=
+s5*_-s4dS-s4@;(s4mY3s5<qUrVZ]ms69RHs5j:?s5s at Gs60LGs6K^Rqt'jYs7$!Us6fpSs6TdO
+q<J"ErTO:Es5s at Cq98ZXqo\`VrVuo\s5X.;s5*e2s4dS,s4I5"s4%(ss3UMcs31Mcs2b#Uq>Z#c
+lc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)ofh2\lTY,nJNiHbq0mlYo7$]>qgSA at omZEpLE>tLs$?ZPs+^Q/s+^OYs%*/_
+s%NGcs%<;^s%35_s%*/Zs$QfPrBUBKs$H`RrC-`Vs%35arD*5as%`Sgs%N;_s%<;_s%!)Ys$crU
+s$H`Os$-HGs$6TOs$m#Zs%35as%`SirD<Mlq,@;krD3Gjs&/kss&f/&s'G_7s'bq6s'5S1q0r??
+rD3GgrC[)`s%WM`s$5$skC31*dsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)ofh2\lTY,nJNiHbq0mlYo7$]>qgSA at omZEpcQ<*.r?2%^r?D7es!@[ls!Rgp
+s!dsus"47(s"OI-s"aU2s#0m9s#C$=s#U0As#g<Fs$-NLs$H`Rs$crXs%*/]s-WhTs.'+]s.TIg
+s/#[ks/#\Us5s>qs/5gms/5mrrN#t"s/uC+s0D[4rO;g8q6g1-s0DO,s02I*s02O.qm6=0s0hs;
+s186Cs1S<DrP/BKs2+fRs2=lTs24lTs2G#Xs2b5^s31MfrQkMks3Uels31Mcs2b5Zs2=rTs1eTG
+s180 at s1//_s+:9%s*t']s1A<Bs1&*>s0_m3s/uC+s0;U.s/l="s.fUds-s%Ts-3PGs,I&7s+LE'
+s*Xiis)J'Us(MFCs'Yk3s&oA'kC31*dsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qor?ifl`0d#JZA+;q8Ruco>^e1qo8I3ou?O%s.oUirMKIirM][orMogss/l=(
+s0)I-rNcC.rNuO2rO0VQp#5r1s5X.?s5X"Qs*Xk+s5<q7s5F";s5a.=s5a4Cs6BXNs6p!Ys7H9`
+s7cQgs7ZKbs763Zs76'YrUU![rUg-]s7H?as7ZKerV6Ehs82]ls82ils7cQds7H?_s7-!UrU0^S
+rUBjXrUp3]s7--Vs60LCs5a4As5F"7s5<q;s5j:@rVHQis7lW_s6]jOs60LLs6K^Ms60LMs7--[
+qsj^Us6p!Us6]jQs6K^MpZ__As6'FEs5j.=rQG#ZqoSZTp](9Ls4dS-s4IA'qptess3gqopWif_
+s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)ofh2\lTY,nJNiHbq0mlYo7$]>qgSA at omZEpLE>tLs$?ZPs+^Q/s+^OYs%*/_
+s%NGcs%<;^s%35_s%*/Zs$QfPrBUBKs$H`RrC-`Vs%35arD*5as%`Sgs%N;_s%<;_s%!)Ys$crU
+s$H`Os$-HGs$6TOs$m#Zs%35as%`SirD<Mlq,@;krD3Gjs&/kss&f/&s'G_7s'bq6s'5S1q0r??
+rD3GgrC[)`s%WM`s$5$skC31*dsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)ofh2\lTY,nJNiHbq0mlYo7$]>qgSA at omZEpcQ<*.r?2%^r?D7es!@[ls!Rgp
+s!dsus"47(s"OI-s"aU2s#0m9s#C$=s#U0As#g<Fs$-NLs$H`Rs$crXs%*/]s-WhTs.'+]s.TIg
+s/#[ks/#\Us5s>qs/5gms/5mrrN#t"s/uC+s0D[4rO;g8q6g1-s0DO,s02I*s02O.qm6=0s0hs;
+s186Cs1S<DrP/BKs2+fRs2=lTs24lTs2G#Xs2b5^s31MfrQkMks3Uels31Mcs2b5Zs2=rTs1eTG
+s180 at s1//_s+:9%s*t']s1A<Bs1&*>s0_m3s/uC+s0;U.s/l="s.fUds-s%Ts-3PGs,I&7s+LE'
+s*Xiis)J'Us(MFCs'Yk3s&oA'kC31*dsh,mJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qor?ifl`0d#JZA+;q8Ruco>^e1qo8I3ou?O%s.oUirMKIirM][orMogss/l=(
+s0)I-rNcC.rNuO2rO0VQp#5r1s5X.?s5X"Qs*Xk+s5<q7s5F";s5a.=s5a4Cs6BXNs6p!Ys7H9`
+s7cQgs7ZKbs763Zs76'YrUU![rUg-]s7H?as7ZKerV6Ehs82]ls82ils7cQds7H?_s7-!UrU0^S
+rUBjXrUp3]s7--Vs60LCs5a4As5F"7s5<q;s5j:@rVHQis7lW_s6]jOs60LLs6K^Ms60LMs7--[
+qsj^Us6p!Us6]jQs6K^MpZ__As6'FEs5j.=rQG#ZqoSZTp](9Ls4dS-s4IA'qptess3gqopWif_
+s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)mloWXmlpPrJNiHbq0n/al[Jj6qgSA at omZX!JKF>Fs$-NLs+LE+s+LCUs$QfU
+s%!)Ys$crTrBgNLq*+gCs$6TMs$QZOs$m#[s%E;_rCR#]s%35]s%!#Ws$crUs$H`Os$-$;s$6TN
+s$ZlWs%35_s%EAcs%`Ges%r_ks%NGarC?l[s%WGgs&8qus'#G)s&T/$s&o/Hs%3/Zs$m#Vs$m#Z
+s%35Xb<G<BoDdEkq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)mloWXmlpPrJNiHbq0n/al[Jj6qgSA at omZX!`ub1$ruh7`r?D7ds!7Uks!Rgp
+s!dsus"47's"FC+s"XO0rAFU5s#9s;s#L*@s#g<Fs$-NLs$H`Qs$ZlVs,m>Es-3PMs-`nWs.01]
+s.B=_rSIS3s'l#&rLs7cs.o[ls/>sss/Z1%s/u7&s/u1"s/c7$s/Pmos/>mos/>mqs/Q+"s/c7'
+s02O0s0VO,s0hs<s18*>rOW$@s1JBGs1nZOs24lTs2G#Xs2b5^s2b5[s24lQs1nZKs1A0;s0hs6
+s+LE(s+13"s1/0 at s1/0=s0hs4s/l=$rN-$us/,gis.'+Vs-<VHs,R,;s+gW,s*t&qs*+K_s)%dM
+s().;s'5S,s&T/!s&&eks%Mg/oDdEkq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qn#G9bn#H3'JZA+;q8S8klc/r)qo8I3ou?a+s.TIerM0CgrMB=erMTUmrMfaq
+s/c7&s/uC+rNZ=,rNlI0rO)[6`OGO!s5O(=rT*kQs*aq0s5X.=s5a4As6'FGs69RKs6T^Os6p!X
+s763^rUp-_s7QE`s7--\s7H9_s7H?as7ZKes7lWgs7lWis8)cms8;Ecs8;ons7lWgs7Q?_s7?3Z
+s763]s763^s7cQis8Dups7cQas6]jSs6K^Js5a4BrTO:CrV-?cs7Q?]s7$'Us6p!Ss6K^Ms6fpW
+qsaRQs6fpSs6TdOs6BFErTO4Cs5s at Cs5`q7qoS`Vq8`+,s4RG(q:>Sqs3gqopWif_s2tA_q8W71
+J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)mloWXmlpPrJNiHbq0n/al[Jj6qgSA at omZX!JKF>Fs$-NLs+LE+s+LCUs$QfU
+s%!)Ys$crTrBgNLq*+gCs$6TMs$QZOs$m#[s%E;_rCR#]s%35]s%!#Ws$crUs$H`Os$-$;s$6TN
+s$ZlWs%35_s%EAcs%`Ges%r_ks%NGarC?l[s%WGgs&8qus'#G)s&T/$s&o/Hs%3/Zs$m#Vs$m#Z
+s%35Xb<G<BoDdEkq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)mloWXmlpPrJNiHbq0n/al[Jj6qgSA at omZX!`ub1$ruh7`r?D7ds!7Uks!Rgp
+s!dsus"47's"FC+s"XO0rAFU5s#9s;s#L*@s#g<Fs$-NLs$H`Qs$ZlVs,m>Es-3PMs-`nWs.01]
+s.B=_rSIS3s'l#&rLs7cs.o[ls/>sss/Z1%s/u7&s/u1"s/c7$s/Pmos/>mos/>mqs/Q+"s/c7'
+s02O0s0VO,s0hs<s18*>rOW$@s1JBGs1nZOs24lTs2G#Xs2b5^s2b5[s24lQs1nZKs1A0;s0hs6
+s+LE(s+13"s1/0 at s1/0=s0hs4s/l=$rN-$us/,gis.'+Vs-<VHs,R,;s+gW,s*t&qs*+K_s)%dM
+s().;s'5S,s&T/!s&&eks%Mg/oDdEkq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qn#G9bn#H3'JZA+;q8S8klc/r)qo8I3ou?a+s.TIerM0CgrMB=erMTUmrMfaq
+s/c7&s/uC+rNZ=,rNlI0rO)[6`OGO!s5O(=rT*kQs*aq0s5X.=s5a4As6'FGs69RKs6T^Os6p!X
+s763^rUp-_s7QE`s7--\s7H9_s7H?as7ZKes7lWgs7lWis8)cms8;Ecs8;ons7lWgs7Q?_s7?3Z
+s763]s763^s7cQis8Dups7cQas6]jSs6K^Js5a4BrTO:CrV-?cs7Q?]s7$'Us6p!Ss6K^Ms6fpW
+qsaRQs6fpSs6TdOs6BFErTO4Cs5s at Cs5`q7qoS`Vq8`+,s4RG(q:>Sqs3gqopWif_s2tA_q8W71
+J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)lTX3To02u!JNiHbq0nAgjaR40qgSA at omZd%JKFb2mlpb9s+:9's+:7QrB^HM
+s$?ZMmlpb9s$6TNrBpTOs$QfUs%*)Ys$m#Ws$m#Ws$ZlSs$H`Os$5[0s$-NMs$ZlUs%!)[s%</]
+s%WMes%35[s$crUrBgNQs%!)]s%`Sls%r_ks&&eqq0r?6s$ZlQs$$HJs$H`Rs$crPa$0$Bn,M-k
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)lTX3To02u!JNiHbq0nAgjaR40qgSA at omZd%_&iUur?1t\s!%Ifs!7Ujs!Ian
+s!dsus"+1%s"==)s"OI.s"j[3rAFU5s#C$=s#^6Cs$$HIs$6TMs$HaCs,6o9s,R,As-*JJs-EVM
+rR_)%s',MmrLEnYs.B=bs.]Ogs.o[krMKUmrMKIgs.oOepS%8Qs.TIfs.o[ls/5mqpS\%ks/c7(
+qm$1*s0;U0s0Ma5s0hs;rOMs>s1A<ErP&<Hs1nZKs1SHDs0qm3s02O+s+C?'s+13"s0D[3s0_m8
+s0D[,s/H$qs/>sos.]Ocs-itQs-!DBs,6o5s+UK)s*juos*"E_s)%dMs(24<s'5S,s&T.us&&ek
+s%NGbs%!)VnUBs,gOAtuJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[ql`/j^o;_W+JZA+;q8SJqji7<#qo8I3ou?m/rLj1arM'=erM9CgpSRnerM][o
+s/Z1$s/l=)rNQ7*rNcC.rNuU4s0ftWp#5r1s5X(=qu$JCrT=.As6'FGqs+.Gs6TdQs6fpUs7-'Z
+s7H3]s7?9]s7H?as7ZKes7ZKerV?Ehs8;!Ws8;oos7u]is7cQerUg']s7H?bs7u]mqu-Qms7ZKc
+s7--Vs69RLs6TdNs60FRs7?-YrU^'Ys6fpRs6K^SrU9XOrU'XOs6K^Ms694?s6'FEs5j:Aq;_M7
+s5Eq9s2b)Xq8Vn'q:>Sqs3gqopWif_s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)lTX3To02u!JNiHbq0nAgjaR40qgSA at omZd%JKFb2mlpb9s+:9's+:7QrB^HM
+s$?ZMmlpb9s$6TNrBpTOs$QfUs%*)Ys$m#Ws$m#Ws$ZlSs$H`Os$5[0s$-NMs$ZlUs%!)[s%</]
+s%WMes%35[s$crUrBgNQs%!)]s%`Sls%r_ks&&eqq0r?6s$ZlQs$$HJs$H`Rs$crPa$0$Bn,M-k
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)lTX3To02u!JNiHbq0nAgjaR40qgSA at omZd%_&iUur?1t\s!%Ifs!7Ujs!Ian
+s!dsus"+1%s"==)s"OI.s"j[3rAFU5s#C$=s#^6Cs$$HIs$6TMs$HaCs,6o9s,R,As-*JJs-EVM
+rR_)%s',MmrLEnYs.B=bs.]Ogs.o[krMKUmrMKIgs.oOepS%8Qs.TIfs.o[ls/5mqpS\%ks/c7(
+qm$1*s0;U0s0Ma5s0hs;rOMs>s1A<ErP&<Hs1nZKs1SHDs0qm3s02O+s+C?'s+13"s0D[3s0_m8
+s0D[,s/H$qs/>sos.]Ocs-itQs-!DBs,6o5s+UK)s*juos*"E_s)%dMs(24<s'5S,s&T.us&&ek
+s%NGbs%!)VnUBs,gOAtuJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[ql`/j^o;_W+JZA+;q8SJqji7<#qo8I3ou?m/rLj1arM'=erM9CgpSRnerM][o
+s/Z1$s/l=)rNQ7*rNcC.rNuU4s0ftWp#5r1s5X(=qu$JCrT=.As6'FGqs+.Gs6TdQs6fpUs7-'Z
+s7H3]s7?9]s7H?as7ZKes7ZKerV?Ehs8;!Ws8;oos7u]is7cQerUg']s7H?bs7u]mqu-Qms7ZKc
+s7--Vs69RLs6TdNs60FRs7?-YrU^'Ys6fpRs6K^SrU9XOrU'XOs6K^Ms694?s6'FEs5j:Aq;_M7
+s5Eq9s2b)Xq8Vn'q:>Sqs3gqopWif_s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)k<@dPpHJD%JNiHbq0nYoh1#A(qgSA at qgSQ/rI4W-JKFb2m6:Q#s+13#rrN-a
+jZ`]/s$?TMrB^HNs$clSs$Q`Os$?ZMs$,7%s$-NLs$H`Rs$lrWs%*/^s%*/Zs$QfSs$QfPs$6TJ
+s$-NMs$m#\s%*/^s%NGgq0r?4s$H`Mq`b$Fs$=IbomZ6,hgYD$JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)k<@dPpHJD%JNiHbq0nYoh1#A(qgSA at qgSQ/rI4W-^E3Csr?2+`r?2+`s!%Ig
+s!@[ls!Rgqs!n%!s"+1%s"==)s"OI-s"aU1s"sa5s#0m:s#L*@rB1*Ds$-O9s+LE+s+gW2s,6o:
+s,R,?s,d3+s3^jGs-3PKs-E\Os-`nUs-rnUs.01]s.B7]rLNtYqj[VSnX9?CrKdJMs-WhTs-s%Y
+qj[VSs-s%[s.KCerMBIis/5mqs/H%!s/l7&s0)I,s0;U1s0Vg6s0hs:rOMs:s0M[.s/l=%s/>mJ
+s+13"s/Z1%rN?1%s/H$ps.]Oes.97[s-WhMs,[2=s+p]/s+:9#s*aoms)n?]s)%dMs(24=s'5S+
+s&T.us%r_js%EAas%*/Ys$?TIomZ6,hgYD$JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qkGmFZpT"&/JZA+;q8Sc$h8]Hpqo8I3qo8Z=rPn`7qk3t_rM'=erM9+_rMKOk
+rM]ars/Z1$s/u=(rNQ7*rNcC.s0Vg6s0g%Yp#5r1s5X.?s5j.Vs*t(2rTF.Cqs"(Es6K^Os6]jT
+s7$'YrUU![s7H?as7H?_s7QEcs7cKes7uWjs8:XMs8;ons7uWfs7lWgs7ZKfs82ipq>C3gs7cQc
+s6p!Xs6p!Ts6BRQs7$'Ws7-'Ys7--Ys6p!Us6]dQq<e(Gs6K^Ms69 at CrTF.As5j:As5X"9s5Eq7
+rSde5ou?=trRV"us3gqopWif_s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)k<@dPpHJD%JNiHbq0nYoh1#A(qgSA at qgSQ/rI4W-JKFb2m6:Q#s+13#rrN-a
+jZ`]/s$?TMrB^HNs$clSs$Q`Os$?ZMs$,7%s$-NLs$H`Rs$lrWs%*/^s%*/Zs$QfSs$QfPs$6TJ
+s$-NMs$m#\s%*/^s%NGgq0r?4s$H`Mq`b$Fs$=IbomZ6,hgYD$JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)k<@dPpHJD%JNiHbq0nYoh1#A(qgSA at qgSQ/rI4W-^E3Csr?2+`r?2+`s!%Ig
+s!@[ls!Rgqs!n%!s"+1%s"==)s"OI-s"aU1s"sa5s#0m:s#L*@rB1*Ds$-O9s+LE+s+gW2s,6o:
+s,R,?s,d3+s3^jGs-3PKs-E\Os-`nUs-rnUs.01]s.B7]rLNtYqj[VSnX9?CrKdJMs-WhTs-s%Y
+qj[VSs-s%[s.KCerMBIis/5mqs/H%!s/l7&s0)I,s0;U1s0Vg6s0hs:rOMs:s0M[.s/l=%s/>mJ
+s+13"s/Z1%rN?1%s/H$ps.]Oes.97[s-WhMs,[2=s+p]/s+:9#s*aoms)n?]s)%dMs(24=s'5S+
+s&T.us%r_js%EAas%*/Ys$?TIomZ6,hgYD$JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qkGmFZpT"&/JZA+;q8Sc$h8]Hpqo8I3qo8Z=rPn`7qk3t_rM'=erM9+_rMKOk
+rM]ars/Z1$s/u=(rNQ7*rNcC.s0Vg6s0g%Yp#5r1s5X.?s5j.Vs*t(2rTF.Cqs"(Es6K^Os6]jT
+s7$'YrUU![s7H?as7H?_s7QEcs7cKes7uWjs8:XMs8;ons7uWfs7lWgs7ZKfs82ipq>C3gs7cQc
+s6p!Xs6p!Ts6BRQs7$'Ws7-'Ys7--Ys6p!Us6]dQq<e(Gs6K^Ms69 at CrTF.As5j:As5X"9s5Eq7
+rSde5ou?=trRV"us3gqopWif_s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)j$)@Lq`ah)JNiHbq0nr"eUIMuqgSA at q*+b+q`]QPr>t>is*juts*jtJiBI9,
+rB^<Gs$HZMs$6TKbs).ms$H`Qs$ZlUs%!)Xs$QfQs$QfQs$6TKq*+gFs$QfTs%!)]q0r?2s$3hQ
+q0qN,j*ph(JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)j$)@Lq`ah)JNiHbq0nr"eUIMuqgSA at q*+b+q`_b9r?(bVruqCds!.Ohs!Ian
+s![mrs!n%!s"+1%s"==)s"OI-rA+C/s#'g7s#Bs;s#U0Bs*Xips*juts+13&s+UE+s+gWqs2k;`
+s%WNQs,R,?s,d8Ds-*JIs-<PIs-<VMs-N\Ms-<PIqih&CmudX2s,R,=rJ^c:pQ,?7s,[2Bs-3PM
+s-WbQs-itXs.97`s.]OgrM9Ijs/5mrs/Q+"s/c7&s/u=)rNH7&s/Z0us/#ajrIP!!s*t'EqkjCh
+s.TIbs.01Ys-NbMs,m>?s,$c1s+:9#s*Xims*4Qcs)A!Ss(VLEs'bq4s&f;$s&8qos%WMds%35]
+s$m#Us$-<Cq0qN,j*ph(JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qj/V"Vql9J3JZA+;q8T&,e].Uhqo8I3s/Z+"s/l7>ql9OdrLs1as.fOgqka7e
+rMBIirMT[ps/Q+"s/l7&rNH1(rNZ=,s0Ma4s0_m8bI at 0's5O(=rT*kTs*t(1rT=(Aqrn"Cs6BXN
+s6]jSs6p!WrUKjWs7H?as7H?bs7cQgs7uWiqtp?ig\q0Mqtg?fs7cQhqu$?gqtg?gs7QEas7--X
+s6]dQs6]jQqsj^Us6p!Uq<e(Gq<S(Gs69RIp#lA;s5j:As5X"9s5F"8s5*Y1s4mY-s47"ckPtS3
+s3gqopWif_s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)j$)@Lq`ah)JNiHbq0nr"eUIMuqgSA at q*+b+q`]QPr>t>is*juts*jtJiBI9,
+rB^<Gs$HZMs$6TKbs).ms$H`Qs$ZlUs%!)Xs$QfQs$QfQs$6TKq*+gFs$QfTs%!)]q0r?2s$3hQ
+q0qN,j*ph(JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)j$)@Lq`ah)JNiHbq0nr"eUIMuqgSA at q*+b+q`_b9r?(bVruqCds!.Ohs!Ian
+s![mrs!n%!s"+1%s"==)s"OI-rA+C/s#'g7s#Bs;s#U0Bs*Xips*juts+13&s+UE+s+gWqs2k;`
+s%WNQs,R,?s,d8Ds-*JIs-<PIs-<VMs-N\Ms-<PIqih&CmudX2s,R,=rJ^c:pQ,?7s,[2Bs-3PM
+s-WbQs-itXs.97`s.]OgrM9Ijs/5mrs/Q+"s/c7&s/u=)rNH7&s/Z0us/#ajrIP!!s*t'EqkjCh
+s.TIbs.01Ys-NbMs,m>?s,$c1s+:9#s*Xims*4Qcs)A!Ss(VLEs'bq4s&f;$s&8qos%WMds%35]
+s$m#Us$-<Cq0qN,j*ph(JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qj/V"Vql9J3JZA+;q8T&,e].Uhqo8I3s/Z+"s/l7>ql9OdrLs1as.fOgqka7e
+rMBIirMT[ps/Q+"s/l7&rNH1(rNZ=,s0Ma4s0_m8bI at 0's5O(=rT*kTs*t(1rT=(Aqrn"Cs6BXN
+s6]jSs6p!WrUKjWs7H?as7H?bs7cQgs7uWiqtp?ig\q0Mqtg?fs7cQhqu$?gqtg?gs7QEas7--X
+s6]dQs6]jQqsj^Us6p!Uq<e(Gq<S(Gs69RIp#lA;s5j:As5X"9s5F"8s5*Y1s4mY-s47"ckPtS3
+s3gqopWif_s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)h`fqHs$$7-JNiHbq0o/(c[Ploo7$L!rI4W-JKFb2m6:DrrrD"As$-HIq*2\Z
+s$6TMs$H`Rs$HZMs$H`Os$-*=s$6TNs$ca4s$<\LrI3f,kC37,JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)h`fqHs$$7-JNiHbq0o/(c[Ploo7$L!rI4W-]cR+oruh+ZruqCds!.Ohs!@[l
+s!Rgps!dsts""+#s"47's"F=)s"XO/s"j[4rAO[7s#C%$s*"Eds*4Qis*O]ms*juus2"`Ps24k+
+s+^Q/s+p]3s,-i8s,I&=qi1W9s,[,=s,Hu9s,6c3nVR:%s+^Q-s+KurrIY'%s+UK/s,6o9rJgi<
+s,m>Fs-E\Qs-itWs.'+[s.B7`s.]Ogs.o[krMT[mrMBOis.]Ods.91>rI=j<s.B7]s-s%Vs-NbN
+s-*JEs,I&9s+^Q+s*t&rs*=Wgs)n?^s)7pQs(MFDs'bq5s&f;$s&/kns%WMcs%*/[s$m#Vs$?6?
+rI3f,kC37,JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qhl>SRs/Pn7JZA+;q8T82cc5tbo>^a0s/c7&rPn`7q4R\[s.]IenYH2]rMKUm
+s/>sss/Q+"rN6%$rNH1(rNZC.s0Ma4s0^%Zp#5r1rT!q=qu6VFqrRe=qre"Cs69RKs6K^Os6fjS
+rUBdUs7?9_s7Q?brV6?eqtg9grVYFKrVQWjs7lWiqtp9eqt^9es7cQes7H?^s6opPs6BXKs7$'Y
+s7$'Ws6fpSq<\"Eq<IqCs60:ArT=(?s5a4?s5O"9s53k5s5!Y1s5!_/s4@;#s3^knrPmmts3UMc
+s31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)h`fqHs$$7-JNiHbq0o/(c[Ploo7$L!rI4W-JKFb2m6:DrrrD"As$-HIq*2\Z
+s$6TMs$H`Rs$HZMs$H`Os$-*=s$6TNs$ca4s$<\LrI3f,kC37,JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)h`fqHs$$7-JNiHbq0o/(c[Ploo7$L!rI4W-]cR+oruh+ZruqCds!.Ohs!@[l
+s!Rgps!dsts""+#s"47's"F=)s"XO/s"j[4rAO[7s#C%$s*"Eds*4Qis*O]ms*juus2"`Ps24k+
+s+^Q/s+p]3s,-i8s,I&=qi1W9s,[,=s,Hu9s,6c3nVR:%s+^Q-s+KurrIY'%s+UK/s,6o9rJgi<
+s,m>Fs-E\Qs-itWs.'+[s.B7`s.]Ogs.o[krMT[mrMBOis.]Ods.91>rI=j<s.B7]s-s%Vs-NbN
+s-*JEs,I&9s+^Q+s*t&rs*=Wgs)n?^s)7pQs(MFDs'bq5s&f;$s&/kns%WMcs%*/[s$m#Vs$?6?
+rI3f,kC37,JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qhl>SRs/Pn7JZA+;q8T82cc5tbo>^a0s/c7&rPn`7q4R\[s.]IenYH2]rMKUm
+s/>sss/Q+"rN6%$rNH1(rNZC.s0Ma4s0^%Zp#5r1rT!q=qu6VFqrRe=qre"Cs69RKs6K^Os6fjS
+rUBdUs7?9_s7Q?brV6?eqtg9grVYFKrVQWjs7lWiqtp9eqt^9es7cQes7H?^s6opPs6BXKs7$'Y
+s7$'Ws6fpSq<\"Eq<IqCs60:ArT=(?s5a4?s5O"9s53k5s5!Y1s5!_/s4@;#s3^knrPmmts3UMc
+s31Mcs2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)gHO;>JNiHbq0oG0a+"$gq`ah)q*+b+q`]QPr>t>iqgSPFh`h!'[6FUTs$?NI
+s$?ZMm6:P8q0r?.V`rr:m=+m2JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)gHO;>JNiHbq0oG0a+"$gq`ah)q*+b+q`_V5o,muTs!%Ifs!7Ohs!Ians![mr
+s!n%!s"+1%r@\%%s"OI.rA4I1s#'gns)7pVs)J'Zs)e9`s*+Kfs*F^WrOi.ps*t'!s+13%s+C?*
+q1ep's+^Q/s+^K+s+L?'rIXQjs+(-!s*joos*FQfs*4Qfq0)d`s*XiqrIFp"s+UK/s,-i:s,d8D
+rKI8Gs-EVNrL*\Ts.'+\rLNtYs.01[s-s%Ws-Wb7rI4d4s-N\Ms-*JFs,[2?s,?u7s+^Q+s+(,t
+s*=Wfs)\3\s)A!Ts(_RGs().<s'>Y-s&K(ss%iYhs%<;]s$m#Ws$ZlRm69A+m=+m2JUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[qgT&rHJZA+;q8TP:a2\,Zql9J3s/Q$us/c1=ql9C`rLs7crM/t[rMBIis/5mq
+s/H$urN,t"rN?+&rNQ=,s0D[2s0Vg7c+!B)s5Nq9qu6VFs5a";qr[qAs60LIs6K^Os6]dQrU9^S
+s763]s7H9`rV-9cqt^3erVQQkkPb5SrVQWks7uKeqt^-as7cQes7QEas7?9]rTO:Es5s:Ls6p!U
+s6]jQq<RqCq<@kAs6'(;s5j:As5X(;s5F"9s5*e3s4mY1s4mY/s4IA%s3gqns3CYgs3'6uqp,5c
+s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)gHO;>JNiHbq0oG0a+"$gq`ah)q*+b+q`]QPr>t>iqgSPFh`h!'[6FUTs$?NI
+s$?ZMm6:P8q0r?.V`rr:m=+m2JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)gHO;>JNiHbq0oG0a+"$gq`ah)q*+b+q`_V5o,muTs!%Ifs!7Ohs!Ians![mr
+s!n%!s"+1%r@\%%s"OI.rA4I1s#'gns)7pVs)J'Zs)e9`s*+Kfs*F^WrOi.ps*t'!s+13%s+C?*
+q1ep's+^Q/s+^K+s+L?'rIXQjs+(-!s*joos*FQfs*4Qfq0)d`s*XiqrIFp"s+UK/s,-i:s,d8D
+rKI8Gs-EVNrL*\Ts.'+\rLNtYs.01[s-s%Ws-Wb7rI4d4s-N\Ms-*JFs,[2?s,?u7s+^Q+s+(,t
+s*=Wfs)\3\s)A!Ts(_RGs().<s'>Y-s&K(ss%iYhs%<;]s$m#Ws$ZlRm69A+m=+m2JUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[qgT&rHJZA+;q8TP:a2\,Zql9J3s/Q$us/c1=ql9C`rLs7crM/t[rMBIis/5mq
+s/H$urN,t"rN?+&rNQ=,s0D[2s0Vg7c+!B)s5Nq9qu6VFs5a";qr[qAs60LIs6K^Os6]dQrU9^S
+s763]s7H9`rV-9cqt^3erVQQkkPb5SrVQWks7uKeqt^-as7cQes7QEas7?9]rTO:Es5s:Ls6p!U
+s6]jQq<RqCq<@kAs6'(;s5j:As5X(;s5F"9s5*e3s4mY1s4mY/s4IA%s3gqns3CYgs3'6uqp,5c
+s2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)eNVl>JNiHbq0o_8a+!hJrrDp[q0r-'rI4W-JKFb2m6:Drrr at s@q`k*Gs$,g5
+q0o/(qgRH&nUC<6JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)eNVl>JNiHbq0o_8a+!hJrrDp[q0r-'rI4W-\K:bmpE'>VruqCds!.Cds!@[l
+s!Rgps!dsts""%!q^qh$r at n7+s"aUds(MFIs(q^Ps)7pVs)J'Zs)e:KrO2_cs*+Kgs*F]ls*Xip
+q1&?ls*t&trI+Wlqg83drH\EhrH\Efs*+Kcs)e9^s)S-YqeuLOs(hXLs(VLJs)%dTs)\3_s*+Kg
+s*Xirs+:9)s+p]3s,-c5s,I&=s,[,?s-!DGs-<JGrK[>Fs,m,+s,[&;s,6o6s+p]1s+LE(s*t&s
+s*F]hs)\3Zs).jQs(hXJs(24>s'Yk4s&oA%s&&els%NGas%!)Xs$ZlSs$H`Nm6:DrhuE4qq>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qeZ.NHJZA+;q8ThBa2[qTrrDqrq8WB5s/Z1$rPn`7oq;>YrM'=enYH,[s/,am
+s/>ssrN#murN6%$rNH7*s0;U0s0Ma4s0_[3rO1Iip#5f-s5X"Us*sk*q;qY=s60LIs6BXMs6T^O
+rU0XQs7--[s7?3^rV$3aqtU-crVHKirVZ3aqu$9eq>0p_q=sp_s7ZKcs7H?_s763[s5s:As5a4L
+s6opSs6]jQs6KRIqs!q?qrde;qrRk=s5X(;s5<q7s5!Y/s4dS-s4RG's3q"ps3:Ses2tA`s5j:A
+s5Mr9s3CYgs2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)eNVl>JNiHbq0o_8a+!hJrrDp[q0r-'rI4W-JKFb2m6:Drrr at s@q`k*Gs$,g5
+q0o/(qgRH&nUC<6JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)eNVl>JNiHbq0o_8a+!hJrrDp[q0r-'rI4W-\K:bmpE'>VruqCds!.Cds!@[l
+s!Rgps!dsts""%!q^qh$r at n7+s"aUds(MFIs(q^Ps)7pVs)J'Zs)e:KrO2_cs*+Kgs*F]ls*Xip
+q1&?ls*t&trI+Wlqg83drH\EhrH\Efs*+Kcs)e9^s)S-YqeuLOs(hXLs(VLJs)%dTs)\3_s*+Kg
+s*Xirs+:9)s+p]3s,-c5s,I&=s,[,?s-!DGs-<JGrK[>Fs,m,+s,[&;s,6o6s+p]1s+LE(s*t&s
+s*F]hs)\3Zs).jQs(hXJs(24>s'Yk4s&oA%s&&els%NGas%!)Xs$ZlSs$H`Nm6:DrhuE4qq>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qeZ.NHJZA+;q8ThBa2[qTrrDqrq8WB5s/Z1$rPn`7oq;>YrM'=enYH,[s/,am
+s/>ssrN#murN6%$rNH7*s0;U0s0Ma4s0_[3rO1Iip#5f-s5X"Us*sk*q;qY=s60LIs6BXMs6T^O
+rU0XQs7--[s7?3^rV$3aqtU-crVHKirVZ3aqu$9eq>0p_q=sp_s7ZKcs7H?_s763[s5s:As5a4L
+s6opSs6]jQs6KRIqs!q?qrde;qrRk=s5X(;s5<q7s5!Y/s4dS-s4RG's3q"ps3:Ses2tA`s5j:A
+s5Mr9s3CYgs2tA_q8W71J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)d6?H:JNiTfq0oq>a+!VDrrDp[q0r-'rI4W-JKFb2m6:Drrr at a:s$,a3q0o/(
+pO;$"omZ`:JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)d6?H:JNiTfq0oq>a+!VDrrDp[q0r-'rI4W-Wuh9`ruqCdr?M=ds!.Ohs!@[l
+s!Rgps!dmrq^_Urs"47's"FC\s'u(?s(D at Fs(_LJs(q^Qs0)C*s"XOms)S-\s)e9`s*"3_rHIpX
+qfMdXqf;^Vs)S-Ys)7pTs)%dOs(_RJs(MFFs(;:Bs'u(<s'bq8s'bq;s(;:Fs(q^Qs)J'\s*"Ef
+s*XirrIP!#s+C?)s+UK-rJ1E0s,-W2rJgi9s,6o7q0r@!rJ(?+s+C?'s+13#s*aons*=Wgs)e9\
+s)%dOs(VLGs(;:@s'Yk5s'5S,s&K(rs%`Sfs%35[s$crUs$QfPs$5m6pO;$"omZ`:JUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[qdAl*DJZA7?q8U%Ha2[_NrrDqrq8W<3s/Z+<ql97\s.TCcs.f+[rMBOkrMT[o
+rMogsrN,t"rN?1(s02O.s0D[2s0Vg6pU8hcoATT+qu6VFrT!_7rT4(As6'FGs6BRKrTsLMrU0^S
+s7--[s7?3]s7Q?arV-3arV?EgrVQKis8Dckq>:'cq>'j]q=jj]s7QEas7?9]s7--Ys5a.=s5O"G
+s6fpSs6TdOs6BLGqrmk=qr[M3s5a4?s5O(;s5*e3s4mY/s4[M+s4IA's4%(rs3CYfs2k;^s2Y0"
+s5O(:s53k5huE`!s2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)d6?H:JNiTfq0oq>a+!VDrrDp[q0r-'rI4W-JKFb2m6:Drrr at a:s$,a3q0o/(
+pO;$"omZ`:JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)d6?H:JNiTfq0oq>a+!VDrrDp[q0r-'rI4W-Wuh9`ruqCdr?M=ds!.Ohs!@[l
+s!Rgps!dmrq^_Urs"47's"FC\s'u(?s(D at Fs(_LJs(q^Qs0)C*s"XOms)S-\s)e9`s*"3_rHIpX
+qfMdXqf;^Vs)S-Ys)7pTs)%dOs(_RJs(MFFs(;:Bs'u(<s'bq8s'bq;s(;:Fs(q^Qs)J'\s*"Ef
+s*XirrIP!#s+C?)s+UK-rJ1E0s,-W2rJgi9s,6o7q0r@!rJ(?+s+C?'s+13#s*aons*=Wgs)e9\
+s)%dOs(VLGs(;:@s'Yk5s'5S,s&K(rs%`Sfs%35[s$crUs$QfPs$5m6pO;$"omZ`:JUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[qdAl*DJZA7?q8U%Ha2[_NrrDqrq8W<3s/Z+<ql97\s.TCcs.f+[rMBOkrMT[o
+rMogsrN,t"rN?1(s02O.s0D[2s0Vg6pU8hcoATT+qu6VFrT!_7rT4(As6'FGs6BRKrTsLMrU0^S
+s7--[s7?3]s7Q?arV-3arV?EgrVQKis8Dckq>:'cq>'j]q=jj]s7QEas7?9]s7--Ys5a.=s5O"G
+s6fpSs6TdOs6BLGqrmk=qr[M3s5a4?s5O(;s5*e3s4mY/s4[M+s4IA's4%(rs3CYfs2k;^s2Y0"
+s5O(:s53k5huE`!s2b#Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)bs($6JNi`jq0p4Fa+!><rrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,nV*=L"
+huEM$q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)bs($6JNi`jq0p4Fa+!><rrDp[q0r-'rI4W-Wuh9_ruh=br?D1`s!%Ifs!7Uj
+s!Ianr@%Olr at 7gtr@ItRs'G_5s'bq;s(2(>s(MG3rMolJs(VLJs(q^Ps).jTs)@dRo5O_Is)%XL
+qeQ.Fs(MFFs(;:As'u(<s'Yk6s'G_2q-<r(s'5S0s'G_5s'l"?s(MFJs).jVs)\3as*4QhrHeKj
+s*XiprI4css+1-$s+LE+s+^K+s+LE)q0r?nrI4cps*Xins*F]js*"Eas)\3[s).jOs(MFFs(24?
+s'bq6s'5S-s&f;$s&&eks%EA`s$m#Us$ZlSs$H`Nks"]fhuEM$q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qc)T[@JZACCq8U=Pa2[GFrrDqrq8W61rPn`7o:Z&Us.]IenYH2]rMKUms/>mq
+rMogsrN,t"rN?1(s02O.s0D[3s0_g6s0_g6h7)k3s5NqTs*sk)q;hS;s6'FGs69LIrTjFKrU'XQ
+s7$'YrUU![rUg-_rV$-_rV6?eq>0d]q>1!aq=sd[q=ad[s7H?_s763[s7$'Ws5O"9s5<kDrU'XO
+s6K^Ms69LGqrde;oB#f/s5X.=s53k3s4dS-s4RG)s4@;%s4..ts3L_hs2k;]s2P)Xs5F"9s5*_1
+s4mY.huEMlq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)bs($6JNi`jq0p4Fa+!><rrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,nV*=L"
+huEM$q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)bs($6JNi`jq0p4Fa+!><rrDp[q0r-'rI4W-Wuh9_ruh=br?D1`s!%Ifs!7Uj
+s!Ianr@%Olr at 7gtr@ItRs'G_5s'bq;s(2(>s(MG3rMolJs(VLJs(q^Ps).jTs)@dRo5O_Is)%XL
+qeQ.Fs(MFFs(;:As'u(<s'Yk6s'G_2q-<r(s'5S0s'G_5s'l"?s(MFJs).jVs)\3as*4QhrHeKj
+s*XiprI4css+1-$s+LE+s+^K+s+LE)q0r?nrI4cps*Xins*F]js*"Eas)\3[s).jOs(MFFs(24?
+s'bq6s'5S-s&f;$s&&eks%EA`s$m#Us$ZlSs$H`Nks"]fhuEM$q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qc)T[@JZACCq8U=Pa2[GFrrDqrq8W61rPn`7o:Z&Us.]IenYH2]rMKUms/>mq
+rMogsrN,t"rN?1(s02O.s0D[3s0_g6s0_g6h7)k3s5NqTs*sk)q;hS;s6'FGs69LIrTjFKrU'XQ
+s7$'YrUU![rUg-_rV$-_rV6?eq>0d]q>1!aq=sd[q=ad[s7H?_s763[s7$'Ws5O"9s5<kDrU'XO
+s6K^Ms69LGqrde;oB#f/s5X.=s53k3s4dS-s4RG)s4@;%s4..ts3L_hs2k;]s2P)Xs5F"9s5*_1
+s4mY.huEMlq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)aZeU2JNilnq0pLNa+!&4rrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,nV*=?s
+huEY(q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)aZeU2JNilnq0pLNa+!&4rrDp[q0r-'rI4W-W?2']ruh7`q]Pn^s!%Ifs!7Uj
+s!IUjq'c7ls!n%Ms&oA+s'5S1s'YY2s.fUis.fT?rF>k=s(;:Ds(MFIqeP_:s(MFEqdoY8rF>k9
+s'Pe3s'5S.s&o(uq,dMss&oA*s',M/s'Yk9s(24Ds(hXPs)7pVs)J!Xs)e9`s*"Eds*4Qhs*F]l
+s*Xiqs*surs*aopq0r?hs*4Qfs*"Ebs)e9^s)S-Xs).jRs(hXJrFGq<s'bq7s'>Y.s&f;%s&B"q
+s%`Ses%*/Zs$QfQs$QfQs$?ZLks"QbhuEY(q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qaf=7<JZAOGq8UUXa2[/>rrDqrq8W61rPn`7nY#iSs.]IenYH2]rMKUmrM]aq
+rMoaqrN,t"s/uC*s02O.s0D[2s0V[2rO1UmmG[sAs*t",q;_G7s5j:Cs6':DrTa:Gs6TdQrU9dU
+rUKpYs7?3]s7Q9_p\4R[s7u]knbN(Wq=j^Yqt9p[rU^'[s7--Ys6p!Us5<k5s5*_ArTsRMs6BXK
+s60FEqr[M3oAol1s5<q5s4[M+s4IA's475#s4%(ts3Uejs2tA^s2G#Vs24los5!S-s4dS,s4IA&
+huEYpq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)aZeU2JNilnq0pLNa+!&4rrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,nV*=?s
+huEY(q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)aZeU2JNilnq0pLNa+!&4rrDp[q0r-'rI4W-W?2']ruh7`q]Pn^s!%Ifs!7Uj
+s!IUjq'c7ls!n%Ms&oA+s'5S1s'YY2s.fUis.fT?rF>k=s(;:Ds(MFIqeP_:s(MFEqdoY8rF>k9
+s'Pe3s'5S.s&o(uq,dMss&oA*s',M/s'Yk9s(24Ds(hXPs)7pVs)J!Xs)e9`s*"Eds*4Qhs*F]l
+s*Xiqs*surs*aopq0r?hs*4Qfs*"Ebs)e9^s)S-Xs).jRs(hXJrFGq<s'bq7s'>Y.s&f;%s&B"q
+s%`Ses%*/Zs$QfQs$QfQs$?ZLks"QbhuEY(q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qaf=7<JZAOGq8UUXa2[/>rrDqrq8W61rPn`7nY#iSs.]IenYH2]rMKUmrM]aq
+rMoaqrN,t"s/uC*s02O.s0D[2s0V[2rO1UmmG[sAs*t",q;_G7s5j:Cs6':DrTa:Gs6TdQrU9dU
+rUKpYs7?3]s7Q9_p\4R[s7u]knbN(Wq=j^Yqt9p[rU^'[s7--Ys6p!Us5<k5s5*_ArTsRMs6BXK
+s60FEqr[M3oAol1s5<q5s4[M+s4IA's475#s4%(ts3Uejs2tA^s2G#Vs24los5!S-s4dS,s4IA&
+huEYpq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)`BN+,JNj)tq0pdV`I?W,rrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,nV*=3o
+fDgDNl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)`BN+,JNj)tq0pdV`I?W,rrDp[q0r-'rI4W-V]Pj[r?1nXruh=bs!.Ohq^(t`
+r?qVCs&B#!s&]5'rEK/(qjma/rE]G0s'Pe7s'l"=rFPG.s'l"9s'P_2rE];*s'#G)s&T(urD`Ae
+s&/kqs&B"us&T)"s&oA*s'>Y3s'l">s(D at Fs(VFHs(q^Ps)A!Xs)S'Zs)e9`s*+Kfs*+Ebs)n-d
+s)\3\rGhjUs)%dPs(hXKs(MFFs(24>rF#Y4s'>Y/s&oA&s&B"rs%r_is%EA_s$crTrB^HMs$?ZM
+k<A3\fDgDNl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q`N%b6JZAaMq8Um``Q$`6rrDqrq8W61rPn`7s.AhSs.TCcrM/t[rMBOkrMTUm
+s/GgorN#murN6+&s02O.s0D[2rNuO2rO2I0rO2[6qmQ=0mG[sAs*sk(q;_M9s5s at Es60:Cqs+4I
+s6TdQs6fjSs7$!Ws76-[naueRs7cEcs7cEas7cKeqtKp[qt9p[qt'dWrUKpWs6p!Us6]jCrS at M/
+rTsFIs6BXKs60LGs5s"9n`9N+s5O(8s4dS+s4@;%s4./!s3q"rs3^kls3(G`s2G#Us2+fPs5!_0
+s4[G+s4[M*s4@;$s4%(sfDgEAlc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)`BN+,JNj)tq0pdV`I?W,rrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,nV*=3o
+fDgDNl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)`BN+,JNj)tq0pdV`I?W,rrDp[q0r-'rI4W-V]Pj[r?1nXruh=bs!.Ohq^(t`
+r?qVCs&B#!s&]5'rEK/(qjma/rE]G0s'Pe7s'l"=rFPG.s'l"9s'P_2rE];*s'#G)s&T(urD`Ae
+s&/kqs&B"us&T)"s&oA*s'>Y3s'l">s(D at Fs(VFHs(q^Ps)A!Xs)S'Zs)e9`s*+Kfs*+Ebs)n-d
+s)\3\rGhjUs)%dPs(hXKs(MFFs(24>rF#Y4s'>Y/s&oA&s&B"rs%r_is%EA_s$crTrB^HMs$?ZM
+k<A3\fDgDNl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q`N%b6JZAaMq8Um``Q$`6rrDqrq8W61rPn`7s.AhSs.TCcrM/t[rMBOkrMTUm
+s/GgorN#murN6+&s02O.s0D[2rNuO2rO2I0rO2[6qmQ=0mG[sAs*sk(q;_M9s5s at Es60:Cqs+4I
+s6TdQs6fjSs7$!Ws76-[naueRs7cEcs7cEas7cKeqtKp[qt9p[qt'dWrUKpWs6p!Us6]jCrS at M/
+rTsFIs6BXKs60LGs5s"9n`9N+s5O(8s4dS+s4@;%s4./!s3q"rs3^kls3(G`s2G#Us2+fPs5!_0
+s4[G+s4[M*s4@;$s4%(sfDgEAlc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)^HUP(K0K*[ffmH*eNX!5q`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(jaQ%c
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)^HUP(K0K*[ffmH*eNX!5q`ah)q*+b+q`^htr?(hVru_7`s!%Ifq'>h`r?VCh
+s%WMhs%r_ns&AqtqcE`_s-Wg)q-!`%s'5S1s'P/"s'5S-s&oA'qc<Mms&B"srDNYms%rYio1o<]
+s%r_ms&/kqs&B"us&T/$s'#G.s'Pe6s'bq:s'u(>s(D at Hs(hXNrGDRPs)7pVs)J'XrGV^Rq0r?\
+s(qXLs(_RIs(;:Bs'u(<s'Yk6qcs/*s&oA's&K(ss%r_js%NGcs%*/Ys$HTJs$?ZMs$,[1jaQ%c
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q^T-22K<"aefrE*4eZ/WLql9J3q5XD5ql9UenY#oUrM'=eoq_V_s.oUis/,am
+s/>mqpT"1mrN-%$s/uC*s02O.s0M[2rO)7*s0_O.qmYtOqu6VFs5F"9s5Ek7rT!q=s5j:Cq<7Y=
+s6BXMrTsROrU0XQp$h_Gs7?9_s7QEcs7cQes7Q?^rUg-_p\+RYqt0jYrUTjUrUBdSs6fpSs6Td@
+s4dM+rTj at Gs69RIs6'FEq;q5/q;_M7rT!q;s53k3s4RG's4./!s3q"rs3^kns3L_hs2k;\s24lQ
+s1nZLs4dM*rS%;)s4@;%s4%(ts3^kmrQa7!J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)^HUP(K0K*[ffmH*eNX!5q`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(jaQ%c
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)^HUP(K0K*[ffmH*eNX!5q`ah)q*+b+q`^htr?(hVru_7`s!%Ifq'>h`r?VCh
+s%WMhs%r_ns&AqtqcE`_s-Wg)q-!`%s'5S1s'P/"s'5S-s&oA'qc<Mms&B"srDNYms%rYio1o<]
+s%r_ms&/kqs&B"us&T/$s'#G.s'Pe6s'bq:s'u(>s(D at Hs(hXNrGDRPs)7pVs)J'XrGV^Rq0r?\
+s(qXLs(_RIs(;:Bs'u(<s'Yk6qcs/*s&oA's&K(ss%r_js%NGcs%*/Ys$HTJs$?ZMs$,[1jaQ%c
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q^T-22K<"aefrE*4eZ/WLql9J3q5XD5ql9UenY#oUrM'=eoq_V_s.oUis/,am
+s/>mqpT"1mrN-%$s/uC*s02O.s0M[2rO)7*s0_O.qmYtOqu6VFs5F"9s5Ek7rT!q=s5j:Cq<7Y=
+s6BXMrTsROrU0XQp$h_Gs7?9_s7QEcs7cQes7Q?^rUg-_p\+RYqt0jYrUTjUrUBdSs6fpSs6Td@
+s4dM+rTj at Gs69RIs6'FEq;q5/q;_M7rT!q;s53k3s4RG's4./!s3q"rs3^kns3L_hs2k;\s24lQ
+s1nZLs4dM*rS%;)s4@;%s4%(ts3^kmrQa7!J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0>,$LHbN_iBG;2bs).-q`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(iI9\a
+JU[!8JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0>,$LHbN_iBG;2bs).-q`ah)q*+b+q`^>fru_7as!$tXr?D84s%<;as%WMh
+rDEMks&8l[s-3O!qc3Yqs&K)"s&\Mgs&T/!s&8qprD3Gis&&Yks&&emrD3Ggs%WMes%E5]s%35_
+s%35_s%EAcs%WGes%r_ms&/kqs&B#!s&]5&s'#G,s'5S1s'bq<s(2. at s(D at Fs(VFHs(VLHrFbqT
+s(D4 at s(24?s'bq7s'G_1s'#G*qcNl"s&K(ts%r_js%NA`s%35[s$QfOs$$BGs$6TKjZ_XPhuA7V
+m='Wdh>dKTV#Pr~>
+JcF-trr at WMhuB[q];jc.LT:0irN#%[a2ZB(rrDqrq8W61rPn`7s.91]nY#oUrM'=erM97arM9Ii
+rMKOks/>UirMogss/c7&s/uC*s02O.s0D[2q6]n(s0VO.rO2[6mG[s at s*k"+s53k7s5Ee5s5X.@
+s5s at EpZVG;s6BRKs6TdOp[%_Cq<n:Ps763^qt:!\s7--YrUKpYrU]jWrU]pWrUKdSrU9^QrU'XO
+s6K^=s4RA'rTa4Cs60LGs5s at Cp#Pf+s5Nq7s5O(:s5!_/s4@;#s3q"rs3^kns3L_js3:Sds2Y/X
+s2"`Ns1\NHs4RA'rRq5's475#s3q"qs3UMchuA8ImDa_Wh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0>,$LHbN_iBG;2bs).-q`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(iI9\a
+JU[!8JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0>,$LHbN_iBG;2bs).-q`ah)q*+b+q`^>fru_7as!$tXr?D84s%<;as%WMh
+rDEMks&8l[s-3O!qc3Yqs&K)"s&\Mgs&T/!s&8qprD3Gis&&Yks&&emrD3Ggs%WMes%E5]s%35_
+s%35_s%EAcs%WGes%r_ms&/kqs&B#!s&]5&s'#G,s'5S1s'bq<s(2. at s(D at Fs(VFHs(VLHrFbqT
+s(D4 at s(24?s'bq7s'G_1s'#G*qcNl"s&K(ts%r_js%NA`s%35[s$QfOs$$BGs$6TKjZ_XPhuA7V
+m='Wdh>dKTV#Pr~>
+JcF-trr at WMhuB[q];jc.LT:0irN#%[a2ZB(rrDqrq8W61rPn`7s.91]nY#oUrM'=erM97arM9Ii
+rMKOks/>UirMogss/c7&s/uC*s02O.s0D[2q6]n(s0VO.rO2[6mG[s at s*k"+s53k7s5Ee5s5X.@
+s5s at EpZVG;s6BRKs6TdOp[%_Cq<n:Ps763^qt:!\s7--YrUKpYrU]jWrU]pWrUKdSrU9^QrU'XO
+s6K^=s4RA'rTa4Cs60LGs5s at Cp#Pf+s5Nq7s5O(:s5!_/s4@;#s3q"rs3^kns3L_js3:Sds2Y/X
+s2"`Ns1\NHs4RA'rRq5's475#s3q"qs3UMchuA8ImDa_Wh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0=tuMa$rcks!(8a$0M'q`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(h1"8]
+JU[-<JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0=tuMa$rcks!(8a$0M'q`ah)q*+b+q`^8druh=bq]c%`q]bt^ruh>/s$crW
+s%*/^rD!;es%iYkqiLgjqbdAis%iYks&&/]s&&emrD*;cs%NGes%`Ges%`SgrCm5as%<;_s%*)Y
+s$lfQs$m#YrCR#]s%NGes%iYks&&_ns&/kqs&B"us&f;*s'G_4rF#Y6s'kq:s().>s'l":s'YYO
+q-j;2s'G_1s'#G*s&]/!qc*Sos&&els%NGbs%*/[s%*/[s$ZlQq*+gCj$):JhuA7VnU?&hh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];jW*MlQTmrN,sunZ'RJa/].>ql9J3q5XD5ql9UdrL`\SrLs7coqVP]s.fOg
+s/#[ks/5goo;V\grN#t"s/l=(s02O.qm-+*q6^1.rNuC.s0hm8oATT)qu$JBs53k5s53k7rSd_7
+s5X.?s5j(>q<7kCp#uG?rTO"?s6BFGs6]jUs763]s7H?_s7#jPs6opUs7--Ys7-'YrUKdSrU9XO
+rU'LKs6K^Ms4IA'rRU`-s60LGs5s at CrT*G-rSmk8s53_3s5!_/s4IA$s3q"qs3Uels3CYhs31Md
+s2b5Zs2+fOs1eTIs1J6\rRh/%s4./!s3gqos3LA`s30C#J]@6"JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0=tuMa$rcks!(8a$0M'q`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(h1"8]
+JU[-<JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0=tuMa$rcks!(8a$0M'q`ah)q*+b+q`^8druh=bq]c%`q]bt^ruh>/s$crW
+s%*/^rD!;es%iYkqiLgjqbdAis%iYks&&/]s&&emrD*;cs%NGes%`Ges%`SgrCm5as%<;_s%*)Y
+s$lfQs$m#YrCR#]s%NGes%iYks&&_ns&/kqs&B"us&f;*s'G_4rF#Y6s'kq:s().>s'l":s'YYO
+q-j;2s'G_1s'#G*s&]/!qc*Sos&&els%NGbs%*/[s%*/[s$ZlQq*+gCj$):JhuA7VnU?&hh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];jW*MlQTmrN,sunZ'RJa/].>ql9J3q5XD5ql9UdrL`\SrLs7coqVP]s.fOg
+s/#[ks/5goo;V\grN#t"s/l=(s02O.qm-+*q6^1.rNuC.s0hm8oATT)qu$JBs53k5s53k7rSd_7
+s5X.?s5j(>q<7kCp#uG?rTO"?s6BFGs6]jUs763]s7H?_s7#jPs6opUs7--Ys7-'YrUKdSrU9XO
+rU'LKs6K^Ms4IA'rRU`-s60LGs5s at CrT*G-rSmk8s53_3s5!_/s4IA$s3q"qs3Uels3CYhs31Md
+s2b5Zs2+fOs1eTIs1J6\rRh/%s4./!s3gqos3LA`s30C#J]@6"JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0=hqO$<Agmlnd@^HVYtq`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(fm_iY
+JU[9 at JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0=hqO$<Agmlnd@^HVYtq`ah)q*+b+q`^8dru_7`q]Y\Vr?)&'s$6TOs$crY
+qb-r_s%WHOs,?sfqb@)as%EAas%D`QrD!5arCd)]s%E5_s%EAas%3/[s%!)Ys$clSs$QfQqa(6K
+s$QfTs$m#Ys%35_s%NGes%`MhrD3Ggs%iYms&K)$s&o;(s',M.rE]G0s'>Y0rEK)Hq-<r(s&oA'
+s&K(us&/kos&/korD<Mis%WMds%*/Zs$ZlUs$m#Ws$H`Mffn)<huA7VomVJlh>dKTV#Pr~>
+JcF-trr at WMhuB[q];jK&T;qplo;_W+rN6%"rN#gqa2YlorrDqrq8W61rPn`7s.0+[s.AhSrLs7c
+s.f=_rM0=es/#[ks/5CcrMfgsrN#t"s/l=(s0)I,qm$%(qm6=.rNlC.rO)[6s0qscrS[A+qtpD@
+s5*e3s5*e5s5<e5s5O(>s5j:Cp#l/5n)aH/s6':Cs69RLs6]jUrUU!Xs6fpRrTjFKrU'FKp[A(K
+qsF at KrTj@Gs69L5rRLr4pZVY?s5s at Cs5a4?qr7S7pYu52s53e3s53k3s4[M)s4..ts3Uels3CYh
+s31Mds2tA`s2P)Vs2"`Ms1\NGs1A0ZrR_)#s4%(ts3^kmp!3T]s3(Gas2a*tJ]@B&JcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)]0=hqO$<Agmlnd@^HVYtq`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(fm_iY
+JU[9 at JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0=hqO$<Agmlnd@^HVYtq`ah)q*+b+q`^8dru_7`q]Y\Vr?)&'s$6TOs$crY
+qb-r_s%WHOs,?sfqb@)as%EAas%D`QrD!5arCd)]s%E5_s%EAas%3/[s%!)Ys$clSs$QfQqa(6K
+s$QfTs$m#Ys%35_s%NGes%`MhrD3Ggs%iYms&K)$s&o;(s',M.rE]G0s'>Y0rEK)Hq-<r(s&oA'
+s&K(us&/kos&/korD<Mis%WMds%*/Zs$ZlUs$m#Ws$H`Mffn)<huA7VomVJlh>dKTV#Pr~>
+JcF-trr at WMhuB[q];jK&T;qplo;_W+rN6%"rN#gqa2YlorrDqrq8W61rPn`7s.0+[s.AhSrLs7c
+s.f=_rM0=es/#[ks/5CcrMfgsrN#t"s/l=(s0)I,qm$%(qm6=.rNlC.rO)[6s0qscrS[A+qtpD@
+s5*e3s5*e5s5<e5s5O(>s5j:Cp#l/5n)aH/s6':Cs69RLs6]jUrUU!Xs6fpRrTjFKrU'FKp[A(K
+qsF at KrTj@Gs69L5rRLr4pZVY?s5s at Cs5a4?qr7S7pYu52s53e3s53k3s4[M)s4..ts3Uels3CYh
+s31Mds2tA`s2P)Vs2"`Ms1\NGs1A0ZrR_)#s4%(ts3^kmp!3T]s3(Gas2a*tJ]@B&JcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)]0?%>rBB+fP<SekpHHWH[m'flq`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+eUHEUJU[EDJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>rBB+fP<SekpHHWH[m'flq`ah)q*+b+q`^2bru_+\q&fJTrBC6Is$QfU
+rCR#[s%35_rJLW3rsJcsrCR#[s%!#Vog\sOs%*/]s%<5_rC[#[s%*/[rCHlYs%*/[s$lrUs$ZlS
+s$H`OrBUBIq`b$Es$6TMs$QfSs$m#Ys%*/^s%E;bqb6r_s%iYlrDW_qs&K)"rE'#$s&]5$s&K)#
+q0r?EqcEets&B"rs%r_ks%WMgs%iYirD!;cs%35[s$ZfPs$QfSs$QfOf07`6huA7Vq0mnph>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HrMnbpUT4?qrN#[mq8WB9rN6+$rQ+lVdDiYqrrDqrq8W61rPn`7rLNnY
+s.AhSs.T+[s.TIerM0CgrMBOkrMTCgs/5gos/Gsss/Z1"s/Z1%s/u7&qlot&s0D[0rNcC.rNuI0
+s5*e5rSIG-qqh5Hs*Oe%s4mY1s5*e5s5<k7s5O(=s5a. at qrRY7q;^r's5X.?qrRk?s60LJs6]jS
+s6p!Ts6K^LrTO4ErTa at Is6BRKqs=:KrTsFIrTa4Cs6'@2rRCT*s6'FEs5j:As5X.=rS[S3q;VG4
+s53_0s4mY-s4@;#s3gqos3CYhs31Mds2tA`s2b5\s2=rRs1nZKs1SHEs17sUs4..us3gqop!3T^
+s3(Gbs2b5\rPmapJ]@N*JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>rBB+fP<SekpHHWH[m'flq`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+eUHEUJU[EDJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>rBB+fP<SekpHHWH[m'flq`ah)q*+b+q`^2bru_+\q&fJTrBC6Is$QfU
+rCR#[s%35_rJLW3rsJcsrCR#[s%!#Vog\sOs%*/]s%<5_rC[#[s%*/[rCHlYs%*/[s$lrUs$ZlS
+s$H`OrBUBIq`b$Es$6TMs$QfSs$m#Ys%*/^s%E;bqb6r_s%iYlrDW_qs&K)"rE'#$s&]5$s&K)#
+q0r?EqcEets&B"rs%r_ks%WMgs%iYirD!;cs%35[s$ZfPs$QfSs$QfOf07`6huA7Vq0mnph>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HrMnbpUT4?qrN#[mq8WB9rN6+$rQ+lVdDiYqrrDqrq8W61rPn`7rLNnY
+s.AhSs.T+[s.TIerM0CgrMBOkrMTCgs/5gos/Gsss/Z1"s/Z1%s/u7&qlot&s0D[0rNcC.rNuI0
+s5*e5rSIG-qqh5Hs*Oe%s4mY1s5*e5s5<k7s5O(=s5a. at qrRY7q;^r's5X.?qrRk?s60LJs6]jS
+s6p!Ts6K^LrTO4ErTa at Is6BRKqs=:KrTsFIrTa4Cs6'@2rRCT*s6'FEs5j:As5X.=rS[S3q;VG4
+s53_0s4mY-s4@;#s3gqos3CYhs31Mds2tA`s2b5\s2=rRs1nZKs1SHEs17sUs4..us3gqop!3T^
+s3(Gbs2b5\rPmapJ]@N*JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>q**V`R6LFqs$"JPY<Msdq`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+d=0pOJU[WJJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>q**V`R6LFqs$"JPY<Msdq`ah)q*+b+q`^,`q]GDNrBC6Gs$?ZQrC?fU
+s%!$Cs+^OYqaLNQs$H`Oq`t0Js$QfSrC-`Us%!)[rCQrYs%!#WqaLHQs$crUs$Q`Os$?ZMs$,m7
+s$6TMs$QfSs$crXs%*)\rCQr[s%EAcqb@)cs%iSis&&eos&&ems&&epq0r?BqbmGjs%iYhs%E;^
+s%EAcs%E5]s%!)Ws$?ZLs$6TMs$H`OeNVB0h>`%Ts*fP!h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hq5W8jX/c3#s/l7$qlB[qq8WH<rQG/^rQ4rXrQ!a6YH%U&ql9J3q5XD5
+ql9[drLNt[rL`VQs.TIepS%P[rM0CgrMBOknYc>as/Ggos/Z1$rN6%$qlfh"rNZ=,qm67.s4dG+
+qqM/+rS at AHs*FRts5!_3s5<k7rSme9s5O(=q;V5/q;D)+rSIS3s5<q9q;VG8s5s at FrTaFIs60LF
+rT4"?rTF.CrTF.CrTX:Gs6KXKoBH;<s5s:0rR:H&s5s at Cs5a4>s5<S-s5<k7s53k5qqV5)s475"
+s3^kms3CYgs3(Gbs2k;^s2Y/Zs2G#Ts1nZLs1SHFrOVgUs4./!s3gqps3LA`s31Mcs2k;]pVu%h
+J]@`0JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>q**V`R6LFqs$"JPY<Msdq`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+d=0pOJU[WJJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>q**V`R6LFqs$"JPY<Msdq`ah)q*+b+q`^,`q]GDNrBC6Gs$?ZQrC?fU
+s%!$Cs+^OYqaLNQs$H`Oq`t0Js$QfSrC-`Us%!)[rCQrYs%!#WqaLHQs$crUs$Q`Os$?ZMs$,m7
+s$6TMs$QfSs$crXs%*)\rCQr[s%EAcqb@)cs%iSis&&eos&&ems&&epq0r?BqbmGjs%iYhs%E;^
+s%EAcs%E5]s%!)Ws$?ZLs$6TMs$H`OeNVB0h>`%Ts*fP!h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hq5W8jX/c3#s/l7$qlB[qq8WH<rQG/^rQ4rXrQ!a6YH%U&ql9J3q5XD5
+ql9[drLNt[rL`VQs.TIepS%P[rM0CgrMBOknYc>as/Ggos/Z1$rN6%$qlfh"rNZ=,qm67.s4dG+
+qqM/+rS at AHs*FRts5!_3s5<k7rSme9s5O(=q;V5/q;D)+rSIS3s5<q9q;VG8s5s at FrTaFIs60LF
+rT4"?rTF.CrTF.CrTX:Gs6KXKoBH;<s5s:0rR:H&s5s at Cs5a4>s5<S-s5<k7s53k5qqV5)s475"
+s3^kms3CYgs3(Gbs2k;^s2Y/Zs2G#Ts1nZLs1SHFrOVgUs4./!s3gqps3LA`s31Mcs2k;]pVu%h
+J]@`0JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>o02&\SNd"$rVt&iWBU=^q`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+bC8 at KK78COh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>o02&\SNd"$rVt&iWBU=^q`ah)q*+b+q`]QPr>ti"s$-NMs$ZlUqaCC9
+s+C=Ss$HZMs$6BDs$-NLs$H`QqaCHQs$lrWrC6fUrC$TOs$HZOs$H`Os$6NIj$*K.s$?ZOs$ZlU
+rC?lWs%!#Ys%35_rCd/_s%*/]rC[)_s%NAas%WMhq0r9<rD*Acs%<;^s$m#Ws$m#YrCHrYrCHrW
+s$H`MrBC6Gs$6TKeNV0*huA=XJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Ho;^]fZ)[i)s/c7'rN5surN#n:rVuoBrQP5`rQ>#ZqoJfXkJjL$rrDqr
+q8W61rPn`7rLEhWs.91]o:YcMs.KCcrM'=erM9CgrMKIirMKOks/>mqs/Q$ss/Q+"qlK[srN?%$
+qlot&qm-7Ss4RA)qq;#'s4dS/qtU2:qqM/+s5!_3q;;51rSRM1q;;#)qq_)'s4dS/s5!_3q;;51
+s5O(>rT=.As5a(:rT!k;qrRe;rT4"?rTF4Eq<@_=s5s at BrR:_nq<%_?s5s at Cs5a4?s5F"8qqhA/
+s4mY1s5*e5rSIS1s4mY/s4RG's3q"qs3CYhs3(Gbs2k5\s2Y/Zs2=rTs2"`Ms1\NGs1A6 at q:>Sq
+s3q"qs3UGas3:Ses2k;^n&F8bK>rKBh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>o02&\SNd"$rVt&iWBU=^q`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+bC8 at KK78COh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>o02&\SNd"$rVt&iWBU=^q`ah)q*+b+q`]QPr>ti"s$-NMs$ZlUqaCC9
+s+C=Ss$HZMs$6BDs$-NLs$H`QqaCHQs$lrWrC6fUrC$TOs$HZOs$H`Os$6NIj$*K.s$?ZOs$ZlU
+rC?lWs%!#Ys%35_rCd/_s%*/]rC[)_s%NAas%WMhq0r9<rD*Acs%<;^s$m#Ws$m#YrCHrYrCHrW
+s$H`MrBC6Gs$6TKeNV0*huA=XJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Ho;^]fZ)[i)s/c7'rN5surN#n:rVuoBrQP5`rQ>#ZqoJfXkJjL$rrDqr
+q8W61rPn`7rLEhWs.91]o:YcMs.KCcrM'=erM9CgrMKIirMKOks/>mqs/Q$ss/Q+"qlK[srN?%$
+qlot&qm-7Ss4RA)qq;#'s4dS/qtU2:qqM/+s5!_3q;;51rSRM1q;;#)qq_)'s4dS/s5!_3q;;51
+s5O(>rT=.As5a(:rT!k;qrRe;rT4"?rTF4Eq<@_=s5s at BrR:_nq<%_?s5s at Cs5a4?s5F"8qqhA/
+s4mY1s5*e5rSIS1s4mY/s4RG's3q"qs3CYhs3(Gbs2k5\s2Y/Zs2=rTs2"`Ms1\NGs1A6 at q:>Sq
+s3q"qs3UGas3:Ses2k;^n&F8bK>rKBh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>mloWXV*=j,q>\omTg&JVq`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+aaW(GLOOgSh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>mloWXV*=j,q>\omTg&JVq`ah)q*+b+q`]QPr>tbus$6TNs$Q`Os$?U7
+s+(+Ms$-$;s$6TMs$HNKs$ZfSrC$ZQrBgHKq`t0Gf094!s$?ZOqaCBOs$m#Ys%*)[s%*)XrC$ZS
+s$m#Ws%!)\s%E0:rCm5as%NG`s$crTs$?ZOs$QfSqaLHQs$QfOaZdgqh>`7ZJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Hn#G9b[As8.s/l=)rN?%"s2k;^q>^K?rQY;bqoer\s2k5^s2k;^s2X`N
+TrS+mql9J3q5XD5ql9O`s.0+[s.AhSs.T1[rLs1arM0=erMB1arMT[oor7nirN#gsrN5murNH+&
+rNZCQs46qrs4IA)s4[AEs*4RtrRq/'s4dA)s5!_1s4dS/s5!_3rS@;)q:kf#q:Yf%s4d;'s5*e5
+rSd_5qqqA1rSdY5qr.S7rT!q=s5j:CrTEq=s5s at Bs5X(+rR(T)s5j:AqrRk=s5O(9s5!_1s5!_1
+s4dS-s4dM-rS.;)s4IA&s3q"ps3CYgs3(Gas2b)Xs2P)Xs24lRs1nZKs1SHEqmu[Us4..us3gqo
+s3LGbs3:Sfs2tA_s2XNHh>`8MJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>mloWXV*=j,q>\omTg&JVq`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+aaW(GLOOgSh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>mloWXV*=j,q>\omTg&JVq`ah)q*+b+q`]QPr>tbus$6TNs$Q`Os$?U7
+s+(+Ms$-$;s$6TMs$HNKs$ZfSrC$ZQrBgHKq`t0Gf094!s$?ZOqaCBOs$m#Ys%*)[s%*)XrC$ZS
+s$m#Ws%!)\s%E0:rCm5as%NG`s$crTs$?ZOs$QfSqaLHQs$QfOaZdgqh>`7ZJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Hn#G9b[As8.s/l=)rN?%"s2k;^q>^K?rQY;bqoer\s2k5^s2k;^s2X`N
+TrS+mql9J3q5XD5ql9O`s.0+[s.AhSs.T1[rLs1arM0=erMB1arMT[oor7nirN#gsrN5murNH+&
+rNZCQs46qrs4IA)s4[AEs*4RtrRq/'s4dA)s5!_1s4dS/s5!_3rS@;)q:kf#q:Yf%s4d;'s5*e5
+rSd_5qqqA1rSdY5qr.S7rT!q=s5j:CrTEq=s5s at Bs5X(+rR(T)s5j:AqrRk=s5O(9s5!_1s5!_1
+s4dS-s4dM-rS.;)s4IA&s3q"ps3CYgs3(Gas2b)Xs2P)Xs24lRs1nZKs1SHEqmu[Us4..us3gqo
+s3LGbs3:Sfs2tA_s2XNHh>`8MJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>lTX3TYs.i0q>]2uR6LWNq`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+aaVqCMgg6Wh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>lTX3TYs.i0q>]2uR6LWNq`ah)q*+b+q`]QPr>t\ss$6TMrBUBIs*sur
+rrDFMs$6TMqa1<Ks$HZOrBgNMrBU<Gb<Gqjs$6TMs$HZOs$ZlUs$lrWs$m#Vs$crTs$HZLs$?ZP
+s$crWq0r34s%<;\s$QfOs$$HIs$6TMrBgNOrC$ZOa$.Uog&HtZJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Hl`/j^`N&g9rMomus/l=(s02O,qoelZq>^K at rQbAdqonr\rQP;bs2tA`
+s2b/ZRB$8eql9J3q5XD5ql9I^s.0+[s.ADGrLs7cq4mnarMBOkrMBIis/5gos/Ggmql0OorN#mu
+pT==qqlg%Js3pqrqpk_ts4@;'rV$9as*"ForRUr!s4I)!rRh/'s4[G+qqCl!qq1_rs475%rRgkt
+s4[M-rS at M/s4dG+rS at G/qqq;-s53k7rSde9s5X.?s5X.?rT=.Cs5s at Cs5X.<rR(SjrT!q;s5F";
+rT!q;s5F"7s4mS-s4[M+s4IA)s4[G)s4I;%s4..us3Uejs3(Gbs2k;]s2P)XrPnlVs2=rSs2"`M
+s1SHFq7?OUs4./!s3gqps3LA`s31Mds2k;]lc.WXMoL>Jh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>lTX3TYs.i0q>]2uR6LWNq`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+aaVqCMgg6Wh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>lTX3TYs.i0q>]2uR6LWNq`ah)q*+b+q`]QPr>t\ss$6TMrBUBIs*sur
+rrDFMs$6TMqa1<Ks$HZOrBgNMrBU<Gb<Gqjs$6TMs$HZOs$ZlUs$lrWs$m#Vs$crTs$HZLs$?ZP
+s$crWq0r34s%<;\s$QfOs$$HIs$6TMrBgNOrC$ZOa$.Uog&HtZJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Hl`/j^`N&g9rMomus/l=(s02O,qoelZq>^K at rQbAdqonr\rQP;bs2tA`
+s2b/ZRB$8eql9J3q5XD5ql9I^s.0+[s.ADGrLs7cq4mnarMBOkrMBIis/5gos/Ggmql0OorN#mu
+pT==qqlg%Js3pqrqpk_ts4@;'rV$9as*"ForRUr!s4I)!rRh/'s4[G+qqCl!qq1_rs475%rRgkt
+s4[M-rS at M/s4dG+rS at G/qqq;-s53k7rSde9s5X.?s5X.?rT=.Cs5s at Cs5X.<rR(SjrT!q;s5F";
+rT!q;s5F"7s4mS-s4[M+s4IA)s4[G)s4I;%s4..us3Uejs3(Gbs2k;]s2P)XrPnlVs2=rSs2"`M
+s1SHFq7?OUs4./!s3gqps3LA`s31Mds2k;]lc.WXMoL>Jh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>k<@dP]fth4q>]E&P<T!Hq`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+aaX'cs*il*O+)Z[h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>k<@dP]fth4q>]E&P<T!Hq`ah)q*+b+q`]QPr>tVqs$-BEqgSPFm6:P7
+s$6HIrBU<Is$6NI^HVZ^s$6NKs$H`Qs$ZfSrBpTQs$H`Os$-HGs$-NLs$HO1rC6fWs%*/Xs$?BC
+s$-NKs$?TMs$+OfaaX'cs*il*O+)Z[h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HkGmFZbGtTCqlKass/c7Cs31Gdqoo#^s31<=s3^knrQkMhqp#)`s3:Mf
+s3:Sfs3(GFs/l=&s/VWhrrDqrq8W61rPn`7q4.DSs.91]je2RGq4dh_rM97crMKUmpSe%grM][o
+rMogsorS%mrN?1Hs3U_ls3gkps4%)!s47/?s7622s4%"rrRCktq:>Mps4%"uqq1_rrRV#!rRCkr
+pXK5nn^dZks4 at 5%rRq)%s4d5%s5!_3rSRY5rSde7s5F";s5X(=s5X.<s5<k&rQkH$s5<q7rS[_7
+s53k5s4mY/s4[M+s4IA's47/#rRV#!rRCkqs3Uejs2tA`s2b5\s2FlRs2G#Vs24lQs1nZKs1JBD
+rOMm<rRV"us3q"qs3UGas3:Ses2tA_l,NQ!s2NsrO2cbNh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>k<@dP]fth4q>]E&P<T!Hq`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+aaX'cs*il*O+)Z[h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>k<@dP]fth4q>]E&P<T!Hq`ah)q*+b+q`]QPr>tVqs$-BEqgSPFm6:P7
+s$6HIrBU<Is$6NI^HVZ^s$6NKs$H`Qs$ZfSrBpTQs$H`Os$-HGs$-NLs$HO1rC6fWs%*/Xs$?BC
+s$-NKs$?TMs$+OfaaX'cs*il*O+)Z[h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HkGmFZbGtTCqlKass/c7Cs31Gdqoo#^s31<=s3^knrQkMhqp#)`s3:Mf
+s3:Sfs3(GFs/l=&s/VWhrrDqrq8W61rPn`7q4.DSs.91]je2RGq4dh_rM97crMKUmpSe%grM][o
+rMogsorS%mrN?1Hs3U_ls3gkps4%)!s47/?s7622s4%"rrRCktq:>Mps4%"uqq1_rrRV#!rRCkr
+pXK5nn^dZks4 at 5%rRq)%s4d5%s5!_3rSRY5rSde7s5F";s5X(=s5X.<s5<k&rQkH$s5<q7rS[_7
+s53k5s4mY/s4[M+s4IA's47/#rRV#!rRCkqs3Uejs2tA`s2b5\s2FlRs2G#Vs24lQs1nZKs1JBD
+rOMm<rRV"us3q"qs3UGas3:Ses2tA_l,NQ!s2NsrO2cbNh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>j$)@La$/[8q>]].Ma%. at q`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+aaX'cqgRB$Q%";ah>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>j$)@La$/[8q>]].Ma%. at q`ah)q*+b+q`]QPr>t>iqgSPFlTY>5rBU*A
+ZTeCRs$6TMs$HZOrBgNOs$?ZMofi2#s$QfSs$crWs$H`Mo031=rBS=caaX'cqgRB$Q%";ah>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\Hj/V"Vc`7#HqlTn?s2b5_s3(GerQb;bs31Mfs3CH?s3pqps3^kns3LYh
+s3:Shs3L_ls0Vg4s0D[0s02O,s/uC(s/c7$T;qnkql9J3q5XD5ql9C\rLNt[rLa%]q4I2Ms.TCc
+rLs1arM07crMBOkrMT[oo;DPcrMfaqq5aOqqlBUqs31MfrQbGhs3U_ls3gqrrUBjUs)A"crQtMj
+s3genrR1Yls3gqrs4%)!s47/!rRCeps3gkns3UShs3gMfrR1Yos3q"trRLr!qq(l#p"BB!s4dM-
+s5!_3s5!_1s5!Y2rSde7s53k5s3LSfs5<q7s5*_1rSIS1s4dS,rRh/%s475#s4%)!s4%"rs3gkn
+s3L_is2t;]s2P)Xq8<6Ns24lRs1nZLs1SHEs180=rOMsZs4..us3gqos3LGbs3:Sfs2tA`s2XBD
+q>^?3h>`b[JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>j$)@La$/[8q>]].Ma%. at q`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+aaX'cqgRB$Q%";ah>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>j$)@La$/[8q>]].Ma%. at q`ah)q*+b+q`]QPr>t>iqgSPFlTY>5rBU*A
+ZTeCRs$6TMs$HZOrBgNOs$?ZMofi2#s$QfSs$crWs$H`Mo031=rBS=caaX'cqgRB$Q%";ah>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\Hj/V"Vc`7#HqlTn?s2b5_s3(GerQb;bs31Mfs3CH?s3pqps3^kns3LYh
+s3:Shs3L_ls0Vg4s0D[0s02O,s/uC(s/c7$T;qnkql9J3q5XD5ql9C\rLNt[rLa%]q4I2Ms.TCc
+rLs1arM07crMBOkrMT[oo;DPcrMfaqq5aOqqlBUqs31MfrQbGhs3U_ls3gqrrUBjUs)A"crQtMj
+s3genrR1Yls3gqrs4%)!s47/!rRCeps3gkns3UShs3gMfrR1Yos3q"trRLr!qq(l#p"BB!s4dM-
+s5!_3s5!_1s5!Y2rSde7s53k5s3LSfs5<q7s5*_1rSIS1s4dS,rRh/%s475#s4%)!s4%"rs3gkn
+s3L_is2t;]s2P)Xq8<6Ns24lRs1nZLs1SHEs180=rOMsZs4..us3gqos3LGbs3:Sfs2tA`s2XBD
+q>^?3h>`b[JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>h`fkFeNVl>q>]u6K0K;8q`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+aaX'comYfuR=9_eh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>h`fkFeNVl>q>]u6K0K;8q`ah)q*+b+q`]QPr>t>iqgSPFks#&1V*=oD
+s$6BGs$H`Ns$-0?q0r?0s$HZOs$3bOaaX'comYfuR=9_eh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hhl>MPf;ekOs2k5_rQ>/^s3(Gds3CShq9K#ds3UTAs4.(trR:eps3^km
+s0D[2s0Vg6s0hs8s0Vg4s0D[0s02O,s/uC(s/c1"V5jOqql9J3q5XD5ql9=ZrLNt[nXo?EoqD>Y
+rM0=erMBIiq5=%crMTUmrMfUmql0OorN#t?s2tAbs31Mfqp,5fs3U`3s6Tc&s3CSfrQbGhqp>Ah
+rQbGfrQkGirR1Yls3U_js3CSfs31Mfs3CMfp!EHZs3U_ls3gqrqpbYrs47/!qptf"s4RA)rS.;(
+s4[M-s4mM-s4mY/s3CMds5*e2s4dS-rS.;)s4IA&rRLqtrR:_ns3^els3LYhs31McqoA`Us2=`M
+s24lRs2"`Ms1SHFs186 at rO;a8s4./!s3gqps3LA`s31Mds2k;^kJm>tou>nhRDsgXh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>h`fkFeNVl>q>]u6K0K;8q`ah)q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(
+aaX'comYfuR=9_eh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>h`fkFeNVl>q>]u6K0K;8q`ah)q*+b+q`]QPr>t>iqgSPFks#&1V*=oD
+s$6BGs$H`Ns$-0?q0r?0s$HZOs$3bOaaX'comYfuR=9_eh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hhl>MPf;ekOs2k5_rQ>/^s3(Gds3CShq9K#ds3UTAs4.(trR:eps3^km
+s0D[2s0Vg6s0hs8s0Vg4s0D[0s02O,s/uC(s/c1"V5jOqql9J3q5XD5ql9=ZrLNt[nXo?EoqD>Y
+rM0=erMBIiq5=%crMTUmrMfUmql0OorN#t?s2tAbs31Mfqp,5fs3U`3s6Tc&s3CSfrQbGhqp>Ah
+rQbGfrQkGirR1Yls3U_js3CSfs31Mfs3CMfp!EHZs3U_ls3gqrqpbYrs47/!qptf"s4RA)rS.;(
+s4[M-s4mM-s4mY/s3CMds5*e2s4dS-rS.;)s4IA&rRLqtrR:_ns3^els3LYhs31McqoA`Us2=`M
+s24lRs2"`Ms1SHFs186 at rO;a8s4./!s3gqps3LA`s31Mds2k;^kJm>tou>nhRDsgXh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>ffn;BiBGkBq>^2<JNj#rrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]u6huB6rJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>ffn;BiBGkBq>^2<JNj#rrrDp[q0r-'rI4W-JKFb2m6:Drrr at a:rBL6G
+s$?ZLo02u!s$-NKrB[PLaaX'cnUBBqSUQ.ih>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HfrErLiMujrs2Y/]s2t;arQG5`s31Mfs3LYjqp5;hs3^kpq>^EFqpteX
+s0qg4s0r$<s0r$:s0_m6s0Ma2s0;U.s0)=&s/l=%WN,suql9J3q5XD5ql97Xs.0+[rL`nWrL`\S
+rLs%[rLs1arM0=erMAnYrMTUmq5O1grMfgss2Y/\s2k;`s3(5^s3:N-s69Pus3(A`rQG5brQYAd
+rQG/^s3(Gds3:Shs3LYhrQYAdrQG/^s2k5^rQOlXpWWZ^rQbGhrQtMjrR1Yls3gkps4%)"s4 at 5%
+s4@;%s4./#s4IA)rS%;)s4IA's3:Gbs4dS-s4RA'rR_)#s4..urR1_nqp>Ahs3CSfs31Gbs2k;]
+qo8ZSs24ZKs2+fPs1nZKs1JBDs1/0>rO2[6s4%(ts3^knp!3T^s3(Gbs2a<Aq>^!)huB7eJcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>ffn;BiBGkBq>^2<JNj#rrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]u6huB6rJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>ffn;BiBGkBq>^2<JNj#rrrDp[q0r-'rI4W-JKFb2m6:Drrr at a:rBL6G
+s$?ZLo02u!s$-NKrB[PLaaX'cnUBBqSUQ.ih>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HfrErLiMujrs2Y/]s2t;arQG5`s31Mfs3LYjqp5;hs3^kpq>^EFqpteX
+s0qg4s0r$<s0r$:s0_m6s0Ma2s0;U.s0)=&s/l=%WN,suql9J3q5XD5ql97Xs.0+[rL`nWrL`\S
+rLs%[rLs1arM0=erMAnYrMTUmq5O1grMfgss2Y/\s2k;`s3(5^s3:N-s69Pus3(A`rQG5brQYAd
+rQG/^s3(Gds3:Shs3LYhrQYAdrQG/^s2k5^rQOlXpWWZ^rQbGhrQtMjrR1Yls3gkps4%)"s4 at 5%
+s4@;%s4./#s4IA)rS%;)s4IA's3:Gbs4dS-s4RA'rR_)#s4..urR1_nqp>Ahs3CSfs31Gbs2k;]
+qo8ZSs24ZKs2+fPs1nZKs1JBDs1/0>rO2[6s4%(ts3^knp!3T^s3(Gbs2a<Aq>^!)huB7eJcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>eNVl>lTW^Fq>^JDJNi`jrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]i2huBC!JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>eNVl>lTW^Fq>^JDJNi`jrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6rBL<I
+nNQbtrBC0EXZjjUq>]i2huBC!JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HeZ.NHl`0d#s2Y/\s2tAbrQY;bs3(Ges3CYkqpGGjs3gqrrRCZCs4R@`
+rOr6Do=Ft4s1&*<s0hs8s0Vg4s0DI*s02O+s/l=%XfDC$ql9J3q5XD5ql91Vs./\Os.ADGrLs1a
+qkO+crMBIioqhVarMTCgqksCks/H%;s2P)Zs2b5^qo\r\s2t<'s5s>os2b/ZrQ,#\rQ>)\rQ,#Z
+rQ,#\s2t;`s2t;^s2b/ZrPnlVs2P)Zs2b5^oucsLs2t;`s31GdrQbGhs3CSfqp5;is3g_ms3q"r
+s3q"ts4."trRCkkqof#ls4@;%rRLqtrR:eps3U_js3CSfs3CYhs31Mds2tA`rQ,#Ys2=fRs24lR
+q8!$Hs1nZLs1SHEs186?s0qs7rO2aTs3gqos3LGbs3:Sfs2tA`s2X6 at q>]j%huBCiJcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)]0?%>eNVl>lTW^Fq>^JDJNi`jrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]i2huBC!JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>eNVl>lTW^Fq>^JDJNi`jrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6rBL<I
+nNQbtrBC0EXZjjUq>]i2huBC!JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HeZ.NHl`0d#s2Y/\s2tAbrQY;bs3(Ges3CYkqpGGjs3gqrrRCZCs4R@`
+rOr6Do=Ft4s1&*<s0hs8s0Vg4s0DI*s02O+s/l=%XfDC$ql9J3q5XD5ql91Vs./\Os.ADGrLs1a
+qkO+crMBIioqhVarMTCgqksCks/H%;s2P)Zs2b5^qo\r\s2t<'s5s>os2b/ZrQ,#\rQ>)\rQ,#Z
+rQ,#\s2t;`s2t;^s2b/ZrPnlVs2P)Zs2b5^oucsLs2t;`s31GdrQbGhs3CSfqp5;is3g_ms3q"r
+s3q"ts4."trRCkkqof#ls4@;%rRLqtrR:eps3U_js3CSfs3CYhs31Mds2tA`rQ,#Ys2=fRs24lR
+q8!$Hs1nZLs1SHEs186?s0qs7rO2aTs3gqos3LGbs3:Sfs2tA`s2X6 at q>]j%huBCiJcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)]0?%>d6?H:pHH]Js8VtFJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]].huBO%JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>d6?H:pHH]Js8VtFJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]].huBO%JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HdAl*DpT!c's2b5^s3(GdrQbAds31Mgs3L_mqpPMns4./#rR_)Lqo8NJ
+rP8HJo=k7;s186 at s1&*<s0hs8s0Vg4s0Vg6s0Vg4s0;U.s/uC(s/`K*rrDqrq8W61rPn`7nXTQK
+rLWhUrLX%]je2RGq4dh_rM9+_rM9CgrMJt[s/>t8s2=rVs2P)ZqoJ`VrT+"=s()/KrP\ZRs2P)Z
+s2b/ZrPn`Rs2P)Zs2b/ZrPnlVrP\`RrPJNNrPefVpW)sHs2Y)ZrQ5)^qof#^rQ5#]s31Mfs3L_l
+rR(Yls3L_js3L_ms3gkps3gqps3Uehqo\rhqpYSnrQtSjs3CYhrQP;bs2tAbs31Mds2tA_s2Y/Z
+rPe`Qqo&NOs2"`Ms1\BFs1\NHs1JBCs1/0=s0hm5rO)[Rs3^kmp!3T]s3(Gas2a6?q>]^!huBOm
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>d6?H:pHH]Js8VtFJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]].huBO%JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>d6?H:pHH]Js8VtFJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]].huBO%JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HdAl*DpT!c's2b5^s3(GdrQbAds31Mgs3L_mqpPMns4./#rR_)Lqo8NJ
+rP8HJo=k7;s186 at s1&*<s0hs8s0Vg4s0Vg6s0Vg4s0;U.s/uC(s/`K*rrDqrq8W61rPn`7nXTQK
+rLWhUrLX%]je2RGq4dh_rM9+_rM9CgrMJt[s/>t8s2=rVs2P)ZqoJ`VrT+"=s()/KrP\ZRs2P)Z
+s2b/ZrPn`Rs2P)Zs2b/ZrPnlVrP\`RrPJNNrPefVpW)sHs2Y)ZrQ5)^qof#^rQ5#]s31Mfs3L_l
+rR(Yls3L_js3L_ms3gkps3gqps3Uehqo\rhqpYSnrQtSjs3CYhrQP;bs2tAbs31Mds2tA_s2Y/Z
+rPe`Qqo&NOs2"`Ms1\BFs1\NHs1JBCs1/0=s0hm5rO)[Rs3^kmp!3T]s3(Gas2a6?q>]^!huBOm
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>bs(*8s8U2iq`ah)JNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]Q*huB[)JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>bs(*8s8U2iq`ah)JNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]Q*huB[)JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Hc)TaBs8VK+s2Y/]s2tAcs3:MgrQbGfs3L_ls3gens475&s1JBFs1\<K
+s2"ZNrPS0Bs1nZKs1JBDs1/0>s0qs8s0r$<s0r$:s0Vg4s0D[/s0)I)s/c7$\#TH.ql9J3q5XD5
+ql9+TnX]]OrL`t[qk*DOrLs1as.TCcrM/bUrMBIiqks1cs/5n5s2+fRs2=rVqo8TRrSde7s'brE
+rPANNs24lTs2G#XrPe`RrPSTNs24lTrPSTNs2"ZLrP/BHs1eTLs2"`PpVc[@s2=lTrPnlXs2b/Z
+s2P#Vs2P)Zs2b5_s3(Gdqp#)_s31Mfs3CMfrQYAbqoSlcs3Uels3Uels3:MdrQ>)\rQ,#\s2tA`
+s2b5[s2G#Vs24`NqnrHMs1nZKs1SBFs1SHFs1A<Bs1/0>s0hs8rNlI0s3^knp!3T^s3(Gbs2b5\
+j2Uopji63XWQ'Mhh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>bs(*8s8U2iq`ah)JNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]Q*huB[)JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>bs(*8s8U2iq`ah)JNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]Q*huB[)JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Hc)TaBs8VK+s2Y/]s2tAcs3:MgrQbGfs3L_ls3gens475&s1JBFs1\<K
+s2"ZNrPS0Bs1nZKs1JBDs1/0>s0qs8s0r$<s0r$:s0Vg4s0D[/s0)I)s/c7$\#TH.ql9J3q5XD5
+ql9+TnX]]OrL`t[qk*DOrLs1as.TCcrM/bUrMBIiqks1cs/5n5s2+fRs2=rVqo8TRrSde7s'brE
+rPANNs24lTs2G#XrPe`RrPSTNs24lTrPSTNs2"ZLrP/BHs1eTLs2"`PpVc[@s2=lTrPnlXs2b/Z
+s2P#Vs2P)Zs2b5_s3(Gdqp#)_s31Mfs3CMfrQYAbqoSlcs3Uels3Uels3:MdrQ>)\rQ,#\s2tA`
+s2b5[s2G#Vs24`NqnrHMs1nZKs1SBFs1SHFs1A<Bs1/0>s0hs8rNlI0s3^knp!3T^s3(Gbs2b5\
+j2Uopji63XWQ'Mhh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>aZf$>oDd?iofi2#JNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]E&h>a[-JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>aZf$>oDd?iofi2#s$)&uofiBUq`ah)q*+b+q`]QPr>t>iqgSPFJNiB`
+q0o/(aaX'ciI9V_YC;'&h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Haf=[HoDeF%s2b5_s3(Ges3CSirQkMhs3Uens3pqrs186Cs1eNJs2+TO
+qo/NRs2FTLs2=rSs2"`Ns1SHEqmla<s1A<Bs1/0=s0hs8s0Ma2s02O,s/uC's/Wc3rrDqrq8W61
+rPn`7m@=-Gq4.DSs.8bQnY#QKrM'7cq5!h]rM9Cgoqq\as/,h2s1nZNs2+fRqo&NPs2+Zis'PfB
+qnW6Js2+fRs2=lRrPJNLqnW6JrP8HJrP&6DrOi0Bs1JBFs1eTLpVHI:s2"TLs24lTs2G#Vs24lR
+rPANNs2=rVs2P)[s2k5^s2k;^s2k;`rQG/`s3(GbrQ4rXs3CYgrQYAds3(Gbs2k5[rPnlVs2P)Z
+s2b5\s2P)Ws24lRs2"`NrPABJs1nZLs1SHFs1SHFs1A<Bs1/0=s1&*<s0_m6rNcC.s3UelpWif`
+s31Mcs2k;]iPt]niPs^RYJu.nh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>aZf$>oDd?iofi2#JNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]E&h>a[-JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>aZf$>oDd?iofi2#s$)&uofiBUq`ah)q*+b+q`]QPr>t>iqgSPFJNiB`
+q0o/(aaX'ciI9V_YC;'&h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Haf=[HoDeF%s2b5_s3(Ges3CSirQkMhs3Uens3pqrs186Cs1eNJs2+TO
+qo/NRs2FTLs2=rSs2"`Ns1SHEqmla<s1A<Bs1/0=s0hs8s0Ma2s02O,s/uC's/Wc3rrDqrq8W61
+rPn`7m@=-Gq4.DSs.8bQnY#QKrM'7cq5!h]rM9Cgoqq\as/,h2s1nZNs2+fRqo&NPs2+Zis'PfB
+qnW6Js2+fRs2=lRrPJNLqnW6JrP8HJrP&6DrOi0Bs1JBFs1eTLpVHI:s2"TLs24lTs2G#Vs24lR
+rPANNs2=rVs2P)[s2k5^s2k;^s2k;`rQG/`s3(GbrQ4rXs3CYgrQYAds3(Gbs2k5[rPnlVs2P)Z
+s2b5\s2P)Ws24lRs2"`NrPABJs1nZLs1SHFs1SHFs1A<Bs1/0=s1&*<s0_m6rNcC.s3UelpWif`
+s31Mcs2k;]iPt]niPs^RYJu.nh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>_`mmFkPsLim6:>pJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]2uhuC$3JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>_`mmFkPsLim6:>ps$6HGiBI9+SNd&Rq`ah)q*+b+q`]QPr>t>iqgSPF
+JNiB`q0o/(aaX'cgOA&[Z[RK*h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\H_lEOPkPt at ts2Y/]s3(Gds3CYjrR(Mhs3^kTs0r$=s186Ds1eTNs24lT
+pVusLoud<Xs2tA_rPnlVs2+fOs1\HEs1SHHs1SHFs186 at s1&*;s0_m5s0D[0s0)I)s/c7$^T.;6
+ql9J3q5XD5ql8PDs.0+[qk*bWrL`VQrLs+]rLs1ao:u>[rM0=en"p&ts1\NJs1nZNqniBLs1nZi
+rS at K[s1nHFs1nZNs2+`NrP8BHs1\HFs1\NHs1J<Bo=Ft6s1JBFqnN0Fn\+t:qnN0Hs2"`Ps2"`N
+s1eTIs1\NJs1nZNs24lTs2FlTs2G#Xs2Y)ZrQ5)[rPnlYqoA`Zs2k;`s3(Gbs2k;^s2Y/Ys2=fP
+s2=rVs2P)Xs2=rSs2"`NrP/<HrPANLs1eTJs1J<Bs186 at s1&*<s0hs:s0hs7s0MO,s3LA`s31Md
+s2k;^ho>KlgW&.NZc7Rrh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>_`mmFkPsLim6:>pJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]2uhuC$3JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>_`mmFkPsLim6:>ps$6HGiBI9+SNd&Rq`ah)q*+b+q`]QPr>t>iqgSPF
+JNiB`q0o/(aaX'cgOA&[Z[RK*h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\H_lEOPkPt at ts2Y/]s3(Gds3CYjrR(Mhs3^kTs0r$=s186Ds1eTNs24lT
+pVusLoud<Xs2tA_rPnlVs2+fOs1\HEs1SHHs1SHFs186 at s1&*;s0_m5s0D[0s0)I)s/c7$^T.;6
+ql9J3q5XD5ql8PDs.0+[qk*bWrL`VQrLs+]rLs1ao:u>[rM0=en"p&ts1\NJs1nZNqniBLs1nZi
+rS at K[s1nHFs1nZNs2+`NrP8BHs1\HFs1\NHs1J<Bo=Ft6s1JBFqnN0Fn\+t:qnN0Hs2"`Ps2"`N
+s1eTIs1\NJs1nZNs24lTs2FlTs2G#Xs2Y)ZrQ5)[rPnlYqoA`Zs2k;`s3(Gbs2k;^s2Y/Ys2=fP
+s2=rVs2P)Xs2=rSs2"`NrP/<HrPANLs1eTJs1J<Bs186 at s1&*<s0hs:s0hs7s0MO,s3LA`s31Md
+s2k;^ho>KlgW&.NZc7Rrh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>_`n$JhuE(mjZ`KhJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]&qhuC07JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>_`n$JhuE(mjZ`Khs$?NIs$?ZMk<Ao1s$6NITg&JVq`ah)q*+b+q`]QP
+r>t>iqgSPFJNiB`q0o/(aaX'cf7)WW[sio.h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\H_lE[ThuE_rs2Y/\s2tAcs3:Sis3U_mrO)[6s0r$<s1/0 at s1SHJs2+fT
+s2P)[s2t/Wp!*6Vs3L_js31Gbs2tA^s2G#Uq8**Hs1eTIs1JBDs1/0>s0hs8s0Vg3s0)I*s/l=&
+s/X&;rrDqrq8W61rPn`7h44M9nXf]Oje2XIrM'7co:l2YrM97cqkX8(s1JBFs1\NJqnW6Hs1\Ne
+s4dS/s'>Z>pV-[Bs1nTJrP&6Ds1J6 at rOVm:s1&*>s1&*>s1&*>s1&*?s1A0 at qn)O4s1A0 at s1SHH
+rP/BGs1JBDrOi0Ds1\NJs1nZNrPSZPs24lTrPefVs2Y/Zs2=rTs2+fVq8WHTs2b5^s2b5\s2P)W
+s24lRrPAHLs24lTs24lQs1nZLqnE$DrP8HIs1SHFs1A<Bs1/0>s0r$:rO)[6s0_m5pTjJ;s3:Se
+s2tA_s2X$:q>]'dhuC1*JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>_`n$JhuE(mjZ`KhJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>]&qhuC07JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>_`n$JhuE(mjZ`Khs$?NIs$?ZMk<Ao1s$6NITg&JVq`ah)q*+b+q`]QP
+r>t>iqgSPFJNiB`q0o/(aaX'cf7)WW[sio.h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\H_lE[ThuE_rs2Y/\s2tAcs3:Sis3U_mrO)[6s0r$<s1/0 at s1SHJs2+fT
+s2P)[s2t/Wp!*6Vs3L_js31Gbs2tA^s2G#Uq8**Hs1eTIs1JBDs1/0>s0hs8s0Vg3s0)I*s/l=&
+s/X&;rrDqrq8W61rPn`7h44M9nXf]Oje2XIrM'7co:l2YrM97cqkX8(s1JBFs1\NJqnW6Hs1\Ne
+s4dS/s'>Z>pV-[Bs1nTJrP&6Ds1J6 at rOVm:s1&*>s1&*>s1&*>s1&*?s1A0 at qn)O4s1A0 at s1SHH
+rP/BGs1JBDrOi0Ds1\NJs1nZNrPSZPs24lTrPefVs2Y/Zs2=rTs2+fVq8WHTs2b5^s2b5\s2P)W
+s24lRrPAHLs24lTs24lQs1nZLqnE$DrP8HIs1SHFs1A<Bs1/0>s0r$:rO)[6s0_m5pTjJ;s3:Se
+s2tA_s2X$:q>]'dhuC1*JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>b<GHFhuEG"h`gjbJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>\omhuC<;JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>b<GHFhuEG"h`gjbs$HZMs$QfUs$ZlRs$5m6s$6TMrBU<GV*=nZq`ah)
+q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(aaX'cdsg3S]7,>2h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HbGt*PhuE_us3(Ges3CYks0_a4s0r$<s1/0 at s1A<Fs2"`Qs2G#Zs2tAc
+s3CG[qpG;fs3^Yjs3q"rs3^els3L_hs2tA_q8WHQs2+fOs1eTJs1JBDs186?s0r$8s0;U.s0)I*
+s/l=&s/X2?rrDqrq8W61rPn`7h44G7qk!\UrLX%]je2RGo:l,UrM'7co;)>rs1A<Ds1SBFrOr6D
+s4IA)s4[KXs1\<Bs1JBFs1\HFrOi*@rOVm:q7,t(s1%s;s1.s8q7$C6rOMs>s1A0 at s1A0>qn)m@
+s1SHHrP/<Hs2"`PrPSZRs24lRrPA<Ls2=rVs2P)Zs2P)Xs2=rSs2"TJqn`<Ls2"`Ms1\NHs1J<D
+rP&<Hs1\NGs1A<Bs1/0>s0r$:s0_a2s0_m6os4P at q9K#as2tA`s2Ws8q>\p`huC=.JcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)]0?%>b<GHFhuEG"h`gjbJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>\omhuC<;JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>b<GHFhuEG"h`gjbs$HZMs$QfUs$ZlRs$5m6s$6TMrBU<GV*=nZq`ah)
+q*+b+q`]QPr>t>iqgSPFJNiB`q0o/(aaX'cdsg3S]7,>2h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HbGt*PhuE_us3(Ges3CYks0_a4s0r$<s1/0 at s1A<Fs2"`Qs2G#Zs2tAc
+s3CG[qpG;fs3^Yjs3q"rs3^els3L_hs2tA_q8WHQs2+fOs1eTJs1JBDs186?s0r$8s0;U.s0)I*
+s/l=&s/X2?rrDqrq8W61rPn`7h44G7qk!\UrLX%]je2RGo:l,UrM'7co;)>rs1A<Ds1SBFrOr6D
+s4IA)s4[KXs1\<Bs1JBFs1\HFrOi*@rOVm:q7,t(s1%s;s1.s8q7$C6rOMs>s1A0 at s1A0>qn)m@
+s1SHHrP/<Hs2"`PrPSZRs24lRrPA<Ls2=rVs2P)Zs2P)Xs2=rSs2"TJqn`<Ls2"`Ms1\NHs1J<D
+rP&<Hs1\NGs1A<Bs1/0>s0r$:s0_a2s0_m6os4P at q9K#as2tA`s2Ws8q>\p`huC=.JcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)]0?%>d6?`BiW&q,ffo4\JNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>\cihuCH?JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>d6?`BiW&q,iBI9+q`ah)s$Q`Os%!)]s%*/Zs$ZlUs$H`Mo031=s$?ZO
+q*G$GrBI>HrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,nV*<"Mq>\cihuCH?JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HdAlBLiW&qts0;U1s0Vg7rO;g:s1/0 at s1A<Ds1\NNs2G#Ys2k;as3CYk
+s3g__qpk_qs3gqrqpbYrs475%rRUqts4%(rs3L_iqof#^s2b5[s2=rSs2"`Ms1\NHs1A<As0hs6
+s0D[0s02O,s/uC(s/c7$bGtRBql9J3q5XD5ql8D at nX]WMs.B+[rL`VQrLs1an"K]SrM0=eqkO2%
+s1&*>s186BrOi*@s186]s4@;'s'#H9q7Q[<s1J<BrOVg8qmcI2q6p=2s0hm6s0hg6qmQ+(s0hm8
+s1&*>rOVm9rOMg:rO`$@s1SHHs1eNJs2"`Ps2"`Ns1eTLq8WHOs24lTs2G#Vs24lRs1nZLs1\HH
+q8!$Fs1SHFrO`$@qn<$Bs186 at rODm:s0hs7s0Ma2rNlO2s0MI*s0;OHrQYAfs31Mds2k;^gW''h
+cc4lB^W(j)h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>d6?`BiW&q,ffo4\JNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>\cihuCH?JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>d6?`BiW&q,iBI9+q`ah)s$Q`Os%!)]s%*/Zs$ZlUs$H`Mo031=s$?ZO
+q*G$GrBI>HrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,nV*<"Mq>\cihuCH?JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HdAlBLiW&qts0;U1s0Vg7rO;g:s1/0 at s1A<Ds1\NNs2G#Ys2k;as3CYk
+s3g__qpk_qs3gqrqpbYrs475%rRUqts4%(rs3L_iqof#^s2b5[s2=rSs2"`Ms1\NHs1A<As0hs6
+s0D[0s02O,s/uC(s/c7$bGtRBql9J3q5XD5ql8D at nX]WMs.B+[rL`VQrLs1an"K]SrM0=eqkO2%
+s1&*>s186BrOi*@s186]s4@;'s'#H9q7Q[<s1J<BrOVg8qmcI2q6p=2s0hm6s0hg6qmQ+(s0hm8
+s1&*>rOVm9rOMg:rO`$@s1SHHs1eNJs2"`Ps2"`Ns1eTLq8WHOs24lTs2G#Vs24lRs1nZLs1\HH
+q8!$Fs1SHFrO`$@qn<$Bs186 at rODm:s0hs7s0Ma2rNlO2s0MI*s0;OHrQYAfs31Mds2k;^gW''h
+cc4lB^W(j)h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>ffn/>mJld,h*1X`JNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>\WehuCTCJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>ffn/>mJld,jZ`]1s$6TKs$$7-rC$ZTs%EAes%NGbs%EAcs%35[s$H`N
+q*+gCs$6TNs$Q`OrBpTOrB^HKs$*\NrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,nV*<"Mq>\We
+huCTCJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HfrEfHmJldts0_m9s1&*>s186Bs1JBFs1\NMs2Y/]s3(Ges3CYls3q#!
+q8WBds4IA&s4./#rR_)#s4@;'rS%;+rS%;)s475"s3gkms3L_js31Mcs2b5[s2=rTs2"`Ns1\NF
+s1&*:s0Vg4s0D[0s02O,s/uC(s/c7$c`7!Fql9J3q5XD5ql8>>qjmVSrLNt[nXo?Eo:boOrLs7c
+oqVPsrO;g:s1/*>rOMs<s4%)!s473PpUg=6q76=2qmZC0q6ft(rO)U2s0Ma4os=V(rO)[6qmZU6
+qmZI4qml[:rO`*Bs1SHHs1eTLs1eNHs1eBLs1nZNs2+fRs2+fPs1nZKrOr0DqnN0Fs1JBDqmua<
+rOi0Bs1/0>s0r$:s0r$:s0_m5q6L%,os4V%rQG/`s3:Ses2tA_s2Wm6q>\XXhuCU6JcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)]0?%>ffn/>mJld,h*1X`JNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>\WehuCTCJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>ffn/>mJld,jZ`]1s$6TKs$$7-rC$ZTs%EAes%NGbs%EAcs%35[s$H`N
+q*+gCs$6TNs$Q`OrBpTOrB^HKs$*\NrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,nV*<"Mq>\We
+huCTCJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HfrEfHmJldts0_m9s1&*>s186Bs1JBFs1\NMs2Y/]s3(Ges3CYls3q#!
+q8WBds4IA&s4./#rR_)#s4@;'rS%;+rS%;)s475"s3gkms3L_js31Mcs2b5[s2=rTs2"`Ns1\NF
+s1&*:s0Vg4s0D[0s02O,s/uC(s/c7$c`7!Fql9J3q5XD5ql8>>qjmVSrLNt[nXo?Eo:boOrLs7c
+oqVPsrO;g:s1/*>rOMs<s4%)!s473PpUg=6q76=2qmZC0q6ft(rO)U2s0Ma4os=V(rO)[6qmZU6
+qmZI4qml[:rO`*Bs1SHHs1eTLs1eNHs1eBLs1nZNs2+fRs2+fPs1nZKrOr0DqnN0Fs1JBDqmua<
+rOi0Bs1/0>s0r$:s0r$:s0_m5q6L%,os4V%rQG/`s3:Ses2tA_s2Wm6q>\XXhuCU6JcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)]0?%>iBGS:p]'E*j$*9fJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>\Kah>bTGJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>iBGS:p]'E*m6:P8s$QfQs$?ZMq0r?4s$m#\s%iYms%r_ks&/kqs%r_i
+rC[)Ys$6NHs$6TMs$QfSs$QfSrC-ZQs$QfQs$?ZMs$*hRrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6
+lTY,nV*<"Mq>\Kah>bTGJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HiMt5Dp]'Ers1A<Ds1SHHs1eTNs2P)^s3:Sis3Uens4%)"s4R4fs5!_1
+s4dS,s4I;'rRh/'s4[G+s5!_3s53k5s4dS,s4 at 5"s3q"rs3Ueks31Mcs2b5\s2G#Us1nZJs186>
+s0hs8s0Vg4s0D[0s02O,s/uC(s/c7$e#NEJql9J3q5XD5ql7i0rLNt[q4IVWrL`VQrLrbSs.B=a
+rLs7crM07aq6p=4rODg8s0hsUs3q"ts&T01q7?I6q7-70qmQ=.q6^%*j0JQgrNuU4s0V[2rO2U4
+q7-C6s186Bs1JBFs1\BDs1\<Ks1\NJs1nZNs1nZLs1S<BrOr0Ds1SHFs186 at s1&$<rOW$@s186@
+s0r$:rO)[6s0_m6la$Pqs0)CDrQG5bs2tA`s2Wg4q>\LTh>bU:JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>iBGS:p]'E*j$*9fJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>\Kah>bTGJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>iBGS:p]'E*m6:P8s$QfQs$?ZMq0r?4s$m#\s%iYms%r_ks&/kqs%r_i
+rC[)Ys$6NHs$6TMs$QfSs$QfSrC-ZQs$QfQs$?ZMs$*hRrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6
+lTY,nV*<"Mq>\Kah>bTGJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HiMt5Dp]'Ers1A<Ds1SHHs1eTNs2P)^s3:Sis3Uens4%)"s4R4fs5!_1
+s4dS,s4I;'rRh/'s4[G+s5!_3s53k5s4dS,s4 at 5"s3q"rs3Ueks31Mcs2b5\s2G#Us1nZJs186>
+s0hs8s0Vg4s0D[0s02O,s/uC(s/c7$e#NEJql9J3q5XD5ql7i0rLNt[q4IVWrL`VQrLrbSs.B=a
+rLs7crM07aq6p=4rODg8s0hsUs3q"ts&T01q7?I6q7-70qmQ=.q6^%*j0JQgrNuU4s0V[2rO2U4
+q7-C6s186Bs1JBFs1\BDs1\<Ks1\NJs1nZNs1nZLs1S<BrOr0Ds1SHFs186 at s1&$<rOW$@s186@
+s0r$:rO)[6s0_m6la$Pqs0)CDrQG5bs2tA`s2Wg4q>\LTh>bU:JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>k<?q8rBB+fk<A]jJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>\9[huCrMJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>k<?q8rBB+fo031=s$H`Ss$ZfQq0r?5s%<;es&8qus&B#!s&oA*s&](s
+s%iYfs$m#Us$?ZOs$ZfSs$lrWrC6fUs$ZlSs$H`Os$6TK[m'flq`ah)q*+b+q`]QPr>t>iqgSPF
+JNiB`q0o/(aaX'c_1(;Ac$k6Dh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HkGlSBrMnbps1eTLs2+fUs2tAfs3^eos4%)#s4RG-q8WHns53k5s4mY/
+s4mY/rS%;+qqV5.s53e6s5<q6s4mY.s4RG(s475"s3gqos3CYgs3(Gas2Y/Xs1nZIs1/0>s0r$:
+s0_m6s0Ma2s0;U.s0)I*s/c1"f;eiNql9J3q5XD5ql7c.s./\OrL`8GpRhDWrLrt[pU0t.rO)[4
+s3Uens3gpHs0r$<qmlU6q7$1.qmH7,q6Tt(q6Bt(s0;U.s0;7$rNZ+&rNlC.qmHC2qmZO6rOMs>
+s1A<Ds1A6Bs1S6Js1JBFs1\NJs1\NHs1A<BrO`$@s1SHFs1A<Bs1&$:rODa8s1&*<s0_a2s0_m6
+s0MI*rNZ7*s0;U.s/u=BrQ>/`s2k;^f>dXd_8bC4c,P>7h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>k<?q8rBB+fk<A]jJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>\9[huCrMJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>k<?q8rBB+fo031=s$H`Ss$ZfQq0r?5s%<;es&8qus&B#!s&oA*s&](s
+s%iYfs$m#Us$?ZOs$ZfSs$lrWrC6fUs$ZlSs$H`Os$6TK[m'flq`ah)q*+b+q`]QPr>t>iqgSPF
+JNiB`q0o/(aaX'c_1(;Ac$k6Dh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HkGlSBrMnbps1eTLs2+fUs2tAfs3^eos4%)#s4RG-q8WHns53k5s4mY/
+s4mY/rS%;+qqV5.s53e6s5<q6s4mY.s4RG(s475"s3gqos3CYgs3(Gas2Y/Xs1nZIs1/0>s0r$:
+s0_m6s0Ma2s0;U.s0)I*s/c1"f;eiNql9J3q5XD5ql7c.s./\OrL`8GpRhDWrLrt[pU0t.rO)[4
+s3Uens3gpHs0r$<qmlU6q7$1.qmH7,q6Tt(q6Bt(s0;U.s0;7$rNZ+&rNlC.qmHC2qmZO6rOMs>
+s1A<Ds1A6Bs1S6Js1JBFs1\NJs1\NHs1A<BrO`$@s1SHFs1A<Bs1&$:rODa8s1&*<s0_a2s0_m6
+s0MI*rNZ7*s0;U.s/u=BrQ>/`s2k;^f>dXd_8bC4c,P>7h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>mlnd at nNPiZlTY,nJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>\-WhuD)QJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>mlnd at nNPiZpHJUCs$ZlWs$m#Ws%3$8s%iYks&8r!s'#G,s'>Y4s'bq6
+s'>Y3s'G_.s&K(ss%r_hs%*/Ys$m#Ys%*)[rCHrYs$m#Ws$ZlSs$H`Os$6TK]0?5pq`ah)q*+b+
+q`]QPr>t>iqgSPFJNiB`q0o/(aaX'c]mel=d=-ZHh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hn#FFJnZ(Ebs2tAfs3q"urRV##s4[M.s5!Ljqr.S4rSIS1rS7G/s5*_1
+s53k7pYl/0s5!_0s4[M*s475"s3gqos3L_is3(G`s2=rQs1JBCs1/0>s0r$:s0_m6s0Ma2s0;U-
+s/l7$rN"\QrrDqrq8W61rPn`7a.31#q4 at PUrLWt[nY#KGrLX%]rLj1arM'1_q6^1.rNuO0s0D[M
+s3L_ls&8s+s0qm8qmZC0q6g+,q6Tn&qm#t$l`^,gqm$%(rNlI0rO)O2rO;a8rOMm<rO`*Bq8WHG
+s1A<Ds1SHFs1A6?rOVm<s186 at s1%s7rO;[6s0hs8s0Ma2rNlO2s0MC(rNQ1(s02O,s/l7 at rQ5)^
+s2b5\f>dXd]uJt0dDgb;h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>mlnd at nNPiZlTY,nJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>\-WhuD)QJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>mlnd at nNPiZpHJUCs$ZlWs$m#Ws%3$8s%iYks&8r!s'#G,s'>Y4s'bq6
+s'>Y3s'G_.s&K(ss%r_hs%*/Ys$m#Ys%*)[rCHrYs$m#Ws$ZlSs$H`Os$6TK]0?5pq`ah)q*+b+
+q`]QPr>t>iqgSPFJNiB`q0o/(aaX'c]mel=d=-ZHh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hn#FFJnZ(Ebs2tAfs3q"urRV##s4[M.s5!Ljqr.S4rSIS1rS7G/s5*_1
+s53k7pYl/0s5!_0s4[M*s475"s3gqos3L_is3(G`s2=rQs1JBCs1/0>s0r$:s0_m6s0Ma2s0;U-
+s/l7$rN"\QrrDqrq8W61rPn`7a.31#q4 at PUrLWt[nY#KGrLX%]rLj1arM'1_q6^1.rNuO0s0D[M
+s3L_ls&8s+s0qm8qmZC0q6g+,q6Tn&qm#t$l`^,gqm$%(rNlI0rO)O2rO;a8rOMm<rO`*Bq8WHG
+s1A<Ds1SHFs1A6?rOVm<s186 at s1%s7rO;[6s0hs8s0Ma2rNlO2s0MC(rNQ1(s02O,s/l7 at rQ5)^
+s2b5\f>dXd]uJt0dDgb;h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>pHHWHjZ_RNmlpPrJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>\!ShuD5UJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>pHHWHjZ_RNrBC6Hs$QfUs%35]s%<;eq0r?Hs'#G-s'>Y3s'l">s(D at G
+s(;:Ds(VLHs'u"7s'>Y-s&K(rs%`Scs%</]s%<;_s%*/[s$m#Ws$ZlSs$H`NrBJ%\rrDp[q0r-'
+rI4W-JKFb2m6:Drrr at U6lTY,nV*<"Mq>\!ShuD5UJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HpSu9RkGnQ_ho>]Fs4@;'rRq5)s5!Y1q8W0fs5<q7rSIM1rSIS4n_sN*
+s5*e2s4[M*s475"s3q"qs3L_hs2b5Ys2"`Ms1JBCs1/0>s0r$:s0_m6s0Ma0s/u=&rN,suhl?\V
+ql9J3q5XD5ql7],nX]WMs.B+[nXoQIrLa%]pS%Dhq6Kt(s3:Shs3L^Cs0_m8qmZI2q6g%*qm6+(
+qm#t$q60[uo<%tos0)I*qlft&rNZ=,rNlI0qmHC2rO;a8rOMm<s1A*Hs1&*>s186Bs186 at rODg:
+rOW$>s1&*<s0_m6rO)U4qmZU5s0VU-s0MC(s0;O+qlp+(s/uC'rQ"lXs2k;]e].Fb\]3P,e]*1?
+h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>pHHWHjZ_RNmlpPrJNiZhrrDp[q0r-'rI4W-JKFb2m6:Drrr at U6lTY,n
+V*<"Mq>\!ShuD5UJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>pHHWHjZ_RNrBC6Hs$QfUs%35]s%<;eq0r?Hs'#G-s'>Y3s'l">s(D at G
+s(;:Ds(VLHs'u"7s'>Y-s&K(rs%`Scs%</]s%<;_s%*/[s$m#Ws$ZlSs$H`NrBJ%\rrDp[q0r-'
+rI4W-JKFb2m6:Drrr at U6lTY,nV*<"Mq>\!ShuD5UJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HpSu9RkGnQ_ho>]Fs4@;'rRq5)s5!Y1q8W0fs5<q7rSIM1rSIS4n_sN*
+s5*e2s4[M*s475"s3q"qs3L_hs2b5Ys2"`Ms1JBCs1/0>s0r$:s0_m6s0Ma0s/u=&rN,suhl?\V
+ql9J3q5XD5ql7],nX]WMs.B+[nXoQIrLa%]pS%Dhq6Kt(s3:Shs3L^Cs0_m8qmZI2q6g%*qm6+(
+qm#t$q60[uo<%tos0)I*qlft&rNZ=,rNlI0qmHC2rO;a8rOMm<s1A*Hs1&*>s186Bs186 at rODg:
+rOW$>s1&*<s0_m6rO)U4qmZU5s0VU-s0MC(s0;O+qlp+(s/uC'rQ"lXs2k;]e].Fb\]3P,e]*1?
+h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>rBA8NgHOMDo02u!q*+gDs$)&us$$G_q`ah)q*+b+q`]QPr>t>irI4VD
+JNiHbq0o/(aaX'c[=7$5fm\MPh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>rBA8NgHOMDs$H`Ss%*)]s%r_qq0r?Rs().As(D:Gs(q^QrG_dVs)\3\
+s).dOs(_RGs'l"8s'5S*s&8qmrD!;cs%EAas%35]s%!)Ys$crUs$?TKrBJ1`rrDp[q0r-'rI4W-
+JKFb2m6:JtqZ)12m6:>pV*<"Mq>[jOhuDAYJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HrMmoXj/W-[s/c7's0(>"s4dM-s5!S0q8W6hs5<k7qr%A/lf%m%s5*e2
+s4[M*s4@;$s3q"ps31Mas2P)Ws2"`Ms1SHEs1/0>s0r$:s0Vg2s0)C(rN6%"rN"tYrrDqrq8W61
+rPn`7`LQgrqjdVUrLWPOo:GoOs.91]s.K=aqk3bjq6Bn&s31Mfs%r_ms*"FMqmQC0q6^%*q6Kh$
+qlon"q6'UsnZ;PgrN?+&rNQ7*rNcC.qm?=0rO2[6rODg:s18$Gs0hs:s1&*>s1&*;rO;a8rOMs;
+s0hs8rNlI0rO)O2s0Vg4mBZbss02I)qlg%&s/l=%rPnfVs2`[/q>[kBhuDBLJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>rBA8NgHOMDo02u!q*+gDs$)&us$$G_q`ah)q*+b+q`]QPr>t>irI4VD
+JNiHbq0o/(aaX'c[=7$5fm\MPh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>rBA8NgHOMDs$H`Ss%*)]s%r_qq0r?Rs().As(D:Gs(q^QrG_dVs)\3\
+s).dOs(_RGs'l"8s'5S*s&8qmrD!;cs%EAas%35]s%!)Ys$crUs$?TKrBJ1`rrDp[q0r-'rI4W-
+JKFb2m6:JtqZ)12m6:>pV*<"Mq>[jOhuDAYJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HrMmoXj/W-[s/c7's0(>"s4dM-s5!S0q8W6hs5<k7qr%A/lf%m%s5*e2
+s4[M*s4@;$s3q"ps31Mas2P)Ws2"`Ms1SHEs1/0>s0r$:s0Vg2s0)C(rN6%"rN"tYrrDqrq8W61
+rPn`7`LQgrqjdVUrLWPOo:GoOs.91]s.K=aqk3bjq6Bn&s31Mfs%r_ms*"FMqmQC0q6^%*q6Kh$
+qlon"q6'UsnZ;PgrN?+&rNQ7*rNcC.qm?=0rO2[6rODg:s18$Gs0hs:s1&*>s1&*;rO;a8rOMs;
+s0hs8rNlI0rO)O2s0Vg4mBZbss02I)qlg%&s/l=%rPnfVs2`[/q>[kBhuDBLJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?1BrVt&icT^68pHJD%q`b$Fs$H`Os$6NIj$*K-V*=nZq`ah)q*+b+q`]QP
+r>tJmq#LABs$$A]JNiTfq0o/(aaX'cZ$tO/hgU.Vh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?1BrVt&icT^68s%<;cs&&ess',;Js)%dSs)A!ZrHJ3bs*=Wjs*Xips*X]h
+s*4Qcs)A!Ts(_RGs'bq5s&]4ss%`Sgs%NGcs%<;_s%*/[s$crSrB^HKs$+CbrrDp[q0r-'rI4W-
+JKFb2nNQaKrI4c1r;_C4nNQbtV*<"Mq>[^Kh>cA]JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];khLrVt'\gT(:Ts/l=)s02O/s0LV&s53_3s53Xlq;MA2rS[S3qr$Yrs5<q6
+s4mY/s4RG(s4%(qs3:Ses2k;\s2=rSs1nZJs1A<As0r$9s0D[/rNH1&rN6%"qlAt]rrDqrq8W61
+rPn`7\"*Dfs.9%YnXfKGrLWt[pRq>eq69m=s)@p2s3:Shs0M`Ks*+LNq6]t(qm-%&q69b"q6'Oq
+qlKUoql9UqqlKaurN?+&rNQ7*qm-1,rNuO2rO2[6rODm<q8WHAs0_m8s0r$:s0_g6rO;a8s0hs7
+s0M[0rNlI0qmHI1os4V&q6L%)s0)=%rN?1&s/c7#q8WHTe&M4`Z,YW"ho:6Ih>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?1BrVt&icT^68pHJD%q`b$Fs$H`Os$6NIj$*K-V*=nZq`ah)q*+b+q`]QP
+r>tJmq#LABs$$A]JNiTfq0o/(aaX'cZ$tO/hgU.Vh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?1BrVt&icT^68s%<;cs&&ess',;Js)%dSs)A!ZrHJ3bs*=Wjs*Xips*X]h
+s*4Qcs)A!Ts(_RGs'bq5s&]4ss%`Sgs%NGcs%<;_s%*/[s$crSrB^HKs$+CbrrDp[q0r-'rI4W-
+JKFb2nNQaKrI4c1r;_C4nNQbtV*<"Mq>[^Kh>cA]JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];khLrVt'\gT(:Ts/l=)s02O/s0LV&s53_3s53Xlq;MA2rS[S3qr$Yrs5<q6
+s4mY/s4RG(s4%(qs3:Ses2k;\s2=rSs1nZJs1A<As0r$9s0D[/rNH1&rN6%"qlAt]rrDqrq8W61
+rPn`7\"*Dfs.9%YnXfKGrLWt[pRq>eq69m=s)@p2s3:Shs0M`Ks*+LNq6]t(qm-%&q69b"q6'Oq
+qlKUoql9UqqlKaurN?+&rNQ7*qm-1,rNuO2rO2[6rODm<q8WHAs0_m8s0r$:s0_g6rO;a8s0hs7
+s0M[0rNlI0qmHI1os4V&q6L%)s0)=%rN?1&s/c7#q8WHTe&M4`Z,YW"ho:6Ih>dKTV#Pr~>
+JcF-trr at WMhuB[)^HVUFq>\om_`ln*rBC%+rBC6Gs$H`Rs$Q`Os%!)Vs$5g4s$-NKrBI8FrrDp[
+q0r-'rI4W-JKFb2q*+TSrBC%+q`arYJNi`jq0o/(aaX'cX+&t+j*lRZh>dKTV#Pr~>
+JcF-trr at WMhuB[)^HVUFq>\om_`ln*s'5S5q0r?fs*=Wks*t!"rIk3&s+LE+rJ19)s+UK(s*juq
+s*4Qcs)7pQs(24;s&f;!s%`Sgs%NGcs%<;^s$m#UrBgNMs$+CbrrDp[q0r-'rI4W-JKFb2q*+TS
+rBC%+q`arYJNi`jq0o/(aaX'cX+&t+j*lRZh>dKTV#Pr~>
+JcF-trr at WMhuB[q^T.7Pq>\p`eZ/YMs/l=(s02O.s0Ma5s0hs;h8]KRs5<^mqr.S5s5*Y1s4[M/
+s5;ens5<q7s5!_0s4IA%s3gqos3CYfs2k;]s2G#Ts1nZJs1/0<s0Ma1rNQ7(rN?+$qlK%^rrDqr
+q8W61rPn`7[@I2dnXf?CrLEnYrLX%]rLj%[q69g;rG__<s2tAbs31Mfs0D[2s0V`Iqm6+(qm#t$
+q60[uq5sIoqlB+arN#murN6%$rNH1(qm$+*rNlI0rO)U4rO;g:q8WH?s0Ma4s0_g4rO)U4rO;g7
+s0Ma2rNZ=,rNlC.os4V&s02I,s0D[0s0)I*qlKaus/c7$s/O2\q>[M8huD`VJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)^HVUFq>\om_`ln*rBC%+rBC6Gs$H`Rs$Q`Os%!)Vs$5g4s$-NKrBI8FrrDp[
+q0r-'rI4W-JKFb2q*+TSrBC%+q`arYJNi`jq0o/(aaX'cX+&t+j*lRZh>dKTV#Pr~>
+JcF-trr at WMhuB[)^HVUFq>\om_`ln*s'5S5q0r?fs*=Wks*t!"rIk3&s+LE+rJ19)s+UK(s*juq
+s*4Qcs)7pQs(24;s&f;!s%`Sgs%NGcs%<;^s$m#UrBgNMs$+CbrrDp[q0r-'rI4W-JKFb2q*+TS
+rBC%+q`arYJNi`jq0o/(aaX'cX+&t+j*lRZh>dKTV#Pr~>
+JcF-trr at WMhuB[q^T.7Pq>\p`eZ/YMs/l=(s02O.s0Ma5s0hs;h8]KRs5<^mqr.S5s5*Y1s4[M/
+s5;ens5<q7s5!_0s4IA%s3gqos3CYfs2k;]s2G#Ts1nZJs1/0<s0Ma1rNQ7(rN?+$qlK%^rrDqr
+q8W61rPn`7[@I2dnXf?CrLEnYrLX%]rLj%[q69g;rG__<s2tAbs31Mfs0D[2s0V`Iqm6+(qm#t$
+q60[uq5sIoqlB+arN#murN6%$rNH1(qm$+*rNlI0rO)U4rO;g:q8WH?s0Ma4s0_g4rO)U4rO;g7
+s0Ma2rNZ=,rNlC.os4V&s02I,s0D[0s0)I*qlKaus/c7$s/O2\q>[M8huD`VJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)`BO$Fq>],s[m&DmrBC6Is$ZlVs$crUs%<;es%EA_s$ZlRmlpb9s$6TMq*=sE
+Y<Msdq`ah)q*+b+q`]QPr>tu&qZ-:Qq0r'%r;_C4q*+V'V*<"Mq>[@AhuDkgJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)`BO$Fq>],s[m&Dms+13&s+gW4rK$u?s,I&:s,I&>s,d8DrKI8Gs-!DCs,?u8
+s+^Q*s*aoms)\3Ws(;:=s&oA#s%`Sgs%NGas%!)WrBpTNs$+CbrrDp[q0r-'rI4W-JKFb2s$$;[
+ofi2#pHJNUJNilnq0o/(aaX'cVgdP'kC/!^h>dKTV#Pr~>
+JcF-trr at WMhuB[q`N&[Pq>]-fdAm5Is/c7's0)I-s0D[3s0hs:s1/0 at s1SHKf>ddJs5<q7qqhA*
+s3q#!s4RG-s5)Sjs53k3s4[M)s4..us3Ueks31Mcs2Y/Ys2"`Ks1/0<s0DU.rNQ7(ql]t$s/bIb
+rrDqrq8W61rPn`7Z^h&dq4@,IpRM2QrLWbUs0)HBrG_Y:qlTn?s2tAbs31MJs0DU0s0DZHs)\4G
+q6Bh$q60UsqlT[qq5`PUrN#murN6%$rNH+&rNZ=,rNlI0rO)U4s0qgDrNZC.qm67.qmHI4s0Vg3
+s0;O,rNZ=,qm6%&s0;U.s0)C*s0;U.s/uC(qlB[ss/Z*uai=/VVoIWokJi)Qh>dKTV#Pr~>
+JcF-trr at WMhuB[)`BO$Fq>],s[m&DmrBC6Is$ZlVs$crUs%<;es%EA_s$ZlRmlpb9s$6TMq*=sE
+Y<Msdq`ah)q*+b+q`]QPr>tu&qZ-:Qq0r'%r;_C4q*+V'V*<"Mq>[@AhuDkgJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)`BO$Fq>],s[m&Dms+13&s+gW4rK$u?s,I&:s,I&>s,d8DrKI8Gs-!DCs,?u8
+s+^Q*s*aoms)\3Ws(;:=s&oA#s%`Sgs%NGas%!)WrBpTNs$+CbrrDp[q0r-'rI4W-JKFb2s$$;[
+ofi2#pHJNUJNilnq0o/(aaX'cVgdP'kC/!^h>dKTV#Pr~>
+JcF-trr at WMhuB[q`N&[Pq>]-fdAm5Is/c7's0)I-s0D[3s0hs:s1/0 at s1SHKf>ddJs5<q7qqhA*
+s3q#!s4RG-s5)Sjs53k3s4[M)s4..us3Ueks31Mcs2Y/Ys2"`Ks1/0<s0DU.rNQ7(ql]t$s/bIb
+rrDqrq8W61rPn`7Z^h&dq4@,IpRM2QrLWbUs0)HBrG_Y:qlTn?s2tAbs31MJs0DU0s0DZHs)\4G
+q6Bh$q60UsqlT[qq5`PUrN#murN6%$rNH+&rNZ=,rNlI0rO)U4s0qgDrNZC.qm67.qmHI4s0Vg3
+s0;O,rNZ=,qm6%&s0;U.s0)C*s0;U.s/uC(qlB[ss/Z*uai=/VVoIWokJi)Qh>dKTV#Pr~>
+JcF-trr at WMhuB[)bs(TFq>]E&X$59es$$HJs$QfUs%*/[s%35gs&]5!s%r_ks&&egs$QBAs$6TM
+s$HZMrBgNMs$6TKZTeBhq`ah)q*+b+q`]WRq#KkIq0qp!r;_C4rBC%+V*<"Mq>[4=huE"kJcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[)bs(TFq>]E&X$59es,6o;s-*JLrL<hUs-E\Ls-EPLs-s%[s.TIbs.01Ys-WhO
+s,d8>s+gW*s*Ocfs).jLs'bq2s&B"ms%<;^s$crUs$QfPs$+CbrrDp[q0r-'rI4W-K-'ggmlpPr
+o03*QJNj#rq0o/(aaX'cUOM,#l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qc)U6Pq>]Enaf>BBs/l=)s02O/s0Ma5s0r$<s186Bs1\NMs2P)\gW'3Ns53k5
+rS at M-s3^kjs3L_ns3q"ps475+l/DHrrSde6s4mY.s4IA%s3q"qs3L_hs2k;[s2"`Ls186=s0Vg3
+rNZ=*qlg%&s/bIbrrDqrq8W61rPn`7Z(1?Tm@=-Gs.97_s.97 at rI=idql]guqlKh=s2k;`s3(GH
+s0;O.qm$*?qlot$q6'OqqlKUof;eeMrN,t"rN?%$rNQ7*rNcC.rNuI0q8WB;rNZ=,rNlC.s0_m5
+s0;U.rNH1(rNYmus02O,s/u=(s02O,s/l=&ql9Uqql7cXq>[50huE#^JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)bs(TFq>]E&X$59es$$HJs$QfUs%*/[s%35gs&]5!s%r_ks&&egs$QBAs$6TM
+s$HZMrBgNMs$6TKZTeBhq`ah)q*+b+q`]WRq#KkIq0qp!r;_C4rBC%+V*<"Mq>[4=huE"kJcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[)bs(TFq>]E&X$59es,6o;s-*JLrL<hUs-E\Ls-EPLs-s%[s.TIbs.01Ys-WhO
+s,d8>s+gW*s*Ocfs).jLs'bq2s&B"ms%<;^s$crUs$QfPs$+CbrrDp[q0r-'rI4W-K-'ggmlpPr
+o03*QJNj#rq0o/(aaX'cUOM,#l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qc)U6Pq>]Enaf>BBs/l=)s02O/s0Ma5s0r$<s186Bs1\NMs2P)\gW'3Ns53k5
+rS at M-s3^kjs3L_ns3q"ps475+l/DHrrSde6s4mY.s4IA%s3q"qs3L_hs2k;[s2"`Ls186=s0Vg3
+rNZ=*qlg%&s/bIbrrDqrq8W61rPn`7Z(1?Tm@=-Gs.97_s.97 at rI=idql]guqlKh=s2k;`s3(GH
+s0;O.qm$*?qlot$q6'OqqlKUof;eeMrN,t"rN?%$rNQ7*rNcC.rNuI0q8WB;rNZ=,rNlC.s0_m5
+s0;U.rNH1(rNYmus02O,s/u=(s02O,s/l=&ql9Uqql7cXq>[50huE#^JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)eNW/Fq>]].T0D.]s$-NMs$crYs%<;_s&/l#s'Pe2s&f;-s'Yk0s&/kis$c`I
+s$-NLs$H`Qs$H`QrC$ZQs$H`NrBIbTrrDp[q0r-'rI4W-M]VZoq]>,gq0qcrr;_C4q0o/(aaX'c
+T75\tms]ifh>dKTV#Pr~>
+JcF-trr at WMhuB[)eNW/Fq>]].T0D.]s-E\Rs.B=ds/5mqs.o[es.01^s.TC_s.TIgs/>sqs/Z1!
+s/,gks.97Zs-<VGs,$c.s*Xiis)7pOs'l"3s&/kgs$m#Ws$QfPs$+CbrrDp[q0r-'rI4W-M]VZo
+q]>,gq0qcrr;_C4q0o/(aaX'cT75\tms]ifh>dKTV#Pr~>
+JcF-trr at WMhuB[qeZ.fPq>]^!_lEa;s/l=(s02O.s0Ma4s0hs;s1/0As1JBHs24lWs3(Ghs4-#H
+s5F"9s5*e3rS7G%s2tA\s2b5`s2G#Ts2b5ds4./(n)=<)q;;#,s53k4s4[M*s475"s3^kks2k;[
+s2+fMs186?s0hs7s0DU.qlp+'s/bIbrrDqrq8W61rPn`7Z(1W\j.--uqg\L7q5sOqqlBb;s2b5^
+s2tAFs02I,q69n&s)J'Xs0)=&q5sIoql at o?rN#muqlTh"rNH1(rNZ=,rNlC.q8WB:rNQ7*rNc=,
+s0Vg3s02O,rN?+&rNQ7*pTjh(s0)I*s/l7&s0)I*s/c7$nZ'^Nq>[),huE/bJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)eNW/Fq>]].T0D.]s$-NMs$crYs%<;_s&/l#s'Pe2s&f;-s'Yk0s&/kis$c`I
+s$-NLs$H`Qs$H`QrC$ZQs$H`NrBIbTrrDp[q0r-'rI4W-M]VZoq]>,gq0qcrr;_C4q0o/(aaX'c
+T75\tms]ifh>dKTV#Pr~>
+JcF-trr at WMhuB[)eNW/Fq>]].T0D.]s-E\Rs.B=ds/5mqs.o[es.01^s.TC_s.TIgs/>sqs/Z1!
+s/,gks.97Zs-<VGs,$c.s*Xiis)7pOs'l"3s&/kgs$m#Ws$QfPs$+CbrrDp[q0r-'rI4W-M]VZo
+q]>,gq0qcrr;_C4q0o/(aaX'cT75\tms]ifh>dKTV#Pr~>
+JcF-trr at WMhuB[qeZ.fPq>]^!_lEa;s/l=(s02O.s0Ma4s0hs;s1/0As1JBHs24lWs3(Ghs4-#H
+s5F"9s5*e3rS7G%s2tA\s2b5`s2G#Ts2b5ds4./(n)=<)q;;#,s53k4s4[M*s475"s3^kks2k;[
+s2+fMs186?s0hs7s0DU.qlp+'s/bIbrrDqrq8W61rPn`7Z(1W\j.--uqg\L7q5sOqqlBb;s2b5^
+s2tAFs02I,q69n&s)J'Xs0)=&q5sIoql at o?rN#muqlTh"rNH1(rNZ=,rNlC.q8WB:rNQ7*rNc=,
+s0Vg3s02O,rN?+&rNQ7*pTjh(s0)I*s/l7&s0)I*s/c7$nZ'^Nq>[),huE/bJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)h*0_Fq>]o4Ps4)Ss%!)]s%NGis'#G3s(D at Bs(;:Js)A!Ps'l"4s&K(ns$lrO
+s$6TNs$Q`Qs$clUs$crUs$?TKrBInXrrDp[q0r-'rI4W-P90N"o,d9_q0qWnqZ)C8q0o/(aaX'c
+Rss8po6u8jh>dKTV#Pr~>
+JcF-trr at WMhuB[)h*0_Fq>]o4Ps4)Ss/Z1's0Ma1s/l="s/,gps/5mns.o[ms/Q*us/,gss0)I0
+s0;U*s/>sms.97Ws,m>=s+LE#s*+K^s(MF?s&]4rs$m#Us$?ZL_`n)#q`ah)q*+b+q`^2bq#L"-
+m6:>plTY1GLHbN_V*<"Mq>Zq5huE:sJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qh5]APq>]p']rM+5s/l=)s0;U0s0Vg6s0r$=s186Cs1SHJs2=rYs3:Sls4@;+
+s5DkTs5!_1s4dS(s31M\s1\NLs1\NBs0Ma:s1nZSs3(Gjs4R#&s53_1s53M.s53k4s4dS,s4..s
+s3:Sds2P)Us1\NGs186?s0_m6s0DU.s02O+s/bIbrrDqrq8W61rPn`7PFVGss.'+[s.9%Wq5jIo
+ql9\9s2Y/\s2k;Ds0)C*q60[urGV^Rs/l*uql at K3rN#gsrN6%$rNH1(rNZ=,qm6+<rN?+&rNQ7*
+qm-7.s0;U-s/u=&rN?+&rNQ1(s0D[0s02O+s/l=&rN6+&s/l=%n#FLLq>Zr(huE;fJcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)h*0_Fq>]o4Ps4)Ss%!)]s%NGis'#G3s(D at Bs(;:Js)A!Ps'l"4s&K(ns$lrO
+s$6TNs$Q`Qs$clUs$crUs$?TKrBInXrrDp[q0r-'rI4W-P90N"o,d9_q0qWnqZ)C8q0o/(aaX'c
+Rss8po6u8jh>dKTV#Pr~>
+JcF-trr at WMhuB[)h*0_Fq>]o4Ps4)Ss/Z1's0Ma1s/l="s/,gps/5mns.o[ms/Q*us/,gss0)I0
+s0;U*s/>sms.97Ws,m>=s+LE#s*+K^s(MF?s&]4rs$m#Us$?ZL_`n)#q`ah)q*+b+q`^2bq#L"-
+m6:>plTY1GLHbN_V*<"Mq>Zq5huE:sJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qh5]APq>]p']rM+5s/l=)s0;U0s0Vg6s0r$=s186Cs1SHJs2=rYs3:Sls4@;+
+s5DkTs5!_1s4dS(s31M\s1\NLs1\NBs0Ma:s1nZSs3(Gjs4R#&s53_1s53M.s53k4s4dS,s4..s
+s3:Sds2P)Us1\NGs186?s0_m6s0DU.s02O+s/bIbrrDqrq8W61rPn`7PFVGss.'+[s.9%Wq5jIo
+ql9\9s2Y/\s2k;Ds0)C*q60[urGV^Rs/l*uql at K3rN#gsrN6%$rNH1(rNZ=,qm6+<rN?+&rNQ7*
+qm-7.s0;U-s/u=&rN?+&rNQ1(s0D[0s02O+s/l=&rN6+&s/l=%n#FLLq>Zr(huE;fJcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)j$).Fq>^2<M*BaEs&oA2s(_RQs).jZs*Xirs*4Q`s(hXGs'G_+s%iYcrBpTQ
+s$crWs%!#Ys%!)Xs$HZMs$6TK]0?5pq`ah)q*+b+q`^DhqZ,q'm6:>pjZ`VCMa$rcV*<"Mq>Ze1
+h>d;"JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)j$).Fq>^2<O$<S2s%35dh1#C8s0hs4s0)I,s/l=%s/Q+$s02O%s/#aqs/u=,
+s1&*;s0;U*s/#afs-WhLs,6o2s*juls).jJs'>Y)s%NG[s$+CbrrDp[q0r-'rI4W-R3)5*lQ5FW
+q0qEhr;_a>q0o/(aaX'cQ[[cjq0mnph>dKTV#Pr~>
+JcF-trr at WMhuB[qj/UePq>^3/[As8-s/l=)s0;U1s0_m8s1&*?s1A<Es1\NLs2G#\s3L_ps4RG/
+qr-ANs3CY`s1JB at s1&*5s/>sos/c7+s0_m<s2+fXs3^l!s5<e5s5<q7qq_;0n_sN+s5!_.s4..s
+s3CYes2P)Us1nZKs1JBAs0r$9s0Vg3s02O+s/bIbrrDqrq8W61rPn`7R at O/&opkcIq5a1grPnlX
+s2b5Bs/u=(q6'UsqlKa5ql at -)qlB[srN6%$rNH1(rNZ7*q8WB8rN?+&rNQ1(s0D[/s/uC(rN,t"
+rN?%$rNQ=,s02O,s/l=&s/Z+"s/l=&mAe:Jq>Zf$h>d;jJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)j$).Fq>^2<M*BaEs&oA2s(_RQs).jZs*Xirs*4Q`s(hXGs'G_+s%iYcrBpTQ
+s$crWs%!#Ys%!)Xs$HZMs$6TK]0?5pq`ah)q*+b+q`^DhqZ,q'm6:>pjZ`VCMa$rcV*<"Mq>Ze1
+h>d;"JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)j$).Fq>^2<O$<S2s%35dh1#C8s0hs4s0)I,s/l=%s/Q+$s02O%s/#aqs/u=,
+s1&*;s0;U*s/#afs-WhLs,6o2s*juls).jJs'>Y)s%NG[s$+CbrrDp[q0r-'rI4W-R3)5*lQ5FW
+q0qEhr;_a>q0o/(aaX'cQ[[cjq0mnph>dKTV#Pr~>
+JcF-trr at WMhuB[qj/UePq>^3/[As8-s/l=)s0;U1s0_m8s1&*?s1A<Es1\NLs2G#\s3L_ps4RG/
+qr-ANs3CY`s1JB at s1&*5s/>sos/c7+s0_m<s2+fXs3^l!s5<e5s5<q7qq_;0n_sN+s5!_.s4..s
+s3CYes2P)Us1nZKs1JBAs0r$9s0Vg3s02O+s/bIbrrDqrq8W61rPn`7R at O/&opkcIq5a1grPnlX
+s2b5Bs/u=(q6'UsqlKa5ql at -)qlB[srN6%$rNH1(rNZ7*q8WB8rN?+&rNQ1(s0D[/s/uC(rN,t"
+rN?%$rNQ=,s02O,s/l=&s/Z+"s/l=&mAe:Jq>Zf$h>d;jJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)lTW^Fq>^JDJNirphgYTGs*4Qls+LE1s,R,7s+12ss)n?Zs(;:<s&f;"s%`Sb
+s%!)[s%3/]s%*/Zs$Q`Os$?ZL]0?5pq`ah)q*+b+q`^\pq#KLtm6:>piBI2?O$<AgV*<"Mq>ZS+
+huEY(JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)lTW^Fq>^JDM*Cr)s%!)`s&8r#s'YkAhgYU;s1&*;s0Ma1s02O0s0)I#s.o[o
+s/l=%s/Q+'s0hs>s186:s/l<us.KC[s-*JAs+UK#s)e9Vs'u(4s&/kgs$F[grrDp[q0r-'rI4W-
+TcX"0jW<eQq0q9dr;_mBq0o/(aaX'cOac3frI0=th>dKTV#Pr~>
+JcF-trr at WMhuB[ql`/@Pq>^K7XfDE%s/l=)s0;U1s0_m9s1/0As1JBGs1eTNs2Y/`s3^kts4dS2
+p#4fJs0_m1s/Q*ns-itSs.97bs/#aqs0D[8s2"`Vs3L_ss5*e7s53k5rS7G/s53;(s5<q5s4RG'
+s3gqms2tA]s2=rSs1eTGs186?s0r$8s0;U,s/bIbrrDqrq8W61rPn`7Tq(q,n!sEKq4-iPqo8ZV
+s/c7&rN>suqlKUos/Q*8s(ea:rN#murN6%$rNH1(qm#t:rN,t"rN?%$qlp+(s/l=&rN#murN5t"
+rNH7*s0)I*s/c7$s/Q$us/c7$mAe:Jq>ZSshuEYpJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)lTW^Fq>^JDJNirphgYTGs*4Qls+LE1s,R,7s+12ss)n?Zs(;:<s&f;"s%`Sb
+s%!)[s%3/]s%*/Zs$Q`Os$?ZL]0?5pq`ah)q*+b+q`^\pq#KLtm6:>piBI2?O$<AgV*<"Mq>ZS+
+huEY(JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)lTW^Fq>^JDM*Cr)s%!)`s&8r#s'YkAhgYU;s1&*;s0Ma1s02O0s0)I#s.o[o
+s/l=%s/Q+'s0hs>s186:s/l<us.KC[s-*JAs+UK#s)e9Vs'u(4s&/kgs$F[grrDp[q0r-'rI4W-
+TcX"0jW<eQq0q9dr;_mBq0o/(aaX'cOac3frI0=th>dKTV#Pr~>
+JcF-trr at WMhuB[ql`/@Pq>^K7XfDE%s/l=)s0;U1s0_m9s1/0As1JBGs1eTNs2Y/`s3^kts4dS2
+p#4fJs0_m1s/Q*ns-itSs.97bs/#aqs0D[8s2"`Vs3L_ss5*e7s53k5rS7G/s53;(s5<q5s4RG'
+s3gqms2tA]s2=rSs1eTGs186?s0r$8s0;U,s/bIbrrDqrq8W61rPn`7Tq(q,n!sEKq4-iPqo8ZV
+s/c7&rN>suqlKUos/Q*8s(ea:rN#murN6%$rNH1(qm#t:rN,t"rN?%$qlp+(s/l=&rN#murN5t"
+rNH7*s0)I*s/c7$s/Q$us/c7$mAe:Jq>ZSshuEYpJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)o019Fs8VtFJNi`jhgYTas-*JPs.01Vs,m>?s+UK%s*+K]s(VLCs'G_-s&/kk
+s%E;as%35\s$ZfQs$?ZL]0?5pq`ah)q*+b+q`^u#q#K4lm6:>ph*1c;P<SekV*<"Mq>ZG'JcE@^
+rrAkpJ,~>
+JcF-trr at WMhuB[)o019Fs8VtFLHb`+s%EAhs&]5+s(;:Ms*=WshgYU<s1/0=s0hs8s/uC!s.fUm
+s/Q*os.]Ols/uC-s0Vg;s1A<=s/uC#s.TI^s-*J?s+:8rs)J'Ps'Yk-s%iYds$OmlrrDp[q0r-'
+rI4W-W?1j8h&brIq0q-`r;`$Fq0o/(aaX'cNIHHY]Dqm2V#Pr~>
+JcF-trr at WMhuB[qo;]pPs8Vu9X/c3#s/l=)s0;U1s0_m9s1/0As1SHIs1nZQs2k;ds3q##s5!_4
+n_rBFs.'+Rs,?u7s,R,Bs-<VQs.]Oms02O5s1eTSs3CYos4[M/rS.A.s53;(s5<q6s4mY.s474u
+s3CYes2b5Zs2+fMs1SHEs1/0<s0Ma0s/l=%l`0sbql9J3q5XD5ql6Wcq0h(hmAg!%s/Z1$rN5ms
+qlB=grG/O8rN#murN6%$qlft&q8WB6rN,t"ql]h"s/uC's/Z*urN#muqlTh"s0)I*s/l=%q5XIq
+l`/(Hq>ZGoJcE@^rrAkpJ,~>
+JcF-trr at WMhuB[)o019Fs8VtFJNi`jhgYTas-*JPs.01Vs,m>?s+UK%s*+K]s(VLCs'G_-s&/kk
+s%E;as%35\s$ZfQs$?ZL]0?5pq`ah)q*+b+q`^u#q#K4lm6:>ph*1c;P<SekV*<"Mq>ZG'JcE@^
+rrAkpJ,~>
+JcF-trr at WMhuB[)o019Fs8VtFLHb`+s%EAhs&]5+s(;:Ms*=WshgYU<s1/0=s0hs8s/uC!s.fUm
+s/Q*os.]Ols/uC-s0Vg;s1A<=s/uC#s.TI^s-*J?s+:8rs)J'Ps'Yk-s%iYds$OmlrrDp[q0r-'
+rI4W-W?1j8h&brIq0q-`r;`$Fq0o/(aaX'cNIHHY]Dqm2V#Pr~>
+JcF-trr at WMhuB[qo;]pPs8Vu9X/c3#s/l=)s0;U1s0_m9s1/0As1SHIs1nZQs2k;ds3q##s5!_4
+n_rBFs.'+Rs,?u7s,R,Bs-<VQs.]Oms02O5s1eTSs3CYos4[M/rS.A.s53;(s5<q6s4mY.s474u
+s3CYes2b5Zs2+fMs1SHEs1/0<s0Ma0s/l=%l`0sbql9J3q5XD5ql6Wcq0h(hmAg!%s/Z1$rN5ms
+qlB=grG/O8rN#murN6%$qlft&q8WB6rN,t"ql]h"s/uC's/Z*urN#muqlTh"s0)I*s/l=%q5XIq
+l`/(Hq>ZGoJcE@^rrAkpJ,~>
+JcF-trr at WMhuB[)q*)iJrBC%+JNi`js$6TOhgYU*s/c6us.TI_s-E\Fs+gW(s*=Wcs).jLs'l"6
+s&f;"s%WMcs%*/Ys$ZlSs$?ZL]0?5pq`ah)q*+b+q`_2)qZ,.fm6:>pffo?7QTk4oV*<"Mq>Z;#
+JcELbrrAkpJ,~>
+JcF-trr at WMhuB[)q*)iJrBC%+M*Cr+s%*/cs&K)'s'u(Gs*"Els,$c=s-qnps1SHFs0Vg.s/#ai
+s/5mks-s%Ws.K=es/5n!s0Ma9s1JB?s0)I%s.TI[s,d8:s*t&ms)%dGs'5S)s%r_ds$P$prrDp[
+q0r-'rI4W-Y9*Q at eK4*Aq0q!\r;`0Jq0o/(aaX'cM11$U^]4<6V#Pr~>
+JcF-trr at WMhuB[qq5VKTrMo\5X/c3#s/l=)s0;U1s0_m9s1/0As1SHIs2"`Ts3(Ghs4./'s5!_4
+n_sN+s52_Rs*jups*k!"s+UK1s,m>Ls.KCjs0)I2s1\NOs2tAfs4./(s5!_4n)=<)s5*e2s4dS+
+s474us3CYgs2b5Zs2"`Ns1\NFs1&*:s0D[.s/l=&s/YUgrrDqrq8W61rPn`7YFPK<eXZ$,q8WH7
+s/Z+"q5`b[rG/O8rN#murN5t"rNH%:rMogsrN,muql]t$s/YmorN#gsrN6+&s/l=&hl=f<q>Z;k
+JcELbrrAkpJ,~>
+JcF-trr at WMhuB[)q*)iJrBC%+JNi`js$6TOhgYU*s/c6us.TI_s-E\Fs+gW(s*=Wcs).jLs'l"6
+s&f;"s%WMcs%*/Ys$ZlSs$?ZL]0?5pq`ah)q*+b+q`_2)qZ,.fm6:>pffo?7QTk4oV*<"Mq>Z;#
+JcELbrrAkpJ,~>
+JcF-trr at WMhuB[)q*)iJrBC%+M*Cr+s%*/cs&K)'s'u(Gs*"Els,$c=s-qnps1SHFs0Vg.s/#ai
+s/5mks-s%Ws.K=es/5n!s0Ma9s1JB?s0)I%s.TI[s,d8:s*t&ms)%dGs'5S)s%r_ds$P$prrDp[
+q0r-'rI4W-Y9*Q at eK4*Aq0q!\r;`0Jq0o/(aaX'cM11$U^]4<6V#Pr~>
+JcF-trr at WMhuB[qq5VKTrMo\5X/c3#s/l=)s0;U1s0_m9s1/0As1SHIs2"`Ts3(Ghs4./'s5!_4
+n_sN+s52_Rs*jups*k!"s+UK1s,m>Ls.KCjs0)I2s1\NOs2tAfs4./(s5!_4n)=<)s5*e2s4dS+
+s474us3CYgs2b5Zs2"`Ns1\NFs1&*:s0D[.s/l=&s/YUgrrDqrq8W61rPn`7YFPK<eXZ$,q8WH7
+s/Z+"q5`b[rG/O8rN#murN5t"rNH%:rMogsrN,muql]t$s/YmorN#gsrN6+&s/l=&hl=f<q>Z;k
+JcELbrrAkpJ,~>
+JcF-trr at WMhuA7Vmsapnq0mlYpHJUAs$QfUs%35`hgYU7s0;U*s/,gfs-NbHs,$c/s*aoks)J'T
+s(D@?s'#G"s%35[s$crTs$?ZL]0?5pq`ah)q*+b+q`_J1q#J_^m6:>peNWp3Rm-XsV*<"Mq>Z.t
+JcEXfrrAkpJ,~>
+JcF-trr at WMhuA7Vmsapnq0n5cs$6TRs%WMls&oA0s(VLSs*Xj#s,[2Is.TIns0U[4s0Ma,s.o[g
+s.KC[s-*JGs-WhTs-WhTs.KChs/Z1)s1&*Bs0r$3s/5mgs-E\Es+UK!s)A!Ps'u(7s&/kks%*/W
+s$+srrrDp[q0r-'rI4W-[iY>FcQ;I;q0pjXr;`<Nq0o/(aaX'cKmnUQ_uK`:V#Pr~>
+JcF-trr at WMhuA8In&G%#q8TJ8s/Z1%s0)I-s0Ma5s0r$=s1A<Es1eTNs2b5bs3gr!s4dS0s53A*
+s5*e3s4mY/ho>\6s)J']s*F]rs,$c;s-NbXs/,h!s0Vg;s1eTQs3:Sps53;(s5<q6rS7G+s4@;#
+s3gqns3(G`s2=rTs1nZJs186>s0Vg2s0)I*s/l=&nZ)Thql9J3q5XD5ql7,qq0gSZmAg!%rMogs
+h5^EhXfD?#rN,murN>t9q5XCoqlK[ss/bajqlB[ss/l=&s/Y%Wai=/VKuS]D_uK`:V#Pr~>
+JcF-trr at WMhuA7Vmsapnq0mlYpHJUAs$QfUs%35`hgYU7s0;U*s/,gfs-NbHs,$c/s*aoks)J'T
+s(D@?s'#G"s%35[s$crTs$?ZL]0?5pq`ah)q*+b+q`_J1q#J_^m6:>peNWp3Rm-XsV*<"Mq>Z.t
+JcEXfrrAkpJ,~>
+JcF-trr at WMhuA7Vmsapnq0n5cs$6TRs%WMls&oA0s(VLSs*Xj#s,[2Is.TIns0U[4s0Ma,s.o[g
+s.KC[s-*JGs-WhTs-WhTs.KChs/Z1)s1&*Bs0r$3s/5mgs-E\Es+UK!s)A!Ps'u(7s&/kks%*/W
+s$+srrrDp[q0r-'rI4W-[iY>FcQ;I;q0pjXr;`<Nq0o/(aaX'cKmnUQ_uK`:V#Pr~>
+JcF-trr at WMhuA8In&G%#q8TJ8s/Z1%s0)I-s0Ma5s0r$=s1A<Es1eTNs2b5bs3gr!s4dS0s53A*
+s5*e3s4mY/ho>\6s)J']s*F]rs,$c;s-NbXs/,h!s0Vg;s1eTQs3:Sps53;(s5<q6rS7G+s4@;#
+s3gqns3(G`s2=rTs1nZJs186>s0Vg2s0)I*s/l=&nZ)Thql9J3q5XD5ql7,qq0gSZmAg!%rMogs
+h5^EhXfD?#rN,murN>t9q5XCoqlK[ss/bajqlB[ss/l=&s/Y%Wai=/VKuS]D_uK`:V#Pr~>
+JcF-trr at WMhuA7VpO;Knq0mlYpHJUDs$m#[s%NGfgOB18s0hs1s/5mis-`nOs,I&5s+(,rs*"E\
+s(MF>s&]4qs$m#Us$?ZL]0?5pq`ah)q*+b+q`_b9q#JGVm6:>pd6 at F-Tg&:$V*<"Mq>Z"pJcEdj
+rrAkpJ,~>
+JcF-trr at WMhuA7VpO;Knq0n5cs$ZlZs&&ets'>Y:s)7p_s+:90s-<VUs/>t&s16s6s.fUcs-WhK
+s,6o7s,[2>s,6o:s-*JNs.01bs/H%&s0hs?s0_m.s.o[as-!D<s*aoks)J'Os'>Y+s&/kls$m#T
+s$,+!rrDp[q0r-'rI4W-^E31N`uaV3q0p^TqZ*<Rq0o/(aaX'cJUW1Ma8c/>V#Pr~>
+JcF-trr at WMhuA8IpVuU#q8TJ8s/Z1%s0)I-s0Ma5s0r$=s1A<Es1eTPs2tAfs4%)%s4dS0s53G,
+s53k3s4dS-s4Q/Hs(24Fs)J'`s+(-)s,[2Gs.97ds/Q+&s0hsAs2Y/ds4RG1oAT`-s5*_1s4[M*
+s4./!s3^kls3(G_s2G#Ts1eTHs1/0<s0Ma1s02O,s/u=$orA#lql9J3q5XD5ql7E$q0g;RmAg!%
+dAm(ZYH%Q%qlKauq8W*-qlBUqs/YIcrN#t"s/XtUai=/VJ]<9 at a8c/>V#Pr~>
+JcF-trr at WMhuA7VpO;Knq0mlYpHJUDs$m#[s%NGfgOB18s0hs1s/5mis-`nOs,I&5s+(,rs*"E\
+s(MF>s&]4qs$m#Us$?ZL]0?5pq`ah)q*+b+q`_b9q#JGVm6:>pd6 at F-Tg&:$V*<"Mq>Z"pJcEdj
+rrAkpJ,~>
+JcF-trr at WMhuA7VpO;Knq0n5cs$ZlZs&&ets'>Y:s)7p_s+:90s-<VUs/>t&s16s6s.fUcs-WhK
+s,6o7s,[2>s,6o:s-*JNs.01bs/H%&s0hs?s0_m.s.o[as-!D<s*aoks)J'Os'>Y+s&/kls$m#T
+s$,+!rrDp[q0r-'rI4W-^E31N`uaV3q0p^TqZ*<Rq0o/(aaX'cJUW1Ma8c/>V#Pr~>
+JcF-trr at WMhuA8IpVuU#q8TJ8s/Z1%s0)I-s0Ma5s0r$=s1A<Es1eTPs2tAfs4%)%s4dS0s53G,
+s53k3s4dS-s4Q/Hs(24Fs)J'`s+(-)s,[2Gs.97ds/Q+&s0hsAs2Y/ds4RG1oAT`-s5*_1s4[M*
+s4./!s3^kls3(G_s2G#Ts1eTHs1/0<s0Ma1s02O,s/u=$orA#lql9J3q5XD5ql7E$q0g;RmAg!%
+dAm(ZYH%Q%qlKauq8W*-qlBUqs/YIcrN#t"s/XtUai=/VJ]<9 at a8c/>V#Pr~>
+JcF-trr at WMhuA7VrI3onq0mlYq*+gDs$crZs%NGgs&ITus0r$4s/H$ns.'+Ss,[2;s+LE$s*"EZ
+s(249s&K(ms$QfN]0?5pq`ah)q*+b+q`_t?qZ+APm6:>pb<Gk)V*=^(V*<"Mq>Z"prI0=tbQ%SB
+V#Pr~>
+JcF-trr at WMhuA7VrI3onq0n;es$-NQs%WMns',M5s(q^Xs*t')s-!DOs.o[ts0r$BeUIOTs+C9%
+s+(,us+(-(s,6o<s-<VRs.]Oms0)I/s0r$6s/H$js-<VBs+LE"s)J'Os'bq4s&]4ps%<;\s$QfN
+gHPW;q`ah)q*+b+q`_t?qZ+APm6:>pb<Gk)V*=^(V*<"Mq>Z"prI0=tbQ%SBV#Pr~>
+JcF-trr at WMhuA8IrPn$#q8TJ8s/Z1%s0)I-s0Ma5s0r$=s1A<Es2"`Ts31Mjs475(s4mY2s53M.
+s5<q5s4[M+s4IA#e].W&s)A!^s*t''s,I&Cs-`n[s/5n#s1&*Fs2k;fs4IA/pYl/1rSIS1s4dS,
+s4@;%s3q"ps3:Sds2Y/Xs2"`Ls1A<@s0_m5s0D[0s0)C&qlBUorrDqrq8W61rPn`7`LQgR^RX\k
+q8UUXrG/U:qlB[sq8Vm'qlAhYs/XnSai=/VJ]@Z.JcEpnrrAkpJ,~>
+JcF-trr at WMhuA7VrI3onq0mlYq*+gDs$crZs%NGgs&ITus0r$4s/H$ns.'+Ss,[2;s+LE$s*"EZ
+s(249s&K(ms$QfN]0?5pq`ah)q*+b+q`_t?qZ+APm6:>pb<Gk)V*=^(V*<"Mq>Z"prI0=tbQ%SB
+V#Pr~>
+JcF-trr at WMhuA7VrI3onq0n;es$-NQs%WMns',M5s(q^Xs*t')s-!DOs.o[ts0r$BeUIOTs+C9%
+s+(,us+(-(s,6o<s-<VRs.]Oms0)I/s0r$6s/H$js-<VBs+LE"s)J'Os'bq4s&]4ps%<;\s$QfN
+gHPW;q`ah)q*+b+q`_t?qZ+APm6:>pb<Gk)V*=^(V*<"Mq>Z"prI0=tbQ%SBV#Pr~>
+JcF-trr at WMhuA8IrPn$#q8TJ8s/Z1%s0)I-s0Ma5s0r$=s1A<Es2"`Ts31Mjs475(s4mY2s53M.
+s5<q5s4[M+s4IA#e].W&s)A!^s*t''s,I&Cs-`n[s/5n#s1&*Fs2k;fs4IA/pYl/1rSIS1s4dS,
+s4@;%s3q"ps3:Sds2Y/Xs2"`Ls1A<@s0_m5s0D[0s0)C&qlBUorrDqrq8W61rPn`7`LQgR^RX\k
+q8UUXrG/U:qlB[sq8Vm'qlAhYs/XnSai=/VJ]@Z.JcEpnrrAkpJ,~>
+JcF-trr at WMhuACZh`gjbJNilns$QfWs%NGgs&/l,q0r at 6s.o[rhgYU9s0D[*s.o[ds-`nMs,?u2
+s*Xifs(q^Gs',M$s%35W]fuGrq`ah)q*+b+q``7Gq#IrHm6:>pa$0G%WBU-,V*<"Mq>Z"ppO7\n
+dJs4HV#Pr~>
+JcF-trr at WMhuACZh`gjbO$<S.s$6TSs%`Sps'G_>s)S-es+UK5s-Wh[s/Q++s1SHHq0r at Js/c7!
+hgYTLs)n?_s)A!Zs*4Qls+13*s,I&Cs.'+`s/,grs/uC-s/c6ps-WhKs+^Q$s)J'Ss(D@<s&B"q
+s%WMcs$QfPs$,C)rrDp[q0r-'rI4W-boZZ\\K:-%q0p at Jr;`f\q0o/(aaX'cJU[?BJcF-trrAkp
+J,~>
+JcF-trr at WMhuADMhl?LlX/c3#s/l=)s0;U1s0_m9s1/0As1\NNs2b5cs3q##s4dS0s5*e6p#5r-
+s4dS+s4@;%s2FfRs,-i-s**A?s(D at Ls*"Ejs+LE0s,m>Ks.KCks0;U7s1nZTs3L_rs5*Y3s5<k5
+s5*e2s4[M+s4IA%s3gqns3:Sds2Y/Ws1nZJs186?s0_m6s0D[/rN5surN#surrDqrq8W61rPn`7
+c(+TX\X`&eq8UITrG/O8rN#b6V5hYWq>Z#cpVqdadJs4HV#Pr~>
+JcF-trr at WMhuACZh`gjbJNilns$QfWs%NGgs&/l,q0r at 6s.o[rhgYU9s0D[*s.o[ds-`nMs,?u2
+s*Xifs(q^Gs',M$s%35W]fuGrq`ah)q*+b+q``7Gq#IrHm6:>pa$0G%WBU-,V*<"Mq>Z"ppO7\n
+dJs4HV#Pr~>
+JcF-trr at WMhuACZh`gjbO$<S.s$6TSs%`Sps'G_>s)S-es+UK5s-Wh[s/Q++s1SHHq0r at Js/c7!
+hgYTLs)n?_s)A!Zs*4Qls+13*s,I&Cs.'+`s/,grs/uC-s/c6ps-WhKs+^Q$s)J'Ss(D@<s&B"q
+s%WMcs$QfPs$,C)rrDp[q0r-'rI4W-boZZ\\K:-%q0p at Jr;`f\q0o/(aaX'cJU[?BJcF-trrAkp
+J,~>
+JcF-trr at WMhuADMhl?LlX/c3#s/l=)s0;U1s0_m9s1/0As1\NNs2b5cs3q##s4dS0s5*e6p#5r-
+s4dS+s4@;%s2FfRs,-i-s**A?s(D at Ls*"Ejs+LE0s,m>Ks.KCks0;U7s1nZTs3L_rs5*Y3s5<k5
+s5*e2s4[M+s4IA%s3gqns3:Sds2Y/Ws1nZJs186?s0_m6s0D[/rN5surN#surrDqrq8W61rPn`7
+c(+TX\X`&eq8UITrG/O8rN#b6V5hYWq>Z#cpVqdadJs4HV#Pr~>
+JcF-trr at WMhuA[bf09"ZJNirps$?ZSs%EAfs&/l&s)@d_s.TIls0;U7s1I6<s186:s/l=!s.KC\
+s-!D>s+:8ts)\3Ts'bq1s&/kis$OUdrrDp[q0r-'rI4W-eK4MdYo`9rq0p4Fr;`r`q0o/(aaX'c
+JU[3>JcF:#rrAkpJ,~>
+JcF-trr at WMhuA[bf09"ZO$<S/s$?ZUs%iYrs'bqDs*+Kos,6oAs.97gs02O7rP&)Vs.fUds-s%T
+s,c,es(24?s(24Fs).jXs*=Wos+gW8s-3POs.01eql0Uls-s%Ms+^Q#s)n?Zs(248s&f;$s%iYb
+s$crUs$H`Mj$*JCq`ah)q*+b+q``OOq#IZ at m6:>p_`n#!XZlQ0V*<"Mq>Z"po6u8jec5XLV#Pr~>
+JcF-trr at WMhuA\Uf;eYdX/c3#s/l=)s0;U1s0_m9s1/0As1nZRs3(Ghs4./&s4mY2s53M.s53k3
+s4RG's4..ms1%mEs+LE!s)J'Ps'jm*s(;:Js)e9es+13+s,d8Ks.TIks02O4s1eTRs3CYps4mS3
+rS[_5s5!_1s4dS-s4@;#s3gqos3:Sds2P)Vs1eTIs186>s0hs6s0;O*qlTgus/Z/"ql9J3q5XD5
+ql82:q0fN<mAg!%_lEZNXfD3:V5hYWq>Z#co>Z@]ec5XLV#Pr~>
+JcF-trr at WMhuA[bf09"ZJNirps$?ZSs%EAfs&/l&s)@d_s.TIls0;U7s1I6<s186:s/l=!s.KC\
+s-!D>s+:8ts)\3Ts'bq1s&/kis$OUdrrDp[q0r-'rI4W-eK4MdYo`9rq0p4Fr;`r`q0o/(aaX'c
+JU[3>JcF:#rrAkpJ,~>
+JcF-trr at WMhuA[bf09"ZO$<S/s$?ZUs%iYrs'bqDs*+Kos,6oAs.97gs02O7rP&)Vs.fUds-s%T
+s,c,es(24?s(24Fs).jXs*=Wos+gW8s-3POs.01eql0Uls-s%Ms+^Q#s)n?Zs(248s&f;$s%iYb
+s$crUs$H`Mj$*JCq`ah)q*+b+q``OOq#IZ at m6:>p_`n#!XZlQ0V*<"Mq>Z"po6u8jec5XLV#Pr~>
+JcF-trr at WMhuA\Uf;eYdX/c3#s/l=)s0;U1s0_m9s1/0As1nZRs3(Ghs4./&s4mY2s53M.s53k3
+s4RG's4..ms1%mEs+LE!s)J'Ps'jm*s(;:Js)e9es+13+s,d8Ks.TIks02O4s1eTRs3CYps4mS3
+rS[_5s5!_1s4dS-s4@;#s3gqos3:Sds2P)Vs1eTIs186>s0hs6s0;O*qlTgus/Z/"ql9J3q5XD5
+ql82:q0fN<mAg!%_lEZNXfD3:V5hYWq>Z#co>Z@]ec5XLV#Pr~>
+JcF-trr at WMhuAmhd6@ATJNirps$ZlYs%`Sls&f;:s*a]ls/,h!s0hsAs0_g4hgYU;s0_m1s/>sj
+s-`nMs,6o/s*=Was(_RCs',M%s%NG\`BO;%q`ah)q*+b+q``aUqZ*T:m6:>p^HVSrYs.u4V*<"M
+q>Z"pms]ifg&M'PV#Pr~>
+JcF-trr at WMhuAmhd6@ATOZre0s$?ZOs%35es&oA4s)7p`s+LE6s-it`s/l=0qnDlTs-<VHs,I&8
+s+UJps'sr8s&]5*s'Yk<s(_RSs*F]ss+gW4s-!DRqk=%bs.TI^s,d87s*t&ks(q^Fs'Pe1s&8qj
+s%35]s$m#RrBKI/rrDp[q0r-'rI4W-gE-4lW?1Fjq0p(Br;a)dq0o/(aaX'cJU[':JcFF'rrAkp
+J,~>
+JcF-trr at WMhuAn[dAm#^X/c3#s/l=)s0;U1s0_m9s1/0Cs2+fVs3:Sls475(s5!_4s5<S/s5*e0
+s4@;#s3UeZs/Yt8s*jujs(hF>ho>\,s(hXTs*=Wqs,$c<s-WhZs/5n#s0hs at s2G#^s4%)'rSde7
+s5*_1s4mY-s475#s3q"ps3:Scs2Y/Ws1eTHs1/0=s0Vg3rNH+$rN6+#rrDqrq8W61rPn`7gRS.h
+WLW at Uq8U1LrG/[<q8T82ai=/VJ]@/uJcFF'rrAkpJ,~>
+JcF-trr at WMhuAmhd6@ATJNirps$ZlYs%`Sls&f;:s*a]ls/,h!s0hsAs0_g4hgYU;s0_m1s/>sj
+s-`nMs,6o/s*=Was(_RCs',M%s%NG\`BO;%q`ah)q*+b+q``aUqZ*T:m6:>p^HVSrYs.u4V*<"M
+q>Z"pms]ifg&M'PV#Pr~>
+JcF-trr at WMhuAmhd6@ATOZre0s$?ZOs%35es&oA4s)7p`s+LE6s-it`s/l=0qnDlTs-<VHs,I&8
+s+UJps'sr8s&]5*s'Yk<s(_RSs*F]ss+gW4s-!DRqk=%bs.TI^s,d87s*t&ks(q^Fs'Pe1s&8qj
+s%35]s$m#RrBKI/rrDp[q0r-'rI4W-gE-4lW?1Fjq0p(Br;a)dq0o/(aaX'cJU[':JcFF'rrAkp
+J,~>
+JcF-trr at WMhuAn[dAm#^X/c3#s/l=)s0;U1s0_m9s1/0Cs2+fVs3:Sls475(s5!_4s5<S/s5*e0
+s4@;#s3UeZs/Yt8s*jujs(hF>ho>\,s(hXTs*=Wqs,$c<s-WhZs/5n#s0hs at s2G#^s4%)'rSde7
+s5*_1s4mY-s475#s3q"ps3:Scs2Y/Ws1eTHs1/0=s0Vg3rNH+$rN6+#rrDqrq8W61rPn`7gRS.h
+WLW at Uq8U1LrG/[<q8T82ai=/VJ]@/uJcFF'rrAkpJ,~>
+JcF-trr at WMhuB0paZfNLJNirps$ZlZs%r_rs(24Ts,-W$s/Z1+s1A<?s/u=&s/c7#hgYU=s0hs2
+s/>sks-itMs,$c,s*F]cs(hXEs'5S(s%WM_aZf_)q`ah)q*+b+q`a$]q#I02m6:>p]0?)l[m'V:
+V*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB0paZfNLOZre1s$H`Qs%<;hs'5S:s)S-fs+p]?s.B=js0Ma<qnDlTs+p].s+(,u
+s*F]Zs&f:js$#=hs&/kus'>Y9s)%dYs*F]os,-iBqjIJYs.KC\s-<VFs+^Q$s)\3Ts(;:<s&]4r
+s%`Sfs%!)TrBUBIks#+Iq`ah)q*+b+q`a$]q#I02m6:>p]0?)l[m'V:V*<"Mq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB1caf>0VX/c3#s/l=)s0;U1s0_m9s1/0Ds2=rZs3L_os4@;)s5*e6oAT`+s4[M(
+s3gqbs02Npq8WGZs)7pKojZgus'u(Ds)S-bs+13+s,d8Is.97fs/l=/s1JBLs3(Gjs4[M3s5<k5
+s5*e1s4RG)s475!s3Uejs3(G_s24lPs1JBAs0_m5qlp%&s/uC(s/Z/"ql9J3q5XD5ql8\Hq0f$.
+mAg!%];kaD\#T8DV5hYWq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB0paZfNLJNirps$ZlZs%r_rs(24Ts,-W$s/Z1+s1A<?s/u=&s/c7#hgYU=s0hs2
+s/>sks-itMs,$c,s*F]cs(hXEs'5S(s%WM_aZf_)q`ah)q*+b+q`a$]q#I02m6:>p]0?)l[m'V:
+V*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB0paZfNLOZre1s$H`Qs%<;hs'5S:s)S-fs+p]?s.B=js0Ma<qnDlTs+p].s+(,u
+s*F]Zs&f:js$#=hs&/kus'>Y9s)%dYs*F]os,-iBqjIJYs.KC\s-<VFs+^Q$s)\3Ts(;:<s&]4r
+s%`Sfs%!)TrBUBIks#+Iq`ah)q*+b+q`a$]q#I02m6:>p]0?)l[m'V:V*<"Mq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB1caf>0VX/c3#s/l=)s0;U1s0_m9s1/0Ds2=rZs3L_os4@;)s5*e6oAT`+s4[M(
+s3gqbs02Npq8WGZs)7pKojZgus'u(Ds)S-bs+13+s,d8Is.97fs/l=/s1JBLs3(Gjs4[M3s5<k5
+s5*e1s4RG)s475!s3Uejs3(G_s24lPs1JBAs0_m5qlp%&s/uC(s/Z/"ql9J3q5XD5ql8\Hq0f$.
+mAg!%];kaD\#T8DV5hYWq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuBI#_*7[DJNirps$ZlZs%r`#s)J'ms-NP1s02O5s1A<8s/5gmrMBObs-;Dhs0r$4
+s/H$ls-`nLs,-i.s*Ocfs(q^Hs'>Y*s%`Sas$4morrDp[q0r-'rI4W-lQ5j%Ri^r\q0o_8r;aGn
+q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuBI#_*7[DP<T"3s$?ZPs$Zl[s&K)+s(_RVs+(-.s-it`s/uC3q7cZRs*Ocis)e9^
+s)7pDs%N5Ph1#B*s'Yk?s)%dZs+:92rK7,Hs.TIbs-`nOs-*JAs+C>ts)J'Ss'u(5s&B"rs%iYc
+s$HZMs$5g4rrDp[q0r-'rI4W-lQ5j%Ri^r\q0o_8r;aGnq0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuBIk_5d=NX/c3#s/l=)s0;U1s0_m9s1A<Gs2G#]s3Ueqs4IA+s53A*s5*e0s474o
+s0r$'s,m,ss)S-Qmpb+ms(VLQs*4Qns+gW7s-E\Us.o[rs0Ma;s2+fYs3gr$s5<q9s5<q5s4mY/
+s4RG's3q"qs3L_gs2Y/Xs1nZIs1&*9qm$+(s0)I)s/Z/"ql9J3q5XD5ql8tPq0ea&mAg!%[As1@
+];k\HV5hYWq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuBI#_*7[DJNirps$ZlZs%r`#s)J'ms-NP1s02O5s1A<8s/5gmrMBObs-;Dhs0r$4
+s/H$ls-`nLs,-i.s*Ocfs(q^Hs'>Y*s%`Sas$4morrDp[q0r-'rI4W-lQ5j%Ri^r\q0o_8r;aGn
+q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuBI#_*7[DP<T"3s$?ZPs$Zl[s&K)+s(_RVs+(-.s-it`s/uC3q7cZRs*Ocis)e9^
+s)7pDs%N5Ph1#B*s'Yk?s)%dZs+:92rK7,Hs.TIbs-`nOs-*JAs+C>ts)J'Ss'u(5s&B"rs%iYc
+s$HZMs$5g4rrDp[q0r-'rI4W-lQ5j%Ri^r\q0o_8r;aGnq0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuBIk_5d=NX/c3#s/l=)s0;U1s0_m9s1A<Gs2G#]s3Ueqs4IA+s53A*s5*e0s474o
+s0r$'s,m,ss)S-Qmpb+ms(VLQs*4Qns+gW7s-E\Us.o[rs0Ma;s2+fYs3gr$s5<q9s5<q5s4mY/
+s4RG's3q"qs3L_gs2Y/Xs1nZIs1&*9qm$+(s0)I)s/Z/"ql9J3q5XD5ql8tPq0ea&mAg!%[As1@
+];k\HV5hYWq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNirps$ZlZs&/l.s*=X)s.fC=s0_m?s0Vg*s.KCas.91^s-WhJs+pW.
+hgYU8s02O&s.TI]s-*J at s+LE"s)n?Ys(;::s&T.qs%*/Udm!d3q`ah)q*+b+q`aTmq#HU"m6:>p
+Ys/*d^HVIBV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>P<T"3s$H`Rs$cr^s&f;1s)%d\s+LE7s.B=js0Ma<q7cZRs).jOs(VLH
+s().-s$?6?hgYT/s'l"Gs*F^"s,$c6s-E\Xs.97Xs-3POs-!D=s+12ps)7pNs'Yk/s&T.rs%35X
+rBgNLks#+Iq`ah)q*+b+q`aTmq#HU"m6:>pYs/*d^HVIBV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l=)s0;U1s0_m:s1JBIs2P)_s3^kss4RG-s5<G+s5*e0s4%(d
+s0)Hks+U9gs(pk-ho>\0s)7p]s*k!%s,I&Cs.'+as/Z1*s186Ks3(Gjs4IA/s5<q7s5*e2s4RG(
+s4..us3L_gs2b5Ys1nZIs1&*9s0Ma2rNZC+s/l=%rrDqrq8W61rPn`7o:5W)PFV$?q8T\>rG00J
+q8T82ai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNirps$ZlZs&/l.s*=X)s.fC=s0_m?s0Vg*s.KCas.91^s-WhJs+pW.
+hgYU8s02O&s.TI]s-*J at s+LE"s)n?Ys(;::s&T.qs%*/Udm!d3q`ah)q*+b+q`aTmq#HU"m6:>p
+Ys/*d^HVIBV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>P<T"3s$H`Rs$cr^s&f;1s)%d\s+LE7s.B=js0Ma<q7cZRs).jOs(VLH
+s().-s$?6?hgYT/s'l"Gs*F^"s,$c6s-E\Xs.97Xs-3POs-!D=s+12ps)7pNs'Yk/s&T.rs%35X
+rBgNLks#+Iq`ah)q*+b+q`aTmq#HU"m6:>pYs/*d^HVIBV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l=)s0;U1s0_m:s1JBIs2P)_s3^kss4RG-s5<G+s5*e0s4%(d
+s0)Hks+U9gs(pk-ho>\0s)7p]s*k!%s,I&Cs.'+as/Z1*s186Ks3(Gjs4IA/s5<q7s5*e2s4RG(
+s4..us3L_gs2b5Ys1nZIs1&*9s0Ma2rNZC+s/l=%rrDqrq8W61rPn`7o:5W)PFV$?q8T\>rG00J
+q8T82ai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNirps$ZlZs'#G>s+139s/YsEs186>s/l<qs-`nSs-`hTs-*J at pP.RS
+s1/08s/Q*os-s%Qs,?u3s*jujs(q^Hs'G_,s%35Ys$51"rrDp[q0r-'rI4W-q&]D5M]V7Lq0oG0
+r;a`!q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>P<T"3s$H`Rs$m#bs',M7s)A!bs,$cBs/#b!s1&*Aq7cZRs'bq7s'G_2
+s&o at lm69EVs(;:Os*k!!s,-iAs.B=^s-NbSs.B=Ys,d89s+12os)%dHs'5S*s&&egs$ZlSs$H`N
+ks#+Iq`ah)q*+b+q`afsqZ)Nqm6:>pXZl[`_`mmFV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l=)s0;U1s0_m;s1SHLs2Y/as3^kss4RG.s5<G+s5*e0s31MT
+s/5m[s*a^_s(:;#ho>\.s).jZs*ap#s,?uAs-it^s/c7/s1SHNs2tAos4mY3s5F"8s5!_0s4RG(
+s3q"os31Mas2=rQs1JB at s0hs7s0Ma1s0)I)s/Z/"ql9J3q5XD5ql9I^qgFBmmAg!%XfD>8_lEOP
+V5hYWq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNirps$ZlZs'#G>s+139s/YsEs186>s/l<qs-`nSs-`hTs-*J at pP.RS
+s1/08s/Q*os-s%Qs,?u3s*jujs(q^Hs'G_,s%35Ys$51"rrDp[q0r-'rI4W-q&]D5M]V7Lq0oG0
+r;a`!q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>P<T"3s$H`Rs$m#bs',M7s)A!bs,$cBs/#b!s1&*Aq7cZRs'bq7s'G_2
+s&o at lm69EVs(;:Os*k!!s,-iAs.B=^s-NbSs.B=Ys,d89s+12os)%dHs'5S*s&&egs$ZlSs$H`N
+ks#+Iq`ah)q*+b+q`afsqZ)Nqm6:>pXZl[`_`mmFV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l=)s0;U1s0_m;s1SHLs2Y/as3^kss4RG.s5<G+s5*e0s31MT
+s/5m[s*a^_s(:;#ho>\.s).jZs*ap#s,?uAs-it^s/c7/s1SHNs2tAos4mY3s5F"8s5!_0s4RG(
+s3q"os31Mas2=rQs1JB at s0hs7s0Ma1s0)I)s/Z/"ql9J3q5XD5ql9I^qgFBmmAg!%XfD>8_lEOP
+V5hYWq>Z#clc+MUh>dKTV#Pr~>
+KE(HAhuE]VJcFX-WIDHCq0mlYq`b$Js%iZ(s)n?us.97oq0r at Us02O#s-s%Os,m>GrKdJDnV5qM
+s186:s/Z0qs.01Ts,I&3s*Ocfs)%dGs&&eis%*/Ys$,7%rrDp[q0r-'rI4W-q#H*im6:>pWBU7\
+a$0<JV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+KE(HAhuE]VJcFX-WIDHCq0nMks$6TNs$ZlWs&&f%s(MFRs+(-0s.'+hs0Vg;s1J6Cs1.rSs&K(u
+s&8qqs%VZ?hgYTKs*k!)s-3PTs.'+Ys.KCgs.97Vs,R,:s+(,ms(q^Es&f;!s%EA\s$ZlRs$5g4
+rrDp[q0r-'rI4W-q#H*im6:>pWBU7\a$0<JV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+KE(HAhuE]VJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Ma6s186Es24lXs3:Sks4./&s5!_5n_sN)s4%(e
+s0M`ts,-i$q8V6"ho>\-s)%dXs*Ocus,-i?s.01gs0)I2s1eT]s4./%s4mS3s53k4s4dS*s4%(q
+s31Mas2=rPs186 at s0r$:s0D[/s/l=%rrDqrq8W61rPn`7q0dsemAg!%WN,o4a/\sTV5hYWq>Z#c
+lc+MUh>dKTV#Pr~>
+KE(HAhuE]VJcFX-WIDHCq0mlYq`b$Js%iZ(s)n?us.97oq0r at Us02O#s-s%Os,m>GrKdJDnV5qM
+s186:s/Z0qs.01Ts,I&3s*Ocfs)%dGs&&eis%*/Ys$,7%rrDp[q0r-'rI4W-q#H*im6:>pWBU7\
+a$0<JV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+KE(HAhuE]VJcFX-WIDHCq0nMks$6TNs$ZlWs&&f%s(MFRs+(-0s.'+hs0Vg;s1J6Cs1.rSs&K(u
+s&8qqs%VZ?hgYTKs*k!)s-3PTs.'+Ys.KCgs.97Vs,R,:s+(,ms(q^Es&f;!s%EA\s$ZlRs$5g4
+rrDp[q0r-'rI4W-q#H*im6:>pWBU7\a$0<JV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+KE(HAhuE]VJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Ma6s186Es24lXs3:Sks4./&s5!_5n_sN)s4%(e
+s0M`ts,-i$q8V6"ho>\-s)%dXs*Ocus,-i?s.01gs0)I2s1eT]s4./%s4mS3s53k4s4dS*s4%(q
+s31Mas2=rPs186 at s0r$:s0D[/s/l=%rrDqrq8W61rPn`7q0dsemAg!%WN,o4a/\sTV5hYWq>Z#c
+lc+MUh>dKTV#Pr~>
+KE(HAhuE]VJcFX-WIDHCq0mlYq`b$Ks&f;9s*ap1s/,h#q0r at Ns/H$js-3PAs,?u=rK7,:m=sMI
+s1JB=s/l<ts.'+Rs,6o0s*Xi^s&oA$s%r_is$?ZMs$,C)rrDp[q0r-'s*jbDJKFb2m6:>pV*=hX
+b<G`NV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+KE(HAhuE]VJcFX-WIDHCq0nMks$6TNs$ZlXs&/l's(VLUs+UK:s.TIrs1&*?s1J6Cs02<Js&/kk
+s%35[s$Ga0hgYT]s-*JRs-s%^s/,gss.o[bs-NbLs,$c*s)n?Zs'u(1s%NG^s$ZlRs$5g4rrDp[
+q0r-'s*jbDJKFb2m6:>pV*=hXb<G`NV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+KE(HAhuE]VJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Vg8s1A<Gs2=rZs3:Sks4./&s5!_5n_sN(s31MU
+s/Z0cs+:8oq8V)sho>\,s(hXUs*F^!s,[2Ks.TIks1&*Os3CYls4.)+rSde6s4dS+s4%(qs31M`
+s2+fLs1JBCs0r$7s0;U,s/c5#ql9J3q5XJ7rCHm&JXl\/mAg!%V5jK0bGtBXV5hYWq>Z#clc+MU
+h>dKTV#Pr~>
+KE(HAhuE]VJcFX-WIDHCq0mlYq`b$Ks&f;9s*ap1s/,h#q0r at Ns/H$js-3PAs,?u=rK7,:m=sMI
+s1JB=s/l<ts.'+Rs,6o0s*Xi^s&oA$s%r_is$?ZMs$,C)rrDp[q0r-'s*jbDJKFb2m6:>pV*=hX
+b<G`NV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+KE(HAhuE]VJcFX-WIDHCq0nMks$6TNs$ZlXs&/l's(VLUs+UK:s.TIrs1&*?s1J6Cs02<Js&/kk
+s%35[s$Ga0hgYT]s-*JRs-s%^s/,gss.o[bs-NbLs,$c*s)n?Zs'u(1s%NG^s$ZlRs$5g4rrDp[
+q0r-'s*jbDJKFb2m6:>pV*=hXb<G`NV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+KE(HAhuE]VJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Vg8s1A<Gs2=rZs3:Sks4./&s5!_5n_sN(s31MU
+s/Z0cs+:8oq8V)sho>\,s(hXUs*F^!s,[2Ks.TIks1&*Os3CYls4.)+rSde6s4dS+s4%(qs31M`
+s2+fLs1JBCs0r$7s0;U,s/c5#ql9J3q5XJ7rCHm&JXl\/mAg!%V5jK0bGtBXV5hYWq>Z#clc+MU
+h>dKTV#Pr~>
+KE(lMe,TFJJcFX-WIDHCq0mlYq`b$Ss'YkIs+UKAs/5n%q0r at Gs.]O[s,I&5s+gW3rJ]oohgYU=
+s0_m.s.fU_s-*J:s)\3Ks'5S,s%r__s$H`Os$5O,rrDp[q0r9+qZ-MBs#tuTr>t>iq0o#$qZ,#-
+q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+KE(lMe,TFJJcFX-WIDHCq0nMks$6TNs$crZs&8r)s(hXXs+^Q=s/#b&s1&*?s1J<Es0_m)q0r?>
+s%<;\s$>I)hgYTqs.TIjs/c7*s/Q*ps.KC^s-!D<s+(,qs)7pIs&f:os$ZlRs$5g4rrDp[q0r9+
+qZ-MBs#tuTr>t>iq0o#$qZ,#-q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+KE(lMe,TFJJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Vg9s1JBIs2=rZs3:Sks4./&s5!_5n_sMts2=rD
+s.fUSs+(,kq8Uroho>\+s(q^Zs+13/s-*JUs0;UAs2Y/^s3gl'rS[_7s53k3s4IA$s3Uegs2G#R
+s1eTIs1&*9s0D[.s/l;$ql9J3rMog3s%*%,s/LX?rLE8Tq8T,.qeOTZq8T82ai=/VJ]@#qJcFR+
+rrAkpJ,~>
+KE(lMe,TFJJcFX-WIDHCq0mlYq`b$Ss'YkIs+UKAs/5n%q0r at Gs.]O[s,I&5s+gW3rJ]oohgYU=
+s0_m.s.fU_s-*J:s)\3Ks'5S,s%r__s$H`Os$5O,rrDp[q0r9+qZ-MBs#tuTr>t>iq0o#$qZ,#-
+q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+KE(lMe,TFJJcFX-WIDHCq0nMks$6TNs$crZs&8r)s(hXXs+^Q=s/#b&s1&*?s1J<Es0_m)q0r?>
+s%<;\s$>I)hgYTqs.TIjs/c7*s/Q*ps.KC^s-!D<s+(,qs)7pIs&f:os$ZlRs$5g4rrDp[q0r9+
+qZ-MBs#tuTr>t>iq0o#$qZ,#-q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+KE(lMe,TFJJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Vg9s1JBIs2=rZs3:Sks4./&s5!_5n_sMts2=rD
+s.fUSs+(,kq8Uroho>\+s(q^Zs+13/s-*JUs0;UAs2Y/^s3gl'rS[_7s53k3s4IA$s3Uegs2G#R
+s1eTIs1&*9s0D[.s/l;$ql9J3rMog3s%*%,s/LX?rLE8Tq8T,.qeOTZq8T82ai=/VJ]@#qJcFR+
+rrAkpJ,~>
+KE(lMe,TFJJcFX-WIDHCq0mlYrBC6Gs&B#3s*F^)s.B=is0DHLs/,gcs,d&2rJ0Efh1#C0s/H$j
+s,I&*s(VLDs'Pe(s$crUs$QfQiBI8Aq`at-q#L at WpO<-+JKFh4m6:>pRm-cNeNWeXV*<"Mq>Z"p
+l[FEbh>dKTV#Pr~>
+KE(lMe,TFJJcFX-WIDHCq0nMks$6TOs$m#\s&B#+s(q^Zs+gW?s/,h)s1&*?s1JBGs1863s.9%8
+s%NG_s$PC%h1#C0s0r$6s/l=#s/#abs-!D at s+gW$s)7pJs&K(ps%*/Uks#+Iq`at-q#L at WpO<-+
+JKFh4m6:>pRm-cNeNWeXV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+KE(lMe,TFJJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Vg9s1JBIs2=rZs3:Sks4./&s5!_5n_sMns1JB4
+s-s%Fs*aofq8Ufkh8]J9s*k!'s-`nes1JBIs2G#cs5*Y1s5F"8s5!_0s4IA#s3:Sbs24lRs1\ND
+s0_m5s02O+rrE"us/Q%;rCHm&rMoV3s/LX?s.&JVq8So(rG0r`q8T82ai=/VJ]@#qJcFR+rrAkp
+J,~>
+KE(lMe,TFJJcFX-WIDHCq0mlYrBC6Gs&B#3s*F^)s.B=is0DHLs/,gcs,d&2rJ0Efh1#C0s/H$j
+s,I&*s(VLDs'Pe(s$crUs$QfQiBI8Aq`at-q#L at WpO<-+JKFh4m6:>pRm-cNeNWeXV*<"Mq>Z"p
+l[FEbh>dKTV#Pr~>
+KE(lMe,TFJJcFX-WIDHCq0nMks$6TOs$m#\s&B#+s(q^Zs+gW?s/,h)s1&*?s1JBGs1863s.9%8
+s%NG_s$PC%h1#C0s0r$6s/l=#s/#abs-!D at s+gW$s)7pJs&K(ps%*/Uks#+Iq`at-q#L at WpO<-+
+JKFh4m6:>pRm-cNeNWeXV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+KE(lMe,TFJJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Vg9s1JBIs2=rZs3:Sks4./&s5!_5n_sMns1JB4
+s-s%Fs*aofq8Ufkh8]J9s*k!'s-`nes1JBIs2G#cs5*Y1s5F"8s5!_0s4IA#s3:Sbs24lRs1\ND
+s0_m5s02O+rrE"us/Q%;rCHm&rMoV3s/LX?s.&JVq8So(rG0r`q8T82ai=/VJ]@#qJcFR+rrAkp
+J,~>
+KE(lMe,TFJJcFX-WIDHCq0mlYrBC6Is&T/8s+138s.KCks0MNMs.B=Us,#-XhgYU's-<V:s)J'U
+s'l"-s%!)Ys$crSiBI8As$$5YrI4Q+pO<!'K-'DDq0nYor;bM7q0o/(aaX'cJUZp6JcFR+rrAkp
+J,~>
+KE(lMe,TFJJcFX-WIDHCq0nMks$6TPs%!)^s&K)-s)%d\s+p]As/5n+s1/0As1JBGs0;U!s-<D/
+s%35Ys$4sqhgYU;s0hs5s/uBts.97Xs-*J<s*Oc`s'Pe/s&/kis$H`Mm6:OMs$$5YrI4Q+pO<!'
+K-'DDq0nYor;bM7q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+KE(lMe,TFJJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Vg9s1JBIs2=rYs3:Sks4./&s5!_5oAT`-s3:SS
+s/,g[s+gW$s)@eRb at 9AKs+(-4s.fV%s1/0Js3Uf%rSIS3s5F"8s5!_0s4[M's3Uehs2P)Vs1eTF
+s0hs7s0;U-rrE)#rGDL(rPnZ5pW!*1K:M>/q8Sc$rG1)dq8T82ai=/VJ]@#qJcFR+rrAkpJ,~>
+KE(lMe,TFJJcFX-WIDHCq0mlYrBC6Is&T/8s+138s.KCks0MNMs.B=Us,#-XhgYU's-<V:s)J'U
+s'l"-s%!)Ys$crSiBI8As$$5YrI4Q+pO<!'K-'DDq0nYor;bM7q0o/(aaX'cJUZp6JcFR+rrAkp
+J,~>
+KE(lMe,TFJJcFX-WIDHCq0nMks$6TPs%!)^s&K)-s)%d\s+p]As/5n+s1/0As1JBGs0;U!s-<D/
+s%35Ys$4sqhgYU;s0hs5s/uBts.97Xs-*J<s*Oc`s'Pe/s&/kis$H`Mm6:OMs$$5YrI4Q+pO<!'
+K-'DDq0nYor;bM7q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+KE(lMe,TFJJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Vg9s1JBIs2=rYs3:Sks4./&s5!_5oAT`-s3:SS
+s/,g[s+gW$s)@eRb at 9AKs+(-4s.fV%s1/0Js3Uf%rSIS3s5F"8s5!_0s4[M's3Uehs2P)Vs1eTF
+s0hs7s0;U-rrE)#rGDL(rPnZ5pW!*1K:M>/q8Sc$rG1)dq8T82ai=/VJ]@#qJcFR+rrAkpJ,~>
+KE(rOs8Vfnh>dKTJcFX-WIDHCq0mlYs$$HJs$Qfgs)%dgs-`n]s/Q++q0r at 2s,G3VhgYTas*F]b
+s().1s%35]s$m#Tj$*>?rBC%+q*+P%pHF?Rm6:>pP<SpFh*1X`V*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+KE(rOs8Vfnh>dKTJcFX-WIDHCq0nMks$?ZRs%*/`s&T//s).j^s,$cCs/>t-s186Cs1SHHs/c6h
+s,?c&s$m#Sb<Fg4s1A<?s0)I&s.o[es-*J<s*4QYs'u(6s&B"hs$m#Us$60>qZ-RYq0r-'pO;j#
+LE>hHq0nMkr;bY;q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+KE(rOs8Vfnh>dKTJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Vg9s1JBHs24lWs31Mis4./&s5!_5p#5r/
+s53k#s1&**s,[25s*=W^q8UHaho>\ds/uC1s24l_s4mY1s5*e5s5F"8s5!_1s4dS)s3gqls2k;Z
+s1nZHs0r$9s0DZErrE(;s/l=&q8W61pVus-LRdb3q8SVurG15hq8T82ai=/VJ]@#qJcFR+rrAkp
+J,~>
+KE(rOs8Vfnh>dKTJcFX-WIDHCq0mlYs$$HJs$Qfgs)%dgs-`n]s/Q++q0r at 2s,G3VhgYTas*F]b
+s().1s%35]s$m#Tj$*>?rBC%+q*+P%pHF?Rm6:>pP<SpFh*1X`V*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+KE(rOs8Vfnh>dKTJcFX-WIDHCq0nMks$?ZRs%*/`s&T//s).j^s,$cCs/>t-s186Cs1SHHs/c6h
+s,?c&s$m#Sb<Fg4s1A<?s0)I&s.o[es-*J<s*4QYs'u(6s&B"hs$m#Us$60>qZ-RYq0r-'pO;j#
+LE>hHq0nMkr;bY;q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+KE(rOs8Vfnh>dKTJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Vg9s1JBHs24lWs31Mis4./&s5!_5p#5r/
+s53k#s1&**s,[25s*=W^q8UHaho>\ds/uC1s24l_s4mY1s5*e5s5F"8s5!_1s4dS)s3gqls2k;Z
+s1nZHs0r$9s0DZErrE(;s/l=&q8W61pVus-LRdb3q8SVurG15hq8T82ai=/VJ]@#qJcFR+rrAkp
+J,~>
+L&^TAhuE]VJcFX-WIDHCq0mlYs$-NMs$m#ls)7pks.'+cs/l=0q0r at +`J39!s)\3Ps&f:os%<;\
+s$H$8q#LFYrrDp[q0r-'pO;WrN?7INq0nAgr;be?q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+L&^TAhuE]VJcFX-WIDHCq0nMks$?ZRs%35bs&]51s)7p`s,-iEs/H%/s1A<ErP&<5s-`nBq0r?2
+`BN1.s1JB?s02O(s.B=Rs+:8ms)%dJs'#Fts%NGas$m#Rs$-NIq#LFYrrDp[q0r-'pO;WrN?7IN
+q0nAgr;be?q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+L&^TAhuE]VJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Vg9s1A<Fs2+fUs3(Ghs4./&s5!_5p#5r.s5*e!
+s0r$'s,?u/s*"EYq8U<]ho>](s2+f]s4dS/s5*e5s5F"8rS at M/s4@;"s3CYfs2P)Ts*juos*+Kc
+s0;S(rN?1&q8W61pVua'NL]C9q8SJqrG1Alq8T82ai=/VJ]@#qJcFR+rrAkpJ,~>
+L&^TAhuE]VJcFX-WIDHCq0mlYs$-NMs$m#ls)7pks.'+cs/l=0q0r at +`J39!s)\3Ps&f:os%<;\
+s$H$8q#LFYrrDp[q0r-'pO;WrN?7INq0nAgr;be?q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+L&^TAhuE]VJcFX-WIDHCq0nMks$?ZRs%35bs&]51s)7p`s,-iEs/H%/s1A<ErP&<5s-`nBq0r?2
+`BN1.s1JB?s02O(s.B=Rs+:8ms)%dJs'#Fts%NGas$m#Rs$-NIq#LFYrrDp[q0r-'pO;WrN?7IN
+q0nAgr;be?q0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+L&^TAhuE]VJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Vg9s1A<Fs2+fUs3(Ghs4./&s5!_5p#5r.s5*e!
+s0r$'s,?u/s*"EYq8U<]ho>](s2+f]s4dS/s5*e5s5F"8rS at M/s4@;"s3CYfs2P)Ts*juos*+Kc
+s0;S(rN?1&q8W61pVua'NL]C9q8SJqrG1Alq8T82ai=/VJ]@#qJcFR+rrAkpJ,~>
+L&_)Op](*joDegjnc/UhJcFX-WIDHCq0mlYs$?ZQs%*/ps)J'ps.B=is02O6q0r@$_1pirs'#Fs
+s%<;\s$H<@q#L.QrrDp[q0r-'pO;KnOWNmRq0n5cr;bqCq0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+L&_)Op](*joDegjnc/UhJcFX-WIDHCq0nMks$?ZRs%35bs&f;3s)A!bs,6oGs/Q+1s1J6Cs/c6g
+s+gE!s$4CahgYU=s0r$.s-s%Is*juls)%dDs&K(ss%iY&r<*'$s$-<CrrDp[q0r-'pO;KnOWNmR
+q0n5cr;bqCq0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+L&_)Op](*joDegjnc/UhJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Vg9s186Ds2"`Ss2tAgs4./&s5!_5
+pYl/1s5*e3s2tANs.KCKs*juhs(V;K^LH*?s3:Sts4mY2s53k8s53e3s5!_-s4%(3s,d8=s+UKe
+s1/0=s0Vg3rrE#$s/u1;q5X2/mAc;=mAg!%MlQ_kjf8-rV5hYWq>Z#clc+MUh>dKTV#Pr~>
+L&_)Op](*joDegjnc/UhJcFX-WIDHCq0mlYs$?ZQs%*/ps)J'ps.B=is02O6q0r@$_1pirs'#Fs
+s%<;\s$H<@q#L.QrrDp[q0r-'pO;KnOWNmRq0n5cr;bqCq0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+L&_)Op](*joDegjnc/UhJcFX-WIDHCq0nMks$?ZRs%35bs&f;3s)A!bs,6oGs/Q+1s1J6Cs/c6g
+s+gE!s$4CahgYU=s0r$.s-s%Is*juls)%dDs&K(ss%iY&r<*'$s$-<CrrDp[q0r-'pO;KnOWNmR
+q0n5cr;bqCq0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+L&_)Op](*joDegjnc/UhJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Vg9s186Ds2"`Ss2tAgs4./&s5!_5
+pYl/1s5*e3s2tANs.KCKs*juhs(V;K^LH*?s3:Sts4mY2s53k8s53e3s5!_-s4%(3s,d8=s+UKe
+s1/0=s0Vg3rrE#$s/u1;q5X2/mAc;=mAg!%MlQ_kjf8-rV5hYWq>Z#clc+MUh>dKTV#Pr~>
+JcGECr;cBfr;cNjrr at WMhuB[)]0?%>K0K<#s$QfUs%<;ts)e:!s.]Oos0Ma:q0or1hgYSts$m#T
+q*+ZUmlpaOq`ah)q*+P%krt at Rm6:>pLHbS8lTY,nV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcGECr;cBfr;cNjrr at WMhuB[)]0?%>P<T"4s$crZs%NGos().Ks*Xj*s-s%hs1A<EqnE*3s-`n?
+q0oq>hgYU4s/#a]s+p]*s)\3PruD%VrtbW.s$ZlSs$H`Oq*+fYq`ah)q*+P%krt at Rm6:>pLHbS8
+lTY,nV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcGECr;cBfr;cNjrr at WMhuB[q];k\HX/c3#s/l=)s0;U2s0r$=s1JBIs2=r[s3Uers4RG.s5<_3
+s5<q7s5!_1s2k;Js.01Es*Ocbs(D/I]40[;s4mY2s53k8qqqFGs-s%Ss4%(rs31M`s2"`Ks1/0;
+s0M_*rNQ=*q8W61pVuHtQ(76Aq8S2iqePMtq8T82ai=/VJ]@#qJcFR+rrAkpJ,~>
+JcGECr;cBfr;cNjrr at WMhuB[)]0?%>K0K<#s$QfUs%<;ts)e:!s.]Oos0Ma:q0or1hgYSts$m#T
+q*+ZUmlpaOq`ah)q*+P%krt at Rm6:>pLHbS8lTY,nV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcGECr;cBfr;cNjrr at WMhuB[)]0?%>P<T"4s$crZs%NGos().Ks*Xj*s-s%hs1A<EqnE*3s-`n?
+q0oq>hgYU4s/#a]s+p]*s)\3PruD%VrtbW.s$ZlSs$H`Oq*+fYq`ah)q*+P%krt at Rm6:>pLHbS8
+lTY,nV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcGECr;cBfr;cNjrr at WMhuB[q];k\HX/c3#s/l=)s0;U2s0r$=s1JBIs2=r[s3Uers4RG.s5<_3
+s5<q7s5!_1s2k;Js.01Es*Ocbs(D/I]40[;s4mY2s53k8qqqFGs-s%Ss4%(rs31M`s2"`Ks1/0;
+s0M_*rNQ=*q8W61pVuHtQ(76Aq8S2iqePMtq8T82ai=/VJ]@#qJcFR+rrAkpJ,~>
+JcGECr;c6bqZ-Nnrr at WMhuB[)]0?%>K0K<%s$crYs%NH#s*+L's/#aus0hs=q0of-h1#/"ks#+I
+q`ah)q*+P%jZ](Rm6:>pJNj#4mlpPrV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcGECr;c6bqZ-Nnrr at WMhuB[)]0?%>P<T"4s$crZs%EAms'u(Is*Xj*s.'+js1J0As/c6gs*sin
+[m&Vss&B"hs#^65s'bq6s&]4qs$m#Ws$ZlQq*+fYq`ah)q*+P%jZ](Rm6:>pJNj#4mlpPrV*<"M
+q>Z"pl[FEbh>dKTV#Pr~>
+JcGECr;c6bqZ-Nnrr at WMhuB[q];k\HX/c3#s/l=)s0;U1s0hs;s1A<Gs2=r[s3Uers4RG.s5<_3
+s5<q6s4mY/s2b5Fs-it?s*4Q]s(D/I[pn15s.fOes.TJMs4[M*s475"s3L_fs2G#Ss1SHDs0hq-
+qm#t:q5X2/jf4`=mAg!%JZAZan#H3'V5hYWq>Z#clc+MUh>dKTV#Pr~>
+JcGECr;c6bqZ-Nnrr at WMhuB[)]0?%>K0K<%s$crYs%NH#s*+L's/#aus0hs=q0of-h1#/"ks#+I
+q`ah)q*+P%jZ](Rm6:>pJNj#4mlpPrV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcGECr;c6bqZ-Nnrr at WMhuB[)]0?%>P<T"4s$crZs%EAms'u(Is*Xj*s.'+js1J0As/c6gs*sin
+[m&Vss&B"hs#^65s'bq6s&]4qs$m#Ws$ZlQq*+fYq`ah)q*+P%jZ](Rm6:>pJNj#4mlpPrV*<"M
+q>Z"pl[FEbh>dKTV#Pr~>
+JcGECr;c6bqZ-Nnrr at WMhuB[q];k\HX/c3#s/l=)s0;U1s0hs;s1A<Gs2=r[s3Uers4RG.s5<_3
+s5<q6s4mY/s2b5Fs-it?s*4Q]s(D/I[pn15s.fOes.TJMs4[M*s475"s3L_fs2G#Ss1SHDs0hq-
+qm#t:q5X2/jf4`=mAg!%JZAZan#H3'V5hYWq>Z#clc+MUh>dKTV#Pr~>
+JcGECr;c$\r;cltrr at WMhuB[)]0?%>K0K<%s$m#\s%`T(s*F^-s/>t&s0hs=q0oT'l[JX0rI3il
+rrDp[q0r-'pO;'bSK@/^q0mlYrBC/[o02u!V*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcGECr;c$\r;cltrr at WMhuB[)]0?%>P<T"4s$crYs%<;ks'l"Gs*Od(s.'+js1S6Bs/c6bs*FKi
+Ys.K&q#LABs+(,js(D@@s&o at us%*/[s$crRq*+fYq`ah)q*+P%iBEeRm6:>pJNj#rr;cFQq0o/(
+aaX'cJUZp6JcFR+rrAkpJ,~>
+JcGECr;c$\r;cltrr at WMhuB[q];k\HX/c3#s/l=)s0;U1s0_m9s186Es2=r[s3Uers4RG.s5<_3
+s5<q6s4mY.s2G#@s-Nb9s)n?Zs(D/IZ"!%=q+1J(rSde7s4mY/s4RG(s3gqls2k;[s2"`Ls1/.0
+s0M[0q8W61pVu0lSXf)Iq8RucrMog3o;_W+V5hYWq>Z#clc+MUh>dKTV#Pr~>
+JcGECr;c$\r;cltrr at WMhuB[)]0?%>K0K<%s$m#\s%`T(s*F^-s/>t&s0hs=q0oT'l[JX0rI3il
+rrDp[q0r-'pO;'bSK@/^q0mlYrBC/[o02u!V*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcGECr;c$\r;cltrr at WMhuB[)]0?%>P<T"4s$crYs%<;ks'l"Gs*Od(s.'+js1S6Bs/c6bs*FKi
+Ys.K&q#LABs+(,js(D@@s&o at us%*/[s$crRq*+fYq`ah)q*+P%iBEeRm6:>pJNj#rr;cFQq0o/(
+aaX'cJUZp6JcFR+rrAkpJ,~>
+JcGECr;c$\r;cltrr at WMhuB[q];k\HX/c3#s/l=)s0;U1s0_m9s186Es2=r[s3Uers4RG.s5<_3
+s5<q6s4mY.s2G#@s-Nb9s)n?Zs(D/IZ"!%=q+1J(rSde7s4mY/s4RG(s3gqls2k;[s2"`Ls1/.0
+s0M[0q8W61pVu0lSXf)Iq8RucrMog3o;_W+V5hYWq>Z#clc+MUh>dKTV#Pr~>
+L&_)Op&Fsjj8]&XJcFX-WIDHCq0mr[s$H`Ts%<;cs().Xs-3Pas0D[5s18#TXbQS!q#Kr6ks#+I
+q`ah)q*+P%h*.MRm6:>pJNilnr;cRUq0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+L&_)Op&Fsjj8]&XJcFX-WIDHCq0nMks$?ZQs%!)\s&B#,s)%d^s,-iGs/Z14s1S<Ds/H$Zs)n-d
+XZlK.q#Kr6s)%dHs',M$s%<;_s$crRq*+fYq`ah)q*+P%h*.MRm6:>pJNilnr;cRUq0o/(aaX'c
+JUZp6JcFR+rrAkpJ,~>
+L&_)Op&Fsjj8]&XJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Ma5s0r$=s1\NOs2tAgs4./&s5!_5q;MA3
+s5*e2s4dRks/Z0as*aohs).jLq8TOGpW!#"n](Ufs53k5s4mY.s4..ss3:Scs2P)Us1A:2s0_m6
+s0MO at q5X2/h5[0=mAg!%JZAOGrG2/-q8T82ai=/VJ]@#qJcFR+rrAkpJ,~>
+L&_)Op&Fsjj8]&XJcFX-WIDHCq0mr[s$H`Ts%<;cs().Xs-3Pas0D[5s18#TXbQS!q#Kr6ks#+I
+q`ah)q*+P%h*.MRm6:>pJNilnr;cRUq0o/(aaX'cJUZp6JcFR+rrAkpJ,~>
+L&_)Op&Fsjj8]&XJcFX-WIDHCq0nMks$?ZQs%!)\s&B#,s)%d^s,-iGs/Z14s1S<Ds/H$Zs)n-d
+XZlK.q#Kr6s)%dHs',M$s%<;_s$crRq*+fYq`ah)q*+P%h*.MRm6:>pJNilnr;cRUq0o/(aaX'c
+JUZp6JcFR+rrAkpJ,~>
+L&_)Op&Fsjj8]&XJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Ma5s0r$=s1\NOs2tAgs4./&s5!_5q;MA3
+s5*e2s4dRks/Z0as*aohs).jLq8TOGpW!#"n](Ufs53k5s4mY.s4..ss3:Scs2P)Us1A:2s0_m6
+s0MO at q5X2/h5[0=mAg!%JZAOGrG2/-q8T82ai=/VJ]@#qJcFR+rrAkpJ,~>
+L&_#Mq>^BnhuE]VJcFX-WIDHCq0mr[s$H`Ts%<;as'l"Us-<Ves0D[5s18#TWJ:9MjaQS\rrDp[
+q0r-'pO:^XV]P4hq0mlYofi<Sq`ah)V*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+L&_#Mq>^BnhuE]VJcFX-WIDHCq0nMks$?ZPs$m#Zs&8r*s(q^\s,$cEs/Q+2s1J<Ds1\N/s,-hq
+q0o;,qZ,`,s'>Y(s%NGas$crRq*+fYq`ah)q*+P%f06)Rm6:>pJNi`jr;c^Yq0o/(aaX'cJUZp6
+JcFR+rrAkpJ,~>
+L&_#Mq>^BnhuE]VJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Ma5s0r$=s1\NOs2tAgs4./&s5!_5q;MA3
+s5*e2s4dRls/Z0`s*F]es).jLq8TCCqafhgs5F"8s5!_.s4..ss3:Sds2=rNrrE).s0hs8q8W61
+pVtgbVk!.Sq8Rucor at t+ql9J3V5hYWq>Z#clc+MUh>dKTV#Pr~>
+L&_#Mq>^BnhuE]VJcFX-WIDHCq0mr[s$H`Ts%<;as'l"Us-<Ves0D[5s18#TWJ:9MjaQS\rrDp[
+q0r-'pO:^XV]P4hq0mlYofi<Sq`ah)V*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+L&_#Mq>^BnhuE]VJcFX-WIDHCq0nMks$?ZPs$m#Zs&8r*s(q^\s,$cEs/Q+2s1J<Ds1\N/s,-hq
+q0o;,qZ,`,s'>Y(s%NGas$crRq*+fYq`ah)q*+P%f06)Rm6:>pJNi`jr;c^Yq0o/(aaX'cJUZp6
+JcFR+rrAkpJ,~>
+L&_#Mq>^BnhuE]VJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Ma5s0r$=s1\NOs2tAgs4./&s5!_5q;MA3
+s5*e2s4dRls/Z0`s*F]es).jLq8TCCqafhgs5F"8s5!_.s4..ss3:Sds2=rNrrE).s0hs8q8W61
+pVtgbVk!.Sq8Rucor at t+ql9J3V5hYWq>Z#clc+MUh>dKTV#Pr~>
+KE(HAhuE]VJcFX-WIDHCq0mr[s$H`Ts%*/]s'YkQs-*J`s0;U4s18#TZ%i'Fs,[2JhgY)ZrrDp[
+q0r-'pO:RTWugXlq0mlYnNQmOs$$7-V*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+KE(HAhuE]VJcFX-WIDHCq0nMks$6TNs$crXs&/l(s(hXZs+p]Cs/H%0qn2sCs.TIHs(hFZYs.s`
+rBB+fs%`Scs$crRq*+fYq`ah)q*+P%dlsfRm6:>pJNiTfr;cj]q0o/(aaX'cJUZp6JcFR+rrAkp
+J,~>
+KE(HAhuE]VJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Ma5s0r$=s1\NOs2tAgs4./&s5!_5q;MA3s5*e3
+s4mXns/c6as*aois).jLq8T[Kq'5iIho>]Ts5!_.s4..ts3:S`s1eR6s1/0>s0haCq5X2/e#KI=
+mAg!%JZA7?rG2G5q8T82ai=/VJ]@#qJcFR+rrAkpJ,~>
+KE(HAhuE]VJcFX-WIDHCq0mr[s$H`Ts%*/]s'YkQs-*J`s0;U4s18#TZ%i'Fs,[2JhgY)ZrrDp[
+q0r-'pO:RTWugXlq0mlYnNQmOs$$7-V*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+KE(HAhuE]VJcFX-WIDHCq0nMks$6TNs$crXs&/l(s(hXZs+p]Cs/H%0qn2sCs.TIHs(hFZYs.s`
+rBB+fs%`Scs$crRq*+fYq`ah)q*+P%dlsfRm6:>pJNiTfr;cj]q0o/(aaX'cJUZp6JcFR+rrAkp
+J,~>
+KE(HAhuE]VJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Ma5s0r$=s1\NOs2tAgs4./&s5!_5q;MA3s5*e3
+s4mXns/c6as*aois).jLq8T[Kq'5iIho>]Ts5!_.s4..ts3:S`s1eR6s1/0>s0haCq5X2/e#KI=
+mAg!%JZA7?rG2G5q8T82ai=/VJ]@#qJcFR+rrAkpJ,~>
+JcGHEg].9RJcFX-WIDHCq0mr[s$H`Ss$m#Ys'G_Ms,m>[s/uC.s1%lR\VBoNq1ep1s-`n^s/b%*
+pHJTWq`ah)q*+P%cT\NRm6:>pJNiHbqZ-SDV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcGHEg].9RJcFX-WIDHCq0nMks$6TNs$ZlVs&&f&s(_RXs+gWAs/>t.rO`*Bs1\N,s+UJeq0ok<
+q#KqKh1#Aiq*+fYq`ah)q*+P%cT\NRm6:>pJNiHbqZ-SDV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcGHEg].9RJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Ma5s0r$=s1\NOs2tAes3q##s4mY4q;MA3rSIS1
+s2P)@s-<V7s*4Q`s(V;K\RP at ZnRC=os4RG's3L_ds2"^8s1A<As0qgDrN#mspVtOZYFP![q8Ruc
+mAg2%rCHn,V5hYWq>Z#clc+MUh>dKTV#Pr~>
+JcGHEg].9RJcFX-WIDHCq0mr[s$H`Ss$m#Ys'G_Ms,m>[s/uC.s1%lR\VBoNq1ep1s-`n^s/b%*
+pHJTWq`ah)q*+P%cT\NRm6:>pJNiHbqZ-SDV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcGHEg].9RJcFX-WIDHCq0nMks$6TNs$ZlVs&&f&s(_RXs+gWAs/>t.rO`*Bs1\N,s+UJeq0ok<
+q#KqKh1#Aiq*+fYq`ah)q*+P%cT\NRm6:>pJNiHbqZ-SDV*<"Mq>Z"pl[FEbh>dKTV#Pr~>
+JcGHEg].9RJcFX-WQ)QMq8TJ8s/Z1%s0)I-s0Ma5s0r$=s1\NOs2tAes3q##s4mY4q;MA3rSIS1
+s2P)@s-<V7s*4Q`s(V;K\RP at ZnRC=os4RG's3L_ds2"^8s1A<As0qgDrN#mspVtOZYFP![q8Ruc
+mAg2%rCHn,V5hYWq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>K0K<%s$Q`Qs'5SIs,I&Ts/Z1(s0_ZO^P;VVnV7()s-`n^s/5n!s0Ma:
+hgYGdrrDp[q0r-'pO::LZQAKtq0mlYlTY8rr;`ZXaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>P<T"3s$H`Rs$m#bs'>Y=s*"Ess-Nb`s1&$=s1JBGs.TIHs(V:X^HVMp
+ks#,Gs(VL_hgYGdrrDp[q0r-'pO::LZQAKtq0mlYlTY8rr;`ZXaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l=)s0;U1s0_m9s1/0Ds2=rZs31Mjs475(s53Y2s5<k5s5*dr
+s/uBhs+C>us)e9Wq8U0Yq]k-1ho>]Ds2tAZrrE)4s186?q8WB7rN#\4bGqn=mAg!%JZA%9rPne,
+V5hYWq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>K0K<%s$Q`Qs'5SIs,I&Ts/Z1(s0_ZO^P;VVnV7()s-`n^s/5n!s0Ma:
+hgYGdrrDp[q0r-'pO::LZQAKtq0mlYlTY8rr;`ZXaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>P<T"3s$H`Rs$m#bs'>Y=s*"Ess-Nb`s1&$=s1JBGs.TIHs(V:X^HVMp
+ks#,Gs(VL_hgYGdrrDp[q0r-'pO::LZQAKtq0mlYlTY8rr;`ZXaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l=)s0;U1s0_m9s1/0Ds2=rZs31Mjs475(s53Y2s5<k5s5*dr
+s/uBhs+C>us)e9Wq8U0Yq]k-1ho>]Ds2tAZrrE)4s186?q8WB7rN#\4bGqn=mAg!%JZA%9rPne,
+V5hYWq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>K0K<#s$?TMs'#GDs,-iNs/5n!s0VTNa+jC\l\>G#s-`n[s.]Ols/uC0
+s186:hgYShrrDp[q0r-'pO:.H[iXp#q0mlYlTY,nr;`f\aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>P<T"3s$H`Rs$cr`s'5S;s)n?qs-E\^s0r$=s186Cs1\N,s+UJhq0p at J
+q#KG=s&8r3s*t'1s.A1ts$$G_q`ah)q*+P%a$-sRm6:>pJNiB`q0r8BWBSFQq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l=)s0;U1s0_m9s1/0Ds2=rXs2tAfs4%)$s53k7q;M;1s53jt
+s0;Tns+^Q&s*+K[q8UHaq'4X's)-`6s2G!<s1\NFs1.sFrN6+$s/Yn6a/ZV=mAg!%JZA%9q8WAK
+WN+([q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>K0K<#s$?TMs'#GDs,-iNs/5n!s0VTNa+jC\l\>G#s-`n[s.]Ols/uC0
+s186:hgYShrrDp[q0r-'pO:.H[iXp#q0mlYlTY,nr;`f\aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>P<T"3s$H`Rs$cr`s'5S;s)n?qs-E\^s0r$=s186Cs1\N,s+UJhq0p at J
+q#KG=s&8r3s*t'1s.A1ts$$G_q`ah)q*+P%a$-sRm6:>pJNiB`q0r8BWBSFQq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l=)s0;U1s0_m9s1/0Ds2=rXs2tAfs4%)$s53k7q;M;1s53jt
+s0;Tns+^Q&s*+K[q8UHaq'4X's)-`6s2G!<s1\NFs1.sFrN6+$s/Yn6a/ZV=mAg!%JZA%9q8WAK
+WN+([q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNj#ss$6Tds)A!ns.B=es/Q++q0pYEq+0P#s,[2Is-s%Zs.fUns02O0
+s/c6ss.A8!rrDp[q0r-'pO9qB]cQQ)q0mlYlTY,nrBC/[XZjjUq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>P<T"3s$H`Qs$Zl^s',M9s)\3ns-<V]s0hs;s186Cs1\N,s+^Pnq0pXR
+q#K/5s&8r3s*t'&s-3PYs0CU4rrDp[q0r-'pO9qB]cQQ)q0mlYlTY,nrBC/[XZjjUq>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l=)s0;U1s0_m9s1/0Ds2+fTs2b5bs3^kus5*e5rS[M1s5<q"
+s0Vfts,$c,s*=W]q8U`iq'4?ts).j_s+]LPrrE)6s1JBCq8WB9s/l=%pVt%L]q"Jiq8Rucl`0d#
+rMog3XfBL_q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNj#ss$6Tds)A!ns.B=es/Q++q0pYEq+0P#s,[2Is-s%Zs.fUns02O0
+s/c6ss.A8!rrDp[q0r-'pO9qB]cQQ)q0mlYlTY,nrBC/[XZjjUq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>P<T"3s$H`Qs$Zl^s',M9s)\3ns-<V]s0hs;s186Cs1\N,s+^Pnq0pXR
+q#K/5s&8r3s*t'&s-3PYs0CU4rrDp[q0r-'pO9qB]cQQ)q0mlYlTY,nrBC/[XZjjUq>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l=)s0;U1s0_m9s1/0Ds2+fTs2b5bs3^kus5*e5rS[M1s5<q"
+s0Vfts,$c,s*=W]q8U`iq'4?ts).j_s+]LPrrE)6s1JBCq8WB9s/l=%pVt%L]q"Jiq8Rucl`0d#
+rMog3XfBL_q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNirps&K)9s+LEBs.TIms0VTNeV<rlgP5`hs-*JKs-WhXs.o[os/c6s
+s.97Xs-`n?jaR40rI4c1q0r-'pO9e>_&hu-q0mlYlTY,nq*+`WYs-9Yq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>P<T"3rBgNOs%WMss(;:Ms+(-4s.o\&s1&*?s1JBGs.TINs*+9feNWj1
+dm!e1s(VLUs*F^%s-Whas0Vg;jaR40rI4c1q0r-'pO9e>_&hu-q0mlYlTY,nq*+`WYs-9Yq>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l=)s0;U0s0_m9s1/0Cs1nZPs2P)^s3Uess5!_3rSRA.s3:SQ
+s.TIOs+LDts)%SOeRJD#b@:Khs*F^"s,R,Sji7<#rPnlLq8WB:s/l=%pVsnH_49nmq8Rucl`0d#
+q5XC/Z)Ypcq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNirps&K)9s+LEBs.TIms0VTNeV<rlgP5`hs-*JKs-WhXs.o[os/c6s
+s.97Xs-`n?jaR40rI4c1q0r-'pO9e>_&hu-q0mlYlTY,nq*+`WYs-9Yq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>P<T"3rBgNOs%WMss(;:Ms+(-4s.o\&s1&*?s1JBGs.TINs*+9feNWj1
+dm!e1s(VLUs*F^%s-Whas0Vg;jaR40rI4c1q0r-'pO9e>_&hu-q0mlYlTY,nq*+`WYs-9Yq>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l=)s0;U0s0_m9s1/0Cs1nZPs2P)^s3Uess5!_3rSRA.s3:SQ
+s.TIOs+LDts)%SOeRJD#b@:Khs*F^"s,R,Sji7<#rPnlLq8WB:s/l=%pVsnH_49nmq8Rucl`0d#
+q5XC/Z)Ypcq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNirps&8r4s+13<s.KCls0VTNh1k_reV=*_s,R,As-*JNs.97bs/#ae
+s-NbMs.97Is)n?Ll$iX4o7$L!pO9Y:`?+D1q0mlYlTY,nofi<S[6D]]q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>P<T"3rB^HMs%NGqs'u(Gs*ap.s.TIts0hs=s1JBGs/#aWs*XWkh*1W7
+bs)/+s().Ds)7pds,I&Js/5n!s0Ma9l$iX4o7$L!pO9Y:`?+D1q0mlYlTY,nofi<S[6D]]q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l7's0;U2s0hs<s1A<Fs2"`Rs2k;es4./)s5!_3s53S0s3CYU
+s/#aVs+^Q!s)%SOh.$1)`FAjbs*F^!s+p]Gs0D[Fl,N`'o>^g7s0)I)s/Yn6\Z3W=mAg!%JZA%9
+q8W*-rG/g at ai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNirps&8r4s+13<s.KCls0VTNh1k_reV=*_s,R,As-*JNs.97bs/#ae
+s-NbMs.97Is)n?Ll$iX4o7$L!pO9Y:`?+D1q0mlYlTY,nofi<S[6D]]q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>P<T"3rB^HMs%NGqs'u(Gs*ap.s.TIts0hs=s1JBGs/#aWs*XWkh*1W7
+bs)/+s().Ds)7pds,I&Js/5n!s0Ma9l$iX4o7$L!pO9Y:`?+D1q0mlYlTY,nofi<S[6D]]q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l7's0;U2s0hs<s1A<Fs2"`Rs2k;es4./)s5!_3s53S0s3CYU
+s/#aVs+^Q!s)%SOh.$1)`FAjbs*F^!s+p]Gs0D[Fl,N`'o>^g7s0)I)s/Yn6\Z3W=mAg!%JZA%9
+q8W*-rG/g at ai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNirps&8r4s+(-8s.KCls0VTNjbES%c%c7Rs,$c7s,R,Ds-NbSs.97W
+s,d8Ks.fUSs*F]Vs&o at tm=,'8o7$L!pO9M6aWBh5q0mlYlTY,nnNQgM]0=>cq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)]0?%>P<T"2rBUBKs%EAns'YkAs*F^(s.01ks0;U3s1/0Ds/Q*as+0upjZ`J?
+`BO<#s&oA.s'u(Ls+:92s-it\s/,gts1JB9m=,'8o7$L!pO9M6aWBh5q0mlYlTY,nnNQgM]0=>c
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l7&s02O0s0_m:s186Ds1eTNs2Y/bs4%)'s4mY1s53S0s3CYU
+s/,gZs+^Q!s)%SOj^S$1]jh"Zs*F]os+:9;s/c7:s3CYqmDf/+o>^g8s0)I)s/Yn6[Aq?=mAg!%
+JZA%9q8Vs)qeNgDai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNirps&8r4s+(-8s.KCls0VTNjbES%c%c7Rs,$c7s,R,Ds-NbSs.97W
+s,d8Ks.fUSs*F]Vs&o at tm=,'8o7$L!pO9M6aWBh5q0mlYlTY,nnNQgM]0=>cq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)]0?%>P<T"2rBUBKs%EAns'YkAs*F^(s.01ks0;U3s1/0Ds/Q*as+0upjZ`J?
+`BO<#s&oA.s'u(Ls+:92s-it\s/,gts1JB9m=,'8o7$L!pO9M6aWBh5q0mlYlTY,nnNQgM]0=>c
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#s/l7&s02O0s0_m:s186Ds1eTNs2Y/bs4%)'s4mY1s53S0s3CYU
+s/,gZs+^Q!s)%SOj^S$1]jh"Zs*F]os+:9;s/c7:s3CYqmDf/+o>^g8s0)I)s/Yn6[Aq?=mAg!%
+JZA%9q8Vs)qeNgDai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNirps&8r4s+(-/s-s%fs0VTNl\>:-^P;cFs,I&?s-*JLs,d8Ds.97h
+s-*J4s)7pMs'5S%s%*/Ro7$]>msb4!pO9A2boZ79q0mlYlTY,nlTY7I^HTbgq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)]0?%>OZr_.s$6TVs&B#(s(D at Us,$cCs/5mus02O1s1\N7s-`nAq0qWnqZ+;n
+s%35cs&8r"s(D at Ss+130s-*JNs/,h/s02O!s-WhFo7$]>msb4!pO9A2boZ79q0mlYlTY,nlTY7I
+^HTbgq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#qlTn%s0D[3s0r$=s1JBGs2"`Ts3:Sms4[M-s5!_4pYl.ts186-
+s-s%Hs*Oc_q8V`0q]iLXs).j[s*4Qks,m>Ys0r$Es2k;gs4RG2o>^e1n&GC0s/Yn6Z)Z'=mAg!%
+JZA%9q8Va#rG00Jai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNirps&8r4s+(-/s-s%fs0VTNl\>:-^P;cFs,I&?s-*JLs,d8Ds.97h
+s-*J4s)7pMs'5S%s%*/Ro7$]>msb4!pO9A2boZ79q0mlYlTY,nlTY7I^HTbgq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)]0?%>OZr_.s$6TVs&B#(s(D at Us,$cCs/5mus02O1s1\N7s-`nAq0qWnqZ+;n
+s%35cs&8r"s(D at Ss+130s-*JNs/,h/s02O!s-WhFo7$]>msb4!pO9A2boZ79q0mlYlTY,nlTY7I
+^HTbgq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#qlTn%s0D[3s0r$=s1JBGs2"`Ts3:Sms4[M-s5!_4pYl.ts186-
+s-s%Hs*Oc_q8V`0q]iLXs).j[s*4Qks,m>Ys0r$Es2k;gs4RG2o>^e1n&GC0s/Yn6Z)Z'=mAg!%
+JZA%9q8Va#rG00Jai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNirps&8r4s*Od"s-*JVs0)6Io7m'3[>+^<s,?u>s,6oDs.fUrs-Wh>
+s*Xigs(_RAs&K(bs$6TKpO<,BiI7mmd2q[=q0mlYlTY,nk<AhE_`l1kq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>NB[A,s%!)ds'#G5s)e9ps-*JWs/,gss0D[=s/c6gs+gE!o02sM[6FUX
+s%*/as'5S;s)e9ks+^Q4s/,h/s02O!s-WhLs+C>npO<,BiI7mmd2q[=q0mlYlTY,nk<AhE_`l1k
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#qlKh#s0;U1s0hs;s1A<Es1nZRs31Mks4RG,s5!_4pYl.ts1861
+s.fUXs+C>mq8W#8q'3(Ps)%dSs)S-_s,6oMs/Q++s1JBMs31N#s5<q9pW!45iPr""d at BU(q8Ruc
+l`0d#kGnJr_lChuq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNirps&8r4s*Od"s-*JVs0)6Io7m'3[>+^<s,?u>s,6oDs.fUrs-Wh>
+s*Xigs(_RAs&K(bs$6TKpO<,BiI7mmd2q[=q0mlYlTY,nk<AhE_`l1kq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>NB[A,s%!)ds'#G5s)e9ps-*JWs/,gss0D[=s/c6gs+gE!o02sM[6FUX
+s%*/as'5S;s)e9ks+^Q4s/,h/s02O!s-WhLs+C>npO<,BiI7mmd2q[=q0mlYlTY,nk<AhE_`l1k
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HX/c3#qlKh#s0;U1s0hs;s1A<Es1nZRs31Mks4RG,s5!_4pYl.ts1861
+s.fUXs+C>mq8W#8q'3(Ps)%dSs)S-_s,6oMs/Q++s1JBMs31N#s5<q9pW!45iPr""d at BU(q8Ruc
+l`0d#kGnJr_lChuq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNirps&8r4s)\3gs,6oFs/,U at qhFo;WJ:G0s,d8Ns/>t's.01Ps,$c,
+s*+K[s'#Fjs$QfQs$6TJqgSPFl[Jg4qgPG,f,j<Cq0mlYlTY,nj$*DAa$.Uoq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)]0?%>Ma%/0s%`Sqs'bqIs*t'/s.01`s/,h%s1\N7s-`nBq0r3)q#IBXs$H`]
+s',M9s)\3cs,?uTs1JB9s.o[cs-WhCs*F]\s'GSOrrDA6rVubDV`r]Rm6:>pJNiB`q0q?fr;al%
+aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HWN,irs/l=*s0D[4s0r$>s1JBHs2=r\s3^l!s4dS0s53S0s3CYUs0D[*
+s-s%Hs*OR]qdT at GVdf[=s(VLLs)A!ls-*JRs/5n#s0r$Ls5!_3s53k7s5EjprrDB)rVuc7VlJ@=
+mAg!%JZA%9q8VHprG0HRai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNirps&8r4s)\3gs,6oFs/,U at qhFo;WJ:G0s,d8Ns/>t's.01Ps,$c,
+s*+K[s'#Fjs$QfQs$6TJqgSPFl[Jg4qgPG,f,j<Cq0mlYlTY,nj$*DAa$.Uoq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)]0?%>Ma%/0s%`Sqs'bqIs*t'/s.01`s/,h%s1\N7s-`nBq0r3)q#IBXs$H`]
+s',M9s)\3cs,?uTs1JB9s.o[cs-WhCs*F]\s'GSOrrDA6rVubDV`r]Rm6:>pJNiB`q0q?fr;al%
+aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HWN,irs/l=*s0D[4s0r$>s1JBHs2=r\s3^l!s4dS0s53S0s3CYUs0D[*
+s-s%Hs*OR]qdT at GVdf[=s(VLLs)A!ls-*JRs/5n#s0r$Ls5!_3s53k7s5EjprrDB)rVuc7VlJ@=
+mAg!%JZA%9q8VHprG0HRai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNirps&8r+s(hXWs+C?6s.oO at rrE'lrCEQ8s-3PWs/l=1s/,gfs-E\F
+s+LDrs'>Xqs$m#Ws$QZIs*jtJl[J[0s*g_,gE,`Gq0mlYlTY,nh`gu=b<F$sq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)]0?%>Ma%/0s%WMns'G_As*F^%s-NbUs/,h%s1\N7s-`nJqgSPFrrN&uT0E9C
+s%`Sts(;:Os,?uTs1JB9s/,gks.97Os+(,is().4s%`TCrrDA6q>^JDUH[ERm6:>pJNiB`q0q3b
+r;b#)aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HUT4?qs0)I-s0Vg7s1/0As1\NNs2tAgs4./&s4mY2pYl.ts2+fJs0Ma#
+s-*J3qo8Y,q]hY at s'u(@s(_R]s+^Q8s-it^s/l=@s4dS/s5!_3qr.RprrDB)q>^K7UT3(=mAg!%
+JZA%9q8V<lrG0TVai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNirps&8r+s(hXWs+C?6s.oO at rrE'lrCEQ8s-3PWs/l=1s/,gfs-E\F
+s+LDrs'>Xqs$m#Ws$QZIs*jtJl[J[0s*g_,gE,`Gq0mlYlTY,nh`gu=b<F$sq>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)]0?%>Ma%/0s%WMns'G_As*F^%s-NbUs/,h%s1\N7s-`nJqgSPFrrN&uT0E9C
+s%`Sts(;:Os,?uTs1JB9s/,gks.97Os+(,is().4s%`TCrrDA6q>^JDUH[ERm6:>pJNiB`q0q3b
+r;b#)aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HUT4?qs0)I-s0Vg7s1/0As1\NNs2tAgs4./&s4mY2pYl.ts2+fJs0Ma#
+s-*J3qo8Y,q]hY at s'u(@s(_R]s+^Q8s-it^s/l=@s4dS/s5!_3qr.RprrDB)q>^K7UT3(=mAg!%
+JZA%9q8V<lrG0TVai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>JNirps%r_us'u(Gs*Od(s.fGks*k!0s,I&9s+d;&s-3PXs02O9s0Ma+
+s.o[as,m>-s'Yk"s%35]s$QTGrrDA6p](8BTg%?Tm6:>pJNiB`q0q'^qZ,#-aaX'cJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>Ma%/0s%WMns',M9s)n?ps-!DNs/,h%s1\N7s.'+VqZ-YFs$QfPs$32?
+s$ZlZs%r_us)S-us/,h/s02O)s/H$os-<V=s*4QYs'Pe*s%34jl[JU.s*gY*h]D/Kq0mlYlTY,n
+gHPK7d6>[$q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HUT4?ps/uC+s0Ma5s1&*?s1SHLs2k;ds3q#"s4[M.s5<_3s3gqis24lK
+s/Z0fs+'u;s2L73s().Is*4Qrs,?uBs/Z1<s4RG+s4dS1q;M>Rlc/]!s2Lb4hjj)6q8Rucl`0d#
+gT(-ddAk=.q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNirps%r_us'u(Gs*Od(s.fGks*k!0s,I&9s+d;&s-3PXs02O9s0Ma+
+s.o[as,m>-s'Yk"s%35]s$QTGrrDA6p](8BTg%?Tm6:>pJNiB`q0q'^qZ,#-aaX'cJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>Ma%/0s%WMns',M9s)n?ps-!DNs/,h%s1\N7s.'+VqZ-YFs$QfPs$32?
+s$ZlZs%r_us)S-us/,h/s02O)s/H$os-<V=s*4QYs'Pe*s%34jl[JU.s*gY*h]D/Kq0mlYlTY,n
+gHPK7d6>[$q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HUT4?ps/uC+s0Ma5s1&*?s1SHLs2k;ds3q#"s4[M.s5<_3s3gqis24lK
+s/Z0fs+'u;s2L73s().Is*4Qrs,?uBs/Z1<s4RG+s4dS1q;M>Rlc/]!s2Lb4hjj)6q8Rucl`0d#
+gT(-ddAk=.q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNirps%!)ds',LMs"saKs((qSs-NbMs,m>ATn`T3s.]Ots1&$<s0;U&
+s-Nb6s'u((s%NGas$QTGrrE!]msb$2q0o)&iu[SOq0mlYlTY,neNWp3eNV*(q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)]0?%>Ma%/0s%WMns&]51s)J'gs,I&Is/,h%s*t&cs(D@@q0r?5s$ZlSs$<>B
+s$ZlZs%r_qs)J'ts/,h/s0_m4s0)I&s-s%Js*jues(246s%`Ros$H`Nmsb$2q0o)&iu[SOq0mlY
+lTY,neNWp3eNV*(q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HUT4?ps/l=)s0D[3s0r$=s1JBJs2Y/`s3^kss4IA+s5<_3s4[M$s3(Fr
+s)n?Is$Z\&O^e?&s(hXWs*t'1s/H%8s4@;'s4[M0q;M>Rs4RG$n&G,%q8T20j.,M:q8Rucl`0d#
+eZ/R`eZ-a2q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNirps%!)ds',LMs"saKs((qSs-NbMs,m>ATn`T3s.]Ots1&$<s0;U&
+s-Nb6s'u((s%NGas$QTGrrE!]msb$2q0o)&iu[SOq0mlYlTY,neNWp3eNV*(q>Z"pl[FEbh>dKT
+V#Pr~>
+JcF-trr at WMhuB[)]0?%>Ma%/0s%WMns&]51s)J'gs,I&Is/,h%s*t&cs(D@@q0r?5s$ZlSs$<>B
+s$ZlZs%r_qs)J'ts/,h/s0_m4s0)I&s-s%Js*jues(246s%`Ros$H`Nmsb$2q0o)&iu[SOq0mlY
+lTY,neNWp3eNV*(q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HUT4?ps/l=)s0D[3s0r$=s1JBJs2Y/`s3^kss4IA+s5<_3s4[M$s3(Fr
+s)n?Is$Z\&O^e?&s(hXWs*t'1s/H%8s4@;'s4[M0q;M>Rs4RG$n&G,%q8T20j.,M:q8Rucl`0d#
+eZ/R`eZ-a2q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNj#rrrE'&rs\oAs'>YDs,$cMq0r at 8s-s%Us,s(1s-3PXs/uC,s0D[2
+s0_m5s-it<s(;:.s%iYds$QTGrrDp[nUC64omWZ"k8s"Sq0mlYlTY,nd6 at L/ffmN,q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Ma%/0s%WMjs&8r)s)%d_s%35ms(;:Ps1\N=s/uC%q0r?8s%!)Ys$NJD
+s$ZlZs%iYms).jns/#b0s1A<@s0_m2s.]OWs+LDqs(hXBs&/jss$m#Vs$H7)p]'o8UH[i^m6:>p
+JNiB`q0p^Tr;bM7aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HUT4?ps/l=)s0;U1s0hs;s1A<Hs2G#\s3L_os475)s5<e5s.fUds-s%Q
+s3(GOs.01Cq8SP+s(;:Gs).jZs,R,Ws1nZbs475(s5*S1rrE)Ps3q"mn](>'ou<c,kFCq>q8Ruc
+l`0d#dAm.\frE06q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>JNj#rrrE'&rs\oAs'>YDs,$cMq0r at 8s-s%Us,s(1s-3PXs/uC,s0D[2
+s0_m5s-it<s(;:.s%iYds$QTGrrDp[nUC64omWZ"k8s"Sq0mlYlTY,nd6 at L/ffmN,q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Ma%/0s%WMjs&8r)s)%d_s%35ms(;:Ps1\N=s/uC%q0r?8s%!)Ys$NJD
+s$ZlZs%iYms).jns/#b0s1A<@s0_m2s.]OWs+LDqs(hXBs&/jss$m#Vs$H7)p]'o8UH[i^m6:>p
+JNiB`q0p^Tr;bM7aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HUT4?ps/l=)s0;U1s0hs;s1A<Hs2G#\s3L_os475)s5<e5s.fUds-s%Q
+s3(GOs.01Cq8SP+s(;:Gs).jZs,R,Ws1nZbs475(s5*S1rrE)Ps3q"mn](>'ou<c,kFCq>q8Ruc
+l`0d#dAm.\frE06q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>K0K/4s$$HNs%<;fs&T/<s+p]Kq0r@?s.]Ocs,s(1s-3PXs/5mss/Z1$
+s/uC/s.'+As(VL4s%iYds$QTGrrDp[nUC64nU at 5slQ5FWq0mlYlTY,nbs)(+h*/r0q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Ma%/0s%EAds%iY8s""+/s+133s.B=os1SHEs0r$7q0r?;s%<;_s$NJD
+s$ZlZs%NGgs(hXhs.]P$s1/0Cs1A<>s/>scs,-i(s)J'Ls&T."s%<;^s$Q=*p]'c4UH[ubm6:>p
+JNiB`q0pRPr;bY;aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HUT4?ps/l=)s02O/s0_m9s186Es24lXs3:Sks4./(s5<dLs5F"7s4[M(
+s3gqXs.B=Gq8SP+s(;:Gs).jWs,?uSs1\N^s475(s5*S1rrE)Ps3q"on](>'n]%?(l^[@Bq8Ruc
+l`0d#c)U_Xh5\T:q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>K0K/4s$$HNs%<;fs&T/<s+p]Kq0r@?s.]Ocs,s(1s-3PXs/5mss/Z1$
+s/uC/s.'+As(VL4s%iYds$QTGrrDp[nUC64nU at 5slQ5FWq0mlYlTY,nbs)(+h*/r0q>Z"pl[FEb
+h>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Ma%/0s%EAds%iY8s""+/s+133s.B=os1SHEs0r$7q0r?;s%<;_s$NJD
+s$ZlZs%NGgs(hXhs.]P$s1/0Cs1A<>s/>scs,-i(s)J'Ls&T."s%<;^s$Q=*p]'c4UH[ubm6:>p
+JNiB`q0pRPr;bY;aaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HUT4?ps/l=)s02O/s0_m9s186Es24lXs3:Sks4./(s5<dLs5F"7s4[M(
+s3gqXs.B=Gq8SP+s(;:Gs).jWs,?uSs1\N^s475(s5*S1rrE)Ps3q"on](>'n]%?(l^[@Bq8Ruc
+l`0d#c)U_Xh5\T:q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Ma$q:q*+gHs%<;fs&8r6s+^QHq0r at Fs/H$ks,s(1s-3PRs.KCes.o[k
+s/c7.s.01Cs(hX8s%iYds$QTGrrDp[q0r9+rI4M at m=(`mnK.']q0mlYlTY,naZfY'iBGA4q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Ma%.Frs8W3rs\p/s(24Ls*Od's-`ncs0r$=rOhrTs%iYhs%35XTg&KE
+s%*/]s%NH+s+C?@s/c7)s0Vg9s1JB7s.B=Qs+:8os(MF9rrE'os%EAZq0r9+rI4M at m=(`mnK.']
+q0mlYlTY,naZfY'iBGA4q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HUT4?ps/l7's0;U2s0hs<s1SHKs2P)^s,d8Hs.'+`q;MA1s4[M(s4%(\
+s.TIKq8SP+s(;:Gs)%dTs,-iOs1JBZs475(s5*S1rrE)Ps4%(rq8WHGs0qsHp]'X#TrRXQmAg!%
+JZA%9q8UOVrG1Alai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>Ma$q:q*+gHs%<;fs&8r6s+^QHq0r at Fs/H$ks,s(1s-3PRs.KCes.o[k
+s/c7.s.01Cs(hX8s%iYds$QTGrrDp[q0r9+rI4M at m=(`mnK.']q0mlYlTY,naZfY'iBGA4q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Ma%.Frs8W3rs\p/s(24Ls*Od's-`ncs0r$=rOhrTs%iYhs%35XTg&KE
+s%*/]s%NH+s+C?@s/c7)s0Vg9s1JB7s.B=Qs+:8os(MF9rrE'os%EAZq0r9+rI4M at m=(`mnK.']
+q0mlYlTY,naZfY'iBGA4q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HUT4?ps/l7's0;U2s0hs<s1SHKs2P)^s,d8Hs.'+`q;MA1s4[M(s4%(\
+s.TIKq8SP+s(;:Gs)%dTs,-iOs1JBZs475(s5*S1rrE)Ps4%(rq8WHGs0qsHp]'X#TrRXQmAg!%
+JZA%9q8UOVrG1Alai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>P<SdBnNQt at s%<;ds%r`0s+C?Bq0r at Ms/uBps,s(1s-!DIs-`nWs.01^
+s/l=0s.97Es(q^Bs&K(ls$QTGrrDp[q0r-'p]'K,Tg&,jm6:>pJNiB`q0p:Hr;bqCaaX'cJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>P<SdBs$?ZPs$crWs&8r)s(_RVs+LE9s.]Ous0Ma6s1.rSs&/kms%35X
+Tg&KDs$crWs%36$s*t'3s.fUls/Z1's1JB9s.fU[s+p]$s(q^ArrE'ss%EAZq0r-'p]'K,Tg&,j
+m6:>pJNiB`q0p:Hr;bqCaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HUT4?ps/l7&s02O0s0_m:s*ap!s+^Q3s3L_qs4dS3q;MA1s4[M)s474`
+s.fUOq8SP+s(;:Gs(hXPs+p]Ks186Ps3^l!s5*S1rrE)Ps475!q8WHHs1&*;s0MJ"l,KEsopkEL
+q8Rucl`0d#`N&lPjf6GBq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>P<SdBnNQt at s%<;ds%r`0s+C?Bq0r at Ms/uBps,s(1s-!DIs-`nWs.01^
+s/l=0s.97Es(q^Bs&K(ls$QTGrrDp[q0r-'p]'K,Tg&,jm6:>pJNiB`q0p:Hr;bqCaaX'cJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>P<SdBs$?ZPs$crWs&8r)s(_RVs+LE9s.]Ous0Ma6s1.rSs&/kms%35X
+Tg&KDs$crWs%36$s*t'3s.fUls/Z1's1JB9s.fU[s+p]$s(q^ArrE'ss%EAZq0r-'p]'K,Tg&,j
+m6:>pJNiB`q0p:Hr;bqCaaX'cJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\HUT4?ps/l7&s02O0s0_m:s*ap!s+^Q3s3L_qs4dS3q;MA1s4[M)s474`
+s.fUOq8SP+s(;:Gs(hXPs+p]Ks186Ps3^l!s5*S1rrE)Ps475!q8WHHs1&*;s0MJ"l,KEsopkEL
+q8Rucl`0d#`N&lPjf6GBq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>R6LKJks#,8s%<;as%WN*s+(-<q0r at Ts/uBps,s(1s,6o;s-!DIs-E\X
+s/uC2s.97Fs)e9Rs'>Y's%3#MrrDp[q0r-'rI4YDj*maeq&\oeq0mlYlTY,n_*7_rlTWF>q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>R6LKJpHJUAs$?ZOs%`Sss().Js*k!-s.'+hs/l=*s0MNMs&K(ps%35X
+Tg&KAs$H`Qs$m#ss*"F!s-itZs.]Oss1JB9s.fU\s,I&.s)A!IrrE'us%EAZq0r-'rI4YDj*mae
+q&\oeq0mlYlTY,n_*7_rlTWF>q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HUT4?ps/c1$s0)HDs*"Ees1A<Gs2=rYs3CYps4dS3q;MA1s4[M+s4I at d
+s/#aSq8SP+s(;:Es(VLLs+^QGs0MaAs2k;fs4I/+rrE)Rs4IA%q8WHIs1/0=s0VgOs31B?j2Rjo
+q4-iPq8Rucl`0d#_5dBJl`/(Hq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>R6LKJks#,8s%<;as%WN*s+(-<q0r at Ts/uBps,s(1s,6o;s-!DIs-E\X
+s/uC2s.97Fs)e9Rs'>Y's%3#MrrDp[q0r-'rI4YDj*maeq&\oeq0mlYlTY,n_*7_rlTWF>q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>R6LKJpHJUAs$?ZOs%`Sss().Js*k!-s.'+hs/l=*s0MNMs&K(ps%35X
+Tg&KAs$H`Qs$m#ss*"F!s-itZs.]Oss1JB9s.fU\s,I&.s)A!IrrE'us%EAZq0r-'rI4YDj*mae
+q&\oeq0mlYlTY,n_*7_rlTWF>q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HUT4?ps/c1$s0)HDs*"Ees1A<Gs2=rYs3CYps4dS3q;MA1s4[M+s4I at d
+s/#aSq8SP+s(;:Es(VLLs+^QGs0MaAs2k;fs4I/+rrE)Rs4IA%q8WHIs1/0=s0VgOs31B?j2Rjo
+q4-iPq8Rucl`0d#_5dBJl`/(Hq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Tg&8Pj$*K2s%!)[s%<<$s*ap,q0r at Ss/l<os,s"/s+gW3s,R,Ds.TIr
+s1&*$s,-i(s)7pKs',M!q*+fYq`ah)q**>XUH\Vtm6:>pJNiB`q0oq>r;c:MaaX'cJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>Tg&8PlTY>>s&8r(s(VLXs+gW?s.o[ms/Q+)q0r?Ks%r_es$NDBs$-NK
+s$Qfjs)%dds,m>Hs.01ns1JB9s.fU^s-!D7s)n?RrrE'us%EAZq0r-'eUF8Wr>t>iq0mlYlTY,n
+]0?/nmlnjBq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HUT4?prGDRPs)A"Cs0Ma6s186Es24lVs31Mls4[M2q;MA1s4mY/s4[Lh
+s/5mbq8WGGP at FQ's(;:Ds(_Res-itfs1/0Gs2b5gq;M>Rs5!_/s4@(ds1SHDs1&*:s3L_is2tA_
+h8Z4irLE8Tq8Rucl`0d#];kgFn#FLLq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Tg&8Pj$*K2s%!)[s%<<$s*ap,q0r at Ss/l<os,s"/s+gW3s,R,Ds.TIr
+s1&*$s,-i(s)7pKs',M!q*+fYq`ah)q**>XUH\Vtm6:>pJNiB`q0oq>r;c:MaaX'cJUZp6JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>Tg&8PlTY>>s&8r(s(VLXs+gW?s.o[ms/Q+)q0r?Ks%r_es$NDBs$-NK
+s$Qfjs)%dds,m>Hs.01ns1JB9s.fU^s-!D7s)n?RrrE'us%EAZq0r-'eUF8Wr>t>iq0mlYlTY,n
+]0?/nmlnjBq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HUT4?prGDRPs)A"Cs0Ma6s186Es24lVs31Mls4[M2q;MA1s4mY/s4[Lh
+s/5mbq8WGGP at FQ's(;:Ds(_Res-itfs1/0Gs2b5gq;M>Rs5!_/s4@(ds1SHDs1&*:s3L_is2tA_
+h8Z4irLE8Tq8Rucl`0d#];kgFn#FLLq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>WBU+XgHPX(s$ZlUs$m#rs*"Emq0r at Ns/>sgs,ie*s+gW>s.]Ots1/0&
+s-!D8s*+K[s'u()q*+fYq`ah)q*+P%rBB+fO$<AgJNiB`q0oe:r;cFQaaX'cJUZp6JcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)]0?%>WBU+Xj$*K3s%WMqs'u(Ls+133s.97as/,h%q0r?Xs'>Y%s$`D at s$-N]
+s().Rs+gW5s.01ns1JB9s.fUcs-NbBs*F]\rrE'us%EAZq0r-'pO<')hgUVMq0mlYlTY,n[m'`j
+o019Fq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HWN,c0s/Q$us/l=*s0D[3s1/0Cs2"`Rs2tAhs4IA-s53_4s53k5s5!_1
+s24l>s/,V3s(hXJs(24?R:?2+s(). at s(MFas-!DVs0;U6s1nZ_q;M>Rs53k3s4R4fs1\NFs1/0<
+s3Ueks3(Gas2Y)<ho:_Wq8Rucl`0d#\#TCBo;]pPq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>WBU+XgHPX(s$ZlUs$m#rs*"Emq0r at Ns/>sgs,ie*s+gW>s.]Ots1/0&
+s-!D8s*+K[s'u()q*+fYq`ah)q*+P%rBB+fO$<AgJNiB`q0oe:r;cFQaaX'cJUZp6JcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)]0?%>WBU+Xj$*K3s%WMqs'u(Ls+133s.97as/,h%q0r?Xs'>Y%s$`D at s$-N]
+s().Rs+gW5s.01ns1JB9s.fUcs-NbBs*F]\rrE'us%EAZq0r-'pO<')hgUVMq0mlYlTY,n[m'`j
+o019Fq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HWN,c0s/Q$us/l=*s0D[3s1/0Cs2"`Rs2tAhs4IA-s53_4s53k5s5!_1
+s24l>s/,V3s(hXJs(24?R:?2+s(). at s(MFas-!DVs0;U6s1nZ_q;M>Rs53k3s4R4fs1\NFs1/0<
+s3Ueks3(Gas2Y)<ho:_Wq8Rucl`0d#\#TCBo;]pPq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>Ys.s`dm!drs$?ZOs$Qfls(VLSq0r at Is.fU]s,?u9s+m;%s+gW>s.fV!
+s186/s-itHs*t&ks(;:,q*+fYq`ah)q*+P%q**\bV`t!,o02u!JNiB`q0oY6r;cRUaaX'cJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>Ys.s`gHPX+s%WMos'G_As*Od&s-WhUs/,h%q0r?fs(_R?s&/kds$<8@
+s$-NXs',M at s*k!*s.01ns1JB9s/5mls.'+Ls*t&errE(#s%WM]q0r-'pO;p%hgVIeqgS-#q0mlY
+lTY,nZTe<fpHH]Jq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HZ)[V8o;_hls/uC,s0Ma7s1JBHs2+fWs3L_qs4RG,s5!_4rSde7s53k5
+s2G#Ms0MO at s)J'Vs(q^LQ"'c's(;:Ws,-iFs/H%&s1\N]q;M>Rs53k4s4d at hs1eTHs186>s3^km
+s31Mcs2b/>rMnbpVlKX6o;_W+JZA%9q8Tb at rG2/-ai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>Ys.s`dm!drs$?ZOs$Qfls(VLSq0r at Is.fU]s,?u9s+m;%s+gW>s.fV!
+s186/s-itHs*t&ks(;:,q*+fYq`ah)q*+P%q**\bV`t!,o02u!JNiB`q0oY6r;cRUaaX'cJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>Ys.s`gHPX+s%WMos'G_As*Od&s-WhUs/,h%q0r?fs(_R?s&/kds$<8@
+s$-NXs',M at s*k!*s.01ns1JB9s/5mls.'+Ls*t&errE(#s%WM]q0r-'pO;p%hgVIeqgS-#q0mlY
+lTY,nZTe<fpHH]Jq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HZ)[V8o;_hls/uC,s0Ma7s1JBHs2+fWs3L_qs4RG,s5!_4rSde7s53k5
+s2G#Ms0MO at s)J'Vs(q^LQ"'c's(;:Ws,-iFs/H%&s1\N]q;M>Rs53k4s4d at hs1eTHs186>s3^km
+s31Mcs2b/>rMnbpVlKX6o;_W+JZA%9q8Tb at rG2/-ai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>[m'Zha$0Mfs$6T]s'5S9q0r at Ds.97Ss,I&As,[2=s+mG)s+gW>s.fV!
+s1SH:s.]OXs+gW%s(;:,q*+fYq`ah)q*+P%ofh8^X$69,pHJD%JNiB`q0oM2r;c^YaaX'cJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>[m'Zhdm!e#s%WMos'#G8s)n?os-!DNs/,h%q0r?ss*4QZs'G_&s%NG_
+s$EJEs$-NXs',M<s*4R$s.01ns1JB9s/c7!s.TIVs+LDmrrE(&s%r_cq0r-'pO;d!hgVUipO;j#
+q0mlYlTY,nY<Mmbq``,Nq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\H\#T=@l`0ucs/l=*s0D[5s186Ds1nZSs3:Sks4./$s4RG,s5<e5s5<q(
+s2b5Uq8WGYs)e9]s(mm.s'u(Ls+:96s.TIms1\N]q;M>Rs53k4s4d at hs1nZJs1A<@s3gqos3:Se
+s2k5 at q5W>lX/bp6pT"&/JZA%9q8TV<rG2;1ai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>[m'Zha$0Mfs$6T]s'5S9q0r at Ds.97Ss,I&As,[2=s+mG)s+gW>s.fV!
+s1SH:s.]OXs+gW%s(;:,q*+fYq`ah)q*+P%ofh8^X$69,pHJD%JNiB`q0oM2r;c^YaaX'cJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>[m'Zhdm!e#s%WMos'#G8s)n?os-!DNs/,h%q0r?ss*4QZs'G_&s%NG_
+s$EJEs$-NXs',M<s*4R$s.01ns1JB9s/c7!s.TIVs+LDmrrE(&s%r_cq0r-'pO;d!hgVUipO;j#
+q0mlYlTY,nY<Mmbq``,Nq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\H\#T=@l`0ucs/l=*s0D[5s186Ds1nZSs3:Sks4./$s4RG,s5<e5s5<q(
+s2b5Uq8WGYs)e9]s(mm.s'u(Ls+:96s.TIms1\N]q;M>Rs53k4s4d at hs1nZJs1A<@s3gqos3:Se
+s2k5 at q5W>lX/bp6pT"&/JZA%9q8TV<rG2;1ai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>^HVGn]fuHas%`Ssq0r@?s-`nIs-3POs-E\Ks,[2<s+mS-s+gW>s.fV!
+s1SH=s/H$gs,[2-s(;:,q*+fYq`ah)q*+P%nNPiZY<MQ,q`ah)JNiB`q0oA.r;cj]aaX'cJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>^HVGnbs).rs%WMms&T/0s)J'gs,?uHs/,h%q0r at +s+UJus(VL<s&]4u
+s%T7Ps$-NXs',M<s)\3qs.'+ms1JB>s0;U+s/,g`s+gVsrrE()s&8qgq0r-'pO;WrhgVamo7$R#
+q0mlYlTY,nX$6I^s$"PRq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\H^T.*Fjf8?]s/l=)s0;U3s1&*@s1\NOs2k;cs3^kqs4./%s53e5rSde4
+s4..oq8WG_s*F]is(mm.s'u(Is*Xj(s-Whds1\N]q;M>Rs53k4s4mFis2"`Ls1JBBs3q"qs3CYg
+s2t;Bor?ohYH%36ql9J3JZA%9q8TJ8rG2G5ai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>^HVGn]fuHas%`Ssq0r@?s-`nIs-3POs-E\Ks,[2<s+mS-s+gW>s.fV!
+s1SH=s/H$gs,[2-s(;:,q*+fYq`ah)q*+P%nNPiZY<MQ,q`ah)JNiB`q0oA.r;cj]aaX'cJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>^HVGnbs).rs%WMms&T/0s)J'gs,?uHs/,h%q0r at +s+UJus(VL<s&]4u
+s%T7Ps$-NXs',M<s)\3qs.'+ms1JB>s0;U+s/,g`s+gVsrrE()s&8qgq0r-'pO;WrhgVamo7$R#
+q0mlYlTY,nX$6I^s$"PRq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\H^T.*Fjf8?]s/l=)s0;U3s1&*@s1\NOs2k;cs3^kqs4./%s53e5rSde4
+s4..oq8WG_s*F]is(mm.s'u(Is*Xj(s-Whds1\N]q;M>Rs53k4s4mFis2"`Ls1JBBs3q"qs3CYg
+s2t;Bor?ohYH%36ql9J3JZA%9q8TJ8rG2G5ai=/VJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>a$0;![6FUWs$m#]q0r@:s-3PKs-s%]s.01Ys-<VGs,I&:s,!e2s+gW>
+s.fV!s1SH=s/H$js-*J1s(;:,q*+fYq`ah)q*+P%m69?T[6F&.s$$7-JNiB`q0o5*qZ+liq>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>a$0;!`BO;js%WMis&&f's)%d_s+LE9s.fV"q0r at 8s-!D8s)n?Ss'l"6
+s%fCRs$-NXs',M8s).jgs-Nbds1SHEs0hs5s/Z0is,-i%rrE(,s&T.kq0r-'pO;Knh0uaqmsb:#
+q0mlYlTY,nV`stXc$oKgJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Ha/\rNh5^LUs/l=)s0;U1s0hs<s1JBJs2G#[s3:Sis3^kus5*_3s5<q9
+s53k4s4d at hs+C?&s*4Q[P at FQ%s)7pbs+p]?s/Q+5s3g`%rrE)VrS@:hs2+fOs1SHDs4%(ss3L_i
+s3(GFs/kgkh8Zk&n&GC-q8Rucl`0d#VlKc4rCG2Qq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>a$0;![6FUWs$m#]q0r@:s-3PKs-s%]s.01Ys-<VGs,I&:s,!e2s+gW>
+s.fV!s1SH=s/H$js-*J1s(;:,q*+fYq`ah)q*+P%m69?T[6F&.s$$7-JNiB`q0o5*qZ+liq>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>a$0;!`BO;js%WMis&&f's)%d_s+LE9s.fV"q0r at 8s-!D8s)n?Ss'l"6
+s%fCRs$-NXs',M8s).jgs-Nbds1SHEs0hs5s/Z0is,-i%rrE(,s&T.kq0r-'pO;Knh0uaqmsb:#
+q0mlYlTY,nV`stXc$oKgJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Ha/\rNh5^LUs/l=)s0;U1s0hs<s1JBJs2G#[s3:Sis3^kus5*_3s5<q9
+s53k4s4d at hs+C?&s*4Q[P at FQ%s)7pbs+p]?s/Q+5s3g`%rrE)VrS@:hs2+fOs1SHDs4%(ss3L_i
+s3(GFs/kgkh8Zk&n&GC-q8Rucl`0d#VlKc4rCG2Qq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>bs)")XZlbOs$m#\q0r at 5s-<VSs.]Oks.o[fs-itQs-!DDs,F(6s+gW>
+s.fV!s1SH=s/H$js-E\6s(D at -q*+fYq`ah)q*+P%k<@dP\N],(JNiB`q0oG0omZi>d=1okJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>bs)")]fuHbs%<;bs%WMts(VLTs*Xj)s-s%hq0r at Es.97Os+(,js)%dI
+s%fCRs$-NXs'#G2s(VL]s-!DZs1SHFs186>s02Nqs,I&+rrE(/s&]4mq0r-'pO;9hhgW+"jaMbE
+lTY,nXZlE,r;b5oq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hc)UYVeZ/YMs/l=)s02O/s0Vg8s1/0Cs2"`Ss2k;as3Uess5!Y1s53k8
+s53k4s4mFis,$c/s*4Q[P at FQ%s)7pbs+gW:s/5n1s3g`%rrE)VrSI at is2G#Ts1eTHs4..us3Uek
+s31MHs/kUeho<4,ji2kOl`0d#XfD'6rCG>Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>bs)")XZlbOs$m#\q0r at 5s-<VSs.]Oks.o[fs-itQs-!DDs,F(6s+gW>
+s.fV!s1SH=s/H$js-E\6s(D at -q*+fYq`ah)q*+P%k<@dP\N],(JNiB`q0oG0omZi>d=1okJUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>bs)")]fuHbs%<;bs%WMts(VLTs*Xj)s-s%hq0r at Es.97Os+(,js)%dI
+s%fCRs$-NXs'#G2s(VL]s-!DZs1SHFs186>s02Nqs,I&+rrE(/s&]4mq0r-'pO;9hhgW+"jaMbE
+lTY,nXZlE,r;b5oq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hc)UYVeZ/YMs/l=)s02O/s0Vg8s1/0Cs2"`Ss2k;as3Uess5!Y1s53k8
+s53k4s4mFis,$c/s*4Q[P at FQ%s)7pbs+gW:s/5n1s3g`%rrE)VrSI at is2G#Ts1eTHs4..us3Uek
+s31MHs/kUeho<4,ji2kOl`0d#XfD'6rCG>Uq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>eNWd/V`t,Is$m#\q0r at 0s.'+as/H%$s/Z0rs.B=[s-NbNs,F(6s+gW>
+s.fV!s1SH=s/H$ms-`n<s(_R3s$-BErrDp[q0r-'pO;-dhgW7&jaMbElTY,n[6Ei(r;bAsq>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>eNWd/[m'g[s$m#Zs%35ls().Gs)\3ms-*JXq0r at Rs/H$es,6o+s*=WU
+s%fCRs$-NXs&K)(s'u(Rs,?uTs1SHFs186?s0Ma"s,d81rrE(0s&f:oq0r-'pO;-dhgW7&jaMbE
+lTY,n[6Ei(r;bAsq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HeZ/F\c`7#Gs/l=(s0)I-s0Ma6s1&*@s1SHKs2G#Zs3L_qs4mS/s53k8
+s53k4s4mFis,d86s*4Q[P at FQ%s)7pbs+LE4s.o\+s3LN"rrDrRq8WHTs2=rRs1SH_s3q"qs3L_i
+s0)I)kGmFZ]rL26JZA%9q8ThBl,NZme].FbJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>eNWd/V`t,Is$m#\q0r at 0s.'+as/H%$s/Z0rs.B=[s-NbNs,F(6s+gW>
+s.fV!s1SH=s/H$ms-`n<s(_R3s$-BErrDp[q0r-'pO;-dhgW7&jaMbElTY,n[6Ei(r;bAsq>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>eNWd/[m'g[s$m#Zs%35ls().Gs)\3ms-*JXq0r at Rs/H$es,6o+s*=WU
+s%fCRs$-NXs&K)(s'u(Rs,?uTs1SHFs186?s0Ma"s,d81rrE(0s&f:oq0r-'pO;-dhgW7&jaMbE
+lTY,n[6Ei(r;bAsq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\HeZ/F\c`7#Gs/l=(s0)I-s0Ma6s1&*@s1SHKs2G#Zs3L_qs4mS/s53k8
+s53k4s4mFis,d86s*4Q[P at FQ%s)7pbs+LE4s.o\+s3LN"rrDrRq8WHTs2=rRs1SH_s3q"qs3L_i
+s0)I)kGmFZ]rL26JZA%9q8ThBl,NZme].FbJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>h*1W7T0E9As$m#Zq0r@*s.KCls02O2s0;U(s.o[es.01Vs,F(6s+gW>
+s.fV!s1SH=s/Q*qs.'+Bs)%d9s$?ZMs$-NIrrDp[q0r-'pO;!`hgWC*iI6>AmlpPr]0>,$r;bN"
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>h*1W7Y<MtOs$H`Qs$crds'5S6s(hX]s,6oFq0r at Ss0;U#s-E\As*OcW
+s%fCRs$-NUs%r_rs'G_Hs,-iRs1SHFs186?s0Vg$s-!D6rrE(1s&o at qq0r-'pO;!`hgWC*iI6>A
+mlpPr]0>,$r;bN"q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hh5^9da/]0?rN6+&s02O/s0_m9s186Cs1eTMs2Y/bs4%)'s4mY1s53k8
+s53e2q8WH$s+^Pus(mm.s'u(Is*F]rs,6oNs0r$QrS[Y5rrDrSq8WHVs2P)Vs1SH_s3q"qs3L_i
+s0)I)j/V"V_5cJ6JZA1=q8U%Hho>UcfuEjfJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>h*1W7T0E9As$m#Zq0r@*s.KCls02O2s0;U(s.o[es.01Vs,F(6s+gW>
+s.fV!s1SH=s/Q*qs.'+Bs)%d9s$?ZMs$-NIrrDp[q0r-'pO;!`hgWC*iI6>AmlpPr]0>,$r;bN"
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>h*1W7Y<MtOs$H`Qs$crds'5S6s(hX]s,6oFq0r at Ss0;U#s-E\As*OcW
+s%fCRs$-NUs%r_rs'G_Hs,-iRs1SHFs186?s0Vg$s-!D6rrE(1s&o at qq0r-'pO;!`hgWC*iI6>A
+mlpPr]0>,$r;bN"q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hh5^9da/]0?rN6+&s02O/s0_m9s186Cs1eTMs2Y/bs4%)'s4mY1s53k8
+s53e2q8WH$s+^Pus(mm.s'u(Is*F]rs,6oNs0r$QrS[Y5rrDrSq8WHVs2P)Vs1SH_s3q"qs3L_i
+s0)I)j/V"V_5cJ6JZA1=q8U%Hho>UcfuEjfJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>j$*>?QTkF9s$crWq0r?ts-3PZs0Ma<s0hs2s/H$os.TIZs,F(6s+gW>
+s.fV!s1SH=s/l="s.B=Hs)A!>s$QfQs$?ZMrrDp[q0r-'pO:j\hgWO.h0so=o02u!_`lOur;bZ&
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>j$*>?UH\]Bs$?ZYs&B#&s'u(Ms+:93q0r at Ns/c6ss.01Qs*OcWs%f=P
+s$cr\s&&f!s).jos/,h0s1JBCs1/0;s.o[Ys+C=Os(;:7s%W<<q*+P%gHOMD`BN+,JNiZhq0p4F
+dsh5qh1#2"JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Hj/Vul^T.=7rN-%$s0)I-s0Vg7s1/0As1\NKs2P)`s4%)&s4mY1s53k8
+s53k5s5!Ljs.TISs*t&dP at FQ%s)7p]s*k!(s.97ts31H!rS[\Uqr. at js3(G`s24lMs4..us3^km
+s3:SIs/k1Yho<X8h8Y#Go;_W+_lD2*rCGbaq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>j$*>?QTkF9s$crWq0r?ts-3PZs0Ma<s0hs2s/H$os.TIZs,F(6s+gW>
+s.fV!s1SH=s/l="s.B=Hs)A!>s$QfQs$?ZMrrDp[q0r-'pO:j\hgWO.h0so=o02u!_`lOur;bZ&
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>j$*>?UH\]Bs$?ZYs&B#&s'u(Ms+:93q0r at Ns/c6ss.01Qs*OcWs%f=P
+s$cr\s&&f!s).jos/,h0s1JBCs1/0;s.o[Ys+C=Os(;:7s%W<<q*+P%gHOMD`BN+,JNiZhq0p4F
+dsh5qh1#2"JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];k\Hj/Vul^T.=7rN-%$s0)I-s0Vg7s1/0As1\NKs2P)`s4%)&s4mY1s53k8
+s53k5s5!Ljs.TISs*t&dP at FQ%s)7p]s*k!(s.97ts31H!rS[\Uqr. at js3(G`s24lMs4..us3^km
+s3:SIs/k1Yho<X8h8Y#Go;_W+_lD2*rCGbaq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>lTY+EOZre3s$QfSq0r?is,$cCs/>t'rNuU-s/H$ls-NbFX+pY0s-<VZ
+s0;U;s0hs3s/Z0os,6nts&o at js$ZlSs$?Ybq`ah)q*+P%f08#>b<FU.JNiflq0pLNa+!seiI:V&
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>lTY+ER6LX=s%EAjs',M=s*4Qsq0r at Is/5mis-WhPs*aoYs%f=Ps$QfV
+s%NGls).jos/,h0s1J<As0hs(s-3P9rrE(3s',Luq0r-'pO:^Xh1!O2fm\K9pHJD%b<Esqr;bf*
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hl`0br\Z5P-s/c7's02O0s0_m:s180Bs2=r\s3gr#s4mY1s53k8rSRY3
+q8WH8s-itEs*4Q]s(@[-s'u(Fs)e9fs+UKBs0D[JrSIS3s5<nWqr. at js3:Scs24lMs4..us3^km
+s3:SIs/k%Uh8[X<fuATCpT"&/bGrV&rCGneq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>lTY+EOZre3s$QfSq0r?is,$cCs/>t'rNuU-s/H$ls-NbFX+pY0s-<VZ
+s0;U;s0hs3s/Z0os,6nts&o at js$ZlSs$?Ybq`ah)q*+P%f08#>b<FU.JNiflq0pLNa+!seiI:V&
+JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>lTY+ER6LX=s%EAjs',M=s*4Qsq0r at Is/5mis-WhPs*aoYs%f=Ps$QfV
+s%NGls).jos/,h0s1J<As0hs(s-3P9rrE(3s',Luq0r-'pO:^Xh1!O2fm\K9pHJD%b<Esqr;bf*
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hl`0br\Z5P-s/c7's02O0s0_m:s180Bs2=r\s3gr#s4mY1s53k8rSRY3
+q8WH8s-itEs*4Q]s(@[-s'u(Fs)e9fs+UKBs0D[JrSIS3s5<nWqr. at js3:Scs24lMs4..us3^km
+s3:SIs/k%Uh8[X<fuATCpT"&/bGrV&rCGneq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>o02sMM*Cr)s$?ZOq0r?^s*k!-s-s%as/,gqs/Z1$s.TIZs,F(6s+gW>
+s.fV!s1SHCs0Ma.s/#aTs)e9Fs%!)Ys$crRrrDp[q0r-'pO:LRhgWm8eUE'5q`ah)dltBmqZ,f.
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>o02sMOZre3s$m#]s&8r+s).j_q0r at Ds.]O_s-itWs+:8cs&#IRs$QfV
+s%EAjs).jos/,h0s1J<Bs0r$*s-<V<rrE(4s'5S"q0r-'pO:LRhgWm8eUE'5q`ah)dltBmqZ,f.
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Ho;_V%X/c3#s/l=)s0D[3s0r$=rO`*Hs2k;fs4./%s4mY3s5Eq7s53Xl
+s0_m&s-*J;s*aojs)7pNR:?21s)J'`s+:9<s0;UHrS at M1s5<nWqr. at js3L_es24lMs4..us3^km
+s3:SIs/jhOho=!Be]*0?ql9J3e#L%"qafniq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>o02sMM*Cr)s$?ZOq0r?^s*k!-s-s%as/,gqs/Z1$s.TIZs,F(6s+gW>
+s.fV!s1SHCs0Ma.s/#aTs)e9Fs%!)Ys$crRrrDp[q0r-'pO:LRhgWm8eUE'5q`ah)dltBmqZ,f.
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>o02sMOZre3s$m#]s&8r+s).j_q0r at Ds.]O_s-itWs+:8cs&#IRs$QfV
+s%EAjs).jos/,h0s1J<Bs0r$*s-<V<rrE(4s'5S"q0r-'pO:LRhgWm8eUE'5q`ah)dltBmqZ,f.
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Ho;_V%X/c3#s/l=)s0D[3s0r$=rO`*Hs2k;fs4./%s4mY3s5Eq7s53Xl
+s0_m&s-*J;s*aojs)7pNR:?21s)J'`s+:9<s0;UHrS at M1s5<nWqr. at js3L_es24lMs4..us3^km
+s3:SIs/jhOho=!Be]*0?ql9J3e#L%"qafniq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>q*+ZUJNj)ts$-NKq0r?Ss)\3ls,?uCs-WhTs.01es.97Ws,F(6s+gW>
+s.fV!s1SHCs0_m3s/>sYs*"EJs%35]s$crRrrDp[q0r-'pO:@NhgX$<d=-X1s$$7-fflTgr;c/4
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>q*+ZUM*Cr+s$m#\s%WMps().Kq0r@?s.01Vs.B=as+gVms&T.ps$m#Q
+V`t,Js%!)^s&f;As,?uTrOr0Bs0r$+s-E\>rrE(5s'>Y$q0r-'pO:@NhgX$<d=-X1s$$7-fflTg
+r;c/4q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hq5X=-TrS-os/uC,s0Ma6s1&$<s1nZTs3:Sjs4%)$s4mY4rSde7q8WHL
+s/uBns-<VCs+UK%s*+KYs(7g2s(VLOs)n?ks-Whjs2k;rs5!_3s5<nWqr. at js3L_es24lMs4..u
+s3^kms3:SIs/j\Kho=-FdDga;s/Pn7frD6qrCH7oq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>q*+ZUJNj)ts$-NKq0r?Ss)\3ls,?uCs-WhTs.01es.97Ws,F(6s+gW>
+s.fV!s1SHCs0_m3s/>sYs*"EJs%35]s$crRrrDp[q0r-'pO:@NhgX$<d=-X1s$$7-fflTgr;c/4
+q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>q*+ZUM*Cr+s$m#\s%WMps().Kq0r@?s.01Vs.B=as+gVms&T.ps$m#Q
+V`t,Js%!)^s&f;As,?uTrOr0Bs0r$+s-E\>rrE(5s'>Y$q0r-'pO:@NhgX$<d=-X1s$$7-fflTg
+r;c/4q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hq5X=-TrS-os/uC,s0Ma6s1&$<s1nZTs3:Sjs4%)$s4mY4rSde7q8WHL
+s/uBns-<VCs+UK%s*+KYs(7g2s(VLOs)n?ks-Whjs2k;rs5!_3s5<nWqr. at js3L_es24lMs4..u
+s3^kms3:SIs/j\Kho=-FdDga;s/Pn7frD6qrCH7oq>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?%>q#Gt0ofi2#s&oA8s)e9is+gW3s,?uEs.KCZs,m>=s+d_2s+gW>s.fV!
+s1SHCs0_m3s/H$\s*4QNs%EA`s$crRrrDp[q0r-'pO:4JhgX0 at c$k:/q0q9dUON.Amsb*4JUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>q#H%2s$H`Ts%<;as&B#)s(D.Vs.KCZs.'+bs/#aSs)e9Ps'G_,s%iYc
+s$3VKs$QfVs%iZ#s*+L*s/Z+4rOr6 at s/>sas+gUSs(_R?s&&T at q*+P%aZeU2f07H.K0K*[iBF#c
+r;c;8q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hq.lJ"s/Z1%s02O/s0_g6s0r$Bs2G#[s31Mis4%)$s5!_3s5<q9q8WHV
+s1&*2s.o[bs-<VEs+12ls)7pQs(A$7s(VLOs)n?ks-Nbhs2b5ps4mY2s5<nWqr. at js3L_es24lM
+s4..us3^kms3:SIs/jPGho=9Jc,PC9q8VBnUW37'n&G2'J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>q#Gt0ofi2#s&oA8s)e9is+gW3s,?uEs.KCZs,m>=s+d_2s+gW>s.fV!
+s1SHCs0_m3s/H$\s*4QNs%EA`s$crRrrDp[q0r-'pO:4JhgX0 at c$k:/q0q9dUON.Amsb*4JUZp6
+JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?%>q#H%2s$H`Ts%<;as&B#)s(D.Vs.KCZs.'+bs/#aSs)e9Ps'G_,s%iYc
+s$3VKs$QfVs%iZ#s*+L*s/Z+4rOr6 at s/>sas+gUSs(_R?s&&T at q*+P%aZeU2f07H.K0K*[iBF#c
+r;c;8q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q];k\Hq.lJ"s/Z1%s02O/s0_g6s0r$Bs2G#[s31Mis4%)$s5!_3s5<q9q8WHV
+s1&*2s.o[bs-<VEs+12ls)7pQs(A$7s(VLOs)n?ks-Nbhs2b5ps4mY2s5<nWqr. at js3L_es24lM
+s4..us3^kms3:SIs/jPGho=9Jc,PC9q8VBnUW37'n&G2'J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)]0?#jJNiHbq0r?=s',M8s)A!`s*Xits,d8Ls-!D?s+^Q5s,-i4Z%i:6s-<VZ
+s0;U;s1/0;s0;U$s,[2)s'bq%s%35Zs$?Ybq`ah)q*+P%`BN1.gHNZ,M*C`akrtG_r;cG<q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?#jJNirps$H`Ts%*/]s&/l$s(2"Ts-s%Vs.TIls/Q*]s*aojs).jLs'Pe.
+s%r_es$EnQs$QfWs&B#-s*Xj4s0)74s1/0/s-WhBrrE(7s'Pe(q0r-'pO:(FhgX<Da*rk/q0qQl
+Q[\l5o7$N8JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];kZtPH+Y`s/l=)s0;U1rNuU4s1JBJs2=rYs31Mis4./'s4dS0s5*Rks3q"e
+s1JB<s/Z0qs-itFs*aoms)e9Zs().>V.0I=s)7p[s+:9=s02ODs4[M.s5*e6rrDrTq8WH\s2k;Y
+s1SH_s3q"qs3L_is0)I)af=7<gT&<6M5pBkl)L)irCHP"q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?#jJNiHbq0r?=s',M8s)A!`s*Xits,d8Ls-!D?s+^Q5s,-i4Z%i:6s-<VZ
+s0;U;s1/0;s0;U$s,[2)s'bq%s%35Zs$?Ybq`ah)q*+P%`BN1.gHNZ,M*C`akrtG_r;cG<q>Z"p
+l[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)]0?#jJNirps$H`Ts%*/]s&/l$s(2"Ts-s%Vs.TIls/Q*]s*aojs).jLs'Pe.
+s%r_es$EnQs$QfWs&B#-s*Xj4s0)74s1/0/s-WhBrrE(7s'Pe(q0r-'pO:(FhgX<Da*rk/q0qQl
+Q[\l5o7$N8JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[q];kZtPH+Y`s/l=)s0;U1rNuU4s1JBJs2=rYs31Mis4./'s4dS0s5*Rks3q"e
+s1JB<s/Z0qs-itFs*aoms)e9Zs().>V.0I=s)7p[s+:9=s02ODs4[M.s5*e6rrDrTq8WH\s2k;Y
+s1SH_s3q"qs3L_is0)I)af=7<gT&<6M5pBkl)L)irCHP"q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)_`mkrq0mlYm6:>ps$H`[s&]50s(hXPs*Od's-*JAs+UK3s-*JEs,R,;s+n(;
+s+gW>s.fV!s1SHCs0_m0s.fUQs)n?Js%NGas$crRrrDp[q0r-'pO9qBhgXHH_g[S/q0qcrNILg+
+pO;r<JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)_`mkrq0mlYq`b$Hs$crWs%!)cs&oA2q0r at 0s.97fs/uC*s-E\Es+^Q&s*+K]
+s(MF at s&oA"s%<;XZTeCVs%WMrs(D at _s-s%lq7cm>s/Q*es,$aUs)%dDs&8`Bq*+P%_*6b*h`er,
+NB[/emll_[r;cS at q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q_lENJq8SVus/Z1%s0)C+rNcI0s1/0Bs1nZQs2b5as3gr!s4IA*s4mFis5!_)
+s3(G[s186:s.fUXs+^Q*s*jufs(;:Bs().>WFGmAs)7p^s+UKCs0MaJs4dS/s5*e6rrDrTq8WH\
+s2k;Ys1SH`s4%(rs3L_is0)I)`N%h8hl=T6NN2fon#DAerCH\&q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)_`mkrq0mlYm6:>ps$H`[s&]50s(hXPs*Od's-*JAs+UK3s-*JEs,R,;s+n(;
+s+gW>s.fV!s1SHCs0_m0s.fUQs)n?Js%NGas$crRrrDp[q0r-'pO9qBhgXHH_g[S/q0qcrNILg+
+pO;r<JUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)_`mkrq0mlYq`b$Hs$crWs%!)cs&oA2q0r at 0s.97fs/uC*s-E\Es+^Q&s*+K]
+s(MF at s&oA"s%<;XZTeCVs%WMrs(D at _s-s%lq7cm>s/Q*es,$aUs)%dDs&8`Bq*+P%_*6b*h`er,
+NB[/emll_[r;cS at q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[q_lENJq8SVus/Z1%s0)C+rNcI0s1/0Bs1nZQs2b5as3gr!s4IA*s4mFis5!_)
+s3(G[s186:s.fUXs+^Q*s*jufs(;:Bs().>WFGmAs)7p^s+UKCs0MaJs4dS/s5*e6rrDrTq8WH\
+s2k;Ys1SH`s4%(rs3L_is0)I)`N%h8hl=T6NN2fon#DAerCH\&q>Z#clc+MUh>dKTV#Pr~>
+JcF-trr at WMhuB[)aZfS%q*+V'JNiHbq0r?.s$QfXs&B#(s(;:Rs+LE3s+^Q/s-*JNs-E\Ls,m>B
+s,?u7\VC->s-<VZs0;U;s1/09s/Z0ms,$brs',Lqs%!)Ws$?Ybq`ah)q*+P%]ft8$jZ^G.OZrSi
+pHF.Wr;c_Dq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)aZfS%q*+V'JNirps$H`Qs$ZlUs%`Sqs'5AKs,d8Qs/Z1+s0Vg&s.01Us,R,7
+s+(,os)J'Qs'l"1s%`Sbs$O7Zs%!)es'G_As+^QEs0)=6s1SHBs/H$ds,$aUs).jFs&AfCq*+P%
+]ft8$jZ^G.OZrSipHF.Wr;c_Dq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qaf>5Rq5X81PH+Y`s/l=)rNQ7*s0D[4s1&*As1nZQs2k;es4%)!s4@;*q8WHn
+s53k2s3gqhs1SH7s.'+Ms,6o/s)\3Rs(D at Ds(&*<s(VLQs*Od%s.B>"s31Mus5!_4s5<nWqr. at j
+s3L_es24lNs4@;$s3gqos3:SIs/j,;h8\QV^W)D9q8W0/J]@XZqo8I3J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)aZfS%q*+V'JNiHbq0r?.s$QfXs&B#(s(;:Rs+LE3s+^Q/s-*JNs-E\Ls,m>B
+s,?u7\VC->s-<VZs0;U;s1/09s/Z0ms,$brs',Lqs%!)Ws$?Ybq`ah)q*+P%]ft8$jZ^G.OZrSi
+pHF.Wr;c_Dq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)aZfS%q*+V'JNirps$H`Qs$ZlUs%`Sqs'5AKs,d8Qs/Z1+s0Vg&s.01Us,R,7
+s+(,os)J'Qs'l"1s%`Sbs$O7Zs%!)es'G_As+^QEs0)=6s1SHBs/H$ds,$aUs).jFs&AfCq*+P%
+]ft8$jZ^G.OZrSipHF.Wr;c_Dq>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qaf>5Rq5X81PH+Y`s/l=)rNQ7*s0D[4s1&*As1nZQs2k;es4%)!s4@;*q8WHn
+s53k2s3gqhs1SH7s.'+Ms,6o/s)\3Rs(D at Ds(&*<s(VLQs*Od%s.B>"s31Mus5!_4s5<nWqr. at j
+s3L_es24lNs4@;$s3gqos3:SIs/j,;h8\QV^W)D9q8W0/J]@XZqo8I3J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)d6@@+o02u!JNiHbq0r?.s$QfVs%EAhs'YkFs*k!'s+:91s-`nZs.01Ys-WhP
+s-*JEs,I&8]nZQCs-<VZs0;U;s1/06s/>sgs+^Pls&o at ms$crSs$-M`q`ah)q*+P%[m&\ukru_.
+Ps5"ms#u!_omZc<q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)d6@@+o02u!JNirps$6TMs$H`Qs%NGks&SrEs+^Q=s.fV"s1JB>s/l<us.B=X
+s,d8:s+12rs)S-Ns'#G&s%iYds$==^s$-NWs&f;2s)J'rs.01nqnE*Cs0r$,s-WhBrrE(:s'l".
+q0r-'pO9S8hgXfR]7-#/q0r?-JU[9 at qZ-HlJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qdAm"Xo;_W+PH+Y`s/l=(rNH1(s0;U1s0_m:s1JBJs2P)_s3^kps4./'q8WHn
+s53k4s4dS*s2P)Is/#a_s-*J9s)n?Vs(VLHs(&*<s(VLTs*k!+s.]P(s3:T"s5*e6s5EtXqr. at j
+s3L_es2=rPs4IA&s3q"ps3:SIs/io5ho=o\]>g,9q8WH7J]@B&qagP_J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)d6@@+o02u!JNiHbq0r?.s$QfVs%EAhs'YkFs*k!'s+:91s-`nZs.01Ys-WhP
+s-*JEs,I&8]nZQCs-<VZs0;U;s1/06s/>sgs+^Pls&o at ms$crSs$-M`q`ah)q*+P%[m&\ukru_.
+Ps5"ms#u!_omZc<q>Z"pl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[)d6@@+o02u!JNirps$6TMs$H`Qs%NGks&SrEs+^Q=s.fV"s1JB>s/l<us.B=X
+s,d8:s+12rs)S-Ns'#G&s%iYds$==^s$-NWs&f;2s)J'rs.01nqnE*Cs0r$,s-WhBrrE(:s'l".
+q0r-'pO9S8hgXfR]7-#/q0r?-JU[9 at qZ-HlJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qdAm"Xo;_W+PH+Y`s/l=(rNH1(s0;U1s0_m:s1JBJs2P)_s3^kps4./'q8WHn
+s53k4s4dS*s2P)Is/#a_s-*J9s)n?Vs(VLHs(&*<s(VLTs*k!+s.]P(s3:T"s5*e6s5EtXqr. at j
+s3L_es2=rPs4IA&s3q"ps3:SIs/io5ho=o\]>g,9q8WH7J]@B&qagP_J]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)ffo33lTY,nJNiHbq0r?.s$QfVs%EAfs'5S<s*4Qps+p]=s.B=fs.fUfs.B=^
+s-itSs-3PFs,I&9s+eLHs,[2Ks/#b#s1SH at s/l<ts-it?s)%d;s$m#Us$6TJrrDp[q0r-'pO9G4
+hgXrV[sj`/rI4_FJU[!8r;cfrJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)ffo33lTY,nJNilns$-NKs$?ZWs%WMiq0r?ks,-iEs/>t(s1&*Cs0hs2s/5mi
+s-`nLs,-i*s)J'Ns'bq3s&&efs$crSs$+Cbs$H`]s'5S<s*"F"s.01nrP&<Fs1A<>s/5m`s+gUS
+s)%dEs&SrEq*+P%ZTd8qm68".R6LRurVqFtm=,!6rVqFtl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qfrFj`l`0d#PH+Y`rN6%$rNH7*s0D[3s0r$=s1\NNs2k;ds3Ueqs4R4fs5F"8
+s5!_0s4I at qs1eT:s.TIXs+^Pts(q^Ns(MFCWFGmDs*+Kos,R,Us186Us5*e5rSdbVqr. at js3L_e
+s2G#Rs4RG(s4%(qs3:SIs/ic1ho>&`\&Oi9rPng9J]@)sr;cfrJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)ffo33lTY,nJNiHbq0r?.s$QfVs%EAfs'5S<s*4Qps+p]=s.B=fs.fUfs.B=^
+s-itSs-3PFs,I&9s+eLHs,[2Ks/#b#s1SH at s/l<ts-it?s)%d;s$m#Us$6TJrrDp[q0r-'pO9G4
+hgXrV[sj`/rI4_FJU[!8r;cfrJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)ffo33lTY,nJNilns$-NKs$?ZWs%WMiq0r?ks,-iEs/>t(s1&*Cs0hs2s/5mi
+s-`nLs,-i*s)J'Ns'bq3s&&efs$crSs$+Cbs$H`]s'5S<s*"F"s.01nrP&<Fs1A<>s/5m`s+gUS
+s)%dEs&SrEq*+P%ZTd8qm68".R6LRurVqFtm=,!6rVqFtl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qfrFj`l`0d#PH+Y`rN6%$rNH7*s0D[3s0r$=s1\NNs2k;ds3Ueqs4R4fs5F"8
+s5!_0s4I at qs1eT:s.TIXs+^Pts(q^Ns(MFCWFGmDs*+Kos,R,Us186Us5*e5rSdbVqr. at js3L_e
+s2G#Rs4RG(s4%(qs3:SIs/ic1ho>&`\&Oi9rPng9J]@)sr;cfrJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)h`go;j$*9fJNiHbq0r?.s$QfVs%35bs'#G8s)e9ls,R,Is/#ass/H$ss/5mm
+s.TIas-s%Us-3PGs,R,;s+e^Ns,6oCs.TIos0r$@s0Ma*s.]O[s+(,as&K(es$?TIrrDp[q0r-'
+pO9;0hgY)ZZ$rH3rI4SBJU[!8rVufrJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)h`go;j$*9fJNi`js$-NOs%!)\q0r?as+(-1s.'+es/c7+s0r$As1&*5s/H$l
+s-WhDs*aofs)%dJs&f:ts%NGas$crQs$+Uhs$6TQs&/l(s(q^^s,-iIs0)I:s1SHFs186=s/,g^
+s+^ORs(q^Cs&JlDq*+P%Y<LimnNO4,UH\X*q>Z"pm=,$6r;_Ctl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qhl?Qhj/VppPH+Y`rN,t"ql]t(s0Ma6s1&*Bs2"`Ts3(Ggs3q##q8WHns53k4
+s4mY-s3:SZs0Ma's-NbAs*=W^s(q^Ks(&0>s().Js*F^!s,m>[s1A<Ws53k7rSdbVqr. at js3L_f
+s2P)Ts4[M*s4%(qs3:SIs/iW-ho>2dZ,WQ=rPn[5J]@)srVufrJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)h`go;j$*9fJNiHbq0r?.s$QfVs%35bs'#G8s)e9ls,R,Is/#ass/H$ss/5mm
+s.TIas-s%Us-3PGs,R,;s+e^Ns,6oCs.TIos0r$@s0Ma*s.]O[s+(,as&K(es$?TIrrDp[q0r-'
+pO9;0hgY)ZZ$rH3rI4SBJU[!8rVufrJUZp6JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)h`go;j$*9fJNi`js$-NOs%!)\q0r?as+(-1s.'+es/c7+s0r$As1&*5s/H$l
+s-WhDs*aofs)%dJs&f:ts%NGas$crQs$+Uhs$6TQs&/l(s(q^^s,-iIs0)I:s1SHFs186=s/,g^
+s+^ORs(q^Cs&JlDq*+P%Y<LimnNO4,UH\X*q>Z"pm=,$6r;_Ctl[FEbh>dKTV#Pr~>
+JcF-trr at WMhuB[qhl?Qhj/VppPH+Y`rN,t"ql]t(s0Ma6s1&*Bs2"`Ts3(Ggs3q##q8WHns53k4
+s4mY-s3:SZs0Ma's-NbAs*=W^s(q^Ks(&0>s().Js*F^!s,m>[s1A<Ws53k7rSdbVqr. at js3L_f
+s2P)Ts4[M*s4%(qs3:SIs/iW-ho>2dZ,WQ=rPn[5J]@)srVufrJ]@#qJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)k<A\Ah*1X`JNiHbq0r?.s$QfUs%!)^s&f;4s)S-bs,6oJs/Z1*s02O,s/uC&
+s/>sos.]Ocs-s%Us-<VIs,R,;s+o!Us+gW;s.01gs0Ma>s1A<:s/>sis-*J3s(MF2s$H`MrBC5]
+q`ah)q*+P%X$5EioffL,Y<MW.q>Z"pm=+m2r;_Ctms]ifh>dKTV#Pr~>
+JcF-trr at WMhuB[)k<A\Ah*1X`JNiTfs$?ZPq0r?Vs*"Eqs,d8Ls.KChs/Z1,s1&*As1/07s.o[]
+s,$c*s*=W]s'Yk.s&B"ps%*/Ws$H`Ns$+gns$-NNs%35js'l"Hs+LE8s.KCqs1\NGs1A<As0_m'
+s-<V<rrE(7s'Pe*q0r-'pO9/,hgY5^Xa[H;omZ`:JU[!8q>^BnJU[':JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qkGn>nh5^:jOfJA\rN,mus02O/s0_m9s1JBIs2G#Zs3CYms4@(ds5F"8rS at M-
+s3:S[s0_m0s.'+Is*Ocbs(q^Ks(&0>s(;:Ns*Xj&s-<V`s1JBYs53_4rrDrTq8WH]s3(G_s2+fj
+s4IA$s3Uejs0)I)YH$L"or>.6YH%98q>Z#cmDeu%rCDLZn&BqYh>dKTV#Pr~>
+JcF-trr at WMhuB[)k<A\Ah*1X`JNiHbq0r?.s$QfUs%!)^s&f;4s)S-bs,6oJs/Z1*s02O,s/uC&
+s/>sos.]Ocs-s%Us-<VIs,R,;s+o!Us+gW;s.01gs0Ma>s1A<:s/>sis-*J3s(MF2s$H`MrBC5]
+q`ah)q*+P%X$5EioffL,Y<MW.q>Z"pm=+m2r;_Ctms]ifh>dKTV#Pr~>
+JcF-trr at WMhuB[)k<A\Ah*1X`JNiTfs$?ZPq0r?Vs*"Eqs,d8Ls.KChs/Z1,s1&*As1/07s.o[]
+s,$c*s*=W]s'Yk.s&B"ps%*/Ws$H`Ns$+gns$-NNs%35js'l"Hs+LE8s.KCqs1\NGs1A<As0_m'
+s-<V<rrE(7s'Pe*q0r-'pO9/,hgY5^Xa[H;omZ`:JU[!8q>^BnJU[':JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[qkGn>nh5^:jOfJA\rN,mus02O/s0_m9s1JBIs2G#Zs3CYms4@(ds5F"8rS at M-
+s3:S[s0_m0s.'+Is*Ocbs(q^Ks(&0>s(;:Ns*Xj&s-<V`s1JBYs53_4rrDrTq8WH]s3(G_s2+fj
+s4IA$s3Uejs0)I)YH$L"or>.6YH%98q>Z#cmDeu%rCDLZn&BqYh>dKTV#Pr~>
+JcF-trr at WMhuB[)mlpOIeNWeXJNiHbq0r?.s$QfSs$crZs&T/0s(_RRs+C?:s/5n's0r$:s0_m5
+s0)I(s/H$qs.]Ocs.'+Ws-<VIs,[2=s,#3Zs,R,Is.o[us186Ds1868s/5mgs,R,,s(;:.s$6HF
+rrDp[q0r-'pO9#(hgYAbWIDHCm=+m2JU[!8q>^DBr;_Cto6u8jh>dKTV#Pr~>
+JcF-trr at WMhuB[)mlpOIeNWeXJNiHbq0r?Ls(q^[s+LE4s-3PPs.]Oos0)I/s0r$>s02Nus-<VB
+s+12ls(D@<s',M's%EA]s$crTs$H`Ns$+srs$H`Ts%NGps(24Ts,I&Js/H%-s1SHFs186 at s0Vg%
+s-3P:rrE(6s'G_(q0r-'pO9#(hgYAbWIDHCm=+m2JU[!8q>^DBr;_Cto6u8jh>dKTV#Pr~>
+JcF-trr at WMhuB[qn#H2!eZ/GbNN2rXqlKh$s0;U2s0hs>s1eTPs2G#]s3Uerq8WHns53e3s4dS!
+s2+fKs0_m%s-!D4s)e9Ws(MFCX^_<@s(MFRs*k!*s-`nes1SH[s5<e5rrDrTq8WH]s31Mas24ll
+s4IA$s3Uejs0)I)X/b'sq5UF6];k8<q>Z#cmDeu%rPne,J]@<$JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)mlpOIeNWeXJNiHbq0r?.s$QfSs$crZs&T/0s(_RRs+C?:s/5n's0r$:s0_m5
+s0)I(s/H$qs.]Ocs.'+Ws-<VIs,[2=s,#3Zs,R,Is.o[us186Ds1868s/5mgs,R,,s(;:.s$6HF
+rrDp[q0r-'pO9#(hgYAbWIDHCm=+m2JU[!8q>^DBr;_Cto6u8jh>dKTV#Pr~>
+JcF-trr at WMhuB[)mlpOIeNWeXJNiHbq0r?Ls(q^[s+LE4s-3PPs.]Oos0)I/s0r$>s02Nus-<VB
+s+12ls(D@<s',M's%EA]s$crTs$H`Ns$+srs$H`Ts%NGps(24Ts,I&Js/H%-s1SHFs186 at s0Vg%
+s-3P:rrE(6s'G_(q0r-'pO9#(hgYAbWIDHCm=+m2JU[!8q>^DBr;_Cto6u8jh>dKTV#Pr~>
+JcF-trr at WMhuB[qn#H2!eZ/GbNN2rXqlKh$s0;U2s0hs>s1eTPs2G#]s3Uerq8WHns53e3s4dS!
+s2+fKs0_m%s-!D4s)e9Ws(MFCX^_<@s(MFRs*k!*s-`nes1SH[s5<e5rrDrTq8WH]s31Mas24ll
+s4IA$s3Uejs0)I)X/b'sq5UF6];k8<q>Z#cmDeu%rPne,J]@<$JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)ofi6Qbs(rPJNiHbq0r?.s$?ZOs$QfVs&B#)s'l"Bs*Od*s.'+bs/l=0s1JBC
+s0hs6s02O*s/H$qs.fUes.'+Ws-E\Ks,d8>s,#cjs,-i5qhG-/s-<VWs/Z1.s1SHFs1/06s/,gc
+s+^Pqs'bq&q*+fYq`ah)q*+P%UH[L_s$!9.`BNI6q>Z"pm=+m2q0r2 at JU[EDJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)ofi6Qbs(rPJNiHbq0r?Bs'bqDs*4Qqs+p]9s-`n]s/,grs0)I0s/uC$s.TIY
+s,$c&s).jJs'l"1s%iYds%*/Zs$ZlRs$?ZMs$,1#s$6TQs%<;es',M=s+139s.o\#s1\NHs1JBC
+s1&*8s.fUXs+C=Os(VL=s&/ZAq*+P%UH[L_s$!9.`BNI6q>Z"pm=+m2q0r2 at JU[EDJcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[qor at n)c)UTZM5pHRs/uC+s0Ma5s186Es2"`Ps2b5bs3g__s5F"9rSRY1s3L_b
+s24lLs/Q*es,-i.s*+K[s(&<Bs'u(@s(_RVs+(-/s.TIus2+fbq;M>Rqr. at js3Ueis2b5Ys4mY,
+s4%(qs3:SIs/i3!h8]JpV8gKSkJm>tJ]@)sq>^91qac:Xq8S!ch>dKTV#Pr~>
+JcF-trr at WMhuB[)ofi6Qbs(rPJNiHbq0r?.s$?ZOs$QfVs&B#)s'l"Bs*Od*s.'+bs/l=0s1JBC
+s0hs6s02O*s/H$qs.fUes.'+Ws-E\Ks,d8>s,#cjs,-i5qhG-/s-<VWs/Z1.s1SHFs1/06s/,gc
+s+^Pqs'bq&q*+fYq`ah)q*+P%UH[L_s$!9.`BNI6q>Z"pm=+m2q0r2 at JU[EDJcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)ofi6Qbs(rPJNiHbq0r?Bs'bqDs*4Qqs+p]9s-`n]s/,grs0)I0s/uC$s.TIY
+s,$c&s).jJs'l"1s%iYds%*/Zs$ZlRs$?ZMs$,1#s$6TQs%<;es',M=s+139s.o\#s1\NHs1JBC
+s1&*8s.fUXs+C=Os(VL=s&/ZAq*+P%UH[L_s$!9.`BNI6q>Z"pm=+m2q0r2 at JU[EDJcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[qor at n)c)UTZM5pHRs/uC+s0Ma5s186Es2"`Ps2b5bs3g__s5F"9rSRY1s3L_b
+s24lLs/Q*es,-i.s*+K[s(&<Bs'u(@s(_RVs+(-/s.TIus2+fbq;M>Rqr. at js3Ueis2b5Ys4mY,
+s4%(qs3:SIs/i3!h8]JpV8gKSkJm>tJ]@)sq>^91qac:Xq8S!ch>dKTV#Pr~>
+JcF-trr at WMhuB[)rBC#Wa$0<JJNiHbq0r9,s$6TMs$crcs&T/&s'bqKs+UK4s-<VUs/5n#s0r$A
+s186>s0Vg1s/l=$s/5mms.KC_s-itSs-*JEs,I&9l%]4ns,[2?s,6o6s+gW;s.01fs0D[<s1JBD
+s1/05s/#aYs*ju`s&o at kq*+fYq`ah)q*+P%SN_URd6?H:q>Z"pm=+m2o7$W<JU[QHJcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)rBC#Wa$0<JJNiHbq0r?8s&B#+s(q^Ys*Xj$s,d8Ks.01`s/H%$s/>sms.97[
+s,d84s)n?Xs(247s&/kjs%EA`s$m#Vs$Q`Os$?ZMh`h')s$QfWs%WMks'G_Is,-iKs/l=6s1\NH
+s1JBCs1&*4s.TIUs+:7Ns(MF;s%rN?q*+P%SN_URd6?H:q>Z"pm=+m2o7$W<JU[QHJcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[qrMo[/a/\sTK<"sRs0)I.s0Vg:s1JBGs1eTPs2tAfq8WBlrS[_3s3Uejs2tAZ
+s0;Tss-WhJs+^Q#s)A!OZ"!`Es(MFKs*+Kps-E\bs186Qs4dA.rrDrTq8WH]s31Mas24lks4@;#
+s3Uejs0)I)TrN[`dAl*Dq>Z#cmDeu%o>^`"J]@Z.JcFR+rrAkpJ,~>
+JcF-trr at WMhuB[)rBC#Wa$0<JJNiHbq0r9,s$6TMs$crcs&T/&s'bqKs+UK4s-<VUs/5n#s0r$A
+s186>s0Vg1s/l=$s/5mms.KC_s-itSs-*JEs,I&9l%]4ns,[2?s,6o6s+gW;s.01fs0D[<s1JBD
+s1/05s/#aYs*ju`s&o at kq*+fYq`ah)q*+P%SN_URd6?H:q>Z"pm=+m2o7$W<JU[QHJcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[)rBC#Wa$0<JJNiHbq0r?8s&B#+s(q^Ys*Xj$s,d8Ks.01`s/H%$s/>sms.97[
+s,d84s)n?Xs(247s&/kjs%EA`s$m#Vs$Q`Os$?ZMh`h')s$QfWs%WMks'G_Is,-iKs/l=6s1\NH
+s1JBCs1&*4s.TIUs+:7Ns(MF;s%rN?q*+P%SN_URd6?H:q>Z"pm=+m2o7$W<JU[QHJcFR+rrAkp
+J,~>
+JcF-trr at WMhuB[qrMo[/a/\sTK<"sRs0)I.s0Vg:s1JBGs1eTPs2tAfq8WBlrS[_3s3Uejs2tAZ
+s0;Tss-WhJs+^Q#s)A!OZ"!`Es(MFKs*+Kps-E\bs186Qs4dA.rrDrTq8WH]s31Mas24lks4@;#
+s3Uejs0)I)TrN[`dAl*Dq>Z#cmDeu%o>^`"J]@Z.JcFR+rrAkpJ,~>
+JcF-trr at WMhuBg-q#J/nq0mlYm6:>pq`b$Es$QfYs%`Sks&oA;s*+Kls+^Q6s-NbYs/5n#s0hs@
+s1A<?s0Vg2s/uC&s/5mms.TIas-itSs-3PGs,I&9s+g&ts,?uBs-*JFrJpoGs.o[ts1/0Cs1A<B
+s1&*3s.B=Ks*"EPs&&e`q*+fYq`ah)q*+P%R6H1Nh*0G>q>Z"pm=+m2msb38JUW1Mh>dKTV#Pr~>
+JcF-trr at WMhuBg-q#J/nq0mlYm6:>ps$m#_s&B#+s(_RTs*ap&s,d8Fs-s%`s/>sls.0+Ys,m>9
+s*Xids(MF=s&K(ps%`Ses%*/Zs$crUs$crUs$QfPs$6TKjZ`]:s%EAcs%r_qs(D@[s-*J^s0qs@
+s1SHFs186<s/Q*hs,R,0rrE(3s',M!q0r-'pO8MoJUZE=f7*PqJU[!8q>]o4r;_CtJcFR+rrAkp
+J,~>
+JcF-trr at WMhuBgurCHm&^T.+LK<"sQs/uC,s0Ma8s1/0As1JBJs2Y/_q8WHks5<k7s5*e-s4%(r
+s2tAOs/l<us.97Ts,$c+s*4Q`s(]#Ps().Bs(_ROs*=X$s.97rs2+fbs5*S1rrDrTq8WH]s31Ma
+s2+fis475!s3L_is0)I)SZ77\h5])Hq>Z#cmDeu%n&G;sJ]<9 at h>dKTV#Pr~>
+JcF-trr at WMhuBg-q#J/nq0mlYm6:>pq`b$Es$QfYs%`Sks&oA;s*+Kls+^Q6s-NbYs/5n#s0hs@
+s1A<?s0Vg2s/uC&s/5mms.TIas-itSs-3PGs,I&9s+g&ts,?uBs-*JFrJpoGs.o[ts1/0Cs1A<B
+s1&*3s.B=Ks*"EPs&&e`q*+fYq`ah)q*+P%R6H1Nh*0G>q>Z"pm=+m2msb38JUW1Mh>dKTV#Pr~>
+JcF-trr at WMhuBg-q#J/nq0mlYm6:>ps$m#_s&B#+s(_RTs*ap&s,d8Fs-s%`s/>sls.0+Ys,m>9
+s*Xids(MF=s&K(ps%`Ses%*/Zs$crUs$crUs$QfPs$6TKjZ`]:s%EAcs%r_qs(D@[s-*J^s0qs@
+s1SHFs186<s/Q*hs,R,0rrE(3s',M!q0r-'pO8MoJUZE=f7*PqJU[!8q>]o4r;_CtJcFR+rrAkp
+J,~>
+JcF-trr at WMhuBgurCHm&^T.+LK<"sQs/uC,s0Ma8s1/0As1JBJs2Y/_q8WHks5<k7s5*e-s4%(r
+s2tAOs/l<us.97Ts,$c+s*4Q`s(]#Ps().Bs(_ROs*=X$s.97rs2+fbs5*S1rrDrTq8WH]s31Ma
+s2+fis475!s3L_is0)I)SZ77\h5])Hq>Z#cmDeu%n&G;sJ]<9 at h>dKTV#Pr~>
+JcF-trr at WMhuC$3qZ-SD]0?%>JNiHbq0r'%s$H`Ts%35fs'bq at s)7p\s*t')s,d8Is.97fs/l=/
+s1JBDs1&*:s0D[-s/Z0us/#ahs.97[s-WhOs,m>As,6o5onNL(s-!DMs-WhPs-3PKs.KCms0_g<
+s186 at s0r$0s-Nb;s).j at s%35Xq*+fYq`ah)q*+P%Ps0bJs*j2rd=1okJU[!8q>]c0r;_P#JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuC$3qZ-SD]0?%>JNiHbq0r?4s%NGjs&oA/s(_RUs*k!'s,?uCs.01as.'+VrLNtO
+s+gW&s*+KYs'bq0s&/kns%WMcs%*)Ys%*/[s$m#Vs%!)Ys$QfOlTY>:s&K)#s&f;(s',MBs+^QD
+s0DO9s1SHFs1/06s/#a^s,$c&rrE(1s'#Ftq0r-'pO8AkJU[WJks!LDq>Z"pm=+m2l[Jd4KmnUQ
+h>dKTV#Pr~>
+JcF-trr at WMhuC%&qag\*];k\HK<"sQs/uC+s0D[4s0hs;s1/0Ds24lWq8WHgs4mY1s53k8s5*e1
+s4IA!s2"`Is0Vg-s.]O[s,d8;s+12rs)S-Ts'rfQs().As(VLLs)A!cs,m>Ys186Qs4[M0q;M>R
+qr. at js3Ueis2Y/Us4RG&s3gqns3:SIs/h]hJ]@`0l)N.Nq>Z#cmDeu%lc/loKuS]Dh>dKTV#Pr~>
+JcF-trr at WMhuC$3qZ-SD]0?%>JNiHbq0r'%s$H`Ts%35fs'bq at s)7p\s*t')s,d8Is.97fs/l=/
+s1JBDs1&*:s0D[-s/Z0us/#ahs.97[s-WhOs,m>As,6o5onNL(s-!DMs-WhPs-3PKs.KCms0_g<
+s186 at s0r$0s-Nb;s).j at s%35Xq*+fYq`ah)q*+P%Ps0bJs*j2rd=1okJU[!8q>]c0r;_P#JcFR+
+rrAkpJ,~>
+JcF-trr at WMhuC$3qZ-SD]0?%>JNiHbq0r?4s%NGjs&oA/s(_RUs*k!'s,?uCs.01as.'+VrLNtO
+s+gW&s*+KYs'bq0s&/kns%WMcs%*)Ys%*/[s$m#Vs%!)Ys$QfOlTY>:s&K)#s&f;(s',MBs+^QD
+s0DO9s1SHFs1/06s/#a^s,$c&rrE(1s'#Ftq0r-'pO8AkJU[WJks!LDq>Z"pm=+m2l[Jd4KmnUQ
+h>dKTV#Pr~>
+JcF-trr at WMhuC%&qag\*];k\HK<"sQs/uC+s0D[4s0hs;s1/0Ds24lWq8WHgs4mY1s53k8s5*e1
+s4IA!s2"`Is0Vg-s.]O[s,d8;s+12rs)S-Ts'rfQs().As(VLLs)A!cs,m>Ys186Qs4[M0q;M>R
+qr. at js3Ueis2Y/Us4RG&s3gqns3:SIs/h]hJ]@`0l)N.Nq>Z#cmDeu%lc/loKuS]Dh>dKTV#Pr~>
+JcF-trr at WMhuC<;q#L/<]0?%>JNiHbq0qp!s$?ZVs&/l"s'Yk>s)A!_s*t'(s,R,Fs.01cs/c7,
+s1A<Ds1/0;s0D[.s/c7!s/#ais.B=]s-WhOs-!DCs,6o5qhG-+s,[2Hs.97]rL<hWs/5n&s1JB@
+qmc[7s.fUTs*F]Ws&8qhs$QTGrrDp[q0r-'pO85gJU[WJofgKHq>Z"pm=+m2kC3 at 0M11$Uh>dKT
+V#Pr~>
+JcF-trr at WMhuC<;q#L/<]0?%>JNiHbq0r?3s%EAhs&f;*s'u(Es)n?js+^Q6s-NbUs-E\QrLX%Q
+s+p].s*t&is(D@:s&K(ss%iYgqb$l]s%<5]s%`Sgs%<;]s$crSmlpbIs'bq:s'u(>s(MF[s,m>X
+s1A0Bs1SHFs0Vg,s.KCTs+LDsrrE(.s&]4pq0r-'pO85gJU[WJofgKHq>Z"pm=+m2kC3 at 0M11$U
+h>dKTV#Pr~>
+JcF-trr at WMhuC=.q+18"];k\HK<"sQs/uC+s0;U0s0Ma4s0hs>s1eTOq8WHcs4IA)s4dS1s5<q9
+s53k/s3L_es2+fIs02O%s.KC[s,m>=s+:8ts)e9Ws(0)Ws(_RLs(q^Qs)S-ns-`nis2+fas4[M0
+q;M>Rqr. at js3Uehs2P)Ss4IA$s3^kms3:SIs/hQdJ]@`0or?-Rq>Z#cmDeu%kJmHkM8k,Hh>dKT
+V#Pr~>
+JcF-trr at WMhuC<;q#L/<]0?%>JNiHbq0qp!s$?ZVs&/l"s'Yk>s)A!_s*t'(s,R,Fs.01cs/c7,
+s1A<Ds1/0;s0D[.s/c7!s/#ais.B=]s-WhOs-!DCs,6o5qhG-+s,[2Hs.97]rL<hWs/5n&s1JB@
+qmc[7s.fUTs*F]Ws&8qhs$QTGrrDp[q0r-'pO85gJU[WJofgKHq>Z"pm=+m2kC3 at 0M11$Uh>dKT
+V#Pr~>
+JcF-trr at WMhuC<;q#L/<]0?%>JNiHbq0r?3s%EAhs&f;*s'u(Es)n?js+^Q6s-NbUs-E\QrLX%Q
+s+p].s*t&is(D@:s&K(ss%iYgqb$l]s%<5]s%`Sgs%<;]s$crSmlpbIs'bq:s'u(>s(MF[s,m>X
+s1A0Bs1SHFs0Vg,s.KCTs+LDsrrE(.s&]4pq0r-'pO85gJU[WJofgKHq>Z"pm=+m2kC3 at 0M11$U
+h>dKTV#Pr~>
+JcF-trr at WMhuC=.q+18"];k\HK<"sQs/uC+s0;U0s0Ma4s0hs>s1eTOq8WHcs4IA)s4dS1s5<q9
+s53k/s3L_es2+fIs02O%s.KC[s,m>=s+:8ts)e9Ws(0)Ws(_RLs(q^Qs)S-ns-`nis2+fas4[M0
+q;M>Rqr. at js3Uehs2P)Ss4IA$s3^kms3:SIs/hQdJ]@`0or?-Rq>Z#cmDeu%kJmHkM8k,Hh>dKT
+V#Pr~>
+JcF-trr at WMhuCTCq#Kl4]0?%>JNiHbq0qcrs$H`Ws%r_ts'Yk?s)7p]s*k!%s,I&Cs.'+as/Z1+
+s186Cs1/0<s0Ma/s/c7"s/,gks.B=]s-`nQs-!DCs,?u7s+^Q4s-3PRs.oOds.fUss1/0 at s0DO.
+s/uBks+gVps'G_$s%35Xq*+fYq`ah)q*+P%NBVoB^OH"YJU[!8q>]K(r;_h+JcFR+rrAkpJ,~>
+JcF-trr at WMhuCTCq#Kl4]0?%>JNiHbq0r?2s%<;fs&B#"s'Pe=s)7p]s+(-*s,m>Is-3PPrLa+S
+s,?u;s+gW$s)A!Ls'Pe-s&&eks%NAcs%`Sgs%NGhs&K(us&&eks&&eks%*/WofiCIs'#G=s)%dR
+s)J']s,-iJs0DI7s1SHCs0)I!s-s%Js+(,lrrE(+s&B"jq0r-'pO8)cJUY at _q>Z"pm=+m2j*pq,
+NIHHYh>dKTV#Pr~>
+JcF-trr at WMhuCU6q+0to];k\HK<"sQs/u=)rNZC.s0Ma7s1A<Gq8WH_s4%)"s4IA+s5!_3s53k8
+s5!_,s3Uefs1eTDs02O&s.TI]s-*J at s+LE"s)n?Zs(9A^s(D at Ns)J'Zs)e9es,I&Ps0hsMs475(
+s5*S1rrDrTq8WH]s2tA\s1eTcs3q"qs3L_is0)I)OfEuP^W-*LJ]@)sq>]KprCDpfJcFR+rrAkp
+J,~>
+JcF-trr at WMhuCTCq#Kl4]0?%>JNiHbq0qcrs$H`Ws%r_ts'Yk?s)7p]s*k!%s,I&Cs.'+as/Z1+
+s186Cs1/0<s0Ma/s/c7"s/,gks.B=]s-`nQs-!DCs,?u7s+^Q4s-3PRs.oOds.fUss1/0 at s0DO.
+s/uBks+gVps'G_$s%35Xq*+fYq`ah)q*+P%NBVoB^OH"YJU[!8q>]K(r;_h+JcFR+rrAkpJ,~>
+JcF-trr at WMhuCTCq#Kl4]0?%>JNiHbq0r?2s%<;fs&B#"s'Pe=s)7p]s+(-*s,m>Is-3PPrLa+S
+s,?u;s+gW$s)A!Ls'Pe-s&&eks%NAcs%`Sgs%NGhs&K(us&&eks&&eks%*/WofiCIs'#G=s)%dR
+s)J']s,-iJs0DI7s1SHCs0)I!s-s%Js+(,lrrE(+s&B"jq0r-'pO8)cJUY at _q>Z"pm=+m2j*pq,
+NIHHYh>dKTV#Pr~>
+JcF-trr at WMhuCU6q+0to];k\HK<"sQs/u=)rNZC.s0Ma7s1A<Gq8WH_s4%)"s4IA+s5!_3s53k8
+s5!_,s3Uefs1eTDs02O&s.TI]s-*J at s+LE"s)n?Zs(9A^s(D at Ns)J'Zs)e9es,I&Ps0hsMs475(
+s5*S1rrDrTq8WH]s2tA\s1eTcs3q"qs3L_is0)I)OfEuP^W-*LJ]@)sq>]KprCDpfJcFR+rrAkp
+J,~>
+JcF-trr at WMhuClKq#KT,]0?%>JNiHbq0qWns$?ZVs%r_ts'Pe<s).jZs*ap#s,?uAs.'+bs/Z1)
+s1&*Bs186>s0Ma0s/l=$s/,gks.KC_s-`nQs-*JEs,?u at s-`n\s/H$srMfgss0_m>s0_m/ql]sm
+s,R,,s(_R7s%iYds$QTGrrDp[q0r-'pO7l]MgkF#`I at X_JU[!8q>]?$qZ)h/JcFR+rrAkpJ,~>
+JcF-trr at WMhuClKq#KT,]0?%>JNiHbq0r?1s%35cs%r_os',M5s(hXQs*=Wrs,6o=s-<VRrLj1U
+s-3PKs,[25s*4Qas(q^Gs'5S's%iSis&&ems&8r"s'5S.s&f;(s'>Y.s&B"os%EA\q`b$Is&B#1
+s*+Kfs*F]os+:9;s/Yn.s1SH>s/Q*ls-E\@s*XierrE((s&&efq0r-'pO7l]MgkF#`I at X_JU[!8
+q>]?$qZ)h/JcFR+rrAkpJ,~>
+JcF-trr at WMhuCm>q+0\g];k\HK<"sQs/u=(rNQ7*s0Vg8s1A*Hs3CYks3gqts4IA*s4dS0s53k7
+s5F"8s4@:ss2b5Us1/08s/Q*os-s%Qs,I&4s*juks)7pMj'qssnRDN.s)%dZs*+Kfs*F^#s-ith
+s1\N]s475(s5*S1rrE#Vs5<^ms3L_es2=rOs475!s3^kms3:SIs/h3ZMoPMk`Q%`RJ]@)sq>]?l
+qacpjJcFR+rrAkpJ,~>
+JcF-trr at WMhuClKq#KT,]0?%>JNiHbq0qWns$?ZVs%r_ts'Pe<s).jZs*ap#s,?uAs.'+bs/Z1)
+s1&*Bs186>s0Ma0s/l=$s/,gks.KC_s-`nQs-*JEs,?u at s-`n\s/H$srMfgss0_m>s0_m/ql]sm
+s,R,,s(_R7s%iYds$QTGrrDp[q0r-'pO7l]MgkF#`I at X_JU[!8q>]?$qZ)h/JcFR+rrAkpJ,~>
+JcF-trr at WMhuClKq#KT,]0?%>JNiHbq0r?1s%35cs%r_os',M5s(hXQs*=Wrs,6o=s-<VRrLj1U
+s-3PKs,[25s*4Qas(q^Gs'5S's%iSis&&ems&8r"s'5S.s&f;(s'>Y.s&B"os%EA\q`b$Is&B#1
+s*+Kfs*F]os+:9;s/Yn.s1SH>s/Q*ls-E\@s*XierrE((s&&efq0r-'pO7l]MgkF#`I at X_JU[!8
+q>]?$qZ)h/JcFR+rrAkpJ,~>
+JcF-trr at WMhuCm>q+0\g];k\HK<"sQs/u=(rNQ7*s0Vg8s1A*Hs3CYks3gqts4IA*s4dS0s53k7
+s5F"8s4@:ss2b5Us1/08s/Q*os-s%Qs,I&4s*juks)7pMj'qssnRDN.s)%dZs*+Kfs*F^#s-ith
+s1\N]s475(s5*S1rrE#Vs5<^ms3L_es2=rOs475!s3^kms3:SIs/h3ZMoPMk`Q%`RJ]@)sq>]?l
+qacpjJcFR+rrAkpJ,~>
+JcF-trr at WMhuD)QqZ,N&]0?%>JNiHbq0qKjs$6TSs%iYqs'G_:s)%dXs*Od!s,?uBs-s%_s/Q+(
+s1&*Cs186>s0Vg2s/l=$s/5mms.KC_s-itSs-!DLs.B=gs/uC*rNQ=,s1JB at s02O%rMfgis-*J6
+s)7pBs&8qns%35Xq*+fYq`ah)q*+P%K0GWNli5(Uq>Z"pm=+m2fm`l"Q[XMch>dKTV#Pr~>
+JcF-trr at WMhuD)QqZ,N&]0?%>JNiHbq0r?0s%*/^s%NGgs&]5-s'u(Bs)S-ds+LE3s-E\Ts.]Oe
+rLEnYs-WhFs+C?$s*=Was(VLAs'5S+s&8qss&K)&s'P_7s'Yk<s(VLFs'Yk2s'5S(s%`Sas$-NY
+s'PeGs+:9's+gW4s,d8Vs1%g;s1&*4s/#abs,m>7s*=W_rrE(%s%r_dq0r-'pO7`YQ[\9#aaX'c
+JU[!8q>],sr;`15JcFR+rrAkpJ,~>
+JcF-trr at WMhuD*DqafVa];k\HK<"sQs/l7&rNH1(s0Ma5s1%mEs2tAcs3L_ns4./$s4IA+s5!_3
+s53k7s5F"8s4IA!s2k;Xs186:s/c6rs.01Ts,R,6s*t&ms)7pNk at 4C$s().>oj[r9s)\3fs*aor
+s+p]?s/5n-s31Mms4@;)s5*S1rrE#Vs53Xls3:Sbs2+fLs4..us3^kms3:SIs/h'VQcA at kai=/V
+J]@)sq>]-frCE9pJcFR+rrAkpJ,~>
+JcF-trr at WMhuD)QqZ,N&]0?%>JNiHbq0qKjs$6TSs%iYqs'G_:s)%dXs*Od!s,?uBs-s%_s/Q+(
+s1&*Cs186>s0Vg2s/l=$s/5mms.KC_s-itSs-!DLs.B=gs/uC*rNQ=,s1JB at s02O%rMfgis-*J6
+s)7pBs&8qns%35Xq*+fYq`ah)q*+P%K0GWNli5(Uq>Z"pm=+m2fm`l"Q[XMch>dKTV#Pr~>
+JcF-trr at WMhuD)QqZ,N&]0?%>JNiHbq0r?0s%*/^s%NGgs&]5-s'u(Bs)S-ds+LE3s-E\Ts.]Oe
+rLEnYs-WhFs+C?$s*=Was(VLAs'5S+s&8qss&K)&s'P_7s'Yk<s(VLFs'Yk2s'5S(s%`Sas$-NY
+s'PeGs+:9's+gW4s,d8Vs1%g;s1&*4s/#abs,m>7s*=W_rrE(%s%r_dq0r-'pO7`YQ[\9#aaX'c
+JU[!8q>],sr;`15JcFR+rrAkpJ,~>
+JcF-trr at WMhuD*DqafVa];k\HK<"sQs/l7&rNH1(s0Ma5s1%mEs2tAcs3L_ns4./$s4IA+s5!_3
+s53k7s5F"8s4IA!s2k;Xs186:s/c6rs.01Ts,R,6s*t&ms)7pNk at 4C$s().>oj[r9s)\3fs*aor
+s+p]?s/5n-s31Mms4@;)s5*S1rrE#Vs53Xls3:Sbs2+fLs4..us3^kms3:SIs/h'VQcA at kai=/V
+J]@)sq>]-frCE9pJcFR+rrAkpJ,~>
+JcF-trr at WMhuDAYq#K)s]0?%>JNiHbq0q?fs$-NQs%`Sos'5S7s(hXVs*ap$s,?uAs.'+as/H%&
+s0hs at s1A<@s0Vg2s/uC&s/>sns.TI`s-WhXs/#ass/H%$s0_m9s1&*?s0D[*s.fUis.B=Ts+^Pq
+s'l",s%r_hs%!)Uq*+fYq`ah)q*+P%JNj)tUOM&!c[P]iJU[!8q>\uor;`=9JcFR+rrAkpJ,~>
+JcF-trr at WMhuDAYq#K)s]0?%>JNiHbq0r?/s$ZlVs%*/_s&8r#s'5S4s(hXVs*Xj!s,I&Gs.fOg
+rMBOes-<VGs,?u4s*juks)7pPs(;:>s'>Y0s'bq>s(hXLs(q^Ts*"E_s)%dOs(q^Is'G_,s%iZ"
+s(hX^s,I&?s-3PNs.01ppV-[>s0D[(s.B=Ws,?u/s*"EYrrE("s%iYbq0r-'pO7ZWs$!3,h>bfM
+q>Z"pm=+m2eUIGsRsoqgh>dKTV#Pr~>
+JcF-trr at WMhuDBLq+02Y];k\HK<"mOrN6%$rNH7,s0Vg8pW!6Ss31Mhs3gqss475's4dS/s5!_3
+rS[Y5s4RG#s3(G[s1JB=s/l<ts.97Ws,[27s*t&ns)J'Rs'tM,s()(@s(;:Bs(_RHs'u":s(;:M
+s*=Wrs+C?.s-<VYs0VgGs4%)"s4RG-s53Y2rrE)Xs5<q6q8WHXs2P)Ss1A<]s3q"qs3L_is0)I)
+K;t]dh>bg at q>Z#cmDeu%e].PYS&U$Zh>dKTV#Pr~>
+JcF-trr at WMhuDAYq#K)s]0?%>JNiHbq0q?fs$-NQs%`Sos'5S7s(hXVs*ap$s,?uAs.'+as/H%&
+s0hs at s1A<@s0Vg2s/uC&s/>sns.TI`s-WhXs/#ass/H%$s0_m9s1&*?s0D[*s.fUis.B=Ts+^Pq
+s'l",s%r_hs%!)Uq*+fYq`ah)q*+P%JNj)tUOM&!c[P]iJU[!8q>\uor;`=9JcFR+rrAkpJ,~>
+JcF-trr at WMhuDAYq#K)s]0?%>JNiHbq0r?/s$ZlVs%*/_s&8r#s'5S4s(hXVs*Xj!s,I&Gs.fOg
+rMBOes-<VGs,?u4s*juks)7pPs(;:>s'>Y0s'bq>s(hXLs(q^Ts*"E_s)%dOs(q^Is'G_,s%iZ"
+s(hX^s,I&?s-3PNs.01ppV-[>s0D[(s.B=Ws,?u/s*"EYrrE("s%iYbq0r-'pO7ZWs$!3,h>bfM
+q>Z"pm=+m2eUIGsRsoqgh>dKTV#Pr~>
+JcF-trr at WMhuDBLq+02Y];k\HK<"mOrN6%$rNH7,s0Vg8pW!6Ss31Mhs3gqss475's4dS/s5!_3
+rS[Y5s4RG#s3(G[s1JB=s/l<ts.97Ws,[27s*t&ns)J'Rs'tM,s()(@s(;:Bs(_RHs'u":s(;:M
+s*=Wrs+C?.s-<VYs0VgGs4%)"s4RG-s53Y2rrE)Xs5<q6q8WHXs2P)Ss1A<]s3q"qs3L_is0)I)
+K;t]dh>bg at q>Z#cmDeu%e].PYS&U$Zh>dKTV#Pr~>
+JcF-trr at WMhuDYaq#Jfk]0?%>JNiHbq0q-`s$cr]s&B#'s(24Js*"Ejs+UK5s-<VRs.]Ols/uC0
+s1JBDs1&*:s0D[.s/Z0us.fUcs.o[qs/uBss/>t$s0hs>s0_m/s/,ads-!D:s*=WWs&B"ps%WMb
+s$ZlOq*+fYq`ah)q*+P%JNj#rXa\[tdsh,mJU[!8q>\ikr;`I=JcFR+rrAkpJ,~>
+JcF-trr at WMhuDYaq#Jfk]0?%>JNiHbq0r?-s$6TNs$ZlWs%iYms&K)&s'u(Gs)S-as+C?3s-`n\
+s/Z+#s/>sls.97Ys-*J at s+LE$s*4Qcs)7pPs(VLLs).jWs)e9ds*ap!s*jons*Xiis).jLs'PeC
+s*Xj(s-NbVs.TIhs/Pb+s0_m.s.fU^s,d89s*aogs(VK5s&K(os$lg5q*+P%JNj#rXa\[tdsh,m
+JU[!8q>\ikr;`I=JcFR+rrAkpJ,~>
+JcF-trr at WMhuDZTq+/oQ];k\HK<"mNrN,t"rN?1*s0Ma5q8WHOs2P)\s31Mhs3^krs4@;(s4[M-
+s5!Y2rS[Y5s4dS&s31M]s1SH at s/uC"s.97Vs,R,7s+(,qs)\3Us((e3s'u(@rFu:Fs(VLSs)A!S
+s(MFDs(q^Ys*t')s,-iBs.]Oss2"`bs475&s4dS1pYl,Ps5<q7s5!Ljs2k;Zs1\NFs4..us3^km
+s3:SIs/gjPXiAcge&M4`J]@)sq>\j^rCER#JcFR+rrAkpJ,~>
+JcF-trr at WMhuDYaq#Jfk]0?%>JNiHbq0q-`s$cr]s&B#'s(24Js*"Ejs+UK5s-<VRs.]Ols/uC0
+s1JBDs1&*:s0D[.s/Z0us.fUcs.o[qs/uBss/>t$s0hs>s0_m/s/,ads-!D:s*=WWs&B"ps%WMb
+s$ZlOq*+fYq`ah)q*+P%JNj#rXa\[tdsh,mJU[!8q>\ikr;`I=JcFR+rrAkpJ,~>
+JcF-trr at WMhuDYaq#Jfk]0?%>JNiHbq0r?-s$6TNs$ZlWs%iYms&K)&s'u(Gs)S-as+C?3s-`n\
+s/Z+#s/>sls.97Ys-*J at s+LE$s*4Qcs)7pPs(VLLs).jWs)e9ds*ap!s*jons*Xiis).jLs'PeC
+s*Xj(s-NbVs.TIhs/Pb+s0_m.s.fU^s,d89s*aogs(VK5s&K(os$lg5q*+P%JNj#rXa\[tdsh,m
+JU[!8q>\ikr;`I=JcFR+rrAkpJ,~>
+JcF-trr at WMhuDZTq+/oQ];k\HK<"mNrN,t"rN?1*s0Ma5q8WHOs2P)\s31Mhs3^krs4@;(s4[M-
+s5!Y2rS[Y5s4dS&s31M]s1SH at s/uC"s.97Vs,R,7s+(,qs)\3Us((e3s'u(@rFu:Fs(VLSs)A!S
+s(MFDs(q^Ys*t')s,-iBs.]Oss2"`bs475&s4dS1pYl,Ps5<q7s5!Ljs2k;Zs1\NFs4..us3^km
+s3:SIs/gjPXiAcge&M4`J]@)sq>\j^rCER#JcFR+rrAkpJ,~>
+JcF-trr at WMhuDkgqZ+`e]0?%>JNiHbq0q!\s$Zl]s&T/,s(D at Ls*+Kms+gW6s-*JMs.B=gs/l=-
+s186Cs1/0<s0D[-s/H$os/Q+(s/>sgs.]Oms02O*s/H$qs.TI\s,m>8s*=W\s'#G!s%WMcs$m#S
+pHJTWq`ah)q*+P%JNj#rZ[Tspf7*PqJU[!8q>\]gr;`UAJcFR+rrAkpJ,~>
+JcF-trr at WMhuDkgqZ+`e]0?%>JNiHbq0r3)s$6TOs%*/_s%`Sms'5S6s(MFMs*=Wts,?uBs.97h
+s0D[2s0)I's/5mis-`nMs,?u4s+:9!rHJ9es*Ocns*t'&s,$c9rJUW5s+^Q&s*+K^s*ap+s-s%Y
+s.o[rs0D[6pV-[<s0)I"s.01Rs,-i-s*+K\s()-0s&B"ls$ca4q*+P%JNj#rZ[Tspf7*PqJU[!8
+q>\]gr;`UAJcFR+rrAkpJ,~>
+JcF-trr at WMhuDlZqaeiK];k\HJZAaMrN#murN6+(s0D[2q8WHMs24lVs2k;bs3L_ns4./$s4IA*
+s4mY2rSRY5q;MA/s4..os2P)Qs0hs1s/#ads-E\Gs,-i/s*Xigs)%dIq-sA8s(M at Hs(_RSs*Xil
+s)n?]s)e9ds*t'&s,R,Gs.fUts1JBWs4@;'s4[M/s5<Y1rrE)Vs5*e2q8WHTs2+fLs1A<]s3q"q
+s3L_is0)I)JZ?&ra8ac2q>Z#cmDeu%c,T]QUW.lbh>dKTV#Pr~>
+JcF-trr at WMhuDkgqZ+`e]0?%>JNiHbq0q!\s$Zl]s&T/,s(D at Ls*+Kms+gW6s-*JMs.B=gs/l=-
+s186Cs1/0<s0D[-s/H$os/Q+(s/>sgs.]Oms02O*s/H$qs.TI\s,m>8s*=W\s'#G!s%WMcs$m#S
+pHJTWq`ah)q*+P%JNj#rZ[Tspf7*PqJU[!8q>\]gr;`UAJcFR+rrAkpJ,~>
+JcF-trr at WMhuDkgqZ+`e]0?%>JNiHbq0r3)s$6TOs%*/_s%`Sms'5S6s(MFMs*=Wts,?uBs.97h
+s0D[2s0)I's/5mis-`nMs,?u4s+:9!rHJ9es*Ocns*t'&s,$c9rJUW5s+^Q&s*+K^s*ap+s-s%Y
+s.o[rs0D[6pV-[<s0)I"s.01Rs,-i-s*+K\s()-0s&B"ls$ca4q*+P%JNj#rZ[Tspf7*PqJU[!8
+q>\]gr;`UAJcFR+rrAkpJ,~>
+JcF-trr at WMhuDlZqaeiK];k\HJZAaMrN#murN6+(s0D[2q8WHMs24lVs2k;bs3L_ns4./$s4IA*
+s4mY2rSRY5q;MA/s4..os2P)Qs0hs1s/#ads-E\Gs,-i/s*Xigs)%dIq-sA8s(M at Hs(_RSs*Xil
+s)n?]s)e9ds*t'&s,R,Gs.fUts1JBWs4@;'s4[M/s5<Y1rrE)Vs5*e2q8WHTs2+fLs1A<]s3q"q
+s3L_is0)I)JZ?&ra8ac2q>Z#cmDeu%c,T]QUW.lbh>dKTV#Pr~>
+JcF-trr at WMhuE.oq#J<]]0?%>JNiHbq0q!\s$-NLs%!)cs&f;/s(VLQs*=Wos+LE/s,[2Gs.01b
+s/Q+(s1/0Cs1&*9s0)I&s02O+s.]O[s.'+as.o[es-s%Ts-3PGs+LDss(q^Bs%r_is%<;]s$HBB
+rrDp[q0r-'pO7ZWrB at iB]DpW7q>Z"pm=+m2aaX0gVga3sh>dKTV#Pr~>
+JcF-trr at WMhuE.oq#J<]]0?%>JNiHbq0r'%s$?ZQs%!)_s&B#$s'>Y8s)7p_s*t'(s,m>Ns/#au
+s0hs;s0Vg.s/5mis-itQs,d8<rIk3*s+p].s+gW7s-3PPrL<bUs-E\Gs+gW)s,I&Ks.o[gs/H%'
+s1&*Aq7cmAs0Ma)s.KCYs,I&3s*F]bs(MF=rrE'ss%EA[q0r-'pO7ZWrB at iB]DpW7q>Z"pm=+m2
+aaX0gVga3sh>dKTV#Pr~>
+JcF-trr at WMhuE/bq+/EC];k\HJZAUIrN#mus0)I,s0;C>s1\NLs2=rXs2tAds3Ueps4./#s4RG,
+s5!Y1s5<S/s5!_+s3CYas1SH>s/c6ss.B=[s-*JAs+LE#s)n?Zs(D@@s().Bs(_LLs)S-es+^Q+
+rI4d!s,$c9s-*JKs.o\!s1JBRs4IA)s4[M-s53M.rrE)Vs5!_0q8WHRs1eTIs1A<]s3q"qs3L_i
+s0)I)JZ??%]DpX*q>Z#cmDeu%ai=9MVoF;fh>dKTV#Pr~>
+JcF-trr at WMhuE.oq#J<]]0?%>JNiHbq0q!\s$-NLs%!)cs&f;/s(VLQs*=Wos+LE/s,[2Gs.01b
+s/Q+(s1/0Cs1&*9s0)I&s02O+s.]O[s.'+as.o[es-s%Ts-3PGs+LDss(q^Bs%r_is%<;]s$HBB
+rrDp[q0r-'pO7ZWrB at iB]DpW7q>Z"pm=+m2aaX0gVga3sh>dKTV#Pr~>
+JcF-trr at WMhuE.oq#J<]]0?%>JNiHbq0r'%s$?ZQs%!)_s&B#$s'>Y8s)7p_s*t'(s,m>Ns/#au
+s0hs;s0Vg.s/5mis-itQs,d8<rIk3*s+p].s+gW7s-3PPrL<bUs-E\Gs+gW)s,I&Ks.o[gs/H%'
+s1&*Aq7cmAs0Ma)s.KCYs,I&3s*F]bs(MF=rrE'ss%EA[q0r-'pO7ZWrB at iB]DpW7q>Z"pm=+m2
+aaX0gVga3sh>dKTV#Pr~>
+JcF-trr at WMhuE/bq+/EC];k\HJZAUIrN#mus0)I,s0;C>s1\NLs2=rXs2tAds3Ueps4./#s4RG,
+s5!Y1s5<S/s5!_+s3CYas1SH>s/c6ss.B=[s-*JAs+LE#s)n?Zs(D@@s().Bs(_LLs)S-es+^Q+
+rI4d!s,$c9s-*JKs.o\!s1JBRs4IA)s4[M-s53M.rrE)Vs5!_0q8WHRs1eTIs1A<]s3q"qs3L_i
+s0)I)JZ??%]DpX*q>Z#cmDeu%ai=9MVoF;fh>dKTV#Pr~>
+JcF-trr at WMhuEG"q#J$U]0?%>JNiHbq0q!\s$-NLs$QfTs%<;hs',M5s(_RQs)n?fs+(-)s,R,C
+s-it]s/H%&s0hs=s0_m2s0Ma(s.'+Os-E\Ts-E\Hs,I&8rJ(>ts(q^As&&ejs%<;]s$ZlOofiBU
+q`ah)q*+P%JNj#r_g\fhhgYD$JU[!8q>\E_qZ*aIJcFR+rrAkpJ,~>
+JcF-trr at WMhuEG"q#J$U]0?%>JNiHbq0qp!s$6TQs%<;es&8r$s(24Hs)S-cs+LE4s-NbXs/>t%
+s1/0As0_m1s/>sms.97XrK7,Ds-!DAs,d8Hs.'+^s/#arrN-$rs.B=Xs,d8Os/Z1!s/,h!s0hs@
+s0r$=s1A6Ds0hs0s.fU_s,m>:s*juis(hXDs'#F&s%`Sas$?I0q*+P%JNj#r_g\fhhgYD$JU[!8
+q>\E_qZ*aIJcFR+rrAkpJ,~>
+JcF-trr at WMhuEGjq+/-;];k\HJZAIErN#t#s/uC*q8WHIs1eTNs2G#Ys2tAes3^kqs4./%s4[M.
+s5!_3s5<G+s5*e+s31M\s1A<=s02O's.fUas-3PCs+^Q&s*+K]s(hXKs(q^Rs)J'cs+UK6s,?u6
+s,I&Bs-WhWs.]Oes/uC7s2tAns4[M-s4mY1s5<S/rrE)Vs5!_0q8WHPs1eTIs1A<]s3q"qs3L_i
+s0)I)JZ?W-YQ*M"q>Z#cmDeu%`Q%dGXi>qlh>dKTV#Pr~>
+JcF-trr at WMhuEG"q#J$U]0?%>JNiHbq0q!\s$-NLs$QfTs%<;hs',M5s(_RQs)n?fs+(-)s,R,C
+s-it]s/H%&s0hs=s0_m2s0Ma(s.'+Os-E\Ts-E\Hs,I&8rJ(>ts(q^As&&ejs%<;]s$ZlOofiBU
+q`ah)q*+P%JNj#r_g\fhhgYD$JU[!8q>\E_qZ*aIJcFR+rrAkpJ,~>
+JcF-trr at WMhuEG"q#J$U]0?%>JNiHbq0qp!s$6TQs%<;es&8r$s(24Hs)S-cs+LE4s-NbXs/>t%
+s1/0As0_m1s/>sms.97XrK7,Ds-!DAs,d8Hs.'+^s/#arrN-$rs.B=Xs,d8Os/Z1!s/,h!s0hs@
+s0r$=s1A6Ds0hs0s.fU_s,m>:s*juis(hXDs'#F&s%`Sas$?I0q*+P%JNj#r_g\fhhgYD$JU[!8
+q>\E_qZ*aIJcFR+rrAkpJ,~>
+JcF-trr at WMhuEGjq+/-;];k\HJZAIErN#t#s/uC*q8WHIs1eTNs2G#Ys2tAes3^kqs4./%s4[M.
+s5!_3s5<G+s5*e+s31M\s1A<=s02O's.fUas-3PCs+^Q&s*+K]s(hXKs(q^Rs)J'cs+UK6s,?u6
+s,I&Bs-WhWs.]Oes/uC7s2tAns4[M-s4mY1s5<S/rrE)Vs5!_0q8WHPs1eTIs1A<]s3q"qs3L_i
+s0)I)JZ?W-YQ*M"q>Z#cmDeu%`Q%dGXi>qlh>dKTV#Pr~>
+JcF-trr at WMhuEY(qZ*sO]0?%>JNiHbq0q!\s$-NLs$QfTs$m#[s%NGms'5S4s(;:Hs)J'`s*ap"
+s,-i=s-`n[s/,gss0;U4s/l<ps-E\Cs,d8 at s+p],s*t&qs*F]ls).jEs&8qls%<;]s$ZlQo030S
+q`ah)q*+P%JNj#raaU)dj*ph(JU[!8q>\3Yr;a*OJcFR+rrAkpJ,~>
+JcF-trr at WMhuEY(qZ*sO]0?%>JNiHbq0qcrs$6TQs%35es&oA/s(24Hs*"Ems,$c<s-it^s/Q+)
+s1&*Bs0hs4s/Z0rs.B=_s.KC\s-<VOs.97es.TIis/l=/s1SH at s0)I$s.KCos02O+s/Z1+s1A<A
+s0D[3s0hs<s0r$3s/,ges-3PAs+12ps).jJs'5S)rrE'ks$QfMq0r-'pO7ZWrBA>PV>oS)q>Z"p
+m=+m2^OH+]Z$q9(h>dKTV#Pr~>
+JcF-trr at WMhuEYpqae'5];k\HJZA=As/Z1$s/l+:s186Ds1nZOs2=rXs3(Gfs3^krs4@;(s4dS/
+s5*e6n_sN+s5*e1s3gqjs2G#Rs186:s/c6ss.01Us,R,7s+(,rs*4Qds)J'bs+LE4s-WhOs-NbV
+s.]Oks/c7&s/Z10s2P)gs4[M.s5!_3s53G,rrE)Vs5!_/q8WHNs1eTIs1A<]s3q"qs3L_is0)I)
+JZ?i3V>oSqq>Z#cmDeu%^W-4CZ,V at ph>dKTV#Pr~>
+JcF-trr at WMhuEY(qZ*sO]0?%>JNiHbq0q!\s$-NLs$QfTs$m#[s%NGms'5S4s(;:Hs)J'`s*ap"
+s,-i=s-`n[s/,gss0;U4s/l<ps-E\Cs,d8 at s+p],s*t&qs*F]ls).jEs&8qls%<;]s$ZlQo030S
+q`ah)q*+P%JNj#raaU)dj*ph(JU[!8q>\3Yr;a*OJcFR+rrAkpJ,~>
+JcF-trr at WMhuEY(qZ*sO]0?%>JNiHbq0qcrs$6TQs%35es&oA/s(24Hs*"Ems,$c<s-it^s/Q+)
+s1&*Bs0hs4s/Z0rs.B=_s.KC\s-<VOs.97es.TIis/l=/s1SH at s0)I$s.KCos02O+s/Z1+s1A<A
+s0D[3s0hs<s0r$3s/,ges-3PAs+12ps).jJs'5S)rrE'ks$QfMq0r-'pO7ZWrBA>PV>oS)q>Z"p
+m=+m2^OH+]Z$q9(h>dKTV#Pr~>
+JcF-trr at WMhuEYpqae'5];k\HJZA=As/Z1$s/l+:s186Ds1nZOs2=rXs3(Gfs3^krs4@;(s4dS/
+s5*e6n_sN+s5*e1s3gqjs2G#Rs186:s/c6ss.01Us,R,7s+(,rs*4Qds)J'bs+LE4s-WhOs-NbV
+s.]Oks/c7&s/Z10s2P)gs4[M.s5!_3s53G,rrE)Vs5!_/q8WHNs1eTIs1A<]s3q"qs3L_is0)I)
+JZ?i3V>oSqq>Z#cmDeu%^W-4CZ,V at ph>dKTV#Pr~>
+JcF-trr at WMj8\oTXa[lGq0mlYm6:>pffoF#s$?ZPs$ZlUs%*/^rD!;is&]5*s'l"As)%dWs*F]r
+s+p]:s-E\Ss.TIjs.]O_s,d25s+(,qs)e9\s).jTs)A!Is&K(ks%EA_s$ZlQnNQsQq`ah)q*+P%
+JNj#rd=.G^l$iI.JU[!8q>\'Ur;a6SJcFR+rrAkpJ,~>
+JcF-trr at WMj8\oTXa[lGq0mlYm6:>plTY>5s$cr\s&&eus'Pe?s)S-cs+C?0s-3PRs.o[ps0;U5
+s1\NCs0D[+s/Z0us.]Oas.KChs/5mks/5n"s0hs<s186Ds1&*5s0r$9s0Ma0s1&*As0Vg.s0)I-
+s0Ma-s/#aes-E\Fs+LE!s)S-Qs'Pe.s&/jss$m#Qs$$7-q*+P%JNj#rd=.G^l$iI.JU[!8q>\'U
+r;a6SJcFR+rrAkpJ,~>
+JcF-trr at WMj8\uVs%'93];k\HJZA1=s/Yt8s1&*@s1SHIs2"`Rs2Y/_s3:Sks4./%s4[M.s5*e6
+n_sN+s5*e2rS.A&s3Uegs2=rMs0_m/s/,ggs-NbIs,6o5s+UK's+^Q5s-N\Xs/5mus0;U4s1/0=
+s0_mDs3Uf$s4dS0s5*e6n_sKJs53k4s4I.es2"`Ms1SHEs4..us3^kms3:SIs/gjPdDhOQl,NQ!
+J]@)sq>\(HrCF?9JcFR+rrAkpJ,~>
+JcF-trr at WMj8\oTXa[lGq0mlYm6:>pffoF#s$?ZPs$ZlUs%*/^rD!;is&]5*s'l"As)%dWs*F]r
+s+p]:s-E\Ss.TIjs.]O_s,d25s+(,qs)e9\s).jTs)A!Is&K(ks%EA_s$ZlQnNQsQq`ah)q*+P%
+JNj#rd=.G^l$iI.JU[!8q>\'Ur;a6SJcFR+rrAkpJ,~>
+JcF-trr at WMj8\oTXa[lGq0mlYm6:>plTY>5s$cr\s&&eus'Pe?s)S-cs+C?0s-3PRs.o[ps0;U5
+s1\NCs0D[+s/Z0us.]Oas.KChs/5mks/5n"s0hs<s186Ds1&*5s0r$9s0Ma0s1&*As0Vg.s0)I-
+s0Ma-s/#aes-E\Fs+LE!s)S-Qs'Pe.s&/jss$m#Qs$$7-q*+P%JNj#rd=.G^l$iI.JU[!8q>\'U
+r;a6SJcFR+rrAkpJ,~>
+JcF-trr at WMj8\uVs%'93];k\HJZA1=s/Yt8s1&*@s1SHIs2"`Rs2Y/_s3:Sks4./%s4[M.s5*e6
+n_sN+s5*e2rS.A&s3Uegs2=rMs0_m/s/,ggs-NbIs,6o5s+UK's+^Q5s-N\Xs/5mus0;U4s1/0=
+s0_mDs3Uf$s4dS0s5*e6n_sKJs53k4s4I.es2"`Ms1SHEs4..us3^kms3:SIs/gjPdDhOQl,NQ!
+J]@)sq>\(HrCF?9JcFR+rrAkpJ,~>
+JcF-trr at WMli6b\p]%FG]0?%>JNiHbq0q!\s$-NLs$H`Qs$ZlWs%3/^s%<;_s%WMks&f;,s'u(C
+s)J'`s+(-(s,6o>s-WhMs,6o1s*aoks)J'Ts(;:?s'u"<s&]4ms%*/]s$crSs$-$;rrDp[q0r-'
+pO7ZWrBAn`MuW0nq>Z"pm=+m2[sn8U\UK,0h>dKTV#Pr~>
+JcF-trr at WMli6b\p]%FG]0?%>JNiHbq0qEhs$ZlZs&/l$s().Gs)n?is+^Q6s-E\Ts.fUns02O3
+s1SHCs0hs3s/Q*qs/>t!s/>sms/>t%s0hs6s0Vg8s186Ds1JBCs1&*:s1SHAs0)I$s/Q+#s/>sm
+s-s%Qs,?u4s*jujs(q^Es',M&s%`Ros$?TIq0r-'pO7ZWrBAn`MuW0nq>Z"pm=+m2[sn8U\UK,0
+h>dKTV#Pr~>
+JcF-trr at WMli6b\p]%G:];k\HJZA+;q8WHCs1/0 at s1JBGs2"`Rs2Y/]s3:Sks4./&s4mY2s5<G+
+s5<q6s4mY/s4mY1s53k2s4%(ms2G#Ps0hs2s/5mis.'+Vs-<VEs-3PQs.fUps02O3s1A<Hs2G#U
+s2"`Ms31Mss5!_1s5*e5n)=9Hs53k2s47"cs1nZKs1JBDs4..us3^kms3:SIs/gjPfuAsMmDeu%
+J]@)sq>[qDrCFK=JcFR+rrAkpJ,~>
+JcF-trr at WMli6b\p]%FG]0?%>JNiHbq0q!\s$-NLs$H`Qs$ZlWs%3/^s%<;_s%WMks&f;,s'u(C
+s)J'`s+(-(s,6o>s-WhMs,6o1s*aoks)J'Ts(;:?s'u"<s&]4ms%*/]s$crSs$-$;rrDp[q0r-'
+pO7ZWrBAn`MuW0nq>Z"pm=+m2[sn8U\UK,0h>dKTV#Pr~>
+JcF-trr at WMli6b\p]%FG]0?%>JNiHbq0qEhs$ZlZs&/l$s().Gs)n?is+^Q6s-E\Ts.fUns02O3
+s1SHCs0hs3s/Q*qs/>t!s/>sms/>t%s0hs6s0Vg8s186Ds1JBCs1&*:s1SHAs0)I$s/Q+#s/>sm
+s-s%Qs,?u4s*jujs(q^Es',M&s%`Ros$?TIq0r-'pO7ZWrBAn`MuW0nq>Z"pm=+m2[sn8U\UK,0
+h>dKTV#Pr~>
+JcF-trr at WMli6b\p]%G:];k\HJZA+;q8WHCs1/0 at s1JBGs2"`Rs2Y/]s3:Sks4./&s4mY2s5<G+
+s5<q6s4mY/s4mY1s53k2s4%(ms2G#Ps0hs2s/5mis.'+Vs-<VEs-3PQs.fUps02O3s1A<Hs2G#U
+s2"`Ms31Mss5!_1s5*e5n)=9Hs53k2s47"cs1nZKs1JBDs4..us3^kms3:SIs/gjPfuAsMmDeu%
+J]@)sq>[qDrCFK=JcFR+rrAkpJ,~>
+JcF-trr at WMnc/Idli4;?]0?%>JNiHbq0q!\s$-HJs$H`Qs$m#ZrCR#[s%!)Ys$crYs%WMks&oA1
+s(MFOs)n?gs+:9-s+C?!rH8-Ws(24:s&f;&s&f5&s%NG]s$m#Ys$QfOmlpaOq`ah)q*+P%JNj#r
+hgU.VnUC<6JU[!8q>[dMr;aN[JcFR+rrAkpJ,~>
+JcF-trr at WMnc/Idli4;?]0?%>JNiHbq0q9ds$Zl]s&K)*s(D at Ms*4Qos+gW7s-3PQs.TIks/uC0
+s186?s0Ma-s02O*s/H$os/H%'s02O*s/uC,rNuU6s1A<ErOW$7s/Q*os/#aks.97Ys,m>=s+C?#
+s*"EZs(249s&]4ss%<:kq`ah)q*+P%JNj#rhgU.VnUC<6JU[!8q>[dMr;aN[JcFR+rrAkpJ,~>
+JcF-trr at WMnc/Idli4<2];k\HJZA+;q8WHAs0hs:s1/0As1\NLs24lUs2k;cs3^krs4IA,s5<G+
+s5<q6s5!_1s5!_3s5<k7s5!_*s3CYas1eTCs02O)s/>sms.'+`s/Q+(s0D[9s24lZs3L_ls3CYf
+s2k;mrSIS1s53k7n)=9Hs5*e/s4$kas1eTIs1A<Bs4..us3^kms3:SIs/gjPho:6In](D)J]@)s
+q>[e at rCFWAJcFR+rrAkpJ,~>
+JcF-trr at WMnc/Idli4;?]0?%>JNiHbq0q!\s$-HJs$H`Qs$m#ZrCR#[s%!)Ys$crYs%WMks&oA1
+s(MFOs)n?gs+:9-s+C?!rH8-Ws(24:s&f;&s&f5&s%NG]s$m#Ys$QfOmlpaOq`ah)q*+P%JNj#r
+hgU.VnUC<6JU[!8q>[dMr;aN[JcFR+rrAkpJ,~>
+JcF-trr at WMnc/Idli4;?]0?%>JNiHbq0q9ds$Zl]s&K)*s(D at Ms*4Qos+gW7s-3PQs.TIks/uC0
+s186?s0Ma-s02O*s/H$os/H%'s02O*s/uC,rNuU6s1A<ErOW$7s/Q*os/#aks.97Ys,m>=s+C?#
+s*"EZs(249s&]4ss%<:kq`ah)q*+P%JNj#rhgU.VnUC<6JU[!8q>[dMr;aN[JcFR+rrAkpJ,~>
+JcF-trr at WMnc/Idli4<2];k\HJZA+;q8WHAs0hs:s1/0As1\NLs24lUs2k;cs3^krs4IA,s5<G+
+s5<q6s5!_1s5!_3s5<k7s5!_*s3CYas1eTCs02O)s/>sms.'+`s/Q+(s0D[9s24lZs3L_ls3CYf
+s2k;mrSIS1s53k7n)=9Hs5*e/s4$kas1eTIs1A<Bs4..us3^kms3:SIs/gjPho:6In](D)J]@)s
+q>[e at rCFWAJcFR+rrAkpJ,~>
+JcF-trr at WMq>^6jiW$B9]0?%>JNiHbq0q!\s$-HIs$?ZOs$crWrC?lWrC-`Ss$H`Os$H`Ws&&eu
+s'Pe;s(hXTs*=Wds)%dMs)%dIs'>Y(s%`Sfs%WGes$H`Qs$ZlUs$?$9rrDp[q0r-'pO7ZWrBBCn
+JcGEComZ`:JU[!8q>[XIr;aZ_JcFR+rrAkpJ,~>
+JcF-trr at WMq>^6jiW$B9]0?%>JNiHbq0q9ds$-NLs%!)cs&f;0s(VLRs*=Wps+^Q5s-*JOs.KCi
+s/c7*rO)[3s/uC%s/#aqs/l=$s/5mqs/Z1%s/Z1&s0D[6s186<s/l<ts.97_s-itPs,[28s+(,r
+s*"E[s(249s&oA"s%NG^rrDp[q0r-'pO7ZWrBBCnJcGEComZ`:JU[!8q>[XIr;aZ_JcFR+rrAkp
+J,~>
+JcF-trr at WMq>^6jiW$C,];k\HJZA+;q8WH?s0Ma4s0hs:s1A<Es1\NLs2G#[s3:Sjs4%)$s4mY2
+s5<S/s5<q6rS at M1s53S0s5*e,s3L_ds1nZIs0r$5s/Q+'s1&*As1/0Gs2tAjrS%;(s4..uqqqG1
+s5<S/s5<e5rrE)Ss4@;!q8WHKs1JBCs1/0Zs3gqps3L_is0)I)JZ at nQJcGECou?h-J]@)sq>[Y<
+rCFcEJcFR+rrAkpJ,~>
+JcF-trr at WMq>^6jiW$B9]0?%>JNiHbq0q!\s$-HIs$?ZOs$crWrC?lWrC-`Ss$H`Os$H`Ws&&eu
+s'Pe;s(hXTs*=Wds)%dMs)%dIs'>Y(s%`Sfs%WGes$H`Qs$ZlUs$?$9rrDp[q0r-'pO7ZWrBBCn
+JcGEComZ`:JU[!8q>[XIr;aZ_JcFR+rrAkpJ,~>
+JcF-trr at WMq>^6jiW$B9]0?%>JNiHbq0q9ds$-NLs%!)cs&f;0s(VLRs*=Wps+^Q5s-*JOs.KCi
+s/c7*rO)[3s/uC%s/#aqs/l=$s/5mqs/Z1%s/Z1&s0D[6s186<s/l<ts.97_s-itPs,[28s+(,r
+s*"E[s(249s&oA"s%NG^rrDp[q0r-'pO7ZWrBBCnJcGEComZ`:JU[!8q>[XIr;aZ_JcFR+rrAkp
+J,~>
+JcF-trr at WMq>^6jiW$C,];k\HJZA+;q8WH?s0Ma4s0hs:s1A<Es1\NLs2G#[s3:Sjs4%)$s4mY2
+s5<S/s5<q6rS at M1s53S0s5*e,s3L_ds1nZIs0r$5s/Q+'s1&*As1/0Gs2tAjrS%;(s4..uqqqG1
+s5<S/s5<e5rrE)Ss4@;!q8WHKs1JBCs1/0Zs3gqps3L_is0)I)JZ at nQJcGECou?h-J]@)sq>[Y<
+rCFcEJcFR+rrAkpJ,~>
+JcF-trr at WMq#JtF]7. at Uq0mlYm6:>pf09-ts$6TMs$QfSrC-`Ss$QfSs$QfPs$6NHs$6TTs%iYp
+s'5S6s(_RFs'G_6s(249s&K"ks%*/YrBpTMs$?ZOs$QfNm6:OMq`ah)q*+P%JNj#rms]ifl2UR.
+q>Z"pm=+m2X+'pGa*rU>h>dKTV#Pr~>
+JcF-trr at WMq#JtF]7. at Uq0mlYm6:>piBI9+s$?ZPs$cr[s&8r%s().Fs)S-as*t'&s,?u at s-`nY
+s.]Oks/c1&s/Z0ss/Z0ts.o[gs.]Ois.fUgs/#aprN?1"s/#ags-`nPs,d8<s+UK$s*4Qbs).jK
+s'>Y,s&K(os%*/VrrDp[q0r-'pO7ZWrBB\!JcG!7q0r/>JU[!8q>[LEqZ+ZcJcFR+rrAkpJ,~>
+JcF-trr at WMq#JtF]>hI_q8RucmAg!%rNZC.s0Ma4s0r$=s186Ds2"`Ss2b5as3Ueqs4@;(s4dS1
+s5<_3s5<q7rSIS3s5<M-s53k/s3Ueis2G#Qs1&*Cs2P)Vs1nZUs3^l#s4dS/s5*e5s5!Y3rSR;,
+s5<q7rS[_7rrE)Qs4..rq8WHJs1A<As1&*Xs3^kns3CYhs/uC(JZA1YJcG!7q8W71J]@)sq>[M8
+qaecIJcFR+rrAkpJ,~>
+JcF-trr at WMq#JtF]7. at Uq0mlYm6:>pf09-ts$6TMs$QfSrC-`Ss$QfSs$QfPs$6NHs$6TTs%iYp
+s'5S6s(_RFs'G_6s(249s&K"ks%*/YrBpTMs$?ZOs$QfNm6:OMq`ah)q*+P%JNj#rms]ifl2UR.
+q>Z"pm=+m2X+'pGa*rU>h>dKTV#Pr~>
+JcF-trr at WMq#JtF]7. at Uq0mlYm6:>piBI9+s$?ZPs$cr[s&8r%s().Fs)S-as*t'&s,?u at s-`nY
+s.]Oks/c1&s/Z0ss/Z0ts.o[gs.]Ois.fUgs/#aprN?1"s/#ags-`nPs,d8<s+UK$s*4Qbs).jK
+s'>Y,s&K(os%*/VrrDp[q0r-'pO7ZWrBB\!JcG!7q0r/>JU[!8q>[LEqZ+ZcJcFR+rrAkpJ,~>
+JcF-trr at WMq#JtF]>hI_q8RucmAg!%rNZC.s0Ma4s0r$=s186Ds2"`Ss2b5as3Ueqs4@;(s4dS1
+s5<_3s5<q7rSIS3s5<M-s53k/s3Ueis2G#Qs1&*Cs2P)Vs1nZUs3^l#s4dS/s5*e5s5!Y3rSR;,
+s5<q7rS[_7rrE)Qs4..rq8WHJs1A<As1&*Xs3^kns3CYhs/uC(JZA1YJcG!7q8W71J]@)sq>[M8
+qaecIJcFR+rrAkpJ,~>
+JcF-trr at oUq#JP:^OEdYq0mlYm6:>pdm!drs$6TMs$HZOrBgNOs$H`Ns$-<Cs$-NQs%WMms',M(
+s&K)%s'5S(s%WMbs%<;\s$QfOrBC6Gs$6TMlTY=Kq`ah)q*+P%JNj#rpO7\nh>dG&q>Z"pm=+m2
+V1/@CbC5$Bh>dKTV#Pr~>
+JcF-trr at oUq#JP:^OEdYq0mlYm6:>piBI9+s$?ZPs$crWs%35bs&T/*s().Es)J'_s*k!$s,6o=
+s-3POs.01_s.fUjs/5mns.TIas-rtWs-itTs.'+^rM'=_s-`nOs,m>>s+^Q(s*F]es)7pQs(;::
+s&T/!s&&egs$ZlNrrDp[q0r-'pO7ZWrBBt)JcFR+rI4SBJU[!8q>[:?r;b#iJcFR+rrAkpJ,~>
+JcF-trr at oUq#JP:^W*mcq8RucmAg!%rNQ1(s0Ma4s0hs<s1SHKs2=rYs31Mis3gqss475's4dS0
+s5<k7rS[Y3s5<;'s5<q2s4%(ns2Y/`s3CYes2Y/cs4I;*s5!_4s5<e5rS[A-s5<_1rrE)Ns3q"n
+q8WHIs186?s0r$Vs3Uels3:Ses/l=&JZAIaJcFR+rPn[5J]@)sq>[;2rCG,OJcFR+rrAkpJ,~>
+JcF-trr at oUq#JP:^OEdYq0mlYm6:>pdm!drs$6TMs$HZOrBgNOs$H`Ns$-<Cs$-NQs%WMms',M(
+s&K)%s'5S(s%WMbs%<;\s$QfOrBC6Gs$6TMlTY=Kq`ah)q*+P%JNj#rpO7\nh>dG&q>Z"pm=+m2
+V1/@CbC5$Bh>dKTV#Pr~>
+JcF-trr at oUq#JP:^OEdYq0mlYm6:>piBI9+s$?ZPs$crWs%35bs&T/*s().Es)J'_s*k!$s,6o=
+s-3POs.01_s.fUjs/5mns.TIas-rtWs-itTs.'+^rM'=_s-`nOs,m>>s+^Q(s*F]es)7pQs(;::
+s&T/!s&&egs$ZlNrrDp[q0r-'pO7ZWrBBt)JcFR+rI4SBJU[!8q>[:?r;b#iJcFR+rrAkpJ,~>
+JcF-trr at oUq#JP:^W*mcq8RucmAg!%rNQ1(s0Ma4s0hs<s1SHKs2=rYs31Mis3gqss475's4dS0
+s5<k7rS[Y3s5<;'s5<q2s4%(ns2Y/`s3CYes2Y/cs4I;*s5!_4s5<e5rS[A-s5<_1rrE)Ns3q"n
+q8WHIs186?s0r$Vs3Uels3:Ses/l=&JZAIaJcFR+rPn[5J]@)sq>[;2rCG,OJcFR+rrAkpJ,~>
+JcF-trrA,[qZ+8.`I>E_q0mlYm6:>pcT_ at ns$6BGs$H`Os$-$;s$cr]s%35bs&&eqs%WM_rC?lU
+s$>O+rrDp[q0r-'pO7ZWrBC1/JcEpnJU[!8q>[.;r;b/mJcFR+rrAkpJ,~>
+JcF-trrA,[qZ+8.`I>E_q0mlYm6:>piBI9+s$?ZPs$ZlUs%*/^s%WMhs&K)(s'l"Bs)7p\s*Xiu
+s+^Q3s,[2Cs-<VNs-inUs-WhNs-<VJs,m>Bs-*JLrKdJGs,I&7s+gW*s*Xiis)A!Ss(D at As'G_*
+s&/kns%WM_s$6TJrrDp[q0r-'pO7ZWrBC1/JcEpnJU[!8q>[.;r;b/mJcFR+rrAkpJ,~>
+JcF-trrA,[qZ+8.`Q#Niq8RucmAg!%rNH+&rNZC.s0_m;s1JBIs2=rYs3(Ges3L_ms4%)"s4IA+
+s5!_4rSd_5jl-6os4./%s4..ss3CYqs5*_1s5*e6lf%m%s53_1s4mVSs3q"os3(5Xs1A<As0r$:
+s3^kms3CYgs2tACs/U^NrPjEgbQ!.5mDeu%TuR%%cc1P9h>dKTV#Pr~>
+JcF-trrA,[qZ+8.`I>E_q0mlYm6:>pcT_ at ns$6BGs$H`Os$-$;s$cr]s%35bs&&eqs%WM_rC?lU
+s$>O+rrDp[q0r-'pO7ZWrBC1/JcEpnJU[!8q>[.;r;b/mJcFR+rrAkpJ,~>
+JcF-trrA,[qZ+8.`I>E_q0mlYm6:>piBI9+s$?ZPs$ZlUs%*/^s%WMhs&K)(s'l"Bs)7p\s*Xiu
+s+^Q3s,[2Cs-<VNs-inUs-WhNs-<VJs,m>Bs-*JLrKdJGs,I&7s+gW*s*Xiis)A!Ss(D at As'G_*
+s&/kns%WM_s$6TJrrDp[q0r-'pO7ZWrBC1/JcEpnJU[!8q>[.;r;b/mJcFR+rrAkpJ,~>
+JcF-trrA,[qZ+8.`Q#Niq8RucmAg!%rNH+&rNZC.s0_m;s1JBIs2=rYs3(Ges3L_ms4%)"s4IA+
+s5!_4rSd_5jl-6os4./%s4..ss3CYqs5*_1s5*e6lf%m%s53_1s4mVSs3q"os3(5Xs1A<As0r$:
+s3^kms3CYgs2tACs/U^NrPjEgbQ!.5mDeu%TuR%%cc1P9h>dKTV#Pr~>
+JcF-trrADcq#I]"aaUicq0mlYm6:>pb<GkhrBUBKs$5m6s$?ZRs%*/`s$crUrC-`Qs$,C)rrDp[
+q0r-'pO7ZWrI0=ta8^^>m=+m2SUUM;dsclJh>dKTV#Pr~>
+JcF-trrADcq#I]"aaUicq0mlYm6:>piBI9+s$?ZOs$QfSs%!)\s%EAcs%WMgs&B#&s'bq at s).jX
+s*4Qls+13's+gW2s,Hi7s,?u8s+p]0s,-i7s,-i5s+UK(s*juqs*+K_s(q^Ls().:s',M(s%r_j
+s%NGas$HZJrrDp[q0r-'pO7ZWrI0=ta8^^>m=+m2SUUM;dsclJh>dKTV#Pr~>
+JcF-trrADcq#I]"ai:rmq8RucmAg!%rN?%$rNQ=,s0D[4s1&*As1nZPs2G#Zs2tAcs3L_ms3q#!
+s4IA+s5!_4h;SCks4mY,s4./*s53e3s53)"s53k5rS at M/s4I>Os3L_gs2b#Us186?s0hs8s3Uek
+s3:Ses2k;AK<"miJcEdjJ]@)sq>[#*rCGDWJcFR+rrAkpJ,~>
+JcF-trrADcq#I]"aaUicq0mlYm6:>pb<GkhrBUBKs$5m6s$?ZRs%*/`s$crUrC-`Qs$,C)rrDp[
+q0r-'pO7ZWrI0=ta8^^>m=+m2SUUM;dsclJh>dKTV#Pr~>
+JcF-trrADcq#I]"aaUicq0mlYm6:>piBI9+s$?ZOs$QfSs%!)\s%EAcs%WMgs&B#&s'bq at s).jX
+s*4Qls+13's+gW2s,Hi7s,?u8s+p]0s,-i7s,-i5s+UK(s*juqs*+K_s(q^Ls().:s',M(s%r_j
+s%NGas$HZJrrDp[q0r-'pO7ZWrI0=ta8^^>m=+m2SUUM;dsclJh>dKTV#Pr~>
+JcF-trrADcq#I]"ai:rmq8RucmAg!%rN?%$rNQ=,s0D[4s1&*As1nZPs2G#Zs2tAcs3L_ms3q#!
+s4IA+s5!_4h;SCks4mY,s4./*s53e3s53)"s53k5rS at M/s4I>Os3L_gs2b#Us186?s0hs8s3Uek
+s3:Ses2k;AK<"miJcEdjJ]@)sq>[#*rCGDWJcFR+rrAkpJ,~>
+JcF-trrA\kq#I8kc$m8gq0mlYm6:>pa$0Gds$6TKk<Ao2s$ZlQs$HZOs$5C(rrDp[q0r-'pO7r_
+omVJl`W(L<msb*4R=>)7f7&;Nh>dKTV#Pr~>
+JcF-trrA\kq#I8kc$m8gq0mlYm6:>piBI9+rB^HMs$QfUs%*/]s%<;as%NGes%`Sms'#G1s(24F
+s).jXs*"Ees*Xisqgnd"s+:9%s*t&ss*surs*aoms)n?`s)S-Vs(D:?s'G_.s&8qms%NGbs%*/X
+q`b#[q`ah)q*+P%M*CT]JcE^hJU[':q>Zk3r;bGuJcFR+rrAkpJ,~>
+JcF-trrA\kq#I8kc,RAqq8RucmAg!%rN5t"rNH7*s0;U1s0hs;s1JBGs1nZPs2G#Ys2tAcs3CYl
+s3q#"s4RG,s5!_4j5L$rrSde6s4mS2rSRY5p#5l-qr.S5s5*e3rS7G*s4%&Ks3(G_pW!6Cs0r$9
+s0VgPs3:Sfs2tA_M5p6gJcE^hJ]@/uq>Zl&rCGP[JcFR+rrAkpJ,~>
+JcF-trrA\kq#I8kc$m8gq0mlYm6:>pa$0Gds$6TKk<Ao2s$ZlQs$HZOs$5C(rrDp[q0r-'pO7r_
+omVJl`W(L<msb*4R=>)7f7&;Nh>dKTV#Pr~>
+JcF-trrA\kq#I8kc$m8gq0mlYm6:>piBI9+rB^HMs$QfUs%*/]s%<;as%NGes%`Sms'#G1s(24F
+s).jXs*"Ees*Xisqgnd"s+:9%s*t&ss*surs*aoms)n?`s)S-Vs(D:?s'G_.s&8qms%NGbs%*/X
+q`b#[q`ah)q*+P%M*CT]JcE^hJU[':q>Zk3r;bGuJcFR+rrAkpJ,~>
+JcF-trrA\kq#I8kc,RAqq8RucmAg!%rN5t"rNH7*s0;U1s0hs;s1JBGs1nZPs2G#Ys2tAcs3CYl
+s3q#"s4RG,s5!_4j5L$rrSde6s4mS2rSRY5p#5l-qr.S5s5*e3rS7G*s4%&Ks3(G_pW!6Cs0r$9
+s0VgPs3:Sfs2tA_M5p6gJcE^hJ]@/uq>Zl&rCGP[JcFR+rrAkpJ,~>
+JcF-trrAnqqZ*&ad=/\kq0mlYm6:>p_`n)biBI9+rBUBKgHPW;q`ah)q*+P%O$<#]JcERdJU[3>
+q>Z_/r;bT$JcFR+rrAkpJ,~>
+JcF-trrAnqqZ*&ad=/\kq0mlYm6:>piBI9+rBUBKs$H`Ss$m#Ys%*/]s%<;as%NGes%`Sls&]5*
+s'Yk<s(MFJs)7dUs)e9ds*4Qfs)n?`s)\-Zs)J'Us(hXLs(MFBqd'5(s&/kks%NGas$m#Vs$6HF
+rrDp[q0r-'pO8/ems]if_>f(8o7$N8Q%&Z3gO=_Rh>dKTV#Pr~>
+JcF-trrAnqqZ*&adDieuq8RucmAg!%rN,murN?1(s02O/s0_m9s1/0 at s1A<Fs1nZOs2G#Ys2k;b
+s3L_os4./$s4RG,s5!_4s5</#qr%;/rS[A-s5<k5rS[Y2s5!_1s4dS+s4%(qrrE)>s2G#Vq8WHD
+s0hs7s0MaNs31Mds2k;]O/hZgJcERdJ]@<$q>Z`"rCG\_JcFR+rrAkpJ,~>
+JcF-trrAnqqZ*&ad=/\kq0mlYm6:>p_`n)biBI9+rBUBKgHPW;q`ah)q*+P%O$<#]JcERdJU[3>
+q>Z_/r;bT$JcFR+rrAkpJ,~>
+JcF-trrAnqqZ*&ad=/\kq0mlYm6:>piBI9+rBUBKs$H`Ss$m#Ys%*/]s%<;as%NGes%`Sls&]5*
+s'Yk<s(MFJs)7dUs)e9ds*4Qfs)n?`s)\-Zs)J'Us(hXLs(MFBqd'5(s&/kks%NGas$m#Vs$6HF
+rrDp[q0r-'pO8/ems]if_>f(8o7$N8Q%&Z3gO=_Rh>dKTV#Pr~>
+JcF-trrAnqqZ*&adDieuq8RucmAg!%rN,murN?1(s02O/s0_m9s1/0 at s1A<Fs1nZOs2G#Ys2k;b
+s3L_os4./$s4RG,s5!_4s5</#qr%;/rS[A-s5<k5rS[Y2s5!_1s4dS+s4%(qrrE)>s2G#Vq8WHD
+s0hs7s0MaNs31Mds2k;]O/hZgJcERdJ]@<$q>Z`"rCG\_JcFR+rrAkpJ,~>
+JcF-trrB2$q#HKUeUG+oq0mlYm6:>pRm-j:gHPW;q`ah)q*+P%QTjS]JcEF`JU[?Bq>ZS+qZ,T(
+JcFR+rrAkpJ,~>
+JcF-trrB2$q#HKUeUG+oq0mlYm6:>piBI-'s$6TMs$QfSs$crWs%!)[s%35_s%EAcs%WMes%WMk
+s&T/&s'>Y5s(2. at s(_RPs).jRs(hXOs(hXJs(;:Bs'u(;s'Yk5s&oA&rE'"ss%NA`s%!)Ws$6BD
+rrDp[q0r-'pO8GmkC/!^^&NY4pO;r<Oad0-iI6 at Xh>dKTV#Pr~>
+JcF-trrB2$q#HKUe],5$q8RucmAg!%qlB[srN6+&s0)I-s0Vg7rO;g:s1/0As1SHJs2+fSs2Y/_
+s3L_ms3q"us4@;(s4dS/s5*e6n)=<)qqqG3s53k7n_sN+s53e3s53k5rS.;)s4IA$s3UeirrE);
+s24lRq8WHCs0_m5s0D[Ls3(Gbs2b5[Q`B5gJcEF`J]@H(q>ZSsqaf\cJcFR+rrAkpJ,~>
+JcF-trrB2$q#HKUeUG+oq0mlYm6:>pRm-j:gHPW;q`ah)q*+P%QTjS]JcEF`JU[?Bq>ZS+qZ,T(
+JcFR+rrAkpJ,~>
+JcF-trrB2$q#HKUeUG+oq0mlYm6:>piBI-'s$6TMs$QfSs$crWs%!)[s%35_s%EAcs%WMes%WMk
+s&T/&s'>Y5s(2. at s(_RPs).jRs(hXOs(hXJs(;:Bs'u(;s'Yk5s&oA&rE'"ss%NA`s%!)Ws$6BD
+rrDp[q0r-'pO8GmkC/!^^&NY4pO;r<Oad0-iI6 at Xh>dKTV#Pr~>
+JcF-trrB2$q#HKUe],5$q8RucmAg!%qlB[srN6+&s0)I-s0Vg7rO;g:s1/0As1SHJs2+fSs2Y/_
+s3L_ms3q"us4@;(s4dS/s5*e6n)=<)qqqG3s53k7n_sN+s53e3s53k5rS.;)s4IA$s3UeirrE);
+s24lRq8WHCs0_m5s0D[Ls3(Gbs2b5[Q`B5gJcEF`J]@H(q>ZSsqaf\cJcFR+rrAkpJ,~>
+JcGcMq#K1LrrBJ,q#H'Ifm^Osq0mlYm6:>pJNiZhrrDp[q0r-'pO8_uhgU.V\,V#.rI4SBMgkU)
+jaMd\h>dKTV#Pr~>
+JcGcMq#K1LrrBJ,q#H'Ifm^Osq0mlYm6:>pgHPX%s$6TMs$H`Qs$ZlUs$m#Ys%*/]s%<;as%<;_
+rCHr^s%r_ps&f;(s',M2s(24 at rF>k>s().<s'G_1s&f;&s&T/!s%iYkrDESgs%!#Ys$crSpHJTW
+q`ah)q*+P%T0D.]JcE4ZJU[QHq>ZA%r;br.JcFR+rrAkpJ,~>
+JcGcMq#K1LrrBJ,q#H'IfuCY(q8RucmAg!%ql9UqrN-%$s/uC+s0Ma4rO)[6s0r$<s1/0As1SHI
+s24lWs3(Ges3L_ms3q"us4@;'s4[M.s5*e6oAT`,q;2/-s5*_3s5<Y1s5<q6rS at M1s4dS,s4I;%
+s4%(qs31MarrE)9s2"`Nq8WHBs0Vg3s0;UJs2tA`s2Y/ZT;pegJcE4ZJ]@Z.q>ZAmrCH%iJcFR+
+rrAkpJ,~>
+JcGcMq#K1LrrBJ,q#H'Ifm^Osq0mlYm6:>pJNiZhrrDp[q0r-'pO8_uhgU.V\,V#.rI4SBMgkU)
+jaMd\h>dKTV#Pr~>
+JcGcMq#K1LrrBJ,q#H'Ifm^Osq0mlYm6:>pgHPX%s$6TMs$H`Qs$ZlUs$m#Ys%*/]s%<;as%<;_
+rCHr^s%r_ps&f;(s',M2s(24 at rF>k>s().<s'G_1s&f;&s&T/!s%iYkrDESgs%!#Ys$crSpHJTW
+q`ah)q*+P%T0D.]JcE4ZJU[QHq>ZA%r;br.JcFR+rrAkpJ,~>
+JcGcMq#K1LrrBJ,q#H'IfuCY(q8RucmAg!%ql9UqrN-%$s/uC+s0Ma4rO)[6s0r$<s1/0As1SHI
+s24lWs3(Ges3L_ms3q"us4@;'s4[M.s5*e6oAT`,q;2/-s5*_3s5<Y1s5<q6rS at M1s4dS,s4I;%
+s4%(qs31MarrE)9s2"`Nq8WHBs0Vg3s0;UJs2tA`s2Y/ZT;pegJcE4ZJ]@Z.q>ZAmrCH%iJcFR+
+rrAkpJ,~>
+JcGBCh>dKT]Dqa.JcGEChgW1$q0mlYm6:>pJNiZhrrDp[q0r-'pO8r&fm\MPZi>T*q>Z5!r;c)2
+JcFR+rrAkpJ,~>
+JcGBCh>dKT]Dqa.JcGEChgW1$q0mlYm6:>pf094!s$6TMs$H`Qs$ZlUs$m#Ys%*/]s%*/[s$m#W
+s$ZlSs%!)^s%NGis&T)%s&f;+s'Pe3s'#G(s&f;#s%r_hs%<;_s%<5_s$m#WrC6fSs$6<BrrDp[
+q0r-'pO8r&fm\MPZi>T*q>Z5!r;c)2JcFR+rrAkpJ,~>
+JcGBCh>dKT]Dqa.JcGECho<:.q8RucmAg!%pT"1ms/c7&s0)I-s0DU0s0Vg6s0hs:s1&*>s1A<G
+s24lWs2k;as3:Sis3^kqs4%)"s4IA*s4mY1s53Y2s5<q6qq_;-s4dS/s5!_3s5!_3s5<k7s5<q7
+s5!Y/s4dS+s475#s4%(ts3Ueis2b5YrrE)7s1eTJq8WHAs0Ma1s02OHs2k;^rPk\6fuAUCZi>Tr
+q>Z5irCH1mJcFR+rrAkpJ,~>
+JcGBCh>dKT]Dqa.JcGEChgW1$q0mlYm6:>pJNiZhrrDp[q0r-'pO8r&fm\MPZi>T*q>Z5!r;c)2
+JcFR+rrAkpJ,~>
+JcGBCh>dKT]Dqa.JcGEChgW1$q0mlYm6:>pf094!s$6TMs$H`Qs$ZlUs$m#Ys%*/]s%*/[s$m#W
+s$ZlSs%!)^s%NGis&T)%s&f;+s'Pe3s'#G(s&f;#s%r_hs%<;_s%<5_s$m#WrC6fSs$6<BrrDp[
+q0r-'pO8r&fm\MPZi>T*q>Z5!r;c)2JcFR+rrAkpJ,~>
+JcGBCh>dKT]Dqa.JcGECho<:.q8RucmAg!%pT"1ms/c7&s0)I-s0DU0s0Vg6s0hs:s1&*>s1A<G
+s24lWs2k;as3:Sis3^kqs4%)"s4IA*s4mY1s53Y2s5<q6qq_;-s4dS/s5!_3s5!_3s5<k7s5<q7
+s5!Y/s4dS+s475#s4%(ts3Ueis2b5YrrE)7s1eTJq8WHAs0Ma1s02OHs2k;^rPk\6fuAUCZi>Tr
+q>Z5irCH1mJcFR+rrAkpJ,~>
+KE(lMq>^BnhuE]V_uKN4JcG'9j*nU(q0mlYm6:>pJNiZhrrDp[q0r-'pO95.d=-ZHYQ'<*q>Z(r
+r;c56JcFR+rrAkpJ,~>
+KE(lMq>^BnhuE]V_uKN4JcG'9j*nU(q0mlYm6:>pdm!drs$6TMs$H`Qs$ZlUs$m#Ys$m#WrC$ZQ
+s$H`Ns$-NMs%!)_rD<Mks&K)$s&T.us&/krs%r_hs%*/ZrC$TQs$H`QrC$ZOofiBUq`ah)q*+P%
+XZk-]JcDqRKmrjtK7<b!m='Wdh>dKTV#Pr~>
+KE(lMq>^BnhuE]V_uKN4JcG'9j2S^2q8RucmAg!%o;_hks/c7's0)C*s0;U0s0Ma4s0_m8s0r$=
+s1JBHs24lUs2Y/]s3(Ges3L_ls3gqss47/$s4[M.s53k8s5<q7s5!Y/s4dS-s4RG+rS.A+s4dS0
+s5*_3s5*e2s4dS-s4IA%s3q"rs3^kms31Mas2=rQrrE)5s1SHEq8WH at s0D[/s0)IFs2b5\rPkt>
+dDgb;YQ'<rq>Z)erCH=qJcFR+rrAkpJ,~>
+KE(lMq>^BnhuE]V_uKN4JcG'9j*nU(q0mlYm6:>pJNiZhrrDp[q0r-'pO95.d=-ZHYQ'<*q>Z(r
+r;c56JcFR+rrAkpJ,~>
+KE(lMq>^BnhuE]V_uKN4JcG'9j*nU(q0mlYm6:>pdm!drs$6TMs$H`Qs$ZlUs$m#Ys$m#WrC$ZQ
+s$H`Ns$-NMs%!)_rD<Mks&K)$s&T.us&/krs%r_hs%*/ZrC$TQs$H`QrC$ZOofiBUq`ah)q*+P%
+XZk-]JcDqRKmrjtK7<b!m='Wdh>dKTV#Pr~>
+KE(lMq>^BnhuE]V_uKN4JcG'9j2S^2q8RucmAg!%o;_hks/c7's0)C*s0;U0s0Ma4s0_m8s0r$=
+s1JBHs24lUs2Y/]s3(Ges3L_ls3gqss47/$s4[M.s53k8s5<q7s5!Y/s4dS-s4RG+rS.A+s4dS0
+s5*_3s5*e2s4dS-s4IA%s3q"rs3^kms31Mas2=rQrrE)5s1SHEq8WH at s0D[/s0)IFs2b5\rPkt>
+dDgb;YQ'<rq>Z)erCH=qJcFR+rrAkpJ,~>
+KE(lMq>^BnhuE]VbQ%A<JcFX-kC1$,q0mlYm6:>pJNiZhrrDp[q0r-'pO9M6aaSg at X8e$*q>Z"p
+s*jnHnU?&hh>dKTV#Pr~>
+KE(lMq>^BnhuE]VbQ%A<JcFX-kC1$,q0mlYm6:>pcT_ at ns$6TMs$H`Qs$ZlUs$Z`Os$H`Os$-BE
+s$?ZSs%!)]s%`Sks%`Sgs%`Sjs%NG`s$ZlUs$QfPs$6TKs$6TMrBgNKofiBUq`ah)q*+P%[6D]]
+JcDeNM15:#JU[WJr;cA:JcFR+rrAkpJ,~>
+KE(lMq>^BnhuE]VbQ%A<JcFX-kJk-6q8RucmAg!%nZ)Vis/c7&rN?1(s02O.s0D[2s0Vg6s0r$>
+s1SHJs2+fRs2G#Ys2k;as3:Shs3UeorR:ess4@;)s4mS/s4mY/s4[M+s4IA'qq1r#s4IA*pY5`%
+s4@;$s3gqos3L_is3(G`s2=rQs1\L5s1JBDs1.sFs0D[0s0)I*s2k;]qo6%Dai8o3X8e$rq>Z#c
+s2P".n]$.[h>dKTV#Pr~>
+KE(lMq>^BnhuE]VbQ%A<JcFX-kC1$,q0mlYm6:>pJNiZhrrDp[q0r-'pO9M6aaSg at X8e$*q>Z"p
+s*jnHnU?&hh>dKTV#Pr~>
+KE(lMq>^BnhuE]VbQ%A<JcFX-kC1$,q0mlYm6:>pcT_ at ns$6TMs$H`Qs$ZlUs$Z`Os$H`Os$-BE
+s$?ZSs%!)]s%`Sks%`Sgs%`Sjs%NG`s$ZlUs$QfPs$6TKs$6TMrBgNKofiBUq`ah)q*+P%[6D]]
+JcDeNM15:#JU[WJr;cA:JcFR+rrAkpJ,~>
+KE(lMq>^BnhuE]VbQ%A<JcFX-kJk-6q8RucmAg!%nZ)Vis/c7&rN?1(s02O.s0D[2s0Vg6s0r$>
+s1SHJs2+fRs2G#Ys2k;as3:Shs3UeorR:ess4@;)s4mS/s4mY/s4[M+s4IA'qq1r#s4IA*pY5`%
+s4@;$s3gqos3L_is3(G`s2=rQs1\L5s1JBDs1.sFs0D[0s0)I*s2k;]qo6%Dai8o3X8e$rq>Z#c
+s2P".n]$.[h>dKTV#Pr~>
+L&_)Op&FsjiW&oXdJs(DJcF4!l[HH0q0mlYm6:>pJNiZhrrDp[q0r-'pO9_<_g[1:VuMa*q>Z"p
+qgSDBpO7\nh>dKTV#Pr~>
+L&_)Op&FsjiW&oXdJs(DJcF4!l[HH0q0mlYm6:>pb<Gqjs$6TMs$H`Qs$H`OrBgNMs$66 at s$6TO
+s$m#\s%!)\s%<;bs%*/Xs$QfSs$H`Ns$-HGrBL<Io030Sq`ah)q*+P%]0=,]JcDYJNIL^'JU[KF
+qZ-A>JcFR+rrAkpJ,~>
+L&_)Op&FsjiW&oXdJs(DJcF4!lc-Q:q8RucmAg!%mAg,cs/c7&s/uC*s02O.s0D[2s0_m:s1A<E
+s1eTLs2"`Qs2G#Ys2k;`s31Acs3Ueos4./$rRh)%s4IA's475#s47/!s4%)!p"05ps4%(ss3L_i
+s3(Gas2Y/Xs1nZJs1J at 3s186@s1%mEs0;U.s/uC(s2b#U];icgJcDYJNQ1eoJ]@T,qagJ$JcFR+
+rrAkpJ,~>
+L&_)Op&FsjiW&oXdJs(DJcF4!l[HH0q0mlYm6:>pJNiZhrrDp[q0r-'pO9_<_g[1:VuMa*q>Z"p
+qgSDBpO7\nh>dKTV#Pr~>
+L&_)Op&FsjiW&oXdJs(DJcF4!l[HH0q0mlYm6:>pb<Gqjs$6TMs$H`Qs$H`OrBgNMs$66 at s$6TO
+s$m#\s%!)\s%<;bs%*/Xs$QfSs$H`Ns$-HGrBL<Io030Sq`ah)q*+P%]0=,]JcDYJNIL^'JU[KF
+qZ-A>JcFR+rrAkpJ,~>
+L&_)Op&FsjiW&oXdJs(DJcF4!lc-Q:q8RucmAg!%mAg,cs/c7&s/uC*s02O.s0D[2s0_m:s1A<E
+s1eTLs2"`Qs2G#Ys2k;`s31Acs3Ueos4./$rRh)%s4IA's475#s47/!s4%)!p"05ps4%(ss3L_i
+s3(Gas2Y/Xs1nZJs1J at 3s186@s1%mEs0;U.s/uC(s2b#U];icgJcDYJNQ1eoJ]@T,qagJ$JcFR+
+rrAkpJ,~>
+L&_)Op&FsjiW&oXg&LjJJcEjlms_l4q0mlYm6:>pJNiZhrrDp[q0r-'pO:"D]7,>2U]6I*q>Z"p
+omZi>qgO+rh>dKTV#Pr~>
+L&_)Op&FsjiW&oXg&LjJJcEjlms_l4q0mlYm6:>pa$0Mfs$6TMrBU<Is$6TKnNQt;rBpTQs$m#Z
+s$Z`Ns$?ZLk<AnGq`ah)q*+P%_`k\]JcDMFOad-+JU[9 at r;c_DJcFR+rrAkpJ,~>
+L&_)Op&FsjiW&oXg&LjJJcEjln&Du>q8RucmAg!%kGnQ_s/c7&s/uC*s02O.s0Ma6s1/0 at s1A<E
+s1\NKs2"`Qs2G#Xs2b)Zs3(Ges3UeoqpYGms4%"rrR1_ns3gShs3gqos3CYgs2k;]s2G#Us1nZI
+s1A<BrrE)/rO;UBs02O,s/l=&s2XrT_lC>gJcDMFOiI4sJ]@B&rCHh*JcFR+rrAkpJ,~>
+L&_)Op&FsjiW&oXg&LjJJcEjlms_l4q0mlYm6:>pJNiZhrrDp[q0r-'pO:"D]7,>2U]6I*q>Z"p
+omZi>qgO+rh>dKTV#Pr~>
+L&_)Op&FsjiW&oXg&LjJJcEjlms_l4q0mlYm6:>pa$0Mfs$6TMrBU<Is$6TKnNQt;rBpTQs$m#Z
+s$Z`Ns$?ZLk<AnGq`ah)q*+P%_`k\]JcDMFOad-+JU[9 at r;c_DJcFR+rrAkpJ,~>
+L&_)Op&FsjiW&oXg&LjJJcEjln&Du>q8RucmAg!%kGnQ_s/c7&s/uC*s02O.s0Ma6s1/0 at s1A<E
+s1\NKs2"`Qs2G#Xs2b)Zs3(Ges3UeoqpYGms4%"rrR1_ns3gShs3gqos3CYgs2k;]s2G#Us1nZI
+s1A<BrrE)/rO;UBs02O,s/l=&s2XrT_lC>gJcDMFOiI4sJ]@B&rCHh*JcFR+rrAkpJ,~>
+L&_)Op&FsjiW&oXiW&]RJcE@^omXM:q0mlYm6:>pJNiZhrrDp[q0r-'pO::LZ[RK*Sc>%*q>Z"p
+nUCE:s*fP!h>dKTV#Pr~>
+L&_)Op&FsjiW&oXiW&]RJcE@^omXM:q0mlYm6:>p_`mr^rBUBIlTY>5s$6TNs$ZlPqa(6IjZ`\E
+q`ah)q*+P%b<E7]JcD;@Q[\c1JU[-<r;ckHJcFR+rrAkpJ,~>
+L&_)Op&FsjiW&oXiW&]RJcE@^ou=VDq8RucmAg!%j/W-[s/c7&s/uC*s0;U2s0hs:s1&*?s1A<E
+s1\NJs2"`Ps24`Ps2P)[s3(GerQbGhq9f/frQkMhp!<T^s31Mcs2Y/Zs2=rRs1eTHs186 at s1&(/
+s0hs8s0haCs0)I*s/c7$pVtCVZc7RrSc>%rq>Z#cn](Mus2KWih>dKTV#Pr~>
+L&_)Op&FsjiW&oXiW&]RJcE@^omXM:q0mlYm6:>pJNiZhrrDp[q0r-'pO::LZ[RK*Sc>%*q>Z"p
+nUCE:s*fP!h>dKTV#Pr~>
+L&_)Op&FsjiW&oXiW&]RJcE@^omXM:q0mlYm6:>p_`mr^rBUBIlTY>5s$6TNs$ZlPqa(6IjZ`\E
+q`ah)q*+P%b<E7]JcD;@Q[\c1JU[-<r;ckHJcFR+rrAkpJ,~>
+L&_)Op&FsjiW&oXiW&]RJcE@^ou=VDq8RucmAg!%j/W-[s/c7&s/uC*s0;U2s0hs:s1&*?s1A<E
+s1\NJs2"`Ps24`Ps2P)[s3(GerQbGhq9f/frQkMhp!<T^s31Mcs2Y/Zs2=rRs1eTHs186 at s1&(/
+s0hs8s0haCs0)I*s/c7$pVtCVZc7RrSc>%rq>Z#cn](Mus2KWih>dKTV#Pr~>
+L&_)Op&FsjiW&oXl2UPZJcDqRq0oq>q0mlYm6:>pJNiZhrrDp[q0r-'pO:RTX+#X"RK&b*q>Z"p
+m=,!6JcFX-rrAkpJ,~>
+L&_)Op&FsjiW&oXl2UPZJcDqRq0oq>q0mlYm6:>p]fuBZj$*K.s$-BGs$,U/rrDp[q0r-'pO:RT
+X+#X"RK&b*q>Z"pm=,!6JcFX-rrAkpJ,~>
+L&_)Op&FsjiW&oXl2UPZJcDqRq8U%Hq8RucmAg!%hl?^Ws/c7&s0)I-s0Ma4s0_m9s1&*?s1A<D
+s1\6Bs2"`Qs2P)[rQ5)_qp"lZo?7*Ts2b5[s2=rTs1nZKs1A<As1&*<s0hq-rNuU4q8WH;s/l=%
+s/Ph5e#KIgJcD/<S&Y:(J]@)ss%*.iJcFX-rrAkpJ,~>
+L&_)Op&FsjiW&oXl2UPZJcDqRq0oq>q0mlYm6:>pJNiZhrrDp[q0r-'pO:RTX+#X"RK&b*q>Z"p
+m=,!6JcFX-rrAkpJ,~>
+L&_)Op&FsjiW&oXl2UPZJcDqRq0oq>q0mlYm6:>p]fuBZj$*K.s$-BGs$,U/rrDp[q0r-'pO:RT
+X+#X"RK&b*q>Z"pm=,!6JcFX-rrAkpJ,~>
+L&_)Op&FsjiW&oXl2UPZJcDqRq8U%Hq8RucmAg!%hl?^Ws/c7&s0)I-s0Ma4s0_m9s1&*?s1A<D
+s1\6Bs2"`Qs2P)[rQ5)_qp"lZo?7*Ts2b5[s2=rTs1nZKs1A<As1&*<s0hq-rNuU4q8WH;s/l=%
+s/Ph5e#KIgJcD/<S&Y:(J]@)ss%*.iJcFX-rrAkpJ,~>
+L&_)Op&FsjoDegjnc/Uhn,N7bJcDMFrI2 at Bq0mlYm6:>pJNiZhrrDp[q0r-'pO:dZV1+!qQ2dJ*
+q>Z"pl[Jm6r;_EKj8],ZV#Pr~>
+L&_)Op&FsjoDegjnc/Uhn,N7bJcDMFrI2 at Bq0mlYm6:>pQTk:2j$*JCq`ah)q*+P%ffl6]JcD#8
+T76V9JUZp6s8W#tJcFd1rrAkpJ,~>
+L&_)Op&FsjoDegjnc/Uhn,N7bJcDMFrPlILq8RucmAg!%gT(:Ss/l=(s02O.s0D[3s0_m9s1&*>
+s1A0 at s1A<Bs1JBGs2"`Qs2=rVs2Y#YouQgHrPnlUs2+fPs1nZJs1A6>s0r$9s0Ve+rNlO2q8WH:
+s/c1!pVtmdV8e)dQ2dJrq>Z#clc/u)r;_EKj8],ZV#Pr~>
+L&_)Op&FsjoDegjnc/Uhn,N7bJcDMFrI2 at Bq0mlYm6:>pJNiZhrrDp[q0r-'pO:dZV1+!qQ2dJ*
+q>Z"pl[Jm6r;_EKj8],ZV#Pr~>
+L&_)Op&FsjoDegjnc/Uhn,N7bJcDMFrI2 at Bq0mlYm6:>pQTk:2j$*JCq`ah)q*+P%ffl6]JcD#8
+T76V9JUZp6s8W#tJcFd1rrAkpJ,~>
+L&_)Op&FsjoDegjnc/Uhn,N7bJcDMFrPlILq8RucmAg!%gT(:Ss/l=(s02O.s0D[3s0_m9s1&*>
+s1A0 at s1A<Bs1JBGs2"`Qs2=rVs2Y#YouQgHrPnlUs2+fPs1nZJs1A6>s0r$9s0Ve+rNlO2q8WH:
+s/c1!pVtmdV8e)dQ2dJrq>Z#clc/u)r;_EKj8],ZV#Pr~>
+L&_)Op&Fsjnc/Ofp&G$lp]($hJcD/<]0?%>JNiHbq0mlYo030Sq`ah)q*+P%iBEf]JcCl4UON%=
+JUZp6qu?TpJcFp5rrAkpJ,~>
+L&_)Op&Fsjnc/Ofp&G$lp]($hJcD/<]0?%>JNiHbq0mlYo030Sq`ah)q*+P%iBEf]JcCl4UON%=
+JUZp6qu?TpJcFp5rrAkpJ,~>
+L&_)Op&Fsjnc/Ofp&G$lp]($hJcD/<];k\HJZA+;q8V$ds/Z1%s/uC*s0;U0s0Ma5s0hs;qml[8
+s1/0 at s1JBGs1eTMs24`QpVd*NrP\TNqniBKs1eTJs1SHDs1&$:s0hs7s0DY)rNcI0q8WH9s/Z*u
+pVu0lS]66\OoM2rq>Z#clc/i%r;_EKkPtP^V#Pr~>
+L&_)Op&Fsjnc/Ofp&G$lp]($hJcD/<]0?%>JNiHbq0mlYo030Sq`ah)q*+P%iBEf]JcCl4UON%=
+JUZp6qu?TpJcFp5rrAkpJ,~>
+L&_)Op&Fsjnc/Ofp&G$lp]($hJcD/<]0?%>JNiHbq0mlYo030Sq`ah)q*+P%iBEf]JcCl4UON%=
+JUZp6qu?TpJcFp5rrAkpJ,~>
+L&_)Op&Fsjnc/Ofp&G$lp]($hJcD/<];k\HJZA+;q8V$ds/Z1%s/uC*s0;U0s0Ma5s0hs;qml[8
+s1/0 at s1JBGs1eTMs24`QpVd*NrP\TNqniBKs1eTJs1SHDs1&$:s0hs7s0DY)rNcI0q8WH9s/Z*u
+pVu0lS]66\OoM2rq>Z#clc/i%r;_EKkPtP^V#Pr~>
+L&_)Op&FsjmJm%`qu?Zrs8VlpJcCl4rI2LFq0mlYm6:>pJNiZhrrDp[q0r-'pO;?jQ%";aNW5o*
+q>Z"pl[JU.qZ)3ImJm1dV#Pr~>
+L&_)Op&FsjmJm%`qu?Zrs8VlpJcCl4rI2LFq0mlYm6:>pJNiZhrrDp[q0r-'pO;?jQ%";aNW5o*
+q>Z"pl[JU.qZ)3ImJm1dV#Pr~>
+L&_)Op&FsjmJm%`qu?Zrs8VlpJcCl4rPlUPq8RucmAg!%e#NGKs/c7's0)I,s0D[2s0_g6rO)[6
+s0qs:s1/0As1SHIs1nZNpV?gFs2+`NrP8HJqnE$As1A<Bs0qm6s0_m5s0;S(rNZC.q8WH8ql9D1
+l)L#gJcC`0VoJQ4J]@#qp](*jJcG-;rrAkpJ,~>
+L&_)Op&FsjmJm%`qu?Zrs8VlpJcCl4rI2LFq0mlYm6:>pJNiZhrrDp[q0r-'pO;?jQ%";aNW5o*
+q>Z"pl[JU.qZ)3ImJm1dV#Pr~>
+L&_)Op&FsjmJm%`qu?Zrs8VlpJcCl4rI2LFq0mlYm6:>pJNiZhrrDp[q0r-'pO;?jQ%";aNW5o*
+q>Z"pl[JU.qZ)3ImJm1dV#Pr~>
+L&_)Op&FsjmJm%`qu?Zrs8VlpJcCl4rPlUPq8RucmAg!%e#NGKs/c7's0)I,s0D[2s0_g6rO)[6
+s0qs:s1/0As1SHIs1nZNpV?gFs2+`NrP8HJqnE$As1A<Bs0qm6s0_m5s0;S(rNZC.q8WH8ql9D1
+l)L#gJcC`0VoJQ4J]@#qp](*jJcG-;rrAkpJ,~>
+KE(lMq>^<lkPtJ\s8W#tJcCT,q0p4Fq0mlYm6:>pJNiZhrrDp[q0r-'pO;QpO+)Z[M>sW*q>Z"p
+l[JC(r;_EKnc/UhV#Pr~>
+KE(lMq>^<lkPtJ\s8W#tJcCT,q0p4Fq0mlYm6:>pJNiZhrrDp[q0r-'pO;QpO+)Z[M>sW*q>Z"p
+l[JC(r;_EKnc/UhV#Pr~>
+KE(lMq>^<lkPtJ\s8W#tJcCT,q8U=Pq8RucmAg!%c`7#Gs/c7&s0)I,s0DU0s0D[2s0Vg6rO2a8
+s1&*>s1A<Ds1S0>s1\NJrP&<Fs1\NHs1JBDs180>s1&*<s0V[2s0Vg3s02M'rNQ=,q8W61pVu[%
+O2cbNM>sWrq>Z#clc/Jpr;_EKnc/UhV#Pr~>
+KE(lMq>^<lkPtJ\s8W#tJcCT,q0p4Fq0mlYm6:>pJNiZhrrDp[q0r-'pO;QpO+)Z[M>sW*q>Z"p
+l[JC(r;_EKnc/UhV#Pr~>
+KE(lMq>^<lkPtJ\s8W#tJcCT,q0p4Fq0mlYm6:>pJNiZhrrDp[q0r-'pO;QpO+)Z[M>sW*q>Z"p
+l[JC(r;_EKnc/UhV#Pr~>
+KE(lMq>^<lkPtJ\s8W#tJcCT,q8U=Pq8RucmAg!%c`7#Gs/c7&s0)I,s0DU0s0D[2s0Vg6rO2a8
+s1&*>s1A<Ds1S0>s1\NJrP&<Fs1\NHs1JBDs180>s1&*<s0V[2s0Vg3s02M'rNQ=,q8W61pVu[%
+O2cbNM>sWrq>Z#clc/Jpr;_EKnc/UhV#Pr~>
+KE(lMq>^BniW&iVs8W#tJcC`0o7"eFq0mlYm6:>pJNiZhrrDp[q0r-'pO;j#LOOgSKE&3*q>Z"p
+l[J7$r;_EKp&G$lV#Pr~>
+KE(lMq>^BniW&iVs8W#tJcC`0o7"eFq0mlYm6:>pJNiZhrrDp[q0r-'pO;j#LOOgSKE&3*q>Z"p
+l[J7$r;_EKp&G$lV#Pr~>
+KE(lMq>^BniW&iVs8W#tJcC`0o>\nPq8RucmAg!%af>BBs/l=)qlp+*s0DU0s0Vg6s0hs:s1&$<
+q7-I8s1A<Dqn)m at s1A<Bs1/0>s0r$:s0_m6s0MU0s0Ma1s0)G&rNH7*q8W61pVus-LW4oFKE&3r
+q>Z#clc/>lr;_EKp&G$lV#Pr~>
+KE(lMq>^BniW&iVs8W#tJcC`0o7"eFq0mlYm6:>pJNiZhrrDp[q0r-'pO;j#LOOgSKE&3*q>Z"p
+l[J7$r;_EKp&G$lV#Pr~>
+KE(lMq>^BniW&iVs8W#tJcC`0o7"eFq0mlYm6:>pJNiZhrrDp[q0r-'pO;j#LOOgSKE&3*q>Z"p
+l[J7$r;_EKp&G$lV#Pr~>
+KE(lMq>^BniW&iVs8W#tJcC`0o>\nPq8RucmAg!%af>BBs/l=)qlp+*s0DU0s0Vg6s0hs:s1&$<
+q7-I8s1A<Dqn)m at s1A<Bs1/0>s0r$:s0_m6s0MU0s0Ma1s0)G&rNH7*q8W61pVus-LW4oFKE&3r
+q>Z#clc/>lr;_EKp&G$lV#Pr~>
+JcG<AkPtDZp](0lJcCl4ms`MFq0mlYm6:>pJNiZhrrDp[q0r-'pO<-+JU[WJJcC<$s8TKUq>Z"p
+l[J*ur;_EKq>^HpV#Pr~>
+JcG<AkPtDZp](0lJcCl4ms`MFq0mlYm6:>pJNiZhrrDp[q0r-'pO<-+JU[WJJcC<$s8TKUq>Z"p
+l[J*ur;_EKq>^HpV#Pr~>
+JcG<AkPtDZp](0lJcCl4n&EVPq8RucmAg!%`N&s>rN6+&s0)I,rNZC.s0Ma4s0_m8s0r$:s0_g4
+s0_m8s0r$=rODm<s186 at s1&*<s0hs8s0V[/qm6=.s02O+rrE##s0)7<q5X2/s/LXis2KWiJcGcM
+[Dr%BJ]@#ql2U\^JcGQGrrAkpJ,~>
+JcG<AkPtDZp](0lJcCl4ms`MFq0mlYm6:>pJNiZhrrDp[q0r-'pO<-+JU[WJJcC<$s8TKUq>Z"p
+l[J*ur;_EKq>^HpV#Pr~>
+JcG<AkPtDZp](0lJcCl4ms`MFq0mlYm6:>pJNiZhrrDp[q0r-'pO<-+JU[WJJcC<$s8TKUq>Z"p
+l[J*ur;_EKq>^HpV#Pr~>
+JcG<AkPtDZp](0lJcCl4n&EVPq8RucmAg!%`N&s>rN6+&s0)I,rNZC.s0Ma4s0_m8s0r$:s0_g4
+s0_m8s0r$=rODm<s186 at s1&*<s0hs8s0V[/qm6=.s02O+rrE##s0)7<q5X2/s/LXis2KWiJcGcM
+[Dr%BJ]@#ql2U\^JcGQGrrAkpJ,~>
+JcGcMq#Ka\q#Kg^r;_EKQ2g0!d6 at ATJNiHbq0mlYo030Sq`ah)q*'@Yo6u8jJcGWI\UOASJUZp6
+jo>8ZJcG]KrrAkpJ,~>
+JcGcMq#Ka\q#Kg^r;_EKQ2g0!d6 at ATJNiHbq0mlYo030Sq`ah)q*'@Yo6u8jJcGWI\UOASJUZp6
+jo>8ZJcG]KrrAkpJ,~>
+JcGcMq#Ka\q#Kg^r;_EKQ2g0idAm#^JZA+;q8U7Ns/Z1$s/l7&s0)I,s0;U0s0Ma4s0_m6s0Ma2
+s0;U0s0Ma4s0hs8s0hs:s1&*<s0hs8s0Vg4s0;U.rNZ7*s02O,s/l;$rN6+&q8W61J]@<$JcC<$
+qu=4Hq>Z#clc/&dr;_EKrVultV#Pr~>
+JcGcMq#Ka\q#Kg^r;_EKQ2g0!d6 at ATJNiHbq0mlYo030Sq`ah)q*'@Yo6u8jJcGWI\UOASJUZp6
+jo>8ZJcG]KrrAkpJ,~>
+JcGcMq#Ka\q#Kg^r;_EKQ2g0!d6 at ATJNiHbq0mlYo030Sq`ah)q*'@Yo6u8jJcGWI\UOASJUZp6
+jo>8ZJcG]KrrAkpJ,~>
+JcGcMq#Ka\q#Kg^r;_EKQ2g0idAm#^JZA+;q8U7Ns/Z1$s/l7&s0)I,s0;U0s0Ma4s0_m6s0Ma2
+s0;U0s0Ma4s0hs8s0hs:s1&*<s0hs8s0Vg4s0;U.rNZ7*s02O,s/l;$rN6+&q8W61J]@<$JcC<$
+qu=4Hq>Z#clc/&dr;_EKrVultV#Pr~>
+JcFd1rrD$Xr;_EKRK)H!eNWeXJNiHbq0mlYo030Sq`ah)q`]R[nU?&hJcGKE]mfeWJUZp6iW&iV
+JcG`MV#Pr~>
+JcFd1rrD$Xr;_EKRK)H!eNWeXJNiHbq0mlYo030Sq`ah)q`]R[nU?&hJcGKE]mfeWJUZp6iW&iV
+JcG`MV#Pr~>
+JcFd1rrD$Xr;_EKRK)HieZ/GbJZA+;q8U+Js/Z+"s/l=(s0)I,s0;U0s0Ma2s0;O,rNZC.rNlO2
+s0_m8s0_m6s0Ma2s0;O+rNQ1(s0)I*s/c5#rN-%$q8W<3J]@6"JcC<$p]%qHq>Z#clc.o`r;_EK
+rrAkpJ,~>
+JcFd1rrD$Xr;_EKRK)H!eNWeXJNiHbq0mlYo030Sq`ah)q`]R[nU?&hJcGKE]mfeWJUZp6iW&iV
+JcG`MV#Pr~>
+JcFd1rrD$Xr;_EKRK)H!eNWeXJNiHbq0mlYo030Sq`ah)q`]R[nU?&hJcGKE]mfeWJUZp6iW&iV
+JcG`MV#Pr~>
+JcFd1rrD$Xr;_EKRK)HieZ/GbJZA+;q8U+Js/Z+"s/l=(s0)I,s0;U0s0Ma2s0;O,rNZC.rNlO2
+s0_m8s0_m6s0Ma2s0;O+rNQ1(s0)I*s/c5#rN-%$q8W<3J]@6"JcC<$p]%qHq>Z#clc.o`r;_EK
+rrAkpJ,~>
+JcEF`r;_EKSc@`!ffo4\JNiHbq0mlYo030Sq`an+s8RY!l[FEbJcG?A_1)4[JUZp6h>d?PL]@AS
+V#Pr~>
+JcEF`r;_EKSc@`!ffo4\JNiHbq0mlYo030Sq`an+s8RY!l[FEbJcG?A_1)4[JUZp6h>d?PL]@AS
+V#Pr~>
+JcEF`r;_EKSc@`ifrFkfJZA+;q8TnDs/Z1$s/l=(s0)I,s0;U.qlft&rNZ=,s0Ma4s0Ma2s0;U.
+s0)C(rNH+&s/uC(s/Z/"rN#t"qo8[9J]@#qJcC<$oDcYHq>Z#clc.c\qZ)EOrrAkpJ,~>
+JcEF`r;_EKSc@`!ffo4\JNiHbq0mlYo030Sq`an+s8RY!l[FEbJcG?A_1)4[JUZp6h>d?PL]@AS
+V#Pr~>
+JcEF`r;_EKSc@`!ffo4\JNiHbq0mlYo030Sq`an+s8RY!l[FEbJcG?A_1)4[JUZp6h>d?PL]@AS
+V#Pr~>
+JcEF`r;_EKSc@`ifrFkfJZA+;q8TnDs/Z1$s/l=(s0)I,s0;U.qlft&rNZ=,s0Ma4s0Ma2s0;U.
+s0)C(rNH+&s/uC(s/Z/"rN#t"qo8[9J]@#qJcC<$oDcYHq>Z#clc.c\qZ)EOrrAkpJ,~>
+JcE:\qZ)3IU]9/!h`gjbJNiHbq0mlYo030SrBC71q>Z"pl[FEbJcG-;a+!jaJUZp6fDkdLMuWeW
+V#Pr~>
+JcE:\qZ)3IU]9/!h`gjbJNiHbq0mlYo030SrBC71q>Z"pl[FEbJcG-;a+!jaJUZp6fDkdLMuWeW
+V#Pr~>
+JcE:\qZ)3IU]9/ihl?LlJZA+;q8Tb at s/Z1$s/l=(s0)I*s/l7&rNH1(qm$1,s0;U.s0)I*s/c1$
+rN?%$s/l=&s/Q)!rMon<q>Z#clc+MUJcG-;a2[rTJ]@#qfDkdLMuWeWV#Pr~>
+JcE:\qZ)3IU]9/!h`gjbJNiHbq0mlYo030SrBC71q>Z"pl[FEbJcG-;a+!jaJUZp6fDkdLMuWeW
+V#Pr~>
+JcE:\qZ)3IU]9/!h`gjbJNiHbq0mlYo030SrBC71q>Z"pl[FEbJcG-;a+!jaJUZp6fDkdLMuWeW
+V#Pr~>
+JcE:\qZ)3IU]9/ihl?LlJZA+;q8Tb at s/Z1$s/l=(s0)I*s/l7&rNH1(qm$1,s0;U.s0)I*s/c1$
+rN?%$s/l=&s/Q)!rMon<q>Z#clc+MUJcG-;a2[rTJ]@#qfDkdLMuWeWV#Pr~>
+JcE(Vr;_EKVuPG!j$*9fJNiHbq0mlYo030SqgSA at JUZp6JcC<$l2SqUq>Z"pl[I=_r;_oYrrAkp
+J,~>
+JcE(Vr;_EKVuPG!j$*9fJNiHbq0mlYo030SqgSA at JUZp6JcC<$l2SqUq>Z"pl[I=_r;_oYrrAkp
+J,~>
+JcE(Vr;_EKVuPGij/VppJZA+;q8TV<s/Z1$s/l7$rN6%$rNH+&s0;U-s/uC(s/c7$rN,t"ql]t#
+s/Z1"rrDr9q>Z#clc+MUJcG!7bJsAXJ]@#qe,T at HO8o4[V#Pr~>
+JcE(Vr;_EKVuPG!j$*9fJNiHbq0mlYo030SqgSA at JUZp6JcC<$l2SqUq>Z"pl[I=_r;_oYrrAkp
+J,~>
+JcE(Vr;_EKVuPG!j$*9fJNiHbq0mlYo030SqgSA at JUZp6JcC<$l2SqUq>Z"pl[I=_r;_oYrrAkp
+J,~>
+JcE(Vr;_EKVuPGij/VppJZA+;q8TV<s/Z1$s/l7$rN6%$rNH+&s0;U-s/uC(s/c7$rN,t"ql]t#
+s/Z1"rrDr9q>Z#clc+MUJcG!7bJsAXJ]@#qe,T at HO8o4[V#Pr~>
+JcDqRr;_EKX8g_!k<A]jJNiHbq0mlYq`ah)rrDqFq>Z"pl[FEbJcFj3c[P]iJUZp6ci<qDPQ1X_
+V#Pr~>
+JcDqRr;_EKX8g_!k<A]jJNiHbq0mlYq`ah)rrDqFq>Z"pl[FEbJcFj3c[P]iJUZp6ci<qDPQ1X_
+V#Pr~>
+JcDqRr;_EKX8g_ikGn?tJZA+;q8TJ8qlB[srN5t"rNH7*s/uC(s/Z*urN#murN6+As2b/YrrDr9
+q>Z#clc+MUJcFj3cc5e\J]@#qci<qDPQ1X_V#Pr~>
+JcDqRr;_EKX8g_!k<A]jJNiHbq0mlYq`ah)rrDqFq>Z"pl[FEbJcFj3c[P]iJUZp6ci<qDPQ1X_
+V#Pr~>
+JcDqRr;_EKX8g_!k<A]jJNiHbq0mlYq`ah)rrDqFq>Z"pl[FEbJcFj3c[P]iJUZp6ci<qDPQ1X_
+V#Pr~>
+JcDqRr;_EKX8g_ikGn?tJZA+;q8TJ8qlB[srN5t"rNH7*s/uC(s/Z*urN#murN6+As2b/YrrDr9
+q>Z#clc+MUJcFj3cc5e\J]@#qci<qDPQ1X_V#Pr~>
+JcDeNr;_EKYQ*"!lTY,nJNiHbq0mr[nUCK<qgSA at JUZp6JcC<$iW%AUq>Z"pl[I%Wr;`2arrAkp
+J,~>
+JcDeNr;_EKYQ*"!lTY,nJNiHbq0mr[nUCK<qgSA at JUZp6JcC<$iW%AUq>Z"pl[I%Wr;`2arrAkp
+J,~>
+JcDeNr;_EKYQ*"il`0d#JZA+;q8T82rN#muqlTh"s0)I)s/bsps2Y)Zs2k;^s2Y)XrrDr9q>Z#c
+lc+MUJcF^/e&M4`J]@#qbQ%M at QiI'cV#Pr~>
+JcDeNr;_EKYQ*"!lTY,nJNiHbq0mr[nUCK<qgSA at JUZp6JcC<$iW%AUq>Z"pl[I%Wr;`2arrAkp
+J,~>
+JcDeNr;_EKYQ*"!lTY,nJNiHbq0mr[nUCK<qgSA at JUZp6JcC<$iW%AUq>Z"pl[I%Wr;`2arrAkp
+J,~>
+JcDeNr;_EKYQ*"il`0d#JZA+;q8T82rN#muqlTh"s0)I)s/bsps2Y)Zs2k;^s2Y)XrrDr9q>Z#c
+lc+MUJcF^/e&M4`J]@#qbQ%M at QiI'cV#Pr~>
+JcDYJr;_EKZiA:!mlpPrJNiHbq0n/al[Jj6qgSA at JUZp6JcC<$h>c)Uq>Z"pl[HnSr;`>errAkp
+J,~>
+JcDYJr;_EKZiA:!mlpPrJNiHbq0n/al[Jj6qgSA at JUZp6JcC<$h>c)Uq>Z"pl[HnSr;`>errAkp
+J,~>
+JcDYJr;_EKZiA:in#H3'JZA+;q8T,.rN#gsrN6+&s/c7$rMo\5q8`BPrrDr9q>Z#clc+MUJcFR+
+f>dXdJ]@#qa8c)<S,`KgV#Pr~>
+JcDYJr;_EKZiA:!mlpPrJNiHbq0n/al[Jj6qgSA at JUZp6JcC<$h>c)Uq>Z"pl[HnSr;`>errAkp
+J,~>
+JcDYJr;_EKZiA:!mlpPrJNiHbq0n/al[Jj6qgSA at JUZp6JcC<$h>c)Uq>Z"pl[HnSr;`>errAkp
+J,~>
+JcDYJr;_EKZiA:in#H3'JZA+;q8T,.rN#gsrN6+&s/c7$rMo\5q8`BPrrDr9q>Z#clc+MUJcFR+
+f>dXdJ]@#qa8c)<S,`KgV#Pr~>
+JcDMFqZ)3I\c9d#o02u!JNiHbq0nGij*q".qgSA at JUZp6JcC<$g&KfUq>Z"pl[HbOqZ*>irrAkp
+J,~>
+JcDMFqZ)3I\c9d#o02u!JNiHbq0nGij*q".qgSA at JUZp6JcC<$g&KfUq>Z"pl[HbOqZ*>irrAkp
+J,~>
+JcDMFqZ)3I\c9dko;_W+JZA+;q8Su*qlB[ss/l=Bji7<#qo8I3J]@#qJcC<$g&KgHq>Z#clc-jB
+qZ*>irrAkpJ,~>
+JcDMFqZ)3I\c9d#o02u!JNiHbq0nGij*q".qgSA at JUZp6JcC<$g&KfUq>Z"pl[HbOqZ*>irrAkp
+J,~>
+JcDMFqZ)3I\c9d#o02u!JNiHbq0nGij*q".qgSA at JUZp6JcC<$g&KfUq>Z"pl[HbOqZ*>irrAkp
+J,~>
+JcDMFqZ)3I\c9dko;_W+JZA+;q8Su*qlB[ss/l=Bji7<#qo8I3J]@#qJcC<$g&KgHq>Z#clc-jB
+qZ*>irrAkpJ,~>
+JcD;@r;_EK^&Q!!q*+V'JNiHbq0n_qgOB/&qgSA at JUZp6JcC<$e,SBUq>Z"pl[HPIr;`\orrAkp
+J,~>
+JcD;@r;_EK^&Q!!q*+V'JNiHbq0n_qgOB/&qgSA at JUZp6JcC<$e,SBUq>Z"pl[HPIr;`\orrAkp
+J,~>
+JcD;@r;_EK^&Q!iq5X81JZA+;q8Si&rQ"lXs2X6 at rrDr9q>Z#clc+MUJcF4!iPt]nJ]@#q^&S$2
+V>pPqV#Pr~>
+JcD;@r;_EK^&Q!!q*+V'JNiHbq0n_qgOB/&qgSA at JUZp6JcC<$e,SBUq>Z"pl[HPIr;`\orrAkp
+J,~>
+JcD;@r;_EK^&Q!!q*+V'JNiHbq0n_qgOB/&qgSA at JUZp6JcC<$e,SBUq>Z"pl[HPIr;`\orrAkp
+J,~>
+JcD;@r;_EK^&Q!iq5X81JZA+;q8Si&rQ"lXs2X6 at rrDr9q>Z#clc+MUJcF4!iPt]nJ]@#q^&S$2
+V>pPqV#Pr~>
+JcD/<r;_EK_>h9!rBC%+JNiHbq0nr"eUIMuqgSA at JUZp6JcC<$ci<*Uq>Z"pl[HDEr;`hsrrAkp
+J,~>
+JcD/<r;_EK_>h9!rBC%+JNiHbq0nr"eUIMuqgSA at JUZp6JcC<$ci<*Uq>Z"pl[HDEr;`hsrrAkp
+J,~>
+JcD/<r;_EK_>h9irMo\5JZA+;q8T&,pW!0Pj2V*!qo8I3J]@#qJcC<$ci<+Hq>Z#clc-L8r;`hs
+rrAkpJ,~>
+JcD/<r;_EK_>h9!rBC%+JNiHbq0nr"eUIMuqgSA at JUZp6JcC<$ci<*Uq>Z"pl[HDEr;`hsrrAkp
+J,~>
+JcD/<r;_EK_>h9!rBC%+JNiHbq0nr"eUIMuqgSA at JUZp6JcC<$ci<*Uq>Z"pl[HDEr;`hsrrAkp
+J,~>
+JcD/<r;_EK_>h9irMo\5JZA+;q8T&,pW!0Pj2V*!qo8I3J]@#qJcC<$ci<+Hq>Z#clc-L8r;`hs
+rrAkpJ,~>
+ScA?_oDeUdS,`EeJcE^hZ[RHhm6:>pV`r at SrrDqFq>Z"pl[FEbJcEpnl$iI.JUZp6[K$1*XoJD$
+V#Pr~>
+ScA?_oDeUdS,`EeJcE^hZ[RHhm6:>pV`r at SrrDqFq>Z"pl[FEbJcEpnl$iI.JUZp6[K$1*XoJD$
+V#Pr~>
+ScA?_oDeUdS,`EeJcE^hZc7QrmAg!%VlJ"]rrDr9q>Z#clc+MUJcEpnl,NQ!J]@#q[K$1*XoJD$
+V#Pr~>
+ScA?_oDeUdS,`EeJcE^hZ[RHhm6:>pV`r at SrrDqFq>Z"pl[FEbJcEpnl$iI.JUZp6[K$1*XoJD$
+V#Pr~>
+ScA?_oDeUdS,`EeJcE^hZ[RHhm6:>pV`r at SrrDqFq>Z"pl[FEbJcEpnl$iI.JUZp6[K$1*XoJD$
+V#Pr~>
+ScA?_oDeUdS,`EeJcE^hZc7QrmAg!%VlJ"]rrDr9q>Z#clc+MUJcEpnl,NQ!J]@#q[K$1*XoJD$
+V#Pr~>
+TE"E]p]'mdRK*3cJcEjlZ[RHhm6:>pY<KpSrrDqFq>Z"pl[FEbJcEdjm=+m2JUZp6Z2ab&Z2ah(
+V#Pr~>
+TE"E]p]'mdRK*3cJcEjlZ[RHhm6:>pY<KpSrrDqFq>Z"pl[FEbJcEdjm=+m2JUZp6Z2ab&Z2ah(
+V#Pr~>
+TE"E]p]'mdRK*3cJcEjlZc7QrmAg!%YH#R]rrDr9q>Z#clc+MUJcEdjmDeu%J]@#qZ2ab&Z2ah(
+V#Pr~>
+TE"E]p]'mdRK*3cJcEjlZ[RHhm6:>pY<KpSrrDqFq>Z"pl[FEbJcEdjm=+m2JUZp6Z2ab&Z2ah(
+V#Pr~>
+TE"E]p]'mdRK*3cJcEjlZ[RHhm6:>pY<KpSrrDqFq>Z"pl[FEbJcEdjm=+m2JUZp6Z2ab&Z2ah(
+V#Pr~>
+TE"E]p]'mdRK*3cJcEjlZc7QrmAg!%YH#R]rrDr9q>Z#clc+MUJcEdjmDeu%J]@#qZ2ab&Z2ah(
+V#Pr~>
+U&Xuiq>^<lqu?Tpq>^BnQiI!aJcF!pZ[RHhm6:>p[m%KSrrDqFq>Z"pl[FEbJcEXfnUC<6JUZp6
+XoJ>"[K$7,V#Pr~>
+U&Xuiq>^<lqu?Tpq>^BnQiI!aJcF!pZ[RHhm6:>p[m%KSrrDqFq>Z"pl[FEbJcEXfnUC<6JUZp6
+XoJ>"[K$7,V#Pr~>
+U&Xuiq>^<lqu?Tpq>^BnQiI!aJcF!pZc7QrmAg!%\#R-]rrDr9q>Z#clc+MUJcEXfn](D)J]@#q
+XoJ>"[K$7,V#Pr~>
+U&Xuiq>^<lqu?Tpq>^BnQiI!aJcF!pZ[RHhm6:>p[m%KSrrDqFq>Z"pl[FEbJcEXfnUC<6JUZp6
+XoJ>"[K$7,V#Pr~>
+U&Xuiq>^<lqu?Tpq>^BnQiI!aJcF!pZ[RHhm6:>p[m%KSrrDqFq>Z"pl[FEbJcEXfnUC<6JUZp6
+XoJ>"[K$7,V#Pr~>
+U&Xuiq>^<lqu?Tpq>^BnQiI!aJcF!pZc7QrmAg!%\#R-]rrDr9q>Z#clc+MUJcEXfn](D)J]@#q
+XoJ>"[K$7,V#Pr~>
+U&Y&kp&Fsjqu?Tpq>^BnPQ1L[JcF4!YC;$dnNQbt]froSrrDqFq>Z"pl[FEbJcEF`pO;r<JUZp6
+WW2hq]Dqm2V#Pr~>
+U&Y&kp&Fsjqu?Tpq>^BnPQ1L[JcF4!YC;$dnNQbt]froSrrDqFq>Z"pl[FEbJcEF`pO;r<JUZp6
+WW2hq]Dqm2V#Pr~>
+U&Y&kp&Fsjqu?Tpq>^BnPQ1L[JcF4!YJu-nnZ)E)]rJQ]rrDr9q>Z#clc+MUJcEF`pW!%/J]@#q
+WW2hq]Dqm2V#Pr~>
+U&Y&kp&Fsjqu?Tpq>^BnPQ1L[JcF4!YC;$dnNQbt]froSrrDqFq>Z"pl[FEbJcEF`pO;r<JUZp6
+WW2hq]Dqm2V#Pr~>
+U&Y&kp&Fsjqu?Tpq>^BnPQ1L[JcF4!YC;$dnNQbt]froSrrDqFq>Z"pl[FEbJcEF`pO;r<JUZp6
+WW2hq]Dqm2V#Pr~>
+U&Y&kp&Fsjqu?Tpq>^BnPQ1L[JcF4!YJu-nnZ)E)]rJQ]rrDr9q>Z#clc+MUJcEF`pW!%/J]@#q
+WW2hq]Dqm2V#Pr~>
+U&Y&kp&FsjrVufrp&FsjO8o.YJcF@%WIBC^pHJD%`BLJSrrDqFq>Z"pl[FEbJcE:\qgSA at JUZp6
+U]:8m^]4<6V#Pr~>
+U&Y&kp&FsjrVufrp&FsjO8o.YJcF@%WIBC^pHJD%`BLJSrrDqFq>Z"pl[FEbJcE:\qgSA at JUZp6
+U]:8m^]4<6V#Pr~>
+U&Y&kp&FsjrVufrp&FsjO8o.YJcF@%WQ'LhpT"&/`N$,]rrDr9q>Z#clc+MUJcE:\qo8I3J]@#q
+U]:8m^]4<6V#Pr~>
+U&Y&kp&FsjrVufrp&FsjO8o.YJcF@%WIBC^pHJD%`BLJSrrDqFq>Z"pl[FEbJcE:\qgSA at JUZp6
+U]:8m^]4<6V#Pr~>
+U&Y&kp&FsjrVufrp&FsjO8o.YJcF@%WIBC^pHJD%`BLJSrrDqFq>Z"pl[FEbJcE:\qgSA at JUZp6
+U]:8m^]4<6V#Pr~>
+U&Y&kp&FsjrVufrp&FsjO8o.YJcF@%WQ'LhpT"&/`N$,]rrDr9q>Z#clc+MUJcE:\qo8I3J]@#q
+U]:8m^]4<6V#Pr~>
+OoP@[rVufrp&FsjMuW_UJcFL)V1*tZq`ah)bs&%SrrDqFq>Z"pl[FEbJcE.Xs*jeDJUZp6TE"ii
+_uK`:V#Pr~>
+OoP@[rVufrp&FsjMuW_UJcFL)V1*tZq`ah)bs&%SrrDqFq>Z"pl[FEbJcE.Xs*jeDJUZp6TE"ii
+_uK`:V#Pr~>
+OoP@[rVufrp&FsjMuW_UJcFL)V8e(dql9J3c)R\]rrDr9q>Z#clc+MUJcE.Xs2Om7J]@#qTE"ii
+_uK`:V#Pr~>
+OoP@[rVufrp&FsjMuW_UJcFL)V1*tZq`ah)bs&%SrrDqFq>Z"pl[FEbJcE.Xs*jeDJUZp6TE"ii
+_uK`:V#Pr~>
+OoP@[rVufrp&FsjMuW_UJcFL)V1*tZq`ah)bs&%SrrDqFq>Z"pl[FEbJcE.Xs*jeDJUZp6TE"ii
+_uK`:V#Pr~>
+OoP@[rVufrp&FsjMuW_UJcFL)V8e(dql9J3c)R\]rrDr9q>Z#clc+MUJcE.Xs2Om7J]@#qTE"ii
+_uK`:V#Pr~>
+PQ1R]qu?Tpp&FsjL]@;QJcFX-TmhPVs$$7-dlsISrrDqFq>Z"pl[FEbJcDeNJUZp6S,`Eea8c/>
+V#Pr~>
+PQ1R]qu?Tpp&FsjL]@;QJcFX-TmhPVs$$7-dlsISrrDqFq>Z"pl[FEbJcDeNJUZp6S,`Eea8c/>
+V#Pr~>
+PQ1R]qu?Tpp&FsjL]@;QJcFX-TuMY`s/Pn7e#K+]rrDr9q>Z#clc+MUJcDeNJ]@#qS,`Eea8c/>
+V#Pr~>
+PQ1R]qu?Tpp&FsjL]@;QJcFX-TmhPVs$$7-dlsISrrDqFq>Z"pl[FEbJcDeNJUZp6S,`Eea8c/>
+V#Pr~>
+PQ1R]qu?Tpp&FsjL]@;QJcFX-TmhPVs$$7-dlsISrrDqFq>Z"pl[FEbJcDeNJUZp6S,`Eea8c/>
+V#Pr~>
+PQ1R]qu?Tpp&FsjL]@;QJcFX-TuMY`s/Pn7e#K+]rrDr9q>Z#clc+MUJcDeNJ]@#qS,`Eea8c/>
+V#Pr~>
+QiHj]qu?Tpp&FsjKE(lMJcFd1SUQ2Tq0q'^R=>/9qgSA at JUZp6JcC<$X8da"l[G3#r;b%@rrAkp
+J,~>
+QiHj]qu?Tpp&FsjKE(lMJcFd1SUQ2Tq0q'^R=>/9qgSA at JUZp6JcC<$X8da"l[G3#r;b%@rrAkp
+J,~>
+QiHj]qu?Tpp&FsjKE(lMJcFd1S]6;^q8V0hRE#7,qo8I3J]@#qJcC<$X8dajlc,:kr;b%@rrAkp
+J,~>
+QiHj]qu?Tpp&FsjKE(lMJcFd1SUQ2Tq0q'^R=>/9qgSA at JUZp6JcC<$X8da"l[G3#r;b%@rrAkp
+J,~>
+QiHj]qu?Tpp&FsjKE(lMJcFd1SUQ2Tq0q'^R=>/9qgSA at JUZp6JcC<$X8da"l[G3#r;b%@rrAkp
+J,~>
+QiHj]qu?Tpp&FsjKE(lMJcFd1S]6;^q8V0hRE#7,qo8I3J]@#qJcC<$X8dajlc,:kr;b%@rrAkp
+J,~>
+RK*-ap](0lp&FsjJcGcMqZ)3Il2R0#LHbN_j$&TSrrDqFq>Z"pl[FEbJcD_LJU[!8PQ1L[dJs4H
+V#Pr~>
+RK*-ap](0lp&FsjJcGcMqZ)3Il2R0#LHbN_j$&TSrrDqFq>Z"pl[FEbJcD_LJU[!8PQ1L[dJs4H
+V#Pr~>
+RK*-ap](0lp&FsjJcGcMqZ)3Il2R0kLT:0ij/S6]rrDr9q>Z#clc+MUJcD_LJ]@)sPQ1L[dJs4H
+V#Pr~>
+RK*-ap](0lp&FsjJcGcMqZ)3Il2R0#LHbN_j$&TSrrDqFq>Z"pl[FEbJcD_LJU[!8PQ1L[dJs4H
+V#Pr~>
+RK*-ap](0lp&FsjJcGcMqZ)3Il2R0#LHbN_j$&TSrrDqFq>Z"pl[FEbJcD_LJU[!8PQ1L[dJs4H
+V#Pr~>
+RK*-ap](0lp&FsjJcGcMqZ)3Il2R0kLT:0ij/S6]rrDr9q>Z#clc+MUJcD_LJ]@)sPQ1L[dJs4H
+V#Pr~>
+ScAQeoDeahp&FsjJcGQGr;_EKmJiB!NB[/ekrt#SrrDqFq>Z"pl[FEbJcDMFJU[3>NW8qWec5XL
+V#Pr~>
+ScAQeoDeahp&FsjJcGQGr;_EKmJiB!NB[/ekrt#SrrDqFq>Z"pl[FEbJcDMFJU[3>NW8qWec5XL
+V#Pr~>
+ScAQeoDeahp&FsjJcGQGr;_EKmJiBiNN2fol)KZ]rrDr9q>Z#clc+MUJcDMFJ]@<$NW8qWec5XL
+V#Pr~>
+ScAQeoDeahp&FsjJcGQGr;_EKmJiB!NB[/ekrt#SrrDqFq>Z"pl[FEbJcDMFJU[3>NW8qWec5XL
+V#Pr~>
+ScAQeoDeahp&FsjJcGQGr;_EKmJiB!NB[/ekrt#SrrDqFq>Z"pl[FEbJcDMFJU[3>NW8qWec5XL
+V#Pr~>
+ScAQeoDeahp&FsjJcGQGr;_EKmJiBiNN2fol)KZ]rrDr9q>Z#clc+MUJcDMFJ]@<$NW8qWec5XL
+V#Pr~>
+TE"cgnc/Ofp&FsjJcGECr;_EKnc+Z!OZrSinNMSSrrDqFq>Z"pl[FEbJcDABJU[?BM?!MSg&M'P
+V#Pr~>
+TE"cgnc/Ofp&FsjJcGECr;_EKnc+Z!OZrSinNMSSrrDqFq>Z"pl[FEbJcDABJU[?BM?!MSg&M'P
+V#Pr~>
+TE"cgnc/Ofp&FsjJcGECr;_EKnc+ZiOfJ5snZ%5]rrDr9q>Z#clc+MUJcDABJ]@H(M?!MSg&M'P
+V#Pr~>
+TE"cgnc/Ofp&FsjJcGECr;_EKnc+Z!OZrSinNMSSrrDqFq>Z"pl[FEbJcDABJU[?BM?!MSg&M'P
+V#Pr~>
+TE"cgnc/Ofp&FsjJcGECr;_EKnc+Z!OZrSinNMSSrrDqFq>Z"pl[FEbJcDABJU[?BM?!MSg&M'P
+V#Pr~>
+TE"cgnc/Ofp&FsjJcGECr;_EKnc+ZiOfJ5snZ%5]rrDr9q>Z#clc+MUJcDABJ]@H(M?!MSg&M'P
+V#Pr~>
+TE"iimJm+bq>^<lJcG9?r;_EKp&Br!Ps5"mq*'@YqgSPFqgSA at JUZp6JcC<$S,\%gqgO8!r;b[R
+rrAkpJ,~>
+TE"iimJm+bq>^<lJcG9?r;_EKp&Br!Ps5"mq*'@YqgSPFqgSA at JUZp6JcC<$S,\%gqgO8!r;b[R
+rrAkpJ,~>
+TE"iimJm+bq>^<lJcG9?r;_EKp&BriQ)aZ"q5T"cqo8X9qo8I3J]@#qJcC<$S,\&Zqo4?ir;b[R
+rrAkpJ,~>
+TE"iimJm+bq>^<lJcG9?r;_EKp&Br!Ps5"mq*'@YqgSPFqgSA at JUZp6JcC<$S,\%gqgO8!r;b[R
+rrAkpJ,~>
+TE"iimJm+bq>^<lJcG9?r;_EKp&Br!Ps5"mq*'@YqgSPFqgSA at JUZp6JcC<$S,\%gqgO8!r;b[R
+rrAkpJ,~>
+TE"iimJm+bq>^<lJcG9?r;_EKp&BriQ)aZ"q5T"cqo8X9qo8I3J]@#qJcC<$S,\&Zqo4?ir;b[R
+rrAkpJ,~>
+U&Y&kli6n`q>^BnJcG'9r;_EKq>Z5!R6H1Nl[Jj6qgSA at JUZp6JcC<$QiDVcs*fP!r;bgVrrAkp
+J,~>
+U&Y&kli6n`q>^BnJcG'9r;_EKq>Z5!R6H1Nl[Jj6qgSA at JUZp6JcC<$QiDVcs*fP!r;bgVrrAkp
+J,~>
+U&Y&kli6n`q>^BnJcG'9r;_EKq>Z5iRAthXlc/r)qo8I3J]@#qJcC<$QiDWVs2KWir;bgVrrAkp
+J,~>
+U&Y&kli6n`q>^BnJcG'9r;_EKq>Z5!R6H1Nl[Jj6qgSA at JUZp6JcC<$QiDVcs*fP!r;bgVrrAkp
+J,~>
+U&Y&kli6n`q>^BnJcG'9r;_EKq>Z5!R6H1Nl[Jj6qgSA at JUZp6JcC<$QiDVcs*fP!r;bgVrrAkp
+J,~>
+U&Y&kli6n`q>^BnJcG'9r;_EKq>Z5iRAthXlc/r)qo8I3J]@#qJcC<$QiDWVs2KWir;bgVrrAkp
+J,~>
+U&XK[q>^$dJcFp5r;_EKrVqM!SNd(&qu;4ro7$]>qgSA at JUZp6JcC<$PQ-8aJcG]Kr;bsZrrAkp
+J,~>
+U&XK[q>^$dJcFp5r;_EKrVqM!SNd(&qu;4ro7$]>qgSA at JUZp6JcC<$PQ-8aJcG]Kr;bsZrrAkp
+J,~>
+U&XK[q>^$dJcFp5r;_EKrVqMiSZ;_0qu;5eo>^e1qo8I3J]@#qJcC<$PQ-9TJcG]Kr;bsZrrAkp
+J,~>
+U&XK[q>^$dJcFp5r;_EKrVqM!SNd(&qu;4ro7$]>qgSA at JUZp6JcC<$PQ-8aJcG]Kr;bsZrrAkp
+J,~>
+U&XK[q>^$dJcFp5r;_EKrVqM!SNd(&qu;4ro7$]>qgSA at JUZp6JcC<$PQ-8aJcG]Kr;bsZrrAkp
+J,~>
+U&XK[q>^$dJcFp5r;_EKrVqMiSZ;_0qu;5eo>^e1qo8I3J]@#qJcC<$PQ-9TJcG]Kr;bsZrrAkp
+J,~>
+U&XK[p]($hJcFX-qZ)9KJU[WJV`t!,q>Z"po7$]>qgSA at JUZp6JcC<$O8juaJcGQGqZ,s^rrAkp
+J,~>
+U&XK[p]($hJcFX-qZ)9KJU[WJV`t!,q>Z"po7$]>qgSA at JUZp6JcC<$O8juaJcGQGqZ,s^rrAkp
+J,~>
+U&XK[p]($hJcFX-qZ)9KJ]@`0VlKX6q>Z#co>^e1qo8I3J]@#qJcC<$O8k!TJcGQGqZ,s^rrAkp
+J,~>
+U&XK[p]($hJcFX-qZ)9KJU[WJV`t!,q>Z"po7$]>qgSA at JUZp6JcC<$O8juaJcGQGqZ,s^rrAkp
+J,~>
+U&XK[p]($hJcFX-qZ)9KJU[WJV`t!,q>Z"po7$]>qgSA at JUZp6JcC<$O8juaJcGQGqZ,s^rrAkp
+J,~>
+U&XK[p]($hJcFX-qZ)9KJ]@`0VlKX6q>Z#co>^e1qo8I3J]@#qJcC<$O8k!TJcGQGqZ,s^rrAkp
+J,~>
+JcC<$e,T at HL];pSq0o_8o7$N8JU[3>rrDqFq>Z"pl[FEbJcCT,NIHHYoDeahn,NCfV#Pr~>
+JcC<$e,T at HL];pSq0o_8o7$N8JU[3>rrDqFq>Z"pl[FEbJcCT,NIHHYoDeahn,NCfV#Pr~>
+JcC<$e,T at HL];qFq8ThBo>^V+J]@<$rrDr9q>Z#clc+MUJcCT,NQ-PLoDeahn,NCfV#Pr~>
+JcC<$e,T at HL];pSq0o_8o7$N8JU[3>rrDqFq>Z"pl[FEbJcCT,NIHHYoDeahn,NCfV#Pr~>
+JcC<$e,T at HL];pSq0o_8o7$N8JU[3>rrDqFq>Z"pl[FEbJcCT,NIHHYoDeahn,NCfV#Pr~>
+JcC<$e,T at HL];qFq8ThBo>^V+J]@<$rrDr9q>Z#clc+MUJcCT,NQ-PLoDeahn,NCfV#Pr~>
+JcC<$ci<qDMuS?WomXY>m=+m2JU[3>rrDqFq>Z"pl[FEbJcCH(Oa_l]n,N=doDegjV#Pr~>
+JcC<$ci<qDMuS?WomXY>m=+m2JU[3>rrDqFq>Z"pl[FEbJcCH(Oa_l]n,N=doDegjV#Pr~>
+JcC<$ci<qDMuS at Jou=bHmDeu%J]@<$rrDr9q>Z#clc+MUJcCH(OiDtPn,N=doDegjV#Pr~>
+JcC<$ci<qDMuS?WomXY>m=+m2JU[3>rrDqFq>Z"pl[FEbJcCH(Oa_l]n,N=doDegjV#Pr~>
+JcC<$ci<qDMuS?WomXY>m=+m2JU[3>rrDqFq>Z"pl[FEbJcCH(Oa_l]n,N=doDegjV#Pr~>
+JcC<$ci<qDMuS at Jou=bHmDeu%J]@<$rrDr9q>Z#clc+MUJcCH(OiDtPn,N=doDegjV#Pr~>
+JcC<$bQ%M at O8jc[nUAYFjaR%*JU[3>rrDqFq>Z"pl[FEbJcC<$Q%";ali6n`p](6nV#Pr~>
+JcC<$bQ%M at O8jc[nUAYFjaR%*JU[3>rrDqFq>Z"pl[FEbJcC<$Q%";ali6n`p](6nV#Pr~>
+JcC<$bQ%M at O8jdNn]&bPji7,rJ]@<$rrDr9q>Z#clc+MUJcC<$Q,\CTli6n`p](6nV#Pr~>
+JcC<$bQ%M at O8jc[nUAYFjaR%*JU[3>rrDqFq>Z"pl[FEbJcC<$Q%";ali6n`p](6nV#Pr~>
+JcC<$bQ%M at O8jc[nUAYFjaR%*JU[3>rrDqFq>Z"pl[FEbJcC<$Q%";ali6n`p](6nV#Pr~>
+JcC<$bQ%M at O8jdNn]&bPji7,rJ]@<$rrDr9q>Z#clc+MUJcC<$Q,\CTli6n`p](6nV#Pr~>
+JcC<$a8c)<PQ-2_m=*YNh1#2"JU[3>rrDqFq>Z"pl[FEbJcC<$rVr:7JcFp5r;c`prrAkpJ,~>
+JcC<$a8c)<PQ-2_m=*YNh1#2"JU[3>rrDqFq>Z"pl[FEbJcC<$rVr:7JcFp5r;c`prrAkpJ,~>
+JcC<$a8c)<PQ-3RmDdbXh8]9jJ]@<$rrDr9q>Z#clc+MUJcC<$rVr;*JcFp5r;c`prrAkpJ,~>
+JcC<$a8c)<PQ-2_m=*YNh1#2"JU[3>rrDqFq>Z"pl[FEbJcC<$rVr:7JcFp5r;c`prrAkpJ,~>
+JcC<$a8c)<PQ-2_m=*YNh1#2"JU[3>rrDqFq>Z"pl[FEbJcC<$rVr:7JcFp5r;c`prrAkpJ,~>
+JcC<$a8c)<PQ-3RmDdbXh8]9jJ]@<$rrDr9q>Z#clc+MUJcC<$rVr;*JcFp5r;c`prrAkpJ,~>
+JcC<$_uKT6RK%hel$hSTf7*PqJU[3>rrDqFq>Z"pl[FEbJcC<$q>["7JcFd1r;cltrrAkpJ,~>
+JcC<$_uKT6RK%hel$hSTf7*PqJU[3>rrDqFq>Z"pl[FEbJcC<$q>["7JcFd1r;cltrrAkpJ,~>
+JcC<$_uKT6RK%iXl,M\^f>dXdJ]@<$rrDr9q>Z#clc+MUJcC<$q>[#*JcFd1r;cltrrAkpJ,~>
+JcC<$_uKT6RK%hel$hSTf7*PqJU[3>rrDqFq>Z"pl[FEbJcC<$q>["7JcFd1r;cltrrAkpJ,~>
+JcC<$_uKT6RK%hel$hSTf7*PqJU[3>rrDqFq>Z"pl[FEbJcC<$q>["7JcFd1r;cltrrAkpJ,~>
+JcC<$_uKT6RK%iXl,M\^f>dXdJ]@<$rrDr9q>Z#clc+MUJcC<$q>[#*JcFd1r;cltrrAkpJ,~>
+JcC<$^&S$2Sc=7ijaQS\c[P]iJU[3>rrDqFq>Z"pl[FEbJcC<$oDbS7JcFX-r;`YnJ,~>
+JcC<$^&S$2Sc=7ijaQS\c[P]iJU[3>rrDqFq>Z"pl[FEbJcC<$oDbS7JcFX-r;`YnJ,~>
+JcC<$^&S$2Sc=8\ji6\fcc5e\J]@<$rrDr9q>Z#clc+MUJcC<$oDbT*JcFX-r;`YnJ,~>
+JcC<$^&S$2Sc=7ijaQS\c[P]iJU[3>rrDqFq>Z"pl[FEbJcC<$oDbS7JcFX-r;`YnJ,~>
+JcC<$^&S$2Sc=7ijaQS\c[P]iJU[3>rrDqFq>Z"pl[FEbJcC<$oDbS7JcFX-r;`YnJ,~>
+JcC<$^&S$2Sc=8\ji6\fcc5e\J]@<$rrDr9q>Z#clc+MUJcC<$oDbT*JcFX-r;`YnJ,~>
+JcC<$\c;U.U&T[mhgYGda+!jaJU[3>rrDqFq>Z"pl[FEbJcC<$n,K;7JcFp5o`1ffJ,~>
+JcC<$\c;U.U&T[mhgYGda+!jaJU[3>rrDqFq>Z"pl[FEbJcC<$n,K;7JcFp5o`1ffJ,~>
+JcC<$\c;U.U&T\`ho>Pna2[rTJ]@<$rrDr9q>Z#clc+MUJcC<$n,K<*JcFp5o`1ffJ,~>
+JcC<$\c;U.U&T[mhgYGda+!jaJU[3>rrDqFq>Z"pl[FEbJcC<$n,K;7JcFp5o`1ffJ,~>
+JcC<$\c;U.U&T[mhgYGda+!jaJU[3>rrDqFq>Z"pl[FEbJcC<$n,K;7JcFp5o`1ffJ,~>
+JcC<$\c;U.U&T\`ho>Pna2[rTJ]@<$rrDr9q>Z#clc+MUJcC<$n,K<*JcFp5o`1ffJ,~>
+JcC<$[K$1*V>l*qiI:\(`I at X_JU[3>rrDqFq>Z"pl[FEbJcC<$li4#7JcG3=q#L*fr;`erJ,~>
+JcC<$[K$1*V>l*qiI:\(`I at X_JU[3>rrDqFq>Z"pl[FEbJcC<$li4#7JcG3=q#L*fr;`erJ,~>
+JcC<$[K$1*V>l+diPtcp`Q%`RJ]@<$rrDr9q>Z#clc+MUJcC<$li4$*JcG3=q#L*fr;`erJ,~>
+JcC<$[K$1*V>l*qiI:\(`I at X_JU[3>rrDqFq>Z"pl[FEbJcC<$li4#7JcG3=q#L*fr;`erJ,~>
+JcC<$[K$1*V>l*qiI:\(`I at X_JU[3>rrDqFq>Z"pl[FEbJcC<$li4#7JcG3=q#L*fr;`erJ,~>
+JcC<$[K$1*V>l+diPtcp`Q%`RJ]@<$rrDr9q>Z#clc+MUJcC<$li4$*JcG3=q#L*fr;`erJ,~>
+JcC<$[K$%&WW.NukC2t$aaX'cJU[3>rrDqFq>Z"pl[FEbJcC<$kPq`7JcGKEq#K[ZqZ*f!J,~>
+JcC<$[K$%&WW.NukC2t$aaX'cJU[3>rrDqFq>Z"pl[FEbJcC<$kPq`7JcGKEq#K[ZqZ*f!J,~>
+JcC<$[K$%&WW.OhkJm&lai=/VJ]@<$rrDr9q>Z#clc+MUJcC<$kPqa*JcGKEq#K[ZqZ*f!J,~>
+JcC<$[K$%&WW.NukC2t$aaX'cJU[3>rrDqFq>Z"pl[FEbJcC<$kPq`7JcGKEq#K[ZqZ*f!J,~>
+JcC<$[K$%&WW.NukC2t$aaX'cJU[3>rrDqFq>Z"pl[FEbJcC<$kPq`7JcGKEq#K[ZqZ*f!J,~>
+JcC<$[K$%&WW.OhkJm&lai=/VJ]@<$rrDr9q>Z#clc+MUJcC<$kPqa*JcGKEq#K[ZqZ*f!J,~>
+JcC<$^&Rm.q>^BnXoEs$msaBuc$oKgJU[3>rrDqFq>Z"pl[FEbJcC<$j8ZH7JcG]KqZ,CNr;a/'
+J,~>
+JcC<$^&Rm.q>^BnXoEs$msaBuc$oKgJU[3>rrDqFq>Z"pl[FEbJcC<$j8ZH7JcG]KqZ,CNr;a/'
+J,~>
+JcC<$^&Rm.q>^BnXoEsln&FJhc,TSZJ]@<$rrDr9q>Z#clc+MUJcC<$j8ZI*JcG]KqZ,CNr;a/'
+J,~>
+JcC<$^&Rm.q>^BnXoEs$msaBuc$oKgJU[3>rrDqFq>Z"pl[FEbJcC<$j8ZH7JcG]KqZ,CNr;a/'
+J,~>
+JcC<$^&Rm.q>^BnXoEs$msaBuc$oKgJU[3>rrDqFq>Z"pl[FEbJcC<$j8ZH7JcG]KqZ,CNr;a/'
+J,~>
+JcC<$^&Rm.q>^BnXoEsln&FJhc,TSZJ]@<$rrDr9q>Z#clc+MUJcC<$j8ZI*JcG]KqZ,CNr;a/'
+J,~>
+JcC<$`W,`6mJm%`Zi>T*pO:fqd=1okJU[3>rrDqFq>Z"pl[FEbJcC<$huC07L&^rKdJs4H[/YX~>
+JcC<$`W,`6mJm%`Zi>T*pO:fqd=1okJU[3>rrDqFq>Z"pl[FEbJcC<$huC07L&^rKdJs4H[/YX~>
+JcC<$`W,`6mJm%`Zi>TrpVtnddDl"^J]@<$rrDr9q>Z#clc+MUJcC<$huC1*L&^rKdJs4H[/YX~>
+JcC<$`W,`6mJm%`Zi>T*pO:fqd=1okJU[3>rrDqFq>Z"pl[FEbJcC<$huC07L&^rKdJs4H[/YX~>
+JcC<$`W,`6mJm%`Zi>T*pO:fqd=1okJU[3>rrDqFq>Z"pl[FEbJcC<$huC07L&^rKdJs4H[/YX~>
+JcC<$`W,`6mJm%`Zi>TrpVtnddDl"^J]@<$rrDr9q>Z#clc+MUJcC<$huC1*L&^rKdJs4H[/YX~>
+JcC<$a8c/>huEWT\,V#.rI3#kf7*PqJU[3>rrDqFq>Z"pl[FEbJcC<$g&Ja7NW8eSJcGTHJ,~>
+JcC<$a8c/>huEWT\,V#.rI3#kf7*PqJU[3>rrDqFq>Z"pl[FEbJcC<$g&Ja7NW8eSJcGTHJ,~>
+JcC<$a8c/>huEWT\,V$!rPm+^f>dXdJ]@<$rrDr9q>Z#clc+MUJcC<$g&Jb*NW8eSJcGTHJ,~>
+JcC<$a8c/>huEWT\,V#.rI3#kf7*PqJU[3>rrDqFq>Z"pl[FEbJcC<$g&Ja7NW8eSJcGTHJ,~>
+JcC<$a8c/>huEWT\,V#.rI3#kf7*PqJU[3>rrDqFq>Z"pl[FEbJcC<$g&Ja7NW8eSJcGTHJ,~>
+JcC<$a8c/>huEWT\,V$!rPm+^f>dXdJ]@<$rrDr9q>Z#clc+MUJcC<$g&Jb*NW8eSJcGTHJ,~>
+JcC<$TE"ii]DmS6_>i8=q>Z"po7$]>qgSA at JUZp6JcC<$JcF:#_1%[Lq#H!Go)F4~>
+JcC<$TE"ii]DmS6_>i8=q>Z"po7$]>qgSA at JUZp6JcC<$JcF:#_1%[Lq#H!Go)F4~>
+JcC<$TE"ii]DmT)_>i90q>Z#co>^e1qo8I3J]@#qJcC<$JcF:#_8_c?q#H!Go)F4~>
+JcC<$TE"ii]DmS6_>i8=q>Z"po7$]>qgSA at JUZp6JcC<$JcF:#_1%[Lq#H!Go)F4~>
+JcC<$TE"ii]DmS6_>i8=q>Z"po7$]>qgSA at JUZp6JcC<$JcF:#_1%[Lq#H!Go)F4~>
+JcC<$TE"ii]DmT)_>i90q>Z#co>^e1qo8I3J]@#qJcC<$JcF:#_8_c?q#H!Go)F4~>
+JcC<$S,`Ee^]0:B[K#-5q>Z"po7$]>qgSA at JUZp6JcC<$JcF-t`I=<VqZ)3IlMlA~>
+JcC<$S,`Ee^]0:B[K#-5q>Z"po7$]>qgSA at JUZp6JcC<$JcF-t`I=<VqZ)3IlMlA~>
+JcC<$S,`Ee^]0;5[K#.(q>Z#co>^e1qo8I3J]@#qJcC<$JcF-t`Q"DIqZ)3IlMlA~>
+JcC<$S,`Ee^]0:B[K#-5q>Z"po7$]>qgSA at JUZp6JcC<$JcF-t`I=<VqZ)3IlMlA~>
+JcC<$S,`Ee^]0:B[K#-5q>Z"po7$]>qgSA at JUZp6JcC<$JcF-t`I=<VqZ)3IlMlA~>
+JcC<$S,`Ee^]0;5[K#.(q>Z#co>^e1qo8I3J]@#qJcC<$JcF-t`Q"DIqZ)3IlMlA~>
+JcC<$QiI!a_uGpLX8h4/q>Z"po7$]>qgSA at JUZp6JcC<$JcF!paaU#bq#H!GjSs`~>
+JcC<$QiI!a_uGpLX8h4/q>Z"po7$]>qgSA at JUZp6JcC<$JcF!paaU#bq#H!GjSs`~>
+JcC<$QiI!a_uGq?X8h5"q>Z#co>^e1qo8I3J]@#qJcC<$JcF!pai:+Uq#H!GjSs`~>
+JcC<$QiI!a_uGpLX8h4/q>Z"po7$]>qgSA at JUZp6JcC<$JcF!paaU#bq#H!GjSs`~>
+JcC<$QiI!a_uGpLX8h4/q>Z"po7$]>qgSA at JUZp6JcC<$JcF!paaU#bq#H!GjSs`~>
+JcC<$QiI!a_uGq?X8h5"q>Z#co>^e1qo8I3J]@#qJcC<$JcF!pai:+Uq#H!GjSs`~>
+JcC<$PQ1L[ao at iZTE")'q>Z"po7$]>qgSA at JUZp6JcC<$JcEjlc$l_nq#H!Gh#Dm~>
+JcC<$PQ1L[ao at iZTE")'q>Z"po7$]>qgSA at JUZp6JcC<$JcEjlc$l_nq#H!Gh#Dm~>
+JcC<$PQ1L[ao at jMTE")oq>Z#co>^e1qo8I3J]@#qJcC<$JcEjlc,Qgaq#H!Gh#Dm~>
+JcC<$PQ1L[ao at iZTE")'q>Z"po7$]>qgSA at JUZp6JcC<$JcEjlc$l_nq#H!Gh#Dm~>
+JcC<$PQ1L[ao at iZTE")'q>Z"po7$]>qgSA at JUZp6JcC<$JcEjlc$l_nq#H!Gh#Dm~>
+JcC<$PQ1L[ao at jMTE")oq>Z#co>^e1qo8I3J]@#qJcC<$JcEjlc,Qgaq#H!Gh#Dm~>
+JcC<$NW8qWc2XPfPQ0rtq>Z"po7$]>qgSA at JUZp6JcC<$JcE^hd=/A#qZ)3IeGk%~>
+JcC<$NW8qWc2XPfPQ0rtq>Z"po7$]>qgSA at JUZp6JcC<$JcE^hd=/A#qZ)3IeGk%~>
+JcC<$NW8qWc2XQYPQ0sgq>Z#co>^e1qo8I3J]@#qJcC<$JcE^hdDiHkqZ)3IeGk%~>
+JcC<$NW8qWc2XPfPQ0rtq>Z"po7$]>qgSA at JUZp6JcC<$JcE^hd=/A#qZ)3IeGk%~>
+JcC<$NW8qWc2XPfPQ0rtq>Z"po7$]>qgSA at JUZp6JcC<$JcE^hd=/A#qZ)3IeGk%~>
+JcC<$NW8qWc2XQYPQ0sgq>Z#co>^e1qo8I3J]@#qJcC<$JcE^hdDiHkqZ)3IeGk%~>
+JcC<$M?!MSdJp7rL&^[lq>Z"po7$]>qgSA at JUZp6JcC<$JcELbf7(:1q#H!GcMrC~>
+JcC<$M?!MSdJp7rL&^[lq>Z"po7$]>qgSA at JUZp6JcC<$JcELbf7(:1q#H!GcMrC~>
+JcC<$M?!MSdJp8eL&^\_q>Z#co>^e1qo8I3J]@#qJcC<$JcELbf>bB$q#H!GcMrC~>
+JcC<$M?!MSdJp7rL&^[lq>Z"po7$]>qgSA at JUZp6JcC<$JcELbf7(:1q#H!GcMrC~>
+JcC<$M?!MSdJp7rL&^[lq>Z"po7$]>qgSA at JUZp6JcC<$JcELbf7(:1q#H!GcMrC~>
+JcC<$M?!MSdJp8eL&^\_q>Z#co>^e1qo8I3J]@#qJcC<$JcELbf>bB$q#H!GcMrC~>
+JcC<$L&_)Oec2n'JcGWIomZ`:JU[3>rrDqFq>Z"pl[FEbJcC<$]DpW7_>j<2JcEaiJ,~>
+JcC<$L&_)Oec2n'JcGWIomZ`:JU[3>rrDqFq>Z"pl[FEbJcC<$]DpW7_>j<2JcEaiJ,~>
+JcC<$L&_)Oec2noJcGWIou?h-J]@<$rrDr9q>Z#clc+MUJcC<$]DpX*_>j<2JcEaiJ,~>
+JcC<$L&_)Oec2n'JcGWIomZ`:JU[3>rrDqFq>Z"pl[FEbJcC<$]DpW7_>j<2JcEaiJ,~>
+JcC<$L&_)Oec2n'JcGWIomZ`:JU[3>rrDqFq>Z"pl[FEbJcC<$]DpW7_>j<2JcEaiJ,~>
+JcC<$L&_)Oec2noJcGWIou?h-J]@<$rrDr9q>Z#clc+MUJcC<$]DpX*_>j<2JcEaiJ,~>
+JcC<$JcGZKg&JU3JcG3=q0r/>JU[3>rrDqFq>Z"pl[FEbJcC<$\,Y?7aoD/:JcEIaJ,~>
+JcC<$JcGZKg&JU3JcG3=q0r/>JU[3>rrDqFq>Z"pl[FEbJcC<$\,Y?7aoD/:JcEIaJ,~>
+JcC<$JcGZKg&JV&JcG3=q8W71J]@<$rrDr9q>Z#clc+MUJcC<$\,Y@*aoD/:JcEIaJ,~>
+JcC<$JcGZKg&JU3JcG3=q0r/>JU[3>rrDqFq>Z"pl[FEbJcC<$\,Y?7aoD/:JcEIaJ,~>
+JcC<$JcGZKg&JU3JcG3=q0r/>JU[3>rrDqFq>Z"pl[FEbJcC<$\,Y?7aoD/:JcEIaJ,~>
+JcC<$JcGZKg&JV&JcG3=q8W71J]@<$rrDr9q>Z#clc+MUJcC<$\,Y@*aoD/:JcEIaJ,~>
+JcC<$p&G$lMuW_Uh>b<?JcFd1rI4SBJU[3>rrDqFq>Z"pl[FEbJcC<$ZiB'7ci<kBJcE1YJ,~>
+JcC<$p&G$lMuW_Uh>b<?JcFd1rI4SBJU[3>rrDqFq>Z"pl[FEbJcC<$ZiB'7ci<kBJcE1YJ,~>
+JcC<$p&G$lMuW_Uh>b=2JcFd1rPn[5J]@<$rrDr9q>Z#clc+MUJcC<$ZiB(*ci<kBJcE1YJ,~>
+JcC<$p&G$lMuW_Uh>b<?JcFd1rI4SBJU[3>rrDqFq>Z"pl[FEbJcC<$ZiB'7ci<kBJcE1YJ,~>
+JcC<$p&G$lMuW_Uh>b<?JcFd1rI4SBJU[3>rrDqFq>Z"pl[FEbJcC<$ZiB'7ci<kBJcE1YJ,~>
+JcC<$p&G$lMuW_Uh>b=2JcFd1rPn[5J]@<$rrDr9q>Z#clc+MUJcC<$ZiB(*ci<kBJcE1YJ,~>
+JcC<$p](0lp&FO^U]:2kj8[/KJcF-tJU[3>rrDqFq>Z"pl[FEbJcC<$YQ*d7fDkXHJcG'9o`4U`
+q#KXYJ,~>
+JcC<$p](0lp&FO^U]:2kj8[/KJcF-tJU[3>rrDqFq>Z"pl[FEbJcC<$YQ*d7fDkXHJcG'9o`4U`
+q#KXYJ,~>
+JcC<$p](0lp&FO^U]:2kj8[0>JcF-tJ]@<$rrDr9q>Z#clc+MUJcC<$YQ*e*fDkXHJcG'9o`4U`
+q#KXYJ,~>
+JcC<$p](0lp&FO^U]:2kj8[/KJcF-tJU[3>rrDqFq>Z"pl[FEbJcC<$YQ*d7fDkXHJcG'9o`4U`
+q#KXYJ,~>
+JcC<$p](0lp&FO^U]:2kj8[/KJcF-tJU[3>rrDqFq>Z"pl[FEbJcC<$YQ*d7fDkXHJcG'9o`4U`
+q#KXYJ,~>
+JcC<$p](0lp&FO^U]:2kj8[0>JcF-tJ]@<$rrDr9q>Z#clc+MUJcC<$YQ*e*fDkXHJcG'9o`4U`
+q#KXYJ,~>
+JcC<$q>^<lp&FO^ScAWgkPrkWJcEjlJU[3>rrDqFq>Z"pl[FEbJcC<$WW2 at 7huEKPJcFj3nGr=`
+o`4:WJ,~>
+JcC<$q>^<lp&FO^ScAWgkPrkWJcEjlJU[3>rrDqFq>Z"pl[FEbJcC<$WW2 at 7huEKPJcFj3nGr=`
+o`4:WJ,~>
+JcC<$q>^<lp&FO^ScAWgkPrlJJcEjlJ]@<$rrDr9q>Z#clc+MUJcC<$WW2A*huEKPJcFj3nGr=`
+o`4:WJ,~>
+JcC<$q>^<lp&FO^ScAWgkPrkWJcEjlJU[3>rrDqFq>Z"pl[FEbJcC<$WW2 at 7huEKPJcFj3nGr=`
+o`4:WJ,~>
+JcC<$q>^<lp&FO^ScAWgkPrkWJcEjlJU[3>rrDqFq>Z"pl[FEbJcC<$WW2 at 7huEKPJcFj3nGr=`
+o`4:WJ,~>
+JcC<$q>^<lp&FO^ScAWgkPrlJJcEjlJ]@<$rrDr9q>Z#clc+MUJcC<$WW2A*huEKPJcFj3nGr=`
+o`4:WJ,~>
+JcC<$s8V`lp&FsjNW8qWli5RcJcELbJU[9 at rrDqFq>Z"pl[FEbJcC<$V>p(7kPt>XJcFX-qZ-Hl
+qZ-Nnr;cZnr;c3aJ,~>
+JcC<$s8V`lp&FsjNW8qWli5RcJcELbJU[9 at rrDqFq>Z"pl[FEbJcC<$V>p(7kPt>XJcFX-qZ-Hl
+qZ-Nnr;cZnr;c3aJ,~>
+JcC<$s8V`lp&FsjNW8qWli5SVJcELbJ]@B&rrDr9q>Z#clc+MUJcC<$V>p)*kPt>XJcFX-qZ-Hl
+qZ-Nnr;cZnr;c3aJ,~>
+JcC<$s8V`lp&FsjNW8qWli5RcJcELbJU[9 at rrDqFq>Z"pl[FEbJcC<$V>p(7kPt>XJcFX-qZ-Hl
+qZ-Nnr;cZnr;c3aJ,~>
+JcC<$s8V`lp&FsjNW8qWli5RcJcELbJU[9 at rrDqFq>Z"pl[FEbJcC<$V>p(7kPt>XJcFX-qZ-Hl
+qZ-Nnr;cZnr;c3aJ,~>
+JcC<$s8V`lp&FsjNW8qWli5SVJcELbJ]@B&rrDr9q>Z#clc+MUJcC<$V>p)*kPt>XJcFX-qZ-Hl
+qZ-Nnr;cZnr;c3aJ,~>
+JcC<$s8V`lp&FsjM?!MSn,M3mJcE.XJU[EDrrDqFq>Z"pl[FEbJcC<$U&Xe7mJm%`JcF@%r;cNj
+r;c`pr;cZnr;c3aJ,~>
+JcC<$s8V`lp&FsjM?!MSn,M3mJcE.XJU[EDrrDqFq>Z"pl[FEbJcC<$U&Xe7mJm%`JcF@%r;cNj
+r;c`pr;cZnr;c3aJ,~>
+JcC<$s8V`lp&FsjM?!MSn,M4`JcE.XJ]@N*rrDr9q>Z#clc+MUJcC<$U&Xf*mJm%`JcF@%r;cNj
+r;c`pr;cZnr;c3aJ,~>
+JcC<$s8V`lp&FsjM?!MSn,M3mJcE.XJU[EDrrDqFq>Z"pl[FEbJcC<$U&Xe7mJm%`JcF@%r;cNj
+r;c`pr;cZnr;c3aJ,~>
+JcC<$s8V`lp&FsjM?!MSn,M3mJcE.XJU[EDrrDqFq>Z"pl[FEbJcC<$U&Xe7mJm%`JcF@%r;cNj
+r;c`pr;cZnr;c3aJ,~>
+JcC<$s8V`lp&FsjM?!MSn,M4`JcE.XJ]@N*rrDr9q>Z#clc+MUJcC<$U&Xf*mJm%`JcF@%r;cNj
+r;c`pr;cZnr;c3aJ,~>
+JcC<$p](0lp&FsjL&_)OoDdp$JcD_LJU[QHrrDqFq>Z"pl[FEbJcC<$ScAM7p&FgfJcF-tr;cNj
+r;cfrr;cNjr;c9cJ,~>
+JcC<$p](0lp&FsjL&_)OoDdp$JcD_LJU[QHrrDqFq>Z"pl[FEbJcC<$ScAM7p&FgfJcF-tr;cNj
+r;cfrr;cNjr;c9cJ,~>
+JcC<$p](0lp&FsjL&_)OoDdplJcD_LJ]@Z.rrDr9q>Z#clc+MUJcC<$ScAN*p&FgfJcF-tr;cNj
+r;cfrr;cNjr;c9cJ,~>
+JcC<$p](0lp&FsjL&_)OoDdp$JcD_LJU[QHrrDqFq>Z"pl[FEbJcC<$ScAM7p&FgfJcF-tr;cNj
+r;cfrr;cNjr;c9cJ,~>
+JcC<$p](0lp&FsjL&_)OoDdp$JcD_LJU[QHrrDqFq>Z"pl[FEbJcC<$ScAM7p&FgfJcF-tr;cNj
+r;cfrr;cNjr;c9cJ,~>
+JcC<$p](0lp&FsjL&_)OoDdplJcD_LJ]@Z.rrDr9q>Z#clc+MUJcC<$ScAN*p&FgfJcF-tr;cNj
+r;cfrr;cNjr;c9cJ,~>
+JcC<$p](0lp&G$ls8VfnMuWYSq>]i2JcD;@JU[V!qgSA at JUZp6JcC<$JcD/<rI4_Fq#H!G\c;U.
+rVufrp&Fsjmf.e~>
+JcC<$p](0lp&G$ls8VfnMuWYSq>]i2JcD;@JU[V!qgSA at JUZp6JcC<$JcD/<rI4_Fq#H!G\c;U.
+rVufrp&Fsjmf.e~>
+JcC<$p](0lp&G$ls8VfnMuWYSq>]j%JcD;@J]@]iqo8I3J]@#qJcC<$JcD/<rPng9q#H!G\c;U.
+rVufrp&Fsjmf.e~>
+JcC<$p](0lp&G$ls8VfnMuWYSq>]i2JcD;@JU[V!qgSA at JUZp6JcC<$JcD/<rI4_Fq#H!G\c;U.
+rVufrp&Fsjmf.e~>
+JcC<$p](0lp&G$ls8VfnMuWYSq>]i2JcD;@JU[V!qgSA at JUZp6JcC<$JcD/<rI4_Fq#H!G\c;U.
+rVufrp&Fsjmf.e~>
+JcC<$p](0lp&G$ls8VfnMuWYSq>]j%JcD;@J]@]iqo8I3J]@#qJcC<$JcD/<rPng9q#H!G\c;U.
+rVufrp&Fsjmf.e~>
+JcC<$p](0lp]'[^L]@;QrVuP>JcCl4Kms%%qgSA at JUZp6JcC<$JcD/<q#H!GZiBt(qu?Tpp&Fsj
+mf.e~>
+JcC<$p](0lp]'[^L]@;QrVuP>JcCl4Kms%%qgSA at JUZp6JcC<$JcD/<q#H!GZiBt(qu?Tpp&Fsj
+mf.e~>
+JcC<$p](0lp]'[^L]@;QrVuQ1JcCl4KuX,mqo8I3J]@#qJcC<$JcD/<q#H!GZiBt(qu?Tpp&Fsj
+mf.e~>
+JcC<$p](0lp]'[^L]@;QrVuP>JcCl4Kms%%qgSA at JUZp6JcC<$JcD/<q#H!GZiBt(qu?Tpp&Fsj
+mf.e~>
+JcC<$p](0lp]'[^L]@;QrVuP>JcCl4Kms%%qgSA at JUZp6JcC<$JcD/<q#H!GZiBt(qu?Tpp&Fsj
+mf.e~>
+JcC<$p](0lp]'[^L]@;QrVuQ1JcCl4KuX,mqo8I3J]@#qJcC<$JcD/<q#H!GZiBt(qu?Tpp&Fsj
+mf.e~>
+JcC<$p](0lp](0lp](*jL&_)OqgO+rL&['[rrDqFq>Z"pl[FEbJcC<$TE"cgJcDqRq#L<lr;cNj
+r;c9cJ,~>
+JcC<$p](0lp](0lp](*jL&_)OqgO+rL&['[rrDqFq>Z"pl[FEbJcC<$TE"cgJcDqRq#L<lr;cNj
+r;c9cJ,~>
+JcC<$p](0lp](0lp](*jL&_)Oqo43eL&[(NrrDr9q>Z#clc+MUJcC<$TE"cgJcDqRq#L<lr;cNj
+r;c9cJ,~>
+JcC<$p](0lp](0lp](*jL&_)OqgO+rL&['[rrDqFq>Z"pl[FEbJcC<$TE"cgJcDqRq#L<lr;cNj
+r;c9cJ,~>
+JcC<$p](0lp](0lp](*jL&_)OqgO+rL&['[rrDqFq>Z"pl[FEbJcC<$TE"cgJcDqRq#L<lr;cNj
+r;c9cJ,~>
+JcC<$p](0lp](0lp](*jL&_)Oqo43eL&[(NrrDr9q>Z#clc+MUJcC<$TE"cgJcDqRq#L<lr;cNj
+r;c9cJ,~>
+JcC<$p](0lkPtJ\JcGZKJcC<$s8S./rrDqFq>Z"pl[FEbJcC<$VuQPmJcDeNqZ-Bjr;cNjr;c9c
+J,~>
+JcC<$p](0lkPtJ\JcGZKJcC<$s8S./rrDqFq>Z"pl[FEbJcC<$VuQPmJcDeNqZ-Bjr;cNjr;c9c
+J,~>
+JcC<$p](0lkPtJ\JcGZKJcC<$s8S/"rrDr9q>Z#clc+MUJcC<$VuQPmJcDeNqZ-Bjr;cNjr;c9c
+J,~>
+JcC<$p](0lkPtJ\JcGZKJcC<$s8S./rrDqFq>Z"pl[FEbJcC<$VuQPmJcDeNqZ-Bjr;cNjr;c9c
+J,~>
+JcC<$p](0lkPtJ\JcGZKJcC<$s8S./rrDqFq>Z"pl[FEbJcC<$VuQPmJcDeNqZ-Bjr;cNjr;c9c
+J,~>
+JcC<$p](0lkPtJ\JcGZKJcC<$s8S/"rrDr9q>Z#clc+MUJcC<$VuQPmJcDeNqZ-Bjr;cNjr;c9c
+J,~>
+JcC<$p](0lkPtJ\JcG]Kr;_EKJcGcMPCEN3qgSA at JUZp6JcC<$JcDqRq#H!GVuQVooDeahp&Fsj
+mf.e~>
+JcC<$p](0lkPtJ\JcG]Kr;_EKJcGcMPCEN3qgSA at JUZp6JcC<$JcDqRq#H!GVuQVooDeahp&Fsj
+mf.e~>
+JcC<$p](0lkPtJ\JcG]Kr;_EKJcGcMPK*V&qo8I3J]@#qJcC<$JcDqRq#H!GVuQVooDeahp&Fsj
+mf.e~>
+JcC<$p](0lkPtJ\JcG]Kr;_EKJcGcMPCEN3qgSA at JUZp6JcC<$JcDqRq#H!GVuQVooDeahp&Fsj
+mf.e~>
+JcC<$p](0lkPtJ\JcG]Kr;_EKJcGcMPCEN3qgSA at JUZp6JcC<$JcDqRq#H!GVuQVooDeahp&Fsj
+mf.e~>
+JcC<$p](0lkPtJ\JcG]Kr;_EKJcGcMPK*V&qo8I3J]@#qJcC<$JcDqRq#H!GVuQVooDeahp&Fsj
+mf.e~>
+JcC<$p](0lkPtJ\JcGQGr;_EKJcGcMQ[\r7qgSA at JUZp6JcC<$JcE4Zq#H!GU&Xuinc/Ofp&Fsj
+mf.e~>
+JcC<$p](0lkPtJ\JcGQGr;_EKJcGcMQ[\r7qgSA at JUZp6JcC<$JcE4Zq#H!GU&Xuinc/Ofp&Fsj
+mf.e~>
+JcC<$p](0lkPtJ\JcGQGr;_EKJcGcMQcB%*qo8I3J]@#qJcC<$JcE4Zq#H!GU&Xuinc/Ofp&Fsj
+mf.e~>
+JcC<$p](0lkPtJ\JcGQGr;_EKJcGcMQ[\r7qgSA at JUZp6JcC<$JcE4Zq#H!GU&Xuinc/Ofp&Fsj
+mf.e~>
+JcC<$p](0lkPtJ\JcGQGr;_EKJcGcMQ[\r7qgSA at JUZp6JcC<$JcE4Zq#H!GU&Xuinc/Ofp&Fsj
+mf.e~>
+JcC<$p](0lkPtJ\JcGQGr;_EKJcGcMQcB%*qo8I3J]@#qJcC<$JcE4Zq#H!GU&Xuinc/Ofp&Fsj
+mf.e~>
+JcC<$p](0lp](0lp&FsjJcGECqZ)3IJcD3grrDqFq>Z"pl[FEbJcC<$^&Rs0JcD/<r;c6br;cZn
+qZ-'aJ,~>
+JcC<$p](0lp](0lp&FsjJcGECqZ)3IJcD3grrDqFq>Z"pl[FEbJcC<$^&Rs0JcD/<r;c6br;cZn
+qZ-'aJ,~>
+JcC<$p](0lp](0lp&FsjJcGECqZ)3IJcD4ZrrDr9q>Z#clc+MUJcC<$^&Rs0JcD/<r;c6br;cZn
+qZ-'aJ,~>
+JcC<$p](0lp](0lp&FsjJcGECqZ)3IJcD3grrDqFq>Z"pl[FEbJcC<$^&Rs0JcD/<r;c6br;cZn
+qZ-'aJ,~>
+JcC<$p](0lp](0lp&FsjJcGECqZ)3IJcD3grrDqFq>Z"pl[FEbJcC<$^&Rs0JcD/<r;c6br;cZn
+qZ-'aJ,~>
+JcC<$p](0lp](0lp&FsjJcGECqZ)3IJcD4ZrrDr9q>Z#clc+MUJcC<$^&Rs0JcD/<r;c6br;cZn
+qZ-'aJ,~>
+JcC<$p](0lp](*jq>^BnJcG-;r;_EKJcD?krrDqFq>Z"pl[FEbJcC<$`W,`6JcD#8r;c0`r;cZn
+r;c3aJ,~>
+JcC<$p](0lp](*jq>^BnJcG-;r;_EKJcD?krrDqFq>Z"pl[FEbJcC<$`W,`6JcD#8r;c0`r;cZn
+r;c3aJ,~>
+JcC<$p](0lp](*jq>^BnJcG-;r;_EKJcD@^rrDr9q>Z#clc+MUJcC<$`W,`6JcD#8r;c0`r;cZn
+r;c3aJ,~>
+JcC<$p](0lp](*jq>^BnJcG-;r;_EKJcD?krrDqFq>Z"pl[FEbJcC<$`W,`6JcD#8r;c0`r;cZn
+r;c3aJ,~>
+JcC<$p](0lp](*jq>^BnJcG-;r;_EKJcD?krrDqFq>Z"pl[FEbJcC<$`W,`6JcD#8r;c0`r;cZn
+r;c3aJ,~>
+JcC<$p](0lp](*jq>^BnJcG-;r;_EKJcD@^rrDr9q>Z#clc+MUJcC<$`W,`6JcD#8r;c0`r;cZn
+r;c3aJ,~>
+JcC<$p](0lp&FO^JcG!7r;_EKJcGcMV1/FEqgSA at JUZp6JcC<$JcF!pq#L6jr;_EKRK)XSq>^$d
+m/MS~>
+JcC<$p](0lp&FO^JcG!7r;_EKJcGcMV1/FEqgSA at JUZp6JcC<$JcF!pq#L6jr;_EKRK)XSq>^$d
+m/MS~>
+JcC<$p](0lp&FO^JcG!7r;_EKJcGcMV8iN8qo8I3J]@#qJcC<$JcF!pq#L6jr;_EKRK)XSq>^$d
+m/MS~>
+JcC<$p](0lp&FO^JcG!7r;_EKJcGcMV1/FEqgSA at JUZp6JcC<$JcF!pq#L6jr;_EKRK)XSq>^$d
+m/MS~>
+JcC<$p](0lp&FO^JcG!7r;_EKJcGcMV1/FEqgSA at JUZp6JcC<$JcF!pq#L6jr;_EKRK)XSq>^$d
+m/MS~>
+JcC<$p](0lp&FO^JcG!7r;_EKJcGcMV8iN8qo8I3J]@#qJcC<$JcF!pq#L6jr;_EKRK)XSq>^$d
+m/MS~>
+JcC<$p](0loDeObJcF^/r;_EKJcGcMWIFjIqgSA at JUZp6JcC<$JcF4!qZ-$`r;_EKScA'Wp]($h
+kl6/~>
+JcC<$p](0loDeObJcF^/r;_EKJcGcMWIFjIqgSA at JUZp6JcC<$JcF4!qZ-$`r;_EKScA'Wp]($h
+kl6/~>
+JcC<$p](0loDeObJcF^/r;_EKJcGcMWQ+r<qo8I3J]@#qJcC<$JcF4!qZ-$`r;_EKScA'Wp]($h
+kl6/~>
+JcC<$p](0loDeObJcF^/r;_EKJcGcMWIFjIqgSA at JUZp6JcC<$JcF4!qZ-$`r;_EKScA'Wp]($h
+kl6/~>
+JcC<$p](0loDeObJcF^/r;_EKJcGcMWIFjIqgSA at JUZp6JcC<$JcF4!qZ-$`r;_EKScA'Wp]($h
+kl6/~>
+JcC<$p](0loDeObJcF^/r;_EKJcGcMWQ+r<qo8I3J]@#qJcC<$JcF4!qZ-$`r;_EKScA'Wp]($h
+kl6/~>
+JcC<$JcE4Zr;_EKJcGcMXa^9MqgSA at JUZp6JcC<$JcFL)q#KITr;_EKJcFa0J,~>
+JcC<$JcE4Zr;_EKJcGcMXa^9MqgSA at JUZp6JcC<$JcFL)q#KITr;_EKJcFa0J,~>
+JcC<$JcE4Zr;_EKJcGcMXiCA at qo8I3J]@#qJcC<$JcFL)q#KITr;_EKJcFa0J,~>
+JcC<$JcE4Zr;_EKJcGcMXa^9MqgSA at JUZp6JcC<$JcFL)q#KITr;_EKJcFa0J,~>
+JcC<$JcE4Zr;_EKJcGcMXa^9MqgSA at JUZp6JcC<$JcFL)q#KITr;_EKJcFa0J,~>
+JcC<$JcE4Zr;_EKJcGcMXiCA at qo8I3J]@#qJcC<$JcFL)q#KITr;_EKJcFa0J,~>
+JcC<$JcE(VqZ)3IJcE!(rrDqFq>Z"pl[FEbJcC<$j8\oTfDkdLJcC<$k5Tr~>
+JcC<$JcE(VqZ)3IJcE!(rrDqFq>Z"pl[FEbJcC<$j8\oTfDkdLJcC<$k5Tr~>
+JcC<$JcE(VqZ)3IJcE!prrDr9q>Z#clc+MUJcC<$j8\oTfDkdLJcC<$k5Tr~>
+JcC<$JcE(VqZ)3IJcE!(rrDqFq>Z"pl[FEbJcC<$j8\oTfDkdLJcC<$k5Tr~>
+JcC<$JcE(VqZ)3IJcE!(rrDqFq>Z"pl[FEbJcC<$j8\oTfDkdLJcC<$k5Tr~>
+JcC<$JcE(VqZ)3IJcE!prrDr9q>Z#clc+MUJcC<$j8\oTfDkdLJcC<$k5Tr~>
+JcC<$JcDkPr;_EKJcE-,rrDqFq>Z"pl[FEbJcC<$li6b\bQ%SBJcC<$kl6/~>
+JcC<$JcDkPr;_EKJcE-,rrDqFq>Z"pl[FEbJcC<$li6b\bQ%SBJcC<$kl6/~>
+JcC<$JcDkPr;_EKJcE-trrDr9q>Z#clc+MUJcC<$li6b\bQ%SBJcC<$kl6/~>
+JcC<$JcDkPr;_EKJcE-,rrDqFq>Z"pl[FEbJcC<$li6b\bQ%SBJcC<$kl6/~>
+JcC<$JcDkPr;_EKJcE-,rrDqFq>Z"pl[FEbJcC<$li6b\bQ%SBJcC<$kl6/~>
+JcC<$JcDkPr;_EKJcE-trrDr9q>Z#clc+MUJcC<$li6b\bQ%SBJcC<$kl6/~>
+JcC<$JcD_Lr;_EKJcGcM]70b[qgSA at JUZp6JcC<$JcG9?qZ)3IJcD\KJ,~>
+JcC<$JcD_Lr;_EKJcGcM]70b[qgSA at JUZp6JcC<$JcG9?qZ)3IJcD\KJ,~>
+JcC<$JcD_Lr;_EKJcGcM]>jjNqo8I3J]@#qJcC<$JcG9?qZ)3IJcD\KJ,~>
+JcC<$JcD_Lr;_EKJcGcM]70b[qgSA at JUZp6JcC<$JcG9?qZ)3IJcD\KJ,~>
+JcC<$JcD_Lr;_EKJcGcM]70b[qgSA at JUZp6JcC<$JcG9?qZ)3IJcD\KJ,~>
+JcC<$JcD_Lr;_EKJcGcM]>jjNqo8I3J]@#qJcC<$JcG9?qZ)3IJcD\KJ,~>
+JcC<$JcDSHr;_EKJcGcM^OH1_qgSA at JUZp6JcC<$JcGQGq#H!GJcDJEJ,~>
+JcC<$JcDSHr;_EKJcGcM^OH1_qgSA at JUZp6JcC<$JcGQGq#H!GJcDJEJ,~>
+JcC<$JcDSHr;_EKJcGcM^W-9Rqo8I3J]@#qJcC<$JcGQGq#H!GJcDJEJ,~>
+JcC<$JcDSHr;_EKJcGcM^OH1_qgSA at JUZp6JcC<$JcGQGq#H!GJcDJEJ,~>
+JcC<$JcDSHr;_EKJcGcM^OH1_qgSA at JUZp6JcC<$JcGQGq#H!GJcDJEJ,~>
+JcC<$JcDSHr;_EKJcGcM^W-9Rqo8I3J]@#qJcC<$JcGQGq#H!GJcDJEJ,~>
+JcC<$JcDGDr;_EKJcGcM_g_UcqgSA at JUZp6JcC<$JcGNGJcC<$Rf at m~>
+JcC<$JcDGDr;_EKJcGcM_g_UcqgSA at JUZp6JcC<$JcGNGJcC<$Rf at m~>
+JcC<$JcDGDr;_EKJcGcM_oD]Vqo8I3J]@#qJcC<$JcGNGJcC<$Rf at m~>
+JcC<$JcDGDr;_EKJcGcM_g_UcqgSA at JUZp6JcC<$JcGNGJcC<$Rf at m~>
+JcC<$JcDGDr;_EKJcGcM_g_UcqgSA at JUZp6JcC<$JcGNGJcC<$Rf at m~>
+JcC<$JcDGDr;_EKJcGcM_oD]Vqo8I3J]@#qJcC<$JcGNGJcC<$Rf at m~>
+JcC<$JcD;@r;_EKJcGcMa+"$gqgSA at JUZp6JcC<$M?!AOJcC<$P5g%~>
+JcC<$JcD;@r;_EKJcGcMa+"$gqgSA at JUZp6JcC<$M?!AOJcC<$P5g%~>
+JcC<$JcD;@r;_EKJcGcMa2\,Zqo8I3J]@#qJcC<$M?!AOJcC<$P5g%~>
+JcC<$JcD;@r;_EKJcGcMa+"$gqgSA at JUZp6JcC<$M?!AOJcC<$P5g%~>
+JcC<$JcD;@r;_EKJcGcMa+"$gqgSA at JUZp6JcC<$M?!AOJcC<$P5g%~>
+JcC<$JcD;@r;_EKJcGcMa2\,Zqo8I3J]@#qJcC<$M?!AOJcC<$P5g%~>
+JcC<$JcD/<qZ)3IJcEoBrrDqFq>Z"pl[FEbJcCf2qZ)3IJcCW-J,~>
+JcC<$JcD/<qZ)3IJcEoBrrDqFq>Z"pl[FEbJcCf2qZ)3IJcCW-J,~>
+JcC<$JcD/<qZ)3IJcEp5rrDr9q>Z#clc+MUJcCf2qZ)3IJcCW-J,~>
+JcC<$JcD/<qZ)3IJcEoBrrDqFq>Z"pl[FEbJcCf2qZ)3IJcCW-J,~>
+JcC<$JcD/<qZ)3IJcEoBrrDqFq>Z"pl[FEbJcCf2qZ)3IJcCW-J,~>
+JcC<$JcD/<qZ)3IJcEp5rrDr9q>Z#clc+MUJcCf2qZ)3IJcCW-J,~>
+JcC<$JcD):q#H!GJcF&FrrDqFq>Z"pl[FEbJcD):q#H!GJcCE'J,~>
+JcC<$JcD):q#H!GJcF&FrrDqFq>Z"pl[FEbJcD):q#H!GJcCE'J,~>
+JcC<$JcD):q#H!GJcF'9rrDr9q>Z#clc+MUJcD):q#H!GJcCE'J,~>
+JcC<$JcD):q#H!GJcF&FrrDqFq>Z"pl[FEbJcD):q#H!GJcCE'J,~>
+JcC<$JcD):q#H!GJcF&FrrDqFq>Z"pl[FEbJcD):q#H!GJcCE'J,~>
+JcC<$JcD):q#H!GJcF'9rrDr9q>Z#clc+MUJcD):q#H!GJcCE'J,~>
+JcC<$JcDABq#L6jr;_EKJcGcMeUIMuqgSA at JUZp6JcC<$TE"]eJcC<$JcGZJJ,~>
+JcC<$JcDABq#L6jr;_EKJcGcMeUIMuqgSA at JUZp6JcC<$TE"]eJcC<$JcGZJJ,~>
+JcC<$JcDABq#L6jr;_EKJcGcMe].Uhqo8I3J]@#qJcC<$TE"]eJcC<$JcGZJJ,~>
+JcC<$JcDABq#L6jr;_EKJcGcMeUIMuqgSA at JUZp6JcC<$TE"]eJcC<$JcGZJJ,~>
+JcC<$JcDABq#L6jr;_EKJcGcMeUIMuqgSA at JUZp6JcC<$TE"]eJcC<$JcGZJJ,~>
+JcC<$JcDABq#L6jr;_EKJcGcMe].Uhqo8I3J]@#qJcC<$TE"]eJcC<$JcGZJJ,~>
+JcC<$JcDYJq#Kg^r;_EKJcGcMfm`r$qgSA at JUZp6JcC<$VuQPmJcC<$JcGBBJ,~>
+JcC<$JcDYJq#Kg^r;_EKJcGcMfm`r$qgSA at JUZp6JcC<$VuQPmJcC<$JcGBBJ,~>
+JcC<$JcDYJq#Kg^r;_EKJcGcMfuF$lqo8I3J]@#qJcC<$VuQPmJcC<$JcGBBJ,~>
+JcC<$JcDYJq#Kg^r;_EKJcGcMfm`r$qgSA at JUZp6JcC<$VuQPmJcC<$JcGBBJ,~>
+JcC<$JcDYJq#Kg^r;_EKJcGcMfm`r$qgSA at JUZp6JcC<$VuQPmJcC<$JcGBBJ,~>
+JcC<$JcDYJq#Kg^r;_EKJcGcMfuF$lqo8I3J]@#qJcC<$VuQPmJcC<$JcGBBJ,~>
+JcC<$JcD_LrrD$Xr;_EKJcGcMh1#A(qgSA at JUZp6JcC<$XoJ7uJcG-;rr at WMK)^?~>
+JcC<$JcD_LrrD$Xr;_EKJcGcMh1#A(qgSA at JUZp6JcC<$XoJ7uJcG-;rr at WMK)^?~>
+JcC<$JcD_LrrD$Xr;_EKJcGcMh8]Hpqo8I3J]@#qJcC<$XoJ7uJcG-;rr at WMK)^?~>
+JcC<$JcD_LrrD$Xr;_EKJcGcMh1#A(qgSA at JUZp6JcC<$XoJ7uJcG-;rr at WMK)^?~>
+JcC<$JcD_LrrD$Xr;_EKJcGcMh1#A(qgSA at JUZp6JcC<$XoJ7uJcG-;rr at WMK)^?~>
+JcC<$JcD_LrrD$Xr;_EKJcGcMh8]Hpqo8I3J]@#qJcC<$XoJ7uJcG-;rr at WMK)^?~>
+JcC<$JcCB&r;_EKJcGcMiI:e,qgSA at JUZp6JcC<$[K$%&JcG!7r;cNjnGn.?T)X<~>
+JcC<$JcCB&r;_EKJcGcMiI:e,qgSA at JUZp6JcC<$[K$%&JcG!7r;cNjnGn.?T)X<~>
+JcC<$JcCB&r;_EKJcGcMiPtltqo8I3J]@#qJcC<$[K$%&JcG!7r;cNjnGn.?T)X<~>
+JcC<$JcCB&r;_EKJcGcMiI:e,qgSA at JUZp6JcC<$[K$%&JcG!7r;cNjnGn.?T)X<~>
+JcC<$JcCB&r;_EKJcGcMiI:e,qgSA at JUZp6JcC<$[K$%&JcG!7r;cNjnGn.?T)X<~>
+JcC<$JcCB&r;_EKJcGcMiPtltqo8I3J]@#qJcC<$[K$%&JcG!7r;cNjnGn.?T)X<~>
+JcC<$JcC<$s8VrrJcC<$jaR40qgSA at JUZp6JcC<$^&Rm.JcFd1qZ-<hnGn.?T)X<~>
+JcC<$JcC<$s8VrrJcC<$jaR40qgSA at JUZp6JcC<$^&Rm.JcFd1qZ-<hnGn.?T)X<~>
+JcC<$JcC<$s8VrrJcC<$ji7<#qo8I3J]@#qJcC<$^&Rm.JcFd1qZ-<hnGn.?T)X<~>
+JcC<$JcC<$s8VrrJcC<$jaR40qgSA at JUZp6JcC<$^&Rm.JcFd1qZ-<hnGn.?T)X<~>
+JcC<$JcC<$s8VrrJcC<$jaR40qgSA at JUZp6JcC<$^&Rm.JcFd1qZ-<hnGn.?T)X<~>
+JcC<$JcC<$s8VrrJcC<$ji7<#qo8I3J]@#qJcC<$^&Rm.JcFd1qZ-<hnGn.?T)X<~>
+JcC<$JcC<$q>^BnJcC<$l$iX4qgSA at JUZp6JcC<$`W,`6JcF^/o`4[br;_EKP5g%~>
+JcC<$JcC<$q>^BnJcC<$l$iX4qgSA at JUZp6JcC<$`W,`6JcF^/o`4[br;_EKP5g%~>
+JcC<$JcC<$q>^BnJcC<$l,N`'qo8I3J]@#qJcC<$`W,`6JcF^/o`4[br;_EKP5g%~>
+JcC<$JcC<$q>^BnJcC<$l$iX4qgSA at JUZp6JcC<$`W,`6JcF^/o`4[br;_EKP5g%~>
+JcC<$JcC<$q>^BnJcC<$l$iX4qgSA at JUZp6JcC<$`W,`6JcF^/o`4[br;_EKP5g%~>
+JcC<$JcC<$q>^BnJcC<$l,N`'qo8I3J]@#qJcC<$`W,`6JcF^/o`4[br;_EKP5g%~>
+JcC<$JcC<$p&FsjJcC<$s8VP:rrDqFq>Z"pl[FEbJcEpnqZ)3Ig&L^Fp&FsjJcCo5J,~>
+JcC<$JcC<$p&FsjJcC<$s8VP:rrDqFq>Z"pl[FEbJcEpnqZ)3Ig&L^Fp&FsjJcCo5J,~>
+JcC<$JcC<$p&FsjJcC<$s8VQ-rrDr9q>Z#clc+MUJcEpnqZ)3Ig&L^Fp&FsjJcCo5J,~>
+JcC<$JcC<$p&FsjJcC<$s8VP:rrDqFq>Z"pl[FEbJcEpnqZ)3Ig&L^Fp&FsjJcCo5J,~>
+JcC<$JcC<$p&FsjJcC<$s8VP:rrDqFq>Z"pl[FEbJcEpnqZ)3Ig&L^Fp&FsjJcCo5J,~>
+JcC<$JcC<$p&FsjJcC<$s8VQ-rrDr9q>Z#clc+MUJcEpnqZ)3Ig&L^Fp&FsjJcCo5J,~>
+JcC<$JcC<$nc/OfJcC<$s8V\>rrDqFq>Z"pl[FEbJcF4!q#H!GbQ%M at p&FsjJcCo5J,~>
+JcC<$JcC<$nc/OfJcC<$s8V\>rrDqFq>Z"pl[FEbJcF4!q#H!GbQ%M at p&FsjJcCo5J,~>
+JcC<$JcC<$nc/OfJcC<$s8V]1rrDr9q>Z#clc+MUJcF4!q#H!GbQ%M at p&FsjJcCo5J,~>
+JcC<$JcC<$nc/OfJcC<$s8V\>rrDqFq>Z"pl[FEbJcF4!q#H!GbQ%M at p&FsjJcCo5J,~>
+JcC<$JcC<$nc/OfJcC<$s8V\>rrDqFq>Z"pl[FEbJcF4!q#H!GbQ%M at p&FsjJcCo5J,~>
+JcC<$JcC<$nc/OfJcC<$s8V]1rrDr9q>Z#clc+MUJcF4!q#H!GbQ%M at p&FsjJcCo5J,~>
+JcC<$JcC<$mJm+bJcC<$s8VhBrrDqFq>Z"pl[FEbJcFL)q#H!G_uKZ8p&G$ls8VfnJcD8?J,~>
+JcC<$JcC<$mJm+bJcC<$s8VhBrrDqFq>Z"pl[FEbJcFL)q#H!G_uKZ8p&G$ls8VfnJcD8?J,~>
+JcC<$JcC<$mJm+bJcC<$s8Vi5rrDr9q>Z#clc+MUJcFL)q#H!G_uKZ8p&G$ls8VfnJcD8?J,~>
+JcC<$JcC<$mJm+bJcC<$s8VhBrrDqFq>Z"pl[FEbJcFL)q#H!G_uKZ8p&G$ls8VfnJcD8?J,~>
+JcC<$JcC<$mJm+bJcC<$s8VhBrrDqFq>Z"pl[FEbJcFL)q#H!G_uKZ8p&G$ls8VfnJcD8?J,~>
+JcC<$JcC<$mJm+bJcC<$s8Vi5rrDr9q>Z#clc+MUJcFL)q#H!G_uKZ8p&G$ls8VfnJcD8?J,~>
+JcC<$JcC<$l2UV\JcC<$qgSPFqgSA at JUZp6JcC<$iW&cTJcE@^r;cTlmf7q=T)X<~>
+JcC<$JcC<$l2UV\JcC<$qgSPFqgSA at JUZp6JcC<$iW&cTJcE@^r;cTlmf7q=T)X<~>
+JcC<$JcC<$l2UV\JcC<$qo8X9qo8I3J]@#qJcC<$iW&cTJcE@^r;cTlmf7q=T)X<~>
+JcC<$JcC<$l2UV\JcC<$qgSPFqgSA at JUZp6JcC<$iW&cTJcE@^r;cTlmf7q=T)X<~>
+JcC<$JcC<$l2UV\JcC<$qgSPFqgSA at JUZp6JcC<$iW&cTJcE@^r;cTlmf7q=T)X<~>
+JcC<$JcC<$l2UV\JcC<$qo8X9qo8I3J]@#qJcC<$iW&cTJcE@^r;cTlmf7q=T)X<~>
+JcC<$JcC<$j8]&XJcC<$s*jtJqgSA at JUZp6JcC<$l2UPZJcE.Xr;cTlr;cTlqZ)3IT`9N~>
+JcC<$JcC<$j8]&XJcC<$s*jtJqgSA at JUZp6JcC<$l2UPZJcE.Xr;cTlr;cTlqZ)3IT`9N~>
+JcC<$JcC<$j8]&XJcC<$s2P'=qo8I3J]@#qJcC<$l2UPZJcE.Xr;cTlr;cTlqZ)3IT`9N~>
+JcC<$JcC<$j8]&XJcC<$s*jtJqgSA at JUZp6JcC<$l2UPZJcE.Xr;cTlr;cTlqZ)3IT`9N~>
+JcC<$JcC<$j8]&XJcC<$s*jtJqgSA at JUZp6JcC<$l2UPZJcE.Xr;cTlr;cTlqZ)3IT`9N~>
+JcC<$JcC<$j8]&XJcC<$s2P'=qo8I3J]@#qJcC<$l2UPZJcE.Xr;cTlr;cTlqZ)3IT`9N~>
+JcC<$JcFF'rr at oUr;_EKKE(rOs8W%Hq>Z"pl[FEbJcG9?q#H!GXoJ>"kPtJ\JcDDCJ,~>
+JcC<$JcFF'rr at oUr;_EKKE(rOs8W%Hq>Z"pl[FEbJcG9?q#H!GXoJ>"kPtJ\JcDDCJ,~>
+JcC<$JcFF'rr at oUr;_EKKE(rOs8W&;q>Z#clc+MUJcG9?q#H!GXoJ>"kPtJ\JcDDCJ,~>
+JcC<$JcFF'rr at oUr;_EKKE(rOs8W%Hq>Z"pl[FEbJcG9?q#H!GXoJ>"kPtJ\JcDDCJ,~>
+JcC<$JcFF'rr at oUr;_EKKE(rOs8W%Hq>Z"pl[FEbJcG9?q#H!GXoJ>"kPtJ\JcDDCJ,~>
+JcC<$JcFF'rr at oUr;_EKKE(rOs8W&;q>Z#clc+MUJcG9?q#H!GXoJ>"kPtJ\JcDDCJ,~>
+JcC<$JcFL)r;cBfq#Hucr;_EKL]@ASoDaAjl[FEbJcGQGq#H!GV>pJokPtJ\JcDDCJ,~>
+JcC<$JcFL)r;cBfq#Hucr;_EKL]@ASoDaAjl[FEbJcGQGq#H!GV>pJokPtJ\JcDDCJ,~>
+JcC<$JcFL)r;cBfq#Hucr;_EKL]@ASoDaB]lc+MUJcGQGq#H!GV>pJokPtJ\JcDDCJ,~>
+JcC<$JcFL)r;cBfq#Hucr;_EKL]@ASoDaAjl[FEbJcGQGq#H!GV>pJokPtJ\JcDDCJ,~>
+JcC<$JcFL)r;cBfq#Hucr;_EKL]@ASoDaAjl[FEbJcGQGq#H!GV>pJokPtJ\JcDDCJ,~>
+JcC<$JcFL)r;cBfq#Hucr;_EKL]@ASoDaB]lc+MUJcGQGq#H!GV>pJokPtJ\JcDDCJ,~>
+JcC<$JcFR+qZ-6fo`1K]r;_EKMuWeWoDaAjl[FEbJcGcMqZ)3IScAWgkPtJ\JcDDCJ,~>
+JcC<$JcFR+qZ-6fo`1K]r;_EKMuWeWoDaAjl[FEbJcGcMqZ)3IScAWgkPtJ\JcDDCJ,~>
+JcC<$JcFR+qZ-6fo`1K]r;_EKMuWeWoDaB]lc+MUJcGcMqZ)3IScAWgkPtJ\JcDDCJ,~>
+JcC<$JcFR+qZ-6fo`1K]r;_EKMuWeWoDaAjl[FEbJcGcMqZ)3IScAWgkPtJ\JcDDCJ,~>
+JcC<$JcFR+qZ-6fo`1K]r;_EKMuWeWoDaAjl[FEbJcGcMqZ)3IScAWgkPtJ\JcDDCJ,~>
+JcC<$JcFR+qZ-6fo`1K]r;_EKMuWeWoDaB]lc+MUJcGcMqZ)3IScAWgkPtJ\JcDDCJ,~>
+JcC<$JcFd1o`4[br;cZnr;`8cr;_EKO8o4[oDaAjl[FEbL]@/MJcD):r;cTlr;cNjr;_EKT`9N~>
+JcC<$JcFd1o`4[br;cZnr;`8cr;_EKO8o4[oDaAjl[FEbL]@/MJcD):r;cTlr;cNjr;_EKT`9N~>
+JcC<$JcFd1o`4[br;cZnr;`8cr;_EKO8o4[oDaB]lc+MUL]@/MJcD):r;cTlr;cNjr;_EKT`9N~>
+JcC<$JcFd1o`4[br;cZnr;`8cr;_EKO8o4[oDaAjl[FEbL]@/MJcD):r;cTlr;cNjr;_EKT`9N~>
+JcC<$JcFd1o`4[br;cZnr;`8cr;_EKO8o4[oDaAjl[FEbL]@/MJcD):r;cTlr;cNjr;_EKT`9N~>
+JcC<$JcFd1o`4[br;cZnr;`8cr;_EKO8o4[oDaB]lc+MUL]@/MJcD):r;cTlr;cNjr;_EKT`9N~>
+JcC<$JcFd1o`4[br;cZnr;`,_qZ)3IQ2gjan,Irfms]ifO8o"UJcCf2r;cTlqZ-Hlr;_EKT)X<~>
+JcC<$JcFd1o`4[br;cZnr;`,_qZ)3IQ2gjan,Irfms]ifO8o"UJcCf2r;cTlqZ-Hlr;_EKT)X<~>
+JcC<$JcFd1o`4[br;cZnr;`,_qZ)3IQ2gjan,IsYn&BqYO8o"UJcCf2r;cTlqZ-Hlr;_EKT)X<~>
+JcC<$JcFd1o`4[br;cZnr;`,_qZ)3IQ2gjan,Irfms]ifO8o"UJcCf2r;cTlqZ-Hlr;_EKT)X<~>
+JcC<$JcFd1o`4[br;cZnr;`,_qZ)3IQ2gjan,Irfms]ifO8o"UJcCf2r;cTlqZ-Hlr;_EKT)X<~>
+JcC<$JcFd1o`4[br;cZnr;`,_qZ)3IQ2gjan,IsYn&BqYO8o"UJcCf2r;cTlqZ-Hlr;_EKT)X<~>
+JcC<$JcFL)r;cTlr;cNjr;_u[r;_EKRK*9eli2Nbo6u8jQiHj]rVultJcC`0r;cNjnGn.?T)X<~>
+JcC<$JcFL)r;cTlr;cNjr;_u[r;_EKRK*9eli2Nbo6u8jQiHj]rVultJcC`0r;cNjnGn.?T)X<~>
+JcC<$JcFL)r;cTlr;cNjr;_u[r;_EKRK*9eli2OUo>Z@]QiHj]rVultJcC`0r;cNjnGn.?T)X<~>
+JcC<$JcFL)r;cTlr;cNjr;_u[r;_EKRK*9eli2Nbo6u8jQiHj]rVultJcC`0r;cNjnGn.?T)X<~>
+JcC<$JcFL)r;cTlr;cNjr;_u[r;_EKRK*9eli2Nbo6u8jQiHj]rVultJcC`0r;cNjnGn.?T)X<~>
+JcC<$JcFL)r;cTlr;cNjr;_u[r;_EKRK*9eli2OUo>Z@]QiHj]rVultJcC`0r;cNjnGn.?T)X<~>
+JcC<$JcFL)r;cTlr;cNjr;_iWr;_EKScA]ijo9m\q0mnpScAQeoDeahJcCl4r;cHhpAfdERf at m~>
+JcC<$JcFL)r;cTlr;cNjr;_iWr;_EKScA]ijo9m\q0mnpScAQeoDeahJcCl4r;cHhpAfdERf at m~>
+JcC<$JcFL)r;cTlr;cNjr;_iWr;_EKScA]ijo9nOq8S!cScAQeoDeahJcCl4r;cHhpAfdERf at m~>
+JcC<$JcFL)r;cTlr;cNjr;_iWr;_EKScA]ijo9m\q0mnpScAQeoDeahJcCl4r;cHhpAfdERf at m~>
+JcC<$JcFL)r;cTlr;cNjr;_iWr;_EKScA]ijo9m\q0mnpScAQeoDeahJcCl4r;cHhpAfdERf at m~>
+JcC<$JcFL)r;cTlr;cNjr;_iWr;_EKScA]ijo9nOq8S!cScAQeoDeahJcCl4r;cHhpAfdERf at m~>
+JcC<$JcFL)r;cTlr;cNjr;_]Sr;_EKU&Y,miW"IXrI0=tV>p>kl2U\^JcC<$JcCo5J,~>
+JcC<$JcFL)r;cTlr;cNjr;_]Sr;_EKU&Y,miW"IXrI0=tV>p>kl2U\^JcC<$JcCo5J,~>
+JcC<$JcFL)r;cTlr;cNjr;_]Sr;_EKU&Y,miW"JKrPjEgV>p>kl2U\^JcC<$JcCo5J,~>
+JcC<$JcFL)r;cTlr;cNjr;_]Sr;_EKU&Y,miW"IXrI0=tV>p>kl2U\^JcC<$JcCo5J,~>
+JcC<$JcFL)r;cTlr;cNjr;_]Sr;_EKU&Y,miW"IXrI0=tV>p>kl2U\^JcC<$JcCo5J,~>
+JcC<$JcFL)r;cTlr;cNjr;_]Sr;_EKU&Y,miW"JKrPjEgV>p>kl2U\^JcC<$JcCo5J,~>
+JcC<$JcFL)r;cTlr;cNjr;_QOr;_EKV>pPqh>`%TJcDkPq#K7Nr;_EKJcC<$QN)I~>
+JcC<$JcFL)r;cTlr;cNjr;_QOr;_EKV>pPqh>`%TJcDkPq#K7Nr;_EKJcC<$QN)I~>
+JcC<$JcFL)r;cTlr;cNjr;_QOr;_EKV>pPqh>`&GJcDkPq#K7Nr;_EKJcC<$QN)I~>
+JcC<$JcFL)r;cTlr;cNjr;_QOr;_EKV>pPqh>`%TJcDkPq#K7Nr;_EKJcC<$QN)I~>
+JcC<$JcFL)r;cTlr;cNjr;_QOr;_EKV>pPqh>`%TJcDkPq#K7Nr;_EKJcC<$QN)I~>
+JcC<$JcFL)r;cTlr;cNjr;_QOr;_EKV>pPqh>`&GJcDkPq#K7Nr;_EKJcC<$QN)I~>
+JcC<$JcFL)r;cTlr;cNjr;_EKqZ)3IX8i2"g&HbTJcE.Xq#JhBr;_EKJcC<$Rf at m~>
+JcC<$JcFL)r;cTlr;cNjr;_EKqZ)3IX8i2"g&HbTJcE.Xq#JhBr;_EKJcC<$Rf at m~>
+JcC<$JcFL)r;cTlr;cNjr;_EKqZ)3IX8i2"g&HcGJcE.Xq#JhBr;_EKJcC<$Rf at m~>
+JcC<$JcFL)r;cTlr;cNjr;_EKqZ)3IX8i2"g&HbTJcE.Xq#JhBr;_EKJcC<$Rf at m~>
+JcC<$JcFL)r;cTlr;cNjr;_EKqZ)3IX8i2"g&HbTJcE.Xq#JhBr;_EKJcC<$Rf at m~>
+JcC<$JcFL)r;cTlr;cNjr;_EKqZ)3IX8i2"g&HcGJcE.Xq#JhBr;_EKJcC<$Rf at m~>
+JcC<$JcFL)r;cTlr;cNjr;_EKqu?TpJcDqRrrCULM11$U]Dqa.JcC<$JcC<$hZ&*~>
+JcC<$JcFL)r;cTlr;cNjr;_EKqu?TpJcDqRrrCULM11$U]Dqa.JcC<$JcC<$hZ&*~>
+JcC<$JcFL)r;cTlr;cNjr;_EKqu?TpJcDqRrrCULM8k,H]Dqa.JcC<$JcC<$hZ&*~>
+JcC<$JcFL)r;cTlr;cNjr;_EKqu?TpJcDqRrrCULM11$U]Dqa.JcC<$JcC<$hZ&*~>
+JcC<$JcFL)r;cTlr;cNjr;_EKqu?TpJcDqRrrCULM11$U]Dqa.JcC<$JcC<$hZ&*~>
+JcC<$JcFL)r;cTlr;cNjr;_EKqu?TpJcDqRrrCULM8k,H]Dqa.JcC<$JcC<$hZ&*~>
+JcC<$JcFL)r;cTlr;cNjr;_EKp](0lJcE(VrrCCFO+)Z[_uKN4JcC<$JcC<$f`-I~>
+JcC<$JcFL)r;cTlr;cNjr;_EKp](0lJcE(VrrCCFO+)Z[_uKN4JcC<$JcC<$f`-I~>
+JcC<$JcFL)r;cTlr;cNjr;_EKp](0lJcE(VrrCCFO2cbN_uKN4JcC<$JcC<$f`-I~>
+JcC<$JcFL)r;cTlr;cNjr;_EKp](0lJcE(VrrCCFO+)Z[_uKN4JcC<$JcC<$f`-I~>
+JcC<$JcFL)r;cTlr;cNjr;_EKp](0lJcE(VrrCCFO+)Z[_uKN4JcC<$JcC<$f`-I~>
+JcC<$JcFL)r;cTlr;cNjr;_EKp](0lJcE(VrrCCFO2cbN_uKN4JcC<$JcC<$f`-I~>
+JcC<$JcFL)r;cNjr;cZnqZ)3IoDeahJcE4ZrrC7BPCA)_bQ%A<JcC<$JcC<$d/SU~>
+JcC<$JcFL)r;cNjr;cZnqZ)3IoDeahJcE4ZrrC7BPCA)_bQ%A<JcC<$JcC<$d/SU~>
+JcC<$JcFL)r;cNjr;cZnqZ)3IoDeahJcE4ZrrC7BPK&1RbQ%A<JcC<$JcC<$d/SU~>
+JcC<$JcFL)r;cNjr;cZnqZ)3IoDeahJcE4ZrrC7BPCA)_bQ%A<JcC<$JcC<$d/SU~>
+JcC<$JcFL)r;cNjr;cZnqZ)3IoDeahJcE4ZrrC7BPCA)_bQ%A<JcC<$JcC<$d/SU~>
+JcC<$JcFL)r;cNjr;cZnqZ)3IoDeahJcE4ZrrC7BPK&1RbQ%A<JcC<$JcC<$d/SU~>
+JcC<$JcFL)r;cNjr;cZnr;_EKmJm+bJcE@^rrC+>Q[XMcdJs(DJcC<$JcC<$aT$b~>
+JcC<$JcFL)r;cNjr;cZnr;_EKmJm+bJcE@^rrC+>Q[XMcdJs(DJcC<$JcC<$aT$b~>
+JcC<$JcFL)r;cNjr;cZnr;_EKmJm+bJcE@^rrC+>Qc=UVdJs(DJcC<$JcC<$aT$b~>
+JcC<$JcFL)r;cNjr;cZnr;_EKmJm+bJcE@^rrC+>Q[XMcdJs(DJcC<$JcC<$aT$b~>
+JcC<$JcFL)r;cNjr;cZnr;_EKmJm+bJcE@^rrC+>Q[XMcdJs(DJcC<$JcC<$aT$b~>
+JcC<$JcFL)r;cNjr;cZnr;_EKmJm+bJcE@^rrC+>Qc=UVdJs(DJcC<$JcC<$aT$b~>
+JcC<$JcFL)r;cHho)O at Al2U\^JcELbrrBt:Rsoqgg&LjJJcC<$JcC<$_Z,,~>
+JcC<$JcFL)r;cHho)O at Al2U\^JcELbrrBt:Rsoqgg&LjJJcC<$JcC<$_Z,,~>
+JcC<$JcFL)r;cHho)O at Al2U\^JcELbrrBt:S&U$Zg&LjJJcC<$JcC<$_Z,,~>
+JcC<$JcFL)r;cHho)O at Al2U\^JcELbrrBt:Rsoqgg&LjJJcC<$JcC<$_Z,,~>
+JcC<$JcFL)r;cHho)O at Al2U\^JcELbrrBt:Rsoqgg&LjJJcC<$JcC<$_Z,,~>
+JcC<$JcFL)r;cHho)O at Al2U\^JcELbrrBt:S&U$Zg&LjJJcC<$JcC<$_Z,,~>
+JcC<$JcFL)r;cBfq#H!GiW&cTJcE^hrrBh6T72 at kiW&]RJcC<$JcC<$])R9~>
+JcC<$JcFL)r;cBfq#H!GiW&cTJcE^hrrBh6T72 at kiW&]RJcC<$JcC<$])R9~>
+JcC<$JcFL)r;cBfq#H!GiW&cTJcE^hrrBh6T>lH^iW&]RJcC<$JcC<$])R9~>
+JcC<$JcFL)r;cBfq#H!GiW&cTJcE^hrrBh6T72 at kiW&]RJcC<$JcC<$])R9~>
+JcC<$JcFL)r;cBfq#H!GiW&cTJcE^hrrBh6T72 at kiW&]RJcC<$JcC<$])R9~>
+JcC<$JcFL)r;cBfq#H!GiW&cTJcE^hrrBh6T>lH^iW&]RJcC<$JcC<$])R9~>
+JcC<$JcC<$RK*3cJcEjlrrB\2UOIdol2UPZJcC<$JcC<$ZN#F~>
+JcC<$JcC<$RK*3cJcEjlrrB\2UOIdol2UPZJcC<$JcC<$ZN#F~>
+JcC<$JcC<$RK*3cJcEjlrrB\2UW.lbl2UPZJcC<$JcC<$ZN#F~>
+JcC<$JcC<$RK*3cJcEjlrrB\2UOIdol2UPZJcC<$JcC<$ZN#F~>
+JcC<$JcC<$RK*3cJcEjlrrB\2UOIdol2UPZJcC<$JcC<$ZN#F~>
+JcC<$JcC<$RK*3cJcEjlrrB\2UW.lbl2UPZJcC<$JcC<$ZN#F~>
+JcC<$JcC<$Q2gd_JcF!prrBJ,WIBEun,N7bJcC<$JcC<$WrIS~>
+JcC<$JcC<$Q2gd_JcF!prrBJ,WIBEun,N7bJcC<$JcC<$WrIS~>
+JcC<$JcC<$Q2gd_JcF!prrBJ,WQ'Mhn,N7bJcC<$JcC<$WrIS~>
+JcC<$JcC<$Q2gd_JcF!prrBJ,WIBEun,N7bJcC<$JcC<$WrIS~>
+JcC<$JcC<$Q2gd_JcF!prrBJ,WIBEun,N7bJcC<$JcC<$WrIS~>
+JcC<$JcC<$Q2gd_JcF!prrBJ,WQ'Mhn,N7bJcC<$JcC<$WrIS~>
+JcC<$JcC<$OoP@[JcF-trrB>(XaYj$p]($hJcC<$JcC<$V#Pr~>
+JcC<$JcC<$OoP@[JcF-trrB>(XaYj$p]($hJcC<$JcC<$V#Pr~>
+JcC<$JcC<$OoP@[JcF-trrB>(Xi>qlp]($hJcC<$JcC<$V#Pr~>
+JcC<$JcC<$OoP@[JcF-trrB>(XaYj$p]($hJcC<$JcC<$V#Pr~>
+JcC<$JcC<$OoP@[JcF-trrB>(XaYj$p]($hJcC<$JcC<$V#Pr~>
+JcC<$JcC<$OoP@[JcF-trrB>(Xi>qlp]($hJcC<$JcC<$V#Pr~>
+JcC<$JcC<$NW8qWJcF:#rrB2$Z$q9(s8VlpJcG!7rr at WMJcC<$[f:j~>
+JcC<$JcC<$NW8qWJcF:#rrB2$Z$q9(s8VlpJcG!7rr at WMJcC<$[f:j~>
+JcC<$JcC<$NW8qWJcF:#rrB2$Z,V at ps8VlpJcG!7rr at WMJcC<$[f:j~>
+JcC<$JcC<$NW8qWJcF:#rrB2$Z$q9(s8VlpJcG!7rr at WMJcC<$[f:j~>
+JcC<$JcC<$NW8qWJcF:#rrB2$Z$q9(s8VlpJcG!7rr at WMJcC<$[f:j~>
+JcC<$JcC<$NW8qWJcF:#rrB2$Z,V at ps8VlpJcG!7rr at WMJcC<$[f:j~>
+JcC<$JcC<$M?!GQJcFL)rrB%u[=3o2q#H!Gj8]&Xnc/CbJcC<$JcF$qJ,~>
+JcC<$JcC<$M?!GQJcFL)rrB%u[=3o2q#H!Gj8]&Xnc/CbJcC<$JcF$qJ,~>
+JcC<$JcC<$M?!GQJcFL)rrB%u[Dn"%q#H!Gj8]&Xnc/CbJcC<$JcF$qJ,~>
+JcC<$JcC<$M?!GQJcFL)rrB%u[=3o2q#H!Gj8]&Xnc/CbJcC<$JcF$qJ,~>
+JcC<$JcC<$M?!GQJcFL)rrB%u[=3o2q#H!Gj8]&Xnc/CbJcC<$JcF$qJ,~>
+JcC<$JcC<$M?!GQJcFL)rrB%u[Dn"%q#H!Gj8]&Xnc/CbJcC<$JcF$qJ,~>
+JcC<$JcC<$KE(lMJcFX-rrAnq\UKP<qZ)3Ih>d?PoDeI`JcC<$JcF*sJ,~>
+JcC<$JcC<$KE(lMJcFX-rrAnq\UKP<qZ)3Ih>d?PoDeI`JcC<$JcF*sJ,~>
+JcC<$JcC<$KE(lMJcFX-rrAnq\]0X/qZ)3Ih>d?PoDeI`JcC<$JcF*sJ,~>
+JcC<$JcC<$KE(lMJcFX-rrAnq\UKP<qZ)3Ih>d?PoDeI`JcC<$JcF*sJ,~>
+JcC<$JcC<$KE(lMJcFX-rrAnq\UKP<qZ)3Ih>d?PoDeI`JcC<$JcF*sJ,~>
+JcC<$JcC<$KE(lMJcFX-rrAnq\]0X/qZ)3Ih>d?PoDeI`JcC<$JcF*sJ,~>
+JcC<$JcC<$JcGcMr;_EKj8],ZU&VfTQ2gX[JcFR+o`4[br;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcGcMr;_EKj8],ZU&VfTQ2gX[JcFR+o`4[br;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcGcMr;_EKj8],ZU&VgGQ2gX[JcFR+o`4[br;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcGcMr;_EKj8],ZU&VfTQ2gX[JcFR+o`4[br;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcGcMr;_EKj8],ZU&VfTQ2gX[JcFR+o`4[br;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcGcMr;_EKj8],ZU&VgGQ2gX[JcFR+o`4[br;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcGWIr;_EKkPtP^S,^BTScAKcJcF:#o`4[br;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcGWIr;_EKkPtP^S,^BTScAKcJcF:#o`4[br;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcGWIr;_EKkPtP^S,^CGScAKcJcF:#o`4[br;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcGWIr;_EKkPtP^S,^BTScAKcJcF:#o`4[br;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcGWIr;_EKkPtP^S,^BTScAKcJcF:#o`4[br;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcGWIr;_EKkPtP^S,^CGScAKcJcF:#o`4[br;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcGWIq#H!Gli6tbQiG*TV>p>kJcE^hr;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcGWIq#H!Gli6tbQiG*TV>p>kJcE^hr;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcGWIq#H!Gli6tbQiG+GV>p>kJcE^hr;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcGWIq#H!Gli6tbQiG*TV>p>kJcE^hr;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcGWIq#H!Gli6tbQiG*TV>p>kJcE^hr;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcGWIq#H!Gli6tbQiG+GV>p>kJcE^hr;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcGTIq>^BnJcG3=rrA8_bC6MlqZ)3I^&S$2p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$JcGTIq>^BnJcG3=rrA8_bC6MlqZ)3I^&S$2p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$JcGTIq>^BnJcG3=rrA8_bJpU_qZ)3I^&S$2p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$JcGTIq>^BnJcG3=rrA8_bC6MlqZ)3I^&S$2p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$JcGTIq>^BnJcG3=rrA8_bC6MlqZ)3I^&S$2p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$JcGTIq>^BnJcG3=rrA8_bJpU_qZ)3I^&S$2p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$M?!AOn,N7bJcGECrrA,[c[N5#q#H!G\,ZC,p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$M?!AOn,N7bJcGECrrA,[c[N5#q#H!G\,ZC,p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$M?!AOn,N7bJcGECrrA,[cc3<kq#H!G\,ZC,p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$M?!AOn,N7bJcGECrrA,[c[N5#q#H!G\,ZC,p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$M?!AOn,N7bJcGECrrA,[c[N5#q#H!G\,ZC,p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$M?!AOn,N7bJcGECrrA,[cc3<kq#H!G\,ZC,p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$MuWeWiW&iVJcGQGrr at uWdseq/q#H!GYQ+P$p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$MuWeWiW&iVJcGQGrr at uWdseq/q#H!GYQ+P$p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$MuWeWiW&iVJcGQGrr at uWe&K$"q#H!GYQ+P$p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$MuWeWiW&iVJcGQGrr at uWdseq/q#H!GYQ+P$p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$MuWeWiW&iVJcGQGrr at uWdseq/q#H!GYQ+P$p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$MuWeWiW&iVJcGQGrr at uWe&K$"q#H!GYQ+P$p](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$JcFj3r;_EKrVultL&]hT_uKN4JcDYJr;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcFj3r;_EKrVultL&]hT_uKN4JcDYJr;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcFj3r;_EKrVultL&]iG_uKN4JcDYJr;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcFj3r;_EKrVultL&]hT_uKN4JcDYJr;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcFj3r;_EKrVultL&]hT_uKN4JcDYJr;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcFj3r;_EKrVultL&]iG_uKN4JcDYJr;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcF^/r;_EKrr at WMh1!KGqZ)3ITE"iip](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$JcF^/r;_EKrr at WMh1!KGqZ)3ITE"iip](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$JcF^/r;_EKrr at WMh8[S:qZ)3ITE"iip](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$JcF^/r;_EKrr at WMh1!KGqZ)3ITE"iip](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$JcF^/r;_EKrr at WMh1!KGqZ)3ITE"iip](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$JcF^/r;_EKrr at WMh8[S:qZ)3ITE"iip](0lp&FsjJcC<$JcF7"J,~>
+JcC<$JcC<$JcFR+r;_QOrr at WMrVti*dJs"BJcD/<r;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcFR+r;_QOrr at WMrVti*dJs"BJcD/<r;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcFR+r;_QOrr at WMrVtirdJs"BJcD/<r;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcFR+r;_QOrr at WMrVti*dJs"BJcD/<r;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcFR+r;_QOrr at WMrVti*dJs"BJcD/<r;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcFR+r;_QOrr at WMrVtirdJs"BJcD/<r;cTlr;cNjr;_EKJcC<$eGk%~>
+JcC<$JcC<$JcFF'qZ)QSrr at WMq>]Q*g&LjJJcCl4r;cNjr;cZnqZ)3IJcC<$eGk%~>
+JcC<$JcC<$JcFF'qZ)QSrr at WMq>]Q*g&LjJJcCl4r;cNjr;cZnqZ)3IJcC<$eGk%~>
+JcC<$JcC<$JcFF'qZ)QSrr at WMq>]Qrg&LjJJcCl4r;cNjr;cZnqZ)3IJcC<$eGk%~>
+JcC<$JcC<$JcFF'qZ)QSrr at WMq>]Q*g&LjJJcCl4r;cNjr;cZnqZ)3IJcC<$eGk%~>
+JcC<$JcC<$JcFF'qZ)QSrr at WMq>]Q*g&LjJJcCl4r;cNjr;cZnqZ)3IJcC<$eGk%~>
+JcC<$JcC<$JcFF'qZ)QSrr at WMq>]Qrg&LjJJcCl4r;cNjr;cZnqZ)3IJcC<$eGk%~>
+JcC<$JcC<$JcF4!r;_oYrr at WMp&F9*huEQRJcCT,r;cNjr;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcF4!r;_oYrr at WMp&F9*huEQRJcCT,r;cNjr;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcF4!r;_oYrr at WMp&F9rhuEQRJcCT,r;cNjr;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcF4!r;_oYrr at WMp&F9*huEQRJcCT,r;cNjr;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcF4!r;_oYrr at WMp&F9*huEQRJcCT,r;cNjr;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcF4!r;_oYrr at WMp&F9rhuEQRJcCT,r;cNjr;cZnr;_EKJcC<$df4g~>
+JcC<$JcC<$JcF'rr;`&]rr at WMnc/!*kPt>Xqu?TpJcC`0r;cHho)O at AJcC<$df4g~>
+JcC<$JcC<$JcF'rr;`&]rr at WMnc/!*kPt>Xqu?TpJcC`0r;cHho)O at AJcC<$df4g~>
+JcC<$JcC<$JcF'rr;`&]rr at WMnc/!rkPt>Xqu?TpJcC`0r;cHho)O at AJcC<$df4g~>
+JcC<$JcC<$JcF'rr;`&]rr at WMnc/!*kPt>Xqu?TpJcC`0r;cHho)O at AJcC<$df4g~>
+JcC<$JcC<$JcF'rr;`&]rr at WMnc/!*kPt>Xqu?TpJcC`0r;cHho)O at AJcC<$df4g~>
+JcC<$JcC<$JcF'rr;`&]rr at WMnc/!rkPt>Xqu?TpJcC`0r;cHho)O at AJcC<$df4g~>
+JcC<$JcC<$JcEpnr;`2arr at WMli6R*n,N1`n,N=dJcCl4r;cBfq#H!GJcC<$cMrC~>
+JcC<$JcC<$JcEpnr;`2arr at WMli6R*n,N1`n,N=dJcCl4r;cBfq#H!GJcC<$cMrC~>
+JcC<$JcC<$JcEpnr;`2arr at WMli6Rrn,N1`n,N=dJcCl4r;cBfq#H!GJcC<$cMrC~>
+JcC<$JcC<$JcEpnr;`2arr at WMli6R*n,N1`n,N=dJcCl4r;cBfq#H!GJcC<$cMrC~>
+JcC<$JcC<$JcEpnr;`2arr at WMli6R*n,N1`n,N=dJcCl4r;cBfq#H!GJcC<$cMrC~>
+JcC<$JcC<$JcEpnr;`2arr at WMli6Rrn,N1`n,N=dJcCl4r;cBfq#H!GJcC<$cMrC~>
+JcC<$JcC<$JcEdjr;`>err at WMkPt:*p]($hj8\uVJcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcEdjr;`>err at WMkPt:*p]($hj8\uVJcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcEdjr;`>err at WMkPt:rp]($hj8\uVJcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcEdjr;`>err at WMkPt:*p]($hj8\uVJcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcEdjr;`>err at WMkPt:*p]($hj8\uVJcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcEdjr;`>err at WMkPt:rp]($hj8\uVJcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcEXfr;`Jirr at WMj8]"*rVu`pec5RJJcC<$JcC<$JcEsoJ,~>
+JcC<$JcC<$JcEXfr;`Jirr at WMj8]"*rVu`pec5RJJcC<$JcC<$JcEsoJ,~>
+JcC<$JcC<$JcEXfr;`Jirr at WMj8]"rrVu`pec5RJJcC<$JcC<$JcEsoJ,~>
+JcC<$JcC<$JcEXfr;`Jirr at WMj8]"*rVu`pec5RJJcC<$JcC<$JcEsoJ,~>
+JcC<$JcC<$JcEXfr;`Jirr at WMj8]"*rVu`pec5RJJcC<$JcC<$JcEsoJ,~>
+JcC<$JcC<$JcEXfr;`Jirr at WMj8]"rrVu`pec5RJJcC<$JcC<$JcEsoJ,~>
+JcC<$JcC<$XoInkU]:2kV>pPqJcF^/q#JV<rr at WMJcC<$JcC<$cMrC~>
+JcC<$JcC<$XoInkU]:2kV>pPqJcF^/q#JV<rr at WMJcC<$JcC<$cMrC~>
+JcC<$JcC<$XoInkU]:2kV>pPqJcF^/q#JV<rr at WMJcC<$JcC<$cMrC~>
+JcC<$JcC<$XoInkU]:2kV>pPqJcF^/q#JV<rr at WMJcC<$JcC<$cMrC~>
+JcC<$JcC<$XoInkU]:2kV>pPqJcF^/q#JV<rr at WMJcC<$JcC<$cMrC~>
+JcC<$JcC<$XoInkU]:2kV>pPqJcF^/q#JV<rr at WMJcC<$JcC<$cMrC~>
+JcC<$JcC<$XoInkScAWgWW2tuJcG!7q#H!GJcC<$JcC<$NrOV~>
+JcC<$JcC<$XoInkScAWgWW2tuJcG!7q#H!GJcC<$JcC<$NrOV~>
+JcC<$JcC<$XoInkScAWgWW2tuJcG!7q#H!GJcC<$JcC<$NrOV~>
+JcC<$JcC<$XoInkScAWgWW2tuJcG!7q#H!GJcC<$JcC<$NrOV~>
+JcC<$JcC<$XoInkScAWgWW2tuJcG!7q#H!GJcC<$JcC<$NrOV~>
+JcC<$JcC<$XoInkScAWgWW2tuJcG!7q#H!GJcC<$JcC<$NrOV~>
+JcC<$JcC<$XoJ>"NW8qWXoJD$JcG9?q#H!GJcC<$JcC<$LAuc~>
+JcC<$JcC<$XoJ>"NW8qWXoJD$JcG9?q#H!GJcC<$JcC<$LAuc~>
+JcC<$JcC<$XoJ>"NW8qWXoJD$JcG9?q#H!GJcC<$JcC<$LAuc~>
+JcC<$JcC<$XoJ>"NW8qWXoJD$JcG9?q#H!GJcC<$JcC<$LAuc~>
+JcC<$JcC<$XoJ>"NW8qWXoJD$JcG9?q#H!GJcC<$JcC<$LAuc~>
+JcC<$JcC<$XoJ>"NW8qWXoJD$JcG9?q#H!GJcC<$JcC<$LAuc~>
+JcC<$JcC<$XoJ>"M?!MSZ2ah(JcGKEqZ)3IJcC<$JcC<$JcG`LJ,~>
+JcC<$JcC<$XoJ>"M?!MSZ2ah(JcGKEqZ)3IJcC<$JcC<$JcG`LJ,~>
+JcC<$JcC<$XoJ>"M?!MSZ2ah(JcGKEqZ)3IJcC<$JcC<$JcG`LJ,~>
+JcC<$JcC<$XoJ>"M?!MSZ2ah(JcGKEqZ)3IJcC<$JcC<$JcG`LJ,~>
+JcC<$JcC<$XoJ>"M?!MSZ2ah(JcGKEqZ)3IJcC<$JcC<$JcG`LJ,~>
+JcC<$JcC<$XoJ>"M?!MSZ2ah(JcGKEqZ)3IJcC<$JcC<$JcG`LJ,~>
+JcC<$JcC<$XoJ>"L&_)O[K$7,JcGcMq#H!GJcC<$JcC<$JcGNFJ,~>
+JcC<$JcC<$XoJ>"L&_)O[K$7,JcGcMq#H!GJcC<$JcC<$JcGNFJ,~>
+JcC<$JcC<$XoJ>"L&_)O[K$7,JcGcMq#H!GJcC<$JcC<$JcGNFJ,~>
+JcC<$JcC<$XoJ>"L&_)O[K$7,JcGcMq#H!GJcC<$JcC<$JcGNFJ,~>
+JcC<$JcC<$XoJ>"L&_)O[K$7,JcGcMq#H!GJcC<$JcC<$JcGNFJ,~>
+JcC<$JcC<$XoJ>"L&_)O[K$7,JcGcMq#H!GJcC<$JcC<$JcGNFJ,~>
+JcC<$JcC<$XoJD$s8VfnMuWYS]Dqm2L]@/MJcC<$JcC<$JcC<$nGe"~>
+JcC<$JcC<$XoJD$s8VfnMuWYS]Dqm2L]@/MJcC<$JcC<$JcC<$nGe"~>
+JcC<$JcC<$XoJD$s8VfnMuWYS]Dqm2L]@/MJcC<$JcC<$JcC<$nGe"~>
+JcC<$JcC<$XoJD$s8VfnMuWYS]Dqm2L]@/MJcC<$JcC<$JcC<$nGe"~>
+JcC<$JcC<$XoJD$s8VfnMuWYS]Dqm2L]@/MJcC<$JcC<$JcC<$nGe"~>
+JcC<$JcC<$XoJD$s8VfnMuWYS]Dqm2L]@/MJcC<$JcC<$JcC<$nGe"~>
+JcC<$JcC<$YQ+%kL]@;Q^]4<6O8o"UJcC<$JcC<$JcC<$kl6/~>
+JcC<$JcC<$YQ+%kL]@;Q^]4<6O8o"UJcC<$JcC<$JcC<$kl6/~>
+JcC<$JcC<$YQ+%kL]@;Q^]4<6O8o"UJcC<$JcC<$JcC<$kl6/~>
+JcC<$JcC<$YQ+%kL]@;Q^]4<6O8o"UJcC<$JcC<$JcC<$kl6/~>
+JcC<$JcC<$YQ+%kL]@;Q^]4<6O8o"UJcC<$JcC<$JcC<$kl6/~>
+JcC<$JcC<$YQ+%kL]@;Q^]4<6O8o"UJcC<$JcC<$JcC<$kl6/~>
+JcC<$JcC<$YQ+P$p](*jL&_)O_uK`:Q2g^]JcC<$JcC<$JcC<$i;\<~>
+JcC<$JcC<$YQ+P$p](*jL&_)O_uK`:Q2g^]JcC<$JcC<$JcC<$i;\<~>
+JcC<$JcC<$YQ+P$p](*jL&_)O_uK`:Q2g^]JcC<$JcC<$JcC<$i;\<~>
+JcC<$JcC<$YQ+P$p](*jL&_)O_uK`:Q2g^]JcC<$JcC<$JcC<$i;\<~>
+JcC<$JcC<$YQ+P$p](*jL&_)O_uK`:Q2g^]JcC<$JcC<$JcC<$i;\<~>
+JcC<$JcC<$YQ+P$p](*jL&_)O_uK`:Q2g^]JcC<$JcC<$JcC<$i;\<~>
+JcC<$JcC<$TE"iiJcGZKa8c/>ScAKcJcC<$JcC<$JcC<$gAc[~>
+JcC<$JcC<$TE"iiJcGZKa8c/>ScAKcJcC<$JcC<$JcC<$gAc[~>
+JcC<$JcC<$TE"iiJcGZKa8c/>ScAKcJcC<$JcC<$JcC<$gAc[~>
+JcC<$JcC<$TE"iiJcGZKa8c/>ScAKcJcC<$JcC<$JcC<$gAc[~>
+JcC<$JcC<$TE"iiJcGZKa8c/>ScAKcJcC<$JcC<$JcC<$gAc[~>
+JcC<$JcC<$TE"iiJcGZKa8c/>ScAKcJcC<$JcC<$JcC<$gAc[~>
+JcC<$JcC<$TE"iiJcG]Kr;b%@rrAnqq#H!GJcC<$JcC<$JcF0uJ,~>
+JcC<$JcC<$TE"iiJcG]Kr;b%@rrAnqq#H!GJcC<$JcC<$JcF0uJ,~>
+JcC<$JcC<$TE"iiJcG]Kr;b%@rrAnqq#H!GJcC<$JcC<$JcF0uJ,~>
+JcC<$JcC<$TE"iiJcG]Kr;b%@rrAnqq#H!GJcC<$JcC<$JcF0uJ,~>
+JcC<$JcC<$TE"iiJcG]Kr;b%@rrAnqq#H!GJcC<$JcC<$JcF0uJ,~>
+JcC<$JcC<$TE"iiJcG]Kr;b%@rrAnqq#H!GJcC<$JcC<$JcF0uJ,~>
+JcC<$M?!GQoDe[fJcE"Tr;_EKq>^Bnci="FXoJ1sJcC<$JcC<$JcC<$b5Zt~>
+JcC<$M?!GQoDe[fJcE"Tr;_EKq>^Bnci="FXoJ1sJcC<$JcC<$JcC<$b5Zt~>
+JcC<$M?!GQoDe[fJcE"Tr;_EKq>^Bnci="FXoJ1sJcC<$JcC<$JcC<$b5Zt~>
+JcC<$M?!GQoDe[fJcE"Tr;_EKq>^Bnci="FXoJ1sJcC<$JcC<$JcC<$b5Zt~>
+JcC<$M?!GQoDe[fJcE"Tr;_EKq>^Bnci="FXoJ1sJcC<$JcC<$JcC<$b5Zt~>
+JcC<$M?!GQoDe[fJcE"Tr;_EKq>^Bnci="FXoJ1sJcC<$JcC<$JcC<$b5Zt~>
+JcC<$M?!GQoDe[fJcERdr;cNjr;_EKp&Fmhec5XLZiBn&JcFp5nGn.?JcC<$JcC<$m/MS~>
+JcC<$M?!GQoDe[fJcERdr;cNjr;_EKp&Fmhec5XLZiBn&JcFp5nGn.?JcC<$JcC<$m/MS~>
+JcC<$M?!GQoDe[fJcERdr;cNjr;_EKp&Fmhec5XLZiBn&JcFp5nGn.?JcC<$JcC<$m/MS~>
+JcC<$M?!GQoDe[fJcERdr;cNjr;_EKp&Fmhec5XLZiBn&JcFp5nGn.?JcC<$JcC<$m/MS~>
+JcC<$M?!GQoDe[fJcERdr;cNjr;_EKp&Fmhec5XLZiBn&JcFp5nGn.?JcC<$JcC<$m/MS~>
+JcC<$M?!GQoDe[fJcERdr;cNjr;_EKp&Fmhec5XLZiBn&JcFp5nGn.?JcC<$JcC<$m/MS~>
+JcC<$L]@5Op&FmhJcERdqZ-Hlr;_EKmJm+bg&M'P]Dq[,JcF^/nGn.?JcC<$JcC<$m/MS~>
+JcC<$L]@5Op&FmhJcERdqZ-Hlr;_EKmJm+bg&M'P]Dq[,JcF^/nGn.?JcC<$JcC<$m/MS~>
+JcC<$L]@5Op&FmhJcERdqZ-Hlr;_EKmJm+bg&M'P]Dq[,JcF^/nGn.?JcC<$JcC<$m/MS~>
+JcC<$L]@5Op&FmhJcERdqZ-Hlr;_EKmJm+bg&M'P]Dq[,JcF^/nGn.?JcC<$JcC<$m/MS~>
+JcC<$L]@5Op&FmhJcERdqZ-Hlr;_EKmJm+bg&M'P]Dq[,JcF^/nGn.?JcC<$JcC<$m/MS~>
+JcC<$L]@5Op&FmhJcERdqZ-Hlr;_EKmJm+bg&M'P]Dq[,JcF^/nGn.?JcC<$JcC<$m/MS~>
+JcC<$L]@/Mq>^<lJcEF`nGn.?l2U\^h>dKT_uKN4JcFF'r;_EKJcC<$JcC<$i;\<~>
+JcC<$L]@/Mq>^<lJcEF`nGn.?l2U\^h>dKT_uKN4JcFF'r;_EKJcC<$JcC<$i;\<~>
+JcC<$L]@/Mq>^<lJcEF`nGn.?l2U\^h>dKT_uKN4JcFF'r;_EKJcC<$JcC<$i;\<~>
+JcC<$L]@/Mq>^<lJcEF`nGn.?l2U\^h>dKT_uKN4JcFF'r;_EKJcC<$JcC<$i;\<~>
+JcC<$L]@/Mq>^<lJcEF`nGn.?l2U\^h>dKT_uKN4JcFF'r;_EKJcC<$JcC<$i;\<~>
+JcC<$L]@/Mq>^<lJcEF`nGn.?l2U\^h>dKT_uKN4JcFF'r;_EKJcC<$JcC<$i;\<~>
+JcC<$L&_#Mq>^<lJcE@^pAfdEiW&iViW&oXaoD5<JcF-tr;_EKJcC<$JcC<$i;\<~>
+JcC<$L&_#Mq>^<lJcE@^pAfdEiW&iViW&oXaoD5<JcF-tr;_EKJcC<$JcC<$i;\<~>
+JcC<$L&_#Mq>^<lJcE@^pAfdEiW&iViW&oXaoD5<JcF-tr;_EKJcC<$JcC<$i;\<~>
+JcC<$L&_#Mq>^<lJcE@^pAfdEiW&iViW&oXaoD5<JcF-tr;_EKJcC<$JcC<$i;\<~>
+JcC<$L&_#Mq>^<lJcE@^pAfdEiW&iViW&oXaoD5<JcF-tr;_EKJcC<$JcC<$i;\<~>
+JcC<$L&_#Mq>^<lJcE@^pAfdEiW&iViW&oXaoD5<JcF-tr;_EKJcC<$JcC<$i;\<~>
+JcC<$L&^rKrVuZnJcC<$NW8qWjo>>\dJs"BJcEpnr;_EKJcC<$JcC<$i;\<~>
+JcC<$L&^rKrVuZnJcC<$NW8qWjo>>\dJs"BJcEpnr;_EKJcC<$JcC<$i;\<~>
+JcC<$L&^rKrVuZnJcC<$NW8qWjo>>\dJs"BJcEpnr;_EKJcC<$JcC<$i;\<~>
+JcC<$L&^rKrVuZnJcC<$NW8qWjo>>\dJs"BJcEpnr;_EKJcC<$JcC<$i;\<~>
+JcC<$L&^rKrVuZnJcC<$NW8qWjo>>\dJs"BJcEpnr;_EKJcC<$JcC<$i;\<~>
+JcC<$L&^rKrVuZnJcC<$NW8qWjo>>\dJs"BJcEpnr;_EKJcC<$JcC<$i;\<~>
+JcC<$KE(fKrVu`pJcC<$L]@5Oli6tbg&LjJJcEXfrrE*!pAfdEJcC<$JcC<$lMlA~>
+JcC<$KE(fKrVu`pJcC<$L]@5Oli6tbg&LjJJcEXfrrE*!pAfdEJcC<$JcC<$lMlA~>
+JcC<$KE(fKrVu`pJcC<$L]@5Oli6tbg&LjJJcEXfrrE*!pAfdEJcC<$JcC<$lMlA~>
+JcC<$KE(fKrVu`pJcC<$L]@5Oli6tbg&LjJJcEXfrrE*!pAfdEJcC<$JcC<$lMlA~>
+JcC<$KE(fKrVu`pJcC<$L]@5Oli6tbg&LjJJcEXfrrE*!pAfdEJcC<$JcC<$lMlA~>
+JcC<$KE(fKrVu`pJcC<$L]@5Oli6tbg&LjJJcEXfrrE*!pAfdEJcC<$JcC<$lMlA~>
+JcC<$KE(fKrVu`pJcC<$JcGZKn,NCfiW&]RJcEF`mf7q=JcC<$JcC<$m/MS~>
+JcC<$KE(fKrVu`pJcC<$JcGZKn,NCfiW&]RJcEF`mf7q=JcC<$JcC<$m/MS~>
+JcC<$KE(fKrVu`pJcC<$JcGZKn,NCfiW&]RJcEF`mf7q=JcC<$JcC<$m/MS~>
+JcC<$KE(fKrVu`pJcC<$JcGZKn,NCfiW&]RJcEF`mf7q=JcC<$JcC<$m/MS~>
+JcC<$KE(fKrVu`pJcC<$JcGZKn,NCfiW&]RJcEF`mf7q=JcC<$JcC<$m/MS~>
+JcC<$KE(fKrVu`pJcC<$JcGZKn,NCfiW&]RJcEF`mf7q=JcC<$JcC<$m/MS~>
+JcC<$JcGBCJcC<$JcGWIr;cHhrrD6^qZ)3I[K$1*p](*jJcC<$JcC<$JcG0<J,~>
+JcC<$JcGBCJcC<$JcGWIr;cHhrrD6^qZ)3I[K$1*p](*jJcC<$JcC<$JcG0<J,~>
+JcC<$JcGBCJcC<$JcGWIr;cHhrrD6^qZ)3I[K$1*p](*jJcC<$JcC<$JcG0<J,~>
+JcC<$JcGBCJcC<$JcGWIr;cHhrrD6^qZ)3I[K$1*p](*jJcC<$JcC<$JcG0<J,~>
+JcC<$JcGBCJcC<$JcGWIr;cHhrrD6^qZ)3I[K$1*p](*jJcC<$JcC<$JcG0<J,~>
+JcC<$JcGBCJcC<$JcGWIr;cHhrrD6^qZ)3I[K$1*p](*jJcC<$JcC<$JcG0<J,~>
+JcC<$JcGBCJcC<$JcGKEr;cTlrrDNfq#H!GTE"iiJcC<$JcC<$JcG0<J,~>
+JcC<$JcGBCJcC<$JcGKEr;cTlrrDNfq#H!GTE"iiJcC<$JcC<$JcG0<J,~>
+JcC<$JcGBCJcC<$JcGKEr;cTlrrDNfq#H!GTE"iiJcC<$JcC<$JcG0<J,~>
+JcC<$JcGBCJcC<$JcGKEr;cTlrrDNfq#H!GTE"iiJcC<$JcC<$JcG0<J,~>
+JcC<$JcGBCJcC<$JcGKEr;cTlrrDNfq#H!GTE"iiJcC<$JcC<$JcG0<J,~>
+JcC<$JcGBCJcC<$JcGKEr;cTlrrDNfq#H!GTE"iiJcC<$JcC<$JcG0<J,~>
+JcC<$JcGcMpAfdEJcC<$oDeahqu?Zrp]($hJcD):r;_EKJcGWIqZ-BjqZ)3IJcCW-J,~>
+JcC<$JcGcMpAfdEJcC<$oDeahqu?Zrp]($hJcD):r;_EKJcGWIqZ-BjqZ)3IJcCW-J,~>
+JcC<$JcGcMpAfdEJcC<$oDeahqu?Zrp]($hJcD):r;_EKJcGWIqZ-BjqZ)3IJcCW-J,~>
+JcC<$JcGcMpAfdEJcC<$oDeahqu?Zrp]($hJcD):r;_EKJcGWIqZ-BjqZ)3IJcCW-J,~>
+JcC<$JcGcMpAfdEJcC<$oDeahqu?Zrp]($hJcD):r;_EKJcGWIqZ-BjqZ)3IJcCW-J,~>
+JcC<$JcGcMpAfdEJcC<$oDeahqu?Zrp]($hJcD):r;_EKJcGWIqZ-BjqZ)3IJcCW-J,~>
+JcC<$JcGcMq#H!GJcC<$mJm+bs8W*!s8VlpJcCf2r;_EKJcGWIq#L<lq#H!GJcCW-J,~>
+JcC<$JcGcMq#H!GJcC<$mJm+bs8W*!s8VlpJcCf2r;_EKJcGWIq#L<lq#H!GJcCW-J,~>
+JcC<$JcGcMq#H!GJcC<$mJm+bs8W*!s8VlpJcCf2r;_EKJcGWIq#L<lq#H!GJcCW-J,~>
+JcC<$JcGcMq#H!GJcC<$mJm+bs8W*!s8VlpJcCf2r;_EKJcGWIq#L<lq#H!GJcCW-J,~>
+JcC<$JcGcMq#H!GJcC<$mJm+bs8W*!s8VlpJcCf2r;_EKJcGWIq#L<lq#H!GJcCW-J,~>
+JcC<$JcGcMq#H!GJcC<$mJm+bs8W*!s8VlpJcCf2r;_EKJcGWIq#L<lq#H!GJcCW-J,~>
+JcC<$JcG]KqZ)3IJcC<$l2UV\JcD):r;cNjr;_EKJcGQGqZ-NnqZ)3IJcCQ+J,~>
+JcC<$JcG]KqZ)3IJcC<$l2UV\JcD):r;cNjr;_EKJcGQGqZ-NnqZ)3IJcCQ+J,~>
+JcC<$JcG]KqZ)3IJcC<$l2UV\JcD):r;cNjr;_EKJcGQGqZ-NnqZ)3IJcCQ+J,~>
+JcC<$JcG]KqZ)3IJcC<$l2UV\JcD):r;cNjr;_EKJcGQGqZ-NnqZ)3IJcCQ+J,~>
+JcC<$JcG]KqZ)3IJcC<$l2UV\JcD):r;cNjr;_EKJcGQGqZ-NnqZ)3IJcCQ+J,~>
+JcC<$JcG]KqZ)3IJcC<$l2UV\JcD):r;cNjr;_EKJcGQGqZ-NnqZ)3IJcCQ+J,~>
+JcC<$JcG]KqZ)3IJcC<$kPtJ\JcD):qZ-Hlr;_EKJcGECqZ-ZrqZ)3IJcCK)J,~>
+JcC<$JcG]KqZ)3IJcC<$kPtJ\JcD):qZ-Hlr;_EKJcGECqZ-ZrqZ)3IJcCK)J,~>
+JcC<$JcG]KqZ)3IJcC<$kPtJ\JcD):qZ-Hlr;_EKJcGECqZ-ZrqZ)3IJcCK)J,~>
+JcC<$JcG]KqZ)3IJcC<$kPtJ\JcD):qZ-Hlr;_EKJcGECqZ-ZrqZ)3IJcCK)J,~>
+JcC<$JcG]KqZ)3IJcC<$kPtJ\JcD):qZ-Hlr;_EKJcGECqZ-ZrqZ)3IJcCK)J,~>
+JcC<$JcG]KqZ)3IJcC<$kPtJ\JcD):qZ-Hlr;_EKJcGECqZ-ZrqZ)3IJcCK)J,~>
+JcC<$JcGcMqZ)3IJcC<$li6h^rVufrJcD/<nGn.?JcGECo)O at AJcCK)J,~>
+JcC<$JcGcMqZ)3IJcC<$li6h^rVufrJcD/<nGn.?JcGECo)O at AJcCK)J,~>
+JcC<$JcGcMqZ)3IJcC<$li6h^rVufrJcD/<nGn.?JcGECo)O at AJcCK)J,~>
+JcC<$JcGcMqZ)3IJcC<$li6h^rVufrJcD/<nGn.?JcGECo)O at AJcCK)J,~>
+JcC<$JcGcMqZ)3IJcC<$li6h^rVufrJcD/<nGn.?JcGECo)O at AJcCK)J,~>
+JcC<$JcGcMqZ)3IJcC<$li6h^rVufrJcD/<nGn.?JcGECo)O at AJcCK)J,~>
+JcC<$JcGcMqZ)3IJcC<$oDeUdoDeahJcD5>pAfdEJcG3=pAfdEJcCE'J,~>
+JcC<$JcGcMqZ)3IJcC<$oDeUdoDeahJcD5>pAfdEJcG3=pAfdEJcCE'J,~>
+JcC<$JcGcMqZ)3IJcC<$oDeUdoDeahJcD5>pAfdEJcG3=pAfdEJcCE'J,~>
+JcC<$JcGcMqZ)3IJcC<$oDeUdoDeahJcD5>pAfdEJcG3=pAfdEJcCE'J,~>
+JcC<$JcGcMqZ)3IJcC<$oDeUdoDeahJcD5>pAfdEJcG3=pAfdEJcCE'J,~>
+JcC<$JcGcMqZ)3IJcC<$oDeUdoDeahJcD5>pAfdEJcG3=pAfdEJcCE'J,~>
+JcC<$JcGTIJcC<$JcG?ArrD6^r;_EKJcC<$JcGTIJcC<$K)^?~>
+JcC<$JcGTIJcC<$JcG?ArrD6^r;_EKJcC<$JcGTIJcC<$K)^?~>
+JcC<$JcGTIJcC<$JcG?ArrD6^r;_EKJcC<$JcGTIJcC<$K)^?~>
+JcC<$JcGTIJcC<$JcG?ArrD6^r;_EKJcC<$JcGTIJcC<$K)^?~>
+JcC<$JcGTIJcC<$JcG?ArrD6^r;_EKJcC<$JcGTIJcC<$K)^?~>
+JcC<$JcGTIJcC<$JcG?ArrD6^r;_EKJcC<$JcGTIJcC<$K)^?~>
+JcC<$L&^lIJcC<$JcF4!r;_EKJcC<$L]@)KJcC<$K`?Q~>
+JcC<$L&^lIJcC<$JcF4!r;_EKJcC<$L]@)KJcC<$K`?Q~>
+JcC<$L&^lIJcC<$JcF4!r;_EKJcC<$L]@)KJcC<$K`?Q~>
+JcC<$L&^lIJcC<$JcF4!r;_EKJcC<$L]@)KJcC<$K`?Q~>
+JcC<$L&^lIJcC<$JcF4!r;_EKJcC<$L]@)KJcC<$K`?Q~>
+JcC<$L&^lIJcC<$JcF4!r;_EKJcC<$L]@)KJcC<$K`?Q~>
+JcC<$L&^rKJcC<$JcC<$JcC<$JcF4!pAfdEJcCE'J,~>
+JcC<$L&^rKJcC<$JcC<$JcC<$JcF4!pAfdEJcCE'J,~>
+JcC<$L&^rKJcC<$JcC<$JcC<$JcF4!pAfdEJcCE'J,~>
+JcC<$L&^rKJcC<$JcC<$JcC<$JcF4!pAfdEJcCE'J,~>
+JcC<$L&^rKJcC<$JcC<$JcC<$JcF4!pAfdEJcCE'J,~>
+JcC<$L&^rKJcC<$JcC<$JcC<$JcF4!pAfdEJcCE'J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$dJs(Ds8VrrJcC<$LAuc~>
+JcC<$JcC<$JcC<$JcC<$JcC<$dJs(Ds8VrrJcC<$LAuc~>
+JcC<$JcC<$JcC<$JcC<$JcC<$dJs(Ds8VrrJcC<$LAuc~>
+JcC<$JcC<$JcC<$JcC<$JcC<$dJs(Ds8VrrJcC<$LAuc~>
+JcC<$JcC<$JcC<$JcC<$JcC<$dJs(Ds8VrrJcC<$LAuc~>
+JcC<$JcC<$JcC<$JcC<$JcC<$dJs(Ds8VrrJcC<$LAuc~>
+JcC<$JcC<$JcC<$JcC<$JcC<$e,T4Ds8VlpJcC<$M#Vu~>
+JcC<$JcC<$JcC<$JcC<$JcC<$e,T4Ds8VlpJcC<$M#Vu~>
+JcC<$JcC<$JcC<$JcC<$JcC<$e,T4Ds8VlpJcC<$M#Vu~>
+JcC<$JcC<$JcC<$JcC<$JcC<$e,T4Ds8VlpJcC<$M#Vu~>
+JcC<$JcC<$JcC<$JcC<$JcC<$e,T4Ds8VlpJcC<$M#Vu~>
+JcC<$JcC<$JcC<$JcC<$JcC<$e,T4Ds8VlpJcC<$M#Vu~>
+JcC<$JcC<$JcC<$JcC<$JcC<$e,T:Fqu?NnJcC<$M#Vu~>
+JcC<$JcC<$JcC<$JcC<$JcC<$e,T:Fqu?NnJcC<$M#Vu~>
+JcC<$JcC<$JcC<$JcC<$JcC<$e,T:Fqu?NnJcC<$M#Vu~>
+JcC<$JcC<$JcC<$JcC<$JcC<$e,T:Fqu?NnJcC<$M#Vu~>
+JcC<$JcC<$JcC<$JcC<$JcC<$e,T:Fqu?NnJcC<$M#Vu~>
+JcC<$JcC<$JcC<$JcC<$JcC<$e,T:Fqu?NnJcC<$M#Vu~>
+JcC<$JcC<$JcC<$JcC<$JcC<$ec5FFqu?HlJcC<$MZ82~>
+JcC<$JcC<$JcC<$JcC<$JcC<$ec5FFqu?HlJcC<$MZ82~>
+JcC<$JcC<$JcC<$JcC<$JcC<$ec5FFqu?HlJcC<$MZ82~>
+JcC<$JcC<$JcC<$JcC<$JcC<$ec5FFqu?HlJcC<$MZ82~>
+JcC<$JcC<$JcC<$JcC<$JcC<$ec5FFqu?HlJcC<$MZ82~>
+JcC<$JcC<$JcC<$JcC<$JcC<$ec5FFqu?HlJcC<$MZ82~>
+JcC<$JcC<$JcC<$JcC<$JcC<$ec5LHp](*jJcC<$MZ82~>
+JcC<$JcC<$JcC<$JcC<$JcC<$ec5LHp](*jJcC<$MZ82~>
+JcC<$JcC<$JcC<$JcC<$JcC<$ec5LHp](*jJcC<$MZ82~>
+JcC<$JcC<$JcC<$JcC<$JcC<$ec5LHp](*jJcC<$MZ82~>
+JcC<$JcC<$JcC<$JcC<$JcC<$ec5LHp](*jJcC<$MZ82~>
+JcC<$JcC<$JcC<$JcC<$JcC<$ec5LHp](*jJcC<$MZ82~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcCZ.q#H!GJcC<$JcC<$JcC<$`rCP~>
+JcC<$JcC<$JcCZ.q#H!GJcC<$JcC<$JcC<$`rCP~>
+JcC<$JcC<$JcCZ.q#H!GJcC<$JcC<$JcC<$`rCP~>
+JcC<$JcC<$JcCZ.q#H!GJcC<$JcC<$JcC<$`rCP~>
+JcC<$JcC<$JcCZ.q#H!GJcC<$JcC<$JcC<$`rCP~>
+JcC<$JcC<$JcCZ.q#H!GJcC<$JcC<$JcC<$`rCP~>
+JcC<$JcC<$JcC`0o`0RCJcC<$JcC<$JcC<$aT$b~>
+JcC<$JcC<$JcC`0o`0RCJcC<$JcC<$JcC<$aT$b~>
+JcC<$JcC<$JcC`0o`0RCJcC<$JcC<$JcC<$aT$b~>
+JcC<$JcC<$JcC`0o`0RCJcC<$JcC<$JcC<$aT$b~>
+JcC<$JcC<$JcC`0o`0RCJcC<$JcC<$JcC<$aT$b~>
+JcC<$JcC<$JcC`0o`0RCJcC<$JcC<$JcC<$aT$b~>
+JcC<$JcC<$JcCf2r;cZnr;a>,q#H!GJcC<$JcC<$JcD8?J,~>
+JcC<$JcC<$JcCf2r;cZnr;a>,q#H!GJcC<$JcC<$JcD8?J,~>
+JcC<$JcC<$JcCf2r;cZnr;a>,q#H!GJcC<$JcC<$JcD8?J,~>
+JcC<$JcC<$JcCf2r;cZnr;a>,q#H!GJcC<$JcC<$JcD8?J,~>
+JcC<$JcC<$JcCf2r;cZnr;a>,q#H!GJcC<$JcC<$JcD8?J,~>
+JcC<$JcC<$JcCf2r;cZnr;a>,q#H!GJcC<$JcC<$JcD8?J,~>
+JcC<$JcC<$JcCf2r;cZnr;aD.o`0RCJcC<$JcC<$JcD>AJ,~>
+JcC<$JcC<$JcCf2r;cZnr;aD.o`0RCJcC<$JcC<$JcD>AJ,~>
+JcC<$JcC<$JcCf2r;cZnr;aD.o`0RCJcC<$JcC<$JcD>AJ,~>
+JcC<$JcC<$JcCf2r;cZnr;aD.o`0RCJcC<$JcC<$JcD>AJ,~>
+JcC<$JcC<$JcCf2r;cZnr;aD.o`0RCJcC<$JcC<$JcD>AJ,~>
+JcC<$JcC<$JcCf2r;cZnr;aD.o`0RCJcC<$JcC<$JcD>AJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aP2r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aP2r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aP2r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aP2r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aP2r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aP2r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aP2r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aP2r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aP2r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aP2r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aP2r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aP2r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCl4r;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCf2r;cZnqZ+D2r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCf2r;cZnqZ+D2r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCf2r;cZnqZ+D2r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCf2r;cZnqZ+D2r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCf2r;cZnqZ+D2r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCf2r;cZnqZ+D2r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCf2r;cZnr;aP2r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCf2r;cZnr;aP2r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCf2r;cZnr;aP2r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCf2r;cZnr;aP2r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCf2r;cZnr;aP2r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCf2r;cZnr;aP2r;cNjr;_EKJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcC`0o)QE&r;cZnqZ)3IJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcC`0o)QE&r;cZnqZ)3IJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcC`0o)QE&r;cZnqZ)3IJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcC`0o)QE&r;cZnqZ)3IJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcC`0o)QE&r;cZnqZ)3IJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcC`0o)QE&r;cZnqZ)3IJcC<$JcC<$JcDJEJ,~>
+JcC<$JcC<$JcCZ.q#Io(r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCZ.q#Io(r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCZ.q#Io(r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCZ.q#Io(r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCZ.q#Io(r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcCZ.q#Io(r;cZnr;_EKJcC<$JcC<$JcDDCJ,~>
+JcC<$JcC<$JcC<$\,Z%"JcC<$JcC<$JcC<$T`9N~>
+JcC<$JcC<$JcC<$\,Z%"JcC<$JcC<$JcC<$T`9N~>
+JcC<$JcC<$JcC<$\,Z%"JcC<$JcC<$JcC<$T`9N~>
+JcC<$JcC<$JcC<$\,Z%"JcC<$JcC<$JcC<$T`9N~>
+JcC<$JcC<$JcC<$\,Z%"JcC<$JcC<$JcC<$T`9N~>
+JcC<$JcC<$JcC<$\,Z%"JcC<$JcC<$JcC<$T`9N~>
+JcC<$JcC<$JcC<$[K$%&JcC<$JcC<$JcC<$SH"*~>
+JcC<$JcC<$JcC<$[K$%&JcC<$JcC<$JcC<$SH"*~>
+JcC<$JcC<$JcC<$[K$%&JcC<$JcC<$JcC<$SH"*~>
+JcC<$JcC<$JcC<$[K$%&JcC<$JcC<$JcC<$SH"*~>
+JcC<$JcC<$JcC<$[K$%&JcC<$JcC<$JcC<$SH"*~>
+JcC<$JcC<$JcC<$[K$%&JcC<$JcC<$JcC<$SH"*~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEgkJ,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
+
+%%EndDocument
+ @endspecial 0 37249 a Ft(Figure)569 b(6:)868 b(Results)569
+b(for)g(the)g Fr(pvakx)i Ft(example)d(problem)h(in)g(3D.)g(Nominal)g(v)
+-67 b(alues)568 b(of)h(the)g(source)0 38755 y(parameters.)p
+Black Black 6000 70453 a @beginspecial 14 @llx 14 @lly
+423 @urx 315 @ury 3240 @rwi @setspecial
+%%BeginDocument: pvakx3Dgrad.eps
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.12 by Peter Kirchgessner
+%%Title: /home/radu/CODES/sundials/cvodes/doc/pvakx3Dgrad.eps
+%%CreationDate: Mon Nov 29 13:19:53 2004
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 423 315
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228 14.173228 translate
+% Translate to begin of first scanline
+0.000000 300.240000 translate
+408.240000 -300.240000 scale
+% Image geometry
+1701 1251 8
+% Transformation matrix
+[ 1701 0 0 1251 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 1701 string def
+/gstr 1701 string def
+/bstr 1701 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:       721937 ASCII Bytes
+colorimage
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcE+WrrE*!rr at WMJcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcC<$JcE+WrrE*!rr at WMJcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcC<$JcE+WrrE*!rr at WMJcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcC<$JcE+WrrE*!rr at WMJcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcC<$JcE+WrrE*!rr at WMJcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcC<$JcE+WrrE*!rr at WMJcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcC<$JcEC_q#LHprrE*!r;_EKJcC<$JcC<$Zi>O~>
+JcC<$JcC<$JcC<$JcEC_q#LHprrE*!r;_EKJcC<$JcC<$Zi>O~>
+JcC<$JcC<$JcC<$JcEC_q#LHprrE*!r;_EKJcC<$JcC<$Zi>O~>
+JcC<$JcC<$JcC<$JcEC_q#LHprrE*!r;_EKJcC<$JcC<$Zi>O~>
+JcC<$JcC<$JcC<$JcEC_q#LHprrE*!r;_EKJcC<$JcC<$Zi>O~>
+JcC<$JcC<$JcC<$JcEC_q#LHprrE*!r;_EKJcC<$JcC<$Zi>O~>
+JcC<$JcC<$JcC<$JcE[gq#L0hrrDrrr;_EKJcC<$JcC<$\,Us~>
+JcC<$JcC<$JcC<$JcE[gq#L0hrrDrrr;_EKJcC<$JcC<$\,Us~>
+JcC<$JcC<$JcC<$JcE[gq#L0hrrDrrr;_EKJcC<$JcC<$\,Us~>
+JcC<$JcC<$JcC<$JcE[gq#L0hrrDrrr;_EKJcC<$JcC<$\,Us~>
+JcC<$JcC<$JcC<$JcE[gq#L0hrrDrrr;_EKJcC<$JcC<$\,Us~>
+JcC<$JcC<$JcC<$JcE[gq#L0hrrDrrr;_EKJcC<$JcC<$\,Us~>
+JcC<$JcC<$JcC<$JcEmmqZ-*brrDfnr;_EKJcC<$JcC<$]DmB~>
+JcC<$JcC<$JcC<$JcEmmqZ-*brrDfnr;_EKJcC<$JcC<$]DmB~>
+JcC<$JcC<$JcC<$JcEmmqZ-*brrDfnr;_EKJcC<$JcC<$]DmB~>
+JcC<$JcC<$JcC<$JcEmmqZ-*brrDfnr;_EKJcC<$JcC<$]DmB~>
+JcC<$JcC<$JcC<$JcEmmqZ-*brrDfnr;_EKJcC<$JcC<$]DmB~>
+JcC<$JcC<$JcC<$JcEmmqZ-*brrDfnr;_EKJcC<$JcC<$]DmB~>
+JcC<$JcC<$JcC<$JcF0uq#K[ZrrDZjr;_EKJcC<$JcC<$^]/f~>
+JcC<$JcC<$JcC<$JcF0uq#K[ZrrDZjr;_EKJcC<$JcC<$^]/f~>
+JcC<$JcC<$JcC<$JcF0uq#K[ZrrDZjr;_EKJcC<$JcC<$^]/f~>
+JcC<$JcC<$JcC<$JcF0uq#K[ZrrDZjr;_EKJcC<$JcC<$^]/f~>
+JcC<$JcC<$JcC<$JcF0uq#K[ZrrDZjr;_EKJcC<$JcC<$^]/f~>
+JcC<$JcC<$JcC<$JcF0uq#K[ZrrDZjr;_EKJcC<$JcC<$^]/f~>
+JcC<$JcC<$JcC<$JcFI(q#KCRrrDNfr;_EKJcC<$JcC<$_uG5~>
+JcC<$JcC<$JcC<$JcFI(q#KCRrrDNfr;_EKJcC<$JcC<$_uG5~>
+JcC<$JcC<$JcC<$JcFI(q#KCRrrDNfr;_EKJcC<$JcC<$_uG5~>
+JcC<$JcC<$JcC<$JcFI(q#KCRrrDNfr;_EKJcC<$JcC<$_uG5~>
+JcC<$JcC<$JcC<$JcFI(q#KCRrrDNfr;_EKJcC<$JcC<$_uG5~>
+JcC<$JcC<$JcC<$JcFI(q#KCRrrDNfr;_EKJcC<$JcC<$_uG5~>
+JcC<$JcC<$JcC<$JcFa0q#K+JrrDBbqZ)3IJcC<$JcC<$ao?k~>
+JcC<$JcC<$JcC<$JcFa0q#K+JrrDBbqZ)3IJcC<$JcC<$ao?k~>
+JcC<$JcC<$JcC<$JcFa0q#K+JrrDBbqZ)3IJcC<$JcC<$ao?k~>
+JcC<$JcC<$JcC<$JcFa0q#K+JrrDBbqZ)3IJcC<$JcC<$ao?k~>
+JcC<$JcC<$JcC<$JcFa0q#K+JrrDBbqZ)3IJcC<$JcC<$ao?k~>
+JcC<$JcC<$JcC<$JcFa0q#K+JrrDBbqZ)3IJcC<$JcC<$ao?k~>
+JcC<$JcC<$JcC<$JcFs6qZ,%DrrD0\r;_EKJcC<$JcC<$c2W:~>
+JcC<$JcC<$JcC<$JcFs6qZ,%DrrD0\r;_EKJcC<$JcC<$c2W:~>
+JcC<$JcC<$JcC<$JcFs6qZ,%DrrD0\r;_EKJcC<$JcC<$c2W:~>
+JcC<$JcC<$JcC<$JcFs6qZ,%DrrD0\r;_EKJcC<$JcC<$c2W:~>
+JcC<$JcC<$JcC<$JcFs6qZ,%DrrD0\r;_EKJcC<$JcC<$c2W:~>
+JcC<$JcC<$JcC<$JcFs6qZ,%DrrD0\r;_EKJcC<$JcC<$c2W:~>
+JcC<$JcC<$JcC<$JcG6>q#JV<rrD$Xr;_EKJcC<$JcC<$dJn^~>
+JcC<$JcC<$JcC<$JcG6>q#JV<rrD$Xr;_EKJcC<$JcC<$dJn^~>
+JcC<$JcC<$JcC<$JcG6>q#JV<rrD$Xr;_EKJcC<$JcC<$dJn^~>
+JcC<$JcC<$JcC<$JcG6>q#JV<rrD$Xr;_EKJcC<$JcC<$dJn^~>
+JcC<$JcC<$JcC<$JcG6>q#JV<rrD$Xr;_EKJcC<$JcC<$dJn^~>
+JcC<$JcC<$JcC<$JcG6>q#JV<rrD$Xr;_EKJcC<$JcC<$dJn^~>
+JcC<$JcC<$JcC<$JcGNFq#J>4rrCmTr;_EKJcC<$JcC<$ec1.~>
+JcC<$JcC<$JcC<$JcGNFq#J>4rrCmTr;_EKJcC<$JcC<$ec1.~>
+JcC<$JcC<$JcC<$JcGNFq#J>4rrCmTr;_EKJcC<$JcC<$ec1.~>
+JcC<$JcC<$JcC<$JcGNFq#J>4rrCmTr;_EKJcC<$JcC<$ec1.~>
+JcC<$JcC<$JcC<$JcGNFq#J>4rrCmTr;_EKJcC<$JcC<$ec1.~>
+JcC<$JcC<$JcC<$JcGNFq#J>4rrCmTr;_EKJcC<$JcC<$ec1.~>
+JcC<$JcC<$JcC<$JcG`LqZ+8.rrCaPr;_EKJcC<$JcC<$g&HR~>
+JcC<$JcC<$JcC<$JcG`LqZ+8.rrCaPr;_EKJcC<$JcC<$g&HR~>
+JcC<$JcC<$JcC<$JcG`LqZ+8.rrCaPr;_EKJcC<$JcC<$g&HR~>
+JcC<$JcC<$JcC<$JcG`LqZ+8.rrCaPr;_EKJcC<$JcC<$g&HR~>
+JcC<$JcC<$JcC<$JcG`LqZ+8.rrCaPr;_EKJcC<$JcC<$g&HR~>
+JcC<$JcC<$JcC<$JcG`LqZ+8.rrCaPr;_EKJcC<$JcC<$g&HR~>
+JcC<$JcC<$JcC<$LB%&L[K$7,ec5RJJcC<$JcC<$JcFR+J,~>
+JcC<$JcC<$JcC<$LB%&L[K$7,ec5RJJcC<$JcC<$JcFR+J,~>
+JcC<$JcC<$JcC<$LB%&L[K$7,ec5RJJcC<$JcC<$JcFR+J,~>
+JcC<$JcC<$JcC<$LB%&L[K$7,ec5RJJcC<$JcC<$JcFR+J,~>
+JcC<$JcC<$JcC<$LB%&L[K$7,ec5RJJcC<$JcC<$JcFR+J,~>
+JcC<$JcC<$JcC<$LB%&L[K$7,ec5RJJcC<$JcC<$JcFR+J,~>
+JcC<$JcC<$JcC<$NrSnTXoJD$dJs(DJcC<$JcC<$JcFd1J,~>
+JcC<$JcC<$JcC<$NrSnTXoJD$dJs(DJcC<$JcC<$JcFd1J,~>
+JcC<$JcC<$JcC<$NrSnTXoJD$dJs(DJcC<$JcC<$JcFd1J,~>
+JcC<$JcC<$JcC<$NrSnTXoJD$dJs(DJcC<$JcC<$JcFd1J,~>
+JcC<$JcC<$JcC<$NrSnTXoJD$dJs(DJcC<$JcC<$JcFd1J,~>
+JcC<$JcC<$JcC<$NrSnTXoJD$dJs(DJcC<$JcC<$JcFd1J,~>
+JcC<$JcC<$JcC<$PlLU\V>pPqbQ%M at JcC<$JcC<$JcFp5J,~>
+JcC<$JcC<$JcC<$PlLU\V>pPqbQ%M at JcC<$JcC<$JcFp5J,~>
+JcC<$JcC<$JcC<$PlLU\V>pPqbQ%M at JcC<$JcC<$JcFp5J,~>
+JcC<$JcC<$JcC<$PlLU\V>pPqbQ%M at JcC<$JcC<$JcFp5J,~>
+JcC<$JcC<$JcC<$PlLU\V>pPqbQ%M at JcC<$JcC<$JcFp5J,~>
+JcC<$JcC<$JcC<$PlLU\V>pPqbQ%M at JcC<$JcC<$JcFp5J,~>
+JcC<$JcC<$JcC<$SH&BbTE"oka8c)<JcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$JcC<$SH&BbTE"oka8c)<JcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$JcC<$SH&BbTE"oka8c)<JcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$JcC<$SH&BbTE"oka8c)<JcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$JcC<$SH&BbTE"oka8c)<JcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$JcC<$SH&BbTE"oka8c)<JcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$JcC<$V#U5jQiI'c_uKZ8JcC<$JcC<$JcG3=J,~>
+JcC<$JcC<$JcC<$V#U5jQiI'c_uKZ8JcC<$JcC<$JcG3=J,~>
+JcC<$JcC<$JcC<$V#U5jQiI'c_uKZ8JcC<$JcC<$JcG3=J,~>
+JcC<$JcC<$JcC<$V#U5jQiI'c_uKZ8JcC<$JcC<$JcG3=J,~>
+JcC<$JcC<$JcC<$V#U5jQiI'c_uKZ8JcC<$JcC<$JcG3=J,~>
+JcC<$JcC<$JcC<$V#U5jQiI'c_uKZ8JcC<$JcC<$JcG3=J,~>
+JcC<$JcC<$JcC<$WrMqrO8o4[^]464JcC<$JcC<$JcG?AJ,~>
+JcC<$JcC<$JcC<$WrMqrO8o4[^]464JcC<$JcC<$JcG?AJ,~>
+JcC<$JcC<$JcC<$WrMqrO8o4[^]464JcC<$JcC<$JcG?AJ,~>
+JcC<$JcC<$JcC<$WrMqrO8o4[^]464JcC<$JcC<$JcG?AJ,~>
+JcC<$JcC<$JcC<$WrMqrO8o4[^]464JcC<$JcC<$JcG?AJ,~>
+JcC<$JcC<$JcC<$WrMqrO8o4[^]464JcC<$JcC<$JcG?AJ,~>
+JcC<$JcC<$JcC<$ZN'_#M?!SU]Dqa.JcC<$JcC<$JcGQGJ,~>
+JcC<$JcC<$JcC<$ZN'_#M?!SU]Dqa.JcC<$JcC<$JcGQGJ,~>
+JcC<$JcC<$JcC<$ZN'_#M?!SU]Dqa.JcC<$JcC<$JcGQGJ,~>
+JcC<$JcC<$JcC<$ZN'_#M?!SU]Dqa.JcC<$JcC<$JcGQGJ,~>
+JcC<$JcC<$JcC<$ZN'_#M?!SU]Dqa.JcC<$JcC<$JcGQGJ,~>
+JcC<$JcC<$JcC<$ZN'_#M?!SU]Dqa.JcC<$JcC<$JcGQGJ,~>
+JcC<$JcC<$JcC<$])VR+JcG`M[K$1*JcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$JcC<$])VR+JcG`M[K$1*JcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$JcC<$])VR+JcG`M[K$1*JcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$JcC<$])VR+JcG`M[K$1*JcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$JcC<$])VR+JcG`M[K$1*JcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$JcC<$])VR+JcG`M[K$1*JcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$JcC<$_Z0E3JcGQGrrB>(r;_EKJcC<$JcC<$J,~>
+JcC<$JcC<$JcC<$_Z0E3JcGQGrrB>(r;_EKJcC<$JcC<$J,~>
+JcC<$JcC<$JcC<$_Z0E3JcGQGrrB>(r;_EKJcC<$JcC<$J,~>
+JcC<$JcC<$JcC<$_Z0E3JcGQGrrB>(r;_EKJcC<$JcC<$J,~>
+JcC<$JcC<$JcC<$_Z0E3JcGQGrrB>(r;_EKJcC<$JcC<$J,~>
+JcC<$JcC<$JcC<$_Z0E3JcGQGrrB>(r;_EKJcC<$JcC<$J,~>
+JcC<$JcC<$JcC<$aT),;JcG9?rrB2$r;_EKJcC<$JcCH(J,~>
+JcC<$JcC<$JcC<$aT),;JcG9?rrB2$r;_EKJcC<$JcCH(J,~>
+JcC<$JcC<$JcC<$aT),;JcG9?rrB2$r;_EKJcC<$JcCH(J,~>
+JcC<$JcC<$JcC<$aT),;JcG9?rrB2$r;_EKJcC<$JcCH(J,~>
+JcC<$JcC<$JcC<$aT),;JcG9?rrB2$r;_EKJcC<$JcCH(J,~>
+JcC<$JcC<$JcC<$aT),;JcG9?rrB2$r;_EKJcC<$JcCH(J,~>
+JcC<$JcC<$JcC<$d/WnAJcG'9rrB%ur;_EKJcC<$JcCT,J,~>
+JcC<$JcC<$JcC<$d/WnAJcG'9rrB%ur;_EKJcC<$JcCT,J,~>
+JcC<$JcC<$JcC<$d/WnAJcG'9rrB%ur;_EKJcC<$JcCT,J,~>
+JcC<$JcC<$JcC<$d/WnAJcG'9rrB%ur;_EKJcC<$JcCT,J,~>
+JcC<$JcC<$JcC<$d/WnAJcG'9rrB%ur;_EKJcC<$JcCT,J,~>
+JcC<$JcC<$JcC<$d/WnAJcG'9rrB%ur;_EKJcC<$JcCT,J,~>
+JcC<$JcC<$JcC<$f`1aIJcFd1rrAnqr;_EKJcC<$JcC`0J,~>
+JcC<$JcC<$JcC<$f`1aIJcFd1rrAnqr;_EKJcC<$JcC`0J,~>
+JcC<$JcC<$JcC<$f`1aIJcFd1rrAnqr;_EKJcC<$JcC`0J,~>
+JcC<$JcC<$JcC<$f`1aIJcFd1rrAnqr;_EKJcC<$JcC`0J,~>
+JcC<$JcC<$JcC<$f`1aIJcFd1rrAnqr;_EKJcC<$JcC`0J,~>
+JcC<$JcC<$JcC<$f`1aIJcFd1rrAnqr;_EKJcC<$JcC`0J,~>
+JcC<$JcC<$JcC<$hZ*HQJcFL)rrAbmqZ)3IJcC<$JcCr6J,~>
+JcC<$JcC<$JcC<$hZ*HQJcFL)rrAbmqZ)3IJcC<$JcCr6J,~>
+JcC<$JcC<$JcC<$hZ*HQJcFL)rrAbmqZ)3IJcC<$JcCr6J,~>
+JcC<$JcC<$JcC<$hZ*HQJcFL)rrAbmqZ)3IJcC<$JcCr6J,~>
+JcC<$JcC<$JcC<$hZ*HQJcFL)rrAbmqZ)3IJcC<$JcCr6J,~>
+JcC<$JcC<$JcC<$hZ*HQJcFL)rrAbmqZ)3IJcC<$JcCr6J,~>
+JcC<$JcC<$JcC<$k5Y5WJcF:#rrAPgr;_EKJcC<$JcD):J,~>
+JcC<$JcC<$JcC<$k5Y5WJcF:#rrAPgr;_EKJcC<$JcD):J,~>
+JcC<$JcC<$JcC<$k5Y5WJcF:#rrAPgr;_EKJcC<$JcD):J,~>
+JcC<$JcC<$JcC<$k5Y5WJcF:#rrAPgr;_EKJcC<$JcD):J,~>
+JcC<$JcC<$JcC<$k5Y5WJcF:#rrAPgr;_EKJcC<$JcD):J,~>
+JcC<$JcC<$JcC<$k5Y5WJcF:#rrAPgr;_EKJcC<$JcD):J,~>
+JcC<$JcC<$JcC<$mf3(_JcF!prrADcr;_EKJcC<$JcD5>J,~>
+JcC<$JcC<$JcC<$mf3(_JcF!prrADcr;_EKJcC<$JcD5>J,~>
+JcC<$JcC<$JcC<$mf3(_JcF!prrADcr;_EKJcC<$JcD5>J,~>
+JcC<$JcC<$JcC<$mf3(_JcF!prrADcr;_EKJcC<$JcD5>J,~>
+JcC<$JcC<$JcC<$mf3(_JcF!prrADcr;_EKJcC<$JcD5>J,~>
+JcC<$JcC<$JcC<$mf3(_JcF!prrADcr;_EKJcC<$JcD5>J,~>
+JcC<$JcC<$JcC<$o`+dgJcE^hrrA8_r;_EKJcC<$JcDABJ,~>
+JcC<$JcC<$JcC<$o`+dgJcE^hrrA8_r;_EKJcC<$JcDABJ,~>
+JcC<$JcC<$JcC<$o`+dgJcE^hrrA8_r;_EKJcC<$JcDABJ,~>
+JcC<$JcC<$JcC<$o`+dgJcE^hrrA8_r;_EKJcC<$JcDABJ,~>
+JcC<$JcC<$JcC<$o`+dgJcE^hrrA8_r;_EKJcC<$JcDABJ,~>
+JcC<$JcC<$JcC<$o`+dgJcE^hrrA8_r;_EKJcC<$JcDABJ,~>
+JcC<$JcC<$JcC<$r;ZQmJcELbrrA,[r;_EKJcC<$JcDMFJ,~>
+JcC<$JcC<$JcC<$r;ZQmJcELbrrA,[r;_EKJcC<$JcDMFJ,~>
+JcC<$JcC<$JcC<$r;ZQmJcELbrrA,[r;_EKJcC<$JcDMFJ,~>
+JcC<$JcC<$JcC<$r;ZQmJcELbrrA,[r;_EKJcC<$JcDMFJ,~>
+JcC<$JcC<$JcC<$r;ZQmJcELbrrA,[r;_EKJcC<$JcDMFJ,~>
+JcC<$JcC<$JcC<$r;ZQmJcELbrrA,[r;_EKJcC<$JcDMFJ,~>
+JcC<$JcC<$JcCE'q#H!G\,ZI.MuW_UJcC<$JcC<$VuM8~>
+JcC<$JcC<$JcCE'q#H!G\,ZI.MuW_UJcC<$JcC<$VuM8~>
+JcC<$JcC<$JcCE'q#H!G\,ZI.MuW_UJcC<$JcC<$VuM8~>
+JcC<$JcC<$JcCE'q#H!G\,ZI.MuW_UJcC<$JcC<$VuM8~>
+JcC<$JcC<$JcCE'q#H!G\,ZI.MuW_UJcC<$JcC<$VuM8~>
+JcC<$JcC<$JcCE'q#H!G\,ZI.MuW_UJcC<$JcC<$VuM8~>
+JcC<$JcC<$JcCW-qZ)3IYQ+V&L]@5OJcC<$JcC<$XoEn~>
+JcC<$JcC<$JcCW-qZ)3IYQ+V&L]@5OJcC<$JcC<$XoEn~>
+JcC<$JcC<$JcCW-qZ)3IYQ+V&L]@5OJcC<$JcC<$XoEn~>
+JcC<$JcC<$JcCW-qZ)3IYQ+V&L]@5OJcC<$JcC<$XoEn~>
+JcC<$JcC<$JcCW-qZ)3IYQ+V&L]@5OJcC<$JcC<$XoEn~>
+JcC<$JcC<$JcCW-qZ)3IYQ+V&L]@5OJcC<$JcC<$XoEn~>
+JcC<$JcC<$JcCo5q#H!GWW2tuMuW['rVufrJcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcCo5q#H!GWW2tuMuWhArTO4[r;_EKJcC<$JcE"TJ,~>
+JcC<$JcC<$JcCo5q#H!GWW2tuMuW['rVufrJcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcCo5q#H!GWW2tuMuW['rVufrJcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcCo5q#H!GWW2tuMuWhArTO4[r;_EKJcC<$JcE"TJ,~>
+JcC<$JcC<$JcCo5q#H!GWW2tuMuW['rVufrJcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcD2=q#H!GU&Y,mQiHN'q>^BnJcC<$JcC<$[Jta~>
+JcC<$JcC<$JcD2=q#H!GU&Y,mQiI*NrTX:Eqre"Cq>^BnJcC<$JcC<$[Jta~>
+JcC<$JcC<$JcD2=q#H!GU&Y,mQiHN'q>^BnJcC<$JcC<$[Jta~>
+JcC<$JcC<$JcD2=q#H!GU&Y,mQiHN'q>^BnJcC<$JcC<$[Jta~>
+JcC<$JcC<$JcD2=q#H!GU&Y,mQiI*NrTX:Eqre"Cq>^BnJcC<$JcC<$[Jta~>
+JcC<$JcC<$JcD2=q#H!GU&Y,mQiHN'q>^BnJcC<$JcC<$[Jta~>
+JcC<$JcC<$JcDJEq#H!GRK*9eU]9A'p&FsjJcC<$JcC<$\c70~>
+JcC<$JcC<$JcDJEq#H!GRK*9eU]:5Ws6BRIrTO:Es5s4?s5s at Cp&FsjJcC<$JcC<$\c70~>
+JcC<$JcC<$JcDJEq#H!GRK*9eU]9A'p&FsjJcC<$JcC<$\c70~>
+JcC<$JcC<$JcDJEq#H!GRK*9eU]9A'p&FsjJcC<$JcC<$\c70~>
+JcC<$JcC<$JcDJEq#H!GRK*9eU]:5Ws6BRIrTO:Es5s4?s5s at Cp&FsjJcC<$JcC<$\c70~>
+JcC<$JcC<$JcDJEq#H!GRK*9eU]9A'p&FsjJcC<$JcC<$\c70~>
+JcC<$JcC<$JcD\KqZ)3IOoPF]XoI('nc/OfJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcD\KqZ)3IOoPF]XoJ4_qs+4GrTO4Cs5s:@rT!q=s5X.<nc/OfJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcD\KqZ)3IOoPF]XoI('nc/OfJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcD\KqZ)3IOoPF]XoI('nc/OfJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcD\KqZ)3IOoPF]XoJ4_qs+4GrTO4Cs5s:@rT!q=s5X.<nc/OfJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcD\KqZ)3IOoPF]XoI('nc/OfJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcDtSq#H!GMuWeW\,Xj)li6n`JcC<$JcC<$_>f#~>
+JcC<$JcC<$JcDtSq#H!GMuWeW\,ZEns6KXKrTX.Cs69RIs6'@Cs5j:@s5O"9s5O(:s53/Br;_EK
+JcC<$JcERdJ,~>
+JcC<$JcC<$JcDtSq#H!GMuWeW\,Xj)li6n`JcC<$JcC<$_>f#~>
+JcC<$JcC<$JcDtSq#H!GMuWeW\,Xj)li6n`JcC<$JcC<$_>f#~>
+JcC<$JcC<$JcDtSq#H!GMuWeW\,ZEns6KXKrTX.Cs69RIs6'@Cs5j:@s5O"9s5O(:s53/Br;_EK
+JcC<$JcERdJ,~>
+JcC<$JcC<$JcDtSq#H!GMuWeW\,Xj)li6n`JcC<$JcC<$_>f#~>
+JcC<$JcC<$JcE7[q#H!GKE(rO_>hQ)kPtDZJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcE7[q#H!GKE(rO_>j,ns69RIqre"Eqs".Ds5s:As5a4>s5F"9s53k7s5*e3s4c`:
+qZ)3IJcC<$JcEdjJ,~>
+JcC<$JcC<$JcE7[q#H!GKE(rO_>hQ)kPtDZJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcE7[q#H!GKE(rO_>hQ)kPtDZJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcE7[q#H!GKE(rO_>j,ns69RIqre"Eqs".Ds5s:As5a4>s5F"9s53k7s5*e3s4c`:
+qZ)3IJcC<$JcEdjJ,~>
+JcC<$JcC<$JcE7[q#H!GKE(rO_>hQ)kPtDZJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcEIaqZ)3IJcGWIrrC7B]mer?r;_EKJcC<$JcEpnJ,~>
+JcC<$JcC<$JcEIaqZ)3IJcGWIrrC7Bp$MM?s6K^Ks5s4?rTX at Gs6'FDrT+"=s5O(:s53k4s5*e2
+s4dS,s4H<1r;_EKJcC<$JcEpnJ,~>
+JcC<$JcC<$JcEIaqZ)3IJcGWIrrC7B]mer?r;_EKJcC<$JcEpnJ,~>
+JcC<$JcC<$JcEIaqZ)3IJcGWIrrC7B]mer?r;_EKJcC<$JcEpnJ,~>
+JcC<$JcC<$JcEIaqZ)3IJcGWIrrC7Bp$MM?s6K^Ks5s4?rTX at Gs6'FDrT+"=s5O(:s53k4s5*e2
+s4dS,s4H<1r;_EKJcC<$JcEpnJ,~>
+JcC<$JcC<$JcEIaqZ)3IJcGWIrrC7B]mer?r;_EKJcC<$JcEpnJ,~>
+JcC<$JcC<$JcEaiq#H!GJcGECrrCOJ[=6s3r;_EKJcC<$JcF'rJ,~>
+JcC<$JcC<$JcEaiq#H!GJcGECrrCOJs6fpSrTsRMp[%qIq<\.Is60LErT!e=s5s at Cs5a4?s5O(;
+s53k5s4mY/s4[M*s4@;$s3og(r;_EKJcC<$JcF'rJ,~>
+JcC<$JcC<$JcEaiq#H!GJcGECrrCOJ[=6s3r;_EKJcC<$JcF'rJ,~>
+JcC<$JcC<$JcEaiq#H!GJcGECrrCOJ[=6s3r;_EKJcC<$JcF'rJ,~>
+JcC<$JcC<$JcEaiq#H!GJcGECrrCOJs6fpSrTsRMp[%qIq<\.Is60LErT!e=s5s at Cs5a4?s5O(;
+s53k5s4mY/s4[M*s4@;$s3og(r;_EKJcC<$JcF'rJ,~>
+JcC<$JcC<$JcEaiq#H!GJcGECrrCOJ[=6s3r;_EKJcC<$JcF'rJ,~>
+JcC<$JcC<$JcF$qq#H!GJcG-;rrCgRYC>+'r;_EKJcC<$JcF4!J,~>
+JcC<$JcC<$JcF$qq#H!GJcG-;rrCgRs6fpSrTsLKs6B:As60LIs6BXMrTsRLs6'FCrSde?s6'FE
+s5j:@s5O(;s5<q6s5!_.rRLqss3Ueks30*pr;_EKJcC<$JcF4!J,~>
+JcC<$JcC<$JcF$qq#H!GJcG-;rrCgRYC>+'r;_EKJcC<$JcF4!J,~>
+JcC<$JcC<$JcF$qq#H!GJcG-;rrCgRYC>+'r;_EKJcC<$JcF4!J,~>
+JcC<$JcC<$JcF$qq#H!GJcG-;rrCgRs6fpSrTsLKs6B:As60LIs6BXMrTsRLs6'FCrSde?s6'FE
+s5j:@s5O(;s5<q6s5!_.rRLqss3Ueks30*pr;_EKJcC<$JcF4!J,~>
+JcC<$JcC<$JcF$qq#H!GJcG-;rrCgRYC>+'r;_EKJcC<$JcF4!J,~>
+JcC<$JcC<$JcF7"qZ)3IJcFj3rrD*ZWIE7pr;_EKJcC<$JcF@%J,~>
+JcC<$JcC<$JcF7"qZ)3IJcFj3rrD*Zs6fjQs6T^Ms6BRIrTO"<s5a4?s5a4ArT=.=s5O";s5<q7
+s6'FEs5a4?s4mM$s3UeiqoJfZs2Y/YdJs.FJcC<$JcC<$fDg@~>
+JcC<$JcC<$JcF7"qZ)3IJcFj3rrD*ZWIE7pr;_EKJcC<$JcF@%J,~>
+JcC<$JcC<$JcF7"qZ)3IJcFj3rrD*ZWIE7pr;_EKJcC<$JcF@%J,~>
+JcC<$JcC<$JcF7"qZ)3IJcFj3rrD*Zs6fjQs6T^Ms6BRIrTO"<s5a4?s5a4ArT=.=s5O";s5<q7
+s6'FEs5a4?s4mM$s3UeiqoJfZs2Y/YdJs.FJcC<$JcC<$fDg@~>
+JcC<$JcC<$JcF7"qZ)3IJcFj3rrD*ZWIE7pr;_EKJcC<$JcF@%J,~>
+JcC<$JcC<$JcFO*q#H!GJcFX-rrD<`V1-Vfr;_EKJcC<$JcFL)J,~>
+JcC<$JcC<$JcFO*q#H!GJcFX-rrD<`s6fjQs6T^Ms6BXKs60FErT=.Aq;_M6s53k5s53k7s5!_-
+s4%)!s4@;'s4[Lts1n<BqnDg<bQ%M at JcC<$JcC<$g])d~>
+JcC<$JcC<$JcFO*q#H!GJcFX-rrD<`V1-Vfr;_EKJcC<$JcFL)J,~>
+JcC<$JcC<$JcFO*q#H!GJcFX-rrD<`V1-Vfr;_EKJcC<$JcFL)J,~>
+JcC<$JcC<$JcFO*q#H!GJcFX-rrD<`s6fjQs6T^Ms6BXKs60FErT=.Aq;_M6s53k5s53k7s5!_-
+s4%)!s4@;'s4[Lts1n<BqnDg<bQ%M at JcC<$JcC<$g])d~>
+JcC<$JcC<$JcFO*q#H!GJcFX-rrD<`V1-Vfr;_EKJcC<$JcFL)J,~>
+JcC<$JcC<$JcFg2q#H!GJcF@%rrDThT74cZqZ)3IJcC<$JcF^/J,~>
+JcC<$JcC<$JcFg2q#H!GJcF@%rrDThrU0^QrTsRMrTaFIrTO:Es5s at CrT+"=s5Nq6s5*e2s4RG+
+s4IA#s3L_gs2tAds3Ueps46_Ss1SHFq7H[;`W,f8JcC<$JcC<$iW"E~>
+JcC<$JcC<$JcFg2q#H!GJcF@%rrDThT74cZqZ)3IJcC<$JcF^/J,~>
+JcC<$JcC<$JcFg2q#H!GJcF@%rrDThT74cZqZ)3IJcC<$JcF^/J,~>
+JcC<$JcC<$JcFg2q#H!GJcF@%rrDThrU0^QrTsRMrTaFIrTO:Es5s at CrT+"=s5Nq6s5*e2s4RG+
+s4IA#s3L_gs2tAds3Ueps46_Ss1SHFq7H[;`W,f8JcC<$JcC<$iW"E~>
+JcC<$JcC<$JcFg2q#H!GJcF@%rrDThT74cZqZ)3IJcC<$JcF^/J,~>
+JcC<$JcC<$JcG$8qZ)3IJcF'rrrDfnR=;pNr;_EKJcC<$JcFj3J,~>
+JcC<$JcC<$JcG$8qZ)3IJcF'rrrDfns6fjQrTsRMs6BRIs60FEs5s at Cs5a.=s5O(;s5<k4s5!_0
+s4RG's4%(ss3L_hs2tA_s2Y/^s3:Sjs1eTIrOhs>s1JBCrOMs<s0r$9s0KK?r;_EKJcC<$JcFj3
+J,~>
+JcC<$JcC<$JcG$8qZ)3IJcF'rrrDfnR=;pNr;_EKJcC<$JcFj3J,~>
+JcC<$JcC<$JcG$8qZ)3IJcF'rrrDfnR=;pNr;_EKJcC<$JcFj3J,~>
+JcC<$JcC<$JcG$8qZ)3IJcF'rrrDfns6fjQrTsRMs6BRIs60FEs5s at Cs5a.=s5O(;s5<k4s5!_0
+s4RG's4%(ss3L_hs2tA_s2Y/^s3:Sjs1eTIrOhs>s1JBCrOMs<s0r$9s0KK?r;_EKJcC<$JcFj3
+J,~>
+JcC<$JcC<$JcG$8qZ)3IJcF'rrrDfnR=;pNr;_EKJcC<$JcFj3J,~>
+JcC<$JcC<$JcG<@q#H!GJcEjlrrE#tQ%$:Dr;_EKJcC<$JcG!7J,~>
+JcC<$JcC<$JcG<@q#H!GJcEjlrrE#ts6p!TrTsLKs6BRIs60LGrT=.ArT+"=s5O(;s5<q7s5*e3
+s4dS-s4IA%s3q"ps3L_js3(GarPnlVs2Y/^s2"`Jqn)a<s186?s0r$:s0Vg3s0)I)\c;U.JcC<$
+JcC<$l2Q8~>
+JcC<$JcC<$JcG<@q#H!GJcEjlrrE#tQ%$:Dr;_EKJcC<$JcG!7J,~>
+JcC<$JcC<$JcG<@q#H!GJcEjlrrE#tQ%$:Dr;_EKJcC<$JcG!7J,~>
+JcC<$JcC<$JcG<@q#H!GJcEjlrrE#ts6p!TrTsLKs6BRIs60LGrT=.ArT+"=s5O(;s5<q7s5*e3
+s4dS-s4IA%s3q"ps3L_js3(GarPnlVs2Y/^s2"`Jqn)a<s186?s0r$:s0Vg3s0)I)\c;U.JcC<$
+JcC<$l2Q8~>
+JcC<$JcC<$JcG<@q#H!GJcEjlrrE#tQ%$:Dr;_EKJcC<$JcG!7J,~>
+JcC<$JcC<$JcGTHq#H!GJcERdrrA=5Z2ab&JcC<$JcC<$mJh\~>
+JcC<$JcC<$JcGTHq#H!GJcERds)A#,s6]jQs6K^MrTX:Es6'@Cs5j:ArT!q;s5F"9s53k5s5!_1
+s4[M)s4./!s3gqns3:SerQ>/]s2FrTrPSZTs1\NEs1/0 at rO`*@s1&*7s/c7"s/>sps/!"#r;_EK
+JcC<$JcG-;J,~>
+JcC<$JcC<$JcGTHq#H!GJcERdrrA=5Z2ab&JcC<$JcC<$mJh\~>
+JcC<$JcC<$JcGTHq#H!GJcERdrrA=5Z2ab&JcC<$JcC<$mJh\~>
+JcC<$JcC<$JcGTHq#H!GJcERds)A#,s6]jQs6K^MrTX:Es6'@Cs5j:ArT!q;s5F"9s53k5s5!_1
+s4[M)s4./!s3gqns3:SerQ>/]s2FrTrPSZTs1\NEs1/0 at rO`*@s1&*7s/c7"s/>sps/!"#r;_EK
+JcC<$JcG-;J,~>
+JcC<$JcC<$JcGTHq#H!GJcERdrrA=5Z2ab&JcC<$JcC<$mJh\~>
+JcC<$JcC<$K)bWHJcC<$^]41[rrAC7X8i+uJcC<$JcC<$nc++~>
+JcC<$JcC<$K)bWHJcC<$^]43"s)@r&s69LGrTF4CrT4(?rT!q;s5Eq7s53k5s4dS+s475"s3^km
+s3:Sfs3(Gas2Y/ZrPefTqni<Js1eTGs1&*3s/5=^X8i+uJcC<$JcC<$nc++~>
+JcC<$JcC<$K)bWHJcC<$^]41[rrAC7X8i+uJcC<$JcC<$nc++~>
+JcC<$JcC<$K)bWHJcC<$^]41[rrAC7X8i+uJcC<$JcC<$nc++~>
+JcC<$JcC<$K)bWHJcC<$^]43"s)@r&s69LGrTF4CrT4(?rT!q;s5Eq7s53k5s4dS+s475"s3^km
+s3:Sfs3(Gas2Y/ZrPefTqni<Js1eTGs1&*3s/5=^X8i+uJcC<$JcC<$nc++~>
+JcC<$JcC<$K)bWHJcC<$^]41[rrAC7X8i+uJcC<$JcC<$nc++~>
+JcC<$JcC<$M#[>PJcC<$^&RbSrrAI9V>pDmJcC<$JcC<$p]#a~>
+JcC<$JcC<$M#[>PJcC<$^&Riqs6]i%rTO4BrT4"=s5X(;s5Eq7s53k3s4RG's4%(rs3L_is3(Ga
+s2Y/Zs2G#Vs24lQs1nZLs1\NCs0r$:s/Q*ss/,grs02O)mA6ZZqZ)3IJcC<$JcGKEJ,~>
+JcC<$JcC<$M#[>PJcC<$^&RbSrrAI9V>pDmJcC<$JcC<$p]#a~>
+JcC<$JcC<$M#[>PJcC<$^&RbSrrAI9V>pDmJcC<$JcC<$p]#a~>
+JcC<$JcC<$M#[>PJcC<$^&Riqs6]i%rTO4BrT4"=s5X(;s5Eq7s53k3s4RG's4%(rs3L_is3(Ga
+s2Y/Zs2G#Vs24lQs1nZLs1\NCs0r$:s/Q*ss/,grs02O)mA6ZZqZ)3IJcC<$JcGKEJ,~>
+JcC<$JcC<$M#[>PJcC<$^&RbSrrAI9V>pDmJcC<$JcC<$p]#a~>
+JcC<$JcC<$OT5+VJcC<$]DqDMrrAU=S,`EeJcC<$JcC<$qu;0~>
+JcC<$JcC<$OT5+VJcC<$]DqQms6TdLs(DAos5j:Aqr at _9rSde7s53k4s4[M)s4%(rs3L_hs2tA^
+s2P)Ws2+fPs1nZLs1\NFs1&*<s0Ma-s/Z1"s/H$ss/5gms/#aqn"lNRr;_EKJcC<$JcGWIJ,~>
+JcC<$JcC<$OT5+VJcC<$]DqDMrrAU=S,`EeJcC<$JcC<$qu;0~>
+JcC<$JcC<$OT5+VJcC<$]DqDMrrAU=S,`EeJcC<$JcC<$qu;0~>
+JcC<$JcC<$OT5+VJcC<$]DqQms6TdLs(DAos5j:Aqr at _9rSde7s53k4s4[M)s4%(rs3L_hs2tA^
+s2P)Ws2+fPs1nZLs1\NFs1&*<s0Ma-s/Z1"s/H$ss/5gms/#aqn"lNRr;_EKJcC<$JcGWIJ,~>
+JcC<$JcC<$OT5+VJcC<$]DqDMrrAU=S,`EeJcC<$JcC<$qu;0~>
+JcC<$JcC<$R/cs^JcC<$\c:uErrA[?Q2gd_JcC<$JcC<$s8RT~>
+JcC<$JcC<$R/cs^JcC<$\c;Wrp$_qGs6'FBs(25jrSme7rS[_5s4mY,s4..ts3L_hs2k;]s2=rT
+s2"`Ns1eTJs1A<Bs1/0;s0D[/s/uC's/Z*trM]aoqkibWQ2gd_JcC<$JcC<$s8RT~>
+JcC<$JcC<$R/cs^JcC<$\c:uErrA[?Q2gd_JcC<$JcC<$s8RT~>
+JcC<$JcC<$R/cs^JcC<$\c:uErrA[?Q2gd_JcC<$JcC<$s8RT~>
+JcC<$JcC<$R/cs^JcC<$\c;Wrp$_qGs6'FBs(25jrSme7rS[_5s4mY,s4..ts3L_hs2k;]s2=rT
+s2"`Ns1eTJs1A<Bs1/0;s0D[/s/uC's/Z*trM]aoqkibWQ2gd_JcC<$JcC<$s8RT~>
+JcC<$JcC<$R/cs^JcC<$\c:uErrA[?Q2gd_JcC<$JcC<$s8RT~>
+JcC<$JcC<$T)\ZfJcC<$[K#E=rrAgCNW8qWJcC<$JcCB&J,~>
+JcC<$JcC<$T)\ZfJcC<$[K$9ps6]jPs6f^Os6fpLs5j4<s'l#es5<k5s5!_/s4@;#s3Uejs2tA^
+s2=rTs2"`Ns1eTIs1JBCs1&*;s0Vg2s0)I)s/c7$s/Q*us/>moqki\UNW8qWJcC<$JcCB&J,~>
+JcC<$JcC<$T)\ZfJcC<$[K#E=rrAgCNW8qWJcC<$JcCB&J,~>
+JcC<$JcC<$T)\ZfJcC<$[K#E=rrAgCNW8qWJcC<$JcCB&J,~>
+JcC<$JcC<$T)\ZfJcC<$[K$9ps6]jPs6f^Os6fpLs5j4<s'l#es5<k5s5!_/s4@;#s3Uejs2tA^
+s2=rTs2"`Ns1eTIs1JBCs1&*;s0Vg2s0)I)s/c7$s/Q*us/>moqki\UNW8qWJcC<$JcCB&J,~>
+JcC<$JcC<$T)\ZfJcC<$[K#E=rrAgCNW8qWJcC<$JcCB&J,~>
+JcC<$JcC<$VZ6GlJcC<$ZiB'7rrAsGL&_)OJcC<$JcCN*J,~>
+JcC<$JcC<$VZ6GlJcC<$ZiC!ks6TdQs69RMqsXROrSde7rSIQ^s5*e2s4RG's3q"ps31Mbs2G#U
+s2+fOs1eTJs1SHEs1/0=s0_m4s02O+s/c7#s/GmorMTUkkG<n4r;_EKJcC<$L];l~>
+JcC<$JcC<$VZ6GlJcC<$ZiB'7rrAsGL&_)OJcC<$JcCN*J,~>
+JcC<$JcC<$VZ6GlJcC<$ZiB'7rrAsGL&_)OJcC<$JcCN*J,~>
+JcC<$JcC<$VZ6GlJcC<$ZiC!ks6TdQs69RMqsXROrSde7rSIQ^s5*e2s4RG's3q"ps31Mbs2G#U
+s2+fOs1eTJs1SHEs1/0=s0_m4s02O+s/c7#s/GmorMTUkkG<n4r;_EKJcC<$L];l~>
+JcC<$JcC<$VZ6GlJcC<$ZiB'7rrAsGL&_)OJcC<$JcCN*J,~>
+JcC<$JcC<$Y5e:tJcC<$Z2`X/rrB*KJcG]Kr;_EKJcC<$MuS;~>
+JcC<$JcC<$Y5e:tJcC<$Z2ajkq<\.Is6]jLs60LLs6p!Qqq_5*s4[KVs4..ts3L_hs2b5Zs24lQ
+s1nZKs1SHFs186 at s0hs6s02O+s/c$qql'Oms/+hQJcG]Kr;_EKJcC<$MuS;~>
+JcC<$JcC<$Y5e:tJcC<$Z2`X/rrB*KJcG]Kr;_EKJcC<$MuS;~>
+JcC<$JcC<$Y5e:tJcC<$Z2`X/rrB*KJcG]Kr;_EKJcC<$MuS;~>
+JcC<$JcC<$Y5e:tJcC<$Z2ajkq<\.Is6]jLs60LLs6p!Qqq_5*s4[KVs4..ts3L_hs2b5Zs24lQ
+s1nZKs1SHFs186 at s0hs6s02O+s/c$qql'Oms/+hQJcG]Kr;_EKJcC<$MuS;~>
+JcC<$JcC<$Y5e:tJcC<$Z2`X/rrB*KJcG]Kr;_EKJcC<$MuS;~>
+JcC<$JcC<$[/^"'JcC<$XoI('rrB0MJcGKEqZ)3IJcC<$OoKq~>
+JcC<$JcC<$[/^"'JcC<$XoJ at ds6K^MrTjLKs6K^OrT4(Ds6'41s475"s3gpEs31Mas2G#Us2"`M
+s1\NGs1A<Bs1&*:s0;U,s/PakrM]aorMJPMJcGKEqZ)3IJcC<$OoKq~>
+JcC<$JcC<$[/^"'JcC<$XoI('rrB0MJcGKEqZ)3IJcC<$OoKq~>
+JcC<$JcC<$[/^"'JcC<$XoI('rrB0MJcGKEqZ)3IJcC<$OoKq~>
+JcC<$JcC<$[/^"'JcC<$XoJ at ds6K^MrTjLKs6K^OrT4(Ds6'41s475"s3gpEs31Mas2G#Us2"`M
+s1\NGs1A<Bs1&*:s0;U,s/PakrM]aorMJPMJcGKEqZ)3IJcC<$OoKq~>
+JcC<$JcC<$[/^"'JcC<$XoI('rrB0MJcGKEqZ)3IJcC<$OoKq~>
+JcC<$JcC<$]`7d-JcC<$WW1S!rrBBSJcG'9r;_EKJcC<$Q2c@~>
+JcC<$JcC<$]`7d-JcC<$WW3"cs69RKrTX at Is69RKs6K^Ms5X(:qpbYps3^kls31Mcs%*1-s1nZL
+s1SHFs186 at s0hs5s/uC&s/Q*uql9OmrM]aohkbo(li6n`JcC<$JcD#8J,~>
+JcC<$JcC<$]`7d-JcC<$WW1S!rrBBSJcG'9r;_EKJcC<$Q2c@~>
+JcC<$JcC<$]`7d-JcC<$WW1S!rrBBSJcG'9r;_EKJcC<$Q2c@~>
+JcC<$JcC<$]`7d-JcC<$WW3"cs69RKrTX at Is69RKs6K^Ms5X(:qpbYps3^kls31Mcs%*1-s1nZL
+s1SHFs186 at s0hs5s/uC&s/Q*uql9OmrM]aohkbo(li6n`JcC<$JcD#8J,~>
+JcC<$JcC<$]`7d-JcC<$WW1S!rrBBSJcG'9r;_EKJcC<$Q2c@~>
+JcC<$JcC<$`;fW5JcC<$V>o"nrrBNWJcFd1r;_EKJcC<$RK%d~>
+JcC<$JcC<$`;fW5JcC<$V>pGZrTO:Es60LIs60LIs6K^Ks5F"3s3gejs3:Sds2Y/Xs2"_"s1JBD
+s1/0>s0Vg1s/c1!s/Gsqql9Uofqj9"j8]&XJcC<$JcD/<J,~>
+JcC<$JcC<$`;fW5JcC<$V>o"nrrBNWJcFd1r;_EKJcC<$RK%d~>
+JcC<$JcC<$`;fW5JcC<$V>o"nrrBNWJcFd1r;_EKJcC<$RK%d~>
+JcC<$JcC<$`;fW5JcC<$V>pGZrTO:Es60LIs60LIs6K^Ks5F"3s3gejs3:Sds2Y/Xs2"_"s1JBD
+s1/0>s0Vg1s/c1!s/Gsqql9Uofqj9"j8]&XJcC<$JcD/<J,~>
+JcC<$JcC<$`;fW5JcC<$V>o"nrrBNWJcFd1r;_EKJcC<$RK%d~>
+JcC<$JcC<$bl at J=JcC<$U&WGfrrBZ[JcFL)r;_EKJcC<$Sc=3~>
+JcC<$JcC<$bl at J=JcC<$U&Y/Yqs=@Ds5s at Cs5s:Cs60LIs6BX3s4..ts3:Ses2tA`s2P)Us1\NG
+s184ks0hs5s/u=#qlBars/>sqrMnDEJcFL)r;_EKJcC<$Sc=3~>
+JcC<$JcC<$bl at J=JcC<$U&WGfrrBZ[JcFL)r;_EKJcC<$Sc=3~>
+JcC<$JcC<$bl at J=JcC<$U&WGfrrBZ[JcFL)r;_EKJcC<$Sc=3~>
+JcC<$JcC<$bl at J=JcC<$U&Y/Yqs=@Ds5s at Cs5s:Cs60LIs6BX3s4..ts3:Ses2tA`s2P)Us1\NG
+s184ks0hs5s/u=#qlBars/>sqrMnDEJcFL)r;_EKJcC<$Sc=3~>
+JcC<$JcC<$bl at J=JcC<$U&WGfrrBZ[JcFL)r;_EKJcC<$Sc=3~>
+JcC<$JcC<$df91EJcC<$Sc?l^rrBf_JcF4!r;_EKJcC<$U&TW~>
+JcC<$JcC<$df91EJcC<$ScA`TrTjFKs6BXErT+"?s5s at Es60L*s2=r\s3gqjs2k;]s2G#Rs1A<A
+s0r$8s0;SWo;hnjs/>spe"qWqe,T at HJcC<$JcDGDJ,~>
+JcC<$JcC<$df91EJcC<$Sc?l^rrBf_JcF4!r;_EKJcC<$U&TW~>
+JcC<$JcC<$df91EJcC<$Sc?l^rrBf_JcF4!r;_EKJcC<$U&TW~>
+JcC<$JcC<$df91EJcC<$ScA`TrTjFKs6BXErT+"?s5s at Es60L*s2=r\s3gqjs2k;]s2G#Rs1A<A
+s0r$8s0;SWo;hnjs/>spe"qWqe,T at HJcC<$JcDGDJ,~>
+JcC<$JcC<$df91EJcC<$Sc?l^rrBf_JcF4!r;_EKJcC<$U&TW~>
+JcC<$JcC<$gAgsKJcC<$RK(BXrrC#eJcEjlr;_EKJcC<$V>l&~>
+JcC<$JcC<$gAgsKJcC<$RK*6MrTjFKs53k8s5O(=rT+"*rP\`Rs2b5_s2Y/Ys1SHCs0hs6s02O*
+rN#rMpT)W:JcEjlr;_EKJcC<$V>l&~>
+JcC<$JcC<$gAgsKJcC<$RK(BXrrC#eJcEjlr;_EKJcC<$V>l&~>
+JcC<$JcC<$gAgsKJcC<$RK(BXrrC#eJcEjlr;_EKJcC<$V>l&~>
+JcC<$JcC<$gAgsKJcC<$RK*6MrTjFKs53k8s5O(=rT+"*rP\`Rs2b5_s2Y/Ys1SHCs0hs6s02O*
+rN#rMpT)W:JcEjlr;_EKJcC<$V>l&~>
+JcC<$JcC<$gAgsKJcC<$RK(BXrrC#eJcEjlr;_EKJcC<$V>l&~>
+JcC<$JcC<$irAfSJcC<$Q2egPrrC5kJcELbqZ)3IJcC<$X8d\~>
+JcC<$JcC<$irAfSJcC<$Q2ggIrT=.>rTsR=s5!_5s5F"8s4%(es24lTs1\NLrPefHs0Vg3s0)I)
+q5aOns"",Nc)$!k^]402JcC<$JcDeNJ,~>
+JcC<$JcC<$irAfSJcC<$Q2egPrrC5kJcELbqZ)3IJcC<$X8d\~>
+JcC<$JcC<$irAfSJcC<$Q2egPrrC5kJcELbqZ)3IJcC<$X8d\~>
+JcC<$JcC<$irAfSJcC<$Q2ggIrT=.>rTsR=s5!_5s5F"8s4%(es24lTs1\NLrPefHs0Vg3s0)I)
+q5aOns"",Nc)$!k^]402JcC<$JcDeNJ,~>
+JcC<$JcC<$irAfSJcC<$Q2egPrrC5kJcELbqZ)3IJcC<$X8d\~>
+JcC<$JcC<$kl:M[JcC<$O8m=Nq`b#[rBAb\JcE(Vr;_EKJcC<$YQ'+~>
+JcC<$JcC<$kl:M[JcC<$O8o7Ds69LDs5a4;s6K^Os4[M.s5!_'s2Y#Ss1JBFs1nZBs0;U-s/l*t
+s/c7#s/,gls!I]?eYRisZiBt(JcC<$JcDqRJ,~>
+JcC<$JcC<$kl:M[JcC<$O8m=Nq`b#[rBAb\JcE(Vr;_EKJcC<$YQ'+~>
+JcC<$JcC<$kl:M[JcC<$O8m=Nq`b#[rBAb\JcE(Vr;_EKJcC<$YQ'+~>
+JcC<$JcC<$kl:M[JcC<$O8o7Ds69LDs5a4;s6K^Os4[M.s5!_'s2Y#Ss1JBFs1nZBs0;U-s/l*t
+s/c7#s/,gls!I]?eYRisZiBt(JcC<$JcDqRJ,~>
+JcC<$JcC<$kl:M[JcC<$O8m=Nq`b#[rBAb\JcE(Vr;_EKJcC<$YQ'+~>
+JcC<$JcC<$nGi:aJcC<$MuV+Po030SpHIVdJcDYJr;_EKJcC<$Zi>O~>
+JcC<$JcC<$nGi:aJcC<$MuW\<s5X.?s5F"5s5F"/s4@;$s31GZs2+fRs2+fHs0D[.s/ksps/,Uf
+s(1r#j/%>,VuQ\qJcC<$JcE(VJ,~>
+JcC<$JcC<$nGi:aJcC<$MuV+Po030SpHIVdJcDYJr;_EKJcC<$Zi>O~>
+JcC<$JcC<$nGi:aJcC<$MuV+Po030SpHIVdJcDYJr;_EKJcC<$Zi>O~>
+JcC<$JcC<$nGi:aJcC<$MuW\<s5X.?s5F"5s5F"/s4@;$s31GZs2+fRs2+fHs0D[.s/ksps/,Uf
+s(1r#j/%>,VuQ\qJcC<$JcE(VJ,~>
+JcC<$JcC<$nGi:aJcC<$MuV+Po030SpHIVdJcDYJr;_EKJcC<$Zi>O~>
+JcC<$JcC<$q#C-iJcC<$L&]\PlTY=KiBDhmS,`EeJcC<$JcE4ZJ,~>
+JcC<$JcC<$q#C-iJcC<$L&_27s60LIrSde:s53k1s4%(qs3:Saqn`<Ls2=rDs0)I(s/Z$ss/Y[c
+s(1r#s.fOes.TCas-WhQs-E\Ls,_g3S,`EeJcC<$JcE4ZJ,~>
+JcC<$JcC<$q#C-iJcC<$L&]\PlTY=KiBDhmS,`EeJcC<$JcE4ZJ,~>
+JcC<$JcC<$q#C-iJcC<$L&]\PlTY=KiBDhmS,`EeJcC<$JcE4ZJ,~>
+JcC<$JcC<$q#C-iJcC<$L&_27s60LIrSde:s53k1s4%(qs3:Saqn`<Ls2=rDs0)I(s/Z$ss/Y[c
+s(1r#s.fOes.TCas-WhQs-E\Ls,_g3S,`EeJcC<$JcE4ZJ,~>
+JcC<$JcC<$q#C-iJcC<$L&]\PlTY=KiBDhmS,`EeJcC<$JcE4ZJ,~>
+JcC<$JcC<$rr;iqJcC<$JcGcMgOA0HrrD at KJcC`0r;_EKJcC<$]DmB~>
+JcC<$JcC<$rr;iqJcC<$JcGcMs5a4?s5j:Ds53k7s5F"5s3^kjs2Y/Vs1\NKs2"`Es/Q+'s/c7#
+s/Gsss/#1[s.fU*rM0Ces.TIcs.B=Zs-NbOs-3PFJcC`0r;_EKJcC<$]DmB~>
+JcC<$JcC<$rr;iqJcC<$JcGcMgOA0HrrD at KJcC`0r;_EKJcC<$]DmB~>
+JcC<$JcC<$rr;iqJcC<$JcGcMgOA0HrrD at KJcC`0r;_EKJcC<$]DmB~>
+JcC<$JcC<$rr;iqJcC<$JcGcMs5a4?s5j:Ds53k7s5F"5s3^kjs2Y/Vs1\NKs2"`Es/Q+'s/c7#
+s/Gsss/#1[s.fU*rM0Ces.TIcs.B=Zs-NbOs-3PFJcC`0r;_EKJcC<$]DmB~>
+JcC<$JcC<$rr;iqJcC<$JcGcMgOA0HrrD at KJcC`0r;_EKJcC<$]DmB~>
+JcC<$JcCK)q#H!GJcC<$qu>W(gHPW;ofds,JcGcMr;_EKJcC<$^]/f~>
+JcC<$JcCK)q#H!GJcC<$qu?]Xs5X.;s5O(:s5*e5s4%(ms2tA\s1nZJs1eT?s/Q+%s/Z$rs/,=^
+qkO1cs.TI$s.97[s-WhPs-3PHJcC<$s8W#tJcC<$JcELbJ,~>
+JcC<$JcCK)q#H!GJcC<$qu>W(gHPW;ofds,JcGcMr;_EKJcC<$^]/f~>
+JcC<$JcCK)q#H!GJcC<$qu>W(gHPW;ofds,JcGcMr;_EKJcC<$^]/f~>
+JcC<$JcCK)q#H!GJcC<$qu?]Xs5X.;s5O(:s5*e5s4%(ms2tA\s1nZJs1eT?s/Q+%s/Z$rs/,=^
+qkO1cs.TI$s.97[s-WhPs-3PHJcC<$s8W#tJcC<$JcELbJ,~>
+JcC<$JcCK)q#H!GJcC<$qu>W(gHPW;ofds,JcGcMr;_EKJcC<$^]/f~>
+JcC<$JcCc1q#H!GJcC<$p&F3(dm!d3rB>f4JcG?AqZ)3IJcC<$`W(G~>
+JcC<$JcCc1q#H!GJcC<$p&G'Qs5<q:s5*e5s4dS/s2b5\s2b5Xs1JBDs/l7"s/Z0us/H$ro;)8Y
+s.]Ods.97\s-`nRs&T/`s,Va2JcG?AqZ)3IJcC<$`W(G~>
+JcC<$JcCc1q#H!GJcC<$p&F3(dm!d3rB>f4JcG?AqZ)3IJcC<$`W(G~>
+JcC<$JcCc1q#H!GJcC<$p&F3(dm!d3rB>f4JcG?AqZ)3IJcC<$`W(G~>
+JcC<$JcCc1q#H!GJcC<$p&G'Qs5<q:s5*e5s4dS/s2b5\s2b5Xs1JBDs/l7"s/Z0us/H$ro;)8Y
+s.]Ods.97\s-`nRs&T/`s,Va2JcG?AqZ)3IJcC<$`W(G~>
+JcC<$JcCc1q#H!GJcC<$p&F3(dm!d3rB>f4JcG?AqZ)3IJcC<$`W(G~>
+JcC<$JcCu7qZ)3IJcC<$n,Md(cT_=-rr at WMJcG!7r;_EKJcC<$ao?k~>
+JcC<$JcCu7qZ)3IJcC<$n,NFKs5j:<s5<q3s4[M"s2"`Ps2G#Ms1&*4ql9UmpS at V[s.TIbs.01Z
+s-WhPs-3PHrVultJcC<$l2U\^JcC<$JcEjlJ,~>
+JcC<$JcCu7qZ)3IJcC<$n,Md(cT_=-rr at WMJcG!7r;_EKJcC<$ao?k~>
+JcC<$JcCu7qZ)3IJcC<$n,Md(cT_=-rr at WMJcG!7r;_EKJcC<$ao?k~>
+JcC<$JcCu7qZ)3IJcC<$n,NFKs5j:<s5<q3s4[M"s2"`Ps2G#Ms1&*4ql9UmpS at V[s.TIbs.01Z
+s-WhPs-3PHrVultJcC<$l2U\^JcC<$JcEjlJ,~>
+JcC<$JcCu7qZ)3IJcC<$n,Md(cT_=-rr at WMJcG!7r;_EKJcC<$ao?k~>
+JcC<$JcD8?q#H!GJcC<$li6R*cT_%%rr at WMJcFj3r;_EKJcC<$c2W:~>
+JcC<$JcD8?q#H!GJcC<$li7"Fs5a48rSIS,s3:SXs186Es0Vg0ql9[ns/#Ugq4mt`s.97\s-itT
+s-E\Ls-!'Trr at WMJcFj3r;_EKJcC<$c2W:~>
+JcC<$JcD8?q#H!GJcC<$li6R*cT_%%rr at WMJcFj3r;_EKJcC<$c2W:~>
+JcC<$JcD8?q#H!GJcC<$li6R*cT_%%rr at WMJcFj3r;_EKJcC<$c2W:~>
+JcC<$JcD8?q#H!GJcC<$li7"Fs5a48rSIS,s3:SXs186Es0Vg0ql9[ns/#Ugq4mt`s.97\s-itT
+s-E\Ls-!'Trr at WMJcFj3r;_EKJcC<$c2W:~>
+JcC<$JcD8?q#H!GJcC<$li6R*cT_%%rr at WMJcFj3r;_EKJcC<$c2W:~>
+JcC<$JcDPGq#H!GJcC<$jo>((d6?strr at WMJcF^/r;_EKJcC<$dJn^~>
+JcC<$JcDPGq#H!GJcC<$jo>A>s5<q<s4dS0s3^khs1SHEs0_m0s/Q+"s/Q*qqkX+as.TIas-s%W
+s-WhPs-*JFmJm1dJcC<$iW&iVJcC<$JcF-tJ,~>
+JcC<$JcDPGq#H!GJcC<$jo>((d6?strr at WMJcF^/r;_EKJcC<$dJn^~>
+JcC<$JcDPGq#H!GJcC<$jo>((d6?strr at WMJcF^/r;_EKJcC<$dJn^~>
+JcC<$JcDPGq#H!GJcC<$jo>A>s5<q<s4dS0s3^khs1SHEs0_m0s/Q+"s/Q*qqkX+as.TIas-s%W
+s-WhPs-*JFmJm1dJcC<$iW&iVJcC<$JcF-tJ,~>
+JcC<$JcDPGq#H!GJcC<$jo>((d6?strr at WMJcF^/r;_EKJcC<$dJn^~>
+JcC<$JcDhOq#H!GJcC<$h>dM(cT^Olrr at WMJcFR+r;_EKJcC<$ec1.~>
+JcC<$JcDhOq#H!GJcC<$h>dN3s4[M5s4RFls2Y/Os1SH:s/Q$us.oIcs.]Obs-s%Ws-WhPs-3PG
+s,H4Arr at WMJcFR+r;_EKJcC<$ec1.~>
+JcC<$JcDhOq#H!GJcC<$h>dM(cT^Olrr at WMJcFR+r;_EKJcC<$ec1.~>
+JcC<$JcDhOq#H!GJcC<$h>dM(cT^Olrr at WMJcFR+r;_EKJcC<$ec1.~>
+JcC<$JcDhOq#H!GJcC<$h>dN3s4[M5s4RFls2Y/Os1SH:s/Q$us.oIcs.]Obs-s%Ws-WhPs-3PG
+s,H4Arr at WMJcFR+r;_EKJcC<$ec1.~>
+JcC<$JcDhOq#H!GJcC<$h>dM(cT^Olrr at WMJcFR+r;_EKJcC<$ec1.~>
+JcC<$JcE%UqZ)3IJcC<$g&M)$dlu[hrr at WMJcFF'r;_EKJcC<$g&HR~>
+JcC<$JcE%UqZ)3IJcC<$g&M*Os5!_/s4%)"s1\NJs1/0;s/Z*uqkO1cs.KC^s-itTs-E\Ls-!DB
+huE]VJcC<$g&M!NJcC<$JcFF'J,~>
+JcC<$JcE%UqZ)3IJcC<$g&M)$dlu[hrr at WMJcFF'r;_EKJcC<$g&HR~>
+JcC<$JcE%UqZ)3IJcC<$g&M)$dlu[hrr at WMJcFF'r;_EKJcC<$g&HR~>
+JcC<$JcE%UqZ)3IJcC<$g&M*Os5!_/s4%)"s1\NJs1/0;s/Z*uqkO1cs.KC^s-itTs-E\Ls-!DB
+huE]VJcC<$g&M!NJcC<$JcFF'J,~>
+JcC<$JcE%UqZ)3IJcC<$g&M)$dlu[hrr at WMJcFF'r;_EKJcC<$g&HR~>
+JcC<$JcE=]q#H!GJcC<$g&LksgHO6hrr at WMJcF:#qZ)3IJcC<$huA3~>
+JcC<$JcE=]q#H!GJcC<$g&LmIs4dS)s3L_Ys1JB at s/c7!s.o[is.]Oes.97[s-`nRs-3PHs,bk4
+rr at WMJcF:#qZ)3IJcC<$huA3~>
+JcC<$JcE=]q#H!GJcC<$g&LksgHO6hrr at WMJcF:#qZ)3IJcC<$huA3~>
+JcC<$JcE=]q#H!GJcC<$g&LksgHO6hrr at WMJcF:#qZ)3IJcC<$huA3~>
+JcC<$JcE=]q#H!GJcC<$g&LmIs4dS)s3L_Ys1JB at s/c7!s.o[is.]Oes.97[s-`nRs-3PHs,bk4
+rr at WMJcF:#qZ)3IJcC<$huA3~>
+JcC<$JcE=]q#H!GJcC<$g&LksgHO6hrr at WMJcF:#qZ)3IJcC<$huA3~>
+JcC<$JcEUeq#H!GJcC<$fDkMmh`fHfrr at WMJcF'rr;_EKJcC<$j8XW~>
+JcC<$JcEUeq#H!GJcC<$fDkOCs4dS,s3q"[s0qs*s/#ais.B=^s-itTs-<VJs,m>AdJs4HJcC<$
+ci<qDJcC<$JcFd1J,~>
+JcC<$JcEUeq#H!GJcC<$fDkMmh`fHfrr at WMJcF'rr;_EKJcC<$j8XW~>
+JcC<$JcEUeq#H!GJcC<$fDkMmh`fHfrr at WMJcF'rr;_EKJcC<$j8XW~>
+JcC<$JcEUeq#H!GJcC<$fDkOCs4dS,s3q"[s0qs*s/#ais.B=^s-itTs-<VJs,m>AdJs4HJcC<$
+ci<qDJcC<$JcFd1J,~>
+JcC<$JcEUeq#H!GJcC<$fDkMmh`fHfrr at WMJcF'rr;_EKJcC<$j8XW~>
+JcC<$JcEgkqZ)3IJcC<$ec5)ejZ^lfrr at WMJcEpnr;_EKJcC<$kPp&~>
+JcC<$JcEgkqZ)3IJcC<$ec51=s8DuMs4%([s0;U$s.fUds.'+Xs-NbMs-!DDs,>/$rr at WMJcEpn
+r;_EKJcC<$kPp&~>
+JcC<$JcEgkqZ)3IJcC<$ec5)ejZ^lfrr at WMJcEpnr;_EKJcC<$kPp&~>
+JcC<$JcEgkqZ)3IJcC<$ec5)ejZ^lfrr at WMJcEpnr;_EKJcC<$kPp&~>
+JcC<$JcEgkqZ)3IJcC<$ec51=s8DuMs4%([s0;U$s.fUds.'+Xs-NbMs-!DDs,>/$rr at WMJcEpn
+r;_EKJcC<$kPp&~>
+JcC<$JcEgkqZ)3IJcC<$ec5)ejZ^lfrr at WMJcEpnr;_EKJcC<$kPp&~>
+JcC<$JcF*sq#H!GJcC<$ec4l_lTW;frr at WMJcEdjr;_EKJcC<$li2J~>
+JcC<$JcF*sq#H!GJcC<$ec51=s8Duqs82ims4%(Zs/>sls.'+Ws-E\Ks,m>Bs,4krrr at WMJcEdj
+r;_EKJcC<$li2J~>
+JcC<$JcF*sq#H!GJcC<$ec4l_lTW;frr at WMJcEdjr;_EKJcC<$li2J~>
+JcC<$JcF*sq#H!GJcC<$ec4l_lTW;frr at WMJcEdjr;_EKJcC<$li2J~>
+JcC<$JcF*sq#H!GJcC<$ec51=s8Duqs82ims4%(Zs/>sls.'+Ws-E\Ks,m>Bs,4krrr at WMJcEdj
+r;_EKJcC<$li2J~>
+JcC<$JcF*sq#H!GJcC<$ec4l_lTW;frr at WMJcEdjr;_EKJcC<$li2J~>
+JcC<$JcFC&q#H!GJcC<$e,SNYmlnMdrr at WMJcEXfr;_EKJcC<$n,In~>
+JcC<$JcFC&q#H!GJcC<$e,St;s8Duqs8)cks7lWfs3CYPs.B=\s-<VIs,d8 at s,4Ylrr at WMJcEXf
+r;_EKJcC<$n,In~>
+JcC<$JcFC&q#H!GJcC<$e,SNYmlnMdrr at WMJcEXfr;_EKJcC<$n,In~>
+JcC<$JcFC&q#H!GJcC<$e,SNYmlnMdrr at WMJcEXfr;_EKJcC<$n,In~>
+JcC<$JcFC&q#H!GJcC<$e,St;s8Duqs8)cks7lWfs3CYPs.B=\s-<VIs,d8 at s,4Ylrr at WMJcEXf
+r;_EKJcC<$n,In~>
+JcC<$JcFC&q#H!GJcC<$e,SNYmlnMdrr at WMJcEXfr;_EKJcC<$n,In~>
+JcC<$JcFU,qZ)3IJcC<$dJr*Qr=8We\c;[0JcC<$^]402JcC<$JcGECJ,~>
+JcC<$JcFU,qZ)3IJcC<$dJrb9s8Duqs82ils7lWfs7H?]s6foQs'bqjs,d8As,4Gfrr at WMJcELb
+qZ)3IJcC<$p&BO~>
+JcC<$JcFU,qZ)3IJcC<$dJr*Qr=8We\c;[0JcC<$^]402JcC<$JcGECJ,~>
+JcC<$JcFU,qZ)3IJcC<$dJr*Qr=8We\c;[0JcC<$^]402JcC<$JcGECJ,~>
+JcC<$JcFU,qZ)3IJcC<$dJrb9s8Duqs82ils7lWfs7H?]s6foQs'bqjs,d8As,4Gfrr at WMJcELb
+qZ)3IJcC<$p&BO~>
+JcC<$JcFU,qZ)3IJcC<$dJr*Qr=8We\c;[0JcC<$^]402JcC<$JcGECJ,~>
+JcC<$JcFm4q#H!GJcC<$ci;gMrrW![[K$7,JcFj3aYAeTr;_EKJcC<$q>Ys~>
+JcC<$JcFm4q#H!GJcC<$ci<P7s8;oos7u]is7ZKcs7--Ws6BXHs&B#]s,[2=s+n)_rr at WMjo<FW
+NW8qWJcC<$JcGQGJ,~>
+JcC<$JcFm4q#H!GJcC<$ci;gMrrW![[K$7,JcFj3s3gkrs4RG-s53k9s5j:Es69RLs6]jTs7--[
+s7H9_s7ZKerV?Egs82]kNW8qWJcC<$JcGQGJ,~>
+JcC<$JcFm4q#H!GJcC<$ci;gMrrW![[K$7,JcFj3aYAeTr;_EKJcC<$q>Ys~>
+JcC<$JcFm4q#H!GJcC<$ci<P7s8;oos7u]is7ZKcs7--Ws6BXHs&B#]s,[2=s+n)_rr at WMjo<FW
+NW8qWJcC<$JcGQGJ,~>
+JcC<$JcFm4q#H!GJcC<$ci;gMrrW![[K$7,JcFj3s3gkrs4RG-s53k9s5j:Es69RLs6]jTs7--[
+s7H9_s7ZKerV?Egs82]kNW8qWJcC<$JcGQGJ,~>
+JcC<$JcG0<q#H!GJcC<$c2ZIGrs&KEs$!Xdrr at WMp](+Fr<^"hOoP@[JcC<$JcG]KJ,~>
+JcC<$JcG0<q#H!GJcC<$c2[>5s8Dups8)cjs7ZKcs763Ys6TdMs4IA&s'>Y?s,!rZrr at WMp](+F
+r<^"hOoP@[JcC<$JcG]KJ,~>
+JcC<$JcG0<q#H!GJcC<$c2ZIGrs&KEs$!Xdrr at WMp](9<s3L_ns1SHKs5F"=s6'FHs6K^Ps6fpV
+s7--[s7?-[s7lQhs82iphu8c<r;_EKJcC<$rVqB~>
+JcC<$JcG0<q#H!GJcC<$c2ZIGrs&KEs$!Xdrr at WMp](+Fr<^"hOoP@[JcC<$JcG]KJ,~>
+JcC<$JcG0<q#H!GJcC<$c2[>5s8Dups8)cjs7ZKcs763Ys6TdMs4IA&s'>Y?s,!rZrr at WMp](+F
+r<^"hOoP@[JcC<$JcG]KJ,~>
+JcC<$JcG0<q#H!GJcC<$c2ZIGrs&KEs$!Xdrr at WMp](9<s3L_ns1SHKs5F"=s6'FHs6K^Ps6fpV
+s7--[s7?-[s7lQhs82iphu8c<r;_EKJcC<$rVqB~>
+JcC<$JcGBBqZ)3IJcC<$aoC%Cq]>cdXoJD$L&_0-rrD]uWA0\<r;_EKJcC<$J,~>
+JcC<$JcGBBqZ)3IJcC<$aoCo1s8;ons7lWfs7H?^s6p!Rs60LEs4@;#s)S-Ts(DA.XoJD$L&_0-
+rrD]uWA0\<r;_EKJcC<$J,~>
+JcC<$JcGBBqZ)3IJcC<$aoC%Cq]>cdXoJD$L&_1ts/uC4s1eTMs2G#Ys2k<(s60LIs6K^Ps69RD
+s69FJs6fpVs7--[s7H?as7cQis82QgrVbXQQ2gd_JcC<$JcC6~>
+JcC<$JcGBBqZ)3IJcC<$aoC%Cq]>cdXoJD$L&_0-rrD]uWA0\<r;_EKJcC<$J,~>
+JcC<$JcGBBqZ)3IJcC<$aoCo1s8;ons7lWfs7H?^s6p!Rs60LEs4@;#s)S-Ts(DA.XoJD$L&_0-
+rrD]uWA0\<r;_EKJcC<$J,~>
+JcC<$JcGBBqZ)3IJcC<$aoC%Cq]>cdXoJD$L&_1ts/uC4s1eTMs2G#Ys2k<(s60LIs6K^Ps69RD
+s69FJs6fpVs7--[s7H?as7cQis82QgrVbXQQ2gd_JcC<$JcC6~>
+JcC<$JcGZJq#H!GJcC<$a8ab?rs&:JXoJD$OoPF]m0T=<QiI!aJcC<$L&ZZ~>
+JcC<$JcGZJq#H!GJcC<$a8bc1s8Dups7u]hs7H?^s6p!Ss69RFs5<q.s3^kis&B#qqk^FprrA2]
+rrDEmSM?K2r;_EKJcCH(J,~>
+JcC<$JcGZJq#H!GJcC<$a8ab?rs&:JXoJD$OoPHXs0Vg;s1nZOs2G#Xs2k;[s2P)Xs5<q9s5j:D
+s6BXOs7$'Zs7H?bs7lWjs89A*QiI!aJcC<$L&ZZ~>
+JcC<$JcGZJq#H!GJcC<$a8ab?rs&:JXoJD$OoPF]m0T=<QiI!aJcC<$L&ZZ~>
+JcC<$JcGZJq#H!GJcC<$a8bc1s8Dups7u]hs7H?^s6p!Ss69RFs5<q.s3^kis&B#qqk^FprrA2]
+rrDEmSM?K2r;_EKJcCH(J,~>
+JcC<$JcGZJq#H!GJcC<$a8ab?rs&:JXoJD$OoPHXs0Vg;s1nZOs2G#Xs2k;[s2P)Xs5<q9s5j:D
+s6BXOs7$'Zs7H?bs7lWjs89A*QiI!aJcC<$L&ZZ~>
+JcC<$K`CiJJcC<$JcE^heUIN>qgSSFrI1mKrrAVirrD3gP;/F(r;_EKJcCT,J,~>
+JcC<$K`CiJJcC<$JcE^hnc&Rds7u]hs7QE`s7$'Us69RFs5F"4s4%(ns2b4Zs/#ams/#bqrM?Xr
+rrAVirrD3gP;/F(r;_EKJcCT,J,~>
+JcC<$K`CiJJcC<$JcE^heUIN>qgSSFrI1mKrrAVis.fV!s0r$@s1nZNs2=rRs2+`Ns2+fTs2k<)
+s6TdSs7--\s7QEds8)cnV>ch]r;_EKJcCT,J,~>
+JcC<$K`CiJJcC<$JcE^heUIN>qgSSFrI1mKrrAVirrD3gP;/F(r;_EKJcCT,J,~>
+JcC<$K`CiJJcC<$JcE^hnc&Rds7u]hs7QE`s7$'Us69RFs5F"4s4%(ns2b4Zs/#ams/#bqrM?Xr
+rrAVirrD3gP;/F(r;_EKJcCT,J,~>
+JcC<$K`CiJJcC<$JcE^heUIN>qgSSFrI1mKrrAVis.fV!s0r$@s1nZNs2=rRs2+`Ns2+fTs2k<)
+s6TdSs7--\s7QEds8)cnV>ch]r;_EKJcCT,J,~>
+JcC<$N;r\RJcC<$JcERdeUIN>q0r;BqgPaKrrB%us"XNRisCJqRK*-aJcC<$O8j_~>
+JcC<$N;r\RJcC<$JcERdoD\dgs82ils7ZKbs7--Ws6BXHs5O(9s4dS(s2k;\s)S.<qka8kqk^Lr
+rrB%us"XNRisCJqRK*-aJcC<$O8j_~>
+JcC<$N;r\RJcC<$JcERdeUIN>q0r;BqgPaKrrB%us)7q5s0;U4s186Fs1nZNs24lHs1A<Gs24lV
+s2k;cs3^l9s7--]s7ZKgs8)coQ2[3OqZ)3IJcCf2J,~>
+JcC<$N;r\RJcC<$JcERdeUIN>q0r;BqgPaKrrB%us"XNRisCJqRK*-aJcC<$O8j_~>
+JcC<$N;r\RJcC<$JcERdoD\dgs82ils7ZKbs7--Ws6BXHs5O(9s4dS(s2k;\s)S.<qka8kqk^Lr
+rrB%us"XNRisCJqRK*-aJcC<$O8j_~>
+JcC<$N;r\RJcC<$JcERdeUIN>q0r;BqgPaKrrB%us)7q5s0;U4s186Fs1nZNs24lHs1A<Gs24lV
+s2k;cs3^l9s7--]s7ZKgs8)coQ2[3OqZ)3IJcCf2J,~>
+JcC<$P5kCZJcC<$JcEF`a+"'gq0oOIrrBD*s"W77JMI0ZQiI!aJcC<$PQ-.~>
+JcC<$P5kCZJcC<$JcEF`oD\dgs8)cis7QE_s7$'Ts60LDs5F"6s4[Lus2b5Ys1JB4s/c6ss/5gl
+s8VnkYQ+V&ZiC%[gBiEcs"Tl?r;_EKJcCr6J,~>
+JcC<$P5kCZJcC<$JcEF`a+"'gq0oOIrrBD*s)7q6s/l=-s1&*ArP/<Is1/0Cs2"`Rs2Y/_s3CYm
+s4./$s7QEes8)coL]3Y?r;_EKJcCr6J,~>
+JcC<$P5kCZJcC<$JcEF`a+"'gq0oOIrrBD*s"W77JMI0ZQiI!aJcC<$PQ-.~>
+JcC<$P5kCZJcC<$JcEF`oD\dgs8)cis7QE_s7$'Ts60LDs5F"6s4[Lus2b5Ys1JB4s/c6ss/5gl
+s8VnkYQ+V&ZiC%[gBiEcs"Tl?r;_EKJcCr6J,~>
+JcC<$P5kCZJcC<$JcEF`a+"'gq0oOIrrBD*s)7q6s/l=-s1&*ArP/<Is1/0Cs2"`Rs2Y/_s3CYm
+s4./$s7QEes8)coL]3Y?r;_EKJcCr6J,~>
+JcC<$RfE0`JcC<$JcE@^`I at jepO9=GrrBb4r at un1JMHmRQiI!aJcC<$QiDR~>
+JcC<$RfE0`JcC<$JcE@^oD\dfs8)cis7H?]s6fpPs6'FBs53k1s4..qs2Y/Vs1A<6s/l=!s/#ao
+s/,gms8VhiYQ+V&^&S$cf*R!_pG&$7r;_EKJcD):J,~>
+JcC<$RfE0`JcC<$JcE@^`I at jepO9=GrrBb4rGV_4s/l=-s0r$?rP&<Hs1SHCs1SHJs24lWs3(Gf
+s3gqts4@;(s5!_PJc>KEQiI!aJcC<$QiDR~>
+JcC<$RfE0`JcC<$JcE@^`I at jepO9=GrrBb4r at un1JMHmRQiI!aJcC<$QiDR~>
+JcC<$RfE0`JcC<$JcE@^oD\dfs8)cis7H?]s6fpPs6'FBs53k1s4..qs2Y/Vs1A<6s/l=!s/#ao
+s/,gms8VhiYQ+V&^&S$cf*R!_pG&$7r;_EKJcD):J,~>
+JcC<$RfE0`JcC<$JcE@^`I at jepO9=GrrBb4rGV_4s/l=-s0r$?rP&<Hs1SHCs1SHJs24lWs3(Gf
+s3gqts4@;(s5!_PJc>KEQiI!aJcC<$QiDR~>
+JcC<$UAt#hJcC<$JcE4Z_g_Xco7!tErrC%<s"Vt/JMHOHScA_=rVufrJcC<$S,\!~>
+JcC<$UAt#hJcC<$JcE4ZoD\dfs7u]gs7?9[s6]jNs5j:>s5!_-s4%(ls2P)Ss1A<7s/Q+%s/Q*q
+s/>sps/#bqo;/_lrrC%<s"Vt/JMHOHScA`hrVufrJcC<$S,\!~>
+JcC<$UAt#hJcC<$JcE4Z_g_Xco7!tErrC%<s)7q at s.o[qs0;U3s1/*ArP&<As1A<Fs2"`Ss2k;c
+s3^krs475's4dS1s8 at NJn,AmXs*jqHr;_EKJcD5>J,~>
+JcC<$UAt#hJcC<$JcE4Z_g_Xco7!tErrC%<s"Vt/JMHOHScA_=rVufrJcC<$S,\!~>
+JcC<$UAt#hJcC<$JcE4ZoD\dfs7u]gs7?9[s6]jNs5j:>s5!_-s4%(ls2P)Ss1A<7s/Q+%s/Q*q
+s/>sps/#bqo;/_lrrC%<s"Vt/JMHOHScA`hrVufrJcC<$S,\!~>
+JcC<$UAt#hJcC<$JcE4Z_g_Xco7!tErrC%<s)7q at s.o[qs0;U3s1/*ArP&<As1A<Fs2"`Ss2k;c
+s3^krs475's4dS1s8 at NJn,AmXs*jqHr;_EKJcD5>J,~>
+JcC<$W;l_pJcC<$JcE(V_1)@_nU at hErrC=Dr at uV)JMH=BV>p@?qu?TpJcC<$TDsE~>
+JcC<$W;l_pJcC<$JcE(Vq>U9is82iks7QE_s6p!Ss60LCs53k2s4@;#s3:Sas1eTFs0D[-s/c7&
+s/Z0sql'JnnYNSlrrC=Dr at uV)JMH=BV>pAjqu?TpJcC<$TDsE~>
+JcC<$W;l_pJcC<$JcE(V_1)@_nU at hErrC=DrGV_0s/>t#s0Ma7s1A<ErP&<Fs1/0Bs1eTNs2P)\
+s3:Sks4%)#s4RG-s53e6Jc=j3V>p@?qu?TpJcC<$TDsE~>
+JcC<$W;l_pJcC<$JcE(V_1)@_nU at hErrC=Dr at uV)JMH=BV>p@?qu?TpJcC<$TDsE~>
+JcC<$W;l_pJcC<$JcE(Vq>U9is82iks7QE_s6p!Ss60LCs53k2s4@;#s3:Sas1eTFs0D[-s/c7&
+s/Z0sql'JnnYNSlrrC=Dr at uV)JMH=BV>pAjqu?TpJcC<$TDsE~>
+JcC<$W;l_pJcC<$JcE(V_1)@_nU at hErrC=DrGV_0s/>t#s0Ma7s1A<ErP&<Fs1/0Bs1eTNs2P)\
+s3:Sks4%)#s4RG-s53e6Jc=j3V>p@?qu?TpJcC<$TDsE~>
+JcC<$YlFM!JcC<$JcE"T]mg"]ms_VCrrCULr at uJ%JMH+<X8hjAp](0lJcC<$U]5i~>
+JcC<$YlFM!JcC<$JcE"Ts8Muqq>C9hs7cQcs7--Ws6BXHs5O(8s4[M)s3gqls2G#Ps1/08s0)I,
+s/l7#s/,ans/H$qs8VPaZiC%*ec5S&b6`_SiA%D5p&=^cr;_EKJcDMFJ,~>
+JcC<$YlFM!JcC<$JcE"T]mg"]ms_VCrrCULrGV_/s.fUns02O1s1&*As1\HHs1SHCs1JBHs2+fU
+s2tAds3^krs4@;(s5!_4qr*,*iVonXomZZ8r;_EKJcDMFJ,~>
+JcC<$YlFM!JcC<$JcE"T]mg"]ms_VCrrCULr at uJ%JMH+<X8hjAp](0lJcC<$U]5i~>
+JcC<$YlFM!JcC<$JcE"Ts8Muqq>C9hs7cQcs7--Ws6BXHs5O(8s4[M)s3gqls2G#Ps1/08s0)I,
+s/l7#s/,ans/H$qs8VPaZiC%*ec5S&b6`_SiA%D5p&=^cr;_EKJcDMFJ,~>
+JcC<$YlFM!JcC<$JcE"T]mg"]ms_VCrrCULrGV_/s.fUns02O1s1&*As1\HHs1SHCs1JBHs2+fU
+s2tAds3^krs4@;(s5!_4qr*,*iVonXomZZ8r;_EKJcDMFJ,~>
+JcC<$\Gu@)JcC<$JcDeN]mg"]l[H8ArrCmTrsAWYaU*MQfeKi5nUC*0qZ)3IJcD_LJ,~>
+JcC<$\Gu@)JcC<$JcDeNqu6Wos8;oos7u]gs7?9[s6TdMs5j:>s5!_/s4..rs31M`s1eTEs0D[.
+s02O)s/l=)s/uC!s/>ssrMontl_V#hrrCmTrsAWYaU*MQfeKi5nc&.[qZ)3IJcD_LJ,~>
+JcC<$\Gu@)JcC<$JcDeN]mg"]l[H8ArrCmTs,m7us.B=es/H%%s0Ma7s1A<Es1\NKs2"`Gs1SHJ
+s24lVs2k;cs3Ueps4./&s4mY2rS[Y5s8 at NJg]"PZnUC*0qZ)3IJcD_LJ,~>
+JcC<$\Gu@)JcC<$JcDeN]mg"]l[H8ArrCmTrsAWYaU*MQfeKi5nUC*0qZ)3IJcD_LJ,~>
+JcC<$\Gu@)JcC<$JcDeNqu6Wos8;oos7u]gs7?9[s6TdMs5j:>s5!_/s4..rs31M`s1eTEs0D[.
+s02O)s/l=)s/uC!s/>ssrMontl_V#hrrCmTrsAWYaU*MQfeKi5nc&.[qZ)3IJcD_LJ,~>
+JcC<$\Gu@)JcC<$JcDeN]mg"]l[H8ArrCmTs,m7us.B=es/H%%s0Ma7s1A<Es1\NKs2"`Gs1SHJ
+s24lVs2k;cs3Ueps4./&s4mY2rS[Y5s8 at NJg]"PZnUC*0qZ)3IJcD_LJ,~>
+JcC<$^An'1JcC<$JcDYJ]70_Yl$g,ArrD*ZrsAWY`sI;Od4r95m=+I&r;_EKJcDkPJ,~>
+JcC<$^An'1JcC<$JcDYJp&>!hs7ZK`s6p!Rs60LDs5<q5s4RG%s3Uehs2Y/Qs1/0;s0;U,s0)I*
+s/l=*s/uC!s/>strN,ttq5++go;/qrrrD*ZrsAWY`sI;Od4r95mJcMQr;_EKJcDkPJ,~>
+JcC<$^An'1JcC<$JcDYJ]70_Yl$g,ArrD*Zs-<P$s.KCfs/H%#s0;U3s180Bs1eTMs1eTEs1SHJ
+s24lVs2tAds3^krs4@;)s5!_4rS[Y5Jc='r]Dq8ImJm+bJcC<$XoEn~>
+JcC<$^An'1JcC<$JcDYJ]70_Yl$g,ArrD*ZrsAWY`sI;Od4r95m=+I&r;_EKJcDkPJ,~>
+JcC<$^An'1JcC<$JcDYJp&>!hs7ZK`s6p!Rs60LDs5<q5s4RG%s3Uehs2Y/Qs1/0;s0;U,s0)I*
+s/l=*s/uC!s/>strN,ttq5++go;/qrrrD*ZrsAWY`sI;Od4r95mJcMQr;_EKJcDkPJ,~>
+JcC<$^An'1JcC<$JcDYJ]70_Yl$g,ArrD*Zs-<P$s.KCfs/H%#s0;U3s180Bs1eTMs1eTEs1SHJ
+s24lVs2tAds3^krs4@;)s5!_4rS[Y5Jc='r]Dq8ImJm+bJcC<$XoEn~>
+JcC<$`rGi7JcC<$JcDSH\UOMWjaOc?rrD<`rsA][_$PZIbq[-9kC2[qr;_EKJcE"TJ,~>
+JcC<$`rGi7JcC<$JcDSHp&>!is8)cfs6fpQs60LDs5<q4s4IA#s3L_gs2Y/Qs1/0<rNQ7(s/l=(
+s0)I-s0)I$s/Z+"rVunpq5++gnYNerrrD<`rsA][_$PZIbq[-9kPj`Gr;_EKJcE"TJ,~>
+JcC<$`rGi7JcC<$JcDSH\UOMWjaOc?rrD<`s-3P%s/l<os.fUms/c7)s0_m;s1JBHs2"`Rs2"`J
+rOr6Hs2=rYs3(Ggs3^kss4IA+s5!_3rSRY5rS`>,c2PW\kC2[qr;_EKJcE"TJ,~>
+JcC<$`rGi7JcC<$JcDSH\UOMWjaOc?rrD<`rsA][_$PZIbq[-9kC2[qr;_EKJcE"TJ,~>
+JcC<$`rGi7JcC<$JcDSHp&>!is8)cfs6fpQs60LDs5<q4s4IA#s3L_gs2Y/Qs1/0<rNQ7(s/l=(
+s0)I-s0)I$s/Z+"rVunpq5++gnYNerrrD<`rsA][_$PZIbq[-9kPj`Gr;_EKJcE"TJ,~>
+JcC<$`rGi7JcC<$JcDSH\UOMWjaOc?rrD<`s-3P%s/l<os.fUms/c7)s0_m;s1JBHs2"`Rs2"`J
+rOr6Hs2=rYs3(Ggs3^kss4IA+s5!_3rSRY5rS`>,c2PW\kC2[qr;_EKJcE"TJ,~>
+JcC<$cN!\?JcC<$JcDGD[sn;UiI8E=rrDThr<`EW_$PZI`A,R9iI9tir;_EKJcE.XJ,~>
+JcC<$cN!\?JcC<$JcDGDp&>!is8)cis7H?Xs6'FBs53k2s4@;"s3L_gs2Y/Vs1/0<s0;U-s/u=)
+rN?1)s0;U0s/>strN,tts/,Ugs/,1[]Dqm2nc/Oor at u+pJMG+ubQ$Q#kPtJ\JcC<$[Jta~>
+JcC<$cN!\?JcC<$JcDGD[sn;UiI8E=rrDThs,[2DrGV_4s.]Ojs/Q+%s0Ma7s186Ds1nZOs2G#V
+s1SHHs1eTOs2P)\s3:Sjs3gqts4RG,s5!_3s53k7qr*,*`W"'\iI9tir;_EKJcE.XJ,~>
+JcC<$cN!\?JcC<$JcDGD[sn;UiI8E=rrDThr<`EW_$PZI`A,R9iI9tir;_EKJcE.XJ,~>
+JcC<$cN!\?JcC<$JcDGDp&>!is8)cis7H?Xs6'FBs53k2s4@;"s3L_gs2Y/Vs1/0<s0;U-s/u=)
+rN?1)s0;U0s/>strN,tts/,Ugs/,1[]Dqm2nc/Oor at u+pJMG+ubQ$Q#kPtJ\JcC<$[Jta~>
+JcC<$cN!\?JcC<$JcDGD[sn;UiI8E=rrDThs,[2DrGV_4s.]Ojs/Q+%s0Ma7s186Ds1nZOs2G#V
+s1SHHs1eTOs2P)\s3:Sjs3gqts4RG,s5!_3s53k7qr*,*`W"'\iI9tir;_EKJcE.XJ,~>
+JcC<$eGoCGJcC<$JcD5>[sn;Uh1!';rrDfnr<`EW]a96E_(jF=gOA2_r;_EKJcE:\J,~>
+JcC<$eGoCGJcC<$JcD5>rVl]ms8;ons7ZKas6p!Ss5a4;s4dS*s3q"os3(G^s2+fKs0r$7s0)I,
+s/uC*s0;O+s02I-rMomus/c2!s/4bN^&S*4p](0ur at ttlJMFtqe,S2%j8]&XJcC<$\c70~>
+JcC<$eGoCGJcC<$JcD5>[sn;Uh1!';rrDfns,R,BrGV_8s.fUis/>t"s0;U3s1/0Bs1\NLrPefS
+rPANNs2G#Zs2tAds3^kqs475's4dS/s5!_3s53Y2Jc<Lbe,S0Oj8]&XJcC<$\c70~>
+JcC<$eGoCGJcC<$JcD5>[sn;Uh1!';rrDfnr<`EW]a96E_(jF=gOA2_r;_EKJcE:\J,~>
+JcC<$eGoCGJcC<$JcD5>rVl]ms8;ons7ZKas6p!Ss5a4;s4dS*s3q"os3(G^s2+fKs0r$7s0)I,
+s/uC*s0;O+s02I-rMomus/c2!s/4bN^&S*4p](0ur at ttlJMFtqe,S2%j8]&XJcC<$\c70~>
+JcC<$eGoCGJcC<$JcD5>[sn;Uh1!';rrDfns,R,BrGV_8s.fUis/>t"s0;U3s1/0Bs1\NLrPefS
+rPANNs2G#Zs2tAds3^kqs475's4dS/s5!_3s53Y2Jc<Lbe,S0Oj8]&XJcC<$\c70~>
+JcC<$h#I0MJcC<$JcD/<[=8)Sf7(R9rrE#tr<`EW\I!gA]eS4?f7)WWr;_EKJcEF`J,~>
+JcC<$h#I0MJcC<$JcD/<rVc]mrVQWks7ZKas6p!Ss60LCs4dS*s3q"os3(G^s2+fMs1/09s0;I)
+rNQ=(s0)I,s0DU0s/Q+"s/c2!s/Z0trMBOks/#[krMBOkrMBOko;0;'rrE#tr<`EW\I!gA]eS4?
+fDa\-r;_EKJcEF`J,~>
+JcC<$h#I0MJcC<$JcD/<[=8)Sf7(R9rrE#ts,R,ArGV_9s/5mls/#aps/l=*s0Vg:s1A<Fs2"NM
+rPSZRs2Y/]s3:Sjs3gqts4RG,s4mY1s5*e6pYg]&^&H^bf7)WWr;_EKJcEF`J,~>
+JcC<$h#I0MJcC<$JcD/<[=8)Sf7(R9rrE#tr<`EW\I!gA]eS4?f7)WWr;_EKJcEF`J,~>
+JcC<$h#I0MJcC<$JcD/<rVc]mrVQWks7ZKas6p!Ss60LCs4dS*s3q"os3(G^s2+fMs1/09s0;I)
+rNQ=(s0)I,s0DU0s/Q+"s/c2!s/Z0trMBOks/#[krMBOkrMBOko;0;'rrE#tr<`EW\I!gA]eS4?
+fDa\-r;_EKJcEF`J,~>
+JcC<$h#I0MJcC<$JcD/<[=8)Sf7(R9rrE#ts,R,ArGV_9s/5mls/#aps/l=*s0Vg:s1A<Fs2"NM
+rPSZRs2Y/]s3:Sjs3gqts4RG,s4mY1s5*e6pYg]&^&H^bf7)WWr;_EKJcEF`J,~>
+JcC<$jT##UJcC<$JcD#8Z[VlQdsf47rrE'*q_>VfJMFPej8[MUg].-NJcC<$_uG5~>
+JcC<$jT##UJcC<$JcD#8s8N&srVZ]ms8)cks7ZK`s6p!Rs60LDs5<q1s3q"os3(G_s24lOs186;
+s0;U-s02I*qm$1)s0;O.s0Vg/s/Z1$rVuo#s/Q*rs/#[lq541js/G=\_uK`:rsAQW\I!gA[5$_A
+dJho#qZ)3IJcEXfJ,~>
+JcC<$jT##UJcC<$JcD#8Z[VlQdsf47s+LE6qeuM7s/5gls/>t!s02O2s1&*@s1\NLrP\ZRq8WHU
+s3(Gfs3^kss4IA)s4dS0s5*e6pYg]&[Jo4dd=0jMqZ)3IJcEXfJ,~>
+JcC<$jT##UJcC<$JcD#8Z[VlQdsf47rrE'*q_>VfJMFPej8[MUg].-NJcC<$_uG5~>
+JcC<$jT##UJcC<$JcD#8s8N&srVZ]ms8)cks7ZK`s6p!Rs60LDs5<q1s3q"os3(G_s24lOs186;
+s0;U-s02I*qm$1)s0;O.s0Vg/s/Z1$rVuo#s/Q*rs/#[lq541js/G=\_uK`:rsAQW\I!gA[5$_A
+dJho#qZ)3IJcEXfJ,~>
+JcC<$jT##UJcC<$JcD#8Z[VlQdsf47s+LE6qeuM7s/5gls/>t!s02O2s1&*@s1\NLrP\ZRq8WHU
+s3(Gfs3^kss4IA)s4dS0s5*e6pYg]&[Jo4dd=0jMqZ)3IJcEXfJ,~>
+JcC<$m/Qk]JcC<$JcCf2Z[VlQc[O(;q[*9&s"UnfJMFDal2SqUfDkdLJcC<$a8^Y~>
+JcC<$m/Qk]JcC<$JcCf2rVccos82ims7u]gs7?9Zs6TdLs5a4<s4mY*s3L_gs2Y/Ws1eTGs0_m4
+s02I*s/uC*s0;O.s0)I-s0D[2rNuO(rVuo&s/l=/s0Vg)s/Q*sqkjCms/Z1%s0)I"mA8#+q[*9&
+s"UnfJMFDal2Ss+fDkdLJcC<$a8^Y~>
+JcC<$m/Qk]JcC<$JcCf2Z[VlQc[O(;s,-c9s#pC#s/Q$ss.]Ois/>t"s0;U2s0r$>s1\NLs2=rW
+s2k;as3:Sas2G#Xs2b5_s3:Sks4%)#s4RG+s5!_3s5<q9s5Nk5Jc;qRl2SqUfDkdLJcC<$a8^Y~>
+JcC<$m/Qk]JcC<$JcCf2Z[VlQc[O(;q[*9&s"UnfJMFDal2SqUfDkdLJcC<$a8^Y~>
+JcC<$m/Qk]JcC<$JcCf2rVccos82ims7u]gs7?9Zs6TdLs5a4<s4mY*s3L_gs2Y/Ws1eTGs0_m4
+s02I*s/uC*s0;O.s0)I-s0D[2rNuO(rVuo&s/l=/s0Vg)s/Q*sqkjCms/Z1%s0)I"mA8#+q[*9&
+s"UnfJMFDal2Ss+fDkdLJcC<$a8^Y~>
+JcC<$m/Qk]JcC<$JcCf2Z[VlQc[O(;s,-c9s#pC#s/Q$ss.]Ois/>t"s0;U2s0r$>s1\NLs2=rW
+s2k;as3:Sas2G#Xs2b5_s3:Sks4%)#s4RG+s5!_3s5<q9s5Nk5Jc;qRl2SqUfDkdLJcC<$a8^Y~>
+JcC<$o)JReJcC<$JcCZ.Z$uZOaaVe?q$I!SrrBG5JMF8]nc-RWe,T at HJcC<$bQ!(~>
+JcC<$o)JReJcC<$JcCZ.s8N&rs82ims7u]is7cQbs7$'Ts60LEs5<q4s4IA#s3:Sbs2=rQs1JB@
+s0D[/s/u7&s02O.s0Ma2s0)C+s0Vg6s0hs6s/Z+us0Vg7rO;g6s/c7#qksIos/l=%s/H$rs/,%W
+ec5FOrA"<P[0_C=XYKAG`W"?dr;_EKJcEpnJ,~>
+JcC<$o)JReJcC<$JcCZ.Z$uZOaaVe?s+C?3s,[2?rGV_/s/Q+"s.fUks/H%#s0;U1s0hs=s1SHK
+s24lVs2k;as3:Mds2b5^s31Mgs3^krs475&s4[M.s5*e6oAY?#Xo at kj`I?;9r;_EKJcEpnJ,~>
+JcC<$o)JReJcC<$JcCZ.Z$uZOaaVe?q$I!SrrBG5JMF8]nc-RWe,T at HJcC<$bQ!(~>
+JcC<$o)JReJcC<$JcCZ.s8N&rs82ims7u]is7cQbs7$'Ts60LEs5<q4s4IA#s3:Sbs2=rQs1JB@
+s0D[/s/u7&s02O.s0Ma2s0)C+s0Vg6s0hs6s/Z+us0Vg7rO;g6s/c7#qksIos/l=%s/H$rs/,%W
+ec5FOrA"<P[0_C=XYKAG`W"?dr;_EKJcEpnJ,~>
+JcC<$o)JReJcC<$JcCZ.Z$uZOaaVe?s+C?3s,[2?rGV_/s/Q+"s.fUks/H%#s0;U1s0hs=s1SHK
+s24lVs2k;as3:Mds2b5^s31Mgs3^krs475&s4[M.s5*e6oAY?#Xo at kj`I?;9r;_EKJcEpnJ,~>
+JcC<$qZ$?kJcC<$JcCN*Z$uTM`I?YCq[*3Uq[*9&\I"HSq_FWqq>\-WdJs.FJcC<$ci8L~>
+JcC<$qZ$?kJcC<$JcCN*s8Dups8)cks7lWfs7H?\s6TdMs5j:>s5!_.s4%(ns2k;[s2"`Ks1&*9
+s0;U-s/u=(s/uC+s0;O/rNZC.s0Va4s0r$2qu?](s0hs:s0Vg2s/uC%s/5mqs/c7's/l=%s/H$s
+s/,%Ws/,goh>d?YrA"0UrrBS9P;2qiRkaa=^&HFZr;_EKJcF'rJ,~>
+JcC<$qZ$?kJcC<$JcCN*Z$uTM`I?YCs,?u>s,R%rrMfgss.K=gs/H%#s02O0s0hs<s1SHKs24lU
+s2k;arQY;as2tAds3L_ms3q"us4@;)s4dS1s5<M.Jc;SHq>\-WdJs.FJcC<$ci8L~>
+JcC<$qZ$?kJcC<$JcCN*Z$uTM`I?YCq[*3Uq[*9&\I"HSq_FWqq>\-WdJs.FJcC<$ci8L~>
+JcC<$qZ$?kJcC<$JcCN*s8Dups8)cks7lWfs7H?\s6TdMs5j:>s5!_.s4%(ns2k;[s2"`Ks1&*9
+s0;U-s/u=(s/uC+s0;O/rNZC.s0Va4s0r$2qu?](s0hs:s0Vg2s/uC%s/5mqs/c7's/l=%s/H$s
+s/,%Ws/,goh>d?YrA"0UrrBS9P;2qiRkaa=^&HFZr;_EKJcF'rJ,~>
+JcC<$qZ$?kJcC<$JcCN*Z$uTM`I?YCs,?u>s,R%rrMfgss.K=gs/H%#s02O0s0hs<s1SHKs24lU
+s2k;arQY;as2tAds3L_ms3q"us4@;)s4dS1s5<M.Jc;SHq>\-WdJs.FJcC<$ci8L~>
+JcC?%q#H!GJcC<$JcE!(qu=E[kPt>arA"$QrrBY;R5*eYV_S2g\UMg'r;_EKJcF4!J,~>
+JcC?%q#H!GJcC<$JcGcJs82ils7lWfs7H?\s6]jNs5j:?s5!_.s4..ss3(G_s2+fMs1/0<s0D[.
+ql]n$s02=)s0;U0s0Vg6s0hm8qu?](s0hs:s0Vg2s0Ma1rN#t(s0;U-s/l=%s/Q*ts/5momA9cY
+s/5mqs/P8^q$I!SpBgj"]*Xl[jYE_gs-L:qc2[_BJcC<$e,Op~>
+JcC?%q#H!GJcC<$JcE!(qu=E[kPtR8s,?u?s,Htqs/>mqs/Z1"s.B=js/l=)s0D[4s1/0Bs1eTM
+s2G#Zs2tAds3CYks3gqss3q"ns3Ueps4./$s4RG-s5*e6pYu)1Jc;GD[slU%r;_EKJcF4!J,~>
+JcC?%q#H!GJcC<$JcE!(qu=E[kPt>arA"$QrrBY;R5*eYV_S2g\UMg'r;_EKJcF4!J,~>
+JcC?%q#H!GJcC<$JcGcJs82ils7lWfs7H?\s6]jNs5j:?s5!_.s4..ss3(G_s2+fMs1/0<s0D[.
+ql]n$s02=)s0;U0s0Vg6s0hm8qu?](s0hs:s0Vg2s0Ma1rN#t(s0;U-s/l=%s/Q*ts/5momA9cY
+s/5mqs/P8^q$I!SpBgj"]*Xl[jYE_gs-L:qc2[_BJcC<$e,Op~>
+JcC?%q#H!GJcC<$JcE!(qu=E[kPtR8s,?u?s,Htqs/>mqs/Z1"s.B=js/l=)s0D[4s1/0Bs1eTM
+s2G#Zs2tAds3CYks3gqss3q"ns3Ueps4./$s4RG-s5*e6pYu)1Jc;GD[slU%r;_EKJcF4!J,~>
+JcCQ+qZ)3IJcC<$JcG]KYC?BK\UO#Iq$I!So*PEs]a:Mi`A57aobb;iaoD;>JcC<$fDg@~>
+JcCQ+qZ)3IJcC<$JcG]Ks8;oos7u]hs7QE`s7$'Us69RGs5O(8s4[M(s3gqms2tA\s1nZHs0hs7
+s02C'rNH1(s0;U0s0Vg4rNcC/s0r$<s1/%,s0Vg6s0hs6s0hs<s0r$9s0;U3s0Ma1s0)I)s/c7#
+ql0Unn"p&]s/5mqs/H$us/c7&n,N1irA!mMrrB_=V(oqE_(kVL]DfqPr;_EKJcF@%J,~>
+JcCQ+qZ)3IJcC<$JcG]KYC?BK\UO#Is+p]8s,m>ArGV_5s/>sss/Q+"s/c7"s.]Oss0;U3s1&*@
+s1\NLs2=rXs2k;bs3CYks3q"us475&s3^kps4%)"s4RG,s5!_5s5Eq9rT!_7Jc;YJYC=Unr;_EK
+JcF@%J,~>
+JcCQ+qZ)3IJcC<$JcG]KYC?BK\UO#Iq$I!So*PEs]a:Mi`A57aobb;iaoD;>JcC<$fDg@~>
+JcCQ+qZ)3IJcC<$JcG]Ks8;oos7u]hs7QE`s7$'Us69RGs5O(8s4[M(s3gqms2tA\s1nZHs0hs7
+s02C'rNH1(s0;U0s0Vg4rNcC/s0r$<s1/%,s0Vg6s0hs6s0hs<s0r$9s0;U3s0Ma1s0)I)s/c7#
+ql0Unn"p&]s/5mqs/H$us/c7&n,N1irA!mMrrB_=V(oqE_(kVL]DfqPr;_EKJcF@%J,~>
+JcCQ+qZ)3IJcC<$JcG]KYC?BK\UO#Is+p]8s,m>ArGV_5s/>sss/Q+"s/c7"s.]Oss0;U3s1&*@
+s1\NLs2=rXs2k;bs3CYks3q"us475&s3^kps4%)"s4RG,s5!_5s5Eq9rT!_7Jc;YJYC=Unr;_EK
+JcF@%J,~>
+JcCi3q#H!GJcC<$JcGQGYC?BKZ[V`MrrDj$rA!aIrrBe?]eT18s"WstnMBnpm5+8fcS=f(]7.g#
+qZ)3IJcFR+J,~>
+JcCi3q#H!GJcC<$JcGQGs8)cjs7ZKbs763[s6]jNs5s at As53k2s4@;"s3L_gs2P)Qs1SHAs0_m3
+rN?+$s0)=(s0;U0rO)[4s0Ma4s0_m9s1&*>qu?]&s0_m8s0r$=s1A<Bs1/0>s0r$9s0Ma1s0)I*
+s/c7$s/c7's/Z1!s/5C`s/,gos/>sts/Z1$s/uC*s0;D"rrDj$rA!aIrrBe?]eT18s"WstnMBnp
+m5+8fcS=gR]DfkNqZ)3IJcFR+J,~>
+JcCi3q#H!GJcC<$JcGQGYC?BKZ[V`Ms*Od)s,d8Ds,d1ts/#ans/>sss/c7&s02O(s/l<us0Ma6
+s1/0Cs1nZPs2P)\s31Mgs3Ueos4./#s4IA)s4[M%s4./$s4RG-s53k8s5WY1Jc;eNVgc\dqZ)3I
+JcFR+J,~>
+JcCi3q#H!GJcC<$JcGQGYC?BKZ[V`MrrDj$rA!aIrrBe?]eT18s"WstnMBnpm5+8fcS=f(]7.g#
+qZ)3IJcFR+J,~>
+JcCi3q#H!GJcC<$JcGQGs8)cjs7ZKbs763[s6]jNs5s at As53k2s4@;"s3L_gs2P)Qs1SHAs0_m3
+rN?+$s0)=(s0;U0rO)[4s0Ma4s0_m9s1&*>qu?]&s0_m8s0r$=s1A<Bs1/0>s0r$9s0Ma1s0)I*
+s/c7$s/c7's/Z1!s/5C`s/,gos/>sts/Z1$s/uC*s0;D"rrDj$rA!aIrrBe?]eT18s"WstnMBnp
+m5+8fcS=gR]DfkNqZ)3IJcFR+J,~>
+JcCi3q#H!GJcC<$JcGQGYC?BKZ[V`Ms*Od)s,d8Ds,d1ts/#ans/>sss/c7&s02O(s/l<us0Ma6
+s1/0Cs1nZPs2P)\s31Mgs3Ueos4./#s4IA)s4[M%s4./$s4RG-s53k8s5WY1Jc;eNVgc\dqZ)3I
+JcFR+J,~>
+Y5e.poDeUdNW8eSJcC<$JcC<$p&D.Cqu<dIrri-(rA!UErrBkA_(jn(lSJPth_XXTiA'@0]mdft
+r;_EKJcF^/J,~>
+Y5e.poDeUdNW8eSJcC<$JcC<$p&G'fs7lWfs7H?^s7--Ws6BXIs5X.;s4mY,s4%(qs3(G_s24lN
+s1&*;s0D[/s/u=&rN?%%s0;U1rNuU4s0Vg4s0_m9rODb)s0Ma4s0hs:s1/*>qmla9s0_m5s0;U.
+s/uC(s/uC,s02I)s02O)s/5Ods/,gps/H$us/c7&s/uC+s0;U1s0Vefq$I!SlO!Rk_$Rq4iA0^T
+s"rUhm5!WTj-RIY_>jH6JcC<$iW"E~>
+Y5e.poDeUdNW8eSJcC<$JcC<$p&D.Cqu<dIs$6UBs,[2Cs,[+ss.o[ks/5mrs/Z1%rNZC+s/uC,
+s/Z10s1JBHs24lUs2Y/^s31Mgs3^krs4./$rRq5*s5!Y1s5!_5rSmk;n`59#Zi6SG_>jH6JcC<$
+iW"E~>
+Y5e.poDeUdNW8eSJcC<$JcC<$p&D.Cqu<dIrri-(rA!UErrBkA_(jn(lSJPth_XXTiA'@0]mdft
+r;_EKJcF^/J,~>
+Y5e.poDeUdNW8eSJcC<$JcC<$p&G'fs7lWfs7H?^s7--Ws6BXIs5X.;s4mY,s4%(qs3(G_s24lN
+s1&*;s0D[/s/u=&rN?%%s0;U1rNuU4s0Vg4s0_m9rODb)s0Ma4s0hs:s1/*>qmla9s0_m5s0;U.
+s/uC(s/uC,s02I)s02O)s/5Ods/,gps/H$us/c7&s/uC+s0;U1s0Vefq$I!SlO!Rk_$Rq4iA0^T
+s"rUhm5!WTj-RIY_>jH6JcC<$iW"E~>
+Y5e.poDeUdNW8eSJcC<$JcC<$p&D.Cqu<dIs$6UBs,[2Cs,[+ss.o[ks/5mrs/Z1%rNZC+s/uC,
+s/Z10s1JBHs24lUs2Y/^s31Mgs3^krs4./$rRq5*s5!Y1s5!_5rSmk;n`59#Zi6SG_>jH6JcC<$
+iW"E~>
+YlF4np]'mdQ2g^]JcC<$JcC<$n,KM=qu<jKpB:FLk6_.g_[448o.oJbh),'dpGDP!o.oVdfbhJQ
+s*qf`r;_EKJcFj3J,~>
+YlF4np]'mdQ2g^]JcC<$JcC<$n,NF^rV$9as7?9\s6]jNs5j:>s5*e0s474us3:Sbs2=rRs1\NA
+s0Vg1s/u1"s0)=(s0;U1rNuU5rNuU4rO;g:qu?]%s0Va6s1&$=s1/*>s1&*<s0_m5s0D[/s0)I-
+rNuU4s0r$=s0r$6s/l=%q5++gs/5mqs/H%!s/c7's0)I,s0DYbs#U0Bs#pBGrA!IArrBqC__La<
+k;1pNrA41)oeZ1plS7(Z^&GeHr;_EKJcFj3J,~>
+YlF4np]'mdQ2g^]JcC<$JcC<$n,KM=qu<jKs$?ZPs%!)[s%30-s.]Ohs/#aos/Z1&qm$+(s0Ma7
+s0;U<s1nZPs2P)[s3(Gfs3Ueos4./#s4IA*s5!_4qr%G4pZ(r-Jc<4ZQ[\sa^]464JcC<$jo9i~>
+YlF4np]'mdQ2g^]JcC<$JcC<$n,KM=qu<jKpB:FLk6_.g_[448o.oJbh),'dpGDP!o.oVdfbhJQ
+s*qf`r;_EKJcFj3J,~>
+YlF4np]'mdQ2g^]JcC<$JcC<$n,NF^rV$9as7?9\s6]jNs5j:>s5*e0s474us3:Sbs2=rRs1\NA
+s0Vg1s/u1"s0)=(s0;U1rNuU5rNuU4rO;g:qu?]%s0Va6s1&$=s1/*>s1&*<s0_m5s0D[/s0)I-
+rNuU4s0r$=s0r$6s/l=%q5++gs/5mqs/H%!s/c7's0)I,s0DYbs#U0Bs#pBGrA!IArrBqC__La<
+k;1pNrA41)oeZ1plS7(Z^&GeHr;_EKJcFj3J,~>
+YlF4np]'mdQ2g^]JcC<$JcC<$n,KM=qu<jKs$?ZPs%!)[s%30-s.]Ohs/#aos/Z1&qm$+(s0Ma7
+s0;U<s1nZPs2P)[s3(Gfs3Ueos4./#s4IA*s5!_4qr%G4pZ(r-Jc<4ZQ[\sa^]464JcC<$jo9i~>
+ZN'e%q>^<lqu?Tpq>^BnTE"]eJcC<$JcC<$li4)9qu=!Oo`Y41qZQ-irrC"Ea"d0 at q(qIrq)/1/
+h)4^Zq(qIpq(^24eUHh6]Dqg0JcC<$l2Q8~>
+ZN'e%q>^<lqu?Tpq>^BnTE"]eJcC<$JcC<$li7"Ys7QEas7?9]s7--Vs60LCs5<q4s4IA#s3CYd
+s2G#Ts1eTEs0_m4s0)C&s/l=&s/l7's0D[/s0;U0s0Ma6s0r$:rO)[6rO;\(s2"`Cs0qs:s1/0@
+s1/0As1JBCs1&*@s186=s0D[0s0Va7s186BrOr6Fs1eTMs2+fPs0D[.s0DU1s0;O+rN?/Xs#9s;
+s#L*@s#g<Ys&8q_s$?ZOkm@@i`<jR>o.p+tmkjhts"rOhnML%tmkX\nc^2EG]Dqg0JcC<$l2Q8~>
+ZN'e%q>^<lqu?Tpq>^BnTE"]eJcC<$JcC<$li4)9qu=!Os#g<Hs$QfUs%*/]rAXaPs%r_ms/5ms
+s/l=*s0;U0qm6=1s1&*@s0VgBs2=rXs2tAcs3CYls3q#"s4[M.s53k7rSde9s5EY2pZ2A9s6"t4
+^](!Wl[QPHr;_EKJcG!7J,~>
+ZN'e%q>^<lqu?Tpq>^BnTE"]eJcC<$JcC<$li4)9qu=!Oo`Y41qZQ-irrC"Ea"d0 at q(qIrq)/1/
+h)4^Zq(qIpq(^24eUHh6]Dqg0JcC<$l2Q8~>
+ZN'e%q>^<lqu?Tpq>^BnTE"]eJcC<$JcC<$li7"Ys7QEas7?9]s7--Vs60LCs5<q4s4IA#s3CYd
+s2G#Ts1eTEs0_m4s0)C&s/l=&s/l7's0D[/s0;U0s0Ma6s0r$:rO)[6rO;\(s2"`Cs0qs:s1/0@
+s1/0As1JBCs1&*@s186=s0D[0s0Va7s186BrOr6Fs1eTMs2+fPs0D[.s0DU1s0;O+rN?/Xs#9s;
+s#L*@s#g<Ys&8q_s$?ZOkm@@i`<jR>o.p+tmkjhts"rOhnML%tmkX\nc^2EG]Dqg0JcC<$l2Q8~>
+ZN'e%q>^<lqu?Tpq>^BnTE"]eJcC<$JcC<$li4)9qu=!Os#g<Hs$QfUs%*/]rAXaPs%r_ms/5ms
+s/l=*s0;U0qm6=1s1&*@s0VgBs2=rXs2tAcs3CYls3q#"s4[M.s53k7rSde9s5EY2pZ2A9s6"t4
+^](!Wl[QPHr;_EKJcG!7J,~>
+ZN'k'p&Fsjqu?Tpq>^BnVuQPmJcC<$JcC<$jo;H3qu='Qo`Y41nHA:errC(GaYEBBq(qh'nMU&!
+pGMb)s#9[1mkt&#s"isr`>IQ_hg`3:r;_EKJcG-;J,~>
+ZN'k'p&Fsjqu?Tpq>^BnVuQPmJcC<$JcC<$jo>AQs7?9]s7--Ys6fpRs60LBs5*e0s4..rs3(G_
+s24lOs1A<?s0Ma0s/u1!s/l=)s02O/s02O.s0D[3s0hs:q6p72qu?]4s1\NGqml[:s1JBFs1\NL
+rPSZOs1\NEs1\NHrO`*CqnE*Fs1nNJrP8HJs1JBCs0qs7s#U0?s#C$;s#C$>s%iYks$$HIs$6TM
+s$QfSs$crWmg9!o`sKjBo.p+tq)%V!pGVb'q)873pGVItrA=O1lS at jpfpBJQ\c;U.JcC<$mJh\~>
+ZN'k'p&Fsjqu?Tpq>^BnVuQPmJcC<$JcC<$jo;H3qu='Qs#pBIs$QfTs%!)[rAXaOs%iYks&&ep
+s&K)"s&]6,s0Vg8qmQO8s1JBHs1&*Js2Y/_s3CYks3q"us4@;)s4mY3rSde9rT!e9s5X.?rT4(A
+pZI,,`Vu]_hg`3:r;_EKJcG-;J,~>
+ZN'k'p&Fsjqu?Tpq>^BnVuQPmJcC<$JcC<$jo;H3qu='Qo`Y41nHA:errC(GaYEBBq(qh'nMU&!
+pGMb)s#9[1mkt&#s"isr`>IQ_hg`3:r;_EKJcG-;J,~>
+ZN'k'p&Fsjqu?Tpq>^BnVuQPmJcC<$JcC<$jo>AQs7?9]s7--Ys6fpRs60LBs5*e0s4..rs3(G_
+s24lOs1A<?s0Ma0s/u1!s/l=)s02O/s02O.s0D[3s0hs:q6p72qu?]4s1\NGqml[:s1JBFs1\NL
+rPSZOs1\NEs1\NHrO`*CqnE*Fs1nNJrP8HJs1JBCs0qs7s#U0?s#C$;s#C$>s%iYks$$HIs$6TM
+s$QfSs$crWmg9!o`sKjBo.p+tq)%V!pGVb'q)873pGVItrA=O1lS at jpfpBJQ\c;U.JcC<$mJh\~>
+ZN'k'p&Fsjqu?Tpq>^BnVuQPmJcC<$JcC<$jo;H3qu='Qs#pBIs$QfTs%!)[rAXaOs%iYks&&ep
+s&K)"s&]6,s0Vg8qmQO8s1JBHs1&*Js2Y/_s3CYks3q"us4@;)s4mY3rSde9rT!e9s5X.?rT4(A
+pZI,,`Vu]_hg`3:r;_EKJcG-;J,~>
+ZN'k'p&FsjrVufrp&FsjYQ+J"JcC<$JcC<$iW#s-qu=-So`Y./k61McrrC(Gd4t/Hq(qh'q)/11
+rAWt#rAj7)q`"I3q_eC1q(qh%rA4<g_&33$rI=EfeUP",qZ)3IJcG?AJ,~>
+ZN'k'p&FsjrVufrp&FsjYQ+J"JcC<$JcC<$iW&rNs7?9]s7--Ys6fpQs5s@@s5F"5s474ss31Ma
+s2G#Ss1SHBs0Vg2s0)0us/l=(s02C*s0D[3s0_g6s1&$:s0hs:qu?]3s1\NGs1A0>s1J<Es1nZN
+q8<0Js1nZKs1SHHqnN0Fs1nZNs2+`Ns1nTLs1nZLs1J at ts$6TKs$$HGs#^0Ss%iYXs$$HIs$?ZO
+s$QfSs$crWrCR#]s%E(mrrC(Gd4t/Hq(qh'q)/11rAWt#rAj7)q`"I3q_eC1q(qh%rA3>uh3YtW
+[K$+(JcC<$oDa=~>
+ZN'k'p&FsjrVufrp&FsjYQ+J"JcC<$JcC<$iW#s-qu=-Ss#pBHs$QfTs%!)[q`"OMs%iYls&/kr
+s&T/$s&oA*rEK5(s1&*?s1SHJs2=rNs2tAcs3L_ms4%)"s4IA+s5!_4s5<k7s5Wq:qr[G3Jc<pn
+\UOL,o7#5>[K$+(JcC<$oDa=~>
+ZN'k'p&FsjrVufrp&FsjYQ+J"JcC<$JcC<$iW#s-qu=-So`Y./k61McrrC(Gd4t/Hq(qh'q)/11
+rAWt#rAj7)q`"I3q_eC1q(qh%rA4<g_&33$rI=EfeUP",qZ)3IJcG?AJ,~>
+ZN'k'p&FsjrVufrp&FsjYQ+J"JcC<$JcC<$iW&rNs7?9]s7--Ys6fpQs5s@@s5F"5s474ss31Ma
+s2G#Ss1SHBs0Vg2s0)0us/l=(s02C*s0D[3s0_g6s1&$:s0hs:qu?]3s1\NGs1A0>s1J<Es1nZN
+q8<0Js1nZKs1SHHqnN0Fs1nZNs2+`Ns1nTLs1nZLs1J at ts$6TKs$$HGs#^0Ss%iYXs$$HIs$?ZO
+s$QfSs$crWrCR#]s%E(mrrC(Gd4t/Hq(qh'q)/11rAWt#rAj7)q`"I3q_eC1q(qh%rA3>uh3YtW
+[K$+(JcC<$oDa=~>
+ZN'k'p&FsjrVufrp&FsjYQ+J"JcC<$JcC<$iW#s-qu=-Ss#pBHs$QfTs%!)[q`"OMs%iYls&/kr
+s&T/$s&oA*rEK5(s1&*?s1SHJs2=rNs2tAcs3L_ms4%)"s4IA+s5!_4s5<k7s5Wq:qr[G3Jc<pn
+\UOL,o7#5>[K$+(JcC<$oDa=~>
+UAt/lrVufrp&Fsj\,Z7(JcC<$JcC<$h>aO)qu=3Uo`Y./gB at N_rrC.IeM6YNq(qb%q)/+/s#9s;
+q`4=1rB's=ofN%3pGr75s#9s9q_e=/pG;+Q`>HF at Z2ab&JcC<$p]#a~>
+UAt/lrVufrp&Fsj\,Z7(JcC<$JcC<$h>dNHs763[s7$'Vs6]jNs5a4;s4dS*s4%(qs31M`s24lO
+s1A<>s0Ma0s/l=&rN#mus/l=(rNQ=,s02O/s0M[3s1&*?s1/0>rO;\(s1nZKrP/BHs1SHFs1\BF
+s2"`PrPSZPrPSZPs2"`Mq7usDs1nZOrPANLs2"ZNs2"Y(s$m#Ws$ZlSs&T/!s&8q\s#g<Es$$HJ
+s$?ZOs$QfSs$m#]s%35_s%EAcs%WMgs%iYlrsA]*aU-KPo.p+tpGD\'rAO[7s#Bm9ofE%5rAsU5
+q`=I3s#C$;s#0a3rA=7)d?sTns-W2?_>^_>r;_EKJcGKEJ,~>
+UAt/lrVufrp&Fsj\,Z7(JcC<$JcC<$h>aO)qu=3Us#pBHs$H`Rs$m#Yq`"OLs%`Sjs&&eps&K)"
+s&f;(s'#G,rETA,rETA/s'Yk8s2b5Us31Mhs3^krs475's4mY1s53k7s5O(=s5j";mH9'"ec)b$
+_1/`ir;_EKJcGKEJ,~>
+UAt/lrVufrp&Fsj\,Z7(JcC<$JcC<$h>aO)qu=3Uo`Y./gB at N_rrC.IeM6YNq(qb%q)/+/s#9s;
+q`4=1rB's=ofN%3pGr75s#9s9q_e=/pG;+Q`>HF at Z2ab&JcC<$p]#a~>
+UAt/lrVufrp&Fsj\,Z7(JcC<$JcC<$h>dNHs763[s7$'Vs6]jNs5a4;s4dS*s4%(qs31M`s24lO
+s1A<>s0Ma0s/l=&rN#mus/l=(rNQ=,s02O/s0M[3s1&*?s1/0>rO;\(s1nZKrP/BHs1SHFs1\BF
+s2"`PrPSZPrPSZPs2"`Mq7usDs1nZOrPANLs2"ZNs2"Y(s$m#Ws$ZlSs&T/!s&8q\s#g<Es$$HJ
+s$?ZOs$QfSs$m#]s%35_s%EAcs%WMgs%iYlrsA]*aU-KPo.p+tpGD\'rAO[7s#Bm9ofE%5rAsU5
+q`=I3s#C$;s#0a3rA=7)d?sTns-W2?_>^_>r;_EKJcGKEJ,~>
+UAt/lrVufrp&Fsj\,Z7(JcC<$JcC<$h>aO)qu=3Us#pBHs$H`Rs$m#Yq`"OLs%`Sjs&&eps&K)"
+s&f;(s'#G,rETA,rETA/s'Yk8s2b5Us31Mhs3^krs475's4mY1s53k7s5O(=s5j";mH9'"ec)b$
+_1/`ir;_EKJcGKEJ,~>
+V#UAnqu?Tpp&Fsj^]4*0JcC<$JcC<$fDhn#qu=9Wo`Y./eHGmPr<1FQf.m"Tq(qh'oelb-s#9s;
+q`4[;rB's?pHAI=s$-*=q`XsAs#^6Aq`4[8s#0[1r>OK0gDKr.q\]>Nq&%#!XoJ>"JcC<$qu;0~>
+V#UAnqu?Tpp&Fsj^]4*0JcC<$JcC<$fDkmAs7--Xs6fpRs6K^Is5O(8s4[M(s3q"os3(G^s2"`K
+s1&*9s0;U,s/c7$s/H%!qlKh#s0)I,qm-7.s0_m8s1&*>rOW$=s0hh)rPANLqn`0FrP/BJs2"`Q
+rPJTPs2=rTs2+NHqnW6Js2+`Ns2+`PqagTUs'>Y0s',Lls$ZlSs$?ZKs$-NKs$?ZPs$ZlUs%EAc
+s%<;as%NGes%`SjrDESms%r_rs&dSRf.m"Tq(qh'oelb-s#9s;q`4[;rB's?pHAI=s$-*=q`XsA
+s#^6Aq`4[8s#0[1o9m@\nX%/mXoJ>"JcC<$qu;0~>
+V#UAnqu?Tpp&Fsj^]4*0JcC<$JcC<$fDhn#qu=9Ws#g<Gs$?ZQs$crWq`"OKs%WMhs&&eos&B#!
+s&]5'rEB5*rET5+s'Pe6s'bq;s().<s(D at Fs4./$s4[M-s5*e6s5O(>pZC`'Jc=R+X+((uq0p52
+XoJ>"JcC<$qu;0~>
+V#UAnqu?Tpp&Fsj^]4*0JcC<$JcC<$fDhn#qu=9Wo`Y./eHGmPr<1FQf.m"Tq(qh'oelb-s#9s;
+q`4[;rB's?pHAI=s$-*=q`XsAs#^6Aq`4[8s#0[1r>OK0gDKr.q\]>Nq&%#!XoJ>"JcC<$qu;0~>
+V#UAnqu?Tpp&Fsj^]4*0JcC<$JcC<$fDkmAs7--Xs6fpRs6K^Is5O(8s4[M(s3q"os3(G^s2"`K
+s1&*9s0;U,s/c7$s/H%!qlKh#s0)I,qm-7.s0_m8s1&*>rOW$=s0hh)rPANLqn`0FrP/BJs2"`Q
+rPJTPs2=rTs2+NHqnW6Js2+`Ns2+`PqagTUs'>Y0s',Lls$ZlSs$?ZKs$-NKs$?ZPs$ZlUs%EAc
+s%<;as%NGes%`SjrDESms%r_rs&dSRf.m"Tq(qh'oelb-s#9s;q`4[;rB's?pHAI=s$-*=q`XsA
+s#^6Aq`4[8s#0[1o9m@\nX%/mXoJ>"JcC<$qu;0~>
+V#UAnqu?Tpp&Fsj^]4*0JcC<$JcC<$fDhn#qu=9Ws#g<Gs$?ZQs$crWq`"OKs%WMhs&&eos&B#!
+s&]5'rEB5*rET5+s'Pe6s'bq;s().<s(D at Fs4./$s4[M-s5*e6s5O(>pZC`'Jc=R+X+((uq0p52
+XoJ>"JcC<$qu;0~>
+W;lYnqu?Tpp&Fsja8br8JcC<$JcC<$dJp7rqu=?Yo*#"/d00ILo*!eSfeN4Vq_S1-nMU>)s#9s;
+rAjm=s#^6Cq`XmAs$-HIq*F[?rB^HKs$-NIrB:0Cs#^6ArAjfqm2H!Bq\nW8kns:8`IIW4o7*h@
+r;_EKJcGcMJ,~>
+W;lYnqu?Tpp&Fsja8br8JcC<$JcC<$dJs7:s6p!Us6TdOs69REs5<q4s4RG&s3gqms2tA\s1\NF
+s0r$7s0)I)s/c7#s/GstrN-%%s0)I-qm-7.s0Vg7s1&$<s186Bs1/%,qnVsBq8!$HrPJTPs2=rV
+s2=rTrP\`RqniBLs1nZNs2+`Ns2+fSq+:TYrCd)srD!;cs%EAas%!)Us$-NKs$H`Qs$Zl[s%`Sf
+s%EAcs%WMgs%iYlqbmGis&K)#s&f;(s'#G,s'4:bfeN4Vq_S1-nMU>)s#9s;rAjm=s#^6Cq`XmA
+s$-HIq*F[?rB^HKs$-NIrB:0Cs#^6ArAjnIrL2o;adB40X8i+uJcC<$s8RT~>
+W;lYnqu?Tpp&Fsja8br8JcC<$JcC<$dJp7rqu=?Ys#^6Es$6TOqaLNEs#9sQs%WMgs%r_ms&8qt
+s&T/$s&oA*s'5S0qd9A0rEoS4s'l"<s().As'l"As(VLKs(q^Ps).jTs5O(>rT<A-rTO:GJc=p5
+X+%s9pOMjbX8i+uJcC<$s8RT~>
+W;lYnqu?Tpp&Fsja8br8JcC<$JcC<$dJp7rqu=?Yo*#"/d00ILo*!eSfeN4Vq_S1-nMU>)s#9s;
+rAjm=s#^6Cq`XmAs$-HIq*F[?rB^HKs$-NIrB:0Cs#^6ArAjfqm2H!Bq\nW8kns:8`IIW4o7*h@
+r;_EKJcGcMJ,~>
+W;lYnqu?Tpp&Fsja8br8JcC<$JcC<$dJs7:s6p!Us6TdOs69REs5<q4s4RG&s3gqms2tA\s1\NF
+s0r$7s0)I)s/c7#s/GstrN-%%s0)I-qm-7.s0Vg7s1&$<s186Bs1/%,qnVsBq8!$HrPJTPs2=rV
+s2=rTrP\`RqniBLs1nZNs2+`Ns2+fSq+:TYrCd)srD!;cs%EAas%!)Us$-NKs$H`Qs$Zl[s%`Sf
+s%EAcs%WMgs%iYlqbmGis&K)#s&f;(s'#G,s'4:bfeN4Vq_S1-nMU>)s#9s;rAjm=s#^6Cq`XmA
+s$-HIq*F[?rB^HKs$-NIrB:0Cs#^6ArAjnIrL2o;adB40X8i+uJcC<$s8RT~>
+W;lYnqu?Tpp&Fsja8br8JcC<$JcC<$dJp7rqu=?Ys#^6Es$6TOqaLNEs#9sQs%WMgs%r_ms&8qt
+s&T/$s&oA*s'5S0qd9A0rEoS4s'l"<s().As'l"As(VLKs(q^Ps).jTs5O(>rT<A-rTO:GJc=p5
+X+%s9pOMjbX8i+uJcC<$s8RT~>
+WrMqrp](0lp&FsjoDegjh>d?PJcC<$JcC<$bQ"Vlqu=E[o*"q-cNO7Jk61#UgG/FXq_S1-pGMh+
+s#C$=s#U0Bq`XmAs$-HIqa(6KrBpNOqaLBOs$crTrB^BIs$-NIr>ttZq],JPru1nVko/Y$rttKZ
+rI<jXl[RrFom`n>r;_EKKE$H~>
+WrMqrp](0lp&FsjoDegjh>d?PJcC<$JcC<$bQ%V3s6fpSs6K^Ls6'FBs53k2s4@;"s3:Scs2+fN
+s1\NDs0_m3s/uC's/Q$ss/Q+"s/c7&s/uC*s0;O.s0Vg4s0Vg7s0r$<s1/$>qu?K-rPAHLs2"TJ
+s2"ZNs24lUs2P)Xs2P)Zs2b5\s2G#Vs24lRq8**Js24Y)s%E;arF,_8s%`Sis%r_mrDNYjs%35Y
+s$?ZOs$QfZs&&ekrCm5cs%`Sis&&Yls&B"ps&K)#rE0)&s'#G,s'5M/s'P_4km?*!pG2V%rA=7+
+q_nI6s#L*?s#g0ArBC6GrBU6Gs$HZOrC$NOqaUTSs$Q`NrBUBIs$$=Ns.&tUqjQQ5kEqP6VuQ\q
+JcCB&J,~>
+WrMqrp](0lp&FsjoDegjh>d?PJcC<$JcC<$bQ"Vlqu=E[s#^6Es$-NMs$ZfSrAag<s%r_js%iYk
+s&&eps&K)"s&f;)s',M/s'G_4rF#Y6s'Ye6s'l"<s(24Bs(D at Bs(VLKs(q^Ps).jTs)@jTqf;Ss
+q<7S;Jc>9?m=,(b_1)?4j+-HFj+-fPVuQ\qJcCB&J,~>
+WrMqrp](0lp&FsjoDegjh>d?PJcC<$JcC<$bQ"Vlqu=E[o*"q-cNO7Jk61#UgG/FXq_S1-pGMh+
+s#C$=s#U0Bq`XmAs$-HIqa(6KrBpNOqaLBOs$crTrB^BIs$-NIr>ttZq],JPru1nVko/Y$rttKZ
+rI<jXl[RrFom`n>r;_EKKE$H~>
+WrMqrp](0lp&FsjoDegjh>d?PJcC<$JcC<$bQ%V3s6fpSs6K^Ls6'FBs53k2s4@;"s3:Scs2+fN
+s1\NDs0_m3s/uC's/Q$ss/Q+"s/c7&s/uC*s0;O.s0Vg4s0Vg7s0r$<s1/$>qu?K-rPAHLs2"TJ
+s2"ZNs24lUs2P)Xs2P)Zs2b5\s2G#Vs24lRq8**Js24Y)s%E;arF,_8s%`Sis%r_mrDNYjs%35Y
+s$?ZOs$QfZs&&ekrCm5cs%`Sis&&Yls&B"ps&K)#rE0)&s'#G,s'5M/s'P_4km?*!pG2V%rA=7+
+q_nI6s#L*?s#g0ArBC6GrBU6Gs$HZOrC$NOqaUTSs$Q`NrBUBIs$$=Ns.&tUqjQQ5kEqP6VuQ\q
+JcCB&J,~>
+WrMqrp](0lp&FsjoDegjh>d?PJcC<$JcC<$bQ"Vlqu=E[s#^6Es$-NMs$ZfSrAag<s%r_js%iYk
+s&&eps&K)"s&f;)s',M/s'G_4rF#Y6s'Ye6s'l"<s(24Bs(D at Bs(VLKs(q^Ps).jTs)@jTqf;Ss
+q<7S;Jc>9?m=,(b_1)?4j+-HFj+-fPVuQ\qJcCB&J,~>
+Y5eA!oDeahp&Fsjnc/Ofl2UPZJcC<$JcC<$a8`,frVs]_o*"q-b67hFf*(sWgG/LZq_S1-q)/+/
+s#9s;s#L*?s#g<Es$$HJrB^BKs$Q`QogSmMrC?lYrCR#[s%!#3ruq7^q]GbXruM%Xr>Y\Rq]"W8
+q&/XMrI=]po7>SFqgmp\om`h<r;_EKL];l~>
+Y5eA!oDeahp&Fsjnc/Ofl2UPZJcC<$JcC<$a8c2.s6fpRs6BXJs5j:>s5!_.s4..rs3(G_s24lO
+s1SHBs0Ma0s/l=%s/Q$rs/Q+"rN-%$s0)C+s0Ma4s0Ma4s0hs:s1&*?rOi*BrVui2qnW6KrPSZP
+pVHmHs2=rVs2Y/\s2k;aqonlZs2+fPrPJS+s%<5_rCm5crF5e:s%iSis&/kqs&B"us&T/%s&K(n
+s$crTs%NGks&&ekrCm5ds%iYls&8kqrDikps&K)"s&]5&s'#G,s'5S0s'G_4rF#Y6s'l">qe#_<
+q[)"3q(hh'rA==-rAO[7s#C$=s#U0Bs#pBGs$6NKrBgNOrC$<Is$lrWs%*)[s%*/[rLs7apRhDU
+s.01[rL<DIiL0Y3KDq_Ir;_EKL];l~>
+Y5eA!oDeahp&Fsjnc/Ofl2UPZJcC<$JcC<$a8`,frVs]_s#U0Cs$-NKrBpTQs#C$>s#g<Ys%r_j
+rD<Mks&B"us&]5's',M.s'>Y2s'Pe6rF,M2s(). at s(;:Ds(MFDs(hXNs).jTs)@pVq/YkDs69LI
+KDs\UrI;q<rI=]po7>SFqgmp\om`h<r;_EKL];l~>
+Y5eA!oDeahp&Fsjnc/Ofl2UPZJcC<$JcC<$a8`,frVs]_o*"q-b67hFf*(sWgG/LZq_S1-q)/+/
+s#9s;s#L*?s#g<Es$$HJrB^BKs$Q`QogSmMrC?lYrCR#[s%!#3ruq7^q]GbXruM%Xr>Y\Rq]"W8
+q&/XMrI=]po7>SFqgmp\om`h<r;_EKL];l~>
+Y5eA!oDeahp&Fsjnc/Ofl2UPZJcC<$JcC<$a8c2.s6fpRs6BXJs5j:>s5!_.s4..rs3(G_s24lO
+s1SHBs0Ma0s/l=%s/Q$rs/Q+"rN-%$s0)C+s0Ma4s0Ma4s0hs:s1&*?rOi*BrVui2qnW6KrPSZP
+pVHmHs2=rVs2Y/\s2k;aqonlZs2+fPrPJS+s%<5_rCm5crF5e:s%iSis&/kqs&B"us&T/%s&K(n
+s$crTs%NGks&&ekrCm5ds%iYls&8kqrDikps&K)"s&]5&s'#G,s'5S0s'G_4rF#Y6s'l">qe#_<
+q[)"3q(hh'rA==-rAO[7s#C$=s#U0Bs#pBGs$6NKrBgNOrC$<Is$lrWs%*)[s%*/[rLs7apRhDU
+s.01[rL<DIiL0Y3KDq_Ir;_EKL];l~>
+Y5eA!oDeahp&Fsjnc/Ofl2UPZJcC<$JcC<$a8`,frVs]_s#U0Cs$-NKrBpTQs#C$>s#g<Ys%r_j
+rD<Mks&B"us&]5's',M.s'>Y2s'Pe6rF,M2s(). at s(;:Ds(MFDs(hXNs).jTs)@pVq/YkDs69LI
+KDs\UrI;q<rI=]po7>SFqgmp\om`h<r;_EKL];l~>
+YlFS#nc/Ofp&FsjmJm%`p]($hJcC<$JcC<$_uH]bqu=Q_nHAe-`ruDBeHGgWoeHI`m4nDlq_S1-
+q)/+/rAXa9s#L*?s#g<Es$6TMs$QfTs$lrWrCH`Uq]u%br?V=dr?D7bq]PhZr>ttZq&K2LruM+Z
+q]"uBq1%p`rI=crrIOQlpOV at To7?.Vom`\8qZ)3INW4M~>
+YlFS#nc/Ofp&FsjmJm%`p]($hJcC<$JcC<$_uKc+s6fpRs6K^Ls6'FBs5<q4s4@;"s3CYds2G#T
+s1eTGs0Vg3s0)I(rMfaos/Gsts/c7&s0)C+s0MU0s0_m8s1&*?s1A6Bqu?Q.s1nZNs24lUs2P#X
+s2b5\s24lTs2G#XrQ,#Zs2k;`s3(Gds3:Shs3L_ls3^kps4%(cs%*/]s%E;as%WGes'u(>s%rYk
+s&/kqs&B"us&T/$s&f;)s',M/s'Pe,s&K(ts&&eks%NGes%iYls&8qss&Jqss&/l!s&]5&s&oA*
+s',M.s'G_4rF#Y6rF5_9rFQ"@s(D at Fs(VE<oeHK%m4nDlq_S1-q)/+/rAXa9s#L*?s#g<Es$6TM
+s$QfTs$lrWrCH`Uoq_J[s.]IcrLj%[s.91[rLEVOo:#-9Jc>?AU&XuiJcC`0J,~>
+YlFS#nc/Ofp&FsjmJm%`p]($hJcC<$JcC<$_uH]bqu=Q_s#9s?s$$HJs$?ZPrC$THs&&_ks%iYk
+s&&eos&B#!s&f;)s',M.s'>Y2s'Yk8rF5Y7s'u(>s(24Cs(MFHs(_RGs(q^Qs)7pVrGh^TnT4GH
+rTa(Ts*gmFa+"&=rI=-^q1%p`rI=crrIOQlpOV at To7?.Vom`\8qZ)3INW4M~>
+YlFS#nc/Ofp&FsjmJm%`p]($hJcC<$JcC<$_uH]bqu=Q_nHAe-`ruDBeHGgWoeHI`m4nDlq_S1-
+q)/+/rAXa9s#L*?s#g<Es$6TMs$QfTs$lrWrCH`Uq]u%br?V=dr?D7bq]PhZr>ttZq&K2LruM+Z
+q]"uBq1%p`rI=crrIOQlpOV at To7?.Vom`\8qZ)3INW4M~>
+YlFS#nc/Ofp&FsjmJm%`p]($hJcC<$JcC<$_uKc+s6fpRs6K^Ls6'FBs5<q4s4@;"s3CYds2G#T
+s1eTGs0Vg3s0)I(rMfaos/Gsts/c7&s0)C+s0MU0s0_m8s1&*?s1A6Bqu?Q.s1nZNs24lUs2P#X
+s2b5\s24lTs2G#XrQ,#Zs2k;`s3(Gds3:Shs3L_ls3^kps4%(cs%*/]s%E;as%WGes'u(>s%rYk
+s&/kqs&B"us&T/$s&f;)s',M/s'Pe,s&K(ts&&eks%NGes%iYls&8qss&Jqss&/l!s&]5&s&oA*
+s',M.s'G_4rF#Y6rF5_9rFQ"@s(D at Fs(VE<oeHK%m4nDlq_S1-q)/+/rAXa9s#L*?s#g<Es$6TM
+s$QfTs$lrWrCH`Uoq_J[s.]IcrLj%[s.91[rLEVOo:#-9Jc>?AU&XuiJcC`0J,~>
+YlFS#nc/Ofp&FsjmJm%`p]($hJcC<$JcC<$_uH]bqu=Q_s#9s?s$$HJs$?ZPrC$THs&&_ks%iYk
+s&&eos&B#!s&f;)s',M.s'>Y2s'Yk8rF5Y7s'u(>s(24Cs(MFHs(_RGs(q^Qs)7pVrGh^TnT4GH
+rTa(Ts*gmFa+"&=rI=-^q1%p`rI=crrIOQlpOV at To7?.Vom`\8qZ)3INW4M~>
+YlFY%mJm+bq>^<lkPtJ\s8W#tJcC<$JcC<$^&P'\q>\KanHA_+`<?2 at f*)$YoeGPFpDNWBq]#JR
+r>khXru_7`ruqCds!.Ifr?_Chs!Rgnq^;Cjq]u+bq]c%`ruh7^r>thVo,RcNruV1\q],JPru1?U
+q0r?nrIFp!rIXQlq1AKpoc*K at l[e;NpOE3nScAWgJcCl4J,~>
+YlFY%mJm+bq>^<lkPtJ\s8W#tJcC<$JcC<$^&S-$s6]jPs69RHs5j:?s5*e/s4..rs31Mas2=rR
+s1JB>s0Ma1s/uC%s/Gsqs/5mrs/Q+"s/c7&rNQ=,s0DU1s0_m6s0hs;s1/*?s1J1-s1eNJs2"`Q
+s2=rVs2P)ZqoJfZouR0Ts3(Gds3:Shs3L_lrR(Yns&f;(s'#G's&/ejs%iZ*rFPq*rDW_qs&K#!
+s&f;(s'#G-s'G_4s'Ye.s&T.ss%`Sgs%iYls&/krs&T"us&oA's'>Y.s&f;)s',M.s'>Y3s'Ye6
+s'l"<s()(>s(;:Ds(MFHs(_K=oeHK%qhY3-s,-i7s,?u;qi:];s,d2As-*JIrK[>Is-NbQrL*\S
+s-rtWrLNt[s.B=arLs7cs.fOgqka%as/#OdrM'7as.KCarLWtYopkWCopYoK^&I2^a8VY0r;_EK
+OoKq~>
+YlFY%mJm+bq>^<lkPtJ\s8W#tJcC<$JcC<$^&P'\q>\Kas#'g<s#pBHs$?ZPrC$NGqbdAks&&eo
+s&8qss&T/%s'#G,s'5S0s'Pe6s'bq:s'u(>s(24Bs(D at Cs(;:Ds(MFHs(_RLs(MFMs)7pVqf2XV
+olKYFrTa(TNILnWiI:ZSomd!jmsk.^s*suts+1-#nUpXhqgmp\l[e;NpOE3nScAWgJcCl4J,~>
+YlFY%mJm+bq>^<lkPtJ\s8W#tJcC<$JcC<$^&P'\q>\KanHA_+`<?2 at f*)$YoeGPFpDNWBq]#JR
+r>khXru_7`ruqCds!.Ifr?_Chs!Rgnq^;Cjq]u+bq]c%`ruh7^r>thVo,RcNruV1\q],JPru1?U
+q0r?nrIFp!rIXQlq1AKpoc*K at l[e;NpOE3nScAWgJcCl4J,~>
+YlFY%mJm+bq>^<lkPtJ\s8W#tJcC<$JcC<$^&S-$s6]jPs69RHs5j:?s5*e/s4..rs31Mas2=rR
+s1JB>s0Ma1s/uC%s/Gsqs/5mrs/Q+"s/c7&rNQ=,s0DU1s0_m6s0hs;s1/*?s1J1-s1eNJs2"`Q
+s2=rVs2P)ZqoJfZouR0Ts3(Gds3:Shs3L_lrR(Yns&f;(s'#G's&/ejs%iZ*rFPq*rDW_qs&K#!
+s&f;(s'#G-s'G_4s'Ye.s&T.ss%`Sgs%iYls&/krs&T"us&oA's'>Y.s&f;)s',M.s'>Y3s'Ye6
+s'l"<s()(>s(;:Ds(MFHs(_K=oeHK%qhY3-s,-i7s,?u;qi:];s,d2As-*JIrK[>Is-NbQrL*\S
+s-rtWrLNt[s.B=arLs7cs.fOgqka%as/#OdrM'7as.KCarLWtYopkWCopYoK^&I2^a8VY0r;_EK
+OoKq~>
+YlFY%mJm+bq>^<lkPtJ\s8W#tJcC<$JcC<$^&P'\q>\Kas#'g<s#pBHs$?ZPrC$NGqbdAks&&eo
+s&8qss&T/%s'#G,s'5S0s'Pe6s'bq:s'u(>s(24Bs(D at Cs(;:Ds(MFHs(_RLs(MFMs)7pVqf2XV
+olKYFrTa(TNILnWiI:ZSomd!jmsk.^s*suts+1-#nUpXhqgmp\l[e;NpOE3nScAWgJcCl4J,~>
+ZN'k'li6n`q>^BniW&iVs8W#tJcC<$JcC<$_uH]bq>\QcnHA_+_$'c<f*)*[o.f>DpDN]Dr>Y\T
+r>kbVru_1^ruqCds!.Ohr?hIjq^DIls!Iakq'5h^ruqCdruqCbru^tVpDs,NruM+]r>ttZruC'K
+s+('!s+:9'rIk'%rIk!!r>tnXpDicDru1VNrIP!#nU^"VpOE3nRK*3cJcD#8J,~>
+ZN'k'li6n`q>^BniW&iVs8W#tJcC<$JcC<$_uKc"s5s:As5s at Bs5<q4s4@;"s3CYes2Y/Ws1\ND
+s0hs6s02O*s/GsqrMT[os/Q+"s/c7&s0)I,s0;U0s0Ma5s0hs8s0hs;s1/0 at rO_n*q8**Js2=rV
+s2P)Zq8i0Ls2tAbs31Mfs3CSis3^dIs&o;(s',M,s&f;9s(VLHrDWYos&K)"s&]/$rE9/)s'>Y2
+s'Pe6s'>Y.s'>S2s&f;"s&&eos&B#!s&]5&s&oA+s'>Y/s'bq5s&oA*s',M.s'Pe6rF,_8s'u(>
+s(;4Bs(MFHs(_LJrsA9Os+gK-rJCQ3s,6o9rJgc9s,[,?s,m>Fs-3JIs-EPLs-`nUs-s%Yqjm\W
+s.B=arLs7ds.o[krMKIis/>sps/#[hq4dh]s.K=_s.8hQopk]E_uBJ"h3c=`RK*3cJcD#8J,~>
+ZN'k'li6n`q>^BniW&iVs8W#tJcC<$JcC<$_uH]bq>\Qcs"XO6s#g<Fs$6TNrC$NGqb[;irDNYo
+s&B"us&T/%s&oA+s'5S1s'Pe6s'bq:s(). at s(;4Bs(M:DrG)@Js)%dMs)7pVrGhdVrH%.Ds6K:U
+O+-tUjaR5Zs+1-!hgbZVrIP!#s+C9'qh>!%q1JQromu at Xqgnd!nU^"VpOE3nRK*3cJcD#8J,~>
+ZN'k'li6n`q>^BniW&iVs8W#tJcC<$JcC<$_uH]bq>\QcnHA_+_$'c<f*)*[o.f>DpDN]Dr>Y\T
+r>kbVru_1^ruqCds!.Ohr?hIjq^DIls!Iakq'5h^ruqCdruqCbru^tVpDs,NruM+]r>ttZruC'K
+s+('!s+:9'rIk'%rIk!!r>tnXpDicDru1VNrIP!#nU^"VpOE3nRK*3cJcD#8J,~>
+ZN'k'li6n`q>^BniW&iVs8W#tJcC<$JcC<$_uKc"s5s:As5s at Bs5<q4s4@;"s3CYes2Y/Ws1\ND
+s0hs6s02O*s/GsqrMT[os/Q+"s/c7&s0)I,s0;U0s0Ma5s0hs8s0hs;s1/0 at rO_n*q8**Js2=rV
+s2P)Zq8i0Ls2tAbs31Mfs3CSis3^dIs&o;(s',M,s&f;9s(VLHrDWYos&K)"s&]/$rE9/)s'>Y2
+s'Pe6s'>Y.s'>S2s&f;"s&&eos&B#!s&]5&s&oA+s'>Y/s'bq5s&oA*s',M.s'Pe6rF,_8s'u(>
+s(;4Bs(MFHs(_LJrsA9Os+gK-rJCQ3s,6o9rJgc9s,[,?s,m>Fs-3JIs-EPLs-`nUs-s%Yqjm\W
+s.B=arLs7ds.o[krMKIis/>sps/#[hq4dh]s.K=_s.8hQopk]E_uBJ"h3c=`RK*3cJcD#8J,~>
+ZN'k'li6n`q>^BniW&iVs8W#tJcC<$JcC<$_uH]bq>\Qcs"XO6s#g<Fs$6TNrC$NGqb[;irDNYo
+s&B"us&T/%s&oA+s'5S1s'Pe6s'bq:s(). at s(;4Bs(M:DrG)@Js)%dMs)7pVrGhdVrH%.Ds6K:U
+O+-tUjaR5Zs+1-!hgbZVrIP!#s+C9'qh>!%q1JQromu at Xqgnd!nU^"VpOE3nRK*3cJcD#8J,~>
+ZN':lq>^$dhuE]Vqu?TpJcC<$JcC<$aoA>hq>\QcnHA_+^BFQ:f*)*[o.f>DpDNcFr>YVRr>kbV
+ru_1^ruqCds!7Ujs!Ians![mrs!@[hruq+\q]Yt^ruqCdr?1nXq&]8NruV+]rIP!!l[SqbrIP!#
+rIb-'rIt-'s!.Ofr?;1`q&fJTq]5>LpD`cFq1A3hl[\k^qgb%5r;_EKRK%d~>
+ZN':lq>^$dhuE]Vqu?TpJcC<$JcC<$aoDD(s5j:As5X(:s5!_.s4..ss3:Scs2G#Ss1SHBs0_m4
+s/l=&s/>aks/>sss/Z1$s/l=(s02O.s0D[2s0V[3s0r$=rOW$@q>^9,s2+fRs2=rVs2P)ZrQ,#\
+pWEHVs2tAbs31Mfs3CYjs3Uens&]5&s&o;(rEK;,rG_dSs&oA(s&]5$rE'#$rE9)&s',M/s'PY2
+s',M0s'bq<s(D at Gs(;:@s'Yk4s'#G*s',M/s'Pe8s'Yk;s'Ye0s'5S1s'Ye6s'l"<s(24Cqe?(F
+s(hRLs(hW at o.g9#rJ:?-s,-i7rJ^]7s,R,?rK.&As-*DGs-<VNrL!VQrL3bUs.&tWrLX%]s.KCc
+s.]Ogs.o[krMT[os.fC`s.]=_rLj+]oq(]Eq4,_/rL<bSl^?Xtao7Y,r;_EKRK%d~>
+ZN':lq>^$dhuE]Vqu?TpJcC<$JcC<$aoA>hq>\Qcs#0m<s#pBHs$?ZPrC$NGs%rYkrDNSms&B#!
+s&]5&s'#G,s'>Y2s'Pe7s'kq;s(24Bs(D:DrFu4FrG2FLs).jOs)A!XrGqpZj`LHDs6]FWWIFks
+l[Jk`s+(&tkC3G\q18Qrl[SqbrIP!#rIb-'rIt-'rIt-%on33pnU^Fbomupjo7?4Xqg\KnQiI!a
+JcD/<J,~>
+ZN':lq>^$dhuE]Vqu?TpJcC<$JcC<$aoA>hq>\QcnHA_+^BFQ:f*)*[o.f>DpDNcFr>YVRr>kbV
+ru_1^ruqCds!7Ujs!Ians![mrs!@[hruq+\q]Yt^ruqCdr?1nXq&]8NruV+]rIP!!l[SqbrIP!#
+rIb-'rIt-'s!.Ofr?;1`q&fJTq]5>LpD`cFq1A3hl[\k^qgb%5r;_EKRK%d~>
+ZN':lq>^$dhuE]Vqu?TpJcC<$JcC<$aoDD(s5j:As5X(:s5!_.s4..ss3:Scs2G#Ss1SHBs0_m4
+s/l=&s/>aks/>sss/Z1$s/l=(s02O.s0D[2s0V[3s0r$=rOW$@q>^9,s2+fRs2=rVs2P)ZrQ,#\
+pWEHVs2tAbs31Mfs3CYjs3Uens&]5&s&o;(rEK;,rG_dSs&oA(s&]5$rE'#$rE9)&s',M/s'PY2
+s',M0s'bq<s(D at Gs(;:@s'Yk4s'#G*s',M/s'Pe8s'Yk;s'Ye0s'5S1s'Ye6s'l"<s(24Cqe?(F
+s(hRLs(hW at o.g9#rJ:?-s,-i7rJ^]7s,R,?rK.&As-*DGs-<VNrL!VQrL3bUs.&tWrLX%]s.KCc
+s.]Ogs.o[krMT[os.fC`s.]=_rLj+]oq(]Eq4,_/rL<bSl^?Xtao7Y,r;_EKRK%d~>
+ZN':lq>^$dhuE]Vqu?TpJcC<$JcC<$aoA>hq>\Qcs#0m<s#pBHs$?ZPrC$NGs%rYkrDNSms&B#!
+s&]5&s'#G,s'>Y2s'Pe7s'kq;s(24Bs(D:DrFu4FrG2FLs).jOs)A!XrGqpZj`LHDs6]FWWIFks
+l[Jk`s+(&tkC3G\q18Qrl[SqbrIP!#rIb-'rIt-'rIt-%on33pnU^Fbomupjo7?4Xqg\KnQiI!a
+JcD/<J,~>
+ZN':lp]($hg].9Rp](0lJcC<$JcC<$ci9tnq>\WenHA_+]*/-6f*(Uuh\c5.q\oDPoc3uPr>tt\
+r?2%\q]>PTq]PbZq]Pn^s!.IdpE98Rq&]Qcs+13&s+:3#q1/EnrIFp!rIY'%rIk-'s+^Ctr?_Cf
+s!.Ofr?;%\q&fVXoc<iJru:bRq&TDRrIb!!s+13%q17p`s*t'!s*sipQ2gd_JcD;@J,~>
+ZN':lp]($hg].9Rp](0lJcC<$JcC<$ci=%-s5j:@s5O(;s53k3s4IA%s3^kjs2b5Ys1nZHs0r$8
+s0;U*s/Q*ss/#[krMT[ps/Z+"s/uC*s0;U0s0Ma4s0_g6s0r$<rOW$@q>^3+s24lTs2G#Xs2Y)Z
+s2t)ZrQ>/^s2tAbs31Mgs3L_ls&T/$s&f;(rEB5*s'5SCrGhdBrE]G.rEK/&rEK;,s'G_4rF#Y6
+s'5S2s'l">s(MFHs(_RLs(MFDs'l"8s'Yk8s'u(>s(;:As(D at As'G_0s'>Y3s'bk8s().As(MFI
+qeQ.HrGDRNnM0osqhb?1rJUW5s,I&=rK$u?s,m>Es-*JIs-EPLs-`nUrL<\SrLNt[q4IVWpRV>U
+rLa%]s.T=_m at X3Gq46"6rLNnWq4%>Oj-eqpao7S*r;_EKSc=3~>
+ZN':lp]($hg].9Rp](0lJcC<$JcC<$ci9tnq>\Wes"sa9s#g<Gs$6TNrC$ZLrB:0VrD<Mks&/kr
+s&K)"s&B#!s&]5&s'#G,s'>Y3s'Yk8s'kq;s(;:DrFl.DqeH.Hs(q^Ps).jUs(q^Ts)S-\lZD`@
+nc#Y>qg\!^s*t'"rIFotl$iY^s+13&s+:3#q1/EnrIFp!rIY'%rIk-'rJ(-'qhG!%qh4ctqh"?h
+s+'oron*-pqh"j!s+:&tm=>4ds+(-!q1+b1r;_EKSc=3~>
+ZN':lp]($hg].9Rp](0lJcC<$JcC<$ci9tnq>\WenHA_+]*/-6f*(Uuh\c5.q\oDPoc3uPr>tt\
+r?2%\q]>PTq]PbZq]Pn^s!.IdpE98Rq&]Qcs+13&s+:3#q1/EnrIFp!rIY'%rIk-'s+^Ctr?_Cf
+s!.Ofr?;%\q&fVXoc<iJru:bRq&TDRrIb!!s+13%q17p`s*t'!s*sipQ2gd_JcD;@J,~>
+ZN':lp]($hg].9Rp](0lJcC<$JcC<$ci=%-s5j:@s5O(;s53k3s4IA%s3^kjs2b5Ys1nZHs0r$8
+s0;U*s/Q*ss/#[krMT[ps/Z+"s/uC*s0;U0s0Ma4s0_g6s0r$<rOW$@q>^3+s24lTs2G#Xs2Y)Z
+s2t)ZrQ>/^s2tAbs31Mgs3L_ls&T/$s&f;(rEB5*s'5SCrGhdBrE]G.rEK/&rEK;,s'G_4rF#Y6
+s'5S2s'l">s(MFHs(_RLs(MFDs'l"8s'Yk8s'u(>s(;:As(D at As'G_0s'>Y3s'bk8s().As(MFI
+qeQ.HrGDRNnM0osqhb?1rJUW5s,I&=rK$u?s,m>Es-*JIs-EPLs-`nUrL<\SrLNt[q4IVWpRV>U
+rLa%]s.T=_m at X3Gq46"6rLNnWq4%>Oj-eqpao7S*r;_EKSc=3~>
+ZN':lp]($hg].9Rp](0lJcC<$JcC<$ci9tnq>\Wes"sa9s#g<Gs$6TNrC$ZLrB:0VrD<Mks&/kr
+s&K)"s&B#!s&]5&s'#G,s'>Y3s'Yk8s'kq;s(;:DrFl.DqeH.Hs(q^Ps).jUs(q^Ts)S-\lZD`@
+nc#Y>qg\!^s*t'"rIFotl$iY^s+13&s+:3#q1/EnrIFp!rIY'%rIk-'rJ(-'qhG!%qh4ctqh"?h
+s+'oron*-pqh"j!s+:&tm=>4ds+(-!q1+b1r;_EKSc=3~>
+JcFm4rrDZjr;_EKJcC<$JcF:#VgeOCc$o*aq\ZjHrrC^TrsA9Oh\c/,r>P\Ro, at WJq],VVocF,T
+ruh1^nK at iTs!.Ohr?M=druptVq1&Eqs+:9'rIXcprIY!#s+LE+s+^Q/q^MIns!dsrs!Rgnq^)7e
+r?D1`q&oPVr>tDJmiMEJq1JQrq183hs+1-#pOW9nOoP@[JcDGDJ,~>
+JcFm4rrDZjr;_EKJcC<$JcF:#s5j:As5O(;s53k5s4dS+s4%(rs31M`s24lOs186=s0;U+s/c7"
+s/5glrMKUms/>mss/c7's0)I,s0D[2s0Vg6s0hs:rODa9s1A1.rPJBJs2=rVs2P)Zs2b5^s3(Ab
+s3:ShrQkMjs3:Sds3(Gds3:Sis&K)"s&]5&s&o;(s',M.rGhjXs'GY2s'Yk8rF#Y4s'G_2rETA.
+s'G_4s'Ye6s'Pe6s'u(@s(D at FrG)@Js(q^Ms(D at Ds(D at Gs(_LKs(MFLs(hXDs'>Y2s'Yk9s'u(?
+s(D at Gs(hXOs).^NrGMXPrsA9Os+gK-qhb?1rJUW5s,I&=rK$u?s,m8Cs-3DIqj at 8KrL3\Ss.'%Y
+rLWnWrLWPOs.K7]oq:oKec,H<rLWtYrLEbSq3p91jd=6jOoP@[JcDGDJ,~>
+JcFm4rrDZjr;_EKJcC<$JcF:#VgeOCc$o[Is#'g;s$$HJs$?ZPrC$TKs$HZ[s%r_ms&8qss&Jqs
+s&f;(s'#G-s'>Y2s'Yk8s'l"<s()(?rFl.Es(qXNs).jRs).jTrG_dQs)S-\o5s;@s6]FWXa^"o
+nUCLfqgnctrI=Efq1&Eqs+:9'rIXcprIY!#s+LE+s+^E+s+pK-s+pK+rJ(3'q1SWtq1AEnqh!j\
+qh"Wpomm'nrIXcprIC%1r;_EKU&TW~>
+JcFm4rrDZjr;_EKJcC<$JcF:#VgeOCc$o*aq\ZjHrrC^TrsA9Oh\c/,r>P\Ro, at WJq],VVocF,T
+ruh1^nK at iTs!.Ohr?M=druptVq1&Eqs+:9'rIXcprIY!#s+LE+s+^Q/q^MIns!dsrs!Rgnq^)7e
+r?D1`q&oPVr>tDJmiMEJq1JQrq183hs+1-#pOW9nOoP@[JcDGDJ,~>
+JcFm4rrDZjr;_EKJcC<$JcF:#s5j:As5O(;s53k5s4dS+s4%(rs31M`s24lOs186=s0;U+s/c7"
+s/5glrMKUms/>mss/c7's0)I,s0D[2s0Vg6s0hs:rODa9s1A1.rPJBJs2=rVs2P)Zs2b5^s3(Ab
+s3:ShrQkMjs3:Sds3(Gds3:Sis&K)"s&]5&s&o;(s',M.rGhjXs'GY2s'Yk8rF#Y4s'G_2rETA.
+s'G_4s'Ye6s'Pe6s'u(@s(D at FrG)@Js(q^Ms(D at Ds(D at Gs(_LKs(MFLs(hXDs'>Y2s'Yk9s'u(?
+s(D at Gs(hXOs).^NrGMXPrsA9Os+gK-qhb?1rJUW5s,I&=rK$u?s,m8Cs-3DIqj at 8KrL3\Ss.'%Y
+rLWnWrLWPOs.K7]oq:oKec,H<rLWtYrLEbSq3p91jd=6jOoP@[JcDGDJ,~>
+JcFm4rrDZjr;_EKJcC<$JcF:#VgeOCc$o[Is#'g;s$$HJs$?ZPrC$TKs$HZ[s%r_ms&8qss&Jqs
+s&f;(s'#G-s'>Y2s'Yk8s'l"<s()(?rFl.Es(qXNs).jRs).jTrG_dQs)S-\o5s;@s6]FWXa^"o
+nUCLfqgnctrI=Efq1&Eqs+:9'rIXcprIY!#s+LE+s+^E+s+pK-s+pK+rJ(3'q1SWtq1AEnqh!j\
+qh"Wpomm'nrIXcprIC%1r;_EKU&TW~>
+JcFm4rrDNfr;_EKJcC<$JcFL)VgeOCc$o*ar>;pFrrC^TnM0&@pDNK>r>YPPq&TDTru_7`rupnV
+r?;1bs!.Ohr?_Cfr?M7br?:i`s+1-&nV$jps+^>"r at In!s"+1#s!n$ts![mpr?hIhs!7Uhs!%Cb
+q&oPVq]>bXruV1^q&o\\pE98RruV1^s+L9%q1A9jpO`-jqgab-qZ)3IVuM8~>
+JcFm4rrDNfr;_EKJcC<$JcFL)s5a4?s5F"9s5*e2s4RG's3q"ps31M`s2+fMs1/0;s0;U*s/Z0u
+s/,[is/,gos/>mss/c7&s/uC*s0;U1s0Vg6s0hs:s1&$<qmu\)s2+fRq8NBPs2P#Xs2b5^s2tAb
+rQYAfs3L_lrR(Yns3q"rs3^kns&K)"s&]5&s&oA*s',G,s)J'Zs'G_4rF#Y6rF5Y6s'kq8s'Ye4
+s'Ye6s'l":s().ArFc.Es(_RLs(qXNs(qXOq/-.Hs)A!Ys)e9^s(hXKs(MFFs(MFIs(q^QrG_XP
+s)A!Vs).?]s+gK-rJCK1rJU]7rJgi;s,[,?s,m>Es-3,Bs-`hSq4%>Qq47JUqk*h[hkC"Ag&CrE
+rLs1_rLa%[rLNnWpRD&KgR7ApbPmS&qZ)3IVuM8~>
+JcFm4rrDNfr;_EKJcC<$JcFL)VgeOCc$o[Ks#C$@rBL<Ks$QfSs$crRs$HZZs%iYks&/kqs&B"u
+s&T)"s&f;(s',M.s'>Y2s'Pe7s'l"<s(). at s(;:Ds(MFIs(hXOrGMXRrG_dSs)7jUs).jXqfLe>
+nc#_ at s*sorrI=Efs*t'"s+:3#s+'oprI4Ehs+1-&nV$jpqhG-+s+p]3s,-W1rJLW3q2#'+rJ(3'
+q1SWtq1AX!q1S?no7[!nq1A9jpO`-jqgab-qZ)3IVuM8~>
+JcFm4rrDNfr;_EKJcC<$JcFL)VgeOCc$o*ar>;pFrrC^TnM0&@pDNK>r>YPPq&TDTru_7`rupnV
+r?;1bs!.Ohr?_Cfr?M7br?:i`s+1-&nV$jps+^>"r at In!s"+1#s!n$ts![mpr?hIhs!7Uhs!%Cb
+q&oPVq]>bXruV1^q&o\\pE98RruV1^s+L9%q1A9jpO`-jqgab-qZ)3IVuM8~>
+JcFm4rrDNfr;_EKJcC<$JcFL)s5a4?s5F"9s5*e2s4RG's3q"ps31M`s2+fMs1/0;s0;U*s/Z0u
+s/,[is/,gos/>mss/c7&s/uC*s0;U1s0Vg6s0hs:s1&$<qmu\)s2+fRq8NBPs2P#Xs2b5^s2tAb
+rQYAfs3L_lrR(Yns3q"rs3^kns&K)"s&]5&s&oA*s',G,s)J'Zs'G_4rF#Y6rF5Y6s'kq8s'Ye4
+s'Ye6s'l":s().ArFc.Es(_RLs(qXNs(qXOq/-.Hs)A!Ys)e9^s(hXKs(MFFs(MFIs(q^QrG_XP
+s)A!Vs).?]s+gK-rJCK1rJU]7rJgi;s,[,?s,m>Es-3,Bs-`hSq4%>Qq47JUqk*h[hkC"Ag&CrE
+rLs1_rLa%[rLNnWpRD&KgR7ApbPmS&qZ)3IVuM8~>
+JcFm4rrDNfr;_EKJcC<$JcFL)VgeOCc$o[Ks#C$@rBL<Ks$QfSs$crRs$HZZs%iYks&/kqs&B"u
+s&T)"s&f;(s',M.s'>Y2s'Pe7s'l"<s(). at s(;:Ds(MFIs(hXOrGMXRrG_dSs)7jUs).jXqfLe>
+nc#_ at s*sorrI=Efs*t'"s+:3#s+'oprI4Ehs+1-&nV$jpqhG-+s+p]3s,-W1rJLW3q2#'+rJ(3'
+q1SWtq1AX!q1S?no7[!nq1A9jpO`-jqgab-qZ)3IVuM8~>
+JcFm4rrDBbqZ)3IJcC<$JcF^/WIFaEc[P<cq\ZXBrrC^TnM02Dobm9<ru:bRr>k\Truh7`s!%If
+s!71\r?VChs!I[ms!Rgns!@Uhs!.Djs+:9)s+p]6s,d8Fs,d8>s,$E(r at n7)s"OI+q_%b!s"OI+
+s"=='s"+1#s!dsrr?qOjs!@[js!.Idr?;%\q]Gh\r?;1bnK\&Xr?;%\q]GhZs+L?'s+:3%l%8SZ
+rIBb)r;_EKX8d\~>
+JcFm4rrDBbqZ)3IJcC<$JcF^/s5O(:s5*e3s4dS+s4..ss3:Sbs2=rRs1SHBs0Vg1s/c7#s/>sp
+qka1es/Q+"s/c7&s/uC*s0;U0s0Vg6s0hs:s1&$<qmu\)s24lTrPe`TqoATTs2tAbs31Mfs3CYj
+s3U_ls3gkps4$pJrE9)&s',M.s)J!Xs'P_4s'bk8s'u"<s(2. at s(D at Ds(24?s'l":qdTM8s(;:D
+s(VLJs(hRLs)%dRo5FYGs)\3_s*"Ees*F]ls*=Whs*+Kds)n?_rGqdTs)A!Vs).?]qhY-+rJLQ3
+s,?o9s,R,?rK.&As-*&As-`nUq4%>QqjmbYqk*h[q4[VYo:u&Sh>[GQs/5mos/#akrM0CerLs7a
+qk*n[rLNnWo:,QEh3mYtc2NS"r;_EKX8d\~>
+JcFm4rrDBbqZ)3IJcC<$JcF^/WIFaEc[PmKs#0m;s#pBHs$6TNs$QfTs$ZfPs%WMgs%iYls&/kq
+s&K)"s&]5&qcWl%s'>Y2s'Pe7s'l"<s(). at s(;4Ds(hXNs)%^Ps)7pVrGhjXqfDdUqfM"Dq0)<-
+Z[Vk&q1/EnpO<'js+'uus+1-!pOE3ps+UK/s,?u>s-3PFs,?u7onWL#s+gK-s,$c5s,6o9s,I&=
+s,Ho7s,6o7qhb9-s+gQ-q1\^!qh+p%rIt9+s+g3%s+gQ-qh=p#s+C?)rIb-%rIa?don!'lM?!MS
+JcDeNJ,~>
+JcFm4rrDBbqZ)3IJcC<$JcF^/WIFaEc[P<cq\ZXBrrC^TnM02Dobm9<ru:bRr>k\Truh7`s!%If
+s!71\r?VChs!I[ms!Rgns!@Uhs!.Djs+:9)s+p]6s,d8Fs,d8>s,$E(r at n7)s"OI+q_%b!s"OI+
+s"=='s"+1#s!dsrr?qOjs!@[js!.Idr?;%\q]Gh\r?;1bnK\&Xr?;%\q]GhZs+L?'s+:3%l%8SZ
+rIBb)r;_EKX8d\~>
+JcFm4rrDBbqZ)3IJcC<$JcF^/s5O(:s5*e3s4dS+s4..ss3:Sbs2=rRs1SHBs0Vg1s/c7#s/>sp
+qka1es/Q+"s/c7&s/uC*s0;U0s0Vg6s0hs:s1&$<qmu\)s24lTrPe`TqoATTs2tAbs31Mfs3CYj
+s3U_ls3gkps4$pJrE9)&s',M.s)J!Xs'P_4s'bk8s'u"<s(2. at s(D at Ds(24?s'l":qdTM8s(;:D
+s(VLJs(hRLs)%dRo5FYGs)\3_s*"Ees*F]ls*=Whs*+Kds)n?_rGqdTs)A!Vs).?]qhY-+rJLQ3
+s,?o9s,R,?rK.&As-*&As-`nUq4%>QqjmbYqk*h[q4[VYo:u&Sh>[GQs/5mos/#akrM0CerLs7a
+qk*n[rLNnWo:,QEh3mYtc2NS"r;_EKX8d\~>
+JcFm4rrDBbqZ)3IJcC<$JcF^/WIFaEc[PmKs#0m;s#pBHs$6TNs$QfTs$ZfPs%WMgs%iYls&/kq
+s&K)"s&]5&qcWl%s'>Y2s'Pe7s'l"<s(). at s(;4Ds(hXNs)%^Ps)7pVrGhjXqfDdUqfM"Dq0)<-
+Z[Vk&q1/EnpO<'js+'uus+1-!pOE3ps+UK/s,?u>s-3PFs,?u7onWL#s+gK-s,$c5s,6o9s,I&=
+s,Ho7s,6o7qhb9-s+gQ-q1\^!qh+p%rIt9+s+g3%s+gQ-qh=p#s+C?)rIb-%rIa?don!'lM?!MS
+JcDeNJ,~>
+JcFm4rrD0\r;_EKJcC<$JcFp5WIFaEc[P<cr>;^@rrCdVnM0JLm2>R8r>YVRq]5PTru_7`r?;1b
+r?UnZr?hOls![msq()Ips+C?)s+UK0s,I&As-E\RrLa+Zs-NbMs,d8>rJCP4q_e7-q_S+)rA4I1
+s"XO,s"=='s"+1#s!dmps!Rgnr?_Cfr?M=dr?;1br?M=fr?_Chq^;Cjr?_Ihr?M=druq7^q&fVX
+l%A_^on!!jL]@;QJcDqRJ,~>
+JcFm4rrD0\r;_EKJcC<$JcFp5s5O(:s5*e2s4[M)s3q"os3(G^s2+fMs1A<@s0Ma/s/Z0tpSIba
+s/>sus/c7&s/uC*s0;U0s0Ma5s0hs:rODm=rO`*@qu?]5s24lTrPefVqoATTs2k;`rQP;ds3LYj
+s3^kprR:erq-*Z"s'5S0s)J'Zs'P_4s'bq:rF>e:s(2. at s(D at Fs(VLJs(hXJs(;:BrF>k<s(2.@
+s(MFIrG2FLs)%dRs)7pVqf2RRs)S-Ys*"Eds*=QhrHnQjs*=Whs*"?`qfMj]s)n?_nM1'!rJ:K1
+s,-i8s,I&>q2t?5s-*JLopPiKqj[JQqjmbYrLa%]rLs+_qkO%an"nq at s/Pmos/>sqs/,aks.o[i
+s.]Ics.K=_rLWtYqjd2GopXp/n!MB!L]@;QJcDqRJ,~>
+JcFm4rrD0\r;_EKJcC<$JcFp5WIFaEc[PmNs#9s=s#pBHs$?ZPs$ZlUs$ZlRs%NGes%`Sis&&eo
+s&8qts&T/$s&f;(rEB5*s'5S0s'G_4s'Yk9s'u(?s(;:Ds(VLJs(hXNrGDRPs)7pVrGhjXs)\-\
+s)n?\m<.l at nc#qFqg\Qps+1-!qg\Qnqg\Wrs+9ors+LE+s,$c8s-!DJs-inYs-s%Ts-3PFs,?K)
+rJLQ3rJ^c9s,[2As,m>Bqi1W7s,6o7qhb?/rJ19)pP&X%s+gW1rJCK1qhtK3rJCK/rJ1E-qh=j!
+kC`M\on!!jL]@;QJcDqRJ,~>
+JcFm4rrD0\r;_EKJcC<$JcFp5WIFaEc[P<cr>;^@rrCdVnM0JLm2>R8r>YVRq]5PTru_7`r?;1b
+r?UnZr?hOls![msq()Ips+C?)s+UK0s,I&As-E\RrLa+Zs-NbMs,d8>rJCP4q_e7-q_S+)rA4I1
+s"XO,s"=='s"+1#s!dmps!Rgnr?_Cfr?M=dr?;1br?M=fr?_Chq^;Cjr?_Ihr?M=druq7^q&fVX
+l%A_^on!!jL]@;QJcDqRJ,~>
+JcFm4rrD0\r;_EKJcC<$JcFp5s5O(:s5*e2s4[M)s3q"os3(G^s2+fMs1A<@s0Ma/s/Z0tpSIba
+s/>sus/c7&s/uC*s0;U0s0Ma5s0hs:rODm=rO`*@qu?]5s24lTrPefVqoATTs2k;`rQP;ds3LYj
+s3^kprR:erq-*Z"s'5S0s)J'Zs'P_4s'bq:rF>e:s(2. at s(D at Fs(VLJs(hXJs(;:BrF>k<s(2.@
+s(MFIrG2FLs)%dRs)7pVqf2RRs)S-Ys*"Eds*=QhrHnQjs*=Whs*"?`qfMj]s)n?_nM1'!rJ:K1
+s,-i8s,I&>q2t?5s-*JLopPiKqj[JQqjmbYrLa%]rLs+_qkO%an"nq at s/Pmos/>sqs/,aks.o[i
+s.]Ics.K=_rLWtYqjd2GopXp/n!MB!L]@;QJcDqRJ,~>
+JcFm4rrD0\r;_EKJcC<$JcFp5WIFaEc[PmNs#9s=s#pBHs$?ZPs$ZlUs$ZlRs%NGes%`Sis&&eo
+s&8qts&T/$s&f;(rEB5*s'5S0s'G_4s'Yk9s'u(?s(;:Ds(VLJs(hXNrGDRPs)7pVrGhjXs)\-\
+s)n?\m<.l at nc#qFqg\Qps+1-!qg\Qnqg\Wrs+9ors+LE+s,$c8s-!DJs-inYs-s%Ts-3PFs,?K)
+rJLQ3rJ^c9s,[2As,m>Bqi1W7s,6o7qhb?/rJ19)pP&X%s+gW1rJCK1qhtK3rJCK/rJ1E-qh=j!
+kC`M\on!!jL]@;QJcDqRJ,~>
+JcFm4rrD$Xr;_EKJcC<$JcG-;WIFaEd=1Neq\ZF<rrCdVnM0bUrttJJo, at KFr>P\Tq],PTq&]PX
+ruh7`s!%Cds!7Ukq'Z1js!dsts""+#s"==*s"aU3s"sa1s"j>+s,[2Ds-WhVs.KCds.KCas-s%T
+s-3OMs#g<Bq)S=3q)A=3q`"O5s"j[0s"OI+s"47%s""+!s!dsrs!Rals!@Uhs!@[lr?qUnq^MIn
+s!dgns!Rgnr?_Cfr?M=dr?;%\r?(tZqh+d!pOi3lo7?dhL&_)OJcE(VJ,~>
+JcFm4rrD$Xr;_EKJcC<$JcG-;s5O(:s5*e2s4[M)s3q"os2tA\s2"`Js1/0=s0Ma.s/Q*soqhVa
+s/5mss/Z1$s/uC*s02O.s0Ma4s0_m8s0r$=s1A0 at qu?]5s24fRrPe`UqoJ`Xs2tAbs31Mfs3CYj
+s3Uens3gkps&o;(rEK/(s'>YErGqpFs'Yk8s'kq:rFGq>rFZ(Bs(M at Fs(_RLs(q^Ps).jTs(q^J
+s(). at s(;:Ds(VLJs(hXNs)%dRs)7pVrGh^Ts)\3_s)S-`s*4Qhs*F]lqgAEjs*=Whqfi'bs*F]m
+s*juqnM0^'s-WhOl^.F8rL3\SrLE\Ss.97_rLj%]rM'7crM9=eqkj+cs/=iSs02O+s/c1"rMoao
+rMT[ms/#aks.fUgrLs7arLa+]q472KpRC]AjdH(7rL*PMc2NFsr;_EKZi>O~>
+JcFm4rrD$Xr;_EKJcC<$JcG-;WIFaEd=2*Ms#'g9s#^6Ds$6TNs$QfSs$crUs$Qf[s%WMgs%iYl
+s&/krrDrl!rEB/(s'5S0s'G_4s'l"<s(). at s(;:Ds(MFHs(hXNs)%dRrGV^Ts)J!Xs)\-\rH8-Z
+q/tkDrHIf2pOE!fl$qZ at qg\Wrqgn]rrIOp!s+C?*s+^Q0s,6o7s+gW1oo&j2s-*JMs.'+^s.]Od
+s.B=\s-NbMs,d8>rJUE/rJgc9s,[2As,m>ErKI8Ds,[,=s,I&;s,6i5rJCQ1rJ1?+s+gW1s,$c5
+s,6i7q2P91s,6o7rJCK/rJ1?+qh=p#pOi?rpOi3lo7?dhL&_)OJcE(VJ,~>
+JcFm4rrD$Xr;_EKJcC<$JcG-;WIFaEd=1Neq\ZF<rrCdVnM0bUrttJJo, at KFr>P\Tq],PTq&]PX
+ruh7`s!%Cds!7Ukq'Z1js!dsts""+#s"==*s"aU3s"sa1s"j>+s,[2Ds-WhVs.KCds.KCas-s%T
+s-3OMs#g<Bq)S=3q)A=3q`"O5s"j[0s"OI+s"47%s""+!s!dsrs!Rals!@Uhs!@[lr?qUnq^MIn
+s!dgns!Rgnr?_Cfr?M=dr?;%\r?(tZqh+d!pOi3lo7?dhL&_)OJcE(VJ,~>
+JcFm4rrD$Xr;_EKJcC<$JcG-;s5O(:s5*e2s4[M)s3q"os2tA\s2"`Js1/0=s0Ma.s/Q*soqhVa
+s/5mss/Z1$s/uC*s02O.s0Ma4s0_m8s0r$=s1A0 at qu?]5s24fRrPe`UqoJ`Xs2tAbs31Mfs3CYj
+s3Uens3gkps&o;(rEK/(s'>YErGqpFs'Yk8s'kq:rFGq>rFZ(Bs(M at Fs(_RLs(q^Ps).jTs(q^J
+s(). at s(;:Ds(VLJs(hXNs)%dRs)7pVrGh^Ts)\3_s)S-`s*4Qhs*F]lqgAEjs*=Whqfi'bs*F]m
+s*juqnM0^'s-WhOl^.F8rL3\SrLE\Ss.97_rLj%]rM'7crM9=eqkj+cs/=iSs02O+s/c1"rMoao
+rMT[ms/#aks.fUgrLs7arLa+]q472KpRC]AjdH(7rL*PMc2NFsr;_EKZi>O~>
+JcFm4rrD$Xr;_EKJcC<$JcG-;WIFaEd=2*Ms#'g9s#^6Ds$6TNs$QfSs$crUs$Qf[s%WMgs%iYl
+s&/krrDrl!rEB/(s'5S0s'G_4s'l"<s(). at s(;:Ds(MFHs(hXNs)%dRrGV^Ts)J!Xs)\-\rH8-Z
+q/tkDrHIf2pOE!fl$qZ at qg\Wrqgn]rrIOp!s+C?*s+^Q0s,6o7s+gW1oo&j2s-*JMs.'+^s.]Od
+s.B=\s-NbMs,d8>rJUE/rJgc9s,[2As,m>ErKI8Ds,[,=s,I&;s,6i5rJCQ1rJ1?+s+gW1s,$c5
+s,6i7q2P91s,6o7rJCK/rJ1?+qh=p#pOi?rpOi3lo7?dhL&_)OJcE(VJ,~>
+JcFm4rrCmTr;_EKJcC<$JcG?AWIFaEd=1Neq\Z@:rrCjXnM0DKq&8oFruD%Zru_7br?V7ds!.Oe
+s!%Ifs!7Ohs!Iaor at .arq^hb#s"j[5rAag;s#U0As#p<Fs#pCCs,?u9s,I&?s-!8Cs-<VPs.97a
+s.]Ogs.THrs&f;#s%`Scs$ZlOrBC*Aq)nU>s#g0?s#9s8s"j[1s"XO-s"=='r@@mts!dsrs!dsu
+q(2Otr at e1's"47%s""$tr at .aps!Rgnr?_Cfr?M7bq]Yn\r?(tZnV$^jq1A3hrIBJ!r;_EK\,Us~>
+JcFm4rrCmTr;_EKJcC<$JcG?As5F"9s5*e2s4[M)s3q"os2k;Zs1nZIs1&*:s0D[-s/Q*rnYQ2^
+s/Z1$s/uC*s02O.s0Ma4s0_m8s0r$=rO`$@qu?]4s2+fRrP\`Us2Y#Xs2k;`s2k;`s3(Gds3:Sh
+s3L_ls3^kprR:dLs'#G,qcs#(rGqpZs'Pe6s'bq:rF>k<s(2. at s(D:Ds(VLJrG2FLs).jTs)A!X
+s)S-\s(_RFs(;:Es(_RLs(q^Ps).jTs)A!XrGqjXs)e9`s*"E`rHS?fs*F]ls*X]ls*OWhs*Xiq
+s+(-$s+Bhrop>39nX9EGqj[VUqjm\Ws.B=arLs7cqkO+crMBOkor%beql/QRs1/0>s0hs8s0Ma1
+s0)I*s/l=&rN#mss/H$ss/5mos/#aks.fUfoq22SpRV&KopbWCh3n5/ci/Lqr;_EK\,Us~>
+JcFm4rrCmTr;_EKJcC<$JcG?AWIFaEd=2*Os#0m;s#^6Fs$?ZPq*b6Ms%NGes%`Sjs&&eps&Aqt
+rE0)&s'#G,s'5S0s'G_4s'Ye7s()(>s(D at Fs(VLJs(hXNs)%dRs)7pVs)J'Zs)\3^qfVj\s)IFL
+pNQR\s*=/6omcjfl[Sqbs+13&s+L3&s+UK*on!'nrIb-'rIt9)s+^Q1s,I&=rK$o=s-!DHs-*JF
+s,[2=s,6o:s,d8Dqih&Fs-`nYs.TIes.fUfs.B=^s-s%Ts-*JErJgc9q2bQ;s,m>Gs-<PIs-<VN
+s-<VJs,m>Cs,[2?s,I&;rJU]5s,$c3s,-i8rJgc9s,[&>s,d8As,Qu9rJ^c7s,-c3rJ:E-rJ(3'
+q1S^!nV$^jq1A3hrIBJ!r;_EK\,Us~>
+JcFm4rrCmTr;_EKJcC<$JcG?AWIFaEd=1Neq\Z@:rrCjXnM0DKq&8oFruD%Zru_7br?V7ds!.Oe
+s!%Ifs!7Ohs!Iaor at .arq^hb#s"j[5rAag;s#U0As#p<Fs#pCCs,?u9s,I&?s-!8Cs-<VPs.97a
+s.]Ogs.THrs&f;#s%`Scs$ZlOrBC*Aq)nU>s#g0?s#9s8s"j[1s"XO-s"=='r@@mts!dsrs!dsu
+q(2Otr at e1's"47%s""$tr at .aps!Rgnr?_Cfr?M7bq]Yn\r?(tZnV$^jq1A3hrIBJ!r;_EK\,Us~>
+JcFm4rrCmTr;_EKJcC<$JcG?As5F"9s5*e2s4[M)s3q"os2k;Zs1nZIs1&*:s0D[-s/Q*rnYQ2^
+s/Z1$s/uC*s02O.s0Ma4s0_m8s0r$=rO`$@qu?]4s2+fRrP\`Us2Y#Xs2k;`s2k;`s3(Gds3:Sh
+s3L_ls3^kprR:dLs'#G,qcs#(rGqpZs'Pe6s'bq:rF>k<s(2. at s(D:Ds(VLJrG2FLs).jTs)A!X
+s)S-\s(_RFs(;:Es(_RLs(q^Ps).jTs)A!XrGqjXs)e9`s*"E`rHS?fs*F]ls*X]ls*OWhs*Xiq
+s+(-$s+Bhrop>39nX9EGqj[VUqjm\Ws.B=arLs7cqkO+crMBOkor%beql/QRs1/0>s0hs8s0Ma1
+s0)I*s/l=&rN#mss/H$ss/5mos/#aks.fUfoq22SpRV&KopbWCh3n5/ci/Lqr;_EK\,Us~>
+JcFm4rrCmTr;_EKJcC<$JcG?AWIFaEd=2*Os#0m;s#^6Fs$?ZPq*b6Ms%NGes%`Sjs&&eps&Aqt
+rE0)&s'#G,s'5S0s'G_4s'Ye7s()(>s(D at Fs(VLJs(hXNs)%dRs)7pVs)J'Zs)\3^qfVj\s)IFL
+pNQR\s*=/6omcjfl[Sqbs+13&s+L3&s+UK*on!'nrIb-'rIt9)s+^Q1s,I&=rK$o=s-!DHs-*JF
+s,[2=s,6o:s,d8Dqih&Fs-`nYs.TIes.fUfs.B=^s-s%Ts-*JErJgc9q2bQ;s,m>Gs-<PIs-<VN
+s-<VJs,m>Cs,[2?s,I&;rJU]5s,$c3s,-i8rJgc9s,[&>s,d8As,Qu9rJ^c7s,-c3rJ:E-rJ(3'
+q1S^!nV$^jq1A3hrIBJ!r;_EK\,Us~>
+JcFm4rrCaPr;_EKJcC<$JcGQGWIFaEdsgZer>;F8rrCpZrsA9Omhtp>q]#DPru:tXruM+]ruqCd
+s!7Uls!dsts"+1%r at e+#s"47's"FC+s"XO/q(r%-s#9s?s$-NMs$m#[s%EAas%*0Ws-E\Ls,m>B
+s,d8Ds-<VNs-`hTs.B=bs.fO$s'G_1s'#G)s&B"ps%EA\s$Q`OrB^BIs$H`Rs$m#Vs$$HEs#g<C
+s#L*<s#'g4s"aU/s"OI+r@\+(s"XO0s#'g8rAag;s#9s8s"aU.s"FC)s"47%s""$ts!dsrs!Rgn
+s!@Ofr?M1`q]Yt^q&fEcs+U3#qh+]ron!!jJcGcMr;_EK]DmB~>
+JcFm4rrCaPr;_EKJcC<$JcGQGs5F"8s5*e2s4[M)s3q"ns2b5Xs1eTGs0r$8s02O*s/Q*rnYQ8_
+s/5mss/c7&s/uC*s0;U0rNuU4s0r$=s18*>qu?]3s2"`Ps24lTs2P)Zs2b/\s2tAbs31Mfs2tAb
+s31Mgs3L_ls3^kps3q!Ns'#G,rET5*rEfMEs)\3IrF#Y6s'kq:s(). at s(;4Bs(MFHrG)@Js(q^P
+s).jTs)@pVs)\3^s)n?bs)S-Ss(hXNs)%dRs)7jUrGqpZs)e-\s*"E`s*4Kfs*F]ls*XiprI4]n
+s*juus+1-#s+C=Xo.g!+nX/j7s-ihSs.&tWs.97_s.K=as.]Ies.o[krMKOks/>mqs/PUij8T"h
+rOVs<s0r$:s0_m5s0;O+s/uC(s/c7$s/Q$ss/5mls.TCan"9QMo:>iMo:,KCh3lOeJcGcMr;_EK
+]DmB~>
+JcFm4rrCaPr;_EKJcC<$JcGQGWIFaEdsh<Ls"sa7s#L*As$6TMqa:BOs$QZXs%`Sjs&&eprDiet
+s&f;)s',M.s'G_4qdBG4s'l"<s(). at s(;:Ds(VLJs(hXNs)%dRs)7pVs)J'Zs)e3^pNHRVq0)FT
+pNZX^s7Q!_nULRfq1&'fs*suts+13&s+LE,s+gW2s,-i7s,?u;s,?u6rJ19+rJCQ3s,$c3s+gW1
+s,6o;s-!DIs-WhVrLNtWs-WhPs-3PGs,[2As-!DIs-NbRrL<hZs.T=bs.TIbs.97\s-itSs-*DB
+rK-u?rK at 2Gs-WhUs-itTs-N\Ps-NbNs-*JFs,d8As,R,=s,?u;s,[2Bs-*JJs-NbQrL*\Qs-E\L
+s-!DEs,d8ArJpi9rJ^c7s,-i5qhY3+qhG!%qh4p#q1Sd%pOrErq1A9jqga7ts8W#tJcE@^J,~>
+JcFm4rrCaPr;_EKJcC<$JcGQGWIFaEdsgZer>;F8rrCpZrsA9Omhtp>q]#DPru:tXruM+]ruqCd
+s!7Uls!dsts"+1%r at e+#s"47's"FC+s"XO/q(r%-s#9s?s$-NMs$m#[s%EAas%*0Ws-E\Ls,m>B
+s,d8Ds-<VNs-`hTs.B=bs.fO$s'G_1s'#G)s&B"ps%EA\s$Q`OrB^BIs$H`Rs$m#Vs$$HEs#g<C
+s#L*<s#'g4s"aU/s"OI+r@\+(s"XO0s#'g8rAag;s#9s8s"aU.s"FC)s"47%s""$ts!dsrs!Rgn
+s!@Ofr?M1`q]Yt^q&fEcs+U3#qh+]ron!!jJcGcMr;_EK]DmB~>
+JcFm4rrCaPr;_EKJcC<$JcGQGs5F"8s5*e2s4[M)s3q"ns2b5Xs1eTGs0r$8s02O*s/Q*rnYQ8_
+s/5mss/c7&s/uC*s0;U0rNuU4s0r$=s18*>qu?]3s2"`Ps24lTs2P)Zs2b/\s2tAbs31Mfs2tAb
+s31Mgs3L_ls3^kps3q!Ns'#G,rET5*rEfMEs)\3IrF#Y6s'kq:s(). at s(;4Bs(MFHrG)@Js(q^P
+s).jTs)@pVs)\3^s)n?bs)S-Ss(hXNs)%dRs)7jUrGqpZs)e-\s*"E`s*4Kfs*F]ls*XiprI4]n
+s*juus+1-#s+C=Xo.g!+nX/j7s-ihSs.&tWs.97_s.K=as.]Ies.o[krMKOks/>mqs/PUij8T"h
+rOVs<s0r$:s0_m5s0;O+s/uC(s/c7$s/Q$ss/5mls.TCan"9QMo:>iMo:,KCh3lOeJcGcMr;_EK
+]DmB~>
+JcFm4rrCaPr;_EKJcC<$JcGQGWIFaEdsh<Ls"sa7s#L*As$6TMqa:BOs$QZXs%`Sjs&&eprDiet
+s&f;)s',M.s'G_4qdBG4s'l"<s(). at s(;:Ds(VLJs(hXNs)%dRs)7pVs)J'Zs)e3^pNHRVq0)FT
+pNZX^s7Q!_nULRfq1&'fs*suts+13&s+LE,s+gW2s,-i7s,?u;s,?u6rJ19+rJCQ3s,$c3s+gW1
+s,6o;s-!DIs-WhVrLNtWs-WhPs-3PGs,[2As-!DIs-NbRrL<hZs.T=bs.TIbs.97\s-itSs-*DB
+rK-u?rK at 2Gs-WhUs-itTs-N\Ps-NbNs-*JFs,d8As,R,=s,?u;s,[2Bs-*JJs-NbQrL*\Qs-E\L
+s-!DEs,d8ArJpi9rJ^c7s,-i5qhY3+qhG!%qh4p#q1Sd%pOrErq1A9jqga7ts8W#tJcE@^J,~>
+JcFm4rrCULr;_EKJcC<$JcGcMWIFaEdsg`gq\Z.4rrCpZnM0POq\o>NpDj,Pru_7`s!%Igs!Ian
+s!dsus"47(s"XO0s#'g8s#C$:s#9s;rAs[5s#g<Hs$ZlWs%EAfs.]Oes.KC_s-s%Us-EVIs-<VN
+s-itXs.97as(D4?s'u(:s'G_1s'#G(s&K(rs%NG`s%!#Ws$cr_s%35]s$m#Ws$ZlRs$6TMs$-NG
+s#U0=s#'g5s#'g7s#9s;s#L*@s#g<Fs$-NLs$6TJs#g<As#9s7s"XI*s"=='s"+1#r at 7grs![mo
+s!@Uhq'5h^q]Yt^ruq1\onE3pqh+]rnUZ8kqu?NnJcERdJ,~>
+JcFm4rrCULr;_EKJcC<$JcGcMs5F"8s5!_1s4[M)s3gqls2Y/Vs1\NEs0hs4rN6+!s/,=_s/,go
+s/H%"s/l=(s0)I,rNcI0s0_m8s1&$=rO_t,s1eTLs2"`Qs2=rVs2Y)Zs2k;`s3(Gds3:GdrQkMj
+s3^kps3q!Ns'#G,s'5S0rEfG0s)\-\qdBG4s'kq:s(). at s(;4Bs(MFHs(_LJs(q^Ps).jTrG_dV
+s)S-\s)e9arHJ3bs*"E^s)@pVs)S-\s)n?bs*+Kfs*+Ebs)\3bs*=WjrHnQls*aorrI=crrIOp!
+s+Bhrq3U]?nX9?ErL<hWqjmbYrLa+`s.]Ogs.oUis/,ams/>mqs/Q+"s/c1$ql]n$j8T(rs1nZK
+s1SBDqn)m=s1&*<s0hs7s0Ma1s02I*s/l=#s.oOerM'7as.JhQq4@>OrLEDIqjQ?/ci/Lqqu?Nn
+JcERdJ,~>
+JcFm4rrCULr;_EKJcC<$JcGcMWIFaEdsh<Ns#'g9s#U0Bs$6HJs$crUs%*)`s%WMgs%r_ms&8qs
+s&K)"s&]5&s'#G,s'>Y2s'Pe6s'bk8s'u"<s(24Bs(D at Fs(VLKs(q^Ps)7pVs)J!Xs)\3^s)n-\
+rHJ9^olp"Pq0DN0l$r/Ps+13%s+C?)s+^Q/s,$c5rJU]7s,I&=s,[2Aqi:];s,R,=s,?o7s,-i8
+s,d8Es-E\Rs.01as.TIcs.01Zs-WhPrKI8Hs-NbSs.'+\rLs7cs.o[ks.o[hs.KC`s.01Zs-itS
+s-*JFrK@,Cs.'+Ws.'%[s.97]s-s%Ys-s%Vs-NbNs-*JGs-*JIs-<VMs-WhSs-s%Zs.B=bs.KC`
+s.'+Ws-NbNs-*DDs,d8As,R&;rJ^c7s,-i5rJ:9)rJ(3's+K]lq1SWtq1A-fJcGWIqZ)3I_>f#~>
+JcFm4rrCULr;_EKJcC<$JcGcMWIFaEdsg`gq\Z.4rrCpZnM0POq\o>NpDj,Pru_7`s!%Igs!Ian
+s!dsus"47(s"XO0s#'g8s#C$:s#9s;rAs[5s#g<Hs$ZlWs%EAfs.]Oes.KC_s-s%Us-EVIs-<VN
+s-itXs.97as(D4?s'u(:s'G_1s'#G(s&K(rs%NG`s%!#Ws$cr_s%35]s$m#Ws$ZlRs$6TMs$-NG
+s#U0=s#'g5s#'g7s#9s;s#L*@s#g<Fs$-NLs$6TJs#g<As#9s7s"XI*s"=='s"+1#r at 7grs![mo
+s!@Uhq'5h^q]Yt^ruq1\onE3pqh+]rnUZ8kqu?NnJcERdJ,~>
+JcFm4rrCULr;_EKJcC<$JcGcMs5F"8s5!_1s4[M)s3gqls2Y/Vs1\NEs0hs4rN6+!s/,=_s/,go
+s/H%"s/l=(s0)I,rNcI0s0_m8s1&$=rO_t,s1eTLs2"`Qs2=rVs2Y)Zs2k;`s3(Gds3:GdrQkMj
+s3^kps3q!Ns'#G,s'5S0rEfG0s)\-\qdBG4s'kq:s(). at s(;4Bs(MFHs(_LJs(q^Ps).jTrG_dV
+s)S-\s)e9arHJ3bs*"E^s)@pVs)S-\s)n?bs*+Kfs*+Ebs)\3bs*=WjrHnQls*aorrI=crrIOp!
+s+Bhrq3U]?nX9?ErL<hWqjmbYrLa+`s.]Ogs.oUis/,ams/>mqs/Q+"s/c1$ql]n$j8T(rs1nZK
+s1SBDqn)m=s1&*<s0hs7s0Ma1s02I*s/l=#s.oOerM'7as.JhQq4@>OrLEDIqjQ?/ci/Lqqu?Nn
+JcERdJ,~>
+JcFm4rrCULr;_EKJcC<$JcGcMWIFaEdsh<Ns#'g9s#U0Bs$6HJs$crUs%*)`s%WMgs%r_ms&8qs
+s&K)"s&]5&s'#G,s'>Y2s'Pe6s'bk8s'u"<s(24Bs(D at Fs(VLKs(q^Ps)7pVs)J!Xs)\3^s)n-\
+rHJ9^olp"Pq0DN0l$r/Ps+13%s+C?)s+^Q/s,$c5rJU]7s,I&=s,[2Aqi:];s,R,=s,?o7s,-i8
+s,d8Es-E\Rs.01as.TIcs.01Zs-WhPrKI8Hs-NbSs.'+\rLs7cs.o[ks.o[hs.KC`s.01Zs-itS
+s-*JFrK@,Cs.'+Ws.'%[s.97]s-s%Ys-s%Vs-NbNs-*JGs-*JIs-<VMs-WhSs-s%Zs.B=bs.KC`
+s.'+Ws-NbNs-*DDs,d8As,R&;rJ^c7s,-i5rJ:9)rJ(3's+K]lq1SWtq1A-fJcGWIqZ)3I_>f#~>
+JcFm4rrCIHqZ)3IJcC<$L]=?&qu>2qm0*;'UBLSsi<9/eo.g7^obmQDq]#>NruM%Zru_7`ruqCe
+s!@[ms!dsus"47(s"XO/s#'g8s#L*?s#g<Es$-NKofrIAs$crYs%WN`rM9IfrLs7`s.01Zs-WhP
+s-WhTs.'+.s)e9`s)%dPs(hXKs(;:As'bq7s'5S-s&f;$s&&ejs%EAas%`Sps%r_hrD!;cs%<;]
+s$m#Wq*OsErBgNOs$ZlUs%!)Ys$ZlSs$H`Ns#pBDs#C$9s"j[/s"FC)s"41#s""$ts![mpr?_Ih
+q'5\Zq'5\ZqhG!%q1S^!pO_pdJcGKEr;_EK`W(G~>
+JcFm4rrCIHqZ)3IJcC<$L]@D*s4..us4IA*s4@:us31M`s2"`Ks1/0<s0;U*rMfgonYQ8_s/5mq
+s/H%#s/uC*s02O.s0D[2s0Vg7s0r$=rOW$@qu?]6s1nZNs24lTs2G#Xs2Y/\s2k;`s3(Abs3:Sh
+rQkGhs3^kps&f;(s'#G,s'5S0rEfM2s'Y_HpL=)2s(). at rFZ(Bs(MFHs(_RLrG;LNs).jTrG_dV
+s)S-\s)e9`s*"Eds*4QhrHeKgs*"EarH8-`s*4Qhs*F]js*4Kds)\3bs*=Wjs*O]lpON-lrIY%U
+o.g-/nX/p9rL3\SrLEhWs.91]s.TIes.fUis/#ams/5mqrMfgsqlBaus/l=(s0)I,rNZC.jo5;+
+s3:Sds2Y/Ys24lPs1eTJrOr6DrO`*?s1&*<s0_m5s0)I's/>mos/,aks.oOerM'7as.JhQq4 at JS
+rLEDIq3p3/ci/Lqp](0lJcE^hJ,~>
+JcFm4rrCIHqZ)3IJcC<$L]=?&qu>2qs""+)s#0m;s#^6Ds$-BIs$clYqbI/es%r_ms&8qss&K)"
+s&]5's',M.s'>Y2s'Pe6s'bk8s'u"<s(24Bs(D at GrG2FMrGMRQs)J!Ys)e9`pNHLZs)S'^o6BkP
+s7Z'`s*j9`o76Xfs+:9's+UK-s+gQ0s,-i7s,?u;s,R&=s,d8Cs-*JGrK7,As,[2?s,I&=s,m>G
+s-WhVrM9IfrLs7`s.01Zs-WhPs-WhTs.'+\s.o[ns.fUirMKUks.fUfs.B=^s.'+Xs-`nRrKI8G
+s.'+fs/#ais.fUjs.o[hs.TIcs.B1Zqk!h[rLj1as.]Ogs/#aks.fUgs.TIbs.01Zs-WhPs-3PH
+s,m>Cs,[,=rJgi9s,6o7s,$]1q1nd#q1nQrqh=j!rIairnUZ8kp](0lJcE^hJ,~>
+JcFm4rrCIHqZ)3IJcC<$L]=?&qu>2qm0*;'UBLSsi<9/eo.g7^obmQDq]#>NruM%Zru_7`ruqCe
+s!@[ms!dsus"47(s"XO/s#'g8s#L*?s#g<Es$-NKofrIAs$crYs%WN`rM9IfrLs7`s.01Zs-WhP
+s-WhTs.'+.s)e9`s)%dPs(hXKs(;:As'bq7s'5S-s&f;$s&&ejs%EAas%`Sps%r_hrD!;cs%<;]
+s$m#Wq*OsErBgNOs$ZlUs%!)Ys$ZlSs$H`Ns#pBDs#C$9s"j[/s"FC)s"41#s""$ts![mpr?_Ih
+q'5\Zq'5\ZqhG!%q1S^!pO_pdJcGKEr;_EK`W(G~>
+JcFm4rrCIHqZ)3IJcC<$L]@D*s4..us4IA*s4@:us31M`s2"`Ks1/0<s0;U*rMfgonYQ8_s/5mq
+s/H%#s/uC*s02O.s0D[2s0Vg7s0r$=rOW$@qu?]6s1nZNs24lTs2G#Xs2Y/\s2k;`s3(Abs3:Sh
+rQkGhs3^kps&f;(s'#G,s'5S0rEfM2s'Y_HpL=)2s(). at rFZ(Bs(MFHs(_RLrG;LNs).jTrG_dV
+s)S-\s)e9`s*"Eds*4QhrHeKgs*"EarH8-`s*4Qhs*F]js*4Kds)\3bs*=Wjs*O]lpON-lrIY%U
+o.g-/nX/p9rL3\SrLEhWs.91]s.TIes.fUis/#ams/5mqrMfgsqlBaus/l=(s0)I,rNZC.jo5;+
+s3:Sds2Y/Ys24lPs1eTJrOr6DrO`*?s1&*<s0_m5s0)I's/>mos/,aks.oOerM'7as.JhQq4 at JS
+rLEDIq3p3/ci/Lqp](0lJcE^hJ,~>
+JcFm4rrCIHqZ)3IJcC<$L]=?&qu>2qs""+)s#0m;s#^6Ds$-BIs$clYqbI/es%r_ms&8qss&K)"
+s&]5's',M.s'>Y2s'Pe6s'bk8s'u"<s(24Bs(D at GrG2FMrGMRQs)J!Ys)e9`pNHLZs)S'^o6BkP
+s7Z'`s*j9`o76Xfs+:9's+UK-s+gQ0s,-i7s,?u;s,R&=s,d8Cs-*JGrK7,As,[2?s,I&=s,m>G
+s-WhVrM9IfrLs7`s.01Zs-WhPs-WhTs.'+\s.o[ns.fUirMKUks.fUfs.B=^s.'+Xs-`nRrKI8G
+s.'+fs/#ais.fUjs.o[hs.TIcs.B1Zqk!h[rLj1as.]Ogs/#aks.fUgs.TIbs.01Zs-WhPs-3PH
+s,m>Cs,[,=rJgi9s,6o7s,$]1q1nd#q1nQrqh=j!rIairnUZ8kp](0lJcE^hJ,~>
+JcFm4rrC7Br;_EKJcC<$MuTi,qu>2qm0*;'T`kAqiro;eoeH=\pDNoJq]#DPr>knZr?)%^ruq=b
+s!7Uks![mss"+1's"OI/s#'g7s#C$>s#pBGs$H`RrBp6Gs%*0Us-it^s/H$qs.oUfrLs7`s.01Y
+s)n?`s)\3fs+^Q's*"E_s)J'Ws(hXIs().=s'Yk4s',M)s&&ehs$m#ms'u(9s',M*s&K(ts&/el
+qbQf[s%iYks%WMbs%*/[s$m#Vs$QfQs$-NGs#U0=s#'g2s"OI+s"=='s"++!s!n$ts![mor?_Cf
+r?M=fr?_Ijr?qUlr?_Ihs!.IdqhG!%qh4j!nUgRfJcG?Ar;_EKao?k~>
+JcFm4rrC7Br;_EKJcC<$MuWh-s3q"rs3^kms31Mas2G#Ss1\NEs0hs5s/c7!s/5mon"p&]s/5mq
+s/c7&s0)I,s0;U0s0Ma4s0_m9s1&*>rOVn+pV[$Ls2P#Xs2b5_rQG5bs3:ShrQkMjrR(Yns&f5&
+s'#G,s'5S0s'G_4s'YkLs*"EdrFGk<q.0M:rFZ(Bs(MFHs(_LJs(q^Ps).dRs)A!Xs)S-\s)e9`
+s*"?bs*4Qhs*F]ls*X]jq0`3js*Ocls*=Whs)e9cs*=Wjo7?plrIOp!r<`-Oqj6oAnX9EGrL<bU
+rLNnYs.B=as.TIfs.o[ks/,gos/>ssqlBaurN6%$s0)I,s0;U0s0Lnfs4IA%rR(Yls3L_hs2tA^
+s2G#Us2"`NrP/<Es1A<?s0D[-s/l=&s/Z1"s/H$srMT[mqka7erM0=crLrhUqk*bWrLNhUnXK-=
+kF'`sJcG?Ar;_EKao?k~>
+JcFm4rrC7Br;_EKJcC<$MuTi,qu>2qs"47,s#9s=s#^6Es$-NLrBgBSqb@)ds%r_ms&/krs&K)"
+s&f;(s',G-s'G_4s'Yk8rF5e:rFGq>s(D at Fs(VLJs(hXNs)%dRs)7pVrGqp[qfVj\pNQXYpNZ.P
+s*F_=s7c3cqgS!`q1/3jq1AX!s+UK-s+gW1s,$c5s,6i7s,I&=s,[2As-3PKq31iAs,m8As-*JK
+s-it^s/H$qs.oUfrLs7`s.0+Ws.'+]s/>t)s/l=!s/,ams/#ajs.TIcs.97]s-s%Vs-WhPs-<Vb
+s0Vg2s/uC's/Q*uql'Iks/>mrqlB[ss/l=(s/Q*ss/,gls.fUgs.TIcs.97\s-`nRs-<VIrK7,A
+s,[2?rJgi9s,6o7s,$]1q1o!+rJCQ3rJU]5rJCQ1s+g?'qh=p#qh+Ejq14+soDeahJcEjlJ,~>
+JcFm4rrC7Br;_EKJcC<$MuTi,qu>2qm0*;'T`kAqiro;eoeH=\pDNoJq]#DPr>knZr?)%^ruq=b
+s!7Uks![mss"+1's"OI/s#'g7s#C$>s#pBGs$H`RrBp6Gs%*0Us-it^s/H$qs.oUfrLs7`s.01Y
+s)n?`s)\3fs+^Q's*"E_s)J'Ws(hXIs().=s'Yk4s',M)s&&ehs$m#ms'u(9s',M*s&K(ts&/el
+qbQf[s%iYks%WMbs%*/[s$m#Vs$QfQs$-NGs#U0=s#'g2s"OI+s"=='s"++!s!n$ts![mor?_Cf
+r?M=fr?_Ijr?qUlr?_Ihs!.IdqhG!%qh4j!nUgRfJcG?Ar;_EKao?k~>
+JcFm4rrC7Br;_EKJcC<$MuWh-s3q"rs3^kms31Mas2G#Ss1\NEs0hs5s/c7!s/5mon"p&]s/5mq
+s/c7&s0)I,s0;U0s0Ma4s0_m9s1&*>rOVn+pV[$Ls2P#Xs2b5_rQG5bs3:ShrQkMjrR(Yns&f5&
+s'#G,s'5S0s'G_4s'YkLs*"EdrFGk<q.0M:rFZ(Bs(MFHs(_LJs(q^Ps).dRs)A!Xs)S-\s)e9`
+s*"?bs*4Qhs*F]ls*X]jq0`3js*Ocls*=Whs)e9cs*=Wjo7?plrIOp!r<`-Oqj6oAnX9EGrL<bU
+rLNnYs.B=as.TIfs.o[ks/,gos/>ssqlBaurN6%$s0)I,s0;U0s0Lnfs4IA%rR(Yls3L_hs2tA^
+s2G#Us2"`NrP/<Es1A<?s0D[-s/l=&s/Z1"s/H$srMT[mqka7erM0=crLrhUqk*bWrLNhUnXK-=
+kF'`sJcG?Ar;_EKao?k~>
+JcFm4rrC7Br;_EKJcC<$MuTi,qu>2qs"47,s#9s=s#^6Es$-NLrBgBSqb@)ds%r_ms&/krs&K)"
+s&f;(s',G-s'G_4s'Yk8rF5e:rFGq>s(D at Fs(VLJs(hXNs)%dRs)7pVrGqp[qfVj\pNQXYpNZ.P
+s*F_=s7c3cqgS!`q1/3jq1AX!s+UK-s+gW1s,$c5s,6i7s,I&=s,[2As-3PKq31iAs,m8As-*JK
+s-it^s/H$qs.oUfrLs7`s.0+Ws.'+]s/>t)s/l=!s/,ams/#ajs.TIcs.97]s-s%Vs-WhPs-<Vb
+s0Vg2s/uC's/Q*uql'Iks/>mrqlB[ss/l=(s/Q*ss/,gls.fUgs.TIcs.97\s-`nRs-<VIrK7,A
+s,[2?rJgi9s,6o7s,$]1q1o!+rJCQ3rJU]5rJCQ1s+g?'qh=p#qh+Ejq14+soDeahJcEjlJ,~>
+JcFm4rrC+>r;_EKJcC<$OoMJ2qu>2qmf`M)SHSrmiroAgo.g+Zq&0,Lq]#DPr>knZru_7`ruqCd
+r?M=fs!Iaos!n%#s"==+s"aU2s#0m:s#U0Bs$$HKs%<;^s$crWs%!#Ys%36Ts-*JJs-WhZs/Q+"
+s/>sprM0=cs.TICs*Ochs)n?ls-!DAs+UK$rHJ9`s)A!Ss(VLFs'l"1s&/kns'P_Bs)\3Ys(q^K
+s().<s'Pe4rETA,rEB/(s'5S0rEfM-s&T.ss%`Ses%<;^s%!)Ys$ZlSs$?ZKs#g<As#0m6s"XO-
+s"FC(r at It!s!n$ts![mpq^)7is![gqs!dgnr?qUls!@[jr?M=druq>qqh=j!q1J3hqgj=unc/Of
+JcF!pJ,~>
+JcFm4rrC+>r;_EKJcC<$OoPI3s4%(ss3^kms3(G`s2=rRs1\NEs0hs5s/c7!s/#amn"p&]s/5mq
+s/Q+$s/uC*s02O.s0D[3s0_m8s1&*>rOVn+rPJHLs2=rVs2P)Zs2b5^s2tAbs31MfrQbGhs3U_l
+s3gpLrE9/(s',M.rE]G0s)\3^s)n?Ns'u(>s(24Bs(D:DrFc(@s(D at FrFu:Hs(hXNs)%dRrGV^T
+s)J'ZrH&!\s)n?bs*+KfrH\Ehs*OcnomQjhrI=its+13%s*4QonUgRfrIY%Uo.g-/opG?=rL3\S
+s.'%YrLX%]s.KCcs.fUis/#ams/5mqs/H%!s/c7&rN?+&rNQ7*s0Cbcs5!_/s475!qpGGjs3CYh
+s3(Gas2Y/Ys2=rTs1nZEs0Vg4s0DU.s02I*s/l=&s/Z1"s/H$srMT[mqka7erM0Ceo:c,Uqk*hY
+qjm\Um at 3d;l']ruJcG9?r;_EKc2W:~>
+JcFm4rrC+>r;_EKJcC<$OoMJ2qu>2qs"==/s#9s=s#g<Fs$-NKs$HTUq+^lbs%r_ms&8qss&K)#
+s&f;(s',M.s'>Y2s'Pe6s'bk8s'u">rFc.Ds(VLJs(hXNs)%dRs)7pVs)J!Ys)e9`qf_p^q0;p\
+rHR^Tqg/;:oD\W9nUL at bq18Epqh+p%s+UK-s+gW1rJCQ3s,6o9s,I&=s,[2Bs-`nQs-*8Cs-<VK
+s-*JJs-WhZs/Q+"s/>sprM0=cs.TIcs.B=^s.B=ms1\NDs0D[+s/>sss/>sps.o[hs.KCas.01[
+s-itfrOW$Es1SHEs1&*:s0MO,rNZC.s0Ma4s0_m8rODm9s0D[-s/Q*ss/,gms.o[is.]Oes.B=^
+s-s%Us-E\Ls-!DEs,d8ArJpo;s,?u9s,-i5qhY90s,6o;rJg]5rJU]5s,$c3rJ13'qh=j!q1J3h
+qgj=unc/OfJcF!pJ,~>
+JcFm4rrC+>r;_EKJcC<$OoMJ2qu>2qmf`M)SHSrmiroAgo.g+Zq&0,Lq]#DPr>knZru_7`ruqCd
+r?M=fs!Iaos!n%#s"==+s"aU2s#0m:s#U0Bs$$HKs%<;^s$crWs%!#Ys%36Ts-*JJs-WhZs/Q+"
+s/>sprM0=cs.TICs*Ochs)n?ls-!DAs+UK$rHJ9`s)A!Ss(VLFs'l"1s&/kns'P_Bs)\3Ys(q^K
+s().<s'Pe4rETA,rEB/(s'5S0rEfM-s&T.ss%`Ses%<;^s%!)Ys$ZlSs$?ZKs#g<As#0m6s"XO-
+s"FC(r at It!s!n$ts![mpq^)7is![gqs!dgnr?qUls!@[jr?M=druq>qqh=j!q1J3hqgj=unc/Of
+JcF!pJ,~>
+JcFm4rrC+>r;_EKJcC<$OoPI3s4%(ss3^kms3(G`s2=rRs1\NEs0hs5s/c7!s/#amn"p&]s/5mq
+s/Q+$s/uC*s02O.s0D[3s0_m8s1&*>rOVn+rPJHLs2=rVs2P)Zs2b5^s2tAbs31MfrQbGhs3U_l
+s3gpLrE9/(s',M.rE]G0s)\3^s)n?Ns'u(>s(24Bs(D:DrFc(@s(D at FrFu:Hs(hXNs)%dRrGV^T
+s)J'ZrH&!\s)n?bs*+KfrH\Ehs*OcnomQjhrI=its+13%s*4QonUgRfrIY%Uo.g-/opG?=rL3\S
+s.'%YrLX%]s.KCcs.fUis/#ams/5mqs/H%!s/c7&rN?+&rNQ7*s0Cbcs5!_/s475!qpGGjs3CYh
+s3(Gas2Y/Ys2=rTs1nZEs0Vg4s0DU.s02I*s/l=&s/Z1"s/H$srMT[mqka7erM0Ceo:c,Uqk*hY
+qjm\Um at 3d;l']ruJcG9?r;_EKc2W:~>
+JcFm4rrC+>r;_EKJcC<$OoMJ2qu>2qs"==/s#9s=s#g<Fs$-NKs$HTUq+^lbs%r_ms&8qss&K)#
+s&f;(s',M.s'>Y2s'Pe6s'bk8s'u">rFc.Ds(VLJs(hXNs)%dRs)7pVs)J!Ys)e9`qf_p^q0;p\
+rHR^Tqg/;:oD\W9nUL at bq18Epqh+p%s+UK-s+gW1rJCQ3s,6o9s,I&=s,[2Bs-`nQs-*8Cs-<VK
+s-*JJs-WhZs/Q+"s/>sprM0=cs.TIcs.B=^s.B=ms1\NDs0D[+s/>sss/>sps.o[hs.KCas.01[
+s-itfrOW$Es1SHEs1&*:s0MO,rNZC.s0Ma4s0_m8rODm9s0D[-s/Q*ss/,gms.o[is.]Oes.B=^
+s-s%Us-E\Ls-!DEs,d8ArJpo;s,?u9s,-i5qhY90s,6o;rJg]5rJU]5s,$c3rJ13'qh=j!q1J3h
+qgj=unc/OfJcF!pJ,~>
+JcFm4rrBt:r;_EKJcC<$QiF+8qu>8sm0*;'Rfr`kjTPMgoeH=\q&0&Jr>YVRruM+\ru_7`ruqCd
+r?M=fs!@[ls![mss"+1&s"OI.s"sa6s#C$>s#g<Fs$6T]s%iYhqb$l]s-<DGs.B=js02O*s/Q*t
+s/#aks,-i0s+13#s*Xiks+LE<s-WhKs,6o0s*Ocls*"E`s(MF<s',M+s'bq]s.]O^s,R,3s+(,t
+s*=Wfs)S-Ws(hXLs(VLGrFZ(@s(;. at s().;s'5S*s&8qns%NGcs%35]s%!)Ys$crTs$6TJs#^6?
+s#'g3s"XO-r@\+%s"+1#s!dsrs""+(s"F='s"+1#s!mmpr@%[ns!I[js!7Ofr?D2pqh=p#o7QRb
+s+,b$n,N=dJcF-tJ,~>
+JcFm4rrBt:r;_EKJcC<$QiI*9s4%(ss3^kms31Mas2=rQs1SHDs0hs5s/c6ul_XWYs/5mqs/H$u
+s/uC*s02O.s0D[3rO2a8s1&*>s18+-qniBNs2=lTs2P)Zs2b5^s2tAbs31MfrQbGis3^enrE0#$
+rEB5*s'5S0s'G_Hs)e9`s'l"<s(). at s(;:DrFl4FqeH(Ds(MFHs(_RLs(q^PrGMXRs)A!XrGqpZ
+s)e9`rHA3bs*4Qhs*FWjs*XipqgSKnrIFp!rIY'%s*t'$rIXcrqh"cts+:1UoeH?1o9f9?rL3\S
+s.&tWs.97_s.KCcs.]Ogs/#ams/5mqs/H$us/Z1%s/uC*s02O.rNc=,kPkMCs53k4s4mY,s4-kk
+s3L_js3:Ses2tAWqmZU6rO)U2rNlO0rNZC+s/uC(s/c7$s/GsqqksCis/#akrM0=co:c2Wqk*hY
+qjmJOo:,EAl^?0"JcG3=r;_EKdJn^~>
+JcFm4rrBt:r;_EKJcC<$QiF+8qu>8ss""+&s"sa8s#U0Bs$$HIs$6TMs%NGcqb7#as%`Sis%r_n
+s&8qsrDrr#s&oA*s'5M.s'P_4s'l"=s(24BrFc"As(_RLs(q^Ps).jTs)A!Xs)S-\s)e3^s*"?b
+om$LXs*4-\om6T3p&=i;msk4brIOcrqh+d!s+UK-rJ1E/s,$c5s,6i7s,I&=s.97[s-WhOrKR8G
+q3M&Qs/H%&s/l=$s/>sos.o[irM'1_s02O?s2=rNs0r$5s/Q+"s/H$rs/#ajs.TIbs/H%Cs6BXE
+s4I at rs2tA_s2G#Ts1nZJo=P%8s1SHHs1eTHs1/0<s0D[-s/Q*ts/5mns.o[is.]Oes.KC`s.'+W
+s-NbNs-!>Cs,d8As,R,=s,?u9s,-i9s-*JGs,m>Cs,[2?qi1K3s,6o7rJCQ1rJ13'qh=p#o7QRb
+s+,b$n,N=dJcF-tJ,~>
+JcFm4rrBt:r;_EKJcC<$QiF+8qu>8sm0*;'Rfr`kjTPMgoeH=\q&0&Jr>YVRruM+\ru_7`ruqCd
+r?M=fs!@[ls![mss"+1&s"OI.s"sa6s#C$>s#g<Fs$6T]s%iYhqb$l]s-<DGs.B=js02O*s/Q*t
+s/#aks,-i0s+13#s*Xiks+LE<s-WhKs,6o0s*Ocls*"E`s(MF<s',M+s'bq]s.]O^s,R,3s+(,t
+s*=Wfs)S-Ws(hXLs(VLGrFZ(@s(;. at s().;s'5S*s&8qns%NGcs%35]s%!)Ys$crTs$6TJs#^6?
+s#'g3s"XO-r@\+%s"+1#s!dsrs""+(s"F='s"+1#s!mmpr@%[ns!I[js!7Ofr?D2pqh=p#o7QRb
+s+,b$n,N=dJcF-tJ,~>
+JcFm4rrBt:r;_EKJcC<$QiI*9s4%(ss3^kms31Mas2=rQs1SHDs0hs5s/c6ul_XWYs/5mqs/H$u
+s/uC*s02O.s0D[3rO2a8s1&*>s18+-qniBNs2=lTs2P)Zs2b5^s2tAbs31MfrQbGis3^enrE0#$
+rEB5*s'5S0s'G_Hs)e9`s'l"<s(). at s(;:DrFl4FqeH(Ds(MFHs(_RLs(q^PrGMXRs)A!XrGqpZ
+s)e9`rHA3bs*4Qhs*FWjs*XipqgSKnrIFp!rIY'%s*t'$rIXcrqh"cts+:1UoeH?1o9f9?rL3\S
+s.&tWs.97_s.KCcs.]Ogs/#ams/5mqs/H$us/Z1%s/uC*s02O.rNc=,kPkMCs53k4s4mY,s4-kk
+s3L_js3:Ses2tAWqmZU6rO)U2rNlO0rNZC+s/uC(s/c7$s/GsqqksCis/#akrM0=co:c2Wqk*hY
+qjmJOo:,EAl^?0"JcG3=r;_EKdJn^~>
+JcFm4rrBt:r;_EKJcC<$QiF+8qu>8ss""+&s"sa8s#U0Bs$$HIs$6TMs%NGcqb7#as%`Sis%r_n
+s&8qsrDrr#s&oA*s'5M.s'P_4s'l"=s(24BrFc"As(_RLs(q^Ps).jTs)A!Xs)S-\s)e3^s*"?b
+om$LXs*4-\om6T3p&=i;msk4brIOcrqh+d!s+UK-rJ1E/s,$c5s,6i7s,I&=s.97[s-WhOrKR8G
+q3M&Qs/H%&s/l=$s/>sos.o[irM'1_s02O?s2=rNs0r$5s/Q+"s/H$rs/#ajs.TIbs/H%Cs6BXE
+s4I at rs2tA_s2G#Ts1nZJo=P%8s1SHHs1eTHs1/0<s0D[-s/Q*ts/5mns.o[is.]Oes.KC`s.'+W
+s-NbNs-!>Cs,d8As,R,=s,?u9s,-i9s-*JGs,m>Cs,[2?qi1K3s,6o7rJCQ1rJ13'qh=p#o7QRb
+s+,b$n,N=dJcF-tJ,~>
+JcFm4rrBh6r;_EKJcC<$Sc>a>q>],sm0*;'R0<Nik61YgpG)7Wq\oDPq],VVruV1_r?;1br?M=f
+s!@[ls![mts"47's"FC,s"j[4s#C$>s#g<Fs$6T^s&K(ts&&els%NBVqj.8Ts.]Oks0;U0s0)I)
+s/Q*]s,$c.s*t&ts+C?@s-E\Rs.fUbs-E\Hs,$c$s(MFHs)S-es+^Q7s-Whls/uC#s.fU`s,[27
+rIt9(s*t&rs*+Kds)n?`rGqjVs).jPs(MFDs'l"7s&oA$s%r_js%WMds%<;_s%!)Ys$crTs$6TI
+s#U0=s"sa2s"XO-s"FC)s"47-s"jU/s"XO-s"FC)s"47%s""$tr at .[ns!Rgns!@[jr?M7brJ(-%
+qh4Ejon%bpli6n`JcF:#J,~>
+JcFm4rrBh6r;_EKJcC<$ScA`?s4%(ss3Ueks31Mas2=rQs1JBCs0r$6s/c6us/,1[rMKUms/>ss
+s/l=)s02O.s0D[3s0_m8s0r$<rOMb(rPJTPs2=rWs2Y/Ys2Y/\s2k;`s3(Gds3:Shs3L_ls3gkp
+rE9/(s',A(s',M.s'>YGs)e9`s'l"<rFGq>s(;:Ds(MFHs(_RLs(qRLrG;LLs(q^PrGMXRs)A!X
+rGqpZrH/'^s*"EdrHS?fs*F]ls*Xcns*jutrIFitqh"d!s*s?erIXnQpG)W5nX0'=rL3\SrLEhW
+s.91]s.KCds.fUis/,gos/>sts/Z1%s/uC*s02O.rNlC/kPkMEs5F"5s4RA's4@;"p!Nf[s17s8
+rODg8rO2[4rNuO0s0D[/s0)I*s/l=%s/Q$srM][ms/,gms.oIcpS.V[s.K=_rLW\QrLEDIo:#3;
+dJe^sli6n`JcF:#J,~>
+JcFm4rrBh6r;_EKJcC<$Sc>a>q>],ss"+1's"sa8s#U0Bs$$HJrBgNYq+Uf_s%`Sis&&eos&8qs
+s&K#!s&f;)s',M.s'>Y2s'Yk9s'u(>s(24Bs(D:Ds(VLJs(hRLs)%dRs)7pVs)J'Zs)\3^rH8-`
+rHIjXs)\3bqg%^Xs*Oe at rV?3el$rMZs+0iqqh5!'s+^?)s+p]3rJLW5s,?u;s.97`s.01Ys-NbM
+rK[8Gs.KCds/5n%s0D[.s/l=$s/5mns.oUgs/H%7s1nZSs3L_es2+fKs0_m1s/Z1%s0r$Ds2tAk
+s5!_Ls7H?[s6BXDs4@:srQbGfs2tA^pVcsJs24lQs1\NFs1/0<s0D[-s/Q*ts/5mos/#aks.fUg
+s.TIbs.01Zs-WhPs-3PHs,m>Cs,[,=rK[>Gs-*JGrK7,As,[2?rJg]5rJU]5s,$c3rJ13'q1\^!
+mt::bJcG'9r;_EKec1.~>
+JcFm4rrBh6r;_EKJcC<$Sc>a>q>],sm0*;'R0<Nik61YgpG)7Wq\oDPq],VVruV1_r?;1br?M=f
+s!@[ls![mts"47's"FC,s"j[4s#C$>s#g<Fs$6T^s&K(ts&&els%NBVqj.8Ts.]Oks0;U0s0)I)
+s/Q*]s,$c.s*t&ts+C?@s-E\Rs.fUbs-E\Hs,$c$s(MFHs)S-es+^Q7s-Whls/uC#s.fU`s,[27
+rIt9(s*t&rs*+Kds)n?`rGqjVs).jPs(MFDs'l"7s&oA$s%r_js%WMds%<;_s%!)Ys$crTs$6TI
+s#U0=s"sa2s"XO-s"FC)s"47-s"jU/s"XO-s"FC)s"47%s""$tr at .[ns!Rgns!@[jr?M7brJ(-%
+qh4Ejon%bpli6n`JcF:#J,~>
+JcFm4rrBh6r;_EKJcC<$ScA`?s4%(ss3Ueks31Mas2=rQs1JBCs0r$6s/c6us/,1[rMKUms/>ss
+s/l=)s02O.s0D[3s0_m8s0r$<rOMb(rPJTPs2=rWs2Y/Ys2Y/\s2k;`s3(Gds3:Shs3L_ls3gkp
+rE9/(s',A(s',M.s'>YGs)e9`s'l"<rFGq>s(;:Ds(MFHs(_RLs(qRLrG;LLs(q^PrGMXRs)A!X
+rGqpZrH/'^s*"EdrHS?fs*F]ls*Xcns*jutrIFitqh"d!s*s?erIXnQpG)W5nX0'=rL3\SrLEhW
+s.91]s.KCds.fUis/,gos/>sts/Z1%s/uC*s02O.rNlC/kPkMEs5F"5s4RA's4@;"p!Nf[s17s8
+rODg8rO2[4rNuO0s0D[/s0)I*s/l=%s/Q$srM][ms/,gms.oIcpS.V[s.K=_rLW\QrLEDIo:#3;
+dJe^sli6n`JcF:#J,~>
+JcFm4rrBh6r;_EKJcC<$Sc>a>q>],ss"+1's"sa8s#U0Bs$$HJrBgNYq+Uf_s%`Sis&&eos&8qs
+s&K#!s&f;)s',M.s'>Y2s'Yk9s'u(>s(24Bs(D:Ds(VLJs(hRLs)%dRs)7pVs)J'Zs)\3^rH8-`
+rHIjXs)\3bqg%^Xs*Oe at rV?3el$rMZs+0iqqh5!'s+^?)s+p]3rJLW5s,?u;s.97`s.01Ys-NbM
+rK[8Gs.KCds/5n%s0D[.s/l=$s/5mns.oUgs/H%7s1nZSs3L_es2+fKs0_m1s/Z1%s0r$Ds2tAk
+s5!_Ls7H?[s6BXDs4@:srQbGfs2tA^pVcsJs24lQs1\NFs1/0<s0D[-s/Q*ts/5mos/#aks.fUg
+s.TIbs.01Zs-WhPs-3PHs,m>Cs,[,=rK[>Gs-*JGrK7,As,[2?rJg]5rJU]5s,$c3rJ13'q1\^!
+mt::bJcG'9r;_EKec1.~>
+JcFm4rrB\2r;_EKJcC<$U&V6Dq>],sm0*;'QN[<gk61YgpG)C[r>PDLr>bhXru_7as!.Ofr?M=f
+s!@[ls!Rgrs"47)s"XO/s"j[4s#0m:s#U0As#pBIs%r`!s&oA's&T/fq3M&Os0)I-rNH71s0Vg2
+s,m>As,-i-s*ap's.KD"s0Vg3s/uBus.01Ts,I&9s+^Q*s,?uEs.]Ops1&*>s0r$9s0)I&s.o[b
+s,m8=rJU]4s+UK)s+13#s*t&ss*F]es)A!Ts(VLGs'u(9s',M(s&/kms%`Sgs%EAas%35\s$m#V
+s$?ZKs#^6 at s#0m5s"aUCs$QfQs$?ZCs"sa3s"aO-s"OI+s"=='s"+1#r at 7apr@%[ns!Ials!7Of
+r?D2pqh=Qno7QjjJcG!7qZ)3Ig])d~>
+JcFm4rrB\2r;_EKJcC<$U&Y/Bs3gqos3CYgs2b5Ys1eTFrO;g4s/>sqs/,+Ys/,gos/>sss/Q+&
+rNQ=,s0M[3s0hs:s1&*>q>^K3rPSTPs2G#Xs2Y/\s2k;`rQG5bs3:Shs3Uens3gqrs&o;(s',M.
+s'G_4s',M.s'>YFs)\3^s'bq:s'u(>s(24Bs(D at Fs(VFHs(hXNs)%dRs)7pVrGVRNs)7pVs)J!X
+s)\-\s)n9`s*+Kfs*=Qhs*Ocns*aips*t'!qgn]tqh+oukC`X<pG)]7nX0'=rL3VQs.'%Ys.91]
+s.KCcs.]Ogs.o[ls/5mrs/Z1%s0)I,s0;U0s0Ma5s0hs:kPkG<s5*e/rRLqtrR:_ms2tA\s2"NE
+s1J<Bqmu[8s1%s8rO2U2s0Vg4s0;U.s0)C'rN#surMfgqrMT[ms/#akpS7\]rLs7arL`hUqjmVS
+nXK-=o9n#*JcG!7qZ)3Ig])d~>
+JcFm4rrB\2r;_EKJcC<$U&V6Dq>],ss"47*s#'g9s#U0Bs$-NKs$?ZOs%`Sgs%NGcs%NGes%iYk
+s&&eos&8qss&K)"s&]5's'#G,s'5S0s'Yk8s'l"<s(). at s(;4Bs(MFHs(_RLs(q^PrGMXRs)A!X
+s)S-\rH/'^s*"EdnTb(Zs)e9dnTt(Zs*XkBrVH9fo7-Rds*sors+:9(s+UE)s+C3%s+UK.s,-Q/
+q2531s,?uIs.o[hs.B=]s-`\Ks.01ns0;O+s0r$8s0;U,s/Z1!s/,gms0;UHs53e3s4dS,s4..s
+s3CYes2P)Us3:Sss5a4Ks82ios82ils7H?[s6BXDs4@(qs3^kmpW``\s2P)Vs1nZJs1A<@s0_m4
+s/uC%s/H$ss/5mns.o[is.]Oes.KC`s.'+Ws-NbNs-!DEs.o[is.]Oes-NbNrKR8Es-!DEs,d8A
+rJpi9qi(Q5rJLW3s+pW/q1ed#nV$Ldq1=1tl2UV\JcFL)J,~>
+JcFm4rrB\2r;_EKJcC<$U&V6Dq>],sm0*;'QN[<gk61YgpG)C[r>PDLr>bhXru_7as!.Ofr?M=f
+s!@[ls!Rgrs"47)s"XO/s"j[4s#0m:s#U0As#pBIs%r`!s&oA's&T/fq3M&Os0)I-rNH71s0Vg2
+s,m>As,-i-s*ap's.KD"s0Vg3s/uBus.01Ts,I&9s+^Q*s,?uEs.]Ops1&*>s0r$9s0)I&s.o[b
+s,m8=rJU]4s+UK)s+13#s*t&ss*F]es)A!Ts(VLGs'u(9s',M(s&/kms%`Sgs%EAas%35\s$m#V
+s$?ZKs#^6 at s#0m5s"aUCs$QfQs$?ZCs"sa3s"aO-s"OI+s"=='s"+1#r at 7apr@%[ns!Ials!7Of
+r?D2pqh=Qno7QjjJcG!7qZ)3Ig])d~>
+JcFm4rrB\2r;_EKJcC<$U&Y/Bs3gqos3CYgs2b5Ys1eTFrO;g4s/>sqs/,+Ys/,gos/>sss/Q+&
+rNQ=,s0M[3s0hs:s1&*>q>^K3rPSTPs2G#Xs2Y/\s2k;`rQG5bs3:Shs3Uens3gqrs&o;(s',M.
+s'G_4s',M.s'>YFs)\3^s'bq:s'u(>s(24Bs(D at Fs(VFHs(hXNs)%dRs)7pVrGVRNs)7pVs)J!X
+s)\-\s)n9`s*+Kfs*=Qhs*Ocns*aips*t'!qgn]tqh+oukC`X<pG)]7nX0'=rL3VQs.'%Ys.91]
+s.KCcs.]Ogs.o[ls/5mrs/Z1%s0)I,s0;U0s0Ma5s0hs:kPkG<s5*e/rRLqtrR:_ms2tA\s2"NE
+s1J<Bqmu[8s1%s8rO2U2s0Vg4s0;U.s0)C'rN#surMfgqrMT[ms/#akpS7\]rLs7arL`hUqjmVS
+nXK-=o9n#*JcG!7qZ)3Ig])d~>
+JcFm4rrB\2r;_EKJcC<$U&V6Dq>],ss"47*s#'g9s#U0Bs$-NKs$?ZOs%`Sgs%NGcs%NGes%iYk
+s&&eos&8qss&K)"s&]5's'#G,s'5S0s'Yk8s'l"<s(). at s(;4Bs(MFHs(_RLs(q^PrGMXRs)A!X
+s)S-\rH/'^s*"EdnTb(Zs)e9dnTt(Zs*XkBrVH9fo7-Rds*sors+:9(s+UE)s+C3%s+UK.s,-Q/
+q2531s,?uIs.o[hs.B=]s-`\Ks.01ns0;O+s0r$8s0;U,s/Z1!s/,gms0;UHs53e3s4dS,s4..s
+s3CYes2P)Us3:Sss5a4Ks82ios82ils7H?[s6BXDs4@(qs3^kmpW``\s2P)Vs1nZJs1A<@s0_m4
+s/uC%s/H$ss/5mns.o[is.]Oes.KC`s.'+Ws-NbNs-!DEs.o[is.]Oes-NbNrKR8Es-!DEs,d8A
+rJpi9qi(Q5rJLW3s+pW/q1ed#nV$Ldq1=1tl2UV\JcFL)J,~>
+JcFm4rrBP.qZ)3IJcC<$WW0#Jqu>>um0*A)P6Cmcklgegq(_mfr>YPNr>YJNruM+^s!%1_s!@[l
+s!dt!s"OI/s"sa5s#0m9s#^6Ds$$HKs%35fs%r`(s'Pe3s.TIas-s%Us-E\Qs/Z15s2"`Ms1JBC
+s1//is,[2Bs-*JJs-E\Ws0_m?s0r$6s/l=!s.]Ois/>sus/>sos.TIfs/l=2s1JBBs1&*<s0_m5
+s02O's/#aerKI,As,m>Bs,I&:s+gW,s*jums)\3Ys(q^Ks().<s'>Y,s&B"qs%iYis%NGcs%<;^
+s%!)Xs$QfOs#pBSs%35]s%!)Ys$crTs$H`Ns#9s8s"j[1s"XI+s"FC)s"47%s""$tr at .apr?qUl
+r?VCfq]c&pmtLRjpOi9nJcFd1r;_EKhuA3~>
+JcFm4rrBP.qZ)3IJcC<$WW3"Js3gqos3CYgs2b5Xs1\NDs0hs3s/Q*trMJnWs/,gorM]ars/c7'
+s0)I-s0Ma4s0_m8s0r$=s186 at qu?]4s2+`PrP\`Ts2P)Zs2b5^s2tAbs31Mfs3CYjs3U_ms&f;(
+s'#G,s'5S0s'GY2s'YkKs)\3Js'bq:s'u(>s(24BrFc.Ds(VLJs(hXNs)%dRrGV^Ts)J!Xq/Q at R
+s)\3^rH8-`qfi'bs*=WjrHnQls*aips*t'!rIOp!q1J]sl%Ad<q(_?*pR1uKrL<bUrLNt[rLa+_
+rLs7cs.fUis/,gqs/c7&s0)I-s0D[2s0_m8s0q1jpX9)hs3L_is3(Gas2Y/Ys2+`Js1\HHs1nTJ
+s1\NHs1J0>rOVm:qmcO4s0hs8s0Ma2s0;U.s0)I*s/l=&s/Z*us/H$ss/5mnrM97arM'7as.K1[
+q4 at JSrLE8EopYQAe,Fpuj8]&XJcFX-J,~>
+JcFm4rrBP.qZ)3IJcC<$WW0#Jqu>>us"==+s#'g8s#U0Cs$-NKs$?ZOrD3GcrCm5ds%iYks&&eo
+s&8qss&K)"s&]5&s&oA+s'>Y2s'Yk8s'l"<s()(>rFc.Ds(VLJs(hXNs)%dRs)7pVrGhjXs)\3^
+s)n9`s*+3^pNcd\s*=Edom?^ds7uWis82Wkq1/KpmstFhs+C?)rJ(9)rIk3)s+gW3s,H]4rJpo=
+s-<VSs-ites/,gks.TIas-s%Us-E\Qs/Z15s2"`Ms1JBCrOMs>s1JBGs1nZOs3CZ,s6p!Ss69RG
+s5X.=s5j:Es6BXHs5O(9s5F"Es7lWms82ims7u]hs7ZKas6fpOs5N_(rRV#!s3gqns31M`s2+fN
+s1SHDs0r$9s0D[-s/Q*us/>sqs/,gms.o[is.]Oes.B=^s-inbs/5mos/#aks.]Oes.KCYs-<PI
+s-*DEs,m>Cs,[2?rJg]5rJU]5s,$]1s+gE)mtLRjpOi9nJcFd1r;_EKhuA3~>
+JcFm4rrBP.qZ)3IJcC<$WW0#Jqu>>um0*A)P6Cmcklgegq(_mfr>YPNr>YJNruM+^s!%1_s!@[l
+s!dt!s"OI/s"sa5s#0m9s#^6Ds$$HKs%35fs%r`(s'Pe3s.TIas-s%Us-E\Qs/Z15s2"`Ms1JBC
+s1//is,[2Bs-*JJs-E\Ws0_m?s0r$6s/l=!s.]Ois/>sus/>sos.TIfs/l=2s1JBBs1&*<s0_m5
+s02O's/#aerKI,As,m>Bs,I&:s+gW,s*jums)\3Ys(q^Ks().<s'>Y,s&B"qs%iYis%NGcs%<;^
+s%!)Xs$QfOs#pBSs%35]s%!)Ys$crTs$H`Ns#9s8s"j[1s"XI+s"FC)s"47%s""$tr at .apr?qUl
+r?VCfq]c&pmtLRjpOi9nJcFd1r;_EKhuA3~>
+JcFm4rrBP.qZ)3IJcC<$WW3"Js3gqos3CYgs2b5Xs1\NDs0hs3s/Q*trMJnWs/,gorM]ars/c7'
+s0)I-s0Ma4s0_m8s0r$=s186 at qu?]4s2+`PrP\`Ts2P)Zs2b5^s2tAbs31Mfs3CYjs3U_ms&f;(
+s'#G,s'5S0s'GY2s'YkKs)\3Js'bq:s'u(>s(24BrFc.Ds(VLJs(hXNs)%dRrGV^Ts)J!Xq/Q at R
+s)\3^rH8-`qfi'bs*=WjrHnQls*aips*t'!rIOp!q1J]sl%Ad<q(_?*pR1uKrL<bUrLNt[rLa+_
+rLs7cs.fUis/,gqs/c7&s0)I-s0D[2s0_m8s0q1jpX9)hs3L_is3(Gas2Y/Ys2+`Js1\HHs1nTJ
+s1\NHs1J0>rOVm:qmcO4s0hs8s0Ma2s0;U.s0)I*s/l=&s/Z*us/H$ss/5mnrM97arM'7as.K1[
+q4 at JSrLE8EopYQAe,Fpuj8]&XJcFX-J,~>
+JcFm4rrBP.qZ)3IJcC<$WW0#Jqu>>us"==+s#'g8s#U0Cs$-NKs$?ZOrD3GcrCm5ds%iYks&&eo
+s&8qss&K)"s&]5&s&oA+s'>Y2s'Yk8s'l"<s()(>rFc.Ds(VLJs(hXNs)%dRs)7pVrGhjXs)\3^
+s)n9`s*+3^pNcd\s*=Edom?^ds7uWis82Wkq1/KpmstFhs+C?)rJ(9)rIk3)s+gW3s,H]4rJpo=
+s-<VSs-ites/,gks.TIas-s%Us-E\Qs/Z15s2"`Ms1JBCrOMs>s1JBGs1nZOs3CZ,s6p!Ss69RG
+s5X.=s5j:Es6BXHs5O(9s5F"Es7lWms82ims7u]hs7ZKas6fpOs5N_(rRV#!s3gqns31M`s2+fN
+s1SHDs0r$9s0D[-s/Q*us/>sqs/,gms.o[is.]Oes.B=^s-inbs/5mos/#aks.]Oes.KCYs-<PI
+s-*DEs,m>Cs,[2?rJg]5rJU]5s,$]1s+gE)mtLRjpOi9nJcFd1r;_EKhuA3~>
+JcFm4rrB>(r;_EKJcC<$YQ(YPqu>E"m0*;'OTb[alNHqgq_A*hq]#PTq]#PTr>khXq]Gh]s!.Oi
+q^;Cls!dt!s"OI/s#9g8s#pBLs%EAjs'5S6s(hXTs(hXLs1&*?s1/0>s0r$:s0VgAs3q"qs3:Sd
+s2b5!s,[2Is.KCls0D[:s2=r]s2Y/Us1A<=s02O+rN#t$s0D[5s1/0Cs1JBIs1eTHs186?s0hs7
+s0Ma2s0;U,s/H$ls-s%WrL*VOs-3PFs,6o4s+C?!s*"E^s).jNs(;:?s'G_.s&K(ts&&eks%WMd
+s%<;_s%*/hs&/kms%`Sfs%<;_s%*/[s$m#Ws$QfQs#g<@s#0m5s"aU/s"OI+s"=7%s"+1#r at 7ap
+s![mps!Ials!7Ofr?D7ds+pQ-rJ(-%qh4]rpO[triW&iVJcFd1J,~>
+JcFm4rrB>(r;_EKJcC<$YQ+XNs3Ueks3:Ses2Y/Vs1SHBs0Ma/s/Q*ts/,%WrMKUms/>sts/Z1%
+s/uC+s0D[3s0_m8rO;a8qu?]4rPJTPrP\`Ts2P)Zs2b5^s2t;`s31Mfs3CYks3^jJs&f;(s'#G,
+s'5S0rEfM2rH/'^s'bk8s'u"<s(24Bs(D at Fs(VLJrG2FLs)%dRs)7pVs)J'ZrH%RPs)n?bs*+9`
+rH\Ehs*O]ls*aips+('!rIXcrs*s?epBg^OkEu(5qjRPSs.'+[rLa+_rLs1as.fUks/Q+#s/l=)
+s0;U0s0Vg7s0q1js2=rXs2b5^s2tAbs31Mfs31Mbs2Y/Xs2"`NrPAHIs1nTLrPJTNs1nTJrOr6D
+otC=9s18*<s1&*<s0_m6s0Ma2s0;U.s0)I)s/c7$s/Q*us/5mos/#akpS7\]rLs7ao:PuQrLNhU
+m at 3j=opO;.JcF^/r;_EKj8XW~>
+JcFm4rrB>(r;_EKJcC<$YQ(YPqu>E"s!n%%s"XO1s#C$>s#pBHs$6TMrD3Gjs%<;brD!5ds&&eo
+s&8qss&K)"s&]5&s'#G,s'>Y2s'Pe7s'l"<rFGk=rFl4Fs(_RLs(q^Ps).jTs)A!Xs)S'Zs)e9`
+s*"?bq0;LVs*!dVs*XeAqtp9irIFKjrIXcrs+UK.s+p]4rJCQ1s+gW3s,I&?s-*8Cs-NbVs.fUo
+s02O3s1A<;s02O5s186 at s1&*<s0hs7s1nZ`s3^kks2tA_rPef]s4./*s5j:Js7QEjs82iks7H?]
+s6fpQs60LIs6TdSs763_s7lWgs8Duqs8)cks7lWfs7QEas763[s6fpOs5Nk1rS7G+s475!s3Uej
+s2Y/Vs1eTHs1/0=s0Vg2s/uC&s/Q*us/>sqs/#aks.fUgs0)I*s/Z1"s/H$ss/5mos/#aks.fUg
+s.TI^s-WhPs-3JGs-!DEs,d2?s,R&;qi(Q5rJLW3s+pW/rJ(?-s+pQ-rJ(-%qh4]rpO[triW&iV
+JcFd1J,~>
+JcFm4rrB>(r;_EKJcC<$YQ(YPqu>E"m0*;'OTb[alNHqgq_A*hq]#PTq]#PTr>khXq]Gh]s!.Oi
+q^;Cls!dt!s"OI/s#9g8s#pBLs%EAjs'5S6s(hXTs(hXLs1&*?s1/0>s0r$:s0VgAs3q"qs3:Sd
+s2b5!s,[2Is.KCls0D[:s2=r]s2Y/Us1A<=s02O+rN#t$s0D[5s1/0Cs1JBIs1eTHs186?s0hs7
+s0Ma2s0;U,s/H$ls-s%WrL*VOs-3PFs,6o4s+C?!s*"E^s).jNs(;:?s'G_.s&K(ts&&eks%WMd
+s%<;_s%*/hs&/kms%`Sfs%<;_s%*/[s$m#Ws$QfQs#g<@s#0m5s"aU/s"OI+s"=7%s"+1#r at 7ap
+s![mps!Ials!7Ofr?D7ds+pQ-rJ(-%qh4]rpO[triW&iVJcFd1J,~>
+JcFm4rrB>(r;_EKJcC<$YQ+XNs3Ueks3:Ses2Y/Vs1SHBs0Ma/s/Q*ts/,%WrMKUms/>sts/Z1%
+s/uC+s0D[3s0_m8rO;a8qu?]4rPJTPrP\`Ts2P)Zs2b5^s2t;`s31Mfs3CYks3^jJs&f;(s'#G,
+s'5S0rEfM2rH/'^s'bk8s'u"<s(24Bs(D at Fs(VLJrG2FLs)%dRs)7pVs)J'ZrH%RPs)n?bs*+9`
+rH\Ehs*O]ls*aips+('!rIXcrs*s?epBg^OkEu(5qjRPSs.'+[rLa+_rLs1as.fUks/Q+#s/l=)
+s0;U0s0Vg7s0q1js2=rXs2b5^s2tAbs31Mfs31Mbs2Y/Xs2"`NrPAHIs1nTLrPJTNs1nTJrOr6D
+otC=9s18*<s1&*<s0_m6s0Ma2s0;U.s0)I)s/c7$s/Q*us/5mos/#akpS7\]rLs7ao:PuQrLNhU
+m at 3j=opO;.JcF^/r;_EKj8XW~>
+JcFm4rrB>(r;_EKJcC<$YQ(YPqu>E"s!n%%s"XO1s#C$>s#pBHs$6TMrD3Gjs%<;brD!5ds&&eo
+s&8qss&K)"s&]5&s'#G,s'>Y2s'Pe7s'l"<rFGk=rFl4Fs(_RLs(q^Ps).jTs)A!Xs)S'Zs)e9`
+s*"?bq0;LVs*!dVs*XeAqtp9irIFKjrIXcrs+UK.s+p]4rJCQ1s+gW3s,I&?s-*8Cs-NbVs.fUo
+s02O3s1A<;s02O5s186 at s1&*<s0hs7s1nZ`s3^kks2tA_rPef]s4./*s5j:Js7QEjs82iks7H?]
+s6fpQs60LIs6TdSs763_s7lWgs8Duqs8)cks7lWfs7QEas763[s6fpOs5Nk1rS7G+s475!s3Uej
+s2Y/Vs1eTHs1/0=s0Vg2s/uC&s/Q*us/>sqs/#aks.fUgs0)I*s/Z1"s/H$ss/5mos/#aks.fUg
+s.TI^s-WhPs-3JGs-!DEs,d2?s,R&;qi(Q5rJLW3s+pW/rJ(?-s+pQ-rJ(-%qh4]rpO[triW&iV
+JcFd1J,~>
+JcFm4rrB2$r;_EKJcC<$[K!:Vqu>E"m0*;'Ns,I_m0*(grA"6hr>YVRr>khXr?)%^ruq=bs!.Oi
+s!Rgps""+$s"==)s"OI/s#9s<s#^6Ds$$HMs%!)_s&&ess',M0s'Yk9s0_m:s1eTRs3:Sns4[M3
+s6'FCs5<pHs-WhOs-3PNs.B=gs/l=/s1JBKs2Y/\rPefSs2"`Ls1JBCs1JBGs1eTLs2=rVs2+fO
+s1SHEs1/0=s0hs7s0D[0s02O,s/c6rs.fUgs.TI`s-s%Us-3PFs,?u4s*t&ns)S-Ws(_RGs'l"7
+s'#G's&B"rs%r_js%NB!s'Pe4s&]4ts%iYis%NGbs%35]s%!)Ys$crTs$?ZHs#L*;s"sa2s"XO-
+s"FC)s"47%q^_[rr at .aps!Rgnr?VCfq]u,rrJ19)qh=j!q1J?lJcFX-r;_EKkPp&~>
+JcFm4rrB2$r;_EKJcC<$[K$9Qs3CYgs3(Gas2Y/Vs1JBAs0Vg1s/Z0us/+tUs/,gos/>sss/Z1$
+s/uC*s0;U1s0Vg6rO;a8qu?]3s2"`PrPSZRs2G#Xs2Y/\s2k5^s3(Gds3:Shs3L_lrE'#$s'#G,
+rETA.s'G_4s)\3^s)n9Ls'u"<rFQ"@s(D:Ds(VLJs(hXNs)%dRs)7jTs)J'Zs)\3^rH7pZrHJ-`
+rH\3brHnQlrI+WprIOp!pOiKqm=Y'<rA"8;l^7F7qjRJQs.'+\oq28Ws/#[ns/5mos/#aks.fUg
+li-pts1eTLs2"`Us2t;^qoJfZs2b5Zs2P)Zs2b)Zs2b5\s2FrTrPefTs24lRrPAHJrP/6FrP/BH
+s1SHFrO`*@s1/0=s0hs7s0Ma1s02O,s/l=&s/Z1!s/>sqs/,gms.oCarM'7arLihUrLWnWqjd&C
+qjR2GdJe^shuEWTJcFp5J,~>
+JcFm4rrB2$r;_EKJcC<$[K!:Vqu>E"s!n%%s"XO1s#C$>s#g<Fs$-NKrD3Gjs%<5`s%WMgs%iYl
+s&/kqs&K)"s&]5&s&oA*s',M/s'G_4rF,_8s'u(>s(24Bs(D at Fs(_RLs(q^PrGMXRs)A!Xs)S-\
+s)e9`rHA3bs*4?brHeEhq0`3dqg83frHnKjs8)WirVZWnrIF]pqh"d!rIk3)qhG-+s,$c5s,?u;
+s,[2ArK$uAs-<VNs-`\Ps.KCis/l=-s0r$>s1SH?s1&*Ds2P)`s4%)&s5F"@s5a4<s4dS*s3q"p
+s3CYms4[M4s6BXTs7lWkqu-Qks7ZKas7$'Vs7--]s7cQirVccns7u]is7cQds7H?_s7--Ys6p!U
+s6TdMqr7Y7s53k4s4[M*s4..ts3:Sbs24lNs1JBBs0hs7s0;U,s/Z1"s/H$ss/5morOVs<s0D[+
+s/Z1"s/H$ss/5mos/#aks.fUfs.KC]s-`nQs-3PIrK at 2Cs,d8As,Qu9rJ^]5s,-i5rJ:K/pPAd'
+qhG!%q1SQron%bphuEWTJcFp5J,~>
+JcFm4rrB2$r;_EKJcC<$[K!:Vqu>E"m0*;'Ns,I_m0*(grA"6hr>YVRr>khXr?)%^ruq=bs!.Oi
+s!Rgps""+$s"==)s"OI/s#9s<s#^6Ds$$HMs%!)_s&&ess',M0s'Yk9s0_m:s1eTRs3:Sns4[M3
+s6'FCs5<pHs-WhOs-3PNs.B=gs/l=/s1JBKs2Y/\rPefSs2"`Ls1JBCs1JBGs1eTLs2=rVs2+fO
+s1SHEs1/0=s0hs7s0D[0s02O,s/c6rs.fUgs.TI`s-s%Us-3PFs,?u4s*t&ns)S-Ws(_RGs'l"7
+s'#G's&B"rs%r_js%NB!s'Pe4s&]4ts%iYis%NGbs%35]s%!)Ys$crTs$?ZHs#L*;s"sa2s"XO-
+s"FC)s"47%q^_[rr at .aps!Rgnr?VCfq]u,rrJ19)qh=j!q1J?lJcFX-r;_EKkPp&~>
+JcFm4rrB2$r;_EKJcC<$[K$9Qs3CYgs3(Gas2Y/Vs1JBAs0Vg1s/Z0us/+tUs/,gos/>sss/Z1$
+s/uC*s0;U1s0Vg6rO;a8qu?]3s2"`PrPSZRs2G#Xs2Y/\s2k5^s3(Gds3:Shs3L_lrE'#$s'#G,
+rETA.s'G_4s)\3^s)n9Ls'u"<rFQ"@s(D:Ds(VLJs(hXNs)%dRs)7jTs)J'Zs)\3^rH7pZrHJ-`
+rH\3brHnQlrI+WprIOp!pOiKqm=Y'<rA"8;l^7F7qjRJQs.'+\oq28Ws/#[ns/5mos/#aks.fUg
+li-pts1eTLs2"`Us2t;^qoJfZs2b5Zs2P)Zs2b)Zs2b5\s2FrTrPefTs24lRrPAHJrP/6FrP/BH
+s1SHFrO`*@s1/0=s0hs7s0Ma1s02O,s/l=&s/Z1!s/>sqs/,gms.oCarM'7arLihUrLWnWqjd&C
+qjR2GdJe^shuEWTJcFp5J,~>
+JcFm4rrB2$r;_EKJcC<$[K!:Vqu>E"s!n%%s"XO1s#C$>s#g<Fs$-NKrD3Gjs%<5`s%WMgs%iYl
+s&/kqs&K)"s&]5&s&oA*s',M/s'G_4rF,_8s'u(>s(24Bs(D at Fs(_RLs(q^PrGMXRs)A!Xs)S-\
+s)e9`rHA3bs*4?brHeEhq0`3dqg83frHnKjs8)WirVZWnrIF]pqh"d!rIk3)qhG-+s,$c5s,?u;
+s,[2ArK$uAs-<VNs-`\Ps.KCis/l=-s0r$>s1SH?s1&*Ds2P)`s4%)&s5F"@s5a4<s4dS*s3q"p
+s3CYms4[M4s6BXTs7lWkqu-Qks7ZKas7$'Vs7--]s7cQirVccns7u]is7cQds7H?_s7--Ys6p!U
+s6TdMqr7Y7s53k4s4[M*s4..ts3:Sbs24lNs1JBBs0hs7s0;U,s/Z1"s/H$ss/5morOVs<s0D[+
+s/Z1"s/H$ss/5mos/#aks.fUfs.KC]s-`nQs-3PIrK at 2Cs,d8As,Qu9rJ^]5s,-i5rJ:K/pPAd'
+qhG!%q1SQron%bphuEWTJcFp5J,~>
+JcFm4rrB%ur;_EKJcC<$\c8d\qu>E"m0*;'N<K7]mf`4gs"XBhr>YVRruM%Zru_1^ruqCdr?M=f
+s!Iaos!n%#s"FC,s"j[4s#C$>s#g<Fs$?ZPs$m#Ys%WMks&f;)s'5T8s1SHIs1/0Fs2Y/as4%)'
+s5<q;s/#ans/H$us/5mmrM0Cqs0hs at s2"`Rs2Y/_s3:ShrQkMhs31Mbs2tAcrQYAds2tA[s2"`N
+s1\NGs186?s0hs8s0Ma1rNH7's/Z0us/#ais.B=]s-WhMs,[29s+12rs)\3Ys(hXIs'u(9s',M)
+s&f;1s(MFCs'l"8s'G_2s'5S.s&B"ps%iYhs%NGbs%35\s$m#Ws$ZlSs$?ZIs#L*<s"sa2s"XO-
+s"FC)s"47%r@@grr at .aps!Rgns!@CbrJ:E-rJ(-%qh4j!o7DPng].3PJcG'9J,~>
+JcFm4rrB%ur;_EKJcC<$\c;]Rs2tA`s2b5[s2"`Js1/0;s0;U*s/>spkGA3UrMT[os/Q+#s/l=(
+s02O/s0Vg6s0hg6qu?]2s1nZNs2+fRs2=rVs2P)Zs2b/]rQG/`s3:Shs3UdHs&]5&s&o;)s'5S0
+s'G_4s)\3^s)n9Ls'u(>rFQ"@rFc(Bs(VLJs(hXNrGDRPs)7pVs)J'ZrH&!\s)n?brHJ-`rH\Eh
+s*O]lqgJKlrHnQls*airrIOp!on39omt:3<s"XD;n!NX5s-inUrLEhWq4IVYrLs7grMBOhs.\iY
+s1SHIs1nZOs24lUs2Y/]s3:Sfq9/f^s3:ShrQkMjs3^kps3^kns3L_is31Mds2k;^rQ"lVrPe`R
+pV[$Js2"`Ns1eTJs1JBCs1/0=s0_m6s0D[0s02O+s/l=&s/Q*us/>sqs/,gmrM9=crM'1_rLibS
+s.9+Yq4-oCq3q&Ge,Fpug].3PJcG'9J,~>
+JcFm4rrB%ur;_EKJcC<$\c8d\qu>E"s""+&s"aU2s#9s=s#g6Es$6NZs&K(js%EAcs%WMgs%iYl
+s&/krs&K)"s&]5&s&oA*s'5S0s'G_4s'Yk8s'l"<s(). at s(;:Ds(MFHs(hXNs)%dRs)7pVs)J'Z
+s)\3^rH8-`s*+KfrH\9ds*O?bs*aoks*O9`qtp3es8MnGq18KrrIb'%s+UE+rJ1E/s,-i7s,I&>
+s,d8Ds-*JJs-E\Ps-itXs.97`s.]Ogs.o[ps02O1s0r$>s1SHIs1/0Fs2Y/as4%)'s5<q;s5j4A
+s5j:>s4mY-s4@;.s6'FNs7?9as7u]mq>L?js7lWes7ZKgs8;ios8;oms7cQes7H?_s763Zs6p!U
+s6TdOs6BXKs6'FEs5a4>s5<q6s4dS,s475!s3CYds24lNs1A<@s0hs6s02O+s/Z1%s1&*Ds1SHE
+s1/0>rO;g8s0)I(s/Z1"s/H$ss/5mns.o[is.]Oes.KC]s-`nRs-<VJs-!DErK.&?s,R&;qi(K3
+s,-c3o8*@#rJ(-%qh4j!o7DPng].3PJcG'9J,~>
+JcFm4rrB%ur;_EKJcC<$\c8d\qu>E"m0*;'N<K7]mf`4gs"XBhr>YVRruM%Zru_1^ruqCdr?M=f
+s!Iaos!n%#s"FC,s"j[4s#C$>s#g<Fs$?ZPs$m#Ys%WMks&f;)s'5T8s1SHIs1/0Fs2Y/as4%)'
+s5<q;s/#ans/H$us/5mmrM0Cqs0hs at s2"`Rs2Y/_s3:ShrQkMhs31Mbs2tAcrQYAds2tA[s2"`N
+s1\NGs186?s0hs8s0Ma1rNH7's/Z0us/#ais.B=]s-WhMs,[29s+12rs)\3Ys(hXIs'u(9s',M)
+s&f;1s(MFCs'l"8s'G_2s'5S.s&B"ps%iYhs%NGbs%35\s$m#Ws$ZlSs$?ZIs#L*<s"sa2s"XO-
+s"FC)s"47%r@@grr at .aps!Rgns!@CbrJ:E-rJ(-%qh4j!o7DPng].3PJcG'9J,~>
+JcFm4rrB%ur;_EKJcC<$\c;]Rs2tA`s2b5[s2"`Js1/0;s0;U*s/>spkGA3UrMT[os/Q+#s/l=(
+s02O/s0Vg6s0hg6qu?]2s1nZNs2+fRs2=rVs2P)Zs2b/]rQG/`s3:Shs3UdHs&]5&s&o;)s'5S0
+s'G_4s)\3^s)n9Ls'u(>rFQ"@rFc(Bs(VLJs(hXNrGDRPs)7pVs)J'ZrH&!\s)n?brHJ-`rH\Eh
+s*O]lqgJKlrHnQls*airrIOp!on39omt:3<s"XD;n!NX5s-inUrLEhWq4IVYrLs7grMBOhs.\iY
+s1SHIs1nZOs24lUs2Y/]s3:Sfq9/f^s3:ShrQkMjs3^kps3^kns3L_is31Mds2k;^rQ"lVrPe`R
+pV[$Js2"`Ns1eTJs1JBCs1/0=s0_m6s0D[0s02O+s/l=&s/Q*us/>sqs/,gmrM9=crM'1_rLibS
+s.9+Yq4-oCq3q&Ge,Fpug].3PJcG'9J,~>
+JcFm4rrB%ur;_EKJcC<$\c8d\qu>E"s""+&s"aU2s#9s=s#g6Es$6NZs&K(js%EAcs%WMgs%iYl
+s&/krs&K)"s&]5&s&oA*s'5S0s'G_4s'Yk8s'l"<s(). at s(;:Ds(MFHs(hXNs)%dRs)7pVs)J'Z
+s)\3^rH8-`s*+KfrH\9ds*O?bs*aoks*O9`qtp3es8MnGq18KrrIb'%s+UE+rJ1E/s,-i7s,I&>
+s,d8Ds-*JJs-E\Ps-itXs.97`s.]Ogs.o[ps02O1s0r$>s1SHIs1/0Fs2Y/as4%)'s5<q;s5j4A
+s5j:>s4mY-s4@;.s6'FNs7?9as7u]mq>L?js7lWes7ZKgs8;ios8;oms7cQes7H?_s763Zs6p!U
+s6TdOs6BXKs6'FEs5a4>s5<q6s4dS,s475!s3CYds24lNs1A<@s0hs6s02O+s/Z1%s1&*Ds1SHE
+s1/0>rO;g8s0)I(s/Z1"s/H$ss/5mns.o[is.]Oes.KC]s-`nRs-<VJs-!DErK.&?s,R&;qi(K3
+s,-c3o8*@#rJ(-%qh4j!o7DPng].3PJcG'9J,~>
+JcFm4rrAnqr;_EKJcC<$^]1Ebqu>E"m0*;'MZj%[nHAFis"X<fr>Y\Tr>khXru_1^r?D7ds!7Uj
+s!Rgqs""+$s"FC-s"j[5s#C$?s$$HKs$ZlVs%35as%`Sms&T0,s0r$>s1SHJrPANSs3CYps4RFE
+s.fUls/>sts/l=)s0D[3s0;U3s1SHJs24lXs31Mis4%)!s475%s4IA)s4[M*s4[M+s4@;$s3^kh
+s2G#Us2"`Ms1SHEs1/0=s0hs7rNlO2s02O*s/Q*rs.]Obs-itRs,m>=s+C?!s)n?[s(hXIs(MFK
+s)A!Zs)A!Us(hXKs(;:As'bq6s'>Y/s&oA!s%r_js%WMes%<;_s%!)Ys$crUs$QfNs#pBCs#9s8
+s"j[0s"OC(s"+$tr at 7aps![mps!Ialr?V7bs+pW/qhG!%q1S^!nUc>lg&LpLJcG9?J,~>
+JcFm4rrAnqr;_EKJcC<$^]4>Ws2k;^s2P)Xs1nZJs186=s0D[,s/H$rj/)dQs/>sss/Z1$s/l=)
+s0;U0s0_m8qmZJ&s1\NJs2"`Ps24fRs2P)Zs2b5^s2t;`s31Gds3CYjs&T/$s&f;(s'#G,s'5S0
+rEfMFs)e9`s'bq:s'u(>s(2. at rFc(Bs(VLJrG2FLs)%dRs)7jTs)J'Zs)\3^rH8-`s*+KfrH\?f
+rHnQls*aorrI=its*jurs*Ocns*josrIP!#o7R'mnUpE>s"X>9nX/p9rL3\Ss.&tWs.9+[qk3h[
+rM/]XrPAHLs2=rVs2Y/]s3(Gds3CMfs3^kps3q"ts4./#s4@;'s4RG+s4dS-s4RG(s4..us3Uek
+s3:SfrQG/^qoSlZqoA`Vs2=rSs2"`Ms1SHFs186?s0r$9s0Ma2s0;U-s/uC(s/Z1"rMfaoqksCh
+s.o[irM'1_rLihUrLWnWq4-oCpR:uIe,Fpug&LpLJcG9?J,~>
+JcFm4rrAnqr;_EKJcC<$^]1Ebqu>E"s"+1's"XO1s#C$>s#pBGs$-NKs&/kss&].js%NGes%`Si
+s&&eps&B"us&T/$s&f;(s'#G-s'>Y2s'Pe6s'bq:s'u(>s(24Bs(MFHs(_RLs(q^Ps).jTs)A!X
+s)S-\s)e9`s*"Eds*4KfrHe?fomHXbs*+?fq0i9jrVQKirVccqpON-lrIY!#rIk3)rJ(?-s+p]3
+s,-i7s,I&=s,d8Ds-*JJs-NbRs.'+\s.TIfs/,gps/Q+$s02O1s0r$>s1SHJrPANSs3CYps4RG-
+s53k9s5X.?rT4(As6'FAs5a4Gs6fpWs7H?ds82Eds82Wjs82ijs7H?_s763[s6p!Us6]jPs6BXK
+s60LIs6BXIs5j:@s5F"8s4mY.s4IA$s3L_es2=rPs186?s0_m9s1SHLs2P)Ws2+fOs1\NGs186?
+s0hm6s0Ma,s/Z1"s/H$ss/5mos/#aks.fUgs.TIas.'+Xs-NbNs-*JGs,m>Cs,[2?qi1Q5rJUW3
+rJCK/qhP3-rJ19)qh=j!rIaWlJcFF'qZ)3Inc++~>
+JcFm4rrAnqr;_EKJcC<$^]1Ebqu>E"m0*;'MZj%[nHAFis"X<fr>Y\Tr>khXru_1^r?D7ds!7Uj
+s!Rgqs""+$s"FC-s"j[5s#C$?s$$HKs$ZlVs%35as%`Sms&T0,s0r$>s1SHJrPANSs3CYps4RFE
+s.fUls/>sts/l=)s0D[3s0;U3s1SHJs24lXs31Mis4%)!s475%s4IA)s4[M*s4[M+s4@;$s3^kh
+s2G#Us2"`Ms1SHEs1/0=s0hs7rNlO2s02O*s/Q*rs.]Obs-itRs,m>=s+C?!s)n?[s(hXIs(MFK
+s)A!Zs)A!Us(hXKs(;:As'bq6s'>Y/s&oA!s%r_js%WMes%<;_s%!)Ys$crUs$QfNs#pBCs#9s8
+s"j[0s"OC(s"+$tr at 7aps![mps!Ialr?V7bs+pW/qhG!%q1S^!nUc>lg&LpLJcG9?J,~>
+JcFm4rrAnqr;_EKJcC<$^]4>Ws2k;^s2P)Xs1nZJs186=s0D[,s/H$rj/)dQs/>sss/Z1$s/l=)
+s0;U0s0_m8qmZJ&s1\NJs2"`Ps24fRs2P)Zs2b5^s2t;`s31Gds3CYjs&T/$s&f;(s'#G,s'5S0
+rEfMFs)e9`s'bq:s'u(>s(2. at rFc(Bs(VLJrG2FLs)%dRs)7jTs)J'Zs)\3^rH8-`s*+KfrH\?f
+rHnQls*aorrI=its*jurs*Ocns*josrIP!#o7R'mnUpE>s"X>9nX/p9rL3\Ss.&tWs.9+[qk3h[
+rM/]XrPAHLs2=rVs2Y/]s3(Gds3CMfs3^kps3q"ts4./#s4@;'s4RG+s4dS-s4RG(s4..us3Uek
+s3:SfrQG/^qoSlZqoA`Vs2=rSs2"`Ms1SHFs186?s0r$9s0Ma2s0;U-s/uC(s/Z1"rMfaoqksCh
+s.o[irM'1_rLihUrLWnWq4-oCpR:uIe,Fpug&LpLJcG9?J,~>
+JcFm4rrAnqr;_EKJcC<$^]1Ebqu>E"s"+1's"XO1s#C$>s#pBGs$-NKs&/kss&].js%NGes%`Si
+s&&eps&B"us&T/$s&f;(s'#G-s'>Y2s'Pe6s'bq:s'u(>s(24Bs(MFHs(_RLs(q^Ps).jTs)A!X
+s)S-\s)e9`s*"Eds*4KfrHe?fomHXbs*+?fq0i9jrVQKirVccqpON-lrIY!#rIk3)rJ(?-s+p]3
+s,-i7s,I&=s,d8Ds-*JJs-NbRs.'+\s.TIfs/,gps/Q+$s02O1s0r$>s1SHJrPANSs3CYps4RG-
+s53k9s5X.?rT4(As6'FAs5a4Gs6fpWs7H?ds82Eds82Wjs82ijs7H?_s763[s6p!Us6]jPs6BXK
+s60LIs6BXIs5j:@s5F"8s4mY.s4IA$s3L_es2=rPs186?s0_m9s1SHLs2P)Ws2+fOs1\NGs186?
+s0hm6s0Ma,s/Z1"s/H$ss/5mos/#aks.fUgs.TIas.'+Xs-NbNs-*JGs,m>Cs,[2?qi1Q5rJUW3
+rJCK/qhP3-rJ19)qh=j!rIaWlJcFF'qZ)3Inc++~>
+JcFm4rrAbmr;_EKJcC<$_uHohqu>E"m0*;'M$3hYo*"Riru(\Pq&B>Rr>knZr?)%^ruq=bs!.Oi
+s!Iaos!n%"s"==*s"aU3s#9s<s#^6Es$?ZQs%!)]s%WMhs/c7)s0Ma6s1/0Bs1eTNs24lXs3L_6
+s.97as.o[ns/Q+#s/uC,s0Ma5s1&*@s1eTPs2k;cs3^kts4[G-s5*e5s5<q9s5O"9s53k3s474t
+s3(G_s2G#Ts1nZKs1JBCrODm?s1\NDs0Vg1s/c7!s.o[fs.01Xs-*JAs+UK's*aoos*aoss+:9"
+s*F]gs)S-Ys)%dOs(VLFs'u(:s'>Y.s&oA&s&&ems%iYhs%NGcs%35\s$crUs$QfQs$-NGs#C$9
+s"j[1s"OI+s"=='s"++!q^VUpr@%[ns!I[jq]u1ds+pW/qhG!%qh4j!o7DPne,T at HJcGECJ,~>
+JcFm4rrAbmr;_EKJcC<$_uKbYs2Y/Ys24lQs1\NEs0r$7s/uC%s/4nRs/,gos/H$us/c7&s/uC*
+s0;U1s0_m8rO;\(qnN0HrPJTQs2G#Xs2b5^rQ>)^s31Mfs3CYjs&T/$s&f;(s'#G,rETA.s'G_H
+s)e9`s'bq:s'u(>s(2. at s(D:DrFu:Hs(hRLs)%^Ps)7pVs)J!Xs)\3^s)n9`s*+Kfs*=Qhs*Ocn
+rI+]prI=crs+1-#s+C9#rIP!#nUpjko7QQ>q3U]?nX9EGrL<bUrLNt[q4IVYqk<t_li-q'qo8NR
+s2k;as3:Shs3Uens3q"us4@;'s4RG+s4dM.s5*e5s5<q9s5O"9s53k3s4[M*s4..us3gkns3Uel
+rQbAds31Mds2k;]s2G#Vs2+fOs1eTIs1A<Bs1&*<s0_m5s0D[/s0)I*s/l=%rMoaos/>mos/,gm
+s.oUgqkF%_rLinWrLWnWpRL]AopYoKec(."e,T at HJcGECJ,~>
+JcFm4rrAbmr;_EKJcC<$_uHohqu>E"s"+1&s"aU2s#9s;s#g<ErBL<]s&T/$s%<;_s%<;bs%WMh
+s&&eps&B"us&T/$s&f;(s'#A+s'>Y2rF#Y7s'u(>s(24Bs(D at Gs(_RLs(q^Ps).jTs)A!Xs)S-\
+s)e9`s*"Eds*4Qhqg/3fo6g@^s*+EhpO2r:p\k,ApON-lrIY!#rIk3)rJ(?-s+p]3s,-i7s,I&=
+s,d8Cs-*JJs-NbRs.'+\s.TIfs/,gps/Q+#s02O0s0hs<s1JBHs2+fRs2b5ds3gqts4IA+s5*e7
+rSmk;rT+"?s6'FHs6TdTs7?9as7u]mli$k[s7ZKas7--Ys6fpSs6TdNs69LGs6]jTs6TdLs5s at B
+s5O(:s5!_0s4RG&s3L_fs2Y/Zs2G#Zs31Mis3CYfs2b5Zs24lQs1eTIs1A<As0r$8s0Ma2s02O)
+s/Z1"s/H$ss/5mos.o[is.]Oes.KC`s-s%Us-<VJs-!DErK.&?s,R&;qi(K3rJLW3qhY-)s+pW/
+qhG!%qh4j!o7DPne,T at HJcGECJ,~>
+JcFm4rrAbmr;_EKJcC<$_uHohqu>E"m0*;'M$3hYo*"Riru(\Pq&B>Rr>knZr?)%^ruq=bs!.Oi
+s!Iaos!n%"s"==*s"aU3s#9s<s#^6Es$?ZQs%!)]s%WMhs/c7)s0Ma6s1/0Bs1eTNs24lXs3L_6
+s.97as.o[ns/Q+#s/uC,s0Ma5s1&*@s1eTPs2k;cs3^kts4[G-s5*e5s5<q9s5O"9s53k3s474t
+s3(G_s2G#Ts1nZKs1JBCrODm?s1\NDs0Vg1s/c7!s.o[fs.01Xs-*JAs+UK's*aoos*aoss+:9"
+s*F]gs)S-Ys)%dOs(VLFs'u(:s'>Y.s&oA&s&&ems%iYhs%NGcs%35\s$crUs$QfQs$-NGs#C$9
+s"j[1s"OI+s"=='s"++!q^VUpr@%[ns!I[jq]u1ds+pW/qhG!%qh4j!o7DPne,T at HJcGECJ,~>
+JcFm4rrAbmr;_EKJcC<$_uKbYs2Y/Ys24lQs1\NEs0r$7s/uC%s/4nRs/,gos/H$us/c7&s/uC*
+s0;U1s0_m8rO;\(qnN0HrPJTQs2G#Xs2b5^rQ>)^s31Mfs3CYjs&T/$s&f;(s'#G,rETA.s'G_H
+s)e9`s'bq:s'u(>s(2. at s(D:DrFu:Hs(hRLs)%^Ps)7pVs)J!Xs)\3^s)n9`s*+Kfs*=Qhs*Ocn
+rI+]prI=crs+1-#s+C9#rIP!#nUpjko7QQ>q3U]?nX9EGrL<bUrLNt[q4IVYqk<t_li-q'qo8NR
+s2k;as3:Shs3Uens3q"us4@;'s4RG+s4dM.s5*e5s5<q9s5O"9s53k3s4[M*s4..us3gkns3Uel
+rQbAds31Mds2k;]s2G#Vs2+fOs1eTIs1A<Bs1&*<s0_m5s0D[/s0)I*s/l=%rMoaos/>mos/,gm
+s.oUgqkF%_rLinWrLWnWpRL]AopYoKec(."e,T at HJcGECJ,~>
+JcFm4rrAbmr;_EKJcC<$_uHohqu>E"s"+1&s"aU2s#9s;s#g<ErBL<]s&T/$s%<;_s%<;bs%WMh
+s&&eps&B"us&T/$s&f;(s'#A+s'>Y2rF#Y7s'u(>s(24Bs(D at Gs(_RLs(q^Ps).jTs)A!Xs)S-\
+s)e9`s*"Eds*4Qhqg/3fo6g@^s*+EhpO2r:p\k,ApON-lrIY!#rIk3)rJ(?-s+p]3s,-i7s,I&=
+s,d8Cs-*JJs-NbRs.'+\s.TIfs/,gps/Q+#s02O0s0hs<s1JBHs2+fRs2b5ds3gqts4IA+s5*e7
+rSmk;rT+"?s6'FHs6TdTs7?9as7u]mli$k[s7ZKas7--Ys6fpSs6TdNs69LGs6]jTs6TdLs5s at B
+s5O(:s5!_0s4RG&s3L_fs2Y/Zs2G#Zs31Mis3CYfs2b5Zs24lQs1eTIs1A<As0r$8s0Ma2s02O)
+s/Z1"s/H$ss/5mos.o[is.]Oes.KC`s-s%Us-<VJs-!DErK.&?s,R&;qi(K3rJLW3qhY-)s+pW/
+qhG!%qh4j!o7DPne,T at HJcGECJ,~>
+JcFm4rrAViqZ)3IJcC<$bQ"bpq>]9"m0*;'LBRVWo*"Xkrrr?=q\oDPr>bhXr>tt\r?2+`s!%If
+s!7Uks!Rgqs""+$s"FC,s"j[4s#9s=s#g<Gs$H`Ss%*/^s/>sts/c7&s0;U2s0r$?s1\NLs2G#%
+s-WhVs.B=cs/,gqs/c7's0)I.s0Vg8s1nTMs2Y/`s3Uess4dS3s5a4As5s:Cs5s:As5a4?s5F"5
+s4@:us31Mbs2P)Ws2+fNs1nZNs2G#Xs2"`Js0r$6s/uC%s/5mls.KC_s-s%Vs-NbNs-3PHs,R,:
+s+^Q*s*aons)n?^s)7pRs(_RHs(24>s'Pe2s&oA's&8qps%r_js%WMes%<;_s%!)Xs$QfPs$$HE
+s#9s7rA4I.s"OI+s"=='s"+$tr at 7grs![gns!I[jq]u2trJ19)q1\^!qh+j!pOe%sdJs.FJcGQG
+J,~>
+JcFm4rrAViqZ)3IJcC<$bQ%U`s2P)Xs24lQs1\NFs1&*9s0)I's/5moj/)dQs/>sts/Z1$s/uC*
+s02O/s0V[3q>^E.rP8HMs24lTs2P)Zs2b5^rQ>/`s31Mfs3CYjs&T)"s&f;(s'#G,s'5S0s'G_H
+rH/'Js'l"<s(). at rFZ(BrFl.Ds(_RLrG;LNrGMXRrG_dVs)S-\rH/'^s*"EdrHS?fs*F]lrI"Wn
+rI4crrIFp!rIX'^s*sWmo*PGLrKm&Ao9oQGrL<hWrLNnYqk*h[qk<t_li-q*pWNHXs3:Sis3Ueo
+s4%)"s4@;(s4dS0s53k8s5X.?s5j:CrTF4CrT4(?s5X.=s5F"8s5!_0s4RG)s4@;%s4./!s3gqp
+s3L_is31Mcs2k;]s2G#Us2"`Ns1\NHs1A<As1&*;s0_m5s0;U.s0)I*s/l=&s/Z1"rMfaorMT[m
+s/#akqkO%_qk=%_q4IVWq47,Io:,KCe,FpudJs.FJcGQGJ,~>
+JcFm4rrAViqZ)3IJcC<$bQ"bpq>]9"s"+1&s"XO1s#0m9s#g<ErBL<^s&]5&q+CZ]s%iYks&/kr
+s&K)"s&]5&s&oA*rETA.rEoS4s'l"<s(). at s(;:Ds(VLJs(hXNs)%dRs)7pVs)J'Zs)\3^s)n?b
+s*+KfrH\EhrHn3bo6pX`o6p6/qg\?jrIOp!rIb'%s+UK-rJ1E/s,$c5s,6o:s,R, at s,m>Fs-<VN
+s-`nWs.97as.fUks/>sts/c7&s0;U2s0r$?s1\NLs2G#Zs3(Gfs3^krs4IA+s5*e5s5<k7s5O(D
+s69RIs6K^Qs7--]s7cQili$kZs7QE^s6fpSs6TdOs69RIs69RMs7--]s7--Ws6BXIs5j:@s5F"8
+s5!_1pY5`%s4RG's3q"ps3:Sds2Y/Ys2+fOs1\NGs186?s0hs6s0;U.s/l=%s/Q*us/>sqs/,gm
+s.o[hs.TIbs.'+Ws-E\LrKI8Es,m>Cs,[,=rJg]5s,6i5rJCK/qhP3-rJ19)q1\^!qh+j!pOe%s
+dJs.FJcGQGJ,~>
+JcFm4rrAViqZ)3IJcC<$bQ"bpq>]9"m0*;'LBRVWo*"Xkrrr?=q\oDPr>bhXr>tt\r?2+`s!%If
+s!7Uks!Rgqs""+$s"FC,s"j[4s#9s=s#g<Gs$H`Ss%*/^s/>sts/c7&s0;U2s0r$?s1\NLs2G#%
+s-WhVs.B=cs/,gqs/c7's0)I.s0Vg8s1nTMs2Y/`s3Uess4dS3s5a4As5s:Cs5s:As5a4?s5F"5
+s4@:us31Mbs2P)Ws2+fNs1nZNs2G#Xs2"`Js0r$6s/uC%s/5mls.KC_s-s%Vs-NbNs-3PHs,R,:
+s+^Q*s*aons)n?^s)7pRs(_RHs(24>s'Pe2s&oA's&8qps%r_js%WMes%<;_s%!)Xs$QfPs$$HE
+s#9s7rA4I.s"OI+s"=='s"+$tr at 7grs![gns!I[jq]u2trJ19)q1\^!qh+j!pOe%sdJs.FJcGQG
+J,~>
+JcFm4rrAViqZ)3IJcC<$bQ%U`s2P)Xs24lQs1\NFs1&*9s0)I's/5moj/)dQs/>sts/Z1$s/uC*
+s02O/s0V[3q>^E.rP8HMs24lTs2P)Zs2b5^rQ>/`s31Mfs3CYjs&T)"s&f;(s'#G,s'5S0s'G_H
+rH/'Js'l"<s(). at rFZ(BrFl.Ds(_RLrG;LNrGMXRrG_dVs)S-\rH/'^s*"EdrHS?fs*F]lrI"Wn
+rI4crrIFp!rIX'^s*sWmo*PGLrKm&Ao9oQGrL<hWrLNnYqk*h[qk<t_li-q*pWNHXs3:Sis3Ueo
+s4%)"s4@;(s4dS0s53k8s5X.?s5j:CrTF4CrT4(?s5X.=s5F"8s5!_0s4RG)s4@;%s4./!s3gqp
+s3L_is31Mcs2k;]s2G#Us2"`Ns1\NHs1A<As1&*;s0_m5s0;U.s0)I*s/l=&s/Z1"rMfaorMT[m
+s/#akqkO%_qk=%_q4IVWq47,Io:,KCe,FpudJs.FJcGQGJ,~>
+JcFm4rrAViqZ)3IJcC<$bQ"bpq>]9"s"+1&s"XO1s#0m9s#g<ErBL<^s&]5&q+CZ]s%iYks&/kr
+s&K)"s&]5&s&oA*rETA.rEoS4s'l"<s(). at s(;:Ds(VLJs(hXNs)%dRs)7pVs)J'Zs)\3^s)n?b
+s*+KfrH\EhrHn3bo6pX`o6p6/qg\?jrIOp!rIb'%s+UK-rJ1E/s,$c5s,6o:s,R, at s,m>Fs-<VN
+s-`nWs.97as.fUks/>sts/c7&s0;U2s0r$?s1\NLs2G#Zs3(Gfs3^krs4IA+s5*e5s5<k7s5O(D
+s69RIs6K^Qs7--]s7cQili$kZs7QE^s6fpSs6TdOs69RIs69RMs7--]s7--Ws6BXIs5j:@s5F"8
+s5!_1pY5`%s4RG's3q"ps3:Sds2Y/Ys2+fOs1\NGs186?s0hs6s0;U.s/l=%s/Q*us/>sqs/,gm
+s.o[hs.TIbs.'+Ws-E\LrKI8Es,m>Cs,[,=rJg]5s,6i5rJCK/qhP3-rJ19)q1\^!qh+j!pOe%s
+dJs.FJcGQGJ,~>
+JcFm4rrADcr;_EKJcC<$dJp=tqu>K$m0*;'K`qDUo`Xdkr<<!8r>YbVr>knZr?(t\ruqCds!7Uk
+s!Rgqs!n%!s"47)s"aU2s#0m;s#^6Ds$6TNs$cs`s/,gos/H%!s/c7(s0D[4s1/0Bs,-iAs-NbS
+s.97as.o[ns/Z1&s0;U0s0Ma7s2+fWs2Y/Zs2k;ds3q##s5!_7s6'FJs6TdOs6BXKs60FEs5s at A
+s5*e0s4..rs3:Sds2b5ZrQYAds3CYds2=rPs186=s0Ma0s/l=$s/5mms.]Ods.97]s-WhOs-!DB
+s,$c0s+12us*=Wfs)S-Xs(q^Ls(;:As'bq6s',M*s&K(ss&&ems%`Sgs%EA`s%!)Xs$QfOs#pBC
+s#9s8s"sa3s"aO-r at e1's"47%r@@mtr at .[nr?hIhq]u&oqhG!%qh4?hJcF!pr;_EKrVqB~>
+JcFm4rrADcr;_EKJcC<$dJs6fs2P)Ws2+fOs1\NFs1&*:s0)I&s/>spiMHRPs/H%!s/c7&s/uC*
+s0;U1qmHI4qu?Q.s1nZNs2+fRs2G#Xs2b/\s2tAbs31Mfs3CYjs&K)"s&]5&s&oA*s',G,s'>YF
+s)\3^s'bq:s'u(>s(2. at s(D:DrFu:Hs(hRLs)%^Ps)7jTs)J!Xs)\3^s)n9`s*+KfrH\Ehs*Ocn
+rI+]prI=itrIP!#iIh/[on2c at rIa^/nX9EGrL<bUrLNt[qk*h[q4[h_li-q*s2tAds3L5_s3gqs
+s475&s4[M.s5*e5s5F"<s5j:Ds69RLs6TdOs6BXKs60FEs5s at Cs5a4?s5O(;s53k5s5!_0s4RG(
+s4%(ss3Uels3:Ses2tA_s2Y/Ys24lQs1eTJs1JBDs1/0=s0hs8s0Ma2s0;U.s0)I*s/l=&s/Q$s
+rM]aorMKUks.oIcqkEt]s.K7]rLWhUo:5??q3ok5JcF!pr;_EKrVqB~>
+JcFm4rrADcr;_EKJcC<$dJp=tqu>K$s"+1&s"XO1s#0m:s#U0Cs$$HIs&T/$s&o:ls%<;bs%WMh
+s%r_ms&8qss&K)"s&f;(s'#G,s'>Y2s'Pe6s'bq:s'u(>s(24Bs(D at Fs(_RLs(q^Ps).jTs)A!X
+s)S-\s)e9`s*"EdrHS?frHeKjq0_RXs*43bnbr95q1/EprIY!#rIk3)s+^Q/s+p]3s,-c5s,I&=
+s,d8Ds-3PLs-WhTs.'+\s.TIgs/,gos/H%!s/c7(s0D[4s1/0Bs1eTTs2Y/\s3(Ges3^krs4@;)
+s5!Y1s5<qAs6fpQs60LIs6TdSs763_s7u]mn,<:`s7lWds7$'Us6K^Ls60LGs763^s7QEgs7ZKa
+s6p!Ss6BXJs6'FEs5a4?s5Nk5s5*e2s4[M*s4%(rs3CYfs2b5[s2=rSs1nZKs1A<As0r$9s0D[/
+s/uC's/Z1"s/H$ss/,gls.fUfs.KC_s-s%Us-<VKrKI2Cs,m8ArK$u=s,Hu9rJUW3s,$W/onWF!
+qh=p#m=Tuic2[_BJcG]KJ,~>
+JcFm4rrADcr;_EKJcC<$dJp=tqu>K$m0*;'K`qDUo`Xdkr<<!8r>YbVr>knZr?(t\ruqCds!7Uk
+s!Rgqs!n%!s"47)s"aU2s#0m;s#^6Ds$6TNs$cs`s/,gos/H%!s/c7(s0D[4s1/0Bs,-iAs-NbS
+s.97as.o[ns/Z1&s0;U0s0Ma7s2+fWs2Y/Zs2k;ds3q##s5!_7s6'FJs6TdOs6BXKs60FEs5s at A
+s5*e0s4..rs3:Sds2b5ZrQYAds3CYds2=rPs186=s0Ma0s/l=$s/5mms.]Ods.97]s-WhOs-!DB
+s,$c0s+12us*=Wfs)S-Xs(q^Ls(;:As'bq6s',M*s&K(ss&&ems%`Sgs%EA`s%!)Xs$QfOs#pBC
+s#9s8s"sa3s"aO-r at e1's"47%r@@mtr at .[nr?hIhq]u&oqhG!%qh4?hJcF!pr;_EKrVqB~>
+JcFm4rrADcr;_EKJcC<$dJs6fs2P)Ws2+fOs1\NFs1&*:s0)I&s/>spiMHRPs/H%!s/c7&s/uC*
+s0;U1qmHI4qu?Q.s1nZNs2+fRs2G#Xs2b/\s2tAbs31Mfs3CYjs&K)"s&]5&s&oA*s',G,s'>YF
+s)\3^s'bq:s'u(>s(2. at s(D:DrFu:Hs(hRLs)%^Ps)7jTs)J!Xs)\3^s)n9`s*+KfrH\Ehs*Ocn
+rI+]prI=itrIP!#iIh/[on2c at rIa^/nX9EGrL<bUrLNt[qk*h[q4[h_li-q*s2tAds3L5_s3gqs
+s475&s4[M.s5*e5s5F"<s5j:Ds69RLs6TdOs6BXKs60FEs5s at Cs5a4?s5O(;s53k5s5!_0s4RG(
+s4%(ss3Uels3:Ses2tA_s2Y/Ys24lQs1eTJs1JBDs1/0=s0hs8s0Ma2s0;U.s0)I*s/l=&s/Q$s
+rM]aorMKUks.oIcqkEt]s.K7]rLWhUo:5??q3ok5JcF!pr;_EKrVqB~>
+JcFm4rrADcr;_EKJcC<$dJp=tqu>K$s"+1&s"XO1s#0m:s#U0Cs$$HIs&T/$s&o:ls%<;bs%WMh
+s%r_ms&8qss&K)"s&f;(s'#G,s'>Y2s'Pe6s'bq:s'u(>s(24Bs(D at Fs(_RLs(q^Ps).jTs)A!X
+s)S-\s)e9`s*"EdrHS?frHeKjq0_RXs*43bnbr95q1/EprIY!#rIk3)s+^Q/s+p]3s,-c5s,I&=
+s,d8Ds-3PLs-WhTs.'+\s.TIgs/,gos/H%!s/c7(s0D[4s1/0Bs1eTTs2Y/\s3(Ges3^krs4@;)
+s5!Y1s5<qAs6fpQs60LIs6TdSs763_s7u]mn,<:`s7lWds7$'Us6K^Ls60LGs763^s7QEgs7ZKa
+s6p!Ss6BXJs6'FEs5a4?s5Nk5s5*e2s4[M*s4%(rs3CYfs2b5[s2=rSs1nZKs1A<As0r$9s0D[/
+s/uC's/Z1"s/H$ss/,gls.fUfs.KC_s-s%Us-<VKrKI2Cs,m8ArK$u=s,Hu9rJUW3s,$W/onWF!
+qh=p#m=Tuic2[_BJcG]KJ,~>
+JcFm4rrA8_r;_EKJcC<$ec2h%qu>K$m0*;'K*;2SpB:!mr<<3*q\o>NruCtXruV+\ruh=bs!%Ig
+s!@[ls![mrs""+#s"==*s"aU3s#9s=s#g<Fs$?ZPs.TIfs/#ans/>sts/Z1%s02O0s+13)s-3JP
+s.01`s/,gqs/Z1&s02O1s0r$As2Y/es3UekrQP;hs475)s5<q<s69RNs6p!Ws6fpSs6K^MrTX at D
+s5<q3s4@;"s3CYfs4mY/s4[M*s475"s3L_gs2Y/Xs1eTGs1&*;s0D[/s/c7"s/,gks.KC^s-`nP
+s,m>@s,$c1s+:9!s*=Wfs)\3Ys(hXJs(;:?s'Yk4s&oA's&B"qs%r_ks%`Ses%*/Zs$ZlRs$-NG
+s#L*<s#0m7s"s[1s"aO-s"OI+s"=='s"+1#s!msrs![gns!I[jr?VCfqhP-)q1\WtpOi9nJcEpn
+r;_EKJ,~>
+JcFm4rrA8_r;_EKJcC<$ec5Zgs2=rSs1nZKs1A<?s02O's/>moiMHRPs/>sss/c7&s/uC*s02O.
+rNlO2s0_b(s1\HHrP8HLs24lTs2G#Ys2b5^s2tAbs31Mfs3CYjs&K)"s&]5&s&o;(s',M.s'>YF
+s)\3^s'Yk8s'l"<s(). at s(;4Bs(M at Fs(_LJs(q^PrGMXRs)@pVrGqpZrH/'^s*"?bs*4QhrHeKj
+s*Xips*jorrIFp!rIX!\s*scqnHo/Hs+L!2o9oWIqj[VUrLNnYrLa%]qk<t_mJd.,s2tAcs3CYl
+s3q"upXfGts4RG,s4mY1s5*e5s5<q:s5a4Bs6'FHs6K^Os6]jTs7$'Vs6]jPs6BRIs60LGs5s at C
+s5a4?s5F"8s5!_0s4IA&s4%(rs3Ueks3:Ses2k;^s2P)Ws24lQs1eTJs1JBDs1/0>s0r$9s0Va2
+s0D[0s02O,s/l=%s/Q*us/>mos/,aks.oCarM'7arLj%[rLWbSopkK?qjQ(7JcEpnr;_EKJ,~>
+JcFm4rrA8_r;_EKJcC<$ec2h%qu>K$s"+1%s"aU2s#0m:s#U0Cs$$HIs&]5&s'#@ms%<;as%WMg
+s%iYls&8qss&K)"s&f;(s',M.s'>Y2s'Pe6s'bk8s(). at s(;:Ds(MFIs(hXNs)%dRs)7pVs)J'Z
+s)\3^s)n9`s*+Kfs*=QhrHnKjl$`SVpO2T1pOE!hrIOp!rIb-'rIt9+s+gW1s,$c5s,6o9s,I&=
+s,d8Ds-3PLs-WhTs.'+\s.TIfs/#ans/>sts/Z1%s02O0s0hs=s2G#]s2k;]s2tAcs3L_ms4%)"
+s4RG,s53k?s763Ys6TdMs6'FIs6]jVs7H?cs8)3_s8)cis7?9Zs6TdLs6'FYs82Wjs82ils7ZKb
+s763Ys6fpSs6K^Ms69RIs5s at Bs5O(:s5*e1s4RG's3q"ps3:Sds2Y/Ys24lQs1eTIs1A<@s0hs7
+s0;U-s/l=%s/Q*us/>sps.fUgs.KC`s.'+Ws-NbNqiq&CrK@,As,d8As,R,=rJ^]5s,-c3rJ:'#
+rJ(-%q1SKpq1=1tbQ%M at JcC6~>
+JcFm4rrA8_r;_EKJcC<$ec2h%qu>K$m0*;'K*;2SpB:!mr<<3*q\o>NruCtXruV+\ruh=bs!%Ig
+s!@[ls![mrs""+#s"==*s"aU3s#9s=s#g<Fs$?ZPs.TIfs/#ans/>sts/Z1%s02O0s+13)s-3JP
+s.01`s/,gqs/Z1&s02O1s0r$As2Y/es3UekrQP;hs475)s5<q<s69RNs6p!Ws6fpSs6K^MrTX at D
+s5<q3s4@;"s3CYfs4mY/s4[M*s475"s3L_gs2Y/Xs1eTGs1&*;s0D[/s/c7"s/,gks.KC^s-`nP
+s,m>@s,$c1s+:9!s*=Wfs)\3Ys(hXJs(;:?s'Yk4s&oA's&B"qs%r_ks%`Ses%*/Zs$ZlRs$-NG
+s#L*<s#0m7s"s[1s"aO-s"OI+s"=='s"+1#s!msrs![gns!I[jr?VCfqhP-)q1\WtpOi9nJcEpn
+r;_EKJ,~>
+JcFm4rrA8_r;_EKJcC<$ec5Zgs2=rSs1nZKs1A<?s02O's/>moiMHRPs/>sss/c7&s/uC*s02O.
+rNlO2s0_b(s1\HHrP8HLs24lTs2G#Ys2b5^s2tAbs31Mfs3CYjs&K)"s&]5&s&o;(s',M.s'>YF
+s)\3^s'Yk8s'l"<s(). at s(;4Bs(M at Fs(_LJs(q^PrGMXRs)@pVrGqpZrH/'^s*"?bs*4QhrHeKj
+s*Xips*jorrIFp!rIX!\s*scqnHo/Hs+L!2o9oWIqj[VUrLNnYrLa%]qk<t_mJd.,s2tAcs3CYl
+s3q"upXfGts4RG,s4mY1s5*e5s5<q:s5a4Bs6'FHs6K^Os6]jTs7$'Vs6]jPs6BRIs60LGs5s at C
+s5a4?s5F"8s5!_0s4IA&s4%(rs3Ueks3:Ses2k;^s2P)Ws24lQs1eTJs1JBDs1/0>s0r$9s0Va2
+s0D[0s02O,s/l=%s/Q*us/>mos/,aks.oCarM'7arLj%[rLWbSopkK?qjQ(7JcEpnr;_EKJ,~>
+JcFm4rrA8_r;_EKJcC<$ec2h%qu>K$s"+1%s"aU2s#0m:s#U0Cs$$HIs&]5&s'#@ms%<;as%WMg
+s%iYls&8qss&K)"s&f;(s',M.s'>Y2s'Pe6s'bk8s(). at s(;:Ds(MFIs(hXNs)%dRs)7pVs)J'Z
+s)\3^s)n9`s*+Kfs*=QhrHnKjl$`SVpO2T1pOE!hrIOp!rIb-'rIt9+s+gW1s,$c5s,6o9s,I&=
+s,d8Ds-3PLs-WhTs.'+\s.TIfs/#ans/>sts/Z1%s02O0s0hs=s2G#]s2k;]s2tAcs3L_ms4%)"
+s4RG,s53k?s763Ys6TdMs6'FIs6]jVs7H?cs8)3_s8)cis7?9Zs6TdLs6'FYs82Wjs82ils7ZKb
+s763Ys6fpSs6K^Ms69RIs5s at Bs5O(:s5*e1s4RG's3q"ps3:Sds2Y/Ys24lQs1eTIs1A<@s0hs7
+s0;U-s/l=%s/Q*us/>sps.fUgs.KC`s.'+Ws-NbNqiq&CrK@,As,d8As,R,=rJ^]5s,-c3rJ:'#
+rJ(-%q1SKpq1=1tbQ%M at JcC6~>
+JcFm4rrA,[r;_EKJcC<$g]+I+qu>K$m0*;'JHYuQq#p3oqZ[!(q\oDPruCtXruV+\ruh=br?M=f
+s!@[ms!dsts""+%r at n7-s#'g9s#U0Cs$-OSs.B=bs.]Ohs/,gos/H$us/c7's*ap"s-*>Ss.TIg
+s/>t"s02O0s0r$?s2=r_s4IA-s4dS,s4@;#s475's5!_7s5s at Ms7$'YrU^'[s7--Xs6]jQs6'FA
+s5*e=s5s at Bs5X.<s53k4s4[M*s4..us3^kms31Mas2=rQs1\NFs1&*8s/uC$s/#ais.B=]s-WhO
+s,d8?s,$c0s+:9"s*F]gs)\3Ys(q^Ks(24=s'G_1s&f;$s&8qps%r_js%EA_s$m#Us$?ZKs#^6A
+rAaa6s#'a3rA4I/rA"=*s"==&s""+!s!dmps!Rgnq^)+brJ19)qh=j!on3'lJcEjlr;_QOJ,~>
+JcFm4rrA,[r;_EKJcC<$g].;ls24lQs1eTIs1/09s/l=#s/5akiMHRPs/>sts/c7&s/uC*s0;U0
+s0Ma4s0_b(rP&6Fs1nZNs2+fRs2G#Xs2b5^s2tAbs31Gds3CXErDrr"s&f;(s'#G,s'5S0s)J'Z
+s)\3JrF,_8s'u(>s(24Bs(D:Ds(VLJrG2FLs)%^Ps)7pVs)J!XrH&!\qfVp^s*+Eds*=Wjs*O]l
+s*aors*sutrIP!#hh1rYq1J2Dqh+p%opG?=s-ihSs.&tWs.91]rLj+_rM&WWs2k;bs3CYks3gqt
+s4@;(s4dM.s5*e5s5F";s5X. at s5s@Es60FGs6BRKs6]jSs6p!Ws7-'Zs763[s6p!Ts6TdOs6BXK
+s6'FEs5a4?s5F"8s5!_/s4IA%s3q"qs3L_js31Mds2k;]s2P)Ws2+fPs1eTIs1JBDs186 at s0r$:
+s0_m6rNlO0s0;U.s/uC(s/Z1"s/>mos/,akrM97arM'7arLj+]qk!DMpRLcCqjQ(7JcEjlr;_QO
+J,~>
+JcFm4rrA,[r;_EKJcC<$g]+I+qu>K$s"+1&s"XO2s#0g8s#U0Ds$-Nbs&oA+s%*/]s%<;bs%WGe
+s%r_ns&B"us&T/%s&oA*s'5S0s'G_4s'Ye6s'l"<s(24Bs(D at Fs(VLKs(q^Ps).jTs)@pVs)\3^
+rH8-`s*+KfrH\Ehs*OQhl$`SWq0hf3s*jippON3nrIY!#s+LE+qhG-+s+p]3s,-i7s,I&>s,R,@
+s-!DHs-E\Ps-itYs.B=bs.]Ohs/,gos/H$us/c7's0;U2s2+f^s3:SdrQ,#^s3:Sjs3gqts4@;.
+s60LQs7H?]s6fpQs60LIs6TdSs763`mJ[(\s7QE_kPbGYs7u]hs7QEas763[s6fpQs6'FDs5X.<
+s53k4s4dS+s4..ts3L_hs2k;\s2=rSs1nZKs1JBCs0r$9s0Ma0s/uC's/Z1"s/>sos.fUfs.B=^
+s-itTs-N\MrK[8ErKI2Cs,m>Cs,[2?s,I&;s,6i5s,$W/onWF!qh=j!on3'lJcEjlr;_QOJ,~>
+JcFm4rrA,[r;_EKJcC<$g]+I+qu>K$m0*;'JHYuQq#p3oqZ[!(q\oDPruCtXruV+\ruh=br?M=f
+s!@[ms!dsts""+%r at n7-s#'g9s#U0Cs$-OSs.B=bs.]Ohs/,gos/H$us/c7's*ap"s-*>Ss.TIg
+s/>t"s02O0s0r$?s2=r_s4IA-s4dS,s4@;#s475's5!_7s5s at Ms7$'YrU^'[s7--Xs6]jQs6'FA
+s5*e=s5s at Bs5X.<s53k4s4[M*s4..us3^kms31Mas2=rQs1\NFs1&*8s/uC$s/#ais.B=]s-WhO
+s,d8?s,$c0s+:9"s*F]gs)\3Ys(q^Ks(24=s'G_1s&f;$s&8qps%r_js%EA_s$m#Us$?ZKs#^6A
+rAaa6s#'a3rA4I/rA"=*s"==&s""+!s!dmps!Rgnq^)+brJ19)qh=j!on3'lJcEjlr;_QOJ,~>
+JcFm4rrA,[r;_EKJcC<$g].;ls24lQs1eTIs1/09s/l=#s/5akiMHRPs/>sts/c7&s/uC*s0;U0
+s0Ma4s0_b(rP&6Fs1nZNs2+fRs2G#Xs2b5^s2tAbs31Gds3CXErDrr"s&f;(s'#G,s'5S0s)J'Z
+s)\3JrF,_8s'u(>s(24Bs(D:Ds(VLJrG2FLs)%^Ps)7pVs)J!XrH&!\qfVp^s*+Eds*=Wjs*O]l
+s*aors*sutrIP!#hh1rYq1J2Dqh+p%opG?=s-ihSs.&tWs.91]rLj+_rM&WWs2k;bs3CYks3gqt
+s4@;(s4dM.s5*e5s5F";s5X. at s5s@Es60FGs6BRKs6]jSs6p!Ws7-'Zs763[s6p!Ts6TdOs6BXK
+s6'FEs5a4?s5F"8s5!_/s4IA%s3q"qs3L_js31Mds2k;]s2P)Ws2+fPs1eTIs1JBDs186 at s0r$:
+s0_m6rNlO0s0;U.s/uC(s/Z1"s/>mos/,akrM97arM'7arLj+]qk!DMpRLcCqjQ(7JcEjlr;_QO
+J,~>
+JcFm4rrA,[r;_EKJcC<$g]+I+qu>K$s"+1&s"XO2s#0g8s#U0Ds$-Nbs&oA+s%*/]s%<;bs%WGe
+s%r_ns&B"us&T/%s&oA*s'5S0s'G_4s'Ye6s'l"<s(24Bs(D at Fs(VLKs(q^Ps).jTs)@pVs)\3^
+rH8-`s*+KfrH\Ehs*OQhl$`SWq0hf3s*jippON3nrIY!#s+LE+qhG-+s+p]3s,-i7s,I&>s,R,@
+s-!DHs-E\Ps-itYs.B=bs.]Ohs/,gos/H$us/c7's0;U2s2+f^s3:SdrQ,#^s3:Sjs3gqts4@;.
+s60LQs7H?]s6fpQs60LIs6TdSs763`mJ[(\s7QE_kPbGYs7u]hs7QEas763[s6fpQs6'FDs5X.<
+s53k4s4dS+s4..ts3L_hs2k;\s2=rSs1nZKs1JBCs0r$9s0Ma0s/uC's/Z1"s/>sos.fUfs.B=^
+s-itTs-N\MrK[8ErKI2Cs,m>Cs,[2?s,I&;s,6i5s,$W/onWF!qh=j!on3'lJcEjlr;_QOJ,~>
+JcFm4rr at uWr;_EKJcC<$huBs1qu>K$m0*;'JHYuUrrDp!nHo4!q$-X6ruCtXruV1^ruh=bs!%If
+r?VChs!Ians!dsus"==+rA+C/s#0m:s#^7Ks-s%\s.fUis/#[ks/5mqs/H$As*F]ps-!>ZqksIk
+s/Z1's0Ma8s3^kus4[M1s69RHs5s at As5F"8s4mY2s5F"Es7--[s7?9_s7Q?bs7QEas7?9\s6p!S
+s6BXKs6'FDs5a4>s5F"7s4mY.s4@;$s3q"qs3L_is31Mcs2b5Xs1JB at s0;U*s/>sns.KC`s-s%U
+s-<VGs,?u6s+UK(s*aoos*+Kas)7pRs(MFCs'Yk4s'#G(s&B"rs%r_is%EA_s$crUs$H`Os$-NI
+s#g<Cs#L*=s#9s9rAFU3q_S7,s"OI*s"+*us!dsrr?qOjq^)7fqhP-)q1\WtpOi9nJcE^hqZ)QS
+J,~>
+JcFm4rr at uWr;_EKJcC<$huE_ms1eTJs1JBCs0Vg/s/Q*ts/+VKrMKUos/Z1%s/uC*s02O.s0D[2
+s0V\'qnE*Fs1nZNs2+fRs2=rVs2Y/\s2k;`s3(Gds3:Shs&B"us&T/$s&f;(s'#G,rETABs)S-\
+s'Pe6s'bq:s'u(>s(2. at s(D at Fs(VFHs(hXNs)%^Ps)7pVrGhjXs)\3^rH8!\rHJ9drH\EhrHnQl
+s*aiqs+('!qh!dZs*sounHo)FrIjp4opPcIqj[PSrLNt[rLa%]rLs7cli-q+s3(Ges3Ueos4%)"
+s4RG,s5!_4s5F";s5j:Es69RLs6TdQs6p!Ws7--[s7?9]s7--Ys6p!Xs763]s7H?arV-?bs7H?_
+s7--Xs6TdNs69RHs5j:As5O(;s5*e2s4[M)s4..us3^kms3:Sfs3(Gbs2k;\s2=rSs1nZLs1SHF
+s1A<Bs1/0>s0r$:rO)[4rNlO/s0)I*s/c7#s/Gsps/,aks.oIcrM'1_s.K+Yqk!JOq4-oCs-hL;
+JcE^hqZ)QSJ,~>
+JcFm4rr at uWr;_EKJcC<$huBs1qu>K$s"+1%s"OI1s#0m9s#L*@s#g<Fs&]/'s%*/]s%<;as%NGe
+s%`Sis&&eps&K)"s&f;(s'#G-s'>Y2rEoS4s'bq:s'u(?s(;:Ds(MFIs(hXNs)%dRrGV^Ts)S'Z
+s)e9`s*"Eds*4Qhs*FWjrI!XRs*=Kinbr33q1/EprIY'%s+LE+q1ep)rJ:K1s,6o;q2kW>s-3PL
+s-`nVs.B=ds.o[krMKUms/>sss/Q+#s0)I<s3q"qs3CYgs2k;]s2k;bs3CYls5s at Is6TdTs7u]g
+s7?9[s6]jOs6'FIs6fp``Voi7s82ijs7H?\s6]jNs5s at Bs5O(:s5*e2s4[M)s4%(qs3:Sds2Y/Y
+s24lQs1eTIs1A<@s0hs7s0;U-s/l=%s/Q*ss/#ais.KCas.97]s.'+Ys-itUs-N\MrK[>Gqih&B
+s,d8As,I&;rJU]5rJCE-onWL#q1\WtpOi9nJcE^hqZ)QSJ,~>
+JcFm4rr at uWr;_EKJcC<$huBs1qu>K$m0*;'JHYuUrrDp!nHo4!q$-X6ruCtXruV1^ruh=bs!%If
+r?VChs!Ians!dsus"==+rA+C/s#0m:s#^7Ks-s%\s.fUis/#[ks/5mqs/H$As*F]ps-!>ZqksIk
+s/Z1's0Ma8s3^kus4[M1s69RHs5s at As5F"8s4mY2s5F"Es7--[s7?9_s7Q?bs7QEas7?9\s6p!S
+s6BXKs6'FDs5a4>s5F"7s4mY.s4@;$s3q"qs3L_is31Mcs2b5Xs1JB at s0;U*s/>sns.KC`s-s%U
+s-<VGs,?u6s+UK(s*aoos*+Kas)7pRs(MFCs'Yk4s'#G(s&B"rs%r_is%EA_s$crUs$H`Os$-NI
+s#g<Cs#L*=s#9s9rAFU3q_S7,s"OI*s"+*us!dsrr?qOjq^)7fqhP-)q1\WtpOi9nJcE^hqZ)QS
+J,~>
+JcFm4rr at uWr;_EKJcC<$huE_ms1eTJs1JBCs0Vg/s/Q*ts/+VKrMKUos/Z1%s/uC*s02O.s0D[2
+s0V\'qnE*Fs1nZNs2+fRs2=rVs2Y/\s2k;`s3(Gds3:Shs&B"us&T/$s&f;(s'#G,rETABs)S-\
+s'Pe6s'bq:s'u(>s(2. at s(D at Fs(VFHs(hXNs)%^Ps)7pVrGhjXs)\3^rH8!\rHJ9drH\EhrHnQl
+s*aiqs+('!qh!dZs*sounHo)FrIjp4opPcIqj[PSrLNt[rLa%]rLs7cli-q+s3(Ges3Ueos4%)"
+s4RG,s5!_4s5F";s5j:Es69RLs6TdQs6p!Ws7--[s7?9]s7--Ys6p!Xs763]s7H?arV-?bs7H?_
+s7--Xs6TdNs69RHs5j:As5O(;s5*e2s4[M)s4..us3^kms3:Sfs3(Gbs2k;\s2=rSs1nZLs1SHF
+s1A<Bs1/0>s0r$:rO)[4rNlO/s0)I*s/c7#s/Gsps/,aks.oIcrM'1_s.K+Yqk!JOq4-oCs-hL;
+JcE^hqZ)QSJ,~>
+JcFm4rr at uWr;_EKJcC<$huBs1qu>K$s"+1%s"OI1s#0m9s#L*@s#g<Fs&]/'s%*/]s%<;as%NGe
+s%`Sis&&eps&K)"s&f;(s'#G-s'>Y2rEoS4s'bq:s'u(?s(;:Ds(MFIs(hXNs)%dRrGV^Ts)S'Z
+s)e9`s*"Eds*4Qhs*FWjrI!XRs*=Kinbr33q1/EprIY'%s+LE+q1ep)rJ:K1s,6o;q2kW>s-3PL
+s-`nVs.B=ds.o[krMKUms/>sss/Q+#s0)I<s3q"qs3CYgs2k;]s2k;bs3CYls5s at Is6TdTs7u]g
+s7?9[s6]jOs6'FIs6fp``Voi7s82ijs7H?\s6]jNs5s at Bs5O(:s5*e2s4[M)s4%(qs3:Sds2Y/Y
+s24lQs1eTIs1A<@s0hs7s0;U-s/l=%s/Q*ss/#ais.KCas.97]s.'+Ys-itUs-N\MrK[>Gqih&B
+s,d8As,I&;rJU]5rJCE-onWL#q1\WtpOi9nJcE^hqZ)QSJ,~>
+JcFm4rr at iSr;_EKJcC<$jo;T7qu>K$m0*;'JHYoSrrE!#nHo-tqZd'*q]#PTruM%Zru_7`ruqCd
+r?V=fs!Ians!dt!s"FC-rA4C/s#0m:s-NbUs.TIhs/,gps/Gsss/Z0Cs*=Wms+gW:pT==os02OB
+s5*e8s5s at Hs6fjVs7$'Ws6]jOs60LLs7Q?^s7QEcs7cQgs7uWjs7u]gs7?9\s6fpQs6BXJs6'FD
+s5X.=s5<q6s4dS,s4@;$s3q"qs3Uels3CYes2b5Xs1JB?s0)I&s/,gks.KC_s-itSs-3PEs,?u6
+s+LE&s*Xims*"E_s).jPs(D at As'Pe2s&oA&s&8qos%`Sfs%EA_s%!)Xs$ZlSs$H`Ns$$HGs#g<C
+s#L*=rAO[4s"j[1s"XO-s"==&s""$ts!dsrs!R[jq^)7frJ19)qh=j!on3'lJcERdr;_oYJ,~>
+JcFm4rr at iSr;_EKJcC<$jo>@rs1\NGs1A<As0Vg0s/Z0us/4VJs/,gps/Q+#s/uC*s02O.s0D[2
+s0V\'s1S<Ds1eTMs2+fRrP\`Ts2P)[s2k;`s3(Gds3:RCs&K)"s&]5&s&o;(s',M.rGhjXs'P_4
+s'bq:s'u(>s(2. at s(D at Fs(VLJs(hRLs)%dRs)7jTs)J'Zs)\-\s)n?bqfhp^rH\EhrHnQls*jut
+rIFp!qh!^Xs*t!"nHo)Fqh4^2opPiKqj[PSqjmbYrLa%]rLrWXs2b5`s3:Sis3^krs475&s4[M/
+s53e6rT!q>s60LKs6fpWs7QEes7u]ks7u]is7cQes7Q?^s7QEcs7cQgs7uWjs7u]gs7?9\s6fpQ
+s6BXJs6'FDs5X.=s5<q6s4dS,s4@;$s3q"qs3Uels3CYhs31Mcs2Y/Xs2"`Ns1\NHs1JBDs180>
+rO;g8rO)U1s0;U-s/uC's/Q*urMT[ms/#[iq4mn_qk=%_oq2,QpRV&KnXKQIec(."_>jH6O8j_~>
+JcFm4rr at iSr;_EKJcC<$jo;T7qu>K$s"+1%s"FC0s#0m:s#L*@s#g<Fs&f5*s%*/]s%<;as%NGe
+s%`SjrDNYps&T/$s&f;)s'5S0s'GY2s'Yk8s'l"=s(24Bs(D at Fs(VLJrG;LNs).jTs)A!Xs)S-\
+s)e9`s*"Eds*4Kfs*F]lrI!RPs*=Qknbr33q1/KrrIY!#s+LE+s+^9's+p]3s,?u=pQ>K=s-3PM
+s.'+_s/#ams/>ssrMogss/c7's0hs at s4@;#s3gqos3:SerQ,#]s53kNrV6Egs8)cms7lWes763[
+s6p!Us7=#(s82ils7ZK`s6p!Rs60LEs5X.<s53k4s4dS+s4..ts3L_hs2k;\s2=rSs1nZKs1JBC
+s0r$9s0Ma0s/uC's/Q*ts/,gms.fUgs.TIcs.B=_s.01[s-s%Ws-`nRs-EVKs-3PIs-!DEs,d8A
+s,I&;rJUW3s,$W/onWF!qh=j!on3'lJcERdr;_oYJ,~>
+JcFm4rr at iSr;_EKJcC<$jo;T7qu>K$m0*;'JHYoSrrE!#nHo-tqZd'*q]#PTruM%Zru_7`ruqCd
+r?V=fs!Ians!dt!s"FC-rA4C/s#0m:s-NbUs.TIhs/,gps/Gsss/Z0Cs*=Wms+gW:pT==os02OB
+s5*e8s5s at Hs6fjVs7$'Ws6]jOs60LLs7Q?^s7QEcs7cQgs7uWjs7u]gs7?9\s6fpQs6BXJs6'FD
+s5X.=s5<q6s4dS,s4@;$s3q"qs3Uels3CYes2b5Xs1JB?s0)I&s/,gks.KC_s-itSs-3PEs,?u6
+s+LE&s*Xims*"E_s).jPs(D at As'Pe2s&oA&s&8qos%`Sfs%EA_s%!)Xs$ZlSs$H`Ns$$HGs#g<C
+s#L*=rAO[4s"j[1s"XO-s"==&s""$ts!dsrs!R[jq^)7frJ19)qh=j!on3'lJcERdr;_oYJ,~>
+JcFm4rr at iSr;_EKJcC<$jo>@rs1\NGs1A<As0Vg0s/Z0us/4VJs/,gps/Q+#s/uC*s02O.s0D[2
+s0V\'s1S<Ds1eTMs2+fRrP\`Ts2P)[s2k;`s3(Gds3:RCs&K)"s&]5&s&o;(s',M.rGhjXs'P_4
+s'bq:s'u(>s(2. at s(D at Fs(VLJs(hRLs)%dRs)7jTs)J'Zs)\-\s)n?bqfhp^rH\EhrHnQls*jut
+rIFp!qh!^Xs*t!"nHo)Fqh4^2opPiKqj[PSqjmbYrLa%]rLrWXs2b5`s3:Sis3^krs475&s4[M/
+s53e6rT!q>s60LKs6fpWs7QEes7u]ks7u]is7cQes7Q?^s7QEcs7cQgs7uWjs7u]gs7?9\s6fpQ
+s6BXJs6'FDs5X.=s5<q6s4dS,s4@;$s3q"qs3Uels3CYhs31Mcs2Y/Xs2"`Ns1\NHs1JBDs180>
+rO;g8rO)U1s0;U-s/uC's/Q*urMT[ms/#[iq4mn_qk=%_oq2,QpRV&KnXKQIec(."_>jH6O8j_~>
+JcFm4rr at iSr;_EKJcC<$jo;T7qu>K$s"+1%s"FC0s#0m:s#L*@s#g<Fs&f5*s%*/]s%<;as%NGe
+s%`SjrDNYps&T/$s&f;)s'5S0s'GY2s'Yk8s'l"=s(24Bs(D at Fs(VLJrG;LNs).jTs)A!Xs)S-\
+s)e9`s*"Eds*4Kfs*F]lrI!RPs*=Qknbr33q1/KrrIY!#s+LE+s+^9's+p]3s,?u=pQ>K=s-3PM
+s.'+_s/#ams/>ssrMogss/c7's0hs at s4@;#s3gqos3:SerQ,#]s53kNrV6Egs8)cms7lWes763[
+s6p!Us7=#(s82ils7ZK`s6p!Rs60LEs5X.<s53k4s4dS+s4..ts3L_hs2k;\s2=rSs1nZKs1JBC
+s0r$9s0Ma0s/uC's/Q*ts/,gms.fUgs.TIcs.B=_s.01[s-s%Ws-`nRs-EVKs-3PIs-!DEs,d8A
+s,I&;rJUW3s,$W/onWF!qh=j!on3'lJcERdr;_oYJ,~>
+JcFm4rr@]OqZ)3IJcC<$li45=qu>Q&m0*;']`e?P_$'c<rrhiur<<'&r<N9?ruD%ZruV1^ruh7`
+s!.Ohs!Ians!dmrs""+$s"OI/s#0a5s#C%Ds-`nYs.fUms/H$us/c7&s0DZWs,6o?s.'+es/l=*
+s0hs?s1SHIqnW6Hs3q#0s5s at Es6K^Qs7--]s7c?fs8;oos7u]irV-?fs8)cms8;ios82iks7ZKa
+s7$'Vs6K^Ls60LFs5j:@s5O(:s5!_1s4[M+s4@;$s4%(ss3^kjs2k;\s24lLs0hs2s/H$ps.TIb
+s.'+Ws-E\Js,[2;s+^Q+s*t&qs*4Qds)J'Us(_RGs'l"7s',M*s&B"ss&&els%WMds%<;^s%!)Y
+s$crTs$H`Ns$$HFs#U0>s#9s9s#'g4s"aU/s"OI*s"41"s!n$ts![gnq^27fr?V>sqhG!%q1SKp
+q1=1t^&S$2PQ-.~>
+JcFm4rr@]OqZ)3IJcC<$li7!us1A<Bs1&*:s0)I(s/H$rs/+PIs/,gps/Q+$s/uC*s02O.s0D[2
+s0V\'rOr6Fs1eTLs2"`Ps24lTs2G#Xs2Y/\s2k;as31Mfs&8qss&K)"s&]5&s&oA*rEK;@s)J'Z
+s'P_4s'bk8s'u(>s(24Bs(D at Fs(VFHs(hXNs)%dRrGV^Ts)J!Xs)\3^s)n9`s*+Kfs*=Wjs,R,*
+rH\?fs*OcprI=crs+1'!hh1rYs+BhJrIaitq3^oEqjRJQrLEbUrLWt[rLiQWqoA`Zs3:Sjs3q#"
+s4[M.s5*_5s5O(=s5a4As5s at Es6K^Qs7--]s7c?fs8;oos7u]irV-?fs8)cms8;ios82iks7ZKa
+s7$'Vs6K^Ls60LFs5j:@s5O(:s5!_1s4[M+s4@;$s4%(ss3^kns3L_js31Mbs2P)Vs1nZKrOi0B
+s180>s1&*<s0hs8s0Vg4s0D[0s0)I*s/c7#s/H$ss/5mos/#[iq4mn_rLs1_o:PuQpRV,MnXKKG
+fD^@$^&S$2PQ-.~>
+JcFm4rr@]OqZ)3IJcC<$li45=qu>Q&s"+1%s"==.s#0m:s#L*@rB:0_rEfLps%35_s%EAcs%WMg
+s%r_ms&8qss&T/$s&f;)s',M.s'>S1s'Yk8s'l"=s(24Bs(D at Fs(VLJs(hXNrGDRXs)A!Xs)S-\
+s)e9`s*"EdrHS?fs*F]lrI!LNs*=Wmnbr33q1/Krs+:3%s+L?)s+^Q/s,$c5s,6o9rJU]8s,d8E
+s-<VMq3CuJs.97cs/>sss/Q+#s/l=,s1/0Gs2b5es4 at 5's5!_4rSIS1s4mY/s4[M>U](5gs7cQe
+s7H?]s6]jNs5s at Bs5O(:s5*e2s4[M)s4%(rs3CYfs2b5Zs24lQs1eTIs1A<As0hs7s0D[.s/l=&
+s/Z1!s/5mos.o[irM'=crLj1^s.'+Xs-WhPs-<PIs-*JGs,m>Cs,[2>rJ^]5s,-c3qhXp#qhG!%
+q1SKpq1=1t^&S$2PQ-.~>
+JcFm4rr@]OqZ)3IJcC<$li45=qu>Q&m0*;']`e?P_$'c<rrhiur<<'&r<N9?ruD%ZruV1^ruh7`
+s!.Ohs!Ians!dmrs""+$s"OI/s#0a5s#C%Ds-`nYs.fUms/H$us/c7&s0DZWs,6o?s.'+es/l=*
+s0hs?s1SHIqnW6Hs3q#0s5s at Es6K^Qs7--]s7c?fs8;oos7u]irV-?fs8)cms8;ios82iks7ZKa
+s7$'Vs6K^Ls60LFs5j:@s5O(:s5!_1s4[M+s4@;$s4%(ss3^kjs2k;\s24lLs0hs2s/H$ps.TIb
+s.'+Ws-E\Js,[2;s+^Q+s*t&qs*4Qds)J'Us(_RGs'l"7s',M*s&B"ss&&els%WMds%<;^s%!)Y
+s$crTs$H`Ns$$HFs#U0>s#9s9s#'g4s"aU/s"OI*s"41"s!n$ts![gnq^27fr?V>sqhG!%q1SKp
+q1=1t^&S$2PQ-.~>
+JcFm4rr@]OqZ)3IJcC<$li7!us1A<Bs1&*:s0)I(s/H$rs/+PIs/,gps/Q+$s/uC*s02O.s0D[2
+s0V\'rOr6Fs1eTLs2"`Ps24lTs2G#Xs2Y/\s2k;as31Mfs&8qss&K)"s&]5&s&oA*rEK;@s)J'Z
+s'P_4s'bk8s'u(>s(24Bs(D at Fs(VFHs(hXNs)%dRrGV^Ts)J!Xs)\3^s)n9`s*+Kfs*=Wjs,R,*
+rH\?fs*OcprI=crs+1'!hh1rYs+BhJrIaitq3^oEqjRJQrLEbUrLWt[rLiQWqoA`Zs3:Sjs3q#"
+s4[M.s5*_5s5O(=s5a4As5s at Es6K^Qs7--]s7c?fs8;oos7u]irV-?fs8)cms8;ios82iks7ZKa
+s7$'Vs6K^Ls60LFs5j:@s5O(:s5!_1s4[M+s4@;$s4%(ss3^kns3L_js31Mbs2P)Vs1nZKrOi0B
+s180>s1&*<s0hs8s0Vg4s0D[0s0)I*s/c7#s/H$ss/5mos/#[iq4mn_rLs1_o:PuQpRV,MnXKKG
+fD^@$^&S$2PQ-.~>
+JcFm4rr@]OqZ)3IJcC<$li45=qu>Q&s"+1%s"==.s#0m:s#L*@rB:0_rEfLps%35_s%EAcs%WMg
+s%r_ms&8qss&T/$s&f;)s',M.s'>S1s'Yk8s'l"=s(24Bs(D at Fs(VLJs(hXNrGDRXs)A!Xs)S-\
+s)e9`s*"EdrHS?fs*F]lrI!LNs*=Wmnbr33q1/Krs+:3%s+L?)s+^Q/s,$c5s,6o9rJU]8s,d8E
+s-<VMq3CuJs.97cs/>sss/Q+#s/l=,s1/0Gs2b5es4 at 5's5!_4rSIS1s4mY/s4[M>U](5gs7cQe
+s7H?]s6]jNs5s at Bs5O(:s5*e2s4[M)s4%(rs3CYfs2b5Zs24lQs1eTIs1A<As0hs7s0D[.s/l=&
+s/Z1!s/5mos.o[irM'=crLj1^s.'+Xs-WhPs-<PIs-*JGs,m>Cs,[2>rJ^]5s,-c3qhXp#qhG!%
+q1SKpq1=1t^&S$2PQ-.~>
+JcFm4rr at WMrVufrJcC<$JcG9?Z$uTMhgXqqq\Xkeq#p]tnHo-tq$-d&ru:tXruM+\ru_7`ruqCd
+s!.Ohs!Ians!dsts"+1&s"OI-s"j[5s#C$?s#pBIqk*nas/>t!s0)I.s0Vg6s+(-(s,R,Es.01c
+s/Q+'s0Ma:s2+f\s3q##s5!_7s5j4Bs60LJs6]jVs7QEinbrLcrVQ9ds82iks7QE`s7$'Us6K^L
+s60LFs5j:@s5O(;s5<q7s5!_0s4[M*s4@;#s3CYds2Y/Xs2"`Js0_m1s/H$ps.TIas-s%Vs-E\J
+s,R,9s+UK(s*aons*+Kbs)A!Ss(VLEs'bq5s',M)s&B"rs%r_ks%`Sfs%EAas%*/Zs$crTs$6TJ
+s#g<Bs#Bs8s#'g5s"j[0s"OI+s"47%s""$ts!dsrr?qOjq^)7frJ19)qh=ctpOi9nJcE@^r;`2a
+J,~>
+JcFm4rr at WMrVufrJcC<$JcG9?s1JBCs1&*<s0_m3s/l=$rMS>Fs/,gos/Z1&s0)I,s0;U0rNlD$
+rOi0Ds1\NJs2"`Ps24fRs2G#Xs2b5^s2tAbs31L at s&B"us&T/$s&f5&s'#G,s)A!Xs)S'Fs'Yk8
+s'kq:s(). at rFZ(Bs(MFHs(_RLs(qXNs).jTs)@pVs)S-\rH/'^s*"EdrHS?fs*F]lrI"Wks*=Wj
+rI4]ps+('!qh!^Xs*sPFrIacrq3^uGqjRDOrLEbUrLWt[s.JcYpW*<Vs3:Sks4%)#s4[M3rT!q=
+rT4"@s60LJs6]jVs7QEinbrLcrVQ9ds82iks7QE`s7$'Us6K^Ls60LFs5j:@s5O(;s5<q7s5!_0
+s4[M*s4@;$s3q"rs3^kms3:Sds2Y/Xs2"`Ms1SHFrO`*@rOMs;s0hs8s0Vg4s0D[0s0)I*s/c7#
+s/H$ss/5mos/#akpS7\]rLs1_oq2,QpRV,MnXKQIec(."]Dqg0QiDR~>
+JcFm4rr at WMrVufrJcC<$JcG9?Z$uTMhgYSWr@\+'s#0m9s#L*@s#g<Es'5S3s'PdrrCR#^s%NGe
+s%`Sjs&&eos&Aqts&f;(s',M.s'>Y2s'Pe6s'bq;rFQ"@s(D at FrFu:IrG;LNs).jTs)A!Ys)\3^
+s)n?brHJ9ds*=Wjs*OWjhgPNMnbrK:pOE'js+13%rIb-'s+UE+s+gW2s,-i7s,?u<s,[2As,m>F
+s-<VNs-`nVs.0%Zs.o[ns/c7(s0D[3s0_m8s1JBMs3(Gks4@;)rS at M4s5j:Fs6]jWs7ZKhU](5j
+s7lWds7?9]s7--Xs6K^Ks5j:@s5F"8s5!_0s4RG's3gqns31Mbs2P)Ws2+fOs1\NGs186?s0_m5
+s0;U,s/c7$s/Q*us/>sqrMBOis.]Oes.KC`s.'+Xs-WhPs-<PIs-*JGs,m>Cs,[2>rJ^]5rJLQ1
+rJ:-%qhG!%pOr9nq1=1t]Dqg0QiDR~>
+JcFm4rr at WMrVufrJcC<$JcG9?Z$uTMhgXqqq\Xkeq#p]tnHo-tq$-d&ru:tXruM+\ru_7`ruqCd
+s!.Ohs!Ians!dsts"+1&s"OI-s"j[5s#C$?s#pBIqk*nas/>t!s0)I.s0Vg6s+(-(s,R,Es.01c
+s/Q+'s0Ma:s2+f\s3q##s5!_7s5j4Bs60LJs6]jVs7QEinbrLcrVQ9ds82iks7QE`s7$'Us6K^L
+s60LFs5j:@s5O(;s5<q7s5!_0s4[M*s4@;#s3CYds2Y/Xs2"`Js0_m1s/H$ps.TIas-s%Vs-E\J
+s,R,9s+UK(s*aons*+Kbs)A!Ss(VLEs'bq5s',M)s&B"rs%r_ks%`Sfs%EAas%*/Zs$crTs$6TJ
+s#g<Bs#Bs8s#'g5s"j[0s"OI+s"47%s""$ts!dsrr?qOjq^)7frJ19)qh=ctpOi9nJcE@^r;`2a
+J,~>
+JcFm4rr at WMrVufrJcC<$JcG9?s1JBCs1&*<s0_m3s/l=$rMS>Fs/,gos/Z1&s0)I,s0;U0rNlD$
+rOi0Ds1\NJs2"`Ps24fRs2G#Xs2b5^s2tAbs31L at s&B"us&T/$s&f5&s'#G,s)A!Xs)S'Fs'Yk8
+s'kq:s(). at rFZ(Bs(MFHs(_RLs(qXNs).jTs)@pVs)S-\rH/'^s*"EdrHS?fs*F]lrI"Wks*=Wj
+rI4]ps+('!qh!^Xs*sPFrIacrq3^uGqjRDOrLEbUrLWt[s.JcYpW*<Vs3:Sks4%)#s4[M3rT!q=
+rT4"@s60LJs6]jVs7QEinbrLcrVQ9ds82iks7QE`s7$'Us6K^Ls60LFs5j:@s5O(;s5<q7s5!_0
+s4[M*s4@;$s3q"rs3^kms3:Sds2Y/Xs2"`Ms1SHFrO`*@rOMs;s0hs8s0Vg4s0D[0s0)I*s/c7#
+s/H$ss/5mos/#akpS7\]rLs1_oq2,QpRV,MnXKQIec(."]Dqg0QiDR~>
+JcFm4rr at WMrVufrJcC<$JcG9?Z$uTMhgYSWr@\+'s#0m9s#L*@s#g<Es'5S3s'PdrrCR#^s%NGe
+s%`Sjs&&eos&Aqts&f;(s',M.s'>Y2s'Pe6s'bq;rFQ"@s(D at FrFu:IrG;LNs).jTs)A!Ys)\3^
+s)n?brHJ9ds*=Wjs*OWjhgPNMnbrK:pOE'js+13%rIb-'s+UE+s+gW2s,-i7s,?u<s,[2As,m>F
+s-<VNs-`nVs.0%Zs.o[ns/c7(s0D[3s0_m8s1JBMs3(Gks4@;)rS at M4s5j:Fs6]jWs7ZKhU](5j
+s7lWds7?9]s7--Xs6K^Ks5j:@s5F"8s5!_0s4RG's3gqns31Mbs2P)Ws2+fOs1\NGs186?s0_m5
+s0;U,s/c7$s/Q*us/>sqrMBOis.]Oes.KC`s.'+Xs-WhPs-<PIs-*JGs,m>Cs,[2>rJ^]5rJLQ1
+rJ:-%qhG!%pOr9nq1=1t]Dqg0QiDR~>
+JcFm4rr at WMq>^BnJcC<$JcGECZ[VfOhgXqqq\XkepB:Kro*P@!pBLR$ru:tXruM+\ru_7`ruqCd
+s!.Ohs!Ians!dsts"47(s"OI.s"sa6s#L*As.'+]s.TIfs/,gps/c7(s0D[5s+:9)s+gW3s,m>K
+s-s%\s/5n!s0Ma;s2b5cs4%)%s53k9s5s at Fs69RKs6K^Rs7QEhg\q0Ks7cQds763Ys6]jPs69RI
+s6'FEs5j:As5X.=s5F"9s5*e3s4dS*s3gqks2b5Zs24lOs186<s0)I&s.o[gs.97[s-WhOs,m>@
+s+p]-s*t&rs*=Wes)S-Xs(hXJs().;s'>Y.s&K(ts&&ems%iYhs%NGbs%35[s$crTs$6TIs#^6@
+s#C$;s#0m7s"sa2s"XO-s"=='r at It!s!msrs![mpq^27fr?V>sqhG!%q1SQrpO[tr\,ZC,S,\!~>
+JcFm4rr at WMq>^BnJcC<$JcGECs1A<@s0hs7s0D[-s/Z*rs/+PIs/,gos/>t"s0)C*s0;U0s0MV&
+s1A6Bs1SHIs1nZNs2+fRs2=rVs2P)Zs2b5^s2tAbs&/kqs&B"us&T/$s&f;(s'#G,s)@pVs'G_4
+s'Yk8s'kq:s()(>s(;:Ds(MFHrG)@Js(q^Ps).dRs)A!XrGqpZs)e9`rHA3bs*4Kfs*F]ls*Xip
+rI4crrI4crrIFitqh!^XrrDWsrIa]pqj at 2IrL3POs.&tWqk!bYmJcXrs3(Ges3^l!s5F"<s5a4A
+s5s at ErTO:Gs6BXMs6p!\s81RLs8)cis7QE_s6p!Ts6K^Ls60LGs5s at Cs5a4?s5O(;s5<q6s5!_0
+s4RG)s475#s3q"qs3L_gs2k;[s24lOs1\NHs1J<Bs186 at s0r$:s0_m6s0Ma1s02O,s/l=&s/Q*u
+s/>sqrMBOipS7b_qk=%_o:PoOpRV,Mn!hr.JcE4Zr;`>eJ,~>
+JcFm4rr at WMq>^BnJcC<$JcGECZ[VfOhgYSWr@\+'s"aU6s#9s=s#^6Cs'GY4s$m#Ys%35`s%NGe
+s%`Sis&&eos&Aqss&T/&s',M.s'>Y2s'P_5s'u(>s(24Bs(D at Fs(VLJs(hXNs)%^Ps)7pVs)J'Z
+s)\3^s)n?bs*+Kfs*=Wjqg83fiI1auoDS]<omcpjrIP!#s+C9's+UE+s+gW1s,$c6s,?u;s,[2A
+s,m>Fs-<VNs-itXs.B=bs.fUks/>t!s0)I.s0hs;s1A<Es1nZTs3CYls4./&s5!Y3s5j:Fs6]jV
+s7ZKgs88_ls82ijs7?9\s7$'Ws6]jQs6BXIs5a4>s5<q6s4mY.s4@;#s3^kls3(G`s2G#Us2"`M
+s1SHEs1/0=s0Vg3s02O*s/c7$s/Q*us/5mos/#aks.]Oes.KC_s-s%Vs-NbOs-<VKrKI8Es,m>C
+s,R,=qi(K3rJLW3qhXp#qhG!%q1SQrpO[tr\,ZC,S,\!~>
+JcFm4rr at WMq>^BnJcC<$JcGECZ[VfOhgXqqq\XkepB:Kro*P@!pBLR$ru:tXruM+\ru_7`ruqCd
+s!.Ohs!Ians!dsts"47(s"OI.s"sa6s#L*As.'+]s.TIfs/,gps/c7(s0D[5s+:9)s+gW3s,m>K
+s-s%\s/5n!s0Ma;s2b5cs4%)%s53k9s5s at Fs69RKs6K^Rs7QEhg\q0Ks7cQds763Ys6]jPs69RI
+s6'FEs5j:As5X.=s5F"9s5*e3s4dS*s3gqks2b5Zs24lOs186<s0)I&s.o[gs.97[s-WhOs,m>@
+s+p]-s*t&rs*=Wes)S-Xs(hXJs().;s'>Y.s&K(ts&&ems%iYhs%NGbs%35[s$crTs$6TIs#^6@
+s#C$;s#0m7s"sa2s"XO-s"=='r at It!s!msrs![mpq^27fr?V>sqhG!%q1SQrpO[tr\,ZC,S,\!~>
+JcFm4rr at WMq>^BnJcC<$JcGECs1A<@s0hs7s0D[-s/Z*rs/+PIs/,gos/>t"s0)C*s0;U0s0MV&
+s1A6Bs1SHIs1nZNs2+fRs2=rVs2P)Zs2b5^s2tAbs&/kqs&B"us&T/$s&f;(s'#G,s)@pVs'G_4
+s'Yk8s'kq:s()(>s(;:Ds(MFHrG)@Js(q^Ps).dRs)A!XrGqpZs)e9`rHA3bs*4Kfs*F]ls*Xip
+rI4crrI4crrIFitqh!^XrrDWsrIa]pqj at 2IrL3POs.&tWqk!bYmJcXrs3(Ges3^l!s5F"<s5a4A
+s5s at ErTO:Gs6BXMs6p!\s81RLs8)cis7QE_s6p!Ts6K^Ls60LGs5s at Cs5a4?s5O(;s5<q6s5!_0
+s4RG)s475#s3q"qs3L_gs2k;[s24lOs1\NHs1J<Bs186 at s0r$:s0_m6s0Ma1s02O,s/l=&s/Q*u
+s/>sqrMBOipS7b_qk=%_o:PoOpRV,Mn!hr.JcE4Zr;`>eJ,~>
+JcFm4rr at WMq>^BnJcC<$JcGECZ[VfOhgYSWr@\+'s"aU6s#9s=s#^6Cs'GY4s$m#Ys%35`s%NGe
+s%`Sis&&eos&Aqss&T/&s',M.s'>Y2s'P_5s'u(>s(24Bs(D at Fs(VLJs(hXNs)%^Ps)7pVs)J'Z
+s)\3^s)n?bs*+Kfs*=Wjqg83fiI1auoDS]<omcpjrIP!#s+C9's+UE+s+gW1s,$c6s,?u;s,[2A
+s,m>Fs-<VNs-itXs.B=bs.fUks/>t!s0)I.s0hs;s1A<Es1nZTs3CYls4./&s5!Y3s5j:Fs6]jV
+s7ZKgs88_ls82ijs7?9\s7$'Ws6]jQs6BXIs5a4>s5<q6s4mY.s4@;#s3^kls3(G`s2G#Us2"`M
+s1SHEs1/0=s0Vg3s02O*s/c7$s/Q*us/5mos/#aks.]Oes.KC_s-s%Vs-NbOs-<VKrKI8Es,m>C
+s,R,=qi(K3rJLW3qhXp#qhG!%q1SQrpO[tr\,ZC,S,\!~>
+JcFm4rr at WMp&FsjJcC<$JcGQG[=8#QhgXqqq\XkepB:L&rrD]ur<;iur<N?.ruD%Zr>tt]r?;+a
+s!7Uks![mss"+1&s"OI.s"sa6s#C%Hs-s%[s.KCds/#ans/Z1&s0DZOs+(-'s,$c8s-!DJs-itZ
+s.]Ons1A<Ns2tAgs4./'s53k9s5s at Hs6K^Ps7--^s81LJs8;oms7cQcs763Zs6p!Ts6K^Ms69RI
+s6'FEs5j:As5X.=s5F"8s4dS(s3Uefs2P)Us1\NGs1&*9s0)I&s/#ahs.97[s-WhNs,m>?s+gW+
+s*t&ps*4Qcs)J'Vs(_RGs'u(8s',M*s&K(ts&&els%WMes%EA`s%!)Xs$QfOs$$HEs#L$:s#0m7
+s"sa3s"XO,s"=='r at Imts!n$ts![gnr?h7bs+gK+q1\Wtqh+QnJcE.Xr;`JiJ,~>
+JcFm4rr at WMp&FsjJcC<$JcGQGs1/0=s0_m4s0)I(s/GsogSOqIrMT[ps/uC(s0)I,rNc>#s186B
+rOi0Es1eTMs2+fRs2=rVs2P)Zs2b5^s2tAbs&&eos&8qss&T/$rE0)&s'#G at s)A!Xs'G_4s'Ye6
+s'l"<s()(>s(;:DrFl4Fs(_RLs(qXNs).jTrG_dVs)S-\rH/'^s*"?bs*4Qhs*FWjs*Xips*jor
+s+('!rIFitqh!dZrsA]*oa1SLmtCM(qjI8Ks-s%Ys.0+[q4I'Rs24lTrPefVpW*<Xs4RG2s5X.?
+s5j:Ds60LIs6BRKs6]jVs7QEhg&:sKs7u]hs7H?^s7$'Ws6]jPs6BXKs60LGs5s at Cs5a4?s5O(;
+s53k5s4mY/s4IA&s3q"qs3L_is2tA^s2=rRs1eTJs1SHFrO`*?s1&*;s0_g3s0;U.s0)I)s/c7#
+s/>sqrMKUkrM97as.]IcrLibSrLWbSq4-iAfD^@$[K$1*TDsE~>
+JcFm4rr at WMp&FsjJcC<$JcGQG[=8#QhgYSWr@\+'s"XO3s#9s<s#^6Cs'Pe7s'u'ts$m#ZrC[)`
+s%`Sis&&eos&8qss&K)"s&]5's',M.s'>Y2s'Pe7s'u(>s(24Bs(D at Fs(VLJs(hXNs)%^Ps)7pV
+rGhjXs)\3^s)n9arH\Ehqg8?jhgPP's7H!_rI4Ehqge]ts+:3%s+L?)s+^K-s,$c5s,6o9s,R,?
+s,m>Es-3PLs-`nVs.97`s.]Ois/5mts/uC-s0hs<s1SHKs2G#Zs31Mis4%)$s4dS2s5O(?s69RN
+s7--]s7cQiV>^Gjs7ZK`s6fpSs6TdOs6BXKs6'FEs5a4=s53k4s4dS,s475!s3Uejs2k;]s2=rS
+s1nZKs1JBCs1&*;s0Ma1s0)I(s/Z1"s/>sqs/,gms.fUgs.TIbs.01Zs-`nRrK[DIrKI8Es,m>B
+s,R&;qi(Q5rJLQ1rJ:-%qhFp#q1SWton%bp[K$1*TDsE~>
+JcFm4rr at WMp&FsjJcC<$JcGQG[=8#QhgXqqq\XkepB:L&rrD]ur<;iur<N?.ruD%Zr>tt]r?;+a
+s!7Uks![mss"+1&s"OI.s"sa6s#C%Hs-s%[s.KCds/#ans/Z1&s0DZOs+(-'s,$c8s-!DJs-itZ
+s.]Ons1A<Ns2tAgs4./'s53k9s5s at Hs6K^Ps7--^s81LJs8;oms7cQcs763Zs6p!Ts6K^Ms69RI
+s6'FEs5j:As5X.=s5F"8s4dS(s3Uefs2P)Us1\NGs1&*9s0)I&s/#ahs.97[s-WhNs,m>?s+gW+
+s*t&ps*4Qcs)J'Vs(_RGs'u(8s',M*s&K(ts&&els%WMes%EA`s%!)Xs$QfOs$$HEs#L$:s#0m7
+s"sa3s"XO,s"=='r at Imts!n$ts![gnr?h7bs+gK+q1\Wtqh+QnJcE.Xr;`JiJ,~>
+JcFm4rr at WMp&FsjJcC<$JcGQGs1/0=s0_m4s0)I(s/GsogSOqIrMT[ps/uC(s0)I,rNc>#s186B
+rOi0Es1eTMs2+fRs2=rVs2P)Zs2b5^s2tAbs&&eos&8qss&T/$rE0)&s'#G at s)A!Xs'G_4s'Ye6
+s'l"<s()(>s(;:DrFl4Fs(_RLs(qXNs).jTrG_dVs)S-\rH/'^s*"?bs*4Qhs*FWjs*Xips*jor
+s+('!rIFitqh!dZrsA]*oa1SLmtCM(qjI8Ks-s%Ys.0+[q4I'Rs24lTrPefVpW*<Xs4RG2s5X.?
+s5j:Ds60LIs6BRKs6]jVs7QEhg&:sKs7u]hs7H?^s7$'Ws6]jPs6BXKs60LGs5s at Cs5a4?s5O(;
+s53k5s4mY/s4IA&s3q"qs3L_is2tA^s2=rRs1eTJs1SHFrO`*?s1&*;s0_g3s0;U.s0)I)s/c7#
+s/>sqrMKUkrM97as.]IcrLibSrLWbSq4-iAfD^@$[K$1*TDsE~>
+JcFm4rr at WMp&FsjJcC<$JcGQG[=8#QhgYSWr@\+'s"XO3s#9s<s#^6Cs'Pe7s'u'ts$m#ZrC[)`
+s%`Sis&&eos&8qss&K)"s&]5's',M.s'>Y2s'Pe7s'u(>s(24Bs(D at Fs(VLJs(hXNs)%^Ps)7pV
+rGhjXs)\3^s)n9arH\Ehqg8?jhgPP's7H!_rI4Ehqge]ts+:3%s+L?)s+^K-s,$c5s,6o9s,R,?
+s,m>Es-3PLs-`nVs.97`s.]Ois/5mts/uC-s0hs<s1SHKs2G#Zs31Mis4%)$s4dS2s5O(?s69RN
+s7--]s7cQiV>^Gjs7ZK`s6fpSs6TdOs6BXKs6'FEs5a4=s53k4s4dS,s475!s3Uejs2k;]s2=rS
+s1nZKs1JBCs1&*;s0Ma1s0)I(s/Z1"s/>sqs/,gms.fUgs.TIbs.01Zs-`nRrK[DIrKI8Es,m>B
+s,R&;qi(Q5rJLQ1rJ:-%qhFp#q1SWton%bp[K$1*TDsE~>
+JcFm4rr at WMnc/OfJcC<$JcGcM[=7rOiI:.sq\XkepB:F$rrDd"q$$Ksrs/K.ruD%ZruV+\r?;1b
+r?M=gs!Rgps!n%#s"FC,s"j[3s-E\Ps-itYs.B=bs.o[ms/H$5s)7pZs*4Qls+13(s,$c:s-<VR
+s/5n*s2+fVs31Mjs4./'s5*e8s5j:Es6fpXs7QEfs8:LIs8;ons7lWgs7QE`s763Zs6fpSs6K^M
+s69RIs6'FEs5j:As5X.8s4@:us2tA\s2"`Ls1A<Gs186;s0)I&s/,gjs.B=]s-WhMs,[2<s+^Q*
+s*juos*+Kas)A!Ss(VLEs'bq6s&f;%s&B"qs%r_js%NGbs%35]s$m#Us$6TJs#^6 at rAXa7s#'g5
+s"aU/s"OI*r at Rt!s""+!r at .aps!R[jq'GupqhG!%q1SWton%bpZ2ab&U]5i~>
+JcFm4rr at WMnc/OfJcC<$JcGcMs1/0=s0_m5s02O*s/Q$pfqn_Gs/5mqs/Q+#s/l=)s0;U0q>^K+
+s1A<Ds1SHHs1nZNs2+fRs2=rVs2P)Zs2b5^s2t@<s&&eos&B"us&T/$s&f;(s'#G at s)A!Xs'GY2
+s'Yk8s'l"<rFGq>s(;4Bs(MFHs(_LJs(q^PrGMXRs)A!XrGqpZs)e3^s*"EdrHS?fs*F]lrI"Wn
+s*jutrIFp!o7GqRr<`K(pBg_LmtCY,opP]GrL<hWs./tWn,E@!s1JBFs1\HHs1nZNs24lUs2Y/c
+s4[M3s5X.?s5s at Es69RKqs4:Ms763_s7u]mfDYaIs8)cjs7cQds7?9]s7$'Vs6]jPs6BXKs60LG
+s5s at Cs5a4?s5F"8s5!_/s4@;$s3q"qs3L_is3(G`s2G#Us2"`Ns1eTIs1JBDs186?s0r$9s0Ma2
+s0;U-s/uC(s/Z*urMT[mrMBIgqkO1crLs1_oq2,QpRV,Mn!hr.JcE"Tr;`VmJ,~>
+JcFm4rr at WMnc/OfJcC<$JcGcM[=7rOiI:eYr@\+'s"XO1s#0m:s#^6Cs'Pe7s'u'srC-`Ws%<;b
+s%WMhs&&eos&8qss&K)"s&]5's'#G,s'5S1s'Pe7s'l"<s(2. at rFl4Gs(hXNs)%dRrGV^Ts)J!X
+s)\3^rH8-`s*+Kfs*=WjrHnQlhgPJ%s7H'aq0r'fqge]trIY'%s+L?)rJ(?-s+p]3s,-i8s,I&>
+s,d8Ds-*JKs-WhTs.01^s.TIgs/5mrs/c7)s0Vg9s1A<Gs24lVs2tAes3gqus4[M0s5O(?s69RM
+s6p!Ys7QEes8/_ms7u]fs7--Vs6K^Ls60LGs6fpPs6'FDs5X.;s5*e2s4[M*s4%(rs3CYfs2b5[
+s2=rSs1nZKs1A<As0r$8s0;U,s/c7$s/H$ss/5mos.o[is.]Oes.B=^s-s%Vs-N\Ls-3PIs-!DE
+s,d8As,R&;qi(K3rJLW3qhXp#qhG!%q1SWton%bpZ2ab&U]5i~>
+JcFm4rr at WMnc/OfJcC<$JcGcM[=7rOiI:.sq\XkepB:F$rrDd"q$$Ksrs/K.ruD%ZruV+\r?;1b
+r?M=gs!Rgps!n%#s"FC,s"j[3s-E\Ps-itYs.B=bs.o[ms/H$5s)7pZs*4Qls+13(s,$c:s-<VR
+s/5n*s2+fVs31Mjs4./'s5*e8s5j:Es6fpXs7QEfs8:LIs8;ons7lWgs7QE`s763Zs6fpSs6K^M
+s69RIs6'FEs5j:As5X.8s4@:us2tA\s2"`Ls1A<Gs186;s0)I&s/,gjs.B=]s-WhMs,[2<s+^Q*
+s*juos*+Kas)A!Ss(VLEs'bq6s&f;%s&B"qs%r_js%NGbs%35]s$m#Us$6TJs#^6 at rAXa7s#'g5
+s"aU/s"OI*r at Rt!s""+!r at .aps!R[jq'GupqhG!%q1SWton%bpZ2ab&U]5i~>
+JcFm4rr at WMnc/OfJcC<$JcGcMs1/0=s0_m5s02O*s/Q$pfqn_Gs/5mqs/Q+#s/l=)s0;U0q>^K+
+s1A<Ds1SHHs1nZNs2+fRs2=rVs2P)Zs2b5^s2t@<s&&eos&B"us&T/$s&f;(s'#G at s)A!Xs'GY2
+s'Yk8s'l"<rFGq>s(;4Bs(MFHs(_LJs(q^PrGMXRs)A!XrGqpZs)e3^s*"EdrHS?fs*F]lrI"Wn
+s*jutrIFp!o7GqRr<`K(pBg_LmtCY,opP]GrL<hWs./tWn,E@!s1JBFs1\HHs1nZNs24lUs2Y/c
+s4[M3s5X.?s5s at Es69RKqs4:Ms763_s7u]mfDYaIs8)cjs7cQds7?9]s7$'Vs6]jPs6BXKs60LG
+s5s at Cs5a4?s5F"8s5!_/s4@;$s3q"qs3L_is3(G`s2G#Us2"`Ns1eTIs1JBDs186?s0r$9s0Ma2
+s0;U-s/uC(s/Z*urMT[mrMBIgqkO1crLs1_oq2,QpRV,Mn!hr.JcE"Tr;`VmJ,~>
+JcFm4rr at WMnc/OfJcC<$JcGcM[=7rOiI:eYr@\+'s"XO1s#0m:s#^6Cs'Pe7s'u'srC-`Ws%<;b
+s%WMhs&&eos&8qss&K)"s&]5's'#G,s'5S1s'Pe7s'l"<s(2. at rFl4Gs(hXNs)%dRrGV^Ts)J!X
+s)\3^rH8-`s*+Kfs*=WjrHnQlhgPJ%s7H'aq0r'fqge]trIY'%s+L?)rJ(?-s+p]3s,-i8s,I&>
+s,d8Ds-*JKs-WhTs.01^s.TIgs/5mrs/c7)s0Vg9s1A<Gs24lVs2tAes3gqus4[M0s5O(?s69RM
+s6p!Ys7QEes8/_ms7u]fs7--Vs6K^Ls60LGs6fpPs6'FDs5X.;s5*e2s4[M*s4%(rs3CYfs2b5[
+s2=rSs1nZKs1A<As0r$8s0;U,s/c7$s/H$ss/5mos.o[is.]Oes.B=^s-s%Vs-N\Ls-3PIs-!DE
+s,d8As,R&;qi(K3rJLW3qhXp#qhG!%q1SWton%bpZ2ab&U]5i~>
+JcFm4rr at WMmJm+bJcC<$KE&?.qu>W(m0*;'JHYWKr<`K(q$Hd!q$-d&r<WECruM%Zr?2%^r?M=f
+s!Ians!dsus"+1's-!DGs-<VNs-`nWs.97as.fUks'bq=s(_RPs)e9cs*ap!s+gW6s-*JPs/#b%
+s1eTOs2Y/^s3:Sks3q#!s4dS5s69ROs763`s7t(@s82ims7lWgs7QE`s7--Ys6fpSs6K^Ms69RI
+s6'FCs53k1s3gqjs2=rQs3CYcs24lNs1&*9s0)I's/5mls.KC^s-WhMs,R,8s+:9"s*Ocks)n?^
+s).jOs(24>s'G_/s&f;$s&8qps%iYis%EA`s%*/Zs$ZlQs$$HEs#C$;rAO[5s"sa3s"XO-s"F7$
+s"++!s!n$ts![gnr?h7brJ1?+q1\WtrIa]nJcE@^q#LHprrAhoJ,~>
+JcFm4rr at WMmJm+bJcC<$KE(t\s0_m5s02O+s/Q*sf;8GCs/>sss/Z1$s/uC+s0;U0qu?Q)s1A<E
+s1eTLs2"`Ps24lTs2P)Zs2b/\s%iYks&&eos&8qts&T/$s&oA*s)7jTs'>Y2s'Pe6s'bq:rF>k<
+s(2. at s(D at Fs(VFHs(hRLs)%dRrGV^Ts)J'ZrH&!\s)n9`s*+Kfs*=Qhs*Ocns*aips*t'!rIP!#
+eV!f,rrDj$pOi!hs-WDGqjR8Ks.&KUs0hs:s1/0 at s1A<Ds1SHIs2"`Qs2G#[s3L_un_sN.s5s at H
+s6fpXs7ZKgdJa+Bs8)cjs7cQds7?9\s7$'Vs6]jPs6BXKs60LGs5j:As5X.:s4mY-s4@;$s3gqo
+s3L_is3(Gas2P)Ws24lQs1nZLs1SHEs1&$8s0Vg4s0D[/s0)I*s/c7$rMomsrMT[mrMBIgrM0=c
+s.TIco:PoOq478Mn!hr.JcE@^q#LHprrAhoJ,~>
+JcFm4rr at WMmJm+bJcC<$KE&?.qu>W(s"41%s"FC,s"j[4s#9s=s#^6hs'l">s$ZlUs$m#Ys%35`
+s%WMhs%r_nrDW_rs&T/$s&oA*s',M/s'G_4s'Yk9s'u(>s(24Bs(D at Fs(VLJs(qXNs).jTs)@pV
+s)S'Zs)e9`s*"?bs*4Qhs*F]ls*WXNrVccgq>L&:pOE'js+1-#s+C9'rIt9+rJ1E/s,$c6s,I&=
+s,d8Ds-*JJs-NbRs.'+\s.TIfs/,gps/Z1&s0D[5s186Ds1nZQs2Y/_s3L_os4@;*s53k:s5s at H
+s6]jUs7?9as7u]mX8W(rs7lWds7$'Ts60LGs7cQbs7$'Ts69RGs5a4>s5<q6s4mY-s475!s3Uej
+s2tA^s2G#Us2"`Ms1JBBs0hs7s0;U,s/c7$s/H$ss/5mos.o[is.]Ods.B=^s-itTs-E\MrKR>G
+s-!DEs,d8As,Qu9qi(K3s,-c3rJ:'#rJ(-%q1S^!o7DPn]Dq[,s8W*!U]5i~>
+JcFm4rr at WMmJm+bJcC<$KE&?.qu>W(m0*;'JHYWKr<`K(q$Hd!q$-d&r<WECruM%Zr?2%^r?M=f
+s!Ians!dsus"+1's-!DGs-<VNs-`nWs.97as.fUks'bq=s(_RPs)e9cs*ap!s+gW6s-*JPs/#b%
+s1eTOs2Y/^s3:Sks3q#!s4dS5s69ROs763`s7t(@s82ims7lWgs7QE`s7--Ys6fpSs6K^Ms69RI
+s6'FCs53k1s3gqjs2=rQs3CYcs24lNs1&*9s0)I's/5mls.KC^s-WhMs,R,8s+:9"s*Ocks)n?^
+s).jOs(24>s'G_/s&f;$s&8qps%iYis%EA`s%*/Zs$ZlQs$$HEs#C$;rAO[5s"sa3s"XO-s"F7$
+s"++!s!n$ts![gnr?h7brJ1?+q1\WtrIa]nJcE@^q#LHprrAhoJ,~>
+JcFm4rr at WMmJm+bJcC<$KE(t\s0_m5s02O+s/Q*sf;8GCs/>sss/Z1$s/uC+s0;U0qu?Q)s1A<E
+s1eTLs2"`Ps24lTs2P)Zs2b/\s%iYks&&eos&8qts&T/$s&oA*s)7jTs'>Y2s'Pe6s'bq:rF>k<
+s(2. at s(D at Fs(VFHs(hRLs)%dRrGV^Ts)J'ZrH&!\s)n9`s*+Kfs*=Qhs*Ocns*aips*t'!rIP!#
+eV!f,rrDj$pOi!hs-WDGqjR8Ks.&KUs0hs:s1/0 at s1A<Ds1SHIs2"`Qs2G#[s3L_un_sN.s5s at H
+s6fpXs7ZKgdJa+Bs8)cjs7cQds7?9\s7$'Vs6]jPs6BXKs60LGs5j:As5X.:s4mY-s4@;$s3gqo
+s3L_is3(Gas2P)Ws24lQs1nZLs1SHEs1&$8s0Vg4s0D[/s0)I*s/c7$rMomsrMT[mrMBIgrM0=c
+s.TIco:PoOq478Mn!hr.JcE@^q#LHprrAhoJ,~>
+JcFm4rr at WMmJm+bJcC<$KE&?.qu>W(s"41%s"FC,s"j[4s#9s=s#^6hs'l">s$ZlUs$m#Ys%35`
+s%WMhs%r_nrDW_rs&T/$s&oA*s',M/s'G_4s'Yk9s'u(>s(24Bs(D at Fs(VLJs(qXNs).jTs)@pV
+s)S'Zs)e9`s*"?bs*4Qhs*F]ls*WXNrVccgq>L&:pOE'js+1-#s+C9'rIt9+rJ1E/s,$c6s,I&=
+s,d8Ds-*JJs-NbRs.'+\s.TIfs/,gps/Z1&s0D[5s186Ds1nZQs2Y/_s3L_os4@;*s53k:s5s at H
+s6]jUs7?9as7u]mX8W(rs7lWds7$'Ts60LGs7cQbs7$'Ts69RGs5a4>s5<q6s4mY-s475!s3Uej
+s2tA^s2G#Us2"`Ms1JBBs0hs7s0;U,s/c7$s/H$ss/5mos.o[is.]Ods.B=^s-itTs-E\MrKR>G
+s-!DEs,d8As,Qu9qi(K3s,-c3rJ:'#rJ(-%q1S^!o7DPn]Dq[,s8W*!U]5i~>
+JcFm4rr at WMl2UV\JcC<$MuU26qu>W(m0*;'JHYWKq[*9&q[*9*pBC?sr<N9,rsA]GruV+\ruh7`
+s!%Ifs!7Ujs!Rgps!n%"s,d8Cs-*JIs-E\Ps-s%Zs.KBns',M1s'l"@s(q^Ss)n?es*k!#s,-i>
+s-it^s/H%*s1nZPs2P)\s3:Sls4IA.s5X.Ds6fpWs7?9as8("=s82ims7lWgs7QE`s7--Xs6fpR
+s6BXKs5s@?s5s at Bs5F"6s4IA"s31M_s2"`Js0r$6s0)I's/5mls.KC\s-*JBs,$c0s+12us*=Wf
+s)S-Ws(_RGs'l"7s'#G)s&T/!s&/kns%`Sfs%<;^s%!)Ws$H`Ms#g<As#9m7s#'g5s"j[1s"XO,
+s"=7%r at It!s!msrs![mpq^21dr?VDuqhG!%q1SWto7DPn`W,`6p](6nU]5i~>
+JcFm4rr at WMl2UV\JcC<$MuWgds0_m5s0;U,s/Z0us/+DEs/,gos/>sts/Z1%s/uC+s0DP%rOMs>
+s1A<Ds1SHHs1eTMs2+fRs2G#Xs2Y/\s2k::s%r_ms&/eos&B"us&]5&s)%dSs)A!Ds'G_4s'Ye6
+s'l"<s()(>s(;:DrFl4Fs(_RLrG;LNrGMXRs)@pVs)S-\rH/'^s*"EdrHS?fs*FWjs*Xips*jor
+s+('!rIW^Tq[*9&q[)qJnV$pro9oKEq4%DSn,E?ms0Vg6s0hs:s1&*>s1A<Ds1SHIs24lWs3(Gg
+s3gr#pYl/4s5j:Ds6BXNs6fpWs7?9as8("=s82ims7lWgs7QE`s7--Xs6fpRs6BXKs60LGs5s at B
+s5F"6s4RG's4%(rs3Ueks3:Ses2k;]s2P)Ws2+fNs1JBAs0r$:rO)U1s0;U.s0)I)s/c7$s/Q$s
+s/>mos/,akrM9Ces.]Oes.JtUrLWbSq4-iAfD^@$`W,`6p](6nU]5i~>
+JcFm4rr at WMl2UV\JcC<$MuU26qu>W(s"++$s"FC+s"j[3s#9s=s#^6is'u(?s$ZlUs$m#Ys%35_
+s%WMhs%r_ms&/krs&K)"s&]5's'#G,s'5S1s'Pe6rF5e;rFQ"As(MFHs(_RLs(q^Ps).dRs)A!X
+s)S'Zs)e3^s*"Eds*4Kfs*F]ls*W^Pqu-Qequ-2:q1&9lrIOp!rIb-'rIt3)s+gW1s,$c5s,?u<
+s,d8Cs-*JIs-E\Ps-s%Zs.KCds/#ans/Q+$s0;U2s1&*@s1\NMs2G#Zs31Mis4%)$s4mY3s5O(@
+s69RNs7$'\s7cQiX8W(qs7c?fs8;oms7QE_s6fpQs6'FDs5X.<s53k4s4dS+s4..ts3L_hs2k;\
+s24lQs1\NFs1/0<s0Ma0s/l=&s/Q*us/>sqs/#aks.fUfs.KC`s.'+Xs-WhPs-<PIs-*JGrK7,A
+s,[2?rJg]5rJUW3s,$W/onWF!qh=j!qh+KlJcE^hq#L0hrrAhoJ,~>
+JcFm4rr at WMl2UV\JcC<$MuU26qu>W(m0*;'JHYWKq[*9&q[*9*pBC?sr<N9,rsA]GruV+\ruh7`
+s!%Ifs!7Ujs!Rgps!n%"s,d8Cs-*JIs-E\Ps-s%Zs.KBns',M1s'l"@s(q^Ss)n?es*k!#s,-i>
+s-it^s/H%*s1nZPs2P)\s3:Sls4IA.s5X.Ds6fpWs7?9as8("=s82ims7lWgs7QE`s7--Xs6fpR
+s6BXKs5s@?s5s at Bs5F"6s4IA"s31M_s2"`Js0r$6s0)I's/5mls.KC\s-*JBs,$c0s+12us*=Wf
+s)S-Ws(_RGs'l"7s'#G)s&T/!s&/kns%`Sfs%<;^s%!)Ws$H`Ms#g<As#9m7s#'g5s"j[1s"XO,
+s"=7%r at It!s!msrs![mpq^21dr?VDuqhG!%q1SWto7DPn`W,`6p](6nU]5i~>
+JcFm4rr at WMl2UV\JcC<$MuWgds0_m5s0;U,s/Z0us/+DEs/,gos/>sts/Z1%s/uC+s0DP%rOMs>
+s1A<Ds1SHHs1eTMs2+fRs2G#Xs2Y/\s2k::s%r_ms&/eos&B"us&]5&s)%dSs)A!Ds'G_4s'Ye6
+s'l"<s()(>s(;:DrFl4Fs(_RLrG;LNrGMXRs)@pVs)S-\rH/'^s*"EdrHS?fs*FWjs*Xips*jor
+s+('!rIW^Tq[*9&q[)qJnV$pro9oKEq4%DSn,E?ms0Vg6s0hs:s1&*>s1A<Ds1SHIs24lWs3(Gg
+s3gr#pYl/4s5j:Ds6BXNs6fpWs7?9as8("=s82ims7lWgs7QE`s7--Xs6fpRs6BXKs60LGs5s at B
+s5F"6s4RG's4%(rs3Ueks3:Ses2k;]s2P)Ws2+fNs1JBAs0r$:rO)U1s0;U.s0)I)s/c7$s/Q$s
+s/>mos/,akrM9Ces.]Oes.JtUrLWbSq4-iAfD^@$`W,`6p](6nU]5i~>
+JcFm4rr at WMl2UV\JcC<$MuU26qu>W(s"++$s"FC+s"j[3s#9s=s#^6is'u(?s$ZlUs$m#Ys%35_
+s%WMhs%r_ms&/krs&K)"s&]5's'#G,s'5S1s'Pe6rF5e;rFQ"As(MFHs(_RLs(q^Ps).dRs)A!X
+s)S'Zs)e3^s*"Eds*4Kfs*F]ls*W^Pqu-Qequ-2:q1&9lrIOp!rIb-'rIt3)s+gW1s,$c5s,?u<
+s,d8Cs-*JIs-E\Ps-s%Zs.KCds/#ans/Q+$s0;U2s1&*@s1\NMs2G#Zs31Mis4%)$s4mY3s5O(@
+s69RNs7$'\s7cQiX8W(qs7c?fs8;oms7QE_s6fpQs6'FDs5X.<s53k4s4dS+s4..ts3L_hs2k;\
+s24lQs1\NFs1/0<s0Ma0s/l=&s/Q*us/>sqs/#aks.fUfs.KC`s.'+Xs-WhPs-<PIs-*JGrK7,A
+s,[2?rJg]5rJUW3s,$W/onWF!qh=j!qh+KlJcE^hq#L0hrrAhoJ,~>
+JcFm4rr at WMj8]&XJcC<$O8l\<qu>Q&mf`M)JHYWKq$I'$r<`E*pBC?sr<N?.r<`KEruV+\r?2+`
+s!%Ifs!7Ois![o+s,R,?s,m>Es-3PLs-NbSs.'*es&T/'s'G_7s(24Fs).jWs*+Kls+LE1s,m>L
+s.KCjs0)I2s1eTNs2P)_s3gr"s5*e:s6BXQs7QEds7u]ma8Q&8s8)cjs7ZKbs763[s6p!Ts6K^M
+s69RHs5j:>s5*e.s3^kgs2=rPs186<s0;U,s/H$ps.KC]s-E\Is,6o3s+12us*F]gs)\3Ys(_RH
+s'u(8s'#G)s&T/"s&8qps%iYhs%EA`s%!)Xs$H`Ms#g<As#Bs8rAFO0s"XO-s"FC)r at S%#r@@mt
+s!dsrr?qOjq^)1drJ1?+q1\Wtqh+QnJcEpnqZ-*brrAhoJ,~>
+JcFm4rr at WMj8]&XJcC<$O8o6fs0Ma1s/uC's/H$qf;8GCs/>sss/Z1$s/l=)s0;J$s1&*>rOW$@
+s1JBFs1\NKs2"`Qs2=rWs2Y/\rQ5(8s%r_ms&/kqs&B"us&T/$s(q^Ps)7pBs'>Y2s'Pe6s'bq:
+s'u"<s(24BrFc.Ds(VFHs(hXNs)%^Ps)7jTs)J!Xs)\3^rH8-`s*+KfrH\Ehs*OcnrI+]prI=it
+s+0uth1PM0rrE!(o7QXfrIsp4qjR>MmJd-js0D[3s0_m8s0r$<s1/0 at s1A<Gs2+fTs2k;bs3L_o
+s4@;*rSde9s5j:Ds69RMs6fpWs7?9`s7cQhs89q9s82ims7lWfs7H?^s7--Xs6]jPs6BXKs6'FD
+s5F"7s4[M)s3q"qs3L_js31Mcs2k;]s2G#Ss1eTIs186?s0r$:s0_m6s0Ma2s0;U-s/uC(rN#su
+ql0UorMT[ms/#[is.fUgs.TCaoq2,QpRV,Mn!hr.JcEpnqZ-*brrAhoJ,~>
+JcFm4rr at WMj8]&XJcC<$O8l\<qu>Q&s"==)r at n7,s"sa5rAsmes(2-ss$crWs%*/^s%NGfs%r_m
+rDW_qs&T/$s&f;)s',M.s'>Y2s'Pe6s'l"<s(). at s(;:Ds(MFHs(hRLs)%dRrGV^Ts)J'ZrH&!\
+s)n?brHJ9ds*=Qhs*O]lj*gb%s7H9gomZXbqgeWrrIY!#rIk3)rJ(?-rJ:K2s,?u<s,[2Bs-!DH
+s-E\Os-itXs.97as.o[ls/H%!s0)I.s0_m;s1JBHs24lVs2tAes3gqts4IA+s5*e7s5j:Es6TdS
+s7?9as8&Ads82ijs7H?\s6]jNs5s at Bs5O(:s5*e2s4[M)s4%(rs3:Sbs2G#Us1nZKs1A<@s0hs6
+s02O*s/Z1"s/H$ss/5mns.o[is.TIcs.97\s-itTs-E\MrKR8Es-!DEs,d8ArJpi9qi(K3s,-c3
+rJ:'#rJ(-%q1SWton%bpbQ%G>n,NCfU]5i~>
+JcFm4rr at WMj8]&XJcC<$O8l\<qu>Q&mf`M)JHYWKq$I'$r<`E*pBC?sr<N?.r<`KEruV+\r?2+`
+s!%Ifs!7Ois![o+s,R,?s,m>Es-3PLs-NbSs.'*es&T/'s'G_7s(24Fs).jWs*+Kls+LE1s,m>L
+s.KCjs0)I2s1eTNs2P)_s3gr"s5*e:s6BXQs7QEds7u]ma8Q&8s8)cjs7ZKbs763[s6p!Ts6K^M
+s69RHs5j:>s5*e.s3^kgs2=rPs186<s0;U,s/H$ps.KC]s-E\Is,6o3s+12us*F]gs)\3Ys(_RH
+s'u(8s'#G)s&T/"s&8qps%iYhs%EA`s%!)Xs$H`Ms#g<As#Bs8rAFO0s"XO-s"FC)r at S%#r@@mt
+s!dsrr?qOjq^)1drJ1?+q1\Wtqh+QnJcEpnqZ-*brrAhoJ,~>
+JcFm4rr at WMj8]&XJcC<$O8o6fs0Ma1s/uC's/H$qf;8GCs/>sss/Z1$s/l=)s0;J$s1&*>rOW$@
+s1JBFs1\NKs2"`Qs2=rWs2Y/\rQ5(8s%r_ms&/kqs&B"us&T/$s(q^Ps)7pBs'>Y2s'Pe6s'bq:
+s'u"<s(24BrFc.Ds(VFHs(hXNs)%^Ps)7jTs)J!Xs)\3^rH8-`s*+KfrH\Ehs*OcnrI+]prI=it
+s+0uth1PM0rrE!(o7QXfrIsp4qjR>MmJd-js0D[3s0_m8s0r$<s1/0 at s1A<Gs2+fTs2k;bs3L_o
+s4@;*rSde9s5j:Ds69RMs6fpWs7?9`s7cQhs89q9s82ims7lWfs7H?^s7--Xs6]jPs6BXKs6'FD
+s5F"7s4[M)s3q"qs3L_js31Mcs2k;]s2G#Ss1eTIs186?s0r$:s0_m6s0Ma2s0;U-s/uC(rN#su
+ql0UorMT[ms/#[is.fUgs.TCaoq2,QpRV,Mn!hr.JcEpnqZ-*brrAhoJ,~>
+JcFm4rr at WMj8]&XJcC<$O8l\<qu>Q&s"==)r at n7,s"sa5rAsmes(2-ss$crWs%*/^s%NGfs%r_m
+rDW_qs&T/$s&f;)s',M.s'>Y2s'Pe6s'l"<s(). at s(;:Ds(MFHs(hRLs)%dRrGV^Ts)J'ZrH&!\
+s)n?brHJ9ds*=Qhs*O]lj*gb%s7H9gomZXbqgeWrrIY!#rIk3)rJ(?-rJ:K2s,?u<s,[2Bs-!DH
+s-E\Os-itXs.97as.o[ls/H%!s0)I.s0_m;s1JBHs24lVs2tAes3gqts4IA+s5*e7s5j:Es6TdS
+s7?9as8&Ads82ijs7H?\s6]jNs5s at Bs5O(:s5*e2s4[M)s4%(rs3:Sbs2G#Us1nZKs1A<@s0hs6
+s02O*s/Z1"s/H$ss/5mns.o[is.TIcs.97\s-itTs-E\MrKR8Es-!DEs,d8ArJpi9qi(K3s,-c3
+rJ:'#rJ(-%q1SWton%bpbQ%G>n,NCfU]5i~>
+JcFm4rr at WMhuEWTJcC<$PQ/1Bq>]E&mf`M)JHYWKpBgj"r<`-#pBLR$rs8Q0r>thXr?;1bs!7Oi
+s!Ri(s,?u;s,[2As-!DIrKdISs%NGhs&B##s'>Y4s(;:Es(q^Us*=Wps+gW7s-<VRs.fUns0)I2
+s1JBJs2Y/`s3gr"s5*e:s6BXYs7u]m^&A!.s7u]hs7QE`s7--Xs6]jPs6BXKs5s@@s5*e-s3L_d
+s2+fLs0r$7s02O)s/>sms.B=Zs-!D at s+^Q)s*aons*"E`s)7pQs(D at As'Pe0s&f;%s&K(us&&el
+s%WMds%35\s$ZlRs$-NGs#U0>s#9m7s#'g5s"j[1s"XI*q^qh!s""+!r at .aps!R[jq^)1ds+gK+
+qh>!%o7QdhJcF:#q#K[ZrrAhoJ,~>
+JcFm4rr at WMhuEWTJcC<$PQ1Zfs02O,s/c7"s/+>Cs/,gos/>sts/Z1$s/l=)q>^K)s1/*>s1A<E
+s1\NJs1nZOs24lUs2P)Zs2b5^s%iYks&&eos&8qss&K)"s&]59s(q^Ps',M.s'>Y2s'Pe6s'bq:
+s'u(>s(2. at s(D at FrFu:Hs(hRLs)%dRs)7jTrGhjXrH&!\s)n?brHJ9ds*=Qhs*OcnrI+]ps*sut
+rIOithh1Y0rrE!(on2dfrIt!6q3q2Mn,E?is0)I-s0D[2s0_m8s0qs;s1JBHs24lWs3(Gfs3^ks
+s4IA+s53k9s5a4Cs69RLs6fpVs763_s7cQhs89S/s82ils7cQds7?9\s6p!Ts6K^Ms69RGs5O(9
+s4dS*s3q"qs3L_is3(Gbs2b5[s24lQs1eTHs1/*;s0hs8s0Vg4s0D[0s0)I*s/l=%rMogqs/>mo
+s/,gms.oUgs.]Ics.JtUqk!VSpRL]AfD^@$ec5FFl2Ub`U]5i~>
+JcFm4rr at WMhuEWTJcC<$PQ/1Bq>]E&s"==)r at n7+s"j[3s#0m;s'u(>s(;9us$ZlUs$lrWs%*/`
+s%iYks&&eos&8qts&]5&s&oA*s',M.s'>Y2s'Pe6s'bq;s(24Bs(D at Fs(VLJs(hXNrGDRPs)7pV
+rGhjXs)\3^rH8-`s*+KfrH\EhrHnKjjaHn%s7H9gq0qpbqgeWrrIXp!s+L?)s+gQ/s,$c5s,?u;
+s,[2As-!DIrKdJMs-itYs.B=cs/#ans/c7&s02O0s0r$>s1SHJs2=rXs3(Gfs3^krs4@;)s5!_5
+s5a4Cs6K^Rs72ZXs7u]gs763Ys6K^Ks5j:@s5F"8s5!_0s4IA$s3Ueis2Y/Ys2+fOs1SHDs1&*:
+s0D[.s/c7$s/Q*us/>sps/#aks.]Oes.KC`s.'+Xs-WhQrK[>Gs-*DEs,m>Cs,[2?qi1Q5rJUW3
+s,$W/onWF!qh>!%o7QdhJcF:#q#K[ZrrAhoJ,~>
+JcFm4rr at WMhuEWTJcC<$PQ/1Bq>]E&mf`M)JHYWKpBgj"r<`-#pBLR$rs8Q0r>thXr?;1bs!7Oi
+s!Ri(s,?u;s,[2As-!DIrKdISs%NGhs&B##s'>Y4s(;:Es(q^Us*=Wps+gW7s-<VRs.fUns0)I2
+s1JBJs2Y/`s3gr"s5*e:s6BXYs7u]m^&A!.s7u]hs7QE`s7--Xs6]jPs6BXKs5s@@s5*e-s3L_d
+s2+fLs0r$7s02O)s/>sms.B=Zs-!D at s+^Q)s*aons*"E`s)7pQs(D at As'Pe0s&f;%s&K(us&&el
+s%WMds%35\s$ZlRs$-NGs#U0>s#9m7s#'g5s"j[1s"XI*q^qh!s""+!r at .aps!R[jq^)1ds+gK+
+qh>!%o7QdhJcF:#q#K[ZrrAhoJ,~>
+JcFm4rr at WMhuEWTJcC<$PQ1Zfs02O,s/c7"s/+>Cs/,gos/>sts/Z1$s/l=)q>^K)s1/*>s1A<E
+s1\NJs1nZOs24lUs2P)Zs2b5^s%iYks&&eos&8qss&K)"s&]59s(q^Ps',M.s'>Y2s'Pe6s'bq:
+s'u(>s(2. at s(D at FrFu:Hs(hRLs)%dRs)7jTrGhjXrH&!\s)n?brHJ9ds*=Qhs*OcnrI+]ps*sut
+rIOithh1Y0rrE!(on2dfrIt!6q3q2Mn,E?is0)I-s0D[2s0_m8s0qs;s1JBHs24lWs3(Gfs3^ks
+s4IA+s53k9s5a4Cs69RLs6fpVs763_s7cQhs89S/s82ils7cQds7?9\s6p!Ts6K^Ms69RGs5O(9
+s4dS*s3q"qs3L_is3(Gbs2b5[s24lQs1eTHs1/*;s0hs8s0Vg4s0D[0s0)I*s/l=%rMogqs/>mo
+s/,gms.oUgs.]Ics.JtUqk!VSpRL]AfD^@$ec5FFl2Ub`U]5i~>
+JcFm4rr at WMhuEWTJcC<$PQ/1Bq>]E&s"==)r at n7+s"j[3s#0m;s'u(>s(;9us$ZlUs$lrWs%*/`
+s%iYks&&eos&8qts&]5&s&oA*s',M.s'>Y2s'Pe6s'bq;s(24Bs(D at Fs(VLJs(hXNrGDRPs)7pV
+rGhjXs)\3^rH8-`s*+KfrH\EhrHnKjjaHn%s7H9gq0qpbqgeWrrIXp!s+L?)s+gQ/s,$c5s,?u;
+s,[2As-!DIrKdJMs-itYs.B=cs/#ans/c7&s02O0s0r$>s1SHJs2=rXs3(Gfs3^krs4@;)s5!_5
+s5a4Cs6K^Rs72ZXs7u]gs763Ys6K^Ks5j:@s5F"8s5!_0s4IA$s3Ueis2Y/Ys2+fOs1SHDs1&*:
+s0D[.s/c7$s/Q*us/>sps/#aks.]Oes.KC`s.'+Xs-WhQrK[>Gs-*DEs,m>Cs,[2?qi1Q5rJUW3
+s,$W/onWF!qh>!%o7QdhJcF:#q#K[ZrrAhoJ,~>
+JcFm4rr at WMg].3PJcC<$RK'aFqu>W(m0*A)JHYWKq[39.rsJc+rsJ?$q$-^$r<`K2ruV%Zr?2+`
+s!7Ois,$]3s,6o:s,R, at s-3JIs$ZlVs%<;ds&/kts',M7s(D at Fs)%dXs*Ocus,-i=s-WhYs/,gs
+s0;U4s1JBJs2Y/`s3gr"s5*eEs7u]l[Jg.&s8)cjs7ZKbs763Zs6fpRs6K^Hs5*e-s3^kis2G#R
+s1A<>s0D[-s/Z0rs.KC\s-*JBs+^Q)s*aons*+Kas)7pQs(D at As'Pe1s&f;&s&K(ts&/kms%WMc
+s%35[s$ZlSs$6TIs#^6 at s#C$;s#0g5s"sa3s"aU.s"FC)r at S%#r@@mtr at .[mq^27fr?VCfs+gW/
+rIt-%mt:FfJcFR+q#KCRrrAhoJ,~>
+JcFm4rr at WMg].3PJcC<$RK*)_s/FDBs/,gps/H$urN#muqu?]+rOMs>s1A<Ds1SHHs1eTMs2+fS
+s2G#Ys2b5^s%iYks&&eos&8kqs&K)"s&]5:s)%d>s',M.s'>Y2s'Pe6s'bq:s'u(>s(24BrFc.D
+s(VFHs(hXNs)%^Ps)7pVs)J!Xs)\-\s)n9`s*+Eds*=WjrHnQls*aips*sutqgn]tiIh"7r<`K2
+rrE'+qh4cto7[!pq3h&IrL<3Rs/c7&s0)I-s0D[2s0_m8s1&*>s1SHJs2=rYs31Mis4%)#s4[M0
+s5F"<s5s at Fs6K^Ps6p!Ys7H?cs7u]l[Jg.&s8)cjs7ZKbs763Zs6fpRs6K^Hs5*e/s4@;#s3gqo
+s3CYhs3(Gas2b5Zs24lPs1\NFs1/0=s0hm6s0Vg4s0;U.s0)I)s/c7$rMogqs/>sprMBOiqkO+`
+rLibSrLWbSq4-uErL2F=JcFR+q#KCRrrAhoJ,~>
+JcFm4rr at WMg].3PJcC<$RK'aFqu>W(s"=7's"OI-s"aU2s#'g8s#L*js(;9us$ZfSs$m#Ys%*/^
+s%NGgs%r_ms&8qss&T/$s&oA*s',M.rE]G1s'Ye6s'l"<s(24CrFu:Hs(hXNs)%dRrGV^Ts)J'Z
+rH&!\s)n?brHJ9drH\EhrHnKjkC*%%s7H?ipO;X^s+('!rIXitrIk3+rJ:K1rJLW5s,I&=s,d8F
+qj%2Is-WhUs.01_s.fIms/uC,s0Vg9s1A<Fs2"`Ss2k;`s3:Sjs3q#!s4RG-s5<q;s6'FTRJm0_
+s7lWds7--Vs6BXIs5a4>s5<q5s4[M)s3q"os3(G_s2=rSs1eTIs186>s0Vg3s0)I(s/Z1"s/H$r
+s/,gms.o[hs.TIcs.97]s-s%Vs-NbOrK[DIrKI8Es,m>CrK$u=rJg]5rJU]5rJCE-q1o!)s+gW/
+rIt-%mt:FfJcFR+q#KCRrrAhoJ,~>
+JcFm4rr at WMg].3PJcC<$RK'aFqu>W(m0*A)JHYWKq[39.rsJc+rsJ?$q$-^$r<`K2ruV%Zr?2+`
+s!7Ois,$]3s,6o:s,R, at s-3JIs$ZlVs%<;ds&/kts',M7s(D at Fs)%dXs*Ocus,-i=s-WhYs/,gs
+s0;U4s1JBJs2Y/`s3gr"s5*eEs7u]l[Jg.&s8)cjs7ZKbs763Zs6fpRs6K^Hs5*e-s3^kis2G#R
+s1A<>s0D[-s/Z0rs.KC\s-*JBs+^Q)s*aons*+Kas)7pQs(D at As'Pe1s&f;&s&K(ts&/kms%WMc
+s%35[s$ZlSs$6TIs#^6 at s#C$;s#0g5s"sa3s"aU.s"FC)r at S%#r@@mtr at .[mq^27fr?VCfs+gW/
+rIt-%mt:FfJcFR+q#KCRrrAhoJ,~>
+JcFm4rr at WMg].3PJcC<$RK*)_s/FDBs/,gps/H$urN#muqu?]+rOMs>s1A<Ds1SHHs1eTMs2+fS
+s2G#Ys2b5^s%iYks&&eos&8kqs&K)"s&]5:s)%d>s',M.s'>Y2s'Pe6s'bq:s'u(>s(24BrFc.D
+s(VFHs(hXNs)%^Ps)7pVs)J!Xs)\-\s)n9`s*+Eds*=WjrHnQls*aips*sutqgn]tiIh"7r<`K2
+rrE'+qh4cto7[!pq3h&IrL<3Rs/c7&s0)I-s0D[2s0_m8s1&*>s1SHJs2=rYs31Mis4%)#s4[M0
+s5F"<s5s at Fs6K^Ps6p!Ys7H?cs7u]l[Jg.&s8)cjs7ZKbs763Zs6fpRs6K^Hs5*e/s4@;#s3gqo
+s3CYhs3(Gas2b5Zs24lPs1\NFs1/0=s0hm6s0Vg4s0;U.s0)I)s/c7$rMogqs/>sprMBOiqkO+`
+rLibSrLWbSq4-uErL2F=JcFR+q#KCRrrAhoJ,~>
+JcFm4rr at WMg].3PJcC<$RK'aFqu>W(s"=7's"OI-s"aU2s#'g8s#L*js(;9us$ZfSs$m#Ys%*/^
+s%NGgs%r_ms&8qss&T/$s&oA*s',M.rE]G1s'Ye6s'l"<s(24CrFu:Hs(hXNs)%dRrGV^Ts)J'Z
+rH&!\s)n?brHJ9drH\EhrHnKjkC*%%s7H?ipO;X^s+('!rIXitrIk3+rJ:K1rJLW5s,I&=s,d8F
+qj%2Is-WhUs.01_s.fIms/uC,s0Vg9s1A<Fs2"`Ss2k;`s3:Sjs3q#!s4RG-s5<q;s6'FTRJm0_
+s7lWds7--Vs6BXIs5a4>s5<q5s4[M)s3q"os3(G_s2=rSs1eTIs186>s0Vg3s0)I(s/Z1"s/H$r
+s/,gms.o[hs.TIcs.97]s-s%Vs-NbOrK[DIrKI8Es,m>CrK$u=rJg]5rJU]5rJCE-q1o!)s+gW/
+rIt-%mt:FfJcFR+q#KCRrrAhoJ,~>
+JcFm4rr at WMfDkdLJcC<$Sc?6Lqu>W(m0*A)JHYWKo*YKto`b'oqZm-,rsAW2rsS]Gr?2+cr?hQ$
+rJLQ3s,?u<rKR=Ks$ZlUs%!)]s%WMks'#G6s(;:Es(q^Ss*"Eks+UK3s-E\Zs/Q+(s0hs;s1A<F
+s2+fVs31Mks4IAGs8/kqs82ils7cQds6TdKs5a4<s5!_0s4..qs2k;Ys1\NDs0Vg1s/Z0ss.TI]
+s-3PDs+gW)s*juos*+Kas)7pRs(MFCs'Pe2s&oA's&K(ts&/kms%WMds%35\s$crUs$?ZLs#g<B
+s#C$;rAO[5s"sa3s"aU/s"OI+q^qh!s""$ts!dsrs!R[jq^)7fs!%Dqq1S3hon%bpkPt>Xg&M'P
+U]5i~>
+JcFm4rr at WMfDkdLJcC<$ScA_hs/>modA?l?s/5mqs/H$us/Z+"qu?]*s1&$<s186Bs1JBFs1eTL
+s2"`Ps2=rWs2Y/\s%iYks&&eorDW_qs&K)"s&]/8s&oA*s',M.s'>Y2s'Pe6rF5e:s(). at s(;:D
+rFl4Fs(_RLrG;LNs).jTrG_dVs)S'Zs)e9`qf`!`s*4Kfs*F]lrI"WnrI4crrIFitqh!p^s+KtN
+rrD)4q1\^6qjRJQn,E?fs/c7's0)I-s0D[2s0_m8s0r$=s1SHKs2G#[s3:Sks4./&s5!_5s5X.@
+s6'FIs6]jTs7--]s7ZKgs8/kqs82ils7cQds6TdKs5a4<s5!_0s4IA&s3q"qs3L_js31Mds2k;]
+s2G#Ts1eTIs186?s0r$:s0_m6rNlO/s02O+s/l7#s/Q$ss/>sprMBOiqkO1crLs1_oq2,QpRV,M
+nXKQIfD^@$kPt>Xg&M'PU]5i~>
+JcFm4rr at WMfDkdLJcC<$Sc?6Lqu>W(s"=7's"OI-s"aU2s#'g8s#C$is(;9urC$ZSs$m#Ys%*/^
+s%NGfs%iYls&8qss&K)#s&f;)s',G,s'>Y2s'Pe6s'bq:s'u(>s(24Bs(D at Gs(_RLrGDRPs)7pV
+rGhjXs)\3^rH8-`rHJ9ds*=Wjqg89hl$`1%s7Gu5pOE'jrIOitq1J^#s+gQ/s,$]3rJU]7s,Qu@
+qj%2Is-`nWs.f=is0)I.s0_m;s1\NQs3(Ggs3U_lrR1_rs4IA+s53kSQ2UaZs7ZKas6p!Ss60LE
+s5O(9s4mY-s4..ts3CYes2P)Ws2"`Ms1JBBs0r$8s0;U,s/c7$s/Q*ts/5mos/#aks.fUgs.TIb
+s.97\s-itTs-N\LrKR>GrK at 2Cs,d8As,Qu9rJ^]5rJLW3qhY''qh=j!mt::bJcFp5q#K+JrrAho
+J,~>
+JcFm4rr at WMfDkdLJcC<$Sc?6Lqu>W(m0*A)JHYWKo*YKto`b'oqZm-,rsAW2rsS]Gr?2+cr?hQ$
+rJLQ3s,?u<rKR=Ks$ZlUs%!)]s%WMks'#G6s(;:Es(q^Ss*"Eks+UK3s-E\Zs/Q+(s0hs;s1A<F
+s2+fVs31Mks4IAGs8/kqs82ils7cQds6TdKs5a4<s5!_0s4..qs2k;Ys1\NDs0Vg1s/Z0ss.TI]
+s-3PDs+gW)s*juos*+Kas)7pRs(MFCs'Pe2s&oA's&K(ts&/kms%WMds%35\s$crUs$?ZLs#g<B
+s#C$;rAO[5s"sa3s"aU/s"OI+q^qh!s""$ts!dsrs!R[jq^)7fs!%Dqq1S3hon%bpkPt>Xg&M'P
+U]5i~>
+JcFm4rr at WMfDkdLJcC<$ScA_hs/>modA?l?s/5mqs/H$us/Z+"qu?]*s1&$<s186Bs1JBFs1eTL
+s2"`Ps2=rWs2Y/\s%iYks&&eorDW_qs&K)"s&]/8s&oA*s',M.s'>Y2s'Pe6rF5e:s(). at s(;:D
+rFl4Fs(_RLrG;LNs).jTrG_dVs)S'Zs)e9`qf`!`s*4Kfs*F]lrI"WnrI4crrIFitqh!p^s+KtN
+rrD)4q1\^6qjRJQn,E?fs/c7's0)I-s0D[2s0_m8s0r$=s1SHKs2G#[s3:Sks4./&s5!_5s5X.@
+s6'FIs6]jTs7--]s7ZKgs8/kqs82ils7cQds6TdKs5a4<s5!_0s4IA&s3q"qs3L_js31Mds2k;]
+s2G#Ts1eTIs186?s0r$:s0_m6rNlO/s02O+s/l7#s/Q$ss/>sprMBOiqkO1crLs1_oq2,QpRV,M
+nXKQIfD^@$kPt>Xg&M'PU]5i~>
+JcFm4rr at WMfDkdLJcC<$Sc?6Lqu>W(s"=7's"OI-s"aU2s#'g8s#C$is(;9urC$ZSs$m#Ys%*/^
+s%NGfs%iYls&8qss&K)#s&f;)s',G,s'>Y2s'Pe6s'bq:s'u(>s(24Bs(D at Gs(_RLrGDRPs)7pV
+rGhjXs)\3^rH8-`rHJ9ds*=Wjqg89hl$`1%s7Gu5pOE'jrIOitq1J^#s+gQ/s,$]3rJU]7s,Qu@
+qj%2Is-`nWs.f=is0)I.s0_m;s1\NQs3(Ggs3U_lrR1_rs4IA+s53kSQ2UaZs7ZKas6p!Ss60LE
+s5O(9s4mY-s4..ts3CYes2P)Ws2"`Ms1JBBs0r$8s0;U,s/c7$s/Q*ts/5mos/#aks.fUgs.TIb
+s.97\s-itTs-N\LrKR>GrK at 2Cs,d8As,Qu9rJ^]5rJLW3qhY''qh=j!mt::bJcFp5q#K+JrrAho
+J,~>
+JcFm4rr at WMe,T at HJcC<$U&V`Rqu>Q&mf`M)JHY]MnI#9so*,!qr<N9,r<`K2rs\o:r?;+as!7Uk
+s!Ri)s,?u<s,I&;s,6o9rKI7Hs$QfTs%!)\s%EAds'5S8s(D at Gs(q^Qs)S-_s*k!)s-E\Zs/Z1*
+s1/0Gs24lWs2tAds3Uf#s5j:WV>^Ggs6K^Ks5s at Bs5X.<s53k4s4RG#s31M`s1eTDs0Vg1s/Z0t
+s.TI^s-3PDs+p]+s*aons*+Kbs)7pRs(MFCs'Yk3s'#G)s&T/!s&8qos%`Ses%35]s$m#Ws$H`N
+s#pBEs#L*=s#9s9rAFU3s"j[1s"OI+s"=7%r at It!s!msrr?qUls!@Ids!%Ids+U9%on2^bJcG-;
+qZ,%DrrAhoJ,~>
+JcFm4rr at WMe,T at HJcC<$U&Y.ks/5moc_^Z=s/5mrs/Q$us/c+ts0hs:s1&*>s186Bs1JBFs1\NJ
+s1nTLs24lUs2P)Zs%`Sjs&&eos&8qss&K"us(hXNs)%d>s',M.s'>Y2s'Pe6s'bq:rF>k<s(24B
+s(D at FrFu:Hs(hXNs)%^Ps)7pVrGhjXs)\-\s)n?brHJ3bs*=Qhs*O]ls*aips*sutrIOp!l%Akd
+nI#;Gjb3MbrJ(9=q3q>Qn,E?es/c7's0)I-s0D[3s0_m8s1&*?s1SHIs24lWs3(Ghs4%)$s5!_5
+s5X.Bs69RMs6fpWs7?9`s7lWjV>^Ggs6K^Ks5s at Bs5X.<s53k4s4[M)s4..us3^kms3:Sfs2tA`
+s2Y/Xs2"`Ms1JBBrO;g8s0_m6s0Ma2s0;U-s/uC's/Z*us/H$ss/5mnrM9=cs.]Cas.JtUqk!VS
+q4.&GqjQ4;JcG-;qZ,%DrrAhoJ,~>
+JcFm4rr at WMe,T at HJcC<$U&V`Rqu>Q&r at e+'s"XO1s#'a6s(;:Ds(VL$rC-`Us%!)[s%<;bs%WMh
+s%r_ns&8qts&T/%s&oA*s',M.s'>Y2s'Pe6s'bq:s'u(>s(24BrFc.Ds(_RLs(q^PrGV^Ts)J'Z
+rH&!\rH8-`s*+KfrH\EhrHnKjl$`+#s*F9cqg\ElrIP!#s+C?)rIt9+rJ1E0s,-i7s,?u<s,I&;
+s,6o9qiguCrK[DKs-Nb]orS1qs02O4s1eTSs3(Ggs3q#"rRh)%s4dS6s6GgGs8;ols7QE^s6TdJ
+s5a4=s5*e1s4IA$s3^kks2k;[s24lQs1\NGs1/0<s0Ma1s/uC's/Z1"s/H$ss/5mos.o[is.]Oe
+s.KCas.01Zs-`nSs-EVKs-3JGs-!DEs,d2?s,R&;qi(K3s,-c3s+pE)qh=j!on2^bJcG-;qZ,%D
+rrAhoJ,~>
+JcFm4rr at WMe,T at HJcC<$U&V`Rqu>Q&mf`M)JHY]MnI#9so*,!qr<N9,r<`K2rs\o:r?;+as!7Uk
+s!Ri)s,?u<s,I&;s,6o9rKI7Hs$QfTs%!)\s%EAds'5S8s(D at Gs(q^Qs)S-_s*k!)s-E\Zs/Z1*
+s1/0Gs24lWs2tAds3Uf#s5j:WV>^Ggs6K^Ks5s at Bs5X.<s53k4s4RG#s31M`s1eTDs0Vg1s/Z0t
+s.TI^s-3PDs+p]+s*aons*+Kbs)7pRs(MFCs'Yk3s'#G)s&T/!s&8qos%`Ses%35]s$m#Ws$H`N
+s#pBEs#L*=s#9s9rAFU3s"j[1s"OI+s"=7%r at It!s!msrr?qUls!@Ids!%Ids+U9%on2^bJcG-;
+qZ,%DrrAhoJ,~>
+JcFm4rr at WMe,T at HJcC<$U&Y.ks/5moc_^Z=s/5mrs/Q$us/c+ts0hs:s1&*>s186Bs1JBFs1\NJ
+s1nTLs24lUs2P)Zs%`Sjs&&eos&8qss&K"us(hXNs)%d>s',M.s'>Y2s'Pe6s'bq:rF>k<s(24B
+s(D at FrFu:Hs(hXNs)%^Ps)7pVrGhjXs)\-\s)n?brHJ3bs*=Qhs*O]ls*aips*sutrIOp!l%Akd
+nI#;Gjb3MbrJ(9=q3q>Qn,E?es/c7's0)I-s0D[3s0_m8s1&*?s1SHIs24lWs3(Ghs4%)$s5!_5
+s5X.Bs69RMs6fpWs7?9`s7lWjV>^Ggs6K^Ks5s at Bs5X.<s53k4s4[M)s4..us3^kms3:Sfs2tA`
+s2Y/Xs2"`Ms1JBBrO;g8s0_m6s0Ma2s0;U-s/uC's/Z*us/H$ss/5mnrM9=cs.]Cas.JtUqk!VS
+q4.&GqjQ4;JcG-;qZ,%DrrAhoJ,~>
+JcFm4rr at WMe,T at HJcC<$U&V`Rqu>Q&r at e+'s"XO1s#'a6s(;:Ds(VL$rC-`Us%!)[s%<;bs%WMh
+s%r_ns&8qts&T/%s&oA*s',M.s'>Y2s'Pe6s'bq:s'u(>s(24BrFc.Ds(_RLs(q^PrGV^Ts)J'Z
+rH&!\rH8-`s*+KfrH\EhrHnKjl$`+#s*F9cqg\ElrIP!#s+C?)rIt9+rJ1E0s,-i7s,?u<s,I&;
+s,6o9qiguCrK[DKs-Nb]orS1qs02O4s1eTSs3(Ggs3q#"rRh)%s4dS6s6GgGs8;ols7QE^s6TdJ
+s5a4=s5*e1s4IA$s3^kks2k;[s24lQs1\NGs1/0<s0Ma1s/uC's/Z1"s/H$ss/5mos.o[is.]Oe
+s.KCas.01Zs-`nSs-EVKs-3JGs-!DEs,d2?s,R&;qi(K3s,-c3s+pE)qh=j!on2^bJcG-;qZ,%D
+rrAhoJ,~>
+JcFm4rr at WMci<kBJcC<$WW0MXqu>W(mf`M)JHY]MnI#:"rrD]qr<E'&r<WE1rsSi8r=/]Kr?M=g
+s,$c5s,6o:s,R,?s,d8Cs-*IJs$ZlWs%NGgs&8r!s',M0s'u(Cs)A!]s*4Qjs*aous,$c at s.KCi
+s/uC0s1A<Ks3(Gks4dS6s6TdXs8&_ns82ijs7?9Ys6K^Ls6'FDs5a4>s5F"7s4mY*s3CYas1SHB
+s0Vg1s/Z0ts.TI^s-<VFs+p]-s*juos*+Kas)A!Ss(VLEs'bq6s',M+s&]5#s&8qps%iYgs%<;^
+s%!)Xs$QfPs$-NHs#^6 at s#9m7s#'g5s"j[1s"XO-s"F7$s"+1#s!n$ts!Rgnq^)1dq]l+arIt'#
+pOhjbJcGKEq#JV<rrAhoJ,~>
+JcFm4rr at WMci<kBJcC<$WW3!ss/5moc)(H;s/5msrN#t"s/Z%ss0hs:s1&$<s186Cs1SHHs1eTL
+s2"ZNs24lUs%NGfs%r_ms&/kqs&B"us&T/8s(q^Ps&oA*s',M.s'>Y2s'Pe6s'bq:s'u(>s(2.@
+s(D at Fs(VLJrG2FLs)%dRs)7jTs)J'ZrH&!\rH8-`s*+EdrH\EhrHnQlrI+]prI=itrIOp!l\#"d
+nI#;Ls*s9drIt-'rJ1?>qjR!Qs/H$us/c7's0)I-s0Ma4s0hs:s1/0As1\NKs24lUs2k;cs3gqu
+s4[M/s5<q;s5s at Gs6]jUs7?9as7u]mWVukos7cQbs6fpQs69RHs5j:As5O(;s5*e2s4RG(s4..t
+s3Uels3:Ses2tA_s2P)Vs1nZKs1A<As0r$:rO)[4s0Ma1s02O,s/l=&s/Z1"s/H$ss/5mns.oIc
+rM'7arLibSrLWbSqjd>KqjRPQfD^@$p]($hbQ%SBU]5i~>
+JcFm4rr at WMci<kBJcC<$WW0MXqu>W(s"==)r at n7+s"j[4rAOUes(VL"s$clUs%!)[s%<;bs%WMg
+s%r_ms&/krs&T/$s&oA*s',M.s'>Y2s'Pe6s'bq:rF>e;s(;:Ds(MFHs(_RLs(q^Ps).jTs)A!X
+s)S'Zs)e9`s*"?bs*4QhrHeEhs*X'ZnbrK:s*=9dq1&3jrIP!#rIb'&s+^Q/s+p]3s,-i7s,I&=
+s,[2As,m>Fs-<VNs-`nVs.01^s.TIgs/,gqs/l=,rO2U2s1/0Gs2b5_s3CYms475(s53k;s69RO
+s7?9cs8.lUs8)cfs6fpOs5j:@s5<q5s4[M)s3q"os31Mas2G#Ts1nZKs1A<@s0hs6s0;U,s/c7$
+s/Q*us/>sqs/,gms.o[is.]Oes.B=_s.'+Xs-`nRs-E\MrKR>GrK at 2Cs,d8As,Qu9rJ^c7s,-i5
+s+pK+q1ed#q1SKpm=Kohp]($hbQ%SBU]5i~>
+JcFm4rr at WMci<kBJcC<$WW0MXqu>W(mf`M)JHY]MnI#:"rrD]qr<E'&r<WE1rsSi8r=/]Kr?M=g
+s,$c5s,6o:s,R,?s,d8Cs-*IJs$ZlWs%NGgs&8r!s',M0s'u(Cs)A!]s*4Qjs*aous,$c at s.KCi
+s/uC0s1A<Ks3(Gks4dS6s6TdXs8&_ns82ijs7?9Ys6K^Ls6'FDs5a4>s5F"7s4mY*s3CYas1SHB
+s0Vg1s/Z0ts.TI^s-<VFs+p]-s*juos*+Kas)A!Ss(VLEs'bq6s',M+s&]5#s&8qps%iYgs%<;^
+s%!)Xs$QfPs$-NHs#^6 at s#9m7s#'g5s"j[1s"XO-s"F7$s"+1#s!n$ts!Rgnq^)1dq]l+arIt'#
+pOhjbJcGKEq#JV<rrAhoJ,~>
+JcFm4rr at WMci<kBJcC<$WW3!ss/5moc)(H;s/5msrN#t"s/Z%ss0hs:s1&$<s186Cs1SHHs1eTL
+s2"ZNs24lUs%NGfs%r_ms&/kqs&B"us&T/8s(q^Ps&oA*s',M.s'>Y2s'Pe6s'bq:s'u(>s(2.@
+s(D at Fs(VLJrG2FLs)%dRs)7jTs)J'ZrH&!\rH8-`s*+EdrH\EhrHnQlrI+]prI=itrIOp!l\#"d
+nI#;Ls*s9drIt-'rJ1?>qjR!Qs/H$us/c7's0)I-s0Ma4s0hs:s1/0As1\NKs24lUs2k;cs3gqu
+s4[M/s5<q;s5s at Gs6]jUs7?9as7u]mWVukos7cQbs6fpQs69RHs5j:As5O(;s5*e2s4RG(s4..t
+s3Uels3:Ses2tA_s2P)Vs1nZKs1A<As0r$:rO)[4s0Ma1s02O,s/l=&s/Z1"s/H$ss/5mns.oIc
+rM'7arLibSrLWbSqjd>KqjRPQfD^@$p]($hbQ%SBU]5i~>
+JcFm4rr at WMci<kBJcC<$WW0MXqu>W(s"==)r at n7+s"j[4rAOUes(VL"s$clUs%!)[s%<;bs%WMg
+s%r_ms&/krs&T/$s&oA*s',M.s'>Y2s'Pe6s'bq:rF>e;s(;:Ds(MFHs(_RLs(q^Ps).jTs)A!X
+s)S'Zs)e9`s*"?bs*4QhrHeEhs*X'ZnbrK:s*=9dq1&3jrIP!#rIb'&s+^Q/s+p]3s,-i7s,I&=
+s,[2As,m>Fs-<VNs-`nVs.01^s.TIgs/,gqs/l=,rO2U2s1/0Gs2b5_s3CYms475(s53k;s69RO
+s7?9cs8.lUs8)cfs6fpOs5j:@s5<q5s4[M)s3q"os31Mas2G#Ts1nZKs1A<@s0hs6s0;U,s/c7$
+s/Q*us/>sqs/,gms.o[is.]Oes.B=_s.'+Xs-`nRs-E\MrKR>GrK at 2Cs,d8As,Qu9rJ^c7s,-i5
+s+pK+q1ed#q1SKpm=Kohp]($hbQ%SBU]5i~>
+JcFm4rr at WMaoD;>JcC<$XoH"^qu>W(mf`M)JHY]MnI#3urrD]qr<E3*r<WE0r<iQ4rs\o:r=8cM
+s!7W#s,$c5s,6o9s,I&>s,d8Ds$$HLs$m#\s%`Sls&T/&s'>Y4s().Fs)A!]s*ap"s,-i<s-WhY
+s/#ars0;U4s1SHMs3(Gks4dS7s6K^Ts7cQkXo8:ss8)cks7QE^s6]jOs60LGs5j:@s5O(:s4mY(
+s3:S_s1SHBs0Vg1s/Z0ts.TI_s-E\Gs,$c/s*t&ps*+Kbs)J'Vs(_RHs().:s'>Y.s&f;%s&B"r
+s%iYhs%<;^s%!)Ys$ZlRs$6TJs#g<Bs#C$;s#0g5s"sa3s"aU.s"FC)s"41#s!n$ts!Rgnq^)1d
+q'5n`ruqDrpOr9nmt-,js8Vlp_uK`:U]5i~>
+JcFm4rr at WMaoD;>JcC<$XoJF!s/*o7s/>stqlBVos0D[3s0hm8s1/0As1SHHs1eTLrPANNs24lT
+s%EAds%`Sis&&eos&8qss&K)6s(hXNs&oA*s',G,s'>Y2s'Pe6s'bq:s'u(>s(24Bs(D:Ds(VLJ
+s(hXNs)%^Ps)7pVrGhjXrH&!\s)n9`s*+Eds*=Qhs*O]ls*aips*sutrIP!#mt::dnI#5Js*sKj
+q1\^#q1nj9n,E?cs/Q+"s/l=)s0;U1s0Vg7s1&*?s1SHIs2"`Rs2P)\s3(Ggs4%)#s4[M/s5<q;
+s5j:Fs6TdSs7?9as7u]lX8W(qs8)cks7QE^s6]jOs60LGs5j:@s5O(:s5!_0s4RG's4%(rs3Uek
+s31Mds2k;]s2G#Ts1eTIs186?s0r$:s0_m6s0Ma2s0;U-s/uC(s/Z1"s/H$ss/5mns.oCarM'7a
+rLihUqk!PQrLEVOpR;,Mg&?R&s8Vlp_uK`:U]5i~>
+JcFm4rr at WMaoD;>JcC<$XoH"^qu>W(s"=7'rA"=-s"sa5s#0ags$-NNs$crWs%!)[s%<;as%NGe
+s%`SirD<Mms&T/%s&oA*s'5S0s'G_4s'Ye6s'l"<s(). at s(;:Ds(M at Fs(_RLs(q^Ps).jTs)A!X
+s)S-\s)e3^s*"EdrHS?frHeKjrI!pZnbrE8s*=9dq1&3jrIP!#rIb-'s+UK-s+gW1s,$c5s,6o9
+s,I&>s,d8Ds-*JKs-WhTs.'+\s.KCds/#ams/5mts0)I/s0hs=s1\NMs2P)[s3(Gfs3^krs4@;*
+s53k;s69ROs7?9as7u]mPPtOZs7cQ`s6TdKs5a4>s53k3s4RG&s3gqms2tA^s2=rSs1eTIs1A<A
+s0r$8s0D[/s/l=&s/Z1"s/H$ss/5mos/#ajs.]Oes.KCas.01Zs-itTs-EVKs-3JGs-!DEs,d8A
+s,R&;rJ^c7s,$]1pP8R!qh=ctpOhpdJcGcMq#J>4rrAhoJ,~>
+JcFm4rr at WMaoD;>JcC<$XoH"^qu>W(mf`M)JHY]MnI#3urrD]qr<E3*r<WE0r<iQ4rs\o:r=8cM
+s!7W#s,$c5s,6o9s,I&>s,d8Ds$$HLs$m#\s%`Sls&T/&s'>Y4s().Fs)A!]s*ap"s,-i<s-WhY
+s/#ars0;U4s1SHMs3(Gks4dS7s6K^Ts7cQkXo8:ss8)cks7QE^s6]jOs60LGs5j:@s5O(:s4mY(
+s3:S_s1SHBs0Vg1s/Z0ts.TI_s-E\Gs,$c/s*t&ps*+Kbs)J'Vs(_RHs().:s'>Y.s&f;%s&B"r
+s%iYhs%<;^s%!)Ys$ZlRs$6TJs#g<Bs#C$;s#0g5s"sa3s"aU.s"FC)s"41#s!n$ts!Rgnq^)1d
+q'5n`ruqDrpOr9nmt-,js8Vlp_uK`:U]5i~>
+JcFm4rr at WMaoD;>JcC<$XoJF!s/*o7s/>stqlBVos0D[3s0hm8s1/0As1SHHs1eTLrPANNs24lT
+s%EAds%`Sis&&eos&8qss&K)6s(hXNs&oA*s',G,s'>Y2s'Pe6s'bq:s'u(>s(24Bs(D:Ds(VLJ
+s(hXNs)%^Ps)7pVrGhjXrH&!\s)n9`s*+Eds*=Qhs*O]ls*aips*sutrIP!#mt::dnI#5Js*sKj
+q1\^#q1nj9n,E?cs/Q+"s/l=)s0;U1s0Vg7s1&*?s1SHIs2"`Rs2P)\s3(Ggs4%)#s4[M/s5<q;
+s5j:Fs6TdSs7?9as7u]lX8W(qs8)cks7QE^s6]jOs60LGs5j:@s5O(:s5!_0s4RG's4%(rs3Uek
+s31Mds2k;]s2G#Ts1eTIs186?s0r$:s0_m6s0Ma2s0;U-s/uC(s/Z1"s/H$ss/5mns.oCarM'7a
+rLihUqk!PQrLEVOpR;,Mg&?R&s8Vlp_uK`:U]5i~>
+JcFm4rr at WMaoD;>JcC<$XoH"^qu>W(s"=7'rA"=-s"sa5s#0ags$-NNs$crWs%!)[s%<;as%NGe
+s%`SirD<Mms&T/%s&oA*s'5S0s'G_4s'Ye6s'l"<s(). at s(;:Ds(M at Fs(_RLs(q^Ps).jTs)A!X
+s)S-\s)e3^s*"EdrHS?frHeKjrI!pZnbrE8s*=9dq1&3jrIP!#rIb-'s+UK-s+gW1s,$c5s,6o9
+s,I&>s,d8Ds-*JKs-WhTs.'+\s.KCds/#ams/5mts0)I/s0hs=s1\NMs2P)[s3(Gfs3^krs4@;*
+s53k;s69ROs7?9as7u]mPPtOZs7cQ`s6TdKs5a4>s53k3s4RG&s3gqms2tA^s2=rSs1eTIs1A<A
+s0r$8s0D[/s/l=&s/Z1"s/H$ss/5mos/#ajs.]Oes.KCas.01Zs-itTs-EVKs-3JGs-!DEs,d8A
+s,R&;rJ^c7s,$]1pP8R!qh=ctpOhpdJcGcMq#J>4rrAhoJ,~>
+JcFm4rr at WM`W,l:JcC<$Z2_Ldqu>Q&mf`S+JHY]MnI#-srrE!$r<E9*r<E9,r<W9,r<iQ4r=&W7
+r?D8ss+p]3s,-i7s,?u;s,R, at s#g<Gs$H`Ts%<;ds&/kts&oA-s'Yk;s(VLOs*"Ejs+LE0s-!DL
+s.97ds/c7+s1/0Fs2G#]s3gr%s5O(As6]jWs7cQkYPnM!s7u]hs7ZKbs7$'Ss69RIs5s at Cs5X.<
+s4[M%s31M]s1SHBs0Vg0s/Z0ss.TI_s-E\Hs,-i2s+12ts*4Qes)\3Ys(q^Ls(;:?s'G_1s&oA'
+s&K(ts%iYhs%NGas%*/[s$m#Us$?ZLs#pBDs#L*<rAO[5s"sa3s"XO-s"=='s"+1#s!n$ts![mp
+r?hIhr?V7br?D7brIt'#pOhjbL]@5O]Dqm2U]5i~>
+JcFm4rr at WM`W,l:JcC<$Z2aj$aef$7s/Pssqu?]%rNlO2s0hs;s186Bs1\NJrP8HLs2+fRs2=rV
+s%NGes%`Sjs&&eos&8qss&K)6s(hX:s&oA*s',G,s'>S0s'Pe7s'l"<s(). at s(;:Ds(M at Fs(_RL
+s(q^PrGMXRs)A!XrGqpZrH/'^s*"?bs*4Kfs*FWjs*Xcns*jors+('!rIX]pnV$E>qh5!!o7[!p
+pP/EtrL33Ss/5mqs/H%!s/c7's02O/s0Ma5s0r$>s1SHIs2+fTs2k;as3L_ms4%)#s4[M/s5<q;
+s5j:Es6K^Rs763^s7cQhs8/qss8;oms7cQes7H?\s6K^Ls60LFs5j:@s5F"8s5!_/s4IA%s3q"q
+s3L_is31Mcs2k;]s2=rRs1eTHs1/*;s0hs8s0Vg4s0D[0s0)I*s/c7$s/Q*us/,aks.oIcrM'1_
+s.JtUrLWbSrLEVOpR;,MfD^R*qZ+8.rrAhoJ,~>
+JcFm4rr at WM`W,l:JcC<$Z2_Ldqu>Q&r at n+'s"j[4s#0m9s(_RLrBL<Ms$m#Zs%!)\s%EAcs%WMg
+s%iSis&/kqs&B#!s&f;(s',M/s'G_4s'Yk8s'l"<s(). at s(;4Bs(M at Fs(_RLs(q^Ps).jTs)A!X
+s)S-\s)e9`rHA3bs*4Kfs*FWjs*X-\nbr?6s*=9dq1&9lqgn]ts+C?)s+UK-s+gW1s,$c5s,6o9
+s,I&=s,d8Ds-3PMs-`nVs.01^s.TIfs/#ams/5mrs/l=+s0_m;s1JBIs2=rXs3(Ggs3q#"s4dS0
+s5<q<s6BXOs7$'[s7ZKgs88/\s7lWds6p!Ps5j:@s5<q6s4dS+s4%(rs3:Scs2P)Ws2+fOs1\NG
+s186?s0hs6s0;U-s/c7$s/Q*us/>sqs/,gms.o[is.]Oes.KC`s.'+Xs-`nRs-E\MrKR>Gs-!DE
+s,[2?s,Hu9s,6o7rJCE-q1n^!qh=j!pOhjbL]@5O]Dqm2U]5i~>
+JcFm4rr at WM`W,l:JcC<$Z2_Ldqu>Q&mf`S+JHY]MnI#-srrE!$r<E9*r<E9,r<W9,r<iQ4r=&W7
+r?D8ss+p]3s,-i7s,?u;s,R, at s#g<Gs$H`Ts%<;ds&/kts&oA-s'Yk;s(VLOs*"Ejs+LE0s-!DL
+s.97ds/c7+s1/0Fs2G#]s3gr%s5O(As6]jWs7cQkYPnM!s7u]hs7ZKbs7$'Ss69RIs5s at Cs5X.<
+s4[M%s31M]s1SHBs0Vg0s/Z0ss.TI_s-E\Hs,-i2s+12ts*4Qes)\3Ys(q^Ls(;:?s'G_1s&oA'
+s&K(ts%iYhs%NGas%*/[s$m#Us$?ZLs#pBDs#L*<rAO[5s"sa3s"XO-s"=='s"+1#s!n$ts![mp
+r?hIhr?V7br?D7brIt'#pOhjbL]@5O]Dqm2U]5i~>
+JcFm4rr at WM`W,l:JcC<$Z2aj$aef$7s/Pssqu?]%rNlO2s0hs;s186Bs1\NJrP8HLs2+fRs2=rV
+s%NGes%`Sjs&&eos&8qss&K)6s(hX:s&oA*s',G,s'>S0s'Pe7s'l"<s(). at s(;:Ds(M at Fs(_RL
+s(q^PrGMXRs)A!XrGqpZrH/'^s*"?bs*4Kfs*FWjs*Xcns*jors+('!rIX]pnV$E>qh5!!o7[!p
+pP/EtrL33Ss/5mqs/H%!s/c7's02O/s0Ma5s0r$>s1SHIs2+fTs2k;as3L_ms4%)#s4[M/s5<q;
+s5j:Es6K^Rs763^s7cQhs8/qss8;oms7cQes7H?\s6K^Ls60LFs5j:@s5F"8s5!_/s4IA%s3q"q
+s3L_is31Mcs2k;]s2=rRs1eTHs1/*;s0hs8s0Vg4s0D[0s0)I*s/c7$s/Q*us/,aks.oIcrM'1_
+s.JtUrLWbSrLEVOpR;,MfD^R*qZ+8.rrAhoJ,~>
+JcFm4rr at WM`W,l:JcC<$Z2_Ldqu>Q&r at n+'s"j[4s#0m9s(_RLrBL<Ms$m#Zs%!)\s%EAcs%WMg
+s%iSis&/kqs&B#!s&f;(s',M/s'G_4s'Yk8s'l"<s(). at s(;4Bs(M at Fs(_RLs(q^Ps).jTs)A!X
+s)S-\s)e9`rHA3bs*4Kfs*FWjs*X-\nbr?6s*=9dq1&9lqgn]ts+C?)s+UK-s+gW1s,$c5s,6o9
+s,I&=s,d8Ds-3PMs-`nVs.01^s.TIfs/#ams/5mrs/l=+s0_m;s1JBIs2=rXs3(Ggs3q#"s4dS0
+s5<q<s6BXOs7$'[s7ZKgs88/\s7lWds6p!Ps5j:@s5<q6s4dS+s4%(rs3:Scs2P)Ws2+fOs1\NG
+s186?s0hs6s0;U-s/c7$s/Q*us/>sqs/,gms.o[is.]Oes.KC`s.'+Xs-`nRs-E\MrKR>Gs-!DE
+s,[2?s,Hu9s,6o7rJCE-q1n^!qh=j!pOhjbL]@5O]Dqm2U]5i~>
+JcFm4rr at WM_>jH6JcC<$[K!phqu>W(mf`S+JHY]MnI#'qrrDp"qZd!(r<W9,rsJ]4r=&]8rso&>
+s+^Q/s+p]3s,-i7s,?u;s,[1 at s#pBIs$QfUs%<;ds&/kts&oA,s'Yk:s(D at Ks)\3ds+(-)s-!DL
+s.01bs/Q+'s0r$Bs2=r\s3gr"s5*e9s60LNs7?9cXo8:ss7u]gs7?9\s6p!Rs69RHs5s at Bs53k0
+s3gqjs24lNs1/0:s02O)s/5mks.01Xs-*JCs,$c/s+(,rs*+Kbs)J'Vs(hXJs().;s'#G)s&T.u
+s&/kns%`Sgs%EA`s%!)Ys$crTs$6TJs#^6 at s#C$:s#'g5s"j[0s"OI+r at S%#s""$ts!dsrr?hCf
+r?V=dq]c%`s+U3#pOi'hrIL%0q#Ii&rrAhoJ,~>
+JcFm4rr at WM_>jH6JcC<$[K"4Bs/Q+"s/H$uqu?]%s0Ma4s0_m9s1&*?s1JBGs1eTLrPANNs24lU
+s%EAcs%`Sis%r_ns&8qss&K)6s(hX:s&oA*rEK;,rE]G0s'P_4s'bq;s(). at s(;:Ds(MFHrG)@J
+s(q^Ps).dRs)A!Xs)S'Zs)e3^s*"EdrHS?frHeKjrI"WnrI4crrIFp!s+9ormtC3<q1Sctqh4]t
+nV6jps+p.Cs/,gos/>mqs/Z1%s0)I-s0Ma5s0r$=s1A<Fs2"`Rs2Y/^s3gqss475&s4dS0s5<q;
+s5j:Es6K^Qs7$'[s7QEds7u]mXo8:ss7u]gs7?9\s6p!Rs69RHs5s at Bs5X.<s53k3s4RG(s4..t
+s3Uels3:Ses2k;^s2G#Us1nZKs1A<As0r$:rO)U1s0;U.s/c7$s/H$ss/5morMBIgq4mn_rLs1_
+oq2,Qq47JSpRCiEs-_R>O8o"U[K$7,U]5i~>
+JcFm4rr at WM_>jH6JcC<$[K!phqu>W(r at n+'s"aU1s#0m9s(hXNrBL<Is$?ZPs$crXs%<;as%WGe
+s%iYks&&eps&B"us&]5&s'#G-s'>Y2s'Pe6s'bq:s'u(>s(24BrFc.DrFu:Hs(hXNs)%dRs)7pV
+s)J'Zs)\3^rH8'_s*4Kfs*FWjs*X3^nbr94s*=9dq1&9lqgn]ts+C9's+^Q/s+p]3s,-i7s,?u;
+s,[2Bs-*JJs-NbSs.'+\s.KCds.fUjs/,gps/H%"s0)I/s0r$?s1\NLs2G#Zs31Mis4%)$s4mY4
+s5a4Ds6K^Qs7--]s7cQiQi6s[s7QE^s6TdKs5a4>s53k4s4[M)s4%(rs3CYfs2b5[s2=rSs1nZJ
+s1A<As0r$9s0D[/s/uC's/Z1"s/H$ss/5mos/#aks.]Oes.KCas.01Zs-itSrK[DIs-*JGs,m>B
+s,R,=rJ^]5rJLQ1rJ:3'q1ed#pOr9no7HplO8o"U[K$7,U]5i~>
+JcFm4rr at WM_>jH6JcC<$[K!phqu>W(mf`S+JHY]MnI#'qrrDp"qZd!(r<W9,rsJ]4r=&]8rso&>
+s+^Q/s+p]3s,-i7s,?u;s,[1 at s#pBIs$QfUs%<;ds&/kts&oA,s'Yk:s(D at Ks)\3ds+(-)s-!DL
+s.01bs/Q+'s0r$Bs2=r\s3gr"s5*e9s60LNs7?9cXo8:ss7u]gs7?9\s6p!Rs69RHs5s at Bs53k0
+s3gqjs24lNs1/0:s02O)s/5mks.01Xs-*JCs,$c/s+(,rs*+Kbs)J'Vs(hXJs().;s'#G)s&T.u
+s&/kns%`Sgs%EA`s%!)Ys$crTs$6TJs#^6 at s#C$:s#'g5s"j[0s"OI+r at S%#s""$ts!dsrr?hCf
+r?V=dq]c%`s+U3#pOi'hrIL%0q#Ii&rrAhoJ,~>
+JcFm4rr at WM_>jH6JcC<$[K"4Bs/Q+"s/H$uqu?]%s0Ma4s0_m9s1&*?s1JBGs1eTLrPANNs24lU
+s%EAcs%`Sis%r_ns&8qss&K)6s(hX:s&oA*rEK;,rE]G0s'P_4s'bq;s(). at s(;:Ds(MFHrG)@J
+s(q^Ps).dRs)A!Xs)S'Zs)e3^s*"EdrHS?frHeKjrI"WnrI4crrIFp!s+9ormtC3<q1Sctqh4]t
+nV6jps+p.Cs/,gos/>mqs/Z1%s0)I-s0Ma5s0r$=s1A<Fs2"`Rs2Y/^s3gqss475&s4dS0s5<q;
+s5j:Es6K^Qs7$'[s7QEds7u]mXo8:ss7u]gs7?9\s6p!Rs69RHs5s at Bs5X.<s53k3s4RG(s4..t
+s3Uels3:Ses2k;^s2G#Us1nZKs1A<As0r$:rO)U1s0;U.s/c7$s/H$ss/5morMBIgq4mn_rLs1_
+oq2,Qq47JSpRCiEs-_R>O8o"U[K$7,U]5i~>
+JcFm4rr at WM_>jH6JcC<$[K!phqu>W(r at n+'s"aU1s#0m9s(hXNrBL<Is$?ZPs$crXs%<;as%WGe
+s%iYks&&eps&B"us&]5&s'#G-s'>Y2s'Pe6s'bq:s'u(>s(24BrFc.DrFu:Hs(hXNs)%dRs)7pV
+s)J'Zs)\3^rH8'_s*4Kfs*FWjs*X3^nbr94s*=9dq1&9lqgn]ts+C9's+^Q/s+p]3s,-i7s,?u;
+s,[2Bs-*JJs-NbSs.'+\s.KCds.fUjs/,gps/H%"s0)I/s0r$?s1\NLs2G#Zs31Mis4%)$s4mY4
+s5a4Ds6K^Qs7--]s7cQiQi6s[s7QE^s6TdKs5a4>s53k4s4[M)s4%(rs3CYfs2b5[s2=rSs1nZJ
+s1A<As0r$9s0D[/s/uC's/Z1"s/H$ss/5mos/#aks.]Oes.KCas.01Zs-itSrK[DIs-*JGs,m>B
+s,R,=rJ^]5rJLQ1rJ:3'q1ed#pOr9no7HplO8o"U[K$7,U]5i~>
+JcFm4rr at WM^&S$2JcC<$]DoQnqu>W(mf`M)JHY]Mo*Y3qrrE!$qZd!(q[!'*rsJ]4r=&]8rso&Y
+s+^Q/s+p]3s,-i7s,?t8s#C$?s$$HKs$ZlWs%<;ds&&ers&f;*s'Pe8s(;:Gs)A!]s*ap,s-*JM
+s.01bs/H%%s0hs?s24l[s3gr#s4mY4s5a4Fs6p![s8&krs82iks7QE_s6p!Ts6BXKs6'FBs4mY*
+s3Uefs24lOs186=s0;U,s/Q*qs.KC]s-NbJs,6o3s+C?#s*=Wgs)\3Zs)%dHs'Pe2s'#G)s&]5#
+s&/kos%iYhs%NGbs%*/[s$crSs$6TIs#U0?s#9s9s"sa3s"aU.s"F='s"41#s""+!s!dsrs!Ral
+r?_Cfq]l%`ruqCbs+U9%pOiErnU[,.q#IPsrrAhoJ,~>
+JcFm4rr at WM^&S$2JcC<$]Dqo.`MNU3s/5mqqu?]%rNlO2s0hs:s1/0As1SHIrP8HLs2+fRs2=q1
+s%NGes%`Sis&&eos&8qss(VLJs(hX:s&oA*s',G,s'>S0s'Pe6s'bk8s'u(>s(24Cs(MFHs(_LJ
+s(q^Ps).dRs)A!Xs)S-\rH/'^rHA3bs*4KfrHeKjrI"WnrI4crs+('!s+9utm=b'<pOrQrrIjp!
+mtUXns.],arMBOks/5mqrMfgss/c7's02O/s0Vg7s1&*?s1SHIs2+fTs3gqss475&s4[M/s53k9
+s5a4Cs6K^QrUKpYs7?9`s7lWjX8W(qs7lWes763Ys6]jOs69RHs5j:@s5O(:s5!_0s4RG's4%(r
+s3Ueks31Mds2k;]s2G#Ts1eTIs186?s0r$:s0_m6s/l=%q5XIorMT[mrMBOipS7b_qk=%_o:PoO
+qjm\Uopb]ErL)@<RK*'_XoJD$U]5i~>
+JcFm4rr at WM^&S$2JcC<$]DoQnqu>W(s"FC+q_A%)s"sa6s(hXOs).d"s$?ZOs$ZlVs%35`s%NGe
+s%`Sis%r_ns&8qss&K)"s&f;(s',M.s'>Y2s'Pe7s'l"<s()(>s(;4Bs(M at Fs(_RLs(q^Ps).jT
+s)A!Xs)S-\s)e3^s*"Eds*4Kfs*F]lq0_^\oDSE4s*=?fpOE'jrIOits+C?)s+UK-s+gW1s,$c5
+s,6o9s,I&?s-!DHs-E\Ps-s%Zs.B=bs.]Ohs/#ams/>sss/Q+%s0;U3s1&*As1eTNs2P)\s3:Sk
+s4./&s5!_6s5s at Gs6TdSs763^s7cQiS,NBas7ZK`s6]jNs5s at As5F"8s5!_0s4RG's3q"ps3:Sd
+s2Y/Ys24lQs1eTIs186?s0hs7s0;U-s/l=%s/Q*us/>sqs/,gms.o[is.]Oes.B=^s-itTs-E\M
+s-3PIs-!DEs,d8 at rJg]5rJU]5rJCE-q1nj%qh>''s+U9%pOiErnU[,.q#IPsrrAhoJ,~>
+JcFm4rr at WM^&S$2JcC<$]DoQnqu>W(mf`M)JHY]Mo*Y3qrrE!$qZd!(q[!'*rsJ]4r=&]8rso&Y
+s+^Q/s+p]3s,-i7s,?t8s#C$?s$$HKs$ZlWs%<;ds&&ers&f;*s'Pe8s(;:Gs)A!]s*ap,s-*JM
+s.01bs/H%%s0hs?s24l[s3gr#s4mY4s5a4Fs6p![s8&krs82iks7QE_s6p!Ts6BXKs6'FBs4mY*
+s3Uefs24lOs186=s0;U,s/Q*qs.KC]s-NbJs,6o3s+C?#s*=Wgs)\3Zs)%dHs'Pe2s'#G)s&]5#
+s&/kos%iYhs%NGbs%*/[s$crSs$6TIs#U0?s#9s9s"sa3s"aU.s"F='s"41#s""+!s!dsrs!Ral
+r?_Cfq]l%`ruqCbs+U9%pOiErnU[,.q#IPsrrAhoJ,~>
+JcFm4rr at WM^&S$2JcC<$]Dqo.`MNU3s/5mqqu?]%rNlO2s0hs:s1/0As1SHIrP8HLs2+fRs2=q1
+s%NGes%`Sis&&eos&8qss(VLJs(hX:s&oA*s',G,s'>S0s'Pe6s'bk8s'u(>s(24Cs(MFHs(_LJ
+s(q^Ps).dRs)A!Xs)S-\rH/'^rHA3bs*4KfrHeKjrI"WnrI4crs+('!s+9utm=b'<pOrQrrIjp!
+mtUXns.],arMBOks/5mqrMfgss/c7's02O/s0Vg7s1&*?s1SHIs2+fTs3gqss475&s4[M/s53k9
+s5a4Cs6K^QrUKpYs7?9`s7lWjX8W(qs7lWes763Ys6]jOs69RHs5j:@s5O(:s5!_0s4RG's4%(r
+s3Ueks31Mds2k;]s2G#Ts1eTIs186?s0r$:s0_m6s/l=%q5XIorMT[mrMBOipS7b_qk=%_o:PoO
+qjm\Uopb]ErL)@<RK*'_XoJD$U]5i~>
+JcFm4rr at WM^&S$2JcC<$]DoQnqu>W(s"FC+q_A%)s"sa6s(hXOs).d"s$?ZOs$ZlVs%35`s%NGe
+s%`Sis%r_ns&8qss&K)"s&f;(s',M.s'>Y2s'Pe7s'l"<s()(>s(;4Bs(M at Fs(_RLs(q^Ps).jT
+s)A!Xs)S-\s)e3^s*"Eds*4Kfs*F]lq0_^\oDSE4s*=?fpOE'jrIOits+C?)s+UK-s+gW1s,$c5
+s,6o9s,I&?s-!DHs-E\Ps-s%Zs.B=bs.]Ohs/#ams/>sss/Q+%s0;U3s1&*As1eTNs2P)\s3:Sk
+s4./&s5!_6s5s at Gs6TdSs763^s7cQiS,NBas7ZK`s6]jNs5s at As5F"8s5!_0s4RG's3q"ps3:Sd
+s2Y/Ys24lQs1eTIs186?s0hs7s0;U-s/l=%s/Q*us/>sqs/,gms.o[is.]Oes.B=^s-itTs-E\M
+s-3PIs-!DEs,d8 at rJg]5rJU]5rJCE-q1nj%qh>''s+U9%pOiErnU[,.q#IPsrrAhoJ,~>
+JcFm4rr at WM\c;U.JcC<$^]2&tqu>Q&nHA_+JHY]Mo*Y-orrN-'r<E'&q[!3.q[390r=&]Ss!dst
+s+^Q/s+p]3s,-i7s"aU1s#0m<s#pBIs$QfUs%35bs%r_ps&]5)s'G_7s(24Es)%d`s+p]8s-*JM
+s.01as/>t#s0_m at s2P)`s4%)(s5O(?s69RMs7$'[s7cQjXo8:rs7cQcs7--Xs6K^Ms5s@?s4mY+
+s3gqks2P)Us1SHCs0Vg1s/c7!s.fUds-itPs,[2:s+UK&s*Ocjs)\3Xs(_RFs'bq5s'#G)s&]5$
+s&8qqs%r_js%WMcs%*/Zs$QfPs$$HEs#L*=s#9s8s"sa2s"XO-s"F7%s"47%s""+!s!dsrs!Ral
+pE]\^r?D1`rIt-%qh+p#l[b].qZ*JmrrAhoJ,~>
+JcFm4rr at WM\c;U.JcC<$^]29LrMKUmqu?W#rNlO3s0r$<s1/0Bs1\NJs1nZNs2+fRs2=rVs%EAc
+s%WMgs%iYks&/kqs(MFHs(_R8s&oA*rEK5*s'>Y2s'Pe6rF,_8s'u"<s(24Bs(D at Fs(VLKrG;LN
+s).jTrG_dVs)S-\s)e3^s*"?bs*4Kfs*FWjs*Xcns*jors+('!qh"d!m=b'<on<?qs+L'!mtUdr
+qkEc_s.oUis/,gos/>mqs/Q+"s/l=)s0;U1s0_m9s1/0As1\NTs3q"us4@;(s4[M.s5*e7s5X.C
+s6]jUs7?9bs7lQgs8)]ks88qrs8)cis7H?]s6p!Rs6BXJs5s at Cs5X.<s53k4s4[M*s4..us3^km
+s3:Sfs2tA_s2P)Ws2"`Ms1A<@s0r$9s0D[/s/uC&q5XIos/>mos/,gmrM97arM'7arLibSrLWnW
+rLEhUm at +'Cg&@WDqZ*JmrrAhoJ,~>
+JcFm4rr at WM\c;U.JcC<$^]2&tqu>Q&s"OC+q(ht-s(_RNs)7p$s$-NKs$?ZPs$ZlWs%<;bs%WMg
+s%iYks&&_ns&K)"s&]5's'#G,s'5S0s'Pe6s'bq:s'u(>rFQ"@rFc.Ds(VLJrG2FLs)%dRs)7pV
+s)J'ZrH&!\s)n?bs*+Kfs*=Wjqg83fo6p6/omZpdpO;jdqgeWrqh"j#s+LE+s+^Q/s+p]3s,-c5
+s,?u<s,m>Fs-<VOs-itXs.B=as.]Ogs/#ams/>sss/Z1$s02O0s0hs<s1SHJs24lWs3(Ggs3q#"
+s4dS2s5X.Bs6BXOs7$'[s7QEes8/Ges8;ols7QE^s6fpPs6'FDs5X.<s53k3s4[M*s4..ts3L_g
+s2b5[s2=rSs1nZKs1JBBs0r$9s0Ma0s/uC's/Z1"s/H$ss/5mos/#ajs.TIcs.01Zs-`nQs-<VK
+s-*JGs,m>Cs,[2?qi1Q5rJUW3rJCK/pP8X#pP&Ktqh+p#l[b].qZ*JmrrAhoJ,~>
+JcFm4rr at WM\c;U.JcC<$^]2&tqu>Q&nHA_+JHY]Mo*Y-orrN-'r<E'&q[!3.q[390r=&]Ss!dst
+s+^Q/s+p]3s,-i7s"aU1s#0m<s#pBIs$QfUs%35bs%r_ps&]5)s'G_7s(24Es)%d`s+p]8s-*JM
+s.01as/>t#s0_m at s2P)`s4%)(s5O(?s69RMs7$'[s7cQjXo8:rs7cQcs7--Xs6K^Ms5s@?s4mY+
+s3gqks2P)Us1SHCs0Vg1s/c7!s.fUds-itPs,[2:s+UK&s*Ocjs)\3Xs(_RFs'bq5s'#G)s&]5$
+s&8qqs%r_js%WMcs%*/Zs$QfPs$$HEs#L*=s#9s8s"sa2s"XO-s"F7%s"47%s""+!s!dsrs!Ral
+pE]\^r?D1`rIt-%qh+p#l[b].qZ*JmrrAhoJ,~>
+JcFm4rr at WM\c;U.JcC<$^]29LrMKUmqu?W#rNlO3s0r$<s1/0Bs1\NJs1nZNs2+fRs2=rVs%EAc
+s%WMgs%iYks&/kqs(MFHs(_R8s&oA*rEK5*s'>Y2s'Pe6rF,_8s'u"<s(24Bs(D at Fs(VLKrG;LN
+s).jTrG_dVs)S-\s)e3^s*"?bs*4Kfs*FWjs*Xcns*jors+('!qh"d!m=b'<on<?qs+L'!mtUdr
+qkEc_s.oUis/,gos/>mqs/Q+"s/l=)s0;U1s0_m9s1/0As1\NTs3q"us4@;(s4[M.s5*e7s5X.C
+s6]jUs7?9bs7lQgs8)]ks88qrs8)cis7H?]s6p!Rs6BXJs5s at Cs5X.<s53k4s4[M*s4..us3^km
+s3:Sfs2tA_s2P)Ws2"`Ms1A<@s0r$9s0D[/s/uC&q5XIos/>mos/,gmrM97arM'7arLibSrLWnW
+rLEhUm at +'Cg&@WDqZ*JmrrAhoJ,~>
+JcFm4rr at WM\c;U.JcC<$^]2&tqu>Q&s"OC+q(ht-s(_RNs)7p$s$-NKs$?ZPs$ZlWs%<;bs%WMg
+s%iYks&&_ns&K)"s&]5's'#G,s'5S0s'Pe6s'bq:s'u(>rFQ"@rFc.Ds(VLJrG2FLs)%dRs)7pV
+s)J'ZrH&!\s)n?bs*+Kfs*=Wjqg83fo6p6/omZpdpO;jdqgeWrqh"j#s+LE+s+^Q/s+p]3s,-c5
+s,?u<s,m>Fs-<VOs-itXs.B=as.]Ogs/#ams/>sss/Z1$s02O0s0hs<s1SHJs24lWs3(Ggs3q#"
+s4dS2s5X.Bs6BXOs7$'[s7QEes8/Ges8;ols7QE^s6fpPs6'FDs5X.<s53k3s4[M*s4..ts3L_g
+s2b5[s2=rSs1nZKs1JBBs0r$9s0Ma0s/uC's/Z1"s/H$ss/5mos/#ajs.TIcs.01Zs-`nQs-<VK
+s-*JGs,m>Cs,[2?qi1Q5rJUW3rJCK/pP8X#pP&Ktqh+p#l[b].qZ*JmrrAhoJ,~>
+JcFm4rr at WM[K$+(JcC<$`W*]%qu>W(mf`S+JHY]Moa:^,o*,-pr<E'&r<W9,r<iK2r=&]Sr at .[q
+s+gW1s,$c5s"47's"aU2s#9s=s#g<Hs$QfUs%iYus'5S1s'Yk:s(24Cs(VLZs+C?-s,I&Bs-NbV
+s.]Oks0)I4s1nZTs3CYps4mY7s60LKs6fpWs7H?bs7u]mYPnM!s7u]fs7--Ws6BXIs5a4=s5*e0
+s4..rs2tA[s1nZHs0r$6s0)I's/,gis.'+Ts,R,7s+:9#s*Xils)n?]s(q^Ks'u(9s'5S,s&f;&
+s&T.ts%r_js%EA`s%!)Ws$H`Ms#g<Cs#L*=s#9s9s"sa3rA"=+s"F='s"+*us!dmpr?hIhpE]b`
+r?D7br?2&lrIb'#jajE2q#I&errAhoJ,~>
+JcFm4rr at WM[K$+(JcC<$`W*oRrMKUmqu?]%rNlO2rO2a8s1/0 at s1\NJrP8HMs24lTs%<;as%NGe
+s%`Sis%r_ms&8r2s(VL7s&f;(s'#A*s'5S0s'G_4rF#Y6s'kq:s()(>s(;:Ds(MFHs(_RLs(q^P
+s).jTrG_dVs)S-\s)e3^s*"?bs*4Kfs*FWjs*Xcns*jors+('!qh"]tnV$QBrsSFOs+'cro7m'r
+qkF%aq>U>crM9Cgs/,ams/H%%s1&$<s180 at rOi0Rs3q"us4@;(s4[M.s5*e6s5a4Fs6]jUs7?9a
+s7u]mTDeffs7u]gs7?9[s6]jPs69RHs5s at Bs5X.<s5*e2s4RG(s4..ts3Uels3:Ses2k;\s2"`K
+s180>s1&*;s0Ma1s0)I)s/Z*uql0Ols/,akrM97arM'7arLihUs.0+YopbE=qjH.:WW2boTE"ok
+U]5i~>
+JcFm4rr at WM[K$+(JcC<$`W*]%qu>W(s"FC+s"X=)s"j[5s(q^Rs$$BGs$6TNs$ZlUs%*/_s%WMg
+s%iYks&&eos&8qss&K)#s&f;(s'#G,s'>Y2s'Pe6s'bk9s()(>s(;:Ds(M at Fs(_RLrG;LNs).jT
+s)A!Xs)S'Zs)e9`s*"Eds*4KfrHnEho6p6/o7$^bpO;pfq1/EprIY'%rIk3)s+^Q/s+p]3rJLW5
+s,?u;s,[2Cs-3PLs-`nVs.01^s.TIes.o[ks/5mqs/Q+#s/l=+s0Vg8s186Es2"`Rs2b5as3Ueq
+s4IA,s5<q<s60LKs6fpWs7H?bs7u]mWVukps82cks7u]hs7QE`s7$'Ts69RGs5a4>s5<q6s4mY-
+s475!s3Uejs2tA^s2G#Us2"`Ms1SHEs1&*;s0Vg3s0)I)s/c7$s/Q*ts/,gms.fUgs.KC`s.'+W
+s-NbNs-3JGs-!DEs,d2?s,R&;qi(K3rJLW3qhY!%rJ(9)q1S^!rIX-^WW2boTE"okU]5i~>
+JcFm4rr at WM[K$+(JcC<$`W*]%qu>W(mf`S+JHY]Moa:^,o*,-pr<E'&r<W9,r<iK2r=&]Sr at .[q
+s+gW1s,$c5s"47's"aU2s#9s=s#g<Hs$QfUs%iYus'5S1s'Yk:s(24Cs(VLZs+C?-s,I&Bs-NbV
+s.]Oks0)I4s1nZTs3CYps4mY7s60LKs6fpWs7H?bs7u]mYPnM!s7u]fs7--Ws6BXIs5a4=s5*e0
+s4..rs2tA[s1nZHs0r$6s0)I's/,gis.'+Ts,R,7s+:9#s*Xils)n?]s(q^Ks'u(9s'5S,s&f;&
+s&T.ts%r_js%EA`s%!)Ws$H`Ms#g<Cs#L*=s#9s9s"sa3rA"=+s"F='s"+*us!dmpr?hIhpE]b`
+r?D7br?2&lrIb'#jajE2q#I&errAhoJ,~>
+JcFm4rr at WM[K$+(JcC<$`W*oRrMKUmqu?]%rNlO2rO2a8s1/0 at s1\NJrP8HMs24lTs%<;as%NGe
+s%`Sis%r_ms&8r2s(VL7s&f;(s'#A*s'5S0s'G_4rF#Y6s'kq:s()(>s(;:Ds(MFHs(_RLs(q^P
+s).jTrG_dVs)S-\s)e3^s*"?bs*4Kfs*FWjs*Xcns*jors+('!qh"]tnV$QBrsSFOs+'cro7m'r
+qkF%aq>U>crM9Cgs/,ams/H%%s1&$<s180 at rOi0Rs3q"us4@;(s4[M.s5*e6s5a4Fs6]jUs7?9a
+s7u]mTDeffs7u]gs7?9[s6]jPs69RHs5s at Bs5X.<s5*e2s4RG(s4..ts3Uels3:Ses2k;\s2"`K
+s180>s1&*;s0Ma1s0)I)s/Z*uql0Ols/,akrM97arM'7arLihUs.0+YopbE=qjH.:WW2boTE"ok
+U]5i~>
+JcFm4rr at WM[K$+(JcC<$`W*]%qu>W(s"FC+s"X=)s"j[5s(q^Rs$$BGs$6TNs$ZlUs%*/_s%WMg
+s%iYks&&eos&8qss&K)#s&f;(s'#G,s'>Y2s'Pe6s'bk9s()(>s(;:Ds(M at Fs(_RLrG;LNs).jT
+s)A!Xs)S'Zs)e9`s*"Eds*4KfrHnEho6p6/o7$^bpO;pfq1/EprIY'%rIk3)s+^Q/s+p]3rJLW5
+s,?u;s,[2Cs-3PLs-`nVs.01^s.TIes.o[ks/5mqs/Q+#s/l=+s0Vg8s186Es2"`Rs2b5as3Ueq
+s4IA,s5<q<s60LKs6fpWs7H?bs7u]mWVukps82cks7u]hs7QE`s7$'Ts69RGs5a4>s5<q6s4mY-
+s475!s3Uejs2tA^s2G#Us2"`Ms1SHEs1&*;s0Vg3s0)I)s/c7$s/Q*ts/,gms.fUgs.KC`s.'+W
+s-NbNs-3JGs-!DEs,d2?s,R&;qi(K3rJLW3qhY!%rJ(9)q1S^!rIX-^WW2boTE"okU]5i~>
+JcFm4rr at WMYQ+P$JcC<$aoB2+qu>W(mf`S+JHY]Mq[3-,pBCEurrN'&qZm'*q$I!,r<rW6s![gp
+s!n%!s"+2*s+pV(s"47's"FC.s#'g9s#^6Ds$H`Ts%<;gs',M/s'Pe7s'u(?s)%dSs*k!$s,$c9
+s-3POs.97cs/Z1)s0r$Cs2Y/ds4@;-s5s at Gs6TdSs763_s7lWkXo8:ss7QE\s6K^Ks5a4=s5*e1
+s4@;"s3Ueis2Y/Vs1\NEs0_m2s/c6ss.97Ws,d8=s+gW-s+13!s*Ocjs)e9Zs(hXHs'bq5s'#G(
+s&T/!s&/kms%WMds%35[s$QfOs#pBDs#U0?s#C$;s#0m7s"j[1s"XO,s"==&r@@apr@%[ns!I[j
+r?V=dr?D1`r?2+^rIaotjaj]:q#Hc]rrAhoJ,~>
+JcFm4rr at WMYQ+P$JcC<$aoB>VrMKJlrNcC.s0Vg6s0hs:s1/0 at s1A<Es1eTLs2"`Ps%35_s%EAc
+s%WMgs%iYks&&f.s(D at 2s&T/%s&oA*s',M.s'>S0s'Pe6s'bk8s'u(>rFQ"@s(D:Ds(VLJs(hXN
+s)%dRs)7jTs)J'Zs)\-\s)n?bs*+Eds*=Qhs*O]ls*aips*suts+1'!qh+Elq[3-,pOrEts+('%
+l\>:loqVKbrLa+_rLs7eqka=is/>sts/c7)s1&$<s180 at s1\NKs3L_os4./$s4RG,s5!_3s5O(?
+s6'FJs6p![s7cQiSc/Tcs7lWes763Ys6]jOs69RHs5j:@s5O(:s5!_0s4RG's3q"qs3L_gs2Y/V
+s1\NHs1JBDs180>s0r$9s0Ma1s/uC'rMo[mrMT[mrMBOiq4mn_rLs7aqk*hYs./nSpRCW?qjH.:
+Z2aV"QiI'cU]5i~>
+JcFm4rr at WMYQ+P$JcC<$aoB2+qu>W(s"FC+rA"7+q_S7fs)7j"s$-NKs$H`Qs$ZlUs$m#_s%`Si
+s%r_ms&/kqs&B"us&T/$s&f;(s'#G,s'5S0s'Pe6s'l"<rFGq>s(;4Bs(MFHs(_LJs(qXNs).jT
+s)@pVrH&!\s)n?brHJ9ds*=Wjs*O]lo6p6/nUCL`pO;pfq1/Eps+:3%s+L?)s+^Q/s+pW1s,-c5
+s,?u<s,d8Es-<VNs-`nVs.97`s.TIfs.o[ls/5aqs/uC-s0_m:s1A<Gs2+fVs2k;cs3^kss4RG/
+s5O(@s69RMs6p!Ys7QEes8/kqs8)cirV$9as7H?_s7--Xs6]jPs6BXIs5j:@s5F"8s5!_0s4IA%
+s3gqns31Mbs2P)Ws2+fOs1\NGs186>s0_m5s02O+s/Z1"s/>sqs/#aks.]Oes.B=]s-itSrK[>G
+s-*DEs,m>Cs,[2?qi1K3s,6i5rJCK/qhP-)rIt-%qh+]rjaj]:q#Hc]rrAhoJ,~>
+JcFm4rr at WMYQ+P$JcC<$aoB2+qu>W(mf`S+JHY]Mq[3-,pBCEurrN'&qZm'*q$I!,r<rW6s![gp
+s!n%!s"+2*s+pV(s"47's"FC.s#'g9s#^6Ds$H`Ts%<;gs',M/s'Pe7s'u(?s)%dSs*k!$s,$c9
+s-3POs.97cs/Z1)s0r$Cs2Y/ds4@;-s5s at Gs6TdSs763_s7lWkXo8:ss7QE\s6K^Ks5a4=s5*e1
+s4@;"s3Ueis2Y/Vs1\NEs0_m2s/c6ss.97Ws,d8=s+gW-s+13!s*Ocjs)e9Zs(hXHs'bq5s'#G(
+s&T/!s&/kms%WMds%35[s$QfOs#pBDs#U0?s#C$;s#0m7s"j[1s"XO,s"==&r@@apr@%[ns!I[j
+r?V=dr?D1`r?2+^rIaotjaj]:q#Hc]rrAhoJ,~>
+JcFm4rr at WMYQ+P$JcC<$aoB>VrMKJlrNcC.s0Vg6s0hs:s1/0 at s1A<Es1eTLs2"`Ps%35_s%EAc
+s%WMgs%iYks&&f.s(D at 2s&T/%s&oA*s',M.s'>S0s'Pe6s'bk8s'u(>rFQ"@s(D:Ds(VLJs(hXN
+s)%dRs)7jTs)J'Zs)\-\s)n?bs*+Eds*=Qhs*O]ls*aips*suts+1'!qh+Elq[3-,pOrEts+('%
+l\>:loqVKbrLa+_rLs7eqka=is/>sts/c7)s1&$<s180 at s1\NKs3L_os4./$s4RG,s5!_3s5O(?
+s6'FJs6p![s7cQiSc/Tcs7lWes763Ys6]jOs69RHs5j:@s5O(:s5!_0s4RG's3q"qs3L_gs2Y/V
+s1\NHs1JBDs180>s0r$9s0Ma1s/uC'rMo[mrMT[mrMBOiq4mn_rLs7aqk*hYs./nSpRCW?qjH.:
+Z2aV"QiI'cU]5i~>
+JcFm4rr at WMYQ+P$JcC<$aoB2+qu>W(s"FC+rA"7+q_S7fs)7j"s$-NKs$H`Qs$ZlUs$m#_s%`Si
+s%r_ms&/kqs&B"us&T/$s&f;(s'#G,s'5S0s'Pe6s'l"<rFGq>s(;4Bs(MFHs(_LJs(qXNs).jT
+s)@pVrH&!\s)n?brHJ9ds*=Wjs*O]lo6p6/nUCL`pO;pfq1/Eps+:3%s+L?)s+^Q/s+pW1s,-c5
+s,?u<s,d8Es-<VNs-`nVs.97`s.TIfs.o[ls/5aqs/uC-s0_m:s1A<Gs2+fVs2k;cs3^kss4RG/
+s5O(@s69RMs6p!Ys7QEes8/kqs8)cirV$9as7H?_s7--Xs6]jPs6BXIs5j:@s5F"8s5!_0s4IA%
+s3gqns31Mbs2P)Ws2+fOs1\NGs186>s0_m5s02O+s/Z1"s/>sqs/#aks.]Oes.B=]s-itSrK[>G
+s-*DEs,m>Cs,[2?qi1K3s,6i5rJCK/qhP-)rIt-%qh+]rjaj]:q#Hc]rrAhoJ,~>
+JcFm4rr at WMX8i+uJcC<$c2Y\1qu>Q&nHA_+JHYcOrsJE,q$$KsrrN-(qZm!(q[*'*rsSiTr at .ar
+r@@n!s+gP&s"+1%s"FC+s"XO0s#0m;s#pBKs$m#\s%iYns',M/s'Pe9s(q^Rs)S-]s+(-(s,6o=
+s-<VQs/H%$s0D[7s1eTRs31Mks4RG1s6'FIs6]jUs7?9as7u]mXo8:qs763Vs5j:>s5!_/s4@;#
+s3^kks2tA^s2G#Ss1/07s/Z0rs.TI_s-NbKs,I&8s+UK*s+(,ts*F]gs)S-Vs(MFAs'5S,s&]5#
+s&8qps%iYhs%<;^s$crSs$6TJs#g<Cs#U0>s#9s8s"sa3s"XO-s"=='r at Imts!msrs![mps!I[j
+s!7Ofr?D1`ruh7^r>t]bl%/_^]Dq[,O8o4[U]5i~>
+JcFm4rr at WMX8i+uJcC<$c2Yh\rMKJls0;U0s0;U0s0Ma4s0_m9s1&*>s186Cs1SHHs1nZNs2+e-
+s%E;as%WMgs%r_ms(;4Bs&Aqss&T/(rETA.s'G_4s'Ye6s'l"<rFGq>rFZ(Bs(MFHrG)@Js(q^P
+s).dRs)A!Xs)S-\rH/'^s*"EdrHS?frHeKjrI"WnrI4crrIFp!rIXp!nV$oLoaCSKpP&WtrIsKj
+s+g3 at s8Mths.K=as.]Ogs.oUis/5mrs/c7's02O/s1&$<s1A<Fs1nZPs2G#cs3q"us4@;(s4dS2
+s5a4Es6K^Ps7$'[s7QEds8&;bs8)cis7H?]s6fpQs69RIs5s at Cs5X.<s53k4s4[M&s3L_gs2Y/Y
+s24lQs1eTIs1J<Bs186 at s1&*<s0Vg3s0)I)s/Z*urMfaos/5gms/#[iqkO1crLs7arLa+]qjmPQ
+nXK';q3fq8]Dq[,O8o4[U]5i~>
+JcFm4rr at WMX8i+uJcC<$c2Y\1qu>Q&s"OC+rA+7+s)%dRs)J'&rBL<Js$H`Qs$ZlVs%!)\s%EAd
+s%iSjs&8qss&K)"s&]5&rE9/(rEK;-s'Pe8s'u(>rFPq?s(M at Fs(_RLs(qXNs).dRs)A!Xs)S'Z
+s)e9`s*"?bs*4Kfs*F]ls*XKfoDS-,s*=Ehq1&-hrIP!#rIb-'rIt9+s+gQ/s,$c5rJU]7s,I&>
+s,m>Fs-E\Ps-itXs.97`s.]Ogs/#arq5jV#s0Ma6s1/0CqoA`Zs3L_os4@;*s53k:s6'FIs6]jU
+s7?9as7u]mXo8:ts7u]fs763Zs6p!Us6]jPs69RHrT=.As5a4>s5<q6s4mY.s4@;#s3Uejs2tA^
+s2G#Us2"`Ms1SHEs1/0<s0D[-s/c7#s/H$rs/,gls.fUfs.B=^s-s%Vs-WhPrK[DIrKI8Es,m8A
+s,[2?rJg]5rJU]5s,$]1rJ19)rIt3'rIa]nl%/_^]Dq[,O8o4[U]5i~>
+JcFm4rr at WMX8i+uJcC<$c2Y\1qu>Q&nHA_+JHYcOrsJE,q$$KsrrN-(qZm!(q[*'*rsSiTr at .ar
+r@@n!s+gP&s"+1%s"FC+s"XO0s#0m;s#pBKs$m#\s%iYns',M/s'Pe9s(q^Rs)S-]s+(-(s,6o=
+s-<VQs/H%$s0D[7s1eTRs31Mks4RG1s6'FIs6]jUs7?9as7u]mXo8:qs763Vs5j:>s5!_/s4@;#
+s3^kks2tA^s2G#Ss1/07s/Z0rs.TI_s-NbKs,I&8s+UK*s+(,ts*F]gs)S-Vs(MFAs'5S,s&]5#
+s&8qps%iYhs%<;^s$crSs$6TJs#g<Cs#U0>s#9s8s"sa3s"XO-s"=='r at Imts!msrs![mps!I[j
+s!7Ofr?D1`ruh7^r>t]bl%/_^]Dq[,O8o4[U]5i~>
+JcFm4rr at WMX8i+uJcC<$c2Yh\rMKJls0;U0s0;U0s0Ma4s0_m9s1&*>s186Cs1SHHs1nZNs2+e-
+s%E;as%WMgs%r_ms(;4Bs&Aqss&T/(rETA.s'G_4s'Ye6s'l"<rFGq>rFZ(Bs(MFHrG)@Js(q^P
+s).dRs)A!Xs)S-\rH/'^s*"EdrHS?frHeKjrI"WnrI4crrIFp!rIXp!nV$oLoaCSKpP&WtrIsKj
+s+g3 at s8Mths.K=as.]Ogs.oUis/5mrs/c7's02O/s1&$<s1A<Fs1nZPs2G#cs3q"us4@;(s4dS2
+s5a4Es6K^Ps7$'[s7QEds8&;bs8)cis7H?]s6fpQs69RIs5s at Cs5X.<s53k4s4[M&s3L_gs2Y/Y
+s24lQs1eTIs1J<Bs186 at s1&*<s0Vg3s0)I)s/Z*urMfaos/5gms/#[iqkO1crLs7arLa+]qjmPQ
+nXK';q3fq8]Dq[,O8o4[U]5i~>
+JcFm4rr at WMX8i+uJcC<$c2Y\1qu>Q&s"OC+rA+7+s)%dRs)J'&rBL<Js$H`Qs$ZlVs%!)\s%EAd
+s%iSjs&8qss&K)"s&]5&rE9/(rEK;-s'Pe8s'u(>rFPq?s(M at Fs(_RLs(qXNs).dRs)A!Xs)S'Z
+s)e9`s*"?bs*4Kfs*F]ls*XKfoDS-,s*=Ehq1&-hrIP!#rIb-'rIt9+s+gQ/s,$c5rJU]7s,I&>
+s,m>Fs-E\Ps-itXs.97`s.]Ogs/#arq5jV#s0Ma6s1/0CqoA`Zs3L_os4@;*s53k:s6'FIs6]jU
+s7?9as7u]mXo8:ts7u]fs763Zs6p!Us6]jPs69RHrT=.As5a4>s5<q6s4mY.s4@;#s3Uejs2tA^
+s2G#Us2"`Ms1SHEs1/0<s0D[-s/c7#s/H$rs/,gls.fUfs.B=^s-s%Vs-WhPrK[DIrKI8Es,m8A
+s,[2?rJg]5rJU]5s,$]1rJ19)rIt3'rIa]nl%/_^]Dq[,O8o4[U]5i~>
+JcFm4rr at WMVuQ\qJcC<$dJq+5qu>W(nHA_+JHYcOo*bF!o*53rq$6d&r<`9,s!Rans!dsts"+1'
+s"j[5ru(hds""+#s"==)s"OI-s"j[4s#L*Cs$H`Ts%<;es&8r!s'5S3s(VLNs)J'\s*"Efs+:9+
+s,?uAs/5mts02O1s1/0Fs2Y/bs4%)&s5<q?s60LKs6fpWs7H?cs8&krs82iis7$'Qs5X.8s4@;#
+s3^kms31Mcs2+fIs0Vg3s0)I's/5mls.B=[s-<VHs,?u5s+LE's*juqs*4Qas(q^Js'Yk2s&f;%
+s&8qqs%r_js%NGbs%!)Xs$H`Ns$-NGs#^6 at s#C$:s#'g4s"aU/s"OI+s"=7$s""+!r at .apr?qUl
+s!@[jq]l+bruq7^ru_+Zon)FZrID`aqZ)EOrrAhoJ,~>
+JcFm4rr at WMVuQ\qJcC<$dJq7`s/,gmqu?]!s0)I-s0D[2s0Vg7s0r$<s186Bs1JBFs1\NKs2"_,
+s%<;as%NGes%`Sis%r`,s(;:DrD`ess&T)"s&f;*s'G_4rF#Y6s'kq:s()(>s(;:DrFl4Fs(_LJ
+s(qXNs).jTs)A!Xs)S-\rH/'^s*"EdrHS?fs*FWjs*XcnrI4crs+(-#qh"d!nV$KAqh4Qps+(-'
+l%\r-s/#ans/Q+$s,[2Ps.K=arM'7cs/#ans/H%!s/l=)s0;U2s0hs;s1A<Es1eTNs2G#Ys2tAi
+s4%)!s4RG.s5O(@s6K^Rs7--]s7cQhs8/;as82ils7ZKas7$'Us6K^Ls6'FEs5a4>s4dS's3L_i
+s3(Gas2Y/Zs2=rSs1nZLs1SHFs1A<BrOMs<s0_m5s0;U-s/l=%s/Psqs/>sqs/,aks.oOerM'=c
+s.KCarLWhUq4-uEnXB9Ag&AhfqZ)EOrrAhoJ,~>
+JcFm4rr at WMVuQ\qJcC<$dJq+5qu>W(s"FC+rA"=-q_S7is)7pVs$$BGs$6TMs$H`Rs$crXs%*/^
+s%EAes%iYks&&eps&K)"s&]5&rE9)&s',M.rE]G0s'Pe:s(24Bs(D at FrFu:HrG2FLs)%^Ps)7pV
+rGhjXrH&!\s)n?brHJ9drH\EhrHnQlq0hl5m=,(]q0r3jpON3nrIY'%rIk3)qhG'*s,$]3s,6o9
+s,I&=s,d8Ds-3PLs-WhUs.01^s.TIes/Gaos/l=+s0Vg8q8`NVs31Mis4%)$s4mY4s6'FGs6K^Q
+s7--]s7cQiX8W(qs7cQcs7$'Us6BXKs6'@Cs5j4?s5X.=s5F"8s5!_0s4IA%s3gqns31Mbs2P)W
+s2+fOs1\NEs0hs6s0)I(s/Q*us/5mos.o[is.]Oes.B=_s.'+Xs-`nRs-E\MrKR>GrK at 2Cs,d8A
+s,R&;rJ^]5s,-c3s+pW/qhG''s+L9%mt0eTrID`aqZ)EOrrAhoJ,~>
+JcFm4rr at WMVuQ\qJcC<$dJq+5qu>W(nHA_+JHYcOo*bF!o*53rq$6d&r<`9,s!Rans!dsts"+1'
+s"j[5ru(hds""+#s"==)s"OI-s"j[4s#L*Cs$H`Ts%<;es&8r!s'5S3s(VLNs)J'\s*"Efs+:9+
+s,?uAs/5mts02O1s1/0Fs2Y/bs4%)&s5<q?s60LKs6fpWs7H?cs8&krs82iis7$'Qs5X.8s4@;#
+s3^kms31Mcs2+fIs0Vg3s0)I's/5mls.B=[s-<VHs,?u5s+LE's*juqs*4Qas(q^Js'Yk2s&f;%
+s&8qqs%r_js%NGbs%!)Xs$H`Ns$-NGs#^6 at s#C$:s#'g4s"aU/s"OI+s"=7$s""+!r at .apr?qUl
+s!@[jq]l+bruq7^ru_+Zon)FZrID`aqZ)EOrrAhoJ,~>
+JcFm4rr at WMVuQ\qJcC<$dJq7`s/,gmqu?]!s0)I-s0D[2s0Vg7s0r$<s186Bs1JBFs1\NKs2"_,
+s%<;as%NGes%`Sis%r`,s(;:DrD`ess&T)"s&f;*s'G_4rF#Y6s'kq:s()(>s(;:DrFl4Fs(_LJ
+s(qXNs).jTs)A!Xs)S-\rH/'^s*"EdrHS?fs*FWjs*XcnrI4crs+(-#qh"d!nV$KAqh4Qps+(-'
+l%\r-s/#ans/Q+$s,[2Ps.K=arM'7cs/#ans/H%!s/l=)s0;U2s0hs;s1A<Es1eTNs2G#Ys2tAi
+s4%)!s4RG.s5O(@s6K^Rs7--]s7cQhs8/;as82ils7ZKas7$'Us6K^Ls6'FEs5a4>s4dS's3L_i
+s3(Gas2Y/Zs2=rSs1nZLs1SHFs1A<BrOMs<s0_m5s0;U-s/l=%s/Psqs/>sqs/,aks.oOerM'=c
+s.KCarLWhUq4-uEnXB9Ag&AhfqZ)EOrrAhoJ,~>
+JcFm4rr at WMVuQ\qJcC<$dJq+5qu>W(s"FC+rA"=-q_S7is)7pVs$$BGs$6TMs$H`Rs$crXs%*/^
+s%EAes%iYks&&eps&K)"s&]5&rE9)&s',M.rE]G0s'Pe:s(24Bs(D at FrFu:HrG2FLs)%^Ps)7pV
+rGhjXrH&!\s)n?brHJ9drH\EhrHnQlq0hl5m=,(]q0r3jpON3nrIY'%rIk3)qhG'*s,$]3s,6o9
+s,I&=s,d8Ds-3PLs-WhUs.01^s.TIes/Gaos/l=+s0Vg8q8`NVs31Mis4%)$s4mY4s6'FGs6K^Q
+s7--]s7cQiX8W(qs7cQcs7$'Us6BXKs6'@Cs5j4?s5X.=s5F"8s5!_0s4IA%s3gqns31Mbs2P)W
+s2+fOs1\NEs0hs6s0)I(s/Q*us/5mos.o[is.]Oes.B=_s.'+Xs-`nRs-E\MrKR>GrK at 2Cs,d8A
+s,R&;rJ^]5s,-c3s+pW/qhG''s+L9%mt0eTrID`aqZ)EOrrAhoJ,~>
+JcFm4rr at WMU]:8mJcC<$ec3U;qu>Q&nHAe-JHYiQrrqp#mfrdsrrW3*o*G:$r<iQPs![mus"47'
+s"XO0s#0m:rttbTr at S%&r at n7+s"aU1s#9s>s$6TOs%!)^s%iYns&]5*s(D at Ls)A!Zs*"Ees*Ocp
+s+C?0s.o[os/uC-s0hs>s2"`Vs3L_ts5Ek<s69RMs6p!Ys7QEes8/qss8)cfs6]jLs5<q3s4%(r
+s2P)Rs1A<@s0hs6s0;U-s/l=#s/#ahs.'+Vs-*JCs,-i2s+C?#s*F]fs)A!Rs(24;s',M)s&K(t
+s&/kms%`Sfs%<;^s$m#Us$?ZLs#pBCs#L*<s#0g4s"j[0s"OI+s"47%s""+!r at .apr?qUls!@Uh
+s!.Idruq7^q]G\VpO_X\qgcliq#H!GrrAhoJ,~>
+JcFm4rr at WMU]:8mJcC<$ec3Ubqu?\us/uC+s0;U0s0Ma5s0hs;s1/0 at s1A<Es1\NJs2"`Ps%35_
+s%EAcs%WMgs%r_ms(;:Ds&8qsrDikus&]5&s&oA*s',M/s'Pe7rF5e:s()(>s(;4Bs(MFHrG)@J
+rG;LNrGMXRs)A!Xs)S-\rH/'^s*"EdrHS?fs*FWjs*XcnrI4crrIOp!rIaWnnI+`<s+0Ehs.fUi
+s/#ams/5mrs/Z1%s0)B^rLa+_rLs7crM0Chs/,gqs/Z1%s0)I-s0Vg7s1/0Bs1eTMs2=rXs2k;b
+s3L_ns4@;*s53k;s69RNs7--^s7lWjQ2Ua[s7lWes763Ys6TdNs69R at s4IA%s3q"qs3L_is31Mc
+s2k;]s2G#Us2"`Ms1\NGrO`*@s1/0>s0r$9s0Ma0s/uC&s/Q$srM]aos/,gmrM9=cs.]Oes.KCa
+qk!PQq4-uEo:#EAg&B1pq#H!GrrAhoJ,~>
+JcFm4rr at WMU]:8mJcC<$ec3U;qu>Q&s"OC+s"aI-s"saos)A!#s#pBGrBL<Js$QfTs$m#Zs%35`
+s%NGfs%iYls&/kqs&K)"s&]5&rE9/(s',M.rE]G0s'Pe6s'bq;s(24Cs(MFHs(_LJs(qXNs).dR
+s)@pVs)S-\rH/'^s*"?bs*4Kfs*FWjrI"Qlnbqj(s*FWmomcdfrIOj!rIt-'s+pW3qi(E3s,d8D
+s-3PLs-NbRs-s%Ys.97`s/>Ojs/uC-ouI*Ss3:Sls4IA1qre"Ds6TdSs763_s7lWkX8W(os7ZK`
+s6p!Ss6'@Bs5a.=rSmk9rS[_4s4mY.s4@;#s3^kls3(G`s2G#Ts1\NEs0hs6s0)I(s/Z1!s/>sq
+s/,gls.fUgs.TIcs.B=^s-s%Vs-WhPrK[DIrKI8Es,m>Cs,[2?s,I&;rJUW3rJCQ1rJ1?+rIt3'
+pOi!fl%/_^bQ%A<JcG`MU]5i~>
+JcFm4rr at WMU]:8mJcC<$ec3U;qu>Q&nHAe-JHYiQrrqp#mfrdsrrW3*o*G:$r<iQPs![mus"47'
+s"XO0s#0m:rttbTr at S%&r at n7+s"aU1s#9s>s$6TOs%!)^s%iYns&]5*s(D at Ls)A!Zs*"Ees*Ocp
+s+C?0s.o[os/uC-s0hs>s2"`Vs3L_ts5Ek<s69RMs6p!Ys7QEes8/qss8)cfs6]jLs5<q3s4%(r
+s2P)Rs1A<@s0hs6s0;U-s/l=#s/#ahs.'+Vs-*JCs,-i2s+C?#s*F]fs)A!Rs(24;s',M)s&K(t
+s&/kms%`Sfs%<;^s$m#Us$?ZLs#pBCs#L*<s#0g4s"j[0s"OI+s"47%s""+!r at .apr?qUls!@Uh
+s!.Idruq7^q]G\VpO_X\qgcliq#H!GrrAhoJ,~>
+JcFm4rr at WMU]:8mJcC<$ec3Ubqu?\us/uC+s0;U0s0Ma5s0hs;s1/0 at s1A<Es1\NJs2"`Ps%35_
+s%EAcs%WMgs%r_ms(;:Ds&8qsrDikus&]5&s&oA*s',M/s'Pe7rF5e:s()(>s(;4Bs(MFHrG)@J
+rG;LNrGMXRs)A!Xs)S-\rH/'^s*"EdrHS?fs*FWjs*XcnrI4crrIOp!rIaWnnI+`<s+0Ehs.fUi
+s/#ams/5mrs/Z1%s0)B^rLa+_rLs7crM0Chs/,gqs/Z1%s0)I-s0Vg7s1/0Bs1eTMs2=rXs2k;b
+s3L_ns4@;*s53k;s69RNs7--^s7lWjQ2Ua[s7lWes763Ys6TdNs69R at s4IA%s3q"qs3L_is31Mc
+s2k;]s2G#Us2"`Ms1\NGrO`*@s1/0>s0r$9s0Ma0s/uC&s/Q$srM]aos/,gmrM9=cs.]Oes.KCa
+qk!PQq4-uEo:#EAg&B1pq#H!GrrAhoJ,~>
+JcFm4rr at WMU]:8mJcC<$ec3U;qu>Q&s"OC+s"aI-s"saos)A!#s#pBGrBL<Js$QfTs$m#Zs%35`
+s%NGfs%iYls&/kqs&K)"s&]5&rE9/(s',M.rE]G0s'Pe6s'bq;s(24Cs(MFHs(_LJs(qXNs).dR
+s)@pVs)S-\rH/'^s*"?bs*4Kfs*FWjrI"Qlnbqj(s*FWmomcdfrIOj!rIt-'s+pW3qi(E3s,d8D
+s-3PLs-NbRs-s%Ys.97`s/>Ojs/uC-ouI*Ss3:Sls4IA1qre"Ds6TdSs763_s7lWkX8W(os7ZK`
+s6p!Ss6'@Bs5a.=rSmk9rS[_4s4mY.s4@;#s3^kls3(G`s2G#Ts1\NEs0hs6s0)I(s/Z1!s/>sq
+s/,gls.fUgs.TIcs.B=^s-s%Vs-WhPrK[DIrKI8Es,m>Cs,[2?s,I&;rJUW3rJCQ1rJ1?+rIt3'
+pOi!fl%/_^bQ%A<JcG`MU]5i~>
+JcFm4rr at WMTE"iiJcC<$g&K$?rVtc(nHA_+JHYuUr<;j%r=&W.o`k9urrVj!q[*3.s!dsus"47(
+s"aU2s#0m9s#C#prttbRruD%js"==)s"OI-s"aU2s#L*Cs$H`Ss%35bs&&ers'#G5s(q^Rs)S-]
+s*+Khs*Xirs+:9Ds/#aqs0)I0s1/0Ds2+f]s4RG3pZMSAs6]jUs7?9as7u]mYPnM!s7cQ`s6K^C
+s3^khs2b5Xs1eTHs1/0<s0Ma1s/uC's/Q*ss.o[fs-s%Ss,m>=s+LE%s*Ochs)S-Vs(D@@s'G_/
+s&]5#s&8qqs%r_js%NGbs%*/Zs$ZlRs$6TJs#^6 at s#9s9s#'g4s"aU/s"FC)s"47%s""+!s!dmp
+s!Rals!@[jr?M=dr?;%\q]G\Von)L\qgd/qq#H!Gq>^HpU]5i~>
+JcFm4rr at WMTE"iiJcC<$g&K$frVuo!s/l=(s02O.s0Ma4s0hs:s1&*?s1A<Ds1SHHs1nZNs%*/^
+s%EAcs%WMgs%iYks(24Bs(D:0s&K)"s&]5&rE9/(s',M.s'>Y3s'bq:rFGq>rFZ(Bs(M at Fs(_LJ
+s(qXNs).dRs)A!Xs)S-\rH/'^s*"EdrHS?fs*FWjs*Xcns*juts+('!rIY!#o7ZcEr=&4MqhG-%
+mtUdrs/,gos/H$us/c7&qlfsYrK$uNrLj+_s.fUis/#ans/>sts/l=)s0;U2s0r$>s1SHJs24lU
+s2b5`s3:Sjs3q#"s4dS4s5j:Gs6p![s7lWlPPtOZs7u]hs7H?Zs5j:>s5*e2s4RG(s4..ts3Uel
+s3:Ses2tA_s2P)Ws24lQs1eTIs1J<Bs186 at s1&*:s0Ma0s/l=%s/Q$ss/>morMBOiqkO1crLs7a
+rL`tYpRV,MnXK9AopOM4e,T4DJcGQGrrAhoJ,~>
+JcFm4rr at WMTE"iiJcC<$g&K$?rVtc(s"O=)q_S7/s)@pVs#U0Cs$$HIs$6TNs$ZlVs%!)\s%<;a
+s%WMgs%iYls&8qss&T/$rE0)&s'#A*s'5S0s'GY2s'Yk8s'l"<s(24Bs(MFIrG2FLrGDRPs)7pV
+rGhjXrH&!\rH8-`rHJ9drH\EhrHnKjs*aG9rI+-`s*FWmomcjhqgnd!rIk-'qhG-+s,-i7qi(K5
+s,R,As-<VNs-WhTs-s%Zs.97`s/5=en]1[Vs4RG3pZMSAs6]jUs7?9as7u]mXo8:ss7lWds6p!Q
+rTF4Bs5X.=rSde7rSRS1s5!_0s4RG&s3gqns2tA\s2"`Ks186=s0Ma/s/c7$s/Q*us/>sqs/,gm
+s.o[is.]Oes.B=_s.'+Xs-`nRs-E\Ms-3PIs-!>Cs,[2?s,I&;rJUW3rJCK/s+gQ-rIt-%pOhpd
+l[eq`e,T4DJcGQGrrAhoJ,~>
+JcFm4rr at WMTE"iiJcC<$g&K$?rVtc(nHA_+JHYuUr<;j%r=&W.o`k9urrVj!q[*3.s!dsus"47(
+s"aU2s#0m9s#C#prttbRruD%js"==)s"OI-s"aU2s#L*Cs$H`Ss%35bs&&ers'#G5s(q^Rs)S-]
+s*+Khs*Xirs+:9Ds/#aqs0)I0s1/0Ds2+f]s4RG3pZMSAs6]jUs7?9as7u]mYPnM!s7cQ`s6K^C
+s3^khs2b5Xs1eTHs1/0<s0Ma1s/uC's/Q*ss.o[fs-s%Ss,m>=s+LE%s*Ochs)S-Vs(D@@s'G_/
+s&]5#s&8qqs%r_js%NGbs%*/Zs$ZlRs$6TJs#^6 at s#9s9s#'g4s"aU/s"FC)s"47%s""+!s!dmp
+s!Rals!@[jr?M=dr?;%\q]G\Von)L\qgd/qq#H!Gq>^HpU]5i~>
+JcFm4rr at WMTE"iiJcC<$g&K$frVuo!s/l=(s02O.s0Ma4s0hs:s1&*?s1A<Ds1SHHs1nZNs%*/^
+s%EAcs%WMgs%iYks(24Bs(D:0s&K)"s&]5&rE9/(s',M.s'>Y3s'bq:rFGq>rFZ(Bs(M at Fs(_LJ
+s(qXNs).dRs)A!Xs)S-\rH/'^s*"EdrHS?fs*FWjs*Xcns*juts+('!rIY!#o7ZcEr=&4MqhG-%
+mtUdrs/,gos/H$us/c7&qlfsYrK$uNrLj+_s.fUis/#ans/>sts/l=)s0;U2s0r$>s1SHJs24lU
+s2b5`s3:Sjs3q#"s4dS4s5j:Gs6p![s7lWlPPtOZs7u]hs7H?Zs5j:>s5*e2s4RG(s4..ts3Uel
+s3:Ses2tA_s2P)Ws24lQs1eTIs1J<Bs186 at s1&*:s0Ma0s/l=%s/Q$ss/>morMBOiqkO1crLs7a
+rL`tYpRV,MnXK9AopOM4e,T4DJcGQGrrAhoJ,~>
+JcFm4rr at WMTE"iiJcC<$g&K$?rVtc(s"O=)q_S7/s)@pVs#U0Cs$$HIs$6TNs$ZlVs%!)\s%<;a
+s%WMgs%iYls&8qss&T/$rE0)&s'#A*s'5S0s'GY2s'Yk8s'l"<s(24Bs(MFIrG2FLrGDRPs)7pV
+rGhjXrH&!\rH8-`rHJ9drH\EhrHnKjs*aG9rI+-`s*FWmomcjhqgnd!rIk-'qhG-+s,-i7qi(K5
+s,R,As-<VNs-WhTs-s%Zs.97`s/5=en]1[Vs4RG3pZMSAs6]jUs7?9as7u]mXo8:ss7lWds6p!Q
+rTF4Bs5X.=rSde7rSRS1s5!_0s4RG&s3gqns2tA\s2"`Ks186=s0Ma/s/c7$s/Q*us/>sqs/,gm
+s.o[is.]Oes.B=_s.'+Xs-`nRs-E\Ms-3PIs-!>Cs,[2?s,I&;rJUW3rJCK/s+gQ-rIt-%pOhpd
+l[eq`e,T4DJcGQGrrAhoJ,~>
+JcFm4rr at WMS,`?cJcC<$huC`Gqu>Q&o*"q-JHYuUr<;d#rs\i0q$-Ksrr_p"rsAQ0s"+1%s"FC,
+s"aU2rAOZjrtbVNrttbRru:ngs"FC+s"XO0s#0m:s#g<Is$ZlXs%EAgs&K)&s'Yk at s)J'_s*ap"
+s,$c:s-<VRs.TIjs0)I2s1SHMs2b5bs3q#(s5F"<s5j. at s60LKs6fpWs7H?cs8&krs8)cbs5s@:
+s3gqls2k;\s2"`Ks1/0;s0Ma0s/uC's/Q*ss/#ais.01Rs,$c0s+(,ss*+Kas)A!Ss(D@@s'G_/
+s&]5#s&B"rs%r_ks%NGbs%*/[s$crSs$6TJs#^6 at s#9s8s"sa3s"aU.s"FC)s"+1#s!n$ts![gn
+r?hOjr?V=ds!%=`r?1nXq]>K`l%/_^g].-NJcG9?rrAhoJ,~>
+JcFm4rr at WMS,`?cJcC<$huC`nqu?\ts/l=)s02O/s0Ma5s0hs;s1/0 at s1A<Ds1SHIs1nZOs%*/^
+s%EAcs%WMgs%iZ+s(;:Ds&8qss&K)"rE'#$s&oA*s',G,s'>Y2s'Pe7s'l"=s(24Bs(D:Ds(VFH
+s(hRLs)%^Ps)7jTs)J'Zs)\-\s)n?brHJ9ds*=Qhs*OcnrI+]ps*t'!s+1-#qh+Qpo*bR,onE'n
+s+0itq1o!Ls/Q+"s/c7'qlg$Zqi:W9rLa+_s.TIes.fUjs/,gos/>sts/c7's0;U3s1&*@s1\NL
+s24lVs2k;bs3L_ms4%)#s4dS3s5j:Fs6p!Zs7lWlOo>=Vs7QE^s6TdKs5X.;s5!_0s4RG's3q"q
+s3L_js31Mds2k;]s2G#Vs2+fOs1eTIs1JBDs186 at s0r$9s0D[.s/c1!rMfgqs/5mos/#[irM0=c
+rLs7aqk*hYpRV,MnXK9Ao9n;2g].-NJcG9?rrAhoJ,~>
+JcFm4rr at WMS,`?cJcC<$huC`Gqu>Q&rA"7+rA4I1s)A!Xs)S,us#L*As$$HIs$?ZPs$crWs%*/]
+rCd/bs%iYks&&eps&K#!s&f;(s'#A*s'5M.s'G_4s'Yk8s'kq:s(). at s(D at Gs(_RLrGDRPrGV^T
+rGhjXrH&!\rH8-`rHJ9ds*=Qhqg8?js8;Keq0hd^s*FWmomcjhrIOitqh5!'rJ(?-s+pW3qi(Q7
+s,[2As-!DJs-NbRs-itXs.01_s.]Oms/uC,s0Vg9s1A<Fs2"`Rs2Y/^s31Mhs3^_ls4./*s5F"<
+s5j. at s60LKs6fpWs7H?cs8&eps7lWbs6]jMrTF4Cs5a4>s5<k5s5*_1rS7G-s4[M)s3L_cs24lP
+s1SHCs0hs7s0D[.s/l=&s/Z1"s/H$ss/5mos/#ajs.]Oes.KCas.01Zs-`nRs-<VKs-*JGrK7,A
+s,[2?rJ^c7s,-]1rJ:K/rJ(3'q1SKpnUg"VqgdH$qZ)3Inc/UhU]5i~>
+JcFm4rr at WMS,`?cJcC<$huC`Gqu>Q&o*"q-JHYuUr<;d#rs\i0q$-Ksrr_p"rsAQ0s"+1%s"FC,
+s"aU2rAOZjrtbVNrttbRru:ngs"FC+s"XO0s#0m:s#g<Is$ZlXs%EAgs&K)&s'Yk at s)J'_s*ap"
+s,$c:s-<VRs.TIjs0)I2s1SHMs2b5bs3q#(s5F"<s5j. at s60LKs6fpWs7H?cs8&krs8)cbs5s@:
+s3gqls2k;\s2"`Ks1/0;s0Ma0s/uC's/Q*ss/#ais.01Rs,$c0s+(,ss*+Kas)A!Ss(D@@s'G_/
+s&]5#s&B"rs%r_ks%NGbs%*/[s$crSs$6TJs#^6 at s#9s8s"sa3s"aU.s"FC)s"+1#s!n$ts![gn
+r?hOjr?V=ds!%=`r?1nXq]>K`l%/_^g].-NJcG9?rrAhoJ,~>
+JcFm4rr at WMS,`?cJcC<$huC`nqu?\ts/l=)s02O/s0Ma5s0hs;s1/0 at s1A<Ds1SHIs1nZOs%*/^
+s%EAcs%WMgs%iZ+s(;:Ds&8qss&K)"rE'#$s&oA*s',G,s'>Y2s'Pe7s'l"=s(24Bs(D:Ds(VFH
+s(hRLs)%^Ps)7jTs)J'Zs)\-\s)n?brHJ9ds*=Qhs*OcnrI+]ps*t'!s+1-#qh+Qpo*bR,onE'n
+s+0itq1o!Ls/Q+"s/c7'qlg$Zqi:W9rLa+_s.TIes.fUjs/,gos/>sts/c7's0;U3s1&*@s1\NL
+s24lVs2k;bs3L_ms4%)#s4dS3s5j:Fs6p!Zs7lWlOo>=Vs7QE^s6TdKs5X.;s5!_0s4RG's3q"q
+s3L_js31Mds2k;]s2G#Vs2+fOs1eTIs1JBDs186 at s0r$9s0D[.s/c1!rMfgqs/5mos/#[irM0=c
+rLs7aqk*hYpRV,MnXK9Ao9n;2g].-NJcG9?rrAhoJ,~>
+JcFm4rr at WMS,`?cJcC<$huC`Gqu>Q&rA"7+rA4I1s)A!Xs)S,us#L*As$$HIs$?ZPs$crWs%*/]
+rCd/bs%iYks&&eps&K#!s&f;(s'#A*s'5M.s'G_4s'Yk8s'kq:s(). at s(D at Gs(_RLrGDRPrGV^T
+rGhjXrH&!\rH8-`rHJ9ds*=Qhqg8?js8;Keq0hd^s*FWmomcjhrIOitqh5!'rJ(?-s+pW3qi(Q7
+s,[2As-!DJs-NbRs-itXs.01_s.]Oms/uC,s0Vg9s1A<Fs2"`Rs2Y/^s31Mhs3^_ls4./*s5F"<
+s5j. at s60LKs6fpWs7H?cs8&eps7lWbs6]jMrTF4Cs5a4>s5<k5s5*_1rS7G-s4[M)s3L_cs24lP
+s1SHCs0hs7s0D[.s/l=&s/Z1"s/H$ss/5mos/#ajs.]Oes.KCas.01Zs-`nRs-<VKs-*JGrK7,A
+s,[2?rJ^c7s,-]1rJ:K/rJ(3'q1SKpnUg"VqgdH$qZ)3Inc/UhU]5i~>
+JcFm4rr at WMQ2gd_JcC<$j8[5Mqu>Q&nHAe-K*:oPoaCd.rrr-$pBUX&rr`3*q$Hp*s"==)s"XO/
+q_\=1rtGDHrtbVNrttbRru:tXs"47's"OI.s#'g8s#L*@s$$HMs$m#]s%r_qs',M2s(;:Ls*"Ei
+s+:9,s,R,Ds-it[s/#ass0Ma;s2+fXs3L_qs4dS0s53k8s5a4BrTF4Fs6TdSs763_s7lWkZ2O_#
+s7lWas6'F<s4%(ps3(G`s2=rQs1A<>s0Ma0s/l=%s/H$rs.97Zs-*J at s+^Q)s*aons*+Kbs)A!S
+s(D@@s'>Y-s&]5#s&B"rs&&els%NGbs%*/[s$crSs$-NGs#U0>s#0m7s"j[1s"XO-s"FC(s"+1#
+s!n$ts![mpr?hIhr?V=dr?D7br?1tZpE''\mt(.^j8\oTJcG'9rrAhoJ,~>
+JcFm4rr at WMQ2gd_JcC<$j8[5tqu?\ts/l=(s0)I-s0D[3s0_m9s1&*>s186Bs1J<Es1eS's%!)\
+s%EAds%`Sis%r`,s(;:0s&B"urDrr"s&f;(rEB5*s'5S0rEfM2s'Yk8s'u(>s(;:Ds(M at Fs(_LJ
+s(qXNs).dRs)@pVs)S-\rH/'^s*"?bs*4Qhs*FWjs*Xips*juts+('!rIXitpOr2Irs\^WmtUjn
+o8!:#s/Z1$s/l=(q60aVqi:Q7s.B=as.TIfs.o[ks/,gos/H$us/c7(s0D[4s1&*@s1eTMs2G#Y
+s2tAds3L_ns4./$s4[M1s5a4Es6]jWs7ZKgPPtOZs82ils7H?[s6BXHs5O(9s5!_/s4@;$s3q"q
+s3L_is31Mcs2b5\s2G#Us2"`Ms1SHEs186 at s1&*<s0Vg2s/uC&s/Q$srM]aos/,gms.oUgrM'1_
+rLj+]qk!PQq4.,IqjQo?g&C%3q#H!Gli6tbU]5i~>
+JcFm4rr at WMQ2gd_JcC<$j8[5Mqu>Q&s"OI-s"aC+s"sars)\3!s#L*@s#pBHs$6TNs$ZlVs%!#Z
+s%EAcs%WGfs&&eqs&K)#s&f5&s'#G,s'5M.s'G_4s'Ye6s'l"<s()(>s(;:Ds(VLJs(hXOs).jT
+rG_dVrGqpZrH/'^rHA3brHS?frHeEhrI"YCp&4Q3o7$^crI4?frIFitqh"d!s+LE+rJ(?-s+p]3
+s,6i7s,I&=s,[2As,m>Fs-E\Ps-`nVs.01_s.]Ois/Z1's0D[4s1&*As1eTNs2G#Zs3(Ges3L_n
+s4%)"s4RG,s5!_4s5F"=s5s:Cs69RMs6p!Ys7QEes80"us8)chs7$'Sq<.e>s5X.<s53e2s4mS-
+s4[M%s3Uehs2G#Ts1nZKs1JBCs1&*:s0Ma1s/uC's/Z1"s/H$ss/5mos/#aks.fUgs.TIbs.01Y
+s-WhPs-3PIs-!DErK.&?s,R,=s,?u9s,-c3rJ:?+qhG!%qh4]rnUg4\oml*&q#H!Gli6tbU]5i~>
+JcFm4rr at WMQ2gd_JcC<$j8[5Mqu>Q&nHAe-K*:oPoaCd.rrr-$pBUX&rr`3*q$Hp*s"==)s"XO/
+q_\=1rtGDHrtbVNrttbRru:tXs"47's"OI.s#'g8s#L*@s$$HMs$m#]s%r_qs',M2s(;:Ls*"Ei
+s+:9,s,R,Ds-it[s/#ass0Ma;s2+fXs3L_qs4dS0s53k8s5a4BrTF4Fs6TdSs763_s7lWkZ2O_#
+s7lWas6'F<s4%(ps3(G`s2=rQs1A<>s0Ma0s/l=%s/H$rs.97Zs-*J at s+^Q)s*aons*+Kbs)A!S
+s(D@@s'>Y-s&]5#s&B"rs&&els%NGbs%*/[s$crSs$-NGs#U0>s#0m7s"j[1s"XO-s"FC(s"+1#
+s!n$ts![mpr?hIhr?V=dr?D7br?1tZpE''\mt(.^j8\oTJcG'9rrAhoJ,~>
+JcFm4rr at WMQ2gd_JcC<$j8[5tqu?\ts/l=(s0)I-s0D[3s0_m9s1&*>s186Bs1J<Es1eS's%!)\
+s%EAds%`Sis%r`,s(;:0s&B"urDrr"s&f;(rEB5*s'5S0rEfM2s'Yk8s'u(>s(;:Ds(M at Fs(_LJ
+s(qXNs).dRs)@pVs)S-\rH/'^s*"?bs*4Qhs*FWjs*Xips*juts+('!rIXitpOr2Irs\^WmtUjn
+o8!:#s/Z1$s/l=(q60aVqi:Q7s.B=as.TIfs.o[ks/,gos/H$us/c7(s0D[4s1&*@s1eTMs2G#Y
+s2tAds3L_ns4./$s4[M1s5a4Es6]jWs7ZKgPPtOZs82ils7H?[s6BXHs5O(9s5!_/s4@;$s3q"q
+s3L_is31Mcs2b5\s2G#Us2"`Ms1SHEs186 at s1&*<s0Vg2s/uC&s/Q$srM]aos/,gms.oUgrM'1_
+rLj+]qk!PQq4.,IqjQo?g&C%3q#H!Gli6tbU]5i~>
+JcFm4rr at WMQ2gd_JcC<$j8[5Mqu>Q&s"OI-s"aC+s"sars)\3!s#L*@s#pBHs$6TNs$ZlVs%!#Z
+s%EAcs%WGfs&&eqs&K)#s&f5&s'#G,s'5M.s'G_4s'Ye6s'l"<s()(>s(;:Ds(VLJs(hXOs).jT
+rG_dVrGqpZrH/'^rHA3brHS?frHeEhrI"YCp&4Q3o7$^crI4?frIFitqh"d!s+LE+rJ(?-s+p]3
+s,6i7s,I&=s,[2As,m>Fs-E\Ps-`nVs.01_s.]Ois/Z1's0D[4s1&*As1eTNs2G#Zs3(Ges3L_n
+s4%)"s4RG,s5!_4s5F"=s5s:Cs69RMs6p!Ys7QEes80"us8)chs7$'Sq<.e>s5X.<s53e2s4mS-
+s4[M%s3Uehs2G#Ts1nZKs1JBCs1&*:s0Ma1s/uC's/Z1"s/H$ss/5mos/#aks.fUgs.TIbs.01Y
+s-WhPs-3PIs-!DErK.&?s,R,=s,?u9s,-c3rJ:?+qhG!%qh4]rnUg4\oml*&q#H!Gli6tbU]5i~>
+JcFm4rr at WMOoP@[JcC<$kPrYQqu>Q&o*"q-K*:uRq$['.o`k'or<WE+q$Hp*rsSi\s"XC,rA=O3
+r=],ErtYJKru(hTruD%js"==*s"j[4s#C$>s#g<Gs$?ZQs%<;es&K)'s'bq>s(q^Ws*Ocrs+gW6
+s-!DLs.97ds/H%'s1&*Ds2=r[s3^kus4dS0s53k7s5O(?rTF4Gs6]jUs7?9as7u]m\,H:&s7u]d
+s6fpLs5*e-s3gqms2tA]s2+fLs1/0;s02O*s/Z0gs-<VIs,d8?s,-i2s+:9"s*Ocjs)n?]s)%dL
+s'l"6s&oA's&T/!s&8qps%iYgs%<;]s$crSs$6TIs#U0>s#0m7s"j[1s"XO-s"FC)s"+1#s!n$t
+s![mps!IOfr?VCfr?D7bq&oPVpE'3`pOVX\li6b\JcFd1rrAhoJ,~>
+JcFm4rr at WMOoP@[JcC<$kPrZ#qu?\ts/l=(s0)I-s0Ma4s0hs:s1&*>s186Bs1JBFs1\NJs$m#Y
+s%*)[s%WMhs(24Bs(D:0s&K)"s&]/$s&oA*s',G,s'>Y2s'Pe6rF,_8s'u(?s(;:Ds(VFHs(hRL
+s)%^Ps)7jTs)J!Xs)\3^rH8-`s*+KfrH\EhrHnQlrI+]ps*t'!s+1-#q1JKrq$['.qh=?js+:'%
+q2#'Qs/u$urJ^]7qi:W9rLj1as.]Ogs/#ams/5mrs/Q+"s0)I.s0_m:s1JBHs2+fTs2b5`s3CYl
+s3q#!s4IA+s5*e9s60LLs6p!Zs7cQiRJm*]s8)cks7cQds763Xs69REs5F"7s4dS,s4@;#s3gqo
+s3CYhs3(Gas2Y/Ys2+fOs1\NGs1A<Bs1/0>s0hs6s02O*s/Z1"rMfgqs/5morMBOis.fOerLs+]
+q4IVWq47DQopbiIkF(*(li6b\JcFd1rrAhoJ,~>
+JcFm4rr at WMOoP@[JcC<$kPrYQqu>Q&s"XO/q(r%-s)J!Zs#C$>s#g<Fs$6TNs$QfTs%!)[rCQr\
+rD!;es%iYls&B#!s&f;(s'#A*s'5S0s'GY2s'Ye6s'l"<s(). at s(;4Bs(MFHs(hXNs)%dSs)@pV
+s)S'Zs)e3^s*"?bs*4KfrHeEhs*XeCp\jW1omZperI4EhrIFcrrIY'%s+:9's+LE+rJ(?-s+p]3
+s,-i7s,?u<s,[2As,m>Es-*JIs-E\Ps-s%Zs.KCds/#ans/c7)s0Ma6s1/0Cs1nZPs2Y/]s3(Gf
+s3Ueos4./$s4[M-s5!_4s5<q:s5j4Bs6BXOs7$'[s7ZKgs895%s8;ols7H?[s69 at Bs5s@Bs5O(:
+s5*e2s4dS-s2tA_qo8ZTs24lQs1eTIs1A<As0hs7s0D[/s/l=&s/Z1"s/H$ss/5mos.o[hs.KCa
+s.01Zs-`nRs-<VJs-!DEs,d2?s,R,=s,?u9rJLW3rJ:9)qhG!%q1SKpon)phl[\=$q#H!Gj8],Z
+U]5i~>
+JcFm4rr at WMOoP@[JcC<$kPrYQqu>Q&o*"q-K*:uRq$['.o`k'or<WE+q$Hp*rsSi\s"XC,rA=O3
+r=],ErtYJKru(hTruD%js"==*s"j[4s#C$>s#g<Gs$?ZQs%<;es&K)'s'bq>s(q^Ws*Ocrs+gW6
+s-!DLs.97ds/H%'s1&*Ds2=r[s3^kus4dS0s53k7s5O(?rTF4Gs6]jUs7?9as7u]m\,H:&s7u]d
+s6fpLs5*e-s3gqms2tA]s2+fLs1/0;s02O*s/Z0gs-<VIs,d8?s,-i2s+:9"s*Ocjs)n?]s)%dL
+s'l"6s&oA's&T/!s&8qps%iYgs%<;]s$crSs$6TIs#U0>s#0m7s"j[1s"XO-s"FC)s"+1#s!n$t
+s![mps!IOfr?VCfr?D7bq&oPVpE'3`pOVX\li6b\JcFd1rrAhoJ,~>
+JcFm4rr at WMOoP@[JcC<$kPrZ#qu?\ts/l=(s0)I-s0Ma4s0hs:s1&*>s186Bs1JBFs1\NJs$m#Y
+s%*)[s%WMhs(24Bs(D:0s&K)"s&]/$s&oA*s',G,s'>Y2s'Pe6rF,_8s'u(?s(;:Ds(VFHs(hRL
+s)%^Ps)7jTs)J!Xs)\3^rH8-`s*+KfrH\EhrHnQlrI+]ps*t'!s+1-#q1JKrq$['.qh=?js+:'%
+q2#'Qs/u$urJ^]7qi:W9rLj1as.]Ogs/#ams/5mrs/Q+"s0)I.s0_m:s1JBHs2+fTs2b5`s3CYl
+s3q#!s4IA+s5*e9s60LLs6p!Zs7cQiRJm*]s8)cks7cQds763Xs69REs5F"7s4dS,s4@;#s3gqo
+s3CYhs3(Gas2Y/Ys2+fOs1\NGs1A<Bs1/0>s0hs6s02O*s/Z1"rMfgqs/5morMBOis.fOerLs+]
+q4IVWq47DQopbiIkF(*(li6b\JcFd1rrAhoJ,~>
+JcFm4rr at WMOoP@[JcC<$kPrYQqu>Q&s"XO/q(r%-s)J!Zs#C$>s#g<Fs$6TNs$QfTs%!)[rCQr\
+rD!;es%iYls&B#!s&f;(s'#A*s'5S0s'GY2s'Ye6s'l"<s(). at s(;4Bs(MFHs(hXNs)%dSs)@pV
+s)S'Zs)e3^s*"?bs*4KfrHeEhs*XeCp\jW1omZperI4EhrIFcrrIY'%s+:9's+LE+rJ(?-s+p]3
+s,-i7s,?u<s,[2As,m>Es-*JIs-E\Ps-s%Zs.KCds/#ans/c7)s0Ma6s1/0Cs1nZPs2Y/]s3(Gf
+s3Ueos4./$s4[M-s5!_4s5<q:s5j4Bs6BXOs7$'[s7ZKgs895%s8;ols7H?[s69 at Bs5s@Bs5O(:
+s5*e2s4dS-s2tA_qo8ZTs24lQs1eTIs1A<As0hs7s0D[/s/l=&s/Z1"s/H$ss/5mos.o[hs.KCa
+s.01Zs-`nRs-<VJs-!DEs,d2?s,R,=s,?u9rJLW3rJ:9)qhG!%q1SKpon)phl[\=$q#H!Gj8],Z
+U]5i~>
+JcFm4rr at WMNW8qWJcC<$li5.Wqu>Q&nHAe-JHYiRq[<90rse],o`t9urri9,q$R-0s"XI-s"j[1
+s"jU1r=SuArtYPLrtk\Pru1nXruV1ns"OI.s"sa7s#L*As$-NLs$crYs%`Sns'#G1s(24Gs)e9b
+s*Xius,$c:s-<VSs.]Oms/uC/s186Gs2P)_s3gr"s4mY2s53k8s5X.?s5s at Gs6TdSs763_s7lWk
+\c)R)s7u]is7H?[s6BXEs4dS+s474ts31Mbs2=rQs1JB at s02O#s-NbNs-*JEs,I&9s+p].s+:9#
+s*Xils)n?^s)%dLs'u(7s&oA(s&T/"s&/kns%WMcs%!)Xs$H`Os$$HFs#L*;s#'g4s"aU/s"OI+
+s"=='s"+1#s!dsrs!Rgnq'Gtbs!.Idq]YhZq]G\Vr>kigq17XXp&FgfJcFL)rrAhoJ,~>
+JcFm4rr at WMNW8qWJcC<$li5/)qu?\ss/c7&s/u7&s0;U3s0hm8s1/0As1JBFs1\M%s$m#Ys%*/]
+s%<5_s'l"<s&&eps&B#!rE'#$s&oA*rEK;,s'>Y2rEoS4s'bk8s'u(>s(24Bs(MFHrG2FLrGDRP
+rGV^TrGhjXrH&!\s)n9`s*+Kfs*=Qhs*O]lrI+Wos+('!s+:'!qh4hSq[EK6rIs]pq1o!%rJ1-'
+nZVbIrJg]7s,d8CrLs7cs.fUjs/,gos/H$us/c7&s0;U2s0r$?s1\NLrQ"r[s31Mhs3gqts4IA+
+s53k9s5j:Fs6]jUs7H?cs8/Acs8)cks7lQes7ZKas7--Xs6TdKs5X.:s5!_0s4IA&s3q"qs3L_i
+s3(Gas2P)Ws2"`Ms1SHFs1A<Bs1/0>s0_m4s0)I(rMogqrMT[ms/#akrM0CerLs1_oq22SqjmVS
+pRD&Kj-eU"p&FgfJcFL)rrAhoJ,~>
+JcFm4rr at WMNW8qWJcC<$li5.Wqu>Q&s"OC,rA4I1s"j[3s)\3_s#9m;s#pBHs$?ZPrC-`Us%!)[
+s%35`s%NGes%`Mgs%r_ms&8qts&]5's'#G,s'5S0s'G_4rF#Y6s'kq:s(). at s(;4Bs(MFHs(_RL
+s(q^Ps)7pVs)J'ZrH&!\rH8-`rHJ9drH\EhrHnQls82]kqu,u3omZpes*jWjqgeQpq1AX!s+LE+
+rJ(?-s+p]3s,-i7s,?u;s,R, at s,m>Es-*JIs-E\Ps-s%Zs.KCds/#ans/Q+$s0;U2s0r$>s1\NL
+s2=rXs2tAcs3CYls3q#!s4IA*s4mY2s53k8s5X.?s5s at Gs6TdSs763_s7lWkZi0q#s7QE^s6]LB
+s5j:@s5F"7s4[M$s2OrTqo&NPs2+fOs1\NGs186?s0_m5s0;U,s/c7$s/Q*us/>sps.o[hs.KCa
+s.01[s-itTs-E\Ls-*JFs,d2?s,R&;s,?u9s,-i5rJ:-%qhG!%qh4j!q1AWtrIXirjad%(q#H!G
+g].9RU]5i~>
+JcFm4rr at WMNW8qWJcC<$li5.Wqu>Q&nHAe-JHYiRq[<90rse],o`t9urri9,q$R-0s"XI-s"j[1
+s"jU1r=SuArtYPLrtk\Pru1nXruV1ns"OI.s"sa7s#L*As$-NLs$crYs%`Sns'#G1s(24Gs)e9b
+s*Xius,$c:s-<VSs.]Oms/uC/s186Gs2P)_s3gr"s4mY2s53k8s5X.?s5s at Gs6TdSs763_s7lWk
+\c)R)s7u]is7H?[s6BXEs4dS+s474ts31Mbs2=rQs1JB at s02O#s-NbNs-*JEs,I&9s+p].s+:9#
+s*Xils)n?^s)%dLs'u(7s&oA(s&T/"s&/kns%WMcs%!)Xs$H`Os$$HFs#L*;s#'g4s"aU/s"OI+
+s"=='s"+1#s!dsrs!Rgnq'Gtbs!.Idq]YhZq]G\Vr>kigq17XXp&FgfJcFL)rrAhoJ,~>
+JcFm4rr at WMNW8qWJcC<$li5/)qu?\ss/c7&s/u7&s0;U3s0hm8s1/0As1JBFs1\M%s$m#Ys%*/]
+s%<5_s'l"<s&&eps&B#!rE'#$s&oA*rEK;,s'>Y2rEoS4s'bk8s'u(>s(24Bs(MFHrG2FLrGDRP
+rGV^TrGhjXrH&!\s)n9`s*+Kfs*=Qhs*O]lrI+Wos+('!s+:'!qh4hSq[EK6rIs]pq1o!%rJ1-'
+nZVbIrJg]7s,d8CrLs7cs.fUjs/,gos/H$us/c7&s0;U2s0r$?s1\NLrQ"r[s31Mhs3gqts4IA+
+s53k9s5j:Fs6]jUs7H?cs8/Acs8)cks7lQes7ZKas7--Xs6TdKs5X.:s5!_0s4IA&s3q"qs3L_i
+s3(Gas2P)Ws2"`Ms1SHFs1A<Bs1/0>s0_m4s0)I(rMogqrMT[ms/#akrM0CerLs1_oq22SqjmVS
+pRD&Kj-eU"p&FgfJcFL)rrAhoJ,~>
+JcFm4rr at WMNW8qWJcC<$li5.Wqu>Q&s"OC,rA4I1s"j[3s)\3_s#9m;s#pBHs$?ZPrC-`Us%!)[
+s%35`s%NGes%`Mgs%r_ms&8qts&]5's'#G,s'5S0s'G_4rF#Y6s'kq:s(). at s(;4Bs(MFHs(_RL
+s(q^Ps)7pVs)J'ZrH&!\rH8-`rHJ9drH\EhrHnQls82]kqu,u3omZpes*jWjqgeQpq1AX!s+LE+
+rJ(?-s+p]3s,-i7s,?u;s,R, at s,m>Es-*JIs-E\Ps-s%Zs.KCds/#ans/Q+$s0;U2s0r$>s1\NL
+s2=rXs2tAcs3CYls3q#!s4IA*s4mY2s53k8s5X.?s5s at Gs6TdSs763_s7lWkZi0q#s7QE^s6]LB
+s5j:@s5F"7s4[M$s2OrTqo&NPs2+fOs1\NGs186?s0_m5s0;U,s/c7$s/Q*us/>sps.o[hs.KCa
+s.01[s-itTs-E\Ls-*JFs,d2?s,R&;s,?u9s,-i5rJ:-%qhG!%qh4j!q1AWtrIXirjad%(q#H!G
+g].9RU]5i~>
+JcFm4rr at WMM?!MSJcC<$n,LR[qu>Q&o*#"/JHYuUr<<--r=&Q4q$-Quo*G@!r<`9,s"X7's"j[3
+r=Su at rtGDHrtbVNru(hVruM+\s"FC+s"aU2s#9s<s#g<Gs$H`Ss%35bs&8r#s'G_:s)J'\s*"Ee
+s*k!$s,6o>s-NbWs/H%$s0D[7s1SHMs2b5cs4%)%s5!_3s5<q:s5X. at s6'FIs6]jUs7?9as7u]m
+]D_d,s7u]es6fpPs5j:=s4RG(s4%(ss3L_ds24lLs0hs5s/l=$s-WhNs,d8?s,6o5s+UK*s+(,u
+s*aoms*+Kas).jMs'u(8s'#G(s&K(ss%iYhs%<;]s$ZlRs$6TJs#pBDs#C$9s"sa2s"XO-s"FC)
+s"47%s""+!s!dsrs!Rgnr?_=dr?M7br?;%\q]G\Vq]5\Vq17RVqu?NnJcF4!rrAhoJ,~>
+JcFm4rr at WMM?!MSJcC<$n,LS-qu?\srN-%$s/uC*s02O.s0D[3s0hs;s186Bs1JBFs1\M%s%!)[
+rCR#]s%EB"s'bq&s%r_ns&8qts&T/$s&f;(s'#G,rETA.s'G_4rF#Y6s'kq:s(). at rFZ(Cs(VLK
+s(q^PrGMXRrG_dVrGqpZrH/'^s*"?bs*4QhrHeKjrI"Wns*jorrIFp!qh"d!rIk+Wr=&Q4s+U'!
+nV at -rrJ13)nZVVErJgi<s,d2As.TCcs.fUjs/,gos/H%!s/c7's02O0s0hs<s1S6Ks2k;cs3Uep
+s475's5F"<s5j:Es6K^Qs7--^s7lWlTDefes7u]gs7QEas7?9]s7$'Us6K^Ks5s@?s53k3s4[M(
+s3q"ps3CYgs2tA_s2G#Us2"`Ms1SBCrOMs;s0Vg2s/uC&s/Q*us/>sqs/,aks.oUgrM'7arLinW
+qk!\UrLEVOqjQE1g]%*MqZ)3Ie,TFJU]5i~>
+JcFm4rr at WMM?!MSJcC<$n,LR[qu>Q&s"XO/q_S7/s"j[qs)n?#s#L*?s#^6Es#g<FrBpTQs$crX
+s%35_s%E;bs%`Sis%r_ms&/kqs&B#"s&f;(s'#G-s'>Y2s'Pe6rF,_8s'u(>rFQ"@s(D at FrFu:H
+s(hXNs)%dRs)7pWs)S-\s)e3^rHA-`s*4Kfs*FWjs8)cmrVZQkmsXeVs*F]opOE!hqgnWrrIb-'
+s+UE+s+gW1s,$c5s,6o9s,I&=s,[2As-!DGs-3PLs-WhUs.01_s.]Ois/5mss/c7's0D[4s1&*@
+s1eTNs2G#Zs2tAds3L_ns4%)#s4RG,s5!_3s5<q:s5X. at s6'FIs6]jUs7?9as7u]m\,H@(s7cQb
+s6p!Rq<.e?s5a4=s5!_/s4RG)s4@:ks2FlQrPJNLs1nZLs1SHEs1/0=s0Vg3s02O*s/Z1"s/>sp
+s/#ais.KC`s.01Zs-itUs-NbNs-*JGs,d8ArJpo;rJ^c7rJLW3rJ:-%qhG''qh4j!q1A3hj+.%,
+qZ)3Ie,TFJU]5i~>
+JcFm4rr at WMM?!MSJcC<$n,LR[qu>Q&o*#"/JHYuUr<<--r=&Q4q$-Quo*G@!r<`9,s"X7's"j[3
+r=Su at rtGDHrtbVNru(hVruM+\s"FC+s"aU2s#9s<s#g<Gs$H`Ss%35bs&8r#s'G_:s)J'\s*"Ee
+s*k!$s,6o>s-NbWs/H%$s0D[7s1SHMs2b5cs4%)%s5!_3s5<q:s5X. at s6'FIs6]jUs7?9as7u]m
+]D_d,s7u]es6fpPs5j:=s4RG(s4%(ss3L_ds24lLs0hs5s/l=$s-WhNs,d8?s,6o5s+UK*s+(,u
+s*aoms*+Kas).jMs'u(8s'#G(s&K(ss%iYhs%<;]s$ZlRs$6TJs#pBDs#C$9s"sa2s"XO-s"FC)
+s"47%s""+!s!dsrs!Rgnr?_=dr?M7br?;%\q]G\Vq]5\Vq17RVqu?NnJcF4!rrAhoJ,~>
+JcFm4rr at WMM?!MSJcC<$n,LS-qu?\srN-%$s/uC*s02O.s0D[3s0hs;s186Bs1JBFs1\M%s%!)[
+rCR#]s%EB"s'bq&s%r_ns&8qts&T/$s&f;(s'#G,rETA.s'G_4rF#Y6s'kq:s(). at rFZ(Cs(VLK
+s(q^PrGMXRrG_dVrGqpZrH/'^s*"?bs*4QhrHeKjrI"Wns*jorrIFp!qh"d!rIk+Wr=&Q4s+U'!
+nV at -rrJ13)nZVVErJgi<s,d2As.TCcs.fUjs/,gos/H%!s/c7's02O0s0hs<s1S6Ks2k;cs3Uep
+s475's5F"<s5j:Es6K^Qs7--^s7lWlTDefes7u]gs7QEas7?9]s7$'Us6K^Ks5s@?s53k3s4[M(
+s3q"ps3CYgs2tA_s2G#Us2"`Ms1SBCrOMs;s0Vg2s/uC&s/Q*us/>sqs/,aks.oUgrM'7arLinW
+qk!\UrLEVOqjQE1g]%*MqZ)3Ie,TFJU]5i~>
+JcFm4rr at WMM?!MSJcC<$n,LR[qu>Q&s"XO/q_S7/s"j[qs)n?#s#L*?s#^6Es#g<FrBpTQs$crX
+s%35_s%E;bs%`Sis%r_ms&/kqs&B#"s&f;(s'#G-s'>Y2s'Pe6rF,_8s'u(>rFQ"@s(D at FrFu:H
+s(hXNs)%dRs)7pWs)S-\s)e3^rHA-`s*4Kfs*FWjs8)cmrVZQkmsXeVs*F]opOE!hqgnWrrIb-'
+s+UE+s+gW1s,$c5s,6o9s,I&=s,[2As-!DGs-3PLs-WhUs.01_s.]Ois/5mss/c7's0D[4s1&*@
+s1eTNs2G#Zs2tAds3L_ns4%)#s4RG,s5!_3s5<q:s5X. at s6'FIs6]jUs7?9as7u]m\,H@(s7cQb
+s6p!Rq<.e?s5a4=s5!_/s4RG)s4@:ks2FlQrPJNLs1nZLs1SHEs1/0=s0Vg3s02O*s/Z1"s/>sp
+s/#ais.KC`s.01Zs-itUs-NbNs-*JGs,d8ArJpo;rJ^c7rJLW3rJ:-%qhG''qh4j!q1A3hj+.%,
+qZ)3Ie,TFJU]5i~>
+JcFm4rr at WML&_)OJcC<$oDd'aqu>Q&o*"q-JHYoTrsSc6r=/]8pBL?sq$?j(rri?.q$R!Rq(ht+
+rt,, at r=],DrtPJJru(hUruD%[ru_7os"XO/s"j[5s#L*As$-NNs$m#\s%WMks&f;2s)7pWs)\3_
+s*"Egs+(-(s,?uJs.o[os/uC-s0r$@s2+fVs3:Sls4IA,s5!_4s5F";s5a4Bs60LKs6fpWs7H?c
+s8';)s8)ces6TdIs5<q3s474ts3:Sbs2=rPs1JB at s0Ma.s/Q*ss.o[Zs,d8=s+p]0s+C?&s*juq
+s*Ocks*+Kas).jNs'u(7s&]5"s&/kms%NGbs%!)Ws$H`Ns$$HGs#^6As#9s8s"j[1s"OI+s"=='
+s"+1#s!n$ts![mps!I[jq'>n`s!%Cbq]PbXr>tbTr>bceiIL_(JcF!prrAhoJ,~>
+JcFm4rr at WML&_)OJcC<$oDd(3qu?\rs/H%!s/l=(rNH7+s0D[2s0_m9s1/0 at s1A<Ds1\M$s$m#Y
+s%*/]s%<;as'Pe6s'bq&s%iYls&/krs&K)#s&f;(s'#G,s'5S0rEfM2s'Ye6s'l"<s()(>s(;4B
+s(MFHs(hXOs).dRs)@pVrGqpZs)e3^s*"Eds*4KfrHeKjrI"QmrI=crrIOits+C?)rsSc6r=/]8
+mtU at fs+C?,q2"REs,6K-rK.&ArK@,RrM0Chs/,gps/H%!s/l=(s02O/s0_m at ouI*Ts3:Sjs5!_7
+s5X. at s5s@Gs6TdSs763_s7lWlSc/Tcs7lWes763[s7$'Ws6TdMs6'FDs5O(9s4mY-s4..ts3L_i
+s3(Gas2Y/Ys24lPs1\NGs1A<Bs1/0>s0hs6s02O+s/Z1!s/>sqs/,gms.oIcrM'1_s.K+YrLWhU
+s.&hQq3p3/h>[3MJcF!prrAhoJ,~>
+JcFm4rr at WML&_)OJcC<$oDd'aqu>Q&s"XI-rA4C/s)J'\s*"E%s#L*?s#^6Cs#pBHs$6TOs$ZlU
+s%!)\s%EAcs%WMgrD3Gis&&eps&B"us&T/$s&oA*s'5M.rEoM3rF>k<s(24BrFc.DrFu:Hs(hXN
+rGDRPs)7pWs)S-]rH8'^rHJ9drH\Ehs*OeAs8)cms8;cmm="STs*F]opOE!hq18KrrIb-'s+UE+
+s+gW1s,$c5s,6i7s,I&>s,d8Cs-*JJs-NbRs-s%Zs.KCds/#ans/H%!s/c7)s0Ma6s1/0Cs1nZP
+s2P)\s3(Gfs3Ueps4./$s4[M.s5!_4s5F";s5a4Bs60LKs6fpWs7H?cs8'5's7u]es7$'Ts60LE
+s5X.<s53k4s4dS-s4I;%s475#s4%(gs2=rSs2"TJs1eNHs1SHFs186?s0hs6s0)I's/Q*ts/,gm
+s.fUfs.97\s-s%Vs-WhQs-E\Ks-!DEs,d8 at rJgi9rJU]5rJCK/o8!:!rIt-%qh+]romu(Pq#H!G
+c2[eDU]5i~>
+JcFm4rr at WML&_)OJcC<$oDd'aqu>Q&o*"q-JHYoTrsSc6r=/]8pBL?sq$?j(rri?.q$R!Rq(ht+
+rt,, at r=],DrtPJJru(hUruD%[ru_7os"XO/s"j[5s#L*As$-NNs$m#\s%WMks&f;2s)7pWs)\3_
+s*"Egs+(-(s,?uJs.o[os/uC-s0r$@s2+fVs3:Sls4IA,s5!_4s5F";s5a4Bs60LKs6fpWs7H?c
+s8';)s8)ces6TdIs5<q3s474ts3:Sbs2=rPs1JB at s0Ma.s/Q*ss.o[Zs,d8=s+p]0s+C?&s*juq
+s*Ocks*+Kas).jNs'u(7s&]5"s&/kms%NGbs%!)Ws$H`Ns$$HGs#^6As#9s8s"j[1s"OI+s"=='
+s"+1#s!n$ts![mps!I[jq'>n`s!%Cbq]PbXr>tbTr>bceiIL_(JcF!prrAhoJ,~>
+JcFm4rr at WML&_)OJcC<$oDd(3qu?\rs/H%!s/l=(rNH7+s0D[2s0_m9s1/0 at s1A<Ds1\M$s$m#Y
+s%*/]s%<;as'Pe6s'bq&s%iYls&/krs&K)#s&f;(s'#G,s'5S0rEfM2s'Ye6s'l"<s()(>s(;4B
+s(MFHs(hXOs).dRs)@pVrGqpZs)e3^s*"Eds*4KfrHeKjrI"QmrI=crrIOits+C?)rsSc6r=/]8
+mtU at fs+C?,q2"REs,6K-rK.&ArK@,RrM0Chs/,gps/H%!s/l=(s02O/s0_m at ouI*Ts3:Sjs5!_7
+s5X. at s5s@Gs6TdSs763_s7lWlSc/Tcs7lWes763[s7$'Ws6TdMs6'FDs5O(9s4mY-s4..ts3L_i
+s3(Gas2Y/Ys24lPs1\NGs1A<Bs1/0>s0hs6s02O+s/Z1!s/>sqs/,gms.oIcrM'1_s.K+YrLWhU
+s.&hQq3p3/h>[3MJcF!prrAhoJ,~>
+JcFm4rr at WML&_)OJcC<$oDd'aqu>Q&s"XI-rA4C/s)J'\s*"E%s#L*?s#^6Cs#pBHs$6TOs$ZlU
+s%!)\s%EAcs%WMgrD3Gis&&eps&B"us&T/$s&oA*s'5M.rEoM3rF>k<s(24BrFc.DrFu:Hs(hXN
+rGDRPs)7pWs)S-]rH8'^rHJ9drH\Ehs*OeAs8)cms8;cmm="STs*F]opOE!hq18KrrIb-'s+UE+
+s+gW1s,$c5s,6i7s,I&>s,d8Cs-*JJs-NbRs-s%Zs.KCds/#ans/H%!s/c7)s0Ma6s1/0Cs1nZP
+s2P)\s3(Gfs3Ueps4./$s4[M.s5!_4s5F";s5a4Bs60LKs6fpWs7H?cs8'5's7u]es7$'Ts60LE
+s5X.<s53k4s4dS-s4I;%s475#s4%(gs2=rSs2"TJs1eNHs1SHFs186?s0hs6s0)I's/Q*ts/,gm
+s.fUfs.97\s-s%Vs-WhQs-E\Ks-!DEs,d8 at rJgi9rJU]5rJCK/o8!:!rIt-%qh+]romu(Pq#H!G
+c2[eDU]5i~>
+JcFm4rr at WMJcGTIJcC<$q>\]grVt]&o*#"/K*;&TrsSi8r=/Q4pBLEuq$?d&rri-)s"OC+pG2aY
+rt#, at rt58DrtGDHrtYPLrtk\Qru:tXruM+\s"FC,s"j[:s#pBIs$QfUs%35as%iYms'bqDs)7pW
+s)S-]s)n?cs*Ocss-s%\s.o[ps0)I.s0hs?s2"`Vs3L_rs4IA*s4mY2s5<q9s5X. at s5s@Gs6TdS
+s763_s7lWk^&A!/s7u]cs6K^Gs5!_+s3^kjs2b5Xs1nZJs186=s02O(s/5mms.TIWs,d8>s+p]-
+s+(,us*Xins*=Wgs)\3Zs(hXGs'Pe/s&B"rs%r_is%EA`s$crTs$6TJs#g<Bs#L*=s#0m6s"j[0
+s"OI*s"47%s""$sr?qUlr?_Cfq'5n`r?;%\q&fVXq&T8Ns+0Ebq#LACJcEjlrrAhoJ,~>
+JcFm4rr at WMJcGTIJcC<$q>\^9rVunqs/>sss/Q+$s/uC*s02O.s0D[3s0hs:s1/0 at s1JBFs1\M%
+s$m#ZrCR#]s%EB"s'bq&s%iYks&&eos&B"us&T/%s&oA*s',M.s'>Y2rEoS4s'bq:rF>k<s(2.@
+s(D:Ds(VFHs)%^Qs)@pVs)S-\rH/'^s*"?bs*4Kfs*FWjs*XiprI4]prIFitrIY!#rsSi8r=/Q4
+mtUFhs+p]-q2#!Pq60b"s,-c5q2G93rJpo=qiLiOs.]Ogs/Q+"s/c7&s/uC*s02O.s0D[>o>gmP
+s3(H$s5O(>s5j:Ds60LJs6]jUs7H?eRJm0`s7u]hs7H?]s6fpSs6K^Ks5s at As5F"7s4dS*s4%(r
+s3L_is3(Gas2P)Ws2+fNs1SHFs1A<Bs1/0<s0Ma1s/uC's/H$srMT[mrMBOirM0=cq4[b[q4IVW
+qjm\Uq4%,Ih3mI*q#LBmJcEjlrrAhoJ,~>
+JcFm4rr at WMJcGTIJcC<$q>\]grVt]&s"XO/rA4C/s#'gts)n9"s#L*?s#^6Ds$$HIs$?ZPs$ZlV
+s%*/^s%E;bs%`Sis%r_ms&/kqs&B"us&T/$s&oA*s',M.s'>Y3s'Yk8s'kq:s(). at s(;4Bs(MFH
+s(_LJs(qXNs).dRs)A!Xs)\3_s*"?brHS?fs*F]lrV?Kis82ioqu,u3nUCLas*jcnpON'jrIY'%
+rIk3)rJ(?-s+pW1s,-i7s,?u;s,R,?s,m>Fs-<VNs-`nVs.01_s.]Ois/5mqs/Q+"s/l=+s0Vg8
+s186Es2+fUs2Y/^s31Mhs3^kqs475&s4[M.s5*e6s5F"<s5j:Cs69RMs6p!Ys7QEes80M.s8;on
+s7ZK`s6fpOs5j:>s53k4s4dG)s4RG'rRCkrs3gqfs2G#Us2"`MrP&6Ds1J<Bs186>s0Vg1s/l=$
+s/>sqs/#ajs.TIbs.01Zs-`nSs-E\Ms-3PHs,m>Cs,[2?s,I&;s,6o7rJCK/q1nWtrIt-%q1JQr
+q18Kps+0Ebq#LACJcEjlrrAhoJ,~>
+JcFm4rr at WMJcGTIJcC<$q>\]grVt]&o*#"/K*;&TrsSi8r=/Q4pBLEuq$?d&rri-)s"OC+pG2aY
+rt#, at rt58DrtGDHrtYPLrtk\Qru:tXruM+\s"FC,s"j[:s#pBIs$QfUs%35as%iYms'bqDs)7pW
+s)S-]s)n?cs*Ocss-s%\s.o[ps0)I.s0hs?s2"`Vs3L_rs4IA*s4mY2s5<q9s5X. at s5s@Gs6TdS
+s763_s7lWk^&A!/s7u]cs6K^Gs5!_+s3^kjs2b5Xs1nZJs186=s02O(s/5mms.TIWs,d8>s+p]-
+s+(,us*Xins*=Wgs)\3Zs(hXGs'Pe/s&B"rs%r_is%EA`s$crTs$6TJs#g<Bs#L*=s#0m6s"j[0
+s"OI*s"47%s""$sr?qUlr?_Cfq'5n`r?;%\q&fVXq&T8Ns+0Ebq#LACJcEjlrrAhoJ,~>
+JcFm4rr at WMJcGTIJcC<$q>\^9rVunqs/>sss/Q+$s/uC*s02O.s0D[3s0hs:s1/0 at s1JBFs1\M%
+s$m#ZrCR#]s%EB"s'bq&s%iYks&&eos&B"us&T/%s&oA*s',M.s'>Y2rEoS4s'bq:rF>k<s(2.@
+s(D:Ds(VFHs)%^Qs)@pVs)S-\rH/'^s*"?bs*4Kfs*FWjs*XiprI4]prIFitrIY!#rsSi8r=/Q4
+mtUFhs+p]-q2#!Pq60b"s,-c5q2G93rJpo=qiLiOs.]Ogs/Q+"s/c7&s/uC*s02O.s0D[>o>gmP
+s3(H$s5O(>s5j:Ds60LJs6]jUs7H?eRJm0`s7u]hs7H?]s6fpSs6K^Ks5s at As5F"7s4dS*s4%(r
+s3L_is3(Gas2P)Ws2+fNs1SHFs1A<Bs1/0<s0Ma1s/uC's/H$srMT[mrMBOirM0=cq4[b[q4IVW
+qjm\Uq4%,Ih3mI*q#LBmJcEjlrrAhoJ,~>
+JcFm4rr at WMJcGTIJcC<$q>\]grVt]&s"XO/rA4C/s#'gts)n9"s#L*?s#^6Ds$$HIs$?ZPs$ZlV
+s%*/^s%E;bs%`Sis%r_ms&/kqs&B"us&T/$s&oA*s',M.s'>Y3s'Yk8s'kq:s(). at s(;4Bs(MFH
+s(_LJs(qXNs).dRs)A!Xs)\3_s*"?brHS?fs*F]lrV?Kis82ioqu,u3nUCLas*jcnpON'jrIY'%
+rIk3)rJ(?-s+pW1s,-i7s,?u;s,R,?s,m>Fs-<VNs-`nVs.01_s.]Ois/5mqs/Q+"s/l=+s0Vg8
+s186Es2+fUs2Y/^s31Mhs3^kqs475&s4[M.s5*e6s5F"<s5j:Cs69RMs6p!Ys7QEes80M.s8;on
+s7ZK`s6fpOs5j:>s53k4s4dG)s4RG'rRCkrs3gqfs2G#Us2"`MrP&6Ds1J<Bs186>s0Vg1s/l=$
+s/>sqs/#ajs.TIbs.01Zs-`nSs-E\Ms-3PHs,m>Cs,[2?s,I&;s,6o7rJCK/q1nWtrIt-%q1JQr
+q18Kps+0Ebq#LACJcEjlrrAhoJ,~>
+JcFm4rr at WMJcGWIr;_EKJcG]Kc[PckhgY/"q\Y.mo`b@(q[NE4qZcQqr<W-(rrr9,r at n%%rA+<]
+rt#, at rt58DrtGDHrtYJKs![mss""+#s"==)s"XO0s#'g>s$6TOs$m#[s%WMis&8r*s(q^Rs)S-^
+s*4Qis*aous+gW:s.'+cs/c7's0D[4s186Hs2Y/as3gr!s4[M-s5!_3s5<q:s5a4As6'FIs6]jU
+s7?9as7u]mc2IV=s82ims7uWgs7cQes7--Ss5X.7s4..ps2Y/Ws2"`Ms1JBBs0hs3s/Q*qs.]Oc
+s.'+Ns,?u6s+C?$s*Xils)n?]s)%dMs(24>s'G_/s&T.us&&els%NGbs%!)Ws$?ZKs#g<Bs#L*=
+s#0m7s"j[1s"OI+s"=='s""+!s!dsrs!Ralr?_Cfq]l%`r?;%\q]G\Vr>kVPs+0WhqZ-GBqgX1s
+bQ%SBU]5i~>
+JcFm4rr at WMJcGWIr;_EKJcG]Kc_^O=s/,gos/H%!s/u=(s0;U0s0Ma5s0hs;s186Bs1JBFs$ZlV
+s%!)[s%35_s%EB"s'bq:s%iYks&&eos&8qss&K)"s&]5&s&oA+s'5S0s'G_4s'Ye6s'l"<rFGq>
+s(;4Bs(M at Fs(_LJs(q^Qs)A!XrGqpZs)e3^s*"?bs*4Kfs*FWjrI+WnrI=crs+1'!rIb+Yq[NE4
+l\>4jqhY9)qhXdFqhk?1qi(Q7rJpoLrLa+_rLs7cs.fUis/Z1$s/l=(s0)I,s0;U1s1\NRs2b5^
+s3(Gds3:Sis3Ueps4RG2s5a4Bs6'FHs6BXNs7--^s7u]lRJm0_s7lWes7?9[s6]jNs6'FDs5O(9
+s5!_.s475!s3Ueks31Mcs2b5[s24lQs1eTIs186>s0Vg2s/uC&rMogqrM]aos/,aks.oUgrM'+]
+rLitYrLWnWrLE\QpR9p+mJct_oDX=@bQ%SBU]5i~>
+JcFm4rr at WMJcGWIr;_EKJcG]Kc[PckhgYSZs"XI.rA=O3s*"Eas*"E$s#C$=s#^6Cs#pBHs$6TM
+s$QfTs%!)\s%<;bs%WMgrD3Gjs&/eos&B"us&]5&s&oA*s',M/s'G_4s'Yk8s'kq:rFQ"@rFc.D
+s(VLJrG2FLrGDRPrGV^TrGhjXs)n9as*4Kfs*F]lrV?Kis82iorVc,3nUCLapOE!hpOW?rrIb-'
+rIt3)rJ:K1s,-c5s,?u;s,R,?s,m>Fs-<VNs-itXs.97`s.]Ohs/,gos/H$us/c7's0D[4s1&*C
+s24lUs2P)[s3(Ges3L_ns4%)#s4[M-s5!_3s5<q:s5a4As6'FIs6]jUs7?9as7u]mc2IV=s82im
+s7uWgs7cQes7?9Zs6K^Is5O(8s4d5#s4@;#s3gqps3Uels2P)Ws2+fOs1\HEs1A<Bs1/0>s0r$9
+s0;U,s/Q*ts/5mns.fUgs.B=^s-s%Vs-NbOs-<VKs-!DEs,d8As,R,=s,?u9rJLW3rJ:3'pP/R!
+qh4j!qh"Wpqge]tmst98q1/?lJcEpnrrAhoJ,~>
+JcFm4rr at WMJcGWIr;_EKJcG]Kc[PckhgY/"q\Y.mo`b@(q[NE4qZcQqr<W-(rrr9,r at n%%rA+<]
+rt#, at rt58DrtGDHrtYJKs![mss""+#s"==)s"XO0s#'g>s$6TOs$m#[s%WMis&8r*s(q^Rs)S-^
+s*4Qis*aous+gW:s.'+cs/c7's0D[4s186Hs2Y/as3gr!s4[M-s5!_3s5<q:s5a4As6'FIs6]jU
+s7?9as7u]mc2IV=s82ims7uWgs7cQes7--Ss5X.7s4..ps2Y/Ws2"`Ms1JBBs0hs3s/Q*qs.]Oc
+s.'+Ns,?u6s+C?$s*Xils)n?]s)%dMs(24>s'G_/s&T.us&&els%NGbs%!)Ws$?ZKs#g<Bs#L*=
+s#0m7s"j[1s"OI+s"=='s""+!s!dsrs!Ralr?_Cfq]l%`r?;%\q]G\Vr>kVPs+0WhqZ-GBqgX1s
+bQ%SBU]5i~>
+JcFm4rr at WMJcGWIr;_EKJcG]Kc_^O=s/,gos/H%!s/u=(s0;U0s0Ma5s0hs;s186Bs1JBFs$ZlV
+s%!)[s%35_s%EB"s'bq:s%iYks&&eos&8qss&K)"s&]5&s&oA+s'5S0s'G_4s'Ye6s'l"<rFGq>
+s(;4Bs(M at Fs(_LJs(q^Qs)A!XrGqpZs)e3^s*"?bs*4Kfs*FWjrI+WnrI=crs+1'!rIb+Yq[NE4
+l\>4jqhY9)qhXdFqhk?1qi(Q7rJpoLrLa+_rLs7cs.fUis/Z1$s/l=(s0)I,s0;U1s1\NRs2b5^
+s3(Gds3:Sis3Ueps4RG2s5a4Bs6'FHs6BXNs7--^s7u]lRJm0_s7lWes7?9[s6]jNs6'FDs5O(9
+s5!_.s475!s3Ueks31Mcs2b5[s24lQs1eTIs186>s0Vg2s/uC&rMogqrM]aos/,aks.oUgrM'+]
+rLitYrLWnWrLE\QpR9p+mJct_oDX=@bQ%SBU]5i~>
+JcFm4rr at WMJcGWIr;_EKJcG]Kc[PckhgYSZs"XI.rA=O3s*"Eas*"E$s#C$=s#^6Cs#pBHs$6TM
+s$QfTs%!)\s%<;bs%WMgrD3Gjs&/eos&B"us&]5&s&oA*s',M/s'G_4s'Yk8s'kq:rFQ"@rFc.D
+s(VLJrG2FLrGDRPrGV^TrGhjXs)n9as*4Kfs*F]lrV?Kis82iorVc,3nUCLapOE!hpOW?rrIb-'
+rIt3)rJ:K1s,-c5s,?u;s,R,?s,m>Fs-<VNs-itXs.97`s.]Ohs/,gos/H$us/c7's0D[4s1&*C
+s24lUs2P)[s3(Ges3L_ns4%)#s4[M-s5!_3s5<q:s5a4As6'FIs6]jUs7?9as7u]mc2IV=s82im
+s7uWgs7cQes7?9Zs6K^Is5O(8s4d5#s4@;#s3gqps3Uels2P)Ws2+fOs1\HEs1A<Bs1/0>s0r$9
+s0;U,s/Q*ts/5mns.fUgs.B=^s-s%Vs-NbOs-<VKs-!DEs,d8As,R,=s,?u9rJLW3rJ:3'pP/R!
+qh4j!qh"Wpqge]tmst98q1/?lJcEpnrrAhoJ,~>
+JcFm4rr at WMJcGKEr;_EKJcF&FrVt]&o*#"/M$3JTr=&Q4r=8i3lNd:mq$I'(r<`KVs"O1%s"aN^
+r=Ao?rt>>Fs!.Ohs!@[ls!Rgps!n%!s"+1&s"FC,s"j[5s#L*Es$QfUs%35as%r_ps&f;3s(hXO
+s)A!Zs*"Efs*k!%s,?uCs.97cs/5mus02O3s1JBJs2P)_s475's4[M.s5!_4s5F"<s5a4Bs60LK
+s6fpWs7QEes814Bs82ims7uWgs7cQdrU^'[s7--Ys69RCs4RG!s2tA\s2+fOs1SHEs0r$9s02O'
+s/#ags.'+Ws-!D at s+gW+s*aoks)S-Vs(_RHs(24>s'Pe2s&]5"s&/kns%`Ses%35[s$QfOs#pBC
+s#C$;s#0m6s"aU/s"OI+s"=7%s""+!s!dsrs!Rgnr?_Cfr?M1`r?;%\q]GVTr>kPNs+0urq#L#:
+qgX1sbQ%SBU]5i~>
+JcFm4rr at WMJcGKEr;_EKJcF&mrVuhns/5mrs/c7's0)I,s0;U0s0Vg7s0r$<s186Bs1SHHs$crW
+s%*)[s%<;as'bq:rD3Gis&&eos&8qss&K)"s&]5&s&oA+s'5M.s'G_4s'Yk8s'l"<s()(>s(;:D
+rFl4FrG)@JrG;LNs).jTs)S'Zs)e3^rHA3bs*4Kfs*F]ls*XcnrI4]ps+'uts+:3%r=&Q4r=8(H
+pP8d)s+gW,rJ:KUo<.nHrJU]7s-rtWrLNt[rLa+_rLs7ds.o[ks/,gss/c7&s/uC*s0;U1s0_mB
+s2G#Xs2Y/]s2tAbs3L_os475's4dS1s5F"=s6'FIs6]jVs7?9bs7r)]s8)cis7?9Ys6K^Ks5s at A
+s5F"7s4dS+s4..ss3L_is3(Gas2Y/Ys2+fNs1A<@s0_m3s0)I*s/l=%rMoaos/>mos/,aks.o[i
+s.]=_qk3bWrLWnWs.'%WopXL#p\ssgmJ_\:bQ%SBU]5i~>
+JcFm4rr at WMJcGKEr;_EKJcF&FrVt]&s"XO/rA4C/s#'h#s)n?!s#9s;s#U*@s$$HJs$?ZOs$ZlU
+s%!)\s%E;bs%`Sis%r_ms&/eos&K)"s&]5&s&oA*s',M/s'G_4s'Yk8s'l"<s()(>s(;:Ds(M at F
+s(_LJs(qXNs).jTrG_^Ts)S'Zs*4Eds*F_>s7lQgs8)cns8D83nUCLarI4]ppON9prIFp!s+:3%
+s+L?)rJ(?-rJ:K1rJLW5s,?u;s,R, at s-!DHs-E\Ps-itXs.97`s.]Ogs/#ams/>sss/Z1$s02O0
+s1/0Fs2+fSs2G#Ys2k;bs3CYks3pl!s4mY1s53k8s5X.?s5s at Fs6K^Qs7--^s7lWkdJa+Bs8)ck
+rV6Ees7Q?^s763[s7$'Ts60LCs53k3o at j5ts475!s3Ueks3:Sbs2G#Us2"`Ms1SHDs1/0>s0hs8
+s0Vg3s0)I's/>sqs/#aks.]Ods.97[s-`nRs-<VKs-*JGs,m>BrJpo;rJ^c7rJLW3rJ:3'pP/X#
+qh4j!q1AEnq1/Krq1/8 at o76^fJcEpnrrAhoJ,~>
+JcFm4rr at WMJcGKEr;_EKJcF&FrVt]&o*#"/M$3JTr=&Q4r=8i3lNd:mq$I'(r<`KVs"O1%s"aN^
+r=Ao?rt>>Fs!.Ohs!@[ls!Rgps!n%!s"+1&s"FC,s"j[5s#L*Es$QfUs%35as%r_ps&f;3s(hXO
+s)A!Zs*"Efs*k!%s,?uCs.97cs/5mus02O3s1JBJs2P)_s475's4[M.s5!_4s5F"<s5a4Bs60LK
+s6fpWs7QEes814Bs82ims7uWgs7cQdrU^'[s7--Ys69RCs4RG!s2tA\s2+fOs1SHEs0r$9s02O'
+s/#ags.'+Ws-!D at s+gW+s*aoks)S-Vs(_RHs(24>s'Pe2s&]5"s&/kns%`Ses%35[s$QfOs#pBC
+s#C$;s#0m6s"aU/s"OI+s"=7%s""+!s!dsrs!Rgnr?_Cfr?M1`r?;%\q]GVTr>kPNs+0urq#L#:
+qgX1sbQ%SBU]5i~>
+JcFm4rr at WMJcGKEr;_EKJcF&mrVuhns/5mrs/c7's0)I,s0;U0s0Vg7s0r$<s186Bs1SHHs$crW
+s%*)[s%<;as'bq:rD3Gis&&eos&8qss&K)"s&]5&s&oA+s'5M.s'G_4s'Yk8s'l"<s()(>s(;:D
+rFl4FrG)@JrG;LNs).jTs)S'Zs)e3^rHA3bs*4Kfs*F]ls*XcnrI4]ps+'uts+:3%r=&Q4r=8(H
+pP8d)s+gW,rJ:KUo<.nHrJU]7s-rtWrLNt[rLa+_rLs7ds.o[ks/,gss/c7&s/uC*s0;U1s0_mB
+s2G#Xs2Y/]s2tAbs3L_os475's4dS1s5F"=s6'FIs6]jVs7?9bs7r)]s8)cis7?9Ys6K^Ks5s at A
+s5F"7s4dS+s4..ss3L_is3(Gas2Y/Ys2+fNs1A<@s0_m3s0)I*s/l=%rMoaos/>mos/,aks.o[i
+s.]=_qk3bWrLWnWs.'%WopXL#p\ssgmJ_\:bQ%SBU]5i~>
+JcFm4rr at WMJcGKEr;_EKJcF&FrVt]&s"XO/rA4C/s#'h#s)n?!s#9s;s#U*@s$$HJs$?ZOs$ZlU
+s%!)\s%E;bs%`Sis%r_ms&/eos&K)"s&]5&s&oA*s',M/s'G_4s'Yk8s'l"<s()(>s(;:Ds(M at F
+s(_LJs(qXNs).jTrG_^Ts)S'Zs*4Eds*F_>s7lQgs8)cns8D83nUCLarI4]ppON9prIFp!s+:3%
+s+L?)rJ(?-rJ:K1rJLW5s,?u;s,R, at s-!DHs-E\Ps-itXs.97`s.]Ogs/#ams/>sss/Z1$s02O0
+s1/0Fs2+fSs2G#Ys2k;bs3CYks3pl!s4mY1s53k8s5X.?s5s at Fs6K^Qs7--^s7lWkdJa+Bs8)ck
+rV6Ees7Q?^s763[s7$'Ts60LCs53k3o at j5ts475!s3Ueks3:Sbs2G#Us2"`Ms1SHDs1/0>s0hs8
+s0Vg3s0)I's/>sqs/#aks.]Ods.97[s-`nRs-<VKs-*JGs,m>BrJpo;rJ^c7rJLW3rJ:3'pP/X#
+qh4j!q1AEnq1/Krq1/8 at o76^fJcEpnrrAhoJ,~>
+JcFm4rr at WMJcG?Ar;_EKL&]PLqu>K$o`Y41MZiVTq[E?2rsnu3lNd(grsA].rsA]Ws"==)s"O7'
+q[NQ9r?2+`s!%Cds!7Uks!Rgps!n%!s"+1&s"OI/s#0m:s#U0Cs$H`Ss%*/`s%iYms&f;,s(D at H
+s(q^Qs)S-`s*ap"s,R,Js.B=ds/5mus0)I0s186Es2G#`s3^krs4@;*s4mY2s5<q:s5X. at s6'FI
+s6]jUs7?9as7u]mfDYaIs8)cks7lWfrUp3_s763[s6p!UrTsRGs4mY(s3:Scs2G#Ss1eTHs1/0<
+s0Ma0s/Z0ss.TI^s-<VGs,$c/s*jums)\3Xs(_RIs(24>s'Pe2s'#G's&8qps%iYhs%<;]s$ZlR
+s$-NGs#U0=s#0m6s"aU/s"OI+r@\+%s"+1#s!n$ts!Rgnq^)1cq',b\q]PbXq]>VTq],PRr>P]d
+q#KZ0qgX1sc2[eDU]5i~>
+JcFm4rr at WMJcG?Ar;_EKL&]Psqu?Vls/5mrs/l=)s02O.s0D[2s0_m8s0r$<s186Bs1JBGs$crX
+s%*/]s%<;as'Yk8s%`Sis%r_ms&/kqs&Aqss&T/$s&f;(s'#G,s'5S0s'G_4s'Yk8s'l"<s().@
+s(;4Bs(M at Fs(_LJs(qXNrGMXRs)A!Ys)e3^rHA3bs*4KfrHnQlrI+Wns*sutqgnd!s+C1Wq[NQ8
+kD&S`s+:9+s/Z1$s/l$uq25'<rL<bUrLNt[rLa+_s.TIes.fUjs/,gos/>sus/c7&s0)I-s0Ma5
+s0r$Es24lTs2G#Ys3(Ggs3q#"s4[M/s53k9s5j:Ds6BXOs6p!Ws763_s7cQjSc/Tas7QE]s6K^L
+s6'FDs5X.;s5!_/s4@;#s3^kms3:Sds2Y/Ws1nZJs186=s0_m5s0;U.s0)I)s/c7$rMogqrM]ao
+s/,aks.oUgs.]Icqk3bWqk!hYrLEbSrL2K/opGdYq#KISJcF!prrAhoJ,~>
+JcFm4rr at WMJcG?Ar;_EKL&]PLqu>K$s"aO/q_\=qs*+K#s#0m9s#C$?s#g<Fs$-NKs$?TNs$ZlU
+s%!)^s%WMgs%iYkrDESmrDWYps&T/$s&oA*s',M/s'G_4s'Yk8s'l"<s()(>s(;:Ds(M at Fs(_LJ
+s(q^Ps).dRrG_^Ts)S'Zs)e9`s*4Qhs7ZKes7lQgs82iol[A5Ns*F]oqg\-ds+:9'qh4j#s+^K-
+s+p]3s,-i7s,?u;s,R,?s,d8Ds-3PLs-WhTs-s%Ys.KCes.o[ks/,gos/>sts/Z1%s0_m at s1eTM
+s24lTs2P)[s2tAcs3g_ss4dS/s5*e6s5O(=s5j:Ds6BXOs7$'[s7ZKgs8:LIs8;ons7u]is7ZEa
+s7H?^s7--Xs6fjPs69REs5F"8s5!_0o at j5rs4%(rs3CYfs2tA]s2=rSs1eTGs1&*;s0_m6s0D[/
+s0)I)s/H$rs/#aks.]Ods.97\s-itTs-E\Ls-*JGs,d8As,R&;rJ^]5s,-c3rJ:9)pP/X#qh4j!
+q1A?lpON&>l%&Y\JcF!prrAhoJ,~>
+JcFm4rr at WMJcG?Ar;_EKL&]PLqu>K$o`Y41MZiVTq[E?2rsnu3lNd(grsA].rsA]Ws"==)s"O7'
+q[NQ9r?2+`s!%Cds!7Uks!Rgps!n%!s"+1&s"OI/s#0m:s#U0Cs$H`Ss%*/`s%iYms&f;,s(D at H
+s(q^Qs)S-`s*ap"s,R,Js.B=ds/5mus0)I0s186Es2G#`s3^krs4@;*s4mY2s5<q:s5X. at s6'FI
+s6]jUs7?9as7u]mfDYaIs8)cks7lWfrUp3_s763[s6p!UrTsRGs4mY(s3:Scs2G#Ss1eTHs1/0<
+s0Ma0s/Z0ss.TI^s-<VGs,$c/s*jums)\3Xs(_RIs(24>s'Pe2s'#G's&8qps%iYhs%<;]s$ZlR
+s$-NGs#U0=s#0m6s"aU/s"OI+r@\+%s"+1#s!n$ts!Rgnq^)1cq',b\q]PbXq]>VTq],PRr>P]d
+q#KZ0qgX1sc2[eDU]5i~>
+JcFm4rr at WMJcG?Ar;_EKL&]Psqu?Vls/5mrs/l=)s02O.s0D[2s0_m8s0r$<s186Bs1JBGs$crX
+s%*/]s%<;as'Yk8s%`Sis%r_ms&/kqs&Aqss&T/$s&f;(s'#G,s'5S0s'G_4s'Yk8s'l"<s().@
+s(;4Bs(M at Fs(_LJs(qXNrGMXRs)A!Ys)e3^rHA3bs*4KfrHnQlrI+Wns*sutqgnd!s+C1Wq[NQ8
+kD&S`s+:9+s/Z1$s/l$uq25'<rL<bUrLNt[rLa+_s.TIes.fUjs/,gos/>sus/c7&s0)I-s0Ma5
+s0r$Es24lTs2G#Ys3(Ggs3q#"s4[M/s53k9s5j:Ds6BXOs6p!Ws763_s7cQjSc/Tas7QE]s6K^L
+s6'FDs5X.;s5!_/s4@;#s3^kms3:Sds2Y/Ws1nZJs186=s0_m5s0;U.s0)I)s/c7$rMogqrM]ao
+s/,aks.oUgs.]Icqk3bWqk!hYrLEbSrL2K/opGdYq#KISJcF!prrAhoJ,~>
+JcFm4rr at WMJcG?Ar;_EKL&]PLqu>K$s"aO/q_\=qs*+K#s#0m9s#C$?s#g<Fs$-NKs$?TNs$ZlU
+s%!)^s%WMgs%iYkrDESmrDWYps&T/$s&oA*s',M/s'G_4s'Yk8s'l"<s()(>s(;:Ds(M at Fs(_LJ
+s(q^Ps).dRrG_^Ts)S'Zs)e9`s*4Qhs7ZKes7lQgs82iol[A5Ns*F]oqg\-ds+:9'qh4j#s+^K-
+s+p]3s,-i7s,?u;s,R,?s,d8Ds-3PLs-WhTs-s%Ys.KCes.o[ks/,gos/>sts/Z1%s0_m at s1eTM
+s24lTs2P)[s2tAcs3g_ss4dS/s5*e6s5O(=s5j:Ds6BXOs7$'[s7ZKgs8:LIs8;ons7u]is7ZEa
+s7H?^s7--Xs6fjPs69REs5F"8s5!_0o at j5rs4%(rs3CYfs2tA]s2=rSs1eTGs1&*;s0_m6s0D[/
+s0)I)s/H$rs/#aks.]Ods.97\s-itTs-E\Ls-*JGs,d8As,R&;rJ^]5s,-c3rJ:9)pP/X#qh4j!
+q1A?lpON&>l%&Y\JcF!prrAhoJ,~>
+JcFm4rr at WMJcG3=r;_EKL]>hPrVu24oDeCgs"XNjN<JhVpC.!0r<DEioa(R#s""+#s"47(q(V[c
+ruM+\ru_7`r?;1bs!.Ohr?hOms!dsus"47)s"aU3s#9s<s#^6Es$?ZPs$m#[s%NGjs&f;.s'l"B
+s(hXQs)e9cs*ap&s-<VQs.B=ds/5mts02O1s186Os3L_ls3gqrs4./$s4[M/s5<q:s5a4As6'FG
+s6K^Qs7--]s7cQig\q0Ms82ims7lWgs7QEas7?3Zs6p!Us6TdOs69RFs5<q1s3gqls2k;[s2"`L
+s1A<@s0_m4s/uC%s.o[ds-WhLs,?u4s+12ss*+K_s)%dLs(24?s'Yk4s&oA&s&8qps%r_is%<;^
+s$m#Us$?ZLs#g<As#9s8s"j[1s"OC)r@\+%s""+!s![mpr?_Cfr?M1`q'#\Zr?(nXq&TDRq&B22
+jad)TJcF!prrAhoJ,~>
+JcFm4rr at WMJcG3=r;_EKL]>i"rVunoqkjCns/l=)s02O.s0D[2oDeCgs"XO_s%iYks&&_ms&8qs
+s&K)"s&]5&rE9/(s',M.s'>Y2s'Pe6s'bq:s'u(>s(24Bs(D:Ds(VFHs(hRLs)%^PrGV^Ts)J'Z
+s)\3^rHA3brHS?fs*F]ls*XcnrI4crrIFcrs+9tRr=.eAonWR!s/Q+"s/c7&q6'O]q3q8OrLEhW
+s.91]s.KCcs.fUis/#ams/5mrs/Q+#s/uC+s0D[2s0_m9s1/0Es1nZPs2Y/_s3L_os4@;*s5!_5
+s5X. at s60LKs6fpWs763^s7QEds7u]ks88Yjs8)cis763Ws6BXJs5s at Bs5F"8s4dS+s4..ts3L_g
+s2b5Zs2+fNs1JBDs1/0=s0_m6s0D[0s0)I*s/l=%rMoaos/>mos/,aks.o[is.]IcrLinWs.97]
+s.'+YpR9d'pR(gXg\ud(c2[eDU]5i~>
+JcFm4rr at WMJcG3=r;_EKL]>hPrVu24oDei#s(2.BrG)@Js6fo4s#'g7s#9s<s#g<ErBL<IrB^HM
+s$QfTs$m#Ys%35`s%WGfs%r_mrDW_qs&K)"s&]5&s&oA+s'5S0s'Pe6s'bq:s'u(>rFPq?s(M at F
+s(_RLs(qXNs).dRs)@pVs)S'ZrH/!\s7$'Zs7QEcrV?Kjl[A/Ls*FEhomm!ls+:9'q1Sd%rJ(?-
+s+p]3s,-i8s,I&=s,[2As,m>Fs-3PKs-EVMs.'+^s/#ams/5mqs/H$us/Z1$s0;U9s1SHIs1nZO
+s24lUs2P)\s4$_qs4dS0s5<q:s5a4As6'FGs6K^Qs7--]s7cQig\q0Ms82ims7lWgs7QEas7?3Z
+s6p!Us6TdOs69RIs5s at Bs5O(:s5*e2o at j5ts475!s3Uejs2tA^s24lPs1SHCs0hs6s0D[0s0)I)
+s/Z1!s/5mns.o[hs.KC`s.'+Ys-`nRs-E\Ks-!DEs,d8As,R&;rJ^]5s,-c3rJ:9)qhFp#rIk'#
+q1AEnq1/>Bjad)TJcF!prrAhoJ,~>
+JcFm4rr at WMJcG3=r;_EKL]>hPrVu24oDeCgs"XNjN<JhVpC.!0r<DEioa(R#s""+#s"47(q(V[c
+ruM+\ru_7`r?;1bs!.Ohr?hOms!dsus"47)s"aU3s#9s<s#^6Es$?ZPs$m#[s%NGjs&f;.s'l"B
+s(hXQs)e9cs*ap&s-<VQs.B=ds/5mts02O1s186Os3L_ls3gqrs4./$s4[M/s5<q:s5a4As6'FG
+s6K^Qs7--]s7cQig\q0Ms82ims7lWgs7QEas7?3Zs6p!Us6TdOs69RFs5<q1s3gqls2k;[s2"`L
+s1A<@s0_m4s/uC%s.o[ds-WhLs,?u4s+12ss*+K_s)%dLs(24?s'Yk4s&oA&s&8qps%r_is%<;^
+s$m#Us$?ZLs#g<As#9s8s"j[1s"OC)r@\+%s""+!s![mpr?_Cfr?M1`q'#\Zr?(nXq&TDRq&B22
+jad)TJcF!prrAhoJ,~>
+JcFm4rr at WMJcG3=r;_EKL]>i"rVunoqkjCns/l=)s02O.s0D[2oDeCgs"XO_s%iYks&&_ms&8qs
+s&K)"s&]5&rE9/(s',M.s'>Y2s'Pe6s'bq:s'u(>s(24Bs(D:Ds(VFHs(hRLs)%^PrGV^Ts)J'Z
+s)\3^rHA3brHS?fs*F]ls*XcnrI4crrIFcrs+9tRr=.eAonWR!s/Q+"s/c7&q6'O]q3q8OrLEhW
+s.91]s.KCcs.fUis/#ams/5mrs/Q+#s/uC+s0D[2s0_m9s1/0Es1nZPs2Y/_s3L_os4@;*s5!_5
+s5X. at s60LKs6fpWs763^s7QEds7u]ks88Yjs8)cis763Ws6BXJs5s at Bs5F"8s4dS+s4..ts3L_g
+s2b5Zs2+fNs1JBDs1/0=s0_m6s0D[0s0)I*s/l=%rMoaos/>mos/,aks.o[is.]IcrLinWs.97]
+s.'+YpR9d'pR(gXg\ud(c2[eDU]5i~>
+JcFm4rr at WMJcG3=r;_EKL]>hPrVu24oDei#s(2.BrG)@Js6fo4s#'g7s#9s<s#g<ErBL<IrB^HM
+s$QfTs$m#Ys%35`s%WGfs%r_mrDW_qs&K)"s&]5&s&oA+s'5S0s'Pe6s'bq:s'u(>rFPq?s(M at F
+s(_RLs(qXNs).dRs)@pVs)S'ZrH/!\s7$'Zs7QEcrV?Kjl[A/Ls*FEhomm!ls+:9'q1Sd%rJ(?-
+s+p]3s,-i8s,I&=s,[2As,m>Fs-3PKs-EVMs.'+^s/#ams/5mqs/H$us/Z1$s0;U9s1SHIs1nZO
+s24lUs2P)\s4$_qs4dS0s5<q:s5a4As6'FGs6K^Qs7--]s7cQig\q0Ms82ims7lWgs7QEas7?3Z
+s6p!Us6TdOs69RIs5s at Bs5O(:s5*e2o at j5ts475!s3Uejs2tA^s24lPs1SHCs0hs6s0D[0s0)I)
+s/Z1!s/5mns.o[hs.KC`s.'+Ys-`nRs-E\Ks-!DEs,d8As,R&;rJ^]5s,-c3rJ:9)qhFp#rIk'#
+q1AEnq1/>Bjad)TJcF!prrAhoJ,~>
+JcFm4rr at WMJcG'9r;_EKMuV=Vqu?8:li6VarA"*SPm$[^oaLj0qZc-epB^d2s""+#s"4%sq],PT
+r>tt\ruh=bs!%Ifs!7Ujs!Ians!dsts"47(s"aU2s#0m;s#^6Ds$6TNs$crXs%NGhs&]5+s'u(@
+s(_ROs)e9ds*k!(s-3POs.B=ds/5mus02O1s186Ks31Mls4%)!s4@;(s4[M.s5*e6s5O(>s5s at E
+s69RMs6p!Ys7QEes81^Ps8;ons7u]hs7ZKbs7?9]s7$'Ws6fpSs6K^Ms60LDs53k1s474ts3:Sc
+s2G#Rs1JBBs0_m4s0)I's/>sms.'+Us,d87s+:9#s*F]fs)A!Ss(D at As'Yk4s'#G(s&B"rs%iYh
+s%<;^s$m#Us$?ZKs#g<Bs#L*<s#'g5s"aU.s"FC(r at 7apr?qUlr?_Cfr?M7bq'#\Zq]GbXq&TDR
+ru:b6q\n^Lo7)>kc2[eDU]5i~>
+JcFm4rr at WMJcG'9r;_EKMuV>(qu?Dfs/uC+li6VarA"*Ss&/kqrD`ess&T/$s&f;(s'#A*s'5S0
+s'G_4s'Yk8s'l"<s(). at s(;:Ds(M at Fs(_LJs(qXNrGMXRrG_dVs)S-\s)e9`rHA3bs*4Qhs*F]l
+rI"Wns*jorrIFcroaLj0s+TEdpP8d0s/H$us/YtppR1iGrL<bUrLNt[rLa+_s.TIfs.o[ks/,go
+s/H$us/c7's02O/s0Vg7s1&*?s1JBHs2+fVs3(Ggs3q#"s4dS1s5F"<s6'FHs6TdSs763_s7ZKe
+s7u]ls88Yjs82ijs7?9Zs6K^Ls6'FDs5O(:s5!_.s474us3L_gs2b5Zs2+fOs1eTIs1A<Bs1&*;
+s0_m5s0;U.s0)I)s/c7$rMogqrM]aos/,aks.oUgs.]Oes.K=_s./bNopXd+qj at 0Zqj?.;JcF!p
+rrAhoJ,~>
+JcFm4rr at WMJcG'9r;_EKMuV=Vqu?8:li6urs(D at Fs(VLJs(hZ%s7-&)s).jTs#U0Cs$$<Es$6TM
+s$QfSs$crWs%!)\s%EAds%`Sis%r_mrDW_qs&K)"s&]5&rE9/)s'5S1s'Pe7s'l"<s(). at s(;4B
+s(M at Fs(_RLs(q^Ps).dRrG_^Ts)S'Zs)e3^s6fpUs7$'Zs7QEcs7lP?m="ANs(;.Xo76^hs+:3%
+qh4p%s+^K-s+p]4s,6o9s,I&=s,d8Cs-!>Es-3PKs-NbSs.97crMT[os/H$us/Z1%s0Ma:s1JBG
+s1eTMs2+fSs2G#Zs3L_qp"KH$s5*e6s5O(>s5s at Es69RMs6p!Ys7QEes81^Ps8;ons7u]hs7ZKb
+s7?9]s7$'Ws6fpSs6K^Ms60LGrT4(?s5X.<s53k4s4d/!s4IA%s3gqls2=rTs2"`Ls186>s0Vg2
+s0)I)s/c7#s/>sqs/#ajs.TIbs.01Zs-`nSs-E\LrKI8Es,m>Cs,[2?rJgc7rJU]5rJCK/q1np'
+q1\d#qh+]rq18Qrq#KH*o7)>kc2[eDU]5i~>
+JcFm4rr at WMJcG'9r;_EKMuV=Vqu?8:li6VarA"*SPm$[^oaLj0qZc-epB^d2s""+#s"4%sq],PT
+r>tt\ruh=bs!%Ifs!7Ujs!Ians!dsts"47(s"aU2s#0m;s#^6Ds$6TNs$crXs%NGhs&]5+s'u(@
+s(_ROs)e9ds*k!(s-3POs.B=ds/5mus02O1s186Ks31Mls4%)!s4@;(s4[M.s5*e6s5O(>s5s at E
+s69RMs6p!Ys7QEes81^Ps8;ons7u]hs7ZKbs7?9]s7$'Ws6fpSs6K^Ms60LDs53k1s474ts3:Sc
+s2G#Rs1JBBs0_m4s0)I's/>sms.'+Us,d87s+:9#s*F]fs)A!Ss(D at As'Yk4s'#G(s&B"rs%iYh
+s%<;^s$m#Us$?ZKs#g<Bs#L*<s#'g5s"aU.s"FC(r at 7apr?qUlr?_Cfr?M7bq'#\Zq]GbXq&TDR
+ru:b6q\n^Lo7)>kc2[eDU]5i~>
+JcFm4rr at WMJcG'9r;_EKMuV>(qu?Dfs/uC+li6VarA"*Ss&/kqrD`ess&T/$s&f;(s'#A*s'5S0
+s'G_4s'Yk8s'l"<s(). at s(;:Ds(M at Fs(_LJs(qXNrGMXRrG_dVs)S-\s)e9`rHA3bs*4Qhs*F]l
+rI"Wns*jorrIFcroaLj0s+TEdpP8d0s/H$us/YtppR1iGrL<bUrLNt[rLa+_s.TIfs.o[ks/,go
+s/H$us/c7's02O/s0Vg7s1&*?s1JBHs2+fVs3(Ggs3q#"s4dS1s5F"<s6'FHs6TdSs763_s7ZKe
+s7u]ls88Yjs82ijs7?9Zs6K^Ls6'FDs5O(:s5!_.s474us3L_gs2b5Zs2+fOs1eTIs1A<Bs1&*;
+s0_m5s0;U.s0)I)s/c7$rMogqrM]aos/,aks.oUgs.]Oes.K=_s./bNopXd+qj at 0Zqj?.;JcF!p
+rrAhoJ,~>
+JcFm4rr at WMJcG'9r;_EKMuV=Vqu?8:li6urs(D at Fs(VLJs(hZ%s7-&)s).jTs#U0Cs$$<Es$6TM
+s$QfSs$crWs%!)\s%EAds%`Sis%r_mrDW_qs&K)"s&]5&rE9/)s'5S1s'Pe7s'l"<s(). at s(;4B
+s(M at Fs(_RLs(q^Ps).dRrG_^Ts)S'Zs)e3^s6fpUs7$'Zs7QEcs7lP?m="ANs(;.Xo76^hs+:3%
+qh4p%s+^K-s+p]4s,6o9s,I&=s,d8Cs-!>Es-3PKs-NbSs.97crMT[os/H$us/Z1%s0Ma:s1JBG
+s1eTMs2+fSs2G#Zs3L_qp"KH$s5*e6s5O(>s5s at Es69RMs6p!Ys7QEes81^Ps8;ons7u]hs7ZKb
+s7?9]s7$'Ws6fpSs6K^Ms60LGrT4(?s5X.<s53k4s4d/!s4IA%s3gqls2=rTs2"`Ls186>s0Vg2
+s0)I)s/c7#s/>sqs/#ajs.TIbs.01Zs-`nSs-E\LrKI8Es,m>Cs,[2?rJgc7rJU]5rJCK/q1np'
+q1\d#qh+]rq18Qrq#KH*o7)>kc2[eDU]5i~>
+JcFm4rr at WMJcFp5qZ)3IOoO$^qu?D>jo=u[rA!gKSHSThrsSK.rsei0jTkSes!dsKrI=Wnq],JR
+ruV+\ruh=br?D7es!@[ls!Rgps!n%"s"==+s"j[4s#C$>s#pBIs$H`Rs%*/as&&ers'#G2s(24E
+s)%dVs*4Qms+UK6s-WhXs.fUls/c7)s0Vg:s1\NNs2b5bs4%)%rS%;+s5!_4s5F"<s5j:Cs6'FI
+s6]jUs7?9as8(dSs8;oos7u]is7ZKcs7?9]s7--Xs6fpRs6K^Ms60LGs5X.9s4RG&s3^kks3(G_
+s2+fMs1/0;s0D[.s/Z0us/#ajs-s%Ls+LE's*t&rs*4Qcs)7pPs(;:?s'Pe1s&oA&s&8qps%iYg
+s%35\s$QfPs$-NHs#g<Cs#L*<s#'g3s"==&q^_[rr at .aps!Rgnr?_Cfr?M7bq]Yn\q]GbXr>khV
+q#L at 4pDWLNl[OKcci="FU]5i~>
+JcFm4rr at WMJcFp5qZ)3IOoO%0qu?\ms/,aks/+oXoa1ROnHo.ps&]5&s&oA*s',G,s'>Y2s'Pe6
+s'bq:s'u(>s(24Bs(D at Fs(VFHs(hRLs)%^PrGV^TrGhjXrH&!\s)n?bs*+Kfs*=Qhs*OcnrI+]q
+rIFcrrsSK.rsf!^iJ.;drJ(?Ms*s_ at o9oKEqj[VUrLNt[rLa+_s.TIfs.o[ks/,gos/H%!s/c7'
+s02O/s0Vg7s1&*?s1JBGs2"`Ts2tAes3gqus4[M1s5O(?s60LKs6]jUs7?9as7lWjs8/Mgs82ij
+s7?9[s6TdMs5s at Bs5F"8s4mY-s4..ts3L_hs2k;]s2G#Us2"`Ms1SHEs186 at s0r$9s0Vg3s0;U-
+s/uC(s/Z*uql0UorMT[mrMBOis.fUgs.KC_q4.&GpR:33rL!B\o9e51JcF'rrrAhoJ,~>
+JcFm4rr at WMJcFp5qZ)3IOoO$^qu?D>jo>?ls(MFHs(_LJs7$'[rGDRPrGV^Ys*"EhrBL<Is$?ZP
+s$ZlUs%!)[s%35`s%NGes%iYks&&_ns&K)"rE'#$s&oA*rEK;,s'G_4s'bq;s(). at s(;4Bs(MFH
+s(_LJs(q^Ps).dRs)@pVs)S'ZrH/'^s6]jSrUBjXs7H?as7lP>rI"3bm=,(brrN(Jo76^hqh"d!
+rIk-'rJ(?-s+p]3s,-i7s,?u;s,[2As,m>Es-*JIs-E\Ps-itXs.KCfs/5mqs/H$us/Z1&s02O3
+s1A<Ds1\NKs2"`Qs2=rWs2b5_s3:Sks47)$s4dS0s53k8s5X. at s5s@Es6BXOs7$'[s7ZKhj8K#U
+s82ils7lWfs7QE`s763[s6p!Us6TdOs6BXJs6'FDs5a.=qr7Y6s5*e2o at j5ts4%(krP8HJs1\NF
+s1&*:s0D[.s/l=%s/H$ss/5mns.o[hs.KC_s-s%Vs-N\Ls-3PIs-!DEs,d8As,R&;qi(K3s,-i5
+qhY''rJ(3'rIk'#q1AQrq#KB(l[OKcci="FU]5i~>
+JcFm4rr at WMJcFp5qZ)3IOoO$^qu?D>jo=u[rA!gKSHSThrsSK.rsei0jTkSes!dsKrI=Wnq],JR
+ruV+\ruh=br?D7es!@[ls!Rgps!n%"s"==+s"j[4s#C$>s#pBIs$H`Rs%*/as&&ers'#G2s(24E
+s)%dVs*4Qms+UK6s-WhXs.fUls/c7)s0Vg:s1\NNs2b5bs4%)%rS%;+s5!_4s5F"<s5j:Cs6'FI
+s6]jUs7?9as8(dSs8;oos7u]is7ZKcs7?9]s7--Xs6fpRs6K^Ms60LGs5X.9s4RG&s3^kks3(G_
+s2+fMs1/0;s0D[.s/Z0us/#ajs-s%Ls+LE's*t&rs*4Qcs)7pPs(;:?s'Pe1s&oA&s&8qps%iYg
+s%35\s$QfPs$-NHs#g<Cs#L*<s#'g3s"==&q^_[rr at .aps!Rgnr?_Cfr?M7bq]Yn\q]GbXr>khV
+q#L at 4pDWLNl[OKcci="FU]5i~>
+JcFm4rr at WMJcFp5qZ)3IOoO%0qu?\ms/,aks/+oXoa1ROnHo.ps&]5&s&oA*s',G,s'>Y2s'Pe6
+s'bq:s'u(>s(24Bs(D at Fs(VFHs(hRLs)%^PrGV^TrGhjXrH&!\s)n?bs*+Kfs*=Qhs*OcnrI+]q
+rIFcrrsSK.rsf!^iJ.;drJ(?Ms*s_ at o9oKEqj[VUrLNt[rLa+_s.TIfs.o[ks/,gos/H%!s/c7'
+s02O/s0Vg7s1&*?s1JBGs2"`Ts2tAes3gqus4[M1s5O(?s60LKs6]jUs7?9as7lWjs8/Mgs82ij
+s7?9[s6TdMs5s at Bs5F"8s4mY-s4..ts3L_hs2k;]s2G#Us2"`Ms1SHEs186 at s0r$9s0Vg3s0;U-
+s/uC(s/Z*uql0UorMT[mrMBOis.fUgs.KC_q4.&GpR:33rL!B\o9e51JcF'rrrAhoJ,~>
+JcFm4rr at WMJcFp5qZ)3IOoO$^qu?D>jo>?ls(MFHs(_LJs7$'[rGDRPrGV^Ys*"EhrBL<Is$?ZP
+s$ZlUs%!)[s%35`s%NGes%iYks&&_ns&K)"rE'#$s&oA*rEK;,s'G_4s'bq;s(). at s(;4Bs(MFH
+s(_LJs(q^Ps).dRs)@pVs)S'ZrH/'^s6]jSrUBjXs7H?as7lP>rI"3bm=,(brrN(Jo76^hqh"d!
+rIk-'rJ(?-s+p]3s,-i7s,?u;s,[2As,m>Es-*JIs-E\Ps-itXs.KCfs/5mqs/H$us/Z1&s02O3
+s1A<Ds1\NKs2"`Qs2=rWs2b5_s3:Sks47)$s4dS0s53k8s5X. at s5s@Es6BXOs7$'[s7ZKhj8K#U
+s82ils7lWfs7QE`s763[s6p!Us6TdOs6BXJs6'FDs5a.=qr7Y6s5*e2o at j5ts4%(krP8HJs1\NF
+s1&*:s0D[.s/l=%s/H$ss/5mns.o[hs.KC_s-s%Vs-N\Ls-3PIs-!DEs,d8As,R&;qi(K3s,-i5
+qhY''rJ(3'rIk'#q1AQrq#KB(l[OKcci="FU]5i~>
+VZ6Yr_uK`:JcC<$iW&iVJcCr6fm`hurI3`*oa1ROkm=*fo`apqrrr3&jTk`%rI=hJs*sipru:hT
+q]5\Xru_1^ruq=bs!.Ois!Ians!dsts"+1%s"OI.s#'g8s#U0Bs$-NMs$m#[s%WMks&T/'s'G_:
+s(VLLs)S-as*k!$s,-i at s-s%]s/#aqs0)I1s1/0Ds24lXs31Mis3q"us4IA*s4mY2s5<q9s5X.@
+s6'FHs6TdSs763_s7lWis82ioli$eYs7lWgs7ZKbs7?9\s7$'Vs6]jPs6BXKs6'FEs5O(8s4RG&
+s3gqms2tA^s24lOs1A<>s0;U,s/Z1!s/5mes-NbGs+C?%s*aoos*4Qes)\3Ys(hXHs'l"7s'5S,
+s&K(ts%r_js%EA`s$m#Us$?ZLs#pBDs#9s7s"XO-s"FC(s"+$ts!n$tr@%[ns!I[jr?V=dr?D7b
+ruh1\q&]PVq#L at 5q&AuFoml4TJcF'rrrAhoJ,~>
+VZ6Yr_uK`:JcC<$iW&iVJcCr6fqnTGrMAKQoa1ROkm@;ks'#G,s'5S0s'GY2s'Yk8s'l"<s().@
+s(;:Ds(MFHs(_LJs(qXNs).dRrG_dVrGqjXs)e9`s*"Eds*4KfrHeKjrI"WpqgeWro*kMMiJ.;t
+rVlhHp\s]NqjRDOs.'%Ys.97_s.K=as.fUis/#ams/>sss/Z1%s/uC+s0D[3s0hs;s186Cs1eTM
+s2G#[s3:Sks4./&s5!_5s5a4Cs6K^Rs7--^s7cQis88Shs82iks7QE^s6fpQs60LDs5F"6s4dS+
+s4..ts3L_hs2tA_s2P)Xs24lQs1eTIs1A<Bs1/0>s0hs8s0Ma1s02O,s/l=&s/Z*urMfaos/5mo
+s.o[hs.B1ZpRLiEpR:?7q#KZHg\ud(ci="FU]5i~>
+VZ6Yr_uK`:JcC<$iW&iVJcCr6fm`hurI3`*s().ArFu:Hs(hZ&s762,qel at Ns)\3bs*aots+13'
+s$H`Qs$crWs%!)\s%<;as%NGfs%iSjs&8qss&K)"s&]5&rE9/(s',M.rE]G0s'Pe7s'l"=s(;4B
+s(MFHs(_LJs(qXNrGV^TrGhjXrH&!\rH8/-s6p!Ws7--\s7H?arHeEhs*XKfnUC:`rrN.LnUULf
+rIXp!rIk-'rJ(9+s+p]3s,-i8s,I&=s,[2As,m>Fs-<VNs-`nVs.01^s.TIis/5mqs/Q+#s/uC+
+s0D[7s1A<Es1eTLs2+fRs2G#Ys2k;as3CYks3q"us4IA*s4mY2s5<q9s5X. at s6'FHs6TdSs763_
+s7lWis82ioli$eYs7lWgs7ZKbs7?9\s7$'Vs6]jPs6BXKs6'FEs5a4?s5O"9qr%G1s5!_0pY,Yp
+s3CYarOr6Ds1A<Bs1/0=s0Vg3s0)I(s/Q*us/5mns.o[is.TIbs.01Ys-WhPs-<PIs-*JGs,m>C
+s,[2?rJg]5s,6i5s,$W/q1np's+UK+qh+Wpq#LAEiIL*@JcF'rrrAhoJ,~>
+VZ6Yr_uK`:JcC<$iW&iVJcCr6fm`hurI3`*oa1ROkm=*fo`apqrrr3&jTk`%rI=hJs*sipru:hT
+q]5\Xru_1^ruq=bs!.Ois!Ians!dsts"+1%s"OI.s#'g8s#U0Bs$-NMs$m#[s%WMks&T/'s'G_:
+s(VLLs)S-as*k!$s,-i at s-s%]s/#aqs0)I1s1/0Ds24lXs31Mis3q"us4IA*s4mY2s5<q9s5X.@
+s6'FHs6TdSs763_s7lWis82ioli$eYs7lWgs7ZKbs7?9\s7$'Vs6]jPs6BXKs6'FEs5O(8s4RG&
+s3gqms2tA^s24lOs1A<>s0;U,s/Z1!s/5mes-NbGs+C?%s*aoos*4Qes)\3Ys(hXHs'l"7s'5S,
+s&K(ts%r_js%EA`s$m#Us$?ZLs#pBDs#9s7s"XO-s"FC(s"+$ts!n$tr@%[ns!I[jr?V=dr?D7b
+ruh1\q&]PVq#L at 5q&AuFoml4TJcF'rrrAhoJ,~>
+VZ6Yr_uK`:JcC<$iW&iVJcCr6fqnTGrMAKQoa1ROkm@;ks'#G,s'5S0s'GY2s'Yk8s'l"<s().@
+s(;:Ds(MFHs(_LJs(qXNs).dRrG_dVrGqjXs)e9`s*"Eds*4KfrHeKjrI"WpqgeWro*kMMiJ.;t
+rVlhHp\s]NqjRDOs.'%Ys.97_s.K=as.fUis/#ams/>sss/Z1%s/uC+s0D[3s0hs;s186Cs1eTM
+s2G#[s3:Sks4./&s5!_5s5a4Cs6K^Rs7--^s7cQis88Shs82iks7QE^s6fpQs60LDs5F"6s4dS+
+s4..ts3L_hs2tA_s2P)Xs24lQs1eTIs1A<Bs1/0>s0hs8s0Ma1s02O,s/l=&s/Z*urMfaos/5mo
+s.o[hs.B1ZpRLiEpR:?7q#KZHg\ud(ci="FU]5i~>
+VZ6Yr_uK`:JcC<$iW&iVJcCr6fm`hurI3`*s().ArFu:Hs(hZ&s762,qel at Ns)\3bs*aots+13'
+s$H`Qs$crWs%!)\s%<;as%NGfs%iSjs&8qss&K)"s&]5&rE9/(s',M.rE]G0s'Pe7s'l"=s(;4B
+s(MFHs(_LJs(qXNrGV^TrGhjXrH&!\rH8/-s6p!Ws7--\s7H?arHeEhs*XKfnUC:`rrN.LnUULf
+rIXp!rIk-'rJ(9+s+p]3s,-i8s,I&=s,[2As,m>Fs-<VNs-`nVs.01^s.TIis/5mqs/Q+#s/uC+
+s0D[7s1A<Es1eTLs2+fRs2G#Ys2k;as3CYks3q"us4IA*s4mY2s5<q9s5X. at s6'FHs6TdSs763_
+s7lWis82ioli$eYs7lWgs7ZKbs7?9\s7$'Vs6]jPs6BXKs6'FEs5a4?s5O"9qr%G1s5!_0pY,Yp
+s3CYarOr6Ds1A<Bs1/0=s0Vg3s0)I(s/Q*us/5mns.o[is.TIbs.01Ys-WhPs-<PIs-*JGs,m>C
+s,[2?rJg]5s,6i5s,$W/q1np's+UK+qh+Wpq#LAEiIL*@JcF'rrrAhoJ,~>
+W;lerp&FO^huE]VJcC<$h>dERJcD):pO<,`jaR1.rI3Z(oa1ROisD[fpBCR)oaLd&pBL-mq&'&J
+qg\VHs*sorq]#DPr>khXru_7`ruq=bs!.Ohs!Ians!dsts"+1%s"OI-s"sa7s#L*As$-NMs$m#\
+s%WMks&T/(s'Yk;s(MFKs)J'_s*k!$s,-i<s-WhWs.]Oks/c7*s0hs?s2"`Us31Mhs3^krs475'
+s4dS/s5*e6s5O(>s5j:Ds6BXOs7$'Zs7H?as7cQgs7u]ls8;Qgs82ils7cKcs7H?_s763Zs6p!T
+s6TdOs60LFs5a4=s5<q6s4[M(s3gqns3(G`s2=rQs1JBBs0_m2s/l=%s-<VGs,6o3s+13"s*aoo
+s*=Wfs)e9]s).jPs(D at As'Pe2s&f;%s&8qos%`Ses%*/Ys$?ZJs#U0=s#'g4s"aU/s"OI+s"47%
+r@@grs!dmps!Rgnr?_Cfs!.OfruqCbru^nTqZ- at 1q&AoDqgdXTJcF'rrrAhoJ,~>
+W;lerp&FO^huE]VJcC<$h>dERJcD):pSIn at je_qUrMAEOoa1ROisGZhs'>Y2s'P_4s'bk8s'u(>
+s(24Bs(D at Fs(VLJrG;LNrGMXRrG_^TrGqpZrH/'^rHA-as*=Qhs*O]lrI+QnrsSK.q1\-hop>RT
+s*skDn!X-Cq4%>Qs.01]s.B=as.TIerM0Chs/,gps/H%!s/l=)s02O/s0Vg7s1&*@s1SHIs2"`R
+s2b5as3Ueqs4IA+s5*e7s5j:Fs6TdTs7?9bs8/eorVZWks8)cks7cQcs7--Vs6BXIs5X.;s5!_.
+s475!s3Ueks31Mcs2b5[s2=rTs2"`Ms1\NGs186 at s1&*<s0_m6s0D[0s0)I*s/l7#s/Q*us/>sq
+s.o[hs.K=^q47>On!j-An!X%QiL&C!JcF'rrrAhoJ,~>
+W;lerp&FO^huE]VJcC<$h>dERJcD):pO<,`jaR1.rI3Z(s(;:DrFu:Hs(q`*s7Q8,qeuLVs*F]n
+s+(-$s+LE-s,-i9s%!)[s%35_s%EAds%`Sis&&eos&8qss&K)"s&]5&s&oA*rEK;,s'>S0rEoS4
+s'bq;s(24Cs(MFHs(_LJs(qXNs).jTs)A!XrGqjXs)e9`s6TdRrUBjXs7?9`s*=WjrHnKjpO2R\
+pOE2Ds*sorrI=WnrIOitrIb'%rIt3)rJ1E/s,$c5s,6o:s,R,?s,d8Cs-!DHs-NbRs-s%[s.KCd
+s.o[ms/H%!s/l=)s0;U1s0_m<s1JBGs1eTMs2+fSs2P)Zs2tAcs3L_ms4%)"s4RG,s4mY2s5<q:
+s5a4As6'FIs6]jUs763^s7QEds7lWis82iop&4pfs7u]hrV$9`s7?9]s7$'Ws6]jQs6K^Ls60LF
+s5a4?s5O(;qqq;-qq_;-qqD(is24lPs1\HCrOMm:s0r$:s0Vg2s0)I(s/Q*ts/,gms.fUgs.KC`
+s.'+Xs-WhPs-<PIs-*JGs,m>Cs,[2?rJg]5s,6i5s,$]1q1o!)s+UK+s+BurqZ-AAmst at dqgdXT
+JcF'rrrAhoJ,~>
+W;lerp&FO^huE]VJcC<$h>dERJcD):pO<,`jaR1.rI3Z(oa1ROisD[fpBCR)oaLd&pBL-mq&'&J
+qg\VHs*sorq]#DPr>khXru_7`ruq=bs!.Ohs!Ians!dsts"+1%s"OI-s"sa7s#L*As$-NMs$m#\
+s%WMks&T/(s'Yk;s(MFKs)J'_s*k!$s,-i<s-WhWs.]Oks/c7*s0hs?s2"`Us31Mhs3^krs475'
+s4dS/s5*e6s5O(>s5j:Ds6BXOs7$'Zs7H?as7cQgs7u]ls8;Qgs82ils7cKcs7H?_s763Zs6p!T
+s6TdOs60LFs5a4=s5<q6s4[M(s3gqns3(G`s2=rQs1JBBs0_m2s/l=%s-<VGs,6o3s+13"s*aoo
+s*=Wfs)e9]s).jPs(D at As'Pe2s&f;%s&8qos%`Ses%*/Ys$?ZJs#U0=s#'g4s"aU/s"OI+s"47%
+r@@grs!dmps!Rgnr?_Cfs!.OfruqCbru^nTqZ- at 1q&AoDqgdXTJcF'rrrAhoJ,~>
+W;lerp&FO^huE]VJcC<$h>dERJcD):pSIn at je_qUrMAEOoa1ROisGZhs'>Y2s'P_4s'bk8s'u(>
+s(24Bs(D at Fs(VLJrG;LNrGMXRrG_^TrGqpZrH/'^rHA-as*=Qhs*O]lrI+QnrsSK.q1\-hop>RT
+s*skDn!X-Cq4%>Qs.01]s.B=as.TIerM0Chs/,gps/H%!s/l=)s02O/s0Vg7s1&*@s1SHIs2"`R
+s2b5as3Ueqs4IA+s5*e7s5j:Fs6TdTs7?9bs8/eorVZWks8)cks7cQcs7--Vs6BXIs5X.;s5!_.
+s475!s3Ueks31Mcs2b5[s2=rTs2"`Ms1\NGs186 at s1&*<s0_m6s0D[0s0)I*s/l7#s/Q*us/>sq
+s.o[hs.K=^q47>On!j-An!X%QiL&C!JcF'rrrAhoJ,~>
+W;lerp&FO^huE]VJcC<$h>dERJcD):pO<,`jaR1.rI3Z(s(;:DrFu:Hs(q`*s7Q8,qeuLVs*F]n
+s+(-$s+LE-s,-i9s%!)[s%35_s%EAds%`Sis&&eos&8qss&K)"s&]5&s&oA*rEK;,s'>S0rEoS4
+s'bq;s(24Cs(MFHs(_LJs(qXNs).jTs)A!XrGqjXs)e9`s6TdRrUBjXs7?9`s*=WjrHnKjpO2R\
+pOE2Ds*sorrI=WnrIOitrIb'%rIt3)rJ1E/s,$c5s,6o:s,R,?s,d8Cs-!DHs-NbRs-s%[s.KCd
+s.o[ms/H%!s/l=)s0;U1s0_m<s1JBGs1eTMs2+fSs2P)Zs2tAcs3L_ms4%)"s4RG,s4mY2s5<q:
+s5a4As6'FIs6]jUs763^s7QEds7lWis82iop&4pfs7u]hrV$9`s7?9]s7$'Ws6]jQs6K^Ls60LF
+s5a4?s5O(;qqq;-qq_;-qqD(is24lPs1\HCrOMm:s0r$:s0Vg2s0)I(s/Q*ts/,gms.fUgs.KC`
+s.'+Xs-WhPs-<PIs-*JGs,m>Cs,[2?rJg]5s,6i5s,$]1q1o!)s+UK+s+BurqZ-AAmst at dqgdXT
+JcF'rrrAhoJ,~>
+WrMqrp&FO^huE]VJcC<$g&M!NJcD5>pO<,`kC2%_oa1ROh$L1dq$$^)pC-j$o*54"nJM9Dq1&DF
+s*sutru1\Pr>b\TruV1^ruh=br?D7ds!@[ls!Rgqs""+#s"47(s"aU2s#9s=s#g<Gs$H`Ss%35a
+s&&ess'#G0s'u(@s(hXRs*"Eis+LE/s,R,Ds-itZs.o[os/uC.s1&*Cs24lVs2k;cs3Ueqs4@;)
+s4dS0s53k8s5O(>s5s at Fs6K^Ps6fpVs7--\s7H?as7cQgs8)cmqu-Qks7cKarU^'[s7$'Ws6fpR
+s69RHs5j:@s53k3s4dS-s4RG's3gqns3(G`s2G#Ss1SHDs0hs6s0)Hes,6o5s+^Q,s+:9$s*aon
+s*4Qfs)e9]s)7pRs(VLFs'u(9s'5S,s&T.us%iYfs%!)Ws$-NFs#C$;s#0m7s"sa2s"XO-s"=='
+r at It!s!msrr@%[ns!I[js!.Ofq]PbXruUt9ruV+ZpDj,Nm2H"Th1("UdJs4HU]5i~>
+WrMqrp&FO^huE]VJcC<$g&M!NJcD5>pSInAkG?f1oa1ROh$O$ds'Pe6rF,_8rF>k<s(24Bs(D at F
+s(VLJs(hXNs)%dRrGVXRrGhjXrH%pZs)n?bs*+Eds*=WjrHnKjrI+Wnr<r?.onE'nn!EkLs*sqF
+s-W8CrL3POs.'%Ys.97_s.KCcs.]Ogs.o[ks/5mqs/Q+"s/l=)s02O/s0Vg7s1/0As1SHIs2"`R
+s2Y/_s3L_os4./&s4mY3s5X.As6BXOs7--^rV6Egs8)cm\c)R+rVQWkrV?KgrV-?cs7QE_s6p!S
+s69RGs5X.:s4mY-s475!s3Ueks3(Gas2Y/Ys24lRs2"`Ms1\NGs186 at s1&*<s0hs8s0Ma2s02O,
+s/l=%s/>sqs/#ajs.TIcqk*hYq47>OnXK9Aq3h$YqjH?/g\ud(dJs4HU]5i~>
+WrMqrp&FO^huE]VJcC<$g&M!NJcD5>pO<,`kC2%_s'u(ArFu:Hs(hZ)s7H>.qel:Ls)n?hs*juu
+s+:9)s+p]6s,R, at s-*ISs%<;as%WMgs%iYls&8qss&K)"rE'#$s&oA*s',M.rE]A.rEoS4rF,_9
+s(24Cs(MFIrG2FLrGDRPs)7pVrGhjXs)\-\s6TdQs6p!Ws7--[s7H>:rHeEhs*XQhmsb"\rrN.L
+rIFcpq1/?nrIY!#rIk-'rJ(?-rJ:K1s,-i7s,?u;s,[2As,m>Es-*JKs-WhTs.01^s.TIfs/#an
+s/Q+#s0)I.s0Vg7s1&*@s1SHHs1nZNs24lUs2P)[s3(Ges3Ueos4./$s4[M-s5!_4s5F";s5a4B
+s60LKs6]jSs7$'Ys7?9_s7QEds7lWjs82]ls8)cirUg'[s763Zs6p!Us6]jPs6BXJs6'FCrSd_5
+s5*Y/qqV)'rS%:fot(16s0qs8rO)[4s0D[/s/uC's/H$rs/,gls.fUfs.KC`s.'+Ws-NbOs-<VK
+rKI8Es,m>Cs,[2?rJgc7rJUW3s,$]1s+gW/s+U,us+:%HrIX]nmst:bs+&pTJcF-trrAhoJ,~>
+WrMqrp&FO^huE]VJcC<$g&M!NJcD5>pO<,`kC2%_oa1ROh$L1dq$$^)pC-j$o*54"nJM9Dq1&DF
+s*sutru1\Pr>b\TruV1^ruh=br?D7ds!@[ls!Rgqs""+#s"47(s"aU2s#9s=s#g<Gs$H`Ss%35a
+s&&ess'#G0s'u(@s(hXRs*"Eis+LE/s,R,Ds-itZs.o[os/uC.s1&*Cs24lVs2k;cs3Ueqs4@;)
+s4dS0s53k8s5O(>s5s at Fs6K^Ps6fpVs7--\s7H?as7cQgs8)cmqu-Qks7cKarU^'[s7$'Ws6fpR
+s69RHs5j:@s53k3s4dS-s4RG's3gqns3(G`s2G#Ss1SHDs0hs6s0)Hes,6o5s+^Q,s+:9$s*aon
+s*4Qfs)e9]s)7pRs(VLFs'u(9s'5S,s&T.us%iYfs%!)Ws$-NFs#C$;s#0m7s"sa2s"XO-s"=='
+r at It!s!msrr@%[ns!I[js!.Ofq]PbXruUt9ruV+ZpDj,Nm2H"Th1("UdJs4HU]5i~>
+WrMqrp&FO^huE]VJcC<$g&M!NJcD5>pSInAkG?f1oa1ROh$O$ds'Pe6rF,_8rF>k<s(24Bs(D at F
+s(VLJs(hXNs)%dRrGVXRrGhjXrH%pZs)n?bs*+Eds*=WjrHnKjrI+Wnr<r?.onE'nn!EkLs*sqF
+s-W8CrL3POs.'%Ys.97_s.KCcs.]Ogs.o[ks/5mqs/Q+"s/l=)s02O/s0Vg7s1/0As1SHIs2"`R
+s2Y/_s3L_os4./&s4mY3s5X.As6BXOs7--^rV6Egs8)cm\c)R+rVQWkrV?KgrV-?cs7QE_s6p!S
+s69RGs5X.:s4mY-s475!s3Ueks3(Gas2Y/Ys24lRs2"`Ms1\NGs186 at s1&*<s0hs8s0Ma2s02O,
+s/l=%s/>sqs/#ajs.TIcqk*hYq47>OnXK9Aq3h$YqjH?/g\ud(dJs4HU]5i~>
+WrMqrp&FO^huE]VJcC<$g&M!NJcD5>pO<,`kC2%_s'u(ArFu:Hs(hZ)s7H>.qel:Ls)n?hs*juu
+s+:9)s+p]6s,R, at s-*ISs%<;as%WMgs%iYls&8qss&K)"rE'#$s&oA*s',M.rE]A.rEoS4rF,_9
+s(24Cs(MFIrG2FLrGDRPs)7pVrGhjXs)\-\s6TdQs6p!Ws7--[s7H>:rHeEhs*XQhmsb"\rrN.L
+rIFcpq1/?nrIY!#rIk-'rJ(?-rJ:K1s,-i7s,?u;s,[2As,m>Es-*JKs-WhTs.01^s.TIfs/#an
+s/Q+#s0)I.s0Vg7s1&*@s1SHHs1nZNs24lUs2P)[s3(Ges3Ueos4./$s4[M-s5!_4s5F";s5a4B
+s60LKs6]jSs7$'Ys7?9_s7QEds7lWjs82]ls8)cirUg'[s763Zs6p!Us6]jPs6BXJs6'FCrSd_5
+s5*Y/qqV)'rS%:fot(16s0qs8rO)[4s0D[/s/uC's/H$rs/,gls.fUfs.KC`s.'+Ws-NbOs-<VK
+rKI8Es,m>Cs,[2?rJgc7rJUW3s,$]1s+gW/s+U,us+:%HrIX]nmst:bs+&pTJcF-trrAhoJ,~>
+YlF at rp&Fsje,TFJJcC<$ec5RJJcD;@q0r>bkC2%_oa1ROfa4ndqZZd'q[E3&q$-(#pOE2DrI=V]
+q]#JRruM%Zru_7`ruq=bs!7Ujs!Iaos!dsus"+1&s"OI.s"sa7s#L*As$-NMs$crYs%NGhs&K)&
+s'G_6s(24Es).jXs*=Wns+LE0s,d8Hs-s%]s/#aqs0)I3s1JBGs1nZOs2P)]s3CYls4./%s4mY2
+s5<q9s5X. at s5s@Fs69RKs6TdQs6p!Ws7--\s7H?bs7cEds7ZKas7-!Us6p!Us6K^Ls6'FDs5O(9
+s4dS+s475#s3q"rs3^kls3(G_s2=rRs1SH at s/uC!s.KC^s-3PAs+p]0s+LE(s+(,ts*F]hs)\3\
+s)A!Ts(_RIs().=s'G_/s&K(qs%NGas$crSs$-NHs#U0>s#9s9s#'g5s"aU/s"OI*s"41#s""+!
+r at .aps!Rgns!7Oer?;%\q#L.1r>k\Rr>Y&@s+&pTJcF-trrAhoJ,~>
+YlF at rp&Fsje,TFJJcC<$ec5RJJcD;@q5++DkG?f1oa1ROfa7[cs'Ye6s'l"<rFGq>rFZ(Bs(MFI
+s(hXNs)%dRs)7jTrGhdVrH&!\rH8-`s*+KfrH\EhrHnKjrI+]pq$['.mtL"mp\t2BrVlV[opP]G
+q4%DSs.01]rLa%^s.]Ogs.o[ks/5mqs/Q+"s/l=)s02O/s0Vg8s1/0As1SHIs2+fSs2P)]s3:Sj
+s3q#"s4[M/s5<q;s6'FJs7#jVs7QEcs7lWis8)cm`Voi7s82ims7uWgs7cQes7QEarU^'[s7$'U
+s6BXIs5a4=s53k3s4RG's3q"ps3CYfs2k;]s2G#Us2"`Ns1eTIs1JBDs1/*;rO)[3s0;U,s/Q*s
+s/#ajs.]Cas.K7]rLWhUq4-uEpR:mXo9nL'g\ud(dJs4HU]5i~>
+YlF at rp&Fsje,TFJJcC<$ec5RJJcD;@q0r>bkC2%_s(;:ErFu:Hs(hZ,s7c>,rGV^Ts*"Ehs*juu
+s+C?+s,$c7s,[2Bs-*JIs-NaZrD!;fs&&eps&B"us&T/$s&f;(s'#A*s'5M.s'GY2s'Ye6s'kq:
+s(24Bs(MFHs(hXNrGDRPrGV^Ts)J'Zs)\3^rTsRPs6p!Ws7--\rH\?frHnKjpO2R\pOE2Domc^d
+rIOp!rIb'%rIt3)s+gQ/s,$c5s,6o9s,I&=s,d8Cs-!DGs-<VNs-`nWs.97`s.TIfs.o[ms/Q+#
+s0)I-s0Vg8s1/0As1SHIs1nZOs2=rVs2Y/]s31Mgs3^kqs475&s4[M.s5*e6s5F"<s5j:Cs60LI
+s6BXNs6]jTs7$'Ys7?9_s7ZKeqt^9cs7?9\qsaXSs6fpRs6K^Ms69RHs5j:?s53e3rS at M/qqM#%
+s4..rs3(G_s2P)To=Ft2s0_g3rNcI-s/uC's/Q*ts/,gms.o[hs.TIbs.01Zs-`nRrK[DIrKI8E
+s,m>Cs,[2?rJgc7rJU]5s,$c3s+^Q-qh4j!q#L)>pOVd`q1&Eph1("UdJs4HU]5i~>
+YlF at rp&Fsje,TFJJcC<$ec5RJJcD;@q0r>bkC2%_oa1ROfa4ndqZZd'q[E3&q$-(#pOE2DrI=V]
+q]#JRruM%Zru_7`ruq=bs!7Ujs!Iaos!dsus"+1&s"OI.s"sa7s#L*As$-NMs$crYs%NGhs&K)&
+s'G_6s(24Es).jXs*=Wns+LE0s,d8Hs-s%]s/#aqs0)I3s1JBGs1nZOs2P)]s3CYls4./%s4mY2
+s5<q9s5X. at s5s@Fs69RKs6TdQs6p!Ws7--\s7H?bs7cEds7ZKas7-!Us6p!Us6K^Ls6'FDs5O(9
+s4dS+s475#s3q"rs3^kls3(G_s2=rRs1SH at s/uC!s.KC^s-3PAs+p]0s+LE(s+(,ts*F]hs)\3\
+s)A!Ts(_RIs().=s'G_/s&K(qs%NGas$crSs$-NHs#U0>s#9s9s#'g5s"aU/s"OI*s"41#s""+!
+r at .aps!Rgns!7Oer?;%\q#L.1r>k\Rr>Y&@s+&pTJcF-trrAhoJ,~>
+YlF at rp&Fsje,TFJJcC<$ec5RJJcD;@q5++DkG?f1oa1ROfa7[cs'Ye6s'l"<rFGq>rFZ(Bs(MFI
+s(hXNs)%dRs)7jTrGhdVrH&!\rH8-`s*+KfrH\EhrHnKjrI+]pq$['.mtL"mp\t2BrVlV[opP]G
+q4%DSs.01]rLa%^s.]Ogs.o[ks/5mqs/Q+"s/l=)s02O/s0Vg8s1/0As1SHIs2+fSs2P)]s3:Sj
+s3q#"s4[M/s5<q;s6'FJs7#jVs7QEcs7lWis8)cm`Voi7s82ims7uWgs7cQes7QEarU^'[s7$'U
+s6BXIs5a4=s53k3s4RG's3q"ps3CYfs2k;]s2G#Us2"`Ns1eTIs1JBDs1/*;rO)[3s0;U,s/Q*s
+s/#ajs.]Cas.K7]rLWhUq4-uEpR:mXo9nL'g\ud(dJs4HU]5i~>
+YlF at rp&Fsje,TFJJcC<$ec5RJJcD;@q0r>bkC2%_s(;:ErFu:Hs(hZ,s7c>,rGV^Ts*"Ehs*juu
+s+C?+s,$c7s,[2Bs-*JIs-NaZrD!;fs&&eps&B"us&T/$s&f;(s'#A*s'5M.s'GY2s'Ye6s'kq:
+s(24Bs(MFHs(hXNrGDRPrGV^Ts)J'Zs)\3^rTsRPs6p!Ws7--\rH\?frHnKjpO2R\pOE2Domc^d
+rIOp!rIb'%rIt3)s+gQ/s,$c5s,6o9s,I&=s,d8Cs-!DGs-<VNs-`nWs.97`s.TIfs.o[ms/Q+#
+s0)I-s0Vg8s1/0As1SHIs1nZOs2=rVs2Y/]s31Mgs3^kqs475&s4[M.s5*e6s5F"<s5j:Cs60LI
+s6BXNs6]jTs7$'Ys7?9_s7ZKeqt^9cs7?9\qsaXSs6fpRs6K^Ms69RHs5j:?s53e3rS at M/qqM#%
+s4..rs3(G_s2P)To=Ft2s0_g3rNcI-s/uC's/Q*ts/,gms.o[hs.TIbs.01Zs-`nRrK[DIrKI8E
+s,m>Cs,[2?rJgc7rJU]5s,$c3s+^Q-qh4j!q#L)>pOVd`q1&Eph1("UdJs4HU]5i~>
+YlF at rp&Fsje,TFJJcC<$dJs.FJcDGDq0r>bl$h1_pBgdQdg<DbqZZ^%r=&?&jV[Z?rrN.LpDWoJ
+r>bbVruV1^ruh=bs!%Ifs!7Ujs!Rgps!n%"s"47(s"OI)s"FC,s"sa<s$-NLs$QfUs%EAfs&B#$
+s'5S3s'u(As(_RPs*+Kjs+13)s,I&?s-<VQs.B=gs02O2s0r$<s186Ds1eTOs2Y/_s3L_ss4dS0
+s53k7s5O(;s5O(>s5j:Cs60LIs6K^Os6fpUs7$'Zs7?9\s763^s763Ys6fdOs6TdOs60LDs5O(5
+s4RG)s4%(ss3^kms3CYhs3(G`s24lOs186<s02O)s/#ais.97[s-WhEs+p]0s+LE(s+(,ts*F]h
+s)e9[s)%dOs(MFEs'Yk1s&K(rs%WMbs%*/Zs$ZlRs$-NGs#U0>s#9s9s#'g5s"j[0s"OI+s"41#
+s""+!s!dspr?V=dq]c%`qZ-L8pE'2Pq],JPlPfeRgOFeSe,TFJU]5i~>
+YlF at rp&Fsje,TFJJcC<$dJs.FJcDGDq5++Dl(ur1pBgdQdg?%_rF5e:s()(>s(;4Bs(MFHs(_RL
+s(q^Ps)7jTrGhdVs)\-\rH8'_s*4QhrHeEhrI"Qls*j\Mr=&@Qjd5Z>s*t(JpR(Q?rL3VQs.'%Y
+s.97_s.KCcs.]Ogs.o[es.KCcs.fUos/Z+#s0)I.s0Vg8s1/0As1SHIs2+fRs2P)^s3:Sis3gqt
+s4@;*s5*e7s5j:Jp$i"Os7?9_s7ZKi`Voi6s7u]is7cQerUp3_s7?9]s7--Ys6p!Us6K^Ks5j:>
+rSIS0s4RG's3q"qs3CYfs2k;]s2G#Us1nZLs1\NHs1A<Bs1/*;s0Ma/s/c7"s/#OdrM'7as.K1[
+s.8tUq4-uEs-ifbl'^Ltg&?R&e,TFJU]5i~>
+YlF at rp&Fsje,TFJJcC<$dJs.FJcDGDq0r>bl$h1_s(D at GqeH0#s7Z8+qeuLRs*+Khs*aous+LE-
+s,6o:s,[2As-!DHs-E\Ps-`m]s%iYks&&eps&K#!s&f;(s'#G,s'5M.rEfM2s'Ye6s'kq:rFGq>
+s(D at Fs(VLKs(q^PrGMXRs)A!Xs)S'Zs6K^Ps6fjTs7--\rH\EhrHnKjpO2R\omcuBomc^drIOp!
+rIb'%rIt3)s+gW1rJCK1s,6o:s,R,?s,m>Es-*JIs-E\Ps-s%Zs.97`s.TIes.o[ms/H%"s0)I-
+rO2a8s186Cs1\NKs2+fSs2P)[s2tAds3L_ns4%)#s4RG,s5!_4s5<q:s5F";s5a4As5s at Fs69RL
+s6TdRs6p!Ws763]s7--[s7H?^s6p!UqsFFMs6K^Ms60LGs5Eq7s5!_1rS.;)s4RG)s475"s3gqp
+s3L_gs2Y/ZrPefTo=Ft4s0hs7s0D[/s0)I*s/c7#s/>sprMBOhs.]Ods.97]s-s%Us-EVKs-3PI
+rK at 2Cs,d8As,R&;rJ^c6s+pW.qh=p#qZ-MGo7Hdhm=>"^s+&jRJcF4!rrAhoJ,~>
+YlF at rp&Fsje,TFJJcC<$dJs.FJcDGDq0r>bl$h1_pBgdQdg<DbqZZ^%r=&?&jV[Z?rrN.LpDWoJ
+r>bbVruV1^ruh=bs!%Ifs!7Ujs!Rgps!n%"s"47(s"OI)s"FC,s"sa<s$-NLs$QfUs%EAfs&B#$
+s'5S3s'u(As(_RPs*+Kjs+13)s,I&?s-<VQs.B=gs02O2s0r$<s186Ds1eTOs2Y/_s3L_ss4dS0
+s53k7s5O(;s5O(>s5j:Cs60LIs6K^Os6fpUs7$'Zs7?9\s763^s763Ys6fdOs6TdOs60LDs5O(5
+s4RG)s4%(ss3^kms3CYhs3(G`s24lOs186<s02O)s/#ais.97[s-WhEs+p]0s+LE(s+(,ts*F]h
+s)e9[s)%dOs(MFEs'Yk1s&K(rs%WMbs%*/Zs$ZlRs$-NGs#U0>s#9s9s#'g5s"j[0s"OI+s"41#
+s""+!s!dspr?V=dq]c%`qZ-L8pE'2Pq],JPlPfeRgOFeSe,TFJU]5i~>
+YlF at rp&Fsje,TFJJcC<$dJs.FJcDGDq5++Dl(ur1pBgdQdg?%_rF5e:s()(>s(;4Bs(MFHs(_RL
+s(q^Ps)7jTrGhdVs)\-\rH8'_s*4QhrHeEhrI"Qls*j\Mr=&@Qjd5Z>s*t(JpR(Q?rL3VQs.'%Y
+s.97_s.KCcs.]Ogs.o[es.KCcs.fUos/Z+#s0)I.s0Vg8s1/0As1SHIs2+fRs2P)^s3:Sis3gqt
+s4@;*s5*e7s5j:Jp$i"Os7?9_s7ZKi`Voi6s7u]is7cQerUp3_s7?9]s7--Ys6p!Us6K^Ks5j:>
+rSIS0s4RG's3q"qs3CYfs2k;]s2G#Us1nZLs1\NHs1A<Bs1/*;s0Ma/s/c7"s/#OdrM'7as.K1[
+s.8tUq4-uEs-ifbl'^Ltg&?R&e,TFJU]5i~>
+YlF at rp&Fsje,TFJJcC<$dJs.FJcDGDq0r>bl$h1_s(D at GqeH0#s7Z8+qeuLRs*+Khs*aous+LE-
+s,6o:s,[2As-!DHs-E\Ps-`m]s%iYks&&eps&K#!s&f;(s'#G,s'5M.rEfM2s'Ye6s'kq:rFGq>
+s(D at Fs(VLKs(q^PrGMXRs)A!Xs)S'Zs6K^Ps6fjTs7--\rH\EhrHnKjpO2R\omcuBomc^drIOp!
+rIb'%rIt3)s+gW1rJCK1s,6o:s,R,?s,m>Es-*JIs-E\Ps-s%Zs.97`s.TIes.o[ms/H%"s0)I-
+rO2a8s186Cs1\NKs2+fSs2P)[s2tAds3L_ns4%)#s4RG,s5!_4s5<q:s5F";s5a4As5s at Fs69RL
+s6TdRs6p!Ws763]s7--[s7H?^s6p!UqsFFMs6K^Ms60LGs5Eq7s5!_1rS.;)s4RG)s475"s3gqp
+s3L_gs2Y/ZrPefTo=Ft4s0hs7s0D[/s0)I*s/c7#s/>sprMBOhs.]Ods.97]s-s%Us-EVKs-3PI
+rK at 2Cs,d8As,R&;rJ^c6s+pW.qh=p#qZ-MGo7Hdhm=>"^s+&jRJcF4!rrAhoJ,~>
+W;lerp&Fsje,TFJJcC<$c2[Y at JcDSHqgSPdl$h1_pBgdQcO%&`rrr!%qZYdmomcuBoc!]Hq],PT
+ruV1^ruh=bs!%Ifs!@[ls!dsts!Iaos!dsus"47(s"XO1s#0m?s$-NMs$m#[s%`Sms&]5(s'>Y3
+s'bq>s).j[s*Xius,$c7s,d8Ds-<VNs/>t!s/uC*s0D[3s0hs<s1\NQs31Mls4IA*s4mY2s53e0
+s5*e6s5O(=s5a4As6'FGs6BXMrTsRKs6K^Os6]jSs6KRIrTX at Gs6'F<s475!s3^kns3CYgs3(Ga
+s2Y/Ys2=rRs1JB>s02O(s/,gms.fUes.01Xs-E\Is+p]0s+LE's*t&ss*Ocis)e9[s)%dJs'Yk1
+s&K(qs%WMds%<;_s%!)Ys$QfPs$-NGs#L*=s#9s9s#'g5s"aU/s"FC)s"47$s!dsqs!I[jr?V=d
+q#L:7r?(tZpDs&Lq]"]:gOFeSe,TFJU]5i~>
+W;lerp&Fsje,TFJJcC<$c2[Y at JcDSHqka=Gl(ur1pBgdQcO'V]rFGq>rFZ(BrFl.Ds(_RLs(q^P
+s)7pVrGhjXrH%pZs)n?bs*+Eds*=Wjqg83fs*aJHqh3dlp&=u at o9f-;rL3\SrLEnYs.97_s.KC^
+rLNt[s.B=bs.]Ogs.o[ps/Z1%s0)I-s0Vg8s1/0As1JBFs1\NLs2Y/`s3Ueps4./$s4RG,s5!_1
+s6KFGrTjLOs7?9bs80Y2s8)cjs7QEas7?3[s7-'Vs6]jQs6K^Ls5j:?s53e1s4dS,s475!s3^kl
+s3(Gas2Y/Xs2+fOs1\NHs1JBDs1/0;s0;U+s/H$qs/#[iq4mn_rLs1_qk*hYq47>OpRCsYqjRDM
+c'[8bJcF4!rrAhoJ,~>
+W;lerp&Fsje,TFJJcC<$c2[Y at JcDSHqgSPdl$h1_s(D at GrG)@Js7?9cq/6(Js)J'^s*=Qjs+C?+
+s,$c6s,?u<s,m>Fs-3PLs-`nVs.'*as%iYls&8qus&f5&rEK;,rE]G0s'P_4s'bk8rF>k<rFQ"@
+s(D at Fs(VLJs(hXOs).dRs)A!Xs)S/'s6BXNs6fjTs7627rH\EhrHnKjq0h^\omcuBomcXbrIOp!
+rIb'%s+UK-qhP3-s,$]3s,6o9s,R,?s,d8Ds-*JIs-<VNs-itWs.'+\s.B=as.]Ohs/5mrs/c7*
+s0M[2s0hs;s186Ds1eTMs24lUs2b5`s3CYks3q"us4IA*s4mY2s53e0s5*e6s5O(=s5a4As6'FG
+s6BXMrTsRKs6K^Os6]jSs6KRIrTX at Gs6'F?rS.;)s4RG)rR_)#rRLqss3Ueks31Mbs2Y/ZrPefT
+rPSZOo=Ft2s0_m5s0;U-s/c7#s/H$rs/#[is.fUfs.KC`s.'+Xs-WhPs-<PIs-*JGs,m>Cs,[2?
+s,I&;s,-i4qhP-)rIt%Io7Qdhq17p`c[UNGe,TFJU]5i~>
+W;lerp&Fsje,TFJJcC<$c2[Y at JcDSHqgSPdl$h1_pBgdQcO%&`rrr!%qZYdmomcuBoc!]Hq],PT
+ruV1^ruh=bs!%Ifs!@[ls!dsts!Iaos!dsus"47(s"XO1s#0m?s$-NMs$m#[s%`Sms&]5(s'>Y3
+s'bq>s).j[s*Xius,$c7s,d8Ds-<VNs/>t!s/uC*s0D[3s0hs<s1\NQs31Mls4IA*s4mY2s53e0
+s5*e6s5O(=s5a4As6'FGs6BXMrTsRKs6K^Os6]jSs6KRIrTX at Gs6'F<s475!s3^kns3CYgs3(Ga
+s2Y/Ys2=rRs1JB>s02O(s/,gms.fUes.01Xs-E\Is+p]0s+LE's*t&ss*Ocis)e9[s)%dJs'Yk1
+s&K(qs%WMds%<;_s%!)Ys$QfPs$-NGs#L*=s#9s9s#'g5s"aU/s"FC)s"47$s!dsqs!I[jr?V=d
+q#L:7r?(tZpDs&Lq]"]:gOFeSe,TFJU]5i~>
+W;lerp&Fsje,TFJJcC<$c2[Y at JcDSHqka=Gl(ur1pBgdQcO'V]rFGq>rFZ(BrFl.Ds(_RLs(q^P
+s)7pVrGhjXrH%pZs)n?bs*+Eds*=Wjqg83fs*aJHqh3dlp&=u at o9f-;rL3\SrLEnYs.97_s.KC^
+rLNt[s.B=bs.]Ogs.o[ps/Z1%s0)I-s0Vg8s1/0As1JBFs1\NLs2Y/`s3Ueps4./$s4RG,s5!_1
+s6KFGrTjLOs7?9bs80Y2s8)cjs7QEas7?3[s7-'Vs6]jQs6K^Ls5j:?s53e1s4dS,s475!s3^kl
+s3(Gas2Y/Xs2+fOs1\NHs1JBDs1/0;s0;U+s/H$qs/#[iq4mn_rLs1_qk*hYq47>OpRCsYqjRDM
+c'[8bJcF4!rrAhoJ,~>
+W;lerp&Fsje,TFJJcC<$c2[Y at JcDSHqgSPdl$h1_s(D at GrG)@Js7?9cq/6(Js)J'^s*=Qjs+C?+
+s,$c6s,?u<s,m>Fs-3PLs-`nVs.'*as%iYls&8qus&f5&rEK;,rE]G0s'P_4s'bk8rF>k<rFQ"@
+s(D at Fs(VLJs(hXOs).dRs)A!Xs)S/'s6BXNs6fjTs7627rH\EhrHnKjq0h^\omcuBomcXbrIOp!
+rIb'%s+UK-qhP3-s,$]3s,6o9s,R,?s,d8Ds-*JIs-<VNs-itWs.'+\s.B=as.]Ohs/5mrs/c7*
+s0M[2s0hs;s186Ds1eTMs24lUs2b5`s3CYks3q"us4IA*s4mY2s53e0s5*e6s5O(=s5a4As6'FG
+s6BXMrTsRKs6K^Os6]jSs6KRIrTX at Gs6'F?rS.;)s4RG)rR_)#rRLqss3Ueks31Mbs2Y/ZrPefT
+rPSZOo=Ft2s0_m5s0;U-s/c7#s/H$rs/#[is.fUfs.KC`s.'+Xs-WhPs-<PIs-*JGs,m>Cs,[2?
+s,I&;s,-i4qhP-)rIt%Io7Qdhq17p`c[UNGe,TFJU]5i~>
+W;lerp&G$ls8Vfnh>dKTJcC<$a8c)<JcD_LqgSJbm=+$oomZW<q\[K_]*/- at oaB@go7-c at q\o&F
+ruCtXruV+\r?;1bruV1^ruqCds!7Uks!Rgqr at 7gus"==+s"j[4s#pBJs$ZlXs%NGhs&B#!s&f;*
+s'G_6s(D at Ns*4Qns+:3%s+LE+s,-iJs/,gqs/c7)s0)I,s0Vg9s1nZUs3:Sms4RG,s5!_+s4./$
+s4[M.s5*e5s5F";s5X.?s5s at Es5a4>s5X.?s5s at ErTO4Cs5s@Bs5O(:s4[M*s4..us3Ueks3:Sc
+s2P)Us1nZKs1SHDs0Vg0s/H$os.]Oes.KC`s-itTs-<VHs+p]0s+LE's*t&ss*Ocis)A!Ns'bq1
+s&K(ts%r_jrCd/^s%*/[s$crTs$?ZKs#^6As#C$;s#0m7s"sa2s"OI)s""*tr?qOjr?_7>s!.Oe
+ruh=`o,dWHq],JPnJ_'<gOFeSe,TFJU]5i~>
+W;lerp&G$ls8Vfnh>dKTJcC<$a8c)<JcD_Lqka=Hs,$->iW&q\s0)I,s0D[6s1&(ms$-NKs$?ZO
+s&]5's'!SPrFQ"@rFc.DrFu4FrG2FLs)%dRs)@pWrH&!\rH8-`s*+KfrH\Ehqg83frsJE,f9c+.
+s*sX-o9oQGrL<hWrKmPOs-`nUrL<hWrLNt[s.B=as.TIes/H%!s/uC+s0Ma5s1&*>s186Bs1SHH
+s24lYs3LAbs3gr.s6B4As7$'\s7cQi_u9W5s7u]hs7H?]s7$!Us6]jQs6K^Ms69RFs5O(9s4dS-
+rRq5&s4..us3^kls3(Gas2Y/Xs2+fOs1\NGs0r$4s/c7"s/>mos/,aks.oCas.]IcrLj%[rLWbS
+q4.6\s-rtUs-_-!op=G4JcF4!rrAhoJ,~>
+W;lerp&G$ls8Vfnh>dKTJcC<$a8c)<JcD_LqgSJbm=+$oomZorrA=O3s"saurHnEZqeuLRs)S-^
+s)e9bs*F]ms+:9(s+gW3s,R, at s-!DHs-NbRs-s%Ys.B=as%rYks&/kss'#G,s'5M.s'GY2s'Ye6
+s'kq:s()(>rFZ(Bs(MFHs(_RLs(q^Ps).dRs)A#!s5s at Fs6K^Ps7$'Ys*4Eds*F]lq0`-hmsakX
+s(;.XnUURhrIXp!rIk-'s+^Q/rJ:K1rJLW5s,?u;s,[2As,m>Fs-3PKs-E\Ps-`nUs.'+[s.B=a
+s.TIgs/5mus0)I,rNZC.s0_m9s1/0As1\HKs24lVs2tAes3^krs475's4dS0s475#s4@;)s4mY2
+s53k8s5O(=s5a4Bs6'FCs5O(=s5a4Bs6'@ErTF4Cs5a4>s5<M&s4@;#s3gqprQtSjs31Mcs2Y)X
+s2FrTs24fPs2"<<s1&*;s0Vg3s/l=%s/H$rs/#Ufs.]Oes.B=^s-s%Vs-NbOs-<PIs-*JGs,m>B
+s,I&:rJ:3'q#LGKqh4QnpO`9nnUS`2JcF4!rrAhoJ,~>
+W;lerp&G$ls8Vfnh>dKTJcC<$a8c)<JcD_LqgSJbm=+$oomZW<q\[K_]*/- at oaB@go7-c at q\o&F
+ruCtXruV+\r?;1bruV1^ruqCds!7Uks!Rgqr at 7gus"==+s"j[4s#pBJs$ZlXs%NGhs&B#!s&f;*
+s'G_6s(D at Ns*4Qns+:3%s+LE+s,-iJs/,gqs/c7)s0)I,s0Vg9s1nZUs3:Sms4RG,s5!_+s4./$
+s4[M.s5*e5s5F";s5X.?s5s at Es5a4>s5X.?s5s at ErTO4Cs5s@Bs5O(:s4[M*s4..us3Ueks3:Sc
+s2P)Us1nZKs1SHDs0Vg0s/H$os.]Oes.KC`s-itTs-<VHs+p]0s+LE's*t&ss*Ocis)A!Ns'bq1
+s&K(ts%r_jrCd/^s%*/[s$crTs$?ZKs#^6As#C$;s#0m7s"sa2s"OI)s""*tr?qOjr?_7>s!.Oe
+ruh=`o,dWHq],JPnJ_'<gOFeSe,TFJU]5i~>
+W;lerp&G$ls8Vfnh>dKTJcC<$a8c)<JcD_Lqka=Hs,$->iW&q\s0)I,s0D[6s1&(ms$-NKs$?ZO
+s&]5's'!SPrFQ"@rFc.DrFu4FrG2FLs)%dRs)@pWrH&!\rH8-`s*+KfrH\Ehqg83frsJE,f9c+.
+s*sX-o9oQGrL<hWrKmPOs-`nUrL<hWrLNt[s.B=as.TIes/H%!s/uC+s0Ma5s1&*>s186Bs1SHH
+s24lYs3LAbs3gr.s6B4As7$'\s7cQi_u9W5s7u]hs7H?]s7$!Us6]jQs6K^Ms69RFs5O(9s4dS-
+rRq5&s4..us3^kls3(Gas2Y/Xs2+fOs1\NGs0r$4s/c7"s/>mos/,aks.oCas.]IcrLj%[rLWbS
+q4.6\s-rtUs-_-!op=G4JcF4!rrAhoJ,~>
+W;lerp&G$ls8Vfnh>dKTJcC<$a8c)<JcD_LqgSJbm=+$oomZorrA=O3s"saurHnEZqeuLRs)S-^
+s)e9bs*F]ms+:9(s+gW3s,R, at s-!DHs-NbRs-s%Ys.B=as%rYks&/kss'#G,s'5M.s'GY2s'Ye6
+s'kq:s()(>rFZ(Bs(MFHs(_RLs(q^Ps).dRs)A#!s5s at Fs6K^Ps7$'Ys*4Eds*F]lq0`-hmsakX
+s(;.XnUURhrIXp!rIk-'s+^Q/rJ:K1rJLW5s,?u;s,[2As,m>Fs-3PKs-E\Ps-`nUs.'+[s.B=a
+s.TIgs/5mus0)I,rNZC.s0_m9s1/0As1\HKs24lVs2tAes3^krs475's4dS0s475#s4@;)s4mY2
+s53k8s5O(=s5a4Bs6'FCs5O(=s5a4Bs6'@ErTF4Cs5a4>s5<M&s4@;#s3gqprQtSjs31Mcs2Y)X
+s2FrTs24fPs2"<<s1&*;s0Vg3s/l=%s/H$rs/#Ufs.]Oes.B=^s-s%Vs-NbOs-<PIs-*JGs,m>B
+s,I&:rJ:3'q#LGKqh4QnpO`9nnUS`2JcF4!rrAhoJ,~>
+W;lerp]'[^huE]VJcC<$_uKZ8JcDeNrI4\dmsaI"m=+d4r>>21dg<blq$R-0r at un@o7-cXrrN!8
+o,I]Lr>knZru(hTru:tXruM+\ru_7as!%Igs!@Ujs!Rgqs""+$s"==*s"sa<s$-NNs%!)\s%WMj
+s&B#!s&oA,s'Pe8s(D at Ps*OcnrI+]qs+:9*s,6oMs/5gqrN#t$s0D[6s1\NPs3(Gjs4RG!s3CYl
+s3q"us4IA*s4mY1s5*e3s4mY/rS%;,s5!_4s5<q:rT!k7s5*e2q:bl#s4%(ss3L_hs2k;[s2"`K
+s1/0<s0D[,s/>sns.TIbs.97]s-s%Us-E\Ks,d8?s+^Q+s+13"s)e9Ys(D at Bs'Pe0s&T/!s&/km
+s%NGcs%<;_s%*/Zs$crTs$6TJs#^6 at s#C$;s"sa3s"OI*s""+!s!dsrr?qUlqZ-XAs!.Ofruq=`
+r?(PNq&T>Pq]#>LlP\f6pO7\nec5XLU]5i~>
+W;lerp]'[^huE]VJcC<$_uKZ8JcDeNrMBOJs+p-?kPtR^s/Z1$s/l=(s0)I-s0D[3s0_kis$$HI
+s$?ZOs&]5&s$crXs%*)[s%:`Hs(;4BrFl.Ds(_LJrG;@Js)A!Ys)\-\s)n?bs*+EdrH\?frHnKj
+q$R-0r at uojoD\cWs*sX-o9oWCrK[DKqj7>MrL*\Sqj[VUrLNt[s.B=bs/>sts/l=)s0;U1s0hs;
+s1/0As1SHHs1nZPs2arZs3Ueps4.)3qs"(Es6K^Os6p!Zs7ZKgs8:LIrVZ9cs82iks7QE`s7$'U
+s6TdOs6BXKs60LFs5X.:s4mY-s4I;%s475"s3gqos3CYfs2k;\s2=rSs0r$5s/Z*urMfaos/5gm
+s/#[iq4mn_rLs7aqk*bWq47PUqZ-Sas-ibOe!THfg\ud(ec5XLU]5i~>
+W;lerp]'[^huE]VJcC<$_uKZ8JcDeNrI4\dmsaI"m=,'krA=I1rI"E!rAXaprG_dXs)n?cs*Ocp
+s+(-&s+gW3s,I&>s,m>Gs-WhSs-s%Zs.B=cs.fTks&/eorD`f%s'>Y2rEoS4rF,_8rF>e:rFQ"@
+rFc.DrFu4Gs(q^Ps).jTs5O(=s5a4As6'FHs6]i1rHS9ds*F]lq0`-hnUC"Xs(;.XnUURhq1AQt
+s+LE+rJ(?-qhY9/s,-i7s,?u;s,R, at s,m>Es-3JIs-NbQs-`nUs-s%Zs.97_s.TIjs/c1$s/u=(
+s0;U1s0_m>q7lsGs2G#Zs31Mhs3q#"s4[M"s3CYls3q"us4IA*s4mY1s5*e3s4mY/rS%;,s5!_4
+s5<q:s5X.?s5O(:s5*e2n(Rfps475!s3Uejs3(Gbs2b/Ys2FrTs24fPs2"ZLs1e0:s0r$7s/uC%
+s/H$rs/#ajq4dn^s.B=^s-s%Vs-N\Ls-3PHs,m>Bs,I&9rJCK/rJ17MrJ(3'qh4Klq1AKpomk;:
+pO7\nec5XLU]5i~>
+W;lerp]'[^huE]VJcC<$_uKZ8JcDeNrI4\dmsaI"m=+d4r>>21dg<blq$R-0r at un@o7-cXrrN!8
+o,I]Lr>knZru(hTru:tXruM+\ru_7as!%Igs!@Ujs!Rgqs""+$s"==*s"sa<s$-NNs%!)\s%WMj
+s&B#!s&oA,s'Pe8s(D at Ps*OcnrI+]qs+:9*s,6oMs/5gqrN#t$s0D[6s1\NPs3(Gjs4RG!s3CYl
+s3q"us4IA*s4mY1s5*e3s4mY/rS%;,s5!_4s5<q:rT!k7s5*e2q:bl#s4%(ss3L_hs2k;[s2"`K
+s1/0<s0D[,s/>sns.TIbs.97]s-s%Us-E\Ks,d8?s+^Q+s+13"s)e9Ys(D at Bs'Pe0s&T/!s&/km
+s%NGcs%<;_s%*/Zs$crTs$6TJs#^6 at s#C$;s"sa3s"OI*s""+!s!dsrr?qUlqZ-XAs!.Ofruq=`
+r?(PNq&T>Pq]#>LlP\f6pO7\nec5XLU]5i~>
+W;lerp]'[^huE]VJcC<$_uKZ8JcDeNrMBOJs+p-?kPtR^s/Z1$s/l=(s0)I-s0D[3s0_kis$$HI
+s$?ZOs&]5&s$crXs%*)[s%:`Hs(;4BrFl.Ds(_LJrG;@Js)A!Ys)\-\s)n?bs*+EdrH\?frHnKj
+q$R-0r at uojoD\cWs*sX-o9oWCrK[DKqj7>MrL*\Sqj[VUrLNt[s.B=bs/>sts/l=)s0;U1s0hs;
+s1/0As1SHHs1nZPs2arZs3Ueps4.)3qs"(Es6K^Os6p!Zs7ZKgs8:LIrVZ9cs82iks7QE`s7$'U
+s6TdOs6BXKs60LFs5X.:s4mY-s4I;%s475"s3gqos3CYfs2k;\s2=rSs0r$5s/Z*urMfaos/5gm
+s/#[iq4mn_rLs7aqk*bWq47PUqZ-Sas-ibOe!THfg\ud(ec5XLU]5i~>
+W;lerp]'[^huE]VJcC<$_uKZ8JcDeNrI4\dmsaI"m=,'krA=I1rI"E!rAXaprG_dXs)n?cs*Ocp
+s+(-&s+gW3s,I&>s,m>Gs-WhSs-s%Zs.B=cs.fTks&/eorD`f%s'>Y2rEoS4rF,_8rF>e:rFQ"@
+rFc.DrFu4Gs(q^Ps).jTs5O(=s5a4As6'FHs6]i1rHS9ds*F]lq0`-hnUC"Xs(;.XnUURhq1AQt
+s+LE+rJ(?-qhY9/s,-i7s,?u;s,R, at s,m>Es-3JIs-NbQs-`nUs-s%Zs.97_s.TIjs/c1$s/u=(
+s0;U1s0_m>q7lsGs2G#Zs31Mhs3q#"s4[M"s3CYls3q"us4IA*s4mY1s5*e3s4mY/rS%;,s5!_4
+s5<q:s5X.?s5O(:s5*e2n(Rfps475!s3Uejs3(Gbs2b/Ys2FrTs24fPs2"ZLs1e0:s0r$7s/uC%
+s/H$rs/#ajq4dn^s.B=^s-s%Vs-N\Ls-3PHs,m>Bs,I&9rJCK/rJ17MrJ(3'qh4Klq1AKpomk;:
+pO7\nec5XLU]5i~>
+W;lerp](0lp](*jiW&oXJcC<$^]464JcDqRs*jhdnUBg(kC3..r>=u+eHs+rr<i?Tf,4%-ru(h;
+ru(bRo,IQBrtk\Pru(hTruD%ZruV1^ruqCdr?M7es!Rgqs""+#s"==*s"aU4s$$HKs$crYs%EAf
+s&/kts&oA,s'Pe8s(D at Ls)\-_s*=Wls+(-%s+p]@q5+%es/Z1's0Ma6s186Es2+fTs2k;bs3CYk
+s3gqss47/!s4%)!s4I)"s4mS/s4mS/s4d;%s4RG's3q"qs3CYfs2=rQs1SHBs0Vg/s/>sns.KC_
+s.'+YrL*\Os-*JFs,R,;s+^Q&s)%dPs(hXKs(24<s'5S*s&B"rs%r_js%EAas%35]s%!)Ys$ZlR
+s$6TJs#^6>s#'g4s"OI*s"47%s""+!s!daDs!@[js!.Idruq7^r?(PNq&TDRr>YDJlP\r:o6u8j
+ec5XLU]5i~>
+W;lerp](0lp](*jiW&oXJcC<$^]464JcDqRs/#aGs+^Q1nYPROs/5mqrMfgts/c7&s/uC+s0;U1
+s0Vg7s#g<Fs$-NLs$H`es&f:js%!)[rCQr\s%NGeeHu1frFu:HqeQ.HrGDLNs)7pXs)e3^rHA3b
+rHS9ds*FWjrI"PNq(_o8fpD7.s-Wh9o9fECq31cAs-<PKrKmPOqjIJQrL<hWrLNt[rLa+as/H%!
+s/uC+s0Ma5s0r$=s1A<Es1\NKs2"`Qs2Y/_s2tAbs3CYls3q#!s4RG7qrdqAs69RLs6]jTs763_
+s7lWkg\q0Ls7u]loDS^es7u]hs7H?]s6p!Qs69RIs6'FEs5X.:s4mY-rRUkrs3q"qs3L_is3(Ga
+s2"`>s0)I*s/l=%rMoaos/>mos/,aks.oCas.]IcrLj+]qk!hYq#LGarL3>Ge!THfg\ud(ec5XL
+U]5i~>
+W;lerp](0lp](*jiW&oXJcC<$^]464JcDqRs*jhdnUBg(kC3FerA=I1s*aopq_n1-s#Bt!s*4Qk
+s*t'"s+LE-s,-i8s,d8Es-E\Ps-itXs.97`s.]Ohs/#anrDW_qrDikus',M1s'Ye6rF5_8s()"<
+s(;:Ds(M at FrG)@Js(q^Ps).jTs5F"<s5a.?s5s?&s)e9bs*4Kfs*FWjqgA9homZ at Zs(;.Xm=>.d
+rIY!#s+LE+rJ(-'s,$c5s,6o9s,I&=s,[2Bs-!DGs-3PKs-E\Os-WhTs-s%Ys.97`s.fUms/Gss
+s/Z1$rN6+'s180Aq7H[As2+fRs2=rWqoA`Ys31Mgs3Ueos4%)"rRLqts4./%pY,Z&s5!_4s5<q7
+s5!_0le;Bjs4%(ss3L_hs2b5[rPefTrPSZPs2"ZLrP/BHpU^C8s0r$7s0)I's/>sqs/#aks.]=_
+s.KC`s.'+Xs-WhPs-*JFs,d8 at s,?o7s,-c3q#LAKqhG''q1S9jq1AQromkA<o6u8jec5XLU]5i~>
+W;lerp](0lp](*jiW&oXJcC<$^]464JcDqRs*jhdnUBg(kC3..r>=u+eHs+rr<i?Tf,4%-ru(h;
+ru(bRo,IQBrtk\Pru(hTruD%ZruV1^ruqCdr?M7es!Rgqs""+#s"==*s"aU4s$$HKs$crYs%EAf
+s&/kts&oA,s'Pe8s(D at Ls)\-_s*=Wls+(-%s+p]@q5+%es/Z1's0Ma6s186Es2+fTs2k;bs3CYk
+s3gqss47/!s4%)!s4I)"s4mS/s4mS/s4d;%s4RG's3q"qs3CYfs2=rQs1SHBs0Vg/s/>sns.KC_
+s.'+YrL*\Os-*JFs,R,;s+^Q&s)%dPs(hXKs(24<s'5S*s&B"rs%r_js%EAas%35]s%!)Ys$ZlR
+s$6TJs#^6>s#'g4s"OI*s"47%s""+!s!daDs!@[js!.Idruq7^r?(PNq&TDRr>YDJlP\r:o6u8j
+ec5XLU]5i~>
+W;lerp](0lp](*jiW&oXJcC<$^]464JcDqRs/#aGs+^Q1nYPROs/5mqrMfgts/c7&s/uC+s0;U1
+s0Vg7s#g<Fs$-NLs$H`es&f:js%!)[rCQr\s%NGeeHu1frFu:HqeQ.HrGDLNs)7pXs)e3^rHA3b
+rHS9ds*FWjrI"PNq(_o8fpD7.s-Wh9o9fECq31cAs-<PKrKmPOqjIJQrL<hWrLNt[rLa+as/H%!
+s/uC+s0Ma5s0r$=s1A<Es1\NKs2"`Qs2Y/_s2tAbs3CYls3q#!s4RG7qrdqAs69RLs6]jTs763_
+s7lWkg\q0Ls7u]loDS^es7u]hs7H?]s6p!Qs69RIs6'FEs5X.:s4mY-rRUkrs3q"qs3L_is3(Ga
+s2"`>s0)I*s/l=%rMoaos/>mos/,aks.oCas.]IcrLj+]qk!hYq#LGarL3>Ge!THfg\ud(ec5XL
+U]5i~>
+W;lerp](0lp](*jiW&oXJcC<$^]464JcDqRs*jhdnUBg(kC3FerA=I1s*aopq_n1-s#Bt!s*4Qk
+s*t'"s+LE-s,-i8s,d8Es-E\Ps-itXs.97`s.]Ohs/#anrDW_qrDikus',M1s'Ye6rF5_8s()"<
+s(;:Ds(M at FrG)@Js(q^Ps).jTs5F"<s5a.?s5s?&s)e9bs*4Kfs*FWjqgA9homZ at Zs(;.Xm=>.d
+rIY!#s+LE+rJ(-'s,$c5s,6o9s,I&=s,[2Bs-!DGs-3PKs-E\Os-WhTs-s%Ys.97`s.fUms/Gss
+s/Z1$rN6+'s180Aq7H[As2+fRs2=rWqoA`Ys31Mgs3Ueos4%)"rRLqts4./%pY,Z&s5!_4s5<q7
+s5!_0le;Bjs4%(ss3L_hs2b5[rPefTrPSZPs2"ZLrP/BHpU^C8s0r$7s0)I's/>sqs/#aks.]=_
+s.KC`s.'+Xs-WhPs-*JFs,d8 at s,?o7s,-c3q#LAKqhG''q1S9jq1AQromkA<o6u8jec5XLU]5i~>
+W;lerkPtJ\oDegjnc/UhJcC<$]Dqg0JcE"Tq&]3XmJl3qq#pX5k60HE`rtugfbja<o7-]VrrN-;
+q\oJRq\B&Dr>#>Jrtk\Pru(hTruD%ZruV1^ruh=bs!%Ifs!7Ujs!Ians!dsus"47(s"XO1s#pBI
+s$QfUs%35bs&&eqs&f;*s'Pe8s(D at Is).jVs)e9cs*Xiqs+:9-s,d8OqkF+cs.o[ms/Q+$s0D[5
+s1/0Bs2"`RqoA`Ys3(;bs3L_ns4./%q:bl$s47/!s4IA)o at j5ss4..ts31M]s24lOs1JBAs02O#
+s.o[fs.'+Xs-WhQs-E\Ms-*JFs+gW&s*+Kds)7pTs(q^Js'u(;s'G_.s&B"ss&&els%WMdrCR#[
+s%!)Ys$H`Ns#pBCs#9s7s"aU.s"FC)s"*sGr?hOjs!7Ofq]c%`q]PhZmiM?HruCtVoc!'4l$r;R
+JcF:#rrAhoJ,~>
+W;lerkPtJ\oDegjnc/UhJcC<$]Dqg0JcE"Ts+13)s,-i7oqh'UrMBOkrMT[ps/Z1$s/l=)s02O/
+s0Ma5s0hqjs$$HIs$6Tbs&]4hs$m#Ys%*/]s%<;as%NGes%`Mgs%qATrFu4FrG2 at JrGDLNrGVXR
+s)S-\s)e3_s*+Eds*=Qhs*Ocno.g30h3[[2rL!V7pR(uEqi^uArK@,CrKR>IrKdDKrL!POs-ihS
+s.'+[s.97_s.KCcs/H%!s/l=)s0;U2s0hs;s186Bs1SHIs2"`Qs2G#Ys2k;bs3L_ms4%)#s4RG2
+qrRk?s6'FHs6BXMs6fpVs7?9`s7cQiiVifSs8)cjs7cQhs8;Kes82iks7QE]s60FEs5s at Cs5X.:
+s5!_.s47.uqpYSms3L_bs1SHBs0r$6s0;U.s/uC(s/c7$s/PsqrM]aorMKUkrM97arM'7as.KCa
+s.9#dqj[VSl^?@ll'L0(JcF:#rrAhoJ,~>
+W;lerkPtJ\oDegjnc/UhJcC<$]Dqg0JcE"Tq&]3XmJl3qs"j[3rAFV"s*a]$pG`+3s#L*?s#g=/
+s+(-$s+LE.s,-i9s,d8Fs-E\Ps-itXs.97as.fUis/,anrD`ess&T)"s&f;,rF,_8rF>k<q.9S=
+s(M at FrG):Hs(q^Ps).kps5F";s5X(>s6'?%s)e9`s*4Qhs*FWjq0`'fpO;R\s(;(Vs+'opq1/?n
+s+:3%rIk3)rJ(3)s+p]3s,-i7s,?u;s,R, at s,m8Ds-3PKs-NbQs-itWs.01^s.KCes/,gos/>mq
+s/Q+"s/c7)s0_O2s1A<Es1eTNrPSZSpW*<Us3(;bs3L_ns4./%o at j/us4cels4RG's3q"ps3(;X
+rPSZPrPANLrP/BHrOr6DrOW$>s0hs6s0D[/s/c7!s/5mns.o[hs.T7]s.B=]s-itSs-<VIs,[2?
+s,Hu9s,6[QrJ:9)qhG''q1S3hqh"ctq1-Y<o6u8jec5XLU]5i~>
+W;lerkPtJ\oDegjnc/UhJcC<$]Dqg0JcE"Tq&]3XmJl3qq#pX5k60HE`rtugfbja<o7-]VrrN-;
+q\oJRq\B&Dr>#>Jrtk\Pru(hTruD%ZruV1^ruh=bs!%Ifs!7Ujs!Ians!dsus"47(s"XO1s#pBI
+s$QfUs%35bs&&eqs&f;*s'Pe8s(D at Is).jVs)e9cs*Xiqs+:9-s,d8OqkF+cs.o[ms/Q+$s0D[5
+s1/0Bs2"`RqoA`Ys3(;bs3L_ns4./%q:bl$s47/!s4IA)o at j5ss4..ts31M]s24lOs1JBAs02O#
+s.o[fs.'+Xs-WhQs-E\Ms-*JFs+gW&s*+Kds)7pTs(q^Js'u(;s'G_.s&B"ss&&els%WMdrCR#[
+s%!)Ys$H`Ns#pBCs#9s7s"aU.s"FC)s"*sGr?hOjs!7Ofq]c%`q]PhZmiM?HruCtVoc!'4l$r;R
+JcF:#rrAhoJ,~>
+W;lerkPtJ\oDegjnc/UhJcC<$]Dqg0JcE"Ts+13)s,-i7oqh'UrMBOkrMT[ps/Z1$s/l=)s02O/
+s0Ma5s0hqjs$$HIs$6Tbs&]4hs$m#Ys%*/]s%<;as%NGes%`Mgs%qATrFu4FrG2 at JrGDLNrGVXR
+s)S-\s)e3_s*+Eds*=Qhs*Ocno.g30h3[[2rL!V7pR(uEqi^uArK@,CrKR>IrKdDKrL!POs-ihS
+s.'+[s.97_s.KCcs/H%!s/l=)s0;U2s0hs;s186Bs1SHIs2"`Qs2G#Ys2k;bs3L_ms4%)#s4RG2
+qrRk?s6'FHs6BXMs6fpVs7?9`s7cQiiVifSs8)cjs7cQhs8;Kes82iks7QE]s60FEs5s at Cs5X.:
+s5!_.s47.uqpYSms3L_bs1SHBs0r$6s0;U.s/uC(s/c7$s/PsqrM]aorMKUkrM97arM'7as.KCa
+s.9#dqj[VSl^?@ll'L0(JcF:#rrAhoJ,~>
+W;lerkPtJ\oDegjnc/UhJcC<$]Dqg0JcE"Tq&]3XmJl3qs"j[3rAFV"s*a]$pG`+3s#L*?s#g=/
+s+(-$s+LE.s,-i9s,d8Fs-E\Ps-itXs.97as.fUis/,anrD`ess&T)"s&f;,rF,_8rF>k<q.9S=
+s(M at FrG):Hs(q^Ps).kps5F";s5X(>s6'?%s)e9`s*4Qhs*FWjq0`'fpO;R\s(;(Vs+'opq1/?n
+s+:3%rIk3)rJ(3)s+p]3s,-i7s,?u;s,R, at s,m8Ds-3PKs-NbQs-itWs.01^s.KCes/,gos/>mq
+s/Q+"s/c7)s0_O2s1A<Es1eTNrPSZSpW*<Us3(;bs3L_ns4./%o at j/us4cels4RG's3q"ps3(;X
+rPSZPrPANLrP/BHrOr6DrOW$>s0hs6s0D[/s/c7!s/5mns.o[hs.T7]s.B=]s-itSs-<VIs,[2?
+s,Hu9s,6[QrJ:9)qhG''q1S3hqh"ctq1-Y<o6u8jec5XLU]5i~>
+W;lerkPtJ\nc/Ofp&G$lJcC<$\,ZC,JcE.Xs$$<$pO;T2hgYA(r>=Ptfa6%/r>>,\fbj[:omciV
+rrN-<rtFi8r>,DLrttbRru1nVruCtYruh=br?D7es!@[ls!Rgps!n%"s"==*s"j[4s$$HLs$crY
+s%EAfs&/kss&oA,s'Yk:s(MFKs).jVs)n?es*aous+UK1s,R,Gs-s%^s.]Ogs/#aos/c7(s0D[5
+s1A<Gs2+`RpW*<Vs3:Sjs3q#!s4RG+s4IA's4./!s3gqps4%)#o at j5ts4%(ls24lRs2"`Ms1/08
+s/>sls.97[s-NbOs-<VJs,I&7s+C>ss*+KdrH8-]s(_RFs'bq7s'5S-s&K(ts&&els%WMds%35]
+s$m#Vs$QfPs$$HFs#L*;s"sa2s"X<Ls!n$ss!Rgns!@[jq'5h^r?;%\r?(PNruM+Zr>Y2DlP]X<
+l[SGRJcF@%rrAhoJ,~>
+W;lerkPtJ\nc/Ofp&G$lJcC<$\,ZC,JcE.Xs-`nBs,-i7pSI?YpSInes/>sss/Z1$s/uC*s02O/
+s0Vg6s0hqjs$$HIs$?Zcs&]4hs$m#Ys%*/]s%<;as%NGes%`SirD<Mks&.MVs(_LJrG;FLrGMRP
+qf)RTs)S-\s)e9`rHJ3bs*=R&o.g91qj-3-nc&EQs*t'9s,m2Aoo]39s-*DGrK[DKrKmJMrL*VQ
+rL<hWs.01]s.B=as.TIfs/Q+#s/uC,s0Ma5s0r$<s186Cs1\NKs2+fSs2P)[s3(Gfs3^krs4@;)
+s4mS5s5a4As5s at Fs69RLs6]jTs7--]s7ZKgs82iol2CYZs8)cks7cKbs7lWjoDS^es7cQ^s6':@
+s5a4?s53k4s4RG's3pqps3Uehs2Y/Vs1/0>q7$C/s02O,s/uC's/Z*urMfaorMT[mrMBOipS7b_
+s.T5grLEhUrL2o;f9k`fg\ud(fDkjNU]5i~>
+W;lerkPtJ\nc/Ofp&G$lJcC<$\,ZC,JcE.Xs$$<$pO;T2hgYS^q_eD!s*ac&of)h/s#U0Bs$$HI
+s+C?*s+p]5s,R,As-3PMs-WhUs.'+]s.]Ohs/#ans/>sss/Z1$rDrr"s&f5&s'#G/rF>e:qdoe?
+s(M:DrG)@JrG;LNs5*e6s5F";s5a4As5s?%rH&!\rH8-`s*+Kfs*=Wjs*OWjqgJ9hmsk at LnUL4^
+rIOp!s+C9'rIt3)rJ1?-s,$c5s,6o9s,I&=s,[2Bs-*JIs-<VMs-NbRs-itXs.01^s.KCes/#am
+s/5gos/H$us/c7's0)I-s0ha7s1JBGs1eTMs2+fSs2OTLs2tAds3Ueps475'e_:&Ts3q"ms2P)V
+qni<Js1nTJs1\HFs1J<Bs1/0<s0D[.s/uC(s/c7!s/,gms.fUgs.KCas.97]s.'+Ys-itTs-E\K
+s,m>ArJgUQs,6o7s,$W/q1np'qh=p#mt:Xls+0clj+%#Vl[SGRJcF@%rrAhoJ,~>
+W;lerkPtJ\nc/Ofp&G$lJcC<$\,ZC,JcE.Xs$$<$pO;T2hgYA(r>=Ptfa6%/r>>,\fbj[:omciV
+rrN-<rtFi8r>,DLrttbRru1nVruCtYruh=br?D7es!@[ls!Rgps!n%"s"==*s"j[4s$$HLs$crY
+s%EAfs&/kss&oA,s'Yk:s(MFKs).jVs)n?es*aous+UK1s,R,Gs-s%^s.]Ogs/#aos/c7(s0D[5
+s1A<Gs2+`RpW*<Vs3:Sjs3q#!s4RG+s4IA's4./!s3gqps4%)#o at j5ts4%(ls24lRs2"`Ms1/08
+s/>sls.97[s-NbOs-<VJs,I&7s+C>ss*+KdrH8-]s(_RFs'bq7s'5S-s&K(ts&&els%WMds%35]
+s$m#Vs$QfPs$$HFs#L*;s"sa2s"X<Ls!n$ss!Rgns!@[jq'5h^r?;%\r?(PNruM+Zr>Y2DlP]X<
+l[SGRJcF@%rrAhoJ,~>
+W;lerkPtJ\nc/Ofp&G$lJcC<$\,ZC,JcE.Xs-`nBs,-i7pSI?YpSInes/>sss/Z1$s/uC*s02O/
+s0Vg6s0hqjs$$HIs$?Zcs&]4hs$m#Ys%*/]s%<;as%NGes%`SirD<Mks&.MVs(_LJrG;FLrGMRP
+qf)RTs)S-\s)e9`rHJ3bs*=R&o.g91qj-3-nc&EQs*t'9s,m2Aoo]39s-*DGrK[DKrKmJMrL*VQ
+rL<hWs.01]s.B=as.TIfs/Q+#s/uC,s0Ma5s0r$<s186Cs1\NKs2+fSs2P)[s3(Gfs3^krs4@;)
+s4mS5s5a4As5s at Fs69RLs6]jTs7--]s7ZKgs82iol2CYZs8)cks7cKbs7lWjoDS^es7cQ^s6':@
+s5a4?s53k4s4RG's3pqps3Uehs2Y/Vs1/0>q7$C/s02O,s/uC's/Z*urMfaorMT[mrMBOipS7b_
+s.T5grLEhUrL2o;f9k`fg\ud(fDkjNU]5i~>
+W;lerkPtJ\nc/Ofp&G$lJcC<$\,ZC,JcE.Xs$$<$pO;T2hgYS^q_eD!s*ac&of)h/s#U0Bs$$HI
+s+C?*s+p]5s,R,As-3PMs-WhUs.'+]s.]Ohs/#ans/>sss/Z1$rDrr"s&f5&s'#G/rF>e:qdoe?
+s(M:DrG)@JrG;LNs5*e6s5F";s5a4As5s?%rH&!\rH8-`s*+Kfs*=Wjs*OWjqgJ9hmsk at LnUL4^
+rIOp!s+C9'rIt3)rJ1?-s,$c5s,6o9s,I&=s,[2Bs-*JIs-<VMs-NbRs-itXs.01^s.KCes/#am
+s/5gos/H$us/c7's0)I-s0ha7s1JBGs1eTMs2+fSs2OTLs2tAds3Ueps475'e_:&Ts3q"ms2P)V
+qni<Js1nTJs1\HFs1J<Bs1/0<s0D[.s/uC(s/c7!s/,gms.fUgs.KCas.97]s.'+Ys-itTs-E\K
+s,m>ArJgUQs,6o7s,$W/q1np'qh=p#mt:Xls+0clj+%#Vl[SGRJcF@%rrAhoJ,~>
+W;lerkPtJ\mJm%`qu?ZrJcC<$ZiBt(JcE:\s$$<$q0qf4hgY;&rtsJnh$Ma;q&&]Xf,4I8pOE,Z
+r=],?q%N?6rtYJJr>>PQru:tXruM+\ru_7`r?D7ds!7Uks!Rgps!n%!s"47(s"XO1s#g<Gs$QfU
+s%35as%r_os&]5(s'>Y4s().Ds(q^Rs)J'^s*F]ps+C?-s,I&As-E\Qs.01^s.o[ls/H%"s02O1
+s1&*ArP8HLs24lTs2P#Xs2b5`s3:Sjs3q#!s4%(rs3gqrs3^eks3CYms46qus3q"qs3(G[s1nTJ
+s186:s/Z0os.01Xs-<VHs,?u5s+:9"s*F]irHA3`s)\3Vs(hXEs'Pe2s'#G)s&T.us&&els%WMd
+s%35\s$crTs$6TKs#pBDs#C$:s"sTQs"47%s""+!s![mpr?_IhpETV\r?;%\r?(hVruM+Zoc*?<
+lP]X<l[SGRJcF@%rrAhoJ,~>
+W;lerkPtJ\mJm%`qu?ZrJcC<$ZiBt(JcE:\s-itDrJUKJn,N'Ws/5mqs/Q+"s/c7's0)I-s0D[3
+s0_khs#pBGs$6TMs&T.fs$crWs%!)[rC[)_s%NGes%`Sis%r_mrDNYos&B"uh$O*srG;FLrGMLN
+rG_^Ts)S-\s)e3^s*"F"qht&#rK[2Ej-TB:rL!PGs,?9+s-!>ErKR8Gs-EPKs-W\Os-inUs.'+[
+s.97_s.KCcs.]Oms/Z1%s0)I-s0Ma5s0r$=s1A<Es1eTMs24lUs2Y/]s31Mhs3q#!s4RG-s53k8
+s5X.?s5j:Ds60LJs6K^Ps7$'Zs7QEcs7cQgs7u]ls8;Ecs7lWerV$9as7?9_s7ZKgs82Qhs7cQd
+s6p!Mqr at Y7s5<q5s4RG's3gqms2tA\s2"`Ks1/0>pUC12s0D[0s0)I*s/l=&s/Z1"ql0Oms/5mo
+rMBIgrM0CeqZ-YfrLNtYrL<bSj-eMdkEjs&JcF@%rrAhoJ,~>
+W;lerkPtJ\mJm%`qu?ZrJcC<$ZiBt(JcE:\s$$<$q0qf4hgYS]s"s[3s#0n*rAXa7nMgJ.s#^6D
+s$$HIrB^HNs,6o<s-!DIs-WhSs.'+[s.KCes.o[lrM]ars/c7&s0)B&s&f5&s'#A*s'GY7rFQ"A
+rFl(Bs(_LJs(q^Ps5!_3s5<q9s5X.?s5j9$qfDdZrH8'^s*+Kfs*=WjrHnEhrI+Qlo7-^fs*F3b
+omm!lrIY!#s+L?)rJ(9+rJ:E/rJLW6s,I&=s,d8Cs-*JIs-<VMs-WhSs-s%Ys.01^s.KCes.o[k
+s/,gos/>sss/Z1%s/uC+s0D[3s0hs:s186Bs1SHHs1nZOs24lUn]1[Ns3(Ges3Ueps46kss4IA%
+s4@;'l.Z0fs3L_ds2+`NqnW0FrP&<FrOi0Bs186:s0D[-s/Z1"s/Gsqs/,gls.fUfs.KC`s.01Z
+s-itTs-NbOs-3PHs,d8AqZ-MPs,6i5s,$]1pP8^%qh=p#pOiKts+0QfiICfTl[SGRJcF@%rrAho
+J,~>
+W;lerkPtJ\mJm%`qu?ZrJcC<$ZiBt(JcE:\s$$<$q0qf4hgY;&rtsJnh$Ma;q&&]Xf,4I8pOE,Z
+r=],?q%N?6rtYJJr>>PQru:tXruM+\ru_7`r?D7ds!7Uks!Rgps!n%!s"47(s"XO1s#g<Gs$QfU
+s%35as%r_os&]5(s'>Y4s().Ds(q^Rs)J'^s*F]ps+C?-s,I&As-E\Qs.01^s.o[ls/H%"s02O1
+s1&*ArP8HLs24lTs2P#Xs2b5`s3:Sjs3q#!s4%(rs3gqrs3^eks3CYms46qus3q"qs3(G[s1nTJ
+s186:s/Z0os.01Xs-<VHs,?u5s+:9"s*F]irHA3`s)\3Vs(hXEs'Pe2s'#G)s&T.us&&els%WMd
+s%35\s$crTs$6TKs#pBDs#C$:s"sTQs"47%s""+!s![mpr?_IhpETV\r?;%\r?(hVruM+Zoc*?<
+lP]X<l[SGRJcF@%rrAhoJ,~>
+W;lerkPtJ\mJm%`qu?ZrJcC<$ZiBt(JcE:\s-itDrJUKJn,N'Ws/5mqs/Q+"s/c7's0)I-s0D[3
+s0_khs#pBGs$6TMs&T.fs$crWs%!)[rC[)_s%NGes%`Sis%r_mrDNYos&B"uh$O*srG;FLrGMLN
+rG_^Ts)S-\s)e3^s*"F"qht&#rK[2Ej-TB:rL!PGs,?9+s-!>ErKR8Gs-EPKs-W\Os-inUs.'+[
+s.97_s.KCcs.]Oms/Z1%s0)I-s0Ma5s0r$=s1A<Es1eTMs24lUs2Y/]s31Mhs3q#!s4RG-s53k8
+s5X.?s5j:Ds60LJs6K^Ps7$'Zs7QEcs7cQgs7u]ls8;Ecs7lWerV$9as7?9_s7ZKgs82Qhs7cQd
+s6p!Mqr at Y7s5<q5s4RG's3gqms2tA\s2"`Ks1/0>pUC12s0D[0s0)I*s/l=&s/Z1"ql0Oms/5mo
+rMBIgrM0CeqZ-YfrLNtYrL<bSj-eMdkEjs&JcF@%rrAhoJ,~>
+W;lerkPtJ\mJm%`qu?ZrJcC<$ZiBt(JcE:\s$$<$q0qf4hgYS]s"s[3s#0n*rAXa7nMgJ.s#^6D
+s$$HIrB^HNs,6o<s-!DIs-WhSs.'+[s.KCes.o[lrM]ars/c7&s0)B&s&f5&s'#A*s'GY7rFQ"A
+rFl(Bs(_LJs(q^Ps5!_3s5<q9s5X.?s5j9$qfDdZrH8'^s*+Kfs*=WjrHnEhrI+Qlo7-^fs*F3b
+omm!lrIY!#s+L?)rJ(9+rJ:E/rJLW6s,I&=s,d8Cs-*JIs-<VMs-WhSs-s%Ys.01^s.KCes.o[k
+s/,gos/>sss/Z1%s/uC+s0D[3s0hs:s186Bs1SHHs1nZOs24lUn]1[Ns3(Ges3Ueps46kss4IA%
+s4@;'l.Z0fs3L_ds2+`NqnW0FrP&<FrOi0Bs186:s0D[-s/Z1"s/Gsqs/,gls.fUfs.KC`s.01Z
+s-itTs-NbOs-3PHs,d8AqZ-MPs,6i5s,$]1pP8^%qh=p#pOiKts+0QfiICfTl[SGRJcF@%rrAho
+J,~>
+W;lerp](0lp&FsjkPtJ\s8W*!JcC<$YQ+J"JcELbrBC*"qgS/:gOAr$r>=,hh$N*Eo,.-Tf,4C6
+rI=iKs&f:5q\&o?rsni<ob@?>rtbPLrttbRru1nWruM+\ru_7`ruqCds!7Ujs!Ians!dsts"+1%
+s"FC,s"j[5s#pBJs$ZlWs%<;cs&&eqs&]5)s'>Y4s().Cs(hXPs)S-`s*Xiss+UK1s,I&@s-E\Q
+s.97as.fUls/Q+%s0D[5s1&*@s1JBGs1eTLs2+fRs2G#Xs2k;bs3CYjs31Mbs3:Shs3L_js2k;]
+s2k;cs3gqus4I;(s2b5\s2G#Ts1\NHs1/0:s0D[*s.]O]s-3PFs,?u6s+C?$s*Ocls*4Qfs*"Ea
+s(;:Bs'u(<s'Pe0s&oA's&K(ts&&els%WMds%<;]s$crTs$?ZLs#pBBq#LFJs"=='s"+1"s!dsr
+r?qOis!7=`r?D+^r?1tZruCDFm2GF2q\\RIo6u8jfDkjNU]5i~>
+W;lerp](0lp&FsjkPtJ\s8W*!JcC<$YQ+J"JcELbs.'+]rJU]8qk`oao;2Jas/5mqs/Q+"s/l=(
+s02O.s0Ma4s0hqis#pBGs$6Tas&]4gs$crXs%*/]s%<;as%NGes%`SirD<Mks&/eos&B"urDq_\
+rGDFLrGVXRrGh^Ts)\-prJCQ3rJU>'s-3>Eqj-E3p\t3Ds4 at 42qiUo;m?.:/rKI8GrK[>IrKmJM
+s-`hSs-s%Ys.01]s.B=as.TIes.fUis/Q+#s/uC+s0D[3s0hs;s186Cs1SHIs2"`Qs2G#Ys2tAd
+s3^krs4@;)s4dS1s5<q:s5j:Cs6'FHs6BXNs6p!XrUU![s7H?as7cQgs7u]ls8;cms82ihs6p!X
+s763]s763Zs763_s7cQiq>L?[s6BXKs5s4;s5<q7s5*e1s4@;!s3CYes2Y/Ws1eTGs180>s1&*<
+q6p=2s0;U.s0)I)s/c7$rMogqrM][ms/,gms.fAirLa+]s.01[rL<VOiL/;bl'L0(JcF@%rrAho
+J,~>
+W;lerp](0lp&FsjkPtJ\s8W*!JcC<$YQ+J"JcELbrBC*"qgS/:gOB/Ys"s[3s*=WmlSni(s#^6D
+rBL6Hs$QfTs$m$Ms-3PMs-itXs.97as.o[ks/5mqs/H%!s/c7's02O.s0DT+s'#A*s'5G,rFPk>
+qe?(FrG2FLs)%els5*e7s5O(=s5j3"rH%pZrH8'^s*+Kfs*=Kfq0W-hqgSKnomZpgs*F3bomlpj
+s+:3%rIk3)rJ(9+rJ:E/rJLW5s,?u;s,[2As-!DGs-3PKs-NbQs-`nVs.'+[s.B=arM0Cgs/#an
+s/>sts/c7&s0)I-s0Ma4s0hs;s1/0As1SHIs2"`Ps2=rWn]1[Os31Mgs3^krs4@)#s47.ss3q"u
+s4@;'n_4#ns3^kns2tA[q7lmBqn;s at s1A<Bs/l=&s/Z1!s/5gmrMBOis.fUgs.TIbs.97\s-s%V
+s-WhPs-<VJq#L;OrJ^]5rJLW3rJ:3'rJ(3'qh4p#s+09^j+$rTl$r;RJcF@%rrAhoJ,~>
+W;lerp](0lp&FsjkPtJ\s8W*!JcC<$YQ+J"JcELbrBC*"qgS/:gOAr$r>=,hh$N*Eo,.-Tf,4C6
+rI=iKs&f:5q\&o?rsni<ob@?>rtbPLrttbRru1nWruM+\ru_7`ruqCds!7Ujs!Ians!dsts"+1%
+s"FC,s"j[5s#pBJs$ZlWs%<;cs&&eqs&]5)s'>Y4s().Cs(hXPs)S-`s*Xiss+UK1s,I&@s-E\Q
+s.97as.fUls/Q+%s0D[5s1&*@s1JBGs1eTLs2+fRs2G#Xs2k;bs3CYjs31Mbs3:Shs3L_js2k;]
+s2k;cs3gqus4I;(s2b5\s2G#Ts1\NHs1/0:s0D[*s.]O]s-3PFs,?u6s+C?$s*Ocls*4Qfs*"Ea
+s(;:Bs'u(<s'Pe0s&oA's&K(ts&&els%WMds%<;]s$crTs$?ZLs#pBBq#LFJs"=='s"+1"s!dsr
+r?qOis!7=`r?D+^r?1tZruCDFm2GF2q\\RIo6u8jfDkjNU]5i~>
+W;lerp](0lp&FsjkPtJ\s8W*!JcC<$YQ+J"JcELbs.'+]rJU]8qk`oao;2Jas/5mqs/Q+"s/l=(
+s02O.s0Ma4s0hqis#pBGs$6Tas&]4gs$crXs%*/]s%<;as%NGes%`SirD<Mks&/eos&B"urDq_\
+rGDFLrGVXRrGh^Ts)\-prJCQ3rJU>'s-3>Eqj-E3p\t3Ds4 at 42qiUo;m?.:/rKI8GrK[>IrKmJM
+s-`hSs-s%Ys.01]s.B=as.TIes.fUis/Q+#s/uC+s0D[3s0hs;s186Cs1SHIs2"`Qs2G#Ys2tAd
+s3^krs4@;)s4dS1s5<q:s5j:Cs6'FHs6BXNs6p!XrUU![s7H?as7cQgs7u]ls8;cms82ihs6p!X
+s763]s763Zs763_s7cQiq>L?[s6BXKs5s4;s5<q7s5*e1s4@;!s3CYes2Y/Ws1eTGs180>s1&*<
+q6p=2s0;U.s0)I)s/c7$rMogqrM][ms/,gms.fAirLa+]s.01[rL<VOiL/;bl'L0(JcF@%rrAho
+J,~>
+W;lerp](0lp&FsjkPtJ\s8W*!JcC<$YQ+J"JcELbrBC*"qgS/:gOB/Ys"s[3s*=WmlSni(s#^6D
+rBL6Hs$QfTs$m$Ms-3PMs-itXs.97as.o[ks/5mqs/H%!s/c7's02O.s0DT+s'#A*s'5G,rFPk>
+qe?(FrG2FLs)%els5*e7s5O(=s5j3"rH%pZrH8'^s*+Kfs*=Kfq0W-hqgSKnomZpgs*F3bomlpj
+s+:3%rIk3)rJ(9+rJ:E/rJLW5s,?u;s,[2As-!DGs-3PKs-NbQs-`nVs.'+[s.B=arM0Cgs/#an
+s/>sts/c7&s0)I-s0Ma4s0hs;s1/0As1SHIs2"`Ps2=rWn]1[Os31Mgs3^krs4@)#s47.ss3q"u
+s4@;'n_4#ns3^kns2tA[q7lmBqn;s at s1A<Bs/l=&s/Z1!s/5gmrMBOis.fUgs.TIbs.97\s-s%V
+s-WhPs-<VJq#L;OrJ^]5rJLW3rJ:3'rJ(3'qh4p#s+09^j+$rTl$r;RJcF@%rrAhoJ,~>
+W;lerp](*jq>^BniW&iVJcC<$WW2nsJcEXfq`alus*jS>fm``"r><udh[/NMnJLjPfbj[:s%35`
+s%WMgs%iY*q%!E8rseu>rt5,ApD!Q at r>,DLrttbRru1nVruCtYruh=bs!%Ifs!7Ujs!Rgps!n%!
+s"47(s"XO0s#'g9s$-NMs$crYs%EAes&/krs&f;*s'G_6s(24Ds(hXQs)e9ds*k!"s+C?-s,?u>
+s-3POs.'+\s.]Ojs/Q+&s0;U1s0hs;s186Bs1JBGs1eTLs2+fSrQ,#Ws1nZOs2Y/^s3(G^s2"`N
+s2=rZs3:Sks4.(\rOr0Bs1866s/H$rs/#ahs-`nMs,R,8s+LE%s*Xins*=Whs*+Kds(;4;qd0;.
+s&oA&s&B"ss&&eks%WMds%35]s$m#Vs$?G\s#'g4s"XO,s"47%s""$ts!dsrs!Rgnr?_IhpETV\
+q]Yt^ruV%Wm2PR6ko':6l[SGRJcFF'rrAhoJ,~>
+W;lerp](*jq>^BniW&iVJcC<$WW2nsJcEXfs.'+]s.TIOs,I&=s/#>enYQ8_s/>sss/Q+#s/l=)
+s02O/s0Ma5s0hqjs$$HIs$6Tbs&]4gs$crXs%*/]s%<;as%NGes%`Sis%r_mrDNYos&Aqss&T)"
+s&e.bs)%^PrGVRPrGhdVrJ1?-rJCQ3s,6J's-!DGrKR2ErKcc9rVli=s3(Gds3:Shs,Qo9s,d8@
+m?.:/rKI8GrK[>IrKmPOrL*VQs-rtWs.91]s.TIes.fUis/#ars/l=)s0;U1s0_m9s1&*?s1JBG
+s1nZOs2=rWs2b5`s3L_ns4./!s4@;(s4mY2s5F"<s5j:Ds69RLqsFFOs6p!Xs763]s7QEcs7cQh
+s8)cms7lWarTjLMs6]dRs6fpWs7?9as7u]ls8DuXrSd_5s53k4s4mY/s4[M+s4IA's3gqms2k;[
+s1nZJs1J<Bs186 at s1&$:s0hg4s0D[0s0)I*s/l7#s/Psqs/>sqq#LGgs.KCas.91[s.&nSpR:-1
+h3d/fg\ud(g&M'PU]5i~>
+W;lerp](*jq>^BniW&iVJcC<$WW2nsJcEXfq`alus*jS>fm`rWs"s[3s*=WmlSni(s#g<FrBL<I
+s$?ZPs$ZlUs$m#Ys-<VOs.'+^s.]Ohs/,gps/H%!s/c7&s0)I,s0DU1rEB5*rET;,s'GY2rFl(B
+rG):Hs(q_js5!_4s5F";s5a4ArGqjXrH/!\s*"?bs*4?brHeEhnUC4[s*FWko7-Lbqgn]ts+C9'
+rIt3)rJ1?-rJCQ3s,6o9s,I&=s,[2Bs-!DHrK[DLs-WhSs-s%Ys.01^s.TIes.fUis/,gos/H%!
+s/c7's02O/s0Ma5s0hs:s1&*?s1SHIs2"`Qs2G#Xo>gmPs2tAds3Ueos4./%rS%;%s3Uejs3CYk
+s3^kqs4./#s4I)"s3^kirQ>/[s1nHDqn2g<s1862pSRtes.o[irM'=cs.KCas.97]s.'+Xs-`nR
+q#LGWs,d8As,R,=q2G91s,-c3rJ:3'rJ(3's+LE(s+0-ZiICZPl[SGRJcFF'rrAhoJ,~>
+W;lerp](*jq>^BniW&iVJcC<$WW2nsJcEXfq`alus*jS>fm``"r><udh[/NMnJLjPfbj[:s%35`
+s%WMgs%iY*q%!E8rseu>rt5,ApD!Q at r>,DLrttbRru1nVruCtYruh=bs!%Ifs!7Ujs!Rgps!n%!
+s"47(s"XO0s#'g9s$-NMs$crYs%EAes&/krs&f;*s'G_6s(24Ds(hXQs)e9ds*k!"s+C?-s,?u>
+s-3POs.'+\s.]Ojs/Q+&s0;U1s0hs;s186Bs1JBGs1eTLs2+fSrQ,#Ws1nZOs2Y/^s3(G^s2"`N
+s2=rZs3:Sks4.(\rOr0Bs1866s/H$rs/#ahs-`nMs,R,8s+LE%s*Xins*=Whs*+Kds(;4;qd0;.
+s&oA&s&B"ss&&eks%WMds%35]s$m#Vs$?G\s#'g4s"XO,s"47%s""$ts!dsrs!Rgnr?_IhpETV\
+q]Yt^ruV%Wm2PR6ko':6l[SGRJcFF'rrAhoJ,~>
+W;lerp](*jq>^BniW&iVJcC<$WW2nsJcEXfs.'+]s.TIOs,I&=s/#>enYQ8_s/>sss/Q+#s/l=)
+s02O/s0Ma5s0hqjs$$HIs$6Tbs&]4gs$crXs%*/]s%<;as%NGes%`Sis%r_mrDNYos&Aqss&T)"
+s&e.bs)%^PrGVRPrGhdVrJ1?-rJCQ3s,6J's-!DGrKR2ErKcc9rVli=s3(Gds3:Shs,Qo9s,d8@
+m?.:/rKI8GrK[>IrKmPOrL*VQs-rtWs.91]s.TIes.fUis/#ars/l=)s0;U1s0_m9s1&*?s1JBG
+s1nZOs2=rWs2b5`s3L_ns4./!s4@;(s4mY2s5F"<s5j:Ds69RLqsFFOs6p!Xs763]s7QEcs7cQh
+s8)cms7lWarTjLMs6]dRs6fpWs7?9as7u]ls8DuXrSd_5s53k4s4mY/s4[M+s4IA's3gqms2k;[
+s1nZJs1J<Bs186 at s1&$:s0hg4s0D[0s0)I*s/l7#s/Psqs/>sqq#LGgs.KCas.91[s.&nSpR:-1
+h3d/fg\ud(g&M'PU]5i~>
+W;lerp](*jq>^BniW&iVJcC<$WW2nsJcEXfq`alus*jS>fm`rWs"s[3s*=WmlSni(s#g<FrBL<I
+s$?ZPs$ZlUs$m#Ys-<VOs.'+^s.]Ohs/,gps/H%!s/c7&s0)I,s0DU1rEB5*rET;,s'GY2rFl(B
+rG):Hs(q_js5!_4s5F";s5a4ArGqjXrH/!\s*"?bs*4?brHeEhnUC4[s*FWko7-Lbqgn]ts+C9'
+rIt3)rJ1?-rJCQ3s,6o9s,I&=s,[2Bs-!DHrK[DLs-WhSs-s%Ys.01^s.TIes.fUis/,gos/H%!
+s/c7's02O/s0Ma5s0hs:s1&*?s1SHIs2"`Qs2G#Xo>gmPs2tAds3Ueos4./%rS%;%s3Uejs3CYk
+s3^kqs4./#s4I)"s3^kirQ>/[s1nHDqn2g<s1862pSRtes.o[irM'=cs.KCas.97]s.'+Xs-`nR
+q#LGWs,d8As,R,=q2G91s,-c3rJ:3'rJ(3's+LE(s+0-ZiICZPl[SGRJcFF'rrAhoJ,~>
+W;lerp&FO^huE]VJcC<$V>pJoJcEdjq*+`uoDdEkq#p^7cNN,3nHA4ro.eu:rs\oos$ZlVs%3/]
+rB:#drseo:rs\o<r=Ju at r=eu at r>#8Hr>5DMru:tXruM+\ruh=bs!%Ifs!7Ujs!Ians!dsus"+1&
+s"OI/s#'g7s#pBIs$QfUs%35`s%iYms&K)%s'5S2s'l"?s(VLMs)J'^s*F]js*k!"s+^Q3s,[2C
+s-<VOs-s%\s.fUls/Q+$s0;U2s0hs;s1/0 at s1A<Es1\NCs186Bs1&*?s1SHKs2+fOs1SHCs02O)
+s/Q*rs.fUjs/Z1-s0r$<s186<s/Z0ns.97[s-WhPs,[2=s+gW,s*juqs*=Wes)J'Ts(2.<s'Yk6
+s'G_2rETA,s&T.us%r_js%NGcs%*/[s$Z_as#U0=s#'g4s"aU.s"FC(q^_Ups!dsrs!Rgns!@Uh
+q'5b\ruh7\oc3E>q\n?0q&&XOl[FEbg&M'PU]5i~>
+W;lerp&FO^huE]VJcC<$V>pJoJcEdjs.'+^s.TIerJgFKn"p&^rM]ars/c7's0)I-s0D[3s0_m8
+s#pBGs$-NKs&K(cs$QfTs$m#Zs%35`s%NGes%`Mgs%r_ms&/eos&B"urDrr"s&f5&h[0=#qeuFP
+rGh^hrJ1?-rJCQ3o.g9-rK@,Cs-3DGrKcu?s,6ons24lVs2b/\rQ+kqs,R&=s,Hu=nWE^3qiguC
+rKdDKs-WbQrL3\Ss.'+[s.97_s.KCds.fOgs/Q+#s/l=)s0;U1s0_m9s1/0As1SHIs2"`Qs2G#Y
+s2k;cs3L_is3Ueos4./$s4[M.s53k8s5X. at s6':Ds6K^Os6]jSs6p!Xs763]s7QE\s6fpSs6'FE
+s6'FGs69RKs6K^Ps5a4;s4dS)rR(Yrqqh;-s4mY-s4@;#s3q"rs3^kls2k;[s2"`Lqn2s at s180>
+s1&*<s0hg4s0Vg2s02O,s/l=&s/Z*us/Gkqs.fUfs.K=_s.91[qjdJOpR:'/l'U(hg\ud(g&M'P
+U]5i~>
+W;lerp&FO^huE]VJcC<$V>pJoJcEdjq*+`uoDdEks"sU1s*Eogs#U0Bs$$BGs$6NKs$H`Qs$ZlU
+s$m$Ms-*JKs.fUjs/5mqs/Q+#s/l=)s02O.s0Ma4s0_m9rEK;,rE]G0qd9A2s'bq=rFu4FrG2Ge
+s4dS0s53k8s5O(>s)J'ZqfDdZqfVp^rHJ3bqg&-ds*OEfrGhjapO*!eq0_jbq1/9ls+:3%rIk-'
+rJ(9+s+pW1s,-c5s,I&=s,[2Bs-!DGs-3JIs-NbQs-`nVs.'+[s.B=as.]Ogs/#ans/>sts/Z1%
+s0)I-s0D[2rNuU4s0r$>s1JBGs2"`Qs2FNKs2k;bs3CYls4%"us3q"os2tA`s2tAcs3CYjs3^kq
+s4%)"s4IA*s4..ns2FrTs24lRrOhs<s186=s0D[-s/>mnoqh\as.]Ods.B=_rLNtXs-itUqZ-Y\
+s-*JGs,m8As,[2?pPf'/s,-c3rJ:9)qhG-(pOV at ThgbHNnUKkRJcFF'rrAhoJ,~>
+W;lerp&FO^huE]VJcC<$V>pJoJcEdjq*+`uoDdEkq#p^7cNN,3nHA4ro.eu:rs\oos$ZlVs%3/]
+rB:#drseo:rs\o<r=Ju at r=eu at r>#8Hr>5DMru:tXruM+\ruh=bs!%Ifs!7Ujs!Ians!dsus"+1&
+s"OI/s#'g7s#pBIs$QfUs%35`s%iYms&K)%s'5S2s'l"?s(VLMs)J'^s*F]js*k!"s+^Q3s,[2C
+s-<VOs-s%\s.fUls/Q+$s0;U2s0hs;s1/0 at s1A<Es1\NCs186Bs1&*?s1SHKs2+fOs1SHCs02O)
+s/Q*rs.fUjs/Z1-s0r$<s186<s/Z0ns.97[s-WhPs,[2=s+gW,s*juqs*=Wes)J'Ts(2.<s'Yk6
+s'G_2rETA,s&T.us%r_js%NGcs%*/[s$Z_as#U0=s#'g4s"aU.s"FC(q^_Ups!dsrs!Rgns!@Uh
+q'5b\ruh7\oc3E>q\n?0q&&XOl[FEbg&M'PU]5i~>
+W;lerp&FO^huE]VJcC<$V>pJoJcEdjs.'+^s.TIerJgFKn"p&^rM]ars/c7's0)I-s0D[3s0_m8
+s#pBGs$-NKs&K(cs$QfTs$m#Zs%35`s%NGes%`Mgs%r_ms&/eos&B"urDrr"s&f5&h[0=#qeuFP
+rGh^hrJ1?-rJCQ3o.g9-rK@,Cs-3DGrKcu?s,6ons24lVs2b/\rQ+kqs,R&=s,Hu=nWE^3qiguC
+rKdDKs-WbQrL3\Ss.'+[s.97_s.KCds.fOgs/Q+#s/l=)s0;U1s0_m9s1/0As1SHIs2"`Qs2G#Y
+s2k;cs3L_is3Ueos4./$s4[M.s53k8s5X. at s6':Ds6K^Os6]jSs6p!Xs763]s7QE\s6fpSs6'FE
+s6'FGs69RKs6K^Ps5a4;s4dS)rR(Yrqqh;-s4mY-s4@;#s3q"rs3^kls2k;[s2"`Lqn2s at s180>
+s1&*<s0hg4s0Vg2s02O,s/l=&s/Z*us/Gkqs.fUfs.K=_s.91[qjdJOpR:'/l'U(hg\ud(g&M'P
+U]5i~>
+W;lerp&FO^huE]VJcC<$V>pJoJcEdjq*+`uoDdEks"sU1s*Eogs#U0Bs$$BGs$6NKs$H`Qs$ZlU
+s$m$Ms-*JKs.fUjs/5mqs/Q+#s/l=)s02O.s0Ma4s0_m9rEK;,rE]G0qd9A2s'bq=rFu4FrG2Ge
+s4dS0s53k8s5O(>s)J'ZqfDdZqfVp^rHJ3bqg&-ds*OEfrGhjapO*!eq0_jbq1/9ls+:3%rIk-'
+rJ(9+s+pW1s,-c5s,I&=s,[2Bs-!DGs-3JIs-NbQs-`nVs.'+[s.B=as.]Ogs/#ans/>sts/Z1%
+s0)I-s0D[2rNuU4s0r$>s1JBGs2"`Qs2FNKs2k;bs3CYls4%"us3q"os2tA`s2tAcs3CYjs3^kq
+s4%)"s4IA*s4..ns2FrTs24lRrOhs<s186=s0D[-s/>mnoqh\as.]Ods.B=_rLNtXs-itUqZ-Y\
+s-*JGs,m8As,[2?pPf'/s,-c3rJ:9)qhG-(pOV at ThgbHNnUKkRJcFF'rrAhoJ,~>
+W;leroDeObg].9RJcC<$U&Y&kJcEpnpHJTus$$2Wf7*Mur><]\h[0)]kns(Jh\c.ss$?ZPs#L*@
+q`X``r=/c:rs\i:q[ic at q%W]@rtbPLrttbRru1nWruM+]ruh=bs!%Ifs!7Ujs!Ians![mss"+1'
+s"aU2s#0m;s#g<Fs$?ZQs%!)[s%EAfs&8qus&oA-s'Yk:s(D at Is).jWs)J'\s*4Qls+13(s,$c7
+s,[,As-<VQs.B=ds/#aps/l=)s0Ma5s0hs:s02O)rN#t#s02O/s0_m1rNZC)s/>sos.]I`s.KCc
+s.fUjs0;U*s/H$ps.'+Ws-E\Js,[2<s+gW-s*juos*"E_s)7pQs(;4?s'u(<s'bq7s'G_1s',G*
+s&]5!s%r_is%<(es#^6As#C$:s"sa2s"XO-s"FC)s"+1#q'uCns![mps!Ialr?V7bs!%Ibq]>VT
+pDiiFobu^*q&&^Ql$e3`g&M'PU]5i~>
+W;leroDeObg].9RJcC<$U&Y&kJcEpns.01_s.TIfs.o[Ts3^T at n"p&]rMT[os/Q%!s/uC+s0Ma4
+s0_khs#pBGs$-N_s&K(cs$QfSs$crWs%*/^s%NGes%`Sis%r_mrDNYos&Aqss&T/$rE0)&rEB5*
+h[0=$rG_dVs+U?)rJ19+rJCQ3oeHE-rK@,CrKR8Gqj.&EqhkE3s1nZOs2=rXqoJSmrJpo=s,Hu=
+nWEX1rKI8GrK[DKs-NbQqjIDOrL<hWs.01]s.B=bs.fUjs/,gos/H$us/c7's02O.s0D[4s1&*?
+s1JBGs1eTMs24lUs2Y/]s2Y/]s3(Gfs3^kqs475&s4[G-s5*e7s5X(>s6'FGs69RKs6KXNs6'FB
+s5O(;q;D51qr7Y3s4IA#pX/fks4[M*s4..us3Uejs3(Gas2G#Ts1eTIpUgI:s1/0>rO;g8s0_g4
+s0D[0s0)I*s/l(ss.fUgs.TIcs.B7]qjmVSpRCuIhjN_rf9b7kJcFF'rrAhoJ,~>
+W;leroDeObg].9RJcC<$U&Y&kJcEpnpHJTus$$2Wf7*`Us"sa5s#0n%s*Nofs#U*?s$$HIs$6TM
+s$H`Qs$ZfSrC?mPs-<VNs.]Oms/Z1$s/uC+s0;U0s0Vg6s0hs;s1/0 at rE]A.rEoS4qdKM9s(D at G
+s(_LJs4RG-s5!_4s5<q9s)A!Xs)S'ZrH/!\rHA-`rHS3brHeKjrI4K\q0W!ds*FEepOE!hq18Kr
+s+C9'rIt3)rJ1?-s,$c5rJU]7s,I&>s,d8Cs-!DGrKR>Js-NbQs-itWs.'+\s.B=bs.fUis/,go
+s/H$us/c7'rNQ=,rNcI0s0Vg7s1/0As1SHJs2+fSs2O`Ps2b5_s3:Sjs3gqkrQYA`s2=rVs2Y/\
+s2tAcs3:Sis3^kqs3CYfs2Y/SrP&<Fs1JBDs186?s0r$9s0Vg3s0;U+s/>[hs/#Ics.]Ods.97\
+s-i``rK[DIs-*JGs,m8As,[2?s,Hc3rJU]5rJCK/qhP3+s+C3#pOVLXgOK$Jo7-"RJcFF'rrAho
+J,~>
+W;leroDeObg].9RJcC<$U&Y&kJcEpnpHJTus$$2Wf7*Mur><]\h[0)]kns(Jh\c.ss$?ZPs#L*@
+q`X``r=/c:rs\i:q[ic at q%W]@rtbPLrttbRru1nWruM+]ruh=bs!%Ifs!7Ujs!Ians![mss"+1'
+s"aU2s#0m;s#g<Fs$?ZQs%!)[s%EAfs&8qus&oA-s'Yk:s(D at Is).jWs)J'\s*4Qls+13(s,$c7
+s,[,As-<VQs.B=ds/#aps/l=)s0Ma5s0hs:s02O)rN#t#s02O/s0_m1rNZC)s/>sos.]I`s.KCc
+s.fUjs0;U*s/H$ps.'+Ws-E\Js,[2<s+gW-s*juos*"E_s)7pQs(;4?s'u(<s'bq7s'G_1s',G*
+s&]5!s%r_is%<(es#^6As#C$:s"sa2s"XO-s"FC)s"+1#q'uCns![mps!Ialr?V7bs!%Ibq]>VT
+pDiiFobu^*q&&^Ql$e3`g&M'PU]5i~>
+W;leroDeObg].9RJcC<$U&Y&kJcEpns.01_s.TIfs.o[Ts3^T at n"p&]rMT[os/Q%!s/uC+s0Ma4
+s0_khs#pBGs$-N_s&K(cs$QfSs$crWs%*/^s%NGes%`Sis%r_mrDNYos&Aqss&T/$rE0)&rEB5*
+h[0=$rG_dVs+U?)rJ19+rJCQ3oeHE-rK@,CrKR8Gqj.&EqhkE3s1nZOs2=rXqoJSmrJpo=s,Hu=
+nWEX1rKI8GrK[DKs-NbQqjIDOrL<hWs.01]s.B=bs.fUjs/,gos/H$us/c7's02O.s0D[4s1&*?
+s1JBGs1eTMs24lUs2Y/]s2Y/]s3(Gfs3^kqs475&s4[G-s5*e7s5X(>s6'FGs69RKs6KXNs6'FB
+s5O(;q;D51qr7Y3s4IA#pX/fks4[M*s4..us3Uejs3(Gas2G#Ts1eTIpUgI:s1/0>rO;g8s0_g4
+s0D[0s0)I*s/l(ss.fUgs.TIcs.B7]qjmVSpRCuIhjN_rf9b7kJcFF'rrAhoJ,~>
+W;leroDeObg].9RJcC<$U&Y&kJcEpnpHJTus$$2Wf7*`Us"sa5s#0n%s*Nofs#U*?s$$HIs$6TM
+s$H`Qs$ZfSrC?mPs-<VNs.]Oms/Z1$s/uC+s0;U0s0Vg6s0hs;s1/0 at rE]A.rEoS4qdKM9s(D at G
+s(_LJs4RG-s5!_4s5<q9s)A!Xs)S'ZrH/!\rHA-`rHS3brHeKjrI4K\q0W!ds*FEepOE!hq18Kr
+s+C9'rIt3)rJ1?-s,$c5rJU]7s,I&>s,d8Cs-!DGrKR>Js-NbQs-itWs.'+\s.B=bs.fUis/,go
+s/H$us/c7'rNQ=,rNcI0s0Vg7s1/0As1SHJs2+fSs2O`Ps2b5_s3:Sjs3gqkrQYA`s2=rVs2Y/\
+s2tAcs3:Sis3^kqs3CYfs2Y/SrP&<Fs1JBDs186?s0r$9s0Vg3s0;U+s/>[hs/#Ics.]Ods.97\
+s-i``rK[DIs-*JGs,m8As,[2?s,Hc3rJU]5rJCK/qhP3+s+C3#pOVLXgOK$Jo7-"RJcFF'rrAho
+J,~>
+JcFm4rr at WMJcD;@r;_EKci<`'s*jo1q>]&qq#pX5`rt?-jV[SDk8<q#r<rW[s"j[4s#C$>s#g<E
+oaLd.rs\i:q%3Q<pD!Q at rtbVNrttbRru1nWruM+\ru_7`r?D7ds!7Ujs!Rgqs""+%s"XO0s#'g7
+s#C$>s#pBHs$6TOs$ZlXs%NGhs&B#"s',M0s'bq;s().Bs(MFIs)7pYs*+Kjs*t'#s+UE+s+p]6
+s,m>Is-s%Ys.97`s.]Ogs/#ams.]Ohs/5mqs/5mss/c7'q4I\Xs.'+Xs-NbRs-itXs.97_s-WhL
+s,d2Es-3PIs,d8>s,$c1s+C?"s*4Qbs).jMs(2.>qd]S6s'Yk5s'5S.s'#G*s&]!rs$6TIs#^6@
+s#9s8rA=O0s"XI*s"=='s"*mos!dsrs!Rgns!@[js!.Oer?(hVq&T8Nru:>DgDT`&omc.RJcFL)
+rrAhoJ,~>
+JcFm4rr at WMJcD;@r;_EKci=$9s.B=bs.fUis8MuEq>]o[s/,ams/>mqs/Q+"s/l=)s0;U0s#U0B
+s#pBGs&8qss$?ZOs$QfSs$m#Ys%35_s%NGfs%iYks&&eos&8kqs&K)"rE'#$rE9/(rEK;,s'=Ri
+rIk'%rJ(9+qhY3-o.g3+qi^uCqiq&ErKdD=pPT!as1eTMs24lUs2Y/\oo8p1s,I&>s,cW1qi^uC
+s-3JIrKmJMs-`bQrL<hWs.01^s.TIfs/#[krMT[ps/Z1$s/l=(s0;U1s0hs<s1A<Es1eHHqn`<N
+s2Y/]s31Mhs3^eps3q"us4IA+s5*e6p##f+s4RG+s5!S/rS at M.s4[M*s4@;'s4RG&n'V$bs4@;#
+s3^kms31Mbs2P)Ws2"`Ms1J6 at qmua:s1&*<s0hs8s0Va2q#LGls.o[is.TIcqk*hYq47DQpRD&K
+hjNetd?iVeJcFL)rrAhoJ,~>
+JcFm4rr at WMJcD;@r;_EKci<`'s*jo1q>]&qs"j[3s#'g7s*=WljZ!3"s#^6ErBL<Js$HZOs$crW
+s%!)[rCR$Vs-`nVs.fUps0)I,s0DU1s0hm9s180As'>Y2rEoM2rF,_8rF>k=s(D at Gs4IA)s4dS/
+s5!_3s5<oqrGhdWrH/!\rHA-`rHS3brHe'TpNudbs*F9aq1&9lq18KrrIb'%rIt3)s+gQ/s,$]3
+s,6o9s,I&=s,[, at s-!>Es-3PLs-NbQs-itWs.01]s.KCds.fUjs/,gps/Q+"rN6+&rNH7*rNZC/
+s0hs;s186Ds1\NKs2+fRs2G#Xq8`NWs31Mgs2"`Ps2=rVs2+fOs2+fRs2G#Xs2b5_s3(G\s1\NG
+rOVm:rODg8s0Vg3s0)I(s/Q*so;;Pas.oIcs.T5gs-NbOrK[DIrKI8Es,m>CrK$o;s,Hc3s,6i5
+s,$]1s+gW.rIaotpOVFVgOJsHomc.RJcFL)rrAhoJ,~>
+JcFm4rr at WMJcD;@r;_EKci<`'s*jo1q>]&qq#pX5`rt?-jV[SDk8<q#r<rW[s"j[4s#C$>s#g<E
+oaLd.rs\i:q%3Q<pD!Q at rtbVNrttbRru1nWruM+\ru_7`r?D7ds!7Ujs!Rgqs""+%s"XO0s#'g7
+s#C$>s#pBHs$6TOs$ZlXs%NGhs&B#"s',M0s'bq;s().Bs(MFIs)7pYs*+Kjs*t'#s+UE+s+p]6
+s,m>Is-s%Ys.97`s.]Ogs/#ams.]Ohs/5mqs/5mss/c7'q4I\Xs.'+Xs-NbRs-itXs.97_s-WhL
+s,d2Es-3PIs,d8>s,$c1s+C?"s*4Qbs).jMs(2.>qd]S6s'Yk5s'5S.s'#G*s&]!rs$6TIs#^6@
+s#9s8rA=O0s"XI*s"=='s"*mos!dsrs!Rgns!@[js!.Oer?(hVq&T8Nru:>DgDT`&omc.RJcFL)
+rrAhoJ,~>
+JcFm4rr at WMJcD;@r;_EKci=$9s.B=bs.fUis8MuEq>]o[s/,ams/>mqs/Q+"s/l=)s0;U0s#U0B
+s#pBGs&8qss$?ZOs$QfSs$m#Ys%35_s%NGfs%iYks&&eos&8kqs&K)"rE'#$rE9/(rEK;,s'=Ri
+rIk'%rJ(9+qhY3-o.g3+qi^uCqiq&ErKdD=pPT!as1eTMs24lUs2Y/\oo8p1s,I&>s,cW1qi^uC
+s-3JIrKmJMs-`bQrL<hWs.01^s.TIfs/#[krMT[ps/Z1$s/l=(s0;U1s0hs<s1A<Es1eHHqn`<N
+s2Y/]s31Mhs3^eps3q"us4IA+s5*e6p##f+s4RG+s5!S/rS at M.s4[M*s4@;'s4RG&n'V$bs4@;#
+s3^kms31Mbs2P)Ws2"`Ms1J6 at qmua:s1&*<s0hs8s0Va2q#LGls.o[is.TIcqk*hYq47DQpRD&K
+hjNetd?iVeJcFL)rrAhoJ,~>
+JcFm4rr at WMJcD;@r;_EKci<`'s*jo1q>]&qs"j[3s#'g7s*=WljZ!3"s#^6ErBL<Js$HZOs$crW
+s%!)[rCR$Vs-`nVs.fUps0)I,s0DU1s0hm9s180As'>Y2rEoM2rF,_8rF>k=s(D at Gs4IA)s4dS/
+s5!_3s5<oqrGhdWrH/!\rHA-`rHS3brHe'TpNudbs*F9aq1&9lq18KrrIb'%rIt3)s+gQ/s,$]3
+s,6o9s,I&=s,[, at s-!>Es-3PLs-NbQs-itWs.01]s.KCds.fUjs/,gps/Q+"rN6+&rNH7*rNZC/
+s0hs;s186Ds1\NKs2+fRs2G#Xq8`NWs31Mgs2"`Ps2=rVs2+fOs2+fRs2G#Xs2b5_s3(G\s1\NG
+rOVm:rODg8s0Vg3s0)I(s/Q*so;;Pas.oIcs.T5gs-NbOrK[DIrKI8Es,m>CrK$o;s,Hc3s,6i5
+s,$]1s+gW.rIaotpOVFVgOJsHomc.RJcFL)rrAhoJ,~>
+JcFm4rr at WMJcD/<r;_EKe,T/+qgSQ/qu>8sq#pX5`<>?1q_@=Po.fVLq$Hj(r<WEVs"OI.s"sa5
+s#9s<rsSE,rseu9rso&>q%3K:q\8uDr>,DLrttbRru:tXruM+\ru_7`ruqCdr?M=gs!Rgqs""+%
+s"OI.s"j[3s#9s;s#L*@s#pBGs$?ZRs%*/as&&eos&B#!s&]5's'5S3s'u(@s(VLLs).jWs)n?e
+rI"Wos+(-%s+gW5s,lo;s-E\Qs.97brMBOcs-3PIs-3JGs-!DEs-!8Cs-!DEs,-c1s+p]3s,6o=
+s,R,;s+p]/s+(,ss*4Qds)7pPs(24?s'kk8qdTS6s'Pe3s',@#s%iYcs$QfNs#U0=s#0m7s"s[1
+s"aU/s"OI+r@\+%s""$tq^MIls!Iaks!%Icq]GPRq]5VTq&A]>i>M/&omc.RJcFL)rrAhoJ,~>
+JcFm4rr at WMJcD/<r;_EKe,TH>s.B=bs.fUiqu6WCqu?2_q541is/>sss/Q+"s/l=(s02O/s#L*@
+s#g<Es&/krs$?ZOs$QfSs$crWs%!)[s%<;bs%`SjrDNYos&B"urDrr"rE0)&rEB5*rETA.s'Fjp
+q_A,(qh>')rJ19+rJC,#qiUc=rKI2ErJ(?-s+pQ/qhkEcs1JBGs1eTMs24lTo8W^/s,?u=s,c]3
+rK@&As-3PKrKdDKrL!VQqjRPSs.'+[s.B=bs.]Ogs.o[ks/,ams/>sss/Q+#s0)I-s0VI.s1&*@
+s1JBFs1eTLs24lUs2b5_s3:Sfs3:Sis3^krs4 at 5's4RG(s4..us3gqos3^kqs475'q:kr&s4IA&
+s4..us3g/ZrRLqss3Uejs2k;[rPSZNs1SHEpU^74s1&*<s0hs8qZ-Yus/>sos.fUgs.K+Yqk!VS
+rLEPMqjQ]9j-\5\g\ud(g].9RU]5i~>
+JcFm4rr at WMJcD/<r;_EKe,T/+qgSQ/qu>8ss"jU2s#0n's*Woes#L*@s#pBGs$-HJrBpTRs$m#Y
+s%*/]s%<;as-itXs.01^s/#ass0D[3s0_m9s1&*?s1A6Cs1\A;s'Ye6s'kk8s().As3gqts475'
+s4[M.s5!]ms)7pVs)J'Zs)\-\rH8'^rHJ3brH\Eds*+'SmsG(\nU14`q1/?nrIY!#rIk-'rJ(9+
+s+p]3rJLW5rJ^]8s,[2As,m8Cs-*JIs-E\Os-WhTs.'+[s.B=bs.]Ohs/,gorMfgss/Z+"s/l7&
+s0)I,s0D[4s0r$=s186Cs1\NJs2"`Ps2=rVrQ"rZs1nZDs1&*>s180As1SHHqnN0Fs1SH at rNlO2
+s0_m9s1&*;qmHC0s0D[.s/l=$s/>sps/#=as/#aks.fGks.B=^s-s%Vs-EVJs-*>Cs,m>CrK$o;
+s,Ho7q2>91s,$c2s+^Q,qh+WppOVFViICBHomc.RJcFL)rrAhoJ,~>
+JcFm4rr at WMJcD/<r;_EKe,T/+qgSQ/qu>8sq#pX5`<>?1q_@=Po.fVLq$Hj(r<WEVs"OI.s"sa5
+s#9s<rsSE,rseu9rso&>q%3K:q\8uDr>,DLrttbRru:tXruM+\ru_7`ruqCdr?M=gs!Rgqs""+%
+s"OI.s"j[3s#9s;s#L*@s#pBGs$?ZRs%*/as&&eos&B#!s&]5's'5S3s'u(@s(VLLs).jWs)n?e
+rI"Wos+(-%s+gW5s,lo;s-E\Qs.97brMBOcs-3PIs-3JGs-!DEs-!8Cs-!DEs,-c1s+p]3s,6o=
+s,R,;s+p]/s+(,ss*4Qds)7pPs(24?s'kk8qdTS6s'Pe3s',@#s%iYcs$QfNs#U0=s#0m7s"s[1
+s"aU/s"OI+r@\+%s""$tq^MIls!Iaks!%Icq]GPRq]5VTq&A]>i>M/&omc.RJcFL)rrAhoJ,~>
+JcFm4rr at WMJcD/<r;_EKe,TH>s.B=bs.fUiqu6WCqu?2_q541is/>sss/Q+"s/l=(s02O/s#L*@
+s#g<Es&/krs$?ZOs$QfSs$crWs%!)[s%<;bs%`SjrDNYos&B"urDrr"rE0)&rEB5*rETA.s'Fjp
+q_A,(qh>')rJ19+rJC,#qiUc=rKI2ErJ(?-s+pQ/qhkEcs1JBGs1eTMs24lTo8W^/s,?u=s,c]3
+rK@&As-3PKrKdDKrL!VQqjRPSs.'+[s.B=bs.]Ogs.o[ks/,ams/>sss/Q+#s0)I-s0VI.s1&*@
+s1JBFs1eTLs24lUs2b5_s3:Sfs3:Sis3^krs4 at 5's4RG(s4..us3gqos3^kqs475'q:kr&s4IA&
+s4..us3g/ZrRLqss3Uejs2k;[rPSZNs1SHEpU^74s1&*<s0hs8qZ-Yus/>sos.fUgs.K+Yqk!VS
+rLEPMqjQ]9j-\5\g\ud(g].9RU]5i~>
+JcFm4rr at WMJcD/<r;_EKe,T/+qgSQ/qu>8ss"jU2s#0n's*Woes#L*@s#pBGs$-HJrBpTRs$m#Y
+s%*/]s%<;as-itXs.01^s/#ass0D[3s0_m9s1&*?s1A6Cs1\A;s'Ye6s'kk8s().As3gqts475'
+s4[M.s5!]ms)7pVs)J'Zs)\-\rH8'^rHJ3brH\Eds*+'SmsG(\nU14`q1/?nrIY!#rIk-'rJ(9+
+s+p]3rJLW5rJ^]8s,[2As,m8Cs-*JIs-E\Os-WhTs.'+[s.B=bs.]Ohs/,gorMfgss/Z+"s/l7&
+s0)I,s0D[4s0r$=s186Cs1\NJs2"`Ps2=rVrQ"rZs1nZDs1&*>s180As1SHHqnN0Fs1SH at rNlO2
+s0_m9s1&*;qmHC0s0D[.s/l=$s/>sps/#=as/#aks.fGks.B=^s-s%Vs-EVJs-*>Cs,m>CrK$o;
+s,Ho7q2>91s,$c2s+^Q,qh+WppOVFViICBHomc.RJcFL)rrAhoJ,~>
+JcFm4rr at WMJcD#8qZ)3Ig&Le1q0r?-s8UVuqZQj7^BF!3oeGhNo.fbPq$?j(q$6p*s"47'r at e1*
+s"j[4s#9f_oaLj.rsnu<q[iW:rtGDHrtYJJr>5JNru1nVruD%ZruV1^r?2+`s!%Ifs!7Uks![mr
+s""+$s"FC,s"aU1s#'g7s#C$>s#g<Gs$?ZQs%*/`s%r_ns&8qts&f;+s'G_6s'u(?s(;:Fs(q^R
+s)J'[s)n?cs*=Wks*ap!s+gQ3s,6o9s,6o:s,d8Ds-3PKs,d8Cs+gW1rJLK1s,?u6s+gW/s+UK+
+s+:9$s+13%s+LE+s+gW1s,-i5s+p]-s*juns)n?_s)J'Ts(MFBqdK5.q#LFks%WMcs%!)Us$$HC
+s#0m7rA=I.rA"=+s"FC)r at S%#s""+!r at .aps!Rgns!7Ugr?1nXq]>VTr>bJLm2G:.k8<f?l$e3`
+g].9RU]5i~>
+JcFm4rr at WMJcD#8qZ)3Ig&M)Ds.KCds.fUiq>UEAs8V>[s/,gos/>sss/Q+"s/l=(s02O/s#L*?
+s#g<Ys&/k]s$6TMs$QfSs$crWs%!)[s%35_s%NGes%iYmrD`ess&T)"s&f5&s'#A*s'5M.s'G_4
+s'Y:%oeHE!rJ(9+q2"Vss,d,?qi^uCs+C?)rIt3*rJ:?-s,-ies180 at s1SHIs1nZOrJ^E/s,R,<
+s,[,?o9'!7q31iCs-<PKrKmDKrL*VQs-s%Ys.01]s.KCcs.]Ies.o[ks/,gos/H$us/c7's0;U2
+q6p=4s1/0 at s1A<Ds1SHIs1nZOs24lUrQ"r[s2tAcs3:Sjs3q#!s4%(ss3^kms3CYkqpGGls4.#!
+s4@;%s4%(ts3^eks3TrVs3CYes2FlOs1eTHrOVU2q#LGqs/H$rs/#airLs1_q4IJSq47JSpRCuI
+m?udtd?iVeJcFL)rrAhoJ,~>
+JcFm4rr at WMJcD#8qZ)3Ig&Le1q0r?-s8UVus"jU2s*F]ls#0%!s#C$=s#^6Ds$$HIrB^HNs$ZlU
+s$m#Ys%*/]s%<;as%NGes.97`s.TIgs/H%&s0_m:s1/0As1JBFs1\NJs2"_Bs'Y_4s'kq:s().@
+s3:Sjs3^kqs4./%s4R9ds).jTs)A!Xs)\3^qfVp^rHJ9aq0):JmsG([msP"^q1/EprIY!#qh4p%
+s+^K-s+p]3rJLW5rJ^c9rJpo=s,d8CrK at 2Es-3PLs-NbRs-s%Zs.97`s.TIfqka=is/>mqs/Q$u
+s/c1$s0)I-s0Ma5s0hs;s186Cs1SHIs1nZNs1JBCs/c7&s0)I-s0D[3s0hs;s0r$9s0Ma1s02O+
+s/c7&s/uC+s0;U1s0Vg7s0_m6s0Ma2rNZC,s/l=%s/H$rqka%aq#LGhrLs7`s.01Ys-EVIrK@,A
+qiLc:rJgc7qhtE1s+p]1s+UE)q1JEnpOVLXl$qlFo7-"RJcFL)rrAhoJ,~>
+JcFm4rr at WMJcD#8qZ)3Ig&Le1q0r?-s8UVuqZQj7^BF!3oeGhNo.fbPq$?j(q$6p*s"47'r at e1*
+s"j[4s#9f_oaLj.rsnu<q[iW:rtGDHrtYJJr>5JNru1nVruD%ZruV1^r?2+`s!%Ifs!7Uks![mr
+s""+$s"FC,s"aU1s#'g7s#C$>s#g<Gs$?ZQs%*/`s%r_ns&8qts&f;+s'G_6s'u(?s(;:Fs(q^R
+s)J'[s)n?cs*=Wks*ap!s+gQ3s,6o9s,6o:s,d8Ds-3PKs,d8Cs+gW1rJLK1s,?u6s+gW/s+UK+
+s+:9$s+13%s+LE+s+gW1s,-i5s+p]-s*juns)n?_s)J'Ts(MFBqdK5.q#LFks%WMcs%!)Us$$HC
+s#0m7rA=I.rA"=+s"FC)r at S%#s""+!r at .aps!Rgns!7Ugr?1nXq]>VTr>bJLm2G:.k8<f?l$e3`
+g].9RU]5i~>
+JcFm4rr at WMJcD#8qZ)3Ig&M)Ds.KCds.fUiq>UEAs8V>[s/,gos/>sss/Q+"s/l=(s02O/s#L*?
+s#g<Ys&/k]s$6TMs$QfSs$crWs%!)[s%35_s%NGes%iYmrD`ess&T)"s&f5&s'#A*s'5M.s'G_4
+s'Y:%oeHE!rJ(9+q2"Vss,d,?qi^uCs+C?)rIt3*rJ:?-s,-ies180 at s1SHIs1nZOrJ^E/s,R,<
+s,[,?o9'!7q31iCs-<PKrKmDKrL*VQs-s%Ys.01]s.KCcs.]Ies.o[ks/,gos/H$us/c7's0;U2
+q6p=4s1/0 at s1A<Ds1SHIs1nZOs24lUrQ"r[s2tAcs3:Sjs3q#!s4%(ss3^kms3CYkqpGGls4.#!
+s4@;%s4%(ts3^eks3TrVs3CYes2FlOs1eTHrOVU2q#LGqs/H$rs/#airLs1_q4IJSq47JSpRCuI
+m?udtd?iVeJcFL)rrAhoJ,~>
+JcFm4rr at WMJcD#8qZ)3Ig&Le1q0r?-s8UVus"jU2s*F]ls#0%!s#C$=s#^6Ds$$HIrB^HNs$ZlU
+s$m#Ys%*/]s%<;as%NGes.97`s.TIgs/H%&s0_m:s1/0As1JBFs1\NJs2"_Bs'Y_4s'kq:s().@
+s3:Sjs3^kqs4./%s4R9ds).jTs)A!Xs)\3^qfVp^rHJ9aq0):JmsG([msP"^q1/EprIY!#qh4p%
+s+^K-s+p]3rJLW5rJ^c9rJpo=s,d8CrK at 2Es-3PLs-NbRs-s%Zs.97`s.TIfqka=is/>mqs/Q$u
+s/c1$s0)I-s0Ma5s0hs;s186Cs1SHIs1nZNs1JBCs/c7&s0)I-s0D[3s0hs;s0r$9s0Ma1s02O+
+s/c7&s/uC+s0;U1s0Vg7s0_m6s0Ma2rNZC,s/l=%s/H$rqka%aq#LGhrLs7`s.01Ys-EVIrK@,A
+qiLc:rJgc7qhtE1s+p]1s+UE)q1JEnpOVLXl$qlFo7-"RJcFL)rrAhoJ,~>
+JcFm4rr at WMJcCf2r;_EKh>d:7a+!mgr><3Noa1(AmhkXNpDE]2q[!-)o`tLJr at S%%s"FC+s"aHY
+q[<3.rsSi:r=Ac:r=Su at rtG8Fr>5DMru1hUruM+\r?)%^ruqCes!7Ujs!Rgps!dsts""+#s"==*
+s"aU1s"sa7s#U0Bs$-NMs$crYs%WMis&&eqs&]5's'5S0s'G_5s'l">s(MFJs(q^Rs)A!VrG_dW
+s)\3fs+'uus+LE,s+p]3rJLW3s*t'!s+C9'qh>''rIb-%rIOcps+13&s+LE,s+gW/s+:9"s*4Qb
+s)7pTs)%dMs(24=q-a!us'bq8s%r_fs%*/[s$m#Us$$HDs#0g4s"j[1rA"7)s"FC)r at S%#s""+!
+s![mps!Ials!.Ofr?;1`q&fJTq]5VTo,I-:nJU4$pOD4PJcFR+rrAhoJ,~>
+JcFm4rr at WMJcCf2r;_EKh>dMIs.KCds.f2bl)"EWs/5mqs/H$us/c7&s/uC+s0DYbs#U0As&&eo
+s$-NKs$H`Qs$ZlUs$m#Ys%*/]s%<;as%NGes%iYls&Aqts&]/$s&o;(s',G,s'>S0s'Pe6s'bR,
+mkOirs+^-#o.g9,q2t]-rIY'%s+LE+rJ(9+rJ:?-s1&$<s186Bs1JBFrJUQ3q2PE7s,?u=rK-i;
+q3(Q;s-3DGrKdJMqj@>MrL3bUs.'+[s.97_s.K=as.]Ies.o[ks/5mrs/Z1%s0)I-s0M[3s0hs:
+s1&$<s186Cs1SHIs1nZOs24lTs2G#XrQ"r[s2tAcrQkMhrQP;ds3L_lpX0#jrRLqts3gqos3CYg
+s3:MgmEts\s3:Sds2G#SqnN0Es1A$9q#LH)s0r$,s.f=_rLs1_q4IJSq47JSq4%2KnX8'tc^3>a
+JcFR+rrAhoJ,~>
+JcFm4rr at WMJcCf2r;_EKh>d:7a+"%FrAFV%s*Xi)k;WE#s#U0Bs#pBGs$-NKs$?ZPs$ZlUs$m#Y
+s%35_rCd/as%WMgs.KCds.o[ls/5mus0Ma9s1JBFs1\NJs1nZNs2+eDrF,_8rF>k<rFQ#Rs3L_m
+s3q"us4@;(s(qLJrGMXTs)\-]s*"?_rH7pZo5X/Es*F-]rI+]qq1/?ns+:-#qh5!'s+^K-on`X)
+s,6o9rJgi<rK.&As-!DGs-<VNs-WhTs.'+[s.B+\s.]Ohs/#ams/5gopSRtms/uC+s0D[2s0_m8
+s0qm6s0_m-qlKh"s/uC+s0DU1s0Ma1s0)I)q5jUus0)I,s0DU0s0D[0s02O,s/uC(s/Z1!s/5mn
+qkX7gq#LAjs/#aks.fUgs.TIas-itRs-!8As,d&;rJpi9s,?o7s,-i5s+p]1s+^Q-qh4]rpO`-j
+kCE)PhgY<Lj*lRZh>dKTU]5i~>
+JcFm4rr at WMJcCf2r;_EKh>d:7a+!mgr><3Noa1(AmhkXNpDE]2q[!-)o`tLJr at S%%s"FC+s"aHY
+q[<3.rsSi:r=Ac:r=Su at rtG8Fr>5DMru1hUruM+\r?)%^ruqCes!7Ujs!Rgps!dsts""+#s"==*
+s"aU1s"sa7s#U0Bs$-NMs$crYs%WMis&&eqs&]5's'5S0s'G_5s'l">s(MFJs(q^Rs)A!VrG_dW
+s)\3fs+'uus+LE,s+p]3rJLW3s*t'!s+C9'qh>''rIb-%rIOcps+13&s+LE,s+gW/s+:9"s*4Qb
+s)7pTs)%dMs(24=q-a!us'bq8s%r_fs%*/[s$m#Us$$HDs#0g4s"j[1rA"7)s"FC)r at S%#s""+!
+s![mps!Ials!.Ofr?;1`q&fJTq]5VTo,I-:nJU4$pOD4PJcFR+rrAhoJ,~>
+JcFm4rr at WMJcCf2r;_EKh>dMIs.KCds.f2bl)"EWs/5mqs/H$us/c7&s/uC+s0DYbs#U0As&&eo
+s$-NKs$H`Qs$ZlUs$m#Ys%*/]s%<;as%NGes%iYls&Aqts&]/$s&o;(s',G,s'>S0s'Pe6s'bR,
+mkOirs+^-#o.g9,q2t]-rIY'%s+LE+rJ(9+rJ:?-s1&$<s186Bs1JBFrJUQ3q2PE7s,?u=rK-i;
+q3(Q;s-3DGrKdJMqj@>MrL3bUs.'+[s.97_s.K=as.]Ies.o[ks/5mrs/Z1%s0)I-s0M[3s0hs:
+s1&$<s186Cs1SHIs1nZOs24lTs2G#XrQ"r[s2tAcrQkMhrQP;ds3L_lpX0#jrRLqts3gqos3CYg
+s3:MgmEts\s3:Sds2G#SqnN0Es1A$9q#LH)s0r$,s.f=_rLs1_q4IJSq47JSq4%2KnX8'tc^3>a
+JcFR+rrAhoJ,~>
+JcFm4rr at WMJcCf2r;_EKh>d:7a+"%FrAFV%s*Xi)k;WE#s#U0Bs#pBGs$-NKs$?ZPs$ZlUs$m#Y
+s%35_rCd/as%WMgs.KCds.o[ls/5mus0Ma9s1JBFs1\NJs1nZNs2+eDrF,_8rF>k<rFQ#Rs3L_m
+s3q"us4@;(s(qLJrGMXTs)\-]s*"?_rH7pZo5X/Es*F-]rI+]qq1/?ns+:-#qh5!'s+^K-on`X)
+s,6o9rJgi<rK.&As-!DGs-<VNs-WhTs.'+[s.B+\s.]Ohs/#ams/5gopSRtms/uC+s0D[2s0_m8
+s0qm6s0_m-qlKh"s/uC+s0DU1s0Ma1s0)I)q5jUus0)I,s0DU0s0D[0s02O,s/uC(s/Z1!s/5mn
+qkX7gq#LAjs/#aks.fUgs.TIas-itRs-!8As,d&;rJpi9s,?o7s,-i5s+p]1s+^Q-qh4]rpO`-j
+kCE)PhgY<Lj*lRZh>dKTU]5i~>
+JcFm4rr at WMJcCZ.r;_EKiW&^;a+!mgr><-Lq[)LAo,.'Rq\]>;pBUR!pBLL"s!msts"+1%r@[sR
+q[390q[EK3r=8i<rt,, at q\&i at rtPJKr>5DLru(bRruD%Zr>tnZruh=bs!.Ohs!I[ls!dsts"+1%
+s"FC+s"XO/s"j[4s#9s<s$$HLs$crXs%<;bs%iYls&B#!s&]5&s',M1s'bq<s(;:Es(_RLrG;LN
+s).jTs)A!Ys)e9bs*F]ns+(-$qh4uurI=crs+:9$s*jopqgSKls*jutq1/Krs+C?#s*Ocls*4Qb
+s).jQrFu:Ds'l"8q#LA#s'5S&s%NGcs%<;^s%!)Ws$-NIs#U0<s"sa3s"aO-s"OC)r@\+%s"+1#
+s!n$ts![mps!@[js!.Ofr?;+^ru_%XpDs2Poc*9:o,6:"s*rjRJcFR+rrAhoJ,~>
+JcFm4rr at WMJcCZ.r;_EKiW&qMs.TCdoD\'PrMKUms/>sss/Q+"s/l=)s02O/s#L*?s#^6Ws&/k]
+s$6TNs$QfSs$crWs%!)[s%35_s%EAcs%WMgs%iYls&8qts&]5&s&o;(rEK;,rE]G0s'P_4s'bq:
+q[)LArIt-'rJ0u!qiLc+s+('!rIb-'rIt9+rJ19+s,$carO;g:s1/*>s,-]3qi(?1s,6i:s,d2A
+rK?u?pQYWAqj.8Kq3_,KrL3bUs.'+[s.97_rLs1arM0Cgs/,gps/Q+"s/l=)s0;U1s0Va4rO;g:
+s1/0 at s1JBFs1eTLs2"`Ps24lTrPefVrQ"r[s3(Gas2tAbs3:Shs3UAbs3q"qs3L_is3(Gbs3(Ge
+s3CYjs3UAbs3(A]s2P)Tqn;s at rOM_(rODm6s/Q*oo:l,UrLj%[q4 at DQqjdPQqjR2GfpKaFg\ud(
+h>dKTU]5i~>
+JcFm4rr at WMJcCZ.r;_EKiW&^;a+"%Fs#'g7s*OcnjZ!3!s#U0Bs#pBGs$-NLs$H`QrC-`Vs%*/]
+s%<;as%NAcs%`Sis.fUis/,gorMfh"s0_m>s1\NKrPANOs2=kErF>e:s(25Ts3CYks3^kqs4./$
+rG2 at JrGDRPrGV^Qs)A!YnT=ABl[/YXm<nk\s*sipqgnd!q1JX!s+UK-onWR's,$c5qhtE3rJgi=
+s-!>Es-3PKs-NbRs-ihTs.97`s.TIfs.o7_q541ms/l=)s02C*s02O'rN#[os/uC+s0;U.s0)I)
+s/c1"q5jUus0)I,s0D[0s02O,s/uC'rMomrs/,glq#LGjs/#Ogs/#aks.fUes-itUs-E\JrK-o;
+qi:Q5s,?o7s,-i5s+p]1rJ(9)qh4]rpO`-jkCE/RgOB0Ph0sqTh>dKTU]5i~>
+JcFm4rr at WMJcCZ.r;_EKiW&^;a+!mgr><-Lq[)LAo,.'Rq\]>;pBUR!pBLL"s!msts"+1%r@[sR
+q[390q[EK3r=8i<rt,, at q\&i at rtPJKr>5DLru(bRruD%Zr>tnZruh=bs!.Ohs!I[ls!dsts"+1%
+s"FC+s"XO/s"j[4s#9s<s$$HLs$crXs%<;bs%iYls&B#!s&]5&s',M1s'bq<s(;:Es(_RLrG;LN
+s).jTs)A!Ys)e9bs*F]ns+(-$qh4uurI=crs+:9$s*jopqgSKls*jutq1/Krs+C?#s*Ocls*4Qb
+s).jQrFu:Ds'l"8q#LA#s'5S&s%NGcs%<;^s%!)Ws$-NIs#U0<s"sa3s"aO-s"OC)r@\+%s"+1#
+s!n$ts![mps!@[js!.Ofr?;+^ru_%XpDs2Poc*9:o,6:"s*rjRJcFR+rrAhoJ,~>
+JcFm4rr at WMJcCZ.r;_EKiW&qMs.TCdoD\'PrMKUms/>sss/Q+"s/l=)s02O/s#L*?s#^6Ws&/k]
+s$6TNs$QfSs$crWs%!)[s%35_s%EAcs%WMgs%iYls&8qts&]5&s&o;(rEK;,rE]G0s'P_4s'bq:
+q[)LArIt-'rJ0u!qiLc+s+('!rIb-'rIt9+rJ19+s,$carO;g:s1/*>s,-]3qi(?1s,6i:s,d2A
+rK?u?pQYWAqj.8Kq3_,KrL3bUs.'+[s.97_rLs1arM0Cgs/,gps/Q+"s/l=)s0;U1s0Va4rO;g:
+s1/0 at s1JBFs1eTLs2"`Ps24lTrPefVrQ"r[s3(Gas2tAbs3:Shs3UAbs3q"qs3L_is3(Gbs3(Ge
+s3CYjs3UAbs3(A]s2P)Tqn;s at rOM_(rODm6s/Q*oo:l,UrLj%[q4 at DQqjdPQqjR2GfpKaFg\ud(
+h>dKTU]5i~>
+JcFm4rr at WMJcCZ.r;_EKiW&^;a+"%Fs#'g7s*OcnjZ!3!s#U0Bs#pBGs$-NLs$H`QrC-`Vs%*/]
+s%<;as%NAcs%`Sis.fUis/,gorMfh"s0_m>s1\NKrPANOs2=kErF>e:s(25Ts3CYks3^kqs4./$
+rG2 at JrGDRPrGV^Qs)A!YnT=ABl[/YXm<nk\s*sipqgnd!q1JX!s+UK-onWR's,$c5qhtE3rJgi=
+s-!>Es-3PKs-NbRs-ihTs.97`s.TIfs.o7_q541ms/l=)s02C*s02O'rN#[os/uC+s0;U.s0)I)
+s/c1"q5jUus0)I,s0D[0s02O,s/uC'rMomrs/,glq#LGjs/#Ogs/#aks.fUes-itUs-E\JrK-o;
+qi:Q5s,?o7s,-i5s+p]1rJ(9)qh4]rpO`-jkCE/RgOB0Ph0sqTh>dKTU]5i~>
+JcFm4rr at WMJcCN*r;_EKjo>3Ao7$X%f7*T"rtr3JrtsiPpDEKVrttJ7qZQWspBLX&s!Rgps!dst
+s""+#s"40Tq[*-,q[<E4rsJc9r=Jo>rt>, at q\8uFr>>PPru1hTr>knZr?)%^ruqCds!.Ois!Ian
+s![mss"+1%s"FC+rA"=-s"sa6s#U0Ds$?ZPs$crXs%35_s%NGes%`Sks&8qus&oA-s'bq;s(2.A
+rFu:Hs(q^Ps).jTs)A!Xs)S-_s*=Wls*aoss*Xips*jutrIFoss*aoos*4Qes*4Kgqg8?js*jiq
+s*aojs)J!Ys)S-Ws(VLEs(). at qZ-S#s'#G's&8qkrCd)_s%<;_s$$HDs#L*=s#0m5rA+C,r at e+%
+r at S%#r@@mts!dsqs!Ials!7Uhs!%Idq]PhZq&]>Pq],8Jo,@'8fbiImJcFR+rrAhoJ,~>
+JcFm4rr at WMJcCN*r;_EKjo>@Rs.]Ogs8DWirM8hWrMKUms/>sss/Q+"s/l=)s0;U0s#L*?s#^6W
+s$$HIs$?ZOs$QfSs$crWs%!)[s%35_s%EAcs%WMgs%iSis&/krs&]5'rEB5*rETA.rEfM2rF#Y6
+s'l"<s**QZs+L9's+^,"s,Zu(s*juus+13%rIb-'s+UE+qhP-+s0Ma4s0_m8s0r$<s1.r_qht?1
+rJgi8s,[, at rK?i;q3:cArKd>Iqj@>MrL3bUs.'+[s.97_s.K=as.]Ies.o[ks/5mrs/Z1$s/uC+
+s0;U0s0Ma4s0_m8s0r$<s1/0 at s1A<Es1\NJs1nZNrPSTPrPefVs2Y/\s2k;as31Mfs3L_lp!Nfc
+s3CYgs2k;]s2b5^s3(Gds3:Shs3L_lqpGGhs2XrOs1\HDrOVk+rODm8s0;U+s/,UerM&hUs.K7]
+qk!PQqjdVSs-iVKgR,[@g\ud(h>dKTU]5i~>
+JcFm4rr at WMJcCN*r;_EKjo>3Ao7$X%f7*`Vs#'g7s*Wics#L*?s#g<Es$$HIs$?ZOs$QfTs$m#Y
+s%*/]s%<;as%NGes%`MgrDETls/>mqs/Z1%s02O6rPANNs24lTs2G"IrF>k<s(2/Rs3CYks3^kq
+s4.-arG2FLrGDRMqeZ4Js).dSs)J'ZqfD at Kl$NGVm<neZs*sorq18KrrIb'%rIt9+q1o!+rJCQ3
+q2>31s,[2BrK@,CrKR8Gs-E\Os-`nVs.01^s.TIes.fUiqkO1erMB7cs/>stqlKgrs/H$us/Yam
+s/l=(rN-%"s/Q+"orS1rrNH7(s/l=%rMT[oqZ-Gds.fUirMBIis/#aks-itRs-<VKs-!DCqi:K3
+qi(K3s,-i5rJ:K/rJ(9)qh4WppO`-jm==YTZ[RK*h>dKTU]5i~>
+JcFm4rr at WMJcCN*r;_EKjo>3Ao7$X%f7*T"rtr3JrtsiPpDEKVrttJ7qZQWspBLX&s!Rgps!dst
+s""+#s"40Tq[*-,q[<E4rsJc9r=Jo>rt>, at q\8uFr>>PPru1hTr>knZr?)%^ruqCds!.Ois!Ian
+s![mss"+1%s"FC+rA"=-s"sa6s#U0Ds$?ZPs$crXs%35_s%NGes%`Sks&8qus&oA-s'bq;s(2.A
+rFu:Hs(q^Ps).jTs)A!Xs)S-_s*=Wls*aoss*Xips*jutrIFoss*aoos*4Qes*4Kgqg8?js*jiq
+s*aojs)J!Ys)S-Ws(VLEs(). at qZ-S#s'#G's&8qkrCd)_s%<;_s$$HDs#L*=s#0m5rA+C,r at e+%
+r at S%#r@@mts!dsqs!Ials!7Uhs!%Idq]PhZq&]>Pq],8Jo,@'8fbiImJcFR+rrAhoJ,~>
+JcFm4rr at WMJcCN*r;_EKjo>@Rs.]Ogs8DWirM8hWrMKUms/>sss/Q+"s/l=)s0;U0s#L*?s#^6W
+s$$HIs$?ZOs$QfSs$crWs%!)[s%35_s%EAcs%WMgs%iSis&/krs&]5'rEB5*rETA.rEfM2rF#Y6
+s'l"<s**QZs+L9's+^,"s,Zu(s*juus+13%rIb-'s+UE+qhP-+s0Ma4s0_m8s0r$<s1.r_qht?1
+rJgi8s,[, at rK?i;q3:cArKd>Iqj@>MrL3bUs.'+[s.97_s.K=as.]Ies.o[ks/5mrs/Z1$s/uC+
+s0;U0s0Ma4s0_m8s0r$<s1/0 at s1A<Es1\NJs1nZNrPSTPrPefVs2Y/\s2k;as31Mfs3L_lp!Nfc
+s3CYgs2k;]s2b5^s3(Gds3:Shs3L_lqpGGhs2XrOs1\HDrOVk+rODm8s0;U+s/,UerM&hUs.K7]
+qk!PQqjdVSs-iVKgR,[@g\ud(h>dKTU]5i~>
+JcFm4rr at WMJcCN*r;_EKjo>3Ao7$X%f7*`Vs#'g7s*Wics#L*?s#g<Es$$HIs$?ZOs$QfTs$m#Y
+s%*/]s%<;as%NGes%`MgrDETls/>mqs/Z1%s02O6rPANNs24lTs2G"IrF>k<s(2/Rs3CYks3^kq
+s4.-arG2FLrGDRMqeZ4Js).dSs)J'ZqfD at Kl$NGVm<neZs*sorq18KrrIb'%rIt9+q1o!+rJCQ3
+q2>31s,[2BrK@,CrKR8Gs-E\Os-`nVs.01^s.TIes.fUiqkO1erMB7cs/>stqlKgrs/H$us/Yam
+s/l=(rN-%"s/Q+"orS1rrNH7(s/l=%rMT[oqZ-Gds.fUirMBIis/#aks-itRs-<VKs-!DCqi:K3
+qi(K3s,-i5rJ:K/rJ(9)qh4WppO`-jm==YTZ[RK*h>dKTU]5i~>
+JcFm4rr at WMJcCB&r;_EKl2UWEq0r?-rI4W-fm`f$rtr?Nq&&3Jq&&i\rs\o2r<E9(o*"jmpBLXD
+s!Ians![mrs!mstq[!!(r<iQ4rseu<rseu>q%<W>pCmQ at r>#8Jr>GPPru:nVruM+\ru_7`ruqCd
+s!.Ohs!@[ls![mss""+$s"==)s"OI-s"aU1s#0m<s#g<Gs$H`Rs$crXs%*/^s%EAds%`Sjs&/ks
+s&f;+s'Pe7rFGq>s(;:Es(_RLs(q^Ps(q^Qs)A!Ys)e9as*+Khs*Xips*jors*O]is*4Qds)\-]
+s*+Eds*=Wjs*Xiqs*aoms)IpNs(q^Ns(2!+s'G_0s&]5"s%r_hs%35]rCR#]rCd/Ys#L*:s"sa3
+s"aO-q_7t$s"41#s""$ts!dsrs!Rgns!@[js!.Ofruq=`r?(bTpDs,Noc*cHko&(igO=_Rh>dKT
+U]5i~>
+JcFm4rr at WMJcCB&r;_EKl2UdVrM0Dkqu6VkrVl\in"ou[s/5mqs/H$us/c7&s0)I-s0DYbs#U0A
+s%r_Zs$-NLs$H`Qs$ZlVs%!#Ys%35_s%EAcs%WMgs%iYkrDESms&B#!s&f;(s',M.rE]A.s'P_4
+s'bqNs*+EdjY?Xds+^8&rs\pRs*O]ls*aors*t'!s+1-#s+C?)s+UE+q1o!Ss0D[2s0Vg6s0hm8
+pPSd)s,?u<s,[2?rK6u?rKHo=q3CiCqj72IrL*POs-s%Ys.01]s.B=as.TCcrM0Cgs/,gos/H%!
+s/l7'rNZ=-rO)U5s1&*?s1A<Ds1SBGs1nZNs2+`PrP\`Rs2G#Ys2k;as3:Shs3UMfs31Gas2k;\
+s2=rWs2Y/]s2tAbs31Mfs3CYjs3CYes2+NBs1.q*s0hs8s0D[.s/Z0us/#[iq4mn_o:c,Uqk*bW
+q47JSrL<bSq3fp'\X2(MJcFR+rrAhoJ,~>
+JcFm4rr at WMJcCB&r;_EKl2UWEq0r?-rI4W-fm`rXs#'g7s*Wics#L*@s#g<Es$$HIs$?ZOs$ZlU
+s$m#Ys%35_rCd/as%WMgs%iYkrDESms/>sss/Z1$s/l=(s02O.s1A<Js24lTs2P)\s'u"<s(2/R
+s3L_ms3gqss(VLJs(hXKrG):HqeZ4JrGMRPs)A!Xs)RXLrHnKhnU(:^l[8SXq1/9lrIY!#rIk-'
+s+^E+s+pW1rJLK1s,?u;rK.&As-!>Eqiq&Es-E\Os-WhTs.'+\s.KCcq4dnas.o[kn#$,_s/>ss
+s/Q$unZ;\iql9[so;qtps/l=#q#LGks.fIcrLs7crM0Cgs/#ams.B=Vs,m>Cs,[2?pPo'/qhtE1
+rJCQ1rJ1?+rIt'#pOi3lpOVpdl$oseJcFR+rrAhoJ,~>
+JcFm4rr at WMJcCB&r;_EKl2UWEq0r?-rI4W-fm`f$rtr?Nq&&3Jq&&i\rs\o2r<E9(o*"jmpBLXD
+s!Ians![mrs!mstq[!!(r<iQ4rseu<rseu>q%<W>pCmQ at r>#8Jr>GPPru:nVruM+\ru_7`ruqCd
+s!.Ohs!@[ls![mss""+$s"==)s"OI-s"aU1s#0m<s#g<Gs$H`Rs$crXs%*/^s%EAds%`Sjs&/ks
+s&f;+s'Pe7rFGq>s(;:Es(_RLs(q^Ps(q^Qs)A!Ys)e9as*+Khs*Xips*jors*O]is*4Qds)\-]
+s*+Eds*=Wjs*Xiqs*aoms)IpNs(q^Ns(2!+s'G_0s&]5"s%r_hs%35]rCR#]rCd/Ys#L*:s"sa3
+s"aO-q_7t$s"41#s""$ts!dsrs!Rgns!@[js!.Ofruq=`r?(bTpDs,Noc*cHko&(igO=_Rh>dKT
+U]5i~>
+JcFm4rr at WMJcCB&r;_EKl2UdVrM0Dkqu6VkrVl\in"ou[s/5mqs/H$us/c7&s0)I-s0DYbs#U0A
+s%r_Zs$-NLs$H`Qs$ZlVs%!#Ys%35_s%EAcs%WMgs%iYkrDESms&B#!s&f;(s',M.rE]A.s'P_4
+s'bqNs*+EdjY?Xds+^8&rs\pRs*O]ls*aors*t'!s+1-#s+C?)s+UE+q1o!Ss0D[2s0Vg6s0hm8
+pPSd)s,?u<s,[2?rK6u?rKHo=q3CiCqj72IrL*POs-s%Ys.01]s.B=as.TCcrM0Cgs/,gos/H%!
+s/l7'rNZ=-rO)U5s1&*?s1A<Ds1SBGs1nZNs2+`PrP\`Rs2G#Ys2k;as3:Shs3UMfs31Gas2k;\
+s2=rWs2Y/]s2tAbs31Mfs3CYjs3CYes2+NBs1.q*s0hs8s0D[.s/Z0us/#[iq4mn_o:c,Uqk*bW
+q47JSrL<bSq3fp'\X2(MJcFR+rrAhoJ,~>
+JcFm4rr at WMJcCB&r;_EKl2UWEq0r?-rI4W-fm`rXs#'g7s*Wics#L*@s#g<Es$$HIs$?ZOs$ZlU
+s$m#Ys%35_rCd/as%WMgs%iYkrDESms/>sss/Z1$s/l=(s02O.s1A<Js24lTs2P)\s'u"<s(2/R
+s3L_ms3gqss(VLJs(hXKrG):HqeZ4JrGMRPs)A!Xs)RXLrHnKhnU(:^l[8SXq1/9lrIY!#rIk-'
+s+^E+s+pW1rJLK1s,?u;rK.&As-!>Eqiq&Es-E\Os-WhTs.'+\s.KCcq4dnas.o[kn#$,_s/>ss
+s/Q$unZ;\iql9[so;qtps/l=#q#LGks.fIcrLs7crM0Cgs/#ams.B=Vs,m>Cs,[2?pPo'/qhtE1
+rJCQ1rJ1?+rIt'#pOi3lpOVpdl$oseJcFR+rrAhoJ,~>
+JcFm4rr at WMJcC<$s8W#tJcG-;q`ah)s$$C1q``\^r<3'9]`e!FjY?]Nq(_mWrs\o4q#g-iq$$Qu
+s!.Ohs!@Uks![mrrs/?*q[*92rsno:rseo<q[rc>r=f&Bq\B,Jr>GPPr>YbVruM+\r?)%^ruqCd
+s!.Ohs!Ians![mss"+1%s"==)rA"=-s#0m;s#^6Es$6TNs$QfTs$m#Zs%35`s%NGfs%r_ns&K)#
+s&oA-s'Pe7s'u(>s(;:Dqe?(Fs(hXOs)7pXs)\3_s*4QjrI+]ps*+KaqfMjYs)J'Xs)J'\rH8-`
+rHS?_s).jPs(2.>q#LFss&T"us&K(rs%`Ses%35]s%!#Ys$m#Rs#U0:rA+7)r at n1's"=7%s"++!
+s!n$ts![mps!Ials!7Uhr?D7br?2%\ocEiJq],DNq\nQ6f,31iJcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$s8W#tJcG-;s.B7bq>UDirVl\imA9i[s/5mqs/H$us/c7's0)I-s0DYbs#U0U
+s&&e[s$6TMs$H`Qs$crWs%!)[s%35_s%EAcs%WGes%iYks&&_ms&8qss&T/%s&oA+s'5S0s'GY2
+s'Yk8s)n?brHJ9ds*<]\rIt&%rsSc6rHeEhs*aorrIFitrIY!#s+UK-q1o!Qs02O.rNlO2s0_f^
+pPT!/s,Qo:s,R&?qi^i?qipi?q3LoEq3_,KrL3bUrLEnYs.B=arLs7cqkO1fs/5mqs/Q+#s/l=(
+s0)I,s0;U0s0Ma4s0_m8s0r$<s1/0 at s1A<Ds1SBGs1nNJs1nZNs2+fSs2P)\s3(Ges3L_lqpGGc
+q8NBOs2+fSs2G#Ys2b5^s2t;`s24lOs1JB?rO)G$s0_g3s0D[0s02O*s/Q*ss/#ako:u8YpS%JW
+qk*bWrLNnWrL<bSq3fd#\X2"KJcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$s8W#tJcG-;q`ah)s$$C1q``\^s"sa5s*OcnjZ!3!s#L*@s#g6Cs$-NLs$H`Q
+s$crXs%*/]s%<5_s%NGes%`Sis%rYks&/kqs/Q+"s/l=(s0)C+s0Ma4s24lUs2b5^s2t:Ns31Mf
+s3CYks3^kqs3L^Ws(D at Fs(VFHs(hLJrGD at Js)7pVmrAAPqg&3fnU(:]nU0qVqgeKnrIY!#rIk-'
+rJ(9+rJ:E/rJLQ3s,?u<s,[2As,m8CrKI2Eqj%2Is-WhSs-itWs.01^s.K=as.]Ogs.o[knYZ>_
+s/,gprMfgss/Ygos/H$us/Z1"rMfgss/Ygoq#LAds.TIfs.o[hoqD>Ys.KC\s-3PEo8WX+qhtE1
+qhb9-rJ19)rIt-%on3!jpOW'hjaXI_JcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$s8W#tJcG-;q`ah)s$$C1q``\^r<3'9]`e!FjY?]Nq(_mWrs\o4q#g-iq$$Qu
+s!.Ohs!@Uks![mrrs/?*q[*92rsno:rseo<q[rc>r=f&Bq\B,Jr>GPPr>YbVruM+\r?)%^ruqCd
+s!.Ohs!Ians![mss"+1%s"==)rA"=-s#0m;s#^6Es$6TNs$QfTs$m#Zs%35`s%NGfs%r_ns&K)#
+s&oA-s'Pe7s'u(>s(;:Dqe?(Fs(hXOs)7pXs)\3_s*4QjrI+]ps*+KaqfMjYs)J'Xs)J'\rH8-`
+rHS?_s).jPs(2.>q#LFss&T"us&K(rs%`Ses%35]s%!#Ys$m#Rs#U0:rA+7)r at n1's"=7%s"++!
+s!n$ts![mps!Ials!7Uhr?D7br?2%\ocEiJq],DNq\nQ6f,31iJcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$s8W#tJcG-;s.B7bq>UDirVl\imA9i[s/5mqs/H$us/c7's0)I-s0DYbs#U0U
+s&&e[s$6TMs$H`Qs$crWs%!)[s%35_s%EAcs%WGes%iYks&&_ms&8qss&T/%s&oA+s'5S0s'GY2
+s'Yk8s)n?brHJ9ds*<]\rIt&%rsSc6rHeEhs*aorrIFitrIY!#s+UK-q1o!Qs02O.rNlO2s0_f^
+pPT!/s,Qo:s,R&?qi^i?qipi?q3LoEq3_,KrL3bUrLEnYs.B=arLs7cqkO1fs/5mqs/Q+#s/l=(
+s0)I,s0;U0s0Ma4s0_m8s0r$<s1/0 at s1A<Ds1SBGs1nNJs1nZNs2+fSs2P)\s3(Ges3L_lqpGGc
+q8NBOs2+fSs2G#Ys2b5^s2t;`s24lOs1JB?rO)G$s0_g3s0D[0s02O*s/Q*ss/#ako:u8YpS%JW
+qk*bWrLNnWrL<bSq3fd#\X2"KJcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$s8W#tJcG-;q`ah)s$$C1q``\^s"sa5s*OcnjZ!3!s#L*@s#g6Cs$-NLs$H`Q
+s$crXs%*/]s%<5_s%NGes%`Sis%rYks&/kqs/Q+"s/l=(s0)C+s0Ma4s24lUs2b5^s2t:Ns31Mf
+s3CYks3^kqs3L^Ws(D at Fs(VFHs(hLJrGD at Js)7pVmrAAPqg&3fnU(:]nU0qVqgeKnrIY!#rIk-'
+rJ(9+rJ:E/rJLQ3s,?u<s,[2As,m8CrKI2Eqj%2Is-WhSs-itWs.01^s.K=as.]Ogs.o[knYZ>_
+s/,gprMfgss/Ygos/H$us/Z1"rMfgss/Ygoq#LAds.TIfs.o[hoqD>Ys.KC\s-3PEo8WX+qhtE1
+qhb9-rJ19)rIt-%on3!jpOW'hjaXI_JcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$qu?NnJcG?Aq`an+s$$=/q`ab's$#Onr<3'9_$'3DjY?cPs"XN]qZd'*o`Odg
+q$$X"s!%Cds!7Ujs!Ianq$6p*rsA]6r=8Q4rseu>q[rW:rtG>Fq\B&Fr>GJNru:tXr>knZru_7`
+ruqCdr?M=gs!Iaos!n%"s"47's"FC+s"XO0s"sa7s#U0Bs$$HJs$H`Qs$ZlVs%!)\s%<;bs%WMi
+s&8qts&]5's'5S0s'Yk9s(). at s(;:As(;4Cs(_RMrGDRRs)e9cs*Ocns)S-Vs).jTrG_dSs(hXK
+s)%dUs)S'Zs(hXIs'u(<s'bd)s'G_1s&f;$rDNYmrD<Mhs%NGbs%35]rC6fPs#U0;q_S7-q_ at t%
+s"FC)s"41#r@@mts![mps!Ials!7Uhr?D1`r?2%\pE&oHq],PRq\nE2eJR%iJcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$qu?NnJcG?As.KCes.oPks.oPkqkWt_s.oIes/,gos/>sss/Q+#s/uC+s0;U0
+s#L*?s%iYls$$HIs$6TNs$QfTs$m#Ys%*/]s%<;as%NGes%`SirD<Mks&/kqrD`ess&T/%s'#G,
+s'5S0s'G_4s)e3^s*"?bs*4Qhs*Ec]s+UJ-pC$kEqg8?krI4crrIFp!rIY'&s+UK-rJ1EUrNH7*
+s0;U0s0MHVs,6o:s,[&=qiUo=qiUi?qigoApQbK=rKm>IrL*POs-s%Ys.01]s.K=arM'7cs.o[k
+s/5mrs/Q+"s/c7&s/uC*s02O.s0D[2s0Vg6s0hs:s1&*>s186Bs1SHHqnN0Ds1SBGs2"`Qs2G#Z
+s2tAds3LYks2OrOrPANKs1nZNs24lUs2P)Zs2b5Ts186<s0Ma2qZ-N"s0Vg4s0;U-s/l=&s/Q*u
+s/5mos/#ako:u8Yqk<hYpRhJWs.01[rL<bSopO9r\!PkKJcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$qu?NnJcG?Aq`an+s$$=/q`ab's$#Ons"sa5rI!]cs#C$=rB($As#pBHrBUBL
+s$ZlVs%*/]s%<;as%NAcrD3Gis&&_mrD`fus/l=(s02O.s0D[2rO)[7s2"`Ws2tAbs()/Rs3:Sd
+rQG5brFZ(Bs(MFHs(_LJqeZ4Jqel:Ls)@RLqfr'bs*F3^s*=Wko6g.Xs*jiqqgnWrrIb'%rIt3)
+rJ1E/rJCK1rJU]7s,I&>rK.&As-!8CrKR8Gs-E\Os-WhTs-s%Ys.0+\s.TCcs.fUis/#Ies/#ai
+s.fUjs/,gos/H$urN#aqs/>sos/5msql0UqrN#muqZ-Yqs/,gjs.97\s.97_s.K=aoq;>Rs-3PE
+m>_.)rJUK/rJCK/rJ19)qh=p#pOi'hq18Kph1)VWJcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$qu?NnJcG?Aq`an+s$$=/q`ab's$#Onr<3'9_$'3DjY?cPs"XN]qZd'*o`Odg
+q$$X"s!%Cds!7Ujs!Ianq$6p*rsA]6r=8Q4rseu>q[rW:rtG>Fq\B&Fr>GJNru:tXr>knZru_7`
+ruqCdr?M=gs!Iaos!n%"s"47's"FC+s"XO0s"sa7s#U0Bs$$HJs$H`Qs$ZlVs%!)\s%<;bs%WMi
+s&8qts&]5's'5S0s'Yk9s(). at s(;:As(;4Cs(_RMrGDRRs)e9cs*Ocns)S-Vs).jTrG_dSs(hXK
+s)%dUs)S'Zs(hXIs'u(<s'bd)s'G_1s&f;$rDNYmrD<Mhs%NGbs%35]rC6fPs#U0;q_S7-q_ at t%
+s"FC)s"41#r@@mts![mps!Ials!7Uhr?D1`r?2%\pE&oHq],PRq\nE2eJR%iJcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$qu?NnJcG?As.KCes.oPks.oPkqkWt_s.oIes/,gos/>sss/Q+#s/uC+s0;U0
+s#L*?s%iYls$$HIs$6TNs$QfTs$m#Ys%*/]s%<;as%NGes%`SirD<Mks&/kqrD`ess&T/%s'#G,
+s'5S0s'G_4s)e3^s*"?bs*4Qhs*Ec]s+UJ-pC$kEqg8?krI4crrIFp!rIY'&s+UK-rJ1EUrNH7*
+s0;U0s0MHVs,6o:s,[&=qiUo=qiUi?qigoApQbK=rKm>IrL*POs-s%Ys.01]s.K=arM'7cs.o[k
+s/5mrs/Q+"s/c7&s/uC*s02O.s0D[2s0Vg6s0hs:s1&*>s186Bs1SHHqnN0Ds1SBGs2"`Qs2G#Z
+s2tAds3LYks2OrOrPANKs1nZNs24lUs2P)Zs2b5Ts186<s0Ma2qZ-N"s0Vg4s0;U-s/l=&s/Q*u
+s/5mos/#ako:u8Yqk<hYpRhJWs.01[rL<bSopO9r\!PkKJcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$qu?NnJcG?Aq`an+s$$=/q`ab's$#Ons"sa5rI!]cs#C$=rB($As#pBHrBUBL
+s$ZlVs%*/]s%<;as%NAcrD3Gis&&_mrD`fus/l=(s02O.s0D[2rO)[7s2"`Ws2tAbs()/Rs3:Sd
+rQG5brFZ(Bs(MFHs(_LJqeZ4Jqel:Ls)@RLqfr'bs*F3^s*=Wko6g.Xs*jiqqgnWrrIb'%rIt3)
+rJ1E/rJCK1rJU]7s,I&>rK.&As-!8CrKR8Gs-E\Os-WhTs-s%Ys.0+\s.TCcs.fUis/#Ies/#ai
+s.fUjs/,gos/H$urN#aqs/>sos/5msql0UqrN#muqZ-Yqs/,gjs.97\s.97_s.K=aoq;>Rs-3PE
+m>_.)rJUK/rJCK/rJ19)qh=p#pOi'hq18Kph1)VWJcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$p&FsjJcGKErBC%+s$$C1q*+J#q`a=pr<3'9`<>?@lS7o6o)nReq$$^$r?D+`
+s!@[lr<N?/rsSc6rseo:r=Ac:rso&?pC[?:r=f,Dr>#2Fr>GPPr>Y\TruM+\ru_7`ruqCds!.Oh
+s!Ians!dsus"+1%s"==)s"XO/s"j[5s#C$>s#g<Fs$6TMs$QfSs$m#YrCR#^s%`Sjs&/kss&]5&
+s&oA,s'P_5s'Yk8s(). at s(;:Es(D at Cs(MFJs)7pVs)7pSs(D at Fs(_LJs(q^Is'Ye6s'u(<s'Ye3
+q#LA$s&oA%s&/kns%WMgs%WMerCd/_s%!)Vs$-NGs#C$9oeZP%rA"=+r at e1's"41#s""*us![mp
+s!@[jr?M7br?:tZru_%Xo,[cLq]#JPh\jfYgO=_RhuE]VU]5i~>
+JcFm4rr at WMJcC<$p&FsjJcGKEs.KCes8Dios.oVmq5!\[qkX7gs/,gos/>sss/Z1$s/uC+s0;U0
+s#L*?s%iYls$$HIs$6TNs$QfSs$m#Ys%*/]s%<;as%NGes%`Sis%rYks&/kqs&B"urDrr"s&f;)
+s',M.s)S-\s)e3^s*"?bs*4Qhs*F]ls*X,er<i3*s*=Kfqg8?jrI+]ps*suts+13%s+L?*s+gQU
+qlft'rJCQ4rJgi;rK$i;qiUo>o90'9qipi?q3LiCqj@>MrL3bUs.'+[s.B7_rLs7cqkO1fs/,go
+s/>ssrN#n!rNH1)s0D[2s0Vg6rO;a9s1A<Ds1SHFrOMs?s1JBFs1eTLs2+fTs2Y)[s2Y/WrO_s>
+rOr6Ds1A<As1&*<s0_m5s0DG#rNZC,s0)I,qm$1)s/l=%s/Q*trMTUjnY?&Wqk<n[q4I\Ys.01[
+s-rnSnX7jn\!PkKJcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$p&FsjJcGKErBC%+s$$C1q*+J#q`a=ps#'g7s*XipjZ!3!s#L*?s#^6Cs#pBG
+rBL<Js$H`Qs$ZlWs%35`s%NGes%`Sis%rYkrDW_qrDikus0)C+s0Ma4s0_m8s1&*>s1A<Hs1eTR
+s2Y/\s2k;`rQG4Ps(;:Ds(MFHs(_LJrG;FLqel4Js)@RLqfr!`s*F9`s*=Wko6g.XrI4]qq18Ep
+s+C9'qh>!'rJ1E/rJCK1s,6o9s,I&=s,[2As,m8CrKI2Eqj%2Is-WhSs-itWs.01[s.01]s.KCd
+s.fUis/#Ogs/#[es.]Ogs.o[ls/5mrs/Q+"qlKgps.TIfs/#Ois/GeorN-$rs.fUes.'+Ws-itW
+s.'+[s.97_s.01Ys-NbMs-!DCm>^q#s,6i5qhb9-qhP-)pP&R!q1J3hqgn]rh1)JSJcFX-rrAho
+J,~>
+JcFm4rr at WMJcC<$p&FsjJcGKErBC%+s$$C1q*+J#q`a=pr<3'9`<>?@lS7o6o)nReq$$^$r?D+`
+s!@[lr<N?/rsSc6rseo:r=Ac:rso&?pC[?:r=f,Dr>#2Fr>GPPr>Y\TruM+\ru_7`ruqCds!.Oh
+s!Ians!dsus"+1%s"==)s"XO/s"j[5s#C$>s#g<Fs$6TMs$QfSs$m#YrCR#^s%`Sjs&/kss&]5&
+s&oA,s'P_5s'Yk8s(). at s(;:Es(D at Cs(MFJs)7pVs)7pSs(D at Fs(_LJs(q^Is'Ye6s'u(<s'Ye3
+q#LA$s&oA%s&/kns%WMgs%WMerCd/_s%!)Vs$-NGs#C$9oeZP%rA"=+r at e1's"41#s""*us![mp
+s!@[jr?M7br?:tZru_%Xo,[cLq]#JPh\jfYgO=_RhuE]VU]5i~>
+JcFm4rr at WMJcC<$p&FsjJcGKEs.KCes8Dios.oVmq5!\[qkX7gs/,gos/>sss/Z1$s/uC+s0;U0
+s#L*?s%iYls$$HIs$6TNs$QfSs$m#Ys%*/]s%<;as%NGes%`Sis%rYks&/kqs&B"urDrr"s&f;)
+s',M.s)S-\s)e3^s*"?bs*4Qhs*F]ls*X,er<i3*s*=Kfqg8?jrI+]ps*suts+13%s+L?*s+gQU
+qlft'rJCQ4rJgi;rK$i;qiUo>o90'9qipi?q3LiCqj@>MrL3bUs.'+[s.B7_rLs7cqkO1fs/,go
+s/>ssrN#n!rNH1)s0D[2s0Vg6rO;a9s1A<Ds1SHFrOMs?s1JBFs1eTLs2+fTs2Y)[s2Y/WrO_s>
+rOr6Ds1A<As1&*<s0_m5s0DG#rNZC,s0)I,qm$1)s/l=%s/Q*trMTUjnY?&Wqk<n[q4I\Ys.01[
+s-rnSnX7jn\!PkKJcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$p&FsjJcGKErBC%+s$$C1q*+J#q`a=ps#'g7s*XipjZ!3!s#L*?s#^6Cs#pBG
+rBL<Js$H`Qs$ZlWs%35`s%NGes%`Sis%rYkrDW_qrDikus0)C+s0Ma4s0_m8s1&*>s1A<Hs1eTR
+s2Y/\s2k;`rQG4Ps(;:Ds(MFHs(_LJrG;FLqel4Js)@RLqfr!`s*F9`s*=Wko6g.XrI4]qq18Ep
+s+C9'qh>!'rJ1E/rJCK1s,6o9s,I&=s,[2As,m8CrKI2Eqj%2Is-WhSs-itWs.01[s.01]s.KCd
+s.fUis/#Ogs/#[es.]Ogs.o[ls/5mrs/Q+"qlKgps.TIfs/#Ois/GeorN-$rs.fUes.'+Ws-itW
+s.'+[s.97_s.01Ys-NbMs-!DCm>^q#s,6i5qhb9-qhP-)pP&R!q1J3hqgn]rh1)JSJcFX-rrAho
+J,~>
+JcFm4rr at WMJcC<$nc/OfJcGWIrBC+-rBC1/q*+D!pHJ+rr<3-;`<>3<pG)O^qZZWsr;uWonHA^m
+rs&?Eq]l+gr<`E0r<rW6r=/]8r=Ai<rso&?q%<E8r=f2Fq%`iDru(bRq]#JRruM+\ru_7`r?D7d
+s!@[ms![mrs!n%"s"47's"FC,s"aU1s#0m:s#U0Bs$$HIs$?ZOs$ZlUs$m#Ys%35`s%`Sjs&/ko
+s&B"us&]5&rEB5*s'G_5s'l"=s'tq5s'>Y0s'>Y2s'Pe7s'u(?s(D at Fs'be/s'5S0q#LG$qd9A,
+s&T.ts%`M]s$lrWs$llSs$QfOs#g<As#'=&s"aU/r at n1's"=='s"+1"s![mos!@Ugq',h^pE9DV
+q]>>LruCtVq&8E6`u*Q[JcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$nc/OfJcGWIs.KCes8DoqrM9Dkq5!VYrM9Iis/,gorM]aqs/l=(s02O.s0DYb
+s#U0Us#g<Es$$HJs$?ZOs$QfTs%!)[s%<;as%NAcs%`Sis%r_ms&/eos&B"us&T)"s&f;)s',MB
+s)J'Zs)\3^s)n9`s*+KfrH\Ehs*OcnnM0\Dq[<:Hq0N'fs*Xcns*jutrIFp!rIY'&s+UKSrN6%$
+s0)I/rJUW5rJgc9rK$o=qiUo>s,lo9rKI2Eop,39qj78Ks-`hSs-s%Ys.01]rLa+_rLs7cqkO1f
+s/,gos/>sss/Q+"s/c7&s/u=(s0;U0s0Ma4s0_m8s0qg6s0r$:s0r$<s1/0As1JBFs1eTIs186?
+q7$=4rOMm<s1/0>s0hs8q#L;sqlp%&s/uC(rN?1&s/Z1!s/>sqrMKUks.o+YrM'7arLj%[s.01[
+rL;o:eX3h4g\ud(huE]VU]5i~>
+JcFm4rr at WMJcC<$nc/OfJcGWIrBC+-rBC1/q*+D!pHJ+rs#'g7s*Wics#C$=rAss?s#g6CrBL<I
+s$?ZOrBpTSs%35bs%`Sis%r_mrDWYorDikus&]6*s0D[2rO)Zss.B=as0hs:s1A<Is2=rWs2b5^
+s2t at Ps(24Bs(D at FrFu:IrG;@Jqel4Jo5X_Qqfr'bq0Mpbs*XilmsO_TrI4cspOW9prIb'%qh>!'
+rJ1?-s,$]3s,6o9s,I&=s,[2As,m>EqiguCrK[DKs-NbQs-`nVs-`nUs-s%Ys.97_s.TIes.o[k
+rMKUjs.B=^s.B=as.TIfs.o[ks/5mqs/Q+"s/c6ss.97_s.TIfs/#Mks/Q$us/c6us.o[fs.0+R
+rKdJMs-WhSs-itWs-itSs-3PHs,ZQ,pPf-1rJLW3rJ:E-q1e^!qh4cto7Hplqgd^VTmhRmhuE]V
+U]5i~>
+JcFm4rr at WMJcC<$nc/OfJcGWIrBC+-rBC1/q*+D!pHJ+rr<3-;`<>3<pG)O^qZZWsr;uWonHA^m
+rs&?Eq]l+gr<`E0r<rW6r=/]8r=Ai<rso&?q%<E8r=f2Fq%`iDru(bRq]#JRruM+\ru_7`r?D7d
+s!@[ms![mrs!n%"s"47's"FC,s"aU1s#0m:s#U0Bs$$HIs$?ZOs$ZlUs$m#Ys%35`s%`Sjs&/ko
+s&B"us&]5&rEB5*s'G_5s'l"=s'tq5s'>Y0s'>Y2s'Pe7s'u(?s(D at Fs'be/s'5S0q#LG$qd9A,
+s&T.ts%`M]s$lrWs$llSs$QfOs#g<As#'=&s"aU/r at n1's"=='s"+1"s![mos!@Ugq',h^pE9DV
+q]>>LruCtVq&8E6`u*Q[JcFX-rrAhoJ,~>
+JcFm4rr at WMJcC<$nc/OfJcGWIs.KCes8DoqrM9Dkq5!VYrM9Iis/,gorM]aqs/l=(s02O.s0DYb
+s#U0Us#g<Es$$HJs$?ZOs$QfTs%!)[s%<;as%NAcs%`Sis%r_ms&/eos&B"us&T)"s&f;)s',MB
+s)J'Zs)\3^s)n9`s*+KfrH\Ehs*OcnnM0\Dq[<:Hq0N'fs*Xcns*jutrIFp!rIY'&s+UKSrN6%$
+s0)I/rJUW5rJgc9rK$o=qiUo>s,lo9rKI2Eop,39qj78Ks-`hSs-s%Ys.01]rLa+_rLs7cqkO1f
+s/,gos/>sss/Q+"s/c7&s/u=(s0;U0s0Ma4s0_m8s0qg6s0r$:s0r$<s1/0As1JBFs1eTIs186?
+q7$=4rOMm<s1/0>s0hs8q#L;sqlp%&s/uC(rN?1&s/Z1!s/>sqrMKUks.o+YrM'7arLj%[s.01[
+rL;o:eX3h4g\ud(huE]VU]5i~>
+JcFm4rr at WMJcC<$nc/OfJcGWIrBC+-rBC1/q*+D!pHJ+rs#'g7s*Wics#C$=rAss?s#g6CrBL<I
+s$?ZOrBpTSs%35bs%`Sis%r_mrDWYorDikus&]6*s0D[2rO)Zss.B=as0hs:s1A<Is2=rWs2b5^
+s2t at Ps(24Bs(D at FrFu:IrG;@Jqel4Jo5X_Qqfr'bq0Mpbs*XilmsO_TrI4cspOW9prIb'%qh>!'
+rJ1?-s,$]3s,6o9s,I&=s,[2As,m>EqiguCrK[DKs-NbQs-`nVs-`nUs-s%Ys.97_s.TIes.o[k
+rMKUjs.B=^s.B=as.TIfs.o[ks/5mqs/Q+"s/c6ss.97_s.TIfs/#Mks/Q$us/c6us.o[fs.0+R
+rKdJMs-WhSs-itWs-itSs-3PHs,ZQ,pPf-1rJLW3rJ:E-q1e^!qh4cto7Hplqgd^VTmhRmhuE]V
+U]5i~>
+JcFm4rr at WMJcC<$mJm+bJcGcMrBC+-rBC1/q*+D!nNQ\rr<3-;aTUK<rsSQ<o`b-qq#^3ko*"po
+ruh=bs!%Igs!dt"s"=<Wr<`E0r<rQ4rseo:q[`]<rsni:pCdK>r=o,Dq\K2Jru(bRq&B>RruV1^
+ruq=bs!.Ohs!Ians![mrs!mmss"47(s"XO0s#'g8s#L*@s#g<Gs$6TNs$QfSs$m#Ys%35as%`Se
+s%NGes%`Sis%r_ms&8qss&]5'rETA)qc3Yqs&K)#s&oA,s'G_4s'Yk6s'5S)s&AdorEB5*s'5S!
+s%<;\rC$ZSpI+sIrBU6Es#g<As#0m6rA4I/pG;h)s"XI+r at e1%s""*ts!Rgmr?M1`q'#VXq&fPV
+q&T8Nru:VLm2<_Wfm\MPiW&oXU]5i~>
+JcFm4rr at WMJcC<$mJm+bJcGcMs.KCes8DoqrM9Dkq5!VYrM9Iis/,gos/,gms/,gps/Z1%s/uC+
+s#C$=s%`SUs#g<Fs$-NKs$?ZPs$ZlVs%!)\s%EAcs%WMgrD3Gis&&eos&8qsrDikus&]5&s&oA>
+s)7pVs)J'Zs)\3^s)n9`rHJ9drH\Eis*XippG)+DrsSRHrHeEhs*Xcns*jutrIFp!rIY'%s/>st
+s/Z1&s0Ma7s1/)crJUW5rJgc9rK$o=rK7, at pQG97qipi?nWs3As-WhSrL3\Ss.'+[rLWt[q4Rb]
+s.]Ogs.o[ks/,gos/>sss/Q+"s/c7&s/uC*s02O.s0DO.os4P&s0Vg6s0hm8s0_a1s0Vg6q6p10
+q#LH#qm$+(q60b"rN6+$rN#sts/>spq5++en"]iUqk=%_s.97]rL<hUiL/5`\!PeIJcF^/rrAho
+J,~>
+JcFm4rr at WMJcC<$mJm+bJcGcMrBC+-rBC1/q*+D!nNQ\rs#'g7s*NW^s#C$=s#U*?s#pBGrBL<J
+s$HZOs$ZlUs$m#Ys%iYkqc!MorDiess&]4ns-itWs.'+[s.97ss0_m8s0r$=s1JBHs2"`Qs2P(K
+rFGq>rFZ(Bs(MFIqeZ4Jqel:Lo5XSMqfr!`qg/3fs*Xilm<nYVq0r?oq18EprIb!#rIt3)rJ1E/
+qhb?1s,6o9s,I&=s,[2ArK7&BrKR2Es-E\Ps-`nPs-E\Os-`nUs-s%Zs.97`s.TIfs/#aks.B=\
+s.'+[s.97`s.TIes.o[krMT[ms.]O`s-i``s/,gorM]acs-WhNrK@,CrKR,Cs-3PKs-EVMs-3PH
+s,[2?m>^k!s,6i5s,$]0qhFp#pOr?pq1AEnrIEpXR=9_eiW&oXU]5i~>
+JcFm4rr at WMJcC<$mJm+bJcGcMrBC+-rBC1/q*+D!nNQ\rr<3-;aTUK<rsSQ<o`b-qq#^3ko*"po
+ruh=bs!%Igs!dt"s"=<Wr<`E0r<rQ4rseo:q[`]<rsni:pCdK>r=o,Dq\K2Jru(bRq&B>RruV1^
+ruq=bs!.Ohs!Ians![mrs!mmss"47(s"XO0s#'g8s#L*@s#g<Gs$6TNs$QfSs$m#Ys%35as%`Se
+s%NGes%`Sis%r_ms&8qss&]5'rETA)qc3Yqs&K)#s&oA,s'G_4s'Yk6s'5S)s&AdorEB5*s'5S!
+s%<;\rC$ZSpI+sIrBU6Es#g<As#0m6rA4I/pG;h)s"XI+r at e1%s""*ts!Rgmr?M1`q'#VXq&fPV
+q&T8Nru:VLm2<_Wfm\MPiW&oXU]5i~>
+JcFm4rr at WMJcC<$mJm+bJcGcMs.KCes8DoqrM9Dkq5!VYrM9Iis/,gos/,gms/,gps/Z1%s/uC+
+s#C$=s%`SUs#g<Fs$-NKs$?ZPs$ZlVs%!)\s%EAcs%WMgrD3Gis&&eos&8qsrDikus&]5&s&oA>
+s)7pVs)J'Zs)\3^s)n9`rHJ9drH\Eis*XippG)+DrsSRHrHeEhs*Xcns*jutrIFp!rIY'%s/>st
+s/Z1&s0Ma7s1/)crJUW5rJgc9rK$o=rK7, at pQG97qipi?nWs3As-WhSrL3\Ss.'+[rLWt[q4Rb]
+s.]Ogs.o[ks/,gos/>sss/Q+"s/c7&s/uC*s02O.s0DO.os4P&s0Vg6s0hm8s0_a1s0Vg6q6p10
+q#LH#qm$+(q60b"rN6+$rN#sts/>spq5++en"]iUqk=%_s.97]rL<hUiL/5`\!PeIJcF^/rrAho
+J,~>
+JcFm4rr at WMJcC<$mJm+bJcGcMrBC+-rBC1/q*+D!nNQ\rs#'g7s*NW^s#C$=s#U*?s#pBGrBL<J
+s$HZOs$ZlUs$m#Ys%iYkqc!MorDiess&]4ns-itWs.'+[s.97ss0_m8s0r$=s1JBHs2"`Qs2P(K
+rFGq>rFZ(Bs(MFIqeZ4Jqel:Lo5XSMqfr!`qg/3fs*Xilm<nYVq0r?oq18EprIb!#rIt3)rJ1E/
+qhb?1s,6o9s,I&=s,[2ArK7&BrKR2Es-E\Ps-`nPs-E\Os-`nUs-s%Zs.97`s.TIfs/#aks.B=\
+s.'+[s.97`s.TIes.o[krMT[ms.]O`s-i``s/,gorM]acs-WhNrK@,CrKR,Cs-3PKs-EVMs-3PH
+s,[2?m>^k!s,6i5s,$]0qhFp#pOr?pq1AEnrIEpXR=9_eiW&oXU]5i~>
+JcFm4rr at WMJcC<$l2U\^KE(m6qgSQ/rI4K)nUBdfs*jnLrtro^knrpur>=u,qZccrpB0pgr<<3H
+s!dsts""+#s"47'r<W?.r<iK2rs\i8r=8c:rt,2>pC[36r=o,Dq%ioFq\oDPruM+\ru_1_r?D7d
+s!7Ujs!Ians![mrq'uCrs"==*s"XO/s"jO/s#'g8s#L*Cs$H`Qs$crXrC-`Us%!)[s%35_s%NGg
+s%r_ms%r_ks%`McqbI/fs&8qtqcNl!s&8dps&&_ms&8kqs&&ejs%35[ogAOAs$6TJs#g<Cs#U0A
+s#L*<s#'g4q(hb%rA+C-s"OC$s!dsrs!Rgms!.Cbq'#\ZocO,Rq]5PRq&AuFobk:Wfm\MPiW&oX
+U]5i~>
+JcFm4rr at WMJcC<$l2U\^KE(tEs.]Dis.oVmpS@>Us.oUirM9Iis/,gps/H$us/l=)s#9s;s%WMS
+s#g<Es$$HIs$6TNs$QfSs$m#Zs%35`s%WMgs%iYkrDESms&8qss&K"us&]5&s)%dRs)7pVs)J'Z
+s)\3^rH8-`rHJ9dq0E!gs*jo$kmIH8pNcdbs*O]ls*aiprI=itrIP!#s+C?Qs0D[2s0_m8s0r$<
+rJLQ3rJ^]7rJpi;rK-u?s,[2Bq3(K9q3:Q;q3M&Is-WbQs-ibQs.'%Yqk!VUs.KCcn"TiWs/5gr
+rN5Unqlp%&s/uC*s02O.s0)I*s0)C+s0MO.qZ-Z(s0Vg4s0;U.s0)C*qlfn"rN6%"rN#sts/>sp
+s/#[is/#akmA'QQs.TI_s-rhQiL//^\!PeIJcF^/rrAhoJ,~>
+JcFm4rr at WMJcC<$l2U\^KE(m6qgSQ/rI4K)nUBdfs*ju*s#0n)h)G?ns#L*?s#^0Bs$$HIs$?ZO
+rBpTQs$crWs%!)[s%3/fs&Aqfs%3)[s%EAcs-s%Ys0;U1s0Vg6s0r$<s1/0As1SHIs2+fTs'kq:
+rFGk<s(D at Gs(_RMrGD.Do5XMKqfr-dqg/3frI"WjmsOkXomZXdrIXp!qh4j#s+^Q/pPAj+s,-i7
+s,?u<qiCc=s,m>Es-*JIrK[DKs-NbMs-*JIs-<VMs-NbQs-itXs.0%Ys.01Ys-`nUs.'+[s.97_
+s.TCcs.TIcs.&rds-`nVs.01^s.TIes.97[s-NbMq3(W=pQYQ=s-3PHs,d8Al&GLts,6o7s,$c2
+qhFp#pOr9nqh"]rpOMRZOa_l]iW&oXU]5i~>
+JcFm4rr at WMJcC<$l2U\^KE(m6qgSQ/rI4K)nUBdfs*jnLrtro^knrpur>=u,qZccrpB0pgr<<3H
+s!dsts""+#s"47'r<W?.r<iK2rs\i8r=8c:rt,2>pC[36r=o,Dq%ioFq\oDPruM+\ru_1_r?D7d
+s!7Ujs!Ians![mrq'uCrs"==*s"XO/s"jO/s#'g8s#L*Cs$H`Qs$crXrC-`Us%!)[s%35_s%NGg
+s%r_ms%r_ks%`McqbI/fs&8qtqcNl!s&8dps&&_ms&8kqs&&ejs%35[ogAOAs$6TJs#g<Cs#U0A
+s#L*<s#'g4q(hb%rA+C-s"OC$s!dsrs!Rgms!.Cbq'#\ZocO,Rq]5PRq&AuFobk:Wfm\MPiW&oX
+U]5i~>
+JcFm4rr at WMJcC<$l2U\^KE(tEs.]Dis.oVmpS@>Us.oUirM9Iis/,gps/H$us/l=)s#9s;s%WMS
+s#g<Es$$HIs$6TNs$QfSs$m#Zs%35`s%WMgs%iYkrDESms&8qss&K"us&]5&s)%dRs)7pVs)J'Z
+s)\3^rH8-`rHJ9dq0E!gs*jo$kmIH8pNcdbs*O]ls*aiprI=itrIP!#s+C?Qs0D[2s0_m8s0r$<
+rJLQ3rJ^]7rJpi;rK-u?s,[2Bq3(K9q3:Q;q3M&Is-WbQs-ibQs.'%Yqk!VUs.KCcn"TiWs/5gr
+rN5Unqlp%&s/uC*s02O.s0)I*s0)C+s0MO.qZ-Z(s0Vg4s0;U.s0)C*qlfn"rN6%"rN#sts/>sp
+s/#[is/#akmA'QQs.TI_s-rhQiL//^\!PeIJcF^/rrAhoJ,~>
+JcFm4rr at WMJcC<$l2U\^KE(m6qgSQ/rI4K)nUBdfs*ju*s#0n)h)G?ns#L*?s#^0Bs$$HIs$?ZO
+rBpTQs$crWs%!)[s%3/fs&Aqfs%3)[s%EAcs-s%Ys0;U1s0Vg6s0r$<s1/0As1SHIs2+fTs'kq:
+rFGk<s(D at Gs(_RMrGD.Do5XMKqfr-dqg/3frI"WjmsOkXomZXdrIXp!qh4j#s+^Q/pPAj+s,-i7
+s,?u<qiCc=s,m>Es-*JIrK[DKs-NbMs-*JIs-<VMs-NbQs-itXs.0%Ys.01Ys-`nUs.'+[s.97_
+s.TCcs.TIcs.&rds-`nVs.01^s.TIes.97[s-NbMq3(W=pQYQ=s-3PHs,d8Al&GLts,6o7s,$c2
+qhFp#pOr9nqh"]rpOMRZOa_l]iW&oXU]5i~>
+JcFm4rr at WMJcC<$jo>8ZL]@<:rI4]/rI4K)nUB^dr;lp+qZ54Mobc]sr;u9gr<DorpB1-mrrr?*
+s!Ians![mrs!n%!s"+$Qr<`E0r<rQ4rseo:r=Ao>rseu>q%<E8rtG2Br>#2Fr>5JPru:tYruV+\
+r?1t\s!%Ces!@[lq'c7ls!n%!s"47's"O1%s"aU2s#'g9s#L*@rBC6Es$-HJs$H`Rs$m#ZrCR#[
+s%!)Ys$crUrC-`Vs%35`s%WMgs%rLks%<5_rC[#]s%NGes%EA_s$ZlSs$H`Oqa10Gs$6NHs#g<C
+s#Ks9s#0m6m5"\ps!mmps![mps!@[iq'#DRq]G\Vq]5VTo,IEBpDL:SgO=_RiW&oXU]5i~>
+JcFm4rr at WMJcC<$jo>8ZL]@CIs.]JkrM9DkpS@>UpS at hds/5mqs/H$us/c7's#'g8s%WMTs#g<E
+s$$HIs$6TMs$H`Qs$crWs%*/]s%EAds%`Sjs&&eorDW_qs&K"us(hXNs)%dRs)7pVs)J'Zs)\3^
+rH8'^s*+Kfqg&-ds(;:Fk6h$0rH\EhrHnQls*aips*suts+13&s+LESs02O.s0D[3s0_m9s,$]3
+qhtE3rJgc9rK$o=s,m>Bs,m&=qigc=o9K?As-N\Pq3q,Ks.&hSqk!h[s.JhSrM'=es.o[ks/,gr
+s/Ymqs/l7&rNH7(rN6+$qlBaus/l=(s0)I-q#LH#qm6=.s0;U.s0)I*qlft$q5s[urN#strMT[m
+s/#UfrM9+]pS.\[nXAL+gR,%.g\ud(iW&oXU]5i~>
+JcFm4rr at WMJcC<$jo>8ZL]@<:rI4]/rI4K)nUB^ds"j[3s)7ckiA^crs#L*@s#g<Es$-NKs$?ZO
+rBpTQs#L*?s#^6Cs#pBGs$-BOs%3/]rCd)is0;U0s0Ma4s0hs:s1&*>s1A<Es1eTNs2=eDs'u"<
+qdoeAs(h.Ao5XeRolpF\rH\9drHnKjs*='\o6p@^q18Epq1JQts+UK-q1nj's,$c5s,6o9q2PE7
+s,[2As-!DGs-3PKs-!DDs,m>Es-*JIs-<VMrL!PMq3M&Is-WhSs-itWqjdH^pQbcFs-WhTs.'+X
+s-E\Ks-!>Cq3(]?qipuArK at 2Cs,d8 at s,Ho7nW!F)s,6o7s+p]0q1\Kpon3-nrIOQjm=1+EJcF^/
+rrAhoJ,~>
+JcFm4rr at WMJcC<$jo>8ZL]@<:rI4]/rI4K)nUB^dr;lp+qZ54Mobc]sr;u9gr<DorpB1-mrrr?*
+s!Ians![mrs!n%!s"+$Qr<`E0r<rQ4rseo:r=Ao>rseu>q%<E8rtG2Br>#2Fr>5JPru:tYruV+\
+r?1t\s!%Ces!@[lq'c7ls!n%!s"47's"O1%s"aU2s#'g9s#L*@rBC6Es$-HJs$H`Rs$m#ZrCR#[
+s%!)Ys$crUrC-`Vs%35`s%WMgs%rLks%<5_rC[#]s%NGes%EA_s$ZlSs$H`Oqa10Gs$6NHs#g<C
+s#Ks9s#0m6m5"\ps!mmps![mps!@[iq'#DRq]G\Vq]5VTo,IEBpDL:SgO=_RiW&oXU]5i~>
+JcFm4rr at WMJcC<$jo>8ZL]@CIs.]JkrM9DkpS@>UpS at hds/5mqs/H$us/c7's#'g8s%WMTs#g<E
+s$$HIs$6TMs$H`Qs$crWs%*/]s%EAds%`Sjs&&eorDW_qs&K"us(hXNs)%dRs)7pVs)J'Zs)\3^
+rH8'^s*+Kfqg&-ds(;:Fk6h$0rH\EhrHnQls*aips*suts+13&s+LESs02O.s0D[3s0_m9s,$]3
+qhtE3rJgc9rK$o=s,m>Bs,m&=qigc=o9K?As-N\Pq3q,Ks.&hSqk!h[s.JhSrM'=es.o[ks/,gr
+s/Ymqs/l7&rNH7(rN6+$qlBaus/l=(s0)I-q#LH#qm6=.s0;U.s0)I*qlft$q5s[urN#strMT[m
+s/#UfrM9+]pS.\[nXAL+gR,%.g\ud(iW&oXU]5i~>
+JcFm4rr at WMJcC<$jo>8ZL]@<:rI4]/rI4K)nUB^ds"j[3s)7ckiA^crs#L*@s#g<Es$-NKs$?ZO
+rBpTQs#L*?s#^6Cs#pBGs$-BOs%3/]rCd)is0;U0s0Ma4s0hs:s1&*>s1A<Es1eTNs2=eDs'u"<
+qdoeAs(h.Ao5XeRolpF\rH\9drHnKjs*='\o6p@^q18Epq1JQts+UK-q1nj's,$c5s,6o9q2PE7
+s,[2As-!DGs-3PKs-!DDs,m>Es-*JIs-<VMrL!PMq3M&Is-WhSs-itWqjdH^pQbcFs-WhTs.'+X
+s-E\Ks-!>Cq3(]?qipuArK at 2Cs,d8 at s,Ho7nW!F)s,6o7s+p]0q1\Kpon3-nrIOQjm=1+EJcF^/
+rrAhoJ,~>
+JcFm4rr at WMJcC<$iW&cTNW8r at rI4]/rI4K)nUB^drrN'+d/ho.rrMoslNR4kpB(-mq#pX"r<E9I
+s!@[ls!Rgqs!n%!pB^^(r<iK2r=&]8r=8i<rt,2?rt,&>q%EQ<q\8i at rtbVNr>>PRq],JTr?2%^
+s!%Cds!@Ujr?qUns!dsts""+$q_%[tr at n1)s"aU2rAO[8s#U0Bs#pBHs$?ZOqa:0Gs$?ZMrB^5Z
+s$llUqag`Ws%*/Zs$crUrC6`Qs$HHGrBUBGq`Fg=s#L*<q_nI3s"jC(s"aU-s"47$q'uCns!Rgm
+s!7Uhruq+ZpE02Pq]5PRoc*iJm2<5IgO=_RiW&oXU]5i~>
+JcFm4rr at WMJcC<$iW&cTNW9$Os.]JkrM9DkpS@>Uq5"%es/,gos/>sss/Z1$s/l;Ys%EAds#^6C
+s#pBGs$-NKs$?ZOs$QfTs$m#Ys%*/]s%EAds%iYks&/kqrD`ess&T/8s(qXNs).jTs)A!Xs)S-\
+rH/'^s*"EdrHS3bqe#e at k6h$0rHeKjs*XiprI4]ps+(-#s+:9's/Z1%s0)I,s0D[3s0_`\rJLQ3
+qi(K5s,R&=rK.&As,Zc7rKHu?pQbcEs-NbQq3h&Iq4%8Oq47PWrLa%]o:c,WrM0Cgs/#[ks/5gp
+rMomus/c$us/c1"s/Q*us/Q+"q#LGuos+P$s0;O+rN5murN5surN#ssqka=gs.fOeq4mVWs.KC_
+s-rJGj-f"rT9n=3JcF^/rrAhoJ,~>
+JcFm4rr at WMJcC<$iW&cTNW8r at rI4]/rI4K)nUB^ds"j[ms)?^Ls#'g7s#C$=s#^69s"s[3rAXa9
+s#L*?s#^6Cs#pBGrBL<Is$urYs&K"urE&s(s0_a5s1/0As1SHIs2"`Qs2=qGs'l"<s((k8rFZ(G
+pMKMAq0)^Zs*"EdrHS9ds*FQhrI"Wjl$VlHs*sorpO`9prIk'&pP8d)s,$W1mu.4)rJgi;s,[2A
+s,m>Es-*JIpQP97q#LGZs-*>ErK[8Es-*JIrKdDFqiUQ7pQPW?s,m8As,[2?pPeX%s,?u8rJ:K.
+s+U3#o7QdhqgnEjl$n\AJcF^/rrAhoJ,~>
+JcFm4rr at WMJcC<$iW&cTNW8r at rI4]/rI4K)nUB^drrN'+d/ho.rrMoslNR4kpB(-mq#pX"r<E9I
+s!@[ls!Rgqs!n%!pB^^(r<iK2r=&]8r=8i<rt,2?rt,&>q%EQ<q\8i at rtbVNr>>PRq],JTr?2%^
+s!%Cds!@Ujr?qUns!dsts""+$q_%[tr at n1)s"aU2rAO[8s#U0Bs#pBHs$?ZOqa:0Gs$?ZMrB^5Z
+s$llUqag`Ws%*/Zs$crUrC6`Qs$HHGrBUBGq`Fg=s#L*<q_nI3s"jC(s"aU-s"47$q'uCns!Rgm
+s!7Uhruq+ZpE02Pq]5PRoc*iJm2<5IgO=_RiW&oXU]5i~>
+JcFm4rr at WMJcC<$iW&cTNW9$Os.]JkrM9DkpS@>Uq5"%es/,gos/>sss/Z1$s/l;Ys%EAds#^6C
+s#pBGs$-NKs$?ZOs$QfTs$m#Ys%*/]s%EAds%iYks&/kqrD`ess&T/8s(qXNs).jTs)A!Xs)S-\
+rH/'^s*"EdrHS3bqe#e at k6h$0rHeKjs*XiprI4]ps+(-#s+:9's/Z1%s0)I,s0D[3s0_`\rJLQ3
+qi(K5s,R&=rK.&As,Zc7rKHu?pQbcEs-NbQq3h&Iq4%8Oq47PWrLa%]o:c,WrM0Cgs/#[ks/5gp
+rMomus/c$us/c1"s/Q*us/Q+"q#LGuos+P$s0;O+rN5murN5surN#ssqka=gs.fOeq4mVWs.KC_
+s-rJGj-f"rT9n=3JcF^/rrAhoJ,~>
+JcFm4rr at WMJcC<$iW&cTNW8r at rI4]/rI4K)nUB^ds"j[ms)?^Ls#'g7s#C$=s#^69s"s[3rAXa9
+s#L*?s#^6Cs#pBGrBL<Is$urYs&K"urE&s(s0_a5s1/0As1SHIs2"`Qs2=qGs'l"<s((k8rFZ(G
+pMKMAq0)^Zs*"EdrHS9ds*FQhrI"Wjl$VlHs*sorpO`9prIk'&pP8d)s,$W1mu.4)rJgi;s,[2A
+s,m>Es-*JIpQP97q#LGZs-*>ErK[8Es-*JIrKdDFqiUQ7pQPW?s,m8As,[2?pPeX%s,?u8rJ:K.
+s+U3#o7QdhqgnEjl$n\AJcF^/rrAhoJ,~>
+JcFm4rr at WMJcC<$g].3POoPADrI4]/rI4K)nUB^drrN'+dfJ22qZ6EmlNR4kqZ?Qqq#pKsrs&KJ
+s!@[ls!Rgps!dstpB^^(r<iE0rs\o:rsnu<rt,2?pC[98r=f&Bq%`iDrtkVNru(\RruV%Zq&oPX
+s!%Igs!@[ls!Rgpr at .ass"*stq_%n%r at n7+s"sa5s#0a5s#C$>s#^6DrBBs?s$$;[s$-HIs$?ZO
+s$ZfSrC6`Rs$crUs$QfQs$?TMrB^0Cs$$HFs#Km7s#0m6rA4I1s"j[1s"XO-s"F='s"3spr at .[i
+r?D1_o,m]Jr>k\RpDa,Nk8CNAfm\MPj8],ZU]5i~>
+JcFm4rr at WMJcC<$g].3POoPHSs.fPlrM9DkpS@>Uq5"%es/,gos/>sss/Z1$s/l;Ys%EAds#U0A
+s#g<Es$-NKs$?ZOs$QfSs$m#Ys%*/]s%<;as%WMhs%r_ns&8krs(_RLrG;LNs).jTs)A!Xs)S-\
+s)e9`rHA3bs*4KfrFPq>q.]"!rHS?fs*F]lrI"Qls*juts+(-#rIY'%s/Z1%s/uC+s0;U1s0_l_
+rJCE/rJUW5rJgi;rK$o=s,m>Bo90'9pQYK=rKdJMrL!DKpR:iGqjdVUs.9+[s.JtWs.]Ies.oUi
+s/,[ks/>mqs/Q$us/c1"s/Q*us/>eps/Q$us/c7&s/u1$rN6+'s/uC(rN,aqrN,sus/H$rs.oOe
+s.]=_q4dh]s.KCas.91Ym@*('m?j6,g&?R&j8],ZU]5i~>
+JcFm4rr at WMJcC<$g].3POoPADrI4]/rI4K)nUB^ds"j[ls)?dNs#'a5s#C$=s"XO0s"s[3s#0m9
+s#C$=s#U0As#g<Es$$BGrBUBKs&&_prDrr"rE0*,s0_m8rO;g<s1A<Es1eTMs24lTs2P"Is((k8
+rFZ(Bs(hLJs)%@IrH8!Zs)n?bs*+Eds*=Kfqg8?js*<jVnU::`qge]to7Hdjs+LE+rJ(3)s+pK-
+o8<R+s,?W1s,R,?q2kW=rK@,CqZ-ARqigc=qigo?rK7,As,lo9qih&Cs,d,=s,R,=o8N@%s+gQ-
+s+UE)l\#(dq189jjaW,9JcFd1rrAhoJ,~>
+JcFm4rr at WMJcC<$g].3POoPADrI4]/rI4K)nUB^drrN'+dfJ22qZ6EmlNR4kqZ?Qqq#pKsrs&KJ
+s!@[ls!Rgps!dstpB^^(r<iE0rs\o:rsnu<rt,2?pC[98r=f&Bq%`iDrtkVNru(\RruV%Zq&oPX
+s!%Igs!@[ls!Rgpr at .ass"*stq_%n%r at n7+s"sa5s#0a5s#C$>s#^6DrBBs?s$$;[s$-HIs$?ZO
+s$ZfSrC6`Rs$crUs$QfQs$?TMrB^0Cs$$HFs#Km7s#0m6rA4I1s"j[1s"XO-s"F='s"3spr at .[i
+r?D1_o,m]Jr>k\RpDa,Nk8CNAfm\MPj8],ZU]5i~>
+JcFm4rr at WMJcC<$g].3POoPHSs.fPlrM9DkpS@>Uq5"%es/,gos/>sss/Z1$s/l;Ys%EAds#U0A
+s#g<Es$-NKs$?ZOs$QfSs$m#Ys%*/]s%<;as%WMhs%r_ns&8krs(_RLrG;LNs).jTs)A!Xs)S-\
+s)e9`rHA3bs*4KfrFPq>q.]"!rHS?fs*F]lrI"Qls*juts+(-#rIY'%s/Z1%s/uC+s0;U1s0_l_
+rJCE/rJUW5rJgi;rK$o=s,m>Bo90'9pQYK=rKdJMrL!DKpR:iGqjdVUs.9+[s.JtWs.]Ies.oUi
+s/,[ks/>mqs/Q$us/c1"s/Q*us/>eps/Q$us/c7&s/u1$rN6+'s/uC(rN,aqrN,sus/H$rs.oOe
+s.]=_q4dh]s.KCas.91Ym@*('m?j6,g&?R&j8],ZU]5i~>
+JcFm4rr at WMJcC<$g].3POoPADrI4]/rI4K)nUB^ds"j[ls)?dNs#'a5s#C$=s"XO0s"s[3s#0m9
+s#C$=s#U0As#g<Es$$BGrBUBKs&&_prDrr"rE0*,s0_m8rO;g<s1A<Es1eTMs24lTs2P"Is((k8
+rFZ(Bs(hLJs)%@IrH8!Zs)n?bs*+Eds*=Kfqg8?js*<jVnU::`qge]to7Hdjs+LE+rJ(3)s+pK-
+o8<R+s,?W1s,R,?q2kW=rK@,CqZ-ARqigc=qigo?rK7,As,lo9qih&Cs,d,=s,R,=o8N@%s+gQ-
+s+UE)l\#(dq189jjaW,9JcFd1rrAhoJ,~>
+JcFm4rr at WMJcC<$fDkdLQ2gkJqgSK-rI4K)nUB^drrN'+eH+D4pAt!imfiLkpB1-mq$$dAs!.Oh
+s!@[ls![mrr<N-(q[*3.rsSc6r=8i<r=Ju=ob%-8r=f2FpD*Q at r>5DLru(hVruM%Zr?(hXq]Yn^
+s!.Ohr?_Iks![mrr at 7gtr@It#q_%n%s"OI-s"j[3rAFU5q`"I5s#L*?rB0lUs#g6Cq`b$Es$6TM
+s$HZOrB^BKs$QfPs$6NIrBUBIs$$BGs$$HFs#U0=q_nC1s"aU/s"O=)s"OI*s"47%s"!gns!dst
+s!IahpE8uJq&]DRr>bVPru0i6Yo)/CJcFd1rrAhoJ,~>
+JcFm4rr at WMJcC<$fDkdLQ2glWs82corM9DkpS@>UqkX7grMKUms/>sss/Z1$s/l;Ys%EAds#U0A
+s#g<Es$$HIs$?ZOs$QfSs$crXs%*/]s%<;as%NGes%iYks&/kqs(VLJs(hRLs)%dRs)7pVs)J!X
+s)e9`s*"EdrHS?frFPq>s(D(?lO*Rus*4Qis*OWjrI+]ps*t'!rIP!#s/>sts/c7's0)I-s0M`]
+q2,!+rJU]7rJgi;rK$u?rK7, at o90'9pQYE;s-EVMs-WPKpR:cErLEhWrLWt[q4RVYrM'7cs.o[k
+s/,gms/,[krM][orMoYns/5gpql9Uqs/c+"s/Z1"s/Z1$s/l=&rN#[orN#sts/5mns.]Caoq;2U
+s.KCas.97]q4$c?j-fM+OdFc#JcFd1rrAhoJ,~>
+JcFm4rr at WMJcC<$fDkdLQ2gkJqgSK-rI4K)nUB^ds"aUls)HjOs#'g7rAXa0s"XO0s"s[3s#0m9
+s#C$=s#U0As#g<Es$$BGrBUBUs%NGfs&/ktrE&r"s&oB0s0hs:s1&*?s1A<Fs1eTLs2+fSs2P)[
+s'u"<q.9S<qe,qDrG2.IrGqpXs)S!XrH8'_rHS?frHe9ds*Xils*XclnU1"Xo7$^irIOQlq1JQt
+rIt3)qhP-+rJC9+s,6i7mu@@-rK$aSrK?o;qi^i?rKR2Cs-!2?rK-u?mum^4s,R,=qi:-(qi1W4
+rIjEfon*'lpOM4PM11$Uj8],ZU]5i~>
+JcFm4rr at WMJcC<$fDkdLQ2gkJqgSK-rI4K)nUB^drrN'+eH+D4pAt!imfiLkpB1-mq$$dAs!.Oh
+s!@[ls![mrr<N-(q[*3.rsSc6r=8i<r=Ju=ob%-8r=f2FpD*Q at r>5DLru(hVruM%Zr?(hXq]Yn^
+s!.Ohr?_Iks![mrr at 7gtr@It#q_%n%s"OI-s"j[3rAFU5q`"I5s#L*?rB0lUs#g6Cq`b$Es$6TM
+s$HZOrB^BKs$QfPs$6NIrBUBIs$$BGs$$HFs#U0=q_nC1s"aU/s"O=)s"OI*s"47%s"!gns!dst
+s!IahpE8uJq&]DRr>bVPru0i6Yo)/CJcFd1rrAhoJ,~>
+JcFm4rr at WMJcC<$fDkdLQ2glWs82corM9DkpS@>UqkX7grMKUms/>sss/Z1$s/l;Ys%EAds#U0A
+s#g<Es$$HIs$?ZOs$QfSs$crXs%*/]s%<;as%NGes%iYks&/kqs(VLJs(hRLs)%dRs)7pVs)J!X
+s)e9`s*"EdrHS?frFPq>s(D(?lO*Rus*4Qis*OWjrI+]ps*t'!rIP!#s/>sts/c7's0)I-s0M`]
+q2,!+rJU]7rJgi;rK$u?rK7, at o90'9pQYE;s-EVMs-WPKpR:cErLEhWrLWt[q4RVYrM'7cs.o[k
+s/,gms/,[krM][orMoYns/5gpql9Uqs/c+"s/Z1"s/Z1$s/l=&rN#[orN#sts/5mns.]Caoq;2U
+s.KCas.97]q4$c?j-fM+OdFc#JcFd1rrAhoJ,~>
+JcFm4rr at WMJcC<$fDkdLQ2gkJqgSK-rI4K)nUB^ds"aUls)HjOs#'g7rAXa0s"XO0s"s[3s#0m9
+s#C$=s#U0As#g<Es$$BGrBUBUs%NGfs&/ktrE&r"s&oB0s0hs:s1&*?s1A<Fs1eTLs2+fSs2P)[
+s'u"<q.9S<qe,qDrG2.IrGqpXs)S!XrH8'_rHS?frHe9ds*Xils*XclnU1"Xo7$^irIOQlq1JQt
+rIt3)qhP-+rJC9+s,6i7mu@@-rK$aSrK?o;qi^i?rKR2Cs-!2?rK-u?mum^4s,R,=qi:-(qi1W4
+rIjEfon*'lpOM4PM11$Uj8],ZU]5i~>
+JcFm4rr at WMJcC<$e,T at HRK*:NrI4W-rI4Q+msaLbrrN--f)aV6o)\RemfiRmrs/?%o*"poruh=c
+s!.Ohs!Ians![gNpB^^(rsJ]4rs\o:rsnu<r=Ju=ob%-8rtG>Fq%`]@r>5DLru(hUruM%Zq&fJV
+q]Yt`r?M=fs!@[ls!Ranr at .ars""+#q^qh#s"FC,s"aU1s"sa3rAFO3s#9s9q#L at RrAag<s#^$=
+s#pBGs$-HIs$$HGs$$HIs$6TMs$-NHs#g<ErBC6ErBC6As#C$;s#0[0s"j[0s"F=&r@\+'s"=='
+s"+1"pF6+gruq+ZmiV?HpDs8Rr>Y\Rh&4$GnM1"Bh0sqTj8],ZU]5i~>
+JcFm4rr at WMJcC<$e,T at HRK*;[s82ipqkX2iq5!JUqkX7grMKUms/>mrs/c7&s#'gLs#L*?s#^6C
+s#pBGs$-NLs$H`Qs$ZlUs%!)[s%35_s%EAcs%WMgs%iZ+s(;:Es(VLJs(hXNs)%dRrGV^Ts)J'Z
+s)\3_s*"Eds*4QSrFPq>s(D. at rFtR)r<rXLs*=Qiq0`3krI=css+C?Ms/Q+#s/l=(s02O/s+pE+
+rJLW5rJ^c9rJpo=rK-u?s,Zc7rKHu?pQb]CrKmPOq3goEq4%2MrLNnYqk*h[qk<t_rM0CgrMBOi
+s/#[kqks5is/>sqrMBOls/>goql9Oos/H$rs/>sss/Q+"ql9=is/#aks.]OenXoiQq4I\Ys.01[
+q4$oCh3n#)SX8k$rVt^QJcFd1rrAhoJ,~>
+JcFm4rr at WMJcC<$e,T at HRK*:NrI4W-rI4Q+msaLbs"j[ngGJpfs#0g-s"FC,s"j[3rAFU5s#9s;
+s#L*?s#^6Cs#pBGrBL6QrCm5cs%`Sjs&B#!s&f5&rO)[7s1&*?rOi0Ds1nZOs2=rWs2b4MrFG_8
+pLjM?s(_LPpN$4PrGqp[s)n?brHJ3bs*=WjpNupds*4EfnU1.\msb:dqgn?jq1JX!rIt'%qhP-+
+q2,-/rJUQ3pPo33q#LGTs,[,?s,m,=s,[2ArK6u?pQPW?s,m>BqiLi=rK.&Ao90-9s,[2>qi(K5
+qi(E1qi(Q2s+TQeo7Hjjq1.:N_1(qRrVt]&JcFd1rrAhoJ,~>
+JcFm4rr at WMJcC<$e,T at HRK*:NrI4W-rI4Q+msaLbrrN--f)aV6o)\RemfiRmrs/?%o*"poruh=c
+s!.Ohs!Ians![gNpB^^(rsJ]4rs\o:rsnu<r=Ju=ob%-8rtG>Fq%`]@r>5DLru(hUruM%Zq&fJV
+q]Yt`r?M=fs!@[ls!Ranr at .ars""+#q^qh#s"FC,s"aU1s"sa3rAFO3s#9s9q#L at RrAag<s#^$=
+s#pBGs$-HIs$$HGs$$HIs$6TMs$-NHs#g<ErBC6ErBC6As#C$;s#0[0s"j[0s"F=&r@\+'s"=='
+s"+1"pF6+gruq+ZmiV?HpDs8Rr>Y\Rh&4$GnM1"Bh0sqTj8],ZU]5i~>
+JcFm4rr at WMJcC<$e,T at HRK*;[s82ipqkX2iq5!JUqkX7grMKUms/>mrs/c7&s#'gLs#L*?s#^6C
+s#pBGs$-NLs$H`Qs$ZlUs%!)[s%35_s%EAcs%WMgs%iZ+s(;:Es(VLJs(hXNs)%dRrGV^Ts)J'Z
+s)\3_s*"Eds*4QSrFPq>s(D. at rFtR)r<rXLs*=Qiq0`3krI=css+C?Ms/Q+#s/l=(s02O/s+pE+
+rJLW5rJ^c9rJpo=rK-u?s,Zc7rKHu?pQb]CrKmPOq3goEq4%2MrLNnYqk*h[qk<t_rM0CgrMBOi
+s/#[kqks5is/>sqrMBOls/>goql9Oos/H$rs/>sss/Q+"ql9=is/#aks.]OenXoiQq4I\Ys.01[
+q4$oCh3n#)SX8k$rVt^QJcFd1rrAhoJ,~>
+JcFm4rr at WMJcC<$e,T at HRK*:NrI4W-rI4Q+msaLbs"j[ngGJpfs#0g-s"FC,s"j[3rAFU5s#9s;
+s#L*?s#^6Cs#pBGrBL6QrCm5cs%`Sjs&B#!s&f5&rO)[7s1&*?rOi0Ds1nZOs2=rWs2b4MrFG_8
+pLjM?s(_LPpN$4PrGqp[s)n?brHJ3bs*=WjpNupds*4EfnU1.\msb:dqgn?jq1JX!rIt'%qhP-+
+q2,-/rJUQ3pPo33q#LGTs,[,?s,m,=s,[2ArK6u?pQPW?s,m>BqiLi=rK.&Ao90-9s,[2>qi(K5
+qi(E1qi(Q2s+TQeo7Hjjq1.:N_1(qRrVt]&JcFd1rrAhoJ,~>
+JcFm4rr at WMJcC<$ci<qDScA^RrI4]/rI4K)nUBXbrrN--f`Bn:m/d"anHJ^mr<N-#o`Y3sruV1_
+ruqCes!7Ujs!IUJq$?p*r<iQ4rs\i8rso&>q[ic;q[r]<rtG8DobI9<r>5JNru(hTru:tYruUnV
+r?1t\r?D1bs!7Ujs!I[lr@%[pr at 7gtr@It#s"==*q_A++s"j[3s#'ZRs#0a5s#0m7s"sa6s#C$=
+q`=[;s#g<Es#g<Cs#L*?s#^6Cs#pBGs#g<As#U0Aq`Om=s"s[1q_\7-s"OI+s"3sqs"++!s!msr
+s![mps!@[iruq=`miV-Bq&TJTr>YVPgDSNYh(dsipO7\nj8],ZU]5i~>
+JcFm4rr at WMJcC<$ci<qDScA__s8;oqrM9DkpS@>Uq5"%erMKUms/>sss/Q+#s/uAZs%EAOs#L*@
+s#g<Es$$HJs$?ZOs$QfSs$m#Ys%*/]s%<;as%NGes%`T(s().As(D at Fs(VLJs(qXNs).jTs)A!X
+s)S-\s)e9as'u(>rFPk<o4\.1mgB"$r=&^NrH\Ehs*O]ls*aiqs+(-$s/#ans/Gsts/l=(s+^Q/
+s+pQ/qhkE3s,?o9s,R&=rK-u?s,[&?qigQ7op,KAs-N\OqjI&EopboMrLNnYqk*h[qk<t_qkO1c
+s.fUis/#amqZ-Gis/,gms.fUjs/,gos/>amrMomrs/5gls/,gos/>[krMomus/5mks.K1[nXfKG
+s.&nSpR9d'opDqLh(dsip\oaDj8],ZU]5i~>
+JcFm4rr at WMJcC<$ci<qDScA^RrI4]/rI4K)nUBXbs"j[nh),-hs#0g,s"47(s"XO/s"jU2s#0m9
+s#C$=s#U0As#g<Es$$HRs%35_s%E;as%WMgs%iYls&B"us&]5&s0Vg6s0r$<s1/0 at s1A<Ds1eTM
+s2=rWs2b5_rFGe:s(;"<s(M at NpN$:Qs)IpVs)\3^ol^:Xs*+9as*F]irHn9dmsXeVqg\Qqo7Hdj
+qh4j#q1ed%qhY3-s,-c5pPetLs,?c5rJpW5s,R&=rK-u?qi^oAs-!DDs,I&=pQ,?9rK6i;s,[2?
+s,?o6qhtK5pP]!-s+p]0rIjQjm=P4dq1.4LeUH?Rj8\k&JcFd1rrAhoJ,~>
+JcFm4rr at WMJcC<$ci<qDScA^RrI4]/rI4K)nUBXbrrN--f`Bn:m/d"anHJ^mr<N-#o`Y3sruV1_
+ruqCes!7Ujs!IUJq$?p*r<iQ4rs\i8rso&>q[ic;q[r]<rtG8DobI9<r>5JNru(hTru:tYruUnV
+r?1t\r?D1bs!7Ujs!I[lr@%[pr at 7gtr@It#s"==*q_A++s"j[3s#'ZRs#0a5s#0m7s"sa6s#C$=
+q`=[;s#g<Es#g<Cs#L*?s#^6Cs#pBGs#g<As#U0Aq`Om=s"s[1q_\7-s"OI+s"3sqs"++!s!msr
+s![mps!@[iruq=`miV-Bq&TJTr>YVPgDSNYh(dsipO7\nj8],ZU]5i~>
+JcFm4rr at WMJcC<$ci<qDScA__s8;oqrM9DkpS@>Uq5"%erMKUms/>sss/Q+#s/uAZs%EAOs#L*@
+s#g<Es$$HJs$?ZOs$QfSs$m#Ys%*/]s%<;as%NGes%`T(s().As(D at Fs(VLJs(qXNs).jTs)A!X
+s)S-\s)e9as'u(>rFPk<o4\.1mgB"$r=&^NrH\Ehs*O]ls*aiqs+(-$s/#ans/Gsts/l=(s+^Q/
+s+pQ/qhkE3s,?o9s,R&=rK-u?s,[&?qigQ7op,KAs-N\OqjI&EopboMrLNnYqk*h[qk<t_qkO1c
+s.fUis/#amqZ-Gis/,gms.fUjs/,gos/>amrMomrs/5gls/,gos/>[krMomus/5mks.K1[nXfKG
+s.&nSpR9d'opDqLh(dsip\oaDj8],ZU]5i~>
+JcFm4rr at WMJcC<$ci<qDScA^RrI4]/rI4K)nUBXbs"j[nh),-hs#0g,s"47(s"XO/s"jU2s#0m9
+s#C$=s#U0As#g<Es$$HRs%35_s%E;as%WMgs%iYls&B"us&]5&s0Vg6s0r$<s1/0 at s1A<Ds1eTM
+s2=rWs2b5_rFGe:s(;"<s(M at NpN$:Qs)IpVs)\3^ol^:Xs*+9as*F]irHn9dmsXeVqg\Qqo7Hdj
+qh4j#q1ed%qhY3-s,-c5pPetLs,?c5rJpW5s,R&=rK-u?qi^oAs-!DDs,I&=pQ,?9rK6i;s,[2?
+s,?o6qhtK5pP]!-s+p]0rIjQjm=P4dq1.4LeUH?Rj8\k&JcFd1rrAhoJ,~>
+JcFm4rr at WMJcC<$bQ%M at U&Y-VrI4]/rI4K)nUBXbrrN--gB$1>klLY_mfiRmq$6d!o`Y3sruV1^
+ruqCds!.Oiq$6^$r<`K2r<rW6rseu<r=Ac:rsnu>q\&oBq%WK:q%iiDru(hTr>YPRq]GbZq]Yn^
+s!.Ohr?_Ijq^;=js!dsts""+#r at S%&s"OC)q#LFOs"j[3q)/1.s"aU1s"sa6s#9g7s#L*?s#C$;
+s#0g5s#0m:q`=a9s#'a3s"j[1r at n7+s"aC+s"OI*s"47$s!mmpr at 7aps![mps!Ialr?VCeruqCb
+lQ>^>ruLtVr>YPNgDSrecS:"N^&S*4U]5i~>
+JcFm4rr at WMJcC<$bQ%M at U&Y.as8;oqrM9DkpS@>Uq5!tcs/,gos/>sss/Q+#s/uAZs%EAOs#L*?
+s#g<Es$$HJs$?ZOs$QfSs$m#Ys%*/]s%<;as%NGes'l"<s(). at s(;:Ds(VLJs(hXNs)%dRrGV^T
+s)J'Zs'Yk8s'l"<s(2(>s(D"<r<_p"q[<?2s*4Qhs*FWjpO*!hs.]Ohs/,gos/H%!s+UE+s+gW1
+rJCK1s,6i7rJgi;s,[,?qiUo>rK@&AnW`X1rKdDKs-WJIpR:cEs.&tWq4 at PWs.K=arM'7crLs#e
+rMB=es/#aks.]Ogs.o[ks/,gos/>gos/5mns.fUgs.TIes.fOhrMT[ms/#ajs.]OepRgiEqjmVS
+qj[>KgR7Mt]9ghuJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$bQ%M at U&Y-VrI4]/rI4K)nUBXbs"j[nh),-hs""%!s"47(s"XO/s"j[3s#'g7
+s#9s;s#L$>s#g<Ns%!)[s%3/]s%EAcs%WMgs%iYks&&eps&B$$s0;U2s0_m9rODm=s1JBGs1nZP
+s2G#Zs2k;`s()"<pLjM>s(D"FrG_RPs)RdRs)e9`s*"?crH\Ehs*4Khq0_RXnUC at brIOQlq1JX!
+q1\QtrJ19+s,$]3rJUIOs,?o7rJ^E/qi:W7rJpo=qiLc=qi^u at s,I&;s,Hu;s,[2?s,[,?s,m2A
+s,[2>s,?u9q2+j's,$]1rJ1E,rIjKhnUgRfq1..JiI9,PJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$bQ%M at U&Y-VrI4]/rI4K)nUBXbrrN--gB$1>klLY_mfiRmq$6d!o`Y3sruV1^
+ruqCds!.Oiq$6^$r<`K2r<rW6rseu<r=Ac:rsnu>q\&oBq%WK:q%iiDru(hTr>YPRq]GbZq]Yn^
+s!.Ohr?_Ijq^;=js!dsts""+#r at S%&s"OC)q#LFOs"j[3q)/1.s"aU1s"sa6s#9g7s#L*?s#C$;
+s#0g5s#0m:q`=a9s#'a3s"j[1r at n7+s"aC+s"OI*s"47$s!mmpr at 7aps![mps!Ialr?VCeruqCb
+lQ>^>ruLtVr>YPNgDSrecS:"N^&S*4U]5i~>
+JcFm4rr at WMJcC<$bQ%M at U&Y.as8;oqrM9DkpS@>Uq5!tcs/,gos/>sss/Q+#s/uAZs%EAOs#L*?
+s#g<Es$$HJs$?ZOs$QfSs$m#Ys%*/]s%<;as%NGes'l"<s(). at s(;:Ds(VLJs(hXNs)%dRrGV^T
+s)J'Zs'Yk8s'l"<s(2(>s(D"<r<_p"q[<?2s*4Qhs*FWjpO*!hs.]Ohs/,gos/H%!s+UE+s+gW1
+rJCK1s,6i7rJgi;s,[,?qiUo>rK@&AnW`X1rKdDKs-WJIpR:cEs.&tWq4 at PWs.K=arM'7crLs#e
+rMB=es/#aks.]Ogs.o[ks/,gos/>gos/5mns.fUgs.TIes.fOhrMT[ms/#ajs.]OepRgiEqjmVS
+qj[>KgR7Mt]9ghuJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$bQ%M at U&Y-VrI4]/rI4K)nUBXbs"j[nh),-hs""%!s"47(s"XO/s"j[3s#'g7
+s#9s;s#L$>s#g<Ns%!)[s%3/]s%EAcs%WMgs%iYks&&eps&B$$s0;U2s0_m9rODm=s1JBGs1nZP
+s2G#Zs2k;`s()"<pLjM>s(D"FrG_RPs)RdRs)e9`s*"?crH\Ehs*4Khq0_RXnUC at brIOQlq1JX!
+q1\QtrJ19+s,$]3rJUIOs,?o7rJ^E/qi:W7rJpo=qiLc=qi^u at s,I&;s,Hu;s,[2?s,[,?s,m2A
+s,[2>s,?u9q2+j's,$]1rJ1E,rIjKhnUgRfq1..JiI9,PJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$a8c#:VuQc\rI4]/rI4Q+msaF`rrN--h#ZC at jT5A_m03:iqZm-,qZHKoruD%Z
+ru_7`s!%Igs!@OIq$?p*r<iQ4rs\i8rsnu<q[ic;r=So>r=f&Bo+h':rtkVNr>PVSq&]DTruh1^
+r?D1bs!7Cdr?hOlr@%[ps!n%!s"*sGs"FC,q(hn)rA+=+s"OI-s"j[3rAFO3s#'g4rA+C-rA+C/
+s#'a5s"sU.s"XI+s"F=)s"XO/rA4I+s""*tpF#hdq^;Cjs!7Uhs!%CbrugPJpE'>Tq],JPpDVd(
+lPRSqJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$a8c#:VuQdhs82iprM9Dkq5!JUq5!tcs/,gos/>sss/Q+#s/uA[s%EAOs#L*?
+s#g<Es$$HJs$?ZOs$QfTs$m#Ys%*/]s%<;as%NH$s'l"<s(). at s(;:Ds(MFIs(hRLs)%dRs)7pV
+s)J'Es'G_4s'Yk9s()(?s(D"<q[)d"q$['.rHe3brI"X9s.TIfs/#ans/Q+"s+LE+s+^K-rJCQ3
+rJUW5s,Hu;s,[,?qiUo>qi^i?op"p1rKdJMrL!2ErL3>IrLEPOrLWt[s.K=aq#LGgs.]Ogs.oIe
+s.o[is.]Ics.]Ogs.o[ks/,ams/#ajrLs+\s.KCcs.]Ogs.o[ks.o[is.]Ods.A\Mo:>iMq4%,I
+hjN_r`L"OuJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$a8c#:VuQc\rI4]/rI4Q+msaF`s"aUnh),!Zs"+1%s"F=*s"j[3s#'g7s#9m:
+rB'sIs%!)[s%3/]s%EAcs%WMgs%iYks&&eos/H%"s02O/s0Ma4s0hs:s1&*?s1JBGs1nZOs2=rY
+s2tAbrFQ"@ok3l:s)@XNqf;XVs)e3^s*+EdrH\Ehs*4?drI!pZo7$Lbs+0cnq1JKrq1\QtrJ1?-
+q#LGQqi(K2rJUQ3oo8j-rJgi;rK$i;rK7,As,I&9s,6o9rJgc9rK$u?s,m8Cs,I&:onWL%q2,--
+s+gW/rIt3'l%AY\q18Endsp\4`VtGg^&S*4U]5i~>
+JcFm4rr at WMJcC<$a8c#:VuQc\rI4]/rI4Q+msaF`rrN--h#ZC at jT5A_m03:iqZm-,qZHKoruD%Z
+ru_7`s!%Igs!@OIq$?p*r<iQ4rs\i8rsnu<q[ic;r=So>r=f&Bo+h':rtkVNr>PVSq&]DTruh1^
+r?D1bs!7Cdr?hOlr@%[ps!n%!s"*sGs"FC,q(hn)rA+=+s"OI-s"j[3rAFO3s#'g4rA+C-rA+C/
+s#'a5s"sU.s"XI+s"F=)s"XO/rA4I+s""*tpF#hdq^;Cjs!7Uhs!%CbrugPJpE'>Tq],JPpDVd(
+lPRSqJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$a8c#:VuQdhs82iprM9Dkq5!JUq5!tcs/,gos/>sss/Q+#s/uA[s%EAOs#L*?
+s#g<Es$$HJs$?ZOs$QfTs$m#Ys%*/]s%<;as%NH$s'l"<s(). at s(;:Ds(MFIs(hRLs)%dRs)7pV
+s)J'Es'G_4s'Yk9s()(?s(D"<q[)d"q$['.rHe3brI"X9s.TIfs/#ans/Q+"s+LE+s+^K-rJCQ3
+rJUW5s,Hu;s,[,?qiUo>qi^i?op"p1rKdJMrL!2ErL3>IrLEPOrLWt[s.K=aq#LGgs.]Ogs.oIe
+s.o[is.]Ics.]Ogs.o[ks/,ams/#ajrLs+\s.KCcs.]Ogs.o[ks.o[is.]Ods.A\Mo:>iMq4%,I
+hjN_r`L"OuJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$a8c#:VuQc\rI4]/rI4Q+msaF`s"aUnh),!Zs"+1%s"F=*s"j[3s#'g7s#9m:
+rB'sIs%!)[s%3/]s%EAcs%WMgs%iYks&&eos/H%"s02O/s0Ma4s0hs:s1&*?s1JBGs1nZOs2=rY
+s2tAbrFQ"@ok3l:s)@XNqf;XVs)e3^s*+EdrH\Ehs*4?drI!pZo7$Lbs+0cnq1JKrq1\QtrJ1?-
+q#LGQqi(K2rJUQ3oo8j-rJgi;rK$i;rK7,As,I&9s,6o9rJgc9rK$u?s,m8Cs,I&:onWL%q2,--
+s+gW/rIt3'l%AY\q18Endsp\4`VtGg^&S*4U]5i~>
+JcFm4rr at WMJcC<$_>jH6X8i2`rI4]/rI4Q+nUBR`rrN--hZ;[Di;rr[m03:iq$6p*r<)]qruD%Z
+ru_7as!%Igq$6^$r<`K2r<rW6r=/c:r=Ac:rsno<q\&oBq%W94r>,DLrttbRq]#PTq&]JVr?1nZ
+r?D1br?V7dr?hOmq#LFDs!n%!s"+1&s"F+#q_.atq_.n%s"XO-r at e+'q_A+)r at e1&s"FC+s"F7%
+s"47%s""+!s!dmpo-a>\s!@[ls!@[js!.Ofruq7^r?)%\miVKLruLnTq]#8Jh\k_s]eP*<^&S*4
+U]5i~>
+JcFm4rr at WMJcC<$_>jH6X8i3ls7u]nrM9Dkq5!PWpS at bas/,ams/>sts/c7's#0mMs#C$=s#U0B
+s#pBGs$6TMs$H`Qs$crWs%!)[s%35_s%EB"s'bq:s'u(>s(24Bs(D at FrG)@Js(q^Ps).jTs'5M.
+s'GY2s'Yk:s(24BrFbk<q[)d"pC$j,s*FKfqgAF9s.]Ohs/#ans/H$Ns+LE+s+^Q/rJ:K1s,-c5
+s,?o9rJpi;rK-u?s,[&?q3193op,QCs-NbQn!X3EnXK-?rLNt[q#LAbrLa+_s.TIes.fUirM0Ce
+s.TIcq4I\[s.TIerM0Cgs.]OdnXocRrM0Cds.KCam at O!AqjdJOpR:-1j-\)X]eP*<^&S*4U]5i~>
+JcFm4rr at WMJcC<$_>jH6X8i2`rI4]/rI4Q+nUBR`s"aUnh_b-Zs"+1%s"FC+s"XO/s"j[3s#'g8
+s#C$=s$ZlUrC6`Vs%3/]s%EAcs%WMgs%iYks&&eos/>sus/u=)s0D[3s0hm9s1/0 at s1JBFs1nZQ
+s2k;as31LSok4;:olBeGs)J'Xs)J!XqfDdZs)n?bq0;pbs*F]irHe?fs*WpVpO<!hs+(-#o7Hdj
+q1SQtqhG-+q#LAMrJLK1s,-i5rJLQ3oo/d+s,-i7rJ^c9rJpc9s,R,=s,6i4s,-c5s,?o9s,?u8
+s,$c3jbNklrJ1E-s+U9%rIb-%mt:Ffq18?lfmi=:^&ET_^&S*4U]5i~>
+JcFm4rr at WMJcC<$_>jH6X8i2`rI4]/rI4Q+nUBR`rrN--hZ;[Di;rr[m03:iq$6p*r<)]qruD%Z
+ru_7as!%Igq$6^$r<`K2r<rW6r=/c:r=Ac:rsno<q\&oBq%W94r>,DLrttbRq]#PTq&]JVr?1nZ
+r?D1br?V7dr?hOmq#LFDs!n%!s"+1&s"F+#q_.atq_.n%s"XO-r at e+'q_A+)r at e1&s"FC+s"F7%
+s"47%s""+!s!dmpo-a>\s!@[ls!@[js!.Ofruq7^r?)%\miVKLruLnTq]#8Jh\k_s]eP*<^&S*4
+U]5i~>
+JcFm4rr at WMJcC<$_>jH6X8i3ls7u]nrM9Dkq5!PWpS at bas/,ams/>sts/c7's#0mMs#C$=s#U0B
+s#pBGs$6TMs$H`Qs$crWs%!)[s%35_s%EB"s'bq:s'u(>s(24Bs(D at FrG)@Js(q^Ps).jTs'5M.
+s'GY2s'Yk:s(24BrFbk<q[)d"pC$j,s*FKfqgAF9s.]Ohs/#ans/H$Ns+LE+s+^Q/rJ:K1s,-c5
+s,?o9rJpi;rK-u?s,[&?q3193op,QCs-NbQn!X3EnXK-?rLNt[q#LAbrLa+_s.TIes.fUirM0Ce
+s.TIcq4I\[s.TIerM0Cgs.]OdnXocRrM0Cds.KCam at O!AqjdJOpR:-1j-\)X]eP*<^&S*4U]5i~>
+JcFm4rr at WMJcC<$_>jH6X8i2`rI4]/rI4Q+nUBR`s"aUnh_b-Zs"+1%s"FC+s"XO/s"j[3s#'g8
+s#C$=s$ZlUrC6`Vs%3/]s%EAcs%WMgs%iYks&&eos/>sus/u=)s0D[3s0hm9s1/0 at s1JBFs1nZQ
+s2k;as31LSok4;:olBeGs)J'Xs)J!XqfDdZs)n?bq0;pbs*F]irHe?fs*WpVpO<!hs+(-#o7Hdj
+q1SQtqhG-+q#LAMrJLK1s,-i5rJLQ3oo/d+s,-i7rJ^c9rJpc9s,R,=s,6i4s,-c5s,?o9s,?u8
+s,$c3jbNklrJ1E-s+U9%rIb-%mt:Ffq18?lfmi=:^&ET_^&S*4U]5i~>
+JcFm4rr at WMJcC<$^&S$2YQ+VdrI4]/rI4Q+nUBR`rrN--i;qmFhZ<`[o`b?sr<;p"q$6p*qZHWs
+ru:tXruV1^ruqCes!7CFq[!-,r<iK2r=&W6r=8c:rt,2?q[r]<r=ec:obIKBrtk\Pru(VNruCnV
+r>thXr?2+`ruh=br?D%^s!7IAq^2=js![anr at 7gts!mgqs""+#r at S%%s"+$ts!n%!r at It#s"=1%
+s"=='s"+1#r at 7gts"47%q()Ipr at .apq'Z+fs!R[js!@Uhq'5n_r?2+^ruh7^q]>JRr>thVr>b\R
+pDVp,m235cJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$^&S$2YQ+Wns8)corM9Dkq5!PWoq_Vas/,ams/>sts/c7's#0mMs#C$=s#U0B
+s#pBGs$-NKs$H`Qs$ZlVs%!)[s%35_s'Pe6s'bq:s'u(>s(24Bs(D at Fs(VLJs(q^Ps).jTs',M.
+rE]G0rEoM2rF,_<q.K_ at q$Hp*s)IiApC$j,rHeEhqgAF7s.B=cs.fUjs/5mrs+C?)s+UK-rJ1?-
+s,$c5rJUW5s,I&=rK$i;s,m>Bs,m2Aqig-+s-<VMs-NDGnX93AnXKCUq4.2Ms.91]rLj+]qk!>M
+s.JVKs.KCcs.KCas.9%Woq(uMqjdPQq3p91iL&#Z[5!74^&S*4U]5i~>
+JcFm4rr at WMJcC<$^&S$2YQ+VdrI4]/rI4Q+nUBR`s"aUmiACE]r@@n!s"47's"OI-s"aU1s"sa5
+s#0m9s$H`Qs$ZlVs%!#Ys%35_rCd/as%WMgrD3Gjs/,gps/Q+#s/uC+s0DZ-s0hg7s1/0 at rOi0G
+s2P)]s314MrFYYAol0kLrGqjXrH/'^s*"9`rHS?fs*+Efqg89hkC*)Rq1&3kq1A9lq1SX!qZ-MK
+rJ:E/q253.rJCK1rJUQ3s,-Q-s,-c5s,?i7s,?u9s,-i5qhY3-rJLQ3s,-i5s+p]1onN9to7m:!
+rIk3's+L?'qh"ElpO`?pq1.4Lm=)JBJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$^&S$2YQ+VdrI4]/rI4Q+nUBR`rrN--i;qmFhZ<`[o`b?sr<;p"q$6p*qZHWs
+ru:tXruV1^ruqCes!7CFq[!-,r<iK2r=&W6r=8c:rt,2?q[r]<r=ec:obIKBrtk\Pru(VNruCnV
+r>thXr?2+`ruh=br?D%^s!7IAq^2=js![anr at 7gts!mgqs""+#r at S%%s"+$ts!n%!r at It#s"=1%
+s"=='s"+1#r at 7gts"47%q()Ipr at .apq'Z+fs!R[js!@Uhq'5n_r?2+^ruh7^q]>JRr>thVr>b\R
+pDVp,m235cJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$^&S$2YQ+Wns8)corM9Dkq5!PWoq_Vas/,ams/>sts/c7's#0mMs#C$=s#U0B
+s#pBGs$-NKs$H`Qs$ZlVs%!)[s%35_s'Pe6s'bq:s'u(>s(24Bs(D at Fs(VLJs(q^Ps).jTs',M.
+rE]G0rEoM2rF,_<q.K_ at q$Hp*s)IiApC$j,rHeEhqgAF7s.B=cs.fUjs/5mrs+C?)s+UK-rJ1?-
+s,$c5rJUW5s,I&=rK$i;s,m>Bs,m2Aqig-+s-<VMs-NDGnX93AnXKCUq4.2Ms.91]rLj+]qk!>M
+s.JVKs.KCcs.KCas.9%Woq(uMqjdPQq3p91iL&#Z[5!74^&S*4U]5i~>
+JcFm4rr at WMJcC<$^&S$2YQ+VdrI4]/rI4Q+nUBR`s"aUmiACE]r@@n!s"47's"OI-s"aU1s"sa5
+s#0m9s$H`Qs$ZlVs%!#Ys%35_rCd/as%WMgrD3Gjs/,gps/Q+#s/uC+s0DZ-s0hg7s1/0 at rOi0G
+s2P)]s314MrFYYAol0kLrGqjXrH/'^s*"9`rHS?fs*+Efqg89hkC*)Rq1&3kq1A9lq1SX!qZ-MK
+rJ:E/q253.rJCK1rJUQ3s,-Q-s,-c5s,?i7s,?u9s,-i5qhY3-rJLQ3s,-i5s+p]1onN9to7m:!
+rIk3's+L?'qh"ElpO`?pq1.4Lm=)JBJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$\c;U.Z2acOrBC1/q`aItj$*JNirS*Hh#[0PqZ?Epq$6j(r<)iuru:tYruV1_
+ruqCers&?*q[!!(r<iK2r=&W6r=8c:rso&?q[r]<rtFi8q%`iErttJJru1hUq&T8Pr?(t\r?:t:
+s!7=bs!Ians![gnr?hOls!Iaos!dsrs!dsts""+#s""+!o-s\hr@@n!s"47%s""+!m4&&bs!dsr
+s!R[js!ROfs!@Uhr?M1`ruqCbpE0,Nru_1\oc=&Pr>YPNh\keuY;(V.^&S*4U]5i~>
+JcFm4rr at WMJcC<$\c;U.Z2ak#s8DnlrVl\in"o]Qs/#[krMT[os/c7's0)Gqs#C$=s#U0Bs#pBG
+s$-NKs$H`Qs$ZlUs$m#Zs%35ss'Pe6s'bq:s'u(>s(24Bs(D at Fs(VLJs(q^Ps).d>s'5S0rEfG0
+rF#S4s'l">q.KR2q[3 at BrGhcCoaCR(qg89hs*ap=s.KCds.o[ls/>sLs+C?)s+UE+rJ1E/rJCQ3
+rJU]7s,Hu;rK$o=s,m>Bs,m,?qig9/s-<PKs-NDGl'_ at 9q#L/YqjdPSq4.DSs.&tWrLWVQs.88C
+s.8bOrLWbSs.&tUpR:33j-\/ZY;(V.^&S*4U]5i~>
+JcFm4rr at WMJcC<$\c;U.Z2acOrBC1/q`aItj$*K]j#$K[s""+#s"47's"FC+s"XO/s"j[4s#0mB
+s$?ZOs$ZlUs$m#Ys%*/]s%<5_s%NAcs%`Sis&&fms/>sss/c7's02N*s&oA*s0qs:s1/0 at s1J<D
+s1\NJs2P)as(D4 at s(24BolBqKqeuFPs)J'ZqfD^XrHA!\rHS?dqg/-drI!dVnUCLfrIF]pon*'n
+s+L1JpP/X%qhY-)s+p]1s+pW1rJLQ3s,-i5o8*@%rJLW5s,-i5s+pQ-rJ:E-s+pW1s,-i5s+p]1
+jbESbs+L-!pO`9po7HdggOJU>YPs+Q^&S*4U]5i~>
+JcFm4rr at WMJcC<$\c;U.Z2acOrBC1/q`aItj$*JNirS*Hh#[0PqZ?Epq$6j(r<)iuru:tYruV1_
+ruqCers&?*q[!!(r<iK2r=&W6r=8c:rso&?q[r]<rtFi8q%`iErttJJru1hUq&T8Pr?(t\r?:t:
+s!7=bs!Ians![gnr?hOls!Iaos!dsrs!dsts""+#s""+!o-s\hr@@n!s"47%s""+!m4&&bs!dsr
+s!R[js!ROfs!@Uhr?M1`ruqCbpE0,Nru_1\oc=&Pr>YPNh\keuY;(V.^&S*4U]5i~>
+JcFm4rr at WMJcC<$\c;U.Z2ak#s8DnlrVl\in"o]Qs/#[krMT[os/c7's0)Gqs#C$=s#U0Bs#pBG
+s$-NKs$H`Qs$ZlUs$m#Zs%35ss'Pe6s'bq:s'u(>s(24Bs(D at Fs(VLJs(q^Ps).d>s'5S0rEfG0
+rF#S4s'l">q.KR2q[3 at BrGhcCoaCR(qg89hs*ap=s.KCds.o[ls/>sLs+C?)s+UE+rJ1E/rJCQ3
+rJU]7s,Hu;rK$o=s,m>Bs,m,?qig9/s-<PKs-NDGl'_ at 9q#L/YqjdPSq4.DSs.&tWrLWVQs.88C
+s.8bOrLWbSs.&tUpR:33j-\/ZY;(V.^&S*4U]5i~>
+JcFm4rr at WMJcC<$\c;U.Z2acOrBC1/q`aItj$*K]j#$K[s""+#s"47's"FC+s"XO/s"j[4s#0mB
+s$?ZOs$ZlUs$m#Ys%*/]s%<5_s%NAcs%`Sis&&fms/>sss/c7's02N*s&oA*s0qs:s1/0 at s1J<D
+s1\NJs2P)as(D4 at s(24BolBqKqeuFPs)J'ZqfD^XrHA!\rHS?dqg/-drI!dVnUCLfrIF]pon*'n
+s+L1JpP/X%qhY-)s+p]1s+pW1rJLQ3s,-i5o8*@%rJLW5s,-i5s+pQ-rJ:E-s+pW1s,-i5s+p]1
+jbESbs+L-!pO`9po7HdggOJU>YPs+Q^&S*4U]5i~>
+JcFm4rr at WMJcC<$[K$1*[K$2SrBC1/q`aP!iBI8LirS6LgB$mLq#^9ppBUX&rr`-$ru1nVruM+\
+ruh=cs!7UKqZlp&q[*3.r<rK2rseo:r=Ao;rt+u<r=]&BnJ(d6rtbVNrtt>FnJqQLr>tb7r?;1b
+q'>n`q'Gn`od0Vbs!Rgps!dsrq^;1fs!Ranq^MOpo-sVdq^;=js!Rals!@Cdr?_Igs!7Ofs!%Cb
+r?2%\r>tnZo,dQFo,?X,m22fWJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$[K$1*[K$:'s8DnlrVl\inYPiQs/#amqka=is/5mts/l;ms#9s<s#U0As#g<E
+s$-NKs$?ZOs$QfTs$m#Ys%*/rs'Pe6s'bq:s'u(>s(24Bs(D at Fs(VLJs(q^<s'#A*s'5S0s'GY2
+qdBG4qdTS:rFYp5q$R(>rGhcCpC$d*rsepRrI"X9s.97`s.]Ohs/,gps+:9's+L?)rJ(?-rJ:K1
+rJLW5rJ^c9rJpi;rK.&>rK6u?q31-/rK[DKs-N>El^@PKqjR2Ijdc4=nXfcOrLW>IrLWtYs.&8C
+rL<\QhjNYpc^1UcJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$[K$1*[K$2SrBC1/q`aP!iBI9[j#$EYs""+$s"==)s"OI-s"aU1s$$HIs$6TM
+s$H`Qs$ZlVrC?fXs%<;as%NAcs%`Sis.fUis/,gps/Z1%s02N*rE9/(s0qs:s186Cs1SHHs1eTL
+rPANOs'bq:s'u(?o5aeJqelFPrG_dVs)S!Xs)e3^rHA'^rHS?cs*=KfrHnKjkC)`HnUUXjrIXhF
+qh4d"rIt'%qh=j#qhP-+s,$c2qhFQprJ9cpqhY9-rJ(?+l\>:jrIk-%rIY!#kCWY_fmiC<WW%JK
+^&S*4U]5i~>
+JcFm4rr at WMJcC<$[K$1*[K$2SrBC1/q`aP!iBI8LirS6LgB$mLq#^9ppBUX&rr`-$ru1nVruM+\
+ruh=cs!7UKqZlp&q[*3.r<rK2rseo:r=Ao;rt+u<r=]&BnJ(d6rtbVNrtt>FnJqQLr>tb7r?;1b
+q'>n`q'Gn`od0Vbs!Rgps!dsrq^;1fs!Ranq^MOpo-sVdq^;=js!Rals!@Cdr?_Igs!7Ofs!%Cb
+r?2%\r>tnZo,dQFo,?X,m22fWJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$[K$1*[K$:'s8DnlrVl\inYPiQs/#amqka=is/5mts/l;ms#9s<s#U0As#g<E
+s$-NKs$?ZOs$QfTs$m#Ys%*/rs'Pe6s'bq:s'u(>s(24Bs(D at Fs(VLJs(q^<s'#A*s'5S0s'GY2
+qdBG4qdTS:rFYp5q$R(>rGhcCpC$d*rsepRrI"X9s.97`s.]Ohs/,gps+:9's+L?)rJ(?-rJ:K1
+rJLW5rJ^c9rJpi;rK.&>rK6u?q31-/rK[DKs-N>El^@PKqjR2Ijdc4=nXfcOrLW>IrLWtYs.&8C
+rL<\QhjNYpc^1UcJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$[K$1*[K$2SrBC1/q`aP!iBI9[j#$EYs""+$s"==)s"OI-s"aU1s$$HIs$6TM
+s$H`Qs$ZlVrC?fXs%<;as%NAcs%`Sis.fUis/,gps/Z1%s02N*rE9/(s0qs:s186Cs1SHHs1eTL
+rPANOs'bq:s'u(?o5aeJqelFPrG_dVs)S!Xs)e3^rHA'^rHS?cs*=KfrHnKjkC)`HnUUXjrIXhF
+qh4d"rIt'%qh=j#qhP-+s,$c2qhFQprJ9cpqhY9-rJ(?+l\>:jrIk-%rIY!#kCWY_fmiC<WW%JK
+^&S*4U]5i~>
+JcFm4rr at WMJcC<$Z2ab&\c;VWrBC71q*+=tiBI8LjT4HNf`CaLo`Fjlq$6d&qZQp;ru:tYru_7a
+s!%IIq$6X"q[*3.r<rQ4r=/]8rt#,=r=Ji<q\&i at nJ(j8rtbVNrttDHr>P8IqZ-L6ruV%Xr>tt\
+r?;1br?M=fq'5h`s!@Cbs!@[ls!@Ohq^;Cjq^;1fodT\as!Ialq^2+bq'Q+fq',\Zq]GJPq&TJV
+pDs8RpDW!.lPQHQJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$Z2ab&\c;^,s8Mtms8MhinYPQIs/#ams/5mqs/Q)gs#'g8s#C$>s#^6Ds$$HI
+s$?ZOs$QfSs$crXs'5S0s'G_4s'bq:s'u"<s(24Bs(MFHs(_R8s&f;)s',M.rE]G0rEoG0qdTM6
+s(). at r<`9,rGVXRrGhcCpC$d*rsejQs.01]s.KCds.o[ls+13%s+C9'rIt3)s+pW1rJLW5s,?o9
+rJpi;rK.&>qiUc=qig?1s-<VMrKm&Ao9oIUo9oKEpRC]Cqj[PSqjmDOqjm\Wn"9EHq4-iCqjQ?/
+l^5k^V(mQ$^&S*4U]5i~>
+JcFm4rr at WMJcC<$Z2ab&\c;VWrBC71q*+=tiBI9YjYZEUs"+1%s"==)s"XO9s#p<Fs$6TMs$H`R
+s$crWs%!)[s%35_rCd/as%WMgs%iZgs.fUis/5mss/c6%s&f/$s'#B2s1JBFs1\HHrP8HLs2+fT
+s'l"<s()"IqfDdPs)%XNrGV^TrGhjXrH%pZrH7pZrHJ9ds*"9brHeKjqg at RTm=+YWqZ-)9s+:3%
+rIk'%rIk-'pP/R!s+^K+q1d at RrJ(3'pP/^%qhG!%qh*dXf73+8V>c&G^&S*4U]5i~>
+JcFm4rr at WMJcC<$Z2ab&\c;VWrBC71q*+=tiBI8LjT4HNf`CaLo`Fjlq$6d&qZQp;ru:tYru_7a
+s!%IIq$6X"q[*3.r<rQ4r=/]8rt#,=r=Ji<q\&i at nJ(j8rtbVNrttDHr>P8IqZ-L6ruV%Xr>tt\
+r?;1br?M=fq'5h`s!@Cbs!@[ls!@Ohq^;Cjq^;1fodT\as!Ialq^2+bq'Q+fq',\Zq]GJPq&TJV
+pDs8RpDW!.lPQHQJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$Z2ab&\c;^,s8Mtms8MhinYPQIs/#ams/5mqs/Q)gs#'g8s#C$>s#^6Ds$$HI
+s$?ZOs$QfSs$crXs'5S0s'G_4s'bq:s'u"<s(24Bs(MFHs(_R8s&f;)s',M.rE]G0rEoG0qdTM6
+s(). at r<`9,rGVXRrGhcCpC$d*rsejQs.01]s.KCds.o[ls+13%s+C9'rIt3)s+pW1rJLW5s,?o9
+rJpi;rK.&>qiUc=qig?1s-<VMrKm&Ao9oIUo9oKEpRC]Cqj[PSqjmDOqjm\Wn"9EHq4-iCqjQ?/
+l^5k^V(mQ$^&S*4U]5i~>
+JcFm4rr at WMJcC<$Z2ab&\c;VWrBC71q*+=tiBI9YjYZEUs"+1%s"==)s"XO9s#p<Fs$6TMs$H`R
+s$crWs%!)[s%35_rCd/as%WMgs%iZgs.fUis/5mss/c6%s&f/$s'#B2s1JBFs1\HHrP8HLs2+fT
+s'l"<s()"IqfDdPs)%XNrGV^TrGhjXrH%pZrH7pZrHJ9ds*"9brHeKjqg at RTm=+YWqZ-)9s+:3%
+rIk'%rIk-'pP/R!s+^K+q1d at RrJ(3'pP/^%qhG!%qh*dXf73+8V>c&G^&S*4U]5i~>
+JcFm4rr at WMJcC<$XoJ7u^]4<ts*jo1s*ji/msa4ZjT4HNf`D*UpBC'gq$-Qur<WE*rri?>ru:tX
+ruM+]ruqCers&9(pB^X&r<iE0r=&W6rso&>rseu=r=Ji<q\&i at o+_-<r>,DLr>>PPr>5>Jr>GVS
+ruCh7lQ-!Fr>tt\ruh7`q]bh\r?V1`q]u+dq^27fq'Q+hs!Ianq'c7lpEob`s!7Ujs!7Uhr?VCh
+s!Ials!71ZpE&Q>ruD%XpDW'0lPQ6KJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$XoJ7u^]4>/s8Mtms8Mnkn"oEIs/#amrMT[os/Q)Rs"j[4s#9s;s#U0Bs#pBH
+s$6TMs$QfSs$crks'5S0s'G_4s'Yk8s'l"<s(). at s(;:Ds(MF4s&]5&s&oA+s'5S0s'GS0qdBA3
+qd]Y:q$I!,q/6(Hs)@uFpC$d*rsepSs.'+[s.97`s.]Ohs/,gIrIY'%s+L9'rJ:E/s,-c5rJ^]7
+rJpi;s,d8 at qiU];qigE3s-<PKs-N\OrKd>Iqj at DOq#K`Ks-WbQrL3POq4.,IrLE\Ss.91[rLE\S
+rLW\SpRM2OpRLuKs.%]/m?l.bT.tos^&S*4U]5i~>
+JcFm4rr at WMJcC<$XoJ7u^]4<ts*jo1s*ji/msa4Zs"igplRMobs"+1%s#L*?s#g<Es$-NKs$?ZO
+s$QfSs$crWs%!#Zs%<;as%NAcs.B=as.]Ohs/,gqs&K)"s&])#s'#G,s1&*As1SHHqnN0Hs2"`P
+s2=qGs'u"JpN- at Js(hRMs).dRs)@pVs)S'Zs)e!Xq0)d^s)n9brH\?gpO)"Lo7$Xgq#KN-rIY!#
+rIk3's+L9'rJ']nmtUjrrJ'QlrJ(?+s+L9's+]urpO`9nrIY'#on*3prIEXPl[GK*JcEF`rrAho
+J,~>
+JcFm4rr at WMJcC<$XoJ7u^]4<ts*jo1s*ji/msa4ZjT4HNf`D*UpBC'gq$-Qur<WE*rri?>ru:tX
+ruM+]ruqCers&9(pB^X&r<iE0r=&W6rso&>rseu=r=Ji<q\&i at o+_-<r>,DLr>>PPr>5>Jr>GVS
+ruCh7lQ-!Fr>tt\ruh7`q]bh\r?V1`q]u+dq^27fq'Q+hs!Ianq'c7lpEob`s!7Ujs!7Uhr?VCh
+s!Ials!71ZpE&Q>ruD%XpDW'0lPQ6KJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$XoJ7u^]4>/s8Mtms8Mnkn"oEIs/#amrMT[os/Q)Rs"j[4s#9s;s#U0Bs#pBH
+s$6TMs$QfSs$crks'5S0s'G_4s'Yk8s'l"<s(). at s(;:Ds(MF4s&]5&s&oA+s'5S0s'GS0qdBA3
+qd]Y:q$I!,q/6(Hs)@uFpC$d*rsepSs.'+[s.97`s.]Ohs/,gIrIY'%s+L9'rJ:E/s,-c5rJ^]7
+rJpi;s,d8 at qiU];qigE3s-<PKs-N\OrKd>Iqj at DOq#K`Ks-WbQrL3POq4.,IrLE\Ss.91[rLE\S
+rLW\SpRM2OpRLuKs.%]/m?l.bT.tos^&S*4U]5i~>
+JcFm4rr at WMJcC<$XoJ7u^]4<ts*jo1s*ji/msa4Zs"igplRMobs"+1%s#L*?s#g<Es$-NKs$?ZO
+s$QfSs$crWs%!#Zs%<;as%NAcs.B=as.]Ohs/,gqs&K)"s&])#s'#G,s1&*As1SHHqnN0Hs2"`P
+s2=qGs'u"JpN- at Js(hRMs).dRs)@pVs)S'Zs)e!Xq0)d^s)n9brH\?gpO)"Lo7$Xgq#KN-rIY!#
+rIk3's+L9'rJ']nmtUjrrJ'QlrJ(?+s+L9's+]urpO`9nrIY'#on*3prIEXPl[GK*JcEF`rrAho
+J,~>
+JcFm4rr at WMJcC<$VuQ\q_uKa#s*jo1s*ji/nUB at Zk5jZPf)bgQq$$9ipBLL"q$@!'ru(hUruD%[
+ruh=bqZcj$q$?d&r<iK2r=&W6r=8i9rt#&>q[r]<q\/Q8rtYPLobIKBq\T&.r>YbVoc<QBr>khX
+ruh1^q]c%bs!$tXs!7Ifq'>\\s!Ianq^DIko-NuQs!$tVruh=_q&T8Nq&T2Lru:nTiu."sRk]Ko
+^&S*4U]5i~>
+JcFm4rr at WMJcC<$VuQ\q_uKb1s8Mtms8MnknYPQIs/#[ks/5mqs/Q)Rs"aU2s#0m9s#L*@s#g<F
+s$-NLs$H`Rs&oA*s',M.s'G_4s'Yk8s'l"<s(). at s(;:Ds&B"us&T/$s&oA*s'5S0s'GS0rF#S5
+pLF"*r<iRBokj_Jr<i9,q$d94s*Xj9s.'+\s.B=cs.o[FrIP!#rIb-'s+UK-qhY3-s,-c5rJ^]7
+rJpi;s,R, at rK6o=q31?5rK[>GpQbWAq#LG^nX8j5s-`hSq4%DSn!j3Eq47PUrL<\SqjmbYq4I\W
+n!j-Cs-s%WeX>rpad8JOJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$VuQ\q_uKa#s*jo1s*ji/nUB at Zs"imrk:6K^s#'g7s#L*?s#g<Es$-NKs$?ZP
+s$ZlUs$m#Ys%*/]s%<;arCm5cs.97_s.KCes/#aos&B"us&T/%rE9)&s1JBFq7cmDs1nTLs24lU
+s'l"KpN-:Hs(VLKs(q^PpMTqJrG_LQrH8!\s)n3`s*FQhpO)"Lq0r,>rI=itnU^XhnU^^lqh+d!
+o7d!nq1\Krqh=p%mt^doqh4?js+LE(hgtfXhgag<U&OrfJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$VuQ\q_uKa#s*jo1s*ji/nUB at Zk5jZPf)bgQq$$9ipBLL"q$@!'ru(hUruD%[
+ruh=bqZcj$q$?d&r<iK2r=&W6r=8i9rt#&>q[r]<q\/Q8rtYPLobIKBq\T&.r>YbVoc<QBr>khX
+ruh1^q]c%bs!$tXs!7Ifq'>\\s!Ianq^DIko-NuQs!$tVruh=_q&T8Nq&T2Lru:nTiu."sRk]Ko
+^&S*4U]5i~>
+JcFm4rr at WMJcC<$VuQ\q_uKb1s8Mtms8MnknYPQIs/#[ks/5mqs/Q)Rs"aU2s#0m9s#L*@s#g<F
+s$-NLs$H`Rs&oA*s',M.s'G_4s'Yk8s'l"<s(). at s(;:Ds&B"us&T/$s&oA*s'5S0s'GS0rF#S5
+pLF"*r<iRBokj_Jr<i9,q$d94s*Xj9s.'+\s.B=cs.o[FrIP!#rIb-'s+UK-qhY3-s,-c5rJ^]7
+rJpi;s,R, at rK6o=q31?5rK[>GpQbWAq#LG^nX8j5s-`hSq4%DSn!j3Eq47PUrL<\SqjmbYq4I\W
+n!j-Cs-s%WeX>rpad8JOJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$VuQ\q_uKa#s*jo1s*ji/nUB at Zs"imrk:6K^s#'g7s#L*?s#g<Es$-NKs$?ZP
+s$ZlUs$m#Ys%*/]s%<;arCm5cs.97_s.KCes/#aos&B"us&T/%rE9)&s1JBFq7cmDs1nTLs24lU
+s'l"KpN-:Hs(VLKs(q^PpMTqJrG_LQrH8!\s)n3`s*FQhpO)"Lq0r,>rI=itnU^XhnU^^lqh+d!
+o7d!nq1\Krqh=p%mt^doqh4?js+LE(hgtfXhgag<U&OrfJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$U]:8ma8c0's*jo1s*ji/nUB:XklL#VeH,OMqZZ?gq$-X"q[!3[r>bhXruV1^
+ruh1Cq$6X"q[*-,r<rQ4r=/c:rs\o<r=Jc:q\&i at mhGL2r>,81r>5DLru1nVq],VVq],>LruCtV
+r>bbVruV+\q]Yt`r?:nZruqCdr?M7ds!.Ofr?M+`s!.Ohs!@Ujs!Rgms!.1^r?;%^o-*oPru^>B
+r>YJLi>M#"Pqdji^&S*4U]5i~>
+JcFm4rr at WMJcC<$U]:8ma8c14s8Dnls8MnknYPQIs/#[ks/5mqs/Q+"s"aU2s#'g7s#C$>s#^6D
+s$$HJs$?ZPs&f;)s',M.s'G_4s'Yk8s'l"<s(). at rDNYos&B"us&T/%s'#G,s'>Y2qd9A2s'bq:
+pLEk&o54MGrG_]Bq$[!,rsf!%rLNt[s.KCcs.fUErIOp!s+C?)s+UE,rJ:K1rJLQ3rJ^]7rJpi;
+s,I&?rK6i;qig3-q3CgWqj.2Iq3_2Mo9fQEs-W\Mqj at DOrL3POqjR8KqjdVUs.&hQrLEbUrLX%]
+s.&bNnXKQIfpV5pc'O\MJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$U]:8ma8c0's*jo1s*ji/nUB:XkqqWSq_\=2s#9s<s#^6Cs$$HIs$6TNs$QfS
+s$clVrCQr\s%NH_s.01]s.KCcs.]Hhs&8qss&T)$rEB5,s1S0 at s1nZNrPJTQs60,sqe6"Ds(hXN
+nSS;Ds)J!Yq/lXZrHA3_s*+Edq0Vj`iI1S'q0r?nq1/9lpOMjdqh"]tqh4p%qh4p#q1SQtrJ(9)
+rIk'%rJ'p!pOrR!rIjcrs+LE)s+0]jpOW'hh1+g at U&Ofbs87HJ^&S*4U]5i~>
+JcFm4rr at WMJcC<$U]:8ma8c0's*jo1s*ji/nUB:XklL#VeH,OMqZZ?gq$-X"q[!3[r>bhXruV1^
+ruh1Cq$6X"q[*-,r<rQ4r=/c:rs\o<r=Jc:q\&i at mhGL2r>,81r>5DLru1nVq],VVq],>LruCtV
+r>bbVruV+\q]Yt`r?:nZruqCdr?M7ds!.Ofr?M+`s!.Ohs!@Ujs!Rgms!.1^r?;%^o-*oPru^>B
+r>YJLi>M#"Pqdji^&S*4U]5i~>
+JcFm4rr at WMJcC<$U]:8ma8c14s8Dnls8MnknYPQIs/#[ks/5mqs/Q+"s"aU2s#'g7s#C$>s#^6D
+s$$HJs$?ZPs&f;)s',M.s'G_4s'Yk8s'l"<s(). at rDNYos&B"us&T/%s'#G,s'>Y2qd9A2s'bq:
+pLEk&o54MGrG_]Bq$[!,rsf!%rLNt[s.KCcs.fUErIOp!s+C?)s+UE,rJ:K1rJLQ3rJ^]7rJpi;
+s,I&?rK6i;qig3-q3CgWqj.2Iq3_2Mo9fQEs-W\Mqj at DOrL3POqjR8KqjdVUs.&hQrLEbUrLX%]
+s.&bNnXKQIfpV5pc'O\MJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$U]:8ma8c0's*jo1s*ji/nUB:XkqqWSq_\=2s#9s<s#^6Cs$$HIs$6TNs$QfS
+s$clVrCQr\s%NH_s.01]s.KCcs.]Hhs&8qss&T)$rEB5,s1S0 at s1nZNrPJTQs60,sqe6"Ds(hXN
+nSS;Ds)J!Yq/lXZrHA3_s*+Edq0Vj`iI1S'q0r?nq1/9lpOMjdqh"]tqh4p%qh4p#q1SQtrJ(9)
+rIk'%rJ'p!pOrR!rIjcrs+LE)s+0]jpOW'hh1+g at U&Ofbs87HJ^&S*4U]5i~>
+JcFm4rr at WMJcC<$TE"iiaoDBirBC71q`aV#gHPWFm/cGZdfK=KqZZ9eqZcp&r<WE0rsJcaru:nV
+ruM+\rrr3&q$6^$q$I!,r<rQ4rseo:rsei:q%<E8r=e]8q\Ao,pD3]DrttVOru:tXpDa,Nru:tV
+r>YbTq]#PTq]5\Yruh7`r?1\TpEKV\r?D+`ruqCdr?M=dr?;%^q'5bYlQH3LruM+ZpD`cFr>Y\T
+ru:\Ni>M)$OYMFe^&S*4U]5i~>
+JcFm4rr at WMJcC<$TE"iiaoDD=rM9JmqkWh[l_OKUrMKUms/>sts/Z/hs"j[4s#0m:s#L*@s#g<F
+s$-NLs&T/%s&oA+s'5S0s'Pe6s'bq:s'u(>s&&_ms&8qsrDikus&]5&s'#G-qd9A2s'kY2oa1Y8
+rG;:Hs)7dRr<iE0r=&]8r=8j$s-s%Ys.01]s.KC at s*t'!rIOp!s+C?+rJ1E/rJCK1qht?1s,I&=
+s,[2As,R&?o90!7l'1uDpQbWAqj7&Eo9]??rKmJMs-`nUqj[>Kq4%>Qqj[PQpRD&Ms-s%WpR1?9
+fpV5pc^0bKJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$TE"iiaoDBirBC71q`aV#gHPXUm54&Wq_\=1s#0m9s#C$=s#^6Cs$$HIs$?ZO
+s$ZlUs$m#Ys%*/]s%<;as%NB]s.91^s.THhrDESns&K)#rE9#'q7ZgBs1eTMrPJTQs602uq.T_@
+pM9YBs)%dRs)7pXqfDXVs)n?bs)e9bs*4Qhs*FKfpO)@Vs*jbDo7$^hkCE/Ts+:3#rIXp!pOr?p
+pOr9prIb!#rIt-'q1nKmrIk!#s+C?'s+0?`rIOirgOJ[@U&O``s8;ooJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$TE"iiaoDBirBC71q`aV#gHPWFm/cGZdfK=KqZZ9eqZcp&r<WE0rsJcaru:nV
+ruM+\rrr3&q$6^$q$I!,r<rQ4rseo:rsei:q%<E8r=e]8q\Ao,pD3]DrttVOru:tXpDa,Nru:tV
+r>YbTq]#PTq]5\Yruh7`r?1\TpEKV\r?D+`ruqCdr?M=dr?;%^q'5bYlQH3LruM+ZpD`cFr>Y\T
+ru:\Ni>M)$OYMFe^&S*4U]5i~>
+JcFm4rr at WMJcC<$TE"iiaoDD=rM9JmqkWh[l_OKUrMKUms/>sts/Z/hs"j[4s#0m:s#L*@s#g<F
+s$-NLs&T/%s&oA+s'5S0s'Pe6s'bq:s'u(>s&&_ms&8qsrDikus&]5&s'#G-qd9A2s'kY2oa1Y8
+rG;:Hs)7dRr<iE0r=&]8r=8j$s-s%Ys.01]s.KC at s*t'!rIOp!s+C?+rJ1E/rJCK1qht?1s,I&=
+s,[2As,R&?o90!7l'1uDpQbWAqj7&Eo9]??rKmJMs-`nUqj[>Kq4%>Qqj[PQpRD&Ms-s%WpR1?9
+fpV5pc^0bKJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$TE"iiaoDBirBC71q`aV#gHPXUm54&Wq_\=1s#0m9s#C$=s#^6Cs$$HIs$?ZO
+s$ZlUs$m#Ys%*/]s%<;as%NB]s.91^s.THhrDESns&K)#rE9#'q7ZgBs1eTMrPJTQs602uq.T_@
+pM9YBs)%dRs)7pXqfDXVs)n?bs)e9bs*4Qhs*FKfpO)@Vs*jbDo7$^hkCE/Ts+:3#rIXp!pOr?p
+pOr9prIb!#rIt-'q1nKmrIk!#s+C?'s+0?`rIOirgOJ[@U&O``s8;ooJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$S,`Eec2[fmrBC71rBBb#gHPWFmfDY\dfK7Ir<;Eer<E-(r<W?.s"sa5s#0lr
+ruD%ZruV+BqZcd"q$?d&rsJ]4r=&]8rso&>rseo<r=SW6r=ec:q#L at .q%iuFq%ioFru(bRq]#DN
+ru(>Fq]#PTr>kn\r?(nZruq%Xru_%ZruqCdruptVq]Yn^r?LnTo,muRruM+Zo,IKFoc*]Fh\l#&
+NA6"a^&S*4U]5i~>
+JcFm4rr at WMJcC<$S,`Eec2[h?rM9JmrM8t[l_O?Qs/5mqs/H%!s$m#Es#'g7s#C$=s#U0As#pBG
+s&B"us&]5&s'#G-s'>Y2s'Yk8s'l"<s%rYks&/kqs&B"urDrkus&f;)s'5M0s'b_5rF5F+rG;4F
+rGVRPrsJW2r=&W6rso'#s%EAcs-s%Zs.97_s*jutrIFits+:9(s+^E+q2#'-rJLQ3s,?u;rK$u?
+s,R&?o9/p5o9B%NrKR,Cs-3>Eqj.2Is-WPIs-E\OnWs-?rL!VQs-rtTpR:uKrL3JKqjRDOrL32C
+qjPj!m?l:fNA6"a^&S*4U]5i~>
+JcFm4rr at WMJcC<$S,`Eec2[fmrBC71rBBb#gHPXTmkj8Yq)&+/s#0m9s#C$=s#U0As#g<Fs$-NL
+s$QfSs$m#Ys%*/]s%<;as-`nVs.'+[rLj0drD<Gis&/kqs&T/&qd'$2s1\NJqn`0nq/cLJq.]_@
+qeQ.HqelFQrGqjXqfMj\s)\-^rHS?fom$F^o6g?6kC3G\l%&)Ns+:-#qh5!%rIXitpOrR#s+LE)
+s+:-#rIk'%rJ(9+s+0ipqh+d!s+C?'s+/jRgOJgDU]0l`rVZ]ms8%<H^&S*4U]5i~>
+JcFm4rr at WMJcC<$S,`Eec2[fmrBC71rBBb#gHPWFmfDY\dfK7Ir<;Eer<E-(r<W?.s"sa5s#0lr
+ruD%ZruV+BqZcd"q$?d&rsJ]4r=&]8rso&>rseo<r=SW6r=ec:q#L at .q%iuFq%ioFru(bRq]#DN
+ru(>Fq]#PTr>kn\r?(nZruq%Xru_%ZruqCdruptVq]Yn^r?LnTo,muRruM+Zo,IKFoc*]Fh\l#&
+NA6"a^&S*4U]5i~>
+JcFm4rr at WMJcC<$S,`Eec2[h?rM9JmrM8t[l_O?Qs/5mqs/H%!s$m#Es#'g7s#C$=s#U0As#pBG
+s&B"us&]5&s'#G-s'>Y2s'Yk8s'l"<s%rYks&/kqs&B"urDrkus&f;)s'5M0s'b_5rF5F+rG;4F
+rGVRPrsJW2r=&W6rso'#s%EAcs-s%Zs.97_s*jutrIFits+:9(s+^E+q2#'-rJLQ3s,?u;rK$u?
+s,R&?o9/p5o9B%NrKR,Cs-3>Eqj.2Is-WPIs-E\OnWs-?rL!VQs-rtTpR:uKrL3JKqjRDOrL32C
+qjPj!m?l:fNA6"a^&S*4U]5i~>
+JcFm4rr at WMJcC<$S,`Eec2[fmrBC71rBBb#gHPXTmkj8Yq)&+/s#0m9s#C$=s#U0As#g<Fs$-NL
+s$QfSs$m#Ys%*/]s%<;as-`nVs.'+[rLj0drD<Gis&/kqs&T/&qd'$2s1\NJqn`0nq/cLJq.]_@
+qeQ.HqelFQrGqjXqfMj\s)\-^rHS?fom$F^o6g?6kC3G\l%&)Ns+:-#qh5!%rIXitpOrR#s+LE)
+s+:-#rIk'%rJ(9+s+0ipqh+d!s+C?'s+/jRgOJgDU]0l`rVZ]ms8%<H^&S*4U]5i~>
+JcFm4rr at WMJcC<$QiI!adJs5qrBC71rBBb#gHPWFmfD_^d/itErrqQers&E,q[!-,s"aU2s#0m9
+r>bhXr<<!$q$6X"r<`E0rsSc6rseo:rt#,=r=Ju at mh5L2rtP8/o+^p6q%iuHrtt\Pq\o&Dr>P\R
+q&9,Jru1bUr?(t\ruV1^q]>PTq]PhZruUnVruh=`ruh=bruh=`oc<oNpDs8TruM+Ziu at q8ru:nT
+fbsN$M(sS]^&S*4U]5i~>
+JcFm4rr at WMJcC<$QiI!adJs7CrM9JmrM8t[l(n9Ss/,gos/>sss/Q)gs"j[4s#0m:s#L*?s#^6D
+s$$H]s&K)"s&f;(s',M.s'G_4s'bq:s%iYks&&eos&8qsrDiesrE&r#rEB5.rF>S2oa1S5q/-.L
+rGVRPs)IuFq[E?2s%*/]s%EAcs.'+[s.91<s*t'!q18KrrIk3)rJ(?-s+p]3s,-i7s,?u;s,R,?
+rK.&>s,lc5pQPWAq#KZDop,KAqj6c;qj%,Gqj%2IpR1cEm@!^;l^@dAl'_ at 7o9o'7c'O8AJcEF`
+rrAhoJ,~>
+JcFm4rr at WMJcC<$QiI!adJs5qrBC71rBBb#gHPXSmkj>[pGDn-s#0g7s#C$=s#U0As#pBGs$-NL
+s$QfTs%!)[s%35_s%EBZs-itWs.91^s%iSirDEMkrDW_rs&T)(rOr$@rP/0lqfD^LpM'M>qeQ4K
+rGMRPq/ZLVqfMjYs)e3^pNHFXpNu]9o6p"Tqg\!`l[eqbq1JEnq1JQtrIb-$qh"d!qh5!'s+LE)
+omupjs+0ors+/jRfmiaFV>g)bp\b'gs8%<H^&S*4U]5i~>
+JcFm4rr at WMJcC<$QiI!adJs5qrBC71rBBb#gHPWFmfD_^d/itErrqQers&E,q[!-,s"aU2s#0m9
+r>bhXr<<!$q$6X"r<`E0rsSc6rseo:rt#,=r=Ju at mh5L2rtP8/o+^p6q%iuHrtt\Pq\o&Dr>P\R
+q&9,Jru1bUr?(t\ruV1^q]>PTq]PhZruUnVruh=`ruh=bruh=`oc<oNpDs8TruM+Ziu at q8ru:nT
+fbsN$M(sS]^&S*4U]5i~>
+JcFm4rr at WMJcC<$QiI!adJs7CrM9JmrM8t[l(n9Ss/,gos/>sss/Q)gs"j[4s#0m:s#L*?s#^6D
+s$$H]s&K)"s&f;(s',M.s'G_4s'bq:s%iYks&&eos&8qsrDiesrE&r#rEB5.rF>S2oa1S5q/-.L
+rGVRPs)IuFq[E?2s%*/]s%EAcs.'+[s.91<s*t'!q18KrrIk3)rJ(?-s+p]3s,-i7s,?u;s,R,?
+rK.&>s,lc5pQPWAq#KZDop,KAqj6c;qj%,Gqj%2IpR1cEm@!^;l^@dAl'_ at 7o9o'7c'O8AJcEF`
+rrAhoJ,~>
+JcFm4rr at WMJcC<$QiI!adJs5qrBC71rBBb#gHPXSmkj>[pGDn-s#0g7s#C$=s#U0As#pBGs$-NL
+s$QfTs%!)[s%35_s%EBZs-itWs.91^s%iSirDEMkrDW_rs&T)(rOr$@rP/0lqfD^LpM'M>qeQ4K
+rGMRPq/ZLVqfMjYs)e3^pNHFXpNu]9o6p"Tqg\!`l[eqbq1JEnq1JQtrIb-$qh"d!qh5!'s+LE)
+omupjs+0ors+/jRfmiaFV>g)bp\b'gs8%<H^&S*4U]5i~>
+JcFm4rr at WMJcC<$PQ1L[fDkl"rBC71rBBh%ffnj*kmPr at o`X at Xrr`3)q$@!,s"XO0s#'g8ru:tX
+q$$X"pBUR$q[*90r<rW6r=/c:r=Ao;q[i?2q\&c+rtFW2mhPX7obd?>ru1PJru1POruM+\ruLhT
+r?(tZq]52JruLbPo,[cLoc*iJmi1p<fbsN$LG=A[^&S*4U]5i~>
+JcFm4rr at WMJcC<$PQ1L[fDkmGrM9JmrM9%]jeVpQs/,gos/>sss/Q)Ss"j[4s#0m9s#L*?s#^6D
+s&/kqs&B#!s&]5&s'#G,s'>Y3s'Yk9s%iYks&&eos&8qsrDiess&]5&s&o;(s',G,s'>Y3qdT4)
+rG2 at Jqec4KrG_^Ts)S,Iq$d32s%!)[s%<;bs-s%YrI+]pqg\QprIP!#rIb-'rIt9+s+p]3s,-i7
+s,?u;rK$u?s,m>BpQ>'1s-*<[s-(orf9QB%o9oWIl'_F;f9trls-`>Cad7c;JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$PQ1L[fDkl"rBC71rBBh%ffoElnMKJ[pGDn-q`"O7s#L*?s#^6Cs#pBGs$-NL
+s$QfTs%!)\s%<<Xs-WhSs-s%[s.K6bs%rYkrDNSms&B#!s&]5's',*,qrn(ErH%jLrFu4DrFu4F
+qeQ4KrGMRPs)A!XrGq^Ts)J!ZqfV^XrHJ9ds*OVCqg8?jmsXYRq1%pbnU^XhrIOWnqgnQpqh+j!
+pOW3nrIb-%rIO]nq18Qtq183hrI<jXfmiaFWW)Gdp&+jerVD*F^&S*4U]5i~>
+JcFm4rr at WMJcC<$PQ1L[fDkl"rBC71rBBh%ffnj*kmPr at o`X at Xrr`3)q$@!,s"XO0s#'g8ru:tX
+q$$X"pBUR$q[*90r<rW6r=/c:r=Ao;q[i?2q\&c+rtFW2mhPX7obd?>ru1PJru1POruM+\ruLhT
+r?(tZq]52JruLbPo,[cLoc*iJmi1p<fbsN$LG=A[^&S*4U]5i~>
+JcFm4rr at WMJcC<$PQ1L[fDkmGrM9JmrM9%]jeVpQs/,gos/>sss/Q)Ss"j[4s#0m9s#L*?s#^6D
+s&/kqs&B#!s&]5&s'#G,s'>Y3s'Yk9s%iYks&&eos&8qsrDiess&]5&s&o;(s',G,s'>Y3qdT4)
+rG2 at Jqec4KrG_^Ts)S,Iq$d32s%!)[s%<;bs-s%YrI+]pqg\QprIP!#rIb-'rIt9+s+p]3s,-i7
+s,?u;rK$u?s,m>BpQ>'1s-*<[s-(orf9QB%o9oWIl'_F;f9trls-`>Cad7c;JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$PQ1L[fDkl"rBC71rBBh%ffoElnMKJ[pGDn-q`"O7s#L*?s#^6Cs#pBGs$-NL
+s$QfTs%!)\s%<<Xs-WhSs-s%[s.K6bs%rYkrDNSms&B#!s&]5's',*,qrn(ErH%jLrFu4DrFu4F
+qeQ4KrGMRPs)A!XrGq^Ts)J!ZqfV^XrHJ9ds*OVCqg8?jmsXYRq1%pbnU^XhrIOWnqgnQpqh+j!
+pOW3nrIb-%rIO]nq18Qtq183hrI<jXfmiaFWW)Gdp&+jerVD*F^&S*4U]5i~>
+JcFm4rr at WMJcC<$NW8qWg]..7s*jo1o7#:TnH%q`dfK%CrrM?cqZHd%q[!3Ss"OI.s"sa6s#9rt
+q$$Quq$6d&r<`E0rsSc6rseo:r=Ao;q[`K6r=Si*q\&i at m1ek$r>,,DpDEE<r>>PNrttbVq]+c>
+q&K,LruV1\q],VTpDj2RpDioHpDW]Do, at 3<rtsu<q&"`=JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$NW8qWg].;GrM9JmrM9%]j.u^Os/,gps/H$us/c5Vs#'g7s#9s<s#U0As#pB[
+s&8qss&K)"s&f;(s',M.s'G_5s%WMhs%r_ms&/kqs&AqsrDrr"s&o;(rEK5*s'>Y2s'Pe6o*PG3
+s(hXNqec at Nq/?:PrGhdVrsSW2s$ZlVs%*/]s%EAcs-rt8rI4Wns+('!s+:9'rIk3)s+^Q/s+p]3
+s,-i7s,?u;rK$o=s,Hc7qiUoAq#LAVpQNpfj-BM+Z^K at 2a-VE5JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$NW8qWg]..7s*jo1o7#:TnMKP]oec\+rAO[7s#Bs;s#U0As#g<Es$$HIs$6TO
+s$crYs-<VMs-NbQs.'+\s.B0arD<GirDNYos&B"us&]5'rEK*.s1%ges69Q)pLsM<s(M at FrG)@J
+s(qXOqeuLRrGhXRs)\3[qfM^Xqf_c8qg/-dh0o6No7-LbpOVpds+1&tpOW'jqgnQnqgnWrrIOKh
+omujfpOD at Vo7-dhl$rMXWW)MfoDJRarVHQhJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$NW8qWg]..7s*jo1o7#:TnH%q`dfK%CrrM?cqZHd%q[!3Ss"OI.s"sa6s#9rt
+q$$Quq$6d&r<`E0rsSc6rseo:r=Ao;q[`K6r=Si*q\&i at m1ek$r>,,DpDEE<r>>PNrttbVq]+c>
+q&K,LruV1\q],VTpDj2RpDioHpDW]Do, at 3<rtsu<q&"`=JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$NW8qWg].;GrM9JmrM9%]j.u^Os/,gps/H$us/c5Vs#'g7s#9s<s#U0As#pB[
+s&8qss&K)"s&f;(s',M.s'G_5s%WMhs%r_ms&/kqs&AqsrDrr"s&o;(rEK5*s'>Y2s'Pe6o*PG3
+s(hXNqec at Nq/?:PrGhdVrsSW2s$ZlVs%*/]s%EAcs-rt8rI4Wns+('!s+:9'rIk3)s+^Q/s+p]3
+s,-i7s,?u;rK$o=s,Hc7qiUoAq#LAVpQNpfj-BM+Z^K at 2a-VE5JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$NW8qWg]..7s*jo1o7#:TnMKP]oec\+rAO[7s#Bs;s#U0As#g<Es$$HIs$6TO
+s$crYs-<VMs-NbQs.'+\s.B0arD<GirDNYos&B"us&]5'rEK*.s1%ges69Q)pLsM<s(M at FrG)@J
+s(qXOqeuLRrGhXRs)\3[qfM^Xqf_c8qg/-dh0o6No7-LbpOVpds+1&tpOW'jqgnQnqgnWrrIOKh
+omujfpOD at Vo7-dhl$rMXWW)MfoDJRarVHQhJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$M?!MSh>dM(s$$I3rBBn'eNWL(m0h;Bo`Y3ok5tSar<N3*s"47(s"XO/s#'g7
+rri-$q$-X"r<W9,rsJ]4r=&W6r=8i<rsei9r=Jc)rt4o:pCm36k8!k0o,%!8o+q9DnJqEHlQ#jD
+r>bVPmi;-BnJ_9Do, at -:q\\i at ob`67JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$M?!MSh>dNRs.o\orM9+_iM?LMs/,gos/>sts/c5Vs#'g7s#9s<s#U0As#pB[
+s&8qss&K)"s&f;(s'#G,s'>Xss%NGfs%r_ns&8kqrDiesrE9/(qcj#(s'>Y2s'Pe6oa1Y4s(_RL
+rG;LNrGMFLrG_dVrGqoGq$d9js$ZlVs%*/^s%EB>qgJEls*sutrIP!#s+C9's+UK-rJ:K1rJU]7
+s,Hu;s,[2As,Hc7q#KrJpQN^`o9Jp2\!bp:_j>p/JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$M?!MSh>dM(s$$I3rBBn'eNWL[m4.]as#'a5rAXa9s#L*?s#^6Cs#pBGrBL<I
+s$?ZPs,d8Gs-E\Ps.'+\s%`Acs%rSis&/kqs&B"us&]5&rEB*,rO;Obs68ubs(M at FrG)@LrGMRP
+q/H:Pqf;^Us)\-\rH7o9q0;pcq0W'fgO9*Nmsk"\q1&9lrI=Eho7?@\q17p`q18?lnUKqVnULFb
+nUL4\X8_ejnbi:]s8)cks7cQdJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$M?!MSh>dM(s$$I3rBBn'eNWL(m0h;Bo`Y3ok5tSar<N3*s"47(s"XO/s#'g7
+rri-$q$-X"r<W9,rsJ]4r=&W6r=8i<rsei9r=Jc)rt4o:pCm36k8!k0o,%!8o+q9DnJqEHlQ#jD
+r>bVPmi;-BnJ_9Do, at -:q\\i at ob`67JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$M?!MSh>dNRs.o\orM9+_iM?LMs/,gos/>sts/c5Vs#'g7s#9s<s#U0As#pB[
+s&8qss&K)"s&f;(s'#G,s'>Xss%NGfs%r_ns&8kqrDiesrE9/(qcj#(s'>Y2s'Pe6oa1Y4s(_RL
+rG;LNrGMFLrG_dVrGqoGq$d9js$ZlVs%*/^s%EB>qgJEls*sutrIP!#s+C9's+UK-rJ:K1rJU]7
+s,Hu;s,[2As,Hc7q#KrJpQN^`o9Jp2\!bp:_j>p/JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$M?!MSh>dM(s$$I3rBBn'eNWL[m4.]as#'a5rAXa9s#L*?s#^6Cs#pBGrBL<I
+s$?ZPs,d8Gs-E\Ps.'+\s%`Acs%rSis&/kqs&B"us&]5&rEB*,rO;Obs68ubs(M at FrG)@LrGMRP
+q/H:Pqf;^Us)\-\rH7o9q0;pcq0W'fgO9*Nmsk"\q1&9lrI=Eho7?@\q17p`q18?lnUKqVnULFb
+nUL4\X8_ejnbi:]s8)cks7cQdJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$L&_)OiW&q,s$$I3rBBn'eNX!@o`=FfcN3\Ar;l!]r<*!'rs8WSs"+1&s"OI-
+s"j[5rsJQ*q$-Qurs8Q0r<iE0r=&]8r=8i<rseo;qZ-X,r=Ji<m1T4.r=n?.r>,2Fq%ioFrtbDF
+o+q?Gru:\Pru:\Pq&B2Nko9R at q&B>Rr>XE.o,7'8r>G2DJMI*XJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$L&_)OiW&rSs.o\orM9+_j.uXMs/,gos/>sts/c5js#'g7s#9s<s#U0As&&eo
+s&8qss&K)#s&f;(s'#G,s%*/]s%EAds%iYls&8kqrDiess&oA*qcj#(rE]A.s'PF*pLsMBrGMLN
+rG_dVs)S'ZrsSc6s$6TNs$ZlUs%!)[s%EA%s*Xcns*jors+'utrIY'%s+LE+rJ1E/s,$c5s,6i7
+s,Hu;s,[2>rK-mVs,d&=mum at -c'80ls-2i5eX?6#m?u^r`Ku-1r at rm'^&S*4U]5i~>
+JcFm4rr at WMJcC<$L&_)OiW&q,s$$I3rBBn'eNX"Ooec%co/-8#s#0m9rAag;s#U0As#g<Es$$BG
+s$6TMs+^Q8s-<VPs.01]rD*5cs%rSis&/kqs&B"us&T/%qcWs,s0hs:oB?4qs(). at qe#k>s(;:D
+rFl.Ds(hLLpM^(NrGh^Ts)@pXqZ-M9s*+?bs*=?cq0_pbs*X'Zs*i^PrIFcpm=>4fbCKVDqge!^
+nUU4\nUCFdo7!h at p&4FYq>:-es7lWfs7QEaJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$L&_)OiW&q,s$$I3rBBn'eNX!@o`=FfcN3\Ar;l!]r<*!'rs8WSs"+1&s"OI-
+s"j[5rsJQ*q$-Qurs8Q0r<iE0r=&]8r=8i<rseo;qZ-X,r=Ji<m1T4.r=n?.r>,2Fq%ioFrtbDF
+o+q?Gru:\Pru:\Pq&B2Nko9R at q&B>Rr>XE.o,7'8r>G2DJMI*XJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$L&_)OiW&rSs.o\orM9+_j.uXMs/,gos/>sts/c5js#'g7s#9s<s#U0As&&eo
+s&8qss&K)#s&f;(s'#G,s%*/]s%EAds%iYls&8kqrDiess&oA*qcj#(rE]A.s'PF*pLsMBrGMLN
+rG_dVs)S'ZrsSc6s$6TNs$ZlUs%!)[s%EA%s*Xcns*jors+'utrIY'%s+LE+rJ1E/s,$c5s,6i7
+s,Hu;s,[2>rK-mVs,d&=mum at -c'80ls-2i5eX?6#m?u^r`Ku-1r at rm'^&S*4U]5i~>
+JcFm4rr at WMJcC<$L&_)OiW&q,s$$I3rBBn'eNX"Ooec%co/-8#s#0m9rAag;s#U0As#g<Es$$BG
+s$6TMs+^Q8s-<VPs.01]rD*5cs%rSis&/kqs&B"us&T/%qcWs,s0hs:oB?4qs(). at qe#k>s(;:D
+rFl.Ds(hLLpM^(NrGh^Ts)@pXqZ-M9s*+?bs*=?cq0_pbs*X'Zs*i^PrIFcpm=>4fbCKVDqge!^
+nUU4\nUCFdo7!h at p&4FYq>:-es7lWfs7QEaJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcGZKjo>@0s$$I3s$$%'dm!F*mgIGBo`Y3oir])[r<N?Os""+$s"==+s"aU4
+rsJc6qZZ]uq$6j(r<`E0r<rK2r=/Q&pCI36q[r-,ob6d.q%`K:o+h9>pD*K>r>YVRko9XBi>_Y4
+r>XK0nJU4$JMI$VJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcGZKjo>AWs.o\os.o7_j.u^OrMKUms/>sts/c7&s#'g7s#C$=s#U0As&&eo
+s&8qts&T/$s&f;(s'#Fms%*/]s%<;as%WMhs&&eps&Aqss&T/&rEB)&rET;,rEf.'o4\/<rGMLN
+rG_dVs)S'Zs)e8Krs\ols$6TNs$ZlVs%*/_rso&>rI+Wns+'orrIY'%s+LE+s+^Q/rJ:K1s,-i7
+rJ^c9s,QmTpQ597l&t_'f9Gljq3(E7pR1cCm@!R5o9n@#`Ku-1q_<[%^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcGZKjo>@0s$$I3s$$%'dm!F]mjdc_q_eC3rAXa9rAjm>s#g6Cs$$BGs+LE+
+s+p]6s-E\Ts%WGeqbR/eqbdAls&B"us&T/$rE0#$s0hs:oB?4ms2G"Is'u"<s(2. at s(D at FrFu:K
+qel4Hs).dSrGhjXq#LG9qfMj\s*"Edqfr-drHe9dqgA3fpO)FXrI3.DYCPkepOMd`hgVd.oDS@[
+q>:-es7u]is7cKbs7?9]JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcGZKjo>@0s$$I3s$$%'dm!F*mgIGBo`Y3oir])[r<N?Os""+$s"==+s"aU4
+rsJc6qZZ]uq$6j(r<`E0r<rK2r=/Q&pCI36q[r-,ob6d.q%`K:o+h9>pD*K>r>YVRko9XBi>_Y4
+r>XK0nJU4$JMI$VJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcGZKjo>AWs.o\os.o7_j.u^OrMKUms/>sts/c7&s#'g7s#C$=s#U0As&&eo
+s&8qts&T/$s&f;(s'#Fms%*/]s%<;as%WMhs&&eps&Aqss&T/&rEB)&rET;,rEf.'o4\/<rGMLN
+rG_dVs)S'Zs)e8Krs\ols$6TNs$ZlVs%*/_rso&>rI+Wns+'orrIY'%s+LE+s+^Q/rJ:K1s,-i7
+rJ^c9s,QmTpQ597l&t_'f9Gljq3(E7pR1cCm@!R5o9n@#`Ku-1q_<[%^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcGZKjo>@0s$$I3s$$%'dm!F]mjdc_q_eC3rAXa9rAjm>s#g6Cs$$BGs+LE+
+s+p]6s-E\Ts%WGeqbR/eqbdAls&B"us&T/$rE0#$s0hs:oB?4ms2G"Is'u"<s(2. at s(D at FrFu:K
+qel4Hs).dSrGhjXq#LG9qfMj\s*"Edqfr-drHe9dqgA3fpO)FXrI3.DYCPkepOMd`hgVd.oDS@[
+q>:-es7u]is7cKbs7?9]JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcG]Kr;c*^s*ju3s*ju3omY:Po`=LhcN3\ArrM!Yr<*!'s!dsts"+1%s"FC-
+r<iQ4qZZWsqZm!(r<`E0r<rE$rseu9q[WE4q[iW:k7[A"rtPDFq\8i at q\JuBr=o8HnJ(X2d2Vs$
+pD`?8r>GVRobm]Hru(VLq&/-.JMHmRJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcG]Kr;c*^s7cPhs8N%ooqgWCs/#[ks/5mqs/Q+#s/l;Ys#0m:s#L*?s#g<Y
+s&/krs&K)"s&]5&s&oA*s%!)[s%35_s%E;as%`Sjs&8krs&T)%q-3f&s'>M.oa1;)s(VLJs)%^P
+rGVRPs)J!Xs)\2Jrs\ols$6TMs$QfSs%!"trt#'Vs*juts+'orrIY'%s+LE+rJ(?-rJ:K1s,-UP
+s,I&:s,R&=pQ597jc]A%qipuAm?IF1rK at 2EmumF/s-`8AopP-5rL)Q1^R'L+pG%7!^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcG]Kr;c*^s*ju3s*ju3omY:Poec+elSSPts#0g7s#C$=s#U0As#g<Es$$BG
+s+C?)s+gW1s,6o<s%35arD*5cqb[;irDW_rrDrl!rE9*-p#u at ls2G"IrF>k<rFQ"@rFc.Ds(D at H
+rG2.Ds)%dSq#LG8s)@dTqfMd\qfr'brHe?fqgA3fs*OEdo6pLbnULRfj+#I,qg[j\ja[5Zs*sin
+q1%@P\c2X-p&=X_q>C!as8)cks7lWgs7ZEas7H?^rUGI=^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcG]Kr;c*^s*ju3s*ju3omY:Po`=LhcN3\ArrM!Yr<*!'s!dsts"+1%s"FC-
+r<iQ4qZZWsqZm!(r<`E0r<rE$rseu9q[WE4q[iW:k7[A"rtPDFq\8i at q\JuBr=o8HnJ(X2d2Vs$
+pD`?8r>GVRobm]Hru(VLq&/-.JMHmRJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcG]Kr;c*^s7cPhs8N%ooqgWCs/#[ks/5mqs/Q+#s/l;Ys#0m:s#L*?s#g<Y
+s&/krs&K)"s&]5&s&oA*s%!)[s%35_s%E;as%`Sjs&8krs&T)%q-3f&s'>M.oa1;)s(VLJs)%^P
+rGVRPs)J!Xs)\2Jrs\ols$6TMs$QfSs%!"trt#'Vs*juts+'orrIY'%s+LE+rJ(?-rJ:K1s,-UP
+s,I&:s,R&=pQ597jc]A%qipuAm?IF1rK at 2EmumF/s-`8AopP-5rL)Q1^R'L+pG%7!^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcG]Kr;c*^s*ju3s*ju3omY:Poec+elSSPts#0g7s#C$=s#U0As#g<Es$$BG
+s+C?)s+gW1s,6o<s%35arD*5cqb[;irDW_rrDrl!rE9*-p#u at ls2G"IrF>k<rFQ"@rFc.Ds(D at H
+rG2.Ds)%dSq#LG8s)@dTqfMd\qfr'brHe?fqgA3fs*OEdo6pLbnULRfj+#I,qg[j\ja[5Zs*sin
+q1%@P\c2X-p&=X_q>C!as8)cks7lWgs7ZEas7H?^rUGI=^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcGQGqZ-$`s$$I3s$$+)d6@:*mgIGBo`Y9qh#dHUs!Rgps!dsts"47's"XN[
+rsJ]4r<;iuq$6j(q[*-"q[<?2rsJ]6q[WK6q[iW:i=c)&r=\o>ob at 9<q%Wc at jV7/&q&8oFq\oJR
+i>U_oo,.?Biu!>%oeD$t^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcGQGqZ-$`s.o\os.o=aiM?LMqkjClrMon!s"sa6s#C$=s#^6Ws&&eps&B"u
+s&T/$s&f;(s$m#Ys%*/]s%<;as%NGes%`Mgs&8qts&o;(qcj#(q-EY"qe5k>rFu:Hs(hXOrGMLN
+rG_XRs)\3's$$HIs$6TNs$ZlVr=8c:s*aors+'orqh"j#rIk-'s+^Q/qZ-MNs,6o9s,-i9s,Qu;
+q2kK9iKESlq3:W;l&tq+rK@&?V3o#aJMHgPJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcGQGqZ-$`s$$I3s$$+)d6@:]mjdKWrAFU5rAXa:s#U0ArB1*Cs$$I5s+:9(
+s+^Q0s,-hFs%!)\s%EAds%`GerD<Mks&/kqrD`ess&]/$rE9*^pZVXos24lUs2P"Is()(>s(;4B
+rFYq>s(MFHrG)30s)7jTrGhjUs)RpVs)e9`rHJ3bqg&'bqg83frI+QiomH:XrI4?frI3jXmst4`
+m==q\m==/Fo7$Rdj*nW>q>L'ep\k!eq>:-es7u]hs7ZKcs7H9]s763[s7$!UJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcGQGqZ-$`s$$I3s$$+)d6@:*mgIGBo`Y9qh#dHUs!Rgps!dsts"47's"XN[
+rsJ]4r<;iuq$6j(q[*-"q[<?2rsJ]6q[WK6q[iW:i=c)&r=\o>ob at 9<q%Wc at jV7/&q&8oFq\oJR
+i>U_oo,.?Biu!>%oeD$t^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcGQGqZ-$`s.o\os.o=aiM?LMqkjClrMon!s"sa6s#C$=s#^6Ws&&eps&B"u
+s&T/$s&f;(s$m#Ys%*/]s%<;as%NGes%`Mgs&8qts&o;(qcj#(q-EY"qe5k>rFu:Hs(hXOrGMLN
+rG_XRs)\3's$$HIs$6TNs$ZlVr=8c:s*aors+'orqh"j#rIk-'s+^Q/qZ-MNs,6o9s,-i9s,Qu;
+q2kK9iKESlq3:W;l&tq+rK@&?V3o#aJMHgPJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcGQGqZ-$`s$$I3s$$+)d6@:]mjdKWrAFU5rAXa:s#U0ArB1*Cs$$I5s+:9(
+s+^Q0s,-hFs%!)\s%EAds%`GerD<Mks&/kqrD`ess&]/$rE9*^pZVXos24lUs2P"Is()(>s(;4B
+rFYq>s(MFHrG)30s)7jTrGhjUs)RpVs)e9`rHJ3bqg&'bqg83frI+QiomH:XrI4?frI3jXmst4`
+m==q\m==/Fo7$Rdj*nW>q>L'ep\k!eq>:-es7u]hs7ZKcs7H9]s763[s7$!UJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcG?Ar;cBfs$$I3s$$+)cT_.*mgIGBo`Y9qgB.<Us!Ians![mrs""+$r<`K2
+r<rQ-o*5!qq#L9ur<iE0rsAW4q[NK6r=Ai<q%;'go+Up6jV.M(rtGDFk8O:<eJdHccPV3fo.bgr
+^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcG?Ar;cBfs.o\os.o=aj.uLIs/,gorM]ars/l;Ys#9s<s#^6Ws&&eps&B"u
+s&T/$s&f;(s$m#YrCR#]s%EAcs%WMgs%iYks&&eos&8l"qcil$rE](&ok4;=rG)@Js(qRMq/?:P
+s)J!Xs#g<Es$$HIs$6TNrseo:r=ApVs*suton!'ns+C+IrJ1E/rJCK1s,6o6s,?u;rJpc9rK-i;
+f95Nbmum(#pQ2;?_3]^-o.bgr^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcG?Ar;cBfs$$I3s$$+)cT_.]mjdKWq_eC3s#9s;s#L*?s#^6Cs#pBGs+(-#
+s+LE+s+gW2s$crWs%*/^s%NAcs%`Mgs%rYkrDNYos&B#!rE0#$qrdk?s1nZNs24lTs2P(Js'u(>
+rFPq>qdoe>rFbp+s(_RLs(q^Qs)7jTs)J'Vs)J!XrH&!\qfi!`qg&'bqg8'bqg8!`l[ASYpO;4R
+omlX`nUU4\omkkJc[NY.p\k'gs8DcmrVcKgrVQQis7u]is7cKbs7H?^qsj^Us6ojPJcEF`rrAho
+J,~>
+JcFm4rr at WMJcC<$JcG?Ar;cBfs$$I3s$$+)cT_.*mgIGBo`Y9qgB.<Us!Ians![mrs""+$r<`K2
+r<rQ-o*5!qq#L9ur<iE0rsAW4q[NK6r=Ai<q%;'go+Up6jV.M(rtGDFk8O:<eJdHccPV3fo.bgr
+^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcG?Ar;cBfs.o\os.o=aj.uLIs/,gorM]ars/l;Ys#9s<s#^6Ws&&eps&B"u
+s&T/$s&f;(s$m#YrCR#]s%EAcs%WMgs%iYks&&eos&8l"qcil$rE](&ok4;=rG)@Js(qRMq/?:P
+s)J!Xs#g<Es$$HIs$6TNrseo:r=ApVs*suton!'ns+C+IrJ1E/rJCK1s,6o6s,?u;rJpc9rK-i;
+f95Nbmum(#pQ2;?_3]^-o.bgr^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcG?Ar;cBfs$$I3s$$+)cT_.]mjdKWq_eC3s#9s;s#L*?s#^6Cs#pBGs+(-#
+s+LE+s+gW2s$crWs%*/^s%NAcs%`Mgs%rYkrDNYos&B#!rE0#$qrdk?s1nZNs24lTs2P(Js'u(>
+rFPq>qdoe>rFbp+s(_RLs(q^Qs)7jTs)J'Vs)J!XrH&!\qfi!`qg&'bqg8'bqg8!`l[ASYpO;4R
+omlX`nUU4\omkkJc[NY.p\k'gs8DcmrVcKgrVQQis7u]is7cKbs7H?^qsj^Us6ojPJcEF`rrAho
+J,~>
+JcFm4rr at WMJcC<$JcG3=r;cNjrI4c1omY4Nq#U!ncN3\Ar;kRQrr`96s!Rgps!dsts"+0UrsAW2
+r<rW/o*5!jrs/E,pBgd*rsSi4r<rQ4r=/]8r=A]8q[r-,rt4Q0r=f&@r=ni:rt>2Bo+Lj2eJeB(
+nJ^4$d28Q3lPS_<JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcG3=r;cNjs82iqs.o=aj.uXMrM9IirMKUms/>sss"XO0s#9s=s%r_ns&8qs
+s&K)"rE0(hs%!)[s%3/]s%EAcs%WMgs%iYks&&eos&8qss&T/%rEK#$oa1;(s(MFHs(_LJs(q^P
+qel:Ls)@jUs,6n?s$$HIs$6TMr=/]8rt#, at s*aippODu=s+C9's+UK-qhP3-rJCQ3s+pQ2s,Hu;
+rK$o=qiTQpnWWF)nWEF)q2_kL]9f3Gl^-]fJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcG3=r;cNjrI4c1omY4Nq)%UkjYZils#0g7s#L*?rB($Bs*Xirs+(-%s+LE,
+s$QfSs$m#Ys%35`rCm/arD3AgrDESms&8qus&]5&s&oA(s)S#"rTO9rs2"`Qs2=rVs2Y(Js()(>
+rFGq>q#LG.rFu4FrG2FLs).dRs)A!Uqf2RTs)J!Yqf;RRs)RjVs*"EdrHS?gqg7p^m=#"`s*sQf
+ja[)Vmsk"\nUL at bgOIV"_>a')q>C9kqu6WopO3!frHnKhrUp3^s763[s7$'WrU0RMrTo+8^&S*4
+U]5i~>
+JcFm4rr at WMJcC<$JcG3=r;cNjrI4c1omY4Nq#U!ncN3\Ar;kRQrr`96s!Rgps!dsts"+0UrsAW2
+r<rW/o*5!jrs/E,pBgd*rsSi4r<rQ4r=/]8r=A]8q[r-,rt4Q0r=f&@r=ni:rt>2Bo+Lj2eJeB(
+nJ^4$d28Q3lPS_<JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcG3=r;cNjs82iqs.o=aj.uXMrM9IirMKUms/>sss"XO0s#9s=s%r_ns&8qs
+s&K)"rE0(hs%!)[s%3/]s%EAcs%WMgs%iYks&&eos&8qss&T/%rEK#$oa1;(s(MFHs(_LJs(q^P
+qel:Ls)@jUs,6n?s$$HIs$6TMr=/]8rt#, at s*aippODu=s+C9's+UK-qhP3-rJCQ3s+pQ2s,Hu;
+rK$o=qiTQpnWWF)nWEF)q2_kL]9f3Gl^-]fJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcG3=r;cNjrI4c1omY4Nq)%UkjYZils#0g7s#L*?rB($Bs*Xirs+(-%s+LE,
+s$QfSs$m#Ys%35`rCm/arD3AgrDESms&8qus&]5&s&oA(s)S#"rTO9rs2"`Qs2=rVs2Y(Js()(>
+rFGq>q#LG.rFu4FrG2FLs).dRs)A!Uqf2RTs)J!Yqf;RRs)RjVs*"EdrHS?gqg7p^m=#"`s*sQf
+ja[)Vmsk"\nUL at bgOIV"_>a')q>C9kqu6WopO3!frHnKhrUp3^s763[s7$'WrU0RMrTo+8^&S*4
+U]5i~>
+JcFm4rr at WMJcC<$JcG'9r;cTls$$+)bs(q(nI*YDo`Y3of`M0cr=],Xs![mrs""*TrsAW2r<rK+
+rs&9!r<E!$qZup&rsJc3rsJ]4r=&W6r=8c:q%3K:q%Dj&kn<Y&nIkR.pCR!9q\fDPq\euDq&02N
+r>GJNjVc/WWA3!AmkKCn^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcG'9r;cTls.o\opSHQ=s/#[ks/5mqs/H#Qs"aU1s"saKs%iYns&B"us&]5&
+s&o at ks%!)[s%35_s%E;as%WMgs%iYks&&eos&8qss&K)#s&oA*pKR:ss(D.>s(MFHrG)@JrG;FL
+qel at Ns)A!Xs)S-ss,6o9s#pBGs$-NKr=/]8r=ApSrHnQlq#LGEs+(-#rIY!#s+LE+rJ(9+s+pW1
+s+p]5rJ^]7rJpi;rK-o=j-'G)nWNp9mumF-o8r^-q2YK7opG]ErL!JKl'VF9o9cqPWA3"kmkKCn
+^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcG'9r;cTls$$+)bs(q[nLEWWq_eC3rAXa9s#L*?s#^6Cs*Xiqs+(-$s+LE+
+s$QfSs$crXs%*/^rCd/as%WMgrD3AgqbdAms&T)#qf;`"qrn'ps1nZOs24lUs2Y(Js().>q#LG+
+s(;4BrFl4FrG)4Fs)%^Ps)7pSo5O;@s)\-\ol^:Yl[&MVq0_pbm=+/HrIF3`pOLM<aaV;0n,<.]
+rVQWmrI+WnqgJEjrHnKhqg&3dqfi'`rU'LKrTjLKs65+7^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcG'9r;cTls$$+)bs(q(nI*YDo`Y3of`M0cr=],Xs![mrs""*TrsAW2r<rK+
+rs&9!r<E!$qZup&rsJc3rsJ]4r=&W6r=8c:q%3K:q%Dj&kn<Y&nIkR.pCR!9q\fDPq\euDq&02N
+r>GJNjVc/WWA3!AmkKCn^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcG'9r;cTls.o\opSHQ=s/#[ks/5mqs/H#Qs"aU1s"saKs%iYns&B"us&]5&
+s&o at ks%!)[s%35_s%E;as%WMgs%iYks&&eos&8qss&K)#s&oA*pKR:ss(D.>s(MFHrG)@JrG;FL
+qel at Ns)A!Xs)S-ss,6o9s#pBGs$-NKr=/]8r=ApSrHnQlq#LGEs+(-#rIY!#s+LE+rJ(9+s+pW1
+s+p]5rJ^]7rJpi;rK-o=j-'G)nWNp9mumF-o8r^-q2YK7opG]ErL!JKl'VF9o9cqPWA3"kmkKCn
+^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcG'9r;cTls$$+)bs(q[nLEWWq_eC3rAXa9s#L*?s#^6Cs*Xiqs+(-$s+LE+
+s$QfSs$crXs%*/^rCd/as%WMgrD3AgqbdAms&T)#qf;`"qrn'ps1nZOs24lUs2Y(Js().>q#LG+
+s(;4BrFl4FrG)4Fs)%^Ps)7pSo5O;@s)\-\ol^:Yl[&MVq0_pbm=+/HrIF3`pOLM<aaV;0n,<.]
+rVQWmrI+WnqgJEjrHnKhqg&3dqfi'`rU'LKrTjLKs65+7^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcFp5r;c`ps$$+)b<Ge(o*`kFo`Y'kgB.Ber=],Xs![msr<W?.r<iK2qZ-9n
+o`t9uq$I'+rsJW2r=&W6rsno:q[i]<q%3'.r=J?.pCdK<rtG,>o+CX,pCI'<nJV3Br>GVPko'@8
+mhs4aXYIp7pG%7!^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcFp5r;c`ps.o\opSHW?qka=is/5mqs/H$us"aU1s"saJs%EAcs&&ess&]5&
+s$crWs%!)[s%35_s%EAcs%WMgs%iYkrDESms&8qss&K)#q-!Z"oa1Y0q.BY>s(MFHs(_LJrG;FL
+qel at Ns)J!Xs,-i7s,?t at s$$HJrs\i8q[WQ8qZ-YDrI+]ps*suts+1-#s+C9's+UE+s+gQ/s,$c2
+rJUW5s,Hu;rK$i;qiUi?rK-i;rK?W3l]Uq'o8rj1pQ#!-q3^]=pR(cCrKs at HXYIqapG%7!^&S*4
+U]5i~>
+JcFm4rr at WMJcC<$JcFp5r;c`ps$$+)b<Ge[o.&cWq)/+0s#C$=s#U0As*=Wks*aoss+(-%s$?ZO
+s$QfTs$m#Ys%35_s%EAcs%WMgqbR)crDESms&K)#qf;`"rTO9ps1eTLs2+fRs2=rWs2b';s'kq:
+s()(>qe,qBqeH"Ds(qXNs).jQrGMFLrG_FLs)\-\ol]SGrHe9ds*XKfh1!n(rI4!\qgS!`aaVG4
+n,<"Ys82\@rI+]ms*aonq0W-fqg&-brHJ3`rH8'\rH&#'s60LGrT/V1^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcFp5r;c`ps$$+)b<Ge(o*`kFo`Y'kgB.Ber=],Xs![msr<W?.r<iK2qZ-9n
+o`t9uq$I'+rsJW2r=&W6rsno:q[i]<q%3'.r=J?.pCdK<rtG,>o+CX,pCI'<nJV3Br>GVPko'@8
+mhs4aXYIp7pG%7!^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcFp5r;c`ps.o\opSHW?qka=is/5mqs/H$us"aU1s"saJs%EAcs&&ess&]5&
+s$crWs%!)[s%35_s%EAcs%WMgs%iYkrDESms&8qss&K)#q-!Z"oa1Y0q.BY>s(MFHs(_LJrG;FL
+qel at Ns)J!Xs,-i7s,?t at s$$HJrs\i8q[WQ8qZ-YDrI+]ps*suts+1-#s+C9's+UE+s+gQ/s,$c2
+rJUW5s,Hu;rK$i;qiUi?rK-i;rK?W3l]Uq'o8rj1pQ#!-q3^]=pR(cCrKs at HXYIqapG%7!^&S*4
+U]5i~>
+JcFm4rr at WMJcC<$JcFp5r;c`ps$$+)b<Ge[o.&cWq)/+0s#C$=s#U0As*=Wks*aoss+(-%s$?ZO
+s$QfTs$m#Ys%35_s%EAcs%WMgqbR)crDESms&K)#qf;`"rTO9ps1eTLs2+fRs2=rWs2b';s'kq:
+s()(>qe,qBqeH"Ds(qXNs).jQrGMFLrG_FLs)\-\ol]SGrHe9ds*XKfh1!n(rI4!\qgS!`aaVG4
+n,<"Ys82\@rI+]ms*aonq0W-fqg&-brHJ3`rH8'\rH&#'s60LGrT/V1^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcFd1r;clto7"kHrsSc+o*`kFo`Y'kgB.<crt>>Fs!dstq[!3.q#L-mpBL?s
+pB^X&rs/K0r<rK2rseo:pCH^(rt49&q%<E6r=\W4r=J]6q[WW8rsnu:r>GVPobm]Fq&0&HpDNoH
+q\f,Fo,5XeYqa'3q([I#^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcFd1r;clts82iqpSHW?q5++hs/>sss/Q)fs"j[3s%<;as%NGfs%iYns&f:i
+s$m#Ys%*/]s%<;as%NGes%`Sis%r_ms&/kqs&B"us&T/$rE0#$rEAk#qdo_<s(MFHrG)4FrG;FL
+rGMRPqf;^os,6o9s,I%Cs$6Mkr=/Q&qg89hs*aors*sutrIOp!s+C?)rIt-'rJ:K.rJLQ3s,?o9
+rJpi;m?$e!s,c3%s,d2AqiLE1rJpW3pPf'<n!Ej;Q^=s3_3asPJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFd1r;clto7"kHs!mt(o.&]Uq_e=2rAag;s#U1)s*F]ms*juus+129s$H`Q
+s$crWs%!)[s%35_s%EAcrD*/arD<Gis&/kqqf;^XrTO9prP/BKq#L;#rF5e:s()(>s(;4Bs(M:E
+qeQ"Ds(_LLqelFPqf):Ls)[jTrH8-blZrGTrHnKjpO3!fd=2+FrI4Ehmsb"\rI4WnpO;^`aaV_<
+li$MSs*aWhs*FKdqg/3drHS3`rHA-^s)dpTs5j:As5F"9JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFd1r;clto7"kHrsSc+o*`kFo`Y'kgB.<crt>>Fs!dstq[!3.q#L-mpBL?s
+pB^X&rs/K0r<rK2rseo:pCH^(rt49&q%<E6r=\W4r=J]6q[WW8rsnu:r>GVPobm]Fq&0&HpDNoH
+q\f,Fo,5XeYqa'3q([I#^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcFd1r;clts82iqpSHW?q5++hs/>sss/Q)fs"j[3s%<;as%NGfs%iYns&f:i
+s$m#Ys%*/]s%<;as%NGes%`Sis%r_ms&/kqs&B"us&T/$rE0#$rEAk#qdo_<s(MFHrG)4FrG;FL
+rGMRPqf;^os,6o9s,I%Cs$6Mkr=/Q&qg89hs*aors*sutrIOp!s+C?)rIt-'rJ:K.rJLQ3s,?o9
+rJpi;m?$e!s,c3%s,d2AqiLE1rJpW3pPf'<n!Ej;Q^=s3_3asPJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFd1r;clto7"kHs!mt(o.&]Uq_e=2rAag;s#U1)s*F]ms*juus+129s$H`Q
+s$crWs%!)[s%35_s%EAcrD*/arD<Gis&/kqqf;^XrTO9prP/BKq#L;#rF5e:s()(>s(;4Bs(M:E
+qeQ"Ds(_LLqelFPqf):Ls)[jTrH8-blZrGTrHnKjpO3!fd=2+FrI4Ehmsb"\rI4WnpO;^`aaV_<
+li$MSs*aWhs*FKdqg/3drHS3`rHA-^s)dpTs5j:As5F"9JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFX-qZ-A>aZfY(oaB(Ho`Y'kf`M*art>>Fs![mrq#LF$r<iK2o`b'oq$6X"
+r<`K/rsAW2r<rQ4r=/]8pCH9qm18e"rt#,Aq%3Q<q%3E6q%!?4pC-p9q&/K8q\c:K[5#3/q_<[%
+^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcFX-qZ-AefqeMAs/5mqs/H$us/Z/Us"saIs%EAcs%`Sis&&e[s$?ZRs%*/]
+rC[)_s%NGes%`Sis%r_ms&/kqs&B"us&T/$rE0#$s'#(%rFGe:s(D at Gq.feBs(qXNqel4MrJUW5
+s$$HIq#LF(r=8c:s*OWjs*aorrI=crs+1-#rIb'%rIt3)s+gW.s+pW1s,-c5rJ^c9rJpo=l&be)
+mu[F-l]C_!qi:E1qi(9-JX?>%[5#4Yq_<[%^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcFX-qZ-A>aZfY[od\iUq_eC3rAXa9s#L+%rHS?hs*Xirs$-NKs$?ZOs$QfS
+s$crXs%35_s%E;brD*/arD<Agqf;^XrTO%WrODm=rPJSBrF,_8rF>k<s(24BrFc.DqeGk at rG;LK
+s(qRLrGMXRqf)FPq/c:Ps**pVq0DpbrHn!\bC98:l[J_\Vgd=uli$GQrI+Efs*OclrH\?dq0E!b
+qfi!^rH8'\rH%jVq/QGns5<q4JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFX-qZ-A>aZfY(oaB(Ho`Y'kf`M*art>>Fs![mrq#LF$r<iK2o`b'oq$6X"
+r<`K/rsAW2r<rQ4r=/]8pCH9qm18e"rt#,Aq%3Q<q%3E6q%!?4pC-p9q&/K8q\c:K[5#3/q_<[%
+^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcFX-qZ-AefqeMAs/5mqs/H$us/Z/Us"saIs%EAcs%`Sis&&e[s$?ZRs%*/]
+rC[)_s%NGes%`Sis%r_ms&/kqs&B"us&T/$rE0#$s'#(%rFGe:s(D at Gq.feBs(qXNqel4MrJUW5
+s$$HIq#LF(r=8c:s*OWjs*aorrI=crs+1-#rIb'%rIt3)s+gW.s+pW1s,-c5rJ^c9rJpo=l&be)
+mu[F-l]C_!qi:E1qi(9-JX?>%[5#4Yq_<[%^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcFX-qZ-A>aZfY[od\iUq_eC3rAXa9s#L+%rHS?hs*Xirs$-NKs$?ZOs$QfS
+s$crXs%35_s%E;brD*/arD<Agqf;^XrTO%WrODm=rPJSBrF,_8rF>k<s(24BrFc.DqeGk at rG;LK
+s(qRLrGMXRqf)FPq/c:Ps**pVq0DpbrHn!\bC98:l[J_\Vgd=uli$GQrI+Efs*OclrH\?dq0E!b
+qfi!^rH8'\rH%jVq/QGns5<q4JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFL)s*jnHqgQXNrsSi-oaB(Ho`Y!ih#dNdrt58DqZ-Etr<`E0rsSE%q$-Qu
+q$?p*rs/Q1q[390q[EE4q[V?km1/^uq[iQ6o+(^.q[E9.rsJW?q\eW8ru%^O[kY3+s"T*)]Dqm2
+U]5i~>
+JcFm4rr at WMJcC<$JcFL)s8Mrsqk_i=s/#ams/5mqs/Q+"s$m#Fs%35`s%NGfs%r_ms$$HJs$?ZR
+s%!)]s%EAcs%WGes%iYks&&eos&8qss&K)"s&]/$s&o;(oa1S-qdoe>rFl4Fq.fqFrG;FLrGMRS
+s)\-rs,6o9qZ-F#r=/]8rt#-VqgAElrI4]prIFp!rIY!#qh4p%s+^Q,rJ1E/rJCQ3rJU]7rJgi;
+rK#itpQ,-1kE#G!pPo!-qht9-s+u;n[kY4Us"T*)]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcFL)s*jnHqgQXNs!n%*od\cSrAFO3rAXa:s)e9`s*+Kfs*OcnrBL<IrB^HN
+s$ZlVs%*/]s%</_q+gf_rD<<1qZ-Z,s1&$:s0hs8s1/0Fs2"_CrF,Y6s'u(>s(24BrFc.EnS8#<
+s(V at HrGDRPs)7^PrGhdVolL.Tms"SPqg&-dqg7p^q0r9jf7*UHl$iY^VgdJ$li$AOs*aQfqg8?h
+s*=WhrHJ-`rHJ3`qfVjZrH&!Zo5X_Is4W&(]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcFL)s*jnHqgQXNrsSi-oaB(Ho`Y!ih#dNdrt58DqZ-Etr<`E0rsSE%q$-Qu
+q$?p*rs/Q1q[390q[EE4q[V?km1/^uq[iQ6o+(^.q[E9.rsJW?q\eW8ru%^O[kY3+s"T*)]Dqm2
+U]5i~>
+JcFm4rr at WMJcC<$JcFL)s8Mrsqk_i=s/#ams/5mqs/Q+"s$m#Fs%35`s%NGfs%r_ms$$HJs$?ZR
+s%!)]s%EAcs%WGes%iYks&&eos&8qss&K)"s&]/$s&o;(oa1S-qdoe>rFl4Fq.fqFrG;FLrGMRS
+s)\-rs,6o9qZ-F#r=/]8rt#-VqgAElrI4]prIFp!rIY!#qh4p%s+^Q,rJ1E/rJCQ3rJU]7rJgi;
+rK#itpQ,-1kE#G!pPo!-qht9-s+u;n[kY4Us"T*)]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcFL)s*jnHqgQXNs!n%*od\cSrAFO3rAXa:s)e9`s*+Kfs*OcnrBL<IrB^HN
+s$ZlVs%*/]s%</_q+gf_rD<<1qZ-Z,s1&$:s0hs8s1/0Fs2"_CrF,Y6s'u(>s(24BrFc.EnS8#<
+s(V at HrGDRPs)7^PrGhdVolL.Tms"SPqg&-dqg7p^q0r9jf7*UHl$iY^VgdJ$li$AOs*aQfqg8?h
+s*=WhrHJ-`rHJ3`qfVjZrH&!Zo5X_Is4W&(]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcFL)s$$C1r;ckHaZfY(oaB.Jo*"dgh#dBPrt>>Frr`!$r<`E0rsSE%q$-Qu
+q$@!,rs&E.q[33.q[E?2q[Vp&pC?!gq[`E2oaUj.q$[!*q\]>NN>T2\Y8I9oJcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFL)s.fOhr;ckoeYN5As/,gos/>sss/Z/Ts"saIs%EAcs%`Sjs&&e\s$6TM
+s$H`Rs%!)\s%EAds%`SirD<Mks&/kqs&B"us&T)"s&f;(s'#"#rFG_8rFZ(Bs(M at Fs(_LJs(qXN
+s).XQq#LGQs,?u"q$d32q[WW:rI"KjrI4]prIFp!rIY!#qh4p%s+LE,rJ1E/rJCK1s,6i7rJgc9
+rK$9+ooJp/q2OX!pPnp+qht9-q2'fl\M:^_rKd8Gs"T*)]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcFL)s$$C1r;ckHaZfY[od\cSq_e=1s#9strH&!]s*+Kgs*Oc0rBL6Gs$?ZP
+s$crXs%35_ohGB[q+peds)S-\s',B0s0hs8s0Vg<s1eTLs2"_CqdKG4s'u(?s(;:DpM'M<s(VFH
+s(MFJqeZ:LrGMXRq/H at Rq/Z:Ps)mjTpNQR\rH\3brHn3brI4WleUIOJNIL!gn,;GIo6gL`qg/3d
+s*+Kdq02d\qfVp\rH%pXrGhFJs)7pQs42c$]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcFL)s$$C1r;ckHaZfY(oaB.Jo*"dgh#dBPrt>>Frr`!$r<`E0rsSE%q$-Qu
+q$@!,rs&E.q[33.q[E?2q[Vp&pC?!gq[`E2oaUj.q$[!*q\]>NN>T2\Y8I9oJcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFL)s.fOhr;ckoeYN5As/,gos/>sss/Z/Ts"saIs%EAcs%`Sjs&&e\s$6TM
+s$H`Rs%!)\s%EAds%`SirD<Mks&/kqs&B"us&T)"s&f;(s'#"#rFG_8rFZ(Bs(M at Fs(_LJs(qXN
+s).XQq#LGQs,?u"q$d32q[WW:rI"KjrI4]prIFp!rIY!#qh4p%s+LE,rJ1E/rJCK1s,6i7rJgc9
+rK$9+ooJp/q2OX!pPnp+qht9-q2'fl\M:^_rKd8Gs"T*)]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcFL)s$$C1r;ckHaZfY[od\cSq_e=1s#9strH&!]s*+Kgs*Oc0rBL6Gs$?ZP
+s$crXs%35_ohGB[q+peds)S-\s',B0s0hs8s0Vg<s1eTLs2"_CqdKG4s'u(?s(;:DpM'M<s(VFH
+s(MFJqeZ:LrGMXRq/H at Rq/Z:Ps)mjTpNQR\rH\3brHn3brI4WleUIOJNIL!gn,;GIo6gL`qg/3d
+s*+Kdq02d\qfVp\rH%pXrGhFJs)7pQs42c$]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcFF'q0r8BaZf;(d/inCo)\"Uq#LF*r=Ju at r=],4oa(L&r<iQ4o*+poq$6X"
+rs&9*q$R!,q[E?2r=8K2pC?p,r=&]8jUCqppC6p,q[<?0oa-Hl\M:-%JcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFF's8Mnlr;bHFs/#ams/5mqs/H%!s/c5ks%35`s%WMhs%r_ms$-NKs$?ZO
+s$ZlUs%*/^s%NGes%iYks&&eorDW_qs&K)"rE'#$s&oA*oa1M+q.9S<rFc.Ds(VFHrG2FLqec-/
+s+pW1s,-i7s,?u"pC.!0q[WW:s*X]lqgSKnrIFits+:3%qh5!'s+C3's+gW1qhb9/rJU]7rJg]7
+qiCQ7ooJj-pPnj)mu@(#q2>--rJC3'M3kb-^R+>RJcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFF'q0r8BaZf;Gh)+j`s#9sss)J'Zs)\3_s*+K*s#pBGq`k*Gs$?ZPs$crY
+s%E;apJ(Z_q#L/0s)\3Ds0r$:s0_g4s0Ma;s1SHIs1nZNs'YG,s'l"<s()(>q.BY?s(VLJs(MFI
+rG2 at Js)%dRs)7^Pqf2FPrH%^Uq0)@Rom-L^qg8-dq0dgCiI:1nmJZ5Gqtp,8qg8-brH\Efs*+Kc
+qf_jZrH/!Zs)S!VrG_ at HrFu:FJcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFF'q0r8BaZf;(d/inCo)\"Uq#LF*r=Ju at r=],4oa(L&r<iQ4o*+poq$6X"
+rs&9*q$R!,q[E?2r=8K2pC?p,r=&]8jUCqppC6p,q[<?0oa-Hl\M:-%JcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFF's8Mnlr;bHFs/#ams/5mqs/H%!s/c5ks%35`s%WMhs%r_ms$-NKs$?ZO
+s$ZlUs%*/^s%NGes%iYks&&eorDW_qs&K)"rE'#$s&oA*oa1M+q.9S<rFc.Ds(VFHrG2FLqec-/
+s+pW1s,-i7s,?u"pC.!0q[WW:s*X]lqgSKnrIFits+:3%qh5!'s+C3's+gW1qhb9/rJU]7rJg]7
+qiCQ7ooJj-pPnj)mu@(#q2>--rJC3'M3kb-^R+>RJcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFF'q0r8BaZf;Gh)+j`s#9sss)J'Zs)\3_s*+K*s#pBGq`k*Gs$?ZPs$crY
+s%E;apJ(Z_q#L/0s)\3Ds0r$:s0_g4s0Ma;s1SHIs1nZNs'YG,s'l"<s()(>q.BY?s(VLJs(MFI
+rG2 at Js)%dRs)7^Pqf2FPrH%^Uq0)@Rom-L^qg8-dq0dgCiI:1nmJZ5Gqtp,8qg8-brH\Efs*+Kc
+qf_jZrH/!Zs)S!VrG_ at HrFu:FJcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFF'pO<-+r;b)+rrMj%cN3\AnH&.]q#L3lrt#&>r=T&Br<)]ur<`E0nHJ^m
+q$6^$rs&K/oa1L&q[<90pC6d*pC6R"q$Zp(q[<3/o*kR*rsJ9&r<eN$].p3#JcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFF's8Mhjs.oSnh5("Gs/,gos/>sss/Z1$s"saIs%EAds%iYks$$HIs$6TM
+s$H`Rs$crWs%*/^s%NGes%iYlrDNYos&B"us&T)"s&f5&oa1A'rFQ"@s(D:Ds(VFHrG23/rGMRP
+s+^Q/s+p]3s,-i7s)\3^pC-p.r=8jTpO3!hrI=crrIP!#rIb!#s+:3's+^E+rJ:E/s,-c5rJ^W5
+ooAj/pQ#!-oo/F!pPe^%rJLW3nVI.#NL.73_3aJRs-<VMJcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFF'pO<-+r;b)+s"sI"f/3@^s#0mprGV^Us)\3_s#^6CrB:0Es$-NKrB^HN
+s$crYs%<;arCm"eqb@)cq/ZFTs'#G*s0VU.s186Bs1\NJs1nYAmpZ6*rF>k<rFQ"@s(D at Fs(VLG
+qeH.Hs(q^PrGMXRqf):LrGqpZrH.XRrH at jXqfqdZrHeEhrI"Wls*X]lj*q#VKmrRkp&44Sqtp9g
+q>9u8rHn?dpNcd`s*+Kdq/uXXrH%pXrGh^Rqeu4Hs(hRGs(6i^]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcFF'pO<-+r;b)+rrMj%cN3\AnH&.]q#L3lrt#&>r=T&Br<)]ur<`E0nHJ^m
+q$6^$rs&K/oa1L&q[<90pC6d*pC6R"q$Zp(q[<3/o*kR*rsJ9&r<eN$].p3#JcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFF's8Mhjs.oSnh5("Gs/,gos/>sss/Z1$s"saIs%EAds%iYks$$HIs$6TM
+s$H`Rs$crWs%*/^s%NGes%iYlrDNYos&B"us&T)"s&f5&oa1A'rFQ"@s(D:Ds(VFHrG23/rGMRP
+s+^Q/s+p]3s,-i7s)\3^pC-p.r=8jTpO3!hrI=crrIP!#rIb!#s+:3's+^E+rJ:E/s,-c5rJ^W5
+ooAj/pQ#!-oo/F!pPe^%rJLW3nVI.#NL.73_3aJRs-<VMJcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFF'pO<-+r;b)+s"sI"f/3@^s#0mprGV^Us)\3_s#^6CrB:0Es$-NKrB^HN
+s$crYs%<;arCm"eqb@)cq/ZFTs'#G*s0VU.s186Bs1\NJs1nYAmpZ6*rF>k<rFQ"@s(D at Fs(VLG
+qeH.Hs(q^PrGMXRqf):LrGqpZrH.XRrH at jXqfqdZrHeEhrI"Wls*X]lj*q#VKmrRkp&44Sqtp9g
+q>9u8rHn?dpNcd`s*+Kdq/uXXrH%pXrGh^Rqeu4Hs(hRGs(6i^]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcFF'pO<!'r;b/-pC#@Lo`XX_q#^Eno)eq%r=Ai<r=Su1r<N'&r<`K2rrhos
+q$-Ksr<WE-qZuj$q$R!,rs\o8oaLR(oaL9sq[3-*rsJ]4pC-j*nI#."q$N6$].p-!s*fP!^&S*4
+U]5i~>
+JcFm4rr at WMJcC<$JcFF's8DbiqkX/jiM?LMrMKUms/>sss/Z1$s/uAos%NGfs%iYls$$HIs$6TM
+s$H`Rs$crWs%*/^s%EAds%iYks&&eos&8qss&K"urE'#$oa1M+s'u"<s(2. at s(D:Ds(VLJqZ-Y3
+s(q^PqelFPs+UK-s+gW1rJCQ3s)\3^r<rE0q[NQ8rHn?frI+]prI=crrIP!#qh+p%s+:9(rIt3)
+qhP-+rJCQ3qht9/pPnp-pPnj)o8ER)mu."!j,&nb].q?mn!<X3s-3PKs87HJ^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcFF'pO<!'r;b/-pF=WKs#'gls(q^Ps).jTs)J'!s#U0As#g6CrBL<Is$?ZO
+s$QfTs$uqds%E/]rCus*s)\3Cs&f0)s0D[5s1&*@s1JBGs1eS at ojRf,s'bk8rF>k<s(24Bs(D at F
+s(VLGqeH(Fs(q^Ps).^Pqf)@Ns)S'ZolU.To60qRq0;XZrHS?grHnEijaR)TM15F&s8Doqq>KLS
+l21MWs*X]jqg.^Vs*4Qfs)n3\rH%pXqf2XTq/?4LpMKqJs(D at DrFQ"XJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcFF'pO<!'r;b/-pC#@Lo`XX_q#^Eno)eq%r=Ai<r=Su1r<N'&r<`K2rrhos
+q$-Ksr<WE-qZuj$q$R!,rs\o8oaLR(oaL9sq[3-*rsJ]4pC-j*nI#."q$N6$].p-!s*fP!^&S*4
+U]5i~>
+JcFm4rr at WMJcC<$JcFF's8DbiqkX/jiM?LMrMKUms/>sss/Z1$s/uAos%NGfs%iYls$$HIs$6TM
+s$H`Rs$crWs%*/^s%EAds%iYks&&eos&8qss&K"urE'#$oa1M+s'u"<s(2. at s(D:Ds(VLJqZ-Y3
+s(q^PqelFPs+UK-s+gW1rJCQ3s)\3^r<rE0q[NQ8rHn?frI+]prI=crrIP!#qh+p%s+:9(rIt3)
+qhP-+rJCQ3qht9/pPnp-pPnj)o8ER)mu."!j,&nb].q?mn!<X3s-3PKs87HJ^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcFF'pO<!'r;b/-pF=WKs#'gls(q^Ps).jTs)J'!s#U0As#g6CrBL<Is$?ZO
+s$QfTs$uqds%E/]rCus*s)\3Cs&f0)s0D[5s1&*@s1JBGs1eS at ojRf,s'bk8rF>k<s(24Bs(D at F
+s(VLGqeH(Fs(q^Ps).^Pqf)@Ns)S'ZolU.To60qRq0;XZrHS?grHnEijaR)TM15F&s8Doqq>KLS
+l21MWs*X]jqg.^Vs*4Qfs)n3\rH%pXqf2XTq/?4LpMKqJs(D at DrFQ"XJcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF@%q0r'%qZ,/1rrMp'd/inCm/d"_m/m4rr=Ai<rrW'"r<N'&r<`K2r<2iu
+o`k'orrr'$oa1F$k6q.qmgK""lO!LtjU1qmr<eN$]eQ9!s*fP!]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcF@%q5*h]qZ,fTs/#Uis/>sss/Z1$s/uA[s%NGfs%iYls#pBGs$-NLs$H`R
+s$crWs%*/]s%EAds%iYks&&eos&8qsqc3Sqs&\k"rFGk:rFGq>rFZ(Bq#LG0qeQ4Js)%XNs)7pk
+rJ(?-s+p]3s)S-\rH.uGq$d-0rsnpQq0`-irI=crrIOp!rIb-$rIk-'qhG!'s+pW1rJL-'pPep-
+oo/L#onr^+o8;RbNL.=5ad;=ZpQbW?s8.BI]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcF@%q0r'%qZ,/1s"sO$d5:f:rG2FNs)7oss#L*?s#^6Cs#pBGrBL<Iq#LF`
+s%!)[s%<)[rClm)q,m[&rNZC1s0r$=s1A<Es1\NKnR2<(s'kk8rFQ"ArFl4CrFu.Ds(hXNs)%XN
+qeu at NrGhdVolL.TnTFeRm<AMPs*+Kgqg/3gqgJ-ds*acnpO2jdq0ercrI+YCs8;Qgqu#4Gqtg8<
+qg/'`s*4Kfom$L\s*"EbqfDdXqf2XTqeu at LpMKkFs(D at DqdoeVJcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF@%q0r'%qZ,/1rrMp'd/inCm/d"_m/m4rr=Ai<rrW'"r<N'&r<`K2r<2iu
+o`k'orrr'$oa1F$k6q.qmgK""lO!LtjU1qmr<eN$]eQ9!s*fP!]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcF@%q5*h]qZ,fTs/#Uis/>sss/Z1$s/uA[s%NGfs%iYls#pBGs$-NLs$H`R
+s$crWs%*/]s%EAds%iYks&&eos&8qsqc3Sqs&\k"rFGk:rFGq>rFZ(Bq#LG0qeQ4Js)%XNs)7pk
+rJ(?-s+p]3s)S-\rH.uGq$d-0rsnpQq0`-irI=crrIOp!rIb-$rIk-'qhG!'s+pW1rJL-'pPep-
+oo/L#onr^+o8;RbNL.=5ad;=ZpQbW?s8.BI]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcF@%q0r'%qZ,/1s"sO$d5:f:rG2FNs)7oss#L*?s#^6Cs#pBGrBL<Iq#LF`
+s%!)[s%<)[rClm)q,m[&rNZC1s0r$=s1A<Es1\NKnR2<(s'kk8rFQ"ArFl4CrFu.Ds(hXNs)%XN
+qeu at NrGhdVolL.TnTFeRm<AMPs*+Kgqg/3gqgJ-ds*acnpO2jdq0ercrI+YCs8;Qgqu#4Gqtg8<
+qg/'`s*4Kfom$L\s*"EbqfDdXqf2XTqeu at LpMKkFs(D at DqdoeVJcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF:#qgS'!r;bG5q$YXPo`Xjeq#LEqk5tMjr=Ao>r;up"qZlj$r<`?(o`b!m
+q$6p'r<Mp"oa0dgo*b'qr<`?,oa1R&h[52W^G2E!s*fP!]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcF:#qk`hYr;c/Zs/#Uis/>sss/Q+#s/uC+s%NGfs%iYks#pBGs$-NLs$H`R
+s$crWs%*/]s%EAds%`Sis%r_ns&8kqq,R(orF>k:rF>k<s(2!+s(M at FrG)4Fs(qRMrGVXgs+^Q/
+rJ:Jos)\-\q[<3.q[N at JqgAElrI4]ps+'orrIY'"s+C9'qh=p%rJ1E/q2+QtpP\d)o8EF%s,$-#
+iJEDX^G4'$l^%.-qiq&Cs8%<H]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcF:#qgS'!r;bG5q'siMpM0_Ds#0m9rAjm=s#^6Cq#L at Zs$H`Qs$crWs%!)\
+rCZlYolBq3s&]6*rNQ=.s0hs:s186Bs1SHLq-a#*s'Ye6s'kq:s(). at s(;:Ds(MFDs(MFHq.fqF
+s(qXNpMTqJrG_RPrGqpZs)S-\olU"Ps*"3^o61.Xs*4KfrHe?gomQjfqgJKnqgJ9hrI+WlqgJ'b
+rI)M2nU:H8rVQQks8DimjnnZGs7u]is7cJ<pNcX\s*+Edq02j`s*+Kas)J!Xqf2XTqeuFNq/,qD
+s(hXLqdo_:s'u(XJcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF:#qgS'!r;bG5q$YXPo`Xjeq#LEqk5tMjr=Ao>r;up"qZlj$r<`?(o`b!m
+q$6p'r<Mp"oa0dgo*b'qr<`?,oa1R&h[52W^G2E!s*fP!]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcF:#qk`hYr;c/Zs/#Uis/>sss/Q+#s/uC+s%NGfs%iYks#pBGs$-NLs$H`R
+s$crWs%*/]s%EAds%`Sis%r_ns&8kqq,R(orF>k:rF>k<s(2!+s(M at FrG)4Fs(qRMrGVXgs+^Q/
+rJ:Jos)\-\q[<3.q[N at JqgAElrI4]ps+'orrIY'"s+C9'qh=p%rJ1E/q2+QtpP\d)o8EF%s,$-#
+iJEDX^G4'$l^%.-qiq&Cs8%<H]Dqm2U]5i~>
+JcFm4rr at WMJcC<$JcF:#qgS'!r;bG5q'siMpM0_Ds#0m9rAjm=s#^6Cq#L at Zs$H`Qs$crWs%!)\
+rCZlYolBq3s&]6*rNQ=.s0hs:s186Bs1SHLq-a#*s'Ye6s'kq:s(). at s(;:Ds(MFDs(MFHq.fqF
+s(qXNpMTqJrG_RPrGqpZs)S-\olU"Ps*"3^o61.Xs*4KfrHe?gomQjfqgJKnqgJ9hrI+WlqgJ'b
+rI)M2nU:H8rVQQks8DimjnnZGs7u]is7cJ<pNcX\s*+Edq02j`s*+Kas)J!Xqf2XTqeuFNq/,qD
+s(hXLqdo_:s'u(XJcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF:#qgRorr;bS9rrN!)dfK+Eq#U?mpAsFYq%!?6qZ?]uqZlj$r<`K,nHJLg
+r<N?*q$6Eqoa1L&oa0pkrsA]4r<_Kir<iK0mg=ac^G2>tJcE:\rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF:#qk`\Ur;c;^rMBIis/>sss/Q+"s/uC+s#C$Rs%iYks#pBGs$-NLs$H`Q
+s$crWs%*/]s%EAcs%`Sis%r_ns&8eorDikuoa1Y,s'kq:qZ-Y-s(;:DrFl.DqeH.Hs(qXNs).^P
+rIt9+rJ1E/s)S'ZrH.oEq$d32rsnjOrI"WnqgSKnrIF]ps*t'#s+C3%qh>!'s+gK-pPJ?rl\k_!
+l\YRtiJE8T^G43(l^%(+qipuAs,qs5\c;[0U]5i~>
+JcFm4rr at WMJcC<$JcF:#qgRorr;bS9s"sU&dkpf6s(hWms#9s;s#KrVs#pBGrBL6Gs$?ZPs$ZlU
+s%!)[rCQfWolC"3qcEg$s02O/s0Vg7s1&*?s1A<Is2+S=rEfM2s'Y_4s'l"<s(). at rFZ(Bs(2.B
+pM0_DrG;@Jq/6.Lqf)FPqf;@NqfMdZs*"Edqf_^Vs*"3_rH\Ehs*O9`s*OWjqgJ?js*aQfrI+?f
+rI)q>l[A_Zs82ckrVQEgrVPXOs7uWgrV-?cs7Q25qfqLPs)\3YrG_XRrG_^RrGMLLqeZ.Fs(_RJ
+s(D at CrFG_6JcE:\rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF:#qgRorr;bS9rrN!)dfK+Eq#U?mpAsFYq%!?6qZ?]uqZlj$r<`K,nHJLg
+r<N?*q$6Eqoa1L&oa0pkrsA]4r<_Kir<iK0mg=ac^G2>tJcE:\rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF:#qk`\Ur;c;^rMBIis/>sss/Q+"s/uC+s#C$Rs%iYks#pBGs$-NLs$H`Q
+s$crWs%*/]s%EAcs%`Sis%r_ns&8eorDikuoa1Y,s'kq:qZ-Y-s(;:DrFl.DqeH.Hs(qXNs).^P
+rIt9+rJ1E/s)S'ZrH.oEq$d32rsnjOrI"WnqgSKnrIF]ps*t'#s+C3%qh>!'s+gK-pPJ?rl\k_!
+l\YRtiJE8T^G43(l^%(+qipuAs,qs5\c;[0U]5i~>
+JcFm4rr at WMJcC<$JcF:#qgRorr;bS9s"sU&dkpf6s(hWms#9s;s#KrVs#pBGrBL6Gs$?ZPs$ZlU
+s%!)[rCQfWolC"3qcEg$s02O/s0Vg7s1&*?s1A<Is2+S=rEfM2s'Y_4s'l"<s(). at rFZ(Bs(2.B
+pM0_DrG;@Jq/6.Lqf)FPqf;@NqfMdZs*"Edqf_^Vs*"3_rH\Ehs*O9`s*OWjqgJ?js*aQfrI+?f
+rI)q>l[A_Zs82ckrVQEgrVPXOs7uWgrV-?cs7Q25qfqLPs)\3YrG_XRrG_^RrGMLLqeZ.Fs(_RJ
+s(D at CrFG_6JcE:\rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF:#qgRcnr;bY;q[:pTo`Y9qq#Kpck5tGhr=A]*rr`'%q$?p*r<2Woo*54"
+rrhounHdSMgBdfao*P@&jV\"$T,><tSJZqX\c;[0U]5i~>
+JcFm4rr at WMJcC<$JcF:#qk`PQr;cMdq5++grM]aqs/Z1%s02O/s%WMhs%r_Ys$$HIs$?ZOs$QfT
+s$m#Zs%35`s%NGfs%iYls&/kqqc*Mooa1Y,q#LA(s(2(>rFc.Ds(V at Fs(hXNs)%^PqeuFes+^K-
+s+p\qrH%pZq$['.r=/c:q0W'frI+QlrI=]prIOuus+13%qh+d!rIt-'q1np)nVR(!pP]!-a,/oE
+s+R)3^G4E.l'Ce'rKR&?s-!DEJcE:\rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF:#qgRcnr;bY;q^U,QokOLaq#LFTs#U0As#g<Es$$<Es$6TNs$QfTs$lrX
+pIY$urDWSms/l=)s02O0s0_m9s1/0As2"`Ns'PM,rEoS4rF,_8s'u(>rFPq>s().Bs(M(?s(hFH
+qec.HrGVRPqf2 at NrH%dVs)n9`qfV^Vs)n3_qfr'bm<eYVq0hd\rI+KjqgIXVrI+EhmsXYPp\Ojc
+s8;imkPG/Qs7lWgrV$-]s7H25olp(Ps)n?_s)@jRqf)FNs).dPrG;4Ds(_RJs(D at Ds(24 at qd]G2
+JcE:\rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF:#qgRcnr;bY;q[:pTo`Y9qq#Kpck5tGhr=A]*rr`'%q$?p*r<2Woo*54"
+rrhounHdSMgBdfao*P@&jV\"$T,><tSJZqX\c;[0U]5i~>
+JcFm4rr at WMJcC<$JcF:#qk`PQr;cMdq5++grM]aqs/Z1%s02O/s%WMhs%r_Ys$$HIs$?ZOs$QfT
+s$m#Zs%35`s%NGfs%iYls&/kqqc*Mooa1Y,q#LA(s(2(>rFc.Ds(V at Fs(hXNs)%^PqeuFes+^K-
+s+p\qrH%pZq$['.r=/c:q0W'frI+QlrI=]prIOuus+13%qh+d!rIt-'q1np)nVR(!pP]!-a,/oE
+s+R)3^G4E.l'Ce'rKR&?s-!DEJcE:\rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF:#qgRcnr;bY;q^U,QokOLaq#LFTs#U0As#g<Es$$<Es$6TNs$QfTs$lrX
+pIY$urDWSms/l=)s02O0s0_m9s1/0As2"`Ns'PM,rEoS4rF,_8s'u(>rFPq>s().Bs(M(?s(hFH
+qec.HrGVRPqf2 at NrH%dVs)n9`qfV^Vs)n3_qfr'bm<eYVq0hd\rI+KjqgIXVrI+EhmsXYPp\Ojc
+s8;imkPG/Qs7lWgrV$-]s7H25olp(Ps)n?_s)@jRqf)FNs).dPrG;4Ds(_RJs(D at Ds(24 at qd]G2
+JcE:\rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF:#qgRWjr;b_=r<q-VqZQ]pjT4`MrseW2pB(?sq$6^$r<`9&o`apkrrh]o
+nHedoq$?^$oa(F"km7"goa0dupB@</^G28rJcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF:#qk`DMr;cSfqka=irMT[os/Z1%s0)I.s0M`#s%iYWs$$HIs$?ZOs$QfT
+s$m#Zs%35`s%NGfs%iYls&/eorD`_qq[*&uqdTS8qdfS8rFZ(Bs(VFHs(hXNrGDFLs)7dgrJ(9+
+s)S!XrH.oEq$d32rsnpQqgA9hrI4]pq1/KorIOitqh+d!qh>!'qhOd!pPJp-oniF!kDAY`kEkps
+UR/_MiKr_nn!3^5rKI8ErKI2Cs,hm4\,ZI.U]5i~>
+JcFm4rr at WMJcC<$JcF:#qgRWjr;b_=r at 6>SqeGp,s#0g7s#Bs;rB($ArB:0ErBL<Js$H`Rs$clV
+q+1*ts&&_ms&8kqrN6+&rNH7-s0r$BrP/A=q-F#,rEoS4s'bq:rF>k<rFQ"@s().BrFtk<rG24F
+qec4JrGVRPpMp.PrH%pZq/uLTrH&!\s)n3^qfi'brH\3cpNldbnU1.ZqgA?jrI4Khmsb4`rI"-`
+j*^n'qt^-cqtojYrV?EerV-?cqt:!]rU^'[pNQFVpN?FVs)S'VrGMFLrGMRNs(qRJqeH(Ds(MFF
+s(;:ArF>e8q-ejS\,ZI.U]5i~>
+JcFm4rr at WMJcC<$JcF:#qgRWjr;b_=r<q-VqZQ]pjT4`MrseW2pB(?sq$6^$r<`9&o`apkrrh]o
+nHedoq$?^$oa(F"km7"goa0dupB@</^G28rJcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF:#qk`DMr;cSfqka=irMT[os/Z1%s0)I.s0M`#s%iYWs$$HIs$?ZOs$QfT
+s$m#Zs%35`s%NGfs%iYls&/eorD`_qq[*&uqdTS8qdfS8rFZ(Bs(VFHs(hXNrGDFLs)7dgrJ(9+
+s)S!XrH.oEq$d32rsnpQqgA9hrI4]pq1/KorIOitqh+d!qh>!'qhOd!pPJp-oniF!kDAY`kEkps
+UR/_MiKr_nn!3^5rKI8ErKI2Cs,hm4\,ZI.U]5i~>
+JcFm4rr at WMJcC<$JcF:#qgRWjr;b_=r at 6>SqeGp,s#0g7s#Bs;rB($ArB:0ErBL<Js$H`Rs$clV
+q+1*ts&&_ms&8kqrN6+&rNH7-s0r$BrP/A=q-F#,rEoS4s'bq:rF>k<rFQ"@s().BrFtk<rG24F
+qec4JrGVRPpMp.PrH%pZq/uLTrH&!\s)n3^qfi'brH\3cpNldbnU1.ZqgA?jrI4Khmsb4`rI"-`
+j*^n'qt^-cqtojYrV?EerV-?cqt:!]rU^'[pNQFVpN?FVs)S'VrGMFLrGMRNs(qRJqeH(Ds(MFF
+s(;:ArF>e8q-ejS\,ZI.U]5i~>
+JcFm4rr at WMJcC<$JcF4!rI3]hr;bkAq[;!VqZ-Kri;rBKr=/Q4o`G-qpBUL"rsAK(nHJXkrri9)
+lNblEm0E at kmg&k!rs7^'nHGa+_(hDrJcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF4!rMAJKr;cSfs/#[ks/5mqs/Q+$s0)I-s0DZ!s%iYks$$HIs$?ZOs$QfT
+s$m#Ys%35_s%NGes%iYls&/eorD`_qqZ-L"s'be6rF>_8qdoe>s(D at Fs(VLJs(hXNs)%XNrGV^h
+rIt3)s+gPnqfD^Xq$[!,r=/dQq0W'fqgJ?jqg\Wrs*juupOW9pqh+d!rIt-'onV.TmtpXljd5Lk
+V3f"QkEk:rn!3d7q31K7s,m>CJcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF4!rI3]hr;bkAq^U2SqZ-M.s#'g7q`"O7s#L*?rB($ArB:0Es$-NKs$?ZP
+s$crWpIFmss%iYks&&_ms&8qsrN#t"rN6+&s0)I,s0D[2s&oA*s',M.rE]G0s'Pe6rF,_8rF>k<
+rFQ"=s(;(@qeH(DqeGe>rGDFLrGVFLrGhdVqfDdZs)n9^olL.Tq/uXZrHJ3bs*=Wks*FEbqg/-d
+s*FWknU(4^s*ainpO2pfomQR^s*`XLrHnS?qtU3eqtg?iqtg3cqtU-arV$-]s7H9]s76'WrHJ-^
+ol^:VrH&!ZrGhjUs).^Nqel at LrG;LLrG).Bqe6"Bs(2.=s'kk6q-\dR\,ZI.U]5i~>
+JcFm4rr at WMJcC<$JcF4!rI3]hr;bkAq[;!VqZ-Kri;rBKr=/Q4o`G-qpBUL"rsAK(nHJXkrri9)
+lNblEm0E at kmg&k!rs7^'nHGa+_(hDrJcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF4!rMAJKr;cSfs/#[ks/5mqs/Q+$s0)I-s0DZ!s%iYks$$HIs$?ZOs$QfT
+s$m#Ys%35_s%NGes%iYls&/eorD`_qqZ-L"s'be6rF>_8qdoe>s(D at Fs(VLJs(hXNs)%XNrGV^h
+rIt3)s+gPnqfD^Xq$[!,r=/dQq0W'fqgJ?jqg\Wrs*juupOW9pqh+d!rIt-'onV.TmtpXljd5Lk
+V3f"QkEk:rn!3d7q31K7s,m>CJcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF4!rI3]hr;bkAq^U2SqZ-M.s#'g7q`"O7s#L*?rB($ArB:0Es$-NKs$?ZP
+s$crWpIFmss%iYks&&_ms&8qsrN#t"rN6+&s0)I,s0D[2s&oA*s',M.rE]G0s'Pe6rF,_8rF>k<
+rFQ"=s(;(@qeH(DqeGe>rGDFLrGVFLrGhdVqfDdZs)n9^olL.Tq/uXZrHJ3bs*=Wks*FEbqg/-d
+s*FWknU(4^s*ainpO2pfomQR^s*`XLrHnS?qtU3eqtg?iqtg3cqtU-arV$-]s7H9]s76'WrHJ-^
+ol^:VrH&!ZrGhjUs).^Nqel at LrG;LLrG).Bqe6"Bs(2.=s'kk6q-\dR\,ZI.U]5i~>
+JcFm4rr at WMJcC<$JcF4!rI3QdqZ,eCq[;?`q#L-lhZ<0Iq[NE4o)eRiq$?Qpo*,!qrri'#jTjlQ
+bm41WknrReWu/Z-Ri)/[JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF4!rMA>GqZ-MhrMBOks/>sts/l=)s0;U0s0M`$s%r_ns$-NKs$H`Qs$crW
+s%!)\s%<;bs%WMhs%r_ms&8qsq#L-qrF,S4rF>_8rFPq>s(MFHrG)@Jqec.HrIk3)rJ(?-s)RjT
+s)duCq$d94rHe9dqgA9hqgSKns*a]npOW9prIb!#q1\^#q1n^#qhP')nV@!tq2,'+s+gK-jd5.a
+X-^XWn!E(#n!3^5qigi=o9'&-JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF4!rI3QdqZ,eCq^UP]q#L/(s"sa5q_nI5s#C$=rAsm=rB1*Cs$$HIs$?ZO
+s$ZlUpI=grrD3Gis&&_ms&8fprN#mus0)I-s0M`.s'#A*s'5S0s'GY2s'Y_4s'l"<s(). at s'u(?
+rFu.BrFc(@rFtk<qeZ4Jq/6.LrG_XRrGqpZrH.jVqf;XVqfM^XrHA-`rG_d^s*3jTs*F'Zs*FWh
+s*O?cnU14\o6fSFs7lEas7uEcrV?Kgs7cEaqt9p[rU^'[qsjXSs6ou2ol^.RqfDdXs)J'XrGV^R
+okjYDrG2FJpM'Y at qe,q at s(24?qdKG2q-X0:JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF4!rI3QdqZ,eCq[;?`q#L-lhZ<0Iq[NE4o)eRiq$?Qpo*,!qrri'#jTjlQ
+bm41WknrReWu/Z-Ri)/[JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF4!rMA>GqZ-MhrMBOks/>sts/l=)s0;U0s0M`$s%r_ns$-NKs$H`Qs$crW
+s%!)\s%<;bs%WMhs%r_ms&8qsq#L-qrF,S4rF>_8rFPq>s(MFHrG)@Jqec.HrIk3)rJ(?-s)RjT
+s)duCq$d94rHe9dqgA9hqgSKns*a]npOW9prIb!#q1\^#q1n^#qhP')nV@!tq2,'+s+gK-jd5.a
+X-^XWn!E(#n!3^5qigi=o9'&-JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF4!rI3QdqZ,eCq^UP]q#L/(s"sa5q_nI5s#C$=rAsm=rB1*Cs$$HIs$?ZO
+s$ZlUpI=grrD3Gis&&_ms&8fprN#mus0)I-s0M`.s'#A*s'5S0s'GY2s'Y_4s'l"<s(). at s'u(?
+rFu.BrFc(@rFtk<qeZ4Jq/6.LrG_XRrGqpZrH.jVqf;XVqfM^XrHA-`rG_d^s*3jTs*F'Zs*FWh
+s*O?cnU14\o6fSFs7lEas7uEcrV?Kgs7cEaqt9p[rU^'[qsjXSs6ou2ol^.RqfDdXs)J'XrGV^R
+okjYDrG2FJpM'Y at qe,q at s(24?qdKG2q-X0:JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF-ts*iQ`r;c.Iq$ZKhq#L9mo`X(OnH/Rsq[W,trs&9(pB^9lnHJppm09<j
+pC?X/i<?>#__IVts"T*)[K$7,U]5i~>
+JcFm4rr at WMJcC<$JcF-ts/">Cr;celrMBOls/Q+#s0)I,s0;U1s%iYks&/kqs$?ZOs$QfTs$m#Y
+s%35_s%EAcs%`@is&Aqsoa1S*qdTG4rFGq>rFZ(Bs(MFHrG)@JrG;4Fs+C?)s+UE+s+gVppN-:T
+pC$^(qg.p^rI"KjrI4coqg\ElpOW?rqh+]tq1\X!qhP-)mt^dpqhOj#qhO:"iJ"D#__LbLl^$_!
+qipuAq3(Q9rK-i;s"T*)[K$7,U]5i~>
+JcFm4rr at WMJcC<$JcF-ts*iQ`r;c.Iq't\eq#L:KokOL`q_e=1s#9s;q`4[;rB($As#pBHs$6TM
+s$QHJolC"+s%iYkrDESms&8rrs/GssrN#t%s02O/s0M`.s'#A*s'5M.s'G_4s'YS0s'Yk6s'ke6
+q.0M:nS%r:rG2"@s).^PrG_^Ts)RjTrGqjVrGq^TrH.pZqec at Os).LSs*=Kds*+Kfs*=-\q0E!b
+s*O3^om?R^s*Ocnom?(PrHnKhs7cEas7cQgq>(!as7c?^rUg-]rUTjUrUBjUs6fjQqfVdXpN-:R
+rGhjVs)7pTrGD:FqeQ4Hqe>k>rFc.Bs(24 at s'l":rF#M0s'GY0s1Ep_[K$7,U]5i~>
+JcFm4rr at WMJcC<$JcF-ts*iQ`r;c.Iq$ZKhq#L9mo`X(OnH/Rsq[W,trs&9(pB^9lnHJppm09<j
+pC?X/i<?>#__IVts"T*)[K$7,U]5i~>
+JcFm4rr at WMJcC<$JcF-ts/">Cr;celrMBOls/Q+#s0)I,s0;U1s%iYks&/kqs$?ZOs$QfTs$m#Y
+s%35_s%EAcs%`@is&Aqsoa1S*qdTG4rFGq>rFZ(Bs(MFHrG)@JrG;4Fs+C?)s+UE+s+gVppN-:T
+pC$^(qg.p^rI"KjrI4coqg\ElpOW?rqh+]tq1\X!qhP-)mt^dpqhOj#qhO:"iJ"D#__LbLl^$_!
+qipuAq3(Q9rK-i;s"T*)[K$7,U]5i~>
+JcFm4rr at WMJcC<$JcF-ts*iQ`r;c.Iq't\eq#L:KokOL`q_e=1s#9s;q`4[;rB($As#pBHs$6TM
+s$QHJolC"+s%iYkrDESms&8rrs/GssrN#t%s02O/s0M`.s'#A*s'5M.s'G_4s'YS0s'Yk6s'ke6
+q.0M:nS%r:rG2"@s).^PrG_^Ts)RjTrGqjVrGq^TrH.pZqec at Os).LSs*=Kds*+Kfs*=-\q0E!b
+s*O3^om?R^s*Ocnom?(PrHnKhs7cEas7cQgq>(!as7c?^rUg-]rUTjUrUBjUs6fjQqfVdXpN-:R
+rGhjVs)7pTrGD:FqeQ4Hqe>k>rFc.Bs(24 at s'l":rF#M0s'GY0s1Ep_[K$7,U]5i~>
+JcFm4rr at WMJcC<$JcF-ts*iE\r;c4KrsSi-r<r9!q#L'go`WqKo)e^sr=8?!rs&-$q[!'$nHARi
+rr`3'm0<Loq$,:QqZd!(r<Dp"mgf(/f`eVt_(hDrs"T*)[K$7,U]5i~>
+JcFm4rr at WMJcC<$JcF-ts/"2?r;cels/5mss/c7's02O.s0Ma5s%r_Zs&8qts$H`Rs$crWs%*/]
+q#LFjs%r_ms&8qss&J^uqdKA2rF>e:rFQ"@s(D at FrFu4FqeQ.Hqec:as+LE+s+^Q/s)RdRs)e8J
+oaCX*rH\'^qg89hqgJKkrI4Kjq1/Epq1AEpqh4d!rJ(3'rJ(9+m=tFlrJ:K/qj-Q7hhCr\Z'W9]
+rKlc7kEYq/q31]=q2t'+s"T*)[K$7,U]5i~>
+JcFm4rr at WMJcC<$JcF-ts*iE\r;c4Ks!n%*r at 7Isq#L(EokOF^q)/11rAX[7rAjg;s#^6Cs$$HI
+s$6TNogAb!pN$:.rD*Ags%r_mrDNZms/5gos/H$us/uC*s0;U1rE9/(rEK;,rE]G0s'PM.s'Pe3
+s'P_4qdKG4s'u(>ok458s(M(?rFu:Hs)%^PrGVXRrGhdWqf;FNrGqXRqeQ(DqebYCm<SYTrHJ9f
+o6^"Rqg&3fqg74Hs7Z3[qtL-crV-?crUg'[rUTjUrUBjUrU0XOrTsRMs)djRrGqdTs)A!Vs).dP
+s(q at DrG):FrFkq<rFZ(@s'u(;q-X#*s'>Y0s',N6JcE.XrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF-ts*iE\r;c4KrsSi-r<r9!q#L'go`WqKo)e^sr=8?!rs&-$q[!'$nHARi
+rr`3'm0<Loq$,:QqZd!(r<Dp"mgf(/f`eVt_(hDrs"T*)[K$7,U]5i~>
+JcFm4rr at WMJcC<$JcF-ts/"2?r;cels/5mss/c7's02O.s0Ma5s%r_Zs&8qts$H`Rs$crWs%*/]
+q#LFjs%r_ms&8qss&J^uqdKA2rF>e:rFQ"@s(D at FrFu4FqeQ.Hqec:as+LE+s+^Q/s)RdRs)e8J
+oaCX*rH\'^qg89hqgJKkrI4Kjq1/Epq1AEpqh4d!rJ(3'rJ(9+m=tFlrJ:K/qj-Q7hhCr\Z'W9]
+rKlc7kEYq/q31]=q2t'+s"T*)[K$7,U]5i~>
+JcFm4rr at WMJcC<$JcF-ts*iE\r;c4Ks!n%*r at 7Isq#L(EokOF^q)/11rAX[7rAjg;s#^6Cs$$HI
+s$6TNogAb!pN$:.rD*Ags%r_mrDNZms/5gos/H$us/uC*s0;U1rE9/(rEK;,rE]G0s'PM.s'Pe3
+s'P_4qdKG4s'u(>ok458s(M(?rFu:Hs)%^PrGVXRrGhdWqf;FNrGqXRqeQ(DqebYCm<SYTrHJ9f
+o6^"Rqg&3fqg74Hs7Z3[qtL-crV-?crUg'[rUTjUrUBjUrU0XOrTsRMs)djRrGqdTs)A!Vs).dP
+s(q at DrG):FrFkq<rFZ(@s'u(;q-X#*s'>Y0s',N6JcE.XrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF-trI3-Xr;c:MrsSi-r<rQ)qZ-!ao`WkIo`FjsrsnK!r<E!$q[!'$lNI4k
+rrW'$q$-j&i<K;eo`k3si<JHTrts,eZP^S7Ri))YJcE.XrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF-trM at o;r;cels/c7's02O/s0Ma5s0hr*s$-N`s&T.fs$cebs%<;as%NGf
+s%iSis&&eps&J^uqdKA2rF>k<rFPq>s(D at FrFu4FqeQ(FrGDRerIk3)rJ(2ipN- at VrsJE,q[E at H
+q0E!dpNujds*FWlomZjhrIFcrpO`9pqh4d!rIk'%iJ.#knX&-eo7XH:__M%TpQjd'q3:c?qi^c;
+q2k'+r at rm'[K$7,U]5i~>
+JcFm4rr at WMJcC<$JcF-trI3-Xr;c:Ms!n%*r at 7b&qZ-"?okO@\q)/11q`"I5rAjm=s#^6Ds$$HI
+s$?<ErGhXRrD!;erD3Giqbd<hrMT[ps/l=)s02O/s0M`-s&oA*qcj)*s'>Y2oj@`(s'P_4q-j52
+s((_5s(24Co4e5<s(_RNq/#e at s(qXNs).dRqf)LRrGqpQs(hLHq.]Y at q02RVs**jTq02jaom6"N
+s*4Kfq0M"Fs7H9]rUU!\rUp-_qt:![q=4LSrU9^QrU'RMs6KXKs69?#qf;LPrG_^Rs)%^Nq.okB
+qe?"BpLjG:rFQ";s'YS-qd'5,s',N4s0dLY[K$7,U]5i~>
+JcFm4rr at WMJcC<$JcF-trI3-Xr;c:MrsSi-r<rQ)qZ-!ao`WkIo`FjsrsnK!r<E!$q[!'$lNI4k
+rrW'$q$-j&i<K;eo`k3si<JHTrts,eZP^S7Ri))YJcE.XrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF-trM at o;r;cels/c7's02O/s0Ma5s0hr*s$-N`s&T.fs$cebs%<;as%NGf
+s%iSis&&eps&J^uqdKA2rF>k<rFPq>s(D at FrFu4FqeQ(FrGDRerIk3)rJ(2ipN- at VrsJE,q[E at H
+q0E!dpNujds*FWlomZjhrIFcrpO`9pqh4d!rIk'%iJ.#knX&-eo7XH:__M%TpQjd'q3:c?qi^c;
+q2k'+r at rm'[K$7,U]5i~>
+JcFm4rr at WMJcC<$JcF-trI3-Xr;c:Ms!n%*r at 7b&qZ-"?okO@\q)/11q`"I5rAjm=s#^6Ds$$HI
+s$?<ErGhXRrD!;erD3Giqbd<hrMT[ps/l=)s02O/s0M`-s&oA*qcj)*s'>Y2oj@`(s'P_4q-j52
+s((_5s(24Co4e5<s(_RNq/#e at s(qXNs).dRqf)LRrGqpQs(hLHq.]Y at q02RVs**jTq02jaom6"N
+s*4Kfq0M"Fs7H9]rUU!\rUp-_qt:![q=4LSrU9^QrU'RMs6KXKs69?#qf;LPrG_^Rs)%^Nq.okB
+qe?"BpLjG:rFQ";s'YS-qd'5,s',N4s0dLY[K$7,U]5i~>
+JcFm4rr at WMJcC<$JcF'rs*i3Vr;cFQrsSi-q#KRYpB8qGpB(!smfN at jo`tL&o`OXcrrVWmZNfG"
+r<(FNrrfeJ_(hJtr at rm'ZiC%*U]5i~>
+JcFm4rr at WMJcC<$JcF'rs/!u9r;ckos/5n!s0D[2s0_m8s&/k^q#LFbs%*/]s%<;as%WMgs%iSi
+s&&_mpBgk-q-j52s'u"<rFQ"@s(D:DrFu4FqeQ(Fs)%dSqh4p%s+^8gqfDdZr<i-(rs\LDrH\Eh
+pNupcrI"KjpO<'jrIFcrrIFitrIXp!qh4p#rIk'%o7m-rrJ(-5pQkK=m=jGNn!F!=c'Q7$rKm>G
+l]q(+qigo?q2tQ9ooJp/s,I&9s+pV.JcE(VrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF'rs*i3Vr;cFQs!n%*q#KS7pM0:Vq_e=1rAXa9rAjm=s#g<Es$$HJog/Or
+q/ZL/rD!;es%iGerM9Cgs/5mts/uC*rNZ<'s&o5&rEK;/oj7Z&s'G_4rF#A.s((Y2s(Cq:s(D at H
+o5";>s(hRLs)%^Pq/?:PnS.f4qeQ.OrH at jVs*!dRq0):Rq0;d^q0:qFpNZ`/qsj^UrUKpZs7H3]
+s7H9[s7$!UrU0XOrTsRMrTa4Cs60K(qf;FNrG_^RrGDFIqeGq at rFl(@pLaA8s'bq6s'>Y2oj.T&
+rEK6/JcE(VrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF'rs*i3Vr;cFQrsSi-q#KRYpB8qGpB(!smfN at jo`tL&o`OXcrrVWmZNfG"
+r<(FNrrfeJ_(hJtr at rm'ZiC%*U]5i~>
+JcFm4rr at WMJcC<$JcF'rs/!u9r;ckos/5n!s0D[2s0_m8s&/k^q#LFbs%*/]s%<;as%WMgs%iSi
+s&&_mpBgk-q-j52s'u"<rFQ"@s(D:DrFu4FqeQ(Fs)%dSqh4p%s+^8gqfDdZr<i-(rs\LDrH\Eh
+pNupcrI"KjpO<'jrIFcrrIFitrIXp!qh4p#rIk'%o7m-rrJ(-5pQkK=m=jGNn!F!=c'Q7$rKm>G
+l]q(+qigo?q2tQ9ooJp/s,I&9s+pV.JcE(VrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF'rs*i3Vr;cFQs!n%*q#KS7pM0:Vq_e=1rAXa9rAjm=s#g<Es$$HJog/Or
+q/ZL/rD!;es%iGerM9Cgs/5mts/uC*rNZ<'s&o5&rEK;/oj7Z&s'G_4rF#A.s((Y2s(Cq:s(D at H
+o5";>s(hRLs)%^Pq/?:PnS.f4qeQ.OrH at jVs*!dRq0):Rq0;d^q0:qFpNZ`/qsj^UrUKpZs7H3]
+s7H9[s7$!UrU0XOrTsRMrTa4Cs60K(qf;FNrG_^RrGDFIqeGq at rFl(@pLaA8s'bq6s'>Y2oj.T&
+rEK6/JcE(VrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF'rs*i'Rr;c^Yq#L?oq[;]jo`W_EpB(!sm/m(fpBU3jo*#'pm01*+ist_a
+f*1mO],8@=Tc!S[JcE(VrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF'rs/!u9rMBGms/H%!s02;!s$?ZPs&f;(s',Los%35_s%NGerD3GirDESm
+oa1Y+pL4)2s'u(>rFPq>s(D:Ds(V at FqeQ(Fs)%dSq1Sd%s+^Pnq/Z at RrH.oDoaCeDom$F\q0N!d
+s*=9bqgJElnULFdomujiqh5!'q1e^!op#E?q3LoErIsQjmt:"\s-N8Ac'Q7$rKmPMop+p/q31]=
+q2tQ9q2b--s,I&;s,-i4q([I#ZiC%*U]5i~>
+JcFm4rr at WMJcC<$JcF'rs*i'Rr;c^Yq#L at Mq^UngokNqPq_e=1rAXa9s#L*@s#g<Es$-0Aqf2LR
+s%E;as%WMgrD3;es.]Ies/5mts/l7's02N)qcNf"rEB5-oj.T$s'>S1rF#S4rF#Y8s(). at pLO;8
+s(:e6s(V at Gq.fkBrG2FLrGDFLs(;:DmqDT2s(M at OqfDdXrH7pXs)mXNqfVp^s*+-\olpF\pNQX^
+q0DXXms"g$rU9XOs7$'Ys76'Ys7$'WrU0RMs6TdOrTa:Eqrn"As5s?%pMp.NqeuLOrG2:Fq.]_>
+q.K_>o4 at Gtqcs/*s0r$:rO%4VZiC%*U]5i~>
+JcFm4rr at WMJcC<$JcF'rs*i'Rr;c^Yq#L?oq[;]jo`W_EpB(!sm/m(fpBU3jo*#'pm01*+ist_a
+f*1mO],8@=Tc!S[JcE(VrrAhoJ,~>
+JcFm4rr at WMJcC<$JcF'rs/!u9rMBGms/H%!s02;!s$?ZPs&f;(s',Los%35_s%NGerD3GirDESm
+oa1Y+pL4)2s'u(>rFPq>s(D:Ds(V at FqeQ(Fs)%dSq1Sd%s+^Pnq/Z at RrH.oDoaCeDom$F\q0N!d
+s*=9bqgJElnULFdomujiqh5!'q1e^!op#E?q3LoErIsQjmt:"\s-N8Ac'Q7$rKmPMop+p/q31]=
+q2tQ9q2b--s,I&;s,-i4q([I#ZiC%*U]5i~>
+JcFm4rr at WMJcC<$JcF'rs*i'Rr;c^Yq#L at Mq^UngokNqPq_e=1rAXa9s#L*@s#g<Es$-0Aqf2LR
+s%E;as%WMgrD3;es.]Ies/5mts/l7's02N)qcNf"rEB5-oj.T$s'>S1rF#S4rF#Y8s(). at pLO;8
+s(:e6s(V at Gq.fkBrG2FLrGDFLs(;:DmqDT2s(M at OqfDdXrH7pXs)mXNqfVp^s*+-\olpF\pNQX^
+q0DXXms"g$rU9XOs7$'Ys76'Ys7$'WrU0RMs6TdOrTa:Eqrn"As5s?%pMp.NqeuLOrG2:Fq.]_>
+q.K_>o4 at Gtqcs/*s0r$:rO%4VZiC%*U]5i~>
+JcFm4rr at WMJcC<$JcF!ps*i!PqZ-FUqZ6R%m/ck_d/j%Ers\W2m/m"dpBU3jo`Y9rqZQ9io`k9s
+f*:=Hm/u5Lmf^BB_(hW#q_?Fss*fP!j8],ZU]5i~>
+JcFm4rr at WMJcC<$JcF!ps/",=q5++hqZ-Z"s0Ma7s184rs$QfSs'#G,s'5Rqs%EAds%`SirD<Ag
+oa1M'qdKM6s'u(>rFQ"@rFc.DrFu4Fq.okDrGV^hpP&Qcqf;LRs)e&DoaC_BpNZX^q0N'fs*=-^
+rI+-`msk4cqh"d!o7[.-q3:iAs-32Aqh+d!dt at CJrIaX+c^2I&rKmJKq3CK7qigi=qiU]9q2b?3
+q2P?3rJU]4s+gJ+ci=%*JcFd1rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF!ps*i!PqZ-FUq_\1"m54KNkqr>rs#0g7rAjm>s#g<Fofr=nqf;R,s%NAc
+rD*;erLs7cs/#aqs/c7&s/u=(rE&ess&o5)q-<r&s'5M0ojIf/s'u(>pLF56s(24Bqe,_:s(V at F
+okFG at s(hRLrGD at ApLjM>qe,q at rGMXSrGhXRs)IdSs)d:DiHP6DrHJ'^nTXYLs6fdOqs=@Ms6opV
+s763[qsF at Ks6K^Mqs"(CrTF(?rT3ipqf)FNs)%dOs(_:Bqe5e<qe#_:q.0M4o3M<"qcj*/rO'uO
+s*fP!j8],ZU]5i~>
+JcFm4rr at WMJcC<$JcF!ps*i!PqZ-FUqZ6R%m/ck_d/j%Ers\W2m/m"dpBU3jo`Y9rqZQ9io`k9s
+f*:=Hm/u5Lmf^BB_(hW#q_?Fss*fP!j8],ZU]5i~>
+JcFm4rr at WMJcC<$JcF!ps/",=q5++hqZ-Z"s0Ma7s184rs$QfSs'#G,s'5Rqs%EAds%`SirD<Ag
+oa1M'qdKM6s'u(>rFQ"@rFc.DrFu4Fq.okDrGV^hpP&Qcqf;LRs)e&DoaC_BpNZX^q0N'fs*=-^
+rI+-`msk4cqh"d!o7[.-q3:iAs-32Aqh+d!dt at CJrIaX+c^2I&rKmJKq3CK7qigi=qiU]9q2b?3
+q2P?3rJU]4s+gJ+ci=%*JcFd1rrAhoJ,~>
+JcFm4rr at WMJcC<$JcF!ps*i!PqZ-FUq_\1"m54KNkqr>rs#0g7rAjm>s#g<Fofr=nqf;R,s%NAc
+rD*;erLs7cs/#aqs/c7&s/u=(rE&ess&o5)q-<r&s'5M0ojIf/s'u(>pLF56s(24Bqe,_:s(V at F
+okFG at s(hRLrGD at ApLjM>qe,q at rGMXSrGhXRs)IdSs)d:DiHP6DrHJ'^nTXYLs6fdOqs=@Ms6opV
+s763[qsF at Ks6K^Mqs"(CrTF(?rT3ipqf)FNs)%dOs(_:Bqe5e<qe#_:q.0M4o3M<"qcj*/rO'uO
+s*fP!j8],ZU]5i~>
+VZ6Yr_uK`:JcC<$JcC<$bQ#OFrrD^UqZ6L#o)\LeblR\Cr=&K2m/lk`qZlQlpB:KtnH at SMo*5'q
+qZc-ljTFTJkleg>_(hc'r at uLqrI0=tj8],ZU]5i~>
+VZ6Yr_uK`:JcC<$JcC<$bQ#tcqka=is/5mrrrE)#s/uC+s0D[5s1A:us$ZlVs',M.s'G_5s%WMg
+s%iSirDE4orEoG0rF,_8s'u(>s(2. at s(D:DrFu4FpM9_DrG_^gq1\ceqf;FPoa:L&q02^\qg&!`
+s*43`qgA-dpO<-lo7$^hqgnQnrIOitqi^Q7q3:o1pO`9pf7NgNs+L?'qh"X0s-<PKc^2I&rKmPM
+rK[,ApQPE9qiU]9qiCQ5pPo'/s,6o7rJCQ1r at uLqs5<q7JcFd1rrAhoJ,~>
+VZ6Yr_uK`:JcC<$JcC<$bQ#OFrrD^Uq_\*uo/-,Tk;<&nrAO[7rAjm>rB9m=qf2LRqb$f[s%N5_
+s.97_s.KCes/>sts/Z1$s/l=(qc<Sqs&f/'q-3l$s'5S1oj@`,s'bq:o4.`1q.BM8s(M. at q.TeC
+rG2"8o4Il;rGDRQqf)RTq/H4OrH%pZpN?(Ls)n?bs*+3\rH7dVqfVp^olp:Vm</HqrTjFIs69RK
+s6K^Ps6fpVs7--Vs6T^Mqs".ErTF(?pZ;A7q/H4Ls).jPs(_RJpLs;6qe#Y8qdf_:s'l"8qcs)*
+q-<f$s0r$:bQ%NiJcFd1rrAhoJ,~>
+VZ6Yr_uK`:JcC<$JcC<$bQ#OFrrD^UqZ6L#o)\LeblR\Cr=&K2m/lk`qZlQlpB:KtnH at SMo*5'q
+qZc-ljTFTJkleg>_(hc'r at uLqrI0=tj8],ZU]5i~>
+VZ6Yr_uK`:JcC<$JcC<$bQ#tcqka=is/5mrrrE)#s/uC+s0D[5s1A:us$ZlVs',M.s'G_5s%WMg
+s%iSirDE4orEoG0rF,_8s'u(>s(2. at s(D:DrFu4FpM9_DrG_^gq1\ceqf;FPoa:L&q02^\qg&!`
+s*43`qgA-dpO<-lo7$^hqgnQnrIOitqi^Q7q3:o1pO`9pf7NgNs+L?'qh"X0s-<PKc^2I&rKmPM
+rK[,ApQPE9qiU]9qiCQ5pPo'/s,6o7rJCQ1r at uLqs5<q7JcFd1rrAhoJ,~>
+VZ6Yr_uK`:JcC<$JcC<$bQ#OFrrD^Uq_\*uo/-,Tk;<&nrAO[7rAjm>rB9m=qf2LRqb$f[s%N5_
+s.97_s.KCes/>sts/Z1$s/l=(qc<Sqs&f/'q-3l$s'5S1oj@`,s'bq:o4.`1q.BM8s(M. at q.TeC
+rG2"8o4Il;rGDRQqf)RTq/H4OrH%pZpN?(Ls)n?bs*+3\rH7dVqfVp^olp:Vm</HqrTjFIs69RK
+s6K^Ps6fpVs7--Vs6T^Mqs".ErTF(?pZ;A7q/H4Ls).jPs(_RJpLs;6qe#Y8qdf_:s'l"8qcs)*
+q-<f$s0r$:bQ%NiJcFd1rrAhoJ,~>
+W;lernc/Cbg].9RJcC<$JcC<$bQ#OFrrD^UrsS])q$Ziro`WG=r;uj)q[Mimrrr'"r<M]lrri3$
+rrN-%m0(`=isslImfhMM`>HKIV&94eaoD6eJcFd1rrAhoJ,~>
+W;lernc/Cbg].9RJcC<$JcC<$bQ#tcqka=is/>strrE)#s/uC+s0D[3s0hr-s$crWs%!)ps'Pe6
+s'kq&qb[;ioa1S(rF#S4s'kq:s(). at rFYq?rFu4FpM9eFs)%^RonE9_rGqRPoa:R(pNQLZq0E!d
+s*=Whq0MpbpO)X^s*jKdmsk4rqiUc=rKI2Cs-*JIqgc_<q1AX!s+:9'on*(+qj.,Gs-DQ/qj,,S
+rKmJKs-<JGqigc;qiUc;q2bE5pPo!-qhtE1s,$c3s+gV/aoDCts5!_1JcFd1rrAhoJ,~>
+W;lernc/Cbg].9RJcC<$JcC<$bQ#OFrrD^Us)Iomq'u%ookNYHq)/+/s#9m:s#^6CpHA=lrGqd,
+s%<5_qb6r_rLNt_s/,gps/H$urN#lsq,[Mtqcil"s&f;+o3VH(s'Yk8oj[r2s((Y2s(D(>qe,q:
+s'kS0s'l"=q.9)5s).jTpMg"JrGhjXj)b6Bs)n?bkB6`FrH8-`rHJ-^pN?"Jqs"(Cs6'FGs69RL
+s6TdQs5*e at s69RIs6'@BrT=(?q;hA3s5Nurq/?:Ms(VLHmq;N0q.9G6rF>k:s'Pe3s',)"q-3l&
+s0g&LqgO+rj8],ZU]5i~>
+W;lernc/Cbg].9RJcC<$JcC<$bQ#OFrrD^UrsS])q$Ziro`WG=r;uj)q[Mimrrr'"r<M]lrri3$
+rrN-%m0(`=isslImfhMM`>HKIV&94eaoD6eJcFd1rrAhoJ,~>
+W;lernc/Cbg].9RJcC<$JcC<$bQ#tcqka=is/>strrE)#s/uC+s0D[3s0hr-s$crWs%!)ps'Pe6
+s'kq&qb[;ioa1S(rF#S4s'kq:s(). at rFYq?rFu4FpM9eFs)%^RonE9_rGqRPoa:R(pNQLZq0E!d
+s*=Whq0MpbpO)X^s*jKdmsk4rqiUc=rKI2Cs-*JIqgc_<q1AX!s+:9'on*(+qj.,Gs-DQ/qj,,S
+rKmJKs-<JGqigc;qiUc;q2bE5pPo!-qhtE1s,$c3s+gV/aoDCts5!_1JcFd1rrAhoJ,~>
+W;lernc/Cbg].9RJcC<$JcC<$bQ#OFrrD^Us)Iomq'u%ookNYHq)/+/s#9m:s#^6CpHA=lrGqd,
+s%<5_qb6r_rLNt_s/,gps/H$urN#lsq,[Mtqcil"s&f;+o3VH(s'Yk8oj[r2s((Y2s(D(>qe,q:
+s'kS0s'l"=q.9)5s).jTpMg"JrGhjXj)b6Bs)n?bkB6`FrH8-`rHJ-^pN?"Jqs"(Cs6'FGs69RL
+s6TdQs5*e at s69RIs6'@BrT=(?q;hA3s5Nurq/?:Ms(VLHmq;N0q.9G6rF>k:s'Pe3s',)"q-3l&
+s0g&LqgO+rj8],ZU]5i~>
+WrMqroDeI`h>dKTJcC<$JcC<$aoBCFrrDXSrsSW'q$['#o`WA;r;u^%rse8qq$$Ksrs.]hrrMot
+lNH#IissTAq$#4MaV_iKW>NVSq0mnpj8],ZU]5i~>
+WrMqroDeI`h>dKTJcC<$JcC<$aoBhcqka=is/>ssrrE)#s/uC+s0D[4s0hs;s&B"cs%*/^s%EB#
+s'l"<s()"'oa1M&rF#S4s'l"<rFGq>s(;4Bs(M at FqeGk@s(qROs+U9%s+U>irGqRPnI#4&pNQFX
+q0E!as*=?brHnQlqg8-dnU:@`s*aQhpQ,35rK6i;s*sorqg\!`o7?L`on!'nrIP!#o7?k*qj.2I
+qj-];o9T??_(ktVs-3PGs-!2Aqi^]9qiL]9qi:K3q2G--qhk?/s+p]1`W,tnqqH]%j8],ZU]5i~>
+WrMqroDeI`h>dKTJcC<$JcC<$aoBCFrrDXSs)Iikq'u7uokNMDq)/11s#9s;s#L*?q`F[;pMp4R
+qagZWs%<)[s%NH^s.'+^s.oUjs/5mrrMofqqc3Ysqc`eus&T/(s'>5&s'PA+s'l"<s(). at pLO;8
+s(;"<qd0;0s'bS0rF,_9s((G3s)%dRqeu.Fqf2RTo5jYHs)\3^qfVdXqfDXVq/cRXrH8'^qfVp\
+lZ<*irTF.AqrRk;s5F"8qq_5-s5X.<rSme9pYtr+qeuLNs(V4?ok*r0rFG_6s'l":s'Pe3qcif"
+q-3l&`W,a_JcFd1rrAhoJ,~>
+WrMqroDeI`h>dKTJcC<$JcC<$aoBCFrrDXSrsSW'q$['#o`WA;r;u^%rse8qq$$Ksrs.]hrrMot
+lNH#IissTAq$#4MaV_iKW>NVSq0mnpj8],ZU]5i~>
+WrMqroDeI`h>dKTJcC<$JcC<$aoBhcqka=is/>ssrrE)#s/uC+s0D[4s0hs;s&B"cs%*/^s%EB#
+s'l"<s()"'oa1M&rF#S4s'l"<rFGq>s(;4Bs(M at FqeGk@s(qROs+U9%s+U>irGqRPnI#4&pNQFX
+q0E!as*=?brHnQlqg8-dnU:@`s*aQhpQ,35rK6i;s*sorqg\!`o7?L`on!'nrIP!#o7?k*qj.2I
+qj-];o9T??_(ktVs-3PGs-!2Aqi^]9qiL]9qi:K3q2G--qhk?/s+p]1`W,tnqqH]%j8],ZU]5i~>
+WrMqroDeI`h>dKTJcC<$JcC<$aoBCFrrDXSs)Iikq'u7uokNMDq)/11s#9s;s#L*?q`F[;pMp4R
+qagZWs%<)[s%NH^s.'+^s.oUjs/5mrrMofqqc3Ysqc`eus&T/(s'>5&s'PA+s'l"<s(). at pLO;8
+s(;"<qd0;0s'bS0rF,_9s((G3s)%dRqeu.Fqf2RTo5jYHs)\3^qfVdXqfDXVq/cRXrH8'^qfVp\
+lZ<*irTF.AqrRk;s5F"8qq_5-s5X.<rSme9pYtr+qeuLNs(V4?ok*r0rFG_6s'l":s'Pe3qcif"
+q-3l&`W,a_JcFd1rrAhoJ,~>
+YlF at rp&Fsjq>^BnhuE]VJcC<$JcC<$aoDBiaZf_)nNQs\q#U:!r;lQo`rZ2AoaL-fpBC9qrrVEe
+rrM]ndffOXpC6X&eH>[MqZY at Mb8A&MY8I4ea8bm_JcF^/rrAhoJ,~>
+YlF at rp&Fsjq>^BnhuE]VJcC<$JcC<$aoDC;dA6f=s/5mqs/H"us/Z1%s02O0s0_m9s1/0 at s&T.f
+s%<;bs%WB#s()()oa1S(rF#S4s'kq:s(). at s(;4Bs(M:DrG)(Bs(qXOs)7pVpOrR#qf2FPq/bp1
+olp(Rs*=Wgq0Dj`s*O]jom?:XrHnQlq0hpss,R&=qiLW9rI4QlqgS'bl[]"bnUULfrIF9ds-<JI
+s-Mo7o9K9=_(ktNrK.&ApQGK;q2kE5rJpc7q2G'+q25--rJ:LAs6[l,s53_.s4W&(iW&oXU]5i~>
+YlF at rp&Fsjq>^BnhuE]VJcC<$JcC<$aoDBiaZf_)nNQtmq)%msrA=1^j#$Qhs#0g7s#Bm:q)e7h
+qa^TUrCQlYs%E<Ys.97as.o[krMKUms/>lpqc*Sqo2u#ns'#G-qd')(s'>Y2s'P_4rF,Y4s'bq:
+s'u"<q.'G8s(24Bs(D48qd'5.q-j;2rF,Y4s(^e6s(q^PpMTeDs).jUqf2 at No5XeNs)\!XnT4MH
+s)\3^q/uXXqfDLPq/Q;nrT*q;s5F"9s5*e3qqV/+qqh;/n_jH)s5*e2s(hLEok*f,rFG_6rF5e8
+s'Yk6s'>A's'5;&s'#AMa8bm_JcF^/rrAhoJ,~>
+YlF at rp&Fsjq>^BnhuE]VJcC<$JcC<$aoDBiaZf_)nNQs\q#U:!r;lQo`rZ2AoaL-fpBC9qrrVEe
+rrM]ndffOXpC6X&eH>[MqZY at Mb8A&MY8I4ea8bm_JcF^/rrAhoJ,~>
+YlF at rp&Fsjq>^BnhuE]VJcC<$JcC<$aoDC;dA6f=s/5mqs/H"us/Z1%s02O0s0_m9s1/0 at s&T.f
+s%<;bs%WB#s()()oa1S(rF#S4s'kq:s(). at s(;4Bs(M:DrG)(Bs(qXOs)7pVpOrR#qf2FPq/bp1
+olp(Rs*=Wgq0Dj`s*O]jom?:XrHnQlq0hpss,R&=qiLW9rI4QlqgS'bl[]"bnUULfrIF9ds-<JI
+s-Mo7o9K9=_(ktNrK.&ApQGK;q2kE5rJpc7q2G'+q25--rJ:LAs6[l,s53_.s4W&(iW&oXU]5i~>
+YlF at rp&Fsjq>^BnhuE]VJcC<$JcC<$aoDBiaZf_)nNQtmq)%msrA=1^j#$Qhs#0g7s#Bm:q)e7h
+qa^TUrCQlYs%E<Ys.97as.o[krMKUms/>lpqc*Sqo2u#ns'#G-qd')(s'>Y2s'P_4rF,Y4s'bq:
+s'u"<q.'G8s(24Bs(D48qd'5.q-j;2rF,Y4s(^e6s(q^PpMTeDs).jUqf2 at No5XeNs)\!XnT4MH
+s)\3^q/uXXqfDLPq/Q;nrT*q;s5F"9s5*e3qqV/+qqh;/n_jH)s5*e2s(hLEok*f,rFG_6rF5e8
+s'Yk6s'>A's'5;&s'#AMa8bm_JcF^/rrAhoJ,~>
+YlF at rp&Fsjq>^BnhuE]VJcC<$JcC<$a8c0gb<Gq+nNQmZpAt'tpB8A7oaL'do*,'sr;u9errDEg
+hZWfdkmc;Jm/kB4cPXDO[i#!k`W,U[JcF^/rrAhoJ,~>
+YlF at rp&Fsjq>^BnhuE]VJcC<$JcC<$a8c19e"m#?s/,gos/>qts/Z1&s0;U2s0_m9s1/0As&T/%
+s$m#\s%WGfrF>e:pBgk,q-a52rF5e:s(). at s(;4Bqe6"DrG)(Bs)%LJrIb!#s+U>ipN$(NmgB#:
+pNQ:Ts*"EepNcdbrH\-`s*OQho6^Lbl]1k's,d2-q0r9lqgSQno7$"Ts*jQhomm!jm=>.ds-<2A
+n!3L/s-(2Ps,[2As,m8CqiUi=q2bE5qi1K3pP\j)q2,--rU0^Q`W,tls4dA'JcF^/rrAhoJ,~>
+YlF at rp&Fsjq>^BnhuE]VJcC<$JcC<$a8c0gb<Gq+nNQnkpGD[qpM/YDpGMt/s#9s;q`4I5ol9ju
+rC?lYq+:NWs-WhVs.B=bs.]Ogs.o[ks/,ZkrDW_qo2krls&nkss'>Y2oj@`,s'bq:qd]M4s'u(6
+s'>Y2qd')(s'>M0rEoS<qe,qCl"^66s(qLJokaYFqf)4JpMg(NpN-:RmrA;Hs)\!XrH&!ZmrA;F
+rT!q;q;MA2s5!_1qqD#'rS7G-rS7A-q:u#)s4IA%s3q"prQkFSo4 at Z,q.';2s'bq8s'Pe4s'=qp
+qgQNaomVJliW&oXU]5i~>
+YlF at rp&Fsjq>^BnhuE]VJcC<$JcC<$a8c0gb<Gq+nNQmZpAt'tpB8A7oaL'do*,'sr;u9errDEg
+hZWfdkmc;Jm/kB4cPXDO[i#!k`W,U[JcF^/rrAhoJ,~>
+YlF at rp&Fsjq>^BnhuE]VJcC<$JcC<$a8c19e"m#?s/,gos/>qts/Z1&s0;U2s0_m9s1/0As&T/%
+s$m#\s%WGfrF>e:pBgk,q-a52rF5e:s(). at s(;4Bqe6"DrG)(Bs)%LJrIb!#s+U>ipN$(NmgB#:
+pNQ:Ts*"EepNcdbrH\-`s*OQho6^Lbl]1k's,d2-q0r9lqgSQno7$"Ts*jQhomm!jm=>.ds-<2A
+n!3L/s-(2Ps,[2As,m8CqiUi=q2bE5qi1K3pP\j)q2,--rU0^Q`W,tls4dA'JcF^/rrAhoJ,~>
+YlF at rp&Fsjq>^BnhuE]VJcC<$JcC<$a8c0gb<Gq+nNQnkpGD[qpM/YDpGMt/s#9s;q`4I5ol9ju
+rC?lYq+:NWs-WhVs.B=bs.]Ogs.o[ks/,ZkrDW_qo2krls&nkss'>Y2oj@`,s'bq:qd]M4s'u(6
+s'>Y2qd')(s'>M0rEoS<qe,qCl"^66s(qLJokaYFqf)4JpMg(NpN-:RmrA;Hs)\!XrH&!ZmrA;F
+rT!q;q;MA2s5!_1qqD#'rS7G-rS7A-q:u#)s4IA%s3q"prQkFSo4 at Z,q.';2s'bq8s'Pe4s'=qp
+qgQNaomVJliW&oXU]5i~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$`W++FrrDLOq[<3#r<rK>qZOe;oaL'dnHJjqq#^'grrD3a
+m0*Fur=8!"f)t1;aTU!.]eR2;qgRr4s"W:.nU?&hiW&oXU]5i~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$`W+D_s/#amrMTYqs/Z1&s0;U2s0hs:s1/0As1SG7s'#G-
+s%<;bs%WMgrF>^Zq[*.-qdKM6s'u(>s(2. at s(D4Bs(V at FqeQ4JrGD@Js)7jgqh5!'qf2:LqfD-3
+rH at pZpNZ^]qfr!`qfr!`qg.p^rHeF$l&GY%s*OWjq0i'fnU:Fbs*`pVmsk4`s*t'!o7-Xfs+0d,
+n!*F-s,t&Ms,[2ArK6u=qiCW7qi1Q5q2=p'q2,'+rU0^QmJm2 at g]-ftJcF^/rrAhoJ,~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$`W++FrrDLOqf2Egr at 7\FqeG(HpGMt/s#9m9of;\bq*k<Q
+rC?fWqapgRs-`nXs.B=as.TIerM0Cgs&&Yks&8Mis&B##s'#;(qca#(s'5S0oj7Z*rF#M2q-!`$
+s',A*q-3l(rEoA5qe#kAlY6<4s(hLJo5";@rGVFLol'kLs)J'Zs)\'XrGhdTs)I^Ns)J'ZpN- at T
+qf2 at LpM^)jrS[Y3rSIS1s4d;$rS%#!s4I;$s4..ts3U_jrQb;bqdoS6ojdl.rF,_6rEoS2s'=qp
+qgRr4s,,S2nU?&hiW&oXU]5i~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$`W++FrrDLOq[<3#r<rK>qZOe;oaL'dnHJjqq#^'grrD3a
+m0*Fur=8!"f)t1;aTU!.]eR2;qgRr4s"W:.nU?&hiW&oXU]5i~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$`W+D_s/#amrMTYqs/Z1&s0;U2s0hs:s1/0As1SG7s'#G-
+s%<;bs%WMgrF>^Zq[*.-qdKM6s'u(>s(2. at s(D4Bs(V at FqeQ4JrGD@Js)7jgqh5!'qf2:LqfD-3
+rH at pZpNZ^]qfr!`qfr!`qg.p^rHeF$l&GY%s*OWjq0i'fnU:Fbs*`pVmsk4`s*t'!o7-Xfs+0d,
+n!*F-s,t&Ms,[2ArK6u=qiCW7qi1Q5q2=p'q2,'+rU0^QmJm2 at g]-ftJcF^/rrAhoJ,~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$`W++FrrDLOqf2Egr at 7\FqeG(HpGMt/s#9m9of;\bq*k<Q
+rC?fWqapgRs-`nXs.B=as.TIerM0Cgs&&Yks&8Mis&B##s'#;(qca#(s'5S0oj7Z*rF#M2q-!`$
+s',A*q-3l(rEoA5qe#kAlY6<4s(hLJo5";@rGVFLol'kLs)J'Zs)\'XrGhdTs)I^Ns)J'ZpN- at T
+qf2 at LpM^)jrS[Y3rSIS1s4d;$rS%#!s4I;$s4..ts3U_jrQb;bqdoS6ojdl.rF,_6rEoS2s'=qp
+qgRr4s,,S2nU?&hiW&oXU]5i~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$`W,sebs).-m6:CTpAsq(_ZBE=klU5Uo)eXgrrCpYqZPje
+eH=\1b6692]eRDAq0q`2rA!(,nU?&hhuE]VU]5i~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$`W,t7eYN/?s/,gorrE)#s0)I.s0Vg7s1&*>s1A<Es1eS<
+s'>Y3s%NGerD*AgoeHDQqdKG4s'u(>s(24Bs(D4BrFu4FrG2 at JrGD@JrGVRcs+L?)qf24JrH%?5
+q/cLVqfVp^rHJ9apNZX\q0;d^s*F]lq0N("rJTits*=Qhqg83frI+]pqgJ-bqg8?jjaHNFqgIp^
+rI=]prK[>Gs-<VKn!!@+s,juLs,[&=qiCW7qi1Q5q2>!)pPJj)rU0XOmJm,>g].<,p"KH!JcFX-
+rrAhoJ,~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$`W,sebs).-m6:DepGDPDiAC9drAOO3pGhhcqaCBOrC6ZS
+rCHsRs-WhUs.01]s.B=arLs7cqb[;is&/ksqc*Gms&8r"s&o/$rE9/(s',M.oj.N&s'YS's&]5&
+s&oA*s',/"s((_5rFQ"AlY-62okXM at s(VFHrG2 at JpM]eDrGV^Ts)J'Zqf2RRmr/5Fs)J!Xs)\3\
+s)J'Xl#6T>s5*S-rS7G,s4RA's4@/#rR_)#s4@;$s4%(srR(Yls3L_jqp#)`rQG(Kojdl.qdKG2
+s'Pe4rE]G.mp#U:mJm-Bg]-emJcFX-rrAhoJ,~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$`W,sebs).-m6:CTpAsq(_ZBE=klU5Uo)eXgrrCpYqZPje
+eH=\1b6692]eRDAq0q`2rA!(,nU?&hhuE]VU]5i~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$`W,t7eYN/?s/,gorrE)#s0)I.s0Vg7s1&*>s1A<Es1eS<
+s'>Y3s%NGerD*AgoeHDQqdKG4s'u(>s(24Bs(D4BrFu4FrG2 at JrGD@JrGVRcs+L?)qf24JrH%?5
+q/cLVqfVp^rHJ9apNZX\q0;d^s*F]lq0N("rJTits*=Qhqg83frI+]pqgJ-bqg8?jjaHNFqgIp^
+rI=]prK[>Gs-<VKn!!@+s,juLs,[&=qiCW7qi1Q5q2>!)pPJj)rU0XOmJm,>g].<,p"KH!JcFX-
+rrAhoJ,~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$`W,sebs).-m6:DepGDPDiAC9drAOO3pGhhcqaCBOrC6ZS
+rCHsRs-WhUs.01]s.B=arLs7cqb[;is&/ksqc*Gms&8r"s&o/$rE9/(s',M.oj.N&s'YS's&]5&
+s&oA*s',/"s((_5rFQ"AlY-62okXM at s(VFHrG2 at JpM]eDrGV^Ts)J'Zqf2RRmr/5Fs)J!Xs)\3\
+s)J'Xl#6T>s5*S-rS7G,s4RA's4@/#rR_)#s4@;$s4%(srR(Yls3L_jqp#)`rQG(Kojdl.qdKG2
+s'Pe4rE]G.mp#U:mJm-Bg]-emJcFX-rrAhoJ,~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$_uKaccT_@/lTY1RqZ6Qsq\]2<`rYiAk5t)UmfN at grrD![
+h[S*<f)j%sfbh7Sb8Bu&n,N2<h>ckkJcFX-rrAhoJ,~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$_uKb5f;/;?s/5kss/l=*s0Ma5s0hs;s186Bs1SHIs2"_@
+s'Pe6s%WMgs%iLuq_A%ks)n3Is'l"<s(). at s(;4BrFl.DrG):HrG;FLq/6(Jqh+j#s+U8go5aeN
+mgAT+s)e9`rH/'[pN6:UrHJ-`s*=Wjs*=R%oo&9tqfr'bqg/'brI"WnqgA'`rHeEhkBuZFq0_XZ
+rI4]pqgeR.s-)o7oo]99\M=,Fs,d8Aqi:W7qi(?/qhk''qhY.;rU'(Rq(^_*rRpr!qq6Q#huE]V
+U]5i~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$_uKaccT_@/lTY2cq_\1bqc<SDh_b3fq_n++ol9jrs$ZZO
+rC6`Us%*0Ts-`nVs.'%Ys.97_s.K<dqb[/gq,IAls&]5&rE8qus&oA*s',5&rD`ess&T"uqc<_u
+s&f"uqdTS8qe#_:qdfY;m:ZH4s(V4Bqe?(DrFu:Hq.okFokj_HrGVRQrG_^RokseHo5=GBs).dR
+pMTeDs5!_1rS.5's4RG)s4@"rrRLqts3q"rrR(Yls3L_jrQY;brQG5`q8rGBrF5M0s'Y_2s'GY0
+mp#O8n,NEGqhj50m='WdhuE]VU]5i~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$_uKaccT_@/lTY1RqZ6Qsq\]2<`rYiAk5t)UmfN at grrD![
+h[S*<f)j%sfbh7Sb8Bu&n,N2<h>ckkJcFX-rrAhoJ,~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$_uKb5f;/;?s/5kss/l=*s0Ma5s0hs;s186Bs1SHIs2"_@
+s'Pe6s%WMgs%iLuq_A%ks)n3Is'l"<s(). at s(;4BrFl.DrG):HrG;FLq/6(Jqh+j#s+U8go5aeN
+mgAT+s)e9`rH/'[pN6:UrHJ-`s*=Wjs*=R%oo&9tqfr'bqg/'brI"WnqgA'`rHeEhkBuZFq0_XZ
+rI4]pqgeR.s-)o7oo]99\M=,Fs,d8Aqi:W7qi(?/qhk''qhY.;rU'(Rq(^_*rRpr!qq6Q#huE]V
+U]5i~>
+W;lerp](0lp&FsjiW&oXJcC<$JcC<$_uKaccT_@/lTY2cq_\1bqc<SDh_b3fq_n++ol9jrs$ZZO
+rC6`Us%*0Ts-`nVs.'%Ys.97_s.K<dqb[/gq,IAls&]5&rE8qus&oA*s',5&rD`ess&T"uqc<_u
+s&f"uqdTS8qe#_:qdfY;m:ZH4s(V4Bqe?(DrFu:Hq.okFokj_HrGVRQrG_^RokseHo5=GBs).dR
+pMTeDs5!_1rS.5's4RG)s4@"rrRLqts3q"rrR(Yls3L_jrQY;brQG5`q8rGBrF5M0s'Y_2s'GY0
+mp#O8n,NEGqhj50m='WdhuE]VU]5i~>
+W;lerp](0lp&FsjoDegjnc/UhJcC<$JcC<$_>jOad6 at R1ks"nNrrMisrttD:blRJGrrM?cmfi"Y
+rr`9$kl]`Nr;tp[`ra?cgDIIUd2;P*nc/28iW&.kJcFX-rrAhoJ,~>
+W;lerp](0lp&FsjoDegjnc/UhJcC<$JcC<$_>jP3fqeSCs/,gorrE)%s0;U1s0_m8s1&*?s1JBF
+s1eTNs2=qEs'Yk9s'u(*pBgjSqfM^Xs'l"=s(24BrFc(BrFu.Ds(hRLrGD at Jq/?4arIk-'q/Q"H
+rH%E7mrSAJs)RjUrHA!Zs*"?tqhk?/q24d%o6BkPrHeEhrHeKhom6R^rHdXRmsOkVm<nq^s*j]l
+rKI8Emud:)s,X]Fs,R,?s,Qu9s,?c3pPSd'q2"q9qsEqRo.f5(q:YZ!q:Yf#JcFX-rrAhoJ,~>
+W;lerp](0lp&FsjoDegjnc/UhJcC<$JcC<$_>jOad6 at R1ks"o_s"sIbs&SeBiAC?fq)811ol9pt
+s$HTMrC$NOs$m#Ys-3PMs-`nUs-s%YqjmOXs%iMirDWYos&/kts&])"qcEf"s&oA*s',4qs&8qs
+s&Jqsq,RGqrE0).s'Y_4s'l"<qdoY8rF>k:s((q;pLXA:rFc.DpM'S>rFc(BrFu4FrG2 at KqeZ:J
+s(qXNs).jTqf)LPs). at DrG;.Bs(qXNs).:Bs(q_hqq:l!s4@"qrRCkrs3gkns3Uels3CSfs31Gb
+rQ>#ZrQ+rXqdTA0rF#M0s'GY0s'5(uomZH2s,R,;rJCQ3rJBM5l$e3`huE]VU]5i~>
+W;lerp](0lp&FsjoDegjnc/UhJcC<$JcC<$_>jOad6 at R1ks"nNrrMisrttD:blRJGrrM?cmfi"Y
+rr`9$kl]`Nr;tp[`ra?cgDIIUd2;P*nc/28iW&.kJcFX-rrAhoJ,~>
+W;lerp](0lp&FsjoDegjnc/UhJcC<$JcC<$_>jP3fqeSCs/,gorrE)%s0;U1s0_m8s1&*?s1JBF
+s1eTNs2=qEs'Yk9s'u(*pBgjSqfM^Xs'l"=s(24BrFc(BrFu.Ds(hRLrGD at Jq/?4arIk-'q/Q"H
+rH%E7mrSAJs)RjUrHA!Zs*"?tqhk?/q24d%o6BkPrHeEhrHeKhom6R^rHdXRmsOkVm<nq^s*j]l
+rKI8Emud:)s,X]Fs,R,?s,Qu9s,?c3pPSd'q2"q9qsEqRo.f5(q:YZ!q:Yf#JcFX-rrAhoJ,~>
+W;lerp](0lp&FsjoDegjnc/UhJcC<$JcC<$_>jOad6 at R1ks"o_s"sIbs&SeBiAC?fq)811ol9pt
+s$HTMrC$NOs$m#Ys-3PMs-`nUs-s%YqjmOXs%iMirDWYos&/kts&])"qcEf"s&oA*s',4qs&8qs
+s&Jqsq,RGqrE0).s'Y_4s'l"<qdoY8rF>k:s((q;pLXA:rFc.DpM'S>rFc(BrFu4FrG2 at KqeZ:J
+s(qXNs).jTqf)LPs). at DrG;.Bs(qXNs).:Bs(q_hqq:l!s4@"qrRCkrs3gkns3Uels3CSfs31Gb
+rQ>#ZrQ+rXqdTA0rF#M0s'GY0s'5(uomZH2s,R,;rJCQ3rJBM5l$e3`huE]VU]5i~>
+W;lerp](0lp&Fsjnc/Ofp&G$lJcC<$JcC<$_uKU_dm!d3k<A\LpB:EqnI*eHoaL]um/lYYlN7(d
+rrViqgC=#]jTE*r`rt9:[kZPQomZB0nM0)(l$e3`g].9RU]5i~>
+W;lerp](0lp&Fsjnc/Ofp&G$lJcC<$JcC<$_uK]7s/"JGqka=jrrE)%s0;U1s0_m9s1&*?s1JBG
+s1nZOs2=rVs'bq:s'u(>pBge+qfMdZs*+Kfs*F]Ws(D:DrFu.DrG2FLrGD at JpM^(aq1Sd%pMo_D
+rsA-$lZ<)Gq/lLVm>1Rpqhk?1rHJ9do69SHs*=Ebqg%p\s*<dRmsFeTl[/YZs*aipqg\Qns,m8A
+s,Zc5pQ,?7[k[oBs,6o9rJU]5rJCQ3oniF!qsO at Kn,Mo4j8\f*s4[5#JcFL)rrAhoJ,~>
+W;lerp](0lp&Fsjnc/Ofp&G$lJcC<$JcC<$_uKU_dm!d3k<A]]pM0X`nLEKSpGMn-ol:!urB^6G
+rBpNOs$crXs-!DIs-WbQqjRPSs.&s\s%`Skq,7/is&&ers&T/$q,[Mis%`Sis%rAcs&/kqs&B"u
+pJh/us'G_4pL*r.s'ke7rF>_6s'tS0rFPq>s(D. at qe,k>rFc.Dqe?(FrFtq?rG;:Hs(qRJo5+;>
+rG):Fs(_LJs(qRLokaM at s4IA'qptYpqpbYps3gels3Uels3CSfrQP;bs2t5\rQ+rXrPn`RrF,S2
+qd9;.rE]G.o3:m:n,NEIs,6o6rJ:?-j8\@mJcFL)rrAhoJ,~>
+W;lerp](0lp&Fsjnc/Ofp&G$lJcC<$JcC<$_uKU_dm!d3k<A\LpB:EqnI*eHoaL]um/lYYlN7(d
+rrViqgC=#]jTE*r`rt9:[kZPQomZB0nM0)(l$e3`g].9RU]5i~>
+W;lerp](0lp&Fsjnc/Ofp&G$lJcC<$JcC<$_uK]7s/"JGqka=jrrE)%s0;U1s0_m9s1&*?s1JBG
+s1nZOs2=rVs'bq:s'u(>pBge+qfMdZs*+Kfs*F]Ws(D:DrFu.DrG2FLrGD at JpM^(aq1Sd%pMo_D
+rsA-$lZ<)Gq/lLVm>1Rpqhk?1rHJ9do69SHs*=Ebqg%p\s*<dRmsFeTl[/YZs*aipqg\Qns,m8A
+s,Zc5pQ,?7[k[oBs,6o9rJU]5rJCQ3oniF!qsO at Kn,Mo4j8\f*s4[5#JcFL)rrAhoJ,~>
+W;lerp](0lp&Fsjnc/Ofp&G$lJcC<$JcC<$_uKU_dm!d3k<A]]pM0X`nLEKSpGMn-ol:!urB^6G
+rBpNOs$crXs-!DIs-WbQqjRPSs.&s\s%`Skq,7/is&&ers&T/$q,[Mis%`Sis%rAcs&/kqs&B"u
+pJh/us'G_4pL*r.s'ke7rF>_6s'tS0rFPq>s(D. at qe,k>rFc.Dqe?(FrFtq?rG;:Hs(qRJo5+;>
+rG):Fs(_LJs(qRLokaM at s4IA'qptYpqpbYps3gels3Uels3CSfrQP;bs2t5\rQ+rXrPn`RrF,S2
+qd9;.rE]G.o3:m:n,NEIs,6o6rJ:?-j8\@mJcFL)rrAhoJ,~>
+W;lerp](0lp&FsjmJm+bq>^HpJcC<$JcC<$^&S+]eNX!5jZ`VNq\]25q#Tplf`CaSq#Tjamfi"Y
+rrE!!fa[ZWqZHKmrr]Y1]`d:2ZSCPYomZB0m4mZ$m='Wdec5XLU]5i~>
+W;lerp](0lp&FsjmJm+bq>^HpJcC<$JcC<$^&S,/hk^(Es/5kss/uC,s0Ma5s0r$<s186Cs1eTM
+s24lTs2P)Zs'l"<q_ at sSq-a/Ds*"Ees*=Wjs*Ocns*ai[qeH(FrG;LNq/5kDs+C-#s+U2emrJ:3
+oa:;2q/cRUrH%pll\G:lqhb8pq02 at Pj`gHDq02j`kB[#Ps*=9`pNc(Ns*OcnrI+QlrI+]ns*Od,
+s,Qi7o8`d/ZSDK8s,$c3s+gE+q1o!+s+gXBp[.GLm4mZ$p"BB!qq6Q#ec5XLU]5i~>
+W;lerp](0lp&FsjmJm+bq>^HpJcC<$JcC<$^&S+]eNX!5jZ`W_qrIWhq)%Oih_b3fol:!ts$66C
+rBgNOs$crWs%!*Rs-E\Oq3_,Ks%E;as%`Sjqbd5gs%r_ps&K"lq+Uf_s%`Sio2,B`rDWGqs'>Y2
+qd9/,s'be7rF5Y4s'Yk9nRMT0qdoe>q.KY<qdoe>rFc(Bs(V at GrG)">rFl4Fs(M at Fs(_(>rG)4D
+rFl4Fs(_LJrG;(@qeH.Fs4."rrR:_nqpGGjrQkMhrQYAds3(A`rQ5#ZrQ"rXq8N<NrPSZPrPAG>
+rEfA,s'55$omZB0s,[2>s,?o5s+gW/rJCQ,j8\LqJcF:#rrAhoJ,~>
+W;lerp](0lp&FsjmJm+bq>^HpJcC<$JcC<$^&S+]eNX!5jZ`VNq\]25q#Tplf`CaSq#Tjamfi"Y
+rrE!!fa[ZWqZHKmrr]Y1]`d:2ZSCPYomZB0m4mZ$m='Wdec5XLU]5i~>
+W;lerp](0lp&FsjmJm+bq>^HpJcC<$JcC<$^&S,/hk^(Es/5kss/uC,s0Ma5s0r$<s186Cs1eTM
+s24lTs2P)Zs'l"<q_ at sSq-a/Ds*"Ees*=Wjs*Ocns*ai[qeH(FrG;LNq/5kDs+C-#s+U2emrJ:3
+oa:;2q/cRUrH%pll\G:lqhb8pq02 at Pj`gHDq02j`kB[#Ps*=9`pNc(Ns*OcnrI+QlrI+]ns*Od,
+s,Qi7o8`d/ZSDK8s,$c3s+gE+q1o!+s+gXBp[.GLm4mZ$p"BB!qq6Q#ec5XLU]5i~>
+W;lerp](0lp&FsjmJm+bq>^HpJcC<$JcC<$^&S+]eNX!5jZ`W_qrIWhq)%Oih_b3fol:!ts$66C
+rBgNOs$crWs%!*Rs-E\Oq3_,Ks%E;as%`Sjqbd5gs%r_ps&K"lq+Uf_s%`Sio2,B`rDWGqs'>Y2
+qd9/,s'be7rF5Y4s'Yk9nRMT0qdoe>q.KY<qdoe>rFc(Bs(V at GrG)">rFl4Fs(M at Fs(_(>rG)4D
+rFl4Fs(_LJrG;(@qeH.Fs4."rrR:_nqpGGjrQkMhrQYAds3(A`rQ5#ZrQ"rXq8N<NrPSZPrPAG>
+rEfA,s'55$omZB0s,[2>s,?o5s+gW/rJCQ,j8\LqJcF:#rrAhoJ,~>
+k5YA[mJm+bhuEWTp](0lp&Fsjl2U\^rVultJcC<$JcC<$^&S%[f0937j$*JNpDEK&lO2YPoaLQq
+mfMq]mfNFsrrDp*r=%iuPle>riu"aMobdLRli63(jo=duJcF'rrrAhoJ,~>
+k5YA[mJm+bhuEWTp](0lp&Fsjl2U\^rVultJcC<$JcC<$^&S&-iM?:Gs/5kss/l=*s0D[3s0r$=
+s1A<Es1eTMs24lUs2P)Zs2b4MpG)JOrF,_8s*+Kgs*F]ls*Xipq0r?nrG2 at JrGDFLo5FGXs+UK-
+s)RpTmrJ./q$Qe8qfD^js*FKqmt^ptqhP3-q/uXZqfhLOkB?H at s*"?bkBR#PrHS!\om$@Zs*F9^
+s*F]lrI"Qjs*"EdrHS9dl&GY#s,F!4onN;0li63(jo=f&JcF'rrrAhoJ,~>
+k5YA[mJm+bhuEWTp](0lp&Fsjl2U\^rVultJcC<$JcC<$^&S%[f0937j$*K_pZ1p&lRLjMol:!s
+s$-HIq`k*GrB^HNs$ZlUs$m$Po9K?ArC[)_s%WMgs%iYkrDEScs%35Rs%;lUs%NGes%`/]s&oA*
+q-3f$s',M.rE]A.q-X/0rF5Y4rF#S2s'bM.qd]Y:rFPq>qdoe<s'u"<rFQ"@rFu4Fq.]S:pLjM>
+rFu:Hq.oqDqe?"Bqe,qBs(VLJs(hXNrG2.Bqe?"BqpP;fs3U_js3CMds31Mds2t5\rQ,#ZrPn`R
+rP\`RrPJHJrP8HJs1\HFs1JBDs'5;&q0qZ0s,[2?s,I&;s,-c3s+^Q-s,$c0s*<`+ms]ifci="F
+U]5i~>
+k5YA[mJm+bhuEWTp](0lp&Fsjl2U\^rVultJcC<$JcC<$^&S%[f0937j$*JNpDEK&lO2YPoaLQq
+mfMq]mfNFsrrDp*r=%iuPle>riu"aMobdLRli63(jo=duJcF'rrrAhoJ,~>
+k5YA[mJm+bhuEWTp](0lp&Fsjl2U\^rVultJcC<$JcC<$^&S&-iM?:Gs/5kss/l=*s0D[3s0r$=
+s1A<Es1eTMs24lUs2P)Zs2b4MpG)JOrF,_8s*+Kgs*F]ls*Xipq0r?nrG2 at JrGDFLo5FGXs+UK-
+s)RpTmrJ./q$Qe8qfD^js*FKqmt^ptqhP3-q/uXZqfhLOkB?H at s*"?bkBR#PrHS!\om$@Zs*F9^
+s*F]lrI"Qjs*"EdrHS9dl&GY#s,F!4onN;0li63(jo=f&JcF'rrrAhoJ,~>
+k5YA[mJm+bhuEWTp](0lp&Fsjl2U\^rVultJcC<$JcC<$^&S%[f0937j$*K_pZ1p&lRLjMol:!s
+s$-HIq`k*GrB^HNs$ZlUs$m$Po9K?ArC[)_s%WMgs%iYkrDEScs%35Rs%;lUs%NGes%`/]s&oA*
+q-3f$s',M.rE]A.q-X/0rF5Y4rF#S2s'bM.qd]Y:rFPq>qdoe<s'u"<rFQ"@rFu4Fq.]S:pLjM>
+rFu:Hq.oqDqe?"Bqe,qBs(VLJs(hXNrG2.Bqe?"BqpP;fs3U_js3CMds31Mds2t5\rQ,#ZrPn`R
+rP\`RrPJHJrP8HJs1\HFs1JBDs'5;&q0qZ0s,[2?s,I&;s,-c3s+^Q-s,$c0s*<`+ms]ifci="F
+U]5i~>
+k5Y;Yn,N=dhuEWTp&Fsjq>^<ljo>2XJcC<$JcC<$^]4+YffoE9j$*Klrri-7rsS8rjU:ATpC-]q
+nH/._qZ?9rrrDQtoaR#bXT[f(UG:a-k:u0"nU?&haoDA at U]5i~>
+k5Y;Yn,N=dhuEWTp&Fsjq>^<ljo>2XJcC<$JcC<$^]493rMAPMqka=is/5kss/l=*s0D[3s0hs<
+s1A<Fs1nZOs2=rVs2P)Zs2b6>rsAKUs)\-HrF,_8s'u(>s(;:Ds*XiprI4Qlqge]trIY&enSeAF
+s+U9'q/Q(JrGhdVo*P@&qf;RfpP/]nrJ(?+l\>:XqfMXVrH at XOm</GNrH7FLq02j`lZ`#HpNQFX
+s*=?`qfi!^qfVj\s*+3^m>V"%s,<^-iW&'qkPt)*JcEjlrrAhoJ,~>
+k5Y;Yn,N=dhuEWTp&Fsjq>^<ljo>2XJcC<$JcC<$^]4+YffoE9j$*Kls(_Ajs)IKajXTRQpMoXd
+s$?ZOs$QfSs$csNq31iArKI8GrCR#]rBpNPs$lrWs%*/Ps%2rWs%35_s%EAcs%WAcq,dSus&o/$
+qcWr's'5S0qcs#(s'GS0rEfG.rEfM3mpZ0(rF>k<qd]Y8pLF58rFbk<o4Rr4s(24CrFl.DqeH"B
+rFl(@qe#k at s(MFHs(_RLs(_4 at rFl(@rR(Sjs3LYhqp#/bs3(A`qoSlZs2Y)Xqo/NPs24fPqn`<J
+rP/<FrOr6Ds1A<BpUT8_s,[2?rJgi8qhb?,s+C?.s*"EbkPt($JcEjlrrAhoJ,~>
+k5Y;Yn,N=dhuEWTp&Fsjq>^<ljo>2XJcC<$JcC<$^]4+YffoE9j$*Klrri-7rsS8rjU:ATpC-]q
+nH/._qZ?9rrrDQtoaR#bXT[f(UG:a-k:u0"nU?&haoDA at U]5i~>
+k5Y;Yn,N=dhuEWTp&Fsjq>^<ljo>2XJcC<$JcC<$^]493rMAPMqka=is/5kss/l=*s0D[3s0hs<
+s1A<Fs1nZOs2=rVs2P)Zs2b6>rsAKUs)\-HrF,_8s'u(>s(;:Ds*XiprI4Qlqge]trIY&enSeAF
+s+U9'q/Q(JrGhdVo*P@&qf;RfpP/]nrJ(?+l\>:XqfMXVrH at XOm</GNrH7FLq02j`lZ`#HpNQFX
+s*=?`qfi!^qfVj\s*+3^m>V"%s,<^-iW&'qkPt)*JcEjlrrAhoJ,~>
+k5Y;Yn,N=dhuEWTp&Fsjq>^<ljo>2XJcC<$JcC<$^]4+YffoE9j$*Kls(_Ajs)IKajXTRQpMoXd
+s$?ZOs$QfSs$csNq31iArKI8GrCR#]rBpNPs$lrWs%*/Ps%2rWs%35_s%EAcs%WAcq,dSus&o/$
+qcWr's'5S0qcs#(s'GS0rEfG.rEfM3mpZ0(rF>k<qd]Y8pLF58rFbk<o4Rr4s(24CrFl.DqeH"B
+rFl(@qe#k at s(MFHs(_RLs(_4 at rFl(@rR(Sjs3LYhqp#/bs3(A`qoSlZs2Y)Xqo/NPs24fPqn`<J
+rP/<FrOr6Ds1A<BpUT8_s,[2?rJgi8qhb?,s+C?.s*"EbkPt($JcEjlrrAhoJ,~>
+k5Y/UoDeahhuEWTp&Fsjq>^BnhuE]VJcC<$JcC<$]DqbWgHPW;j$*Klr<3!7q[;clh$a#ZoaLEm
+o)epqnJU^&rrDEpNrnJIqZ4S;lPQZWhuD^kl2U@(JcEXfrrAhoJ,~>
+k5Y/UoDeahhuEWTp&Fsjq>^BnhuE]VJcC<$JcC<$]Dqp1rMAPMrMBOks/5kss/l=)s0;U1s0hs<
+s1A<Fs1nZPrP\`Ts2P)Zs8Ms'q_A%ks)n?MrF5e;s(24Bs(D at FrG2:[qgeWrrIXitq1SWas)Ijh
+rIt,gq/Z4LrGqoEnM0Ebs*=Kqo7m![qfDRTqfV at Km<&;Js)dLJqf_p^q0)^Zq0)FTolg4VrHS'\
+qf_p\qfMj\rH at dVo8EL's,3p4huD^kl2UA.JcEXfrrAhoJ,~>
+k5Y/UoDeahhuEWTp&Fsjq>^BnhuE]VJcC<$JcC<$]DqbWgHPW;j$*KlrG)5jqf2![h(&4Wol:!n
+s#g*?s$$HIs$6TMs$H`Qs$crXs,m&(rI4crrBL<Js$H`Qs$ZlUrC6fWs#^6Nq+:TVs%*)[s%EAl
+o2blms&ekqs'#G,rET#"rET;*rET5*s'P)"rF,_8q-j52s((q:s(;"<rFYq;s(;.>rFGq?s(D at F
+pM'S>qe,k>q.9S<s(D at Fs(V4 at q.KM8s3LYhqp#/brQG5`rQ5#ZrQ"rXqo/NPs24fPqn`6Hs1eTJ
+q7Zg at s1A<Bq75D_s,[,=rJgi8s,-i5s+p]3s+UK)s)n?`s)[H)o6u8j_uK`:U]5i~>
+k5Y/UoDeahhuEWTp&Fsjq>^BnhuE]VJcC<$JcC<$]DqbWgHPW;j$*Klr<3!7q[;clh$a#ZoaLEm
+o)epqnJU^&rrDEpNrnJIqZ4S;lPQZWhuD^kl2U@(JcEXfrrAhoJ,~>
+k5Y/UoDeahhuEWTp&Fsjq>^BnhuE]VJcC<$JcC<$]Dqp1rMAPMrMBOks/5kss/l=)s0;U1s0hs<
+s1A<Fs1nZPrP\`Ts2P)Zs8Ms'q_A%ks)n?MrF5e;s(24Bs(D at FrG2:[qgeWrrIXitq1SWas)Ijh
+rIt,gq/Z4LrGqoEnM0Ebs*=Kqo7m![qfDRTqfV at Km<&;Js)dLJqf_p^q0)^Zq0)FTolg4VrHS'\
+qf_p\qfMj\rH at dVo8EL's,3p4huD^kl2UA.JcEXfrrAhoJ,~>
+k5Y/UoDeahhuEWTp&Fsjq>^BnhuE]VJcC<$JcC<$]DqbWgHPW;j$*KlrG)5jqf2![h(&4Wol:!n
+s#g*?s$$HIs$6TMs$H`Qs$crXs,m&(rI4crrBL<Js$H`Qs$ZlUrC6fWs#^6Nq+:TVs%*)[s%EAl
+o2blms&ekqs'#G,rET#"rET;*rET5*s'P)"rF,_8q-j52s((q:s(;"<rFYq;s(;.>rFGq?s(D at F
+pM'S>qe,k>q.9S<s(D at Fs(V4 at q.KM8s3LYhqp#/brQG5`rQ5#ZrQ"rXqo/NPs24fPqn`6Hs1eTJ
+q7Zg at s1A<Bq75D_s,[,=rJgi8s,-i5s+p]3s+UK)s)n?`s)[H)o6u8j_uK`:U]5i~>
+k5Y)Sp&FsjhuEWToDeC^huE]VJcC<$JcC<$\c;PUh*1i=jZ`Qjr<3-;oaC!bh$`m?jUCSqm0s!p
+pC)r]k61AW_$'3DYqb/9h_FHsomVJl^&S*4U]5i~>
+k5Y)Sp&FsjhuEWToDeC^huE]VJcC<$JcC<$\c;^/rMAPMs/#ams/5kss/c7's0;U2s0r$=s1A<F
+s2"`QrP\`Ts2Os8r<`KYq/uXZs'u(?s(;:Ds(qLHqeZ:_rIOp!rIaKjs+^@9rTj?7rJ'irs+]ts
+m=kRcpP&Weq/Z:Nqf;RTq/lXXnT*r:rGqpZlZE#HrHA!ZqfMXVpNH.Nqf`!`olg4TrH/!ZrH/'^
+m<8AapPJp-Yqb/9h_FHsp"=or^&S*4U]5i~>
+k5Y)Sp&FsjhuEWToDeC^huE]VJcC<$JcC<$\c;PUh*1i=jZ`QjrG)Anol94Qh(&(^s"47's"FC+
+s"XI-s"j[5s#9m:s#^6Ds*Xclqg/9hs*Xips$$HIrBUBKs$H`Qs$ZlUs$m#Lq+(HSrD<Mks&/kq
+nQ#Tis&\eos&oA*q-3`"rE9)&pKRZ&s'>Y2k?n*opLF/4qdo_<s(1k5s'l">s()":s(2.Aq.TY<
+rFYq<qdfS6rF5e8s'l"=s(D4 at ok"*Hs31MdrQ>#Zs2b5\rPn`Rs2=lRs2+TJs1nTJrP&0Bs1J<B
+s18$:huEY9s,Qu9s,6i4qhY8ts*Xigs)S-Zli6X,JcEF`rrAhoJ,~>
+k5Y)Sp&FsjhuEWToDeC^huE]VJcC<$JcC<$\c;PUh*1i=jZ`Qjr<3-;oaC!bh$`m?jUCSqm0s!p
+pC)r]k61AW_$'3DYqb/9h_FHsomVJl^&S*4U]5i~>
+k5Y)Sp&FsjhuEWToDeC^huE]VJcC<$JcC<$\c;^/rMAPMs/#ams/5kss/c7's0;U2s0r$=s1A<F
+s2"`QrP\`Ts2Os8r<`KYq/uXZs'u(?s(;:Ds(qLHqeZ:_rIOp!rIaKjs+^@9rTj?7rJ'irs+]ts
+m=kRcpP&Weq/Z:Nqf;RTq/lXXnT*r:rGqpZlZE#HrHA!ZqfMXVpNH.Nqf`!`olg4TrH/!ZrH/'^
+m<8AapPJp-Yqb/9h_FHsp"=or^&S*4U]5i~>
+k5Y)Sp&FsjhuEWToDeC^huE]VJcC<$JcC<$\c;PUh*1i=jZ`QjrG)Anol94Qh(&(^s"47's"FC+
+s"XI-s"j[5s#9m:s#^6Ds*Xclqg/9hs*Xips$$HIrBUBKs$H`Qs$ZlUs$m#Lq+(HSrD<Mks&/kq
+nQ#Tis&\eos&oA*q-3`"rE9)&pKRZ&s'>Y2k?n*opLF/4qdo_<s(1k5s'l">s()":s(2.Aq.TY<
+rFYq<qdfS6rF5e8s'l"=s(D4 at ok"*Hs31MdrQ>#Zs2b5\rPn`Rs2=lRs2+TJs1nTJrP&0Bs1J<B
+s18$:huEY9s,Qu9s,6i4qhY8ts*Xigs)S-Zli6X,JcEF`rrAhoJ,~>
+k5YA[s8Vfnq>^BnhuEWTnc/Cbg].9RJcC<$JcC<$]DqVSh`h&?jZ`Khr<3-$o*aX\jU:`GjUCSq
+m0s!pLB?WAlN+g)nJJ_ihuDFcmJlp0JcE4ZrrAhoJ,~>
+k5YA[s8Vfnq>^BnhuEWTnc/Cbg].9RJcC<$JcC<$]Dqd-rMAVOs/#ams/5kss/Z1&s0;U2s0r$=
+s1JBHs2+fRs2=lTs2Xs7r<`L6q0)d^s*4Qhs(Cq>q/-(JrIb'%mtLdrq<\(GrIt-'nV.!tmkO3`
+s*4Q`qf).HrG_^TolC"NflHt0l#Z<8qfDLRqfVFNm</ALq/cRVs)\3^l#m#_on`X)[kZe?gG/*q
+pXt,t\,ZI.U]5i~>
+k5YA[s8Vfnq>^BnhuEWTnc/Cbg].9RJcC<$JcC<$]DqVSh`h&?jZ`KhrG)?ho5WkKjXTpfs"+1%
+s"==*rA"%%s#'g8s#L+'pNZX^s*F].s$$BGs$6TMs$H`QrC$ZGqbR5ds%`Mgs%r_ms&/Ads&JSj
+s&f5(qc`l"s&f/$pKIT$s'5S0q-NZ"s'G_4s'bS0q.'A6nRDB(s'tq8s(). at pLjG:s(24 at s(2.>
+q.'A4ojRl0rFPe8rFQ">s3(GbqoSlZs2Y)XrPe`Rs24fPqn`<JqnN*Dqn<$BrO`*@pUT2]rK$i9
+rJgi8s,$W.s+:8ms*4Qds)\3[s)@B*pO7\n\,ZI.U]5i~>
+k5YA[s8Vfnq>^BnhuEWTnc/Cbg].9RJcC<$JcC<$]DqVSh`h&?jZ`Khr<3-$o*aX\jU:`GjUCSq
+m0s!pLB?WAlN+g)nJJ_ihuDFcmJlp0JcE4ZrrAhoJ,~>
+k5YA[s8Vfnq>^BnhuEWTnc/Cbg].9RJcC<$JcC<$]Dqd-rMAVOs/#ams/5kss/Z1&s0;U2s0r$=
+s1JBHs2+fRs2=lTs2Xs7r<`L6q0)d^s*4Qhs(Cq>q/-(JrIb'%mtLdrq<\(GrIt-'nV.!tmkO3`
+s*4Q`qf).HrG_^TolC"NflHt0l#Z<8qfDLRqfVFNm</ALq/cRVs)\3^l#m#_on`X)[kZe?gG/*q
+pXt,t\,ZI.U]5i~>
+k5YA[s8Vfnq>^BnhuEWTnc/Cbg].9RJcC<$JcC<$]DqVSh`h&?jZ`KhrG)?ho5WkKjXTpfs"+1%
+s"==*rA"%%s#'g8s#L+'pNZX^s*F].s$$BGs$6TMs$H`QrC$ZGqbR5ds%`Mgs%r_ms&/Ads&JSj
+s&f5(qc`l"s&f/$pKIT$s'5S0q-NZ"s'G_4s'bS0q.'A6nRDB(s'tq8s(). at pLjG:s(24 at s(2.>
+q.'A4ojRl0rFPe8rFQ">s3(GbqoSlZs2Y)XrPe`Rs24fPqn`<JqnN*Dqn<$BrO`*@pUT2]rK$i9
+rJgi8s,$W.s+:8ms*4Qds)\3[s)@B*pO7\n\,ZI.U]5i~>
+k5YA[rVuTlqu?TpScA]iJcC<$JcC<$\,Z2Oj$*JCk<AQfqZ63phZ<*PpHRaJmhtp0o`G-nN<82E
+irQt!o,,:uh>c(]n,N34huEY(JcF@%rrAhoJ,~>
+k5YA[rVuTlqu?TpScA]iJcC<$JcC<$\,ZF+qk`JOs/#anrrE)"s/uC,s0Vg8s186Ds1nZOs24lT
+s2G#Xp&=u&rFGeLs*4QhqgnQZq/-(JqeuFPs)S-Zo7d4"rJ(49rTjK;qhFWps+^Q-mkOWkol0qK
+ol0kLq/H at Ps)@pVqf)LPrGLY8s)RpTqf)RTo5akNpN#qJq/Z.Ls)d^Nm<&;JolC(Rl#clFq1np)
+s,"QHh>c(]n,N4:huEYlJcF@%rrAhoJ,~>
+k5YA[rVuTlqu?TpScA]iJcC<$JcC<$\,Z2Oj$*JCk<AQfq_[h_h_a^MpHS[/s"47's"F=)o.g8#
+s(MFJs).jUs)\3^s*"Eds*=W,rB:0Es%*/]s%<5_s%WMds%`Sgs%NAcs%`Mgs%r_ms&ASgs&B#!
+nQ5TkqcWr$rE&r"oi_;us',M.q-E`$s'>Y3s'G_4nR;B*s'u(:rEo/)rF#M0s'Yk8s'l"<q.9S:
+nRMN,q-j/.qdKM6pLF/4rF>lKrQ"rXrPefTs24fPqn`<JrP/<FpV$U>rO`$>q75>]rK$c7rJgi7
+s+p]0rIt9#s)e9^s*+Kas)J'Xs)7B+q0q6$rI0=tfDkjNU]5i~>
+k5YA[rVuTlqu?TpScA]iJcC<$JcC<$\,Z2Oj$*JCk<AQfqZ63phZ<*PpHRaJmhtp0o`G-nN<82E
+irQt!o,,:uh>c(]n,N34huEY(JcF@%rrAhoJ,~>
+k5YA[rVuTlqu?TpScA]iJcC<$JcC<$\,ZF+qk`JOs/#anrrE)"s/uC,s0Vg8s186Ds1nZOs24lT
+s2G#Xp&=u&rFGeLs*4QhqgnQZq/-(JqeuFPs)S-Zo7d4"rJ(49rTjK;qhFWps+^Q-mkOWkol0qK
+ol0kLq/H at Ps)@pVqf)LPrGLY8s)RpTqf)RTo5akNpN#qJq/Z.Ls)d^Nm<&;JolC(Rl#clFq1np)
+s,"QHh>c(]n,N4:huEYlJcF@%rrAhoJ,~>
+k5YA[rVuTlqu?TpScA]iJcC<$JcC<$\,Z2Oj$*JCk<AQfq_[h_h_a^MpHS[/s"47's"F=)o.g8#
+s(MFJs).jUs)\3^s*"Eds*=W,rB:0Es%*/]s%<5_s%WMds%`Sgs%NAcs%`Mgs%r_ms&ASgs&B#!
+nQ5TkqcWr$rE&r"oi_;us',M.q-E`$s'>Y3s'G_4nR;B*s'u(:rEo/)rF#M0s'Yk8s'l"<q.9S:
+nRMN,q-j/.qdKM6pLF/4rF>lKrQ"rXrPefTs24fPqn`<JrP/<FpV$U>rO`$>q75>]rK$c7rJgi7
+s+p]0rIt9#s)e9^s*+Kas)J'Xs)7B+q0q6$rI0=tfDkjNU]5i~>
+k5YA[qu?BjrVufrScA]iJcC<$JcC<$[K#uMjZ`\Ek<AWhq`alXmgIYHr<r9_k7%/(qZQj$m/m:f
+P60hKgB#%lpDD",g],_Wnc/K8huEG"JcF@%rrAhoJ,~>
+k5YA[qu?BjrVufrScA]iJcC<$JcC<$[K$4)qk`JOs/#_qs/Q+$s0;U2s0r$?s1\NKs2+fRs2G#X
+s2as6qqq9^s*4Koon!!Wqel at Ns)A!XrH%pXs)I^Ps)\-nqs=:Is6TW;m=k?jpBg_8ol0qLs)%FI
+qf):Jqf)LPqelFNj`(0<qf)@Ls)@RLrG_RPolBeHl#Q`Bs)RLJrGqXPs)RFHolBq`rJ&EKg],_W
+nc/L>huEGfJcF@%rrAhoJ,~>
+k5YA[qu?BjrVufrScA]iJcC<$JcC<$[K#uMjZ`\Ek<AWhq`am6mr?l7r at 7J)s"+1%s"=7'oe?>!
+s(D at Gs(hXPs+LE+s+^K.s$ZfSpI>*Ms$QfUs%<;as%NAcs%`Mgs%r/_moK<grE0)$s&T(urE&Yo
+s&oA*rEK5*q-F#-s'GY0s'5S1o3hT,s'G_2rETA,s'5M0q-a),rEfG.qd9A3qdTM4rF5e:qdTA0
+rF#G.rF#G0s'ke6rF5fHs2G#Vs24lRrPANKs1\HHs1\<BrOi*@qmuO4g]./3q2YE5s,$c1rIt9&
+s*=WdrH&!^s)J'XrGV6+qgRH&pO7\nfDkjNU]5i~>
+k5YA[qu?BjrVufrScA]iJcC<$JcC<$[K#uMjZ`\Ek<AWhq`alXmgIYHr<r9_k7%/(qZQj$m/m:f
+P60hKgB#%lpDD",g],_Wnc/K8huEG"JcF@%rrAhoJ,~>
+k5YA[qu?BjrVufrScA]iJcC<$JcC<$[K$4)qk`JOs/#_qs/Q+$s0;U2s0r$?s1\NKs2+fRs2G#X
+s2as6qqq9^s*4Koon!!Wqel at Ns)A!XrH%pXs)I^Ps)\-nqs=:Is6TW;m=k?jpBg_8ol0qLs)%FI
+qf):Jqf)LPqelFNj`(0<qf)@Ls)@RLrG_RPolBeHl#Q`Bs)RLJrGqXPs)RFHolBq`rJ&EKg],_W
+nc/L>huEGfJcF@%rrAhoJ,~>
+k5YA[qu?BjrVufrScA]iJcC<$JcC<$[K#uMjZ`\Ek<AWhq`am6mr?l7r at 7J)s"+1%s"=7'oe?>!
+s(D at Gs(hXPs+LE+s+^K.s$ZfSpI>*Ms$QfUs%<;as%NAcs%`Mgs%r/_moK<grE0)$s&T(urE&Yo
+s&oA*rEK5*q-F#-s'GY0s'5S1o3hT,s'G_2rETA,s'5M0q-a),rEfG.qd9A3qdTM4rF5e:qdTA0
+rF#G.rF#G0s'ke6rF5fHs2G#Vs24lRrPANKs1\HHs1\<BrOi*@qmuO4g]./3q2YE5s,$c1rIt9&
+s*=WdrH&!^s)J'XrGV6+qgRH&pO7\nfDkjNU]5i~>
+k5YA[p]'gbScA]iJcC<$JcC<$\,ZIls8W%Hs$$C1k<AnGks"chq*+ZVm0hGFq[<90jT4rUr<;Wk
+rrAGgjTO$5]*/!Jd4sDUd4t1krI3Z(o6u8jec5XLU]5i~>
+k5YA[p]'gbScA]iJcC<$JcC<$\,ZK(s8W&ss.oUikG8+Xs/H%"s02O0s0r$>s1\NLs24lTs2P)Z
+p&=pJrSRQbs)7piqh"WprIXoas)7pVs)S!YrH%RNrH%pXqhG-)rJ(8kl#H.umr/5Bqel4JoksSD
+qel at Ls(pk:rG_XPpMU"Lo5OSFq/H.Lol05:qf)RTmrJ5Dq/H at RlZ2`>q/H:cs+SiTg],YUnc/R@
+huE;bJcF:#rrAhoJ,~>
+k5YA[p]'gbScA]iJcC<$JcC<$\,ZIls8W%Hs$$C1k<AnGks"chq*+[4m;^Z5ol:!hrAX[7o/Zh3
+s#^7-s*aots+13%rIk3*s+gVBnO<IEs%)rWs%<;as%NGes%`Sjq,.)gs&&eomoBBjs&f5$s&T(u
+s&B"ss&K)"oiM/qrE9/(rEK;,s'Pe4rE]G.rEK;*s'5;*s'>S.rEK5(rE9/*pL!l*qd')(oj@`,
+qdKM6qdKA0nR)<(s'Pe4s'>Y2s'Pe6s'bq8s'>Y4rEoT=rOi$@s1J*<rOVC,g].)1q2YE5s+p]/
+s+C?'s*jumqfD^Vs)@pTnc/Q:huE:sJcF:#rrAhoJ,~>
+k5YA[p]'gbScA]iJcC<$JcC<$\,ZIls8W%Hs$$C1k<AnGks"chq*+ZVm0hGFq[<90jT4rUr<;Wk
+rrAGgjTO$5]*/!Jd4sDUd4t1krI3Z(o6u8jec5XLU]5i~>
+k5YA[p]'gbScA]iJcC<$JcC<$\,ZK(s8W&ss.oUikG8+Xs/H%"s02O0s0r$>s1\NLs24lTs2P)Z
+p&=pJrSRQbs)7piqh"WprIXoas)7pVs)S!YrH%RNrH%pXqhG-)rJ(8kl#H.umr/5Bqel4JoksSD
+qel at Ls(pk:rG_XPpMU"Lo5OSFq/H.Lol05:qf)RTmrJ5Dq/H at RlZ2`>q/H:cs+SiTg],YUnc/R@
+huE;bJcF:#rrAhoJ,~>
+k5YA[p]'gbScA]iJcC<$JcC<$\,ZIls8W%Hs$$C1k<AnGks"chq*+[4m;^Z5ol:!hrAX[7o/Zh3
+s#^7-s*aots+13%rIk3*s+gVBnO<IEs%)rWs%<;as%NGes%`Sjq,.)gs&&eomoBBjs&f5$s&T(u
+s&B"ss&K)"oiM/qrE9/(rEK;,s'Pe4rE]G.rEK;*s'5;*s'>S.rEK5(rE9/*pL!l*qd')(oj@`,
+qdKM6qdKA0nR)<(s'Pe4s'>Y2s'Pe6s'bq8s'>Y4rEoT=rOi$@s1J*<rOVC,g].)1q2YE5s+p]/
+s+C?'s*jumqfD^Vs)@pTnc/Q:huE:sJcF:#rrAhoJ,~>
+k5YA[p&F[bScA]iJcC<$JcC<$ZiBuQrBC+-lTY=Kks"ijofi0PlO2AHq[<?2jT4fQmfNLhT*"*W
+aT9!Vr>=9Dg&K;OoDei>huE(mJcF:#rrAhoJ,~>
+k5YA[p&F[bScA]iJcC<$JcC<$ZiC"'rM9=el_OO\s/H%"s0)I.s0hs>s1nZPs2=rWs2Y/\p\t!H
+s53k7s(D at MrG_dirIb-%rIap!s+UJos)n?brH8-^q/c:NrH%jVrJ(?+rJ(8kl#H.urGMFLqelFL
+nS\)<qel:JqeZ:JnS\;BnS\)<o5FGBq/?.Lo5F#8q/?:PmrA)@qeuLRlZ)`>o5FS[gG.C]bq\hi
+s4Q<0mD=GSec5XLU]5i~>
+k5YA[p&F[bScA]iJcC<$JcC<$ZiBuQrBC+-lTY=Kks"ijofi1.lZ(T7pMp-hs#0g7q)J11s#U1)
+s*Ocns*juts+(-#s+C?.mmR1As$u`Qq+:TYqb-r_rD!;eq,%)gqb@#arD3AgrDESms&8MhrDrku
+s&o;*s'>S.s',M,q-!`$s'5S1q-<l&rEAqus'5G,s'GY0rET5(qcs)+s'>S1s'Y_4rF#A,o3VH&
+s'5S.q-*MqrEB*,rO:t"s1-h_ooK!1s,I&:s+UK*s+12us*F]gs)\3\s)\-Zq/>m)s*il*m='Wd
+ec5XLU]5i~>
+k5YA[p&F[bScA]iJcC<$JcC<$ZiBuQrBC+-lTY=Kks"ijofi0PlO2AHq[<?2jT4fQmfNLhT*"*W
+aT9!Vr>=9Dg&K;OoDei>huE(mJcF:#rrAhoJ,~>
+k5YA[p&F[bScA]iJcC<$JcC<$ZiC"'rM9=el_OO\s/H%"s0)I.s0hs>s1nZPs2=rWs2Y/\p\t!H
+s53k7s(D at MrG_dirIb-%rIap!s+UJos)n?brH8-^q/c:NrH%jVrJ(?+rJ(8kl#H.urGMFLqelFL
+nS\)<qel:JqeZ:JnS\;BnS\)<o5FGBq/?.Lo5F#8q/?:PmrA)@qeuLRlZ)`>o5FS[gG.C]bq\hi
+s4Q<0mD=GSec5XLU]5i~>
+k5YA[p&F[bScA]iJcC<$JcC<$ZiBuQrBC+-lTY=Kks"ijofi1.lZ(T7pMp-hs#0g7q)J11s#U1)
+s*Ocns*juts+(-#s+C?.mmR1As$u`Qq+:TYqb-r_rD!;eq,%)gqb@#arD3AgrDESms&8MhrDrku
+s&o;*s'>S.s',M,q-!`$s'5S1q-<l&rEAqus'5G,s'GY0rET5(qcs)+s'>S1s'Y_4rF#A,o3VH&
+s'5S.q-*MqrEB*,rO:t"s1-h_ooK!1s,I&:s+UK*s+12us*F]gs)\3\s)\-Zq/>m)s*il*m='Wd
+ec5XLU]5i~>
+k5YA[nc/CbScA]iJcC<$JcC<$Z2acOrBC+-m6:OMks"ijo02mLkmQALpC$'`mf`XknH/^jV#o`]
+_#_(Lj"]6eaYD-Al[FEbe,TFJU]5i~>
+k5YA[nc/CbScA]iJcC<$JcC<$Z2ae%rM9=emA0a^s/H%"s02O2s186Fs24lUs2P)Zs2b5_p\t!H
+s5F";s69Q&s)J!Xs)IpirJ(3)s,$]4s,-btqfM:Jqf;Fcs)R:Bmg8T'rGDRMmqqr<pMKeDqePe?
+qeYe>pMBG=pMKeFqeu(Dmr.r<s)7:Dq/?.Js)7:Dqetk>s)$dNg&K/Kci<mZs2"BFs1s9de,TFJ
+U]5i~>
+k5YA[nc/CbScA]iJcC<$JcC<$Z2acOrBC+-m6:OMks"ijo02n*l#GT;pMp3irAFO3q`"=1rAjn%
+s*4Qis*Ocns*aoss+(-*mmI+ at s$lNKrCH`UrCZlYq+UZ[rD*;erD<Gis&8_mpJq/nrE9#$rE9#"
+rE9)#s'#5&rEB/&qcN_us'5G,s'4qqrETA.s'G_4rF#G.qd/r$s'5M,q-*Goqc`m*pUBb(g&M)7
+ooJj-s+p].s+(,us*aoms)n?_s)S-Zs)S-Zq/=UZl[FEbe,TFJU]5i~>
+k5YA[nc/CbScA]iJcC<$JcC<$Z2acOrBC+-m6:OMks"ijo02mLkmQALpC$'`mf`XknH/^jV#o`]
+_#_(Lj"]6eaYD-Al[FEbe,TFJU]5i~>
+k5YA[nc/CbScA]iJcC<$JcC<$Z2ae%rM9=emA0a^s/H%"s02O2s186Fs24lUs2P)Zs2b5_p\t!H
+s5F";s69Q&s)J!Xs)IpirJ(3)s,$]4s,-btqfM:Jqf;Fcs)R:Bmg8T'rGDRMmqqr<pMKeDqePe?
+qeYe>pMBG=pMKeFqeu(Dmr.r<s)7:Dq/?.Js)7:Dqetk>s)$dNg&K/Kci<mZs2"BFs1s9de,TFJ
+U]5i~>
+k5YA[nc/CbScA]iJcC<$JcC<$Z2acOrBC+-m6:OMks"ijo02n*l#GT;pMp3irAFO3q`"=1rAjn%
+s*4Qis*Ocns*aoss+(-*mmI+ at s$lNKrCH`UrCZlYq+UZ[rD*;erD<Gis&8_mpJq/nrE9#$rE9#"
+rE9)#s'#5&rEB/&qcN_us'5G,s'4qqrETA.s'G_4rF#G.qd/r$s'5M,q-*Goqc`m*pUBb(g&M)7
+ooJj-s+p].s+(,us*aoms)n?_s)S-Zs)S-Zq/=UZl[FEbe,TFJU]5i~>
+k5YA[n,N7bScA]iJcC<$JcC<$YQ+QMq`an+nNQsQlTY&lmlpCFk6p;NpC$-bmf`:arrW3$rrW3#
+WrhAc\H05Dr<`'Mec3TCe,SNYJcF4!rrAhoJ,~>
+k5YA[n,N7bScA]iJcC<$JcC<$YQ+S#qkX+co;)D_rrE)!s/c7+s0r$As2+fTs2P)ZrQ+a4qr%M5
+s5O(=s69RKs6K]*s)\3^qfDLfs,$W3s,6i5s,$buqfMFNq/Z4aq/QFRnT""(rGDFLq/-.HrG;FL
+j_Xg0s(_RLo5+;>nSIr8o545<qec:LpMKkFs)%:DpMKkHqeuLRpM]kFq/-.Lm;Mr at mqr#>s(hXO
+r<`'Mec3TCe,TBas2+ZLpVQsHs1SHEJcF4!rrAhoJ,~>
+k5YA[n,N7bScA]iJcC<$JcC<$YQ+QMq`an+nNQsQlTY&lmlpD$kAfN=pMp'es#'a5q`"=1s)e9`
+s*+Kfs*=Wks*Xj$s+gJ<rBpHKs$QfQrC-BKqa^NSqap`YpIkBWqb@)cqbR5gs&&Ado2klmpK.;n
+rDrkuq-*`"s&f(us&f/$q-3AmrE9/&s',M.s'>Y2rEoG.oj.AurEK/&nQGZks0h[2qmb2Vs,m>B
+s,R&;qiCK3s+C?%s*juqs*F]js)n9\s)J'Xol&=ZjaMd\e,TFJU]5i~>
+k5YA[n,N7bScA]iJcC<$JcC<$YQ+QMq`an+nNQsQlTY&lmlpCFk6p;NpC$-bmf`:arrW3$rrW3#
+WrhAc\H05Dr<`'Mec3TCe,SNYJcF4!rrAhoJ,~>
+k5YA[n,N7bScA]iJcC<$JcC<$YQ+S#qkX+co;)D_rrE)!s/c7+s0r$As2+fTs2P)ZrQ+a4qr%M5
+s5O(=s69RKs6K]*s)\3^qfDLfs,$W3s,6i5s,$buqfMFNq/Z4aq/QFRnT""(rGDFLq/-.HrG;FL
+j_Xg0s(_RLo5+;>nSIr8o545<qec:LpMKkFs)%:DpMKkHqeuLRpM]kFq/-.Lm;Mr at mqr#>s(hXO
+r<`'Mec3TCe,TBas2+ZLpVQsHs1SHEJcF4!rrAhoJ,~>
+k5YA[n,N7bScA]iJcC<$JcC<$YQ+QMq`an+nNQsQlTY&lmlpD$kAfN=pMp'es#'a5q`"=1s)e9`
+s*+Kfs*=Wks*Xj$s+gJ<rBpHKs$QfQrC-BKqa^NSqap`YpIkBWqb@)cqbR5gs&&Ado2klmpK.;n
+rDrkuq-*`"s&f(us&f/$q-3AmrE9/&s',M.s'>Y2rEoG.oj.AurEK/&nQGZks0h[2qmb2Vs,m>B
+s,R&;qiCK3s+C?%s*juqs*F]js)n9\s)J'Xol&=ZjaMd\e,TFJU]5i~>
+JcFm4rr at WMJcC<$JcE"Ts$$J_rI4W-q0r!#rrDFMomZ3jo`=.^klLMdk5k#SmfEFgYla"iY5u6<
+q[*9Wec3H?ec4TWJcF-trrAhoJ,~>
+JcFm4rr at WMJcC<$JcE"Ts.o\prVl\iq5*h]s/,ers/Z1$s0Vg:s1eTQrPnfVp&=pKs5O(=s5a4A
+s6BXMs6TdQs6fW(s*"9ss,?i7s,?o7rJLQ1rH7jVqfD^Vq1ep'q/QFRo5XeLmg9#1pMKeDs(V(@
+nSA/@rG2.Bo5";>m;)N4s(q^Pq/#_>mqhl:rG;(BpMBeFrGMLNqelFMqec.Fs(hXOpMTqJrGMRN
+okaG>qeH.Hs(qQ=s"W((_(jL?s2=lRqni6Gq830DrOILZdJs4HU]5i~>
+JcFm4rr at WMJcC<$JcE"Ts$$J_rI4W-q0r!#rrDFMomZ3joebcMkqr-SpGDh+rAOI1s)J!Ys)n?c
+s*4QhrIju4s$HZMrBgNMrC$6GrC6ZSrCHfWqb$ZWrCm)_rD*;es&&Siqc3GnoiD)os&A_mrDrku
+qcWr$s&](uqcEf"qcWr's'"qqs&f5$s&T/$s&f;+s',G*s',M/rET5(s'5;&s'"YipKIC%ec5Z5
+s,m8 at s,R&;s,?i9qi:]3s*t&ss*Xins*=Wgs)n?_rGhjVol&C\iI6 at XdJs4HU]5i~>
+JcFm4rr at WMJcC<$JcE"Ts$$J_rI4W-q0r!#rrDFMomZ3jo`=.^klLMdk5k#SmfEFgYla"iY5u6<
+q[*9Wec3H?ec4TWJcF-trrAhoJ,~>
+JcFm4rr at WMJcC<$JcE"Ts.o\prVl\iq5*h]s/,ers/Z1$s0Vg:s1eTQrPnfVp&=pKs5O(=s5a4A
+s6BXMs6TdQs6fW(s*"9ss,?i7s,?o7rJLQ1rH7jVqfD^Vq1ep'q/QFRo5XeLmg9#1pMKeDs(V(@
+nSA/@rG2.Bo5";>m;)N4s(q^Pq/#_>mqhl:rG;(BpMBeFrGMLNqelFMqec.Fs(hXOpMTqJrGMRN
+okaG>qeH.Hs(qQ=s"W((_(jL?s2=lRqni6Gq830DrOILZdJs4HU]5i~>
+JcFm4rr at WMJcC<$JcE"Ts$$J_rI4W-q0r!#rrDFMomZ3joebcMkqr-SpGDh+rAOI1s)J!Ys)n?c
+s*4QhrIju4s$HZMrBgNMrC$6GrC6ZSrCHfWqb$ZWrCm)_rD*;es&&Siqc3GnoiD)os&A_mrDrku
+qcWr$s&](uqcEf"qcWr's'"qqs&f5$s&T/$s&f;+s',G*s',M/rET5(s'5;&s'"YipKIC%ec5Z5
+s,m8 at s,R&;s,?i9qi:]3s*t&ss*Xins*=Wgs)n?_rGhjVol&C\iI6 at XdJs4HU]5i~>
+JcFm4rr at WMJcC<$JcDqRs$$=/q*+\)pHJTWm6:8nk<AJ<i=#/VoaBp`nHA:]rrDuu])q'sVZFO8
+r>>8`huCMIrs at BYgO=_Rci="FU]5i~>
+JcFm4rr at WMJcC<$JcDqRs.oPkq5!naq5"%grrE)!s/uC1s1A<Is2=lTs2P)Zp\t-Ns5X.?s5j:C
+s6BXMs6T^Os6fpVo6:4ns,Qo7rJ^]5onrQfq/lFfrJ(>mol9YDnHo53rGD at HrG2FImq_Z4rG2:F
+q.]kDs(h at DrFtY6q.]kEs(qLHokOA>rG;4DrG):HnSJ/>s(_RLrG;FLpMTqFqeZ(Ds(_RLs(q^P
+pMTqHrG;:Fq.fkBq.TeVs*j\shuCMIrs at BYqo&BLqniBLs1nZLrPJTKs180>s1!X[ci="FU]5i~>
+JcFm4rr at WMJcC<$JcDqRs$$=/q*+\)pHJTWm6:8nk<AJoiGnBEol9X]q_e=1rAXars)S-\s)e9`
+s*"E\s+C88og/UEs$6HKpI+mIrC6TQrCHfWrCZr[qb6r_rD*Ags%r_mq, at 5koiD)ms&AkopJh#i
+s&T)"s&f;&s&T(uq,[Gqs&f;(rE'#%rE/kus&f;&s&Skos&A_nqca#&s'#5&rEAGgpKINEp\s(M
+s,m>CqiC]9s,I&;s,6c8rJpo,s*aops*O]is*+Kcs)S-ZrG_LLs'==XgO=_Rci="FU]5i~>
+JcFm4rr at WMJcC<$JcDqRs$$=/q*+\)pHJTWm6:8nk<AJ<i=#/VoaBp`nHA:]rrDuu])q'sVZFO8
+r>>8`huCMIrs at BYgO=_Rci="FU]5i~>
+JcFm4rr at WMJcC<$JcDqRs.oPkq5!naq5"%grrE)!s/uC1s1A<Is2=lTs2P)Zp\t-Ns5X.?s5j:C
+s6BXMs6T^Os6fpVo6:4ns,Qo7rJ^]5onrQfq/lFfrJ(>mol9YDnHo53rGD at HrG2FImq_Z4rG2:F
+q.]kDs(h at DrFtY6q.]kEs(qLHokOA>rG;4DrG):HnSJ/>s(_RLrG;FLpMTqFqeZ(Ds(_RLs(q^P
+pMTqHrG;:Fq.fkBq.TeVs*j\shuCMIrs at BYqo&BLqniBLs1nZLrPJTKs180>s1!X[ci="FU]5i~>
+JcFm4rr at WMJcC<$JcDqRs$$=/q*+\)pHJTWm6:8nk<AJoiGnBEol9X]q_e=1rAXars)S-\s)e9`
+s*"E\s+C88og/UEs$6HKpI+mIrC6TQrCHfWrCZr[qb6r_rD*Ags%r_mq, at 5koiD)ms&AkopJh#i
+s&T)"s&f;&s&T(uq,[Gqs&f;(rE'#%rE/kus&f;&s&Skos&A_nqca#&s'#5&rEAGgpKINEp\s(M
+s,m>CqiC]9s,I&;s,6c8rJpo,s*aops*O]is*+Kcs)S-ZrG_LLs'==XgO=_Rci="FU]5i~>
+JcFm4rr at WMJcC<$JcDkPq0r-'q0r3)rrDLOomZ!dmfDATo`=dpk5k#SnH&XipAt3oq#TFUpAt9q
+irknRblmJPo.f_6]eS4?eUE)Lci="FU]5i~>
+JcFm4rr at WMJcC<$JcDkPs/#Vlq5!h_s.o[ks/5kss/H%&s1&*Bs24fRrPeI/s6'@Bs5s at Es60LK
+rTsRPs7$'Zs7?9]om$@[qi:]9pPed's,-\srH8-^rJ:E-s+^JmrGhXPq/?:Nmg8l-q.p"Fs(Le7
+qe>k at qe>q at qeGk>s(Le6qe6"Ds(_LJq.fY<qeH(Fq.fe at rG(k<rG)@Hs(_LJs(qFHqeH(Fq.fkB
+s(_RLs(qFHs(qXLq.f_>rFl4Yqg8'`o.f_6]eS4?q8E0Jq830Js1nZLs2+fIosfSQci="FU]5i~>
+JcFm4rr at WMJcC<$JcDkPq0r-'q0r3)rrDLOomZ!dmkj!CoecD_nML,#rAO[os)A!XrH%pRs)%dR
+s#C$>s#g<Fs$-NKrB^HJqa1$ErC$NOqaUHQs%)rWrCZr[rCm/as%r_mpJUrgs&Aeos&B"qs%r_k
+s&&Ads&Akqs&T)"nQ#Tgs&8qqqbdAmpK.AqrDieqrDi_orDWGkrE0#$rEA5amsam-n,NEMs,d,<
+s,Zu9s,I&:s,-]7s*soms*F]js*4Qes)e3Zo5E=^eUE)Lci="FU]5i~>
+JcFm4rr at WMJcC<$JcDkPq0r-'q0r3)rrDLOomZ!dmfDATo`=dpk5k#SnH&XipAt3oq#TFUpAt9q
+irknRblmJPo.f_6]eS4?eUE)Lci="FU]5i~>
+JcFm4rr at WMJcC<$JcDkPs/#Vlq5!h_s.o[ks/5kss/H%&s1&*Bs24fRrPeI/s6'@Bs5s at Es60LK
+rTsRPs7$'Zs7?9]om$@[qi:]9pPed's,-\srH8-^rJ:E-s+^JmrGhXPq/?:Nmg8l-q.p"Fs(Le7
+qe>k at qe>q at qeGk>s(Le6qe6"Ds(_LJq.fY<qeH(Fq.fe at rG(k<rG)@Hs(_LJs(qFHqeH(Fq.fkB
+s(_RLs(qFHs(qXLq.f_>rFl4Yqg8'`o.f_6]eS4?q8E0Jq830Js1nZLs2+fIosfSQci="FU]5i~>
+JcFm4rr at WMJcC<$JcDkPq0r-'q0r3)rrDLOomZ!dmkj!CoecD_nML,#rAO[os)A!XrH%pRs)%dR
+s#C$>s#g<Fs$-NKrB^HJqa1$ErC$NOqaUHQs%)rWrCZr[rCm/as%r_mpJUrgs&Aeos&B"qs%r_k
+s&&Ads&Akqs&T)"nQ#Tgs&8qqqbdAmpK.AqrDieqrDi_orDWGkrE0#$rEA5amsam-n,NEMs,d,<
+s,Zu9s,I&:s,-]7s*soms*F]js*4Qes)e3Zo5E=^eUE)Lci="FU]5i~>
+JcFm4rr at WMJcC<$JcDkPs$$J_qgS9'q0r?-rrDLOpO;'bm/brLrrMd#klL5UnH&XiirS`QnH%YQ
+Pl]P at i>D#<s8T\crs at H[d=-ZHc2[eDU]5i~>
+JcFm4rr at WMJcC<$JcDkPs.o\pqu6>cqka=is/5kss/Z1*s186FrPSZRs2P)\p\t3Zs6K^Ms69RI
+s69LJs6]jUs763]rUp-]rH\?fom?_"rJpK/qi(K3qhkE1s)n9rqhP3+s)S'Xqf)@LrGM'1q.oe@
+s(CY3rFl(Bqe5k>s(M4Bq.Te at mqDN0s(M4Cqe>e<qe>qBqe>q at rFu.Ds(hFFrFu:Fs(VFHs(hFH
+rFke:qe6"Ds(_RLq/$"Fs(_ at DrFl(UrHnEfom-L^mkOkB].s<lg].#drPS6Ds1nZLs1S6<qmV.V
+c2[eDU]5i~>
+JcFm4rr at WMJcC<$JcDkPs$$J_qgS9'q0r?-rrDLOpO;'bm53R;s"sCgmkju#s#0mprGV^Us(hRL
+s)%dRrAXa9s#U0Bs#p<Es#g6Es$6NKqa16KrC$HMrC6`UrCHfWrCZr[rD*Ags%r5_rDikss&&em
+s%iYirD!;fs&&eoq,@;krDESks%iYirCurarDW_orDESkq,-rfs&Akoq,I/gs&Akrq,dMsrE9/&
+nQFh"n,E at es-!DDl]2")s,?u8s,$c&qg/-bs*+Kcs)\3[s)@XLs'XU]d=-ZHc2[eDU]5i~>
+JcFm4rr at WMJcC<$JcDkPs$$J_qgS9'q0r?-rrDLOpO;'bm/brLrrMd#klL5UnH&XiirS`QnH%YQ
+Pl]P at i>D#<s8T\crs at H[d=-ZHc2[eDU]5i~>
+JcFm4rr at WMJcC<$JcDkPs.o\pqu6>cqka=is/5kss/Z1*s186FrPSZRs2P)\p\t3Zs6K^Ms69RI
+s69LJs6]jUs763]rUp-]rH\?fom?_"rJpK/qi(K3qhkE1s)n9rqhP3+s)S'Xqf)@LrGM'1q.oe@
+s(CY3rFl(Bqe5k>s(M4Bq.Te at mqDN0s(M4Cqe>e<qe>qBqe>q at rFu.Ds(hFFrFu:Fs(VFHs(hFH
+rFke:qe6"Ds(_RLq/$"Fs(_ at DrFl(UrHnEfom-L^mkOkB].s<lg].#drPS6Ds1nZLs1S6<qmV.V
+c2[eDU]5i~>
+JcFm4rr at WMJcC<$JcDkPs$$J_qgS9'q0r?-rrDLOpO;'bm53R;s"sCgmkju#s#0mprGV^Us(hRL
+s)%dRrAXa9s#U0Bs#p<Es#g6Es$6NKqa16KrC$HMrC6`UrCHfWrCZr[rD*Ags%r5_rDikss&&em
+s%iYirD!;fs&&eoq,@;krDESks%iYirCurarDW_orDESkq,-rfs&Akoq,I/gs&Akrq,dMsrE9/&
+nQFh"n,E at es-!DDl]2")s,?u8s,$c&qg/-bs*+Kcs)\3[s)@XLs'XU]d=-ZHc2[eDU]5i~>
+JcFm4rr at WMJcC<$JcDeNs$$J_qgS3%qgSPFnNQ\rgHOp(dgPC at mf`.]rrC:Ei<5&>klfHPpG)7G
+aYEZ!h>b`KJcEpnrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDeNs.o\pqu68as/#ams/5kss/l=.s1JBJs2+fRs2P)]p\t3^qsj^Us6fpR
+s6]jTs7--\s7QEcs7cKcqt9o7q0_p`pQ,95s,Ho7qhtK3rJCE-rJ1E-s)S-Zqf)@LrGMXPmg9#0
+q.fe at s(;4DmqDZ4qe5k>rFZ"@pLsM<qe#A2qe#k at s(M. at s(M at DrFZ"@rFkq>rFl4Ds(;4Bs(M:D
+rG):FrFl.BrFl4Fs(_LJs(q^NrFbe:q.K_ at pM'Y at s(D at Ds(D at YrI"9brHe?do6C:\s*FDoo*NMn
+q[)*YpVcsHn\Y=@s186Bosat0JcEpnrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDeNs$$J_qgS3%qgSPFnNQ\rgHOp[drFb3rAFUks)%dSs(qXLs(q^Ps).]m
+rAag;s#U0As#L*Bs$$BGq`t*GrBgBKrC$NOs$llUrCHr[s%E5_qb@)cohYT_s%WMcqap`YrCd)_
+s%`Sjq,./gs%iYipJ(Z_ohtfes%r_krD</as&8emqc!Gmq,@)go2k`is&mg"p\t2Ts,cu8rJgK1
+rJgi9s+C?+pNcd`s*+Kbs)J'XpM^(As'l"8h>b`KJcEpnrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDeNs$$J_qgS3%qgSPFnNQ\rgHOp(dgPC at mf`.]rrC:Ei<5&>klfHPpG)7G
+aYEZ!h>b`KJcEpnrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDeNs.o\pqu68as/#ams/5kss/l=.s1JBJs2+fRs2P)]p\t3^qsj^Us6fpR
+s6]jTs7--\s7QEcs7cKcqt9o7q0_p`pQ,95s,Ho7qhtK3rJCE-rJ1E-s)S-Zqf)@LrGMXPmg9#0
+q.fe at s(;4DmqDZ4qe5k>rFZ"@pLsM<qe#A2qe#k at s(M. at s(M at DrFZ"@rFkq>rFl4Ds(;4Bs(M:D
+rG):FrFl.BrFl4Fs(_LJs(q^NrFbe:q.K_ at pM'Y at s(D at Ds(D at YrI"9brHe?do6C:\s*FDoo*NMn
+q[)*YpVcsHn\Y=@s186Bosat0JcEpnrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDeNs$$J_qgS3%qgSPFnNQ\rgHOp[drFb3rAFUks)%dSs(qXLs(q^Ps).]m
+rAag;s#U0As#L*Bs$$BGq`t*GrBgBKrC$NOs$llUrCHr[s%E5_qb@)cohYT_s%WMcqap`YrCd)_
+s%`Sjq,./gs%iYipJ(Z_ohtfes%r_krD</as&8emqc!Gmq,@)go2k`is&mg"p\t2Ts,cu8rJgK1
+rJgi9s+C?+pNcd`s*+Kbs)J'XpM^(As'l"8h>b`KJcEpnrrAhoJ,~>
+JcFm4rr at WMJcC<$JcD_Ls$$J_rI4?%rI4bHqgS?)pO:^Xk5j*@m/cYYnH&XidfJJ3JH>QL_\iCV
+h$N7!o*O7QaaSg at aoDA@U]5i~>
+JcFm4rr at WMJcC<$JcD_Ls.o\prVlDas/#amrrE)&s0r$Bs2"`Qs2Y/_p\t3_s763]s7H9_s7ZKc
+s763]s7QEcs7lWirV69arV$8>q0_d^s*X^*s,[2?rJgc7rJUW3s,$W/rJ1?+s+UDjq/?4LrGD!0
+s(_ at Dqe6"@qe5M4rFYq>qe#k>qe#kAq.KY<o4@`0rFQ"@rFbk<s(D:BrFPq>rFbq>rFc(@s(2.@
+s(D4BrFu4DrFc(@rFc.Ds(VLJrG2:BpLj;6qdoe<rHS?ds*4Kfs*FQhpNl^^rHS'\rHA3bs*4Kf
+s(:'nk:uQ7h>d/drPS<FrPANLs186?s1/0 at s1A*9s0_m3JcEjlrrAhoJ,~>
+JcFm4rr at WMJcC<$JcD_Ls$$J_rI4?%rI4bHqgS?)pO:^Xk;:_/m54cWs)%XKrG;LNs#0a5rAaa9
+s#9s>s#g6Cs$$<ErBU<IrBgBKrC$HMs%*)[q+CNWq+Uf]qa^NSrCQr[pIkN[s%`Mgs%`Mes%N/]
+rD*/cs%rYiqbZf[q,6laoi1`g_g_VTpPo35l&GXis+0ois*4Qds)\3Zs)7pMrFZ(@s().>s'aa`
+aaSg at aoDA@U]5i~>
+JcFm4rr at WMJcC<$JcD_Ls$$J_rI4?%rI4bHqgS?)pO:^Xk5j*@m/cYYnH&XidfJJ3JH>QL_\iCV
+h$N7!o*O7QaaSg at aoDA@U]5i~>
+JcFm4rr at WMJcC<$JcD_Ls.o\prVlDas/#amrrE)&s0r$Bs2"`Qs2Y/_p\t3_s763]s7H9_s7ZKc
+s763]s7QEcs7lWirV69arV$8>q0_d^s*X^*s,[2?rJgc7rJUW3s,$W/rJ1?+s+UDjq/?4LrGD!0
+s(_ at Dqe6"@qe5M4rFYq>qe#k>qe#kAq.KY<o4@`0rFQ"@rFbk<s(D:BrFPq>rFbq>rFc(@s(2.@
+s(D4BrFu4DrFc(@rFc.Ds(VLJrG2:BpLj;6qdoe<rHS?ds*4Kfs*FQhpNl^^rHS'\rHA3bs*4Kf
+s(:'nk:uQ7h>d/drPS<FrPANLs186?s1/0 at s1A*9s0_m3JcEjlrrAhoJ,~>
+JcFm4rr at WMJcC<$JcD_Ls$$J_rI4?%rI4bHqgS?)pO:^Xk;:_/m54cWs)%XKrG;LNs#0a5rAaa9
+s#9s>s#g6Cs$$<ErBU<IrBgBKrC$HMs%*)[q+CNWq+Uf]qa^NSrCQr[pIkN[s%`Mgs%`Mes%N/]
+rD*/cs%rYiqbZf[q,6laoi1`g_g_VTpPo35l&GXis+0ois*4Qds)\3Zs)7pMrFZ(@s().>s'aa`
+aaSg at aoDA@U]5i~>
+JcFm4rr at WMJcC<$JcDYJs$$J_rI49#rrDeBrBBt)dlujocO9OLmf`.]rrCdSi<4]4pC#"YnH at q[
+q(^n9iW$`CJcEjlrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDYJs.o\prVlDas/#_qs0;U7s1nZQs2b5`s3LH=rUg-_s7ZKeqtU3es7cQg
+s7u]lqtg3crV6?es*sorqg\?hs*aops,[,=rJgc7s,6i5rJCE-s+gW/rIt3'qh+p#s).^Nmg8r,
+q.T_>s((q<ok*H"s(;4Bqe#e<o47`0rFGq>rFZ(BrFl.BrFZ(@qdf_<rFYe:rFZ(@rFGk<s(;4B
+qe5q at rFZ">rFZ(Bs'kq8s()"<pLaG:qg&'`rHJ3`s*+KfrH\?fom-FZrHJ'\qfVpJs'u(;s'Ye3
+s'Pe6jU(`;isF]Eo>LODq82sDs1SHBqmZU8s1/*;s0hs8s02O+s/gkPaoDA at U]5i~>
+JcFm4rr at WMJcC<$JcDYJs$$J_rI49#rrDeBrBBt)dlukMcZ/b;qeH"DrG;LNs#0a5rAaa9s#9s=
+q`Fa>rBC*CrBU6Gs$HZOs$cfSqa^<MrCR#[rC6TQqagTUrCZ`Us%NGeq+UNWqbHf[qbZ`Yqbm/e
+q,I*.a+!tUs$lrUs$ZfSl&GXds*=Wms+12qqfDdXs).jOrFl4Ds(;:BrFGq;s'amd_1$t8aoDA@
+U]5i~>
+JcFm4rr at WMJcC<$JcDYJs$$J_rI49#rrDeBrBBt)dlujocO9OLmf`.]rrCdSi<4]4pC#"YnH at q[
+q(^n9iW$`CJcEjlrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDYJs.o\prVlDas/#_qs0;U7s1nZQs2b5`s3LH=rUg-_s7ZKeqtU3es7cQg
+s7u]lqtg3crV6?es*sorqg\?hs*aops,[,=rJgc7s,6i5rJCE-s+gW/rIt3'qh+p#s).^Nmg8r,
+q.T_>s((q<ok*H"s(;4Bqe#e<o47`0rFGq>rFZ(BrFl.BrFZ(@qdf_<rFYe:rFZ(@rFGk<s(;4B
+qe5q at rFZ">rFZ(Bs'kq8s()"<pLaG:qg&'`rHJ3`s*+KfrH\?fom-FZrHJ'\qfVpJs'u(;s'Ye3
+s'Pe6jU(`;isF]Eo>LODq82sDs1SHBqmZU8s1/*;s0hs8s02O+s/gkPaoDA at U]5i~>
+JcFm4rr at WMJcC<$JcDYJs$$J_rI49#rrDeBrBBt)dlukMcZ/b;qeH"DrG;LNs#0a5rAaa9s#9s=
+q`Fa>rBC*CrBU6Gs$HZOs$cfSqa^<MrCR#[rC6TQqagTUrCZ`Us%NGeq+UNWqbHf[qbZ`Yqbm/e
+q,I*.a+!tUs$lrUs$ZfSl&GXds*=Wms+12qqfDdXs).jOrFl4Ds(;:BrFGq;s'amd_1$t8aoDA@
+U]5i~>
+JcFm4rr at WMJcC<$JcDSHs$$J_rI4?%rrE!]q0r;BqgRQho0<+9hZ;%2q&&i/nH&XiirS*AM#lWE
+eJR*Foa1 at IisFcG]mbP4a8c/>U]5i~>
+JcFm4rr at WMJcC<$JcDSHs.o\prVlJcs/#_qrO`*Js2b5as3U`Equ6Wgs7ZKerV6Egqtg3equ$'a
+s8;oqs8;bGqgnQns*t&ts*aops*O]jrJgi9rJU]5rJCE-s+gW/rIt9)q1J^!rIOotq(_UMqe5k>
+rFZ(>pLa/2m:?**qe#e<rFGG.rFGq<s()(>rFZ"@rFZ(@rFGe8s()(>pLaG:rFGk:rFGq>rFZ"@
+rFZ(@s().>s()(<rF5e8rF#Y8s().SpNcRZqfhp\rH8'_s*4Kfo6C4Xqf_p\s'bk6qd9;.m9TAk
+pG(\7j8\YfrPSTNpVHmFs1\NFs1%s8rO2U4s0;U,s/l7$JcEdjrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDSHs$$J_rI4?%rrE!]q0r;BqgRQho0<+9h_`Z!q;qKhs(q^PrAOU5rAaa9
+s#9s=rB'm=q`XmAq`k*Gqa:6Kq*k*KrC?`RqaUBOq+1BSs%;`Qqb6f[ohPB[q,$NWqbmGmj)NUu
+mm[7DnO<>6s+:2oqg&3hs*=Qas)S-Ws(q^LrFl4Ds(;:Bs().>s'l"9j8ZfAJcEdjrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDSHs$$J_rI4?%rrE!]q0r;BqgRQho0<+9hZ;%2q&&i/nH&XiirS*AM#lWE
+eJR*Foa1 at IisFcG]mbP4a8c/>U]5i~>
+JcFm4rr at WMJcC<$JcDSHs.o\prVlJcs/#_qrO`*Js2b5as3U`Equ6Wgs7ZKerV6Egqtg3equ$'a
+s8;oqs8;bGqgnQns*t&ts*aops*O]jrJgi9rJU]5rJCE-s+gW/rIt9)q1J^!rIOotq(_UMqe5k>
+rFZ(>pLa/2m:?**qe#e<rFGG.rFGq<s()(>rFZ"@rFZ(@rFGe8s()(>pLaG:rFGk:rFGq>rFZ"@
+rFZ(@s().>s()(<rF5e8rF#Y8s().SpNcRZqfhp\rH8'_s*4Kfo6C4Xqf_p\s'bk6qd9;.m9TAk
+pG(\7j8\YfrPSTNpVHmFs1\NFs1%s8rO2U4s0;U,s/l7$JcEdjrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDSHs$$J_rI4?%rrE!]q0r;BqgRQho0<+9h_`Z!q;qKhs(q^PrAOU5rAaa9
+s#9s=rB'm=q`XmAq`k*Gqa:6Kq*k*KrC?`RqaUBOq+1BSs%;`Qqb6f[ohPB[q,$NWqbmGmj)NUu
+mm[7DnO<>6s+:2oqg&3hs*=Qas)S-Ws(q^LrFl4Ds(;:Bs().>s'l"9j8ZfAJcEdjrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDMFs*k"JrI4E'rrDjYs*j_Bs*j2rrBL*Cq*FsEq`k#\i;qC8nJM-2pAt9o
+m/c#GQN>>=i>B`@q&&c-mg8+U[sio.`W,r<U]5i~>
+JcFm4rr at WMJcC<$JcDMFs/#bqrVlPes/5kss0hsBs2b5as3UN?rV-?es7u]krVQKih>R/%rIY'#
+s+(-!s*jops*XinrHeKhs*4L#rJLQ1s+pW/s+^Q-rIk'#s+:3#qge]tnM0ofq.BY<s'te7pLN`&
+q.0A6rFGq<mpc0(rFGk<qe#k>rFGk:qdTS8rFG_8s().>o4%Z.rFGq<q-sAJrHA-^s)e3\s*"?b
+q0;XXqf_p\qfMj\rHJ9ds*=3[rHA-Jq-a),qd/YqpKmZ9oj7(njo=efs24`Nqn`0Fs1\NGs1/0>
+q7$C4s0_m8s0r$2rN6+$s/Z1"JcE^hrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDMFs*k"JrI4E'rrDjYs*j_Bs*j2rrBL*Cq*FsEq`k$:iAB#'n`BXfs#9m9
+rAjm:s#Ts;s#g6CrBBsAs$HNKq*b0MrC6fTpI4sKq+(6Oqapf[mn<UQpJ(<UqbR#aqbbUXiI9rY
+s$H6Es$QfKpH/=9s#^6 at s#C$;s#'g5s(VLHrFc(?s().>s'k*i[sio.`W,r<U]5i~>
+JcFm4rr at WMJcC<$JcDMFs*k"JrI4E'rrDjYs*j_Bs*j2rrBL*Cq*FsEq`k#\i;qC8nJM-2pAt9o
+m/c#GQN>>=i>B`@q&&c-mg8+U[sio.`W,r<U]5i~>
+JcFm4rr at WMJcC<$JcDMFs/#bqrVlPes/5kss0hsBs2b5as3UN?rV-?es7u]krVQKih>R/%rIY'#
+s+(-!s*jops*XinrHeKhs*4L#rJLQ1s+pW/s+^Q-rIk'#s+:3#qge]tnM0ofq.BY<s'te7pLN`&
+q.0A6rFGq<mpc0(rFGk<qe#k>rFGk:qdTS8rFG_8s().>o4%Z.rFGq<q-sAJrHA-^s)e3\s*"?b
+q0;XXqf_p\qfMj\rHJ9ds*=3[rHA-Jq-a),qd/YqpKmZ9oj7(njo=efs24`Nqn`0Fs1\NGs1/0>
+q7$C4s0_m8s0r$2rN6+$s/Z1"JcE^hrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDMFs*k"JrI4E'rrDjYs*j_Bs*j2rrBL*Cq*FsEq`k$:iAB#'n`BXfs#9m9
+rAjm:s#Ts;s#g6CrBBsAs$HNKq*b0MrC6fTpI4sKq+(6Oqapf[mn<UQpJ(<UqbR#aqbbUXiI9rY
+s$H6Es$QfKpH/=9s#^6 at s#C$;s#'g5s(VLHrFc(?s().>s'k*i[sio.`W,r<U]5i~>
+JcFm4rr at WMJcC<$JcDMFs$$J_rI4E'rrDjYrI4YDpO;Wrs$-NKs$?NKq*Y*IpHef^qZHj"i;q[@
+nJLp,r=&]+oaKXZW<'11mhj(JpDEc1km?PQZ[RK*_uK`:U]5i~>
+JcFm4rr at WMJcC<$JcDMFs.o\prVlVgs/,grrrE)/s2G#^s3U`Dqu?]lrVHQkrVY(Aqh+cts+13#
+s*t&ts*aoprHnQjrH\EfrHJ9brJCQ1s+gQ-s+UE)rIb-%rIOots*sutnM0icqg&3ds(qFSs*+9K
+o4%N*q.0G6rF5_6s'YM.s'kq8s'Yk6rEfA,rEfM2rF#Y6rF#S4pL=/2rF#S4rH7pXrH8-^qfVj\
+rH8'\s)\3\s)e9`s*"9`s*49]q/uXXs)\3\s)\3^s*"9`q0)^GrF,Y4s'Pe6qd9/*l!=6opN$.;
+km?PQn&51Bs2+ZLqnW6Hs1\NGs186?q7$70s0_m6q5jUss/Q*uJcEXfrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDMFs$$J_rI4E'rrDjYrI4YDpO;Wrs$-NKs$?NKq*Y*IpHeg<q_nI3iAB;/
+n`B:\s(1kCs$-6Cqa(6Kq*XsGqa:0IqaLBOq+(0MrCQTQqb-l]ohGB[YAs#[iC3c6s$?ZQq*k<O
+s#og4rAjm:s(hRIrFl4Ds(;:BrFGq;s'b*jZ[RK*_uK`:U]5i~>
+JcFm4rr at WMJcC<$JcDMFs$$J_rI4E'rrDjYrI4YDpO;Wrs$-NKs$?NKq*Y*IpHef^qZHj"i;q[@
+nJLp,r=&]+oaKXZW<'11mhj(JpDEc1km?PQZ[RK*_uK`:U]5i~>
+JcFm4rr at WMJcC<$JcDMFs.o\prVlVgs/,grrrE)/s2G#^s3U`Dqu?]lrVHQkrVY(Aqh+cts+13#
+s*t&ts*aoprHnQjrH\EfrHJ9brJCQ1s+gQ-s+UE)rIb-%rIOots*sutnM0icqg&3ds(qFSs*+9K
+o4%N*q.0G6rF5_6s'YM.s'kq8s'Yk6rEfA,rEfM2rF#Y6rF#S4pL=/2rF#S4rH7pXrH8-^qfVj\
+rH8'\s)\3\s)e9`s*"9`s*49]q/uXXs)\3\s)\3^s*"9`q0)^GrF,Y4s'Pe6qd9/*l!=6opN$.;
+km?PQn&51Bs2+ZLqnW6Hs1\NGs186?q7$70s0_m6q5jUss/Q*uJcEXfrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDMFs$$J_rI4E'rrDjYrI4YDpO;Wrs$-NKs$?NKq*Y*IpHeg<q_nI3iAB;/
+n`B:\s(1kCs$-6Cqa(6Kq*XsGqa:0IqaLBOq+(0MrCQTQqb-l]ohGB[YAs#[iC3c6s$?ZQq*k<O
+s#og4rAjm:s(hRIrFl4Ds(;:BrFGq;s'b*jZ[RK*_uK`:U]5i~>
+JcFm4rr at WMJcC<$JcDGDs$$J_rI4K)rrDp[q0r9+msb4!rBL<Is$H`QqaCBOpI+aCs$H_grr`9&
+f)at at nJLj*rs\o-rs[X!jU:_^JID&WrtrKRq&'&5k6^DQXaYj$_>jN8U]5i~>
+JcFm4rr at WMJcC<$JcDGDs.o\prVl\is/>t"rrE)5s3(Ghq>UEjs82iorVcEge,B/rs+:9%rIFot
+s*jurs*Xcls*FWhs*4Kds*"Ebs)e9^s)S-orIk-%s+:3#rIFcps+'Vos*FQfq0;pTq02LTo6'qP
+pN?FVolL.TojIfAs)\-Zs)J!VrGhdVs)\'ZpN- at Vq/c:PolL"PqfVjZrH%pXs)\3^s)n9`s*+Kd
+pN?@TrH%pXs)J'Zs)\3^s*"EPs'P_5q-a/.qd0;0oj6feq/ZF?k6^DQlbrh at s2+`NqnW0Fs1\NH
+s1A<As1&$:osXn(s02O)qlBass/>sqJcERdrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDGDs$$J_rI4K)rrDp[q0r9+msb4!rBL<Is$H`QqaCBOpI+aCs$H`Es#0m7
+f/2T/n`B:\s(24MgOA7(s$clUqaZ3Wo5XeZqaLBMj$iu7s$6TOs$crUlT>&*s)A!Rs(_LHrFl4D
+s(;:Bs().>s'k6mXaYj$_>jN8U]5i~>
+JcFm4rr at WMJcC<$JcDGDs$$J_rI4K)rrDp[q0r9+msb4!rBL<Is$H`QqaCBOpI+aCs$H_grr`9&
+f)at at nJLj*rs\o-rs[X!jU:_^JID&WrtrKRq&'&5k6^DQXaYj$_>jN8U]5i~>
+JcFm4rr at WMJcC<$JcDGDs.o\prVl\is/>t"rrE)5s3(Ghq>UEjs82iorVcEge,B/rs+:9%rIFot
+s*jurs*Xcls*FWhs*4Kds*"Ebs)e9^s)S-orIk-%s+:3#rIFcps+'Vos*FQfq0;pTq02LTo6'qP
+pN?FVolL.TojIfAs)\-Zs)J!VrGhdVs)\'ZpN- at Vq/c:PolL"PqfVjZrH%pXs)\3^s)n9`s*+Kd
+pN?@TrH%pXs)J'Zs)\3^s*"EPs'P_5q-a/.qd0;0oj6feq/ZF?k6^DQlbrh at s2+`NqnW0Fs1\NH
+s1A<As1&$:osXn(s02O)qlBass/>sqJcERdrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDGDs$$J_rI4K)rrDp[q0r9+msb4!rBL<Is$H`QqaCBOpI+aCs$H`Es#0m7
+f/2T/n`B:\s(24MgOA7(s$clUqaZ3Wo5XeZqaLBMj$iu7s$6TOs$crUlT>&*s)A!Rs(_LHrFl4D
+s(;:Bs().>s'k6mXaYj$_>jN8U]5i~>
+JcFm4rr at WMJcC<$JcDABs$$J_s*j]+rrE!]q0r!#q0r-hs+(-#s$H`Qs$ZlUrC6fWog\aGs$ZlS
+s$H`Orr_ushZ;mJnJM'0q&',3i>@+RcO97D`ru2Ts"WO?mJj)5JcELbrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDABs.o\ps8Mtms/5mts0M_*s1\N[q>UElp\jLYfDYZ#s+:9%s+(-!rI4cp
+rI"Wls*FWhrHS?cs)n?`s)\-Zs+L?'s+:3#rIFotqgSQpnM0ufqfr'`s*"EKqf_^Vmr\GJq/ZFR
+m;i/Hs)e3\s)S'Xs)@pTs)@pVs)RpVpN$:Rqf;@Nq/ZLTs)S'Zq/lRVrGqjVs)S-\rH/'^s*"-Y
+q/cRVs)J'Eqcs#&qc`r*qd0)(qd0/*s'G"srGhdVs"WO?mJlLjrPSZPs2"ZLqnN*Ds1JBDs186@
+s1&$:pU:+,s/c7(s/u7"s/Q*ts/,gmJcELbrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDABs$$J_s*j]+rrE!]q0r!#q0r-hs+(-#s$H`Qs$ZlUrC6fWog\aGs$ZlS
+s$H`Os#0U/h_aM9n`BRdq0r?TiI6>tcZ/tNrBg6Eo0hh3s$?ZLs#o[0s*+Kas)7dLs(VFFrFc.B
+s(24 at s'l":mJj)5JcELbrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDABs$$J_s*j]+rrE!]q0r!#q0r-hs+(-#s$H`Qs$ZlUrC6fWog\aGs$ZlS
+s$H`Orr_ushZ;mJnJM'0q&',3i>@+RcO97D`ru2Ts"WO?mJj)5JcELbrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDABs.o\ps8Mtms/5mts0M_*s1\N[q>UElp\jLYfDYZ#s+:9%s+(-!rI4cp
+rI"Wls*FWhrHS?cs)n?`s)\-Zs+L?'s+:3#rIFotqgSQpnM0ufqfr'`s*"EKqf_^Vmr\GJq/ZFR
+m;i/Hs)e3\s)S'Xs)@pTs)@pVs)RpVpN$:Rqf;@Nq/ZLTs)S'Zq/lRVrGqjVs)S-\rH/'^s*"-Y
+q/cRVs)J'Eqcs#&qc`r*qd0)(qd0/*s'G"srGhdVs"WO?mJlLjrPSZPs2"ZLqnN*Ds1JBDs186@
+s1&$:pU:+,s/c7(s/u7"s/Q*ts/,gmJcELbrrAhoJ,~>
+JcFm4rr at WMJcC<$JcDABs$$J_s*j]+rrE!]q0r!#q0r-hs+(-#s$H`Qs$ZlUrC6fWog\aGs$ZlS
+s$H`Os#0U/h_aM9n`BRdq0r?TiI6>tcZ/tNrBg6Eo0hh3s$?ZLs#o[0s*+Kas)7dLs(VFFrFc.B
+s(24 at s'l":mJj)5JcELbrrAhoJ,~>
+JcFm4rr at WMJcC<$JcD;@s$$J_pHJTWq0q]ps$-=/s+(-#s+:9's+LE+s+^Q/rC[)]qagNQs$m#W
+s$ZlSs$H`Os$6;[h#[6Xq#U@#obdW^nJM9+lPP0\dgP+8bln%`q_ at +;mJir1JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcD;@s.o\ps.o[ks/H%)s1841q>T^Yl2KT=s+C9%s+13#s*surs*ains*O]j
+s*=Whs*"Ebs)e3\s)J'Ws+C?'rIP!!s(q^NrG):Zs*jJmqfr'`qfVpEs)n!VpN-.PrH%pXrGh^R
+kAgNCrGqpXrG_dTrGMRQrGhRPqf2RRrGhFLrGhdTs)7pWs)RjTrGqjVrG_dVrGqpZs)e9`q/cRC
+qd05,s'5S.s'5G*o31flhd-8%q_ at +;mJlLjrPSZPs2"ZLrP/BHrOr0Bs186 at s1&$:qmQO4s0hs7
+s/uC&s/c7's/c1"s/Q*sqk\lD^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcD;@s$$J_pHJTWq0q]ps$-=/s+(-#s+:9's+LE+s+^Q/rC[)]qagNQs$m#W
+s$ZlSs$H`Os$6<9h)+kGq)%tgp#Z/OnUCLLl[FD)drG7LrBU6Eog&IArBp0EqaLNPs$H`KrB($B
+s$$HGq`F[9s#^+%s)S-Us(hRJrFu4Ds(D:Bs().>s'kBqUOIdo^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcD;@s$$J_pHJTWq0q]ps$-=/s+(-#s+:9's+LE+s+^Q/rC[)]qagNQs$m#W
+s$ZlSs$H`Os$6;[h#[6Xq#U@#obdW^nJM9+lPP0\dgP+8bln%`q_ at +;mJir1JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$JcD;@s.o\ps.o[ks/H%)s1841q>T^Yl2KT=s+C9%s+13#s*surs*ains*O]j
+s*=Whs*"Ebs)e3\s)J'Ws+C?'rIP!!s(q^NrG):Zs*jJmqfr'`qfVpEs)n!VpN-.PrH%pXrGh^R
+kAgNCrGqpXrG_dTrGMRQrGhRPqf2RRrGhFLrGhdTs)7pWs)RjTrGqjVrG_dVrGqpZs)e9`q/cRC
+qd05,s'5S.s'5G*o31flhd-8%q_ at +;mJlLjrPSZPs2"ZLrP/BHrOr0Bs186 at s1&$:qmQO4s0hs7
+s/uC&s/c7's/c1"s/Q*sqk\lD^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcD;@s$$J_pHJTWq0q]ps$-=/s+(-#s+:9's+LE+s+^Q/rC[)]qagNQs$m#W
+s$ZlSs$H`Os$6<9h)+kGq)%tgp#Z/OnUCLLl[FD)drG7LrBU6Eog&IArBp0EqaLNPs$H`KrB($B
+s$$HGq`F[9s#^+%s)S-Us(hRJrFu4Ds(D:Bs().>s'kBqUOIdo^&S*4U]5i~>
+JcFm4rr at WMJcC<$JcD5>rI4W-s*jtJrI3onq`k+2s+13%s+C?)s+UK-s+gW8s-E\TrL<hUs-`gf
+s&]4ss%EA`s%!)Xs$ZlRs$?ZMs$-;\h#[6XqZ6Qsq$HjOnJM9+o,*#dgC)7,f`_<]pG(\7nc,//
+JcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcD5>s8N%ps/5n,s2"a7rrE#siVhg9kPbF4rIP!!rI=irs*ains*Ocls*=Wh
+s*+Kcs)e3\s)A!Vs).ddrIFotrG)@Hs(M at Fq$HjOqfi'`q/lXApN-"JpN-:RrGhdTqetY:rGqpX
+s)@pTs).jRs).jTrG_FLrG_dTrGMXSnT"SJrGVXPs)A!XpN$4PrG_^RrGMR:rE0)&s'GG*rET#"
+m99BkrETA.qcs#(s'5A*rsAESisG8Ul,<V>rPJTNs1nTJrP&6Ds1JBDs186 at rODg8s0hg4s0Vg0
+q5aOtrN#sts/,UgJcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcD5>rI4W-s*jtJrI3onq`k+2s+13%s+C?)s+UK-s+gW8s-E\TrL<hUs-`gf
+s&]4ss%EA`s%!)Xs$ZlRs$?ZMs$-<:h)+kGq_\1/q/?*.nUCLLo6u71gMu%6nNd+ at rBpTOrB^HK
+s#p<Cq)eI:s#^0?s*"Eds*"Eds*"E`qeQ.FrFu4Ds(D at Ds(24 at s'u(;nc,//JcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcD5>rI4W-s*jtJrI3onq`k+2s+13%s+C?)s+UK-s+gW8s-E\TrL<hUs-`gf
+s&]4ss%EA`s%!)Xs$ZlRs$?ZMs$-;\h#[6XqZ6Qsq$HjOnJM9+o,*#dgC)7,f`_<]pG(\7nc,//
+JcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcD5>s8N%ps/5n,s2"a7rrE#siVhg9kPbF4rIP!!rI=irs*ains*Ocls*=Wh
+s*+Kcs)e3\s)A!Vs).ddrIFotrG)@Hs(M at Fq$HjOqfi'`q/lXApN-"JpN-:RrGhdTqetY:rGqpX
+s)@pTs).jRs).jTrG_FLrG_dTrGMXSnT"SJrGVXPs)A!XpN$4PrG_^RrGMR:rE0)&s'GG*rET#"
+m99BkrETA.qcs#(s'5A*rsAESisG8Ul,<V>rPJTNs1nTJrP&6Ds1JBDs186 at rODg8s0hg4s0Vg0
+q5aOtrN#sts/,UgJcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcD5>rI4W-s*jtJrI3onq`k+2s+13%s+C?)s+UK-s+gW8s-E\TrL<hUs-`gf
+s&]4ss%EA`s%!)Xs$ZlRs$?ZMs$-<:h)+kGq_\1/q/?*.nUCLLo6u71gMu%6nNd+ at rBpTOrB^HK
+s#p<Cq)eI:s#^0?s*"Eds*"Eds*"E`qeQ.FrFu4Ds(D at Ds(24 at s'u(;nc,//JcE@^rrAhoJ,~>
+JcFm4rr at WMJcC<$JcD/<s$$7-rrD.ErBL<IrB^HMs$QfSs+UK-s,6o?s-it]s/H%$s/l7$s/Z1"
+s/>sgs-*JFs,[2>s,6o6s+gW.q`k#\irSrYpDEW-nHo!oq&',3rtp:pi=!*qklgegpG(\7p&CA-
+JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcD/<s/,h2qu6Tqec!trrVccos+:9%s+(&ts*jurrI"Wks*=Whs*+Kcs)e9^
+s)S-XrGMXPs+(&trI4c\s(MFFrFk^-s'u(<s'bq7q/cR?qf;FNs)@pVpN$4PrG_dTs).jRs)-q:
+rGhjVs)7jRs)%dPs)%dRs)7RLrGV^Rs)%dPs)%dSol0kJs).dPrG;LOs)@dRrETA,s'#G*qc`r$
+pK75rrEK/&rEJAeqci_uq$HdMisGDYkJ[>:s2+fPrP8HJrP&6Ds1J<BrOW$>s1&*<rO2U2s0Vg2
+s/l=%s/Psss/l=%s/5UfJcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcD/<s$$7-rrD.ErBL<IrB^HMs$QfSs+UK-s,6o?s-it]s/H%$s/l7$s/Z1"
+s/>sgs-*JFs,[2>s,6o6s+gW.q`k$:j#$QjpO;iqnSe4^q0r?Ts*fN=iGnTTs$#I-s$#g7q*+g@
+rB:*Ao/lt7s*=Whs*+?`s)n?_s)7^KrG):Fs(M at Ds(;:Bs'u(<p&CA-JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcD/<s$$7-rrD.ErBL<IrB^HMs$QfSs+UK-s,6o?s-it]s/H%$s/l7$s/Z1"
+s/>sgs-*JFs,[2>s,6o6s+gW.q`k#\irSrYpDEW-nHo!oq&',3rtp:pi=!*qklgegpG(\7p&CA-
+JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcD/<s/,h2qu6Tqec!trrVccos+:9%s+(&ts*jurrI"Wks*=Whs*+Kcs)e9^
+s)S-XrGMXPs+(&trI4c\s(MFFrFk^-s'u(<s'bq7q/cR?qf;FNs)@pVpN$4PrG_dTs).jRs)-q:
+rGhjVs)7jRs)%dPs)%dRs)7RLrGV^Rs)%dPs)%dSol0kJs).dPrG;LOs)@dRrETA,s'#G*qc`r$
+pK75rrEK/&rEJAeqci_uq$HdMisGDYkJ[>:s2+fPrP8HJrP&6Ds1J<BrOW$>s1&*<rO2U2s0Vg2
+s/l=%s/Psss/l=%s/5UfJcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcD/<s$$7-rrD.ErBL<IrB^HMs$QfSs+UK-s,6o?s-it]s/H%$s/l7$s/Z1"
+s/>sgs-*JFs,[2>s,6o6s+gW.q`k$:j#$QjpO;iqnSe4^q0r?Ts*fN=iGnTTs$#I-s$#g7q*+g@
+rB:*Ao/lt7s*=Whs*+?`s)n?_s)7^KrG):Fs(M at Ds(;:Bs'u(<p&CA-JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcC<$JcD;@s*jnVs$$I3rBC5]jZ`W-s$6TMs$H`Qs$ZlUs%!)as&T/+s(254s0Vg=
+s1nZLs1\NHs1JB>s/Q*ks-WhQs-<VJs,m>As+13#q1%'#pDE]/nHnpmqZ6]so)XUSR0!*dnHo"G
+i<f>[Oa_l][K$7,U]5i~>
+JcFm4rr at WMJcC<$JcD;@s/#a7s5s@[s8MuqrrC7 at g&D$MrVZ\Hs+(&ts*jurs*Xins*=Whs*+Kd
+rH/'ZrGMXPrG;L`rI4cps*XiZs(;4BnHo5)s'YM+s',G-q-<r(rGVXRol:"Ns)7pTs)%dPs(hXO
+mr%r<s)7jTs)7pTrGDRNs(hXNs)%FIrGMXPs(q^Ns(_RLs)%LKs).j?s&oA(pK.Ass&o5&rE9/&
+pK at Gss&\qss',A(rE85crEK)$s',""q(^h7q>]WrrPSZPrPANLrP/<Fs1SBDrO`*@rOMs<s0qs8
+rO)[4s0Ma1s/u=$rMo[os/,IcJcE.XrrAhoJ,~>
+JcFm4rr at WMJcC<$JcD;@s*jnVs$$I3rBC5]jZ`W-s$6TMs$H`Qs$ZlUs%!)as&T/+s(254s0Vg=
+s1nZLs1\NHs1JB>s/Q*ks-WhQs-<VJs,m>As+13#q1%'VpO;osnSe.\q_\=.o/)5Bs#Ts;nN?V1
+s#g0Aq*+C7s$$HFs#p0Bq`asAs#g0?s#U$;q)eCrs*4Kds*"Ebs)S-Ys)7XIs(_LHrFl4Ds(;:B
+s().>s'ba'Oa_l][K$7,U]5i~>
+JcFm4rr at WMJcC<$JcD;@s*jnVs$$I3rBC5]jZ`W-s$6TMs$H`Qs$ZlUs%!)as&T/+s(254s0Vg=
+s1nZLs1\NHs1JB>s/Q*ks-WhQs-<VJs,m>As+13#q1%'#pDE]/nHnpmqZ6]so)XUSR0!*dnHo"G
+i<f>[Oa_l][K$7,U]5i~>
+JcFm4rr at WMJcC<$JcD;@s/#a7s5s@[s8MuqrrC7 at g&D$MrVZ\Hs+(&ts*jurs*Xins*=Whs*+Kd
+rH/'ZrGMXPrG;L`rI4cps*XiZs(;4BnHo5)s'YM+s',G-q-<r(rGVXRol:"Ns)7pTs)%dPs(hXO
+mr%r<s)7jTs)7pTrGDRNs(hXNs)%FIrGMXPs(q^Ns(_RLs)%LKs).j?s&oA(pK.Ass&o5&rE9/&
+pK at Gss&\qss',A(rE85crEK)$s',""q(^h7q>]WrrPSZPrPANLrP/<Fs1SBDrO`*@rOMs<s0qs8
+rO)[4s0Ma1s/u=$rMo[os/,IcJcE.XrrAhoJ,~>
+JcFm4rr at WMJcC<$JcD;@s*jnVs$$I3rBC5]jZ`W-s$6TMs$H`Qs$ZlUs%!)as&T/+s(254s0Vg=
+s1nZLs1\NHs1JB>s/Q*ks-WhQs-<VJs,m>As+13#q1%'VpO;osnSe.\q_\=.o/)5Bs#Ts;nN?V1
+s#g0Aq*+C7s$$HFs#p0Bq`asAs#g0?s#U$;q)eCrs*4Kds*"Ebs)S-Ys)7XIs(_LHrFl4Ds(;:B
+s().>s'ba'Oa_l][K$7,U]5i~>
+JcFm4rr at WMJcC<$JcE@^o7$3nqgSPTs$$I3s$$G_iBI9+rBUBKs$HZOs$m#ds'G_>s)n?ls+gW8
+s,m?.s3L_hs2"`Ds/c6os.97\s-itNs+:9%s+'clgB at 6fqZQQur<2WkrrBq;lO/7EklLS_o*P.G
+isGV_Mgg6WZiC%*U]5i~>
+JcFm4rr at WMJcC<$JcE@^s7H?as7ZKes7lQhs3:Gdq9Ss:s5s@[s8N&srrBn6j8T#Us8;ims+(&t
+s*aops*Ocks*4Qfs*"Eas)\3Zs).jRrG;LLs(_R_s*aops*Oclqe#@)s'PA's'#G-q-3YurEK#$
+s',G*s&oA(s&]5$s&\qtrE/`/qeuLPs)%^:s&]5$s&]5&s&o/$s&oA(s&]/"qc3Yss&f)"rE0)$
+rDresqc<_us&f/"qcNf"rE0#"oiV/qs&f5&l!!sglO!;?isGV_pVcgDqo&NPrPJNLs1nTJs1\BD
+rOi*@s180>s1&*<s0hm6rNuU2s0;U-s/l7#s/Q*us/Q$us/5C`JcE(VrrAhoJ,~>
+JcFm4rr at WMJcC<$JcE@^o7$3nqgSPTs$$I3s$$G_iBI9+rBUBKs$HZOs$m#ds'G_>s)n?ls+gW8
+s,m?.s3L_hs2"`Ds/c6os.97\s-itNs+:9%s+'clgGekUq`"1drG(jZs"_JKlZ)q]pGMJ!s#9m9
+lT+o)rB'I1rB's?pHAI=q*4mCs#pBDs#g6ErBC0Cs#g6As#Ts9rAaUmqfVp^s)n?`s)\3[q/?:L
+qeQ.FrFu:FrFc.Bs(24?s'km*Mgg6WZiC%*U]5i~>
+JcFm4rr at WMJcC<$JcE@^o7$3nqgSPTs$$I3s$$G_iBI9+rBUBKs$HZOs$m#ds'G_>s)n?ls+gW8
+s,m?.s3L_hs2"`Ds/c6os.97\s-itNs+:9%s+'clgB at 6fqZQQur<2WkrrBq;lO/7EklLS_o*P.G
+isGV_Mgg6WZiC%*U]5i~>
+JcFm4rr at WMJcC<$JcE@^s7H?as7ZKes7lQhs3:Gdq9Ss:s5s@[s8N&srrBn6j8T#Us8;ims+(&t
+s*aops*Ocks*4Qfs*"Eas)\3Zs).jRrG;LLs(_R_s*aops*Oclqe#@)s'PA's'#G-q-3YurEK#$
+s',G*s&oA(s&]5$s&\qtrE/`/qeuLPs)%^:s&]5$s&]5&s&o/$s&oA(s&]/"qc3Yss&f)"rE0)$
+rDresqc<_us&f/"qcNf"rE0#"oiV/qs&f5&l!!sglO!;?isGV_pVcgDqo&NPrPJNLs1nTJs1\BD
+rOi*@s180>s1&*<s0hm6rNuU2s0;U-s/l7#s/Q*us/Q$us/5C`JcE(VrrAhoJ,~>
+JcFm4rr at WMJcC<$JcE@^o7$3nqgSPTs$$I3s$$G_iBI9+rBUBKs$HZOs$m#ds'G_>s)n?ls+gW8
+s,m?.s3L_hs2"`Ds/c6os.97\s-itNs+:9%s+'clgGekUq`"1drG(jZs"_JKlZ)q]pGMJ!s#9m9
+lT+o)rB'I1rB's?pHAI=q*4mCs#pBDs#g6ErBC0Cs#g6As#Ts9rAaUmqfVp^s)n?`s)\3[q/?:L
+qeQ.FrFu:FrFc.Bs(24?s'km*Mgg6WZiC%*U]5i~>
+JcFm4rr at WMJcC<$JcF^/qgQLJq0r3)s*jtJh*1d%s$6NKs$H`Qs%iZ!s(;:Os*k!*s.B=cs.KC[
+s,R,3s*4Q]s(;:As-Nb=s+C?'s+13#pOE-jgB at Hlq[<E)nHA at _rr@TNUB0HZrsAESisGbcKmnUQ
+YQ+V&U]5i~>
+JcFm4rr at WMJcC<$JcF^/s7--\s7QE6rQG5bs3:Mfs3LYjg!TWpqu-QorrB8$p&=pgp\b&As*aop
+s*Ocls*4Qfs*"Ebs)S-Xs)%^Ns(hRJs(VLHs*Oclqg&3QnHnels',M+s',G*oi_5sq-3l&s&oA(
+s&]5$qc3Yss&])"nQ5`js&T/"qc*MorDrkss&T/$rE0)$rDrGgs&T"urDrqukuRaaq,mMqm9'0e
+s'#G*q-)ebpG(\7s8V2uqni<Js1nTJs1\HFqn2m>rOVs<s1&*<s0hm6s0Vg4s0D[0s0)I)s/c*u
+s/Q*ts/H%!n"kU8YQ+V&U]5i~>
+JcFm4rr at WMJcC<$JcF^/qgQLJq0r3)s*jtJh*1d%s$6NKs$H`Qs%iZ!s(;:Os*k!*s.B=cs.KC[
+s,R,3s*4Q]s(;:As-Nb=s+C?'s+13#pOE-jgGf([qf2WmnS7SNs"^K/o/62!s#9s;krJ]'nN6\1
+s#^$=rB($ArB:*Cs#pBEs#^6As#^6Cs#pBDs#U0?s#Bg5kAL<9s)@^Nq.oqDrFu4Ds(D at Ds(24@
+s'u*/KmnUQYQ+V&U]5i~>
+JcFm4rr at WMJcC<$JcF^/qgQLJq0r3)s*jtJh*1d%s$6NKs$H`Qs%iZ!s(;:Os*k!*s.B=cs.KC[
+s,R,3s*4Q]s(;:As-Nb=s+C?'s+13#pOE-jgB at Hlq[<E)nHA at _rr@TNUB0HZrsAESisGbcKmnUQ
+YQ+V&U]5i~>
+JcFm4rr at WMJcC<$JcF^/s7--\s7QE6rQG5bs3:Mfs3LYjg!TWpqu-QorrB8$p&=pgp\b&As*aop
+s*Ocls*4Qfs*"Ebs)S-Xs)%^Ns(hRJs(VLHs*Oclqg&3QnHnels',M+s',G*oi_5sq-3l&s&oA(
+s&]5$qc3Yss&])"nQ5`js&T/"qc*MorDrkss&T/$rE0)$rDrGgs&T"urDrqukuRaaq,mMqm9'0e
+s'#G*q-)ebpG(\7s8V2uqni<Js1nTJs1\HFqn2m>rOVs<s1&*<s0hm6s0Vg4s0D[0s0)I)s/c*u
+s/Q*ts/H%!n"kU8YQ+V&U]5i~>
+JcFm4rr at WMJcC<$JcF^/qgQLJq0r3)s*jtJh*1d%s$6NKs$H`Qs%iZ!s(;:Os*k!*s.B=cs.KC[
+s,R,3s*4Q]s(;:As-Nb=s+C?'s+13#pOE-jgGf([qf2WmnS7SNs"^K/o/62!s#9s;krJ]'nN6\1
+s#^$=rB($ArB:*Cs#pBEs#^6As#^6Cs#pBDs#U0?s#Bg5kAL<9s)@^Nq.oqDrFu4Ds(D at Ds(24@
+s'u*/KmnUQYQ+V&U]5i~>
+JcFm4rr at WMJcC<$JcG9?[6F22q*+fYs*i]drBL6GrB^HWs&f;4s)S-ps.97ss02O"s-s%Ms+UK!
+s)7pAq*tBSs$QHDq``g:pC$KonH&XiJH<(Xf*(sfs"WUArrdn%s*fP!XoJD$U]5i~>
+JcFm4rr at WMJcC<$JcG9?s2G#Ys2b5_s3(Gds3:Shs3L_lajK_Zq>L<ns8JA`s7u]hs*Xins*F]i
+s*+Kds)e9]s)7pSs(q^NrG)@Hs(MFFs(;:Vq0;E9rET#"s&f;)q-!YurE&ksqcEeus&JYis&Sqs
+oiD)lqbmAkrD`Smqc*Gmq,I/iq,I;ms&Aqsk>qO_rE/kslWF0if*V7-jU(rYs24fPn&+t<qn`<J
+rP/BHqn;s at rO_s<rOMs<s0r$:s0_m6rNlO0s0;U-s/u=%rN#gqs/>spmA5C6XoJD$U]5i~>
+JcFm4rr at WMJcC<$JcG9?[6F22q*+fYs*i]drBL6GrB^HWs&f;4s)S-ps.97ss02O"s-s%Ms+UK!
+s)7pAq*tBSs$QHDq``gmpMo_<nML8$SM]pqq_n70q)S=3q`4[;q)eU;s#L*=s#Km:s#U*=rAss=
+s#9m7s#9m9s#9m6s"sIbrG24Fs)%RJs(hFFqc<`8pM9eDqe?(Ds(D at Ds(24 at s"T(Rs*fP!XoJD$
+U]5i~>
+JcFm4rr at WMJcC<$JcG9?[6F22q*+fYs*i]drBL6GrB^HWs&f;4s)S-ps.97ss02O"s-s%Ms+UK!
+s)7pAq*tBSs$QHDq``g:pC$KonH&XiJH<(Xf*(sfs"WUArrdn%s*fP!XoJD$U]5i~>
+JcFm4rr at WMJcC<$JcG9?s2G#Ys2b5_s3(Gds3:Shs3L_lajK_Zq>L<ns8JA`s7u]hs*Xins*F]i
+s*+Kds)e9]s)7pSs(q^NrG)@Hs(MFFs(;:Vq0;E9rET#"s&f;)q-!YurE&ksqcEeus&JYis&Sqs
+oiD)lqbmAkrD`Smqc*Gmq,I/iq,I;ms&Aqsk>qO_rE/kslWF0if*V7-jU(rYs24fPn&+t<qn`<J
+rP/BHqn;s at rO_s<rOMs<s0r$:s0_m6rNlO0s0;U-s/u=%rN#gqs/>spmA5C6XoJD$U]5i~>
+JcFm4rr at WMJcC<$JcG9?[6F22q*+fYs*i]drBL6GrB^HWs&f;4s)S-ps.97ss02O"s-s%Ms+UK!
+s)7pAq*tBSs$QHDq``gmpMo_<nML8$SM]pqq_n70q)S=3q`4[;q)eU;s#L*=s#Km:s#U*=rAss=
+s#9m7s#9m9s#9m6s"sIbrG24Fs)%RJs(hFFqc<`8pM9eDqe?(Ds(D at Ds(24 at s"T(Rs*fP!XoJD$
+U]5i~>
+JcFm4rr at WMJcC<$JcGb!Y<M?&pHJTWs$$I3gHPR#s$6NKs$H`[s'#GAs+^QDs/Z1+s/5mes,d86
+s*4Q[s'5S.s&T.ts%WMbs$ZfNpHSI;hZ<N\rttD3mfEFgJH<XhblmhZq#p3oq#l7ts*fP!WW2tu
+U]5i~>
+JcFm4rr at WMJcC<$JcGbHs2=rWs2Y/]s2tAbs31Mfs3L_l_pRlNp\k*ls8DusS,NBas7u]hs7ZKc
+s*F]is*+Kds)e9\s).jQrG2FJs(VLHs(D at Ds(24 at s*4QfrHS>soa1Y#pKRMus&]/%q,mSss&T(u
+rD`Mio2P`iq,[;ks&8_krDWYos&JempJ^0Qqc2f[o2k`ibmF2#km@/Ul,*84rP8BHrP&6DrOi$>
+rOVs<rODm:s0hs8s0Vg4s0D[0s02O,s/uC(s/c*uql9UmmA5C6WW2tuU]5i~>
+JcFm4rr at WMJcC<$JcGb!Y<M?&pHJTWs$$I3gHPR#s$6NKs$H`[s'#GAs+^QDs/Z1+s/5mes,d86
+s*4Q[s'5S.s&T.ts%WMbs$ZfNpHSI;h_b.Ks5`ifmkk&"QSeLqq_nC3q`+O5rAOU5s#Bg7q)J=3
+rAsm;rAa[5q)87jqeuLMo4ml4o4n)%rFZ(Bs(;:HrG):Fs(MFFs(;3bs"XO-JU[WJJcD_LrrAho
+J,~>
+JcFm4rr at WMJcC<$JcGb!Y<M?&pHJTWs$$I3gHPR#s$6NKs$H`[s'#GAs+^QDs/Z1+s/5mes,d86
+s*4Q[s'5S.s&T.ts%WMbs$ZfNpHSI;hZ<N\rttD3mfEFgJH<XhblmhZq#p3oq#l7ts*fP!WW2tu
+U]5i~>
+JcFm4rr at WMJcC<$JcGbHs2=rWs2Y/]s2tAbs31Mfs3L_l_pRlNp\k*ls8DusS,NBas7u]hs7ZKc
+s*F]is*+Kds)e9\s).jQrG2FJs(VLHs(D at Ds(24 at s*4QfrHS>soa1Y#pKRMus&]/%q,mSss&T(u
+rD`Mio2P`iq,[;ks&8_krDWYos&JempJ^0Qqc2f[o2k`ibmF2#km@/Ul,*84rP8BHrP&6DrOi$>
+rOVs<rODm:s0hs8s0Vg4s0D[0s02O,s/uC(s/c*uql9UmmA5C6WW2tuU]5i~>
+JcFm4rr at WMJcC<$JcGb!Y<M?&pHJTWs$$I3gHPR#s$6NKs$H`[s'#GAs+^QDs/Z1+s/5mes,d86
+s*4Q[s'5S.s&T.ts%WMbs$ZfNpHSI;h_b.Ks5`ifmkk&"QSeLqq_nC3q`+O5rAOU5s#Bg7q)J=3
+rAsm;rAa[5q)87jqeuLMo4ml4o4n)%rFZ(Bs(;:HrG):Fs(MFFs(;3bs"XO-JU[WJJcD_LrrAho
+J,~>
+JcFm4rr at WMJcC<$MuWg+Y<LuqpHJTWrBC71gHPX%s$6TMs$QfSs$cras'PeDs*ap+rL<hJs+LDs
+s(q^Hs'bq4s&f;"s%iYes$m#Sq`t*EnNPn4rsSW>q#p-err at TNf)`VhpDEE'rrMcqJU[QHJcDSH
+rrAhoJ,~>
+JcFm4rr at WMJcC<$MuWgRs2=rVs2Y/\s2tAbs31Mgs3L_l_pRNDp\k*lrVccqSc/Tbs7lWgs7ZKc
+s7?9]s7-,3s)e9\s).jQs(hRJs(VLGs(;:BrFGk:s*+8nq$I"(pKIMus&SqtrE&qus&K"so2G<]
+rDWAhs&ASfrDWMkmo/CKq,RGqqc3)c^BsWhnHnkYs$m%)q830Jqni*DqnW0FrP&6DrOi$>rOVm:
+s1&*<s0hs8s0Vg4rNcI.s02O,s/uC(s/c*uql9[ol(rt2V>pPqU]5i~>
+JcFm4rr at WMJcC<$MuWg+Y<LuqpHJTWrBC71gHPX%s$6TMs$QfSs$cras'PeDs*ap+rL<hJs+LDs
+s(q^Hs'bq4s&f;"s%iYes$m#Sq`t*EnNPngs)Ikqq.f at Ts"]cprAF+'q_e=1s#9m7s#'[1q)/%+
+s#0mps)%^NrGDLLs(hFIs(gA(pK%*%qdoe<s"XI.rA+C-s"K"QrI0=tV>pPqU]5i~>
+JcFm4rr at WMJcC<$MuWg+Y<LuqpHJTWrBC71gHPX%s$6TMs$QfSs$cras'PeDs*ap+rL<hJs+LDs
+s(q^Hs'bq4s&f;"s%iYes$m#Sq`t*EnNPn4rsSW>q#p-err at TNf)`VhpDEE'rrMcqJU[QHJcDSH
+rrAhoJ,~>
+JcFm4rr at WMJcC<$MuWgRs2=rVs2Y/\s2tAbs31Mgs3L_l_pRNDp\k*lrVccqSc/Tbs7lWgs7ZKc
+s7?9]s7-,3s)e9\s).jQs(hRJs(VLGs(;:BrFGk:s*+8nq$I"(pKIMus&SqtrE&qus&K"so2G<]
+rDWAhs&ASfrDWMkmo/CKq,RGqqc3)c^BsWhnHnkYs$m%)q830Jqni*DqnW0FrP&6DrOi$>rOVm:
+s1&*<s0hs8s0Vg4rNcI.s02O,s/uC(s/c*uql9[ol(rt2V>pPqU]5i~>
+JcFm4rr at WMJcC<$MuWg+Y<LuqpHJTWrBC71gHPX%s$6TMs$QfSs$cras'PeDs*ap+rL<hJs+LDs
+s(q^Hs'bq4s&f;"s%iYes$m#Sq`t*EnNPngs)Ikqq.f at Ts"]cprAF+'q_e=1s#9m7s#'[1q)/%+
+s#0mps)%^NrGDLLs(hFIs(gA(pK%*%qdoe<s"XI.rA+C-s"K"QrI0=tV>pPqU]5i~>
+JcFm4rr at WMJcC<$Q2gf3[6E2kofiBUq`b%/gHPX%s$6TMrBgNOs%EAls'YkDs*Xj)s+C>qs)7pQ
+s(D at As'G_.s&K(qs%NG_s$QNGm69P2pDEc1mfEFgJH>-=Y6=S:o`Xdcs#u!_q0mnpU]:>oU]5i~>
+JcFm4rr at WMJcC<$Q2gfZs2=rVs2Y/\s2tAbs3:Shs3Sg6fDbIArrDrps8J_js82ils7lWgs7ZKc
+s7?9]s7--Xs6]i+s)%^Ms(_RJs(MFFs(;:Bs()(<rF5LUq[*"#qcWr$s&J_nrDieqmo00aoi(Zc
+mo&[Sqbm)cqc*Mmo2PHaY6jqXoa1@^qa^V$s1n$<q7umBs1\HFqn2m>rOVm:s1&$:s0hm5s0Ma2
+s0;O,s0)I*s/l7$rN#gqs/>gks/,1[JcDMFrrAhoJ,~>
+JcFm4rr at WMJcC<$Q2gf3[6E2kofiBUq`b%/gHPX%s$6TMrBgNOs%EAls'YkDs*Xj)s+C>qs)7pQ
+s(D at As'G_.s&K(qs%NG_s$QNGm69PepZ23dmkk&"JMd0Zq)/+-rG).D]5%(@q.BS:s"aI+r at n1'
+s#u!_q0mnpU]:>oU]5i~>
+JcFm4rr at WMJcC<$Q2gf3[6E2kofiBUq`b%/gHPX%s$6TMrBgNOs%EAls'YkDs*Xj)s+C>qs)7pQ
+s(D at As'G_.s&K(qs%NG_s$QNGm69P2pDEc1mfEFgJH>-=Y6=S:o`Xdcs#u!_q0mnpU]:>oU]5i~>
+JcFm4rr at WMJcC<$Q2gfZs2=rVs2Y/\s2tAbs3:Shs3Sg6fDbIArrDrps8J_js82ils7lWgs7ZKc
+s7?9]s7--Xs6]i+s)%^Ms(_RJs(MFFs(;:Bs()(<rF5LUq[*"#qcWr$s&J_nrDieqmo00aoi(Zc
+mo&[Sqbm)cqc*Mmo2PHaY6jqXoa1@^qa^V$s1n$<q7umBs1\HFqn2m>rOVm:s1&$:s0hm5s0Ma2
+s0;O,s0)I*s/l7$rN#gqs/>gks/,1[JcDMFrrAhoJ,~>
+JcFm4rr at WMJcC<$Q2gf3[6E2kofiBUq`b%/gHPX%s$6TMrBgNOs%EAls'YkDs*Xj)s+C>qs)7pQ
+s(D at As'G_.s&K(qs%NG_s$QNGm69PepZ23dmkk&"JMd0Zq)/+-rG).D]5%(@q.BS:s"aI+r at n1'
+s#u!_q0mnpU]:>oU]5i~>
+JcFm4rr at WMJcC<$TE"pTrI2FDaaWhFrrDjYs*iWbrBL0Es%<;js'G_=s)S-cs*"E^s)%dMs(24<
+s',M(s&/kks%35Ys$?NIjZ_o0r<2j3rrhckrr at lVR0<7$r<2?co0.eUJcDABrrAhoJ,~>
+JcFm4rr at WMJcC<$TE"qlrMBP3s2G#Xs2Y/]s3(Gds3CYkcdBl6oDS[hq>L?mU](5hs7u]is7cQe
+s7QE`s763Zs6p!Ts6BXIs5j8qs(VLHs(D at Ds(24 at rF>_6r<`3QrsAX-q-!Yus&]5"rE&eqrD_TO
+s&/_mlVdOWo2>*WR0iUBr<_^Xq8**FrP8*BqnW*Ds1\HFrOi*@qmu[8s1&$:s0hs8s0Vg4s0DU.
+rNQ=*s/uC(s/c1"ql9[qs/=tSJcDABrrAhoJ,~>
+JcFm4rr at WMJcC<$TE"pTrI2FDaaWhFrrDjYs*iWbrBL0Es%<;js'G_=s)S-cs*"E^s)%dMs(24<
+s',M(s&/kks%35Ys$?NIjZ_ocrG))fs(_!Zs"]EfR;2IsrFYdZq_A%'r at db+K78COTE"okU]5i~>
+JcFm4rr at WMJcC<$TE"pTrI2FDaaWhFrrDjYs*iWbrBL0Es%<;js'G_=s)S-cs*"E^s)%dMs(24<
+s',M(s&/kks%35Ys$?NIjZ_o0r<2j3rrhckrr at lVR0<7$r<2?co0.eUJcDABrrAhoJ,~>
+JcFm4rr at WMJcC<$TE"qlrMBP3s2G#Xs2Y/]s3(Gds3CYkcdBl6oDS[hq>L?mU](5hs7u]is7cQe
+s7QE`s763Zs6p!Ts6BXIs5j8qs(VLHs(D at Ds(24 at rF>_6r<`3QrsAX-q-!Yus&]5"rE&eqrD_TO
+s&/_mlVdOWo2>*WR0iUBr<_^Xq8**FrP8*BqnW*Ds1\HFrOi*@qmu[8s1&$:s0hs8s0Vg4s0DU.
+rNQ=*s/uC(s/c1"ql9[qs/=tSJcDABrrAhoJ,~>
+JcFm4rr at WMJcC<$TE"pTrI2FDaaWhFrrDjYs*iWbrBL0Es%<;js'G_=s)S-cs*"E^s)%dMs(24<
+s',M(s&/kks%35Ys$?NIjZ_ocrG))fs(_!Zs"]EfR;2IsrFYdZq_A%'r at db+K78COTE"okU]5i~>
+JcFm4rr at WMJcC<$VuQc\rI2^L^OGQ6rrDdWs*iK^q`k*Ls%iYts'l"Es)e9^s)7pQs(D@@s'G_.
+s&B"os%<;\qa(6Hh`gK0q#pL1mfEFgY5s1Wq#pL1rsRohk<=rUJcD/<rrAhoJ,~>
+JcFm4rr at WMJcC<$VuQdsrMBP2s24lUs2P)[s2tAbs3:SirQs<H^]+91n,<7dp\k-kVu?Yms8)ck
+s7lWgs7ZKbs7?9]s7$'Vs6]jOs5s:@s5X.<s(;:Bs()(<qdTS6q$HjOq-!YurE'#"s&A_ns&@fQ
+hbo"3q$HjOs&o at jk=59_s2"`Ns1\NJn\G+<s1\HFs1J<Bqmua:qmc[8rO2a6s0Vg4s0DU.rNQ7(
+s/uC(s/c1"rMogqs/>spje[P.RK*9eU]5i~>
+JcFm4rr at WMJcC<$VuQc\rI2^L^OGQ6rrDdWs*iK^q`k*Ls%iYts'l"Es)e9^s)7pQs(D@@s'G_.
+s&B"os%<;\qa(6Hh`gKcq.f`dmkk&"Y;CfFq.f_+s!mUqq_A%'s"FC)k<=rUJcD/<rrAhoJ,~>
+JcFm4rr at WMJcC<$VuQc\rI2^L^OGQ6rrDdWs*iK^q`k*Ls%iYts'l"Es)e9^s)7pQs(D@@s'G_.
+s&B"os%<;\qa(6Hh`gK0q#pL1mfEFgY5s1Wq#pL1rsRohk<=rUJcD/<rrAhoJ,~>
+JcFm4rr at WMJcC<$VuQdsrMBP2s24lUs2P)[s2tAbs3:SirQs<H^]+91n,<7dp\k-kVu?Yms8)ck
+s7lWgs7ZKbs7?9]s7$'Vs6]jOs5s:@s5X.<s(;:Bs()(<qdTS6q$HjOq-!YurE'#"s&A_ns&@fQ
+hbo"3q$HjOs&o at jk=59_s2"`Ns1\NJn\G+<s1\HFs1J<Bqmua:qmc[8rO2a6s0Vg4s0DU.rNQ7(
+s/uC(s/c1"rMogqs/>spje[P.RK*9eU]5i~>
+JcFm4rr at WMJcC<$VuQc\rI2^L^OGQ6rrDdWs*iK^q`k*Ls%iYts'l"Es)e9^s)7pQs(D@@s'G_.
+s&B"os%<;\qa(6Hh`gKcq.f`dmkk&"Y;CfFq.f_+s!mUqq_A%'s"FC)k<=rUJcD/<rrAhoJ,~>
+JcFm4rr at WMJcC<$XoJ9Ibs&Uck<AnGofi>'f09!ps%35gs'5S9s(q^Ts)%dLs().;s',M(s&&ei
+s%!)VrB]+#o)\Ler>>J at o)\jklN)P>`<?2ApC$-bffkmSs#u#6Q2gjaU]5i~>
+JcFm4rr at WMJcC<$XoJ9ps2+fRs2G#Xs2b5_s3(GerQkMjj3b at 8s7ZKfs8)cnn,<7dp&4jgX8W(q
+s8)cks7lWgs7ZKbs7?9\s7$'Vs6TdNs5s at Bs5X.=s5F"8s5*cdrF>e8rF,@*rA"=hs(qX9rE&ks
+s&8Yloi$DJ`<lQ4pK7A^s$crUpI4mIn\G1>s1SHHs1eBFs1eNHs1SHFs1A0>s1/$:q7$=2s0_m6
+s0M[0s0;O,s0)C(rN6+$s/Z*uql0Uns/+nSs,;O/Q2gjaU]5i~>
+JcFm4rr at WMJcC<$XoJ9Ibs&Uck<AnGofi>'f09!ps%35gs'5S9s(q^Ts)%dLs().;s',M(s&&ei
+s%!)VrB]+#o/-,TrT*oso/-J&lSO0-`G5E0pF>\grA"7)s"E%hRstB$JcD#8rrAhoJ,~>
+JcFm4rr at WMJcC<$XoJ9Ibs&Uck<AnGofi>'f09!ps%35gs'5S9s(q^Ts)%dLs().;s',M(s&&ei
+s%!)VrB]+#o)\Ler>>J at o)\jklN)P>`<?2ApC$-bffkmSs#u#6Q2gjaU]5i~>
+JcFm4rr at WMJcC<$XoJ9ps2+fRs2G#Xs2b5_s3(GerQkMjj3b at 8s7ZKfs8)cnn,<7dp&4jgX8W(q
+s8)cks7lWgs7ZKbs7?9\s7$'Vs6TdNs5s at Bs5X.=s5F"8s5*cdrF>e8rF,@*rA"=hs(qX9rE&ks
+s&8Yloi$DJ`<lQ4pK7A^s$crUpI4mIn\G1>s1SHHs1eBFs1eNHs1SHFs1A0>s1/$:q7$=2s0_m6
+s0M[0s0;O,s0)C(rN6+$s/Z*uql0Uns/+nSs,;O/Q2gjaU]5i~>
+JcFm4rr at WMJcC<$XoJ9Ibs&Uck<AnGofi>'f09!ps%35gs'5S9s(q^Ts)%dLs().;s',M(s&&ei
+s%!)VrB]+#o/-,TrT*oso/-J&lSO0-`G5E0pF>\grA"7)s"E%hRstB$JcD#8rrAhoJ,~>
+JcFm4rr at WMJcC<$[K$7jrI33ZZ[U^orrDRQs*iK^q`k*Js%NGns'Pe;s(hXLs(;:?s'>Y,s&8qm
+s%35Ys$>C'pO;?0q&&i/rr at TQ^BF93pC$'`b<DnSs#u#6O8o4[U]5i~>
+JcFm4rr at WMJcC<$[K$9+rMBP0s2"`Qs2=rWs2Y/]s3(GerQkGhmEr9>s7--[s7?9_s7QEds7u]l
+mJ[%bnbrLeYPnM!s82ims7u]is7cQes7H?^s7--Xs6fpRs69RGs5X.=s5F"9p\sC`q(_UMrrdlZ
+^Bsd)rC$B^m6pnAs$ZlUrP.m<s1eTHs1SHHs1nZKs1SHFs186 at qmcO4s0hm8q6p70s0Vg4rNcI.
+rNQ7(s/u=&rN-%"rMogqs/>sqs/+nSs,Va2O8o4[U]5i~>
+JcFm4rr at WMJcC<$[K$7jrI33ZZ[U^orrDRQs*iK^q`k*Js%NGns'Pe;s(hXLs(;:?s'>Y,s&8qm
+s%35Ys$>C'pO;@Aq;h9bs(-ar^M<L"pF>\gq_A%'s"DPZWIFk2JcCf2rrAhoJ,~>
+JcFm4rr at WMJcC<$[K$7jrI33ZZ[U^orrDRQs*iK^q`k*Js%NGns'Pe;s(hXLs(;:?s'>Y,s&8qm
+s%35Ys$>C'pO;?0q&&i/rr at TQ^BF93pC$'`b<DnSs#u#6O8o4[U]5i~>
+JcFm4rr at WMJcC<$[K$9+rMBP0s2"`Qs2=rWs2Y/]s3(GerQkGhmEr9>s7--[s7?9_s7QEds7u]l
+mJ[%bnbrLeYPnM!s82ims7u]is7cQes7H?^s7--Xs6fpRs69RGs5X.=s5F"9p\sC`q(_UMrrdlZ
+^Bsd)rC$B^m6pnAs$ZlUrP.m<s1eTHs1SHHs1nZKs1SHFs186 at qmcO4s0hm8q6p70s0Vg4rNcI.
+rNQ7(s/u=&rN-%"rMogqs/>sqs/+nSs,Va2O8o4[U]5i~>
+JcFm4rr at WMJcC<$[K$7jrI33ZZ[U^orrDRQs*iK^q`k*Js%NGns'Pe;s(hXLs(;:?s'>Y,s&8qm
+s%35Ys$>C'pO;@Aq;h9bs(-ar^M<L"pF>\gq_A%'s"DPZWIFk2JcCf2rrAhoJ,~>
+JcFm4rr at WMJcC<$]DqmprI3E`Z[UXmrBL0CrrDLOs*iE\q`k*Ms%r_ss'>Y8s(MFCs'Pe0s&K(q
+s%EA]s$?BCdsgZeq&&u3rr at TQcNNV9pC$-b]0<]QrB>f4MuWeWU]5i~>
+JcFm4rr at WMJcC<$]Dqo0rMBP/s1nZOs24lUs2Y/]s3(Ges3CYjrQt/`Zi9^fs7--[s7?9_s7QEc
+s7lWjs8;9_rrDNds8K;%s8;oos8)cks7k(Bm0WSCq[*9*JI0X/rB^0Eqa:6^rE/YZs$HTMrC$\"
+qn;sBs1SHFq7Zg=s1&*@s1/0>l*gJsq6^+,s0D[0rNQ7(s/u=&rN,sus/Q$ss/>moj/)d<s,M[1
+MuWeWU]5i~>
+JcFm4rr at WMJcC<$]DqmprI3E`Z[UXmrBL0CrrDLOs*iE\q`k*Ms%r_ss'>Y8s(MFCs'Pe0s&K(q
+s%EA]s$?BCdsg\!q;hEfs(-arcYDi(pF>\grA"7)s"CuJ[sn9>JcCZ.rrAhoJ,~>
+JcFm4rr at WMJcC<$]DqmprI3E`Z[UXmrBL0CrrDLOs*iE\q`k*Ms%r_ss'>Y8s(MFCs'Pe0s&K(q
+s%EA]s$?BCdsgZeq&&u3rr at TQcNNV9pC$-b]0<]QrB>f4MuWeWU]5i~>
+JcFm4rr at WMJcC<$]Dqo0rMBP/s1nZOs24lUs2Y/]s3(Ges3CYjrQt/`Zi9^fs7--[s7?9_s7QEc
+s7lWjs8;9_rrDNds8K;%s8;oos8)cks7k(Bm0WSCq[*9*JI0X/rB^0Eqa:6^rE/YZs$HTMrC$\"
+qn;sBs1SHFq7Zg=s1&*@s1/0>l*gJsq6^+,s0D[0rNQ7(s/u=&rN,sus/Q$ss/>moj/)d<s,M[1
+MuWeWU]5i~>
+JcFm4rr at WMJcC<$]DqmprI3E`Z[UXmrBL0CrrDLOs*iE\q`k*Ms%r_ss'>Y8s(MFCs'Pe0s&K(q
+s%EA]s$?BCdsg\!q;hEfs(-arcYDi(pF>\grA"7)s"CuJ[sn9>JcCZ.rrAhoJ,~>
+JcFm4rr at WMJcC<$_>jO!qgRKf[=6 at aq`k$CrrDFMrI39\q`k*Gs%<;fs&T/)s'l":s'>Y,s&8q_
+^OGVSpDEo1JHY';hZ<HZk5hVIbC91LJcCH(rrAhoJ,~>
+JcFm4rr at WMJcC<$_>jP5qka>-s2"`Ps24lVs2b5_s31Mfs3CYjrQtGh[Jp3iq<@kDqsOFOs7--[
+s7?9_s7ZKes7u]lli$h`mJ["_\c';Bmg8_CrrdlZjU(*9q*OsZrE&k`o0iUErBgCprOi*@s1JBD
+s1/0>qmZO4s0r$>s1&*<qmHC2o<nJ&rNlO0rNZC,qlg%&rN6%"rN#mss/Gsqs/5mol)"EGs-<VK
+s-!DDJcCH(rrAhoJ,~>
+JcFm4rr at WMJcC<$_>jO!qgRKf[=6 at aq`k$CrrDFMrI39\q`k*Gs%<;fs&T/)s'l":s'>Y,s&8q_
+^OGWdpZ2?cJSO:]h_b'Ws"j7%q_A%'X$4^UpHF0.L&_/QU]5i~>
+JcFm4rr at WMJcC<$_>jO!qgRKf[=6 at aq`k$CrrDFMrI39\q`k*Gs%<;fs&T/)s'l":s'>Y,s&8q_
+^OGVSpDEo1JHY';hZ<HZk5hVIbC91LJcCH(rrAhoJ,~>
+JcFm4rr at WMJcC<$_>jP5qka>-s2"`Ps24lVs2b5_s31Mfs3CYjrQtGh[Jp3iq<@kDqsOFOs7--[
+s7?9_s7ZKes7u]lli$h`mJ["_\c';Bmg8_CrrdlZjU(*9q*OsZrE&k`o0iUErBgCprOi*@s1JBD
+s1/0>qmZO4s0r$>s1&*<qmHC2o<nJ&rNlO0rNZC,qlg%&rN6%"rN#mss/Gsqs/5mol)"EGs-<VK
+s-!DDJcCH(rrAhoJ,~>
+JcFm4rr at WMJcC<$_>jO!qgRKf[=6 at aq`k$CrrDFMrI39\q`k*Gs%<;fs&T/)s'l":s'>Y,s&8q_
+^OGWdpZ2?cJSO:]h_b'Ws"j7%q_A%'X$4^UpHF0.L&_/QU]5i~>
+JcFm4rr at WMJcC<$a8c0'qgRWj]7.LYpHS[ArrD:Is*iE\q`k*Is$m#[s%NGfYC?!Er>>P7rtp:i
+rrgRIpC$3dV`sj(b<CLWJcG`MU]5i~>
+JcFm4rr at WMJcC<$a8c17qka>,s1eTMs2+fSs2P)[s3(Gds3:Shs3L_ls3\IXrTF"?q<@kCs6KRK
+q<n:Rs7?9_s7QEds7lWkl2CV^l2CY]_u6e<nHo.KrttbjJI2>_lTb&-mm6tRs&AkqrBg<IpI,$H
+s180 at qn2s@rOVs<rOD[4qmQO7s0r$:s0M7'qm?=.s0DU.s02O,rN?%"rN-%"rM]aos/,gms.o[i
+s.]Oeqk*hYs.0+Ys-s%Ws-WhQs-E\Ms-3PIs,m>AJcC<$rrAhoJ,~>
+JcFm4rr at WMJcC<$a8c0'qgRWj]7.LYpHS[ArrD:Is*iE\q`k*Is$m#[s%NGfYC?"VrT+"&s5\`G
+s(]e8pF?+toeQJ#r at k-5pO::LJcC<$rrAhoJ,~>
+JcFm4rr at WMJcC<$a8c0'qgRWj]7.LYpHS[ArrD:Is*iE\q`k*Is$m#[s%NGfYC?!Er>>P7rtp:i
+rrgRIpC$3dV`sj(b<CLWJcG`MU]5i~>
+JcFm4rr at WMJcC<$a8c17qka>,s1eTMs2+fSs2P)[s3(Gds3:Shs3L_ls3\IXrTF"?q<@kCs6KRK
+q<n:Rs7?9_s7QEds7lWkl2CV^l2CY]_u6e<nHo.KrttbjJI2>_lTb&-mm6tRs&AkqrBg<IpI,$H
+s180 at qn2s@rOVs<rOD[4qmQO7s0r$:s0M7'qm?=.s0DU.s02O,rN?%"rN-%"rM]aos/,gms.o[i
+s.]Oeqk*hYs.0+Ys-s%Ws-WhQs-E\Ms-3PIs,m>AJcC<$rrAhoJ,~>
+JcFm4rr at WMJcC<$a8c0'qgRWj]7.LYpHS[ArrD:Is*iE\q`k*Is$m#[s%NGfYC?"VrT+"&s5\`G
+s(]e8pF?+toeQJ#r at k-5pO::LJcC<$rrAhoJ,~>
+JcFm4rr at WMJcC<$c2[`+rI3up_1&ROofrHVs$,a3s*i9Xq`gj)rri?=q#p]tq&#k0\H2 at 2klIVE
+pO::LJcC<$qu?ZrU]5i~>
+JcFm4rr at WMJcC<$c2[g9s/,aks1SHHs1nZNs24lUs2b5_s31Mfs3CYks8;oq`W#Voq<._?q<@eA
+s6KXMrU'RMs6]dQs763^s7QEcs7lWjs8;-[rrD6\s8L.=U]19"s"X<Urri-PUC$6Ls$$<Eq`ag?
+rBC$Aq*=aAq,RGos&8e[rB^HMrB^HMrBpTQrP&6 at s18*>s180>q7-C4osXn0s0hs7s0;U2qmH7,
+rNlO0s0;U.s0)I*rN5suq5aOorMT[ms/#aks.fUgs.K7]rLWtYs.'+Ys-itUs-WhQs-E\Ms-3PH
+s,_g3JcGWIrrAhoJ,~>
+JcFm4rr at WMJcC<$c2[`+rI3up_1&ROofrHVs$,a3s*i9Xq`gj)s(_R7q.fq at q;e;c\MWt/rA4+%
+rA"7)V*=X&b<CLWJcGWIrrAhoJ,~>
+JcFm4rr at WMJcC<$c2[`+rI3up_1&ROofrHVs$,a3s*i9Xq`gj)rri?=q#p]tq&#k0\H2 at 2klIVE
+pO::LJcC<$qu?ZrU]5i~>
+JcFm4rr at WMJcC<$c2[g9s/,aks1SHHs1nZNs24lUs2b5_s31Mfs3CYks8;oq`W#Voq<._?q<@eA
+s6KXMrU'RMs6]dQs763^s7QEcs7lWjs8;-[rrD6\s8L.=U]19"s"X<Urri-PUC$6Ls$$<Eq`ag?
+rBC$Aq*=aAq,RGos&8e[rB^HMrB^HMrBpTQrP&6 at s18*>s180>q7-C4osXn0s0hs7s0;U2qmH7,
+rNlO0s0;U.s0)I*rN5suq5aOorMT[ms/#aks.fUgs.K7]rLWtYs.'+Ys-itUs-WhQs-E\Ms-3PH
+s,_g3JcGWIrrAhoJ,~>
+JcFm4rr at WMJcC<$c2[`+rI3up_1&ROofrHVs$,a3s*i9Xq`gj)s(_R7q.fq at q;e;c\MWt/rA4+%
+rA"7)V*=X&b<CLWJcGWIrrAhoJ,~>
+JcFm4rr at WMJcC<$dJs51qgRora*sdIo0<6TrBKO1rI3-XQ[\l9rrDp!q&%WbPl^UeklIJAomY(J
+JcC<$p](6nU]5i~>
+JcFm4rr at WMJcC<$dJs6Aqka>+s1\NJs2"`Rs2P)\s3(Ges3CZAs8;oqc2R=ss6'FEs6':Aqre"C
+s69 at Eqs4:KrU'ROq<e4Ms7?9_s7ZKes7u]ls8;-[rrD0ZrVk4CQi?pirri3*q(^D+pGr%1nN6b3
+rB($BpH877q`Og?mlpb7q`amAq`t0\q,RAZs#p<ErBL6Gs$-NIs#pCls1/0 at s1A6:rO;U2s0r$<
+s0qU.s0_U0s0_m5s02O0rO)U2s0Ma2s0;U.s0)I)rN,[mq5XIms/,aks.fUgs.TIcq4IVWs.01[
+s-s%Ws-`nSs-NbOs-<VKs-*JFs,M[1JcGKErrAhoJ,~>
+JcFm4rr at WMJcC<$dJs51qgRora*sdIo0<6TrBKO1rI3-XQ[\mJs(2(Bq;g(@Pr/4bpG;V#rA"=+
+Tg&-ub<CLWJcGKErrAhoJ,~>
+JcFm4rr at WMJcC<$dJs51qgRora*sdIo0<6TrBKO1rI3-XQ[\l9rrDp!q&%WbPl^UeklIJAomY(J
+JcC<$p](6nU]5i~>
+JcFm4rr at WMJcC<$dJs6Aqka>+s1\NJs2"`Rs2P)\s3(Ges3CZAs8;oqc2R=ss6'FEs6':Aqre"C
+s69 at Eqs4:KrU'ROq<e4Ms7?9_s7ZKes7u]ls8;-[rrD0ZrVk4CQi?pirri3*q(^D+pGr%1nN6b3
+rB($BpH877q`Og?mlpb7q`amAq`t0\q,RAZs#p<ErBL6Gs$-NIs#pCls1/0 at s1A6:rO;U2s0r$<
+s0qU.s0_U0s0_m5s02O0rO)U2s0Ma2s0;U.s0)I)rN,[mq5XIms/,aks.fUgs.TIcq4IVWs.01[
+s-s%Ws-`nSs-NbOs-<VKs-*JFs,M[1JcGKErrAhoJ,~>
+JcFm4rr at WMJcC<$dJs51qgRora*sdIo0<6TrBKO1rI3-XQ[\mJs(2(Bq;g(@Pr/4bpG;V#rA"=+
+Tg&-ub<CLWJcGKErrAhoJ,~>
+JcFm4rr at WMJcC<$fDke5rI43!c$kpAq*4gCs$-M`q*4+-s*iK^PCENqrrE!]pAt'tJH>WKoaC'd
+[6FV>ks"ijb<CLWJcG9?rrAhoJ,~>
+JcFm4rr at WMJcC<$fDklBs.oUis1A<Ds1\NJs2+fSs2Y/^s31N=s8)cms8:FHs5iq9n)s`7rTF.A
+rTF4FrTa:GrTsLMs6fdQq<n:Os7?9`s7cQhs8)cnkPbD\iVifUebt^2s0DZHrNlA^rAjgNrCc02
+s#Tg5ofDn1rAsm;s#U*?nN?\1rB0s?q*+a?s#g<Eq*+gWs&/kos&/kqs&B"`qa(0CrB:$As0r$:
+rO)O0qm6=2rO)[4s0Ma2q6Tn(n[8D(s0;U-s0D[3s0Ma1s0)I)s/YCarMfgps/,gms.o[is.]Oe
+rLj%[rLX%[rLEnWs-itUs-WhQs-E\Ms-3PHs,_g3JcG9?rrAhoJ,~>
+JcFm4rr at WMJcC<$fDke5rI43!c$kpAq*4gCs$-M`q*4+-s*iK^PCENqrrE!]pGD\cJMd6\od]bn
+q(hn's"LiEs*j2rpO::LJcC<$nc/UhU]5i~>
+JcFm4rr at WMJcC<$fDke5rI43!c$kpAq*4gCs$-M`q*4+-s*iK^PCENqrrE!]pAt'tJH>WKoaC'd
+[6FV>ks"ijb<CLWJcG9?rrAhoJ,~>
+JcFm4rr at WMJcC<$fDklBs.oUis1A<Ds1\NJs2+fSs2Y/^s31N=s8)cms8:FHs5iq9n)s`7rTF.A
+rTF4FrTa:GrTsLMs6fdQq<n:Os7?9`s7cQhs8)cnkPbD\iVifUebt^2s0DZHrNlA^rAjgNrCc02
+s#Tg5ofDn1rAsm;s#U*?nN?\1rB0s?q*+a?s#g<Eq*+gWs&/kos&/kqs&B"`qa(0CrB:$As0r$:
+rO)O0qm6=2rO)[4s0Ma2q6Tn(n[8D(s0;U-s0D[3s0Ma1s0)I)s/YCarMfgps/,gms.o[is.]Oe
+rLj%[rLX%[rLEnWs-itUs-WhQs-E\Ms-3PHs,_g3JcG9?rrAhoJ,~>
+JcFm4rr at WMJcC<$fDke5rI43!c$kpAq*4gCs$-M`q*4+-s*iK^PCENqrrE!]pGD\cJMd6\od]bn
+q(hn's"LiEs*j2rpO::LJcC<$nc/UhU]5i~>
+JcFm4rr at WMJcC<$g].:;qgS-#d=.!;pHS[Ds$H`OrrDdXks#&pffm<&ofhtrks#+Io02sNq$W/_
+oaC-fPs4kibs$^YJcG'9rrAhoJ,~>
+JcFm4rr at WMJcC<$g].;Hqka>)s1JBGs1nZOs2G#Zs7ZKfs7u]ks8;oqh>[$-qr[_;oB?/;rTO4C
+s5s at Es6BLIqs=@MrU0^SrUBdSs7--[s7H9_s7ZKfs8)]lkPbD\hu3NQg&8hfosjVmn[&%ss)\.E
+s0M[0rNZ5Xs#9sNqb6B:mlBo!rAjg9s#L$=q`F[;q`Fg=q`Fa=of`17rDESmrDESkrB($As#pBG
+s$-NKs$$BCqmH=0rO)I.qm6=1rNuU2s0;$urNlC,rNlO-s/c7&s/uC's/Ysqs/GOgql0OmrMBOi
+rM'7as.K1[s.91[rLEnWs-itUs-WhQs-<VKs-*JFJcC<$li6tbU]5i~>
+JcFm4rr at WMJcC<$g].:;qgS-#d=.!;pHS[Ds$H`OrrDdXks#&pffm<&ofhtrks#+Io02t,q/MBN
+od]bnq(ht)s"K^%omY.LJcC<$li6tbU]5i~>
+JcFm4rr at WMJcC<$g].:;qgS-#d=.!;pHS[Ds$H`OrrDdXks#&pffm<&ofhtrks#+Io02sNq$W/_
+oaC-fPs4kibs$^YJcG'9rrAhoJ,~>
+JcFm4rr at WMJcC<$g].;Hqka>)s1JBGs1nZOs2G#Zs7ZKfs7u]ks8;oqh>[$-qr[_;oB?/;rTO4C
+s5s at Es6BLIqs=@MrU0^SrUBdSs7--[s7H9_s7ZKfs8)]lkPbD\hu3NQg&8hfosjVmn[&%ss)\.E
+s0M[0rNZ5Xs#9sNqb6B:mlBo!rAjg9s#L$=q`F[;q`Fg=q`Fa=of`17rDESmrDESkrB($As#pBG
+s$-NKs$$BCqmH=0rO)I.qm6=1rNuU2s0;$urNlC,rNlO-s/c7&s/uC's/Ysqs/GOgql0OmrMBOi
+rM'7as.K1[s.91[rLEnWs-itUs-WhQs-<VKs-*JFJcC<$li6tbU]5i~>
+JcFm4rr at WMJcC<$g].:;qgS-#d=.!;pHS[Ds$H`OrrDdXks#&pffm<&ofhtrks#+Io02t,q/MBN
+od]bnq(ht)s"K^%omY.LJcC<$li6tbU]5i~>
+JcFm4rr at WMJcC<$iW&j?rI4E'eUE'5pHS[Cs$HZOrrE'apHRh)s*icff7)[Bo7#jdrrD.Er;ld'
+T`Olqm/`21omY(JJcC<$kPtP^U]5i~>
+JcFm4rr at WMJcC<$iW&qJs.TCfs1/0As1JBGs2"`Rs763^s7ZKfs7u]ls8:pVoB-#5rT=(?qr[qA
+n`]r9rTa at Gq<7kDqs=:KrU0^SrUBdUs7?9_s7QEcrV-?cs7cQhs82iojo,2Zg\q0Oh>Pt)s2b5[
+s2=rTs2+fPs1eTJqn)g9qmc7ss0;O.q6Tb"s)\4Fs0DU.rNQ1&rNQ7*s0DS_qb6lHq`"O7m5b,+
+q`4U7rAXU6rAs[7rAss=rAsg;s#g<CrAssRq+q#Qs#pBErB($?rAjg9rNZ=*rNlO0qm$1,s0M[2
+s0Ma2pTsh*s0Ma1s0)I,rNZC.rNZ1&s0)I)qlK[qs/c7&s/c7$ql9[qs/>mrql0Uqql0Uos/5mn
+s.o[iqkF+arLj+]rLWtYrLEnWs-itUs-WhQs-E\Ms-*JGs,Va2JcFp5rrAhoJ,~>
+JcFm4rr at WMJcC<$iW&j?rI4E'eUE'5pHS[Cs$HZOrrE'apHRh)s*icff7)[Bo7#jdrrD.ErA=Ck
+TeuKnpG;V#s"TKsomY(JJcC<$kPtP^U]5i~>
+JcFm4rr at WMJcC<$iW&j?rI4E'eUE'5pHS[Cs$HZOrrE'apHRh)s*icff7)[Bo7#jdrrD.Er;ld'
+T`Olqm/`21omY(JJcC<$kPtP^U]5i~>
+JcFm4rr at WMJcC<$iW&qJs.TCfs1/0As1JBGs2"`Rs763^s7ZKfs7u]ls8:pVoB-#5rT=(?qr[qA
+n`]r9rTa at Gq<7kDqs=:KrU0^SrUBdUs7?9_s7QEcrV-?cs7cQhs82iojo,2Zg\q0Oh>Pt)s2b5[
+s2=rTs2+fPs1eTJqn)g9qmc7ss0;O.q6Tb"s)\4Fs0DU.rNQ1&rNQ7*s0DS_qb6lHq`"O7m5b,+
+q`4U7rAXU6rAs[7rAss=rAsg;s#g<CrAssRq+q#Qs#pBErB($?rAjg9rNZ=*rNlO0qm$1,s0M[2
+s0Ma2pTsh*s0Ma1s0)I,rNZC.rNZ1&s0)I)qlK[qs/c7&s/c7$ql9[qs/>mrql0Uqql0Uos/5mn
+s.o[iqkF+arLj+]rLWtYrLEnWs-itUs-WhQs-E\Ms-*JGs,Va2JcFp5rrAhoJ,~>
+JcFm4rr at WMJcC<$iW&j?rI4E'eUE'5pHS[Cs$HZOrrE'apHRh)s*icff7)[Bo7#jdrrD.ErA=Ck
+TeuKnpG;V#s"TKsomY(JJcC<$kPtP^U]5i~>
+JcFm4rr at WMJcC<$jo>?EqgS9'fm\K9pHJ=9s$6TNrC$Ycs$H`Os$6BEk<AiniBH4LffnqTk<AnG
+eNX!5r<p:>oaC9jJNj)tpO::LJcC<$iW&oXU]5i~>
+JcFm4rr at WMJcC<$jo>@Pqka>'s186Ds1eTNs7$'Zs7QEcs7lWjs82ipl2L#3mH4H4oBH5=rTj at G
+s6K^OrU'XOqsF at MrU9dUs7-'Ys7?9_s7QEcs7cQgrV-?fs8)cnj8JuXg&:mKiVha7s4%(qs3:Se
+s2k;]s2G#Vs24lQs1nZKs17s8rO;=rs02I,n$;tus)Iq?rNH+$rNH1(rNZ1(s0;O,s0)GWs%35_
+s#9s;nN$P+pG`%/s#9s;rAjm=s#Km7rAjm;rAjgOrD!;cs%EAMs#9m9s#L*=s#'g7rNuU2rNcC,
+s0DU.rNQ7+s0;O,rNH1(s0;=(s0M[0s0Ma1s/l=(s0)I,s0;O,s0)C(rN6%"orItks/Z*us/H$s
+s/5Ohs/>sqs/,UerM'7arLj+]rLWtYrLEnWs-itUs-WhPs-<VKs-!DEJcC<$iW&oXU]5i~>
+JcFm4rr at WMJcC<$jo>?EqgS9'fm\K9pHJ=9s$6TNrC$Ycs$H`Os$6BEk<AiniBH4LffnqTk<AnG
+eNX!hrGfM-od]\lq_E^ds$$1+b<CLWJcF^/rrAhoJ,~>
+JcFm4rr at WMJcC<$jo>?EqgS9'fm\K9pHJ=9s$6TNrC$Ycs$H`Os$6BEk<AiniBH4LffnqTk<AnG
+eNX!5r<p:>oaC9jJNj)tpO::LJcC<$iW&oXU]5i~>
+JcFm4rr at WMJcC<$jo>@Pqka>'s186Ds1eTNs7$'Zs7QEcs7lWjs82ipl2L#3mH4H4oBH5=rTj at G
+s6K^OrU'XOqsF at MrU9dUs7-'Ys7?9_s7QEcs7cQgrV-?fs8)cnj8JuXg&:mKiVha7s4%(qs3:Se
+s2k;]s2G#Vs24lQs1nZKs17s8rO;=rs02I,n$;tus)Iq?rNH+$rNH1(rNZ1(s0;O,s0)GWs%35_
+s#9s;nN$P+pG`%/s#9s;rAjm=s#Km7rAjm;rAjgOrD!;cs%EAMs#9m9s#L*=s#'g7rNuU2rNcC,
+s0DU.rNQ7+s0;O,rNH1(s0;=(s0M[0s0Ma1s/l=(s0)I,s0;O,s0)C(rN6%"orItks/Z*us/H$s
+s/5Ohs/>sqs/,UerM'7arLj+]rLWtYrLEnWs-itUs-WhPs-<VKs-!DEJcC<$iW&oXU]5i~>
+JcFm4rr at WMJcC<$jo>?EqgS9'fm\K9pHJ=9s$6TNrC$Ycs$H`Os$6BEk<AiniBH4LffnqTk<AnG
+eNX!hrGfM-od]\lq_E^ds$$1+b<CLWJcF^/rrAhoJ,~>
+JcFm4rr at WMJcC<$l2UcIrI4K)h0so=mlpD/s$?ZPs$crWrrE'es$Q`QrBgNMs$6TKk<Aopj$)^V
+d6@/NjZ`\E\N]Nam0ipprsSW'JNiB`pO::LJcC<$g].9RU]5i~>
+JcFm4rr at WMJcC<$l2UdTrMBP's1/0As1\NLs6fpWs7?9`s7ZKfs8)cnmJcA5qrmk=s60LGq<%_?
+p$)G?rTj at Is6fjSrUBjUq<n4Ms7$'YrUTpYs7H?as7ZKeq=t!ds8:jSrrCUJs8M'Wl2L_Gs5X.:
+s4[M(s3gqms2tA_s2P)Xs24lRs2"`Ks1&*;o=+>js/u=(s02I,q6L%)s0)C's)7_9qlTn$qlft&
+s0;I*rNH7(qlTn$s0)I,s0;U0q6U+(s/l7&nMU8=rCd/_rCR#[s%35_s#0mMq_eC5rNZ=*rNH7*
+s0;U.s/l*us/l=+s02I*s02I,rNQ7*rNQ7&s/u7&rNQ=*s02I,qm-7(s/c7&s/uC+s0)I*s/l=&
+rN#t"rN#OiqlBasrMfgqs/5mnql0Unqka=gq4mn_rLs7arLa%[qjmbWs-s%Ws-`nSs-NbOs-<VJ
+s,hm4JcFL)rrAhoJ,~>
+JcFm4rr at WMJcC<$l2UcIrI4K)h0so=mlpD/s$?ZPs$crWrrE'es$Q`QrBgNMs$6TKk<Aopj$)^V
+d6@/NjZ`\E\N]O?m4/,ls(V9aJNiB`pO::LJcC<$g].9RU]5i~>
+JcFm4rr at WMJcC<$l2UcIrI4K)h0so=mlpD/s$?ZPs$crWrrE'es$Q`QrBgNMs$6TKk<Aopj$)^V
+d6@/NjZ`\E\N]Nam0ipprsSW'JNiB`pO::LJcC<$g].9RU]5i~>
+JcFm4rr at WMJcC<$l2UdTrMBP's1/0As1\NLs6fpWs7?9`s7ZKfs8)cnmJcA5qrmk=s60LGq<%_?
+p$)G?rTj at Is6fjSrUBjUq<n4Ms7$'YrUTpYs7H?as7ZKeq=t!ds8:jSrrCUJs8M'Wl2L_Gs5X.:
+s4[M(s3gqms2tA_s2P)Xs24lRs2"`Ks1&*;o=+>js/u=(s02I,q6L%)s0)C's)7_9qlTn$qlft&
+s0;I*rNH7(qlTn$s0)I,s0;U0q6U+(s/l7&nMU8=rCd/_rCR#[s%35_s#0mMq_eC5rNZ=*rNH7*
+s0;U.s/l*us/l=+s02I*s02I,rNQ7*rNQ7&s/u7&rNQ=*s02I,qm-7(s/c7&s/uC+s0)I*s/l=&
+rN#t"rN#OiqlBasrMfgqs/5mnql0Unqka=gq4mn_rLs7arLa%[qjmbWs-s%Ws-`nSs-NbOs-<VJ
+s,hm4JcFL)rrAhoJ,~>
+JcFm4rr at WMJcC<$l2UcIrI4K)h0so=mlpD/s$?ZPs$crWrrE'es$Q`QrBgNMs$6TKk<Aopj$)^V
+d6@/NjZ`\E\N]O?m4/,ls(V9aJNiB`pO::LJcC<$g].9RU]5i~>
+JcFm4rr at WMJcC<$n,N>MrI4Q+hgU,?rBBs?q`aI5s$?ZPs$crZrrE'nrD3Gfs%<;_s%*/[s$QfN
+jZ`]nk<A9^cT^rLj$*JCJNeWKq*+J#bs$^YJcF:#rrAhoJ,~>
+JcFm4rr at WMJcC<$n,NEWs.91cs0r$=s1JBHs6TdRs7$'[s7QEds7u]ls8DKemH=0+rTX4Cq<@qC
+rTF4Es6'FHpZheErTsLMs6fjSs7#pUs7#pSrUBjWrUU![qt0p]s7Z3^s7u]lhu3QTdJa+EkPafI
+s6fpNs5s at As5<q4s4IA$s3Uehs2b5[s2=rTs1nZHs0hs5q6p70s0VCss/c7&rN?1(q69n%s/l1!
+s/c6<s/l$ss/Z+$s0)I*s/l=&qlBaus/l$ss/l7&s/c7#rM][prN#Cgs/>t!rNH1&s/l=&s/l7&
+s/l=%rMfgss/Z+%pTFOtrN#suqlKUqs/u=(s02O,rNQ=*s/c7$s/c7&ql]n"rN-%$s/uC&rM]ar
+s/H$sqksCkrMfaoo;Vbis/Gssql0Uos/,ajoqh\aq4mtarLs1_rLa%[qjmbWs-s%Ws-`nRs-E\M
+s-*JGJcC<$ec5XLU]5i~>
+JcFm4rr at WMJcC<$n,N>MrI4Q+hgU,?rBBs?q`aI5s$?ZPs$crZrrE'nrD3Gfs%<;_s%*/[s$QfN
+jZ`]nk<A9^cT^rLj$*JCJNeWKq*+J#bs$^YJcF:#rrAhoJ,~>
+JcFm4rr at WMJcC<$n,N>MrI4Q+hgU,?rBBs?q`aI5s$?ZPs$crZrrE'nrD3Gfs%<;_s%*/[s$QfN
+jZ`]nk<A9^cT^rLj$*JCJNeWKq*+J#bs$^YJcF:#rrAhoJ,~>
+JcFm4rr at WMJcC<$n,NEWs.91cs0r$=s1JBHs6TdRs7$'[s7QEds7u]ls8DKemH=0+rTX4Cq<@qC
+rTF4Es6'FHpZheErTsLMs6fjSs7#pUs7#pSrUBjWrUU![qt0p]s7Z3^s7u]lhu3QTdJa+EkPafI
+s6fpNs5s at As5<q4s4IA$s3Uehs2b5[s2=rTs1nZHs0hs5q6p70s0VCss/c7&rN?1(q69n%s/l1!
+s/c6<s/l$ss/Z+$s0)I*s/l=&qlBaus/l$ss/l7&s/c7#rM][prN#Cgs/>t!rNH1&s/l=&s/l7&
+s/l=%rMfgss/Z+%pTFOtrN#suqlKUqs/u=(s02O,rNQ=*s/c7$s/c7&ql]n"rN-%$s/uC&rM]ar
+s/H$sqksCkrMfaoo;Vbis/Gssql0Uos/,ajoqh\aq4mtarLs1_rLa%[qjmbWs-s%Ws-`nRs-E\M
+s-*JGJcC<$ec5XLU]5i~>
+JcFm4rr at WMJcC<$n,N>MrI4Q+hgU,?rBBs?q`aI5s$?ZPs$crZrrE'nrD3Gfs%<;_s%*/[s$QfN
+jZ`]nk<A9^cT^rLj$*JCJNeWKq*+J#bs$^YJcF:#rrAhoJ,~>
+JcFm4rr at WMJcC<$oDehSqgSE+iI6VIbs24ns$H`Rs%EAjrrE(&s',M*s&K(ss%r_ks%EA^s$Q`L
+jZ`]nlTXcdbs(`JjZ`PAJNeWKomY(JJcC<$dJs4HU]5i~>
+JcFm4rr at WMJcC<$oDei[qka>%s1/0Bs69RMs6fpWs7?9`s7cQhs82QhrVlKQn*'6)s6BLIs6BXM
+s6TdRs6p!TpZqeErU'ROs6p!WrUKdUs7-'WrUKjWs7?3]qt:!`s7lEcs7lWks8:dQrrC=Bs8M?_
+n,E at Vs6BXGs5s@As5<q5s4@;#s3^kks2k;[s24lNs1/0;s02O0qm?C0s0;U-s/knls/Z+"s/Q*u
+s/>sqs/,gorM][os/Ps4pT"7js/c7$s/Q$ss/>sqs/>sss/Q$srM]aqs/Q$ss/>sqrMKChrMfOk
+rN#ssrMT[os/Z1$qlBaus/Q$srM]aqql9[ss/l7$rN#mss/H%!pT4Cqs/c1$s/u=(s/uC&s/H$u
+s/Z$us/Z1"ql0IkrMTUns/>moq541is/,[ks/>sqq5F1gs/#OeoqhV_qkO+as.TCarLa%[rLNnW
+s-s%Ws-`nSs-NbNs-3PHs,M[1JcF-trrAhoJ,~>
+JcFm4rr at WMJcC<$oDehSqgSE+iI6VIbs24ns$H`Rs%EAjrrE(&s',M*s&K(ss%r_ks%EA^s$Q`L
+jZ`]nlTXcdbs(`JjZ`PAJNeWKomY(JJcC<$dJs4HU]5i~>
+JcFm4rr at WMJcC<$oDehSqgSE+iI6VIbs24ns$H`Rs%EAjrrE(&s',M*s&K(ss%r_ks%EA^s$Q`L
+jZ`]nlTXcdbs(`JjZ`PAJNeWKomY(JJcC<$dJs4HU]5i~>
+JcFm4rr at WMJcC<$oDei[qka>%s1/0Bs69RMs6fpWs7?9`s7cQhs82QhrVlKQn*'6)s6BLIs6BXM
+s6TdRs6p!TpZqeErU'ROs6p!WrUKdUs7-'WrUKjWs7?3]qt:!`s7lEcs7lWks8:dQrrC=Bs8M?_
+n,E at Vs6BXGs5s@As5<q5s4@;#s3^kks2k;[s24lNs1/0;s02O0qm?C0s0;U-s/knls/Z+"s/Q*u
+s/>sqs/,gorM][os/Ps4pT"7js/c7$s/Q$ss/>sqs/>sss/Q$srM]aqs/Q$ss/>sqrMKChrMfOk
+rN#ssrMT[os/Z1$qlBaus/Q$srM]aqql9[ss/l7$rN#mss/H%!pT4Cqs/c1$s/u=(s/uC&s/H$u
+s/Z$us/Z1"ql0IkrMTUns/>moq541is/,[ks/>sqq5F1gs/#OeoqhV_qkO+as.TCarLa%[rLNnW
+s-s%Ws-`nSs-NbNs-3PHs,M[1JcF-trrAhoJ,~>
+JcFm4rr at WMJcC<$oDehSqgSE+iI6VIbs24ns$H`Rs%EAjrrE(&s',M*s&K(ss%r_ks%EA^s$Q`L
+jZ`]nlTXcdbs(`JjZ`PAJNeWKomY(JJcC<$dJs4HU]5i~>
+JcFm4rr at WMJcC<$p](7WqgSK-j*mUam6CV7`BXAgs$Zl\s&B#'rrE(2s'u(:s'>Y0s',M(s%iYf
+s%!)Vs$6HGk<Aopmlp8jbs(`JlTY+Eq`arYJNeuUomY(JJcC<$bQ%SBU]5i~>
+JcFm4rr at WMJcC<$p](8`qka>$s186ns6K^Ps6p!Ys7H?bs7lWjs8;Win)s6)pZ_M=rTjLMrU'RO
+s6opUs6p!Up[%qIrU0XQrUBjWs76!Wp[\@UrUg']rV$9cs7l9_s8:^OrrC1>s8MKcnc&R\s6TdK
+s5O(@s5X.;s3gqks2k;\s24lOs186?s0r$7s/uC*rNcI-s/uC's/Z1!oD\ces/H$srMT[ms/#ak
+qkj7's(MA/s/,a.rM]Uhql'Oms/,gos/>sqrMKUkrM9Iis/5mqrMT[ms/#Ifs/,[krM]aqs/Q*u
+qks=irMf[mqksImrMfaqs/Z$sql0Uoq5aIos/GssrN#sus/>sqrMKOks/>sss/Q*urM]Uks/>gm
+ql'Omjei'So;)&UrM97as.]Ics.K=_rLWtYrLEnWrL3bRs-NbNs-3PHs,Va2JcEpnrrAhoJ,~>
+JcFm4rr at WMJcC<$p](7WqgSK-j*mUam6CV7`BXAgs$Zl\s&B#'rrE(2s'u(:s'>Y0s',M(s%iYf
+s%!)Vs$6HGk<Aopmlp8jbs(`JlTY+Eq`arYJNeuUomY(JJcC<$bQ%SBU]5i~>
+JcFm4rr at WMJcC<$p](7WqgSK-j*mUam6CV7`BXAgs$Zl\s&B#'rrE(2s'u(:s'>Y0s',M(s%iYf
+s%!)Vs$6HGk<Aopmlp8jbs(`JlTY+Eq`arYJNeuUomY(JJcC<$bQ%SBU]5i~>
+JcFm4rr at WMJcC<$p](8`qka>$s186ns6K^Ps6p!Ys7H?bs7lWjs8;Win)s6)pZ_M=rTjLMrU'RO
+s6opUs6p!Up[%qIrU0XQrUBjWs76!Wp[\@UrUg']rV$9cs7l9_s8:^OrrC1>s8MKcnc&R\s6TdK
+s5O(@s5X.;s3gqks2k;\s24lOs186?s0r$7s/uC*rNcI-s/uC's/Z1!oD\ces/H$srMT[ms/#ak
+qkj7's(MA/s/,a.rM]Uhql'Oms/,gos/>sqrMKUkrM9Iis/5mqrMT[ms/#Ifs/,[krM]aqs/Q*u
+qks=irMf[mqksImrMfaqs/Z$sql0Uoq5aIos/GssrN#sus/>sqrMKOks/>sss/Q*urM]Uks/>gm
+ql'Omjei'So;)&UrM97as.]Ics.K=_rLWtYrLEnWrL3bRs-NbNs-3PHs,Va2JcEpnrrAhoJ,~>
+JcFm4rr at WMJcC<$p](7WqgSK-j*mUam6CV7`BXAgs$Zl\s&B#'rrE(2s'u(:s'>Y0s',M(s%iYf
+s%!)Vs$6HGk<Aopmlp8jbs(`JlTY+Eq`arYJNeuUomY(JJcC<$bQ%SBU]5i~>
+JcFm4rr at WMJcC<$qu?[[rI4]/jaNaa]g)H\q*4aAs$-NPs%WMns'>Y8rrE(:s)A!Vs)%dPs(hXK
+s'u(6s&K(os%*/UpHRn+s*jQ'o7"qJo7$3nq#KkIr;_C4Ps4kib<CLWJcE^hrrAhoJ,~>
+JcFm4rr at WMJcC<$qu?\drMBP$s0hshs6BXNs6fpVs763^s7ZKfs8)cnqu-KUlf\<3qs"(Cqs!qA
+qs4:KrU'ROrU9^SrUKpWoBuSGs7$!Ws76'Yqt0XSs7H?arV$-_s7l9_s81RLrrC%:s8MWgoD\dc
+s763Ss5a4;s5j:?s31M^s2"`Ls1/09s/c$rs/>mls/H%"s/Q*us/5JfqkX7gs/5mos/#akq.BGu
+qka7gs(MFDpS at hds/#ams/#1[s/#[ks/#Uiq5*tcrMT[os/GglrM]Igqkj=jrMfaoo;DJcs/Gsq
+qks=grMBCgrMBCes/#amrMB7cq5=+eo;1iMoqhP]qkO+as.TCas.B7]rLNnWrL<hUs-`nRs-E\L
+s-*JDJcC<$`W,r<U]5i~>
+JcFm4rr at WMJcC<$qu?[[rI4]/jaNaa]g)H\q*4aAs$-NPs%WMns'>Y8rrE(:s)A!Vs)%dPs(hXK
+s'u(6s&K(os%*/UpHRn+s*jQ'o7"qJo7$3nq#KkIr;_C4Ps4kib<CLWJcE^hrrAhoJ,~>
+JcFm4rr at WMJcC<$qu?[[rI4]/jaNaa]g)H\q*4aAs$-NPs%WMns'>Y8rrE(:s)A!Vs)%dPs(hXK
+s'u(6s&K(os%*/UpHRn+s*jQ'o7"qJo7$3nq#KkIr;_C4Ps4kib<CLWJcE^hrrAhoJ,~>
+JcFm4rr at WMJcC<$qu?\drMBP$s0hshs6BXNs6fpVs763^s7ZKfs8)cnqu-KUlf\<3qs"(Cqs!qA
+qs4:KrU'ROrU9^SrUKpWoBuSGs7$!Ws76'Yqt0XSs7H?arV$-_s7l9_s81RLrrC%:s8MWgoD\dc
+s763Ss5a4;s5j:?s31M^s2"`Ls1/09s/c$rs/>mls/H%"s/Q*us/5JfqkX7gs/5mos/#akq.BGu
+qka7gs(MFDpS at hds/#ams/#1[s/#[ks/#Uiq5*tcrMT[os/GglrM]Igqkj=jrMfaoo;DJcs/Gsq
+qks=grMBCgrMBCes/#amrMB7cq5=+eo;1iMoqhP]qkO+as.TCas.B7]rLNnWrL<hUs-`nRs-E\L
+s-*JDJcC<$`W,r<U]5i~>
+JcFm4rr at WMJcC<$qu?[[rI4]/jaNaa]g)H\q*4aAs$-NPs%WMns'>Y8rrE(:s)A!Vs)%dPs(hXK
+s'u(6s&K(os%*/UpHRn+s*jQ'o7"qJo7$3nq#KkIr;_C4Ps4kib<CLWJcE^hrrAhoJ,~>
+JcFm4rr at WMJcC<$s8W*_rI4c1jaNaad6I.dq*4O;rB^BKs$QfXs%r_qs'5S5rrE(5s(q^Rs)S-_
+rH\Ees)A!Ps'Yk/s%iYbs$H`Nq`j7-s*j]+o7#"Lo7$?rqZ,Y?r;_C4T0Dpsbs$^YJcEF`rrAho
+J,~>
+JcFm4rr at WMJcC<$s8W+irMBP%s5O(@s6TdQs6p!Xs7?9`s7cQhs82iorVbd>s60(=qs+.Gqs=:K
+rU0XQrUB^Ss763Zp$_kKrUKjWs7?-[rUopWs7Q?arV-9crV?9cs82iog&:pN_>XE5p\j^_s7cQ`
+s60LAs5s@?s2Y/Ss1/09s02O)or.JXoD\EYqdo/jqka7erFOf\l_XKUs/5morMTIgo;2>^rMK7a
+rMKUkrM9Ijs/5Oeq5+%erMB+]oqhD[s/"bOoqhJ[rM0=cs.TCarLa+]rLNnWrL<hUs-`nRs-E\M
+s-&$6JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$s8W*_rI4c1jaNaad6I.dq*4O;rB^BKs$QfXs%r_qs'5S5rrE(5s(q^Rs)S-_
+rH\Ees)A!Ps'Yk/s%iYbs$H`Nq`j7-s*j]+o7#"Lo7$?rqZ,Y?r;_C4T0Dpsbs$^YJcEF`rrAho
+J,~>
+JcFm4rr at WMJcC<$s8W*_rI4c1jaNaad6I.dq*4O;rB^BKs$QfXs%r_qs'5S5rrE(5s(q^Rs)S-_
+rH\Ees)A!Ps'Yk/s%iYbs$H`Nq`j7-s*j]+o7#"Lo7$?rqZ,Y?r;_C4T0Dpsbs$^YJcEF`rrAho
+J,~>
+JcFm4rr at WMJcC<$s8W+irMBP%s5O(@s6TdQs6p!Xs7?9`s7cQhs82iorVbd>s60(=qs+.Gqs=:K
+rU0XQrUB^Ss763Zp$_kKrUKjWs7?-[rUopWs7Q?arV-9crV?9cs82iog&:pN_>XE5p\j^_s7cQ`
+s60LAs5s@?s2Y/Ss1/09s02O)or.JXoD\EYqdo/jqka7erFOf\l_XKUs/5morMTIgo;2>^rMK7a
+rMKUkrM9Ijs/5Oeq5+%erMB+]oqhD[s/"bOoqhJ[rM0=cs.TCarLa+]rLNnWrL<hUs-`nRs-E\M
+s-&$6JcEF`rrAhoJ,~>
+JcFm4rr at WMJcC<$s8W*_rI4c1jaNaad6I.dq*4O;rB^BKs$QfXs%r_qs'5S5rrE(5s(q^Rs)S-_
+rH\Ees)A!Ps'Yk/s%iYbs$H`Nq`j7-s*j]+o7#"Lo7$?rqZ,Y?r;_C4T0Dpsbs$^YJcEF`rrAho
+J,~>
+JcFm4rr at WMJcCH(s$$=/s$#[rRm,dqb<Z(ns$6NKs$HZOs%!)`s&8r$s'Yj,s(24Cs(_RNs)A![
+s*+Kis*F]fs).jKs'>Y)s%NG_s$crTs$?ZLjZ`]nq`aV#d6@/Nq`afUffo?7JNg%somY.LJcC<$
+\,ZI.U]5i~>
+JcFm4rr at WMJcCH(s-rn^s0_mds6'FLs6p!Xs763^s7ZKfs8)]lrT<##s60LIs6BLGrTa at IrTsFK
+rU0XQqsaRSqssdYs7,dOrUKpYrU^![q=Xd]qt9j[s7cKeqt^3erVQQkec#LJ^&A!1qu--cs7QE\
+s5s@<s4mXks1869s02O*s/Paho;)!WqkX%!fqeRXfqeYErM8t[iM?LNmA9?KmA9EMo;19=oqhJ[
+qkO1crLs7arLa+]qjmbWrL<hUs-`nRs-E\Ms,qs5JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcCH(s$$=/s$#[rRm,dqb<Z(ns$6NKs$HZOs%!)`s&8r$s'Yj,s(24Cs(_RNs)A![
+s*+Kis*F]fs).jKs'>Y)s%NG_s$crTs$?ZLjZ`]nq`aV#d6@/Nq`afUffo?7JNg%somY.LJcC<$
+\,ZI.U]5i~>
+JcFm4rr at WMJcCH(s$$=/s$#[rRm,dqb<Z(ns$6NKs$HZOs%!)`s&8r$s'Yj,s(24Cs(_RNs)A![
+s*+Kis*F]fs).jKs'>Y)s%NG_s$crTs$?ZLjZ`]nq`aV#d6@/Nq`afUffo?7JNg%somY.LJcC<$
+\,ZI.U]5i~>
+JcFm4rr at WMJcCH(s-rn^s0_mds6'FLs6p!Xs763^s7ZKfs8)]lrT<##s60LIs6BLGrTa at IrTsFK
+rU0XQqsaRSqssdYs7,dOrUKpYrU^![q=Xd]qt9j[s7cKeqt^3erVQQkec#LJ^&A!1qu--cs7QE\
+s5s@<s4mXks1869s02O*s/Paho;)!WqkX%!fqeRXfqeYErM8t[iM?LNmA9?KmA9EMo;19=oqhJ[
+qkO1crLs7arLa+]qjmbWrL<hUs-`nRs-E\Ms,qs5JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcCH(s$$=/s$#[rRm,dqb<Z(ns$6NKs$HZOs%!)`s&8r$s'Yj,s(24Cs(_RNs)A![
+s*+Kis*F]fs).jKs'>Y)s%NG_s$crTs$?ZLjZ`]nq`aV#d6@/Nq`afUffo?7JNg%somY.LJcC<$
+\,ZI.U]5i~>
+JcFm4rr at WMJcCT,s$$C1s$#[rQTjk&jZrE'og%h/rBgHMs$cr\s&&ets'>X)rF5e<s(MFJs)7pY
+s*"Ees*"E]s(hXHs'bq2s&/kjs%<;^s$l='pHJ+rdm!;Nq#JZ'r;_C4ZTe&2bs$^YJcE"TrrAho
+J,~>
+JcFm4rr at WMJcCT,s.'%as0_mds5X.Gs6p!Ws763^s7QEds7u]ls8;iXh<4h&s6TdQs6K^OrU0XM
+rTsLMqsOFOrUBXQrUTdUnacYMrUg']q=aFSs7lKeq>1'erVY4ErrCaNli-YWnc&Res7H?Zs5j:8
+s1SH=s/Q*us/5mnl(mkKq.7gHrFMOqpSHiErM at K/oqhDYrM0CerLs7arLa%[s.0+YrL<hUs-`nS
+s-E\Ms,qs5JcE"TrrAhoJ,~>
+JcFm4rr at WMJcCT,s$$C1s$#[rQTjk&jZrE'og%h/rBgHMs$cr\s&&ets'>X)rF5e<s(MFJs)7pY
+s*"Ees*"E]s(hXHs'bq2s&/kjs%<;^s$l='pHJ+rdm!;Nq#JZ'r;_C4ZTe&2bs$^YJcE"TrrAho
+J,~>
+JcFm4rr at WMJcCT,s$$C1s$#[rQTjk&jZrE'og%h/rBgHMs$cr\s&&ets'>X)rF5e<s(MFJs)7pY
+s*"Ees*"E]s(hXHs'bq2s&/kjs%<;^s$l='pHJ+rdm!;Nq#JZ'r;_C4ZTe&2bs$^YJcE"TrrAho
+J,~>
+JcFm4rr at WMJcCT,s.'%as0_mds5X.Gs6p!Ws763^s7QEds7u]ls8;iXh<4h&s6TdQs6K^OrU0XM
+rTsLMqsOFOrUBXQrUTdUnacYMrUg']q=aFSs7lKeq>1'erVY4ErrCaNli-YWnc&Res7H?Zs5j:8
+s1SH=s/Q*us/5mnl(mkKq.7gHrFMOqpSHiErM at K/oqhDYrM0CerLs7arLa%[s.0+YrL<hUs-`nS
+s-E\Ms,qs5JcE"TrrAhoJ,~>
+JcFm4rr at WMJcCT,s$$C1s$#[rQTjk&jZrE'og%h/rBgHMs$cr\s&&ets'>X)rF5e<s(MFJs)7pY
+s*"Ees*"E]s(hXHs'bq2s&/kjs%<;^s$l='pHJ+rdm!;Nq#JZ'r;_C4ZTe&2bs$^YJcE"TrrAho
+J,~>
+JcFm4rr at WMJcC`0s$$C1s$#atPs4_&m6L&)rBgNMog8OAq*OmCrBgNOs$ZlSs$ZlYs%iYps',L'
+s'G_4s'Yk:s(D at Is)7pXs)\3_s)J'Ts(D@@s'>Y+dsh>sq0r-'rsmpMpO;o<_*7_rJNgn6omY(J
+JcC<$X8i2"U]5i~>
+JcFm4rr at WMJcC`0s.'%as0hsgs5j:Fs6TdUs7?9_s7ZKfs8)cnrT<5)s60LJs6K^Os6fpVrUKpV
+rU'XRqsj^Ts6]dQqsXFOrUKdUqt'XUqt'j[s7QEcs7?3]rUp']nb<(Ys7cQgrV??eq>:-ge,B:H
+iVh7)s8Voos8;ois6TdHs-s%liM?5IrI=cW_5-s>JY^,Xoqh>WrM0=cs.TCas.B7]s.0+YrL<hU
+s-`nSs-E\Ls,hm4JcDeNrrAhoJ,~>
+JcFm4rr at WMJcC`0s$$C1s$#atPs4_&m6L&)rBgNMog8OAq*OmCrBgNOs$ZlSs$ZlYs%iYps',L'
+s'G_4s'Yk:s(D at Is)7pXs)\3_s)J'Ts(D@@s'>Y+dsh>sq0r-'rsmpMpO;o<_*7_rJNgn6omY(J
+JcC<$X8i2"U]5i~>
+JcFm4rr at WMJcC`0s$$C1s$#atPs4_&m6L&)rBgNMog8OAq*OmCrBgNOs$ZlSs$ZlYs%iYps',L'
+s'G_4s'Yk:s(D at Is)7pXs)\3_s)J'Ts(D@@s'>Y+dsh>sq0r-'rsmpMpO;o<_*7_rJNgn6omY(J
+JcC<$X8i2"U]5i~>
+JcFm4rr at WMJcC`0s.'%as0hsgs5j:Fs6TdUs7?9_s7ZKfs8)cnrT<5)s60LJs6K^Os6fpVrUKpV
+rU'XRqsj^Ts6]dQqsXFOrUKdUqt'XUqt'j[s7QEcs7?3]rUp']nb<(Ys7cQgrV??eq>:-ge,B:H
+iVh7)s8Voos8;ois6TdHs-s%liM?5IrI=cW_5-s>JY^,Xoqh>WrM0=cs.TCas.B7]s.0+YrL<hU
+s-`nSs-E\Ls,hm4JcDeNrrAhoJ,~>
+JcFm4rr at WMJcC`0s$$C1s$#atPs4_&m6L&)rBgNMog8OAq*OmCrBgNOs$ZlSs$ZlYs%iYps',L'
+s'G_4s'Yk:s(D at Is)7pXs)\3_s)J'Ts(D@@s'>Y+dsh>sq0r-'rsmpMpO;o<_*7_rJNgn6omY(J
+JcC<$X8i2"U]5i~>
+JcFm4rr at WMJcCl4rI4]/m=(Heks+c)pHe77ha at 3+qa:<Ms$m#_s&8r#rrE(&s',M.s'Pe:s(MFJ
+s).jTs)A!Ys)%dLs't;Bks#,rruV(;s*i]dpO;u>ZTe<fJNh7 at omY.LJcC<$U]:>oU]5i~>
+JcFm4rr at WMJcCl4rMBJ$s5a4Ds6p!Ws763^s7ZKfs8)cnj6-I,s6K^Os6]jTqsaLQs763Ys6]jT
+q==LSq=+:OrUTdUq=OLUs7ZEcrV69_rV$']n+ckWqtg'arVY.CrrD0Zl2KrGs8N&Fqu?]qs8;oi
+s6BXDs/kCYp\t&>Z_[P2JY^Jboqh>WrM0CerLs7arLa+]rLNnWrL<hUs-`nRs-E\KJcC<$U]:>o
+U]5i~>
+JcFm4rr at WMJcCl4rI4]/m=(Heks+c)pHe77ha at 3+qa:<Ms$m#_s&8r#rrE(&s',M.s'Pe:s(MFJ
+s).jTs)A!Ys)%dLs't;Bks#,rruV(;s*i]dpO;u>ZTe<fJNh7 at omY.LJcC<$U]:>oU]5i~>
+JcFm4rr at WMJcCl4rI4]/m=(Heks+c)pHe77ha at 3+qa:<Ms$m#_s&8r#rrE(&s',M.s'Pe:s(MFJ
+s).jTs)A!Ys)%dLs't;Bks#,rruV(;s*i]dpO;u>ZTe<fJNh7 at omY.LJcC<$U]:>oU]5i~>
+JcFm4rr at WMJcCl4rMBJ$s5a4Ds6p!Ws763^s7ZKfs8)cnj6-I,s6K^Os6]jTqsaLQs763Ys6]jT
+q==LSq=+:OrUTdUq=OLUs7ZEcrV69_rV$']n+ckWqtg'arVY.CrrD0Zl2KrGs8N&Fqu?]qs8;oi
+s6BXDs/kCYp\t&>Z_[P2JY^Jboqh>WrM0CerLs7arLa+]rLNnWrL<hUs-`nRs-E\KJcC<$U]:>o
+U]5i~>
+JcFm4rr at WMJcCl4rI4]/m=(Heks+c)pHe77ha at 3+qa:<Ms$m#_s&8r#rrE(&s',M.s'Pe:s(MFJ
+s).jTs)A!Ys)%dLs't;Bks#,rruV(;s*i]dpO;u>ZTe<fJNh7 at omY.LJcC<$U]:>oU]5i~>
+JcFm4rr at WMJcD):s$$I3rBBOrR6Kq$og&==pHnUApI+UAs$ZlUs$ZfSq*b$GpI,$Ms%<;fs&K(!
+s&]5&s'#G-s'Yk;s(MFHs(hXNs)%dRl[IkXomZj'rrW3#ks"olq#IBXr;_C4eNWYTcTZp[JcD5>
+rrAhoJ,~>
+JcFm4rr at WMJcD):s-E\]rO2afs6'FLs7$'[s7QEds7u]ls8;oqs6'FGlf\<3s6BXNs6]jTq=+:O
+q==LRs76'YqssdWs763[rUTdUq=OLUqtC!_rV6Egs7lKbs7c9_n+lkWp&"^cdJa(Fl2BrIiVi`Q
+rVQQhs7$'+s+'@0q>U2>WMKK(JY^hloqh>WrM0CerLs7arLa+]rLNnWrL<hUs-WhQs-808JcD5>
+rrAhoJ,~>
+JcFm4rr at WMJcD):s$$I3rBBOrR6Kq$og&==pHnUApI+UAs$ZlUs$ZfSq*b$GpI,$Ms%<;fs&K(!
+s&]5&s'#G-s'Yk;s(MFHs(hXNs)%dRl[IkXomZj'rrW3#ks"olq#IBXr;_C4eNWYTcTZp[JcD5>
+rrAhoJ,~>
+JcFm4rr at WMJcD):s$$I3rBBOrR6Kq$og&==pHnUApI+UAs$ZlUs$ZfSq*b$GpI,$Ms%<;fs&K(!
+s&]5&s'#G-s'Yk;s(MFHs(hXNs)%dRl[IkXomZj'rrW3#ks"olq#IBXr;_C4eNWYTcTZp[JcD5>
+rrAhoJ,~>
+JcFm4rr at WMJcD):s-E\]rO2afs6'FLs7$'[s7QEds7u]ls8;oqs6'FGlf\<3s6BXNs6]jTq=+:O
+q==LRs76'YqssdWs763[rUTdUq=OLUqtC!_rV6Egs7lKbs7c9_n+lkWp&"^cdJa(Fl2BrIiVi`Q
+rVQQhs7$'+s+'@0q>U2>WMKK(JY^hloqh>WrM0CerLs7arLa+]rLNnWrL<hUs-WhQs-808JcD5>
+rrAhoJ,~>
+JcFm4rr at WMJcD):s$$I3rBBOrR6Kq$og&==pHnUApI+UAs$ZlUs$ZfSq*b$GpI,$Ms%<;fs&K(!
+s&]5&s'#G-s'Yk;s(MFHs(hXNs)%dRl[IkXomZj'rrW3#ks"olq#IBXr;_C4eNWYTcTZp[JcD5>
+rrAhoJ,~>
+JcFm4rr at WMJcD5>rI4]/m=(HelTau+rB^6GpI"gGs$clUq+(BQpIG*Ms$ulSqaLHOogSmOs%`Sl
+rrE'ts&K)#s&oA,s'Yk;s(;:Ds(MFHm=+jqk<AQfrBC5kq>^IYnUC96s*gS(r;_C4iBHp`bs$^Y
+JcD#8rrAhoJ,~>
+JcFm4rr at WMJcD5>rMBP's1/0ns6]jVs7H?cs7lWjs82ios8Mu[qrmS5s60LKs6]jSs6ojSq=4:O
+rU^'[s7$'Zs7?-[qt'^Ws7?!Wq=XRWqtL'aq>('as7cEcp\F:Sqtp!_dJa(Fli$5Mhu3TPs7lWe
+s763Xs6BXSs60Koq>^Jjnc&?6s8JXdrFLPUiM?.Co;)>[s.]Ics.KCarLWtYrLEhUs-`nSs-E\K
+JcC<$Q2gjaU]5i~>
+JcFm4rr at WMJcD5>rI4]/m=(HelTau+rB^6GpI"gGs$clUq+(BQpIG*Ms$ulSqaLHOogSmOs%`Sl
+rrE'ts&K)#s&oA,s'Yk;s(;:Ds(MFHm=+jqk<AQfrBC5kq>^IYnUC96s*gS(r;_C4iBHp`bs$^Y
+JcD#8rrAhoJ,~>
+JcFm4rr at WMJcD5>rI4]/m=(HelTau+rB^6GpI"gGs$clUq+(BQpIG*Ms$ulSqaLHOogSmOs%`Sl
+rrE'ts&K)#s&oA,s'Yk;s(;:Ds(MFHm=+jqk<AQfrBC5kq>^IYnUC96s*gS(r;_C4iBHp`bs$^Y
+JcD#8rrAhoJ,~>
+JcFm4rr at WMJcD5>rMBP's1/0ns6]jVs7H?cs7lWjs82ios8Mu[qrmS5s60LKs6]jSs6ojSq=4:O
+rU^'[s7$'Zs7?-[qt'^Ws7?!Wq=XRWqtL'aq>('as7cEcp\F:Sqtp!_dJa(Fli$5Mhu3TPs7lWe
+s763Xs6BXSs60Koq>^Jjnc&?6s8JXdrFLPUiM?.Co;)>[s.]Ics.KCarLWtYrLEhUs-`nSs-E\K
+JcC<$Q2gjaU]5i~>
+JcFm4rr at WMJcD5>rI4]/m=(HelTau+rB^6GpI"gGs$clUq+(BQpIG*Ms$ulSqaLHOogSmOs%`Sl
+rrE'ts&K)#s&oA,s'Yk;s(;:Ds(MFHm=+jqk<AQfrBC5kq>^IYnUC96s*gS(r;_C4iBHp`bs$^Y
+JcD#8rrAhoJ,~>
+JcFm4rr at WMJcDGDs*jc-ms^Temm$>-rB^<IrBp<Is$crWqa^TUrCQ`Um7I7Iq+'mCs%NGfrrE'r
+s&8qts&T/&s'>S3rF>eUo7$L"j$*-bq`aWOs$$I3s$$;[OZr^DJNiHbo7#"LJcC<$NW9"YU]5i~>
+JcFm4rr at WMJcDGDs/#b)s1/0 at s1SI#s763`s7lWjs82ios8Duss5s:Cq<7kCp#lA?s6]jTq=+4M
+q==@Qs7H?^s7?3]rUp-]s7QEcrV-9aq=XRWp\4R[rV?EgrV?Eeq>'@Qq>9d]ci*kDmJZMQiVifS
+s82ils7?9[s6]jNs5a4;s5X.,s1e1*s.o\os.oO'OehqeJY_\/o;2,UrM0=cs.TCas.B=_rLNnW
+rL<hUs-`nRs-808JcC`0rrAhoJ,~>
+JcFm4rr at WMJcDGDs*jc-ms^Temm$>-rB^<IrBp<Is$crWqa^TUrCQ`Um7I7Iq+'mCs%NGfrrE'r
+s&8qts&T/&s'>S3rF>eUo7$L"j$*-bq`aWOs$$I3s$$;[OZr^DJNiHbo7#"LJcC<$NW9"YU]5i~>
+JcFm4rr at WMJcDGDs*jc-ms^Temm$>-rB^<IrBp<Is$crWqa^TUrCQ`Um7I7Iq+'mCs%NGfrrE'r
+s&8qts&T/&s'>S3rF>eUo7$L"j$*-bq`aWOs$$I3s$$;[OZr^DJNiHbo7#"LJcC<$NW9"YU]5i~>
+JcFm4rr at WMJcDGDs/#b)s1/0 at s1SI#s763`s7lWjs82ios8Duss5s:Cq<7kCp#lA?s6]jTq=+4M
+q==@Qs7H?^s7?3]rUp-]s7QEcrV-9aq=XRWp\4R[rV?EgrV?Eeq>'@Qq>9d]ci*kDmJZMQiVifS
+s82ils7?9[s6]jNs5a4;s5X.,s1e1*s.o\os.oO'OehqeJY_\/o;2,UrM0=cs.TCas.B=_rLNnW
+rL<hUs-`nRs-808JcC`0rrAhoJ,~>
+JcFm4rr at WMJcDGDs*jc-ms^Temm$>-rB^<IrBp<Is$crWqa^TUrCQ`Um7I7Iq+'mCs%NGfrrE'r
+s&8qts&T/&s'>S3rF>eUo7$L"j$*-bq`aWOs$$I3s$$;[OZr^DJNiHbo7#"LJcC<$NW9"YU]5i~>
+JcFm4rr at WMJcDYJs*jc-m=(Tiks+i+rB^BKqa:6KqaLNSrC?lYs%35_rCcr[mnNaSpIkHWqapNQ
+q+(HWs%E at ls%iYks&/krs&T/&s'5S0s'#;LomZ^$j$*'`q`a]Qq#LHps$$I3NB[:@JNilno7#"L
+JcC<$L&_/QU]5i~>
+JcFm4rr at WMJcDYJs/#b,s1A<Gs24m/s7cQhs8)cms8;oqqu6WXrTEq=s69RKs60 at Cs6]XOq=4:O
+q=F at Qs7?-\qtC!_qtU3cp\+FWp\=X]rVHQkrVHKgp%n"OoDH`/rrDNdn,DAGs8;ons7u]hs6p!S
+s6'FAs5!_"s1A<Zs3^kdp&Fgfs8W+ps8J"RrFLPUq5!VYo;)>[s.]Ics.KCarLWtYrLEnWs-itU
+s-WhOJcC<$L&_/QU]5i~>
+JcFm4rr at WMJcDYJs*jc-m=(Tiks+i+rB^BKqa:6KqaLNSrC?lYs%35_rCcr[mnNaSpIkHWqapNQ
+q+(HWs%E at ls%iYks&/krs&T/&s'5S0s'#;LomZ^$j$*'`q`a]Qq#LHps$$I3NB[:@JNilno7#"L
+JcC<$L&_/QU]5i~>
+JcFm4rr at WMJcDYJs*jc-m=(Tiks+i+rB^BKqa:6KqaLNSrC?lYs%35_rCcr[mnNaSpIkHWqapNQ
+q+(HWs%E at ls%iYks&/krs&T/&s'5S0s'#;LomZ^$j$*'`q`a]Qq#LHps$$I3NB[:@JNilno7#"L
+JcC<$L&_/QU]5i~>
+JcFm4rr at WMJcDYJs/#b,s1A<Gs24m/s7cQhs8)cms8;oqqu6WXrTEq=s69RKs60 at Cs6]XOq=4:O
+q=F at Qs7?-\qtC!_qtU3cp\+FWp\=X]rVHQkrVHKgp%n"OoDH`/rrDNdn,DAGs8;ons7u]hs6p!S
+s6'FAs5!_"s1A<Zs3^kdp&Fgfs8W+ps8J"RrFLPUq5!VYo;)>[s.]Ics.KCarLWtYrLEnWs-itU
+s-WhOJcC<$L&_/QU]5i~>
+JcFm4rr at WMJcDYJs*jc-m=(Tiks+i+rB^BKqa:6KqaLNSrC?lYs%35_rCcr[mnNaSpIkHWqapNQ
+q+(HWs%E at ls%iYks&/krs&T/&s'5S0s'#;LomZ^$j$*'`q`a]Qq#LHps$$I3NB[:@JNilno7#"L
+JcC<$L&_/QU]5i~>
+JcFm4rr at WMJcDqRo02VlSNc:&og&IArBgHMrC$TQqaUTUs%*)[s%<;arCm5cs%`Siq,%)gs&/eo
+s&/empJClcrD*;cqb7#_qb$`Ws%*)Ys%*/]rrE'ms%`Sjs&/krs&T/%s&/T at q0r-(iBHd\rBC2[
+q#Km`s$$I3OZrXBLHb<Yd6<-]JcC<$qu?ZrU]5i~>
+JcFm4rr at WMJcDqRs1A<Ds2G#Zs2tAcs3:T at rVZWmq>U9Rs6'4As69LGs6BXMs6BXJqsaFOq==@Q
+p[n.OrV$-_rV6?erV63_p\=LYq>1'erVHQis8)EckPW*nrrDTfn,DAGs82ims7lWgs7QEUs5X.9
+s4[Lqs1863s/5nBs2Y*<q#Km`s.o\oOehkcLSXO<o;)>[rM'=cs.K=_s.91[rLEhUs-`nSJcC<$
+JcGWIrrAhoJ,~>
+JcFm4rr at WMJcDqRo02VlSNc:&og&IArBgHMrC$TQqaUTUs%*)[s%<;arCm5cs%`Siq,%)gs&/eo
+s&/empJClcrD*;cqb7#_qb$`Ws%*)Ys%*/]rrE'ms%`Sjs&/krs&T/%s&/T at q0r-(iBHd\rBC2[
+q#Km`s$$I3OZrXBLHb<Yd6<-]JcC<$qu?ZrU]5i~>
+JcFm4rr at WMJcDqRo02VlSNc:&og&IArBgHMrC$TQqaUTUs%*)[s%<;arCm5cs%`Siq,%)gs&/eo
+s&/empJClcrD*;cqb7#_qb$`Ws%*)Ys%*/]rrE'ms%`Sjs&/krs&T/%s&/T at q0r-(iBHd\rBC2[
+q#Km`s$$I3OZrXBLHb<Yd6<-]JcC<$qu?ZrU]5i~>
+JcFm4rr at WMJcDqRs1A<Ds2G#Zs2tAcs3:T at rVZWmq>U9Rs6'4As69LGs6BXMs6BXJqsaFOq==@Q
+p[n.OrV$-_rV6?erV63_p\=LYq>1'erVHQis8)EckPW*nrrDTfn,DAGs82ims7lWgs7QEUs5X.9
+s4[Lqs1863s/5nBs2Y*<q#Km`s.o\oOehkcLSXO<o;)>[rM'=cs.K=_s.91[rLEhUs-`nSJcC<$
+JcGWIrrAhoJ,~>
+JcFm4rr at WMJcDqRo02VlSNc:&og&IArBgHMrC$TQqaUTUs%*)[s%<;arCm5cs%`Siq,%)gs&/eo
+s&/empJClcrD*;cqb7#_qb$`Ws%*)Ys%*/]rrE'ms%`Sjs&/krs&T/%s&/T at q0r-(iBHd\rBC2[
+q#Km`s$$I3OZrXBLHb<Yd6<-]JcC<$qu?ZrU]5i~>
+JcFm4rr at WMJcE:\pO;p%m=(Timm$>-qa(6KrBpNOrC-ZSs%!)'rtYPLrtk\Pru(hTru:tXruM%Z
+ru_1^rDikus&]/$s&oA*s&f;&s&T/"qc*Mms&/kos%r_krD*Aes%NAas%<;_s%*/[s$llSrrD^[
+s$cO/s*ju8q*3b#nUCL%qZ,IPrI1"qr;`$Fo7#(NJcC<$JcG?ArrAhoJ,~>
+JcFm4rr at WMJcE:\pSIc5s3UfEn,E4Hs6'@EoBH;?s6TdSq=44Mqt'RSp%A.SqtL'arV?Egs7uEa
+q>'^[oDAL_s82cmj-RCVrrDZhnc%SIs8;oos7u]hs7QE`s7--Is4mY+s2b5Ns0)I's/,hCs,6gU
+h>dHQQ)+ at iPGIfHo;)>[rM'=cs.K=_s.91[rLEhUs-`nRJcC<$JcG?ArrAhoJ,~>
+JcFm4rr at WMJcE:\pO;p%m=(Timm$>-qa(6KrBpNOrC-ZSs%!)Fs"sa5s#0m9s#C$=s#U0As#g6C
+s$$BGrDikus&]/$s&oA*s&f;&s&T/"qc*Mms&/kos%r_krD*Aes%NAas%<;_s%*/[s$llSrrD^[
+s$cO/s*ju8q*3b#nUCL%qZ,IPrI1"qr;`$Fo7#(NJcC<$JcG?ArrAhoJ,~>
+JcFm4rr at WMJcE:\pO;p%m=(Timm$>-qa(6KrBpNOrC-ZSs%!)'rtYPLrtk\Pru(hTru:tXruM%Z
+ru_1^rDikus&]/$s&oA*s&f;&s&T/"qc*Mms&/kos%r_krD*Aes%NAas%<;_s%*/[s$llSrrD^[
+s$cO/s*ju8q*3b#nUCL%qZ,IPrI1"qr;`$Fo7#(NJcC<$JcG?ArrAhoJ,~>
+JcFm4rr at WMJcE:\pSIc5s3UfEn,E4Hs6'@EoBH;?s6TdSq=44Mqt'RSp%A.SqtL'arV?Egs7uEa
+q>'^[oDAL_s82cmj-RCVrrDZhnc%SIs8;oos7u]hs7QE`s7--Is4mY+s2b5Ns0)I's/,hCs,6gU
+h>dHQQ)+ at iPGIfHo;)>[rM'=cs.K=_s.91[rLEhUs-`nRJcC<$JcG?ArrAhoJ,~>
+JcFm4rr at WMJcE:\pO;p%m=(Timm$>-qa(6KrBpNOrC-ZSs%!)Fs"sa5s#0m9s#C$=s#U0As#g6C
+s$$BGrDikus&]/$s&oA*s&f;&s&T/"qc*Mms&/kos%r_krD*Aes%NAas%<;_s%*/[s$llSrrD^[
+s$cO/s*ju8q*3b#nUCL%qZ,IPrI1"qr;`$Fo7#(NJcC<$JcG?ArrAhoJ,~>
+JcFm4rr at WMJcEjljaQt(pO8Ysmm$J1pHeaEs$QfSrt52BrtG>FrtYPLrso&>rt5,Ar=o8Hruh=b
+r?D7es!@[ls!Rgps!dmrs""%!s'Yk6s'G_2s',M,rE0#"s&T/!s&/els%iYirD!;cs%EAas%35]
+s%!#WrrD^[rIFQjpHRItpO;o<s$"j1s$$I3R6LQLTg&'sd6<-]JcC<$l2Ub`U]5i~>
+JcFm4rr at WMJcEjlje__Op\t3Sq<%_ at rTX@Ip$)MCs6fpUp%%qMq=OLUp%J4UqtU-cp\O^]p\OLY
+rVZ2Pmt9YebPhG at p&4F[j8K#Ts7u]is7ZKbs763Ys6]j>s4%(gs1&*9s"XO,s!Ic.s2rahs.o\o
+RABdmTqq:VnYH,Ys.]Ics.KCarLWtYrLEnWs-itTJcC<$JcG!7rrAhoJ,~>
+JcFm4rr at WMJcEjljaQt(pO8Ysmm$J1pHeaEs$QfSs"OC+s"aO/s"sa5s*=Wks*aiprI=crs$-NK
+rB^HNs$ZlUs$m#Ys%*)[s%<5_s'Yk6s'G_2s',M,rE0#"s&T/!s&/els%iYirD!;cs%EAas%35]
+s%!#WrrD^[rIFQjpHRItpO;o<s$"j1s$$I3R6LQLTg&'sd6<-]JcC<$l2Ub`U]5i~>
+JcFm4rr at WMJcEjljaQt(pO8Ysmm$J1pHeaEs$QfSrt52BrtG>FrtYPLrso&>rt5,Ar=o8Hruh=b
+r?D7es!@[ls!Rgps!dmrs""%!s'Yk6s'G_2s',M,rE0#"s&T/!s&/els%iYirD!;cs%EAas%35]
+s%!#WrrD^[rIFQjpHRItpO;o<s$"j1s$$I3R6LQLTg&'sd6<-]JcC<$l2Ub`U]5i~>
+JcFm4rr at WMJcEjlje__Op\t3Sq<%_ at rTX@Ip$)MCs6fpUp%%qMq=OLUp%J4UqtU-cp\O^]p\OLY
+rVZ2Pmt9YebPhG at p&4F[j8K#Ts7u]is7ZKbs763Ys6]j>s4%(gs1&*9s"XO,s!Ic.s2rahs.o\o
+RABdmTqq:VnYH,Ys.]Ics.KCarLWtYrLEnWs-itTJcC<$JcG!7rrAhoJ,~>
+JcFm4rr at WMJcEjljaQt(pO8Ysmm$J1pHeaEs$QfSs"OC+s"aO/s"sa5s*=Wks*aiprI=crs$-NK
+rB^HNs$ZlUs$m#Ys%*)[s%<5_s'Yk6s'G_2s',M,rE0#"s&T/!s&/els%iYirD!;cs%EAas%35]
+s%!#WrrD^[rIFQjpHRItpO;o<s$"j1s$$I3R6LQLTg&'sd6<-]JcC<$l2Ub`U]5i~>
+JcFm4rr at WMJcF'rjaQOqs*gS(mm$V5og/UErt#&>rt52Br=f2FrtYPArseu=rt58ErtPJKrttVO
+r>YbVruM%Zs!dsts""+$s"==)r at n7+rA+=-s"XO+s"+1Uqcs)(s&oA&s&8qqs&&emrD3Ggs%WMe
+s%E;_s%35]rrE'grC-ZQs+0urqg\K-ffo@`q#L;@rBA:%rI1A&r;`r`o7#.PJcC<$JcFX-rrAho
+J,~>
+JcFm4rr at WMJcF'rje_;Cs3CZ+qr[qAs69RKs69 at Es69RMs6fjTs6opWp[e4Qq=XLUp\4LYqt^3e
+q>9p_p\Xjcm?c^_iKr*nrrDflnc%kQq>C9hs7lWfs7H?^s7$'Vs6Td:s3^j9s$-NEs#'h]s/uBu
+s3^kja8c,;T;;EsXebQbo;)>[rM'=crLj1_rLWtYrLEnWs-\H<JcC<$huE]VU]5i~>
+JcFm4rr at WMJcF'rjaQOqs*gS(mm$V5og/UEs"=7's"OC+rA+C/s"sb"s*=Wks*Xiqs+(-$s+C?*
+qhG')s+p]3s,-hIs%35_s%NGes%`Mgs%rYkrDNYls%WMds'>M,rEK;)s&T.us&/kos%rYis%`Sg
+s%NGcrC[)]s%*.is$lrUrC$[:q1/?lq`iatrI4PBqgSK-a8c*eT0E2RXZl?*dlr?_JcC<$huE]V
+U]5i~>
+JcFm4rr at WMJcF'rjaQOqs*gS(mm$V5og/UErt#&>rt52Br=f2FrtYPArseu=rt58ErtPJKrttVO
+r>YbVruM%Zs!dsts""+$s"==)r at n7+rA+=-s"XO+s"+1Uqcs)(s&oA&s&8qqs&&emrD3Ggs%WMe
+s%E;_s%35]rrE'grC-ZQs+0urqg\K-ffo@`q#L;@rBA:%rI1A&r;`r`o7#.PJcC<$JcFX-rrAho
+J,~>
+JcFm4rr at WMJcF'rje_;Cs3CZ+qr[qAs69RKs69 at Es69RMs6fjTs6opWp[e4Qq=XLUp\4LYqt^3e
+q>9p_p\Xjcm?c^_iKr*nrrDflnc%kQq>C9hs7lWfs7H?^s7$'Vs6Td:s3^j9s$-NEs#'h]s/uBu
+s3^kja8c,;T;;EsXebQbo;)>[rM'=crLj1_rLWtYrLEnWs-\H<JcC<$huE]VU]5i~>
+JcFm4rr at WMJcF'rjaQOqs*gS(mm$V5og/UEs"=7's"OC+rA+C/s"sb"s*=Wks*Xiqs+(-$s+C?*
+qhG')s+p]3s,-hIs%35_s%NGes%`Mgs%rYkrDNYls%WMds'>M,rEK;)s&T.us&/kos%rYis%`Sg
+s%NGcrC[)]s%*.is$lrUrC$[:q1/?lq`iatrI4PBqgSK-a8c*eT0E2RXZl?*dlr?_JcC<$huE]V
+U]5i~>
+JcFm4rr at WMJcF4!kC2aso7!`(mm$P3q*G$Irt#&>r=Su at r=f,DrsSi8rso&?rt>>GrtbVOru(hU
+ruM+]r?;1bs!.Ohs!@[ls!R[lrA4I1rAO[7rAag;s#9s7s"aU.q^qbSs'Pe3s'#G(s&B"ss&/_k
+s%iYis%WMes%EAas%*.is%!#Ws$cs>rIOirrI=W-gHPK7o7$X%]Dqn[V*=hX]ftt8dlr?_JcC<$
+ec5XLU]5i~>
+JcFm4rr at WMJcF4!kG at MEq9Jrbs3^l1qs+.Gs6BXMs6TdRs7$!Ws7$'Zq=FLUq=XRWp\4FWqt^!_
+qtp?ip\Xdal^-(QiKr<trrDlnnc%qSq>C9is8)cjs7ZKbs763Zs6]jOs/H#ps%*1,s1SHBs0Vg1
+rMBPAs3J=Ws8JjjrFN[<nYPiQrM0=cs.TCas.B7]rLNnWs-s%UJcC<$JcF:#rrAhoJ,~>
+JcFm4rr at WMJcF4!kC2aso7!`(mm$P3q*G$Is"=7'r at n1)rA+=-s*"Ees*F]ms*aots+:9(s+UK.
+s,$c5s,?o9s,R, at s,m>ErKI2ErDNYorDikurE'#$s&T.us&&elqb6rrs'Pe3s'#G(s&B"ss&/_k
+s%iYis%WMes%EAas%*.is%!#Ws$cs>rIOirrI=W-gHPK7o7$X%]Dqn[V*=hX]ftt8dlr?_JcC<$
+ec5XLU]5i~>
+JcFm4rr at WMJcF4!kC2aso7!`(mm$P3q*G$Irt#&>r=Su at r=f,DrsSi8rso&?rt>>GrtbVOru(hU
+ruM+]r?;1bs!.Ohs!@[ls!R[lrA4I1rAO[7rAag;s#9s7s"aU.q^qbSs'Pe3s'#G(s&B"ss&/_k
+s%iYis%WMes%EAas%*.is%!#Ws$cs>rIOirrI=W-gHPK7o7$X%]Dqn[V*=hX]ftt8dlr?_JcC<$
+ec5XLU]5i~>
+JcFm4rr at WMJcF4!kG at MEq9Jrbs3^l1qs+.Gs6BXMs6TdRs7$!Ws7$'Zq=FLUq=XRWp\4FWqt^!_
+qtp?ip\Xdal^-(QiKr<trrDlnnc%qSq>C9is8)cjs7ZKbs763Zs6]jOs/H#ps%*1,s1SHBs0Vg1
+rMBPAs3J=Ws8JjjrFN[<nYPiQrM0=cs.TCas.B7]rLNnWs-s%UJcC<$JcF:#rrAhoJ,~>
+JcFm4rr at WMJcF4!kC2aso7!`(mm$P3q*G$Is"=7'r at n1)rA+=-s*"Ees*F]ms*aots+:9(s+UK.
+s,$c5s,?o9s,R, at s,m>ErKI2ErDNYorDikurE'#$s&T.us&&elqb6rrs'Pe3s'#G(s&B"ss&/_k
+s%iYis%WMes%EAas%*.is%!#Ws$cs>rIOirrI=W-gHPK7o7$X%]Dqn[V*=hX]ftt8dlr?_JcC<$
+ec5XLU]5i~>
+JcFm4rr at WMJcF@%l$hmsl$g$(mm$V5pHe`grt,2Brt>2Br=o2FrsSi9rt#,ArtGDIrtk\Qru1nW
+ruV1_s!%Igs!Ians!dsus"+1%s"==*q_ at h-s#pBGs$-NKs#g<@s#'g4pG)\Ys'bq8s'l"<s'l"8
+s'5S,s&T.us&&eks%WMes%<;_rrE!fs$m$As+C?'rIOirs$6<CjZ`J?s$#t%q*)(`s*h(6qZ+r+
+nUAqNJcC<$JcEjlrrAhoJ,~>
+JcFm4rr at WMJcF@%l)!YEq9Jl`s4%)"s4RA)rTjFKs6]jSs7$'Zs7?9]s7,jUq=XXYq=jXYp\F^_
+p\XFWrVbuIc\(&?hu3QTqu-'an,<4_qtpEis7u]is7ZKcs7?8rs02O*s/Q+]s2tA\s1nZHs0hs5
+s/>sorR(Yls2hPGs8K-rqdn*LnYPiQrM0=crLs7arLa%[rLNtYs-s%UJcC<$JcEjlrrAhoJ,~>
+JcFm4rr at WMJcF@%l$hmsl$g$(mm$V5pHea1s"FC+s"XC+rA4C/s*+Kgs*Ocos*t'"s+LE,s+gW2
+s,6o9s,R,Bs,m>Fs-<VNs-WhSs-itWs.'%YpKRZ&s'>Y2s'Pe1s&]5"s&/Sfs().<s'Yk9s'u(<
+s'Pe2s&oA&s&8qps%`Sgs%NGbs%34jrC?lWs+LE)s+:3#qge]3pHRb'q#LFYnUC9tZ2aiQXZlU^
+cT^lJdlr?_JcC<$aoDA at U]5i~>
+JcFm4rr at WMJcF@%l$hmsl$g$(mm$V5pHe`grt,2Brt>2Br=o2FrsSi9rt#,ArtGDIrtk\Qru1nW
+ruV1_s!%Igs!Ians!dsus"+1%s"==*q_ at h-s#pBGs$-NKs#g<@s#'g4pG)\Ys'bq8s'l"<s'l"8
+s'5S,s&T.us&&eks%WMes%<;_rrE!fs$m$As+C?'rIOirs$6<CjZ`J?s$#t%q*)(`s*h(6qZ+r+
+nUAqNJcC<$JcEjlrrAhoJ,~>
+JcFm4rr at WMJcF@%l)!YEq9Jl`s4%)"s4RA)rTjFKs6]jSs7$'Zs7?9]s7,jUq=XXYq=jXYp\F^_
+p\XFWrVbuIc\(&?hu3QTqu-'an,<4_qtpEis7u]is7ZKcs7?8rs02O*s/Q+]s2tA\s1nZHs0hs5
+s/>sorR(Yls2hPGs8K-rqdn*LnYPiQrM0=crLs7arLa%[rLNtYs-s%UJcC<$JcEjlrrAhoJ,~>
+JcFm4rr at WMJcF@%l$hmsl$g$(mm$V5pHea1s"FC+s"XC+rA4C/s*+Kgs*Ocos*t'"s+LE,s+gW2
+s,6o9s,R,Bs,m>Fs-<VNs-WhSs-itWs.'%YpKRZ&s'>Y2s'Pe1s&]5"s&/Sfs().<s'Yk9s'u(<
+s'Pe2s&oA&s&8qps%`Sgs%NGbs%34jrC?lWs+LE)s+:3#qge]3pHRb'q#LFYnUC9tZ2aiQXZlU^
+cT^lJdlr?_JcC<$aoDA at U]5i~>
+JcFm4rr at WMJcFF'msaI"hgW=(mm$P3q*Frirt,, at rt>>FrtPJJq\K2JrttbIrt>>GrtYPMru(hT
+ruD%Zru_7as!.Ois!Rgqs!n%"s"==*s"aU2s#0m9s#Ks;s$QfQs$?ZPs$ZlUs$m#Ws$H`Ks#U0=
+q)/13s#U0>s#0mjs(;:As'l"9s'>Y.s&]5#s&/kns%WMes%<:krCHsCs+UK+s+C9%s+13#q`sm?
+mlpOIq*+7rq*(SRZTe<fiBH^ZeNSQaJcC<$]Dqm2U]5i~>
+JcFm4rr at WMJcFF'n"o4IrQY)^s3L_ls4@;(s4dA)s5*_Bs6p!Xs76'YrUfpYq=a^[q=s^[p\O^_
+p\aX]jd4/CfpCh!rrE#rnc&"Us8;imrVHQis7lWgs0r$9s0Vg4s7$'Us6K^Ks3CYds2=rOs1/0;
+s/c6ts/#V?s37>=Z_[P2iM>q=o;)D]rM'7arLj+]qk!hYs.'+XJcC<$JcE@^rrAhoJ,~>
+JcFm4rr at WMJcFF'msaI"hgW=(mm$P3q*Fs3s"F=)s"XO/s"j[3q_eC3s#9t)s*juus+:9(s+^Q0
+s,$c6s,I&>s,m>Fs-<VMs-NbQs-itXs.97`s.]Ogs/#Uis'l":s'Yk9s'u(>s(24 at s'Yk3s&oA&
+q,IAqs&f;%s&K)4s(;:As'l"9s'>Y.s&]5#s&/kns%WMes%<:krCHsCs+UK+s+C9%s+13#q`sm?
+mlpOIq*+7rq*(SRZTe<fiBH^ZeNSQaJcC<$]Dqm2U]5i~>
+JcFm4rr at WMJcFF'msaI"hgW=(mm$P3q*Frirt,, at rt>>FrtPJJq\K2JrttbIrt>>GrtYPMru(hT
+ruD%Zru_7as!.Ois!Rgqs!n%"s"==*s"aU2s#0m9s#Ks;s$QfQs$?ZPs$ZlUs$m#Ws$H`Ks#U0=
+q)/13s#U0>s#0mjs(;:As'l"9s'>Y.s&]5#s&/kns%WMes%<:krCHsCs+UK+s+C9%s+13#q`sm?
+mlpOIq*+7rq*(SRZTe<fiBH^ZeNSQaJcC<$]Dqm2U]5i~>
+JcFm4rr at WMJcFF'n"o4IrQY)^s3L_ls4@;(s4dA)s5*_Bs6p!Xs76'YrUfpYq=a^[q=s^[p\O^_
+p\aX]jd4/CfpCh!rrE#rnc&"Us8;imrVHQis7lWgs0r$9s0Vg4s7$'Us6K^Ks3CYds2=rOs1/0;
+s/c6ts/#V?s37>=Z_[P2iM>q=o;)D]rM'7arLj+]qk!hYs.'+XJcC<$JcE@^rrAhoJ,~>
+JcFm4rr at WMJcFF'msaI"hgW=(mm$P3q*Fs3s"F=)s"XO/s"j[3q_eC3s#9t)s*juus+:9(s+^Q0
+s,$c6s,I&>s,m>Fs-<VMs-NbQs-itXs.97`s.]Ogs/#Uis'l":s'Yk9s'u(>s(24 at s'Yk3s&oA&
+q,IAqs&f;%s&K)4s(;:As'l"9s'>Y.s&]5#s&/kns%WMes%<:krCHsCs+UK+s+C9%s+13#q`sm?
+mlpOIq*+7rq*(SRZTe<fiBH^ZeNSQaJcC<$]Dqm2U]5i~>
+JcFm4rr at WMJcFR+omYs$eUGP&mm$V5q*G#jr=Ao>rt58DrtGDHs%!)[s%35_s%EAcs%WMhs&&e=
+s!%I]ruD%[ru_7as!%Igs!@[ls![mss""+$s"FC,s"j[4s#9s<s#U0Bs$$HLs$6TUs%*/[s%*/]
+s%<;as%WMcs%!)Us$$HEs$?ZXs%35[s$QfNs#g<As#9s.s(D at Cs'u(;s'G_0s&oA&s&8qps%iYg
+rrE'jrJ1E-s+UK+rIb-%s+129q`sm?q*+TSo02Pjq*(#Bs*hdJr;cRUm=*SLJcC<$JcDeNrrAho
+J,~>
+JcFm4rr at WMJcFR+oqg^Ks31Mfo?RB^s3q#%s4m;(s5<q:s5a4Ms7?-[q=XXYq=j^[q>'j_p\X^_
+nbr!En,<3Od=]u9s+BS7rrE)tn,DeSs8;oos8)cks186 at s0r$:s7H?_s763Zs6fpRs69R2s31M`
+s2"`Is0r$3s/GsoqpGGjPQ1ZZ_5.$@pS at 2QqkWt]rM'7aqk3hYrLX%Zs-\H<JcC<$X8i2"U]5i~>
+JcFm4rr at WMJcFR+omYs$eUGP&mm$V5q*G$4r@\+'s"OI-s"aU1s%!)[s%35_s%EAcs%WMhs&&fN
+s+p]1s,$c6s,I&>s,d8Ds-*JJs-E\Ps-s%Ws.'+\s.KCcs.fUjs/5mrs/Z1's/l<9s(D at Ds(D at F
+s(VLKs)%dMs(24=s'>Y.s'YkAs(MFDs'bq6s'#G)s&T/cs(D at Cs'u(;s'G_0s&oA&s&8qps%iYg
+rrE'jrJ1E-s+UK+rIb-%s+129q`sm?q*+TSo02Pjq*(#Bs*hdJr;cRUm=*SLJcC<$JcDeNrrAho
+J,~>
+JcFm4rr at WMJcFR+omYs$eUGP&mm$V5q*G#jr=Ao>rt58DrtGDHs%!)[s%35_s%EAcs%WMhs&&e=
+s!%I]ruD%[ru_7as!%Igs!@[ls![mss""+$s"FC,s"j[4s#9s<s#U0Bs$$HLs$6TUs%*/[s%*/]
+s%<;as%WMcs%!)Us$$HEs$?ZXs%35[s$QfNs#g<As#9s.s(D at Cs'u(;s'G_0s&oA&s&8qps%iYg
+rrE'jrJ1E-s+UK+rIb-%s+129q`sm?q*+TSo02Pjq*(#Bs*hdJr;cRUm=*SLJcC<$JcDeNrrAho
+J,~>
+JcFm4rr at WMJcFR+oqg^Ks31Mfo?RB^s3q#%s4m;(s5<q:s5a4Ms7?-[q=XXYq=j^[q>'j_p\X^_
+nbr!En,<3Od=]u9s+BS7rrE)tn,DeSs8;oos8)cks186 at s0r$:s7H?_s763Zs6fpRs69R2s31M`
+s2"`Is0r$3s/GsoqpGGjPQ1ZZ_5.$@pS at 2QqkWt]rM'7aqk3hYrLX%Zs-\H<JcC<$X8i2"U]5i~>
+JcFm4rr at WMJcFR+omYs$eUGP&mm$V5q*G$4r@\+'s"OI-s"aU1s%!)[s%35_s%EAcs%WMhs&&fN
+s+p]1s,$c6s,I&>s,d8Ds-*JJs-E\Ps-s%Ws.'+\s.KCcs.fUjs/5mrs/Z1's/l<9s(D at Ds(D at F
+s(VLKs)%dMs(24=s'>Y.s'YkAs(MFDs'bq6s'#G)s&T/cs(D at Cs'u(;s'G_0s&oA&s&8qps%iYg
+rrE'jrJ1E-s+UK+rIb-%s+129q`sm?q*+TSo02Pjq*(#Bs*hdJr;cRUm=*SLJcC<$JcDeNrrAho
+J,~>
+JcFm4rr at WMJcFX-s*if(bC7]"o0;t7q*Frirt,, at rt>?$s%!)[rCR#]s%EAcs%`Sis&&eps&T.G
+s![mss"46rs!Iaos!dsts""+#s"47's"OI.s"sa6s#C$>s#g<Fs$?ZRs%<;_s%r_jrD!;es%iYk
+s&/kqs%iYqs&oA+s&oA's&8qns%NGas$crRs$$HFs#L*;s(MFEs().=s'Pe2s'#G(s&B"rs%r^q
+s%EBJrJ1E-s+UK+s+C?'s$H`Oq`t*Eq*+ZUlTX]bq*'B0rVum-dsh5qd6<-]JcC<$Q2gjaU]5i~>
+JcFm4rr at WMJcFX-s/"QOs2b5`s31MgrQkMks3LSfs4./&s5!_3s53k7s5O"8s53k7s5O(>s60LJ
+s6]^Vq=aXYqtU!_q>0pap\a at Uop=k?q3T]cc^3trrrE)tnc&"Us8;oos1JBDs187)s7ZKcs7H?_
+s763Zs6fpRs6BXJs3L_es2=rOs1/08s/l=!s/,gmq9acnrVunTe#!'ks((Sno:l2Wqk3t]s.01[
+JcC<$JcD#8rrAhoJ,~>
+JcFm4rr at WMJcFX-s*if(bC7]"o0;t7q*Fs3s"F=)s"XOCs%!)[rCR#]s%EAcs%`Sis&&eps&T/X
+s,I&?s-!DGs-<VMs-NbQs-itWs.'+[s.97`s.]Ogs/#ans/H%!s/uC.s0r$:s)n?]s).jQs)%dS
+s)J!Zs)7pZs*4Qis*4Qes)S-Ws(hXIs().;s'>Y.s&]5#s(MFEs().=s'Pe2s'#G(s&B"rs%r^q
+s%EBJrJ1E-s+UK+s+C?'s$H`Oq`t*Eq*+ZUlTX]bq*'B0rVum-dsh5qd6<-]JcC<$Q2gjaU]5i~>
+JcFm4rr at WMJcFX-s*if(bC7]"o0;t7q*Frirt,, at rt>?$s%!)[rCR#]s%EAcs%`Sis&&eps&T.G
+s![mss"46rs!Iaos!dsts""+#s"47's"OI.s"sa6s#C$>s#g<Fs$?ZRs%<;_s%r_jrD!;es%iYk
+s&/kqs%iYqs&oA+s&oA's&8qns%NGas$crRs$$HFs#L*;s(MFEs().=s'Pe2s'#G(s&B"rs%r^q
+s%EBJrJ1E-s+UK+s+C?'s$H`Oq`t*Eq*+ZUlTX]bq*'B0rVum-dsh5qd6<-]JcC<$Q2gjaU]5i~>
+JcFm4rr at WMJcFX-s/"QOs2b5`s31MgrQkMks3LSfs4./&s5!_3s53k7s5O"8s53k7s5O(>s60LJ
+s6]^Vq=aXYqtU!_q>0pap\a at Uop=k?q3T]cc^3trrrE)tnc&"Us8;oos1JBDs187)s7ZKcs7H?_
+s763Zs6fpRs6BXJs3L_es2=rOs1/08s/l=!s/,gmq9acnrVunTe#!'ks((Sno:l2Wqk3t]s.01[
+JcC<$JcD#8rrAhoJ,~>
+JcFm4rr at WMJcFX-s*if(bC7]"o0;t7q*Fs3s"F=)s"XOCs%!)[rCR#]s%EAcs%`Sis&&eps&T/X
+s,I&?s-!DGs-<VMs-NbQs-itWs.'+[s.97`s.]Ogs/#ans/H%!s/uC.s0r$:s)n?]s).jQs)%dS
+s)J!Zs)7pZs*4Qis*4Qes)S-Ws(hXIs().;s'>Y.s&]5#s(MFEs().=s'Pe2s'#G(s&B"rs%r^q
+s%EBJrJ1E-s+UK+s+C?'s$H`Oq`t*Eq*+ZUlTX]bq*'B0rVum-dsh5qd6<-]JcC<$Q2gjaU]5i~>
+R/c[VhuE]VJcC<$^]2-!ffndfq`smAr=Ao>rt58DrC6fWs%*/]s%<5_s%WMgs%r_ns&8qts&]5'
+s',LRs"47)s"j[5s"47's"OI-s"aU1s"sa5s#9s<s#^6Ds$ZfVs%NGis',M+s&]5"s&/kqs&B##
+s'5S4s(;:Ds(24?s'Yk5s'>Y.s&]5!s%iYfs%!)Ws$?ZKs#^65s""+^s(24>s'Yk4s'#G)s&K(t
+rrE(Ys,-i4s+gQ-s+UK*rBgNMs$6BEq#KSAl[JXnJcEjlr;_EKJcC<$JcG!7rrAhoJ,~>
+R/c[VhuE]VJcC<$^]4>Ss2k;`s31Mfs3CMfs3q"qrQbGts5*e5s5<q9s5O(>s5j.:s5X.?s6BXM
+s6fjSs7$!\qtKp]qt^'aq>9pakPb.Ahu3;9hh0+=rIaS;rrDTgnbrL%rOr6Ds8)cks7cQes7QEa
+s7?9]s7$'Vs6TdOs69R3s31M`s2"`Js0hs3s/Q$ps/#V?s3Q>saoD;>JcC<$JcC<$l2Ub`U]5i~>
+R/c[VhuE]VJcC<$^]2-!ffndfq`smAr@\+'s"OI-rC6fWs%*/]s%<5_s%WMgs%r_ns&8qts&]5'
+s',Mbs-*JJs-`hUs.01]s.B=as.]Ifs/#ans/H%!s0DU3s186Fs+^Q*s*juns)n?_s)e9es+(-'
+rJ:K,s+13"s*aops*=Wes)J'Us(VLFs'l"8s'>Y.s-itSs(D at Cs'l"9s'>Y.s&f;$s&8pts,I&9
+s+p]1rJ(?+s+C8:s$?ZMq*4ZTk<A3\q*'B0aoD;>JcC<$JcC<$l2Ub`U]5i~>
+R/c[VhuE]VJcC<$^]2-!ffndfq`smAr=Ao>rt58DrC6fWs%*/]s%<5_s%WMgs%r_ns&8qts&]5'
+s',LRs"47)s"j[5s"47's"OI-s"aU1s"sa5s#9s<s#^6Ds$ZfVs%NGis',M+s&]5"s&/kqs&B##
+s'5S4s(;:Ds(24?s'Yk5s'>Y.s&]5!s%iYfs%!)Ws$?ZKs#^65s""+^s(24>s'Yk4s'#G)s&K(t
+rrE(Ys,-i4s+gQ-s+UK*rBgNMs$6BEq#KSAl[JXnJcEjlr;_EKJcC<$JcG!7rrAhoJ,~>
+R/c[VhuE]VJcC<$^]4>Ss2k;`s31Mfs3CMfs3q"qrQbGts5*e5s5<q9s5O(>s5j.:s5X.?s6BXM
+s6fjSs7$!\qtKp]qt^'aq>9pakPb.Ahu3;9hh0+=rIaS;rrDTgnbrL%rOr6Ds8)cks7cQes7QEa
+s7?9]s7$'Vs6TdOs69R3s31M`s2"`Js0hs3s/Q$ps/#V?s3Q>saoD;>JcC<$JcC<$l2Ub`U]5i~>
+R/c[VhuE]VJcC<$^]2-!ffndfq`smAr@\+'s"OI-rC6fWs%*/]s%<5_s%WMgs%r_ns&8qts&]5'
+s',Mbs-*JJs-`hUs.01]s.B=as.]Ifs/#ans/H%!s0DU3s186Fs+^Q*s*juns)n?_s)e9es+(-'
+rJ:K,s+13"s*aops*=Wes)J'Us(VLFs'l"8s'>Y.s-itSs(D at Cs'l"9s'>Y.s&f;$s&8pts,I&9
+s+p]1rJ(?+s+C8:s$?ZMq*4ZTk<A3\q*'B0aoD;>JcC<$JcC<$l2Ub`U]5i~>
+R/c[VhuE]VJcC<$`W*Jth`g?jq`t$ErBgMqr=T&us$m#YrCHr[s%<;as%NAcs%iYls&8qts&]5'
+s',M.s'G_6s"XO3s#U0ArB1*:s#'g8s#C$=s#^6Cs$$HTq,dT*s'u(;s'Ye6s'l"=s(MFLq/?:M
+s(VLFs().=s'bq6s'#G's&/kls%<;\s$QfPs$$H;s"==bs(24>s'Pe3s'#G(s&B!us,R,<s,$c3
+s+gW/s+UJ at rBgNMs$6A\rBKC-l$iFlJcE^hr;_EKJcC<$JcG-;rrAhoJ,~>
+R/c[VhuE]VJcC<$`W,tYs2b5^s2tAcs3:Shs3LShs3gqts3q"trS[Y5s5O(=s5j:Ds60LFrT!q>
+s6]jSs6odRs763aqtU!_qtg-cq>B.Kqj5q5op=io`L$OUnbrIfoD\L_q7ch*s82ims7u]gs7QEa
+rU^'[s7--Xs6]jQs6BX6s3L_es2=rPs186:s/l="s/,akq9acn`W,l:JcC<$JcC<$mJm1dU]5i~>
+R/c[VhuE]VJcC<$`W*Jth`g?jq`t$ErBgN;r at n7?s$m#YrCHr[s%<;as%NAcs%iYls&8qts&]5'
+s',M.s'G_6s-NbTs.KCcrM'=es.o[ls/>sss/Q+"s/l=3rPnlXs2P)#s-*JCs,6o7s,6o9rJgi>
+s-<VKs-*JFs,I&7s+UK*s+13"s*aoms)e9[s(q^Ks(24>s'Pe2s.'+Ws(MFDs'l"8s'>Y.s&]5"
+rrE(Zs,?u7s+p]1s+^Q-s$ZfPs$?ZMq#UFYjZ_pXq*'B0`W,l:JcC<$JcC<$mJm1dU]5i~>
+R/c[VhuE]VJcC<$`W*Jth`g?jq`t$ErBgMqr=T&us$m#YrCHr[s%<;as%NAcs%iYls&8qts&]5'
+s',M.s'G_6s"XO3s#U0ArB1*:s#'g8s#C$=s#^6Cs$$HTq,dT*s'u(;s'Ye6s'l"=s(MFLq/?:M
+s(VLFs().=s'bq6s'#G's&/kls%<;\s$QfPs$$H;s"==bs(24>s'Pe3s'#G(s&B!us,R,<s,$c3
+s+gW/s+UJ at rBgNMs$6A\rBKC-l$iFlJcE^hr;_EKJcC<$JcG-;rrAhoJ,~>
+R/c[VhuE]VJcC<$`W,tYs2b5^s2tAcs3:Shs3LShs3gqts3q"trS[Y5s5O(=s5j:Ds60LFrT!q>
+s6]jSs6odRs763aqtU!_qtg-cq>B.Kqj5q5op=io`L$OUnbrIfoD\L_q7ch*s82ims7u]gs7QEa
+rU^'[s7--Xs6]jQs6BX6s3L_es2=rPs186:s/l="s/,akq9acn`W,l:JcC<$JcC<$mJm1dU]5i~>
+R/c[VhuE]VJcC<$`W*Jth`g?jq`t$ErBgN;r at n7?s$m#YrCHr[s%<;as%NAcs%iYls&8qts&]5'
+s',M.s'G_6s-NbTs.KCcrM'=es.o[ls/>sss/Q+"s/l=3rPnlXs2P)#s-*JCs,6o7s,6o9rJgi>
+s-<VKs-*JFs,I&7s+UK*s+13"s*aoms)e9[s(q^Ks(24>s'Pe2s.'+Ws(MFDs'l"8s'>Y.s&]5"
+rrE(Zs,?u7s+p]1s+^Q-s$ZfPs$?ZMq#UFYjZ_pXq*'B0`W,l:JcC<$JcC<$mJm1dU]5i~>
+R/d*be,TFJJcC<$c2XnpiBHp!og&C?s$HYqrt59"s$m#Ys%*/]s%<5_s%NGes%`Mgs%r_ms&8qu
+s&f;)s'5S1s().Bs(q^SrH&!\s$?ZOs#L*@s#g<Es&/kus(M at LrG_XRs)S-]s)n?bms"eRs)A!S
+s(VLFs().<s'>Y-s&K(rs%WMas$crSs$-N<s"==%s(24=s'Pe2s&oAerrE(\s,R,;s,$c3s+gW.
+s$ZlRr<*'$rBU*Aks"?\ofds,_uKT6JcC<$JcC<$oDegjU]5i~>
+R/d*be,TFJJcC<$c2[g_s2P)Zs2b5^s2tAcs3:GerR(Sjs4%)#s53_5s5X.?s5j:Cs60LJs6K^O
+rT4(Ks7,pUrU^![s7Q9bqtg-cq>B(Iqj5G'rKm20\!QuEp\k-krrDZirVcW-qu-KkrVQWks7cQd
+s7H?_s76-Ys6p!Us6]jPs474ts31Mas2=rQs1/07s/Z0ts/,gmpX0#^JcEXfqZ)3IJcC<$JcG?A
+rrAhoJ,~>
+R/d*be,TFJJcC<$c2XnpiBHp!og&C?s$HZ;s"OIAs$m#Ys%*/]s%<5_s%NGes%`Mgs%r_ms&8qu
+s&f;)s'5S1s().Bs(q^SrH&!\s/5gos/Q%"s2+fWs.fUqs/uC+s/l=#s.o[is/#ans/>sts/Z0u
+s.]I`s.01Zs-itUs-3PEs,6o5s+UK*s+(,ss*4Qbs)7pQs(D at As'Yk4s.'+Ws-E[rs'bq7s'5S,
+s-<Tas,d8 at s,6o6s+p]1s+UJ at s$HYdrrW-apHRn+l$i:hJcEXfqZ)3IJcC<$JcG?ArrAhoJ,~>
+R/d*be,TFJJcC<$c2XnpiBHp!og&C?s$HYqrt59"s$m#Ys%*/]s%<5_s%NGes%`Mgs%r_ms&8qu
+s&f;)s'5S1s().Bs(q^SrH&!\s$?ZOs#L*@s#g<Es&/kus(M at LrG_XRs)S-]s)n?bms"eRs)A!S
+s(VLFs().<s'>Y-s&K(rs%WMas$crSs$-N<s"==%s(24=s'Pe2s&oAerrE(\s,R,;s,$c3s+gW.
+s$ZlRr<*'$rBU*Aks"?\ofds,_uKT6JcC<$JcC<$oDegjU]5i~>
+R/d*be,TFJJcC<$c2[g_s2P)Zs2b5^s2tAcs3:GerR(Sjs4%)#s53_5s5X.?s5j:Cs60LJs6K^O
+rT4(Ks7,pUrU^![s7Q9bqtg-cq>B(Iqj5G'rKm20\!QuEp\k-krrDZirVcW-qu-KkrVQWks7cQd
+s7H?_s76-Ys6p!Us6]jPs474ts31Mas2=rQs1/07s/Z0ts/,gmpX0#^JcEXfqZ)3IJcC<$JcG?A
+rrAhoJ,~>
+R/d*be,TFJJcC<$c2XnpiBHp!og&C?s$HZ;s"OIAs$m#Ys%*/]s%<5_s%NGes%`Mgs%r_ms&8qu
+s&f;)s'5S1s().Bs(q^SrH&!\s/5gos/Q%"s2+fWs.fUqs/uC+s/l=#s.o[is/#ans/>sts/Z0u
+s.]I`s.01Zs-itUs-3PEs,6o5s+UK*s+(,ss*4Qbs)7pQs(D at As'Yk4s.'+Ws-E[rs'bq7s'5S,
+s-<Tas,d8 at s,6o6s+p]1s+UJ at s$HYdrrW-apHRn+l$i:hJcEXfqZ)3IJcC<$JcG?ArrAhoJ,~>
+R/d*be,TFJJcC<$ec2=lk<AQ'pH\UAs$H_hrt,2Bs$ZlUs$m#Ys%*/]s%<;as%WGes%iYkrDESm
+s&8qss&T/%s'>Y?s)%dRs)A![s*+EdrH\Ehs*Oc^s)n?bs*+Kfs*=Wjs*XiqrIFcrs+C?)s+:9$
+s*juqs*OcopO<-hs*+Kas)A!Ss(MFDs'Yk3s&]4us%`Scs$crSs"sa1s"==%s(24=s'G_0s-N`c
+s-!DCs,I&9s+p[]rs/Q.rri?grB^BIofqh-kC3(fJcEF`r;_EKJcC<$JcGKErrAhoJ,~>
+R/d*be,TFJJcC<$ec5Zfs2FrVs2Y/\s2k;as31Mfs3CYkp!Nfhs4mY2s5X";s5j:Cs6'FHs6K^P
+s6fpUs6K^Uqt'XUrUp-_s7cQgs8)Wiq>AqEs+C9:^\t:$q1JMAs8N#up\t2BqnDh'rVZWks8)ci
+s7H?_rUU!Ys7$'Ws6fpSs6K^:s4..ss3CYds2G#Qs1&*6s/l<urMB89s3-&o^&S$2JcC<$JcC<$
+p](6nU]5i~>
+R/d*be,TFJJcC<$ec2=lk<AQ'pH\UAs$H`Es"FC+s$ZlUs$m#Ys%*/]s%<;as%WGes%iYkrDESm
+s&8qss&T/%s'>Y?s)%dRs)A![s*+EdrH\Ehs*OdAs0)I.s0_m8s1/0As1eTNs1nZHs0r$:s1&*?
+s1A<Bs1&*7s/c6us/>sts/Z+"s/Q*ps-E\Ks,[2<s+gW,s*t&ps)n?]s(q^Ks().;s.KC_s-itR
+s(24=s'G_0s-N`cs-!DCs,I&9s+p[]rs/Q.rri?grB^BIofqh-kC3(fJcEF`r;_EKJcC<$JcGKE
+rrAhoJ,~>
+R/d*be,TFJJcC<$ec2=lk<AQ'pH\UAs$H_hrt,2Bs$ZlUs$m#Ys%*/]s%<;as%WGes%iYkrDESm
+s&8qss&T/%s'>Y?s)%dRs)A![s*+EdrH\Ehs*Oc^s)n?bs*+Kfs*=Wjs*XiqrIFcrs+C?)s+:9$
+s*juqs*OcopO<-hs*+Kas)A!Ss(MFDs'Yk3s&]4us%`Scs$crSs"sa1s"==%s(24=s'G_0s-N`c
+s-!DCs,I&9s+p[]rs/Q.rri?grB^BIofqh-kC3(fJcEF`r;_EKJcC<$JcGKErrAhoJ,~>
+R/d*be,TFJJcC<$ec5Zfs2FrVs2Y/\s2k;as31Mfs3CYkp!Nfhs4mY2s5X";s5j:Cs6'FHs6K^P
+s6fpUs6K^Uqt'XUrUp-_s7cQgs8)Wiq>AqEs+C9:^\t:$q1JMAs8N#up\t2BqnDh'rVZWks8)ci
+s7H?_rUU!Ys7$'Ws6fpSs6K^:s4..ss3CYds2G#Qs1&*6s/l<urMB89s3-&o^&S$2JcC<$JcC<$
+p](6nU]5i~>
+R/d*be,TFJJcC<$ec2=lk<AQ'pH\UAs$H`Es"FC+s$ZlUs$m#Ys%*/]s%<;as%WGes%iYkrDESm
+s&8qss&T/%s'>Y?s)%dRs)A![s*+EdrH\Ehs*OdAs0)I.s0_m8s1/0As1eTNs1nZHs0r$:s1&*?
+s1A<Bs1&*7s/c6us/>sts/Z+"s/Q*ps-E\Ks,[2<s+gW,s*t&ps)n?]s(q^Ks().;s.KC_s-itR
+s(24=s'G_0s-N`cs-!DCs,I&9s+p[]rs/Q.rri?grB^BIofqh-kC3(fJcEF`r;_EKJcC<$JcGKE
+rrAhoJ,~>
+R/d*be,TFJJcC<$huAsjmlp8+pH\[CrBgMfrt,2urC-`UrC?lYs%<;cs%iMhs&/eos&Aqss&T/+
+s(q^Ys*+Kfs*=Wks*aous,$c;s-WhYs/#aps/Z0Fs*Ocos*jors+13&s+UK.s,$W2s,-i4s+^Q,
+s+:3"s+:9's+LE+s+^Q-s+13!s*F]fs)A!Rs(;:>s'>Y,s&8qns%EA^s#C$9s"XO+s""*ss'bqt
+s-`les-3Nsrt,2?rsSiss$m#Ws$QfQrB^<Gofqt1kC3"dJcE:\r;_EKJcC<$JcGWIrrAhoJ,~>
+R/d*be,TFJJcC<$huEYnrPefVrQ"rZs2k;`s3(Ges3CYjs3UenpX9)ms4[M1s5!Y8rT=.Cs60LI
+s6BXNs6fpUs7--[s7?3]qt9j[rV-9cs7uWiqu"qAs+C?<\c&^uon3;CrVlfss8MhDnbrFarVQWk
+s7lWcrUTpWs7$'Ws6fpSs6K^;s475!s3L_hs2k;\s2+fNs1A<?s/Z0rp!NfcJcE:\r;_EKJcC<$
+JcGWIrrAhoJ,~>
+R/d*be,TFJJcC<$huAsjmlp8+pH\[CrBgNIs"j[CrC-`UrC?lYs%<;cs%iMhs&/eos&Aqss&T/+
+s(q^Ys*+Kfs*=Wks*aous,$c;s-WhYs/#aps/Z1/s186Ds1eTNs2=rXs2tA^s2=rSs2=fRs2=rQ
+s186;s0)I*s02O0s0_m9rODm&s.B=[s-3PEs,-i0s+(,rs*+K`s)%dMs(25+s.KC_s-itRs-!Cj
+s.'+WrrE(`rtGDDrso&:s%!)Ys$crTs$HZMq`sg=nNQ,bo0.a*\c;U.JcC<$JcC<$qu?ZrU]5i~>
+R/d*be,TFJJcC<$huAsjmlp8+pH\[CrBgMfrt,2urC-`UrC?lYs%<;cs%iMhs&/eos&Aqss&T/+
+s(q^Ys*+Kfs*=Wks*aous,$c;s-WhYs/#aps/Z0Fs*Ocos*jors+13&s+UK.s,$W2s,-i4s+^Q,
+s+:3"s+:9's+LE+s+^Q-s+13!s*F]fs)A!Rs(;:>s'>Y,s&8qns%EA^s#C$9s"XO+s""*ss'bqt
+s-`les-3Nsrt,2?rsSiss$m#Ws$QfQrB^<Gofqt1kC3"dJcE:\r;_EKJcC<$JcGWIrrAhoJ,~>
+R/d*be,TFJJcC<$huEYnrPefVrQ"rZs2k;`s3(Ges3CYjs3UenpX9)ms4[M1s5!Y8rT=.Cs60LI
+s6BXNs6fpUs7--[s7?3]qt9j[rV-9cs7uWiqu"qAs+C?<\c&^uon3;CrVlfss8MhDnbrFarVQWk
+s7lWcrUTpWs7$'Ws6fpSs6K^;s475!s3L_hs2k;\s2+fNs1A<?s/Z0rp!NfcJcE:\r;_EKJcC<$
+JcGWIrrAhoJ,~>
+R/d*be,TFJJcC<$huAsjmlp8+pH\[CrBgNIs"j[CrC-`UrC?lYs%<;cs%iMhs&/eos&Aqss&T/+
+s(q^Ys*+Kfs*=Wks*aous,$c;s-WhYs/#aps/Z1/s186Ds1eTNs2=rXs2tA^s2=rSs2=fRs2=rQ
+s186;s0)I*s02O0s0_m9rODm&s.B=[s-3PEs,-i0s+(,rs*+K`s)%dMs(25+s.KC_s-itRs-!Cj
+s.'+WrrE(`rtGDDrso&:s%!)Ys$crTs$HZMq`sg=nNQ,bo0.a*\c;U.JcC<$JcC<$qu?ZrU]5i~>
+R/d0ds8Vfnh>dKTJcC<$l2QTho02\/q*=mErBgGes$Q`Qs$crWs%!)[s%EAds%iYls&8eorDiku
+s'YkNs*Ocns*aoss+:9)s+gW2s,6o:s,[2Fs.'+_s.o[ms/Z1&s*juts+13%s+LE+s+^Q0s,-?)
+s,-i4s+^Q,s+UK.s+p]3s,-i7s,-i1s+(,rs*"E^s(q^Js'l"7s&oA%s%r_hs#pBBs#'g3s"==%
+s!du at ruV1?rtk]ts,6o6s%!)Ys$crUs$QfQrB^<GnNZb3jaQebJcE.Xr;_EKJcC<$JcGcMrrAho
+J,~>
+R/d0ds8Vfnh>dKTJcC<$l2URurPnfVrQ,#\s2tAbs31Mfs3L_ls3^enqpYSqs4RG-s5<q;s5F"=
+rTF.Cs69RKs6TdQs6p!Xs763]s7H9_rV$']s7lQgrVHQkrVY(ArI_NVYF"j5s8N%JrrE(Kqu6-a
+rVZWkrVHQerUTpWs7$'Ws6fpSs6Td=s4@;#s3Uejs2tA^s2=rQs1SHCs0Vg/s/>V<s3H8r[K$1*
+JcC<$JcC<$s8W*!U]5i~>
+R/d0ds8Vfnh>dKTJcC<$l2QTho02\/q*=mErBgNEs$$HMrC$ZSs$m#Ys%*/_s%WMhs&&epqc*Mo
+s&T/-s*+Kis*Xips*t'#s+UK.s,$c6s,I&>s-<VSs.TIgs/5mts/uC9s2"`Rs2Y/^s3:Sis3^kl
+s3(Gas2Y/\qoSlZs24lMs1/0;s0r$=s1A<Es1eTIs0)I$s.fUbs-NbJs,?u5s+12ts*4Qbs).jO
+s/H$ps.TI`s-itRs-<VWruV1?rtk]ts,6o6s%!)Ys$crUs$QfQrB^<GnNZb3jaQebJcE.Xr;_EK
+JcC<$JcGcMrrAhoJ,~>
+R/d0ds8Vfnh>dKTJcC<$l2QTho02\/q*=mErBgGes$Q`Qs$crWs%!)[s%EAds%iYls&8eorDiku
+s'YkNs*Ocns*aoss+:9)s+gW2s,6o:s,[2Fs.'+_s.o[ms/Z1&s*juts+13%s+LE+s+^Q0s,-?)
+s,-i4s+^Q,s+UK.s+p]3s,-i7s,-i1s+(,rs*"E^s(q^Js'l"7s&oA%s%r_hs#pBBs#'g3s"==%
+s!du at ruV1?rtk]ts,6o6s%!)Ys$crUs$QfQrB^<GnNZb3jaQebJcE.Xr;_EKJcC<$JcGcMrrAho
+J,~>
+R/d0ds8Vfnh>dKTJcC<$l2URurPnfVrQ,#\s2tAbs31Mfs3L_ls3^enqpYSqs4RG-s5<q;s5F"=
+rTF.Cs69RKs6TdQs6p!Xs763]s7H9_rV$']s7lQgrVHQkrVY(ArI_NVYF"j5s8N%JrrE(Kqu6-a
+rVZWkrVHQerUTpWs7$'Ws6fpSs6Td=s4@;#s3Uejs2tA^s2=rQs1SHCs0Vg/s/>V<s3H8r[K$1*
+JcC<$JcC<$s8W*!U]5i~>
+R/d0ds8Vfnh>dKTJcC<$l2QTho02\/q*=mErBgNEs$$HMrC$ZSs$m#Ys%*/_s%WMhs&&epqc*Mo
+s&T/-s*+Kis*Xips*t'#s+UK.s,$c6s,I&>s-<VSs.TIgs/5mts/uC9s2"`Rs2Y/^s3:Sis3^kl
+s3(Gas2Y/\qoSlZs24lMs1/0;s0r$=s1A<Es1eTIs0)I$s.fUbs-NbJs,?u5s+12ts*4Qbs).jO
+s/H$ps.TI`s-itRs-<VWruV1?rtk]ts,6o6s%!)Ys$crUs$QfQrB^<GnNZb3jaQebJcE.Xr;_EK
+JcC<$JcGcMrrAhoJ,~>
+RfDgVhuE]VJcC<$li2Tdk<Ji/qa(6KrrrE,s$Q`Qs$crWs%<;ds%r_ms&8qss&T.Es!dt&s#C$C
+s$Zm7s*t'"s+C?*s+^Q0s,$c7s,[2Cs-E\Ps-s%[s.KCes/5mss/l=+s+13&s+LE,s+p]3j,<qo
+s,-Q/s,$c0s+12ts*+K`s)%dLs().:s'#G's%!)Vs$-NEs#0m3s"47!s!%K4rrE([s,I&;s%<;_
+s%!)Xs$ZlSrBgNMq*=O9q**nhnNMO(Z2ab&JcC<$JcCB&rrAhoJ,~>
+RfDgVhuE]VJcC<$li6_!s2Y/\rQ5)^s3(Gds3:Shs3L_ms3gkprRCkts475%s4[M0s5Eq<s5X.C
+rTX at Is6K^Os6]jTs7$'Zs7?3]s7QEcrV-9cqt^3es82cmrVcQkg&:l%l2C:AfDVt at pOiKsqg\YF
+rrDrqq>L!arVQWkrV?Kgs7cQds7?9[s6p!Us6]jQs4RG(s4..ss3CYgs2k;\s2+fNs1A<?s0;U)
+o?mTaJcE"Tr;_EKJcC<$KE(rOU]5i~>
+RfDgVhuE]VJcC<$li2Tdk<Ji/qa(6Ks#U0Fs$Q`Qs$crWs%<;ds%r_ms&8qss&T/9s+(-,s,m>K
+s.'+:s*t'"s+C?*s+^Q0s,$c7s,[2Cs-E\Ps-s%[s.KCes/5mss/l=+s2P)[s3(Gfs3^krs475%
+s3^kls31McrQG/`s2tA]s24lQs1\NHs1nZNrPJTJs0Ma/s/Z0ss.KC\s-3PDs,$c/s*t&ps)e:H
+s/uC%s/,gjs.'+Vs-*JBs-s#gs,[2>s,?tMs%35\s$crUs$Q`Os$?HGo0<%7jaQ_`JcE"Tr;_EK
+JcC<$KE(rOU]5i~>
+RfDgVhuE]VJcC<$li2Tdk<Ji/qa(6KrrrE,s$Q`Qs$crWs%<;ds%r_ms&8qss&T.Es!dt&s#C$C
+s$Zm7s*t'"s+C?*s+^Q0s,$c7s,[2Cs-E\Ps-s%[s.KCes/5mss/l=+s+13&s+LE,s+p]3j,<qo
+s,-Q/s,$c0s+12ts*+K`s)%dLs().:s'#G's%!)Vs$-NEs#0m3s"47!s!%K4rrE([s,I&;s%<;_
+s%!)Xs$ZlSrBgNMq*=O9q**nhnNMO(Z2ab&JcC<$JcCB&rrAhoJ,~>
+RfDgVhuE]VJcC<$li6_!s2Y/\rQ5)^s3(Gds3:Shs3L_ms3gkprRCkts475%s4[M0s5Eq<s5X.C
+rTX at Is6K^Os6]jTs7$'Zs7?3]s7QEcrV-9cqt^3es82cmrVcQkg&:l%l2C:AfDVt at pOiKsqg\YF
+rrDrqq>L!arVQWkrV?Kgs7cQds7?9[s6p!Us6]jQs4RG(s4..ss3CYgs2k;\s2+fNs1A<?s0;U)
+o?mTaJcE"Tr;_EKJcC<$KE(rOU]5i~>
+RfDgVhuE]VJcC<$li2Tdk<Ji/qa(6Ks#U0Fs$Q`Qs$crWs%<;ds%r_ms&8qss&T/9s+(-,s,m>K
+s.'+:s*t'"s+C?*s+^Q0s,$c7s,[2Cs-E\Ps-s%[s.KCes/5mss/l=+s2P)[s3(Gfs3^krs475%
+s3^kls31McrQG/`s2tA]s24lQs1\NHs1nZNrPJTJs0Ma/s/Z0ss.KC\s-3PDs,$c/s*t&ps)e:H
+s/uC%s/,gjs.'+Vs-*JBs-s#gs,[2>s,?tMs%35\s$crUs$Q`Os$?HGo0<%7jaQ_`JcE"Tr;_EK
+JcC<$KE(rOU]5i~>
+RfE<dp](*joDegjnc/UhJcC<$li2NblTb83qa()_rt,2ts$cr[s%WMis&8qss&]4Is![mss"+1(
+s#'g<s$6TPs%35bs&&fNs,$c6s,I&?s-!DGs-E\Rs.'+\s.TIfs/,gps/Z1%s02O0s+C?+s+p]4
+c\qgZs+LE's*aols)\3Xs(VLEs'Yk2s%NG^s$?ZHs#'g4s""*qruh=^rrE(]s,R,<s%EAas%*/Z
+s$crUs$QfQrB^<Gofr79j*pM^JcDkPr;_EKJcC<$L]@ASU]5i~>
+RfE<dp](*joDegjnc/UhJcC<$li7")qoA`Xqo\r^s3:Shs3L_ls3^kqs4%"trRV#$s4[M-s4mY3
+s5X(@s5s at Gs6BRKs6TdQs6fpUs7--[s7H9_s7ZKerV6?eqtg?irVZ]on,D5Cqh+p8nbq^=g\nCD
+s+C,upOiJGqu6Eiq>C3grVHQirV6Ees7ZKcs7H?^s7$'Vs6Td>s4IA&s3q"ps3:Sds2Y/Xs1nZJ
+s186;s/uC$o?mT`JcDkPr;_EKJcC<$L]@ASU]5i~>
+RfE<dp](*joDegjnc/UhJcC<$li2NblTb83qa(6>s#pBMs%!)Vs$cr[s%WMis&8qss&]5=s*ap"
+s+^Q1s,[2Fs-s%[s.]Ojs/H$Qs,$c6s,I&?s-!DGs-E\Rs.'+\s.TIfs/,gps/Z1%s02O0s31Mh
+s3gqtrRh)%s4%(ss3Uejs3CMfs3:Scs2Y/Xs2+`PrP\`Ts1JB at s0Vg1s/c6us.fUbs-NbJs,?u5
+s+:8ss1&*6s/c6ts.KC`s-NbJs,?u7rrE(]s,R,<s%EAas%*/Zs$crUs$QfQrB^<Gofr79j*pM^
+JcDkPr;_EKJcC<$L]@ASU]5i~>
+RfE<dp](*joDegjnc/UhJcC<$li2NblTb83qa()_rt,2ts$cr[s%WMis&8qss&]4Is![mss"+1(
+s#'g<s$6TPs%35bs&&fNs,$c6s,I&?s-!DGs-E\Rs.'+\s.TIfs/,gps/Z1%s02O0s+C?+s+p]4
+c\qgZs+LE's*aols)\3Xs(VLEs'Yk2s%NG^s$?ZHs#'g4s""*qruh=^rrE(]s,R,<s%EAas%*/Z
+s$crUs$QfQrB^<Gofr79j*pM^JcDkPr;_EKJcC<$L]@ASU]5i~>
+RfE<dp](*joDegjnc/UhJcC<$li7")qoA`Xqo\r^s3:Shs3L_ls3^kqs4%"trRV#$s4[M-s4mY3
+s5X(@s5s at Gs6BRKs6TdQs6fpUs7--[s7H9_s7ZKerV6?eqtg?irVZ]on,D5Cqh+p8nbq^=g\nCD
+s+C,upOiJGqu6Eiq>C3grVHQirV6Ees7ZKcs7H?^s7$'Vs6Td>s4IA&s3q"ps3:Sds2Y/Xs1nZJ
+s186;s/uC$o?mT`JcDkPr;_EKJcC<$L]@ASU]5i~>
+RfE<dp](*joDegjnc/UhJcC<$li2NblTb83qa(6>s#pBMs%!)Vs$cr[s%WMis&8qss&]5=s*ap"
+s+^Q1s,[2Fs-s%[s.]Ojs/H$Qs,$c6s,I&?s-!DGs-E\Rs.'+\s.TIfs/,gps/Z1%s02O0s31Mh
+s3gqtrRh)%s4%(ss3Uejs3CMfs3:Scs2Y/Xs2+`PrP\`Ts1JB at s0Vg1s/c6us.fUbs-NbJs,?u5
+s+:8ss1&*6s/c6ts.KC`s-NbJs,?u7rrE(]s,R,<s%EAas%*/Zs$crUs$QfQrB^<Gofr79j*pM^
+JcDkPr;_EKJcC<$L]@ASU]5i~>
+MZ<VTnc/Ofp&G$lJcC<$li2Nbs*jE$pH\aErri?*rt#,ArtbW0s%r_ns&K)#s&o at Ls!n%#s"OI/
+s#0m:s#g<Hs$ZlXs%NGis&K)Xs,R,As-*JJs-WhTs.01_s.fUjs/5mrs/c7's0;U1s0hs;s1A;g
+ac$1Ss+C?%s*Xils)e9Zs(hX;s&/kis$crPs#L*7s"FC%s!Iairu_7 at s-*JEs%WMes%<;_s%!)X
+rC$ZQs$HZMq`sm?rBB1hm66+$X8i%sJcC<$JcC`0rrAhoJ,~>
+MZ<VTnc/Ofp&G$lJcC<$li6q(s2b5^rQG5bs3:Shs3Uens3gqrs4.)!s4 at 5%s4RG,s5!_4s5<q<
+s60LIrTaFKs6TdQs6fjSs7$'Zs7?9`rV$9crV6EgrVHKirVZWml2K`ArIb!6p&4!=g&8CHs,6i,
+mt:W?rVlQiqu$EirVHQirV6Ees7ZEas7H?^s7--Js5*e0s4@;#s3^kls31Mbs2G#Ts1eTGs0r$5
+s/c1Ip!Nfbs1a-bX8i%sJcC<$JcC`0rrAhoJ,~>
+MZ<VTnc/Ofp&G$lJcC<$li2Nbs*jE$pH\aEs#C$Ds$ZlYs&/kls%r_ns&K)#s&oAPs+C?,s,-i9
+s,m>Gs-NbTs.B=es/5mts0)H]s,R,As-*JJs-WhTs.01_s.fUjs/5mrs/c7's0;U1s0hs;s1A<]
+s4IA)s4[M-s4mY/s4IA&s3pqoqpPMjs3:Sds2b5ZrPn`Ts1eTFrO2a2s/c7!s.fUds-itPs,[2+
+s1SH at s0;U)s.o[cs-itRs,m>As,6mWs-*JEs%WMes%<;_s%!)XrC$ZQs$HZMq`sm?rBB1hm66+$
+X8i%sJcC<$JcC`0rrAhoJ,~>
+MZ<VTnc/Ofp&G$lJcC<$li2Nbs*jE$pH\aErri?*rt#,ArtbW0s%r_ns&K)#s&o at Ls!n%#s"OI/
+s#0m:s#g<Hs$ZlXs%NGis&K)Xs,R,As-*JJs-WhTs.01_s.fUjs/5mrs/c7's0;U1s0hs;s1A;g
+ac$1Ss+C?%s*Xils)e9Zs(hX;s&/kis$crPs#L*7s"FC%s!Iairu_7 at s-*JEs%WMes%<;_s%!)X
+rC$ZQs$HZMq`sm?rBB1hm66+$X8i%sJcC<$JcC`0rrAhoJ,~>
+MZ<VTnc/Ofp&G$lJcC<$li6q(s2b5^rQG5bs3:Shs3Uens3gqrs4.)!s4 at 5%s4RG,s5!_4s5<q<
+s60LIrTaFKs6TdQs6fjSs7$'Zs7?9`rV$9crV6EgrVHKirVZWml2K`ArIb!6p&4!=g&8CHs,6i,
+mt:W?rVlQiqu$EirVHQirV6Ees7ZEas7H?^s7--Js5*e0s4@;#s3^kls31Mbs2G#Ts1eTGs0r$5
+s/c1Ip!Nfbs1a-bX8i%sJcC<$JcC`0rrAhoJ,~>
+MZ<VTnc/Ofp&G$lJcC<$li2Nbs*jE$pH\aEs#C$Ds$ZlYs&/kls%r_ns&K)#s&oAPs+C?,s,-i9
+s,m>Gs-NbTs.B=es/5mts0)H]s,R,As-*JJs-WhTs.01_s.fUjs/5mrs/c7's0;U1s0hs;s1A<]
+s4IA)s4[M-s4mY/s4IA&s3pqoqpPMjs3:Sds2b5ZrPn`Ts1eTFrO2a2s/c7!s.fUds-itPs,[2+
+s1SH at s0;U)s.o[cs-itRs,m>As,6mWs-*JEs%WMes%<;_s%!)XrC$ZQs$HZMq`sm?rBB1hm66+$
+X8i%sJcC<$JcC`0rrAhoJ,~>
+MZ<VTmJm%`qu?ZrJcC<$mJh`dq0qiuq*=r`rs/Q<rttbSs%`Sjs&8r!s'#FNs!n%#s"FC-s"sa8
+s#^6Fs$QfVs%<;cs%r_ps&f;,s-3PLs-WhUs.97as.o[ms/H%!s/l=)s0D[3s0r$=s1JBGs1cU4
+s,-i2s+C?$s)7pNs().8s&]4ss%35Ws#pBBs#0m4s"47"s!@[grrE(as&/kms%WMds%35]s$m#W
+s$ZlSs$HZMq`sm?s$#CjlTTn"V>pJoJcC<$JcCl4rrAhoJ,~>
+MZ<VTmJm%`qu?ZrJcC<$mJm.+s2k;`s31Gds3L_ls3gqrs4%)!s47/#rRq5)s4dS/s5*e6s5O(?
+s69LJs6T^Os6fpUs7$'YrUU!\s7Q?bs7lQgs8)]krVZWmhu;m=rIb!6p\j!9g\nmRq2=KirrE)u
+p\k!erVQWkrV?Ees7cQerUp3_s7?9]s5s at As53k2s4IA$s3Uejs2tA^s2=rQs1SHDs0Vg0s4%"q
+p!Nfas29KgV>pJoJcC<$JcCl4rrAhoJ,~>
+MZ<VTmJm%`qu?ZrJcC<$mJh`dq0qiuq*=sAs$cr[s&&ess%`Sjs&8r!s'#GSs+LE-s,-i9s,d8F
+s-WhWs.TIgs/5mss/c7)s0Vg9s-3PLs-WhUs.97as.o[ms/H%!s/l=)s0D[3s0r$=s1JBGs1eTf
+s4dS/s5!Y1s5!_0s4RG(s4.(trRLqrs3Ueks3()Ws2+fLs1/0>s0hs4s/l="s-NbHs,-i-s2=rM
+s0_m0s/>sns.]Oas-`nOs,d8?rrE(as&/kms%WMds%35]s$m#Ws$ZlSs$HZMq`sm?s$#CjlTTn"
+V>pJoJcC<$JcCl4rrAhoJ,~>
+MZ<VTmJm%`qu?ZrJcC<$mJh`dq0qiuq*=r`rs/Q<rttbSs%`Sjs&8r!s'#FNs!n%#s"FC-s"sa8
+s#^6Fs$QfVs%<;cs%r_ps&f;,s-3PLs-WhUs.97as.o[ms/H%!s/l=)s0D[3s0r$=s1JBGs1cU4
+s,-i2s+C?$s)7pNs().8s&]4ss%35Ws#pBBs#0m4s"47"s!@[grrE(as&/kms%WMds%35]s$m#W
+s$ZlSs$HZMq`sm?s$#CjlTTn"V>pJoJcC<$JcCl4rrAhoJ,~>
+MZ<VTmJm%`qu?ZrJcC<$mJm.+s2k;`s31Gds3L_ls3gqrs4%)!s47/#rRq5)s4dS/s5*e6s5O(?
+s69LJs6T^Os6fpUs7$'YrUU!\s7Q?bs7lQgs8)]krVZWmhu;m=rIb!6p\j!9g\nmRq2=KirrE)u
+p\k!erVQWkrV?Ees7cQerUp3_s7?9]s5s at As53k2s4IA$s3Uejs2tA^s2=rQs1SHDs0Vg0s4%"q
+p!Nfas29KgV>pJoJcC<$JcCl4rrAhoJ,~>
+MZ<VTmJm%`qu?ZrJcC<$mJh`dq0qiuq*=sAs$cr[s&&ess%`Sjs&8r!s'#GSs+LE-s,-i9s,d8F
+s-WhWs.TIgs/5mss/c7)s0Vg9s-3PLs-WhUs.97as.o[ms/H%!s/l=)s0D[3s0r$=s1JBGs1eTf
+s4dS/s5!Y1s5!_0s4RG(s4.(trRLqrs3Ueks3()Ws2+fLs1/0>s0hs4s/l="s-NbHs,-i-s2=rM
+s0_m0s/>sns.]Oas-`nOs,d8?rrE(as&/kms%WMds%35]s$m#Ws$ZlSs$HZMq`sm?s$#CjlTTn"
+V>pJoJcC<$JcCl4rrAhoJ,~>
+MZ<VTkPtJ\s8W*!JcC<$mJh`dpO;d"q`t/ars8W3rtbVOru(hUruD&:s&8qus!Iaps"+1's"j[6
+s#^6Fs$QfVs%EAes&/kss&f;+s'Pe8s(25#s.B=bs.o[ms/Q+#s/uC+s0Ma5s0r$>s1J0Bs,6i7
+l\kY!l&5Rks*Ocfs(q^Us).jPs',M's%iYds$QfLs#^6?s#'g1s"+0ts!.ODru1o:s&&eks%NGb
+s%35\s$m#Ws$ZlSs$HZMq`t$ChgXfRJcDGDr;_EKJcC<$Q2gjaU]5i~>
+MZ<VTkPtJ\s8W*!JcC<$mJm4.s2tAbs3:Shs3L_ls3gqrs4%)!s475%rRh/'s4dM-s5!_4s5F">
+s60LJrU'ROs6opUs7--[s7?9_s7QEcs7cQgs7uWis82cmrVb at In,<-9pQtdUgR$apa-ZU[qj6Ju
+rrE(Op\k'gs82ckrV?Ees7cQerUp-]s69RHs5j:@s5<q5s4RG&s3^kks2k;\s2+fNs1JB at s0D[T
+s3pqpp!Nfcs2KWiU&Y&kJcC<$JcD#8rrAhoJ,~>
+MZ<VTkPtJ\s8W*!JcC<$mJh`dpO;d"q`t07s$?ZVs%WMls&f;+s(24.s&8qus+C?)s+p]5s,d8G
+s-`nXs.TIis/Q+$s0;U1s0hs<s1JBIs24l,s.B=bs.o[ms/Q+#s/uC+s0Ma5s0r$>s1J0Bs5!_3
+rSRY5s5F"9s5*e2s4[M*qq(l#s475"s3^kms31Mds31MdrQP;]s1nZIs1A<6s/>sjs-NbVs-WhN
+s2b5Vs1A<<s/uC#s/5mms.KC^s-NbKs,[0[s+^PQs&&eks%NGbs%35\s$m#Ws$ZlSs$HZMq`t$C
+hgXfRJcDGDr;_EKJcC<$Q2gjaU]5i~>
+MZ<VTkPtJ\s8W*!JcC<$mJh`dpO;d"q`t/ars8W3rtbVOru(hUruD&:s&8qus!Iaps"+1's"j[6
+s#^6Fs$QfVs%EAes&/kss&f;+s'Pe8s(25#s.B=bs.o[ms/Q+#s/uC+s0Ma5s0r$>s1J0Bs,6i7
+l\kY!l&5Rks*Ocfs(q^Us).jPs',M's%iYds$QfLs#^6?s#'g1s"+0ts!.ODru1o:s&&eks%NGb
+s%35\s$m#Ws$ZlSs$HZMq`t$ChgXfRJcDGDr;_EKJcC<$Q2gjaU]5i~>
+MZ<VTkPtJ\s8W*!JcC<$mJm4.s2tAbs3:Shs3L_ls3gqrs4%)!s475%rRh/'s4dM-s5!_4s5F">
+s60LJrU'ROs6opUs7--[s7?9_s7QEcs7cQgs7uWis82cmrVb at In,<-9pQtdUgR$apa-ZU[qj6Ju
+rrE(Op\k'gs82ckrV?Ees7cQerUp-]s69RHs5j:@s5<q5s4RG&s3^kks2k;\s2+fNs1JB at s0D[T
+s3pqpp!Nfcs2KWiU&Y&kJcC<$JcD#8rrAhoJ,~>
+MZ<VTkPtJ\s8W*!JcC<$mJh`dpO;d"q`t07s$?ZVs%WMls&f;+s(24.s&8qus+C?)s+p]5s,d8G
+s-`nXs.TIis/Q+$s0;U1s0hs<s1JBIs24l,s.B=bs.o[ms/Q+#s/uC+s0Ma5s0r$>s1J0Bs5!_3
+rSRY5s5F"9s5*e2s4[M*qq(l#s475"s3^kms31Mds31MdrQP;]s1nZIs1A<6s/>sjs-NbVs-WhN
+s2b5Vs1A<<s/uC#s/5mms.KC^s-NbKs,[0[s+^PQs&&eks%NGbs%35\s$m#Ws$ZlSs$HZMq`t$C
+hgXfRJcDGDr;_EKJcC<$Q2gjaU]5i~>
+RfE<dp&Fsjj8]&XJcC<$n,Irfo7$L"s$6NKrs&K/rsA]?rtbVOru1nWruM,;s&B#!s!@[os"FC/
+s#U0Es$ZlXs%EAes&/kts'#G.s'Yk;s(D at Gs(q_0s.o[ms/Q+$s0;U1s0_m9s1/0As1S<ErP8HL
+q2Fj%l\te#qg\Wps+C?"s)n?]s)%dNs'G_/s&K(qs%<;Zs$6TFs#9s7s"aU,s!n$prrE'=s&T.u
+s%iYhs%EAas%*/[s$crUs$Q`Os$?NIs$,7ekrs[uScAWgJcC<$JcD/<rrAhoJ,~>
+RfE<dp&Fsjj8]&XJcC<$n,NF1s3(Gds3CYjrR(Yns4%)!s475%s4I;'s4[M-s4mY2rSRY7s69RL
+s6TdRrU9^Ss7-'Ys7?9_s7QEcs7cQgs7u]krVQWmrVb(AoDSQ=op>RSgR$apc^4Hcop>]3kC`d7
+s+C.GrVZ]mrVHKgrV6EerV$9as7H?Ws6BXJs5s at Bs5F"8s5!_0s4@;"s3Uehs2P)Ts1SHDs0_m3
+s4.(ss3gSfs3CYaJcD;@r;_EKJcC<$RK*9eU]5i~>
+RfE<dp&Fsjj8]&XJcC<$n,Irfo7$L"s$6NKs"saCs%35bs&&ets'5S4s(24.s&B#!s+LE,s,?u@
+s-WhYs.o[ns/Z1's0D[5s186Ds1nZPs2P)\s3(G:s.o[ms/Q+$s0;U1s0_m9s1/0As1S<ErP8HL
+rS[_7s5O";s5O(:s5*e2qq;#'s4RG)s475!s3^kmpWifPs0r$6s0)I0s/c6rs.B=[s-E].s2Y/V
+s1JB>s0)I(s/,gks.KC_s-itQs,m<]s+p\Us&8qns%WMds%<;^s%!)Xs$ZlSrBgNMq`t0GgOABN
+JcD;@r;_EKJcC<$RK*9eU]5i~>
+RfE<dp&Fsjj8]&XJcC<$n,Irfo7$L"s$6NKrs&K/rsA]?rtbVOru1nWruM,;s&B#!s!@[os"FC/
+s#U0Es$ZlXs%EAes&/kts'#G.s'Yk;s(D at Gs(q_0s.o[ms/Q+$s0;U1s0_m9s1/0As1S<ErP8HL
+q2Fj%l\te#qg\Wps+C?"s)n?]s)%dNs'G_/s&K(qs%<;Zs$6TFs#9s7s"aU,s!n$prrE'=s&T.u
+s%iYhs%EAas%*/[s$crUs$Q`Os$?NIs$,7ekrs[uScAWgJcC<$JcD/<rrAhoJ,~>
+RfE<dp&Fsjj8]&XJcC<$n,NF1s3(Gds3CYjrR(Yns4%)!s475%s4I;'s4[M-s4mY2rSRY7s69RL
+s6TdRrU9^Ss7-'Ys7?9_s7QEcs7cQgs7u]krVQWmrVb(AoDSQ=op>RSgR$apc^4Hcop>]3kC`d7
+s+C.GrVZ]mrVHKgrV6EerV$9as7H?Ws6BXJs5s at Bs5F"8s5!_0s4@;"s3Uehs2P)Ts1SHDs0_m3
+s4.(ss3gSfs3CYaJcD;@r;_EKJcC<$RK*9eU]5i~>
+RfE<dp&Fsjj8]&XJcC<$n,Irfo7$L"s$6NKs"saCs%35bs&&ets'5S4s(24.s&B#!s+LE,s,?u@
+s-WhYs.o[ns/Z1's0D[5s186Ds1nZPs2P)\s3(G:s.o[ms/Q+$s0;U1s0_m9s1/0As1S<ErP8HL
+rS[_7s5O";s5O(:s5*e2qq;#'s4RG)s475!s3^kmpWifPs0r$6s0)I0s/c6rs.B=[s-E].s2Y/V
+s1JB>s0)I(s/,gks.KC_s-itQs,m<]s+p\Us&8qns%WMds%<;^s%!)Xs$ZlSrBgNMq`t0GgOABN
+JcD;@r;_EKJcC<$RK*9eU]5i~>
+RfE6bq>^BnhuE]VJcC<$n,IrfnUC@#rB^Gers/Q0rtPJJrtk\Pru1nWruV2=s&T.Hs!dt%s#9s?
+s$H`Us%WMjs&K)$s',M1s'l"?s(VLKs)%dTs)S-]s/Z1&s0;U2s0hs;s186Cs1\BFs1nZNs2+fR
+du=0RrJU]0s*jups*+Kas)7pIs'Yk3s&f;$s%iYes$ZlQs#^6=s"j[/s"47$s![mIruV1Zs&B"q
+s%WMes%<;^s%!)Xs$ZlSrBgNMrBT%bk<=IsRK*3cJcC<$JcD;@rrAhoJ,~>
+RfE6bq>^BnhuE]VJcC<$n,NF:s3L_ls3gqrs4%"ts475%rRq5)rS.A-s5!_3s53k8s5s at Ks6fpU
+rUBdUrUU![rUg-_s7ZKes7lWis8)cmrVZ]oa8Yi3qh+L,rVb?7iVieCpR'j)qht!2rIt'#m=YE=
+rIb(IrVZ]mrVHKgs7lQerV$9as6]jQs6K^Ls6'FDs5X.;s5!_0s4RG)s474us3:Sbs2+fLs1&*9
+s475"s3q"rrR(Ynq9f5fs2KWiRK*3cJcC<$JcD;@rrAhoJ,~>
+RfE6bq>^BnhuE]VJcC<$n,IrfnUC@#rB^HIs$ZlYs%NGjs&]5)s'Yk<s(VL3s&T/Rs,$c9s-E\T
+s.]Ols/uC.s0hs=s1SHJs2=rXs2tAcs3CYks3gqss/Z1&s0;U2s0hs;s186Cs1\BFs1nZNs2+fR
+s6'FAs5X.?qrRk=s5O(:s5*M)s4[M)s4..uqp5/Ws3:Sas186:s/uC%s.o[es3Ueis2k;[s2"`I
+s0_m2s/c6ts.TIas.'+Ws-E\LrrE(Vs+^PQs&&ejs%NGbs%*/[s$crUs$Q`Os$?TKfm`*JJcD/<
+r;_EKJcC<$ScA]iU]5i~>
+RfE6bq>^BnhuE]VJcC<$n,IrfnUC@#rB^Gers/Q0rtPJJrtk\Pru1nWruV2=s&T.Hs!dt%s#9s?
+s$H`Us%WMjs&K)$s',M1s'l"?s(VLKs)%dTs)S-]s/Z1&s0;U2s0hs;s186Cs1\BFs1nZNs2+fR
+du=0RrJU]0s*jups*+Kas)7pIs'Yk3s&f;$s%iYes$ZlQs#^6=s"j[/s"47$s![mIruV1Zs&B"q
+s%WMes%<;^s%!)Xs$ZlSrBgNMrBT%bk<=IsRK*3cJcC<$JcD;@rrAhoJ,~>
+RfE6bq>^BnhuE]VJcC<$n,NF:s3L_ls3gqrs4%"ts475%rRq5)rS.A-s5!_3s53k8s5s at Ks6fpU
+rUBdUrUU![rUg-_s7ZKes7lWis8)cmrVZ]oa8Yi3qh+L,rVb?7iVieCpR'j)qht!2rIt'#m=YE=
+rIb(IrVZ]mrVHKgs7lQerV$9as6]jQs6K^Ls6'FDs5X.;s5!_0s4RG)s474us3:Sbs2+fLs1&*9
+s475"s3q"rrR(Ynq9f5fs2KWiRK*3cJcC<$JcD;@rrAhoJ,~>
+RfE6bq>^BnhuE]VJcC<$n,IrfnUC@#rB^HIs$ZlYs%NGjs&]5)s'Yk<s(VL3s&T/Rs,$c9s-E\T
+s.]Ols/uC.s0hs=s1SHJs2=rXs2tAcs3CYks3gqss/Z1&s0;U2s0hs;s186Cs1\BFs1nZNs2+fR
+s6'FAs5X.?qrRk=s5O(:s5*M)s4[M)s4..uqp5/Ws3:Sas186:s/uC%s.o[es3Ueis2k;[s2"`I
+s0_m2s/c6ts.TIas.'+Ws-E\LrrE(Vs+^PQs&&ejs%NGbs%*/[s$crUs$Q`Os$?TKfm`*JJcD/<
+r;_EKJcC<$ScA]iU]5i~>
+R/c[VhuE]VJcC<$nc+/hm=,(#rB^Gers&K.rt>>GrtYPMru(hUru_7bs!@[ns"+1's"j[9s$6TS
+s%`Sns&oA.s'bq=s(MFIs(q^Rs)J'[s)n?ds/uC,s0Vg:s1A<Es1nNKrPANNs24`Pq2G93kD]:g
+s*t'-qhtK1s+LE&s*aoms)7pOs'u(8s'#G(s&8qns%35[s$6TGs#'g3s"FC's!n$prrE'?ru:tS
+s%r_js%EAas%*/Zs$crUs$QfQrB]%ajZ\7qQ2gd_JcC<$JcDGDrrAhoJ,~>
+R/c[VhuE]VJcC<$nc/RCs4dS*s4./$q:P`#rS.A-rS at M1s53k;s69RMs7$!Wqss^WrUg-_s7ZEc
+s7lWis8)cms8;io_>a?1qh)kShu3SApR(-1q2=^.s+gW/rIt'#m=YE=qh+qHrVQWkq>(!as7cQe
+s6fpSs6TdOs6BXJs5s at Bs5F"6s4dS,s4IA&s4..ts3Ueks2tA\s2+fks4./!s3q"uqpP;fs3L_a
+JcD#8r;_EKJcC<$U&Y,mU]5i~>
+R/c[VhuE]VJcC<$nc+/hm=,(#rB^HDs$ZlXs%EAhs&T/(s'Yk;s(hXRs*"Eus,?u>s-*JOs.]Om
+s0;U5s1JBJs2=rYs3(Ges3L_ms3q"us4@;(s/uC,s0Vg:s1A<Es1nNKrPANNs24`Ps6BXGrT=(A
+rT=. at s5O(:q;)#)s4[M)s2k/WqpGGjs2Y/Qs1&*8s/uCVs474ts3(G`s2P)Us1SH>s0;U*s/,gi
+s.01Ys-WhPs,m<]s,-i2s+:8Is%`Ses%<;^s$m#Ws$ZlSs$HZMf7)gFJcD#8r;_EKJcC<$U&Y,m
+U]5i~>
+R/c[VhuE]VJcC<$nc+/hm=,(#rB^Gers&K.rt>>GrtYPMru(hUru_7bs!@[ns"+1's"j[9s$6TS
+s%`Sns&oA.s'bq=s(MFIs(q^Rs)J'[s)n?ds/uC,s0Vg:s1A<Es1nNKrPANNs24`Pq2G93kD]:g
+s*t'-qhtK1s+LE&s*aoms)7pOs'u(8s'#G(s&8qns%35[s$6TGs#'g3s"FC's!n$prrE'?ru:tS
+s%r_js%EAas%*/Zs$crUs$QfQrB]%ajZ\7qQ2gd_JcC<$JcDGDrrAhoJ,~>
+R/c[VhuE]VJcC<$nc/RCs4dS*s4./$q:P`#rS.A-rS at M1s53k;s69RMs7$!Wqss^WrUg-_s7ZEc
+s7lWis8)cms8;io_>a?1qh)kShu3SApR(-1q2=^.s+gW/rIt'#m=YE=qh+qHrVQWkq>(!as7cQe
+s6fpSs6TdOs6BXJs5s at Bs5F"6s4dS,s4IA&s4..ts3Ueks2tA\s2+fks4./!s3q"uqpP;fs3L_a
+JcD#8r;_EKJcC<$U&Y,mU]5i~>
+R/c[VhuE]VJcC<$nc+/hm=,(#rB^HDs$ZlXs%EAhs&T/(s'Yk;s(hXRs*"Eus,?u>s-*JOs.]Om
+s0;U5s1JBJs2=rYs3(Ges3L_ms3q"us4@;(s/uC,s0Vg:s1A<Es1nNKrPANNs24`Ps6BXGrT=(A
+rT=. at s5O(:q;)#)s4[M)s2k/WqpGGjs2Y/Qs1&*8s/uCVs474ts3(G`s2P)Us1SH>s0;U*s/,gi
+s.01Ys-WhPs,m<]s,-i2s+:8Is%`Ses%<;^s$m#Ws$ZlSs$HZMf7)gFJcD#8r;_EKJcC<$U&Y,m
+U]5i~>
+QN-[Zg].9RJcC<$nc+/hl[Jk#r<E9,r=],Frtk\Qru:tYru_7druV1bs"aU3s#C$@s$QfYs%r_s
+s'G_:s(_RMs).jUs)S-]s*+Khs*apWs186Bs1SHIs2"`QrP\ZRrP\ZRs2P)Xs,?W1rJ^W5q2G-"
+pPf!-s,-i2s+UK&s*=Wcs).jLs'bq4s&T.ss%`Ses$crQs#^6=s"XO,s"47!s!IaGruV1Yrtk]3
+s%`Ses%<;^s$m#Ws$ZlSs$G=diBDhmOoP:YJcC<$JcDYJrrAhoJ,~>
+QN-[Zg].9RJcC<$nc/RDqqUr#s4mS/s5*e5s5<q?s6fpWqssXUrUg']rV$9cs7lWirVHQks8;oq
+\c2X-qh+@(rI`jkhu3SAopG37q2=X,s,d8 at s,6o6s+gW/rIt'#mt:W?qh+qIs8;imrVHEes7lWb
+s7$'Vs6]jQs6BXKs6'FDs5X.9s4dS-s4IA&s4..us3^kls31Mcs5O(:s5*e3s4[M)s4%"rs3g_j
+s3UehJcCl4qZ)3IJcC<$VuQbsU]5i~>
+QN-[Zg].9RJcC<$nc+/hl[Jk#s"j[Ds%<;bs&&ess',M2s(;:Gs)7p[s+UK4s-*JLs-itZs/,gu
+s0Vg=s24lZs3CYjs3gqss475&s4dS0s5<pes186Bs1SHIs2"`QrP\ZRrP\ZRs2P)Xs7--Vs6'FG
+qs".Es6'FEs5a4=qqqG1s3gqps3L_is46ejs31M[s6BXHs5O(8s4[M&s3L_fs2G#Ss1SHCs02O(
+s/,gis.01Zs-WhMs,m<]s,$c1s+:8Is%`Ses%<;^s$m#Ws$ZlSs$G=diBDhmOoP:YJcC<$JcDYJ
+rrAhoJ,~>
+QN-[Zg].9RJcC<$nc+/hl[Jk#r<E9,r=],Frtk\Qru:tYru_7druV1bs"aU3s#C$@s$QfYs%r_s
+s'G_:s(_RMs).jUs)S-]s*+Khs*apWs186Bs1SHIs2"`QrP\ZRrP\ZRs2P)Xs,?W1rJ^W5q2G-"
+pPf!-s,-i2s+UK&s*=Wcs).jLs'bq4s&T.ss%`Ses$crQs#^6=s"XO,s"47!s!IaGruV1Yrtk]3
+s%`Ses%<;^s$m#Ws$ZlSs$G=diBDhmOoP:YJcC<$JcDYJrrAhoJ,~>
+QN-[Zg].9RJcC<$nc/RDqqUr#s4mS/s5*e5s5<q?s6fpWqssXUrUg']rV$9cs7lWirVHQks8;oq
+\c2X-qh+@(rI`jkhu3SAopG37q2=X,s,d8 at s,6o6s+gW/rIt'#mt:W?qh+qIs8;imrVHEes7lWb
+s7$'Vs6]jQs6BXKs6'FDs5X.9s4dS-s4IA&s4..us3^kls31Mcs5O(:s5*e3s4[M)s4%"rs3g_j
+s3UehJcCl4qZ)3IJcC<$VuQbsU]5i~>
+QN-[Zg].9RJcC<$nc+/hl[Jk#s"j[Ds%<;bs&&ess',M2s(;:Gs)7p[s+UK4s-*JLs-itZs/,gu
+s0Vg=s24lZs3CYjs3gqss475&s4dS0s5<pes186Bs1SHIs2"`QrP\ZRrP\ZRs2P)Xs7--Vs6'FG
+qs".Es6'FEs5a4=qqqG1s3gqps3L_is46ejs31M[s6BXHs5O(8s4[M&s3L_fs2G#Ss1SHCs02O(
+s/,gis.01Zs-WhMs,m<]s,$c1s+:8Is%`Ses%<;^s$m#Ws$ZlSs$G=diBDhmOoP:YJcC<$JcDYJ
+rrAhoJ,~>
+JcFm4rr at WMJcG9?JUZp6rri?,rs8W;r=f2Frtk\RruV1_s!%IhruV1bs![n!s#pBJs$cr]s&8r"
+s'G_8s(VLMs)S-_s*=Wks*juus1SHHs1nZOqnrBNrPe`Tq8`NTl&G_%qge'ms,6oNs-`nKs,$c.
+s*aols)S-Us(;:<s'#G%s%r_gs$crQs#^6=s"aU-s""*ts!IaGruV1YrtbVJs%`Sfs%35]s$m#W
+s$YCdh`cVkMuW_UJcC<$JcDeNrrAhoJ,~>
+JcFm4rr at WMJcG9?qqh;-pYZ#/s5X.As69ROs7-'YrU]pYrUp']s7cQgrV?Kis82iorVa/'rsAXV
+m?dX$iKrC!o9f3;qhsd,s.fUas-<VIs,d8?s,6o6s+gW/rIt-%mt:W?q1J_GrVZWkrVHQfs7QE_
+s7$'Vs6TdOs69RIs5s at Bs53k2s4[M*s475#s4%(rs3L_is3(H%s5F"8s5!_1s4[M)rRCkqq9f5g
+s3^kjJcCZ.r;_EKJcC<$X8i2"U]5i~>
+JcFm4rr at WMJcG9?JUZp6s&B"bs%NGes&/kss&oA/s(24Gs)A!\s*F^%s,d8Js.97`s/#aqs0;U6
+s1SHMs2b5bs3gqus4dS1s5<q;s5j9os1\NKs2+ZNrP\ZRrPnZRs2P*0s6p!Qqs4:IrTX at Fs5s:<
+rRCkrrSRY3s4dS(s4%)!s4$qrs7QEas7--Us60LEs5F"6s4IA#s3CYds24lOs186;s/uC#s.]Ob
+s-s%Ss-3PGrrE(Us+^Q*s*juCs%NGas%*/Zs$crUeUHC>JcCZ.r;_EKJcC<$X8i2"U]5i~>
+JcFm4rr at WMJcG9?JUZp6rri?,rs8W;r=f2Frtk\RruV1_s!%IhruV1bs![n!s#pBJs$cr]s&8r"
+s'G_8s(VLMs)S-_s*=Wks*juus1SHHs1nZOqnrBNrPe`Tq8`NTl&G_%qge'ms,6oNs-`nKs,$c.
+s*aols)S-Us(;:<s'#G%s%r_gs$crQs#^6=s"aU-s""*ts!IaGruV1YrtbVJs%`Sfs%35]s$m#W
+s$YCdh`cVkMuW_UJcC<$JcDeNrrAhoJ,~>
+JcFm4rr at WMJcG9?qqh;-pYZ#/s5X.As69ROs7-'YrU]pYrUp']s7cQgrV?Kis82iorVa/'rsAXV
+m?dX$iKrC!o9f3;qhsd,s.fUas-<VIs,d8?s,6o6s+gW/rIt-%mt:W?q1J_GrVZWkrVHQfs7QE_
+s7$'Vs6TdOs69RIs5s at Bs53k2s4[M*s475#s4%(rs3L_is3(H%s5F"8s5!_1s4[M)rRCkqq9f5g
+s3^kjJcCZ.r;_EKJcC<$X8i2"U]5i~>
+JcFm4rr at WMJcG9?JUZp6s&B"bs%NGes&/kss&oA/s(24Gs)A!\s*F^%s,d8Js.97`s/#aqs0;U6
+s1SHMs2b5bs3gqus4dS1s5<q;s5j9os1\NKs2+ZNrP\ZRrPnZRs2P*0s6p!Qqs4:IrTX at Fs5s:<
+rRCkrrSRY3s4dS(s4%)!s4$qrs7QEas7--Us60LEs5F"6s4IA#s3CYds24lOs186;s/uC#s.]Ob
+s-s%Ss-3PGrrE(Us+^Q*s*juCs%NGas%*/Zs$crUeUHC>JcCZ.r;_EKJcC<$X8i2"U]5i~>
+JcFm4rr at WMJcG9?JUZp6r<3-5rtG>FrtYPLru(hVruh=eruD%\s!.Ols"47+s#9sIs%EAhs&T/)
+s'bq?s(q^Ts*"Egs*k!#s+^Qks2=rWs2FfPrPe`TrQ"lXs2XMds+1&tl\tkUs0Vg.s/,ggs-NbG
+s+p],s*Xiis)A!Qs'l"4s&K(ps%EA^s$?ZIs#9s7s"47$s!dsprrE'?ru1nQrtGDEs%NGas%(Od
+h*-DiL]@;QJcC<$JcDqRrrAhoJ,~>
+JcFm4rr at WMJcG9?s5<k5s5<q:qrIe>s69RNs7$!Ws763]rUg']q=aj_qtU3es8)]ks8;oqYQ"J,
+m?dEsjd4m'nX09Aq2=R*s1SH at s0)I$s.TI]s-<VIs,[2>s,6o5s+gW/s+U9%nUpiApOiGBs82il
+s7lWgs7ZEas7H?_s7--Us60LGs5j:=s4dS-s4IA's4./!s3gqos3:Ses5X.<s5<q6s5!_0s4RG(
+s4%(ts3g_js3L_ls3#unL]@;QJcC<$JcDqRrrAhoJ,~>
+JcFm4rr at WMJcG9?JUZp6s)\4!s%WMks&T/&s'G_7s(D at Ls)e9ds+p]7s-*JOs.]Oms/uC's0;U4
+s1JBJs2Y/`s3^kts4dS2s5a4Ds6Td's2=rWs2FfPrPe`TrQ"lXs2Y$-s6T^Os6T^Ms6BX?s4dM'
+rSm_5s53k4q:><5s7?9Zs6TdLs5X.:s4dS)s3Uefs2G#Ps186<s0)I&s.o[fs-`nQs-3PGrrE(U
+s+UK)s*t&ns%NGas%(Odh*-DiL]@;QJcC<$JcDqRrrAhoJ,~>
+JcFm4rr at WMJcG9?JUZp6r<3-5rtG>FrtYPLru(hVruh=eruD%\s!.Ols"47+s#9sIs%EAhs&T/)
+s'bq?s(q^Ts*"Egs*k!#s+^Qks2=rWs2FfPrPe`TrQ"lXs2XMds+1&tl\tkUs0Vg.s/,ggs-NbG
+s+p],s*Xiis)A!Qs'l"4s&K(ps%EA^s$?ZIs#9s7s"47$s!dsprrE'?ru1nQrtGDEs%NGas%(Od
+h*-DiL]@;QJcC<$JcDqRrrAhoJ,~>
+JcFm4rr at WMJcG9?s5<k5s5<q:qrIe>s69RNs7$!Ws763]rUg']q=aj_qtU3es8)]ks8;oqYQ"J,
+m?dEsjd4m'nX09Aq2=R*s1SH at s0)I$s.TI]s-<VIs,[2>s,6o5s+gW/s+U9%nUpiApOiGBs82il
+s7lWgs7ZEas7H?_s7--Us60LGs5j:=s4dS-s4IA's4./!s3gqos3:Ses5X.<s5<q6s5!_0s4RG(
+s4%(ts3g_js3L_ls3#unL]@;QJcC<$JcDqRrrAhoJ,~>
+JcFm4rr at WMJcG9?JUZp6s)\4!s%WMks&T/&s'G_7s(D at Ls)e9ds+p]7s-*JOs.]Oms/uC's0;U4
+s1JBJs2Y/`s3^kts4dS2s5a4Ds6Td's2=rWs2FfPrPe`TrQ"lXs2Y$-s6T^Os6T^Ms6BX?s4dM'
+rSm_5s53k4q:><5s7?9Zs6TdLs5X.:s4dS)s3Uefs2G#Ps186<s0)I&s.o[fs-`nQs-3PGrrE(U
+s+UK)s*t&ns%NGas%(Odh*-DiL]@;QJcC<$JcDqRrrAhoJ,~>
+JcFm4rr at WMJcG9?JU[!8qZQp9rtGDHrtYPLrtk\Pru:tZrttbTru_7bs!Rgts"XO3s#U0Es$Zld
+s'#G1s(;:Hs)J']s*=Wns1SHKs2P)Zs2P#VrP\ZRrPnfVrQ>)[oo8cuq2P!)s4[M%s3(G[s1JB>
+s02O's.o[cs-3PBs+^Q(s*=Was(_RCs'>Y)s%`Ses%!)Us#pBAs#'g/s""*us!IaGruV1YrtbVJ
+rt59)d=0b4JcCB&r;_EKJcC<$ZiC%*U]5i~>
+JcFm4rr at WMJcG9?rSde:s5j:Ds69RLs6]jSs7$!Ws763]s7H9_rV$-_rV6?es8)]ks8;oqX8_u&
+s"X&1l\"Ymg\pf4q2=R*s4mY)s3:S`s1eTDs0D[,s/5mhs-`nOs-!DCs,I&9s+p]1s+^Q-q1S?l
+rrDeGs8;oos8)cks7lWgs7ZEas7H?_s7$'Us6BXHs5F"5s4[M*s4@;%s4%(ts3Ueks5a4?s5O(:
+s53k4s4mY.s4IA&s4%(tpX0#fs3:S_JcCB&r;_EKJcC<$ZiC%*U]5i~>
+JcFm4rr at WMJcG9?JU[!8s(MFbs-itUs&T/'s'G_8s(;:Fs)7p[s+LE0s,d8Hs.01bs/>t#s0Ma8
+s1\NEs1nZRs3(Ghs475(s53k;s1SHKs2P)Zs2P#VrP\ZRrPnfVrQ>)[qss^Ss6fjEs5<q7s6K^I
+s5a"9qr7Y3n+QeRs763Xs6BXHs5<q2s474rs2tAZs1SHDs0hs3s/Q*qs.TI^s-NbNs,m<]s,$c0
+s+13"s*Xi?d=0b4JcCB&r;_EKJcC<$ZiC%*U]5i~>
+JcFm4rr at WMJcG9?JU[!8qZQp9rtGDHrtYPLrtk\Pru:tZrttbTru_7bs!Rgts"XO3s#U0Es$Zld
+s'#G1s(;:Hs)J']s*=Wns1SHKs2P)Zs2P#VrP\ZRrPnfVrQ>)[oo8cuq2P!)s4[M%s3(G[s1JB>
+s02O's.o[cs-3PBs+^Q(s*=Was(_RCs'>Y)s%`Ses%!)Us#pBAs#'g/s""*us!IaGruV1YrtbVJ
+rt59)d=0b4JcCB&r;_EKJcC<$ZiC%*U]5i~>
+JcFm4rr at WMJcG9?rSde:s5j:Ds69RLs6]jSs7$!Ws763]s7H9_rV$-_rV6?es8)]ks8;oqX8_u&
+s"X&1l\"Ymg\pf4q2=R*s4mY)s3:S`s1eTDs0D[,s/5mhs-`nOs-!DCs,I&9s+p]1s+^Q-q1S?l
+rrDeGs8;oos8)cks7lWgs7ZEas7H?_s7$'Us6BXHs5F"5s4[M*s4@;%s4%(ts3Ueks5a4?s5O(:
+s53k4s4mY.s4IA&s4%(tpX0#fs3:S_JcCB&r;_EKJcC<$ZiC%*U]5i~>
+JcFm4rr at WMJcG9?JU[!8s(MFbs-itUs&T/'s'G_8s(;:Fs)7p[s+LE0s,d8Hs.01bs/>t#s0Ma8
+s1\NEs1nZRs3(Ghs475(s53k;s1SHKs2P)Zs2P#VrP\ZRrPnfVrQ>)[qss^Ss6fjEs5<q7s6K^I
+s5a"9qr7Y3n+QeRs763Xs6BXHs5<q2s474rs2tAZs1SHDs0hs3s/Q*qs.TI^s-NbNs,m<]s,$c0
+s+13"s*Xi?d=0b4JcCB&r;_EKJcC<$ZiC%*U]5i~>
+JcFm4rr at WMJcG?AJU[!8q#pX5rtPJKr>5JNru(hWrtbVPruM+_s!7Uos"FC/s#L*Cs$QfWs%`Sm
+s&oA/s)7p[s*=XSs1eTRs2b5\rPnlVs2=lTrPnlXs2b5`s31MdrQ5"ts,Qu-mu@;.s5j:As5X.=
+s4dS's3:S_s1\NAs02O(s/#afs-itLs+p])s*4Q^s(VLDs'5S's%`Sds%*/Ws$$HCs"j[/s"+1!
+s!IaGruV1YrtbP9d=0\2JcC<$s8W#tJcC<$JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcG?As5X.?s5s at Fs69RLs6TdRs6p!WrUU![s7H?arV$3arV6?erVHKis8;ioWW)]"
+rA!o1kC`Ybqj6"7qj@>@s,6cAop>X at s6'FEs5j:As5!_+s3L_cs1nZFs0Ma-s/5mks.'+Us-3PG
+s,[2=s,-i4s+gW/s+U9%on38Eqh+hRs8;oos7uWgs7cQes7QEas7?9\s6fpPrTO:Gs53k/s4@;%
+s4%(ts3^kms5j:@s5O(;s53k5s5!_0s4RG(s475"s3gYhs3Ueks1j3cJcGcMr;_EKJcC<$\,ZI.
+U]5i~>
+JcFm4rr at WMJcG?AJU[!8s'PeOs-3PYs.TIks'Pe9s(;:Fs)%dUs*"Ers,6o>s-NbUs.]Ols/l=,
+s0r$@s2+fVs3:Sms4IA$s4[M1s1&*Ds2P)[s2Y)Xs2G#VrPe`Ts2Y/\s3(Gds3(A_rU^'[s5j4?
+s6opSs6]jQs5s4?p\=FTqtL-arUp3[s69RDs5!_-s3q"ps2k;Xs1JBBs0hs4s/c6us.KC_s-WhO
+s-!B^s,$c0s+1.(d=0\2JcC<$s8W#tJcC<$JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcG?AJU[!8q#pX5rtPJKr>5JNru(hWrtbVPruM+_s!7Uos"FC/s#L*Cs$QfWs%`Sm
+s&oA/s)7p[s*=XSs1eTRs2b5\rPnlVs2=lTrPnlXs2b5`s31MdrQ5"ts,Qu-mu@;.s5j:As5X.=
+s4dS's3:S_s1\NAs02O(s/#afs-itLs+p])s*4Q^s(VLDs'5S's%`Sds%*/Ws$$HCs"j[/s"+1!
+s!IaGruV1YrtbP9d=0\2JcC<$s8W#tJcC<$JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcG?As5X.?s5s at Fs69RLs6TdRs6p!WrUU![s7H?arV$3arV6?erVHKis8;ioWW)]"
+rA!o1kC`Ybqj6"7qj@>@s,6cAop>X at s6'FEs5j:As5!_+s3L_cs1nZFs0Ma-s/5mks.'+Us-3PG
+s,[2=s,-i4s+gW/s+U9%on38Eqh+hRs8;oos7uWgs7cQes7QEas7?9\s6fpPrTO:Gs53k/s4@;%
+s4%(ts3^kms5j:@s5O(;s53k5s5!_0s4RG(s475"s3gYhs3Ueks1j3cJcGcMr;_EKJcC<$\,ZI.
+U]5i~>
+JcFm4rr at WMJcG?AJU[!8s'PeOs-3PYs.TIks'Pe9s(;:Fs)%dUs*"Ers,6o>s-NbUs.]Ols/l=,
+s0r$@s2+fVs3:Sms4IA$s4[M1s1&*Ds2P)[s2Y)Xs2G#VrPe`Ts2Y/\s3(Gds3(A_rU^'[s5j4?
+s6opSs6]jQs5s4?p\=FTqtL-arUp3[s69RDs5!_-s3q"ps2k;Xs1JBBs0hs4s/c6us.KC_s-WhO
+s-!B^s,$c0s+1.(d=0\2JcC<$s8W#tJcC<$JcE4ZrrAhoJ,~>
+JcFm4rr at WMJcG?AJU[':q#pL2r>,DLrttbRru1nOrttbTru_7cs!Iass"XO4s#g<Is$m#^s&&et
+s'>Y8s)7pes+^Q5s,m>ErQ"rXqo/NRs2Y/\s3(Gfs3:Sfs3(FprIk3'qi:..s5a4>s5F"9s53k5
+s4dS's3:S_s1eTDs0;U)s/,ggs-WhIs+UK#s)e9Xs(;:?s'#G#s%WMcs%!)Ws$-NCs"sa1s"47#
+s!IaGpB9#qdlr?_JcGWIr;_EKJcC<$]Dqm2U]5i~>
+JcFm4rr at WMJcG?As5j:Ds69RKs6TdQs6fpVs7--[s7?9_s7Q?as7cQgrV?EgqtpEkrV`Slq$HjO
+op=oqon<@5s-inUs./3Ks,Hu;s,HoDn*0l7s5a4?s5O(;s5<q5s474rs2b5Vs186:s/uC$s.fUc
+s-`nPs-!DCs,?u8s+p]1s+^Q-q1SEnrrDd"s82ims7u]is7cQes7QEas7?9\s6fpQs6BXMs6BXK
+s60LFs5*e+s3q"qs5s at Cs5a4?s5F"9s53k4s4mY.s4IA's4./!s3gSfs3L_ZJcC<$qu?TpJcC<$
+JcE@^rrAhoJ,~>
+JcFm4rr at WMJcG?AJU[':s',MCs+C?Fs.]Oms02O2s(;:Fs)%dTs)\3`s+^Q4s-!DKs-s%\s/#ar
+s02O3s1A<Hs2G#]s3^kts5!_=s5O(Cs6p!Zs76-/s2OrTrPnlXs2b5`s3CYhs31Mdq<%_KrUT at Q
+qtg?grV6-]s7lQes7H?^s6]jKs53k1s4..ss3CYcs2"`Js1/0<s0Ma-s/,gjs.97Ys-E\JrrDfK
+eUGt2JcC<$qu?TpJcC<$JcE@^rrAhoJ,~>
+JcFm4rr at WMJcG?AJU[':q#pL2r>,DLrttbRru1nOrttbTru_7cs!Iass"XO4s#g<Is$m#^s&&et
+s'>Y8s)7pes+^Q5s,m>ErQ"rXqo/NRs2Y/\s3(Gfs3:Sfs3(FprIk3'qi:..s5a4>s5F"9s53k5
+s4dS's3:S_s1eTDs0;U)s/,ggs-WhIs+UK#s)e9Xs(;:?s'#G#s%WMcs%!)Ws$-NCs"sa1s"47#
+s!IaGpB9#qdlr?_JcGWIr;_EKJcC<$]Dqm2U]5i~>
+JcFm4rr at WMJcG?As5j:Ds69RKs6TdQs6fpVs7--[s7?9_s7Q?as7cQgrV?EgqtpEkrV`Slq$HjO
+op=oqon<@5s-inUs./3Ks,Hu;s,HoDn*0l7s5a4?s5O(;s5<q5s474rs2b5Vs186:s/uC$s.fUc
+s-`nPs-!DCs,?u8s+p]1s+^Q-q1SEnrrDd"s82ims7u]is7cQes7QEas7?9\s6fpQs6BXMs6BXK
+s60LFs5*e+s3q"qs5s at Cs5a4?s5F"9s53k4s4mY.s4IA's4./!s3gSfs3L_ZJcC<$qu?TpJcC<$
+JcE@^rrAhoJ,~>
+JcFm4rr at WMJcG?AJU[':s',MCs+C?Fs.]Oms02O2s(;:Fs)%dTs)\3`s+^Q4s-!DKs-s%\s/#ar
+s02O3s1A<Hs2G#]s3^kts5!_=s5O(Cs6p!Zs76-/s2OrTrPnlXs2b5`s3CYhs31Mdq<%_KrUT at Q
+qtg?grV6-]s7lQes7H?^s6]jKs53k1s4..ss3CYcs2"`Js1/0<s0Ma-s/,gjs.97Ys-E\JrrDfK
+eUGt2JcC<$qu?TpJcC<$JcE@^rrAhoJ,~>
+JcFm4rr at WMJcG?AJU[-<pB:4.r>5JNr>GVSrtYPOruM+_s!@[os"==.s#U0Es$cr[s&/l(s(q^Y
+s+LE-s,?o>s-*JIs-WhVs.KCgs/H%"s0)I-s186Ks2+fXs3Uess5<q>s6/Y/s5s at As5F"7s4dS-
+s4RG%s31M^s1eTEs0Ma+s.o[cs-<VDs+:8ss)S-Ts(;:=s&f:us%NGas$m#Vs#pBBs#'g3qZQp!
+o`Wrsd6<-]JcGKEqZ)3IJcC<$_>jN8U]5i~>
+JcFm4rr at WMJcG?As60LIs6K^Ps6fpUs7$'Zs7?9_s7QEcrV-?es7uWirVQQkrV`GhpBgRKop>-"
+o7[.3s-itWs.'%Ys.B=ds/5mts02O1s0r$=s1JBLs3CYfs3gr#s4IA2s60LJkNW$1s5j:@s5<q5
+s4mY/s474rs2Y/Us1JB?s02O(s/#ags-s%Rs-!DDs,I&9s+pW.q1SQrq[*9&oa1Zps7lWgs7ZKc
+s7H?_s763Ys6TdQs6TdOs69RIs5s at Cs5a4>s4RG8s5j:As5X.=s5<q7s5*e3s4dS,s4IA's4./!
+s3q"rpX0#`s1Ep_JcGKEqZ)3IJcC<$_>jN8U]5i~>
+JcFm4rr at WMJcG?AJU[-<s',M7s)J("s02O&s0;U3s1A<Hs)%dTs)S-^s*4Qks,?u?s-E\Rs.97b
+s/>t#s0Ma9s1\NNs3(Gps5j:Ls60LJs6fdUnacYMs7H?TrTF4Vebf7?qt^9ds7QE`s7$'Us69RD
+s5!_,s3gqos31M`s1eTGs1&*:s0D[+s/5mls.9,DrrE)Ss5!S-s4#_Nd6<-]JcGKEqZ)3IJcC<$
+_>jN8U]5i~>
+JcFm4rr at WMJcG?AJU[-<pB:4.r>5JNr>GVSrtYPOruM+_s!@[os"==.s#U0Es$cr[s&/l(s(q^Y
+s+LE-s,?o>s-*JIs-WhVs.KCgs/H%"s0)I-s186Ks2+fXs3Uess5<q>s6/Y/s5s at As5F"7s4dS-
+s4RG%s31M^s1eTEs0Ma+s.o[cs-<VDs+:8ss)S-Ts(;:=s&f:us%NGas$m#Vs#pBBs#'g3qZQp!
+o`Wrsd6<-]JcGKEqZ)3IJcC<$_>jN8U]5i~>
+JcFm4rr at WMJcG?As60LIs6K^Ps6fpUs7$'Zs7?9_s7QEcrV-?es7uWirVQQkrV`GhpBgRKop>-"
+o7[.3s-itWs.'%Ys.B=ds/5mts02O1s0r$=s1JBLs3CYfs3gr#s4IA2s60LJkNW$1s5j:@s5<q5
+s4mY/s474rs2Y/Us1JB?s02O(s/#ags-s%Rs-!DDs,I&9s+pW.q1SQrq[*9&oa1Zps7lWgs7ZKc
+s7H?_s763Ys6TdQs6TdOs69RIs5s at Cs5a4>s4RG8s5j:As5X.=s5<q7s5*e3s4dS,s4IA's4./!
+s3q"rpX0#`s1Ep_JcGKEqZ)3IJcC<$_>jN8U]5i~>
+JcFm4rr at WMJcG?AJU[-<s',M7s)J("s02O&s0;U3s1A<Hs)%dTs)S-^s*4Qks,?u?s-E\Rs.97b
+s/>t#s0Ma9s1\NNs3(Gps5j:Ls60LJs6fdUnacYMs7H?TrTF4Vebf7?qt^9ds7QE`s7$'Us69RD
+s5!_,s3gqos31M`s1eTGs1&*:s0D[+s/5mls.9,DrrE)Ss5!S-s4#_Nd6<-]JcGKEqZ)3IJcC<$
+_>jN8U]5i~>
+JcFm4rr at WMJcG?AJU[?Bqg\>Cobm]Fr>GVRruD%]ru1nYs!%Ijs""+(s#0mAs%*/js(;:Ps*ap*
+s,R,As-!DGrKR>Is-WhWs.TIhs/H%$s0Ma,s02O5s2tAhs3CYos4[M3mHF<-s5j:?s5<q5s4[M)
+s4%(os2b5Ws1A<:s/Q*os-s%Os,-i-s*+K]s(hXFs'>Y+s%iYfs%35[s$6TJo`Y9po`Wrsd6<-]
+JcG9?r;_EKJcC<$`W,r<U]5i~>
+JcFm4rr at WMJcG?As6BXNs6]jTs7$'Ys763^s7QEcrV-?es7u]krVQQkrV`5bpBgLIo9]-&o7[.3
+rL<hWs.01]rLa+bs/5mus02O1s1/0Cs0_m;s1nZ`s4[M!s475*s5X"ApZ__Cp$)M>s5j:?s53k3
+s4RG's3Uegs2=rPs1/09s/l=!s.]Oas-NbLs,d8 at s,6o5s+^Q-qh4p#oa1Wuoa1Zns7cQes7QEa
+s7?9]rU9dSs6TdOs69RIs6'FDs5a4>s5F"9s6]jNs5a4>s5F"9s53k4s4mY.s4RG)s4@;$s4%"r
+s3gels3Uecs1<j^JcG9?r;_EKJcC<$`W,r<U]5i~>
+JcFm4rr at WMJcG?AJU[?Bqg\WSs)%d[s.KD&s0;U4s1A<Js2Y/as)\3`s*4Qjs*juus+UK:s-NbU
+s.KCgs/Q+'s1/0Hs3Uf's6TdYs6p!Xp[e"Is7?3Ps60FRdJNh;rV?Kfs7?9\s6p!Ss69RFs5<q2
+s4%(ss3CYds2G#Ps1A<@s0_m2s/l=\s5F"8s5*_1rrDrPrS7G&fm_=4JcC<$nc/OfJcC<$JcE^h
+rrAhoJ,~>
+JcFm4rr at WMJcG?AJU[?Bqg\>Cobm]Fr>GVRruD%]ru1nYs!%Ijs""+(s#0mAs%*/js(;:Ps*ap*
+s,R,As-!DGrKR>Is-WhWs.TIhs/H%$s0Ma,s02O5s2tAhs3CYos4[M3mHF<-s5j:?s5<q5s4[M)
+s4%(os2b5Ws1A<:s/Q*os-s%Os,-i-s*+K]s(hXFs'>Y+s%iYfs%35[s$6TJo`Y9po`Wrsd6<-]
+JcG9?r;_EKJcC<$`W,r<U]5i~>
+JcFm4rr at WMJcG?As6BXNs6]jTs7$'Ys763^s7QEcrV-?es7u]krVQQkrV`5bpBgLIo9]-&o7[.3
+rL<hWs.01]rLa+bs/5mus02O1s1/0Cs0_m;s1nZ`s4[M!s475*s5X"ApZ__Cp$)M>s5j:?s53k3
+s4RG's3Uegs2=rPs1/09s/l=!s.]Oas-NbLs,d8 at s,6o5s+^Q-qh4p#oa1Wuoa1Zns7cQes7QEa
+s7?9]rU9dSs6TdOs69RIs6'FDs5a4>s5F"9s6]jNs5a4>s5F"9s53k4s4mY.s4RG)s4@;$s4%"r
+s3gels3Uecs1<j^JcG9?r;_EKJcC<$`W,r<U]5i~>
+JcFm4rr at WMJcG?AJU[?Bqg\WSs)%d[s.KD&s0;U4s1A<Js2Y/as)\3`s*4Qjs*juus+UK:s-NbU
+s.KCgs/Q+'s1/0Hs3Uf's6TdYs6p!Xp[e"Is7?3Ps60FRdJNh;rV?Kfs7?9\s6p!Ss69RFs5<q2
+s4%(ss3CYds2G#Ps1A<@s0_m2s/l=\s5F"8s5*_1rrDrPrS7G&fm_=4JcC<$nc/OfJcC<$JcE^h
+rrAhoJ,~>
+JcFm4rr at WMJcG?AJU[WJomc]=o,7QFr>GPPru:tYruqCgruh=fs"471s$?ZWs&oA9s+LE4s,[2A
+s,m8Cs-*JIs-<VOs-s%[s.fU_s.B=es/H%0s1eTOs2b5Zs2tAfs475*s5WM1pZMS;s5O(9s4dS+
+s4%(qs31M^s1A<:s/Q*ns-itLs+gW(s)n?Zs(MFAs',M&s%`SersJc0nHAjlo`WfoeNSQaJcG-;
+r;_EKJcC<$aoDA at U]5i~>
+JcFm4rr at WMJcG?As6]jSs7$'Ys763]s7H?brV-?es7u]ks82cms8A5^pBgFGn!Ep(pOrR6rL*\S
+s-s%YrLNt[s.B=cs/#aps/l<ts/H%$s0D[As2Y/_s3^kds31Mjs4IA.s5i_7p$)M=s5X.<s5!_/
+s474us3CYcs2+fLs0r$5s/Q*ps.B=Zs-3PFs,R,<s,$c2s+UK+r<i'$rrD]us7cQes7QEas7?9]
+s7--Xs6fpRs6K^Ms60LGs5j:As5X.<s5<q6s5!_1s6K^Ms5X.:s5*e3s4dS-s4RG)s4@;%s4./!
+s3peks3CY_s1*^\JcG-;r;_EKJcC<$aoDA at U]5i~>
+JcFm4rr at WMJcG?AJU[WJomd!Ks(_RTs*k!Os0D[6s1SHMs2k;ds3gpjs*=Wks*jors+:9*s,6oG
+s.B=hs0;U8s24lbs5O(CmIU5GrT=(ArUg-_s7FS5qtg?gs7H?\s6]jPs69RFs5O(7s4IA%s3Uei
+s2Y/Vs1\NFs6TdJs5j:As5X.<s5<e3rrDrPrS7G*eUH%4JcC<$mJm+bJcC<$JcEjlrrAhoJ,~>
+JcFm4rr at WMJcG?AJU[WJomc]=o,7QFr>GPPru:tYruqCgruh=fs"471s$?ZWs&oA9s+LE4s,[2A
+s,m8Cs-*JIs-<VOs-s%[s.fU_s.B=es/H%0s1eTOs2b5Zs2tAfs475*s5WM1pZMS;s5O(9s4dS+
+s4%(qs31M^s1A<:s/Q*ns-itLs+gW(s)n?Zs(MFAs',M&s%`SersJc0nHAjlo`WfoeNSQaJcG-;
+r;_EKJcC<$aoDA at U]5i~>
+JcFm4rr at WMJcG?As6]jSs7$'Ys763]s7H?brV-?es7u]ks82cms8A5^pBgFGn!Ep(pOrR6rL*\S
+s-s%YrLNt[s.B=cs/#aps/l<ts/H%$s0D[As2Y/_s3^kds31Mjs4IA.s5i_7p$)M=s5X.<s5!_/
+s474us3CYcs2+fLs0r$5s/Q*ps.B=Zs-3PFs,R,<s,$c2s+UK+r<i'$rrD]us7cQes7QEas7?9]
+s7--Xs6fpRs6K^Ms60LGs5j:As5X.<s5<q6s5!_1s6K^Ms5X.:s5*e3s4dS-s4RG)s4@;%s4./!
+s3peks3CY_s1*^\JcG-;r;_EKJcC<$aoDA at U]5i~>
+JcFm4rr at WMJcG?AJU[WJomd!Ks(_RTs*k!Os0D[6s1SHMs2k;ds3gpjs*=Wks*jors+:9*s,6oG
+s.B=hs0;U8s24lbs5O(CmIU5GrT=(ArUg-_s7FS5qtg?gs7H?\s6]jPs69RFs5O(7s4IA%s3Uei
+s2Y/Vs1\NFs6TdJs5j:As5X.<s5<e3rrDrPrS7G*eUH%4JcC<$mJm+bJcC<$JcEjlrrAhoJ,~>
+JcFm4rr at WMJcG?AM14iAo`X_$r>PVRruM+as![n!s#'gBs%NGns(;:Js)n?is+^Q2s,I&>s-!DG
+s-3PKs-WhIs,m>Gs-Whcs0)I0s186Es2"`Ss1nZSs3(Ghs475)s5F"?s69"9q<.e?s5X.:s4mY-
+s4..ts3:S`s1SH=s/H$ms-`nJs+UK#s*"EYs(23LrtbVHrs\o8rsJc0nHAjlo`WZkffjueJcG!7
+r;_EKJcC<$c2[eDU]5i~>
+JcFm4rr at WMJcG?As6p!Xs763]s7H?as7cKes7u]ks82cms8A/\oa1.Cm?dL5rL*\SrL<hWs.01]
+s.B=ds-`nWs.B=ds0Ma7s1JBIs2=rYs31MZs2Y/`s3^kus4mY6s60"<p$)M?s5j:>s5*e1s4@;#
+s3L_fs2G#Qs186;s/uC"s.TI^s-E\Is,R*urtbVHrs\o8r<i'$rrD]us7ZKcs7H?_rUU!Xs6fpS
+s6K^Ms60LGs5s at Bs5X.<s5<q6s5!_1s4[M*s4./4s5s@?s53k5s4mY.s4RG)s4@;$s4%(sq9f5d
+s2+fGJcC<$l2U\^JcC<$JcF!prrAhoJ,~>
+JcFm4rr at WMJcG?AM14iAs'>Y;s).j`s,?uIs-ites186Qs3L_os4@;*s*Xiqs*suts+:9,s,I&B
+s-s%cs0;U9s3(Gjs4[M4s69RNs6p!Xp[e4Cs7?9_qtC!]s829_hu!<Is7cQas6]jNs6'FCs5F"7
+s4[M+s3q"ns7--YrU0XOs6'FEs5j:As5O(;rS[_5rrDrPrS7G-d=0b4JcC<$l2U\^JcC<$JcF!p
+rrAhoJ,~>
+JcFm4rr at WMJcG?AM14iAo`X_$r>PVRruM+as![n!s#'gBs%NGns(;:Js)n?is+^Q2s,I&>s-!DG
+s-3PKs-WhIs,m>Gs-Whcs0)I0s186Es2"`Ss1nZSs3(Ghs475)s5F"?s69"9q<.e?s5X.:s4mY-
+s4..ts3:S`s1SH=s/H$ms-`nJs+UK#s*"EYs(23LrtbVHrs\o8rsJc0nHAjlo`WZkffjueJcG!7
+r;_EKJcC<$c2[eDU]5i~>
+JcFm4rr at WMJcG?As6p!Xs763]s7H?as7cKes7u]ks82cms8A/\oa1.Cm?dL5rL*\SrL<hWs.01]
+s.B=ds-`nWs.B=ds0Ma7s1JBIs2=rYs31MZs2Y/`s3^kus4mY6s60"<p$)M?s5j:>s5*e1s4@;#
+s3L_fs2G#Qs186;s/uC"s.TI^s-E\Is,R*urtbVHrs\o8r<i'$rrD]us7ZKcs7H?_rUU!Xs6fpS
+s6K^Ms60LGs5s at Bs5X.<s5<q6s5!_1s4[M*s4./4s5s@?s53k5s4mY.s4RG)s4@;$s4%(sq9f5d
+s2+fGJcC<$l2U\^JcC<$JcF!prrAhoJ,~>
+JcFm4rr at WMJcG?AM14iAs'>Y;s).j`s,?uIs-ites186Qs3L_os4@;*s*Xiqs*suts+:9,s,I&B
+s-s%cs0;U9s3(Gjs4[M4s69RNs6p!Xp[e4Cs7?9_qtC!]s829_hu!<Is7cQas6]jNs6'FCs5F"7
+s4[M+s3q"ns7--YrU0XOs6'FEs5j:As5O(;rS[_5rrDrPrS7G-d=0b4JcC<$l2U\^JcC<$JcF!p
+rrAhoJ,~>
+JcFm4rr at WMJcG?AMgk&Co*"M"r>PVRruh=gs""+)s$$HRs%iYss'>Y6s(_RSs*Ocus+^Q0s,6o.
+s+^Q5s-!DVs/,grs/l=+s0_m;s1SHJs2=rNs2+fVs31Mjs4@;+s5O(?qs!_9qre"<rSmk7s4mY-
+s4..ts3CY`s1JB<s/H$ls-WhHs+LD:s"j['ruh=\rtk\Jrseu9qZZQorrD]pc$nJ4JcC<$jo>8Z
+JcC<$JcF-trrAhoJ,~>
+JcFm4rr at WMJcG?As7--\s7H?as7ZKes7lWis8)cmqu$EkQ2^@]mkO@!opG]Gs-inUs.'+[s,m>F
+s-E\Qs/>sus/uC,s0_m;s1SHKs2P)]s1\NOs2b5bs3gr"s5!_7s5re8qs".Es5X(=s5F"7s4dS*
+s4%(qs31M`s2+fLs0r$5s/Z0rs$-N>s![miru:tSrt>>@rsS]2o*PEsoa1ZkrUg'[s7--Xs6]jP
+s6BXKs6'FEs5a4?s5F"9s5*e3s4mY.s4IA%s3gqos3CZ*s5O(:s5!Y.s4RG's4./!s3g_js3(GY
+s0mRZJcFj3r;_EKJcC<$dJs4HU]5i~>
+JcFm4rr at WMJcG?AMgk&Cs',M6s(hX^s,?uGs/#ahs02O=s2Y/bs475*s5<q;s*jutrIFp%s,6o>
+s-Wh]s/l=.s1JBJs2Y/bs475,s5j:Es69RLs5F"<s6'FIs7cQgs7u]krV?EerV,RShu!HMs7u]f
+s7$'Ss5s at Bs5<q5s4[MIs7QEas7?9]s7$!Us6fpOs60LGs5s at Cs5X.=rSde6rrDrPrS7G,c$nJ4
+JcC<$jo>8ZJcC<$JcF-trrAhoJ,~>
+JcFm4rr at WMJcG?AMgk&Co*"M"r>PVRruh=gs""+)s$$HRs%iYss'>Y6s(_RSs*Ocus+^Q0s,6o.
+s+^Q5s-!DVs/,grs/l=+s0_m;s1SHJs2=rNs2+fVs31Mjs4@;+s5O(?qs!_9qre"<rSmk7s4mY-
+s4..ts3CY`s1JB<s/H$ls-WhHs+LD:s"j['ruh=\rtk\Jrseu9qZZQorrD]pc$nJ4JcC<$jo>8Z
+JcC<$JcF-trrAhoJ,~>
+JcFm4rr at WMJcG?As7--\s7H?as7ZKes7lWis8)cmqu$EkQ2^@]mkO@!opG]Gs-inUs.'+[s,m>F
+s-E\Qs/>sus/uC,s0_m;s1SHKs2P)]s1\NOs2b5bs3gr"s5!_7s5re8qs".Es5X(=s5F"7s4dS*
+s4%(qs31M`s2+fLs0r$5s/Z0rs$-N>s![miru:tSrt>>@rsS]2o*PEsoa1ZkrUg'[s7--Xs6]jP
+s6BXKs6'FEs5a4?s5F"9s5*e3s4mY.s4IA%s3gqos3CZ*s5O(:s5!Y.s4RG's4./!s3g_js3(GY
+s0mRZJcFj3r;_EKJcC<$dJs4HU]5i~>
+JcFm4rr at WMJcG?AMgk&Cs',M6s(hX^s,?uGs/#ahs02O=s2Y/bs475*s5<q;s*jutrIFp%s,6o>
+s-Wh]s/l=.s1JBJs2Y/bs475,s5j:Es69RLs5F"<s6'FIs7cQgs7u]krV?EerV,RShu!HMs7u]f
+s7$'Ss5s at Bs5<q5s4[MIs7QEas7?9]s7$!Us6fpOs60LGs5s at Cs5X.=rSde6rrDrPrS7G,c$nJ4
+JcC<$jo>8ZJcC<$JcF-trrAhoJ,~>
+JcFm4rr at WMJcG?ANIL2Co*"Fur>YbWs!.Oms"==/s#pBMs%WMls'#G0s(24Gs)J'`s)\3`s*=X'
+s-*JPs.]Oks/Q+$s0;U1s0r$?s1eTOs1A<Hs2G#Zs3:Sls4@;+s53k:s6'4Bp#uG8s5!_-s4mY2
+s5!_1s4RG's3gqks24lJs0;TPs)\3Qs',M%s$m#Ks"46oruD%TrtGDBrri3&o*#'no`WHeh`cVk
+JcF^/qZ)3IJcC<$fDkjNU]5i~>
+JcFm4rr at WMJcG?As7H?as7ZKes7lWirVHQkqu$EkPQ(.[m4n:#pR(iGs-inUs,[2As,m>Rs.]Oi
+s/>sus/uC,s0Vg8s1A<Gs24lWs1JBJs2P)\s3CYms4IA-s5<q<s60"<rTX at Cs5*e0s5!Y2s5*e1
+s4IA$s3^kjs2b5Xs+12ps(q^Cs&8qes#L*2ruqC^rtk\Krso&8q[2p$rrD]urUp-]s763Zs6fpS
+s6K^Ls6'FEs5a4?s5F"9s53k4s4mY.s4RG's3q"ps3CYgs2tB$s5<q6s4mY.s4IA&s4..uq9f5h
+s3(GWs0dLYJcF^/qZ)3IJcC<$fDkjNU]5i~>
+JcFm4rr at WMJcG?ANIL2Cs'l"Cs*F^&s-Wh^s02O&s0hs at s2=r]s4%)(s5O(=s5a-/s+C?-s,[2E
+s-s%_s/Q+)s1&*Ds24lYs3CYos4[M&s4@;(s6BXPs7?9brV?9crV?Kgjo"*7s8)cis763Ws69 at O
+s7cKcs7QE`s763[rUBjPs69RIs6'FEs5j:As5X.=s5<q7rrDrPs4dM+bC8>4JcC<$iW&cTJcC<$
+JcF@%rrAhoJ,~>
+JcFm4rr at WMJcG?ANIL2Co*"Fur>YbWs!.Oms"==/s#pBMs%WMls'#G0s(24Gs)J'`s)\3`s*=X'
+s-*JPs.]Oks/Q+$s0;U1s0r$?s1eTOs1A<Hs2G#Zs3:Sls4@;+s53k:s6'4Bp#uG8s5!_-s4mY2
+s5!_1s4RG's3gqks24lJs0;TPs)\3Qs',M%s$m#Ks"46oruD%TrtGDBrri3&o*#'no`WHeh`cVk
+JcF^/qZ)3IJcC<$fDkjNU]5i~>
+JcFm4rr at WMJcG?As7H?as7ZKes7lWirVHQkqu$EkPQ(.[m4n:#pR(iGs-inUs,[2As,m>Rs.]Oi
+s/>sus/uC,s0Vg8s1A<Gs24lWs1JBJs2P)\s3CYms4IA-s5<q<s60"<rTX at Cs5*e0s5!Y2s5*e1
+s4IA$s3^kjs2b5Xs+12ps(q^Cs&8qes#L*2ruqC^rtk\Krso&8q[2p$rrD]urUp-]s763Zs6fpS
+s6K^Ls6'FEs5a4?s5F"9s53k4s4mY.s4RG's3q"ps3CYgs2tB$s5<q6s4mY.s4IA&s4..uq9f5h
+s3(GWs0dLYJcF^/qZ)3IJcC<$fDkjNU]5i~>
+JcFm4rr at WMJcG?ANIL2Cs'l"Cs*F^&s-Wh^s02O&s0hs at s2=r]s4%)(s5O(=s5a-/s+C?-s,[2E
+s-s%_s/Q+)s1&*Ds24lYs3CYos4[M&s4@;(s6BXPs7?9brV?9crV?Kgjo"*7s8)cis763Ws69 at O
+s7cKcs7QE`s763[rUBjPs69RIs6'FEs5j:As5X.=s5<q7rrDrPs4dM+bC8>4JcC<$iW&cTJcC<$
+JcF@%rrAhoJ,~>
+JcFm4rr at WMJcG?ANIL8EnHA.qru:t\s!@[os"47+s#U0Hs%*/cs&T/*s&T/)s'l"Bs*Xits+gW5
+s-!DNs.TIks/Z1&s0;U1s0hs>s1nZEs1\NNs2Y/^s3CYms475(s5!_6s5a4Dq<@e?s5X.9s4IA#
+s3gqtrRh)#s0)I%s.]O_s,m>;s*t&ls)%dJs&B"<q$[-.klh"do*!0aj$&%oJcFL)r;_EKJcC<$
+g].9RU]5i~>
+JcFm4rr at WMJcG?As7ZEcs7lWirVHKiqu$EkQ2^:[lS8:'o9fKEs,I&=rK$uKs.01]s.B=cs/#ao
+s/Z1&s0;U2s0r$=s1\NNs1&*Ds2=rYs3(Ggs3q#"s4[M0s5O(?s69RLp$2S=s53k1rRCl!rS%5'
+s0Ma-s/,ggs-<VCs+LDus)J'Ns&B"<q$[-.km@@io*PHks7H?_s763Zs6p!Ts6TdNs6'FDs5X.=
+s5<q7s5!_1s4[M+s475!s3^kms3:Ses2b5Zs2+fms4mY.s4@;%s4%(sqpGGjs3:Sds1SH at JcC<$
+g].3PJcC<$JcFL)rrAhoJ,~>
+JcFm4rr at WMJcG?ANIL8Es().Gs*+L!s-<VZs0)I6s0)I4s2"`Ws3^l"s5!_4s5F"<s5a32s+^Q2
+s,R,Bs-WhYs/5n!s0Vg<s2"`Hs1eTPs2tAss5F"?s69RNs763`nbV5BjnnrMs7cQeqt:!]rV-9a
+s7QEas7?9]s7--Ts6BXKs60LGs5s at Cs5a4?s5O(:s53hVrS at M/s4IA&s4RFYaaW86JcC<$g].3P
+JcC<$JcFL)rrAhoJ,~>
+JcFm4rr at WMJcG?ANIL8EnHA.qru:t\s!@[os"47+s#U0Hs%*/cs&T/*s&T/)s'l"Bs*Xits+gW5
+s-!DNs.TIks/Z1&s0;U1s0hs>s1nZEs1\NNs2Y/^s3CYms475(s5!_6s5a4Dq<@e?s5X.9s4IA#
+s3gqtrRh)#s0)I%s.]O_s,m>;s*t&ls)%dJs&B"<q$[-.klh"do*!0aj$&%oJcFL)r;_EKJcC<$
+g].9RU]5i~>
+JcFm4rr at WMJcG?As7ZEcs7lWirVHKiqu$EkQ2^:[lS8:'o9fKEs,I&=rK$uKs.01]s.B=cs/#ao
+s/Z1&s0;U2s0r$=s1\NNs1&*Ds2=rYs3(Ggs3q#"s4[M0s5O(?s69RLp$2S=s53k1rRCl!rS%5'
+s0Ma-s/,ggs-<VCs+LDus)J'Ns&B"<q$[-.km@@io*PHks7H?_s763Zs6p!Ts6TdNs6'FDs5X.=
+s5<q7s5!_1s4[M+s475!s3^kms3:Ses2b5Zs2+fms4mY.s4@;%s4%(sqpGGjs3:Sds1SH at JcC<$
+g].3PJcC<$JcFL)rrAhoJ,~>
+JcFm4rr at WMJcG?ANIL8Es().Gs*+L!s-<VZs0)I6s0)I4s2"`Ws3^l"s5!_4s5F"<s5a32s+^Q2
+s,R,Bs-WhYs/5n!s0Vg<s2"`Hs1eTPs2tAss5F"?s69RNs763`nbV5BjnnrMs7cQeqt:!]rV-9a
+s7QEas7?9]s7--Ts6BXKs60LGs5s at Cs5a4?s5O(:s53hVrS at M/s4IA&s4RFYaaW86JcC<$g].3P
+JcC<$JcFL)rrAhoJ,~>
+JcFm4rr at WMJcG?AO+-JGm0)eoruD%\s!@[ps"47*s#0m?s#C$Cs$m#_s'Yk=s(q^Vs*=Wps+^Q4
+s,m>Ks.B=gs/Z1%s02O0s0_m0s0D[6s1SHLs2P)]s3(Ggs4%)#s4dS2s5X.Bs6BFEs5<q-s4IA$
+s3CYds31M:s/>t!s/Q*ts/,gms.fUas-*J at s+11prseu:pC$p,rrqWirrDWnaaW>8JcC<$ec5RJ
+JcC<$JcFX-rrAhoJ,~>
+JcFm4rr at WMJcG?As7cQgrV?EgrVQKirV`#\m0W/7qj7&ErJ^]7s-inUs.'+[s.97_s.TIes/#ao
+s/Z1&s0;U1s0hs;s0)I/s0r$Bs2+fUs2tAcs3Uers4IA,s53k;s60LKq<J"=s475(s4..rs2tAe
+s/#ars02O+s/c7#s/H$rs.KCZs,[26s![mVrs\W0q[2QorrDWss7lWgs7QEas763Zs6p!Ts6K^K
+s5j:@s5<q7s5!_1s4[M+s4@;#s3gqos3CYgs2k;\s2=rSs5!_0s4RG(s4..uq9f5fs2tA`s1<j^
+JcF:#r;_EKJcC<$huE]VU]5i~>
+JcFm4rr at WMJcG?AO+-JGs'YkEs*4Qss-!DUs/c7-s1JBOs1A<Ls3:Sos4@;)s4mY2s5<q<s+13(
+s,6o<s-*JKs-s%_s.'+bs/Q+(s24lYs3CYos4[M2s5a4Ds6TdTs7QEep\NYBnb`"TrV6Ees7Z?_
+s7lQes7Z?_s7?9]s6]jPs6BXKs60LGs5s at Cs5a4?s5O(:s53hVs5!_1s4[M*s3q#"s0]stjZ\7q
+JcF:#r;_EKJcC<$huE]VU]5i~>
+JcFm4rr at WMJcG?AO+-JGm0)eoruD%\s!@[ps"47*s#0m?s#C$Cs$m#_s'Yk=s(q^Vs*=Wps+^Q4
+s,m>Ks.B=gs/Z1%s02O0s0_m0s0D[6s1SHLs2P)]s3(Ggs4%)#s4dS2s5X.Bs6BFEs5<q-s4IA$
+s3CYds31M:s/>t!s/Q*ts/,gms.fUas-*J at s+11prseu:pC$p,rrqWirrDWnaaW>8JcC<$ec5RJ
+JcC<$JcFX-rrAhoJ,~>
+JcFm4rr at WMJcG?As7cQgrV?EgrVQKirV`#\m0W/7qj7&ErJ^]7s-inUs.'+[s.97_s.TIes/#ao
+s/Z1&s0;U1s0hs;s0)I/s0r$Bs2+fUs2tAcs3Uers4IA,s53k;s60LKq<J"=s475(s4..rs2tAe
+s/#ars02O+s/c7#s/H$rs.KCZs,[26s![mVrs\W0q[2QorrDWss7lWgs7QEas763Zs6p!Ts6K^K
+s5j:@s5<q7s5!_1s4[M+s4@;#s3gqos3CYgs2k;\s2=rSs5!_0s4RG(s4..uq9f5fs2tA`s1<j^
+JcF:#r;_EKJcC<$huE]VU]5i~>
+JcFm4rr at WMJcG?AO+-JGs'YkEs*4Qss-!DUs/c7-s1JBOs1A<Ls3:Sos4@;)s4mY2s5<q<s+13(
+s,6o<s-*JKs-s%_s.'+bs/Q+(s24lYs3CYos4[M2s5a4Ds6TdTs7QEep\NYBnb`"TrV6Ees7Z?_
+s7lQes7Z?_s7?9]s6]jPs6BXKs60LGs5s at Cs5a4?s5O(:s53hVs5!_1s4[M*s3q#"s0]stjZ\7q
+JcF:#r;_EKJcC<$huE]VU]5i~>
+JcFm4rr at WMJcG?AO+-JGm0)qsruM+]ruh=bs!7Ums""*ns!@[rs$-NQs%`Sns'5S6s(_RQs*+Km
+s+^Q3s,m>Is.01bs/Q+$s0)I.s/uC*s0D[4s1JBHs24lPs24lWs3(Gis4@;,s5O(?s60LJrTX at 1
+s2=r"s-WhSs,R,8s,R,Cs-it\s.]Ods.97]s-s%Urs\o8rsJc8r=&K0r<iK,klh"do*!*_k<=Is
+JcF-tr;_EKJcC<$j8],ZU]5i~>
+JcFm4rr at WMJcG?As7lWirVHEgrVZKiQ2^.WlS8@)rL!PAs,?iCrL3\Ss.'+[s.B=as.]Ogs/#ao
+s/Z1&s02O0s0_m0s0)I.s0hs?s1nZQs1nZQs2b5as3^kus5*e9s5s at Gs6KXKs3q"es-3PQs.01P
+s,6o?s-NbWs.o[ls.o[hs.TIbs.'*#r=Ao;r=&K0q$Q?mrrDWss8)cks7cQds7H?^s7$'Ws6TdN
+s6'FDs5O(9s4mY.s4RG(s4%(ts3^kms3:Sds2Y/Ys24lPs1JBcs4IA&s4%"qrR(Yks31Mas2Y/O
+JcC<$dJs.FJcC<$JcFd1rrAhoJ,~>
+JcFm4rr at WMJcG?AO+-JGs(hX]s+LE5s.97fs0)I3s1nZUs1\NQs3L_os4IA,s53k8s6'FJs6Tc?
+s,-i9s,d89s,-i<s.fUos0;U6s1eTQs3(Gis4@;,s5O(As6K^Rs763`s7uQgg&1gGp%n at WqtU3c
+rV$9es7lWgrV$-]s7H9Ws6TdNs69RIs6'FEs5j:As5X.<s5<q7rrE)Ss4[M*s474rs3q"La+!28
+JcC<$dJs.FJcC<$JcFd1rrAhoJ,~>
+JcFm4rr at WMJcG?AO+-JGm0)qsruM+]ruh=bs!7Ums""*ns!@[rs$-NQs%`Sns'5S6s(_RQs*+Km
+s+^Q3s,m>Is.01bs/Q+$s0)I.s/uC*s0D[4s1JBHs24lPs24lWs3(Gis4@;,s5O(?s60LJrTX at 1
+s2=r"s-WhSs,R,8s,R,Cs-it\s.]Ods.97]s-s%Urs\o8rsJc8r=&K0r<iK,klh"do*!*_k<=Is
+JcF-tr;_EKJcC<$j8],ZU]5i~>
+JcFm4rr at WMJcG?As7lWirVHEgrVZKiQ2^.WlS8@)rL!PAs,?iCrL3\Ss.'+[s.B=as.]Ogs/#ao
+s/Z1&s02O0s0_m0s0)I.s0hs?s1nZQs1nZQs2b5as3^kus5*e9s5s at Gs6KXKs3q"es-3PQs.01P
+s,6o?s-NbWs.o[ls.o[hs.TIbs.'*#r=Ao;r=&K0q$Q?mrrDWss8)cks7cQds7H?^s7$'Ws6TdN
+s6'FDs5O(9s4mY.s4RG(s4%(ts3^kms3:Sds2Y/Ys24lPs1JBcs4IA&s4%"qrR(Yks31Mas2Y/O
+JcC<$dJs.FJcC<$JcFd1rrAhoJ,~>
+JcFm4rr at WMJcG?AO+-JGs(hX]s+LE5s.97fs0)I3s1nZUs1\NQs3L_os4IA,s53k8s6'FJs6Tc?
+s,-i9s,d89s,-i<s.fUos0;U6s1eTQs3(Gis4@;,s5O(As6K^Rs763`s7uQgg&1gGp%n at WqtU3c
+rV$9es7lWgrV$-]s7H9Ws6TdNs69RIs6'FEs5j:As5X.<s5<q7rrE)Ss4[M*s474rs3q"La+!28
+JcC<$dJs.FJcC<$JcFd1rrAhoJ,~>
+JcFm4rr at WMJcG?AO+-PIklgl$ru1nVruM+\r?)%^rs8W=rtk\Ss!n%$s"aU7s$6TTs%iYqs'G_:
+s).j[s*ap$s,6o=s-<VQs.KCis/c6rs/uC*s02O/s0_m;s1\N at s1/0Cs2"`Ts31Mks4IA.s5X..
+s4[Ljs,?tls)A!]s*ap!s*Ocns+13*s,I&Bs-`n0s%r_Grseu:rsSi6rso&<rs\]2r<iK,k61eb
+pB:Ktrs\cho01iVkrs[uJcF!pr;_EKJcC<$kPtP^U]5i~>
+JcFm4rr at WMJcG?As7u]kq>:-gp\gHXkm?`3rttWkrL!JMrL3\Ss.'+[s.B=as.TIfs.o[ls/5ms
+s/l=)s/#b!s02O.s0D[5s186Es0_m;s1SHLs2P)_s3q#$s5*e:s4./)s2G#!s(q^Us*=Wps+UK%
+s+(-&s,6o>s-NbVs*=WDs"FBart,,>rso&<rs\]2q$Q9krrDd"s+C?<s8;oos8)cks7lWgrV$9a
+s7H?Vs60LEs5F"7s4[M)s4..us3gqos3CYgs2k;]s2G#Ts1\NEs1&*^s475"s3gqps3gqos3CYe
+s2Y/Ys1<j^JcF!pr;_EKJcC<$kPtP^U]5i~>
+JcFm4rr at WMJcG?AO+-PIs'l"Qs+UK7s.97gs0)I5s1eTRs31Mks2Y/`s3^kts4mY6s69RLrTsR6
+s*=Wms+(-1s-*JLs.01cs/Z1*s1/0Fs2Y/bs4%)&s5<q=s69RMs7$'[s7cQih>I$En+ueSrV6Ee
+s7ZKgs7lQeq=aj]s6p!Us6]jQs6BXKs60LGs5s at Cs5a4?s5F"9s53hVs4dS,s4@;#s31LUs"!t2
+o01iVkrs[uJcF!pr;_EKJcC<$kPtP^U]5i~>
+JcFm4rr at WMJcG?AO+-PIklgl$ru1nVruM+\r?)%^rs8W=rtk\Ss!n%$s"aU7s$6TTs%iYqs'G_:
+s).j[s*ap$s,6o=s-<VQs.KCis/c6rs/uC*s02O/s0_m;s1\N at s1/0Cs2"`Ts31Mks4IA.s5X..
+s4[Ljs,?tls)A!]s*ap!s*Ocns+13*s,I&Bs-`n0s%r_Grseu:rsSi6rso&<rs\]2r<iK,k61eb
+pB:Ktrs\cho01iVkrs[uJcF!pr;_EKJcC<$kPtP^U]5i~>
+JcFm4rr at WMJcG?As7u]kq>:-gp\gHXkm?`3rttWkrL!JMrL3\Ss.'+[s.B=as.TIfs.o[ls/5ms
+s/l=)s/#b!s02O.s0D[5s186Es0_m;s1SHLs2P)_s3q#$s5*e:s4./)s2G#!s(q^Us*=Wps+UK%
+s+(-&s,6o>s-NbVs*=WDs"FBart,,>rso&<rs\]2q$Q9krrDd"s+C?<s8;oos8)cks7lWgrV$9a
+s7H?Vs60LEs5F"7s4[M)s4..us3gqos3CYgs2k;]s2G#Ts1\NEs1&*^s475"s3gqps3gqos3CYe
+s2Y/Ys1<j^JcF!pr;_EKJcC<$kPtP^U]5i~>
+JcFm4rr at WMJcG?AO+-PIs'l"Qs+UK7s.97gs0)I5s1eTRs31Mks2Y/`s3^kts4mY6s69RLrTsR6
+s*=Wms+(-1s-*JLs.01cs/Z1*s1/0Fs2Y/bs4%)&s5<q=s69RMs7$'[s7cQih>I$En+ueSrV6Ee
+s7ZKgs7lQeq=aj]s6p!Us6]jQs6BXKs60LGs5s at Cs5a4?s5F"9s53hVs4dS,s4@;#s31LUs"!t2
+o01iVkrs[uJcF!pr;_EKJcC<$kPtP^U]5i~>
+JcFm4rr at WMJcG?AO+-PIlNI.iruD%Zq]>b at r<E9,ruh=`ruh=ds!Rgrs"==-s#U0Gs%*/ds&]5.
+s(VLQs*F]rs+p]8s,m>Is.'+`s/,h!s02O.s0D[2s0_m;s/uC-s0r$@s2"_ts-s%bs/l=/s0hs#
+s,R,%s%*/bs&B#&s'Yk<s(D@>s'#G&s&&eks%<;Ert#,>rs\o8rsJc:rso&;pC%!.qZZ-crrD]n
+q`j7-j*p5VJcC<$aoD;>JcC<$JcG'9rrAhoJ,~>
+JcFm4rr at WMJcG?As8)cmp\adaQ2]qQpG)I\s"XJ=s-WPKqjRPSs.'+[s.B=as.TIfs.oUis/5mt
+s/>t$s02O/s0Ma4s0hs=s/uC-s1&*Bs2+f!s.'+es0)I3s1&*'s,d8*s%<;gs&]5,s'u(Bs(hXE
+s'G_.s&K(ss%`SMrtGDFr=Jo<rso&;pC$d(k6_.gon3;BrVQWks7u]is7cKcs7QEas7?3[s7$'W
+s5!_/s4@;"s3^kms3:Ses2k;]s2G#Ss1\NGs186`s47(rs3Uels31Mbs2G#Ts0%"RJcEjlr;_EK
+JcC<$li6tbU]5i~>
+JcFm4rr at WMJcG?AO+-PIs)n?rs-*JSs/>t%s1JBLs2k;es4./)s5<q*s4@;,s5O(ArR(Sms6Tc>
+s+^Q0s,6o<s-!DKs.01cs/Z1*s1/0Gs2b5es475+s5O(As6BXPs7--^s81XMp\XLWp\FX[s82]g
+p\4^Xs6p!Us6]jQs6KXJs6'FEs5j:As5O"9s5<nWs)%dOs(_RJrFPjjk<@pTkrs[uJcEjlr;_EK
+JcC<$li6tbU]5i~>
+JcFm4rr at WMJcG?AO+-PIlNI.iruD%Zq]>b at r<E9,ruh=`ruh=ds!Rgrs"==-s#U0Gs%*/ds&]5.
+s(VLQs*F]rs+p]8s,m>Is.'+`s/,h!s02O.s0D[2s0_m;s/uC-s0r$@s2"_ts-s%bs/l=/s0hs#
+s,R,%s%*/bs&B#&s'Yk<s(D@>s'#G&s&&eks%<;Ert#,>rs\o8rsJc:rso&;pC%!.qZZ-crrD]n
+q`j7-j*p5VJcC<$aoD;>JcC<$JcG'9rrAhoJ,~>
+JcFm4rr at WMJcG?As8)cmp\adaQ2]qQpG)I\s"XJ=s-WPKqjRPSs.'+[s.B=as.TIfs.oUis/5mt
+s/>t$s02O/s0Ma4s0hs=s/uC-s1&*Bs2+f!s.'+es0)I3s1&*'s,d8*s%<;gs&]5,s'u(Bs(hXE
+s'G_.s&K(ss%`SMrtGDFr=Jo<rso&;pC$d(k6_.gon3;BrVQWks7u]is7cKcs7QEas7?3[s7$'W
+s5!_/s4@;"s3^kms3:Ses2k;]s2G#Ss1\NGs186`s47(rs3Uels31Mbs2G#Ts0%"RJcEjlr;_EK
+JcC<$li6tbU]5i~>
+JcFm4rr at WMJcG?AO+-PIs)n?rs-*JSs/>t%s1JBLs2k;es4./)s5<q*s4@;,s5O(ArR(Sms6Tc>
+s+^Q0s,6o<s-!DKs.01cs/Z1*s1/0Gs2b5es475+s5O(As6BXPs7--^s81XMp\XLWp\FX[s82]g
+p\4^Xs6p!Us6]jQs6KXJs6'FEs5j:As5O"9s5<nWs)%dOs(_RJrFPjjk<@pTkrs[uJcEjlr;_EK
+JcC<$li6tbU]5i~>
+JcFm4rr at WMJcG?APCDhInHARir>th>r>tnZq]Pn^s!%Iis!dt!s"j[9s$?ZVs&&f!s'l"Bs)A!_
+s+(-'s,-i:s-<VRs.]Oms/c7(s/u=%s.oZis&oA4s).j^s+LE2s,I&(s()./s%35Rs#'g3s#9sB
+s$cr\s%r_rs%`S[s"sa)ruV1Rrt,2 at rseu:rsJ]7rseu:q$[30q$$'er<*'"o`G"TiBHFRm66+$
+JcEXfqZ)3IJcC<$nc/UhU]5i~>
+JcFm4rr at WMJcG?As82Wip&1*Rk6_)Aq\\u\rKmPOopPiKrL<VRrLX%]rLj1cs/,grs/l=)s/u=&
+s.oZjs'#G6s)7p`s+UK4s,[2+s(242s%EAVs#9s7s#L*Fs%*/bs&8r#s&&eas#C$0s!%IZrtPDE
+rt,&;rseu:q$Zp(lO!NBrrD_ErVQQis7u]is7cKcs7QEas7?9]s7-'Ws6fpSs6K^9s3q"ps3:Se
+s2k;]s2=rSs1nZKs186Cs4mY-s4%(ss3L_is2tA^s24lOJcC<$_uKT6JcC<$JcG9?rrAhoJ,~>
+JcFm4rr at WMJcG?APCDhIs+LE;s.KCjs0Vg at s2P)_s3gr#s53k;s5s at 8s5!^rs3:Sks69LIrTjLN
+s+UK-s+gW4s,R,As-NbWs/#ass0Ma:s2+fXs3Ueus53k;s60LKs7--^s7u9as8D9]p\XRYq>(!a
+s7u]irVccos82ims7uQes763[s7$'Vs6]jQs6KXJs6'FEs5j:As5X.<rG_c:s(q^Ns(_RIs(D@>
+q`j%'kC2e^JcC<$_uKT6JcC<$JcG9?rrAhoJ,~>
+JcFm4rr at WMJcG?APCDhInHARir>th>r>tnZq]Pn^s!%Iis!dt!s"j[9s$?ZVs&&f!s'l"Bs)A!_
+s+(-'s,-i:s-<VRs.]Oms/c7(s/u=%s.oZis&oA4s).j^s+LE2s,I&(s()./s%35Rs#'g3s#9sB
+s$cr\s%r_rs%`S[s"sa)ruV1Rrt,2 at rseu:rsJ]7rseu:q$[30q$$'er<*'"o`G"TiBHFRm66+$
+JcEXfqZ)3IJcC<$nc/UhU]5i~>
+JcFm4rr at WMJcG?As82Wip&1*Rk6_)Aq\\u\rKmPOopPiKrL<VRrLX%]rLj1cs/,grs/l=)s/u=&
+s.oZjs'#G6s)7p`s+UK4s,[2+s(242s%EAVs#9s7s#L*Fs%*/bs&8r#s&&eas#C$0s!%IZrtPDE
+rt,&;rseu:q$Zp(lO!NBrrD_ErVQQis7u]is7cKcs7QEas7?9]s7-'Ws6fpSs6K^9s3q"ps3:Se
+s2k;]s2=rSs1nZKs186Cs4mY-s4%(ss3L_is2tA^s24lOJcC<$_uKT6JcC<$JcG9?rrAhoJ,~>
+JcFm4rr at WMJcG?APCDhIs+LE;s.KCjs0Vg at s2P)_s3gr#s53k;s5s at 8s5!^rs3:Sks69LIrTjLN
+s+UK-s+gW4s,R,As-NbWs/#ass0Ma:s2+fXs3Ueus53k;s60LKs7--^s7u9as8D9]p\XRYq>(!a
+s7u]irVccos82ims7uQes763[s7$'Vs6]jQs6KXJs6'FEs5j:As5X.<rG_c:s(q^Ns(_RIs(D@>
+q`j%'kC2e^JcC<$_uKT6JcC<$JcG9?rrAhoJ,~>
+JcFm4rr at WMJcG?AUOM$Ko`Xpkq#L.1r?(t\s!%IcruqCes!@[os"47-s#^6Is%<;hs'#G2s(MFO
+s*4Qqs+gW5s,d8Fs-NbTs.00Ps#^6Cs$?ZMs#pBHs%35gs',M5s(_RHs&o at ns$$B?s#'g5s"FC'
+s"OI2s#g<Js$6T at s!Rgcrt>8Arso&;rsSi9r=8i:pC$^!o*"dirrW3#o`G"Th`g4Pmll=&JcEF`
+r;_EKJcC<$p&G$lU]5i~>
+JcFm4rr at WMJcG?As8;QgNW//Kq#p. at s"aJ=o9oWIpRD,Os./tWs.00Qs#g<Es$H`Os$$HIs%<;i
+s'5S7s(hXKs'#Fps$-NDs#C$;s#0m4s"==-s#L*Ds$crUs#9s.ruV1UrtPJHrt>>Crt#,=r=8i:
+pC$^&o*P)BrrD_Es82ckrV?Kgs7cQerUp3_s7?9]s7--Ys6p!Us6]jQs6BX7s3gqos3:Sds2Y/Y
+s24lQs1\NHs1JBBs4..us3L_is3(Gas2G#Ts1*^\JcEF`r;_EKJcC<$p&G$lU]5i~>
+JcFm4rr at WMJcG?AUOM$Ks'l"ms.KCms0r$Es2k;es475*s5X.Bs5j:Es6K^Qs6'@Es69LIs6KXM
+s6]i?s+gW1s,$c8s,m>Ks.B=gs/l=/s1JBLs2tAhs4RG4s60LKs6p!Zs7ZKhq>C'elhpMSp%n:U
+p\k-is82ims7u]erU^'[s7--Ys6fpRs6BXKs60LFs)\3\rGhjVs)7o;s(q^Ns(_RHs(;:2q`it%
+kC2k`JcC<$^&S$2JcC<$JcGECrrAhoJ,~>
+JcFm4rr at WMJcG?AUOM$Ko`Xpkq#L.1r?(t\s!%IcruqCes!@[os"47-s#^6Is%<;hs'#G2s(MFO
+s*4Qqs+gW5s,d8Fs-NbTs.00Ps#^6Cs$?ZMs#pBHs%35gs',M5s(_RHs&o at ns$$B?s#'g5s"FC'
+s"OI2s#g<Js$6T at s!Rgcrt>8Arso&;rsSi9r=8i:pC$^!o*"dirrW3#o`G"Th`g4Pmll=&JcEF`
+r;_EKJcC<$p&G$lU]5i~>
+JcFm4rr at WMJcG?As8;QgNW//Kq#p. at s"aJ=o9oWIpRD,Os./tWs.00Qs#g<Es$H`Os$$HIs%<;i
+s'5S7s(hXKs'#Fps$-NDs#C$;s#0m4s"==-s#L*Ds$crUs#9s.ruV1UrtPJHrt>>Crt#,=r=8i:
+pC$^&o*P)BrrD_Es82ckrV?Kgs7cQerUp3_s7?9]s7--Ys6p!Us6]jQs6BX7s3gqos3:Sds2Y/Y
+s24lQs1\NHs1JBBs4..us3L_is3(Gas2G#Ts1*^\JcEF`r;_EKJcC<$p&G$lU]5i~>
+JcFm4rr at WMJcG?AUOM$Ks'l"ms.KCms0r$Es2k;es475*s5X.Bs5j:Es6K^Qs6'@Es69LIs6KXM
+s6]i?s+gW1s,$c8s,m>Ks.B=gs/l=/s1JBLs2tAhs4RG4s60LKs6p!Zs7ZKhq>C'elhpMSp%n:U
+p\k-is82ims7u]erU^'[s7--Ys6fpRs6BXKs60LFs)\3\rGhjVs)7o;s(q^Ns(_RHs(;:2q`it%
+kC2k`JcC<$^&S$2JcC<$JcGECrrAhoJ,~>
+JcFm4rr at WMJcG?AYC=lKqZQWsq#L!iq]>bZruh7`ruh=bs!%Igs!@[ms"47-s#pBMs%NGls'5S4
+s(_RTs*ap$s,$b;rB0m;s$H`Qs$ZlRrBUBHrB1*Js%EAUs#C$;rAO[5s"sa0s""*ts!@[ns"47*
+s!@[_rtGDDrt#,>rseu:q$m?4q$[''o*"RcrrW3#pB(4Vffn_Nmll=&JcE:\r;_EKJcC<$q>^Hp
+U]5i~>
+JcFm4rr at WMJcG?Aq>H*JnHo!oo*P4Iq_J&9nX9EGs-s%Ss-WhSs-rtWs#g6CrB1$?rBpTQs$H`N
+s$?ZLrB:0Ls%NGWrAja6s#'g2s"47#s!Rgqs"OI0s!dsfrtbVKr=],Brt"o7rs\]2q[2p$mt:W?
+pOiGArVHKgs7lWgs7ZKcs7H9]s763[s7$'Ws6fpSs6TdOs69RIs3Uejs2k;^s2P)Vs1eTJs1JBC
+s02OPs3Ueks31Mcs2Y/Xs1nZ at JcC<$\c;U.JcC<$JcGQGrrAhoJ,~>
+JcFm4rr at WMJcG?AYC=lKs()/'s/l=3s2G#^s3gr#s4dS4s5j:Es7$'[s7H?cs7lQgrTX at Is6KXM
+s6]i?s+^Q/s,$c5s,?u?s-Wh[s/>t%s0r$Bs2b5ds4@;-s5s at Gp\aX]h>Ha<s7u9bs8;oorUp-]
+s7?3[s7$'Vs6Tc/s)n?`rH%pWs)A!VrrE(8s(_RIs(;:Aq`iatl[J:dJcC<$\c;U.JcC<$JcGQG
+rrAhoJ,~>
+JcFm4rr at WMJcG?AYC=lKqZQWsq#L!iq]>bZruh7`ruh=bs!%Igs!@[ms"47-s#pBMs%NGls'5S4
+s(_RTs*ap$s,$b;rB0m;s$H`Qs$ZlRrBUBHrB1*Js%EAUs#C$;rAO[5s"sa0s""*ts!@[ns"47*
+s!@[_rtGDDrt#,>rseu:q$m?4q$[''o*"RcrrW3#pB(4Vffn_Nmll=&JcE:\r;_EKJcC<$q>^Hp
+U]5i~>
+JcFm4rr at WMJcG?Aq>H*JnHo!oo*P4Iq_J&9nX9EGs-s%Ss-WhSs-rtWs#g6CrB1$?rBpTQs$H`N
+s$?ZLrB:0Ls%NGWrAja6s#'g2s"47#s!Rgqs"OI0s!dsfrtbVKr=],Brt"o7rs\]2q[2p$mt:W?
+pOiGArVHKgs7lWgs7ZKcs7H9]s763[s7$'Ws6fpSs6TdOs69RIs3Uejs2k;^s2P)Vs1eTJs1JBC
+s02OPs3Ueks31Mcs2Y/Xs1nZ at JcC<$\c;U.JcC<$JcGQGrrAhoJ,~>
+JcFm4rr at WMJcG?AYC=lKs()/'s/l=3s2G#^s3gr#s4dS4s5j:Es7$'[s7H?cs7lQgrTX at Is6KXM
+s6]i?s+^Q/s,$c5s,?u?s-Wh[s/>t%s0r$Bs2b5ds4@;-s5s at Gp\aX]h>Ha<s7u9bs8;oorUp-]
+s7?3[s7$'Vs6Tc/s)n?`rH%pWs)A!VrrE(8s(_RIs(;:Aq`iatl[J:dJcC<$\c;U.JcC<$JcGQG
+rrAhoJ,~>
+JcFm4rr at WMJcG?A_1)92rI3"@s+U1Nq#K^aqZd!Ar?;1bruqCds!.Ohs!Iaps"XI5s$QfYs&8r&
+s(23ds#0m:rAjg;q`FgBs$6TMs$H`Qs$H`Ns$$HFs#U0?s#0g7s#0m7rA=O0s"FC&s!Rgkruh7\
+rtk\Lrt58 at r=/c8rsnc3q[<9)o*"XeqZ?ctpB(@Zdm!/Jmll=&JcE.Xr;_EKJcC<$rVultU]5i~>
+JcFm4rr at WMJcG?AJc>BMq#p!iq[3-Ss"jP>pR2&Bs,d8Ds-3PKs-E[@s#0m;s#Tg7s$-NKs$?ZO
+s$QfQs$6TJs#g<Cs#L*;q`"I3s#'g4s"XO)s![mns!%Caru1nRrtPJFr=Ju>rsnc3q[<9.pBg):
+rrDeGs82ckrV?Ees7cQes7QEarU^'[s7--Ys6p!Us6]jQs6K^Ls60LFs31Mcs2Y/Xs2"`Ms1SHE
+s0r$3s3gqns3:Sds2k;[s2+fGs0%"RJcE.Xr;_EKJcC<$rVultU]5i~>
+JcFm4rr at WMJcG?A_1)92rI3"@s+UJ]s)n@&s/>t6s2G#`s475,s69RNs6p!Xs7H?as7cQgp%eRP
+rTsROs+UK.s+p]3s,-i9s-<VUs/5n#s0_m>s24l[oDIMEnbiFamJ?;MrV-?cs7Q?_s7?9]s*F]j
+s*4Qfs*"Ebs)e9^s)J'Xs)7pTrrE(9s(VLGs(24;s$+srm=+LfJcC<$[K$1*JcC<$JcG]KrrAho
+J,~>
+JcFm4rr at WMJcG?A_1)92rI3"@s+U1Nq#K^aqZd!Ar?;1bruqCds!.Ohs!Iaps"XI5s$QfYs&8r&
+s(23ds#0m:rAjg;q`FgBs$6TMs$H`Qs$H`Ns$$HFs#U0?s#0g7s#0m7rA=O0s"FC&s!Rgkruh7\
+rtk\Lrt58 at r=/c8rsnc3q[<9)o*"XeqZ?ctpB(@Zdm!/Jmll=&JcE.Xr;_EKJcC<$rVultU]5i~>
+JcFm4rr at WMJcG?AJc>BMq#p!iq[3-Ss"jP>pR2&Bs,d8Ds-3PKs-E[@s#0m;s#Tg7s$-NKs$?ZO
+s$QfQs$6TJs#g<Cs#L*;q`"I3s#'g4s"XO)s![mns!%Caru1nRrtPJFr=Ju>rsnc3q[<9.pBg):
+rrDeGs82ckrV?Ees7cQes7QEarU^'[s7--Ys6p!Us6]jQs6K^Ls60LFs31Mcs2Y/Xs2"`Ms1SHE
+s0r$3s3gqns3:Sds2k;[s2+fGs0%"RJcE.Xr;_EKJcC<$rVultU]5i~>
+JcFm4rr at WMJcG?A_1)92rI3"@s+UJ]s)n@&s/>t6s2G#`s475,s69RNs6p!Xs7H?as7cQgp%eRP
+rTsROs+UK.s+p]3s,-i9s-<VUs/5n#s0_m>s24l[oDIMEnbiFamJ?;MrV-?cs7Q?_s7?9]s*F]j
+s*4Qfs*"Ebs)e9^s)J'Xs)7pTrrE(9s(VLGs(24;s$+srm=+LfJcC<$[K$1*JcC<$JcG]KrrAho
+J,~>
+JcFm4rr at WMJcG?AomZjhrI4]ps*j]lqgS9hpO;jds*iXNs+('!rIk-'r<<&ujTY;]r<N9,rtPJK
+ru(hUruV1cs"47.s#pBOs!Iaps"47)s"aU4s#C$=q)\O=s$$BGs$6TMs$6TKs$$HFs#U0>rAFU5
+rAFU2s"aU.s"FC%s!@[gruV1Zrtk\Mrt>>Brseu:r=8i:q[E?0rsJW,o*"Xeq#^QrpB&Z)msadj
+JcC<$YQ+P$JcC<$JcG`MU]5i~>
+JcFm4rr at WMJcG?AJc>TSqZQ!eoa:L&s+UK-rJ:K1s,6o9s,R,?s,m=/s!n%$s"OI/s#0m:s#Km9
+s#pBGrBL<Is$?ZMs$-NIs#g<Bs#Bs7q_nI2s"j[1s"OI(s!RgkruqC`ru1nSrtYPHrt,2 at r=8i:
+q[E?0q$Qp(jb*R5pOiMCrVHKgs7lWgs7ZKcrUg-]rUU!Ys7$'Ws6fpSs6TdNs69RHs5s at Bs2k;\
+s24lPs1\NFs1/07s/l=Ls3CYgs2tA^s2=rQs07.TJcDqRr;_EKJcC<$rrAhoJ,~>
+JcFm4rr at WMJcG?AomZjhrI4]ps*j]lqgS9hpO;jds*iXNs+('!rIk-'s(24_s.TJ%s1nZZs475-
+s69ROs7$'Zs7?9`s7cEcp\FLYs,?u;s,R, at s-!DJs.97es/Z1*rVc]mdJ`b9qtp!]mJ["Ys7cQe
+rUp3_s*O]js*=Qfs*+Kds)n?_s)J'Xs)7pTrrE(8s(VLFs'Yk,cT^fHnNMO(JcDqRr;_EKJcC<$
+rrAhoJ,~>
+JcFm4rr at WMJcG?AomZjhrI4]ps*j]lqgS9hpO;jds*iXNs+('!rIk-'r<<&ujTY;]r<N9,rtPJK
+ru(hUruV1cs"47.s#pBOs!Iaps"47)s"aU4s#C$=q)\O=s$$BGs$6TMs$6TKs$$HFs#U0>rAFU5
+rAFU2s"aU.s"FC%s!@[gruV1Zrtk\Mrt>>Brseu:r=8i:q[E?0rsJW,o*"Xeq#^QrpB&Z)msadj
+JcC<$YQ+P$JcC<$JcG`MU]5i~>
+JcFm4rr at WMJcG?AJc>TSqZQ!eoa:L&s+UK-rJ:K1s,6o9s,R,?s,m=/s!n%$s"OI/s#0m:s#Km9
+s#pBGrBL<Is$?ZMs$-NIs#g<Bs#Bs7q_nI2s"j[1s"OI(s!RgkruqC`ru1nSrtYPHrt,2 at r=8i:
+q[E?0q$Qp(jb*R5pOiMCrVHKgs7lWgs7ZKcrUg-]rUU!Ys7$'Ws6fpSs6TdNs69RHs5s at Bs2k;\
+s24lPs1\NFs1/07s/l=Ls3CYgs2tA^s2=rQs07.TJcDqRr;_EKJcC<$rrAhoJ,~>
+JcFm4rr at WMJcG?AomZjhrI4]ps*j]lqgS9hpO;jds*iXNs+('!rIk-'s(24_s.TJ%s1nZZs475-
+s69ROs7$'Zs7?9`s7cEcp\FLYs,?u;s,R, at s-!DJs.97es/Z1*rVc]mdJ`b9qtp!]mJ["Ys7cQe
+rUp3_s*O]js*=Qfs*+Kds)n?_s)J'Xs)7pTrrE(8s(VLFs'Yk,cT^fHnNMO(JcDqRr;_EKJcC<$
+rrAhoJ,~>
+JcFm4rr at WMJcG9?rI34FpO;jds*ipVqge]ts+:3%rIk+Rr;bd[o`k@"rs8W2rsSiArtk\Qru:tZ
+ruqCkru:tZruqCfs!Iaqs"47)s"sa6rAXa9s#L*?rB($As#pBGrBL<Gs#pBDs#L*;s#'g4s"sa5
+s"j[0s"OI*s"47#s!@[fruD%TrtPJHrt#,=rsSc8rseu:pC%!.qZZ]smfW:crrDcpbs(ZHnNMO(
+JcDeNr;_EKJcCH(rrAhoJ,~>
+JcFm4rr at WMJcG9?L]77%r<2'coa:R(rs\o;s+^K-rJ:K2s,6mrruV1`s!7Uls""+%s"XO1s#0g7
+s#C$=s#U*?s#g<Es$$BGs$$HGs#^6 at s#0m7rA=O3s"sa2s"XO-s"==%s!Rgjru_7Zrtk\Nrt>>C
+q[WW8rs\W0q$R!*iIh.1pOiMCrVHKgs7lWgs7ZE`rU^'[rUKpWs6p!Us6]jPs6BXJs6'FEs5a4>
+s2=rRs1eTHs1/09s02O+s3^kls31Mbs2P)Us1SH8JcC<$X8i+uJcC<$L&_/QU]5i~>
+JcFm4rr at WMJcG9?rI34FpO;jds*ipVqge]ts+:3%rIk+Rs'bqfs0hsCs3(Gms5*e>s6K^Qs7--\
+s7QEdmJ6MQs,?u;s,R, at s-!DIs-ri_s8:(=p\ajap\O:UrV6?cs7ZKcs*XinrHeEfs*4Kds*"Eb
+s)S-Zs)7pTs)%c9s(hXJs'l"4s%CU#nUC!lJcC<$X8i+uJcC<$L&_/QU]5i~>
+JcFm4rr at WMJcG9?rI34FpO;jds*ipVqge]ts+:3%rIk+Rr;bd[o`k@"rs8W2rsSiArtk\Qru:tZ
+ruqCkru:tZruqCfs!Iaqs"47)s"sa6rAXa9s#L*?rB($As#pBGrBL<Gs#pBDs#L*;s#'g4s"sa5
+s"j[0s"OI*s"47#s!@[fruD%TrtPJHrt#,=rsSc8rseu:pC%!.qZZ]smfW:crrDcpbs(ZHnNMO(
+JcDeNr;_EKJcCH(rrAhoJ,~>
+JcFm4rr at WMJcG9?L]77%r<2'coa:R(rs\o;s+^K-rJ:K2s,6mrruV1`s!7Uls""+%s"XO1s#0g7
+s#C$=s#U*?s#g<Es$$BGs$$HGs#^6 at s#0m7rA=O3s"sa2s"XO-s"==%s!Rgjru_7Zrtk\Nrt>>C
+q[WW8rs\W0q$R!*iIh.1pOiMCrVHKgs7lWgs7ZE`rU^'[rUKpWs6p!Us6]jPs6BXJs6'FEs5a4>
+s2=rRs1eTHs1/09s02O+s3^kls31Mbs2P)Us1SH8JcC<$X8i+uJcC<$L&_/QU]5i~>
+JcFm4rr at WMJcG9?rI34FpO;jds*ipVqge]ts+:3%rIk+Rs'bqfs0hsCs3(Gms5*e>s6K^Qs7--\
+s7QEdmJ6MQs,?u;s,R, at s-!DIs-ri_s8:(=p\ajap\O:UrV6?cs7ZKcs*XinrHeEfs*4Kds*"Eb
+s)S-Zs)7pTs)%c9s(hXJs'l"4s%CU#nUC!lJcC<$X8i+uJcC<$L&_/QU]5i~>
+JcFm4rr at WMJcG9?s*i at Fq0r!ds*j!XqgeWrs+:1Pr<<4Sr<2'_pBLL"rs8Q2rs\o:rtbVPru:tN
+rtPJKru(hUru_7as!7Uls""+%s"aU2q)A=5s#L*?rB($As#pBGs#pBEs#^6>s#'g5s"aU/rA+C,
+s"=7$s!dsnruh=YrtGDFrt58 at rsSi:q[EK4q$Qp$q#p'eo`G-nq#\`'msajlJcC<$VuQVoJcC<$
+MuWeWU]5i~>
+JcFm4rr at WMJcG9?O8es)s8Lg\pBp^(r=/]8s+^K-rt>>GrtbVPru:t[ruqCfs!Rgss"==,s"sO1
+s#C$=s#U*?s#g<Es$$HGs#g<Cs#9s8s"sO,s"OI*r at S%"s!Iairu1nPrtPJHrt52>q[EK4nI#4$
+h1P_-q1J_Eqtg9es7lWfrUg'[rUU!Ys7$!Us6fpRs6K^Ms69RIs5s at Bs5O'rs1nZJs186>s0D[/
+s0)I)s3L_hs2Y/Xs1eTFs/LYMJcDYJqZ)3IJcCZ.rrAhoJ,~>
+JcFm4rr at WMJcG9?s*i at Fq0r!ds*j!XqgeWrs+:1Pr<<4SrFc/%s0r$Ms3q#(s5j:Fs6K^Qs7--]
+s7bjTrVHKirVZ\Ts,[2Bp&4pes8:";p\ajaqtfd[qtU'_rI"QjrHeEfs*4QfrHA3_s)S-Ys)7pS
+s(q]8s(MFBs'>Y*b<GBDo0.a*JcDYJqZ)3IJcCZ.rrAhoJ,~>
+JcFm4rr at WMJcG9?s*i at Fq0r!ds*j!XqgeWrs+:1Pr<<4Sr<2'_pBLL"rs8Q2rs\o:rtbVPru:tN
+rtPJKru(hUru_7as!7Uls""+%s"aU2q)A=5s#L*?rB($As#pBGs#pBEs#^6>s#'g5s"aU/rA+C,
+s"=7$s!dsnruh=YrtGDFrt58 at rsSi:q[EK4q$Qp$q#p'eo`G-nq#\`'msajlJcC<$VuQVoJcC<$
+MuWeWU]5i~>
+JcFm4rr at WMJcG9?O8es)s8Lg\pBp^(r=/]8s+^K-rt>>GrtbVPru:t[ruqCfs!Rgss"==,s"sO1
+s#C$=s#U*?s#g<Es$$HGs#g<Cs#9s8s"sO,s"OI*r at S%"s!Iairu1nPrtPJHrt52>q[EK4nI#4$
+h1P_-q1J_Eqtg9es7lWfrUg'[rUU!Ys7$!Us6fpRs6K^Ms69RIs5s at Bs5O'rs1nZJs186>s0D[/
+s0)I)s3L_hs2Y/Xs1eTFs/LYMJcDYJqZ)3IJcCZ.rrAhoJ,~>
+JcFm4rr at WMJcG9?s*i at Fq0r!ds*j!XqgeWrs+:1Pr<<4SrFc/%s0r$Ms3q#(s5j:Fs6K^Qs7--]
+s7bjTrVHKirVZ\Ts,[2Bp&4pes8:";p\ajaqtfd[qtU'_rI"QjrHeEfs*4QfrHA3_s)S-Ys)7pS
+s(q]8s(MFBs'>Y*b<GBDo0.a*JcDYJqZ)3IJcCZ.rrAhoJ,~>
+JcFm4rr at WMJcG9?bCBP at eURCFrrW-$s+:3%rIk%NjTYGaqZm-,rsJ]4r=&Q5rt,2CrtGDIrtk\Q
+ru:tYruh=es!Rgss"==,s#'a6s#0a5s#C$=s#Ts;s#C$9s"sa3s"OI*q_.t$s""*us![mmrtbVH
+rt,2 at rseu9q[E?/q[*!#r<2Ego)eplqZ?cuaZf6Do0.a*JcDGDr;_EKJcCf2rrAhoJ,~>
+JcFm4rr at WMJcG9?Q2^Z1p\s%Vq$Qj(rs\c6r=8i<rt,2CrtGDIrtk\Qru:tYruh=es!Rgss"==,
+s#'a6s#0a5s#C$=s#Ts;s#C$9s"sa3s"OI*s"F=)s"==&s""*us!Ia_r=f2Drt,2?q[E?/q[*!(
+fn9;)q1J_Gs8;ils7u]is7ZE`rU^!Ys7-'Ws6p!UrU'XOs6K^Ms60LFs5j:@s5O'ts1A<@s0Vg3
+s0;U.s0)IJs2b5Zs2"`Js0r$+JcC<$U&Y&kJcC<$O8o4[U]5i~>
+JcFm4rr at WMJcG9?bCBP at eURCFrrW-$s+:3%rIk,`s-!D_s2=rls5X.As69RMs6fpWs7H?cs7l'Y
+s8)Kfn,<:]s8)cms8;Keq>B4Mp\ad_s8)3_rV?Ees7cPArI"KhrHeKhrHS?ds*"Ebs)e9\s)7pT
+s)%dNrrE(0s'>Y+s&$m%nUC'nJcC<$U&Y&kJcC<$O8o4[U]5i~>
+JcFm4rr at WMJcG9?bCBP at eURCFrrW-$s+:3%rIk%NjTYGaqZm-,rsJ]4r=&Q5rt,2CrtGDIrtk\Q
+ru:tYruh=es!Rgss"==,s#'a6s#0a5s#C$=s#Ts;s#C$9s"sa3s"OI*q_.t$s""*us![mmrtbVH
+rt,2 at rseu9q[E?/q[*!#r<2Ego)eplqZ?cuaZf6Do0.a*JcDGDr;_EKJcCf2rrAhoJ,~>
+JcFm4rr at WMJcG9?Q2^Z1p\s%Vq$Qj(rs\c6r=8i<rt,2CrtGDIrtk\Qru:tYruh=es!Rgss"==,
+s#'a6s#0a5s#C$=s#Ts;s#C$9s"sa3s"OI*s"F=)s"==&s""*us!Ia_r=f2Drt,2?q[E?/q[*!(
+fn9;)q1J_Gs8;ils7u]is7ZE`rU^!Ys7-'Ws6p!UrU'XOs6K^Ms60LFs5j:@s5O'ts1A<@s0Vg3
+s0;U.s0)IJs2b5Zs2"`Js0r$+JcC<$U&Y&kJcC<$O8o4[U]5i~>
+JcFm4rr at WMJcG9?bCBP at eURCFrrW-$s+:3%rIk,`s-!D_s2=rls5X.As69RMs6fpWs7H?cs7l'Y
+s8)Kfn,<:]s8)cms8;Keq>B4Mp\ad_s8)3_rV?Ees7cPArI"KhrHeKhrHS?ds*"Ebs)e9\s)7pT
+s)%dNrrE(0s'>Y+s&$m%nUC'nJcC<$U&Y&kJcC<$O8o4[U]5i~>
+JcFm4rr at WMJcG9?o7-^hZ%)e(rrMuurIOitrIb+MqZQ'cq$-j(r<`E0q[<91rso&>rt,2Brt>>F
+rtYPLrttbSruV1`s!.Oks""+%s"a=+s#0g7s#C$=s#U0As#C$9s"sa2s"FC(q^hb!s"+1"s![mm
+rtYPEr=8i9rso&;r<r9)rrrE*q$$d$lN?YYrrDotrrL5*nUC-pJcC<$S,`EeJcC<$PQ1X_U]5i~>
+JcFm4rr at WMJcG9?Sc8G7oD\aii<f;eq$[!,q[WQ8rt,2Brt>>FrtYPLrttbSruV1`s!.Oks""+%
+s"a=+s#0g7s#C$=s#U0As#C$9s"sa2s"FC(r at In!s"+1#s!dsortk\Ir=Ju>rso&;r<r-%r<iLV
+fn9;)q1J_Gs8;oos8)cks7ZKcs7H9]rUTpWs7$'Ws6fjQs6T^Ms6BXKs60LGs5s at Cs31Mbs186C
+s0r$6s0;U,s31M`s2+fMs1/07JcC<$S,`EeJcC<$PQ1X_U]5i~>
+JcFm4rr at WMJcG9?o7-^hZ%)e(rrMuurIOitrIb,Ts(MFOs+gWKs1A<\s4dS4s69RLs6fpWs7?9`
+s7cQgp\FjdoDJ(Us7ZKfs7u]ks8;QgrVZQiqu#XUp&+^aoDS^erVc]jrV6>>qgAEjqg/3drHS?d
+s*"Ebs)\3[s).jRs(VLFrrE(+s',M$s%CHtnUC-pJcC<$S,`EeJcC<$PQ1X_U]5i~>
+JcFm4rr at WMJcG9?o7-^hZ%)e(rrMuurIOitrIb+MqZQ'cq$-j(r<`E0q[<91rso&>rt,2Brt>>F
+rtYPLrttbSruV1`s!.Oks""+%s"a=+s#0g7s#C$=s#U0As#C$9s"sa2s"FC(q^hb!s"+1"s![mm
+rtYPEr=8i9rso&;r<r9)rrrE*q$$d$lN?YYrrDotrrL5*nUC-pJcC<$S,`EeJcC<$PQ1X_U]5i~>
+JcFm4rr at WMJcG9?Sc8G7oD\aii<f;eq$[!,q[WQ8rt,2Brt>>FrtYPLrttbSruV1`s!.Oks""+%
+s"a=+s#0g7s#C$=s#U0As#C$9s"sa2s"FC(r at In!s"+1#s!dsortk\Ir=Ju>rso&;r<r-%r<iLV
+fn9;)q1J_Gs8;oos8)cks7ZKcs7H9]rUTpWs7$'Ws6fjQs6T^Ms6BXKs60LGs5s at Cs31Mbs186C
+s0r$6s0;U,s31M`s2+fMs1/07JcC<$S,`EeJcC<$PQ1X_U]5i~>
+JcFm4rr at WMJcG9?o7-^hZ%)e(rrMuurIOitrIb,Ts(MFOs+gWKs1A<\s4dS4s69RLs6fpWs7?9`
+s7cQgp\FjdoDJ(Us7ZKfs7u]ks8;QgrVZQiqu#XUp&+^aoDS^erVc]jrV6>>qgAEjqg/3drHS?d
+s*"Ebs)\3[s).jRs(VLFrrE(+s',M$s%CHtnUC-pJcC<$S,`EeJcC<$PQ1X_U]5i~>
+JcFm4rr at WMJcG9?qg\3f\UXDUqgeKnrIY!#q#p!eq$-j)q[*-,r<rW6q[NQ8r=Ao>rt58Dr=o8J
+ru(hUruM+_s!7Uos"<t#s"sa5s#0[3s#'g4s"OI*r@@mts!dsgr at .amrtbVGrseo8rsSi9rs\i6
+oa1L!rri9(rrhWimfNLhqZ=f%nUC-pJcC<$QiI!aJcC<$QiI'cU]5i~>
+JcFm4rr at WMJcG9?V>g:?li,oNpBp^(q$d32q[WW:rt,, at rt>8Ertk\Qru:tYruqCfs!n%$oeZV)
+s#'g7q)A=2s"j[/s"=7#s!n$ts-*C2s!Ia^rt5,<r=/c8r<r!!rIidTrrDqKs8Duqs82imqtpEf
+s7H9]s76-Ys7$'WrU0^Qs6T^Ms6BXKs60LGs5s at Cs5a4%s2=rQs1A<>s0Ma0s/Z1 at s2+fMs186=
+s/:MKJcD):r;_EKJcD):rrAhoJ,~>
+JcFm4rr at WMJcG9?qg\3f\UXDUqgeKnrIY!#s(D at Rs,I&Ss186Ws4%)$s5!_8s69ROrUU![s7QEd
+s7lWjrVQ']n,<:Zs7cQgs8)cms8;]krVZ]ms8)ckrVHKis8;oos8;Ecs+^RPp&+jes8)coqu$Ei
+rVHQis82cjrV68<s*X]jqg/3drHS?ds*"Ebs)\3[s)%dNs(;:>rrE""s%UNtnUC-pJcC<$QiI!a
+JcC<$QiI'cU]5i~>
+JcFm4rr at WMJcG9?qg\3f\UXDUqgeKnrIY!#q#p!eq$-j)q[*-,r<rW6q[NQ8r=Ao>rt58Dr=o8J
+ru(hUruM+_s!7Uos"<t#s"sa5s#0[3s#'g4s"OI*r@@mts!dsgr at .amrtbVGrseo8rsSi9rs\i6
+oa1L!rri9(rrhWimfNLhqZ=f%nUC-pJcC<$QiI!aJcC<$QiI'cU]5i~>
+JcFm4rr at WMJcG9?V>g:?li,oNpBp^(q$d32q[WW:rt,, at rt>8Ertk\Qru:tYruqCfs!n%$oeZV)
+s#'g7q)A=2s"j[/s"=7#s!n$ts-*C2s!Ia^rt5,<r=/c8r<r!!rIidTrrDqKs8Duqs82imqtpEf
+s7H9]s76-Ys7$'WrU0^Qs6T^Ms6BXKs60LGs5s at Cs5a4%s2=rQs1A<>s0Ma0s/Z1 at s2+fMs186=
+s/:MKJcD):r;_EKJcD):rrAhoJ,~>
+JcFm4rr at WMJcG9?qg\3f\UXDUqgeKnrIY!#s(D at Rs,I&Ss186Ws4%)$s5!_8s69ROrUU![s7QEd
+s7lWjrVQ']n,<:Zs7cQgs8)cms8;]krVZ]ms8)ckrVHKis8;oos8;Ecs+^RPp&+jes8)coqu$Ei
+rVHQis82cjrV68<s*X]jqg/3drHS?ds*"Ebs)\3[s)%dNs(;:>rrE""s%UNtnUC-pJcC<$QiI!a
+JcC<$QiI'cU]5i~>
+JcFm4rr at WMJcG3=s*sKf_12CarrDd2s+'iprIY'%o`XXcrs/-$q[*9.rsJc6rs\i8r=8i<rt,2B
+rt>>Crt>>GrtbVQruD%]s!@[ps"==*s"X=)o/$D"s"47$ruM+Zru1nTruV1ZrttbMrt58Brt#,>
+rseu:rseu:r<r9)q$$WupB13mr<)EgrrE!!s$+Ido7$EtJcC<$OoP@[JcC<$S,`KgU]5i~>
+JcFm4rr at WMJcG3=XoA9KrttJbn,D8PlO*XursSi8rsei8r=Ao>rt58Drt,2CrtPJKru1nWruh=f
+s!n%$s"OI-q(hOts"FC(s"",5s-!DEs,[1$ru:tTrtYPHrt52 at rt#,>rseu:r<r'#c\)5trIb.K
+s8;oos8;ckrVHQis7cK_s7--YrU9dSs6]dOs6K^Ms69RIs6'FEs5j:As5O(;s2+fMs186<s0;U+
+s/5n8s1eTGs0r$7JcC<$OoP@[JcC<$S,`KgU]5i~>
+JcFm4rr at WMJcG3=s*sKf_12Cas#p<]rE0)#s+'iprIY'%s'u(As-Whjs2Y/js4dS0s5*e8s60LM
+s7?9_s7ZKes7u]ls7cQas7?9[s6fpRs69RHs5j:?s6K^Xs8;Ecs7?9_s7ZKfs7u]ks8;cmrVZ]m
+s8)ckrV6Egs7lWgrV$9fqu->Fs8;imrVH?cs7lQhp\Fd_s7cQcs7ZKfrI4]ns*X]jrHeEfs*4Qh
+s*4Ebs)n?]s).jPs(MFDs'Yj,rDik^`BNmBpHF0.JcCl4r;_EKJcD5>rrAhoJ,~>
+JcFm4rr at WMJcG3=s*sKf_12CarrDd2s+'iprIY'%o`XXcrs/-$q[*9.rsJc6rs\i8r=8i<rt,2B
+rt>>Crt>>GrtbVQruD%]s!@[ps"==*s"X=)o/$D"s"47$ruM+Zru1nTruV1ZrttbMrt58Brt#,>
+rseu:rseu:r<r9)q$$WupB13mr<)EgrrE!!s$+Ido7$EtJcC<$OoP@[JcC<$S,`KgU]5i~>
+JcFm4rr at WMJcG3=XoA9KrttJbn,D8PlO*XursSi8rsei8r=Ao>rt58Drt,2CrtPJKru1nWruh=f
+s!n%$s"OI-q(hOts"FC(s"",5s-!DEs,[1$ru:tTrtYPHrt52 at rt#,>rseu:r<r'#c\)5trIb.K
+s8;oos8;ckrVHQis7cK_s7--YrU9dSs6]dOs6K^Ms69RIs6'FEs5j:As5O(;s2+fMs186<s0;U+
+s/5n8s1eTGs0r$7JcC<$OoP@[JcC<$S,`KgU]5i~>
+JcFm4rr at WMJcG3=s*sKf_12Cas#p<]rE0)#s+'iprIY'%s'u(As-Whjs2Y/js4dS0s5*e8s60LM
+s7?9_s7ZKes7u]ls7cQas7?9[s6fpRs69RHs5j:?s6K^Xs8;Ecs7?9_s7ZKfs7u]ks8;cmrVZ]m
+s8)ckrV6Egs7lWgrV$9fqu->Fs8;imrVH?cs7lQhp\Fd_s7cQcs7ZKfrI4]ns*X]jrHeEfs*4Qh
+s*4Ebs)n?]s).jPs(MFDs'Yj,rDik^`BNmBpHF0.JcCl4r;_EKJcD5>rrAhoJ,~>
+JcFm4rr at WMJcG3=gOT6PqgddXr;ccss+'PUrri:Oq1A8Bo*,!qo`t'oq[*3.rsSi8r=/c:rt#,@
+rtGDJru(hVruqCis!n%$s"F=)nM0t`ruM%Xru:tVrttbXruD%VrtbVKrt58Brso&<rs\o:rs\i6
+pBpWur<3!"f`M0Rr;sl#o7$EtJcC<$NW8qWJcC<$TE"okU]5i~>
+JcFm4rr at WMJcG3=[JouOs8MIArsAAt`sMPKr<rW6r=/c:rt#, at rtGDJru(hVruqCis!n%$s"F=)
+nM1!.s-<VKs-*JGs,m>Cru_7\ru(hQrtYPIrt58Brt#,>rseu:r<r?,q[(GurrE"Ms8DckrVQWk
+rV?Ees7QE^s7$'Ws6fpSrTsRMs6BXKs60LGs5s at Bs5X.<rS[^ks1JBAs0Ma.s/H$rs1nZIs1/0:
+s0.(SJcC`0r;_EKJcDABrrAhoJ,~>
+JcFm4rr at WMJcG3=gOT6PqgddXr;ccss+(,Ms&]5's',M/s'#G(rDrsRrIOcrs()/)s1JBWs53e9
+s5s at Fs69RNs7?9as7lQgs7?9Zs6BXHs5a4?s5O(;s53k5s5!_1s4dG-s5!_3rS at G-s6opUs763^
+s7QEds7lKfs7u]is7cQerUp-]s7?9]s7-,>s+C3%qh+qDrV-9aqt9p^rV63_rV$9as7--Ys7-&8
+qgJEjs*O]jq0Dp`s*+Kds)J'[s)A!Ts(_RIs().:s'5R(s&/kf_`m[@pHF0.JcC`0r;_EKJcDAB
+rrAhoJ,~>
+JcFm4rr at WMJcG3=gOT6PqgddXr;ccss+'PUrri:Oq1A8Bo*,!qo`t'oq[*3.rsSi8r=/c:rt#,@
+rtGDJru(hVruqCis!n%$s"F=)nM0t`ruM%Xru:tVrttbXruD%VrtbVKrt58Brso&<rs\o:rs\i6
+pBpWur<3!"f`M0Rr;sl#o7$EtJcC<$NW8qWJcC<$TE"okU]5i~>
+JcFm4rr at WMJcG3=[JouOs8MIArsAAt`sMPKr<rW6r=/c:rt#, at rtGDJru(hVruqCis!n%$s"F=)
+nM1!.s-<VKs-*JGs,m>Cru_7\ru(hQrtYPIrt58Brt#,>rseu:r<r?,q[(GurrE"Ms8DckrVQWk
+rV?Ees7QE^s7$'Ws6fpSrTsRMs6BXKs60LGs5s at Bs5X.<rS[^ks1JBAs0Ma.s/H$rs1nZIs1/0:
+s0.(SJcC`0r;_EKJcDABrrAhoJ,~>
+JcFm4rr at WMJcG3=gOT6PqgddXr;ccss+(,Ms&]5's',M/s'#G(rDrsRrIOcrs()/)s1JBWs53e9
+s5s at Fs69RNs7?9as7lQgs7?9Zs6BXHs5a4?s5O(;s53k5s5!_1s4dG-s5!_3rS at G-s6opUs763^
+s7QEds7lKfs7u]is7cQerUp-]s7?9]s7-,>s+C3%qh+qDrV-9aqt9p^rV63_rV$9as7--Ys7-&8
+qgJEjs*O]jq0Dp`s*+Kds)J'[s)A!Ts(_RIs().:s'5R(s&/kf_`m[@pHF0.JcC`0r;_EKJcDAB
+rrAhoJ,~>
+JcFm4rr at WMJcG3=rIF3bkCE)Pq#LGEq1.iMrri.Lo`Y!mo*4poo*G4"r<iK2rs\o:rso&>rt58E
+rtYPNruM+`s!Rgtq^qUrr>b\TruCtVr>P\Rs!%IcruM+XrttbOrtPJGrt,,=rseu:q[<3,q$$Wu
+qZGLQrrN-"rrKr"omZX!JcC<$L]@5OJcC<$V>pPqU]5i~>
+JcFm4rr at WMJcG3=^&IhWp\sP7rsAN#`<l>Iq[<E4rseu<rt#,ArtGDIrttbVs!%Ijs"+%!q(DQ1
+qj%2Gs-*DEs,m=*ruh=_ru:tUrtk\MrtGDErt#,>rseu:q[<3,q[(AsrrE(OrVcQis82cks7uWg
+rV-?cs7H?[rU'XOs6KXJs60LGs5j:As5Nq6s4mXfs1A<Bs02O(s/5n8s1JBCs0_m2JcC<$L]@5O
+JcC<$V>pPqU]5i~>
+JcFm4rr at WMJcG3=rIF3bkCE)Pq#LGEq1/EKs'>Y3s'bq5s'#G(rDrsRq1AW]s/l=<s4%)1s6K^O
+s6fpVs7--\s7H?es8)cgs7--Ws6BXIs5a48rSRY3s5!_1rS%;(s3gr"s4[A'rRh/%s4IA:q<S(J
+s6p!Ws76-[s7-!Us763ZpO*!is+'orrUp3_s7?3[s7--[s7--\rV$!YrUg-]rU0^Qs*=WjrHnQm
+rI"Wls*FWhrHS9bs*"E\s(hXOrGV^Ps(VLFs().:s'#G)rrE'k_*7O at pHF0.JcCN*qZ)3IJcDSH
+rrAhoJ,~>
+JcFm4rr at WMJcG3=rIF3bkCE)Pq#LGEq1.iMrri.Lo`Y!mo*4poo*G4"r<iK2rs\o:rso&>rt58E
+rtYPNruM+`s!Rgtq^qUrr>b\TruCtVr>P\Rs!%IcruM+XrttbOrtPJGrt,,=rseu:q[<3,q$$Wu
+qZGLQrrN-"rrKr"omZX!JcC<$L]@5OJcC<$V>pPqU]5i~>
+JcFm4rr at WMJcG3=^&IhWp\sP7rsAN#`<l>Iq[<E4rseu<rt#,ArtGDIrttbVs!%Ijs"+%!q(DQ1
+qj%2Gs-*DEs,m=*ruh=_ru:tUrtk\MrtGDErt#,>rseu:q[<3,q[(AsrrE(OrVcQis82cks7uWg
+rV-?cs7H?[rU'XOs6KXJs60LGs5j:As5Nq6s4mXfs1A<Bs02O(s/5n8s1JBCs0_m2JcC<$L]@5O
+JcC<$V>pPqU]5i~>
+JcFm4rr at WMJcG3=rIF3bkCE)Pq#LGEq1/EKs'>Y3s'bq5s'#G(rDrsRq1AW]s/l=<s4%)1s6K^O
+s6fpVs7--\s7H?es8)cgs7--Ws6BXIs5a48rSRY3s5!_1rS%;(s3gr"s4[A'rRh/%s4IA:q<S(J
+s6p!Ws76-[s7-!Us763ZpO*!is+'orrUp3_s7?3[s7--[s7--\rV$!YrUg-]rU0^Qs*=WjrHnQm
+rI"Wls*FWhrHS9bs*"E\s(hXOrGV^Ps(VLFs().:s'#G)rrE'k_*7O at pHF0.JcCN*qZ)3IJcDSH
+rrAhoJ,~>
+JcFm4rr at WMJcG3=o7?RdrIO3`q1&DFr;ceGrIFp!s+:3#k8F;Os+C1Oo*,.&rt>>Jo`k-qnHf!u
+r<iQ4rs\i8rt#,ArtGDIru(hXs!.Ois!Rans!dsbr>GJNq]#JPru(hRs!%Idru_7]ruD%WrttbO
+rtPJGr=Ju=r=&Q2q[33(qZQcugB.0OrrBetomZX!JcC<$JcGZKJcC<$WW2tuU]5i~>
+JcFm4rr at WMJcG3=_uBO_nc%]+rVl0jrt#,Eru9]!q$R'.rs\i8rt#,ArtGDIru(hXs!.Ois!Ran
+s!dQ(qiguAs,m=*ruqCaruV1[ru1nTrtk\MrtGDErt,2?r=&Q2q$R-.`In0jqu-EirVQWkrV?Kg
+rV-9as7QEas7?9ZrTaFIs60LGs5j:As5O(:rSRY1s4RFes1\NHs1JB1s/uC9s1/0<s0D[+JcC<$
+JcGZKJcC<$WW2tuU]5i~>
+JcFm4rr at WMJcG3=o7?RdrIO3`q1&DFr;ceGrIFp!s+:3#s*F]^s'bq:s().>s'Yk4s'#A%rE'#N
+s+C>ds1SHWs4RG=s7?9_s7cQgrV?Egs7ZKas7$'Ts69RGs5X.9s3gr#rS.;(s4@;%s3Uels3q"u
+s4%)!rRCeps4mY9s5s(=s60LJrTjLKs6K]1rHe3`s*F]ms*jorqsj^UrU9dSrU'ROs7,pVqss^U
+rTsQ/rHJ9ds*=Wjs*O]ls*FKbs)n?[s(hRFs(MFJs(q^Ns(D at Bs'u(:s'#G&s%`Ro^HV=>pHF0.
+JcC<$r;_EKJcD_LrrAhoJ,~>
+JcFm4rr at WMJcG3=o7?RdrIO3`q1&DFr;ceGrIFp!s+:3#k8F;Os+C1Oo*,.&rt>>Jo`k-qnHf!u
+r<iQ4rs\i8rt#,ArtGDIru(hXs!.Ois!Rans!dsbr>GJNq]#JPru(hRs!%Idru_7]ruD%WrttbO
+rtPJGr=Ju=r=&Q2q[33(qZQcugB.0OrrBetomZX!JcC<$JcGZKJcC<$WW2tuU]5i~>
+JcFm4rr at WMJcG3=_uBO_nc%]+rVl0jrt#,Eru9]!q$R'.rs\i8rt#,ArtGDIru(hXs!.Ois!Ran
+s!dQ(qiguAs,m=*ruqCaruV1[ru1nTrtk\MrtGDErt,2?r=&Q2q$R-.`In0jqu-EirVQWkrV?Kg
+rV-9as7QEas7?9ZrTaFIs60LGs5j:As5O(:rSRY1s4RFes1\NHs1JB1s/uC9s1/0<s0D[+JcC<$
+JcGZKJcC<$WW2tuU]5i~>
+JcFm4rr at WMJcG3=o7?RdrIO3`q1&DFr;ceGrIFp!s+:3#s*F]^s'bq:s().>s'Yk4s'#A%rE'#N
+s+C>ds1SHWs4RG=s7?9_s7cQgrV?Egs7ZKas7$'Ts69RGs5X.9s3gr#rS.;(s4@;%s3Uels3q"u
+s4%)!rRCeps4mY9s5s(=s60LJrTjLKs6K]1rHe3`s*F]ms*jorqsj^UrU9dSrU'ROs7,pVqss^U
+rTsQ/rHJ9ds*=Wjs*O]ls*FKbs)n?[s(hRFs(MFJs(q^Ns(D at Bs'u(:s'#G&s%`Ro^HV=>pHF0.
+JcC<$r;_EKJcD_LrrAhoJ,~>
+JcFm4rr at WMJcG-;s+0?bqgnEjqgn\Ir<*(Oq1JEns+0>Nrri?1rso&>rt,2BrtGDMru_7ds""+(
+s#0m>nHS^mo*G4"r<iQ4r=&]8rt#,ArtGDIrtk\Qru:tYrt52CrtPDHrtbVNo,.KOruqCaruV1[
+ru1nTrttbOrtPDErt,2 at rseu:q$[-.r<<-&q#f:OpAt9o^HV=>q*'B0JcC<$qu?TpJcC<$XoJD$
+U]5i~>
+JcFm4rr at WMJcG-;c2RNgli-'%rsA];r=f2FrtbVNruM+as![n#s"sa:s$50Bq$R-0r=&]8rt#,A
+rtGDIrtk\Qru:tYs,R,?qiLc=qi^c;s,d7)ruqCaruV1[ru:tUrttbPrtYPIrt>>Crt#,=rs\]2
+q[1/lrrE#rqu$Eis8)]irV6EerV$9as7H?_s763[s7$'Ts69RHs5j:As5X.<s53k5s5!_/s4I at f
+s1nZLs0hs4s/Z11s0hs6s/pqQJcC<$qu?TpJcC<$XoJD$U]5i~>
+JcFm4rr at WMJcG-;s+0?bqgnEjqgn\Ir<*(Oq1JEns+13-s*jugs(D at Gs(;:@s'Yk<s*+KfrH\G)
+s6KXYs7u]es7ZKfp\FjcrU9dSs6K^Js5a4=s5!^qs31Mls4IA's475#s4%(rs2G#\s3:AdrQkMj
+s5*e6qr7A1s)\3^s)n?bs*+Kfqfi'`rHJ9es*F]ls6]jSqsFFMs6K^MrTX at Js6TdQs6oRKs6p!R
+s*+EbrH8'^s*4EdrHS?ds)e9\s(q^Js(24?s().As(VLHs(D@@s'bq7s'5S)s&/kcrrBetomZ^#
+JcC<$JcGWIr;_EKJcDkPrrAhoJ,~>
+JcFm4rr at WMJcG-;s+0?bqgnEjqgn\Ir<*(Oq1JEns+0>Nrri?1rso&>rt,2BrtGDMru_7ds""+(
+s#0m>nHS^mo*G4"r<iQ4r=&]8rt#,ArtGDIrtk\Qru:tYrt52CrtPDHrtbVNo,.KOruqCaruV1[
+ru1nTrttbOrtPDErt,2 at rseu:q$[-.r<<-&q#f:OpAt9o^HV=>q*'B0JcC<$qu?TpJcC<$XoJD$
+U]5i~>
+JcFm4rr at WMJcG-;c2RNgli-'%rsA];r=f2FrtbVNruM+as![n#s"sa:s$50Bq$R-0r=&]8rt#,A
+rtGDIrtk\Qru:tYs,R,?qiLc=qi^c;s,d7)ruqCaruV1[ru:tUrttbPrtYPIrt>>Crt#,=rs\]2
+q[1/lrrE#rqu$Eis8)]irV6EerV$9as7H?_s763[s7$'Ts69RHs5j:As5X.<s53k5s5!_/s4I at f
+s1nZLs0hs4s/Z11s0hs6s/pqQJcC<$qu?TpJcC<$XoJD$U]5i~>
+JcFm4rr at WMJcG-;s+0?bqgnEjqgn\Ir<*(Oq1JEns+13-s*jugs(D at Gs(;:@s'Yk<s*+KfrH\G)
+s6KXYs7u]es7ZKfp\FjcrU9dSs6K^Js5a4=s5!^qs31Mls4IA's475#s4%(rs2G#\s3:AdrQkMj
+s5*e6qr7A1s)\3^s)n?bs*+Kfqfi'`rHJ9es*F]ls6]jSqsFFMs6K^MrTX at Js6TdQs6oRKs6p!R
+s*+EbrH8'^s*4EdrHS?ds)e9\s(q^Js(24?s().As(VLHs(D@@s'bq7s'5S)s&/kcrrBetomZ^#
+JcC<$JcGWIr;_EKJcDkPrrAhoJ,~>
+JcFm4rr at WMJcG-;pO_jdrIXots+:9's+L1OrIk3)qh4ctq1 at WErri?:s#g<Gs$?ZOs$ZlZs%r_q
+s',M3rrqiqq$6Ksq[*3.r<rW6rseu=rt,2BrtGDHrsSc7rso&>rt,2Brt>>FrtPJJpD3cOr?)%\
+ruD%Xru(hRrtk\MrtPJGrt58Brso&<r=&W4r<iQ/rrrE*pB0"Ko`>'m^HV=>q*'B0JcC<$p](0l
+JcC<$Z2ah(U]5i~>
+JcFm4rr at WMJcG-;ec,Aojo49prsA]Ds$6TPs$crWs%*/bs&B#$s'Pe;eHu$Yr<rW6rseu=rt,2B
+rtGDHs,$c5rJU]7rJgc9rK$o=qiCb"r?)%\ruD%Xru(hRrtk\NrtPJHrt58Brso&<r=&W4q$Olh
+rrE)tq>C9irVHQirV6?crUp3_s7?9]s7--Ys6p!Us6TdMs5s at Bs5X.=s53k4s4mY-s474ds1eTD
+s0Vg/s/>t+s0Ma.s/CSLJcC<$p](0lJcC<$Z2ah(U]5i~>
+JcFm4rr at WMJcG-;pO_jdrIXots+:9's+L1OrIk3)qh4ctq1AXFs-s%Ls+:8os)e9qs-Whds1A<F
+s4[M.s53k9qtU-cs7ZKfp\F^Ns60LEs5O(9s4dRrs1eTRs3:Mks3gqps3Uebs1nZQs2Y)^q9/f_
+s4IA+s5!S/s53cos)7pWs)\3^s)n?brH7pXs)n?cs5j:Ds69RKrTX at GrTF.As5j4Cs6BXNs6]dQ
+qsFFJs60K*s)e'Xs)e-\s)\3\rGhjVs).jQs(D at BrF,_8s(). at s().=s'Pe4s'5S-s%r_cs#'fV
+^HV=>q*'B0JcC<$p](0lJcC<$Z2ah(U]5i~>
+JcFm4rr at WMJcG-;pO_jdrIXots+:9's+L1OrIk3)qh4ctq1 at WErri?:s#g<Gs$?ZOs$ZlZs%r_q
+s',M3rrqiqq$6Ksq[*3.r<rW6rseu=rt,2BrtGDHrsSc7rso&>rt,2Brt>>FrtPJJpD3cOr?)%\
+ruD%Xru(hRrtk\MrtPJGrt58Brso&<r=&W4r<iQ/rrrE*pB0"Ko`>'m^HV=>q*'B0JcC<$p](0l
+JcC<$Z2ah(U]5i~>
+JcFm4rr at WMJcG-;ec,Aojo49prsA]Ds$6TPs$crWs%*/bs&B#$s'Pe;eHu$Yr<rW6rseu=rt,2B
+rtGDHs,$c5rJU]7rJgc9rK$o=qiCb"r?)%\ruD%Xru(hRrtk\NrtPJHrt58Brso&<r=&W4q$Olh
+rrE)tq>C9irVHQirV6?crUp3_s7?9]s7--Ys6p!Us6TdMs5s at Bs5X.=s53k4s4mY-s474ds1eTD
+s0Vg/s/>t+s0Ma.s/CSLJcC<$p](0lJcC<$Z2ah(U]5i~>
+JcFm4rr at WMJcG-;pO_jdrIXots+:9's+L1OrIk3)qh4ctq1AXFs-s%Ls+:8os)e9qs-Whds1A<F
+s4[M.s53k9qtU-cs7ZKfp\F^Ns60LEs5O(9s4dRrs1eTRs3:Mks3gqps3Uebs1nZQs2Y)^q9/f_
+s4IA+s5!S/s53cos)7pWs)\3^s)n?brH7pXs)n?cs5j:Ds69RKrTX at GrTF.As5j4Cs6BXNs6]dQ
+qsFFJs60K*s)e'Xs)e-\s)\3\rGhjVs).jQs(D at BrF,_8s(). at s().=s'Pe4s'5S-s%r_cs#'fV
+^HV=>q*'B0JcC<$p](0lJcC<$Z2ah(U]5i~>
+JcFm4rr at WMJcG-;s+9cnq1S^!s+LE,s+gUZr<WE0s+g?'rIt'#rIaotmhtd:r<<3=s$6Trs)J'[
+s)e9fs+(-(qZZKopBU?sq[*3.r<rQ4rseu<r<WE0rsJc6r=&]8rso&>r=Jo>rt>>Fr>khVr>YbT
+ru(hRrtk\NrtPJHrt>>Crt#&;r=&Q2rsJc1rri9&gB.6Qr;uQks$$G_^HVC at q*'B0JcC<$nc/Of
+JcC<$[K$7,U]5i~>
+JcFm4rr at WMJcG-;h>[5"h>ZjtoeQIPruV2.s(hXWs*+Kfs*t'%s,,21q[390r=&]8rso'`rJ1E/
+rJCK1rJUK1rJgarr>bbTru1nTrttbPrtbVKrtGDFrt,2 at r=/]6q[<?0]n?@`rrDrprVZ]ms8)ck
+rV6EerV$9as7H?_s763[s7$'Ws6fpSs6K^Ls6'FDs5X.;s5*e2s4RG's3gq^s1/0<s02O(s0r$7
+s0)I#JcC<$JcG9?r;_EKJcE.XrrAhoJ,~>
+JcFm4rr at WMJcG-;s+9cnq1S^!s+LE,s+gUZr<WE0s+g?'rIt'#rIaots0hs,s.'+Ns+C?<s0)IB
+s4./$s4RG-s5!_4s5NqNqt^9eq>'dEs5<q5s4RFrs0Ma:s1nZTs3:Sjs3L_is2FrJs1eTNs2OlT
+s2k;gs3q#!rRq3eqec at Ls(_ROs)J'ZrH%pXqf2Ygs4dS2s5<q;s5a4BrT4(?rT!q;rSde;s5s at F
+s69RLs6TXKs6'E(rH%jVrGhjUs).jQs(_4?s(D at Cs'l":rF#Y7s'bq8s'G_1s',M)s%NGas#pBG
+rrBetpO;p%JcC<$JcG9?r;_EKJcE.XrrAhoJ,~>
+JcFm4rr at WMJcG-;s+9cnq1S^!s+LE,s+gUZr<WE0s+g?'rIt'#rIaotmhtd:r<<3=s$6Trs)J'[
+s)e9fs+(-(qZZKopBU?sq[*3.r<rQ4rseu<r<WE0rsJc6r=&]8rso&>r=Jo>rt>>Fr>khVr>YbT
+ru(hRrtk\NrtPJHrt>>Crt#&;r=&Q2rsJc1rri9&gB.6Qr;uQks$$G_^HVC at q*'B0JcC<$nc/Of
+JcC<$[K$7,U]5i~>
+JcFm4rr at WMJcG-;h>[5"h>ZjtoeQIPruV2.s(hXWs*+Kfs*t'%s,,21q[390r=&]8rso'`rJ1E/
+rJCK1rJUK1rJgarr>bbTru1nTrttbPrtbVKrtGDFrt,2 at r=/]6q[<?0]n?@`rrDrprVZ]ms8)ck
+rV6EerV$9as7H?_s763[s7$'Ws6fpSs6K^Ls6'FDs5X.;s5*e2s4RG's3gq^s1/0<s02O(s0r$7
+s0)I#JcC<$JcG9?r;_EKJcE.XrrAhoJ,~>
+JcFm4rr at WMJcG-;s+9cnq1S^!s+LE,s+gUZr<WE0s+g?'rIt'#rIaots0hs,s.'+Ns+C?<s0)IB
+s4./$s4RG-s5!_4s5NqNqt^9eq>'dEs5<q5s4RFrs0Ma:s1nZTs3:Sjs3L_is2FrJs1eTNs2OlT
+s2k;gs3q#!rRq3eqec at Ls(_ROs)J'ZrH%pXqf2Ygs4dS2s5<q;s5a4BrT4(?rT!q;rSde;s5s at F
+s69RLs6TXKs6'E(rH%jVrGhjUs).jQs(_4?s(D at Cs'l":rF#Y7s'bq8s'G_1s',M)s%NGas#pBG
+rrBetpO;p%JcC<$JcG9?r;_EKJcE.XrrAhoJ,~>
+JcFm4rr at WMJcG'9q1J9ls+gW1s,-abrse^[s,$c3rJ1?+rIt'#rIaotnJV9EpDj,8ruM,,s(_Rq
+s.fUjs/Z/Qq$$9mqZl]uq$I!,q[<E-rs&E,r<W?.rsJc6rs\o:r=8i<rt,,Gr>GJLr>5JLrtYPJ
+rtGDFrt,2 at rsno8rs\c4r<CdRklL`HrrBl!omZ^#JcC<$JcG-;r;_EKJcE:\rrAhoJ,~>
+JcFm4rr at WMJcG'9jo5.,e,Jkls"jC+s"jT[ruqD5s).k$s/5mrs0)GYcO'IUq[<FWrIt3)qhP3-
+rJCE/rJUUkr>GJLr>5JLrtYPJrtGDFrt,2 at rsno8rs\c4r<g5jrVc`rq>L?ks82ims7lQes7ZKc
+s7H?_rUTpWs7$'Ws6]jQs6K^Ls6'FCs5O(9s4mY.s4@;#s1eTFs1&*7s/uC(s0_m1s/H$oJcC<$
+JcG-;r;_EKJcE:\rrAhoJ,~>
+JcFm4rr at WMJcG'9q1J9ls+gW1s,-abrse^[s,$c3rJ1?+rIt'#rIaots0r$.s.01bs186XrRV#&
+s5!_4s5F"<s5j:Cn+m"Ds4mG)s4[M)s3CYPs/l=-s186Gs2Y)^s2P)Ms0;U3s1/0Bs1nZPs2+fR
+s2=rWs31Mhs3^dZqeH.Es(;:Bs(q^RrGhdTrGV_ds4%)!s4IA+s4mY2s5<q:s5Eq7rSRY3s5!_5
+s5F"<s5a4Bs60LIs60FBqf2RRs)7dPs(q^Ms(MFFok"/5s'bq7s'G_2rEfM0s'5S-s&T.rs%!)V
+s$6NHrrBl!omZ^#JcC<$JcG-;r;_EKJcE:\rrAhoJ,~>
+JcFm4rr at WMJcG'9q1J9ls+gW1s,-abrse^[s,$c3rJ1?+rIt'#rIaotnJV9EpDj,8ruM,,s(_Rq
+s.fUjs/Z/Qq$$9mqZl]uq$I!,q[<E-rs&E,r<W?.rsJc6rs\o:r=8i<rt,,Gr>GJLr>5JLrtYPJ
+rtGDFrt,2 at rsno8rs\c4r<CdRklL`HrrBl!omZ^#JcC<$JcG-;r;_EKJcE:\rrAhoJ,~>
+JcFm4rr at WMJcG'9jo5.,e,Jkls"jC+s"jT[ruqD5s).k$s/5mrs0)GYcO'IUq[<FWrIt3)qhP3-
+rJCE/rJUUkr>GJLr>5JLrtYPJrtGDFrt,2 at rsno8rs\c4r<g5jrVc`rq>L?ks82ims7lQes7ZKc
+s7H?_rUTpWs7$'Ws6]jQs6K^Ls6'FCs5O(9s4mY.s4@;#s1eTFs1&*7s/uC(s0_m1s/H$oJcC<$
+JcG-;r;_EKJcE:\rrAhoJ,~>
+JcFm4rr at WMJcG'9q1J9ls+gW1s,-abrse^[s,$c3rJ1?+rIt'#rIaots0r$.s.01bs186XrRV#&
+s5!_4s5F"<s5j:Cn+m"Ds4mG)s4[M)s3CYPs/l=-s186Gs2Y)^s2P)Ms0;U3s1/0Bs1nZPs2+fR
+s2=rWs31Mhs3^dZqeH.Es(;:Bs(q^RrGhdTrGV_ds4%)!s4IA+s4mY2s5<q:s5Eq7rSRY3s5!_5
+s5F"<s5a4Bs60LIs60FBqf2RRs)7dPs(q^Ms(MFFok"/5s'bq7s'G_2rEfM0s'5S-s&T.rs%!)V
+s$6NHrrBl!omZ^#JcC<$JcG-;r;_EKJcE:\rrAhoJ,~>
+JcFm4rr at WMJcG'9on<3rs+pObrtPKss-!DDs,[,<s,?o7s,-i5rJ1?+rIt'#rIb!!o,7QHru:nW
+ruV%XqZ[!Bs$m$*s-3Pqs'k^+o*5!qo*G-upBpj&r<E3*rs8Q0r<iQ4rtP, at rtbPJr=o2Drt>>D
+rt,2 at rsno8r=&W4rsJc1rr_'Yi;rg>rrBl!omZd%JcC<$JcFp5qZ)3IJcELbrrAhoJ,~>
+JcFm4rr at WMJcG'9mJcp2c2R;hs"aU2q_e7-q[*9Js%EB3s-Wi$s(9L^oa:SLrIt3)q1o!+rtP,@
+rtbPJr=o2Drt>>Drt,2 at rsno8r=&W4r<g/hqu-Npqu-Qms82ims7lQes7ZKcs7H?_rUU!YrUBjU
+s6fpSs6TdNs60LFs5O(9s4dS+s475"s3^kYs186;rNlI*s/Z0oJcC<$JcFp5qZ)3IJcELbrrAho
+J,~>
+JcFm4rr at WMJcG'9on<3rs+pObrtPKss-!DDs,[,<s,?o7s,-i5rJ1?+rIt'#rIb!!s2=rHs0)IB
+s4RG(s475&s4mY5s5X. at qr[GEs5j4/pXT;js0r$$s/5n"s0Vg<s2+fWs2Y/Os0)I's0)I/s0r$?
+rP&<Hs2"`Qs2Y/^s31FSs(MFFs(24?s'bq:s(V at Js4@;%s3q"rs3Uels3gqss475%s4[M-s5*e3
+s4mS-s4[M+s4IA-s53k7s5F";s5a4As5Eurqel at LrG;FJs(_RIs(;:BpLF54s'bq7s'>Y0rEK;,
+s'#G*s&]4ss%<;Ys$-NOq`b#[_*7O at q`]T2JcC<$kPtDZJcC<$^]4<6U]5i~>
+JcFm4rr at WMJcG'9on<3rs+pObrtPKss-!DDs,[,<s,?o7s,-i5rJ1?+rIt'#rIb!!o,7QHru:nW
+ruV%XqZ[!Bs$m$*s-3Pqs'k^+o*5!qo*G-upBpj&r<E3*rs8Q0r<iQ4rtP, at rtbPJr=o2Drt>>D
+rt,2 at rsno8r=&W4rsJc1rr_'Yi;rg>rrBl!omZd%JcC<$JcFp5qZ)3IJcELbrrAhoJ,~>
+JcFm4rr at WMJcG'9mJcp2c2R;hs"aU2q_e7-q[*9Js%EB3s-Wi$s(9L^oa:SLrIt3)q1o!+rtP,@
+rtbPJr=o2Drt>>Drt,2 at rsno8r=&W4r<g/hqu-Npqu-Qms82ims7lQes7ZKcs7H?_rUU!YrUBjU
+s6fpSs6TdNs60LFs5O(9s4dS+s475"s3^kYs186;rNlI*s/Z0oJcC<$JcFp5qZ)3IJcELbrrAho
+J,~>
+JcFm4rr at WMJcG'9on<3rs+pObrtPKss-!DDs,[,<s,?o7s,-i5rJ1?+rIt'#rIb!!s2=rHs0)IB
+s4RG(s475&s4mY5s5X. at qr[GEs5j4/pXT;js0r$$s/5n"s0Vg<s2+fWs2Y/Os0)I's0)I/s0r$?
+rP&<Hs2"`Qs2Y/^s31FSs(MFFs(24?s'bq:s(V at Js4@;%s3q"rs3Uels3gqss475%s4[M-s5*e3
+s4mS-s4[M+s4IA-s53k7s5F";s5a4As5Eurqel at LrG;FJs(_RIs(;:BpLF54s'bq7s'>Y0rEK;,
+s'#G*s&]4ss%<;Ys$-NOq`b#[_*7O at q`]T2JcC<$kPtDZJcC<$^]4<6U]5i~>
+JcFm4rr at WMJcG'9qh4j#rs/Q3rtk\SrL*\Ss-`nRs-<VKs-!DDs,[2?s,Hu9s,6o6s+pW/rJ(9)
+qh4p#qh"JYru:tXruV+\ruV%Xr<<3/s"aUXs((^)o*5'snHepspBpd$qZd'*r=8i<r=Ju at mh5R2
+r=Jo<rsno8r=&W4rsJ]/i<%a7q*+fY_*7UBq*'B0JcC<$iW&iVJcC<$_uK`:U]5i~>
+JcFm4rr at WMJcG'9p&=c:_uB<`s"j[3s#0m9s#0m7q_\6Xrt#,gs'G_=aU.VIpOrL!r=8i<r=Ju@
+mh5R2r=Jo<rsno8r=&W4r<iQ2]7]qXrrE)tqu$KkrV-9as7QEas7?3[s7--YrU9^Qs6TdOs69RG
+s5O(:s5!_,s4%(ts3^kms1A<?s1&*<rNH7$s/#abJcC<$JcF^/r;_EKJcEXfrrAhoJ,~>
+JcFm4rr at WMJcG'9qh4j#rs/Q3rtk\SrL*\Ss-`nRs-<VKs-!DDs,[2?s,Hu9s,6o6s+pW/rJ(9)
+qh4p#qh"jes3^l#s4RA's4dS2s5Wq;rTEqNs7?9Cs.'&+s24lRrPANLs/Z0bs-NbWs/#ars0Ma:
+s1nZFs/uBss/,grs/uC,s0_m<s1A<Ds1\NKs24lUs2Y.Ms(24?s'bq7s'>Y0s1eTXs4@;%s4%(s
+s3Uels3:Mcs3CYjs3^kqs4./$s4RA&s475#rRCkqs4@;'s4RG,s4mY-s4dKgqeQ.Fs(V at Ds(;:B
+s'u"9q-a50s'GY.rEB5(s&]5#s&8qns%*/Ts#pBBq*+fY_*7UBq*'B0JcC<$iW&iVJcC<$_uK`:
+U]5i~>
+JcFm4rr at WMJcG'9qh4j#rs/Q3rtk\SrL*\Ss-`nRs-<VKs-!DDs,[2?s,Hu9s,6o6s+pW/rJ(9)
+qh4p#qh"JYru:tXruV+\ruV%Xr<<3/s"aUXs((^)o*5'snHepspBpd$qZd'*r=8i<r=Ju at mh5R2
+r=Jo<rsno8r=&W4rsJ]/i<%a7q*+fY_*7UBq*'B0JcC<$iW&iVJcC<$_uK`:U]5i~>
+JcFm4rr at WMJcG'9p&=c:_uB<`s"j[3s#0m9s#0m7q_\6Xrt#,gs'G_=aU.VIpOrL!r=8i<r=Ju@
+mh5R2r=Jo<rsno8r=&W4r<iQ2]7]qXrrE)tqu$KkrV-9as7QEas7?3[s7--YrU9^Qs6TdOs69RG
+s5O(:s5!_,s4%(ts3^kms1A<?s1&*<rNH7$s/#abJcC<$JcF^/r;_EKJcEXfrrAhoJ,~>
+JcFm4rr at WMJcG'9qh4j#rs/Q3rtk\SrL*\Ss-`nRs-<VKs-!DDs,[2?s,Hu9s,6o6s+pW/rJ(9)
+qh4p#qh"jes3^l#s4RA's4dS2s5Wq;rTEqNs7?9Cs.'&+s24lRrPANLs/Z0bs-NbWs/#ars0Ma:
+s1nZFs/uBss/,grs/uC,s0_m<s1A<Ds1\NKs24lUs2Y.Ms(24?s'bq7s'>Y0s1eTXs4@;%s4%(s
+s3Uels3:Mcs3CYjs3^kqs4./$s4RA&s475#rRCkqs4@;'s4RG,s4mY-s4dKgqeQ.Fs(V at Ds(;:B
+s'u"9q-a50s'GY.rEB5(s&]5#s&8qns%*/Ts#pBBq*+fY_*7UBq*'B0JcC<$iW&iVJcC<$_uK`:
+U]5i~>
+JcFm4rr at WMJcG!7rIt1Trso'qrM'=cs.KCas.01[s-itUs-NbNs-3PHs,d8ArJpo;s,?u8s+pW/
+rJ(9)qh4p#rIXb]ru1nWruLtXq]5\VqZ[!Br;cEmo`k3snHejqnI#4&r=&W6r=8c:q[iE2r=8W4
+q[EE2r<iK-k5s07pHJTW_`maBq`]T2JcC<$g].3PJcC<$a8c/>U]5i~>
+JcFm4rr at WMJcG!7rVl\D]DhOZs"aU2s#'g7rAFI/s"jNYs!7OC`<l&Ar<rQ4r=/]8r=Ac:oah!2
+q$m30r<rK0rs?;iqu-KkrrDros82ijrV$3_s7H?_s76-Ys7$'WrU0XOs6TdMs6'FCs5O(9s4mY'
+qp>AUs1A<Bs0r$5s/H%#s/,gfJcC<$JcFL)r;_EKJcEdjrrAhoJ,~>
+JcFm4rr at WMJcG!7rIt1Trso'qrM'=cs.KCas.01[s-itUs-NbNs-3PHs,d8ArJpo;s,?u8s+pW/
+rJ(9)qh4p#rIY()s4dS-s4RG)s4[M0s5O(:s5*e2s5*e5s5<q9rV6Ees7?8^s(VLJrG2G+s.]Ic
+s.KCOs+^Q2s,?u?s-WhYs/#ass0)Hus-`nUs.'+^s.fUms/c7)s0_m8s1&*?s1JBHs2"`Qs2+fM
+s186=s0D[0s0r$Is3:Ses2k;]s2G#Us2+fRs2G#Ys2k;as31Mgs3Ueos3^els3L_is31Mgs3Uen
+s3q"ts3gqrq.]kBqe,q at rFQ">s'l":s'P_2qd'/*s',G*s&oA(s&T.ts%iYhs%!)Qs#pB?pHJTW
+_`maBq`]T2JcC<$g].3PJcC<$a8c/>U]5i~>
+JcFm4rr at WMJcG!7rIt1Trso'qrM'=cs.KCas.01[s-itUs-NbNs-3PHs,d8ArJpo;s,?u8s+pW/
+rJ(9)qh4p#rIXb]ru1nWruLtXq]5\VqZ[!Br;cEmo`k3snHejqnI#4&r=&W6r=8c:q[iE2r=8W4
+q[EE2r<iK-k5s07pHJTW_`maBq`]T2JcC<$g].3PJcC<$a8c/>U]5i~>
+JcFm4rr at WMJcG!7rVl\D]DhOZs"aU2s#'g7rAFI/s"jNYs!7OC`<l&Ar<rQ4r=/]8r=Ac:oah!2
+q$m30r<rK0rs?;iqu-KkrrDros82ijrV$3_s7H?_s76-Ys7$'WrU0XOs6TdMs6'FCs5O(9s4mY'
+qp>AUs1A<Bs0r$5s/H%#s/,gfJcC<$JcFL)r;_EKJcEdjrrAhoJ,~>
+JcFm4rr at WMJcG!7rIt1Trso'qrM'=cs.KCas.01[s-itUs-NbNs-3PHs,d8ArJpo;s,?u8s+pW/
+rJ(9)qh4p#rIY()s4dS-s4RG)s4[M0s5O(:s5*e2s5*e5s5<q9rV6Ees7?8^s(VLJrG2G+s.]Ic
+s.KCOs+^Q2s,?u?s-WhYs/#ass0)Hus-`nUs.'+^s.fUms/c7)s0_m8s1&*?s1JBHs2"`Qs2+fM
+s186=s0D[0s0r$Is3:Ses2k;]s2G#Us2+fRs2G#Ys2k;as31Mgs3Ueos3^els3L_is31Mgs3Uen
+s3q"ts3gqrq.]kBqe,q at rFQ">s'l":s'P_2qd'/*s',G*s&oA(s&T.ts%iYhs%!)Qs#pB?pHJTW
+_`maBq`]T2JcC<$g].3PJcC<$a8c/>U]5i~>
+JcFm4rr at WMJcG-;r;cj&rs\pns.o[rs/H$rs/#aks.fUgs.TIbs.97\s-itTs-NbNs-*JGs,m8@
+s,R,<s,6o6s+p]1rJ(9)rIk'#s+:1eq\oJSruM+\q&TJTru:tXru:tArrE(\s,m>ErrDcso*5's
+lNm.io*Y@&q$d32q[WE2pC-d(r<iE+k5s07ofiBU_`mgDq`]T2JcC<$ec5RJJcC<$bQ%SBU]5i~>
+JcFm4rr at WMJcG-;r;ceG[JonTs"j[3s#'U/s"jU/s"XN[rrDrqrrBkAo*Y@&q$d32q[WE2pC-d(
+r<iE.]7]eSrrDrns7cKcs7Q?_s7?9]s7-'Ws6p!UrU'XOs6K^Ks5s at Bs5O(:s5!_/s474us3Uel
+s1SHFs1&*7s/Z1$s/Q*nJcC<$JcF:#r;_EKJcEpnrrAhoJ,~>
+JcFm4rr at WMJcG-;r;cj&rs\pns.o[rs/H$rs/#aks.fUgs.TIbs.97\s-itTs-NbNs-*JGs,m8@
+s,R,<s,6o6s+p]1rJ(9)rIk'#s+:4)s4dS-s4RG.s5F"6s4RG(s4..ts3q"ts4./#s69R-s,d8C
+s-!Crq.oq[s*"Efs*Xirs+:9)s,-i=s-`nZs-`nIrK at 2Es-NbSs.97bs/5mts02O/s0Ma5s0r$>
+s1SHDs0hs5s/uC's/l=)s1JBJs1eTIs1A<Bs1/0 at s1JBHs1nZOs24lVs2Y/]s31Mds2k5\s2Y/Y
+s2b5^s3(G`rQ>.Ps(D:Bs(2(<s'u":s'bq8s'Pe3rET5(s'#G*s&f5$s&T(us&&ejs%<;\rB($:
+ofiBU_`mgDq`]T2JcC<$ec5RJJcC<$bQ%SBU]5i~>
+JcFm4rr at WMJcG-;r;cj&rs\pns.o[rs/H$rs/#aks.fUgs.TIbs.97\s-itTs-NbNs-*JGs,m8@
+s,R,<s,6o6s+p]1rJ(9)rIk'#s+:1eq\oJSruM+\q&TJTru:tXru:tArrE(\s,m>ErrDcso*5's
+lNm.io*Y@&q$d32q[WE2pC-d(r<iE+k5s07ofiBU_`mgDq`]T2JcC<$ec5RJJcC<$bQ%SBU]5i~>
+JcFm4rr at WMJcG-;r;ceG[JonTs"j[3s#'U/s"jU/s"XN[rrDrqrrBkAo*Y@&q$d32q[WE2pC-d(
+r<iE.]7]eSrrDrns7cKcs7Q?_s7?9]s7-'Ws6p!UrU'XOs6K^Ks5s at Bs5O(:s5!_/s474us3Uel
+s1SHFs1&*7s/Z1$s/Q*nJcC<$JcF:#r;_EKJcEpnrrAhoJ,~>
+JcFm4rr at WMJcG-;r;cj&rs\pns.o[rs/H$rs/#aks.fUgs.TIbs.97\s-itTs-NbNs-*JGs,m8@
+s,R,<s,6o6s+p]1rJ(9)rIk'#s+:4)s4dS-s4RG.s5F"6s4RG(s4..ts3q"ts4./#s69R-s,d8C
+s-!Crq.oq[s*"Efs*Xirs+:9)s,-i=s-`nZs-`nIrK at 2Es-NbSs.97bs/5mts02O/s0Ma5s0r$>
+s1SHDs0hs5s/uC's/l=)s1JBJs1eTIs1A<Bs1/0 at s1JBHs1nZOs24lVs2Y/]s31Mds2k5\s2Y/Y
+s2b5^s3(G`rQ>.Ps(D:Bs(2(<s'u":s'bq8s'Pe3rET5(s'#G*s&f5$s&T(us&&ejs%<;\rB($:
+ofiBU_`mgDq`]T2JcC<$ec5RJJcC<$bQ%SBU]5i~>
+JcFm4rr at WMJcGECq#L<ls1/0<s0Ma1s/uC&s/H$rs/,gms.o[is.TIbs.01[s-itTs-NbNs-3PH
+s,m>Cs,R,=s,6o7s+pW/o7m:&s,$Ukru:bSr>bPNrrrF`s,d8Cs-!DHpBC-mq$69mnHn^mo*bF(
+mgJpuq$-!`f)bD*rrBr#q0r-'JcC<$JcF-tr;_EKJcF'rrrAhoJ,~>
+JcFm4rr at WMJcGECq#L<lZ2XVTs"aC,rA4C-q_A*Wp\qi4nI"jqq[Dp$q$Qp(_h7i<rVZ?crrDrn
+rVHQerUg-]s763[s7$'WrU0^Qs6TdOs6BXKs5j:@s5F"7s4mY-s4..ts3CSfs1SHBs0Ma-s0D[*
+s.o[^JcC<$JcF-tr;_EKJcF'rrrAhoJ,~>
+JcFm4rr at WMJcGECq#L<ls1/0<s0Ma1s/uC&s/H$rs/,gms.o[is.TIbs.01[s-itTs-NbNs-3PH
+s,m>Cs,R,=s,6o7s+pW/o7m:&s,$d3s4dS-s4mY4s4dS(s3gqos3CYfrQ5)6s+13as,[2As,m>E
+s-3+js).jWs)e9cs*Ocps+LE1s,R,3rJCQ3s,6o:s,d8Fs-WhWs.]Ojs/Z1%s0)I-s0Ma5s0;U+
+s/H$ss/Gsss0Ma5s0Ma2s0;U.s0;U1s0hs;s186Bs1SHIs1nNMs24lRs2"`Ns1eTLs1eTLrPJSC
+s'u(>rF>k:s'be4s'Pe4rE]A+s'#A(rE0)$s&T/"s&Aqqs&&els%NG`s$ZfFnNQsQ_`mmFq*'B0
+JcC<$dJs.FJcC<$ci="FU]5i~>
+JcFm4rr at WMJcGECq#L<ls1/0<s0Ma1s/uC&s/H$rs/,gms.o[is.TIbs.01[s-itTs-NbNs-3PH
+s,m>Cs,R,=s,6o7s+pW/o7m:&s,$Ukru:bSr>bPNrrrF`s,d8Cs-!DHpBC-mq$69mnHn^mo*bF(
+mgJpuq$-!`f)bD*rrBr#q0r-'JcC<$JcF-tr;_EKJcF'rrrAhoJ,~>
+JcFm4rr at WMJcGECq#L<lZ2XVTs"aC,rA4C-q_A*Wp\qi4nI"jqq[Dp$q$Qp(_h7i<rVZ?crrDrn
+rVHQerUg-]s763[s7$'WrU0^Qs6TdOs6BXKs5j:@s5F"7s4mY-s4..ts3CSfs1SHBs0Ma-s0D[*
+s.o[^JcC<$JcF-tr;_EKJcF'rrrAhoJ,~>
+JcFm4rr at WMJcGECq#L<ls1/0<s0Ma1s/uC&s/H$rs/,gms.o[is.TIbs.01[s-itTs-NbNs-3PH
+s,m>Cs,R,=s,6o7s+pW/o7m:&s,$d3s4dS-s4mY4s4dS(s3gqos3CYfrQ5)6s+13as,[2As,m>E
+s-3+js).jWs)e9cs*Ocps+LE1s,R,3rJCQ3s,6o:s,d8Fs-WhWs.]Ojs/Z1%s0)I-s0Ma5s0;U+
+s/H$ss/Gsss0Ma5s0Ma2s0;U.s0;U1s0hs;s186Bs1SHIs1nNMs24lRs2"`Ns1eTLs1eTLrPJSC
+s'u(>rF>k:s'be4s'Pe4rE]A+s'#A(rE0)$s&T/"s&Aqqs&&els%NG`s$ZfFnNQsQ_`mmFq*'B0
+JcC<$dJs.FJcC<$ci="FU]5i~>
+JcFm4rr at WMJcGWIqZ-6fs1JBCs1&*:s0D[/s/l=%s/Q*ts/5mos/#ajs.TIbs.01Zs-itTs-NbN
+s-3PHs,m>Cs,R,=s,?u9q2531rJ^]5s,-[lq&K>Pq\o>NrrrF`s,d8Cs-!DHs-E\OqZZQqq$63k
+lNtlErsAQ,jT=$7mlpaO`BO$Fq`]T2JcC<$bQ%G>JcC<$ec5XLU]5i~>
+JcFm4rr at WMJcGWIqZ-6fZ2XVTq(qt)oeHIQoDZ9,cO0IS`Imu<s+1"Cp\OmirVH?cs7lWgs763[
+s7$'Ws6fpSs6TdOs6BXKs60LCs5F"9s5!_0s4@;#s3^kls3(Gbs1SHCs0Va/s/Q*ss."Z?JcC<$
+bQ%G>JcC<$ec5XLU]5i~>
+JcFm4rr at WMJcGWIqZ-6fs1JBCs1&*:s0D[/s/l=%s/Q*ts/5mos/#ajs.TIbs.01Zs-itTs-NbN
+s-3PHs,m>Cs,R,=s,?u9q2531rJ^]5s,-j4rS.A0s4IA!s3CYfs2k;]s24lOs.fUIs(_S\s,[2A
+s,m>Es-3PLs-N=ms(q^Ps)J'[s*+Kls*=WprIP!#s+C?)s+^Q3s,[2Es-WhWs.]Ojs/>sts/c7&
+s/H$ps.oUis/,gos/Z*ts/>sqs/>sus/l=*s0D[2s0Vg7s1&*?s1SHHs1SHFs1A<BrODm9s0r$=
+s'5S0s'GY4rF#Y4s'GY0s'5M,s'#A(s&f5$rDrqus&B"ss&/kos%r_ks%`Ses%*/Ps#'g0mlpaO
+`BO$Fq`]T2JcC<$bQ%G>JcC<$ec5XLU]5i~>
+JcFm4rr at WMJcGWIqZ-6fs1JBCs1&*:s0D[/s/l=%s/Q*ts/5mos/#ajs.TIbs.01Zs-itTs-NbN
+s-3PHs,m>Cs,R,=s,?u9q2531rJ^]5s,-[lq&K>Pq\o>NrrrF`s,d8Cs-!DHs-E\OqZZQqq$63k
+lNtlErsAQ,jT=$7mlpaO`BO$Fq`]T2JcC<$bQ%G>JcC<$ec5XLU]5i~>
+JcFm4rr at WMJcGWIqZ-6fZ2XVTq(qt)oeHIQoDZ9,cO0IS`Imu<s+1"Cp\OmirVH?cs7lWgs763[
+s7$'Ws6fpSs6TdOs6BXKs60LCs5F"9s5!_0s4@;#s3^kls3(Gbs1SHCs0Va/s/Q*ss."Z?JcC<$
+bQ%G>JcC<$ec5XLU]5i~>
+JcFm4rr at WMJcGWIqZ-6fs1JBCs1&*:s0D[/s/l=%s/Q*ts/5mos/#ajs.TIbs.01Zs-itTs-NbN
+s-3PHs,m>Cs,R,=s,?u9q2531rJ^]5s,-j4rS.A0s4IA!s3CYfs2k;]s24lOs.fUIs(_S\s,[2A
+s,m>Es-3PLs-N=ms(q^Ps)J'[s*+Kls*=WprIP!#s+C?)s+^Q3s,[2Es-WhWs.]Ojs/>sts/c7&
+s/H$ps.oUis/,gos/Z*ts/>sqs/>sus/l=*s0D[2s0Vg7s1&*?s1SHHs1SHFs1A<BrODm9s0r$=
+s'5S0s'GY4rF#Y4s'GY0s'5M,s'#A(s&f5$rDrqus&B"ss&/kos%r_ks%`Ses%*/Ps#'g0mlpaO
+`BO$Fq`]T2JcC<$bQ%G>JcC<$ec5XLU]5i~>
+JcFm4rr at WMKE(`ImJm'rs1/0=s0Vg2s0)I*s/c7#s/H$ss/,gls.fUfs.B=^s-s%Ws-`nSs-NbN
+s-*JGs,m>Cs,[2?s,I&=s,[,=rJgi9rJU[ok8XG]s,[2As,m>Es-3PLs-WhSs-s%[o*4jmm0Me[
+h$X)eq$,j\gB$V(rrC#%q0r3)JcC<$JcEXfr;_EKJcFF'rrAhoJ,~>
+JcFm4rr at WMKE(`ImJjBhs"X7'nM0A/[gCjtoa/Tis+:-!rVQ-]s7uZpqt^3crV-?cs7QE`s6fpS
+s6TdOs6BXKs60LGs5O(9s5*e2s4RG's4%(rs3CYes2b5\s1/0;rNlO)s/#aeJcC<$JcEXfr;_EK
+JcFF'rrAhoJ,~>
+JcFm4rr at WMKE(`ImJm'rs1/0=s0Vg2s0)I*s/c7#s/H$ss/,gls.fUfs.B=^s-s%Ws-`nSs-NbN
+s-*JGs,m>Cs,[2?s,I&=s,[,=rJgi9rJU^1s5!_+s3CYds2Y/Xs1nZIs1&**s+gVns'G_cs,[2A
+s,m>Es-3PLs-WhSs-s%[pM9S at s)7p[s*4Kfs*F]ls*Xips+13*s,6o=s-<VPs.97bs.fUks.oUd
+rLs7cs.fUapRhJ[s/#ans/Q%!s/uC+s0;U2rODm9s0_m6s0Ma/s/l=)s0;N)s&oA+rEfM0rETA,
+s'#A(s&f;&qc<_srD`eqrDNSks%iYis%WMes%<;Ps#'g1lTY=K`BO*Hq`]T2JcC<$_uKZ8JcC<$
+g&M'PU]5i~>
+JcFm4rr at WMKE(`ImJm'rs1/0=s0Vg2s0)I*s/c7#s/H$ss/,gls.fUfs.B=^s-s%Ws-`nSs-NbN
+s-*JGs,m>Cs,[2?s,I&=s,[,=rJgi9rJU[ok8XG]s,[2As,m>Es-3PLs-WhSs-s%[o*4jmm0Me[
+h$X)eq$,j\gB$V(rrC#%q0r3)JcC<$JcEXfr;_EKJcFF'rrAhoJ,~>
+JcFm4rr at WMKE(`ImJjBhs"X7'nM0A/[gCjtoa/Tis+:-!rVQ-]s7uZpqt^3crV-?cs7QE`s6fpS
+s6TdOs6BXKs60LGs5O(9s5*e2s4RG's4%(rs3CYes2b5\s1/0;rNlO)s/#aeJcC<$JcEXfr;_EK
+JcFF'rrAhoJ,~>
+JcFm4rr at WMKE(`ImJm'rs1/0=s0Vg2s0)I*s/c7#s/H$ss/,gls.fUfs.B=^s-s%Ws-`nSs-NbN
+s-*JGs,m>Cs,[2?s,I&=s,[,=rJgi9rJU^1s5!_+s3CYds2Y/Xs1nZIs1&**s+gVns'G_cs,[2A
+s,m>Es-3PLs-WhSs-s%[pM9S at s)7p[s*4Kfs*F]ls*Xips+13*s,6o=s-<VPs.97bs.fUks.oUd
+rLs7cs.fUapRhJ[s/#ans/Q%!s/uC+s0;U2rODm9s0_m6s0Ma/s/l=)s0;N)s&oA+rEfM0rETA,
+s'#A(s&f;&qc<_srD`eqrDNSks%iYis%WMes%<;Ps#'g1lTY=K`BO*Hq`]T2JcC<$_uKZ8JcC<$
+g&M'PU]5i~>
+JcFm4rr at WMMuWSQj8]"hs1A<@s0hs6s0D[/s/uC(s/Z1"s/>sps/5mqs/5mis.B=_s.'+Ys-`nR
+s-E\Ls-*JGrK7&?rK$o;s,Hu9s,6%Zs,R,?s,d8Cs-!DHs-E\Ps-itXs.97`s.TIfo`k-qm0MMS
+r<iK0q$Qj&pBKXZgB$P&rrC)'pO<!'JcC<$JcELbr;_EKJcFR+rrAhoJ,~>
+JcFm4rr at WMMuWSQj8Z=^k:u)tZO-R;r<`9,m0VO"qh"?js+:3#s+'qAnbN1bqtU'_s7ZKcs7?9]
+s7$'Vs6TdMs60LGs5j:As5!_1s4[M*s475!s3Uejs31Mcs2Y/Ys1&*>s0Ma.s.o[ds,hm4JcC<$
+^]464JcC<$h>dKTU]5i~>
+JcFm4rr at WMMuWSQj8]"hs1A<@s0hs6s0D[/s/uC(s/Z1"s/>sps/5mqs/5mis.B=_s.'+Ys-`nR
+s-E\Ls-*JGrK7&?rK$o;s,Hu9s,6p,s31M]s2"`Ks1/0;s0;U's,-i"s'u(3s,R,?s,d8Cs-!DH
+s-E\Ps-itXs.97`s.TIfqeQ"Ds)7pVrGhjXrH&!\s*+Kks+:9*s,6o=s-3POs.01^qjd\Is+p]4
+rJU]<s-NbOs-NbRs.'+]s.TCes/,ans/Z1&s0;O,s/uC%s/>mos/>lqs&K)"s&oA+s&oA(s&]5$
+rD`_qs&B"ss&/eos&/emrD<Ggs%`Sfs%EAas$6T=s"OI&ks#+Ia$06Hq`]T2JcC<$^]464JcC<$
+h>dKTU]5i~>
+JcFm4rr at WMMuWSQj8]"hs1A<@s0hs6s0D[/s/uC(s/Z1"s/>sps/5mqs/5mis.B=_s.'+Ys-`nR
+s-E\Ls-*JGrK7&?rK$o;s,Hu9s,6%Zs,R,?s,d8Cs-!DHs-E\Ps-itXs.97`s.TIfo`k-qm0MMS
+r<iK0q$Qj&pBKXZgB$P&rrC)'pO<!'JcC<$JcELbr;_EKJcFR+rrAhoJ,~>
+JcFm4rr at WMMuWSQj8Z=^k:u)tZO-R;r<`9,m0VO"qh"?js+:3#s+'qAnbN1bqtU'_s7ZKcs7?9]
+s7$'Vs6TdMs60LGs5j:As5!_1s4[M*s475!s3Uejs31Mcs2Y/Ys1&*>s0Ma.s.o[ds,hm4JcC<$
+^]464JcC<$h>dKTU]5i~>
+JcFm4rr at WMMuWSQj8]"hs1A<@s0hs6s0D[/s/uC(s/Z1"s/>sps/5mqs/5mis.B=_s.'+Ys-`nR
+s-E\Ls-*JGrK7&?rK$o;s,Hu9s,6p,s31M]s2"`Ks1/0;s0;U's,-i"s'u(3s,R,?s,d8Cs-!DH
+s-E\Ps-itXs.97`s.TIfqeQ"Ds)7pVrGhjXrH&!\s*+Kks+:9*s,6o=s-3POs.01^qjd\Is+p]4
+rJU]<s-NbOs-NbRs.'+]s.TCes/,ans/Z1&s0;O,s/uC%s/>mos/>lqs&K)"s&oA+s&oA(s&]5$
+rD`_qs&B"ss&/eos&/emrD<Ggs%`Sfs%EAas$6T=s"OI&ks#+Ia$06Hq`]T2JcC<$^]464JcC<$
+h>dKTU]5i~>
+JcFm4rr at WMOoP:Yg].#\s186>s0_m6s0D[0s0)I.s0;U1s0Vg6s0)I$s.fUgs.TIbs.01Zs-`nS
+s-NbOs-3PIs-!DErK-u=rJpo;rJ^%]rJpo=rK.&BrKR>Fs-`nUs.'+[s.B=as.]OhpBL?sm0Lf?
+pBKRXh#ZV$rrC/)pO<!'JcC<$JcE:\r;_EKJcF^/rrAhoJ,~>
+JcFm4rr at WMOoP:Yg]+DTlS7;rQO2W'q1AEns+9iprIP"Fp\F at SrrE#mrV-?bs7H?_s763Zs6p!U
+s6]jPs69RHs5s at Bs4mY.s4RG(s4..us3Uels3:SfrQ"rSs186;s/uBss-s%OJcC<$JcE:\r;_EK
+JcF^/rrAhoJ,~>
+JcFm4rr at WMOoP:Yg].#\s186>s0_m6s0D[0s0)I.s0;U1s0Vg6s0)I$s.fUgs.TIbs.01Zs-`nS
+s-NbOs-3PIs-!DErK-u=rJpo;rJ^d4s3Ue`s0hs1s/Q*rs,m>0s(VL:rJpo=rK.&BrKR>Fs-`nU
+s.'+[s.B=as.]OhqePqBpMKqJs)A!Vs)A!is+^Q3s,[2Es-Nb-s)n?bs*+Kfs*=Wjs*Ocus,I&=
+s,d8Fs-E\Ps-s%Zs.91^s.]Ohs/>sus/H$ps.fUgs.TIbs%`SirD<Mhs$crQs$?ZUs%r_ks%`Sg
+s%`Sis&&emohYT_rD!5as%<;_s"XO-s"==&jZ`\EaZfHJq`]T2JcC<$\c;U.JcC<$iW&oXU]5i~>
+JcFm4rr at WMOoP:Yg].#\s186>s0_m6s0D[0s0)I.s0;U1s0Vg6s0)I$s.fUgs.TIbs.01Zs-`nS
+s-NbOs-3PIs-!DErK-u=rJpo;rJ^%]rJpo=rK.&BrKR>Fs-`nUs.'+[s.B=as.]OhpBL?sm0Lf?
+pBKRXh#ZV$rrC/)pO<!'JcC<$JcE:\r;_EKJcF^/rrAhoJ,~>
+JcFm4rr at WMOoP:Yg]+DTlS7;rQO2W'q1AEns+9iprIP"Fp\F at SrrE#mrV-?bs7H?_s763Zs6p!U
+s6]jPs69RHs5s at Bs4mY.s4RG(s4..us3Uels3:SfrQ"rSs186;s/uBss-s%OJcC<$JcE:\r;_EK
+JcF^/rrAhoJ,~>
+JcFm4rr at WMOoP:Yg].#\s186>s0_m6s0D[0s0)I.s0;U1s0Vg6s0)I$s.fUgs.TIbs.01Zs-`nS
+s-NbOs-3PIs-!DErK-u=rJpo;rJ^d4s3Ue`s0hs1s/Q*rs,m>0s(VL:rJpo=rK.&BrKR>Fs-`nU
+s.'+[s.B=as.]OhqePqBpMKqJs)A!Vs)A!is+^Q3s,[2Es-Nb-s)n?bs*+Kfs*=Wjs*Ocus,I&=
+s,d8Fs-E\Ps-s%Zs.91^s.]Ohs/>sus/H$ps.fUgs.TIbs%`SirD<Mhs$crQs$?ZUs%r_ks%`Sg
+s%`Sis&&emohYT_rD!5as%<;_s"XO-s"==&jZ`\EaZfHJq`]T2JcC<$\c;U.JcC<$iW&oXU]5i~>
+JcFm4rr at WMRK*'_e,T*Rs1/0>s0hs?s2+fPs1eTLs2"`Ls0r$3s/>sqs/#ajs.TIbs.97[s-itU
+s-WhPs-<VJs-!DErK-u=s,Qu9mi2:ds,R,?rK.&As-!DHs-E\Os-WbRs-s%Ys.97_s.TIfs/#Go
+q$6-idg>[Oir\$;iBI8Ab<GZLq`]T2JcC<$ZiBt(JcC<$jo>>\U]5i~>
+JcFm4rr at WMRK*'_e,QQLmkNMpSI+V7pO`-jqge]rs+(-#s+:'!s+14Is8)]ip\=@SrrE#ks7QEa
+s7?9]s7--Ys6fpRs6K^Ms69RIs5s at Bs5<q0s4@;%s4%(ss3L_is31Mcs2b5[s2"`Ns0_m1s-s%Y
+s,qs5JcC<$ZiBt(JcC<$jo>>\U]5i~>
+JcFm4rr at WMRK*'_e,T*Rs1/0>s0hs?s2+fPs1eTLs2"`Ls0r$3s/>sqs/#ajs.TIbs.97[s-itU
+s-WhPs-<VJs-!DErK-u=s,Qu9s5j:4s2tAUs02Njs+LDks'>Yas,R,?rK.&As-!DHs-E\Os-WbR
+s-s%Ys.97_s.TIfs/#[0pMBM>rGV^RrGVLLs)7pVs)J'ZrH&!`rIb-'s+^Q0s,6o;rK.&Bs-*JE
+s+p]*s*=X#s.'+Ys-itTs-EUUs%EAcs$QfNs$$BHs$?ZOs$Q`Ss%*/]s%EAcqb-f[s%E;_s%35F
+q_8%&iBI8Ab<GZLq`]T2JcC<$ZiBt(JcC<$jo>>\U]5i~>
+JcFm4rr at WMRK*'_e,T*Rs1/0>s0hs?s2+fPs1eTLs2"`Ls0r$3s/>sqs/#ajs.TIbs.97[s-itU
+s-WhPs-<VJs-!DErK-u=s,Qu9mi2:ds,R,?rK.&As-!DHs-E\Os-WbRs-s%Ys.97_s.TIfs/#Go
+q$6-idg>[Oir\$;iBI8Ab<GZLq`]T2JcC<$ZiBt(JcC<$jo>>\U]5i~>
+JcFm4rr at WMRK*'_e,QQLmkNMpSI+V7pO`-jqge]rs+(-#s+:'!s+14Is8)]ip\=@SrrE#ks7QEa
+s7?9]s7--Ys6fpRs6K^Ms69RIs5s at Bs5<q0s4@;%s4%(ss3L_is31Mcs2b5[s2"`Ns0_m1s-s%Y
+s,qs5JcC<$ZiBt(JcC<$jo>>\U]5i~>
+JcFm4rr at WMRK*'_e,T*Rs1/0>s0hs?s2+fPs1eTLs2"`Ls0r$3s/>sqs/#ajs.TIbs.97[s-itU
+s-WhPs-<VJs-!DErK-u=s,Qu9s5j:4s2tAUs02Njs+LDks'>Yas,R,?rK.&As-!DHs-E\Os-WbR
+s-s%Ys.97_s.TIfs/#[0pMBM>rGV^RrGVLLs)7pVs)J'ZrH&!`rIb-'s+^Q0s,6o;rK.&Bs-*JE
+s+p]*s*=X#s.'+Ys-itTs-EUUs%EAcs$QfNs$$BHs$?ZOs$Q`Ss%*/]s%EAcqb-f[s%E;_s%35F
+q_8%&iBI8Ab<GZLq`]T2JcC<$ZiBt(JcC<$jo>>\U]5i~>
+JcFm4rr at WMU&XogbQ%7Js1nZSs31Mks3q"qs3CYhs3CYas1eTCs02O(s/H$ss/,gms.fUfs.B=^
+s-s%Vs-WhQs-<VKs-!DErK-u=s,Qu9oc*pjs,R,?s,d8Cqi^uCs-3PLs-NbRrL3\Ss.01]s.KCd
+s.o[mq$-Quk6TlMo*4:XgB$1qrrC5+pO<')JcC<$JcDkPr;_EKJcG!7rrAhoJ,~>
+JcFm4rr at WMU&XogbQ"R at oeFqpUC$OEpO`3lpON-jrI4crs+(-#s+:3%s+::Js8)ckqtTdWrV$3_
+rrE#irUU!YrU9dRs6TdNs69RIs6'FEs5a4>s4@;$s4%(ss3^kls31Mds2tA^s1nZPs2+fPs0)I.
+s.B=RJcC<$JcDkPr;_EKJcG!7rrAhoJ,~>
+JcFm4rr at WMU&XogbQ%7Js1nZSs31Mks3q"qs3CYhs3CYas1eTCs02O(s/H$ss/,gms.fUfs.B=^
+s-s%Vs-WhQs-<VKs-!DErK-u=s,Qu9s5F"-s0_lms*"EPs,I&=s,[2As,m2As-*JIs-E\Os-`hS
+rL<hXs.97`s.]Ohs/5g2q/#Y>nS\AFs)@pVs*"9es*Ocls*Xiqs+(-$s+C?!s)e3[s)7pVs)S-d
+s,m>Cs,[1KrC6fRs$$HGs#g<Fs$-HIs$?ZOs$6TMs$QfSs$crWs%!#Ys%35]s$?T=rA"=+r at e1&
+h`h&?b<GZLrB>f4JcC<$XoJ>"JcC<$l2Ub`U]5i~>
+JcFm4rr at WMU&XogbQ%7Js1nZSs31Mks3q"qs3CYhs3CYas1eTCs02O(s/H$ss/,gms.fUfs.B=^
+s-s%Vs-WhQs-<VKs-!DErK-u=s,Qu9oc*pjs,R,?s,d8Cqi^uCs-3PLs-NbRrL3\Ss.01]s.KCd
+s.o[mq$-Quk6TlMo*4:XgB$1qrrC5+pO<')JcC<$JcDkPr;_EKJcG!7rrAhoJ,~>
+JcFm4rr at WMU&XogbQ"R at oeFqpUC$OEpO`3lpON-jrI4crs+(-#s+:3%s+::Js8)ckqtTdWrV$3_
+rrE#irUU!YrU9dRs6TdNs69RIs6'FEs5a4>s4@;$s4%(ss3^kls31Mds2tA^s1nZPs2+fPs0)I.
+s.B=RJcC<$JcDkPr;_EKJcG!7rrAhoJ,~>
+JcFm4rr at WMU&XogbQ%7Js1nZSs31Mks3q"qs3CYhs3CYas1eTCs02O(s/H$ss/,gms.fUfs.B=^
+s-s%Vs-WhQs-<VKs-!DErK-u=s,Qu9s5F"-s0_lms*"EPs,I&=s,[2As,m2As-*JIs-E\Os-`hS
+rL<hXs.97`s.]Ohs/5g2q/#Y>nS\AFs)@pVs*"9es*Ocls*Xiqs+(-$s+C?!s)e3[s)7pVs)S-d
+s,m>Cs,[1KrC6fRs$$HGs#g<Fs$-HIs$?ZOs$6TMs$QfSs$crWs%!#Ys%35]s$?T=rA"=+r at e1&
+h`h&?b<GZLrB>f4JcC<$XoJ>"JcC<$l2Ub`U]5i~>
+JcFm4rr at WMWW2bo_>j>Ds4%)$s4mY6s5j:?s5<q5s4[M's3Uehs2Y/Vs1SHBs0D[,s/Q*us/5mn
+s.fUes.97\s-itTs-E\Ms-*JFrK-u=s,Qi5q]#Qqs,[2ApQ>K=s-*JJs-E\Ps-`nUq4%DTs.B=b
+s.fUks/>str<Dp"k6U/Uo*44Vh#Z7orrC;-pO<')JcC<$JcDYJqZ)3IJcG3=rrAhoJ,~>
+JcFm4rr at WMWW2bo_>gA2q_?@pXU4fUpO`-jq1/9jqgSKls*Xips*juts+(-#s8;ils7u]iqtKp[
+qt9p[rU^$hs763[s7$'Ws6fpSs6TdOs6BXKs6'FEs5j:@s5O(4s3q"rs3Uels3:Ses2k;^s2P)U
+s2P)Ws24lQs0M`ns-J<:JcC<$VuQVoJcC<$n,NCfU]5i~>
+JcFm4rr at WMWW2bo_>j>Ds4%)$s4mY6s5j:?s5<q5s4[M's3Uehs2Y/Vs1SHBs0D[,s/Q*us/5mn
+s.fUes.97\s-itTs-E\Ms-*JFrK-u=s,Qi5s1eShs&oA^s,[2ApQ>K=s-*JJs-E\Ps-`nUq4%DT
+s.B=bs.fUks/>sts(hFHmqq`8s)7^Ts)\-ZrGhXPs)J'VrGV^Us)\3^s*"E-rB^HKs#pBEs#^6A
+s#g<Fq`k*ErB:0ErBL<FrB($;s"s[1rA+C-r at n7)s")ngrrC;-pO<')JcC<$JcDYJqZ)3IJcG3=
+rrAhoJ,~>
+JcFm4rr at WMWW2bo_>j>Ds4%)$s4mY6s5j:?s5<q5s4[M's3Uehs2Y/Vs1SHBs0D[,s/Q*us/5mn
+s.fUes.97\s-itTs-E\Ms-*JFrK-u=s,Qi5q]#Qqs,[2ApQ>K=s-*JJs-E\Ps-`nUq4%DTs.B=b
+s.fUks/>str<Dp"k6U/Uo*44Vh#Z7orrC;-pO<')JcC<$JcDYJqZ)3IJcG3=rrAhoJ,~>
+JcFm4rr at WMWW2bo_>gA2q_?@pXU4fUpO`-jq1/9jqgSKls*Xips*juts+(-#s8;ils7u]iqtKp[
+qt9p[rU^$hs763[s7$'Ws6fpSs6TdOs6BXKs6'FEs5j:@s5O(4s3q"rs3Uels3:Ses2k;^s2P)U
+s2P)Ws24lQs0M`ns-J<:JcC<$VuQVoJcC<$n,NCfU]5i~>
+JcFm4rr at WMWW2bo_>j>Ds4%)$s4mY6s5j:?s5<q5s4[M's3Uehs2Y/Vs1SHBs0D[,s/Q*us/5mn
+s.fUes.97\s-itTs-E\Ms-*JFrK-u=s,Qi5s1eShs&oA^s,[2ApQ>K=s-*JJs-E\Ps-`nUq4%DT
+s.B=bs.fUks/>sts(hFHmqq`8s)7^Ts)\-ZrGhXPs)J'VrGV^Us)\3^s*"E-rB^HKs#pBEs#^6A
+s#g<Fq`k*ErB:0ErBL<FrB($;s"s[1rA+C-r at n7)s")ngrrC;-pO<')JcC<$JcDYJqZ)3IJcG3=
+rrAhoJ,~>
+JcFm4rr at WMYQ+J"\c;W at s4mY<s6TdTs7?9bs7H?]s6fpPs6'FCs5F"7s4RG&s3Uehs2G#Rs1A<>
+s02O's/5mms.TIas-s%Vs-WhPs-3PIs,m8As,[,=o8WX.rK-i;s-!DGs-<VMs-WhSs-ibQs.'+\
+s.KCds/#ans/H%"s02M-o*=jmisG5[ir\0?q`ih!rrCA/pO<!'JcC<$JcDGDr;_EKJcG?ArrAho
+J,~>
+JcFm4rr at WMYQ+J"\c76[jo2Xoq1JWtq18?lq1&-fqgJEjs*Ocns*ak at s7u]ls8)cks7lWgrV$-]
+rUfpWs76-YrrE)fs6fjQs6TdOs6BXKs60LGs5s at Cs5a4=s4./!s3Uels3:Sfs2tA_s2P)Xs2=rY
+s2P)Ws1JB>s-E\Qs,DU0JcC<$U&Y&kJcC<$oDegjU]5i~>
+JcFm4rr at WMYQ+J"\c;W at s4mY<s6TdTs7?9bs7H?]s6fpPs6'FCs5F"7s4RG&s3Uehs2G#Rs1A<>
+s02O's/5mms.TIas-s%Vs-WhPs-3PIs,m8As,[,=o8WX.rK-i;s-!DGs-<VMs-WhSs-ibQs.'+\
+s.KCds/#ans/H%"s02<8m;;l at j_t0<s(qRLs)7pWs)S-^s#U0As#g6ArAjm;s#U0BrB:0Cs#U0?
+s#9s;q_e7-rA4C-s"XI+s"4+4gHPW;cT_)Pq`]T2JcC<$U&Y&kJcC<$oDegjU]5i~>
+JcFm4rr at WMYQ+J"\c;W at s4mY<s6TdTs7?9bs7H?]s6fpPs6'FCs5F"7s4RG&s3Uehs2G#Rs1A<>
+s02O's/5mms.TIas-s%Vs-WhPs-3PIs,m8As,[,=o8WX.rK-i;s-!DGs-<VMs-WhSs-ibQs.'+\
+s.KCds/#ans/H%"s02M-o*=jmisG5[ir\0?q`ih!rrCA/pO<!'JcC<$JcDGDr;_EKJcG?ArrAho
+J,~>
+JcFm4rr at WMYQ+J"\c76[jo2Xoq1JWtq18?lq1&-fqgJEjs*Ocns*ak at s7u]ls8)cks7lWgrV$-]
+rUfpWs76-YrrE)fs6fjQs6TdOs6BXKs60LGs5s at Cs5a4=s4./!s3Uels3:Sfs2tA_s2P)Xs2=rY
+s2P)Ws1JB>s-E\Qs,DU0JcC<$U&Y&kJcC<$oDegjU]5i~>
+JcFm4rr at WMYQ+J"\c;W at s4mY<s6TdTs7?9bs7H?]s6fpPs6'FCs5F"7s4RG&s3Uehs2G#Rs1A<>
+s02O's/5mms.TIas-s%Vs-WhPs-3PIs,m8As,[,=o8WX.rK-i;s-!DGs-<VMs-WhSs-ibQs.'+\
+s.KCds/#ans/H%"s02<8m;;l at j_t0<s(qRLs)7pWs)S-^s#U0As#g6ArAjm;s#U0BrB:0Cs#U0?
+s#9s;q_e7-rA4C-s"XI+s"4+4gHPW;cT_)Pq`]T2JcC<$U&Y&kJcC<$oDegjU]5i~>
+JcFm4rr at WM\,Z7(Z2ak"s8;Qhs8Duns7ZK`s6p!Ss69RGs5X.;s5!_-s3Uees1nZEs0;U)s/,gl
+s.TIas-s%Vs-NbOs-3PHrK7,As,[2?o8WR+rK$o=rK7,Cs-*JJs-NbQrL3JMs.01^s.TIfs/,gp
+s/Z1's0Ma7s1Iq.rs7Wkm0;SPirSm=gHPW;d6@;Rq`]T2JcC<$S,`EeJcC<$p](6nU]5i~>
+JcFm4rr at WM\,Z7(Z2]CShu:@sqh+j!rIOcpq1&9jpO2pdrHnKhq=Xd^s7u]is7ZKbs7?-[rU]pW
+qsjXSs6fmes6]dOs6K^Ms69RIs6'FEs5j:@s53k1rRCkrs3^kjs2tA`s2Y/YrP\`Xs2P)Ws1SH@
+s-NbNs+Gt'JcC<$S,`EeJcC<$p](6nU]5i~>
+JcFm4rr at WM\,Z7(Z2ak"s8;Qhs8Duns7ZK`s6p!Ss69RGs5X.;s5!_-s3Uees1nZEs0;U)s/,gl
+s.TIas-s%Vs-NbOs-3PHrK7,As,[2?o8WR+rK$o=rK7,Cs-*JJs-NbQrL3JMs.01^s.TIfs/,gp
+s/Z1's0Ma7s1J;Hoki`-qeQ(Fs).jTs)J'Zq`+I3rAO[8rB($>s#C$;s#0U/rA=I/rA+C-s"OC)
+pHRCrrrCG1pO<!'JcC<$JcD5>r;_EKJcGKErrAhoJ,~>
+JcFm4rr at WM\,Z7(Z2ak"s8;Qhs8Duns7ZK`s6p!Ss69RGs5X.;s5!_-s3Uees1nZEs0;U)s/,gl
+s.TIas-s%Vs-NbOs-3PHrK7,As,[2?o8WR+rK$o=rK7,Cs-*JJs-NbQrL3JMs.01^s.TIfs/,gp
+s/Z1's0Ma7s1Iq.rs7Wkm0;SPirSm=gHPW;d6@;Rq`]T2JcC<$S,`EeJcC<$p](6nU]5i~>
+JcFm4rr at WM\,Z7(Z2]CShu:@sqh+j!rIOcpq1&9jpO2pdrHnKhq=Xd^s7u]is7ZKbs7?-[rU]pW
+qsjXSs6fmes6]dOs6K^Ms69RIs6'FEs5j:@s53k1rRCkrs3^kjs2tA`s2Y/YrP\`Xs2P)Ws1SH@
+s-NbNs+Gt'JcC<$S,`EeJcC<$p](6nU]5i~>
+JcFm4rr at WM\,Z7(Z2ak"s8;Qhs8Duns7ZK`s6p!Ss69RGs5X.;s5!_-s3Uees1nZEs0;U)s/,gl
+s.TIas-s%Vs-NbOs-3PHrK7,As,[2?o8WR+rK$o=rK7,Cs-*JJs-NbQrL3JMs.01^s.TIfs/,gp
+s/Z1's0Ma7s1J;Hoki`-qeQ(Fs).jTs)J'Zq`+I3rAO[8rB($>s#C$;s#0U/rA=I/rA+C-s"OC)
+pHRCrrrCG1pO<!'JcC<$JcD5>r;_EKJcGKErrAhoJ,~>
+JcFm4rr at WM^]4*0WW25^s8)cis7H?]s6]jNs5a4;s4I at us2b5Us1/07s/c6ts.fUes.01Ys-`nR
+s-<VKs-!>Cs,d8As,QK+qi:W9s,d2As-*JIs-E\Os-`hSq4%DTs.97`s.]Ois/5mts/uC-s0_m;
+s1\NLrs.EflNZ;LklLB?ffoE9dm!MTq`]T2JcC<$Q2gd_JcC<$qu?ZrU]5i~>
+JcFm4rr at WM^]4*0WW.PKg&B"us+C3#rIOotq1&9jq0i'dq0W-frU]^Qs7?9\s7$'Ys763]qss^U
+rUB^Qs6fjQrrE)cs6K^Ms69LFs5s at As53k2s4@;"rR1_ns3L_js31Mbs2Y/Xs24lRs2k;\s2"`M
+s0r#qs,d80JcC<$JcD#8r;_EKJcGWIrrAhoJ,~>
+JcFm4rr at WM^]4*0WW25^s8)cis7H?]s6]jNs5a4;s4I at us2b5Us1/07s/c6ts.fUes.01Ys-`nR
+s-<VKs-!>Cs,d8As,QK+qi:W9s,d2As-*JIs-E\Os-`hSq4%DTs.97`s.]Ois/5mts/uC-s0_m;
+s1\NLs(pS2lYH/No/-D'pGDb's"aO-s"OI+o0:nlrrCM3pO<!'JcC<$JcD#8r;_EKJcGWIrrAho
+J,~>
+JcFm4rr at WM^]4*0WW25^s8)cis7H?]s6]jNs5a4;s4I at us2b5Us1/07s/c6ts.fUes.01Ys-`nR
+s-<VKs-!>Cs,d8As,QK+qi:W9s,d2As-*JIs-E\Os-`hSq4%DTs.97`s.]Ois/5mts/uC-s0_m;
+s1\NLrs.EflNZ;LklLB?ffoE9dm!MTq`]T2JcC<$Q2gd_JcC<$qu?ZrU]5i~>
+JcFm4rr at WM^]4*0WW.PKg&B"us+C3#rIOotq1&9jq0i'dq0W-frU]^Qs7?9\s7$'Ys763]qss^U
+rUB^Qs6fjQrrE)cs6K^Ms69LFs5s at As53k2s4@;"rR1_ns3L_js31Mbs2Y/Xs24lRs2k;\s2"`M
+s0r#qs,d80JcC<$JcD#8r;_EKJcGWIrrAhoJ,~>
+JcFm4rr at WM^]4*0WW25^s8)cis7H?]s6]jNs5a4;s4I at us2b5Us1/07s/c6ts.fUes.01Ys-`nR
+s-<VKs-!>Cs,d8As,QK+qi:W9s,d2As-*JIs-E\Os-`hSq4%DTs.97`s.]Ois/5mts/uC-s0_m;
+s1\NLs(pS2lYH/No/-D'pGDb's"aO-s"OI+o0:nlrrCM3pO<!'JcC<$JcD#8r;_EKJcGWIrrAho
+J,~>
+JcFm4rr at WM`W,f8TE"*Rs8;oks763Xs69REs53k.s3Uees2"`Gs0D[,s/>sls.B=]s-itTs-NbN
+s-*JGs,m>CrK$u=l](k'rK$u?qiUoBs-3PLs-NbQs-`hSrL<hXs.97`s.]Ohs/,grs/l=+oDe+_
+lN[:kir\TKmm#>drrCS5pO<!'JcC<$JcCf2r;_EKJcGcMrrAhoJ,~>
+JcFm4rr at WM`W,f8TDsKAiVrHKd0]i*rIXots+(&tqgS?hqgA3drHeG7s7?3[s7--YrU9dSq<e4M
+s6ojTrUBdSqsOLOrTsLKrrE#^s6'FEs5a4>s5<q4s4@;"s3gqps3Ueks3:Sfs2tA_s2P)Vs2+fP
+s2k;Zs2+fOs1/0$s-!D0JcC<$JcCf2r;_EKJcGcMrrAhoJ,~>
+JcFm4rr at WM`W,f8TE"*Rs8;oks763Xs69REs53k.s3Uees2"`Gs0D[,s/>sls.B=]s-itTs-NbN
+s-*JGs,m>CrK$u=l](k'rK$u?qiUoBs-3PLs-NbQs-`hSrL<hXs.97`s.]Ohs/,grs/l=+oDe,p
+kA0fLjYZolrA+C-s"Nn+eNX!5eNW_Vq`]T2JcC<$O8o.YJcC<$s8W*!U]5i~>
+JcFm4rr at WM`W,f8TE"*Rs8;oks763Xs69REs53k.s3Uees2"`Gs0D[,s/>sls.B=]s-itTs-NbN
+s-*JGs,m>CrK$u=l](k'rK$u?qiUoBs-3PLs-NbQs-`hSrL<hXs.97`s.]Ohs/,grs/l=+oDe+_
+lN[:kir\TKmm#>drrCS5pO<!'JcC<$JcCf2r;_EKJcGcMrrAhoJ,~>
+JcFm4rr at WM`W,f8TDsKAiVrHKd0]i*rIXots+(&tqgS?hqgA3drHeG7s7?3[s7--YrU9dSq<e4M
+s6ojTrUBdSqsOLOrTsLKrrE#^s6'FEs5a4>s5<q4s4@;"s3gqps3Ueks3:Sfs2tA_s2P)Vs2+fP
+s2k;Zs2+fOs1/0$s-!D0JcC<$JcCf2r;_EKJcGcMrrAhoJ,~>
+JcFm4rr at WM`W,f8TE"*Rs8;oks763Xs69REs53k.s3Uees2"`Gs0D[,s/>sls.B=]s-itTs-NbN
+s-*JGs,m>CrK$u=l](k'rK$u?qiUoBs-3PLs-NbQs-`hSrL<hXs.97`s.]Ohs/,grs/l=+oDe,p
+kA0fLjYZolrA+C-s"Nn+eNX!5eNW_Vq`]T2JcC<$O8o.YJcC<$s8W*!U]5i~>
+JcFm4rr at WMc2[S>QiH7Js82iks7?9Ys69RFs5*e-s3Uefs2"`Gs0Ma.s/H$ns.97[s-itTs-E\M
+s-*JGs,d2?s,Q?'rJpo=rK-o=s-!DGs-3PLs-NbQs-`hSs-s%Zs.97`s.\QRr<`E*rrVoupBLEs
+jT=rQks*W\rrCY7pO<')JcC<$JcCN*r;_EKKE(rOU]5i~>
+JcFm4rr at WMc2[S>QiDX9li,rEr<`@RjU(s>q18Kps*surqgJ?hq0W'ds7H9]rUU!YrUBjUrU0^Q
+rTsRMrTaFLs6]jSs6p!WrU9dSrU'LKs6KXKs69RIrrE)^s5a4>s5<q6s4mY-s4%(ss3Uels3CYh
+s31Mds2k;]s2G#Us1SH>s2k;\s2=rSs1eT's-&$6JcC<$L]@;QJcCB&rrAhoJ,~>
+JcFm4rr at WMc2[S>QiH7Js82iks7?9Ys69RFs5*e-s3Uefs2"`Gs0Ma.s/H$ns.97[s-itTs-E\M
+s-*JGs,d2?s,Q?'rJpo=rK-o=s-!DGs-3PLs-NbQs-`hSs-s%Zs.97`s.\QRrGVWns#&nRq).=l
+rA4I/s"XO-ks*W\rrCY7pO<')JcC<$JcCN*r;_EKKE(rOU]5i~>
+JcFm4rr at WMc2[S>QiH7Js82iks7?9Ys69RFs5*e-s3Uefs2"`Gs0Ma.s/H$ns.97[s-itTs-E\M
+s-*JGs,d2?s,Q?'rJpo=rK-o=s-!DGs-3PLs-NbQs-`hSs-s%Zs.97`s.\QRr<`E*rrVoupBLEs
+jT=rQks*W\rrCY7pO<')JcC<$JcCN*r;_EKKE(rOU]5i~>
+JcFm4rr at WMc2[S>QiDX9li,rEr<`@RjU(s>q18Kps*surqgJ?hq0W'ds7H9]rUU!YrUBjUrU0^Q
+rTsRMrTaFLs6]jSs6p!WrU9dSrU'LKs6KXKs69RIrrE)^s5a4>s5<q6s4mY-s4%(ss3Uels3CYh
+s31Mds2k;]s2G#Us1SH>s2k;\s2=rSs1eT's-&$6JcC<$L]@;QJcCB&rrAhoJ,~>
+JcFm4rr at WMc2[S>QiH7Js82iks7?9Ys69RFs5*e-s3Uefs2"`Gs0Ma.s/H$ns.97[s-itTs-E\M
+s-*JGs,d2?s,Q?'rJpo=rK-o=s-!DGs-3PLs-NbQs-`hSs-s%Zs.97`s.\QRrGVWns#&nRq).=l
+rA4I/s"XO-ks*W\rrCY7pO<')JcC<$JcCN*r;_EKKE(rOU]5i~>
+JcFm4rr at WMec5FFO8nDBs8Duos7ZKas6fpPs5j:;s4@:ss2b5Vs1/0:s0)I&s/#afs-s%Vs-NbN
+s-*JFrK.&?rJp-%rJpo=rK-o=rK at 2Es-3PKs-E\Os-`nUg&M)@rCm/_rrVKik5tG[rBTI/cT_@/
+ffo.ZrB>f4JcC<$JcGTIJcCT,rrAhoJ,~>
+JcFm4rr at WMec5FFO8je1oD[GCs8Mims+BVDs+C?&pON9ns*jopqgA9frUg'[rUTjUs7$'WrU0^Q
+rTsLKs6BXKs60LGs60LJs6TdQrU0XOrTsRMqs+4Gs60LGs5s at CrrE)Xs5*e2s4[M*s4..us3^kl
+s3:Mds2tA`s2Y/Zs2G#Ts1JB;s2k;^s2P)Us1eT%s-/*7JcC<$JcGTIJcCT,rrAhoJ,~>
+JcFm4rr at WMec5FFO8nDBs8Duos7ZKas6fpPs5j:;s4@:ss2b5Vs1/0:s0)I&s/#afs-s%Vs-NbN
+s-*JFrK.&?rJp-%rJpo=rK-o=rK at 2Es-3PKs-E\Os-`nUg&M)@rCm/_s#'+Xq_d[rs"j[1s"XI;
+jZh'TrrC_9pO<')JcC<$JcC<$qZ)3IM?!SUU]5i~>
+JcFm4rr at WMec5FFO8nDBs8Duos7ZKas6fpPs5j:;s4@:ss2b5Vs1/0:s0)I&s/#afs-s%Vs-NbN
+s-*JFrK.&?rJp-%rJpo=rK-o=rK at 2Es-3PKs-E\Os-`nUg&M)@rCm/_rrVKik5tG[rBTI/cT_@/
+ffo.ZrB>f4JcC<$JcGTIJcCT,rrAhoJ,~>
+JcFm4rr at WMec5FFO8je1oD[GCs8Mims+BVDs+C?&pON9ns*jopqgA9frUg'[rUTjUs7$'WrU0^Q
+rTsLKs6BXKs60LGs60LJs6TdQrU0XOrTsRMqs+4Gs60LGs5s at CrrE)Xs5*e2s4[M*s4..us3^kl
+s3:Mds2tA`s2Y/Zs2G#Ts1JB;s2k;^s2P)Us1eT%s-/*7JcC<$JcGTIJcCT,rrAhoJ,~>
+JcFm4rr at WMec5FFO8nDBs8Duos7ZKas6fpPs5j:;s4@:ss2b5Vs1/0:s0)I&s/#afs-s%Vs-NbN
+s-*JFrK.&?rJp-%rJpo=rK-o=rK at 2Es-3PKs-E\Os-`nUg&M)@rCm/_s#'+Xq_d[rs"j[1s"XI;
+jZh'TrrC_9pO<')JcC<$JcC<$qZ)3IM?!SUU]5i~>
+JcFm4rr at WMg].-NL&^?8s8;oms7QE_s6p!Qs5a49s474rs2b5Us1&*6s/Q*os.B=]s-`nSs-E\M
+s-*JFrK.&?rJp-%s,R&=rK-o=rK>Y0s-E\OrL!OVq+C[QrKm>Is-N[Us%*)Ys$m#Ws$ZfQqa10G
+q`s7-b<Gq+gHP@\rB>f4JcC<$JcGQGr;_EKNW9"YU]5i~>
+JcFm4rr at WMg].-NL&Z`'e,T7Cp&4F[s8Duqs82Kbs7lQes7Z?_s7H9]rUU!YqsaRQs6fjQs6TdO
+rTa at Gs60FEs5s:As60LJs6TdQrTsRMrTaFIrTO:Ds5j:As5O(;s53hVs4mY.s4@;$s3q"rs3L_i
+s31Mds2tA`s2b5\s2P)Vs1\NEs0;UJs2tA\s2"`Ms-E\FJcC<$JcC<$q>^BnJcC`0rrAhoJ,~>
+JcFm4rr at WMg].-NL&^?8s8;oms7QE_s6p!Qs5a49s474rs2b5Us1&*6s/Q*os.B=]s-`nSs-E\M
+s-*JFrK.&?rJp-%s,R&=rK-o=rK>Y0s-E\OrL!OVq+C[QrKm>Is-N[Us%*)Ys$m#Ws$ZfQqa10G
+q`s7-b<Gq+gHP@\rB>f4JcC<$JcGQGr;_EKNW9"YU]5i~>
+JcFm4rr at WMg].-NL&^?8s8;oms7QE_s6p!Qs5a49s474rs2b5Us1&*6s/Q*os.B=]s-`nSs-E\M
+s-*JFrK.&?rJp-%s,R&=rK-o=rK>Y0s-E\OrL!OVq+C[QrKm>Is-N[Us%*)Ys$m#Ws$ZfQqa10G
+q`s7-b<Gq+gHP@\rB>f4JcC<$JcGQGr;_EKNW9"YU]5i~>
+JcFm4rr at WMg].-NL&Z`'e,T7Cp&4F[s8Duqs82Kbs7lQes7Z?_s7H9]rUU!YqsaRQs6fjQs6TdO
+rTa at Gs60FEs5s:As60LJs6TdQrTsRMrTaFIrTO:Ds5j:As5O(;s53hVs4mY.s4@;$s3q"rs3L_i
+s31Mds2tA`s2b5\s2P)Vs1\NEs0;UJs2tA\s2"`Ms-E\FJcC<$JcC<$q>^BnJcC`0rrAhoJ,~>
+JcFm4rr at WMg].-NL&^?8s8;oms7QE_s6p!Qs5a49s474rs2b5Us1&*6s/Q*os.B=]s-`nSs-E\M
+s-*JFrK.&?rJp-%s,R&=rK-o=rK>Y0s-E\OrL!OVq+C[QrKm>Is-N[Us%*)Ys$m#Ws$ZfQqa10G
+q`s7-b<Gq+gHP@\rB>f4JcC<$JcGQGr;_EKNW9"YU]5i~>
+JcFm4rr at WMj8\oTJcGcMjo5;Ws7cQcs7--Ws6BXEs4dS%s2tAWs0_m/s/5mls.TIas-s%Vs-WhP
+s-3PIrK7,As,[,=l&G_'s,YG)rK.&ArK at 2ErKR>InO`bFs-*=NrC?lWs$clSs$QZMq*FmCj$1XL
+rrCq?omZj'JcC<$JcC<$oDeahJcCl4rrAhoJ,~>
+JcFm4rr at WMj8\oTJcGcMO8dE(n,E.]s8;cmrVlcorVZ]mp%eX_s7cQes7Q?_s7?3[s7-'WrU9^Q
+rU'RMs6K^Ms69LGrTF.As5j:As5X.=s5X. at s60LJs6T^Ls69RHs5j:@rSmk9s5<q6s4mY/s4RDP
+s4@;#s3q"qs3L_js3(Gbs2k5\s2P)Xs24lPs186<s3gqms2k;[s2"`Ms,m>:JcC<$JcC<$oDeah
+JcCl4rrAhoJ,~>
+JcFm4rr at WMj8\oTJcGcMjo5;Ws7cQcs7--Ws6BXEs4dS%s2tAWs0_m/s/5mls.TIas-s%Vs-WhP
+s-3PIrK7,As,[,=l&G_'s,YG)rK.&ArK at 2ErKR>InO`bFs-*=NrC?lWs$clSs$QZMq*FmCj$1XL
+rrCq?omZj'JcC<$JcC<$oDeahJcCl4rrAhoJ,~>
+JcFm4rr at WMj8\oTJcGcMjo5;Ws7cQcs7--Ws6BXEs4dS%s2tAWs0_m/s/5mls.TIas-s%Vs-WhP
+s-3PIrK7,As,[,=l&G_'s,YG)rK.&ArK at 2ErKR>InO`bFs-*=NrC?lWs$clSs$QZMq*FmCj$1XL
+rrCq?omZj'JcC<$JcC<$oDeahJcCl4rrAhoJ,~>
+JcFm4rr at WMj8\oTJcGcMO8dE(n,E.]s8;cmrVlcorVZ]mp%eX_s7cQes7Q?_s7?3[s7-'WrU9^Q
+rU'RMs6K^Ms69LGrTF.As5j:As5X.=s5X. at s60LJs6T^Ls69RHs5j:@rSmk9s5<q6s4mY/s4RDP
+s4@;#s3q"qs3L_js3(Gbs2k5\s2P)Xs24lPs186<s3gqms2k;[s2"`Ms,m>:JcC<$JcC<$oDeah
+JcCl4rrAhoJ,~>
+JcFm4rr at WMj8\oTJcGcMjo5;Ws7cQcs7--Ws6BXEs4dS%s2tAWs0_m/s/5mls.TIas-s%Vs-WhP
+s-3PIrK7,As,[,=l&G_'s,YG)rK.&ArK at 2ErKR>InO`bFs-*=NrC?lWs$clSs$QZMq*FmCj$1XL
+rrCq?omZj'JcC<$JcC<$oDeahJcCl4rrAhoJ,~>
+JcFm4rr at WMli6b\JcGECkPkM[s8)chs7?9[s6BXFs4dS&s2k;Ts0Vg.s/H$qs.fUes.97[s-`nS
+s-E\Ls-*JGs,m>Cs,[2?oo6rjnW*R/rK.&AnONOIq*k6Ms$QZMq*FgAj$1LHrrD"ApO<!'JcC<$
+JcC<$mJm+bJcD#8rrAhoJ,~>
+JcFm4rr at WMli6b\JcGECU&N%2kPkAWp\b'irVZWks8)ckp\=d_s7ZKcs7H?_rUU!YrUBjUs6fjQ
+rTsLKrTaFIs60LGrT=(?rT+"=s5O(;s5<q7s5<q;s5j:<s4R;%s4[M.rS%)#s4IA's472Ms3gqo
+s3CYhs31Mcs2k;^s2Y/Zs2=rSs2"`Ls1/0:s4%(rs2tA[s2+ets,[28JcC<$JcC<$mJm+bJcD#8
+rrAhoJ,~>
+JcFm4rr at WMli6b\JcGECkPkM[s8)chs7?9[s6BXFs4dS&s2k;Ts0Vg.s/H$qs.fUes.97[s-`nS
+s-E\Ls-*JGs,m>Cs,[2?oo6rjnW*R/rK.&AnONOIq*k6Ms$QZMq*FgAj$1LHrrD"ApO<!'JcC<$
+JcC<$mJm+bJcD#8rrAhoJ,~>
+JcFm4rr at WMli6b\JcGECkPkM[s8)chs7?9[s6BXFs4dS&s2k;Ts0Vg.s/H$qs.fUes.97[s-`nS
+s-E\Ls-*JGs,m>Cs,[2?oo6rjnW*R/rK.&AnONOIq*k6Ms$QZMq*FgAj$1LHrrD"ApO<!'JcC<$
+JcC<$mJm+bJcD#8rrAhoJ,~>
+JcFm4rr at WMli6b\JcGECU&N%2kPkAWp\b'irVZWks8)ckp\=d_s7ZKcs7H?_rUU!YrUBjUs6fjQ
+rTsLKrTaFIs60LGrT=(?rT+"=s5O(;s5<q7s5<q;s5j:<s4R;%s4[M.rS%)#s4IA's472Ms3gqo
+s3CYhs31Mcs2k;^s2Y/Zs2=rSs2"`Ls1/0:s4%(rs2tA[s2+ets,[28JcC<$JcC<$mJm+bJcD#8
+rrAhoJ,~>
+JcFm4rr at WMli6b\JcGECkPkM[s8)chs7?9[s6BXFs4dS&s2k;Ts0Vg.s/H$qs.fUes.97[s-`nS
+s-E\Ls-*JGs,m>Cs,[2?oo6rjnW*R/rK.&AnONOIq*k6Ms$QZMq*FgAj$1LHrrD"ApO<!'JcC<$
+JcC<$mJm+bJcD#8rrAhoJ,~>
+JcFm4rr at WMnc/IdJcG'9kPkMZs7u]fs7$'Qs5X.7s3q"ls2G#Ps1&*6s/c7!s.fUes.01Zs-`nS
+s-E\Ls-*JGs,k"prJCQ3q2=j'qi1VErC6HKrC$TOrBg6EpH[\%_*7l!jZ`?dq`]T2JcC<$JcFp5
+r;_EKRK*9eU]5i~>
+JcFm4rr at WMnc/IdJcG'9Zi7Z<hu<HLs82]krVQQis7u]iqtL!]s7QEas7?9]s7--YrU9dSs6]jQ
+rTjFIqs".Es6'FEs5j4?rT!k9s5F"9s53k5s5!_1s4dS-s4RG)s4@;%o at NrlrRLqts3puJs3L_i
+s3(Gbs2b5\s2P)Xs2=rSs1nZJs1A<@s4[M+s4%(os2G#Vs,d8?s+Q%(JcC<$JcFp5r;_EKRK*9e
+U]5i~>
+JcFm4rr at WMnc/IdJcG'9kPkMZs7u]fs7$'Qs5X.7s3q"ls2G#Ps1&*6s/c7!s.fUes.01Zs-`nS
+s-E\Ls-*JGs,k"prJCQ3q2=j'qi1VErC6HKrC$TOrBg6EpH[\%_*7l!jZ`?dq`]T2JcC<$JcFp5
+r;_EKRK*9eU]5i~>
+JcFm4rr at WMnc/IdJcG'9kPkMZs7u]fs7$'Qs5X.7s3q"ls2G#Ps1&*6s/c7!s.fUes.01Zs-`nS
+s-E\Ls-*JGs,k"prJCQ3q2=j'qi1VErC6HKrC$TOrBg6EpH[\%_*7l!jZ`?dq`]T2JcC<$JcFp5
+r;_EKRK*9eU]5i~>
+JcFm4rr at WMnc/IdJcG'9Zi7Z<hu<HLs82]krVQQis7u]iqtL!]s7QEas7?9]s7--YrU9dSs6]jQ
+rTjFIqs".Es6'FEs5j4?rT!k9s5F"9s53k5s5!_1s4dS-s4RG)s4@;%o at NrlrRLqts3puJs3L_i
+s3(Gbs2b5\s2P)Xs2=rSs1nZJs1A<@s4[M+s4%(os2G#Vs,d8?s+Q%(JcC<$JcFp5r;_EKRK*9e
+U]5i~>
+JcFm4rr at WMnc/IdJcG'9kPkMZs7u]fs7$'Qs5X.7s3q"ls2G#Ps1&*6s/c7!s.fUes.01Zs-`nS
+s-E\Ls-*JGs,k"prJCQ3q2=j'qi1VErC6HKrC$TOrBg6EpH[\%_*7l!jZ`?dq`]T2JcC<$JcFp5
+r;_EKRK*9eU]5i~>
+JcFm4rr at WMq>^6jJcFj3jo5;Ws7QE\s6BXGs5<q3s4..rs2k;Xs1A<=s02O)s/5mks.6e$rIt'%
+rJ1?-pPJR#s,6\@ogA[EpHeO=h`ne<rrD4GomZd%JcC<$JcC<$iW&iVJcD;@rrAhoJ,~>
+JcFm4rr at WMq>^6jJcFj3_>_"Fec,IDp\Xpcs7u]is7cQds7H9_qt0p[s763[s7$'Ws6fjQs6TdO
+s6BXKqrn"As5s:As5a4?s5O"9rS[Y3s5*e3s4mY/s4[M+s4IA's47"rs475#s4%)!rRCkrrR1_m
+s3CWEs2tA`s2b5\s2G#Vs24lRs2"`Ls1A<Bs0r$_s4IA#s3:Sbs24kus,R,.JcC<$JcC<$iW&iV
+JcD;@rrAhoJ,~>
+JcFm4rr at WMq>^6jJcFj3jo5;Ws7QE\s6BXGs5<q3s4..rs2k;Xs1A<=s02O)s/5mks.6e$rIt'%
+rJ1?-pPJR#s,6\@ogA[EpHeO=h`ne<rrD4GomZd%JcC<$JcC<$iW&iVJcD;@rrAhoJ,~>
+JcFm4rr at WMq>^6jJcFj3jo5;Ws7QE\s6BXGs5<q3s4..rs2k;Xs1A<=s02O)s/5mks.6e$rIt'%
+rJ1?-pPJR#s,6\@ogA[EpHeO=h`ne<rrD4GomZd%JcC<$JcC<$iW&iVJcD;@rrAhoJ,~>
+JcFm4rr at WMq>^6jJcFj3_>_"Fec,IDp\Xpcs7u]is7cQds7H9_qt0p[s763[s7$'Ws6fjQs6TdO
+s6BXKqrn"As5s:As5a4?s5O"9rS[Y3s5*e3s4mY/s4[M+s4IA's47"rs475#s4%)!rRCkrrR1_m
+s3CWEs2tA`s2b5\s2G#Vs24lRs2"`Ls1A<Bs0r$_s4IA#s3:Sbs24kus,R,.JcC<$JcC<$iW&iV
+JcD;@rrAhoJ,~>
+JcFm4rr at WMq>^6jJcFj3jo5;Ws7QE\s6BXGs5<q3s4..rs2k;Xs1A<=s02O)s/5mks.6e$rIt'%
+rJ1?-pPJR#s,6\@ogA[EpHeO=h`ne<rrD4GomZd%JcC<$JcC<$iW&iVJcD;@rrAhoJ,~>
+JcFm4rr at WMq#H!Gg]-I9s8Dums7?9Ys69REs53k0s4%(ps2k;Zs1Z,Fq1J?nqh=j#l\GL,qa:6I
+og/79h*8G6rrD at KomZd%JcC<$JcC<$g&LpLJcDMFrrAhoJ,~>
+JcFm4rr at WMq#H!Gg],Ot]Dp"PrVZWkqtg?gs7lWgs7ZKcs7H?^s7--[rU^!Ys7--Ys6p!Us6]jQ
+rTjLJs60FErT=(?rT+"=s5O(;s5<k5qqhA/s4mY/s4[M+rRh/%s4.(trR:_ps3pels3^kns3L_i
+s3(GbrrE)>s2P)Xs2=rTs2"`Ns1\NHs186?s5!_0s4@:us3CYds,[2As,;O/JcC<$JcFF'qZ)3I
+U]:>oU]5i~>
+JcFm4rr at WMq#H!Gg]-I9s8Dums7?9Ys69REs53k0s4%(ps2k;Zs1Z,Fq1J?nqh=j#l\GL,qa:6I
+og/79h*8G6rrD at KomZd%JcC<$JcC<$g&LpLJcDMFrrAhoJ,~>
+JcFm4rr at WMq#H!Gg]-I9s8Dums7?9Ys69REs53k0s4%(ps2k;Zs1Z,Fq1J?nqh=j#l\GL,qa:6I
+og/79h*8G6rrD at KomZd%JcC<$JcC<$g&LpLJcDMFrrAhoJ,~>
+JcFm4rr at WMq#H!Gg],Ot]Dp"PrVZWkqtg?gs7lWgs7ZKcs7H?^s7--[rU^!Ys7--Ys6p!Us6]jQ
+rTjLJs60FErT=(?rT+"=s5O(;s5<k5qqhA/s4mY/s4[M+rRh/%s4.(trR:_ps3pels3^kns3L_i
+s3(GbrrE)>s2P)Xs2=rTs2"`Ns1\NHs186?s5!_0s4@:us3CYds,[2As,;O/JcC<$JcFF'qZ)3I
+U]:>oU]5i~>
+JcFm4rr at WMq#H!Gg]-I9s8Dums7?9Ys69REs53k0s4%(ps2k;Zs1Z,Fq1J?nqh=j#l\GL,qa:6I
+og/79h*8G6rrD at KomZd%JcC<$JcC<$g&LpLJcDMFrrAhoJ,~>
+JcFm4rr at oUq#H!GdJrD/s8;oks763Ws60LCs5*e._uK%SnUpXjkCrRpm6KDj[6FTjmlp>lq`]T2
+JcC<$JcF-tr;_EKVuQbsU]5i~>
+JcFm4rr at oUq#H!GdJqht_uI:Hs8;imrVHQhs7cQes7QE`s763[s7#pSs7$'YrUBjUs6fpSs6TdO
+s6BXKs60LGs5s at CrT*q;rSmk9s5<k5s5*_1rS7A+s4[M+s4IA's475#s4%"rq9o5hrQtSjs3CYh
+s31Gbs2tA`rrE)<s2=rSs2"`Ns1\NGs1A<As53k4s4dS(s4%(ts31M&s,m>7JcC<$JcC<$dJs.F
+JcDYJrrAhoJ,~>
+JcFm4rr at oUq#H!GdJrD/s8;oks763Ws60LCs5*e._uK%SnUpXjkCrRpm6KDj[6FTjmlp>lq`]T2
+JcC<$JcF-tr;_EKVuQbsU]5i~>
+JcFm4rr at oUq#H!GdJrD/s8;oks763Ws60LCs5*e._uK%SnUpXjkCrRpm6KDj[6FTjmlp>lq`]T2
+JcC<$JcF-tr;_EKVuQbsU]5i~>
+JcFm4rr at oUq#H!GdJqht_uI:Hs8;imrVHQhs7cQes7QE`s763[s7#pSs7$'YrUBjUs6fpSs6TdO
+s6BXKs60LGs5s at CrT*q;rSmk9s5<k5s5*_1rS7A+s4[M+s4IA's475#s4%"rq9o5hrQtSjs3CYh
+s31Gbs2tA`rrE)<s2=rSs2"`Ns1\NGs1A<As53k4s4dS(s4%(ts31M&s,m>7JcC<$JcC<$dJs.F
+JcDYJrrAhoJ,~>
+JcFm4rr at oUq#H!GdJrD/s8;oks763Ws60LCs5*e._uK%SnUpXjkCrRpm6KDj[6FTjmlp>lq`]T2
+JcC<$JcF-tr;_EKVuQbsU]5i~>
+JcFm4rrA,[qZ)3IaoCK%s82iis7+52mt14`mt1"\qh4Qnm6L]'q18KpiBOS2rrDXSo7$L!JcC<$
+JcC<$bQ%M at JcDeNrrAhoJ,~>
+JcFm4rrA,[qZ)3IaoC8taoAF at rVQWks7u]is7ZKcs7?9\s7#XZqsOLOs6TdOs6BXKs60LGs5s at C
+s5X(;qr.M3s53k5s5!_1qqM)'s4RG)s4@;%rRLqts3q"rrR(Gfs3L_jrQYAdrQG5`rQ5)\s2Y->
+s2=rRs1nZKs1SHEs1/0gs53k3s4[M*s474ts,m>>s,R,/JcC<$JcC<$bQ%M at JcDeNrrAhoJ,~>
+JcFm4rrA,[qZ)3IaoCK%s82iis7+52mt14`mt1"\qh4Qnm6L]'q18KpiBOS2rrDXSo7$L!JcC<$
+JcC<$bQ%M at JcDeNrrAhoJ,~>
+JcFm4rrA,[qZ)3IaoCK%s82iis7+52mt14`mt1"\qh4Qnm6L]'q18KpiBOS2rrDXSo7$L!JcC<$
+JcC<$bQ%M at JcDeNrrAhoJ,~>
+JcFm4rrA,[qZ)3IaoC8taoAF at rVQWks7u]is7ZKcs7?9\s7#XZqsOLOs6TdOs6BXKs60LGs5s at C
+s5X(;qr.M3s53k5s5!_1qqM)'s4RG)s4@;%rRLqts3q"rrR(Gfs3L_jrQYAdrQG5`rQ5)\s2Y->
+s2=rRs1nZKs1SHEs1/0gs53k3s4[M*s474ts,m>>s,R,/JcC<$JcC<$bQ%M at JcDeNrrAhoJ,~>
+JcFm4rrA,[qZ)3IaoCK%s82iis7+52mt14`mt1"\qh4Qnm6L]'q18KpiBOS2rrDXSo7$L!JcC<$
+JcC<$bQ%M at JcDeNrrAhoJ,~>
+JcFm4rrADcq#H!G_>i]tdJs6#qh4j!on)4TgOf<RnNZu'nUUXhlT_F6rrDdWo7$L!JcC<$JcC<$
+_uKZ8JcDqRrrAhoJ,~>
+JcFm4rrADcq#H!G_>i]tdJod:s8)ckrV6Eds7QE`s7,FSs6TdOs6BXKs60LFs5j:As5X.<s5<q7
+s5<k5rSIS1rS7G-s4[G)rRh/%rRV#!s4%"rs3gqprQtMhrQbGfqoo)`s2t;^rQ,#Ys2G#VrrE)8
+s1eTJs1JBCs5X.<s5*e2s4[M*s4..5s,[2:s+>n&JcC<$JcEXfr;_EKYQ+V&U]5i~>
+JcFm4rrADcq#H!G_>i]tdJs6#qh4j!on)4TgOf<RnNZu'nUUXhlT_F6rrDdWo7$L!JcC<$JcC<$
+_uKZ8JcDqRrrAhoJ,~>
+JcFm4rrADcq#H!G_>i]tdJs6#qh4j!on)4TgOf<RnNZu'nUUXhlT_F6rrDdWo7$L!JcC<$JcC<$
+_uKZ8JcDqRrrAhoJ,~>
+JcFm4rrADcq#H!G_>i]tdJod:s8)ckrV6Eds7QE`s7,FSs6TdOs6BXKs60LFs5j:As5X.<s5<q7
+s5<k5rSIS1rS7G-s4[G)rRh/%rRV#!s4%"rs3gqprQtMhrQbGfqoo)`s2t;^rQ,#Ys2G#VrrE)8
+s1eTJs1JBCs5X.<s5*e2s4[M*s4..5s,[2:s+>n&JcC<$JcEXfr;_EKYQ+V&U]5i~>
+JcFm4rrADcq#H!G_>i]tdJs6#qh4j!on)4TgOf<RnNZu'nUUXhlT_F6rrDdWo7$L!JcC<$JcC<$
+_uKZ8JcDqRrrAhoJ,~>
+JcFm4rrA\kq#H!G\,Yjpg&M)0s,$]0rJ(9)qh4p#q1?50q1/'$q1.j^o09-:rrDp[o7$EtJcC<$
+JcC<$^&S$2JcE(VrrAhoJ,~>
+JcFm4rrA\kq#H!G\,Yjpg&I36rV6Ees7ZKbs7?9\jo5;Bs5X.:s4mY1rSRY3s4mY/s4mS/rS7G-
+s4[G)s4I;%s47/!s4%(trR1Yls3U_js3CSfrQP;brQ>)\rQ,#Zs2P)Xs2=lQrrE)6s1JBCs5j:?
+s5<q6s4mY.s4@::s-!DEs+gW)JcC<$JcC<$^&S$2JcE(VrrAhoJ,~>
+JcFm4rrA\kq#H!G\,Yjpg&M)0s,$]0rJ(9)qh4p#q1?50q1/'$q1.j^o09-:rrDp[o7$EtJcC<$
+JcC<$^&S$2JcE(VrrAhoJ,~>
+JcFm4rrA\kq#H!G\,Yjpg&M)0s,$]0rJ(9)qh4p#q1?50q1/'$q1.j^o09-:rrDp[o7$EtJcC<$
+JcC<$^&S$2JcE(VrrAhoJ,~>
+JcFm4rrA\kq#H!G\,Yjpg&I36rV6Ees7ZKbs7?9\jo5;Bs5X.:s4mY1rSRY3s4mY/s4mS/rS7G-
+s4[G)s4I;%s47/!s4%(trR1Yls3U_js3CSfrQP;brQ>)\rQ,#Zs2P)Xs2=lQrrE)6s1JBCs5j:?
+s5<q6s4mY.s4@::s-!DEs+gW)JcC<$JcC<$^&S$2JcE(VrrAhoJ,~>
+JcFm4rrA\kq#H!G\,Yjpg&M)0s,$]0rJ(9)qh4p#q1?50q1/'$q1.j^o09-:rrDp[o7$EtJcC<$
+JcC<$^&S$2JcE(VrrAhoJ,~>
+JcFm4rrAnqqZ)3IXoJ(nh>dM>s-!DDs,[2>s,?u8s,$]0rJ(9)qh5!%rIX]n]7BQ=gOK0NV*=nZ
+msb'rJcC<$JcC<$[K$1*JcE4ZrrAhoJ,~>
+JcFm4rrAnqqZ)3IXoJ(nh>`90s7cKcs7QE`s7+_?s4@;(rRh/'q:bl%s4IA'rRV#!rRCkrrR1_n
+rQtSjrQbGfs31Gbqo\r\rQ+rXrPnlVs2=rTs2+fPs1nX7s6fpMs5a4>s5<q6s4mY-s4746s-!DB
+s+>n&JcC<$JcE.Xr;_EK\,ZI.U]5i~>
+JcFm4rrAnqqZ)3IXoJ(nh>dM>s-!DDs,[2>s,?u8s,$]0rJ(9)qh5!%rIX]n]7BQ=gOK0NV*=nZ
+msb'rJcC<$JcC<$[K$1*JcE4ZrrAhoJ,~>
+JcFm4rrAnqqZ)3IXoJ(nh>dM>s-!DDs,[2>s,?u8s,$]0rJ(9)qh5!%rIX]n]7BQ=gOK0NV*=nZ
+msb'rJcC<$JcC<$[K$1*JcE4ZrrAhoJ,~>
+JcFm4rrAnqqZ)3IXoJ(nh>`90s7cKcs7QE`s7+_?s4@;(rRh/'q:bl%s4IA'rRV#!rRCkrrR1_n
+rQtSjrQbGfs31Gbqo\r\rQ+rXrPnlVs2=rTs2+fPs1nX7s6fpMs5a4>s5<q6s4mY-s4746s-!DB
+s+>n&JcC<$JcE.Xr;_EK\,ZI.U]5i~>
+JcFm4rrAnqqZ)3IXoJ(nh>dM>s-!DDs,[2>s,?u8s,$]0rJ(9)qh5!%rIX]n]7BQ=gOK0NV*=nZ
+msb'rJcC<$JcC<$[K$1*JcE4ZrrAhoJ,~>
+JcFm4rrB2$q#H!GVuQSliW&qKs-s%Vs-NbNs-3PHs,d8As,I&;s,-i5rJ1?+rIt3's+C9%s+.q8
+o7-L!j+$BDYs/,8rrD_ at pHF0.JcC<$JcDkPqZ)3I^&S*4U]5i~>
+JcFm4rrB2$q#H!GVuQSliW"K.s8Muis7H?_s7+A5s47/#s4IA'rRV#!s4%"rs3gkns3Uels3CYh
+s31Mdq9&`Zq8iTVqo8TRs2=lQs2"`Ns763ZrrE)`s5s at As5<q5s4dR?s-3PGs,d8;JcC<$JcC<$
+XoJ7uJcEF`rrAhoJ,~>
+JcFm4rrB2$q#H!GVuQSliW&qKs-s%Vs-NbNs-3PHs,d8As,I&;s,-i5rJ1?+rIt3's+C9%s+.q8
+o7-L!j+$BDYs/,8rrD_ at pHF0.JcC<$JcDkPqZ)3I^&S*4U]5i~>
+JcFm4rrB2$q#H!GVuQSliW&qKs-s%Vs-NbNs-3PHs,d8As,I&;s,-i5rJ1?+rIt3's+C9%s+.q8
+o7-L!j+$BDYs/,8rrD_ at pHF0.JcC<$JcDkPqZ)3I^&S*4U]5i~>
+JcFm4rrB2$q#H!GVuQSliW"K.s8Muis7H?_s7+A5s47/#s4IA'rRV#!s4%"rs3gkns3Uels3CYh
+s31Mdq9&`Zq8iTVqo8TRs2=lQs2"`Ns763ZrrE)`s5s at As5<q5s4dR?s-3PGs,d8;JcC<$JcC<$
+XoJ7uJcEF`rrAhoJ,~>
+JcFm4rrB2$q#H!GVuQSliW&qKs-s%Vs-NbNs-3PHs,d8As,I&;s,-i5rJ1?+rIt3's+C9%s+.q8
+o7-L!j+$BDYs/,8rrD_ at pHF0.JcC<$JcDkPqZ)3I^&S*4U]5i~>
+PlLOZg].9R[K$%&JcD;@s8M'Ys/,gks.TIbs.'+Xs-`nRs-<VKs-!DDs,[2>s,?u8s+pW/rJ(?(
+eUZ%sq*41pfm^h&o7$]>q0r!#JcC<$JcC<$V>pJoJcERdrrAhoJ,~>
+PlLOZg].9R[K$%&JcD;@s8M'YJc>KEqt'jY_uB\drRCkrs3gkls3:Sfs3(5[rQ+fTpW!0NrP\ZP
+s7lWfs7QE`s7$'Vs6Tacs5j:?s53k3s-WhNs,m>As,-i/JcC<$JcC<$V>pJoJcERdrrAhoJ,~>
+PlLOZg].9R[K$%&JcD;@s8M'Ys/,gks.TIbs.'+Xs-`nRs-<VKs-!DDs,[2>s,?u8s+pW/rJ(?(
+eUZ%sq*41pfm^h&o7$]>q0r!#JcC<$JcC<$V>pJoJcERdrrAhoJ,~>
+PlLOZg].9R[K$%&JcD;@s8M'Ys/,gks.TIbs.'+Xs-`nRs-<VKs-!DDs,[2>s,?u8s+pW/rJ(?(
+eUZ%sq*41pfm^h&o7$]>q0r!#JcC<$JcC<$V>pJoJcERdrrAhoJ,~>
+PlLOZg].9R[K$%&JcD;@s8M'YJc>KEqt'jY_uB\drRCkrs3gkls3:Sfs3(5[rQ+fTpW!0NrP\ZP
+s7lWfs7QE`s7$'Vs6Tacs5j:?s53k3s-WhNs,m>As,-i/JcC<$JcC<$V>pJoJcERdrrAhoJ,~>
+PlLOZg].9R[K$%&JcD;@s8M'Ys/,gks.TIbs.'+Xs-`nRs-<VKs-!DDs,[2>s,?u8s+pW/rJ(?(
+eUZ%sq*41pfm^h&o7$]>q0r!#JcC<$JcC<$V>pJoJcERdrrAhoJ,~>
+QN-UXh>dKT]Dqa.JcC<$qu?]'s0)I&s/>sos.fUfs.97\s-itTs-NbNs-3PHs,d8As,I&;s,$c2
+s+LE(qgmjZ_ghPJnUJH*h*1"NrrE"Hofds,JcC<$JcD;@r;_EK`W,r<U]5i~>
+QN-UXh>dKT]Dqa.JcC<$qu;6HoD\XWZi:!ArP\`Rqo&NRo>LODs8N&ss8;ons7u]hs7ZKbs763[
+s6p!Ts6BUas5F"7s-NbLs,m>Bs,?u6JcC<$JcC<$ScAWgJcE^hrrAhoJ,~>
+QN-UXh>dKT]Dqa.JcC<$qu?]'s0)I&s/>sos.fUfs.97\s-itTs-NbNs-3PHs,d8As,I&;s,$c2
+s+LE(qgmjZ_ghPJnUJH*h*1"NrrE"Hofds,JcC<$JcD;@r;_EK`W,r<U]5i~>
+QN-UXh>dKT]Dqa.JcC<$qu?]'s0)I&s/>sos.fUfs.97\s-itTs-NbNs-3PHs,d8As,I&;s,$c2
+s+LE(qgmjZ_ghPJnUJH*h*1"NrrE"Hofds,JcC<$JcD;@r;_EK`W,r<U]5i~>
+QN-UXh>dKT]Dqa.JcC<$qu;6HoD\XWZi:!ArP\`Rqo&NRo>LODs8N&ss8;ons7u]hs7ZKbs763[
+s6p!Ts6BUas5F"7s-NbLs,m>Bs,?u6JcC<$JcC<$ScAWgJcE^hrrAhoJ,~>
+QN-UXh>dKT]Dqa.JcC<$qu?]'s0)I&s/>sos.fUfs.97\s-itTs-NbNs-3PHs,d8As,I&;s,$c2
+s+LE(qgmjZ_ghPJnUJH*h*1"NrrE"Hofds,JcC<$JcD;@r;_EK`W,r<U]5i~>
+R/d*bq>^BnhuE]V_uKN4JcC<$qu?]=s2=rPs1/0:s0)I&s/>sos.fUes.97[s-`nSs-E\Ms-*JD
+s,I&9s+gW-rIXiromk;:rI4'^rBC6Gq1!sErI4bHofds,JcC<$JcD#8r;_EKaoDA at U]5i~>
+R/d*bq>^BnhuE]V_uKN4JcC<$qu;6HmJd.TrU5mJs8Duqs8)cks7lWgs7ZKbs7?9\s6fpRs69RF
+rrE(cs-*JFs,[2>s,2I.JcC<$JcD#8r;_EKaoDA at U]5i~>
+R/d*bq>^BnhuE]V_uKN4JcC<$qu?]=s2=rPs1/0:s0)I&s/>sos.fUes.97[s-`nSs-E\Ms-*JD
+s,I&9s+gW-rIXiromk;:rI4'^rBC6Gq1!sErI4bHofds,JcC<$JcD#8r;_EKaoDA at U]5i~>
+R/d*bq>^BnhuE]V_uKN4JcC<$qu?]=s2=rPs1/0:s0)I&s/>sos.fUes.97[s-`nSs-E\Ms-*JD
+s,I&9s+gW-rIXiromk;:rI4'^rBC6Gq1!sErI4bHofds,JcC<$JcD#8r;_EKaoDA at U]5i~>
+R/d*bq>^BnhuE]V_uKN4JcC<$qu;6HmJd.TrU5mJs8Duqs8)cks7lWgs7ZKbs7?9\s6fpRs69RF
+rrE(cs-*JFs,[2>s,2I.JcC<$JcD#8r;_EKaoDA at U]5i~>
+R/d*bq>^BnhuE]V_uKN4JcC<$qu?]=s2=rPs1/0:s0)I&s/>sos.fUes.97[s-`nSs-E\Ms-*JD
+s,I&9s+gW-rIXiromk;:rI4'^rBC6Gq1!sErI4bHofds,JcC<$JcD#8r;_EKaoDA at U]5i~>
+R/d*bq>^BnhuE]VbQ%A<JcC<$p](9 at s3Ueis2b5Ys1eTEs0Vg/s/Q*ts/#ais.KC_s-itSs-*JE
+s,?u8s+gW.s+L?'s+:-!q1-qDh1#;dJU[9 at rBC5]q*'B0JcC<$JcC`0r;_EKc2[eDU]5i~>
+R/d*bq>^BnhuE]VbQ%A<JcC<$p]#gDli-qPs6GgHrVccos82ims7u]hs7ZKas7--Xs6TdMs6'EN
+s-EZbs-!DDs,R,<JcC<$JcC<$NW8qWJcF!prrAhoJ,~>
+R/d*bq>^BnhuE]VbQ%A<JcC<$p](9 at s3Ueis2b5Ys1eTEs0Vg/s/Q*ts/#ais.KC_s-itSs-*JE
+s,?u8s+gW.s+L?'s+:-!q1-qDh1#;dJU[9 at rBC5]q*'B0JcC<$JcC`0r;_EKc2[eDU]5i~>
+R/d*bq>^BnhuE]VbQ%A<JcC<$p](9 at s3Ueis2b5Ys1eTEs0Vg/s/Q*ts/#ais.KC_s-itSs-*JE
+s,?u8s+gW.s+L?'s+:-!q1-qDh1#;dJU[9 at rBC5]q*'B0JcC<$JcC`0r;_EKc2[eDU]5i~>
+R/d*bq>^BnhuE]VbQ%A<JcC<$p]#gDli-qPs6GgHrVccos82ims7u]hs7ZKas7--Xs6TdMs6'EN
+s-EZbs-!DDs,R,<JcC<$JcC<$NW8qWJcF!prrAhoJ,~>
+R/d*bq>^BnhuE]VbQ%A<JcC<$p](9 at s3Ueis2b5Ys1eTEs0Vg/s/Q*ts/#ais.KC_s-itSs-*JE
+s,?u8s+gW.s+L?'s+:-!q1-qDh1#;dJU[9 at rBC5]q*'B0JcC<$JcC`0r;_EKc2[eDU]5i~>
+RfE<dp&FsjiW&oXdJs(DJcC<$oDe^8s3CYfs2Y/Ws1eTGs1&*9s/uC%s/>sms.01Vs-*JEs,?u7
+s+gW/s+UK+s+C3#rIO]niIB1&s#u!_qgS3%rrE!]JcC<$JcC<$L&_#MJcF4!rrAhoJ,~>
+RfE<dp&FsjiW&oXdJs(DJcC<$oDaC at kPkMAPQ(OZrVZWks7u]gs7H?^s7$'Vs.B=]s-`nQs-<VI
+rrE([s,;O/JcC<$JcCH(qZ)3Ie,TFJU]5i~>
+RfE<dp&FsjiW&oXdJs(DJcC<$oDe^8s3CYfs2Y/Ws1eTGs1&*9s/uC%s/>sms.01Vs-*JEs,?u7
+s+gW/s+UK+s+C3#rIO]niIB1&s#u!_qgS3%rrE!]JcC<$JcC<$L&_#MJcF4!rrAhoJ,~>
+RfE<dp&FsjiW&oXdJs(DJcC<$oDe^8s3CYfs2Y/Ws1eTGs1&*9s/uC%s/>sms.01Vs-*JEs,?u7
+s+gW/s+UK+s+C3#rIO]niIB1&s#u!_qgS3%rrE!]JcC<$JcC<$L&_#MJcF4!rrAhoJ,~>
+RfE<dp&FsjiW&oXdJs(DJcC<$oDaC at kPkMAPQ(OZrVZWks7u]gs7H?^s7$'Vs.B=]s-`nQs-<VI
+rrE([s,;O/JcC<$JcCH(qZ)3Ie,TFJU]5i~>
+RfE<dp&FsjiW&oXdJs(DJcC<$oDe^8s3CYfs2Y/Ws1eTGs1&*9s/uC%s/>sms.01Vs-*JEs,?u7
+s+gW/s+UK+s+C3#rIO]niIB1&s#u!_qgS3%rrE!]JcC<$JcC<$L&_#MJcF4!rrAhoJ,~>
+RfE<dp&FsjiW&oXg&LjJJcC<$n,N:4s3Ueis2k;[s2+fMs186=s0D[&s.o[es-WhMs,d8>s,-i4
+s+gW/s+UK+s+C?'qgn?hm=0\9_1(i:rr at WMJcC<$JcC<$qu?TpJcF@%rrAhoJ,~>
+RfE<dp&FsjiW&oXg&LjJJcC<$n,It<Jc>KEqu-Eis8)cjs7QE`s7-,]s.01Zs-itTs-E\Js,d8A
+rr at WMJcC<$JcC<$qu?TpJcF@%rrAhoJ,~>
+RfE<dp&FsjiW&oXg&LjJJcC<$n,N:4s3Ueis2k;[s2+fMs186=s0D[&s.o[es-WhMs,d8>s,-i4
+s+gW/s+UK+s+C?'qgn?hm=0\9_1(i:rr at WMJcC<$JcC<$qu?TpJcF@%rrAhoJ,~>
+RfE<dp&FsjiW&oXg&LjJJcC<$n,N:4s3Ueis2k;[s2+fMs186=s0D[&s.o[es-WhMs,d8>s,-i4
+s+gW/s+UK+s+C?'qgn?hm=0\9_1(i:rr at WMJcC<$JcC<$qu?TpJcF@%rrAhoJ,~>
+RfE<dp&FsjiW&oXg&LjJJcC<$n,It<Jc>KEqu-Eis8)cjs7QE`s7-,]s.01Zs-itTs-E\Js,d8A
+rr at WMJcC<$JcC<$qu?TpJcF@%rrAhoJ,~>
+RfE<dp&FsjiW&oXg&LjJJcC<$n,N:4s3Ueis2k;[s2+fMs186=s0D[&s.o[es-WhMs,d8>s,-i4
+s+gW/s+UK+s+C?'qgn?hm=0\9_1(i:rr at WMJcC<$JcC<$qu?TpJcF@%rrAhoJ,~>
+RfE<dp&FsjiW&oXiW&]RJcC<$jo>;,s3CYfs2Y/Xs1nZIs0r$#s.'+Vs-<VJs,m>Bs,R,<s,-i4
+s+^Q-s+LE)rIY'#o764XJUYXgk<AqGrr at WMJcC<$JcC<$p](0lJcFL)rrAhoJ,~>
+RfE<dp&FsjiW&oXiW&]RJcC<$jo9o2Jc>?As8Dups7u\is.]Ods.97\s-s%Ws-`nSs-!DEs,[2=
+s8W*!JcC<$JcC<$JcGKEr;_EKg].9RU]5i~>
+RfE<dp&FsjiW&oXiW&]RJcC<$jo>;,s3CYfs2Y/Xs1nZIs0r$#s.'+Vs-<VJs,m>Bs,R,<s,-i4
+s+^Q-s+LE)rIY'#o764XJUYXgk<AqGrr at WMJcC<$JcC<$p](0lJcFL)rrAhoJ,~>
+RfE<dp&FsjiW&oXiW&]RJcC<$jo>;,s3CYfs2Y/Xs1nZIs0r$#s.'+Vs-<VJs,m>Bs,R,<s,-i4
+s+^Q-s+LE)rIY'#o764XJUYXgk<AqGrr at WMJcC<$JcC<$p](0lJcFL)rrAhoJ,~>
+RfE<dp&FsjiW&oXiW&]RJcC<$jo9o2Jc>?As8Dups7u\is.]Ods.97\s-s%Ws-`nSs-!DEs,[2=
+s8W*!JcC<$JcC<$JcGKEr;_EKg].9RU]5i~>
+RfE<dp&FsjiW&oXiW&]RJcC<$jo>;,s3CYfs2Y/Xs1nZIs0r$#s.'+Vs-<VJs,m>Bs,R,<s,-i4
+s+^Q-s+LE)rIY'#o764XJUYXgk<AqGrr at WMJcC<$JcC<$p](0lJcFL)rrAhoJ,~>
+RfE<dp&FsjiW&oXl2UPZJcC<$g].<#s31Mas1866s.]O^s-WhQs-<VJs-!DDs,R,=s,6o7s+p]0
+s+UE)rIb-%rIOcpl$n85eUHC>q>^HpJcC<$JcC<$JcG?Ar;_EKhuE]VU]5i~>
+RfE<dp&FsjiW&oXl2UPZJcC<$g])j(Jc>]KqkjChs.fUfs.KCas.97]s.'+Xs-`nQs-3PHs,[!U
+rr at WMJcC<$JcC<$oDeahJcFX-rrAhoJ,~>
+RfE<dp&FsjiW&oXl2UPZJcC<$g].<#s31Mas1866s.]O^s-WhQs-<VJs-!DDs,R,=s,6o7s+p]0
+s+UE)rIb-%rIOcpl$n85eUHC>q>^HpJcC<$JcC<$JcG?Ar;_EKhuE]VU]5i~>
+RfE<dp&FsjiW&oXl2UPZJcC<$g].<#s31Mas1866s.]O^s-WhQs-<VJs-!DDs,R,=s,6o7s+p]0
+s+UE)rIb-%rIOcpl$n85eUHC>q>^HpJcC<$JcC<$JcG?Ar;_EKhuE]VU]5i~>
+RfE<dp&FsjiW&oXl2UPZJcC<$g])j(Jc>]KqkjChs.fUfs.KCas.97]s.'+Xs-`nQs-3PHs,[!U
+rr at WMJcC<$JcC<$oDeahJcFX-rrAhoJ,~>
+RfE<dp&FsjiW&oXl2UPZJcC<$g].<#s31Mas1866s.]O^s-WhQs-<VJs-!DDs,R,=s,6o7s+p]0
+s+UE)rIb-%rIOcpl$n85eUHC>q>^HpJcC<$JcC<$JcG?Ar;_EKhuE]VU]5i~>
+RfE<dp&FsjoDegjnc/Uhn,N7bJcC<$dJs6Ls.o[as-itTs-NbOs-<VJs,m>Bs,R,<s,-i5rJ1E-
+s+UK+s+C3#rIOotjaWPEq`aIt]0>ofrr at WMJcC<$JcC<$n,N=dJcFd1rrAhoJ,~>
+RfE<dp&FsjoDegjnc/Uhn,N7bJcC<$dJnds_>a>En,E9_h51.IrM'=cs.KCas.97]s-s%Ws-WhQ
+s-3PHs,QdPrr at WMJcC<$JcC<$n,N=dJcFd1rrAhoJ,~>
+RfE<dp&FsjoDegjnc/Uhn,N7bJcC<$dJs6Ls.o[as-itTs-NbOs-<VJs,m>Bs,R,<s,-i5rJ1E-
+s+UK+s+C3#rIOotjaWPEq`aIt]0>ofrr at WMJcC<$JcC<$n,N=dJcFd1rrAhoJ,~>
+RfE<dp&FsjoDegjnc/Uhn,N7bJcC<$dJs6Ls.o[as-itTs-NbOs-<VJs,m>Bs,R,<s,-i5rJ1E-
+s+UK+s+C3#rIOotjaWPEq`aIt]0>ofrr at WMJcC<$JcC<$n,N=dJcFd1rrAhoJ,~>
+RfE<dp&FsjoDegjnc/Uhn,N7bJcC<$dJnds_>a>En,E9_h51.IrM'=cs.KCas.97]s-s%Ws-WhQ
+s-3PHs,QdPrr at WMJcC<$JcC<$n,N=dJcFd1rrAhoJ,~>
+RfE<dp&FsjoDegjnc/Uhn,N7bJcC<$dJs6Ls.o[as-itTs-NbOs-<VJs,m>Bs,R,<s,-i5rJ1E-
+s+UK+s+C3#rIOotjaWPEq`aIt]0>ofrr at WMJcC<$JcC<$n,N=dJcFd1rrAhoJ,~>
+RfE<dp&Fsjnc/Ofp&G$lp]($hJcC<$aoDC/s-WhQs-E\Ms-*JGs,m>Bs,I&;s,-i5s+pW.rIt9)
+s+C?'qgn]rmsgmWPs4[:rr at WMJcC<$JcC<$li6n`JcFp5rrAhoJ,~>
+RfE<dp&Fsjnc/Ofp&G$lp]($hJcC<$ao?qkfDbfbs1\NHs1JBDs1/*<s0r$7rNZ=$s/H$soqp]E
+rM9IgrM'=cs.KCas.97]s-s%Ws-`nRs-3PFn,NCfJcC<$JcC<$JcG'9r;_EKkPtP^U]5i~>
+RfE<dp&Fsjnc/Ofp&G$lp]($hJcC<$aoDC/s-WhQs-E\Ms-*JGs,m>Bs,I&;s,-i5s+pW.rIt9)
+s+C?'qgn]rmsgmWPs4[:rr at WMJcC<$JcC<$li6n`JcFp5rrAhoJ,~>
+RfE<dp&Fsjnc/Ofp&G$lp]($hJcC<$aoDC/s-WhQs-E\Ms-*JGs,m>Bs,I&;s,-i5s+pW.rIt9)
+s+C?'qgn]rmsgmWPs4[:rr at WMJcC<$JcC<$li6n`JcFp5rrAhoJ,~>
+RfE<dp&Fsjnc/Ofp&G$lp]($hJcC<$ao?qkfDbfbs1\NHs1JBDs1/*<s0r$7rNZ=$s/H$soqp]E
+rM9IgrM'=cs.KCas.97]s-s%Ws-`nRs-3PFn,NCfJcC<$JcC<$JcG'9r;_EKkPtP^U]5i~>
+RfE<dp&Fsjnc/Ofp&G$lp]($hJcC<$aoDC/s-WhQs-E\Ms-*JGs,m>Bs,I&;s,-i5s+pW.rIt9)
+s+C?'qgn]rmsgmWPs4[:rr at WMJcC<$JcC<$li6n`JcFp5rrAhoJ,~>
+RfE<dp&FsjmJm%`qu?Zrs8VlpJcC<$^]4=us-*JGs,m>Cs,[2?s,I&;s,6o6s+p]1s+UK+rIb'#
+rIOcpnUI6]Ps4I4rr at WMJcC<$JcC<$kPtDZJcG-;rrAhoJ,~>
+RfE<dp&FsjmJm%`qu?Zrs8VlpJcC<$^]/lahu<Yjs1SHFs186 at s1&*;s0Vg4s0;U+s/c1"s/Q*u
+s/>sqpSR8Qoq_J[rM'=bs.B=_s.'+Ys-itUs-E\Jl2Ub`JcC<$JcC<$JcFp5qZ)3ImJm1dU]5i~>
+RfE<dp&FsjmJm%`qu?Zrs8VlpJcC<$^]4=us-*JGs,m>Cs,[2?s,I&;s,6o6s+p]1s+UK+rIb'#
+rIOcpnUI6]Ps4I4rr at WMJcC<$JcC<$kPtDZJcG-;rrAhoJ,~>
+RfE<dp&FsjmJm%`qu?Zrs8VlpJcC<$^]4=us-*JGs,m>Cs,[2?s,I&;s,6o6s+p]1s+UK+rIb'#
+rIOcpnUI6]Ps4I4rr at WMJcC<$JcC<$kPtDZJcG-;rrAhoJ,~>
+RfE<dp&FsjmJm%`qu?Zrs8VlpJcC<$^]/lahu<Yjs1SHFs186 at s1&*;s0Vg4s0;U+s/c1"s/Q*u
+s/>sqpSR8Qoq_J[rM'=bs.B=_s.'+Ys-itUs-E\Jl2Ub`JcC<$JcC<$JcFp5qZ)3ImJm1dU]5i~>
+RfE<dp&FsjmJm%`qu?Zrs8VlpJcC<$^]4=us-*JGs,m>Cs,[2?s,I&;s,6o6s+p]1s+UK+rIb'#
+rIOcpnUI6]Ps4I4rr at WMJcC<$JcC<$kPtDZJcG-;rrAhoJ,~>
+R/d*bq>^<lkPtJ\s8W#tJcC<$[K$8erJgi9rJUW3s,$c3s+gW/s+UK*s+:3#oml^bTmi7jj8],Z
+JcC<$JcC<$JcF^/r;_EKnc/UhU]5i~>
+R/d*bq>^<lkPtJ\s8W#tJcC<$[JtgWkPkLrs1SHFs186?s0r$:s0Vg2s02O+s/l=&s/Z$rs/>mo
+q53n_l(n3Os.]Oes.KCas.01[s-s%Vs-NbLj8],ZJcC<$JcC<$JcF^/r;_EKnc/UhU]5i~>
+R/d*bq>^<lkPtJ\s8W#tJcC<$[K$8erJgi9rJUW3s,$c3s+gW/s+UK*s+:3#oml^bTmi7jj8],Z
+JcC<$JcC<$JcF^/r;_EKnc/UhU]5i~>
+R/d*bq>^<lkPtJ\s8W#tJcC<$[K$8erJgi9rJUW3s,$c3s+gW/s+UK*s+:3#oml^bTmi7jj8],Z
+JcC<$JcC<$JcF^/r;_EKnc/UhU]5i~>
+R/d*bq>^<lkPtJ\s8W#tJcC<$[JtgWkPkLrs1SHFs186?s0r$:s0Vg2s02O+s/l=&s/Z$rs/>mo
+q53n_l(n3Os.]Oes.KCas.01[s-s%Vs-NbLj8],ZJcC<$JcC<$JcF^/r;_EKnc/UhU]5i~>
+R/d*bq>^<lkPtJ\s8W#tJcC<$[K$8erJgi9rJUW3s,$c3s+gW/s+UK*s+:3#oml^bTmi7jj8],Z
+JcC<$JcC<$JcF^/r;_EKnc/UhU]5i~>
+R/d*bq>^BniW&iVs8W#tJcC<$\,ZD`rJ:?+s+^Q-s+LE)s+:-!pOMpdUOJIlh>dKTJcC<$JcC<$
+JcFR+r;_EKp&G$lU]5i~>
+R/d*bq>^BniW&iVs8W#tJcC<$\,V$Yn,E@(s1eTHs186 at s0r$9s0Vg3s02O+s/l7#s/Q*us/>ak
+rMK7akG8!Ms.]Ods.B=_s.01Zs-itTs-2@>rr at WMJcC<$JcC<$h>dERJcGECrrAhoJ,~>
+R/d*bq>^BniW&iVs8W#tJcC<$\,ZD`rJ:?+s+^Q-s+LE)s+:-!pOMpdUOJIlh>dKTJcC<$JcC<$
+JcFR+r;_EKp&G$lU]5i~>
+R/d*bq>^BniW&iVs8W#tJcC<$\,ZD`rJ:?+s+^Q-s+LE)s+:-!pOMpdUOJIlh>dKTJcC<$JcC<$
+JcFR+r;_EKp&G$lU]5i~>
+R/d*bq>^BniW&iVs8W#tJcC<$\,V$Yn,E@(s1eTHs186 at s0r$9s0Vg3s02O+s/l7#s/Q*us/>ak
+rMK7akG8!Ms.]Ods.B=_s.01Zs-itTs-2@>rr at WMJcC<$JcC<$h>dERJcGECrrAhoJ,~>
+R/d*bq>^BniW&iVs8W#tJcC<$\,ZD`rJ:?+s+^Q-s+LE)s+:-!pOMpdUOJIlh>dKTJcC<$JcC<$
+JcFR+r;_EKp&G$lU]5i~>
+QN-OVkPtDZp](0lJcC<$\c;V_rIt3'rIb-%q18?lmsh<cR6K1$rr at WMJcC<$JcC<$g&M!NJcGQG
+rrAhoJ,~>
+QN-OVkPtDZp](0lJcC<$\c76[p&>!-s1\NFs1/0=s0hs7s0D[/s/uC(s/c7#rM][mrMK+]jeVdK
+s.]Oes.B=_s.01Zs-itSec5XLJcC<$JcC<$JcFF'r;_EKq>^HpU]5i~>
+QN-OVkPtDZp](0lJcC<$\c;V_rIt3'rIb-%q18?lmsh<cR6K1$rr at WMJcC<$JcC<$g&M!NJcGQG
+rrAhoJ,~>
+QN-OVkPtDZp](0lJcC<$\c;V_rIt3'rIb-%q18?lmsh<cR6K1$rr at WMJcC<$JcC<$g&M!NJcGQG
+rrAhoJ,~>
+QN-OVkPtDZp](0lJcC<$\c76[p&>!-s1\NFs1/0=s0hs7s0D[/s/uC(s/c7#rM][mrMK+]jeVdK
+s.]Oes.B=_s.01Zs-itSec5XLJcC<$JcC<$JcFF'r;_EKq>^HpU]5i~>
+QN-OVkPtDZp](0lJcC<$\c;V_rIt3'rIb-%q18?lmsh<cR6K1$rr at WMJcC<$JcC<$g&M!NJcGQG
+rrAhoJ,~>
+PlLOZli6b\mJm+bJcC<$]Dqh_rIb-%pOW-jm=20cRm,0urr at WMJcC<$JcC<$ec5RJJcG]KrrAho
+J,~>
+PlLOZli6b\mJm+bJcC<$]DmH]qu6W4s1SHDs1&*;s0Vg3s02O+s/c7#s/H$srMK+]gSFkEs.]Oe
+s.KC`s.01Zs-`nOci="FJcC<$JcC<$JcF:#r;_EKrVultU]5i~>
+PlLOZli6b\mJm+bJcC<$]Dqh_rIb-%pOW-jm=20cRm,0urr at WMJcC<$JcC<$ec5RJJcG]KrrAho
+J,~>
+PlLOZli6b\mJm+bJcC<$]Dqh_rIb-%pOW-jm=20cRm,0urr at WMJcC<$JcC<$ec5RJJcG]KrrAho
+J,~>
+PlLOZli6b\mJm+bJcC<$]DmH]qu6W4s1SHDs1&*;s0Vg3s02O+s/c7#s/H$srMK+]gSFkEs.]Oe
+s.KC`s.01Zs-`nOci="FJcC<$JcC<$JcF:#r;_EKrVultU]5i~>
+PlLOZli6b\mJm+bJcC<$]Dqh_rIb-%pOW-jm=20cRm,0urr at WMJcC<$JcC<$ec5RJJcG]KrrAho
+J,~>
+JcGNFrrD$Xr;_EKJcE@^pOW'hnUIBaUHZZsrr at WMJcC<$JcC<$dJs.FJcG`MU]5i~>
+JcGNFrrD$Xr;_EKJcE@^Jc>\]s1&*;s0Vg3s02O+s/c7#s/>sqrMK=ceYN5>s.TIcs.B=^s.'+X
+`W,r<JcC<$JcC<$JcF-tr;_EKrrAhoJ,~>
+JcGNFrrD$Xr;_EKJcE@^pOW'hnUIBaUHZZsrr at WMJcC<$JcC<$dJs.FJcG`MU]5i~>
+JcGNFrrD$Xr;_EKJcE@^pOW'hnUIBaUHZZsrr at WMJcC<$JcC<$dJs.FJcG`MU]5i~>
+JcGNFrrD$Xr;_EKJcE@^Jc>\]s1&*;s0Vg3s02O+s/c7#s/>sqrMK=ceYN5>s.TIcs.B=^s.'+X
+`W,r<JcC<$JcC<$JcF-tr;_EKrrAhoJ,~>
+JcGNFrrD$Xr;_EKJcE@^pOW'hnUIBaUHZZsrr at WMJcC<$JcC<$dJs.FJcG`MU]5i~>
+JcF0ur;_EKJcEF`o76@\UOK1+^&S*4JcC<$JcC<$JcF!pqZ)EOrrAhoJ,~>
+JcF0ur;_EKJcEF`L&V+\s0_m5s0;U-s/c7#s/H$rrMKIgeYN5?s.]Oes.KCas.01Zs-LG!rr at WM
+JcC<$JcC<$c2[Y at L]@ASU]5i~>
+JcF0ur;_EKJcEF`o76@\UOK1+^&S*4JcC<$JcC<$JcF!pqZ)EOrrAhoJ,~>
+JcF0ur;_EKJcEF`o76@\UOK1+^&S*4JcC<$JcC<$JcF!pqZ)EOrrAhoJ,~>
+JcF0ur;_EKJcEF`L&V+\s0_m5s0;U-s/c7#s/H$rrMKIgeYN5?s.]Oes.KCas.01Zs-LG!rr at WM
+JcC<$JcC<$c2[Y at L]@ASU]5i~>
+JcF0ur;_EKJcEF`o76@\UOK1+^&S*4JcC<$JcC<$JcF!pqZ)EOrrAhoJ,~>
+JcF$qqZ)3IJcERdrIF3`UOKO5Z2ah(JcC<$JcC<$JcEdjr;_cUrrAhoJ,~>
+JcF$qqZ)3IJcERdM>mO]s0D[0s0)I(s/Q*ts/5morMA&?s.fUgs.KCas.01[Z2ah(JcC<$JcC<$
+JcEdjr;_cUrrAhoJ,~>
+JcF$qqZ)3IJcERdrIF3`UOKO5Z2ah(JcC<$JcC<$JcEdjr;_cUrrAhoJ,~>
+JcF$qqZ)3IJcERdrIF3`UOKO5Z2ah(JcC<$JcC<$JcEdjr;_cUrrAhoJ,~>
+JcF$qqZ)3IJcERdM>mO]s0D[0s0)I(s/Q*ts/5morMA&?s.fUgs.KCas.01[Z2ah(JcC<$JcC<$
+JcEdjr;_cUrrAhoJ,~>
+JcF$qqZ)3IJcERdrIF3`UOKO5Z2ah(JcC<$JcC<$JcEdjr;_cUrrAhoJ,~>
+JcEgkr;_EKJcERdnUI0[]fr:mrr at WMJcC<$JcC<$_uKZ8O8o4[U]5i~>
+JcEgkr;_EKJcERdO8f0bs02O+s/c7"s/5morMA8Es.fUgs.TIcs.97\V>pPqJcC<$JcC<$JcEXf
+r;_oYrrAhoJ,~>
+JcEgkr;_EKJcERdnUI0[]fr:mrr at WMJcC<$JcC<$_uKZ8O8o4[U]5i~>
+JcEgkr;_EKJcERdnUI0[]fr:mrr at WMJcC<$JcC<$_uKZ8O8o4[U]5i~>
+JcEgkr;_EKJcERdO8f0bs02O+s/c7"s/5morMA8Es.fUgs.TIcs.97\V>pPqJcC<$JcC<$JcEXf
+r;_oYrrAhoJ,~>
+JcEgkr;_EKJcERdnUI0[]fr:mrr at WMJcC<$JcC<$_uKZ8O8o4[U]5i~>
+JcE[gr;_EKJcEXfrI:/_aZc'krr at WMJcC<$JcC<$^]464PQ1X_U]5i~>
+JcE[gr;_EKJcEXfPQ(Tds/uC's/H$qs/"VKs.fUfs.KCas.,MVrr at WMJcC<$JcC<$^]464PQ1X_
+U]5i~>
+JcE[gr;_EKJcEXfrI:/_aZc'krr at WMJcC<$JcC<$^]464PQ1X_U]5i~>
+JcE[gr;_EKJcEXfrI:/_aZc'krr at WMJcC<$JcC<$^]464PQ1X_U]5i~>
+JcE[gr;_EKJcEXfPQ(Tds/uC's/H$qs/"VKs.fUfs.KCas.,MVrr at WMJcC<$JcC<$^]464PQ1X_
+U]5i~>
+JcE[gr;_EKJcEXfrI:/_aZc'krr at WMJcC<$JcC<$^]464PQ1X_U]5i~>
+JcEOcr;_EKJcEXfQ[[UOL]@ASJcC<$JcC<$JcE@^r;`2arrAhoJ,~>
+JcEOcr;_EKJcEXfQi@#ds/>spl_OKSs.]Oes.KCaL]@ASJcC<$JcC<$JcE@^r;`2arrAhoJ,~>
+JcEOcr;_EKJcEXfQ[[UOL]@ASJcC<$JcC<$JcE@^r;`2arrAhoJ,~>
+JcEOcr;_EKJcEXfQ[[UOL]@ASJcC<$JcC<$JcE@^r;`2arrAhoJ,~>
+JcEOcr;_EKJcEXfQi@#ds/>spl_OKSs.]Oes.KCaL]@ASJcC<$JcC<$JcE@^r;`2arrAhoJ,~>
+JcEOcr;_EKJcEXfQ[[UOL]@ASJcC<$JcC<$JcE@^r;`2arrAhoJ,~>
+JcEC_r;_EKJcE^hRssH_JcGQGrr at WMJcC<$JcC<$\,ZC,S,`KgU]5i~>
+JcEC_r;_EKJcE^hS,WGcs/#Ugq4mtas.TIcs.B=ZJcGQGrr at WMJcC<$JcC<$\,ZC,S,`KgU]5i~>
+JcEC_r;_EKJcE^hRssH_JcGQGrr at WMJcC<$JcC<$\,ZC,S,`KgU]5i~>
+JcEC_r;_EKJcE^hRssH_JcGQGrr at WMJcC<$JcC<$\,ZC,S,`KgU]5i~>
+JcEC_r;_EKJcE^hS,WGcs/#Ugq4mtas.TIcs.B=ZJcGQGrr at WMJcC<$JcC<$\,ZC,S,`KgU]5i~>
+JcEC_r;_EKJcE^hRssH_JcGQGrr at WMJcC<$JcC<$\,ZC,S,`KgU]5i~>
+JcE7[qZ)3IJcEdjTmlGoJcG-;rr at WMJcC<$JcC<$ZiBn&U&Y,mU]5i~>
+JcE7[qZ)3IJcEdjU]1;ls.oOes.]Oes.KC^s-SB;mJm1dJcC<$JcC<$JcE(VqZ*>irrAhoJ,~>
+JcE7[qZ)3IJcEdjTmlGoJcG-;rr at WMJcC<$JcC<$ZiBn&U&Y,mU]5i~>
+JcE7[qZ)3IJcEdjTmlGoJcG-;rr at WMJcC<$JcC<$ZiBn&U&Y,mU]5i~>
+JcE7[qZ)3IJcEdjU]1;ls.oOes.]Oes.KC^s-SB;mJm1dJcC<$JcC<$JcE(VqZ*>irrAhoJ,~>
+JcE7[qZ)3IJcEdjTmlGoJcG-;rr at WMJcC<$JcC<$ZiBn&U&Y,mU]5i~>
+JcE%Ur;_EKJcEdjVgeA(JcFd1rr at WMJcC<$JcC<$XoJ>"V>pPqU]5i~>
+JcE%Ur;_EKJcEdjZ2Xe%rVZ]ms8)bhs.B=]s-itSJcFd1rr at WMJcC<$JcC<$XoJ>"V>pPqU]5i~>
+JcE%Ur;_EKJcEdjVgeA(JcFd1rr at WMJcC<$JcC<$XoJ>"V>pPqU]5i~>
+JcE%Ur;_EKJcEdjVgeA(JcFd1rr at WMJcC<$JcC<$XoJ>"V>pPqU]5i~>
+JcE%Ur;_EKJcEdjZ2Xe%rVZ]ms8)bhs.B=]s-itSJcFd1rr at WMJcC<$JcC<$XoJ>"V>pPqU]5i~>
+JcE%Ur;_EKJcEdjVgeA(JcFd1rr at WMJcC<$JcC<$XoJ>"V>pPqU]5i~>
+JcDnQr;_EKJcEdjYC?@4JcFL)rr at WMJcC<$JcC<$WW2nsWW2tuU]5i~>
+JcDnQr;_EKJcEdj^&J'1s8;oos8)cjs7?9Zs-s%Us-A69g].9RJcC<$JcC<$JcD_Lr;`hsrrAho
+J,~>
+JcDnQr;_EKJcEdjYC?@4JcFL)rr at WMJcC<$JcC<$WW2nsWW2tuU]5i~>
+JcDnQr;_EKJcEdjYC?@4JcFL)rr at WMJcC<$JcC<$WW2nsWW2tuU]5i~>
+JcDnQr;_EKJcEdj^&J'1s8;oos8)cjs7?9Zs-s%Us-A69g].9RJcC<$JcC<$JcD_Lr;`hsrrAho
+J,~>
+JcDnQr;_EKJcEdjYC?@4JcFL)rr at WMJcC<$JcC<$WW2nsWW2tuU]5i~>
+ZN'RtoDeUdS,`EeJcC<$a8`Prs#u#6ec5XLJcC<$JcC<$JcDSHr;`u"rrAhoJ,~>
+ZN'RtoDeUdS,`EeJcC<$a8a9\s8Duqs82ils7lWds6p!Ss6'FAs,qs5ec5XLJcC<$JcC<$JcDSH
+r;`u"rrAhoJ,~>
+ZN'RtoDeUdS,`EeJcC<$a8`Prs#u#6ec5XLJcC<$JcC<$JcDSHr;`u"rrAhoJ,~>
+ZN'RtoDeUdS,`EeJcC<$a8`Prs#u#6ec5XLJcC<$JcC<$JcDSHr;`u"rrAhoJ,~>
+ZN'RtoDeUdS,`EeJcC<$a8a9\s8Duqs82ils7lWds6p!Ss6'FAs,qs5ec5XLJcC<$JcC<$JcDSH
+r;`u"rrAhoJ,~>
+ZN'RtoDeUdS,`EeJcC<$a8`Prs#u#6ec5XLJcC<$JcC<$JcDSHr;`u"rrAhoJ,~>
+[/]Xrp]'mdRK*3cJcC<$a8`i%s#u#6dJs4HJcC<$JcC<$JcDGDr;a,&rrAhoJ,~>
+[/]Xrp]'mdRK*3cJcC<$a8a]hs8Duqs8)cks7cQds7--Vs69REs5<q3s,2I.dJs4HJcC<$JcC<$
+JcDGDr;a,&rrAhoJ,~>
+[/]Xrp]'mdRK*3cJcC<$a8`i%s#u#6dJs4HJcC<$JcC<$JcDGDr;a,&rrAhoJ,~>
+[/]Xrp]'mdRK*3cJcC<$a8`i%s#u#6dJs4HJcC<$JcC<$JcDGDr;a,&rrAhoJ,~>
+[/]Xrp]'mdRK*3cJcC<$a8a]hs8Duqs8)cks7cQds7--Vs69REs5<q3s,2I.dJs4HJcC<$JcC<$
+JcDGDr;a,&rrAhoJ,~>
+[/]Xrp]'mdRK*3cJcC<$a8`i%s#u#6dJs4HJcC<$JcC<$JcDGDr;a,&rrAhoJ,~>
+[f?4)q>^<lqu?Tpq>^BnQiI!aJcC<$`W*u-JcEpnrr at WMJcC<$JcC<$ScAWg[K$7,U]5i~>
+[f?4)q>^<lqu?Tpq>^BnQiI!aJcC<$`W,3%p\k-hs8)cjs7cQds763Xs69RDs5<q4s3uW"bQ%SB
+JcC<$JcC<$JcD;@r;a8*rrAhoJ,~>
+[f?4)q>^<lqu?Tpq>^BnQiI!aJcC<$`W*u-JcEpnrr at WMJcC<$JcC<$ScAWg[K$7,U]5i~>
+[f?4)q>^<lqu?Tpq>^BnQiI!aJcC<$`W*u-JcEpnrr at WMJcC<$JcC<$ScAWg[K$7,U]5i~>
+[f?4)q>^<lqu?Tpq>^BnQiI!aJcC<$`W,3%p\k-hs8)cjs7cQds763Xs69RDs5<q4s3uW"bQ%SB
+JcC<$JcC<$JcD;@r;a8*rrAhoJ,~>
+[f?4)q>^<lqu?Tpq>^BnQiI!aJcC<$`W*u-JcEpnrr at WMJcC<$JcC<$ScAWg[K$7,U]5i~>
+[f?:+p&Fsjqu?Tpq>^BnPQ1L[JcC<$`W+>7JcEdjrr at WMJcC<$JcC<$RK*-a]Dqm2U]5i~>
+[f?:+p&Fsjqu?Tpq>^BnPQ1L[JcC<$`W,Q/rVc]ms82ils7lWfs7H?]s6fpQs5a4=s5*e-s3ZDt
+a8c/>JcC<$JcC<$JcD/<qZ+8.rrAhoJ,~>
+[f?:+p&Fsjqu?Tpq>^BnPQ1L[JcC<$`W+>7JcEdjrr at WMJcC<$JcC<$RK*-a]Dqm2U]5i~>
+[f?:+p&Fsjqu?Tpq>^BnPQ1L[JcC<$`W+>7JcEdjrr at WMJcC<$JcC<$RK*-a]Dqm2U]5i~>
+[f?:+p&Fsjqu?Tpq>^BnPQ1L[JcC<$`W,Q/rVc]ms82ils7lWfs7H?]s6fpQs5a4=s5*e-s3ZDt
+a8c/>JcC<$JcC<$JcD/<qZ+8.rrAhoJ,~>
+[f?:+p&Fsjqu?Tpq>^BnPQ1L[JcC<$`W+>7JcEdjrr at WMJcC<$JcC<$RK*-a]Dqm2U]5i~>
+[f?:+p&FsjrVufrp&FsjO8o.YJcC<$^]3>CJcELbrr at WMJcC<$JcC<$PQ1R]^]4<6U]5i~>
+[f?:+p&FsjrVufrp&FsjO8o.YJcC<$^]4?3rVQWks7u]hs7QE`s7--Ws6K^Ks5a4;s4W&(^]4<6
+JcC<$JcC<$JcCr6r;aV4rrAhoJ,~>
+[f?:+p&FsjrVufrp&FsjO8o.YJcC<$^]3>CJcELbrr at WMJcC<$JcC<$PQ1R]^]4<6U]5i~>
+[f?:+p&FsjrVufrp&FsjO8o.YJcC<$^]3>CJcELbrr at WMJcC<$JcC<$PQ1R]^]4<6U]5i~>
+[f?:+p&FsjrVufrp&FsjO8o.YJcC<$^]4?3rVQWks7u]hs7QE`s7--Ws6K^Ks5a4;s4W&(^]4<6
+JcC<$JcC<$JcCr6r;aV4rrAhoJ,~>
+[f?:+p&FsjrVufrp&FsjO8o.YJcC<$^]3>CJcELbrr at WMJcC<$JcC<$PQ1R]^]4<6U]5i~>
+VZ6SprVufrp&FsjMuW_UJcC<$JcC<$j8],ZJcC<$JcC<$JcCf2r;ab8rrAhoJ,~>
+VZ6SprVufrp&FsjMuW_UJcC<$JcC<$j8],ZJcC<$JcC<$JcCf2r;ab8rrAhoJ,~>
+VZ6SprVufrp&FsjMuW_UJcC<$JcC<$j8],ZJcC<$JcC<$JcCf2r;ab8rrAhoJ,~>
+VZ6SprVufrp&FsjMuW_UJcC<$JcC<$j8],ZJcC<$JcC<$JcCf2r;ab8rrAhoJ,~>
+VZ6SprVufrp&FsjMuW_UJcC<$JcC<$j8],ZJcC<$JcC<$JcCf2r;ab8rrAhoJ,~>
+VZ6SprVufrp&FsjMuW_UJcC<$JcC<$j8],ZJcC<$JcC<$JcCf2r;ab8rrAhoJ,~>
+W;lerqu?Tpp&FsjL]@;QJcC<$JcC<$kPtP^JcC<$JcC<$JcCZ.r;an<rrAhoJ,~>
+W;lerqu?Tpp&FsjL]@;QJcC<$JcC<$kPtP^JcC<$JcC<$JcCZ.r;an<rrAhoJ,~>
+W;lerqu?Tpp&FsjL]@;QJcC<$JcC<$kPtP^JcC<$JcC<$JcCZ.r;an<rrAhoJ,~>
+W;lerqu?Tpp&FsjL]@;QJcC<$JcC<$kPtP^JcC<$JcC<$JcCZ.r;an<rrAhoJ,~>
+W;lerqu?Tpp&FsjL]@;QJcC<$JcC<$kPtP^JcC<$JcC<$JcCZ.r;an<rrAhoJ,~>
+W;lerqu?Tpp&FsjL]@;QJcC<$JcC<$kPtP^JcC<$JcC<$JcCZ.r;an<rrAhoJ,~>
+XT/(rqu?Tpp&FsjKE(lMJcC<$JcC<$li6tbJcC<$JcC<$JcCN*r;b%@rrAhoJ,~>
+XT/(rqu?Tpp&FsjKE(lMJcC<$JcC<$li6tbJcC<$JcC<$JcCN*r;b%@rrAhoJ,~>
+XT/(rqu?Tpp&FsjKE(lMJcC<$JcC<$li6tbJcC<$JcC<$JcCN*r;b%@rrAhoJ,~>
+XT/(rqu?Tpp&FsjKE(lMJcC<$JcC<$li6tbJcC<$JcC<$JcCN*r;b%@rrAhoJ,~>
+XT/(rqu?Tpp&FsjKE(lMJcC<$JcC<$li6tbJcC<$JcC<$JcCN*r;b%@rrAhoJ,~>
+XT/(rqu?Tpp&FsjKE(lMJcC<$JcC<$li6tbJcC<$JcC<$JcCN*r;b%@rrAhoJ,~>
+Y5eA!p](0lp&FsjJcGcMqZ)3IJcC<$JcG9?rr at WMJcC<$JcC<$KE(fKdJs4HU]5i~>
+Y5eA!p](0lp&FsjJcGcMqZ)3IJcC<$JcG9?rr at WMJcC<$JcC<$KE(fKdJs4HU]5i~>
+Y5eA!p](0lp&FsjJcGcMqZ)3IJcC<$JcG9?rr at WMJcC<$JcC<$KE(fKdJs4HU]5i~>
+Y5eA!p](0lp&FsjJcGcMqZ)3IJcC<$JcG9?rr at WMJcC<$JcC<$KE(fKdJs4HU]5i~>
+Y5eA!p](0lp&FsjJcGcMqZ)3IJcC<$JcG9?rr at WMJcC<$JcC<$KE(fKdJs4HU]5i~>
+Y5eA!p](0lp&FsjJcGcMqZ)3IJcC<$JcG9?rr at WMJcC<$JcC<$KE(fKdJs4HU]5i~>
+ZN'e%oDeahp&FsjJcGQGr;_EKJcC<$JcGECrr at WMJcC<$JcC<$JcG]Kr;bCJrrAhoJ,~>
+ZN'e%oDeahp&FsjJcGQGr;_EKJcC<$JcGECrr at WMJcC<$JcC<$JcG]Kr;bCJrrAhoJ,~>
+ZN'e%oDeahp&FsjJcGQGr;_EKJcC<$JcGECrr at WMJcC<$JcC<$JcG]Kr;bCJrrAhoJ,~>
+ZN'e%oDeahp&FsjJcGQGr;_EKJcC<$JcGECrr at WMJcC<$JcC<$JcG]Kr;bCJrrAhoJ,~>
+ZN'e%oDeahp&FsjJcGQGr;_EKJcC<$JcGECrr at WMJcC<$JcC<$JcG]Kr;bCJrrAhoJ,~>
+ZN'e%oDeahp&FsjJcGQGr;_EKJcC<$JcGECrr at WMJcC<$JcC<$JcG]Kr;bCJrrAhoJ,~>
+[/^"'nc/Ofp&FsjJcGECr;_EKJcC<$JcGQGrr at WMJcC<$JcC<$JcGQGr;bONrrAhoJ,~>
+[/^"'nc/Ofp&FsjJcGECr;_EKJcC<$JcGQGrr at WMJcC<$JcC<$JcGQGr;bONrrAhoJ,~>
+[/^"'nc/Ofp&FsjJcGECr;_EKJcC<$JcGQGrr at WMJcC<$JcC<$JcGQGr;bONrrAhoJ,~>
+[/^"'nc/Ofp&FsjJcGECr;_EKJcC<$JcGQGrr at WMJcC<$JcC<$JcGQGr;bONrrAhoJ,~>
+[/^"'nc/Ofp&FsjJcGECr;_EKJcC<$JcGQGrr at WMJcC<$JcC<$JcGQGr;bONrrAhoJ,~>
+[/^"'nc/Ofp&FsjJcGECr;_EKJcC<$JcGQGrr at WMJcC<$JcC<$JcGQGr;bONrrAhoJ,~>
+[/^()mJm+bq>^<lJcG9?r;_EKJcC<$JcG]Krr at WMJcC<$JcC<$JcGECr;b[RrrAhoJ,~>
+[/^()mJm+bq>^<lJcG9?r;_EKJcC<$JcG]Krr at WMJcC<$JcC<$JcGECr;b[RrrAhoJ,~>
+[/^()mJm+bq>^<lJcG9?r;_EKJcC<$JcG]Krr at WMJcC<$JcC<$JcGECr;b[RrrAhoJ,~>
+[/^()mJm+bq>^<lJcG9?r;_EKJcC<$JcG]Krr at WMJcC<$JcC<$JcGECr;b[RrrAhoJ,~>
+[/^()mJm+bq>^<lJcG9?r;_EKJcC<$JcG]Krr at WMJcC<$JcC<$JcGECr;b[RrrAhoJ,~>
+[/^()mJm+bq>^<lJcG9?r;_EKJcC<$JcG]Krr at WMJcC<$JcC<$JcGECr;b[RrrAhoJ,~>
+[f?:+li6n`q>^BnJcG'9r;_EKJcC<$JcG`MJcC<$JcC<$JcC<$nc/OfiW&oXU]5i~>
+[f?:+li6n`q>^BnJcG'9r;_EKJcC<$JcG`MJcC<$JcC<$JcC<$nc/OfiW&oXU]5i~>
+[f?:+li6n`q>^BnJcG'9r;_EKJcC<$JcG`MJcC<$JcC<$JcC<$nc/OfiW&oXU]5i~>
+[f?:+li6n`q>^BnJcG'9r;_EKJcC<$JcG`MJcC<$JcC<$JcC<$nc/OfiW&oXU]5i~>
+[f?:+li6n`q>^BnJcG'9r;_EKJcC<$JcG`MJcC<$JcC<$JcC<$nc/OfiW&oXU]5i~>
+[f?:+li6n`q>^BnJcG'9r;_EKJcC<$JcG`MJcC<$JcC<$JcC<$nc/OfiW&oXU]5i~>
+[f>^pq>^$dJcFp5r;_EKJcC<$L&_/QJcC<$JcC<$JcC<$mJm+bjo>>\U]5i~>
+[f>^pq>^$dJcFp5r;_EKJcC<$L&_/QJcC<$JcC<$JcC<$mJm+bjo>>\U]5i~>
+[f>^pq>^$dJcFp5r;_EKJcC<$L&_/QJcC<$JcC<$JcC<$mJm+bjo>>\U]5i~>
+[f>^pq>^$dJcFp5r;_EKJcC<$L&_/QJcC<$JcC<$JcC<$mJm+bjo>>\U]5i~>
+[f>^pq>^$dJcFp5r;_EKJcC<$L&_/QJcC<$JcC<$JcC<$mJm+bjo>>\U]5i~>
+[f>^pq>^$dJcFp5r;_EKJcC<$L&_/QJcC<$JcC<$JcC<$mJm+bjo>>\U]5i~>
+[f>^pp]($hJcFX-qZ)3IJcC<$MuWeWJcC<$JcC<$JcC<$l2UV\li6tbU]5i~>
+[f>^pp]($hJcFX-qZ)3IJcC<$MuWeWJcC<$JcC<$JcC<$l2UV\li6tbU]5i~>
+[f>^pp]($hJcFX-qZ)3IJcC<$MuWeWJcC<$JcC<$JcC<$l2UV\li6tbU]5i~>
+[f>^pp]($hJcFX-qZ)3IJcC<$MuWeWJcC<$JcC<$JcC<$l2UV\li6tbU]5i~>
+[f>^pp]($hJcFX-qZ)3IJcC<$MuWeWJcC<$JcC<$JcC<$l2UV\li6tbU]5i~>
+[f>^pp]($hJcFX-qZ)3IJcC<$MuWeWJcC<$JcC<$JcC<$l2UV\li6tbU]5i~>
+JcC<$kl:S]JcC<$JcCf2rr at WMJcC<$JcC<$JcFd1r;c<drrAhoJ,~>
+JcC<$kl:S]JcC<$JcCf2rr at WMJcC<$JcC<$JcFd1r;c<drrAhoJ,~>
+JcC<$kl:S]JcC<$JcCf2rr at WMJcC<$JcC<$JcFd1r;c<drrAhoJ,~>
+JcC<$kl:S]JcC<$JcCf2rr at WMJcC<$JcC<$JcFd1r;c<drrAhoJ,~>
+JcC<$kl:S]JcC<$JcCf2rr at WMJcC<$JcC<$JcFd1r;c<drrAhoJ,~>
+JcC<$kl:S]JcC<$JcCf2rr at WMJcC<$JcC<$JcFd1r;c<drrAhoJ,~>
+JcC<$jT#/YJcC<$JcCr6rr at WMJcC<$JcC<$JcFX-r;cHhrrAhoJ,~>
+JcC<$jT#/YJcC<$JcCr6rr at WMJcC<$JcC<$JcFX-r;cHhrrAhoJ,~>
+JcC<$jT#/YJcC<$JcCr6rr at WMJcC<$JcC<$JcFX-r;cHhrrAhoJ,~>
+JcC<$jT#/YJcC<$JcCr6rr at WMJcC<$JcC<$JcFX-r;cHhrrAhoJ,~>
+JcC<$jT#/YJcC<$JcCr6rr at WMJcC<$JcC<$JcFX-r;cHhrrAhoJ,~>
+JcC<$jT#/YJcC<$JcCr6rr at WMJcC<$JcC<$JcFX-r;cHhrrAhoJ,~>
+JcC<$i;``UJcC<$JcD):rr at WMJcC<$JcC<$JcFL)r;cTlrrAhoJ,~>
+JcC<$i;``UJcC<$JcD):rr at WMJcC<$JcC<$JcFL)r;cTlrrAhoJ,~>
+JcC<$i;``UJcC<$JcD):rr at WMJcC<$JcC<$JcFL)r;cTlrrAhoJ,~>
+JcC<$i;``UJcC<$JcD):rr at WMJcC<$JcC<$JcFL)r;cTlrrAhoJ,~>
+JcC<$i;``UJcC<$JcD):rr at WMJcC<$JcC<$JcFL)r;cTlrrAhoJ,~>
+JcC<$i;``UJcC<$JcD):rr at WMJcC<$JcC<$JcFL)r;cTlrrAhoJ,~>
+JcC<$h#I<QJcC<$JcD5>rr at WMJcC<$JcC<$JcF@%r;c`prrAhoJ,~>
+JcC<$h#I<QJcC<$JcD5>rr at WMJcC<$JcC<$JcF@%r;c`prrAhoJ,~>
+JcC<$h#I<QJcC<$JcD5>rr at WMJcC<$JcC<$JcF@%r;c`prrAhoJ,~>
+JcC<$h#I<QJcC<$JcD5>rr at WMJcC<$JcC<$JcF@%r;c`prrAhoJ,~>
+JcC<$h#I<QJcC<$JcD5>rr at WMJcC<$JcC<$JcF@%r;c`prrAhoJ,~>
+JcC<$h#I<QJcC<$JcD5>rr at WMJcC<$JcC<$JcF@%r;c`prrAhoJ,~>
+JcC<$f`1gKJcC<$JcDGDrr at WMJcC<$JcC<$JcF4!r;cltrrAhoJ,~>
+JcC<$f`1gKJcC<$JcDGDrr at WMJcC<$JcC<$JcF4!r;cltrrAhoJ,~>
+JcC<$f`1gKJcC<$JcDGDrr at WMJcC<$JcC<$JcF4!r;cltrrAhoJ,~>
+JcC<$f`1gKJcC<$JcDGDrr at WMJcC<$JcC<$JcF4!r;cltrrAhoJ,~>
+JcC<$f`1gKJcC<$JcDGDrr at WMJcC<$JcC<$JcF4!r;cltrrAhoJ,~>
+JcC<$f`1gKJcC<$JcDGDrr at WMJcC<$JcC<$JcF4!r;cltrrAhoJ,~>
+JcC<$df97GJcC<$JcDSHrr at WMJcC<$JcC<$JcF'rr;`VmJ,~>
+JcC<$df97GJcC<$JcDSHrr at WMJcC<$JcC<$JcF'rr;`VmJ,~>
+JcC<$df97GJcC<$JcDSHrr at WMJcC<$JcC<$JcF'rr;`VmJ,~>
+JcC<$df97GJcC<$JcDSHrr at WMJcC<$JcC<$JcF'rr;`VmJ,~>
+JcC<$df97GJcC<$JcDSHrr at WMJcC<$JcC<$JcF'rr;`VmJ,~>
+JcC<$df97GJcC<$JcDSHrr at WMJcC<$JcC<$JcF'rr;`VmJ,~>
+JcC<$cN!hCJcC<$JcD_Lrr at WMJcC<$JcC<$JcF@%o`1ceJ,~>
+JcC<$cN!hCJcC<$JcD_Lrr at WMJcC<$JcC<$JcF@%o`1ceJ,~>
+JcC<$cN!hCJcC<$JcD_Lrr at WMJcC<$JcC<$JcF@%o`1ceJ,~>
+JcC<$cN!hCJcC<$JcD_Lrr at WMJcC<$JcC<$JcF@%o`1ceJ,~>
+JcC<$cN!hCJcC<$JcD_Lrr at WMJcC<$JcC<$JcF@%o`1ceJ,~>
+JcC<$cN!hCJcC<$JcD_Lrr at WMJcC<$JcC<$JcF@%o`1ceJ,~>
+JcC<$b5_D?JcC<$JcDkPrr at WMJcC<$JcC<$JcFX-q#L*fr;`bqJ,~>
+JcC<$b5_D?JcC<$JcDkPrr at WMJcC<$JcC<$JcFX-q#L*fr;`bqJ,~>
+JcC<$b5_D?JcC<$JcDkPrr at WMJcC<$JcC<$JcFX-q#L*fr;`bqJ,~>
+JcC<$b5_D?JcC<$JcDkPrr at WMJcC<$JcC<$JcFX-q#L*fr;`bqJ,~>
+JcC<$b5_D?JcC<$JcDkPrr at WMJcC<$JcC<$JcFX-q#L*fr;`bqJ,~>
+JcC<$b5_D?JcC<$JcDkPrr at WMJcC<$JcC<$JcFX-q#L*fr;`bqJ,~>
+JcC<$b5_8;JcC<$JcE"Trr at WMJcC<$JcC<$JcFp5q#K[ZqZ*buJ,~>
+JcC<$b5_8;JcC<$JcE"Trr at WMJcC<$JcC<$JcFp5q#K[ZqZ*buJ,~>
+JcC<$b5_8;JcC<$JcE"Trr at WMJcC<$JcC<$JcFp5q#K[ZqZ*buJ,~>
+JcC<$b5_8;JcC<$JcE"Trr at WMJcC<$JcC<$JcFp5q#K[ZqZ*buJ,~>
+JcC<$b5_8;JcC<$JcE"Trr at WMJcC<$JcC<$JcFp5q#K[ZqZ*buJ,~>
+JcC<$b5_8;JcC<$JcE"Trr at WMJcC<$JcC<$JcFp5q#K[ZqZ*buJ,~>
+JcC<$df9+Cq>^BnJcC<$JcE.Xrr at WMJcC<$JcC<$JcG-;qZ,CNr;a,&J,~>
+JcC<$df9+Cq>^BnJcC<$JcE.Xrr at WMJcC<$JcC<$JcG-;qZ,CNr;a,&J,~>
+JcC<$df9+Cq>^BnJcC<$JcE.Xrr at WMJcC<$JcC<$JcG-;qZ,CNr;a,&J,~>
+JcC<$df9+Cq>^BnJcC<$JcE.Xrr at WMJcC<$JcC<$JcG-;qZ,CNr;a,&J,~>
+JcC<$df9+Cq>^BnJcC<$JcE.Xrr at WMJcC<$JcC<$JcG-;qZ,CNr;a,&J,~>
+JcC<$df9+Cq>^BnJcC<$JcE.Xrr at WMJcC<$JcC<$JcG-;qZ,CNr;a,&J,~>
+JcC<$gAgsKmJm%`JcC<$JcE@^rr at WMJcC<$JcC<$JcGECq#JhBrrBD*J,~>
+JcC<$gAgsKmJm%`JcC<$JcE@^rr at WMJcC<$JcC<$JcGECq#JhBrrBD*J,~>
+JcC<$gAgsKmJm%`JcC<$JcE@^rr at WMJcC<$JcC<$JcGECq#JhBrrBD*J,~>
+JcC<$gAgsKmJm%`JcC<$JcE@^rr at WMJcC<$JcC<$JcGECq#JhBrrBD*J,~>
+JcC<$gAgsKmJm%`JcC<$JcE@^rr at WMJcC<$JcC<$JcGECq#JhBrrBD*J,~>
+JcC<$gAgsKmJm%`JcC<$JcE@^rr at WMJcC<$JcC<$JcGECq#JhBrrBD*J,~>
+JcC<$h#IBShuEWTJcC<$JcELbrr at WMJcC<$JcC<$JcG]Kq#H!Gq>Ys~>
+JcC<$h#IBShuEWTJcC<$JcELbrr at WMJcC<$JcC<$JcG]Kq#H!Gq>Ys~>
+JcC<$h#IBShuEWTJcC<$JcELbrr at WMJcC<$JcC<$JcG]Kq#H!Gq>Ys~>
+JcC<$h#IBShuEWTJcC<$JcELbrr at WMJcC<$JcC<$JcG]Kq#H!Gq>Ys~>
+JcC<$h#IBShuEWTJcC<$JcELbrr at WMJcC<$JcC<$JcG]Kq#H!Gq>Ys~>
+JcC<$h#IBShuEWTJcC<$JcELbrr at WMJcC<$JcC<$JcG]Kq#H!Gq>Ys~>
+JcC<$[/^()JcC<$JcEXfrr at WMJcC<$JcC<$L&^rKJcG9?J,~>
+JcC<$[/^()JcC<$JcEXfrr at WMJcC<$JcC<$L&^rKJcG9?J,~>
+JcC<$[/^()JcC<$JcEXfrr at WMJcC<$JcC<$L&^rKJcG9?J,~>
+JcC<$[/^()JcC<$JcEXfrr at WMJcC<$JcC<$L&^rKJcG9?J,~>
+JcC<$[/^()JcC<$JcEXfrr at WMJcC<$JcC<$L&^rKJcG9?J,~>
+JcC<$[/^()JcC<$JcEXfrr at WMJcC<$JcC<$L&^rKJcG9?J,~>
+JcC<$YlFY%JcC<$JcEdjrr at WMJcC<$JcC<$MuWYSJcG!7J,~>
+JcC<$YlFY%JcC<$JcEdjrr at WMJcC<$JcC<$MuWYSJcG!7J,~>
+JcC<$YlFY%JcC<$JcEdjrr at WMJcC<$JcC<$MuWYSJcG!7J,~>
+JcC<$YlFY%JcC<$JcEdjrr at WMJcC<$JcC<$MuWYSJcG!7J,~>
+JcC<$YlFY%JcC<$JcEdjrr at WMJcC<$JcC<$MuWYSJcG!7J,~>
+JcC<$YlFY%JcC<$JcEdjrr at WMJcC<$JcC<$MuWYSJcG!7J,~>
+JcC<$XT/5!JcC<$JcEpnrr at WMJcC<$JcC<$PQ1FYJcFd1J,~>
+JcC<$XT/5!JcC<$JcEpnrr at WMJcC<$JcC<$PQ1FYJcFd1J,~>
+JcC<$XT/5!JcC<$JcEpnrr at WMJcC<$JcC<$PQ1FYJcFd1J,~>
+JcC<$XT/5!JcC<$JcEpnrr at WMJcC<$JcC<$PQ1FYJcFd1J,~>
+JcC<$XT/5!JcC<$JcEpnrr at WMJcC<$JcC<$PQ1FYJcFd1J,~>
+JcC<$XT/5!JcC<$JcEpnrr at WMJcC<$JcC<$PQ1FYJcFd1J,~>
+JcC<$W;l_pJcC<$JcF-trr at WMJcC<$JcC<$S,`9aJcFL)J,~>
+JcC<$W;l_pJcC<$JcF-trr at WMJcC<$JcC<$S,`9aJcFL)J,~>
+JcC<$W;l_pJcC<$JcF-trr at WMJcC<$JcC<$S,`9aJcFL)J,~>
+JcC<$W;l_pJcC<$JcF-trr at WMJcC<$JcC<$S,`9aJcFL)J,~>
+JcC<$W;l_pJcC<$JcF-trr at WMJcC<$JcC<$S,`9aJcFL)J,~>
+JcC<$W;l_pJcC<$JcF-trr at WMJcC<$JcC<$S,`9aJcFL)J,~>
+JcC<$UAt/lJcC<$JcF:#rr at WMJcC<$JcC<$U&XuiJcF4!J,~>
+JcC<$UAt/lJcC<$JcF:#rr at WMJcC<$JcC<$U&XuiJcF4!J,~>
+JcC<$UAt/lJcC<$JcF:#rr at WMJcC<$JcC<$U&XuiJcF4!J,~>
+JcC<$UAt/lJcC<$JcF:#rr at WMJcC<$JcC<$U&XuiJcF4!J,~>
+JcC<$UAt/lJcC<$JcF:#rr at WMJcC<$JcC<$U&XuiJcF4!J,~>
+JcC<$UAt/lJcC<$JcF:#rr at WMJcC<$JcC<$U&XuiJcF4!J,~>
+JcC<$T)\`hJcC<$JcFF'rr at WMJcC<$JcC<$WW2boJcF!pJ,~>
+JcC<$T)\`hJcC<$JcFF'rr at WMJcC<$JcC<$WW2boJcF!pJ,~>
+JcC<$T)\`hJcC<$JcFF'rr at WMJcC<$JcC<$WW2boJcF!pJ,~>
+JcC<$T)\`hJcC<$JcFF'rr at WMJcC<$JcC<$WW2boJcF!pJ,~>
+JcC<$T)\`hJcC<$JcFF'rr at WMJcC<$JcC<$WW2boJcF!pJ,~>
+JcC<$T)\`hJcC<$JcFF'rr at WMJcC<$JcC<$WW2boJcF!pJ,~>
+JcC<$RfE<dJcC<$JcFR+rr at WMJcC<$JcC<$Z2aV"JcE^hJ,~>
+JcC<$RfE<dJcC<$JcFR+rr at WMJcC<$JcC<$Z2aV"JcE^hJ,~>
+JcC<$RfE<dJcC<$JcFR+rr at WMJcC<$JcC<$Z2aV"JcE^hJ,~>
+JcC<$RfE<dJcC<$JcFR+rr at WMJcC<$JcC<$Z2aV"JcE^hJ,~>
+JcC<$RfE<dJcC<$JcFR+rr at WMJcC<$JcC<$Z2aV"JcE^hJ,~>
+JcC<$RfE<dJcC<$JcFR+rr at WMJcC<$JcC<$Z2aV"JcE^hJ,~>
+JcC<$QN-m`JcC<$JcF^/rr at WMJcC<$JcC<$\c;I*JcEF`J,~>
+JcC<$QN-m`JcC<$JcF^/rr at WMJcC<$JcC<$\c;I*JcEF`J,~>
+JcC<$QN-m`JcC<$JcF^/rr at WMJcC<$JcC<$\c;I*JcEF`J,~>
+JcC<$QN-m`JcC<$JcF^/rr at WMJcC<$JcC<$\c;I*JcEF`J,~>
+JcC<$QN-m`JcC<$JcF^/rr at WMJcC<$JcC<$\c;I*JcEF`J,~>
+JcC<$QN-m`JcC<$JcF^/rr at WMJcC<$JcC<$\c;I*JcEF`J,~>
+JcCW-rr at uWr;_EKJcC<$jo>>\JcC<$JcC<$JcELbqZ)3I[Jta~>
+JcCW-rr at uWr;_EKJcC<$jo>>\JcC<$JcC<$JcELbqZ)3I[Jta~>
+JcCW-rr at uWr;_EKJcC<$jo>>\JcC<$JcC<$JcELbqZ)3I[Jta~>
+JcCW-rr at uWr;_EKJcC<$jo>>\JcC<$JcC<$JcELbqZ)3I[Jta~>
+JcCW-rr at uWr;_EKJcC<$jo>>\JcC<$JcC<$JcELbqZ)3I[Jta~>
+JcCW-rr at uWr;_EKJcC<$jo>>\JcC<$JcC<$JcELbqZ)3I[Jta~>
+JcC]/r;cNjnGo?aqZ)3IJcC<$li6tbJcC<$JcC<$JcEdjq#H!Gli6VXoDeUdkPp&~>
+JcC]/r;cNjnGo?aqZ)3IJcC<$li6tbJcC<$JcC<$JcEdjq#H!Gli6VXoDeUdkPp&~>
+JcC]/r;cNjnGo?aqZ)3IJcC<$li6tbJcC<$JcC<$JcEdjq#H!Gli6VXoDeUdkPp&~>
+JcC]/r;cNjnGo?aqZ)3IJcC<$li6tbJcC<$JcC<$JcEdjq#H!Gli6VXoDeUdkPp&~>
+JcC]/r;cNjnGo?aqZ)3IJcC<$li6tbJcC<$JcC<$JcEdjq#H!Gli6VXoDeUdkPp&~>
+JcC]/r;cNjnGo?aqZ)3IJcC<$li6tbJcC<$JcC<$JcEdjq#H!Gli6VXoDeUdkPp&~>
+JcCc1qZ-<hnGo-[r;_EKJcC<$n,NCfJcC<$JcC<$JcF'rq#H!Gjo=iNp]'mdl2Q8~>
+JcCc1qZ-<hnGo-[r;_EKJcC<$n,NCfJcC<$JcC<$JcF'rq#H!Gjo=iNp]'mdl2Q8~>
+JcCc1qZ-<hnGo-[r;_EKJcC<$n,NCfJcC<$JcC<$JcF'rq#H!Gjo=iNp]'mdl2Q8~>
+JcCc1qZ-<hnGo-[r;_EKJcC<$n,NCfJcC<$JcC<$JcF'rq#H!Gjo=iNp]'mdl2Q8~>
+JcCc1qZ-<hnGo-[r;_EKJcC<$n,NCfJcC<$JcC<$JcF'rq#H!Gjo=iNp]'mdl2Q8~>
+JcCc1qZ-<hnGo-[r;_EKJcC<$n,NCfJcC<$JcC<$JcF'rq#H!Gjo=iNp]'mdl2Q8~>
+JcCu7o`4[br;_iWr;_EKJcC<$oDegjJcC<$JcC<$JcF@%q#H!GhuEQRq>^<lqu?Tpq>^Bnli2J~>
+JcCu7o`4[br;_iWr;_EKJcC<$oDegjJcC<$JcC<$JcF@%q#H!GhuEQRq>^<lqu?Tpq>^Bnli2J~>
+JcCu7o`4[br;_iWr;_EKJcC<$oDegjJcC<$JcC<$JcF@%q#H!GhuEQRq>^<lqu?Tpq>^Bnli2J~>
+JcCu7o`4[br;_iWr;_EKJcC<$oDegjJcC<$JcC<$JcF@%q#H!GhuEQRq>^<lqu?Tpq>^Bnli2J~>
+JcCu7o`4[br;_iWr;_EKJcC<$oDegjJcC<$JcC<$JcF@%q#H!GhuEQRq>^<lqu?Tpq>^Bnli2J~>
+JcCu7o`4[br;_iWr;_EKJcC<$oDegjJcC<$JcC<$JcF@%q#H!GhuEQRq>^<lqu?Tpq>^Bnli2J~>
+JcCu7o`4[br;_]Sr;_EKJcC<$p](6nJcC<$JcC<$JcFR+qZ)3IfDkdLp&Fsjqu?Tpq>^Bnli2J~>
+JcCu7o`4[br;_]Sr;_EKJcC<$p](6nJcC<$JcC<$JcFR+qZ)3IfDkdLp&Fsjqu?Tpq>^Bnli2J~>
+JcCu7o`4[br;_]Sr;_EKJcC<$p](6nJcC<$JcC<$JcFR+qZ)3IfDkdLp&Fsjqu?Tpq>^Bnli2J~>
+JcCu7o`4[br;_]Sr;_EKJcC<$p](6nJcC<$JcC<$JcFR+qZ)3IfDkdLp&Fsjqu?Tpq>^Bnli2J~>
+JcCu7o`4[br;_]Sr;_EKJcC<$p](6nJcC<$JcC<$JcFR+qZ)3IfDkdLp&Fsjqu?Tpq>^Bnli2J~>
+JcCu7o`4[br;_]Sr;_EKJcC<$p](6nJcC<$JcC<$JcFR+qZ)3IfDkdLp&Fsjqu?Tpq>^Bnli2J~>
+JcC]/r;cNjr;_QOr;_EKJcC<$qu?ZrJcC<$JcC<$JcFj3q#H!GdJs.Fp&FsjrVufrp&FsjmJh\~>
+JcC]/r;cNjr;_QOr;_EKJcC<$qu?ZrJcC<$JcC<$JcFj3q#H!GdJs.Fp&FsjrVufrp&FsjmJh\~>
+JcC]/r;cNjr;_QOr;_EKJcC<$qu?ZrJcC<$JcC<$JcFj3q#H!GdJs.Fp&FsjrVufrp&FsjmJh\~>
+JcC]/r;cNjr;_QOr;_EKJcC<$qu?ZrJcC<$JcC<$JcFj3q#H!GdJs.Fp&FsjrVufrp&FsjmJh\~>
+JcC]/r;cNjr;_QOr;_EKJcC<$qu?ZrJcC<$JcC<$JcFj3q#H!GdJs.Fp&FsjrVufrp&FsjmJh\~>
+JcC]/r;cNjr;_QOr;_EKJcC<$qu?ZrJcC<$JcC<$JcFj3q#H!GdJs.Fp&FsjrVufrp&FsjmJh\~>
+JcC]/r;cNjrrE*!pAg-OqZ)3IJcC<$rr at WMJcC<$JcC<$mJlt^JcE:\r;cfrr;cNjr;c6bJ,~>
+JcC]/r;cNjrrE*!pAg-OqZ)3IJcC<$rr at WMJcC<$JcC<$mJlt^JcE:\r;cfrr;cNjr;c6bJ,~>
+JcC]/r;cNjrrE*!pAg-OqZ)3IJcC<$rr at WMJcC<$JcC<$mJlt^JcE:\r;cfrr;cNjr;c6bJ,~>
+JcC]/r;cNjrrE*!pAg-OqZ)3IJcC<$rr at WMJcC<$JcC<$mJlt^JcE:\r;cfrr;cNjr;c6bJ,~>
+JcC]/r;cNjrrE*!pAg-OqZ)3IJcC<$rr at WMJcC<$JcC<$mJlt^JcE:\r;cfrr;cNjr;c6bJ,~>
+JcC]/r;cNjrrE*!pAg-OqZ)3IJcC<$rr at WMJcC<$JcC<$mJlt^JcE:\r;cfrr;cNjr;c6bJ,~>
+JcC]/r;cTlmf8.Cr;_EKJcCH(rr at WMJcC<$JcC<$p&FgfJcE(Vr;c`pr;cNjr;c6bJ,~>
+JcC]/r;cTlmf8.Cr;_EKJcCH(rr at WMJcC<$JcC<$p&FgfJcE(Vr;c`pr;cNjr;c6bJ,~>
+JcC]/r;cTlmf8.Cr;_EKJcCH(rr at WMJcC<$JcC<$p&FgfJcE(Vr;c`pr;cNjr;c6bJ,~>
+JcC]/r;cTlmf8.Cr;_EKJcCH(rr at WMJcC<$JcC<$p&FgfJcE(Vr;c`pr;cNjr;c6bJ,~>
+JcC]/r;cTlmf8.Cr;_EKJcCH(rr at WMJcC<$JcC<$p&FgfJcE(Vr;c`pr;cNjr;c6bJ,~>
+JcC]/r;cTlmf8.Cr;_EKJcCH(rr at WMJcC<$JcC<$p&FgfJcE(Vr;c`pr;cNjr;c6bJ,~>
+JcC]/r;cTlr;cTlqZ)?Mr;_EKJcCT,rr at WMJcC<$JcC<$qu?NnJcDqRq#L<lr;cNjr;c6bJ,~>
+JcC]/r;cTlr;cTlqZ)?Mr;_EKJcCT,rr at WMJcC<$JcC<$qu?NnJcDqRq#L<lr;cNjr;c6bJ,~>
+JcC]/r;cTlr;cTlqZ)?Mr;_EKJcCT,rr at WMJcC<$JcC<$qu?NnJcDqRq#L<lr;cNjr;c6bJ,~>
+JcC]/r;cTlr;cTlqZ)?Mr;_EKJcCT,rr at WMJcC<$JcC<$qu?NnJcDqRq#L<lr;cNjr;c6bJ,~>
+JcC]/r;cTlr;cTlqZ)?Mr;_EKJcCT,rr at WMJcC<$JcC<$qu?NnJcDqRq#L<lr;cNjr;c6bJ,~>
+JcC]/r;cTlr;cTlqZ)?Mr;_EKJcCT,rr at WMJcC<$JcC<$qu?NnJcDqRq#L<lr;cNjr;c6bJ,~>
+JcC]/r;c$\r;_EKr;_EKJcC`0rr at WMJcC<$JcCB&q#H!GX8i%sp](0lp&FsjmJh\~>
+JcC]/r;c$\r;_EKr;_EKJcC`0rr at WMJcC<$JcCB&q#H!GX8i%sp](0lp&FsjmJh\~>
+JcC]/r;c$\r;_EKr;_EKJcC`0rr at WMJcC<$JcCB&q#H!GX8i%sp](0lp&FsjmJh\~>
+JcC]/r;c$\r;_EKr;_EKJcC`0rr at WMJcC<$JcCB&q#H!GX8i%sp](0lp&FsjmJh\~>
+JcC]/r;c$\r;_EKr;_EKJcC`0rr at WMJcC<$JcCB&q#H!GX8i%sp](0lp&FsjmJh\~>
+JcC]/r;c$\r;_EKr;_EKJcC`0rr at WMJcC<$JcCB&q#H!GX8i%sp](0lp&FsjmJh\~>
+JcC]/r;c$\r;_EKrVufrJcC<$OoPF]JcC<$JcC<$MuWSQJcDYJqZ-6fr;cNjr;c6bJ,~>
+JcC]/r;c$\r;_EKrVufrJcC<$OoPF]JcC<$JcC<$MuWSQJcDYJqZ-6fr;cNjr;c6bJ,~>
+JcC]/r;c$\r;_EKrVufrJcC<$OoPF]JcC<$JcC<$MuWSQJcDYJqZ-6fr;cNjr;c6bJ,~>
+JcC]/r;c$\r;_EKrVufrJcC<$OoPF]JcC<$JcC<$MuWSQJcDYJqZ-6fr;cNjr;c6bJ,~>
+JcC]/r;c$\r;_EKrVufrJcC<$OoPF]JcC<$JcC<$MuWSQJcDYJqZ-6fr;cNjr;c6bJ,~>
+JcC]/r;c$\r;_EKrVufrJcC<$OoPF]JcC<$JcC<$MuWSQJcDYJqZ-6fr;cNjr;c6bJ,~>
+JcC]/r;c$\r;_EKq>^BnJcC<$Q2gjaJcC<$JcC<$PQ1FYJcDGDqZ-0dr;cNjr;c6bJ,~>
+JcC]/r;c$\r;_EKq>^BnJcC<$Q2gjaJcC<$JcC<$PQ1FYJcDGDqZ-0dr;cNjr;c6bJ,~>
+JcC]/r;c$\r;_EKq>^BnJcC<$Q2gjaJcC<$JcC<$PQ1FYJcDGDqZ-0dr;cNjr;c6bJ,~>
+JcC]/r;c$\r;_EKq>^BnJcC<$Q2gjaJcC<$JcC<$PQ1FYJcDGDqZ-0dr;cNjr;c6bJ,~>
+JcC]/r;c$\r;_EKq>^BnJcC<$Q2gjaJcC<$JcC<$PQ1FYJcDGDqZ-0dr;cNjr;c6bJ,~>
+JcC]/r;c$\r;_EKq>^BnJcC<$Q2gjaJcC<$JcC<$PQ1FYJcDGDqZ-0dr;cNjr;c6bJ,~>
+JcC]/r;cTlr;cNjr;_EKp&FmhJcC<$S,`KgJcC<$JcC<$RK*-aJcD/<r;c6br;cZnqZ-$`J,~>
+JcC]/r;cTlr;cNjr;_EKp&FmhJcC<$S,`KgJcC<$JcC<$RK*-aJcD/<r;c6br;cZnqZ-$`J,~>
+JcC]/r;cTlr;cNjr;_EKp&FmhJcC<$S,`KgJcC<$JcC<$RK*-aJcD/<r;c6br;cZnqZ-$`J,~>
+JcC]/r;cTlr;cNjr;_EKp&FmhJcC<$S,`KgJcC<$JcC<$RK*-aJcD/<r;c6br;cZnqZ-$`J,~>
+JcC]/r;cTlr;cNjr;_EKp&FmhJcC<$S,`KgJcC<$JcC<$RK*-aJcD/<r;c6br;cZnqZ-$`J,~>
+JcC]/r;cTlr;cNjr;_EKp&FmhJcC<$S,`KgJcC<$JcC<$RK*-aJcD/<r;c6br;cZnqZ-$`J,~>
+JcC]/r;cTlqZ-Hlr;_EKmJm+bJcC<$TE"okJcC<$JcC<$U&XogJcD#8r;c0`r;cZnr;c0`J,~>
+JcC]/r;cTlqZ-Hlr;_EKmJm+bJcC<$TE"okJcC<$JcC<$U&XogJcD#8r;c0`r;cZnr;c0`J,~>
+JcC]/r;cTlqZ-Hlr;_EKmJm+bJcC<$TE"okJcC<$JcC<$U&XogJcD#8r;c0`r;cZnr;c0`J,~>
+JcC]/r;cTlqZ-Hlr;_EKmJm+bJcC<$TE"okJcC<$JcC<$U&XogJcD#8r;c0`r;cZnr;c0`J,~>
+JcC]/r;cTlqZ-Hlr;_EKmJm+bJcC<$TE"okJcC<$JcC<$U&XogJcD#8r;c0`r;cZnr;c0`J,~>
+JcC]/r;cTlqZ-Hlr;_EKmJm+bJcC<$TE"okJcC<$JcC<$U&XogJcD#8r;c0`r;cZnr;c0`J,~>
+JcC]/r;cNjnGn.?l2U\^JcC<$U]:>oJcC<$JcC<$WW2boq>^BnJcD/<m/Zt^o)S+VJ,~>
+JcC]/r;cNjnGn.?l2U\^JcC<$U]:>oJcC<$JcC<$WW2boq>^BnJcD/<m/Zt^o)S+VJ,~>
+JcC]/r;cNjnGn.?l2U\^JcC<$U]:>oJcC<$JcC<$WW2boq>^BnJcD/<m/Zt^o)S+VJ,~>
+JcC]/r;cNjnGn.?l2U\^JcC<$U]:>oJcC<$JcC<$WW2boq>^BnJcD/<m/Zt^o)S+VJ,~>
+JcC]/r;cNjnGn.?l2U\^JcC<$U]:>oJcC<$JcC<$WW2boq>^BnJcD/<m/Zt^o)S+VJ,~>
+JcC]/r;cNjnGn.?l2U\^JcC<$U]:>oJcC<$JcC<$WW2boq>^BnJcD/<m/Zt^o)S+VJ,~>
+JcC]/r;cHhpAfdEiW&iVJcC<$VuQbsJcC<$JcC<$YQ+J"mJm+bJcD;@m/Zn\q#KUXJ,~>
+JcC]/r;cHhpAfdEiW&iVJcC<$VuQbsJcC<$JcC<$YQ+J"mJm+bJcD;@m/Zn\q#KUXJ,~>
+JcC]/r;cHhpAfdEiW&iVJcC<$VuQbsJcC<$JcC<$YQ+J"mJm+bJcD;@m/Zn\q#KUXJ,~>
+JcC]/r;cHhpAfdEiW&iVJcC<$VuQbsJcC<$JcC<$YQ+J"mJm+bJcD;@m/Zn\q#KUXJ,~>
+JcC]/r;cHhpAfdEiW&iVJcC<$VuQbsJcC<$JcC<$YQ+J"mJm+bJcD;@m/Zn\q#KUXJ,~>
+JcC]/r;cHhpAfdEiW&iVJcC<$VuQbsJcC<$JcC<$YQ+J"mJm+bJcD;@m/Zn\q#KUXJ,~>
+JcC<$JcEsor;_EKJcDeNrr at WMJcC<$JcE4Zq#KITr;_EKJcF^/J,~>
+JcC<$JcEsor;_EKJcDeNrr at WMJcC<$JcE4Zq#KITr;_EKJcF^/J,~>
+JcC<$JcEsor;_EKJcDeNrr at WMJcC<$JcE4Zq#KITr;_EKJcF^/J,~>
+JcC<$JcEsor;_EKJcDeNrr at WMJcC<$JcE4Zq#KITr;_EKJcF^/J,~>
+JcC<$JcEsor;_EKJcDeNrr at WMJcC<$JcE4Zq#KITr;_EKJcF^/J,~>
+JcC<$JcEsor;_EKJcDeNrr at WMJcC<$JcE4Zq#KITr;_EKJcF^/J,~>
+JcC<$JcEgkqZ)3IJcE"Trr at WMJcC<$JcELbq#K%Hr;_EKJcFj3J,~>
+JcC<$JcEgkqZ)3IJcE"Trr at WMJcC<$JcELbq#K%Hr;_EKJcFj3J,~>
+JcC<$JcEgkqZ)3IJcE"Trr at WMJcC<$JcELbq#K%Hr;_EKJcFj3J,~>
+JcC<$JcEgkqZ)3IJcE"Trr at WMJcC<$JcELbq#K%Hr;_EKJcFj3J,~>
+JcC<$JcEgkqZ)3IJcE"Trr at WMJcC<$JcELbq#K%Hr;_EKJcFj3J,~>
+JcC<$JcEgkqZ)3IJcE"Trr at WMJcC<$JcELbq#K%Hr;_EKJcFj3J,~>
+JcC<$JcEUer;_EKJcE.Xrr at WMJcC<$JcEdjq#JV<rr at WMJcFp5J,~>
+JcC<$JcEUer;_EKJcE.Xrr at WMJcC<$JcEdjq#JV<rr at WMJcFp5J,~>
+JcC<$JcEUer;_EKJcE.Xrr at WMJcC<$JcEdjq#JV<rr at WMJcFp5J,~>
+JcC<$JcEUer;_EKJcE.Xrr at WMJcC<$JcEdjq#JV<rr at WMJcFp5J,~>
+JcC<$JcEUer;_EKJcE.Xrr at WMJcC<$JcEdjq#JV<rr at WMJcFp5J,~>
+JcC<$JcEUer;_EKJcE.Xrr at WMJcC<$JcEdjq#JV<rr at WMJcFp5J,~>
+JcC<$JcEIar;_EKJcE:\rr at WMJcC<$JcF!pqZ)3IJcDYJJ,~>
+JcC<$JcEIar;_EKJcE:\rr at WMJcC<$JcF!pqZ)3IJcDYJJ,~>
+JcC<$JcEIar;_EKJcE:\rr at WMJcC<$JcF!pqZ)3IJcDYJJ,~>
+JcC<$JcEIar;_EKJcE:\rr at WMJcC<$JcF!pqZ)3IJcDYJJ,~>
+JcC<$JcEIar;_EKJcE:\rr at WMJcC<$JcF!pqZ)3IJcDYJJ,~>
+JcC<$JcEIar;_EKJcE:\rr at WMJcC<$JcF!pqZ)3IJcDYJJ,~>
+JcC<$JcE=]r;_EKJcEF`rr at WMJcC<$JcF:#q#H!GJcDGDJ,~>
+JcC<$JcE=]r;_EKJcEF`rr at WMJcC<$JcF:#q#H!GJcDGDJ,~>
+JcC<$JcE=]r;_EKJcEF`rr at WMJcC<$JcF:#q#H!GJcDGDJ,~>
+JcC<$JcE=]r;_EKJcEF`rr at WMJcC<$JcF:#q#H!GJcDGDJ,~>
+JcC<$JcE=]r;_EKJcEF`rr at WMJcC<$JcF:#q#H!GJcDGDJ,~>
+JcC<$JcE=]r;_EKJcEF`rr at WMJcC<$JcF:#q#H!GJcDGDJ,~>
+JcC<$JcE1Yr;_EKJcERdrr at WMJcC<$JcFR+q#H!GJcD/<J,~>
+JcC<$JcE1Yr;_EKJcERdrr at WMJcC<$JcFR+q#H!GJcD/<J,~>
+JcC<$JcE1Yr;_EKJcERdrr at WMJcC<$JcFR+q#H!GJcD/<J,~>
+JcC<$JcE1Yr;_EKJcERdrr at WMJcC<$JcFR+q#H!GJcD/<J,~>
+JcC<$JcE1Yr;_EKJcERdrr at WMJcC<$JcFR+q#H!GJcD/<J,~>
+JcC<$JcE1Yr;_EKJcERdrr at WMJcC<$JcFR+q#H!GJcD/<J,~>
+JcC<$JcE%Ur;_EKJcE^hrr at WMJcC<$JcFj3q#H!GJcCl4J,~>
+JcC<$JcE%Ur;_EKJcE^hrr at WMJcC<$JcFj3q#H!GJcCl4J,~>
+JcC<$JcE%Ur;_EKJcE^hrr at WMJcC<$JcFj3q#H!GJcCl4J,~>
+JcC<$JcE%Ur;_EKJcE^hrr at WMJcC<$JcFj3q#H!GJcCl4J,~>
+JcC<$JcE%Ur;_EKJcE^hrr at WMJcC<$JcFj3q#H!GJcCl4J,~>
+JcC<$JcE%Ur;_EKJcE^hrr at WMJcC<$JcFj3q#H!GJcCl4J,~>
+JcC<$JcDnQqZ)3IJcEpnrr at WMJcC<$JcG'9qZ)3IJcCT,J,~>
+JcC<$JcDnQqZ)3IJcEpnrr at WMJcC<$JcG'9qZ)3IJcCT,J,~>
+JcC<$JcDnQqZ)3IJcEpnrr at WMJcC<$JcG'9qZ)3IJcCT,J,~>
+JcC<$JcDnQqZ)3IJcEpnrr at WMJcC<$JcG'9qZ)3IJcCT,J,~>
+JcC<$JcDnQqZ)3IJcEpnrr at WMJcC<$JcG'9qZ)3IJcCT,J,~>
+JcC<$JcDnQqZ)3IJcEpnrr at WMJcC<$JcG'9qZ)3IJcCT,J,~>
+JcC<$JcDhOq#H!GJcF'rrr at WMJcC<$JcG?Aq#H!GJcCB&J,~>
+JcC<$JcDhOq#H!GJcF'rrr at WMJcC<$JcG?Aq#H!GJcCB&J,~>
+JcC<$JcDhOq#H!GJcF'rrr at WMJcC<$JcG?Aq#H!GJcCB&J,~>
+JcC<$JcDhOq#H!GJcF'rrr at WMJcC<$JcG?Aq#H!GJcCB&J,~>
+JcC<$JcDhOq#H!GJcF'rrr at WMJcC<$JcG?Aq#H!GJcCB&J,~>
+JcC<$JcDhOq#H!GJcF'rrr at WMJcC<$JcG?Aq#H!GJcCB&J,~>
+JcC<$JcE+Wq#L6jr;_EKJcF4!rr at WMJcC<$JcGWIq#H!GJcC<$qu;0~>
+JcC<$JcE+Wq#L6jr;_EKJcF4!rr at WMJcC<$JcGWIq#H!GJcC<$qu;0~>
+JcC<$JcE+Wq#L6jr;_EKJcF4!rr at WMJcC<$JcGWIq#H!GJcC<$qu;0~>
+JcC<$JcE+Wq#L6jr;_EKJcF4!rr at WMJcC<$JcGWIq#H!GJcC<$qu;0~>
+JcC<$JcE+Wq#L6jr;_EKJcF4!rr at WMJcC<$JcGWIq#H!GJcC<$qu;0~>
+JcC<$JcE+Wq#L6jr;_EKJcF4!rr at WMJcC<$JcGWIq#H!GJcC<$qu;0~>
+JcC<$JcEC_q#Kg^r;_EKJcF@%rr at WMJcC<$KE(`IJcC<$JcG?AJ,~>
+JcC<$JcEC_q#Kg^r;_EKJcF@%rr at WMJcC<$KE(`IJcC<$JcG?AJ,~>
+JcC<$JcEC_q#Kg^r;_EKJcF@%rr at WMJcC<$KE(`IJcC<$JcG?AJ,~>
+JcC<$JcEC_q#Kg^r;_EKJcF@%rr at WMJcC<$KE(`IJcC<$JcG?AJ,~>
+JcC<$JcEC_q#Kg^r;_EKJcF@%rr at WMJcC<$KE(`IJcC<$JcG?AJ,~>
+JcC<$JcEC_q#Kg^r;_EKJcF@%rr at WMJcC<$KE(`IJcC<$JcG?AJ,~>
+JcC<$JcEIarrD$Xr;_EKJcFL)rr at WMJcC<$M?!GQJcG-;rr at WMJcC6~>
+JcC<$JcEIarrD$Xr;_EKJcFL)rr at WMJcC<$M?!GQJcG-;rr at WMJcC6~>
+JcC<$JcEIarrD$Xr;_EKJcFL)rr at WMJcC<$M?!GQJcG-;rr at WMJcC6~>
+JcC<$JcEIarrD$Xr;_EKJcFL)rr at WMJcC<$M?!GQJcG-;rr at WMJcC6~>
+JcC<$JcEIarrD$Xr;_EKJcFL)rr at WMJcC<$M?!GQJcG-;rr at WMJcC6~>
+JcC<$JcEIarrD$Xr;_EKJcFL)rr at WMJcC<$M?!GQJcG-;rr at WMJcC6~>
+JcC<$JcD,;r;_EKJcFX-rr at WMJcC<$OoP4WJcG!7r;cNjnGn.?Sc=3~>
+JcC<$JcD,;r;_EKJcFX-rr at WMJcC<$OoP4WJcG!7r;cNjnGn.?Sc=3~>
+JcC<$JcD,;r;_EKJcFX-rr at WMJcC<$OoP4WJcG!7r;cNjnGn.?Sc=3~>
+JcC<$JcD,;r;_EKJcFX-rr at WMJcC<$OoP4WJcG!7r;cNjnGn.?Sc=3~>
+JcC<$JcD,;r;_EKJcFX-rr at WMJcC<$OoP4WJcG!7r;cNjnGn.?Sc=3~>
+JcC<$JcD,;r;_EKJcFX-rr at WMJcC<$OoP4WJcG!7r;cNjnGn.?Sc=3~>
+JcC<$JcCu7qZ)3IJcFj3rr at WMJcC<$RK*'_JcFd1qZ-<hnGn.?Sc=3~>
+JcC<$JcCu7qZ)3IJcFj3rr at WMJcC<$RK*'_JcFd1qZ-<hnGn.?Sc=3~>
+JcC<$JcCu7qZ)3IJcFj3rr at WMJcC<$RK*'_JcFd1qZ-<hnGn.?Sc=3~>
+JcC<$JcCu7qZ)3IJcFj3rr at WMJcC<$RK*'_JcFd1qZ-<hnGn.?Sc=3~>
+JcC<$JcCu7qZ)3IJcFj3rr at WMJcC<$RK*'_JcFd1qZ-<hnGn.?Sc=3~>
+JcC<$JcCu7qZ)3IJcFj3rr at WMJcC<$RK*'_JcFd1qZ-<hnGn.?Sc=3~>
+JcC<$JcCc1r;_EKJcG!7rr at WMJcC<$U&XogJcF^/o`4[br;_EKOoKq~>
+JcC<$JcCc1r;_EKJcG!7rr at WMJcC<$U&XogJcF^/o`4[br;_EKOoKq~>
+JcC<$JcCc1r;_EKJcG!7rr at WMJcC<$U&XogJcF^/o`4[br;_EKOoKq~>
+JcC<$JcCc1r;_EKJcG!7rr at WMJcC<$U&XogJcF^/o`4[br;_EKOoKq~>
+JcC<$JcCc1r;_EKJcG!7rr at WMJcC<$U&XogJcF^/o`4[br;_EKOoKq~>
+JcC<$JcCc1r;_EKJcG!7rr at WMJcC<$U&XogJcF^/o`4[br;_EKOoKq~>
+JcC<$JcCW-r;_EKJcG-;rr at WMJcC<$VuQVoJcFF'o`4[br;_EKOoKq~>
+JcC<$JcCW-r;_EKJcG-;rr at WMJcC<$VuQVoJcFF'o`4[br;_EKOoKq~>
+JcC<$JcCW-r;_EKJcG-;rr at WMJcC<$VuQVoJcFF'o`4[br;_EKOoKq~>
+JcC<$JcCW-r;_EKJcG-;rr at WMJcC<$VuQVoJcFF'o`4[br;_EKOoKq~>
+JcC<$JcCW-r;_EKJcG-;rr at WMJcC<$VuQVoJcFF'o`4[br;_EKOoKq~>
+JcC<$JcCW-r;_EKJcG-;rr at WMJcC<$VuQVoJcFF'o`4[br;_EKOoKq~>
+JcC<$JcCK)r;_EKJcG9?rr at WMJcC<$YQ+CuJcEpnr;cNjr;_EKOoKq~>
+JcC<$JcCK)r;_EKJcG9?rr at WMJcC<$YQ+CuJcEpnr;cNjr;_EKOoKq~>
+JcC<$JcCK)r;_EKJcG9?rr at WMJcC<$YQ+CuJcEpnr;cNjr;_EKOoKq~>
+JcC<$JcCK)r;_EKJcG9?rr at WMJcC<$YQ+CuJcEpnr;cNjr;_EKOoKq~>
+JcC<$JcCK)r;_EKJcG9?rr at WMJcC<$YQ+CuJcEpnr;cNjr;_EKOoKq~>
+JcC<$JcCK)r;_EKJcG9?rr at WMJcC<$YQ+CuJcEpnr;cNjr;_EKOoKq~>
+JcC<$JcC?%r;_EKJcGECrr at WMJcC<$\,Z7(JcEXfr;cNjrrE*!pAfdES,\!~>
+JcC<$JcC?%r;_EKJcGECrr at WMJcC<$\,Z7(JcEXfr;cNjrrE*!pAfdES,\!~>
+JcC<$JcC?%r;_EKJcGECrr at WMJcC<$\,Z7(JcEXfr;cNjrrE*!pAfdES,\!~>
+JcC<$JcC?%r;_EKJcGECrr at WMJcC<$\,Z7(JcEXfr;cNjrrE*!pAfdES,\!~>
+JcC<$JcC?%r;_EKJcGECrr at WMJcC<$\,Z7(JcEXfr;cNjrrE*!pAfdES,\!~>
+JcC<$JcC?%r;_EKJcGECrr at WMJcC<$\,Z7(JcEXfr;cNjrrE*!pAfdES,\!~>
+JcC<$JcC<$rr;iqJcC<$qu?ZrJcC<$JcEF`qZ)3I]Dqg0p]'[^JcD;@J,~>
+JcC<$JcC<$rr;iqJcC<$qu?ZrJcC<$JcEF`qZ)3I]Dqg0p]'[^JcD;@J,~>
+JcC<$JcC<$rr;iqJcC<$qu?ZrJcC<$JcEF`qZ)3I]Dqg0p]'[^JcD;@J,~>
+JcC<$JcC<$rr;iqJcC<$qu?ZrJcC<$JcEF`qZ)3I]Dqg0p]'[^JcD;@J,~>
+JcC<$JcC<$rr;iqJcC<$qu?ZrJcC<$JcEF`qZ)3I]Dqg0p]'[^JcD;@J,~>
+JcC<$JcC<$rr;iqJcC<$qu?ZrJcC<$JcEF`qZ)3I]Dqg0p]'[^JcD;@J,~>
+JcC<$JcC<$q#C9mJcC<$s8W*!JcC<$JcE^hq#H!G[K$1*p](0lp](*jJcDABJ,~>
+JcC<$JcC<$q#C9mJcC<$s8W*!JcC<$JcE^hq#H!G[K$1*p](0lp](*jJcDABJ,~>
+JcC<$JcC<$q#C9mJcC<$s8W*!JcC<$JcE^hq#H!G[K$1*p](0lp](*jJcDABJ,~>
+JcC<$JcC<$q#C9mJcC<$s8W*!JcC<$JcE^hq#H!G[K$1*p](0lp](*jJcDABJ,~>
+JcC<$JcC<$q#C9mJcC<$s8W*!JcC<$JcE^hq#H!G[K$1*p](0lp](*jJcDABJ,~>
+JcC<$JcC<$q#C9mJcC<$s8W*!JcC<$JcE^hq#H!G[K$1*p](0lp](*jJcDABJ,~>
+JcC<$JcG0<rr at oUr;_EKKE(rOJcC<$JcF!pq#H!GXoJ>"kPtJ\JcDABJ,~>
+JcC<$JcG0<rr at oUr;_EKKE(rOJcC<$JcF!pq#H!GXoJ>"kPtJ\JcDABJ,~>
+JcC<$JcG0<rr at oUr;_EKKE(rOJcC<$JcF!pq#H!GXoJ>"kPtJ\JcDABJ,~>
+JcC<$JcG0<rr at oUr;_EKKE(rOJcC<$JcF!pq#H!GXoJ>"kPtJ\JcDABJ,~>
+JcC<$JcG0<rr at oUr;_EKKE(rOJcC<$JcF!pq#H!GXoJ>"kPtJ\JcDABJ,~>
+JcC<$JcG0<rr at oUr;_EKKE(rOJcC<$JcF!pq#H!GXoJ>"kPtJ\JcDABJ,~>
+JcC<$JcG6>r;cBfq#Hucr;_EKL]@ASJcC<$JcF:#q#H!GV>pJokPtJ\JcDABJ,~>
+JcC<$JcG6>r;cBfq#Hucr;_EKL]@ASJcC<$JcF:#q#H!GV>pJokPtJ\JcDABJ,~>
+JcC<$JcG6>r;cBfq#Hucr;_EKL]@ASJcC<$JcF:#q#H!GV>pJokPtJ\JcDABJ,~>
+JcC<$JcG6>r;cBfq#Hucr;_EKL]@ASJcC<$JcF:#q#H!GV>pJokPtJ\JcDABJ,~>
+JcC<$JcG6>r;cBfq#Hucr;_EKL]@ASJcC<$JcF:#q#H!GV>pJokPtJ\JcDABJ,~>
+JcC<$JcG6>r;cBfq#Hucr;_EKL]@ASJcC<$JcF:#q#H!GV>pJokPtJ\JcDABJ,~>
+JcC<$JcG<@qZ-6fo`1K]r;_EKMuWeWJcC<$JcFL)qZ)3IScAWgkPtJ\JcDABJ,~>
+JcC<$JcG<@qZ-6fo`1K]r;_EKMuWeWJcC<$JcFL)qZ)3IScAWgkPtJ\JcDABJ,~>
+JcC<$JcG<@qZ-6fo`1K]r;_EKMuWeWJcC<$JcFL)qZ)3IScAWgkPtJ\JcDABJ,~>
+JcC<$JcG<@qZ-6fo`1K]r;_EKMuWeWJcC<$JcFL)qZ)3IScAWgkPtJ\JcDABJ,~>
+JcC<$JcG<@qZ-6fo`1K]r;_EKMuWeWJcC<$JcFL)qZ)3IScAWgkPtJ\JcDABJ,~>
+JcC<$JcG<@qZ-6fo`1K]r;_EKMuWeWJcC<$JcFL)qZ)3IScAWgkPtJ\JcDABJ,~>
+JcC<$JcGNFo`4[br;cZnr;`8cr;_EKO8o4[JcC<$JcFd1q#H!GQiI!ap](0lp&FsjJcDABJ,~>
+JcC<$JcGNFo`4[br;cZnr;`8cr;_EKO8o4[JcC<$JcFd1q#H!GQiI!ap](0lp&FsjJcDABJ,~>
+JcC<$JcGNFo`4[br;cZnr;`8cr;_EKO8o4[JcC<$JcFd1q#H!GQiI!ap](0lp&FsjJcDABJ,~>
+JcC<$JcGNFo`4[br;cZnr;`8cr;_EKO8o4[JcC<$JcFd1q#H!GQiI!ap](0lp&FsjJcDABJ,~>
+JcC<$JcGNFo`4[br;cZnr;`8cr;_EKO8o4[JcC<$JcFd1q#H!GQiI!ap](0lp&FsjJcDABJ,~>
+JcC<$JcGNFo`4[br;cZnr;`8cr;_EKO8o4[JcC<$JcFd1q#H!GQiI!ap](0lp&FsjJcDABJ,~>
+JcC<$JcGNFo`4[br;cZnr;`,_qZ)3IQ2gjaJcC<$JcG'9q#H!GO8o.Yp](*jq>^BnJcD;@J,~>
+JcC<$JcGNFo`4[br;cZnr;`,_qZ)3IQ2gjaJcC<$JcG'9q#H!GO8o.Yp](*jq>^BnJcD;@J,~>
+JcC<$JcGNFo`4[br;cZnr;`,_qZ)3IQ2gjaJcC<$JcG'9q#H!GO8o.Yp](*jq>^BnJcD;@J,~>
+JcC<$JcGNFo`4[br;cZnr;`,_qZ)3IQ2gjaJcC<$JcG'9q#H!GO8o.Yp](*jq>^BnJcD;@J,~>
+JcC<$JcGNFo`4[br;cZnr;`,_qZ)3IQ2gjaJcC<$JcG'9q#H!GO8o.Yp](*jq>^BnJcD;@J,~>
+JcC<$JcGNFo`4[br;cZnr;`,_qZ)3IQ2gjaJcC<$JcG'9q#H!GO8o.Yp](*jq>^BnJcD;@J,~>
+JcC<$JcG6>r;cTlr;cNjr;_u[r;_EKRK*9eJcC<$JcG?Aq#LBnrr at WMNW8qWp&FO^JcD;@J,~>
+JcC<$JcG6>r;cTlr;cNjr;_u[r;_EKRK*9eJcC<$JcG?Aq#LBnrr at WMNW8qWp&FO^JcD;@J,~>
+JcC<$JcG6>r;cTlr;cNjr;_u[r;_EKRK*9eJcC<$JcG?Aq#LBnrr at WMNW8qWp&FO^JcD;@J,~>
+JcC<$JcG6>r;cTlr;cNjr;_u[r;_EKRK*9eJcC<$JcG?Aq#LBnrr at WMNW8qWp&FO^JcD;@J,~>
+JcC<$JcG6>r;cTlr;cNjr;_u[r;_EKRK*9eJcC<$JcG?Aq#LBnrr at WMNW8qWp&FO^JcD;@J,~>
+JcC<$JcG6>r;cTlr;cNjr;_u[r;_EKRK*9eJcC<$JcG?Aq#LBnrr at WMNW8qWp&FO^JcD;@J,~>
+JcC<$JcG6>r;cTlr;cNjr;_iWr;_EKScA]iJcC<$JcGQGqZ-6fr;_EKOoP@[oDeObJcD/<J,~>
+JcC<$JcG6>r;cTlr;cNjr;_iWr;_EKScA]iJcC<$JcGQGqZ-6fr;_EKOoP@[oDeObJcD/<J,~>
+JcC<$JcG6>r;cTlr;cNjr;_iWr;_EKScA]iJcC<$JcGQGqZ-6fr;_EKOoP@[oDeObJcD/<J,~>
+JcC<$JcG6>r;cTlr;cNjr;_iWr;_EKScA]iJcC<$JcGQGqZ-6fr;_EKOoP@[oDeObJcD/<J,~>
+JcC<$JcG6>r;cTlr;cNjr;_iWr;_EKScA]iJcC<$JcGQGqZ-6fr;_EKOoP@[oDeObJcD/<J,~>
+JcC<$JcG6>r;cTlr;cNjr;_iWr;_EKScA]iJcC<$JcGQGqZ-6fr;_EKOoP@[oDeObJcD/<J,~>
+JcC<$JcG6>r;cTlr;cNjr;_]Sr;_EKU&Y,mJcC<$JcGNGl2U\^JcC<$JcCl4J,~>
+JcC<$JcG6>r;cTlr;cNjr;_]Sr;_EKU&Y,mJcC<$JcGNGl2U\^JcC<$JcCl4J,~>
+JcC<$JcG6>r;cTlr;cNjr;_]Sr;_EKU&Y,mJcC<$JcGNGl2U\^JcC<$JcCl4J,~>
+JcC<$JcG6>r;cTlr;cNjr;_]Sr;_EKU&Y,mJcC<$JcGNGl2U\^JcC<$JcCl4J,~>
+JcC<$JcG6>r;cTlr;cNjr;_]Sr;_EKU&Y,mJcC<$JcGNGl2U\^JcC<$JcCl4J,~>
+JcC<$JcG6>r;cTlr;cNjr;_]Sr;_EKU&Y,mJcC<$JcGNGl2U\^JcC<$JcCl4J,~>
+JcC<$JcG6>r;cTlr;cNjr;_QOr;_EKV>pPqJcC<$M?!AOh>dERJcC<$JcD#8J,~>
+JcC<$JcG6>r;cTlr;cNjr;_QOr;_EKV>pPqJcC<$M?!AOh>dERJcC<$JcD#8J,~>
+JcC<$JcG6>r;cTlr;cNjr;_QOr;_EKV>pPqJcC<$M?!AOh>dERJcC<$JcD#8J,~>
+JcC<$JcG6>r;cTlr;cNjr;_QOr;_EKV>pPqJcC<$M?!AOh>dERJcC<$JcD#8J,~>
+JcC<$JcG6>r;cTlr;cNjr;_QOr;_EKV>pPqJcC<$M?!AOh>dERJcC<$JcD#8J,~>
+JcC<$JcG6>r;cTlr;cNjr;_QOr;_EKV>pPqJcC<$M?!AOh>dERJcC<$JcD#8J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKqZ)3IX8i2"JcC<$OoP4WdJs.FJcC<$JcD/<J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKqZ)3IX8i2"JcC<$OoP4WdJs.FJcC<$JcD/<J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKqZ)3IX8i2"JcC<$OoP4WdJs.FJcC<$JcD/<J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKqZ)3IX8i2"JcC<$OoP4WdJs.FJcC<$JcD/<J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKqZ)3IX8i2"JcC<$OoP4WdJs.FJcC<$JcD/<J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKqZ)3IX8i2"JcC<$OoP4WdJs.FJcC<$JcD/<J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKqu?TpJcDqRrr at WMJcD):qZ)3IJcC<$JcFR+J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKqu?TpJcDqRrr at WMJcD):qZ)3IJcC<$JcFR+J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKqu?TpJcDqRrr at WMJcD):qZ)3IJcC<$JcFR+J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKqu?TpJcDqRrr at WMJcD):qZ)3IJcC<$JcFR+J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKqu?TpJcDqRrr at WMJcD):qZ)3IJcC<$JcFR+J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKqu?TpJcDqRrr at WMJcD):qZ)3IJcC<$JcFR+J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKp](0lJcE(Vrr at WMJcDABq#H!GJcC<$JcF@%J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKp](0lJcE(Vrr at WMJcDABq#H!GJcC<$JcF@%J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKp](0lJcE(Vrr at WMJcDABq#H!GJcC<$JcF@%J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKp](0lJcE(Vrr at WMJcDABq#H!GJcC<$JcF@%J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKp](0lJcE(Vrr at WMJcDABq#H!GJcC<$JcF@%J,~>
+JcC<$JcG6>r;cTlr;cNjr;_EKp](0lJcE(Vrr at WMJcDABq#H!GJcC<$JcF@%J,~>
+JcC<$JcG6>r;cNjr;cZnqZ)3IoDeahJcE4Zrr at WMJcDYJq#H!GJcC<$JcF'rJ,~>
+JcC<$JcG6>r;cNjr;cZnqZ)3IoDeahJcE4Zrr at WMJcDYJq#H!GJcC<$JcF'rJ,~>
+JcC<$JcG6>r;cNjr;cZnqZ)3IoDeahJcE4Zrr at WMJcDYJq#H!GJcC<$JcF'rJ,~>
+JcC<$JcG6>r;cNjr;cZnqZ)3IoDeahJcE4Zrr at WMJcDYJq#H!GJcC<$JcF'rJ,~>
+JcC<$JcG6>r;cNjr;cZnqZ)3IoDeahJcE4Zrr at WMJcDYJq#H!GJcC<$JcF'rJ,~>
+JcC<$JcG6>r;cNjr;cZnqZ)3IoDeahJcE4Zrr at WMJcDYJq#H!GJcC<$JcF'rJ,~>
+JcC<$JcG6>r;cNjr;cZnr;_EKmJm+bJcE@^rr at WMJcDkPqZ)3IJcC<$JcEdjJ,~>
+JcC<$JcG6>r;cNjr;cZnr;_EKmJm+bJcE@^rr at WMJcDkPqZ)3IJcC<$JcEdjJ,~>
+JcC<$JcG6>r;cNjr;cZnr;_EKmJm+bJcE@^rr at WMJcDkPqZ)3IJcC<$JcEdjJ,~>
+JcC<$JcG6>r;cNjr;cZnr;_EKmJm+bJcE@^rr at WMJcDkPqZ)3IJcC<$JcEdjJ,~>
+JcC<$JcG6>r;cNjr;cZnr;_EKmJm+bJcE@^rr at WMJcDkPqZ)3IJcC<$JcEdjJ,~>
+JcC<$JcG6>r;cNjr;cZnr;_EKmJm+bJcE@^rr at WMJcDkPqZ)3IJcC<$JcEdjJ,~>
+JcC<$JcG6>r;cHho)O at Al2U\^JcELbrr at WMJcE.Xq#H!GJcC<$JcERdJ,~>
+JcC<$JcG6>r;cHho)O at Al2U\^JcELbrr at WMJcE.Xq#H!GJcC<$JcERdJ,~>
+JcC<$JcG6>r;cHho)O at Al2U\^JcELbrr at WMJcE.Xq#H!GJcC<$JcERdJ,~>
+JcC<$JcG6>r;cHho)O at Al2U\^JcELbrr at WMJcE.Xq#H!GJcC<$JcERdJ,~>
+JcC<$JcG6>r;cHho)O at Al2U\^JcELbrr at WMJcE.Xq#H!GJcC<$JcERdJ,~>
+JcC<$JcG6>r;cHho)O at Al2U\^JcELbrr at WMJcE.Xq#H!GJcC<$JcERdJ,~>
+JcC<$JcG6>r;cBfq#H!GiW&cTJcE^hrr at WMJcEF`q#H!GJcC<$JcE:\J,~>
+JcC<$JcG6>r;cBfq#H!GiW&cTJcE^hrr at WMJcEF`q#H!GJcC<$JcE:\J,~>
+JcC<$JcG6>r;cBfq#H!GiW&cTJcE^hrr at WMJcEF`q#H!GJcC<$JcE:\J,~>
+JcC<$JcG6>r;cBfq#H!GiW&cTJcE^hrr at WMJcEF`q#H!GJcC<$JcE:\J,~>
+JcC<$JcG6>r;cBfq#H!GiW&cTJcE^hrr at WMJcEF`q#H!GJcC<$JcE:\J,~>
+JcC<$JcG6>r;cBfq#H!GiW&cTJcE^hrr at WMJcEF`q#H!GJcC<$JcE:\J,~>
+JcC<$JcC<$Y5eG#JcEjlrr at WMJcE^hq#H!GJcC<$JcE"TJ,~>
+JcC<$JcC<$Y5eG#JcEjlrr at WMJcE^hq#H!GJcC<$JcE"TJ,~>
+JcC<$JcC<$Y5eG#JcEjlrr at WMJcE^hq#H!GJcC<$JcE"TJ,~>
+JcC<$JcC<$Y5eG#JcEjlrr at WMJcE^hq#H!GJcC<$JcE"TJ,~>
+JcC<$JcC<$Y5eG#JcEjlrr at WMJcE^hq#H!GJcC<$JcE"TJ,~>
+JcC<$JcC<$Y5eG#JcEjlrr at WMJcE^hq#H!GJcC<$JcE"TJ,~>
+JcC<$JcC<$WrN"tJcF!prr at WMJcEpnqZ)3IJcC<$JcD_LJ,~>
+JcC<$JcC<$WrN"tJcF!prr at WMJcEpnqZ)3IJcC<$JcD_LJ,~>
+JcC<$JcC<$WrN"tJcF!prr at WMJcEpnqZ)3IJcC<$JcD_LJ,~>
+JcC<$JcC<$WrN"tJcF!prr at WMJcEpnqZ)3IJcC<$JcD_LJ,~>
+JcC<$JcC<$WrN"tJcF!prr at WMJcEpnqZ)3IJcC<$JcD_LJ,~>
+JcC<$JcC<$WrN"tJcF!prr at WMJcEpnqZ)3IJcC<$JcD_LJ,~>
+JcC<$JcC<$VZ6SpJcF-trr at WMJcF4!q#H!GJcC<$JcDMFJ,~>
+JcC<$JcC<$VZ6SpJcF-trr at WMJcF4!q#H!GJcC<$JcDMFJ,~>
+JcC<$JcC<$VZ6SpJcF-trr at WMJcF4!q#H!GJcC<$JcDMFJ,~>
+JcC<$JcC<$VZ6SpJcF-trr at WMJcF4!q#H!GJcC<$JcDMFJ,~>
+JcC<$JcC<$VZ6SpJcF-trr at WMJcF4!q#H!GJcC<$JcDMFJ,~>
+JcC<$JcC<$VZ6SpJcF-trr at WMJcF4!q#H!GJcC<$JcDMFJ,~>
+JcC<$JcC<$UAt/lJcF:#rr at WMJcFL)q#H!Gl2Ub`JcC<$JcE.XJ,~>
+JcC<$JcC<$UAt/lJcF:#rr at WMJcFL)q#H!Gl2Ub`JcC<$JcE.XJ,~>
+JcC<$JcC<$UAt/lJcF:#rr at WMJcFL)q#H!Gl2Ub`JcC<$JcE.XJ,~>
+JcC<$JcC<$UAt/lJcF:#rr at WMJcFL)q#H!Gl2Ub`JcC<$JcE.XJ,~>
+JcC<$JcC<$UAt/lJcF:#rr at WMJcFL)q#H!Gl2Ub`JcC<$JcE.XJ,~>
+JcC<$JcC<$UAt/lJcF:#rr at WMJcFL)q#H!Gl2Ub`JcC<$JcE.XJ,~>
+JcC<$JcC<$T)\ZfJcFL)rr at WMJcFd1q#H!Gj8]&Xnc/CbJcC<$JcF!pJ,~>
+JcC<$JcC<$T)\ZfJcFL)rr at WMJcFd1q#H!Gj8]&Xnc/CbJcC<$JcF!pJ,~>
+JcC<$JcC<$T)\ZfJcFL)rr at WMJcFd1q#H!Gj8]&Xnc/CbJcC<$JcF!pJ,~>
+JcC<$JcC<$T)\ZfJcFL)rr at WMJcFd1q#H!Gj8]&Xnc/CbJcC<$JcF!pJ,~>
+JcC<$JcC<$T)\ZfJcFL)rr at WMJcFd1q#H!Gj8]&Xnc/CbJcC<$JcF!pJ,~>
+JcC<$JcC<$T)\ZfJcFL)rr at WMJcFd1q#H!Gj8]&Xnc/CbJcC<$JcF!pJ,~>
+JcC<$JcC<$R/d*bJcFX-rr at WMJcG!7qZ)3Ih>d?PoDeI`JcC<$JcF'rJ,~>
+JcC<$JcC<$R/d*bJcFX-rr at WMJcG!7qZ)3Ih>d?PoDeI`JcC<$JcF'rJ,~>
+JcC<$JcC<$R/d*bJcFX-rr at WMJcG!7qZ)3Ih>d?PoDeI`JcC<$JcF'rJ,~>
+JcC<$JcC<$R/d*bJcFX-rr at WMJcG!7qZ)3Ih>d?PoDeI`JcC<$JcF'rJ,~>
+JcC<$JcC<$R/d*bJcFX-rr at WMJcG!7qZ)3Ih>d?PoDeI`JcC<$JcF'rJ,~>
+JcC<$JcC<$R/d*bJcFX-rr at WMJcG!7qZ)3Ih>d?PoDeI`JcC<$JcF'rJ,~>
+JcC<$JcC<$PlL[^JcFd1rr at WMJcG9?q#H!Gh>d-Jp&Fsjq>^BnJcC<$JcF-tJ,~>
+JcC<$JcC<$PlL[^JcFd1rr at WMJcG9?q#H!Gh>d-Jp&Fsjq>^BnJcC<$JcF-tJ,~>
+JcC<$JcC<$PlL[^JcFd1rr at WMJcG9?q#H!Gh>d-Jp&Fsjq>^BnJcC<$JcF-tJ,~>
+JcC<$JcC<$PlL[^JcFd1rr at WMJcG9?q#H!Gh>d-Jp&Fsjq>^BnJcC<$JcF-tJ,~>
+JcC<$JcC<$PlL[^JcFd1rr at WMJcG9?q#H!Gh>d-Jp&Fsjq>^BnJcC<$JcF-tJ,~>
+JcC<$JcC<$PlL[^JcFd1rr at WMJcG9?q#H!Gh>d-Jp&Fsjq>^BnJcC<$JcF-tJ,~>
+JcC<$JcC<$OT57ZJcFp5rr at WMJcGQGq#H!Gec5:Bp&Fsjq>^BnJcC<$JcF-tJ,~>
+JcC<$JcC<$OT57ZJcFp5rr at WMJcGQGq#H!Gec5:Bp&Fsjq>^BnJcC<$JcF-tJ,~>
+JcC<$JcC<$OT57ZJcFp5rr at WMJcGQGq#H!Gec5:Bp&Fsjq>^BnJcC<$JcF-tJ,~>
+JcC<$JcC<$OT57ZJcFp5rr at WMJcGQGq#H!Gec5:Bp&Fsjq>^BnJcC<$JcF-tJ,~>
+JcC<$JcC<$OT57ZJcFp5rr at WMJcGQGq#H!Gec5:Bp&Fsjq>^BnJcC<$JcF-tJ,~>
+JcC<$JcC<$OT57ZJcFp5rr at WMJcGQGq#H!Gec5:Bp&Fsjq>^BnJcC<$JcF-tJ,~>
+JcC<$JcC<$OT5+VJcG'9rr at WMJcGNGJcE^hr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$OT5+VJcG'9rr at WMJcGNGJcE^hr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$OT5+VJcG'9rr at WMJcGNGJcE^hr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$OT5+VJcG'9rr at WMJcGNGJcE^hr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$OT5+VJcG'9rr at WMJcGNGJcE^hr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$OT5+VJcG'9rr at WMJcGNGJcE^hr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$QN-g^q>^BnJcG3=rr at WML]@5OJcEF`r;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$QN-g^q>^BnJcG3=rr at WML]@5OJcEF`r;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$QN-g^q>^BnJcG3=rr at WML]@5OJcEF`r;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$QN-g^q>^BnJcG3=rr at WML]@5OJcEF`r;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$QN-g^q>^BnJcG3=rr at WML]@5OJcEF`r;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$QN-g^q>^BnJcG3=rr at WML]@5OJcEF`r;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$T)\Tdn,N7bJcGECrr at WMO8o"UJcE4Zr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$T)\Tdn,N7bJcGECrr at WMO8o"UJcE4Zr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$T)\Tdn,N7bJcGECrr at WMO8o"UJcE4Zr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$T)\Tdn,N7bJcGECrr at WMO8o"UJcE4Zr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$T)\Tdn,N7bJcGECrr at WMO8o"UJcE4Zr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$T)\Tdn,N7bJcGECrr at WMO8o"UJcE4Zr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$T`>#liW&iVJcGQGrr at WMQiHj]JcDqRr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$T`>#liW&iVJcGQGrr at WMQiHj]JcDqRr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$T`>#liW&iVJcGQGrr at WMQiHj]JcDqRr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$T`>#liW&iVJcGQGrr at WMQiHj]JcDqRr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$T`>#liW&iVJcGQGrr at WMQiHj]JcDqRr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$T`>#liW&iVJcGQGrr at WMQiHj]JcDqRr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$JcGTHr;_EKrVultJcDABq#H!GVuQ\qp](0lp&FsjJcC<$JcF4!J,~>
+JcC<$JcC<$JcGTHr;_EKrVultJcDABq#H!GVuQ\qp](0lp&FsjJcC<$JcF4!J,~>
+JcC<$JcC<$JcGTHr;_EKrVultJcDABq#H!GVuQ\qp](0lp&FsjJcC<$JcF4!J,~>
+JcC<$JcC<$JcGTHr;_EKrVultJcDABq#H!GVuQ\qp](0lp&FsjJcC<$JcF4!J,~>
+JcC<$JcC<$JcGTHr;_EKrVultJcDABq#H!GVuQ\qp](0lp&FsjJcC<$JcF4!J,~>
+JcC<$JcC<$JcGTHr;_EKrVultJcDABq#H!GVuQ\qp](0lp&FsjJcC<$JcF4!J,~>
+JcC<$JcC<$JcGHDr;_EKrr at WMV>pDmJcDABr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$JcGHDr;_EKrr at WMV>pDmJcDABr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$JcGHDr;_EKrr at WMV>pDmJcDABr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$JcGHDr;_EKrr at WMV>pDmJcDABr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$JcGHDr;_EKrr at WMV>pDmJcDABr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$JcGHDr;_EKrr at WMV>pDmJcDABr;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$JcG<@r;_QOrr at WMXoJ1sJcD/<r;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$JcG<@r;_QOrr at WMXoJ1sJcD/<r;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$JcG<@r;_QOrr at WMXoJ1sJcD/<r;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$JcG<@r;_QOrr at WMXoJ1sJcD/<r;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$JcG<@r;_QOrr at WMXoJ1sJcD/<r;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$JcG<@r;_QOrr at WMXoJ1sJcD/<r;cTlr;cNjr;_EKJcC<$e,Op~>
+JcC<$JcC<$JcG0<qZ)QSrr at WM[K$%&JcCl4r;cNjr;cZnqZ)3IJcC<$e,Op~>
+JcC<$JcC<$JcG0<qZ)QSrr at WM[K$%&JcCl4r;cNjr;cZnqZ)3IJcC<$e,Op~>
+JcC<$JcC<$JcG0<qZ)QSrr at WM[K$%&JcCl4r;cNjr;cZnqZ)3IJcC<$e,Op~>
+JcC<$JcC<$JcG0<qZ)QSrr at WM[K$%&JcCl4r;cNjr;cZnqZ)3IJcC<$e,Op~>
+JcC<$JcC<$JcG0<qZ)QSrr at WM[K$%&JcCl4r;cNjr;cZnqZ)3IJcC<$e,Op~>
+JcC<$JcC<$JcG0<qZ)QSrr at WM[K$%&JcCl4r;cNjr;cZnqZ)3IJcC<$e,Op~>
+JcC<$JcC<$JcFs6r;_oYrr at WM]Dqa.JcCT,r;cNjr;cZnr;_EKJcC<$dJn^~>
+JcC<$JcC<$JcFs6r;_oYrr at WM]Dqa.JcCT,r;cNjr;cZnr;_EKJcC<$dJn^~>
+JcC<$JcC<$JcFs6r;_oYrr at WM]Dqa.JcCT,r;cNjr;cZnr;_EKJcC<$dJn^~>
+JcC<$JcC<$JcFs6r;_oYrr at WM]Dqa.JcCT,r;cNjr;cZnr;_EKJcC<$dJn^~>
+JcC<$JcC<$JcFs6r;_oYrr at WM]Dqa.JcCT,r;cNjr;cZnr;_EKJcC<$dJn^~>
+JcC<$JcC<$JcFs6r;_oYrr at WM]Dqa.JcCT,r;cNjr;cZnr;_EKJcC<$dJn^~>
+JcC<$JcC<$JcFg2r;`&]rr at WM_uKN4qu?TpJcC`0r;cHho)O at AJcC<$dJn^~>
+JcC<$JcC<$JcFg2r;`&]rr at WM_uKN4qu?TpJcC`0r;cHho)O at AJcC<$dJn^~>
+JcC<$JcC<$JcFg2r;`&]rr at WM_uKN4qu?TpJcC`0r;cHho)O at AJcC<$dJn^~>
+JcC<$JcC<$JcFg2r;`&]rr at WM_uKN4qu?TpJcC`0r;cHho)O at AJcC<$dJn^~>
+JcC<$JcC<$JcFg2r;`&]rr at WM_uKN4qu?TpJcC`0r;cHho)O at AJcC<$dJn^~>
+JcC<$JcC<$JcFg2r;`&]rr at WM_uKN4qu?TpJcC`0r;cHho)O at AJcC<$dJn^~>
+JcC<$JcC<$JcF[.r;`2arr at WMbQ%A<n,N=dJcCl4r;cBfq#H!GJcC<$c2W:~>
+JcC<$JcC<$JcF[.r;`2arr at WMbQ%A<n,N=dJcCl4r;cBfq#H!GJcC<$c2W:~>
+JcC<$JcC<$JcF[.r;`2arr at WMbQ%A<n,N=dJcCl4r;cBfq#H!GJcC<$c2W:~>
+JcC<$JcC<$JcF[.r;`2arr at WMbQ%A<n,N=dJcCl4r;cBfq#H!GJcC<$c2W:~>
+JcC<$JcC<$JcF[.r;`2arr at WMbQ%A<n,N=dJcCl4r;cBfq#H!GJcC<$c2W:~>
+JcC<$JcC<$JcF[.r;`2arr at WMbQ%A<n,N=dJcCl4r;cBfq#H!GJcC<$c2W:~>
+JcC<$JcC<$JcFO*r;`>err at WMe,T4Dj8\uVJcC<$JcC<$JcEdjJ,~>
+JcC<$JcC<$JcFO*r;`>err at WMe,T4Dj8\uVJcC<$JcC<$JcEdjJ,~>
+JcC<$JcC<$JcFO*r;`>err at WMe,T4Dj8\uVJcC<$JcC<$JcEdjJ,~>
+JcC<$JcC<$JcFO*r;`>err at WMe,T4Dj8\uVJcC<$JcC<$JcEdjJ,~>
+JcC<$JcC<$JcFO*r;`>err at WMe,T4Dj8\uVJcC<$JcC<$JcEdjJ,~>
+JcC<$JcC<$JcFO*r;`>err at WMe,T4Dj8\uVJcC<$JcC<$JcEdjJ,~>
+JcC<$JcC<$JcFC&r;`Jirr at WMg&LpLec5RJJcC<$JcC<$JcEpnJ,~>
+JcC<$JcC<$JcFC&r;`Jirr at WMg&LpLec5RJJcC<$JcC<$JcEpnJ,~>
+JcC<$JcC<$JcFC&r;`Jirr at WMg&LpLec5RJJcC<$JcC<$JcEpnJ,~>
+JcC<$JcC<$JcFC&r;`Jirr at WMg&LpLec5RJJcC<$JcC<$JcEpnJ,~>
+JcC<$JcC<$JcFC&r;`Jirr at WMg&LpLec5RJJcC<$JcC<$JcEpnJ,~>
+JcC<$JcC<$JcFC&r;`Jirr at WMg&LpLec5RJJcC<$JcC<$JcEpnJ,~>
+JcC<$JcC<$_Z0-+U]:2kV>pPqJcF^/q#JV<rr at WMJcC<$JcC<$c2W:~>
+JcC<$JcC<$_Z0-+U]:2kV>pPqJcF^/q#JV<rr at WMJcC<$JcC<$c2W:~>
+JcC<$JcC<$_Z0-+U]:2kV>pPqJcF^/q#JV<rr at WMJcC<$JcC<$c2W:~>
+JcC<$JcC<$_Z0-+U]:2kV>pPqJcF^/q#JV<rr at WMJcC<$JcC<$c2W:~>
+JcC<$JcC<$_Z0-+U]:2kV>pPqJcF^/q#JV<rr at WMJcC<$JcC<$c2W:~>
+JcC<$JcC<$_Z0-+U]:2kV>pPqJcF^/q#JV<rr at WMJcC<$JcC<$c2W:~>
+JcC<$JcC<$_Z0-+ScAWgWW2tuJcG!7q#H!GJcC<$JcC<$NW4M~>
+JcC<$JcC<$_Z0-+ScAWgWW2tuJcG!7q#H!GJcC<$JcC<$NW4M~>
+JcC<$JcC<$_Z0-+ScAWgWW2tuJcG!7q#H!GJcC<$JcC<$NW4M~>
+JcC<$JcC<$_Z0-+ScAWgWW2tuJcG!7q#H!GJcC<$JcC<$NW4M~>
+JcC<$JcC<$_Z0-+ScAWgWW2tuJcG!7q#H!GJcC<$JcC<$NW4M~>
+JcC<$JcC<$_Z0-+ScAWgWW2tuJcG!7q#H!GJcC<$JcC<$NW4M~>
+JcC<$JcC<$_Z0Q7NW8qWXoJD$JcG9?q#H!GJcC<$JcC<$L&ZZ~>
+JcC<$JcC<$_Z0Q7NW8qWXoJD$JcG9?q#H!GJcC<$JcC<$L&ZZ~>
+JcC<$JcC<$_Z0Q7NW8qWXoJD$JcG9?q#H!GJcC<$JcC<$L&ZZ~>
+JcC<$JcC<$_Z0Q7NW8qWXoJD$JcG9?q#H!GJcC<$JcC<$L&ZZ~>
+JcC<$JcC<$_Z0Q7NW8qWXoJD$JcG9?q#H!GJcC<$JcC<$L&ZZ~>
+JcC<$JcC<$_Z0Q7NW8qWXoJD$JcG9?q#H!GJcC<$JcC<$L&ZZ~>
+JcC<$JcC<$_Z0Q7M?!MSZ2ah(JcGKEqZ)3IJcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$_Z0Q7M?!MSZ2ah(JcGKEqZ)3IJcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$_Z0Q7M?!MSZ2ah(JcGKEqZ)3IJcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$_Z0Q7M?!MSZ2ah(JcGKEqZ)3IJcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$_Z0Q7M?!MSZ2ah(JcGKEqZ)3IJcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$_Z0Q7M?!MSZ2ah(JcGKEqZ)3IJcC<$JcC<$JcG]KJ,~>
+JcC<$JcC<$_Z0Q7L&_)O[K$7,JcGcMq#H!GJcC<$JcC<$JcGKEJ,~>
+JcC<$JcC<$_Z0Q7L&_)O[K$7,JcGcMq#H!GJcC<$JcC<$JcGKEJ,~>
+JcC<$JcC<$_Z0Q7L&_)O[K$7,JcGcMq#H!GJcC<$JcC<$JcGKEJ,~>
+JcC<$JcC<$_Z0Q7L&_)O[K$7,JcGcMq#H!GJcC<$JcC<$JcGKEJ,~>
+JcC<$JcC<$_Z0Q7L&_)O[K$7,JcGcMq#H!GJcC<$JcC<$JcGKEJ,~>
+JcC<$JcC<$_Z0Q7L&_)O[K$7,JcGcMq#H!GJcC<$JcC<$JcGKEJ,~>
+JcC<$JcC<$_Z0W9s8VfnMuWYS]Dqm2L]@/MJcC<$JcC<$JcC<$n,In~>
+JcC<$JcC<$_Z0W9s8VfnMuWYS]Dqm2L]@/MJcC<$JcC<$JcC<$n,In~>
+JcC<$JcC<$_Z0W9s8VfnMuWYS]Dqm2L]@/MJcC<$JcC<$JcC<$n,In~>
+JcC<$JcC<$_Z0W9s8VfnMuWYS]Dqm2L]@/MJcC<$JcC<$JcC<$n,In~>
+JcC<$JcC<$_Z0W9s8VfnMuWYS]Dqm2L]@/MJcC<$JcC<$JcC<$n,In~>
+JcC<$JcC<$_Z0W9s8VfnMuWYS]Dqm2L]@/MJcC<$JcC<$JcC<$n,In~>
+JcC<$JcC<$`;f9+L]@;Q^]4<6O8o"UJcC<$JcC<$JcC<$kPp&~>
+JcC<$JcC<$`;f9+L]@;Q^]4<6O8o"UJcC<$JcC<$JcC<$kPp&~>
+JcC<$JcC<$`;f9+L]@;Q^]4<6O8o"UJcC<$JcC<$JcC<$kPp&~>
+JcC<$JcC<$`;f9+L]@;Q^]4<6O8o"UJcC<$JcC<$JcC<$kPp&~>
+JcC<$JcC<$`;f9+L]@;Q^]4<6O8o"UJcC<$JcC<$JcC<$kPp&~>
+JcC<$JcC<$`;f9+L]@;Q^]4<6O8o"UJcC<$JcC<$JcC<$kPp&~>
+JcC<$JcC<$`;fc9p](*jL&_)O_uK`:Q2g^]JcC<$JcC<$JcC<$huA3~>
+JcC<$JcC<$`;fc9p](*jL&_)O_uK`:Q2g^]JcC<$JcC<$JcC<$huA3~>
+JcC<$JcC<$`;fc9p](*jL&_)O_uK`:Q2g^]JcC<$JcC<$JcC<$huA3~>
+JcC<$JcC<$`;fc9p](*jL&_)O_uK`:Q2g^]JcC<$JcC<$JcC<$huA3~>
+JcC<$JcC<$`;fc9p](*jL&_)O_uK`:Q2g^]JcC<$JcC<$JcC<$huA3~>
+JcC<$JcC<$`;fc9p](*jL&_)O_uK`:Q2g^]JcC<$JcC<$JcC<$huA3~>
+JcC<$JcC<$[/^()JcGZKa8c/>ScAKcJcC<$JcC<$JcC<$g&HR~>
+JcC<$JcC<$[/^()JcGZKa8c/>ScAKcJcC<$JcC<$JcC<$g&HR~>
+JcC<$JcC<$[/^()JcGZKa8c/>ScAKcJcC<$JcC<$JcC<$g&HR~>
+JcC<$JcC<$[/^()JcGZKa8c/>ScAKcJcC<$JcC<$JcC<$g&HR~>
+JcC<$JcC<$[/^()JcGZKa8c/>ScAKcJcC<$JcC<$JcC<$g&HR~>
+JcC<$JcC<$[/^()JcGZKa8c/>ScAKcJcC<$JcC<$JcC<$g&HR~>
+JcC<$JcC<$[/^()JcG]Kr;b%@rrAnqq#H!GJcC<$JcC<$JcF-tJ,~>
+JcC<$JcC<$[/^()JcG]Kr;b%@rrAnqq#H!GJcC<$JcC<$JcF-tJ,~>
+JcC<$JcC<$[/^()JcG]Kr;b%@rrAnqq#H!GJcC<$JcC<$JcF-tJ,~>
+JcC<$JcC<$[/^()JcG]Kr;b%@rrAnqq#H!GJcC<$JcC<$JcF-tJ,~>
+JcC<$JcC<$[/^()JcG]Kr;b%@rrAnqq#H!GJcC<$JcC<$JcF-tJ,~>
+JcC<$JcC<$[/^()JcG]Kr;b%@rrAnqq#H!GJcC<$JcC<$JcF-tJ,~>
+JcC<$JcC<$[/^()JcGQGr;b1DrrB2$q#H!GJcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$[/^()JcGQGr;b1DrrB2$q#H!GJcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$[/^()JcGQGr;b1DrrB2$q#H!GJcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$[/^()JcGQGr;b1DrrB2$q#H!GJcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$[/^()JcGQGr;b1DrrB2$q#H!GJcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$[/^()JcGQGr;b1DrrB2$q#H!GJcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$`;fc9p&FsjJcGECqZ,1HrrBD*qZ)3IkPt&PJcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$`;fc9p&FsjJcGECqZ,1HrrBD*qZ)3IkPt&PJcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$`;fc9p&FsjJcGECqZ,1HrrBD*qZ)3IkPt&PJcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$`;fc9p&FsjJcGECqZ,1HrrBD*qZ)3IkPt&PJcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$`;fc9p&FsjJcGECqZ,1HrrBD*qZ)3IkPt&PJcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$`;fc9p&FsjJcGECqZ,1HrrBD*qZ)3IkPt&PJcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$`;f]7q>^BnJcG-;r;bONrrB\2q#H!GiW&EJJcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$`;f]7q>^BnJcG-;r;bONrrB\2q#H!GiW&EJJcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$`;f]7q>^BnJcG-;r;bONrrB\2q#H!GiW&EJJcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$`;f]7q>^BnJcG-;r;bONrrB\2q#H!GiW&EJJcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$`;f]7q>^BnJcG-;r;bONrrB\2q#H!GiW&EJJcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$`;f]7q>^BnJcG-;r;bONrrB\2q#H!GiW&EJJcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$_Z0-+JcG!7r;b[RrrBt:q#H!Gg&M!NJcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$_Z0-+JcG!7r;b[RrrBt:q#H!Gg&M!NJcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$_Z0-+JcG!7r;b[RrrBt:q#H!Gg&M!NJcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$_Z0-+JcG!7r;b[RrrBt:q#H!Gg&M!NJcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$_Z0-+JcG!7r;b[RrrBt:q#H!Gg&M!NJcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$_Z0-+JcG!7r;b[RrrBt:q#H!Gg&M!NJcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$_#O-/JcF^/r;bgVrrC1 at qZ)3IdJs.FJcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$_#O-/JcF^/r;bgVrrC1 at qZ)3IdJs.FJcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$_#O-/JcF^/r;bgVrrC1 at qZ)3IdJs.FJcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$_#O-/JcF^/r;bgVrrC1 at qZ)3IdJs.FJcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$_#O-/JcF^/r;bgVrrC1 at qZ)3IdJs.FJcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$_#O-/JcF^/r;bgVrrC1 at qZ)3IdJs.FJcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$JcCo5r;bsZrrCIHq#H!GbQ%M at JcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$JcCo5r;bsZrrCIHq#H!GbQ%M at JcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$JcCo5r;bsZrrCIHq#H!GbQ%M at JcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$JcCo5r;bsZrrCIHq#H!GbQ%M at JcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$JcCo5r;bsZrrCIHq#H!GbQ%M at JcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$JcCo5r;bsZrrCIHq#H!GbQ%M at JcC<$JcC<$JcFX-J,~>
+JcC<$JcC<$JcCc1qZ,s^rrCaPq#H!G_uK`:s8VfnJcC<$JcC<$JcG!7J,~>
+JcC<$JcC<$JcCc1qZ,s^rrCaPq#H!G_uK`:s8VfnJcC<$JcC<$JcG!7J,~>
+JcC<$JcC<$JcCc1qZ,s^rrCaPq#H!G_uK`:s8VfnJcC<$JcC<$JcG!7J,~>
+JcC<$JcC<$JcCc1qZ,s^rrCaPq#H!G_uK`:s8VfnJcC<$JcC<$JcG!7J,~>
+JcC<$JcC<$JcCc1qZ,s^rrCaPq#H!G_uK`:s8VfnJcC<$JcC<$JcG!7J,~>
+JcC<$JcC<$JcCc1qZ,s^rrCaPq#H!G_uK`:s8VfnJcC<$JcC<$JcG!7J,~>
+JcC<$JcC<$JcCQ+r;c<drrD$Xq#H!G^&RO$JcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$JcCQ+r;c<drrD$Xq#H!G^&RO$JcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$JcCQ+r;c<drrD$Xq#H!G^&RO$JcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$JcCQ+r;c<drrD$Xq#H!G^&RO$JcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$JcCQ+r;c<drrD$Xq#H!G^&RO$JcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$JcCQ+r;c<drrD$Xq#H!G^&RO$JcC<$JcC<$JcG'9J,~>
+JcC<$JcC<$JcCE'r;cHhrrD6^qZ)3I[K$1*p](*jJcC<$JcC<$JcG-;J,~>
+JcC<$JcC<$JcCE'r;cHhrrD6^qZ)3I[K$1*p](*jJcC<$JcC<$JcG-;J,~>
+JcC<$JcC<$JcCE'r;cHhrrD6^qZ)3I[K$1*p](*jJcC<$JcC<$JcG-;J,~>
+JcC<$JcC<$JcCE'r;cHhrrD6^qZ)3I[K$1*p](*jJcC<$JcC<$JcG-;J,~>
+JcC<$JcC<$JcCE'r;cHhrrD6^qZ)3I[K$1*p](*jJcC<$JcC<$JcG-;J,~>
+JcC<$JcC<$JcCE'r;cHhrrD6^qZ)3I[K$1*p](*jJcC<$JcC<$JcG-;J,~>
+JcC<$JcC<$JcC<$!<;utp](6nn,N1`JcDABr;_EKJcC<$JcC<$mJh\~>
+JcC<$JcC<$JcC<$!<;utp](6nn,N1`JcDABr;_EKJcC<$JcC<$mJh\~>
+JcC<$JcC<$JcC<$!<;utp](6nn,N1`JcDABr;_EKJcC<$JcC<$mJh\~>
+JcC<$JcC<$JcC<$!<;utp](6nn,N1`JcDABr;_EKJcC<$JcC<$mJh\~>
+JcC<$JcC<$JcC<$!<;utp](6nn,N1`JcDABr;_EKJcC<$JcC<$mJh\~>
+JcC<$JcC<$JcC<$!<;utp](6nn,N1`JcDABr;_EKJcC<$JcC<$mJh\~>
+JcC<$QN-g^oDe[fJcC<$JcGZKqu?Zrp]($hJcD):r;_EKJcC<$JcC<$mJh\~>
+JcC<$QN-g^oDe[fJcC<$JcGZKqu?Zrp]($hJcD):r;_EKJcC<$JcC<$mJh\~>
+JcC<$QN-g^oDe[fJcC<$JcGZKqu?Zrp]($hJcD):r;_EKJcC<$JcC<$mJh\~>
+JcC<$QN-g^oDe[fJcC<$JcGZKqu?Zrp]($hJcD):r;_EKJcC<$JcC<$mJh\~>
+JcC<$QN-g^oDe[fJcC<$JcGZKqu?Zrp]($hJcD):r;_EKJcC<$JcC<$mJh\~>
+JcC<$QN-g^oDe[fJcC<$JcGZKqu?Zrp]($hJcD):r;_EKJcC<$JcC<$mJh\~>
+JcC<$QN-g^oDe[fJcC<$JcG]Kr;cltrrE*!q#H!GO8o.YJcC<$JcC<$JcG-;J,~>
+JcC<$QN-g^oDe[fJcC<$JcG]Kr;cltrrE*!q#H!GO8o.YJcC<$JcC<$JcG-;J,~>
+JcC<$QN-g^oDe[fJcC<$JcG]Kr;cltrrE*!q#H!GO8o.YJcC<$JcC<$JcG-;J,~>
+JcC<$QN-g^oDe[fJcC<$JcG]Kr;cltrrE*!q#H!GO8o.YJcC<$JcC<$JcG-;J,~>
+JcC<$QN-g^oDe[fJcC<$JcG]Kr;cltrrE*!q#H!GO8o.YJcC<$JcC<$JcG-;J,~>
+JcC<$QN-g^oDe[fJcC<$JcG]Kr;cltrrE*!q#H!GO8o.YJcC<$JcC<$JcG-;J,~>
+JcC<$PlLU\p&FmhJcC<$JcGQGqZ)3IQiI!ap&FsjJcC<$JcC<$JcG-;J,~>
+JcC<$PlLU\p&FmhJcC<$JcGQGqZ)3IQiI!ap&FsjJcC<$JcC<$JcG-;J,~>
+JcC<$PlLU\p&FmhJcC<$JcGQGqZ)3IQiI!ap&FsjJcC<$JcC<$JcG-;J,~>
+JcC<$PlLU\p&FmhJcC<$JcGQGqZ)3IQiI!ap&FsjJcC<$JcC<$JcG-;J,~>
+JcC<$PlLU\p&FmhJcC<$JcGQGqZ)3IQiI!ap&FsjJcC<$JcC<$JcG-;J,~>
+JcC<$PlLU\p&FmhJcC<$JcGQGqZ)3IQiI!ap&FsjJcC<$JcC<$JcG-;J,~>
+JcC<$PlLOZq>^<lJcC<$JcGECr;_EKQiHp_q>^BnJcC<$JcC<$JcG'9J,~>
+JcC<$PlLOZq>^<lJcC<$JcGECr;_EKQiHp_q>^BnJcC<$JcC<$JcG'9J,~>
+JcC<$PlLOZq>^<lJcC<$JcGECr;_EKQiHp_q>^BnJcC<$JcC<$JcG'9J,~>
+JcC<$PlLOZq>^<lJcC<$JcGECr;_EKQiHp_q>^BnJcC<$JcC<$JcG'9J,~>
+JcC<$PlLOZq>^<lJcC<$JcGECr;_EKQiHp_q>^BnJcC<$JcC<$JcG'9J,~>
+JcC<$PlLOZq>^<lJcC<$JcGECr;_EKQiHp_q>^BnJcC<$JcC<$JcG'9J,~>
+JcC<$P5kCZq>^<lJcC<$JcGWIqZ-Tpr;_EKRK)dWJcC<$JcC<$JcG'9J,~>
+JcC<$P5kCZq>^<lJcC<$JcGWIqZ-Tpr;_EKRK)dWJcC<$JcC<$JcG'9J,~>
+JcC<$P5kCZq>^<lJcC<$JcGWIqZ-Tpr;_EKRK)dWJcC<$JcC<$JcG'9J,~>
+JcC<$P5kCZq>^<lJcC<$JcGWIqZ-Tpr;_EKRK)dWJcC<$JcC<$JcG'9J,~>
+JcC<$P5kCZq>^<lJcC<$JcGWIqZ-Tpr;_EKRK)dWJcC<$JcC<$JcG'9J,~>
+JcC<$P5kCZq>^<lJcC<$JcGWIqZ-Tpr;_EKRK)dWJcC<$JcC<$JcG'9J,~>
+JcC<$P5k=XrVuZnJcC<$KE(`IoDeahJcD5>pAfdEJcC<$JcC<$kPp&~>
+JcC<$P5k=XrVuZnJcC<$KE(`IoDeahJcD5>pAfdEJcC<$JcC<$kPp&~>
+JcC<$P5k=XrVuZnJcC<$KE(`IoDeahJcD5>pAfdEJcC<$JcC<$kPp&~>
+JcC<$P5k=XrVuZnJcC<$KE(`IoDeahJcD5>pAfdEJcC<$JcC<$kPp&~>
+JcC<$P5k=XrVuZnJcC<$KE(`IoDeahJcD5>pAfdEJcC<$JcC<$kPp&~>
+JcC<$P5k=XrVuZnJcC<$KE(`IoDeahJcD5>pAfdEJcC<$JcC<$kPp&~>
+JcC<$OT51XrVu`pJcC<$KE(rOkPtJ\JcC<$JcC<$JcC<$JcGWIJ,~>
+JcC<$OT51XrVu`pJcC<$KE(rOkPtJ\JcC<$JcC<$JcC<$JcGWIJ,~>
+JcC<$OT51XrVu`pJcC<$KE(rOkPtJ\JcC<$JcC<$JcC<$JcGWIJ,~>
+JcC<$OT51XrVu`pJcC<$KE(rOkPtJ\JcC<$JcC<$JcC<$JcGWIJ,~>
+JcC<$OT51XrVu`pJcC<$KE(rOkPtJ\JcC<$JcC<$JcC<$JcGWIJ,~>
+JcC<$OT51XrVu`pJcC<$KE(rOkPtJ\JcC<$JcC<$JcC<$JcGWIJ,~>
+JcC<$OT51XrVu`pJcC<$JcFd1r;_EKJcC<$JcC<$JcC<$s8RT~>
+JcC<$OT51XrVu`pJcC<$JcFd1r;_EKJcC<$JcC<$JcC<$s8RT~>
+JcC<$OT51XrVu`pJcC<$JcFd1r;_EKJcC<$JcC<$JcC<$s8RT~>
+JcC<$OT51XrVu`pJcC<$JcFd1r;_EKJcC<$JcC<$JcC<$s8RT~>
+JcC<$OT51XrVu`pJcC<$JcFd1r;_EKJcC<$JcC<$JcC<$s8RT~>
+JcC<$OT51XrVu`pJcC<$JcFd1r;_EKJcC<$JcC<$JcC<$s8RT~>
+JcC<$NrSbPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$NrSbPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$NrSbPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$NrSbPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$NrSbPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$NrSbPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$NrSbPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$NrSbPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$NrSbPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$NrSbPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$NrSbPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$NrSbPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$N;rVPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$N;rVPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$N;rVPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$N;rVPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$N;rVPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$N;rVPJcC<$JcC<$JcC<$JcC<$JcC<$g])d~>
+JcC<$N;r\RJcC<$JcC<$JcC<$JcC<$JcC<$g&HR~>
+JcC<$N;r\RJcC<$JcC<$JcC<$JcC<$JcC<$g&HR~>
+JcC<$N;r\RJcC<$JcC<$JcC<$JcC<$JcC<$g&HR~>
+JcC<$N;r\RJcC<$JcC<$JcC<$JcC<$JcC<$g&HR~>
+JcC<$N;r\RJcC<$JcC<$JcC<$JcC<$JcC<$g&HR~>
+JcC<$N;r\RJcC<$JcC<$JcC<$JcC<$JcC<$g&HR~>
+JcC<$MZ<PRJcC<$JcC<$JcC<$JcFd1qZ-BjqZ)3IJcC`0J,~>
+JcC<$MZ<PRJcC<$JcC<$JcC<$JcFd1qZ-BjqZ)3IJcC`0J,~>
+JcC<$MZ<PRJcC<$JcC<$JcC<$JcFd1qZ-BjqZ)3IJcC`0J,~>
+JcC<$MZ<PRJcC<$JcC<$JcC<$JcFd1qZ-BjqZ)3IJcC`0J,~>
+JcC<$MZ<PRJcC<$JcC<$JcC<$JcFd1qZ-BjqZ)3IJcC`0J,~>
+JcC<$MZ<PRJcC<$JcC<$JcC<$JcFd1qZ-BjqZ)3IJcC`0J,~>
+JcC<$MZ<PRJcC<$JcC<$JcC<$JcFd1q#L<lq#H!GJcC`0J,~>
+JcC<$MZ<PRJcC<$JcC<$JcC<$JcFd1q#L<lq#H!GJcC`0J,~>
+JcC<$MZ<PRJcC<$JcC<$JcC<$JcFd1q#L<lq#H!GJcC`0J,~>
+JcC<$MZ<PRJcC<$JcC<$JcC<$JcFd1q#L<lq#H!GJcC`0J,~>
+JcC<$MZ<PRJcC<$JcC<$JcC<$JcFd1q#L<lq#H!GJcC`0J,~>
+JcC<$MZ<PRJcC<$JcC<$JcC<$JcFd1q#L<lq#H!GJcC`0J,~>
+JcC<$N;rbTJcC<$JcC<$JcC<$JcFX-qZ-NnqZ)3IJcCZ.J,~>
+JcC<$N;rbTJcC<$JcC<$JcC<$JcFX-qZ-NnqZ)3IJcCZ.J,~>
+JcC<$N;rbTJcC<$JcC<$JcC<$JcFX-qZ-NnqZ)3IJcCZ.J,~>
+JcC<$N;rbTJcC<$JcC<$JcC<$JcFX-qZ-NnqZ)3IJcCZ.J,~>
+JcC<$N;rbTJcC<$JcC<$JcC<$JcFX-qZ-NnqZ)3IJcCZ.J,~>
+JcC<$N;rbTJcC<$JcC<$JcC<$JcFX-qZ-NnqZ)3IJcCZ.J,~>
+JcC<$N;rbTJcC<$JcC<$JcC<$JcFR+qZ-ZrqZ)3IJcCT,J,~>
+JcC<$N;rbTJcC<$JcC<$JcC<$JcFR+qZ-ZrqZ)3IJcCT,J,~>
+JcC<$N;rbTJcC<$JcC<$JcC<$JcFR+qZ-ZrqZ)3IJcCT,J,~>
+JcC<$N;rbTJcC<$JcC<$JcC<$JcFR+qZ-ZrqZ)3IJcCT,J,~>
+JcC<$N;rbTJcC<$JcC<$JcC<$JcFR+qZ-ZrqZ)3IJcCT,J,~>
+JcC<$N;rbTJcC<$JcC<$JcC<$JcFR+qZ-ZrqZ)3IJcCT,J,~>
+JcC<$NrStVJcC<$RK*'_JcC<$JcC<$bQ%/6JcC<$M>r)~>
+JcC<$NrStVJcC<$RK*'_JcC<$JcC<$bQ%/6JcC<$M>r)~>
+JcC<$NrStVJcC<$RK*'_JcC<$JcC<$bQ%/6JcC<$M>r)~>
+JcC<$NrStVJcC<$RK*'_JcC<$JcC<$bQ%/6JcC<$M>r)~>
+JcC<$NrStVJcC<$RK*'_JcC<$JcC<$bQ%/6JcC<$M>r)~>
+JcC<$NrStVJcC<$RK*'_JcC<$JcC<$bQ%/6JcC<$M>r)~>
+JcC<$P5k7VJcC<$S,`-]JcC<$JcC<$bQ%;:JcC<$L];l~>
+JcC<$P5k7VJcC<$S,`-]JcC<$JcC<$bQ%;:JcC<$L];l~>
+JcC<$P5k7VJcC<$S,`-]JcC<$JcC<$bQ%;:JcC<$L];l~>
+JcC<$P5k7VJcC<$S,`-]JcC<$JcC<$bQ%;:JcC<$L];l~>
+JcC<$P5k7VJcC<$S,`-]JcC<$JcC<$bQ%;:JcC<$L];l~>
+JcC<$P5k7VJcC<$S,`-]JcC<$JcC<$bQ%;:JcC<$L];l~>
+JcC<$P5k=XJcC<$S,`Eeq>^Bn\,Z7(JcC<$JcD;@qZ)3IJcCH(J,~>
+JcC<$P5k=XJcC<$S,`Eeq>^Bn\,Z7(JcC<$JcD;@qZ)3IJcCH(J,~>
+JcC<$P5k=XJcC<$S,`Eeq>^Bn\,Z7(JcC<$JcD;@qZ)3IJcCH(J,~>
+JcC<$P5k=XJcC<$S,`Eeq>^Bn\,Z7(JcC<$JcD;@qZ)3IJcCH(J,~>
+JcC<$P5k=XJcC<$S,`Eeq>^Bn\,Z7(JcC<$JcD;@qZ)3IJcCH(J,~>
+JcC<$P5k=XJcC<$S,`Eeq>^Bn\,Z7(JcC<$JcD;@qZ)3IJcCH(J,~>
+JcC<$JcC<$JcDPGr;cZnr;aD.o`0RCJcC<$U&XieJcC<$L];l~>
+JcC<$JcC<$JcDPGr;cZnr;aD.o`0RCJcC<$U&XieJcC<$L];l~>
+JcC<$JcC<$JcDPGr;cZnr;aD.o`0RCJcC<$U&XieJcC<$L];l~>
+JcC<$JcC<$JcDPGr;cZnr;aD.o`0RCJcC<$U&XieJcC<$L];l~>
+JcC<$JcC<$JcDPGr;cZnr;aD.o`0RCJcC<$U&XieJcC<$L];l~>
+JcC<$JcC<$JcDPGr;cZnr;aD.o`0RCJcC<$U&XieJcC<$L];l~>
+JcC<$JcC<$JcDVIr;cNjr;aP2r;cZnr;_EKJcC<$U]:&gJcC<$L];l~>
+JcC<$JcC<$JcDVIr;cNjr;aP2r;cZnr;_EKJcC<$U]:&gJcC<$L];l~>
+JcC<$JcC<$JcDVIr;cNjr;aP2r;cZnr;_EKJcC<$U]:&gJcC<$L];l~>
+JcC<$JcC<$JcDVIr;cNjr;aP2r;cZnr;_EKJcC<$U]:&gJcC<$L];l~>
+JcC<$JcC<$JcDVIr;cNjr;aP2r;cZnr;_EKJcC<$U]:&gJcC<$L];l~>
+JcC<$JcC<$JcDVIr;cNjr;aP2r;cZnr;_EKJcC<$U]:&gJcC<$L];l~>
+JcC<$JcC<$JcDVIr;cNjr;aP2r;cZnr;_EKJcC<$V>pDms8VrrJcC<$M>r)~>
+JcC<$JcC<$JcDVIr;cNjr;aP2r;cZnr;_EKJcC<$V>pDms8VrrJcC<$M>r)~>
+JcC<$JcC<$JcDVIr;cNjr;aP2r;cZnr;_EKJcC<$V>pDms8VrrJcC<$M>r)~>
+JcC<$JcC<$JcDVIr;cNjr;aP2r;cZnr;_EKJcC<$V>pDms8VrrJcC<$M>r)~>
+JcC<$JcC<$JcDVIr;cNjr;aP2r;cZnr;_EKJcC<$V>pDms8VrrJcC<$M>r)~>
+JcC<$JcC<$JcDVIr;cNjr;aP2r;cZnr;_EKJcC<$V>pDms8VrrJcC<$M>r)~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$WW2bos8VlpJcC<$MuS;~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$WW2bos8VlpJcC<$MuS;~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$WW2bos8VlpJcC<$MuS;~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$WW2bos8VlpJcC<$MuS;~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$WW2bos8VlpJcC<$MuS;~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$WW2bos8VlpJcC<$MuS;~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$WW2hqqu?NnJcC<$MuS;~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$WW2hqqu?NnJcC<$MuS;~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$WW2hqqu?NnJcC<$MuS;~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$WW2hqqu?NnJcC<$MuS;~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$WW2hqqu?NnJcC<$MuS;~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$WW2hqqu?NnJcC<$MuS;~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$X8htqqu?HlJcC<$NW4M~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$X8htqqu?HlJcC<$NW4M~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$X8htqqu?HlJcC<$NW4M~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$X8htqqu?HlJcC<$NW4M~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$X8htqqu?HlJcC<$NW4M~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$X8htqqu?HlJcC<$NW4M~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$X8i%sp](*jJcC<$NW4M~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$X8i%sp](*jJcC<$NW4M~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$X8i%sp](*jJcC<$NW4M~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$X8i%sp](*jJcC<$NW4M~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$X8i%sp](*jJcC<$NW4M~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$X8i%sp](*jJcC<$NW4M~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDVIr;cNjr;aV4r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDPGr;cZnqZ+D2r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDPGr;cZnqZ+D2r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDPGr;cZnqZ+D2r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDPGr;cZnqZ+D2r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDPGr;cZnqZ+D2r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDPGr;cZnqZ+D2r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDPGr;cZnr;aP2r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDPGr;cZnr;aP2r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDPGr;cZnr;aP2r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDPGr;cZnr;aP2r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDPGr;cZnr;aP2r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDPGr;cZnr;aP2r;cNjr;_EKJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDJEo)QE&r;cZnqZ)3IJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDJEo)QE&r;cZnqZ)3IJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDJEo)QE&r;cZnqZ)3IJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDJEo)QE&r;cZnqZ)3IJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDJEo)QE&r;cZnqZ)3IJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDJEo)QE&r;cZnqZ)3IJcC<$JcC<$JcDGDJ,~>
+JcC<$JcC<$JcDDCq#Io(r;cZnr;_EKJcC<$JcC<$JcDABJ,~>
+JcC<$JcC<$JcDDCq#Io(r;cZnr;_EKJcC<$JcC<$JcDABJ,~>
+JcC<$JcC<$JcDDCq#Io(r;cZnr;_EKJcC<$JcC<$JcDABJ,~>
+JcC<$JcC<$JcDDCq#Io(r;cZnr;_EKJcC<$JcC<$JcDABJ,~>
+JcC<$JcC<$JcDDCq#Io(r;cZnr;_EKJcC<$JcC<$JcDABJ,~>
+JcC<$JcC<$JcDDCq#Io(r;cZnr;_EKJcC<$JcC<$JcDABJ,~>
+JcC<$JcC<$JcC<$bl at 87JcC<$JcC<$JcC<$TDsE~>
+JcC<$JcC<$JcC<$bl at 87JcC<$JcC<$JcC<$TDsE~>
+JcC<$JcC<$JcC<$bl at 87JcC<$JcC<$JcC<$TDsE~>
+JcC<$JcC<$JcC<$bl at 87JcC<$JcC<$JcC<$TDsE~>
+JcC<$JcC<$JcC<$bl at 87JcC<$JcC<$JcC<$TDsE~>
+JcC<$JcC<$JcC<$bl at 87JcC<$JcC<$JcC<$TDsE~>
+JcC<$JcC<$JcC<$b5_8;JcC<$JcC<$JcC<$S,\!~>
+JcC<$JcC<$JcC<$b5_8;JcC<$JcC<$JcC<$S,\!~>
+JcC<$JcC<$JcC<$b5_8;JcC<$JcC<$JcC<$S,\!~>
+JcC<$JcC<$JcC<$b5_8;JcC<$JcC<$JcC<$S,\!~>
+JcC<$JcC<$JcC<$b5_8;JcC<$JcC<$JcC<$S,\!~>
+JcC<$JcC<$JcC<$b5_8;JcC<$JcC<$JcC<$S,\!~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFO*J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
+
+%%EndDocument
+ @endspecial 0 73065 a(Figure)485 b(7:)700 b(Results)486
+b(for)g(the)f Fr(pvakx)i Ft(example)d(problem)i(in)f(3D.)g(Tw)-34
+b(o)486 b(isosurfaces)f(of)h(the)f(gradien)-34 b(t)0
+74570 y(with)445 b(resp)34 b(ect)443 b(to)h(the)h(source)e(parameters.)
+658 b(They)444 b(corresp)34 b(ond)444 b(to)g(v)-67 b(alues)443
+b(of)i(0)p Fm(:)p Ft(25)e(\(green\))i(and)f(0)p Fm(:)p
+Ft(4)0 76076 y(\(blue\).)p Black Black 23394 81741 a(34)p
+Black eop
+%%Page: 35 39
+35 38 bop Black Black 4000 8037 45 1329 v 4844 7638 a
+Fg(nst)2907 b(=)2324 b(104)p 51956 8037 V 4000 9365 V
+4844 8966 a(nfe)2907 b(=)2324 b(108)2906 b(nfel)1163
+b(=)2325 b(126)p 51956 9365 V 4000 10693 V 4844 10295
+a(nni)2907 b(=)2324 b(105)2906 b(nli)1744 b(=)2325 b(126)p
+51956 10693 V 4000 12022 V 4844 11623 a(nsetups)583 b(=)2905
+b(16)h(netf)1163 b(=)3487 b(0)p 51956 12022 V 4000 13350
+V 4844 12951 a(npe)2907 b(=)3487 b(2)2905 b(nps)1744
+b(=)2325 b(215)p 51956 13350 V 4000 14678 V 4844 14280
+a(ncfn)h(=)3487 b(0)2905 b(ncfl)1163 b(=)3487 b(0)p 51956
+14678 V 4000 16007 V 51956 16007 V 4000 17335 V 4844
+16936 a(Begin)582 b(backward)h(integration...)g(done.)p
+51956 17335 V 4000 18663 V 51956 18663 V 4000 19992 V
+4844 19593 a(Final)f(Statistics..)p 51956 19992 V 4000
+21320 V 51956 21320 V 4000 22648 V 4844 22250 a(lenrw)1745
+b(=)1162 b(17316)2906 b(leniw)582 b(=)2325 b(212)p 51956
+22648 V 4000 23977 V 4844 23578 a(llrw)h(=)1743 b(8656)2906
+b(lliw)1163 b(=)2906 b(80)p 51956 23977 V 4000 25305
+V 4844 24907 a(nst)h(=)e(78)p 51956 25305 V 4000 26633
+V 4844 26235 a(nfe)i(=)e(90)h(nfel)1163 b(=)2325 b(138)p
+51956 26633 V 4000 27962 V 4844 27563 a(nni)2907 b(=)e(87)h(nli)1744
+b(=)2325 b(138)p 51956 27962 V 4000 29290 V 4844 28892
+a(nsetups)583 b(=)2905 b(17)h(netf)1163 b(=)3487 b(0)p
+51956 29290 V 4000 30619 V 4844 30220 a(npe)2907 b(=)3487
+b(2)2905 b(nps)1744 b(=)2325 b(217)p 51956 30619 V 4000
+31947 V 4844 31548 a(ncfn)h(=)3487 b(0)2905 b(ncfl)1163
+b(=)3487 b(0)p 51956 31947 V 4000 32747 45 801 v 51956
+32747 V 4000 32791 48001 45 v Black 27394 81741 a Ft(35)p
+Black eop
+%%Page: 36 40
+36 39 bop Black Black 0 7638 a Fs(4)1793 b(P)-50 b(arallel)598
+b(tests)0 10458 y Ft(The)329 b(most)g(preeminen)-34 b(t)329
+b(adv)-67 b(an)-34 b(tage)329 b(of)g Fq(cv)-27 b(odes)329
+b Ft(o)-34 b(v)g(er)329 b(existing)f(sensitivit)-34 b(y)328
+b(solv)-34 b(ers)328 b(is)g(the)h(p)34 b(ossibilit)-34
+b(y)0 11964 y(of)571 b(solving)g(v)-34 b(ery)570 b(large-scale)f
+(problems)j(on)f(massiv)-34 b(ely)570 b(parallel)g(computers.)1039
+b(T)-101 b(o)572 b(illustrate)e(this)0 13469 y(p)34 b(oin)-34
+b(t)538 b(w)-34 b(e)537 b(presen)-34 b(t)537 b(sp)34
+b(eedup)538 b(results)f(for)g(the)g(in)-34 b(tegration)538
+b(and)g(forw)-34 b(ard)537 b(sensitivit)-34 b(y)537 b(analysis)g(for)0
+14975 y(an)408 b(ODE)g(system)f(generated)h(from)g(the)h(follo)-34
+b(wing)408 b(2-sp)34 b(ecies)407 b(diurnal)h(kinetics)g(adv)-34
+b(ection-di\256usion)0 16480 y(PDE)502 b(system)h(in)g(2)g(space)g
+(dimensions.)835 b(This)503 b(w)-34 b(ork)504 b(w)-34
+b(as)503 b(rep)34 b(orted)503 b(in)g([3)o(].)835 b(The)503
+b(PDE)f(tak)-34 b(es)504 b(the)0 17986 y(form:)8074 19284
+y Fm(dc)9230 19466 y Fk(i)p 8074 19825 1532 49 v 8305
+20935 a Fm(dt)10074 20104 y Ft(=)337 b Fm(K)12383 20301
+y Fk(h)13114 19284 y Fm(d)13745 18844 y Fl(2)14270 19284
+y Fm(c)14795 19466 y Fk(i)p 13114 19825 2057 49 v 13218
+20935 a Fm(dx)14542 20585 y Fl(2)15573 20104 y Ft(+)269
+b Fm(v)17549 19284 y(dc)18705 19466 y Fk(i)p 17549 19825
+1532 49 v 17653 20935 a Fm(dx)19482 20104 y Ft(+)g Fm(K)21723
+20286 y Fk(v)22402 19284 y Fm(d)23033 18844 y Fl(2)23559
+19284 y Fm(c)24084 19466 y Fk(i)p 22402 19825 2057 49
+v 22544 20935 a Fm(dz)23792 20585 y Fl(2)24861 20104
+y Ft(+)g Fm(R)26993 20286 y Fk(i)27369 20104 y Ft(\()p
+Fm(c)28365 20286 y Fl(1)28891 20104 y Fm(;)202 b(c)29955
+20286 y Fl(2)30480 20104 y Fm(;)g(t)p Ft(\))g Fm(;)1414
+b Ft(for)404 b Fm(i)336 b Ft(=)h(1)p Fm(;)202 b Ft(2)g
+Fm(;)0 22813 y Ft(where)10359 25372 y Fm(R)11279 25554
+y Fl(1)11805 25372 y Ft(\()p Fm(c)12801 25554 y Fl(1)13327
+25372 y Fm(;)g(c)14391 25554 y Fl(2)14916 25372 y Fm(;)g(t)p
+Ft(\))337 b(=)f Fp(\241)p Fm(q)19464 25554 y Fl(1)19990
+25372 y Fm(c)20515 25554 y Fl(1)21040 25372 y Fm(c)21565
+25554 y Fl(3)22360 25372 y Fp(\241)269 b Fm(q)24113 25554
+y Fl(2)24639 25372 y Fm(c)25164 25554 y Fl(1)25689 25372
+y Fm(c)26214 25554 y Fl(2)27009 25372 y Ft(+)g(2)p Fm(q)29368
+25554 y Fl(3)29894 25372 y Ft(\()p Fm(t)p Ft(\))p Fm(c)31799
+25554 y Fl(3)32594 25372 y Ft(+)g Fm(q)34347 25554 y
+Fl(4)34873 25372 y Ft(\()p Fm(t)p Ft(\))p Fm(c)36778
+25554 y Fl(2)37304 25372 y Fm(;)10359 27210 y(R)11279
+27392 y Fl(2)11805 27210 y Ft(\()p Fm(c)12801 27392 y
+Fl(1)13327 27210 y Fm(;)202 b(c)14391 27392 y Fl(2)14916
+27210 y Fm(;)g(t)p Ft(\))337 b(=)f Fm(q)18521 27392 y
+Fl(1)19047 27210 y Fm(c)19572 27392 y Fl(1)20097 27210
+y Fm(c)20622 27392 y Fl(3)21417 27210 y Fp(\241)269 b
+Fm(q)23170 27392 y Fl(2)23696 27210 y Fm(c)24221 27392
+y Fl(1)24747 27210 y Fm(c)25272 27392 y Fl(2)26066 27210
+y Fp(\241)g Fm(q)27819 27392 y Fl(4)28345 27210 y Ft(\()p
+Fm(t)p Ft(\))p Fm(c)30250 27392 y Fl(2)30978 27210 y
+Fm(;)0 30076 y(K)1029 30273 y Fk(h)1627 30076 y Ft(,)490
+b Fm(K)3483 30258 y Fk(v)4029 30076 y Ft(,)g Fm(v)43
+b Ft(,)490 b Fm(q)6855 30258 y Fl(1)7381 30076 y Ft(,)g
+Fm(q)8749 30258 y Fl(2)9275 30076 y Ft(,)g(and)474 b
+Fm(c)13053 30258 y Fl(3)14052 30076 y Ft(are)e(constan)-34
+b(ts,)492 b(and)474 b Fm(q)24901 30258 y Fl(3)25427 30076
+y Ft(\()p Fm(t)p Ft(\))g(and)g Fm(q)30248 30258 y Fl(4)30774
+30076 y Ft(\()p Fm(t)p Ft(\))g(v)-67 b(ary)472 b(diurnally)-101
+b(.)745 b(The)474 b(problem)0 31581 y(is)440 b(p)34 b(osed)441
+b(on)f(the)h(square)f(0)397 b Fp(\267)g Fm(x)g Fp(\267)g
+Ft(20,)449 b(30)397 b Fp(\267)g Fm(z)450 b Fp(\267)397
+b Ft(50)441 b(\(all)f(in)g(km\),)449 b(with)441 b(homogeneous)h
+(Neumann)0 33087 y(b)34 b(oundary)415 b(conditions,)j(and)d(for)f(time)
+h(t)f(in)h(0)354 b Fp(\267)f Fm(t)h Fp(\267)f Ft(86400)415
+b(\(1)g(da)-34 b(y\).)570 b(The)415 b(PDE)f(system)g(is)h(treated)0
+34592 y(b)-34 b(y)461 b(cen)-34 b(tral)461 b(di\256erences)f(on)h(a)g
+(uniform)g(mesh,)475 b(except)461 b(for)f(the)i(adv)-34
+b(ection)461 b(term,)474 b(whic)-34 b(h)462 b(is)f(treated)0
+36098 y(with)469 b(a)f(biased)g(3-p)34 b(oin)-34 b(t)469
+b(di\256erence)e(form)-34 b(ula.)730 b(The)468 b(initial)g(pro\257les)g
+(are)f(prop)34 b(ortional)468 b(to)g(a)g(simple)0 37603
+y(p)34 b(olynomial)404 b(in)g Fm(x)g Ft(and)g(a)h(h)-34
+b(yp)34 b(erb)g(olic)403 b(tangen)-34 b(t)406 b(function)f(in)f
+Fm(z)53 b Ft(.)1882 39167 y(The)609 b(solution)g(with)g
+Fq(cv)-27 b(odes)609 b Ft(is)f(done)h(with)g(the)g(BDF/GMRES)f(metho)34
+b(d)609 b(\(i.e.)1151 b(using)608 b(the)0 40673 y Fq(cvspgmr)511
+b Ft(linear)f(solv)-34 b(er\))510 b(and)h(the)f(blo)34
+b(c)-34 b(k-diagonal)511 b(part)g(of)f(the)h(Newton)g(matrix)f(as)g(a)h
+(left)f(pre-)0 42178 y(conditioner.)677 b(A)450 b(cop)-34
+b(y)450 b(of)h(the)f(blo)34 b(c)-34 b(k-diagonal)450
+b(part)h(of)g(the)f(Jacobian)g(is)g(sa)-34 b(v)g(ed)451
+b(and)g(conditionally)0 43684 y(reused)404 b(within)h(the)g
+(preconditioner)f(setup)h(function.)1882 45248 y(The)462
+b(problem)g(is)g(solv)-34 b(ed)461 b(b)-34 b(y)463 b
+Fq(cv)-27 b(odes)463 b Ft(using)f Fm(P)630 b Ft(pro)34
+b(cesses,)476 b(treated)462 b(as)g(a)g(rectangular)f(pro)34
+b(cess)0 46754 y(grid)483 b(of)h(size)e Fm(p)7019 46936
+y Fk(x)7926 46754 y Fp(\243)322 b Fm(p)9801 46936 y Fk(z)10331
+46754 y Ft(.)775 b(Eac)-34 b(h)484 b(pro)34 b(cess)483
+b(is)f(assigned)i(a)f(subgrid)h(of)g(size)e Fm(n)468
+b Ft(=)g Fm(n)37670 46936 y Fk(x)38577 46754 y Fp(\243)322
+b Fm(n)40570 46936 y Fk(z)41583 46754 y Ft(of)483 b(the)h(\()p
+Fm(x;)202 b(z)53 b Ft(\))0 48259 y(mesh.)525 b(Th)-34
+b(us)364 b(the)f(actual)g(mesh)f(size)g(is)g Fm(N)19700
+48441 y Fk(x)20472 48259 y Fp(\243)186 b Fm(N)22575 48441
+y Fk(z)23441 48259 y Ft(=)337 b(\()p Fm(p)25802 48441
+y Fk(x)26387 48259 y Fm(n)27115 48441 y Fk(x)27700 48259
+y Ft(\))186 b Fp(\243)g Ft(\()p Fm(p)30567 48441 y Fk(z)31098
+48259 y Fm(n)31826 48441 y Fk(z)32356 48259 y Ft(\),)371
+b(and)363 b(the)g(ODE)f(system)g(size)g(is)0 49765 y
+Fm(N)469 b Ft(=)336 b(2)p Fm(N)4302 49947 y Fk(x)4887
+49765 y Fm(N)5861 49947 y Fk(z)6392 49765 y Ft(.)535
+b(P)-34 b(arallel)394 b(p)34 b(erformance)396 b(tests)g(w)-34
+b(ere)395 b(p)34 b(erformed)396 b(on)g(ASCI)g(F)-101
+b(rost,)397 b(a)f(68-no)34 b(de,)397 b(16-w)-34 b(a)g(y)0
+51270 y(SMP)534 b(system)f(with)h(PO)-34 b(WER3)534 b(375)f(MHz)h(pro)
+34 b(cessors)533 b(and)h(16)f(GB)g(of)h(memory)f(p)34
+b(er)533 b(no)34 b(de.)927 b(W)-101 b(e)0 52776 y(presen)-34
+b(t)391 b(timing)f(results)g(for)g(the)g(in)-34 b(tegration)391
+b(of)f(only)g(the)g(state)g(equations)h(\(column)f(ST)-101
+b(A)g(TES\),)392 b(as)0 54281 y(w)-34 b(ell)372 b(as)h(for)g(the)f
+(computation)j(of)d(forw)-34 b(ard)374 b(sensitivities)e(with)h(resp)34
+b(ect)372 b(to)h(the)g(di\256usion)g(co)34 b(e\261cien)-34
+b(ts)0 55787 y Fm(K)1029 55984 y Fk(h)2130 55787 y Ft(and)505
+b Fm(K)5616 55969 y Fk(v)6665 55787 y Ft(using)f(the)g(staggered)f
+(corrector)g(metho)34 b(d)504 b(without)h(and)f(with)g(error)f(con)-34
+b(trol)504 b(on)g(the)0 57292 y(sensitivit)-34 b(y)496
+b(v)-67 b(ariables)495 b(\(columns)i(STG)g(and)h(STG)p
+24284 57292 364 45 v 437 w(FULL,)d(resp)34 b(ectiv)-34
+b(ely\).)814 b(Sp)34 b(eedup)497 b(results)g(for)f(a)0
+58797 y(global)465 b(problem)g(size)f(of)h Fm(N)570 b
+Ft(=)438 b(2)p Fm(N)16711 58979 y Fk(x)17296 58797 y
+Fm(N)18270 58979 y Fk(y)19260 58797 y Ft(=)g(2)310 b
+Fp(\242)f Ft(1600)i Fp(\242)e Ft(400)438 b(=)g(1280000)465
+b(sho)-34 b(wn)467 b(in)e(Fig.)f(8)h(and)h(listed)0 60303
+y(b)34 b(elo)-34 b(w.)p Black Black 13057 62140 21887
+45 v 14157 63194 a Fm(P)1933 b Ft(ST)-101 b(A)g(TES)2066
+b(STG)g(STG)p 30699 63194 364 45 v 437 w(FULL)p 13057
+63690 21887 45 v 14327 64743 a(4)2566 b(460.31)1960 b(1414.53)2417
+b(2208.14)14327 66249 y(8)2566 b(211.20)2263 b(646.59)2720
+b(1064.94)14024 67754 y(16)2566 b(97.16)g(320.78)3023
+b(417.95)14024 69260 y(32)2566 b(42.78)g(137.51)3023
+b(210.84)14024 70765 y(64)2566 b(19.50)2869 b(63.34)3629
+b(83.24)13721 72271 y(128)2263 b(13.78)2869 b(42.71)3629
+b(55.17)13721 73776 y(256)2566 b(9.87)3172 b(31.33)3629
+b(47.95)p 13057 74272 V 1882 76915 a(W)-101 b(e)326 b(note)h(that)h
+(there)f(w)-34 b(as)327 b(not)h(enough)f(memory)f(to)h(solv)-34
+b(e)327 b(the)g(problem)g(\(ev)-34 b(en)326 b(without)j(carrying)0
+78420 y(sensitivities\))404 b(using)h(few)-34 b(er)404
+b(pro)34 b(cesses.)p Black 23394 81741 a(36)p Black eop
+%%Page: 37 41
+37 40 bop Black Black Black 16000 37511 a @beginspecial
+39 @llx 75 @lly 523 @urx 702 @ury 2160 @rwi @setspecial
+%%BeginDocument: pvfktTest.eps
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: MATLAB, The Mathworks, Inc.
+%%Title: /home/radu/CODES/sundials/papers/toms_cvodes/speedup.eps
+%%CreationDate: 05/25/2004  14:05:46
+%%DocumentNeededFonts: Helvetica
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%Extensions: CMYK
+%%Pages: 1
+%%BoundingBox:    39    75   523   702
+%%EndComments
+
+%%BeginProlog
+% MathWorks dictionary
+/MathWorks 160 dict begin
+% definition operators
+/bdef {bind def} bind def
+/ldef {load def} bind def
+/xdef {exch def} bdef
+/xstore {exch store} bdef
+% operator abbreviations
+/c  /clip ldef
+/cc /concat ldef
+/cp /closepath ldef
+/gr /grestore ldef
+/gs /gsave ldef
+/mt /moveto ldef
+/np /newpath ldef
+/cm /currentmatrix ldef
+/sm /setmatrix ldef
+/rm /rmoveto ldef
+/rl /rlineto ldef
+/s {show newpath} bdef
+/sc {setcmykcolor} bdef
+/sr /setrgbcolor ldef
+/sg /setgray ldef
+/w /setlinewidth ldef
+/j /setlinejoin ldef
+/cap /setlinecap ldef
+/rc {rectclip} bdef
+/rf {rectfill} bdef
+% page state control
+/pgsv () def
+/bpage {/pgsv save def} bdef
+/epage {pgsv restore} bdef
+/bplot /gsave ldef
+/eplot {stroke grestore} bdef
+% orientation switch
+/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def
+% coordinate system mappings
+/dpi2point 0 def
+% font control
+/FontSize 0 def
+/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0]
+  makefont setfont} bdef
+/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse
+  exch dup 3 1 roll findfont dup length dict begin
+  { 1 index /FID ne {def}{pop pop} ifelse } forall
+  /Encoding exch def currentdict end definefont pop} bdef
+/isroman {findfont /CharStrings get /Agrave known} bdef
+/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse
+  exch FMS} bdef
+/csm {1 dpi2point div -1 dpi2point div scale neg translate
+ dup landscapeMode eq {pop -90 rotate}
+  {rotateMode eq {90 rotate} if} ifelse} bdef
+% line types: solid, dotted, dashed, dotdash
+/SO { [] 0 setdash } bdef
+/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
+/DA { [6 dpi2point mul] 0 setdash } bdef
+/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4
+  dpi2point mul] 0 setdash } bdef
+% macros for lines and objects
+/L {lineto stroke} bdef
+/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef
+/AP {{rlineto} repeat} bdef
+/PDlw -1 def
+/W {/PDlw currentlinewidth def setlinewidth} def
+/PP {closepath eofill} bdef
+/DP {closepath stroke} bdef
+/MR {4 -2 roll moveto dup  0 exch rlineto exch 0 rlineto
+  neg 0 exch rlineto closepath} bdef
+/FR {MR stroke} bdef
+/PR {MR fill} bdef
+/L1i {{currentfile picstr readhexstring pop} image} bdef
+/tMatrix matrix def
+/MakeOval {newpath tMatrix currentmatrix pop translate scale
+0 0 1 0 360 arc tMatrix setmatrix} bdef
+/FO {MakeOval stroke} bdef
+/PO {MakeOval fill} bdef
+/PD {currentlinewidth 2 div 0 360 arc fill
+   PDlw -1 eq not {PDlw w /PDlw -1 def} if} def
+/FA {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef
+/PA {newpath tMatrix currentmatrix pop	translate 0 0 moveto scale
+  0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef
+/FAn {newpath tMatrix currentmatrix pop translate scale
+  0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef
+/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale
+  0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef
+/vradius 0 def /hradius 0 def /lry 0 def
+/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def
+/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef
+  /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly
+  vradius add translate hradius vradius scale 0 0 1 180 270 arc 
+  tMatrix setmatrix lrx hradius sub uly vradius add translate
+  hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix
+  lrx hradius sub lry vradius sub translate hradius vradius scale
+  0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub
+  translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix
+  closepath} bdef
+/FRR {MRR stroke } bdef
+/PRR {MRR fill } bdef
+/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix
+  closepath} bdef
+/FlrRR {MlrRR stroke } bdef
+/PlrRR {MlrRR fill } bdef
+/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def
+  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
+  rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad
+  sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix
+  closepath} bdef
+/FtbRR {MtbRR stroke } bdef
+/PtbRR {MtbRR fill } bdef
+/stri 6 array def /dtri 6 array def
+/smat 6 array def /dmat 6 array def
+/tmat1 6 array def /tmat2 6 array def /dif 3 array def
+/asub {/ind2 exch def /ind1 exch def dup dup
+  ind1 get exch ind2 get sub exch } bdef
+/tri_to_matrix {
+  2 0 asub 3 1 asub 4 0 asub 5 1 asub
+  dup 0 get exch 1 get 7 -1 roll astore } bdef
+/compute_transform {
+  dmat dtri tri_to_matrix tmat1 invertmatrix 
+  smat stri tri_to_matrix tmat2 concatmatrix } bdef
+/ds {stri astore pop} bdef
+/dt {dtri astore pop} bdef
+/db {2 copy /cols xdef /rows xdef mul dup 3 mul string
+  currentfile exch readhexstring pop
+  dup 0 3 index getinterval /rbmap xdef
+  dup 2 index dup getinterval /gbmap xdef
+  1 index dup 2 mul exch getinterval /bbmap xdef pop pop}bdef
+/it {gs np dtri aload pop moveto lineto lineto cp c
+  cols rows 8 compute_transform 
+  rbmap gbmap bbmap true 3 colorimage gr}bdef
+/il {newpath moveto lineto stroke}bdef
+currentdict end def
+%%EndProlog
+
+%%BeginSetup
+MathWorks begin
+
+0 cap
+
+end
+%%EndSetup
+
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox:    39    75   523   702
+MathWorks begin
+bpage
+%%EndPageSetup
+
+%%BeginObject: obj1
+bplot
+
+/dpi2point 12 def
+portraitMode 0300 8832 csm
+
+  174   402  5810  7519 MR c np
+91 dict begin %Colortable dictionary
+/c0 { 0 0 0 sr} bdef
+/c1 { 1 1 1 sr} bdef
+/c2 { 1 0 0 sr} bdef
+/c3 { 0 1 0 sr} bdef
+/c4 { 0 0 1 sr} bdef
+/c5 { 1 1 0 sr} bdef
+/c6 { 1 0 1 sr} bdef
+/c7 { 0 1 1 sr} bdef
+c0
+1 j
+1 sg
+   0    0 6721 8162 PR
+6 w
+0 6651 4435 0 0 -6651 1260 7263 4 MP
+PP
+-4435 0 0 6651 4435 0 0 -6651 1260 7263 5 MP stroke
+4 w
+DO
+0 sg
+1260 7263 mt 1260  611 L
+1260  611 mt 1260  611 L
+1999 7263 mt 1999  611 L
+1999  611 mt 1999  611 L
+2739 7263 mt 2739  611 L
+2739  611 mt 2739  611 L
+3478 7263 mt 3478  611 L
+3478  611 mt 3478  611 L
+4217 7263 mt 4217  611 L
+4217  611 mt 4217  611 L
+4956 7263 mt 4956  611 L
+4956  611 mt 4956  611 L
+5695 7263 mt 5695  611 L
+5695  611 mt 5695  611 L
+1260 7263 mt 5695 7263 L
+5695 7263 mt 5695 7263 L
+1260 6524 mt 5695 6524 L
+5695 6524 mt 5695 6524 L
+1260 5785 mt 5695 5785 L
+5695 5785 mt 5695 5785 L
+1260 5046 mt 5695 5046 L
+5695 5046 mt 5695 5046 L
+1260 4307 mt 5695 4307 L
+5695 4307 mt 5695 4307 L
+1260 3567 mt 5695 3567 L
+5695 3567 mt 5695 3567 L
+1260 2829 mt 5695 2829 L
+5695 2829 mt 5695 2829 L
+1260 2089 mt 5695 2089 L
+5695 2089 mt 5695 2089 L
+1260 1351 mt 5695 1351 L
+5695 1351 mt 5695 1351 L
+1260  611 mt 5695  611 L
+5695  611 mt 5695  611 L
+SO
+6 w
+1260 7263 mt 5695 7263 L
+1260  612 mt 5695  612 L
+1260 7263 mt 1260  612 L
+5695 7263 mt 5695  612 L
+1260 7263 mt 5695 7263 L
+1260 7263 mt 1260  612 L
+1260 7263 mt 1260 7196 L
+1260  611 mt 1260  678 L
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 288 FMSR
+
+1180 7565 mt 
+(4) s
+1999 7263 mt 1999 7196 L
+1999  611 mt 1999  678 L
+1919 7565 mt 
+(8) s
+2739 7263 mt 2739 7196 L
+2739  611 mt 2739  678 L
+2579 7565 mt 
+(16) s
+3478 7263 mt 3478 7196 L
+3478  611 mt 3478  678 L
+3318 7565 mt 
+(32) s
+4217 7263 mt 4217 7196 L
+4217  611 mt 4217  678 L
+4057 7565 mt 
+(64) s
+4956 7263 mt 4956 7196 L
+4956  611 mt 4956  678 L
+4716 7565 mt 
+(128) s
+5695 7263 mt 5695 7196 L
+5695  611 mt 5695  678 L
+5455 7565 mt 
+(256) s
+1260 7263 mt 1327 7263 L
+5695 7263 mt 5628 7263 L
+1066 7370 mt 
+(8) s
+1260 6524 mt 1327 6524 L
+5695 6524 mt 5628 6524 L
+ 906 6631 mt 
+(16) s
+1260 5785 mt 1327 5785 L
+5695 5785 mt 5628 5785 L
+ 906 5892 mt 
+(32) s
+1260 5046 mt 1327 5046 L
+5695 5046 mt 5628 5046 L
+ 906 5153 mt 
+(64) s
+1260 4307 mt 1327 4307 L
+5695 4307 mt 5628 4307 L
+ 746 4414 mt 
+(128) s
+1260 3567 mt 1327 3567 L
+5695 3567 mt 5628 3567 L
+ 746 3674 mt 
+(256) s
+1260 2829 mt 1327 2829 L
+5695 2829 mt 5628 2829 L
+ 746 2936 mt 
+(512) s
+1260 2089 mt 1327 2089 L
+5695 2089 mt 5628 2089 L
+ 586 2196 mt 
+(1024) s
+1260 1351 mt 1327 1351 L
+5695 1351 mt 5628 1351 L
+ 586 1458 mt 
+(2048) s
+1260  611 mt 1327  611 L
+5695  611 mt 5628  611 L
+ 586  718 mt 
+(4096) s
+1260 7263 mt 5695 7263 L
+1260  612 mt 5695  612 L
+1260 7263 mt 1260  612 L
+5695 7263 mt 5695  612 L
+gs 1260 611 4436 6653 MR c np
+739 356 739 370 739 838 739 875 740 827 739 831 1260 2942 7 MP stroke
+gr
+
+24 W
+1260 2942 PD
+24 W
+1999 3773 PD
+24 W
+2739 4600 PD
+24 W
+3478 5475 PD
+24 W
+4217 6313 PD
+24 W
+4956 6683 PD
+24 W
+5695 7039 PD
+gs 1260 611 4436 6653 MR c np
+DA
+/c8 { 0.000000 0.000000 1.000000 sr} bdef
+c8
+739 330 739 420 739 827 739 903 740 747 739 835 1260 1745 7 MP stroke
+gr
+
+c8
+DA
+SO
+24 W
+1260 1745 PD
+24 W
+1999 2580 PD
+24 W
+2739 3327 PD
+24 W
+3478 4230 PD
+24 W
+4217 5057 PD
+24 W
+4956 5477 PD
+24 W
+5695 5807 PD
+DA
+gs 1260 611 4436 6653 MR c np
+DD
+/c9 { 1.000000 0.000000 0.000000 sr} bdef
+c9
+739 149 739 439 739 991 739 729 740 997 739 778 1260 1270 7 MP stroke
+gr
+
+c9
+DD
+SO
+24 W
+1260 1270 PD
+24 W
+1999 2048 PD
+24 W
+2739 3045 PD
+24 W
+3478 3774 PD
+24 W
+4217 4765 PD
+24 W
+4956 5204 PD
+24 W
+5695 5353 PD
+DD
+gs 1260 611 4436 6653 MR c np
+gr
+
+0 sg
+2063 7832 mt 
+(Number of processors) s
+ 467 4759 mt  -90 rotate
+(CPU time \(s\)) s
+90 rotate
+SO
+1 sg
+0 1048 2419 0 0 -1048 2786 2123 4 MP
+PP
+-2419 0 0 1048 2419 0 0 -1048 2786 2123 5 MP stroke
+4 w
+DO
+SO
+6 w
+0 sg
+2786 2123 mt 5205 2123 L
+2786 1075 mt 5205 1075 L
+2786 2123 mt 2786 1075 L
+5205 2123 mt 5205 1075 L
+2786 2123 mt 5205 2123 L
+2786 2123 mt 2786 1075 L
+2786 2123 mt 5205 2123 L
+2786 1075 mt 5205 1075 L
+2786 2123 mt 2786 1075 L
+5205 2123 mt 5205 1075 L
+3589 1369 mt 
+(STATES) s
+3589 1701 mt 
+(STG) s
+3589 2033 mt 
+(STG_FULL) s
+gs 2786 1075 2420 1049 MR c np
+482 0 2946 1271 2 MP stroke
+gs 3114 1198 147 147 MR c np
+24 W
+3187 1271 PD
+gr
+
+DA
+c8
+482 0 2946 1604 2 MP stroke
+SO
+gs 3114 1531 147 147 MR c np
+24 W
+3187 1604 PD
+gr
+
+DD
+c9
+482 0 2946 1936 2 MP stroke
+SO
+gs 3114 1863 147 147 MR c np
+24 W
+3187 1936 PD
+gr
+
+gr
+
+c9
+
+end
+
+eplot
+%%EndObject
+
+epage
+end
+
+showpage
+
+%%Trailer
+%%EOF
+
+%%EndDocument
+ @endspecial 4000 40123 a Ft(Figure)522 b(8:)775 b(Sp)34
+b(eedup)524 b(results)e(for)h(the)g(in)-34 b(tegration)523
+b(of)g(the)f(state)h(equations)g(only)g(\(solid)f(line)g(and)4000
+41629 y(column)486 b('ST)-101 b(A)g(TES'\),)487 b(staggered)e
+(sensitivit)-34 b(y)486 b(analysis)f(without)j(error)c(con)-34
+b(trol)486 b(on)g(the)g(sensitivit)-34 b(y)4000 43134
+y(v)-67 b(ariables)373 b(\(dashed)j(line)e(and)i(column)e('STG'\),)h
+(and)h(staggered)e(sensitivit)-34 b(y)375 b(analysis)f(with)h(full)g
+(error)4000 44640 y(con)-34 b(trol)404 b(\(dotted)i(line)e(and)h
+(column)f('STG)p 24185 44640 364 45 v 437 w(FULL'\))p
+Black 5882 48374 a(The)478 b(departure)f(from)h(the)g(ideal)f(line)f
+(of)i(slop)34 b(e)477 b Fp(\241)p Ft(1)g(is)g(explained)g(b)-34
+b(y)478 b(the)f(in)-34 b(terpla)g(y)478 b(of)g(sev)-34
+b(eral)4000 49880 y(con\260icting)441 b(pro)34 b(cesses.)647
+b(On)441 b(one)g(hand,)450 b(when)442 b(increasing)e(the)h(n)-34
+b(um)g(b)34 b(er)441 b(of)g(pro)34 b(cesses,)449 b(the)441
+b(precon-)4000 51385 y(ditioner)392 b(qualit)-34 b(y)391
+b(decreases,)i(as)f(it)f(incorp)34 b(orates)391 b(a)h(smaller)e(and)j
+(smaller)d(fraction)i(of)g(the)g(Jacobian)4000 52891
+y(and)461 b(the)g(cost)g(of)g(in)-34 b(terpro)34 b(cess)460
+b(comm)-34 b(unication)462 b(increases.)707 b(On)461
+b(the)g(other)g(hand,)475 b(decreasing)460 b(the)4000
+54396 y(n)-34 b(um)g(b)34 b(er)413 b(of)f(pro)34 b(cesses)412
+b(leads)f(to)i(an)f(increase)f(in)h(the)h(cost)f(of)g(the)h
+(preconditioner)f(setup)h(phase)f(and)4000 55902 y(to)362
+b(a)f(larger)f(lo)34 b(cal)360 b(problem)i(size)e(whic)-34
+b(h)363 b(can)e(lead)g(to)h(a)f(p)34 b(oin)-34 b(t)362
+b(where)g(a)f(no)34 b(de)362 b(starts)g(memory)e(paging)4000
+57407 y(to)404 b(disk.)p Black 27394 81741 a(37)p Black
+eop
+%%Page: 38 42
+38 41 bop Black Black 0 7638 a Fs(References)p Black
+0 10344 a Ft([1])p Black 606 w(A.)530 b(C.)h(Hindmarsh)h(and)f(R.)g
+(Serban.)915 b(Example)530 b(Programs)h(for)g(CV)-34
+b(ODE)531 b(v2.2.0.)914 b(T)-101 b(ec)-34 b(hnical)1886
+11849 y(rep)34 b(ort,)403 b(LLNL,)g(2004.)537 b(UCRL-SM-208110.)p
+Black 0 14351 a([2])p Black 606 w(A.)430 b(C.)h(Hindmarsh)h(and)f(R.)g
+(Serban.)618 b(User)430 b(Do)34 b(cumen)-34 b(tation)432
+b(for)f(CV)-34 b(ODES)432 b(v2.1.0.)616 b(T)-101 b(ec)-34
+b(hnical)1886 15856 y(rep)34 b(ort,)403 b(LLNL,)g(2004.)537
+b(UCRL-SM-208111.)p Black 0 18358 a([3])p Black 606 w(R.)497
+b(Serban)i(and)g(A.)e(C.)h(Hindmarsh.)818 b(CV)-34 b(ODES)q(,)521
+b(an)498 b(ODE)f(solv)-34 b(er)498 b(with)g(sensitivit)-34
+b(y)498 b(analysis)1886 19864 y(capabilities.)536 b(T)-101
+b(ec)-34 b(hnical)404 b(Rep)34 b(ort)405 b(UCRL-TR-xxxxxx,)e(LLNL,)g
+(2004.)p Black 23394 81741 a(38)p Black eop
+%%Page: 39 43
+39 42 bop Black Black 4000 7638 a Fs(A)1793 b(Listing)600
+b(of)d Fa(cvfnx.c)2266 10674 y Fd(1)1328 b Fg(/*)2266
+12003 y Fd(2)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)2266
+13331 y Fd(3)1909 b Fg(*)581 b($Revision:)i(1.17.2.2)f($)2266
+14659 y Fd(4)1909 b Fg(*)581 b($Date:)h(2005/04/01)h(21:55:27)f($)2266
+15988 y Fd(5)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)2266
+17316 y Fd(6)1909 b Fg(*)581 b(Programmer\(s\):)j(Scott)e(D.)f(Cohen,)h
+(Alan)g(C.)f(Hindmarsh,)i(George)f(D.)f(Byrne,)2266 18645
+y Fd(7)1909 b Fg(*)8136 b(and)582 b(Radu)g(Serban)g(@)f(LLNL)2266
+19973 y Fd(8)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)2266
+21301 y Fd(9)1909 b Fg(*)581 b(Example)i(problem:)1860
+22630 y Fd(10)1909 b Fg(*)1860 23958 y Fd(11)g Fg(*)581
+b(The)h(following)h(is)e(a)g(simple)h(example)h(problem,)f(with)g(the)f
+(program)h(for)1860 25286 y Fd(12)1909 b Fg(*)581 b(its)h(solution)g
+(by)g(CVODES.)g(The)g(problem)g(is)f(the)h(semi-discrete)h(form)f(of)
+1860 26615 y Fd(13)1909 b Fg(*)581 b(the)h(advection-diffusion)i
+(equation)e(in)g(1-D:)1860 27943 y Fd(14)1909 b Fg(*)1744
+b(du/dt)582 b(=)f(q1)g(*)h(d^2)f(u)h(/)f(dx^2)h(+)f(q2)g(*)h(du/dx)1860
+29271 y Fd(15)1909 b Fg(*)581 b(on)h(the)f(interval)i(0)e(<=)h(x)f(<=)g
+(2,)h(and)f(the)h(time)g(interval)g(0)f(<=)h(t)f(<=)h(5.)1860
+30600 y Fd(16)1909 b Fg(*)581 b(Homogeneous)i(Dirichlet)g(boundary)f
+(conditions)h(are)e(posed,)h(and)g(the)1860 31928 y Fd(17)1909
+b Fg(*)581 b(initial)i(condition)f(is:)1860 33256 y Fd(18)1909
+b Fg(*)1744 b(u\(x,y,t=0\))582 b(=)g(x\(2-x\)exp\(2x\).)1860
+34585 y Fd(19)1909 b Fg(*)581 b(The)h(PDE)g(is)f(discretized)i(on)e(a)h
+(uniform)g(grid)g(of)f(size)h(MX+2)f(with)1860 35913
+y Fd(20)1909 b Fg(*)581 b(central)i(differencing,)g(and)e(with)h
+(boundary)g(values)g(eliminated,)1860 37241 y Fd(21)1909
+b Fg(*)581 b(leaving)i(an)e(ODE)h(system)g(of)f(size)h(NEQ)g(=)f(MX.)
+1860 38570 y Fd(22)1909 b Fg(*)581 b(This)h(program)g(solves)g(the)g
+(problem)g(with)g(the)g(option)g(for)f(nonstiff)1860
+39898 y Fd(23)1909 b Fg(*)581 b(systems:)i(ADAMS)f(method)g(and)f
+(functional)i(iteration.)1860 41227 y Fd(24)1909 b Fg(*)581
+b(It)h(uses)g(scalar)g(relative)g(and)g(absolute)g(tolerances.)1860
+42555 y Fd(25)1909 b Fg(*)581 b(Output)h(is)g(printed)g(at)g(t)f(=)g
+(.5,)h(1.0,)g(...,)f(5.)1860 43883 y Fd(26)1909 b Fg(*)581
+b(Run)h(statistics)h(\(optional)f(outputs\))h(are)e(printed)h(at)g(the)
+f(end.)1860 45212 y Fd(27)1909 b Fg(*)1860 46540 y Fd(28)g
+Fg(*)581 b(Optionally,)i(CVODES)f(can)g(compute)g(sensitivities)h(with)
+f(respect)g(to)g(the)1860 47868 y Fd(29)1909 b Fg(*)581
+b(problem)i(parameters)f(q1)g(and)f(q2.)1860 49197 y
+Fd(30)1909 b Fg(*)581 b(Any)h(of)f(three)h(sensitivity)h(methods)f
+(\(SIMULTANEOUS,)i(STAGGERED,)e(and)1860 50525 y Fd(31)1909
+b Fg(*)581 b(STAGGERED1\))i(can)f(be)f(used)h(and)g(sensitivities)h
+(may)e(be)h(included)g(in)g(the)1860 51853 y Fd(32)1909
+b Fg(*)581 b(error)h(test)g(or)g(not)f(\(error)h(control)g(set)g(on)f
+(FULL)h(or)g(PARTIAL,)1860 53182 y Fd(33)1909 b Fg(*)581
+b(respectively\).)1860 54510 y Fd(34)1909 b Fg(*)1860
+55838 y Fd(35)g Fg(*)581 b(Execution:)1860 57167 y Fd(36)1909
+b Fg(*)1860 58495 y Fd(37)g Fg(*)581 b(If)h(no)f(sensitivities)i(are)f
+(desired:)1860 59823 y Fd(38)1909 b Fg(*)2325 b(\045)581
+b(cvsnx)h(-nosensi)1860 61152 y Fd(39)1909 b Fg(*)581
+b(If)h(sensitivities)h(are)f(to)f(be)g(computed:)1860
+62480 y Fd(40)1909 b Fg(*)2325 b(\045)581 b(cvsnx)h(-sensi)g
+(sensi_meth)h(err_con)1860 63808 y Fd(41)1909 b Fg(*)581
+b(where)h(sensi_meth)h(is)e(one)h(of)f({sim,)h(stg,)g(stg1})g(and)g
+(err_con)g(is)f(one)h(of)1860 65137 y Fd(42)1909 b Fg(*)581
+b({t,)h(f}.)1860 66465 y Fd(43)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)1860
+67794 y Fd(44)1909 b Fg(*/)1860 69122 y Fd(45)1860 70450
+y(46)1328 b Fg(#include)582 b(<stdio.h>)1860 71779 y
+Fd(47)1328 b Fg(#include)582 b(<stdlib.h>)1860 73107
+y Fd(48)1328 b Fg(#include)582 b(<string.h>)1860 74435
+y Fd(49)1328 b Fg(#include)582 b(<math.h>)1860 75764
+y Fd(50)1328 b Fg(#include)582 b("sundialstypes.h")1860
+77092 y Fd(51)1328 b Fg(#include)582 b("cvodes.h")1860
+78420 y Fd(52)1328 b Fg(#include)582 b("nvector_serial.h")p
+Black 27394 81741 a Ft(39)p Black eop
+%%Page: 40 44
+40 43 bop Black Black -2140 7638 a Fd(53)-2140 8966 y(54)1328
+b Fg(/*)581 b(Problem)i(Constants)f(*/)-2140 10295 y
+Fd(55)1328 b Fg(#define)582 b(XMAX)1163 b(RCONST\(2.0\))1745
+b(/*)582 b(domain)g(boundary)6393 b(*/)-2140 11623 y
+Fd(56)1328 b Fg(#define)582 b(MX)2325 b(10)6974 b(/*)582
+b(mesh)f(dimension)6975 b(*/)-2140 12951 y Fd(57)1328
+b Fg(#define)582 b(NEQ)1744 b(MX)6974 b(/*)582 b(number)g(of)f
+(equations)4069 b(*/)-2140 14280 y Fd(58)1328 b Fg(#define)582
+b(ATOL)1163 b(RCONST\(1.e-5\))583 b(/*)f(scalar)g(absolute)g(tolerance)
+g(*/)-2140 15608 y Fd(59)1328 b Fg(#define)582 b(T0)2325
+b(RCONST\(0.0\))1745 b(/*)582 b(initial)g(time)8136 b(*/)-2140
+16936 y Fd(60)1328 b Fg(#define)582 b(T1)2325 b(RCONST\(0.5\))1745
+b(/*)582 b(first)g(output)g(time)5230 b(*/)-2140 18265
+y Fd(61)1328 b Fg(#define)582 b(DTOUT)g(RCONST\(0.5\))1745
+b(/*)582 b(output)g(time)f(increment)2907 b(*/)-2140
+19593 y Fd(62)1328 b Fg(#define)582 b(NOUT)1163 b(10)6974
+b(/*)582 b(number)g(of)f(output)h(times)2325 b(*/)-2140
+20922 y Fd(63)-2140 22250 y(64)1328 b Fg(#define)582
+b(NP)2325 b(2)-2140 23578 y Fd(65)1328 b Fg(#define)582
+b(NS)2325 b(2)-2140 24907 y Fd(66)-2140 26235 y(67)1328
+b Fg(#define)582 b(ZERO)1163 b(RCONST\(0.0\))-2140 27563
+y Fd(68)-2140 28892 y(69)1328 b Fg(/*)581 b(Type)h(:)f(UserData)-2140
+30220 y Fd(70)3071 b Fg(contains)583 b(problem)f(parameters,)h(grid)f
+(constants,)g(work)g(array.)g(*/)-2140 31548 y Fd(71)-2140
+32877 y(72)1328 b Fg(typedef)582 b(struct)g({)-2140 34205
+y Fd(73)2490 b Fg(realtype)583 b(*p;)-2140 35533 y Fd(74)2490
+b Fg(realtype)583 b(dx;)-2140 36862 y Fd(75)1328 b Fg(})581
+b(*UserData;)-2140 38190 y Fd(76)-2140 39518 y(77)1328
+b Fg(/*)581 b(Functions)i(Called)f(by)f(the)h(CVODES)g(Solver)g(*/)
+-2140 40847 y Fd(78)-2140 42175 y(79)1328 b Fg(static)582
+b(void)g(f\(realtype)g(t,)g(N_Vector)g(u,)g(N_Vector)g(udot,)g(void)g
+(*f_data\);)-2140 43504 y Fd(80)-2140 44832 y(81)1328
+b Fg(/*)581 b(Private)i(Helper)f(Functions)g(*/)-2140
+46160 y Fd(82)-2140 47489 y(83)1328 b Fg(static)582 b(void)g
+(ProcessArgs\(int)h(argc,)f(char)g(*argv[],)-2140 48817
+y Fd(84)15276 b Fg(booleantype)582 b(*sensi,)h(int)e(*sensi_meth,)-2140
+50145 y Fd(85)15276 b Fg(booleantype)582 b(*err_con\);)-2140
+51474 y Fd(86)1328 b Fg(static)582 b(void)g(WrongArgs\(char)h(*name\);)
+-2140 52802 y Fd(87)1328 b Fg(static)582 b(void)g(SetIC\(N_Vector)h(u,)
+e(realtype)i(dx\);)-2140 54130 y Fd(88)1328 b Fg(static)582
+b(void)g(PrintOutput\(void)h(*cvode_mem,)g(realtype)f(t,)g(N_Vector)g
+(u\);)-2140 55459 y Fd(89)1328 b Fg(static)582 b(void)g
+(PrintOutputS\(N_Vector)i(*uS\);)-2140 56787 y Fd(90)1328
+b Fg(static)582 b(void)g(PrintFinalStats\(void)i(*cvode_mem,)f
+(booleantype)f(sensi\);)-2140 58115 y Fd(91)-2140 59444
+y(92)1328 b Fg(static)582 b(int)g(check_flag\(void)h(*flagvalue,)g
+(char)f(*funcname,)g(int)g(opt\);)-2140 60772 y Fd(93)-2140
+62100 y(94)1328 b Fg(/*)-2140 63429 y Fd(95)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2140 64757 y Fd(96)g Fg(*)581 b(MAIN)h(PROGRAM)-2140
+66086 y Fd(97)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2140 67414 y Fd(98)g Fg(*/)-2140 68742 y Fd(99)-2546
+70071 y(100)1328 b Fg(int)582 b(main\(int)g(argc,)g(char)g(*argv[]\))
+-2546 71399 y Fd(101)1328 b Fg({)-2546 72727 y Fd(102)2490
+b Fg(void)582 b(*cvode_mem;)-2546 74056 y Fd(103)2490
+b Fg(UserData)583 b(data;)-2546 75384 y Fd(104)2490 b
+Fg(realtype)583 b(dx,)e(reltol,)h(abstol,)h(t,)e(tout;)-2546
+76712 y Fd(105)2490 b Fg(N_Vector)583 b(u;)-2546 78041
+y Fd(106)2490 b Fg(int)582 b(iout,)g(flag;)p Black 23394
+81741 a Ft(40)p Black eop
+%%Page: 41 45
+41 44 bop Black Black 1454 7638 a Fd(107)1454 8966 y(108)2490
+b Fg(realtype)583 b(*pbar;)1454 10295 y Fd(109)2490 b
+Fg(int)582 b(is,)f(*plist;)1454 11623 y Fd(110)2490 b
+Fg(N_Vector)583 b(*uS;)1454 12951 y Fd(111)2490 b Fg(booleantype)583
+b(sensi,)f(err_con;)1454 14280 y Fd(112)2490 b Fg(int)582
+b(sensi_meth;)1454 15608 y Fd(113)1454 16936 y(114)2490
+b Fg(cvode_mem)583 b(=)e(NULL;)1454 18265 y Fd(115)2490
+b Fg(data)582 b(=)f(NULL;)1454 19593 y Fd(116)2490 b
+Fg(u)582 b(=)f(NULL;)1454 20922 y Fd(117)2490 b Fg(pbar)582
+b(=)f(NULL;)1454 22250 y Fd(118)2490 b Fg(plist)582 b(=)f(NULL;)1454
+23578 y Fd(119)2490 b Fg(uS)582 b(=)f(NULL;)1454 24907
+y Fd(120)1454 26235 y(121)2490 b Fg(/*)582 b(Process)g(arguments)g(*/)
+1454 27563 y Fd(122)2490 b Fg(ProcessArgs\(argc,)584
+b(argv,)e(&sensi,)g(&sensi_meth,)h(&err_con\);)1454 28892
+y Fd(123)1454 30220 y(124)2490 b Fg(/*)582 b(Set)f(user)h(data)g(*/)
+1454 31548 y Fd(125)2490 b Fg(data)582 b(=)f(\(UserData\))i
+(malloc\(sizeof)g(*data\);)f(/*)g(Allocate)g(data)g(memory)g(*/)1454
+32877 y Fd(126)2490 b Fg(if\(check_flag\(\(void)584 b(*\)data,)e
+("malloc",)h(2\)\))f(return\(1\);)1454 34205 y Fd(127)2490
+b Fg(data->p)582 b(=)g(\(realtype)g(*\))g(malloc\(NP)g(*)g
+(sizeof\(realtype\)\);)1454 35533 y Fd(128)2490 b Fg(dx)582
+b(=)f(data->dx)h(=)g(XMAX/\(\(realtype\)\(MX+1\)\);)1454
+36862 y Fd(129)2490 b Fg(data->p[0])583 b(=)e(RCONST\(1.0\);)1454
+38190 y Fd(130)2490 b Fg(data->p[1])583 b(=)e(RCONST\(0.5\);)1454
+39518 y Fd(131)1454 40847 y(132)2490 b Fg(/*)582 b(Allocate)g(and)g
+(set)f(initial)h(states)h(*/)1454 42175 y Fd(133)2490
+b Fg(u)582 b(=)f(N_VNew_Serial\(NEQ\);)1454 43504 y Fd(134)2490
+b Fg(if\(check_flag\(\(void)584 b(*\)u,)e("N_VNew_Serial",)i(0\)\))d
+(return\(1\);)1454 44832 y Fd(135)2490 b Fg(SetIC\(u,)583
+b(dx\);)1454 46160 y Fd(136)1454 47489 y(137)2490 b Fg(/*)582
+b(Set)f(integration)i(tolerances)g(*/)1454 48817 y Fd(138)2490
+b Fg(reltol)582 b(=)g(ZERO;)1454 50145 y Fd(139)2490
+b Fg(abstol)582 b(=)g(ATOL;)1454 51474 y Fd(140)1454
+52802 y(141)2490 b Fg(/*)582 b(Create)g(CVODES)g(object)g(*/)1454
+54130 y Fd(142)2490 b Fg(cvode_mem)583 b(=)e(CVodeCreate\(CV_ADAMS,)j
+(CV_FUNCTIONAL\);)1454 55459 y Fd(143)2490 b Fg(if\(check_flag\(\(void)
+584 b(*\)cvode_mem,)f("CVodeCreate",)g(0\)\))f(return\(1\);)1454
+56787 y Fd(144)1454 58115 y(145)2490 b Fg(flag)582 b(=)f
+(CVodeSetFdata\(cvode_mem,)k(data\);)1454 59444 y Fd(146)2490
+b Fg(if\(check_flag\(&flag,)584 b("CVodeSetFdata",)g(1\)\))e
+(return\(1\);)1454 60772 y Fd(147)1454 62100 y(148)2490
+b Fg(/*)582 b(Allocate)g(CVODES)g(memory)g(*/)1454 63429
+y Fd(149)2490 b Fg(flag)582 b(=)f(CVodeMalloc\(cvode_mem,)k(f,)c(T0,)h
+(u,)f(CV_SS,)h(reltol,)g(&abstol\);)1454 64757 y Fd(150)2490
+b Fg(if\(check_flag\(&flag,)584 b("CVodeMalloc",)g(1\)\))d
+(return\(1\);)1454 66086 y Fd(151)1454 67414 y(152)2490
+b Fg(printf\("\\n1-D)583 b(advection-diffusion)h(equation,)f(mesh)f
+(size)f(=\0453d\\n",)i(MX\);)1454 68742 y Fd(153)1454
+70071 y(154)2490 b Fg(/*)582 b(Sensitivity-related)i(settings)e(*/)1454
+71399 y Fd(155)2490 b Fg(if\(sensi\))583 b({)1454 72727
+y Fd(156)1454 74056 y(157)3653 b Fg(plist)581 b(=)h(\(int)g(*\))f
+(malloc\(NS)h(*)g(sizeof\(int\)\);)1454 75384 y Fd(158)3653
+b Fg(if\(check_flag\(\(void)584 b(*\)plist,)e("malloc",)g(2\)\))g
+(return\(1\);)1454 76712 y Fd(159)3653 b Fg(for\(is=0;)582
+b(is<NS;)g(is++\))g(plist[is])h(=)e(is+1;)1454 78041
+y Fd(160)p Black 27394 81741 a Ft(41)p Black eop
+%%Page: 42 46
+42 45 bop Black Black -2546 7638 a Fd(161)3653 b Fg(pbar)1162
+b(=)582 b(\(realtype)g(*\))g(malloc\(NS)g(*)g(sizeof\(realtype\)\);)
+-2546 8966 y Fd(162)3653 b Fg(if\(check_flag\(\(void)584
+b(*\)pbar,)e("malloc",)g(2\)\))g(return\(1\);)-2546 10295
+y Fd(163)3653 b Fg(for\(is=0;)582 b(is<NS;)g(is++\))g(pbar[is])g(=)g
+(data->p[plist[is]-1];)-2546 11623 y Fd(164)-2546 12951
+y(165)3653 b Fg(uS)581 b(=)g(N_VNewVectorArray_Serial\(NS,)586
+b(NEQ\);)-2546 14280 y Fd(166)3653 b Fg(if\(check_flag\(\(void)584
+b(*\)uS,)d("N_VNew",)i(0\)\))f(return\(1\);)-2546 15608
+y Fd(167)3653 b Fg(for\(is=0;is<NS;is++\))-2546 16936
+y Fd(168)4815 b Fg(N_VConst\(ZERO,)583 b(uS[is]\);)-2546
+18265 y Fd(169)-2546 19593 y(170)3653 b Fg(flag)581 b(=)h
+(CVodeSensMalloc\(cvode_mem,)j(NS,)c(sensi_meth,)i(uS\);)-2546
+20922 y Fd(171)3653 b Fg(if\(check_flag\(&flag,)584 b
+("CVodeSensMalloc",)g(1\)\))d(return\(1\);)-2546 22250
+y Fd(172)-2546 23578 y(173)3653 b Fg(flag)581 b(=)h
+(CVodeSetSensErrCon\(cvode_mem,)j(err_con\);)-2546 24907
+y Fd(174)3653 b Fg(if\(check_flag\(&flag,)584 b("CVodeSetSensErrCon",)g
+(1\)\))e(return\(1\);)-2546 26235 y Fd(175)-2546 27563
+y(176)3653 b Fg(flag)581 b(=)h(CVodeSetSensRho\(cvode_mem,)j(ZERO\);)
+-2546 28892 y Fd(177)3653 b Fg(if\(check_flag\(&flag,)584
+b("CVodeSetSensRho",)g(1\)\))d(return\(1\);)-2546 30220
+y Fd(178)-2546 31548 y(179)3653 b Fg(flag)581 b(=)h
+(CVodeSetSensParams\(cvode_mem,)j(data->p,)d(pbar,)g(plist\);)-2546
+32877 y Fd(180)3653 b Fg(if\(check_flag\(&flag,)584 b
+("CVodeSetSensParams",)g(1\)\))e(return\(1\);)-2546 34205
+y Fd(181)-2546 35533 y(182)3653 b Fg(printf\("Sensitivity:)584
+b(YES)d("\);)-2546 36862 y Fd(183)3653 b Fg(if\(sensi_meth)583
+b(==)e(CV_SIMULTANEOUS\))-2546 38190 y Fd(184)4815 b
+Fg(printf\("\()582 b(SIMULTANEOUS)h(+"\);)-2546 39518
+y Fd(185)3653 b Fg(else)-2546 40847 y Fd(186)4815 b Fg(if\(sensi_meth)
+583 b(==)e(CV_STAGGERED\))j(printf\("\()e(STAGGERED)g(+"\);)-2546
+42175 y Fd(187)4815 b Fg(else)15692 b(printf\("\()582
+b(STAGGERED1)h(+"\);)-2546 43504 y Fd(188)3653 b Fg(if\(err_con\))582
+b(printf\(")h(FULL)e(ERROR)h(CONTROL)h(\)"\);)-2546 44832
+y Fd(189)3653 b Fg(else)4649 b(printf\(")583 b(PARTIAL)f(ERROR)g
+(CONTROL)g(\)"\);)-2546 46160 y Fd(190)-2546 47489 y(191)2490
+b Fg(})582 b(else)f({)-2546 48817 y Fd(192)-2546 50145
+y(193)3653 b Fg(printf\("Sensitivity:)584 b(NO)d("\);)-2546
+51474 y Fd(194)-2546 52802 y(195)2490 b Fg(})-2546 54130
+y Fd(196)-2546 55459 y(197)g Fg(/*)582 b(In)f(loop)h(over)g(output)g
+(points,)g(call)g(CVode,)g(print)g(results,)g(test)g(for)f(error)h(*/)
+-2546 56787 y Fd(198)-2546 58115 y(199)2490 b Fg(printf\("\\n\\n"\);)
+-2546 59444 y Fd(200)g Fg
+(printf\("==========================================================)p
+(==\\n"\);)-2546 60772 y Fd(201)g Fg(printf\(")2907 b(T)f(Q)4068
+b(H)3487 b(NST)11624 b(Max)581 b(norm)1744 b(\\n"\);)-2546
+62100 y Fd(202)2490 b Fg
+(printf\("==========================================================)p
+(==\\n"\);)-2546 63429 y Fd(203)-2546 64757 y(204)g Fg(for)582
+b(\(iout=1,)g(tout=T1;)h(iout)e(<=)h(NOUT;)g(iout++,)g(tout)g(+=)f
+(DTOUT\))h({)-2546 66086 y Fd(205)3653 b Fg(flag)581
+b(=)h(CVode\(cvode_mem,)h(tout,)f(u,)g(&t,)f(CV_NORMAL\);)-2546
+67414 y Fd(206)3653 b Fg(if\(check_flag\(&flag,)584 b("CVode",)e(1\)\))
+g(break;)-2546 68742 y Fd(207)3653 b Fg(PrintOutput\(cvode_mem,)584
+b(t,)d(u\);)-2546 70071 y Fd(208)3653 b Fg(if)581 b(\(sensi\))h({)-2546
+71399 y Fd(209)4815 b Fg(flag)582 b(=)f(CVodeGetSens\(cvode_mem,)k(t,)c
+(uS\);)-2546 72727 y Fd(210)4815 b Fg(if\(check_flag\(&flag,)584
+b("CVodeGetSens",)f(1\)\))f(break;)-2546 74056 y Fd(211)4815
+b Fg(PrintOutputS\(uS\);)-2546 75384 y Fd(212)3653 b
+Fg(})-2546 76712 y Fd(213)g Fg
+(printf\("----------------------------------------------------------)p
+(--\\n"\);)-2546 78041 y Fd(214)2490 b Fg(})p Black 23394
+81741 a Ft(42)p Black eop
+%%Page: 43 47
+43 46 bop Black Black 1454 7638 a Fd(215)1454 8966 y(216)2490
+b Fg(/*)582 b(Print)g(final)g(statistics)g(*/)1454 10295
+y Fd(217)2490 b Fg(PrintFinalStats\(cvode_mem,)585 b(sensi\);)1454
+11623 y Fd(218)1454 12951 y(219)2490 b Fg(/*)582 b(Free)f(memory)i(*/)
+1454 14280 y Fd(220)2490 b Fg(N_VDestroy_Serial\(u\);)1454
+15608 y Fd(221)g Fg(if)582 b(\(sensi\))g({)1454 16936
+y Fd(222)3653 b Fg(N_VDestroyVectorArray_Serial\(uS,)586
+b(NS\);)1454 18265 y Fd(223)3653 b Fg(free\(plist\);)1454
+19593 y Fd(224)g Fg(free\(pbar\);)1454 20922 y Fd(225)2490
+b Fg(})1454 22250 y Fd(226)g Fg(free\(data\);)1454 23578
+y Fd(227)g Fg(CVodeFree\(cvode_mem\);)1454 24907 y Fd(228)1454
+26235 y(229)g Fg(return\(0\);)1454 27563 y Fd(230)1328
+b Fg(})1454 28892 y Fd(231)1454 30220 y(232)g Fg(/*)1454
+31548 y Fd(233)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)1454 32877 y Fd(234)g Fg(*)581 b(FUNCTIONS)i(CALLED)f(BY)f(CVODES)
+1454 34205 y Fd(235)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)1454 35533 y Fd(236)g Fg(*/)1454 36862 y Fd(237)1454
+38190 y(238)1328 b Fg(/*)1454 39518 y Fd(239)1909 b Fg(*)581
+b(f)h(routine.)g(Compute)g(f\(t,u\).)1454 40847 y Fd(240)1909
+b Fg(*/)1454 42175 y Fd(241)1454 43504 y(242)1328 b Fg(static)582
+b(void)g(f\(realtype)g(t,)g(N_Vector)g(u,)g(N_Vector)g(udot,)g(void)g
+(*f_data\))1454 44832 y Fd(243)1328 b Fg({)1454 46160
+y Fd(244)2490 b Fg(realtype)583 b(ui,)e(ult,)h(urt,)g(hordc,)g(horac,)g
+(hdiff,)g(hadv;)1454 47489 y Fd(245)2490 b Fg(realtype)583
+b(dx;)1454 48817 y Fd(246)2490 b Fg(realtype)583 b(*udata,)f(*dudata;)
+1454 50145 y Fd(247)2490 b Fg(int)582 b(i;)1454 51474
+y Fd(248)2490 b Fg(UserData)583 b(data;)1454 52802 y
+Fd(249)1454 54130 y(250)2490 b Fg(udata)582 b(=)f(NV_DATA_S\(u\);)1454
+55459 y Fd(251)2490 b Fg(dudata)582 b(=)g(NV_DATA_S\(udot\);)1454
+56787 y Fd(252)1454 58115 y(253)2490 b Fg(/*)582 b(Extract)g(needed)g
+(problem)g(constants)h(from)e(data)h(*/)1454 59444 y
+Fd(254)2490 b Fg(data)582 b(=)f(\(UserData\))i(f_data;)1454
+60772 y Fd(255)2490 b Fg(dx)2325 b(=)581 b(data->dx;)1454
+62100 y Fd(256)2490 b Fg(hordc)582 b(=)f(data->p[0]/\(dx*dx\);)1454
+63429 y Fd(257)2490 b Fg(horac)582 b(=)f
+(data->p[1]/\(RCONST\(2.0\)*dx\);)1454 64757 y Fd(258)1454
+66086 y(259)2490 b Fg(/*)582 b(Loop)f(over)h(all)g(grid)g(points.)g(*/)
+1454 67414 y Fd(260)2490 b Fg(for)582 b(\(i=0;)g(i<NEQ;)g(i++\))g({)
+1454 68742 y Fd(261)1454 70071 y(262)3653 b Fg(/*)581
+b(Extract)h(u)g(at)f(x_i)h(and)f(two)h(neighboring)h(points)f(*/)1454
+71399 y Fd(263)3653 b Fg(ui)581 b(=)g(udata[i];)1454
+72727 y Fd(264)3653 b Fg(if\(i!=0\))1454 74056 y Fd(265)4815
+b Fg(ult)581 b(=)h(udata[i-1];)1454 75384 y Fd(266)3653
+b Fg(else)1454 76712 y Fd(267)4815 b Fg(ult)581 b(=)h(ZERO;)1454
+78041 y Fd(268)3653 b Fg(if\(i!=NEQ-1\))p Black 27394
+81741 a Ft(43)p Black eop
+%%Page: 44 48
+44 47 bop Black Black -2546 7638 a Fd(269)4815 b Fg(urt)581
+b(=)h(udata[i+1];)-2546 8966 y Fd(270)3653 b Fg(else)-2546
+10295 y Fd(271)4815 b Fg(urt)581 b(=)h(ZERO;)-2546 11623
+y Fd(272)-2546 12951 y(273)3653 b Fg(/*)581 b(Set)h(diffusion)g(and)g
+(advection)g(terms)g(and)g(load)f(into)h(udot)g(*/)-2546
+14280 y Fd(274)3653 b Fg(hdiff)581 b(=)h(hordc*\(ult)g(-)g
+(RCONST\(2.0\)*ui)h(+)e(urt\);)-2546 15608 y Fd(275)3653
+b Fg(hadv)581 b(=)h(horac*\(urt)g(-)g(ult\);)-2546 16936
+y Fd(276)3653 b Fg(dudata[i])582 b(=)f(hdiff)h(+)g(hadv;)-2546
+18265 y Fd(277)2490 b Fg(})-2546 19593 y Fd(278)1328
+b Fg(})-2546 20922 y Fd(279)-2546 22250 y(280)g Fg(/*)-2546
+23578 y Fd(281)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 24907 y Fd(282)g Fg(*)581 b(PRIVATE)i(FUNCTIONS)-2546
+26235 y Fd(283)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 27563 y Fd(284)g Fg(*/)-2546 28892 y Fd(285)-2546
+30220 y(286)1328 b Fg(/*)-2546 31548 y Fd(287)1909 b
+Fg(*)581 b(Process)i(and)e(verify)h(arguments)h(to)e(cvfnx.)-2546
+32877 y Fd(288)1909 b Fg(*/)-2546 34205 y Fd(289)-2546
+35533 y(290)1328 b Fg(static)582 b(void)g(ProcessArgs\(int)h(argc,)f
+(char)g(*argv[],)-2546 36862 y Fd(291)15276 b Fg(booleantype)582
+b(*sensi,)h(int)e(*sensi_meth,)i(booleantype)g(*err_con\))-2546
+38190 y Fd(292)1328 b Fg({)-2546 39518 y Fd(293)2490
+b Fg(*sensi)582 b(=)g(FALSE;)-2546 40847 y Fd(294)2490
+b Fg(*sensi_meth)583 b(=)e(-1;)-2546 42175 y Fd(295)2490
+b Fg(*err_con)583 b(=)e(FALSE;)-2546 43504 y Fd(296)-2546
+44832 y(297)2490 b Fg(if)582 b(\(argc)g(<)f(2\))g
+(WrongArgs\(argv[0]\);)-2546 46160 y Fd(298)-2546 47489
+y(299)2490 b Fg(if)582 b(\(strcmp\(argv[1],"-nosensi"\))j(==)c(0\))
+-2546 48817 y Fd(300)3653 b Fg(*sensi)582 b(=)f(FALSE;)-2546
+50145 y Fd(301)2490 b Fg(else)582 b(if)f(\(strcmp\(argv[1],"-sensi"\))k
+(==)d(0\))-2546 51474 y Fd(302)3653 b Fg(*sensi)582 b(=)f(TRUE;)-2546
+52802 y Fd(303)2490 b Fg(else)-2546 54130 y Fd(304)3653
+b Fg(WrongArgs\(argv[0]\);)-2546 55459 y Fd(305)-2546
+56787 y(306)2490 b Fg(if)582 b(\(*sensi\))g({)-2546 58115
+y Fd(307)-2546 59444 y(308)3653 b Fg(if)581 b(\(argc)h(!=)f(4\))-2546
+60772 y Fd(309)4815 b Fg(WrongArgs\(argv[0]\);)-2546
+62100 y Fd(310)-2546 63429 y(311)3653 b Fg(if)581 b
+(\(strcmp\(argv[2],"sim"\))j(==)e(0\))-2546 64757 y Fd(312)4815
+b Fg(*sensi_meth)583 b(=)e(CV_SIMULTANEOUS;)-2546 66086
+y Fd(313)3653 b Fg(else)581 b(if)h(\(strcmp\(argv[2],"stg"\))i(==)e
+(0\))-2546 67414 y Fd(314)4815 b Fg(*sensi_meth)583 b(=)e
+(CV_STAGGERED;)-2546 68742 y Fd(315)3653 b Fg(else)581
+b(if)h(\(strcmp\(argv[2],"stg1"\))i(==)e(0\))-2546 70071
+y Fd(316)4815 b Fg(*sensi_meth)583 b(=)e(CV_STAGGERED1;)-2546
+71399 y Fd(317)3653 b Fg(else)-2546 72727 y Fd(318)4815
+b Fg(WrongArgs\(argv[0]\);)-2546 74056 y Fd(319)-2546
+75384 y(320)3653 b Fg(if)581 b(\(strcmp\(argv[3],"t"\))j(==)e(0\))-2546
+76712 y Fd(321)4815 b Fg(*err_con)582 b(=)g(TRUE;)-2546
+78041 y Fd(322)3653 b Fg(else)581 b(if)h(\(strcmp\(argv[3],"f"\))i(==)d
+(0\))p Black 23394 81741 a Ft(44)p Black eop
+%%Page: 45 49
+45 48 bop Black Black 1454 7638 a Fd(323)4815 b Fg(*err_con)582
+b(=)g(FALSE;)1454 8966 y Fd(324)3653 b Fg(else)1454 10295
+y Fd(325)4815 b Fg(WrongArgs\(argv[0]\);)1454 11623 y
+Fd(326)2490 b Fg(})1454 12951 y Fd(327)1454 14280 y(328)1328
+b Fg(})1454 15608 y Fd(329)1454 16936 y(330)g Fg(static)582
+b(void)g(WrongArgs\(char)h(*name\))1454 18265 y Fd(331)1328
+b Fg({)1454 19593 y Fd(332)3653 b Fg(printf\("\\nUsage:)583
+b(\045s)f([-nosensi])g([-sensi)g(sensi_meth)h(err_con]\\n",name\);)1454
+20922 y Fd(333)3653 b Fg(printf\(")5231 b(sensi_meth)583
+b(=)e(sim,)h(stg,)g(or)f(stg1\\n"\);)1454 22250 y Fd(334)3653
+b Fg(printf\(")5231 b(err_con)2326 b(=)581 b(t)g(or)h(f\\n"\);)1454
+23578 y Fd(335)1454 24907 y(336)3653 b Fg(exit\(0\);)1454
+26235 y Fd(337)1328 b Fg(})1454 27563 y Fd(338)1454 28892
+y(339)g Fg(/*)1454 30220 y Fd(340)1909 b Fg(*)581 b(Set)h(initial)g
+(conditions)h(in)e(u)h(vector.)1454 31548 y Fd(341)1909
+b Fg(*/)1454 32877 y Fd(342)1454 34205 y(343)1328 b Fg(static)582
+b(void)g(SetIC\(N_Vector)h(u,)e(realtype)i(dx\))1454
+35533 y Fd(344)1328 b Fg({)1454 36862 y Fd(345)2490 b
+Fg(int)582 b(i;)1454 38190 y Fd(346)2490 b Fg(realtype)583
+b(x;)1454 39518 y Fd(347)2490 b Fg(realtype)583 b(*udata;)1454
+40847 y Fd(348)1454 42175 y(349)2490 b Fg(/*)582 b(Set)f(pointer)i(to)e
+(data)h(array)g(and)f(get)h(local)g(length)g(of)f(u.)h(*/)1454
+43504 y Fd(350)2490 b Fg(udata)582 b(=)f(NV_DATA_S\(u\);)1454
+44832 y Fd(351)1454 46160 y(352)2490 b Fg(/*)582 b(Load)f(initial)i
+(profile)f(into)g(u)f(vector)h(*/)1454 47489 y Fd(353)2490
+b Fg(for)582 b(\(i=0;)g(i<NEQ;)g(i++\))g({)1454 48817
+y Fd(354)3653 b Fg(x)581 b(=)g(\(i+1\)*dx;)1454 50145
+y Fd(355)3653 b Fg(udata[i])582 b(=)f(x*\(XMAX)h(-)g
+(x\)*exp\(RCONST\(2.0\)*x\);)1454 51474 y Fd(356)2490
+b Fg(})1454 52802 y Fd(357)1328 b Fg(})1454 54130 y Fd(358)1454
+55459 y(359)g Fg(/*)1454 56787 y Fd(360)1909 b Fg(*)581
+b(Print)h(current)h(t,)e(step)h(count,)g(order,)g(stepsize,)g(and)g
+(max)f(norm)h(of)g(solution)1454 58115 y Fd(361)1909
+b Fg(*/)1454 59444 y Fd(362)1454 60772 y(363)1328 b Fg(static)582
+b(void)g(PrintOutput\(void)h(*cvode_mem,)g(realtype)f(t,)g(N_Vector)g
+(u\))1454 62100 y Fd(364)1328 b Fg({)1454 63429 y Fd(365)2490
+b Fg(long)582 b(int)g(nst;)1454 64757 y Fd(366)2490 b
+Fg(int)582 b(qu,)f(flag;)1454 66086 y Fd(367)2490 b Fg(realtype)583
+b(hu;)1454 67414 y Fd(368)1454 68742 y(369)2490 b Fg(flag)582
+b(=)f(CVodeGetNumSteps\(cvode_mem,)586 b(&nst\);)1454
+70071 y Fd(370)2490 b Fg(check_flag\(&flag,)584 b("CVodeGetNumSteps",)g
+(1\);)1454 71399 y Fd(371)2490 b Fg(flag)582 b(=)f
+(CVodeGetLastOrder\(cvode_mem,)586 b(&qu\);)1454 72727
+y Fd(372)2490 b Fg(check_flag\(&flag,)584 b("CVodeGetLastOrder",)g
+(1\);)1454 74056 y Fd(373)2490 b Fg(flag)582 b(=)f
+(CVodeGetLastStep\(cvode_mem,)586 b(&hu\);)1454 75384
+y Fd(374)2490 b Fg(check_flag\(&flag,)584 b("CVodeGetLastStep",)g(1\);)
+1454 76712 y Fd(375)1454 78041 y(376)1328 b Fg(#if)582
+b(defined\(SUNDIALS_EXTENDED_PRECISION\))p Black 27394
+81741 a Ft(45)p Black eop
+%%Page: 46 50
+46 49 bop Black Black -2546 7638 a Fd(377)2490 b Fg(printf\("\0458.3Le)
+584 b(\0452d)1162 b(\0458.3Le)582 b(\0455ld\\n",)h(t,)e(qu,)h(hu)f
+(,nst\);)-2546 8966 y Fd(378)1328 b Fg(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546 10295 y Fd(379)2490
+b Fg(printf\("\0458.3le)584 b(\0452d)1162 b(\0458.3le)582
+b(\0455ld\\n",)h(t,)e(qu,)h(hu)f(,nst\);)-2546 11623
+y Fd(380)1328 b Fg(#else)-2546 12951 y Fd(381)2490 b
+Fg(printf\("\0458.3e)583 b(\0452d)1163 b(\0458.3e)582
+b(\0455ld\\n",)g(t,)g(qu,)f(hu)h(,nst\);)-2546 14280
+y Fd(382)1328 b Fg(#endif)-2546 15608 y Fd(383)-2546
+16936 y(384)2490 b Fg(printf\(")18598 b(Solution)4069
+b("\);)-2546 18265 y Fd(385)-2546 19593 y(386)1328 b
+Fg(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546
+20922 y Fd(387)2490 b Fg(printf\("\04512.4Le)584 b(\\n",)d
+(N_VMaxNorm\(u\)\);)-2546 22250 y Fd(388)1328 b Fg(#elif)582
+b(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546 23578 y
+Fd(389)2490 b Fg(printf\("\04512.4le)584 b(\\n",)d(N_VMaxNorm\(u\)\);)
+-2546 24907 y Fd(390)1328 b Fg(#else)-2546 26235 y Fd(391)2490
+b Fg(printf\("\04512.4e)584 b(\\n",)d(N_VMaxNorm\(u\)\);)-2546
+27563 y Fd(392)1328 b Fg(#endif)-2546 28892 y Fd(393)g
+Fg(})-2546 30220 y Fd(394)-2546 31548 y(395)g Fg(/*)-2546
+32877 y Fd(396)1909 b Fg(*)581 b(Print)h(max)g(norm)g(of)f
+(sensitivities)-2546 34205 y Fd(397)1909 b Fg(*/)-2546
+35533 y Fd(398)-2546 36862 y(399)1328 b Fg(static)582
+b(void)g(PrintOutputS\(N_Vector)i(*uS\))-2546 38190 y
+Fd(400)1328 b Fg({)-2546 39518 y Fd(401)2490 b Fg(printf\(")18598
+b(Sensitivity)583 b(1)1162 b("\);)-2546 40847 y Fd(402)1328
+b Fg(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546
+42175 y Fd(403)2490 b Fg(printf\("\04512.4Le)584 b(\\n",)d
+(N_VMaxNorm\(uS[0]\)\);)-2546 43504 y Fd(404)1328 b Fg(#elif)582
+b(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546 44832 y
+Fd(405)2490 b Fg(printf\("\04512.4le)584 b(\\n",)d
+(N_VMaxNorm\(uS[0]\)\);)-2546 46160 y Fd(406)1328 b Fg(#else)-2546
+47489 y Fd(407)2490 b Fg(printf\("\04512.4e)584 b(\\n",)d
+(N_VMaxNorm\(uS[0]\)\);)-2546 48817 y Fd(408)1328 b Fg(#endif)-2546
+50145 y Fd(409)-2546 51474 y(410)2490 b Fg(printf\(")18598
+b(Sensitivity)583 b(2)1162 b("\);)-2546 52802 y Fd(411)1328
+b Fg(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546
+54130 y Fd(412)2490 b Fg(printf\("\04512.4Le)584 b(\\n",)d
+(N_VMaxNorm\(uS[1]\)\);)-2546 55459 y Fd(413)1328 b Fg(#elif)582
+b(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546 56787 y
+Fd(414)2490 b Fg(printf\("\04512.4le)584 b(\\n",)d
+(N_VMaxNorm\(uS[1]\)\);)-2546 58115 y Fd(415)1328 b Fg(#else)-2546
+59444 y Fd(416)2490 b Fg(printf\("\04512.4e)584 b(\\n",)d
+(N_VMaxNorm\(uS[1]\)\);)-2546 60772 y Fd(417)1328 b Fg(#endif)-2546
+62100 y Fd(418)g Fg(})-2546 63429 y Fd(419)-2546 64757
+y(420)-2546 66086 y(421)g Fg(/*)-2546 67414 y Fd(422)1909
+b Fg(*)581 b(Print)h(some)g(final)g(statistics)h(located)f(in)f(the)h
+(CVODES)g(memory)-2546 68742 y Fd(423)1909 b Fg(*/)-2546
+70071 y Fd(424)-2546 71399 y(425)1328 b Fg(static)582
+b(void)g(PrintFinalStats\(void)i(*cvode_mem,)f(booleantype)f(sensi\))
+-2546 72727 y Fd(426)1328 b Fg({)-2546 74056 y Fd(427)2490
+b Fg(long)582 b(int)g(nst;)-2546 75384 y Fd(428)2490
+b Fg(long)582 b(int)g(nfe,)f(nsetups,)i(nni,)e(ncfn,)h(netf;)-2546
+76712 y Fd(429)2490 b Fg(long)582 b(int)g(nfSe,)g(nfeS,)f(nsetupsS,)i
+(nniS,)f(ncfnS,)g(netfS;)-2546 78041 y Fd(430)2490 b
+Fg(int)582 b(flag;)p Black 23394 81741 a Ft(46)p Black
+eop
+%%Page: 47 51
+47 50 bop Black Black 1454 7638 a Fd(431)1454 8966 y(432)2490
+b Fg(flag)582 b(=)f(CVodeGetNumSteps\(cvode_mem,)586
+b(&nst\);)1454 10295 y Fd(433)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumSteps",)g(1\);)1454 11623 y Fd(434)2490
+b Fg(flag)582 b(=)f(CVodeGetNumRhsEvals\(cvode_mem,)586
+b(&nfe\);)1454 12951 y Fd(435)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumRhsEvals",)g(1\);)1454 14280 y Fd(436)2490
+b Fg(flag)582 b(=)f(CVodeGetNumLinSolvSetups\(cvode_mem,)587
+b(&nsetups\);)1454 15608 y Fd(437)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumLinSolvSetups",)h(1\);)1454 16936 y Fd(438)2490
+b Fg(flag)582 b(=)f(CVodeGetNumErrTestFails\(cvode_mem,)587
+b(&netf\);)1454 18265 y Fd(439)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumErrTestFails",)h(1\);)1454 19593 y Fd(440)2490
+b Fg(flag)582 b(=)f(CVodeGetNumNonlinSolvIters\(cvode_mem,)587
+b(&nni\);)1454 20922 y Fd(441)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumNonlinSolvIters",)h(1\);)1454 22250 y Fd(442)2490
+b Fg(flag)582 b(=)f(CVodeGetNumNonlinSolvConvFails\(cvode_mem,)588
+b(&ncfn\);)1454 23578 y Fd(443)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumNonlinSolvConvFails",)i(1\);)1454 24907
+y Fd(444)1454 26235 y(445)2490 b Fg(if)582 b(\(sensi\))g({)1454
+27563 y Fd(446)3653 b Fg(flag)581 b(=)h
+(CVodeGetNumSensRhsEvals\(cvode_mem,)k(&nfSe\);)1454
+28892 y Fd(447)3653 b Fg(check_flag\(&flag,)583 b
+("CVodeGetNumSensRhsEvals",)i(1\);)1454 30220 y Fd(448)3653
+b Fg(flag)581 b(=)h(CVodeGetNumRhsEvalsSens\(cvode_mem,)k(&nfeS\);)1454
+31548 y Fd(449)3653 b Fg(check_flag\(&flag,)583 b
+("CVodeGetNumRhsEvalsSens",)i(1\);)1454 32877 y Fd(450)3653
+b Fg(flag)581 b(=)h(CVodeGetNumSensLinSolvSetups\(cvode_mem,)587
+b(&nsetupsS\);)1454 34205 y Fd(451)3653 b Fg(check_flag\(&flag,)583
+b("CVodeGetNumSensLinSolvSetups",)j(1\);)1454 35533 y
+Fd(452)3653 b Fg(flag)581 b(=)h
+(CVodeGetNumSensErrTestFails\(cvode_mem,)k(&netfS\);)1454
+36862 y Fd(453)3653 b Fg(check_flag\(&flag,)583 b
+("CVodeGetNumSensErrTestFails",)j(1\);)1454 38190 y Fd(454)3653
+b Fg(flag)581 b(=)h(CVodeGetNumSensNonlinSolvIters\(cvode_mem,)587
+b(&nniS\);)1454 39518 y Fd(455)3653 b Fg(check_flag\(&flag,)583
+b("CVodeGetNumSensNonlinSolvIters",)j(1\);)1454 40847
+y Fd(456)3653 b Fg(flag)581 b(=)h
+(CVodeGetNumSensNonlinSolvConvFails\(cvode_mem,)587 b(&ncfnS\);)1454
+42175 y Fd(457)3653 b Fg(check_flag\(&flag,)583 b
+("CVodeGetNumSensNonlinSolvConvFails",)k(1\);)1454 43504
+y Fd(458)2490 b Fg(})1454 44832 y Fd(459)1454 46160 y(460)g
+Fg(printf\("\\nFinal)584 b(Statistics\\n\\n"\);)1454
+47489 y Fd(461)2490 b Fg(printf\("nst)2908 b(=)581 b(\0455ld\\n\\n",)i
+(nst\);)1454 48817 y Fd(462)2490 b Fg(printf\("nfe)2908
+b(=)581 b(\0455ld\\n",)1745 b(nfe\);)1454 50145 y Fd(463)2490
+b Fg(printf\("netf)2327 b(=)581 b(\0455ld)2325 b(nsetups)1164
+b(=)581 b(\0455ld\\n",)h(netf,)g(nsetups\);)1454 51474
+y Fd(464)2490 b Fg(printf\("nni)2908 b(=)581 b(\0455ld)2325
+b(ncfn)2907 b(=)581 b(\0455ld\\n",)h(nni,)g(ncfn\);)1454
+52802 y Fd(465)1454 54130 y(466)2490 b Fg(if\(sensi\))583
+b({)1454 55459 y Fd(467)3653 b Fg(printf\("\\n"\);)1454
+56787 y Fd(468)g Fg(printf\("nfSe)2326 b(=)581 b(\0455ld)2325
+b(nfeS)2907 b(=)581 b(\0455ld\\n",)h(nfSe,)g(nfeS\);)1454
+58115 y Fd(469)3653 b Fg(printf\("netfs)1745 b(=)581
+b(\0455ld)2325 b(nsetupsS)583 b(=)e(\0455ld\\n",)h(netfS,)g
+(nsetupsS\);)1454 59444 y Fd(470)3653 b Fg(printf\("nniS)2326
+b(=)581 b(\0455ld)2325 b(ncfnS)h(=)581 b(\0455ld\\n",)h(nniS,)g
+(ncfnS\);)1454 60772 y Fd(471)2490 b Fg(})1454 62100
+y Fd(472)1454 63429 y(473)1328 b Fg(})1454 64757 y Fd(474)1454
+66086 y(475)g Fg(/*)1454 67414 y Fd(476)1909 b Fg(*)581
+b(Check)h(function)h(return)f(value...)1454 68742 y Fd(477)1909
+b Fg(*)1744 b(opt)581 b(==)h(0)f(means)h(SUNDIALS)g(function)h
+(allocates)f(memory)g(so)g(check)g(if)1454 70071 y Fd(478)1909
+b Fg(*)6974 b(returned)582 b(NULL)g(pointer)1454 71399
+y Fd(479)1909 b Fg(*)1744 b(opt)581 b(==)h(1)f(means)h(SUNDIALS)g
+(function)h(returns)f(a)f(flag)h(so)f(check)h(if)1454
+72727 y Fd(480)1909 b Fg(*)6974 b(flag)582 b(>=)f(0)1454
+74056 y Fd(481)1909 b Fg(*)1744 b(opt)581 b(==)h(2)f(means)h(function)g
+(allocates)h(memory)f(so)f(check)h(if)g(returned)1454
+75384 y Fd(482)1909 b Fg(*)6974 b(NULL)582 b(pointer)1454
+76712 y Fd(483)1909 b Fg(*/)1454 78041 y Fd(484)p Black
+27394 81741 a Ft(47)p Black eop
+%%Page: 48 52
+48 51 bop Black Black -2546 7638 a Fd(485)1328 b Fg(static)582
+b(int)g(check_flag\(void)h(*flagvalue,)g(char)f(*funcname,)g(int)g
+(opt\))-2546 8966 y Fd(486)1328 b Fg({)-2546 10295 y
+Fd(487)2490 b Fg(int)582 b(*errflag;)-2546 11623 y Fd(488)-2546
+12951 y(489)2490 b Fg(/*)582 b(Check)g(if)f(SUNDIALS)h(function)h
+(returned)f(NULL)g(pointer)g(-)f(no)h(memory)g(allocated)g(*/)-2546
+14280 y Fd(490)2490 b Fg(if)582 b(\(opt)f(==)h(0)f(&&)h(flagvalue)g(==)
+g(NULL\))g({)-2546 15608 y Fd(491)3653 b Fg(fprintf\(stderr,)-2546
+16936 y Fd(492)8302 b Fg("\\nSUNDIALS_ERROR:)584 b(\045s\(\))d(failed)h
+(-)g(returned)g(NULL)g(pointer\\n\\n",)-2546 18265 y
+Fd(493)8302 b Fg(funcname\);)-2546 19593 y Fd(494)3653
+b Fg(return\(1\);)582 b(})-2546 20922 y Fd(495)-2546
+22250 y(496)2490 b Fg(/*)582 b(Check)g(if)f(flag)h(<)f(0)g(*/)-2546
+23578 y Fd(497)2490 b Fg(else)582 b(if)f(\(opt)h(==)g(1\))f({)-2546
+24907 y Fd(498)3653 b Fg(errflag)582 b(=)f(\(int)h(*\))f(flagvalue;)
+-2546 26235 y Fd(499)3653 b Fg(if)581 b(\(*errflag)i(<)e(0\))g({)-2546
+27563 y Fd(500)4815 b Fg(fprintf\(stderr,)-2546 28892
+y Fd(501)9464 b Fg("\\nSUNDIALS_ERROR:)584 b(\045s\(\))e(failed)g(with)
+f(flag)h(=)f(\045d\\n\\n",)-2546 30220 y Fd(502)9464
+b Fg(funcname,)583 b(*errflag\);)-2546 31548 y Fd(503)4815
+b Fg(return\(1\);)583 b(}})-2546 32877 y Fd(504)-2546
+34205 y(505)2490 b Fg(/*)582 b(Check)g(if)f(function)h(returned)h(NULL)
+f(pointer)g(-)f(no)g(memory)h(allocated)h(*/)-2546 35533
+y Fd(506)2490 b Fg(else)582 b(if)f(\(opt)h(==)g(2)f(&&)g(flagvalue)i
+(==)e(NULL\))h({)-2546 36862 y Fd(507)3653 b Fg(fprintf\(stderr,)-2546
+38190 y Fd(508)8302 b Fg("\\nMEMORY_ERROR:)583 b(\045s\(\))f(failed)g
+(-)f(returned)i(NULL)e(pointer\\n\\n",)-2546 39518 y
+Fd(509)8302 b Fg(funcname\);)-2546 40847 y Fd(510)3653
+b Fg(return\(1\);)582 b(})-2546 42175 y Fd(511)-2546
+43504 y(512)2490 b Fg(return\(0\);)-2546 44832 y Fd(513)1328
+b Fg(})p Black 23394 81741 a Ft(48)p Black eop
+%%Page: 49 53
+49 52 bop Black Black 4000 7638 a Fs(B)1793 b(Listing)599
+b(of)f Fa(cvfdx.c)2266 10674 y Fd(1)1328 b Fg(/*)2266
+12003 y Fd(2)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)2266
+13331 y Fd(3)1909 b Fg(*)581 b($Revision:)i(1.21.2.4)f($)2266
+14659 y Fd(4)1909 b Fg(*)581 b($Date:)h(2005/04/07)h(15:58:52)f($)2266
+15988 y Fd(5)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)2266
+17316 y Fd(6)1909 b Fg(*)581 b(Programmer\(s\):)j(Scott)e(D.)f(Cohen,)h
+(Alan)g(C.)f(Hindmarsh,)i(and)2266 18645 y Fd(7)1909
+b Fg(*)9299 b(Radu)581 b(Serban)h(@)g(LLNL)2266 19973
+y Fd(8)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)2266
+21301 y Fd(9)1909 b Fg(*)581 b(Example)i(problem:)1860
+22630 y Fd(10)1909 b Fg(*)1860 23958 y Fd(11)g Fg(*)581
+b(The)h(following)h(is)e(a)g(simple)h(example)h(problem,)f(with)g(the)f
+(coding)1860 25286 y Fd(12)1909 b Fg(*)581 b(needed)h(for)g(its)g
+(solution)g(by)f(CVODES.)i(The)e(problem)h(is)g(from)g(chemical)1860
+26615 y Fd(13)1909 b Fg(*)581 b(kinetics,)i(and)f(consists)g(of)f(the)h
+(following)g(three)g(rate)g(equations:)1860 27943 y Fd(14)1909
+b Fg(*)2325 b(dy1/dt)582 b(=)f(-p1*y1)h(+)g(p2*y2*y3)1860
+29271 y Fd(15)1909 b Fg(*)2325 b(dy2/dt)582 b(=)1162
+b(p1*y1)582 b(-)g(p2*y2*y3)g(-)f(p3*\(y2\)^2)1860 30600
+y Fd(16)1909 b Fg(*)2325 b(dy3/dt)582 b(=)1162 b(p3*\(y2\)^2)1860
+31928 y Fd(17)1909 b Fg(*)581 b(on)h(the)f(interval)i(from)f(t)f(=)g
+(0.0)h(to)f(t)h(=)f(4.e10,)h(with)g(initial)1860 33256
+y Fd(18)1909 b Fg(*)581 b(conditions)i(y1)f(=)f(1.0,)h(y2)f(=)g(y3)h(=)
+f(0.)h(The)f(reaction)h(rates)g(are:)g(p1=0.04,)1860
+34585 y Fd(19)1909 b Fg(*)581 b(p2=1e4,)i(and)e(p3=3e7.)h(The)g
+(problem)g(is)g(stiff.)1860 35913 y Fd(20)1909 b Fg(*)581
+b(This)h(program)g(solves)g(the)g(problem)g(with)g(the)g(BDF)f(method,)
+h(Newton)1860 37241 y Fd(21)1909 b Fg(*)581 b(iteration)i(with)f(the)f
+(CVODES)h(dense)g(linear)g(solver,)g(and)g(a)1860 38570
+y Fd(22)1909 b Fg(*)581 b(user-supplied)j(Jacobian)e(routine.)1860
+39898 y Fd(23)1909 b Fg(*)581 b(It)h(uses)g(a)f(scalar)h(relative)g
+(tolerance)h(and)e(a)h(vector)g(absolute)1860 41227 y
+Fd(24)1909 b Fg(*)581 b(tolerance.)1860 42555 y Fd(25)1909
+b Fg(*)581 b(Output)h(is)g(printed)g(in)g(decades)g(from)g(t)f(=)g(.4)h
+(to)f(t)g(=)h(4.e10.)1860 43883 y Fd(26)1909 b Fg(*)581
+b(Run)h(statistics)h(\(optional)f(outputs\))h(are)e(printed)h(at)g(the)
+f(end.)1860 45212 y Fd(27)1909 b Fg(*)1860 46540 y Fd(28)g
+Fg(*)581 b(Optionally,)i(CVODES)f(can)g(compute)g(sensitivities)h(with)
+f(respect)g(to)g(the)1860 47868 y Fd(29)1909 b Fg(*)581
+b(problem)i(parameters)f(p1,)g(p2,)f(and)h(p3.)1860 49197
+y Fd(30)1909 b Fg(*)581 b(The)h(sensitivity)h(right)f(hand)f(side)h(is)
+g(given)g(analytically)g(through)h(the)1860 50525 y Fd(31)1909
+b Fg(*)581 b(user)h(routine)g(fS)g(\(of)f(type)h(SensRhs1Fn\).)1860
+51853 y Fd(32)1909 b Fg(*)581 b(Any)h(of)f(three)h(sensitivity)h
+(methods)f(\(SIMULTANEOUS,)i(STAGGERED,)e(and)1860 53182
+y Fd(33)1909 b Fg(*)581 b(STAGGERED1\))i(can)f(be)f(used)h(and)g
+(sensitivities)h(may)e(be)h(included)g(in)g(the)1860
+54510 y Fd(34)1909 b Fg(*)581 b(error)h(test)g(or)g(not)f(\(error)h
+(control)g(set)g(on)f(TRUE)h(or)g(FALSE,)1860 55838 y
+Fd(35)1909 b Fg(*)581 b(respectively\).)1860 57167 y
+Fd(36)1909 b Fg(*)1860 58495 y Fd(37)g Fg(*)581 b(Execution:)1860
+59823 y Fd(38)1909 b Fg(*)1860 61152 y Fd(39)g Fg(*)581
+b(If)h(no)f(sensitivities)i(are)f(desired:)1860 62480
+y Fd(40)1909 b Fg(*)2325 b(\045)581 b(cvsdx)h(-nosensi)1860
+63808 y Fd(41)1909 b Fg(*)581 b(If)h(sensitivities)h(are)f(to)f(be)g
+(computed:)1860 65137 y Fd(42)1909 b Fg(*)2325 b(\045)581
+b(cvsdx)h(-sensi)g(sensi_meth)h(err_con)1860 66465 y
+Fd(43)1909 b Fg(*)581 b(where)h(sensi_meth)h(is)e(one)h(of)f({sim,)h
+(stg,)g(stg1})g(and)g(err_con)g(is)f(one)h(of)1860 67794
+y Fd(44)1909 b Fg(*)581 b({t,)h(f}.)1860 69122 y Fd(45)1909
+b Fg(*)581 b
+(-----------------------------------------------------------------)1860
+70450 y Fd(46)1909 b Fg(*/)1860 71779 y Fd(47)1860 73107
+y(48)1328 b Fg(#include)582 b(<stdio.h>)1860 74435 y
+Fd(49)1328 b Fg(#include)582 b(<stdlib.h>)1860 75764
+y Fd(50)1328 b Fg(#include)582 b(<string.h>)1860 77092
+y Fd(51)1328 b Fg(#include)582 b("sundialstypes.h")1746
+b(/*)582 b(def.)g(of)f(type)h(realtype)14530 b(*/)1860
+78420 y Fd(52)1328 b Fg(#include)582 b("cvodes.h")5813
+b(/*)582 b(prototypes)g(for)g(CVODES)g(functions)h(and)e(constants)i
+(*/)p Black 27394 81741 a Ft(49)p Black eop
+%%Page: 50 54
+50 53 bop Black Black -2140 7638 a Fd(53)1328 b Fg(#include)582
+b("cvdense.h")5232 b(/*)582 b(prototype)g(for)g(CVDENSE)g(functions)h
+(and)e(constants)i(*/)-2140 8966 y Fd(54)1328 b Fg(#include)582
+b("nvector_serial.h")1165 b(/*)582 b(defs.)g(of)f(serial)h(NVECTOR)g
+(functions)h(and)e(macros)1164 b(*/)-2140 10295 y Fd(55)1328
+b Fg(#include)582 b("dense.h")6394 b(/*)582 b(defs.)g(of)f(type)h
+(DenseMat,)g(macro)g(DENSE_ELEM)3489 b(*/)-2140 11623
+y Fd(56)1328 b Fg(#include)582 b("sundialsmath.h")2327
+b(/*)582 b(definition)g(of)g(ABS)16854 b(*/)-2140 12951
+y Fd(57)-2140 14280 y(58)1328 b Fg(/*)581 b(Accessor)i(macros)f(*/)
+-2140 15608 y Fd(59)-2140 16936 y(60)1328 b Fg(#define)582
+b(Ith\(v,i\))2326 b(NV_Ith_S\(v,i-1\))4070 b(/*)582 b(i-th)f(vector)h
+(component)h(i=1..NEQ)f(*/)-2140 18265 y Fd(61)1328 b
+Fg(#define)582 b(IJth\(A,i,j\))h(DENSE_ELEM\(A,i-1,j-1\))h(/*)e
+(\(i,j\)-th)g(matrix)g(component)h(i,j=1..NEQ)f(*/)-2140
+19593 y Fd(62)-2140 20922 y(63)1328 b Fg(/*)581 b(Problem)i(Constants)f
+(*/)-2140 22250 y Fd(64)-2140 23578 y(65)1328 b Fg(#define)582
+b(NEQ)1744 b(3)7555 b(/*)582 b(number)g(of)f(equations)1164
+b(*/)-2140 24907 y Fd(66)1328 b Fg(#define)582 b(Y1)2325
+b(RCONST\(1.0\))1745 b(/*)582 b(initial)g(y)f(components)i(*/)-2140
+26235 y Fd(67)1328 b Fg(#define)582 b(Y2)2325 b(RCONST\(0.0\))-2140
+27563 y Fd(68)1328 b Fg(#define)582 b(Y3)2325 b(RCONST\(0.0\))-2140
+28892 y Fd(69)1328 b Fg(#define)582 b(RTOL)1163 b(RCONST\(1e-4\))h(/*)
+582 b(scalar)g(relative)g(tolerance)g(*/)-2140 30220
+y Fd(70)1328 b Fg(#define)582 b(ATOL1)g(RCONST\(1e-8\))1164
+b(/*)582 b(vector)g(absolute)g(tolerance)g(components)h(*/)-2140
+31548 y Fd(71)1328 b Fg(#define)582 b(ATOL2)g(RCONST\(1e-14\))-2140
+32877 y Fd(72)1328 b Fg(#define)582 b(ATOL3)g(RCONST\(1e-6\))-2140
+34205 y Fd(73)1328 b Fg(#define)582 b(T0)2325 b(RCONST\(0.0\))1745
+b(/*)582 b(initial)g(time)g(*/)-2140 35533 y Fd(74)1328
+b Fg(#define)582 b(T1)2325 b(RCONST\(0.4\))1745 b(/*)582
+b(first)g(output)g(time)f(*/)-2140 36862 y Fd(75)1328
+b Fg(#define)582 b(TMULT)g(RCONST\(10.0\))1164 b(/*)582
+b(output)g(time)f(factor)h(*/)-2140 38190 y Fd(76)1328
+b Fg(#define)582 b(NOUT)1163 b(12)6974 b(/*)582 b(number)g(of)f(output)
+h(times)g(*/)-2140 39518 y Fd(77)-2140 40847 y(78)1328
+b Fg(#define)582 b(NP)2325 b(3)7555 b(/*)582 b(number)g(of)f(problem)h
+(parameters)h(*/)-2140 42175 y Fd(79)1328 b Fg(#define)582
+b(NS)2325 b(3)7555 b(/*)582 b(number)g(of)f(sensitivities)i(computed)g
+(*/)-2140 43504 y Fd(80)-2140 44832 y(81)1328 b Fg(#define)582
+b(ZERO)1163 b(RCONST\(0.0\))-2140 46160 y Fd(82)-2140
+47489 y(83)1328 b Fg(/*)581 b(Type)h(:)f(UserData)i(*/)-2140
+48817 y Fd(84)-2140 50145 y(85)1328 b Fg(typedef)582
+b(struct)g({)-2140 51474 y Fd(86)2490 b Fg(realtype)583
+b(p[3];)6393 b(/*)581 b(problem)i(parameters)f(*/)-2140
+52802 y Fd(87)1328 b Fg(})581 b(*UserData;)-2140 54130
+y Fd(88)-2140 55459 y(89)1328 b Fg(/*)581 b(Prototypes)i(of)f
+(functions)g(by)f(CVODES)i(*/)-2140 56787 y Fd(90)-2140
+58115 y(91)1328 b Fg(static)582 b(void)g(f\(realtype)g(t,)g(N_Vector)g
+(y,)g(N_Vector)g(ydot,)g(void)g(*f_data\);)-2140 59444
+y Fd(92)-2140 60772 y(93)1328 b Fg(static)582 b(void)g(Jac\(long)g(int)
+g(N,)f(DenseMat)i(J,)e(realtype)h(t,)-2140 62100 y Fd(94)10626
+b Fg(N_Vector)583 b(y,)e(N_Vector)i(fy,)e(void)h(*jac_data,)-2140
+63429 y Fd(95)10626 b Fg(N_Vector)583 b(tmp1,)f(N_Vector)g(tmp2,)g
+(N_Vector)g(tmp3\);)-2140 64757 y Fd(96)-2140 66086 y(97)1328
+b Fg(static)582 b(void)g(fS\(int)g(Ns,)f(realtype)i(t,)e(N_Vector)i(y,)
+e(N_Vector)h(ydot,)-2140 67414 y Fd(98)10045 b Fg(int)582
+b(iS,)f(N_Vector)i(yS,)e(N_Vector)i(ySdot,)-2140 68742
+y Fd(99)10045 b Fg(void)582 b(*fS_data,)g(N_Vector)h(tmp1,)f(N_Vector)g
+(tmp2\);)-2546 70071 y Fd(100)-2546 71399 y(101)1328
+b Fg(static)582 b(int)g(ewt\(N_Vector)h(y,)e(N_Vector)h(w,)g(void)g
+(*e_data\);)-2546 72727 y Fd(102)-2546 74056 y(103)1328
+b Fg(/*)581 b(Prototypes)i(of)f(private)g(functions)g(*/)-2546
+75384 y Fd(104)-2546 76712 y(105)1328 b Fg(static)582
+b(void)g(ProcessArgs\(int)h(argc,)f(char)g(*argv[],)-2546
+78041 y Fd(106)15276 b Fg(booleantype)582 b(*sensi,)h(int)e
+(*sensi_meth,)p Black 23394 81741 a Ft(50)p Black eop
+%%Page: 51 55
+51 54 bop Black Black 1454 7638 a Fd(107)15276 b Fg(booleantype)582
+b(*err_con\);)1454 8966 y Fd(108)1328 b Fg(static)582
+b(void)g(WrongArgs\(char)h(*name\);)1454 10295 y Fd(109)1328
+b Fg(static)582 b(void)g(PrintOutput\(void)h(*cvode_mem,)g(realtype)f
+(t,)g(N_Vector)g(u\);)1454 11623 y Fd(110)1328 b Fg(static)582
+b(void)g(PrintOutputS\(N_Vector)i(*uS\);)1454 12951 y
+Fd(111)1328 b Fg(static)582 b(void)g(PrintFinalStats\(void)i
+(*cvode_mem,)f(booleantype)f(sensi\);)1454 14280 y Fd(112)1328
+b Fg(static)582 b(int)g(check_flag\(void)h(*flagvalue,)g(char)f
+(*funcname,)g(int)g(opt\);)1454 15608 y Fd(113)1454 16936
+y(114)1328 b Fg(/*)1454 18265 y Fd(115)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)1454 19593 y Fd(116)g Fg(*)581 b(MAIN)h(PROGRAM)1454
+20922 y Fd(117)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)1454 22250 y Fd(118)g Fg(*/)1454 23578 y Fd(119)1454
+24907 y(120)1328 b Fg(int)582 b(main\(int)g(argc,)g(char)g(*argv[]\))
+1454 26235 y Fd(121)1328 b Fg({)1454 27563 y Fd(122)2490
+b Fg(void)582 b(*cvode_mem;)1454 28892 y Fd(123)2490
+b Fg(UserData)583 b(data;)1454 30220 y Fd(124)2490 b
+Fg(realtype)583 b(t,)e(tout;)1454 31548 y Fd(125)2490
+b Fg(N_Vector)583 b(y;)1454 32877 y Fd(126)2490 b Fg(int)582
+b(iout,)g(flag;)1454 34205 y Fd(127)1454 35533 y(128)2490
+b Fg(realtype)583 b(pbar[NS];)1454 36862 y Fd(129)2490
+b Fg(int)582 b(is;)1454 38190 y Fd(130)2490 b Fg(N_Vector)583
+b(*yS;)1454 39518 y Fd(131)2490 b Fg(booleantype)583
+b(sensi,)f(err_con;)1454 40847 y Fd(132)2490 b Fg(int)582
+b(sensi_meth;)1454 42175 y Fd(133)1454 43504 y(134)2490
+b Fg(cvode_mem)583 b(=)e(NULL;)1454 44832 y Fd(135)2490
+b Fg(data)3488 b(=)581 b(NULL;)1454 46160 y Fd(136)2490
+b Fg(y)5231 b(=)1162 b(NULL;)1454 47489 y Fd(137)2490
+b Fg(yS)4650 b(=)581 b(NULL;)1454 48817 y Fd(138)1454
+50145 y(139)2490 b Fg(/*)582 b(Process)g(arguments)g(*/)1454
+51474 y Fd(140)2490 b Fg(ProcessArgs\(argc,)584 b(argv,)e(&sensi,)g
+(&sensi_meth,)h(&err_con\);)1454 52802 y Fd(141)1454
+54130 y(142)2490 b Fg(/*)582 b(User)f(data)h(structure)h(*/)1454
+55459 y Fd(143)2490 b Fg(data)582 b(=)f(\(UserData\))i(malloc\(sizeof)g
+(*data\);)1454 56787 y Fd(144)2490 b Fg(if)582 b(\(check_flag\(\(void)h
+(*\)data,)g("malloc",)f(2\)\))g(return\(1\);)1454 58115
+y Fd(145)2490 b Fg(data->p[0])583 b(=)e(RCONST\(0.04\);)1454
+59444 y Fd(146)2490 b Fg(data->p[1])583 b(=)e(RCONST\(1.0e4\);)1454
+60772 y Fd(147)2490 b Fg(data->p[2])583 b(=)e(RCONST\(3.0e7\);)1454
+62100 y Fd(148)1454 63429 y(149)2490 b Fg(/*)582 b(Initial)g
+(conditions)h(*/)1454 64757 y Fd(150)2490 b Fg(y)582
+b(=)f(N_VNew_Serial\(NEQ\);)1454 66086 y Fd(151)2490
+b Fg(if)582 b(\(check_flag\(\(void)h(*\)y,)f("N_VNew_Serial",)i(0\)\))d
+(return\(1\);)1454 67414 y Fd(152)1454 68742 y(153)2490
+b Fg(Ith\(y,1\))583 b(=)e(Y1;)1454 70071 y Fd(154)2490
+b Fg(Ith\(y,2\))583 b(=)e(Y2;)1454 71399 y Fd(155)2490
+b Fg(Ith\(y,3\))583 b(=)e(Y3;)1454 72727 y Fd(156)1454
+74056 y(157)2490 b Fg(/*)582 b(Create)g(CVODES)g(object)g(*/)1454
+75384 y Fd(158)2490 b Fg(cvode_mem)583 b(=)e(CVodeCreate\(CV_BDF,)j
+(CV_NEWTON\);)1454 76712 y Fd(159)2490 b Fg(if)582 b
+(\(check_flag\(\(void)h(*\)cvode_mem,)g("CVodeCreate",)h(0\)\))d
+(return\(1\);)1454 78041 y Fd(160)p Black 27394 81741
+a Ft(51)p Black eop
+%%Page: 52 56
+52 55 bop Black Black -2546 7638 a Fd(161)2490 b Fg(/*)582
+b(Allocate)g(space)g(for)g(CVODES)g(*/)-2546 8966 y Fd(162)2490
+b Fg(flag)582 b(=)f(CVodeMalloc\(cvode_mem,)k(f,)c(T0,)h(y,)f(CV_WF,)h
+(0.0,)g(NULL\);)-2546 10295 y Fd(163)2490 b Fg(if)582
+b(\(check_flag\(&flag,)i("CVodeMalloc",)f(1\)\))e(return\(1\);)-2546
+11623 y Fd(164)-2546 12951 y(165)2490 b Fg(/*)582 b(Use)f(private)i
+(function)f(to)f(compute)i(error)e(weights)i(*/)-2546
+14280 y Fd(166)2490 b Fg(flag)582 b(=)f(CVodeSetEwtFn\(cvode_mem,)k
+(ewt,)d(NULL\);)-2546 15608 y Fd(167)2490 b Fg(if)582
+b(\(check_flag\(&flag,)i("CVodeSetEwtFn",)f(1\)\))f(return\(1\);)-2546
+16936 y Fd(168)-2546 18265 y(169)2490 b Fg(/*)582 b(Attach)g(user)g
+(data)f(*/)-2546 19593 y Fd(170)2490 b Fg(flag)582 b(=)f
+(CVodeSetFdata\(cvode_mem,)k(data\);)-2546 20922 y Fd(171)2490
+b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeSetFdata",)f(1\)\))f
+(return\(1\);)-2546 22250 y Fd(172)-2546 23578 y(173)2490
+b Fg(/*)582 b(Attach)g(linear)g(solver)g(*/)-2546 24907
+y Fd(174)2490 b Fg(flag)582 b(=)f(CVDense\(cvode_mem,)j(NEQ\);)-2546
+26235 y Fd(175)2490 b Fg(if)582 b(\(check_flag\(&flag,)i("CVDense",)e
+(1\)\))g(return\(1\);)-2546 27563 y Fd(176)-2546 28892
+y(177)2490 b Fg(flag)582 b(=)f(CVDenseSetJacFn\(cvode_mem,)k(Jac,)d
+(data\);)-2546 30220 y Fd(178)2490 b Fg(if)582 b(\(check_flag\(&flag,)i
+("CVDenseSetJacFn",)f(1\)\))f(return\(1\);)-2546 31548
+y Fd(179)-2546 32877 y(180)2490 b Fg(printf\("\\n3-species)584
+b(chemical)f(kinetics)f(problem\\n"\);)-2546 34205 y
+Fd(181)-2546 35533 y(182)2490 b Fg(/*)582 b(Sensitivity-related)i
+(settings)e(*/)-2546 36862 y Fd(183)2490 b Fg(if)582
+b(\(sensi\))g({)-2546 38190 y Fd(184)-2546 39518 y(185)3653
+b Fg(pbar[0])582 b(=)f(data->p[0];)-2546 40847 y Fd(186)3653
+b Fg(pbar[1])582 b(=)f(data->p[1];)-2546 42175 y Fd(187)3653
+b Fg(pbar[2])582 b(=)f(data->p[2];)-2546 43504 y Fd(188)-2546
+44832 y(189)3653 b Fg(yS)581 b(=)g(N_VNewVectorArray_Serial\(NS,)586
+b(NEQ\);)-2546 46160 y Fd(190)3653 b Fg(if)581 b(\(check_flag\(\(void)j
+(*\)yS,)e("N_VNewVectorArray_Serial",)j(0\)\))c(return\(1\);)-2546
+47489 y Fd(191)3653 b Fg(for)581 b(\(is=0;is<NS;is++\))j
+(N_VConst\(ZERO,)f(yS[is]\);)-2546 48817 y Fd(192)-2546
+50145 y(193)3653 b Fg(flag)581 b(=)h(CVodeSensMalloc\(cvode_mem,)j(NS,)
+c(sensi_meth,)i(yS\);)-2546 51474 y Fd(194)3653 b Fg
+(if\(check_flag\(&flag,)584 b("CVodeSensMalloc",)g(1\)\))d
+(return\(1\);)-2546 52802 y Fd(195)-2546 54130 y(196)3653
+b Fg(flag)581 b(=)h(CVodeSetSensRhs1Fn\(cvode_mem,)j(fS\);)-2546
+55459 y Fd(197)3653 b Fg(if)581 b(\(check_flag\(&flag,)j
+("CVodeSetSensRhs1Fn",)g(1\)\))e(return\(1\);)-2546 56787
+y Fd(198)3653 b Fg(flag)581 b(=)h(CVodeSetSensErrCon\(cvode_mem,)j
+(err_con\);)-2546 58115 y Fd(199)3653 b Fg(if)581 b
+(\(check_flag\(&flag,)j("CVodeSetSensFdata",)g(1\)\))e(return\(1\);)
+-2546 59444 y Fd(200)3653 b Fg(flag)581 b(=)h
+(CVodeSetSensFdata\(cvode_mem,)j(data\);)-2546 60772
+y Fd(201)3653 b Fg(if)581 b(\(check_flag\(&flag,)j
+("CVodeSetSensFdata",)g(1\)\))e(return\(1\);)-2546 62100
+y Fd(202)3653 b Fg(flag)581 b(=)h(CVodeSetSensParams\(cvode_mem,)j
+(NULL,)d(pbar,)g(NULL\);)-2546 63429 y Fd(203)3653 b
+Fg(if)581 b(\(check_flag\(&flag,)j("CVodeSetSensParams",)g(1\)\))e
+(return\(1\);)-2546 64757 y Fd(204)-2546 66086 y(205)3653
+b Fg(printf\("Sensitivity:)584 b(YES)d("\);)-2546 67414
+y Fd(206)3653 b Fg(if\(sensi_meth)583 b(==)e(CV_SIMULTANEOUS\))-2546
+68742 y Fd(207)4815 b Fg(printf\("\()582 b(SIMULTANEOUS)h(+"\);)-2546
+70071 y Fd(208)3653 b Fg(else)-2546 71399 y Fd(209)4815
+b Fg(if\(sensi_meth)583 b(==)e(CV_STAGGERED\))j(printf\("\()e
+(STAGGERED)g(+"\);)-2546 72727 y Fd(210)4815 b Fg(else)15692
+b(printf\("\()582 b(STAGGERED1)h(+"\);)-2546 74056 y
+Fd(211)3653 b Fg(if\(err_con\))582 b(printf\(")h(FULL)e(ERROR)h
+(CONTROL)h(\)"\);)-2546 75384 y Fd(212)3653 b Fg(else)4649
+b(printf\(")583 b(PARTIAL)f(ERROR)g(CONTROL)g(\)"\);)-2546
+76712 y Fd(213)-2546 78041 y(214)2490 b Fg(})582 b(else)f({)p
+Black 23394 81741 a Ft(52)p Black eop
+%%Page: 53 57
+53 56 bop Black Black 1454 7638 a Fd(215)1454 8966 y(216)3653
+b Fg(printf\("Sensitivity:)584 b(NO)d("\);)1454 10295
+y Fd(217)1454 11623 y(218)2490 b Fg(})1454 12951 y Fd(219)1454
+14280 y(220)g Fg(/*)582 b(In)f(loop)h(over)g(output)g(points,)g(call)g
+(CVode,)g(print)g(results,)g(test)g(for)f(error)h(*/)1454
+15608 y Fd(221)1454 16936 y(222)2490 b Fg(printf\("\\n\\n"\);)1454
+18265 y Fd(223)g Fg
+(printf\("==================================================="\);)1454
+19593 y Fd(224)g Fg(printf\("============================\\n"\);)1454
+20922 y Fd(225)g Fg(printf\(")2907 b(T)f(Q)4068 b(H)3487
+b(NST)11624 b(y1"\);)1454 22250 y Fd(226)2490 b Fg(printf\(")6394
+b(y2)f(y3)2325 b(\\n"\);)1454 23578 y Fd(227)2490 b Fg
+(printf\("==================================================="\);)1454
+24907 y Fd(228)g Fg(printf\("============================\\n"\);)1454
+26235 y Fd(229)1454 27563 y(230)g Fg(for)582 b(\(iout=1,)g(tout=T1;)h
+(iout)e(<=)h(NOUT;)g(iout++,)g(tout)g(*=)f(TMULT\))h({)1454
+28892 y Fd(231)1454 30220 y(232)3653 b Fg(flag)581 b(=)h
+(CVode\(cvode_mem,)h(tout,)f(y,)g(&t,)f(CV_NORMAL\);)1454
+31548 y Fd(233)3653 b Fg(if)581 b(\(check_flag\(&flag,)j("CVode",)e
+(1\)\))g(break;)1454 32877 y Fd(234)1454 34205 y(235)3653
+b Fg(PrintOutput\(cvode_mem,)584 b(t,)d(y\);)1454 35533
+y Fd(236)1454 36862 y(237)3653 b Fg(if)581 b(\(sensi\))h({)1454
+38190 y Fd(238)4815 b Fg(flag)582 b(=)f(CVodeGetSens\(cvode_mem,)k(t,)c
+(yS\);)1454 39518 y Fd(239)4815 b Fg(if)581 b(\(check_flag\(&flag,)j
+("CVodeGetSens",)g(1\)\))d(break;)1454 40847 y Fd(240)4815
+b Fg(PrintOutputS\(yS\);)1454 42175 y Fd(241)3653 b Fg(})1454
+43504 y Fd(242)g Fg
+(printf\("-------------------------------------------------"\);)1454
+44832 y Fd(243)g Fg(printf\("------------------------------\\n"\);)1454
+46160 y Fd(244)1454 47489 y(245)2490 b Fg(})1454 48817
+y Fd(246)1454 50145 y(247)g Fg(/*)582 b(Print)g(final)g(statistics)g
+(*/)1454 51474 y Fd(248)2490 b Fg(PrintFinalStats\(cvode_mem,)585
+b(sensi\);)1454 52802 y Fd(249)1454 54130 y(250)2490
+b Fg(/*)582 b(Free)f(memory)i(*/)1454 55459 y Fd(251)1454
+56787 y(252)2490 b Fg(N_VDestroy_Serial\(y\);)11626 b(/*)582
+b(Free)g(y)f(vector)h(*/)1454 58115 y Fd(253)2490 b Fg(if)582
+b(\(sensi\))g({)1454 59444 y Fd(254)3653 b Fg
+(N_VDestroyVectorArray_Serial\(yS,)586 b(NS\);)1162 b(/*)582
+b(Free)g(yS)f(vector)h(*/)1454 60772 y Fd(255)2490 b
+Fg(})1454 62100 y Fd(256)g Fg(free\(data\);)17436 b(/*)582
+b(Free)g(user)f(data)h(*/)1454 63429 y Fd(257)2490 b
+Fg(CVodeFree\(cvode_mem\);)11626 b(/*)582 b(Free)g(CVODES)g(memory)g
+(*/)1454 64757 y Fd(258)1454 66086 y(259)2490 b Fg(return\(0\);)1454
+67414 y Fd(260)1328 b Fg(})1454 68742 y Fd(261)1454 70071
+y(262)g Fg(/*)1454 71399 y Fd(263)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)1454 72727 y Fd(264)g Fg(*)581 b(FUNCTIONS)i(CALLED)f(BY)f(CVODES)
+1454 74056 y Fd(265)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)1454 75384 y Fd(266)g Fg(*/)1454 76712 y Fd(267)1454
+78041 y(268)1328 b Fg(/*)p Black 27394 81741 a Ft(53)p
+Black eop
+%%Page: 54 58
+54 57 bop Black Black -2546 7638 a Fd(269)1909 b Fg(*)581
+b(f)h(routine.)g(Compute)g(f\(t,y\).)-2546 8966 y Fd(270)1909
+b Fg(*/)-2546 10295 y Fd(271)-2546 11623 y(272)1328 b
+Fg(static)582 b(void)g(f\(realtype)g(t,)g(N_Vector)g(y,)g(N_Vector)g
+(ydot,)g(void)g(*f_data\))-2546 12951 y Fd(273)1328 b
+Fg({)-2546 14280 y Fd(274)2490 b Fg(realtype)583 b(y1,)e(y2,)h(y3,)f
+(yd1,)h(yd3;)-2546 15608 y Fd(275)2490 b Fg(UserData)583
+b(data;)-2546 16936 y Fd(276)2490 b Fg(realtype)583 b(p1,)e(p2,)h(p3;)
+-2546 18265 y Fd(277)-2546 19593 y(278)2490 b Fg(y1)582
+b(=)f(Ith\(y,1\);)i(y2)e(=)g(Ith\(y,2\);)i(y3)e(=)h(Ith\(y,3\);)-2546
+20922 y Fd(279)2490 b Fg(data)582 b(=)f(\(UserData\))i(f_data;)-2546
+22250 y Fd(280)2490 b Fg(p1)582 b(=)f(data->p[0];)i(p2)e(=)h
+(data->p[1];)g(p3)g(=)f(data->p[2];)-2546 23578 y Fd(281)-2546
+24907 y(282)2490 b Fg(yd1)582 b(=)f(Ith\(ydot,1\))i(=)e(-p1*y1)h(+)g
+(p2*y2*y3;)-2546 26235 y Fd(283)2490 b Fg(yd3)582 b(=)f(Ith\(ydot,3\))i
+(=)e(p3*y2*y2;)-2546 27563 y Fd(284)5977 b Fg(Ith\(ydot,2\))583
+b(=)e(-yd1)h(-)f(yd3;)-2546 28892 y Fd(285)1328 b Fg(})-2546
+30220 y Fd(286)-2546 31548 y(287)-2546 32877 y(288)g
+Fg(/*)-2546 34205 y Fd(289)1909 b Fg(*)581 b(Jacobian)i(routine.)f
+(Compute)g(J\(t,y\).)-2546 35533 y Fd(290)1909 b Fg(*/)-2546
+36862 y Fd(291)-2546 38190 y(292)1328 b Fg(static)582
+b(void)g(Jac\(long)g(int)g(N,)f(DenseMat)i(J,)e(realtype)h(t,)-2546
+39518 y Fd(293)10626 b Fg(N_Vector)583 b(y,)e(N_Vector)i(fy,)e(void)h
+(*jac_data,)-2546 40847 y Fd(294)10626 b Fg(N_Vector)583
+b(tmp1,)f(N_Vector)g(tmp2,)g(N_Vector)g(tmp3\))-2546
+42175 y Fd(295)1328 b Fg({)-2546 43504 y Fd(296)2490
+b Fg(realtype)583 b(y1,)e(y2,)h(y3;)-2546 44832 y Fd(297)2490
+b Fg(UserData)583 b(data;)-2546 46160 y Fd(298)2490 b
+Fg(realtype)583 b(p1,)e(p2,)h(p3;)-2546 47489 y Fd(299)-2546
+48817 y(300)2490 b Fg(y1)582 b(=)f(Ith\(y,1\);)i(y2)e(=)g(Ith\(y,2\);)i
+(y3)e(=)h(Ith\(y,3\);)-2546 50145 y Fd(301)2490 b Fg(data)582
+b(=)f(\(UserData\))i(jac_data;)-2546 51474 y Fd(302)2490
+b Fg(p1)582 b(=)f(data->p[0];)i(p2)e(=)h(data->p[1];)g(p3)g(=)f
+(data->p[2];)-2546 52802 y Fd(303)-2546 54130 y(304)2490
+b Fg(IJth\(J,1,1\))583 b(=)e(-p1;)1163 b(IJth\(J,1,2\))583
+b(=)e(p2*y3;)5813 b(IJth\(J,1,3\))583 b(=)e(p2*y2;)-2546
+55459 y Fd(305)2490 b Fg(IJth\(J,2,1\))583 b(=)1163 b(p1;)f
+(IJth\(J,2,2\))583 b(=)e(-p2*y3-2*p3*y2;)j(IJth\(J,2,3\))f(=)e(-p2*y2;)
+-2546 56787 y Fd(306)14113 b Fg(IJth\(J,3,2\))583 b(=)e(2*p3*y2;)-2546
+58115 y Fd(307)1328 b Fg(})-2546 59444 y Fd(308)-2546
+60772 y(309)g Fg(/*)-2546 62100 y Fd(310)1909 b Fg(*)581
+b(fS)h(routine.)g(Compute)g(sensitivity)h(r.h.s.)-2546
+63429 y Fd(311)1909 b Fg(*/)-2546 64757 y Fd(312)-2546
+66086 y(313)1328 b Fg(static)582 b(void)g(fS\(int)g(Ns,)f(realtype)i
+(t,)e(N_Vector)i(y,)e(N_Vector)h(ydot,)-2546 67414 y
+Fd(314)10045 b Fg(int)582 b(iS,)f(N_Vector)i(yS,)e(N_Vector)i(ySdot,)
+-2546 68742 y Fd(315)10045 b Fg(void)582 b(*fS_data,)g(N_Vector)h
+(tmp1,)f(N_Vector)g(tmp2\))-2546 70071 y Fd(316)1328
+b Fg({)-2546 71399 y Fd(317)2490 b Fg(UserData)583 b(data;)-2546
+72727 y Fd(318)2490 b Fg(realtype)583 b(p1,)e(p2,)h(p3;)-2546
+74056 y Fd(319)2490 b Fg(realtype)583 b(y1,)e(y2,)h(y3;)-2546
+75384 y Fd(320)2490 b Fg(realtype)583 b(s1,)e(s2,)h(s3;)-2546
+76712 y Fd(321)2490 b Fg(realtype)583 b(sd1,)e(sd2,)h(sd3;)-2546
+78041 y Fd(322)p Black 23394 81741 a Ft(54)p Black eop
+%%Page: 55 59
+55 58 bop Black Black 1454 7638 a Fd(323)2490 b Fg(data)582
+b(=)f(\(UserData\))i(fS_data;)1454 8966 y Fd(324)2490
+b Fg(p1)582 b(=)f(data->p[0];)i(p2)e(=)h(data->p[1];)g(p3)g(=)f
+(data->p[2];)1454 10295 y Fd(325)1454 11623 y(326)2490
+b Fg(y1)582 b(=)f(Ith\(y,1\);)1164 b(y2)581 b(=)g(Ith\(y,2\);)1164
+b(y3)582 b(=)f(Ith\(y,3\);)1454 12951 y Fd(327)2490 b
+Fg(s1)582 b(=)f(Ith\(yS,1\);)i(s2)e(=)g(Ith\(yS,2\);)i(s3)f(=)f
+(Ith\(yS,3\);)1454 14280 y Fd(328)1454 15608 y(329)2490
+b Fg(sd1)582 b(=)f(-p1*s1)h(+)g(p2*y3*s2)g(+)f(p2*y2*s3;)1454
+16936 y Fd(330)2490 b Fg(sd3)582 b(=)f(2*p3*y2*s2;)1454
+18265 y Fd(331)2490 b Fg(sd2)582 b(=)f(-sd1-sd3;)1454
+19593 y Fd(332)1454 20922 y(333)2490 b Fg(switch)582
+b(\(iS\))g({)1454 22250 y Fd(334)2490 b Fg(case)582 b(0:)1454
+23578 y Fd(335)3653 b Fg(sd1)581 b(+=)h(-y1;)1454 24907
+y Fd(336)3653 b Fg(sd2)581 b(+=)1163 b(y1;)1454 26235
+y Fd(337)3653 b Fg(break;)1454 27563 y Fd(338)2490 b
+Fg(case)582 b(1:)1454 28892 y Fd(339)3653 b Fg(sd1)581
+b(+=)1163 b(y2*y3;)1454 30220 y Fd(340)3653 b Fg(sd2)581
+b(+=)h(-y2*y3;)1454 31548 y Fd(341)3653 b Fg(break;)1454
+32877 y Fd(342)2490 b Fg(case)582 b(2:)1454 34205 y Fd(343)3653
+b Fg(sd2)581 b(+=)h(-y2*y2;)1454 35533 y Fd(344)3653
+b Fg(sd3)581 b(+=)1163 b(y2*y2;)1454 36862 y Fd(345)3653
+b Fg(break;)1454 38190 y Fd(346)2490 b Fg(})1454 39518
+y Fd(347)1454 40847 y(348)g Fg(Ith\(ySdot,1\))583 b(=)f(sd1;)1454
+42175 y Fd(349)2490 b Fg(Ith\(ySdot,2\))583 b(=)f(sd2;)1454
+43504 y Fd(350)2490 b Fg(Ith\(ySdot,3\))583 b(=)f(sd3;)1454
+44832 y Fd(351)1328 b Fg(})1454 46160 y Fd(352)1454 47489
+y(353)g Fg(/*)1454 48817 y Fd(354)1909 b Fg(*)581 b(EwtSet)h(function.)
+h(Computes)f(the)g(error)g(weights)g(at)f(the)h(current)g(solution.)
+1454 50145 y Fd(355)1909 b Fg(*/)1454 51474 y Fd(356)1454
+52802 y(357)1328 b Fg(static)582 b(int)g(ewt\(N_Vector)h(y,)e(N_Vector)
+h(w,)g(void)g(*e_data\))1454 54130 y Fd(358)1328 b Fg({)1454
+55459 y Fd(359)2490 b Fg(int)582 b(i;)1454 56787 y Fd(360)2490
+b Fg(realtype)583 b(yy,)e(ww,)h(rtol,)g(atol[3];)1454
+58115 y Fd(361)1454 59444 y(362)2490 b Fg(rtol)2325 b(=)582
+b(RTOL;)1454 60772 y Fd(363)2490 b Fg(atol[0])582 b(=)g(ATOL1;)1454
+62100 y Fd(364)2490 b Fg(atol[1])582 b(=)g(ATOL2;)1454
+63429 y Fd(365)2490 b Fg(atol[2])582 b(=)g(ATOL3;)1454
+64757 y Fd(366)1454 66086 y(367)2490 b Fg(for)582 b(\(i=1;)g(i<=3;)g
+(i++\))f({)1454 67414 y Fd(368)3653 b Fg(yy)581 b(=)g(Ith\(y,i\);)1454
+68742 y Fd(369)3653 b Fg(ww)581 b(=)g(rtol)h(*)f(ABS\(yy\))i(+)e
+(atol[i-1];)1454 70071 y Fd(370)3653 b Fg(if)581 b(\(ww)h(<=)f(0.0\))h
+(return)g(\(-1\);)1454 71399 y Fd(371)3653 b Fg(Ith\(w,i\))582
+b(=)f(1.0/ww;)1454 72727 y Fd(372)2490 b Fg(})1454 74056
+y Fd(373)1454 75384 y(374)g Fg(return\(0\);)1454 76712
+y Fd(375)1328 b Fg(})1454 78041 y Fd(376)p Black 27394
+81741 a Ft(55)p Black eop
+%%Page: 56 60
+56 59 bop Black Black -2546 7638 a Fd(377)1328 b Fg(/*)-2546
+8966 y Fd(378)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 10295 y Fd(379)g Fg(*)581 b(PRIVATE)i(FUNCTIONS)-2546
+11623 y Fd(380)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 12951 y Fd(381)g Fg(*/)-2546 14280 y Fd(382)-2546
+15608 y(383)1328 b Fg(/*)-2546 16936 y Fd(384)1909 b
+Fg(*)581 b(Process)i(and)e(verify)h(arguments)h(to)e(cvfdx.)-2546
+18265 y Fd(385)1909 b Fg(*/)-2546 19593 y Fd(386)-2546
+20922 y(387)1328 b Fg(static)582 b(void)g(ProcessArgs\(int)h(argc,)f
+(char)g(*argv[],)-2546 22250 y Fd(388)15276 b Fg(booleantype)582
+b(*sensi,)h(int)e(*sensi_meth,)i(booleantype)g(*err_con\))-2546
+23578 y Fd(389)1328 b Fg({)-2546 24907 y Fd(390)2490
+b Fg(*sensi)582 b(=)g(FALSE;)-2546 26235 y Fd(391)2490
+b Fg(*sensi_meth)583 b(=)e(-1;)-2546 27563 y Fd(392)2490
+b Fg(*err_con)583 b(=)e(FALSE;)-2546 28892 y Fd(393)-2546
+30220 y(394)2490 b Fg(if)582 b(\(argc)g(<)f(2\))g
+(WrongArgs\(argv[0]\);)-2546 31548 y Fd(395)-2546 32877
+y(396)2490 b Fg(if)582 b(\(strcmp\(argv[1],"-nosensi"\))j(==)c(0\))
+-2546 34205 y Fd(397)3653 b Fg(*sensi)582 b(=)f(FALSE;)-2546
+35533 y Fd(398)2490 b Fg(else)582 b(if)f(\(strcmp\(argv[1],"-sensi"\))k
+(==)d(0\))-2546 36862 y Fd(399)3653 b Fg(*sensi)582 b(=)f(TRUE;)-2546
+38190 y Fd(400)2490 b Fg(else)-2546 39518 y Fd(401)3653
+b Fg(WrongArgs\(argv[0]\);)-2546 40847 y Fd(402)-2546
+42175 y(403)2490 b Fg(if)582 b(\(*sensi\))g({)-2546 43504
+y Fd(404)-2546 44832 y(405)3653 b Fg(if)581 b(\(argc)h(!=)f(4\))-2546
+46160 y Fd(406)4815 b Fg(WrongArgs\(argv[0]\);)-2546
+47489 y Fd(407)-2546 48817 y(408)3653 b Fg(if)581 b
+(\(strcmp\(argv[2],"sim"\))j(==)e(0\))-2546 50145 y Fd(409)4815
+b Fg(*sensi_meth)583 b(=)e(CV_SIMULTANEOUS;)-2546 51474
+y Fd(410)3653 b Fg(else)581 b(if)h(\(strcmp\(argv[2],"stg"\))i(==)e
+(0\))-2546 52802 y Fd(411)4815 b Fg(*sensi_meth)583 b(=)e
+(CV_STAGGERED;)-2546 54130 y Fd(412)3653 b Fg(else)581
+b(if)h(\(strcmp\(argv[2],"stg1"\))i(==)e(0\))-2546 55459
+y Fd(413)4815 b Fg(*sensi_meth)583 b(=)e(CV_STAGGERED1;)-2546
+56787 y Fd(414)3653 b Fg(else)-2546 58115 y Fd(415)4815
+b Fg(WrongArgs\(argv[0]\);)-2546 59444 y Fd(416)-2546
+60772 y(417)3653 b Fg(if)581 b(\(strcmp\(argv[3],"t"\))j(==)e(0\))-2546
+62100 y Fd(418)4815 b Fg(*err_con)582 b(=)g(TRUE;)-2546
+63429 y Fd(419)3653 b Fg(else)581 b(if)h(\(strcmp\(argv[3],"f"\))i(==)d
+(0\))-2546 64757 y Fd(420)4815 b Fg(*err_con)582 b(=)g(FALSE;)-2546
+66086 y Fd(421)3653 b Fg(else)-2546 67414 y Fd(422)4815
+b Fg(WrongArgs\(argv[0]\);)-2546 68742 y Fd(423)2490
+b Fg(})-2546 70071 y Fd(424)-2546 71399 y(425)1328 b
+Fg(})-2546 72727 y Fd(426)-2546 74056 y(427)g Fg(static)582
+b(void)g(WrongArgs\(char)h(*name\))-2546 75384 y Fd(428)1328
+b Fg({)-2546 76712 y Fd(429)3653 b Fg(printf\("\\nUsage:)583
+b(\045s)f([-nosensi])g([-sensi)g(sensi_meth)h(err_con]\\n",name\);)
+-2546 78041 y Fd(430)3653 b Fg(printf\(")5231 b(sensi_meth)583
+b(=)e(sim,)h(stg,)g(or)f(stg1\\n"\);)p Black 23394 81741
+a Ft(56)p Black eop
+%%Page: 57 61
+57 60 bop Black Black 1454 7638 a Fd(431)3653 b Fg(printf\(")5231
+b(err_con)2326 b(=)581 b(t)g(or)h(f\\n"\);)1454 8966
+y Fd(432)1454 10295 y(433)3653 b Fg(exit\(0\);)1454 11623
+y Fd(434)1328 b Fg(})1454 12951 y Fd(435)1454 14280 y(436)g
+Fg(/*)1454 15608 y Fd(437)1909 b Fg(*)581 b(Print)h(current)h(t,)e
+(step)h(count,)g(order,)g(stepsize,)g(and)g(solution.)1454
+16936 y Fd(438)1909 b Fg(*/)1454 18265 y Fd(439)1454
+19593 y(440)1328 b Fg(static)582 b(void)g(PrintOutput\(void)h
+(*cvode_mem,)g(realtype)f(t,)g(N_Vector)g(u\))1454 20922
+y Fd(441)1328 b Fg({)1454 22250 y Fd(442)2490 b Fg(long)582
+b(int)g(nst;)1454 23578 y Fd(443)2490 b Fg(int)582 b(qu,)f(flag;)1454
+24907 y Fd(444)2490 b Fg(realtype)583 b(hu,)e(*udata;)1454
+26235 y Fd(445)1454 27563 y(446)2490 b Fg(udata)582 b(=)f
+(NV_DATA_S\(u\);)1454 28892 y Fd(447)1454 30220 y(448)2490
+b Fg(flag)582 b(=)f(CVodeGetNumSteps\(cvode_mem,)586
+b(&nst\);)1454 31548 y Fd(449)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumSteps",)g(1\);)1454 32877 y Fd(450)2490
+b Fg(flag)582 b(=)f(CVodeGetLastOrder\(cvode_mem,)586
+b(&qu\);)1454 34205 y Fd(451)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetLastOrder",)g(1\);)1454 35533 y Fd(452)2490
+b Fg(flag)582 b(=)f(CVodeGetLastStep\(cvode_mem,)586
+b(&hu\);)1454 36862 y Fd(453)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetLastStep",)g(1\);)1454 38190 y Fd(454)1454
+39518 y(455)1328 b Fg(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))
+1454 40847 y Fd(456)2490 b Fg(printf\("\0458.3Le)584
+b(\0452d)1162 b(\0458.3Le)582 b(\0455ld\\n",)h(t,)e(qu,)h(hu,)f(nst\);)
+1454 42175 y Fd(457)1328 b Fg(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))1454 43504 y Fd(458)2490
+b Fg(printf\("\0458.3le)584 b(\0452d)1162 b(\0458.3le)582
+b(\0455ld\\n",)h(t,)e(qu,)h(hu,)f(nst\);)1454 44832 y
+Fd(459)1328 b Fg(#else)1454 46160 y Fd(460)2490 b Fg(printf\("\0458.3e)
+583 b(\0452d)1163 b(\0458.3e)582 b(\0455ld\\n",)g(t,)g(qu,)f(hu,)h
+(nst\);)1454 47489 y Fd(461)1328 b Fg(#endif)1454 48817
+y Fd(462)1454 50145 y(463)2490 b Fg(printf\(")15111 b(Solution)4070
+b("\);)1454 51474 y Fd(464)1454 52802 y(465)1328 b Fg(#if)582
+b(defined\(SUNDIALS_EXTENDED_PRECISION\))1454 54130 y
+Fd(466)2490 b Fg(printf\("\04512.4Le)584 b(\04512.4Le)e(\04512.4Le)g
+(\\n",)g(udata[0],)g(udata[1],)h(udata[2]\);)1454 55459
+y Fd(467)1328 b Fg(#elif)582 b(defined\(SUNDIALS_DOUBLE_PRECISION\))
+1454 56787 y Fd(468)2490 b Fg(printf\("\04512.4le)584
+b(\04512.4le)e(\04512.4le)g(\\n",)g(udata[0],)g(udata[1],)h
+(udata[2]\);)1454 58115 y Fd(469)1328 b Fg(#else)1454
+59444 y Fd(470)2490 b Fg(printf\("\04512.4e)584 b(\04512.4e)e
+(\04512.4e)g(\\n",)f(udata[0],)i(udata[1],)f(udata[2]\);)1454
+60772 y Fd(471)1328 b Fg(#endif)1454 62100 y Fd(472)1454
+63429 y(473)g Fg(})1454 64757 y Fd(474)1454 66086 y(475)g
+Fg(/*)1454 67414 y Fd(476)1909 b Fg(*)581 b(Print)h(sensitivities.)1454
+68742 y Fd(477)1328 b Fg(*/)1454 70071 y Fd(478)1454
+71399 y(479)g Fg(static)582 b(void)g(PrintOutputS\(N_Vector)i(*uS\))
+1454 72727 y Fd(480)1328 b Fg({)1454 74056 y Fd(481)2490
+b Fg(realtype)583 b(*sdata;)1454 75384 y Fd(482)1454
+76712 y(483)2490 b Fg(sdata)582 b(=)f(NV_DATA_S\(uS[0]\);)1454
+78041 y Fd(484)2490 b Fg(printf\(")15111 b(Sensitivity)583
+b(1)1163 b("\);)p Black 27394 81741 a Ft(57)p Black eop
+%%Page: 58 62
+58 61 bop Black Black -2546 7638 a Fd(485)-2546 8966
+y(486)1328 b Fg(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546
+10295 y Fd(487)2490 b Fg(printf\("\04512.4Le)584 b(\04512.4Le)e
+(\04512.4Le)g(\\n",)g(sdata[0],)g(sdata[1],)h(sdata[2]\);)-2546
+11623 y Fd(488)1328 b Fg(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546 12951 y Fd(489)2490
+b Fg(printf\("\04512.4le)584 b(\04512.4le)e(\04512.4le)g(\\n",)g
+(sdata[0],)g(sdata[1],)h(sdata[2]\);)-2546 14280 y Fd(490)1328
+b Fg(#else)-2546 15608 y Fd(491)2490 b Fg(printf\("\04512.4e)584
+b(\04512.4e)e(\04512.4e)g(\\n",)f(sdata[0],)i(sdata[1],)f(sdata[2]\);)
+-2546 16936 y Fd(492)1328 b Fg(#endif)-2546 18265 y Fd(493)-2546
+19593 y(494)2490 b Fg(sdata)582 b(=)f(NV_DATA_S\(uS[1]\);)-2546
+20922 y Fd(495)2490 b Fg(printf\(")15111 b(Sensitivity)583
+b(2)1163 b("\);)-2546 22250 y Fd(496)-2546 23578 y(497)1328
+b Fg(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546
+24907 y Fd(498)2490 b Fg(printf\("\04512.4Le)584 b(\04512.4Le)e
+(\04512.4Le)g(\\n",)g(sdata[0],)g(sdata[1],)h(sdata[2]\);)-2546
+26235 y Fd(499)1328 b Fg(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546 27563 y Fd(500)2490
+b Fg(printf\("\04512.4le)584 b(\04512.4le)e(\04512.4le)g(\\n",)g
+(sdata[0],)g(sdata[1],)h(sdata[2]\);)-2546 28892 y Fd(501)1328
+b Fg(#else)-2546 30220 y Fd(502)2490 b Fg(printf\("\04512.4e)584
+b(\04512.4e)e(\04512.4e)g(\\n",)f(sdata[0],)i(sdata[1],)f(sdata[2]\);)
+-2546 31548 y Fd(503)1328 b Fg(#endif)-2546 32877 y Fd(504)-2546
+34205 y(505)2490 b Fg(sdata)582 b(=)f(NV_DATA_S\(uS[2]\);)-2546
+35533 y Fd(506)2490 b Fg(printf\(")15111 b(Sensitivity)583
+b(3)1163 b("\);)-2546 36862 y Fd(507)-2546 38190 y(508)1328
+b Fg(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546
+39518 y Fd(509)2490 b Fg(printf\("\04512.4Le)584 b(\04512.4Le)e
+(\04512.4Le)g(\\n",)g(sdata[0],)g(sdata[1],)h(sdata[2]\);)-2546
+40847 y Fd(510)1328 b Fg(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546 42175 y Fd(511)2490
+b Fg(printf\("\04512.4le)584 b(\04512.4le)e(\04512.4le)g(\\n",)g
+(sdata[0],)g(sdata[1],)h(sdata[2]\);)-2546 43504 y Fd(512)1328
+b Fg(#else)-2546 44832 y Fd(513)2490 b Fg(printf\("\04512.4e)584
+b(\04512.4e)e(\04512.4e)g(\\n",)f(sdata[0],)i(sdata[1],)f(sdata[2]\);)
+-2546 46160 y Fd(514)1328 b Fg(#endif)-2546 47489 y Fd(515)g
+Fg(})-2546 48817 y Fd(516)-2546 50145 y(517)g Fg(/*)-2546
+51474 y Fd(518)1909 b Fg(*)581 b(Print)h(some)g(final)g(statistics)h
+(from)e(the)h(CVODES)g(memory.)-2546 52802 y Fd(519)1909
+b Fg(*/)-2546 54130 y Fd(520)-2546 55459 y(521)1328 b
+Fg(static)582 b(void)g(PrintFinalStats\(void)i(*cvode_mem,)f
+(booleantype)f(sensi\))-2546 56787 y Fd(522)1328 b Fg({)-2546
+58115 y Fd(523)2490 b Fg(long)582 b(int)g(nst;)-2546
+59444 y Fd(524)2490 b Fg(long)582 b(int)g(nfe,)f(nsetups,)i(nni,)e
+(ncfn,)h(netf;)-2546 60772 y Fd(525)2490 b Fg(long)582
+b(int)g(nfSe,)g(nfeS,)f(nsetupsS,)i(nniS,)f(ncfnS,)g(netfS;)-2546
+62100 y Fd(526)2490 b Fg(long)582 b(int)g(njeD,)g(nfeD;)-2546
+63429 y Fd(527)2490 b Fg(int)582 b(flag;)-2546 64757
+y Fd(528)-2546 66086 y(529)2490 b Fg(flag)582 b(=)f
+(CVodeGetNumSteps\(cvode_mem,)586 b(&nst\);)-2546 67414
+y Fd(530)2490 b Fg(check_flag\(&flag,)584 b("CVodeGetNumSteps",)g(1\);)
+-2546 68742 y Fd(531)2490 b Fg(flag)582 b(=)f
+(CVodeGetNumRhsEvals\(cvode_mem,)586 b(&nfe\);)-2546
+70071 y Fd(532)2490 b Fg(check_flag\(&flag,)584 b
+("CVodeGetNumRhsEvals",)g(1\);)-2546 71399 y Fd(533)2490
+b Fg(flag)582 b(=)f(CVodeGetNumLinSolvSetups\(cvode_mem,)587
+b(&nsetups\);)-2546 72727 y Fd(534)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumLinSolvSetups",)h(1\);)-2546 74056 y Fd(535)2490
+b Fg(flag)582 b(=)f(CVodeGetNumErrTestFails\(cvode_mem,)587
+b(&netf\);)-2546 75384 y Fd(536)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumErrTestFails",)h(1\);)-2546 76712 y Fd(537)2490
+b Fg(flag)582 b(=)f(CVodeGetNumNonlinSolvIters\(cvode_mem,)587
+b(&nni\);)-2546 78041 y Fd(538)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumNonlinSolvIters",)h(1\);)p Black 23394
+81741 a Ft(58)p Black eop
+%%Page: 59 63
+59 62 bop Black Black 1454 7638 a Fd(539)2490 b Fg(flag)582
+b(=)f(CVodeGetNumNonlinSolvConvFails\(cvode_mem,)588
+b(&ncfn\);)1454 8966 y Fd(540)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumNonlinSolvConvFails",)i(1\);)1454 10295
+y Fd(541)1454 11623 y(542)2490 b Fg(if)582 b(\(sensi\))g({)1454
+12951 y Fd(543)3653 b Fg(flag)581 b(=)h
+(CVodeGetNumSensRhsEvals\(cvode_mem,)k(&nfSe\);)1454
+14280 y Fd(544)3653 b Fg(check_flag\(&flag,)583 b
+("CVodeGetNumSensRhsEvals",)i(1\);)1454 15608 y Fd(545)3653
+b Fg(flag)581 b(=)h(CVodeGetNumRhsEvalsSens\(cvode_mem,)k(&nfeS\);)1454
+16936 y Fd(546)3653 b Fg(check_flag\(&flag,)583 b
+("CVodeGetNumRhsEvalsSens",)i(1\);)1454 18265 y Fd(547)3653
+b Fg(flag)581 b(=)h(CVodeGetNumSensLinSolvSetups\(cvode_mem,)587
+b(&nsetupsS\);)1454 19593 y Fd(548)3653 b Fg(check_flag\(&flag,)583
+b("CVodeGetNumSensLinSolvSetups",)j(1\);)1454 20922 y
+Fd(549)3653 b Fg(flag)581 b(=)h
+(CVodeGetNumSensErrTestFails\(cvode_mem,)k(&netfS\);)1454
+22250 y Fd(550)3653 b Fg(check_flag\(&flag,)583 b
+("CVodeGetNumSensErrTestFails",)j(1\);)1454 23578 y Fd(551)3653
+b Fg(flag)581 b(=)h(CVodeGetNumSensNonlinSolvIters\(cvode_mem,)587
+b(&nniS\);)1454 24907 y Fd(552)3653 b Fg(check_flag\(&flag,)583
+b("CVodeGetNumSensNonlinSolvIters",)j(1\);)1454 26235
+y Fd(553)3653 b Fg(flag)581 b(=)h
+(CVodeGetNumSensNonlinSolvConvFails\(cvode_mem,)587 b(&ncfnS\);)1454
+27563 y Fd(554)3653 b Fg(check_flag\(&flag,)583 b
+("CVodeGetNumSensNonlinSolvConvFails",)k(1\);)1454 28892
+y Fd(555)2490 b Fg(})1454 30220 y Fd(556)1454 31548 y(557)g
+Fg(flag)582 b(=)f(CVDenseGetNumJacEvals\(cvode_mem,)586
+b(&njeD\);)1454 32877 y Fd(558)2490 b Fg(check_flag\(&flag,)584
+b("CVDenseGetNumJacEvals",)h(1\);)1454 34205 y Fd(559)2490
+b Fg(flag)582 b(=)f(CVDenseGetNumRhsEvals\(cvode_mem,)586
+b(&nfeD\);)1454 35533 y Fd(560)2490 b Fg(check_flag\(&flag,)584
+b("CVDenseGetNumRhsEvals",)h(1\);)1454 36862 y Fd(561)1454
+38190 y(562)2490 b Fg(printf\("\\nFinal)584 b(Statistics\\n\\n"\);)1454
+39518 y Fd(563)2490 b Fg(printf\("nst)2908 b(=)581 b(\0455ld\\n\\n",)i
+(nst\);)1454 40847 y Fd(564)2490 b Fg(printf\("nfe)2908
+b(=)581 b(\0455ld\\n",)1745 b(nfe\);)1454 42175 y Fd(565)2490
+b Fg(printf\("netf)2327 b(=)581 b(\0455ld)2325 b(nsetups)1164
+b(=)581 b(\0455ld\\n",)h(netf,)g(nsetups\);)1454 43504
+y Fd(566)2490 b Fg(printf\("nni)2908 b(=)581 b(\0455ld)2325
+b(ncfn)2907 b(=)581 b(\0455ld\\n",)h(nni,)g(ncfn\);)1454
+44832 y Fd(567)1454 46160 y(568)2490 b Fg(if\(sensi\))583
+b({)1454 47489 y Fd(569)3653 b Fg(printf\("\\n"\);)1454
+48817 y Fd(570)g Fg(printf\("nfSe)2326 b(=)581 b(\0455ld)2325
+b(nfeS)2907 b(=)581 b(\0455ld\\n",)h(nfSe,)g(nfeS\);)1454
+50145 y Fd(571)3653 b Fg(printf\("netfs)1745 b(=)581
+b(\0455ld)2325 b(nsetupsS)583 b(=)e(\0455ld\\n",)h(netfS,)g
+(nsetupsS\);)1454 51474 y Fd(572)3653 b Fg(printf\("nniS)2326
+b(=)581 b(\0455ld)2325 b(ncfnS)h(=)581 b(\0455ld\\n",)h(nniS,)g
+(ncfnS\);)1454 52802 y Fd(573)2490 b Fg(})1454 54130
+y Fd(574)1454 55459 y(575)g Fg(printf\("\\n"\);)1454
+56787 y Fd(576)g Fg(printf\("njeD)2327 b(=)581 b(\0455ld)2325
+b(nfeD)2907 b(=)581 b(\0455ld\\n",)h(njeD,)g(nfeD\);)1454
+58115 y Fd(577)1454 59444 y(578)1328 b Fg(})1454 60772
+y Fd(579)1454 62100 y(580)g Fg(/*)1454 63429 y Fd(581)1909
+b Fg(*)581 b(Check)h(function)h(return)f(value.)1454
+64757 y Fd(582)1909 b Fg(*)2325 b(opt)581 b(==)h(0)f(means)h(SUNDIALS)g
+(function)h(allocates)f(memory)g(so)g(check)g(if)1454
+66086 y Fd(583)1909 b Fg(*)7555 b(returned)583 b(NULL)e(pointer)1454
+67414 y Fd(584)1909 b Fg(*)2325 b(opt)581 b(==)h(1)f(means)h(SUNDIALS)g
+(function)h(returns)f(a)f(flag)h(so)f(check)h(if)1454
+68742 y Fd(585)1909 b Fg(*)7555 b(flag)582 b(>=)f(0)1454
+70071 y Fd(586)1909 b Fg(*)2325 b(opt)581 b(==)h(2)f(means)h(function)g
+(allocates)h(memory)f(so)f(check)h(if)g(returned)1454
+71399 y Fd(587)1909 b Fg(*)7555 b(NULL)582 b(pointer)1454
+72727 y Fd(588)1909 b Fg(*/)1454 74056 y Fd(589)1454
+75384 y(590)1328 b Fg(static)582 b(int)g(check_flag\(void)h
+(*flagvalue,)g(char)f(*funcname,)g(int)g(opt\))1454 76712
+y Fd(591)1328 b Fg({)1454 78041 y Fd(592)2490 b Fg(int)582
+b(*errflag;)p Black 27394 81741 a Ft(59)p Black eop
+%%Page: 60 64
+60 63 bop Black Black -2546 7638 a Fd(593)-2546 8966
+y(594)2490 b Fg(/*)582 b(Check)g(if)f(SUNDIALS)h(function)h(returned)f
+(NULL)g(pointer)g(-)f(no)h(memory)g(allocated)g(*/)-2546
+10295 y Fd(595)2490 b Fg(if)582 b(\(opt)f(==)h(0)f(&&)h(flagvalue)g(==)
+g(NULL\))g({)-2546 11623 y Fd(596)3653 b Fg(fprintf\(stderr,)-2546
+12951 y Fd(597)8302 b Fg("\\nSUNDIALS_ERROR:)584 b(\045s\(\))d(failed)h
+(-)g(returned)g(NULL)g(pointer\\n\\n",)-2546 14280 y
+Fd(598)8302 b Fg(funcname\);)-2546 15608 y Fd(599)3653
+b Fg(return\(1\);)582 b(})-2546 16936 y Fd(600)-2546
+18265 y(601)2490 b Fg(/*)582 b(Check)g(if)f(flag)h(<)f(0)g(*/)-2546
+19593 y Fd(602)2490 b Fg(else)582 b(if)f(\(opt)h(==)g(1\))f({)-2546
+20922 y Fd(603)3653 b Fg(errflag)582 b(=)f(\(int)h(*\))f(flagvalue;)
+-2546 22250 y Fd(604)3653 b Fg(if)581 b(\(*errflag)i(<)e(0\))g({)-2546
+23578 y Fd(605)4815 b Fg(fprintf\(stderr,)-2546 24907
+y Fd(606)9464 b Fg("\\nSUNDIALS_ERROR:)584 b(\045s\(\))e(failed)g(with)
+f(flag)h(=)f(\045d\\n\\n",)-2546 26235 y Fd(607)9464
+b Fg(funcname,)583 b(*errflag\);)-2546 27563 y Fd(608)4815
+b Fg(return\(1\);)583 b(}})-2546 28892 y Fd(609)-2546
+30220 y(610)2490 b Fg(/*)582 b(Check)g(if)f(function)h(returned)h(NULL)
+f(pointer)g(-)f(no)g(memory)h(allocated)h(*/)-2546 31548
+y Fd(611)2490 b Fg(else)582 b(if)f(\(opt)h(==)g(2)f(&&)g(flagvalue)i
+(==)e(NULL\))h({)-2546 32877 y Fd(612)3653 b Fg(fprintf\(stderr,)-2546
+34205 y Fd(613)8302 b Fg("\\nMEMORY_ERROR:)583 b(\045s\(\))f(failed)g
+(-)f(returned)i(NULL)e(pointer\\n\\n",)-2546 35533 y
+Fd(614)8302 b Fg(funcname\);)-2546 36862 y Fd(615)3653
+b Fg(return\(1\);)582 b(})-2546 38190 y Fd(616)-2546
+39518 y(617)2490 b Fg(return\(0\);)-2546 40847 y Fd(618)1328
+b Fg(})p Black 23394 81741 a Ft(60)p Black eop
+%%Page: 61 65
+61 64 bop Black Black 4000 7638 a Fs(C)1793 b(Listing)600
+b(of)d Fa(pvfkx.c)2266 10674 y Fd(1)1328 b Fg(/*)2266
+12003 y Fd(2)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)2266
+13331 y Fd(3)1909 b Fg(*)581 b($Revision:)i(1.20.2.3)f($)2266
+14659 y Fd(4)1909 b Fg(*)581 b($Date:)h(2005/04/06)h(23:34:05)f($)2266
+15988 y Fd(5)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)2266
+17316 y Fd(6)1909 b Fg(*)581 b(Programmer\(s\):)j(S.)d(D.)h(Cohen,)g
+(A.)f(C.)h(Hindmarsh,)g(Radu)g(Serban,)2266 18645 y Fd(7)1909
+b Fg(*)9299 b(and)581 b(M.)h(R.)f(Wittman)h(@)g(LLNL)2266
+19973 y Fd(8)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)2266
+21301 y Fd(9)1909 b Fg(*)581 b(Example)i(problem:)1860
+22630 y Fd(10)1909 b Fg(*)1860 23958 y Fd(11)g Fg(*)581
+b(An)h(ODE)f(system)i(is)e(generated)h(from)g(the)g(following)g
+(2-species)h(diurnal)1860 25286 y Fd(12)1909 b Fg(*)581
+b(kinetics)i(advection-diffusion)h(PDE)d(system)h(in)g(2)f(space)h
+(dimensions:)1860 26615 y Fd(13)1909 b Fg(*)1860 27943
+y Fd(14)g Fg(*)581 b(dc\(i\)/dt)i(=)e(Kh*\(d/dx\)^2)i(c\(i\))f(+)f
+(V*dc\(i\)/dx)i(+)e(\(d/dy\)\(Kv\(y\)*dc\(i\)/dy\))1860
+29271 y Fd(15)1909 b Fg(*)9880 b(+)581 b(Ri\(c1,c2,t\))3489
+b(for)581 b(i)h(=)f(1,2,)1744 b(where)1860 30600 y Fd(16)1909
+b Fg(*)1744 b(R1\(c1,c2,t\))583 b(=)e(-q1*c1*c3)h(-)g(q2*c1*c2)g(+)f
+(2*q3\(t\)*c3)i(+)e(q4\(t\)*c2)i(,)1860 31928 y Fd(17)1909
+b Fg(*)1744 b(R2\(c1,c2,t\))583 b(=)1162 b(q1*c1*c3)582
+b(-)g(q2*c1*c2)g(-)f(q4\(t\)*c2)i(,)1860 33256 y Fd(18)1909
+b Fg(*)1744 b(Kv\(y\))582 b(=)f(Kv0*exp\(y/5\))i(,)1860
+34585 y Fd(19)1909 b Fg(*)581 b(Kh,)h(V,)f(Kv0,)h(q1,)g(q2,)f(and)h(c3)
+f(are)h(constants,)h(and)e(q3\(t\))h(and)g(q4\(t\))1860
+35913 y Fd(20)1909 b Fg(*)581 b(vary)h(diurnally.)h(The)e(problem)i(is)
+e(posed)h(on)f(the)h(square)1860 37241 y Fd(21)1909 b
+Fg(*)1744 b(0)581 b(<=)g(x)h(<=)f(20,)2325 b(30)582 b(<=)f(y)g(<=)h(50)
+1744 b(\(all)581 b(in)h(km\),)1860 38570 y Fd(22)1909
+b Fg(*)581 b(with)h(homogeneous)h(Neumann)f(boundary)h(conditions,)f
+(and)g(for)f(time)h(t)g(in)1860 39898 y Fd(23)1909 b
+Fg(*)1744 b(0)581 b(<=)g(t)h(<=)f(86400)h(sec)g(\(1)f(day\).)1860
+41227 y Fd(24)1909 b Fg(*)581 b(The)h(PDE)g(system)g(is)f(treated)h(by)
+g(central)g(differences)h(on)e(a)g(uniform)1860 42555
+y Fd(25)1909 b Fg(*)581 b(mesh,)h(with)g(simple)g(polynomial)h(initial)
+f(profiles.)1860 43883 y Fd(26)1909 b Fg(*)1860 45212
+y Fd(27)g Fg(*)581 b(The)h(problem)g(is)g(solved)g(by)f(CVODES)h(on)g
+(NPE)f(processors,)i(treated)1860 46540 y Fd(28)1909
+b Fg(*)581 b(as)h(a)f(rectangular)i(process)f(grid)g(of)f(size)h(NPEX)g
+(by)f(NPEY,)h(with)1860 47868 y Fd(29)1909 b Fg(*)581
+b(NPE)h(=)f(NPEX*NPEY.)i(Each)f(processor)g(contains)h(a)e(subgrid)h
+(of)f(size)1860 49197 y Fd(30)1909 b Fg(*)581 b(MXSUB)h(by)g(MYSUB)g
+(of)f(the)h(\(x,y\))g(mesh.)g(Thus)f(the)h(actual)g(mesh)g(sizes)1860
+50525 y Fd(31)1909 b Fg(*)581 b(are)h(MX)f(=)h(MXSUB*NPEX)g(and)g(MY)f
+(=)h(MYSUB*NPEY,)h(and)e(the)h(ODE)f(system)h(size)1860
+51853 y Fd(32)1909 b Fg(*)581 b(is)h(neq)f(=)h(2*MX*MY.)1860
+53182 y Fd(33)1909 b Fg(*)1860 54510 y Fd(34)g Fg(*)581
+b(The)h(solution)g(with)g(CVODES)g(is)g(done)f(with)h(the)g(BDF/GMRES)g
+(method)g(\(i.e.)1860 55838 y Fd(35)1909 b Fg(*)581 b(using)h(the)g
+(CVSPGMR)g(linear)g(solver\))g(and)g(the)g(block-diagonal)h(part)f(of)
+1860 57167 y Fd(36)1909 b Fg(*)581 b(the)h(Newton)g(matrix)g(as)g(a)f
+(left)h(preconditioner.)h(A)e(copy)h(of)f(the)1860 58495
+y Fd(37)1909 b Fg(*)581 b(block-diagonal)j(part)d(of)h(the)f(Jacobian)i
+(is)e(saved)h(and)g(conditionally)1860 59823 y Fd(38)1909
+b Fg(*)581 b(reused)h(within)h(the)e(Precond)h(routine.)1860
+61152 y Fd(39)1909 b Fg(*)1860 62480 y Fd(40)g Fg(*)581
+b(Performance)i(data)f(and)g(sampled)g(solution)g(values)g(are)g
+(printed)g(at)1860 63808 y Fd(41)1909 b Fg(*)581 b(selected)i(output)f
+(times,)g(and)f(all)h(performance)h(counters)f(are)g(printed)1860
+65137 y Fd(42)1909 b Fg(*)581 b(on)h(completion.)1860
+66465 y Fd(43)1909 b Fg(*)1860 67794 y Fd(44)g Fg(*)581
+b(Optionally,)i(CVODES)f(can)g(compute)g(sensitivities)h(with)f
+(respect)g(to)g(the)1860 69122 y Fd(45)1909 b Fg(*)581
+b(problem)i(parameters)f(q1)g(and)f(q2.)1860 70450 y
+Fd(46)1909 b Fg(*)581 b(Any)h(of)f(three)h(sensitivity)h(methods)f
+(\(SIMULTANEOUS,)i(STAGGERED,)e(and)1860 71779 y Fd(47)1909
+b Fg(*)581 b(STAGGERED1\))i(can)f(be)f(used)h(and)g(sensitivities)h
+(may)e(be)h(included)g(in)g(the)1860 73107 y Fd(48)1909
+b Fg(*)581 b(error)h(test)g(or)g(not)f(\(error)h(control)g(set)g(on)f
+(FULL)h(or)g(PARTIAL,)1860 74435 y Fd(49)1909 b Fg(*)581
+b(respectively\).)1860 75764 y Fd(50)1909 b Fg(*)1860
+77092 y Fd(51)g Fg(*)581 b(Execution:)1860 78420 y Fd(52)1909
+b Fg(*)p Black 27394 81741 a Ft(61)p Black eop
+%%Page: 62 66
+62 65 bop Black Black -2140 7638 a Fd(53)1909 b Fg(*)581
+b(Note:)h(This)g(version)g(uses)g(MPI)g(for)f(user)h(routines,)g(and)g
+(the)g(CVODES)-2140 8966 y Fd(54)1909 b Fg(*)4068 b(solver.)583
+b(In)e(what)h(follows,)g(N)f(is)h(the)f(number)h(of)g(processors,)-2140
+10295 y Fd(55)1909 b Fg(*)4068 b(N)582 b(=)f(NPEX*NPEY)h(\(see)g
+(constants)h(below\))f(and)f(it)h(is)f(assumed)h(that)-2140
+11623 y Fd(56)1909 b Fg(*)4068 b(the)582 b(MPI)g(script)g(mpirun)g(is)f
+(used)h(to)f(run)h(a)f(paralles)-2140 12951 y Fd(57)1909
+b Fg(*)4068 b(application.)-2140 14280 y Fd(58)1909 b
+Fg(*)581 b(If)h(no)f(sensitivities)i(are)f(desired:)-2140
+15608 y Fd(59)1909 b Fg(*)2325 b(\045)581 b(mpirun)h(-np)g(N)f(pvfkx)h
+(-nosensi)-2140 16936 y Fd(60)1909 b Fg(*)581 b(If)h(sensitivities)h
+(are)f(to)f(be)g(computed:)-2140 18265 y Fd(61)1909 b
+Fg(*)2325 b(\045)581 b(mpirun)h(-np)g(N)f(pvfkx)h(-sensi)g(sensi_meth)h
+(err_con)-2140 19593 y Fd(62)1909 b Fg(*)581 b(where)h(sensi_meth)h(is)
+e(one)h(of)f({sim,)h(stg,)g(stg1})g(and)g(err_con)g(is)f(one)h(of)-2140
+20922 y Fd(63)1909 b Fg(*)581 b({t,)h(f}.)-2140 22250
+y Fd(64)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)
+-2140 23578 y Fd(65)1909 b Fg(*/)-2140 24907 y Fd(66)-2140
+26235 y(67)1328 b Fg(#include)582 b(<stdio.h>)-2140 27563
+y Fd(68)1328 b Fg(#include)582 b(<stdlib.h>)-2140 28892
+y Fd(69)1328 b Fg(#include)582 b(<math.h>)-2140 30220
+y Fd(70)1328 b Fg(#include)582 b(<string.h>)-2140 31548
+y Fd(71)1328 b Fg(#include)582 b("sundialstypes.h")2327
+b(/*)582 b(def.)g(of)f(realtype)16855 b(*/)-2140 32877
+y Fd(72)1328 b Fg(#include)582 b("cvodes.h")6394 b(/*)582
+b(main)g(CVODES)g(header)g(file)12786 b(*/)-2140 34205
+y Fd(73)1328 b Fg(#include)582 b("iterative.h")4651 b(/*)582
+b(types)g(of)f(preconditioning)12207 b(*/)-2140 35533
+y Fd(74)1328 b Fg(#include)582 b("cvspgmr.h")5813 b(/*)582
+b(defs.)g(for)f(CVSPGMR)i(functions)f(and)g(constants)2326
+b(*/)-2140 36862 y Fd(75)1328 b Fg(#include)582 b("smalldense.h")4070
+b(/*)582 b(generic)g(DENSE)g(solver)g(used)g(in)f(preconditioning)j(*/)
+-2140 38190 y Fd(76)1328 b Fg(#include)582 b("nvector_parallel.h")i(/*)
+e(defs)g(of)f(paralel)h(NVECTOR)g(functions)h(and)f(macros)g(*/)-2140
+39518 y Fd(77)1328 b Fg(#include)582 b("sundialsmath.h")2908
+b(/*)582 b(contains)g(SQR)g(macro)15692 b(*/)-2140 40847
+y Fd(78)1328 b Fg(#include)582 b("mpi.h")-2140 42175
+y Fd(79)-2140 43504 y(80)-2140 44832 y(81)1328 b Fg(/*)581
+b(Problem)i(Constants)f(*/)-2140 46160 y Fd(82)-2140
+47489 y(83)1328 b Fg(#define)582 b(NVARS)2907 b(2)8136
+b(/*)581 b(number)h(of)g(species)11624 b(*/)-2140 48817
+y Fd(84)1328 b Fg(#define)582 b(C1_SCALE)1164 b(RCONST\(1.0e6\))g(/*)
+581 b(coefficients)i(in)f(initial)g(profiles)2907 b(*/)-2140
+50145 y Fd(85)1328 b Fg(#define)582 b(C2_SCALE)1164 b(RCONST\(1.0e12\))
+-2140 51474 y Fd(86)-2140 52802 y(87)1328 b Fg(#define)582
+b(T0)4650 b(RCONST\(0.0\))2326 b(/*)581 b(initial)i(time)14529
+b(*/)-2140 54130 y Fd(88)1328 b Fg(#define)582 b(NOUT)3488
+b(12)7555 b(/*)581 b(number)h(of)g(output)g(times)8718
+b(*/)-2140 55459 y Fd(89)1328 b Fg(#define)582 b(TWOHR)2907
+b(RCONST\(7200.0\))583 b(/*)e(number)h(of)g(seconds)g(in)f(two)h(hours)
+4069 b(*/)-2140 56787 y Fd(90)1328 b Fg(#define)582 b(HALFDAY)1745
+b(RCONST\(4.32e4\))583 b(/*)e(number)h(of)g(seconds)g(in)f(a)h(half)g
+(day)3487 b(*/)-2140 58115 y Fd(91)1328 b Fg(#define)582
+b(PI)4650 b(RCONST\(3.1415926535898\))1747 b(/*)581 b(pi)13948
+b(*/)-2140 59444 y Fd(92)-2140 60772 y(93)1328 b Fg(#define)582
+b(XMIN)3488 b(RCONST\(0.0\))2326 b(/*)581 b(grid)h(boundaries)h(in)e(x)
+9880 b(*/)-2140 62100 y Fd(94)1328 b Fg(#define)582 b(XMAX)3488
+b(RCONST\(20.0\))-2140 63429 y Fd(95)1328 b Fg(#define)582
+b(YMIN)3488 b(RCONST\(30.0\))1745 b(/*)581 b(grid)h(boundaries)h(in)e
+(y)9880 b(*/)-2140 64757 y Fd(96)1328 b Fg(#define)582
+b(YMAX)3488 b(RCONST\(50.0\))-2140 66086 y Fd(97)-2140
+67414 y(98)1328 b Fg(#define)582 b(NPEX)3488 b(2)8136
+b(/*)581 b(no.)h(PEs)g(in)f(x)g(direction)i(of)e(PE)h(array)1744
+b(*/)-2140 68742 y Fd(99)1328 b Fg(#define)582 b(NPEY)3488
+b(2)8136 b(/*)581 b(no.)h(PEs)g(in)f(y)g(direction)i(of)e(PE)h(array)
+1744 b(*/)-2546 70071 y Fd(100)20506 b Fg(/*)581 b(Total)h(no.)g(PEs)f
+(=)h(NPEX*NPEY)6975 b(*/)-2546 71399 y Fd(101)1328 b
+Fg(#define)582 b(MXSUB)2907 b(5)8136 b(/*)581 b(no.)h(x)f(points)h(per)
+g(subgrid)7556 b(*/)-2546 72727 y Fd(102)1328 b Fg(#define)582
+b(MYSUB)2907 b(5)8136 b(/*)581 b(no.)h(y)f(points)h(per)g(subgrid)7556
+b(*/)-2546 74056 y Fd(103)-2546 75384 y(104)1328 b Fg(#define)582
+b(MX)4650 b(\(NPEX*MXSUB\))1745 b(/*)581 b(MX)h(=)f(number)h(of)g(x)f
+(mesh)h(points)5231 b(*/)-2546 76712 y Fd(105)1328 b
+Fg(#define)582 b(MY)4650 b(\(NPEY*MYSUB\))1745 b(/*)581
+b(MY)h(=)f(number)h(of)g(y)f(mesh)h(points)5231 b(*/)-2546
+78041 y Fd(106)20506 b Fg(/*)581 b(Spatial)i(mesh)e(is)h(MX)f(by)h(MY)
+7555 b(*/)p Black 23394 81741 a Ft(62)p Black eop
+%%Page: 63 67
+63 66 bop Black Black 1454 7638 a Fd(107)1454 8966 y(108)1328
+b Fg(/*)581 b(CVodeMalloc)i(Constants)g(*/)1454 10295
+y Fd(109)1454 11623 y(110)1328 b Fg(#define)582 b(RTOL)3488
+b(RCONST\(1.0e-5\))583 b(/*)e(scalar)h(relative)h(tolerance)7556
+b(*/)1454 12951 y Fd(111)1328 b Fg(#define)582 b(FLOOR)2907
+b(RCONST\(100.0\))1164 b(/*)581 b(value)h(of)g(C1)f(or)h(C2)f(at)g
+(which)h(tols.)3488 b(*/)1454 14280 y Fd(112)20506 b
+Fg(/*)581 b(change)h(from)g(relative)g(to)g(absolute)3488
+b(*/)1454 15608 y Fd(113)1328 b Fg(#define)582 b(ATOL)3488
+b(\(RTOL*FLOOR\))1745 b(/*)581 b(scalar)h(absolute)h(tolerance)7556
+b(*/)1454 16936 y Fd(114)1454 18265 y(115)1328 b Fg(/*)581
+b(Sensitivity)i(constants)g(*/)1454 19593 y Fd(116)1328
+b Fg(#define)582 b(NP)4650 b(8)8136 b(/*)581 b(number)h(of)g(problem)g
+(parameters)5813 b(*/)1454 20922 y Fd(117)1328 b Fg(#define)582
+b(NS)4650 b(2)8136 b(/*)581 b(number)h(of)g(sensitivities)8719
+b(*/)1454 22250 y Fd(118)1454 23578 y(119)1328 b Fg(#define)582
+b(ZERO)3488 b(RCONST\(0.0\))1454 24907 y Fd(120)1454
+26235 y(121)1454 27563 y(122)1328 b Fg(/*)581 b(User-defined)i(matrix)f
+(accessor)h(macro:)f(IJth)g(*/)1454 28892 y Fd(123)1454
+30220 y(124)1328 b Fg(/*)581 b(IJth)h(is)g(defined)g(in)f(order)h(to)g
+(write)g(code)f(which)h(indexes)g(into)g(small)g(dense)1454
+31548 y Fd(125)3071 b Fg(matrices)583 b(with)f(a)f(\(row,column\))i
+(pair,)f(where)g(1)f(<=)g(row,column)i(<=)e(NVARS.)1454
+32877 y Fd(126)1454 34205 y(127)3071 b Fg(IJth\(a,i,j\))583
+b(references)g(the)e(\(i,j\)th)i(entry)f(of)f(the)h(small)f(matrix)i
+(realtype)f(**a,)1454 35533 y Fd(128)3071 b Fg(where)582
+b(1)g(<=)f(i,j)h(<=)f(NVARS.)h(The)g(small)g(matrix)g(routines)g(in)f
+(dense.h)1454 36862 y Fd(129)3071 b Fg(work)582 b(with)g(matrices)g
+(stored)g(by)g(column)g(in)f(a)h(2-dimensional)h(array.)f(In)f(C,)1454
+38190 y Fd(130)3071 b Fg(arrays)582 b(are)g(indexed)g(starting)h(at)e
+(0,)h(not)f(1.)h(*/)1454 39518 y Fd(131)1454 40847 y(132)1328
+b Fg(#define)582 b(IJth\(a,i,j\))4651 b(\(a[j-1][i-1]\))1454
+42175 y Fd(133)1454 43504 y(134)1328 b Fg(/*)581 b(Types)h(:)g
+(UserData)g(and)g(PreconData)1454 44832 y Fd(135)3071
+b Fg(contain)583 b(problem)f(parameters,)h(problem)f(constants,)g
+(preconditioner)i(blocks,)1454 46160 y Fd(136)3071 b
+Fg(pivot)582 b(arrays,)h(grid)e(constants,)i(and)f(processor)g(indices)
+g(*/)1454 47489 y Fd(137)1454 48817 y(138)1328 b Fg(typedef)582
+b(struct)g({)1454 50145 y Fd(139)2490 b Fg(realtype)583
+b(*p;)1454 51474 y Fd(140)2490 b Fg(realtype)583 b(q4,)e(om,)h(dx,)f
+(dy,)h(hdco,)g(haco,)g(vdco;)1454 52802 y Fd(141)2490
+b Fg(realtype)583 b(uext[NVARS*\(MXSUB+2\)*\(MYSUB+2\)];)1454
+54130 y Fd(142)2490 b Fg(long)582 b(int)g(my_pe,)g(isubx,)g(isuby,)g
+(nvmxsub,)g(nvmxsub2;)1454 55459 y Fd(143)2490 b Fg(MPI_Comm)583
+b(comm;)1454 56787 y Fd(144)1328 b Fg(})581 b(*UserData;)1454
+58115 y Fd(145)1454 59444 y(146)1328 b Fg(typedef)582
+b(struct)g({)1454 60772 y Fd(147)2490 b Fg(void)582 b(*f_data;)1454
+62100 y Fd(148)2490 b Fg(realtype)583 b(**P[MXSUB][MYSUB],)g
+(**Jbd[MXSUB][MYSUB];)1454 63429 y Fd(149)2490 b Fg(long)582
+b(int)g(*pivot[MXSUB][MYSUB];)1454 64757 y Fd(150)1328
+b Fg(})581 b(*PreconData;)1454 66086 y Fd(151)1454 67414
+y(152)1454 68742 y(153)1328 b Fg(/*)581 b(Functions)i(Called)f(by)f
+(the)h(CVODES)g(Solver)g(*/)1454 70071 y Fd(154)1454
+71399 y(155)1328 b Fg(static)582 b(void)g(f\(realtype)g(t,)g(N_Vector)g
+(u,)g(N_Vector)g(udot,)g(void)g(*f_data\);)1454 72727
+y Fd(156)1454 74056 y(157)1328 b Fg(static)582 b(int)g
+(Precond\(realtype)h(tn,)f(N_Vector)g(u,)g(N_Vector)g(fu,)1454
+75384 y Fd(158)12370 b Fg(booleantype)583 b(jok,)e(booleantype)i
+(*jcurPtr,)1454 76712 y Fd(159)12370 b Fg(realtype)582
+b(gamma,)g(void)g(*P_data,)1454 78041 y Fd(160)12370
+b Fg(N_Vector)582 b(vtemp1,)g(N_Vector)h(vtemp2,)f(N_Vector)g
+(vtemp3\);)p Black 27394 81741 a Ft(63)p Black eop
+%%Page: 64 68
+64 67 bop Black Black -2546 7638 a Fd(161)-2546 8966
+y(162)1328 b Fg(static)582 b(int)g(PSolve\(realtype)h(tn,)f(N_Vector)g
+(u,)f(N_Vector)i(fu,)-2546 10295 y Fd(163)11789 b Fg(N_Vector)582
+b(r,)f(N_Vector)i(z,)-2546 11623 y Fd(164)11789 b Fg(realtype)582
+b(gamma,)g(realtype)g(delta,)-2546 12951 y Fd(165)11789
+b Fg(int)581 b(lr,)h(void)g(*P_data,)g(N_Vector)g(vtemp\);)-2546
+14280 y Fd(166)-2546 15608 y(167)1328 b Fg(/*)581 b(Private)i(Helper)f
+(Functions)g(*/)-2546 16936 y Fd(168)-2546 18265 y(169)1328
+b Fg(static)582 b(void)g(ProcessArgs\(int)h(argc,)f(char)g(*argv[],)g
+(int)g(my_pe,)-2546 19593 y Fd(170)15276 b Fg(booleantype)582
+b(*sensi,)h(int)e(*sensi_meth,)i(booleantype)g(*err_con\);)-2546
+20922 y Fd(171)1328 b Fg(static)582 b(void)g(WrongArgs\(int)h(my_pe,)f
+(char)g(*name\);)-2546 22250 y Fd(172)-2546 23578 y(173)1328
+b Fg(static)582 b(PreconData)h(AllocPreconData\(UserData)h(data\);)
+-2546 24907 y Fd(174)1328 b Fg(static)582 b(void)g
+(FreePreconData\(PreconData)j(pdata\);)-2546 26235 y
+Fd(175)1328 b Fg(static)582 b(void)g(InitUserData\(int)h(my_pe,)f
+(MPI_Comm)h(comm,)f(UserData)g(data\);)-2546 27563 y
+Fd(176)1328 b Fg(static)582 b(void)g(SetInitialProfiles\(N_Vector)j(u,)
+c(UserData)i(data\);)-2546 28892 y Fd(177)-2546 30220
+y(178)1328 b Fg(static)582 b(void)g(BSend\(MPI_Comm)h(comm,)f(int)g
+(my_pe,)g(long)f(int)h(isubx,)-2546 31548 y Fd(179)11789
+b Fg(long)581 b(int)h(isuby,)g(long)g(int)f(dsizex,)-2546
+32877 y Fd(180)11789 b Fg(long)581 b(int)h(dsizey,)g(realtype)h
+(udata[]\);)-2546 34205 y Fd(181)1328 b Fg(static)582
+b(void)g(BRecvPost\(MPI_Comm)i(comm,)e(MPI_Request)g(request[],)h(int)f
+(my_pe,)-2546 35533 y Fd(182)14113 b Fg(long)582 b(int)g(isubx,)g(long)
+f(int)h(isuby,)-2546 36862 y Fd(183)14113 b Fg(long)582
+b(int)g(dsizex,)g(long)g(int)f(dsizey,)-2546 38190 y
+Fd(184)14113 b Fg(realtype)583 b(uext[],)f(realtype)g(buffer[]\);)-2546
+39518 y Fd(185)1328 b Fg(static)582 b(void)g(BRecvWait\(MPI_Request)i
+(request[],)f(long)e(int)h(isubx,)g(long)g(int)f(isuby,)-2546
+40847 y Fd(186)14113 b Fg(long)582 b(int)g(dsizex,)g(realtype)g
+(uext[],)g(realtype)h(buffer[]\);)-2546 42175 y Fd(187)1328
+b Fg(static)582 b(void)g(ucomm\(realtype)h(t,)e(N_Vector)i(u,)e
+(UserData)i(data\);)-2546 43504 y Fd(188)1328 b Fg(static)582
+b(void)g(fcalc\(realtype)h(t,)e(realtype)i(udata[],)f(realtype)g
+(dudata[],)h(UserData)f(data\);)-2546 44832 y Fd(189)-2546
+46160 y(190)1328 b Fg(static)582 b(void)g(PrintOutput\(void)h
+(*cvode_mem,)g(int)f(my_pe,)g(MPI_Comm)g(comm,)-2546
+47489 y Fd(191)15276 b Fg(realtype)582 b(t,)f(N_Vector)i(u\);)-2546
+48817 y Fd(192)1328 b Fg(static)582 b(void)g(PrintOutputS\(int)h
+(my_pe,)f(MPI_Comm)h(comm,)f(N_Vector)g(*uS\);)-2546
+50145 y Fd(193)1328 b Fg(static)582 b(void)g(PrintFinalStats\(void)i
+(*cvode_mem,)f(booleantype)f(sensi\);)-2546 51474 y Fd(194)1328
+b Fg(static)582 b(int)g(check_flag\(void)h(*flagvalue,)g(char)f
+(*funcname,)g(int)g(opt,)g(int)f(id\);)-2546 52802 y
+Fd(195)-2546 54130 y(196)1328 b Fg(/*)-2546 55459 y Fd(197)1909
+b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 56787 y Fd(198)g Fg(*)581 b(MAIN)h(PROGRAM)-2546
+58115 y Fd(199)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 59444 y Fd(200)g Fg(*/)-2546 60772 y Fd(201)-2546
+62100 y(202)1328 b Fg(int)582 b(main\(int)g(argc,)g(char)g(*argv[]\))
+-2546 63429 y Fd(203)1328 b Fg({)-2546 64757 y Fd(204)2490
+b Fg(realtype)583 b(abstol,)f(reltol,)g(t,)f(tout;)-2546
+66086 y Fd(205)2490 b Fg(N_Vector)583 b(u;)-2546 67414
+y Fd(206)2490 b Fg(UserData)583 b(data;)-2546 68742 y
+Fd(207)2490 b Fg(PreconData)583 b(predata;)-2546 70071
+y Fd(208)2490 b Fg(void)582 b(*cvode_mem;)-2546 71399
+y Fd(209)2490 b Fg(int)582 b(iout,)g(flag,)g(my_pe,)g(npes;)-2546
+72727 y Fd(210)2490 b Fg(long)582 b(int)g(neq,)f(local_N;)-2546
+74056 y Fd(211)2490 b Fg(MPI_Comm)583 b(comm;)-2546 75384
+y Fd(212)-2546 76712 y(213)2490 b Fg(realtype)583 b(*pbar;)-2546
+78041 y Fd(214)2490 b Fg(int)582 b(is,)f(*plist;)p Black
+23394 81741 a Ft(64)p Black eop
+%%Page: 65 69
+65 68 bop Black Black 1454 7638 a Fd(215)2490 b Fg(N_Vector)583
+b(*uS;)1454 8966 y Fd(216)2490 b Fg(booleantype)583 b(sensi,)f
+(err_con;)1454 10295 y Fd(217)2490 b Fg(int)582 b(sensi_meth;)1454
+11623 y Fd(218)1454 12951 y(219)2490 b Fg(u)582 b(=)f(NULL;)1454
+14280 y Fd(220)2490 b Fg(data)582 b(=)f(NULL;)1454 15608
+y Fd(221)2490 b Fg(predata)582 b(=)g(NULL;)1454 16936
+y Fd(222)2490 b Fg(cvode_mem)583 b(=)e(NULL;)1454 18265
+y Fd(223)2490 b Fg(pbar)582 b(=)f(NULL;)1454 19593 y
+Fd(224)2490 b Fg(plist)582 b(=)f(NULL;)1454 20922 y Fd(225)2490
+b Fg(uS)582 b(=)f(NULL;)1454 22250 y Fd(226)1454 23578
+y(227)2490 b Fg(/*)582 b(Set)f(problem)i(size)e(neq)h(*/)1454
+24907 y Fd(228)2490 b Fg(neq)582 b(=)f(NVARS*MX*MY;)1454
+26235 y Fd(229)1454 27563 y(230)2490 b Fg(/*)582 b(Get)f(processor)i
+(number)f(and)f(total)h(number)g(of)g(pe's)g(*/)1454
+28892 y Fd(231)2490 b Fg(MPI_Init\(&argc,)584 b(&argv\);)1454
+30220 y Fd(232)2490 b Fg(comm)582 b(=)f(MPI_COMM_WORLD;)1454
+31548 y Fd(233)2490 b Fg(MPI_Comm_size\(comm,)584 b(&npes\);)1454
+32877 y Fd(234)2490 b Fg(MPI_Comm_rank\(comm,)584 b(&my_pe\);)1454
+34205 y Fd(235)1454 35533 y(236)2490 b Fg(if)582 b(\(npes)g(!=)f
+(NPEX*NPEY\))i({)1454 36862 y Fd(237)3653 b Fg(if)581
+b(\(my_pe)h(==)g(0\))1454 38190 y Fd(238)4815 b Fg(fprintf\(stderr,)
+1454 39518 y Fd(239)9464 b Fg("\\nMPI_ERROR\(0\):)584
+b(npes)d(=)h(\045d)f(is)h(not)f(equal)h(to)f(NPEX*NPEY)i(=)e
+(\045d\\n\\n",)1454 40847 y Fd(240)9464 b Fg(npes,)582
+b(NPEX*NPEY\);)1454 42175 y Fd(241)3653 b Fg(MPI_Finalize\(\);)1454
+43504 y Fd(242)g Fg(return\(1\);)1454 44832 y Fd(243)2490
+b Fg(})1454 46160 y Fd(244)1454 47489 y(245)g Fg(/*)582
+b(Process)g(arguments)g(*/)1454 48817 y Fd(246)2490 b
+Fg(ProcessArgs\(argc,)584 b(argv,)e(my_pe,)g(&sensi,)g(&sensi_meth,)h
+(&err_con\);)1454 50145 y Fd(247)1454 51474 y(248)2490
+b Fg(/*)582 b(Set)f(local)h(length)g(*/)1454 52802 y
+Fd(249)2490 b Fg(local_N)582 b(=)g(NVARS*MXSUB*MYSUB;)1454
+54130 y Fd(250)1454 55459 y(251)2490 b Fg(/*)582 b(Allocate)g(and)g
+(load)f(user)h(data)g(block;)g(allocate)g(preconditioner)i(block)d(*/)
+1454 56787 y Fd(252)2490 b Fg(data)582 b(=)f(\(UserData\))i
+(malloc\(sizeof)g(*data\);)1454 58115 y Fd(253)2490 b
+Fg(data->p)582 b(=)g(NULL;)1454 59444 y Fd(254)2490 b
+Fg(if)582 b(\(check_flag\(\(void)h(*\)data,)g("malloc",)f(2,)g
+(my_pe\)\))g(MPI_Abort\(comm,)h(1\);)1454 60772 y Fd(255)2490
+b Fg(data->p)582 b(=)g(\(realtype)g(*\))g
+(malloc\(NP*sizeof\(realtype\)\);)1454 62100 y Fd(256)2490
+b Fg(if)582 b(\(check_flag\(\(void)h(*\)data->p,)g("malloc",)g(2,)e
+(my_pe\)\))h(MPI_Abort\(comm,)i(1\);)1454 63429 y Fd(257)2490
+b Fg(InitUserData\(my_pe,)584 b(comm,)e(data\);)1454
+64757 y Fd(258)2490 b Fg(predata)582 b(=)g(AllocPreconData)h(\(data\);)
+1454 66086 y Fd(259)2490 b Fg(if)582 b(\(check_flag\(\(void)h
+(*\)predata,)g("AllocPreconData",)h(2,)d(my_pe\)\))i(MPI_Abort\(comm,)g
+(1\);)1454 67414 y Fd(260)1454 68742 y(261)2490 b Fg(/*)582
+b(Allocate)g(u,)g(and)f(set)h(initial)g(values)g(and)g(tolerances)g(*/)
+1454 70071 y Fd(262)2490 b Fg(u)582 b(=)f(N_VNew_Parallel\(comm,)j
+(local_N,)f(neq\);)1454 71399 y Fd(263)2490 b Fg(if)582
+b(\(check_flag\(\(void)h(*\)u,)f("N_VNew_Parallel",)i(0,)d(my_pe\)\))i
+(MPI_Abort\(comm,)g(1\);)1454 72727 y Fd(264)2490 b Fg
+(SetInitialProfiles\(u,)585 b(data\);)1454 74056 y Fd(265)2490
+b Fg(abstol)582 b(=)g(ATOL;)g(reltol)g(=)f(RTOL;)1454
+75384 y Fd(266)1454 76712 y(267)2490 b Fg(/*)582 b(Create)g(CVODES)g
+(object,)g(set)g(optional)g(input,)g(allocate)g(memory)g(*/)1454
+78041 y Fd(268)2490 b Fg(cvode_mem)583 b(=)e(CVodeCreate\(CV_BDF,)j
+(CV_NEWTON\);)p Black 27394 81741 a Ft(65)p Black eop
+%%Page: 66 70
+66 69 bop Black Black -2546 7638 a Fd(269)2490 b Fg(if)582
+b(\(check_flag\(\(void)h(*\)cvode_mem,)g("CVodeCreate",)h(0,)d
+(my_pe\)\))h(MPI_Abort\(comm,)i(1\);)-2546 8966 y Fd(270)-2546
+10295 y(271)2490 b Fg(flag)582 b(=)f(CVodeSetFdata\(cvode_mem,)k
+(data\);)-2546 11623 y Fd(272)2490 b Fg(if)582 b(\(check_flag\(&flag,)i
+("CVodeSetFdata",)f(1,)f(my_pe\)\))g(MPI_Abort\(comm,)h(1\);)-2546
+12951 y Fd(273)-2546 14280 y(274)2490 b Fg(flag)582 b(=)f
+(CVodeSetMaxNumSteps\(cvode_mem,)586 b(2000\);)-2546
+15608 y Fd(275)2490 b Fg(if)582 b(\(check_flag\(&flag,)i
+("CVodeSetMaxNumSteps",)g(1,)d(my_pe\)\))i(MPI_Abort\(comm,)g(1\);)
+-2546 16936 y Fd(276)-2546 18265 y(277)2490 b Fg(flag)582
+b(=)f(CVodeMalloc\(cvode_mem,)k(f,)c(T0,)h(u,)f(CV_SS,)h(reltol,)g
+(&abstol\);)-2546 19593 y Fd(278)2490 b Fg(if)582 b
+(\(check_flag\(&flag,)i("CVodeMalloc",)f(1,)e(my_pe\)\))h
+(MPI_Abort\(comm,)i(1\);)-2546 20922 y Fd(279)-2546 22250
+y(280)2490 b Fg(/*)582 b(Attach)g(linear)g(solver)g(CVSPGMR)g(*/)-2546
+23578 y Fd(281)2490 b Fg(flag)582 b(=)f(CVSpgmr\(cvode_mem,)j
+(PREC_LEFT,)f(0\);)-2546 24907 y Fd(282)2490 b Fg(if)582
+b(\(check_flag\(&flag,)i("CVSpgmr",)e(1,)g(my_pe\)\))g
+(MPI_Abort\(comm,)h(1\);)-2546 26235 y Fd(283)-2546 27563
+y(284)2490 b Fg(flag)582 b(=)f(CVSpgmrSetPreconditioner\(cvode_mem,)587
+b(Precond,)582 b(PSolve,)g(predata\);)-2546 28892 y Fd(285)2490
+b Fg(if)582 b(\(check_flag\(&flag,)i("CVSpgmrSetPreconditioner",)h(1,)c
+(my_pe\)\))h(MPI_Abort\(comm,)i(1\);)-2546 30220 y Fd(286)-2546
+31548 y(287)2490 b Fg(if\(my_pe)583 b(==)e(0\))-2546
+32877 y Fd(288)3653 b Fg(printf\("\\n2-species)584 b(diurnal)e
+(advection-diffusion)i(problem\\n"\);)-2546 34205 y Fd(289)-2546
+35533 y(290)2490 b Fg(/*)582 b(Sensitivity-related)i(settings)e(*/)
+-2546 36862 y Fd(291)2490 b Fg(if\()582 b(sensi\))g({)-2546
+38190 y Fd(292)-2546 39518 y(293)3653 b Fg(plist)581
+b(=)h(\(int)g(*\))f(malloc\(NS)h(*)g(sizeof\(int\)\);)-2546
+40847 y Fd(294)3653 b Fg(if)581 b(\(check_flag\(\(void)j(*\)plist,)e
+("malloc",)h(2,)e(my_pe\)\))h(MPI_Abort\(comm,)i(1\);)-2546
+42175 y Fd(295)3653 b Fg(for)581 b(\(is=0;)h(is<NS;)g(is++\))g
+(plist[is])h(=)e(is+1;)-2546 43504 y Fd(296)-2546 44832
+y(297)3653 b Fg(pbar)581 b(=)h(\(realtype)g(*\))g
+(malloc\(NS*sizeof\(realtype\)\);)-2546 46160 y Fd(298)3653
+b Fg(if)581 b(\(check_flag\(\(void)j(*\)pbar,)e("malloc",)g(2,)g
+(my_pe\)\))g(MPI_Abort\(comm,)h(1\);)-2546 47489 y Fd(299)3653
+b Fg(for)581 b(\(is=0;)h(is<NS;)g(is++\))g(pbar[is])h(=)e
+(data->p[plist[is]-1];)-2546 48817 y Fd(300)-2546 50145
+y(301)3653 b Fg(uS)581 b(=)g(N_VNewVectorArray_Parallel\(NS,)586
+b(comm,)c(local_N,)g(neq\);)-2546 51474 y Fd(302)3653
+b Fg(if)581 b(\(check_flag\(\(void)j(*\)uS,)e
+("N_VNewVectorArray_Parallel",)j(0,)d(my_pe\)\))g(MPI_Abort\(comm,)h
+(1\);)-2546 52802 y Fd(303)3653 b Fg(for)581 b(\(is)h(=)f(0;)h(is)f(<)g
+(NS;)h(is++\))-2546 54130 y Fd(304)4815 b Fg(N_VConst\(ZERO,uS[is]\);)
+-2546 55459 y Fd(305)-2546 56787 y(306)3653 b Fg(flag)581
+b(=)h(CVodeSensMalloc\(cvode_mem,)j(NS,)c(sensi_meth,)i(uS\);)-2546
+58115 y Fd(307)3653 b Fg(if)581 b(\(check_flag\(&flag,)j
+("CVodeSensMalloc",)g(1,)d(my_pe\)\))h(MPI_Abort\(comm,)i(1\);)-2546
+59444 y Fd(308)-2546 60772 y(309)3653 b Fg(flag)581 b(=)h
+(CVodeSetSensErrCon\(cvode_mem,)j(err_con\);)-2546 62100
+y Fd(310)3653 b Fg(if)581 b(\(check_flag\(&flag,)j
+("CVodeSetSensErrCon",)g(1,)e(my_pe\)\))g(MPI_Abort\(comm,)h(1\);)-2546
+63429 y Fd(311)-2546 64757 y(312)3653 b Fg(flag)581 b(=)h
+(CVodeSetSensRho\(cvode_mem,)j(ZERO\);)-2546 66086 y
+Fd(313)3653 b Fg(if)581 b(\(check_flag\(&flag,)j("CVodeSetSensRho",)g
+(1,)d(my_pe\)\))h(MPI_Abort\(comm,)i(1\);)-2546 67414
+y Fd(314)-2546 68742 y(315)3653 b Fg(flag)581 b(=)h
+(CVodeSetSensParams\(cvode_mem,)j(data->p,)d(pbar,)g(plist\);)-2546
+70071 y Fd(316)3653 b Fg(if)581 b(\(check_flag\(&flag,)j
+("CVodeSetSensParams",)g(1,)e(my_pe\)\))g(MPI_Abort\(comm,)h(1\);)-2546
+71399 y Fd(317)-2546 72727 y(318)3653 b Fg(if\(my_pe)582
+b(==)f(0\))h({)-2546 74056 y Fd(319)4815 b Fg(printf\("Sensitivity:)584
+b(YES)e("\);)-2546 75384 y Fd(320)4815 b Fg(if\(sensi_meth)583
+b(==)e(CV_SIMULTANEOUS\))-2546 76712 y Fd(321)5977 b
+Fg(printf\("\()583 b(SIMULTANEOUS)g(+"\);)-2546 78041
+y Fd(322)4815 b Fg(else)p Black 23394 81741 a Ft(66)p
+Black eop
+%%Page: 67 71
+67 70 bop Black Black 1454 7638 a Fd(323)5977 b Fg(if\(sensi_meth)583
+b(==)f(CV_STAGGERED\))h(printf\("\()f(STAGGERED)h(+"\);)1454
+8966 y Fd(324)5977 b Fg(else)15692 b(printf\("\()582
+b(STAGGERED1)h(+"\);)1454 10295 y Fd(325)4815 b Fg(if\(err_con\))583
+b(printf\(")f(FULL)g(ERROR)g(CONTROL)g(\)"\);)1454 11623
+y Fd(326)4815 b Fg(else)4650 b(printf\(")582 b(PARTIAL)g(ERROR)g
+(CONTROL)g(\)"\);)1454 12951 y Fd(327)3653 b Fg(})1454
+14280 y Fd(328)1454 15608 y(329)2490 b Fg(})582 b(else)f({)1454
+16936 y Fd(330)1454 18265 y(331)3653 b Fg(if\(my_pe)582
+b(==)f(0\))h(printf\("Sensitivity:)i(NO)d("\);)1454 19593
+y Fd(332)1454 20922 y(333)2490 b Fg(})1454 22250 y Fd(334)1454
+23578 y(335)g Fg(if)582 b(\(my_pe)g(==)f(0\))h({)1454
+24907 y Fd(336)3653 b Fg(printf\("\\n\\n"\);)1454 26235
+y Fd(337)g Fg
+(printf\("==========================================================)p
+(==============\\n"\);)1454 27563 y Fd(338)g Fg(printf\(")2907
+b(T)e(Q)4069 b(H)3487 b(NST)11623 b(Bottom)582 b(left)1163
+b(Top)582 b(right)g(\\n"\);)1454 28892 y Fd(339)3653
+b Fg
+(printf\("==========================================================)p
+(==============\\n"\);)1454 30220 y Fd(340)2490 b Fg(})1454
+31548 y Fd(341)1454 32877 y(342)g Fg(/*)582 b(In)f(loop)h(over)g
+(output)g(points,)g(call)g(CVode,)g(print)g(results,)g(test)g(for)f
+(error)h(*/)1454 34205 y Fd(343)2490 b Fg(for)582 b(\(iout=1,)g(tout)g
+(=)f(TWOHR;)h(iout)g(<=)g(NOUT;)f(iout++,)i(tout)e(+=)h(TWOHR\))g({)
+1454 35533 y Fd(344)3653 b Fg(flag)581 b(=)h(CVode\(cvode_mem,)h(tout,)
+f(u,)g(&t,)f(CV_NORMAL\);)1454 36862 y Fd(345)3653 b
+Fg(if)581 b(\(check_flag\(&flag,)j("CVode",)e(1,)g(my_pe\)\))g(break;)
+1454 38190 y Fd(346)3653 b Fg(PrintOutput\(cvode_mem,)584
+b(my_pe,)e(comm,)g(t,)f(u\);)1454 39518 y Fd(347)3653
+b Fg(if)581 b(\(sensi\))h({)1454 40847 y Fd(348)4815
+b Fg(flag)582 b(=)f(CVodeGetSens\(cvode_mem,)k(t,)c(uS\);)1454
+42175 y Fd(349)4815 b Fg(if)581 b(\(check_flag\(&flag,)j
+("CVodeGetSens",)g(1,)d(my_pe\)\))h(break;)1454 43504
+y Fd(350)4815 b Fg(PrintOutputS\(my_pe,)584 b(comm,)e(uS\);)1454
+44832 y Fd(351)3653 b Fg(})1454 46160 y Fd(352)g Fg(if)581
+b(\(my_pe)h(==)g(0\))1454 47489 y Fd(353)4815 b Fg
+(printf\("----------------------------------------------------------)p
+(--------------\\n"\);)1454 48817 y Fd(354)2490 b Fg(})1454
+50145 y Fd(355)1454 51474 y(356)g Fg(/*)582 b(Print)g(final)g
+(statistics)g(*/)1454 52802 y Fd(357)2490 b Fg(if)582
+b(\(my_pe)g(==)f(0\))h(PrintFinalStats\(cvode_mem,)j(sensi\);)1454
+54130 y Fd(358)1454 55459 y(359)2490 b Fg(/*)582 b(Free)f(memory)i(*/)
+1454 56787 y Fd(360)2490 b Fg(N_VDestroy_Parallel\(u\);)1454
+58115 y Fd(361)g Fg(if)582 b(\(sensi\))g({)1454 59444
+y Fd(362)3653 b Fg(N_VDestroyVectorArray_Parallel\(uS,)586
+b(NS\);)1454 60772 y Fd(363)3653 b Fg(free\(plist\);)1454
+62100 y Fd(364)g Fg(free\(pbar\);)1454 63429 y Fd(365)2490
+b Fg(})1454 64757 y Fd(366)g Fg(free\(data->p\);)1454
+66086 y Fd(367)g Fg(free\(data\);)1454 67414 y Fd(368)g
+Fg(FreePreconData\(predata\);)1454 68742 y Fd(369)g Fg
+(CVodeFree\(cvode_mem\);)1454 70071 y Fd(370)1454 71399
+y(371)g Fg(MPI_Finalize\(\);)1454 72727 y Fd(372)1454
+74056 y(373)g Fg(return\(0\);)1454 75384 y Fd(374)1328
+b Fg(})1454 76712 y Fd(375)1454 78041 y(376)g Fg(/*)p
+Black 27394 81741 a Ft(67)p Black eop
+%%Page: 68 72
+68 71 bop Black Black -2546 7638 a Fd(377)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 8966 y Fd(378)g Fg(*)581 b(FUNCTIONS)i(CALLED)f(BY)f(CVODES)
+-2546 10295 y Fd(379)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 11623 y Fd(380)g Fg(*/)-2546 12951 y Fd(381)-2546
+14280 y(382)1328 b Fg(/*)-2546 15608 y Fd(383)1909 b
+Fg(*)581 b(f)h(routine.)1163 b(Evaluate)583 b(f\(t,y\).)1163
+b(First)582 b(call)g(ucomm)f(to)h(do)f(communication)i(of)-2546
+16936 y Fd(384)1909 b Fg(*)581 b(subgrid)i(boundary)f(data)g(into)f
+(uext.)1164 b(Then)581 b(calculate)i(f)e(by)g(a)h(call)g(to)f(fcalc.)
+-2546 18265 y Fd(385)1909 b Fg(*/)-2546 19593 y Fd(386)-2546
+20922 y(387)1328 b Fg(static)582 b(void)g(f\(realtype)g(t,)g(N_Vector)g
+(u,)g(N_Vector)g(udot,)g(void)g(*f_data\))-2546 22250
+y Fd(388)1328 b Fg({)-2546 23578 y Fd(389)2490 b Fg(realtype)583
+b(*udata,)f(*dudata;)-2546 24907 y Fd(390)2490 b Fg(UserData)583
+b(data;)-2546 26235 y Fd(391)-2546 27563 y(392)2490 b
+Fg(udata)582 b(=)f(NV_DATA_P\(u\);)-2546 28892 y Fd(393)2490
+b Fg(dudata)582 b(=)g(NV_DATA_P\(udot\);)-2546 30220
+y Fd(394)2490 b Fg(data)582 b(=)f(\(UserData\))i(f_data;)-2546
+31548 y Fd(395)-2546 32877 y(396)2490 b Fg(/*)582 b(Call)f(ucomm)h(to)g
+(do)f(inter-processor)j(communicaiton)f(*/)-2546 34205
+y Fd(397)2490 b Fg(ucomm)582 b(\(t,)g(u,)f(data\);)-2546
+35533 y Fd(398)-2546 36862 y(399)2490 b Fg(/*)582 b(Call)f(fcalc)h(to)g
+(calculate)g(all)g(right-hand)h(sides)e(*/)-2546 38190
+y Fd(400)2490 b Fg(fcalc)582 b(\(t,)g(udata,)g(dudata,)g(data\);)-2546
+39518 y Fd(401)1328 b Fg(})-2546 40847 y Fd(402)-2546
+42175 y(403)g Fg(/*)-2546 43504 y Fd(404)1909 b Fg(*)581
+b(Preconditioner)j(setup)e(routine.)g(Generate)g(and)g(preprocess)g(P.)
+-2546 44832 y Fd(405)1909 b Fg(*/)-2546 46160 y Fd(406)-2546
+47489 y(407)1328 b Fg(static)582 b(int)g(Precond\(realtype)h(tn,)f
+(N_Vector)g(u,)g(N_Vector)g(fu,)-2546 48817 y Fd(408)12370
+b Fg(booleantype)583 b(jok,)e(booleantype)i(*jcurPtr,)-2546
+50145 y Fd(409)12370 b Fg(realtype)582 b(gamma,)g(void)g(*P_data,)-2546
+51474 y Fd(410)12370 b Fg(N_Vector)582 b(vtemp1,)g(N_Vector)h(vtemp2,)f
+(N_Vector)g(vtemp3\))-2546 52802 y Fd(411)1328 b Fg({)-2546
+54130 y Fd(412)2490 b Fg(realtype)583 b(c1,)e(c2,)h(cydn,)g(cyup,)g
+(diag,)g(ydn,)f(yup,)h(q4coef,)g(dely,)g(verdco,)g(hordco;)-2546
+55459 y Fd(413)2490 b Fg(realtype)583 b(**\(*P\)[MYSUB],)g
+(**\(*Jbd\)[MYSUB];)-2546 56787 y Fd(414)2490 b Fg(int)582
+b(ier;)-2546 58115 y Fd(415)2490 b Fg(long)582 b(int)g(nvmxsub,)g
+(*\(*pivot\)[MYSUB],)i(offset;)-2546 59444 y Fd(416)2490
+b Fg(int)582 b(lx,)f(ly,)h(jx,)g(jy,)f(isubx,)h(isuby;)-2546
+60772 y Fd(417)2490 b Fg(realtype)583 b(*udata,)f(**a,)g(**j;)-2546
+62100 y Fd(418)2490 b Fg(PreconData)583 b(predata;)-2546
+63429 y Fd(419)2490 b Fg(UserData)583 b(data;)-2546 64757
+y Fd(420)2490 b Fg(realtype)583 b(Q1,)e(Q2,)h(C3,)f(A3,)h(A4,)g(KH,)f
+(VEL,)h(KV0;)-2546 66086 y Fd(421)-2546 67414 y(422)2490
+b Fg(/*)582 b(Make)f(local)h(copies)g(of)g(pointers)g(in)g(P_data,)g
+(pointer)g(to)f(u's)h(data,)-2546 68742 y Fd(423)4234
+b Fg(and)581 b(PE)h(index)g(pair)f(*/)-2546 70071 y Fd(424)2490
+b Fg(predata)582 b(=)g(\(PreconData\))h(P_data;)-2546
+71399 y Fd(425)2490 b Fg(data)582 b(=)f(\(UserData\))i
+(\(predata->f_data\);)-2546 72727 y Fd(426)2490 b Fg(P)582
+b(=)f(predata->P;)-2546 74056 y Fd(427)2490 b Fg(Jbd)582
+b(=)f(predata->Jbd;)-2546 75384 y Fd(428)2490 b Fg(pivot)582
+b(=)f(predata->pivot;)-2546 76712 y Fd(429)2490 b Fg(udata)582
+b(=)f(NV_DATA_P\(u\);)-2546 78041 y Fd(430)2490 b Fg(isubx)582
+b(=)f(data->isubx;)1746 b(isuby)582 b(=)f(data->isuby;)p
+Black 23394 81741 a Ft(68)p Black eop
+%%Page: 69 73
+69 72 bop Black Black 1454 7638 a Fd(431)2490 b Fg(nvmxsub)582
+b(=)g(data->nvmxsub;)1454 8966 y Fd(432)1454 10295 y(433)2490
+b Fg(/*)582 b(Load)f(problem)i(coefficients)g(and)e(parameters)i(*/)
+1454 11623 y Fd(434)2490 b Fg(Q1)582 b(=)f(data->p[0];)1454
+12951 y Fd(435)2490 b Fg(Q2)582 b(=)f(data->p[1];)1454
+14280 y Fd(436)2490 b Fg(C3)582 b(=)f(data->p[2];)1454
+15608 y Fd(437)2490 b Fg(A3)582 b(=)f(data->p[3];)1454
+16936 y Fd(438)2490 b Fg(A4)582 b(=)f(data->p[4];)1454
+18265 y Fd(439)2490 b Fg(KH)582 b(=)f(data->p[5];)1454
+19593 y Fd(440)2490 b Fg(VEL)582 b(=)f(data->p[6];)1454
+20922 y Fd(441)2490 b Fg(KV0)582 b(=)f(data->p[7];)1454
+22250 y Fd(442)1454 23578 y(443)2490 b Fg(if)582 b(\(jok\))g({)1162
+b(/*)582 b(jok)f(=)g(TRUE:)h(Copy)g(Jbd)g(to)f(P)g(*/)1454
+24907 y Fd(444)1454 26235 y(445)3653 b Fg(for)581 b(\(ly)h(=)f(0;)h(ly)
+f(<)g(MYSUB;)h(ly++\))1454 27563 y Fd(446)4815 b Fg(for)581
+b(\(lx)h(=)f(0;)h(lx)f(<)h(MXSUB;)g(lx++\))1454 28892
+y Fd(447)5977 b Fg(dencopy\(Jbd[lx][ly],)584 b(P[lx][ly],)f(NVARS\);)
+1454 30220 y Fd(448)3653 b Fg(*jcurPtr)582 b(=)f(FALSE;)1454
+31548 y Fd(449)1454 32877 y(450)2490 b Fg(})582 b(else)f({)2325
+b(/*)582 b(jok)f(=)g(FALSE:)h(Generate)h(Jbd)e(from)h(scratch)g(and)g
+(copy)g(to)f(P)g(*/)1454 34205 y Fd(451)1454 35533 y(452)3653
+b Fg(/*)581 b(Make)h(local)g(copies)g(of)f(problem)h(variables,)h(for)f
+(efficiency)g(*/)1454 36862 y Fd(453)3653 b Fg(q4coef)582
+b(=)f(data->q4;)1454 38190 y Fd(454)3653 b Fg(dely)581
+b(=)h(data->dy;)1454 39518 y Fd(455)3653 b Fg(verdco)582
+b(=)f(data->vdco;)1454 40847 y Fd(456)3653 b Fg(hordco)1163
+b(=)581 b(data->hdco;)1454 42175 y Fd(457)1454 43504
+y(458)3653 b Fg(/*)581 b(Compute)h(2x2)g(diagonal)g(Jacobian)h(blocks)f
+(\(using)g(q4)f(values)1454 44832 y Fd(459)5396 b Fg(computed)582
+b(on)g(the)f(last)h(f)f(call\).)1164 b(Load)581 b(into)h(P.)g(*/)1454
+46160 y Fd(460)3653 b Fg(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))g({)1454 47489 y Fd(461)4815 b Fg(jy)581 b(=)h(ly)f(+)g
+(isuby*MYSUB;)1454 48817 y Fd(462)4815 b Fg(ydn)581 b(=)h(YMIN)g(+)f
+(\(jy)g(-)h(RCONST\(0.5\)\)*dely;)1454 50145 y Fd(463)4815
+b Fg(yup)581 b(=)h(ydn)f(+)h(dely;)1454 51474 y Fd(464)4815
+b Fg(cydn)582 b(=)f(verdco*exp\(RCONST\(0.2\)*ydn\);)1454
+52802 y Fd(465)4815 b Fg(cyup)582 b(=)f
+(verdco*exp\(RCONST\(0.2\)*yup\);)1454 54130 y Fd(466)4815
+b Fg(diag)582 b(=)f(-\(cydn)h(+)f(cyup)h(+)f(RCONST\(2.0\)*hordco\);)
+1454 55459 y Fd(467)4815 b Fg(for)581 b(\(lx)h(=)f(0;)h(lx)f(<)h
+(MXSUB;)g(lx++\))g({)1454 56787 y Fd(468)5977 b Fg(jx)582
+b(=)f(lx)g(+)h(isubx*MXSUB;)1454 58115 y Fd(469)5977
+b Fg(offset)582 b(=)g(lx*NVARS)g(+)f(ly*nvmxsub;)1454
+59444 y Fd(470)5977 b Fg(c1)582 b(=)f(udata[offset];)1454
+60772 y Fd(471)5977 b Fg(c2)582 b(=)f(udata[offset+1];)1454
+62100 y Fd(472)5977 b Fg(j)581 b(=)h(Jbd[lx][ly];)1454
+63429 y Fd(473)5977 b Fg(a)581 b(=)h(P[lx][ly];)1454
+64757 y Fd(474)5977 b Fg(IJth\(j,1,1\))583 b(=)e(\(-Q1*C3)h(-)g
+(Q2*c2\))g(+)f(diag;)1454 66086 y Fd(475)5977 b Fg(IJth\(j,1,2\))583
+b(=)e(-Q2*c1)h(+)g(q4coef;)1454 67414 y Fd(476)5977 b
+Fg(IJth\(j,2,1\))583 b(=)e(Q1*C3)h(-)f(Q2*c2;)1454 68742
+y Fd(477)5977 b Fg(IJth\(j,2,2\))583 b(=)e(\(-Q2*c1)h(-)g(q4coef\))g(+)
+f(diag;)1454 70071 y Fd(478)5977 b Fg(dencopy\(j,)583
+b(a,)e(NVARS\);)1454 71399 y Fd(479)4815 b Fg(})1454
+72727 y Fd(480)3653 b Fg(})1454 74056 y Fd(481)1454 75384
+y(482)g Fg(*jcurPtr)582 b(=)f(TRUE;)1454 76712 y Fd(483)1454
+78041 y(484)2490 b Fg(})p Black 27394 81741 a Ft(69)p
+Black eop
+%%Page: 70 74
+70 73 bop Black Black -2546 7638 a Fd(485)-2546 8966
+y(486)2490 b Fg(/*)582 b(Scale)g(by)f(-gamma)h(*/)-2546
+10295 y Fd(487)2490 b Fg(for)582 b(\(ly)f(=)h(0;)f(ly)h(<)f(MYSUB;)h
+(ly++\))-2546 11623 y Fd(488)3653 b Fg(for)581 b(\(lx)h(=)f(0;)h(lx)f
+(<)g(MXSUB;)h(lx++\))-2546 12951 y Fd(489)4815 b Fg(denscale\(-gamma,)
+583 b(P[lx][ly],)g(NVARS\);)-2546 14280 y Fd(490)-2546
+15608 y(491)2490 b Fg(/*)582 b(Add)f(identity)i(matrix)f(and)f(do)h(LU)
+f(decompositions)i(on)f(blocks)g(in)f(place)h(*/)-2546
+16936 y Fd(492)2490 b Fg(for)582 b(\(lx)f(=)h(0;)f(lx)h(<)f(MXSUB;)h
+(lx++\))g({)-2546 18265 y Fd(493)3653 b Fg(for)581 b(\(ly)h(=)f(0;)h
+(ly)f(<)g(MYSUB;)h(ly++\))g({)-2546 19593 y Fd(494)4815
+b Fg(denaddI\(P[lx][ly],)584 b(NVARS\);)-2546 20922 y
+Fd(495)4815 b Fg(ier)581 b(=)h(gefa\(P[lx][ly],)h(NVARS,)f
+(pivot[lx][ly]\);)-2546 22250 y Fd(496)4815 b Fg(if)581
+b(\(ier)h(!=)g(0\))f(return\(1\);)-2546 23578 y Fd(497)3653
+b Fg(})-2546 24907 y Fd(498)2490 b Fg(})-2546 26235 y
+Fd(499)-2546 27563 y(500)g Fg(return\(0\);)-2546 28892
+y Fd(501)1328 b Fg(})-2546 30220 y Fd(502)-2546 31548
+y(503)g Fg(/*)-2546 32877 y Fd(504)1909 b Fg(*)581 b(Preconditioner)j
+(solve)e(routine)-2546 34205 y Fd(505)1909 b Fg(*/)-2546
+35533 y Fd(506)-2546 36862 y(507)1328 b Fg(static)582
+b(int)g(PSolve\(realtype)h(tn,)f(N_Vector)g(u,)f(N_Vector)i(fu,)-2546
+38190 y Fd(508)11789 b Fg(N_Vector)582 b(r,)f(N_Vector)i(z,)-2546
+39518 y Fd(509)11789 b Fg(realtype)582 b(gamma,)g(realtype)g(delta,)
+-2546 40847 y Fd(510)11789 b Fg(int)581 b(lr,)h(void)g(*P_data,)g
+(N_Vector)g(vtemp\))-2546 42175 y Fd(511)1328 b Fg({)-2546
+43504 y Fd(512)2490 b Fg(realtype)583 b(**\(*P\)[MYSUB];)-2546
+44832 y Fd(513)2490 b Fg(long)582 b(int)g(nvmxsub,)g
+(*\(*pivot\)[MYSUB];)-2546 46160 y Fd(514)2490 b Fg(int)582
+b(lx,)f(ly;)-2546 47489 y Fd(515)2490 b Fg(realtype)583
+b(*zdata,)f(*v;)-2546 48817 y Fd(516)2490 b Fg(PreconData)583
+b(predata;)-2546 50145 y Fd(517)2490 b Fg(UserData)583
+b(data;)-2546 51474 y Fd(518)-2546 52802 y(519)2490 b
+Fg(/*)582 b(Extract)g(the)g(P)f(and)g(pivot)h(arrays)g(from)g(P_data)g
+(*/)-2546 54130 y Fd(520)2490 b Fg(predata)582 b(=)g(\(PreconData\))h
+(P_data;)-2546 55459 y Fd(521)2490 b Fg(data)582 b(=)f(\(UserData\))i
+(\(predata->f_data\);)-2546 56787 y Fd(522)2490 b Fg(P)582
+b(=)f(predata->P;)-2546 58115 y Fd(523)2490 b Fg(pivot)582
+b(=)f(predata->pivot;)-2546 59444 y Fd(524)-2546 60772
+y(525)2490 b Fg(/*)582 b(Solve)g(the)f(block-diagonal)i(system)g(Px)e
+(=)g(r)h(using)f(LU)h(factors)g(stored)-2546 62100 y
+Fd(526)4234 b Fg(in)581 b(P)g(and)h(pivot)g(data)g(in)f(pivot,)h(and)g
+(return)g(the)f(solution)i(in)e(z.)-2546 63429 y Fd(527)4234
+b Fg(First)582 b(copy)f(vector)h(r)g(to)f(z.)h(*/)-2546
+64757 y Fd(528)2490 b Fg(N_VScale\(RCONST\(1.0\),)585
+b(r,)c(z\);)-2546 66086 y Fd(529)-2546 67414 y(530)2490
+b Fg(nvmxsub)582 b(=)g(data->nvmxsub;)-2546 68742 y Fd(531)2490
+b Fg(zdata)582 b(=)f(NV_DATA_P\(z\);)-2546 70071 y Fd(532)-2546
+71399 y(533)2490 b Fg(for)582 b(\(lx)f(=)h(0;)f(lx)h(<)f(MXSUB;)h
+(lx++\))g({)-2546 72727 y Fd(534)3653 b Fg(for)581 b(\(ly)h(=)f(0;)h
+(ly)f(<)g(MYSUB;)h(ly++\))g({)-2546 74056 y Fd(535)4815
+b Fg(v)581 b(=)g(&\(zdata[lx*NVARS)j(+)d(ly*nvmxsub]\);)-2546
+75384 y Fd(536)4815 b Fg(gesl\(P[lx][ly],)583 b(NVARS,)f
+(pivot[lx][ly],)i(v\);)-2546 76712 y Fd(537)3653 b Fg(})-2546
+78041 y Fd(538)2490 b Fg(})p Black 23394 81741 a Ft(70)p
+Black eop
+%%Page: 71 75
+71 74 bop Black Black 1454 7638 a Fd(539)1454 8966 y(540)2490
+b Fg(return\(0\);)1454 10295 y Fd(541)1328 b Fg(})1454
+11623 y Fd(542)1454 12951 y(543)g Fg(/*)1454 14280 y
+Fd(544)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)1454 15608 y Fd(545)g Fg(*)581 b(PRIVATE)i(FUNCTIONS)1454
+16936 y Fd(546)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)1454 18265 y Fd(547)g Fg(*/)1454 19593 y Fd(548)1454
+20922 y(549)1328 b Fg(/*)1454 22250 y Fd(550)1909 b Fg(*)581
+b(Process)i(and)e(verify)h(arguments)h(to)e(pvfkx.)1454
+23578 y Fd(551)1909 b Fg(*/)1454 24907 y Fd(552)1454
+26235 y(553)1328 b Fg(static)582 b(void)g(ProcessArgs\(int)h(argc,)f
+(char)g(*argv[],)g(int)g(my_pe,)1454 27563 y Fd(554)15276
+b Fg(booleantype)582 b(*sensi,)h(int)e(*sensi_meth,)i(booleantype)g
+(*err_con\))1454 28892 y Fd(555)1328 b Fg({)1454 30220
+y Fd(556)2490 b Fg(*sensi)582 b(=)g(FALSE;)1454 31548
+y Fd(557)2490 b Fg(*sensi_meth)583 b(=)e(-1;)1454 32877
+y Fd(558)2490 b Fg(*err_con)583 b(=)e(FALSE;)1454 34205
+y Fd(559)1454 35533 y(560)2490 b Fg(if)582 b(\(argc)g(<)f(2\))g
+(WrongArgs\(my_pe,)j(argv[0]\);)1454 36862 y Fd(561)1454
+38190 y(562)2490 b Fg(if)582 b(\(strcmp\(argv[1],"-nosensi"\))j(==)c
+(0\))1454 39518 y Fd(563)3653 b Fg(*sensi)582 b(=)f(FALSE;)1454
+40847 y Fd(564)2490 b Fg(else)582 b(if)f(\(strcmp\(argv[1],"-sensi"\))k
+(==)d(0\))1454 42175 y Fd(565)3653 b Fg(*sensi)582 b(=)f(TRUE;)1454
+43504 y Fd(566)2490 b Fg(else)1454 44832 y Fd(567)3653
+b Fg(WrongArgs\(my_pe,)583 b(argv[0]\);)1454 46160 y
+Fd(568)1454 47489 y(569)2490 b Fg(if)582 b(\(*sensi\))g({)1454
+48817 y Fd(570)1454 50145 y(571)3653 b Fg(if)581 b(\(argc)h(!=)f(4\))
+1454 51474 y Fd(572)4815 b Fg(WrongArgs\(my_pe,)583 b(argv[0]\);)1454
+52802 y Fd(573)1454 54130 y(574)3653 b Fg(if)581 b
+(\(strcmp\(argv[2],"sim"\))j(==)e(0\))1454 55459 y Fd(575)4815
+b Fg(*sensi_meth)583 b(=)e(CV_SIMULTANEOUS;)1454 56787
+y Fd(576)3653 b Fg(else)581 b(if)h(\(strcmp\(argv[2],"stg"\))i(==)e
+(0\))1454 58115 y Fd(577)4815 b Fg(*sensi_meth)583 b(=)e(CV_STAGGERED;)
+1454 59444 y Fd(578)3653 b Fg(else)581 b(if)h
+(\(strcmp\(argv[2],"stg1"\))i(==)e(0\))1454 60772 y Fd(579)4815
+b Fg(*sensi_meth)583 b(=)e(CV_STAGGERED1;)1454 62100
+y Fd(580)3653 b Fg(else)1454 63429 y Fd(581)4815 b Fg
+(WrongArgs\(my_pe,)583 b(argv[0]\);)1454 64757 y Fd(582)1454
+66086 y(583)3653 b Fg(if)581 b(\(strcmp\(argv[3],"t"\))j(==)e(0\))1454
+67414 y Fd(584)4815 b Fg(*err_con)582 b(=)g(TRUE;)1454
+68742 y Fd(585)3653 b Fg(else)581 b(if)h(\(strcmp\(argv[3],"f"\))i(==)d
+(0\))1454 70071 y Fd(586)4815 b Fg(*err_con)582 b(=)g(FALSE;)1454
+71399 y Fd(587)3653 b Fg(else)1454 72727 y Fd(588)4815
+b Fg(WrongArgs\(my_pe,)583 b(argv[0]\);)1454 74056 y
+Fd(589)2490 b Fg(})1454 75384 y Fd(590)1454 76712 y(591)1328
+b Fg(})1454 78041 y Fd(592)p Black 27394 81741 a Ft(71)p
+Black eop
+%%Page: 72 76
+72 75 bop Black Black -2546 7638 a Fd(593)1328 b Fg(static)582
+b(void)g(WrongArgs\(int)h(my_pe,)f(char)g(*name\))-2546
+8966 y Fd(594)1328 b Fg({)-2546 10295 y Fd(595)2490 b
+Fg(if)582 b(\(my_pe)g(==)f(0\))h({)-2546 11623 y Fd(596)3653
+b Fg(printf\("\\nUsage:)583 b(\045s)f([-nosensi])g([-sensi)g
+(sensi_meth)h(err_con]\\n",name\);)-2546 12951 y Fd(597)3653
+b Fg(printf\(")5231 b(sensi_meth)583 b(=)e(sim,)h(stg,)g(or)f
+(stg1\\n"\);)-2546 14280 y Fd(598)3653 b Fg(printf\(")5231
+b(err_con)2326 b(=)581 b(t)g(or)h(f\\n"\);)-2546 15608
+y Fd(599)2490 b Fg(})-2546 16936 y Fd(600)g Fg(MPI_Finalize\(\);)-2546
+18265 y Fd(601)g Fg(exit\(0\);)-2546 19593 y Fd(602)1328
+b Fg(})-2546 20922 y Fd(603)-2546 22250 y(604)-2546 23578
+y(605)g Fg(/*)-2546 24907 y Fd(606)1909 b Fg(*)581 b(Allocate)i(memory)
+f(for)f(data)h(structure)h(of)e(type)h(PreconData.)-2546
+26235 y Fd(607)1909 b Fg(*/)-2546 27563 y Fd(608)-2546
+28892 y(609)1328 b Fg(static)582 b(PreconData)h
+(AllocPreconData\(UserData)h(fdata\))-2546 30220 y Fd(610)1328
+b Fg({)-2546 31548 y Fd(611)2490 b Fg(int)582 b(lx,)f(ly;)-2546
+32877 y Fd(612)2490 b Fg(PreconData)583 b(pdata;)-2546
+34205 y Fd(613)-2546 35533 y(614)2490 b Fg(pdata)582
+b(=)f(\(PreconData\))i(malloc\(sizeof)h(*pdata\);)-2546
+36862 y Fd(615)2490 b Fg(pdata->f_data)583 b(=)f(fdata;)-2546
+38190 y Fd(616)-2546 39518 y(617)2490 b Fg(for)582 b(\(lx)f(=)h(0;)f
+(lx)h(<)f(MXSUB;)h(lx++\))g({)-2546 40847 y Fd(618)3653
+b Fg(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h(ly++\))g({)-2546
+42175 y Fd(619)4815 b Fg(\(pdata->P\)[lx][ly])584 b(=)d
+(denalloc\(NVARS\);)-2546 43504 y Fd(620)4815 b Fg
+(\(pdata->Jbd\)[lx][ly])584 b(=)d(denalloc\(NVARS\);)-2546
+44832 y Fd(621)4815 b Fg(\(pdata->pivot\)[lx][ly])584
+b(=)e(denallocpiv\(NVARS\);)-2546 46160 y Fd(622)3653
+b Fg(})-2546 47489 y Fd(623)2490 b Fg(})-2546 48817 y
+Fd(624)-2546 50145 y(625)g Fg(return\(pdata\);)-2546
+51474 y Fd(626)1328 b Fg(})-2546 52802 y Fd(627)-2546
+54130 y(628)g Fg(/*)-2546 55459 y Fd(629)1909 b Fg(*)581
+b(Free)h(preconditioner)h(memory.)-2546 56787 y Fd(630)1909
+b Fg(*/)-2546 58115 y Fd(631)-2546 59444 y(632)1328 b
+Fg(static)582 b(void)g(FreePreconData\(PreconData)j(pdata\))-2546
+60772 y Fd(633)1328 b Fg({)-2546 62100 y Fd(634)2490
+b Fg(int)582 b(lx,)f(ly;)-2546 63429 y Fd(635)-2546 64757
+y(636)2490 b Fg(for)582 b(\(lx)f(=)h(0;)f(lx)h(<)f(MXSUB;)h(lx++\))g({)
+-2546 66086 y Fd(637)3653 b Fg(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g
+(MYSUB;)h(ly++\))g({)-2546 67414 y Fd(638)4815 b Fg
+(denfree\(\(pdata->P\)[lx][ly]\);)-2546 68742 y Fd(639)g
+Fg(denfree\(\(pdata->Jbd\)[lx][ly]\);)-2546 70071 y Fd(640)g
+Fg(denfreepiv\(\(pdata->pivot\)[lx][ly]\);)-2546 71399
+y Fd(641)3653 b Fg(})-2546 72727 y Fd(642)2490 b Fg(})-2546
+74056 y Fd(643)-2546 75384 y(644)g Fg(free\(pdata\);)-2546
+76712 y Fd(645)1328 b Fg(})-2546 78041 y Fd(646)p Black
+23394 81741 a Ft(72)p Black eop
+%%Page: 73 77
+73 76 bop Black Black 1454 7638 a Fd(647)1328 b Fg(/*)1454
+8966 y Fd(648)1909 b Fg(*)581 b(Set)h(user)g(data.)1454
+10295 y Fd(649)1909 b Fg(*/)1454 11623 y Fd(650)1454
+12951 y(651)1328 b Fg(static)582 b(void)g(InitUserData\(int)h(my_pe,)f
+(MPI_Comm)h(comm,)f(UserData)g(data\))1454 14280 y Fd(652)1328
+b Fg({)1454 15608 y Fd(653)2490 b Fg(long)582 b(int)g(isubx,)g(isuby;)
+1454 16936 y Fd(654)2490 b Fg(realtype)583 b(KH,)e(VEL,)h(KV0;)1454
+18265 y Fd(655)1454 19593 y(656)2490 b Fg(/*)582 b(Set)f(problem)i
+(parameters)f(*/)1454 20922 y Fd(657)2490 b Fg(data->p[0])1164
+b(=)581 b(RCONST\(1.63e-16\);)3490 b(/*)581 b(Q1)1163
+b(coeffs.)582 b(q1,)g(q2,)f(c3)7555 b(*/)1454 22250 y
+Fd(658)2490 b Fg(data->p[1])1164 b(=)581 b(RCONST\(4.66e-16\);)3490
+b(/*)581 b(Q2)19178 b(*/)1454 23578 y Fd(659)2490 b Fg(data->p[2])1164
+b(=)581 b(RCONST\(3.7e16\);)4652 b(/*)581 b(C3)19178
+b(*/)1454 24907 y Fd(660)2490 b Fg(data->p[3])1164 b(=)581
+b(RCONST\(22.62\);)5233 b(/*)581 b(A3)1163 b(coeff.)582
+b(in)f(expression)i(for)f(q3\(t\))f(*/)1454 26235 y Fd(661)2490
+b Fg(data->p[4])1164 b(=)581 b(RCONST\(7.601\);)5233
+b(/*)581 b(A4)1163 b(coeff.)582 b(in)f(expression)i(for)f(q4\(t\))f(*/)
+1454 27563 y Fd(662)2490 b Fg(KH)1163 b(=)581 b(data->p[5])1164
+b(=)581 b(RCONST\(4.0e-6\);)1165 b(/*)581 b(KH)1163 b(horizontal)582
+b(diffusivity)h(Kh)3487 b(*/)1454 28892 y Fd(663)2490
+b Fg(VEL)582 b(=)f(data->p[6])1164 b(=)581 b(RCONST\(0.001\);)1746
+b(/*)581 b(VEL)h(advection)g(velocity)h(V)6392 b(*/)1454
+30220 y Fd(664)2490 b Fg(KV0)582 b(=)f(data->p[7])1164
+b(=)581 b(RCONST\(1.0e-8\);)1165 b(/*)581 b(KV0)h(coeff.)g(in)f
+(Kv\(z\))9299 b(*/)1454 31548 y Fd(665)1454 32877 y(666)2490
+b Fg(/*)582 b(Set)f(problem)i(constants)f(*/)1454 34205
+y Fd(667)2490 b Fg(data->om)583 b(=)e(PI/HALFDAY;)1454
+35533 y Fd(668)2490 b Fg(data->dx)583 b(=)e
+(\(XMAX-XMIN\)/\(\(realtype\)\(MX-1\)\);)1454 36862 y
+Fd(669)2490 b Fg(data->dy)583 b(=)e
+(\(YMAX-YMIN\)/\(\(realtype\)\(MY-1\)\);)1454 38190 y
+Fd(670)2490 b Fg(data->hdco)583 b(=)e(KH/SQR\(data->dx\);)1454
+39518 y Fd(671)2490 b Fg(data->haco)583 b(=)e
+(VEL/\(RCONST\(2.0\)*data->dx\);)1454 40847 y Fd(672)2490
+b Fg(data->vdco)583 b(=)e(\(RCONST\(1.0\)/SQR\(data->dy\)\)*KV0;)1454
+42175 y Fd(673)1454 43504 y(674)2490 b Fg(/*)582 b(Set)f
+(machine-related)j(constants)e(*/)1454 44832 y Fd(675)2490
+b Fg(data->comm)583 b(=)e(comm;)1454 46160 y Fd(676)2490
+b Fg(data->my_pe)583 b(=)e(my_pe;)1454 47489 y Fd(677)1454
+48817 y(678)2490 b Fg(/*)582 b(isubx)g(and)f(isuby)h(are)g(the)f(PE)h
+(grid)g(indices)g(corresponding)h(to)e(my_pe)h(*/)1454
+50145 y Fd(679)2490 b Fg(isuby)582 b(=)f(my_pe/NPEX;)1454
+51474 y Fd(680)2490 b Fg(isubx)582 b(=)f(my_pe)h(-)g(isuby*NPEX;)1454
+52802 y Fd(681)2490 b Fg(data->isubx)583 b(=)e(isubx;)1454
+54130 y Fd(682)2490 b Fg(data->isuby)583 b(=)e(isuby;)1454
+55459 y Fd(683)1454 56787 y(684)2490 b Fg(/*)582 b(Set)f(the)h(sizes)g
+(of)f(a)h(boundary)g(x-line)g(in)f(u)h(and)f(uext)h(*/)1454
+58115 y Fd(685)2490 b Fg(data->nvmxsub)583 b(=)f(NVARS*MXSUB;)1454
+59444 y Fd(686)2490 b Fg(data->nvmxsub2)584 b(=)d(NVARS*\(MXSUB+2\);)
+1454 60772 y Fd(687)1328 b Fg(})1454 62100 y Fd(688)1454
+63429 y(689)g Fg(/*)1454 64757 y Fd(690)1909 b Fg(*)581
+b(Set)h(initial)g(conditions)h(in)e(u.)1454 66086 y Fd(691)1909
+b Fg(*/)1454 67414 y Fd(692)1454 68742 y(693)1328 b Fg(static)582
+b(void)g(SetInitialProfiles\(N_Vector)j(u,)c(UserData)i(data\))1454
+70071 y Fd(694)1328 b Fg({)1454 71399 y Fd(695)2490 b
+Fg(long)582 b(int)g(isubx,)g(isuby,)g(lx,)f(ly,)h(jx,)g(jy,)f(offset;)
+1454 72727 y Fd(696)2490 b Fg(realtype)583 b(dx,)e(dy,)h(x,)f(y,)h(cx,)
+f(cy,)h(xmid,)g(ymid;)1454 74056 y Fd(697)2490 b Fg(realtype)583
+b(*udata;)1454 75384 y Fd(698)1454 76712 y(699)2490 b
+Fg(/*)582 b(Set)f(pointer)i(to)e(data)h(array)g(in)f(vector)h(u)f(*/)
+1454 78041 y Fd(700)2490 b Fg(udata)582 b(=)f(NV_DATA_P\(u\);)p
+Black 27394 81741 a Ft(73)p Black eop
+%%Page: 74 78
+74 77 bop Black Black -2546 7638 a Fd(701)-2546 8966
+y(702)2490 b Fg(/*)582 b(Get)f(mesh)h(spacings,)h(and)e(subgrid)h
+(indices)h(for)e(this)h(PE)f(*/)-2546 10295 y Fd(703)2490
+b Fg(dx)582 b(=)f(data->dx;)5232 b(dy)581 b(=)g(data->dy;)-2546
+11623 y Fd(704)2490 b Fg(isubx)582 b(=)f(data->isubx;)1746
+b(isuby)582 b(=)f(data->isuby;)-2546 12951 y Fd(705)-2546
+14280 y(706)2490 b Fg(/*)582 b(Load)f(initial)i(profiles)f(of)f(c1)h
+(and)g(c2)f(into)h(local)g(u)f(vector.)-2546 15608 y
+Fd(707)2490 b Fg(Here)582 b(lx)f(and)h(ly)g(are)f(local)h(mesh)g(point)
+g(indices)g(on)f(the)h(local)g(subgrid,)-2546 16936 y
+Fd(708)2490 b Fg(and)582 b(jx)f(and)h(jy)f(are)h(the)g(global)g(mesh)f
+(point)h(indices.)h(*/)-2546 18265 y Fd(709)2490 b Fg(offset)582
+b(=)g(0;)-2546 19593 y Fd(710)2490 b Fg(xmid)582 b(=)f
+(RCONST\(0.5\)*\(XMIN)j(+)d(XMAX\);)-2546 20922 y Fd(711)2490
+b Fg(ymid)582 b(=)f(RCONST\(0.5\)*\(YMIN)j(+)d(YMAX\);)-2546
+22250 y Fd(712)2490 b Fg(for)582 b(\(ly)f(=)h(0;)f(ly)h(<)f(MYSUB;)h
+(ly++\))g({)-2546 23578 y Fd(713)3653 b Fg(jy)581 b(=)g(ly)h(+)f
+(isuby*MYSUB;)-2546 24907 y Fd(714)3653 b Fg(y)581 b(=)g(YMIN)h(+)f
+(jy*dy;)-2546 26235 y Fd(715)3653 b Fg(cy)581 b(=)g
+(SQR\(RCONST\(0.1\)*\(y)j(-)d(ymid\)\);)-2546 27563 y
+Fd(716)3653 b Fg(cy)581 b(=)g(RCONST\(1.0\))i(-)e(cy)h(+)f
+(RCONST\(0.5\)*SQR\(cy\);)-2546 28892 y Fd(717)3653 b
+Fg(for)581 b(\(lx)h(=)f(0;)h(lx)f(<)g(MXSUB;)h(lx++\))g({)-2546
+30220 y Fd(718)4815 b Fg(jx)581 b(=)h(lx)f(+)g(isubx*MXSUB;)-2546
+31548 y Fd(719)4815 b Fg(x)581 b(=)g(XMIN)h(+)g(jx*dx;)-2546
+32877 y Fd(720)4815 b Fg(cx)581 b(=)h(SQR\(RCONST\(0.1\)*\(x)h(-)f
+(xmid\)\);)-2546 34205 y Fd(721)4815 b Fg(cx)581 b(=)h(RCONST\(1.0\))g
+(-)g(cx)f(+)g(RCONST\(0.5\)*SQR\(cx\);)-2546 35533 y
+Fd(722)4815 b Fg(udata[offset)1164 b(])581 b(=)h(C1_SCALE*cx*cy;)-2546
+36862 y Fd(723)4815 b Fg(udata[offset+1])583 b(=)f(C2_SCALE*cx*cy;)
+-2546 38190 y Fd(724)4815 b Fg(offset)582 b(=)f(offset)h(+)g(2;)-2546
+39518 y Fd(725)3653 b Fg(})-2546 40847 y Fd(726)2490
+b Fg(})-2546 42175 y Fd(727)1328 b Fg(})-2546 43504 y
+Fd(728)-2546 44832 y(729)g Fg(/*)-2546 46160 y Fd(730)1909
+b Fg(*)581 b(Routine)i(to)e(send)h(boundary)g(data)g(to)f(neighboring)i
+(PEs.)-2546 47489 y Fd(731)1909 b Fg(*/)-2546 48817 y
+Fd(732)-2546 50145 y(733)1328 b Fg(static)582 b(void)g(BSend\(MPI_Comm)
+h(comm,)f(int)g(my_pe,)g(long)f(int)h(isubx,)-2546 51474
+y Fd(734)11789 b Fg(long)581 b(int)h(isuby,)g(long)g(int)f(dsizex,)i
+(long)e(int)h(dsizey,)-2546 52802 y Fd(735)11789 b Fg(realtype)582
+b(udata[]\))-2546 54130 y Fd(736)1328 b Fg({)-2546 55459
+y Fd(737)2490 b Fg(int)582 b(i,)f(ly;)-2546 56787 y Fd(738)2490
+b Fg(long)582 b(int)g(offsetu,)g(offsetbuf;)-2546 58115
+y Fd(739)2490 b Fg(realtype)583 b(bufleft[NVARS*MYSUB],)h
+(bufright[NVARS*MYSUB];)-2546 59444 y Fd(740)-2546 60772
+y(741)2490 b Fg(/*)582 b(If)f(isuby)h(>)f(0,)h(send)g(data)f(from)h
+(bottom)g(x-line)g(of)g(u)f(*/)-2546 62100 y Fd(742)2490
+b Fg(if)582 b(\(isuby)g(!=)f(0\))-2546 63429 y Fd(743)3653
+b Fg(MPI_Send\(&udata[0],)584 b(dsizex,)e(PVEC_REAL_MPI_TYPE,)i
+(my_pe-NPEX,)f(0,)e(comm\);)-2546 64757 y Fd(744)-2546
+66086 y(745)2490 b Fg(/*)582 b(If)f(isuby)h(<)f(NPEY-1,)i(send)e(data)h
+(from)g(top)f(x-line)h(of)g(u)f(*/)-2546 67414 y Fd(746)2490
+b Fg(if)582 b(\(isuby)g(!=)f(NPEY-1\))h({)-2546 68742
+y Fd(747)3653 b Fg(offsetu)582 b(=)f(\(MYSUB-1\)*dsizex;)-2546
+70071 y Fd(748)3653 b Fg(MPI_Send\(&udata[offsetu],)584
+b(dsizex,)f(PVEC_REAL_MPI_TYPE,)h(my_pe+NPEX,)e(0,)g(comm\);)-2546
+71399 y Fd(749)2490 b Fg(})-2546 72727 y Fd(750)-2546
+74056 y(751)g Fg(/*)582 b(If)f(isubx)h(>)f(0,)h(send)g(data)f(from)h
+(left)g(y-line)g(of)f(u)h(\(via)f(bufleft\))i(*/)-2546
+75384 y Fd(752)2490 b Fg(if)582 b(\(isubx)g(!=)f(0\))h({)-2546
+76712 y Fd(753)3653 b Fg(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))g({)-2546 78041 y Fd(754)4815 b Fg(offsetbuf)582
+b(=)g(ly*NVARS;)p Black 23394 81741 a Ft(74)p Black eop
+%%Page: 75 79
+75 78 bop Black Black 1454 7638 a Fd(755)4815 b Fg(offsetu)582
+b(=)f(ly*dsizex;)1454 8966 y Fd(756)4815 b Fg(for)581
+b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)h(i++\))1454 10295 y
+Fd(757)5977 b Fg(bufleft[offsetbuf+i])584 b(=)e(udata[offsetu+i];)1454
+11623 y Fd(758)3653 b Fg(})1454 12951 y Fd(759)g Fg
+(MPI_Send\(&bufleft[0],)584 b(dsizey,)e(PVEC_REAL_MPI_TYPE,)i(my_pe-1,)
+e(0,)g(comm\);)1454 14280 y Fd(760)2490 b Fg(})1454 15608
+y Fd(761)1454 16936 y(762)g Fg(/*)582 b(If)f(isubx)h(<)f(NPEX-1,)i
+(send)e(data)h(from)g(right)g(y-line)g(of)f(u)g(\(via)h(bufright\))h
+(*/)1454 18265 y Fd(763)2490 b Fg(if)582 b(\(isubx)g(!=)f(NPEX-1\))h({)
+1454 19593 y Fd(764)3653 b Fg(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g
+(MYSUB;)h(ly++\))g({)1454 20922 y Fd(765)4815 b Fg(offsetbuf)582
+b(=)g(ly*NVARS;)1454 22250 y Fd(766)4815 b Fg(offsetu)582
+b(=)f(offsetbuf*MXSUB)j(+)d(\(MXSUB-1\)*NVARS;)1454 23578
+y Fd(767)4815 b Fg(for)581 b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)h(i++\))1454
+24907 y Fd(768)5977 b Fg(bufright[offsetbuf+i])584 b(=)e
+(udata[offsetu+i];)1454 26235 y Fd(769)3653 b Fg(})1454
+27563 y Fd(770)g Fg(MPI_Send\(&bufright[0],)584 b(dsizey,)e
+(PVEC_REAL_MPI_TYPE,)i(my_pe+1,)f(0,)e(comm\);)1454 28892
+y Fd(771)2490 b Fg(})1454 30220 y Fd(772)1328 b Fg(})1454
+31548 y Fd(773)1454 32877 y(774)g Fg(/*)1454 34205 y
+Fd(775)1909 b Fg(*)581 b(Routine)i(to)e(start)h(receiving)g(boundary)h
+(data)f(from)f(neighboring)i(PEs.)1454 35533 y Fd(776)1909
+b Fg(*)581 b(Notes:)1454 36862 y Fd(777)1909 b Fg(*)1163
+b(1\))581 b(buffer)h(should)g(be)g(able)f(to)h(hold)g(2*NVARS*MYSUB)h
+(realtype)f(entries,)g(should)g(be)1454 38190 y Fd(778)1909
+b Fg(*)2906 b(passed)582 b(to)g(both)f(the)h(BRecvPost)g(and)g
+(BRecvWait)g(functions,)h(and)f(should)g(not)1454 39518
+y Fd(779)1909 b Fg(*)2906 b(be)581 b(manipulated)i(between)f(the)g(two)
+g(calls.)1454 40847 y Fd(780)1909 b Fg(*)1163 b(2\))581
+b(request)h(should)g(have)g(4)f(entries,)i(and)e(should)h(be)g(passed)g
+(in)f(both)h(calls)g(also.)1454 42175 y Fd(781)1909 b
+Fg(*/)1454 43504 y Fd(782)1454 44832 y(783)1328 b Fg(static)582
+b(void)g(BRecvPost\(MPI_Comm)i(comm,)e(MPI_Request)g(request[],)h(int)f
+(my_pe,)1454 46160 y Fd(784)14113 b Fg(long)582 b(int)g(isubx,)g(long)f
+(int)h(isuby,)1454 47489 y Fd(785)14113 b Fg(long)582
+b(int)g(dsizex,)g(long)g(int)f(dsizey,)1454 48817 y Fd(786)14113
+b Fg(realtype)583 b(uext[],)f(realtype)g(buffer[]\))1454
+50145 y Fd(787)1328 b Fg({)1454 51474 y Fd(788)2490 b
+Fg(long)582 b(int)g(offsetue;)1454 52802 y Fd(789)1454
+54130 y(790)2490 b Fg(/*)582 b(Have)f(bufleft)i(and)e(bufright)i(use)e
+(the)h(same)g(buffer)g(*/)1454 55459 y Fd(791)2490 b
+Fg(realtype)583 b(*bufleft)f(=)f(buffer,)h(*bufright)h(=)e
+(buffer+NVARS*MYSUB;)1454 56787 y Fd(792)1454 58115 y(793)2490
+b Fg(/*)582 b(If)f(isuby)h(>)f(0,)h(receive)g(data)g(for)f(bottom)h
+(x-line)g(of)g(uext)g(*/)1454 59444 y Fd(794)2490 b Fg(if)582
+b(\(isuby)g(!=)f(0\))1454 60772 y Fd(795)3653 b Fg
+(MPI_Irecv\(&uext[NVARS],)584 b(dsizex,)e(PVEC_REAL_MPI_TYPE,)1454
+62100 y Fd(796)9464 b Fg(my_pe-NPEX,)583 b(0,)e(comm,)h(&request[0]\);)
+1454 63429 y Fd(797)1454 64757 y(798)2490 b Fg(/*)582
+b(If)f(isuby)h(<)f(NPEY-1,)i(receive)f(data)g(for)f(top)h(x-line)g(of)f
+(uext)h(*/)1454 66086 y Fd(799)2490 b Fg(if)582 b(\(isuby)g(!=)f
+(NPEY-1\))h({)1454 67414 y Fd(800)3653 b Fg(offsetue)582
+b(=)f(NVARS*\(1)i(+)e(\(MYSUB+1\)*\(MXSUB+2\)\);)1454
+68742 y Fd(801)3653 b Fg(MPI_Irecv\(&uext[offsetue],)585
+b(dsizex,)d(PVEC_REAL_MPI_TYPE,)1454 70071 y Fd(802)9464
+b Fg(my_pe+NPEX,)583 b(0,)e(comm,)h(&request[1]\);)1454
+71399 y Fd(803)2490 b Fg(})1454 72727 y Fd(804)1454 74056
+y(805)g Fg(/*)582 b(If)f(isubx)h(>)f(0,)h(receive)g(data)g(for)f(left)h
+(y-line)g(of)g(uext)f(\(via)h(bufleft\))g(*/)1454 75384
+y Fd(806)2490 b Fg(if)582 b(\(isubx)g(!=)f(0\))h({)1454
+76712 y Fd(807)3653 b Fg(MPI_Irecv\(&bufleft[0],)584
+b(dsizey,)e(PVEC_REAL_MPI_TYPE,)1454 78041 y Fd(808)9464
+b Fg(my_pe-1,)582 b(0,)g(comm,)g(&request[2]\);)p Black
+27394 81741 a Ft(75)p Black eop
+%%Page: 76 80
+76 79 bop Black Black -2546 7638 a Fd(809)2490 b Fg(})-2546
+8966 y Fd(810)-2546 10295 y(811)g Fg(/*)582 b(If)f(isubx)h(<)f(NPEX-1,)
+i(receive)f(data)g(for)f(right)h(y-line)g(of)f(uext)h(\(via)g
+(bufright\))g(*/)-2546 11623 y Fd(812)2490 b Fg(if)582
+b(\(isubx)g(!=)f(NPEX-1\))h({)-2546 12951 y Fd(813)3653
+b Fg(MPI_Irecv\(&bufright[0],)584 b(dsizey,)e(PVEC_REAL_MPI_TYPE,)-2546
+14280 y Fd(814)9464 b Fg(my_pe+1,)582 b(0,)g(comm,)g(&request[3]\);)
+-2546 15608 y Fd(815)2490 b Fg(})-2546 16936 y Fd(816)1328
+b Fg(})-2546 18265 y Fd(817)-2546 19593 y(818)g Fg(/*)-2546
+20922 y Fd(819)1909 b Fg(*)581 b(Routine)i(to)e(finish)h(receiving)h
+(boundary)f(data)g(from)f(neighboring)i(PEs.)-2546 22250
+y Fd(820)1909 b Fg(*)581 b(Notes:)-2546 23578 y Fd(821)1909
+b Fg(*)1163 b(1\))581 b(buffer)h(should)g(be)g(able)f(to)h(hold)g
+(2*NVARS*MYSUB)h(realtype)f(entries,)g(should)g(be)-2546
+24907 y Fd(822)1909 b Fg(*)2906 b(passed)582 b(to)g(both)f(the)h
+(BRecvPost)g(and)g(BRecvWait)g(functions,)h(and)f(should)g(not)-2546
+26235 y Fd(823)1909 b Fg(*)2906 b(be)581 b(manipulated)i(between)f(the)
+g(two)g(calls.)-2546 27563 y Fd(824)1909 b Fg(*)1163
+b(2\))581 b(request)h(should)g(have)g(4)f(entries,)i(and)e(should)h(be)
+g(passed)g(in)f(both)h(calls)g(also.)-2546 28892 y Fd(825)1909
+b Fg(*/)-2546 30220 y Fd(826)-2546 31548 y(827)1328 b
+Fg(static)582 b(void)g(BRecvWait\(MPI_Request)i(request[],)f(long)e
+(int)h(isubx,)g(long)g(int)f(isuby,)-2546 32877 y Fd(828)14113
+b Fg(long)582 b(int)g(dsizex,)g(realtype)g(uext[],)g(realtype)h
+(buffer[]\))-2546 34205 y Fd(829)1328 b Fg({)-2546 35533
+y Fd(830)2490 b Fg(int)582 b(i,)f(ly;)-2546 36862 y Fd(831)2490
+b Fg(long)582 b(int)g(dsizex2,)g(offsetue,)g(offsetbuf;)-2546
+38190 y Fd(832)2490 b Fg(realtype)583 b(*bufleft)f(=)f(buffer,)h
+(*bufright)h(=)e(buffer+NVARS*MYSUB;)-2546 39518 y Fd(833)2490
+b Fg(MPI_Status)583 b(status;)-2546 40847 y Fd(834)-2546
+42175 y(835)2490 b Fg(dsizex2)582 b(=)g(dsizex)g(+)f(2*NVARS;)-2546
+43504 y Fd(836)-2546 44832 y(837)2490 b Fg(/*)582 b(If)f(isuby)h(>)f
+(0,)h(receive)g(data)g(for)f(bottom)h(x-line)g(of)g(uext)g(*/)-2546
+46160 y Fd(838)2490 b Fg(if)582 b(\(isuby)g(!=)f(0\))-2546
+47489 y Fd(839)3653 b Fg(MPI_Wait\(&request[0],&status\);)-2546
+48817 y Fd(840)-2546 50145 y(841)2490 b Fg(/*)582 b(If)f(isuby)h(<)f
+(NPEY-1,)i(receive)f(data)g(for)f(top)h(x-line)g(of)f(uext)h(*/)-2546
+51474 y Fd(842)2490 b Fg(if)582 b(\(isuby)g(!=)f(NPEY-1\))-2546
+52802 y Fd(843)3653 b Fg(MPI_Wait\(&request[1],&status\);)-2546
+54130 y Fd(844)-2546 55459 y(845)2490 b Fg(/*)582 b(If)f(isubx)h(>)f
+(0,)h(receive)g(data)g(for)f(left)h(y-line)g(of)g(uext)f(\(via)h
+(bufleft\))g(*/)-2546 56787 y Fd(846)2490 b Fg(if)582
+b(\(isubx)g(!=)f(0\))h({)-2546 58115 y Fd(847)3653 b
+Fg(MPI_Wait\(&request[2],&status\);)-2546 59444 y Fd(848)-2546
+60772 y(849)g Fg(/*)581 b(Copy)h(the)f(buffer)h(to)g(uext)g(*/)-2546
+62100 y Fd(850)3653 b Fg(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))g({)-2546 63429 y Fd(851)4815 b Fg(offsetbuf)582
+b(=)g(ly*NVARS;)-2546 64757 y Fd(852)4815 b Fg(offsetue)582
+b(=)g(\(ly+1\)*dsizex2;)-2546 66086 y Fd(853)4815 b Fg(for)581
+b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)h(i++\))-2546 67414 y
+Fd(854)5977 b Fg(uext[offsetue+i])584 b(=)d(bufleft[offsetbuf+i];)-2546
+68742 y Fd(855)3653 b Fg(})-2546 70071 y Fd(856)2490
+b Fg(})-2546 71399 y Fd(857)-2546 72727 y(858)g Fg(/*)582
+b(If)f(isubx)h(<)f(NPEX-1,)i(receive)f(data)g(for)f(right)h(y-line)g
+(of)f(uext)h(\(via)g(bufright\))g(*/)-2546 74056 y Fd(859)2490
+b Fg(if)582 b(\(isubx)g(!=)f(NPEX-1\))h({)-2546 75384
+y Fd(860)3653 b Fg(MPI_Wait\(&request[3],&status\);)-2546
+76712 y Fd(861)-2546 78041 y(862)g Fg(/*)581 b(Copy)h(the)f(buffer)h
+(to)g(uext)g(*/)p Black 23394 81741 a Ft(76)p Black eop
+%%Page: 77 81
+77 80 bop Black Black 1454 7638 a Fd(863)3653 b Fg(for)581
+b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h(ly++\))g({)1454 8966
+y Fd(864)4815 b Fg(offsetbuf)582 b(=)g(ly*NVARS;)1454
+10295 y Fd(865)4815 b Fg(offsetue)582 b(=)g(\(ly+2\)*dsizex2)h(-)e
+(NVARS;)1454 11623 y Fd(866)4815 b Fg(for)581 b(\(i)h(=)f(0;)h(i)f(<)g
+(NVARS;)h(i++\))1454 12951 y Fd(867)5977 b Fg(uext[offsetue+i])584
+b(=)d(bufright[offsetbuf+i];)1454 14280 y Fd(868)3653
+b Fg(})1454 15608 y Fd(869)2490 b Fg(})1454 16936 y Fd(870)1454
+18265 y(871)1328 b Fg(})1454 19593 y Fd(872)1454 20922
+y(873)g Fg(/*)1454 22250 y Fd(874)1909 b Fg(*)581 b(ucomm)h(routine.)
+1164 b(This)582 b(routine)g(performs)g(all)g(communication)1454
+23578 y Fd(875)1909 b Fg(*)581 b(between)i(processors)f(of)g(data)f
+(needed)i(to)e(calculate)h(f.)1454 24907 y Fd(876)1909
+b Fg(*/)1454 26235 y Fd(877)1454 27563 y(878)1328 b Fg(static)582
+b(void)g(ucomm\(realtype)h(t,)e(N_Vector)i(u,)e(UserData)i(data\))1454
+28892 y Fd(879)1328 b Fg({)1454 30220 y Fd(880)2490 b
+Fg(realtype)583 b(*udata,)f(*uext,)g(buffer[2*NVARS*MYSUB];)1454
+31548 y Fd(881)2490 b Fg(MPI_Comm)583 b(comm;)1454 32877
+y Fd(882)2490 b Fg(int)582 b(my_pe;)1454 34205 y Fd(883)2490
+b Fg(long)582 b(int)g(isubx,)g(isuby,)g(nvmxsub,)g(nvmysub;)1454
+35533 y Fd(884)2490 b Fg(MPI_Request)583 b(request[4];)1454
+36862 y Fd(885)1454 38190 y(886)2490 b Fg(udata)582 b(=)f
+(NV_DATA_P\(u\);)1454 39518 y Fd(887)1454 40847 y(888)2490
+b Fg(/*)582 b(Get)f(comm,)h(my_pe,)g(subgrid)g(indices,)h(data)f
+(sizes,)g(extended)g(array)g(uext)g(*/)1454 42175 y Fd(889)2490
+b Fg(comm)582 b(=)f(data->comm;)1164 b(my_pe)582 b(=)f(data->my_pe;)
+1454 43504 y Fd(890)2490 b Fg(isubx)582 b(=)f(data->isubx;)1746
+b(isuby)582 b(=)f(data->isuby;)1454 44832 y Fd(891)2490
+b Fg(nvmxsub)582 b(=)g(data->nvmxsub;)1454 46160 y Fd(892)2490
+b Fg(nvmysub)582 b(=)g(NVARS*MYSUB;)1454 47489 y Fd(893)2490
+b Fg(uext)582 b(=)f(data->uext;)1454 48817 y Fd(894)1454
+50145 y(895)2490 b Fg(/*)582 b(Start)g(receiving)g(boundary)g(data)g
+(from)g(neighboring)h(PEs)e(*/)1454 51474 y Fd(896)2490
+b Fg(BRecvPost\(comm,)584 b(request,)e(my_pe,)g(isubx,)g(isuby,)g
+(nvmxsub,)g(nvmysub,)h(uext,)f(buffer\);)1454 52802 y
+Fd(897)1454 54130 y(898)2490 b Fg(/*)582 b(Send)f(data)h(from)g
+(boundary)g(of)g(local)g(grid)f(to)h(neighboring)h(PEs)e(*/)1454
+55459 y Fd(899)2490 b Fg(BSend\(comm,)583 b(my_pe,)f(isubx,)g(isuby,)g
+(nvmxsub,)h(nvmysub,)f(udata\);)1454 56787 y Fd(900)1454
+58115 y(901)2490 b Fg(/*)582 b(Finish)g(receiving)g(boundary)h(data)e
+(from)h(neighboring)h(PEs)e(*/)1454 59444 y Fd(902)2490
+b Fg(BRecvWait\(request,)584 b(isubx,)e(isuby,)g(nvmxsub,)h(uext,)e
+(buffer\);)1454 60772 y Fd(903)1328 b Fg(})1454 62100
+y Fd(904)1454 63429 y(905)g Fg(/*)1454 64757 y Fd(906)1909
+b Fg(*)581 b(fcalc)h(routine.)h(Compute)f(f\(t,y\).)1163
+b(This)582 b(routine)g(assumes)g(that)g(communication)1454
+66086 y Fd(907)1909 b Fg(*)581 b(between)i(processors)f(of)g(data)f
+(needed)i(to)e(calculate)h(f)g(has)f(already)i(been)e(done,)1454
+67414 y Fd(908)1909 b Fg(*)581 b(and)h(this)g(data)g(is)f(in)g(the)h
+(work)g(array)g(uext.)1454 68742 y Fd(909)1909 b Fg(*/)1454
+70071 y Fd(910)1454 71399 y(911)1328 b Fg(static)582
+b(void)g(fcalc\(realtype)h(t,)e(realtype)i(udata[],)f(realtype)g
+(dudata[],)h(UserData)f(data\))1454 72727 y Fd(912)1328
+b Fg({)1454 74056 y Fd(913)2490 b Fg(realtype)583 b(*uext;)1454
+75384 y Fd(914)2490 b Fg(realtype)583 b(q3,)e(c1,)h(c2,)f(c1dn,)h
+(c2dn,)g(c1up,)g(c2up,)g(c1lt,)g(c2lt;)1454 76712 y Fd(915)2490
+b Fg(realtype)583 b(c1rt,)f(c2rt,)f(cydn,)h(cyup,)g(hord1,)g(hord2,)g
+(horad1,)g(horad2;)1454 78041 y Fd(916)2490 b Fg(realtype)583
+b(qq1,)e(qq2,)h(qq3,)g(qq4,)g(rkin1,)g(rkin2,)g(s,)f(vertd1,)h(vertd2,)
+h(ydn,)e(yup;)p Black 27394 81741 a Ft(77)p Black eop
+%%Page: 78 82
+78 81 bop Black Black -2546 7638 a Fd(917)2490 b Fg(realtype)583
+b(q4coef,)f(dely,)g(verdco,)g(hordco,)g(horaco;)-2546
+8966 y Fd(918)2490 b Fg(int)582 b(i,)f(lx,)h(ly,)g(jx,)f(jy;)-2546
+10295 y Fd(919)2490 b Fg(long)582 b(int)g(isubx,)g(isuby,)g(nvmxsub,)g
+(nvmxsub2,)h(offsetu,)f(offsetue;)-2546 11623 y Fd(920)2490
+b Fg(realtype)583 b(Q1,)e(Q2,)h(C3,)f(A3,)h(A4,)g(KH,)f(VEL,)h(KV0;)
+-2546 12951 y Fd(921)-2546 14280 y(922)2490 b Fg(/*)582
+b(Get)f(subgrid)i(indices,)f(data)g(sizes,)g(extended)g(work)g(array)g
+(uext)f(*/)-2546 15608 y Fd(923)2490 b Fg(isubx)582 b(=)f(data->isubx;)
+1746 b(isuby)582 b(=)f(data->isuby;)-2546 16936 y Fd(924)2490
+b Fg(nvmxsub)582 b(=)g(data->nvmxsub;)h(nvmxsub2)f(=)g(data->nvmxsub2;)
+-2546 18265 y Fd(925)2490 b Fg(uext)582 b(=)f(data->uext;)-2546
+19593 y Fd(926)-2546 20922 y(927)2490 b Fg(/*)582 b(Load)f(problem)i
+(coefficients)g(and)e(parameters)i(*/)-2546 22250 y Fd(928)2490
+b Fg(Q1)1163 b(=)581 b(data->p[0];)-2546 23578 y Fd(929)2490
+b Fg(Q2)1163 b(=)581 b(data->p[1];)-2546 24907 y Fd(930)2490
+b Fg(C3)1163 b(=)581 b(data->p[2];)-2546 26235 y Fd(931)2490
+b Fg(A3)1163 b(=)581 b(data->p[3];)-2546 27563 y Fd(932)2490
+b Fg(A4)1163 b(=)581 b(data->p[4];)-2546 28892 y Fd(933)2490
+b Fg(KH)1163 b(=)581 b(data->p[5];)-2546 30220 y Fd(934)2490
+b Fg(VEL)582 b(=)f(data->p[6];)-2546 31548 y Fd(935)2490
+b Fg(KV0)582 b(=)f(data->p[7];)-2546 32877 y Fd(936)-2546
+34205 y(937)2490 b Fg(/*)582 b(Copy)f(local)h(segment)h(of)e(u)g
+(vector)h(into)g(the)g(working)g(extended)g(array)g(uext)g(*/)-2546
+35533 y Fd(938)2490 b Fg(offsetu)582 b(=)g(0;)-2546 36862
+y Fd(939)2490 b Fg(offsetue)583 b(=)e(nvmxsub2)h(+)g(NVARS;)-2546
+38190 y Fd(940)2490 b Fg(for)582 b(\(ly)f(=)h(0;)f(ly)h(<)f(MYSUB;)h
+(ly++\))g({)-2546 39518 y Fd(941)3653 b Fg(for)581 b(\(i)h(=)f(0;)g(i)h
+(<)f(nvmxsub;)h(i++\))g(uext[offsetue+i])i(=)d(udata[offsetu+i];)-2546
+40847 y Fd(942)3653 b Fg(offsetu)582 b(=)f(offsetu)h(+)g(nvmxsub;)-2546
+42175 y Fd(943)3653 b Fg(offsetue)582 b(=)f(offsetue)i(+)e(nvmxsub2;)
+-2546 43504 y Fd(944)2490 b Fg(})-2546 44832 y Fd(945)-2546
+46160 y(946)g Fg(/*)582 b(To)f(facilitate)i(homogeneous)g(Neumann)f
+(boundary)g(conditions,)h(when)f(this)f(is)-2546 47489
+y Fd(947)2490 b Fg(a)582 b(boundary)g(PE,)g(copy)f(data)h(from)g(the)f
+(first)h(interior)h(mesh)e(line)h(of)g(u)f(to)g(uext)h(*/)-2546
+48817 y Fd(948)-2546 50145 y(949)2490 b Fg(/*)582 b(If)f(isuby)h(=)f
+(0,)h(copy)g(x-line)g(2)f(of)g(u)h(to)f(uext)h(*/)-2546
+51474 y Fd(950)2490 b Fg(if)582 b(\(isuby)g(==)f(0\))h({)-2546
+52802 y Fd(951)3653 b Fg(for)581 b(\(i)h(=)f(0;)g(i)h(<)f(nvmxsub;)h
+(i++\))g(uext[NVARS+i])h(=)e(udata[nvmxsub+i];)-2546
+54130 y Fd(952)2490 b Fg(})-2546 55459 y Fd(953)-2546
+56787 y(954)g Fg(/*)582 b(If)f(isuby)h(=)f(NPEY-1,)i(copy)e(x-line)h
+(MYSUB-1)h(of)e(u)g(to)h(uext)f(*/)-2546 58115 y Fd(955)2490
+b Fg(if)582 b(\(isuby)g(==)f(NPEY-1\))h({)-2546 59444
+y Fd(956)3653 b Fg(offsetu)582 b(=)f(\(MYSUB-2\)*nvmxsub;)-2546
+60772 y Fd(957)3653 b Fg(offsetue)582 b(=)f(\(MYSUB+1\)*nvmxsub2)j(+)d
+(NVARS;)-2546 62100 y Fd(958)3653 b Fg(for)581 b(\(i)h(=)f(0;)g(i)h(<)f
+(nvmxsub;)h(i++\))g(uext[offsetue+i])i(=)d(udata[offsetu+i];)-2546
+63429 y Fd(959)2490 b Fg(})-2546 64757 y Fd(960)-2546
+66086 y(961)g Fg(/*)582 b(If)f(isubx)h(=)f(0,)h(copy)g(y-line)g(2)f(of)
+g(u)h(to)f(uext)h(*/)-2546 67414 y Fd(962)2490 b Fg(if)582
+b(\(isubx)g(==)f(0\))h({)-2546 68742 y Fd(963)3653 b
+Fg(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h(ly++\))g({)-2546
+70071 y Fd(964)4815 b Fg(offsetu)582 b(=)f(ly*nvmxsub)i(+)e(NVARS;)
+-2546 71399 y Fd(965)4815 b Fg(offsetue)582 b(=)g(\(ly+1\)*nvmxsub2;)
+-2546 72727 y Fd(966)4815 b Fg(for)581 b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)
+h(i++\))g(uext[offsetue+i])i(=)d(udata[offsetu+i];)-2546
+74056 y Fd(967)3653 b Fg(})-2546 75384 y Fd(968)2490
+b Fg(})-2546 76712 y Fd(969)-2546 78041 y(970)g Fg(/*)582
+b(If)f(isubx)h(=)f(NPEX-1,)i(copy)e(y-line)h(MXSUB-1)h(of)e(u)g(to)h
+(uext)f(*/)p Black 23394 81741 a Ft(78)p Black eop
+%%Page: 79 83
+79 82 bop Black Black 1454 7638 a Fd(971)2490 b Fg(if)582
+b(\(isubx)g(==)f(NPEX-1\))h({)1454 8966 y Fd(972)3653
+b Fg(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h(ly++\))g({)1454
+10295 y Fd(973)4815 b Fg(offsetu)582 b(=)f(\(ly+1\)*nvmxsub)j(-)d
+(2*NVARS;)1454 11623 y Fd(974)4815 b Fg(offsetue)582
+b(=)g(\(ly+2\)*nvmxsub2)h(-)e(NVARS;)1454 12951 y Fd(975)4815
+b Fg(for)581 b(\(i)h(=)f(0;)h(i)f(<)g(NVARS;)h(i++\))g
+(uext[offsetue+i])i(=)d(udata[offsetu+i];)1454 14280
+y Fd(976)3653 b Fg(})1454 15608 y Fd(977)2490 b Fg(})1454
+16936 y Fd(978)1454 18265 y(979)g Fg(/*)582 b(Make)f(local)h(copies)g
+(of)g(problem)g(variables,)h(for)e(efficiency)i(*/)1454
+19593 y Fd(980)2490 b Fg(dely)1744 b(=)582 b(data->dy;)1454
+20922 y Fd(981)2490 b Fg(verdco)582 b(=)g(data->vdco;)1454
+22250 y Fd(982)2490 b Fg(hordco)582 b(=)g(data->hdco;)1454
+23578 y Fd(983)2490 b Fg(horaco)582 b(=)g(data->haco;)1454
+24907 y Fd(984)1454 26235 y(985)2490 b Fg(/*)582 b(Set)f(diurnal)i
+(rate)e(coefficients)i(as)f(functions)g(of)g(t,)f(and)h(save)f(q4)h(in)
+1454 27563 y Fd(986)2490 b Fg(data)582 b(block)g(for)g(use)f(by)h
+(preconditioner)h(evaluation)f(routine)h(*/)1454 28892
+y Fd(987)2490 b Fg(s)582 b(=)f(sin\(\(data->om\)*t\);)1454
+30220 y Fd(988)2490 b Fg(if)582 b(\(s)f(>)g(ZERO\))h({)1454
+31548 y Fd(989)3653 b Fg(q3)581 b(=)g(exp\(-A3/s\);)1454
+32877 y Fd(990)3653 b Fg(q4coef)582 b(=)f(exp\(-A4/s\);)1454
+34205 y Fd(991)2490 b Fg(})582 b(else)f({)1454 35533
+y Fd(992)3653 b Fg(q3)581 b(=)g(ZERO;)1454 36862 y Fd(993)3653
+b Fg(q4coef)582 b(=)f(ZERO;)1454 38190 y Fd(994)2490
+b Fg(})1454 39518 y Fd(995)g Fg(data->q4)583 b(=)e(q4coef;)1454
+40847 y Fd(996)1454 42175 y(997)2490 b Fg(/*)582 b(Loop)f(over)h(all)g
+(grid)g(points)g(in)f(local)h(subgrid)g(*/)1454 43504
+y Fd(998)2490 b Fg(for)582 b(\(ly)f(=)h(0;)f(ly)h(<)f(MYSUB;)h(ly++\))g
+({)1454 44832 y Fd(999)3653 b Fg(jy)581 b(=)g(ly)h(+)f(isuby*MYSUB;)
+1048 46160 y Fd(1000)1048 47489 y(1001)3653 b Fg(/*)581
+b(Set)h(vertical)g(diffusion)g(coefficients)h(at)f(jy)f(+-)h(1/2)f(*/)
+1048 48817 y Fd(1002)3653 b Fg(ydn)581 b(=)g(YMIN)h(+)g(\(jy)f(-)g
+(.5\)*dely;)1048 50145 y Fd(1003)3653 b Fg(yup)581 b(=)g(ydn)h(+)f
+(dely;)1048 51474 y Fd(1004)3653 b Fg(cydn)581 b(=)h
+(verdco*exp\(RCONST\(0.2\)*ydn\);)1048 52802 y Fd(1005)3653
+b Fg(cyup)581 b(=)h(verdco*exp\(RCONST\(0.2\)*yup\);)1048
+54130 y Fd(1006)3653 b Fg(for)581 b(\(lx)h(=)f(0;)h(lx)f(<)g(MXSUB;)h
+(lx++\))g({)1048 55459 y Fd(1007)4815 b Fg(jx)581 b(=)h(lx)f(+)g
+(isubx*MXSUB;)1048 56787 y Fd(1008)1048 58115 y(1009)4815
+b Fg(/*)581 b(Extract)i(c1)e(and)h(c2,)f(and)h(set)f(kinetic)i(rate)e
+(terms)h(*/)1048 59444 y Fd(1010)4815 b Fg(offsetue)582
+b(=)g(\(lx+1\)*NVARS)g(+)g(\(ly+1\)*nvmxsub2;)1048 60772
+y Fd(1011)4815 b Fg(c1)581 b(=)h(uext[offsetue];)1048
+62100 y Fd(1012)4815 b Fg(c2)581 b(=)h(uext[offsetue+1];)1048
+63429 y Fd(1013)4815 b Fg(qq1)581 b(=)h(Q1*c1*C3;)1048
+64757 y Fd(1014)4815 b Fg(qq2)581 b(=)h(Q2*c1*c2;)1048
+66086 y Fd(1015)4815 b Fg(qq3)581 b(=)h(q3*C3;)1048 67414
+y Fd(1016)4815 b Fg(qq4)581 b(=)h(q4coef*c2;)1048 68742
+y Fd(1017)4815 b Fg(rkin1)582 b(=)f(-qq1)h(-)f(qq2)h(+)f
+(RCONST\(2.0\)*qq3)i(+)f(qq4;)1048 70071 y Fd(1018)4815
+b Fg(rkin2)582 b(=)f(qq1)h(-)f(qq2)h(-)f(qq4;)1048 71399
+y Fd(1019)1048 72727 y(1020)4815 b Fg(/*)581 b(Set)h(vertical)g
+(diffusion)h(terms)f(*/)1048 74056 y Fd(1021)4815 b Fg(c1dn)582
+b(=)f(uext[offsetue-nvmxsub2];)1048 75384 y Fd(1022)4815
+b Fg(c2dn)582 b(=)f(uext[offsetue-nvmxsub2+1];)1048 76712
+y Fd(1023)4815 b Fg(c1up)582 b(=)f(uext[offsetue+nvmxsub2];)1048
+78041 y Fd(1024)4815 b Fg(c2up)582 b(=)f(uext[offsetue+nvmxsub2+1];)p
+Black 27394 81741 a Ft(79)p Black eop
+%%Page: 80 84
+80 83 bop Black Black -2952 7638 a Fd(1025)4815 b Fg(vertd1)582
+b(=)f(cyup*\(c1up)i(-)e(c1\))h(-)f(cydn*\(c1)h(-)g(c1dn\);)-2952
+8966 y Fd(1026)4815 b Fg(vertd2)582 b(=)f(cyup*\(c2up)i(-)e(c2\))h(-)f
+(cydn*\(c2)h(-)g(c2dn\);)-2952 10295 y Fd(1027)-2952
+11623 y(1028)4815 b Fg(/*)581 b(Set)h(horizontal)h(diffusion)f(and)g
+(advection)g(terms)g(*/)-2952 12951 y Fd(1029)4815 b
+Fg(c1lt)582 b(=)f(uext[offsetue-2];)-2952 14280 y Fd(1030)4815
+b Fg(c2lt)582 b(=)f(uext[offsetue-1];)-2952 15608 y Fd(1031)4815
+b Fg(c1rt)582 b(=)f(uext[offsetue+2];)-2952 16936 y Fd(1032)4815
+b Fg(c2rt)582 b(=)f(uext[offsetue+3];)-2952 18265 y Fd(1033)4815
+b Fg(hord1)582 b(=)f(hordco*\(c1rt)i(-)e(2.0*c1)h(+)g(c1lt\);)-2952
+19593 y Fd(1034)4815 b Fg(hord2)582 b(=)f(hordco*\(c2rt)i(-)e(2.0*c2)h
+(+)g(c2lt\);)-2952 20922 y Fd(1035)4815 b Fg(horad1)582
+b(=)f(horaco*\(c1rt)i(-)e(c1lt\);)-2952 22250 y Fd(1036)4815
+b Fg(horad2)582 b(=)f(horaco*\(c2rt)i(-)e(c2lt\);)-2952
+23578 y Fd(1037)-2952 24907 y(1038)4815 b Fg(/*)581 b(Load)h(all)g
+(terms)g(into)f(dudata)h(*/)-2952 26235 y Fd(1039)4815
+b Fg(offsetu)582 b(=)f(lx*NVARS)i(+)e(ly*nvmxsub;)-2952
+27563 y Fd(1040)4815 b Fg(dudata[offsetu])1746 b(=)581
+b(vertd1)h(+)f(hord1)h(+)f(horad1)h(+)g(rkin1;)-2952
+28892 y Fd(1041)4815 b Fg(dudata[offsetu+1])584 b(=)d(vertd2)h(+)f
+(hord2)h(+)f(horad2)h(+)g(rkin2;)-2952 30220 y Fd(1042)3653
+b Fg(})-2952 31548 y Fd(1043)2490 b Fg(})-2952 32877
+y Fd(1044)-2952 34205 y(1045)1328 b Fg(})-2952 35533
+y Fd(1046)-2952 36862 y(1047)g Fg(/*)-2952 38190 y Fd(1048)1909
+b Fg(*)581 b(Print)h(current)h(t,)e(step)h(count,)g(order,)g(stepsize,)
+g(and)g(sampled)g(c1,c2)g(values.)-2952 39518 y Fd(1049)1909
+b Fg(*/)-2952 40847 y Fd(1050)-2952 42175 y(1051)1328
+b Fg(static)582 b(void)g(PrintOutput\(void)h(*cvode_mem,)g(int)f
+(my_pe,)g(MPI_Comm)g(comm,)-2952 43504 y Fd(1052)15276
+b Fg(realtype)582 b(t,)f(N_Vector)i(u\))-2952 44832 y
+Fd(1053)1328 b Fg({)-2952 46160 y Fd(1054)2490 b Fg(long)582
+b(int)g(nst;)-2952 47489 y Fd(1055)2490 b Fg(int)582
+b(qu,)f(flag;)-2952 48817 y Fd(1056)2490 b Fg(realtype)583
+b(hu,)e(*udata,)h(tempu[2];)-2952 50145 y Fd(1057)2490
+b Fg(long)582 b(int)g(npelast,)g(i0,)g(i1;)-2952 51474
+y Fd(1058)2490 b Fg(MPI_Status)583 b(status;)-2952 52802
+y Fd(1059)-2952 54130 y(1060)2490 b Fg(npelast)582 b(=)g(NPEX*NPEY)g(-)
+g(1;)-2952 55459 y Fd(1061)2490 b Fg(udata)582 b(=)f(NV_DATA_P\(u\);)
+-2952 56787 y Fd(1062)-2952 58115 y(1063)2490 b Fg(/*)582
+b(Send)f(c)h(at)f(top)h(right)g(mesh)f(point)h(to)g(PE)f(0)h(*/)-2952
+59444 y Fd(1064)2490 b Fg(if)582 b(\(my_pe)g(==)f(npelast\))i({)-2952
+60772 y Fd(1065)3653 b Fg(i0)581 b(=)g(NVARS*MXSUB*MYSUB)j(-)d(2;)-2952
+62100 y Fd(1066)3653 b Fg(i1)581 b(=)g(i0)h(+)f(1;)-2952
+63429 y Fd(1067)3653 b Fg(if)581 b(\(npelast)h(!=)g(0\))-2952
+64757 y Fd(1068)4815 b Fg(MPI_Send\(&udata[i0],)584 b(2,)d
+(PVEC_REAL_MPI_TYPE,)j(0,)e(0,)f(comm\);)-2952 66086
+y Fd(1069)3653 b Fg(else)581 b({)-2952 67414 y Fd(1070)4815
+b Fg(tempu[0])582 b(=)g(udata[i0];)-2952 68742 y Fd(1071)4815
+b Fg(tempu[1])582 b(=)g(udata[i1];)-2952 70071 y Fd(1072)3653
+b Fg(})-2952 71399 y Fd(1073)2490 b Fg(})-2952 72727
+y Fd(1074)-2952 74056 y(1075)g Fg(/*)582 b(On)f(PE)h(0,)f(receive)h(c)g
+(at)f(top)h(right,)g(then)f(print)h(performance)h(data)-2952
+75384 y Fd(1076)4234 b Fg(and)581 b(sampled)i(solution)f(values)g(*/)
+-2952 76712 y Fd(1077)2490 b Fg(if)582 b(\(my_pe)g(==)f(0\))h({)-2952
+78041 y Fd(1078)p Black 23394 81741 a Ft(80)p Black eop
+%%Page: 81 85
+81 84 bop Black Black 1048 7638 a Fd(1079)3653 b Fg(if)581
+b(\(npelast)h(!=)g(0\))1048 8966 y Fd(1080)4815 b Fg
+(MPI_Recv\(&tempu[0],)584 b(2,)d(PVEC_REAL_MPI_TYPE,)j(npelast,)f(0,)e
+(comm,)h(&status\);)1048 10295 y Fd(1081)1048 11623 y(1082)3653
+b Fg(flag)581 b(=)h(CVodeGetNumSteps\(cvode_mem,)j(&nst\);)1048
+12951 y Fd(1083)3653 b Fg(check_flag\(&flag,)583 b("CVodeGetNumSteps",)
+h(1,)e(my_pe\);)1048 14280 y Fd(1084)3653 b Fg(flag)581
+b(=)h(CVodeGetLastOrder\(cvode_mem,)j(&qu\);)1048 15608
+y Fd(1085)3653 b Fg(check_flag\(&flag,)583 b("CVodeGetLastOrder",)h(1,)
+e(my_pe\);)1048 16936 y Fd(1086)3653 b Fg(flag)581 b(=)h
+(CVodeGetLastStep\(cvode_mem,)j(&hu\);)1048 18265 y Fd(1087)3653
+b Fg(check_flag\(&flag,)583 b("CVodeGetLastStep",)h(1,)e(my_pe\);)1048
+19593 y Fd(1088)1048 20922 y(1089)1328 b Fg(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))1048 22250 y
+Fd(1090)3653 b Fg(printf\("\0458.3Le)583 b(\0452d)1163
+b(\0458.3Le)582 b(\0455ld\\n",)g(t,qu,hu,nst\);)1048
+23578 y Fd(1091)1328 b Fg(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))1048 24907 y Fd(1092)3653
+b Fg(printf\("\0458.3le)583 b(\0452d)1163 b(\0458.3le)582
+b(\0455ld\\n",)g(t,qu,hu,nst\);)1048 26235 y Fd(1093)1328
+b Fg(#else)1048 27563 y Fd(1094)3653 b Fg(printf\("\0458.3e)583
+b(\0452d)1162 b(\0458.3e)582 b(\0455ld\\n",)h(t,qu,hu,nst\);)1048
+28892 y Fd(1095)1328 b Fg(#endif)1048 30220 y Fd(1096)1048
+31548 y(1097)3653 b Fg(printf\(")18598 b(Solution)4069
+b("\);)1048 32877 y Fd(1098)1328 b Fg(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))1048 34205 y
+Fd(1099)3653 b Fg(printf\("\04512.4Le)583 b(\04512.4Le)f(\\n",)g
+(udata[0],)g(tempu[0]\);)1048 35533 y Fd(1100)1328 b
+Fg(#elif)582 b(defined\(SUNDIALS_DOUBLE_PRECISION\))1048
+36862 y Fd(1101)3653 b Fg(printf\("\04512.4le)583 b(\04512.4le)f(\\n",)
+g(udata[0],)g(tempu[0]\);)1048 38190 y Fd(1102)1328 b
+Fg(#else)1048 39518 y Fd(1103)3653 b Fg(printf\("\04512.4e)583
+b(\04512.4e)f(\\n",)g(udata[0],)g(tempu[0]\);)1048 40847
+y Fd(1104)1328 b Fg(#endif)1048 42175 y Fd(1105)1048
+43504 y(1106)3653 b Fg(printf\(")27315 b("\);)1048 44832
+y Fd(1107)1048 46160 y(1108)1328 b Fg(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))1048 47489 y
+Fd(1109)3653 b Fg(printf\("\04512.4Le)583 b(\04512.4Le)f(\\n",)g
+(udata[1],)g(tempu[1]\);)1048 48817 y Fd(1110)1328 b
+Fg(#elif)582 b(defined\(SUNDIALS_DOUBLE_PRECISION\))1048
+50145 y Fd(1111)3653 b Fg(printf\("\04512.4le)583 b(\04512.4le)f(\\n",)
+g(udata[1],)g(tempu[1]\);)1048 51474 y Fd(1112)1328 b
+Fg(#else)1048 52802 y Fd(1113)3653 b Fg(printf\("\04512.4e)583
+b(\04512.4e)f(\\n",)g(udata[1],)g(tempu[1]\);)1048 54130
+y Fd(1114)1328 b Fg(#endif)1048 55459 y Fd(1115)1048
+56787 y(1116)2490 b Fg(})1048 58115 y Fd(1117)1048 59444
+y(1118)1328 b Fg(})1048 60772 y Fd(1119)1048 62100 y(1120)g
+Fg(/*)1048 63429 y Fd(1121)1909 b Fg(*)581 b(Print)h(sampled)h
+(sensitivity)f(values.)1048 64757 y Fd(1122)1909 b Fg(*/)1048
+66086 y Fd(1123)1048 67414 y(1124)1328 b Fg(static)582
+b(void)g(PrintOutputS\(int)h(my_pe,)f(MPI_Comm)h(comm,)f(N_Vector)g
+(*uS\))1048 68742 y Fd(1125)1328 b Fg({)1048 70071 y
+Fd(1126)2490 b Fg(realtype)583 b(*sdata,)f(temps[2];)1048
+71399 y Fd(1127)2490 b Fg(long)582 b(int)g(npelast,)g(i0,)g(i1;)1048
+72727 y Fd(1128)2490 b Fg(MPI_Status)583 b(status;)1048
+74056 y Fd(1129)1048 75384 y(1130)2490 b Fg(npelast)582
+b(=)g(NPEX*NPEY)g(-)g(1;)1048 76712 y Fd(1131)1048 78041
+y(1132)2490 b Fg(sdata)582 b(=)f(NV_DATA_P\(uS[0]\);)p
+Black 27394 81741 a Ft(81)p Black eop
+%%Page: 82 86
+82 85 bop Black Black -2952 7638 a Fd(1133)-2952 8966
+y(1134)2490 b Fg(/*)582 b(Send)f(s1)h(at)f(top)h(right)g(mesh)g(point)g
+(to)f(PE)g(0)h(*/)-2952 10295 y Fd(1135)2490 b Fg(if)582
+b(\(my_pe)g(==)f(npelast\))i({)-2952 11623 y Fd(1136)3653
+b Fg(i0)581 b(=)g(NVARS*MXSUB*MYSUB)j(-)d(2;)-2952 12951
+y Fd(1137)3653 b Fg(i1)581 b(=)g(i0)h(+)f(1;)-2952 14280
+y Fd(1138)3653 b Fg(if)581 b(\(npelast)h(!=)g(0\))-2952
+15608 y Fd(1139)4815 b Fg(MPI_Send\(&sdata[i0],)584 b(2,)d
+(PVEC_REAL_MPI_TYPE,)j(0,)e(0,)f(comm\);)-2952 16936
+y Fd(1140)3653 b Fg(else)581 b({)-2952 18265 y Fd(1141)4815
+b Fg(temps[0])582 b(=)g(sdata[i0];)-2952 19593 y Fd(1142)4815
+b Fg(temps[1])582 b(=)g(sdata[i1];)-2952 20922 y Fd(1143)3653
+b Fg(})-2952 22250 y Fd(1144)2490 b Fg(})-2952 23578
+y Fd(1145)-2952 24907 y(1146)g Fg(/*)582 b(On)f(PE)h(0,)f(receive)h(s1)
+g(at)f(top)h(right,)g(then)g(print)f(sampled)i(sensitivity)f(values)g
+(*/)-2952 26235 y Fd(1147)2490 b Fg(if)582 b(\(my_pe)g(==)f(0\))h({)
+-2952 27563 y Fd(1148)3653 b Fg(if)581 b(\(npelast)h(!=)g(0\))-2952
+28892 y Fd(1149)4815 b Fg(MPI_Recv\(&temps[0],)584 b(2,)d
+(PVEC_REAL_MPI_TYPE,)j(npelast,)f(0,)e(comm,)h(&status\);)-2952
+30220 y Fd(1150)3653 b Fg(printf\(")18598 b
+(----------------------------------------\\n"\);)-2952
+31548 y Fd(1151)3653 b Fg(printf\(")18598 b(Sensitivity)582
+b(1)1163 b("\);)-2952 32877 y Fd(1152)1328 b Fg(#if)582
+b(defined\(SUNDIALS_EXTENDED_PRECISION\))-2952 34205
+y Fd(1153)3653 b Fg(printf\("\04512.4Le)583 b(\04512.4Le)f(\\n",)g
+(sdata[0],)g(temps[0]\);)-2952 35533 y Fd(1154)1328 b
+Fg(#elif)582 b(defined\(SUNDIALS_DOUBLE_PRECISION\))-2952
+36862 y Fd(1155)3653 b Fg(printf\("\04512.4le)583 b(\04512.4le)f(\\n",)
+g(sdata[0],)g(temps[0]\);)-2952 38190 y Fd(1156)1328
+b Fg(#else)-2952 39518 y Fd(1157)3653 b Fg(printf\("\04512.4e)583
+b(\04512.4e)f(\\n",)g(sdata[0],)g(temps[0]\);)-2952 40847
+y Fd(1158)1328 b Fg(#endif)-2952 42175 y Fd(1159)3653
+b Fg(printf\(")27315 b("\);)-2952 43504 y Fd(1160)1328
+b Fg(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))-2952
+44832 y Fd(1161)3653 b Fg(printf\("\04512.4Le)583 b(\04512.4Le)f(\\n",)
+g(sdata[1],)g(temps[1]\);)-2952 46160 y Fd(1162)1328
+b Fg(#elif)582 b(defined\(SUNDIALS_DOUBLE_PRECISION\))-2952
+47489 y Fd(1163)3653 b Fg(printf\("\04512.4le)583 b(\04512.4le)f(\\n",)
+g(sdata[1],)g(temps[1]\);)-2952 48817 y Fd(1164)1328
+b Fg(#else)-2952 50145 y Fd(1165)3653 b Fg(printf\("\04512.4e)583
+b(\04512.4e)f(\\n",)g(sdata[1],)g(temps[1]\);)-2952 51474
+y Fd(1166)1328 b Fg(#endif)-2952 52802 y Fd(1167)2490
+b Fg(})-2952 54130 y Fd(1168)-2952 55459 y(1169)g Fg(sdata)582
+b(=)f(NV_DATA_P\(uS[1]\);)-2952 56787 y Fd(1170)-2952
+58115 y(1171)2490 b Fg(/*)582 b(Send)f(s2)h(at)f(top)h(right)g(mesh)g
+(point)g(to)f(PE)g(0)h(*/)-2952 59444 y Fd(1172)2490
+b Fg(if)582 b(\(my_pe)g(==)f(npelast\))i({)-2952 60772
+y Fd(1173)3653 b Fg(i0)581 b(=)g(NVARS*MXSUB*MYSUB)j(-)d(2;)-2952
+62100 y Fd(1174)3653 b Fg(i1)581 b(=)g(i0)h(+)f(1;)-2952
+63429 y Fd(1175)3653 b Fg(if)581 b(\(npelast)h(!=)g(0\))-2952
+64757 y Fd(1176)4815 b Fg(MPI_Send\(&sdata[i0],)584 b(2,)d
+(PVEC_REAL_MPI_TYPE,)j(0,)e(0,)f(comm\);)-2952 66086
+y Fd(1177)3653 b Fg(else)581 b({)-2952 67414 y Fd(1178)4815
+b Fg(temps[0])582 b(=)g(sdata[i0];)-2952 68742 y Fd(1179)4815
+b Fg(temps[1])582 b(=)g(sdata[i1];)-2952 70071 y Fd(1180)3653
+b Fg(})-2952 71399 y Fd(1181)2490 b Fg(})-2952 72727
+y Fd(1182)-2952 74056 y(1183)g Fg(/*)582 b(On)f(PE)h(0,)f(receive)h(s2)
+g(at)f(top)h(right,)g(then)g(print)f(sampled)i(sensitivity)f(values)g
+(*/)-2952 75384 y Fd(1184)2490 b Fg(if)582 b(\(my_pe)g(==)f(0\))h({)
+-2952 76712 y Fd(1185)3653 b Fg(if)581 b(\(npelast)h(!=)g(0\))-2952
+78041 y Fd(1186)4815 b Fg(MPI_Recv\(&temps[0],)584 b(2,)d
+(PVEC_REAL_MPI_TYPE,)j(npelast,)f(0,)e(comm,)h(&status\);)p
+Black 23394 81741 a Ft(82)p Black eop
+%%Page: 83 87
+83 86 bop Black Black 1048 7638 a Fd(1187)3653 b Fg(printf\(")18598
+b(----------------------------------------\\n"\);)1048
+8966 y Fd(1188)3653 b Fg(printf\(")18598 b(Sensitivity)582
+b(2)1163 b("\);)1048 10295 y Fd(1189)1328 b Fg(#if)582
+b(defined\(SUNDIALS_EXTENDED_PRECISION\))1048 11623 y
+Fd(1190)3653 b Fg(printf\("\04512.4Le)583 b(\04512.4Le)f(\\n",)g
+(sdata[0],)g(temps[0]\);)1048 12951 y Fd(1191)1328 b
+Fg(#elif)582 b(defined\(SUNDIALS_DOUBLE_PRECISION\))1048
+14280 y Fd(1192)3653 b Fg(printf\("\04512.4le)583 b(\04512.4le)f(\\n",)
+g(sdata[0],)g(temps[0]\);)1048 15608 y Fd(1193)1328 b
+Fg(#else)1048 16936 y Fd(1194)3653 b Fg(printf\("\04512.4e)583
+b(\04512.4e)f(\\n",)g(sdata[0],)g(temps[0]\);)1048 18265
+y Fd(1195)1328 b Fg(#endif)1048 19593 y Fd(1196)3653
+b Fg(printf\(")27315 b("\);)1048 20922 y Fd(1197)1328
+b Fg(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))1048
+22250 y Fd(1198)3653 b Fg(printf\("\04512.4Le)583 b(\04512.4Le)f(\\n",)
+g(sdata[1],)g(temps[1]\);)1048 23578 y Fd(1199)1328 b
+Fg(#elif)582 b(defined\(SUNDIALS_DOUBLE_PRECISION\))1048
+24907 y Fd(1200)3653 b Fg(printf\("\04512.4le)583 b(\04512.4le)f(\\n",)
+g(sdata[1],)g(temps[1]\);)1048 26235 y Fd(1201)1328 b
+Fg(#else)1048 27563 y Fd(1202)3653 b Fg(printf\("\04512.4e)583
+b(\04512.4e)f(\\n",)g(sdata[1],)g(temps[1]\);)1048 28892
+y Fd(1203)1328 b Fg(#endif)1048 30220 y Fd(1204)2490
+b Fg(})1048 31548 y Fd(1205)1328 b Fg(})1048 32877 y
+Fd(1206)1048 34205 y(1207)g Fg(/*)1048 35533 y Fd(1208)1909
+b Fg(*)581 b(Print)h(final)g(statistics)h(from)f(the)f(CVODES)h
+(memory.)1048 36862 y Fd(1209)1909 b Fg(*/)1048 38190
+y Fd(1210)1048 39518 y(1211)1328 b Fg(static)582 b(void)g
+(PrintFinalStats\(void)i(*cvode_mem,)f(booleantype)f(sensi\))1048
+40847 y Fd(1212)1328 b Fg({)1048 42175 y Fd(1213)2490
+b Fg(long)582 b(int)g(nst;)1048 43504 y Fd(1214)2490
+b Fg(long)582 b(int)g(nfe,)f(nsetups,)i(nni,)e(ncfn,)h(netf;)1048
+44832 y Fd(1215)2490 b Fg(long)582 b(int)g(nfSe,)g(nfeS,)f(nsetupsS,)i
+(nniS,)f(ncfnS,)g(netfS;)1048 46160 y Fd(1216)2490 b
+Fg(int)582 b(flag;)1048 47489 y Fd(1217)1048 48817 y(1218)2490
+b Fg(flag)582 b(=)f(CVodeGetNumSteps\(cvode_mem,)586
+b(&nst\);)1048 50145 y Fd(1219)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumSteps",)g(1,)d(0\);)1048 51474 y Fd(1220)2490
+b Fg(flag)582 b(=)f(CVodeGetNumRhsEvals\(cvode_mem,)586
+b(&nfe\);)1048 52802 y Fd(1221)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumRhsEvals",)g(1,)e(0\);)1048 54130 y Fd(1222)2490
+b Fg(flag)582 b(=)f(CVodeGetNumLinSolvSetups\(cvode_mem,)587
+b(&nsetups\);)1048 55459 y Fd(1223)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumLinSolvSetups",)h(1,)d(0\);)1048 56787
+y Fd(1224)2490 b Fg(flag)582 b(=)f(CVodeGetNumErrTestFails\(cvode_mem,)
+587 b(&netf\);)1048 58115 y Fd(1225)2490 b Fg(check_flag\(&flag,)584
+b("CVodeGetNumErrTestFails",)h(1,)c(0\);)1048 59444 y
+Fd(1226)2490 b Fg(flag)582 b(=)f
+(CVodeGetNumNonlinSolvIters\(cvode_mem,)587 b(&nni\);)1048
+60772 y Fd(1227)2490 b Fg(check_flag\(&flag,)584 b
+("CVodeGetNumNonlinSolvIters",)h(1,)d(0\);)1048 62100
+y Fd(1228)2490 b Fg(flag)582 b(=)f
+(CVodeGetNumNonlinSolvConvFails\(cvode_mem,)588 b(&ncfn\);)1048
+63429 y Fd(1229)2490 b Fg(check_flag\(&flag,)584 b
+("CVodeGetNumNonlinSolvConvFails",)i(1,)581 b(0\);)1048
+64757 y Fd(1230)1048 66086 y(1231)2490 b Fg(if)582 b(\(sensi\))g({)1048
+67414 y Fd(1232)3653 b Fg(flag)581 b(=)h
+(CVodeGetNumSensRhsEvals\(cvode_mem,)k(&nfSe\);)1048
+68742 y Fd(1233)3653 b Fg(check_flag\(&flag,)583 b
+("CVodeGetNumSensRhsEvals",)i(1,)d(0\);)1048 70071 y
+Fd(1234)3653 b Fg(flag)581 b(=)h(CVodeGetNumRhsEvalsSens\(cvode_mem,)k
+(&nfeS\);)1048 71399 y Fd(1235)3653 b Fg(check_flag\(&flag,)583
+b("CVodeGetNumRhsEvalsSens",)i(1,)d(0\);)1048 72727 y
+Fd(1236)3653 b Fg(flag)581 b(=)h
+(CVodeGetNumSensLinSolvSetups\(cvode_mem,)587 b(&nsetupsS\);)1048
+74056 y Fd(1237)3653 b Fg(check_flag\(&flag,)583 b
+("CVodeGetNumSensLinSolvSetups",)j(1,)581 b(0\);)1048
+75384 y Fd(1238)3653 b Fg(flag)581 b(=)h
+(CVodeGetNumSensErrTestFails\(cvode_mem,)k(&netfS\);)1048
+76712 y Fd(1239)3653 b Fg(check_flag\(&flag,)583 b
+("CVodeGetNumSensErrTestFails",)j(1,)581 b(0\);)1048
+78041 y Fd(1240)3653 b Fg(flag)581 b(=)h
+(CVodeGetNumSensNonlinSolvIters\(cvode_mem,)587 b(&nniS\);)p
+Black 27394 81741 a Ft(83)p Black eop
+%%Page: 84 88
+84 87 bop Black Black -2952 7638 a Fd(1241)3653 b Fg
+(check_flag\(&flag,)583 b("CVodeGetNumSensNonlinSolvIters",)j(1,)c
+(0\);)-2952 8966 y Fd(1242)3653 b Fg(flag)581 b(=)h
+(CVodeGetNumSensNonlinSolvConvFails\(cvode_mem,)587 b(&ncfnS\);)-2952
+10295 y Fd(1243)3653 b Fg(check_flag\(&flag,)583 b
+("CVodeGetNumSensNonlinSolvConvFails",)k(1,)581 b(0\);)-2952
+11623 y Fd(1244)2490 b Fg(})-2952 12951 y Fd(1245)-2952
+14280 y(1246)g Fg(printf\("\\nFinal)584 b(Statistics\\n\\n"\);)-2952
+15608 y Fd(1247)2490 b Fg(printf\("nst)2908 b(=)581 b(\0455ld\\n\\n",)i
+(nst\);)-2952 16936 y Fd(1248)2490 b Fg(printf\("nfe)2908
+b(=)581 b(\0455ld\\n",)1745 b(nfe\);)-2952 18265 y Fd(1249)2490
+b Fg(printf\("netf)2327 b(=)581 b(\0455ld)2325 b(nsetups)1164
+b(=)581 b(\0455ld\\n",)h(netf,)g(nsetups\);)-2952 19593
+y Fd(1250)2490 b Fg(printf\("nni)2908 b(=)581 b(\0455ld)2325
+b(ncfn)2907 b(=)581 b(\0455ld\\n",)h(nni,)g(ncfn\);)-2952
+20922 y Fd(1251)-2952 22250 y(1252)2490 b Fg(if\(sensi\))583
+b({)-2952 23578 y Fd(1253)3653 b Fg(printf\("\\n"\);)-2952
+24907 y Fd(1254)g Fg(printf\("nfSe)2326 b(=)581 b(\0455ld)2325
+b(nfeS)2907 b(=)581 b(\0455ld\\n",)h(nfSe,)g(nfeS\);)-2952
+26235 y Fd(1255)3653 b Fg(printf\("netfs)1745 b(=)581
+b(\0455ld)2325 b(nsetupsS)583 b(=)e(\0455ld\\n",)h(netfS,)g
+(nsetupsS\);)-2952 27563 y Fd(1256)3653 b Fg(printf\("nniS)2326
+b(=)581 b(\0455ld)2325 b(ncfnS)h(=)581 b(\0455ld\\n",)h(nniS,)g
+(ncfnS\);)-2952 28892 y Fd(1257)2490 b Fg(})-2952 30220
+y Fd(1258)-2952 31548 y(1259)1328 b Fg(})-2952 32877
+y Fd(1260)-2952 34205 y(1261)g Fg(/*)-2952 35533 y Fd(1262)1909
+b Fg(*)581 b(Check)h(function)h(return)f(value...)-2952
+36862 y Fd(1263)1909 b Fg(*)1744 b(opt)581 b(==)h(0)f(means)h(SUNDIALS)
+g(function)h(allocates)f(memory)g(so)g(check)g(if)-2952
+38190 y Fd(1264)1909 b Fg(*)6974 b(returned)582 b(NULL)g(pointer)-2952
+39518 y Fd(1265)1909 b Fg(*)1744 b(opt)581 b(==)h(1)f(means)h(SUNDIALS)
+g(function)h(returns)f(a)f(flag)h(so)f(check)h(if)-2952
+40847 y Fd(1266)1909 b Fg(*)6974 b(flag)582 b(>=)f(0)-2952
+42175 y Fd(1267)1909 b Fg(*)1744 b(opt)581 b(==)h(2)f(means)h(function)
+g(allocates)h(memory)f(so)f(check)h(if)g(returned)-2952
+43504 y Fd(1268)1909 b Fg(*)6974 b(NULL)582 b(pointer)-2952
+44832 y Fd(1269)1909 b Fg(*/)-2952 46160 y Fd(1270)-2952
+47489 y(1271)1328 b Fg(static)582 b(int)g(check_flag\(void)h
+(*flagvalue,)g(char)f(*funcname,)g(int)g(opt,)g(int)f(id\))-2952
+48817 y Fd(1272)1328 b Fg({)-2952 50145 y Fd(1273)2490
+b Fg(int)582 b(*errflag;)-2952 51474 y Fd(1274)-2952
+52802 y(1275)2490 b Fg(/*)582 b(Check)g(if)f(SUNDIALS)h(function)h
+(returned)f(NULL)g(pointer)g(-)f(no)h(memory)g(allocated)g(*/)-2952
+54130 y Fd(1276)2490 b Fg(if)582 b(\(opt)f(==)h(0)f(&&)h(flagvalue)g
+(==)g(NULL\))g({)-2952 55459 y Fd(1277)3653 b Fg(fprintf\(stderr,)-2952
+56787 y Fd(1278)8302 b Fg("\\nSUNDIALS_ERROR\(\045d\):)584
+b(\045s\(\))e(failed)g(-)f(returned)i(NULL)e(pointer\\n\\n",)-2952
+58115 y Fd(1279)8302 b Fg(id,)581 b(funcname\);)-2952
+59444 y Fd(1280)3653 b Fg(return\(1\);)582 b(})-2952
+60772 y Fd(1281)-2952 62100 y(1282)2490 b Fg(/*)582 b(Check)g(if)f
+(flag)h(<)f(0)g(*/)-2952 63429 y Fd(1283)2490 b Fg(else)582
+b(if)f(\(opt)h(==)g(1\))f({)-2952 64757 y Fd(1284)3653
+b Fg(errflag)582 b(=)f(\(int)h(*\))f(flagvalue;)-2952
+66086 y Fd(1285)3653 b Fg(if)581 b(\(*errflag)i(<)e(0\))g({)-2952
+67414 y Fd(1286)4815 b Fg(fprintf\(stderr,)-2952 68742
+y Fd(1287)9464 b Fg("\\nSUNDIALS_ERROR\(\045d\):)585
+b(\045s\(\))c(failed)h(with)g(flag)g(=)f(\045d\\n\\n",)-2952
+70071 y Fd(1288)9464 b Fg(id,)582 b(funcname,)g(*errflag\);)-2952
+71399 y Fd(1289)4815 b Fg(return\(1\);)583 b(}})-2952
+72727 y Fd(1290)-2952 74056 y(1291)2490 b Fg(/*)582 b(Check)g(if)f
+(function)h(returned)h(NULL)f(pointer)g(-)f(no)g(memory)h(allocated)h
+(*/)-2952 75384 y Fd(1292)2490 b Fg(else)582 b(if)f(\(opt)h(==)g(2)f
+(&&)g(flagvalue)i(==)e(NULL\))h({)-2952 76712 y Fd(1293)3653
+b Fg(fprintf\(stderr,)-2952 78041 y Fd(1294)8302 b Fg
+("\\nMEMORY_ERROR\(\045d\):)584 b(\045s\(\))e(failed)g(-)f(returned)h
+(NULL)g(pointer\\n\\n",)p Black 23394 81741 a Ft(84)p
+Black eop
+%%Page: 85 89
+85 88 bop Black Black 1048 7638 a Fd(1295)8302 b Fg(id,)581
+b(funcname\);)1048 8966 y Fd(1296)3653 b Fg(return\(1\);)582
+b(})1048 10295 y Fd(1297)1048 11623 y(1298)2490 b Fg(return\(0\);)1048
+12951 y Fd(1299)1328 b Fg(})p Black 27394 81741 a Ft(85)p
+Black eop
+%%Page: 86 90
+86 89 bop Black Black 0 7638 a Fs(D)1794 b(listing)599
+b(of)e Fa(cvadx.c)-1734 10674 y Fd(1)1328 b Fg(/*)-1734
+12003 y Fd(2)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)
+-1734 13331 y Fd(3)1909 b Fg(*)581 b($Revision:)i(1.18.2.7)f($)-1734
+14659 y Fd(4)1909 b Fg(*)581 b($Date:)h(2005/04/28)h(20:06:31)f($)-1734
+15988 y Fd(5)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)
+-1734 17316 y Fd(6)1909 b Fg(*)581 b(Programmer\(s\):)j(Radu)d(Serban)h
+(@)g(LLNL)-1734 18645 y Fd(7)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)
+-1734 19973 y Fd(8)1909 b Fg(*)581 b(Copyright)i(\(c\))f(2002,)f(The)h
+(Regents)g(of)g(the)f(University)i(of)e(California.)-1734
+21301 y Fd(9)1909 b Fg(*)581 b(Produced)i(at)e(the)h(Lawrence)g
+(Livermore)h(National)f(Laboratory.)-2140 22630 y Fd(10)1909
+b Fg(*)581 b(All)h(rights)g(reserved.)-2140 23958 y Fd(11)1909
+b Fg(*)581 b(For)h(details,)g(see)g(sundials/cvodes/LICENSE.)-2140
+25286 y Fd(12)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)
+-2140 26615 y Fd(13)1909 b Fg(*)581 b(Adjoint)i(sensitivity)f(example)h
+(problem.)-2140 27943 y Fd(14)1909 b Fg(*)581 b(The)h(following)h(is)e
+(a)g(simple)h(example)h(problem,)f(with)g(the)f(coding)-2140
+29271 y Fd(15)1909 b Fg(*)581 b(needed)h(for)g(its)g(solution)g(by)f
+(CVODES.)i(The)e(problem)h(is)g(from)g(chemical)-2140
+30600 y Fd(16)1909 b Fg(*)581 b(kinetics,)i(and)f(consists)g(of)f(the)h
+(following)g(three)g(rate)g(equations.)-2140 31928 y
+Fd(17)1909 b Fg(*)2325 b(dy1/dt)582 b(=)f(-p1*y1)h(+)g(p2*y2*y3)-2140
+33256 y Fd(18)1909 b Fg(*)2325 b(dy2/dt)582 b(=)1162
+b(p1*y1)582 b(-)g(p2*y2*y3)g(-)f(p3*\(y2\)^2)-2140 34585
+y Fd(19)1909 b Fg(*)2325 b(dy3/dt)582 b(=)1162 b(p3*\(y2\)^2)-2140
+35913 y Fd(20)1909 b Fg(*)581 b(on)h(the)f(interval)i(from)f(t)f(=)g
+(0.0)h(to)f(t)h(=)f(4.e10,)h(with)g(initial)-2140 37241
+y Fd(21)1909 b Fg(*)581 b(conditions:)i(y1)f(=)f(1.0,)h(y2)f(=)g(y3)h
+(=)f(0.)h(The)f(reaction)i(rates)e(are:)-2140 38570 y
+Fd(22)1909 b Fg(*)581 b(p1=0.04,)i(p2=1e4,)f(and)g(p3=3e7.)g(The)f
+(problem)i(is)e(stiff.)-2140 39898 y Fd(23)1909 b Fg(*)581
+b(This)h(program)g(solves)g(the)g(problem)g(with)g(the)g(BDF)f(method,)
+h(Newton)-2140 41227 y Fd(24)1909 b Fg(*)581 b(iteration)i(with)f(the)f
+(CVODE)h(dense)g(linear)g(solver,)g(and)g(a)f(user-supplied)-2140
+42555 y Fd(25)1909 b Fg(*)581 b(Jacobian)i(routine.)-2140
+43883 y Fd(26)1909 b Fg(*)581 b(It)h(uses)g(a)f(scalar)h(relative)g
+(tolerance)h(and)e(a)h(vector)g(absolute)-2140 45212
+y Fd(27)1909 b Fg(*)581 b(tolerance.)-2140 46540 y Fd(28)1909
+b Fg(*)581 b(Output)h(is)g(printed)g(in)g(decades)g(from)g(t)f(=)g(.4)h
+(to)f(t)g(=)h(4.e10.)-2140 47868 y Fd(29)1909 b Fg(*)581
+b(Run)h(statistics)h(\(optional)f(outputs\))h(are)e(printed)h(at)g(the)
+f(end.)-2140 49197 y Fd(30)1909 b Fg(*)-2140 50525 y
+Fd(31)g Fg(*)581 b(Optionally,)i(CVODES)f(can)g(compute)g
+(sensitivities)h(with)f(respect)g(to)-2140 51853 y Fd(32)1909
+b Fg(*)581 b(the)h(problem)g(parameters)h(p1,)e(p2,)h(and)g(p3)f(of)h
+(the)f(following)i(quantity:)-2140 53182 y Fd(33)1909
+b Fg(*)1744 b(G)581 b(=)g(int_t0^t1)i(g\(t,p,y\))f(dt)-2140
+54510 y Fd(34)1909 b Fg(*)581 b(where)-2140 55838 y Fd(35)1909
+b Fg(*)1744 b(g\(t,p,y\))582 b(=)f(y3)-2140 57167 y Fd(36)1909
+b Fg(*)-2140 58495 y Fd(37)g Fg(*)581 b(The)h(gradient)g(dG/dp)g(is)g
+(obtained)g(as:)-2140 59823 y Fd(38)1909 b Fg(*)1744
+b(dG/dp)582 b(=)f(int_t0^t1)h(\(g_p)g(-)f(lambda^T)i(f_p)e(\))h(dt)f(-)
+g(lambda^T\(t0\)*y0_p)-2140 61152 y Fd(39)1909 b Fg(*)5231
+b(=)581 b(-)g(xi^T\(t0\))i(-)e(lambda^T\(t0\)*y0_p)-2140
+62480 y Fd(40)1909 b Fg(*)581 b(where)h(lambda)g(and)g(xi)f(are)h
+(solutions)h(of:)-2140 63808 y Fd(41)1909 b Fg(*)1744
+b(d\(lambda\)/dt)583 b(=)e(-)g(\(f_y\)^T)h(*)g(lambda)g(-)f(\(g_y\)^T)
+-2140 65137 y Fd(42)1909 b Fg(*)1744 b(lambda\(t1\))582
+b(=)g(0)-2140 66465 y Fd(43)1909 b Fg(*)581 b(and)-2140
+67794 y Fd(44)1909 b Fg(*)1744 b(d\(xi\)/dt)582 b(=)f(-)h(\(f_p\)^T)g
+(*)f(lambda)h(+)g(\(g_p\)^T)-2140 69122 y Fd(45)1909
+b Fg(*)1744 b(xi\(t1\))582 b(=)f(0)-2140 70450 y Fd(46)1909
+b Fg(*)-2140 71779 y Fd(47)g Fg(*)581 b(During)h(the)g(backward)g
+(integration,)h(CVODES)f(also)g(evaluates)h(G)e(as)-2140
+73107 y Fd(48)1909 b Fg(*)1744 b(G)581 b(=)g(-)h(phi\(t0\))-2140
+74435 y Fd(49)1909 b Fg(*)581 b(where)-2140 75764 y Fd(50)1909
+b Fg(*)1744 b(d\(phi\)/dt)582 b(=)g(g\(t,y,p\))-2140
+77092 y Fd(51)1909 b Fg(*)1744 b(phi\(t1\))582 b(=)f(0)-2140
+78420 y Fd(52)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)p
+Black 23394 81741 a Ft(86)p Black eop
+%%Page: 87 91
+87 90 bop Black Black 1860 7638 a Fd(53)1909 b Fg(*/)1860
+8966 y Fd(54)1860 10295 y(55)1328 b Fg(#include)582 b(<stdio.h>)1860
+11623 y Fd(56)1328 b Fg(#include)582 b(<stdlib.h>)1860
+12951 y Fd(57)1328 b Fg(#include)582 b("cvodes.h")1860
+14280 y Fd(58)1328 b Fg(#include)582 b("cvodea.h")1860
+15608 y Fd(59)1328 b Fg(#include)582 b("cvdense.h")1860
+16936 y Fd(60)1328 b Fg(#include)582 b("nvector_serial.h")1860
+18265 y Fd(61)1328 b Fg(#include)582 b("sundialstypes.h")1860
+19593 y Fd(62)1328 b Fg(#include)582 b("sundialsmath.h")1860
+20922 y Fd(63)1860 22250 y(64)1328 b Fg(/*)581 b(Accessor)i(macros)f
+(*/)1860 23578 y Fd(65)1860 24907 y(66)1328 b Fg(#define)582
+b(Ith\(v,i\))2326 b(NV_Ith_S\(v,i-1\))4070 b(/*)582 b(i-th)f(vector)h
+(component)h(i=)e(1..NEQ)h(*/)1860 26235 y Fd(67)1328
+b Fg(#define)582 b(IJth\(A,i,j\))h(DENSE_ELEM\(A,i-1,j-1\))h(/*)e
+(\(i,j\)-th)g(matrix)g(component)h(i,j)e(=)g(1..NEQ)i(*/)1860
+27563 y Fd(68)1860 28892 y(69)1328 b Fg(/*)581 b(Problem)i(Constants)f
+(*/)1860 30220 y Fd(70)1860 31548 y(71)1328 b Fg(#define)582
+b(NEQ)3488 b(3)7555 b(/*)581 b(number)h(of)g(equations)10462
+b(*/)1860 32877 y Fd(72)1860 34205 y(73)1328 b Fg(#define)582
+b(RTOL)2907 b(RCONST\(1e-6\))1164 b(/*)581 b(scalar)h(relative)g
+(tolerance)6976 b(*/)1860 35533 y Fd(74)1860 36862 y(75)1328
+b Fg(#define)582 b(ATOL1)2326 b(RCONST\(1e-8\))1164 b(/*)581
+b(vector)h(absolute)g(tolerance)h(components)g(*/)1860
+38190 y Fd(76)1328 b Fg(#define)582 b(ATOL2)2326 b(RCONST\(1e-14\))1860
+39518 y Fd(77)1328 b Fg(#define)582 b(ATOL3)2326 b(RCONST\(1e-6\))1860
+40847 y Fd(78)1860 42175 y(79)1328 b Fg(#define)582 b(ATOLl)2326
+b(RCONST\(1e-5\))1164 b(/*)581 b(absolute)h(tolerance)h(for)e(adjoint)i
+(vars.)f(*/)1860 43504 y Fd(80)1328 b Fg(#define)582
+b(ATOLq)2326 b(RCONST\(1e-6\))1164 b(/*)581 b(absolute)h(tolerance)h
+(for)e(quadratures)1746 b(*/)1860 44832 y Fd(81)1860
+46160 y(82)1328 b Fg(#define)582 b(T0)4069 b(RCONST\(0.0\))1745
+b(/*)581 b(initial)h(time)14530 b(*/)1860 47489 y Fd(83)1328
+b Fg(#define)582 b(TOUT)2907 b(RCONST\(4e7\))1745 b(/*)581
+b(final)h(time)15692 b(*/)1860 48817 y Fd(84)1860 50145
+y(85)1328 b Fg(#define)582 b(TB1)3488 b(RCONST\(4e7\))1745
+b(/*)581 b(starting)h(point)g(for)g(adjoint)g(problem)1745
+b(*/)1860 51474 y Fd(86)1328 b Fg(#define)582 b(TB2)3488
+b(RCONST\(50.0\))1164 b(/*)581 b(starting)h(point)g(for)g(adjoint)g
+(problem)1745 b(*/)1860 52802 y Fd(87)1860 54130 y(88)1328
+b Fg(#define)582 b(STEPS)2326 b(150)6393 b(/*)581 b(number)h(of)g
+(steps)f(between)i(check)f(points)g(*/)1860 55459 y Fd(89)1860
+56787 y(90)1328 b Fg(#define)582 b(NP)4069 b(3)7555 b(/*)581
+b(number)h(of)g(problem)g(parameters)5232 b(*/)1860 58115
+y Fd(91)1860 59444 y(92)1328 b Fg(#define)582 b(ZERO)2907
+b(RCONST\(0.0\))1860 60772 y Fd(93)1860 62100 y(94)1860
+63429 y(95)1328 b Fg(/*)581 b(Type)h(:)f(UserData)i(*/)1860
+64757 y Fd(96)1860 66086 y(97)1328 b Fg(typedef)582 b(struct)g({)1860
+67414 y Fd(98)2490 b Fg(realtype)583 b(p[3];)1860 68742
+y Fd(99)1328 b Fg(})581 b(*UserData;)1454 70071 y Fd(100)1454
+71399 y(101)1328 b Fg(/*)581 b(Prototypes)i(of)f(user-supplied)h
+(functions)f(*/)1454 72727 y Fd(102)1454 74056 y(103)1328
+b Fg(static)582 b(void)g(f\(realtype)g(t,)g(N_Vector)g(y,)g(N_Vector)g
+(ydot,)g(void)g(*f_data\);)1454 75384 y Fd(104)1328 b
+Fg(static)582 b(void)g(Jac\(long)g(int)g(N,)f(DenseMat)i(J,)e(realtype)
+h(t,)1454 76712 y Fd(105)10626 b Fg(N_Vector)583 b(y,)e(N_Vector)i(fy,)
+e(void)h(*jac_data,)1454 78041 y Fd(106)10626 b Fg(N_Vector)583
+b(tmp1,)f(N_Vector)g(tmp2,)g(N_Vector)g(tmp3\);)p Black
+27394 81741 a Ft(87)p Black eop
+%%Page: 88 92
+88 91 bop Black Black -2546 7638 a Fd(107)1328 b Fg(static)582
+b(void)g(fQ\(realtype)h(t,)e(N_Vector)h(y,)g(N_Vector)g(qdot,)g(void)g
+(*fQ_data\);)-2546 8966 y Fd(108)1328 b Fg(static)582
+b(int)g(ewt\(N_Vector)h(y,)e(N_Vector)h(w,)g(void)g(*e_data\);)-2546
+10295 y Fd(109)-2546 11623 y(110)1328 b Fg(static)582
+b(void)g(fB\(realtype)h(t,)e(N_Vector)h(y,)-2546 12951
+y Fd(111)10045 b Fg(N_Vector)583 b(yB,)e(N_Vector)i(yBdot,)f(void)f
+(*f_dataB\);)-2546 14280 y Fd(112)1328 b Fg(static)582
+b(void)g(JacB\(long)g(int)g(NB,)f(DenseMat)i(JB,)e(realtype)i(t,)-2546
+15608 y Fd(113)11208 b Fg(N_Vector)582 b(y,)f(N_Vector)i(yB,)e
+(N_Vector)i(fyB,)e(void)h(*jac_dataB,)-2546 16936 y Fd(114)11208
+b Fg(N_Vector)582 b(tmp1B,)g(N_Vector)g(tmp2B,)g(N_Vector)h(tmp3B\);)
+-2546 18265 y Fd(115)1328 b Fg(static)582 b(void)g(fQB\(realtype)h(t,)e
+(N_Vector)i(y,)e(N_Vector)h(yB,)-2546 19593 y Fd(116)10626
+b Fg(N_Vector)583 b(qBdot,)f(void)g(*fQ_dataB\);)-2546
+20922 y Fd(117)-2546 22250 y(118)-2546 23578 y(119)1328
+b Fg(/*)581 b(Prototypes)i(of)f(private)g(functions)g(*/)-2546
+24907 y Fd(120)-2546 26235 y(121)1328 b Fg(static)582
+b(void)g(PrintOutput\(N_Vector)i(yB,)e(N_Vector)g(qB\);)-2546
+27563 y Fd(122)1328 b Fg(static)582 b(int)g(check_flag\(void)h
+(*flagvalue,)g(char)f(*funcname,)g(int)g(opt\);)-2546
+28892 y Fd(123)-2546 30220 y(124)1328 b Fg(/*)-2546 31548
+y Fd(125)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 32877 y Fd(126)g Fg(*)581 b(MAIN)h(PROGRAM)-2546
+34205 y Fd(127)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 35533 y Fd(128)g Fg(*/)-2546 36862 y Fd(129)-2546
+38190 y(130)1328 b Fg(int)582 b(main\(int)g(argc,)g(char)g(*argv[]\))
+-2546 39518 y Fd(131)1328 b Fg({)-2546 40847 y Fd(132)2490
+b Fg(UserData)583 b(data;)-2546 42175 y Fd(133)-2546
+43504 y(134)2490 b Fg(void)582 b(*cvadj_mem;)-2546 44832
+y Fd(135)2490 b Fg(void)582 b(*cvode_mem;)-2546 46160
+y Fd(136)-2546 47489 y(137)2490 b Fg(realtype)583 b(reltolQ,)f
+(abstolQ;)-2546 48817 y Fd(138)2490 b Fg(N_Vector)583
+b(y,)e(q;)-2546 50145 y Fd(139)-2546 51474 y(140)2490
+b Fg(realtype)583 b(reltolB,)f(abstolB,)g(abstolQB;)-2546
+52802 y Fd(141)2490 b Fg(N_Vector)583 b(yB,)e(qB;)-2546
+54130 y Fd(142)-2546 55459 y(143)2490 b Fg(realtype)583
+b(time;)-2546 56787 y Fd(144)2490 b Fg(int)582 b(flag,)g(ncheck;)-2546
+58115 y Fd(145)-2546 59444 y(146)2490 b Fg(data)582 b(=)f(NULL;)-2546
+60772 y Fd(147)2490 b Fg(cvadj_mem)583 b(=)e(cvode_mem)i(=)e(NULL;)
+-2546 62100 y Fd(148)2490 b Fg(y)582 b(=)f(yB)g(=)h(qB)f(=)g(NULL;)
+-2546 63429 y Fd(149)-2546 64757 y(150)2490 b Fg(/*)582
+b(Print)g(problem)g(description)h(*/)-2546 66086 y Fd(151)2490
+b Fg(printf\("\\n\\n)583 b(Adjoint)f(Sensitivity)h(Example)f(for)g
+(Chemical)g(Kinetics\\n"\);)-2546 67414 y Fd(152)2490
+b Fg(printf\(")583 b
+(-------------------------------------------------\\n\\n"\);)-2546
+68742 y Fd(153)2490 b Fg(printf\("ODE:)583 b(dy1/dt)f(=)g(-p1*y1)g(+)f
+(p2*y2*y3\\n"\);)-2546 70071 y Fd(154)2490 b Fg(printf\(")2907
+b(dy2/dt)582 b(=)1163 b(p1*y1)582 b(-)f(p2*y2*y3)h(-)g
+(p3*\(y2\)^2\\n"\);)-2546 71399 y Fd(155)2490 b Fg(printf\(")2907
+b(dy3/dt)582 b(=)1163 b(p3*\(y2\)^2\\n\\n"\);)-2546 72727
+y Fd(156)2490 b Fg(printf\("Find)583 b(dG/dp)f(for\\n"\);)-2546
+74056 y Fd(157)2490 b Fg(printf\(")2907 b(G)582 b(=)f(int_t0^tB0)h
+(g\(t,p,y\))h(dt\\n"\);)-2546 75384 y Fd(158)2490 b Fg(printf\(")2907
+b(g\(t,p,y\))583 b(=)e(y3\\n\\n\\n"\);)-2546 76712 y
+Fd(159)-2546 78041 y(160)p Black 23394 81741 a Ft(88)p
+Black eop
+%%Page: 89 93
+89 92 bop Black Black 1454 7638 a Fd(161)2490 b Fg(/*)582
+b(User)f(data)h(structure)h(*/)1454 8966 y Fd(162)2490
+b Fg(data)582 b(=)f(\(UserData\))i(malloc\(sizeof)g(*data\);)1454
+10295 y Fd(163)2490 b Fg(if)582 b(\(check_flag\(\(void)h(*\)data,)g
+("malloc",)f(2\)\))g(return\(1\);)1454 11623 y Fd(164)2490
+b Fg(data->p[0])583 b(=)e(RCONST\(0.04\);)1454 12951
+y Fd(165)2490 b Fg(data->p[1])583 b(=)e(RCONST\(1.0e4\);)1454
+14280 y Fd(166)2490 b Fg(data->p[2])583 b(=)e(RCONST\(3.0e7\);)1454
+15608 y Fd(167)1454 16936 y(168)2490 b Fg(/*)582 b(Initialize)g(y)g(*/)
+1454 18265 y Fd(169)2490 b Fg(y)582 b(=)f(N_VNew_Serial\(NEQ\);)1454
+19593 y Fd(170)2490 b Fg(if)582 b(\(check_flag\(\(void)h(*\)y,)f
+("N_VNew_Serial",)i(0\)\))d(return\(1\);)1454 20922 y
+Fd(171)2490 b Fg(Ith\(y,1\))583 b(=)e(RCONST\(1.0\);)1454
+22250 y Fd(172)2490 b Fg(Ith\(y,2\))583 b(=)e(ZERO;)1454
+23578 y Fd(173)2490 b Fg(Ith\(y,3\))583 b(=)e(ZERO;)1454
+24907 y Fd(174)1454 26235 y(175)2490 b Fg(/*)582 b(Initialize)g(q)g(*/)
+1454 27563 y Fd(176)2490 b Fg(q)582 b(=)f(N_VNew_Serial\(1\);)1454
+28892 y Fd(177)2490 b Fg(if)582 b(\(check_flag\(\(void)h(*\)q,)f
+("N_VNew_Serial",)i(0\)\))d(return\(1\);)1454 30220 y
+Fd(178)2490 b Fg(Ith\(q,1\))583 b(=)e(ZERO;)1454 31548
+y Fd(179)1454 32877 y(180)2490 b Fg(/*)582 b(Set)f(the)h(scalar)g
+(realtive)g(and)g(absolute)g(tolerances)h(reltolQ)f(and)g(abstolQ)g(*/)
+1454 34205 y Fd(181)2490 b Fg(reltolQ)582 b(=)g(RTOL;)1454
+35533 y Fd(182)2490 b Fg(abstolQ)582 b(=)g(ATOLq;)1454
+36862 y Fd(183)1454 38190 y(184)2490 b Fg(/*)582 b(Create)g(and)f
+(allocate)i(CVODES)f(memory)g(for)f(forward)i(run)e(*/)1454
+39518 y Fd(185)2490 b Fg(printf\("Create)584 b(and)d(allocate)h(CVODES)
+h(memory)f(for)f(forward)h(runs\\n"\);)1454 40847 y Fd(186)1454
+42175 y(187)2490 b Fg(cvode_mem)583 b(=)e(CVodeCreate\(CV_BDF,)j
+(CV_NEWTON\);)1454 43504 y Fd(188)2490 b Fg(if)582 b
+(\(check_flag\(\(void)h(*\)cvode_mem,)g("CVodeCreate",)h(0\)\))d
+(return\(1\);)1454 44832 y Fd(189)1454 46160 y(190)2490
+b Fg(flag)582 b(=)f(CVodeMalloc\(cvode_mem,)k(f,)c(T0,)h(y,)f(CV_WF,)h
+(0.0,)g(NULL\);)1454 47489 y Fd(191)2490 b Fg(if)582
+b(\(check_flag\(&flag,)i("CVodeMalloc",)f(1\)\))e(return\(1\);)1454
+48817 y Fd(192)1454 50145 y(193)2490 b Fg(flag)582 b(=)f
+(CVodeSetEwtFn\(cvode_mem,)k(ewt,)d(NULL\);)1454 51474
+y Fd(194)2490 b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeSetEwtFn",)f
+(1\)\))f(return\(1\);)1454 52802 y Fd(195)1454 54130
+y(196)2490 b Fg(flag)582 b(=)f(CVodeSetFdata\(cvode_mem,)k(data\);)1454
+55459 y Fd(197)2490 b Fg(if)582 b(\(check_flag\(&flag,)i
+("CVodeSetFdata",)f(1\)\))f(return\(1\);)1454 56787 y
+Fd(198)1454 58115 y(199)2490 b Fg(flag)582 b(=)f(CVDense\(cvode_mem,)j
+(NEQ\);)1454 59444 y Fd(200)2490 b Fg(if)582 b(\(check_flag\(&flag,)i
+("CVDense",)e(1\)\))g(return\(1\);)1454 60772 y Fd(201)1454
+62100 y(202)2490 b Fg(flag)582 b(=)f(CVDenseSetJacFn\(cvode_mem,)k
+(Jac,)d(data\);)1454 63429 y Fd(203)2490 b Fg(if)582
+b(\(check_flag\(&flag,)i("CVDenseSetJacFn",)f(1\)\))f(return\(1\);)1454
+64757 y Fd(204)1454 66086 y(205)2490 b Fg(flag)582 b(=)f
+(CVodeQuadMalloc\(cvode_mem,)k(fQ,)d(q\);)1454 67414
+y Fd(206)2490 b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeQuadMalloc",)f
+(1\)\))f(return\(1\);)1454 68742 y Fd(207)1454 70071
+y(208)2490 b Fg(flag)582 b(=)f(CVodeSetQuadFdata\(cvode_mem,)586
+b(data\);)1454 71399 y Fd(209)2490 b Fg(if)582 b(\(check_flag\(&flag,)i
+("CVodeSetQuadFdata",)g(1\)\))d(return\(1\);)1454 72727
+y Fd(210)1454 74056 y(211)2490 b Fg(flag)582 b(=)f
+(CVodeSetQuadErrCon\(cvode_mem,)586 b(TRUE,)c(CV_SS,)g(reltolQ,)g
+(&abstolQ\);)1454 75384 y Fd(212)2490 b Fg(if)582 b
+(\(check_flag\(&flag,)i("CVodeSetQuadErrCon",)g(1\)\))d(return\(1\);)
+1454 76712 y Fd(213)1454 78041 y(214)2490 b Fg(/*)582
+b(Allocate)g(global)g(memory)g(*/)p Black 27394 81741
+a Ft(89)p Black eop
+%%Page: 90 94
+90 93 bop Black Black -2546 7638 a Fd(215)2490 b Fg(printf\("Allocate)
+584 b(global)e(memory\\n"\);)-2546 8966 y Fd(216)-2546
+10295 y(217)2490 b Fg(cvadj_mem)583 b(=)e(CVadjMalloc\(cvode_mem,)k
+(STEPS\);)-2546 11623 y Fd(218)2490 b Fg(if)582 b(\(check_flag\(\(void)
+h(*\)cvadj_mem,)g("CVadjMalloc",)h(0\)\))d(return\(1\);)-2546
+12951 y Fd(219)-2546 14280 y(220)2490 b Fg(/*)582 b(Perform)g(forward)g
+(run)g(*/)-2546 15608 y Fd(221)2490 b Fg(printf\("Forward)584
+b(integration)e(...)g("\);)-2546 16936 y Fd(222)-2546
+18265 y(223)2490 b Fg(flag)582 b(=)f(CVodeF\(cvadj_mem,)j(TOUT,)e(y,)f
+(&time,)h(CV_NORMAL,)h(&ncheck\);)-2546 19593 y Fd(224)2490
+b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeF",)e(1\)\))g(return\(1\);)
+-2546 20922 y Fd(225)-2546 22250 y(226)2490 b Fg(flag)582
+b(=)f(CVodeGetQuad\(cvode_mem,)k(TOUT,)d(q\);)-2546 23578
+y Fd(227)2490 b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeGetQuad",)f
+(1\)\))f(return\(1\);)-2546 24907 y Fd(228)-2546 26235
+y(229)1328 b Fg(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546
+27563 y Fd(230)2490 b Fg(printf\("done.)583 b(ncheck)f(=)g(\045d)1743
+b(G:)582 b(\04512.4Le)g(\\n",ncheck,)h(Ith\(q,1\)\);)-2546
+28892 y Fd(231)1328 b Fg(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546 30220 y Fd(232)2490
+b Fg(printf\("done.)583 b(ncheck)f(=)g(\045d)1743 b(G:)582
+b(\04512.4le)g(\\n",ncheck,)h(Ith\(q,1\)\);)-2546 31548
+y Fd(233)1328 b Fg(#else)-2546 32877 y Fd(234)2490 b
+Fg(printf\("done.)583 b(ncheck)f(=)g(\045d)1743 b(G:)582
+b(\04512.4e)g(\\n",ncheck,)h(Ith\(q,1\)\);)-2546 34205
+y Fd(235)1328 b Fg(#endif)-2546 35533 y Fd(236)-2546
+36862 y(237)2490 b Fg(/*)582 b(Initialize)g(yB)g(*/)-2546
+38190 y Fd(238)2490 b Fg(yB)582 b(=)f(N_VNew_Serial\(NEQ\);)-2546
+39518 y Fd(239)2490 b Fg(if)582 b(\(check_flag\(\(void)h(*\)yB,)f
+("N_VNew_Serial",)i(0\)\))d(return\(1\);)-2546 40847
+y Fd(240)2490 b Fg(Ith\(yB,1\))583 b(=)e(ZERO;)-2546
+42175 y Fd(241)2490 b Fg(Ith\(yB,2\))583 b(=)e(ZERO;)-2546
+43504 y Fd(242)2490 b Fg(Ith\(yB,3\))583 b(=)e(ZERO;)-2546
+44832 y Fd(243)-2546 46160 y(244)2490 b Fg(/*)582 b(Initialize)g(qB)g
+(*/)-2546 47489 y Fd(245)2490 b Fg(qB)582 b(=)f(N_VNew_Serial\(NP\);)
+-2546 48817 y Fd(246)2490 b Fg(if)582 b(\(check_flag\(\(void)h(*\)qB,)f
+("N_VNew",)h(0\)\))e(return\(1\);)-2546 50145 y Fd(247)2490
+b Fg(Ith\(qB,1\))583 b(=)e(ZERO;)-2546 51474 y Fd(248)2490
+b Fg(Ith\(qB,2\))583 b(=)e(ZERO;)-2546 52802 y Fd(249)2490
+b Fg(Ith\(qB,3\))583 b(=)e(ZERO;)-2546 54130 y Fd(250)-2546
+55459 y(251)2490 b Fg(/*)582 b(Set)f(the)h(scalar)g(relative)g
+(tolerance)h(reltolB)f(*/)-2546 56787 y Fd(252)2490 b
+Fg(reltolB)582 b(=)g(RTOL;)-2546 58115 y Fd(253)-2546
+59444 y(254)2490 b Fg(/*)582 b(Set)f(the)h(scalar)g(absolute)g
+(tolerance)h(abstolB)f(*/)-2546 60772 y Fd(255)2490 b
+Fg(abstolB)582 b(=)g(ATOLl;)-2546 62100 y Fd(256)-2546
+63429 y(257)2490 b Fg(/*)582 b(Set)f(the)h(scalar)g(absolute)g
+(tolerance)h(abstolQB)f(*/)-2546 64757 y Fd(258)2490
+b Fg(abstolQB)583 b(=)e(ATOLq;)-2546 66086 y Fd(259)-2546
+67414 y(260)2490 b Fg(/*)582 b(Create)g(and)f(allocate)i(CVODES)f
+(memory)g(for)f(backward)i(run)e(*/)-2546 68742 y Fd(261)2490
+b Fg(printf\("\\nCreate)584 b(and)d(allocate)i(CVODES)f(memory)g(for)f
+(backward)i(run\\n"\);)-2546 70071 y Fd(262)-2546 71399
+y(263)2490 b Fg(flag)582 b(=)f(CVodeCreateB\(cvadj_mem,)k(CV_BDF,)d
+(CV_NEWTON\);)-2546 72727 y Fd(264)2490 b Fg(if)582 b
+(\(check_flag\(&flag,)i("CVodeCreateB",)f(1\)\))f(return\(1\);)-2546
+74056 y Fd(265)-2546 75384 y(266)2490 b Fg(flag)582 b(=)f
+(CVodeMallocB\(cvadj_mem,)k(fB,)d(TB1,)f(yB,)h(CV_SS,)g(reltolB,)g
+(&abstolB\);)-2546 76712 y Fd(267)2490 b Fg(if)582 b
+(\(check_flag\(&flag,)i("CVodeMallocB",)f(1\)\))f(return\(1\);)-2546
+78041 y Fd(268)p Black 23394 81741 a Ft(90)p Black eop
+%%Page: 91 95
+91 94 bop Black Black 1454 7638 a Fd(269)2490 b Fg(flag)582
+b(=)f(CVodeSetFdataB\(cvadj_mem,)k(data\);)1454 8966
+y Fd(270)2490 b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeSetFdataB",)f
+(1\)\))f(return\(1\);)1454 10295 y Fd(271)1454 11623
+y(272)2490 b Fg(flag)582 b(=)f(CVDenseB\(cvadj_mem,)j(NEQ\);)1454
+12951 y Fd(273)2490 b Fg(if)582 b(\(check_flag\(&flag,)i("CVDenseB",)e
+(1\)\))g(return\(1\);)1454 14280 y Fd(274)1454 15608
+y(275)2490 b Fg(flag)582 b(=)f(CVDenseSetJacFnB\(cvadj_mem,)586
+b(JacB,)581 b(data\);)1454 16936 y Fd(276)2490 b Fg(if)582
+b(\(check_flag\(&flag,)i("CVDenseSetJacFnB",)g(1\)\))d(return\(1\);)
+1454 18265 y Fd(277)1454 19593 y(278)2490 b Fg(flag)582
+b(=)f(CVodeQuadMallocB\(cvadj_mem,)586 b(fQB,)581 b(qB\);)1454
+20922 y Fd(279)2490 b Fg(if)582 b(\(check_flag\(&flag,)i
+("CVodeQuadMallocB",)g(1\)\))d(return\(1\);)1454 22250
+y Fd(280)1454 23578 y(281)2490 b Fg(flag)582 b(=)f
+(CVodeSetQuadFdataB\(cvadj_mem,)586 b(data\);)1454 24907
+y Fd(282)2490 b Fg(if)582 b(\(check_flag\(&flag,)i
+("CVodeSetQuadFdataB",)g(1\)\))d(return\(1\);)1454 26235
+y Fd(283)1454 27563 y(284)2490 b Fg(flag)582 b(=)f
+(CVodeSetQuadErrConB\(cvadj_mem,)586 b(TRUE,)c(CV_SS,)g(reltolB,)g
+(&abstolQB\);)1454 28892 y Fd(285)2490 b Fg(if)582 b
+(\(check_flag\(&flag,)i("CVodeSetQuadErrConB",)g(1\)\))e(return\(1\);)
+1454 30220 y Fd(286)1454 31548 y(287)2490 b Fg(/*)582
+b(Backward)g(Integration)h(*/)1454 32877 y Fd(288)2490
+b Fg(printf\("Integrate)584 b(backwards\\n"\);)1454 34205
+y Fd(289)1454 35533 y(290)2490 b Fg(flag)582 b(=)f(CVodeB\(cvadj_mem,)j
+(T0,)e(yB,)f(&time,)h(CV_NORMAL\);)1454 36862 y Fd(291)2490
+b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeB",)e(1\)\))g(return\(1\);)
+1454 38190 y Fd(292)1454 39518 y(293)2490 b Fg(flag)582
+b(=)f(CVodeGetQuadB\(cvadj_mem,)k(qB\);)1454 40847 y
+Fd(294)2490 b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeGetQuadB",)f
+(1\)\))f(return\(1\);)1454 42175 y Fd(295)1454 43504
+y(296)2490 b Fg(PrintOutput\(yB,)584 b(qB\);)1454 44832
+y Fd(297)1454 46160 y(298)2490 b Fg(/*)582 b(Reinitialize)h(backward)f
+(phase)g(\(new)g(tB0\))f(*/)1454 47489 y Fd(299)2490
+b Fg(Ith\(yB,1\))583 b(=)e(ZERO;)1454 48817 y Fd(300)2490
+b Fg(Ith\(yB,2\))583 b(=)e(ZERO;)1454 50145 y Fd(301)2490
+b Fg(Ith\(yB,3\))583 b(=)e(ZERO;)1454 51474 y Fd(302)1454
+52802 y(303)2490 b Fg(Ith\(qB,1\))583 b(=)e(ZERO;)1454
+54130 y Fd(304)2490 b Fg(Ith\(qB,2\))583 b(=)e(ZERO;)1454
+55459 y Fd(305)2490 b Fg(Ith\(qB,3\))583 b(=)e(ZERO;)1454
+56787 y Fd(306)1454 58115 y(307)2490 b Fg(printf\("Re-initialize)585
+b(CVODES)d(memory)g(for)f(backward)i(run\\n"\);)1454
+59444 y Fd(308)1454 60772 y(309)2490 b Fg(flag)582 b(=)f
+(CVodeReInitB\(cvadj_mem,)k(fB,)d(TB2,)f(yB,)h(CV_SS,)g(reltolB,)g
+(&abstolB\);)1454 62100 y Fd(310)2490 b Fg(if)582 b
+(\(check_flag\(&flag,)i("CVodeReInitB",)f(1\)\))f(return\(1\);)1454
+63429 y Fd(311)1454 64757 y(312)2490 b Fg(flag)582 b(=)f
+(CVodeQuadReInitB\(cvadj_mem,)586 b(fQB,)581 b(qB\);)1454
+66086 y Fd(313)2490 b Fg(if)582 b(\(check_flag\(&flag,)i
+("CVodeQuadReInitB",)g(1\)\))d(return\(1\);)1454 67414
+y Fd(314)1454 68742 y(315)2490 b Fg(/*)582 b(Backward)g(Integration)h
+(*/)1454 70071 y Fd(316)2490 b Fg(printf\("Integrate)584
+b(backwards\\n"\);)1454 71399 y Fd(317)1454 72727 y(318)2490
+b Fg(flag)582 b(=)f(CVodeB\(cvadj_mem,)j(T0,)e(yB,)f(&time,)h
+(CV_NORMAL\);)1454 74056 y Fd(319)2490 b Fg(if)582 b
+(\(check_flag\(&flag,)i("CVodeB",)e(1\)\))g(return\(1\);)1454
+75384 y Fd(320)1454 76712 y(321)2490 b Fg(flag)582 b(=)f
+(CVodeGetQuadB\(cvadj_mem,)k(qB\);)1454 78041 y Fd(322)2490
+b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeGetQuadB",)f(1\)\))f
+(return\(1\);)p Black 27394 81741 a Ft(91)p Black eop
+%%Page: 92 96
+92 95 bop Black Black -2546 7638 a Fd(323)-2546 8966
+y(324)2490 b Fg(PrintOutput\(yB,)584 b(qB\);)-2546 10295
+y Fd(325)-2546 11623 y(326)2490 b Fg(/*)582 b(Free)f(memory)i(*/)-2546
+12951 y Fd(327)2490 b Fg(printf\("Free)583 b(memory\\n\\n"\);)-2546
+14280 y Fd(328)-2546 15608 y(329)2490 b Fg(CVodeFree\(cvode_mem\);)
+-2546 16936 y Fd(330)g Fg(N_VDestroy_Serial\(y\);)-2546
+18265 y Fd(331)g Fg(N_VDestroy_Serial\(q\);)-2546 19593
+y Fd(332)g Fg(N_VDestroy_Serial\(yB\);)-2546 20922 y
+Fd(333)g Fg(N_VDestroy_Serial\(qB\);)-2546 22250 y Fd(334)g
+Fg(CVadjFree\(cvadj_mem\);)-2546 23578 y Fd(335)g Fg(free\(data\);)
+-2546 24907 y Fd(336)-2546 26235 y(337)g Fg(return\(0\);)-2546
+27563 y Fd(338)-2546 28892 y(339)1328 b Fg(})-2546 30220
+y Fd(340)-2546 31548 y(341)g Fg(/*)-2546 32877 y Fd(342)1909
+b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 34205 y Fd(343)g Fg(*)581 b(FUNCTIONS)i(CALLED)f(BY)f(CVODES)
+-2546 35533 y Fd(344)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 36862 y Fd(345)g Fg(*/)-2546 38190 y Fd(346)-2546
+39518 y(347)1328 b Fg(/*)-2546 40847 y Fd(348)1909 b
+Fg(*)581 b(f)h(routine.)g(Compute)g(f\(t,y\).)-2546 42175
+y Fd(349)1328 b Fg(*/)-2546 43504 y Fd(350)-2546 44832
+y(351)g Fg(static)582 b(void)g(f\(realtype)g(t,)g(N_Vector)g(y,)g
+(N_Vector)g(ydot,)g(void)g(*f_data\))-2546 46160 y Fd(352)1328
+b Fg({)-2546 47489 y Fd(353)2490 b Fg(realtype)583 b(y1,)e(y2,)h(y3,)f
+(yd1,)h(yd3;)-2546 48817 y Fd(354)2490 b Fg(UserData)583
+b(data;)-2546 50145 y Fd(355)2490 b Fg(realtype)583 b(p1,)e(p2,)h(p3;)
+-2546 51474 y Fd(356)-2546 52802 y(357)2490 b Fg(y1)582
+b(=)f(Ith\(y,1\);)i(y2)e(=)g(Ith\(y,2\);)i(y3)e(=)h(Ith\(y,3\);)-2546
+54130 y Fd(358)2490 b Fg(data)582 b(=)f(\(UserData\))i(f_data;)-2546
+55459 y Fd(359)2490 b Fg(p1)582 b(=)f(data->p[0];)i(p2)e(=)h
+(data->p[1];)g(p3)g(=)f(data->p[2];)-2546 56787 y Fd(360)-2546
+58115 y(361)2490 b Fg(yd1)582 b(=)f(Ith\(ydot,1\))i(=)e(-p1*y1)h(+)g
+(p2*y2*y3;)-2546 59444 y Fd(362)2490 b Fg(yd3)582 b(=)f(Ith\(ydot,3\))i
+(=)e(p3*y2*y2;)-2546 60772 y Fd(363)5977 b Fg(Ith\(ydot,2\))583
+b(=)e(-yd1)h(-)f(yd3;)-2546 62100 y Fd(364)1328 b Fg(})-2546
+63429 y Fd(365)-2546 64757 y(366)g Fg(/*)-2546 66086
+y Fd(367)1909 b Fg(*)581 b(Jacobian)i(routine.)f(Compute)g(J\(t,y\).)
+-2546 67414 y Fd(368)1328 b Fg(*/)-2546 68742 y Fd(369)-2546
+70071 y(370)g Fg(static)582 b(void)g(Jac\(long)g(int)g(N,)f(DenseMat)i
+(J,)e(realtype)h(t,)-2546 71399 y Fd(371)10626 b Fg(N_Vector)583
+b(y,)e(N_Vector)i(fy,)e(void)h(*jac_data,)-2546 72727
+y Fd(372)10626 b Fg(N_Vector)583 b(tmp1,)f(N_Vector)g(tmp2,)g(N_Vector)
+g(tmp3\))-2546 74056 y Fd(373)1328 b Fg({)-2546 75384
+y Fd(374)2490 b Fg(realtype)583 b(y1,)e(y2,)h(y3;)-2546
+76712 y Fd(375)2490 b Fg(UserData)583 b(data;)-2546 78041
+y Fd(376)2490 b Fg(realtype)583 b(p1,)e(p2,)h(p3;)p Black
+23394 81741 a Ft(92)p Black eop
+%%Page: 93 97
+93 96 bop Black Black 1454 7638 a Fd(377)1454 8966 y(378)2490
+b Fg(y1)582 b(=)f(Ith\(y,1\);)i(y2)e(=)g(Ith\(y,2\);)i(y3)e(=)h
+(Ith\(y,3\);)1454 10295 y Fd(379)2490 b Fg(data)582 b(=)f(\(UserData\))
+i(jac_data;)1454 11623 y Fd(380)2490 b Fg(p1)582 b(=)f(data->p[0];)i
+(p2)e(=)h(data->p[1];)g(p3)g(=)f(data->p[2];)1454 12951
+y Fd(381)1454 14280 y(382)2490 b Fg(IJth\(J,1,1\))583
+b(=)e(-p1;)1163 b(IJth\(J,1,2\))583 b(=)e(p2*y3;)5813
+b(IJth\(J,1,3\))583 b(=)e(p2*y2;)1454 15608 y Fd(383)2490
+b Fg(IJth\(J,2,1\))583 b(=)1163 b(p1;)f(IJth\(J,2,2\))583
+b(=)e(-p2*y3-2*p3*y2;)j(IJth\(J,2,3\))f(=)e(-p2*y2;)1454
+16936 y Fd(384)14113 b Fg(IJth\(J,3,2\))583 b(=)e(2*p3*y2;)1454
+18265 y Fd(385)1328 b Fg(})1454 19593 y Fd(386)1454 20922
+y(387)g Fg(/*)1454 22250 y Fd(388)1909 b Fg(*)581 b(fQ)h(routine.)g
+(Compute)g(fQ\(t,y\).)1454 23578 y Fd(389)1328 b Fg(*/)1454
+24907 y Fd(390)1454 26235 y(391)g Fg(static)582 b(void)g(fQ\(realtype)h
+(t,)e(N_Vector)h(y,)g(N_Vector)g(qdot,)g(void)g(*fQ_data\))1454
+27563 y Fd(392)1328 b Fg({)1454 28892 y Fd(393)2490 b
+Fg(Ith\(qdot,1\))583 b(=)e(Ith\(y,3\);)1454 30220 y Fd(394)1328
+b Fg(})1454 31548 y Fd(395)1454 32877 y(396)g Fg(/*)1454
+34205 y Fd(397)1909 b Fg(*)581 b(EwtSet)h(function.)h(Computes)f(the)g
+(error)g(weights)g(at)f(the)h(current)g(solution.)1454
+35533 y Fd(398)1909 b Fg(*/)1454 36862 y Fd(399)1454
+38190 y(400)1328 b Fg(static)582 b(int)g(ewt\(N_Vector)h(y,)e(N_Vector)
+h(w,)g(void)g(*e_data\))1454 39518 y Fd(401)1328 b Fg({)1454
+40847 y Fd(402)2490 b Fg(int)582 b(i;)1454 42175 y Fd(403)2490
+b Fg(realtype)583 b(yy,)e(ww,)h(rtol,)g(atol[3];)1454
+43504 y Fd(404)1454 44832 y(405)2490 b Fg(rtol)2325 b(=)582
+b(RTOL;)1454 46160 y Fd(406)2490 b Fg(atol[0])582 b(=)g(ATOL1;)1454
+47489 y Fd(407)2490 b Fg(atol[1])582 b(=)g(ATOL2;)1454
+48817 y Fd(408)2490 b Fg(atol[2])582 b(=)g(ATOL3;)1454
+50145 y Fd(409)1454 51474 y(410)2490 b Fg(for)582 b(\(i=1;)g(i<=3;)g
+(i++\))f({)1454 52802 y Fd(411)3653 b Fg(yy)581 b(=)g(Ith\(y,i\);)1454
+54130 y Fd(412)3653 b Fg(ww)581 b(=)g(rtol)h(*)f(ABS\(yy\))i(+)e
+(atol[i-1];)1454 55459 y Fd(413)3653 b Fg(if)581 b(\(ww)h(<=)f(0.0\))h
+(return)g(\(-1\);)1454 56787 y Fd(414)3653 b Fg(Ith\(w,i\))582
+b(=)f(1.0/ww;)1454 58115 y Fd(415)2490 b Fg(})1454 59444
+y Fd(416)1454 60772 y(417)g Fg(return\(0\);)1454 62100
+y Fd(418)1328 b Fg(})1454 63429 y Fd(419)1454 64757 y(420)g
+Fg(/*)1454 66086 y Fd(421)1909 b Fg(*)581 b(fB)h(routine.)g(Compute)g
+(fB\(t,y,yB\).)1454 67414 y Fd(422)1328 b Fg(*/)1454
+68742 y Fd(423)1454 70071 y(424)g Fg(static)582 b(void)g(fB\(realtype)h
+(t,)e(N_Vector)h(y,)g(N_Vector)g(yB,)g(N_Vector)g(yBdot,)g(void)g
+(*f_dataB\))1454 71399 y Fd(425)1328 b Fg({)1454 72727
+y Fd(426)2490 b Fg(UserData)583 b(data;)1454 74056 y
+Fd(427)2490 b Fg(realtype)583 b(y1,)e(y2,)h(y3;)1454
+75384 y Fd(428)2490 b Fg(realtype)583 b(p1,)e(p2,)h(p3;)1454
+76712 y Fd(429)2490 b Fg(realtype)583 b(l1,)e(l2,)h(l3;)1454
+78041 y Fd(430)2490 b Fg(realtype)583 b(l21,)e(l32,)h(y23;)p
+Black 27394 81741 a Ft(93)p Black eop
+%%Page: 94 98
+94 97 bop Black Black -2546 7638 a Fd(431)-2546 8966
+y(432)2490 b Fg(data)582 b(=)f(\(UserData\))i(f_dataB;)-2546
+10295 y Fd(433)-2546 11623 y(434)2490 b Fg(/*)582 b(The)f(p)h(vector)g
+(*/)-2546 12951 y Fd(435)2490 b Fg(p1)582 b(=)f(data->p[0];)i(p2)e(=)h
+(data->p[1];)g(p3)g(=)f(data->p[2];)-2546 14280 y Fd(436)-2546
+15608 y(437)2490 b Fg(/*)582 b(The)f(y)h(vector)g(*/)-2546
+16936 y Fd(438)2490 b Fg(y1)582 b(=)f(Ith\(y,1\);)i(y2)e(=)g
+(Ith\(y,2\);)i(y3)e(=)h(Ith\(y,3\);)-2546 18265 y Fd(439)-2546
+19593 y(440)2490 b Fg(/*)582 b(The)f(lambda)h(vector)g(*/)-2546
+20922 y Fd(441)2490 b Fg(l1)582 b(=)f(Ith\(yB,1\);)i(l2)e(=)g
+(Ith\(yB,2\);)i(l3)f(=)f(Ith\(yB,3\);)-2546 22250 y Fd(442)-2546
+23578 y(443)2490 b Fg(/*)582 b(Temporary)g(variables)h(*/)-2546
+24907 y Fd(444)2490 b Fg(l21)582 b(=)f(l2-l1;)-2546 26235
+y Fd(445)2490 b Fg(l32)582 b(=)f(l3-l2;)-2546 27563 y
+Fd(446)2490 b Fg(y23)582 b(=)f(y2*y3;)-2546 28892 y Fd(447)-2546
+30220 y(448)2490 b Fg(/*)582 b(Load)f(yBdot)h(*/)-2546
+31548 y Fd(449)2490 b Fg(Ith\(yBdot,1\))583 b(=)f(-)f(p1*l21;)-2546
+32877 y Fd(450)2490 b Fg(Ith\(yBdot,2\))583 b(=)f(p2*y3*l21)g(-)f
+(RCONST\(2.0\)*p3*y2*l32;)-2546 34205 y Fd(451)2490 b
+Fg(Ith\(yBdot,3\))583 b(=)f(p2*y2*l21)g(-)f(RCONST\(1.0\);)-2546
+35533 y Fd(452)1328 b Fg(})-2546 36862 y Fd(453)-2546
+38190 y(454)g Fg(/*)-2546 39518 y Fd(455)1909 b Fg(*)581
+b(JacB)h(routine.)h(Compute)f(JB\(t,y,yB\).)-2546 40847
+y Fd(456)1328 b Fg(*/)-2546 42175 y Fd(457)-2546 43504
+y(458)g Fg(static)582 b(void)g(JacB\(long)g(int)g(NB,)f(DenseMat)i(JB,)
+e(realtype)i(t,)-2546 44832 y Fd(459)11208 b Fg(N_Vector)582
+b(y,)f(N_Vector)i(yB,)e(N_Vector)i(fyB,)e(void)h(*jac_dataB,)-2546
+46160 y Fd(460)11208 b Fg(N_Vector)582 b(tmp1B,)g(N_Vector)g(tmp2B,)g
+(N_Vector)h(tmp3B\))-2546 47489 y Fd(461)1328 b Fg({)-2546
+48817 y Fd(462)2490 b Fg(UserData)583 b(data;)-2546 50145
+y Fd(463)2490 b Fg(realtype)583 b(y1,)e(y2,)h(y3;)-2546
+51474 y Fd(464)2490 b Fg(realtype)583 b(p1,)e(p2,)h(p3;)-2546
+52802 y Fd(465)-2546 54130 y(466)2490 b Fg(data)582 b(=)f(\(UserData\))
+i(jac_dataB;)-2546 55459 y Fd(467)-2546 56787 y(468)2490
+b Fg(/*)582 b(The)f(p)h(vector)g(*/)-2546 58115 y Fd(469)2490
+b Fg(p1)582 b(=)f(data->p[0];)i(p2)e(=)h(data->p[1];)g(p3)g(=)f
+(data->p[2];)-2546 59444 y Fd(470)-2546 60772 y(471)2490
+b Fg(/*)582 b(The)f(y)h(vector)g(*/)-2546 62100 y Fd(472)2490
+b Fg(y1)582 b(=)f(Ith\(y,1\);)i(y2)e(=)g(Ith\(y,2\);)i(y3)e(=)h
+(Ith\(y,3\);)-2546 63429 y Fd(473)-2546 64757 y(474)2490
+b Fg(/*)582 b(Load)f(JB)h(*/)-2546 66086 y Fd(475)2490
+b Fg(IJth\(JB,1,1\))583 b(=)f(p1;)2906 b(IJth\(JB,1,2\))583
+b(=)e(-p1;)-2546 67414 y Fd(476)2490 b Fg(IJth\(JB,2,1\))583
+b(=)f(-p2*y3;)g(IJth\(JB,2,2\))h(=)e(p2*y3+2.0*p3*y2;)i(IJth\(JB,2,3\))
+g(=)f(RCONST\(-2.0\)*p3*y2;)-2546 68742 y Fd(477)2490
+b Fg(IJth\(JB,3,1\))583 b(=)f(-p2*y2;)g(IJth\(JB,3,2\))h(=)e(p2*y2;)
+-2546 70071 y Fd(478)1328 b Fg(})-2546 71399 y Fd(479)-2546
+72727 y(480)g Fg(/*)-2546 74056 y Fd(481)1909 b Fg(*)581
+b(fQB)h(routine.)g(Compute)h(integrand)f(for)g(quadratures)-2546
+75384 y Fd(482)1328 b Fg(*/)-2546 76712 y Fd(483)-2546
+78041 y(484)g Fg(static)582 b(void)g(fQB\(realtype)h(t,)e(N_Vector)i
+(y,)e(N_Vector)h(yB,)p Black 23394 81741 a Ft(94)p Black
+eop
+%%Page: 95 99
+95 98 bop Black Black 1454 7638 a Fd(485)10626 b Fg(N_Vector)583
+b(qBdot,)f(void)g(*fQ_dataB\))1454 8966 y Fd(486)1328
+b Fg({)1454 10295 y Fd(487)2490 b Fg(UserData)583 b(data;)1454
+11623 y Fd(488)2490 b Fg(realtype)583 b(y1,)e(y2,)h(y3;)1454
+12951 y Fd(489)2490 b Fg(realtype)583 b(p1,)e(p2,)h(p3;)1454
+14280 y Fd(490)2490 b Fg(realtype)583 b(l1,)e(l2,)h(l3;)1454
+15608 y Fd(491)2490 b Fg(realtype)583 b(l21,)e(l32,)h(y23;)1454
+16936 y Fd(492)1454 18265 y(493)2490 b Fg(data)582 b(=)f(\(UserData\))i
+(fQ_dataB;)1454 19593 y Fd(494)1454 20922 y(495)2490
+b Fg(/*)582 b(The)f(p)h(vector)g(*/)1454 22250 y Fd(496)2490
+b Fg(p1)582 b(=)f(data->p[0];)i(p2)e(=)h(data->p[1];)g(p3)g(=)f
+(data->p[2];)1454 23578 y Fd(497)1454 24907 y(498)2490
+b Fg(/*)582 b(The)f(y)h(vector)g(*/)1454 26235 y Fd(499)2490
+b Fg(y1)582 b(=)f(Ith\(y,1\);)i(y2)e(=)g(Ith\(y,2\);)i(y3)e(=)h
+(Ith\(y,3\);)1454 27563 y Fd(500)1454 28892 y(501)2490
+b Fg(/*)582 b(The)f(lambda)h(vector)g(*/)1454 30220 y
+Fd(502)2490 b Fg(l1)582 b(=)f(Ith\(yB,1\);)i(l2)e(=)g(Ith\(yB,2\);)i
+(l3)f(=)f(Ith\(yB,3\);)1454 31548 y Fd(503)1454 32877
+y(504)2490 b Fg(/*)582 b(Temporary)g(variables)h(*/)1454
+34205 y Fd(505)2490 b Fg(l21)582 b(=)f(l2-l1;)1454 35533
+y Fd(506)2490 b Fg(l32)582 b(=)f(l3-l2;)1454 36862 y
+Fd(507)2490 b Fg(y23)582 b(=)f(y2*y3;)1454 38190 y Fd(508)1454
+39518 y(509)2490 b Fg(Ith\(qBdot,1\))583 b(=)f(y1*l21;)1454
+40847 y Fd(510)2490 b Fg(Ith\(qBdot,2\))583 b(=)f(-)f(y23*l21;)1454
+42175 y Fd(511)2490 b Fg(Ith\(qBdot,3\))583 b(=)f(y2*y2*l32;)1454
+43504 y Fd(512)1328 b Fg(})1454 44832 y Fd(513)1454 46160
+y(514)g Fg(/*)1454 47489 y Fd(515)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)1454 48817 y Fd(516)g Fg(*)581 b(PRIVATE)i(FUNCTIONS)1454
+50145 y Fd(517)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)1454 51474 y Fd(518)g Fg(*/)1454 52802 y Fd(519)1454
+54130 y(520)1328 b Fg(/*)1454 55459 y Fd(521)1909 b Fg(*)581
+b(Print)h(results)h(after)e(backward)i(integration)1454
+56787 y Fd(522)1909 b Fg(*/)1454 58115 y Fd(523)1454
+59444 y(524)1328 b Fg(static)582 b(void)g(PrintOutput\(N_Vector)i(yB,)e
+(N_Vector)g(qB\))1454 60772 y Fd(525)1328 b Fg({)1454
+62100 y Fd(526)2490 b Fg
+(printf\("--------------------------------------------------------\\)p
+(n"\);)1454 63429 y Fd(527)1328 b Fg(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))1454 64757 y
+Fd(528)2490 b Fg(printf\("tB0:)4651 b(\04512.4Le\\n",TB1\);)1454
+66086 y Fd(529)2490 b Fg(printf\("dG/dp:)3489 b(\04512.4Le)582
+b(\04512.4Le)h(\04512.4Le\\n",)1454 67414 y Fd(530)6558
+b Fg(-Ith\(qB,1\),)583 b(-Ith\(qB,2\),)g(-Ith\(qB,3\)\);)1454
+68742 y Fd(531)2490 b Fg(printf\("lambda\(t0\):)584 b(\04512.4Le)e
+(\04512.4Le)h(\04512.4Le\\n",)1454 70071 y Fd(532)6558
+b Fg(Ith\(yB,1\),)583 b(Ith\(yB,2\),)g(Ith\(yB,3\)\);)1454
+71399 y Fd(533)1328 b Fg(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))1454 72727 y Fd(534)2490
+b Fg(printf\("tB0:)4651 b(\04512.4le\\n",TB1\);)1454
+74056 y Fd(535)2490 b Fg(printf\("dG/dp:)3489 b(\04512.4le)582
+b(\04512.4le)h(\04512.4le\\n",)1454 75384 y Fd(536)6558
+b Fg(-Ith\(qB,1\),)583 b(-Ith\(qB,2\),)g(-Ith\(qB,3\)\);)1454
+76712 y Fd(537)2490 b Fg(printf\("lambda\(t0\):)584 b(\04512.4le)e
+(\04512.4le)h(\04512.4le\\n",)1454 78041 y Fd(538)6558
+b Fg(Ith\(yB,1\),)583 b(Ith\(yB,2\),)g(Ith\(yB,3\)\);)p
+Black 27394 81741 a Ft(95)p Black eop
+%%Page: 96 100
+96 99 bop Black Black -2546 7638 a Fd(539)1328 b Fg(#else)-2546
+8966 y Fd(540)2490 b Fg(printf\("tB0:)4651 b(\04512.4e\\n",TB1\);)-2546
+10295 y Fd(541)2490 b Fg(printf\("dG/dp:)3489 b(\04512.4e)582
+b(\04512.4e)g(\04512.4e\\n",)-2546 11623 y Fd(542)6558
+b Fg(-Ith\(qB,1\),)583 b(-Ith\(qB,2\),)g(-Ith\(qB,3\)\);)-2546
+12951 y Fd(543)2490 b Fg(printf\("lambda\(t0\):)584 b(\04512.4e)e
+(\04512.4e)g(\04512.4e\\n",)-2546 14280 y Fd(544)6558
+b Fg(Ith\(yB,1\),)583 b(Ith\(yB,2\),)g(Ith\(yB,3\)\);)-2546
+15608 y Fd(545)1328 b Fg(#endif)-2546 16936 y Fd(546)2490
+b Fg
+(printf\("--------------------------------------------------------\\)p
+(n\\n"\);)-2546 18265 y Fd(547)1328 b Fg(})-2546 19593
+y Fd(548)-2546 20922 y(549)g Fg(/*)-2546 22250 y Fd(550)1909
+b Fg(*)581 b(Check)h(function)h(return)f(value.)-2546
+23578 y Fd(551)1909 b Fg(*)2325 b(opt)581 b(==)h(0)f(means)h(SUNDIALS)g
+(function)h(allocates)f(memory)g(so)g(check)g(if)-2546
+24907 y Fd(552)1909 b Fg(*)7555 b(returned)583 b(NULL)e(pointer)-2546
+26235 y Fd(553)1909 b Fg(*)2325 b(opt)581 b(==)h(1)f(means)h(SUNDIALS)g
+(function)h(returns)f(a)f(flag)h(so)f(check)h(if)-2546
+27563 y Fd(554)1909 b Fg(*)7555 b(flag)582 b(>=)f(0)-2546
+28892 y Fd(555)1909 b Fg(*)2325 b(opt)581 b(==)h(2)f(means)h(function)g
+(allocates)h(memory)f(so)f(check)h(if)g(returned)-2546
+30220 y Fd(556)1909 b Fg(*)7555 b(NULL)582 b(pointer)-2546
+31548 y Fd(557)1909 b Fg(*/)-2546 32877 y Fd(558)-2546
+34205 y(559)1328 b Fg(static)582 b(int)g(check_flag\(void)h
+(*flagvalue,)g(char)f(*funcname,)g(int)g(opt\))-2546
+35533 y Fd(560)1328 b Fg({)-2546 36862 y Fd(561)2490
+b Fg(int)582 b(*errflag;)-2546 38190 y Fd(562)-2546 39518
+y(563)2490 b Fg(/*)582 b(Check)g(if)f(SUNDIALS)h(function)h(returned)f
+(NULL)g(pointer)g(-)f(no)h(memory)g(allocated)g(*/)-2546
+40847 y Fd(564)2490 b Fg(if)582 b(\(opt)f(==)h(0)f(&&)h(flagvalue)g(==)
+g(NULL\))g({)-2546 42175 y Fd(565)3653 b Fg(fprintf\(stderr,)583
+b("\\nSUNDIALS_ERROR:)h(\045s\(\))e(failed)g(-)f(returned)h(NULL)g
+(pointer\\n\\n",)-2546 43504 y Fd(566)8302 b Fg(funcname\);)-2546
+44832 y Fd(567)3653 b Fg(return\(1\);)582 b(})-2546 46160
+y Fd(568)-2546 47489 y(569)2490 b Fg(/*)582 b(Check)g(if)f(flag)h(<)f
+(0)g(*/)-2546 48817 y Fd(570)2490 b Fg(else)582 b(if)f(\(opt)h(==)g
+(1\))f({)-2546 50145 y Fd(571)3653 b Fg(errflag)582 b(=)f(\(int)h(*\))f
+(flagvalue;)-2546 51474 y Fd(572)3653 b Fg(if)581 b(\(*errflag)i(<)e
+(0\))g({)-2546 52802 y Fd(573)4815 b Fg(fprintf\(stderr,)583
+b("\\nSUNDIALS_ERROR:)h(\045s\(\))e(failed)g(with)g(flag)f(=)h
+(\045d\\n\\n",)-2546 54130 y Fd(574)9464 b Fg(funcname,)583
+b(*errflag\);)-2546 55459 y Fd(575)4815 b Fg(return\(1\);)583
+b(}})-2546 56787 y Fd(576)-2546 58115 y(577)2490 b Fg(/*)582
+b(Check)g(if)f(function)h(returned)h(NULL)f(pointer)g(-)f(no)g(memory)h
+(allocated)h(*/)-2546 59444 y Fd(578)2490 b Fg(else)582
+b(if)f(\(opt)h(==)g(2)f(&&)g(flagvalue)i(==)e(NULL\))h({)-2546
+60772 y Fd(579)3653 b Fg(fprintf\(stderr,)583 b("\\nMEMORY_ERROR:)h
+(\045s\(\))d(failed)h(-)g(returned)g(NULL)g(pointer\\n\\n",)-2546
+62100 y Fd(580)8302 b Fg(funcname\);)-2546 63429 y Fd(581)3653
+b Fg(return\(1\);)582 b(})-2546 64757 y Fd(582)-2546
+66086 y(583)2490 b Fg(return\(0\);)-2546 67414 y Fd(584)1328
+b Fg(})p Black 23394 81741 a Ft(96)p Black eop
+%%Page: 97 101
+97 100 bop Black Black 4000 7638 a Fs(E)1793 b(Listing)599
+b(of)f Fa(pvanx.c)2266 10674 y Fd(1)1328 b Fg(/*)2266
+12003 y Fd(2)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)2266
+13331 y Fd(3)1909 b Fg(*)581 b($Revision:)i(1.17.2.3)f($)2266
+14659 y Fd(4)1909 b Fg(*)581 b($Date:)h(2005/04/28)h(20:06:28)f($)2266
+15988 y Fd(5)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)2266
+17316 y Fd(6)1909 b Fg(*)581 b(Programmer\(s\):)j(Radu)d(Serban)h(@)g
+(LLNL)2266 18645 y Fd(7)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)2266
+19973 y Fd(8)1909 b Fg(*)581 b(Example)i(problem:)2266
+21301 y Fd(9)1909 b Fg(*)1860 22630 y Fd(10)g Fg(*)581
+b(The)h(following)h(is)e(a)g(simple)h(example)h(problem,)f(with)g(the)f
+(program)h(for)1860 23958 y Fd(11)1909 b Fg(*)581 b(its)h(solution)g
+(by)g(CVODE.)g(The)f(problem)i(is)e(the)h(semi-discrete)h(form)f(of)
+1860 25286 y Fd(12)1909 b Fg(*)581 b(the)h(advection-diffusion)i
+(equation)e(in)g(1-D:)1860 26615 y Fd(13)1909 b Fg(*)1744
+b(du/dt)582 b(=)f(p1)g(*)h(d^2u)f(/)h(dx^2)f(+)h(p2)f(*)h(du)f(/)g(dx)
+1860 27943 y Fd(14)1909 b Fg(*)581 b(on)h(the)f(interval)i(0)e(<=)h(x)f
+(<=)g(2,)h(and)f(the)h(time)g(interval)g(0)f(<=)h(t)f(<=)h(5.)1860
+29271 y Fd(15)1909 b Fg(*)581 b(Homogeneous)i(Dirichlet)g(boundary)f
+(conditions)h(are)e(posed,)h(and)g(the)1860 30600 y Fd(16)1909
+b Fg(*)581 b(initial)i(condition)f(is:)1860 31928 y Fd(17)1909
+b Fg(*)1744 b(u\(x,t=0\))582 b(=)f(x\(2-x\)exp\(2x\).)1860
+33256 y Fd(18)1909 b Fg(*)581 b(The)h(nominal)g(values)g(of)g(the)f
+(two)h(parameters)h(are:)e(p1=1.0,)h(p2=0.5)1860 34585
+y Fd(19)1909 b Fg(*)581 b(The)h(PDE)g(is)f(discretized)i(on)e(a)h
+(uniform)g(grid)g(of)f(size)h(MX+2)f(with)1860 35913
+y Fd(20)1909 b Fg(*)581 b(central)i(differencing,)g(and)e(with)h
+(boundary)g(values)g(eliminated,)1860 37241 y Fd(21)1909
+b Fg(*)581 b(leaving)i(an)e(ODE)h(system)g(of)f(size)h(NEQ)g(=)f(MX.)
+1860 38570 y Fd(22)1909 b Fg(*)581 b(This)h(program)g(solves)g(the)g
+(problem)g(with)g(the)g(option)g(for)f(nonstiff)1860
+39898 y Fd(23)1909 b Fg(*)581 b(systems:)i(ADAMS)f(method)g(and)f
+(functional)i(iteration.)1860 41227 y Fd(24)1909 b Fg(*)581
+b(It)h(uses)g(scalar)g(relative)g(and)g(absolute)g(tolerances.)1860
+42555 y Fd(25)1909 b Fg(*)1860 43883 y Fd(26)g Fg(*)581
+b(In)h(addition)g(to)g(the)f(solution,)i(sensitivities)g(with)f
+(respect)g(to)f(p1)1860 45212 y Fd(27)1909 b Fg(*)581
+b(and)h(p2)f(as)h(well)g(as)f(with)h(respect)g(to)g(initial)g
+(conditions)g(are)1860 46540 y Fd(28)1909 b Fg(*)581
+b(computed)i(for)e(the)h(quantity:)1860 47868 y Fd(29)1909
+b Fg(*)2325 b(g\(t,)582 b(u,)f(p\))h(=)f(int_x)h(u\(x,t\))g(at)f(t)h(=)
+f(5)1860 49197 y Fd(30)1909 b Fg(*)581 b(These)h(sensitivities)h(are)f
+(obtained)g(by)g(solving)g(the)g(adjoint)g(system:)1860
+50525 y Fd(31)1909 b Fg(*)2325 b(dv/dt)582 b(=)f(-p1)h(*)f(d^2)h(v)f(/)
+g(dx^2)h(+)f(p2)h(*)f(dv)g(/)h(dx)1860 51853 y Fd(32)1909
+b Fg(*)581 b(with)h(homogeneous)h(Ditrichlet)g(boundary)f(conditions)h
+(and)e(the)h(final)1860 53182 y Fd(33)1909 b Fg(*)581
+b(condition:)1860 54510 y Fd(34)1909 b Fg(*)2325 b(v\(x,t=5\))582
+b(=)g(1.0)1860 55838 y Fd(35)1909 b Fg(*)581 b(Then,)h(v\(x,)g(t=0\))g
+(represents)g(the)g(sensitivity)h(of)e(g\(5\))h(with)g(respect)1860
+57167 y Fd(36)1909 b Fg(*)581 b(to)h(u\(x,)g(t=0\))f(and)h(the)g
+(gradient)g(of)f(g\(5\))h(with)g(respect)g(to)f(p1,)h(p2)g(is)1860
+58495 y Fd(37)1909 b Fg(*)2325 b(\(dg/dp\)^T)582 b(=)g([)1162
+b(int_t)582 b(int_x)g(\(v)f(*)h(d^2u)f(/)h(dx^2\))g(dx)f(dt)g(])1860
+59823 y Fd(38)1909 b Fg(*)9299 b([)1162 b(int_t)582 b(int_x)g(\(v)f(*)h
+(du)f(/)g(dx\))h(dx)f(dt)2906 b(])1860 61152 y Fd(39)1909
+b Fg(*)1860 62480 y Fd(40)g Fg(*)581 b(This)h(version)g(uses)g(MPI)g
+(for)f(user)h(routines.)1860 63808 y Fd(41)1909 b Fg(*)581
+b(Execute)i(with)e(Number)h(of)g(Processors)h(=)e(N,)1162
+b(with)582 b(1)f(<=)h(N)f(<=)h(MX.)1860 65137 y Fd(42)1909
+b Fg(*)581 b
+(-----------------------------------------------------------------)1860
+66465 y Fd(43)1909 b Fg(*/)1860 67794 y Fd(44)1860 69122
+y(45)1328 b Fg(#include)582 b(<stdio.h>)1860 70450 y
+Fd(46)1328 b Fg(#include)582 b(<stdlib.h>)1860 71779
+y Fd(47)1328 b Fg(#include)582 b(<math.h>)1860 73107
+y Fd(48)1328 b Fg(#include)582 b("mpi.h")1860 74435 y
+Fd(49)1328 b Fg(#include)582 b("cvodes.h")1860 75764
+y Fd(50)1328 b Fg(#include)582 b("cvodea.h")1860 77092
+y Fd(51)1328 b Fg(#include)582 b("nvector_parallel.h")1860
+78420 y Fd(52)1328 b Fg(#include)582 b("sundialstypes.h")p
+Black 27394 81741 a Ft(97)p Black eop
+%%Page: 98 102
+98 101 bop Black Black -2140 7638 a Fd(53)-2140 8966
+y(54)-2140 10295 y(55)1328 b Fg(/*)581 b(Problem)i(Constants)f(*/)-2140
+11623 y Fd(56)-2140 12951 y(57)1328 b Fg(#define)582
+b(XMAX)1163 b(RCONST\(2.0\))1745 b(/*)582 b(domain)g(boundary)6975
+b(*/)-2140 14280 y Fd(58)1328 b Fg(#define)582 b(MX)2325
+b(20)6974 b(/*)582 b(mesh)f(dimension)7557 b(*/)-2140
+15608 y Fd(59)1328 b Fg(#define)582 b(NEQ)1744 b(MX)6974
+b(/*)582 b(number)g(of)f(equations)4651 b(*/)-2140 16936
+y Fd(60)1328 b Fg(#define)582 b(ATOL)1163 b(RCONST\(1.e-5\))583
+b(/*)f(scalar)g(absolute)g(tolerance)1164 b(*/)-2140
+18265 y Fd(61)1328 b Fg(#define)582 b(T0)2325 b(RCONST\(0.0\))1745
+b(/*)582 b(initial)g(time)8718 b(*/)-2140 19593 y Fd(62)1328
+b Fg(#define)582 b(TOUT)1163 b(RCONST\(2.5\))1745 b(/*)582
+b(output)g(time)f(increment)3489 b(*/)-2140 20922 y Fd(63)-2140
+22250 y(64)1328 b Fg(/*)581 b(Adjoint)i(Problem)f(Constants)g(*/)-2140
+23578 y Fd(65)-2140 24907 y(66)1328 b Fg(#define)582
+b(NP)2325 b(2)6974 b(/*)581 b(number)i(of)e(parameters)4069
+b(*/)-2140 26235 y Fd(67)1328 b Fg(#define)582 b(STEPS)g(200)5812
+b(/*)581 b(steps)h(between)h(check)e(points)h(*/)-2140
+27563 y Fd(68)-2140 28892 y(69)1328 b Fg(#define)582
+b(ZERO)g(RCONST\(0.0\))-2140 30220 y Fd(70)1328 b Fg(#define)582
+b(ONE)1163 b(RCONST\(1.0\))-2140 31548 y Fd(71)1328 b
+Fg(#define)582 b(TWO)1163 b(RCONST\(2.0\))-2140 32877
+y Fd(72)-2140 34205 y(73)1328 b Fg(/*)581 b(Type)h(:)f(UserData)i(*/)
+-2140 35533 y Fd(74)-2140 36862 y(75)1328 b Fg(typedef)582
+b(struct)g({)-2140 38190 y Fd(76)2490 b Fg(realtype)583
+b(p[2];)6974 b(/*)582 b(model)g(parameters)14530 b(*/)-2140
+39518 y Fd(77)2490 b Fg(realtype)583 b(dx;)8136 b(/*)582
+b(spatial)g(discretization)h(grid)8137 b(*/)-2140 40847
+y Fd(78)2490 b Fg(realtype)583 b(hdcoef,)f(hacoef;)1163
+b(/*)582 b(diffusion)g(and)g(advection)g(coefficients)2908
+b(*/)-2140 42175 y Fd(79)2490 b Fg(long)582 b(int)g(local_N;)-2140
+43504 y Fd(80)2490 b Fg(long)582 b(int)g(npes,)g(my_pe;)2906
+b(/*)582 b(total)g(number)g(of)f(processes)h(and)g(current)g(ID)g(*/)
+-2140 44832 y Fd(81)2490 b Fg(long)582 b(int)g(nperpe,)g(nrem;)-2140
+46160 y Fd(82)2490 b Fg(MPI_Comm)583 b(comm;)6974 b(/*)582
+b(MPI)f(communicator)14531 b(*/)-2140 47489 y Fd(83)2490
+b Fg(realtype)583 b(*z1,)e(*z2;)4650 b(/*)582 b(work)f(space)18017
+b(*/)-2140 48817 y Fd(84)1328 b Fg(})581 b(*UserData;)-2140
+50145 y Fd(85)-2140 51474 y(86)1328 b Fg(/*)581 b(Prototypes)i(of)f
+(user-supplied)h(funcitons)f(*/)-2140 52802 y Fd(87)-2140
+54130 y(88)1328 b Fg(static)582 b(void)g(f\(realtype)g(t,)g(N_Vector)g
+(u,)g(N_Vector)g(udot,)g(void)g(*f_data\);)-2140 55459
+y Fd(89)1328 b Fg(static)582 b(void)g(fB\(realtype)h(t,)e(N_Vector)h
+(u,)-2140 56787 y Fd(90)10045 b Fg(N_Vector)583 b(uB,)e(N_Vector)i
+(uBdot,)f(void)f(*f_dataB\);)-2140 58115 y Fd(91)-2140
+59444 y(92)1328 b Fg(/*)581 b(Prototypes)i(of)f(private)g(functions)g
+(*/)-2140 60772 y Fd(93)-2140 62100 y(94)1328 b Fg(static)582
+b(void)g(SetIC\(N_Vector)h(u,)e(realtype)i(dx,)e(long)h(int)g
+(my_length,)g(long)g(int)g(my_base\);)-2140 63429 y Fd(95)1328
+b Fg(static)582 b(void)g(SetICback\(N_Vector)i(uB,)d(long)h(int)g
+(my_base\);)-2140 64757 y Fd(96)1328 b Fg(static)582
+b(realtype)g(Xintgr\(realtype)i(*z,)d(long)h(int)g(l,)f(realtype)h
+(dx\);)-2140 66086 y Fd(97)1328 b Fg(static)582 b(realtype)g
+(Compute_g\(N_Vector)i(u,)e(UserData)g(data\);)-2140
+67414 y Fd(98)1328 b Fg(static)582 b(void)g(PrintOutput\(realtype)i
+(g_val,)e(N_Vector)g(uB,)g(UserData)g(data\);)-2140 68742
+y Fd(99)1328 b Fg(static)582 b(int)g(check_flag\(void)h(*flagvalue,)g
+(char)f(*funcname,)g(int)g(opt,)g(int)f(id\);)-2546 70071
+y Fd(100)-2546 71399 y(101)1328 b Fg(/*)-2546 72727 y
+Fd(102)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 74056 y Fd(103)g Fg(*)581 b(MAIN)h(PROGRAM)-2546
+75384 y Fd(104)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 76712 y Fd(105)g Fg(*/)-2546 78041 y Fd(106)p
+Black 23394 81741 a Ft(98)p Black eop
+%%Page: 99 103
+99 102 bop Black Black 1454 7638 a Fd(107)1328 b Fg(int)582
+b(main\(int)g(argc,)g(char)g(*argv[]\))1454 8966 y Fd(108)1328
+b Fg({)1454 10295 y Fd(109)2490 b Fg(UserData)583 b(data;)1454
+11623 y Fd(110)1454 12951 y(111)2490 b Fg(void)582 b(*cvadj_mem;)1454
+14280 y Fd(112)2490 b Fg(void)582 b(*cvode_mem;)1454
+15608 y Fd(113)1454 16936 y(114)2490 b Fg(N_Vector)583
+b(u;)1454 18265 y Fd(115)2490 b Fg(realtype)583 b(reltol,)f(abstol;)
+1454 19593 y Fd(116)1454 20922 y(117)2490 b Fg(N_Vector)583
+b(uB;)1454 22250 y Fd(118)1454 23578 y(119)2490 b Fg(realtype)583
+b(dx,)e(t,)h(g_val;)1454 24907 y Fd(120)2490 b Fg(int)582
+b(flag,)g(my_pe,)g(nprocs,)g(npes,)g(ncheck;)1454 26235
+y Fd(121)2490 b Fg(long)582 b(int)g(local_N=0,)g(nperpe,)g(nrem,)g
+(my_base=0;)1454 27563 y Fd(122)1454 28892 y(123)2490
+b Fg(MPI_Comm)583 b(comm;)1454 30220 y Fd(124)1454 31548
+y(125)2490 b Fg(data)582 b(=)f(NULL;)1454 32877 y Fd(126)2490
+b Fg(cvadj_mem)583 b(=)e(cvode_mem)i(=)e(NULL;)1454 34205
+y Fd(127)2490 b Fg(u)582 b(=)f(uB)g(=)h(NULL;)1454 35533
+y Fd(128)1454 36862 y(129)2490 b Fg
+(/*------------------------------------------------------)1454
+38190 y Fd(130)3653 b Fg(Initialize)582 b(MPI)g(and)f(get)h(total)g
+(number)g(of)f(pe's,)h(and)g(my_pe)1454 39518 y Fd(131)3653
+b Fg(------------------------------------------------------*/)1454
+40847 y Fd(132)2490 b Fg(MPI_Init\(&argc,)584 b(&argv\);)1454
+42175 y Fd(133)2490 b Fg(comm)582 b(=)f(MPI_COMM_WORLD;)1454
+43504 y Fd(134)2490 b Fg(MPI_Comm_size\(comm,)584 b(&nprocs\);)1454
+44832 y Fd(135)2490 b Fg(MPI_Comm_rank\(comm,)584 b(&my_pe\);)1454
+46160 y Fd(136)1454 47489 y(137)2490 b Fg(npes)582 b(=)f(nprocs)h(-)g
+(1;)f(/*)h(pe's)f(dedicated)i(to)e(PDE)h(integration)h(*/)1454
+48817 y Fd(138)1454 50145 y(139)2490 b Fg(if)582 b(\()f(npes)h(<=)f(0)h
+(\))f({)1454 51474 y Fd(140)3653 b Fg(if)581 b(\(my_pe)h(==)g(npes\))
+1454 52802 y Fd(141)4815 b Fg(fprintf\(stderr,)583 b
+("\\nMPI_ERROR\(\045d\):)h(number)e(of)f(processes)i(must)f(be)f(>=)h
+(2\\n\\n",)1454 54130 y Fd(142)9464 b Fg(my_pe\);)1454
+55459 y Fd(143)3653 b Fg(MPI_Finalize\(\);)1454 56787
+y Fd(144)g Fg(return\(1\);)1454 58115 y Fd(145)2490 b
+Fg(})1454 59444 y Fd(146)1454 60772 y(147)g Fg
+(/*-----------------------)1454 62100 y Fd(148)3653 b
+Fg(Set)581 b(local)h(vector)g(length)1454 63429 y Fd(149)3653
+b Fg(-----------------------*/)1454 64757 y Fd(150)2490
+b Fg(nperpe)582 b(=)g(NEQ/npes;)1454 66086 y Fd(151)2490
+b Fg(nrem)582 b(=)f(NEQ)h(-)f(npes*nperpe;)1454 67414
+y Fd(152)2490 b Fg(if)582 b(\(my_pe)g(<)f(npes\))h({)1454
+68742 y Fd(153)1454 70071 y(154)3653 b Fg(/*)581 b(PDE)h(vars.)g
+(distributed)g(to)g(this)g(proccess)g(*/)1454 71399 y
+Fd(155)3653 b Fg(local_N)582 b(=)f(\(my_pe)h(<)f(nrem\))h(?)g(nperpe+1)
+g(:)f(nperpe;)1454 72727 y Fd(156)3653 b Fg(my_base)582
+b(=)f(\(my_pe)h(<)f(nrem\))h(?)g(my_pe*local_N)h(:)e(my_pe*nperpe)i(+)e
+(nrem;)1454 74056 y Fd(157)1454 75384 y(158)2490 b Fg(})582
+b(else)f({)1454 76712 y Fd(159)1454 78041 y(160)3653
+b Fg(/*)581 b(Make)h(last)g(process)g(inactive)g(for)g(forward)g(phase)
+g(*/)p Black 27394 81741 a Ft(99)p Black eop
+%%Page: 100 104
+100 103 bop Black Black -2546 7638 a Fd(161)3653 b Fg(local_N)582
+b(=)f(0;)-2546 8966 y Fd(162)-2546 10295 y(163)2490 b
+Fg(})-2546 11623 y Fd(164)-2546 12951 y(165)g Fg
+(/*-------------------------------------)-2546 14280
+y Fd(166)3653 b Fg(Allocate)582 b(and)g(load)f(user)h(data)g(structure)
+-2546 15608 y Fd(167)3653 b Fg(-------------------------------------*/)
+-2546 16936 y Fd(168)2490 b Fg(data)582 b(=)f(\(UserData\))i
+(malloc\(sizeof)g(*data\);)-2546 18265 y Fd(169)2490
+b Fg(if)582 b(\(check_flag\(\(void)h(*\)data)f(,)g("malloc",)g(2,)g
+(my_pe\)\))g(MPI_Abort\(comm,)h(1\);)-2546 19593 y Fd(170)2490
+b Fg(data->p[0])583 b(=)e(ONE;)-2546 20922 y Fd(171)2490
+b Fg(data->p[1])583 b(=)e(RCONST\(0.5\);)-2546 22250
+y Fd(172)2490 b Fg(dx)582 b(=)f(data->dx)h(=)g
+(XMAX/\(\(realtype\)\(MX+1\)\);)-2546 23578 y Fd(173)2490
+b Fg(data->hdcoef)583 b(=)f(data->p[0]/\(dx*dx\);)-2546
+24907 y Fd(174)2490 b Fg(data->hacoef)583 b(=)f(data->p[1]/\(TWO*dx\);)
+-2546 26235 y Fd(175)2490 b Fg(data->comm)583 b(=)e(comm;)-2546
+27563 y Fd(176)2490 b Fg(data->npes)583 b(=)e(npes;)-2546
+28892 y Fd(177)2490 b Fg(data->my_pe)583 b(=)e(my_pe;)-2546
+30220 y Fd(178)2490 b Fg(data->nperpe)583 b(=)f(nperpe;)-2546
+31548 y Fd(179)2490 b Fg(data->nrem)583 b(=)e(nrem;)-2546
+32877 y Fd(180)2490 b Fg(data->local_N)583 b(=)f(local_N;)-2546
+34205 y Fd(181)-2546 35533 y(182)2490 b Fg(/*-------------------------)
+-2546 36862 y Fd(183)3653 b Fg(Forward)582 b(integration)h(phase)-2546
+38190 y Fd(184)3653 b Fg(-------------------------*/)-2546
+39518 y Fd(185)-2546 40847 y(186)2490 b Fg(/*)582 b(Set)f(relative)i
+(and)e(absolute)i(tolerances)f(for)g(forward)g(phase)g(*/)-2546
+42175 y Fd(187)2490 b Fg(reltol)582 b(=)g(ZERO;)-2546
+43504 y Fd(188)2490 b Fg(abstol)582 b(=)g(ATOL;)-2546
+44832 y Fd(189)-2546 46160 y(190)2490 b Fg(/*)582 b(Allocate)g(and)g
+(initialize)g(forward)h(variables)f(*/)-2546 47489 y
+Fd(191)2490 b Fg(u)582 b(=)f(N_VNew_Parallel\(comm,)j(local_N,)f
+(NEQ\);)-2546 48817 y Fd(192)2490 b Fg(if)582 b(\(check_flag\(\(void)h
+(*\)u,)f("N_VNew_Parallel",)i(0,)d(my_pe\)\))i(MPI_Abort\(comm,)g(1\);)
+-2546 50145 y Fd(193)2490 b Fg(SetIC\(u,)583 b(dx,)e(local_N,)i
+(my_base\);)-2546 51474 y Fd(194)-2546 52802 y(195)2490
+b Fg(/*)582 b(Allocate)g(CVODES)g(memory)g(for)g(forward)g(integration)
+h(*/)-2546 54130 y Fd(196)2490 b Fg(cvode_mem)583 b(=)e
+(CVodeCreate\(CV_ADAMS,)j(CV_FUNCTIONAL\);)-2546 55459
+y Fd(197)2490 b Fg(if)582 b(\(check_flag\(\(void)h(*\)cvode_mem,)g
+("CVodeCreate",)h(0,)d(my_pe\)\))h(MPI_Abort\(comm,)i(1\);)-2546
+56787 y Fd(198)-2546 58115 y(199)2490 b Fg(flag)582 b(=)f
+(CVodeSetFdata\(cvode_mem,)k(data\);)-2546 59444 y Fd(200)2490
+b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeSetFdata",)f(1,)f(my_pe\)\))
+g(MPI_Abort\(comm,)h(1\);)-2546 60772 y Fd(201)-2546
+62100 y(202)2490 b Fg(flag)582 b(=)f(CVodeMalloc\(cvode_mem,)k(f,)c
+(T0,)h(u,)f(CV_SS,)h(reltol,)g(&abstol\);)-2546 63429
+y Fd(203)2490 b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeMalloc",)f(1,)
+e(my_pe\)\))h(MPI_Abort\(comm,)i(1\);)-2546 64757 y Fd(204)-2546
+66086 y(205)2490 b Fg(/*)582 b(Allocate)g(combined)g(forward/backward)i
+(memory)e(*/)-2546 67414 y Fd(206)2490 b Fg(cvadj_mem)583
+b(=)e(CVadjMalloc\(cvode_mem,)k(STEPS\);)-2546 68742
+y Fd(207)2490 b Fg(if)582 b(\(check_flag\(\(void)h(*\)cvadj_mem,)g
+("CVadjMalloc",)h(0,)d(my_pe\)\))h(MPI_Abort\(comm,)i(1\);)-2546
+70071 y Fd(208)-2546 71399 y(209)2490 b Fg(/*)582 b(Integrate)g(to)g
+(TOUT)f(and)h(collect)g(check)g(point)g(information)h(*/)-2546
+72727 y Fd(210)2490 b Fg(flag)582 b(=)f(CVodeF\(cvadj_mem,)j(TOUT,)e
+(u,)f(&t,)h(CV_NORMAL,)h(&ncheck\);)-2546 74056 y Fd(211)2490
+b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeF",)e(1,)g(my_pe\)\))g
+(MPI_Abort\(comm,)h(1\);)-2546 75384 y Fd(212)-2546 76712
+y(213)2490 b Fg(if\(my_pe)583 b(==)e(npes\))-2546 78041
+y Fd(214)3653 b Fg(printf\("\(PE#)583 b(\045d\))e(Number)h(of)g(check)g
+(points:)g(\045d\\n",my_pe,)h(ncheck\);)p Black 23091
+81741 a Ft(100)p Black eop
+%%Page: 101 105
+101 104 bop Black Black 1454 7638 a Fd(215)1454 8966
+y(216)2490 b Fg(/*---------------------------)1454 10295
+y Fd(217)3653 b Fg(Compute)582 b(and)f(value)h(of)g(g\(t_f\))1454
+11623 y Fd(218)3653 b Fg(---------------------------*/)1454
+12951 y Fd(219)2490 b Fg(g_val)582 b(=)f(Compute_g\(u,)i(data\);)1454
+14280 y Fd(220)1454 15608 y(221)2490 b Fg(/*--------------------------)
+1454 16936 y Fd(222)3653 b Fg(Backward)582 b(integration)h(phase)1454
+18265 y Fd(223)3653 b Fg(--------------------------*/)1454
+19593 y Fd(224)1454 20922 y(225)2490 b Fg(if)582 b(\(my_pe)g(==)f
+(npes\))h({)1454 22250 y Fd(226)1454 23578 y(227)3653
+b Fg(/*)581 b(Activate)h(last)g(process)g(for)g(integration)h(of)e(the)
+h(quadrature)g(equations)h(*/)1454 24907 y Fd(228)3653
+b Fg(local_N)582 b(=)f(NP;)1454 26235 y Fd(229)1454 27563
+y(230)2490 b Fg(})582 b(else)f({)1454 28892 y Fd(231)1454
+30220 y(232)3653 b Fg(/*)581 b(Allocate)h(work)g(space)g(*/)1454
+31548 y Fd(233)3653 b Fg(data->z1)582 b(=)f(\(realtype)i
+(*\)malloc\(local_N*sizeof\(realtype\)\);)1454 32877
+y Fd(234)3653 b Fg(if)581 b(\(check_flag\(\(void)j(*\)data->z1,)f
+("malloc",)f(2,)f(my_pe\)\))i(MPI_Abort\(comm,)g(1\);)1454
+34205 y Fd(235)3653 b Fg(data->z2)582 b(=)f(\(realtype)i
+(*\)malloc\(local_N*sizeof\(realtype\)\);)1454 35533
+y Fd(236)3653 b Fg(if)581 b(\(check_flag\(\(void)j(*\)data->z2,)f
+("malloc",)f(2,)f(my_pe\)\))i(MPI_Abort\(comm,)g(1\);)1454
+36862 y Fd(237)1454 38190 y(238)2490 b Fg(})1454 39518
+y Fd(239)1454 40847 y(240)g Fg(/*)582 b(Allocate)g(and)g(initialize)g
+(backward)h(variables)f(*/)1454 42175 y Fd(241)2490 b
+Fg(uB)582 b(=)f(N_VNew_Parallel\(comm,)j(local_N,)f(NEQ+NP\);)1454
+43504 y Fd(242)2490 b Fg(if)582 b(\(check_flag\(\(void)h(*\)uB,)f
+("N_VNew_Parallel",)i(0,)e(my_pe\)\))g(MPI_Abort\(comm,)h(1\);)1454
+44832 y Fd(243)2490 b Fg(SetICback\(uB,)583 b(my_base\);)1454
+46160 y Fd(244)1454 47489 y(245)2490 b Fg(/*)582 b(Allocate)g(CVODES)g
+(memory)g(for)g(the)f(backward)i(integration)f(*/)1454
+48817 y Fd(246)2490 b Fg(flag)582 b(=)f(CVodeCreateB\(cvadj_mem,)k
+(CV_ADAMS,)d(CV_FUNCTIONAL\);)1454 50145 y Fd(247)2490
+b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeCreateB",)f(1,)e(my_pe\)\))i
+(MPI_Abort\(comm,)g(1\);)1454 51474 y Fd(248)2490 b Fg(flag)582
+b(=)f(CVodeSetFdataB\(cvadj_mem,)k(data\);)1454 52802
+y Fd(249)2490 b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeSetFdataB",)f
+(1,)f(my_pe\)\))g(MPI_Abort\(comm,)h(1\);)1454 54130
+y Fd(250)2490 b Fg(flag)582 b(=)f(CVodeMallocB\(cvadj_mem,)k(fB,)d
+(TOUT,)f(uB,)h(CV_SS,)g(reltol,)g(&abstol\);)1454 55459
+y Fd(251)2490 b Fg(if)582 b(\(check_flag\(&flag,)i("CVodeMallocB",)f
+(1,)e(my_pe\)\))i(MPI_Abort\(comm,)g(1\);)1454 56787
+y Fd(252)1454 58115 y(253)2490 b Fg(/*)582 b(Integrate)g(to)g(T0)f(*/)
+1454 59444 y Fd(254)2490 b Fg(flag)582 b(=)f(CVodeB\(cvadj_mem,)j(T0,)e
+(uB,)f(&t,)h(CV_NORMAL\);)1454 60772 y Fd(255)2490 b
+Fg(if)582 b(\(check_flag\(&flag,)i("CVodeB",)e(1,)g(my_pe\)\))g
+(MPI_Abort\(comm,)h(1\);)1454 62100 y Fd(256)1454 63429
+y(257)2490 b Fg(/*)582 b(Print)g(results)g(\(adjoint)g(states)g(and)g
+(quadrature)g(variables\))h(*/)1454 64757 y Fd(258)2490
+b Fg(PrintOutput\(g_val,)584 b(uB,)e(data\);)1454 66086
+y Fd(259)1454 67414 y(260)1454 68742 y(261)2490 b Fg(/*)582
+b(Free)f(memory)i(*/)1454 70071 y Fd(262)2490 b Fg
+(N_VDestroy_Parallel\(u\);)1454 71399 y Fd(263)g Fg
+(N_VDestroy_Parallel\(uB\);)1454 72727 y Fd(264)g Fg
+(CVodeFree\(cvode_mem\);)1454 74056 y Fd(265)g Fg
+(CVadjFree\(cvadj_mem\);)1454 75384 y Fd(266)g Fg(if)582
+b(\(my_pe)g(!=)f(npes\))h({)1454 76712 y Fd(267)3653
+b Fg(free\(data->z1\);)1454 78041 y Fd(268)g Fg(free\(data->z2\);)p
+Black 27091 81741 a Ft(101)p Black eop
+%%Page: 102 106
+102 105 bop Black Black -2546 7638 a Fd(269)2490 b Fg(})-2546
+8966 y Fd(270)g Fg(free\(data\);)-2546 10295 y Fd(271)-2546
+11623 y(272)g Fg(MPI_Finalize\(\);)-2546 12951 y Fd(273)-2546
+14280 y(274)g Fg(return\(0\);)-2546 15608 y Fd(275)1328
+b Fg(})-2546 16936 y Fd(276)-2546 18265 y(277)g Fg(/*)-2546
+19593 y Fd(278)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 20922 y Fd(279)g Fg(*)581 b(FUNCTIONS)i(CALLED)f(BY)f(CVODES)
+-2546 22250 y Fd(280)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 23578 y Fd(281)g Fg(*/)-2546 24907 y Fd(282)-2546
+26235 y(283)1328 b Fg(/*)-2546 27563 y Fd(284)1909 b
+Fg(*)581 b(f)h(routine.)g(Compute)g(f\(t,u\))g(for)g(forward)g(phase.)
+-2546 28892 y Fd(285)1909 b Fg(*/)-2546 30220 y Fd(286)-2546
+31548 y(287)1328 b Fg(static)582 b(void)g(f\(realtype)g(t,)g(N_Vector)g
+(u,)g(N_Vector)g(udot,)g(void)g(*f_data\))-2546 32877
+y Fd(288)1328 b Fg({)-2546 34205 y Fd(289)2490 b Fg(realtype)583
+b(uLeft,)f(uRight,)g(ui,)f(ult,)h(urt;)-2546 35533 y
+Fd(290)2490 b Fg(realtype)583 b(hordc,)f(horac,)g(hdiff,)g(hadv;)-2546
+36862 y Fd(291)2490 b Fg(realtype)583 b(*udata,)f(*dudata;)-2546
+38190 y Fd(292)2490 b Fg(long)582 b(int)g(i,)f(my_length;)-2546
+39518 y Fd(293)2490 b Fg(int)582 b(npes,)g(my_pe,)g(my_pe_m1,)g
+(my_pe_p1,)h(last_pe,)f(my_last;)-2546 40847 y Fd(294)2490
+b Fg(UserData)583 b(data;)-2546 42175 y Fd(295)2490 b
+Fg(MPI_Status)583 b(status;)-2546 43504 y Fd(296)2490
+b Fg(MPI_Comm)583 b(comm;)-2546 44832 y Fd(297)-2546
+46160 y(298)2490 b Fg(/*)582 b(Extract)g(MPI)g(info.)f(from)h(data)g
+(*/)-2546 47489 y Fd(299)2490 b Fg(data)582 b(=)f(\(UserData\))i
+(f_data;)-2546 48817 y Fd(300)2490 b Fg(comm)582 b(=)f(data->comm;)
+-2546 50145 y Fd(301)2490 b Fg(npes)582 b(=)f(data->npes;)-2546
+51474 y Fd(302)2490 b Fg(my_pe)582 b(=)f(data->my_pe;)-2546
+52802 y Fd(303)-2546 54130 y(304)2490 b Fg(/*)582 b(If)f(this)h
+(process)g(is)g(inactive,)g(return)g(now)g(*/)-2546 55459
+y Fd(305)2490 b Fg(if)582 b(\(my_pe)g(==)f(npes\))h(return;)-2546
+56787 y Fd(306)-2546 58115 y(307)2490 b Fg(/*)582 b(Extract)g(problem)g
+(constants)h(from)e(data)h(*/)-2546 59444 y Fd(308)2490
+b Fg(hordc)582 b(=)f(data->hdcoef;)-2546 60772 y Fd(309)2490
+b Fg(horac)582 b(=)f(data->hacoef;)-2546 62100 y Fd(310)-2546
+63429 y(311)2490 b Fg(/*)582 b(Find)f(related)i(processes)f(*/)-2546
+64757 y Fd(312)2490 b Fg(my_pe_m1)583 b(=)e(my_pe)h(-)f(1;)-2546
+66086 y Fd(313)2490 b Fg(my_pe_p1)583 b(=)e(my_pe)h(+)f(1;)-2546
+67414 y Fd(314)2490 b Fg(last_pe)582 b(=)g(npes)g(-)f(1;)-2546
+68742 y Fd(315)-2546 70071 y(316)2490 b Fg(/*)582 b(Obtain)g(local)g
+(arrays)g(*/)-2546 71399 y Fd(317)2490 b Fg(udata)582
+b(=)f(NV_DATA_P\(u\);)-2546 72727 y Fd(318)2490 b Fg(dudata)582
+b(=)g(NV_DATA_P\(udot\);)-2546 74056 y Fd(319)2490 b
+Fg(my_length)583 b(=)e(NV_LOCLENGTH_P\(u\);)-2546 75384
+y Fd(320)2490 b Fg(my_last)582 b(=)g(my_length)g(-)g(1;)-2546
+76712 y Fd(321)-2546 78041 y(322)2490 b Fg(/*)582 b(Pass)f(needed)i
+(data)e(to)h(processes)g(before)g(and)g(after)g(current)g(process.)g
+(*/)p Black 23091 81741 a Ft(102)p Black eop
+%%Page: 103 107
+103 106 bop Black Black 1454 7638 a Fd(323)3071 b Fg(if)582
+b(\(my_pe)g(!=)f(0\))1454 8966 y Fd(324)4234 b Fg(MPI_Send\(&udata[0],)
+584 b(1,)d(PVEC_REAL_MPI_TYPE,)j(my_pe_m1,)f(0,)e(comm\);)1454
+10295 y Fd(325)3071 b Fg(if)582 b(\(my_pe)g(!=)f(last_pe\))1454
+11623 y Fd(326)4234 b Fg(MPI_Send\(&udata[my_length-1],)585
+b(1,)d(PVEC_REAL_MPI_TYPE,)i(my_pe_p1,)e(0,)g(comm\);)1454
+12951 y Fd(327)1454 14280 y(328)2490 b Fg(/*)582 b(Receive)g(needed)g
+(data)g(from)f(processes)i(before)f(and)g(after)f(current)i(process.)f
+(*/)1454 15608 y Fd(329)3071 b Fg(if)582 b(\(my_pe)g(!=)f(0\))1454
+16936 y Fd(330)4234 b Fg(MPI_Recv\(&uLeft,)583 b(1,)f
+(PVEC_REAL_MPI_TYPE,)i(my_pe_m1,)e(0,)g(comm,)g(&status\);)1454
+18265 y Fd(331)3071 b Fg(else)582 b(uLeft)g(=)f(ZERO;)1454
+19593 y Fd(332)3071 b Fg(if)582 b(\(my_pe)g(!=)f(last_pe\))1454
+20922 y Fd(333)4234 b Fg(MPI_Recv\(&uRight,)583 b(1,)f
+(PVEC_REAL_MPI_TYPE,)i(my_pe_p1,)e(0,)g(comm,)1454 22250
+y Fd(334)9464 b Fg(&status\);)1454 23578 y Fd(335)3071
+b Fg(else)582 b(uRight)g(=)g(ZERO;)1454 24907 y Fd(336)1454
+26235 y(337)2490 b Fg(/*)582 b(Loop)f(over)h(all)g(grid)g(points)g(in)f
+(current)h(process.)h(*/)1454 27563 y Fd(338)2490 b Fg(for)582
+b(\(i=0;)g(i<my_length;)h(i++\))e({)1454 28892 y Fd(339)1454
+30220 y(340)3653 b Fg(/*)581 b(Extract)h(u)g(at)f(x_i)h(and)f(two)h
+(neighboring)h(points)f(*/)1454 31548 y Fd(341)3653 b
+Fg(ui)581 b(=)g(udata[i];)1454 32877 y Fd(342)3653 b
+Fg(ult)581 b(=)g(\(i==0\))i(?)e(uLeft:)h(udata[i-1];)1454
+34205 y Fd(343)3653 b Fg(urt)581 b(=)g(\(i==my_length-1\))j(?)d(uRight)
+h(:)g(udata[i+1];)1454 35533 y Fd(344)1454 36862 y(345)3653
+b Fg(/*)581 b(Set)h(diffusion)g(and)g(advection)g(terms)g(and)g(load)f
+(into)h(udot)g(*/)1454 38190 y Fd(346)3653 b Fg(hdiff)581
+b(=)h(hordc*\(ult)g(-)g(TWO*ui)g(+)f(urt\);)1454 39518
+y Fd(347)3653 b Fg(hadv)581 b(=)h(horac*\(urt)g(-)g(ult\);)1454
+40847 y Fd(348)3653 b Fg(dudata[i])582 b(=)f(hdiff)h(+)g(hadv;)1454
+42175 y Fd(349)2490 b Fg(})1454 43504 y Fd(350)1328 b
+Fg(})1454 44832 y Fd(351)1454 46160 y(352)g Fg(/*)1454
+47489 y Fd(353)1909 b Fg(*)581 b(fB)h(routine.)g(Compute)g(right)g
+(hand)g(side)g(of)f(backward)i(problem)1454 48817 y Fd(354)1909
+b Fg(*/)1454 50145 y Fd(355)1454 51474 y(356)1328 b Fg(static)582
+b(void)g(fB\(realtype)h(t,)e(N_Vector)h(u,)1454 52802
+y Fd(357)10045 b Fg(N_Vector)583 b(uB,)e(N_Vector)i(uBdot,)f(void)f
+(*f_dataB\))1454 54130 y Fd(358)1328 b Fg({)1454 55459
+y Fd(359)2490 b Fg(realtype)583 b(*uBdata,)f(*duBdata,)g(*udata;)1454
+56787 y Fd(360)2490 b Fg(realtype)583 b(uBLeft,)f(uBRight,)g(uBi,)g
+(uBlt,)g(uBrt;)1454 58115 y Fd(361)2490 b Fg(realtype)583
+b(uLeft,)f(uRight,)g(ui,)f(ult,)h(urt;)1454 59444 y Fd(362)2490
+b Fg(realtype)583 b(dx,)e(hordc,)h(horac,)g(hdiff,)g(hadv;)1454
+60772 y Fd(363)2490 b Fg(realtype)583 b(*z1,)e(*z2,)h(intgr1,)g
+(intgr2;)1454 62100 y Fd(364)2490 b Fg(long)582 b(int)g(i,)f
+(my_length;)1454 63429 y Fd(365)2490 b Fg(int)582 b(npes,)g(my_pe,)g
+(my_pe_m1,)g(my_pe_p1,)h(last_pe,)f(my_last;)1454 64757
+y Fd(366)2490 b Fg(UserData)583 b(data;)1454 66086 y
+Fd(367)2490 b Fg(realtype)583 b(data_in[2],)f(data_out[2];)1454
+67414 y Fd(368)2490 b Fg(MPI_Status)583 b(status;)1454
+68742 y Fd(369)2490 b Fg(MPI_Comm)583 b(comm;)1454 70071
+y Fd(370)1454 71399 y(371)2490 b Fg(/*)582 b(Extract)g(MPI)g(info.)f
+(from)h(data)g(*/)1454 72727 y Fd(372)2490 b Fg(data)582
+b(=)f(\(UserData\))i(f_dataB;)1454 74056 y Fd(373)2490
+b Fg(comm)582 b(=)f(data->comm;)1454 75384 y Fd(374)2490
+b Fg(npes)582 b(=)f(data->npes;)1454 76712 y Fd(375)2490
+b Fg(my_pe)582 b(=)f(data->my_pe;)1454 78041 y Fd(376)p
+Black 27091 81741 a Ft(103)p Black eop
+%%Page: 104 108
+104 107 bop Black Black -2546 7638 a Fd(377)2490 b Fg(if)582
+b(\(my_pe)g(==)f(npes\))h({)f(/*)h(This)g(process)g(performs)g(the)g
+(quadratures)h(*/)-2546 8966 y Fd(378)-2546 10295 y(379)3653
+b Fg(/*)581 b(Obtain)h(local)g(arrays)g(*/)-2546 11623
+y Fd(380)3653 b Fg(duBdata)582 b(=)f(NV_DATA_P\(uBdot\);)-2546
+12951 y Fd(381)3653 b Fg(my_length)582 b(=)f(NV_LOCLENGTH_P\(uB\);)
+-2546 14280 y Fd(382)-2546 15608 y(383)3653 b Fg(/*)581
+b(Loop)h(over)g(all)f(other)h(processes)h(and)e(load)h(right)g(hand)f
+(side)h(of)g(quadrature)g(eqs.)g(*/)-2546 16936 y Fd(384)3653
+b Fg(duBdata[0])582 b(=)g(ZERO;)-2546 18265 y Fd(385)3653
+b Fg(duBdata[1])582 b(=)g(ZERO;)-2546 19593 y Fd(386)3653
+b Fg(for)581 b(\(i=0;)h(i<npes;)g(i++\))g({)-2546 20922
+y Fd(387)4815 b Fg(MPI_Recv\(&intgr1,)584 b(1,)d(PVEC_REAL_MPI_TYPE,)j
+(i,)d(0,)h(comm,)g(&status\);)-2546 22250 y Fd(388)4815
+b Fg(duBdata[0])583 b(+=)e(intgr1;)-2546 23578 y Fd(389)4815
+b Fg(MPI_Recv\(&intgr2,)584 b(1,)d(PVEC_REAL_MPI_TYPE,)j(i,)d(0,)h
+(comm,)g(&status\);)-2546 24907 y Fd(390)4815 b Fg(duBdata[1])583
+b(+=)e(intgr2;)-2546 26235 y Fd(391)3653 b Fg(})-2546
+27563 y Fd(392)-2546 28892 y(393)2490 b Fg(})582 b(else)f({)h(/*)f
+(This)h(process)g(integrates)h(part)e(of)h(the)f(PDE)h(*/)-2546
+30220 y Fd(394)-2546 31548 y(395)3653 b Fg(/*)581 b(Extract)h(problem)g
+(constants)h(and)f(work)f(arrays)h(from)g(data)g(*/)-2546
+32877 y Fd(396)3653 b Fg(dx)2324 b(=)582 b(data->dx;)-2546
+34205 y Fd(397)3653 b Fg(hordc)581 b(=)h(data->hdcoef;)-2546
+35533 y Fd(398)3653 b Fg(horac)581 b(=)h(data->hacoef;)-2546
+36862 y Fd(399)3653 b Fg(z1)2324 b(=)582 b(data->z1;)-2546
+38190 y Fd(400)3653 b Fg(z2)2324 b(=)582 b(data->z2;)-2546
+39518 y Fd(401)-2546 40847 y(402)3653 b Fg(/*)581 b(Obtain)h(local)g
+(arrays)g(*/)-2546 42175 y Fd(403)3653 b Fg(uBdata)582
+b(=)f(NV_DATA_P\(uB\);)-2546 43504 y Fd(404)3653 b Fg(duBdata)582
+b(=)f(NV_DATA_P\(uBdot\);)-2546 44832 y Fd(405)3653 b
+Fg(udata)581 b(=)h(NV_DATA_P\(u\);)-2546 46160 y Fd(406)3653
+b Fg(my_length)582 b(=)f(NV_LOCLENGTH_P\(uB\);)-2546
+47489 y Fd(407)-2546 48817 y(408)3653 b Fg(/*)581 b(Compute)h(related)g
+(parameters.)h(*/)-2546 50145 y Fd(409)3653 b Fg(my_pe_m1)582
+b(=)f(my_pe)h(-)f(1;)-2546 51474 y Fd(410)3653 b Fg(my_pe_p1)582
+b(=)f(my_pe)h(+)f(1;)-2546 52802 y Fd(411)3653 b Fg(last_pe)1163
+b(=)581 b(npes)h(-)f(1;)-2546 54130 y Fd(412)3653 b Fg(my_last)1163
+b(=)581 b(my_length)i(-)e(1;)-2546 55459 y Fd(413)-2546
+56787 y(414)3653 b Fg(/*)581 b(Pass)h(needed)g(data)g(to)f(processes)i
+(before)f(and)f(after)h(current)g(process.)h(*/)-2546
+58115 y Fd(415)3653 b Fg(if)581 b(\(my_pe)h(!=)g(0\))f({)-2546
+59444 y Fd(416)4815 b Fg(data_out[0])583 b(=)e(udata[0];)-2546
+60772 y Fd(417)4815 b Fg(data_out[1])583 b(=)e(uBdata[0];)-2546
+62100 y Fd(418)-2546 63429 y(419)4815 b Fg(MPI_Send\(data_out,)584
+b(2,)d(PVEC_REAL_MPI_TYPE,)j(my_pe_m1,)f(0,)e(comm\);)-2546
+64757 y Fd(420)3653 b Fg(})-2546 66086 y Fd(421)g Fg(if)581
+b(\(my_pe)h(!=)g(last_pe\))g({)-2546 67414 y Fd(422)4815
+b Fg(data_out[0])583 b(=)e(udata[my_length-1];)-2546
+68742 y Fd(423)4815 b Fg(data_out[1])583 b(=)e(uBdata[my_length-1];)
+-2546 70071 y Fd(424)-2546 71399 y(425)4815 b Fg(MPI_Send\(data_out,)
+584 b(2,)d(PVEC_REAL_MPI_TYPE,)j(my_pe_p1,)f(0,)e(comm\);)-2546
+72727 y Fd(426)3653 b Fg(})-2546 74056 y Fd(427)-2546
+75384 y(428)g Fg(/*)581 b(Receive)h(needed)g(data)g(from)g(processes)g
+(before)g(and)g(after)g(current)g(process.)g(*/)-2546
+76712 y Fd(429)3653 b Fg(if)581 b(\(my_pe)h(!=)g(0\))f({)-2546
+78041 y Fd(430)4815 b Fg(MPI_Recv\(data_in,)584 b(2,)d
+(PVEC_REAL_MPI_TYPE,)j(my_pe_m1,)e(0,)g(comm,)g(&status\);)p
+Black 23091 81741 a Ft(104)p Black eop
+%%Page: 105 109
+105 108 bop Black Black 1454 7638 a Fd(431)1454 8966
+y(432)4815 b Fg(uLeft)582 b(=)f(data_in[0];)1454 10295
+y Fd(433)4815 b Fg(uBLeft)582 b(=)f(data_in[1];)1454
+11623 y Fd(434)3653 b Fg(})581 b(else)h({)1454 12951
+y Fd(435)4815 b Fg(uLeft)582 b(=)f(ZERO;)1454 14280 y
+Fd(436)4815 b Fg(uBLeft)582 b(=)f(ZERO;)1454 15608 y
+Fd(437)3653 b Fg(})1454 16936 y Fd(438)g Fg(if)581 b(\(my_pe)h(!=)g
+(last_pe\))g({)1454 18265 y Fd(439)4815 b Fg(MPI_Recv\(data_in,)584
+b(2,)d(PVEC_REAL_MPI_TYPE,)j(my_pe_p1,)e(0,)g(comm,)g(&status\);)1454
+19593 y Fd(440)1454 20922 y(441)4815 b Fg(uRight)582
+b(=)f(data_in[0];)1454 22250 y Fd(442)4815 b Fg(uBRight)582
+b(=)f(data_in[1];)1454 23578 y Fd(443)3653 b Fg(})581
+b(else)h({)1454 24907 y Fd(444)4815 b Fg(uRight)582 b(=)f(ZERO;)1454
+26235 y Fd(445)4815 b Fg(uBRight)582 b(=)f(ZERO;)1454
+27563 y Fd(446)3653 b Fg(})1454 28892 y Fd(447)1454 30220
+y(448)g Fg(/*)581 b(Loop)h(over)g(all)f(grid)h(points)g(in)f(current)i
+(process.)f(*/)1454 31548 y Fd(449)3653 b Fg(for)581
+b(\(i=0;)h(i<my_length;)h(i++\))f({)1454 32877 y Fd(450)1454
+34205 y(451)4815 b Fg(/*)581 b(Extract)i(uB)e(at)g(x_i)h(and)g(two)f
+(neighboring)i(points)f(*/)1454 35533 y Fd(452)4815 b
+Fg(uBi)581 b(=)h(uBdata[i];)1454 36862 y Fd(453)4815
+b Fg(uBlt)582 b(=)f(\(i==0\))h(?)f(uBLeft:)h(uBdata[i-1];)1454
+38190 y Fd(454)4815 b Fg(uBrt)582 b(=)f(\(i==my_length-1\))i(?)f
+(uBRight)g(:)f(uBdata[i+1];)1454 39518 y Fd(455)1454
+40847 y(456)4815 b Fg(/*)581 b(Set)h(diffusion)g(and)g(advection)h
+(terms)e(and)h(load)g(into)f(udot)h(*/)1454 42175 y Fd(457)4815
+b Fg(hdiff)582 b(=)f(hordc*\(uBlt)i(-)e(TWO*uBi)h(+)g(uBrt\);)1454
+43504 y Fd(458)4815 b Fg(hadv)582 b(=)f(horac*\(uBrt)i(-)e(uBlt\);)1454
+44832 y Fd(459)4815 b Fg(duBdata[i])583 b(=)e(-)g(hdiff)h(+)f(hadv;)
+1454 46160 y Fd(460)1454 47489 y(461)4815 b Fg(/*)581
+b(Extract)i(u)e(at)g(x_i)h(and)f(two)h(neighboring)h(points)f(*/)1454
+48817 y Fd(462)4815 b Fg(ui)581 b(=)h(udata[i];)1454
+50145 y Fd(463)4815 b Fg(ult)581 b(=)h(\(i==0\))g(?)f(uLeft:)h
+(udata[i-1];)1454 51474 y Fd(464)4815 b Fg(urt)581 b(=)h
+(\(i==my_length-1\))h(?)f(uRight)g(:)f(udata[i+1];)1454
+52802 y Fd(465)1454 54130 y(466)4815 b Fg(/*)581 b(Load)h(integrands)h
+(of)e(the)h(two)f(space)h(integrals)h(*/)1454 55459 y
+Fd(467)4815 b Fg(z1[i])582 b(=)f(uBdata[i]*\(ult)i(-)f(TWO*ui)g(+)f
+(urt\)/\(dx*dx\);)1454 56787 y Fd(468)4815 b Fg(z2[i])582
+b(=)f(uBdata[i]*\(urt)i(-)f(ult\)/\(TWO*dx\);)1454 58115
+y Fd(469)3653 b Fg(})1454 59444 y Fd(470)1454 60772 y(471)g
+Fg(/*)581 b(Compute)h(local)g(integrals)h(*/)1454 62100
+y Fd(472)3653 b Fg(intgr1)582 b(=)f(Xintgr\(z1,)i(my_length,)f(dx\);)
+1454 63429 y Fd(473)3653 b Fg(intgr2)582 b(=)f(Xintgr\(z2,)i
+(my_length,)f(dx\);)1454 64757 y Fd(474)1454 66086 y(475)3653
+b Fg(/*)581 b(Send)h(local)g(integrals)g(to)g('quadrature')h(process)f
+(*/)1454 67414 y Fd(476)3653 b Fg(MPI_Send\(&intgr1,)583
+b(1,)f(PVEC_REAL_MPI_TYPE,)i(npes,)e(0,)f(comm\);)1454
+68742 y Fd(477)3653 b Fg(MPI_Send\(&intgr2,)583 b(1,)f
+(PVEC_REAL_MPI_TYPE,)i(npes,)e(0,)f(comm\);)1454 70071
+y Fd(478)1454 71399 y(479)2490 b Fg(})1454 72727 y Fd(480)1454
+74056 y(481)1328 b Fg(})1454 75384 y Fd(482)1454 76712
+y(483)g Fg(/*)1454 78041 y Fd(484)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)p Black 27091 81741 a Ft(105)p Black eop
+%%Page: 106 110
+106 109 bop Black Black -2546 7638 a Fd(485)1909 b Fg(*)581
+b(PRIVATE)i(FUNCTIONS)-2546 8966 y Fd(486)1909 b Fg
+(*------------------------------------------------------------------)p
+(--)-2546 10295 y Fd(487)g Fg(*/)-2546 11623 y Fd(488)-2546
+12951 y(489)1328 b Fg(/*)-2546 14280 y Fd(490)1909 b
+Fg(*)581 b(Set)h(initial)g(conditions)h(in)e(u)h(vector)-2546
+15608 y Fd(491)1909 b Fg(*/)-2546 16936 y Fd(492)-2546
+18265 y(493)1328 b Fg(static)582 b(void)g(SetIC\(N_Vector)h(u,)e
+(realtype)i(dx,)e(long)h(int)g(my_length,)g(long)g(int)g(my_base\))
+-2546 19593 y Fd(494)1328 b Fg({)-2546 20922 y Fd(495)2490
+b Fg(int)582 b(i;)-2546 22250 y Fd(496)2490 b Fg(long)582
+b(int)g(iglobal;)-2546 23578 y Fd(497)2490 b Fg(realtype)583
+b(x;)-2546 24907 y Fd(498)2490 b Fg(realtype)583 b(*udata;)-2546
+26235 y Fd(499)-2546 27563 y(500)2490 b Fg(/*)582 b(Set)f(pointer)i(to)
+e(data)h(array)g(and)f(get)h(local)g(length)g(of)f(u)g(*/)-2546
+28892 y Fd(501)2490 b Fg(udata)582 b(=)f(NV_DATA_P\(u\);)-2546
+30220 y Fd(502)2490 b Fg(my_length)583 b(=)e(NV_LOCLENGTH_P\(u\);)-2546
+31548 y Fd(503)-2546 32877 y(504)2490 b Fg(/*)582 b(Load)f(initial)i
+(profile)f(into)g(u)f(vector)h(*/)-2546 34205 y Fd(505)2490
+b Fg(for)582 b(\(i=1;)g(i<=my_length;)h(i++\))f({)-2546
+35533 y Fd(506)3653 b Fg(iglobal)582 b(=)f(my_base)h(+)g(i;)-2546
+36862 y Fd(507)3653 b Fg(x)581 b(=)g(iglobal*dx;)-2546
+38190 y Fd(508)3653 b Fg(udata[i-1])582 b(=)g(x*\(XMAX)g(-)f
+(x\)*exp\(TWO*x\);)-2546 39518 y Fd(509)2490 b Fg(})-2546
+40847 y Fd(510)1328 b Fg(})-2546 42175 y Fd(511)-2546
+43504 y(512)g Fg(/*)-2546 44832 y Fd(513)1909 b Fg(*)581
+b(Set)h(final)g(conditions)h(in)e(uB)g(vector)-2546 46160
+y Fd(514)1909 b Fg(*/)-2546 47489 y Fd(515)-2546 48817
+y(516)1328 b Fg(static)582 b(void)g(SetICback\(N_Vector)i(uB,)d(long)h
+(int)g(my_base\))-2546 50145 y Fd(517)1328 b Fg({)-2546
+51474 y Fd(518)2490 b Fg(int)582 b(i;)-2546 52802 y Fd(519)2490
+b Fg(realtype)583 b(*uBdata;)-2546 54130 y Fd(520)2490
+b Fg(long)582 b(int)g(my_length;)-2546 55459 y Fd(521)-2546
+56787 y(522)2490 b Fg(/*)582 b(Set)f(pointer)i(to)e(data)h(array)g(and)
+f(get)h(local)g(length)g(of)f(uB)h(*/)-2546 58115 y Fd(523)2490
+b Fg(uBdata)582 b(=)g(NV_DATA_P\(uB\);)-2546 59444 y
+Fd(524)2490 b Fg(my_length)583 b(=)e(NV_LOCLENGTH_P\(uB\);)-2546
+60772 y Fd(525)-2546 62100 y(526)2490 b Fg(/*)582 b(Set)f(adjoint)i
+(states)f(to)f(1.0)h(and)f(quadrature)i(variables)f(to)g(0.0)f(*/)-2546
+63429 y Fd(527)2490 b Fg(if)582 b(\(my_base)g(==)g(-1\))f(for)h(\(i=0;)
+g(i<my_length;)h(i++\))e(uBdata[i])i(=)e(ZERO;)-2546
+64757 y Fd(528)2490 b Fg(else)8718 b(for)582 b(\(i=0;)g(i<my_length;)h
+(i++\))e(uBdata[i])i(=)e(ONE;)-2546 66086 y Fd(529)1328
+b Fg(})-2546 67414 y Fd(530)-2546 68742 y(531)g Fg(/*)-2546
+70071 y Fd(532)1909 b Fg(*)581 b(Compute)i(local)f(value)f(of)h(the)f
+(space)h(integral)h(int_x)f(z\(x\))f(dx)-2546 71399 y
+Fd(533)1909 b Fg(*/)-2546 72727 y Fd(534)-2546 74056
+y(535)1328 b Fg(static)582 b(realtype)g(Xintgr\(realtype)i(*z,)d(long)h
+(int)g(l,)f(realtype)h(dx\))-2546 75384 y Fd(536)1328
+b Fg({)-2546 76712 y Fd(537)2490 b Fg(realtype)583 b(my_intgr;)-2546
+78041 y Fd(538)2490 b Fg(long)582 b(int)g(i;)p Black
+23091 81741 a Ft(106)p Black eop
+%%Page: 107 111
+107 110 bop Black Black 1454 7638 a Fd(539)1454 8966
+y(540)2490 b Fg(my_intgr)583 b(=)e(RCONST\(0.5\)*\(z[0])j(+)d
+(z[l-1]\);)1454 10295 y Fd(541)2490 b Fg(for)582 b(\(i)f(=)h(1;)f(i)g
+(<)h(l-1;)f(i++\))1454 11623 y Fd(542)3653 b Fg(my_intgr)582
+b(+=)f(z[i];)1454 12951 y Fd(543)2490 b Fg(my_intgr)583
+b(*=)e(dx;)1454 14280 y Fd(544)1454 15608 y(545)2490
+b Fg(return\(my_intgr\);)1454 16936 y Fd(546)1328 b Fg(})1454
+18265 y Fd(547)1454 19593 y(548)g Fg(/*)1454 20922 y
+Fd(549)1909 b Fg(*)581 b(Compute)i(value)f(of)f(g\(u\))1454
+22250 y Fd(550)1909 b Fg(*/)1454 23578 y Fd(551)1454
+24907 y(552)1328 b Fg(static)582 b(realtype)g(Compute_g\(N_Vector)i(u,)
+e(UserData)g(data\))1454 26235 y Fd(553)1328 b Fg({)1454
+27563 y Fd(554)2490 b Fg(realtype)583 b(intgr,)f(my_intgr,)g(dx,)g
+(*udata;)1454 28892 y Fd(555)2490 b Fg(long)582 b(int)g(my_length;)1454
+30220 y Fd(556)2490 b Fg(int)582 b(npes,)g(my_pe,)g(i;)1454
+31548 y Fd(557)2490 b Fg(MPI_Status)583 b(status;)1454
+32877 y Fd(558)2490 b Fg(MPI_Comm)583 b(comm;)1454 34205
+y Fd(559)1454 35533 y(560)2490 b Fg(/*)582 b(Extract)g(MPI)g(info.)f
+(from)h(data)g(*/)1454 36862 y Fd(561)2490 b Fg(comm)582
+b(=)f(data->comm;)1454 38190 y Fd(562)2490 b Fg(npes)582
+b(=)f(data->npes;)1454 39518 y Fd(563)2490 b Fg(my_pe)582
+b(=)f(data->my_pe;)1454 40847 y Fd(564)1454 42175 y(565)2490
+b Fg(dx)582 b(=)f(data->dx;)1454 43504 y Fd(566)1454
+44832 y(567)2490 b Fg(if)582 b(\(my_pe)g(==)f(npes\))h({)1163
+b(/*)581 b(Loop)h(over)g(all)f(other)h(processes)g(and)g(sum)g(*/)1454
+46160 y Fd(568)3653 b Fg(intgr)581 b(=)h(ZERO;)1454 47489
+y Fd(569)3653 b Fg(for)581 b(\(i=0;)h(i<npes;)g(i++\))g({)1454
+48817 y Fd(570)4815 b Fg(MPI_Recv\(&my_intgr,)584 b(1,)d
+(PVEC_REAL_MPI_TYPE,)j(i,)e(0,)f(comm,)h(&status\);)1454
+50145 y Fd(571)4815 b Fg(intgr)582 b(+=)f(my_intgr;)1454
+51474 y Fd(572)3653 b Fg(})1454 52802 y Fd(573)g Fg(return\(intgr\);)
+1454 54130 y Fd(574)2490 b Fg(})582 b(else)f({)8137 b(/*)581
+b(Compute)h(local)g(portion)g(of)g(the)f(integral)i(*/)1454
+55459 y Fd(575)3653 b Fg(udata)581 b(=)h(NV_DATA_P\(u\);)1454
+56787 y Fd(576)3653 b Fg(my_length)582 b(=)f(NV_LOCLENGTH_P\(u\);)1454
+58115 y Fd(577)3653 b Fg(my_intgr)582 b(=)f(Xintgr\(udata,)i
+(my_length,)g(dx\);)1454 59444 y Fd(578)3653 b Fg(MPI_Send\(&my_intgr,)
+584 b(1,)d(PVEC_REAL_MPI_TYPE,)j(npes,)e(0,)f(comm\);)1454
+60772 y Fd(579)3653 b Fg(return\(my_intgr\);)1454 62100
+y Fd(580)2490 b Fg(})1454 63429 y Fd(581)1328 b Fg(})1454
+64757 y Fd(582)1454 66086 y(583)g Fg(/*)1454 67414 y
+Fd(584)1909 b Fg(*)581 b(Print)h(output)g(after)g(backward)h
+(integration)1454 68742 y Fd(585)1909 b Fg(*/)1454 70071
+y Fd(586)1454 71399 y(587)1328 b Fg(static)582 b(void)g
+(PrintOutput\(realtype)i(g_val,)e(N_Vector)g(uB,)g(UserData)g(data\))
+1454 72727 y Fd(588)1328 b Fg({)1454 74056 y Fd(589)2490
+b Fg(MPI_Comm)583 b(comm;)1454 75384 y Fd(590)2490 b
+Fg(MPI_Status)583 b(status;)1454 76712 y Fd(591)2490
+b Fg(int)582 b(npes,)g(my_pe;)1454 78041 y Fd(592)2490
+b Fg(long)582 b(int)g(i,)f(Ni,)h(indx,)g(local_N,)g(nperpe,)g(nrem;)p
+Black 27091 81741 a Ft(107)p Black eop
+%%Page: 108 112
+108 111 bop Black Black -2546 7638 a Fd(593)2490 b Fg(realtype)583
+b(*uBdata;)-2546 8966 y Fd(594)2490 b Fg(realtype)583
+b(*mu;)-2546 10295 y Fd(595)-2546 11623 y(596)2490 b
+Fg(comm)582 b(=)f(data->comm;)-2546 12951 y Fd(597)2490
+b Fg(npes)582 b(=)f(data->npes;)-2546 14280 y Fd(598)2490
+b Fg(my_pe)582 b(=)f(data->my_pe;)-2546 15608 y Fd(599)2490
+b Fg(local_N)582 b(=)g(data->local_N;)-2546 16936 y Fd(600)2490
+b Fg(nperpe)582 b(=)g(data->nperpe;)-2546 18265 y Fd(601)2490
+b Fg(nrem)582 b(=)f(data->nrem;)-2546 19593 y Fd(602)-2546
+20922 y(603)2490 b Fg(uBdata)582 b(=)g(NV_DATA_P\(uB\);)-2546
+22250 y Fd(604)-2546 23578 y(605)2490 b Fg(if)582 b(\(my_pe)g(==)f
+(npes\))h({)-2546 24907 y Fd(606)-2546 26235 y(607)1328
+b Fg(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546
+27563 y Fd(608)3653 b Fg(printf\("\\ng\(tf\))583 b(=)e(\0458Le\\n\\n",)
+i(g_val\);)-2546 28892 y Fd(609)3653 b Fg(printf\("dgdp\(tf\)\\n)1165
+b([)581 b(1]:)g(\0458Le\\n)1164 b([)581 b(2]:)h(\0458Le\\n\\n",)g
+(-uBdata[0],)h(-uBdata[1]\);)-2546 30220 y Fd(610)1328
+b Fg(#elif)582 b(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546
+31548 y Fd(611)3653 b Fg(printf\("\\ng\(tf\))583 b(=)e(\0458le\\n\\n",)
+i(g_val\);)-2546 32877 y Fd(612)3653 b Fg(printf\("dgdp\(tf\)\\n)1165
+b([)581 b(1]:)g(\0458le\\n)1164 b([)581 b(2]:)h(\0458le\\n\\n",)g
+(-uBdata[0],)h(-uBdata[1]\);)-2546 34205 y Fd(613)1328
+b Fg(#else)-2546 35533 y Fd(614)3653 b Fg(printf\("\\ng\(tf\))583
+b(=)e(\0458e\\n\\n",)i(g_val\);)-2546 36862 y Fd(615)3653
+b Fg(printf\("dgdp\(tf\)\\n)1165 b([)581 b(1]:)g(\0458e\\n)1164
+b([)581 b(2]:)g(\0458e\\n\\n",)i(-uBdata[0],)g(-uBdata[1]\);)-2546
+38190 y Fd(616)1328 b Fg(#endif)-2546 39518 y Fd(617)-2546
+40847 y(618)3653 b Fg(mu)581 b(=)g(\(realtype)i
+(*\)malloc\(NEQ*sizeof\(realtype\)\);)-2546 42175 y Fd(619)3653
+b Fg(if)581 b(\(check_flag\(\(void)j(*\)mu,)e("malloc",)g(2,)g
+(my_pe\)\))g(MPI_Abort\(comm,)h(1\);)-2546 43504 y Fd(620)-2546
+44832 y(621)3653 b Fg(indx)581 b(=)h(0;)-2546 46160 y
+Fd(622)3653 b Fg(for)581 b(\()g(i)h(=)f(0;)h(i)f(<)g(npes;)h(i++\))g({)
+-2546 47489 y Fd(623)4815 b Fg(Ni)581 b(=)h(\()f(i)g(<)h(nrem)f(\))h(?)
+f(nperpe+1)h(:)g(nperpe;)-2546 48817 y Fd(624)4815 b
+Fg(MPI_Recv\(&mu[indx],)584 b(Ni,)d(PVEC_REAL_MPI_TYPE,)j(i,)e(0,)f
+(comm,)h(&status\);)-2546 50145 y Fd(625)4815 b Fg(indx)582
+b(+=)f(Ni;)-2546 51474 y Fd(626)3653 b Fg(})-2546 52802
+y Fd(627)-2546 54130 y(628)g Fg(printf\("mu\(t0\)\\n"\);)-2546
+55459 y Fd(629)-2546 56787 y(630)1328 b Fg(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546 58115 y
+Fd(631)3653 b Fg(for)581 b(\(i=0;)h(i<NEQ;)g(i++\))-2546
+59444 y Fd(632)4815 b Fg(printf\(")1163 b([\0452ld]:)583
+b(\0458Le\\n",)f(i+1,)g(mu[i]\);)-2546 60772 y Fd(633)1328
+b Fg(#elif)582 b(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546
+62100 y Fd(634)3653 b Fg(for)581 b(\(i=0;)h(i<NEQ;)g(i++\))-2546
+63429 y Fd(635)4815 b Fg(printf\(")1163 b([\0452ld]:)583
+b(\0458le\\n",)f(i+1,)g(mu[i]\);)-2546 64757 y Fd(636)1328
+b Fg(#else)-2546 66086 y Fd(637)3653 b Fg(for)581 b(\(i=0;)h(i<NEQ;)g
+(i++\))-2546 67414 y Fd(638)4815 b Fg(printf\(")1163
+b([\0452ld]:)583 b(\0458e\\n",)f(i+1,)g(mu[i]\);)-2546
+68742 y Fd(639)1328 b Fg(#endif)-2546 70071 y Fd(640)-2546
+71399 y(641)3653 b Fg(free\(mu\);)-2546 72727 y Fd(642)-2546
+74056 y(643)2490 b Fg(})582 b(else)f({)-2546 75384 y
+Fd(644)-2546 76712 y(645)3653 b Fg(MPI_Send\(uBdata,)583
+b(local_N,)f(PVEC_REAL_MPI_TYPE,)i(npes,)e(0,)g(comm\);)-2546
+78041 y Fd(646)p Black 23091 81741 a Ft(108)p Black eop
+%%Page: 109 113
+109 112 bop Black Black 1454 7638 a Fd(647)2490 b Fg(})1454
+8966 y Fd(648)1454 10295 y(649)1328 b Fg(})1454 11623
+y Fd(650)1454 12951 y(651)g Fg(/*)1454 14280 y Fd(652)1909
+b Fg(*)581 b(Check)h(function)h(return)f(value.)1454
+15608 y Fd(653)1909 b Fg(*)2325 b(opt)581 b(==)h(0)f(means)h(SUNDIALS)g
+(function)h(allocates)f(memory)g(so)g(check)g(if)1454
+16936 y Fd(654)1909 b Fg(*)7555 b(returned)583 b(NULL)e(pointer)1454
+18265 y Fd(655)1909 b Fg(*)2325 b(opt)581 b(==)h(1)f(means)h(SUNDIALS)g
+(function)h(returns)f(a)f(flag)h(so)f(check)h(if)1454
+19593 y Fd(656)1909 b Fg(*)7555 b(flag)582 b(>=)f(0)1454
+20922 y Fd(657)1909 b Fg(*)2325 b(opt)581 b(==)h(2)f(means)h(function)g
+(allocates)h(memory)f(so)f(check)h(if)g(returned)1454
+22250 y Fd(658)1909 b Fg(*)7555 b(NULL)582 b(pointer)1454
+23578 y Fd(659)1909 b Fg(*/)1454 24907 y Fd(660)1454
+26235 y(661)1328 b Fg(static)582 b(int)g(check_flag\(void)h
+(*flagvalue,)g(char)f(*funcname,)g(int)g(opt,)g(int)f(id\))1454
+27563 y Fd(662)1328 b Fg({)1454 28892 y Fd(663)2490 b
+Fg(int)582 b(*errflag;)1454 30220 y Fd(664)1454 31548
+y(665)2490 b Fg(/*)582 b(Check)g(if)f(SUNDIALS)h(function)h(returned)f
+(NULL)g(pointer)g(-)f(no)h(memory)g(allocated)g(*/)1454
+32877 y Fd(666)2490 b Fg(if)582 b(\(opt)f(==)h(0)f(&&)h(flagvalue)g(==)
+g(NULL\))g({)1454 34205 y Fd(667)3653 b Fg(fprintf\(stderr,)583
+b("\\nSUNDIALS_ERROR\(\045d\):)h(\045s\(\))e(failed)g(-)f(returned)i
+(NULL)f(pointer\\n\\n",)1454 35533 y Fd(668)8302 b Fg(id,)581
+b(funcname\);)1454 36862 y Fd(669)3653 b Fg(return\(1\);)582
+b(})1454 38190 y Fd(670)1454 39518 y(671)2490 b Fg(/*)582
+b(Check)g(if)f(flag)h(<)f(0)g(*/)1454 40847 y Fd(672)2490
+b Fg(else)582 b(if)f(\(opt)h(==)g(1\))f({)1454 42175
+y Fd(673)3653 b Fg(errflag)582 b(=)f(\(int)h(*\))f(flagvalue;)1454
+43504 y Fd(674)3653 b Fg(if)581 b(\(*errflag)i(<)e(0\))g({)1454
+44832 y Fd(675)4815 b Fg(fprintf\(stderr,)583 b
+("\\nSUNDIALS_ERROR\(\045d\):)i(\045s\(\))c(failed)h(with)g(flag)g(=)f
+(\045d\\n\\n",)1454 46160 y Fd(676)9464 b Fg(id,)582
+b(funcname,)g(*errflag\);)1454 47489 y Fd(677)4815 b
+Fg(return\(1\);)583 b(}})1454 48817 y Fd(678)1454 50145
+y(679)2490 b Fg(/*)582 b(Check)g(if)f(function)h(returned)h(NULL)f
+(pointer)g(-)f(no)g(memory)h(allocated)h(*/)1454 51474
+y Fd(680)2490 b Fg(else)582 b(if)f(\(opt)h(==)g(2)f(&&)g(flagvalue)i
+(==)e(NULL\))h({)1454 52802 y Fd(681)3653 b Fg(fprintf\(stderr,)583
+b("\\nMEMORY_ERROR\(\045d\):)h(\045s\(\))e(failed)g(-)f(returned)i
+(NULL)e(pointer\\n\\n",)1454 54130 y Fd(682)8302 b Fg(id,)581
+b(funcname\);)1454 55459 y Fd(683)3653 b Fg(return\(1\);)582
+b(})1454 56787 y Fd(684)1454 58115 y(685)2490 b Fg(return\(0\);)1454
+59444 y Fd(686)1328 b Fg(})p Black 27091 81741 a Ft(109)p
+Black eop
+%%Page: 110 114
+110 113 bop Black Black 0 7638 a Fs(F)1794 b(Listing)599
+b(of)e Fa(pvakx.c)-1734 10674 y Fd(1)1328 b Fg(/*)-1734
+12003 y Fd(2)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)
+-1734 13331 y Fd(3)1909 b Fg(*)581 b($Revision:)i(1.11.2.1)f($)-1734
+14659 y Fd(4)1909 b Fg(*)581 b($Date:)h(2005/04/01)h(21:55:24)f($)-1734
+15988 y Fd(5)1909 b Fg(*)581 b
+(-----------------------------------------------------------------)
+-1734 17316 y Fd(6)1909 b Fg(*)581 b(Programmer\(s\):)j(Lukas)e(Jager)f
+(and)h(Radu)g(Serban)g(@)f(LLNL)-1734 18645 y Fd(7)1909
+b Fg(*)581 b
+(-----------------------------------------------------------------)
+-1734 19973 y Fd(8)1909 b Fg(*)581 b(Parallel)i(Krylov)f(adjoint)g
+(sensitivity)h(example)f(problem.)-1734 21301 y Fd(9)1909
+b Fg(*)581 b
+(-----------------------------------------------------------------)
+-2140 22630 y Fd(10)1909 b Fg(*/)-2140 23958 y Fd(11)-2140
+25286 y(12)1328 b Fg(#include)582 b(<stdio.h>)-2140 26615
+y Fd(13)1328 b Fg(#include)582 b(<stdlib.h>)-2140 27943
+y Fd(14)1328 b Fg(#include)582 b(<math.h>)-2140 29271
+y Fd(15)1328 b Fg(#include)582 b(<limits.h>)-2140 30600
+y Fd(16)1328 b Fg(#include)582 b("mpi.h")-2140 31928
+y Fd(17)1328 b Fg(#include)582 b("cvodes.h")-2140 33256
+y Fd(18)1328 b Fg(#include)582 b("cvodea.h")-2140 34585
+y Fd(19)1328 b Fg(#include)582 b("cvspgmr.h")-2140 35913
+y Fd(20)1328 b Fg(#include)582 b("cvbbdpre.h")-2140 37241
+y Fd(21)1328 b Fg(#include)582 b("nvector_parallel.h")-2140
+38570 y Fd(22)1328 b Fg(#include)582 b("sundialstypes.h")-2140
+39898 y Fd(23)1328 b Fg(#include)582 b("sundialsmath.h")-2140
+41227 y Fd(24)-2140 42555 y(25)1328 b Fg(/*)-2140 43883
+y Fd(26)1909 b Fg
+(*------------------------------------------------------------------)
+-2140 45212 y Fd(27)g Fg(*)581 b(Constants)-2140 46540
+y Fd(28)1909 b Fg
+(*------------------------------------------------------------------)
+-2140 47868 y Fd(29)g Fg(*/)-2140 49197 y Fd(30)-2140
+50525 y(31)1328 b Fg(#ifdef)582 b(USE3D)-2140 51853 y
+Fd(32)1328 b Fg(#define)582 b(DIM)g(3)-2140 53182 y Fd(33)1328
+b Fg(#else)-2140 54510 y Fd(34)g Fg(#define)582 b(DIM)g(2)-2140
+55838 y Fd(35)1328 b Fg(#endif)-2140 57167 y Fd(36)-2140
+58495 y(37)g Fg(/*)581 b(Domain)h(definition)h(*/)-2140
+59823 y Fd(38)-2140 61152 y(39)1328 b Fg(#define)582
+b(XMIN)g(RCONST\(0.0\))-2140 62480 y Fd(40)1328 b Fg(#define)582
+b(XMAX)g(RCONST\(20.0\))-2140 63808 y Fd(41)1328 b Fg(#define)582
+b(MX)1744 b(20)2325 b(/*)581 b(no.)h(of)f(divisions)i(in)e(x)h(dir.)f
+(*/)-2140 65137 y Fd(42)1328 b Fg(#define)582 b(NPX)1163
+b(2)2906 b(/*)581 b(no.)h(of)f(procs.)h(in)g(x)f(dir.)2325
+b(*/)-2140 66465 y Fd(43)-2140 67794 y(44)1328 b Fg(#define)582
+b(YMIN)g(RCONST\(0.0\))-2140 69122 y Fd(45)1328 b Fg(#define)582
+b(YMAX)g(RCONST\(20.0\))-2140 70450 y Fd(46)1328 b Fg(#define)582
+b(MY)1744 b(40)2325 b(/*)581 b(no.)h(of)f(divisions)i(in)e(y)h(dir.)f
+(*/)-2140 71779 y Fd(47)1328 b Fg(#define)582 b(NPY)1163
+b(2)2906 b(/*)581 b(no.)h(of)f(procs.)h(in)g(y)f(dir.)2325
+b(*/)-2140 73107 y Fd(48)-2140 74435 y(49)1328 b Fg(#ifdef)582
+b(USE3D)-2140 75764 y Fd(50)1328 b Fg(#define)582 b(ZMIN)g
+(RCONST\(0.0\))-2140 77092 y Fd(51)1328 b Fg(#define)582
+b(ZMAX)g(RCONST\(20.0\))-2140 78420 y Fd(52)1328 b Fg(#define)582
+b(MZ)1744 b(20)2325 b(/*)581 b(no.)h(of)f(divisions)i(in)e(z)h(dir.)f
+(*/)p Black 23091 81741 a Ft(110)p Black eop
+%%Page: 111 115
+111 114 bop Black Black 1860 7638 a Fd(53)1328 b Fg(#define)582
+b(NPZ)1163 b(1)2906 b(/*)581 b(no.)h(of)f(procs.)h(in)g(z)f(dir.)2325
+b(*/)1860 8966 y Fd(54)1328 b Fg(#endif)1860 10295 y
+Fd(55)1860 11623 y(56)g Fg(/*)581 b(Parameters)i(for)f(source)g
+(Gaussians)g(*/)1860 12951 y Fd(57)1860 14280 y(58)1328
+b Fg(#define)582 b(G1_AMPL)1745 b(RCONST\(1.0\))1860
+15608 y Fd(59)1328 b Fg(#define)582 b(G1_SIGMA)1164 b(RCONST\(1.7\))
+1860 16936 y Fd(60)1328 b Fg(#define)582 b(G1_X)3488
+b(RCONST\(4.0\))1860 18265 y Fd(61)1328 b Fg(#define)582
+b(G1_Y)3488 b(RCONST\(8.0\))1860 19593 y Fd(62)1328 b
+Fg(#ifdef)582 b(USE3D)1860 20922 y Fd(63)1328 b Fg(#define)582
+b(G1_Z)3488 b(RCONST\(8.0\))1860 22250 y Fd(64)1328 b
+Fg(#endif)1860 23578 y Fd(65)1860 24907 y(66)g Fg(#define)582
+b(G2_AMPL)1745 b(RCONST\(0.8\))1860 26235 y Fd(67)1328
+b Fg(#define)582 b(G2_SIGMA)1164 b(RCONST\(3.0\))1860
+27563 y Fd(68)1328 b Fg(#define)582 b(G2_X)3488 b(RCONST\(16.0\))1860
+28892 y Fd(69)1328 b Fg(#define)582 b(G2_Y)3488 b(RCONST\(12.0\))1860
+30220 y Fd(70)1328 b Fg(#ifdef)582 b(USE3D)1860 31548
+y Fd(71)1328 b Fg(#define)582 b(G2_Z)3488 b(RCONST\(12.0\))1860
+32877 y Fd(72)1328 b Fg(#endif)1860 34205 y Fd(73)1860
+35533 y(74)g Fg(#define)582 b(G_MIN)2907 b(RCONST\(1.0e-5\))1860
+36862 y Fd(75)1860 38190 y(76)1328 b Fg(/*)581 b(Diffusion)i(coeff.,)f
+(max.)g(velocity,)g(domain)g(width)g(in)g(y)f(dir.)h(*/)1860
+39518 y Fd(77)1860 40847 y(78)1328 b Fg(#define)582 b(DIFF_COEF)h
+(RCONST\(1.0\))1860 42175 y Fd(79)1328 b Fg(#define)582
+b(V_MAX)2907 b(RCONST\(1.0\))1860 43504 y Fd(80)1328
+b Fg(#define)582 b(L)5231 b(\(YMAX-YMIN\)/RCONST\(2.0\))1860
+44832 y Fd(81)1328 b Fg(#define)582 b(V_COEFF)1745 b(V_MAX/L/L)1860
+46160 y Fd(82)1860 47489 y(83)1328 b Fg(/*)581 b(Initial)i(and)e(final)
+h(times)g(*/)1860 48817 y Fd(84)1860 50145 y(85)1328
+b Fg(#define)582 b(ti)2325 b(RCONST\(0.0\))1860 51474
+y Fd(86)1328 b Fg(#define)582 b(tf)2325 b(RCONST\(10.0\))1860
+52802 y Fd(87)1860 54130 y(88)1328 b Fg(/*)581 b(Integration)i
+(tolerances)g(*/)1860 55459 y Fd(89)1860 56787 y(90)1328
+b Fg(#define)582 b(RTOL)2325 b(RCONST\(1.0e-8\))584 b(/*)d(states)h(*/)
+1860 58115 y Fd(91)1328 b Fg(#define)582 b(ATOL)2325
+b(RCONST\(1.0e-6\))1860 59444 y Fd(92)1860 60772 y(93)1328
+b Fg(#define)582 b(RTOL_Q)1163 b(RCONST\(1.0e-8\))584
+b(/*)d(forward)h(quadrature)h(*/)1860 62100 y Fd(94)1328
+b Fg(#define)582 b(ATOL_Q)1163 b(RCONST\(1.0e-6\))1860
+63429 y Fd(95)1860 64757 y(96)1328 b Fg(#define)582 b(RTOL_B)1163
+b(RCONST\(1.0e-8\))584 b(/*)d(adjoint)h(variables)h(*/)1860
+66086 y Fd(97)1328 b Fg(#define)582 b(ATOL_B)1163 b(RCONST\(1.0e-6\))
+1860 67414 y Fd(98)1860 68742 y(99)1328 b Fg(#define)582
+b(RTOL_QB)g(RCONST\(1.0e-8\))i(/*)d(backward)h(quadratures)h(*/)1454
+70071 y Fd(100)1328 b Fg(#define)582 b(ATOL_QB)g(RCONST\(1.0e-6\))1454
+71399 y Fd(101)1454 72727 y(102)1328 b Fg(/*)581 b(Steps)h(between)h
+(check)e(points)h(*/)1454 74056 y Fd(103)1454 75384 y(104)1328
+b Fg(#define)582 b(STEPS)g(200)1454 76712 y Fd(105)1454
+78041 y(106)1328 b Fg(#define)582 b(ZERO)g(RCONST\(0.0\))p
+Black 27091 81741 a Ft(111)p Black eop
+%%Page: 112 116
+112 115 bop Black Black -2546 7638 a Fd(107)1328 b Fg(#define)582
+b(ONE)1163 b(RCONST\(1.0\))-2546 8966 y Fd(108)1328 b
+Fg(#define)582 b(TWO)1163 b(RCONST\(2.0\))-2546 10295
+y Fd(109)-2546 11623 y(110)1328 b Fg(/*)-2546 12951 y
+Fd(111)1909 b Fg
+(*------------------------------------------------------------------)
+-2546 14280 y Fd(112)g Fg(*)581 b(Macros)-2546 15608
+y Fd(113)1909 b Fg
+(*------------------------------------------------------------------)
+-2546 16936 y Fd(114)g Fg(*/)-2546 18265 y Fd(115)-2546
+19593 y(116)1328 b Fg(#define)582 b(FOR_DIM)g(for\(dim=0;)h(dim<DIM;)f
+(dim++\))-2546 20922 y Fd(117)-2546 22250 y(118)1328
+b Fg(/*)581 b(IJth:)2907 b(\(i[0],i[1],i[2]\)-th)584
+b(vector)e(component)13368 b(*/)-2546 23578 y Fd(119)1328
+b Fg(/*)581 b(IJth_ext:)i(\(i[0],i[1],i[2]\)-th)h(vector)e(component)g
+(in)g(the)f(extended)i(array)f(*/)-2546 24907 y Fd(120)-2546
+26235 y(121)1328 b Fg(#ifdef)582 b(USE3D)-2546 27563
+y Fd(122)1328 b Fg(#define)582 b(IJth\(y,i\))2907 b(\()582
+b(y[\(i[0]\)+\(l_m[0]*\(\(i[1]\)+\(i[2]\)*l_m[1]\)\)])587
+b(\))-2546 28892 y Fd(123)1328 b Fg(#define)582 b(IJth_ext\(y,i\))h(\()
+f(y[\(i[0]+1\)+\(\(l_m[0]+2\)*\(\(i[1]+1\)+\(i[2]+1\)*\(l_m[1]+2\)\)\))
+p(])589 b(\))-2546 30220 y Fd(124)1328 b Fg(#else)-2546
+31548 y Fd(125)g Fg(#define)582 b(IJth\(y,i\))2907 b
+(\(y[i[0]+\(i[1]\)*l_m[0]]\))-2546 32877 y Fd(126)1328
+b Fg(#define)582 b(IJth_ext\(y,i\))h(\(y[)f(\(i[0]+1\))g(+)g
+(\(i[1]+1\))g(*)f(\(l_m[0]+2\)]\))-2546 34205 y Fd(127)1328
+b Fg(#endif)-2546 35533 y Fd(128)-2546 36862 y(129)g
+Fg(/*)-2546 38190 y Fd(130)1909 b Fg
+(*------------------------------------------------------------------)
+-2546 39518 y Fd(131)g Fg(*)581 b(Type)h(definition:)h(ProblemData)
+-2546 40847 y Fd(132)1909 b Fg
+(*------------------------------------------------------------------)
+-2546 42175 y Fd(133)g Fg(*/)-2546 43504 y Fd(134)-2546
+44832 y(135)1328 b Fg(typedef)582 b(struct)g({)-2546
+46160 y Fd(136)2490 b Fg(/*)582 b(Domain)g(*/)-2546 47489
+y Fd(137)2490 b Fg(realtype)583 b(xmin[DIM];)1163 b(/*)582
+b("left")g(boundaries)h(*/)-2546 48817 y Fd(138)2490
+b Fg(realtype)583 b(xmax[DIM];)1163 b(/*)582 b("right")g(boundaries)h
+(*/)-2546 50145 y Fd(139)2490 b Fg(int)582 b(m[DIM];)5812
+b(/*)582 b(number)g(of)f(grid)h(points)g(*/)-2546 51474
+y Fd(140)2490 b Fg(realtype)583 b(dx[DIM];)2325 b(/*)582
+b(grid)g(spacing)g(*/)-2546 52802 y Fd(141)2490 b Fg(realtype)583
+b(dOmega;)2906 b(/*)582 b(differential)h(volume)f(*/)-2546
+54130 y Fd(142)-2546 55459 y(143)2490 b Fg(/*)582 b(Parallel)g(stuff)g
+(*/)-2546 56787 y Fd(144)2490 b Fg(MPI_Comm)583 b(comm;)4068
+b(/*)582 b(MPI)f(communicator)i(*/)-2546 58115 y Fd(145)2490
+b Fg(int)582 b(myId;)6974 b(/*)582 b(process)g(id)g(*/)-2546
+59444 y Fd(146)2490 b Fg(int)582 b(npes;)6974 b(/*)582
+b(total)g(number)g(of)f(processes)i(*/)-2546 60772 y
+Fd(147)2490 b Fg(int)582 b(num_procs[DIM];)1164 b(/*)582
+b(number)g(of)f(processes)i(in)e(each)h(direction)h(*/)-2546
+62100 y Fd(148)2490 b Fg(int)582 b(nbr_left[DIM];)1745
+b(/*)582 b(MPI)f(ID)h(of)f("left")h(neighbor)h(*/)-2546
+63429 y Fd(149)2490 b Fg(int)582 b(nbr_right[DIM];)1164
+b(/*)582 b(MPI)f(ID)h(of)f("right")i(neighbor)f(*/)-2546
+64757 y Fd(150)2490 b Fg(int)582 b(m_start[DIM];)2326
+b(/*)582 b("left")g(index)g(in)f(the)h(global)g(domain)g(*/)-2546
+66086 y Fd(151)2490 b Fg(int)582 b(l_m[DIM];)4650 b(/*)582
+b(number)g(of)f(local)h(grid)g(points)g(*/)-2546 67414
+y Fd(152)2490 b Fg(realtype)583 b(*y_ext;)2906 b(/*)582
+b(extended)g(data)g(array)g(*/)-2546 68742 y Fd(153)2490
+b Fg(realtype)583 b(*buf_send;)1163 b(/*)582 b(Send)g(buffer)g(*/)-2546
+70071 y Fd(154)2490 b Fg(realtype)583 b(*buf_recv;)1163
+b(/*)582 b(Receive)g(buffer)g(*/)-2546 71399 y Fd(155)2490
+b Fg(int)582 b(buf_size;)4650 b(/*)582 b(Buffer)g(size)g(*/)-2546
+72727 y Fd(156)-2546 74056 y(157)2490 b Fg(/*)582 b(Source)g(*/)-2546
+75384 y Fd(158)2490 b Fg(N_Vector)583 b(p;)5811 b(/*)582
+b(Source)g(parameters)h(*/)-2546 76712 y Fd(159)-2546
+78041 y(160)1328 b Fg(})581 b(*ProblemData;)p Black 23091
+81741 a Ft(112)p Black eop
+%%Page: 113 117
+113 116 bop Black Black 1454 7638 a Fd(161)1454 8966
+y(162)1328 b Fg(/*)1454 10295 y Fd(163)1909 b Fg
+(*------------------------------------------------------------------)
+1454 11623 y Fd(164)g Fg(*)581 b(Interface)i(functions)f(to)g(CVODES)
+1454 12951 y Fd(165)1909 b Fg
+(*------------------------------------------------------------------)
+1454 14280 y Fd(166)g Fg(*/)1454 15608 y Fd(167)1454
+16936 y(168)1328 b Fg(static)582 b(void)g(f\(realtype)g(t,)g(N_Vector)g
+(y,)g(N_Vector)g(ydot,)g(void)g(*f_data\);)1454 18265
+y Fd(169)1328 b Fg(static)582 b(void)g(f_local\(long)h(int)e(Nlocal,)i
+(realtype)f(t,)f(N_Vector)i(y,)1454 19593 y Fd(170)12951
+b Fg(N_Vector)582 b(ydot,)g(void)g(*f_data\);)1454 20922
+y Fd(171)1454 22250 y(172)1328 b Fg(static)582 b(void)g(fQ\(realtype)h
+(t,)e(N_Vector)h(y,)g(N_Vector)g(qdot,)g(void)g(*fQ_data\);)1454
+23578 y Fd(173)1454 24907 y(174)1454 26235 y(175)1328
+b Fg(static)582 b(void)g(fB\(realtype)h(t,)e(N_Vector)h(y,)g(N_Vector)g
+(yB,)g(N_Vector)g(yBdot,)1454 27563 y Fd(176)14113 b
+Fg(void)582 b(*f_dataB\);)1454 28892 y Fd(177)1328 b
+Fg(static)582 b(void)g(fB_local\(long)h(int)e(NlocalB,)i(realtype)f(t,)
+1454 30220 y Fd(178)13532 b Fg(N_Vector)582 b(y,)g(N_Vector)g(yB,)g
+(N_Vector)g(yBdot,)1454 31548 y Fd(179)13532 b Fg(void)582
+b(*f_dataB\);)1454 32877 y Fd(180)1454 34205 y(181)1328
+b Fg(static)582 b(void)g(fQB\(realtype)h(t,)e(N_Vector)i(y,)e(N_Vector)
+h(yB,)1454 35533 y Fd(182)10626 b Fg(N_Vector)583 b(qBdot,)f(void)g
+(*fQ_dataB\);)1454 36862 y Fd(183)1454 38190 y(184)1328
+b Fg(/*)1454 39518 y Fd(185)1909 b Fg
+(*------------------------------------------------------------------)
+1454 40847 y Fd(186)g Fg(*)581 b(Private)i(functions)1454
+42175 y Fd(187)1909 b Fg
+(*------------------------------------------------------------------)
+1454 43504 y Fd(188)g Fg(*/)1454 44832 y Fd(189)1454
+46160 y(190)1328 b Fg(static)582 b(void)g(SetData\(ProblemData)i(d,)d
+(MPI_Comm)i(comm,)e(int)h(npes,)g(int)g(myId,)1454 47489
+y Fd(191)12951 b Fg(long)582 b(int)f(*neq,)h(long)g(int)g(*l_neq\);)
+1454 48817 y Fd(192)1328 b Fg(static)582 b(void)g
+(SetSource\(ProblemData)i(d\);)1454 50145 y Fd(193)1328
+b Fg(static)582 b(void)g(f_comm\()g(long)g(int)f(Nlocal,)i(realtype)f
+(t,)f(N_Vector)i(y,)e(void)h(*f_data\);)1454 51474 y
+Fd(194)1328 b Fg(static)582 b(void)g(Load_yext\(realtype)i(*src,)e
+(ProblemData)g(d\);)1454 52802 y Fd(195)1328 b Fg(static)582
+b(void)g(PrintHeader\(\);)1454 54130 y Fd(196)1328 b
+Fg(static)582 b(void)g(PrintFinalStats\(void)i(*cvode_mem\);)1454
+55459 y Fd(197)1328 b Fg(static)582 b(void)g(OutputGradient\(int)i
+(myId,)e(N_Vector)g(qB,)f(ProblemData)i(d\);)1454 56787
+y Fd(198)1454 58115 y(199)1328 b Fg(/*)1454 59444 y Fd(200)1909
+b Fg
+(*------------------------------------------------------------------)
+1454 60772 y Fd(201)g Fg(*)581 b(Main)h(program)1454
+62100 y Fd(202)1909 b Fg
+(*------------------------------------------------------------------)
+1454 63429 y Fd(203)g Fg(*/)1454 64757 y Fd(204)1454
+66086 y(205)1328 b Fg(int)582 b(main\(int)g(argc,)g(char)g(*argv[]\))
+1454 67414 y Fd(206)1328 b Fg({)1454 68742 y Fd(207)2490
+b Fg(ProblemData)583 b(d;)1454 70071 y Fd(208)1454 71399
+y(209)2490 b Fg(MPI_Comm)583 b(comm;)1454 72727 y Fd(210)2490
+b Fg(int)582 b(npes,)g(npes_needed;)1454 74056 y Fd(211)2490
+b Fg(int)582 b(myId;)1454 75384 y Fd(212)1454 76712 y(213)2490
+b Fg(long)582 b(int)g(neq,)f(l_neq;)1454 78041 y Fd(214)p
+Black 27091 81741 a Ft(113)p Black eop
+%%Page: 114 118
+114 117 bop Black Black -2546 7638 a Fd(215)2490 b Fg(void)582
+b(*cvode_mem;)-2546 8966 y Fd(216)2490 b Fg(N_Vector)583
+b(y,)e(q;)-2546 10295 y Fd(217)2490 b Fg(realtype)583
+b(abstol,)f(reltol,)g(abstolQ,)g(reltolQ;)-2546 11623
+y Fd(218)2490 b Fg(void)582 b(*bbdp_data;)-2546 12951
+y Fd(219)2490 b Fg(int)582 b(mudq,)g(mldq,)g(mukeep,)g(mlkeep;)-2546
+14280 y Fd(220)-2546 15608 y(221)2490 b Fg(void)582 b(*cvadj_mem;)-2546
+16936 y Fd(222)2490 b Fg(void)582 b(*cvode_memB;)-2546
+18265 y Fd(223)2490 b Fg(N_Vector)583 b(yB,)e(qB;)-2546
+19593 y Fd(224)2490 b Fg(realtype)583 b(abstolB,)f(reltolB,)g
+(abstolQB,)h(reltolQB;)-2546 20922 y Fd(225)2490 b Fg(int)582
+b(mudqB,)g(mldqB,)g(mukeepB,)g(mlkeepB;)-2546 22250 y
+Fd(226)-2546 23578 y(227)2490 b Fg(realtype)583 b(tret,)f(*qdata,)g(G;)
+-2546 24907 y Fd(228)-2546 26235 y(229)2490 b Fg(int)582
+b(ncheckpnt,)h(flag;)-2546 27563 y Fd(230)-2546 28892
+y(231)2490 b Fg(booleantype)583 b(output;)-2546 30220
+y Fd(232)-2546 31548 y(233)2490 b Fg(/*)582 b(Initialize)g(MPI)g(and)g
+(set)f(Ids)h(*/)-2546 32877 y Fd(234)2490 b Fg(MPI_Init\(&argc,)584
+b(&argv\);)-2546 34205 y Fd(235)2490 b Fg(comm)582 b(=)f
+(MPI_COMM_WORLD;)-2546 35533 y Fd(236)2490 b Fg(MPI_Comm_rank\(comm,)
+584 b(&myId\);)-2546 36862 y Fd(237)-2546 38190 y(238)2490
+b Fg(/*)582 b(Check)g(number)g(of)f(processes)i(*/)-2546
+39518 y Fd(239)2490 b Fg(npes_needed)583 b(=)e(NPX)h(*)f(NPY;)-2546
+40847 y Fd(240)1328 b Fg(#ifdef)582 b(USE3D)-2546 42175
+y Fd(241)2490 b Fg(npes_needed)583 b(*=)f(NPZ;)-2546
+43504 y Fd(242)1328 b Fg(#endif)-2546 44832 y Fd(243)2490
+b Fg(MPI_Comm_size\(comm,)584 b(&npes\);)-2546 46160
+y Fd(244)2490 b Fg(if)582 b(\(npes_needed)h(!=)e(npes\))h({)-2546
+47489 y Fd(245)3653 b Fg(if)581 b(\(myId)h(==)f(0\))-2546
+48817 y Fd(246)4815 b Fg(fprintf\(stderr,"I)584 b(need)d(\045d)h
+(processes)g(but)g(I)f(only)h(got)f(\045d\\n",)-2546
+50145 y Fd(247)9464 b Fg(npes_needed,)583 b(npes\);)-2546
+51474 y Fd(248)3653 b Fg(MPI_Abort\(comm,)583 b(EXIT_FAILURE\);)-2546
+52802 y Fd(249)2490 b Fg(})-2546 54130 y Fd(250)-2546
+55459 y(251)g Fg(/*)582 b(Test)f(if)h(matlab)g(output)g(is)f(requested)
+i(*/)-2546 56787 y Fd(252)2490 b Fg(if)582 b(\(argc)g(>)f(1\))g(output)
+h(=)g(TRUE;)-2546 58115 y Fd(253)2490 b Fg(else)5812
+b(output)582 b(=)g(FALSE;)-2546 59444 y Fd(254)-2546
+60772 y(255)2490 b Fg(/*)582 b(Allocate)g(and)g(set)f(problem)h(data)g
+(structure)h(*/)-2546 62100 y Fd(256)2490 b Fg(d)582
+b(=)f(\(ProblemData\))i(malloc\(sizeof)g(*d\);)-2546
+63429 y Fd(257)2490 b Fg(SetData\(d,)583 b(comm,)f(npes,)g(myId,)g
+(&neq,)g(&l_neq\);)-2546 64757 y Fd(258)-2546 66086 y(259)2490
+b Fg(if)582 b(\(myId)g(==)f(0\))h(PrintHeader\(\);)-2546
+67414 y Fd(260)-2546 68742 y(261)2490 b Fg
+(/*--------------------------)-2546 70071 y Fd(262)3653
+b Fg(Forward)582 b(integration)h(phase)-2546 71399 y
+Fd(263)3653 b Fg(--------------------------*/)-2546 72727
+y Fd(264)-2546 74056 y(265)2490 b Fg(/*)582 b(Allocate)g(space)g(for)g
+(y)f(and)g(set)h(it)g(with)f(the)h(I.C.)g(*/)-2546 75384
+y Fd(266)2490 b Fg(y)582 b(=)f(N_VNew_Parallel\(comm,)j(l_neq,)e
+(neq\);)-2546 76712 y Fd(267)2490 b Fg(N_VConst\(ZERO,)584
+b(y\);)-2546 78041 y Fd(268)p Black 23091 81741 a Ft(114)p
+Black eop
+%%Page: 115 119
+115 118 bop Black Black 1454 7638 a Fd(269)2490 b Fg(/*)582
+b(Allocate)g(and)g(initialize)g(qB)g(\(local)g(contributin)h(to)e
+(cost\))h(*/)1454 8966 y Fd(270)2490 b Fg(q)582 b(=)f
+(N_VNew_Parallel\(comm,)j(1,)e(npes\);)1454 10295 y Fd(271)2490
+b Fg(N_VConst\(ZERO,)584 b(q\);)1454 11623 y Fd(272)1454
+12951 y(273)2490 b Fg(/*)582 b(Create)g(CVODES)g(object,)g(attach)g
+(user)g(data,)g(and)f(allocate)i(space)f(*/)1454 14280
+y Fd(274)2490 b Fg(cvode_mem)583 b(=)e(CVodeCreate\(CV_BDF,)j
+(CV_NEWTON\);)1454 15608 y Fd(275)2490 b Fg(flag)582
+b(=)f(CVodeSetFdata\(cvode_mem,)k(d\);)1454 16936 y Fd(276)2490
+b Fg(abstol)582 b(=)g(ATOL;)1454 18265 y Fd(277)2490
+b Fg(reltol)582 b(=)g(RTOL;)1454 19593 y Fd(278)2490
+b Fg(flag)582 b(=)f(CVodeMalloc\(cvode_mem,)k(f,)c(ti,)h(y,)f(CV_SS,)h
+(reltol,)g(&abstol\);)1454 20922 y Fd(279)1454 22250
+y(280)2490 b Fg(/*)582 b(Attach)g(preconditioner)h(and)f(linear)g
+(solver)g(modules)g(*/)1454 23578 y Fd(281)2490 b Fg(mudq)582
+b(=)f(mldq)h(=)f(d->l_m[0]+1;)1454 24907 y Fd(282)2490
+b Fg(mukeep)582 b(=)g(mlkeep)g(=)f(2;)1454 26235 y Fd(283)2490
+b Fg(bbdp_data)583 b(=)e(\(void)h(*\))f(CVBBDPrecAlloc\(cvode_mem,)k
+(l_neq,)d(mudq,)g(mldq,)1454 27563 y Fd(284)23412 b Fg(mukeep,)582
+b(mlkeep,)g(ZERO,)1454 28892 y Fd(285)23412 b Fg(f_local,)582
+b(NULL\);)1454 30220 y Fd(286)2490 b Fg(flag)582 b(=)f
+(CVBBDSpgmr\(cvode_mem,)k(PREC_LEFT,)d(0,)g(bbdp_data\);)1454
+31548 y Fd(287)1454 32877 y(288)2490 b Fg(/*)582 b(Initialize)g
+(quadrature)h(calculations)g(*/)1454 34205 y Fd(289)2490
+b Fg(abstolQ)582 b(=)g(ATOL_Q;)1454 35533 y Fd(290)2490
+b Fg(reltolQ)582 b(=)g(RTOL_Q;)1454 36862 y Fd(291)2490
+b Fg(flag)582 b(=)f(CVodeQuadMalloc\(cvode_mem,)k(fQ,)d(q\);)1454
+38190 y Fd(292)2490 b Fg(flag)582 b(=)f(CVodeSetQuadFdata\(cvode_mem,)
+586 b(d\);)1454 39518 y Fd(293)2490 b Fg(flag)582 b(=)f
+(CVodeSetQuadErrCon\(cvode_mem,)586 b(TRUE,)c(CV_SS,)g(reltolQ,)g
+(&abstolQ\);)1454 40847 y Fd(294)1454 42175 y(295)2490
+b Fg(/*)582 b(Allocate)g(space)g(for)g(the)f(adjoint)h(calculation)h
+(*/)1454 43504 y Fd(296)2490 b Fg(cvadj_mem)583 b(=)e
+(CVadjMalloc\(cvode_mem,)k(STEPS\);)1454 44832 y Fd(297)1454
+46160 y(298)2490 b Fg(/*)582 b(Integrate)g(forward)g(in)g(time)g(while)
+g(storing)g(check)g(points)g(*/)1454 47489 y Fd(299)2490
+b Fg(if)582 b(\(myId)g(==)f(0\))h(printf\("Begin)h(forward)f
+(integration...)h("\);)1454 48817 y Fd(300)2490 b Fg(flag)582
+b(=)f(CVodeF\(cvadj_mem,)j(tf,)e(y,)f(&tret,)h(CV_NORMAL,)h
+(&ncheckpnt\);)1454 50145 y Fd(301)2490 b Fg(if)582 b(\(myId)g(==)f
+(0\))h(printf\("done.)h("\);)1454 51474 y Fd(302)1454
+52802 y(303)3071 b Fg(/*)582 b(Extract)g(quadratures)h(*/)1454
+54130 y Fd(304)2490 b Fg(flag)582 b(=)f(CVodeGetQuad\(cvode_mem,)k(tf,)
+d(q\);)1454 55459 y Fd(305)2490 b Fg(qdata)582 b(=)f(NV_DATA_P\(q\);)
+1454 56787 y Fd(306)2490 b Fg(MPI_Allreduce\(&qdata[0],)585
+b(&G,)d(1,)f(PVEC_REAL_MPI_TYPE,)j(MPI_SUM,)e(comm\);)1454
+58115 y Fd(307)1328 b Fg(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))1454 59444 y
+Fd(308)2490 b Fg(if)582 b(\(myId)g(==)f(0\))h(printf\(")1163
+b(G)581 b(=)h(\045Le\\n",G\);)1454 60772 y Fd(309)1328
+b Fg(#elif)582 b(defined\(SUNDIALS_DOUBLE_PRECISION\))1454
+62100 y Fd(310)2490 b Fg(if)582 b(\(myId)g(==)f(0\))h(printf\(")1163
+b(G)581 b(=)h(\045le\\n",G\);)1454 63429 y Fd(311)1328
+b Fg(#else)1454 64757 y Fd(312)2490 b Fg(if)582 b(\(myId)g(==)f(0\))h
+(printf\(")1163 b(G)581 b(=)h(\045e\\n",G\);)1454 66086
+y Fd(313)1328 b Fg(#endif)1454 67414 y Fd(314)1454 68742
+y(315)2490 b Fg(/*)582 b(Print)g(statistics)g(for)g(forward)g(run)g(*/)
+1454 70071 y Fd(316)2490 b Fg(if)582 b(\(myId)g(==)f(0\))h
+(PrintFinalStats\(cvode_mem\);)1454 71399 y Fd(317)1454
+72727 y(318)2490 b Fg(/*--------------------------)1454
+74056 y Fd(319)3653 b Fg(Backward)582 b(integration)h(phase)1454
+75384 y Fd(320)3653 b Fg(--------------------------*/)1454
+76712 y Fd(321)1454 78041 y(322)2490 b Fg(/*)582 b(Allocate)g(and)g
+(initialize)g(yB)g(*/)p Black 27091 81741 a Ft(115)p
+Black eop
+%%Page: 116 120
+116 119 bop Black Black -2546 7638 a Fd(323)2490 b Fg(yB)582
+b(=)f(N_VNew_Parallel\(comm,)j(l_neq,)e(neq\);)-2546
+8966 y Fd(324)2490 b Fg(N_VConst\(ZERO,)584 b(yB\);)-2546
+10295 y Fd(325)-2546 11623 y(326)2490 b Fg(/*)582 b(Allocate)g(and)g
+(initialize)g(qB)g(\(gradient\))g(*/)-2546 12951 y Fd(327)2490
+b Fg(qB)582 b(=)f(N_VNew_Parallel\(comm,)j(l_neq,)e(neq\);)-2546
+14280 y Fd(328)2490 b Fg(N_VConst\(ZERO,)584 b(qB\);)-2546
+15608 y Fd(329)-2546 16936 y(330)2490 b Fg(/*)582 b(Create)g(and)f
+(allocate)i(backward)f(CVODE)g(memory)g(*/)-2546 18265
+y Fd(331)2490 b Fg(flag)582 b(=)f(CVodeCreateB\(cvadj_mem,)k(CV_BDF,)d
+(CV_NEWTON\);)-2546 19593 y Fd(332)2490 b Fg(flag)582
+b(=)f(CVodeSetFdataB\(cvadj_mem,)k(d\);)-2546 20922 y
+Fd(333)2490 b Fg(abstolB)582 b(=)g(ATOL_B;)-2546 22250
+y Fd(334)2490 b Fg(reltolB)582 b(=)g(RTOL_B;)-2546 23578
+y Fd(335)2490 b Fg(flag)582 b(=)f(CVodeMallocB\(cvadj_mem,)k(fB,)d(tf,)
+f(yB,)h(CV_SS,)g(reltolB,)g(&abstolB\);)-2546 24907 y
+Fd(336)-2546 26235 y(337)2490 b Fg(/*)582 b(Attach)g(preconditioner)h
+(and)f(linear)g(solver)g(modules)g(*/)-2546 27563 y Fd(338)2490
+b Fg(mudqB)582 b(=)f(mldqB)h(=)g(d->l_m[0]+1;)-2546 28892
+y Fd(339)2490 b Fg(mukeepB)582 b(=)g(mlkeepB)g(=)f(2;)-2546
+30220 y Fd(340)2490 b Fg(flag)582 b(=)f(CVBBDPrecAllocB\(cvadj_mem,)k
+(l_neq,)d(mudqB,)g(mldqB,)-2546 31548 y Fd(341)15857
+b Fg(mukeepB,)582 b(mlkeepB,)g(ZERO,)g(fB_local,)h(NULL\);)-2546
+32877 y Fd(342)2490 b Fg(flag)582 b(=)f(CVBBDSpgmrB\(cvadj_mem,)k
+(PREC_LEFT,)d(0\);)-2546 34205 y Fd(343)-2546 35533 y(344)2490
+b Fg(/*)582 b(Initialize)g(quadrature)h(calculations)g(*/)-2546
+36862 y Fd(345)2490 b Fg(abstolQB)583 b(=)e(ATOL_QB;)-2546
+38190 y Fd(346)2490 b Fg(reltolQB)583 b(=)e(RTOL_QB;)-2546
+39518 y Fd(347)2490 b Fg(flag)582 b(=)f(CVodeQuadMallocB\(cvadj_mem,)
+586 b(fQB,)581 b(qB\);)-2546 40847 y Fd(348)2490 b Fg(flag)582
+b(=)f(CVodeSetQuadFdataB\(cvadj_mem,)586 b(d\);)-2546
+42175 y Fd(349)2490 b Fg(flag)582 b(=)f
+(CVodeSetQuadErrConB\(cvadj_mem,)586 b(TRUE,)c(CV_SS,)g(reltolQB,)g
+(&abstolQB\);)-2546 43504 y Fd(350)-2546 44832 y(351)2490
+b Fg(/*)582 b(Integrate)g(backwards)h(*/)-2546 46160
+y Fd(352)2490 b Fg(if)582 b(\(myId)g(==)f(0\))h(printf\("Begin)h
+(backward)f(integration...)h("\);)-2546 47489 y Fd(353)2490
+b Fg(flag)582 b(=)f(CVodeB\(cvadj_mem,)j(ti,)e(yB,)f(&tret,)h
+(CV_NORMAL\);)-2546 48817 y Fd(354)2490 b Fg(if)582 b(\(myId)g(==)f
+(0\))h(printf\("done.\\n"\);)-2546 50145 y Fd(355)-2546
+51474 y(356)2490 b Fg(/*)582 b(Print)g(statistics)g(for)g(backward)g
+(run)g(*/)-2546 52802 y Fd(357)2490 b Fg(if)582 b(\(myId)g(==)f(0\))h
+({)-2546 54130 y Fd(358)3653 b Fg(cvode_memB)582 b(=)g
+(CVadjGetCVodeBmem\(cvadj_mem\);)-2546 55459 y Fd(359)3653
+b Fg(PrintFinalStats\(cvode_memB\);)-2546 56787 y Fd(360)2490
+b Fg(})-2546 58115 y Fd(361)-2546 59444 y(362)3071 b
+Fg(/*)582 b(Extract)g(quadratures)h(*/)-2546 60772 y
+Fd(363)2490 b Fg(flag)582 b(=)f(CVodeGetQuadB\(cvadj_mem,)k(qB\);)-2546
+62100 y Fd(364)-2546 63429 y(365)2490 b Fg(/*)582 b(Process)g(0)f
+(collects)i(the)e(gradient)i(components)f(and)g(prints)g(them)g(*/)
+-2546 64757 y Fd(366)2490 b Fg(if)582 b(\(output\))g({)-2546
+66086 y Fd(367)3653 b Fg(OutputGradient\(myId,)584 b(qB,)d(d\);)-2546
+67414 y Fd(368)3653 b Fg(if)581 b(\(myId)h(==)f(0\))h(printf\("Wrote)h
+(matlab)f(file)g('grad.m'.\\n"\);)-2546 68742 y Fd(369)2490
+b Fg(})-2546 70071 y Fd(370)-2546 71399 y(371)g Fg(/*)582
+b(Free)f(memory)i(*/)-2546 72727 y Fd(372)2490 b Fg
+(N_VDestroy_Parallel\(y\);)-2546 74056 y Fd(373)g Fg
+(N_VDestroy_Parallel\(q\);)-2546 75384 y Fd(374)g Fg
+(N_VDestroy_Parallel\(qB\);)-2546 76712 y Fd(375)g Fg
+(N_VDestroy_Parallel\(yB\);)-2546 78041 y Fd(376)p Black
+23091 81741 a Ft(116)p Black eop
+%%Page: 117 121
+117 120 bop Black Black 1454 7638 a Fd(377)2490 b Fg
+(CVBBDPrecFree\(bbdp_data\);)1454 8966 y Fd(378)g Fg
+(CVadjFree\(cvadj_mem\);)1454 10295 y Fd(379)g Fg
+(CVodeFree\(cvode_mem\);)1454 11623 y Fd(380)1454 12951
+y(381)g Fg(MPI_Finalize\(\);)1454 14280 y Fd(382)1454
+15608 y(383)g Fg(return\(0\);)1454 16936 y Fd(384)1328
+b Fg(})1454 18265 y Fd(385)1454 19593 y(386)g Fg(/*)1454
+20922 y Fd(387)1909 b Fg
+(*------------------------------------------------------------------)
+1454 22250 y Fd(388)g Fg(*)581 b(SetData:)1454 23578
+y Fd(389)1909 b Fg(*)581 b(Allocate)i(space)f(for)f(the)h(ProblemData)h
+(structure.)1454 24907 y Fd(390)1909 b Fg(*)581 b(Set)h(fields)g(in)g
+(the)f(ProblemData)i(structure.)1454 26235 y Fd(391)1909
+b Fg(*)581 b(Return)h(local)g(and)g(global)g(problem)g(dimensions.)1454
+27563 y Fd(392)1909 b Fg(*)1454 28892 y Fd(393)g Fg(*)581
+b(SetSource:)1454 30220 y Fd(394)1909 b Fg(*)581 b(Instantiates)i(the)f
+(source)g(parameters)h(for)e(a)h(combination)g(of)g(two)1454
+31548 y Fd(395)1909 b Fg(*)581 b(Gaussian)i(sources.)1454
+32877 y Fd(396)1909 b Fg
+(*------------------------------------------------------------------)
+1454 34205 y Fd(397)g Fg(*/)1454 35533 y Fd(398)1454
+36862 y(399)1328 b Fg(static)582 b(void)g(SetData\(ProblemData)i(d,)d
+(MPI_Comm)i(comm,)e(int)h(npes,)g(int)g(myId,)1454 38190
+y Fd(400)12951 b Fg(long)582 b(int)f(*neq,)h(long)g(int)g(*l_neq\))1454
+39518 y Fd(401)1328 b Fg({)1454 40847 y Fd(402)2490 b
+Fg(int)582 b(n[DIM],)g(nd[DIM];)1454 42175 y Fd(403)2490
+b Fg(int)582 b(dim,)g(size;)1454 43504 y Fd(404)1454
+44832 y(405)2490 b Fg(/*)582 b(Set)f(MPI)h(communicator,)h(id,)f(and)f
+(total)h(number)g(of)g(processes)g(*/)1454 46160 y Fd(406)1454
+47489 y(407)2490 b Fg(d->comm)582 b(=)g(comm;)1454 48817
+y Fd(408)2490 b Fg(d->myId)582 b(=)g(myId;)1454 50145
+y Fd(409)2490 b Fg(d->npes)582 b(=)g(npes;)1454 51474
+y Fd(410)1454 52802 y(411)2490 b Fg(/*)582 b(Set)f(domain)h(boundaries)
+h(*/)1454 54130 y Fd(412)1454 55459 y(413)2490 b Fg(d->xmin[0])583
+b(=)e(XMIN;)1454 56787 y Fd(414)2490 b Fg(d->xmax[0])583
+b(=)e(XMAX;)1454 58115 y Fd(415)2490 b Fg(d->m[0])2326
+b(=)581 b(MX;)1454 59444 y Fd(416)1454 60772 y(417)2490
+b Fg(d->xmin[1])583 b(=)e(YMIN;)1454 62100 y Fd(418)2490
+b Fg(d->xmax[1])583 b(=)e(YMAX;)1454 63429 y Fd(419)2490
+b Fg(d->m[1])2326 b(=)581 b(MY;)1454 64757 y Fd(420)1454
+66086 y(421)1328 b Fg(#ifdef)582 b(USE3D)1454 67414 y
+Fd(422)2490 b Fg(d->xmin[2])583 b(=)e(ZMIN;)1454 68742
+y Fd(423)2490 b Fg(d->xmax[2])583 b(=)e(ZMAX;)1454 70071
+y Fd(424)2490 b Fg(d->m[2])2326 b(=)581 b(MZ;)1454 71399
+y Fd(425)1328 b Fg(#endif)1454 72727 y Fd(426)1454 74056
+y(427)2490 b Fg(/*)582 b(Calculate)g(grid)g(spacing)g(and)g
+(differential)h(volume)f(*/)1454 75384 y Fd(428)1454
+76712 y(429)2490 b Fg(d->dOmega)583 b(=)e(ONE;)1454 78041
+y Fd(430)2490 b Fg(FOR_DIM)582 b({)p Black 27091 81741
+a Ft(117)p Black eop
+%%Page: 118 122
+118 121 bop Black Black -2546 7638 a Fd(431)3653 b Fg(d->dx[dim])582
+b(=)g(\(d->xmax[dim])h(-)e(d->xmin[dim]\))i(/)e(d->m[dim];)-2546
+8966 y Fd(432)3653 b Fg(d->m[dim])582 b(+=1;)-2546 10295
+y Fd(433)3653 b Fg(d->dOmega)582 b(*=)g(d->dx[dim];)-2546
+11623 y Fd(434)2490 b Fg(})-2546 12951 y Fd(435)-2546
+14280 y(436)g Fg(/*)582 b(Set)f(partitioning)i(*/)-2546
+15608 y Fd(437)-2546 16936 y(438)2490 b Fg(d->num_procs[0])584
+b(=)d(NPX;)-2546 18265 y Fd(439)2490 b Fg(n[0])582 b(=)f(NPX;)-2546
+19593 y Fd(440)2490 b Fg(nd[0])582 b(=)f(d->m[0])i(/)e(NPX;)-2546
+20922 y Fd(441)-2546 22250 y(442)2490 b Fg(d->num_procs[1])584
+b(=)d(NPY;)-2546 23578 y Fd(443)2490 b Fg(n[1])582 b(=)f(NPY;)-2546
+24907 y Fd(444)2490 b Fg(nd[1])582 b(=)f(d->m[1])i(/)e(NPY;)-2546
+26235 y Fd(445)-2546 27563 y(446)1328 b Fg(#ifdef)582
+b(USE3D)-2546 28892 y Fd(447)2490 b Fg(d->num_procs[2])584
+b(=)d(NPZ;)-2546 30220 y Fd(448)2490 b Fg(n[2])582 b(=)f(NPZ;)-2546
+31548 y Fd(449)2490 b Fg(nd[2])582 b(=)f(d->m[2])i(/)e(NPZ;)-2546
+32877 y Fd(450)1328 b Fg(#endif)-2546 34205 y Fd(451)-2546
+35533 y(452)2490 b Fg(/*)582 b(Compute)g(the)g(neighbors)g(*/)-2546
+36862 y Fd(453)-2546 38190 y(454)2490 b Fg(d->nbr_left[0])1165
+b(=)581 b(\(myId\045n[0]\))i(==)e(0)9299 b(?)581 b(myId)h(:)f(myId-1;)
+-2546 39518 y Fd(455)2490 b Fg(d->nbr_right[0])584 b(=)d
+(\(myId\045n[0]\))i(==)e(n[0]-1)6394 b(?)581 b(myId)h(:)f(myId+1;)-2546
+40847 y Fd(456)-2546 42175 y(457)2490 b Fg(d->nbr_left[1])1165
+b(=)581 b(\(myId/n[0]\)\045n[1])j(==)d(0)6393 b(?)581
+b(myId)h(:)f(myId-n[0];)-2546 43504 y Fd(458)2490 b Fg(d->nbr_right[1])
+584 b(=)d(\(myId/n[0]\)\045n[1])j(==)d(n[1]-1)3488 b(?)581
+b(myId)h(:)f(myId+n[0];)-2546 44832 y Fd(459)-2546 46160
+y(460)1328 b Fg(#ifdef)582 b(USE3D)-2546 47489 y Fd(461)2490
+b Fg(d->nbr_left[2])1165 b(=)581 b(\(myId/n[0]/n[1]\)\045n[2])j(==)e(0)
+3487 b(?)581 b(myId)h(:)f(myId-n[0]*n[1];)-2546 48817
+y Fd(462)2490 b Fg(d->nbr_right[2])584 b(=)d
+(\(myId/n[0]/n[1]\)\045n[2])j(==)e(n[2]-1)g(?)f(myId)h(:)f
+(myId+n[0]*n[1];)-2546 50145 y Fd(463)1328 b Fg(#endif)-2546
+51474 y Fd(464)-2546 52802 y(465)2490 b Fg(/*)582 b(Compute)g(the)g
+(local)f(subdomains)-2546 54130 y Fd(466)4234 b Fg(m_start:)582
+b(left)g(border)g(in)f(global)h(index)g(space)-2546 55459
+y Fd(467)4234 b Fg(l_m:)2906 b(length)582 b(of)g(the)f(subdomain)i(*/)
+-2546 56787 y Fd(468)-2546 58115 y(469)2490 b Fg(d->m_start[0])583
+b(=)f(\(myId\045n[0]\)*nd[0];)-2546 59444 y Fd(470)2490
+b Fg(d->l_m[0])2907 b(=)582 b(d->nbr_right[0])h(==)f(myId)f(?)h
+(d->m[0])g(-)f(d->m_start[0])i(:)e(nd[0];)-2546 60772
+y Fd(471)-2546 62100 y(472)2490 b Fg(d->m_start[1])583
+b(=)f(\(\(myId/n[0]\)\045n[1]\)*nd[1];)-2546 63429 y
+Fd(473)2490 b Fg(d->l_m[1])2907 b(=)582 b(d->nbr_right[1])h(==)f(myId)f
+(?)h(d->m[1])g(-)f(d->m_start[1])i(:)e(nd[1];)-2546 64757
+y Fd(474)-2546 66086 y(475)1328 b Fg(#ifdef)582 b(USE3D)-2546
+67414 y Fd(476)2490 b Fg(d->m_start[2])583 b(=)f
+(\(myId/n[0]/n[1]\)*nd[2];)-2546 68742 y Fd(477)2490
+b Fg(d->l_m[2])2907 b(=)582 b(d->nbr_right[2])h(==)f(myId)f(?)h
+(d->m[2])g(-)f(d->m_start[2])i(:)e(nd[2];)-2546 70071
+y Fd(478)1328 b Fg(#endif)-2546 71399 y Fd(479)-2546
+72727 y(480)2490 b Fg(/*)582 b(Allocate)g(memory)g(for)g(the)f(y_ext)h
+(array)-2546 74056 y Fd(481)4234 b Fg(\(local)582 b(solution)g(+)f
+(data)h(from)g(neighbors\))h(*/)-2546 75384 y Fd(482)-2546
+76712 y(483)2490 b Fg(size)582 b(=)f(1;)-2546 78041 y
+Fd(484)2490 b Fg(FOR_DIM)582 b(size)g(*=)g(d->l_m[dim]+2;)p
+Black 23091 81741 a Ft(118)p Black eop
+%%Page: 119 123
+119 122 bop Black Black 1454 7638 a Fd(485)2490 b Fg(d->y_ext)583
+b(=)e(\(realtype)h(*\))g(malloc\()g(size*sizeof\(realtype\)\);)1454
+8966 y Fd(486)1454 10295 y(487)2490 b Fg(/*)582 b(Initialize)g(Buffer)g
+(field.)1454 11623 y Fd(488)4234 b Fg(Size)581 b(of)h(buffer)g(is)f
+(checked)i(when)e(needed)h(*/)1454 12951 y Fd(489)1454
+14280 y(490)2490 b Fg(d->buf_send)583 b(=)e(NULL;)1454
+15608 y Fd(491)2490 b Fg(d->buf_recv)583 b(=)e(NULL;)1454
+16936 y Fd(492)2490 b Fg(d->buf_size)583 b(=)e(0;)1454
+18265 y Fd(493)1454 19593 y(494)2490 b Fg(/*)582 b(Allocate)g(space)g
+(for)g(the)f(source)h(parameters)h(*/)1454 20922 y Fd(495)1454
+22250 y(496)2490 b Fg(*neq)582 b(=)f(1;)h(*l_neq)g(=)f(1;)1454
+23578 y Fd(497)2490 b Fg(FOR_DIM)582 b({*neq)g(*=)g(d->m[dim];)1164
+b(*l_neq)582 b(*=)f(d->l_m[dim];})1454 24907 y Fd(498)2490
+b Fg(d->p)582 b(=)f(N_VNew_Parallel\(comm,)k(*l_neq,)d(*neq\);)1454
+26235 y Fd(499)1454 27563 y(500)2490 b Fg(/*)582 b(Initialize)g(the)g
+(parameters)h(for)e(a)h(source)g(with)f(Gaussian)i(profile)f(*/)1454
+28892 y Fd(501)1454 30220 y(502)2490 b Fg(SetSource\(d\);)1454
+31548 y Fd(503)1454 32877 y(504)1328 b Fg(})1454 34205
+y Fd(505)1454 35533 y(506)g Fg(static)582 b(void)g
+(SetSource\(ProblemData)i(d\))1454 36862 y Fd(507)1328
+b Fg({)1454 38190 y Fd(508)2490 b Fg(int)582 b(*l_m,)g(*m_start;)1454
+39518 y Fd(509)2490 b Fg(realtype)583 b(*xmin,)f(*xmax,)g(*dx;)1454
+40847 y Fd(510)2490 b Fg(realtype)583 b(x[DIM],)f(g,)f(*pdata;)1454
+42175 y Fd(511)2490 b Fg(int)582 b(i[DIM];)1454 43504
+y Fd(512)1454 44832 y(513)2490 b Fg(l_m)1163 b(=)581
+b(d->l_m;)1454 46160 y Fd(514)2490 b Fg(m_start)582 b(=)g(d->m_start;)
+1454 47489 y Fd(515)2490 b Fg(xmin)582 b(=)f(d->xmin;)1454
+48817 y Fd(516)2490 b Fg(xmax)582 b(=)f(d->xmax;)1454
+50145 y Fd(517)2490 b Fg(dx)582 b(=)f(d->dx;)1454 51474
+y Fd(518)1454 52802 y(519)1454 54130 y(520)2490 b Fg(pdata)582
+b(=)f(NV_DATA_P\(d->p\);)1454 55459 y Fd(521)1454 56787
+y(522)2490 b Fg(for\(i[0]=0;)583 b(i[0]<l_m[0];)g(i[0]++\))f({)1454
+58115 y Fd(523)3653 b Fg(x[0])581 b(=)h(xmin[0])g(+)f
+(\(m_start[0]+i[0]\))j(*)d(dx[0];)1454 59444 y Fd(524)3653
+b Fg(for\(i[1]=0;)582 b(i[1]<l_m[1];)h(i[1]++\))g({)1454
+60772 y Fd(525)4815 b Fg(x[1])582 b(=)f(xmin[1])h(+)f
+(\(m_start[1]+i[1]\))j(*)d(dx[1];)1454 62100 y Fd(526)1328
+b Fg(#ifdef)582 b(USE3D)1454 63429 y Fd(527)4815 b Fg(for\(i[2]=0;)583
+b(i[2]<l_m[2];)g(i[2]++\))f({)1454 64757 y Fd(528)5977
+b Fg(x[2])582 b(=)f(xmin[2])h(+)g(\(m_start[2]+i[2]\))h(*)f(dx[2];)1454
+66086 y Fd(529)1454 67414 y(530)5977 b Fg(g)581 b(=)h(G1_AMPL)1454
+68742 y Fd(531)7139 b Fg(*)582 b(exp\()g
+(-SQR\(G1_X-x[0]\)/SQR\(G1_SIGMA\))j(\))1454 70071 y
+Fd(532)7139 b Fg(*)582 b(exp\()g(-SQR\(G1_Y-x[1]\)/SQR\(G1_SIGMA\))j
+(\))1454 71399 y Fd(533)7139 b Fg(*)582 b(exp\()g
+(-SQR\(G1_Z-x[2]\)/SQR\(G1_SIGMA\))j(\);)1454 72727 y
+Fd(534)1454 74056 y(535)5977 b Fg(g)581 b(+=)h(G2_AMPL)1454
+75384 y Fd(536)7139 b Fg(*)582 b(exp\()g
+(-SQR\(G2_X-x[0]\)/SQR\(G2_SIGMA\))j(\))1454 76712 y
+Fd(537)7139 b Fg(*)582 b(exp\()g(-SQR\(G2_Y-x[1]\)/SQR\(G2_SIGMA\))j
+(\))1454 78041 y Fd(538)7139 b Fg(*)582 b(exp\()g
+(-SQR\(G2_Z-x[2]\)/SQR\(G2_SIGMA\))j(\);)p Black 27091
+81741 a Ft(119)p Black eop
+%%Page: 120 124
+120 123 bop Black Black -2546 7638 a Fd(539)-2546 8966
+y(540)5977 b Fg(if\()582 b(g)f(<)g(G_MIN)h(\))g(g)f(=)g(ZERO;)-2546
+10295 y Fd(541)-2546 11623 y(542)5977 b Fg(IJth\(pdata,)583
+b(i\))e(=)h(g;)-2546 12951 y Fd(543)4815 b Fg(})-2546
+14280 y Fd(544)1328 b Fg(#else)-2546 15608 y Fd(545)4815
+b Fg(g)581 b(=)g(G1_AMPL)-2546 16936 y Fd(546)5977 b
+Fg(*)581 b(exp\()h(-SQR\(G1_X-x[0]\)/SQR\(G1_SIGMA\))k(\))-2546
+18265 y Fd(547)5977 b Fg(*)581 b(exp\()h
+(-SQR\(G1_Y-x[1]\)/SQR\(G1_SIGMA\))k(\);)-2546 19593
+y Fd(548)-2546 20922 y(549)4815 b Fg(g)581 b(+=)h(G2_AMPL)-2546
+22250 y Fd(550)5977 b Fg(*)581 b(exp\()h
+(-SQR\(G2_X-x[0]\)/SQR\(G2_SIGMA\))k(\))-2546 23578 y
+Fd(551)5977 b Fg(*)581 b(exp\()h(-SQR\(G2_Y-x[1]\)/SQR\(G2_SIGMA\))k
+(\);)-2546 24907 y Fd(552)-2546 26235 y(553)4815 b Fg(if\()581
+b(g)h(<)f(G_MIN)h(\))f(g)h(=)f(ZERO;)-2546 27563 y Fd(554)-2546
+28892 y(555)4815 b Fg(IJth\(pdata,)583 b(i\))e(=)g(g;)-2546
+30220 y Fd(556)1328 b Fg(#endif)-2546 31548 y Fd(557)3653
+b Fg(})-2546 32877 y Fd(558)2490 b Fg(})-2546 34205 y
+Fd(559)1328 b Fg(})-2546 35533 y Fd(560)-2546 36862 y(561)g
+Fg(/*)-2546 38190 y Fd(562)1909 b Fg
+(*------------------------------------------------------------------)
+-2546 39518 y Fd(563)g Fg(*)581 b(f_comm:)-2546 40847
+y Fd(564)1909 b Fg(*)581 b(Function)i(for)e(inter-process)i
+(communication)-2546 42175 y Fd(565)1909 b Fg(*)581 b(Used)h(both)g
+(for)g(the)f(forward)h(and)g(backward)g(phase.)-2546
+43504 y Fd(566)1909 b Fg
+(*------------------------------------------------------------------)
+-2546 44832 y Fd(567)g Fg(*/)-2546 46160 y Fd(568)-2546
+47489 y(569)1328 b Fg(static)582 b(void)g(f_comm\(long)h(int)e
+(N_local,)i(realtype)f(t,)f(N_Vector)i(y,)e(void)h(*f_data\))-2546
+48817 y Fd(570)1328 b Fg({)-2546 50145 y Fd(571)2490
+b Fg(int)582 b(id,)f(n[DIM],)i(proc_cond[DIM],)g(nbr[DIM][2];)-2546
+51474 y Fd(572)2490 b Fg(ProblemData)583 b(d;)-2546 52802
+y Fd(573)2490 b Fg(realtype)583 b(*yextdata,)f(*ydata;)-2546
+54130 y Fd(574)2490 b Fg(int)582 b(l_m[DIM],)g(dim;)-2546
+55459 y Fd(575)2490 b Fg(int)582 b(c,)f(i[DIM],)i(l[DIM-1];)-2546
+56787 y Fd(576)2490 b Fg(realtype)583 b(*buf_send,)f(*buf_recv;)-2546
+58115 y Fd(577)2490 b Fg(MPI_Status)583 b(stat;)-2546
+59444 y Fd(578)2490 b Fg(MPI_Comm)583 b(comm;)-2546 60772
+y Fd(579)2490 b Fg(int)582 b(dir,)g(size)f(=)h(1,)f(small)h(=)f
+(INT_MAX;)-2546 62100 y Fd(580)-2546 63429 y(581)2490
+b Fg(d)1163 b(=)581 b(\(ProblemData\))i(f_data;)-2546
+64757 y Fd(582)2490 b Fg(comm)582 b(=)f(d->comm;)-2546
+66086 y Fd(583)2490 b Fg(id)582 b(=)f(d->myId;)-2546
+67414 y Fd(584)-2546 68742 y(585)2490 b Fg(/*)582 b(extract)g(data)g
+(from)f(domain*/)-2546 70071 y Fd(586)2490 b Fg(FOR_DIM)582
+b({)-2546 71399 y Fd(587)3653 b Fg(n[dim])582 b(=)f(d->num_procs[dim];)
+-2546 72727 y Fd(588)3653 b Fg(l_m[dim])582 b(=)f(d->l_m[dim];)-2546
+74056 y Fd(589)2490 b Fg(})-2546 75384 y Fd(590)g Fg(yextdata)583
+b(=)e(d->y_ext;)-2546 76712 y Fd(591)2490 b Fg(ydata)2326
+b(=)581 b(NV_DATA_P\(y\);)-2546 78041 y Fd(592)p Black
+23091 81741 a Ft(120)p Black eop
+%%Page: 121 125
+121 124 bop Black Black 1454 7638 a Fd(593)2490 b Fg(/*)582
+b(Calculate)g(required)h(buffer)f(size)f(*/)1454 8966
+y Fd(594)2490 b Fg(FOR_DIM)582 b({)1454 10295 y Fd(595)3653
+b Fg(size)581 b(*=)h(l_m[dim];)1454 11623 y Fd(596)3653
+b Fg(if\()581 b(l_m[dim])i(<)e(small\))h(small)g(=)f(l_m[dim];)1454
+12951 y Fd(597)2490 b Fg(})1454 14280 y Fd(598)g Fg(size)582
+b(/=)f(small;)1454 15608 y Fd(599)1454 16936 y(600)2490
+b Fg(/*)582 b(Adjust)g(buffer)g(size)g(if)f(necessary)i(*/)1454
+18265 y Fd(601)2490 b Fg(if\()582 b(d->buf_size)h(<)e(size)h(\))f({)
+1454 19593 y Fd(602)3653 b Fg(d->buf_send)582 b(=)g(\(realtype*\))g
+(realloc\()h(d->buf_send,)g(size)e(*)h(sizeof\(realtype\)\);)1454
+20922 y Fd(603)3653 b Fg(d->buf_recv)582 b(=)g(\(realtype*\))g
+(realloc\()h(d->buf_recv,)g(size)e(*)h(sizeof\(realtype\)\);)1454
+22250 y Fd(604)3653 b Fg(d->buf_size)582 b(=)g(size;)1454
+23578 y Fd(605)2490 b Fg(})1454 24907 y Fd(606)1454 26235
+y(607)g Fg(buf_send)583 b(=)e(d->buf_send;)1454 27563
+y Fd(608)2490 b Fg(buf_recv)583 b(=)e(d->buf_recv;)1454
+28892 y Fd(609)1454 30220 y(610)2490 b Fg(/*)582 b(Compute)g(the)g
+(communication)h(pattern;)f(who)g(sends)f(first?)h(*/)1454
+31548 y Fd(611)2490 b Fg(/*)582 b(if)f(proc_cond==1)i(,)e(process)i
+(sends)f(first)f(in)h(this)g(dimension)g(*/)1454 32877
+y Fd(612)2490 b Fg(proc_cond[0])583 b(=)f(\(id\045n[0]\)\0452;)1454
+34205 y Fd(613)2490 b Fg(proc_cond[1])583 b(=)f
+(\(\(id/n[0]\)\045n[1]\)\0452;)1454 35533 y Fd(614)1328
+b Fg(#ifdef)582 b(USE3D)1454 36862 y Fd(615)2490 b Fg(proc_cond[2])583
+b(=)f(\(id/n[0]/n[1]\)\0452;)1454 38190 y Fd(616)1328
+b Fg(#endif)1454 39518 y Fd(617)1454 40847 y(618)2490
+b Fg(/*)582 b(Compute)g(the)g(actual)g(communication)h(pattern)f(*/)
+1454 42175 y Fd(619)2490 b Fg(/*)582 b(nbr[dim][0])h(is)e(first)h(proc)
+g(to)f(communicate)i(with)f(in)f(dimension)i(dim)e(*/)1454
+43504 y Fd(620)2490 b Fg(/*)582 b(nbr[dim][1])h(the)e(second)h(one)g
+(*/)1454 44832 y Fd(621)2490 b Fg(FOR_DIM)582 b({)1454
+46160 y Fd(622)3653 b Fg(nbr[dim][proc_cond[dim]])1165
+b(=)582 b(d->nbr_left[dim];)1454 47489 y Fd(623)3653
+b Fg(nbr[dim][!proc_cond[dim]])584 b(=)e(d->nbr_right[dim];)1454
+48817 y Fd(624)2490 b Fg(})1454 50145 y Fd(625)1454 51474
+y(626)g Fg(/*)582 b(Communication:)h(loop)f(over)f(dimension)i(and)f
+(direction)g(\(left/right\))h(*/)1454 52802 y Fd(627)2490
+b Fg(FOR_DIM)582 b({)1454 54130 y Fd(628)1454 55459 y(629)3653
+b Fg(for)581 b(\(dir=0;)h(dir<=1;)h(dir++\))f({)1454
+56787 y Fd(630)1454 58115 y(631)4815 b Fg(/*)581 b(If)h(subdomain)g(at)
+g(boundary,)g(no)g(communication)h(in)e(this)h(direction)g(*/)1454
+59444 y Fd(632)1454 60772 y(633)4815 b Fg(if)581 b(\(id)h(!=)f
+(nbr[dim][dir]\))j({)1454 62100 y Fd(634)5977 b Fg(c=0;)1454
+63429 y Fd(635)g Fg(/*)582 b(Compute)g(the)f(index)h(of)g(the)f
+(boundary)i(\(right)f(or)f(left\))h(*/)1454 64757 y Fd(636)5977
+b Fg(i[dim])582 b(=)g(\(dir)f(^)h(proc_cond[dim]\))h(?)e
+(\(l_m[dim]-1\))i(:)e(0;)1454 66086 y Fd(637)5977 b Fg(/*)582
+b(Loop)f(over)h(all)g(other)g(dimensions)g(and)g(copy)g(data)f(into)h
+(buf_send)g(*/)1454 67414 y Fd(638)5977 b Fg(l[0]=\(dim+1\)\045DIM;)
+1454 68742 y Fd(639)1328 b Fg(#ifdef)582 b(USE3D)1454
+70071 y Fd(640)5977 b Fg(l[1]=\(dim+2\)\045DIM;)1454
+71399 y Fd(641)g Fg(for\(i[l[1]]=0;)583 b(i[l[1]]<l_m[l[1]];)h
+(i[l[1]]++\))1454 72727 y Fd(642)1328 b Fg(#endif)1454
+74056 y Fd(643)7139 b Fg(for\(i[l[0]]=0;)584 b(i[l[0]]<l_m[l[0]];)g
+(i[l[0]]++\))1454 75384 y Fd(644)8302 b Fg(buf_send[c++])583
+b(=)e(IJth\(ydata,)i(i\);)1454 76712 y Fd(645)1454 78041
+y(646)5977 b Fg(if)582 b(\()f(proc_cond[dim])i(\))e({)p
+Black 27091 81741 a Ft(121)p Black eop
+%%Page: 122 126
+122 125 bop Black Black -2546 7638 a Fd(647)7139 b Fg(/*)582
+b(Send)g(buf_send)g(and)g(receive)g(into)g(buf_recv)g(*/)-2546
+8966 y Fd(648)7139 b Fg(MPI_Send\(buf_send,)584 b(c,)e
+(PVEC_REAL_MPI_TYPE,)i(nbr[dim][dir],)f(0,)e(comm\);)-2546
+10295 y Fd(649)7139 b Fg(MPI_Recv\(buf_recv,)584 b(c,)e
+(PVEC_REAL_MPI_TYPE,)i(nbr[dim][dir],)f(0,)e(comm,)h(&stat\);)-2546
+11623 y Fd(650)5977 b Fg(})581 b(else)h({)-2546 12951
+y Fd(651)7139 b Fg(/*)582 b(Receive)g(into)g(buf_recv)g(and)g(send)g
+(buf_send*/)-2546 14280 y Fd(652)7139 b Fg(MPI_Recv\(buf_recv,)584
+b(c,)e(PVEC_REAL_MPI_TYPE,)i(nbr[dim][dir],)f(0,)e(comm,)h(&stat\);)
+-2546 15608 y Fd(653)7139 b Fg(MPI_Send\(buf_send,)584
+b(c,)e(PVEC_REAL_MPI_TYPE,)i(nbr[dim][dir],)f(0,)e(comm\);)-2546
+16936 y Fd(654)5977 b Fg(})-2546 18265 y Fd(655)-2546
+19593 y(656)g Fg(c=0;)-2546 20922 y Fd(657)-2546 22250
+y(658)g Fg(/*)582 b(Compute)g(the)f(index)h(of)g(the)f(boundary)i
+(\(right)f(or)f(left\))h(in)g(yextdata)g(*/)-2546 23578
+y Fd(659)5977 b Fg(i[dim])582 b(=)g(\(dir)f(^)h(proc_cond[dim]\))h(?)e
+(l_m[dim])i(:)e(-1;)-2546 24907 y Fd(660)-2546 26235
+y(661)5977 b Fg(/*)582 b(Loop)f(over)h(all)g(other)g(dimensions)g(and)g
+(copy)g(data)f(into)h(yextdata)g(*/)-2546 27563 y Fd(662)1328
+b Fg(#ifdef)582 b(USE3D)-2546 28892 y Fd(663)5977 b Fg(for\(i[l[1]]=0;)
+583 b(i[l[1]]<l_m[l[1]];)h(i[l[1]]++\))-2546 30220 y
+Fd(664)1328 b Fg(#endif)-2546 31548 y Fd(665)7139 b Fg(for\(i[l[0]]=0;)
+584 b(i[l[0]]<l_m[l[0]];)g(i[l[0]]++\))-2546 32877 y
+Fd(666)8302 b Fg(IJth_ext\(yextdata,)584 b(i\))d(=)g(buf_recv[c++];)
+-2546 34205 y Fd(667)4815 b Fg(})-2546 35533 y Fd(668)3653
+b Fg(})581 b(/*)g(end)h(loop)g(over)f(direction)i(*/)-2546
+36862 y Fd(669)2490 b Fg(})582 b(/*)f(end)h(loop)f(over)h(dimension)h
+(*/)-2546 38190 y Fd(670)1328 b Fg(})-2546 39518 y Fd(671)-2546
+40847 y(672)g Fg(/*)-2546 42175 y Fd(673)1909 b Fg
+(*------------------------------------------------------------------)
+-2546 43504 y Fd(674)g Fg(*)581 b(f)h(and)f(f_local:)-2546
+44832 y Fd(675)1909 b Fg(*)581 b(Forward)i(phase)f(ODE)f(right-hand)i
+(side)-2546 46160 y Fd(676)1909 b Fg
+(*------------------------------------------------------------------)
+-2546 47489 y Fd(677)g Fg(*/)-2546 48817 y Fd(678)-2546
+50145 y(679)1328 b Fg(static)582 b(void)g(f\(realtype)g(t,)g(N_Vector)g
+(y,)g(N_Vector)g(ydot,)g(void)g(*f_data\))-2546 51474
+y Fd(680)1328 b Fg({)-2546 52802 y Fd(681)2490 b Fg(ProblemData)583
+b(d;)-2546 54130 y Fd(682)2490 b Fg(int)582 b(l_neq=1;)-2546
+55459 y Fd(683)2490 b Fg(int)582 b(dim;)-2546 56787 y
+Fd(684)-2546 58115 y(685)2490 b Fg(d)582 b(=)f(\(ProblemData\))i
+(f_data;)-2546 59444 y Fd(686)2490 b Fg(FOR_DIM)582 b(l_neq)g(*=)g
+(d->l_m[dim];)-2546 60772 y Fd(687)-2546 62100 y(688)2490
+b Fg(/*)582 b(Do)f(all)h(inter-processor)h(communication)g(*/)-2546
+63429 y Fd(689)2490 b Fg(f_comm\(l_neq,)583 b(t,)f(y,)f(f_data\);)-2546
+64757 y Fd(690)-2546 66086 y(691)2490 b Fg(/*)582 b(Compute)g
+(right-hand)h(side)e(locally)i(*/)-2546 67414 y Fd(692)2490
+b Fg(f_local\(l_neq,)584 b(t,)d(y,)g(ydot,)h(f_data\);)-2546
+68742 y Fd(693)1328 b Fg(})-2546 70071 y Fd(694)-2546
+71399 y(695)g Fg(static)582 b(void)g(f_local\(long)h(int)e(Nlocal,)i
+(realtype)f(t,)f(N_Vector)i(y,)-2546 72727 y Fd(696)12951
+b Fg(N_Vector)582 b(ydot,)g(void)g(*f_data\))-2546 74056
+y Fd(697)1328 b Fg({)-2546 75384 y Fd(698)2490 b Fg(realtype)583
+b(*Ydata,)f(*dydata,)g(*pdata;)-2546 76712 y Fd(699)2490
+b Fg(realtype)583 b(dx[DIM],)f(c,)f(v[DIM],)i(cl[DIM],)f(cr[DIM];)-2546
+78041 y Fd(700)2490 b Fg(realtype)583 b(adv[DIM],)f(diff[DIM];)p
+Black 23091 81741 a Ft(122)p Black eop
+%%Page: 123 127
+123 126 bop Black Black 1454 7638 a Fd(701)2490 b Fg(realtype)583
+b(xmin[DIM],)f(xmax[DIM],)h(x[DIM],)f(x1;)1454 8966 y
+Fd(702)2490 b Fg(int)582 b(i[DIM],)g(l_m[DIM],)h(m_start[DIM],)g
+(nbr_left[DIM],)g(nbr_right[DIM],)g(id;)1454 10295 y
+Fd(703)2490 b Fg(ProblemData)583 b(d;)1454 11623 y Fd(704)2490
+b Fg(int)582 b(dim;)1454 12951 y Fd(705)1454 14280 y(706)2490
+b Fg(d)582 b(=)f(\(ProblemData\))i(f_data;)1454 15608
+y Fd(707)1454 16936 y(708)2490 b Fg(/*)582 b(Extract)g(stuff)g(from)g
+(data)f(structure)i(*/)1454 18265 y Fd(709)2490 b Fg(id)582
+b(=)f(d->myId;)1454 19593 y Fd(710)2490 b Fg(FOR_DIM)582
+b({)1454 20922 y Fd(711)3653 b Fg(xmin[dim])3488 b(=)581
+b(d->xmin[dim];)1454 22250 y Fd(712)3653 b Fg(xmax[dim])3488
+b(=)581 b(d->xmax[dim];)1454 23578 y Fd(713)3653 b Fg(l_m[dim])4069
+b(=)581 b(d->l_m[dim];)1454 24907 y Fd(714)3653 b Fg(m_start[dim])1745
+b(=)581 b(d->m_start[dim];)1454 26235 y Fd(715)3653 b
+Fg(dx[dim])4650 b(=)581 b(d->dx[dim];)1454 27563 y Fd(716)3653
+b Fg(nbr_left[dim])1164 b(=)581 b(d->nbr_left[dim];)1454
+28892 y Fd(717)3653 b Fg(nbr_right[dim])583 b(=)e(d->nbr_right[dim];)
+1454 30220 y Fd(718)2490 b Fg(})1454 31548 y Fd(719)1454
+32877 y(720)g Fg(/*)582 b(Get)f(pointers)i(to)e(vector)h(data)g(*/)1454
+34205 y Fd(721)2490 b Fg(dydata)582 b(=)g(NV_DATA_P\(ydot\);)1454
+35533 y Fd(722)2490 b Fg(pdata)1163 b(=)582 b(NV_DATA_P\(d->p\);)1454
+36862 y Fd(723)1454 38190 y(724)2490 b Fg(/*)582 b(Copy)f(local)h
+(segment)h(of)e(y)g(to)h(y_ext)g(*/)1454 39518 y Fd(725)2490
+b Fg(Load_yext\(NV_DATA_P\(y\),)585 b(d\);)1454 40847
+y Fd(726)2490 b Fg(Ydata)582 b(=)f(d->y_ext;)1454 42175
+y Fd(727)1454 43504 y(728)2490 b Fg(/*)582 b(Velocity)g(components)h
+(in)e(x1)h(and)f(x2)h(directions)g(\(Poiseuille)h(profile\))f(*/)1454
+44832 y Fd(729)2490 b Fg(v[1])582 b(=)f(ZERO;)1454 46160
+y Fd(730)1328 b Fg(#ifdef)582 b(USE3D)1454 47489 y Fd(731)2490
+b Fg(v[2])582 b(=)f(ZERO;)1454 48817 y Fd(732)1328 b
+Fg(#endif)1454 50145 y Fd(733)1454 51474 y(734)2490 b
+Fg(/*)582 b(Local)g(domain)g(is)f([xmin+\(m_start+1\)*dx,)j
+(xmin+\(m_start+1+l_m-1\)*dx])h(*/)1454 52802 y Fd(735)1328
+b Fg(#ifdef)582 b(USE3D)1454 54130 y Fd(736)2490 b Fg(for\(i[2]=0;)583
+b(i[2]<l_m[2];)g(i[2]++\))f({)1454 55459 y Fd(737)1454
+56787 y(738)3653 b Fg(x[2])581 b(=)h(xmin[2])g(+)f
+(\(m_start[2]+i[2]\)*dx[2];)1454 58115 y Fd(739)1328
+b Fg(#endif)1454 59444 y Fd(740)3653 b Fg(for\(i[1]=0;)582
+b(i[1]<l_m[1];)h(i[1]++\))g({)1454 60772 y Fd(741)1454
+62100 y(742)4815 b Fg(x[1])582 b(=)f(xmin[1])h(+)f
+(\(m_start[1]+i[1]\)*dx[1];)1454 63429 y Fd(743)1454
+64757 y(744)4815 b Fg(/*)581 b(Velocity)i(component)f(in)g(x0)f
+(direction)i(\(Poiseuille)f(profile\))h(*/)1454 66086
+y Fd(745)4815 b Fg(x1)581 b(=)h(x[1])f(-)h(xmin[1])g(-)f(L;)1454
+67414 y Fd(746)4815 b Fg(v[0])582 b(=)f(V_COEFF)h(*)f(\(L)h(+)f(x1\))h
+(*)f(\(L)h(-)f(x1\);)1454 68742 y Fd(747)1454 70071 y(748)4815
+b Fg(for\(i[0]=0;)583 b(i[0]<l_m[0];)g(i[0]++\))f({)1454
+71399 y Fd(749)1454 72727 y(750)5977 b Fg(x[0])582 b(=)f(xmin[0])h(+)g
+(\(m_start[0]+i[0]\)*dx[0];)1454 74056 y Fd(751)1454
+75384 y(752)5977 b Fg(c)1163 b(=)581 b(IJth_ext\(Ydata,)i(i\);)1454
+76712 y Fd(753)1454 78041 y(754)5977 b Fg(/*)582 b(Source)g(term*/)p
+Black 27091 81741 a Ft(123)p Black eop
+%%Page: 124 128
+124 127 bop Black Black -2546 7638 a Fd(755)5977 b Fg(IJth\(dydata,)583
+b(i\))f(=)f(IJth\(pdata,)i(i\);)-2546 8966 y Fd(756)-2546
+10295 y(757)5977 b Fg(FOR_DIM)582 b({)-2546 11623 y Fd(758)7139
+b Fg(i[dim]+=1;)-2546 12951 y Fd(759)g Fg(cr[dim])583
+b(=)e(IJth_ext\(Ydata,)i(i\);)-2546 14280 y Fd(760)7139
+b Fg(i[dim]-=2;)-2546 15608 y Fd(761)g Fg(cl[dim])583
+b(=)e(IJth_ext\(Ydata,)i(i\);)-2546 16936 y Fd(762)7139
+b Fg(i[dim]+=1;)-2546 18265 y Fd(763)-2546 19593 y(764)g
+Fg(/*)582 b(Boundary)g(conditions)h(for)f(the)f(state)h(variables)g(*/)
+-2546 20922 y Fd(765)7139 b Fg(if\()582 b(i[dim]==l_m[dim]-1)i(&&)d
+(nbr_right[dim]==id\))-2546 22250 y Fd(766)8302 b Fg(cr[dim])582
+b(=)f(cl[dim];)-2546 23578 y Fd(767)7139 b Fg(else)582
+b(if\()g(i[dim]==0)g(&&)g(nbr_left[dim]==id)h(\))-2546
+24907 y Fd(768)8302 b Fg(cl[dim])582 b(=)f(cr[dim];)-2546
+26235 y Fd(769)-2546 27563 y(770)7139 b Fg(adv[dim])1164
+b(=)581 b(v[dim])h(*)g(\(cr[dim]-cl[dim]\))h(/)f(\(TWO*dx[dim]\);)-2546
+28892 y Fd(771)7139 b Fg(diff[dim])583 b(=)e(DIFF_COEF)i(*)e
+(\(cr[dim]-TWO*c+cl[dim]\))k(/)c(SQR\(dx[dim]\);)-2546
+30220 y Fd(772)-2546 31548 y(773)7139 b Fg(IJth\(dydata,)583
+b(i\))f(+=)f(\(diff[dim])i(-)e(adv[dim]\);)-2546 32877
+y Fd(774)5977 b Fg(})-2546 34205 y Fd(775)4815 b Fg(})-2546
+35533 y Fd(776)3653 b Fg(})-2546 36862 y Fd(777)1328
+b Fg(#ifdef)582 b(USE3D)-2546 38190 y Fd(778)2490 b Fg(})-2546
+39518 y Fd(779)1328 b Fg(#endif)-2546 40847 y Fd(780)g
+Fg(})-2546 42175 y Fd(781)-2546 43504 y(782)g Fg(/*)-2546
+44832 y Fd(783)1909 b Fg
+(*------------------------------------------------------------------)
+-2546 46160 y Fd(784)g Fg(*)581 b(fQ:)-2546 47489 y Fd(785)1909
+b Fg(*)581 b(Right-hand)i(side)f(of)f(quadrature)i(equations)f(on)g
+(forward)g(integration.)-2546 48817 y Fd(786)1909 b Fg(*)581
+b(The)h(only)g(quadrature)g(on)g(this)g(phase)g(computes)g(the)f(local)
+h(contribution)-2546 50145 y Fd(787)1909 b Fg(*)581 b(to)h(the)f
+(function)i(G.)-2546 51474 y Fd(788)1909 b Fg
+(*------------------------------------------------------------------)
+-2546 52802 y Fd(789)g Fg(*/)-2546 54130 y Fd(790)-2546
+55459 y(791)1328 b Fg(static)582 b(void)g(fQ\(realtype)h(t,)e(N_Vector)
+h(y,)g(N_Vector)g(qdot,)g(void)g(*fQ_data\))-2546 56787
+y Fd(792)1328 b Fg({)-2546 58115 y Fd(793)2490 b Fg(ProblemData)583
+b(d;)-2546 59444 y Fd(794)2490 b Fg(realtype)583 b(*dqdata;)-2546
+60772 y Fd(795)-2546 62100 y(796)2490 b Fg(d)582 b(=)f(\(ProblemData\))
+i(fQ_data;)-2546 63429 y Fd(797)-2546 64757 y(798)2490
+b Fg(dqdata)582 b(=)g(NV_DATA_P\(qdot\);)-2546 66086
+y Fd(799)-2546 67414 y(800)2490 b Fg(dqdata[0])583 b(=)e
+(N_VDotProd_Parallel\(y,y\);)-2546 68742 y Fd(801)2490
+b Fg(dqdata[0])583 b(*=)e(RCONST\(0.5\))i(*)e(\(d->dOmega\);)-2546
+70071 y Fd(802)1328 b Fg(})-2546 71399 y Fd(803)-2546
+72727 y(804)g Fg(/*)-2546 74056 y Fd(805)1909 b Fg
+(*------------------------------------------------------------------)
+-2546 75384 y Fd(806)g Fg(*)581 b(fB)h(and)f(fB_local:)-2546
+76712 y Fd(807)1909 b Fg(*)581 b(Backward)i(phase)f(ODE)f(right-hand)i
+(side)f(\(the)f(discretized)i(adjoint)f(PDE\))-2546 78041
+y Fd(808)1909 b Fg
+(*------------------------------------------------------------------)p
+Black 23091 81741 a Ft(124)p Black eop
+%%Page: 125 129
+125 128 bop Black Black 1454 7638 a Fd(809)1909 b Fg(*/)1454
+8966 y Fd(810)1454 10295 y(811)1328 b Fg(static)582 b(void)g
+(fB\(realtype)h(t,)e(N_Vector)h(y,)g(N_Vector)g(yB,)g(N_Vector)g
+(yBdot,)1454 11623 y Fd(812)10045 b Fg(void)582 b(*f_dataB\))1454
+12951 y Fd(813)1328 b Fg({)1454 14280 y Fd(814)2490 b
+Fg(ProblemData)583 b(d;)1454 15608 y Fd(815)2490 b Fg(int)582
+b(l_neq=1;)1454 16936 y Fd(816)2490 b Fg(int)582 b(dim;)1454
+18265 y Fd(817)1454 19593 y(818)2490 b Fg(d)582 b(=)f(\(ProblemData\))i
+(f_dataB;)1454 20922 y Fd(819)2490 b Fg(FOR_DIM)582 b(l_neq)g(*=)g
+(d->l_m[dim];)1454 22250 y Fd(820)1454 23578 y(821)2490
+b Fg(/*)582 b(Do)f(all)h(inter-processor)h(communication)g(*/)1454
+24907 y Fd(822)2490 b Fg(f_comm\(l_neq,)583 b(t,)f(yB,)f(f_dataB\);)
+1454 26235 y Fd(823)1454 27563 y(824)2490 b Fg(/*)582
+b(Compute)g(right-hand)h(side)e(locally)i(*/)1454 28892
+y Fd(825)2490 b Fg(fB_local\(l_neq,)584 b(t,)d(y,)h(yB,)f(yBdot,)h
+(f_dataB\);)1454 30220 y Fd(826)1328 b Fg(})1454 31548
+y Fd(827)1454 32877 y(828)g Fg(static)582 b(void)g(fB_local\(long)h
+(int)e(NlocalB,)i(realtype)f(t,)1454 34205 y Fd(829)13532
+b Fg(N_Vector)582 b(y,)g(N_Vector)g(yB,)g(N_Vector)g(dyB,)1454
+35533 y Fd(830)13532 b Fg(void)582 b(*f_dataB\))1454
+36862 y Fd(831)1328 b Fg({)1454 38190 y Fd(832)2490 b
+Fg(realtype)583 b(*YBdata,)f(*dyBdata,)g(*ydata;)1454
+39518 y Fd(833)2490 b Fg(realtype)583 b(dx[DIM],)f(c,)f(v[DIM],)i
+(cl[DIM],)f(cr[DIM];)1454 40847 y Fd(834)2490 b Fg(realtype)583
+b(adv[DIM],)f(diff[DIM];)1454 42175 y Fd(835)2490 b Fg(realtype)583
+b(xmin[DIM],)f(xmax[DIM],)h(x[DIM],)f(x1;)1454 43504
+y Fd(836)2490 b Fg(int)582 b(i[DIM],)g(l_m[DIM],)h(m_start[DIM],)g
+(nbr_left[DIM],)g(nbr_right[DIM],)g(id;)1454 44832 y
+Fd(837)2490 b Fg(ProblemData)583 b(d;)1454 46160 y Fd(838)2490
+b Fg(int)582 b(dim;)1454 47489 y Fd(839)1454 48817 y(840)2490
+b Fg(d)582 b(=)f(\(ProblemData\))i(f_dataB;)1454 50145
+y Fd(841)1454 51474 y(842)2490 b Fg(/*)582 b(Extract)g(stuff)g(from)g
+(data)f(structure)i(*/)1454 52802 y Fd(843)2490 b Fg(id)582
+b(=)f(d->myId;)1454 54130 y Fd(844)2490 b Fg(FOR_DIM)582
+b({)1454 55459 y Fd(845)3653 b Fg(xmin[dim])3488 b(=)581
+b(d->xmin[dim];)1454 56787 y Fd(846)3653 b Fg(xmax[dim])3488
+b(=)581 b(d->xmax[dim];)1454 58115 y Fd(847)3653 b Fg(l_m[dim])4069
+b(=)581 b(d->l_m[dim];)1454 59444 y Fd(848)3653 b Fg(m_start[dim])1745
+b(=)581 b(d->m_start[dim];)1454 60772 y Fd(849)3653 b
+Fg(dx[dim])4650 b(=)581 b(d->dx[dim];)1454 62100 y Fd(850)3653
+b Fg(nbr_left[dim])1164 b(=)581 b(d->nbr_left[dim];)1454
+63429 y Fd(851)3653 b Fg(nbr_right[dim])583 b(=)e(d->nbr_right[dim];)
+1454 64757 y Fd(852)2490 b Fg(})1454 66086 y Fd(853)1454
+67414 y(854)g Fg(dyBdata)582 b(=)g(NV_DATA_P\(dyB\);)1454
+68742 y Fd(855)2490 b Fg(ydata)1744 b(=)582 b(NV_DATA_P\(y\);)1454
+70071 y Fd(856)1454 71399 y(857)2490 b Fg(/*)582 b(Copy)f(local)h
+(segment)h(of)e(yB)g(to)h(y_ext)g(*/)1454 72727 y Fd(858)2490
+b Fg(Load_yext\(NV_DATA_P\(yB\),)585 b(d\);)1454 74056
+y Fd(859)2490 b Fg(YBdata)582 b(=)g(d->y_ext;)1454 75384
+y Fd(860)1454 76712 y(861)2490 b Fg(/*)582 b(Velocity)g(components)h
+(in)e(x1)h(and)f(x2)h(directions)g(\(Poiseuille)h(profile\))f(*/)1454
+78041 y Fd(862)2490 b Fg(v[1])582 b(=)f(ZERO;)p Black
+27091 81741 a Ft(125)p Black eop
+%%Page: 126 130
+126 129 bop Black Black -2546 7638 a Fd(863)1328 b Fg(#ifdef)582
+b(USE3D)-2546 8966 y Fd(864)2490 b Fg(v[2])582 b(=)f(ZERO;)-2546
+10295 y Fd(865)1328 b Fg(#endif)-2546 11623 y Fd(866)-2546
+12951 y(867)2490 b Fg(/*)582 b(local)g(domain)g(is)f
+([xmin+\(m_start\)*dx,)j(xmin+\(m_start+l_m-1\)*dx])h(*/)-2546
+14280 y Fd(868)1328 b Fg(#ifdef)582 b(USE3D)-2546 15608
+y Fd(869)2490 b Fg(for\(i[2]=0;)583 b(i[2]<l_m[2];)g(i[2]++\))f({)-2546
+16936 y Fd(870)-2546 18265 y(871)3653 b Fg(x[2])581 b(=)h(xmin[2])g(+)f
+(\(m_start[2]+i[2]\)*dx[2];)-2546 19593 y Fd(872)1328
+b Fg(#endif)-2546 20922 y Fd(873)-2546 22250 y(874)3653
+b Fg(for\(i[1]=0;)582 b(i[1]<l_m[1];)h(i[1]++\))g({)-2546
+23578 y Fd(875)-2546 24907 y(876)4815 b Fg(x[1])582 b(=)f(xmin[1])h(+)f
+(\(m_start[1]+i[1]\)*dx[1];)-2546 26235 y Fd(877)-2546
+27563 y(878)4815 b Fg(/*)581 b(Velocity)i(component)f(in)g(x0)f
+(direction)i(\(Poiseuille)f(profile\))h(*/)-2546 28892
+y Fd(879)4815 b Fg(x1)581 b(=)h(x[1])f(-)h(xmin[1])g(-)f(L;)-2546
+30220 y Fd(880)4815 b Fg(v[0])582 b(=)f(V_COEFF)h(*)f(\(L)h(+)f(x1\))h
+(*)f(\(L)h(-)f(x1\);)-2546 31548 y Fd(881)-2546 32877
+y(882)4815 b Fg(for\(i[0]=0;)583 b(i[0]<l_m[0];)g(i[0]++\))f({)-2546
+34205 y Fd(883)-2546 35533 y(884)5977 b Fg(x[0])582 b(=)f(xmin[0])h(+)g
+(\(m_start[0]+i[0]\)*dx[0];)-2546 36862 y Fd(885)-2546
+38190 y(886)5977 b Fg(c)1163 b(=)581 b(IJth_ext\(YBdata,)i(i\);)-2546
+39518 y Fd(887)-2546 40847 y(888)5977 b Fg(/*)582 b(Source)g(term)f
+(for)h(adjoint)g(PDE)g(*/)-2546 42175 y Fd(889)5977 b
+Fg(IJth\(dyBdata,)583 b(i\))f(=)f(-IJth\(ydata,)i(i\);)-2546
+43504 y Fd(890)-2546 44832 y(891)5977 b Fg(FOR_DIM)582
+b({)-2546 46160 y Fd(892)-2546 47489 y(893)7139 b Fg(i[dim]+=1;)-2546
+48817 y Fd(894)g Fg(cr[dim])583 b(=)e(IJth_ext\(YBdata,)j(i\);)-2546
+50145 y Fd(895)7139 b Fg(i[dim]-=2;)-2546 51474 y Fd(896)g
+Fg(cl[dim])583 b(=)e(IJth_ext\(YBdata,)j(i\);)-2546 52802
+y Fd(897)7139 b Fg(i[dim]+=1;)-2546 54130 y Fd(898)-2546
+55459 y(899)g Fg(/*)582 b(Boundary)g(conditions)h(for)f(the)f(adjoint)h
+(variables)h(*/)-2546 56787 y Fd(900)7139 b Fg(if\()582
+b(i[dim]==l_m[dim]-1)i(&&)d(nbr_right[dim]==id\))-2546
+58115 y Fd(901)8302 b Fg(cr[dim])582 b(=)f
+(cl[dim]-\(TWO*dx[dim]*v[dim]/DIFF_COEF\)*c;)-2546 59444
+y Fd(902)7139 b Fg(else)582 b(if\()g(i[dim]==0)g(&&)g
+(nbr_left[dim]==id)h(\))-2546 60772 y Fd(903)9464 b Fg(cl[dim])582
+b(=)g(cr[dim]+\(TWO*dx[dim]*v[dim]/DIFF_COEF\)*c;)-2546
+62100 y Fd(904)-2546 63429 y(905)7139 b Fg(adv[dim])1164
+b(=)581 b(v[dim])h(*)g(\(cr[dim]-cl[dim]\))h(/)f(\(TWO*dx[dim]\);)-2546
+64757 y Fd(906)7139 b Fg(diff[dim])583 b(=)e(DIFF_COEF)i(*)e
+(\(cr[dim]-TWO*c+cl[dim]\))k(/)c(SQR\(dx[dim]\);)-2546
+66086 y Fd(907)-2546 67414 y(908)7139 b Fg(IJth\(dyBdata,)584
+b(i\))d(-=)g(\(diff[dim])i(+)e(adv[dim]\);)-2546 68742
+y Fd(909)5977 b Fg(})-2546 70071 y Fd(910)4815 b Fg(})-2546
+71399 y Fd(911)3653 b Fg(})-2546 72727 y Fd(912)1328
+b Fg(#ifdef)582 b(USE3D)-2546 74056 y Fd(913)2490 b Fg(})-2546
+75384 y Fd(914)1328 b Fg(#endif)-2546 76712 y Fd(915)g
+Fg(})-2546 78041 y Fd(916)p Black 23091 81741 a Ft(126)p
+Black eop
+%%Page: 127 131
+127 130 bop Black Black 1454 7638 a Fd(917)1328 b Fg(/*)1454
+8966 y Fd(918)1909 b Fg
+(*------------------------------------------------------------------)
+1454 10295 y Fd(919)g Fg(*)581 b(fQB:)1454 11623 y Fd(920)1909
+b Fg(*)581 b(Right-hand)i(side)f(of)f(quadrature)i(equations)f(on)g
+(backward)g(integration)1454 12951 y Fd(921)1909 b Fg(*)581
+b(The)h(i-th)g(component)g(of)g(the)f(gradient)i(is)e(nothing)h(but)g
+(int_t)g(yB_i)g(dt)1454 14280 y Fd(922)1909 b Fg
+(*------------------------------------------------------------------)
+1454 15608 y Fd(923)g Fg(*/)1454 16936 y Fd(924)1454
+18265 y(925)1328 b Fg(static)582 b(void)g(fQB\(realtype)h(t,)e
+(N_Vector)i(y,)e(N_Vector)h(yB,)g(N_Vector)g(qBdot,)1454
+19593 y Fd(926)10626 b Fg(void)582 b(*fQ_dataB\))1454
+20922 y Fd(927)1328 b Fg({)1454 22250 y Fd(928)2490 b
+Fg(ProblemData)583 b(d;)1454 23578 y Fd(929)1454 24907
+y(930)2490 b Fg(d)582 b(=)f(\(ProblemData\))i(fQ_dataB;)1454
+26235 y Fd(931)1454 27563 y(932)2490 b Fg
+(N_VScale_Parallel\(-\(d->dOmega\),)586 b(yB,)c(qBdot\);)1454
+28892 y Fd(933)1328 b Fg(})1454 30220 y Fd(934)1454 31548
+y(935)g Fg(/*)1454 32877 y Fd(936)1909 b Fg
+(*------------------------------------------------------------------)
+1454 34205 y Fd(937)g Fg(*)581 b(Load_yext:)1454 35533
+y Fd(938)1909 b Fg(*)581 b(copies)h(data)g(from)g(src)g(\(y)f(or)g
+(yB\))h(into)g(y_ext,)g(which)g(already)g(contains)1454
+36862 y Fd(939)1909 b Fg(*)581 b(data)h(from)g(neighboring)h
+(processes.)1454 38190 y Fd(940)1909 b Fg
+(*------------------------------------------------------------------)
+1454 39518 y Fd(941)g Fg(*/)1454 40847 y Fd(942)1454
+42175 y(943)1328 b Fg(static)582 b(void)g(Load_yext\(realtype)i(*src,)e
+(ProblemData)g(d\))1454 43504 y Fd(944)1328 b Fg({)1454
+44832 y Fd(945)2490 b Fg(int)582 b(i[DIM],)g(l_m[DIM],)h(dim;)1454
+46160 y Fd(946)1454 47489 y(947)2490 b Fg(FOR_DIM)582
+b(l_m[dim])h(=)e(d->l_m[dim];)1454 48817 y Fd(948)1454
+50145 y(949)2490 b Fg(/*)582 b(copy)f(local)h(segment)h(*/)1454
+51474 y Fd(950)1328 b Fg(#ifdef)582 b(USE3D)1454 52802
+y Fd(951)2490 b Fg(for)1163 b(\(i[2]=0;)582 b(i[2]<l_m[2];)h(i[2]++\))
+1454 54130 y Fd(952)1328 b Fg(#endif)1454 55459 y Fd(953)3653
+b Fg(for\(i[1]=0;)582 b(i[1]<l_m[1];)h(i[1]++\))1454
+56787 y Fd(954)4815 b Fg(for\(i[0]=0;)583 b(i[0]<l_m[0];)g(i[0]++\))
+1454 58115 y Fd(955)5977 b Fg(IJth_ext\(d->y_ext,)584
+b(i\))d(=)h(IJth\(src,)g(i\);)1454 59444 y Fd(956)1328
+b Fg(})1454 60772 y Fd(957)1454 62100 y(958)g Fg(/*)1454
+63429 y Fd(959)1909 b Fg
+(*------------------------------------------------------------------)
+1454 64757 y Fd(960)g Fg(*)581 b(PrintHeader:)1454 66086
+y Fd(961)1909 b Fg(*)581 b(Print)h(first)g(lins)g(of)f(output)h
+(\(problem)h(description\))1454 67414 y Fd(962)1909 b
+Fg(*------------------------------------------------------------------)
+1454 68742 y Fd(963)g Fg(*/)1454 70071 y Fd(964)1454
+71399 y(965)1328 b Fg(static)582 b(void)g(PrintHeader\(\))1454
+72727 y Fd(966)1328 b Fg({)1454 74056 y Fd(967)3653 b
+Fg(printf\("\\nParallel)583 b(Krylov)f(adjoint)h(sensitivity)f
+(analysis)h(example\\n"\);)1454 75384 y Fd(968)3653 b
+Fg(printf\("\0451dD)583 b(Advection)f(diffusion)h(PDE)e(with)h
+(homogeneous)h(Neumann)f(B.C.\\n",DIM\);)1454 76712 y
+Fd(969)3653 b Fg(printf\("Computes)583 b(gradient)f(of)g(G)f(=)h
+(int_t_Omega)g(\()g(c_i^2)f(\))h(dt)f(dOmega\\n"\);)1454
+78041 y Fd(970)3653 b Fg(printf\("with)583 b(respect)f(to)f(the)h
+(source)g(values)g(at)f(each)h(grid)g(point.\\n\\n"\);)p
+Black 27091 81741 a Ft(127)p Black eop
+%%Page: 128 132
+128 131 bop Black Black -2546 7638 a Fd(971)-2546 8966
+y(972)3653 b Fg(printf\("Domain:\\n"\);)-2546 10295 y
+Fd(973)-2546 11623 y(974)1328 b Fg(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546 12951 y
+Fd(975)3653 b Fg(printf\(")1744 b(\045Lf)582 b(<)f(x)g(<)h(\045Lf)1744
+b(mx)581 b(=)g(\045d)1163 b(npe_x)582 b(=)f(\045d)h
+(\\n",XMIN,XMAX,MX,NPX\);)-2546 14280 y Fd(976)3653 b
+Fg(printf\(")1744 b(\045Lf)582 b(<)f(y)g(<)h(\045Lf)1744
+b(my)581 b(=)g(\045d)1163 b(npe_y)582 b(=)f(\045d)h
+(\\n",YMIN,YMAX,MY,NPY\);)-2546 15608 y Fd(977)1328 b
+Fg(#else)-2546 16936 y Fd(978)3653 b Fg(printf\(")1744
+b(\045f)582 b(<)f(x)g(<)h(\045f)1743 b(mx)582 b(=)f(\045d)1163
+b(npe_x)582 b(=)f(\045d)g(\\n",XMIN,XMAX,MX,NPX\);)-2546
+18265 y Fd(979)3653 b Fg(printf\(")1744 b(\045f)582 b(<)f(y)g(<)h
+(\045f)1743 b(my)582 b(=)f(\045d)1163 b(npe_y)582 b(=)f(\045d)g
+(\\n",YMIN,YMAX,MY,NPY\);)-2546 19593 y Fd(980)1328 b
+Fg(#endif)-2546 20922 y Fd(981)-2546 22250 y(982)g Fg(#ifdef)582
+b(USE3D)-2546 23578 y Fd(983)1328 b Fg(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546 24907 y
+Fd(984)3653 b Fg(printf\(")1744 b(\045Lf)582 b(<)f(z)g(<)h(\045Lf)1744
+b(mz)581 b(=)g(\045d)1163 b(npe_z)582 b(=)f(\045d)h
+(\\n",ZMIN,ZMAX,MZ,NPZ\);)-2546 26235 y Fd(985)1328 b
+Fg(#else)-2546 27563 y Fd(986)3653 b Fg(printf\(")1744
+b(\045f)582 b(<)f(z)g(<)h(\045f)1743 b(mz)582 b(=)f(\045d)1163
+b(npe_z)582 b(=)f(\045d)g(\\n",ZMIN,ZMAX,MZ,NPZ\);)-2546
+28892 y Fd(987)1328 b Fg(#endif)-2546 30220 y Fd(988)g
+Fg(#endif)-2546 31548 y Fd(989)-2546 32877 y(990)3653
+b Fg(printf\("\\n"\);)-2546 34205 y Fd(991)2490 b Fg(})-2546
+35533 y Fd(992)-2546 36862 y(993)1328 b Fg(/*)-2546 38190
+y Fd(994)1909 b Fg
+(*------------------------------------------------------------------)
+-2546 39518 y Fd(995)g Fg(*)581 b(PrintFinalStats:)-2546
+40847 y Fd(996)1909 b Fg(*)581 b(Print)h(final)g(statistics)h
+(contained)f(in)g(cvode_mem)-2546 42175 y Fd(997)1909
+b Fg
+(*------------------------------------------------------------------)
+-2546 43504 y Fd(998)g Fg(*/)-2546 44832 y Fd(999)-2952
+46160 y(1000)1328 b Fg(static)582 b(void)g(PrintFinalStats\(void)i
+(*cvode_mem\))-2952 47489 y Fd(1001)1328 b Fg({)-2952
+48817 y Fd(1002)2490 b Fg(long)582 b(int)g(lenrw,)g(leniw)g(;)-2952
+50145 y Fd(1003)2490 b Fg(long)582 b(int)g(lenrwSPGMR,)g(leniwSPGMR;)
+-2952 51474 y Fd(1004)2490 b Fg(long)582 b(int)g(nst,)f(nfe,)h
+(nsetups,)g(nni,)g(ncfn,)g(netf;)-2952 52802 y Fd(1005)2490
+b Fg(long)582 b(int)g(nli,)f(npe,)h(nps,)g(ncfl,)g(nfeSPGMR;)-2952
+54130 y Fd(1006)2490 b Fg(int)582 b(flag;)-2952 55459
+y Fd(1007)-2952 56787 y(1008)2490 b Fg(flag)582 b(=)f
+(CVodeGetWorkSpace\(cvode_mem,)586 b(&lenrw,)c(&leniw\);)-2952
+58115 y Fd(1009)2490 b Fg(flag)582 b(=)f(CVodeGetNumSteps\(cvode_mem,)
+586 b(&nst\);)-2952 59444 y Fd(1010)2490 b Fg(flag)582
+b(=)f(CVodeGetNumRhsEvals\(cvode_mem,)586 b(&nfe\);)-2952
+60772 y Fd(1011)2490 b Fg(flag)582 b(=)f
+(CVodeGetNumLinSolvSetups\(cvode_mem,)587 b(&nsetups\);)-2952
+62100 y Fd(1012)2490 b Fg(flag)582 b(=)f
+(CVodeGetNumErrTestFails\(cvode_mem,)587 b(&netf\);)-2952
+63429 y Fd(1013)2490 b Fg(flag)582 b(=)f
+(CVodeGetNumNonlinSolvIters\(cvode_mem,)587 b(&nni\);)-2952
+64757 y Fd(1014)2490 b Fg(flag)582 b(=)f
+(CVodeGetNumNonlinSolvConvFails\(cvode_mem,)588 b(&ncfn\);)-2952
+66086 y Fd(1015)-2952 67414 y(1016)2490 b Fg(flag)582
+b(=)f(CVSpgmrGetWorkSpace\(cvode_mem,)586 b(&lenrwSPGMR,)d
+(&leniwSPGMR\);)-2952 68742 y Fd(1017)2490 b Fg(flag)582
+b(=)f(CVSpgmrGetNumLinIters\(cvode_mem,)586 b(&nli\);)-2952
+70071 y Fd(1018)2490 b Fg(flag)582 b(=)f
+(CVSpgmrGetNumPrecEvals\(cvode_mem,)586 b(&npe\);)-2952
+71399 y Fd(1019)2490 b Fg(flag)582 b(=)f
+(CVSpgmrGetNumPrecSolves\(cvode_mem,)587 b(&nps\);)-2952
+72727 y Fd(1020)2490 b Fg(flag)582 b(=)f
+(CVSpgmrGetNumConvFails\(cvode_mem,)586 b(&ncfl\);)-2952
+74056 y Fd(1021)2490 b Fg(flag)582 b(=)f
+(CVSpgmrGetNumRhsEvals\(cvode_mem,)586 b(&nfeSPGMR\);)-2952
+75384 y Fd(1022)-2952 76712 y(1023)2490 b Fg(printf\("\\nFinal)584
+b(Statistics..)f(\\n\\n"\);)-2952 78041 y Fd(1024)2490
+b Fg(printf\("lenrw)1746 b(=)581 b(\0456ld)2906 b(leniw)582
+b(=)g(\0456ld\\n",)g(lenrw,)g(leniw\);)p Black 23091
+81741 a Ft(128)p Black eop
+%%Page: 129 133
+129 132 bop Black Black 1048 7638 a Fd(1025)2490 b Fg(printf\("llrw)
+2327 b(=)581 b(\0456ld)2906 b(lliw)1163 b(=)582 b(\0456ld\\n",)g
+(lenrwSPGMR,)h(leniwSPGMR\);)1048 8966 y Fd(1026)2490
+b Fg(printf\("nst)2908 b(=)581 b(\0456ld\\n")10462 b(,)581
+b(nst\);)1048 10295 y Fd(1027)2490 b Fg(printf\("nfe)2908
+b(=)581 b(\0456ld)2906 b(nfel)1163 b(=)582 b(\0456ld\\n")1163
+b(,)581 b(nfe,)h(nfeSPGMR\);)1048 11623 y Fd(1028)2490
+b Fg(printf\("nni)2908 b(=)581 b(\0456ld)2906 b(nli)1744
+b(=)582 b(\0456ld\\n")1163 b(,)581 b(nni,)h(nli\);)1048
+12951 y Fd(1029)2490 b Fg(printf\("nsetups)584 b(=)d(\0456ld)2906
+b(netf)1163 b(=)582 b(\0456ld\\n")1163 b(,)581 b(nsetups,)h(netf\);)
+1048 14280 y Fd(1030)2490 b Fg(printf\("npe)2908 b(=)581
+b(\0456ld)2906 b(nps)1744 b(=)582 b(\0456ld\\n")1163
+b(,)581 b(npe,)h(nps\);)1048 15608 y Fd(1031)2490 b Fg(printf\("ncfn)
+2327 b(=)581 b(\0456ld)2906 b(ncfl)1163 b(=)582 b(\0456ld\\n\\n",)g
+(ncfn,)g(ncfl\);)1048 16936 y Fd(1032)1328 b Fg(})1048
+18265 y Fd(1033)1048 19593 y(1034)g Fg(/*)1048 20922
+y Fd(1035)1909 b Fg
+(*------------------------------------------------------------------)
+1048 22250 y Fd(1036)g Fg(*)581 b(OutputGradient:)1048
+23578 y Fd(1037)1909 b Fg(*)581 b(Generate)i(matlab)f(m)f(files)h(for)g
+(visualization)1048 24907 y Fd(1038)1909 b Fg(*)581 b(One)h(file)g
+(gradXXXX.m)g(from)g(each)g(process)g(+)f(a)h(driver)g(grad.m)1048
+26235 y Fd(1039)1909 b Fg
+(*------------------------------------------------------------------)
+1048 27563 y Fd(1040)g Fg(*/)1048 28892 y Fd(1041)1048
+30220 y(1042)1328 b Fg(static)582 b(void)g(OutputGradient\(int)i(myId,)
+e(N_Vector)g(qB,)f(ProblemData)i(d\))1048 31548 y Fd(1043)1328
+b Fg({)1048 32877 y Fd(1044)2490 b Fg(FILE)582 b(*fid;)1048
+34205 y Fd(1045)2490 b Fg(char)582 b(filename[20];)1048
+35533 y Fd(1046)2490 b Fg(int)582 b(*l_m,)g(*m_start,)g(i[DIM],ip;)1048
+36862 y Fd(1047)2490 b Fg(realtype)583 b(*xmin,)f(*xmax,)g(*dx;)1048
+38190 y Fd(1048)2490 b Fg(realtype)583 b(x[DIM],)f(*pdata,)g(p,)f
+(*qBdata,)i(g;)1048 39518 y Fd(1049)1048 40847 y(1050)2490
+b Fg(sprintf\(filename,"grad\04503d.m",myId\);)1048 42175
+y Fd(1051)g Fg(fid)582 b(=)f(fopen\(filename,"w"\);)1048
+43504 y Fd(1052)1048 44832 y(1053)2490 b Fg(l_m)1163
+b(=)581 b(d->l_m;)1048 46160 y Fd(1054)2490 b Fg(m_start)582
+b(=)g(d->m_start;)1048 47489 y Fd(1055)2490 b Fg(xmin)582
+b(=)f(d->xmin;)1048 48817 y Fd(1056)2490 b Fg(xmax)582
+b(=)f(d->xmax;)1048 50145 y Fd(1057)2490 b Fg(dx)582
+b(=)f(d->dx;)1048 51474 y Fd(1058)1048 52802 y(1059)2490
+b Fg(qBdata)582 b(=)g(NV_DATA_P\(qB\);)1048 54130 y Fd(1060)2490
+b Fg(pdata)1163 b(=)582 b(NV_DATA_P\(d->p\);)1048 55459
+y Fd(1061)1048 56787 y(1062)2490 b Fg(/*)582 b(Write)g(matlab)g(files)g
+(with)f(solutions)i(from)f(each)f(process)h(*/)1048 58115
+y Fd(1063)1048 59444 y(1064)2490 b Fg(for\(i[0]=0;)583
+b(i[0]<l_m[0];)g(i[0]++\))f({)1048 60772 y Fd(1065)3653
+b Fg(x[0])581 b(=)h(xmin[0])g(+)f(\(m_start[0]+i[0]\))j(*)d(dx[0];)1048
+62100 y Fd(1066)3653 b Fg(for\(i[1]=0;)582 b(i[1]<l_m[1];)h(i[1]++\))g
+({)1048 63429 y Fd(1067)4815 b Fg(x[1])582 b(=)f(xmin[1])h(+)f
+(\(m_start[1]+i[1]\))j(*)d(dx[1];)1048 64757 y Fd(1068)1328
+b Fg(#ifdef)582 b(USE3D)1048 66086 y Fd(1069)4815 b Fg(for\(i[2]=0;)583
+b(i[2]<l_m[2];)g(i[2]++\))f({)1048 67414 y Fd(1070)5977
+b Fg(x[2])582 b(=)f(xmin[2])h(+)g(\(m_start[2]+i[2]\))h(*)f(dx[2];)1048
+68742 y Fd(1071)5977 b Fg(g)581 b(=)h(IJth\(qBdata,)h(i\);)1048
+70071 y Fd(1072)5977 b Fg(p)581 b(=)h(IJth\(pdata,)h(i\);)1048
+71399 y Fd(1073)1328 b Fg(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))1048 72727 y
+Fd(1074)5977 b Fg(fprintf\(fid,"x\045d\(\045d,1\))585
+b(=)c(\045Le;)h(\\n",)1163 b(myId,)581 b(i[0]+1,)5232
+b(x[0]\);)1048 74056 y Fd(1075)5977 b Fg
+(fprintf\(fid,"y\045d\(\045d,1\))585 b(=)c(\045Le;)h(\\n",)1163
+b(myId,)581 b(i[1]+1,)5232 b(x[1]\);)1048 75384 y Fd(1076)5977
+b Fg(fprintf\(fid,"z\045d\(\045d,1\))585 b(=)c(\045Le;)h(\\n",)1163
+b(myId,)581 b(i[2]+1,)5232 b(x[2]\);)1048 76712 y Fd(1077)5977
+b Fg(fprintf\(fid,"p\045d\(\045d,\045d,\045d\))585 b(=)d(\045Le;)f
+(\\n",)h(myId,)g(i[1]+1,)g(i[0]+1,)g(i[2]+1,)g(p\);)1048
+78041 y Fd(1078)5977 b Fg(fprintf\(fid,"g\045d\(\045d,\045d,\045d\))585
+b(=)d(\045Le;)f(\\n",)h(myId,)g(i[1]+1,)g(i[0]+1,)g(i[2]+1,)g(g\);)p
+Black 27091 81741 a Ft(129)p Black eop
+%%Page: 130 134
+130 133 bop Black Black -2952 7638 a Fd(1079)1328 b Fg(#elif)582
+b(defined\(SUNDIALS_DOUBLE_PRECISION\))-2952 8966 y Fd(1080)5977
+b Fg(fprintf\(fid,"x\045d\(\045d,1\))585 b(=)c(\045le;)h(\\n",)1163
+b(myId,)581 b(i[0]+1,)5232 b(x[0]\);)-2952 10295 y Fd(1081)5977
+b Fg(fprintf\(fid,"y\045d\(\045d,1\))585 b(=)c(\045le;)h(\\n",)1163
+b(myId,)581 b(i[1]+1,)5232 b(x[1]\);)-2952 11623 y Fd(1082)5977
+b Fg(fprintf\(fid,"z\045d\(\045d,1\))585 b(=)c(\045le;)h(\\n",)1163
+b(myId,)581 b(i[2]+1,)5232 b(x[2]\);)-2952 12951 y Fd(1083)5977
+b Fg(fprintf\(fid,"p\045d\(\045d,\045d,\045d\))585 b(=)d(\045le;)f
+(\\n",)h(myId,)g(i[1]+1,)g(i[0]+1,)g(i[2]+1,)g(p\);)-2952
+14280 y Fd(1084)5977 b Fg(fprintf\(fid,"g\045d\(\045d,\045d,\045d\))585
+b(=)d(\045le;)f(\\n",)h(myId,)g(i[1]+1,)g(i[0]+1,)g(i[2]+1,)g(g\);)
+-2952 15608 y Fd(1085)1328 b Fg(#else)-2952 16936 y Fd(1086)5977
+b Fg(fprintf\(fid,"x\045d\(\045d,1\))585 b(=)c(\045e;)h(\\n",)1162
+b(myId,)582 b(i[0]+1,)5232 b(x[0]\);)-2952 18265 y Fd(1087)5977
+b Fg(fprintf\(fid,"y\045d\(\045d,1\))585 b(=)c(\045e;)h(\\n",)1162
+b(myId,)582 b(i[1]+1,)5232 b(x[1]\);)-2952 19593 y Fd(1088)5977
+b Fg(fprintf\(fid,"z\045d\(\045d,1\))585 b(=)c(\045e;)h(\\n",)1162
+b(myId,)582 b(i[2]+1,)5232 b(x[2]\);)-2952 20922 y Fd(1089)5977
+b Fg(fprintf\(fid,"p\045d\(\045d,\045d,\045d\))585 b(=)d(\045e;)f
+(\\n",)h(myId,)g(i[1]+1,)g(i[0]+1,)g(i[2]+1,)g(p\);)-2952
+22250 y Fd(1090)5977 b Fg(fprintf\(fid,"g\045d\(\045d,\045d,\045d\))585
+b(=)d(\045e;)f(\\n",)h(myId,)g(i[1]+1,)g(i[0]+1,)g(i[2]+1,)g(g\);)-2952
+23578 y Fd(1091)1328 b Fg(#endif)-2952 24907 y Fd(1092)4815
+b Fg(})-2952 26235 y Fd(1093)1328 b Fg(#else)-2952 27563
+y Fd(1094)4815 b Fg(g)581 b(=)g(IJth\(qBdata,)i(i\);)-2952
+28892 y Fd(1095)4815 b Fg(p)581 b(=)g(IJth\(pdata,)i(i\);)-2952
+30220 y Fd(1096)1328 b Fg(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))-2952 31548 y
+Fd(1097)4815 b Fg(fprintf\(fid,"x\045d\(\045d,1\))584
+b(=)e(\045Le;)f(\\n",)1163 b(myId,)582 b(i[0]+1,)5232
+b(x[0]\);)-2952 32877 y Fd(1098)4815 b Fg
+(fprintf\(fid,"y\045d\(\045d,1\))584 b(=)e(\045Le;)f(\\n",)1163
+b(myId,)582 b(i[1]+1,)5232 b(x[1]\);)-2952 34205 y Fd(1099)4815
+b Fg(fprintf\(fid,"p\045d\(\045d,\045d\))584 b(=)e(\045Le;)g(\\n",)f
+(myId,)h(i[1]+1,)g(i[0]+1,)h(p\);)-2952 35533 y Fd(1100)4815
+b Fg(fprintf\(fid,"g\045d\(\045d,\045d\))584 b(=)e(\045Le;)g(\\n",)f
+(myId,)h(i[1]+1,)g(i[0]+1,)h(g\);)-2952 36862 y Fd(1101)1328
+b Fg(#elif)582 b(defined\(SUNDIALS_DOUBLE_PRECISION\))-2952
+38190 y Fd(1102)4815 b Fg(fprintf\(fid,"x\045d\(\045d,1\))584
+b(=)e(\045le;)f(\\n",)1163 b(myId,)582 b(i[0]+1,)5232
+b(x[0]\);)-2952 39518 y Fd(1103)4815 b Fg
+(fprintf\(fid,"y\045d\(\045d,1\))584 b(=)e(\045le;)f(\\n",)1163
+b(myId,)582 b(i[1]+1,)5232 b(x[1]\);)-2952 40847 y Fd(1104)4815
+b Fg(fprintf\(fid,"p\045d\(\045d,\045d\))584 b(=)e(\045le;)g(\\n",)f
+(myId,)h(i[1]+1,)g(i[0]+1,)h(p\);)-2952 42175 y Fd(1105)4815
+b Fg(fprintf\(fid,"g\045d\(\045d,\045d\))584 b(=)e(\045le;)g(\\n",)f
+(myId,)h(i[1]+1,)g(i[0]+1,)h(g\);)-2952 43504 y Fd(1106)1328
+b Fg(#else)-2952 44832 y Fd(1107)4815 b Fg
+(fprintf\(fid,"x\045d\(\045d,1\))584 b(=)e(\045e;)f(\\n",)1163
+b(myId,)582 b(i[0]+1,)5231 b(x[0]\);)-2952 46160 y Fd(1108)4815
+b Fg(fprintf\(fid,"y\045d\(\045d,1\))584 b(=)e(\045e;)f(\\n",)1163
+b(myId,)582 b(i[1]+1,)5231 b(x[1]\);)-2952 47489 y Fd(1109)4815
+b Fg(fprintf\(fid,"p\045d\(\045d,\045d\))584 b(=)e(\045e;)f(\\n",)h
+(myId,)g(i[1]+1,)g(i[0]+1,)g(p\);)-2952 48817 y Fd(1110)4815
+b Fg(fprintf\(fid,"g\045d\(\045d,\045d\))584 b(=)e(\045e;)f(\\n",)h
+(myId,)g(i[1]+1,)g(i[0]+1,)g(g\);)-2952 50145 y Fd(1111)1328
+b Fg(#endif)-2952 51474 y Fd(1112)g Fg(#endif)-2952 52802
+y Fd(1113)3653 b Fg(})-2952 54130 y Fd(1114)2490 b Fg(})-2952
+55459 y Fd(1115)g Fg(fclose\(fid\);)-2952 56787 y Fd(1116)-2952
+58115 y(1117)g Fg(/*)582 b(Write)g(matlab)g(driver)g(*/)-2952
+59444 y Fd(1118)-2952 60772 y(1119)2490 b Fg(if)582 b(\(myId)g(==)f
+(0\))h({)-2952 62100 y Fd(1120)-2952 63429 y(1121)3653
+b Fg(fid)581 b(=)g(fopen\("grad.m","w"\);)-2952 64757
+y Fd(1122)-2952 66086 y(1123)1328 b Fg(#ifdef)582 b(USE3D)-2952
+67414 y Fd(1124)3653 b Fg(fprintf\(fid,"clear;\\nfigure;\\nhold)586
+b(on\\n"\);)-2952 68742 y Fd(1125)3653 b Fg(fprintf\(fid,"trans)583
+b(=)f(0.7;\\n"\);)-2952 70071 y Fd(1126)3653 b Fg(fprintf\(fid,"ecol)
+1164 b(=)582 b('none';\\n"\);)-2952 71399 y Fd(1127)1328
+b Fg(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))-2952
+72727 y Fd(1128)3653 b Fg(fprintf\(fid,"xp=[\045Lf)584
+b(\045Lf];\\n",G1_X,G2_X\);)-2952 74056 y Fd(1129)3653
+b Fg(fprintf\(fid,"yp=[\045Lf)584 b(\045Lf];\\n",G1_Y,G2_Y\);)-2952
+75384 y Fd(1130)3653 b Fg(fprintf\(fid,"zp=[\045Lf)584
+b(\045Lf];\\n",G1_Z,G2_Z\);)-2952 76712 y Fd(1131)1328
+b Fg(#else)-2952 78041 y Fd(1132)3653 b Fg(fprintf\(fid,"xp=[\045f)584
+b(\045f];\\n",G1_X,G2_X\);)p Black 23091 81741 a Ft(130)p
+Black eop
+%%Page: 131 135
+131 134 bop Black Black 1048 7638 a Fd(1133)3653 b Fg
+(fprintf\(fid,"yp=[\045f)584 b(\045f];\\n",G1_Y,G2_Y\);)1048
+8966 y Fd(1134)3653 b Fg(fprintf\(fid,"zp=[\045f)584
+b(\045f];\\n",G1_Z,G2_Z\);)1048 10295 y Fd(1135)1328
+b Fg(#endif)1048 11623 y Fd(1136)3653 b Fg(fprintf\(fid,"ns)583
+b(=)e(length\(xp\)*length\(yp\)*length\(zp\);\\n"\);)1048
+12951 y Fd(1137)1048 14280 y(1138)3653 b Fg(for)581 b(\(ip=0;)h
+(ip<d->npes;)h(ip++\))f({)1048 15608 y Fd(1139)4815 b
+Fg(fprintf\(fid,"\\ngrad\04503d;\\n",ip\);)1048 16936
+y Fd(1140)g Fg
+(fprintf\(fid,"[X,Y,Z]=meshgrid\(x\045d,y\045d,z\045d\);\\n",ip,ip,i)p
+(p\);)1048 18265 y Fd(1141)g Fg
+(fprintf\(fid,"s\045d=slice\(X,Y,Z,g\045d,xp,yp,zp\);\\n",ip,ip\);)1048
+19593 y Fd(1142)g Fg(fprintf\(fid,"for)583 b(i)f(=)f(1:ns\\n"\);)1048
+20922 y Fd(1143)4815 b Fg(fprintf\(fid,")1164 b
+(set\(s\045d\(i\),'FaceAlpha',trans\);\\n",ip\);)1048
+22250 y Fd(1144)4815 b Fg(fprintf\(fid,")1164 b
+(set\(s\045d\(i\),'EdgeColor',ecol\);\\n",ip\);)1048
+23578 y Fd(1145)4815 b Fg(fprintf\(fid,"end\\n"\);)1048
+24907 y Fd(1146)3653 b Fg(})1048 26235 y Fd(1147)1048
+27563 y(1148)g Fg(fprintf\(fid,"view\(3\)\\n"\);)1048
+28892 y Fd(1149)g Fg(fprintf\(fid,"\\nshading)584 b(interp\\naxis)f
+(equal\\n"\);)1048 30220 y Fd(1150)1328 b Fg(#else)1048
+31548 y Fd(1151)3653 b Fg(fprintf\(fid,"clear;\\nfigure;\\n"\);)1048
+32877 y Fd(1152)g Fg(fprintf\(fid,"trans)583 b(=)f(0.7;\\n"\);)1048
+34205 y Fd(1153)3653 b Fg(fprintf\(fid,"ecol)1164 b(=)582
+b('none';\\n"\);)1048 35533 y Fd(1154)1048 36862 y(1155)3653
+b Fg(for)581 b(\(ip=0;)h(ip<d->npes;)h(ip++\))f({)1048
+38190 y Fd(1156)1048 39518 y(1157)4815 b Fg
+(fprintf\(fid,"\\ngrad\04503d;\\n",ip\);)1048 40847 y
+Fd(1158)1048 42175 y(1159)g Fg
+(fprintf\(fid,"\\nsubplot\(1,2,1\)\\n"\);)1048 43504
+y Fd(1160)g Fg
+(fprintf\(fid,"s=surf\(x\045d,y\045d,g\045d\);\\n",ip,ip,ip\);)1048
+44832 y Fd(1161)g Fg(fprintf\(fid,"set\(s,'FaceAlpha',trans\);\\n"\);)
+1048 46160 y Fd(1162)g Fg
+(fprintf\(fid,"set\(s,'EdgeColor',ecol\);\\n"\);)1048
+47489 y Fd(1163)g Fg(fprintf\(fid,"hold)584 b(on\\n"\);)1048
+48817 y Fd(1164)4815 b Fg(fprintf\(fid,"axis)584 b(tight\\n"\);)1048
+50145 y Fd(1165)4815 b Fg(fprintf\(fid,"box)583 b(on\\n"\);)1048
+51474 y Fd(1166)1048 52802 y(1167)4815 b Fg
+(fprintf\(fid,"\\nsubplot\(1,2,2\)\\n"\);)1048 54130
+y Fd(1168)g Fg
+(fprintf\(fid,"s=surf\(x\045d,y\045d,p\045d\);\\n",ip,ip,ip\);)1048
+55459 y Fd(1169)g Fg(fprintf\(fid,"set\(s,'CData',g\045d\);\\n",ip\);)
+1048 56787 y Fd(1170)g Fg
+(fprintf\(fid,"set\(s,'FaceAlpha',trans\);\\n"\);)1048
+58115 y Fd(1171)g Fg(fprintf\(fid,"set\(s,'EdgeColor',ecol\);\\n"\);)
+1048 59444 y Fd(1172)g Fg(fprintf\(fid,"hold)584 b(on\\n"\);)1048
+60772 y Fd(1173)4815 b Fg(fprintf\(fid,"axis)584 b(tight\\n"\);)1048
+62100 y Fd(1174)4815 b Fg(fprintf\(fid,"box)583 b(on\\n"\);)1048
+63429 y Fd(1175)1048 64757 y(1176)3653 b Fg(})1048 66086
+y Fd(1177)1328 b Fg(#endif)1048 67414 y Fd(1178)3653
+b Fg(fclose\(fid\);)1048 68742 y Fd(1179)2490 b Fg(})1048
+70071 y Fd(1180)1328 b Fg(})p Black 27091 81741 a Ft(131)p
+Black eop
+%%Page: 132 136
+132 135 bop Black Black Black Black eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/Win32/WinCVODE/sundials/cvodes/doc/cvs_guide.pdf b/Win32/WinCVODE/sundials/cvodes/doc/cvs_guide.pdf
new file mode 100644
index 0000000..c3c20a5
Binary files /dev/null and b/Win32/WinCVODE/sundials/cvodes/doc/cvs_guide.pdf differ
diff --git a/Win32/WinCVODE/sundials/cvodes/doc/cvs_guide.ps b/Win32/WinCVODE/sundials/cvodes/doc/cvs_guide.ps
new file mode 100644
index 0000000..9b0b256
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/doc/cvs_guide.ps
@@ -0,0 +1,28642 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Title: cvs_guide.dvi
+%%Pages: 166
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: CMR17 CMCSC10 CMR12 CMTI12 CMBX10 CMR10 CMBX12 CMTT10
+%%+ CMTI10 CMR5 CMSY10 CMITT10 CMMI10 CMR7 CMMI7 CMMI5 CMEX10 CMSY7
+%%+ CMSY5 CMR8 CMR9 CMSL9 MSAM10 CMTT12
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -Ppdf cvs_guide
+%DVIPSParameters: dpi=8000, compressed
+%DVIPSSource:  TeX output 2005.05.18:1636
+%%BeginProcSet: tex.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true 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/IEn 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 IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/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 A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
+/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
+setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
+restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/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{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: alt-rule.pro
+%!
+% Patch by TVZ
+% Makes dvips files draw rules with stroke rather than fill.
+% Makes narrow rules more predictable at low resolutions
+% after distilling to PDF.
+% May have unknown consequences for very thick rules.
+% Tested only with dvips 5.85(k).
+TeXDict begin
+/QV {
+  gsave newpath /ruleY X /ruleX X
+  Rx Ry gt
+  { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry }
+  { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx }
+  ifelse
+  setlinewidth 0 setlinecap stroke grestore
+} bind def
+end
+
+%%EndProcSet
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true 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/IEn 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 IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/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 A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A 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/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/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{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: pstricks.pro
+%!
+% PostScript prologue for pstricks.tex.
+% Version 97 patch 3, 98/06/01
+% For distribution, see pstricks.tex.
+%
+/tx at Dict 200 dict def tx at Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/TMatrix { } def
+/RAngle { 0 } def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+/pathforall load stopped { pop pop pop pop } if z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP  } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ]
+0 } ifelse setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { gsave abs CLW add /a ED a 0 dtransform round exch round exch
+2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25
+% DG/SR modification begin - Dec. 12, 1997 - Patch 2
+%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+% DG/SR modification end
+Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict
+/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1
+% DG/SR modification begin - Jun.  1, 1998 - Patch 3 (from Michael Vulis)
+% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore }
+% def
+a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore
+pop pop } def
+% DG/SR modification end
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
+div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
+CLW moveto } def
+/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
+2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
+curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
+def
+/SD { 0 360 arc fill } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto
+load } if ] cvx newpath 3 1 roll T exec } def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/Diamond { /mtrx CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul
+neg /d ED /a w h Atan def /h d a sin Div h add def /w d a cos Div w add
+def } ifelse mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2
+div /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+setmatrix } def
+% DG modification begin - Jan. 15, 1997
+%/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq {
+%pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+%div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0
+%d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+%setmatrix } def
+/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup
+CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0
+d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+% DG/SR modification begin - Jun.  1, 1998 - Patch 3 (from Michael Vulis)
+% setmatrix } def
+setmatrix pop } def
+% DG/SR modification end
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix
+rotate matrix concatmatrix exch findfont exch makefont setfont } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop
+} if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ]
+aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6
+2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto }
+ifelse } def
+/ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv {
+6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def
+/BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1
+sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore }
+def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 }
+if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if
+/dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div
+round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div
+round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub
+0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def
+/Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def }
+if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def }
+{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add
+exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n
+div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1
+dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt {
+dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt {
+pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup
+stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg}
+{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i
+w add def } repeat grestore gsave n 0 gt
+% DG/SR modification begin - Nov. 7, 1997 - Patch 1
+%{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash }
+{ 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash }
+% DG/SR modification end
+{ 2 setlinecap } ifelse /i y1 def /f x1 dx mul
+n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n
+div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop
+1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs
+dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt
+{z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g
+exch t L stroke /i i h add def } repeat grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET  } def
+/RotBegin { tx at Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 }
+def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle
+dup a add ] cvx def } def
+/RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ]
+cvx def } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def
+/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible
+/IfVisible true def } if } { IfVisible { Invisible /IfVisible false def
+} if } ifelse } def
+/InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def
+/Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit
+neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def
+/IfVisible true def } def
+end
+% END pstricks.pro
+
+%%EndProcSet
+%%BeginProcSet: pst-dots.pro
+%!PS-Adobe-2.0
+%%Title: Dot Font for PSTricks 97 - Version 97, 93/05/07.
+%%Creator: Timothy Van Zandt <tvz at Princeton.EDU>
+%%Creation Date: May 7, 1993
+10 dict dup begin
+  /FontType 3 def
+  /FontMatrix [ .001 0 0 .001 0 0 ] def
+  /FontBBox [ 0 0 0 0 ] def
+  /Encoding 256 array def
+  0 1 255 { Encoding exch /.notdef put } for
+  Encoding
+    dup (b) 0 get /Bullet put
+    dup (c) 0 get /Circle put
+    dup (C) 0 get /BoldCircle put
+    dup (u) 0 get /SolidTriangle put
+    dup (t) 0 get /Triangle put
+    dup (T) 0 get /BoldTriangle put
+    dup (r) 0 get /SolidSquare put
+    dup (s) 0 get /Square put
+    dup (S) 0 get /BoldSquare put
+    dup (q) 0 get /SolidPentagon put
+    dup (p) 0 get /Pentagon put
+    (P) 0 get /BoldPentagon put
+  /Metrics 13 dict def
+  Metrics begin
+    /Bullet 1000 def
+    /Circle 1000 def
+    /BoldCircle 1000 def
+    /SolidTriangle 1344 def
+    /Triangle 1344 def
+    /BoldTriangle 1344 def
+    /SolidSquare 886 def
+    /Square 886 def
+    /BoldSquare 886 def
+    /SolidPentagon 1093.2 def
+    /Pentagon 1093.2 def
+    /BoldPentagon 1093.2 def
+    /.notdef 0 def
+  end
+  /BBoxes 13 dict def
+  BBoxes begin
+    /Circle { -550 -550 550 550 } def
+    /BoldCircle /Circle load def
+    /Bullet /Circle load def
+    /Triangle { -571.5 -330 571.5 660 } def
+    /BoldTriangle /Triangle load def
+    /SolidTriangle /Triangle load def
+    /Square { -450 -450 450 450 } def
+    /BoldSquare /Square load def
+    /SolidSquare /Square load def
+    /Pentagon { -546.6 -465 546.6 574.7 } def
+    /BoldPentagon /Pentagon load def
+    /SolidPentagon /Pentagon load def
+    /.notdef { 0 0 0 0 } def
+  end
+  /CharProcs 20 dict def
+  CharProcs begin
+    /Adjust {
+      2 copy dtransform floor .5 add exch floor .5 add exch idtransform
+      3 -1 roll div 3 1 roll exch div exch scale
+    } def
+    /CirclePath { 0 0 500 0 360 arc closepath } def
+    /Bullet { 500 500 Adjust CirclePath fill } def
+    /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath eofill } def
+    /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath eofill } def
+    /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def
+    /TrianglePath {
+      0  660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath
+    } def
+    /SolidTriangle { TrianglePath fill } def
+    /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def
+    /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def
+    /SquarePath {
+      -450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto
+      closepath
+    } def
+    /SolidSquare { SquarePath fill } def
+    /Square { SquarePath .89 .89 scale SquarePath eofill } def
+    /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def
+    /PentagonPath {
+      -337.8 -465   moveto
+       337.8 -465   lineto
+       546.6  177.6 lineto
+         0    574.7 lineto
+      -546.6  177.6 lineto
+      closepath
+    } def
+    /SolidPentagon { PentagonPath fill } def
+    /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def
+    /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def
+    /.notdef { } def
+  end
+  /BuildGlyph {
+    exch
+    begin
+      Metrics 1 index get exec 0
+      BBoxes 3 index get exec
+      setcachedevice
+      CharProcs begin load exec end
+    end
+  } def
+  /BuildChar {
+    1 index /Encoding get exch get
+    1 index /BuildGlyph get exec
+  } bind def
+end
+/PSTricksDotFont exch definefont pop
+% END pst-dots.pro
+
+%%EndProcSet
+%%BeginProcSet: pst-node.pro
+%!
+% PostScript prologue for pst-node.tex.
+% Version 97 patch 1, 97/05/09.
+% For distribution, see pstricks.tex.
+%
+/tx at NodeDict 400 dict def tx at NodeDict begin
+tx at Dict begin /T /translate load def end
+/NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def }
+if begin tx at Dict begin STV CP T exec end /NodeMtrx CM def next end
+grestore } def
+/InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def
+} def
+/InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch
+Sin mul } def } def
+/GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def
+} ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def }
+ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx
+dup Sin mul Cos Div } ifelse } def
+/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub
+/u ED /NodePos { GetRnodePos } def } def
+/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup
+Cos mul exch Sin mul } def
+/TriNodePos { Sin s lt { d NodeSep sub dup Cos mul Sin Div exch } { w h
+mul w Sin mul h Cos abs mul add Div NodeSep add dup Cos mul exch Sin mul
+} ifelse } def
+/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d
+ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d
+sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan
+sin def /NodePos { TriNodePos } def } def
+/OvalNodePos { /ww w NodeSep add def /hh h NodeSep add def Sin ww mul Cos
+hh mul Atan dup cos ww mul exch sin hh mul } def
+/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
+/XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist
+Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg }
+{ 0 Dist Sin mul } ifelse } ifelse Do } def
+/GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform
+exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx
+dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop
+XYPos } ifelse } def
+/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1
+roll sin mul sub exch } ifelse } def
+/GetEdgeA { NodeSepA AngleA NodeA NodeSepTypeA GetEdge OffsetA AngleA
+AddOffset yA add /yA1 ED xA add /xA1 ED } def
+/GetEdgeB { NodeSepB AngleB NodeB NodeSepTypeB GetEdge OffsetB AngleB
+AddOffset yB add /yB1 ED xB add /xB1 ED } def
+/GetArmA { ArmTypeA 0 eq { /xA2 ArmA AngleA cos mul xA1 add def /yA2 ArmA
+AngleA sin mul yA1 add def } { ArmTypeA 1 eq {{exch}} {{}} ifelse /Do ED
+ArmA AngleA XYPos OffsetA AngleA AddOffset yA add /yA2 ED xA add /xA2 ED
+} ifelse } def
+/GetArmB { ArmTypeB 0 eq { /xB2 ArmB AngleB cos mul xB1 add def /yB2 ArmB
+AngleB sin mul yB1 add def } { ArmTypeB 1 eq {{exch}} {{}} ifelse /Do ED
+ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED
+} ifelse } def
+/InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED
+/NodeSepA ED /OffsetB ED /OffsetA ED tx at NodeDict a known tx at NodeDict b
+known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA
+ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def
+/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub
+mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def
+/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt
+{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop
+} repeat LPutLine cleartomark } def
+/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
+/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
+mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
+sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
+add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
+y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
+mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def
+/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def
+} def
+/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def
+/NAngle yyB yyA sub xxB xxA sub Atan def } def
+/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd  } def
+/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def
+} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit
+} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd 
+} def
+/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def
+} def
+/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def
+/NAngle yyB yyA sub xxB xxA sub Atan def } def
+/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd  } def
+/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def
+} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check {
+exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark
+VPosEnd  } def
+/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2
+roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx
+def grestore exec /LPutVar /SaveLPutVar load def } def
+/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def
+GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos {
+LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos {
+LPutVar VPutLine } def LPutVar } def
+/NCLine { NCCoor tx at Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop
+end } def
+/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub
+Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan
+/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1
+yA1 ] cvx def mark LPutVar tx at Dict begin false Line end /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+ifelse } def
+/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1
+roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA
+GetArmB xA2 yA2 xA1 yA1 tx at Dict begin ArrowA end xB2 yB2 xB1 yB1 tx at Dict
+begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ]
+cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines
+} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def
+/NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
+def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx
+itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2
+yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false Line end /LPutVar [ xB1
+yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def
+/HPutPos { HPutLines } def /VPutPos { VPutLines } def } def
+/NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2
+yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform
+/y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1
+tx at Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ]
+cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCBar { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def
+xA2 yA2 mtrx itransform pop xB2 yB2 mtrx itransform pop sub dup 0 mtrx
+transform 3 -1 roll 0 gt { /yB2 exch yB2 add def /xB2 exch xB2 add def }
+{ /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse mark ArmB
+0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict
+begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx
+def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCDiag { GetEdgeA GetEdgeB GetArmA GetArmB mark ArmB 0 ne { xB1 yB1 } if
+xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false Line end
+/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCDiagg { GetEdgeA GetArmA yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED
+GetEdgeB mark xB1 yB1 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin
+false Line end /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCLoop { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
+def xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED /xB3 xB2 yB2
+mtrx transform pop def xB3 yA3 mtrx itransform /yB3 ED /xB3 ED xA3 yA3
+mtrx itransform /yA3 ED /xA3 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2
+xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false
+Line end /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ]
+cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+% DG/SR modification begin - May 9, 1997 - Patch 1
+%/NCCircle { 0 0 NodesepA nodeA \tx at GetEdge pop xA sub 2 div dup 2 exp r
+%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
+%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
+%mul add dup 5 1 roll 90 sub \tx at PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
+/NCCircle { NodeSepA 0 NodeA 0 GetEdge pop 2 div dup 2 exp r
+r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
+exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
+mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
+% DG/SR modification end
+} def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA 90 sub a add
+AngleA 270 add a sub tx at Dict begin /angleB ED /angleA ED /r ED /c 57.2957 r
+Div def /y ED /x ED } def
+/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB
+180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos
+mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def
+/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy
+add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos
+{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar
+tx at Dict begin false Polygon end } def
+/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan
+def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2
+mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def
+/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div
+def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def
+GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul
+sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0
+eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn }
+{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def
+0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2
+roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0
+0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2
+roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat }
+ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos
+{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le {
+r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC }
+{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add
+add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub
+mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t
+sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse
+y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos {
+LPutPos } def } def
+/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB
+sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1
+ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB
+w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos
+{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop }
+{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine }
+def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx at Dict begin
+/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def
+/LPutCoor { NAngle tx at Dict begin /NAngle ED end gsave CM STV CP Y sub neg
+exch X sub neg exch moveto setmatrix CP grestore } def
+/LPut { tx at NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0
+def } ifelse LPutCoor  } def
+/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg }
+if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED }
+def
+/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if
+r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED }
+def
+end
+% END pst-node.pro
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
+exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub
+dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
+ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict
+end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{
+dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1
+roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def
+dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}
+if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}
+def 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 0 N/rwiSeen false N
+/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
+/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
+/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
+X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
+/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
+/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
+{userdict/md get type/dicttype eq{userdict begin md length 10 add md
+maxlength ge{/md md dup length 20 add dict copy def}if end 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 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
+save N userdict maxlength dict begin/magscale true 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
+ at SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{
+CLIP 1 eq{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 rwiSeen{rwi urx llx
+sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
+}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
+CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
+lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
+/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
+repeat grestore 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
+%%BeginProcSet: color.pro
+%!
+TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
+setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
+}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
+/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
+setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
+/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
+known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
+/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
+/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
+setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
+setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
+0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
+/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
+setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
+0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
+0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
+0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
+/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
+setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
+setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
+0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
+/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
+setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
+0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
+0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
+0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
+/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
+setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
+/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
+0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
+0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
+0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
+setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
+0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
+/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
+setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
+0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
+1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
+/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
+setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
+0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
+DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
+setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
+setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
+setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
+
+%%EndProcSet
+%%BeginFont: CMTT12
+%!PS-AdobeFont-1.1: CMTT12 1.0
+%%CreationDate: 1991 Aug 20 16:45:46
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 66 /B put
+dup 68 /D put
+dup 77 /M put
+dup 97 /a put
+dup 100 /d put
+dup 101 /e put
+dup 110 /n put
+dup 115 /s put
+dup 116 /t put
+readonly def
+/FontBBox{-1 -234 524 695}readonly def
+/UniqueXX 5000833 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be79011d1f5b667eed85fade30ab2ec4e1c2f
+4fe750cf9a69506458071de8896261c001b1c290937fa42a1fa87de406e9f86a
+4c9c0f03f69fba719114f8ae51040a4c03a58b6f3de027f6726f32743dce7395
+14c2c6f3c2de1aeddcfa8eed7da56dd68dbcde33c29ff7a694769049e4325ec9
+61b2df16add2ad46f18781fbd63eec62c26f1db41e6a666a09886382dceba91d
+8ff7cedd64ddc8a2f15fe34076a064c46febd1f4dc3707aede0ce8af161bcb8e
+4ada202d0954baca5be71c28ab8bf32fd72029aa07f27d658a68f454a4bf386f
+6314224d16c7f0a8624f6b86319a4e2fd178f596f3b20db032ea28c157a68a69
+fad2bc88881658d2286c0d4ef061bc070c3145f2a37ebec03f51de7cda34cd97
+7eeebd86b00f9758b3a496f41d9a74279ef3c6322dc54945f95062c5f37a1e51
+cf7eaf45f2b3634b2d7d01ec3b298ff35b6616cd3020e096f6c6aa2bf04c4a93
+61c19f3c67a28d936ffc8120f1e46980b29bf54047c5f1fa48e67611a74fa434
+3384f802a4079b28b94681e119ab0c1692de5bbf426440ad1023506cb80732de
+c64d9061869cb34de924d2c26e404b7dbd9be55b9c0c5ae3095c15d278adbb49
+12df1484ed2d73128e5d9c1f1a3b9ac19e2ce5366c96644f5b3d3eea589caedb
+586fd9b8f4df32ec910e9b7434d5bbe57e03892eb03890567df5b811afa0da5e
+929d456af362fda0789aa0cff464e238029294fde86cfc8d7d33d5c98b18c76c
+319811e4d3d49560f2ac39103594ec513e0b1377c2c3e22979866c19b61448d5
+a7201ca4b7538aa370f6347253b0853d4c5d575a7572f93cb73a598e2e26b11a
+d46a1126e44e7e1795dff01562316b6ccc6678663e66a73db285746df3f4405d
+d51714679581946ef72104f6915fa0e3e31d40e5c09962bb071055a7b8e6a533
+e288dd79c77bb5c41a82633f7ca8e6f039766d53920aed04f9528c4529e96afa
+18fddccf30774b21fded23cddf6f9a78ae6edb1db56e9e3f45e5721f7b7c0e8d
+17bfb449b0a02edc1038f3257089e190d8e3dc5b30e7a16b556c3f2ef19f80bf
+b796635b00b9f0b0a172917069a9362e5ab7d7ed9644f1f711ce997d7dd14519
+1d86e8b8bcfcae86776d342aefb684519942d2b5d9a7429517b10242ad7d689a
+545595b8c87eb5f060ed4fa25977882071f34e485e5c3ef37d106c398bce1970
+2bfb26aa1e289c87425e06c0b4f107df69d4f5e4962b73de6874c56015b5e316
+e5b8f485ba437172803e0e7d044c301fab0f7c064e52f70e7243d76a9b5b1b93
+81c545874f3b4d3c1cc4c097a87452694bfc7fb289480292bc23a5bd6f6f0201
+cb9f0847555984636b3e91875f57a107d76ba61003d3b27b79c381467cc6294a
+192ad6ad34e3f866dd58e4de36205f82a93295a3378e490c691b8d02ca7896c4
+bbbf11713da29f575409826d733ce4737bb5802f7bec1f353742a1f80d90604d
+d40783b6011189697f28f3b0910f52fbfd05e7f74395a8825bed352b7d31399b
+bb5bc4b458f963840fd759fbe4961021f88fbadb9940bacf7eb9e7e81163a1de
+e96fe6b7c4f293a14ac40717802532c43b61a30f2af752daa01d59d0d3ba8d31
+2ec42e0b866d24948794b02d90ee6e7b408560d768e51d7be76a2979f2e13b81
+ebe7c7903928a071251d39c5d11e5fa50fe943dbc6eee23c6e8d79d13de7b956
+ea7217a7be2f5c52ee6ed7d2b89d436f5ac970552a28b1dcf7823db8cd4fc835
+7d0510b5ad0486998c4ba8eb9d77543369501a8ed54081abe39992cb043c4838
+a3b0a03bf2e6833cbdad59ab3f91322f83f46ee4f326fa9803b3ca9e4c77433f
+1a0a8a39459ca87732924faeaf9e9909ee10a312a2c2e475fe1441923e12253b
+dddb15c922c399ef5c599036b7a3d5737dcd466830faa8516120d3e7eb5881b4
+7d8b92a4b49c4285148fbb3bb84f9540f43ef393d4d11e17576da66bb68a7e93
+2347b293cb01f4b4927d23b616a05377cd8f77df773b3ab017bcf2586d2e06e7
+96db4a7472c0d68666376760ba4cf095f99dc0cff3ab8be353cb8595a0b4605a
+00d67efe102b19fcb371539ad1600e05b23c7dba7d3c3934c2b962d59d9d51fd
+6a8e55176855f42ca6c8ceb2c7766203fb25fa14617ff7d3ca3a36ce57f43f46
+b8239c8af16eb7d805a73de8364fb38de9afdbe326d9070650b1611e82006a37
+2821bed2978122f619c18ab3de28446c29b179a312b97da9539b3666d468a92f
+9b53b3d428bb77c517eb0b08fa9c21f2c55dfce4439e24f59df02309a4c06f92
+c60b50763f5753cbe70bff6247390c1fc5cabfdbc6668de35efecb1755d78d56
+a216caa804f93489ae155e1eb3d6fd6a588e3f3b9e03166b3bf2eab3b1914841
+c8b55c82c4299034c3aa6647946f94a995299d932d96660ec8b68ebf1456486b
+078280557f069676038893f370115644a53cfc22068fbfd9230ad073e358d762
+3de3e8134f33b17f82f6a59dab17d51ee2eb1af3c8c0fff32d1e309342332505
+5ba5f356aa0de903dcd808f99e595165ac91e91ce5e8e1c465868649018755ca
+0314a1b14e663bbace896035c0be9933db7c3219927c61abc14e8a4d865e9526
+b7436812364e353bd649ca16beb2b804726aca9193974825a2b356640bbc0a74
+4bed3f3fc201d8387b8c6df4fb207177cbf5152129639f62c841ae42139f5f51
+cf2f86e5a06f044897c57b1a948f8c88d116ee6f4a861af1b7aab54e8f439ca8
+4d607cf0fc63f0469e6c99d3ee3e5d3a6bffb6928ab91c8c24226d8a66097feb
+305d45868c99fa4c076e0247247c23d8204dbfdcd3c9d3072aa030747d6f72d2
+abad4002d9b3c64f520a5a5a03577dc838e616add00b4b830429c80df57b86da
+0b27ad1363a7efa336b1e1df377996a48da79a01b5813eebab2059addaac1d76
+569082eef0fd99fafeb574e9f05997f00392a4b5fe54e948d757c021af71b77a
+15521ac7710e72c3881fc95b3a7d234486f774a80bc7332a4abaf0934f8d05ef
+2e99706849db4215c08d09bcb9c22058f844cc52edb10b0d0bf80bf70fdaa22a
+df00d6c8812df422557f606e50de8bc6c521141d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: MSAM10
+%!PS-AdobeFont-1.1: MSAM10 2.1
+%%CreationDate: 1993 Sep 17 09:05:00
+
+% Math Symbol fonts were designed by the American Mathematical Society.
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (2.1) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (MSAM10) readonly def
+/FamilyName (Euler) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /MSAM10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 88 /check put
+readonly def
+/FontBBox{8 -463 1331 1003}readonly def
+/UniqueXX 5031981 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a
+e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4
+d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828
+e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4
+7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80
+523f59a30d195fcf9b9fce4ffafc6f33457e3200f0935ea98f1a0cfaff49cfa2
+d877ff805620cba84126dfd175a82e1b4c6ec58461fce97cdd749a012e2c4243
+86b199a97c306b282350cbe5af90cf1d8e7371dcaedbd5fa3346dd3e558072c5
+fd51a2edfee6890f62efd1b552699123f4f52c2817dadd5ece30b3bc178a3ef4
+f45fd8ad0ee5bf30db5f9eee9ddefe249f3c349a886cf9130cba68ae559ad719
+c439930ece1d52d38366116c390cbeabb8fdb36811cf3b8e2416825e8c880b24
+6521ec6880ebe7f127c8741c756b29e1f89e3fd5d638a7bbade8c3a0fdbbf7ba
+ec37cd372afb2d9dd25d509726d20a05914e418f6b7e759c440beb61519df02a
+06734ec1226890d17c51f25f775e6879fdc231bc4d7fcb4b33d04fa273bdb8e8
+f124171714614f8a94e98a6c2d6bdc1254913999f9c181e42c0886556cdf48af
+92a265c1eb06bb30fb2745840c17bd31c7b8bdfd37dfb9643a418a2eaae14094
+6752e0a315207aef85c3c2630538907971ec1b05687208571a3504bb3369b5c8
+9a43e5abe343d0599fd8d41a1bf01de49f5856bdd67d63a2b3ecea75d721a6ca
+0c8751ab41e892e9cf674218dd44acfd40019bf59f4d69ea40d5cf9068a6ff96
+9f8cc772b920baf17334833d732431a2969b9a30fe38bd44772cef653935a957
+af61dd568f041847ccce3c587656cba7bbf46d8cefec936c6d34dbe51bc04929
+0440354f3b29ed8e6b4f21ad53b5809779d67339f284563d54ed4d2a504b014d
+974a31c0ceb57b364af519bad4e85c41d521a3ffc26dbac555b42dc191367152
+1d60c30b95b5bbafb3c7d87a1c043ea5f0e6dab83a4de99a742e75f02837b923
+c50eb478ac4131ee604e3d7b784bd8c93eb9430291d452c21be0495718546333
+66a602a9f142a563fdae3c8d40de6a8aa581ff3172367ca325e6d23102c5c6a2
+02cc995812b50988ff4b5f53a79b9cab51abb0549384b2fb5c119db69e57acd0
+f823a4543b5bf49c4af0a8c247f64c26bdac42b45a88c1af99459bf6c9b57567
+d71aead98624c118336ea8df06f7d21bf526fd146344a42218e2fa3d4f8e30a1
+65f5c085f649d43110877bd3a7359e35cc6df30d1730fbfde1896822291d1513
+576a5a779b9259e3e032bbd12057c8b17d7bbddf8ca3511925d2b8ad09ba796a
+ba33243f8bd40a7d6839f579ff77ea17da0b98f2298332307eac40a8a9c3fe24
+815b864c6c6b0cafe94b92c1ecb5709a5f85fd9837e560b7d47e784225387ae2
+b633c40f52a6d55606af9548ef6d8e04cef04fe05a84394654d4acf8496e2cb3
+dbfa14ba5798f7837bd0ca59b3b5acd45b9c76f1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSL9
+%!PS-AdobeFont-1.1: CMSL9 1.0
+%%CreationDate: 1991 Aug 20 16:41:23
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSL9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSL9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 97 /a put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 120 /x put
+readonly def
+/FontBBox{-61 -250 1150 750}readonly def
+/UniqueXX 5000797 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd800bcb325468c79ffacb9cd3036f2ed7bb65d
+c6f12e33dd6d45b61272314f98990d08c0f8274e999f4b46af4b5c5da923683c
+960face50087915d2044d7211a18e0c22967ef89552662ba990e2dfb9267e09e
+354f41e871e612a4d94de3c1b4c6c54c7a054fd7cc0696a89c7a397b1d624505
+2e0c0ad0c5ce92a01bd0890730e2863ea92bbc1e036dbbd96c7f4f618a83417b
+9d46dcc4c226c30353b46dcd3d7f12dcadcd658fb2fa858840c4a0b11ed519ee
+b77ad0fbfd18b449569ef3b18afcbd697d436ea1bc3234bd0aeec1aac6eaa487
+043657562d0042f41fd9c42dd2b59f4aaef65a9ff83abcefd8f6df3748cf9dbb
+bda9e56e15ae7a6081894bb385baeeada06923f9c1948ca5076b83ca75d17844
+83cf2522178ec7a96a495a21f9188c0c190651ae49eadfcb5a1574032e34137d
+29bd1dfac2cc8b2f3e0b31491cb4faa1d861839f6ab105692e579a236a85a4a2
+dec3274ee7e793af7946191bcb7cd853fd38dcc02266138af3ba0de0741ac0e7
+4d83d57e5a522a7ed1ef9774b6b913e10081436d2f3beea6722d2e285ce94d15
+8511306020455c85e6698dd9ce31711423e1f09e7178ea99f7b0aa452e1abaa2
+263a474a7804c21b5687d42443e071736a6bb3ea787a0e632785b252d4f83484
+1f630abb6a705ca58310a344acd2e9996f2c374c618758d9ebd68703cd1eced0
+9b6d2c7de8158dc15d8330e5efd3bec45d193baf0c36c98e0d23ce267a2c99af
+6b003f14b42e6ce4c82ee16010685c7eeca24d7c5794bf91fe7034b551077511
+45c7cf84e39cc38f909251caf99c29dc463c1510c782fd92902761f7557fde57
+7e5ba583cadc053198a401763b8d02c261407bda072acb6ae6c78a050419d8bd
+260d4013d28e62f8ec13f965e07ac03394b55c9ab8e069c8c445cc50fe136e82
+2ba18d6c612b3133654dd80f2410633de88ddb9df406813e9d04e437a14f54a2
+41a3b393f56f4d238df5695e67f529c60f52e341c1d622c2b950bd8633461259
+ff9c502bf78d13b5670478844bcc4e8441ec80735182826f440b700e199a872c
+31d276f977ae221466f509f46220b01fb1e42b23bec4fe280fa96dff0c92b4fb
+cf36f7dd85bcfc099d9af8f45dd7eafd10aaf796271c1236d6f976c8a430a846
+797b61c25b22d7be4eaeb34e7dad9669790a0b13172380d38e3c253d46b8c902
+723a82a834f7749f34643745ec94f30a455b81cffb80d4ae9dbe0a46084eeb0c
+52cb3231ae73a6278f3349e73a9d5d99bbac59408dc1304ebbc9ab0977c20b5d
+8ae64bd6cff5b66c3e30f495cebae55929fba03d126b17d1f5f236158e56b488
+76267fbfe697302e4889655b1f423f1b389617691d00913b69f8223ccbb0373d
+93062841650bde4d366a84859718516bdc78310d7b371f69fd970e1fc0e71cb6
+e98ca35a9806f8078882db7d48e62f184454e216581b4543b3d844bd49144ae1
+01b486777e87e692f1c048ceab45fb98e79eb7c8edab2f113a5fafb940d78b96
+0b1f900dcd2acb49164d1dc639f4a157562c5a4296872e018256165d765ec220
+c52391bf4d19153187d1bc489a9d2d74f7f0e9f0cb047ee5cffb659c54c7ed5c
+ae73c126a316bf1a591478de15fcf1c3f9d6ab07acd538f6280013b36f41e8f4
+79401a6534fe966ac101fc5a91bbfeccebfb9bfe1b42cca1ddbfc97fe34e50b3
+505e7972827a88ec9072e5bd600f5bd802449268a179b1fea85acc34a8a51471
+9c4d9e5347cd3a56b9b1f495d89fbca73a3527eded861407a27fbc9fae3679e4
+2e7026dfcc0c31eb9dad362dbfc6e6ff30b4243d42614ffa33ac4e2630ad689f
+dec962166c7b937e59a9ea26a8f11f0d4ff1608e9694e37ecc30721d1615bbbc
+a5fb2ed187ce4cde0b97d7f82b04bda4301b47ef64306036810c5123bc13d631
+05339f674e3b444450fe5aa618645a51074112fba78d2a22e3767f319223246f
+9e1b335f8c56dba72ced8db92d2da21240730edc0222134d9379fd19e0899a5f
+5343db13440e907c6ca0816649eafca9a85f2cbaceecd8c0e01a83bd2fe956b8
+8cae5aab71bfce058f4aa07ae4e691113a1bbf269aed3c5063d4fad1c6aefbbc
+a1af54017efbb32af1e267015db0f2076201310bd6df14996f9f9d63db28c08e
+5aeb99894dee28dfa09baf88ba136e9adbcc969c25998a48a2759103ae8a8355
+9d058137f53c64a4fc3b62c6a56a959bf96cab96879c1a9f8b831c3f87078591
+47cb9d10b1b10ad935d226956cacc96371822b24da9ffdadb9f60b24ec873446
+3e03da25ad177fffebe151bd869f3ece9037c8381b222e434ad3abc0e71a25fe
+647008833729ee28c82440b9de20d363747c9f6d932167a54e8165acfbeb7610
+82085cc42a4967c67c362670289f6b41e6f1f5158d3f36097277c1a4c6b95e8b
+2e2a0a855f0a0e54acac887de7de397d4cb50255e82c9bf8f7394ab4769db954
+28de36dcc09bca0fbc95d7954e3d2e33619bfb177d008d3a020439cba08ee0fa
+69414f02a2e9264de7f49224a676f907c08b6e605a253cabc69599e9dfc4800f
+1aa754b0cb83dab6c83164230f776e276f381c371093b6624c6f056829b5180b
+c9e806b1278304dbfc8b4f2ae668be633efe6a0e990b33d96bf202bc0ffb9734
+addfae7f3ea87b0d3febb39ee973fb13f0f2d64128a7871b6ca98bc4f5d8b2d1
+899c9468ca97575f4daa95430d6f04edaf9117832407bc6e34bedc03b48b24c7
+9d93f88fa301061f96a05d491d0040602854a97a91500f9c0a4705166c4f38da
+007882c49e8129bc95b8b83222acf1ae2809eb5b0341bc5e5db5a5d90a30e62c
+4ec45729c835855be78b7934d125f14c02374c858e9b5c12a7c3f6e120332858
+7dd40d873d9b296f72d7e73ac8544afae0164e7e43644a5a8850e656fe9605f7
+3170659b573cd73c3c774d8fc56733a75ce19a8c83e9462e0c8abf4bf6cc26eb
+49435dc2f9fb18a71519853d98bac23f7ea1436b53c427c817ef8c639cb666b1
+1b8027d0205cc419496802c6ab151adaae55456df8f9c0bec1b3b3249af4fd3b
+15e2c2d628619a26c42d4af48870e7307b83716bdc3c10914b961ee54f95ce07
+e34ad853c93c0630abc3897ca72a0b35743355a379416671a5376bd7a8bec4e6
+7e48a50b52fe8769765ba4710382df144b3d71cea61ab3eb9f7b8ba308a0f8f6
+c30341d80c0649fd596a156d553cc7ea5b6d03b6df376d8b15d59fab6c835184
+ed84801e845a079e2ede1484ff9aa429c89beaf072c1db8f5b23ee573e848fbb
+46e5051daa559862357c55f039d8feee8979f62007ef9951c8e8e2a07c740806
+bce0beccb327a9ac360a6aaef0c4f4e31a2cbfb1227f67220acbd4c6fcaf53ce
+ea35226e5dbd6842d106b72bb363c6f7750dcce668de7895adca3b8dff795a71
+19eaae1f254ad3903af0ebf049a67c9936aa1b2e13d7f3dc8d8cf87b05259605
+2a26574c426c41967ad095c580c1dae2b1e05bb6097e209949dbd35e32c9459b
+14f32133be1784ade6ca925988d0e7221130cdc9e02012036051712f1410de1f
+c2a4ee597a856964abbfaa7af9961f67ddf80696fd3f62b589f62d8eb55861ca
+3572691e8d780b1a96d80de3e2851368b04c1d423f67fa50a7d9014a80ecc3b2
+b41abc6a549f40c449dc81e48fb5f93a4b702fb956ccd620b0885a3f14422b3d
+eef64ea2fcd5dd55abbea8d62b74c54c5692038c6c9c1a947f0d5ed1b5795151
+9a77aeb0e5c8a1adbcbf44f55153713d5f2b098514bbb3e236c5acda352567c6
+8ec4a47b842e09c76f6d7fdf1215f48292896d148b36e02b1b900dab8ea83634
+9e6238fa6b3cc465d194e36c04edc415662005dbd87c02d789cab736ff0cc96e
+a96960347880470a0667ce31ac0ef66e69450566e911dd9c2bbb1c96e11627e5
+be53892a8b1eae82eee3bdc4524464c9fcb6143ab0d83e89fd537ea706072c99
+df6dbb577871d9d36e85f539c92a1fd347a1c28cbda448063e84ba887d61dfb9
+959a985fd3f7edfeaeeea63f0467dad457560172766ade0844c4b9678ae078c9
+2dcbeb7f52a19ed3335284c1cf69922ca952ac6a5b9d341efa7529308edd1ec7
+50e14d44e83d3f4e72a8bc178f25f74cbebf523c07c526d00639c0478f32e4a9
+60a9f96f72a2355512b4f591c8952b9c57aede14dd12d91fb6a176667b391b0b
+8bf45da0f81cd11d9493fe4d0e6082459e5270bd54d2f56725569c65c30de7c3
+3bcb22d9cf7ab085aa035f96728c3183a6a4827a36bb3bb5c071d7b292616b61
+10a249c86cfb502f1aac1fdba5b665ad95271fe5a2f83242db75008685bf673f
+06857d2aa33526907022d9927b865706388bc5cb6e799ab3d4a9b92b19493f32
+e70478db69c2f659038744646f976917fac93fc65136357b0469046d92f2676e
+4545232bd46adebdc0677b223bb963540f715bfd12c37ce7dcd375450f898e0d
+e7a5109cbc7604f3ed6a91e28941d000b08432f8efb40c1bab76d486d84db2a2
+7b570d229f6f5be12e6c27883ac5a959eecad10aa2ce003a783c1646f9040f99
+29a68ed5c05adb2d57a915765cb39cf1f45bfd9a833fa8b7581d09b4ba9f90bf
+9e28c42db2171865fa68db1f7e84c72152bdbd90a55e2897054d3e9f9fad73d4
+6ce3bd37c974ea48fe12fa5a24d182ab646aa14d7cd54adead0f2aaef5a82297
+60da722784110a26ea02b83073e39e4298332ebcc664c2a518fc2742a66ebf3b
+cef1ebbee54fb11b2484dc959c4b34400298f439ced15747ce5b7f349ec1db53
+f32698aeb6e6195de7754ddd8d4f0e77208a7dae8b1c627baf13ae4e639b4362
+9cd0b00cae66dba17f6d6d960fd88ab45641bebc903827e5a9e2bf918d4ecc33
+e16b7246eb0d0ceb88ce2400b4f8e25e977b52100a6110e645ad54460b6608ca
+17851976e84fd127ba681dbf1c6842a79982f0b034ebdd25f5ababb5ea7f620f
+8cafcf92da73ff1c867ae40fefef702273d9bc18c3e4202a17814861b70051fc
+bffd038d8bce5370dbe1cc3632dfeca7f66c1f9f5377a9e1b6e3fa5079fdd460
+fedf7acbc89c9e02d28327031547a0b3200134bcbb02d18d9146de7381939a5a
+0101d60bb37ab2352ccf4988375ca2f2a8dd34e8b67a748f5785c1fb44975832
+3436035d298c832269016a09d1587c39b24d6ca6fcbd1d3cc2497151c102a658
+567e36b8150de89e46556159cc0bda983c7d55124d34c0c90f2d554b28981209
+0c20e0fba1191ff6d20cb30b86b918355f163e3356893230cb3d48df4405decc
+10eb22311fc26cc82ef2477cb5f69798ffd04d0de6a654d6f6b63ce3e6e0f9b5
+94ea24870690c5f41301e822b9e820dd6d2b589da12e3d9b63d5987ac5c85218
+99f869e9806965235b9dd9960506fdf27ee32a814226c71a920c925ac6338a5c
+721a29a92e66f554cd5228cb7b1296e819532ee001f59ddae6ea39eedb73f785
+4593e198e395ff470176c295b723435dc5095f10e5dbfa
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR9
+%!PS-AdobeFont-1.1: CMR9 1.0
+%%CreationDate: 1991 Aug 20 16:39:59
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+readonly def
+/FontBBox{-39 -250 1036 750}readonly def
+/UniqueXX 5000792 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b448685bdd20eb05d5e7c2126132e33a59a7170609
+dcf4871a5d023c9ef57d3362d9f2d7a440bb69bf653364105f16f4d0f03582f9
+aced3d05cc76489b16e3fa8a446094d30038b06ecceda269f2eab9d19a99c7f9
+39f9548f206c5a457a19270b2b82c43b091dfc5573468eaa3e7a4a32f8042891
+d85e4b180fcbcb3091d2800e54c87d84ce9cad6869b5aabbbe47f40c68799893
+d22b765295e1e69e33aa048b7ed98ba480ceca91f3ebf8ef85fe9a3976909626
+b95ac5940d53f9b02215d84a44837ba25ed15cce0d504f1d335065594f3bc824
+5405407591cccb11cfd4645da60d960c0b93f187b0cf7b105543c0b70f89af5d
+264b6c026e3ae646acf145950202ec73282111e3e601cf2bcde22ce3edf6db23
+516481420f26552ff4472d749811f27768150450d0d0ebe3c79f999e99b5c0f2
+2eaebb12d97782b1bd91b2a1f62a76412548ad53c0dd411d4a08c0f071c2c218
+63d9adb75a4621803ecb84c2bb235b620b658984b2d8e0c4637e2811bc8f0d04
+6c8935afc70141e1b2d9c23bdb251d304b3378faf8928bd09686aa0340fb0cb1
+dc48c996ef91530ff078666fad227a3589f50b605267212d3a65ebc1019a8eec
+9a0739a00279471a01e1505c17658c10030fae32f274fdc8c8774b0d5406c384
+a1d17068dcb0c2575c562fdc5a2176609bad9a2c255e426a4325a4fc3053c7b3
+2f35f7bbc9aa50135f30223360fa2fbf019294b3af98224c5c05d6038db08bc1
+4103010094dc215ef9ccfb96b237851332c8ed81a9184cced4edbda26b381f0c
+73a2bc4a92533b0e667e82ce49ddd8ac9e34d9d40fd4b5b9910eab3b1234bbf3
+af6608d66eaa424c158eddb75fbe39462708da8f5c18d92fbdb2f534598a844a
+e076f96a741f8002af3b38d7e4bfa363f5f5d1193014f71b97d4b3e6b49bf0d4
+e71db7a5d500ea99a03dba48b2cb68bd7fb7cc8610de7110c0cfe02944974e5d
+c7167dae756ed770a4230cc4476ed4879a0abf80e1879513c625f0bbb3f365de
+eddbbf53a0fe3e00eebca1129eb16003fb7ebeecd007460cb02c55a0f8cf92bc
+d75a91d576f7a04c064090482b417c14809c0123dec9b8808a5c680aa41e7ac8
+76534db8f4c55283cbbdde1069db82cfdab8ff45efebddbef77a76b93b5dbfe1
+cfddea913d9ac4c5bdb3532c767da841b121881a9fb483053133b0334995cea6
+693c0e0fc4c91af19602f5b444206ae955757e4fab2022d71737d156e3603a8c
+d90b4f7e014940ab180eb2711ca8310f20bdc3cff37ec1d25d88b5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR8
+%!PS-AdobeFont-1.1: CMR8 1.0
+%%CreationDate: 1991 Aug 20 16:39:40
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 45 /hyphen put
+dup 68 /D put
+dup 72 /H put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 111 /o put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 121 /y put
+readonly def
+/FontBBox{-36 -250 1070 750}readonly def
+/UniqueXX 5000791 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204b094541f345ec367ae85ca9bd
+24568a01d3b9f8095f7420e6c423c414b3dcce6da48dd1c89a56d078e0d0e2f2
+62a13640a06d17e44ee3866c3471fb58fedf5a3b77294517651c16bdd7267d39
+a54e7171752dbde63ac19bb4b3021ce95eb5fe67390b09ae4d9ed4d704a67443
+f55dce17acd996c1f5e023c9e5a18cbeecc3097f23763acb86cdd7cd13381ae7
+4e48495ec7fa520539d87f8a8dcb3c826275469b6800876a457e7d1e5be867c7
+b1ccad69742a8c9b0ad943482bf2a4ad0aed40baeb69a0233bad36b4ca2d2da7
+322956c70375d152653500b2f22d2ab6990cadde2da14b4917f7515e64bc3d96
+bf775258fc7dae4e42a4c9b6da8eddec4a800c8aadc8d75e48cae52137e05c03
+677f5d6a82fa46d9f2fc7f56d62e5c605a1b7898b8d1401c2cac1a0122a2c8a7
+aae09607f2c5f29293a09b9959399283be89051452898238b777db9830ff4318
+a298b221c4a820c700ca964fc99e6b1d9eb0bafc39be9aa9dffa2fa326b2a466
+1e67261bb3dbc85844e76f9313ab533ee16bcb478166de5502b68e6ec1ea6110
+f53206cf1cfea419571b0243244b32ea38b828a01e62b03bcf476a32c2341cec
+b8a0fa2a3f3f339315d5f3aa7704408f6617d026ffee4925aa48537a4b2e556d
+225be09392546ad561cd46cf766f0ba14c6854c5af1a528c3842b0c5aeefefcf
+19f19cbce5d967153c4f88e51c776cfbe10d39328466f7a3b83d85601ef4d1ce
+0cc136610fa6a74d9676e4e99291d565cad27b9eb2337b0eba4148efd0eb2866
+ebf0a4209ba135ad1376cf9cc2d4110f36121055caa3f2e63e91db975ab8bb1e
+288972ead80a8b227ca1ecadde1c7af803855d4ab5e37cdcdf3f331663fa6065
+12dccf7d1468696dbcc7de16ba340ed903ebf412681a1122a411bb60b50fd173
+0fd0824c9226d6a5ab20f9c72e7ecf64b4a404964f2da25311f4f4cc09f7c4f4
+9d39556d4ae3938d444b7ad94cd67ed58340ce5574a9311347dc9d8a7be77edb
+48335dbd05bb1634497817224abc7075d3b18a884324c2d5dd6a791051681eb0
+f0e090c54ef09325e30a4fe320f082b8ec047473b0283a724eff672fabffdf6e
+1892f308c50ca9a1ee2c8fc6f8d38d1a8e5659e8f1d37f803fb9b2575a5ad6fa
+9f1463b18d84bb0d4b405b3bfaeefdab799ad2575d9620eb8f6fbb5d99f02a4d
+bfb8b51a3829417485c2bad03241366ae2c8ebe8f7781e5b99e405290566a3a8
+de3d32a3c82638dddf52f018f63e86103b245bcc40bfd229b595f66c695a5818
+7ad072ef6dc26c16b1411d95b5a683ede28cf041956961947dd301162a6d6c40
+7d51d9110ff322b9f3510607b6ee7926eafc8a05f17e12ecf9568647e47a02cc
+d6f647cc12ecbf0aadc94b497485a33ff61bdf145f98d3d0119ec9a996e8c08f
+1a79914d3d75691362c753d73d18fcd5424f95142acf1d5a67348de8013d901b
+9b10ebf008169f9792df20798b6d6013e162dd4f1bdff6c3160a4206f98ba0b6
+fc67baef74115a1dc6d7ef758c42845c8317ebefc2dca275f207e72a2884aa3c
+80a6b01e6365d0bd010aec30e48f512f0dab59e62f9546974fd9bf6b5ba433e1
+24f5b7a8d20319e52b9cb7059b2cfd3e09a4e6a9e59db49c647ba9fc345a0853
+5735ca446d8a1fc91dd5b52386c6e9fac5cae07c3a01fa8f805813fea5f01650
+3b2804106bad822e6b7f9d78277efbe4a154b7a1ccc226d4335022bbe34d2506
+9e5442e1cae338b214351251bb6ab72fd492b6a03fa211091f3bad94528906bf
+9bba27f0c91ffc7aa16e76501c8c631a36c343856d73f485b2b1d60554070109
+fe8423adea53f9dd59868c3e4645a034c6477d6d5f50242c0027ecc41d242da1
+c4ca765b71ef3541439ec8e3aff1a039e9b0fb94ff3ba90f4f99806228da7c9c
+0f7245e1870cd94b2e3fa34ff1801a621dea2a9949e5568773f0e124e01132f4
+04e6ce011dc6cebc88519c2904ce1c39de6698aa024d0120555ba6e25274f41a
+58143e8067cac5956816e269b6efd9fecd62775f0645d7820670c08250788b5b
+b0455105886b9757bcc1986d8141b64087d4f990d2abd61495bc1eb58467cbed
+154b8ec2ebc462196e114c0579a906fd9517843b4c01fa135ca265b6d79fe271
+daab92bb805a332563b5f64b6c08f0f87d0bdf02c248f1b49bbc0d696af3c3b1
+3264650364141a43110f3deb7dcd6ef54ddae7ba5f6e111a6a76091865a6b220
+7ac41174e030753193f80c044425680fb06a87b21e667f4eaa37d260267db213
+54c445e0753dab0936976a2da30f19ed4dc36862ed2f44089626cfae6e92b68b
+9443eb8c1f6dcec0dd998a27b6a63bf2275df0c081760cf3df32cdd5eb0fadcc
+7be7b1aa745556521151f2f4902f19b0d7f2aaa25abc2c3e7897002201ae8425
+d12659b7e3a84098ffe9481902027e1dbdec029e99acd6933da6fbcdc7cbc94a
+cfc8f718e0238cd1ef188cdd32c7d7dc145d68daf20f816ef19b6f2c0d024439
+196ba6c19ecdf24cdbc642c21a6f6ccbad24ddfff0d738bcc35dc08b13a033db
+91670b285dc3c9e0f8ef361232a9ba4f6cc6b79759ce9d4ac7ff912aa841c695
+254a292f005a5c1596a24dd4cdbae8441e26131e879618095aece2e62a237da1
+2440dc090ca1bb5b557176868a80d6dc19c37651ce770556fdf34cabca4954ad
+904927fd523693163387cc1f344f8dd51e3224d183c0b82c38677d34cea4a885
+0b3062d4a76d8985132eb2dcfd97b27fd9380a9356501f2fe9364b857e13326a
+1264e2ebec890b85309f786e71d7af6ae0524e51f86601bd33a50d9853ed01e4
+f0cf9f108a6d88c44b0deb21c5004028930c514ae9b7d49458fd793033f82e76
+d7ac84221c71bcde07ea3a7d3d3c3e6d3668ab4212acfda930e3d31f87617653
+3a32966f03c31bfdc69326493e7400b24a86416d495863771371b2a72edc914a
+67f20f50883a97cfed09e53148e8b8063644bf8f38dce9942abb5019128cf335
+aa093338377350d00a19b8dc3b0621695e28704361633295afeb4a50c7aaa97b
+a8faafdd18cdacc3cc2e0c89488e408e9195efb0fc94e768a9e178438a6279bd
+ad34b8acea8afa16dd836d920a56b236e05e8e0542802bb0045f0094dc6c8f58
+d6336087dc026d0441b020b49937b486e8031fbbf57f07c361d7744858f4764c
+c5cd18598e825377ebfcfe236dc8db05df1060576958614ce198deac5ef7069c
+e71489db1e6f1ba9af3a5625c8a0a9c2198f13f61d1d2d9c97fe5c39f9e3e1a8
+a15a86e27b768875e700eb900b824f8c64e0404bb16d573be4aaee1dd630f07f
+efc05b0ea9f3b20a9861e9ccd4b20c663daac2d5fab4052726fdbe8704764c3b
+45f1522648a38a3219053cefbc74e7a3c5dc218e957b6456e1de58dd254ff355
+9b124089c0c648aa0744f9a035860b3d25c2b4de907078584160a5eb896ba041
+5ad7f066ac40d70f7e9902b321513cd66fe3cc18ad2eb92f4579abaf37ea9dff
+28621653f8470edbb30f4a50e8fdfa6e4909b7a9094854fc5c1213b9242d684f
+113dba31f99f8143d13ba443fc4e9ea2a14506e7038256de1b87f55f46ad2870
+c383b88927f1f90f198d6201efe4b3a38c36f03da80cd14f7bcdf0cb0b395537
+d1efd0520846e32747aaa7537ce61daaf125100bf7a4ae3a149ad79c861ed340
+582a54d7918b232c6290e52be2a606e5f2f2c128af48f60f9b800185ad42c40b
+3ffa5a522d91c9634eff67f128f21087a82fd8406be136a8208a7230cf91cbb5
+e1fc7a24828a539b3a9fdb8455f49d37e1ba38107780a3c13c60cf084f63c0db
+44c62099f4466466afc75499513cb555307e5bf210d1e4c4853a46874021b61d
+21ec8c65c1d709a75f838905f8651b0bf49888a17e8acf293d5d2dea413732fe
+9c6b18c5e72f4cf2d3d12bc61a4eff24d17c878f62c31445da13e92f889a1cea
+336558cec89659076a11321110b2f64950750035c923e62269386860dfdf4374
+4c1a16511326e7fe919b7a6d750ac31f1f24cc3b470c541e07c091fd50117968
+e59e27ec04859b767c3ca9499dfe0deeef824509b158c89dc0ff157622d2c1c7
+beb156f23c0f28fc144ed0e9c6075e8c79c575084e67373c92d2801e8dbc6e6b
+e0f1cf2639e0da567d1c16e2798b69e3cb1b9e0bf4bfa9ea25115072e5069b1a
+974ec72c96f3dc4cb4f8071ac8a962a7f63a88768c8f3d5431c8aa8d4c333fac
+1b50a049d364b0439a08691930c1e66395b6ebb0317c5eb66c628898faecf932
+d5b6e94f762e082a40c6e48bdbecfe2e571fba3ff5a6425a41422ab365e18ffb
+9888e47a08f2509f7556cf5f40d584b2e8effda2bd4032edd53b771175415bdf
+36f23a148b98ad18e79041580870fab607d89e27788d928580a2104f51ba5eec
+e56664f3e8a7993e5e89f18df12af66f5f20cc30a4c0703cb9dc1c0e097c366d
+7f4d9c23b6c5ae7cd3724b9d738c060418350ecf194d421c765390032c9d296f
+f628c8f9ae974febbc0547ef9ae8f421fc46151958a5277eb4adb53afdbea129
+d3a71968640666059a0d01f9e65a51e502466f0adb82280b57187b98f69e68c2
+b0b561d2328339dfa822cbc722ac41dbac2852689d93ce6fb448b2158abfcab2
+e3981b437c1f4288ad1fcd429157745bc7544d5afc6f28177133ab8e9293d024
+d2aa5911f151f5c4578291cafa23f1c13e61b905c011fc5d9ffa15ed64ce2967
+fb4028b82716ab78aa758e4452ee8707d2ca971c7ec77a568098192d8dc6c150
+cf66d95620c292f4389b0f0825ee98f73aa89bf78c36f08e268a9fa6e3e8bfc3
+165394c009dedab77fde55ccea4f018622ea7cb7abc229709b81ecf93847a916
+2bc13e1f7c42856c319cd1a83a64ed410a7ae3433e450d75f4e83aad971c6187
+aa672b92db5b12e5bf9ec05887db52a4b7e9916079da5755fbf81096cca1a3d4
+50a3fda4babd4e1bc605969cb9f876d447398609ee0789ae8ce103f06fae303b
+2729be6e937b5245b62b8b0389a0861e31f10537614074d91957fd6e320e0a25
+a2ca0d31a480d9b62ea15276f71d106c6f1970100d7d89082d01e2103dd5399f
+638e25f6ed817d561812a2494b3b2c28d1ab8df895dc51ac5d194b4af292f5b5
+745b766e6de0d806c65037fa85bc8aa403eaf1a56f3fdc30e5808dd9785dacf1
+9af0162c38e1176262d6b9ead802075080fd3104c3dee3b98b7c6ffa51aaab57
+38a28b2463cbd8227146373c4ed67233f8a3f2f2104c4c4f6e0936422c962c29
+ea46d71c1fa8ee77f9fe454c72c54656bddac9538b660c0356a4a0b76c8d967c
+512b08f532df4d1c7abc800755cddf0557182bb5bd9d50725bc7e078c72120ef
+235dc90a563c905913bf6cce0a5cfeaf2826b5bfea33af73a50a0ffd887d5d7f
+50df4f6495298fd602a0deb61b075223f1686c206a3bc63193a3283815dbdbc9
+2cf6bfe5c2dd424e5ec07ecdb16a6490e27e3172d94b8e09ceb671fa73151249
+f1d062e3042f1983753e3fb0d2085e662f6243ab3713af12d936b0635cc2feeb
+3b581966675819e201985be46d083a9b7e889e5e5e2e07a40f110e7ac88b4597
+345450633a74359417836c33fbcf8420a4104b7e38115c5d838a95091dbff127
+48532fc049f5fee557c6cc901bc2d24527546974e604bbaadb77cd312f4b61ac
+912e1e8624e46a658ed0e50d4132f88e447ea73d15160158
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY5
+%!PS-AdobeFont-1.1: CMSY5 1.0
+%%CreationDate: 1991 Aug 15 07:21:16
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY5) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 48 /prime put
+readonly def
+/FontBBox{21 -944 1448 791}readonly def
+/UniqueXX 5000815 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f059084178f5ab59e11b6784decd2fb36dec8f
+7478da853762e00bc9c52ba86ef50d222ff142abc18e4fb95b86b3e57d9390ca
+86e8de6347bf7f48f93322a372c5d7830521b14e8fa0771961b027c81365426d
+d95d16b950e216a90f28ce806244ff28dd969cb512a23e05045e7b2bcaf7d6f0
+ca8b51494f2ec0681bdfde60420628d9bce98a0ca1ecca9140f452a88db19a30
+ed46ae881b098c843a51d06f9a153489357fd24de6a0c36cb5a9eb9b3b64dd75
+18f83018ae7cefa1c12fd205df6880a705e28457af7b869a6dd28f6b37d82cc3
+e51cba348dcdb34efb119b8ce5a996f15492b0f5d34538850a2c1b6a509fe5fa
+015eceaf28b787e54f5f78aa5a89e3ed380237c85d8bf04e236d634a9c60efa7
+d84487b7bbaefe0625cb7390481d83cc0abbc78cc0f13d7fc52e3f2da6a2d105
+535fe80d88ea978cd8a6dd0459c8a40c8413471e941e28663c279f8ea894d21c
+61977969552752acd39fa5f92193c6bf0551297bf4b178d6240ab58e8313efa7
+e4aa0b4438679e8333da67d84273283abb78e2d38074f19b4dc66ea1c1b9a730
+2565c561ba2fda2b3916a4d03149fa04b4821450b6bb7794dec0931421cf2e20
+17a240c331a0779bc8782bf8ea0e9da85ce4b59cc531a6564bc41792a2b39a08
+13d47899a72549100eeb9f89016e3a0a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY7
+%!PS-AdobeFont-1.1: CMSY7 1.0
+%%CreationDate: 1991 Aug 15 07:21:52
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+dup 164 /asteriskmath put
+dup 48 /prime put
+readonly def
+/FontBBox{-15 -951 1252 782}readonly def
+/UniqueXX 5000817 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f73e9b697ddc0351763500e23c4d170ea8a2d2
+75ad0b6b23097f02fa803c1f46f9ac10fe0e527c431b11b1b9a50e874896cca6
+17fe3e255960846bc319ca68b9b930a45d5d0fc36b352c3443ab6f7793b38d2c
+7fb9c409ab7980ead55e9f8f6b83c70088d1fa6d7f2214da8928e40b96334ad2
+72d1b5db9d1355a579b26a8dac21f021e393d7d837a95deb8de92ed818a8b80b
+98ee9cdd8a3c57ad7d6eb7a82f43eaa6ec520eefa7302e750edc4b495f70bba2
+24a2182eec37f1a1c5dc8e20973007150237daa6bf03d498826777eeebe09014
+ebfe05a8731e1a421cfc513d47d673e3d94d805f5d0668ffa265e0962cb5a75a
+4a93d9b8745f749460afc7ec123d154bb5b7dcdd7481a3ec469b5f3f30e93e2e
+b2988b10c6620829d2f4df0b112ff7a71932b7ace24aaaed1e933aeba8853b28
+b59c2feae928001ea944aa96f99ec6485e6621a11b3f363248117ef3d8fa1a13
+7208bfad2c234ae09f100536d182b9eb2736e5ec3800c99eb5f621764d9860d2
+78a1be2e270811ee7b125eeacc5aa22ddcd7a0cb95f3e034fb0fe59f301f6502
+bab8a5d4ad0f3058a3fed5be795f6c5b0b560b1d31f53caf36cf686a59518a22
+83ef79d40e1162d3707957d740a9ca8214f04b04ba89b0d5943eff18b569870e
+9a49497f67ecafcf7798ab642d68fb210c3b51eced5ace78acd09f2dd105c713
+8d8030fd56131915e0da1f60101d301b18a2c60655108e416fd7c14aa492b8af
+adde60c8e98cbf35ba79e9b9eb9d949a301188240d500519e393c3f37737562c
+c4b46ae5dfcd9b5fa01b2c7a1a785ea0609bed56f7c804a7bc3401bc1ea5c7ae
+5520a2a3923a9fed36ab58d51f97b7de034b62bf742b488defcd905928790de4
+d5684ba1790c1bb5878fe24d51d1ee107c78fd68bf4fd22beaad8ccf088fb3f9
+0b60781c2d1c47a4059914c4eace3540d039a4ad54f8f7bf90c829bdf3ad220b
+304310742b3893f0f9bdf19d2be194f2393266f9586fbac80f404d93e0747d40
+adba53d292c0ea8bf98159b544dfc8b6812b73417e46669f2b8728559357f2c8
+44b0896863e7de
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMEX10
+%!PS-AdobeFont-1.1: CMEX10 1.00
+%%CreationDate: 1992 Jul 23 21:22:48
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMEX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMEX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /parenleftbig put
+dup 164 /bracketrightbig put
+dup 179 /parenleftBig put
+dup 180 /parenrightBig put
+dup 181 /parenleftbigg put
+dup 182 /parenrightbigg put
+dup 183 /bracketleftbigg put
+dup 184 /bracketrightbigg put
+dup 50 /bracketlefttp put
+dup 51 /bracketrighttp put
+dup 52 /bracketleftbt put
+dup 53 /bracketrightbt put
+dup 54 /bracketleftex put
+dup 55 /bracketrightex put
+dup 80 /summationtext put
+dup 88 /summationdisplay put
+dup 90 /integraldisplay put
+dup 110 /braceleftBig put
+dup 111 /bracerightBig put
+dup 112 /radicalbig put
+dup 113 /radicalBig put
+dup 114 /radicalbigg put
+readonly def
+/FontBBox{-24 -2960 1454 772}readonly def
+/UniqueXX 5000774 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a
+e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4
+d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828
+e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4
+7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80
+523f59a30d195fcf9b9fce4ffafc6d5649664203ab24acb938d58d246707ffe7
+d62f04bec4b70c21ef75beb2b812622b3c74e969d72d3cd11bd7106294a99caf
+0b1629bc7d4de6b96ca82930831d64575f23f4ad06a0e45e315b1d392411be8d
+6d73c998789ff258a07a3c8c2057325784514c845500bfd1a971310cfc11d41c
+1a167dbd5ff012c60add4e87325f6e5299032a839de65fb1473a166aae1876a4
+414a434f22c1d241591fb36f857df6fa930608750ffc0c54f44994662b1f00f1
+400bf752ea8d83ffc4cb77a290bc2d99981ae59a191748ba5c7ba1a9d2583fd2
+1398452b6ff5d83a059f7eadcd2ef744e9dd22bdf9c79d049bf06835e878c32b
+7765c69bdd8ef4deb4ea7cfff4cf9354a4ddffa689de961d16772491c7afbd7f
+ffde42400764c68e954ee5c455a5687959829bc3b319b2147deaab3628662c80
+30c5e02fea09609abe4eaa12e217bc3af673f1bc36a7039eb13fcacb4218fe0f
+c5a3f9452d4edf46cc91db67b624d4f2d37502fb9f11af4da18ca40b61097f95
+d44329375467ed13c5cb585ec53f62b83ef9502cc755af44bf32b87b8ae9f3f2
+f8dbf72dab90acafbacd280db6aaffaefdff6d5eff26669bac56280a950560e3
+d01714ba38659b0e4e28bf8cdc1f15ff7e3ea9d95a6afbbe3d8e6905aa6d531d
+6b6dcab89e2036cc492c65f76ddcc3cfcff33fde3d9ffd10f7a90530fd5c7683
+4329baa902e701ca42717476298c9ff511b1941244bb1dfd0e5cab92a43970cd
+1bdb292eadd055c97972844fdcdb0aa06401e7b2632b9d134f96bce0064860f3
+9859da7a9a82be0a840672a1331212752ae1b521b693b384a72dba8d37a86eaf
+a0341e7fc5f6ef7a8c566aacb91e8bf5005c18837894c4eacff41dba54e071ca
+83fe372d2dded81622f1ea2d226ac76ff8df5e7b439156658612fa1a418b4254
+632680d7a7e6632b22f5c366c392de50a0749eb48cbb7f1ef0aebf1f50fa4047
+cd231d60873dceae9896d779020efdead1692e95ec5aac37e43a66c8230d7825
+5e00697877c21985c3c537265e858fabd187785e0a57a066a3fd5334b760a7f2
+ff3b88035cd50f9b98c8af35169aebfb263f2c82280c23db17ac6acea63fd835
+45ada7293314a3c1de185dfbdb8acf5b7c19032ad9f4d1467ba9fa136a085fe5
+9a41978634c592e17a4ad418618dab060e0fae5b5139a3905029936b0a8d455b
+ae7e0a5b6ba6b3f433a084e1b2112df515bea57c15b2b9b628f50dc36605c70c
+a6b549162c34483d3f021513b08de7d99639e4254b2ebe1b5c18f264b77dacd9
+cedc5c2cdf85b18013dd4af98fc6bf4b71a715110da5178d16e00992261ec048
+97e61f9aa82cae1be9c5db30282766e74fd4d522552e6f66a8640fe698d14375
+5c737a24c66a40a2b9e81befc7b8c41403a8771a6eb6aa96ed7283c9f5e717b7
+9bac46d711e779929dd9883a28cedadb9b3dfb1b90b396a482d445ad8a47d73a
+a2a81fe9f8b014912fec6e525cff38642b9c6a28121154e631e00eb18a92785d
+2b5b9ce707c093c9dd5469231efc2874e09c817be794cdf29f9ca4bb1561cc71
+ed38769fe984e6b19749e93c7bf9ed99d49fe482fb427643b9e3c5ce4126e6c1
+25edb27e918bb3ce9f28811548d6c4ac16cd14585ed25c75fce1d1c6a5cf4e5d
+765f97eb47e97543a4707d1458c3126bf7904cf539101f35019fb171e110e5c6
+80a0fdcc13635f61052882c70fc6241b8e91acaa0bd5f52bc893f91bb5824740
+e5a97bae4aa352ed725af6edcf2473c5aa00249eb8f07ce9db45baae5a6e773c
+1f3c8459f9b0178fe2ed4b65bbb601e80218133f77de0a79f9ea87ebddeac555
+38bd42df52be26be705b5a788b9e5fcdb048b21d9f55c25427a1c5aae979e174
+47a0cca0c2c7430a698429a828e50852b03776b08fd03cb1f85c820762fe69d7
+32c4980b535321c53d04951cc30021246f34dca335c4573e2b8e5bc0fa49b9a8
+8b8bbd557a0362ede07cd0af014e13aca6e15f78b193338e1c780b31365e9620
+4aa2ba716c517d0081377c8951e4dc39a4ca0a5527bf20e29d8ae0d17952d113
+1c0bf0e2e85121d8d30d845157a35baeac3a763b4a0467e0af31c4812f4344ed
+ba8fcf8d077238739aef52e9eb6d04606e2cfd3560c07d0ecfa12c3eebc4bf5e
+e8540f1413f83eecfa29f1293894f70ed0d51020c18f38004b9b17ff5a5d25fd
+e5106de39bfe1e6b0f01db58bd04e15666700c22aed8d7e676d424cc66d326fb
+54d392216450817f95b9710fdd58fbbbfa8dd313d2bd3218caf74615ca923bdf
+f69d3a8a754b254e625edff84ca92fe609a2bbd4be0f435a1fcfae1a8f7860a5
+a49ed9f28b17fef3509d6f7324f2e7545560766a7361b44d02c722fcaba6a7ae
+2a2df3f1b5db51e64f82fe01c2591680040fff7f61f41bcf3cabc3e73d6dbe75
+3a34e8c39dbba62bb26426e434d76f3514751648af52920fe979c90d41bdcbbf
+fa22ad357b394a0e231f866189af2e4affdbd48041c7e0143411c287b7835ee2
+6da002127284d3b7d2da091476eb39b2f97703e54aa7e74bed446f0796b6d223
+a053f925992387f4dc4532b2a8b13378c8d3b3c8d0bc1c02cd57c8e43afc62fb
+2feb43fc031b86deccad9d3870542638d18e57b01917c437b182b8698cc320fd
+5928a9f4fe7de09e834eebc041b2658196082303bcadf95c52101bb15bd28824
+28601e7853648df485178edecf9e4889ce923e2168f96c2840d8cf89a50702c7
+2ed227f7181d92af5ca35a9dbc4adaa9192db98297b3cf5314c4552b2a197c52
+50b3375c16e5870f0e59188a1bb0350f96adddd8f9645d2b9f4a672d6a368a94
+92dd212d1a079886b84727c70ce6d353cd76d4ca88916e69c0c1dc2c5165fd6e
+9bdcf24281d56811aa769071a34d5ccdbca63f61c902918b8cdb35ad00409ee3
+bc607b6131ea6f9788d227b140e0f6c73c7f6bb17c55a510fbe3d04ee3a2d292
+0762e2645cfb078e3bc65f717dd84b53466d11b160ebac3dfa2749a3a87d6f1d
+cd22a437cd794b403c235168a8988e21b610b183a8721f5d784055c89611bbea
+98395648766dd345d19ef128246f4afbba2d62475f5eb56b38640709e4d98901
+945b3ba29e9967fcb32f4d2e39c956a399522412bebe438eccc4e6865ce409b2
+3ab89423128d9a6a2c9a8bf7874a9f5ae330863507b473e26f5a2647758a2eda
+0c4aacb27b3d94c4a1836b1965a1fb00b774e0d9f3d3a8d8196f0309befbc121
+e88af031fd13dfb196b65fd56e14e35785be6e8c141e9414bfae4d43101d6ca4
+777bc46dd18cfe3aefd1b0ac5e06115c4b3b3ee1b656c770e222b6373ab80271
+b8c04dae243e9157707073a6c0ca93708a63e92490b2bea3d842d6d0d93f794b
+a88e2ff1ea8a1bf72681c56372e64b8b1329a81c5b55186957d6947015c593aa
+52ea82fcaf231cf17bf20ce16659ca67ba978cc02e9886df5087fd7070d142d8
+0996955e433f9403583416b6a881a6f7d1fa3a56b713749d88a9d1a1ff0f59f1
+280c32f44eebe5b100323fc399a224e6780e29730ffd0a6be404e794a140c0ef
+e88fdc3509829f068d1aafffd7b0a415dffb0e77001876266b15b5130dd72706
+80789409e14e2ecf59dffbaafa64302ba1c4e37e25903de2c6595512bae532b0
+a25c943d9d4e41d53a3df77dc9d568a28e999e562a8791be5617030c5e6a68e7
+77ba28dd98fd764b3b2e8a0a070d191dbea23b0eb7df3cc236dfccd82c35e026
+5a1e966d514555925a6b0d8ef36cb7580b956bfd11694e3a029e553b7e523473
+751b37eda43d9b66720d122a3237f250017af5783372fad44bf8613c1bde0a14
+ff54e44f20a9b411591d01e22db17d41c6d35dc0f01b35763e5bf154d583ad7d
+8971a099de1eb6b784f72f7c708d757b817e63e0bbcee8a7e22b3bc1693c5fd6
+79122d3fdb7387b3cc05580206305843b1f1946e7dae353764bbdd699740cd98
+a036528dc6c7984b6daf6491965d640b5eacceb82385bf6cbdea3533dac987dc
+f5232e71dbce9dc7086f54899973f4a9d40fec90adbb6269fb181171589ea9aa
+f1e71e747335ccd220860558a1eef3d112e4a9b5388679560057ac64b13088d8
+b63d1ba2a2c65b61cae4d42944ebbe66d6f13965a7b6d8dda2a4292a1aaee9b9
+799a5d177259efe870e771fec8ea7ffe059abf64402b591e9f3ec793fcc6ec8c
+e808b30371b13bc5d784468526abd95130e4d882948dc63a85610607725f248f
+d84ceabf2e117b78aecd26f4d1db803239a6a66dbaf6b5178619c175c80268fd
+e89c43681293307b4b61ed88398ddd5e6062d68218462b26a70df91a2ea07c66
+765b587d1d5347aed55bcac3bcb86932f10f47c5912a0571e91ed64c76ad8522
+c7f060cb3bb64de05423ffe350ba007a3c10f4b7569e6245cee98d2ad0e1b68e
+6eccb4b05ad012468fc18e53ff75d866ab433e29cbbedefb70585755dd682c09
+858dcb50201b419583dae14331e1398832dbb8b0d38606e13728695c68794260
+ac9bfa42da71e19cce4bfe1b2faae9442b6cc60d6cd030fe1e7a2eee1b14915f
+1365d8e67b046e69ce52742cf2d2e58a5efeeb2799aa0ef1a6306450a113d849
+b97dd58b373e8fbaa2fe42c7e2a989be11206b44f9d9d4bf025999c23599415a
+7a6945e640b5dc6049fc02068e301b947f79988a18eede81e673faf470f86904
+b2db8c38c0dc5a72c778f7d20526c9e80edc6b970a693009195c3a13813a8a3d
+0fbe68a033ca5752475c0c27d35b2cf8e94a32f4333e6fe3c1bd94300f510189
+aa01b99094ee475f9dade648e3bd9f935ffa21918f7956ee93d3be9932d1bd10
+0b61c9b1e9c20b9f297f8df7623232954dc3fab805147c0783ec5ae7b2ce612e
+addc3497784f25bd546f4e8c2af3af6e16220f235c14a2331131b7dd56a90bfd
+1ed087b9f09d943e0827c52fbe294158456685f7a3864a0ee12521fcbdeed837
+8e0ebe196aeb7505d378b9c1f4f3b1e339289b97584a9351af021db79cd974c4
+e37a6ed67420ce2b89d59005242b9ad51f7331e7a520fbf34bdd20eb7de4b9dd
+b17b7f97e837a2302661c28fd9f661b263cd49043af4bfd9b562e9251204af84
+38aba201387b6bd5d85ff80b2259c39db6648d3ebd30e27c33f5f3ef42f73832
+6f1a9c4140c718810df25b
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI5
+%!PS-AdobeFont-1.1: CMMI5 1.100
+%%CreationDate: 1996 Aug 02 08:21:10
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI5) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 164 /Lambda put
+dup 179 /zeta put
+dup 180 /eta put
+dup 181 /theta put
+dup 182 /iota put
+dup 183 /kappa put
+dup 184 /lambda put
+dup 105 /i put
+dup 112 /p put
+dup 115 /s put
+readonly def
+/FontBBox{37 -250 1349 750}readonly def
+/UniqueXX 5087380 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311e252234d51741e18db3a68e8ad10242
+29e5817a10e796a78d2c7f7c1f50961b9a57aa604c9f821dbf5a9295197bc666
+31678d7d2c7e1f8f2151ce0c29efce46270570f4301c5dad1b38884732e53dad
+05dfc36b020e726ca575f71f04abf2b49e1f1d6d2a08a477658ca9a48f1c8cce
+14382f0a42201de56e2821ee2b0e91a818b1b753d810ec2428dae5153b66af66
+9442192024becf743a8f6264a58a0b3aa823510a4957d1bab3e1b83135362888
+3e392f49926471a8021fdb48637baf0abcf31204b1b214f48c99f44af7782323
+69d772ae4f49be53a1bf584747bf29b94f530d59a5be5370b8dd0691e32a21ba
+9d0d592cf3bb50a99a3ecd18d6c4114cb4cfecc49705da90d7edb10e3a28f9eb
+a49347a09d31eec896f2a28e9607d99d42914aea16545c16e136bdd0b75fe486
+61e24c7a9e9b233a76754c760822d0a88c575e08ae3e3f081d7bfb80ec4c03ac
+a08b65fb6474f71fc95c7c2462f2eb3754e647c29498288f2ced0bd3a2bca5c3
+2f80a61fa667802d376cacd34de1f9572d1b3ab09d6f352750db4a768f869638
+a87457889aa502850427b40e1294c5ba33e6b17532b2d13b5f50e71582f93daa
+231e86597872a2a968127afb0f36257a76ce1eb24e6c4f29fce2aaf6532fb5cf
+df84da03f03a45b915209f67d398c7c4f7a3b0623750259087a478dca684b29e
+a8b7f52060bae9394369ed1cecc645d113cca3772a8dc36c6d916b5c5e65454c
+0a188a33395fd3da67ad0a31ddab6a8434dd80f0bd0ea1a2a62eecc331d88b3e
+369552daa1c575a98fe84383548626b65be7c24ae7eb61159f149872cfd87cf7
+6c1a7c155c7186c7600e58cb61b8cb0c5dea98268a39e928bf6fc53985eaa763
+2b28c1eb3d82e4d3fe225223f4266d2b6147e344aad2d4884a9308aadc7801af
+a606838925e3e50ee7aaf73f090baefcfd4e34b795cd92d83c944d91a4940f2f
+c955d727ea5bd76f0c8057b12621eceb0947b0a5dd10dbcbc52957dd978d7db0
+c794660afdd4e946b3d7fc1ba60907fb3f756aab0406c0e7bce5a2238fb3e12e
+07e2c0a7f465e90057642d704434ae0b57bd46c8ea91ab2a386e24c6deaf9cb0
+8cdaa8fc4ec3fadc06bf28659cb878453db16f4b03925b2127b83be8fc240f33
+23ea950b51d70c8fe861e30c346efa0a0125137598caca5478991e35f5bbbc19
+4c787488ba339830bca15f8333431902e82b66a514a41c0bff92719a6a0d9587
+4cff62c622fc61a0308a69f9fb7ef51bb274ce9e059c04b64e817abdb81aa5fa
+57dcc9829269dd3098054bda7db086570605edbb54c72ef1a27459f115446eb9
+3074d04a8aa2c793e980095b90982242b33cbe0e6bfe3f2767d511b75b1518c6
+f322c4df4c1fc00a4556cf347c486a82b1bb953edb51b3c68147d8e6901f2386
+6842b86a1feca9c3143f0dda27590ba9d46cda944381d95752f038658061fc18
+079dd7e19e458364bc157af6c974524a2506bfa70b5c10285aebb018cd559a77
+0b72addf5642757e71f0c31de95d655953ec4c9b96bbfd7064d672663f5ac808
+b8fedf31833b9f050cd53d46f7e83a20c42c5b64b85153d289b4c1c2d02e20e0
+dc7e79cfcefaf9af8e8f8f74a17fe8ea8da23ce63240f4a475ef7f2123364e6d
+651dac27e6ba11778f44e57331171f17e123dace6536c137e08068056b9f17c4
+0af19a5990504dae1d0108057c35bd710c21ca93867d79ebfe5c4327b11b8b46
+9fc84c19ad22ce62cc761c7d262ef8a39d7ae52ec9c6dd1b1de3fd7a91df106f
+5392294d8c53366568719ed79532dc43040844ebd476451ecb9a9b8021f60676
+312d9ac20d5e446c8f293810347acd9d48dea89c487c0e01aa3f4a27263c1dde
+ae91ad999e3a9fdd1b695e759548331292f872e59ba1c55e1118407acff48aec
+ac9ce45c5c9800669791648f54510b712bef5055788dbb44b5b1ef800f64a22f
+f45bcb1bdb165c77a87e5cce56a2615d9b4a24a154a3f6c2d837e4414fae7875
+524cd7cba0c7623e7e0c34ee737dcf527d06b3299d4c3eee7022f3a5b25ccb82
+2d3cd8829680f7f60b2ae144826cfc48b7913f6c6c05307c7674b2c0b4fbb171
+d6b7a3853dfea597c8db52823d0541f01c605f1f4227135fe3419b08bfe50832
+baa74b9f75e8d79799199f6e026c72a836dbec075d26fbc26d35046edbee6452
+48037cff234775ae30d89abebf77570483fe5814de2574811ea159c421400652
+f0aca2e160e1de0592733a29d5b0c16e80fdf268214940d45e2a6ee01b3b342a
+70dbabfd0730612da94634da5e28b3603538da474ac01ff5dd86960833cfc5f5
+c8afd0383349077df47c0c8f6ee1e82accfbf58aff6d3c5185b10370561d2347
+c64b45eab47139d72954ddd361171f0a588776ddcabbb553546b159306e75758
+b76c74f45e4836ac6bb7b7d97b1bab9b504eb4205c42f51171bcd4bae47b23f4
+522219334f4fba6d86e16421f5e0c8dfe0911819bdd84499872578bb311e58bc
+991148926059476b7f44507125a514b9404df8bd871abb4bf26b68ad5673fd03
+01ebb7ba07ed510f3c10dae2428bb8b6e86879dc491aa9e5a0b5a9fe4eeb2352
+55f3cdf39236fb54c41396e1d18d48399863baecf1840809ce234bd7c1f7ee0f
+b6fcac76b0b235481a66498903ff9e0e570627f5da362e251336b2891e404b40
+bdee8390fdf725d4a55e2e60ae98a3cb09cc3e8e496c02577626b4d4798ea68d
+a47e1b7bf04e608aa168d50b55785265268cf3669251469854758f6f36918cef
+ecb995d5aabb6a5817c5d9ed74a657fe42a8b6cab722811e199d4216170ba42e
+aa6b5be17e92f0535ba2a21f22380ceffc247ce4175834945d4dfabd30ac9360
+42912842ca8806314398d61e5a232067b191be480d9d42854fd62dc1285a89b2
+10f0beeb757f4f091eb9187567f1d6d6170d2fdef35e2aceef613d53e853fead
+0fb085b26ab9e497ca5ae220087a163f40ca38a78d3aa11ca344a2f21cd6bd63
+77fff160270fb4593dd73f8cc5ff035106756e92c722a620b22ebab3e8b53f97
+38643c3b2c6e67c250d64e7b7bc77f92bd26b8b638bb66d9ac619b4ef48e48e9
+7732f7feaa6ac94b240efdf7f221c937acd5dd7f03f6147f3451a40ade6c108b
+e49df43228aca2f293ccdd288fceff93eb3a79605f5f370df57d6dea1fe0f9b0
+e3d4292cc286dad54ac58b4c5d6142131c23a0320541e6c3df42283a092a78a4
+eafd1bfbfb23a9a4d6a02374fd1fba10c7f0ee65dae0d7f18c6035eadc8ac994
+97f262d0569ed85401502a67411b55d093f1c37c15f6e0328596a154c40e64f5
+00596981c496122388eb1d8fa0eba4d9e78e54b740ab52af27089cf64b1177b9
+21530639702c604a9a1db1b4029200aea74df52d852acad7ed04d23abbededfa
+376b20753af57d95ad533f6c800cbbca38449499916fdd261d38eb9652672f7a
+d16d35ed4abc09fb513a03d2dbf17f11f50c8453b9100aec6d30d50577e71732
+921a91a554078241b9e3bb01b55164ebe415a1510078d27833568aa81d167090
+4e43deaab0bed198da5b3ebb14c6c8220e797886148ba50691e55e1f3241d0cb
+7be1cce48a67eadfe481df75ccdf74e470634a8bf1d570ae8dfa6b9c07358248
+fff6a32e12ecbb2e120bc0bbf47005ce1efacff6f25eb9d40f1269952c38ea5a
+22106e0a81fe006b97dd3d6067cb82ee72e73833e061d60eb7f5dcb68220b57f
+96b8f7be3c142a29301f043bcd563418af545bc04b097b9438205dbb3ae719a4
+1877b87ea7ca4faa5e5e48ec897352c35df4076082b1a26b82c4a6ec9c642dac
+610e57b60ae9c635d0ac7eabb92b70ba40687bc02b793cfe29878cf66a30afed
+b75cb322215964bd24f12641fe62fd4edce3625b90f1e4eaff2f6a8400528424
+76ca1fa3657ef1c84bcaece35e73e957aae8b03269e57f5e003d64c91887f4a8
+590e0e6c26c10a6fa2f78e040222af05f8da1fbd1c8cd46a02d128d81eac263c
+2c1f784dbb8bd6e333acc59a22dd89138e2d2db4f861ff369becb78964856952
+ff6b8fb0ea829584d0b55a004382dc5bcfd7848e427d4188be50bb0a2af5651e
+b72352efe6d6b55e2512ee29b093b53415f55e8ae9a00352e9a6aa6080b030e9
+fa39e1bc2fe0f598df39e3e838773acf2ff7377dd731865ef53ee21984e27525
+41f53ade48092448582c8eae0673f93da0a83115ab6930542815a8a5a93e6c27
+16aa948e726837d15f79d28f0a4efafc1256224d1a318d8b9bc5a3a2281adb19
+ed695e5d49996b9e8c340a9fab85e987198bb349aecdbd887627f5a94910e106
+f88e974da30a673875b6334114572559f442f03355de7a82bdb0d91ac6ff5769
+4d20560b65cd44172a506e5a6e734fcc0ec556028726f346360b8f6600d2b18c
+874a7a3dfbca8dfa85d445e68368a60c3b4a4e57b58c47498efaa5974af35567
+983e6f1a30334077afcca82bcc9248bda769e748bf23f898358c004084b974d5
+086d81215b129ff2cf22204547dcddf0f7036f7ea38cbf8af10d9eba6d1482e6
+cd7cdccad06e529134a6c43df741f425e2fdb4fd2f44a8703b2f7135f5822be9
+f8c33f873ed1e7709b5f0d04f44cade9eb2fa9c2430ff7f7244eff9e
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI7
+%!PS-AdobeFont-1.1: CMMI7 1.100
+%%CreationDate: 1996 Jul 23 07:53:53
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 164 /Lambda put
+dup 179 /zeta put
+dup 180 /eta put
+dup 181 /theta put
+dup 182 /iota put
+dup 183 /kappa put
+dup 184 /lambda put
+dup 59 /comma put
+dup 61 /slash put
+dup 62 /greater put
+dup 66 /B put
+dup 75 /K put
+dup 77 /M put
+dup 78 /N put
+dup 81 /Q put
+dup 84 /T put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 121 /y put
+readonly def
+/FontBBox{0 -250 1171 750}readonly def
+/UniqueXX 5087382 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930f01bdaae649990604a33aa9eaffbe5b5489
+e5c7c9ff9d9be01b08220832c41caac64816b53bbc087ae4b621d2b44b21ae5e
+3f7fe4ddb05c675abfe30510eee4a7c874bb57b2ffe521a6875eddfdfd18c781
+25bfca5a097aad361dd94df46f14026c25ea988194899b95001209cb7009cead
+4b4ea03473ea120e7a7e341d4e3926796347fdb3a124c29660ac09f4648b313c
+b58e824884382f24ce08d2edc686923acace1201c16a07a42803288cd0b946f7
+546510e95b1fa1cc96f0bf72aa823d8e83d7c68c752c82a54c752eed2b1e699d
+e9db1830272ffbf2f4996ccc2d6fe2ae272798989525ef3b67b0d09bffcef749
+a805e5f76578222b9c4a8a09b13189a16ab746ddef7875f1ecf83e568f493d82
+ff729baa1e0834dbec30a35d3c49c9b10c5e1d90c6e3c8fb737df5ceb3299d96
+0fb79632f91f257753b4d2e34e3f54a26c7b950981fb7fe4dee3315db63e75b0
+24b4d318baec8aac9cde186f6d65767df1dba35124287c2e805bc660a3a22772
+0ae4fa097f1d75107441c0a0fbb9eec17d5516fa03b98756b7df7ac7eff9c7a2
+364b9f691ed5cb692dfff9dd80c761e9c4d5d6061782b327302c053ce1cd09ba
+0605ebf761cf9b730524e1994e7dfaa956799d522ec53d5acba27a35c4d28279
+617771938ece58c5ab664aa00c1bc4efba2d15504247a68e3af0f9bd59a387b3
+80db88cca083b06f5af70d768d1699826fb12ce12efc2b4c70923e052dbb964f
+5fa957c3ce225c0fda64d9b5321ee1ade207c1cc93105096cc73118f4082594c
+8ecddeb0d7bfde6f70bc62f10407c26a476ed88be7999d64a15912493829a9de
+62c71f5a34fbf5a843e311873cd98817dc9f8a4aeb7e0738b5de10043f5cfea7
+147e746f018ca74d5eeebe9e6ee4e27c174f3c742d0b4b590a0157a29221565d
+63bd61bb225c7107444390415f528969fd1ae099571f2b5880b86ebcc4735e67
+197c212d920af6f3882a6b8fbed773cbc0038b09763db05ef93797e1346564de
+4cdef8a93923cfa36c9ba08aaf28c1b82847095b18bc64a95d23b4d046da4a3a
+3121721edbb7e080e66670bdb1f6e2e42091595d597ccc04af722beb217d7031
+2ba4cc3d6a3c727717bb8b52352b289adcf0beabccba3b503d6a1fc43c9ab2dc
+ec8417defd82e40526a9f13f079822e59555cd81c9eac19c70f1d06d6df770eb
+0335c0f828493c5ad36f0077d5d99f3178b4852b1e28ac9743f8838e73c7747a
+d57f03307346a085c1a457edfdfb840c7890821bbc9e5321b47c73e80047207f
+a42a0891cf7eae7622fb4bf3ab4640f6c7ffaf37882977a168f0e331d8b83dd4
+6e9bc02ee1075bf78d6038fab69c8dca021295e290395185ddee2cb0bcce9450
+6de923f402c28154f3a3fed2509bd86f96f016d6f2dcd7c265c1de6d31d517e3
+f3759084dd0285546f374fec7decf28ae86ad3751e5db88b8f137bd76a3ba611
+d519139481674e01be3c38810ab134c9f645f1b76e1f0fe78e8cd97ad507d957
+56337939bf1206634c9c88a214c3a78145e7aae0bd4f03fd7be221ab873a3e5a
+dab18a5853ae26c4f7c664f670f802d9f4badf6421eaab53e214b680508728b3
+4d566e164388e888e81debc0f459cfd786715b8d4127ffc3e8d9481f2fd14fe5
+cfb1db09b14855a9cb6e264dd0880010a0ef6364f1bfe3628589db6552460d47
+fff1368f3b6c69c8e4713cef158b4be1b0ea0b5f60d18ac23e827ef735caaf8c
+aa68214fa3e7591441da9de2a727093653477027ab315f2fe17735365de2e78d
+344ece4f7f583e741efb47d08c216a399f4420dda2cbc50afe2824fc4abb2d32
+07fc84a70f59769e477ef31a1aa7d1590750e2d8b9a71ddd4454f7ee4284cde6
+a5195136c618fcebcc209ad4d9cb34fb535af85f7dbbb147b8a2267812dc2768
+cd9ad1785682df36b0306ddc6ca298d30298e87d1fb3ede44d11c0f21042cbb1
+7612939c72d2ca71f0f51fff2ad98245a499fa78ff836928ec149dcf8a193a9a
+ace405d9172b7f52a47eab3637b09564bc4e9c5d7e93e840256504576d79518c
+445f4e84def8fff6698e02a5329b7d433afd082a53dd3d4702e36a5b49ee104f
+0e1fc041916322ce95391e39ab0426c5ddd73d14dcc54b96dbb44b1c80dcc7d0
+47cee3f37be1a1c18cf84784e2041acb4f468d37c777d29d744812b81960667d
+c434deab016a66a8b9471843b5115b97da1a60fb743a806be758443762117627
+dccfbedc855af829ebe42e758a395cd48283b2e58053dc9dfae35d94955c9fa9
+775beabc5196f871a097b27fc0c2f69412f5e6c67c1001456085dd399fe5afaa
+a46fe190c61b9310b9d13cdf6edb6c5c8931f2e13d5e89f1f6a9472924611faa
+29ab3cda1be1664793dfb965bb107bd1ee857f30ad65b662e85c756536abf654
+9675760e9e0540e6ffcda169ac60d76f94d668fadb2ec48653bac10ee18fd611
+6ee1a427c8c8b43765da008d7c08a9a26fc7950b8fe4c1e4f15aa193b0ce96bc
+222458ccae56636d9094c4cf4065a71b105dde064bab74ceaa79a60643005ea2
+cd2a93b482a7dd8cd4831fdf3767c87bd2f6fb246c6bf1607a8c747b74fe9448
+e61ea007ebfabfde4972c52ab653bffbc8835de2653a36de29bb4d767f9c89d7
+3a5152a0634d756f86734063d0f1fc65cb2ebad5674349e9699d13d4343ee4a2
+d52ff1ee1ad4c7852170dec1e867aff21c1111e7ac6ec54d6712c0c77e7c5329
+17c2af31afb81a505fd5ec9ef11e2023ac0f067c6f53e32696d8dac4265a0494
+9609276991f868284219ac8a65be73472d9dce687fa7a10ee2c72ba39b7cb4b8
+68bdbed39a47b0696792ef019bb6b9e846c856fdfec146ab68fdcb557a583319
+7cd853d3f6e21e0537efdef4cc7bc8a5d2eb779d7366171cd7b7720b01ad8573
+91d2ea2a83681983d167f67c3f2233cd3d3f0a093081b754883046f9f9e07722
+3ebca9ee6d2a93a02e859450d7eed586d74393690676e741411dc83b15bc1f75
+ac2e4e9a48332f5992e3cc209b6462453e2935258c26927cff13c51b0f75b028
+547af1bea3800609c66b10992331e5ed05ee77b06e4ebe3cdcb3b74d26836d30
+7965b1c525410e74493f7c11a1a8d97bae2e94e91f81031c7e62b7c6f9b95116
+69921cbf7d78b2f4a8f03e72a3cbb4899a8d7eef33d1a4622d4f04cf3dbc974a
+92bb100524d158232757dc75fc3600effdce4500f0badbc626a6c0c5c0ea5dda
+c8751c65b69a72bda46cf9ef2c74cd3ae651e20309ebcc6de9a9beb950125282
+7db87ed6a2e1175159d745e980709d21d483f8bff090c17ee42add89e99d2a62
+ab0c21a16ff864215497adbf258c2a36d2d09c9de252ed7b0b5911d46b6964a1
+b3ba36f446d781f40c24e86e25a8c43791f749a21d528f03e5f6867be9c297b3
+88526757fcf92113c2d42bd59da0b934bab6369b4e68f18423141a0b90cc9043
+edcbab11f692c362e13494b71d4bcd6f55d9c7e260d7eb98d62ff0ae13f1364f
+db96d39c8249eb8c9e50434eedae6c3a86fb04736f2e8b63f84b47cb743c53ef
+d33b79412a19e10028df51790e41379cadedc353c2e94b799048a2f81df9fd38
+1f8ea5f83bf89aae5fe3fee22ceb55a3109bc9620be516e312a82bf3ad183f71
+4ac717412c8b4a0ec078979a27cbe6903010015c54f5c0abd7355eeec6b328a7
+7f91cfb5ec960b480d7c43d00aac6b818d70f53cef74fb859cc298898482f093
+1d35b07d517fcfc771de68d819b09a939411d45f450c943c21504890090c53ac
+c1066297ffe4afbd90fb6f7dbc99f44b9f209eaa92decbe1e9ef60724b61c092
+a8290172109af3ccf0ceb90b24c9dfc9543e0850c099be7395119d6aa39d0326
+993c8f4f90cdba85594ec9a4dc4ca6e695f3d0ff478095be1dd1a6fdcb21cb89
+6960ff52146381729baf77c2003c1a9ecac7039d3dfd2dabd07720b841fd813d
+cda7dfade3f6bb5162ad16ca18981b21ab590ba1b1ea8047ee5074c440fce80c
+665e6939de50190748e5c2e6b796eb4ce980d0e56bf388b6756baa51b93fb2b7
+146d7bb1e925f1a0c88edd2595f46a969538af1d7f6d9fa7c18b3d5a437dc14d
+da893a8d373357e221235de6d188d62ce63f52f3ee296409be9508e6050f18e3
+97d43423f245e6753f20a2863bcf5eeb4376dedbc9a93124e7c8465593d8a88e
+3e07fc3b06059d912935f82047bf9b3b054d68d24068f2b148610c0d87a456c0
+372eaf789ba2f4fa4848f8d77646f81673cb7a9e8b66cbecae93e87b7d0937dd
+8c308f275869e9d94164a97755517cedcc5bc0213eae8dbb32ce46d49034af1e
+b4bc95b9d2482ff29e01c84447410ef5685f7538e248a2d3425e49be1b3e09b1
+f75c37bad46175377f89c0fa72c559a4351cc0eec3d51c1518b59072aefca683
+190f9ece5a6047b95b22a04cff3747ff5b4268b69b2c364842bc48a37cadbc9c
+f082815afa7f0aa9654dfb0bd3fc4182215c6a1562c4822bb5ffac8954827935
+18429e0efef2f25db4975b9eb1ed41d24cb4acb87393ae9f2db44654806f4ca3
+f3ef5fbd943d1a33c04a43b85759f8d33d558705df7328b6b298401d53c77a80
+641539f53bb17e807e6b3cfdcd013cbdd57a3bc7a883d8fef2c81d0860a7c111
+cd29b5f8b4df6c47bcbc3b53c52e76d4cbdc5b024ffe1b8f70d4baad823c2de4
+68b1e8058e271708aaf94ae632d7b9b49480a2fcc4228e60871019c86dbeb146
+24e011430bde0b418400cc619905a0283c6334fb0cb6936bd9539ff9276bc6fc
+aa266c3162d394d02fe488a471883da61b5c6b9989034ff271e614bdd464195e
+013ce808899bd8ae92719346eb7b7e52b10ce21d49a1aaec89f8def5702744e9
+2abd00da643b5c4859aa1f643c0fc2b14bae605f87631317a6c6ed407c3853e0
+a59d4268f4b1ed448c0f5996f5557a536be2ac506d7384be855a0650fafe2f48
+c861c6e2208024fdf77bc71dc0066a58da3c6e4f81859bc49e0b95788ff80cf9
+fdbd14b57cf4f92721dde5ff1723ab24bfdd1acf5b4ae6008f5638cea21fd543
+3731e860c6569770812c81ede88e97a72e694a5c5979410f138123eb3f2239b8
+70499dd6c2caf05e7e5dc584da3c7b39a8455dfca2301d53b502c808d589f2c9
+26d62c9e87c3d085f8abc5f99dfae6705ec8e210a80c370759f8a86708ec5598
+08319ca49c7380a2d257b1605d1d8d77d81b11576ae28a6181c8c7e139285d22
+8759474a8a618826e60f5f218c3f706823586b7964ad8103aeb4aca5a50ea58f
+7e51058eea3a16bb174e3ac30135550e8da0370c62d342cb9e9401f66270e0a7
+1915bafa1be0cf9741e0e07b70b5e692a58ec08a7b183db6ba8c2d57337b4734
+2158f9141937ab6c764b4ad95eeab2af32f00fec088f4f2b35589e97ea0c17df
+334ae1dcc068bed477a8a42f0abbcdd857ad032185c609a00015f8af9f20b5be
+40615ac56b57ba641c87b94024ee290a2639f852dce4604e611d97eea9295b46
+9c9974984cf36394c3434fc2a22156510486595bad47a02e848664b597e40cfc
+077ca800ddaec3ada902fae52412d0ead1827a3f6c13e9d293137a2c7cdde5e1
+c2088fbda0730ea8baa1fae2ee933d552c600f7a4daed2ea51fa83df19bfb277
+0edf0c2f57f769eee787859f1384eefd76aeb101602a2c3fbe8bb958f27154c4
+3f50a1e126fcef5abd5a72aa8df9cb26ecafcff329e94ebd581d5a5bd715319a
+b48f58b0eed92045bcae74f52f4690f5fea09bce6b2940d426f35e3901669ef6
+a10480356d252ed4096611d90d5cd7143f8572d3a47445b8d6db78815a945d16
+63e0e9c0bfe5e66a33adc386318952e570936da8ada2d1d627f425c23c773228
+a99f84ea467315139037c8cbc61ed133445e23d1eb1a49c9601d3218f77a55c0
+779803279a123e9d0bf8017f74d650547d6b3bec714e2eee506dfebad4504221
+773152f5e763f401f95645797b88334e3c39f0aacd19f9d987893c818b2d92d7
+019e18785815e35f7b4a79de9012afbda917b3a0e1ad6c9a162f1cfb40af0eec
+68a2eafd2634897263910ff985b6cc5ef40e8fd8c3696a1d57ace668b14df7a7
+1b4c0bd68c83f89661ad986dc51a95b6a8fc788d889bfe01562a43d9d196f275
+e205a17196df3630a9336a1c4d80d9593cb412bffae2c3c6997b091a8af579bf
+d5d0cc1c3583966f68f63a4814650be7bfbaa24004b79946a6eb0363fd05b49e
+86a8b433e350a906eed37e66b0a23df0310b67d8df013951d06aa94c77d7ef4e
+4d088a05bdcd7642a3b711b6ca772f792bf377d458a940595c85a9c942c6a9c7
+377ef1eec5c21898952035e82455e1f27253e1b273b7bd8ee9ea3559f9991079
+539f0bf13541ce1d56d3771bb531959bd80bbb3bbcb3ffc0d277049b5f108ea2
+eb484d608f1964a422d48cc9ae296093007718e59b14c7a994f26773a8b161ae
+679f307bf31e28d17267e617f8898a97cd9dc7fac43d48149453f380f4a13320
+fe4ab61eb6509065c5e3e50751ed072a868419e3717780d27e4f10d534ea7d99
+0b929a3ed85ee9c9db33d0b8e24a7fc95a29f3f56bf81efbc53e71b42d8019db
+aafd0a69bfcc99a49a165d3ffba1287218a4a2fcd64e94b012565a05788e3cd3
+dffd0e88909e131b56690a9c52eb82a555a02bbaba47bddb8f300bd8c4f0976d
+1260f15e96a36d4ca943ea6e7260aab963fa2680cc970548fd3bf6938fbb415a
+a9792cfb6ba12f241fba58f2f186e3b738971777529ddab76f12ccc83b8522b7
+d0283c137aa238e1931c4ad1cb6accd244cda3dbd4f46d786034476187c6d25b
+daf02062833b2844b542e25a3fbe52159a19fa8ecf4d175d2ac84899e40fe930
+2082b91d4c4b080f1ace7e0ad782bd8217a864ef84d5e07cabaf0f573654dce7
+4f63f189f576078fd265b5b38e28efb9362e77c520938a3fe62ad14902186014
+a6f424365012668ca70c141d42e185abe86a0d459889d25453aec8c57b953919
+27aa5dc8c8b55e5eff6a32cb201add22dbbb60b34ac9d3c569b224eb300e62b7
+852380bfd3f7986584f19ab7b73d3c2ca6792a31e428dd62a797810d0770abae
+03cfebeca96c51baeae42017de033ebe992c3b36d0da80ab718318c8e330b2ea
+ce74515a8ff7ea526fa40ac266481dc702323bc81a5a4cb29b8549d0ddb0c065
+ba59367cc2e10e637ca7baf33993dd22f7d794b1f5c2073f0b4bd4f49804eaa9
+3918954cd5ab69e2713f23f6543e133192cb4a55b564abe080518f3cc3b6ff50
+8250d0236a5af3933aba5d9d545e61a4fa0c068639123ca421fc16f8b552d38f
+39efc15d5d13c3725741ad7d0124dc1b05cf6b979da97d7c4519644c60cf5eec
+e34e8b35c18bc3a40d3de90f44955107bd4d87cd0ab3728ec5c1ae62b015f4fd
+a1fafee61d06f9b340d7f2271b7f6263dd0aa30cda54006fc209e8f6476d5254
+3271218ef14dc875b6cfa344b1fae181ecfcaaf3ecc22838f45750e6a1cc4f25
+1ffd529e3a193c2b8f1cf298c31bc87a8d6b02b98a868e1e095687f8c5618da8
+e97dd80d9cce9cf34c871a05bc763dd3160fc006f93d4f745bcaf6abe9ee5f71
+e17112fde93f28ee5764eaed2a973a3ddf71881550c436da5294449d014647fe
+ccc2710fdab12559ac326253689f2bf1368bb16adb98d83b8e8f40861c3ce65b
+af90c7e425ef19cf27fb31f58c9074c01545d9a20c964febc1e6219db03dcc95
+42ddb8f9a2f9ffd6cf1d5731fd83743a4395ee9474a1d407b7500870cd28e338
+7ff4c4da0d31a9390e5ede23fa39f91dff87dab6ce8958d5f93d93c1eff61add
+28b0308e116b84fa737291b39e9bace7dbaff100dd23630315dc2ec79ef5cfa7
+a211c006b34017178783bdaf5e5030894f89d6791ecd3bad2dbdae9c0edf30be
+4facdc309a2f3a61a57ac650679a45959e6a3f2d6823de379fed11c96dcbe0ac
+e15e651feb69d06dd43b5cf90111d1498485488601cc9cfdd1e53fd12bbf0613
+8cd413d5c123b661c6ed271b773a67c0cce4a243808134140b76fa5cc3db8718
+ae12205d33e8f301888565be4437efa6ea2450491c72aa1fd9aec2f169fcb8e0
+87205351e2793be6c067ebe9b22e6f03289ddb7a7b1566a15e393cf738d7707c
+b8e0c2e93e8023d5b06fe2bffaf763c5c7daa10e96360b71d0dd3b72eec9ae94
+178d40c97cfcb623144111a8daca33e092a022e7592a39e73c4bdf22778679cc
+6374a15f27259c507a1c2996c8424b6bea41dfb38da1ecda60ab9c73b443aa91
+b436b2406805fda6a5d83a4b92efcb406e86233a727fae7bc6b5023f45002382
+815d98eb3be6c0c435a631f0a20cb148aba641fe6d8034604c0f2c51d09176d5
+24bffe3a706a68966d3989bdd50924871d3ca4a736159478ffe01154294ae23a
+f8b36be69889a68e5da4a66ba7f96f397d54b397b0b96e1df5714d7b198dfa2a
+e66f524fe5349fe1bd2bb68c42bcd55b73edaa94f2fb04db935792d6b494731d
+ab720ef5c3086cc78c5f68812efe4c9f7ae0b125c6b801b7e78aa25fa625b66b
+ce6ec12840ba8b986dca10d4923424e2bcb123cb0d99ca681cf7fa78c475e503
+1848485ba47e69ec01e7e444004f2030b946cd34ec871dc1ee041a1968188e75
+fd4c2ade5649e3f6a2be4d1bef48a487f31335a7984b3591c30cd724c5ef6921
+767195f83e55126f9724efd76dd21eff74c00d51ff418a15cf3de68d17be33bf
+c23e628c23f333fd7a9128cdfeb0d737fb8bb254f37bec1fcf98f65121342318
+e2257531e1fd64a65408d4e3c2115b0e761373ceb45f5cebc338beb67ad2a8d5
+cc59b473b6e71ff3d13d550e55d6c75425ddacae8d1b5105cb6ed0b639e6117f
+15e006c88238a7c0ed69b663e0226136f0d9248ddfa72fbef6c719aefb2e411a
+561fd85a79b49bb158555fc9f78e60395004aeff37dc9876b6fd0517a13ddd27
+a632441d4f69428ade3454e5a2e9a9d84d94364043074895ee4a564fa166e2e5
+135886229155ac0fed85b32c17c38c5837fb84bdf728de8f0773e1fe9348674f
+b37a46a1ff518ef352394e4aa1f0c07957432d8c6d214909f9ed4fd25820f2ff
+9977a246dd5419dfdfe45f475e7e3e8f3a9fdf6c5b08adef03047189f1c082d2
+e143c13dcd70ed4b4a07fd229cc7695416b54a1696a549ce6aa5b6f8cadc8fd6
+decfef4f21fa71a4dfe5bbeb4fcd0b7d3504f3bc35cb52f0195b35aa9f534bca
+88ddf5ab081fef3890b28e023160362bcaee318d7b4fa7063624da902a7558cb
+dbf15b480fc8ba7afe1840e37ddb93d4b40573d188689d63efd25fd65bf07642
+918d8ed16f8c536659f1b61184f9e0ef9939e960a03b1d2faa38c64c21d534b0
+ff4f146c191867d32bb60aa4bddc6ff429a266a1afbb20ff86dca2e078b83649
+e33b8609ae79ec60c58150740b8c82f4b514f714fe37c5f288d14a166975209a
+8ca8c0da58bc5ed66d8e93a25e877b167bc02c25426c3d857c117e962e51a211
+a0aca91e85884b274efd5a7d03c2ed89d7c828ab555ff4020f0d610cea69bc5c
+23cc68797c9b9b1cdcc8457217116cba8499cbbffb01126ed5559baa0c52169b
+831b70dd46a197d1b2efcc9b002772569d65e6f995420248cf0025f344b3aaf1
+ec84e515f309e002b5c34d2cde7b1dc0b026f5831736e519dee446ec142ee75f
+d7916ba4573c8ece41d7054c622ef135776db0293944bb51fabd9c0bf9655f14
+f5882a702d60151e7662946182f81f7ee3fdc3466ce63a64bf9e1f221929c882
+67f6a0525599d68991458b4e1fc8a2c8fcecc7df9fc729d0542c96be37346c30
+e667cb2517d6c7be1a1b98b9a1a6df2b06a38e87607a38f2c991f4e9aeeefba1
+f5fc0b95cc9792ff09cb6e42783634d9f6683e00551c05b149db22acfe627ae4
+3fdb24ca3fbf0fc8fe759bd8ebb564ba2f88ae463014143c01bcabf49961f84d
+79b92ab9db9ee96862912bcf20f0681988d51f14bf8d6635b07d7f44015d9025
+2d7754bbee42022afdaf29ca01c5433481e42c1664f51046b53600555343c8a6
+eabf802b94c1e66a52b470eae28542ed5c448fe9659d00016738bbd68126d467
+9417d345541b3469f3444c5edd1cdfa00b93c47b633fe54f078ce6db050bc28e
+9c169a614049b1c0959ae87256254000da0c782ea3190087adbf16ecbcf3dc23
+e5d76953244e7eccff19083c8f9eb052e364b96d1d427a4d86c2776929514245
+e64cabc54d64d9728419d44371e43dfc6c62d49e127bfe550953d5a247f8f0b3
+ab3b1e046ae4fbfdf4e079eda94f8dd0aaa3d270e4e59fcef5b6a85be31286bc
+468b0ff13fba953438077a954884448826f9dbc02977ae147ea471a4038954a2
+81d09db8129bfff2d06cf1ac37dbd49411613700cf4a8b5d3403d32c11107488
+55894a571c6dbea82e3f1c4f4ce76670211d6dd9d1152aad008b3ae1e8d70aed
+978e29a0a93c8de02baf7bd748359b28f28aa9634bbd86afdf82d513e1a2c8b1
+2f0858a18ef26d2feb3cd998cec54a23e9e4bb92d5d57f6252c651cd896a2194
+73c98ed399aea7dae1a3f91e132d24d42ec2852cb253ab8d746cf6c528d7c4e8
+54bc94dbca91fde287005c35a014bb238838e47bab8541bbde95d3a2a67d8572
+40cd0e59c9496fa9daa4e212f3493f6bf026716328365a95ac70459f6b275f04
+7dd9e8f0dcd333f9a34a3a5e2c3e6870f7805108d143c0fca28bbc9b7edf0434
+cb3c77b669df662166b6f875db594e8064516ff565ab9d478e878e3c4743cc41
+c10e15d00dab5c553b50a93693a64f671822efcb3943b559483546b740da9722
+696351ca35c44194753eb748d5896338276aa107081511daf95979e754cc8c88
+43f8ef5d42380a4af84dc57257fbc76cd5c314a4627d22e4d1cb2c3f135cbee2
+6b15473f8535cd7730c735596137c76c2e894b83fe9f81b697b68626053ab67a
+f1fc1580f8ec10d77e488488aa1ddc17d702a9593c201ceb0b0580910b3a2833
+b7dd9466769e2a60078eb5934dbb99de2ce2ef22de0564fd21ec0440493f76e2
+e3168feaca0dfdd7eec9f44d938d42c1f14c97884be6aa7a1d0a6a323bda6bdf
+f2fb13eaf6488abddde98d3f8bcb59994c74b384668ebf2d6fab17a1c95486b5
+79417bff44b298d8636023e9d6ba65f7dd3ead176f2cf22cee0c267b2f5d2266
+8bbbe1ee0f0dc9dc1aea60179a81ed31ce0d5b6bac39d8862ca559c0d27a2e5b
+83c0b4e37f066ab31098bd1d67f906abe31d9cb551becbdeea46d8ffa854e4c5
+c346529754434b6426529fee13c84fbf863432bb25ba76a22ecf38e05ec0c25c
+1b003ab1b5678890f84fb50eed9984b74ede0f0f6828b29e2cf4886c726549df
+6e0340fab247d18450f8577bb8985cb42a07f61b4a3d771cfa9d0fe9a23b7f37
+ff950c20437ef7e214c2091cce57d2685007
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR7
+%!PS-AdobeFont-1.1: CMR7 1.0
+%%CreationDate: 1991 Aug 20 16:39:21
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 164 /Lambda put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 43 /plus put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 52 /four put
+dup 61 /equal put
+dup 77 /M put
+dup 82 /R put
+dup 83 /S put
+dup 87 /W put
+dup 97 /a put
+dup 102 /f put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 120 /x put
+readonly def
+/FontBBox{-27 -250 1122 750}readonly def
+/UniqueXX 5000790 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b448685940729e6e22f4be0e08c6505cba868f7950
+93f556b64b808dd710eb936d3ac83e5783b5f7e56d363a59a026a5619a357d21
+c4e77bea121eb24b09027d1aad93158edf912940e91cd2f17922b35885894644
+7773730bb19af9e70453e1b78d5edc123b273a979891d6d5e624f4a388f3897e
+13b045e34b4ee2f5e4fc5e996d3549640010c671de14d18b0b3cd300e57dac03
+22e59bfbf7b29422230870f5897fcfaad4b50c7c1c58edcd119218163d6f6e56
+25ccb882db7b6d09a1586508e8cb642a11c29a46915e4a96e282079cb21922c1
+c2e360b487a45302fd22ec8c5fab63e54b5e844d4b17ca2fff37c69c366dd72a
+d02922c14c0932f65ed03e4219c117962edbad2dcdeaa9c10ce8af38a4ae52e2
+b377245b0be19a77d6c936e7530cc4d0b78d0cc4a92698fa2870fa54f2d8503e
+2d17b3d52fb2febb09f2b2af0c2a1892039ebe19a690098799a858e3d39631bd
+6925a154d161df3918074ada6bd52baddd0adc3f07e2d9f15e27cbf7fe8b98c4
+07205c811121fa91e059f2f99322fed63f359ac9da97aec383f067f23e5de331
+51e80f0a88ab50fe8fdae4a5de93c1ae2fdca06150b37246140c0e87cb2325a6
+0d2349162ae3ac93144eee1e665a1289105318fdfe86b6e76251cb25adc967d3
+d0b97fe5e279e1161736ab22b4ca510b964342383a840defd38f96a7280e6ac1
+34e48d740607ff2e7804164a16d47735864db8463a486ce4314ce68a4abbfd0c
+1d8090a1146e51c1147146f1189098b0ac1b31819e481ca297840873961ddd87
+af46c4d818cc252607802320dde80926c63221841035992073004f7dc1ec8b82
+581e2e62ed4d0cc3ef0599b2dee151270a188a7649e96e60b4578236e03bb332
+6e18e077fa8af24e434ae05a3139f24b6da32f4ae82a86570b3f933c7c8ab503
+7809a99ab190d89e32c8f9a62383c0b3ef7ec5822b4938ad704a2c33372c9a8c
+8672631b45fac1c11eee964ee00acb563f2ebbdb67795f7e04d2f8773e106490
+39a6c3a777152582c88e9f3b83871d6da0ab886329cc2c99e9cc7a2e2977ae65
+c819570c84c90d77cf35671e70b999f8ea8565c4c5802656a0005271222be544
+303b61e6fd9c791d60421005f19f5eeeae65bd29407c5f72a4665b7e6c48055c
+63e017b6001a334fdf5354eab4fc966ec1c2482a01ee1793c55b382f6f1a890e
+6972a6e187c2b7fb47317bbe554e4efde63abc8c14825893471e82d37d31bf7d
+9d3541b67d6c1757208b8e1496f0a321440f9da34d6282f5000229ac4c3ae914
+98a7c70d1e90cf3126d6efa6d1571f9934b540b155d5aba5d953ae97fd15d242
+df55457ef9eea616a963bd4cefe1cbdb26b4967e68851be16532fdedb8c7f11f
+b6f91bdaec8f59977873d86fd6238040ca2af8b68f0710bdfc44cccb9de139b5
+47bda278fc0be4609e2a602315a0e38c74fb446181072d14a871e21f1d5a9f63
+e3f2c684ef720fd89f2ef7bb5e1c61cfdc203cced704aef721d0b0f21dcb2280
+3ee2291ef05e93a7deb7bb3a834af0405367922b6bbd45fe502d87c76992748f
+3cf142c05d7431acd982bf855c40703186ca9cbc32a959bdac71f724eb14a889
+252053e2b5248479e0a4bb651b09dc26b9c53c88fc7886d5fa6a385e8321c813
+638a096b3a20b72ba9de19648f509ff23ebfd683c66c28d0f6691a7bd4029490
+c13e5ea3f81f14eb0dc1160a32b4187d0bc0645a7be66f1988a7a00a77a5b711
+e162f80ba79eabdfd3008dce4c7b9cdbc41d245d885535c276fffe70fd56143a
+c05544f18f1bfed2388f11012ec1f3168d617710b43207b5c068ceae6e8463ee
+1daa62c54fa9ec85e23658e93bdff2cf01af2890f274d0438f32bcec834036c6
+b841c92aa591d314d07170e9f8ad28a1428e157758b7420cbd96412579dff55e
+83488e3755220e19a00a65fa3be308856b9546cb251d61bfd5a1b608d9de50de
+f338dbd20517772ec4bd8a204fc24e6398f5f708085323d07b6e5a585ce72cab
+caf83e596907deb3fd89740d7cb93479be9944a9e0a676b49fd8b5bf83c2b2e7
+0c496ba33d38d3418ef89f4f0a5bd4c2ccc9fbb06f7b879d40a54919733e0210
+e2391119d44614418b0ed7edca10595c3a43aedc29c4b7f5ae68bb10a6503141
+3f672dbced7c43ffc649932982f4999a0f415e3521553cdb8b3cd31657022d3f
+6a627caaf20f2e83080eef78002c65b32500e9ff71d6221486c09ddfb980bda5
+45d2b0ea99e85bc91d32f45b601d6ef3edbf213562702d6ea684e306077f5de0
+a596ee8e24406b3352043675712d2296176020909a3210cf0f6a9e9bd91b135f
+8619e87ecc397bec9024b9b4f0deb63f4330bed191c1c6d94a23154e1df0c006
+19be03685b8cb243047a37767805253b3c2227941b87a7374848c6fc80c075b7
+aadc6d661b313255bf5e093bddb06e5864fa75c3be064982367e1a906a30a746
+315afa112a821fba86ba6ac6d4d82b1b2dce59eaf388611666f70ceb71b900b8
+a256f510f878cbd115e7ab200b5e7c2de32172ecb887857b53a77fbab0abf8d4
+a4c8943438021175bf4860c6319e421e605ee138912d4eb195fa2a430284e7ee
+8ddda0133b4c6242dcfa614da81cc56bd90e36471a7e0bd288ff6add171fc77e
+f1811d685a709c3bde193d2bdd77e8e08d7ba176fa96b89442196794025ed169
+c970967245d22f026fc9a9e82ee23c9a8928a2a188fd88287837b90320b85658
+a5d3d2085e438d3f008907bfb5e1e916a4e9c0fd5071bf91757ae6cd0df43d44
+f2653bc466994cfba04bf5436d6acd3ea9b7ec87a92f137ebdbc20edeac59d31
+27dccda8b132fdb9cfac253b0580af6e720fac37c4e005dbbdc580716268d18c
+7c98621fe274722a904225f0a412bb8bd36ae9f55e2eaa0c49fc6cac6a413c7b
+1d2090b00a58ca5012af3b98c3857d6127d710817d4531fdb29f214e1a9577ae
+712896d5f6f16f36b1a82bc9d203dd61a12abcd1be4bdd404093ff254c42dbb7
+f3b12d673cffc90491507b0e61025cd5d51950d78fcc3e9f50467f239d600ee4
+9bfd6b7d0ce69c5335db0f90d9b217eb2e62a435a4cfd0ba5020ef2f3d7e9d4d
+23a7f79ed19395f0145e23d5a80e252cf7d3691a8f84a0e40aca39bb96468b85
+4a4f6741bfa795283d0630dbce3cb7b8589e55c017f60bde873b286c6e8a8155
+eb7958a5df2565fef68c52efe33780d8d6c91b1df41c62505dd21b8cbdda8ddf
+7dc3a2ef9de3d88a669aea304e0190d981738d6151bf65872657b80ae7f81b23
+5e22819e1ddb2a96ec6f75f38a372b3a99e25b8b4316c543deb2d834053b3d2d
+61a1ad2cfe68fb3ad775d75fc55e00ad8552a1ed06058e6274c5f1f77c2300a1
+e3aa11ee005f2e14f5a43dd2eca7486b26bf5cba2dfef4504661cc297259339f
+a3de837a645d348b6e3b4587901300576b8e4c66eb13095eef864d56041ffda0
+a24cf976fb2fb66113a3215257b1e39ce8ae351e626890b4d87651be46ddcaea
+b6ffeaea006236ad3c39f071f8a4c818b0c745302033cb1993356445f7749625
+1fad8b01361bcf58c9160ad144e816272932996c526ca5838ff36dd5a2ca9366
+6f4134ac80e7bcf5fbacf4f1a6741588c5884cdb5718233443f9ff544b66fa5a
+de6dc557b0604bb2e58dcab8597e21ee87b4017b467f179321f8b87029d392e9
+c277d2ca23e74f3cc7706dc07e5fd88d24e6f56bf00a8ab25f86b297aa85bf3e
+08a85ea9253f93d7d6e169f93627a0f7122d0b21c932a874987a1c44a51a90bb
+ebe338b968ac1456ba9533fbdb546c28a95c124666aaec4f6d0d9e2f449110ea
+ce77c7b4ea7912cf0726cbc004c3e57707dba27a84022738b8dd8d90acc3b880
+b074dfd1c0606a4c985785464e0b3b24ce48e272658fc0657cbc084b02552561
+c5e36e8e9534fe48e6ae9016be684026c9ae060a95f6cca53e2252cccb9eb0bb
+dea979d2a04d4c92f8bf442b905c097b89f417272c1d578323b8d0c22f288ad7
+3f743fa81cc8c6e842c113c633f247cf9d6268c3678abc06f509604a802d68a1
+189d91cf9caa76af3cdd42d9f9d50f095e3650909850f482aa9c2f271a445af4
+bc2ad1a00ac534a23beb02860356710876c54c83005ba6f43b4178c177b4f5fe
+15657cbe2a26df4737321d9e46a1abd6493610b327c60c89e6e1b91a0a6f9163
+600f7b5762fd4ef9af95340e5ddfcc2b39e55bfdb2afd59dab4612151191f06a
+322bc9660bac17cae85e1f234920c925bc8037e4b680e9f35fdb5808108b89a5
+931abc13fa3f048672f6bee03daea69240f122f863524ffcdc70ef6066a23009
+6adcf74696cf5de3212c47f2d3e09dde515bec48d44992bca110a1d70536db0f
+20878863565435a5da9a0a51971065ad72f4a8cd8db2eb5315537903a80bf9a2
+27fa8ac36b0a488b950a24a2609b3dc5d784469a4cf9c9c803dc0350a6101e48
+1239ace21f450737276833fb3a54880067814a1349359cf552d72d7d4509d072
+391f756d438dc6c048c38b0e1e10d7ad3ebd09e9bbb25630614b4bd327b613c6
+adb7832bc96d650a4a99783a18cc5827b4846d4143ef3b4dee7e26285d8ce3dc
+398f35abab45044aad03ffd632993bc61511835740ce20abffb0e10956f65db7
+aa11f6d2586b72c7a50722161d8471d90d814e1d4a6cd76b2a5f76692213de24
+c9f3a71b4722b7095cb518b22d793e8289f56701e44da9c1f2d8c5dbc5577d1e
+553f334207b005b15752d13766d6a572149c5f52304fc2a84b70c0f57e71d51f
+70bd1d301539c1156e15e5195f9c889a8fbc466f6f2135d552e21336f3a0903b
+25bfb2d960b6fc32fd9b644b445b87d8e83c0b05d56a6c4db4869b525112c50b
+b2edcbf28c1a2199fe87d1edee29b3dd16cd02205025be09f26d850780a9f4aa
+eed3c3e568712ba3d0bb567ddd75399b89c6e8f5adc3ca6acb672d22a8d4009c
+19f92ffd5d869aad07bcbd3e2414adf4421c62d02bd8b299d1dc7e2532877c2b
+931796a40006ed252c748e9caee7f9ffcb7111163319397bcba457ecad8e6926
+cb8b00bf8d07e767db8000660a35641f28f295399fbec1ed2db223ff5de66381
+45722ae73f9d26cd679c71fdcc78957dbee08c645e350f14ac447caceddad244
+61b0514e0e4c0bb802097548ca64c2073b9acd0d869b4dcc41d2440d68b0b7b1
+1e30f8c3a84ee4aab5260a80890a89dfbe5f44beca4b3eda9ee4828d01e6571f
+adcf81135092e9864d4e76244064aff686053c6d27d041005ddfdb51d777892c
+004e45c3af46dbff9c0bfeebc28cf5179104bdfb58088264f2744f29567eb2f1
+c6653f5ca6fe3552ca2074c5cc88b6b4e48f8a1b711e149428f312b24bf77572
+0c1004a3bc8e87cfe43eb233569c4383a37b1f3d0646bf2c50a49215d9ab8c8d
+b1462f98c7f27cb70ee4416cdcc656e62ce2d01e96a7c25b7e3d1e39c989e0f0
+62f012c4549d90caa790a2c63d062e404abdaadc9186c5a9424a06483006abd1
+fb33953b2b741378aa828fdf2967e88ad0cd7d6875196b702f59d21b560f7a61
+519e1fa2e0cca3bfdc174110c71829fdf18d7c2c6a1706b995426e9030c55077
+31ba4bc56ae009e9b014e45913ad5b8170aeb53436d76ca86876ba564117203b
+ca24bd73ccc676940a48322a51ef88d97052c050ee77fab95c16b78c2393f3d2
+2bffd123c98f0322ec118c2e019087bc83147f1755d7fa3584f2b984e7cd87e7
+633a187a39e2c08a8a6f09090ca6b8cf924dca454c567f47c02aeb0a9c83e1ad
+c244f9bd848e27ef9fa8f5887746775b48d20ef0d09ac180fdb62ca52e4183dd
+fb053a35ad3553f9abea480e7e890e4b497abd9e7d245acc9d63362b12c60a79
+0955bd7eeb1693a16d14dcc7f50d0c1d11c014d801d2a9028e6619c2500191fa
+d61e180f42bee6df5721c0fe728a0e6c12a73bba38d952b3955aae873a504d7b
+8caaaa120c2f896f1c23329a7b200ea039eb4ca263e654dee000f4e1784d1231
+152bd17a43d98051688d6628baba046c5e778a0b7ff53ddcd9fcd73af535c7e3
+412a18c71b2dc2c6e6b2a787fe21c4ce70e52425f176183a6ff51d01d376c616
+d6ed7f0f587a5ab70c70afca3a4fdc69741708b3ab960c9ceebf46723b81c2d8
+6044baf9cb9a71d98abf29fd014fb1ece42eca67e66a32c58f3d37dc807e37f1
+a111ffb3b52a9a0ac074c14ed7390f9cb7e89fca2625dfbfccd5828a37431cb8
+a1b3321e2e94a8dd738cc5c5b7ba3906028f86b68e36867aad9e44823caf5c99
+d230c0cc9702105db0ef0e9d4fc7f7e679b2c685a20bafaa761d1ac55151405a
+b6ff22d8d2010f7db962aa44fa0afe342c5d211dc8204620a6234489b3530721
+af9d9664453f8f994d5a280cd7c3e75a834d87649dab2aea82a87318d2743b5e
+ce04368219a75248f4f8370fc2148b28239e3a528c9f77dc95b541e180b8de8c
+3ee706c0caed764d4835d2c3c41913ae5f19e45173ed374619bf2bda37dfe79d
+335c907150409c62225dcddef87059927b3c563dc56e6ab4a719173c0e2e2e72
+06a23e5e0a5ec2e2908cb8bd20542dbaee4fc0022cf4d070f4d8d82d512e8a67
+1f2248b5c3c13b07baba4c718f982f57372b8989341cccbc10136ac38de25fa7
+c8e2c5cb38addcf154d40397cf1f5cdb4aef2c064cd833e69b63c5ceee3e1e59
+63468b3c1cb4af48a3f2bc5fff7febd9009e3d4b4f3032546cfa2c39e809f7eb
+cbd829b64473b91877d5890427a83154e40fd08438a63cfb0d24977e5283ea53
+d714ee1f3888859a37be08b35417c201fa0d8445044aca18dd1561775e0a2892
+1ac1118c12cef809239388a35bf2c092b24df7baf942aa8ffeefcfb1cd9f65f6
+fec7c17382f89faf6aecd6641d7eba795c32166af853d9539315f395c0b376d8
+b793ec89e097fd860af9c35c4e2aea22cb52b1891a9e46208f41619ff72e0e07
+2a9c3222a0efaa55c0e4e14f05d117143b84eb025a874292b779115f9242dfe3
+9f7d9c629cb2e4f5e6e68a62e934b1c581d8ff29f3c15fb08f6312db8d13169a
+11586e06b3be2f6d422db4fb30058095e0a634f808585d02d14180a38388c27d
+d1302aa71593b6f6fb13c2a86b4e1af153c5860c23558d36bad7e5b3a9f86a4e
+f195c5aee3c73af95157626b90b46102f344214d75bb8b496fa59fcf57264c47
+ed22f6f7e166fdf52ba0c3afe1b6c69545aded3d05e213782024ba561ed39378
+38d60f9a1e236a522d2e928be5c80e86dc72a7b675884acb4c09deac7cc867e0
+c0f5fd6aeecd0679d0c2d1b14990d40862beb6745984e3e3920dd15207e54458
+b09e223a02947d0b864feaeb4acb2dc59176da76e365e4c56f3d1f849354b7d1
+0aefd602fc4b0f515d73af29e328400249b62565be19b115757976f81a896ba6
+4456e0dd54078edb873169b49621663a6b7e35a7afe6eac7d55431b4b4ebdc9f
+431a64912f01e69ec06b3a57ce90152564b1eb6cfc51a3b587ece457c0994ead
+34b9f962215d5d322e5cad1cb8572f3d6da02777c6df79afbe2a137082fdf1dd
+adb7cba747dc4428cd3e1e448389b975ae34300e23e9c0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 164 /Lambda put
+dup 174 /alpha put
+dup 175 /beta put
+dup 176 /gamma put
+dup 177 /delta put
+dup 178 /epsilon1 put
+dup 179 /zeta put
+dup 180 /eta put
+dup 181 /theta put
+dup 182 /iota put
+dup 183 /kappa put
+dup 184 /lambda put
+dup 185 /mu put
+dup 186 /nu put
+dup 189 /rho put
+dup 190 /sigma put
+dup 191 /tau put
+dup 58 /period put
+dup 59 /comma put
+dup 60 /less put
+dup 61 /slash put
+dup 62 /greater put
+dup 64 /partialdiff put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 70 /F put
+dup 71 /G put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 85 /U put
+dup 87 /W put
+dup 96 /lscript put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+/UniqueXX 5087385 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930da4f8d58abefd45db119b10eb409dd89792
+3c6e705479464a4b310b58348c4b42393988fef4925cf984423aaf65fea9f0e6
+4629953bcf50b919d968d99bd185f83112b2759cc411764e9bde677f57c5ee5a
+c555448d5f81a16259ded1e11bf4119d53e8ab07a802df900d3a2d5ccc1c6876
+d29c5e9effb7af3ef83400b0910c07873a8c56fa7b1eb1ba426043b00cc95dbe
+dc6e136cbbbcb3f67509964f9f281ebf81fe5b018122eaf66c4a838487e82e18
+6e006093042848a903efb3469ab6b4049767aadb95c30408dfd58d8a10f4cb22
+168decd9f3ee100f07b49aa44c92139b669cc312ba20192454eb2375be6284b0
+26659d964b96ae82d4942e758027fcf23c25ed01115af27ce7f20efe2a822bb6
+84004f20243a49c9e93301fc21b80815c033c3e2ba58ef53da2157d524b395f2
+b37abca13bc6a2f42e824ab7e47106176b0d6db267fbb795ac7425582df2e3dc
+55863468a9200742bd7b552c48f8cf58bc21343bd3b95abfa140f33f37c6f3f7
+8b0d8a5154eb7c1f62ec598267f13e841a3e64172663935ac8b665d86540d316
+ddece329c008049c5e74b27d59022c5515059bc3b89370b1bc6a169c888bb325
+e0b74282d6f053a50da4024ed1e433271a32ab8c17d41c632b41cf9f3ecd5fe1
+24daf7aea7ce8a63047b245822930d517df7baaafa69d2d17f7d93cebd47deb8
+5405d720de0bb4dcae731a8e27bdbb6e6be38d168b7daff815acfc32ce367374
+bf9fd98c0ae5ba1bccdb84d94b5c173abc92f7d18e19a68f64a2241a0a163910
+8dc46b8a04ead17662b7bbff3d3d9a95d5937698573bfac64973dc8d8b8d9f68
+c52d0c133119eca4fae72f7553d276c817003234a98337d7c037c0f1bce8a804
+57113bcd97515c002d20f836fa086a3277727873ec2b64a92bedb01193491134
+b6692a08de4a201a3f11dbe070d797f7629ad487d2b8dbf89a0631956c93864a
+43bc0f40e19355c2de262663ea77d49a4a88a14e02349b7bfb90522e63dbd11d
+7a62b95af6b65e708be21b912ab3fc58cb180f567d4371ddf37ff69b2ea6df7b
+7fa003bb38e658fd18161ca33741b447f3bf0e0efe8a7f663eaa8e5b509d2049
+d643887e69ac02d9f2160c28f0472cef1bd8df68ea473fd863f37ea089bf4ce6
+5603e36e643b70869a54b6be5a1cc2be787740b446bdd9d108bcebf966a8009f
+e57bc56e64d4a142648216abd816541200b1eaa2e8d51e6f0b9fe45fd1aff33a
+f5748749b70562ae1cec42ca79a878d2b65ec76c45a2f87d47b3afc6fa6fa43b
+c2ca96cf1c00f861824dac8daf6ff31e702d7bb65380261e4e0660dde3d59f50
+25211c07d1cc291b88c515cdc70a45758800393a287704ec442cf0d362fd0ceb
+d028da987fc630ec99fd06edf88297237035febac1026c0a9aaead35418af24a
+0ba866b64ff5fcfe4e75b8ac9fa1cebb26efe0b19409c118cdae15acaa0ca109
+e4d553949d88b7cefff6ce45b18923a3edc57091ea0dc688ab0bb6a2811e923d
+6ffef54344c688243e86e9315d589fef44d920531580673adc651309258069a0
+4249df558b09df65682f3f1a7ddf26de50c1aabcfd66f5b702f384bb42d07524
+8b8d65ce36a0d702db49a43d9cf3719fce72d64f3bd62671600b236ea7f9fe15
+efebef6cad319c50ccce42bfd7160957ff42a4cd43c4e579c21e181e45d99bd7
+dd640875cd5e0690d32633a7130bf754f8b573f0bc90f73f6ddb3f162f5eb6c1
+bafab51984da2c7e97adf8c29af4de209c4336908fbef70a6555640690ca3c41
+cec8a098c6b6fbbec41e545302cec5ce32d611fe4f05c353cdb8081ff1583f38
+7e6451a79f6022c426cfaea2e1749a55eebf1dec24be226e1d151b376e4c5306
+4c594c972400b694ae65d11466ed87b122b9a2620d4577324f45fecca7d22814
+0e7f9949de45433605b95962665c0de1e540a27a5f6dada1500e767c261bfc70
+b6149f66585b96b08baa3d87660e092cb81a232a005ea6447144f58d9c01c979
+02af58e6853f378d8d9361b9cf54d7ce1b1bf4d7c2781a615a2168d1a92eed4f
+d3a4bdba057e4c70a0b1919e1e39182259193455978f33f536288b43d6f174f1
+55338c03044782ce7619fe71ff7718f9e767a880a50b821ae830a82179318dda
+9c12f74a47ea1fbc61225c27ac6ca530d43b2391ef495a868365b900cf3f943e
+67118c19ac164552ae475ca9346931c57278e1db1c79acbcb408e1b1086b62d7
+23fb041352c5b89066120bd819c670e1f1501bf91166b232f9bb6ecc079f7130
+3a3d5ca47c7e8cbdaf5410fe9098672c196db187ef57869690d6a7d6db50dbf7
+7478d8875bd57d100c55699ee742d1a1635eddb8f010f8bb1bc025d2b3998c07
+06c92355a517aabba03e686558ca550110b733f13b7c68f52a1d935e58552538
+9790d2263153588cdb8158bccbcd412a110ec7f0196c7643576606a07c7a4aa2
+a2067b54b0c2c6d3e46ad70443d64ce8c67d1a588a26c64ad0b3be32a85d6ba8
+11bc351e0eb9c89f470832a1b85d342fb8b3968a6fba59daa9d5cce38e1e4e8d
+563d586aaea2ba3644ce97c3e212d3835b7d3e5cef93f4a754f7d8a6dfad2d01
+51edb28eb22aeee6d6904a2f35c2fabc7c7ed706520ebbb3deb57249fc303411
+59e9e29395d867f47ae5bea4f4c8cf8c27a5c0a1a7282da6681dbb8871f34a41
+2eb9cec3bc2eb412866a38e3ccdd2433fda6616e117ce40f0f3dc4a6f4c4a8fd
+5461fe7af84e3eac960845029a236eba4362f72aac987fb9e34bd06dd5fa2234
+ba0b8cb18b5ebbb4d07f191de3252303c9649cf8e4f5e6482a65295d7ddd5db7
+04e4340600aedb260f66752ecf8ef013b65c51639cd5539657f4c50f972cf849
+4b69306c525e5d66edf8d549e2712e2c722966da7bf314d8c364e32edd2b699a
+97c8558503641fb8c752287ba0f8b59145a65810b35c420e8863ae856a7ee6a8
+a279f37d7e54ec93b45676cf69c9d11b5638eb64752ae73cf1efba8c8f529da8
+a6d6a23c3a63cf9e9f06ee879fa52347a8cd8be65e5f55c07a117c87367a9efc
+907c875b74556cbad58023451769c38fb521adf9504e8c67bd72955b7c6295ba
+2c5acb342f601aa8eb2a2a3594382c60f4e50241a197886b350ad4ae74a4a2cc
+067217f30eeb2b8c3e0b502f97e8ce1e140141d43a3922d8a742dab4479a7bef
+998ea2ff8ecfb221effb8b736036dea144646323fd7f3d675f38fafbb1b5c093
+4c080e788184e35620fa7a922b8baa94f8241ccab8dcb13166671349f85532b6
+d15833e19cb98a5819e89a0bbbcc5d2b251ffd37a9bbd6172ac015389b4bd1af
+140c521d09614e03ed718262045193da2ba53d40c88166c7bf94105cf99dc354
+470e6de1797dff448a5437c1b12d9e55e03f2bfb4d59508561a44609faf3043c
+5583fe1027bd12d90f4039af8994bbe1ef7be0d31de37bc4132e2d46db53d84e
+ca1f322d2e5e83bcdc72529113d067dd16edf6059e296b566153356a0cc93bd8
+08eb17dd77dcbf907860d84bb07b57e53f3c7b2f654ed36505266c06d14a3d4a
+0b94aeb1e3655853ff697b0e356fd37fe3b7db61ec4b4227713181fcba9ecc9f
+8a24fbff5431391586656dabbb15e8e9b1c10ed4f0fd9b9bc2e324a42015d057
+431db71aafdfdf533c66e680a419e1fdac1dd95b89b552f381df3a215ee7eae8
+058ccdaf3e99c66b38b7ae184d6a887e02cac0d55b6e8a2112bc7ccd8fffcfef
+17e613a811d77fc2e8e575e612634d15a9faaf1f547e08179727ed63a1126df4
+3a6cf764f857a497e120c1739e7c4493ee479ae4e6dca76cea7740a53292d814
+93ee6b14022d56f2ae09bb65808f4ddab339208d50521ecbd34f503905e2d19c
+b8a5782ca258d6a04e3d88030ccdd15d11c4464d2bddfa0e695328bd9897640e
+e3f648a5c9723cb9d60e7677dcad334f23f5ebb9507bccd420ac8543848caac1
+a1cc7729143942be0ca7c741061c4179b55773742a0a100227ec1fe0bd642d2e
+ce489c25a0cd1343164b26a15be0f7312f4355ec842a8e4b3dff4e21012fa0ef
+85c7129d5b9695fe455cb3d1d01acd42907773acc11814a1b970434afc7d577f
+062c06e4e9e9278e247dc47bfc16eaf16ac287a045730ae8eb42713ca1c8ec0f
+ac0fc75208daa33530edbbb572c5ec05a0229297e1ac86b7c89d1c05868b0867
+bf2bdebf30ab61fbf8d70b9f3fb07881abb06513622f4c2eba8e38b193d33cce
+7b7856c82b1a9ce0997803252d9386da57112ff56b32e85760c4e827109a770d
+df181668ca93d8975a2f8321654166ae082c9d2d24d1424c21ef3b3bde4c1da6
+e30f97df0ff89027288cb506d98ed25dda679aceb8c8f387763b6d4c1a85e978
+86f7ef20667256099f8930abc81795755ed74332394e33cf48478629371b13e0
+379f27a0a146adf7966a1a746ddf114eca1520493695f7bacb3e338ae771d50a
+e58bd07ea4c92229477670ecf9cb0a5cfbdef469488696a1f010f96d6768c0de
+a5a19ebeac6b36475154a49c7396df1239b7c25e8591c47be5d2d8f89ae552e5
+c2879a17e5d84faf6e005f50a8f3d628e8810c8da6f511fc8fda4caaab8cbdfb
+97e912ca4057ec46fd67ca9a4ab2fdbfb2a9f49191f78a90e6d622fbad0fef48
+0e9f5a6bd0dad1ac72b0fa5cd15590a1f9cdad26cd2920ffd40a80b3340be58a
+8ee7b6b6263e8455342c60ec0fa25f81d618c75ad44204e56928d7272bfb51b0
+c551bbdb46b677227e687b3b4db842146c044c8408a7edd5b40d7d5a2228d068
+1adb198a4ecbafb99b154ac610df9cb277719be6101a604dd0fb5356b719277a
+6708d92eb7b710bc122c687cd26cdc5a90b1dc9f4dbfe272570c7fb43a2842b6
+0e7504b488eedd1d90b4d5380029c1a35b1fad03dc58313b6831964a180e77b2
+ac1db0f658fd467efd70c152b69c87f01ff629b092fef523ae65b1e5720ff6d8
+f35cc6370129867d0b8f374d0c7fd33bc67b7c41145b9e41cc6399e950812a41
+31268868fe96377a4a053e9c5d80383da44218261fe0298ab9968c146ecb8006
+623afd7da02d534dcdebe470fe4e38da72cb9ac8489f7ff4aa4961761e641cd3
+a4a7d47d83dbcc12ca271e5985d8a3dc7865e3397d0f06225dd61a17a7e314d4
+4637932dcc037d5ad6e9b50f1da63d84f14109ce2c69e82813c38c94e1674ca4
+9f7a798a118373c0d5b55f5c8d993ba1e9bb2edb9e336431b95a74f3c1d7c480
+8e5d57d1eaa7a7e78308bf24ab062d525fc6402886dce859d1bc32718ffe0649
+0df7e8b66863abfdcea520b405f9ecaef58229ac34c644498b4fddfbda8d591f
+a96aff80707ca59961938f2e32756ea8115b3c06236a2775204938b5523dffdd
+bfdf66a9fce80f413c719f53ac8d09b7ef6dbe3b4a12e48f998298f95becefc2
+e3023fa09b5b912ad2d0e7fa71b698b78b634f537f6c562f78f6140924737dd8
+93cd91d70041e3e74bd72edf6da36698e1e049e45b259f1dd6cc615133a356b0
+fb671237b1811072426647215ffdcd3b09ba7158b80b4b502fcdca8b9e60a597
+593680aaf86eb62e0f2067b4f9a34692f9f295b8b9cb45ecbd87f96e66be4d03
+d66d2e4a786f3ab4436e4ae7da6e0d04669332f011cca245c5bb2d5eda062c04
+7004ed5aad9a41ca8164477a9d42ed1a9e9993c647c521f26462ffdf2ab1f431
+295e5d7916f754042829e6edc0baf6f531c33d1be512f1ac4fb424710677d713
+0b854b5816531093b89f862181f063541731cd215eaac8d5fbe5afd27051c762
+f8da90861f87c7b1017ecee0e87cd13cad3147bd85da3aed0f9327de32294d88
+b84207064128aab32a4c4393cf71de2ac9dbeee76d80611dc1dae8b4f777ee2f
+4af715eb0718f9bebda84d10876fed156d657fa234ab1c6a1e96a38a07ede8d2
+b4fdcf3109a6e3e7651489895219858984db8199b9fd9727d0db8c5b50d8904f
+e6f3ba773e9f18f41daa7bd684a6c8fae675908392adf367508dacd75740aacc
+6a895a8cc6093c9ac9f9deb61c6086b1367c4a860b9f2b9606e88f490187ceb9
+655a7ae9a1d2c32dd0c3e7cd509ac169ecab56bfdcdfb42781aee89bcd39b7d4
+b05fc98ea8781a55f78510d5c03c910a2e58c10a4004b85aebf1a5875ba0f17e
+eea55cdd3359db640c7e9c736d4733fa5866aa615bac9ebb6b8d3a5673da55e6
+e66c5db2d660ccf38e3f43439e206a6b93d9a2b93107d1b1b52e728e11e33d56
+ffa454b01523947ee3ded6128f14f5bdb4856fe4b7940ab42ec1204dd29b1560
+3b09cb33e5839376ce1732131faf35f832785d73c1b35850535da2f4015de788
+3b261aaaf4279aaf40466da85ca0c576bfc132f77273c9ae342bad0bbc6f2ec6
+51d166a76c5432277346eb4be8d71d00ba3618439d3c0d67a6ca33d73495a49b
+9a60598d1599dcf7088c9c38b5a2e8194773ff5a7417456c0af29f1211ddbed2
+7559e74cb11971216ca66952a397c7627bc61de58aa11378a4ecf7a7621d906e
+656fb4279b51a1455d0b5386cc2e41127a64020256a03eeeb54af43f186bbc03
+ef2ed7c2011a82dca4bd5944f996295db842f14a0738b3deff29412f3d17b5a3
+650ee40908b45affcae7f697a92356ec7b8bcd882e2456453803e474fc5ad1a1
+b838ddf158421866c9f6aa6b649b3215f35fb263eb6b5fbb2a41bb0e691e22ea
+e55941b1ce4a7ef36c0f0b107230082aa2bbf1306dca4f9561319770bb939011
+43adfb09bae75b57cdb23f33678a24946b7365c4e5efb3d55046e1429a02b558
+cb013a6779319e409b148b150f48bb5c7d2a3584a81d0fc9828db222fdc89648
+cb3bebcacfe131b15c302fdae3a924034e0e5e606c9f9ee25600e5f18c28c7ac
+37630405bb42e6e448681cf8e94892c52321b64f28944c8f2db7d395fc9daa46
+8e2c275b4733215e5df4c8255aeb77b9e54db006a1e02fdfdf539fcdc754e62a
+1dae62c844f43745e7d44e49382a0782192e1fa53885bd5542b44b1a0722b710
+695fa6cf9184062d4ff2e5724b244c31973ab688dfdc637c5f906b1c73bc86c8
+3b8f93e5f115a3baaa1ba57181342d46b7892c7b2507d4afeb05fe9d55ac33b3
+831e39a40adb76b83b6095ad7f4a1d8be0cf930cb969f866c7ea979baf3398d9
+77565f852083dc30363b753164eabd77846ce343f1f8d7c0250d09a40de4d82e
+7339e7c285f1ae6e0d793b0852d7468ff87ae8ff91f417d735bd204e041d3f08
+ec34ca81a6f0ac854ce828fa30ae5f606a24a191940e8135dd03a29bef047f64
+20db37081766c20fd69e8242e768ae25a5db09127fe61b4f26a41e000e5dde95
+66866e0faa400ef0c184934169cb5b28066a890670c5c643dbaf032cb6a4c3f5
+8029c0a9af631ea56d9ab39f500caa959bdd09d6a2610d6cb21c6fcb64e0011b
+eaaf99038db847b2715ee25c4049fa64c6033196c9cb5d6ae34cbf004dd49e41
+7d37317701d8410b86876e7badb1595925dcda0e28fdd700b442134e7c8ebf60
+e7c78a849812f5ff966f4ba8e57fae59691968b6c8cb91e38fb60cc2e25f833f
+161adf167c33adfa2360694ddfaf7e6330fe3a16558ce27ce8bdaf4c821cb217
+6872d36714f87b94e7400ae0385410f1c7b69669931baf8d80a34561971b445c
+ece41d1961e77d616a76c871d57c50253cbb6f29a963be679474e163d48d4609
+8bb521627662af4e729b6ed4b6282b5ef4493a96072cee1e88a47224ced4a61c
+91d0ac84f6ab6515acb657a4ef65783d6770097f4c36ade0a6b57aba1bbc0535
+74f1db751e51d7916622f540b3bd92d00fd32fa1fcb51bf75a161f434a49557a
+815a0e8351540a80c02d73ca51a73be4c7007f62ace5a00563cd56000539d5a1
+25315bf30d800ef98f692413ee23bc65ef1eb9ef32a0078199c689993e684076
+4f7e287561afe56dcd6720220242c5d9a01d4a61498fc0551bb6b90d1d65b1b1
+be6ccf39df09bae992bff50dd166bb5672e3539292eed648bfaf9e2733c4bdf8
+0139cd5a27f9e8f6de8901478fe1f5431d45a28be3f40c830e4d95865ace185a
+100ebc83a89da597d578e96c469a89fc5967e9addca09dbe58a3717250e9db5c
+a22286157671ac6ed37542ddc76dc4db9f76a059f54dce3ee3a054f92f35f66b
+de466c97deb61afc99381428c870510ff414bab67beee0a625ef4e3224b24910
+6f13d9b9b8fba9a3b9354744b1499ed78af142edfbdcf6e779aac02a77705c3e
+158fc5be286ae276cf7e7488692dc31cc25cc6c88e9f53aae834dbdd356395df
+c29d01b77b10532f44778009ffbe951c9e0c16fd33ec66f560044eac4d470f56
+011d72236d44650b9a794c7f2644d8e20af6fa7f9d1677ad11574e863bc7bb6a
+33e8d898bb2ee882067db435b767464fccf04140ff975b8b095fc84ac8be2c22
+a27b2b965e18dba2b83b0cbdc4670ecd2fbe9d384f16f26ce9e94a283f438636
+36204758657dffa33e3c0a5c8c197b4a138148ab5788de9b1f9f348d2adc9a74
+78ffb688ef2bb4931d94c702e912f9d3c846cc940ec9ad5a3ea66d2b8b995c96
+a3402c1273392c86430511236be88556641ce6e11b4976d7ca2fd9cab4a7da3e
+521152d06e3b097150c88344d1e219f12a62659842a7990c1e56e3d1e03ccc92
+4efcc57cc6b9fd29623e2a947bc8c23258cad553f711d597e944429574ba8232
+dfd77987de1ed688e35dc31900fadd5901c037688acc7ec4b67f64431121d274
+f0500f82728714732847ac77ceac8b8a8ac092c89bb4e3a95d5416fbd0c24482
+34d7e6523274e9bcea8dcecd56bbe8f16cf330592a377ce21a0b773433653c51
+4b2a0a03bc818b2d3892b0f6d2440232a8c98dbe2201513b8e1578234323db75
+fe163d832d46c8a20ba8a27e4dcc3ffb19609389f30f69633b8ece4f6c20a49b
+54876ed8666eac3d1c42833e98a828e9e4eaebabeea7bd2648a7387ac04c7fdc
+acbc3df992bbbc4f751bb6184b97a085b990f66319174ac7e493e39ec5f7c485
+b26c6ea8510d544d48936a7c749ad70d4e5d49bea058fddd68c4d8b4f9978af6
+dc69f8702574485cbc21631c2788203356f9c30209fcc3c4c2e1626142e4b206
+c0ce314dc12e779de5190baa51f50009e8ceddf5a31640a16618fdff9edeb548
+789835d2df4e2e51f1315b51424d1ba073e53fce1d81d112402d3db45733d889
+49fda81b07907e23e0a629225c752e2b75ab961b4fe82fb82c5bf159792f0a36
+1569ac18e32c54050244bf66b49a5373e346baf588ad61f243d0544e01556347
+607ee3a0907e798042fe1f944c8d7b621ca6d6f70753f189959df52992d473bf
+8b0ea4090daa6312863d8687a7ca1502e1378b11f69094b84a4b74e77a544a07
+e1e03d59af148827be74bbf52237198c32aed0cc92735daeda21ca20a5497100
+b13f407bab92f9b3df3805bc5e723c7d6795e1c2001842099fe972b296f51e35
+eaa4c6b1067124b79caa742972fd9b29b275471a87cc50ca870d4d67ce2dde4c
+2b44eee7ea83313cea6013fe747178f34060a7889deb9476943702ef45c73c84
+17fe57ff6a9ae7b0552f0ac07470c052fa8a5f3288c4374e560d735e9f6067f0
+0a3616d1a10403b22d44199e48e62beb6a3e9724568d8b9ee93f1f85dc4520cc
+64cbfa03319cde129471089b735e9ff8cab121c0b24e660da9ffd4cb4a580445
+fb134efa9f376beedc10d37a082af18c1e912297efaabfa6c82885ac89b1ea54
+4ea67e0cc9aa61cbdd75c679d54a6ad1cabca5bfb38b46cd2ad3a5d4c0933678
+7167fb60b26fe2c38d8176e2666006e2ccf284fd5b15eb37b8687740ec6f4b42
+f93f538805366a7bba7994479b0917912be84c73a9d1dfe0f71f26112d8229cc
+372da82a90b18492545fc8b7d60ef9ed15dc0b5bb0adea2562e22d167ec717c4
+6eef69d55c7306d1565a8fe47b1bb7508d6cdab75a1afe0b850b5a43964d2979
+372de3d3c67287fbff42eeaadcde1b015f98144427d94d4a0ba7c1ec81c94611
+0eacd82ebb4eb1ed34c785ba97915c53ca82cd8563f1cb87a62e8ce3d952b690
+2ec9ea75a2ac7575ce99e46a4018411cc7c7172d9c4985b0c6a50097bb1e42c5
+d0c0a69fd2af85bdca9934213923a488c86585c82255386c8f588fb85377e521
+743104540a19851648c90dccdb172f24621da66c305e9f883c544039cef2a80c
+54788a374a8f8dc029a7abc1910c9b5f69f63094580d7b6ceab4932c821fdfb3
+f6f9d08d453772b480236bf47f999bd0a65e42c628d1527dd95bff347772e29a
+3a9b21ffb095ce0d81be825445cd807851074af0a15c5e21c7c88e3a9fbefb6f
+c0708f7a68d7c00635fc59a0c0a32dbce19ea58e43ba8cdf5c3a775cdaa26c64
+9899d0a80d847daec05bd8d20e0075a8d28fc9f7c85b0b493b4cf5e5b4ee9428
+4b2e61b0ed81747e730c0e84f03c5047aeab0da0bdc5624689c983ab169125a9
+0639a43e77a246a2b3bfcd219040ebf949d96eb7097876bcc4b1a007838f785d
+5be886a6fe764c07cfddb7d4ab0c6cf8f8eaf07308166413a6dafa4da27e5493
+0b7f8e2739c6dfc0b4f2fe7bd25257667d6fd8cf68b54dfcad68d6b75f926347
+5801101eaaf669b5693c096e9715b09f644aa837e43a62905652ea719bf87f0b
+d387f0ca12f5dcde2d90b9399f45e0f63ed07c983017a8f33c0c0fbdffbbed7d
+aac811b7f817b3165300a7972f861fc12f21c5fa44e08dc17fc879addf9a6c5c
+d77b6aa1ef9bf265827ec3a70be393789ade8bbc2b7751d01fdfd4480aedbec9
+4b57a5e9167acee7b19d36ee7f62da1a6b3b5c0dbe447d7bf4ec7d2f1b053fad
+db81982bb2024ab1bc57649972008a0594ba2944d2b7093cee499b557b47cb54
+cc64934266abb0908f0c672f4ff39404ed1f17ad30f2b7a56d189619d20b89d5
+e538c98c8866eb7519564e88e8cada61b989341a951b9a840805ad42d5fb5180
+1b903852d363a9b529222238fa4ed4c6814b935edd890a3aa6265f02f491830e
+cb7028d0327948da390e905a4bfe59b66bf450420fb542bc06fe977a146e139f
+5f77c2c9a4469fba505b510ef9a6936d58621bb1dbd1b6b584d42ad744f59916
+a85581abf8a988a6d106863bcedf4265bb600a7ae0cb1bf8c1d1fc1204efcedb
+e5bfa52a5783358868ab86081327b6b821e2ff2d1afffe97f42760374c2dec36
+a2eae718a9ecd6c987b9356c43b3e60975c93a021625101c72b3f48da55d8d47
+86ac7f8de2597e6639c0e0a4c5eb9b9bfb48a4ebc74b3da619a581f29e0a4039
+a9ed9b647ac14e19b8191ba964888aaebf479f222457fe5c79ffd820edc010ac
+89bc8c9196c9c807c7e20ac13839823b2eaa956de5b19e7a315277919c19b744
+cefbee18a8d217672c4218bfc8b62d8794210bc0c74073a1ee1d03d5105f80c0
+125757b08e07f6d78376682713b3e7e6bb84be1a939f92706cecf15cf026fa07
+8573642abb98732bdb979718dc19198bc9b18ac9f8bd546c232de74ea5fc0153
+205cea03d5dae4944b2e5ed821207623347018e0657b0c1998bcb005bfa239eb
+98cb7399e3a8e26c9c5d2dd50a1a28ce97bc88098c52eb0f6cbd74175a94d25f
+9f052ecb6a3c5ad4628b700420a042ebe0d76c9078b8b8f8036eeef834488d3a
+45cda46262f244bf166cd9af9aa0fea511a13de59c36d5a65a7e8682deff2fcb
+480f5035dbfb1ad8831fbac4b0cb4daf20ae54bf48788485ca03e82be4e47155
+c71141e7839e747b5215db113829642e028bedd7a74ab930f34793d9d115bbdd
+8a6332b8827a95de613cf22cba45652749a637da86d0121429c170ffde409c38
+a87b7e24a1baae4f571e42f5ff368f86c10a0ee0fa1755d8f09baf92b586b9af
+a764fa0f074310b35a498e674e99f046ba3e485fab8d642500a9b336d9dcd4f0
+a2666f11890f3d5e239678748773c48b35f9c4f339b675529a29c25963d09536
+e4cebdc3628cad713eccb34c6ff3377a293ef846b811d32a873f280292a988f3
+e4502e3897ef966aea7e589791b07b1669f6ce4dfbc781d6a532a10480e8598e
+c241f7d4521121b46061e899823d2afaefbd9ca4c276fa67673148917cb4d4a1
+e5fa97db94e84dc856d7061d8482a36c26ef628e5a3f1e6467c9fa338ef3528d
+8043b537cbaaa7a5cd8513fe9801637549c123aa65df6bcb51148447bb316f7c
+dbca35d0972a5cd5812bfa561b8f6407b6dae9aa65af5e1b4822c5c636c1836a
+1662b0a59f14908b04655bda3773dbab77eb241d061127a63c44b727c7fe2762
+ff0b5ac26855298efcc97c71884d9f431e94e668e8d568de084d9c3e922af1f9
+7344af3a9d5c52b171e9b50d9c6ae2cace754aa7eb0deb0b105e0382bd227d85
+6da5f3d79c7e8469c041280ac72bbacd1a389f875eed7285e7eb1b61c7de8936
+163a5e885e75478b7763497cff19ccb8c30785c5b9cfa7b15519317182744845
+9b0e2543d13e64626a5328b4dd4d33cc16e5145477237c057a81acd3188e0f60
+1b179e79f2cdd27e2ea509ed168ea4f2db69565fb66a4755b61ee2f248c7a28a
+05006bf91ec62e4fae74e898f60bbd10ff0f48dff3e6b17c2262bff223b4ff11
+0c5f40bfbc9d709904212d985ea014d961bbee04383f4b23c703827b5d6ded28
+79d9ed6f51ebaace7d6a61854d47c304fc4b4dad700086f74b76c770863c5bcf
+2a7eb4e3bdfffd02c16be0a217f265c3312c0e95c8dab16d4740c8e9164668ec
+1fee40d1499dba0166ba42cc61b2d50abdcff4d09cb4b31b593664b575968b2f
+7ade3c00ee130e4e1dfcbaa91f0642e3f535386351e1082599ba24a0c4cda01c
+2b71f59cc62505a88f40712e9b5a2da459a4acafaadf5642e8d0299703d0748e
+73ba4ae2125c215a1441b90571490fe0e9d031e432208cc5f29e51c53b98b519
+d89acdab7fd6207b0438e9f05c8a1b05796ad3e6a96d53e87832c2b28c7b80dd
+27df1fe053a5b2f2f8f6d6742b98e43add44aaea2cfbb8998fdcdf56dd8887eb
+7f926be0fa55b14a8c1826d16c211dd20a8a6124c70eb6490a86aa463ac37012
+9df476291d1313865f68f9bb1a0d0f666a9fef99d0fb35f1b364dba077b5a2f4
+4f660fdd81cd4b674ba24a13965ae19d7f889bdd095557273ff1c3aafb052373
+7eb52b78448fbd61846006b6ce19b58815debd935fb0f9fb08bf5b1edc3a6659
+504ee3e887cac2664f1cbaace84abb194201c38f9607897762da214ffd4361ee
+07a34385785d1edda8c11cb761b40c9c664d9bfb1ec0f0f65b93016b5a9ecca6
+b4ad1496ffbcdcf33c6cdc8fc0e9f8b7a36a42c61eb2184e577879b9d509b148
+e4ed3fd2c3bea1e7777d8d961e15f4afcb4f67194ae1feb09095d514796a652f
+7bf3bd893186a96917943d853d07eeff6073ffd0bab2a082f8bccc8ad90562cf
+b6a9ed82490a5bdb2170f6c7f5d1fd692d2991a1b5d4e83ebf6b85089095371f
+c1132f9977f03146d8a3f883d05c297e5a6ddd518b84896e33988bec3b0f6869
+1dfa507b6e61eec4a41e46bf92a400fb7ac4e7c6b298b3489fbf1341fb9edd64
+049e361123a4e62b9b80a5a1cdb7f9b8fcf8322d03b3f2e0155a9e54df703c5f
+03b62aabc93fe1d74f11ffa7434c1c4955958155834da7f45827a228b7103733
+08166505936afe32b50e635e5142740441e22bba4ac82f2dda6c77c861e7aed6
+0af4f8d937c471c20df5e6c8d93ee7e53b7d84f0a7422d137a6bfd91e771b105
+4ec873fa5746591ab1790589711d59f7af21ee3ee82f4d678b22d05350d2e728
+1b261f2201f2d24723445f94fcd0b21fb8d8445c8a9ec594a4717f525ecda685
+29a119eb7f18ea41c8aabf5a6c5e7e7a1fe36fad9d04123ca02e1d62c2974ea6
+4439c01376b7cb992729ec2bd06775c300d0595d70a975a76289867fd607ee0b
+8b79935631bbcd790623772dcf19986f61a42facd1c8625960e18f506c29828d
+ab19d8a281ac7c0a99178ae9ed18937bf37b5288a74ab4ab20d5f04daa79d325
+249c0d5e81972bbb308151bf47151f05a04b7ace714fd02f4ca57a5dc45e25c1
+61a8623d6f0741dc4311c160d6631ca56ea2e3c8fd0c14184d0a0c3c1a74bd26
+3755f3774e43ea0791f01d71bc767a2dca06b76ef014f1b24a0cd9f6baf6eead
+fbcb51c299e1ef054ae9d99dfbfe659d780955371fc2baf3eccfe54258e869f0
+89092a92db0c615e285281a97d23366d45348b76b9420c20e39880e8bdca8a14
+49fba3be9dbf793ce3ec277084065db280a6d45f1cc1d28388ce2a8f8b334007
+af1053f0320f55572b062edc73e433cc8f27abc864c304f8c63b8747970ecebf
+7a386d61b8fa9773c737905552155e3ca0fc2f1d996634c82fffe43ad0434e51
+bd3cdad34b4f6fe0d2f7a9ee21ba5efef351be4e68dd80536339fdaad9ed9e22
+b0ea92e78e75eb4e0a5af3e2f823045cd722843f80b652d8e8e8736e56a1a269
+500b79e983a9047f32995d16502f6dcddee95d5b1c72ba2a654cd61c5e7901a1
+b37cad42b12f781490dda15c245cf6115ae220b3e08a6615eb477a629430addb
+ce11e46010af165222af7935df7e3d6e8f31e5479d7313ed75f1471965d04a7b
+5160dfd3af1714ac31dcc9e2e6c80af5535e625b221a7266d407c63dd102cb21
+aa8bc3be6f23688488e35663ddeaa46b4f61abd4ac1e20f563a0e94413f8829c
+176526dce5693a25f15eb761be28677ef170590b0a8964d723ca8c9bb1210676
+74870b35852a5b6cc383c38a6c7c82baf4091a77409d951a9d067e2eb6365bba
+83993efc263eb671fdb39c8258b87d483eeeca535c27fae7a0e761fdf55af9ca
+c20cf74cbfefaf5e385e6e12e86fc9b86e530d21d4d4fa7adf2b47fe79e110a0
+d1f26d0191d0af9b15c5de2d6f2ceb576784d064deb25ad08c763c8c1b65b356
+a29bc534c6d2871b1f79d0991f12be431f86ab8589a43c9665be123dbeafda59
+6075545253ba762b210dec20949c27f5145aae3dd218a71329b54d02766b8fbd
+5c707c3a959dd9451bb7ca14aa1b8c104538d8f4a23c15b608597093b28c793d
+16ad23b5c22dd7dee73dd267925a5b6f2508e8e4ba5ebef9617c6f3e9cf77f4f
+eeaf91ee53bc20262ea1633da576093d59fc736bafb42e8e0116aee6fc6dc036
+6f51ea6960954364fce6f008a96016281f65b8bdac517237cbd581dd3962bddb
+43d99123aab5b503d4597e1330e0f2c0a3d4ea671b5e7c559c515f91b4a64cff
+df5bc4aea04952b842fb5391a145b5ea3d6aff5eb88478786a54b103eb14ab88
+7adc8ca4c585834e776bf50fb7dc4749cb3a7b78fe3caa9b2c01aa134025f1c7
+bc82a67d5b0a06ab0e4a7f111a990f7d7191490bda6e0feeb84a2dce573bd7c7
+7fd1e9b9b9f62e3a4a8cbd14dbefb524a1774824f0f415a650f4615ebac7a808
+c4b677a44270149d1862f1af0b994bd7380998fc50f230a2151691047cf87920
+ba5fa3fb680b20a3535cf22b327f410816a1f33a88671785d0fea23a64e4f5a4
+7a667027332e406f50699d6e1d666665b3118b7f42623a0ad9b4372ebd713fc0
+21207315f4212081cb8178e741488e3a176d83e882b885bce15b8f583e9f6669
+c20ab1d82a292a378377c790aef4425c58bdac95cb4d7bbd3a58f43324b1d242
+2bc4dfcd281dc55e046217ec7f2b445fd88f8a4fdcd69c635cfa81e1004d804c
+de36316755b140ef3d4284847125240d96f9f225ad68e4f637e9d91fd65ccc18
+9570196e9add395ec3e3c18a9460379a9b49c188351f32196ea383415c8d603e
+280c80000a68b867309b1e8b2ef3ac12fceb8f77721a876d304af74407bca844
+c901355ab23260d49f32d79398c1eba652a9051b23a7c80b7363da2367720d35
+81ae727b7d250ecd3181ed36d2b55ed8917e908671d3de4013133977326998db
+a6ae9a9d1ca08340c036b02a402973096651ad7c8046d8c610d388ac7bd44652
+3aed416a47ae4837441e0a58b69611b2ac258f328ed8b40299f907d0bddeffe5
+c3c3ac1d20b9803ad3a3dc42a51be92eca615aeb2eea73cf25d04740aea5baa5
+a8ccf7a2161fd484fd499ea772249bf1e4388b94eba8eb803d973455eec36743
+a6841ed553a4a1e9e9c66c980a94eb0c995306aa2691348b155403deb663a543
+dcf7e0a36d9d04da051c1c1636763bb83c39aa16ed69c20b6992f5b443f8c284
+7b2b4be19bf5fa41b42490026cfcabe9dab5557227b56a7c3f647570631d192c
+f6fd9bef630e4a2cfe7c89c47475155cd9ba0841c38ee1ebce922c92edd019dd
+3a66794311ebf0ee392285ee838b53d1e03fa94901c2702811c64dc36d6e6cbc
+2fde739b660e76a1c4d59d9f04e4cb7821e5b7da96ef93ddbedde533bf5f0edd
+89109d698ca0a118f7439e690891974354c09431cfdd80d93088fac7c64419c9
+e1fd1c3c79fd8b84c3385318c2d770a91bbc63ceb4aeb911e7cf4e3a40d6e9b8
+5659ef53db68eb077968fc35cc1d1ab47e8bc031608f043831cc51282420449f
+beb794983571ade9d9e1fa21c16c52bc8601844d891bb93461eb299f7d1d17e7
+abcff9f222d00ec885f47780b36365d73675c8c0544b1b2cb2c3c141f921d2e3
+bfdfea523ac35ea689bd68bd2d02bb0d43a0e4ddad07d42838360b99294352e9
+579585a414cf9e441ffa7bddf54c07c76d0ace0c52f19a453fa412ab13f5db64
+0cdbc6f3af862dcc428b88b9b0c1d248d5bd87579383d73ba992ca9cedb29dc5
+99cdb9e805862ec637db3ea50cc7165a5fea0e75774bfb8a591f74c9c6da645a
+af247e559055d3436b89b9807a76fe2fb5714abd779623e659a9dfa01f9b002a
+208df90d67f282301f3844f081080c17b35446f6a931f60238ddfa69622a4eba
+0dceaf9c47445b4b22c3c351d148764ea57bd5f434fff8d31b92555f4fffabb6
+941c512df4836dfeac87a842084b53c5b83e8c70a7f706ed647105576b2e020d
+0581ec25af03d69dc6f65adee3e71b4d7074cd5d967eba655e64d4a67835acb5
+e6fa3f4eb20c6a4e13ba19c97e3160294bc3999242c475675e4458d1b64b95d4
+624e5124b4c5a2adabf303194a4bc59f59000f3a83bfc77dd71d0a7c43825e7a
+7cc4b57f82e258e8b494b868534f9616ad7a849f1968691f1b30e4996cf04cb1
+4483b56d0c9ff8e4e1215f2b241bd0080ecae254ea4e4f500f8cb5c11e649f3c
+940fe976b4835ab799ffa79567faea3205513eb80a03fe553a30fc1d9b5cfce8
+0f78bc8b6ae7bc50e2365069a0c1ae3760f69156d091de3c438266790770b4a8
+84cbed860e46511403aeea6b6fe3f1defa176808aba57858d58982e95d43a4b2
+dda3b468a9ba00248958cd9053795c8d3115753cad8fbf517a009d9040611a89
+8d38fdc7da3eef744ee96dd004dfc56412399022a9f89c4e536d7f0b924d9de7
+8c2374a100fae42fe97ea05fd04577885579b722a7fe17668824fad9a58b6c19
+92382ab919a8cadc529a12be0f3b73a8d8d30ce4d49156dc9f460f2883dfc90b
+23b8368414f35000c9aefb03fb6ac284fb980843282b63b79f31cb38dabf468e
+b4aa027880dd5ade0bb49e75fedac9c32b6a8f059e0250eaff4148feb6efe4ef
+07f938fa1a38427203b47a73ca69aabd4c8a0a3840251339515f6e221a47726a
+9a5a582478dcf653c0397db7516c95f1b8cc0d240e856cb325a4106d967f61d8
+368a66adf145282aeb9bd5c7d4f4742d788ab73504b86bfd2672cef6133ad4eb
+10e03e2e1572ecb7a2e704d7168a38eab825abf32bfd9611f613da119d77ad36
+4c7b3da4562191aa4c669f5e4b2e78e74a93b640da2bee64dcacc42c102c5a8f
+e67745a3f13638e0bb1160bb29f161bb15e00a198595ca2856249f22d46fded4
+341406af079a63c6b0b278ae22a355bd3b668da5bae7198678d9d7f5d109cedf
+cf080a66287c0ea6aa21fd828618c723fc7c41c2dceb6abc70e37c5c0db9fad2
+051dcdfd4b35a38affdcbf0f799f4fbf10a496a6130375e4b51ee595b9bf33ed
+7428f3d39e3f412673d4887091a6eadbfb322c710a81431ed7dc60d34f0b538f
+32a1c3d7f4a5306867f5691ac6baaeca842a4c5b9e64f2e51ceaf89b11bc1056
+dddeb4308916365f1977693d03a5840cff84f8bbb0538e65f22e41f2a42c012b
+03c8daffaaa728948c9040492645853cea160a5742d58c22d7932df72ce09fb3
+559a4631fd114344d21132f2659ca808dc00d85b55997e2038eae33c374ffef0
+af51f80ad53fc4d01a23b43c0b0c47d236d0ed8d219299f63f45670ca8ed4eeb
+b61af3ed189b3a7ec85847ad976485163216ac97679f1cd64e70e93fdcd17441
+e2882b7818dee164e98b7f9eed396afcf78581e78f3d7b2162c50b13141b47b0
+359ebb2911507f84e05594378ed6a6a1695d764f26676af87626bdfe08e831c6
+7a4323ad4d90a26bbd57b2b5d0c4baa48f1ea52516eceb0b6b65fede86202552
+909654f048f73150e983188d17ed94151dacc316c12e3319b126414575c76850
+e66101bff3d0570d9883975a9949ab8522b8f08fa161813f278244b137049560
+f6707bff4e928405db753d1092843830a194cf53457d312dabb739b059053d8b
+85f5fd448e39c69cbc09d2c42a98ed54945de8776576d5f035f27d1956f0d3fd
+0b78ff7879f430c190fe004abec29e5f3bf746473e3fb5e549b6cf070617e3cf
+f29d985d7376f20eb7c280148f41d12af32a21cc03392df8b4fba4b793da47cb
+4fb550a97710ee49184bb5500fe67815c9feedb5f403d914ef849d3e510c1b32
+902257ec3d194d16576227a18d020225d417bdfef3de8fbc02891dae3c0c235d
+7b3303bee8214dba809642452c10dd70410233510434b848668fdb825f8d4f39
+20e6b47cb5ece44de5b85fad7c7d15d3c112d6450c087e3ece9654a780c8c1af
+d9709776768728f006cb2a396b15e57af2419dd223a22378eba369e717ba9439
+4f7807279ea4ab44e31d2767f83aa2830746b9921e5b8b76c53681192ab0e257
+6963381afa51fa455868e3d633b843f57148089375ce2d0211e05de1a7cbfc1d
+1d004b9b9e8688b71a316001a9df8e3cf205502785dfbc32d9d70cb2c544d337
+e8621aa62e20124809cc52a6ad8a80ff9c01bdee6830070f762b34708f7e0f48
+3590ba8fbec7449aacf0aff522932f8cf93d650e9481356bff4288f6e8d5139a
+6153af45c45989bf7c0bebfe2de7b043c09f959bac75a3cf876b1c91d6d5e633
+3987dfe8761d4473cdac1d03660872e6fc4a7abcb37553f3e292b0a7a25ccc90
+6aea76455e19e1edbc8cdbd8d401c13c32842b3c7d00bf3ed2cf3b977e8c1e35
+149dc625b75d9e4f81201f5e23fdf025a5b7891c636d70f256009d4d6783512b
+5480428a440977394a243a90d3dc2e6ea99cc6d6053200451bee39f06d59ecc6
+ef69a68f6159b2d3be2408caf12680ef709f848a522a36a619664b7b1ac5a9bd
+4f9b9105b760364d775287ef52ac466bb7edf8f1fee2b241ba2200da9ce35bd7
+bc3df4d86530ad0e66ea765457fe2d2a6ce450cdaadd6d1bc0c60bc2183bfc28
+f65a864a0a8d7e472867a26d9bf2f502efbe37aded50df5649f219406fefabf8
+9b9b12ec1cd79a6f05361a2e81b7efaa12a71805c1798df334acf2f36d5b6075
+5ec2258b23d509b6120cfcf1cddf6ace1aada3dc7b2aec7a8f678c03b205df64
+fe96bf18c4d6ba2fe74894dbca304408ddd476a79f2e4dbd9fd3a90aa3fefa92
+890360f1c45337ec8ca721b984bc3e5dad4a3417119a3b230a737d707cbe350b
+809262680bf6165324dc
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMITT10
+%!PS-AdobeFont-1.1: CMITT10 1.0
+%%CreationDate: 1991 Aug 18 17:48:50
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMITT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMITT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 164 /Lambda put
+dup 174 /arrowup put
+dup 175 /arrowdown put
+dup 176 /quotesingle put
+dup 177 /exclamdown put
+dup 178 /questiondown put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 98 /b put
+dup 105 /i put
+dup 108 /l put
+readonly def
+/FontBBox{11 -233 669 696}readonly def
+/UniqueXX 5000779 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cdbafa8977dcfa841fdff9afd3a7a7c7905c219
+28506d4d50a72fd1db1b54a855775831bec099a567f3f795b812ed5e145213c6
+d5d27f9ec6709245e9e4068a6606742aef616dfcfc9e0b9af7e687fdcda43c51
+81a08d6ab72b86fb38756fec992191c1b3fd151c417125d4777f0bd0c57d2959
+0db35f1e9e27945498a3f7dd60bc54d72bc8a573457c16796914029dc282aaea
+fdaa4b1439f4125add4b7399be6fc68e4d5a766cbe5ddd161180d4e1ee3c95d8
+64e79fd0c65b8f459336e99827454d662768df3e6c1c3647b00b70b5f96a3944
+b7a197be0f58a1e995a77221bd374a40159d81c7196c94e8af7c3392255ee6dd
+0663e05998ff917a62d635ca45e952252342507d6b4d28833c7809c1b88400ea
+50c652efc339a66355c8017651fd24d9a5cc51ecb55bbe64ea523b094332c832
+52f7b426909808ae113c1e5601b0e081fa8e7777ab93b42207100f43abbb9ce4
+ebbf51e584299a06fbea62b8ad3632ff0f281ebf9503ba6b8ae4f3b57f650388
+df63eea9e1ef1e08f7a2c6e4f5cae2c4dc7b42726a6ea6b7592e9355a01fe517
+12264a713ba83c057cb5f663045791d4c7598b246cd3b8466a1130249568e95d
+ee2c0b4abfabc8e362b78d9fdc025fc19cdf1887997d32fd1487cf2bf0ccc966
+319e3e3cf4add90ab51f0c3e918a00e5726ee346ae410ec3ce90404580c47572
+35b3ec4f5ddf23dd43224d90d8dc932ec7f0acfbbcdaf80f261482ea4a2a2644
+129c27fb4b44ba8c78d23273122cbf1ca49ae879ddeb6991b87ce2ff25c655e6
+b5ad950028de17f6628f9eec6842b79f69c84b6c55ae423714e622eb4e47f9fb
+c30a71808d70b89cc1a9b60f0ef21ad074a63d38344446947fd832fd3398ef08
+2fdadfde29efb744c49ed00bf523bc1493a7603d88fa6def9be53ec4c7b3ec22
+8c48bd305ffb356141d5b64a0f237118105fdc9af291c2c3d1b8ab8985196964
+03cd48d38852b51fdee1e3e6569df16a4cfb699fabe21733b3e8d93bb201cfc3
+3983776fa726be6d4be3a4e84a6f840037665857a0735cac22e3279bd524e1dd
+dea1f2d9a2185d8633c876f5c5d517d88986e45dab0a42ce2d6cb0b2688a390e
+c03542be3fe340be86949ba7dd9c3698b9888250c38544843beaf477beed64d9
+ee9f9d4444ce232a2f433210f2071ecb948f5588ef53ecb117122d477f3e4493
+38a34e4133c82e1c455cb90ff248e83d47e55dce5afa127d96e45d7a30662f66
+2add3e8cf922b3f5a6392b07c766133808e533190e431cf96f64564b989c1f3f
+6be74aa9de456f729a22712e481ae570d39ec9d0f21b5254f3bfbc76ce0cf3d6
+4cb58f014dec2c172a41e7760d52af1647cfd6366c933c0ecf70e66962cb3a2f
+2419ffc92189d8b8b2b57e1077c6bfbbe7cae836f13063376fadf9f43e18bf10
+e7bdf30ccb3c5eb21244de62d09a83591f897be1f996f301f66acf062de08c4b
+e086e4e2adcb853d956a1780c732ed5f15964a8694551cbe46630f430809bacd
+6870364360d7dceedcb890b930675ce52322a1bce5db9969ecff37ff60bfee9c
+fb01dace3e429e8a251127dd85457033dd4db18dbb2c6e3f26f75190df711974
+fd2fc32031d30c8b5fc500a9374f2902ba3fb1aaa28d769d2544020873d2c927
+88f20ef5a4dccee433dc5ff12e03565ee675fa7e9e514982450ee962ea7a395b
+2cdb89642abe369946ed7b3c20987b0160834ac041a6fa732166b7ffbb28992f
+9e1adf37550e964aad4c380cf33939f18e0b5303249ba7f14aa0da265d59952a
+5be05cfbdc407f2c03495b752cfa2715fcad8cf45018de172592ecb58ce66cdc
+3bda5cc5c2e6fd3adec718d852efce578ff2a1e32d4dc4592ccfc2ca1c60adf3
+2d690fd18780ef09e838b89dec152ca2f4454b8ab69ceae8efe87eb6cff2d317
+305ec15133a02513064cd137b2dfb89ba7ebe2ad2afc7940dba40b08d75e35f6
+2c19ccd1e694d09ea2533d8aaa15f19cbce5955b0af1aa043ca7c5ce6fc0350e
+ba8a9a5e1e4482dc031571790585d67b2c8275ac335c588fca56e8e2ed975d26
+b41ceb8cbfff6047b51dc7a0fc3e47aed73f57df44f8c0381d1d0f11a7768203
+5ad4339db0f9ca2a9f69be2d5f8eaa30f2720c900e061368ec2c0a34a75489a4
+c356bb42f372ab74e6d96d5ed7db271715c231664c6ab38019e8bf42331ad6d8
+7a7b96f58e6b3cfef0af62d7c2de13c72c95953df3453ef4f2c2e3cc1b626d1b
+9d1b053c1a4316d7308fb491d7ec6369daf762a8fe054cde867d3f73c974b95a
+4cbfe1da2259924f0ef1c22d5e7d7fcfc90592b1fd2adcaa22f53d996bd8d6d3
+3d205af67ed6417661d46bcae23b490de3582c8b4d9934f2ec841ee6b12283a4
+e4702c5bdd240e78b04c5cb771d1a3a5dc3ac0697a605f2d0c3ee70e5c66c530
+a76a35ab3e5c6d9254ce9f3e45469de56d19e51972efbfe03b46243cd7768d88
+32e227a73f33efd5321c3c09e9f3dec86507e89be219fdedf2048cab94ce0432
+dc68333ae17fcc81778111e0b41a263432a265313b2ae882a9df565c7ccb0b89
+636ae832d2458a66e523465ce6c25897f22ab9f8156847c770b2b64906f7a3bd
+80f70e77571377d94136c7743d86e86903dc8687fa8d82efe0d54f8bd2b4efa0
+9d5537782f7890804ab0c24f2dffc4cc090015d519a1a1ae31139c726886ea8e
+cbd456f89024a42fae548dbb0a0473d3f823e4e829553b74e88d1656623ed676
+dfe26667231cace1c65f5ed41fcb7e523d1cda46388a5350f172470f531f5160
+aa93cdf749dca31e526264f48273f6b89a116423561e58cdcd361292d057ef09
+6836a31c71336ca6a60f1789cc168bce56191d06e637bcf123d92c2c36d31e15
+a3e1b3fdb226d8fcf184ac283c16de6b022b2bedebd3544f18f7b017b70469af
+1de5e9473b4bec6cda6cf81db4879428b3d1b600afb96e239a5ccb594fafc492
+c59fbcfdd9d083c23543bb7b584410e82641a1943c21ec6715c25259279dbae7
+62fd02443cbb2821bd270f32d3d24f38d74db51b702fa30f62d9d7742cb57cd6
+8a0ad72351057c0e7f5ab25bf0149222a29a30436cb0baa624fd2cf4a1557cc6
+a1a7d58745b752d75ed084ab87995c9fc94dc959040fa9a40d7659cb7350279f
+d9595b249942727ce72b0e0dba4b3886bd8f150ed5527c39087bb2cbbc69234b
+5d1bb8f38b19889acad1c5c922845b18e0198728795fe28d7b5cacf1911dbcc1
+49f1e2ce4bc9c20b9ac00bbaff748f040781b7f622c08b6ba0b6278a32f15bcb
+602c7b4ab5af5f0e53dbc1301a31292fd3576fb4a1b2d58c36c2fdc1fcf91afd
+a4fb342d1bc23e0f7c42f31ba20c6fc36eab9118b1d6aaad5452793bdfb9e5c8
+a7a925e257d57cf26373f22c730d76b004ae84fd3f81eaef9bf3eddc31b3ba0d
+537f355c814e6c996177abf2c46fab8ef09a6412d1645bb2383de245eae6fcff
+50eb5c79f699f9439985cb576e1958910ad7755963ce207d21135eae0a72d070
+d90dc99936f70a6702bf04e9f0eaf82c7f8a56f298a535539d095c0bf37380af
+6507c318bf2ef437442a96e3be7ed65b55e2b02a3cdfacc0efa58b4b0343034f
+1513434b6002ff8331bade25a73f6d7a4f59fba62e387dbe4f1a0f127f1e4cbf
+d9f9acd29e287692ae19c04caec1606cc281288bdc40ecb7b2a2ed7f1c28b81f
+6aaf8c48bed770ca7dabca77074ab8316d3028b464b2278b3117bf6408d805d3
+5395ba59b5e0fe88b923165cd1205447599098514394925b60c5589bd6e1aa36
+874168998208f9635b1e4a927a4d36f8e514b332aea601d0aeb7ce9c0213802a
+d8559e1ff376459d5e43ddf7bf8773bd8cad7be6b166c9eb9cf63c8f813f3992
+109e1f1cfa817dca22f4d50902811441829dbebefdf5fed73d5f9466a6369ea8
+58a0eb84f4bd864d07bcae0f8188429bcb424a1287a39fc4b6203357d4f89928
+793eaa7b10747bf266ce0e77a0e98a6add170bcd10d121afb904783f1c76c382
+db1c0509c46c5890ef03567a5e37093015895a0c5074e6cb79621b4fcae42fed
+ddf6237d44d44d9bdef23f2dd6d91988ac3024a776373fc25f11f5d1bd49da00
+e89e04d1818b7a4be60ff741712a7fe2da1f70542807981be9fcb2c94ef81b73
+22adeae06ca542e06ae9da768488107295e151f48424c9cbbaa328f0d5522eab
+e056e9a7a351649f097773be64f697aa892f7dd01d7765808101c1ba1eb6be61
+04d05fadc404b45a5001b2e48617d01afa44ec92683e5d0aab0d3bb20645041f
+dac07aaa0c4fa3c63270fd0e4f103d443531bea5ac0249835f4b0e318ce0612d
+8221a38b71cdc88fcfb2ff94efc4906e9d3be68161a92077a8a3509b28e8c93a
+19cbd278f0cb6ab1182b864a332c38e061c80fd592399c81af01403d64a0e1b2
+5237b78ec58f36113bbae48c9fba25d556762ab56a892de0dc2fe1cf883b3e0e
+6e1606c51c6efe34c86be6372c088cc485b6cba65c758b75d5573dd076b07514
+1084e1d1c1376c6f7f43cdb3e5223ae39e06989eb32bb7d40508ceb1f074fe7f
+2fd034080ad294142198eeab1a2e206ab6189e9acb940da3eba2c5a1b8c22057
+db419d81db7434c9e6e13dd2ecfa8571d65dff8a71a2306c1eb2e880ed05ea7c
+b59a5eb0d5d5d76fdc95b191c250d3816e1b9c39f47369ba576f243f4f5eb296
+cb72acbbc54477c6fb27027aaeee14335e9bcbeab31eecb26a4a8393c318a4e2
+00f759163857b2efc9d4843a2f7a3b2daa6d4f2a43ef2e41c54c50b609cf3bb5
+fcecee7ad2c5398a28a0f62dd4d0f6db7f21cf4d9d024453069b41028999c7dd
+5e115d6caaa0286e9e4c86d2e0ab7b2f16cfe14b73fd6c699a84a8c392dd521b
+c71f9a52186864d88b68092d41557792064aa3ea76162c01b47c36b2110b6132
+bc9e11f46d6c272119032c04c14eadca8b72c57fa6fd2d97977ec82246eec27c
+b8f31d1d801c93a4a708643416756c68aa2051ffef892740992e2ab4c22dddb4
+5d63c292b8ee10cbf667b7b448714d657e08b49a7874fd68487874542a4971d6
+69b8959d0d9eb64e51010c4f1e00d249789d1d80a99bccb1e2f2ebcaa1918890
+7914ca2a78c908
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+dup 162 /periodcentered put
+dup 163 /multiply put
+dup 164 /asteriskmath put
+dup 174 /circledivide put
+dup 175 /circledot put
+dup 176 /circlecopyrt put
+dup 177 /openbullet put
+dup 178 /bullet put
+dup 179 /equivasymptotic put
+dup 180 /equivalence put
+dup 181 /reflexsubset put
+dup 182 /reflexsuperset put
+dup 183 /lessequal put
+dup 184 /greaterequal put
+dup 185 /precedesequal put
+dup 186 /followsequal put
+dup 187 /similar put
+dup 188 /approxequal put
+dup 189 /propersubset put
+dup 190 /propersuperset put
+dup 191 /lessmuch put
+dup 195 /arrowleft put
+dup 49 /infinity put
+dup 50 /element put
+dup 54 /negationslash put
+dup 102 /braceleft put
+dup 103 /braceright put
+dup 106 /bar put
+dup 107 /bardbl put
+dup 112 /radical put
+dup 120 /section put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+/UniqueXX 5000820 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f67052788e6703bb5ee49533870bca1f113ad8
+3750d597b842d8d96c423ba1273ddd32f3a54a912a443fcd44f7c3a6fe3956b0
+aa1e784aaec6fce08dae0c76da9d0a3eba57b98a6233d9e9f0c3f00fcc6b2c6a
+9ba23af389e6dfff4efec3de05d6276c6be417703ce508377f25960ef4ed83b4
+9b01b873f3a639ce00f356229b6477a081933fef3bb80e2b9dffa7f75567b1fa
+4d739b772f8d674e567534c6c5bbf1cf615372be20b18472f7aa58be8c216dbd
+df81cc0a86b6d8318ca68fe22c8af13b54d7576fe4ca5a7af9005ea5cc4edb79
+c0ab668e4fec4b7f5a9eb5f0e4c088cd818ecc4feb4b40ec8bd2981bf2336074
+b64c4300265fd2347a3a851a9cb00aa30bbb57598cca6485e51c30bb78bf8307
+1bcb3fea6ce14383cb382f324afa02d18cff3ac22b494d3d02302ee13ec9ffff
+860b0bdac4c968e9168d001095bafd61afec9a5a23e727abaf5b193f527df2af
+10123a3aad31cf3d8b4bb2e32a699afcfdd2612aa694bbd53a6ea0bf3ec61b47
+ff905e5e898717c40328643d610218c2fee0b1ab6bea10870a7acf2b59d179b5
+d0d0643d73bd771d34e998f2a43766fb826480f5c00a787818e8ed460612c5d2
+86c799428a405262e066668b2c1070989d5c6828e0ebd20259d1535c76dbf996
+7bee994ca9546d3a52fed6cad0ddeaeafc4b4ddaaf8b0c8298f72ff9ff37111b
+5c7f64e20651fab5c678d2dc91977aef35de0e5b949f9361320a425125932193
+d6281f91ce97ac30c72c4bb921c6e820e4a68a18121577d7c5179c01872582a7
+5244018a589b04c718e7a244fa3b7740d38fb387070ca3239eb976b717a8fd7a
+9df0472f8a261ea6748879c812fd3a8702ebd48f80e74da386b978c36b513e50
+383f5f58dd744a97bd5181b818167db01c7d2cc00c6f136a4e1d96eb254de0ff
+299ed39e76704545fe7fb523d98deb09cd68bdfa23598bdbb178bfad9095cf62
+3610aea84b94426464e1c8d44e35ddcc657443f9baab5b66c8ce8a13e71deb3c
+1eab8cd381ef62ff2b3a44f9edfd71a7383e9dd302ab6780700d15da46d5e560
+3c8623b7ee1d1f3bdd144343d0fb1d3d627e2b348b1904efe15c9095afa0e173
+5d9c83bb2a39a85105ffc712638c6579afc43c312c6257e9245f579e3a6852b3
+a6bd65f045a6dfe5268f2d82e16f3a8ec387a6598a0604011f0b31a6c8f8d1a1
+a55aae60a0fb9031bada6587344f7f153e676a59464b771418b5cec216d68061
+cca1bda28304761ed64e40ddac4824950f7c9814226aad3bf63eec50a2ab307c
+55682eb7c3d90dacdd555af3d7b43490c80624dc915beb2eda933ea28a353980
+883b5613a205d0099d94fd784bb0dc1ff5d1952948de2abdbdfea470d87ffeab
+1b5c6f2414463c3a07ded9b23bc18f9259766bf5c5b02ef205d85aea1fdffb97
+8e4307f75d06a4a06a2d8027cb7dc7237ae9064ca57a90303adc85d16e110d21
+6904dc368c74086395157b52b37dd93b5778a0ac19e12addb6df026d44dbe81e
+0d15d7885524e80ae8a084f27d6575d32f1a8db13e80afa37f0727bd18dcfbcc
+832946bceb2930c62179c42822458d7bd63f52d115af03fccf465cf5a506bfa1
+e342e1086b9d626e5a5ec4e0d3047e5149c6eff2b8c4493c9c75db788b66a0ec
+e917723433ebacc9ce20e3dadda58b99165386d2ba409955009c0f5fb4bb3820
+bff0d5e376df3afe987403733fe1d3d22ba5944d7fe67274f2399b06b5b0df83
+49f25f1dc88acb09e9b912ff9b39e95eb23d7023e17c714a537464e0b1ff8af7
+ada64df70b30a4958afe7e26aa109ae9d0a56e66e499104baaa56b13ee986258
+3a7efd98fc057e137df83b4c6b055dc3ef6a2b73c852e07e21436f08a9d5a219
+ec60dace22029458d68ea36a61de4647777b4e0f7f50cd08dba39b9affdec6ce
+41e1660fda1a9022c7ac7979737ec06d982dda0e1a6751741bed644fcbd09486
+ba8ace4f6e3c71216270826fe45c23e8ddb26808956cf3f0dc7888e2a93d3cd8
+cc8d15b0b20ac873742d19a0a2f9c3ace75fb445933c8033d012040b94547a23
+3511bc601020de038bb4881810ee37cd093de13abdd6a72d1a9d258f010d109d
+492ef30ec2aa50fd1163d35717ab7df6a1dcd94d2f1e5a8484131f2676511931
+2dd1e89cb121d45491a682b2277949f6e416be81e4ff4077a37234c5d0903322
+80ce82977b5037cdac0c58a4f45f9be5ff43b10dd8ce66a387db7e3772d96a8b
+170af5803d0c9aac690fa3dbd7b9c21780c0d43d745d978703132bc2f0e4de08
+20f971afdf3784bb5e122e40261d1de51dca6d16693aba9711d5c29e93947be2
+e4c8b9e5d5729f3b8152de3ffcd80e38c0069e425ce1977304eaaab9bfee503c
+f478e127221821e818c7202285d8ed14187b1fa513a586c3cb7ee5c5312633fa
+88f67210d278c820e430fc5490072f08798ff01de62b7f0a5ad1930c48c45f3d
+f9cd5564cfebe22badbe72fbe3d0f597a1a15d80ac87ff856ddb49f4a6130be9
+164db0c60765981d2041838e405bf11847439f1fda7cda2753cd8bb194af36b6
+ca4aa278a7aa2b20c47ce23aed3a327ec1b34304535a7b0dca3e11955336e24f
+d62567fa21ca4746bcdb74209bbfb22bba1d0b55ac366048eaf0afe48d2a09a8
+0338b39b3b38226e97894ecca74c78b43c3c3daca105151935748da98b66a095
+1fc3fd33fcc1476197d8a746bfdf588dbdd976849b6858f51e10ce5a6aaa2d0a
+688bb6f13e51f364d8902ebd709156e955ad7d8b425d1b739e0c3bf3d82c3e1d
+e8e9df262ee483dddbce902f27cb916155912f0bd87e8aa46352d65c5fa3c2a9
+0ec6fc0f2abdf8bed24279f40abdca3143df0056d219212ee2efff3a5bbb302d
+4c6d211ec4b38717c69f6bcbc5cd4ee4d37d6f53c1c80c46acf675ee6f57abc8
+364c3644a04be41f748d8891c70578c79bbad24755b362d928766a2ed4fbe330
+fdc565e805859783b0eeb1b8d77fcbcbc3858f1be317b1293b83667473dd7fa9
+f8f06d9508cdf0c1942e353f1535782104ba63649138c07c8650e11aaa1b4f71
+cfdd83685c44f42cac1492864897f5bfc8ac1b30ba143724c2a050a54cfb8ba4
+cc9881040d22f7f0ff77d8d2ee8ed4d1320a01067306cfc26a11eefa685fa63d
+46c251373f8c1e4eaee174de80aeeba61646e76d689565a2b79b409a2850957b
+c793019ba07234bdace973dc3726be380f9e9d286ad25cf6d2ca54241339c7b5
+01e30faa1b6e2045739917c4657f23b91de4c2474563696a39497ab74939c75e
+46ad9a6f5004852ff1d64f7a04d6226c03265bc8183140e449af904e0adac702
+c8b0e66ecb5861a220f2de00c067bb4fe0145ae20514b700b9ff3e66d821c248
+bd67bec9e88ec897b2f465b62be89b25b58cee20e5cad5ccb546897167ec40d9
+4424e7f72d8ae9555d5e8d9e3f293e2fa9aa85d79c5aa2d162aa782276647a41
+37e44c14174187f94246549bbcaf916ac5aef1d69c341e5ae011e1f75b41bd46
+a9ad7043bae9670a92b6caa5d87998d677117144a340532840524706d25ef0f8
+182e6056749b39595bee6d7070609cb3ac632ab95e933e5223615fcbf689caf2
+69fa456d15881100101a1e6e1ccee28b5fe9d0d16c47602055734c45a1f92617
+2befa49f1ebbe5541170a732cc95fd25d58f7f1aedc308c3bdd995eecef3b61d
+f5cb20e3c48c2342fc17896f30a28616fe935ac6b7dfd023b43bcd97dc1f57ef
+5bd9aca45faa3bf1a672e65cdc06a22465c72ced1287427b92fac602c723eeea
+3a1bed7b2e154fc521f5cbaa8069267e68a97478b878b64f49f62b7d1d8f6963
+119e68a404f08e6ef6ca0289039031422b3d04e618a778f5d44964de4423e8a0
+fcb140977ac35ac681a7b7fad78039d27037486fd365ba96bca0041df5d6ea8e
+54e02940ac48b6a4fb79af309aed1f75eb0f502dd0b2c41e249333d9e9a8ff86
+e2368a8ddf233fc91a770cf990b6eaacfdaa2932d517006c10d02017e44080f4
+050fbefe05bdbf9929d3048b4258b4dc2c189120a829763830412d3fd435a523
+d916b0aee53756f2f309d517d155cd610597fa89663bd66117ca26fb02251dcb
+281a87a2957cd4076bf71b02ed44c66eadd664a646360edec5d97c684e9f8d4b
+eacb797529b8d566e09fcce75f0f85001809e8b43b2cc7f45644f35d02ebafb8
+4d0785302f4425763a698d8fb755fa7acee80d6bfb67a4af09e6cbca30f68fdd
+d2931519f681353118ac3092f44f8f6d5b7c5446a6ce18ba951fa4c9d7047741
+60679735f1ef5798ed4ecf8aec1db4f125d191dfb426c8d23f965584655be4aa
+3e3633300a49475a7d928bb5419b68f3fe376849846537efb23d54d89f0fb225
+3d05749b7acda4c438bf0e8973f9cd249f631295933d079a73d822d30663a654
+596afdcabeaa47be3d0e31a50fed215e0db011863a8c24cbc635fe18f44725b3
+e1962bfd6452dbcb3ef9d1b5793d7b8434c85bf499185b65ff03e3715f3ce068
+e4118867fb4ba485f0ddd78d648851dc417bc14cb7ace049093774ab9bd08c6d
+954be5670b96acf40febb6211c8c89337983205214e166f5a8d6fdb33ca22acc
+8ac81b028b10b3040b729805e52bb85db23a49bb5eee0e3674a24bd9fafcdb62
+c973d1fc4bfcfdc982b915752ce69ab27794264a2c48620b7c2f6971534c3bd4
+783d17c50830a485c1de2b1356cad5857d101004e7e4ce5ae82b3e247057855d
+1b428f687f9f1ccbaee59255c3289d7cbda16d04a9f7ec8e83edbe909a46e30d
+a8e5ff92ccbbb3ca243c0e7beb8d268bc1a96098ffabba6661b90cdf37468cf5
+e15c7694cbfc74c7962f42bd1fc13ccaf085a57508cf18164f52639c5658e97b
+2c9ebc9c6acdfe9423a4d9621afb4b094d3f5ab91c3983f874556b0bcd45fcb5
+9cd1d3c01c4635f3ffd203f9a0437ebf321782f1f1113f44f6912af4812368a6
+4940c475ba1ded580fcef74000538aae3d2e2c486e3d522adc89cf0a6b01b1a4
+3e63d42af88c02aefb3a4aad6219b9a61a09690829466f1cbf531b89a6c78a38
+1a25d297f154aaaa6463c3b2a6f55caa27d75f938e269c82a816771b890727aa
+975e72fefb08e93eeb8061d5553c2991041c30a4a6c20a20f40f9109a99b5608
+8c265462a41623e54ac337d0c6c90922bf714dc1270fdd0a5ae917d57c07a8dc
+8309bb0864c6b2e56f6dbdcdbb76ac230e891aa5bc95dd5982c7c59f57b995a8
+8a0c9faa264d6d965b9a836efd202d2d67cda3310b2fba6074f2990c4c3eb12e
+99aa772a57f85662148ee150549c2130e23eda44521cb80e76f684543c5bc7d7
+5e761fc0fcf66ccd536b34f3331e0592a5f987339f0996cd05fc04a9781f1be1
+7f399799a3a6783df4a969c074e147bf8ee7ad362acf438d6ef3d6c264b787ed
+dc40f75a40071f9cee03bdf7a770472e61b68421b1b7825e3637f0c7d400fac3
+4372634af747e55c13ee26e6307e52150b9995c202bced00d0d730b5be92a2d5
+c5fb7511a96df8185200dcad613afb088dbf85c3767b439af1e3652c1450612a
+84292ca6f8bb21ed2079469edabed10d19222ae5955d4ce08f769d295bfa7769
+92d87f9f23778f7637e5783f3c25ad1314be4fbbf4a2e75c612c1cda7e1a09b8
+2546e0e16f6a4b4e73e16d3e61f8a2c93195b11c002fa0f490f3b9252fef7877
+c2632ad700151056313618f2a321f19eb9c9d7071956b3a8f7bb66f607a7a104
+571110cb857f8c623b1f8759aa6139de7076d3a46082a22609a1a8aea75fe450
+8233b73554e532d2b8d62e26c09c357948e50edd0f63cbd578d3327ca3cc9a70
+b03c754707e7cd2839b6f6693a453bd81df1782862424c1290e8928d4b2b80ce
+6d6ecf706478e27e79219cd788d4ad5b3366847f49e8a831714ea8805c9c4c8a
+cc7f66889ce509e3ac462a2149ab1000ba714ad42e699e99556448d79c16877a
+1b1ce7f9426f1c12c1b5e237eba5294d0a260d6c2828d6d30044e902b4882223
+f8d73bafb8d91b2174eedb7f9b75fb407100e5baefa93c423a27dec1662390b1
+f255f10b3b586e357876beb7350ba24ebba84768f549de18713cee15789890c6
+26f844e1af1b78384b6be4d882c0fb271fc953fe511b43bf33a708ec35481c1c
+fae185b7f759eb6d889748351307ba645ed30c156dc384206be9df706ad6893a
+0f83da1d0d0dc048ce1f9c0b73333c12b43a3768dbec6134e124d6b8634460e9
+e63d9dac79648ce95a31ff63c9682ed37e231f59f2c2a149a78aef27b0ce41f3
+30f7346a4d7969122c6f7eb8415bff08c2efaaf2942e5485c317de197a7df573
+fb42b7878e6dd1bb2ebee83f55027a72c5f3ab9df264afde9e8a579ceb67e415
+60dbf25cd5652fca77acf3bc6a3dbce673e4d4cbc2cc60300cf326e8293118fc
+3e5932cd9d258350cd99deea98e99c1cc5d17d99c80c42bf0916a20de723537a
+743591961b15c008589a433376b1d8b974e5945218ac870212c6443f1c387b85
+3a872d319f62d0d091970c3171affb92d25f35c084b6e7252a2527f050c817f0
+500b6d2f15678a629c576ca604bef0818a966c038642de31160cbf856c38ee2d
+524e4f16300838d5ffe362ddbe75ca27500079efbb029206dd6892b6c4c61783
+921114c89911a0e591e44fa51435e0de717859301fc33612c9be53462f825171
+952708ebafcc4b1f4a613c9d50e71296bf7290622808db26650cbfef0e8731c2
+b22a65cd5413384392a0b24a821aa67f023f96bbd0f3289eff0e1ec29b2b32b7
+aec8b405fc4c51e33b0d4968511167febfa46ec063e224696d44feadfe422813
+bd8a192a861cd7f38c25e1a46101fee85b753607d67ce76d39d29854e41ce6de
+04b9197ad70f1b3dd1277edd02ce40b4e6460b37a7747fca07e1c30d63aaeb07
+fbd51d497a03b83f492e060fdbc5a2e277b2d140d233b53b27a52f024c427c8f
+e7de307dd240204660484fede4cd613f5e7cdf2b66a1137165cfd87db51a8ad2
+aa1b13b42f6244aef509dd7cb172722e18cb9a5d03df4ca5d7046a071ceb579b
+78f813ee375b60146502ffc008215ad7cf093584388d95854cdbe83964da0770
+9457bd27957b3eb41fae5846bd3ff460965c980ad6fb624ba844265b49ff4ccf
+98d7133693b89cd21d5334e3a90619ea2f0848003cbc4521bffa285b22917c72
+8d3df327b8acc9d2e442b821b134410353e435dddb4ac1af5dfce0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+/UniqueXX 5000769 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be79011d1f5bfae5c1f476ee6f05eb1d2caeb
+269958b194521197b312fcced4867f3c8fbd030bd715d8ffda1dcd454b174e7a
+1a97b59fe770e67702519d9d9b23d61ac08424d555242a8ca08c49aef300945d
+99b999a79ce74804ae6bfde623f4463371442f6523a5f6ce19c839a708c02513
+2e22c696c8ccade45680e5197189d0f98e7f0d5f955e353970b392cf530a68cc
+56b0035ddfbf206c3074beeb0739dcbca272a6e629fb7aea2c5ba7bae50c7b4c
+a595df78200c352997ec3ee564df229fbb5473f5e8ccb1cc0153e9a7e299a8ea
+a29b69d1b622b1f0cffc58291248759607d91150cb0651120970dc9f743bebef
+44f6ae92facec57658999c8bf01f60611560043962c0695e1bb87d090e0fdaab
+659d6557208a660be9aeef8ae55f71b8bc76394d792967e41bd8023b6e7f8c3d
+9987d5e54c53bf2bbb32855b946473b44833bd78873df8e4c7e668ffff25aabb
+8da4148f744b9d0524d6cb8281247b3052cc5d66f3f1bcf8a56a3fb446ea587b
+d8be30257652cee035628aeddfd8283b5ad21b8b1480ad24d898970ac8a1e33e
+543ce4e3c48f9ee621c5ce3e8ae930f890011b630866c988606068d9e92396eb
+f51bb3db204505fc3d09d4701ac703a14d92bbfe27bd7411b363a88e33a8e9a8
+025ac31f21e73dc52b333b918d0b1270c54873a490222d041a66e0192612be6d
+2c88958a8f70c10390146ee5091df020ab97675e8e6901226eed50125d36c221
+be8f20647442444b13f0325f899b8fa15e1414119b45f920f73dc3496f6de0dd
+4418a1181e791b49a52866c79d377494beff7f1b444111bca4fc2bfb7279fa29
+38fa9be2de762f20d470813c4ee0034371812efb9f87014528b7a09be4f01f1f
+84de922d6c66d7f6ff96a49233b2396d9c19b85b132ff565893ad3a11ddb88e4
+69fc1decd51e5b3fadfd1e3e50914839dee5d5d2b63f83e8a7953833efe2492a
+30314f32e2bd9a758f2abda8107618eef886f13905eece29e3a0267fa506a772
+71c89450b6cb4320ebeaddacb7184535a3ce492d881f8a690d5f1e900e975cb1
+18aa41e008481e850dd094063e179d7b5bd9bc2d5d7b8b6385a53963c6970e2d
+6a7505f4f27ddee2a3ffe7dd87f660696701cacf1b25da55e21a4cbf929e335c
+5ea27a16e2ecf4870cc18564747775f3e46054ecd4cf64112ed5ad424b1aeeef
+5b38ed01693ef088222c686189f0585c4b9f17e050ab82d43da7b107bea4de0c
+29377cc5bdd26a70c55530ffd9c23978445a9943296fef59ff313ad2035eb643
+baf38554e84cb104bb2c75f4def5461ff3e85ab85312cf22681b97c0b96a4fa3
+069763d96cb88ff1977a02404a5f150924c42722efec611c10a83588bd488d53
+d0666a74709b69116fc9e3e22fe6f3e94fbc40fd22be13c01dd1bb1cc4487a64
+7db1fdf57585f758a9486c7ef62ca7256c792a4b34b29d0af97cc44fa863c5fe
+c444f835337b7b81467586bff8321fb3d13dce6d6d73e973d579b1ca3f2cf370
+449b3b86d5f2fb10e0f99e29f257b9b4d93ac2951d8eddc5d6037366ac9a4aa7
+a389a38b0b97388c6a3dbbebf8e4456313597978ecc507c75a26cba7bbcdebd5
+15dbc559ad54f5bf1525f96b6f3b8c0a731ff8d958dcc74e4de0b628aa1d0b4a
+0e3bdcfad1b424ada54317708b76636a157db6c8a5150a5c44a7fc7baa78e8b2
+162258c518cee583d97e11570ef1ad95ad638557cbe05a6262cf5c3c82d31d1d
+33dc4d5ac877e1f7992bc925e4a1374cd80184d4af53e29e23abea872e6ac8c5
+18e0249e5f91b0ec38bcb48c778c2651028eafa584f9e12cc1914314a2d83e8b
+2143787addd8cf9dcf1608b47f8e8a93d3bea602d3ec45cbc1ad4e3111ba8610
+6c12dc769b3480dbb6be77383e93f85b67c9837a176c36e5e804eb6047ce31d1
+b37d45aede58a7fce2884e44bb37e81566c3fe845810da62953a57bd5152c440
+4df00fad7f381db4dc1ef52a86f2a16623fd5683dd1fa9e6edd7b9f9f59bab5a
+b52bdc6d4996b5f7b53040b774ce1ce65aed56438258d47e3c22a22f618eb3d2
+1049f01d669913d5c23a92091e211f05f47c8c4d995471e4ce45f9593f7ef33d
+60e40e8ea80eb7f73903065e7cb0bcc9e16bf8f0a62c8488dbb1da2ba59593ec
+a928f5dfb5fd6187b56cc7055eca2e422aad5e56bb1b11d8bdd2994b917fb32c
+e6e124bcc0f86fbbe632e59b84a9c3b23dafbd10ca3cb69828c1f809e300c1cf
+f437b2b7bf3838f34feca563b5f6a9b28e386a207f32e5220cbaac24f6d6d591
+bcb5276fb43957e137c45af8fd1e5aa81bd900d4d850a0b39864b0339bffc74f
+64aa5372f67293fd490d29d5163643e2e52d43488bae5322d1fc1b73d5adb4f6
+a78cf475a06ef09cdfb52aa6b13611aeafabaabd1d7c5d855d33e369459e0ddc
+c810c88ebb8b198209b6c621fcb640a2c0e416f79893b3306d413c146cf71379
+eb2ffce8083dd60141c592826114e098727506351e36e06cf90dafffef0f9f46
+d0e36671a63a534070a11922757f5a517a4503f918de0e52550916ac5349e635
+5127e190289d62f0cef0b458ab9ce77691003f6277081d66b5158d4212a30f76
+86b0042966783d87b152ab1d5bd8221f9fbd946f6338f05726147175ca76ea41
+161557846b760daf28b93927111d73ae117fe6a3f4cc843bcc3b233a1ca08267
+e08ac318e4c0eefe9db28a6ca345625a3b9bc0a07aa138e28f55b2da71f6a01c
+c008dd1721bbb26c84fd935c5d04418dd7c3914c4be35be8427ec015c97b7cd6
+14b7ff7ebbb845a658ef8275de990c184a95f9bfd6e19ee985442b131cee6594
+a3635dfa40cb6e492c43e53ed9053dde219d4dc349ed33ff6774dc5efafddab6
+94cfd36f3bff574ff4bf3971f319ac071b561bf3f4ac13771499e7b2a8541233
+8e9491385805a865d237bfd9447080e50f68271c1208b07bb23f2a48d4440d09
+d861fcba6c6bfaa1350902db570f42eedcc5ac47728d4a9d57acf861fae0a81e
+f7ad70d2be158c434eddaaf29f1a12a9c8d6e67928f5a15683ee856ab6f77c9a
+c167d70aa35e7b88b11a8fdd7941334fb00e891525e9fe22bfdf5616b838ff04
+c07edb0ceae53d53aaf0ac09bb4eab057aa5ab2617f223e45919dea9ad646308
+4bd4ea632c8b3282634fa42e95547f1e1b4cd4f7f0b39ba93cb5b557a346729e
+52509286b5c54489aeb8c83c26218164783e21e77b1b8509b623f68383703b58
+7e1e1e53741315171b023db5507245a269c1b574238129e54fc26844de4ea424
+b33be80ccb65a2725b59111317c220064745143b120d9122cc19449ec1837799
+8509fd50fcf177f65135139c4dcc66731a410d00e90c3f2a227efee9c564f5c7
+e058925fb62cb61d881125458a05f54f4085e739c5e42c2d0fc8386ad3ae4ebe
+6b4f8428bbbb3dde167ce192c4223bfa6cf2c3d631a5fa0ba2d443cc2acf017b
+8dc9bff5aebc679e35632f02cca7bb6b5f9e261e216bad79802b3995207397fa
+350475f551b8422f68838e9b5e523cf30bd65f94743343237d86e35143e5c8e6
+58810fc85bc0cf9edd12e7bcfec58f980495ba0adea126b36fda85a91100e8e8
+7a669af8b1b94468dc9082d43bbd6f5101246f9a334309996f97375b352a4f69
+522172f3c435d3cdb1cd8a9e76b958587a68d20b6086f7cf8cd7241a7a120945
+c0e1b893ed291cc4371e0f6d7f6c64a0b8c7b1e8d1093d3a6f6066390d28de79
+19ecd026e530eb90e1c86b271decdd4a4d9b960128eb81829e0e3127f77ab55c
+6b51adae45857e76d4648c631bc97cfe5b9b2db9b785718c046d4571bfd6d670
+c48a173ea74a741685c633e8ec9a2678c60a01e247bc2f4991c4fa98a3b6dfa1
+cd2f55611ce0abf2e10acc47ef719a3fc8cd823fb2dc761f0aeacc8af8686bfb
+d66242980516dd906875dc1c9dbe6dddf9c3a8d581f102541ea4ebcc297b1fd7
+dff98a00a079c6addcb09115c5b29c59185ac1f24e50b3c7a230375719a0b788
+b6f5a88a95153e3eb40b7b624a499009e173a79c8cedac9963a7a618ce257fe9
+dce108f49dfbaeef00b85ca79b425775d565bbb8ba910c5704ceebf87baacbb2
+9679313694209891c418d257f57c2ebb5a9d721a5c45ae76f39f98e5696fe8e5
+2911c6ec7440ff8d0fa6a64673494c0082923e2850777c08e7b51d8c2020fa89
+f5e3ab83a7b60dad6535e34cc819fcf429961c84a709f1a3cebe56aa07ee9db3
+d8f63e1008eb9c3ea4f3e6fb4467072d7e3797471c0ac3fad6dc9297b6b622d7
+c1bbaaa4ec42f63c7f9dc006573c3d04653585ec945c1c81fe6d7e4d273a8ae6
+094cb8e95435ede392f2ed9ffde64856082ce7a4c3602c98944d014fea517eef
+0cd49e43156551de368ec7b657a4d78aa2c3bb63e237fd4cacc5538547b75351
+f631eb7f9bf002a8e574509d6c1c98e1e106aea4c237d914512d3622968f77f9
+65300e154ac99a3b6de4b1ae01d26a9bbe3fca20659004fe548cee6d0327e8b1
+f798297639d1fcd77f7c07ff1a0ae261b0092488a7b8bd0df753d19e7478f0cc
+bf9c0ff219bc3605f6be23d8ba0953faeb3fa8be88775172d8000a5fe6eef2a2
+c204e1b5cc449ae879a0b8ebcd7a462bedcd733fa2ee0c6b31a069621766d175
+a02431b20aaa9808f0cd781b34321dfcb874ee86be5e835e3a88522204232f89
+b21a1ba6ade6fd5c084e1c9c3e9c99f387c18c9478a05d07f2267ffe37202c7b
+ba7b445cf7c9cc366a5f20590f898301ba2b1d80e65fb2d464e4bb35733c5bb7
+20467970d27b63daec5564409e1c7bb26e86f3117e27cd719990b6a80f77a0cf
+610ad830df157a22439a1d4bb5ce1d7d12cc5b0359b05df20c43562a20a75be3
+53e0b57ffaad66bd0c8e3c93efe0d11060bd60a7bd8d9d348ff7b7072d41fa9c
+967bf2da8e027ce8c95bfefd1c0ecfbdeb3fa7b3491b13478444953a669422e0
+78b2fcaccad36c2c0e87bf94328b71ba230b90b0c8c3682727e24be124b91ce4
+1607415fe4d72a91834abe46ab8695c3f4b95e037408418beb4d1d5fe4639568
+4eeaf156bb37bd18a9f620426494fa08ef613d461a26ad204865d9ed062bfd25
+af5224f107e790961c09f00718b087e7f8dfee91e6adf6c560e8e30b3e72fff1
+3a9bb6e3b16c1eb176817f85c06721a77e05e721de64bc03b4f1524c83acb450
+c03e33c5606da81422ab10ef9623d0944a0436feb5842de504dc885809abe553
+0d4adfe357cfb537077237c510e426b01780b3387933a359e65546af1c1f0cb4
+82bd70eb11f15e5807a23bb7a0f6936013484e291d5de2c62124dfb40d4de0df
+f950c7b1d9093904c0c8703e936b294ede18ba10d928f0cebe96a899cf504708
+4799abe1cfbd65c3ee7a68f368274ab2db6955bcb110e4f5f745b89e9f0cb471
+a1d80d7808d4bf009048ac6fc6d10a9ca636996d761c6fe40a1cadb5096952d7
+09d816cc05ee4aa3bff121d37ac90ed62c2505862d8d2f8b1e2a338bab2d4fa0
+dd6b479d528b67c9ea1b59fe6ab46dcabd23d4d969649bc6130cff6d1298c5e5
+29c3ba8a395b813b17072c5779ee1eb63b6d8915773b379e3e48c70f0530fc97
+bc1eb1502a4655f9c6a2d41407f65a518c1741fc51d640a74e4421faa36cbb26
+525afaaa6ee3f80f484f58c3b6a8cf2d80c5db456862b22fe85ea042e0fdcf3f
+ae9cc6516da9bd4ae40ff10c29ac0a1498c4e42b68916cec97981330afe74fee
+7455e6ebc57aa69dc8ecde61dca2ebc78fbf5f358cc17988ee59109febfb7262
+9fa6b60e18e4f10d1cb7ac4e61165a686de9f9dc05d3c5eed6febe11ab932ec9
+77cbd825424d0e01aa889216f50ec5eadebe1f63146e55bc66b43fb9c061631e
+359933c28f504fa54b7130be256b9aab03231800ca4259f82353b30ce78cfedf
+cd3dcbb85b91b05a81694d766fe768a59ab5c6313d6c09ea3104de958e232d1c
+c63b27770e83b2c5d53c7cd005d0be541380c83504a795600f9c83c6221f5d7a
+d7a1598055b73c10cfda2eacc8b4b48f7f3c814c7f670751a9633065125100bb
+0cfd38c614f988cb6c6d4dfe668b6819ca704aaf2688205f58710957cb1babb1
+91422c45c3fc2cf9a615ac640b01d8f938e660d9d589f9cd8c730243933abc85
+6645e386155ae1ee38140a65f843f6d0d5c12cb9571eb46fd488aa166171eb88
+2fcf3711b1dae42f3c50592a4a77526fe450b667f1f09f83fc02f606cfb472a0
+6d537677e279a3f79ae2e1b867d29bf8868f20b39a878d6c49b9b30c35b78814
+5ca9ce4f135ce108caaf82387789141c91d79484024a50acb690f7103dff9a9f
+54a7538046a947ea97811a93e32531e23ebcbe7beb96408515e472555dd496ac
+16344aa734ae684a052468a6744dced0ed3f6cf097db7654a8db94d5f12d0ded
+45a020f11f1f3bdeafc252ac2480ebcc561a82b44836494bfad34475a273118e
+d698d0b225be88f6ea0b273d8a7700cf3400857e6ba4d08980781cf0f0a0178a
+caef3241d4a4222e4915134098fed2cf59d951aaefb656374d2a1b3ea4df61e2
+a2df94d0e3bb2512929327dd196e6275040d3da25f7ffa8d1cd0e4f5e97084ae
+e562f62184ba9912267e7615e360c237d5aaad432fff4303cdae62cb64ef8826
+301085e74e8caf7e396f1fae5eadb53fac0e5b00accee1f6bb9f367d248014e8
+2165636fd84a12bf00fbcdbaaa44932261babcd4cec04e7a9eba287153aa0a63
+a5255cb514f8bc681e2f523cafc905f16afd5e6aff7c9bb93728d787589f7016
+e3580aa90793b5614738523e1e1ff42fae667b2a903debf37dc8b87dcf9fe68c
+f4800a8281e66fbc0f1fed3c01c92d0b97aa9035a545a349a8ed8819d8dee560
+46ee857e8e13c4a3962e58e0f339dd768c59e81da024aa8a6eb9e7bd26ad7003
+cd9655a78d55e06c59c54b6cc618e9aa88cc40713109b52e76cfa78f62aa3c7b
+2110d24008807374abb5340076253046dd1debcd987bc8cef1e3d3b669c0e8db
+b80b40946e28385a114d7887c23df95f66c540775f2a3cfe7d883e49d761e8f2
+fbe84993bc9fc6baf4231ac62e3eaa165a17e502b4c10b3097ee1a32142cd65b
+4b6980bc4af8b4ab0eaa10fa4252dfb308d22f324fa081ae34b7bc3b003fce34
+0f3ab9e2fd5046584b66c7919ccdfe2a6f635fb5095f9ea0ea19a8c7a156494b
+fb857f457d62dad5bde510d65ec24a308cebb101ad09384ce155e122ca8d99fc
+6bc88a90108193b793090fc4304819b170fd2c03439a66782b87aff1b8a6cf6a
+82ad31109162cc0f2e2066a1ff369431bd8c87a88b4175ac6b8ff8f76f7c1608
+d38b0bcf05878e46fd606af74548457e87652650cfedad6611a430a1f190e48f
+796f9a43667adbeb773700ea675b2c0237c7bf6647e7bf10b0384aa7b8b131fb
+4833dca1781f8be8036530468b53bcda940796153dbf26d306dfdf6610f2db95
+2ffed6bcb57cacdec2e07a9ecf20403bcd532f248bf5247b329f9dfa5403c8bd
+ae4aaf91f795a366481b378eb64a62673e0977f763314e632b027621cf6354dc
+4951533a554c9ac50b58d5f682e68ef2a24056003f12db7eb09af4d2708fb8ad
+93f4744c1f0dc9b9141f38373bee0304f1f978afc040b6d7e3fd97022efef87e
+bc118a329f0c17762c4641592e08dfb134267b0c32b12221da3515a61002cd11
+2ecb4c2e8a9e78daa8b039ff40a27157172037b0a2ae4d00a86fd89932694c5a
+1559ec5163e291efaa3641d44b9b85be29d82bba33ee71f09a04617650105403
+8a09656fe26180b106074d0b001da75137567994af2cd0181b6a0e4a2dcf2d9b
+839dc85974718e568af593ac79013c47565d82af63cd0534ef61a618cc0dc13c
+a869e7766eda00a0de43e495f3d0867eadb9c96aa8da967d884a21c606a76089
+1f49ccec2eeff2b7fded7ac1db9e7edcb12da860bd1c7e07ef3203fcc325f785
+df63344c7b03f07f3cb55d2fce24bb2be26f34b423187310da9ca6e19b5782e0
+dbf8c723dad0f6c1326032ea0cc1187edd825a2b2937eed97cf1bfa27e1e649f
+2ef65e163b5939161d5d55539eb8670e6a5619593eefd645c471302fb7bd74fe
+8692b677ccc2af60a120c76bb73046a797b6e3209638a3d8e7a4a968a1235b2a
+127e052f42dd727e9f9dfdd4e158ea519ab3d9f1fd0668594ce218912e83052d
+c5dc77a7a82d499c726fbe41fd299375f60392d7516531e3f8c9f6bce47e0bf3
+0801fd98bc988c3e3f94352eda0068dd4865dcdb7927bf4a1d056724ddded6b4
+92199bea999c130de085fda256c65beeeb4debf829d9a7dde59b3c63c5b73e05
+f2645d2abf528f5bc7cd64b389d90d6540314f7946c57a851f3d4b214e4a598f
+ff3593f1f5299daadf8f127eadaca55e93f8da5affb2fa5ce21de332f201cce6
+f0db1602090cfb79c6390a032ae07f745173a9f7214ebbfbce324b589401c36b
+f6c3e5ad2898079f7cedb15028819befe2f4939e28d5f0979b0ca4b05797abb2
+a983f121ff023b2a7d29cbe15c6cf686a99610cd95cb364e32855372915bd90a
+2dc32b4ed2f6d397495560badad379fe7272663efdf0208cfc74717d19403e40
+c424fd6c21d121b21c98a6c8c82c68a9547569072e3c60b005f5d40b9bb25408
+559e44b8cc78102748c2fffdde19e15c1eb8285919bce5e3a3d12600f6f7b123
+532ac46a7dfe29fb7e2b457c221ec2a08fdf743e8301ce5db89f9ef21c55b3c1
+bd7c8bfca409b8cd89d638c4848bca62ac8f56942c653b8baa2b286e8b158f3c
+7066adaf7e0948cfad34bee6188a01ff2062ceb07b2f36961d002631655802b0
+a6597a2e13f82ec404f29f1806802dfaf9e4d4fb6939b72be54609b5bc86e3c8
+c8c0da238f848c854f230b39305c4be93b6c2d031c1d5c68692192e53ee53252
+e91292be1b3cd7315330e6fdfeff9235f685b58e5247bac3048caff59357cbb0
+82017e7ae20ba27f513ca8a0874c69764c79b4b63c5be6fb181e0d304d41b25c
+e7b350ade823104d55f335c04811ca3a8c48982f1e88a6cc1475a72d78ff2565
+59f1b386ec3ff575fbbcc37c9f9ebd7f6f02558edfc51431ea682d3ab44416b6
+6aacafb723eb4a14d7a2d3281b85cf1ab517a18abbbebacd86efcc0c936456ff
+b68de3741b3f739ba5d7d79f8a9fd14989e0e91954598a4616d511841521b224
+4c0c697f1c917650b2d1d2b0b3da52f9d9678552a5efbecf2f4ea99cb181a354
+137f3f2d6c4881388adb149f07bf02edf520787940ed9d2b9d163b0090f7613b
+fbbb1deab9bd17759f36d3831937427c24891d494226b41059bbd71dafdb41ac
+29d93cca3671e5ec5ee830d3b7133bf71640d53d8223ccd2c0915c7388adada7
+dcc66382226cfd60628f41ac354b5b5b67441491e3be16c55f4c9d0bfff1ddf5
+74604ab0233bd7d1208c088b3db045043cd7db86ab5fdde1769e37b0d01111fb
+1d5bd585e287e83471200966fee54deee364655becfd39ee7a816034151049a8
+2d06a611e529751c22a24cc123a267badb28351800b06524f676cb7d2a0aebd3
+3481672514ff24379052acc094fde76aba1a3bb9d5bd28a2cc185940b78cdf30
+71011a68e2aa73813803bc0fcca7460f332df166f415101ee4df9bc868ea2f02
+0b9c3f948ace470e6c240467df9388ab41d9dd093d93bdedacc63cf63a2ce9a9
+48a519204e2cb13af2f45f139b4fbe31fc5a180727193ffc10499e9340805338
+141e9ac4d5b1f48a6ebc56a99050d5c43dd36cf99f465ab738cf590b6b4aa174
+e622a5588eb761e5fc2973d1fc1f6c259568a669fe68e946986e06f66c525446
+f80d6055b026fd88b0dc6230d1e6402342c8d9bbc3b27c714c93fbedab91f856
+0caba5e2466e2325213f9982804c7f14f1824da5c5ebb2f07b36a546a54434d6
+72cf62245a43d4bcca017fe0528bf13373a95cf360dc81127556b296208ddcc4
+ad9d8526a507365576700e61c1a05b3ee08d2886636b5c2830b6028b7df4f955
+af0bad97a4ae3dade1fb023666e4610d6c7c4d58858b94a4a80be92a74f894b0
+5013f2d124f137615c5ef060d8a1e03e808460c2a016c297b3e483c34d8b998d
+62017992102312f1031b91722557148f3e6fa8a11782106f0063bf293101b5ff
+d872725fe2a58489ae435c84d0f6f9d7c38cbe2cdbb82b855551bd0825ef2a9d
+39aac53db3a5b6d90b14448351b9cd0a0d855827cad041a298bbf0108ed233c5
+66abe72bba8c3833e285a4565cd8879a1af93c3918c2e61a778d4a4242a1039a
+b46efeeb733f318c1675a5edd5e02c40b9432e1d82af5f5a46e741bf62af9072
+d8bb1bd96f3a58b16ba6a6e0ee3c3cdf925b838876f0cfa10de886b49b9e7f7d
+3f013854f75ee12b30fc21d1841644ed45ad4cf6372d16631e5ae856173eaef6
+7bccdbf45c7db19c30761564c8064b4e65ebeba49f18c8b843ea6c59bbb8f656
+4c6dee2d3b349b37ad3af5719018a29c9bffa77f4f829678f9300c2f644b7843
+dc3df125073ad6db0b540292c8eb7866c502e5a1096b0b101f9895b79fcbd826
+cf8b10bba7694bed706d326ac2521f9ac1a2a5fd775393366f11734a78fb2997
+35dbe8dcd6f56c368f5c4345ab01bdc7b3349df9944677192497296aee0a1778
+9ce750f8e4ed6411503bdcde64d7d734a339daf95ef0ad4f1828f9c2b3fc132e
+634233b2b601275b6051dc97af18a3b7530a67efe28b222d9a737c3eff236945
+172879ea0624de9784bd09b8d125ae0077444eb94a0a1e3bb1609673d1a7a91e
+8b137073c9189f36eef5c810079b4d2f53b4a4b81b3b75e18ba90bc5b2db8f63
+ed4b76936877d190cecc659ff89ee24e51fa1656c669b64013542b4868891566
+42205bee7a8fd29f50da120cfc3a8f083eddaa70e550e006e270c6bdbe894614
+59f3e9ced1288029062ba96f642ff11c160cb542efe4d6465e5d3ed7d21061c8
+af568e5065d3f0e1bb5590f19b18e329bc1103fedb69ed007c8a337531b57609
+295dd52f53fd57bbdb550f59571bec1cfe667e526a361ec48eb631b3d9fe363b
+c93230e9d7c5e0040913439f6707cb8296491e51342fea71034dd0fda09330a1
+e92f2144eb80b98711eacfc5970fee046e8022e7ab87175fdc62c3e91eea8527
+635504d4b574677eb2b2a80ad891a6b1b68fdaf7ab1faecc6feb489b14958011
+56a221511011363eb1e936c7d0b702b01a6b0f62be972e495cdd0f655b76ab72
+7688ae4ae0a8c0f9f4bfb507f0888de6ea1ef09e6a4f9999cae05910516bc531
+775794a692eeb2286af0d47c8e35dbb3043555733c2dade9bfd930b5751b8472
+70f8f04f6c70fb91d543b105b13d30b947c212490694a1a90d5008bdfeb97042
+f01b1c091cd52ebaa19c9dc420f1a1cf1ed9f14a93dc4efda55db7abace224f2
+fbc764dda95559389eca8b00dadf018e391cea64275acb0675941e8a5cbf7396
+cc3a0b0efb5d23dc2dc4b49b7aeff5eb08d651cfa83ea42bcee37a6ae9cab268
+5f5775462b1d71234bcfa99cd47f57cfd9f357d9ab2cf2fd08ba82656e0ab47e
+e4b14a01e442b4c45f125168638bd79e3942ab25a76327ac469cb4ce928ea889
+6bb4800bf584d455b1534f8a1753a87673f7e24ed0bf0c227e3beafa0fbc62e0
+b02cac8761ab7dcff3e2b58044424638950e62c7d4bdb6fb60d47a35e3c29c2b
+820279554ac4dfde759de5f236c1b8d84d26dca81d1f8c0edab32ddeb8019126
+7ca15046cfbbd732e6a00c1c454862ede5adc3a97b87ec5093e1e14426a2df2e
+d440bfebb93550f2c5f19465c624247203c48b54d5b20a2de853368fa4bd9f1c
+22ed862c09133e9fc8098ae4388b7a63fda95a6c0babee1f960d811b447cf82b
+ecaec9e2717d9ffb15991befcaeb8dbf26131766902d03f36f2cf6ed12a9e569
+930a1f9cf648943f9a3cad2e10fbe5dcef068f4b524cdb0db2c396138e279f59
+ef370df892edfc4e6df9f9bd6f12effc35fd0a2f90cb9791f29d2baa98525853
+ff862e091d380fcb38c39ef91688527776454c58e5f8c16dbb09ac4a6cdfe626
+9f58568737a175f741666386555d9b1ddc6f7412de0cce19a3c3ce142175e23c
+6a43cc10439a3fb5cf63ec11d561b266242212d00e08417d0dab49a51c9ba83b
+cdc97511ec17147ad81b392192a4dc79cbe42e376a2efb1664d8c28e14e25ee7
+f14a09065f95046c6c768ad0a9467585edd3cda46017144244e75c25975838e4
+a1ce78b155d4746dd9679c55e638bfbeafdf348d31e64c4fa3c6d808d0248c86
+220865c55128780812cdffc1f7ab7adb8d92494152f4fb25bd2c30abf7451bca
+22a35db40826519c99ad14f5f22f66f9edf6c84e87e9d7168d433adaa95361e5
+63e857d353a2c3652b198970076605862fb7268938583206cd1987a6fbdafb32
+19cd79cf60e0e9e152e86f5919714f10920ac379a9be8eb36f41e8f44fa2ed98
+e50e5ee241ace376ee1b777af31b635ce95ee7cbb371ef384e4a175cc4111f50
+6d6a7b2ccb2fd520dfd8668d550c8e851cff6c769266a25256b2408f535ea76d
+008ffeffc48e648ccb07de9429e0101ac67cb3860f88c0ce628bd18e0248e76d
+23fd448818e97c0c1aefd4993186a78a6c414658f95dd276dcfc029005272c55
+cd405ea11c44ece076723fac9ad291fc10f6d2eb873cccbb90e86ca69a3b4523
+cf056076fa8afaa39db0a43091d930561fdb7036e42a688704b6070c777c43de
+9aa43399a35b4779782ca71fc2aef9d750763cf0657934151d5c99aa9eb5b89d
+a1af72e2c74febf5344b971fc2d616cda96401047a0396f6214be561da7f769d
+2936c8bd854169d94fd4ed6294f7f5bffc9364dff9f3cf8dce68141f454e871a
+38b2869a080f8b959460be667d9bbf498bbfe35c6397a9bdef18198e0c9251b2
+6266fbaf3705595ebd003cbebd4c91d57d48953152f13a42b90e9dbba945ec09
+a20025fb5f67186ab68746206de6107d1481a85dfe38a3bf7e462ff6cd67cf95
+e825b549ab9a2ddc098dffd5cc7b1a835f96c885eb396cf76f7e66165d9fa3ed
+86f1693a3dbb0fa4ed3ec1dbb1cc8e61e7e7cd7b1cc0fed55b014b64a191fd35
+c85ae22c9aad720c672607122e3592f70c6ab065a60d41591fe53cf09bdc40b3
+a92c8d2e3ef5e1b370a64cb668ef577cd9f0fe31ea7e9814d8cdaa7e5c7d4da7
+1a1c68498ebc231692a777f77fc8433ecebf5e138dccf24add0ae51bd780e215
+00ba4b78b3b0c438eb7fdd68f77caa0581b95ea458ee6ac8ce6aa08aa6a1bb89
+84fcb02a79ab05bdc0608327b4e007f5a986dcee96cb45b0c1b42f03588226be
+df2683bb2a8c52970dd77484f2aa772230f999b4a15e536608d70fd22dad5531
+73448889cadfe9d8d20432fba9dd01a56d08d3f71b9c78675e2b8702d19c2703
+0ac1d887f082baac9af5b4bcbeed52a4432d873f3eae44812425fe95ce1eec8f
+bdad3058b2e170e6038795b9616733440d4729f676cba6dd846b31e7332eff89
+0035b79f05d48d5c93d0c310df4c48b1708083fbd6e7786837d1208a72529d39
+c7e06b616af144766f11cb87d32f964e2cee40f0df9d7bb50cc5ce859cc8d281
+748e90984f01efd8c574c291d17ea3f24395e67df8c34ff6e2fcaecc6e45f8a9
+459e8917fa623cb356c6f8985721107f474b4d9935a1bb7d0344026ba3c2204d
+1ed06ab8186eb07b493ea6a818ea25b4f809fd84839bc1e50abf704fab818008
+e1ec5126e39f78ff4c3824c03a51f5a474c997634ca9b47ba0d40e84fa42da29
+1e72a11d3598738a26b23c22c0903a7ee02767f7972453020ac4c3f076c8861d
+174acdea71864822ac625b78d4d5db0fd237d6dc650c33250b6586e9cbbe2823
+0c3521ed5454a94b8bae073f74bbb0c9ab3d7d7eef442d656ce4a95314329bba
+1d3c880033c34ff54cb6c5c88edc58a1301bb2f45e2537eb96fc03728ca15907
+342b5ffc25d03439f9e9fab12dc8318a4f35cdaae536420392b014209329ae04
+33faac47ec5548e0f1efe2ac34e96bdba2898b87b3c28ce304f718eadf4b6032
+eeb1d7d12e69b5ee3430025038dded81203fdffe299c5f035ac92cad5991e014
+1f91f52063be4fad25a253e2c0f308ed6a0137c98c92de6d93ba5f515e02d17d
+e4a7e21244bfdd5ded262590048d6f661436475dd6ec340e2c33654115ff88ae
+77d44b9a79a3ecc21da7bd5e8708f2b7e14aaf8a1e982e0deebe4ad0e7f70269
+d1fcb6e061e33821c69219b9f140e03b16572ca8af78e49e0f4606c7ea27fc57
+1ce46ebdefc9ea74370b49d492bda92a934f6944cfd9235797352032a953f11d
+1a602ddacc0f9609bcc9fb5da03a17ac5fa2a53b3e1eef1bb73df8dfaa71693a
+df0950518db6f7f699620210c6b0bc895ca54b8266c38c6c2b895320346d1982
+582e9ae0e1506d9e7bc7a27c5791305678d212234831192064297cd2b4d55581
+4ee0d9c47e021862473b1a9299a2287e8a2e66fdf2ed98a06fa3bc6073170c07
+6f1e4074aa2b0d547ad0a7b636c426040cce50556fa4645f38a8bea3be1f3436
+1fb56352a6379f518e5c438ce29e1d52b8d9e5d1372c1ab40c0f61e5a1f8465e
+3140340e389af1096b83500f66072b7581e405be835d2c12ebba2642f5e3cab6
+35b4cb9e739c61ad38da18c088bcd15b21922ba0d3335bcea36ed858a6e3261b
+4be8426b1dd7907429dc66481b7f305bfd5ee95becc9eef69e840bf3a87796cb
+f316480b423873dc9aec823dc0c4dcbc97fa3e8132489b9ac8029c1d1805137e
+fd4799ae17dcccad2e3e83a3add59e040562227570c6bb97481dcb9dccb78117
+dc883257c0983eec173de6675b93407aa68a4f2b740b850f09c75067056226a5
+c712b796463cb4699c93d8f96d02802c88fe5a7738f46dfc5608ccaf099524f3
+0a925d5a2338eee12fec4ecf64d128205b7a6d61802c67fe4daeebe8a0745173
+311a1e844c5f6e3734b52d65665ab7b193e18aa02aebe42cb43d6c901c8509bd
+a52ead02d797d15f11cd9dd42c9f486a2481d6af5d91702672c7d4cf030c7ed8
+74c9386a56bee00be84ceea5704ca2729abc8106e5334deb6245ea687c302f9f
+0fd1edadff3bcbaaa02ddda2507332f8335fb6157caf91fa1b74542807d9113f
+52a488abbed0d821155bd7775bd3243fc366cf6a73e9ad602917aa132feedeeb
+35c272d462f0a8e19de7b385e0630e10d5356babd890072052ead25cb8e7bc72
+3fc5b359253e56aa3752017960466a2d2de62a3557ed898ef9ff32d730882299
+ea8ceedf1f86f416c3b5270650528697b84f949e31b5d2857c50d3b53d53f452
+d4019293714616835fd902863ad0f7f0dc8656763173ea8d66c9146bce76807e
+0b8f680520be185f4b5c0a86970824f8c2eabb0985fc9ae68ed0c279c31d6907
+790f645ad281ccedec728e1b3b9fd9999664daf1651152b116cdb0037e0476c8
+6cc1c76dacc52e50900fda4507fd6d625f5a13c62c4ca018b1b13a18714598dd
+cf0f3694af76b3c96a8c52f1f8c141860b3a4bf9c426e2332ae2792f0f72a870
+3059d27930020d4d8fe82a651681a1f2bda5bb456fcb0ac197280de723666a04
+0b0668779a63e005331a28c55f20bfca7b136ef0fe9e36b6de58a55feb02e220
+f50f184ac0727e03977fbbcbf1c6e8438f0b307db171c2f4205cf6e5a18a891f
+79e01183e9ef7059f56ccaf13a272cf1d3589dc421137f478e6f521fd81c9d48
+13500ae77f166ee05748f20612583cb50fc0abdc960c73a96463937e50a60dd1
+403a366332cd5f8835fe7498af64bc45943e0673c0f6ed41851933d54842fcc6
+b14cb4e64aa43e86dacc403c1537a5db0443f7d4011ac81808ce37c4a725af5d
+5f38d5fdee53fb6760812f1721b834551932318c7a8ecdb49a086df6c33e90de
+c6bfbada1acb0e26f7bc8f25fb10c5009fc7c9bcdd55856d96fc6b6bc5601cff
+00b86cbf7ecb05790d8e8e20ebd5f196b3e01ec77de6b3259fa5c6d4a8069eb9
+7bdc2581e1ec96fe5653187ced0f01044758fe8d8be7ffc689d046b1e4fbdd37
+451a9c8f0181a3359f363e84d255ace7c3eeb5ece2fa72eff93d9b257f1f23f3
+686903bcc39d8ad070e3e30a5c4d6e49d0be7e722c87810dc95683b1ddf91561
+5e6e8bc4e1b002379e2a53555ec7aa89d1d17221302941ef7dd7a0f9e7aa4778
+2432f86e04376025535931cd87bf5892bcc751643694d83b302d034d759603dc
+730896627c6da242f0b3d6bb3594eae16816d75cbb766a7a0bb73f5d5b43cc18
+b828abdd7371027d48aebbb119c1d1e096a5dea68ebb7f346bd2841ea8c494dc
+0bad3f5570173c5d376a156d62a903bd33717fb7f756b6756854a4a513e86ae9
+39628cc1f22ab95c67a03c65255d2fa09ac007361804043245c8fcbaddf45e5b
+3bc91f62f809e852d5205ed3d54d67445f91eef89a85b1e2b2a944cae14facd2
+1ba53ac1228e590ef036f38deab76ed2cca33224ef94abe6279921f84b2ed838
+cd25b5ce6c9127cb4cc5f557fc4afc0fea04d8b57a4de9621d4d4b20740a3489
+860e6264b09a6a7faa3c8e14c03dc61611cf0bed0b560801f67f850da5554983
+4017108fae6315af44750a102ed0479a8423079d219a8763658a382f11da09ba
+f9b69bf3e26dc96fe31f9a153ebac2c5d44fd90affec3eaf5c32bf487c2775af
+3bb931497dab2cf783e5c7cd835a8c4c9527402786d9482dff527f978235e38c
+d3a04012fcea0b9c9f28e405057fa2932993d10abfd2b846f9006a8fcdb268a6
+1ba501d1a5438a086ea2b89d3f1ea01b009f98f9963a18ace3b2c54e734bd07b
+7dbef1772fddd5ce2924467eadbb5df15559b9392704e7aadea968f9b5a80a55
+ac40e8048d206a0958e71bd15176946b3ba90c690e54dc416f2f974873095f20
+0f617c4a5a978c4db7262250395fc80d32f2bcd5e6d94d94b8df13067e0bcfe9
+d1d9b1e1b65853edf2cc33adff77e9bb00d3923a2195aad138655c6e1c985126
+315b673d87ff237734c910ad33d0faf5cc5dcb38ebf824eafb515f07bfedb579
+1626cbd54c6f02ac3d09bcd43fc26e7aca207db1f761a0fcb60e0ba98fb6b203
+dfb3d46de1ccdf9d08a65a7736476739fbef5cc16f633319fe15a55fc297b0ea
+35334ca50a03709047cb0f58f7a2b4608da6a776887ad0c6c3e10ce0dd30291f
+569dfa8ce7fdbc4a01399321544ff23a44dc2c36afbf4ca49a4f616c748f4d02
+d045aadba19691fa3de7d09fc70ab84d49d5cb49162c42795eeed53f41febe30
+da3e21430473fec3c3376eb05d577d5900eae5d3da070ab17989d21b514337f7
+0d30d130d9087cb316ff3c953b71ba5313330fe74ce719f4e9a7459145f3cc69
+13a140f1219fa7fb2490244ad03a6d79dc0174a59adf62ad4168a3d27b760ba5
+b56102f977c6e2b1498acd3574e95a58e1d2e10b7006363b581b9877d7ace072
+1309a6eb477ff89ab466d46ae5cf805b3568db7eea97a7375651f06e23ad9f5c
+8ceef788944c5e2ff5c2c7f757faee10251ac92d85f011db3298051ff6cf28b6
+353dc49d62db697a4715e0b7577030318f4a104019216827f164a0996f076e5c
+41e7cd7978f88624cb2c4e0fdd87cbaa7d14745838556f7cd373eab88ec9656b
+d2b65b6b47770f21327493cc92ede73350eb1df3c35889cae418e5d2040694aa
+2a9ced6ebf32e9c8dc72214314ef62d6a2dd24554c6c6a2b01b0d069b3d6077a
+82561dbfe9e1c2f7c78f667ee74553f68dfef1d0bfbc0d710a039fecb2da49bf
+620492f8c692fe3fb82b88e9eae4e8be14fb39e9d0f671651114f2fa31ff5d84
+96c9eee4b50643b3befac2dc263f3026e041c3126cc16fb4eb31b883df343ca2
+b2c67848c919f5cabdbe918a32d370b8f4548463a48ab12250c75886c3d9a583
+7af16e5a7932b9e1ba719b6118ec74bc507a53fce6cb2f3e9cb60207bbf938a2
+382edffbcd42c69cf4f1b027aa1d072bb9441e772fd7574d1e5433e383aec195
+2604c004f99f7cbf1eb50824c81cb73629bca05f26f26e4c3c2c5b7f6875c4f6
+396efdcf78d275841bad832ff15a2bb5e7e0ae40b06fa52f3354990124ea5a9c
+e34b020863eec0008f42c6fcb398c42291fad5c94485651b227ef7551b1e5205
+adebe96d0b63807be2eb789ed430f0f86e248c726f0755d60ad3c2bfc688e209
+e47ce8a7106dd7c41964b90dc8e7e1607e6ceb77122a97952d6a0e567413582e
+3ff7f45cb491ab8c81da0661ab072c533ad2640398c1e54624cb2e81872425c6
+5b55eff5e2b42051a2419846c95e29addfc59ae5dd2e6a66570910e07649a943
+4ab1aae1252e5686952b5fa347719434a7bfc9f2288b03dfda823111354c67cb
+eba93216bfa8efba8fee2d8c24a5efa94f40bb1be6b581f2ec4dd65e668a53c1
+27ab3c3ff48cb3f10293756e975fbc185004c3d749c03b21aab02e9450988743
+079336b735726fca447271ea1a9ad9206fbf2fcd87b7f85db25f48fd862c7f60
+5333a3cc06bafa6334a9727f5c38004fc6899e90374807864103ec4dc4f37e2b
+f366aef5f66794fcead9218390991346cf8bc1086bc5291771c21ff9ca9f8c60
+5b4741b2de3b2010a1e6907b6f7c1406d09094d50808e582ae37a7cfd7719917
+4d65523a9908b9f6f0e8000c0f914b3d175f4ae2abb1d28d83bfa6f4ced1f872
+5b9e8eb3698ca9ac55edd1c67fca641d19ee5a6fcbb938c331b746aa3f5ddcc5
+69f9aefcfc00ee5f7d9494c4a61a2303e0ae8fa72b133b3c42fe3d7dffdc7401
+267c6c29f9d9b690633a173e5562842e6f667bbc647e94cf746c849b4df4d54d
+e7ff3bbd9a084c0aa334ac7d852b14a1e498d1871810c8f9288b05af974fcc9c
+a344dd47cd5249c15f5d6ee798a8fccef8de64d8edd9e4241579f4248e15cd75
+a52b86443607ac987bfd928e89acf2aaf741e20a5c30748dd0e0fb0c24afb798
+9a5c07a0c300636912082545b8741b74856e53e74a2eb303f2cb782a7925
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR5
+%!PS-AdobeFont-1.1: CMR5 1.00B
+%%CreationDate: 1992 Feb 19 19:55:02
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR5) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /arrowup put
+dup 175 /arrowdown put
+dup 176 /quotesingle put
+dup 177 /exclamdown put
+dup 178 /questiondown put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 43 /plus put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+readonly def
+/FontBBox{-341 -250 1304 965}readonly def
+/UniqueXX 5000788 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306457c7e62c1d269f306bd3402e266de
+fc3b5e7d8a8d2f5bf0fe6ddd40d07391df4fad4a6018dce29a2b8f692b29f202
+3a7c0e66de8ed85c14f1f8492167357f51a7e84cc5d92e0fee4a71813d2ffb26
+445026f89b4787516ecd1afc78f8bd19e91e9ccc9402e8c36d2449c1ff850a8a
+f61165aac3fe931332dd28e261b91b05edd18f44ea7d58a8f35fe88493b64aad
+6bfac3a0136215fc2f4ca8e91d70c5010e6f4013e6d63b44f6fb00afdbd7cdb4
+5ec5b1d9736f45cefc8a0124b815987cebd81bbe0d44dedb2d5ef37923b3d551
+abb6a1cefca7868fc7bf3814ef7d7b6b1ae6e869cb77aa29e3d90b12b0dc3ff6
+ec945922b5899bbf2f12e92731486d2ef1230c528bf8d7e0ae09ad7632a38966
+5963de49d1ef3d65bc483e4a577b927c940f5e121169ba52f6576c85793e5fd7
+7f5863c488e55bdefd5d8b2514795533aabbc12e7f51816c7e1484f1c441aa9a
+66a5dc77158e79cd6692d299b95e8058b35e771a6972d2b5eb1cd6d2bb8e835d
+361a6eac0c90c906aea1cd75c4412a1339dc1439f93e59917311bf20af4f2bc8
+bba5a4626f75f28a47d4595c37f4019df480d9385975159142618e22e964f019
+d88125210e2ef21d65baf500adf802297b24eebbf4e93c617a613f856bd0d45f
+e17a9480980ef83950bdb8ebf208c895ebc4a7132f0765b7c19a332ebbf8a3c9
+ab65063a42e19ca9d43dec3de7aba46b9a5d24fb93d615c0a1726ab7e31c378e
+ab77150858535b91362ab0e2b968dee1c53aa5b2c9238a0101c8cfb01373d08f
+52239f322b3471cd68ad14cdba2ed6a538144bcac6f7305333f7c16e03198444
+f0383a1ff8aa78248d6d06328116d2e91c120f84259eed33be934353d9022af5
+fba4492ac1c24f555c1005677d93ade147b9a96fb08fd0c266c8a789b454d888
+905084c826ae1e0f812d14eab6899d3fa6751f25c361ad2c29b9b9add3b1c6f6
+ca9d5e1cc42a2095b90d747affeec50e572bb702cc540c8d9c7021b8cae1de38
+cc765d4af5bc219007c0c4c7c6d2f3da5b36450f3c5a02dce15626e604c1d036
+91c5ddeb7f138e6aaee1908861f0efbeeaba02e408e738eb77255d4a4a20128d
+63f347b370599b36f67c33549e5cd6ba7f068c4adea8b5f25270934ec51f8054
+165c31bfa95c338c35154228899b4b0b50c0d99463e6892c18b3959944dd119d
+bdcf18ffcd9a827968476cd276fec5249147052864e1f1e87b311729a3df1ac7
+8b35cb7d25a718b77b7d365627372f58e09d0e79a67c7ec8b997a491f2ad162e
+6a11e3708035d370c04fa5481aa643c877a37e7a90cc7e937d2fa319e273764b
+2f8c15a2c953c1955bf52471c7b92ae1dcaf443660215cf7784a5ead97379d95
+f4dd7f3b29c68a0ed0708a6677e0d78dc5903fde30c937a5e0d6955a1bfc9b79
+32dbde62fe5b249b7aec562a5b9017e6f105464db1d55475d4d9f1723a551e2a
+5d525701b621f1fdaee7dc5d56e50bf46688948ed6bad9d93ffae40ec8239583
+06d22e1e829a17894af252581c2ab24e109d2dc74ad2401bb9149394be2fd606
+2e2ba09e8063489a102ef838d5a26807e2b189a216afe8afebb2166b0c8953dc
+1ce900a4a972f89ef50935b5bb0b9cd7534ced8badfe8bca241dea9cd3cc5bef
+60dd1511b7597a5d54ee3e0d8bf33f646801fceee626cd4846a0f5f211c47011
+7133c25bbcbabd5e3572ad56bce8e7b866f07712136f4557ab18c228c181c26d
+10dec3492bbc0b8dc84155d3152cb9221b9686f1b8b390ffa9483128764fecfc
+3811f908c74d878394edaf83f5bca828fcf55c22a289545eb5a68a3d3c6e9782
+859aed2b819bbfac5f5aea4d9c99a7dd29694124e2612a43e1576bf45e0163f2
+68f12d29b02f5bb49ef6a5fb53aa9f6972f297c2d9ea77495ebd433afe2c21f1
+34973f06aad74890ce25d8ddc656040cc205a67965a9f0244b738626028a581f
+ae6949b87cf99bc936ceff46a10ec40b79e023b5f14fcb769f503e6128b73eab
+ef81c5788019f21978bcbd112c0aa61e912aae4007220303de6de0158d51493f
+52ff7ca05ff0abfcd88623c110a2de074e1974c6965422498fb0184a1a98f444
+4e0f79cdb83f09eb93def7ead63a4a0f737b26194e20a5a040b36db0953ffade
+99d702b003699cee9811892f8fddf9658f0b02e52d5fc2b27a22de35ba53cabe
+ede7064f58c4420899a6a65c9e96b2ff25af6b6f70fea311908bf4ae06205beb
+136de3629b91a6ee0a11b3c4d7d811beaf69c101580a1fd7c5f622cf1638f0f4
+3ef9853177ceb5ccb34fe8465309fbeb297b39601dcc7536ee9f2a64f8e5e7b5
+7f481d0ead51c4385f3a23e102d3bb46af698caf040b1303ab1861cfa960d62e
+64f2fddb0605d37841a1c825c0dcdac40d45a2d3a05f50d5aa0238dea0445c4c
+22beb98eeb84ea5ce77dfe7c055922cb3accd76091785fca39d0cfafcce54234
+6575239764ebb27d589aadf921fbf220e919b3be7a1056605aa84636f6eae3e2
+518107e9c224f5068cf1d0d9c3474574eddac27245c50166879b8a5bb06986df
+ded6dc2153cb04f907a4028ca1add1c8b91563638aaf7580dca89f4eccb167c7
+634ef83f443e43f8e1137c2e49740e1aa00b30f7c3cbc1de04fabb96a5896235
+074ed28232362481328e50713a534642a3f6947a0132c5f38320b974b7f02b59
+07f65cec772ecd9d8a148e0c2766dc878168c3c7997f566921ab938cba4db9fb
+f18b03e58f790f750489f34790cee695a6975caa48052b5f600394131c4d52b6
+51627e63672d73e8e25a11ce12c2f30d7f215de0e0bd3d443c66fa2c81554b4e
+a229130c53798f22eccd4976441cfa73ba2ed36246c2b1dee4677e7b9c471d41
+0a6a356718e37f360c47923afb164342b7e56ca1989d2dd58acff7a07ab20838
+2d1da7c868b941bc74050b92d56d76f536358dadc1924d0ea8eb0dd3929239b2
+77628cde07daf62275542d610b79f72f3e65433cb8970f26818d30a7561a52d8
+ee3cbfd5bc3ba6f8bbb0099b9bb4be49ff9fcc75352e0adb5ba355691ef9aa77
+b9c5bae48cc9a28811b9a468cc47f8a1fb5b3b5a7b2be94bdeda2aa232fed448
+c209f236978aed9dffbc42366fff1413ab6b2b89f7b0adb6d207f5e707ca899f
+41d293496c258a54aa2b1685467c384b2ad7a78ccc03a20b5f185b2ba04be1f1
+59dae7b9271b6c0e511ee2c4eb4fc585ce072746992ebb94899e9e64a5f98377
+1127f04abba3c53e23e92edb130c5a511f7c394ed6775b02fb5605b6be6aecc0
+eefe4054f259d96c4790142d4187d0d179a3fa31a540a412eb04bdcc1fde6b95
+829564c52e9cf159be87be5a96b8754ac1aa52d1bf1b151d5f3b301668b3e674
+67b1bcb964e3ddceb94174ea2033adc4a4912ee012031aaff12e342c62b9a6b4
+d6e999f7b5c1b8fe801b74275725e0fc54d9419f8124327d3b035081d3b70481
+4bdc060b073ac2527db9b1ed07ca72fb1502190d347d0a81c8e0608ef22bf01a
+44c2a9133fb0447ebe86876563b94d1c528bd0d02c5f1c6ff7652f4dcf2f20ad
+3c8108802e2d8fb0724543e22d1fd8e1feb850c8b87243b0f185eefb7f746089
+8cee72f7bc03f6a8e8c91dd4c92735b0764c888825ff6caf11ddeaeb7754a396
+7b7ee0801a330c2c79ce163dbbe06fd9b2d98fc767da451e88e32ba83ad8b77d
+02cdba2b55c7c29d618af2ad956c649a78f7eedb874239a5ececce154a3b1869
+72ff83385db3f71167f1a125e0549d23523e27bc7c3e9bd16874786c080c9206
+a1334018708f71459891c1d46b971fd7c288480da209a22884cdea61c1965277
+00dc26863c97a122038add54e6c1cd71ebccb3b5d801bd5ecabaa8f66242247c
+7bc08ebff0c971f4e8aed0ab022e5cc557c1d8e592887466df591d246296323d
+161a0ec17f9e64b20e0f9980aac997e78d9987ead1aa1fd08d6682a001b2920d
+dcb84e9c0b8fca5ff694dfe2aef44b437ceb49b797dcee68210904ebf493e552
+2d7fd3306d43389604f9039c6775eca87d7ad1110962a65b11aed2a5377c05ef
+04b3a8f605e1ff10280df2c1469ef8168151623668b6be33c0d75693a83dc82e
+bb72883f6af2554e8c81a6590a7f17312cccd8c0edb6d24ad368e336a69e1cb8
+142aed16a3dbc41e5c37b7ab9dc13edffaa684f7ad1aa00639ce1776c82aa91c
+6d0c0314481b38622728d6151a0429d9a02fad31cdcf6c77eaaa64a4e43a8f91
+58c2075bbfa8c2a11b4f1d9e657396053ee18669ef59bbf88279dc9d99212906
+48528cc9be0f6884552f87cc1b7c9f28cbd02ec6ac3a9d73f334bb52eb447ee6
+d6b962888b242d572977c33fbc789dd3c80aa09f37c5cb68d95a54aa8b990e46
+5730b1032e45a9ff14b5230b60e834460f10caf2510a0bf8c6c7f1d7b6e5f916
+dcb4f8b6d37320073967e76702684a41d1718b824f2e4c0f6aa9f82362bcb6af
+31d332287101125c308e6712ea1adb3871579f010881b2f02494ccdfef78352c
+c1815c236dedcd9d2c8199a8b0e2efbe34fd3418e35aaaad8652d9cbdb3bc6b7
+3c7e2c75fa9f2cb608747d5f2eac5513890e190c982b6928f17efc3443ea46cc
+4638ef99819beffb84c9bf5444a02664a51edd3660f3d7886640feabc91a0287
+5660f13653cfbf14d52c6c6ba65144349406252744773ffd80e12d54fb992b90
+a6975c35a735384deec14878d0e9616950daae86d4461259fc309da3dc3ac37c
+41a028e4a5f058a7f59bdbec3fa767644d636fdffc076f55c637bd033ed885b6
+ff086fc545eed152d4998c1677a1efc1d24faa3b07df2b26ced91031ec7c8679
+6b8268e81844e66016d0c795e05e3f4b5bd7208b40ab4af154960e94978eec52
+8b7db5b093957dd95d2f2abe99467a67ea5cb62cd05b411395597ccb3c330252
+709fd942ece538d10fdd685c1076a701c2ee70db81c0b7022149af2207e5e656
+237f5608cd7652dc7bf04fa7ef56da1a6a434343b78b9373e84730038e17c659
+41ce7daf941c6b4ce5608b5db13072445d95f40a5941529df4cc2b737c67070d
+514217976ae4c38ec00c84612292a0e8e22d6c289147d71584958b0484c02dd1
+d4c54b84b613e1d2f2f072901e814fbac185e96798202804e1cab3bb9f45e7e6
+d7fa36cbed32655c7620bec5c8391c9186ccdfc872d095c71285272ed2355233
+e8f48ff490471b59b07fee254eb3b2d8c30571fb65d83839c0ab96ae499c4bdc
+7cdf2c2a25ca5b90d855074623e3b1d91d68f08b31c9e6888c7c9a8a9c3e02eb
+170773a1df62c502212a8cedc27d69f385d25e5c0e60c9a398b62f9fee80a308
+2cf294495e00d9e59eb30935a719b7bf5c42dc0d1f57fceb4d0b00e47ad1377e
+5c2d58488bf4edef53d22eb65be84b813c09e12ebe90c3ba4ae8a3ddd9912a49
+14c27f5ac98fccaf435f2c71fd4d36f1ddf24752b4375d87faba0a12594a3ce9
+31a333623c2b46f4091a0f12ac536494a9ec2f16bd56c137de04756736ddf48c
+ab60468db2e39dee0301fb563414c49e94b04dbbde7e4f03aaf6515988f2e371
+453996a5a93e96c1f944cfabbadb3f516ea3173ff3917be94892bb54f21f194c
+9ad2321387111ff0d3b29427f479b285aca78c830d2f904a5fffafa0f21adc95
+31c026dc2d0c6844117d76a281dfe4928bfcf7024284332a31e82672db4dc48b
+6b4316f8be56b6e0eef6215f0a93a624bd3fce585d1473a18f974d37277f8146
+b096cb404d5c3b7fc1ce1a61708864ef6d47802757e442f49b3b0910753599a8
+e0a5c43843da46175e2572bd67b0d73e74e7d7a2019014da14cc0fd564b43a78
+b4fbe2cd4e257011838454b076a47a3fe43a1de26575ddc1b0040f6b31ec627e
+f9f4fdbaf9bc94a55784adfef9938e048b5001ada29fa393fdb2a55aa24ba9fe
+c1f9fafe4f484de411e4dcd30e889e5a1f81ff69e8f06b8bdaa89f02620b0903
+b8a3404434cbadb222fe2e9d9527a80e3c1c802144a595164aa50bd0d34eb8db
+72d8d133c93c23189146b302859d6762db78e2ec6b0495b7da841dd317b9fe4b
+a94627849d22917d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.1: CMTI10 1.00B
+%%CreationDate: 1992 Feb 19 19:56:16
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 38 /ampersand put
+dup 43 /plus put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 65 /A put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 83 /S put
+dup 84 /T put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-163 -250 1146 969}readonly def
+/UniqueXX 5000828 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3ffd20326947b1065649b533eb5e9e3
+a88a87fe987918a687950b26f647d6e08bf14d983ed1d4a8ca1e2da8d985f944
+2eb916f5b6ed0697ac7c33e1e36a3bf460d34ce45f1631871097cb04f18e3889
+4cf4ac1538eb19481311d24fe3be7beaa4a3730e8b4831fe59d6d9ce2e46116b
+629c7ba2f9ce3ecba2f43bc162a5a077ca1b2882a42afdcec3f4b75b5d63e0bc
+8e5dc95257766d8ea467ad9cbaf47be60f797580cced6884b3a68f70c91f4fdf
+80fd00ed9139e7f480dc3a76af72ad9b434187730bdfaefe4cbfe5c7edcaaf24
+9204fd703011932e5a3c27be468b7dab69daa18dbbb6335ab8ddfdc607961c7c
+02582763fa069d43563ba17704029945cf42fcb19cf78c51df0ec4d851086d43
+c1ab38e865ef36865fff3a08b01cbcb070ba4893f7482dc7819ad03d337e520e
+7d8cd83bb8ac7aff4df36751f4f12aaaea2b6d7260c09a26e987c904003e0723
+7dbcc4a8e4e85cd3259f40d3caf55c742cbb40ad0db1044c20a4f122a63f7b81
+1d945bfa69662189ce4d089464d2ead9f6ed60b581b04114d5d45e97be27a576
+35154e9b8464f2a0df18da855eb51b8f64d3054b0b2e84621f025a0776d16fed
+b988a43d2d64c32768dd106b9f541ae8e68ac0bb7399e16f4d4ba074b2152d0a
+4e9b5bfc21bfa0d531e28165e518ffc054dd4ed0d74eca079d20e79670419f92
+e03bcbfeecf3554d661596f6f29e12170804d15a250d917ffe7a8b6e8fa53047
+1ed97ba56481589a65ca13619129f1e26affe6c22f0c38540f8ce37efb6e9e9b
+60b51a5a9cb4454fd7c7f92f2f9437159687ab590f35b946a54491a7739c9269
+e0f1fb48b129811c82edb3171cbd5105fe65906974db8a7da92f4f43dc7f6b36
+6981146d86d23613a0b38d9d6191db9fea0172e982cb1cc50e382f69da1b377c
+1be9407f88a2a761b56f398467a057f35d18c01cc377e006182c891ec80272e2
+2e3a5c7123cd27eccdc87392a9fdf63bb40f02b7649cfc53ef933c6518744cb8
+9cbbd437830ef5b1d58b00b67bbcf4426dc1e6ef583b0b4ad3aebd741e3ff0f7
+29ae271f032019b1e7268043fd215be590f9cf24da14a90f1683afcba8006cef
+5d5632c2481fbc1bd8224e8952debb7c4596a237e5505ac143180956ca1f603e
+ec70cdb4a33e1c4ca1744adab17c56e805c5a53b130f561cf0b9bfc0a5c7fabf
+7f588769860fcf171d1ec8dde503be1d5bc14661ee0b58b3e0b44105ffdcdde7
+226998c87327263eb3068901eab9346948123542562a692428d4c5bdf5383a89
+e91b0f3c4a3a8d354a8f65db222c6ce68a24ea5a7c6e1f74a9949c0bf558bdd4
+fed9f763a1cf051a2ef3f1590ea34571e5cf76a6b3356731ca29b705c055fbc1
+8a1d4bb173dffa190ce8828f3846eae57f6f0fb35633534e52ab09708942aa24
+fa916c5d9f4836f8680a193e0efd91c131033b42f6cb1341b51465b82b39e558
+79034a6bd771de879d2f19c28b526e2197606761cda494b04ccbe8ad0b4ca599
+d0ff16e66b4f012a14e719b985303a61d31d8b51a0895a254758867e0a26eac9
+e943c43c1fa607c663e700b940fc556b5baf45540261314aa2c1ce405c816d25
+e39947de90e41ade48bbbd4b863fbb0bf2ab62eba6b2d8d4ae71ef9a86be8037
+849f5dd68cbd46ee059551ff175a03b411c73b36fd72fd215dd8427b35563a4a
+3a2a0c338ca47917eea8acd74413e0c0a5eef0ceecad1690d5c32c59518d2923
+a7aee97be2f0cf45e323b6a3a4ae0f99b448db17bcdcafce2bf88f575cadfb4e
+859b12d36899cde368ea30e576b93348763a0e1490f0f689a5b17af4459bfb55
+7e6aca847093d4712ee5cf2308603f7d37af16dbd1aeaf48ffdb0fa1acbc6bf3
+b41c19272f93842138dc961c9f96135701d20c0300262b4d7ed8bc5c4fe4c739
+8f68549bc0a01b6e70f16ca70ce88b70e85817d1da306c4e3c23d79e5fafcf06
+e3ace5f3b8b070fdda1e22b2ad14a7bdc90ba15a001e3e71fe280d0bb01dcc08
+b915f563d898cd5bdb51340668bd76bc7f5f43289f9644ffa35b0140647408ea
+96ecc521eae3d568bbcde8d05f744ebef54d62b84d2a89c3960a85b3bdd7e67c
+9fb502eebc4bf72480bd5e5eae481d9fe4646a56472b1f1fb401f6183275386f
+5657c30817f75ef3324947f71e31cdba96d231611bda2901bdabe50ac833986e
+8fca945c868811f9e1c7b0263cb0f06328b4b7eb8388d854f322ada02dd344ac
+46daa68aa18adf45f28f48142db76b1f1840c7a50056bb2b7ac854cd71c8d8ca
+75537ee42afb3ff141f191d5fb5e39142e2aec420c9e0b343d2629de3bfe9f39
+09136246afdaaebe8c78fb8123012085baf9aae69deed09c147ef9cb2ee13349
+7c9eb0c15dd0fe6cd083cec3d15b136ddf72fd485e915dd38f608a28ca841058
+47ed31704cc87ca9da13c22b3b31e84fa6eab658afdfb671800275fa65ab960a
+cc9b2a56f31a48e83399ea8f1e64f3449d4a119892aaa694167f06e9f6da4206
+f08333db9e2c892098e2a46e72b52a15c166de621d89b6acb7aa08b615c6abd5
+0ae22a428aac025323e2b4653671c1da4cb12f62d2d1c7b2380bbf45731f2fb1
+c98b0d75cb9a064fa0dcf657e55f1566bb7221971af11e3857dcdf028abd0102
+ae3f482f1bee29c1ad29463e88a3ade22b4d676e46070a0822c24a9fb0fa61d7
+cad2b0a2bb305919a61e0ac4e6a63e4ba1b37fe65a3c87b02b36b9c8d1dc9dd6
+48c2853ef87a5afb9174c0877ebcc96d65790a78de100bbfadf0f0f69e78a7f6
+fd2699b7255555337cf52c145c58e4156e7b199ec745ce6d7dfbbb02eeedeee0
+aedefeb88eefac25a2082bd417607442e4c8f679e973d490bbb095098297c292
+39780a1e1756afb275033b421687897810fb6f5f4c0021ae1687891a3d632331
+33b413e4b410ac0fef220f6764be7f630635a0bb109bb22d7f8c8265cc88433c
+d2518306f16fe01865db8dac630f214aa89618bd1b8be1d37d4bd29e18a7628e
+1c076baeac0a5e103c66ab505e4c85906221e02933df2aeb8dafec6aa6bfee18
+bdeb5b52bce43993cbc3ba5142e471c953c274c8485b98faa857b8bd092c5b50
+6bcba168998ee4c78ff26bef4d32e892be322ed90f5ac84e1ea7dfcc39c08973
+f6615ade89433e493e90f7861136dca4e104da4a244d71ad38881e74355baf2f
+9fc3d74d0e8c44e6e1c452ad12a1a990f703a2d1ec74308f713404463dc83917
+285686bcd1c77625dde59d60b42539cf3a58c3a7f20840f02705e557e4bfe293
+c1536cd0b3c100bd754b0bfee743304a6366510eb59687afa56a05c903ed0a53
+06288b04c291ea71eb8fc8e6365ed25918356d338f0da2de79ab0849978b1346
+fdd96945a02c280c1ec3f3443303583a36e14ec7cb2aa92f664a3b661b9e9906
+5f5591d30444bbced858c790b40ba63ab06f71ca8b56be834cf3a89cfc4977bb
+9297133227ddb096b4e8e9ef83f825c35e2b8bbe67464f622ad2bdd959da0951
+5d1b2515723613b46048ae66be1d44a2639b8191b10822a2767ab826768c3748
+93378aea440775ba95a9106f9423067e5ae31bfc70ac92425317cceac5d10599
+1523cd4cbf1de38bd92da5a1745e20158fc4814f274ed810ce4650cb19f2356f
+ebed8416d468168b749eca1fdf7c7443a38296a81437a76105a5fe3908560ad7
+c7cbe2c2b51e2fd739210f3e82d6fe26ca8f996222d11e99b906f7e7131a5c98
+ea7b8b6c1637e4176d8354fa5a1aa5e41d4e49736d731e4e6d135476acd98adc
+f8be5470958422d3d04bdf18d43288e8e5164436dd1acccbf9e06bb767157bac
+0d0d24809dcdad1e48b9eccd0f9d0e3e1424885dfdd736e547aec9c25a324ced
+83f551b26d4ce06c2f75894acd9d1ac4094cdaa5d2469f8330901d65071a9d52
+5263eaf5199274857428f2a473c771265c979cafc2ca35e27e275e810fa41608
+1917aa53804cc756aa538688ba05f3fb02aa91de8abeb9c657a1f65f2fcd546c
+b87bb53c8108677213b44efd89d74197d5cd4e92fe106c3632d86e4a81c58a27
+dcc2c4be00787214c24654b3a0353fbc23dbbcd019ef55b91efc5e30fabca167
+27475d716f1a97ee1093962d7aafa30648d2805eeb44ab03e2dd52db224d9b91
+4f6ed61707b5a7b5088d3de2b148f5a73c9716ef4eed90946732da4cb3a37e3b
+b68b32f7f9e2f0ba060548854414b24094bfa43ee8dd0528d2dac0774e395ecb
+330c1c1a9838361178751cc963f457ef3179919d339437cd707d372b5f5ad454
+b672f58419de37fb00a87b1b92faddfa978677030e8ce28482860eb6ec5b71bc
+f282da135519b640754f11adf77d296b017ea5015c78be7d2c363380e1c862f0
+f4dd48360ddc765fe374fd339248e4aa15f67ce1a37ec8484f571e43d31e0d43
+c8cb8047d722f13418fca78adbe4d2103dee495062d63a35d4efb6533b7ebcd1
+1a2af25f11b3e108b978d7824a34af02cbade0ce1698c75321b4ac61ad1db3a2
+ba86852a59d79d3cca36696507466448eeb5b0a3e5b7bb7bdf4094163ace420a
+a0789ecebd6ba00ed92f02f0e339c4ace91c363926d47afeb41945ef4702ddd0
+28185398c0a56d7c538d28eaafc7bf3638454120cf167b7667c1cb9acdec6096
+44e1ce3a3a98695d20aec48e4e3ca98211d459e0eb17b53db722d0bfedcb285a
+d4fc914bf67572e1bb8fdcfc44de0c4be9b61c716fc741af489d9e0ae4280687
+7aa689a1ce54e31b7ed2a1b29ce686ebe4b14e0578a670501af3060c3c5d740a
+1bcba8335df8d748c4f4474ae8e65456e49a345dc9676c92d72cf3f1deac86cc
+e0fd2b2e91db98a5625113a1918f985a2c29b321a54b724475b611d6b59f9747
+d0415a6f1c7026b3a94513215e77f209c1bf61e66d69b52f423db71389ba910e
+796d5261b4eba192642865bde892e8aba341861ffadd383b166d5d7ab4d5ff74
+8a0996cb85cc686fc922a71870bbe1e0fe3a835ef788ddfaa518e3a429a3ca93
+9dbf6514b23c844511d2061a1c9ade819965cfe016ff5da2664794eb590acd09
+3740b03b6fe0b1be98e3b39a1bad23ac6ba58eca9e26f5ace36e3b32f671e63a
+32f3398ab61eef2a586a0b9c6f1b8f5198339d0f1e06a85af09b4648f367fc8e
+a22a0dc1f643db5131159aad74ce6686ce233d29489582fe6f803644f4cdf62f
+72dc6286149e7793999facd726c84cb4707d8ce203cc79a66827143271f72f51
+e72cc2545c925804d85c0e30c860f97d8536fdfeffae17a541f563456377a405
+a0f60fb5064e6bd60870720658f6b673b5679de25b5a51e5b043783a2d0f5b95
+4e518c6b445ed54200dab0a7dc89f32cc987b737aa89a5d0a44c004f0d1ba6e3
+12cf934b6c06a3fa7c489cf80d2f6eadc4a3bc32fc7ab5bd18ecb5a6020f619a
+8d53d3bb698b6b1e8118108021c0012d81f4fa3e4e9f3e76b04f3d91205a614b
+b60773bf1cc0e60ed0151710f4796b5b157079d2adf14f742b78959bc576e51d
+9d099438981cb26997442fb993719217389c8de1219f41b86c4dc7d4c0ab8ac5
+60bed807792413463af58ba5ca8a20e547e390819d3163a4e56b830dc7d3aeb6
+241b37488a32dc2ad76337b78ce5edab51f785e85981092c9b8328c0eb3a7c53
+b8658c531906e164fff5340c1feabe51c9f8360de1e3c35dd61456bfe09cb585
+ed042398a7256eaa9c58aeaeb02c869b76b9dd22bc7e345947442d01cee8a673
+96e73836139caa4dd5d28b08ac6bdb00aef7874b64712a0c6d78ced40bc92ac0
+2d3e5c700ae64ecafe829a0a0824a729a5edf4e7ea4a24ddff163e59a5e52528
+9af99c6560dab9f75256ca305a82bd4ac7cadc6f86f86bf463c5a178203ad994
+d3c4350bbed8ac80ffbab2a54f884cb2cb1bdd99b2d90614d4baa0cecbd2672d
+937fb60aadee539600c16aefc3f87ddf88dfbd66da7fcc619283507c20c06099
+768decd0edc5ef8a0b1bc8262ad784a715453286e7fe698fbc6bb9ee010d34e3
+bfb62883e277a82be41e59c66747367ce4cf533c81d5189c3edf5c3eee9ef0da
+ae0335966f0023c4b57512c9409e926b5d39427843986f3367a55345378a1998
+dbf893b3d064f608b957c5f048f05b400adc2b21079a182d6698b9ae01429232
+82a3046b137d483df70991005bec8b6a475e3eeac5653eca0e037c094876a868
+28b9061960ad32226aec29bd3e88a9d667cac4bbb7568eab452f01741d47747d
+c3ad7da2c37af540339d176fc694dc368346183c1a87cb4ba8b8b30309c2e854
+d8d9895995520f009ac5d87c8916e2a4a43ce91a795bfab74f589ac9d4dc4cf0
+05a7a7129790ec1d3fb52c43c5e40e0deba1ef6690cf176f2325f747172657d7
+f15aac17253a4c806a5ab819a8df6c0ccb391865446dab9791652894a7887bf2
+df2aac83ec8ae95190653123ed3bec8f6ff9a42d1684f9472bc3a689dbedf02b
+0ee92a99afd81312790f37617b1d5426920d0f80a27c666e25495d969ce175b4
+3af53f6e95862719b222cdbc1874120102af361d6edb86aa585742a19d1ea46d
+14c1b477606e6f8cc70c802d1cd305c6b3b462ac42eedb7a24087834e1f89df5
+68cb52bba0269deb78199eba0d508ed726f5f7b002d7b5abb264432d55eeb390
+eef8aebc6867afeac6b961deca94730288cbb2cae38982664dbcbf0beb42e2fa
+e626017ba6d7be2f231eb2553551f851e8a782abcc26a958b9748e821b7ec56e
+c9bd8386b13227f7b8d477fe08b90042c74c4461ae857bcf6deb55cafe19e1d2
+52af34368b2dde58a9e4b4219f6bc35d0c72f0fe2c7418df94b4b088d9ebcc66
+671fc9074e1de6fbd8dab311a97f5b634bec5310dcefad076192ec057419106d
+a8568304259fe8791c0aaabfd2eedea9acc6860ee8e06ed74875f3ca9b52d6c7
+9599252b2f6e1c1e3603882e3261755328819f7267fd005b00812464245f6595
+08d906765a5ffa9e93e40de17d04cc0f4b76a2fe36a393407d72230f5b056ac8
+5371c6b2a3762fd6a8b03f94deb7ac2ca9e45b8c05c358632106802c7de291f6
+327012db8ad3aa3aabe1719beed9002c7f2a516d12264e6b5d038f6e5c46dae8
+86d6517e4adb747fa3661f7de6ea3cc141168503d3e8564fedbbfd22f28ad86e
+e504d80de739f1338f4be69c937f392b9c95ed7baa9ff614fec336f1a087376d
+3218e0d00211679f57fbc99d24b82b57e8fe6cfac09efa3c82d7e74613a6c141
+99bf70d1b7328cc9653cd6b6fee9dc93a7088a3fa0527031305b46e7f7da5ae2
+58df37a649a60d4e4e0630779bd8c5966ecf1ba89bb85aaaf78036f67b4fc76f
+ff1a7eb28740d428282bc7fdc1548e1028ac20af94393c5b829d50c1c42835ae
+08141639d3a5fab235d84cedf6f14c16a9eb85c062b0f61cada3d71c5544bd1e
+da4a502885d1b5184730a45c83446ff6d0627e92d808cb4e62d28266ba9cadb0
+8e4f5f1bf7e0b3b3f8cad36d1bcf8a6c4489f8431d44011ee795aa09329823da
+fe7d1e2ac1c70dd4e52fac349eb273502f8dba1fbc08e9c99812b54ff43179d0
+e7f2c3e9392838546e3b4cd4cd4e72f767540809cd09b1869a7dc2d75c1b8901
+438cca2378dd8a47ab03e2099c9efd357f0da7bfb3f1fcce266851e649d85565
+792b33227a2a8e3013aa0dca00eecb6f051643df284894436f86eec0f6589d04
+abf6d2e1154bbe5991d793144a178ff7dea11267729a08b81cb324b4f322e07b
+246a9eeae0d5d4d1d867b36021b76e322e26e9a40906f786e0c7d3fa30b633ce
+8343db46069ff8967cdea155e88891441300bbc785321fce672dbefc0ae78a20
+9c866ab3ecb154485e27fc7c5f61d957c76644e625cf34abf81f139e05df2e73
+b33683bb8e8c27ea4ca8b61916fd0e3f0a15dbb1a264d120fe8afcf72de70074
+4b6c9c3881b9be8371deee6551ebcb26292da903f9e1a491e20df156ed0b26ca
+03f0b2d284161c234d1bb50ed4dcfe19a4374aadd6234299d04517e384f176e9
+924021e7f812a0a655470dbaa29512849b9e610792a7954c77fff14aac2e8d6e
+7c14d1f6f2453112dd2a43db90f3cc50e67f8a48c485049f7b19a7d54c22df51
+679b54d99604be452a400eb3e5982198840d83a469d1888911dbed3030b03be4
+03a622ebee1056f4a700f361b9946612d923f53b1632b576de370320440a039d
+086a913f6dcd215c126bf534f906222782957865b24e8932e5ad7ae099cac5f8
+5abfa76991b65c14f1970c0535c81e96edd22135ff8530a54a65746aa992dff0
+48efeeb590b34e77e65434b946f838b4665002f8c129908d0bd8fe67e7660921
+2ababca827466e63c094cb501a0ef4caea34594885a005c503449af328bdf656
+69fcc6ce3edcfbcba2fe11dcf07f08fb4f3c90b51946e343350d1130816407a6
+53c01c84c2ebbc6a93bb70a7c39f55e9bc6bb72b263ff5ce7d058cf6ae23e49a
+d8028900cf0e96c188d5b24b827719fcf1208ff905d862be63539c03619f9b69
+84ce6cc53f9e4230dfb51d6a6c5f547ef6631880865e61eda6777be9f1cba92c
+a7b20497ea9e3f10b4ca0586f550b10fda97f393421e7af2373340ae37418ddc
+1e5a096f5665c6bd5b332f357f52f029056c0eb370f93447672aee28bf1e1d61
+61569eba410a26fc9cc7360aa0b34f18cd2a722d2cacf49d77c4fe8d8ed519d3
+c81cde1e63bad59c92a61fac01b3fe4effef03360ced2ba26a01bbcb12a891d1
+ded6c8d6b0b5893be89c597e05f6009f4d67a095cbbba336a708384f885cdac0
+9f72a3fc7aa79731b73bd6775b21df0abdd4c6938ecde3fcd2f21ae5d30d89da
+93e41bbecbdb36e957247c5927fd61de71cffc0673e27c2942ca897796aeb220
+dafca4a89b5d1f9d5a9cdb2a38f92fda9432036b188ca2ade7749c215d20f2e1
+dc31ef27a8d94fe7bfa2e1c7cf1190b6b03e9e0629cfe6036c2fe9193f6ffc49
+8319089481726d968315479dc18476ca4d92ed05cd4785b4f55e898ad9b3fb69
+7bad9086b3cb4e59aa374a5156083777182dca29f3ce67a74871314d5d6f9431
+fac339de5189615eb08b9b431269fb9effa2adf5a9e3a2a736133a913ae1e4ef
+77bc50b1bf5441ba650336d768b3c6b12576816ce26ec2fffa49a2b94297d4a7
+1ddcc355e6a962383e3e42094331c2bd91dfcd22e0fabbb76bd07fcf97d3d12b
+11e64ed53df961c83a3d14706525c282f9c71f5affba94dba1bd50d1ba3699c8
+96d6283b829a102801feab035638360688abb3270489d156310daec36f88483b
+192bad57004a2ce1b9c987e4675fa8153919817575c86ec76f4982a122310a57
+6490abe1cb90b6d075cd54dfee5393dc849a86328ba2c9ee374a2ba4fb24c9a1
+905aac0aa9bb87ad90bcc06b873387647f636195857ac72042b941f4dfc8f754
+859365fc1924ee7c1fb52d601eff2b5a276d96b60b7f1d4f8929a56ec5de67b0
+b7e636501300594a62a323fa84637a3fd07932bf3d90acfdf35792b599627f55
+d0ab219a681215e4cbda20a6b0a1ceebd740e6417e80b37440366e4cf0738724
+dc4670e0cf5337c2855d7d179155aeabcbd45450a6587b980dbd340cb0b50afa
+93de161cddf360d7dab0d16d61788d24338d3e22d08962962c90e84d6d4644d7
+77777ab1a5c37bbd3c8097d5b5fa94308df6a02abebeb3c6f63272d91996b30a
+2e0d1a12afc5ebf58ab359fb66dadefa524735105e4d14ad392f5df88481cd33
+94a2b6ddc0480907a1e02deee80b65e79b2664b0b6bfe1a60fe3d652d2cbbecd
+d7593ef9cdbb104093eda89880e2dcd3863bcb8563b0273ff2b0172b56b06a4b
+03edc90ca21309650b9bb34311a9538bfe530b93b81a76e4c466d21aaf589472
+c97b63f143ebf9431dd204c0de711e5ae861649b959a2740cd0cf5002e10e392
+19cee349e9068d17b68255757eaa15ef5ecb569e6f22f777ce5527310cd23f2b
+1053de040bd6f4f90b991371c6ebb506b2c48e22e37ebc762d62a3095e93991b
+1cee76dcc9767ffc2ca9f5e25d5153eabebb123d6f1b7700ae242f79eb3740d0
+e110b7ffdf91872d781a93dc79e460f677fe3ccd2d376a511d896e224ebaa265
+b64a8ee0fc35df6a3b64107f9a53eff25214ef346b7cb6a3feb714ff24b1feca
+4db1e28a7be755c833fcec1213e8ca258bd50f4b6e89c0988437cc4590a2065e
+45435b8052bcc08012e12e37582d88626b078f51bb3ca1932c3cb4e9bb1b6338
+3220381cba7bc62cc6cffd7ce7a33ebab873d1884e2112532c28cb52d3a73c4b
+e674f67909573ebc9115a276996287c59ae0351dddb98b160832063fb11ebf33
+6c1a1af97a7ad4cadfcbadcc394cb8f1b8b3c96d5865a94d6cecfb8f6b6c2374
+56c9fdd3d5e818b24a8cd66d182486f990b25c03e086f2bec4abe44767536ea9
+fec5e6be8df763bc89c62d0885236c75a3d6c8720285b3e1f8a5fa682bdf618a
+36c2d701aa00d15bab2f7f2606202846b77472b5fc88694c2bda2868bc7547c3
+6dd03ad98df0e49fbc9e00abe7c7b20a6e0d3134b79525baeb75c77fa9f58d4f
+9fdf1c7a3f1569702e89e835b0812eb2a7afe87475ce26f1ea227bf47588d5f8
+f3569e0f6c55c1c152b1c151e6e852d8ddedbdbf940799865f64b24f9356c0d0
+78b016a0e45bab07561c205637208bc75eb1d52f4fc3df018887333891b0af47
+ed062de2287ac9b3e405874d4542f196835be2acab5bed55ffaad2772f7f0e5b
+bad5a7908095889e1d6072a2aeeeb9175952278234e19dc244ae3c3a89b97a3b
+bb85933e24ba0c387c37c909b9df2b73c61136ecefb3ab03cf19c4b912fbb945
+c99058e764b93da4d46ecde7309f5baa1119de885dc85cd3e53f2da5b2d5c87b
+70f45069608d3757f534277db02fa223289b1621b820f3dca3741eafd3bce322
+cae2e44afd1c0c2a5bf01253c945b239decc4e7c3b0d4720eb5bdf432ce3a5c8
+f5942565b17e51e09f8d3d9014bd2ab279cc62804647a2d20847d7fdf0f24473
+654a7b40ad04d2d09698a8c1326421dc7108b57aa4aaa52c4a6b59c35ed78f2c
+d7deecb3b179abbceae80afcec324ed0eeeafd78f346ce43b0ef05502419eaad
+8c2d81351a0fbf8f7c3c8df38883fc240ee425396b47d93f7b1143e6990d0146
+56f376055e5ef6259f2b6831f37ec2f051021e6c5656490b77e9530862815292
+6db996e2694d1dc4875f52946a0f54621e82e9e139168df12311c4939b374001
+d835359c5826ceda5b41380a9998f2f028eb37d85778bfd96272d87a54f21e6b
+8b90f34736860930e9eba352d432bbab631efef97621105ad0c1ce3f414d6f31
+e8ce974edd477ffeffd5e6092fa5732f439bb32921d4881e50c7cd38205367be
+c481f9fc973076078dfad594b2383003c6ea0c7e82312aa5f4ec52b0c480c638
+86056b534bb660b61246788090a83fd829b1154377d26fc67bfd9bd454f156e3
+18a0e908e460574f2e65e0b4f4e586de289a72db34ba4b7d9e573a9ea983823e
+6447e9cfd79405ae6508a391bf34605e315c40257e9b345a60bc79158bde1433
+92f62b5c386108d248e4f9f91e3b93c614e79545035d7faa1643b6af2d7e0c23
+2e1bdc54438016a7813c548b3d9e3a2c0cff27ea36ea44efc3889fd6b69aaeae
+f99910d4f1d357873bf4523adaa3326bb5035560210e464841f081c9db7413d2
+6d98ada8056380da11d2cf3fb1ff1e71faf7dab1430aaf2135f63b6ec705cd5f
+1190765a8fe5ec2894a5f2bf8604ae2dd8817916bdebb26aa21d623a843ddcc5
+d92dd7d494bf01c36c50378eb67bbc6b26920daca57213b2f285ee67d745a67f
+fe08a9549884d6df1c0d21a7281bb8e12bc0b0c99d7a4ba37094bcaaa30b9ecb
+9d9aa65b244786adee09e28ba61b3b6636003abcbd5d13fcce6d32b9850125b7
+260e82647137f55aa93ed1b7debb5b0d8fe611c4e862bfb7d57385a37a3dad8c
+f02e52e3822d7137dfabb10d8ba0a8dc328c12cfda2ac530bdc8dc868e4a787e
+3b380680c60a4e8522f94d46bb9e02ba85e4b6b75919a0dd0d87d92e32d000f1
+75d36ae2dd549e0c20788464a750b438f466146ec9641236be8710a24ba68058
+160dc63c092f5101fff6b604c39cc7859b0887334a9b3d2a8364419d6301e633
+2b5dce98e5b4759304f57518537646c762e54204dbb408c9c4f25d8adec178b9
+bb690b351d9ea02c3de3b3da53774996e75fd2b76153650114e14e6c0f95d109
+c75a24b08a3ccb9ccde2f23a842f457980cd777ce6bd453ff4b18976b70d86cc
+a461caf381f4ad3eda40e034cee52623df9db424915de5681debf9567f73e37a
+9f7ea142c0f2336991c009e2e74de0ef863a29d66150f0761f37235859eada11
+c9277731315859dfa131a65de2481aab8e9062472aa70c673a7f06d7eb2608ac
+da9521d607e2d91295489f88e617a501ee245f38dfa69fe929208e1580c23ebd
+e53b3f2283a50f0088410a7d9c11bf94457b77f4ad6f13ac5735cb3ac490051b
+3ad09aefc41f3b6e112b657c4b65b0cba26b9b709cffab8f1b319b737512410f
+608dc3cf75d42537badab4800a4c497f8ca05626ff681453898a1df048822e1d
+061de8c3db6c4019075167364c55fbc5235efb0666e60e695ea5292ee7a6b86b
+bbd702353bbb25e21e2824d98f99c7debcc0dd24a880552154654f07639b3b9e
+bb3c295968bac9ce6ce6aeb13a4948141ca3cda3e8455ce4461ffa7228e52b00
+5a52b79c95d248aa09cef9d576b908193131f48da270fa553088e879b0bf78cb
+e8ebd194b0075f09a48f461b3941a7b4dea42d06ec48e4e057ab60424ab8227a
+4b5a839a86cb76f8a5518449a9e16d50acdf4e5f78ca7545a0aba815dd750d40
+d46774ddd186e9918e5b19c681344c6bb5656189d9596ce858d812144e1f06f7
+2be6e2b32279a9c62af1fbb1b40a36a5432441927b56c5b367176ff17d46e775
+b766008655627cb8c03c0bd60844fb8f82c79e5268f85582748cacf4b99d5285
+5486c1f56901c09b18719894c23edc2fd07aa3b4feaac9ae518571cd21c401f2
+8b20af6528de85540f4010e3091bff9e0cfdb6b5beafb223fec4a5ae72c1afe1
+e19b44292acff38cb2a68708ff275643f5e319a9dde48ec388abb2f507487a88
+8fe20037e7e9af046283d1aa79f2ec6f7c4ead9f8a825610db5f150c056ec99e
+7097c0f96143856bfdad234f17ee2a17941dc70c4d08f822b30fb26efb0b46b6
+217b991f764311346df9ea1e9098ec8026d11fc7211f16640c8898890e16abc2
+5af8c55423b0094309e5888d625ab07af903d5b97aea2b2a19d463d5ecb59b1a
+3b8aa6e761e1dcb0ec2ed58b77acf1458bb6a8f7a842020e25d8d830b2b6f73a
+f6d1455c09a00714a44b62c19424406069a8b66a712ed406a9179959c5c4c682
+4433883316c8d96587ca6526232048c21f7d7ab9b0ef40d1a5b6dd1fab16546e
+7ff20543cce576caa4f7b570d30cf332b31682d7dae8859d881cd7455d32801b
+bf11ac1e26de7f862b1bee9da46a3c8d66594814726023abac4e83995df2257f
+6f2efaa2728b34ebbc9df9b13bcab2ee9c3df8a987706ac9949fcbe3134ceff2
+6e8787ee2ad67fc668d7bbae89cbed7727ab3c04b149f0834cc00e2638e8956d
+cd92378666a40bb8eca84ad3085fb57870ae944250b9ab2977289c80113c9ef0
+7e552920b5d5b52f98eaf090c09f695bfd0c29c3bb6f6ff4a62b5c3d991156cf
+a3010bfb797bd9830d8b22d7fda023e7ce7f6bc6dcbc3f91f4ba4be9a63af5a3
+e0910f9f8b9cb1f3f0127c5afbdbb86839d10916262d86aba2aff5e8f926f37e
+702230693854b56c2ff9e4ebfe81fa61baf7a44eebd2d729b3526ec64060a69a
+1338a54e87280ac3240cccbe7cc05d70ed9541a01fef39fdb7da47dded5377c7
+8070cd62c61f628110f11cc91396ec99825cf70301b1c99b02edcae9583191b6
+ec09d1f59063dc4929f8af3e654e2b4888851f77e5dd52836820787778daba22
+d878479b997efa3a606a0d8a515a4f254f4b7ecb78a2ba502998789bf7adbf14
+52fe519122dc4002e3821090302572821cb90eb149be99a4dcf24a6e281de56c
+9ff41c3542e8c433f91cd6cec84d95b47f0b19529018cf21d6fa56cc3b9e0437
+b9881ca5577e50b1e9ed4393ebc9d8166e6f81923d1f8f0163a9c96bab8756ba
+223ea53a160bd17d820dae3f59c8d19b363bcf66d71b6c27be9858b521e2cd7b
+56c8b218fb03dfa4719eb64b88f5f21e8391044f71199cbcf8b43822a9b0f108
+6b7b6bcc7c8b81b728c67f40946d6e70012d639c51e71b9b385864b2cb3afc6a
+76d25858178da4d8bb4fed4085fdb04d0468d6f578f93ed502974d247dba9c57
+5136f45f82632f8caa365b632114910159aa9d002db7229b88e2bfa36ae1b7ac
+ba3ee9a38bed69460e54ac3bb625fdba5514146cad417cfbe33651608b1fd05d
+b4d4b15fc81e74339ee0c4fda9756fd2566f53e0e774102873f1181614684113
+c9c883a0a78fcbcbc7cbdf49454577694a76b111586d658dd159cdcf06907daa
+e6782c5ae0b7db0ecea440ff6562c564eb980717cae733e191eed6256b1d93c3
+a41da02e62f6f9e870902adf8010720102a7c129b2976a5971e06af0ecd5be9e
+a1ab770148bb3422515fe6adf7dcc4becc5ba14fb54582fb785f067792358313
+e188338caec7ba3934e15847ec8782d6302f95280045e8e54acccc9b66b61a74
+4364099ee882b686a887d663df04a1a926f72d4395ea55bfebda82a3417cb76b
+1f6997893e39799883bf0fecfcab9a9f6be7009c2cfaeb8f6c6cf4122f65f6ff
+ad1d9af752566bd289be86f62548660a6003dacbad24bb54c5af22c6ef5b5865
+966d2d5c4122eb73e840f9113792dff5aa21c05b01160cb749c985c4ba2b6af4
+baa460038863b5a9f87d5444f30cc4978d0f3a2d341c5424042514c1c83400ce
+8acee7e5d1412fc51dc540733186e2f7a9725e67cfeaa422c2dc2de2552400fb
+f9807ef2eb9ae0bc4aba8e39d54f290d3fe09e96a53990f17c23c275c04a2279
+ec949c3708806c0072cf2f40bc443711ef45e6e56e37f3e351ee5f2db01e1707
+e6a928297e2ab2558b84c80b5cbdec7f682aec702b7c1acfc9faa72ed1b98d4b
+432ec5cd71c12a72380e1c89fa55c9ba4a17696d93a2babe9f1c3656650d9e12
+58fe1bd7fa75676531ac887a5820d63cbbfa68788f17671354f9203bf72e5c41
+b5bb4a19905afdaacfa414580af4a9be3acaab7ccfc2f7d1398e7c7d1c9fac0b
+24aebd3f0420a16ae70bc35aa700df30286f8a9222be3b198e0ff0da7a9cd163
+0465b3b2ed9265a39433a2a90ad90aa82a9de3312fb2e0a88f24e95f204b76c5
+2ec94dec20aeb3cd6f7483cdac790566202871c61acbd70a768117898952f103
+c8b3fc13251afd8f65909e706383b00007ff5376726260ef23b15372df71d924
+99fd5757c1f7743a6bc2e452e8b88f2c499d7051b15b81bc00a89d50366f2cc4
+fa76305e8d8734f7c77a9d3f7ece72ba209bec2390b3773f400aabbcba184f5d
+ea9529ef25d83a04295dc7296293a25852e5aabe6802407800814139b5f6d623
+e9c1aa29a43eb0ef77623038cf98f13b71fe4ed0a35304627ce9bedfc7bd2884
+238339de2e243e4eec785f22650a77151c476c4ee24da43d8938f9d998970498
+2b95402298b082de4d0ba35ce1b9bf3df8e19c488d87b8c624d30a383f058ae8
+a8c8448d51b5dd047eb1779b41e59dc2cc3ef8046b7caa61f77213ad124a5a47
+d1e41d6ca2c3e19c98596f24af9d96174eb95d5291a3a6e4f777acfc60e085c6
+c2da75a0dda939ed13e74ac578e7b00f797d735caf143939560ac9247dd616c3
+0f8819d765f0ce93badf2386f9675f3a5214ff4f06ec5c2315e55df9f32f9638
+02d126d80c93cdd23b8fa38c8e6d72973dce82969b60861e4eafe1dbffd67c90
+b8490d9a447ba0a45cb53824cd5fd444f1982671e4a0c5030342a6f5e9ee09ff
+7f1888c2d9593484d2f9c023341878a43af889380f486f7ff8dc9a9201fe6ce6
+43ea21eb30a49a6c6cabf4fad82b515280b9d906e24766e83698d70f2c3937b0
+1e5e7805b92506c2215dad5ccdb09ae02609e11bc1015b41f53b48827611ccb0
+e87abb7e4c3385f2c7b4711ffa60a57e321b96b774f8de751ab657f133bb7b60
+90188d358f06b6f3dde6f11b9de9d4ccd9f55cc8c8845dd5df50a686b504319c
+b50f118a52369be7bdb94e3ad8a0f52eee9b027bc10e8c0e3044fbacbe5ac9c0
+bb3bd47a6e74eeca48e60611f21b5372e6c17d64dc5f549ec75b675c0ae45f5f
+c646c3608660ad8024c0e592db54e14ad74dcd6be079ac2b4869b5c82e5ac3c7
+5c21354fd7aeef402306f27a6c0526c3fa30e7a03041ff495a97ac9ca95a67b1
+6a30f40ddf33d15a8314cf9ff70230f6a4edbef329179edc0d80fc47f9638d73
+81373457f40103c47d8596158ac34c7922fef24d35df10c9425c573265dd5174
+82e28614ada6bb8435b666d08c2b1879482e5d8d8f4767710250647afd66e309
+c73d283deb01be30ad0ceecdd914d31c9ebced397672682a4beba7e4cf8b102a
+23441dfcfd036689d0261dcc01344696eb1c4124c563501e9faef99cef597f43
+de69d6a8192faecb315959847853082e2f3be2f057f87c6f2a4d2570480edcaf
+b0b26dffffbc135650b80568f8baa3ca1390cea72905ef301a23048d6ffb48b6
+b95d98f00d4fb5b82e20e900fc392707b5ee31169bbe9ae933108ccfd9dcfe6c
+b176a245cb24054ff10f7c6158a72a75d7703f018113f1c3c890abd9786c438b
+aab2d005a9df56608004bb023057af33b060201a6125703771fb2eca4474b6b9
+e6d76f67c3410fdbf87b83f5f3de3b4be808511a3695b55fda58c2e79034f635
+6bcbcaefbdc8c09e1986005e3c58aa3c35b577e4e8d320c98934a06ca4e5bb3a
+1dc2d23f2ace2707acf80bf4b9603e8545a6dc2f193be038290e98b575c31463
+cb479e308e76780ce6fba8e87b7edeba6d360c141ad73b98d64df54beebdf87c
+1194f4465aac09b2758b61f57f8b235d7f3b4cd9184ff20876fc5d24a7489564
+0f4033e81322b00a8bde5a3bfbe07fc3008f74b13ff14603c0fdc05d82161443
+9119e6f2ce676c89442b934a7408919cc9aafe8a19fe57993ff8703edbaf00c6
+1cf5b1c70ae180ee6cb27e498c181000f68fc77f8b8f6b82dcbfbb7869768378
+2d5db4b76e1a8e3cae20fc97494d7d5899d4ab27168a26c05f0560daf2d6fd72
+304dd7cd3fa330dd85c91d4be23c0010667bcc6f9c7efd39559e0257f9674cb6
+88c28f4b1f642b9056467279b5eec9ba5dbeb17f68a011166918a529472b6109
+c969942c54bbd0832146c2b90c71973f5e69564e1bb60ccf2eb27889d785b29e
+1c56405a2cd08367bf52b65ca1828e40f47b1aefa7631f7475f87738fa3a1ab7
+0bf86f328b07e3e47d30f2ade7553dfdf159d52fbd76d5c1233d73b37d870c68
+dbddc540aabd7dc2350fb78f2b61bd7c5a7b1935f6e0848fcc60c4973c70c66e
+bba873cea02d5ccde9aaa155335524f83c40048c69593eb3d948adb699306aae
+da1c9526a2f4a931245f95df568b6e067713fa690e35c560f09f4d48e25a94fe
+cf94980e3c18220bb442c8e5eed7ae8d15ee2a79ab0396feb53816074971df63
+aa99e7abb79bef090a95d91292b21260821c1f7215d2b01285c76d1edd0386ec
+5a175445f995592efb9b25ec3df9211e45bf2eb3cc78ab963e478023c0179e0f
+f30a1aaa0a7a649c7f37783a78b7b33bae37422307eecee52e06b94dcd7c6910
+02a35fa4554a29f034e76824452ced264e606776064bc56886bdc1424772ebe0
+e05362afa845a8aa6e6a15a081712ea09f7ea090e7791e8d2f5ce0004a8282a2
+2bca121da1cc73e10fb84c97c822dd75e480f3b2d6635fd22d1faef65f077bfd
+b3f96c4d79e7930b46de11b771fe1bdbbe5745eede7376e6a568e6c3196ec0e5
+4efe29a50f04e75d534b029745d6c5b1f434065f54017e7cc9b4e7ab50a95b31
+7a1c357585b41535562021b0df302bf1c290af8ad0884269ee7378c978af41a4
+2d97f5aab27aa9deb48ed4d203ad54396b81118fd794e6753fe76170c525e9ef
+d86e41d5b042b6edd4150dec09a1cd064de0af4aab0c215814ffbdb7740e6d52
+84353a4f2421e5c8ccf76976165f5228a2d1409d956b31e397ab11ee73384651
+80d3dfe9522814313724c07dc167a7f3d33660d880c2dffb80c5f5bb42822ab4
+ae5f237d467d80f890ee326abddf54e518cddce1f55ddbd6eb8d330843c9a560
+b0302aeeb780f3d0c3832fe822c61c85e2a96f6bded9ea1321aed83323f1ed30
+bc0b4a8eec4917e1c87549b21e8ecf45ae4901b0f8c576f2b2fd6f920ad47652
+629077bcc4e72d87dac3060c9061436780fec43aab93eb47d51dfeb461f00a11
+7f41a9910904f572168eb2179fe35ceef953e5ace0f5317b28503db97ddbd378
+d5d58a0a832e540cb47ef64ffd52e6942f7cb51ddb6ca917901ebf1059b7333f
+8b0bce9f3de77fc9eeda99817bbd552e1ecb5a9b387040531d0c2fa179dc8ce1
+f7dfc8fefb8084dba1b5f24505c2ba1eac59da321100313d107c2e5d368ed711
+3f43ac5f901e18dfe6aa7898d51baba89332253e5edb63228f5d86d4c0705df5
+4e62efddda2ecbd80b98d25462df1ad70a5ca41b93789ea35d8f38260c1d6ced
+cb50a66c8dfea64f32ab317978b843380b26e059be731af7f5758d02cb6bf2b0
+11954c9d2a2518731d33cbf61c2abf2daf90301a289accab93c3ce8aac58d80c
+fba41095c5e2997e845c50909d9ab7ae1c7f4f0fa8893513c9b3af28aa6de269
+2b488bcc8045fe7a932d15992e9765695ac40eff332d5d343f0253609fe6a3b1
+9d2202a9816bacb49565c7bf1c8e31e7bef8f82241febab69610146e26c0f601
+ed2a05c858ac2c1e66457807e06a3f09c7b274a77a9fc5425222b9ba4781c34b
+7fb698015cc71fb0da0ab419b7fc503d0373e63b2fbc7ca80778b3c83d1ea2d9
+26deb4c7977d738028f41fef9de266367fd812f3e07ad1c5fbd4b71b663fc0ae
+2ca32e828d847e4fab16c9b029796adfae230fb950d47c943cda65604d4e0aa8
+5b92b7cefc9c1f7665596aa7eccf9f954ee0f209dfa0602a4e3ee94fc1f7047d
+0321375f5eff4432cd0333a54ac171d83c92f1dc1fc47e55541800aa57e0f589
+d36f5e497c216390f69a546c4ad98f8bd64927ea9ba1f3d0115e9962b40dc184
+7acb52a3d5deb237d1a1742e775355d2e97f833f5d00b92955846e5baf921598
+9df61f923484021ae21755c5ab21b46fa9bffbca2907139565a0ea1d910e75a0
+d3af5db596cb8fe893ecf4cfde1a7fec73c3002cf62bebb728b47e9cd75ded7c
+938d5fc1f0b1bd9f0f800fbdefab45f7f61f19e21626c52aa70fecf394d1da87
+c45653ccb62ec1095c86792583abbf4febe957c8dcee05fd80d8d044f2ea2b9c
+13b4d9acb4a6e3012b668b82ec8eaa4894d2f5350619228fdb3c03f55c4a8e5d
+eacb3d954406da059270b33a8d00114966e50429740f0ee15f189d5f967c27b6
+49986d946fa93efd2faaa2caf9af0b007ecd8e1179e5832a5628480732323aec
+04734d9e0140696730fe7175f2e8351647d63573e8fc98b6e0383ab66a7948a7
+eb3b616447e2bb0a83c3b7be8a5c468ba7c9facfade76e5fa86dbac6c0dc6da4
+09f0e2b2ba552a184aa739bd37ef6cf3aa7f9267e27276d05c9bc3200932321e
+be70f6207a304dcaec9e27f1d71d83fded746cb649736ac0304851a57d59ad2c
+8595e65f2ec757c5e5ac9fac9d02f0336290271fafdc905444f8c4b33aad6ce1
+cb7fb1a476e6aafa23dd1e224fe1ee0521349fd1329be85d5e439453040dd4b0
+be7758a4942b47e77b8b4c477d371819cc319019a90e7d1816876dd6380b5cce
+f2fb20254b27e4e0c8bdac6edd4ae39eeb8eec728f910a29cc16a66dfac436c4
+d8810f70f0c23ef2dc6ad680dc32ad296f22d06403125f0cb18a248d0e227e56
+4454c7c64d5e110d2e044ab3f326df154b4d764f2ed7b983f7dedabdb4109ff3
+4a4bcef08e2c65a4d82b7df37e4f495889256613ca29d36f9be35a501c5eb72e
+c3c9929e8c7441d371ec35679f6bcee3da37e34e0ae0d097b0a7f2adc0103484
+3af5fdf98b35b2201fcd2176ddf254828f163df5bc1773cb8f79e1f360e90d88
+4de21e30931bdfd8e3712c7bd18eef4f9ead3096d280f860b9f993f20423d5b5
+ca938370bb24443f7f56dfb3aef9724153b1017ed0247faa7cbcacf9ca9a5019
+093e56d36111d9d6c3c81968880a37c7594c5a2dcd0b6dce0a0c9756b1089b06
+da2f83a79b84bd851e43807c0d48d3c2a03676f1e5f0f32f7ac81c67af2fc96c
+1367fce62da7149cf3238f3a80124e016d0af0bb6ce0b42fe386c98aa9eb77ee
+afa9c4fc0ad124deaf27614e8d1e7fd4b75687d1f7bae685148855f4504bc6d3
+597e22008edd5a84c646ff80c11c90be2ca0dbb6016003de57803ea3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMCSC10
+%!PS-AdobeFont-1.1: CMCSC10 1.0
+%%CreationDate: 1991 Aug 18 17:46:49
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMCSC10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMCSC10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /arrowup put
+dup 175 /arrowdown put
+dup 176 /quotesingle put
+dup 177 /exclamdown put
+dup 178 /questiondown put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 45 /hyphen put
+dup 67 /C put
+dup 70 /F put
+dup 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 80 /P put
+dup 85 /U put
+dup 88 /X put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+readonly def
+/FontBBox{14 -250 1077 750}readonly def
+/UniqueXX 5000772 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd800bcb325468c79ffacb9cd3037a112066957
+7889d67fff57549064b985d67ede2fb03272083723541051ebe936eff01a4ab3
+cd845d565dfdf25d9ddd2792db17f52f894bea484480f06c832140fdd6c3af0e
+fef0584c6b78b5e2bbb9a752f10581fd1c48cb498a822afb18cddebba34695b9
+b418010368fdfb7bf758d50f3af03360b81c776325c33c9c81130b1e1be840cf
+68c71ffd091dccc0df7b507fe8953dc3836af0da08ff9ff3e9cf7288d9eb8baf
+ffac546a0fd987ae8e0bcf7b759f4408e13524f478de5896d816cb0ad2904271
+cbec82a5ca50f0598502b434ecd94531b4a65181b5b3afcb650904b15157737a
+a4386f1a7f1252caf2adbd5c8162bf3b065c01ca471d520c884ebbe1b29f9549
+134e285dea2fe158c15a08a744cdda00bb6c62158262e24702803d9e1dc1d3a3
+1383085631154b077fc20488ee3aa03f47ed2766644330b94133f2f9389b99b8
+96d3707d1c5bb227fd3bbdf3a6ff572bf07164107c7a1c0710a5c7cfb67282f9
+c238100fa138b75c553d7cbef17e2292a320d3d86a6210e6e3a1e590b10dac6e
+177094d5dd163db623d7b344478752f6f3d7d5b3fa92e6bc72dc6fc343d2f946
+9153e3d14c5a6d6b1d9ca52947b789cb4cf6196a02973aff0b097333f8d615c0
+a1726ab7e31c378eab77150faa28cce535afe3ae5798402ca51cbd18dedc2c43
+5281d0781351df30f4d11761579676449ae4a47a10f677cdd31ca9120fc2606a
+9025d3cc09d58856a9bbfb17669f706ff8c7efe37a3656c9b20609cccb58b309
+0595ca5666833f2bbf884aac1cd632fce69b4e0ea2e0a25b9c4d471f0e322e09
+4cefda321359fdbe0a82656d3ecaeb68b7e0c7e733d85066ed7474c22b67169a
+1bf1bdf7dfd0ce0aaeef78ee393ce6ea65edc1fdcdf3f744f714005d8221a156
+4e769676cd71e6b5ce9d0c6b443beb1533861f8e34eb08e4f890f43ffcb33628
+8dbbb925e7bd8effb8a36ce79fd0ad1f48b93cb33c4570b0e913f1ecc54b36fb
+a78d8e6475da32fcf26d172d450e19d7e210b704e50cdae56557df671a85a6f4
+62fda00239465198414918ce785846f605ce4032d96a3a473cf7ca558e2c8068
+35edfbea0b11b224f4ffbe3d227828c388a2272a26215176359a235186cda68d
+6bfe8e4e60f99138b90c22a4c068b6e949bc5a454e83ee6df0cfb52ad4254ad1
+2660f14979251027a0a5bfa283db96341b18cde804658be1cce5937c58f64216
+8d2806c187aeca3bce9c86273fb9b729465238f73ce3cb74d7ff582fac0e1fe8
+2e7ca294a0d666cedaf04a7641adddda10ebd8af25cea38624ed9359c8382d90
+1ee4529f7ab8e3a4d452bcb837606db5cc849a36b8a7fa2648211bb2379ee3ff
+f12923e44a9afa856571a268108c49dbe3d68a4c05ade7f92b5f95f96dc9ba67
+a5d21e2d7554bcabcb564a0adba6be04098c0d8198024bca550e3d0b95d62d0b
+cb4be2ffaacd5dfd589e48a33a6a53c64775691f9f6233e36e370e5e2ac6acb9
+cfa949c771f74f3f2a48117bb49a0aeb34dfe7328d825a9c370712488ab027f9
+a8f9358e9e112838a7409499d9112bdf6a89dfbc769b039450e61c26d8118617
+4365d12a78b8346d8058be6ec7394ec4718cfa63ebccf5cd9c8f7efc654c599b
+5ce10ebbbda2a3de6075c7c51eb70dc5fcbfa66dc79b37d434c70bf32ffea100
+e9bcfcce8c337ffabaf857fe1af5c16e84d6010241f3fd40f8619a75dbfdc66a
+70bdeaa7260a3b2a9e6be3acb2b712e5fc5f6f8e74fdbf843b155d4dc9bd654d
+ba92de790fbd86d95199ceba86338795ec4184b7ce304ae1ac9fab1f401df119
+5a35e7e0dcdbb49f311f551cd73cc455dceff5176bf726aa69d3d6735119f700
+2aa1468c41b23122b0845fe67b8c1d1de926f1a12562b256d229ac6a2655f917
+20f2161e0a4331f181585fc501f893ef3fbfec2947736240715f78430f3dfede
+55b619870f7c1d5e753663a4f0bcb18312a5381295d3c0ef6985ef822b47fe85
+ed2516be421858bc269be86fc2ff0c0578d1c4f4f4094b9b88491118d7a17e52
+64b8da8c11757441ea7911aff166501d6208fe6763cdad90ccf1e3e54eb9306c
+a32fc3c4b4afe79ee70f292c47e4e9ca7dfc6edd86510915a20c4c46f9793adb
+04c6e55e972c4e3624043f427321ab0f4a04d7f9717494774dafd5754ee34128
+a83e6c055f24202753ab159583a0de0a77fc761b92ac9cddca8bbcc7f25fde54
+1a189e919e0e5d33fb505b8ceb944b341f98ebacd81197d4529eb92026608e9a
+7fd47a96985a420810973e5d266dfcf496af2f474ca5fc18297933d0eaefd2d8
+5f77c1eb4aa7334cf9c638ff2733cbe845994614675404418c70b79428abd0ba
+3a0c25faa25738195b747d8a70d4dbae2d2244c7488b8093a16ac968639e0ceb
+b8e91216efa7ecce79a97eb3ae2e458ede42ad997821345efdb246faa4ce1ad9
+0f9c5bd72042d7790dce0d28a03964c3edb18f14cd85456627a1917f0e8a6741
+e85e99ea451d0405a0b8d566aa8b677cb48f7ff8a60d4562ed693975a7c6dc6e
+bb9bdea37a9d314a4867775d05d90099869c5057899e37dbe03e4c5561ff7337
+1bf37f8954349e2b626271f0e9e20d9561910822cdd1e69a48ed7e12bfe91e41
+4c73fe12e6e6e1e935215ea68a94cb2dccefd640b47be1392e01d0a649d67c49
+beb06fbb754837b47dbeb87e47516cf79d54865e4be8c79210fa9a4e9be8335c
+5bcff1c57298eb7da9c4f68d8ea71ada138c95220f9e190edf69469a6da83ed2
+23e0627b03c09679eb0b666a45f9ea1ee453262fa4aa1c526a722d74671909ad
+53241daf72478be6670695a51ff8fe626a963685ec2c1d0ccfce0eb46fdf9e23
+4b1e28587b5a14c0e56402357947b9650e01b94ee4eb3b9d2c861de2b435f0aa
+f8c4e0a86cdcc95460d898cb18a80ea6557ff06bce8e713eb2184a2a2e387c44
+ca252c11a92ddc17b45b8f26f8b9239be6a7853216d64d56bd4c46465f2589c4
+c0c603d28e92ce6941de2f537cd7d4e5d03fe5cd12c9ecdf4427b2941466d516
+d40a1536da5612b606c82af5474cae952e528298b31ab150e9af1150e505501e
+49fcc40ac36472f14cc77411d47ed8e9680911d530f912a27bf895e7b26bf467
+52caa0ecb059682dbf3c97edc5d62467d436c78d2acf4ade5211ce0a515bce72
+c58f63693db2bdb4ea521eb5194f5cd5003c931a4c18d09a2ffd36b049cce6f3
+cd17af7c092a9fce36d4503812bd879c59a77c6fad0213a6fffe2c38a762b95e
+1be08ca57e5699ce082b799f17fd7d7118111db137e067939ab6c2d462601e03
+3378ee4d32ee0efa25ebe164986a49bfbfa159de8a869985c1027cf85d35c128
+34c53974caf4040447d8211af238daf23d5fad408b0a729c79d93a4de81c4d1a
+31cca5a5f53ca22c2dfbd32f00d051c90b42d462c5c453487b2911dea29b5eb7
+094a72891ebe944ddacde3a0e52d62ad1e342821c8b6966e7d6174e95102027e
+005b2d77b51637e907635eb4f08f80e1b43a2fec77690dee1cc6f273aaca027e
+3aef6c8094b0140e87700e036387b5e52cbd660a92dcf389fed3d7c9aac4f24c
+2e49c640e509b49ca38f539849077f278c3da0185e07dd2618b9dfca6d064fa5
+c392c88b6737e6c44ebdb663c9009d888528870c613a395bc3c6494e2902521c
+673f2404be5bc7d3660c943becea63998cfd451d911559e34d09f5777daabc19
+e35d339518c10b054162eed006f0d6dc88065f3cb68b9984621510964476e6d7
+0b5b55a938a470625a3b20d2a8aace999697159735a7df4e744c8b97d77a9020
+d180d0bac849b01697138dbeb95f227d537b72eebe0a0e5303c9b7bda7ae9b3a
+f18a3d5c7876342a906e1bd416336044cb05ab3693e6849a2b49eb2f3206585b
+11ba908082b3bcdcd4982409816924d02e8e2e22a11bdb93be94a5fbe2c9970c
+fd2e6405bd52051f330a0068345475833ffdf2c87d7cbb461a2925f2a8211f4d
+e0455fe6f7fd32c55c869a53eeb7d131c803f76678c3e65ef63f6ac566a37044
+bc694ea55c4faf032ab2ab065cbc319516f17273c0df865904ad9648a2fd94dc
+4954d28f2afd0c794c978323801ddee56be1b028ba02370536c808b8f9c86c38
+99764b1dccb65a42f346ff2ec1aefd1af1cdfa5400601a5d2475f73525d3e617
+88292c3b92f1acaab8a4183965c51371b65aa5121f3ed19e4a84a8532ecf8d5a
+43e483d7cf8ab8c62af20ee4f0d611a0cc560ba86f254ff9aab980cff61a014a
+df5d74b4d224f3631424814f4820fd70329c79a4238306b292b289dd440e9228
+94036fb340ebffc2cdcb1f30d7ccbd412979ab91fd433b1c20853aee6f4bd721
+efc2af660370a03bb5624ea7e909742760c25e608c4ee9a789556976f88b3e97
+ed4351d58d40189541b8fae69f108c822fe7f0c03ff7a72c61c238c6371b2044
+7f34a0fc1fab4bfebb1a9105ed34bce009a42fab70df0141f8d07c65ace084fe
+008140532ff4949b1b7dcfbefa7ab2271c224c183fe558d8674919cca4b06265
+959b905dd8b3fd2c2da93f416b98133d9569f2d354bf7fecf11dd3833f0fccda
+d1e9ca3f5adda2724799e18d31a2e803cff9735396fb47255aae8e3c8440ccdf
+8951cae02ca4efded5c29f8ef88181efb407927ffe1218e8c22f0757426c63bb
+a59b7feefcd64f9676b31def6deac07f93f811fd5151e5e8f700a5cc593cd35c
+da4af7013c6ca592e2fd79c36bee7006e11feffed8befbe2b1f0ebf8d0a96841
+4aceb8382a01cd99da3fb0c0e76741e48af5b53e6021d127652a9eb775066815
+3eee1cc7ca0aeef37f9a2a55d0a54f01247c767ba9410afea5614e3506e30493
+5500264deeee38532700940ff7fef151520a8afd09aa6f606ef980eb445c3ce5
+6d4a0f4ab0c17253c51d78f83b2eae679bfb2aa7c5e1f206563de43b7a5a4bd6
+3b078c1d74c9cd3dc9797ffff815cc428e650fee353f7417679f46ad9b524e4b
+3b953f6e7d78c808362174f172b61bd54cce6dce51a7b05b9b04c97a733c14cf
+c75993d8d51a4fb2a66cbb61b73d8dc8b2138f6949e36e55d42fe96cd8deb5af
+5267d7ffffb62d53ca7d814d01e3dc4a915dfa09deccc8c498775afa234c1459
+76836e2a481b9e72762bc6d89b71740ffdf96b95684b22c0ddef7f924c2b724f
+c7da5587348c7835ed68d4eb3bae254c8a046a6a2b3b9dcd49393d7f337cbaf3
+4d733b0ef61f7bd2bdf60400629fcf78164201858e2e38de89a6d493be422c0b
+1bace5f42772e8fc87d39c2031f3fd8023e495fcc49a78c5ab6672d25c8947a0
+0f04089d5f737bc6e180b5a13c7d642eccda4ace4beeab34227a14eba1065756
+76ad69b93eca70d1b8c15ed69e0819321e51877631d4a54d9304cbe1a6ce46c4
+97ba3a9f7931ee9d476ebf8f9a8d3b4f2d3c230e855df4c858061efd7eaf8e07
+0ca8662525566a2618ea759789f4c376706d47fec30717ad8d645c1eb211ea68
+339223e7b9d42875b3757609eed42c426260e84f0a3e9ca925fadf791f7b2389
+0a3369dce2140b674b530e8e078884e90312999ca05b915b4c501a859384be39
+8125158cda51fe06cd1a8784dca376762d2d0979ed09de01b80aac44e2ccbe6f
+67ad861c67757b97de5e8874637736494ae67379b957d967c6dc025bf687bc26
+17dfbebf3d8dbeb50ce4c9e0d50610389a6f645563355a695a27ca9dc058ed8f
+6b4c2cc207bff0bc4d787cbfb9d16ab2d3237da3f363e29ef95315ad3cea987e
+d5c3be981a6621d35066be2af055da5c3b01e23d4bd18457878065d55a4d2718
+5db279387d01ae2a4548bee4aa3ad68b81ec8f05b2b5e8e6ca40892f3be4817f
+08ed07762d6aeb52bb91e433e0cdf6c285eb31d44c8f18981ac85ffbd2b7e4b0
+95964cd6c48d34c7119e03581f60e670280f3cd8a1014d9c2eb462f6751a95c8
+c8fb7e98892d18bd59bebec91e371803beea7440d17c26e3e1f36201f014fae4
+d9d5a0c6e88d9d23ee401fe2d0c69bcc9ef7c8bd77f5b705edfcf5a0eb748efd
+9a171dcd12d870894397c7462090afc6565373e3635574d2b8c248125f1cab83
+329121d3eac4ce17d24e9bc68a919546ab12fe04ea616170594ea3e58af4b377
+809a83285eab0b87b26cc53f7e8166095715a817002097e5e85a10c5abd92f12
+bbee617830e5a7bdf4fd8a8ec47545c2d7ec631cc39f05a27cc42413892ad85a
+d1a7cb37478c6bb8cfcafbfd88a9f0ab05106cf114a1470f3180a3f4b47a036d
+30eb6fc749c4fb34619a70ab60fc5e89d8cab43bd32e1df1d2cefa7f099db0be
+839c5d8f29e7bd6eca2c8585273335cc23586199eec5dfb751b33c49aa271dde
+afa157bab191c6fe44351f9dd4dfdc2564667a347e30a6542032c6d52f415261
+697705b07947ad02845752d0b617a509492114cfb0493719028c974b6cf1f505
+f2c684d6fd832860a8f58d60f0d9472c7f9185a6dba39444540180f2f9d2fbc6
+7e37b605c2db032bfc8756ef9d0e983c3048032a948339d4e6925666cfbd32c0
+833de0b45ec1d945eb0c298d5ff3d042e77bea14892715fdd01ab8778af9de5e
+9a034687cc4f441e5261055184d01cfae1b809cb425181c215c812598254d99d
+e029003c33f76cdabb2c5fb13a0a44747d056402f01ab4f7a8e71f686eff8a7a
+3f0e610e70467ca59f3791b5e509faebbaa602f6e4346ae3c65cbe9d5d93599d
+101ccd73715a2e8b3eb00935313e8107c04085ce6a76501ade8a196bbc8cf615
+350c284d735e28c8c19cd63f0d2622e855597b5d0e066540404f829837ab5868
+a1b9f70340284aadb041368e534e2396bd08f988681dff13591595206bee111e
+b7e7290e728767a0f8580255e8feb65f7eef50389d00c95c7578ab8753c2048b
+031e15371a3905a684cb744b8ac0c897c27b7bf6a6f96ccee3086d8d4b975550
+bd863289fc72ab10bb6745f2e1c10d8f5b09c15aa8d24182ae046bb54106b537
+1e5e45af515f8e2da4cd69d94c055fbb233ff87febd2c71f08ce26ad5a0b4d21
+5e79d8eb6b14ca1a86016058b166b81f72952c19596b067d02302a11fa0ad7d8
+91376700db024b345f093e9627998b100c63cd1806b68d44f4a802914e060142
+d2bd778cd80d5488e171ef83e22398b719b3114f1acfe72a656704418d14aee0
+aa40a0dad646ba809ff7c9a20f68824cace244e8c9f55b500b68e92171be19b2
+5bfc3e2852cbdbb1302c04b49af25bedf3507b9cfe52b22366118df5c71edf06
+f24132a672d8ec85eba3e3feac0a36ead14ea9fb6818aff8f38402bfad9bf1ea
+2e6c06fdd9c03d0a1462927da885dde4363daa48e6456287925188aaf68cc4b0
+70e8d91111817d3729e09a846e51a1622f7058501eef7314288c426f749da9ed
+105132e802fbeab75b8050a495ff3f37f4245a55d41b394245c7247621a879e6
+22e5c89099bea53e549cac633c32f79d2448ea468b83116d69bb288185fb53c8
+3966d13afb16e3bf80cfefb9dae9623e654156e7d3b995d85a692b3a77557e8f
+640d53599237ea76d484d3075aab0f523ab422cd80f725d97e9373ec6c4554fb
+f6688cda84e2cfc9a6756dd7ed3579dee68642dd9295b65926bec69f02a6f5a1
+f46be548dcbe069c360e3048210a21aa4027ebc7948fa027402c231def84be08
+07d969a6e76cc0b55bd9c476bd8ba85eaedbc57255b46eebdcc1a54e41ceb2f6
+78cd9217b37fe91b11875469c5e3fe10f17e8166be6a46e042f2fff8f19d5425
+56f3a28648652a3d5754a277d80065a92c33aa86950a0f83c6ed7119e85fbcdf
+8191082b983bf08fddc18c338fde5c9fd10baf7a6383e29f9930f68ba1c30ae2
+fb98815f8912d13f7d8c53e038234a07e53772334570c6133d882dba93a5dfc2
+8c47b2045352ee7d003410a92a960870520e7481f52041f5488d8bb01197602e
+69de85bc83860f42f64785c6b68e76a1a6d8a18ebdf739c9b24741ac61971f0d
+7531a2bdf51379b0a408075f11419e7b8218c41c22478243aa282b91fe4b07f7
+2f3e0df0357a27463215db2d8673d31d4e68c8f00a2b6bf0510f5bcfb1db16b6
+a63973c19fe67a2202321075b9707ec51b97047fc6e6ca4df71ba7755c8ad698
+132ac2f50488cbe05e859a7d5f843ce2f054664ede4c300c7ee1b9d04644a06e
+0ca8a7976e8860d1d872c051b4515125b265952f5e75f771b4670585050da544
+4ba937d84f88bc66fc0164f993d343c0d9703a9d261a7c5dad67b9e1661b9959
+250be9cd0a1c655b72ef7956ea5cb729305043bbd2defd906faae431f62cf061
+892d7c614ef8d19736e76e0b559b4461901375c334779101a56e66bf224aae28
+4b31cc8180453836adea3c26767ba110733671668a551432371cc2a65a30f713
+825b51544c23148b640524b42e78cdde1cf0bd6c41f0f7b22e0175c69df3356d
+a3e23f0000a79f00ad442a249a5be44af8639922eb7360a93c2dccf69d223068
+5189bcf84140c6311b139c2dd7091e645d201d20afece9554e214187705bbd8e
+254973d54bb7f9011031087cc14adc60e6614839afadb0152f95b743a5709393
+64d63ad7fba3d987da9d85b7d8b63a373bd9e2f0e38d5eeb4f7571dd3c4dd455
+848832810f1930a3ef11955dca60acd84175de38112101ae8040e85d6dea80dc
+270efcd073989259ff205dd270de636ed7895e602dd6838ab911d1516eecea0f
+d1d64bd39fe40c626c2ae73693031cc4f0360a650d5a660f259017ec326ce1db
+5c63a43b67cca67493a067e0fd1e36cf457e702386c0423be985f16442c4ced1
+bd5a0d9c4b645cfe62a513f1a6d391a772e558e8b1337490090fabaa778a71db
+a2b51feb74ca0204edeb56cf1341b8b49dc5ec7f6d53d4e1efa43029dbc4dd59
+c34aae2549a792cc960b8421490733cfcdd0949dc9f96dcf1dfa773061b15ffb
+0a1092c82f871c9f5000522b8e5279a9caefdf1c5bd7b1e17ee8d489b5093ed4
+075125acd50d4682e3533131909803092b5743d5d4bf2b380ebb39e1d30603db
+8d65c8bf560cfe297b4175961ade23f0e9a618ba9f9d81007a7b33b6f6baff76
+bd691dffc451562508cd16be327e3074b23d5a767baef14315662d3a989b7b56
+822e51a172f6d852d407242c78db78fbd604452bc2d2490326bd0f665e3cd2a1
+4132dbefdf96c6effc9abe14996059039cac4e99b13e41f6175d43a8556a8e76
+f47c9e60468a4cdb957c6648638d0a186733ccb458d239f262e40fd5647f4b4f
+68976e07919657ae4cafb38f8023459e783c0fc11be762e3a0c35fd0904b7807
+51eba365aaf38218c29522e4b98c45c774e8f36bff76506ce5b31532d145b244
+608433a1fab59a9d95ccecb66993e19490356c92683395c25a2322d504889589
+ca92d3fb1bb09284288bf3d910485d3ebea85650cd89f482950d79dde33dcb96
+1c64d4d98f3658e2428e69d1c86f3a13cd356b05c652bf1562f2850a6d49786c
+f48ed10bc279a6636ef6f03f61304680dedfc4316ff5098a92c862720d8973e2
+41614e3ba8f7d46ab603754f60b0534c73b2f51287b044adac2aa0bd9e351e35
+4163941971d98cf9b7e66f047a024ddda97ccacec713defccb8d9a2581926b51
+4939166458ffa683fe357b23b78c497d8bb0caaca9939132e571578a7af446a1
+07c037734d45d9064c531977107a9a72c9c12d1d3087c4adbae935633e9eecb9
+d93c9a5adad0bf5b17bac5a013f6a7831dc86a2738deec5951a11b63dfbc9cf6
+7e12a1efd4cf8502cc879a7d0c70cfba4d8ad3bf05fc83f5531f97a1fd4872f4
+75b909d2d5c11c48c04ed5f1e589b03d381fc9b948a9603165de72993d1615c9
+170679c5e94854bacbdc5e6128d36cb19564bea68482f51030bdd0cd614d43e1
+615738a0432ac18f2d1bec9330bd22d231a38a71f66e6256315641fc64ff063f
+edd4a262d40dd5b2d95ece0664b203d550ba38664bbfd081800418dd34c580f7
+b506731fb05f936ecdbbc4dc855ad814b5e0ef066166802f3fc27049d017c867
+16164ae48ddb308fea813b1f8914b55aa23520f1340b6403f325ef787b4fd5d3
+0e06689516c8eb36612463978f02198c9917b952e3be5bdddbcdf5447cd30c6c
+2100646a6914734a3a781621f6527a4f2a65205cea7194fbbf9190b05c2438a4
+04e79395a498b304c635bf299a6a739903f51cd20f1bd1fd4b6a046ce13e2f13
+410aa0a6b02affd6bf348f700214b3e1777c8e6efa352078e16c171bf8f9700d
+8b745d0e475c9de28951dc21f5aea44c8d9d6c48e89337ecc71de185cd452e50
+c5bb0b6dc0e753b457e299606d2066c4954a98430dbaa909f4e3687623ec9231
+24ca0fd837114f5ec11ae090c8e553c78732e0e397d5d598f185a82c52302bde
+2fddb7f0f33bf2f8898f12af16c48c278a7319f987ac7e8ca361de8e671a05c5
+3cf25a03dd4e3d2e474f9dbfc7382dabd269516303ffcc69a3771447f1170ff0
+728413066c01806c162d75a17195d95fe5ca2597b5f15c9ca5b0b271c6946c8a
+3542e882be4230b53531f14ed67824cc022eb66859e45588aabc9caa4f2a98b6
+275377a48c2da7cf6980903fc6d98c99bd39530c956cb7c106bdfba33726ab52
+13e1610efa8f1608a1c2f7dab9547e2afec020d2ab416364fd43e04632448983
+1dbe57993160b373da67f0bc7b2b9a5a6e46514a765e45be5618bb17e5cb7d97
+f37685922cb4b904cf9169970186679b63989bd2cf762398a3a60823b14bea7f
+7da79d4ba18f1929447248e40d3a975b071fc6b6a7a2a0d6aee0483cad1c1188
+a39f8103ee852cf9967549b11bd3ffa669381dec68c2a8d2456db59a938854b4
+cbcc5d3265f29d7bd07eb96c8f79d3c311f42eb7fd7a54db00352b14fb1ddfa5
+6e17e99f31ec36fc4f288758fb2038f443724180a4fcf1299e578cbecaf0c91f
+6a28245a0e9e71ac0f7cb30c38f75a667b1cc82579c0b43b202eb4058006ab9f
+5c76f886533c24948ecd059a861ec638d0f0ba547094ab6df96427ce82f2f6b2
+e0ec5d5b719d9915dd4e8e64c56a5bae66e7dbce232527cc6caccba878ba8174
+b711d6e829b6b75ddd4cffdf3a87d47fbedcfbd4e9300501f4e61d47b8e76c89
+49ab1af0ad858a3b3342af957bfa7b5e7fb1e8ba5d62d5bf20c48e9db199fffe
+d59715c788956ee9d607de8ad54c4b0e63a216ef3d94349b57165f32b694a055
+abad4680a653402ed2b7ad228dae4e2d8d6e45c76164e2c021b01831938af100
+fe1e91ffc1e3a1079d5432d5effe568db908d24270655691d39b8b971c20416c
+9f5fb9f60a9b21144eea6878670758111332a2e4a8d521007d75e37ffc634d9d
+4205dcbaa9cfdaf59ddd38e727fb4ac1d26ca6c7fa5c51e2db1a5e085559ad94
+01d2e9a432482c6fa57d2cbecd2258ffb1360020ebc2eac3d2226ced239199b5
+472f27bb99264a537f7f8a3d10ef3b5daf8d358ff669586ec5ca70913df6a390
+272ef4f799911708b2d64bcc69e03fac92469cf35f4b6396cf85d43c19f6977c
+00a16c7c72cad3ebdb2a021122e95b1b72e260e6fc0a11a854eb4fc41b595007
+b0dff5b084c8e72ee4e6429be5d423e9ecc8b27a1eb9237f4dd4893fb4c73d62
+d6c950a46e5f6f50a1f6c6729d0dbad39d18fba69668bd66649c1b5ba29dd101
+da47917ca9480227707050efbce2485faeb4894abeb78bcd7534996982a770f4
+c510578e2db713fb1a1b9bfe47f7f624b47c6e54d0b3dc64dc3fe38600ca7dcb
+e2ba821f31db48a91a96509fab40543288d215025891b6ac3201dfef522ac71c
+f8584c591612c3f53bd53a9711cd2f3f2076c213167086e624efca42f3101f4b
+14c5840fc2d80a8d26cca189e70fb759353c31420cee646c61e03bc010ab395e
+bf276c84486e2cb3dbfa14ba5798f7837bd0ca59b3b5acd45b9c76f1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /arrowup put
+dup 175 /arrowdown put
+dup 176 /quotesingle put
+dup 177 /exclamdown put
+dup 178 /questiondown put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /visiblespace put
+dup 35 /numbersign put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 55 /seven put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 125 /braceright put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+/UniqueXX 5000832 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306462c563d51ecefaacd079732f12c29
+315e4b9623a5752c6f1d8145869e120d910b2644887cea7e30b15676a92537c2
+9d3aa80dc30082aba94b40990b82fb1a877e805e0c8c48f61e9f2edac05b944e
+e4d8084ec1d5cc517aaeec5b3ea379dd011eeb454cecab3ad2443c887c582789
+72355673e503affe0394fc7db31de364e4f56c24033c7df2265c56445ec63a1d
+5695a6041ea1b94407e1cdb7c5635603a4fd047e6edcaeb2d0da6c9e0e9396d5
+1a4a58e8fdc1578730f992435560a6e2d3e3687703ee2f78f5896389ac8470bc
+806169eb01762e89b6dc9adf857ead656620e2589aae722c37a2ed7a2941c360
+b067ee34d8d5ca3bf68db725614d936bcb207781f4d4ec2ac67b13a5ad161f3f
+059add7b5e3d904831e31c20c04546fae83ca93a35989e65c201756888f727b9
+7e5313c9870ec96e4cec3901ea03a5c744754485e7d169bbc98bf872d0796e18
+9d43b712950c3786257d8be06ab6080b9d9392313298327549a8a41c00a2cea3
+690b4a333e45aa815a64facae1c2b44640860b8b8687afbefdbd5b4a541a7251
+4ee7d3e0752af3e96a88c95d31fa16d34ba2f02fdb0088b165844f02611c734a
+dbcc2037bf741fdea7e8bcdc130c70c33772f777d8bcddf4611db99001ccff14
+d7af2bb05defc3480bdab312a0eff2f375afb4e0df2f803c594b7c93f71ca4af
+861ae1711932fef19bfe2f9b7adb69d68e5a70ea4d1a3d5bd85231b16993f65e
+fb37a0a823f0542f8c2340a073dc1be4a8347f9d3068a6435cd8278b0db1809e
+8af9664c2c989b9f16873c009449b6284b85da4dee11c96a05ba83292f0edbd9
+2cf674aad6ac1a5ff966ffc37e88a66048deed053565b55ef6bdb8c2f2f67832
+f8939a32442ea54f13d003494d6350a2864b427a9126a9c26a031909fe53fa84
+63b80c3ffd536c9a5dd29ceb03148dbc24c0033aee72ddd159f2e8a6fc113f42
+8070eb36ce5a38a72ed5bd94d81ab4daf08ebd42c8e5bc695622e02aecd4004e
+637c4a864dfba4d87ffc4aa8f0905499ca682fadcc7f0bbefede05b2dfb0860e
+135749de737964eb164de1ab080f5b1cc7a359ecd1a1c35fcc5150f479650937
+28fe7afdead651eaf453a1be333537643715cf0c4c23db779c1cc99727843c0e
+a96936148621741d5bc36093d8492ba6343cb6d46e3ef92c743109a758c4db0c
+a94ef1b2a041473875e5b1465fb382bc5fc7c2ab019487c251e1e09efcc480ee
+52fa97f2baae79e9fe82b4fe6c044f12f25219ba6d554fbbe8b2ccd0e6a6bd54
+0c9c97649205afb8b978e3a4ce8a23721d38e3f6f27330315a2230b400d8f836
+e51f57611ed47c0b66773316d0cbcc6f5b112c32ae6cd282972f04fbb9856cc5
+5d0b1105074c7615849e4875cb026e3921c5225ec4c95799cc76c03e790cc22c
+491a3d2728e561bad8de6f810a3c0bfd98df691980240974c807ab0369c63c59
+039a9b8879488f510e9099d0043bbfa3915c53c1e420dcfd1ff8a40030150dd8
+71b92d8b7ffc3b8fdcb284b2d69b49d8f732f74411c6ca55c72d0408d6deb581
+70f4a0bc4cf494de8117f55ed980d9be306c4cc4b877e46417896f4514fecf21
+79b7edf5566288e166ea6159838980dd533c95d06fc3fdb1588744328bd270dd
+a532216bb39374c6ed59b435cfb6b7c8033aacdd1ee57959746b51836c1bb473
+1cffa68eac114d2903a81933a639c5165673abd3ec0c9a0c42a65dc6182609b3
+b965b2e37f0d5c43dea0aca46ae03fa38721629b03b9c872a14e50d6a9123efd
+94589449c6df140a016dc768245a00fcd9e6262e8a3a00c6d60e34b93e107f06
+11bbf0b6f08de96684bfbda7c3a4c3c6efb938e7f6d1d0c8f524be4e6dc109d6
+a47ba1b470a564baa67c90bf10486775eff13e77dc4028021b46bbae2fdec6c6
+2dd4b6e99a48a03717b42c35c84c8d6f92557505a1586e8b95f03ff186a60d5e
+12d4a4d6750a567fce256ea3a25f6999c735660a15b36307ead2006db3ad39ec
+4c6b8f96ec5631ee1919a060d462e0d80e4c64244cc63a8df9ca26ba3220071c
+ea3416dd7b120022ef52d78780b76ad2991c4c13617f870a67e4179f398f4d43
+3894ebbb82f6d0e1633e3dc1e848572c379d63b59a02ea34415092c43e1c7a65
+1b5e80105079ab973f4cdcf88b8595c0819005c16947495176d210e27da8316d
+7ca0104e60c5ebb12bf01a6c219f9bc599f988e1f28e70ee87f5514455c31be2
+d77d41845c49c961c25a84592d4650a087acf2ac3a847ed54eb6ad4588d5def2
+bf8f7f70ade9238736b9b86014dc2b4c3760c0896e2af4b9bf9c52d07fa344f4
+8ff1f15c1ccd6d1cea57c756a5c85921c44f1ab648475f0c2ead7e5bfbf33b32
+29fba73bf628de9fea4552eb2dc5117341f38f4f566296a162e368e94389e0d6
+4323a8a5b84d0e9a3d8de8ebfa0264dcd928e6519f79515dc84cd4c624325ddf
+b9a031b393dc50263e21a96651a9d05e14bebfa84d4f0b8cc0b01232b5e81b74
+0006ad1a09c1321b0ca1460a2a88651303628ddc71bc3b0e4480863ee91f3bd4
+bfec02c0266eb13872f3b6ba21a79a954cf6d836f44a67db6402f6ee01a3d133
+caa13775c008ec00327d3b95e2a8c30c2b995e899caded205c2ecaf68b7ba732
+abe0376dbe0372837c63aab864dfd7a2b38e861180b70299ab09ae42ec0ef80e
+ef3891b4709098b3dc62366b22ca3ad9e1aaa0c97722291ceef48f2572191757
+4914c3e1ecb28186024cf11c566e5d19760f240d180d4cafaecb9ec99816c0b4
+31e2fcc8f7697e8a2516512591de589ad692c70fa0ca11a228234fb07ae36481
+e6ab4be4c958d6777adcc9243bd6cca63c5e3cfd7eee96f3f8083854484ca950
+29a968f87fe8c5d2716f05610e4833d2a19e84295532ae819c98e19ffc05eff7
+0905bc8cda9ea0c5c03e922e0652b73bf7123b4df6387e3314077c8ea84e1cb7
+b6a551b9ce7b726f1ffdd4868727eb791e38efa9efe47dbf4e804a904b07f833
+5e017806a6bedc61992e1def820934fa87966d9051a94dff5413d6dd465f30c7
+5cef21b691b258f483e43c246c443c38c2f0f28c0c80bbe2a67b7357b9e47f05
+bab3753c32dc703a3f91a5445ccba8446e3be6b3f3abf31e0f6e4e146ac62994
+6956fd35430690099f70f02dec01b0de33f08e63695863ca032857649c017124
+d40edab3fad6baffd392446fb0f69176111ccf1c0d4da38e1c17aad5416777a2
+fff7291cf4a43780f4e48624e64f2ca7c30cf3d55d74c3d22921443f63af255c
+07f237eaf7e3ce78849bde7fec8dd1c434850e158a2644ea1347265c3e590414
+94625d530fd5b437435e109634dd17760d57c2d3edaed06491b616eb77752653
+097f8ef84d9fd10d717cc5e181b768e2762882d27b74fe13bbdb86b0cbd9ea50
+5714efd5a7e9ef2547fc065b99153cbec8fd803129fc79791b6c35597c5f9b4b
+02ad8fad4089a6f2fd4c132ce60c49b9da4ef4359495faf8a5c692da2b642ed5
+9677a6335863e2a893b35a076bc42303def6f1f3144a9c7cdbcfda454667a0a7
+9ab2e2a08d48a39322d1634f08d11b55cb1775872bf86be5e96ee74de8b52337
+9d8c2e17d423753330c2a925eb7616e7831d036c491b5a92a4cbc750398647ed
+40ac06fcfa9daf4666479808e034ec88d5321787f912c159cb1b342bbcc22e46
+35cfb72a12d5e0b9e9a0f096ca645e5b043c6a8ecb351bfb8bed16d4b01ad0ce
+49abedda69052a076b58dbbe11f9cb8c5d296d47abbfef30ec3b07b3d8ede726
+2f1ace2e935e9fa1bf9f619e6c2dbcb09080f0ed7569f144985a805a8f8e4f30
+558a0351e2d9a608a520f3433744ea2ab63a9e250f10ec39bc63a41529fed558
+06a4939e22f96dfe494019f11407b6967e7aa4aa283fce90fdd406463b3a1361
+1d40d9a81437a8b1999b6f7925f87dcfd56789cee3558bb9eed95c15d0cdb0b9
+7f8d3548c846385154632dac81b38a808b28d2ab0c4da0fbe145df48fa9d4e9a
+a6876d94369e3adf3ec6cbd861a3db3d31a8394220fbb5b427d514db909211c1
+6e92dee766073c36fba98c0d81e4da154465bf14b5bfc7047fcbedffa565d40f
+c1749cd0407d63cb33c91b9df01d7546994d5e0bb1006cf2acc8201f704bb67f
+9e06d8133a52ecb95b4a7e748fea55557d9b8bb4be249a9720be6df5f206fd01
+525dc467d0df891832ea20029820f6403870aec43654043ac9f0ae56b8ceb40a
+b918c03b7d661b68152b35fadcddc52615503692e3e023477f70882a49720bc2
+6add4ba38736f56f00bb7c8431a105789248d92b0f95e84a01fe344a8cfb782d
+b1f53d99b0e8539da08b97cc7067f3f499b34d6a265b3fdb23213a51f022a6fc
+a375353f08dbf63b638a96e772b73a6b82d1e4a5d9b52d78fe29a26a99481fb0
+33b628409b1aea356d467ec001c6e2ee3529feb4af9d801018020f9a5248aac2
+33e2e2a6fc16b2282839fcae070da7c438705edb4a0606531a8514d03ae1972c
+f9da7c19a00bb4e1f74fcdf99aba7a0858670029ac2c6f21d3fd5f894dd2ba39
+320cc72a95a295dda06869b49d2b5821b6a429cdbbf58cee7cca0af84be45fd7
+6c4c16add5b1f0cbf6cef67dc4dbb1749f994df19b613924c005fe1b937bc628
+bd0fdae191546895cd8004da5c08dc4e3d1caed72e32a4dfdc5df23db8fd01ea
+11467dcc224a29d398204d99c237f0ee2bff9dd7c090605f1f3ca44683098985
+fa8cc414be3f6c6c158625465cf1c1afad7a65211f1f38bef1a0f14b42a46a9e
+5b80649acb18135aca7640b13b79e1a68dc8fdac968dd9169134fb19cb25b250
+81c69e4523dad5c0bd4160dd376b8bd38f86c442efa197a5d3fb893f8d4d335e
+e3b9511681385fc3ac3987220ff313e6c2bee49a4bb82ec55b5b1277e0b63d64
+3149c92f0f0d18416dae934ac55088ba69b1f1af9a492b1c656a433b3544e19e
+d7fbd5da023b4476c24669ddf94969d0d2d06fb478b33462b3e624e747d7949f
+065014fbe0d5b0d977298656b6320c2ac2a15eef488636ccc91d938c07fbba31
+c344bf9b8344e084017f3ba2fa7a94959d339da204b2c953f2f33cf26f4a262e
+521d1494cd8a35bc690d7a889cf07ca3d3aa8e512faabf1c229f13012c1faef7
+c78a7f9d9bc1660f20651a385347da7bd2e8fb11ad7e2f462561aef95523a025
+5b2a09ba537558897dd34461405ac7b67cb0ee9a70aa42470c82f121f128181b
+d5929777c7330f589ac15c55b7ec59e08cda95340e95707bf9567768f2aff3e9
+f1ffb30e801b0e8b2fb219cb150d65a5558559d7a296b42195fc20afa2e6a001
+023b57f46f96233457c8b1228a377f17160c7a516110e6aada363b320db8e83c
+2b314f944bebbe5206e46f4e6d70005d8790bc03230ca96f6908ce06449e5ea9
+8b5f58807d904a7ca7120b6f3423be3adec63228b61be126e07e86d956410831
+8f67db77d6f85e2d00bddd4fc6b576d6885a31f5faf7506f023884a9f7aa1fdb
+6f0969697a5934297df497eb5db834762b25df93e632c57d40169b8f9417b7b8
+ab830f0ddfeee5e97b2075c9e7827c3292d1d088b395c3816e3ea9c2c1227ae4
+0be7731eece4ce85b452aa157e14cf9e689aef6ba703f849ef4097e763cdcc03
+176bce3c120b36dddcf4ee6ac958a9b292c237478edc7bed3a1cf5dacfac2495
+e51272e16bb877e0273ad480935504b0595e4411f569b4bb5e9f97a3fda1ab94
+7a4cde4473d062d9e2757feec8aa61e424a8e60f742854d18cbeb5825c5c141b
+fb753bc08148072b2de9d5e849ab386492f84a1fecdcc30db7f3c66dba38cb68
+11457f80ae33f364dc0d3eb2b181dd398aee1432afe16974d3a0c673fbab22ab
+73dd453d6b39d557238592e73860e6aa8077e4121ad7b9448b6680de3372e965
+52fe2599d6582ab4e2cb9258104ddf048ffa880d0bfaafa9216e30337f333ae8
+e7287bcb00f6aac323726d4cfe4ed79d88ee50a804c82a6a8419a0126571cd34
+d59c7ae6de9e85d1d1dea4d3414e7b8e7f78f9ec75a790e245cccbd8c973929d
+6e60e62c235821a921a1d3c115a468b8cee4884a5a054ac8e6cc1f47f2d456ff
+df19f9771b6406513883ca47b3568cf2b8d11126930652c44ec929b43ac81616
+10ae86d237e27e1a025540b0470c28f026f2a36c45308c1aefcff91675632188
+4546cf3438f93392ea6ac9dbe9886efe6b49fbe31f9d861e7d7a5714cd021e49
+c13f8d78833414f4665669e5e41bf98a30dfa6c7a8719baecafdbe9f02d4ed49
+6da3e1a49720310814acd8cf3d6cd01daa49d2536ec7c15051b9a6213f02f445
+7646b800270ae8f6b01958dbfa1f463b31791cd18d655bf222ed7539e646eff1
+0b408e45c1f7b2ead6821be8d32baca028380fc70490b03519c52a4e0897d5ac
+3c11a4ebfec91b197d56e13827ee64b575beb26d62ce949fb527f373c2a707fa
+71fa7534b28f1c539d91dcb903a4ce8761f27938c32ea7e5f263efb981f4e68a
+d9358555c50cd7cdaa432fc1ff59ebab8fbacb5e00e128824b93b634c6e66461
+11f2dbe9d2b46fa331531ff16ea0335ebde0f36cdb1d11b6466686bc598967a9
+3ee19699c2e36623963168bf26b4bc7e5e1d9d4bd34293f2ae7d1ecb425e83eb
+2ae1a3256504aca6fd086a2da54083b1c53c02a5eca291224f2889b9583d786d
+82177eb4933b829a053282ec0d171c1395ec9c0da3272f2b3fb170af1ad82f02
+177939d9248ba524856e41752b24e6f8a085c94a2b4ae74faf307603c30e29fc
+669a153beba40a8ca299ae229425ae53fbac3a1fac3b9368d4caf5d4bc90dff0
+51837d3293bccf9c79b30d1c57ccdbb858be01455576cd8e7b8453e795698882
+05bc410a1ac17dc799c8c59d0b93683c8fbbe951fc78871343cb79e1875e4dd9
+61575050e2fdd2b6dcd68aa0d3d84d70520ca2667baddff80a45f1a51ff2bab7
+0f2c06fcf7459b49a5a2d93a2d1e8326fc9f003b2c749664f89242e4972985f7
+66ecccf00248be36c46f799cc02c65cfcf404919bd833a984b86cbf0b376ff1f
+f8028fba182fc5f549cbadf5abe04bac9cc2efb85c659f6f8cfb57613b157fc1
+adbaff830594f15e32271539ed7821947be40e2388ac330efe95b0ae735cb63e
+3e16c8108f29b1c2366a84095e4e6fbbd218f3d20f383bbd0989d3cffbb6e103
+8e35d04b232caedabe3e4927ba60a8827f7e6d24f34ab2cff12830397379a485
+7963e36ac0991b4778148b534ad9b83103d25de578cd65b18dec87be83f32672
+daac6f8f0f73e9e5868d0d7decb65e697cfe65ed5a907e4eb33e46e2179c1016
+9f9223dfe285f64bab73299b4015397985977d4ef57731f778e1eb8c01e80e8d
+7ee07e63ea0220e1beb40b7918fccfd21a4b5047dd26c28b64e4d0a5fdfdb143
+21dbdcc520e139bffcf26adfed97bb0bfa4b9bea1e2f6bdbcd162d14250f0c9f
+79f81e46c2c3344efc5eb21db6ad87c79e0b328b67218a9939d2313711b6b5af
+4111d8b27899cf885303acceb507af56abb98ee728905745884e15f40c24e404
+c185057b409ef4f2b21f85efca569c434a54afc33fca431dcd536ecea8c0878f
+53c3595a83393917953999daf5f24d1ac34aa578a0f881825296ba7639cfb8a4
+4fde263190cb53b12378245088d61a90ab50c855a08283d590d72035c3b5ee1b
+2c57037e89cab766695cc4c9d3c464aa7109dfd6ff4369f6da99daee29c0174c
+2c00850fbcd8f09c703007d3607cc15756f86494b94b24ad8e26f780b80c07ed
+7aa8a6245ebd46e2910ee969e3b6f48e454176da2d78ea457b15503f94890650
+a70fe2450fb6ee7b72d0e5f8381455d36043297bd23d8d097353e1fb50fc3f6e
+91d3edbf90c0d922f1f767ba597d4478d1c6546e18d99e9b35a7a7f82e2130d3
+65397994684757fe5c59f4c23e8c239806fca7722ddbd39e51ae9a43f5e6c38c
+c6dbefadd616b3ca84eef096117ddcb1878aa4eadeda376a841ab91ffe1b222c
+55c48f85a4bc773ccc5bd4a2a7aa0043c9883eb19bdd294770dc55830623418d
+820678a1e3c5359f11ad71094d85255773af711f74b439d11b46874dbf31ac0d
+ee41eb67422ad8412ee4204950faa78bc0e2e44967e7a55106195d28490dff1a
+7fa2db437e0a1722035e6a6fff006cb36d9296c7422944f2041c8aa18459f920
+5f7ef8af15389c20fa0a18ce992fcdc925337bbb76dc283177acbec1883ea523
+a2d21243b85bc337b9dce806c87f249682a7906727438c03d4b840fb226a0d98
+43687c3ade0ef482d7b44b5149c275b16f8bd6f4dcd7dad8cdd879b7d0d3ab0c
+d97f0fd9d11ed581ebaff29343e3259c1d7feaae200d23143e17df4b7814f580
+6cf9f5ee2eecccb968ffd2502d0f4c835e113933772f54b53d8ee37d96cd1fa9
+fa40f4f0802152737f53b0cbc8ede09964425a204428c69acb3b364339e6b406
+3134a51562c39de5c936c14a7b63fff396a63fefdec037782ca68bde709abe85
+fd06874f7820531444e25863f5d06ab8c030f03098e3e15e1ef4b4d350427a65
+9016542f347a7e317bc4c8ded6fa285a5d3ec51aed7fa6336d970fc23035f5ff
+ca9fce46d418f2fa7476520b757969aca8e718a81bd1eccadd3d8a7197117ba1
+2fbbef06e3be344ebd4a47b117ad84671ef81065630214e803ac1080c8e690c5
+d3b8f3de2b73bd52a764e0ae9403c2703e67e54031d0c43cd719cdc69b5a8243
+cec711ddfa805c0cc9a97996a54ac937292104a8f16e7cb5f831b1fe21cfd9a1
+0af92f43b0cdc193ae3f0b56ccb5111ba0acb3b493c61600531cadd4b25712ec
+d8443143deaf685707d40a633e18ef35838658f246676218f5086747ef135171
+9835915a02d3d82f2bc2a53b2b067bff43c8292a19f57a9e0bb5e3cd4d380562
+2ed08f5db49200dfd6510b38c2f3e849ab130bac965ef35980e1ae334074334b
+a072c339b51465a1a3ecdfa96776b202504e0f77e23d05ef46a4e8031914fc07
+0d7a195ff6dff34ae9c281549b4946eb68bd7a22f1adff7657ae7b3e5b23f97d
+e8ff531b35424e2f3b7be567820dcb6cad441b47c6da9d9f0dd0f685878d624e
+dc3545e5d8822556ef428e2da4c646806dbf220136a65b6d41e0d6dab77a8efb
+2df22fe7cdbca5510d0e9834fc733d0f904f91b807de200fd0cfdd0d4cd5e0ec
+87d9b66fc0207da75c77b854476c12831e2eef1ad038c7a338471ad5e77399d6
+5b755595c85bcf37ff822c817eaa4b35897d6dfcf9e312006c88cb9b53def3ba
+7c5adf3559d9f6a7d69c88706bd587ec3a1eea228ab8d30005f4ec7f643ebfab
+a74aeacd63b50151ef1119bf8224ed776ee485af28090ba447d94011aaefa8eb
+9ffcf6738de02e2de5c1b5b9115eb4bb31c0a2dca28cea0f3052f54f2a2ac2d3
+f170e46104658ac73679ca3bf54dbff098a5d88d770b0e9670cf79852e66a305
+e4b24a2127f05464e5c066c812879bc9c5198a5d662b2726067321620b1994ff
+e4e7746990aac5377837bbe5d61bf98e8e0d7c12d63df9b9a07febb23a1660bd
+9f30e28b323cee347ed9441aff6f49673b9f24edc970eb2f89adf7f5c359f73e
+6bd36d9032ed8b7e44874a5eeb8d8bdcfaf538705a48d976ec5cb27b812c35fe
+ba6c4f280feb1001f370b37358efc8a655d06216b0a3ec36c00cdecb37612044
+727d1b9e1b20712d74c05b2aacf5d7fcf01b7c603e8a9ece47d4a470f76493d8
+705386fc084005bac1030a021f09c9afc943d488d68e621f4164e4f7285bac17
+8beceb45e191bf201ab9506059203437484e801cadc2fe2b2aa938f07bc24754
+0a747f365a973a269ab03ba689b37a3b27859ef466a4004bc4fde11c76832635
+4d6061b00b2d6229ad70611d82721fec9c47f44942997593c12ec454a6a5d763
+7dc8e4b7142ef837b1a4c28ecb2fcb0882e9209b050aebbca5fcf4b4ea943ddb
+c3f2cd6579dadc802ab86667d55e7358bfb2bc6fb11323403c7c4c82dd94123b
+4bd6255e81948a58eea62033bbdac0a58bab2d23265951578ff55009b3ec3a45
+f686060c92386014a577947a3b269b1c88969659405d893c347dfcd13ae5a46d
+225a55ee47de6a0e948005c90708aa7e5a148247ff52788567df6f541fb80117
+3f37ce00f85d450fa5c41cf0157e1437e6a59c0dabcca8c93f3ca36fa160d8f3
+1a90198731d5ba14a36f45de024770ff34c7380bfd4129259963a329e418687b
+4939fc3e541fcca743352b9763c79e4195a32b2385f5773e446dffef4d04a001
+f5c0a5de4d3d834a9f3b93d92ee1b3cbb89bc38e4cd82e81058620b5292db56e
+93d811b49672c6f9c8318b203679a76bd8bcdea29920cd8235ed5c067343b6cd
+74f3ea35b2505abe8cfffb5c563e3f950588bcbf8c19276a77ecd653f502d59b
+e9ff26aa254c38fc251f7b4b3d142b9bf4e6465a71c596ca01e7ba8dce970f26
+6c3973c2114d0434630a9a010b652063d2f744d00c316cd99902e93f32598b98
+27e381534d66348522cd01e486dda856b31ddb97290d4d174c29484517ceb1dd
+8a6761ebe32158b24beec650c651c59225cfac15b36e0ccb581718a9b826bb29
+70bfe49620a1c1c9e9bcdb79ad42ff73507984c1f8f4622421f8f1f422758cb2
+9320e312df0ef2306404f2a234c557a1aaf804f045e082ffa428ae87748f0935
+6427847904045b8d376521deff6943fce1adbdbd006bae99712d1043e88fbcbc
+cb5c365723bf9813c8fbb5f59cae4ed5cf89b4376243ff6aa08fb7357e4b208a
+7dbc5b941dd0439ee2bbf3cc8fee4be180579960ad02280c4354a95cef5c1f76
+4acf7580b57212b3eeb72d70fdcef9def5b560b359b6dfdca5878900fe4275c0
+420eff6a4215fa30d1a99e59f34c4ac9cc6bb332fce79275e78140a53f2a7cc2
+964b48c9a320959895ec3474975fb2201d9c6423adaa3d93192299511a2d8156
+be7f46ca560a0d8cb54a3ef60b099f3aa22c91ff01b64b83d192dd78958a5428
+dd344152174a810e9c7eb678efb08675aef03a78469a4e0921446eb00a953d29
+f1994cf466618a60db02ebb84a41a676545b5a31a6bae8b6c81e0e7843a29e20
+c9a41bd15f37185a9fb1f7daac3eaf3014563e323a190a4550fb910bd045ff65
+3117943f66a0e6dbf736cccba10d12e6369debdf2b4265f1b829bd6d2882566f
+c91d49643344808c25f6a7ab75a06f6f5fee3d2a7a889ac49446568621012eaa
+e250fba7b95142b0e819ae19694cb54b56b7646c2f1e586538931b7aa06b0b64
+66b21a1a71e5ff4d25485875d048ae5c28ec6d4482b6154da935fd50bbca886a
+ae4d476069dc60605a38942ce55c4ed48bd74f137619112e1d082161133e1af9
+d050bc347b94b7821ad36709b125f36355496d611b9f2c616a45585ac7640ac7
+167c09b04e1725e1214390526aa420ca17166eb15861709ec0b5d3f597267ffc
+c48829e6f51a0efaade44bfd1383060b6b2021dd463e0d12287a4e415ffae432
+6a87c0d59c6f240feaa151b88f8369ccb23607a28c59b5eedb8ff07e6c6decbd
+1cbdb03c8c4cda0cc9d501499ac2e109e407e47d092a69bf917ae443ce42e583
+6db2820774ad8d821e85b0096661a16831ce6c92840828389ee5478b44a44237
+3fd4b329a3131b1c095636dc1f088d2dc9c17b0eb2bc667e12cf1fad4aff1b43
+632b05fb7e68100a2e465f8c23ed1b1202c98d836d4ed2ab167fb01183585f0a
+1190642d959ed1aafd2554382f54c6806fca95e46078bff99596492dd89da8d8
+36e5532ba3f21c3e0b971e20d1648ef10ddc7d115d11e06360487cbbb996b5d0
+dcdb10ec73479c85fdce5c5de8f1a363de1d77c266b4fbdcb21f7054e1e62dac
+5816eefa4dd3a6de7d986e0ac626f40faf5d2afa917c82d04accdff39610d924
+54e112c991a90677684818851875eec26efb47be02b77a80dcb21c0965b5472c
+9d08bb3ae30ab03f1eb6880cd1fc19299739d6dce2471c57136752edfd692ba2
+473fa48093ceedfd8483b5949d3fdfc06eef09b02354f525552d22fc140c237c
+6470b4056f9c9c7b8e72693719c32692fb087c2f7ebd0c3b6269f542447b4045
+69fa5bb27e963e8c2e04b650cd1cd5bf0e0a5899fc2f05da26dcf63c104ab02c
+5d247df2cbe07001435584d89d3849f1c830f49006107e7308080e8061c9a05f
+98b63f8187caf515c44d1bb5338107a156e62ae3ea518ea40811b0b45d8d45a5
+68cfb3960b1002c6008257495b862e76fa8817689f208ee861d5ffddf9f867ef
+9ee7d9775ddd2a0db23eb2150df55959a165f08c0658b920d34f4818459e49f5
+b96f39bdd27b6fdc1e76773f887fadc974bb2fc41cb22e90bd16899e5a84cb0f
+eae8c2fd8cff694709fbc4bdc2c6cce41d50222525799c606485d56d2b1ec8f3
+98e28deac91de7ae014c26d2d6f21b09571e85489c1318c898b76b50fb3ba80d
+fec90fdcc3294a63affe28a24a12ff7e5bbcd069c4518950b1e6b3823b15dd2f
+1544e264b544677ad243999aab59ede7b1a7723d7cef0511c9225e8d433f27eb
+bd478edd814a6190dd2047f1308ec7d88089e4429c2480f5eb49474fc62a10e8
+0c6fba6e1204e80c9e7132fd7e410e0d025b811dce7953e541b6f3d7694b0f0e
+4540ed73d16f6eb22a282cb6fbd9dcf0f540a5cc9e0c28a02f3c97af5e9647ec
+c16d760c62903c28f2104f6b4ee3e9979453a73f2cc7f978af8f4fe33398a2ce
+f40b8a04f2e51a03bad5d888f92272a5fef3f64f5a7cbf4c12c183c09aa1fcac
+85802ecd6c1a24d493f1c02f91658650445dd4fb2a69979753065ac488318871
+478c30158c50075a9e34cb0910d31515f1a196a622f1283b394ecaebfc86e18b
+c92308bddc296bf773693421a56b70d1184b2ac6254f8c26fc963035159fbc08
+185b443a9cba50652ef2e6360d9f4b29b8cb991303ae7c08a0fce7972387cc1e
+13a1222cf995f9fc8ab3c6cc98f07d3e46c788f10469a0e1ebc772b302ecbed0
+75b29982778a0f52a80755b86adbed2a8a50c74fb58eb4f8fda5c42ddca54687
+1c525ce2a6b7baa848bb4909a409ad6bbc33674d01034e7e79957f0dbc6a6d2e
+013660a4493b767a5d582894439008916a0522a245295b5d24649fe003dde326
+ff7a69783bc91f7f237aa6327963a625743728ffac78d58b04f2a75d01fe68d5
+bb2c30cb93d785fa0150c7b03258fa26bc0a7e2edc10074b29752ff3a37cbfa4
+32c473576c1ffdc0a4f29136723c07c07bd0652e6ade3e9d47d35ca15c709e80
+be20449ecb44255902d10b998019f557915125b1cc57bb7807de47c0f047d117
+7df530cf23c87d12c7feaa85da535a9fa73c4aef3c208aadb7b965cea6cbd47f
+3221134237ae9c4fbf715ad0e4d92abb14dc477eb2ef56fcff48bcd2abc14496
+ba6235b64969c10c85df47bc6f8ed1b20e9e49a49e31dc5fd4147121c83ae79d
+a1f4073ad01b4c08ee63549b65697af167cd6764057ed277daf92420ae647313
+1127dc33f86e22d6098a9d58aa48722f1b496da55a83831e3eb0e966e7414f9d
+7409236f9272867124642c0e42499dee234ab9658768ff0d9af4c1eb7c454374
+f62ec4b82c903647f841aeed293f2d2f645589c6d47310d9bc3e1e3b5951d42a
+b63c1063fa6e789926653218db66d55d9103d85364423c3f374eacf5c6e62672
+adc70538125af1993f85ab40b467a2380253b2456217e0ed319b5c15addfe784
+2e044434054eb86edad246b7341e8405a8f9fb1090e4bca1babd50364ce5931a
+9a146340d5c068518a72441831eac30c5946bf488f4b0c217e94e23fb2629d5a
+1a6051a3afb234fb44bfee849d57bce73ed73a6ad9dd8dbb9476005b968a4b68
+577ae2abd5110767e2b8edf0cb32d8f9cb00cfb29f6205355d9ece2fe629708f
+bcaed9ffaf8f3c3c59425138f6687272821f400df3f9d9fa9177cfa9b8995d70
+73bd4fe44980324d9e0bea847684aee5d7d8f2d793630ce299dabd36f8bcaac1
+44226e1bbfab853346eff594a5f77726559f61bbb24738c573b79451e70abe0e
+e7d6fde3e9da9d135065ef8f16a8e0f0631f0f8ddd000611174f204d1f74b8a6
+ac1852a48394a2981adc7b60f3dc247e3a1e64607d1517ff69905163287b7b98
+8bba2f801cf1239a1947c254ffa75ff4e6c6e6fe4dd52e9657c144cae37a51dd
+83f11f37e0f43404e1bfb9c37bc1d96f111bd1307ca1f62a73a93679801ebca3
+d81682171e7b6a3dde4def6ab56c5b1a1a879679a4bb74773a5d284e934a6dbe
+2eea6e43cfefa8c5dcb43ceb66041075568c8b712736ef8f5ed09e13abb10cba
+fb86d56cd6366789d54ee8b41e2dbc607280a2ecf93d70be45ba7840f5278926
+383bf8ad27cb2545473a0d9beecc14a500aa158e8927406dc42f23667e056a7a
+41f06bf9b92eed11c93b395096d8c3cc78c6c6e19ff546b5b9b0f68f5cc01d6b
+5f3946e0932d703b99e51f378dde3a7ed0be1c59b6f1b55cfd8fbfc0df4a210b
+4b873ed26d2bebb15823282f803cfe09bcc631aba935da39b75eb25d4dda2377
+77ce6e532a98e4a41acb2a064e43bebb65f77f817f928ceadb4eef11aa9bb114
+b199471d75de329fe79255b78785e1653c6cc06ed9a19d2904df8812b992ec62
+588724ec6b27f8ba4151933b1ab9c8f3039988e7a7dc39271a778c2827467016
+7871ddfd347160609d995e34f665341210a376e399834808919bf06f469c1d96
+ac5a242f8b989898c3d1b9b23347dd4cccba64fc3fab0e1732e8e0259495a577
+328c8074a84211240a979bfbaa94dd03734326a70bbb62acc3242ee8973ef29c
+8a25ad0e0273a3da388178c4809cadef54bfe2651b54d7c82711c0c0e23f8981
+e8cf67fbad3c661afbdb279e0aa9b9b1ddbed464a7ebb25c87fa98ed0b412bd8
+0744919fc5694fd7eec9fe3d3d055fd8e62d42453997d1255e9db4420d77820e
+d12a5868d9793cfc4d07f9add32cea22ce5b1194ddf6539321e63a97716e5125
+1f1d2acef7b33f4dc38e7f40022c216293ec011a5ab24df065ad1e7275578a1b
+85345b4c2efdf1c131accaf28dda637ecf8ceec0d91aede619598c412de9e69e
+66334fc26830794402ce5d26386ce6abc75478d75ca539a22d1305c03e603ac2
+7a600e08dfff4d4b235fe62af40fb309dde2f4b63fb66e069f8252ccd40190f5
+961050cb0c5c42f9a34d6701f952babb5c284fdc722f378995f48a89244a67bd
+70441f61eeaf56e75cd271cd029465020be6b0e5ed3482397e9bd4d4854bc34c
+d9953f80524b3bf564753b4a172c0a0efcbff0197b7f0361c0e9962bbf04c854
+7864ad8e408a3a0b5411498b4b22dc0f75b55cd24945c6010ff40217a8ae7358
+1974aabfd876cdfccfd3a3b7c7a686bfe184f1f9336e547d5969dfe6bdf1542b
+a511230b1a49a9f8f904cac4dfce015a56a04219895955fcf96ec1db51c2bb8e
+2a9980231da7f533143acdfed1c012aa19beb7e3685d535639c272ba3bdc8c0e
+dbeb29d6c8b5835dc2ae973b66453271b1d1af679eb2410f79b409ae7654ecd5
+894d4e5ba136c8ac55a43c240f30dbac319cec60a7dafdd4ec2f4c3f071b7268
+0f26463833fecee2b6f8d1395a21f711b053201e376c370a4da9ce21258f2471
+fbfd7420c69199d10951902d65b9231b0bea61ac0664ec65710bc1dd0f49c2e0
+f7522ffffc05dfecf3d4f62e76431312443662ebcebb09481dd777d2081bed8f
+589a557163057df329dfa40350c583e5e551b4092f98ff46692d0667b386cf19
+ae5816b8bab45cc9bf47ad2caf2c5c67d74e54495724d31a866794a5743a8170
+e01a650cf7d32078c4f138f12333deda9f5866b56c129f063cdb4ad8b01ee851
+b018f2a6b1642505a53bf174cd38e296ad49a55c7a3ce0342e9acb2b2ba0a000
+d2c24024120909d2e731d75df9df5e526b8ae01db939be1c06a6b5cd47a5ab5b
+903b131f6e8b24ba6e84d6063cc6b1ecd910acac51b9caa904adabc86f211daa
+4de71485667526f76ba8815d88936d6bde0884d20a49a859f91d4c7465357c1f
+1150da277b33530fc29678d1c2ca4979184abb70eb9ceedf2049e4770096549f
+a1d6f681de040b2b839aa3b84c3208a699449117e2b2e6c40000202dc26bfd02
+21a12cb4c90d656cf5161edd8df35b1b14e61736977d27d145e93b5acaadb5a8
+48e0cd4794c5256d37994191c163e42f322a7f6634ad4e28163983079849a515
+889582f0aca8674313abbae0391f5b99b116350f71bbe5fdaff7d0f063eb8fbe
+92d6f268d8b779c05b02792635dbae7cf29f00843c2bd21fe1102d62f5555fdb
+d6b1f4db60f83252e2d84b6350864c92b3bab1004b4ad1985bcbaf3e7fc0e726
+bbe552b85e245ba218b241ac84ae7d95f5e22078dd8f2bc9d5f278e4f202cd5c
+db0eea717ba5f6710ea1331d6f23004d7aaa37c109774b4326569dca095ce738
+f016fe709dadddc0642c3bd78deabb299d9fec3fcdbe77aa019948ff72dc1488
+1db1d8dd0346f8a8a240ffc068c85a53f348bf78e94044cf954fe6a5f767bbde
+6ac09595f760d933411a7ce97e391bb40ec799917237efe0bc8a82943f8c66c7
+ba5ed84360bb7126cc28a515524f628a965885277098a6b6a9b65d8dc9b7c149
+03921bc2c5880127754f3c427ebff099f6b809afeccd9ad4c5416ec83152ffd8
+a4df506a169128bd5c3ace56f2382f20cea0e0a7c6bd8d5ac4008abee165f89e
+62baa18ee73ec8390f5afbe0553894db1e4990c93ba63fa79762df7e170ccc65
+97514705a4c227e813c1ee7ff89d6f73ab3a285a7e6ac30f146356a98d96950f
+6f57ae73e29b31bd2b6575dca6a85baafbcd79d52e541a4551d9710fe5953139
+dbb5e8c24104f2bf80d28c4feb9f335d7e6304254834fdb84e4123f30408f9d5
+0a8e19f62571722a9507facdcda6e219415f0981815977e8a55fbef06c620267
+55f00cbb7b3d66a69e874383ebe015e2ebace298d88d44d24300f8efa0c9bf96
+83f953badc213a41ef45cd89249c01f1400f7b3727a45c20e055a6b7593b8915
+65f8113bdb1f7cff1d74264a79f9282ec78eedf689f5c49c11d2061a1c9ad9c5
+8ffde556a366a2bba1d9fe23fd7018d87382e626e0cb3777b1ede383b4d4cf0f
+89f25fb945e2423c569e44cb18f50159850be8c4c89dac37a87953c2b3e25607
+c7dbefa700f9bb5abd0f4874399b67af115d89f8475993fc8298817cecc24501
+553aff3494b9e96efca2704607af8996f56163947a43c79ccab867cf4000a806
+e1610b2d733abe26692e755cdf0d5acd6f2d1477ee98e92c49ac76cc32315dc3
+f484565bc1a9c03e1089eac9637eea39d85c6828c9d0ae314f153b1e02a1f4ff
+1343a002c138c870964c408b45ccaac7338086135bc218917d2800d66e6831ca
+289b0adc0e66e57256d766e5755a2d2a84f045bcd9f3922eaef236f47ade4683
+35c0a0344f27b13186b4e388f4804407b0495db95e3ea8572606a287d7bf000b
+2170f1ba273a43c443ddf42b5b741c650a89a3e44601a0e95959b5096fcb48d9
+db981883475ba4d337c82128664f7c69bb7584e279fc011f875e7b155d7cc16b
+e3ba4800b8b3147f8653871e76a7ebd5e3f54e5c57195ce0463e98e6d28dee7b
+6c19167ddd223e4e6842731101239c4f868e635e84798dcd6ac087f2352ae119
+b5af28733bf7edc64c43f1aa35626339493fe911ea166775c0b187edb3f85b19
+70d9c7f470f4df5c02a243b5b7afc3c97ebd662f04ea43d83391b8fde72c0b6c
+815bb1da024a545e6f548ef3b552c83925cf40a952b038b50b055e6f68ec6814
+7e2af9748c2838902b319ed42f21765bf2d7c33b343836c09f1fffc863d6eb36
+ca9410aa45150e8e1a4aaae05de24f6c13f68914b31f5a0003573c3ebcc7b78e
+27ca6bd29049340786dfa8f061708a207f8aa1873ed0a5a1a343f808d743e6e1
+b5d40fb689ad0c086b1ca3fef578dcc2eedba5a82d6802e1feb011b150c4ed83
+124e21c2c664fca21b998bcef82563006ea66f93bbbeea7f6fc5bf95d4d1f223
+9227636ba3ffb0dee1d005a7be2bb6def23b6cd1b8e21895e92a0f448842d6be
+944d4e93f541320fcb45f41aa0fbc99ff22501ae5702fc9f02e49c91f04bf645
+eff00d04c12d7e36c0dc4898fbbca27a12d018975a5cf7f8ca9303549fbff40d
+235e879542eecbe5501e1f202b7df67ea5dee6cad8099909dea14b23a3f50056
+7df489c2d2d7835acab4124efbe8502d1cc7e6947107c3d3b85c775e882153ea
+f3084ac821091a511f45515004948ff5585d939e7f84b85af968133ce921fe26
+c3bf7c02b98486c4e3338bcff59f45bb62207c30072f274295f552e827153104
+4d16a5a697551fda51e9baa5ce295822d70e398e31a8781bdd3a05565e8f4659
+a9269c9fbe7497cd191205830d89a4f0cb1f3693f0f313178e75a43d471e41a0
+d0c5fcd0b81efb4904265dc473e1f85b2721d2475eeaf3fcc3ea0df52f6f4713
+9093a50eb6ec5fd7fe89e7a0989bf32aebf8d5c317b9480bcb608803e836753f
+3e0d437bd0e4aff51acf6915ed5b132e08952e314d3f0c491331dc19ec19c514
+15922f9ed813a3019e49cba7e7198d6f59675eeaf86fb2f22aa94f799d5b5c92
+f91a3a0eb7928a27b13eb552090c3b6ee3ef5c0db36304993a4ff2e93e1478cb
+ecce0370ad681467d506ed196a5f24d9e7d63c375dfc905c20e362d785034d58
+16df45dd2ad53237600f6cd353a075e496fad73cb3236e5e10110b2e280807e2
+01945815aed3b0f892d97408a1f53f544d1b4272c919363fef4928ba0dba8eec
+00f524f686f352a5ca5522d9581ec8238d46e8b81b2f09d186fa5ff25279a4d7
+574d41bf2e024b9394da4095c2af68f534fa2d5b45960548999ec24f6c760c4a
+7c313efb4d531445ddc9f2c853e128a249cf3bcfc181b70411c0c6f9794df600
+55e7a9df466b865a910bbc12654aa7991e9bf1b362bde5384d061b5c9db81754
+bcd23a11fcf7283bf916f995e9e7ff084b75454bff1526decbb8b7514e6896ca
+26c1e300047b34832287cda2852f158682dc6dc04affe42ea0bcd3aad8d14d5c
+3085914e0e4af3bf0a766f97177a941a868a450d1369ed3e358836a81bb4e1f7
+a19234462f9d499b207dd6ddac161564971910a98b77ab7bc790793c2df3e8fc
+c0aa4d81fe39a2bcb1a62200b6103d5f238bc5da0cfc26873e9b4f9d35dda5bb
+c5b6f4e7d5d4aa595148b2c2bec33db2441b606ce2551287a2c24022ff3b831b
+4a58abec7da1970c08ff58749221d714f17ee839504bf94dd06b68982e6ddd12
+abcb29c7e4ed801f450963e3c3cdec5497ec28b4deaa07499cbbc8d6e44e0211
+119248292d144eac98ab97a3404de44ada75ae4892fea63fceec687d57c19a70
+a89cbe7e86d16871d46a35c55993889ae4c84930cb7804b60b5bfeef15278632
+8cbae1f11f8d7a10a047cfb438a2ec422624fc202a2a65ce522a4178797444ef
+dfe94afb8e0b17e3276f0a5f5084ec060f5ba3e49a4890407edfdba654791c8e
+f3fe6580588f556d641c5e6aba0a71c5589f4d1801c64b9a7f5fd14d95bd3147
+f992117824e1a8ec4df23397e0c4674469eff3acb05aa9fdcbb1754c9c17ca6f
+cb84f87318976f8f1d2d1b6ebec0440a017d20d3fb26666a2871ee6220a43a86
+b161c5a617705e9b9ef418c5964fd702762e150c9d23d441683fa246b53c881e
+38730557f8aea0dd37a956fde37d8fe67a8c35c6c3078bc7b2f46975bbcd8530
+def80c200a452e84212c90c7cd64159b9cbceb1b383e0869b1244b122b0749a4
+f3afe50b4a9e1bfcd7d2dd46ae4e1e34821006c2b84ccfb12f4f0de41e17d6eb
+23c418cf31f10e3fb33a267eda469adf95cac4ffa00228607e788b4135889c1a
+12d6534646fc1666ab921a4924114d746af251165d1a05301e2a67733395b54d
+691509014a6c17a12f70cceccdb3768c32923612c858f3cd6ceb6a9f29e8a14a
+fa53c592b0719d7b6da28c7bf592d216edc407ac56dbb95d902d3a3de29c3c5d
+68a14382bd61d2be0531087c4ea3102c1f8a64296a8ba3ed241387b1b0df3959
+69f29235820bcc2a5b6e49922c19eaddb8267e98230e55350b14e3247a2b6e46
+db2c6c301e8d38d54abb4dc7453224f22b33f549b81bfd898cd82ed217d06084
+697eb8efffb2d079c33772df470112f7671421a6cdd83ca7164dec94bd5b4229
+3f8df02b31bc8ee6f63dd0017004d310b3adb61bc4cc20d6ab309693aa7731d1
+570dc1f5658d64be55f7d3952261071e268d954344b85bb0ba79315278279467
+514a6639aeb5dd0b6249045bf60f0efae0281daf175efb2262ba21174d0f1eaa
+de00e5543642540debde183a5edbdf40a1e6b6746d2e77cf2d7e4d47f0e51806
+37dfa30300c2c1fadedcc174e4de721087370d5e45ac29d3fc55a70b1202a369
+4cc50947fa3ef7668d5fc3296d6e988df8f29f7ef2d338a444162e25176bd91c
+76046f986aedab25148ca30dc97df787c2428a2c2b9e644a7d639894d540829d
+c90078640db1816043bfc9a3b6758da8d49a3272202adb3d110fdb4ae6e4afe2
+f23478ad76f452b02bded9790275e3e026842f42ecadcf9ead74ec76b139811f
+6bd20209fefeefbddc2015219225e75c83685209fb93e00d8443153cf18d2dfd
+3d390ec3dd0f3f09ebd5e73f8725085640ef887afd11bcab50f95108aa4faea6
+a4144d45cafd815650292b7c0c45db6eeacfc88b8b7e3e589aa6bc8fd7a888bb
+268f278236befcbea9b68af8abc1aa4b44f68d9ee1692c0b2893edcc3aa55392
+8f12ac971e79426b98cb150725b993a891d187ca22509a0fa4638e4fca7048d1
+1ddcd3ac134480885d2303e523208a07f5431ce453830a7cd15ad7cd0ebe412f
+e07de0f342642f6fd37876c394582670a89d4502ea707b367c5887d7178493b9
+225594e363d1ef94b79dfde09cce7a39418cb90565585d748e6275d57f1567e0
+894973cd32418024876c642a2919c3e184560c7368e8c241181b704ba4a58584
+5980fd92879cb62801217af8138b42fc61b1d9f335de4bf63257f0298c5fa2db
+e8b42215992acaae48c64727371add925a71c73f575ed9f47e4c24d61b5bceab
+2148b1cc1f93f708600b1eb71fa69b27054c1080ed977878d5aec8a7302b90ca
+cf2fe1505df57a0ab8a30dc77e41676792d3d86e56811a3811e1f62c376b9f39
+f9902f4bdf18835959a27757f4790a7c889c5270d649299f921de0cf49f74e32
+c6f2346d42dd1b9b56373e545726560f377472e4fa189921bcc76172c58e88b4
+19fb7ff9f4f9177a225e45db08c788596d4fdfe036239b6617261232036b5361
+bb4037824477640b8755237f24bc8e7fac7a366e09bda0288e1edaaea830616c
+78ba36d686a8ef13ef3600453ede43aebd5f5b26ccd56d212d89dcacb04a9b7d
+fddd6c69a3684eceb5a66d36d23a9d7faa731275d6f26c677e145928d6bb83bd
+8158cad445adfc9a15a7872964db9847e91581bb6657f2928d93ec87d8ca4d86
+1fec295f95b9f6d31d33bbde22dd45357993ebed07019acbd1dd8c11977c72f0
+84639ec20356917147e2dd82683b0533638a13df3ebd93a1a3cb7aa3553b2a13
+c441c6b52340332b3d826ffe991f95fa2e98911e7e1d85c7a583e1f912cc236c
+6ef8949ed9512ea8fbaa4d675c40f3adb93140e636c5fffd9fed49c4d227de99
+885fdb4d0e702a7d72810659b1da29a835ec9f8d51c697b73301838a56a6bdca
+041c994fdddc6f9db41b22473bb442465fed9d77a2b4317498eeac89fc1d7393
+162f84f838d00e9bb883d5970801db4f9c6f60f550c8f050f570f04b59d11db4
+74ff0cb4ff77c806e075b42d242f12b7de8a6f170ff8c05f8a7200bd1f069824
+1ecc6312c53bdf66b39a4db559ddd894d2f3ef73320c727e70161fccb0578257
+226c9210f23f57d74d7684e098be786d8a02a2ce1347b3a411647dbaf7834cf5
+4dcdf0277f264b311beed641b831ff8685aa78a0844e439e857eb124a36374fc
+23aa3c57e7bb85354fee39d8566bc42c4f9b92c4d146ea6aa0f3bf9d3ca4b031
+af72d7cf54943a129fc290ec6f08777b42efabec65a07cecae936d17279bb2ad
+bea5dfb452b1ceb5d728b822471c4f52fa30c7f018dd64da7c718bc8730bf15a
+2161e4ff2a534abe07288466ebad6afb644635daa3dc9320f6bafbb155ba72a6
+7d915dac948b02bbd32db3c100cabdf70a3a14410febba79af58b108eaa56533
+ced27616ba75b9b5468ec493dc905e487f4334d654279e9e5a034a2fea0bcf08
+950e59e05d3f609600277b700d8edd96f9b853bb3f2ee60ce6cd335ed81edc66
+21d6bd5902eeca435a11b9d5a3a9a09fb20135cc98655e85afc4795725597b18
+bb1f840aefc40c7e3c8d1997381b293c82adea5402a2182009f55447d030ad4b
+02e53dd9cf70dae3cc8f866480df0b5c1f471b8efd4da603ea7af3adde13316a
+9c9db61c88c711d1516f5b90f9ca46b5bfa9ac0abd164c661f680832b7281f57
+30ef82f1720eb75438ec31714318fbf41230fe2d71a119df2295dd6203b57d63
+eb05f164c1092dca84d6e2898a5a153936ed62475acd93284bb2c057d98b30af
+85bd8ee5620f7c98349e5f27f7da989e7467e8fcf1adc07e035da717647b6276
+9f033d18538467aaed3794c46b6ddccca68ae427653cb3cec9f74c19c45409c3
+c95910b6847dca37193dacec5215afb45ebe38d9b5c1fbf80cc55f9e3fe3e6ee
+8b209a466f4ef8ddc53b4da33ad1566c1837bf59019efede34c75f3f924540af
+9d8da9966944ffad2007193ef4a49180613fedb0378a60514fd77f89ced01ff9
+0202
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 34 /quotedblright put
+dup 37 /percent put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 61 /equal put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /quotedblleft put
+dup 93 /bracketright put
+dup 94 /circumflex put
+dup 95 /dotaccent put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
+dup 124 /emdash put
+dup 196 /dieresis put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+/UniqueXX 5000793 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306457c7e62c1d269f306bd3402e266de
+fc3b5e7d8a8d2f5bf0fe6ddd40d07391df4fad4a6018dce29a2b8f692b29f202
+3a7c0e66de8ed85c14f1f8492167357f51a7e84cc5d92e0fee4d81cf7fbc8de5
+2d2e7bb57142033993f9c08c315abade8dbc4a732e84e142d3bee51557910e12
+cd8aa37c459a5e6b7f5269f59078aba3be4641a11ac48d0b625c8325b38ec08e
+4c9e5e7fed976a5650d99d82114f449b9ca14c4ec957702295a39a93ef93f618
+99b8ea06b092c3c1e503e6e436e0a9fa22576c8930ab3dc8c20f5d82b69cddf8
+ff4dacfa9c54bed5a3aa3ea5b129fe96be632843b9b6bc91b615581a985db56b
+1e01ca60ee69ca92cf5c0882ece62edad3e106d835348822400f0b66af658f2a
+e56ed08f8b0010571807009b73ab12a8cf14ca6c71f03c2a48c500f9d62266af
+154a6375ff600d9bac3f05ce34142d6867a79581c533176bb2f3117336671e2e
+44638a97167e2ea9644e31ea16c2ad2990ea33c54001e0c8156e6de8ab6a4d40
+a7137ba275f39589fea2e2db8256adc103d6f9cc038037a47e8fd469c5f98a5e
+3c15bd4ace40d340018b1cff7d1ed8abb0ac57b5b5a2c20a51957b96c453edb7
+dae5affd91a46d938fe0a13363001d844ded4323f1ee6d30012aea19b024a552
+315505535c85dc26bad31e09c50e6512802976d298c4e90d0044c362e6bf3ab3
+62a454ee93de25ce54411090c29e9d75c80ce26a84404bd9de3aee0e3f921ac5
+87f907572b8354a5c3165eea7e8b2ba4e333802132f760b41a900c698eb3d273
+8bea0aaf7aae96a558f08b61aec7c7d65b2889bb7b99800cffee5ba19ac90fce
+11437be1ddfcf0bca5670b543b9644a71c8726d0c1005abdb96f6e0cf7caaa31
+95017ca81519151c2c0b04f81e717c0691b63a76e9b25329ce2625b711cb7bf9
+9d23ec2bb5ec8aefb8c1a3b422ad617b3da4d49685fd44cc21a1fe5e1541163a
+b3e1594601d63c7e98801d7746474377ce93f81404f3570afbd5dbfe77578605
+917ab96963987e6efc2d3f99fa56ecae6422579852567f90cc90e4ef6d6f71d1
+858270205477e221018a375ca83c572b3f972c5181d18643cecb04909d84cf76
+7174b3c0c8ec69bf1e9fdfbc0fc7ed97ec67d878ea4ddac8caa522fdc6932df7
+21b81af837ab56b547d4799241310d6692918fcf8a46189a78d6638aad7cb446
+2d8774ec73d184076595c94c0b4a8233cd34f2d92f6ff94f941dfd589def2ce7
+90d5cb2159b953338c7384cb68c11779120a68bfa20b993d8c0313987eb96a2e
+aa2c11cfd838e6aa48a89e6ddef3fae1a1b078be9787140270556a96e2725a8c
+f1ad46fb52938900730154aec60f544c3d4b4e3ae36a29b707853221f9fc218b
+2f527b97f773dd43a549d2cfa221d75c0663d796c562341d950ee0663047b0c4
+cc2dd64bdf04fc46958cd50f4b6e922f609d4bd19b51bf81d9d23acf907bfc1f
+362beed8b6d547d04c7b02c129ee44a8b5e6d2139cb662989e1aef41c1ba3cce
+93398d15717dd541df07668c92881f4710fbc72e4bdb87e676823f5b4a07ab39
+10ba3eccbdeebdc39e2b05e0ebf8366a2db8698169b35dc9b955be8ab67bdcfb
+4952f1f542f3201d2a49483821b4ec1661a8d1c36b7a217c80c87f36949fbd9b
+e98601e6a6d3499dbc3033b9c3a704e6dbaaa701141598fc35541cdedd6a7910
+51681eb04247ea0f800b0887210297f79e905c55dc4e3936bb6907872d6f5319
+a3d6440478573e158e9150b94898c64820649182b4a17ee073c68ab449cca6e8
+459387521cea49ea484c53bdd8eb2dccd7b18b480babbbcdbaf995bd078b9643
+e43a90fa2bfd75608f95223c324189edb38d8be5f87bcb6631d3ce13765ebbc9
+854a6ff2125f51e07c64c4367fbbcf5186d9661b247f49979e2086c054407b87
+0828e5d7f6b92c4521dfd979cd0a9d9c23b2f79252328a95d3b3b137fcb91b69
+436480b999219fb9f41e423df20703a8d6f4d5c8b3f4160767909db2367eb355
+f30864def5869f5ff9cb6bec0c24b7a1d31c47b0903054e15369770d9e88b4a1
+4ddc22922c21f139659833837e663947895400da94d4358cb1fbe462e14787d5
+53ce658c6fdf3af9f6d35e4b153573f7c9b7a89885dc0ce7e03317f820fbe9bd
+962d8599d51dbc73960b35fa23f3def26ac4f518fa177bb12fe49fb8ac82f334
+8a5a347e0b72f58acd0813ee308ac29cad1c64ace928d140c84802f90066dbf4
+254052641b5906cbaab58e2b631816dd8b9a88897da3b6b881db49c5eb8d4622
+43461bb6758adebb551114d9a85c76f9bb9edf78251fa2462a14a1d0f5ae1bea
+97194db98669c92de6fff8c1e159847257ccc491757e9408b6dfa5fd2c711585
+a1ad35a348451c9fb7fe92092c82e0b5aadebbcde601eccc9101c093e064cd1a
+6cbd28e800219b8b39f7cafee8710eaf315579a85cf598bedcd1d77996067dab
+c097e1db4ae3e754f71ab628f56be4c0a48bd6e8611c39eb91166245a8e40bd5
+0485ee0cc8aaaea224b10863f634161592815a1689a891d7f179a814db3edaf5
+e1bb471640e8a58becb50619156ff9d6ac69d56b5c1a4c22b1b507608fc3e647
+ae43d8401689655827cb6d03bf5ec2a9b785a138cae2d347d306bfe89671d6f5
+606d60460bf6ce588f87b2abc37f503c98651fbfd3d300cc780631e360cbec31
+de91613076cfbd804715a45d9af8fefdf09bb2fcbea4e6e3e77dcc23876540ca
+e8f81f208155da6ba34a167200ff9bffd1ee455586eeefcf84e6fd0784cd983b
+6ac6636c713072a9efd03251edb2be349f9463f967b092eac811cac50a74e770
+634f323baf939b52ff501e6405e170cd1e33f6ec5d4754d1349fc64d0548c273
+4f1d270953817ce4fe1472d101414109f0afcc97a353c108f9ec5071ffc69833
+93f3b493a4955d81af8288beeefa5b05ef37857a357c57e0eaaf905015e2d61a
+6abb8167908958003f372403194cd08bb5e53917071ba9af3dee820f6028f33e
+30ed13624faa4bd288d72354163386d5a83321d0eebc9cc7733ba069b9557e6d
+c4919b29654159e478abe638b9efc288258b9308331f8af16d45889d57ed2e97
+2c0683ea0a03355cb1773f31b020544034fad752d115c4f35527bfb7d1d6a118
+a9fb79d56d355d403973e8748d288bf40c8a73faf9abe75cb5dda37f11494439
+4aedb6b2259955eba4004bdfa60c627c475c1b583238a7adf0b47700834f4042
+b1fa8330ec44019eeae17b3a16cf5ee29d9e8c8b4b413af09a887c56c7c8994d
+1df873839f8bd36774bbad45d07aeaf1309b917ba692a900bd56848d529176e4
+79a0c22cc9d6798d93c4d24e663e15862a76b4be2452e7ab157ff0e8cb0b2ce4
+f83b77982205eee00ed96a52fdb3cacbe4e07c7c10d23e600e948514d490604c
+5adeb79efed3d7b897c7bca18b7570269111e149070f9df5e0b4b497e62a5098
+85f33ecdc3e6b97a639cbfa0004f2ec9b55f0f3fadb9e3e39a039f0028b3a960
+3d28d8f33be2f47cbcd299681ea2e3c7db2290fa68b8e7cd33b70d6a4e392947
+fdf75574e784b62b3f24a7e5b4798407e6f0d843b225fc26bf69b87b48751983
+a3aff79a95162107905c772479bbefce726a370b98bb42de695af8c81091ca36
+5545904a2d25173953df572c1da13be5fc19b3acb261c1dac735af69da23c81f
+6c826407259148e1f4d3af2826f6c07e5870052a55db19f22b5d7078166f4897
+3341b922990a3872ce9eb1a9c12e0f5b67092a4ca1bd10ade68d8a21837ac5f6
+4df6b3dca575cd089cc3a874d5e1345ee64d3f3c6c40c17c1ef2ccab53a91aac
+427cbff78162fff685221124ef7ed7bad5a7cbb4c91867967933a7e140caeaa7
+60596e9e1437421b76553297c9554870e8644d67cf63ad1e97dafe756a9992e1
+fafb8100805d7ab6f918b39ddc22fb76e2e69193d93f8e2b7bc1433b0ebce6e0
+1b36fed40de66cd4300cf48a56abbc5cf4d3e19914b016c01ae88f1c5f6c3357
+46d365fd3fdbe3bfd44b5a179338cc19a1f803d10c93c09dfa07385d87ab91bf
+2c63592ce4e3415cf3c479253f29b31d2c46544ba3f94a4ff91ae19c330763b6
+2020b4185ad4ee4368cb3e599e9cb5f877b67e2a9a8f18a5a5a256a8c3c5a420
+0bb56addaa1fc14451e9c7b962d32c997e5685a9a7977c1562d0fd06f5713d1e
+f442ab24c5699f8de621fb2467c2984819d5cde2fc108b58e1cf2bc7b5dc6739
+9f15f58d2ecc2d5eaba66448a7533bd7afa99e9269db550f78d95c5b19161f24
+66d8ff37682b214cf40a8c0c52da96d369dabc7f4af2c24536072e804f8ffe32
+79019421f618a139dfca900e4c51ce5e256ca2b693ec0186404d35ffeeea6b63
+222ef5611fb606ec731d2089c8d49c378766012a66bdece22f5e8adc11dcb2ae
+1a696aa87d2f32fba5970e547f1a1d69ddf2657bc4843dfe1772999fed9c0039
+9053a29f628510d267108f481077d3876fdba528f4c85fedf6b60a4ee51127e2
+2293d1e8e684c29575726eefdb2d00efc72f963a8401d6b42a6c643500890951
+bfc1903c40a0a866378d7c2c13d5d51ee6173c698f672f3c7913ab01c253df27
+9b5929475b40706d7609b3ffcbc2dc33239ddcf156516a9ed4953fe2ba2823e4
+6411d2b9442ed046f385548da2ca439414c223fefcbeab8b0143a44bbf0e8f61
+14b0835281c61d52baeff9bcf2d59502c38cb3565eec429600c3b064fbe053d3
+391f4f599a00c1f1b2ecf2b0046a083572e798b914cba15cbd2e69b930e80c0d
+e0dfc160736c82d71631c530b006b7832523eda36389b1e7f174215f04180386
+eb0faf6769bff21abf88f651678a5e251e31981dd4cb33cdc402a3f3a5ba2cc9
+1ff77eb3b19896c41aba441137440471897b2c82d887de65d8799a369d6408f7
+593ee10a61f77a06e039cb915552cc2b0544a3663674b9a2c16fb852c29b9c35
+84d35e201a477926a1dd1369f6390178980532bc9fd2109e080f707ba261f7d8
+cf7f9967582713d4da77d597373d3454e6d1af42b0cebd3554dd3de46865aeba
+d43141acd698df196160015d6e724c0d595e44b0b979f74affadeb6cd9d863e6
+5273cb3e8f4475d2a6a2312909f084b15761fe6aa860c315b9288a5ab6c9a0a7
+9cacfd4a62a500aaf8d371d48f6f41c85fbff7470c13bc50505bc2e648050c90
+b1216a07e12e313221a5f200c09111fd3f88226caf00df7136eb19ea86b94db5
+89a7dc1aa6c7b248169ac438406d82a0b0a8fe84bfca52cc7277371b01ad871a
+01ddb7c2d23d37e241bcada5b9440e62ff34bbd2286bbbf82e206aedeafa2697
+c9c983893adcc5b1777deb56f62a158c5a40abf3ce6c7bd1a06f1ca28e183bb1
+b584c6a9447efdf298d61afb84bfb2aeb5cdaa02a7598180a253c397f9331046
+423d4d6a9af1002b54d530a557918eabafbd11a49b1865c364b42acb5e440cd9
+565fea380d780fafb0e6734bd1ae0d1ce39e8493db4643af37f3fc88ebde579b
+4dfd3fb3c9020af58b8fd6867a9ff3ac8a2bb53c79d119253b8ae78e84bb4c0b
+092aa943887361fcb78cd0092800a3be08cbf1f08f027bf0151efb74b03494a0
+2ef6d7295180807a6374d872c02e22b8d230d4548f441bae1928b2b466e3d64b
+b72931d30454519433164bd017ea6b649976973893c9c04320f11db61bda4a5d
+6f7a139ec8ddb8399bda02419a312f10a33cca9510ba912771817061ca0f6169
+223fbb3bfddf093b1b37150843ecb46795c6cb32e588e389699bb0b94a14adaf
+098f3064c666710cb1b44dbb076d6f5df301d1535374aa8b715cf9b5d98a8990
+ae960cd131dc259a90ea599680822a13e2dceb934addfd7e1e31c669a03b8a77
+56a953b885efaa4c45be8ed97939e31c6897c0c332a061a3830b6a9d036bfb90
+0d19788d495a6264a74e3f603e78821053ebf5d19d21e8dff62c8ea583949967
+1e5593aa88cf188509dee53d5c23f308697d1ca321b933e71a3fd38c5a8ee009
+40b0434314e496185e3729112dda241164ce2b7b9a024cf4f79491d6ec5d20e1
+9b82f4d753bd8126390456673a697967449c86ff5937279b61f22855be86ee0d
+1fad2a1d0032236845121e5ab765f8cb38f7f41d6b51c90bbc36f97a52ea8be9
+1891b8e85dbed2b587ce6ff05cd0b8a9deddba758863bc4ca5ce041786ab6b4d
+937c9ffc73e07b900a637c3206c041b989430de84182a430a3aa375297ee1025
+0eb8571a39f6844a034330a98eec003fe3d3f55bbe834d1430834a6d41ac3a18
+76d0b67ebd9d1caf34c6e4dc30292c65edd3bf6dbdeafd139eef954927e6852d
+4f07b605bbc310bef238821f5f5d3e0df2ff2737fccfaf3afe36f975db20cb35
+f1dae461d17b4419df500ead8be63bb485f40dc17ec2c8f98c603ee88d2f4cf9
+50626bba8a24460d56029c5716aa54698423df0efca4038a6c4dbc8d368b600d
+6aabd1f49d71f48184c59ece910bb6ac4ad74f89eeb6c81fbc65f6902d64d704
+9bb6f91492284d18f15ae9301a1e521cf6ef48d6f3e9654a8b5d9853fbc9e122
+951f1a7318445dbc6b8494d1557197a5d9d2440ce24b8e07a6cd638bebf26692
+40a07a4b90df5cb8fbb7e8e3d28332ee14b57df6c72379a4dd021e1c1476391d
+0411416dd661ba41df3c2f6314fd55058544540a4ecc6e665dc6d4118b066596
+ea9448e81fd500d33819e870f930506537f3f866d275149a069b54e3cf7c4415
+c9bc857d1d60ca5856e79abd1ee07e8821dbd8983f41f6e59b5cc25b4be38491
+e9ade422329897639cec39f85036e62ee618b1bf3db8960164f1eb838068a754
+50250f89986dc1a15bbf6c336c154c3c8f4bf3fbd9c06d29b93a7cbd75714a17
+41e4ba9f731eaefa4e199ef0efa7688f618b2f05d89fa25441a2df125f6000eb
+a8daa0b4b77e5d464e05640c20da8a90ce7b15439e54176ad96c0844fde7f674
+50ea0e26f655330f093865ddb90198a0815f79e8a9b6ace7de3c385ce9de6016
+6d371f650e203c5bf799e35ce9c57aa3246375f385fcbc0d870317afc3f7747d
+3f939b7c1c70857e0d7a1ab00be256d921b2296a5d9da132517660c2161f20d6
+9656a9fa3da0998685df078d0cffeaa768638f79242f6802fa301ae2a206a73a
+8f1ec00c7448d5164d31c2928f5777ff5ed0b47e845588931aabbe77c35f2fab
+e62aba732b9dd27f80435849b73a3ec38864b3054b53b73570adaaa7dbf1fc8e
+52e404f1882d2fd8adb61af8590d76db642ce987a432eede4fb79970b6f235c0
+add77189394f38b251d7aab1dc18d49d75d6f2cf9e81d9104fea3938505d99ba
+3f6bbe6788d6b06e908a3523d68ce98240b479ecd641178b68782096a932bd4a
+3dad54afd6f6bbacfca692b2da80493bfe89ced9c1d30eb39cf405e8174b86b3
+410d1efa64fd29b64d5e343e3ae0a400efcb9399a5014135de685a0f92fdde8e
+8474533de6a0fe7f79c9d4e45d3ff2e578233f6b7b8d2892afd809e284190859
+52e6337b138a8b4c71cc4c936eaeaf8ce7a2dcad66c9280fed468051db0872ec
+2addf5162fc7fe25b98951300ad6cb248c5b82f11975334aec8fbe876d5a6135
+b081e21fd96a1530b4c0d65c216448884162f005dd601d67fc92ac94a839a13f
+e53f106e745916be331ad9df99d4b4e8485cf82f92019ecd9d5e5f29c7426988
+04c3f489b774ebf875187b699711e295f4c06bf4716b3cf33a43bfc16c63173a
+84fde75852c3d0438579b9c68a3e16492cde07e2779d2cb4976f7ee778cd1f8e
+5ad597a64e13d03d08f3df8d080cff9da64c66e06532aac3d63a93526e5540d3
+4a5f099c6aea2ce00160b440a472ccf21dfe1d7124cdd5143850a46e12e4ef54
+441e5bf51f97c8480e597e3eb3c292462296364d8462f15c3b2902cebeeed47d
+7db5c6edc58e337d3bf610e18c4c10b1a7e17bc59961edfa0e469b9c2ba023e7
+b5b83da2be232b8bdafd6b109b3dc93a32a71246b7ff5d4475cf64de2edf6960
+810a44f4d3c1514f730cafa79fd1f6ad0e71227fb5a5ce3a861c608e6daf7e39
+5a398534e836cd257cf5c7a4b94e12b193a4f89c5b7123ca7ea735e065c80e6c
+e62ba67cba24bdb3cdbef73a6e5ff834cd6a15033f1e6e0b2a81b6be4543771e
+02c6a331b6669d7a58cca60e8160b188b950bbd4cdd7241730a73bfccf2bffaf
+2be98f599ad3f65913abdf68a23fb003aa5515421e246d9c52f72d667357088f
+3eec0ed7aa7eabe480e0b20104a4b2be8e2020e5de4895210698334e422c226d
+4e654ecc2ada192e202361f281ed0510ba142f71110f3d5feabceb05cafab0d3
+35f805cff73bb611c95339078156a96441347b6c0bad8b1ff8bc1e6856410d6c
+6189e5d28aec60d68c9b1bece846efbb1c1a39bee07b4526fa97bfa94d820505
+c2c97dfcb60934c1ac2d339d854a6a46b86dcb3088baf68cc17c6f05bca3a43b
+797c45710cc26e0f98d3abc945041b578c12292d1d38a741ec389e158693540e
+c465637c57d77ff69dd0f8215116a918188849c70d6dc19080826a7990ddd613
+c412b507240650046c69cd74d6bab30bb7ceeec08d088fe4555bf5e1604a9b54
+d86f130a57446227ce103828307bcd2bb9ce14a6c9221b677aebc515b01433a4
+bd19f77dbd0c51af6b1393401683a4c77555a5174e2f1b4bdd8b92aeba8b2c02
+87f15eeb80f298962f76e2c8455017c9f6b4739259b82b3a34ad009ee6c7da34
+48fbb6d29d973b7de4ebbe7a1cb0f9e818d97ca353ecae0e4a0dde3658e106b2
+c28a0497a044aee2b9ab0958069eaeda94d9e4488c2acac7329f94578fa40d0f
+d97a2bee756378f76b620f5b30629e68fe01e6547ae80d7c8192dc4e57227660
+71b5552e11883f598d8572fcbef8582fc18def22bae18c358c08898966ea71b2
+b645136d19a0b5cdea9ea2b3aea063d5807dd1c68c347913db22273872ccbfd2
+d30e10bda283650844e273433d59668edc0422a60a53f14e90da01e62fb1e9c1
+56dc3dbf97f8f2be52674ad37801a8adf28a0740b3c985965f9b261049c1c17f
+7eeca595e06d67ae33165d9e3d119ae206d1e0b43e7ef87b4af1e2a5aa74fa5c
+84b89fa5dd252f665fbb159cbe63cd93e34843031daff8d6276983b56e0b231e
+d4d77ed494c6900992660c50969c9fd43d4cdf1b81f681d3030a8fe84eec46a2
+30732ba633156b43bcec38f2be0e23d96f2bb8fe3f4f75772fc59e469d130996
+e196e1491026f579f7bff10282a6de57e82ed2b83c595961c13f3ba7ca474634
+a6f587882ddae76a86f58e15863f702fbdf3d4f438f2c5ff2bef9e1a5872081a
+a8799f5bec72e420bace2bcc7633e42846571b36df69d1b00ebf3e2a0ba226ff
+868979ab34b86b80539d4f3d54dc6226a51e82ffb3fb187ce9732ef3eb06bf39
+696f4bc2f78ae05c712707b30a02f6039092aa104664477a82244e4e18c7bcc9
+206aed3544fbe92dd2aea308ccb29a179752f04c160ccf8391401e2bcc7ec311
+35859afc2bbc5e29b8054290ab97a97eac067a722dc76834f77ffafcf4048244
+9cfc75006a2a999f4adde3135992a440c3bb25ec5a2aaaa055ee1e8b657e3b9e
+4fa19a03f7c1de9c6f5f54f03e35d4c685ae715f8e7fb15a548a82c15384507b
+f6a6d1ca75d05cac629da070ff0a389748f9b3ed5f5bf4cbfab872b742e3a53c
+d232f8fe6be7dcab4733f426ebf1a6d850a2f4fe8e6a951caa472535639673da
+a0e77a0e6fa0e66f67d3de821e9940fcf53da46f4bdc658263d2e2089c46a0b2
+a0a3509ebc86b25ed395c68de185f4a26e42d3930368478bf42babf84371a716
+784471ade599b4064956471a050fa025b4ef2d634348036e197ab925407a6cd8
+d5e78070066186667fe8acc5a7d8663f277d665011ba6b6b53a3b89beebb4496
+9d98ec30e73bffd2311cd205ad6452c807dab2cfcf00d97d6c52d1ffaba367a6
+a981734d982e7378506ae9ece5d4872b0ac4a75c7d77a1703b774799bc9e58e4
+8505960ed32be132ec48f2c081b5d1353fdfa35a6bb0f73d1cb9fb89f081f294
+33fec7d43e71609f7dce9954c9b55796e12ff1365e0f8757d9c581a84ddfd940
+a51e925c740ee3fc1ad3eb15cbf7b3752dc00acef487f0e4e78fa0f6356015a8
+ea0e7dbabf80f57ce08722dc96bcc4da4da5a401178eb1d78772ed955d16a314
+28d059284394e0ad6bcbf8224bd2af4349ac38966c086c39d4adf4ff0c44972f
+878556d9155acc10721145f8daecc18b8843787c34e88f67e5cc4356ad7bf9fc
+ee25d65468bac9725ba404116585992834c07c96548099e52211eb0144e69fec
+a6cfe4abf4585c0563a4de6193bb259c1609c0b49e9c93233d36fc21e65b2f82
+31e1273ab064dbd4560e65d46f9332aa343226de6043627448a5a4dfff4f1791
+84081f08577d6ff2c668ed3236f157421b2c2f063e517cef278009e021b914ec
+19025ce3e3e3bf57c002e1f0cec31889dff5471920042106c01ac3c0b485e048
+47936cbbbd7f8c9ea6cb7ab7b74cba9412bc55f7f735a0f5f9e22155e0fd5f41
+467990ff4fe633147d9bb5ef54153cc618ccc95942bb1ae0c1de38cc16f20457
+9034431bd2e053d46f545cb57bcf3523ddb560387b6adafde7f227da0df7bd39
+032ab0b17dfa0e7c1c157ff8a0386678cde2daaadc5d205dd119ec0a61fef201
+0757da69f3c56067ca77ec4b13625227f871bbf98b2a3fb302cbccbf757a5954
+f7e73a5172afef319c5877b1bdd61c14fa05446c66e4b23211250030e991ad80
+f60dd5f9330a9298ea78613a8745aed25af3578713c4c6d1f589d8f24c54010e
+092d4e80ffb2e3a367f295686a4a13fef6eb5a6fc039cf74686b9b124a4531f9
+22e4fc63d3cb836e5d79bb3c032b649d3b699169c212bfcbfe16bde5efc0a793
+089c1a06bdef1f23e77dc0bedf96b788921944b667bff17df1a06c35351567df
+d43e2e1aa1d52336a902e98bc2ca66af961b19f7db7fbc1c68f30090ab080040
+00ab996f9e713d2432fd1fd3ebbcc100fe5be96f46b962fc0b5abbdd347ac89b
+9f02e3362351951b9dc13794df57165f072308206d13fdb7094693683a5fda29
+64847ddd19a021184c591e33f41dac7c05b55b7a49f6ee9cddbf11c6d4e6e2a0
+fc198ee54c54f5de5ad6ce2e7e873efe9377f6559aaaa1366c683c6911185551
+3dc6b05a66cce713e634e77ff118b6a4bd8391d5a62ff9db5c926bf6e8541006
+05ab23f5f3994144b6faa7d80b44dd6f4895772b4b7971bec6f484172c2be19e
+2b6110f3bd95739eb086a7859512a83834dde8d0e59a5f36c5de1aa72aa12530
+4f474b608ea6000bd94393cffbc151096efa5b426c2a402e255b26e1c9822d7c
+6efc0e6ceae29d730f3447310d1cfed234ce28d96a02ee78d8905913ed10de6b
+2c36c83b946fef4778c648cbf1bc5b05674f572c52abf208917fd2731f241ae0
+0613c19e49c88bb2144996457ef3720b46552d657f9e38640f349ab0881a2bce
+854d7f06e17712a8f0ace2fdf831578dea2c53ed1bc3a187bdb0facc06f62ef2
+91c34610f81594bab995dc054ed06ab331da4fccb67692256786aad4ba194aa5
+92b26dcc139680147767f97acd61d5efff9cd0a5dbb2001b175879159aad17e9
+651a8b5e05ab0a69c5b6db714f9a2617b5987df7892734c4e7f3c7d8f871c135
+9a9a62a149965e8830196ad6bb7ff9bb54546d937823bf82a18f83af86b99078
+e09e50a497089119b8169052170868e0207245b9fd100ce08e9e628214fcccb7
+9a01cd5120201d058ae5e17349803e0463cb3d34a73b2199e305044dfc44f2c3
+d3bb78c40772f4f467f8ced7e72c093a6db83f741dc4666cd1ecf6b8e057cc38
+535cec41fd6f3e15196a00990589e1c865c67ed6628025804736e55fb378dc1b
+5c43667cf768c3c7fb8494e252dd8ee257ce688ab124ec9d24a114bbad6ac628
+5f0591cb48ce4716cc8fe85fcc4bd37bcc9fe6a61e1d61c103a5ac408abbccdb
+478f8a28e1849f23d73045c27fbf79984dca5f5452d21b42545b11744b4f6d69
+504a1b3a6b6ff230976d91d9718d63bb617a72530d0087ab3e51eaa848bda1c7
+93ecf0e4102bdfd986cf7206d3658a1cd2493b2311635b9fdb265df2bdb22335
+b8ff58b949106a70ca78ac45b33d3c7c2c9a7bdcc76bf57e96e4e2afcb88a0c0
+1a38ac5671246af812c895dc606081e284710bd26f32b8041a5cca618000da73
+636b95666e80d4c45bdb4d67dce044a6b31789051dba71550533d0aa18538ab4
+918b4fed4272159b8d260198c9bef905e0e759fefd37db7d900bde0a7a43520d
+0c604de68abdfae92012b32f9198c27fb1590c12e7a49cacd3df9806761ead82
+b8f6b4127b8dc21287d3ccb2c115fed05fd2046b367dd29ae56259eb5c4066b8
+559476006eb1312fc63f8b023ccf74763257455ad09828b528d09caeb8ca5a1f
+d3239ad983d667b9f190695d2d0de0d54818a6c9cd6b54ffff68703e5bbfdc8d
+30a871cbbe7c7dc1233cd3449294b6dd1ca110ccb2c4cbb258fd8854c69ce76b
+df7ac904d11fcc4c088dcd73dd8107643eace61bde2d7f27576533bec2bdf57d
+78746af248facbb60cb943a4bc1b2325779d8ef363d2538cdb28706441600874
+cf69c3f3aee48d6a210c7c26f8933eb639a6712da45786f73baaafcc87588e05
+65761ec3d2e812b03d3413febe8800be8862aca89084b1cb735159ee3b0e0599
+1f01385b238264e37c433a8572910642c9381b5cc68ad5073f3d6b2b5deac3b6
+13a503a57e86a616f8cd12ca2873e341b87b3777956eb8250649edb33fb7b16f
+723914c1024f0144fe1e0f93f56205749fe121f1d054df7e96c8e866200e52be
+de331ee79f481ab2668bd87fbecfbcba6fc00d8326cc79b356341c9a47344881
+1ae9ff4b4542677c08deac9ab96cfe97e7420fdb586e4701cd01ec22e29c50f9
+09b2b7aeb7e1a5bb70d7fed9917ab4431599dd7b396d91f4950af3d1bbca4adc
+51e8335928904d93ec6f3116ba35011fdddaf01bb5ebf04c1a4e61e34145cab4
+b779446c4dedbb41e899863dfe87fe78b151730e3f115c3b07283687cb868e08
+98027bc0cf20468e23bb910158c2aeda2dafa4fcebc3b2f23943eadecefbd34b
+cf440b5f8beeda8f5b010a9f3899de077910ce984a693f84c74a27e2145975c1
+da2041b7040ef40077c9d05d3673eb4145fa7af5058796029920f1986e8cf06e
+057de5b8eed753febaf7175647051a3fadd9af997f71c7f26a1cbd30126ff825
+d1afa97565217b06f98ccc3c3061cfd3c748fbdf66095f5c90011931009fec0b
+05420f1d3e10b10d21299bda69ae019fa3427303b07e7a28c7e8f3fdac5345eb
+be18e90dab6be891ccc06fc8c63ab4e1d7d3c1ddf1f60e335e74e3d5ad4805ba
+57336f36917e6247f8d43c09085c5a5d9bb7a29b2018224518a031f5ea594f94
+e973c9c8b4c8ebb3942ee70c793e4de9d38b9f3e839c6c10a96746e86d33c2c5
+97ec171681da67354d0b07504269b2ce136db1043f8a00d722e5da0bf8a720fa
+ff93273b258a030c1787d682cf899468d3b92807da88da614bf26af89b50a276
+b542a35974dbe0757d83960d087a500fc62dec98f43269889c47e83ec03bd2cb
+980fd28df459e77e5e9b8775a93c38ddece2b964b12274340860f39f7439ab4b
+248b4a6a814691560cb6463dbd46d818df473547dc2021b0661d98769e86dc1a
+69dd8ff4fbcde766e3c80887dbaa0fa8f5b8454a92625d1a6341b9c3bcc1de2f
+4384be7d18196e168b688195d58f28a1ac08f7f2e978ac1ebbd7d0e72c45075b
+8a1bd811daef9f11222f5d958e44c3780e8027c79e97a90063d5c52faa627c42
+95e8858852e76c66b49d523ebb14c6c5b07d8106ddf58fb048ce3b87f192a436
+850a49898f4d5719e702fecc138a5c849ce3cfb2b7a60641d2406e6671db3c15
+0a33e42ce83b8d33b61f6c5f16cfb2a49343edda8cb176ee5a1b558bd5d5a979
+5164326bb5d5b0631adeddeed3f3f955f1f56d70f9dc088660baea89f3640317
+eb4d538b7973419cb3461e9c4241e2d35fd504636f8a061687cc2299a2983181
+ee226a692b6cb7f37db353c49d4becba0555b100f6bce066550e8c32bc217bdc
+87328f6ee67cbd2f88ea7e35ab13268ca43173f1db24bdfd671afd313b4c2902
+86385b2f8427505c1cd22542bba74fdd9181afef5a12470d511f95850da69eae
+be8619042a44565a869341234f8bc8764fae14922093e6afa9b71e1004456f72
+2200ccb9c38d77d583e4720270c9778c8327c936a41aad2a6e37fdd832929cf1
+1c563f7c5141d6b3d05b8114e714fd1d7aadff277915c39ae9cb7de9517be2a9
+47e5d29a948895a135c1924ae781ece502331b0576e6b04b0603bda5ab71e78d
+7f58ee64ef257dc015b729e111c059141a63d6522d1907592b30bbcf7c3e94fe
+3fc435d68c2511df1788883b607d12a3948976bbcf605763d8a87fa39ccc322d
+0ad0474ff50609ac005affb24abbd18e657f600c390e3678373beeb372ba6fbb
+f184c06eb23478819abae5d326da33529518a5a3566cd360c17b413638a31944
+9618d47a2668c2ee33e4d3f57aaeff9e6389f19dfb9d9acbd795f54eb7962343
+7b4b63be0a959e78c5affce871172ecb5e3fa6a480eb8d0d0e122ec0c813bc1f
+df823ef304bade19bbf9e1572ee4163f12c5bb0dd4b42ed20bff7b736583aef2
+902ea3905cbb1783ce6251e4b06910f7044c155dd3243fef04b2040b9f877e1b
+cc9883910e54087c3817fd9e46757ab05daeb8afe2a5504d8af5005113415d97
+3cbc4aa7d0af100163960d81ca0f27141ed12df9fbd1c5209a88c168d14959a4
+d4abef884a7d9ce8d06aa3f5650f7b7956209afcc8684d0cb1034c417b4fae0c
+bc3b1301cd4ca04bf448a4f3c44711428d333f07f9bc14a7258b4ba56099feec
+86edafc0e44496326dbdc9459337cb3f7ab8f7740e0d70177f06c90ec3f04667
+20b61e6d0a064b3b930f141c6a43e06ef1fcb5911f6b947a648448fa973fdca8
+df97c24b7792bd96d8d178f70d74e0c6d01f5d989b91e99b67c7a8272abdd651
+00753885e27ce02ca417e66b1cb6c9b77fd9e7820259ab3a127877a9307dde2a
+797712040816b29e13309b01fd5907b5e02cdbdd7750c296794a9a0db77dbdf6
+a8ced87b31c8608813ddcd63ade0fbbcfbe24f95b6d959f598704d7621a31d01
+8f1b0d2fa0f81f1bad2aa591d400026c5af7e8002d9d5b99f316a6ed1be4ad8b
+4091e74f1b85663e823f18c78bb2e27164b64a40dad1e8952d74ab1464d24e95
+74f8919884f0d46e3f630d6cef6ed7fce95448429d5fddda2327d60a04ab43d6
+6ca089e46571e8af296938cc7c71e6d37eab135cf39109c14fbbdc59c9b92826
+2724a58ddf32e4c8aa357b9a7fb3d4a5df90fb2783e6c0c9a8ea76553daaa707
+4611529d59306c4ef358bf26a29edddf50556c486fc894ac1b2e7a647b9076a8
+bd0741b74f8dc601d6be0b9d1c0bbb57bac1f1897d89c32d85f692c46ed0ecc9
+4e27bdc48241b18d78e3a8130ea4a0d4ce91976ed181bb2ddb94f77df247a880
+440b6e07baa6b661ee0ed6cb673dce5af65aa488604979fd6422c0dbcfc88b89
+d98c9292652b08a5641647ebf87ff0c7e8b4b83f0413a9b29699f2ea10937eb6
+1d6b9e4faa77a58ac6a4d4eff42a4a5435e44dc2ac8b233c287a55bfdb64116b
+5274ebee6d6ed94a93784b72f25398f61ac1b2cdb12d6e7dbcbb8f3c63850496
+6c338362ed3e12142066c33d631b619cf90f7704a24440f88cbb6e4d25256af2
+c4825dc52efc84d54208f0d786ab5a5ba036c6607063789ea90c72015f946238
+b4bae185ab216e51fb78e5d46478164dfd7c84505801c5c2fb0c0c3aa3c0dd4f
+8da3aba245ecf2f4f5dad56fc2386a0e6087ea13509cbdedabbf1cce6be7d5dc
+3eab7f74131a152bea39cad5986511f98aeb6098df60ce2b019067d439a66c53
+5e6b8174983d771d7a5ac76f3509700dfd1d0df934a4bbe2d2c8902285635d7e
+85b705328b5974ac6c0fcdcccc487d14773baded4d2bd7ff63cd3edcc4d7d1c2
+0f376891b784b271010c6e0d90e8cadc01d42dc0a45fc18ee44a444035ecac54
+029cd233de465cbf664f6b4d1a2f5ba7c6d252531340ea9c189fdbf478e0f19f
+9437a61cb0c5191f31f83250d4273b220fe34358b351c5aac2a793935b6d09a7
+2a98a22cad75c1d9a79ee535bfc9e14cbca2e6612c1987e0d639ab6f0c53a603
+fa8c1ecd3b88417153d6420af265274b3a65d2da670a1ea1a8ce5053e4a6fb4f
+4c48a7d57af8bbf484317a8f20ff0538889c520a886692d14a756c658597439d
+6bd8c998d7bf7a8d613f6e340e7acde91669ce09f58e0cdba22bdc0f199dc3da
+2cb72a948eb3bedfdf029308c11bb6c5cb6a1b7c0d6484e072eb3dac6688b90f
+3f977a22ebdf4fcd983d13e7df6da3668cf1f520e49fa3c859eeb994bac3e1ed
+3451b29d5895cec055165f98d49f1822a910fee55a32f636667d0684dd113f46
+945d26588e976822981a39893ef5782e9e648d7010f7ad02f0f38a4bca4ee916
+a54d35c8a6dd965ff2885a3fcfb3a529cd3277a2c9f7743507e779c22860fb1f
+ae4fd34c0696fde0dca2c28fbd1504969fa5fe0bd1249bef6814ef9ce070aa99
+747af7add91db2c7e4a095e41ccec892462145cf620169dc48f0f53282ed28cb
+4cba66ead9a6645b583b777f3990dd9f85fd99cec8c1435fdaa31e4758348edd
+b3754ac4b2dada7e40da4b53885cf07b9dc6959c84a1e5582eb51f40c90fcfb0
+de996866d85d51a0ac64b493a0e46a5efe2dce0bbbe99a51e2d9ed80bedc2aa0
+b582386629292ecf2470b361caa6cc5f0d0f1f4ecf6fecb47fdf8c6e269691d1
+c91ec7ded5de9bdd42a81c9910821472c68e4468a52e6d39e8ba5589650ffb06
+87e99637f8b7db9392d816d8f0a11880b35936e9e08a9068672fd307a5bf38df
+9149351e60ec7dbaf8b2676e86b189edb2610e358f70ae3dcaa980f002e23727
+69afb03bbb1d3c67d243663ba97398691a76b0995fba6d97e4d7d6742eca6cee
+9735381c4835636b334402f769f029f1478706dc180a5248ba1a596915d147e5
+65129e55d8df4dde0114af8d1cbf7e588c32fe777fb52d4ffb68accadea48c3e
+9156531f847d2e331646403b12dd41756aca2e613dd6f4b5f5681a3b03d7a122
+35bb96a1c1f23986f8555190404d91ba73eb5568db47c1ddcb3db5356d5694ae
+c2042f68cf53fed677a2cd47cc08f6fc7bc7a09dcb2f0e9f4fc32351331bedb5
+75fb633e6079db87b31322017497e43946fed50351fb1650e74e6e0e9ecaffcf
+e8222e2e607649debbdf6d9c3a7251ea7a7f22a3467a8cbb7bb288f63a5a340f
+da5fe6fd23f545796925761d7e1df085ee12a34537ad3d74e7aacc67d64402b4
+4cf232fa5462301ebe1f10def16d97ea2aa76cbda00cd782a406a5df8f04dd7e
+8e75ff432088e272f20117fe738fb470ecd3c9aa5eff677f34d001a9e7ade006
+4c2803c40878d04edddf68a4dc0831cec9b4916edddbeca4d56b72961b24dac6
+0ed436ebd4dbde5b3025cf5de6d1622aaac953ab3de2e5dad394148b77e3ab77
+a447a4daa7db66c81ca046f7fc7d99cb62954cdf989f7ae15ffc0253196060df
+8e2ca2021b18acc8adf80561fdb333fd33b6648b54cd66cd8914e5177b09cda0
+701102c9ea677c51b39d744794f7c9518d0254c5977f24ca83a30b2e7552fed3
+abb09f614071227d951faf5dac33ed2c53c7d184fcde4ed7fe204b815a5a68d4
+85d9f8e10729ffc3c14bb360ba4f7addb6742a5d390fb39814014cf77af5f671
+2d3104c96368d920e8a8b18d34e263649c91adcce211314cad283497fb987b3c
+794218ca078d8fedbd739cdce047375838ef431c28b71e614831a8e9b15e4fec
+67dc6ff45137faf274b765baaa0e6fb68ea48e933d9a63690df7402537aeef91
+d3de7c84bc1902dfaf2926129b3c6153f7324757b540b68584b16ab59c7be5c0
+fb3becdc97efb776e71c9996e0c85d0bf1097e3630af65c367ecd076e161c9f1
+69beb9e7049c8871ea35182b5bd192b3a61bb0f709128be7378380659d03b3d5
+a5c9dd80caf46bf9432399a3f19b4a5794fde24b2eea8922ba2fbc42b7b97b56
+ef1a56bd1acd4c3f161f34e76c184d27038b400d380eedd3b10553cee174b930
+758e8528057f04eda10354caa4a1b6a5328fa8a59c0de90b43870129f4090f27
+2ddd1795f0471092e60578001ef2b7704ba7f5e45e5161e9da0229943edc2e6e
+c63b956baa8ee37de9792f5bc1f46e966def2895168693645e1fcd64b356158b
+9551e23a7dffbdf5337f8d1d0276b263834e4084b4e24b0fccbf0a3ba80312ab
+0afc3544a4022478a5519b26f8b1b82e69bbeb78aacacfa3ff81a4f6de8ac5f2
+cbadbee02ed722a8924b06b44d6f76a219c313194546b293914687f9bb67dbe9
+3d40f18699bf2be448e7e2c51727b754f0d5919df8306e2bd6ccc6182da9e46e
+c28c76c681eaf6eb41a131901eae3f63907f65a6819a1250cfe028393ef5aec9
+5063a3241598e1d4621ffb7ab199b0d811c6090399e5a6dddf22b8f22efb625e
+9aa2e860294e0bf1c11b8523ec5a09c6b858ed7a1e847e08a4398d7a8a0eefea
+9f01f1d812df000c982881990c634c7c1050ebbd76f9059b874e859fe675aea6
+ea63252b4deb6c01045f8e8f7e3b214a3fd009b957f1955da467487394a7db4d
+d1ae6aa7401f643cd58048318c1cfd152b0e2a7d74b6e27dad48c678885de110
+2d9b8194181cd7cfdf9688cc3d72152b326c7af167cd676e404dbd051551a0da
+c4e7fb6eae25a844ef84034e608de103660ca332800c7ba3578f3b7b5d7921b5
+dfed30380c3ed6ddaf32afa26b7808900459e9178f97b8d2cad990f8e31d4c65
+74714f048d0e88a9e9c75e162d14bc93a2b4dc90dc0730f73921a54f4c08fe04
+901e57e045bb787fa9eb8b5c39d90c9f499fda0b37ab3f715131998b63a09c32
+bf915a6099b5a85f287e6e9e1b6173288871ded3ce54148c700445b4fed0ecde
+e8790daffcb8952e3ae69b4bd5eaf6023faef65fe0008fe42dabcda12cd1d3d9
+675e036f7e5d869500ae5b77fc0a78105d10cc4c271438b9cb171f0e1a303be4
+38e07b7020c75b2db6b508586f748b88f2acf14d20410fd18205dd07dcc78b15
+a29dab0e91db059966aa5752f307c49add255a102949eae7d28b553cc3ebcb9c
+e3e4634214dcfcc2a9e05479cafd0608878672e3883fd00e8a9fabc5572cc162
+5d662552dba5be984b4ce18e23695bca3b03d1158da5f753a3ca264f2c7b9eef
+fe34d3da0aa1e812302258ead7c873649359b89a1afebb208e5861bd6a307bea
+50c73a4ec8792072f2a2802e7cb6d967e228fafc1c5fc64a4fd05583b46d7f9e
+3a7fb48e9cc9d7415d9d34f5584d080fc192ef96787e05a319419b77db631b4f
+6f565c6c51e506a7407de7c18fcaa99679fd5a277dfa1609b95f154141965c2e
+995ec964be5799ca3f4db707536ea934a04483ebd151e908325260f4ee8f40a8
+ae5b0a8bda8ae772fc5c01d0e859a6def4ccc9e7c389f30ea49282df0425ded2
+99dbe58ed44feb6087255e3a79cc5f1a88638955301aec32e23daea6765fe88a
+7f4a4e2e187da6cb7d08fb0e0fc0a4fba8be70dbbff7c86748d9ea2c3ad6c676
+1840ebc6363c28a89a17185f809ead5c22c52eb77bacbbec8cecf506895a3d4c
+ef66b0da0ff51e90d10791a948afaa1a4101a85a057f934e8b6b7db638e8e8ba
+583e6524f58ca4e3f523c582be7d790729426708a1130ed51c9893d5b2e2a8e6
+9623cd7fc1d45c07667be910a586ae3f615c1fe64d29eb8990cb63d4b08f55c0
+2c2fc60ec29e0c0bc9113d3f863b038ee1fdc1e88d3f4f32f468e740e8df7111
+18056a1362befe1270b2b88a9b9ddd443b30204f4a35a0e6532052451e545711
+4a6c18fa37d9792610d924adb402f1b65b10f6185387bc5373f40104ffaffd0f
+3907f1aa65e93032268819e9fae9f98e13c01ec78c7688527c629ebf1b241901
+c8ab283bff7dc2a45e8ea9731a4b0c406569d6d926109fd71fdaf363ed430326
+35c22ccda8f6d323d9c00e1eb412fdf1dee5a1af03ba75eb73bb1de5d498ec5b
+0a11b23874a6d8b9f1d958b6bfd762fceb7b6b5cd589ac36b91136fca586df61
+100905538d13b586c7c26bed5746f3ccfd7658546f2772617d3fd41141fb33cc
+66b7cd901ee4c58493eb48d07c7c3968c8db059642cc482e1680b513052ac0f8
+f7c91a46b987cd5577ddcd66c34d22b46f44d0296beeba3e6897c4cc13c674e5
+b04cd999d414bb711b3539cde2b960a628aa231cffd314cdb34afba4a3f81518
+00cfdf94aafb3e71d2b5f15039625f31f8860dafc67714bf95dabc9f6ce9e25d
+990816f26904b0821d039718926a084c6cfbd76a3e253e3e1723e7a9b817e245
+e0f9a2c41200969e7854c8a768c4c1515fe760992c5992d0be060c7dbe0f521b
+0b57278f7371c8643709b3e96573390deef0c3b7375f184825e3bd0e54cd5f36
+3f1b6823457e663caf7deaecb6d60f1217a9f79e7e88922d533cb38a10327074
+fa55609f40598604621267a2f79063ed80f7156cffaa81f03ab47ad66c792dca
+8863b9e6c7ec4d456c6109a54eafa8c1e2b047e6c3ea3615c78f17f196ad0130
+9d655056f920d1a18e4786f8fb70c22db05fef0fb223d67496e7003c41a1d6db
+975844bc9ae6c16840891fa0b482cbaf3cb2a54e51712adf178dff8dbb164849
+2b4ae2c0599d1acdf2d23414a202df27c973fbff59395d6e2ba47cc7dc9c111d
+e61e9df0ce2e482d00e37d79880a01f7834fe2f1187a2a6c77ccfc0e37fa1ab0
+489d4d2eb36b5d0ff45c4437de93d1d61533d9d56863298a060956e929c49a26
+950168b9517550d3c9fd07b165ce5fb1c166d991875f0166784adfe1e493d34a
+af263b0db51ae819f1979e7a9ee2848e2ea9ee705d999737a9ed690d9c0ba2f5
+74534ae21fc0f25bf91c7a038606091a617397fe4a0dd3a8cdaebf863f398b5b
+ff6556523ef90102a58e55153813a774b8928d4bacffcf5faa25fd4d1cbc45bd
+a077e52537c0a75eb99b8d5668594b5ae099a51d52d51560d9fbeea1f5d27de9
+c3c4ff58ab7483345f34c83558450be9559484137dcd2133d999eb4d76a1f7e8
+83a07bf9a7d744a5d6b4e2cf9e6d75aa5473ccad49fe36c097a6d45962eaf7c9
+64cfdcd27138f4b3f15beaf234438b376ee464226e850fa6f4cfba1331520f88
+9a09d86be0054b7679c6f98dbd1cd4e277f0c45f3e700b1a67b85f8046cddb0b
+0446af2116550d4c1ce69254cf0cd2b6b047a03dca356b3fb8095ac50b08ce7a
+02c87c2672a3c272fd1627231c32b97e0c6b53ffb2888dfe2ec400c7b71b7d3b
+e2b7912b985f173d54f273e4735f90f28f6606c50174d6c1f686586780110c89
+749133f2b650da979ade1f1bc871c2ad8fce20219423d22c3fd5dd93c055cc82
+1aa3e41728b0e0c1b587ec40fc64caecd760731318f0f9f068ce77557699e482
+6c1986e69ce749e78ed80ce8922217ecda74390f30b5d46f83c2e2f1d7fee867
+bc06b8b76d5f2e8e6b9d0232a4c2d8f9ee5fd3d7fcb1387cfe93a7b66acb5664
+357a5e2c16c9be0872496dd024e05b1efc552cd8306b051e0aaa2a880e013e6d
+2959feeec45ee8bf8a38f5304756d5266715fdfc8a1cca676c49af507dce6936
+de94cb2893bd3ea938addf101f5309b801dc1cde03e244f77cef8ad443772ae8
+6870bff3ba5a728c50464227712d8ba1cb9aa25e75310e10aeeb355695d9d76b
+701a1d764a8142479d430acdd72bbac304d429d7ba380ee1c153dd7e466f609c
+27c030ca9125571067445ac0404e1b110eb71dc2a0290bbca3d9b8f5b34d7f83
+835e74a3590833c2291b1aaaea167595e869e4fe0e9ef13cecd9af3652079909
+299b21f22f5108f1438e797e607ed28a0a787a7da2b97fc4c97cb543850dc4ab
+3b620ff25cdcb9426d63c52c1d76153b56e4ecc1c6f6cef4b426fa8a38fcc514
+d81dde85fd3c93b93c2b03a1a43c88a048c07a996551802b5503211143c7783c
+b405181e2b88f1b8284ddbbb03d0e1b3a44c39343e145d1724b9c77b4d662ec1
+6a4b4a5ec0694832fa2989020f4bbfe9f71e41085c3ff43f220c32a193207908
+bb445e9da802bb0e62869493a5be4392704b512af734b822714926bc561dfe62
+63f7be579933d1e099a5e476e36ef1615436bc4a676f8510354fa8ec7ba96d13
+51aadb3a81f8272b51e58021ff89902abd0960548cc300dd0469ef622406fca2
+7ffe4836a4df58b66a68718064d31bba3cf7a70613bc3d467ef181dd567b6f03
+d68d3e5df5a3cf4da48abba04c73115d3e0d0f546b57d68f8e7c2bd6eb0fa937
+e9b5dc43b0da4fbcf10f0ea70b937cb47ff5d0152323a2a840e8273bfc738252
+28c5b4825edb70e7a97488f69d598e89f8f158fdebd044c7af0c89874967f7ac
+b629b20ca373fe499b23e8886f0c0f35a87acd578e6f2c2689bfbfa20bc2aae7
+c7cf4830b670654c1365ead32721fdfeeeb065477e7bac85b32f1f0d0bf7d8e2
+a0d246adf305ec68221cae2eef4d5f6b365214585350a129502ccf8d5001f876
+3d986197195bf2fa432a57c2514b564f8f0050e49b51b92ddf95d4119eca8e28
+cccc0c938266d99708a69c45ffd123df390e910845c9a4bc2219526c9626c8ac
+83270f32678b2a19b890fb73c8c882622fdb02445e62849ae1f1177d80f45bfc
+ce8961781b138e974d80b71d6f8d6045c87d1f9727d424b3322f2b1d038166df
+0d755f5748ea8c1aea24024fb3f5db700ba0f8a63d637dece033126f176990c4
+31d1b1218f54f3da5c68efc10ce18d8f40b2128cd03245ed9b82c32271cf579d
+b17a2bfa29a9617cb237c0a340b6faf8b13f61619ec843a3ed2c1d4a3d7e195b
+78d96ac647d5af241ae50ce92fecfc36fd396fe383129f41c421841ee73c718b
+e5a0d23ef723a3a34e2b50191e274f8d51ad5ea5d62f86037d42c0ede8b0fdf7
+ca577fa629df7ffed6ef26d4f86e17f59b12e4748cd02036fefa77fb0dba4cb9
+7151d21f23c224db6312d03dabe4d7dc1a355d8ab03e9726432de2e0c41eeeed
+3e1c43f0f5f40748f04c130531fd70bbbfebcbade9af2556a1c54b444bffb679
+98d2007000766f95206630faec91afa367cfffbec6b5b04582c20f92622ddf7b
+4a825650c6bd456ba0193bb8e69c88b9fbf465e42880d58bedd983622c13f772
+fb488519843539f3e07b088808ae4f043707662fdb751a0d01c973f3b7089025
+8704f053bb83c32591081c62d6fcc23663ad46e020d4eb3413cf2346a224fe7f
+3c8ce5ffef86713c4a0d7a9876da6cefd3e59ecea662c883652d8994fea4bcc9
+799e0d1de8d5acf49060656dbc5bd8c074a2d6f93f92a4731ea83af8230f13e7
+4b1bd285f1839ef05b91aeae8048fd9e2cc8392fef7254d0d3b5178a84f84701
+390edfe7d865fdb5d8052f71a099c8ff100b87956aed1ac271b188f0d77e46b0
+22e572e090a58a11fc540b256594df0dca6310463d9145b183ee68a78f6961fb
+ac50c6e8b5701df1bf8640f44e990ba6ad9e5c67696ab519f46098a105e428a6
+0ab48128a8a4ebc5474b5ab81f6f7af455a5d8e29899c82aeb6838d709b2269c
+4edd9c0b49bf1aa2476a3ede700c4a204ea3e5033176bba7f9d72a2d20fd850e
+47a17238da9409a2bf0983bd9ba4db7f8cf238207619bacc4a7209fd0ecb6ae1
+6e79efa1d5d59ccd24a46fd4165c5780bdb6e6a5d5d6870c3d86a2f25252c488
+370991f59ff519f06fdfa8e3b347a193bef3ba9fb6ff067f9ab0ef6e9f3d8e54
+cb91217715ad01394a6286110b9fd8697517da47fd3a5f79c8631af73076d5b7
+6e1c07717ef6ea9a092330109a3a1d38cd6042c8c6fdcf0dafc0ff15fc12b084
+27ba06496b847f6ddfa31c76823b4449b7f4e229ca61edc4f2ba2f00da42a7ce
+4f009c615e8f0df840c3741f2884392f0c000cae43ec97f941ac02488157b5a2
+ac09bdcdafeb1c08c30ace5479773197213ca15dca3c317dedd7d7448beb4269
+766e350a914a31ef99586d62908f5583b07978c5b1644e2d2ec63dd967a97843
+2087452f03f24fecafb6114575e988acaeb7ecda5bdafd60fdcac02d4711f584
+58a90bf122218990bfefa531e5ccfcefe1c536fc88830111b355116168f72e6a
+97baa2ec3736d669f90dc094d0eb74995260f607290fffefec9b6eb8d3e95c07
+006cd58f5f7a18cfeaa451916990e53242506dfb7a33e186db37e0b5a7d9e91e
+78ff6e2e75f64208e4132ab300ed35b983210eb52199465d1007f318c09c482a
+5c4b6b6c133f8e266a3145f2dd0d09e8d465ea127efaac63a36521775ccbb256
+317e3d9bf6e9f087ecc549c01a026a7ba28736fa0992dcfa0529f66168b74e4d
+aedb51197d7541a7d892e81cafbdfef1a484c4e3851db12d8bcf06dacc8eb417
+533f03a15b193956c7804408120475830ce226b245bf412cf65328ce36f88b91
+bc306daf2e153525ea59067a9668666adeddd1ff945372c1f73c0f4873aeca14
+6f62643977a73b1d6ac24932af18a3e5b99bc146338d62e14c60d13d6dace2ac
+ab2568737ca8fa2460a96acf33da6d97179e7c8461257fa4d98d6fbc74f36d4a
+0178d67ff70cf7114b84fbfa37f9cccfb7e11a22d3450134b38f434f384562fa
+0ce7358cc6475c9b9d8911b2606f5b765811709e113e47af89d2591c6ce87cde
+7b8dd0472ddc8c38abec5c5d168ff13e3cc60f1cb732fb4d089438da314bd88d
+55451803b6798adad9d3b9219d8a3f24b24fa9ca1e4c40dd3f5eba7af7bd289b
+491d8ddd5912835052bcbbfec6a77727ff7e6a7112637f2925a5257636e04dbf
+8230c7caf26181f36a9e8af5a7da1ff48da98b278ed632292cb9378b22864870
+a30415ff23d9531d1ede6dded6005c37952cc2e2d3e6283a718ff0d9bd43277e
+98768c0dad155441ace4771d243baf4d70dcb4c1f1ec6d73520797aa0d68613a
+82b42ce1a4ab07d2ad719454611c9caa8b6d51c7cec237e235142bbd2fbbcd43
+3d7fabe00d7379405094555618acbbb3589f269d18d390f49e2f08b2a65e3570
+70698ef7473588d947c9d7c47fd925129499a1ed6a5ef7e392a3ba45e117dc0a
+a10d05dbe2153b73d0650de8d0c354a804f4bda807f00fd8c26eda7cb2f259d4
+d3b83bcb3b5f8abec12c2c569cb1a32f076a258b1f0aee98b631cda62b4a5091
+818e7122b3f0ba6f2bce05676a84ec7a1ceb28f05e5364efb0818546c491e5d0
+240ea915da1c6f7c078e94f52fe6d0420c06f1fcaa3a08b2d2cc8e425083b94e
+6451f00d023712aad4b52a7c19b29b1315edbee56cfbcb30e650b337dcd03a67
+f082e4112f0a5f8ad94e563bd72d4e013f9757029e61a22798d8f393be0cbabf
+82c6525c441aa32b1a96255735a9a94af1363599b3b91e334dbae24aabf7db0d
+381a00565dae3c45d2dad6787b65b0b235aff8cf6ef01ba7276cafcab22d5678
+561e10acd176a94d2395c29172b9fe8b42c3c3a49d05fc52ee489d1e81a29a3e
+56204dc99e8d9f69ddcffdc3432a8363b4becc7a712e97b433221f56d57a3dfc
+0a4a27feb20852d11340b3a38005b782acde126167720053
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMBX10
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 88 /X put
+dup 89 /Y put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
+dup 196 /dieresis put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+/UniqueXX 5000768 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306462c563d51ece66fcc9c831843ecae
+1fefc1a232e2724f7baee428ae03aadb95c3035345c15e9922fe49e1f2cfc980
+237316572dbc57064edac9b0db8913a5e2d45e97e19a91435ccf8adfc835b585
+48e74b291446d689c7f2f8c4325e8356e974ae30c3e2977477baeaa33d141fb7
+80f59351e84bfc88c87b3a4a1d25e168b9d134554f6a581378c7d2d6eca8ac09
+045cc3a5e0ed86f147133f094029e3483bebc81cfde69942cf645ea20d0a2b64
+5140ccc2f9cb4a3d969f4b0a79cd3329b440dfcff5285494406f3dd08d804c86
+df191e57232f6f1f83df6430f214e03fa5412b1e13d83c60c52a698bc9a38159
+19a64162af7b83a9468fae9507c6cb55ea80df8c696dfbc3296c663902d77e89
+a181502627281181ac8624f65be9de5fb32f056cc7dd7cbc7366a91717b5892a
+34ef6b441871c6993da3a81afc9bf70ff3842a21a29c0e49da1ccba37dd6b920
+2702db510b8b1109acf4c27ee8d676bdbd16abe189f34a9b61532eb777457698
+cee0561838eaab2d3939c5093afbb215bac433d1918c739b62566906bb2187f3
+378521fb52e70c18886e1aa15f53a1f8a169528cf2ddd54c203613ff88e619f2
+6c9c50c2c3b8b8c868a88afab1dc8472e7b6f3f992a161723a3c0904865a7c42
+3281601eee91f35222c4a71f343739f102eb43145a47e4fac3bd666e4c114a90
+5950618ecb1bdc29f90f6ebed1d8325fe6b52e14a8870e9b4bb088e585c71b91
+493c12845a101937e3473ac5e9ae24f7c358f06d590d7618e1a1d5834d87621f
+e3f5432b655eebd4ca61a7b00dde0aa740796ce88a43d1c6952f8d2ca63d30b6
+dcbadbb0dadf13150a442714675dbe51ff838f2e47ebe8cd44f1eac6ae5b6ceb
+0b07af03f5d3896ff935a198aa635e337e367e1e128d15e31afe3ffca8245e41
+a3e17011340e49d52fa1e322b435b4f7f2f49ae01f6a319f68d3d786c24be810
+1e1c975a8feb5dd7e4922e00e3a08cacae5a945e1e8f8a20f1fe9534153307aa
+5ac7424759743e08af90b9bcca7447375222a66e2edd1bfd423b1bc50ba0e544
+68ef45c89036a20c01e4a5f27f9fe3e02cab3033c6d87574bab265c69d05af1d
+48b6ada1cd04622b62b82d646cfeeea510fffe46b3992356b9a78216dceda375
+1e3f6670d9ae871731741105c99a03b430ef00e0ba2687c8c18b520ad8466ef2
+e5d4c5d11165e1582855bb54fa9fec61cb41dd05a5e4e26e4dabc7ecc147b933
+2811e4cd7fe4f2f9281a740c606140afb28a9748965eac6028273fcdbaf40635
+732a68509e0da5b482ea3df988e4df9874ad69ac20bcad8782a215484e6e98e5
+fb69df4d50fbc249bb3a785a9b851a861ee3a660279594b07c85fb16fbede6ef
+a58ccfa7988f74c15a0ff2df7b21c73a29a1d650a588129826843432db2a459f
+d27b1aca6de903be72229b9acf4c51dd5e6e8992c9834a8df850c0fb6dc58261
+beff16da6f2b7eaa38ceb4db83b6f2c8294e84bb9cecc8f47839fd66362f605a
+d4f388d99347bf6c5febf6250c0cfac73ca22beedb843b9e70a1574e032f41b5
+ba06e192a9e3d3d34ccc4b266dd865336745295d76b1d846182adbadcea9ac64
+2d66bf439bf259720d801d2f853285e75acebccd2d30c748204821d5931c0f8f
+a7fec8f4be3ead4ef06911064a7263b1d97f957ea930e6b542deeba619dbddb4
+84f649b91f77ac3a5e04e82063dbc0864d90f0c64d57ee000b5e1a4a8efdd8be
+5c678f54658902071136709c64b6083a7828d7cb33e3989ccb29a5ceb05ecff7
+696120b142a411dcd588028a56af4496d0c8b621dcde899eb2d2b67a0f5c0586
+04d7bc72d8dbfe8d44ef6ca2609d5f5ed9ef66b91e005dcfdc0dbfb7104e3abc
+4e02a68b43b1236c337cbeb3b0d1968e577d8102834dd572d35536e4bf7899d3
+a7402ef6a7b0c044b16eb26a2b902b02429bb13c6143a80ee8b38baf69bd0469
+591297fba96b2600f5b35c99d4ff7fbcfd89733518c044731b02f27b415a9327
+f86cb54833a2c171fc0b5e022ac138057e4b6c6fba8dffe4b2f5193cb4967cff
+2e38befb0dd732c63ddecba643a93e3392c37ec994279af06b3f23892bbfb8e7
+01c7c0e4b8db7f09838f839eadd26ad23639c66640ad571cfac2a96665a4060a
+c8fa4f9f16ea231aabfe85b29f6788940c2e90864e438786ef38f5d16f9a5b01
+c5a050b5dfcf4975074439cc24948c61344d833266c0f8d3fd8b73ce70815ed6
+84779f20ca3a80a365f6891aa2c7245d2b77bcfb5e411aeb074a9d36c803faf5
+e3299c87a4e5ef035175478b68e8be4168922c7efc48fbc4842f2441e5aa7f05
+955c4884e17a1ad99adc69364b2f2784d24edf6ae042830c6ee7039923665164
+5d4b3644b08615403a961ec104f0e17796eca34b98130ede0811300cb5ab593e
+362353c0ffb6d50b08ee965c55d66e3b54795dc06a7703545c908df51d7e4b11
+68f9dde45c5b76b3dc277c3989fb2ff2f0902647f93be26b3f7732f982ac1224
+1d47615b2fd805839c44bfedbbeea87ab08422ba00c56256fdd282dfa48c0124
+fbfb586f5518d05c664ddd2d597a5fd626e103e458cf6406ae4a6a8692f0ec57
+677da88dda951316e09d0e8d55816084a637aeb3563a0d2f5dfe36e3e00523ad
+49d43e8546386b13e7b5021f7e1b43a74042f2c1d77add2868c6dd4470b37a09
+101bb80a110a49bb4e2b4a7cb5ac59d262d6eebbcb01b62d021b4e858fb3d4fd
+9fca4c4925ec9916bb64ee77e23e3bf009af8cc2c689b68effd9b2a5f0f3832c
+2383c483692a21c940e3fb39b59bc321a70953186dee4554dc17ddde03b12e7a
+ee07127c282280de71c265933c9b2b1a20e4557fd7048b6ce129c0639eac0110
+b4fee9bc5c34fcd9c066e6575a9e4fe0bd9c10aafd305d38df87bdceeb5a623f
+7686e75686fda5e964ab82e72213943b1d7923c25cc1f7a2aa87b719fac6487d
+71ef4882ae313cc1bd7c152013e764fa610be87bfa655f3080a77c6e85912d4d
+153915f6dd99f84f19806273885c20f1760854d7740f9d737a7d9e087c297bc1
+42ad99fcc22f264d34c2f5ab28d4e874b581ef90974817d1ec747ea75f1d5054
+cf8a7e511c61a8f25421f4053d97c66e32add1f399e574379d988c7fa6869a55
+1e0cf6898f635be4788a2385180a5e54cc6b86763c9bf0267d96a6dad0b00eb4
+5b93353e06523ca8bc1084fb4a851301bee7332be9e69e009c8b05f3c84c98ed
+6e016ce293f337f4088f1575c661a179ac3044e06d3ddbb4582276aea95e25b7
+a9dafae2518df8296ca32076eb9387cb8c5fee8eacf1e844c307d0b43c10458a
+996914b303eed1d2c8328b88ca9cf82575cfeb09a52cf3ff30806f583a39505f
+6a2376e3cf646129195ef3566558527b920462d9542b464d5edad8b8bb36ee30
+f79b17b659a1edb1b76d7a2a75e980ddd5e3bd060d392aae6fb7fc30f31a3bca
+6368ef71e6ba27f30eabab18fcdc9b788a686370ad0c8399659403541b8336eb
+5fec7c1c8bb6a91d25ec623be7bea10f8f73eb9939e8a890e8a1c996a098aafd
+8d76f97c501844a8e77dab2c29623452d2e19358ce855244fdb38fc6537ead41
+7db985b712b0d07352dca99408157d1523b40a0a6644c8bcccf1bb3f05958897
+5896771a9ee9e06a5a94d694a25007479366f659a63d628ebe9e1091484ff483
+145ff9e401a7da28d77926e0b1a1582be60b868ba3573cb634266af3d1d9b0b1
+2c6ed20f213f6c1a86be59db85387f0d58f0689f9343c3447e5d93508656fc9e
+7069e6c52a40fd02f6de56474c6290aa1954248aa81854450fae813d70f512ef
+b2dede1900b41e1121ef13250f2ed57085b173672e4247731687efb5c9c35718
+40b9f76876aeb218137fc2a9f2a2b7867f0b78718dea46f5cd644159e18b48d1
+364c96cb0017f50b079ae20fba90fd89525c022ca004d699f510d61501709d7e
+af89b39f63f095431692c080729465b33acb68bf1c2f6185a504e643d52b73ce
+ee47b814d9741eb244731473e32714481ba25d167866dc1066b1eeeb83df3be1
+0f0c0233c3f31366b011adabab02806018774574f47974a460e6aae3ca8cfb01
+1aa32965f69c0222592683b6f59a3cad425675e9dd24cbdfca2ff6cdb58de529
+10043c8d1d41460d0a312c3d79d84d9729e93f1785610466857c51dfec89ccc1
+8a855ed9d3394029fb52b442291cd8c5bd3f5c3bbb911393f86314ae87303b6b
+d9bd0f3d3aeec6e1bef4c25fab910f204b748afd7091950439c0330451f8fafa
+13c17d53b7e92faec4af710079e7027a7f1c3835ad6c5761db8337b7c59cd3fb
+ad6cbef8cb0b705ed7a837fcbfa9e75ee11dee55bf9faf0561832921931af1e7
+f435368fcc90d124c38cc14095638060a553bd21707e112669e29e72decf1791
+185df13cd5a23964d57013afe8aed7d70d578cd00653cc4f7d0387d12bf3b3bf
+3abe578663af5262cd832b8988e21247850abdfb33b2d0181856f86202cb9adb
+cd454b5746bc8a0ba060979d94ad6629815cf96cb4500ec1d86b074e55ac941c
+dae625c2cc5961a9d2f426125b35c05bf9bfa7ad289287d93faa84a9e1049289
+d9056d455ee490e37969dfcea977cce70d7ace569deaacbcf0483a81d97e5e11
+ef8791b1f4232b9be0218dd25b6128df1d331348103c0382d5219425c0cd73d4
+001578ecaa8a4bef3a817cd55f7b0b77efa68a56aefb2e1b13560f58446ec6f6
+8d99863a6b0bc9cda6b764f5fff03b7c78ed2b867c3fe3703ec31b6404ec0fd1
+a166fd015b17c4d134237e04ac8aa69f7ef0461f04235f58e2e04d54a4d9a3d9
+5421cd86e9a7f7f58bf1d4f0f4cc6accaf288f1c6ca521b7b819cd754a92f6ca
+22e90912e464147009b8829816e5d328885933f0ba1099d6738cc9716766ae33
+e81fb497e888d50ba57dc4f27a85ef3c0473b3d642708fd10561cc78537f3754
+7075733e4e275cfe1d7e427007bdbca1e94ee6ce99ef4a6cefaab2b46e04ce02
+95495ed92e594cb9131fb2e5d1b8e1cade584e9986376a966c495d4cf8d80f55
+e8a97e0f684e9d0bc1a92a3b2bc9f7bf9f6ba797ca9471b6119b2bcc0d62735a
+c81787eb1b54e2036dcfb5c1e9d4c99d397322fa9d353babf79034d6135a10bf
+68f41f86488268cf9fee7b3136a1ecb470fbda5dbc388d4b78fc2c8c46093b0c
+13207201fac37eef4df6d322a4b1d69d5737390b0c30ec937971a69aeaf2090b
+1e011a8a2df44ea57d38ebb39a9fcdf4d42f9c8b7d76aa32ad284f2dfefdad2f
+fa679293ef297637d5e7b034b2e73817c0e098666a0d03c1cfb1e919fa39d867
+133c7b59abaa08b7a67a5dbd41880e75f79f41d77396dc43147a5d30c3bc949b
+e457941c33e67cfb840a0cf289881fca19879e57389144aa87310718405bcadd
+ca97b2c1277610d9d3c83d5cfff5ae57cb2bda4a32a129c24166735513d54e3e
+220d172ee60e22192b28d5278832481beab532ef8b41ae0d15c629f470cacb9e
+a4693d0900ae63a3bcb0590d92ebee0d3571bf1dc479a388de1c994e5fb6b006
+7cc022ec9d202ce40e83f34c7d6f9a39e5611e7490ec768a77952c901fdaba57
+2d5aec44c6863281bae2863a8f01caead7a66e9422b4a6051ec48ad73dfd855b
+c3252aa6c84aced333bc91f8d5710540022b41ac8524575808f9a81a148510a4
+209e762a32c8d2badc89176c36088d66f09ad55111ac6cde228041189997651d
+1e25a18ebfc25510823511927d4ee5171143cd30de707dab4e706ce63c041fe0
+7f30a7a41f9b45787165801e2320d3600c5f9f0931bbc6635a674d2959dead83
+3cfeb0bb3ca904d6ebbaecc16de7ad8e5fc7170acb0b821af5803a232488b6ed
+4dc5d730484e6fbda00c1fdfb908a6b92e371bd3411cb4cf6df0197f2426d398
+06fea36823344887c3ac6727365b0be49ad82cbfa92c70ddaf20f48577fd5427
+d61bf3e4ed1eeed9ad78a55a7530bd8c4c7764387feaafaca4d143924d96a66b
+65a12ec970c30c7cbe820ac574990f61e70b4dfd33dea057f2324d88ca0a1b46
+39ba8e51e65e88c0ba68306351c0f97cf491829de6423c4cd453fc56cda5fc6d
+996b45e8c7b85f43fec920f86993b31284f9af506d330589046d46b791f28019
+d5034e359c68e2d25815abe3071de9f8a61b185a84bb10e822c9ddbc0896a3b1
+cbe5d20968f4b3dd7afdaa0c7ad9dc1e657d2b200c3b73eecc23d7ccf92947e2
+f01a3e8ea56e4f3ed17ddade8495504105e13b6dfb4b9970448e86cf7e89ba81
+8d7b4627a9417dc9b80ba83678ee3b1726a6e6179fb60580e60079058f799ef9
+940e07eb7256d25080b0b6c91735654628015028aade12a07a19918d0e1c27a9
+2c31cf0de6384fb92950eb48fe3189992dc6e874263d16a06827d8438d736fe8
+23af9d4293856e6c01b0eeb4cb33bd697b84b84ad7ca99284fbb5f1bd5ed3e8e
+524633d89bfbdb74ef4f606e5bc3e4f7931223a2b4e83034f63e1dccf440b67a
+91e9cb6094dc31b5d26b467f3917e42999c1f147f541723f7314b78cfbc1dfd2
+cd8d91b99b238c7105fac5e1b893e946fbc2eb81722ca6ac2ecc1b196df1763e
+fc397e8ab068db6ba65be95cdd72d567c3576dcdff0e91b473811ddf673a5a84
+cef3684bdee5ea5f32d2d0bf060c655505036af6a2f1124d858df8b0e5f26cd7
+b96c707553502793e638719f185262d130807dead52865138f87b7375419bc4e
+6a050d7fcc20f107f189067cdfcccec994da51673070d1fe815e389252897047
+ea9fb5c08df7d76788b94e7a1260e0c0012b9bb8580b352885b87dba0b945dde
+ebb46082ff6a9b98047e2255b1e4cfa256aaf03b6aabd3e12e6c8427f3b9af90
+716a57ec004ab1a9ed6a5f00e2b82064d3249bb3d0b5532720c63a176864cb44
+2a2b8829d16e8623fdedad607842da0c65ab1c3c32244f0fcaf9aa486f2222ca
+224873a0ef14c9cbebf1d3c0828c89c58de216140b22b2ae4f2940c5c7f92a07
+a2313a0428e529df79765d68814032d2bb394adc15ba3c90449fbb0830238447
+06d0716cb35d2c5c68dcc6182a430792855625c09d8d973296f6d4095dc0f3c7
+22272a6677938f9db3040c050315c5c0da64763568cae90db29cf89f81bd56f5
+d1cc8a8b4cb4982fb8ef23489a2a8e710ded939a4a30e5b098187437e17d6538
+7690523df854e403d24bf178e815307d2a374d127972163e06b673ad5d23721f
+fc89f5a20f0cfce3ba9066769816178dcd64716174f4fd59888d2aeeb692a254
+da957396550cdba2f89f848c3d88b714f0ae90b037b8634903374392f00f4f46
+b125f0a2d61488384c6d9a5cbaac742ddae39c637cb9a68ea54d54c2db4af933
+b78469ef7cfc828a2252d298994bb59bb5b85d44ceed47881f4a6a7322c0ef87
+59594b2bb7235c51361477b3d358c4e71eee3e6303b0d4374141d2c8aa49c357
+a88ddb5120b6c126f32149cb1baf6f13d3981db23cae3564aa6ceeff4c73cd8f
+930698a4b633b73f6ecb269464716d570b7165cdcf5844e809df9393ccfc8b2c
+d0e35b0a58a711dbf9b6ce95459ab53c99557558e69ae4a6c59465b7ac73d876
+d1e8b02bfcbc810ace57749f61e0d1f070907f1205c50e19805078d3ace68eef
+baa8bed5c7fd02bbbe2cf80b66f058db0cfdc4c7eef582a3d8600be158dc95d8
+70e5de8c365ca8bdb6217a7d039fbee4f229f9dca6afc0a70e7c7757c2a1f0e7
+0ecacb86e62e6ab233fbd180b16114fd84ac4e560c58ad8e81bf0c688b4ee52e
+9cd14549f72aace1151adffab23bcec74af72845bc23738db24515c7f7f46bfe
+637b81f89389a4f1d92f0b123533aaaa96d80b0f6089221bf159c7f3f7222ee3
+c7e4ba41e5c52c214ecc20d3b0dd2437b39d1d530dd1142fa2dd53c164d23a0a
+da22e6e36ff3665efd2c09006b90a508ee3863b0f7c881b186f4189195ae37b9
+49da56bef9105091bb74d1549ec32d8a69c669f41d55084f239062cd35bc3471
+1b04be2bc6788f7a97acfc16961ec3dad3360a517e8b898c54be8479525846b7
+bcfcfdba2036841c80efb44c9c48703b0df6283ba50646cf02cbddd56a29f810
+5cc0296a72ddb4590b85d7d8303c39d80cbc039961a13683e57f9a9e5bf49fd3
+255eb7bf12633a9bc45697d65c879882ceb195a1e42f5d2a23f96bc765b9177e
+b3f938a751a3e52841b1e62becb088bed3615cd452993d6af9b4d0dafa3164df
+961be1bf437b35c946cad2362c89dc11def73e398cefd62a5db1bf2506925155
+71de28dfa5eb319f35233005b03c738d1efc47185ee6de842164105235d7773c
+554b77784880eed77ee6b858d61a251b237081ab7d5d528faabbbac0eb2fd63f
+39e0d94806763e63a1c3e488b226ae3c84dbd1e001ca0871ef02c2d7f405ce89
+382cf84c2ac87afc62e8d4008a7b2fb28d76dcc222ae8d0e14fc84113b09d57b
+b3bf789fed30d76c91422f241d2cd98ae2cebbc199dd197f361238e2eeb3f28f
+24573d4cd91356afd4537b7c9929744cf16a8740e6f57f703c04c9dc784df3e8
+7f786fb1ae8793abac68b89a35dc29049820e85699cf409a39eb4c8fddaa88fe
+5edef8dc4d4c0b79146c0fd3a895f57e633e67a61d1f0427078b38cf0b91e132
+e833472786abfefe01d52d01abfac94a2b7d266ef1587ddd9a0160b1a58d8859
+30064d32a44046b233e7c63eb92634f5251bc7f5c1c710904a18a6608064146b
+cea988e77517d804c19b74ee509b6a7ea0cba6a1e5a6cf09d12b1fc8d9596d32
+c730b0eb279e2c99da2025e38d887fdd322fdfba2f66a11edb08e79a6a4a800f
+adf72f983df02a855c8260dd1da5e42d5aed6c6e0e6e45164a55aef45205d23a
+beb3fd0427398012e8f7211dab2f77cf7d3a1139f4f504b6f3dccd078d4d3604
+f53bb9b21c1c29462a0c434a919d660bf0f1d1d34c90c4cb5cb6008e5030f3ef
+0ba2b6e0e0335196c2268e290fb6528eb78b470ef2c3e2930e577ab43b1a9164
+d7131c42a33134afeb14987664d1970c4199bae2aa1341f7c75362066c38221d
+46736b094f7e846265be8bfc84def0b3d221707b09a00c619e3375d874629511
+5985f4faf7573c7521150dc384b40641fdedf07bf1159b64395659531aa25a7c
+6b8232d04ddaf3ca170b6363c233e02eb1270575d716fa96aa712aed9d73e4be
+4cbc1f23aaca164b8e0e660d4cf6c643da80bddb9ea557907f21bd0c156fea4a
+67f25bec43d29a9a731b0a6a2103c477bbefc314e9c5ab1a7848d8fe1724b5f2
+9aa67aeb162acb8288c49323373c21cbadc9767fdc679e99c8d0b940814b77d3
+b61ca7d9f6f4bec4a0a2e9f9de71c029e5941f89641e582243b6e2b16feae585
+c85dd8571cf43f66ea7b9bb4c02bcf8aff0df8cffde233bb52e33514f39c11b5
+8a82b8ad6d2ce727e88cfa52ede8f3e882e3e5e77516b1b1f853da077b07544e
+d3c8fbf4a89114d4be59ad354f07e9895c71aaae610c93ea6cfd769798f8677f
+7fba329b27dd50d88c099099f5f37fd01fe90ceeb2a77a9a36733fa21e71fc3c
+096ab0e8b3ffd97e901d507d06a23f3c39b505f00f189732c75f3455604fc0bd
+323b66dd92161d8473b90dcf4ed9cf64c0b9bb34962111cb50695f8eb5781302
+1721986999690007d039144930e483ce7164c84381981a5594c31c0aff4aa0fe
+222379800ac657a135e3071049cabb8e09934f5bbc200929f46e12c12f40736d
+0ab877b9c962502b7e21024e55f1dc3673d77b187dda92e7d8682fde7c305868
+f716ac884c9f8bc36481af8de34ac8cbb26d90b1036d329bc37d52382c01f6c4
+db86cc5842111f31e8c4ed5cf5ab91c4ac6120daa4f9c1b62214b1eaa1297b5f
+388ae19c0b9d3e3d71b368497d6db836b70aa210eb41b999caacbf603deee807
+5bdc6f3db127798d20860a8fdabb66a93db942beae14debf9e8402f4d52fbde7
+adda089d3451db4a35f15f9c95b0ae74605f9a02c4b55dccbf6510e93128496c
+ef46fcc0b040e74ae2712aba782f1bcacd30472962fe251f8b5c888da1e33050
+16a56bba33e3cb48c3214373fbafad7780d3234028a158134ac0a93d96770af9
+05806673818cf200aa1cfdc055d413f865f2d391fb17aeff73e3285ca3e2302a
+819f7ab56fbae7be1b1d627f4b6bce388e89483fd2b2ea11049d630a18a979b9
+97ee41931170c9d7a35739c5e2c88c0ceb931c5b1cd88f1b91c9e7ad86833dfc
+e8bcba2cced3d74232e15124bc2e2db321c59da4798daae959b4f48e128f27c9
+700ebe57ee0934436bdae5fe5bf730fbcacfe600d4b9379d42aa1e3576571275
+2a96bcbf4aaf34265cea4bf85b1139d6c4b84d6e9114a1efda46cea91de27bf0
+9e24162ed22efafa561fd4b9ad60c989680116499d3f98d6feb74217355b88ab
+1c911048d5b85f2499f66642d7e803713509391829652355134f8dea62e07c83
+fec6153393af94c5e642e794873ad8bdec72cd380038f066c950975d17e4059b
+302abe65c59af6086985d1424d7fd112662ca8e5d34c124107e65f1e67a19c31
+2e630ca05b15fc83badc1cbae0288489302164dbdffd09da9fd1258fff22eb46
+003c0957e2165f66d33abacf33817622172e0bd39bef2b2ab208018a6c929ed5
+fd2567107d6ea2821c8eece1827fd6986276f3223e0228916adce52bbbf923c3
+80a870ba7648b5cb5be2a71cb36a26bf6e6d9cf04d9c1e865e8d2ecba827b549
+dd482b4b84de2811ca8c0cb372395416235d701e83f7176851852051baa93253
+fc79398d7a465ffab5574308eba27ea1cebbc45ec4c95a5bf7db7b4c1fccb293
+408a417cc16705ee6f4e1b67ac0f2bad46908ad38c0704d4b3bb5a0040489f59
+db491089104ae1fadd8341f692d4d5763f09a9e15101597441be694bf9740494
+7336f8a21fe32e05af2ce4cd5d79fd33c9f046ecc3d84cdcb0e0481fa52de4a8
+823925d40539e4d3580bd143ed4d3f0fdbfcee383a8f4ab2ecc11dd617347543
+b065b214b61cfe947cd24cdef932d3d5991e9ed44bf4ad42e015e15ba279f9c0
+526e568df1bedd9771afbcad9ba0b9e06b7d5c1c44c7aebf6b2630b550577124
+6bbff42d71f6a18129d772d402a19f6154a7e9719faf16cbb355e49fdc783927
+f30791a711eb50f90e628a02925f76496f3e6d1d588e9bf0a21c74cf3c918d3f
+f52e3105605aa5bb62c8b992ea561bf0a04ef2622051d04c0fd6c0705316d273
+9f82333428011e0a3a92c023edb413b8380d4801247c497e46107c69529c3bfa
+6d1a61bdb4ff647b6b31aafbdee29fbe49c63735191f65b2f372abf236aa24ab
+908a802b5e0d2970e4d1e646444a4fb8e9b23f107698b175f6384075c27ec372
+3d640e0d40b9e49f887a030372637a05a886a58fcf67f5142bd96dca7692f25e
+f0c53905fe17a99d98419b99bb93249e550c821fde409e593014d7f710faf363
+288b10a4a5df72edd6ce9a4bfe7a847f7645dfc875e0df537a96d362c5bcd737
+6447b5182b26f9286d102a05e621b067dcd7d42084f14ce9d82989a7594e3eba
+5115abe87d12b37ed0c98c66b937855b49d7fc59f415cb976ce53f109244fe17
+b3606cf8efbd260427bdc61a38a99c41cd2bb33e840bd8e9a34dcedb67d552eb
+1d927a790eefe853e93d1ab27fa5f4bdaff708875abf878166e65096a01e02da
+8529afe5d5ed92420470a89c697af4389857b7ff75178eb9f2924d305cfbf9ff
+de0f99283a14fcecb0483328316476da9e58a30c25c274aedcf2e889925ecaf8
+74477ddcfb962904464368ef97199615050bf7a685cdb14ee8baae4d9372e557
+b37a6a998c1442d4aebab98167172095118adfd0cb13874b134a4d58f9b2c6a1
+4215fc162e8f7df600bf4e41cb90634c5219d3b5b8d7ec1757230b7f0f62c374
+41daea7f0bfbc8bd6d05d5adaa86a36d4b540d4b67b8d7c7975f0e27d677cff7
+e214c9a62ef5c069395b9b6c8078ac7bae4465aa11848f8ef1e20650f8a9d382
+06623c516ff6587bbca3de488652217881cf22469e9644724047016d4a06b6e6
+edde20e1cf49230c2c29693513da7fc81a57b1f0fb7f2d5a4eb9cd39c133a195
+5c542143f4e68017bac574d1a8a9fb242b6107a3df773c347dbc7a15b54daa53
+27e875e43a9556cf7350c36ebd34404ab301b1c9fdc91b3fe17d92e841c0e3f1
+13ea57ffbe78a4b6e92f29459fbf9c8d95ac1ea0655a4a12e950f8978988722d
+c66aa10b305326359ebebe9ad53d1915340da7b2a0d4ca19692779fdb759ac5e
+81ea2f38d8d2494d42f85a8b295241e73fd5a5896aaaf4e45ad97314d594b915
+83543ab3f8726d5fac753800ae31400b43a12bf30308c71f495edc06a15d5b8b
+df59f3a2f69cf37bd3e87472ee1b2a94406f0fea05393d0bb070c1f268e553df
+903b4f246e80119061d8daf1d45c6671de1b925215f5bc5e168791f4b44a93f1
+fc75b985d885c9ae840fe0c1e659743899524ae0b8e9102db5048e918aa382cc
+0c5859a2f4617af28b407c11fca0165c80fd79f789d827f67c180d3cb1471651
+d8f0522478a37f3c3ec16b159275141bf7b5665b3981b61c8968b55cd582c347
+d10284045066b60865f5d0a0b0333cb149a2f9f6f7dec62b9e1930f05eb26e59
+6e07a2233216ea69059d57426f1146579f86438fa9cadc529a4fd104371c4077
+bb06e8043fad98ddf3bc8105abe8102d898cedb5c8740421ffc9b06e8765104b
+308649d6eaf399094c6948d63efc5c9f2f1fb4474ad4213b2bc070e249018885
+008ba384090b8f322d2c4aecc51f9bdb741a45f01fcf035b848b9eb5ce0af387
+eabed072a578f00b412dcd4c3a49e43cfee4f18dd1baf36bf044dd0891abbf73
+2fabc628097226401aa1347f6bf74fa40e4cfe1016f748ef0e5ed24da563f89e
+6c6e7707f7b78af64edc92d451ddd0d06d15d8a2206031e26473a2965bfbc926
+91e27b0a29472d1716f7c89bae05ff7b9eaadd48a37f8462e32c7ef484eca424
+ee9a735ab9e619cfd2916893e51d31842c7e84ec79db7cf8889a217262ee9ec6
+f852c704a9c6eba5817e919e5e41ec812dfbb6d0ff132f3c8a97d5f6a67330c4
+76007cd6a1c0b6a2d24b20e4545049855a4a72ad48d3e9af13bdc87f637b3bea
+1b199c91e075974428da6ad7092a2ffc51e4aeeb58b30e27710db040a458e852
+3a0c503adcb8e52ece71b3898eaecbbd57d80b17a4460a05e2fea45d22bdd176
+a84f1a70bd1d9f22838c9fa6077f6c075dca3a9821822494522c3598a0ae510c
+5ef85375144c47f9079022c1847f28979cd47e07ef5ac720b6b8a0e93ac56278
+2ea24995892eefc61f98b6bd816d0eff6dbf5039df61ae98b835def0daff0556
+4f543df76991da62d0d1345afa4a3f78d427b327f13976b99a1d4b2ea5de4a89
+6767933f61732141545bb531d350295f24f1d795506902a9c8e5a4664bc7be52
+a2c33ccca0c9467d88b2e884f89baab8022d0db88e00caec339950a722ec1cb7
+a2deffe807ee86d2202b5ff087914d6683574537bcf77038a48b851c4348c379
+d2aee153117f14a6e1667c9f4a5faa03c34f7ab38515d4a38653b4f5eff9af19
+daad24e95af565ac7df9ff3051a506178718e074ff2dc9f5d7496558cb29b8d6
+b21f55ef73d3a1d92b58e9ca28ea31adcae0d637776162b371102ce7caa857bb
+c33703671472f19ce1406cd91bdff0c5182de97daad5225ed891edaf87aa884f
+aafd9de7339b3402076667a818da8b5837242ea4b845db4e1cf82657f06aac04
+cb6d2188770a3114a362dd7f86ec072f53a4e9d028cd155c54481ebc894cdc7f
+48145f5087775485a0cbf6fee3647c7d8c98ea5788589b5f3cff13b87becd09b
+1c0cbd676531bf84367d24cacf782f20a8d85390a484cea9883f1865a2980b20
+4cf4f3155b2d0a24a89215d22f1b8cac8fd2700d7b1ec4dc242b66dcf87e2e10
+41498eccb705fa6566a687c3960589482b85162c692ccbca5ac76805580a2fa2
+8fe2ced979da552d8e7e80d031a2df885d314b162cd57b7d6bc220b1b040aa3f
+823ad93716f1e6195cfd20076b1f15392d7d681ed7251eaeb05f0fbf8e409115
+02c50414ee10c0fce0d411f22644ccc42136f6a9a73894186d6dead219ae15fa
+291a30c017c473d0c8d53a82b9e271c1a25f555863c8c8cf2eabeac89ac92062
+c822459b27a618af855f60b27e74ad5c625e9f261ec97a00f6a675a0b6f4416d
+35e13f2d8d93fb7821b0e1c446e75a4da7778e7fec09f339c428d6b17f066a68
+61ab3aa2a4be14a59bed0723c2dc94a3b2c9469fd1d9da272e77f1cd3c026025
+9bdb9c6d9c29e608e77833602d9e562946abc13944d8d9b94231fdc773e76f91
+cfb06bb42887b3f4d4636bb4625a048b00495cc0aba826a698d3238b163a665a
+91ec25ffcd1589ea3c446efcdcdd0a9568d633c409e1442a7554c35a7816a687
+1a5062af2a0c04806c1ec0c60bbc87286acb7f5b6fd2cbba236ac8182174329e
+fc38cf191fb84b9960e3ccf7cea2d30cc625f923bc036b9141d48da174416b66
+9b4da365dd7ad9b5602ed6855207eae7795c8bf214ca0372ec18b665023f00a2
+69b88900bdcf528914fb135caead243ce125b93754f29cb9b280acbadd022a57
+6b1ef8f608857382530ed8436c0bff610e3ed5001c8d359d3ec1b9ed98b880fb
+ed0af8009f972734c8ee517b5bbc1db67acc6bafca8ad79be59b6e057181a143
+b16717fc58fffa2822a531860d2ce4a1a33fa21907f5b6711e323902e4682b49
+9a467a1e7b4870e674570ad1e6370bb03cfc4db167299058cdce40c7e8f1c5c3
+c3a83c1f633ac7f27920c04708967400aa30084eec1438987ff7a1fb58506026
+db1f0bb2e64e4b0c10a429453f7de2b97b4a7cf8920941ad22ba2e0e5b26b9a4
+ac9422a1712edef773cedcbc74857855d4e10d1f6b339055d5eb0c5d094555ee
+39845d719d28d8b2ec7e7d64ae591064d2470a6ffc872b238d84b1ecdcb536c9
+74b41f549557ff572d391af568b870e4c10a34bc41c888b11de320c279c771d0
+3d32068aa586d80131a62e3a00b0f234c711bc26d61e55425fd8d86dc0f50e9c
+2814232addf6f3c4787717edcd13c8d371323dd0ecbea4660e222c311a352e04
+dcd722ebf81a6f984bc7bff8b290365af659b2e22e1988bf583dc0cc0788b332
+93de0b459b15ff23b206c69d53b0d3c5ac26501cc0acd3f462580a1ae0992e2a
+d07787ef4e5d7aac0f43e572b35fb9ebdc74f5b0a1b968c88c0d784f0e5a0811
+928f9f64aa176d12c885e7d776b2e4c52d450889d8f39e48b46638bf547e9840
+1a907a1eb1938abbe0bb8e4114a1e84d6d7b81cba1c04526f8fe262d0d57b5c4
+49d4f291961a86a643e9dabcc5a6dcd643181282a472a463a4a0b947c6e6b21e
+56bbfa5e706fc0de724a054959b9a0f48dc94496b710eda1e23be97460d07426
+d8867f37eeb0030bd4e6489a012a6877d6785afc4f76672fbb72559d42aac021
+3e483463d33205749be422347a376528f632e19ccdaa62c30676f2044a9a5cfb
+971c0d984f97d14912bbcb731ad70e990fe831ac452e586a3070e453d6fb2b9f
+bc3ca6ffb74c5ffc068c84f4a55945c86ba68eb801c0958f950f50ee7b5893b5
+b20cc34e13ec3a15514f8a2ec49e3106f6671ffd6017fb21788fd0f8648b1aeb
+ec8a97f1fbcf351eac1c4ac12ff92c5c5719ad2f6a614325a43150411f084e22
+5e6b8019125729cd2f718a21ab3c06cce1c800bd5d259249a653beb008204590
+375faa31ab5174dfcd0996dd76ba9df969bcc458d7b973ddc02d29d1cd52fbd9
+05adfbd34ca063e040bf5464314fba7f64a761d84fbdab4d19a64b5804e3e25b
+b2ab6040564f6cef0c22f949480205ee601e78b64607f5a1dc20d362e8e858a5
+22cd3d0abfb79d6f5373d2a206973bd8a6986626fd397d7aed9b4e220ba00a15
+e1db8d959fc4784cfe31c96b1f2620e98ae8f6b9e2ccb2d4959d7a7289f4d5cb
+5ef4127559971dc23362a80543c6d0940e7641d7d70bf63bdf868884df7eb5cd
+346b20431fe72a25632581f1e38b180cb1bed8f88d6607bd05826636149e1625
+a794d372b8148b19b56f7a2e3fc08ccf513839d3b85399f71cfcd11a83cfbbc4
+3b3d8ae35c12c44be10afcde3b915d65b46097330bbf0f995af2effdf9ee3150
+c723b24fdd7a2290fec6a1861c2bc3786c6267acaba21c18b5a5864f4f4f4ad5
+b0e36d346a541b354c3d638b3bafb70b6846be5de32d396fedd2a467e5efebd1
+1cbf35214637e068adff31c13ad3cef2ab65677a62f8c23f4cf8f949b5054e8f
+7907968f0b37c48124134eae2c99558e27b63c67d689ae4c7acdd588576b429b
+d4402445585dd245f414e6f8d3a9fe016e1720644d861754004876de406e9b12
+f23ea548aaea9b12965e9f68e27b20ee899337bfa2165a90f2f64d621bc130cf
+52a4ef27d67ca84c858c66013168616651894b349ff8c822d59c47b822830909
+49377ad8d475c123503c931560ca7a8f907c078c6271cf8cf9175ff992ce0b7b
+d260e516407d96a193dcfddfb260b8d230293071e4f429c08e422ff1b4c2cbbd
+aa9a51c6d665f09bc28d87a4813297214331fb0e8f689df51900e924209280ce
+588dac33967fba27cabfeb747fdda7024266f67ed8f0470768e5206fa1ce61e3
+3c248cdd7dae8f91c469b0745b9f36afa80fcfc2712aa453d2abc5a15a1bfe8e
+511208b798d1ab784888539af94d6f1eccc2540676a214c892f846c7838ccc25
+b7146bf0ec4bcaac1d966e2bf36b1bd233caf7b1a03a74a2adfd9c3967ff937c
+285fd5a6580687b743b2a2fe70fbaacdeb7bb01f0323d3be19144d990fe2b1c4
+be44f7f79626ffd659daa6207a5f8649361e718fcf72ca21ebc0acada33bdc68
+578342405a551f6f37eab02577b8737f3574e2e7115a55ff5b18f67347b3cc68
+0f8b02b5d5bc97c0d6d3a464a1c65579999309479d420bb2939c374a03b3a6fe
+1b4946628e99c065440e41f4b484dffc64314c5a507e905d4ee8645be0dcbbd3
+bc04908412562eb819c1e1cee333e1e4fdad40bd2f5ea78685e04c43ec198dd7
+0ed7a8077e8cb10755755b62606b65e5ff0d0f717073a2dfb64354cd199f8dc5
+50a9ef48274981f735fc8e621a69bca50cb38faeb6e650de8fdea1601e23a4fc
+45fac6a95330220b821efd7d9d5891a67037137f2bc2d1a8c8874fc721d68244
+45fc23095087e3a89855c3cd60e4804dab19356a01d44f07445db545a0225e70
+eb9ee37e8b694c9bd94269ad9eef110dc6baf282cd20ad904926c087fbaf1da2
+f7fd16376a71ce67dfef604a9db88de986b8b8ae25fa569cbe6a4b239b1a8ea9
+b672c6a60883938560862e873d2d5574937a1067207f20754a6e0345e447f0bd
+0bb5450f0c1eba5db4af01a890cd5fc64633e9c566852ae232f9a70dd5cf0009
+cdd2b7a4b8da9750f1e214a0790066e8cbcf6a6e40c42050c4502c00fb8c98ad
+522f6d241a350adfdb7327b19d63ff284b76cf625c443eaa9c6320e17054ac98
+9e6304191e95e5e0d6e0a63bae828d5a55ffec5400d945aa6172f516b4ed7fd7
+7de8d3e7475197fbdee1ac593459e823281c215e5d20ac83ad14a9eb5576f147
+1ed6ba9cef5a931d9252fce74878697ca329e2c673a995839e06d0ac2df4119d
+9fb4e32ba3ce3e56d94f4a2ad9356202cc574114506346fbaac6d8a45ebfedb7
+071b6ecb2359d37ece5d9549e91308327c7cae9c93bc5620ddb7447eee5466a0
+3368fde310a8ccdf421fc864868b8351203122ea7ceb63b6b15368607cb3ca53
+33e40f5944e85a58f75b0b15b18dfa8ebdfa619dbe3ff5dd6c2a509250e60deb
+6d5f9357d9f73e30473099e57454f856fedf6f91293526768730c69faf217ac2
+e32877bd4055ca68fd455225b9dba6c309b9be94726e0facb4db88d844be54a9
+76c64d2e0e32e1badcf9bdb279703a0982bfbc37df8a1a55ffbc2d34b37f5cc1
+b75b66dac2b331ae450398f545a4476a52bd5c9bfc6c43c53efb352add99a267
+476615017ae57736651d873cf1f9aac4abd0a749a4ad3ab45e4addebf0a7ac51
+3df24ead1e2f59518884684073b0c9d47ad2ef97e8acb26b97e622134a18d981
+7c66e2972cc71adcecb4ebae029e704f44962ed0a7954d1fb254094f03ac3623
+cd2f2e5c31f728dce4ce53c359ae8ce191189cfac2baee08f4612d279a598bb9
+d5fb009cb1a38482ab1b1c7ae7a5bb1a2b93c16a7f0ade1f3dd2fc1695fdc6d8
+723bb1298f4003362b1c66e3444fd53d02169eda203cb157b769530b8cd74527
+6a380e528ed86545190df91f8bed105be4e92480e748027528f68cff677a80d1
+c52094c7433e472c100d94573433d7252a28f487a9d321400bc31b03490dcdcc
+04221448b97d921336898893954035ebbcdc31218fb7d9c592f50bccab71f18d
+d6ac090c0fd131a10fe33767a698297420b902799d82de3558ba8f58c303560c
+2b2eb5012f840d0860f73cf3c84a31a6b492621f1799c1549acd9d92858f9d10
+73d574cd649d392c45d78b197a903981074a6d32ade8eeffd993ec65113d623a
+f6031825f0ee6f6db1320d9e3d0ad473cfb8a1333508ab8c5bc0249dd8ea6a2d
+fb5fe1f516e080ea5022ae235d2f7492aded5fec3e256f034a60b4fe3e792a6c
+b3060aa43fc6fc629efebbc977f95c5ccce1f50f724cd30cf32a0d5bf6c0f94c
+c2c8158d877c5b14b6fe0bc0d9a9d6b812f8ba99ba6cdb03c74dfa20fcdac229
+b8fec3a1429c59bb6e925fdf154f081be48f80c04ea6b3fd3a0c873ee8a11168
+0bb5c2b42c578937ec6bff8055683ba3c28b5b2da474bdb754534865bd312e67
+e79c8b3cd38c1c542b610044632fba4b650a77e5eeab4ceca14a821c8d9fd5cb
+90d6d2cb8423c90e241aaf15d8728696710f8263bd35032b109a7bb204d86eef
+2975aa7a80a6e6ec780da0566edf60637ce76d32093b4423b71b2d8aab8ad9c0
+17e57d51c884fdca173356577b48e124ac3eb152ca458af29d380f10eb476c9b
+8d7b9b53f246d5c772c7fd918f1069b62691da36f06484a6bb1f0389e46b0121
+0780433f4f5af5c4fe2c8eb6afdf563a54c442bffde3880c20e342f8ec12d1bc
+fb749a1786f8cba5f911fab56678a4a64e4c54ca6fc95efaeaf0d5b5a338c52c
+d6cb971fe4775ab155ed2d98bb3f0948412efb98f2d4534a5e5308dde92a708f
+596f013a83bba65378c34423d3ebb6fbd68d57091a51b32e509cad04b3c71db6
+745a02dcc1a24cbf043e712be79bafa65e48729d3496efaa12f4f3d116b9d115
+b73c27e1bfe6b1aa08dd6d75974e46e5e8a20ce2a157ceacecd1c534b3aacdfa
+14a82233f40a08269602a278b51833ed72e3451678ac91b202db4fa9797e45ea
+79ba101814c921f8b9e6a0fccfda68391b435201c329bd3464af57e295fd604d
+301f42422c73a0007432caf32c10fdc2ad11c6ecd32045ee955075a8c348e841
+6ef817a59fc69ad319a167901b799cc09a4318159051309f55972ccfd352d624
+6d0e9f58e25e2d147d4273480b5b671655bc13013ed5d1e133776ce97f130205
+823d6720d959114bf18a15fc03cbb7e2731c0e37a3dd3348ea4e827499805b94
+e959c489c5b940a78264bc9dbd2ed6e1c686c364616cc37f3f764dd8fe6e1a35
+d8c889752b8bf46179c8e0faf44bd2fe72b9fce69a468f22beddb5d635b5e3b5
+7088534bb39c51655a8647e5693caedf5ed12e2c5950bac0447db189da419633
+ee4616d5c6b424c89bad84db6d13d037ff7e4fb42620f5944385e78c69d0d68d
+ad6c75e3c5e1dd3ea7404f4e7c98fa1aec32281f8642671ec38f8f433d5e0d45
+e6125fe314b1a5aecf4920eebff205dbe2dd1407b17c699af3d726a2ef9e4412
+fbd733c8e61d84ef635b28397f686b2931afc994ca0bf33e1bffded4bd0fefce
+b828c069ff2aacb060d736c523444988ff57ac296d9a60aa265dca3b5ca50b42
+f50133e5bf7dc8891ee23ea8f600058d5872efb055734605db28b5eac00a0af0
+465a000d96159bdb09a738fed380aefa96b500e4a20b251a7f8bb94f2b7bb8de
+d9fbe53ac51d2072eccc3d05278afa07cf7b8adf2f31dc4e4e25766b34339448
+20d11dece148b7048f66cc1a14eab8c2dc6a178f14d8b587b7ed57600739e0a6
+3c633e211f380d891385fc5f9cd9e98e3b3a2b9dc5b14bf57f4b24bb8bdac75a
+c6ab3f7b100cf29455509b1c5889b1c55794c8d75c37fcd10e0e64b8d964a379
+c5f3e60fdae0b15b87f82f8132426d4364bf34589cbe7b393a3b873a19a7e4cd
+8875302e36f7355d7798d51cebf60c0523002880bf9cf94309d232810781dc99
+826b11e83ed68248679ef02dd52a4666b09298eae3482f6bea5ee86db4aaf28a
+b77cbd98f51a7bbbcf47103cfcb074d1138d7dfcf47c4b6f21308d254c48483c
+3693469a4ebc8c9f183c85ded711c24f441dc8a3dd8d0bd1b9cf75ff1081a1e1
+e214d5bf99f21fe4498e83ece737051c250dbbb34d45a03457847c5669abd978
+726e81f3cd6065a0a145164ac3a35ba572fa423f1d338b625a4f3e70b5672dd8
+71703c1e8e28958ad69647c6b399f71489276db4b80436b6cb936ff3329d0850
+6797fafb3e8903313d2c246057e8d02ab99930257c2b890f06e56d3f99823265
+5f65398186a2706a89f8a042a6f675817d008482edbde58179b741fd33c22aa6
+73a3428ee33531991851781db6a2931d8ddc975361f6ace8a5601061427e425d
+ed9491d5b5e6e7ea4ce55e9e28a88f698a33a0616b9d90a0725c544fa4fa9f2f
+0532be068b9e25e77635ba73b6a828253b1001fd5c98bb935196978860dead53
+f0fd74d10388647b79bac172ceaab00dc98a4ca0ecda63ef8f40bcbf1ef5aaeb
+48416194fa7d6973159337b5a7475051185d6fcf2dc2feae9e946a6898451eef
+f8c4a6fecc07ba9874129597616c9ed00384448b31618ddbd063b4456c45e991
+551f30c631e3d03c3dda0d6eee272992fe5b0fa135a842c2c66260f4b0c46c6e
+ca12b61baa3ab0e5f991dfa57b5f99a55bc79e58ec9247fcc7090c839c866eee
+4e3f5cb38d1d4733f34640bc8909af5edd36fcd29b9347e2d209df13e7d9518b
+3649079074c312194968ea78a717e430a3f2cc8833fbabe54213b08c74d27428
+6848d88e5d5a1c1197e4105177aa97b2984380deb623179bc59d85c7841f6d02
+4c51163663a37177842e9032ae23757453c1bbba7541dc537699b14a267f7853
+2e06ffd93b710a9f211c8da9b2326599579dfde04698d7d3031fdc96932b66d8
+f139e8b623e1857f38d7568d3893e9e21b14b1d0896267fc529fb45bc649f6b9
+f87f90c8966b00df8aca7e4d28531bb6304ea5192656ca87b5f0f9b85f44ab85
+fa5049c8f7628a0ab7789d229dd6ee243faa9835079910c43f7f043c6b4a7e9d
+662740860b35aeb1ef5af92aba59cccaf09f761a095587bd24974d473b6dd8b1
+f1063167a5293aabc5aaafad2fae7d39580907adbdcdd3da90c05b78c79dde61
+c22fc3b9918b146f7903106e7403f248526d1bca97b35e22bed6caa79fa0776f
+2234029b084795ce97b2daf51af323eaf6a19b775f8709bfef355a624f6b9741
+5b19b80677f59a6820baa98ffc2209b9e1315887da9232915b5e158042286a47
+07dc00231d6510811e322d235d2c373ce5a522c5fb04c06961be959b8da96f88
+228c67bcee085d56d57722143413853aca635153598d4a470613c9813aa3515e
+751d56cf1f8e41c12a2689f4707499097213afec6f5cc0084ef0c555f2464c73
+d5eab943566d5dbcec16a77a08172c79ef21f71483546c83d2bf37de383b61ae
+8382d6ebd7bc7168af897e58ecc3ca98f93c436b61ce05236daab1a3cb44f8af
+06196530a19f123f1528d830bf98bd721b3dfc7796a2adf26242d049dab0b1f5
+33f5a4c1549fc7a392ce6703a85088bca23e9c2548d24e384d0dbcb5f56e1358
+0ac4d37eea807c8ddf05c11a97b6b254b528b8b248fe0839f279e4424afd315b
+6cc33b8fb11b289bab12998f4841e357aad1d3702f721f859ff2b529ffad78df
+a2d8c2d5d1df05195d5d51d30b7bb7f6403b0cdf5dd7a84ae697f405ca302f12
+12608451957d8e0748b89af386cc7cae0a4f14c1e6703b38f48dcd6844532e4c
+952478d931c81249e0f7636424c74d3151ab474693cd027ed1648979b337e329
+0fc7197482bab5eec6ad85d9268a93d90ea8cabe478636c1c4a9b2b2d68dc329
+eaf4bb5aabb657a343f6e721cf80cdd76d1b1eea5e07add7a0cc675906d42f4a
+a9236d320f978d73637cd4af06c9fa2e9ad7a496ded4bd73dd50b3721ab57a7b
+d7d96cdfb79998f9078c143b443c0f92e0c0397b02
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTI12
+%!PS-AdobeFont-1.1: CMTI12 1.0
+%%CreationDate: 1991 Aug 18 21:06:53
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 65 /A put
+dup 67 /C put
+dup 76 /L put
+dup 78 /N put
+dup 83 /S put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 121 /y put
+dup 196 /dieresis put
+readonly def
+/FontBBox{-36 -251 1103 750}readonly def
+/UniqueXX 5000829 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd803271dc8bb1656323089e9e2bb50f2b95088
+87d31dc36e555668d9578b338402f8c259f6813b0b71e6cbd95e19c20ced8495
+2559e47577e612a4d94de3c1b4c6c41a6a3fa9e2313457242de74c7e4c0d722b
+3e224d18baa726369542682e9459b951b2ac638494880c42be4e2175a3c067e5
+945bfc1a05d3de8c3e8ab97f80ab6000e1f78fc258b85d3c84b038d7d0f5be85
+0d43fe03e26cdfbb41c36d14cb552e8447ca678efea1d275e85503123a2263b1
+4077587683de69a8f5a88d666172668411d0d0fed3e037ee468627207505dbb3
+59cfdc5d7f526fca5416d741073284f5dd2471e09f5916f4bff1a90eea4d1283
+7731f6a36e5ea695f4efc3bf5669b7f60ab606df5819149c0c8a4817f06dc172
+0543467645daeffe4457293e0c0407c4ec7857558d0452de2ac773f141783edf
+81b30215ae8d2d062aeb3cb69eb0d62bf04780997c9c027a22896f456b784378
+7f2ccdd4804375321e7946d3d254521249a4d28a360f4d3163912a688c16e807
+15d0440bd27bb78fcbc89bc28028aab2f594f8b641e45b9c599180b69663eef0
+03465a2425aa4f8b29dade493002fb335b23eb145108ef3ab828755d3753ea8d
+f0683265497b1cb5cb484c13f7a4e003fa6ab3ed5e24fcc6125cee4e33936122
+3cc907af3c64e5aaad882c356e673e6ca2509a71920e99549d8797e9aea189f7
+fe18bbf718017cd2e32b4652acf12f16e785462980f5895afc917ea83e9c3eab
+6297f1de23785f79172538b39984ab261f14ee296a42cca3159e63fb30583af1
+911646257a99b4162635fb79e25404242cccc3bf224d4c279e731333107ab2cb
+2598dc582dd185669c1fad35d2be0428389a4b175db159508c08a77e842fd400
+bbb1ad5437b0496febbaf659d036e56085ca6241751faf20cd68d0a93462375a
+ef7b6dff58dc0e52461153e95fb352e7383d91b852d29239b878e3aaa4b750ff
+b5f8c50b489f245379cbd34889910d4bebad7f6ca3c030dbb26435c249a4d049
+59f905e8d987db25a698eb2b5ecaa06a8ca34f62ef3d348cb599e44dcfc9680d
+504acd5f16547dd9b070ab949043317857d41bb66b2e6834d7fdf725802c6acb
+f91d854305f6b20ec49ad7f3bebf98321f78f6f73e7905f254250b4f8f49a5e8
+5e6c368c6c8da617a7c385c78aa5c4ba18858ee1bb2fd913cb9d2d330289f840
+2dea185dfd73d60c9272764c5ab7ac1a000aa672a00f4fbca5bcbc284da785a4
+9a05a2f09d93629078dbaf3166125217dda44e7cda5135aaab05fe1c565340bb
+04ecee7e3b67b68e0e6c6c1f4934bed36e3e8ded088763e369a9de0d42eb1274
+7790a6a1fdf733b7a012c8b61f4e7c13cef7f4b9e46dc5d6a823c38f70eaaf15
+d52137f4c4c7a97ff059a92bde5a7f25cd130f8dfaba5377704743da392e0d92
+96bacb8138e9e148e9ebcced99495592c7571d5feaa209bc500c0019bf12d9d6
+2d30f84787edd87208cd3e329c395275116acb00c01747a45be9c15744e82b3d
+f4be12babb22d771cdb47a4a350c61d9918633601f6d28838123b9fc50c7e64b
+e988598a5ae289101596ac87aa8504f4311e33361651381c961bb4b26b02b133
+7c17f6d0e65b4b5d870127781fecd0c10cae88f3081ac842972cd7a087b3208e
+3132c74995a4bc517029de1fc32b453eff70ff0223aadb0af833ab4d43c8b7b6
+c1bc0c6b96a28d586dc0141970aa2ed1c47b5685dbad93b101b6c7c75c7848e6
+6c990c3581ddc5eb40aa784029f82eedaa01523bfd11d5d202d71eb64f654934
+793426165e1922ee99aa3b850ef6723d56c0b73838fe891a29666dff8692ae23
+bb07f83a57da68dd47bd53ed4fc98e6f2b56ef72670e02167a4786ad53c8cf25
+750cee1cadc4834184b7e89be3fb2083dcea90c81f001466ce9b9398ecd9ade9
+8650df41107b3c6099d6a2557a10f5a98db6d2814617f5d351ce89eefb2dcf6e
+0f6ba4fcf973b13e9e9ea27e8a3fb0cf7878292adc2bdd000f850d3a05ef3a71
+8727ad8ceefd1b35aa1401e4f33c3d34d0e748e3a6f98062eaabab4cd4164153
+b7049c31d0df459828d3d402252b5fa575227b189ea689ef0901513ee1d0194b
+1839425a7d1c353dfdd3b7a6fdad40f42a001041ece2cbe06a6efe9662a78648
+27cda5585abf75771cbfecc9f7b328b3ab691d28e8bfd18d75b615b93e1bccb5
+5399de0b8cef0d2b4de604e6f4cbe281505fd04ea1b68348554cba42a301dec6
+7c2eff71e47a7c672c42f8282943e933fb07a278f2fef7c11ea2737678e82b03
+0a55e7d4a69dfa507a06d74ec3939c773d6980a2c57be5f1058665bcf0441938
+0a2f1eb7b9825ce1e103de3f011410e6880da806caf3f9c7d44feec2abc3723c
+fdf5a9f4293e42d797767677e40d141893cbdd2573d166918876e5eb83573489
+45192ed523d81b0bc4479b989efa6c8bc282d7a6f22e0c39517bd9feb41f6d0b
+a90c99244b963954b3af8d7a076748b445c8ab5662a1024b02d0a2f008b8962a
+437ee4000872cdf45075dd78eda4cd92befde6f3d0afb46331c9d3a5b5bce1c0
+825dd12a724e3718e55474ee6de20d80a7886d6ecae95fded5450da6e88cb12b
+6ad7e9f51420104b679f2012ac12646a85361e3ee1fb60a65065fd7f95318dd9
+81e02d8c90a78021d8e2559326b67eb50b2be92e6492e59959064a26a557589d
+fcbd74d94b4348ac7469d83e243dc4d36883aa6a5153ab86c1e5c13768162c8a
+5cda8da9e4a65669b360f1cf9b24f10b985669a67c782f772d052b879035e2be
+f7aaf4f3daaf4fe4277905b34f97fea8b97a77fb799e6bbac5ee1182df4e1ca1
+57841b27544b48982ea7e28bb57ba2355c3675544bd9de4fe25617c03a12deb2
+8874b833ecf07183c5a168da24445eefe662a379c3afa95a4b62a6958d7b236d
+f272d59e2f5a96d6bbb83cc618a99dc2e89024c481be17b8fe5c798585dd05bc
+e50859b2fb92f0a60cda6bf6b9e9968f9265d443fa904bfc027455636c43e3a3
+66aad9a0ff17a55faceb0abb9c8aab37a0fc68b073ebf5e8f15690f48ea832b7
+ffa60c06ba6781360a0fc526244423e87d1cd62b3981e61c4f106bc0ae69c28c
+e1ee3fc1347efec9dbc5d65e7a0168a8d19d3970cfe833fde218604797399c81
+2f4acc3778b1881c0616a91243915fea898f62f2f38c954deb5510499638f23b
+6c78a4f2f4a8bcc11150be7313df9da075d99f52d26830dc648376f437878f69
+0cce944ecb504c6f8e586496077fb31cc3731d714ddf6935f13b7e42a04aeb2e
+56aefb644e5a6195a4c2fe8f928b1b5bb491c48f70c66956487bf6b5b478bf99
+88e8d60ccb6f400df32b236b77c173e4094505f61929358879a7ba92c9e18610
+ff766d910829e0b0fab8ed54e3afc42979773b171865e75fa901d46d49077e6c
+476972aa61e3292e4af1e36c772554e8aed25c281f27479c2965fd554ed9a6b9
+42ae76d1f0052619315698ad72715447351543cb7624dda471e2177d87ba6d9e
+4fdfcb8a0104d87ae79612d329893d16d7a54b1501118eaab67526f50dc5ce78
+ff5ece4dfa82e47cfeba2be73f6fbda8fa7271224a079dc31647572bcba7f419
+ad54de9932ae0f1df4f2e869640edab18b37dc61c24795a245f5fd04a6c3c7c6
+1fc1a6c954091b398eb0d6ae39d4e48b66cb80cc029b6560e1d667fb1e6e0595
+4d519526ba5b8116b635070b8c1d94196761802281415201b1ca76a9c75fc741
+efc01f4f8ae9fff3994f2aeb8afca4c52436bd3b1a9fae867d7867a2afaf5809
+061b6093ddd20045d1292ac736d397d2c8204e532d542c9b301121988b2ec051
+c6a2923943d9d6917d7af2fa8fd31bfd4a5af815c8bb561e2190cf2656faa5f3
+559b1b524e33ce5c924225f34cb54f2c838e0aa2e5fc1296bbaba28cd1a2091d
+a86db206c19470d9a5c1fe58c76fad578d7f1493d287f5ed7884b983872d5679
+3690ec97b6d961dc454bb8023144213b1164bd44ae471b018aa5bca2ecc5ea4f
+264f64357b1418c133eab1e62f7c75fd0de9304ef4c73cb89fa87aad955723a5
+b28fe61ea9ce28715697737457dd3b222aadeeffddd306ec2f3edd1ac0ec6508
+b60a9fddc0095671c166eb6f5ef333d1f74f3fae169db10aec479ad596e665f7
+8d4534365d78bbf3af555e097bf3de990882c62fec8ccff20c78b8e540b8c0b1
+641702ac54d88dfd13ce9e054d84eda0b1b9f9d324475cb5ef2980dce78e10f5
+5442b2f296350502234bbabdb1af3d433fa127ae717f839a72b1da75cd5a5ef4
+10ebb55884f0914d4bf73e5c564bed00ca8ab0c553a464b48786de590632543c
+ace6801487cb7c4ea4dd4f07aaf319b59719b7bde731a75ed668b0e6d6944f3e
+ec2ee19b46d4f766cd987fa7a7e7e34a3e68c60f6e5c1b10aa2326cecd7f92a3
+247168987d7a65a57b09da41995a6b3368900ca9dbb7092ebecbcb14b7a2d4da
+91af6518511e572e8ff636eccf8894c112db6d067e556d907c7c7dde41dc4f77
+08f6d51403abedd4d79ee3dd1d2e7668af2dae06bddad13ad6a4960b18a02b51
+5b6079f0999b76a714e91773f6eee2605be9052f606aeda90b6040e8d797d9bd
+04b15ccb8c6e66f782a5472ddfef5098d8da8d278af1876443e5919a1b775bb2
+9c55439e5a90532583769a52148f97def663b37da97ae1a7342d73f6968a4bf7
+7fafee8ab06d11a720bc3d27f892f4a3f69fcc5fbf1996abbb5988f6b3dc008a
+3f98c153d3083f0efba6cf905a357261ea52cb27ec3d315c64b9518bd51d7391
+765003c74e1acd040d5d1861e554c289b2bc9e086b263723f9dd57301b903933
+d79017fd1b21b090d4c24a8a66528b307ae854112eae30e9340f900f9d878689
+23210633bd2683089540370afb2ac76ccf5b647e00a588a8f4ad620caa0cdaa5
+e53b7d158f1b8bd2096868f232b6f56e26c238db0b438859c38eca9624e4b6b4
+8e233f9b84fa06ed7f00e92327cb2cdfdcb710a4c95c6c3f84c3768df6e7c676
+5adf96052e9639f214091423bf2eec95730640a031baa1887f2e6d59430b00ee
+a877d8ed749caf6ad1c6833588d59243be20bddb652c52f9d1b0b63c6502046f
+1b2b2b4d5bb2e21b7e8561c310875ecb5453ee76ecd8491ff7376a4b50e8aa17
+451b8dce4c9febbd0e598813752e4e12f490db0c2f5cd4e58c2b1cbf417a8510
+8c4479c3ffe369e13143137e8a21723cd21583f67e7909f81f8e8fa7466d30d9
+ced6f6f73c755f41e0ef65ff035d8686db886115789af20a952b93cc199df6bb
+c76dac4acf8aabe113ba96862040d416757700bae1072306197ece2d2438947b
+f057dc7045bc31debc74d439f61b036cf6f96119813d479e4d3e8af1024c5188
+9faaed0a6f229fe3e6083cae5b82e07a503fe77839d02f9276bf3970845d2ba6
+d25fe7a5f95336af45d913e8868f532cc18e8b7cb8cbfb5e1e488841d09bae39
+94321cfa304b0ad2b25565fbafbd5c1109db5544b2510b7131a0af2178b86e45
+41975ede6423dfcbeacb88df45d26fcfa5de6696b638693a8d4b66d6fab9d80d
+71627e8da895b031a0760305547e1f653ccab3fc1e4c9a03201e4bdef0a5b5fa
+d7d95eed042cfdd688271ad100b17b921f932ca1bf385eee212c53f123ac1503
+f46e56d66b44ea65dd3d6fa5d01df8ac857e265ff682206b2056b13aaee3f42b
+2efc93183208bffcb4fc2d3c866ca9c809f2077db86d54e7835176152877f45a
+8ad226fb54d393b3465ba604fe3b2418f2d2c2ceda0bb8e35c9ab6cfabbcaa96
+17e1a3cb9ce04fc82f66798f07a514944229535677f38556bc1e7e347c5ba871
+530439c065be8fe20d2c341e82812e50aff6e255910edcd0e249729cef9f7ccd
+6dc8f999ffdcb5a5663658ef4a652b1d64b851832880b9032969d1952a0b9d94
+4d9232304a4c95040fa31e23a117d0501ad13a380cd2500424fd6392a6b6b6ad
+557b8b47cefc24f6de8f076de26ef3a3c6eb965523552bab0265a52e1251d903
+5b0ab8b0564fc07f7dc746a1383a52fd01e14d21d86d412be7c4a5d81bf7c6a4
+e4dac338965a80771d4c2890b7a164d74c34770e4fadbcff81f9c373dede88d8
+b6144b8c80ea20712b82aea132831c806d12f718e1cba77f799c1fb60b6bda2c
+1f61173a8fbc15c2b327076fd55b2e7a115f40ccf718f1d188999db853db941a
+440ce5dcb1a9279198a57afd5753d774b6ca9c4e2120b4fef7403d3e4554d648
+439adc35458c3923fd4645a4b231339f7a6040f5b49c520ae14b925745d02f74
+782a86c8801048aba77abe33b19187e72c3e65f9324f93e37eb72f9527a04b76
+5aea24f82d2b72ceab84305f2c37e8b11bce0eb6b2db7dfff6b1c89b644770a2
+5db27425243eccd85b493410dc4216debdb00122968ba7f5136f7d9b12bc2e0f
+e2aba57dec4095c9511023edff37db37464d01e408356d75b005134c48265b68
+6fa38f87a4062de9505a3dddf033c1bb5902c732303a7231c6a9030f0bbe0c58
+f44f31e9dc699b97c5cf63e09c1bb9f8010c2867ea3993e925424708beccef55
+f5913c3a191e9b22d9520a9406a1c600364e23bd5be0d9b615539e174d85246c
+9aa48249558602733ed5e2fd4b6a709e9e6f05443f95e4aa1f29fe50d03d6437
+208b92f62c50617b0f14f0911444bce79bb5ad0488b4ad2e8c8677844a9e78a2
+ff8961c9f336b17e05ac9f8958854f1856b9fb97eedda41740568964a81fa993
+98a6be111adee2b5937a9fa94cc7a4058814c07078641d67e9832b47c9d87c08
+b04a41f8a92be572985eb6bb319d96a8aefaf33db94533351f92c625cf1e27f4
+69ad6f2df32eb75376857da9990a8290d2ebe2b94990292fd6c5ecde2fd070a6
+9391b182e968f6d86e342dea0440abc01849cdac9826df43a640ba8a0f27cad5
+9521a4f192a7fad29b5755d815dcc94b952313ac67e17c683fdf8df02d8db4c9
+5fb239d0a7cfe1e791194c250f6b5ba91b40f50d48bfdc185e31de837fc397c0
+36885e5b95f582873850a67031c3022206675afc5a260f7ff2833949fe6b12c5
+82dfa9a3381c8d90a2471809bbb1d2d4fb2e161e4496998c2bb5ec822169d83b
+6da01ede314536717653bb9a19e0b0bf5066b5b0c8131fb5c1076db17d237934
+6ec92fa9627cc7821b2e76ad09245b39afc19864b3f9d35d940f80fedaa63857
+436cb1cc51b356120cdbba9627d54be8f62ffb2d606d4b6271136af0c16f722c
+6f5bd5151d234b22c4dbf1819e5fadc95eb44a5660f8ded67d45ec80d7213e88
+3333dacbecf5d2ed310c1035129d25b6d5885616e8c53c8cbcd2e51322ca61ea
+13a2dff1c856fa2f7606e6b2caa571283879cb2c8a79a76f56771b54f016a909
+a64e930f5a55881607923c8929ea14475366dfb6697545e0c888f9c3ebc5da1a
+fee2f477f622b53e7b56b44a0dcf652cdc59ec41b4ab869920f0b3ae60b2ef71
+be3c1805f0ef48ec82360054b2f64ffad8b10a1d760354b37ac40c3c3a825262
+fd909bd66ca9c19c0fbdc47ad2e1a35aba077a832662064f6dbc9803a75de6ed
+e4fdb57f5edeb1831712212323e51612c5e08bd415e099ca3f793ea82bae22e0
+7eb285a24ad5d0034d08795a81068be4482c689a118175bd0bd6c122274b0e85
+b0c9737fc4742ae54285fecc8fa2ef08443cd281fc1c8e2d2f4f7daac5f78ed9
+fbe0f39d5f702069e3fb90f6c91262abd1911b43254672f1fbdc294859e14a3f
+c8775da30b46e406d898edcb698c5391da1a292a707f1882a0d31d4444ab1943
+3cc268a5143b2693f821eeefe095bcd42a723c0081d9d2e06b9279ff8099d931
+b8fb2118ed564c3cfd8937467ca3a64dea18639876746b3fee6a5ca102d8ac95
+2c20f7b19c279ea6e93718ff92c44ccf862827c58df0546e20ca603baef766ef
+558b9cd05f6d588f78321bc2bfacadc90559d14052beb591cd1a08b49b42cc08
+22ba7f4b7f0840d68861177cb3706ab664473e737bfc5d5b1cbb1d48a4191547
+7c7f2dab92828a99c9f18cdf3ece252869836c530254cf420326241fa8a52575
+b0ec1514d1a644731d071c52fbffecc718c3dcec8d0038b18a50a51b272ea24d
+0d5a5a3253af4fa00295902c9955839b3c550c99fcb34c75a4a2cf5f718f64ee
+8e24ce37fc1956a58503649cf6105c87dc75253eb230dfd54e0317e73feca061
+8deaff6d69ccbd2a684128c02fdd2a2440b2cd0b3d94e661011cf1f9d0ccd53a
+8b386fca12078d4f9bec09dba9ec927f3fcba9d88751f9d7a58d433f3f1ea286
+865aa591e20b6e9a0a322f315669dda0507a22d76058c5a0bde950ee3f822971
+f4ff9d138cf8e3dc19f893a31609ffdf3be1a23319b91f2977e992b7ea17bf42
+f07784ee4fb0d4f952ed0e932c1b32686f82a9e92d0caa72e5cb5d131623f245
+696f124c83780b66731a9c4ea394b7a6a171d4b2f1ccdc91f0a2fd8c36d8f129
+ba1107d449fbfbddec0f32791bedbabc5f2231392a9a35ef4fa3eddd9193c0d8
+23357018d2c1eb065ff8a99775ec43b9e7084143b7c136c373af0eba12898acb
+da2cd4b14eb63ac30b365833111be95a8e1a8e9bcfcbd35c30367e1b4e130a01
+086ba0f3200acda501d2ea3ac4e42237a2c2d53c27425ccf9542a0f31212b2b8
+1e03d46c1216fea2ad8ace456ffcb007534f63f821fec300c75b70169f466caa
+fd37b84d52503e452113cdde3a103ea0b5f8eda899c329fae32d22eb875dde0f
+3770068c6b35ff2975f487b6bec5b25f879372c7c78274dba43252a89588d762
+42a2d90f3cd01809c8b0e8585ef96cf1b45227f9bfdb28183c706cedde0ca7db
+ee7e3cac7c7fe8c3050082a57db347c30940c297e2af96f84a86b6fe3afe1f82
+38160ab564cb6609cc8bfb02120bb375dbcd425f169d099dc0aec4c7397e2608
+5e1652b3794605d42b680c15a07d58920fe39bac95664c1ef42cede9e256255d
+b1b8832911dd489a848f74c5e462268cac411fd5255ca7b4075fbf7e3fa157a4
+812625d968f14615bbfb2389c9e9e78bd4e4b613c67d387672004eb80e7cb954
+368c6e7362dca10338a2e0a710562e9c779b8e61724935e35172d3a2d38ae096
+0673b6c39eff98f302ea81e7b71d2a459f0a9cbbe4ed0595158ab58735516906
+e5f5237e899e863183e6615b239c1efdb6aab78ef8a7dc687779d80a0e22e657
+102a154c7a455204e0f0f8a0eec3f3a542b634753660f50db62f0d8009f37fec
+6f3177672f377864bc29e7f2d01e4b2c97ec5ca829c2ab0fe1cf507ea34dfba0
+60658b333fa8e9fff6e3de13bf8b05bc3431e4c47a40e9ae17e49864c16d77be
+aa7be78c8a40afb944388f5fc5a2393b4111dc8611c6c3d53f1aa286429b78b1
+cb0b14beef5d1ecc3896bed97f8c2f8ae937874c331696e7446461dba2732e38
+3a92b1c14b391bf97265b0b9700c873b4f77b543403753e6c637573640dcb9a8
+4c0ca7cf2e7846c4424b47e7899bb2d17f1f0de47e749d53d229470a9697ef19
+68198d3234cbe56406fd18d63bbe60a996650ef7f3c09f3563f777fb65fff43a
+31de886e2ea15f2d91b35d31ae662c347be7846d5b3022c1debc61d2b8d8a61c
+4b5119e566144caad77adf0f3f8ae6b504fd8fc6fc86531d390d86a044f03d63
+359724ebb1cfc26db7e8b2144e9294822516b9eae6384290edc95ba332e781fd
+990f09c2b2b348f09c8dd68c7e09768af9ef2840981ba6c0c613e785b19b4ddb
+d34fc75743a38b89a64cbda8ee54d48c49639b339ebe7513453c49f2c943c4a6
+fb60813df1a3c09c1f7733bc1544391d17b5d4cef08f2da95b3377443a245e9b
+823187e66ab016367f4b053ac1aceed3e3f68c34aedee1f6c88ccc3a2e027924
+0954af031a453d0faeab8e1365cf379b29c9a318a9d1f2248c7d1b84148bcd82
+c87716a0fbad86e2e0609c9f50f5aefa8085934fe0414903b6cf7d652f58d233
+5273a3a53ad26d5f9b398668f95443f0048a3563c2ea8c0278f860fcb2b03f56
+c592c521860173257b46243424cce7e0469241d213bc7b27b45ae76a9914fc86
+805ce6d5d9477d6e55852ed1db18379c328c992e9fcd67e378066026597eddfa
+1813f454b88861e9ed2f6bf8ca77af7aba2269fb19e5091f22f72d06ecc38d0a
+a1e95d7535819aee6b4ef685be6a55a78768f65d9032188b23757f6e4843dbf4
+a8fdfe2c6569a0b351e690f2607a8252af03003d49efc6cdc660ba6fca59f94f
+2096b1e9beed892cdb1540764a53447496f42f4e01eb229c1f0690c3f8d2b78e
+62e86d45cc90af964755bb245bb1b902ede74ad692995656cdfbce75b61cdecf
+d5d7030ac522737b80b6d57da18256bc9eb2acb8b146b260f991bf0898cf6ded
+e24df1e7dc1087e2475f3260050f4f85d0fd524e5a74cdd515a011842cd4cbd6
+ae241e9d85ff184e20c9703689dc2d6ff26be169f64904c2b30bcd39e29bfc27
+a3fa8d1fa790c2977142b85d28b846e82d28a5cd7e987ca320a5c993cf009cc5
+e351d7c81811588330d3eab622a054d04277fa675579db79fb4afec8edda49f7
+730e8575206bbf8ee7666dc8d55b163f1912388c8b249d71b81fa7022ef53c71
+555480406054e64da26284869be12ea8c4d2f01fa5179e00ec6c5af5a19316e6
+651aa0ef979742d9e4ca07f9ed0c84f2dc2037e1c96245ab8af7bbdb34a5c7ba
+9d5064f77c27fe5695312918edc8201c76810c5b8bc0f55b11bf90d12d327807
+1afc8b31e62d0210cad305474be8ec3395852a86976322efab431f86fe2dac61
+88a39b44e0dddfdb37802e0a029f26e895632d5ca388d71d671eb6d47df3f57d
+57138aa1cf1652ccf06d152218efd3bfecb5c33c8a459d67401115e831b1f064
+1832c525bd1962039c9fa3020367a070e1a82ea8a46f853b9c0e61e1873edf73
+c5c9b69f6b4d95ef98c3bcb0ef3d72b278cd098417ef98a6951a30139049d4db
+5aeb0e632773452597c160ee7aace045fd6522fef21e46392c66092fd74cb325
+3c6b2f33a49db2a63e725bf746664ec05a24f932a1b3c6e29330cf41bceefbb2
+c79f3d07fd0509d40960cbebc608fac8756b71b6c18756e1b22a13ad56ce64c3
+30f56da69c2f644cd4c88f3fb79ce6680854c82e29a87b639307f58c0988254e
+b7e3220d6127feae3d3d612302dbd3bbaa7baaa7cf07a3c94db1f89a7231a980
+71eadab6c141d34d85e9a773eb48b52dc5a7d2377a33fc773fdb00b935ff20b1
+87e87b1534f0300c16b075da46ba0dd71fd86c6a0dd818865411cb4afc776605
+37cc323b24af19c5dee1ad7e403ad5f787720acd053d1a5414767ed933fbe86c
+f491e7b635a7e9159cd89462f4a6ccb3d920ad49129c433477e75811bd9eb9de
+ae7ce9d910cdb774a06c2c46711f651b5a3c847325077357235afdcfc16d1f3c
+625995b08a1c03f1f10e8356db1b579a9cd2dac28c9b6a36cc3bffcbe265c098
+a20d75b774270061bcee4847e246fb2ec90e3fd1a3fd3594aee5aad158d7bf76
+c3756c2892076495747d54ddfc72436e767fd6d779a9929f7ea21c8f78168707
+ac2a1570c9d0c66b8d5e1f1bfdd1b8d6687e9808b4bd42f6aaca39d9e506506b
+4a9a0c5f9e93c975984704c0692670c0976f9f4cac3bfabafe19a1dd512bdf80
+a13098f9b095de1867e9a1d9530f9d071a91e5feffff242069fc9b247f0a3123
+cdfee6ffc985652e1e37de8de526bdc90b0c281a72858c1f44e01f2875ceb77a
+969e9c0a8297111e32240a4953534cedfd776bb7430407174f9741bba32edb5d
+0ac4ef5f45a3ee06c25b10ace0831c81c0122c7e6ce719c13b7765a12da020c4
+8f3e513eb113eec090d291404b159804e6c9eee6764e7f009f3586686ea276c7
+395a60827dcc76cac315771dfd63a8c022a03ae4fbbbdda722fcdd3808351e55
+730dfb961a2797fb3e992d2dfb6fb827eed22618fec87825f88ebef8407a50b2
+80ea71878fa2135821533b382884bd647f7d0fff9f2d0f9d6178d886f65d5a80
+2c375b5356fc8d0a18f3c6db0ad97bbc8eee0b87284cb987d822e63de8f7984f
+9d5a62194f1b05ca88478de7a0079c2b600351e847b5ca46e797bfbff65f2cb5
+f1b17acb13d10d3b21c6c5ae7569104e022d78592868a06df81d46fccec48b13
+0825f802f7d9070774ce553ab3bf36bb96ffd3f9fcf17a1f115b15c1ad82eb18
+d7907a18443038f7ca0488c07872d1198de2365a42bb663726fd8c2412b2b1b9
+129762348ac079ded5741e97f009199950d1173d13201283134c5c7ec449c07f
+bf230c8037ecedbd96a049d366159e46192d6fd80383b3f50e9960ceefaee58b
+9e4261c6c9f2f086d4d057e4b300b6896e7b29725ea2c9a788dd834e7490954b
+1c39cb0544e318966d07aafbcf46e5ed75d859c8d573b745fcc209bf1d42b45b
+8c026a5df9ac73bf043ab03d20cfad1f6f0ea38077e2cccbc147677d1d8d6f29
+da435d1bef775e8bc63e89dc7a219b3bb6073b082b38ba6490d45958847d6bdd
+f835f6a8aa95d48bab5b88ccfc408cc8e871cba233853333d3a5461d228bb636
+15c7d73d32161587fe5876b6b7ad17bdc0d013639b6d699c04d3b475bdb9dd35
+830b0ccd9a4c111cf8d0967228671c5468562d2d600aaf80cace77f03238576a
+c9ccee84480b0b8b26eb1dcf6c3495a5bc733939551dd8d339d6b55180b445bf
+ea4edbb7a447973207eb61f47190c2678fdd88a6f66ccad42bb807ac68745f3f
+4c5834cbcd8c09ccfceed6689a2b24c3dd3cf8934b06d4279f2f0b8a5e15e21b
+d6608c63b528366dce8b8eb31d72588cc4af88f1823f858b9f8708893fd8df93
+07a0279f1f62a1225d082c07ae2e084659cfa64d8430d59860c65e87a718e569
+4cfbb38967838b576c343f6515c9a5ab8b98c63946c90fe1475347cb5a431450
+6ed56ff1d82a8fd14e65ccb4de218230d6af046640cee4ede9bb42c9fbbcf024
+51c423e9598edb2d2043f8faaa3cdbc0cd5d7d9f67027491c9cbc25bf2b660dd
+e92c3e1e22bf07e2c74595d2851084e6cb785741d8ff5cf3eeaf2090ab712817
+869d9cb606d4888bedfd1957ac59814067407866d1842eefa77b17eff9c6ac03
+9d41a2e73e4c8edf81ca4752c1cb3fe920a07861430ef6a4a1796414e95dc1b0
+891d8566699c53f173a77b7883c2ba7d11354747b88816d909cfb127f6143999
+6bc1476f0b0b889fd753ceeaf0fb064dcb0f35a0a23c458004a50fbf6e45f1e0
+1f70efbad500e3eb6d20cb8f1516e0bdf40febb6211cd1b9b554c22cbddb6ae9
+095218d52bc8b0089852af44a1758485c0a1782e606cea3b8341bbad3d55ec2d
+a34a62f415552d7140ce7a242a22356d907d6df5f7fb5970b7b66afb43882718
+dc6d9f425eaa8101744aec7cfc209d08bb698819d2567957aba5d14fd27401a6
+3fef77eb34e253072a9693aca9f4f6f1e434c827d5581cb2586469e342bca3db
+75c9a0141d3e0c9c5c7e27a199c89f2cef7e78c4ba3c9251b85af485623cb15c
+ef8ea17c64b8dc4c3653f754ac7a3b60ca32aa1e5b81a726b824c635ba854460
+d001f74a8ad78bc97fbe74799dadd1eb1e080c6c5a6ad97a705d237b198d977f
+ac32fdfa0928592f34449623e862948d5546e5886901e9a37bdd28bb978c9262
+0e86805131afcceca2484dec92c8e6a8467f7758cd11795ce5606dc7ff094c1c
+bdd3e710a2a8a5080f140f8ee5e44dc03a61f559b841b7d9c44be00928dfd23f
+c742f317916b81d6b189e48675af788d9e11ed0e994a75778a3693c991a96a99
+97d95065724444b7c8ded5a66f96b918cfe2fe840715ff6e1cd5e25791ae0bda
+87b90ad919421bf82e0ec93aae4e9ef4825c850aa588aa
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR12
+%!PS-AdobeFont-1.1: CMR12 1.0
+%%CreationDate: 1991 Aug 20 16:38:05
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 53 /five put
+dup 56 /eight put
+dup 65 /A put
+dup 67 /C put
+dup 72 /H put
+dup 76 /L put
+dup 77 /M put
+dup 82 /R put
+dup 83 /S put
+dup 85 /U put
+dup 97 /a put
+dup 98 /b put
+dup 100 /d put
+dup 101 /e put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 117 /u put
+dup 196 /dieresis put
+readonly def
+/FontBBox{-34 -251 988 750}readonly def
+/UniqueXX 5000794 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204a520640fd7c4d05e35ea5486f
+a43d0e970787203855daccb1ed0b16325828b13b7c767a1a58c87902f0546ea5
+404440fa6526975783c2d7a9572b8e5d5176bac598b8960609f49016aebf3763
+89c1adfe6a1ffc0c53b3acd9d168ec3a278fd4f1d9b085dc2df701346c9d0887
+3d230a161692b42a45bb5da343b4edd839dd60685a59aaa49fc65cd8e2ad2a9c
+5cab953495172a1a9f40d5f38e922443a519dd96f667201a408bd1d89e35f4ab
+98e2f68c3366efc14b5afe1018d9c845d808d4f8e07ea8168518a171ab4d6e21
+70eeac099eb7ef46eb9781384da1fac3b3133bb718bc80082eaea88759745188
+f266b31d0c7e791d633f16ed94e05517a32163e74cbd96dc5db066f2a5313d6d
+7f09465608cb404613e0f058073af000e5bdfafbbf9da0c0d5c02a3447f2cdc1
+f56481901e34265c26d331ac3f85bdcbc7c51ef9eddf2b9c189c5253f8e74282
+d6f053d7d183ae17ea175e5ebc401e67d21a9fea139cbbf3bb1358c713a75843
+b39a69aa2b1a7b975f53ff22d1dc3bdf7acd17afa1da21568310c68241b31d3d
+03bf404bd30baf9cc19c75b958bce7155f03cb0cfe2cae0327aad4b603284a51
+7c26de75b8c6f6aaa9debe4aec08ca4b646d787800acdb445bb55d10cbc2237b
+ffab58a0399b8e1a4709eee6012432005487a6979cabfd75caeaa480f411a990
+8b6d3a2e7e6937783279ac9a51ac69390985d83828feeec2ea288a657e0f79e6
+8ac3451a6bb1c8989c512da066d6dc771548f2da3b78d01c03e2f8f20dbe256a
+ecfe723afaf1bd728b86f31fefb6a4cbbca356f80b837c9a5acb8f511a576a6b
+8ca0a701eba732630025a8438d137831678929805a6e8caae351ddbc9a5be60e
+c8290b795df0ddbceaf0159ab4e7756d967bfc714db64bf3d52d3fd48d2bf9fe
+81eddc7b93896bcd6fa6e01ec71e64b3fb6c2f71006173b6e782066b7c3f1418
+55660b986ca0ab0444a072c928213f531a7e77eee44c2f14901020fd316cda8f
+124cbf461bf7c55019b3b897f5d112bb95b77a09e0a18920c59d2221c156c16d
+987de33fe22f4528f398dd339fab690042da1f706db5eb347e4eaca52df2cac8
+a84e635858a79f3fe65f4cfece44e569773476fcede2f139361daa5bf99619ba
+ff09afa6f7257335e7d0e13e893330bff030bc77996b3ce08401def76f5f0fe0
+1c1b2c4a47be58224da1733dddc8dfdae9c4a14f7f2c5bcbcf2d700433ced3a2
+fb2e1a6153658ed22882002c6a253a21ffed1381fb23901fa021feaa7a8f4fde
+71a58bdf9e6efa73e2989f6bf7241f8500a8724184730323f2a76473e687728b
+64e00d76c64c157d8fddb1e09fb176be8b85abe5e2525dc9135a3871c2a35f08
+3f423ade31934a8a35d29bd95d38e3523d6c274fb9168f47233953cb68c10dad
+c18cf38948bb75a0178c050cbc51e7f579f1609562766ca04e5f25ab81deb79b
+4d8f1e3b8e3da1118e0a4b6117741934b6c5237c9af53a4110b4357826271f00
+e68e044cff0ccdecb789f588092506930df50194d51e3f4bd968830a764a1269
+d9a4e32ceb0701aa2b9949e0c09a78da902eb2d0947afd1c0aa29b9e896cf1c4
+7478b21e0b59300fc972dfa28ecec58a7b66361bc4bcf03c34792dc8131b6535
+66c66e15e089baa994825ba419dda60682b2fb84e3d45126591c90977aad59f8
+c61cff03887c8b838f6c71c1d6621d67109ed75104b225e7c956055366e9d438
+7c296e5b50e4b8f9d60e22a60c4e5fde95765b3a558691907ceab8b809dc6496
+9d8aae1cffdc85aac8d5eeed6c3b0911fc750f30b8cb38b8316f2f15889c3706
+812fc47eadb5c7615cf1ba71fbb70d249b03a6126b618860ddaa158f3a9dc947
+0debac6e7f243dc0951c29b604e6a9226fabb9ce8c07240a972a1494609fb6a2
+a1a32cef9e47a1f9a47c77cf8dbf0110df0329e8026456e935cb975dbe3f1c4c
+271a9e224674c75d52ffef96df169feca22b3e54458b9fb10875c2b15ac31bdf
+dd75685656e3ca1268919f3c8e07e303e382b5f0cd9d806d2fd532ce2316ab91
+2116191f15e4df56c3d676da50459c4f3c240f6ecbe1271f47ca1d0fafb6ed30
+0914aab665992a00cdeaf530a3b70845aea7f949aaa49f249fc2814fbb0b46bc
+c37691dd5f7dd3b92023e41151bb3a576c68d0962e825706f5ceced82a380e2c
+9ad2e1b7cec51a39c48de95451a8623ad4fd03e7d0c971d22f42934f36d34453
+beee57470456ae0063d98f6c889668332319b018565c809006061a5e638028e8
+3262c4b7f05ddd4bd9c290a08a3ba2bd3eb0d095f8435903d88e9d7f55bef64b
+be0b59c36df22cedea54ba9600f1908a2c11a2e75aaba4d01d987f6c7fcfc431
+e8bee739179c53bd8a5ae615d0d385f5650314ecd3f234ac33a469f333080cf4
+d9ecc6d8e9f9651b9ac0d3592134c4006fd16877d1b2853938307d5096b463bd
+07c35660475ebb3355985288fb0c1bc82c13c99cf353241a45316f482bcc3ed1
+48c02598c2198766010b3da5b6302537041126df4f6c6693f5f83b71ca6c9aa6
+ad801cb8cd79e80a60072bfa48094d68a71e9a8adc917e9359ecf91ea811d766
+7eb9b294da6fc8f40791cb589c861a986b42df00d569c199e53fdd3ce8194687
+3eec38025af8a78259254b9894440244cd3dad6839d99e494229b5938d7e9a4d
+5c69c174f99ae1d3d6a38f76d8ef78bc5c712f070325a0a528bc4942c9f0ec2b
+3cc8e0beb95cf7e5c4566afab7029d7836854b7e69f293303156643612c839ef
+e2ce24025b8759fee25c2a698db15e5378f27556117d9711f2da35d1359672e2
+c33109530ec258015f61a1c4fffd2ff6d44246fe223c447247ccd8cfcf86d5c9
+efcd514737ec46c6a1ffad9ce6e9647425fd1d98c7ef694c7afd2579c982e76e
+44e914c7bf3f841fecb1bc50527b9790c0e38db305bf9be285ee83c33f69dd32
+e9a54255a134de93020c206a4d1dd30f2b967fa57786ee93ddec0874d61af6cd
+a765133507d67e2f24e326e5ac8c6f2a556ebc015855999901f7b129d404f93d
+01ae423c65434aba3a1bb361c6d6907788ee2d6fcb280ef2677478e20836591a
+5ee01880ea4695d13eada79d55a1f4b251acfda7fdcfe8c2accf32cfc92687db
+e516b3e01ee9a50cd1e71a8f95d552c169c8b19c8553c82d77e20b68e7050922
+3cf675cc15b483ec17259df6ab14badf97d95b800634662137bdd8302e5f3b17
+17da9943ace7f62ed8a363ed0e4919d211ba99a4a4fad0ec3d499fd2fb0a795a
+68d139c38a63ff05d3e32ba75dc373a0a68b77b90cd1c03588e8e1712ac47ba5
+1aed5a06f0d229ea60ca493b1a828733b48393e26ee767466d2a99f8c5eb4acb
+788f5a3eb2e52970f05feb50f9f389ab11a20d722989948a92cf700ec0b3eddd
+cbe1a9db416416e6d7be6a7ba3254710b3a0ac9bf9ec431ae67c70f916c12881
+208540f8e30500d6992af77cdcaee239a27b7c67683ff733bbd679711b98f783
+57243dc02b4dbcb4e44f24d5ba0f420209d733a1d985ce0ffa20dc8b5521954f
+5bd69a54cb6c066901fee87260f0800c00f948613ed528cbf744a7a10f4acaa6
+1158d44a23d9b035ff62f7ed8beed4c508031be5c1d65b8973f7cb75b3bc4218
+2fa2cc1c279c44bf1e16b40ec7999ce4d05f04208f49e79d883469954e58763e
+32ff7e6ac404f600a5112aac38567c069224f0e82d7d431bb7aa86a7bd2ac00c
+bad8e4a291281542779d237b9140d46b6d4122b518bb83d53b7dd86a18213db7
+00e43ef7c891414f0a617e4e5ff21ca4124ce487b7d0594b91d8254ae7187eb1
+e3ac23ea38264a725ab105bdd5d52cfdf32057fa7ee37ada6f6f8b2ea6f37a25
+7cde9273dce4db8a27acf3ac48a23f8150f3dc9a3a267e1fa7333e124328c8a7
+77f7241681bcfb70439f5cbe804c5eee1c468ad1ff8f5aac00b72baace834f72
+f507fb182124b8118b55d24b93b987f21a0c19293e7f33ecbf090754bf12e91f
+252e4863702cf700c0bd764fd3f71150a9d884b9e801680befa3521566e4b2b5
+1e3d3f3e109e65d66e668656102275a59f0b1464806c909d3d298c7d60f2d5eb
+d6b71b379b7a97e582a504c037c2948deaaeb5c221ed4fb1163f7cadd935eecc
+236f8f90986d0304eb693610ec77bf075ff4d52b4bd35ad0c9724b220716cd41
+33ae8916ea08742a908531b932581e475cb2139000b05af63016320ce6e3bfe5
+8a1acdac07486fdd574db3460a2cd44f04642051b5b0f685e2ccefbebf148421
+ea741a8e13f50090aee016488f558f9a45109fde9fbb219c869e33ec92baa8cb
+29f74199a4ca3653a436c74cd913752db4e8a5ed16dd9429f25983bd8c92ad0c
+1e56cb32a83c0052d494ab09f3f33997ac1e66d3d8ef5cd596eaff0d81de4f4a
+1511f9a330e425dea497da781044a2ffe7e6274739f3ee777d0bf21c9c5b3581
+1ccd4e8de848ad29354e0e19644efb509d1cfe8d4254c160d3914f8a99055ab8
+85de6aef9e544abaef6d232ab064c8f85af89892bfe095fbe24707f781d135ed
+a9f5fd2cf738d2ce75be4a3a196fb1acf3ea05c07ee9cee6bf70d2bea640a1fb
+7091399c24eee7b37f169f7e8de6a55c4589a5472e7dfbfa36987800a8545b5a
+ab22737579a41602add4a1e35c14cdb5c3439a515442ee9c74c049b20deb5618
+65df54bd2b7ed4644c58574cb0333115fd7496c41134d38d784f623480e2c937
+f1fdc03781fa31401b426457c9e7f8a92086e52d2038ebfe75b290fb689e60a5
+0a33213693d9768c9a006964bc651b826b4432c476bbe4c8df732f02df8a9758
+331e4079ae8df334fbc853116bf404a9905aea37c66e04cf274acadf7d6957e7
+065ada9eba99c80bf8529709e214e70f6615495ad205862f672917990c32fefb
+e89ecec82e6568a2f2e96e020042bb0d47d77731accc745bb8b7f025fa00f63d
+d83c156ace3db99ec9029759d2d8ef79461bd2b5808d8fbd0582f00dc24cf0dd
+b9def4b3ee528015da3fa65595d95ca28413afce8e59c37e2fb455e701a484a0
+a29e2a2a7d60f1d3f899a27f72bcb905f1a8b94c65ec432cfa7159ad1dbb2410
+7cb3c0b9cc0e2dc8c5870e2cb49beec479ff4e5b8fa9858cb4e3158adf23de81
+e25db7188fa268c1eaa082f218eacc79141ca73a203eb1396f7680584ddad23d
+343877ba7b6873301af458d809c99873a317a10bfad79e3a31311dbc108f5fcb
+71d9e061984da400fa39517c6d15490d06e1bb9a4d8f31768b90bc3c4b263d4d
+98080790089f3272cb971f231111414ed815e865cb34a5d264135dce7d5f9174
+95e7c2076a84c42030357ed6747914443ad476ef034838508e4fa482d6f046a0
+cc4c69a07547ad2fab49e0a1c0d2f142e8fea77a4cb6bef27a4ca200ac0e5373
+fb934bbf3ea83a91e621a32e746e000e2d573980936daece5ad185bedc92756f
+779f764f412fc37d684e39b4d810b03f7ae7ebf8c9f896e7c01a014df6715096
+49db97fcb21bc13839bc59b0af5dbeb988f6c88969e6151bd2ee98bdc41b5224
+7862bdf65f2f31207dc13ec5721e66d5c0273c824a3436c1fe6324c25b7fa78b
+3606d7698a856fe623984ec6640334aaa7642ea659f4c60175b1e9ed4bc5be72
+24a266dc6af5a82a0a0c533cd70d8f6fbb1e23baadca20469f4512a8d4de2632
+90ebe2dedc0d84f94b483a2553d5932da4328781da17c5fb8d8eadcd109ae653
+51af49d6bd836d46f7bc49d70f17cd7847919ca6f028d9ae9aa3051406e03409
+b1358fc88cf55e79207f4037daf620ef895fc1216ede3f14c83f94a06b3a4a03
+212f533fb00632560d6b7c82508082034e127f256cde7f2636494e4957c03bc0
+e34b7b76109ac679dbdfb062de684c173089125184acde25b4ef298d0fe22789
+d3d1f184ac2f74ebb49f45e9435ff88b1dceb0b9db58920b50bba0d191224835
+39a2c833cd036192fc2e7ce79384449007e188d5fccdc397733a20591152a70b
+9490488d08d4cfa2410cac77339eca1d07244c6ad64004c7b3c8186411a690a7
+cf5f17926fd90a000ecc0d2604a33a23179fd264b7be25924678f832d5cc4d4b
+601f18c06d3f1e7632ad82ecd4a2ab861db3203642ba875b7d826d7bb9d063b4
+85fd68bcc800d2fecf60aad492cee7346ea7adaedba7cd9bdfc96849b57ad566
+7b530fdd49d895154e3353d957e436ea99212538e7a147215bf33ebb664728f5
+a4ec31446b6e26787ca28ee8bada38d1f2380bc51eed4b3560649cad89ee9993
+84e03861b49a5aa85969c787e7cdcecbb0e2536549b52d74c6a5c78d87a94898
+298ce18ee0d20c2c07c8902978c810def67fd320589db3b61dc8684afbbd531d
+eec106a73c2def33a750b98260eaefb99b10a17c5c1d4f120cc66f7643efdd77
+2fbb6f8904cbef15be8239c00a5f199a5caf301395be9947b8b08068c5ed7e79
+6f74b12327d7af3b94202bb026318c322efb5459742340e092170894698cf8e8
+54726b50a4754a98e5f3ef0bd656d015f0c197d35e86f83b8f3b0776635fd1b1
+09c8cd189feb28280272f08e43c13426087cedec3a78041878d828e78c9ac9d2
+ff324c40b17af76bdfb361e27dfc01984760d0fa98775c956403d6676e973ec9
+2f9f51b3b780d9418c1594f07452d3222397e0c5f2cd9acf0adc41a7a6666fa8
+d910ba9b2b15d792f55bc9a479be8cd4a924e066587dd445c89ac3de8a829735
+59260c0d4f3315bc0d20b45be62a4ebbb2d83d2032454ef295595c4534cc1449
+bdc0565fccdda9c646f7880ffa2554885680c92feaba5bca3ec442159f7c42fe
+1e55cac8a5bcf4316823cd22003a0e520f0e066ca4d27bfe420a4f9115d7aaf7
+0e8444f1ab922f8656711fdad9f487d1b7823dfd28f39f54bc02749b30a59b3e
+27efc8f26e24fd283e944216ac4387556d05422d6054562b52f61f38108fa496
+6d6d2f5170dcf1639e73f9f64ac2bddc49111fb6d420b03f05848211abd16629
+3222a6031e07d9ac51400011bf913677d5a409cf64186d0a661655dc12fe0f57
+50ff1e1eea51b07472309883af4fe72c6536cc2cd269552ea0ba77e66489daa2
+5995488f0faf766d6559605497f23d5bf8f9263aebd3af14c1daf92a3f0efb38
+65e3918b5d689dbe488909259e4d3483244aeb971c17f83ddda60d9bb7ce6055
+01421b00f520799e43b7b015ffbc54badf06a91eb8d80b604700845dbec64b67
+d6deef884866ec6683d5620d6033c4d30bf57751a584290324448be8595fd40e
+32f7c429275b3f5ee6be8ca80f9d0ddbd862d58163d7e974432a2946bd2c44c1
+69bc05614f124ad55a6d872fc916f41d88ce129e3ee079de3f9c7b05546f326d
+86a600c283d857f3a05fc058d4818454ced496633ef1b3794182d494280fb698
+254ace7cd944ba2d6389848039d4253bff67546a1851d0aa4b0020418ccb08e3
+5ec6982d5f29baff3bc0975ddf4d1c198da7affa2ebbe615875f30b25b38d81e
+6805222902e4b10309ac813fc8a6962ab4f0aa02f9e6709c7b1999c2cdc27445
+77eb72ef2b991f4af90e2fe80aa8eaf0dc18c456a2a1cb795b62e08267274f1d
+1fc225870ba62248b662e3274e9703cbf18c2f847775e1c97feda0a434f5d729
+b5070934c646c7c3cc80382d75bd762a31609509c1356eebe194236c1ad07edf
+a85152907c1adf7e60228c2ad16d2bf5d1d59ef56a5d80e99ee185a88694c14c
+91aa838a26675e80d1937bc830ecee7dd7343ae67956ca7eceea82080a27f30e
+7af9b71e9ed0288f6a6eabc1c71bdc8902ce58b24d872f308bd08548b4db2491
+733984edb197f54a59661294cc315ba75eb18ad0c7af893dfed86f10a309d7e6
+cd7aaad01a908eed5a1d67db6e57ef2e44c103258370a2ae9d2c3ffc85b98e23
+9efa9f15758fb31ce8018ea66a706c91cb6b11f45e336bd16f5219aeae520c4a
+c553f196519f43516cdf03df9cd168cfcff3cc49233598274dcc5533772a3564
+c93f8e5b238db3b9ec518eaaee0ec5995bf7dbdbcc272e6bbe7e80fc558ae33f
+aacc5670fc420250c8b95060b932e6d92eeae90d32087830a97722e83d2d951d
+a927214e7699feb01073882584148d4587ad5cee63ae2ea0bb1c82438245a47b
+7dd9b7155481fcdcf0bd7eca3c4c4955901a587c3abbc0efdfffb1c8bdaafd18
+80c8402aa6720ba35febcd4358a127801548f3a8605a7d13f5a5ed167d74bcf5
+21100f4d3de204518a837944c0e281d0ba9ed144853ac0c69197270ad1c5ac7d
+cf9e416076560e87a9e47162f363a91537e030bd65852e7502d7162598e01323
+a5d1d6e0ac308a089634073a4b25ac1edb9f2676918f610f4a1b27b4a3a91885
+34ebd6e18523f02b91458689d1275c372e225f02578efc3bc9f67e57de391745
+c933a94c39017b8cf91e28e24415138fa581146a9c63c880b0c9338a4e0d8ab7
+7d268e6cf15385927fdcd37eed523042a602e42f20965b32a466bcfd6486200b
+47a5de56f7728d3f4837211f078898d41f932e1839cc5641e22daffb375566ba
+5d5802664ac1a4e3c92847b4a5d84c259f70411b9bbc77a147e9417ba626cdf3
+086b2eb8d77d9d4a7fc294543949ceded74c820be56abf78fd2d24f3ddc1954f
+03bd53e00031e09356f462952f629867b43ef299bb119a19919711b1b41e5207
+88392535318ac2759391efa5e10f7d312d9d804551a1a9d0a147b7fa09d87510
+985764b14463cc6543ee01a3887a0be3003c04e814b21f39a4e68d939236893b
+da96c04ce83d1c18cf3aa4fd36826f25af3f98188ea6382c6e55143120468e5e
+9c6e5b9703f5b57410103da5b3c9cf3a2835c53b00455071be73293aa7171c98
+71f33b9109ae47ba08044c836bcb4f2fdcaa1b933dfb8b94a3bf0436d7200613
+4b952f3c93271d2a575bf596c93d0731cb642f42a930c1baa7600eb0289c8c16
+f03e856b216c42984fe95c9997ce9da8e430ed966cfd40a0f60fff8537dd16c3
+12bdcb1768e3610b774f5a4902a86b78a55acbcf13a7f8a6db5c0822ba3ab95e
+f010432368df37e01121686f1844a8a1c1dd13f8beeb1c9925f23f62a8100925
+b57c0199dc3ece12d4099625e956e2a0388832b9261bf9d8d5281b4c29b20191
+817d71b241a344870b9366464a6ad97b71352528b424e29246dbfe667cb868d5
+c852b4cdaefc34bf84d251904a1c3cc25b755b22e2d3d07948b126ef6348ba87
+5ce8bbe5bf9e966f1dc356454af3b0c09645a1d4795b4af7f144102361e283be
+bfc6b08dd91dc72740d25711781b06a9564b61c27a28ca3968e0209a486f18df
+54f2d75e7422caba5fa4a823c8f089464d0f6398e22f46bb12ae15bb6bb2c31c
+c08b2b372df794df01c1c3e88b5c06fbf7a09bd281ed6adae963e0fdbc16dbb2
+fe8611f096f04a8c3dcf8d981fa6b933d4791e2f3907f64e01863726487b5e9c
+87def98fee7244960b970f4d033ca9999b26ef4231198c68f19ee860750e3ee7
+3b3594961e5f0a41defb148ab21b4e33a3ffa0aee1e9fce81893b91aa2d5d8fc
+bc55643edbecf04278d5256b25c58816df64dfe3e6485b8eb817fb250982bb4f
+101a1f63b5a47add75b4092e9dae2ea7e96f60d9167e53ebe351450ef5f91099
+214a03bd915a593faed4efbdb46c293a514be8ff354ed61f6ac860e66842f6c9
+9c2cf0c201214be9d3c01ebb47c47473e71fc7c24baec2f57a87ac3c752a7e9b
+b440cc1b44969d259590c8e9b423a7712801e6f7d5ca6e46e5302c580e50c231
+ee936c4702261cffc3692d69e049797c63afdd551b24c023008eeaaf56571a46
+269fae3a701281240947ad77735bb410df691b55c04170a003174eaca98a7c3d
+7942acc686bb39d098f8affae4d7eb27aa732a73df46da767289b939758f53e5
+b62b3b9647deefa3802da79010f3d6899a4ae46770984d3852932e64cf3f8fa6
+3482819b55fc6a7e34e53a54e61c325f36bfabf29ef73f4c6037d0b3f12dd937
+3ebe44a43a738aa9f8eae9bca47b11928f26539aaa28c56620df2e6dd782756a
+d12a411a0d8510da6ac4f51077383ae139e6976f2589f98e78dbe775b2eabbda
+49614c99a614bbd99f81bca5a907a26e3da47838f0edcbf701ba1c1dfd6b7586
+b25bfdda4381f085594977a2a39463e54a142f99b4a4b520783be7a57fc9ff81
+5b1664d496fe35e89f853c945c577b58cb59f8cd88fbc53d0f2df4952120e476
+0a7f440c0872f0a6334294481eccddd320eb11bd562a8990745b0e8a0727d080
+3b228ee95b41dc8cb40b2074eeb6b8118ce0e07389b6d92c7d97e59129eff829
+bd5cef6825446613e7d09559cd1f27a4bc31fa28fb4c6cf1952c1069f301a2aa
+afd34b796dcfa058d23a82a7ba81d98ac06ceb1f8c693f7a7009be7bacac4002
+0c8973aeb48948f54eeebef943427546d0a7cd59008d63da8cf17dc3bc3f308c
+30ff73bfc21285d6a13778367ecb7517f16d186ab7eb02b46c9efd3de824d615
+eafad1d1c992391369b220cacd6c3a7e138376fe4490de6cdb564cd1054f2a2c
+377df9d9bca230c56cc10396c71216f3afc46d592bad2c32bebc5cec79fe8c07
+e407b907b88c445c71ebe4291b729adc351839f79606c7f8c69e39a3a048290f
+61e1e067576a57f998402be529074399066220b59bcc16869b97de57d2177c77
+095a0d4f690e6fd4b2255f305a835582332a9cd7e5f82beb0998a17111c3ea9c
+bb8ced06cdea1765d2f311660abdeac0791b82a4e746f363330ab05195285118
+e52e60404d6f976496c28d2dd6ab89e6e6e62e93f923ca55f4b8dd6278f265c5
+6b0cb4965c3f9f1a8b66c50cc3c92c414e419cafa7b18fdcc15c3ff45619b45c
+a6314b7cbf5641ee725df62944b878d190a383e5323c45b95bc72dd400be62d1
+fd33283d96424f0c6e402f991966fea3cae6a4c26bebefe8ea79e7268d349380
+a4a948172e2631324aa6101b630f956a339496b7e1c91a0d69e20f3911e3cbcb
+bb97a5d8fecc0dd528556509a115fe313f8fda0fff3ac14357a7fe44ca8d8dbb
+bb218d95f7c56063be1075428eeda704c2ef43811b896d66a6fc9e2147f5377a
+e897505935f46f01dd1d98196c6d755086ef8d96f3a6ffccb72e98c45ce1c5f3
+2cbcf85717d9e05b201b851c16b202649968a34e8fbac59b3288cbb8358e221f
+32403f59dca776c7f6aa97fa2255bee3bc078d33aa18d106115a0f49b0e30c6a
+fbdc720f1134747b6c5860fef0be7a5fe3a19cd622d229d2a0dec4d4218950bf
+0f6494dcbf4d88fb1672063c094881b30b71d35b38fc6eec2bf83ddff2552f11
+30ca0ec44947011b694bdd26ea7f5aff121241b8f44a259e789290f7b20c13a8
+c1787bdc62d57cf1fd1b4e7cd9f964db1178b051b3f8b927df17322abd477114
+9d4ed10dfdb29629da547e996c1fd4aecf143762a713394c9f5f578e472073de
+e740c73207c9762a7a53f45230b38682415d1443c9ba377c921be77c27641778
+0bd6aae29c968a5959f913c3bdd3a65a101b0d0f424f9e500f92aff1e03f80af
+c328928bf6f185025f4a9d68247bd45c50e0ec2539f99d4843cc011df3d27c00
+f0a7f4092fd18f82a2e1c0ba7237a038fada77930c55649c0abf728974f5caed
+db3e5c216654121294715855505a72b6d184952c16605a2b3747abff9d04aaf0
+8a3bfd96c423310402e81101d4f19d1e5947c98616bfb9dd57c939b27fc4dfe1
+911a34cb755998a589772dd485d54d1fb2a9848ebd4dc21642eb3f945e3983f0
+fcfddbb3f74c4631c7bc9852fb322ae334a18dacf37ab164f905be956a734af1
+2d0113bc5f9f5013a02c7090c808087c86fb7ee21b62a9fb4f76e773d930eb6c
+177ba939eccb81902344bca6212bf670146fa60dc4e3752f289f2be318506bc7
+d24a05487daa435d6903c71ea03b5d2aef6b6822a275f4b2f5dc8c9eb6ceda4d
+abd45786544f560b932293be2c8ac05cb724e9eb1938a338757834d001a9c663
+e0b3c1c7655073db73e0d71377432871e9efe18964a67e05e7dd458d9d39ec88
+c79345533713af09838a60822e72350e86de4c6bffae66c5736676335c7de348
+dfe9cebc8276565eeb1fd2f44cc361680980306bfc5e7e85e0d777ed4ba7f2ec
+25203da78bb3f2869aec39556b4da2e0413dd3db1a128722b12adc9cfee6728f
+514934c7b0aac02c9ea94e04c192040b12593d7e3dbf40e2d04f87ed165002f4
+cf8eaffb394ee49d0bc055f865e28515e5de861d1c081b631295576a442cc21c
+a8645a44a02599d03817b9a155c34cba9d3ec95910a8adb8a71e833d9d124a0c
+143f7d899a993962c789b6b3540d1d80d2bf9e2b9688e614811ed9b896254fb6
+b0ec1c1b54b5a8cd58040fb12b2efb972a29eaa2ea64bdb1ed5824e00e02da6a
+7548142bbece71129cbbd6b60a4a16f3135f1462dea357adf63c2ee351df5d02
+393b4a36c5dea555f1b011c1ee14eec89d85ae8c79724a9c0f39
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR17
+%!PS-AdobeFont-1.1: CMR17 1.0
+%%CreationDate: 1991 Aug 20 16:38:24
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR17) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR17 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 186 /ring put
+dup 187 /cedilla put
+dup 188 /germandbls put
+dup 189 /ae put
+dup 190 /oe put
+dup 191 /oslash put
+dup 195 /suppress put
+dup 46 /period put
+dup 48 /zero put
+dup 50 /two put
+dup 68 /D put
+dup 85 /U put
+dup 97 /a put
+dup 99 /c put
+dup 101 /e put
+dup 102 /f put
+dup 105 /i put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 196 /dieresis put
+readonly def
+/FontBBox{-33 -250 945 749}readonly def
+/UniqueXX 5000795 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be356c29c3aec91ef17f5d31183b1e489f1fa
+559a6693fbdd04d4f7e99886d8cb7cca13d4aa9ceb34a708af22e69ccef0e504
+c3997075243585edf60b6447c8d01cffb04b6e3ddbaa7da5891286861322a795
+e9d990fd56af2f5c2b35801a0b07874e4ac3170481d232e150443253c92a8b05
+513d4a4154a99d91f629ccd30376500f5d16aaa9b203bad6350e4b19424c0e33
+75f2949bc1927a6f6221252f8a96618e646aa1b0810753c98becc26b37837775
+24bca72b818d314074c1c91f4e1f4148d3d703d12d179ee6970bd55d04aa9a9d
+97f63f2c7dbd129ec2ed3ba5f8080270ea5854ea165dbcc061e2f47f1aaf0997
+2ac9a689a2a9620b91b53f6b5092884372f5f7afca495f331138d85a97c5bb83
+d8072dc88010fc89108b60bc06d4f93c722e8908d7ce3c1ea3c70e9e65edd769
+7db17ce0e012ad37d4030f33d30a73fd655b7a2e572f3378ac933dd75082f2f1
+68702be19bc60cef6bd5f0ada180d21408c04b7f7db9b6dbaefe09e809a80ddf
+a5366d10930d3e68ca53e4721ff525853f4c784f2c2c3aa0129a34d9df00debc
+ae4037e4c0fbdce3989f35964b4c07e7817b805bfe8c15f0c0ebf226cff606b6
+2954f0f42dff8c214a6537ab666d25389c44db7b5866440bbfc137712bcdcc89
+c68cd1adfd85648b1ed29bfb45a564b02172137feef782d604e0d7e1f1737c96
+719cca9e4b9dfdc87e5999b886a15ac572183df8607ecfab5eeafed9f2798b3b
+db56dc26f8b6f000eb0ecf24341c969953e317cb01bf72bf002c07632b5195a2
+8995c0b23034671dd2ff7f0334745a5d09646bb6027b54034f376bea19419a61
+757e497a619513e955d2550a1e22208ff446f974f02c629d4eec9342cac41e24
+3eda835485be27f1d1a6f2be3ac82262b74d067752a8dc602ec14c9f3007faa7
+c3db96201a742d9df127da560c6d8562103d07478718f7ceb6cf2247fbdefd09
+808a99cf32e8e4a9a1295bf2911e3b4733b0441941fc300a7517b0831127d0d8
+ff404bb33dc9f11639e934b62732e81dd81399374b6dba71973cc4d1321037a5
+69c1d19993c80268f5440af0dae09ec40e983a284269fd49e2e074a99e1e9acd
+de729ec813256887cb24d25ed5ebce3a1b02533b9f16abddc8fa2c0339ee3b2e
+a732c2d881987600dbf2a1e8f30cebc15f22d72025b72505c1abbb8f0e9b0d9c
+276b048b904ddb7496ac217c084602538fdded18d6ec2ce490a833934ed8055d
+6b48543aa365b7edc9591d80ff2b4c414f592718cc3a33732b7b9c8f0540dcfe
+e5d136b35c98139481080997648a739bfe78fbd88327bdf0482fe6bf56de1454
+82471f8460403978da3ad16d03e0ce523520a0f606d44a587e513ce53a2d0b42
+f7ca1129a2422b9faa8e98ae2dccf46ed4a7d166725030d30177bd37cb903800
+d370c5ce6ffe472b16e16db9829a68ce358d28b291faaf7574957ecf9b08bfa9
+e027f6a07f0ecca8d095744295dd484572634bde6466dea52fbcdd0d3033ae5d
+bd0f72ae637ece6e1dbfe37a33ff8eb4a30f1f10239f70919ad75a528fa4d59d
+3e442ca29502ecce44bd0a86aac5ce61ac0b290afce6b566b710c72c71d16505
+7f76c5975450cd780a8df92412b1c0d97213913e2e99b3e026931b70782d89d8
+25b022103ec9b6516e84243863a2b56a8573fd06d8ff2270e95d3d5f353fd41a
+ea2d374081646bfafe9840581b01fe2e517cbbfd764365da09ff77536ef738ba
+c8e87eb5114ce702b921f9f531d06391df188c0b346760dc4b519b31c51001e6
+09cc15503ba40169ec865370cb3d9e8ea0ac4c225df64d176a516f14a4f3b8fd
+3bb573e940b50987abe4a70ae1af1c53d39b4a41f6f63c4174594354866cf184
+ceea0d9409123af1d77a616f573c3e4865f213560aaadf21a249bf060abb596d
+59f2006d14e7d4b946eed74000468a3cf9aa5d3797b7066b1a88cde5a9397eed
+e04a0c7c033cc7b36a241409e06f1b729835cef710fb06ed5ceeb3618e69de94
+352bea006104e5cd797f7a5103f29ae04957267248580f987c6ffbfa19ee92d8
+a4ce7b316a10219fa79a9adb75ffca7f01c0677c88b00d9bf7e8ce1d73ffd4e9
+aef1653a2a49481daa2fbd320cabda39bda245a87c6aaa2eff6173e4f60dccae
+f2eb4cadb8c5b025e102a7560072f5f0f2141a27af8143041f530ea24677d022
+172e1182e9f6aaf66a94de32909ab6c472af22067134681618ded359b3eedcfd
+e75927bd41bd217321a6d2d478502829c1c294cdd36531a93b86e787d8fbd545
+4bc107137ce16c38169e377dc1993f40894890efe7a002c01deac8a23877c998
+8a74aa76df26dce9425f220ef88dca6feabada2c76606cf8a476bf0529e34b01
+f336016339daeb3f4e673b48e5cec15ee30cdd5b4098a01890cf4c2c02c671fe
+7cf9fe1e1207308484f736c7c31d7d24cda3ab8d0ea2fe05c954aef7326179f0
+3c97f0ce876d72e2acf7f1d2fe76a5740b85a77bc7ac2268a516e594cabd0566
+63c4c44a2adfa312052bc3a1220661cd4172998c869c75382358e64605788b97
+e6691a34af1455aa21598a54757da92f6fa6181d887bf25a1cf8f122d1656cc6
+327d12bc9355a0c6a08ef31e23927f365dd2a2976221741ee7cc91c586a779b0
+6eb96c4775f16f7785f987089386fa76bcfc734d4120429e42796194b27dbe90
+47dae2b32331f0ee516ac604047ba377a208cf499c96314c628b36decafaece7
+1f026572f65ea53489f9b56cf0f316212301bf3aea669bee7000be0a1c203313
+045b667c794462ebc4fbd3aac54b8b8e9cd6419a99f19e8a50e98596c123ae3d
+09e4fbba5eb0391fb003c386922b7610ac450d22c763903320b9f12875090250
+05fa575831a6995af29a356fc1040f5fd7b17a47320f520d73e34f077ddbdecb
+7a28accc4cc3e035e50325af19f07a258503d9d3e19bc08711cd729c386e9a1b
+2eea6ce44b6b8f06bd8c97fbb95ebe44f97df2c30b09767cf3f9fb5f3fb7f664
+1557272a778c03670c6256f4dbc6d6ef4c41ef49d16aa8e015d68d2917d36a69
+0e2c8b2b6cde986c4e3f0b5293e0651117042927fcbb05fbbf8fc9e6ab60e2f8
+b6e0287f3d35cccb3d5932d374651dcb4407bc83a9fdf41db20f2b8d69792c11
+58241dad2df1f8f3ce24be0995b3e0dd450ddeb3fe04842cbbcbd1e206e2db47
+6194190037019f3126775eb1ebb0638b5862a44d0e0710449080ac9b71ef6c04
+db961ea9012fbe5d257c4f3948f80e7334e948b802513fee1762af3f3351972e
+e68d2802192664947180154fc9c12b254188ccf1e6c0bff0548387d845391a31
+422513c629970b97955d9c21f503f4ddb285659e9b7bd416e71fa5f8492e8f70
+6d108b6ddc78f9e1ce7e608f39ba62c59fff748ccee05e7c8465d7af6c86db00
+ba791492a33a29588671e6f1587e7f454a16a455d010d163985ac0d64f1c81d2
+fddd82272d715233dc78afcf167055fbcd296d946e591b3ba2de023d762e1a1c
+9a004b04f78b92f319deaa55ea617d2ce7d6d0ca543680fe3c44d7cb1576c74e
+4a602058e8ad23c496ff6d751aa12ca84725e286673e8575e1582ac084f57599
+58ba746ae65f301826009f174ed5f84ae532186d307f06ad032b8dde60f267d2
+ddb31499b4fc72b86294f3af6bb9ad94211753c96ac3874faa78c71ebb75d6ba
+631daa22e9e7025800f51b07140609609d13abffe93c9418c14e271bd9d152b2
+fdb20d5f100dc1223cb5524fba332b6d6fe2dedbf8d95408c1e4c2665f3520f4
+4562cf8d53d814d8940cfc09fd44bb535a3f424cc2608d430f0473d5ec24f84a
+e980ac9b195a0d241055563c144a7d6b01e620fb0974fb19b1f002e9bdb0dbea
+647ed7338ffb7429644081f3195b99f179c21b2f0b304197298436aba1464441
+855e59f6509463d7421a8cca424cae47445fe1a49c6be98af7d260cfe1613c47
+8a9b9fbbd01bfd7a67daebdaac91b8be968e7db9e6c465707247f12646933a89
+badee65d05e6acfd8d5d8c17a5d87466a964d616ef7865901c27b7078a6ae463
+aacc81718c33485b8097a6554ed192f105c6c13e6f45752130ae8b59cd205045
+89a08431ea33cdc3f5dde2ff697bacaa46a09a007483ecd80509251a9773d471
+3dfc2c8df6e43c5adc953c094b3d18d5799165874c6b9f2013a45b6a5ce8aeec
+54480ab5984b6ed379efd1cf9841b82d088fc85044229939ce87fee295bc13a4
+a119e6e739b8f4130535b28d1996b8f82f9ee88636f2f21cdf41ee15919de125
+86b200b251a715570e13531b8bfbd7e474992bab85600a5c9c1ecfe9144716f9
+f03bffc2da9e66b1ee580e0c0ce774e4ad31339646a3833d229de3bf30e72fef
+ae69fba8d6f4c057dde1b75b61702bf30699f5c7f25860d59e93096abf783255
+9b3f3378f256063ec634b37f33330c52a7da301c3f83972fc0e80634c191320e
+09ad5f880f407cb058a204803556944127bc97e92f837d3345fa5c4c1fa077a6
+d60000bad11ee5e381605b9e2012d35f54e183714865dad0d466cfb78f648f58
+fb3250931531737edaaca579c9452f324493d2e6d86f1a8367ec3a07b58cecb0
+7c88d41cefd52d7341d872470fcf10c46e1f655793314176061fc53bf0fabcc7
+cb8cd7ac945596fb31d615138597bf55a14948b8cf96d49bca8b20182caa7bfa
+6b8e676454a5b23197ecdfff778a07658921400b1c0c913b31a86808cfde3d62
+7ec78955f93190395dd7789c7f7b081f6994f6f4367ac1de00014a330b1d754f
+a595530e09a9f11c3879365d3c02c1cf952bcfcbd204d1f7b29d5d12795d133a
+a615841a22568d7a4e3e3d8e3971979eedb1415c464f87199b309422e5447f6c
+33687154d833990b257e520219db21848921b86aa790457bee6ff1c98fc0aae5
+1726f85d38938ac033ba81b3eea99ea55b54524882f87468d7a47a5db4758094
+440c64c63192306a5e2d24a2d6ec084957b153b69e196ce0b004ef999b67e8fb
+419c92b1ebb316a8871969468669c9da81d4514f330ed24fe35b33324d354f36
+9bdd6fd1d4d42eef617ea47df0008cc9d6a022f7938ce66e8550d55d3e16d69a
+fee87f3b013fb82b5fe78763ad3ce2fb09723f6b66f1079af560f80d5c4155fa
+0952a1a8a1f6822456fd9657cffaaab0b29fc4c1895738a1f869927bdfeff106
+14e03c46dcd8f851eaedf459b471cf7734e47e473064cc593e53667e8499be16
+00c4a67344796d4c682685d166bd1ae13ea41b0b8365b40c59041e002f23753b
+fd39e164dbe9d65ed5676102b0994e03c5925365692a931ad7adb02d14d90a9e
+a088a30ec623dee253f91b57bc4891c3c6e39a6a5b2a60e455bf37f0a3c4f145
+b6164ba2779054757491fdd8d4bfd85f60e7c22552be4c4c645cc56aadd01834
+ae94a0024d678f5d09b1d140f46fa6c3e2bef296f780e502d04342f1184bfee3
+ca51924a019458a968a3cf6dfd1f2b6c509b0e05f1de7f683f54b9f570322f25
+db120eee272cbe88926ef0a47de2afbcfb7d9a9b7eb5f86b6978174d019cc60f
+9eb2ca9597661aa0a683a62e2a5ae779aec531dbe59e94804b0e629c77ae6c69
+338a77df8a9c72e90631a26c6d5f7c20af28295b0bff9aa160397cc096067dfd
+a54c370a8cfd4841cc01e4c6c7353d24109a3b954058feffea12c91b2bfa51b1
+43e9cca752feece762d1832687e1193ab308ff05658c94240e1fac962be5ad62
+32eed5b6b197fc51799522d59f1cdbf260eb65b499ad46d614c7cf39f6c31e53
+ec056efbb67a2c52dd7f8c0b5b3e7bcc1d51fa69f604ab2fb16cab8fcdc35eae
+287561e68d79db6b0f272ba63b1f579f180852b5f18cd68d7546773e5284518d
+2358bbad103d07cb154f9b9e16f1e1f373ded7165fd05343a965ea1304d8a274
+eff21a5f0ab5738bde25d08943837097347b5f9fe58f6300cd446f0b6d324c33
+ac21bbf9d6a2387ec8d9d745fcfcbacbdf5c576e37005cc5db44279e3cb4a5a4
+e1097f26244e7e8b6d5c3719207b2a674e7bb9498a497385be85e1e87459f5a3
+1fea23efebae059cada2939861ccd4e3f54f8a25e47214d32a989ffc135ae9d5
+450d3bef9441b27b61e7759ca8dd91cdd33d50a6e015102b6014143d6b1e6f17
+644e5a5225f45bb60eb6743dc0e6bd9d00eb842d127b77bdaeddac8bffd89bbc
+1b5216a4eac457be878c61d2d0ffa966060c311d18369fa4ee02981b12d28dc9
+414a23d4f462515102aec5b214df885d85e0bd02c1604a7fc6db771e2687271b
+b4725c4393253b2883e2fe52d14ecd4f3af2f6f974637516158296f0978bf05b
+cffc12818184e8f01e8b8362ce21338cbc5f63c406e556b61fc41cb4cbb322fb
+c3a515eafa92e9a4dbea40cf8044606a9ab0aba770da0d9abe6965e1ad238455
+fce388d045cfa32b39b03574153da8163a55eb8fbfb010b393445dbdf387fb03
+9587cae123f5c47ca16c57c014e46575e141598773f3ac3f70719e87ef079e81
+60087c38eb27b5a224124131239b74e4fd480fedb0b7cc9b1382d0b0af2b892b
+788d7b665ce8df9b278918f337d37bee45e6764916ac03ac500bcbafde39db88
+b3ccdb89f135e6a2b868142a0b48d538aa95baff7082c113ddafc9b6486a550a
+86e21af5024543a2829b1cf83d8791910f56e4d9569e09e4f15f0f763c32a82e
+5106c9b12161eb980153a4afca8f46d6710e46027b70caddc6aeffd801340fcc
+57976de2ced1d500711e7dc3b2902de9726ed53a54decd233d9c7c3f6bbcd152
+f3e9ab1240bc031f5b0183c3761eea9cdeedef1012b880ec6c49c695958ffb7d
+1d5f5f91d950cde64d69a2595cddbc3874b0f1bc92d2a4b9e698d0871b61cd63
+558049dd5ee3405333e2c7127060ad964d8161da9e7acd7c6258e88da129ecab
+05c90303643bdb07f1013471dc7164667dce4e5fc72b5f2b3e32b1e1b4651125
+f01b41ddd36968f5f841d86382ad795e9b6a1cacd428860bf30b300daf8a707a
+60492c35bc168147c8189641009a5b7ce2eea00077915e9f6a100a4aeb144621
+3a0914d89ff1b3f707f9b04931df35a21f068a020ef49d38f848d8655878b701
+38ccbc73a6de269c2f1595851dddc21f5246e69c91ae790c525b340de1a73fe0
+1a9adea2df87e8429a5f9041f8ad6f60530f56bc728caf4e6cf7633f7d2eb520
+a6381ca317d38817f167577d7fe39ef14928cc3da8aeb6916e9866f5bbb03859
+b1ffda107593bb895d17513649a264c64d83f36ef6d6e6e39b46b8a5fb5e6077
+eaf0aee4608de9d6d6970867e84fcd42dcf04aab183bb0805942c69264ccdc1c
+fa19d223b3f962321cfc292f749f98cd23d2f8ffbf3a66fd46b5eb88a66df56c
+6a43c369c4091e7e0302a31f8e180023333173957b655849d80467804629db2d
+931974066b00df77b6350c4c05ecdaa19ad295bc28b45c7a63a9e339c8d3919b
+702465191fdac1d119236b39a4da4c5e57a60386c8f04a51c33ac95b95c3b7da
+7105aea46b6a7c5588aec96340ad3fa064df0d46fe0e14031ae1b032281aee4d
+fc635d3960b021094e02dda914f74e4bec7ff69abca0fc2c86e3dd241579dbb7
+93844d628487bc8d22160b524a17232051729f6cedd16aa96d71bac1797b3c27
+5935d77cda191812ad93907cb4c9676f7aa66e71794c0d98f0e64cb0345752ef
+b29bbfce32e2d099f3c58bf61110ac00f96f5beb8c2e0fc2675bec32d3c5cc58
+0fc8176e623d9dd85ff765069c0235229b98470ce8a73fc31afdb0ed8ba2e9ca
+07a462ba82d3a4df5e6f43b62d6d68dfe745f79d84e9cb0998fe99b8deefee97
+6b8fa5708fb6c3a28cf7889d33c18813b03fb06e9a228b0e930a5c8a3f536432
+1655c455c28eacfecbf7986e993721ba7c1c9993f6d2d259003c4dccee4bbbea
+b47643b5e27ae06e198399222710f410fa5e469496b2e30f221d6f557e5684e0
+dc732bf4858489d788a896a8c8cbc1d91fd19056e848a3c7f61321cd4d500a18
+b8135863b4dda1c12d1212a90930bd692ff71c68e2af5a6ec1d4fa86d3a7b9e3
+b6069414e32907a573c66381a9ff857ba9600f351b33f49a9ea7cc9f91899afc
+c96c4ffa8cfe7f75323fe0a4baaf80c8ad643ec535643df50acdc2ff4e7c6563
+9bbfa93ba84af68eebf708e0a69ee3862e87c70c200bcb7e8c54f6582e7832dc
+3a6554718827967eeb0dd3809265de5c5e79d9c344ad96bba5bf360c766418c4
+3f410cec74940d0670a800eb5a74faf39c1475895e9b7d4c5228b31b752c1dfc
+b4f3d53324e8d7dbc46e8a4327b71bef414ff5f32e4a199822a510702b8e2e2f
+fe9ea7852930c52c950f9e915d722ceda65753ed4ef4aa1867dc3661cd94c34f
+1865b11fe7054c74d2222d3a673858dc243bba146cdce4121050958c697afa64
+5037967daad3cedbdc765cfc84e66fded9a6ba666289f2dd43abf8cd5bf6c433
+4ae02e3370bd35f05b1834be89ab27d1c8007b19058ed9252cdae373217e1f61
+e4daf14d3920dbc68990bb4a83212adbc2492bbdcd23117106bf7a8b75dc4060
+8d9fda78b01cdc09021b1f52352728a6013ddd0d075d9cc9b28da2eb9401c6a4
+5974799fec7e5041837d4491dc39f428dfd8bab31d750038ed650df9043857b5
+29a0838a414f5c9f93ffb73c2b379445096667ba96681345c099774780ee6faa
+fe48864142e539cc4c1b2d8b1a6da0847904c3c2258f7d3d54d24be7548dd2f3
+36773c33078366f7ace13bca1589553bb7c961b7493aa451c0572a1a166246f5
+7bf725717185c28a48421f6d8d1b6de35c6bf0e8fa3ffaf77270d4e5c81e577b
+d827c38a40ed0ccf8289fcb22d848b1295b898916168a7a9379d030bf02b1762
+9cad21cafbb667a7e00dbc1a4d2d5188c81e44d88807665dc606f27523e1bc04
+67151693486ef9aa9c1f773f87333de877f773cd501699ec92cdfb70dc5578ea
+ca8d1a94159c02d22d2af0560137ce6335cc45ce566afb5928953dc91e3ef804
+a04a8f29fcf58248b8bb19a4482962241d43b02b1ae7ef52359cb079522948d9
+abaf7f6c05f31f9f18e71cc460c0e290bcd8a10edd52d7b2ec17f6c0cbfcd6ba
+41a2339c365645f3cb027cf1832944961bf5ec1720807b31922964faec3e30d5
+ca4458e517ea0d295e047936841f7fbfad5265b5a05259e6ef3f0b18394774d9
+b249921abfd6c0376ffe5d889773a811546f6a92f6d9e8d2a71a08263b217bcc
+a3620e82d5e42b3529c26527560e8e624b700b448222bebcdc507f47706c9a74
+78f5f8d0a80b4fbdf0a6757425e25bfbaf91bdf798567dddebcda9ae6ec96058
+ebd6912552847811e9c4e1db90951fda10172f0133d7681965e4f299130e3769
+4dcd066802fcc2d8a8a4396495579607a62c9fa20cd1fed9c2db40484238fcc9
+af7d309b5257534e98d2a1638586fba64555edfba8603f211c1e72095fd6108a
+51fd338534ff2a6148db79ccf39d26fd4d6bc1789c1c7b75c4b6e9b876bcdd98
+b27321ab47a4a5d1cd4f3ff5294257838c13210cfa8d9061d2d47d55ecfb50a1
+517fdb6caa85134fac835d6003d3f595420c1dec97a86ebe06193c077b5c3a9b
+2e6a0af68b89e3ee5a707f0ab8db3cfd1f234b82148497fb9694fda268a21835
+bb1246beb365724e1ef0c35f4acd244866b738599c9ad85263a5b135a13c1d31
+97eb28aedfc09f70940034ad32435164fe6164e6b87acc8119e6c2be85c31473
+f6cd9adb642736a31b0a8774635f551a32cf8e9459bf4d71cddf32fd37058860
+1cf22ec2e558d4765f99b7a66afa5a43f55d88a3568fff539d00e73449d35c7a
+377880b2bd7372f811d518cfa364f125a376f8a6ce235fcb35ccf828bad131e2
+e85545467be70b23ec91974e8814583546c7e023ca1694931cb5f8efe6236dd1
+6228d9847251ffe9ec0d617a54e4350bde36af3d185107
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+TeXDict begin 39158280 55380996 1000 8000 8000 (cvs_guide.dvi)
+ at start /Fa 139[684 684 4[684 8[684 684 2[684 19[684 8[684
+1[684 66[{}9 1328.35 /CMTT12 rf /Fb 167[922 88[{}1 1106.96
+/MSAM10 rf /Fc 135[540 2[569 398 404 401 1[569 512 569
+853 284 2[284 1[512 313 455 569 455 1[512 97[{}17 996.264
+/CMSL9 rf /Fd 222[284 33[{}1 996.264 /CMR9 rf /Fe 134[497
+2[497 523 366 371 367 2[470 1[784 261 2[261 523 470 1[418
+523 418 523 470 24[705 3[718 22[314 3[366 366 40[{}22
+885.568 /CMR8 rf /Ff 207[244 48[{}1 553.48 /CMSY5 rf
+/Fg 207[255 44[454 2[692{}3 774.872 /CMSY7 rf /Fh 141[1107
+1107 1107 738 738 19[615 1[1599 7[1168 24[738 738 738
+738 738 738 28[584 584 815 815 661 661 16[{}20 1106.96
+/CMEX10 rf /Fi 140[371 2[409 6[295 105[{}3 553.48 /CMMI5
+rf /Fj 134[449 3[523 334 418 411 406 456 437 547 786
+280 471 366 313 518 432 1[420 461 396 14[523 2[697 2[701
+844 1[744 8[669 3[692 454 1[263 59[{}28 774.872 /CMMI7
+rf /Fk 135[465 2[489 346 351 2[489 441 489 727 251 2[251
+2[274 4[441 9[892 3[489 643 4[796 15[680 8[441 1[441
+441 441 4[680 1[346 346 40[{}24 774.872 /CMR7 rf /Fl
+133[515 543 633 792 537 634 400 519 499 494 557 1[664
+972 330 576 456 381 638 528 542 515 576 479 475 585 461
+8[1045 1[756 2[841 875 711 844 889 1074 753 940 614 487
+1[870 712 2[791 840 830 588 1[861 553 861 307 307 29[484
+633 572 2[547 667 646 3[550 1[449 492 573 626 708 11[{}61
+1106.96 /CMMI10 rf /Fm 147[581 2[581 6[581 98[{}3 1106.96
+/CMITT10 rf /Fn 135[492 7[922 4[553 307 2[553 553 47[0
+3[738 1107 16[1107 6[861 861 2[861 861 2[861 1[553 11[553
+861 307 861{}20 1106.96 /CMSY10 rf /Fo 133[664 789 789
+1079 789 830 581 589 610 789 830 747 830 1245 415 789
+457 415 830 747 457 682 830 664 830 726 10[1128 1148
+1039 830 1115 1122 1021 1122 1168 1418 898 1[772 557
+1[1175 939 981 1145 1079 1062 1128 7[747 747 747 747
+747 747 747 747 747 747 1[415 498 3[581 581 27[830 12[{}61
+1328.35 /CMBX12 rf /Fp 205[377 377 377 4[569 43[{}4 553.48
+/CMR5 rf /Fq 133[453 537 1[736 509 594 368 453 467 509
+566 566 622 905 283 509 339 339 566 509 339 509 566 509
+509 566 3[339 1[339 6[792 622 2[751 849 823 993 2[581
+427 823 2[751 836 792 1[823 16[566 1[339 396 1[849 4[849
+22[990 2[622 679 11[{}48 1106.96 /CMTI10 rf /Fr 133[797
+946 946 1295 946 996 697 707 732 946 996 897 996 1494
+498 946 548 498 996 897 548 818 996 797 996 872 10[1354
+1378 1247 996 1338 1[1225 1347 1402 1701 1077 2[668 1402
+1410 1127 1177 1374 1295 1275 1354 7[897 897 897 897
+897 897 897 897 897 897 1[498 598 5[498 26[996 12[{}59
+1594.02 /CMBX12 rf /Fs 137[679 679 654 507 667 1[617
+704 679 827 568 704 1[335 679 710 593 617 691 654 642
+679 8[901 2[901 4[821 1[901 1095 756 2[449 2[789 2[870
+21[418 45[{}30 1106.96 /CMCSC10 rf /Ft 139[1004 1[1055
+1[1435 7[1435 2[1178 3[1256 29[1865 9[1291 1291 1291
+1291 1291 1291 1291 1291 1291 1291 48[{}17 2295.84 /CMBX12
+rf /Fu 130[581 1[581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 1[581 1[581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 2[581 581 581 581 3[581 1[581
+581 581 581 581 581 581 581 581 581 581 581 581 581 1[581
+581 1[581 35[{}80 1106.96 /CMTT10 rf /Fv 133[1377 1635
+1635 2238 1635 1721 1205 1222 1265 1[1721 1549 1721 2582
+861 1[947 861 1721 1549 947 1414 1721 1377 1721 1506
+10[2340 2381 2155 1721 2311 1[2117 2327 2423 2939 1862
+2[1154 1[2435 1948 2034 2375 2238 2203 2340 65[{}42 2754.12
+/CMBX12 rf /Fw 128[553 2[1107 553 492 584 584 799 584
+615 430 437 434 584 615 553 615 922 307 584 338 307 615
+553 338 492 615 492 615 553 1[307 553 307 553 307 676
+830 1[1138 830 830 799 615 815 861 753 861 830 1015 692
+861 569 400 830 869 723 753 846 799 784 830 3[861 1[307
+307 553 553 553 553 553 553 553 553 553 553 553 307 369
+307 861 553 430 430 307 1[922 2[553 11[553 7[922 615
+615 646 9[922 1[{}89 1106.96 /CMR10 rf /Fx 132[636 566
+672 672 919 672 707 495 502 524 672 707 636 707 1061
+354 672 389 354 707 636 389 583 707 566 707 619 3[354
+1[354 1[962 962 1[962 979 886 707 955 956 870 956 996
+1208 766 1[658 483 996 1001 801 836 976 919 906 962 7[636
+636 636 636 636 636 636 636 636 636 1[354 424 3[495 495
+354 26[707 12[{}68 1106.96 /CMBX10 rf /Fy 134[631 1[863
+598 697 432 1[548 1[664 664 731 1063 332 2[399 1[598
+399 598 664 598 598 664 13[731 4[966 1[815 8[930 1[966
+52[731 12[{}25 1328.35 /CMTI12 rf /Fz 138[723 1[513 506
+1[723 1[723 1084 361 2[361 723 2[578 723 1[723 650 11[975
+1[723 957 4[1192 813 3[975 4[939 1[975 8[650 2[650 2[650
+650 650 1[361 434 45[{}28 1328.35 /CMR12 rf /FA 137[1173
+2[876 3[1216 9[1067 1194 1131 99[{}6 1912.83 /CMCSC10
+rf /FB 137[927 977 677 687 677 2[877 977 1477 3[478 2[527
+777 1[777 1[877 11[1326 16[1352 17[877 1[877 1[478 46[{}18
+1912.83 /CMR17 rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 8000dpi
+TeXDict begin
+%%PaperSize: A4
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop Black Black Black Black 12616 16051 a FB(User)579
+b(Do)50 b(cumen)-50 b(tation)579 b(for)g FA(cv)-43 b(odes)578
+b FB(v2.2.0)17257 20922 y Fz(Alan)434 b(C.)g(Hindmarsh)f(and)g(Radu)h
+(Serban)16542 22471 y Fy(Center)463 b(for)i(Applie)-66
+b(d)464 b(Scienti\257c)d(Computing)16374 24021 y(L)-66
+b(awr)g(enc)g(e)463 b(Livermor)-66 b(e)463 b(National)h(L)-66
+b(ab)g(or)g(atory)25020 27180 y Fz(April)433 b(2005)22816
+75432 y(UCRL-SM-208111)p Black Black eop
+%%Page: 2 2
+2 1 bop Black Black Black Black 19852 14944 a Fx(DISCLAIMER)0
+17379 y Fw(This)432 b(do)31 b(cumen)-31 b(t)433 b(w)-31
+b(as)432 b(prepared)e(as)i(an)g(accoun)-31 b(t)433 b(of)f(w)-31
+b(ork)432 b(sp)31 b(onsored)431 b(b)-31 b(y)432 b(an)f(agency)i(of)f
+(the)g(United)g(States)0 18708 y(Go)-31 b(v)g(ernmen)g(t.)467
+b(Neither)290 b(the)g(United)g(States)g(Go)-31 b(v)g(ernmen)g(t)290
+b(nor)f(the)h(Univ)-31 b(ersit)g(y)291 b(of)f(California)i(nor)d(an)-31
+b(y)290 b(of)g(their)0 20036 y(emplo)-31 b(y)g(ees,)423
+b(mak)-31 b(es)411 b(an)-31 b(y)412 b(w)-31 b(arran)g(t)g(y)-92
+b(,)423 b(express)409 b(or)i(implied,)423 b(or)410 b(assumes)h(an)-31
+b(y)411 b(legal)h(liabilit)-31 b(y)415 b(or)410 b(resp)31
+b(onsibilit)-31 b(y)0 21364 y(for)496 b(the)g(accuracy)-92
+b(,)529 b(completeness,)g(or)495 b(usefulness)h(of)g(an)-31
+b(y)497 b(information,)531 b(apparatus,)e(pro)31 b(duct,)528
+b(or)496 b(pro)31 b(cess)0 22693 y(disclosed,)409 b(or)400
+b(represen)-31 b(ts)399 b(that)i(its)f(use)g(w)-31 b(ould)401
+b(not)g(infringe)g(priv)-61 b(ately)402 b(o)-31 b(wned)401
+b(righ)-31 b(ts.)586 b(Reference)399 b(herein)h(to)0
+24021 y(an)-31 b(y)454 b(sp)31 b(eci\257c)452 b(commercial)k(pro)31
+b(duct,)474 b(pro)31 b(cess,)473 b(or)453 b(service)g(b)-31
+b(y)453 b(trade)h(name,)475 b(trademark,)g(man)-31 b(ufacturer,)476
+b(or)0 25349 y(otherwise,)329 b(do)31 b(es)318 b(not)g(necessarily)g
+(constitute)i(or)d(imply)j(its)e(endorsemen)-31 b(t,)329
+b(recommendation,)i(or)318 b(fa)-31 b(v)g(oring)320 b(b)-31
+b(y)0 26678 y(the)414 b(United)h(States)g(Go)-31 b(v)g(ernmen)g(t)415
+b(or)f(the)g(Univ)-31 b(ersit)g(y)416 b(of)e(California.)630
+b(The)414 b(views)h(and)f(opinions)h(of)f(authors)0 28006
+y(expressed)439 b(herein)h(do)h(not)g(necessarily)f(state)h(or)f
+(re\260ect)h(those)f(of)h(the)f(United)i(States)f(Go)-31
+b(v)g(ernmen)g(t)441 b(or)g(the)0 29334 y(Univ)-31 b(ersit)g(y)371
+b(of)e(California,)k(and)d(shall)g(not)g(b)31 b(e)368
+b(used)h(for)g(adv)-31 b(ertising)371 b(or)e(pro)31 b(duct)369
+b(endorsemen)-31 b(t)370 b(purp)31 b(oses.)1660 33319
+y(This)399 b(researc)-31 b(h)398 b(w)-31 b(as)399 b(supp)31
+b(orted)398 b(under)f(the)i(auspices)f(of)h(the)g(U.S.)g(Departmen)-31
+b(t)399 b(of)g(Energy)g(b)-31 b(y)399 b(the)f(Uni-)0
+34648 y(v)-31 b(ersit)g(y)346 b(of)g(California,)354
+b(La)-31 b(wrence)346 b(Liv)-31 b(ermore)346 b(National)i(Lab)31
+b(oratory)346 b(under)f(con)-31 b(tract)347 b(No.)485
+b(W-7405-Eng-48.)p Black Black 9377 81545 a(Appro)-31
+b(v)g(ed)370 b(for)g(public)f(release;)h(further)f(dissemination)i
+(unlimited)p Black Black eop
+%%Page: 3 3
+3 2 bop Black Black 4000 15843 a Fv(Con)-86 b(ten)g(ts)4000
+22735 y Fx(List)424 b(of)h(T)-106 b(ables)39085 b(vii)4000
+25198 y(List)424 b(of)h(Figures)38877 b(ix)4000 27661
+y(1)1024 b(In)-35 b(tro)35 b(duction)38687 b(1)5660 29006
+y Fw(1.1)1133 b(Historical)372 b(bac)-31 b(kground)948
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+f(.)p Black 2094 w(1)p Black 5660 30351 a(1.2)1133 b(Changes)370
+b(from)g(previous)g(v)-31 b(ersions)587 b(.)554 b(.)g(.)g(.)g(.)g(.)f
+(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)f(.)p Black 2094 w(2)p Black 5660
+31696 a(1.3)1133 b(Reading)371 b(this)e(user)f(guide)1022
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)
+p Black 2094 w(2)p Black 4000 34160 a Fx(2)1024 b(CV)-35
+b(ODES)426 b(Installation)e(Pro)35 b(cedure)27473 b(5)5660
+35505 y Fw(2.1)1133 b(Installation)373 b(steps)694 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 2094 w(5)p Black 5660 36850 a(2.2)1133
+b(Con\257guration)372 b(options)1044 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 2094
+w(6)p Black 5660 38195 a(2.3)1133 b(Con\257guration)372
+b(examples)1013 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)f(.)p Black 1540 w(10)p Black 4000 40658
+a Fx(3)1024 b(Mathematical)424 b(Considerations)28718
+b(11)5660 42003 y Fw(3.1)1133 b(IVP)370 b(solution)1093
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
+(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(11)p Black 5660
+43348 a(3.2)1133 b(F)-92 b(orw)-31 b(ard)370 b(sensitivit)-31
+b(y)371 b(analysis)730 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)f(.)p Black 1540 w(14)p Black 8206 44693 a(3.2.1)1270
+b(F)-92 b(orw)-31 b(ard)369 b(sensitivit)-31 b(y)371
+b(metho)31 b(ds)330 b(.)554 b(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(15)p Black 8206 46038 a(3.2.2)1270 b(Selection)371
+b(of)e(the)h(absolute)g(tolerances)g(for)g(sensitivit)-31
+b(y)371 b(v)-61 b(ariables)975 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+f(.)p Black 1540 w(16)p Black 8206 47384 a(3.2.3)1270
+b(Ev)-61 b(aluation)372 b(of)d(the)h(sensitivit)-31 b(y)371
+b(righ)-31 b(t-hand)371 b(side)485 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540
+w(16)p Black 5660 48729 a(3.3)1133 b(Adjoin)-31 b(t)372
+b(sensitivit)-31 b(y)371 b(analysis)1059 b(.)554 b(.)g(.)g(.)g(.)g(.)g
+(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(17)p Black
+8206 50074 a(3.3.1)1270 b(Chec)-31 b(kp)31 b(oin)-31
+b(ting)372 b(sc)-31 b(heme)732 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)f(.)p Black 1540 w(19)p Black 5660 51419
+a(3.4)1133 b(BDF)369 b(stabilit)-31 b(y)372 b(limit)f(detection)909
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(20)p Black 5660 52764 a(3.5)1133 b(Ro)31
+b(ot\257nding)700 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540
+w(21)p Black 4000 55227 a Fx(4)1024 b(Co)35 b(de)427
+b(Organization)34587 b(23)5660 56572 y Fw(4.1)1133 b(SUNDIALS)369
+b(organization)437 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)f(.)p Black 1540 w(23)p Black 5660 57917
+a(4.2)1133 b(CV)-31 b(ODES)370 b(organization)560 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(23)p Black 4000 60381 a Fx(5)1024 b(Using)426
+b(CV)-35 b(ODES)426 b(for)f(IVP)f(Solution)26407 b(27)5660
+61726 y Fw(5.1)1133 b(Access)369 b(to)h(libraries)f(and)h(header)f
+(\257les)864 b(.)554 b(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(27)p Black 5660 63071 a(5.2)1133 b(Data)370
+b(T)-31 b(yp)31 b(es)723 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(27)p Black 5660 64416 a(5.3)1133 b(Header)370
+b(\257les)765 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540
+w(28)p Black 5660 65761 a(5.4)1133 b(A)370 b(sk)-31 b(eleton)370
+b(of)g(the)f(user's)g(main)h(program)779 b(.)554 b(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 1540 w(29)p Black 5660 67106 a(5.5)1133
+b(User-callable)371 b(functions)f(for)g(IVP)f(solution)983
+b(.)553 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(31)p
+Black 8206 68451 a(5.5.1)1270 b(CV)-31 b(ODES)370 b(initialization)k
+(and)369 b(deallo)31 b(cation)373 b(functions)1009 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(31)p Black 8206 69796 a(5.5.2)1270 b(Linear)369
+b(solv)-31 b(er)370 b(sp)31 b(eci\257cation)370 b(functions)1037
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(32)p Black
+8206 71141 a(5.5.3)1270 b(CV)-31 b(ODE)370 b(solv)-31
+b(er)369 b(function)792 b(.)554 b(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 1540 w(35)p Black 8206 72487 a(5.5.4)1270
+b(Optional)371 b(input)f(functions)364 b(.)554 b(.)g(.)g(.)g(.)g(.)f(.)
+h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(36)p Black 8206
+73832 a(5.5.5)1270 b(In)-31 b(terp)31 b(olated)370 b(output)h(function)
+1013 b(.)554 b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black
+1540 w(46)p Black 8206 75177 a(5.5.6)1270 b(Optional)371
+b(output)f(functions)549 b(.)554 b(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+f(.)p Black 1540 w(46)p Black 8206 76522 a(5.5.7)1270
+b(CV)-31 b(ODES)370 b(reinitialization)j(function)1105
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(59)p Black
+5660 77867 a(5.6)1133 b(User-supplied)369 b(functions)1093
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)
+p Black 1540 w(60)p Black Black 27539 81188 a(iii)p Black
+eop
+%%Page: 4 4
+4 3 bop Black Black 4206 6974 a Fw(5.6.1)1270 b(ODE)369
+b(righ)-31 b(t-hand)370 b(side)483 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)
+f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(60)p Black
+4206 8383 a(5.6.2)1270 b(Error)368 b(w)-31 b(eigh)g(t)372
+b(function)1022 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+f(.)p Black 1540 w(61)p Black 4206 9793 a(5.6.3)1270
+b(Jacobian)370 b(information)j(\(direct)d(metho)31 b(d)370
+b(with)g(dense)f(Jacobian\))1096 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)f(.)p Black 1540 w(61)p Black 4206 11202 a(5.6.4)1270
+b(Jacobian)370 b(information)j(\(direct)d(metho)31 b(d)370
+b(with)g(banded)f(Jacobian\))1103 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)f
+(.)p Black 1540 w(62)p Black 4206 12612 a(5.6.5)1270
+b(Jacobian)370 b(information)j(\(SPGMR)c(matrix-v)-31
+b(ector)371 b(pro)31 b(duct\))334 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)f(.)p Black 1540 w(63)p Black 4206 14022
+a(5.6.6)1270 b(Preconditioning)372 b(\(SPGMR)d(linear)h(system)f
+(solution\))508 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)f(.)p Black 1540 w(64)p Black 4206 15431 a(5.6.7)1270
+b(Preconditioning)372 b(\(SPGMR)d(Jacobian)i(data\))851
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)f(.)p Black 1540 w(64)p Black 1660 16841 a(5.7)1133
+b(In)-31 b(tegration)372 b(of)e(pure)e(quadrature)i(equations)389
+b(.)553 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(65)p
+Black 4206 18250 a(5.7.1)1270 b(Quadrature)369 b(initialization)374
+b(functions)665 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black
+1540 w(67)p Black 4206 19660 a(5.7.2)1270 b(Quadrature)369
+b(extraction)i(functions)1001 b(.)553 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(68)p Black 4206 21069 a(5.7.3)1270 b(Optional)371
+b(inputs)f(for)f(quadrature)h(in)-31 b(tegration)291
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)f(.)p Black 1540 w(69)p Black 4206 22479 a(5.7.4)1270
+b(Optional)371 b(outputs)f(for)f(quadrature)h(in)-31
+b(tegration)476 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(70)p Black
+4206 23888 a(5.7.5)1270 b(User-supplied)369 b(function)h(for)f
+(quadrature)h(in)-31 b(tegration)467 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(71)p
+Black 1660 25298 a(5.8)1133 b(Ro)31 b(ot\257nding)700
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(71)p Black
+4206 26707 a(5.8.1)1270 b(User-callable)370 b(functions)h(for)e(ro)31
+b(ot\257nding)871 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(71)p
+Black 4206 28117 a(5.8.2)1270 b(User-supplied)369 b(function)h(for)f
+(ro)31 b(ot\257nding)933 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black
+1540 w(72)p Black 1660 29527 a(5.9)1133 b(Preconditioner)371
+b(mo)31 b(dules)994 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)f(.)p Black 1540 w(73)p Black 4206 30936
+a(5.9.1)1270 b(A)369 b(serial)h(banded)f(preconditioner)h(mo)31
+b(dule)385 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(73)p Black
+4206 32346 a(5.9.2)1270 b(A)369 b(parallel)i(band-blo)31
+b(c)-31 b(k-diagonal)373 b(preconditioner)e(mo)31 b(dule)852
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(76)p Black 0 34916 a Fx(6)1024 b(Using)426
+b(CV)-35 b(ODES)426 b(for)f(F)-106 b(orw)-35 b(ard)425
+b(Sensitivit)-35 b(y)424 b(Analysis)17772 b(83)1660 36326
+y Fw(6.1)1133 b(A)370 b(sk)-31 b(eleton)370 b(of)g(the)f(user's)g(main)
+h(program)779 b(.)554 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(83)p Black 1660 37735 a(6.2)1133 b(User-callable)371
+b(routines)f(for)f(forw)-31 b(ard)370 b(sensitivit)-31
+b(y)371 b(analysis)570 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(85)p Black
+4206 39145 a(6.2.1)1270 b(F)-92 b(orw)-31 b(ard)369 b(sensitivit)-31
+b(y)371 b(initialization)k(and)369 b(deallo)31 b(cation)372
+b(functions)730 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(85)p Black 4206 40555 a(6.2.2)1270 b(F)-92
+b(orw)-31 b(ard)369 b(sensitivit)-31 b(y)371 b(extraction)g(functions)
+788 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(87)p Black 4206
+41964 a(6.2.3)1270 b(Optional)371 b(inputs)f(for)f(forw)-31
+b(ard)370 b(sensitivit)-31 b(y)371 b(analysis)699 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(89)p Black 4206 43374 a(6.2.4)1270 b(Optional)371
+b(outputs)f(for)f(forw)-31 b(ard)370 b(sensitivit)-31
+b(y)372 b(analysis)883 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)f(.)p Black 1540 w(93)p Black 1660 44783
+a(6.3)1133 b(User-supplied)369 b(routines)h(for)f(forw)-31
+b(ard)370 b(sensitivit)-31 b(y)372 b(analysis)1055 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(97)p Black 1660 46193 a(6.4)1133 b(Note)371
+b(on)e(using)h(partial)h(error)d(con)-31 b(trol)847 b(.)554
+b(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(98)p
+Black 0 48763 a Fx(7)1024 b(Using)426 b(CV)-35 b(ODES)426
+b(for)f(Adjoin)-35 b(t)425 b(Sensitivit)-35 b(y)423 b(Analysis)17511
+b(101)1660 50173 y Fw(7.1)1133 b(A)370 b(sk)-31 b(eleton)370
+b(of)g(the)f(user's)g(main)h(program)779 b(.)554 b(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 987 w(101)p Black 1660 51582 a(7.2)1133
+b(User-callable)371 b(functions)f(for)g(adjoin)-31 b(t)371
+b(sensitivit)-31 b(y)371 b(analysis)364 b(.)554 b(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black
+987 w(103)p Black 4206 52992 a(7.2.1)1270 b(Adjoin)-31
+b(t)371 b(sensitivit)-31 b(y)371 b(allo)31 b(cation)373
+b(and)c(deallo)31 b(cation)373 b(functions)720 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987
+w(103)p Black 4206 54402 a(7.2.2)1270 b(F)-92 b(orw)-31
+b(ard)369 b(in)-31 b(tegration)372 b(function)961 b(.)554
+b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987 w(104)p
+Black 4206 55811 a(7.2.3)1270 b(Bac)-31 b(kw)g(ard)371
+b(problem)e(initialization)375 b(functions)649 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)f(.)p Black 987 w(105)p Black 4206 57221 a(7.2.4)1270
+b(Linear)369 b(solv)-31 b(er)370 b(initialization)k(functions)c(for)f
+(bac)-31 b(kw)g(ard)371 b(problem)1126 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)f(.)p Black 987 w(107)p Black 4206 58630 a(7.2.5)1270
+b(Bac)-31 b(kw)g(ard)371 b(in)-31 b(tegration)372 b(function)1056
+b(.)554 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987 w(108)p
+Black 4206 60040 a(7.2.6)1270 b(Optional)371 b(input)f(and)f(output)i
+(functions)f(for)f(the)h(bac)-31 b(kw)g(ard)370 b(problem)662
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987 w(109)p
+Black 4206 61449 a(7.2.7)1270 b(Bac)-31 b(kw)g(ard)371
+b(in)-31 b(tegration)372 b(of)d(pure)g(quadrature)h(equations)425
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 987 w(112)p Black 4206 62859 a(7.2.8)1270 b(Chec)-31
+b(k)370 b(P)-31 b(oin)g(t)371 b(Listing)f(F)-92 b(unction)656
+b(.)554 b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987
+w(114)p Black 1660 64268 a(7.3)1133 b(User-supplied)369
+b(functions)i(for)e(adjoin)-31 b(t)371 b(sensitivit)-31
+b(y)372 b(analysis)849 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)f(.)p Black 987 w(114)p Black 1660
+65678 a(7.4)1133 b(Using)370 b(CV)-31 b(ODES)370 b(preconditioner)g(mo)
+31 b(dules)370 b(for)f(the)h(bac)-31 b(kw)g(ard)371 b(problem)778
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987
+w(119)p Black 4206 67087 a(7.4.1)1270 b(Using)370 b(the)f(banded)g
+(preconditioner)i(CVBANDPRE)926 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987 w(119)p Black
+4206 68497 a(7.4.2)1270 b(Using)370 b(the)f(band-blo)31
+b(c)-31 b(k-diagonal)373 b(preconditioner)e(CVBBDPRE)726
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987
+w(120)p Black 0 71068 a Fx(8)1024 b(Description)426 b(of)f(the)g
+(NVECTOR)g(mo)35 b(dule)22923 b(123)1660 72477 y Fw(8.1)1133
+b(The)370 b(NVECTOR)p 12235 72477 333 45 v 400 w(SERIAL)f(implemen)-31
+b(tation)672 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987
+w(127)p Black 1660 73887 a(8.2)1133 b(The)370 b(NVECTOR)p
+12235 73887 V 400 w(P)-92 b(ARALLEL)369 b(implemen)-31
+b(tation)534 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987 w(129)p
+Black 1660 75296 a(8.3)1133 b(NVECTOR)371 b(functions)f(used)f(b)-31
+b(y)369 b(CV)-31 b(ODES)610 b(.)553 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 987 w(131)p Black 0 77867 a Fx(9)1024 b(Pro)-35
+b(viding)425 b(Alternate)h(Linear)e(Solv)-35 b(er)425
+b(Mo)35 b(dules)20258 b(133)p Black 23554 81188 a Fw(iv)p
+Black eop
+%%Page: 5 5
+5 4 bop Black Black 4000 6974 a Fx(10)388 b(Generic)425
+b(Linear)g(Solv)-35 b(ers)425 b(in)f(SUNDIALS)23281 b(137)5660
+8302 y Fw(10.1)580 b(The)370 b(DENSE)f(mo)31 b(dule)730
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 987 w(137)p Black 8206 9631 a(10.1.1)717
+b(T)-31 b(yp)31 b(e)369 b Fu(DenseMat)518 b Fw(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 987 w(137)p Black 8206 10959 a(10.1.2)717 b(Accessor)368
+b(Macros)867 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)f(.)p Black 987 w(138)p Black 8206 12287 a(10.1.3)717
+b(F)-92 b(unctions)747 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987 w(138)p
+Black 8206 13616 a(10.1.4)717 b(Small)371 b(Dense)d(Matrix)i(F)-92
+b(unctions)1061 b(.)554 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 987 w(138)p Black 5660 14944 a(10.2)580 b(The)370
+b(BAND)f(mo)31 b(dule)376 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987 w(140)p
+Black 8206 16272 a(10.2.1)717 b(T)-31 b(yp)31 b(e)369
+b Fu(BandMat)1099 b Fw(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
+(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)f(.)p Black 987 w(140)p Black 8206
+17601 a(10.2.2)717 b(Accessor)368 b(Macros)867 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 987 w(140)p Black 8206 18929 a(10.2.3)717 b(F)-92
+b(unctions)747 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987 w(142)p Black
+5660 20257 a(10.3)580 b(The)370 b(SPGMR)e(mo)31 b(dule)461
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 987 w(142)p Black 4000 22693 a Fx(11)388
+b(CV)-35 b(ODES)426 b(Constan)-35 b(ts)33137 b(145)5660
+24021 y Fw(11.1)580 b(CV)-31 b(ODES)370 b(input)g(constan)-31
+b(ts)764 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+f(.)p Black 987 w(145)p Black 5660 25349 a(11.2)580 b(CV)-31
+b(ODES)370 b(output)h(constan)-31 b(ts)948 b(.)554 b(.)g(.)g(.)g(.)g(.)
+g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 987 w(145)p
+Black 4000 27785 a Fx(Bibliograph)-35 b(y)38950 b(149)4000
+30220 y(Index)42939 b(151)p Black 27708 81188 a Fw(v)p
+Black eop
+%%Page: 6 6
+6 5 bop Black Black Black Black eop
+%%Page: 7 7
+7 6 bop Black Black 4000 15830 a Fv(List)1032 b(of)h(T)-258
+b(ables)5660 22693 y Fw(2.1)1133 b(SUNDIALS)369 b(libraries)h(and)f
+(header)g(\257les)600 b(.)554 b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 2094 w(7)p Black 5660 25128 a(5.1)1133 b(Optional)372
+b(inputs)d(for)h(CV)-31 b(ODES,)370 b(CVDENSE,)h(CVBAND,)f(and)f
+(CVSPGMR)1081 b(.)554 b(.)g(.)g(.)g(.)g(.)f(.)p Black
+1540 w(37)p Black 5660 26456 a(5.2)1133 b(Optional)372
+b(outputs)e(from)g(CV)-31 b(ODES,)370 b(CVDENSE,)h(CVBAND,)f(CVDIA)-31
+b(G,)369 b(and)h(CVSPGMR)p Black 1274 w(47)p Black 5660
+28892 a(6.1)1133 b(F)-92 b(orw)-31 b(ard)370 b(sensitivit)-31
+b(y)371 b(optional)h(inputs)643 b(.)554 b(.)g(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 1540 w(90)p Black 5660 30220 a(6.2)1133
+b(F)-92 b(orw)-31 b(ard)370 b(sensitivit)-31 b(y)371
+b(optional)h(outputs)828 b(.)554 b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(93)p Black 5660 32655 a(8.1)1133 b(Description)370
+b(of)g(the)f(NVECTOR)i(op)31 b(erations)895 b(.)554 b(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+f(.)p Black 987 w(125)p Black 5660 33984 a(8.2)1133 b(List)370
+b(of)g(v)-31 b(ector)370 b(functions)g(usage)f(b)-31
+b(y)370 b(CV)-31 b(ODES)370 b(co)31 b(de)369 b(mo)31
+b(dules)1070 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)f(.)p Black 987 w(132)p Black Black 27400 81188 a(vii)p
+Black eop
+%%Page: 8 8
+8 7 bop Black Black Black Black eop
+%%Page: 9 9
+9 8 bop Black Black 4000 15830 a Fv(List)1032 b(of)h(Figures)5660
+22693 y Fw(3.1)1133 b(Illustration)322 b(of)f(the)f(c)-31
+b(hec)g(kp)31 b(oin)-31 b(ting)322 b(algorithm)h(for)d(generation)h(of)
+f(the)h(forw)-31 b(ard)320 b(solution)i(dur-)8206 24021
+y(ing)370 b(the)g(in)-31 b(tegration)372 b(of)e(the)f(adjoin)-31
+b(t)371 b(system.)1129 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(19)p Black 5660 26456 a(4.1)1133 b(Organization)372
+b(of)e(the)f(SUNDIALS)g(suite)336 b(.)554 b(.)g(.)f(.)h(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+f(.)p Black 1540 w(24)p Black 5660 27785 a(4.2)1133 b(Ov)-31
+b(erall)371 b(structure)e(of)g(the)h(CV)-31 b(ODES)370
+b(pac)-31 b(k)-61 b(age)452 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(25)p Black 5660 30220 a(5.1)1133 b(Diagram)371
+b(of)f(user)e(program)i(and)f(CV)-31 b(ODES)370 b(pac)-31
+b(k)-61 b(age)370 b(for)g(in)-31 b(tegration)372 b(of)e(IVP)350
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(29)p
+Black 5660 32655 a(10.1)580 b(Diagram)371 b(of)f(the)f(storage)h(for)g
+(a)f(matrix)i(of)e(t)-31 b(yp)31 b(e)370 b Fu(BandMat)640
+b Fw(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 987 w(141)p Black Black 27554 81188 a(ix)p
+Black eop
+%%Page: 10 10
+10 9 bop Black Black Black Black eop
+%%Page: 1 11
+1 10 bop Black Black 4000 15280 a Ft(Chapter)861 b(1)4000
+20819 y Fv(In)-86 b(tro)86 b(duction)4000 26579 y Fs(cv)-25
+b(odes)310 b Fw(is)f(part)g(of)h(a)f(soft)-31 b(w)g(are)311
+b(family)h(called)e Fs(sundials)p Fw(:)462 b(SUite)310
+b(of)g(Nonlinear)g(and)g(DI\256eren)-31 b(tial/ALgebraic)4000
+27907 y(equation)266 b(Solv)-31 b(ers.)458 b(This)265
+b(suite)g(consists)f(of)h Fs(cv)-25 b(ode)p Fw(,)287
+b Fs(kinsol)263 b Fw(and)h Fs(id)-25 b(a)p Fw(,)286 b(and)265
+b(v)-61 b(arian)-31 b(ts)265 b(of)g(these)f(with)i(sensitivit)-31
+b(y)4000 29235 y(analysis)255 b(capabilities.)457 b Fs(cv)-25
+b(odes)254 b Fw(is)g(a)g(solv)-31 b(er)255 b(for)f(sti\256)g(and)g
+(nonsti\256)g(initial)j(v)-61 b(alue)254 b(problems)g(\(IVPs\))h(for)f
+(systems)4000 30564 y(of)479 b(ordinary)g(di\256eren)-31
+b(tial)480 b(equation)h(\(ODEs\).)821 b(In)478 b(addition)i(to)g
+(solving)g(sti\256)e(and)h(nonsti\256)g(ODE)f(systems,)4000
+31892 y Fs(cv)-25 b(odes)370 b Fw(has)f(sensitivit)-31
+b(y)371 b(analysis)f(capabilities,)j(using)c(either)h(the)f(forw)-31
+b(ard)370 b(or)f(the)h(adjoin)-31 b(t)371 b(metho)31
+b(ds.)4000 35573 y Fr(1.1)1793 b(Historical)599 b(bac)-50
+b(kground)4000 38005 y Fs(F)-32 b(or)-74 b(tran)324 b
+Fw(solv)-31 b(ers)326 b(for)g(ODE)f(initial)k(v)-61 b(alue)326
+b(problems)g(are)f(widespread)h(and)g(hea)-31 b(vily)328
+b(used.)478 b(Tw)-31 b(o)327 b(solv)-31 b(ers)326 b(that)4000
+39333 y(w)-31 b(ere)460 b(previously)g(written)h(at)f(LLNL)f(are)h
+Fs(v)-25 b(ode)460 b Fw([1)q(])g(and)g Fs(v)-25 b(odpk)459
+b Fw([3)q(].)764 b Fs(v)-25 b(ode)460 b Fw(is)g(a)g(general-purp)31
+b(ose)459 b(solv)-31 b(er)4000 40661 y(that)394 b(includes)f(metho)31
+b(ds)393 b(for)g(b)31 b(oth)393 b(sti\256)g(and)g(nonsti\256)g
+(systems,)399 b(and)393 b(in)g(the)g(sti\256)g(case)g(uses)e(direct)i
+(metho)31 b(ds)4000 41990 y(\(full)420 b(or)e(banded\))h(for)g(the)f
+(solution)j(of)e(the)f(linear)i(systems)e(that)i(arise)e(at)h(eac)-31
+b(h)419 b(implicit)i(step.)640 b(Externally)-92 b(,)4000
+43318 y Fs(v)-25 b(ode)394 b Fw(is)g(v)-31 b(ery)395
+b(similar)g(to)g(the)f(w)-31 b(ell)396 b(kno)-31 b(wn)395
+b(solv)-31 b(er)394 b Fs(lsode)g Fw([23)r(].)568 b Fs(v)-25
+b(odpk)393 b Fw(is)h(a)h(v)-61 b(arian)-31 b(t)395 b(of)g
+Fs(v)-25 b(ode)394 b Fw(that)h(uses)f(a)4000 44647 y(preconditioned)304
+b(Krylo)-31 b(v)302 b(\(iterativ)-31 b(e\))306 b(metho)31
+b(d)302 b(for)g(the)h(solution)g(of)g(the)f(linear)h(systems.)470
+b Fs(v)-25 b(odpk)302 b Fw(is)f(a)i(p)31 b(o)-31 b(w)g(erful)4000
+45975 y(to)31 b(ol)418 b(for)f(large)h(sti\256)f(systems)g(b)31
+b(ecause)416 b(it)i(com)-31 b(bines)417 b(established)h(metho)31
+b(ds)418 b(for)e(sti\256)h(in)-31 b(tegration,)433 b(nonlinear)4000
+47303 y(iteration,)360 b(and)355 b(Krylo)-31 b(v)356
+b(\(linear\))g(iteration)h(with)f(a)f(problem-sp)31 b(eci\257c)355
+b(treatmen)-31 b(t)356 b(of)f(the)g(dominan)-31 b(t)357
+b(source)d(of)4000 48632 y(sti\256ness,)394 b(in)c(the)f(form)h(of)g
+(the)f(user-supplied)g(preconditioner)h(matrix)h([2)q(].)553
+b(The)390 b(capabilities)i(of)e(b)31 b(oth)389 b Fs(v)-25
+b(ode)4000 49960 y Fw(and)369 b Fs(v)-25 b(odpk)369 b
+Fw(w)-31 b(ere)370 b(com)-31 b(bined)370 b(in)g(the)f
+Fs(C)p Fw(-language)j(pac)-31 b(k)-61 b(age)370 b Fs(cv)-25
+b(ode)370 b Fw([8)q(,)f(9)q(].)5660 51292 y(In)410 b(the)h(pro)31
+b(cess)409 b(of)i(translating)i(the)e Fs(v)-25 b(ode)410
+b Fw(and)h Fs(v)-25 b(odpk)410 b Fw(algorithms)j(in)-31
+b(to)412 b Fs(C)p Fw(,)f(the)f(o)-31 b(v)g(erall)413
+b Fs(cv)-25 b(ode)411 b Fw(orga-)4000 52621 y(nization)460
+b(has)d(c)-31 b(hanged)459 b(considerably)-92 b(.)759
+b(One)457 b(k)-31 b(ey)458 b(feature)g(of)h(the)f Fs(cv)-25
+b(ode)458 b Fw(organization)j(is)c(that)i(the)f(linear)4000
+53949 y(system)422 b(solv)-31 b(ers)421 b(comprise)h(a)f(la)-31
+b(y)g(er)423 b(of)e(co)31 b(de)422 b(mo)31 b(dules)422
+b(that)g(is)f(separated)h(from)g(the)f(in)-31 b(tegration)425
+b(algorithm,)4000 55277 y(th)-31 b(us)410 b(allo)-31
+b(wing)413 b(for)d(easy)g(mo)31 b(di\257cation)412 b(and)e(expansion)h
+(of)f(the)g(linear)h(solv)-31 b(er)410 b(arra)-31 b(y)-92
+b(.)615 b(A)409 b(second)h(k)-31 b(ey)410 b(feature)4000
+56606 y(is)424 b(a)g(separate)g(mo)31 b(dule)424 b(dev)-31
+b(oted)425 b(to)g(v)-31 b(ector)424 b(op)31 b(erations;)453
+b(this)424 b(facilitated)j(the)d(extension)g(to)h(m)-31
+b(ultiprosessor)4000 57934 y(en)g(vironmen)g(ts)505 b(with)g(only)f(a)g
+(minimal)i(impact)f(on)f(the)f(rest)g(of)h(the)g(solv)-31
+b(er,)538 b(resulting)504 b(in)g Fs(pv)-25 b(ode)504
+b Fw([5)q(],)538 b(the)4000 59262 y(parallel)371 b(v)-61
+b(arian)-31 b(t)370 b(of)g Fs(cv)-25 b(ode)p Fw(.)5660
+60594 y Fs(cv)g(odes)494 b Fw(is)g(written)h(with)f(a)g(functionalit)
+-31 b(y)497 b(that)e(is)f(a)f(sup)31 b(erset)493 b(of)h(that)h(of)f
+(the)f(pair)h Fs(cv)-25 b(ode)p Fw(/)p Fs(pv)g(ode)p
+Fw(.)4000 61923 y(Sensitivit)-31 b(y)362 b(analysis)e(capabilities,)k
+(b)31 b(oth)360 b(forw)-31 b(ard)359 b(and)h(adjoin)-31
+b(t,)363 b(ha)-31 b(v)g(e)360 b(b)31 b(een)359 b(added)g(to)h(the)f
+(main)h(in)-31 b(tegrator.)4000 63251 y(Enabling)451
+b(forw)-31 b(ard)449 b(sensititivit)-31 b(y)452 b(computations)g(in)d
+Fs(cv)-25 b(odes)449 b Fw(will)i(result)d(in)h(the)g(co)31
+b(de)449 b(in)-31 b(tegrating)452 b(the)d(so-)4000 64580
+y(called)508 b Fq(sensitivity)524 b(e)-57 b(quations)507
+b Fw(sim)-31 b(ultaneously)509 b(with)f(the)f(original)i(IVP)-92
+b(,)507 b(yielding)h(b)31 b(oth)507 b(the)g(solution)i(and)4000
+65908 y(its)473 b(sensitivit)-31 b(y)476 b(with)e(resp)31
+b(ect)472 b(to)i(parameters)g(in)f(the)g(mo)31 b(del.)806
+b(Adjoin)-31 b(t)475 b(sensitivit)-31 b(y)475 b(analysis,)501
+b(most)474 b(useful)4000 67236 y(when)463 b(the)g(gradien)-31
+b(ts)463 b(of)g(relativ)-31 b(ely)466 b(few)d(functionals)h(of)f(the)g
+(solution)i(with)e(resp)31 b(ect)462 b(to)i(man)-31 b(y)463
+b(parameters)4000 68565 y(are)427 b(sough)-31 b(t,)442
+b(in)-31 b(v)g(olv)g(es)429 b(in)-31 b(tegration)430
+b(of)d(the)g(original)i(IVP)e(forw)-31 b(ard)427 b(in)g(time)h(follo)
+-31 b(w)g(ed)430 b(b)-31 b(y)427 b(the)g(in)-31 b(tegration)429
+b(of)4000 69893 y(the)488 b(so-called)h Fq(adjoint)506
+b(e)-57 b(quations)488 b Fw(bac)-31 b(kw)g(ard)490 b(in)e(time.)850
+b Fs(cv)-25 b(odes)488 b Fw(pro)-31 b(vides)488 b(the)g(infrastructure)
+g(needed)g(to)4000 71221 y(in)-31 b(tegrate)389 b(an)-31
+b(y)387 b(\257nal-condition)j(ODE)c(dep)31 b(enden)-31
+b(t)387 b(on)g(the)f(solution)j(of)e(the)g(original)i(IVP)d(\(in)i
+(particular)g(the)4000 72550 y(adjoin)-31 b(t)371 b(system\).)5660
+73882 y(Dev)-31 b(elopmen)g(t)382 b(of)e Fs(cv)-25 b(odes)380
+b Fw(w)-31 b(as)381 b(concurren)-31 b(t)380 b(with)g(a)g(redesign)g(of)
+g(the)g(v)-31 b(ector)381 b(op)31 b(erations)381 b(mo)31
+b(dule)380 b(across)4000 75210 y(the)407 b Fs(sundials)f
+Fw(suite.)606 b(The)407 b(k)-31 b(ey)408 b(feature)f(of)h(the)f(new)g
+Fs(nvector)g Fw(mo)31 b(dule)408 b(is)e(that)j(it)e(is)g(written)h(in)f
+(terms)g(of)4000 76539 y(abstract)329 b(v)-31 b(ector)328
+b(op)31 b(erations)329 b(with)g(the)f(actual)h(v)-31
+b(ector)329 b(functions)g(attac)-31 b(hed)329 b(b)-31
+b(y)328 b(a)g(particular)i(implemen)-31 b(tation)4000
+77867 y(\(suc)g(h)510 b(as)f(serial)h(or)g(parallel\))i(of)e
+Fs(nvector)p Fw(.)914 b(This)510 b(allo)-31 b(ws)511
+b(writing)h(the)d Fs(sundials)g Fw(solv)-31 b(ers)510
+b(in)g(a)g(manner)p Black Black eop
+%%Page: 2 12
+2 11 bop Black 0 2701 a Fx(2)40346 b(In)-35 b(tro)35
+b(duction)p 0 3144 48001 45 v Black 0 6974 a Fw(indep)c(enden)-31
+b(t)276 b(of)f(the)g(actual)i Fs(nvector)e Fw(implemen)-31
+b(tation)279 b(\(whic)-31 b(h)276 b(can)g(b)31 b(e)274
+b(user-supplied\),)294 b(as)275 b(w)-31 b(ell)277 b(as)d(allo)-31
+b(wing)0 8302 y(more)369 b(than)h(one)g Fs(nvector)f
+Fw(mo)31 b(dule)370 b(to)g(b)31 b(e)369 b(link)-31 b(ed)370
+b(in)-31 b(to)371 b(an)e(executable)i(\257le.)1660 9658
+y(There)444 b(w)-31 b(ere)444 b(sev)-31 b(eral)444 b(motiv)-61
+b(ations)447 b(for)d(c)-31 b(ho)31 b(osing)445 b(the)f
+Fs(C)f Fw(language)j(for)e Fs(cv)-25 b(ode)445 b Fw(and)f(later)g(for)g
+Fs(cv)-25 b(odes)p Fw(.)0 10987 y(First,)562 b(a)523
+b(general)h(mo)-31 b(v)g(emen)g(t)526 b(a)-31 b(w)g(a)g(y)525
+b(from)f Fs(F)-32 b(or)-74 b(tran)522 b Fw(and)h(to)-31
+b(w)g(ard)525 b Fs(C)e Fw(in)g(scien)-31 b(ti\257c)524
+b(computing)i(w)-31 b(as)524 b(and)0 12315 y(still)393
+b(is)f(apparen)-31 b(t.)561 b(Second,)398 b(the)391 b(p)31
+b(oin)-31 b(ter,)399 b(structure,)e(and)392 b(dynamic)h(memory)g(allo)
+31 b(cation)395 b(features)c(in)h Fs(C)g Fw(are)0 13643
+y(extremely)c(useful)g(in)f(soft)-31 b(w)g(are)389 b(of)e(this)h
+(complexit)-31 b(y)-92 b(.)549 b(Finally)-92 b(,)393
+b(w)-31 b(e)388 b(prefer)e Fs(C)h Fw(o)-31 b(v)g(er)388
+b Fs(C)36822 13422 y Fp(++)38347 13643 y Fw(for)f Fs(cv)-25
+b(odes)387 b Fw(b)31 b(ecause)0 14972 y(of)359 b(the)f(wider)h(a)-31
+b(v)-61 b(ailabilit)-31 b(y)363 b(of)c Fs(C)f Fw(compilers,)k(the)d(p)
+31 b(oten)-31 b(tially)361 b(greater)e(e\261ciency)g(of)g
+Fs(C)p Fw(,)g(and)g(the)f(greater)h(ease)0 16300 y(of)370
+b(in)-31 b(terfacing)371 b(the)f(solv)-31 b(er)369 b(to)h(applications)
+i(written)e(in)g(extended)g Fs(F)-32 b(or)-74 b(tran)p
+Fw(.)0 20107 y Fr(1.2)1793 b(Changes)598 b(from)g(previous)i(v)-50
+b(ersions)0 22805 y Fo(Changes)500 b(in)e(v2.2.0)0 24899
+y Fw(The)381 b(user)f(in)-31 b(terface)382 b(has)e(b)31
+b(een)381 b(further)f(re\257ned.)527 b(Sev)-31 b(eral)381
+b(functions)h(used)e(for)h(setting)h(optional)i(inputs)d(w)-31
+b(ere)0 26228 y(com)g(bined)392 b(in)-31 b(to)391 b(a)g(single)g(one.)
+556 b(Additionally)-92 b(,)400 b(to)391 b(resolv)-31
+b(e)390 b(p)31 b(oten)-31 b(tial)393 b(v)-61 b(ariable)392
+b(scop)31 b(e)389 b(issues,)396 b(all)391 b(SUNDIALS)0
+27556 y(solv)-31 b(ers)400 b(release)h(user)e(data)i(righ)-31
+b(t)402 b(after)f(its)f(use.)586 b(The)401 b(build)g(systems)f(has)g(b)
+31 b(een)400 b(further)g(impro)-31 b(v)g(ed)401 b(to)h(mak)-31
+b(e)0 28885 y(it)370 b(more)f(robust.)0 32130 y Fo(Changes)500
+b(in)e(v2.1.0)0 34225 y Fw(The)296 b(ma)61 b(jor)297
+b(c)-31 b(hanges)296 b(from)g(the)g(previous)g(v)-31
+b(ersion)296 b(in)-31 b(v)g(olv)g(e)298 b(a)e(redesign)g(of)g(the)g
+(user)e(in)-31 b(terface)297 b(across)e(the)h(en)-31
+b(tire)0 35553 y Fs(sundials)476 b Fw(suite.)817 b(W)-92
+b(e)477 b(ha)-31 b(v)g(e)478 b(eliminated)i(the)d(mec)-31
+b(hanism)479 b(of)f(pro)-31 b(viding)479 b(optional)h(inputs)d(and)h
+(extracting)0 36881 y(optional)316 b(statistics)g(from)e(the)g(solv)-31
+b(er)315 b(through)f(the)g Fu(iopt)g Fw(and)g Fu(ropt)h
+Fw(arra)-31 b(ys.)474 b(Instead,)325 b Fs(cv)-25 b(odes)315
+b Fw(no)-31 b(w)314 b(pro)-31 b(vides)0 38210 y(a)280
+b(set)g(of)g(routines)g(\(with)h(pre\257x)e Fu(CVodeSet)p
+Fw(\))i(to)g(c)-31 b(hange)281 b(the)e(default)j(v)-61
+b(alues)279 b(for)h(v)-61 b(arious)280 b(quan)-31 b(tities)282
+b(con)-31 b(trolling)0 39538 y(the)400 b(solv)-31 b(er)400
+b(and)g(a)g(set)f(of)h(extraction)i(routines)e(\(with)h(pre\257x)e
+Fu(CVodeGet)p Fw(\))i(to)g(extract)f(statistics)h(after)f(return)0
+40866 y(from)386 b(the)g(main)g(solv)-31 b(er)386 b(routine.)542
+b(Similarly)-92 b(,)392 b(eac)-31 b(h)386 b(linear)g(solv)-31
+b(er)386 b(mo)31 b(dule)387 b(pro)-31 b(vides)385 b(its)h(o)-31
+b(wn)387 b(set)e(of)h Fu(Set)p Fw(-)g(and)0 42195 y Fu(Get)p
+Fw(-t)-31 b(yp)31 b(e)370 b(routines.)493 b(F)-92 b(or)369
+b(more)g(details)i(see)d Fn(x)p Fw(5.5.4)k(and)d Fn(x)p
+Fw(5.5.6.)1660 43551 y(Additionally)-92 b(,)360 b(the)353
+b(in)-31 b(terfaces)354 b(to)f(sev)-31 b(eral)354 b(user-supplied)e
+(routines)h(\(suc)-31 b(h)353 b(as)g(those)g(pro)-31
+b(viding)354 b(Jacobians,)0 44879 y(preconditioner)309
+b(information,)323 b(and)308 b(sensitivit)-31 b(y)309
+b(righ)-31 b(t)309 b(hand)f(sides\))f(w)-31 b(ere)308
+b(simpli\257ed)h(b)-31 b(y)307 b(reducing)h(the)g(n)-31
+b(um)g(b)31 b(er)0 46207 y(of)464 b(argumen)-31 b(ts.)777
+b(The)463 b(same)h(information)j(that)d(w)-31 b(as)464
+b(previously)h(accessible)f(through)g(suc)-31 b(h)463
+b(argumen)-31 b(ts)465 b(can)0 47536 y(no)-31 b(w)370
+b(b)31 b(e)369 b(obtained)i(through)f Fu(Get)p Fw(-t)-31
+b(yp)31 b(e)370 b(functions.)1660 48892 y(Installation)396
+b(of)c Fs(cv)-25 b(odes)393 b Fw(\(and)f(all)i(of)e Fs(sundials)p
+Fw(\))g(has)g(b)31 b(een)391 b(completely)k(redesigned)d(and)g(is)g(no)
+-31 b(w)393 b(based)0 50220 y(on)369 b(a)h(con\257gure)f(script.)0
+53466 y Fo(Changes)500 b(in)e(v2.1.1)0 55560 y Fw(This)365
+b Fs(cv)-25 b(odes)364 b Fw(release)h(includes)f(bug)h(\257xes)f
+(related)h(to)g(forw)-31 b(ard)365 b(sensitivit)-31 b(y)367
+b(computations)g(\(p)31 b(ossible)365 b(loss)f(of)0 56889
+y(accura)-31 b(y)428 b(on)f(a)h(BDF)e(order)h(increase)g(and)g
+(incorrect)h(logic)h(in)e(testing)i(user-supplied)d(absolute)j
+(tolerances\).)0 58217 y(In)319 b(addition,)332 b(w)-31
+b(e)320 b(ha)-31 b(v)g(e)320 b(added)f(the)h(option)h(of)f(activ)-61
+b(ating)322 b(and)d(deactiv)-61 b(ating)322 b(forw)-31
+b(ard)321 b(sensitivit)-31 b(y)321 b(calculations)0 59545
+y(on)369 b(successiv)-31 b(e)369 b Fs(cv)-25 b(odes)370
+b Fw(runs)e(without)j(memory)f(allo)31 b(cation/deallo)g(cation.)1660
+60901 y(Other)369 b(c)-31 b(hanges)370 b(in)g(this)f(minor)h
+Fs(sundials)e Fw(release)i(a\256ect)f(the)h(build)g(system.)0
+64709 y Fr(1.3)1793 b(Reading)597 b(this)i(user)g(guide)0
+67185 y Fw(This)540 b(user)e(guide)i(is)g(a)f(com)-31
+b(bination)543 b(of)d(general)g(usage)g(instructions.)1004
+b(Sp)31 b(eci\257c)539 b(example)i(programs)f(are)0 68513
+y(pro)-31 b(vided)469 b(as)f(a)g(separate)h(do)31 b(cumen)-31
+b(t.)791 b(W)-92 b(e)467 b(exp)31 b(ect)469 b(that)g(some)g(readers)e
+(will)j(w)-31 b(an)g(t)470 b(to)e(concen)-31 b(trate)470
+b(on)f(the)0 69841 y(general)370 b(instructions,)h(while)f(others)f
+(will)i(refer)d(mostly)j(to)f(the)g(examples.)1660 71197
+y(There)521 b(are)g(di\256eren)-31 b(t)522 b(p)31 b(ossible)521
+b(lev)-31 b(els)522 b(of)g(usage)f(of)h Fs(cv)-25 b(odes)p
+Fw(.)949 b(The)521 b(most)h(casual)g(user,)559 b(with)522
+b(an)g(IVP)0 72526 y(problem)424 b(only)-92 b(,)438 b(can)424
+b(get)g(b)-31 b(y)424 b(with)g(reading)h Fn(x)p Fw(3.1,)438
+b(then)424 b Fn(x)p Fw(5)f(through)i Fn(x)p Fw(5.5.3)g(only)-92
+b(,)438 b(and)424 b(lo)31 b(oking)426 b(at)e(examples)0
+73854 y(in)359 b([17)q(].)490 b(In)358 b(addition,)363
+b(to)d(solv)-31 b(e)359 b(a)g(forw)-31 b(ard)360 b(sensitivit)-31
+b(y)360 b(problem)g(the)f(user)e(should)i(read)g Fn(x)p
+Fw(3.2,)j(follo)-31 b(w)g(ed)362 b(b)-31 b(y)359 b Fn(x)p
+Fw(6)0 75183 y(through)370 b Fn(x)p Fw(6.2.2)h(only)-92
+b(,)371 b(and)e(lo)31 b(ok)371 b(at)f(examples)g(in)f([17)r(].)1660
+76539 y(In)511 b(a)h(di\256eren)-31 b(t)511 b(direction,)548
+b(a)512 b(more)f(adv)-61 b(anced)512 b(user)e(with)i(an)f(IVP)h
+(problem)f(ma)-31 b(y)513 b(w)-31 b(an)g(t)513 b(to)f(\(a\))g(use)f(a)0
+77867 y(pac)-31 b(k)-61 b(age)456 b(preconditioner)f(\()p
+Fn(x)p Fw(5.9\),)479 b(\(b\))455 b(supply)g(his/her)f(o)-31
+b(wn)456 b(Jacobian)g(or)e(preconditioner)i(routines)f(\()p
+Fn(x)p Fw(5.6\),)p Black Black eop
+%%Page: 3 13
+3 12 bop Black 4000 2701 a Fx(1.3)425 b(Reading)g(this)f(user)i(guide)
+32116 b(3)p 4000 3144 48001 45 v Black 4000 6974 a Fw(\(c\))520
+b(do)g(m)-31 b(ultiple)522 b(runs)d(of)h(problems)g(of)g(the)g(same)f
+(size)h(\()p Fn(x)p Fw(5.5.7\),)561 b(\(d\))520 b(supply)g(a)g(new)f
+Fs(nvector)h Fw(mo)31 b(dule)4000 8302 y(\()p Fn(x)p
+Fw(8\),)450 b(or)433 b(ev)-31 b(en)433 b(\(e\))g(supply)g(a)g
+(di\256eren)-31 b(t)433 b(linear)h(solv)-31 b(er)433
+b(mo)31 b(dule)434 b(\()p Fn(x)p Fw(4.2\).)685 b(An)433
+b(adv)-61 b(anced)433 b(user)f(with)i(a)f(forw)-31 b(ard)4000
+9631 y(sensitivit)g(y)400 b(problem)e(ma)-31 b(y)399
+b(also)g(w)-31 b(an)g(t)399 b(to)f(\(a\))h(pro)-31 b(vide)399
+b(his/her)e(o)-31 b(wn)399 b(sensitivit)-31 b(y)400 b(equations)f(righ)
+-31 b(t-hand)399 b(side)4000 10959 y(routine)406 b(\()p
+Fn(x)p Fw(6.3\),)416 b(\(b\))405 b(p)31 b(erform)405
+b(m)-31 b(ultiple)407 b(runs)d(with)i(the)f(same)g(n)-31
+b(um)g(b)31 b(er)405 b(of)g(sensitivit)-31 b(y)407 b(parameters)e(\()p
+Fn(x)p Fw(6.2.1\),)4000 12287 y(or)343 b(\(c\))i(extract)f(additional)j
+(diagnostic)f(information)g(\()p Fn(x)p Fw(6.2.2\).)488
+b(A)343 b(user)g(with)i(an)f(adjoin)-31 b(t)345 b(sensitivit)-31
+b(y)346 b(problem)4000 13616 y(needs)399 b(to)i(understand)f(the)g(IVP)
+g(solution)i(approac)-31 b(h)401 b(at)g(the)f(desired)f(lev)-31
+b(el)402 b(and)e(also)h(go)f(through)h Fn(x)p Fw(3.3)g(for)g(a)4000
+14944 y(short)420 b(mathematical)j(description)e(of)f(the)g(adjoin)-31
+b(t)422 b(approac)-31 b(h,)433 b Fn(x)p Fw(7)420 b(for)g(the)g(usage)g
+(of)g(the)g(adjoin)-31 b(t)422 b(mo)31 b(dule)421 b(in)4000
+16272 y Fs(cv)-25 b(odes)p Fw(,)370 b(and)g(the)f(examples)h(in)g([17)q
+(].)5660 17601 y(The)g(structure)e(of)i(this)g(do)31
+b(cumen)-31 b(t)370 b(is)f(as)g(follo)-31 b(ws:)p Black
+5660 19815 a Fn(\262)p Black 554 w Fw(In)408 b(Chapter)i(2)f(w)-31
+b(e)409 b(b)31 b(egin)409 b(with)h(instructions)f(for)g(the)g
+(installation)j(of)d Fs(cv)-25 b(odes)p Fw(,)419 b(within)411
+b(the)d(structure)6767 21143 y(of)370 b Fs(sundials)p
+Fw(.)p Black 5660 23357 a Fn(\262)p Black 554 w Fw(In)433
+b(Chapter)g(3,)449 b(w)-31 b(e)433 b(giv)-31 b(e)434
+b(short)f(descriptions)g(of)g(the)g(n)-31 b(umerical)434
+b(metho)31 b(ds)433 b(implemen)-31 b(ted)435 b(b)-31
+b(y)433 b Fs(cv)-25 b(odes)6767 24685 y Fw(for)423 b(the)g(solution)h
+(of)f(initial)i(v)-61 b(alue)423 b(problems)g(for)g(systems)f(of)h
+(ODEs,)436 b(con)-31 b(tin)g(ue)424 b(with)f(an)g(o)-31
+b(v)g(erview)424 b(of)6767 26014 y(the)416 b(mathematical)j(asp)31
+b(ects)414 b(of)i(sensitivit)-31 b(y)417 b(analysis,)428
+b(b)31 b(oth)416 b(forw)-31 b(ard)416 b(\()p Fn(x)p Fw(3.2\))h(and)e
+(adjoin)-31 b(t)417 b(\()p Fn(x)p Fw(3.3\),)430 b(and)6767
+27342 y(conclude)370 b(with)h(a)e(description)h(of)g(stabilit)-31
+b(y)372 b(limit)f(detection)g(\()p Fn(x)p Fw(3.4\).)p
+Black 5660 29556 a Fn(\262)p Black 554 w Fw(The)401 b(follo)-31
+b(wing)404 b(c)-31 b(hapter)402 b(describ)31 b(es)399
+b(the)i(structure)f(of)h(the)g Fs(sundials)e Fw(suite)i(of)g(solv)-31
+b(ers)401 b(\()p Fn(x)p Fw(4.1\))i(and)e(the)6767 30884
+y(soft)-31 b(w)g(are)371 b(organization)i(of)c(the)h
+Fs(cv)-25 b(odes)369 b Fw(solv)-31 b(er)370 b(\()p Fn(x)p
+Fw(4.2\).)p Black 5660 33098 a Fn(\262)p Black 554 w
+Fw(In)398 b(Chapter)h(5,)406 b(w)-31 b(e)399 b(giv)-31
+b(e)399 b(an)f(o)-31 b(v)g(erview)400 b(of)f(the)f(usage)g(of)h
+Fs(cv)-25 b(odes)p Fw(,)406 b(as)398 b(w)-31 b(ell)400
+b(as)e(a)g(complete)i(description)6767 34426 y(of)434
+b(the)g(user)e(in)-31 b(terface)434 b(and)g(of)g(the)f(user-de\257ned)f
+(routines)i(for)f(in)-31 b(tegration)436 b(of)e(IVP)f(ODEs.)685
+b(Readers)6767 35755 y(that)393 b(are)e(not)h(in)-31
+b(terested)393 b(in)e(using)h Fs(cv)-25 b(odes)392 b
+Fw(for)f(sensitivit)-31 b(y)394 b(analysis)f(can)e(then)h(skip)g(to)g
+(the)f(example)6767 37083 y(programs)370 b(in)f([16)r(].)p
+Black 5660 39297 a Fn(\262)p Black 554 w Fw(Chapter)443
+b(6)g(describ)31 b(es)441 b(the)h(usage)h(of)g Fs(cv)-25
+b(odes)442 b Fw(for)h(forw)-31 b(ard)443 b(sensitivit)-31
+b(y)444 b(analysis)f(as)g(an)f(extension)h(of)6767 40625
+y(its)477 b(IVP)e(in)-31 b(tegration)479 b(capabilities.)815
+b(W)-92 b(e)475 b(b)31 b(egin)477 b(with)g(a)f(sk)-31
+b(eleton)477 b(of)f(the)g(user)f(main)i(program,)504
+b(with)6767 41954 y(emphasis)403 b(on)g(the)g(steps)f(that)h(are)g
+(required)f(in)g(addition)j(to)e(those)g(already)h(describ)31
+b(ed)401 b(in)i(Chapter)g(5.)6767 43282 y(F)-92 b(ollo)-31
+b(wing)398 b(that)d(w)-31 b(e)395 b(pro)-31 b(vide)395
+b(detailed)h(descriptions)f(of)g(the)g(user-callable)h(in)-31
+b(terface)395 b(routines)g(sp)31 b(eci\257c)6767 44610
+y(to)370 b(forw)-31 b(ard)370 b(sensitivit)-31 b(y)372
+b(analysis)e(and)g(of)f(the)h(additonal)i(optional)f(user-de\257ned)d
+(routines.)p Black 5660 46824 a Fn(\262)p Black 554 w
+Fw(Chapter)325 b(7)g(describ)31 b(es)323 b(the)i(usage)f(of)h
+Fs(cv)-25 b(odes)325 b Fw(for)f(adjoin)-31 b(t)327 b(sensitivit)-31
+b(y)327 b(analysis.)478 b(W)-92 b(e)324 b(b)31 b(egin)325
+b(b)-31 b(y)324 b(describ-)6767 48153 y(ing)442 b(the)f
+Fs(cv)-25 b(odes)441 b Fw(c)-31 b(hec)g(kp)31 b(oin)-31
+b(ting)443 b(implemen)-31 b(tation)445 b(for)c(in)-31
+b(terp)31 b(olation)443 b(of)f(the)e(original)j(IVP)e(solution)6767
+49481 y(during)420 b(in)-31 b(tegration)422 b(of)d(the)h(adjoin)-31
+b(t)421 b(system)e(bac)-31 b(kw)g(ard)421 b(in)e(time,)433
+b(and)419 b(with)i(an)e(o)-31 b(v)g(erview)421 b(of)e(a)h(user's)6767
+50809 y(main)506 b(program.)901 b(F)-92 b(ollo)-31 b(wing)507
+b(that)f(w)-31 b(e)506 b(pro)-31 b(vide)505 b(complete)i(descriptions)e
+(of)g(the)g(user-callable)h(in)-31 b(ter-)6767 52138
+y(face)403 b(routines)f(for)f(adjoin)-31 b(t)404 b(sensitivit)-31
+b(y)404 b(analysis)f(as)e(w)-31 b(ell)404 b(as)d(descriptions)h(of)h
+(the)e(required)h(additional)6767 53466 y(user-de\257ned)368
+b(routines.)p Black 5660 55680 a Fn(\262)p Black 554
+w Fw(Chapter)380 b(8)f(giv)-31 b(es)379 b(a)g(brief)f(o)-31
+b(v)g(erview)381 b(of)e(the)g(generic)f Fs(nvector)h
+Fw(mo)31 b(dule)379 b(shared)f(amongst)j(the)e(v)-61
+b(arious)6767 57008 y(comp)31 b(onen)-31 b(ts)453 b(of)e
+Fs(sundials)p Fw(,)471 b(as)450 b(w)-31 b(ell)453 b(as)e(details)h(on)f
+(the)g(t)-31 b(w)g(o)453 b Fs(nvector)d Fw(implemen)-31
+b(tations)455 b(pro)-31 b(vided)6767 58337 y(with)410
+b Fs(sundials)p Fw(:)570 b(a)408 b(serial)h(implemen)-31
+b(tation)412 b(\()p Fn(x)p Fw(8.1\))f(and)d(a)h(parallel)g(implemen)-31
+b(tation)413 b(based)408 b(on)g Fs(MPI)6767 59665 y Fw(\()p
+Fn(x)p Fw(8.2\).)p Black 5660 61879 a Fn(\262)p Black
+554 w Fw(Chapter)370 b(9)g(describ)31 b(es)368 b(the)h(sp)31
+b(eci\257cations)371 b(of)e(linear)h(solv)-31 b(er)370
+b(mo)31 b(dules)370 b(as)f(supplied)g(b)-31 b(y)370 b(the)f(user.)p
+Black 5660 64093 a Fn(\262)p Black 554 w Fw(Chapter)h(10)g(describ)31
+b(es)368 b(in)i(detail)h(the)e(generic)g(linear)h(solv)-31
+b(ers)370 b(shared)e(b)-31 b(y)370 b(all)g Fs(sundials)e
+Fw(solv)-31 b(ers.)p Black 5660 66307 a Fn(\262)p Black
+554 w Fw(Finally)-92 b(,)371 b(Chapter)f(11)g(lists)g(the)f(constan)-31
+b(ts)371 b(used)d(for)i(input)g(to)f(and)h(output)g(from)g
+Fs(cv)-25 b(odes)p Fw(.)5660 68521 y(Finally)-92 b(,)469
+b(the)448 b(reader)f(should)h(b)31 b(e)447 b(a)-31 b(w)g(are)449
+b(of)f(the)g(follo)-31 b(wing)451 b(notational)g(con)-31
+b(v)g(en)g(tions)450 b(in)e(this)g(user)f(guide:)4000
+69849 y(Program)358 b(listings)g(and)e(iden)-31 b(ti\257ers)357
+b(\(suc)-31 b(h)357 b(as)f Fu(CVodeMalloc)p Fw(\))j(within)f(textual)g
+(explanations)h(app)31 b(ear)357 b(in)f(t)-31 b(yp)31
+b(e-)4000 71178 y(writer)330 b(t)-31 b(yp)31 b(e)330
+b(st)-31 b(yle;)344 b(\257elds)330 b(in)f Fs(C)h Fw(structures)f(\(suc)
+-31 b(h)329 b(as)h Fq(c)-57 b(ontent)p Fw(\))331 b(app)31
+b(ear)329 b(in)h(italics;)345 b(and)330 b(pac)-31 b(k)-61
+b(ages)330 b(or)g(mo)31 b(dules,)4000 72506 y(suc)-31
+b(h)281 b(as)f Fs(cvdense)p Fw(,)300 b(are)281 b(written)h(in)f(all)i
+(capitals.)465 b(In)280 b(the)h(Index,)299 b(page)282
+b(n)-31 b(um)g(b)31 b(ers)280 b(that)j(app)31 b(ear)281
+b(in)g(b)31 b(old)281 b(indicate)4000 73834 y(the)369
+b(main)i(reference)d(for)h(that)i(en)-31 b(try)-92 b(.)p
+Black Black eop
+%%Page: 4 14
+4 13 bop Black Black Black Black eop
+%%Page: 5 15
+5 14 bop Black Black 4000 15307 a Ft(Chapter)861 b(2)4000
+20873 y Fv(CV)-86 b(ODES)1032 b(Installation)h(Pro)86
+b(cedure)4000 26660 y Fw(Generally)578 b(sp)31 b(eaking,)631
+b(the)578 b(installation)j(pro)31 b(cedure)576 b(outlined)k(in)d
+Fn(x)p Fw(2.1)i(b)31 b(elo)-31 b(w)579 b(will)g(w)-31
+b(ork)578 b(on)g(commo)31 b(dit)-31 b(y)4000 27988 y
+Fs(LINUX)p Fw(/)p Fs(UNIX)519 b Fw(systems)f(without)j(mo)31
+b(di\257cation.)944 b(Users)517 b(are)h(still)i(encouraged,)558
+b(ho)-31 b(w)g(ev)g(er,)557 b(to)520 b(carefully)4000
+29317 y(read)375 b(the)g(en)-31 b(tire)376 b(c)-31 b(hapter)376
+b(b)31 b(efore)375 b(attempting)j(to)e(install)h(the)f
+Fs(sundials)e Fw(suite,)k(in)d(case)g(non-default)i(c)-31
+b(hoices)4000 30645 y(are)400 b(desired)g(for)g(compilers,)409
+b(compilation)404 b(options,)409 b(or)400 b(the)h(lik)-31
+b(e.)587 b(In)399 b(lieu)i(of)g(reading)g(the)f(option)i(list)f(b)31
+b(elo)-31 b(w,)4000 31974 y(the)314 b(user)e(ma)-31 b(y)314
+b(in)-31 b(v)g(ok)g(e)316 b(the)d(con\257guration)j(script)d(with)i
+(the)e(help)h(\260ag)g(to)g(view)g(a)g(complete)h(listing)g(of)f(a)-31
+b(v)-61 b(ailable)4000 33302 y(options,)371 b(whic)-31
+b(h)370 b(ma)-31 b(y)371 b(b)31 b(e)368 b(done)i(b)-31
+b(y)369 b(issuing)p Black Black 5743 35640 a Fu(\045)582
+b(./configure)h(--help)4000 37947 y Fw(from)370 b(within)h(the)e
+Fu(sundials)h Fw(directory)-92 b(.)5660 39306 y(In)383
+b(the)h(descriptions)f(b)31 b(elo)-31 b(w,)389 b Fq(build)p
+20917 39306 340 45 v 408 w(tr)-57 b(e)g(e)384 b Fw(refers)e(to)i(the)f
+(directory)h(under)e(whic)-31 b(h)385 b(the)e(user)f(w)-31
+b(an)g(ts)385 b(to)f(build)4000 40635 y(and/or)272 b(install)h(the)e
+Fs(sundials)g Fw(pac)-31 b(k)-61 b(age.)461 b(By)271
+b(default,)293 b(the)271 b Fs(sundials)g Fw(libraries)g(and)h(header)f
+(\257les)g(are)g(installed)4000 41963 y(under)311 b(the)g(sub)31
+b(directories)311 b Fq(build)p 18291 41963 V 408 w(tr)-57
+b(e)g(e)p Fu(/lib)312 b Fw(and)g Fq(build)p 27460 41963
+V 407 w(tr)-57 b(e)g(e)p Fu(/include)p Fw(,)326 b(resp)31
+b(ectiv)-31 b(ely)-92 b(.)473 b(Also,)324 b Fq(sour)-57
+b(c)g(e)p 46983 41963 V 408 w(tr)g(e)g(e)312 b Fw(refers)4000
+43291 y(to)373 b(the)f(directory)h(where)e(the)h Fs(sundials)g
+Fw(source)f(co)31 b(de)372 b(is)g(lo)31 b(cated.)502
+b(The)373 b(c)-31 b(hosen)372 b Fq(build)p 41638 43291
+V 407 w(tr)-57 b(e)g(e)373 b Fw(ma)-31 b(y)373 b(b)31
+b(e)372 b(di\256eren)-31 b(t)4000 44620 y(from)467 b(the)g
+Fq(sour)-57 b(c)g(e)p 11770 44620 V 408 w(tr)g(e)g(e)p
+Fw(,)492 b(th)-31 b(us)467 b(allo)-31 b(wing)470 b(for)d(m)-31
+b(ultiple)469 b(installations)h(of)d(the)g Fs(sundials)f
+Fw(suite)h(with)h(di\256eren)-31 b(t)4000 45948 y(con\257guration)371
+b(options.)5660 47308 y(Concerning)349 b(the)f(installation)k(pro)31
+b(cedure)346 b(outlined)k(b)31 b(elo)-31 b(w,)353 b(after)348
+b(in)-31 b(v)g(oking)351 b(the)d Fu(tar)f Fw(command)j(with)f(the)4000
+48636 y(appropriate)405 b(options,)415 b(the)405 b(con)-31
+b(ten)g(ts)405 b(of)g(the)f Fs(sundials)f Fw(arc)-31
+b(hiv)g(e)405 b(\(or)g(the)f Fq(sour)-57 b(c)g(e)p 39507
+48636 V 408 w(tr)g(e)g(e)p Fw(\))405 b(will)h(b)31 b(e)404
+b(extracted)h(to)4000 49964 y(a)387 b(directory)f(named)h
+Fu(sundials)p Fw(.)545 b(Since)387 b(the)f(name)h(of)g(the)f(extracted)
+h(directory)g(is)f(not)h(v)-31 b(ersion-sp)31 b(eci\257c)387
+b(it)g(is)4000 51293 y(recommended)362 b(that)h(the)f(user)f(refrain)h
+(from)g(extracting)i(the)e(arc)-31 b(hiv)g(e)363 b(to)g(a)f(directory)g
+(con)-31 b(taining)365 b(a)d(previous)4000 52621 y(v)-31
+b(ersion/release)366 b(of)g(the)f Fs(sundials)f Fw(suite.)492
+b(If)365 b(the)g(user)f(is)h(only)h(upgrading)h(and)e(the)g(previous)g
+(installation)k(of)4000 53949 y Fs(sundials)f Fw(is)h(not)h(needed,)g
+(then)f(the)h(user)e(ma)-31 b(y)370 b(remo)-31 b(v)g(e)370
+b(the)g(previous)f(installation)k(b)-31 b(y)369 b(issuing)p
+Black Black 5743 56287 a Fu(\045)582 b(rm)f(-rf)h(sundials)4000
+58594 y Fw(from)370 b(a)f(shell)h(command)h(prompt.)5660
+59954 y(Ev)-31 b(en)291 b(though)g(the)f(installation)k(pro)31
+b(cedure)289 b(giv)-31 b(en)291 b(b)31 b(elo)-31 b(w)291
+b(presupp)31 b(oses)289 b(that)i(the)f(user)f(will)j(use)d(the)h
+(default)4000 61282 y(v)-31 b(ector)339 b(mo)31 b(dules)339
+b(supplied)g(with)h(the)e(distribution,)347 b(using)339
+b(the)g Fs(sundials)e Fw(suite)i(with)g(a)g(user-supplied)f(v)-31
+b(ector)4000 62610 y(mo)31 b(dule)370 b(normally)h(will)g(not)f
+(require)f(an)-31 b(y)370 b(c)-31 b(hanges)370 b(to)g(the)f(build)h
+(pro)31 b(cedure.)4000 66436 y Fr(2.1)1793 b(Installation)598
+b(steps)4000 68918 y Fw(T)-92 b(o)261 b(install)i(the)e
+Fs(sundials)f Fw(suite,)283 b(giv)-31 b(en)263 b(a)e(do)-31
+b(wnloaded)263 b(\257le)e(named)g Fq(sundials)p 36937
+68918 V 407 w(\257le)p Fu(.tar.gz)p Fw(,)285 b(issue)260
+b(the)h(follo)-31 b(wing)4000 70246 y(commands)504 b(from)g(a)f(shell)h
+(command)g(prompt,)538 b(while)505 b(within)f(the)g(directory)f(where)g
+Fq(sour)-57 b(c)g(e)p 45546 70246 V 408 w(tr)g(e)g(e)503
+b Fw(is)g(to)h(b)31 b(e)4000 71575 y(lo)g(cated.)557
+b(The)391 b(names)g(of)f(installed)j(libraries)d(and)h(header)f
+(\257les)g(are)g(listed)h(in)g(T)-92 b(able)391 b(2.1)h(for)e
+(reference.)555 b(\(F)-92 b(or)4000 72903 y(brevit)-31
+b(y)-92 b(,)511 b(the)482 b(corresp)31 b(onding)482 b
+Fu(.c)g Fw(\257les)g(are)g(not)g(listed.\))832 b(Regarding)483
+b(the)f(\257le)g(extension)h(.)p Fq(lib)g Fw(app)31 b(earing)483
+b(in)4000 74232 y(T)-92 b(able)369 b(2.1,)h(shared)e(libraries)h
+(generally)g(ha)-31 b(v)g(e)369 b(an)g(extension)g(of)g
+Fu(.so)f Fw(and)h(static)g(libraries)g(ha)-31 b(v)g(e)369
+b(an)g(extension)4000 75560 y(of)h Fu(.a)p Fw(.)492 b(\(See)370
+b Fq(Options)395 b(for)h(libr)-57 b(ary)397 b(supp)-57
+b(ort)368 b Fw(for)h(additional)k(details.\))p Black
+5353 77867 a(1.)p Black 554 w Fu(gunzip)d Fq(sundials)p
+14567 77867 V 407 w(\257le)p Fu(.tar.gz)p Black Black
+eop
+%%Page: 6 16
+6 15 bop Black 0 2701 a Fx(6)29131 b(CV)-35 b(ODES)426
+b(Installation)d(Pro)35 b(cedure)p 0 3144 48001 45 v
+Black Black 1353 6974 a Fw(2.)p Black 554 w Fu(tar)582
+b(-xf)369 b Fq(sundials)p 11148 6974 340 45 v 407 w(\257le)p
+Fu(.tar)2584 b Fw([creates)370 b Fu(sundials)g Fw(directory])p
+Black 1353 9265 a(3.)p Black 554 w Fu(cd)g Fq(build)p
+6658 9265 V 407 w(tr)-57 b(e)g(e)p Black 1353 11556 a
+Fw(4.)p Black 554 w Fq(p)g(ath)p 4844 11556 V 407 w(to)p
+6185 11556 V 407 w(sour)g(c)g(e)p 9576 11556 V 408 w(tr)g(e)g(e)p
+Fu(/configure)371 b Fq(options)2583 b Fw([options)371
+b(can)e(b)31 b(e)369 b(absen)-31 b(t])p Black 1353 13847
+a(5.)p Black 554 w Fu(make)p Black 1353 16139 a Fw(6.)p
+Black 554 w Fu(make)582 b(install)p Black 1353 18430
+a Fw(7.)p Black 554 w Fu(make)g(examples)p Black 1353
+20721 a Fw(8.)p Black 554 w(If)369 b(system)h(storage)g(space)f
+(conserv)-61 b(ation)370 b(is)f(a)h(priorit)-31 b(y)-92
+b(,)371 b(then)e(issue)4511 22049 y Fu(\045)581 b(make)h(clean)2767
+23378 y Fw(and/or)4511 24706 y Fu(\045)f(make)h(examples_clean)2767
+26034 y Fw(from)370 b(a)g(shell)f(command)i(prompt)f(to)g(remo)-31
+b(v)g(e)370 b(unneeded)f(ob)61 b(ject)371 b(\257les.)0
+30722 y Fr(2.2)1793 b(Con\257guration)598 b(options)0
+33182 y Fw(The)476 b(installation)k(pro)31 b(cedure)475
+b(giv)-31 b(en)478 b(ab)31 b(o)-31 b(v)g(e)477 b(will)h(generally)f(w)
+-31 b(ork)477 b(without)h(mo)31 b(di\257cation;)533 b(ho)-31
+b(w)g(ev)g(er,)505 b(if)477 b(the)0 34510 y(system)440
+b(includes)g(m)-31 b(ultiple)442 b Fs(MPI)d Fw(implemen)-31
+b(tations,)462 b(then)440 b(certain)h(con\257gure)f(script-related)g
+(options)i(ma)-31 b(y)0 35839 y(b)31 b(e)508 b(used)g(to)h(indicate)h
+(whic)-31 b(h)509 b Fs(MPI)f Fw(implemen)-31 b(tation)513
+b(should)508 b(b)31 b(e)508 b(used.)910 b(Also,)544 b(if)509
+b(the)g(user)e(w)-31 b(an)g(ts)510 b(to)f(use)0 37167
+y(non-default)542 b(language)h(compilers,)584 b(then,)g(again,)i(the)
+540 b(necessary)g(shell)h(en)-31 b(vironmen)g(t)542 b(v)-61
+b(ariables)541 b(m)-31 b(ust)541 b(b)31 b(e)0 38496 y(appropriately)398
+b(rede\257ned.)574 b(The)397 b(remainder)g(of)g(this)f(section)i(pro)
+-31 b(vides)397 b(explanations)h(of)f(a)-31 b(v)-61 b(ailable)400
+b(con\257gure)0 39824 y(script)369 b(options.)0 43025
+y Fo(General)499 b(options)p Black Black 0 45104 a Fu(--prefix=PREFIX)
+2214 46914 y Fw(Lo)31 b(cation)371 b(for)e(arc)-31 b(hitecture-indep)31
+b(enden)-31 b(t)371 b(\257les.)2214 48724 y(Default:)494
+b Fu(PREFIX=)p Fq(build)p 13022 48724 V 408 w(tr)-57
+b(e)g(e)p Black Black 0 50934 a Fu(--includedir=DIR)2214
+52743 y Fw(Alternate)371 b(lo)31 b(cation)371 b(for)e(installation)k
+(of)d(header)f(\257les.)2214 54553 y(Default:)494 b Fu
+(DIR=PREFIX/include)p Black Black 0 56763 a(--libdir=DIR)2214
+58573 y Fw(Alternate)371 b(lo)31 b(cation)371 b(for)e(installation)k
+(of)d(libraries.)2214 60382 y(Default:)494 b Fu(DIR=PREFIX/lib)p
+Black Black 0 62592 a(--disable-examples)2214 64402 y
+Fw(All)305 b(a)-31 b(v)-61 b(ailable)306 b(example)f(programs)f(are)g
+(automatically)k(built)d(unless)e(this)h(option)i(is)d(giv)-31
+b(en.)472 b(The)304 b(example)2214 65730 y(executables)370
+b(are)f(stored)g(under)g(the)g(follo)-31 b(wing)373 b(sub)31
+b(directories)369 b(of)h(the)f(asso)31 b(ciated)370 b(solv)-31
+b(er:)p Black Black 2214 68181 a Fq(build)p 4573 68181
+V 408 w(tr)-57 b(e)g(e)p Fw(/)p Fq(solver)p Fw(/)p Fu(examples)p
+15263 68181 349 45 v 420 w(ser)370 b Fw(:)492 b(serial)370
+b Fs(C)f Fw(examples)p Black Black 2214 70150 a Fq(build)p
+4573 70150 340 45 v 408 w(tr)-57 b(e)g(e)p Fw(/)p Fq(solver)p
+Fw(/)p Fu(examples)p 15263 70150 349 45 v 420 w(par)370
+b Fw(:)492 b(parallel)371 b Fs(C)e Fw(examples)i(\()p
+Fs(MPI)p Fw(-enabled\))p Black Black 2214 72119 a Fq(build)p
+4573 72119 340 45 v 408 w(tr)-57 b(e)g(e)p Fw(/)p Fq(solver)p
+Fw(/)p Fu(fcmix)p Fw(/)p Fu(examples)p 18721 72119 349
+45 v 422 w(ser)369 b Fw(:)493 b(serial)369 b Fs(F)-32
+b(or)-74 b(tran)368 b Fw(examples)p Black Black 2214
+74088 a Fq(build)p 4573 74088 340 45 v 408 w(tr)-57 b(e)g(e)p
+Fw(/)p Fq(solver)p Fw(/)p Fu(fcmix)p Fw(/)p Fu(examples)p
+18721 74088 349 45 v 422 w(par)369 b Fw(:)493 b(parallel)371
+b Fs(F)-32 b(or)-74 b(tran)367 b Fw(examples)j(\()p Fs(MPI)p
+Fw(-enabled\))2214 76539 y Fq(Note)p Fw(:)479 b(Some)345
+b(of)g(these)f(sub)31 b(directories)343 b(ma)-31 b(y)346
+b(not)e(exist)h(dep)31 b(ending)344 b(up)31 b(on)344
+b(the)h(solv)-31 b(er)344 b(and/or)h(the)f(con\257g-)2214
+77867 y(uration)370 b(options)h(giv)-31 b(en.)p Black
+Black eop
+%%Page: 7 17
+7 16 bop Black 4000 2701 a Fx(2.2)425 b(Con\257guration)i(options)33202
+b(7)p 4000 3144 48001 45 v Black Black Black 16443 17644
+a Fw(T)-92 b(able)370 b(2.1:)494 b(SUNDIALS)369 b(libraries)h(and)f
+(header)g(\257les)p Black 7811 18463 40378 45 v 7789
+19791 45 1329 v 8475 19393 a Fx(Mo)35 b(dule)p 19102
+19791 V 7084 w(Libraries)p 36540 19791 V 12505 w(Header)425
+b(\257les)p 48167 19791 V 7811 19835 40378 45 v 7789
+21164 45 1329 v 8475 20765 a Fs(shared)p 19102 21164
+V 7474 w Fu(libsundials)p 26250 20765 349 45 v 420 w(shared.)p
+Fm(lib)p 36540 21164 45 1329 v 4817 w Fu(sundialstypes.h)p
+48167 21164 V 7789 22492 V 19102 22492 V 36540 22492
+V 37227 22094 a(sundialsmath.h)p 48167 22492 V 7789 23820
+V 19102 23820 V 36540 23820 V 37227 23422 a(sundials)p
+41945 23422 349 45 v 419 w(config.h)p 48167 23820 45
+1329 v 7789 25149 V 19102 25149 V 36540 25149 V 37227
+24750 a(dense.h)p 48167 25149 V 7789 26477 V 19102 26477
+V 36540 26477 V 37227 26079 a(smalldense.h)p 48167 26477
+V 7789 27805 V 19102 27805 V 36540 27805 V 37227 27407
+a(band.h)p 48167 27805 V 7789 29134 V 19102 29134 V 36540
+29134 V 37227 28735 a(spgmr.h)p 48167 29134 V 7789 30462
+V 19102 30462 V 36540 30462 V 37227 30064 a(iterative.h)p
+48167 30462 V 7789 31790 V 19102 31790 V 36540 31790
+V 37227 31392 a(nvector.h)p 48167 31790 V 7811 31835
+40378 45 v 7789 33163 45 1329 v 8475 32765 a Fs(nvector)p
+13202 32765 368 45 v 441 w(serial)p 19102 33163 45 1329
+v 2846 w Fu(libsundials)p 26250 32765 349 45 v 420 w(nvecserial.)p
+Fm(lib)p 36540 33163 45 1329 v 2493 w Fu(nvector)p 41364
+32765 349 45 v 419 w(serial.h)p 48167 33163 45 1329 v
+7789 34491 V 19102 34491 V 19789 34093 a(libsundials)p
+26250 34093 349 45 v 420 w(fnvecserial.a)p 36540 34491
+45 1329 v 48167 34491 V 7811 34536 40378 45 v 7789 35864
+45 1329 v 8475 35466 a Fs(nvector)p 13202 35466 368 45
+v 441 w(p)-74 b(arallel)p 19102 35864 45 1329 v 1330
+w Fu(libsundials)p 26250 35466 349 45 v 420 w(nvecparallel.)p
+Fm(lib)p 36540 35864 45 1329 v 1331 w Fu(nvector)p 41364
+35466 349 45 v 419 w(parallel.h)p 48167 35864 45 1329
+v 7789 37192 V 19102 37192 V 19789 36794 a(libsundials)p
+26250 36794 349 45 v 420 w(fnvecparallel.a)p 36540 37192
+45 1329 v 48167 37192 V 7811 37237 40378 45 v 7789 38565
+45 1329 v 8475 38167 a Fs(cv)-25 b(ode)p 19102 38565
+V 7994 w Fu(libsundials)p 26250 38167 349 45 v 420 w(cvode.)p
+Fm(lib)p 36540 38565 45 1329 v 5398 w Fu(cvode.h)p 48167
+38565 V 7789 39893 V 19102 39893 V 19789 39495 a(libsundials)p
+26250 39495 349 45 v 420 w(fcvode.a)p 36540 39893 45
+1329 v 5979 w(cvdense.h)p 48167 39893 V 7789 41222 V
+19102 41222 V 36540 41222 V 37227 40823 a(cvband.h)p
+48167 41222 V 7789 42550 V 19102 42550 V 36540 42550
+V 37227 42152 a(cvdiag.h)p 48167 42550 V 7789 43878 V
+19102 43878 V 36540 43878 V 37227 43480 a(cvspgmr.h)p
+48167 43878 V 7789 45207 V 19102 45207 V 36540 45207
+V 37227 44808 a(cvbandpre.h)p 48167 45207 V 7789 46535
+V 19102 46535 V 36540 46535 V 37227 46137 a(cvbbdpre.h)p
+48167 46535 V 7811 46579 40378 45 v 7789 47908 45 1329
+v 8475 47509 a Fs(cv)g(odes)p 19102 47908 V 7487 w Fu(libsundials)p
+26250 47509 349 45 v 420 w(cvodes.)p Fm(lib)p 36540 47908
+45 1329 v 4817 w Fu(cvodes.h)p 48167 47908 V 7789 49236
+V 19102 49236 V 36540 49236 V 37227 48838 a(cvodea.h)p
+48167 49236 V 7789 50565 V 19102 50565 V 36540 50565
+V 37227 50166 a(cvdense.h)p 48167 50565 V 7789 51893
+V 19102 51893 V 36540 51893 V 37227 51494 a(cvband.h)p
+48167 51893 V 7789 53221 V 19102 53221 V 36540 53221
+V 37227 52823 a(cvdiag.h)p 48167 53221 V 7789 54550 V
+19102 54550 V 36540 54550 V 37227 54151 a(cvspgmr.h)p
+48167 54550 V 7789 55878 V 19102 55878 V 36540 55878
+V 37227 55479 a(cvbandpre.h)p 48167 55878 V 7789 57206
+V 19102 57206 V 36540 57206 V 37227 56808 a(cvbbdpre.h)p
+48167 57206 V 7811 57251 40378 45 v 7789 58579 45 1329
+v 8475 58180 a Fs(id)g(a)p 19102 58579 V 9634 w Fu(libsundials)p
+26250 58180 349 45 v 420 w(ida.)p Fm(lib)p 36540 58579
+45 1329 v 6560 w Fu(ida.h)p 48167 58579 V 7789 59907
+V 19102 59907 V 36540 59907 V 37227 59509 a(idadense.h)p
+48167 59907 V 7789 61236 V 19102 61236 V 36540 61236
+V 37227 60837 a(idaband.h)p 48167 61236 V 7789 62564
+V 19102 62564 V 36540 62564 V 37227 62165 a(idaspgmr.h)p
+48167 62564 V 7789 63892 V 19102 63892 V 36540 63892
+V 37227 63494 a(idabbdpre.h)p 48167 63892 V 7811 63937
+40378 45 v 7789 65265 45 1329 v 8475 64866 a Fs(kinsol)p
+19102 65265 V 7817 w Fu(libsundials)p 26250 64866 349
+45 v 420 w(kinsol.)p Fm(lib)p 36540 65265 45 1329 v 4817
+w Fu(kinsol.h)p 48167 65265 V 7789 66593 V 19102 66593
+V 19789 66195 a(libsundials)p 26250 66195 349 45 v 420
+w(fkinsol.a)p 36540 66593 45 1329 v 5398 w(kinspgmr.h)p
+48167 66593 V 7789 67922 V 19102 67922 V 36540 67922
+V 37227 67523 a(kinbbdpre.h)p 48167 67922 V 7811 67966
+40378 45 v Black Black Black eop
+%%Page: 8 18
+8 17 bop Black 0 2701 a Fx(8)29131 b(CV)-35 b(ODES)426
+b(Installation)d(Pro)35 b(cedure)p 0 3144 48001 45 v
+Black Black Black 0 6974 a Fu(--disable-)p Fq(solver)2214
+8733 y Fw(Although)503 b(eac)-31 b(h)502 b(existing)h(solv)-31
+b(er)502 b(mo)31 b(dule)503 b(is)e(built)i(b)-31 b(y)502
+b(default,)536 b(supp)31 b(ort)501 b(for)h(a)g(giv)-31
+b(en)503 b(solv)-31 b(er)502 b(can)f(b)31 b(e)2214 10061
+y(explicitly)396 b(disabled)e(using)f(this)h(option.)566
+b(The)393 b(v)-61 b(alid)394 b(v)-61 b(alues)393 b(for)h
+Fq(solver)e Fw(are:)540 b Fu(cvode)p Fw(,)400 b Fu(cvodes)p
+Fw(,)h Fu(ida)p Fw(,)f(and)2214 11389 y Fu(kinsol)p Fw(.)p
+Black Black 0 13548 a Fu(--with-cppflags=ARG)2214 15307
+y Fw(Sp)31 b(ecify)310 b(additional)j Fs(C)d Fw(prepro)31
+b(cessor)308 b(\260ags)i(\(e.g.,)324 b Fu(ARG=-I<include)p
+32065 15307 349 45 v 420 w(dir>)310 b Fw(if)h(necessary)e(header)g
+(\257les)h(are)2214 16635 y(lo)31 b(cated)371 b(in)e(nonstandard)h(lo)
+31 b(cations\).)p Black Black 0 18794 a Fu(--with-cflags=ARG)2214
+20553 y Fw(Sp)g(ecify)370 b(additional)i Fs(C)d Fw(compilation)k
+(\260ags.)p Black Black 0 22712 a Fu(--with-ldflags=ARG)2214
+24471 y Fw(Sp)31 b(ecify)424 b(additional)j(link)-31
+b(er)425 b(\260ags)g(\(e.g.,)439 b Fu(ARG=-L<lib)p 25825
+24471 V 420 w(dir>)425 b Fw(if)f(required)g(libraries)g(are)g(lo)31
+b(cated)425 b(in)g(non-)2214 25799 y(standard)369 b(lo)31
+b(cations\).)p Black Black 0 27958 a Fu(--with-libs=ARG)2214
+29717 y Fw(Sp)g(ecify)579 b(additional)j(libraries)d(to)h(b)31
+b(e)578 b(used)h(\(e.g.,)633 b Fu(ARG=-l<foo>)580 b Fw(to)g(link)g
+(with)g(the)f(library)g(named)2214 31045 y Fu(libfoo.a)370
+b Fw(or)f Fu(libfoo.so)p Fw(\).)p Black Black 0 33204
+a Fu(--with-precision=ARG)2214 34963 y Fw(By)469 b(default,)496
+b Fs(sundials)468 b Fw(will)j(de\257ne)d(a)i(real)f(n)-31
+b(um)g(b)31 b(er)469 b(\(in)-31 b(ternally)472 b(referred)467
+b(to)j(as)f Fu(realtype)p Fw(\))h(to)g(b)31 b(e)469 b(a)2214
+36291 y(double-precision)421 b(\260oating-p)31 b(oin)-31
+b(t)423 b(n)-31 b(umeric)420 b(data)h(t)-31 b(yp)31 b(e)420
+b(\()p Fu(double)h Fs(C)p Fw(-t)-31 b(yp)31 b(e\);)446
+b(ho)-31 b(w)g(ev)g(er,)434 b(this)420 b(option)i(ma)-31
+b(y)2214 37619 y(b)31 b(e)435 b(used)f(to)i(build)g Fs(sundials)f
+Fw(with)h Fu(realtype)h Fw(alternativ)-31 b(ely)438 b(de\257ned)d(as)g
+(a)h(single-precision)h(\260oating-)2214 38948 y(p)31
+b(oin)-31 b(t)370 b(n)-31 b(umeric)370 b(data)g(t)-31
+b(yp)31 b(e)370 b(\()p Fu(float)g Fs(C)p Fw(-t)-31 b(yp)31
+b(e\))371 b(if)e Fu(ARG=single)p Fw(,)i(or)e(as)g(a)h
+Fu(long)582 b(double)370 b Fs(C)p Fw(-t)-31 b(yp)31 b(e)369
+b(if)2214 40276 y Fu(ARG=extended)p Fw(.)2214 42035 y(Default:)494
+b Fu(ARG=double)0 45123 y Fo(Options)500 b(for)e(F)-125
+b(ortran)501 b(supp)42 b(ort)p Black Black 0 47166 a
+Fu(--disable-f77)2214 48925 y Fw(Using)469 b(this)h(option)g(will)h
+(disable)e(all)h Fs(F)-32 b(or)-74 b(tran)468 b Fw(supp)31
+b(ort.)791 b(The)469 b Fs(f)-25 b(cv)g(ode)p Fw(,)495
+b Fs(fkinsol)467 b Fw(and)i Fs(fnvector)2214 50253 y
+Fw(mo)31 b(dules)370 b(will)h(not)f(b)31 b(e)368 b(built)j(regardless)d
+(of)i(a)-31 b(v)-61 b(ailabilit)-31 b(y)-92 b(.)p Black
+Black 0 52412 a Fu(--with-fflags=ARG)2214 54171 y Fw(Sp)31
+b(ecify)370 b(additional)i Fs(F)-32 b(or)-74 b(tran)367
+b Fw(compilation)373 b(\260ags.)0 56109 y(The)260 b(con\257guration)i
+(script)e(will)h(attempt)h(to)f(automatically)k(determine)260
+b(the)g(function)i(name)e(mangling)j(sc)-31 b(heme)0
+57437 y(required)344 b(b)-31 b(y)345 b(the)f(sp)31 b(eci\257ed)344
+b Fs(F)-32 b(or)-74 b(tran)343 b Fw(compiler,)351 b(but)344
+b(the)h(follo)-31 b(wing)348 b(t)-31 b(w)g(o)346 b(options)g(ma)-31
+b(y)346 b(b)31 b(e)343 b(used)h(to)h(o)-31 b(v)g(erride)0
+58765 y(the)369 b(default)i(b)31 b(eha)-31 b(vior.)p
+Black Black 0 60703 a Fu(--with-f77underscore=ARG)2214
+62461 y Fw(This)430 b(option)g(p)31 b(ertains)430 b(to)g(the)f
+Fs(fkinsol)p Fw(,)443 b Fs(f)-25 b(cv)g(ode)430 b Fw(and)g
+Fs(fnvector)f(F)-32 b(or)-74 b(tran)p Fw(-)p Fs(C)428
+b Fw(in)-31 b(terface)430 b(mo)31 b(dules)2214 63790
+y(and)460 b(is)h(used)e(to)i(sp)31 b(ecify)461 b(the)f(n)-31
+b(um)g(b)31 b(er)461 b(of)g(underscores)d(to)j(app)31
+b(end)461 b(to)g(function)h(names)e(so)g Fs(F)-32 b(or)-74
+b(tran)2214 65118 y Fw(routines)483 b(can)h(prop)31 b(erly)483
+b(link)h(with)g(the)g(asso)31 b(ciated)484 b Fs(sundials)e
+Fw(libraries.)835 b(V)-92 b(alid)485 b(v)-61 b(alues)483
+b(for)g Fu(ARG)g Fw(are:)2214 66447 y Fu(none)p Fw(,)370
+b Fu(one)f Fw(and)h Fu(two)p Fw(.)2214 68205 y(Default:)494
+b Fu(ARG=one)p Black Black 0 70364 a(--with-f77case=ARG)2214
+72123 y Fw(Use)342 b(this)h(option)h(to)f(sp)31 b(ecify)342
+b(whether)h(the)f(external)i(names)e(of)h(the)g Fs(fkinsol)p
+Fw(,)j Fs(f)-25 b(cv)g(ode)343 b Fw(and)g Fs(fnvector)2214
+73451 y(F)-32 b(or)-74 b(tran)p Fw(-)p Fs(C)497 b Fw(in)-31
+b(terface)500 b(functions)f(should)g(b)31 b(e)498 b(lo)-31
+b(w)g(ercase)500 b(or)f(upp)31 b(ercase)497 b(so)i Fs(F)-32
+b(or)-74 b(tran)497 b Fw(routines)i(can)2214 74780 y(prop)31
+b(erly)522 b(link)g(with)h(the)f(asso)31 b(ciated)523
+b Fs(sundials)e Fw(libraries.)951 b(V)-92 b(alid)523
+b(v)-61 b(alues)522 b(for)g Fu(ARG)g Fw(are:)797 b Fu(lower)523
+b Fw(and)2214 76108 y Fu(upper)p Fw(.)2214 77867 y(Default:)494
+b Fu(ARG=lower)p Black Black eop
+%%Page: 9 19
+9 18 bop Black 4000 2701 a Fx(2.2)425 b(Con\257guration)i(options)33202
+b(9)p 4000 3144 48001 45 v Black 4000 6974 a Fo(Options)500
+b(for)e(MPI)f(supp)42 b(ort)4000 9205 y Fw(The)369 b(follo)-31
+b(wing)373 b(con\257guration)f(options)e(are)f(only)h(applicable)i(to)e
+(the)f(parallel)i Fs(sundials)d Fw(pac)-31 b(k)-61 b(ages:)p
+Black Black 4000 11357 a Fu(--disable-mpi)6214 13330
+y Fw(Using)370 b(this)f(option)i(will)g(completely)h(disable)e
+Fs(MPI)e Fw(supp)31 b(ort.)p Black Black 4000 15703 a
+Fu(--with-mpicc=ARG)p Black Black 4000 18076 a(--with-mpif77=ARG)6214
+20049 y Fw(By)349 b(default,)355 b(the)349 b(con\257guration)i(utilit)
+-31 b(y)352 b(script)d(will)i(use)d(the)h Fs(MPI)g Fw(compiler)h
+(scripts)e(named)i Fu(mpicc)g Fw(and)6214 21377 y Fu(mpif77)324
+b Fw(to)f(compile)i(the)e(parallelized)j Fs(sundials)c
+Fw(subroutines;)339 b(ho)-31 b(w)g(ev)g(er,)334 b(for)323
+b(reasons)f(of)i(compatibilit)-31 b(y)-92 b(,)6214 22705
+y(di\256eren)-31 b(t)412 b(executable)h(names)f(ma)-31
+b(y)413 b(b)31 b(e)412 b(sp)31 b(eci\257ed)411 b(via)i(the)f(ab)31
+b(o)-31 b(v)g(e)413 b(options.)622 b(Also,)424 b Fu(ARG=no)412
+b Fw(can)g(b)31 b(e)411 b(used)6214 24034 y(to)394 b(disable)g(the)g
+(use)e(of)i Fs(MPI)f Fw(compiler)h(scripts,)400 b(th)-31
+b(us)393 b(causing)h(the)g(serial)f Fs(C)h Fw(and)f Fs(F)-32
+b(or)-74 b(tran)392 b Fw(compilers)6214 25362 y(to)370
+b(b)31 b(e)369 b(used)f(to)i(compile)h(the)e(parallelized)j
+Fs(sundials)c Fw(functions)i(and)g(examples.)p Black
+Black 4000 27735 a Fu(--with-mpi-root=MPIDIR)6214 29708
+y Fw(This)496 b(option)i(ma)-31 b(y)497 b(b)31 b(e)495
+b(used)g(to)i(sp)31 b(ecify)496 b(whic)-31 b(h)497 b
+Fs(MPI)e Fw(implemen)-31 b(tation)500 b(should)c(b)31
+b(e)495 b(used.)872 b(The)496 b Fs(sun-)6214 31036 y(dials)430
+b Fw(con\257guration)i(script)f(will)h(automatically)j(c)-31
+b(hec)g(k)431 b(under)f(the)h(sub)31 b(directories)430
+b Fu(MPIDIR/include)6214 32365 y Fw(and)510 b Fu(MPIDIR/lib)h
+Fw(for)e(the)h(necessary)f(header)g(\257les)g(and)h(libraries.)914
+b(The)510 b(sub)31 b(directory)510 b Fu(MPIDIR/bin)6214
+33693 y Fw(will)558 b(also)f(b)31 b(e)555 b(searc)-31
+b(hed)556 b(for)g(the)g Fs(C)g Fw(and)g Fs(F)-32 b(or)-74
+b(tran)555 b(MPI)g Fw(compiler)i(scripts,)603 b(unless)556
+b(the)g(user)f(uses)6214 35021 y Fu(--with-mpicc=no)371
+b Fw(or)e Fu(--with-mpif77=no)p Fw(.)p Black Black 4000
+37394 a Fu(--with-mpi-incdir=INCDIR)p Black Black 4000
+39767 a(--with-mpi-libdir=LIBDIR)p Black Black 4000 42140
+a(--with-mpi-libs=LIBS)6214 44113 y Fw(These)491 b(options)h(ma)-31
+b(y)493 b(b)31 b(e)490 b(used)h(if)g(the)h(user)e(w)-31
+b(ould)492 b(prefer)e(not)i(to)g(use)f(a)g(preexisting)h
+Fs(MPI)f Fw(compiler)6214 45442 y(script,)331 b(but)322
+b(instead)g(w)-31 b(ould)322 b(rather)g(use)e(a)i(serial)f(complier)i
+(and)e(pro)-31 b(vide)322 b(the)g(\260ags)g(necessary)e(to)i(compile)
+6214 46770 y(the)369 b Fs(MPI)p Fw(-a)-31 b(w)g(are)370
+b(subroutines)g(in)f Fs(sundials)p Fw(.)6214 48743 y(Often)427
+b(an)g Fs(MPI)f Fw(implemen)-31 b(tation)431 b(will)d(ha)-31
+b(v)g(e)428 b(unique)f(library)g(names)g(and)g(so)g(it)g(ma)-31
+b(y)428 b(b)31 b(e)426 b(necessary)g(to)6214 50071 y(sp)31
+b(ecify)369 b(the)h(appropriate)g(libraries)g(to)g(use)e(\(e.g.,)k
+Fu(LIBS=-lmpich)p Fw(\).)6214 52044 y(Default:)494 b
+Fu(INCDIR=MPIDIR/include)p Fw(,)372 b Fu(LIBDIR=MPIDIR/lib)g
+Fw(and)d Fu(LIBS=-lmpi)p Black Black 4000 54417 a(--with-mpi-flags=ARG)
+6214 56390 y Fw(Sp)31 b(ecify)370 b(additional)i Fs(MPI)p
+Fw(-sp)31 b(eci\257c)368 b(\260ags.)4000 60025 y Fo(Options)500
+b(for)e(library)i(supp)42 b(ort)4000 62256 y Fw(By)485
+b(default,)517 b(only)486 b(static)h(libraries)f(are)f(built,)516
+b(but)485 b(the)h(follo)-31 b(wing)489 b(option)e(ma)-31
+b(y)487 b(b)31 b(e)485 b(used)f(to)i(build)g(shared)4000
+63584 y(libraries)370 b(on)f(supp)31 b(orted)369 b(platforms.)p
+Black Black 4000 65736 a Fu(--enable-shared)6214 67709
+y Fw(Using)g(this)h(particular)g(option)h(will)f(result)f(in)h(b)31
+b(oth)369 b(static)h(and)g(shared)e(v)-31 b(ersions)369
+b(of)g(the)h(a)-31 b(v)-61 b(ailable)371 b Fs(sun-)6214
+69037 y(dials)304 b Fw(libraries)h(b)31 b(eing)305 b(built)g(if)g(the)g
+(system)g(supp)31 b(orts)303 b(shared)h(libraries.)472
+b(T)-92 b(o)305 b(build)g(only)g(shared)f(libraries)6214
+70365 y(also)370 b(sp)31 b(ecify)369 b Fu(--disable-static)p
+Fw(.)6214 72338 y Fq(Note)p Fw(:)740 b(The)494 b Fs(f)-25
+b(cv)g(ode)494 b Fw(and)f Fs(fkinsol)f Fw(libraries)h(can)h(only)g(b)31
+b(e)493 b(built)h(as)f(static)i(libraries)f(b)31 b(ecause)492
+b(they)6214 73667 y(con)-31 b(tain)415 b(references)d(to)i(externally)h
+(de\257ned)e(sym)-31 b(b)31 b(ols,)425 b(namely)415 b(user-supplied)e
+Fs(F)-32 b(or)-74 b(tran)411 b Fw(subroutines.)6214 74995
+y(Although)471 b(the)f Fs(F)-32 b(or)-74 b(tran)467 b
+Fw(in)-31 b(terfaces)470 b(to)g(the)g(serial)g(and)f(parallel)i
+(implemen)-31 b(tations)473 b(of)d(the)f(supplied)6214
+76323 y Fs(nvector)353 b Fw(mo)31 b(dule)353 b(do)g(not)h(con)-31
+b(tain)355 b(an)-31 b(y)353 b(unresolv)-61 b(able)353
+b(external)h(sym)-31 b(b)31 b(ols,)358 b(the)353 b(libraries)g(are)f
+(still)j(built)6214 77652 y(as)369 b(static)i(libraries)e(for)g(the)h
+(purp)31 b(ose)368 b(of)i(consistency)-92 b(.)p Black
+Black eop
+%%Page: 10 20
+10 19 bop Black 0 2701 a Fx(10)28495 b(CV)-35 b(ODES)426
+b(Installation)d(Pro)35 b(cedure)p 0 3144 48001 45 v
+Black 0 6974 a Fo(Options)500 b(for)e(cross-compilation)0
+9017 y Fw(If)340 b(the)h Fs(sundials)f Fw(suite)h(will)i(b)31
+b(e)340 b(cross-compiled)h(\(meaning)i(the)e(build)h(pro)31
+b(cedure)339 b(will)k(not)e(b)31 b(e)340 b(completed)j(on)0
+10345 y(the)353 b(actual)h(destination)g(system,)j(but)352
+b(rather)g(on)h(an)f(alternate)j(system)d(with)i(a)e(di\256eren)-31
+b(t)353 b(arc)-31 b(hitecture\))354 b(then)0 11674 y(the)369
+b(follo)-31 b(wing)373 b(t)-31 b(w)g(o)371 b(options)g(should)e(b)31
+b(e)369 b(used:)p Black Black 0 13624 a Fu(--build=BUILD)2214
+15395 y Fw(This)515 b(particular)h(option)g(is)e(used)g(to)h(sp)31
+b(ecify)515 b(the)g(canonical)h(system/platform)i(name)d(for)f(the)h
+(build)2214 16723 y(system.)p Black Black 0 18894 a Fu(--host=HOST)2214
+20665 y Fw(If)352 b(cross-compiling,)358 b(then)352 b(the)h(user)e(m)
+-31 b(ust)353 b(use)e(this)i(option)h(to)f(sp)31 b(ecify)352
+b(the)h(canonical)h(system/platform)2214 21994 y(name)370
+b(for)f(the)h(destination)h(system.)0 25092 y Fo(En)-42
+b(vironmen)g(t)500 b(v)-83 b(ariables)0 27136 y Fw(The)433
+b(follo)-31 b(wing)437 b(en)-31 b(vironmen)g(t)435 b(v)-61
+b(ariables)434 b(can)f(b)31 b(e)433 b(lo)31 b(cally)435
+b(\(re\)de\257ned)f(for)f(use)f(during)i(the)f(con\257guration)i(of)0
+28464 y Fs(sundials)p Fw(.)492 b(See)369 b(the)g(next)h(section)g(for)f
+(illustrations)j(of)d(these.)p Black Black 0 30414 a
+Fu(CC)p Black Black 0 32585 a(F77)2214 34356 y Fw(Since)473
+b(the)g(con\257guration)i(script)e(uses)f(the)i(\257rst)e
+Fs(C)h Fw(and)g Fs(F)-32 b(or)-74 b(tran)471 b Fw(compilers)j(found)g
+(in)f(the)g(curren)-31 b(t)2214 35684 y(executable)267
+b(searc)-31 b(h)265 b(path,)288 b(then)266 b(eac)-31
+b(h)266 b(relev)-61 b(an)-31 b(t)266 b(shell)g(v)-61
+b(ariable)267 b(\()p Fu(CC)f Fw(and)g Fu(F77)p Fw(\))g(m)-31
+b(ust)267 b(b)31 b(e)265 b(lo)31 b(cally)268 b(\(re\)de\257ned)2214
+37013 y(in)535 b(order)f(to)h(use)f(a)g(di\256eren)-31
+b(t)535 b(compiler.)990 b(F)-92 b(or)534 b(example,)577
+b(to)536 b(use)d Fu(xcc)i Fw(\(executable)i(name)e(of)g(c)-31
+b(hosen)2214 38341 y(compiler\))371 b(as)e(the)g Fs(C)h
+Fw(language)h(compiler,)g(use)d Fu(CC=xcc)i Fw(in)g(the)f(con\257gure)h
+(step.)p Black Black 0 40512 a Fu(CFLAGS)p Black Black
+0 42683 a(FFLAGS)2214 44455 y Fw(Use)f(these)g(en)-31
+b(vironmen)g(t)371 b(v)-61 b(ariables)370 b(to)g(o)-31
+b(v)g(erride)369 b(the)h(default)g Fs(C)g Fw(and)f Fs(F)-32
+b(or)-74 b(tran)368 b Fw(compilation)k(\260ags.)0 48115
+y Fr(2.3)1793 b(Con\257guration)598 b(examples)0 50540
+y Fw(The)369 b(follo)-31 b(wing)373 b(examples)d(are)g(mean)-31
+b(t)370 b(to)g(help)g(demonstrate)g(prop)31 b(er)368
+b(usage)i(of)g(the)f(con\257gure)g(options:)p Black Black
+0 52975 a Fu(\045)581 b(configure)i(CC=gcc)f(F77=g77)g
+(--with-cflags=-g3)i(--with-fflags=-g3)f(\\)6974 54303
+y(--with-mpicc=/usr/apps/mpich/1.2.4/bin/mpicc)k(\\)6974
+55632 y(--with-mpif77=/usr/apps/mpich/1.2.4/bin/mpif77)0
+58067 y Fw(The)354 b(ab)31 b(o)-31 b(v)g(e)354 b(example)h(builds)f
+Fs(sundials)f Fw(using)g Fu(gcc)h Fw(as)f(the)h(serial)g
+Fs(C)f Fw(compiler,)359 b Fu(g77)353 b Fw(as)h(the)g(serial)f
+Fs(F)-32 b(or)-74 b(tran)0 59395 y Fw(compiler,)347 b
+Fu(mpicc)339 b Fw(as)g(the)h(parallel)g Fs(C)f Fw(compiler,)347
+b Fu(mpif77)340 b Fw(as)f(the)g(parallel)i Fs(F)-32 b(or)-74
+b(tran)337 b Fw(compiler,)347 b(and)339 b(app)31 b(ends)0
+60724 y(the)369 b Fu(-g3)h Fw(compilaton)i(\260ag)e(to)g(the)f(list)i
+(of)e(default)i(\260ags.)p Black Black 0 63159 a Fu(\045)581
+b(configure)i(CC=gcc)f(--disable-examples)i(--with-mpicc=no)f(\\)6974
+64488 y(--with-mpi-root=/usr/apps/mpich/1.2.4)j(\\)6974
+65816 y(--with-mpi-libs=-lmpich)0 68251 y Fw(This)372
+b(example)i(again)f(builds)g Fs(sundials)e Fw(using)h
+Fu(gcc)g Fw(as)g(the)h(serial)f Fs(C)g Fw(compiler,)i(but)f(the)f
+Fu(--with-mpicc=no)0 69580 y Fw(option)527 b(explicitly)h(disables)e
+(the)g(use)f(of)h(the)g(corresp)31 b(onding)526 b Fs(MPI)e
+Fw(compiler)j(script.)962 b(In)525 b(addition,)567 b(since)0
+70908 y(the)464 b Fu(--with-mpi-root)h Fw(option)g(is)e(giv)-31
+b(en,)488 b(the)464 b(compilation)j(\260ags)c Fu
+(-I/usr/apps/mpich/1.2.4/include)0 72236 y Fw(and)331
+b Fu(-L/usr/apps/mpich/1.2.4/lib)j Fw(are)d(passed)f(to)h
+Fu(gcc)g Fw(when)f(compiling)k(the)c Fs(MPI)p Fw(-enabled)h(functions.)
+0 73565 y(The)405 b Fu(--disable-examples)i Fw(option)f(disables)g(the)
+f(examples)g(\(whic)-31 b(h)406 b(means)f(a)g Fs(F)-32
+b(or)-74 b(tran)404 b Fw(compiler)h(is)g(not)0 74893
+y(required\).)487 b(The)354 b Fu(--with-mpi-libs)h Fw(option)h(is)d
+(still)i(needed)e(so)g(that)i(the)e(con\257gure)h(script)f(can)h(c)-31
+b(hec)g(k)354 b(if)g Fu(gcc)0 76221 y Fw(can)369 b(link)i(with)f(the)f
+(appropriate)i Fs(MPI)d Fw(library)i(as)f Fu(-lmpi)h
+Fw(is)f(the)h(in)-31 b(ternal)370 b(default.)p Black
+Black eop
+%%Page: 11 21
+11 20 bop Black Black 4000 15276 a Ft(Chapter)861 b(3)4000
+20811 y Fv(Mathematical)1033 b(Considerations)4000 26567
+y Fs(cv)-25 b(odes)403 b Fw(solv)-31 b(es)403 b(ODE)g(initial)i(v)-61
+b(alue)403 b(problems)g(\(IVPs\))g(in)g(real)g Fl(N)121
+b Fw(-space,)412 b(whic)-31 b(h)403 b(w)-31 b(e)404 b(write)f(in)g(the)
+g(abstract)4000 27895 y(form)22106 29224 y(_)-506 b Fl(y)347
+b Fw(=)308 b Fl(f)119 b Fw(\()p Fl(t;)184 b(y)40 b Fw(\))184
+b Fl(;)1294 b(y)40 b Fw(\()p Fl(t)30159 29390 y Fk(0)30655
+29224 y Fw(\))308 b(=)f Fl(y)33104 29390 y Fk(0)33785
+29224 y Fl(;)15633 b Fw(\(3.1\))4000 31126 y(where)370
+b Fl(y)348 b Fn(2)309 b Fx(R)10095 30640 y Fj(N)10934
+31126 y Fw(.)495 b(Here)370 b(w)-31 b(e)371 b(use)568
+b(_)-506 b Fl(y)409 b Fw(to)371 b(denote)g Fl(dy)40 b(=dt)p
+Fw(.)495 b(While)370 b(w)-31 b(e)371 b(use)e Fl(t)h Fw(to)h(denote)f
+(the)h(indep)31 b(enden)-31 b(t)370 b(v)-61 b(ariable,)4000
+32454 y(and)429 b(usually)h(this)f(is)g(time,)446 b(it)430
+b(certainly)g(need)f(not)g(b)31 b(e.)672 b Fs(cv)-25
+b(odes)429 b Fw(solv)-31 b(es)429 b(b)31 b(oth)430 b(sti\256)f(and)g
+(non-sti\256)g(systems.)4000 33783 y(Roughly)417 b(sp)31
+b(eaking,)429 b(sti\256ness)416 b(is)g(c)-31 b(haracterized)417
+b(b)-31 b(y)416 b(the)h(presence)e(of)h(at)h(least)g(one)f(rapidly)h
+(damp)31 b(ed)417 b(mo)31 b(de,)4000 35111 y(whose)370
+b(time)g(constan)-31 b(t)371 b(is)e(small)h(compared)g(to)g(the)g(time)
+g(scale)g(of)f(the)h(solution)h(itself.)5660 36439 y(Additionally)-92
+b(,)373 b(if)d(\(3.1\))i(dep)31 b(ends)368 b(on)h(some)h(parameters)f
+Fl(p)308 b Fn(2)f Fx(R)33118 35953 y Fj(N)33819 36064
+y Fi(p)34339 36439 y Fw(,)370 b(i.e.)24817 38713 y(_)-506
+b Fl(y)346 b Fw(=)308 b Fl(f)119 b Fw(\()p Fl(t;)370
+b(y)40 b(;)369 b(p)p Fw(\))24618 40373 y Fl(y)40 b Fw(\()p
+Fl(t)26031 40539 y Fk(0)26527 40373 y Fw(\))308 b(=)f
+Fl(y)28976 40539 y Fk(0)29473 40373 y Fw(\()p Fl(p)p
+Fw(\))184 b Fl(;)49725 39554 y Fw(\(3.2\))4000 42607
+y Fs(cv)-25 b(odes)442 b Fw(can)h(also)g(compute)g(\257rst)e(order)h
+(deriv)-61 b(ativ)-31 b(e)443 b(information,)464 b(p)31
+b(erforming)443 b(either)f Fq(forwar)-57 b(d)463 b(sensitivity)4000
+43936 y(analysis)421 b Fw(or)g Fq(adjoint)444 b(sensitivity)h(analysis)
+p Fw(.)649 b(In)420 b(the)i(\257rst)e(case,)435 b Fs(cv)-25
+b(odes)422 b Fw(computes)g(the)f(sensitivities)i(of)f(the)4000
+45264 y(solution)369 b(with)f(resp)31 b(ect)365 b(to)j(the)f
+(parameters)g Fl(p)p Fw(,)h(while)f(in)g(the)g(second)g(case,)h
+Fs(cv)-25 b(odes)367 b Fw(computes)g(the)g(gradien)-31
+b(t)4000 46592 y(of)370 b(a)f Fq(derive)-57 b(d)397 b(function)370
+b Fw(with)h(resp)31 b(ect)368 b(to)i(the)g(parameters)f
+Fl(p)p Fw(.)4000 50227 y Fr(3.1)1793 b(IVP)598 b(solution)4000
+52651 y Fw(The)294 b(metho)31 b(ds)294 b(used)f(in)i
+Fs(cv)-25 b(odes)294 b Fw(are)f(v)-61 b(ariable-order,)310
+b(v)-61 b(ariable-step)295 b(m)-31 b(ultistep)296 b(metho)31
+b(ds,)310 b(based)293 b(on)h(form)-31 b(ulas)4000 53980
+y(of)370 b(the)f(form)19743 54731 y Fj(K)20487 54842
+y Fp(1)19531 55075 y Fh(X)19614 57433 y Fj(i)p Fk(=0)21315
+56127 y Fl(\256)22023 56293 y Fj(n;i)23201 56127 y Fl(y)23784
+55670 y Fj(n)p Fg(\241)p Fj(i)25637 56127 y Fw(+)246
+b Fl(h)27382 56293 y Fj(n)28381 54731 y(K)29125 54842
+y Fp(2)28169 55075 y Fh(X)28252 57433 y Fj(i)p Fk(=0)29953
+56127 y Fl(\257)30579 56293 y Fj(n;i)31956 56127 y Fw(_)-506
+b Fl(y)32340 55670 y Fj(n)p Fg(\241)p Fj(i)34255 56127
+y Fw(=)307 b(0)184 b Fl(:)13258 b Fw(\(3.3\))4000 59058
+y(Here)345 b(the)h Fl(y)9059 58656 y Fj(n)10006 59058
+y Fw(are)f(computed)h(appro)-31 b(ximations)349 b(to)d
+Fl(y)40 b Fw(\()p Fl(t)27448 59224 y Fj(n)28050 59058
+y Fw(\),)351 b(and)346 b Fl(h)31905 59224 y Fj(n)32815
+59058 y Fw(=)307 b Fl(t)34383 59224 y Fj(n)35184 59058
+y Fn(\241)198 b Fl(t)36643 59224 y Fj(n)p Fg(\241)p Fk(1)38724
+59058 y Fw(is)345 b(the)g(step)h(size.)484 b(The)346
+b(user)e(of)4000 60386 y Fs(cv)-25 b(odes)391 b Fw(m)-31
+b(ust)391 b(appropriately)i(c)-31 b(ho)31 b(ose)391 b(one)g(of)g(t)-31
+b(w)g(o)393 b(m)-31 b(ultistep)393 b(metho)31 b(ds.)557
+b(F)-92 b(or)390 b(non-sti\256)h(problems,)397 b Fs(cv)-25
+b(odes)4000 61715 y Fw(includes)485 b(the)h(Adams-Moulton)h(form)-31
+b(ulas)486 b(,)515 b(c)-31 b(haracterized)486 b(b)-31
+b(y)485 b Fl(K)33574 61881 y Fk(1)34571 61715 y Fw(=)501
+b(1)485 b(and)g Fl(K)40179 61881 y Fk(2)41177 61715 y
+Fw(=)500 b Fl(q)525 b Fw(ab)31 b(o)-31 b(v)g(e,)516 b(where)485
+b(the)4000 63043 y(order)376 b Fl(q)417 b Fw(v)-61 b(aries)377
+b(b)31 b(et)-31 b(w)g(een)378 b(1)f(and)h(12.)517 b(F)-92
+b(or)376 b(sti\256)i(problems,)i Fs(cv)-25 b(odes)377
+b Fw(includes)g(the)h(Bac)-31 b(kw)g(ard)379 b(Di\256eren)-31
+b(tiation)4000 64372 y(F)-92 b(orm)-31 b(ulas)344 b(\(BDF\))f(in)h
+(so-called)h(\257xed-leading)g(co)31 b(e\261cien)-31
+b(t)345 b(form,)k(giv)-31 b(en)345 b(b)-31 b(y)344 b
+Fl(K)37879 64538 y Fk(1)38683 64372 y Fw(=)307 b Fl(q)383
+b Fw(and)344 b Fl(K)43795 64538 y Fk(2)44599 64372 y
+Fw(=)308 b(0,)349 b(with)344 b(order)4000 65700 y Fl(q)396
+b Fw(v)-61 b(arying)357 b(b)31 b(et)-31 b(w)g(een)358
+b(1)f(and)f(5.)489 b(The)357 b(co)31 b(e\261cien)-31
+b(ts)358 b(are)e(uniquely)i(determined)f(b)-31 b(y)357
+b(the)g(metho)31 b(d)357 b(t)-31 b(yp)31 b(e,)360 b(its)d(order,)4000
+67028 y(the)369 b(recen)-31 b(t)370 b(history)f(of)h(the)g(step)f
+(sizes,)g(and)g(the)h(normalization)j Fl(\256)33062 67194
+y Fj(n;)p Fk(0)34676 67028 y Fw(=)307 b Fn(\241)p Fw(1.)493
+b(See)369 b([4)q(])h(and)f([20)r(].)5660 68357 y(F)-92
+b(or)369 b(either)g(c)-31 b(hoice)370 b(of)g(form)-31
+b(ula,)372 b(the)d(nonlinear)h(system)18337 70641 y Fl(G)p
+Fw(\()p Fl(y)20180 70807 y Fj(n)20783 70641 y Fw(\))308
+b Fn(\264)f Fl(y)23272 70184 y Fj(n)24120 70641 y Fn(\241)246
+b Fl(h)25865 70807 y Fj(n)26467 70641 y Fl(\257)27093
+70807 y Fj(n;)p Fk(0)28400 70641 y Fl(f)119 b Fw(\()p
+Fl(t)29891 70807 y Fj(n)30494 70641 y Fl(;)184 b(y)31568
+70184 y Fj(n)32171 70641 y Fw(\))246 b Fn(\241)g Fl(a)34539
+70807 y Fj(n)35450 70641 y Fw(=)307 b(0)184 b Fl(;)12063
+b Fw(\(3.4\))4000 72926 y(where)352 b Fl(a)7769 73092
+y Fj(n)8679 72926 y Fn(\264)9847 72095 y Fh(P)11016 73258
+y Fj(i>)p Fk(0)12517 72926 y Fw(\()p Fl(\256)13655 73092
+y Fj(n;i)14835 72926 y Fl(y)15418 72524 y Fj(n)p Fg(\241)p
+Fj(i)17236 72926 y Fw(+)212 b Fl(h)18947 73092 y Fj(n)19549
+72926 y Fl(\257)20175 73092 y Fj(n;i)21553 72926 y Fw(_)-506
+b Fl(y)21937 72524 y Fj(n)p Fg(\241)p Fj(i)23544 72926
+y Fw(\),)356 b(m)-31 b(ust)353 b(b)31 b(e)351 b(solv)-31
+b(ed)353 b(\(appro)-31 b(ximately\))356 b(at)d(eac)-31
+b(h)353 b(in)-31 b(tegration)354 b(step.)4000 74254 y(F)-92
+b(or)383 b(this,)389 b Fs(cv)-25 b(odes)385 b Fw(o\256ers)e(the)i(c)-31
+b(hoice)385 b(of)f(either)h Fq(functional)411 b(iter)-57
+b(ation)p Fw(,)389 b(suitable)c(only)g(for)g(non-sti\256)f(systems,)
+4000 75582 y(and)369 b(v)-61 b(arious)370 b(v)-31 b(ersions)369
+b(of)h Fq(Newton)395 b(iter)-57 b(ation)p Fw(.)493 b(F)-92
+b(unctional)371 b(iteration,)h(giv)-31 b(en)370 b(b)-31
+b(y)19428 77867 y Fl(y)20011 77410 y Fj(n)p Fk(\()p Fj(m)p
+Fk(+1\))23519 77867 y Fw(=)307 b Fl(h)25325 78033 y Fj(n)25928
+77867 y Fl(\257)26554 78033 y Fj(n;)p Fk(0)27860 77867
+y Fl(f)119 b Fw(\()p Fl(t)29351 78033 y Fj(n)29954 77867
+y Fl(;)184 b(y)31028 77410 y Fj(n)p Fk(\()p Fj(m)p Fk(\))33109
+77867 y Fw(\))246 b(+)g Fl(a)35477 78033 y Fj(n)36264
+77867 y Fl(;)p Black Black eop
+%%Page: 12 22
+12 21 bop Black 0 2701 a Fx(12)30377 b(Mathematical)424
+b(Considerations)p 0 3144 48001 45 v Black 0 6974 a Fw(in)-31
+b(v)g(olv)g(es)371 b(ev)-61 b(aluations)371 b(of)f Fl(f)488
+b Fw(only)-92 b(.)494 b(In)368 b(con)-31 b(trast,)371
+b(Newton)g(iteration)g(requires)e(the)g(solution)i(of)f(linear)g
+(systems)15585 9360 y Fl(M)121 b Fw([)p Fl(y)17670 8903
+y Fj(n)p Fk(\()p Fj(m)p Fk(+1\))21116 9360 y Fn(\241)246
+b Fl(y)22806 8903 y Fj(n)p Fk(\()p Fj(m)p Fk(\))24885
+9360 y Fw(])308 b(=)g Fn(\241)p Fl(G)p Fw(\()p Fl(y)29413
+8903 y Fj(n)p Fk(\()p Fj(m)p Fk(\))31493 9360 y Fw(\))184
+b Fl(;)13311 b Fw(\(3.5\))0 11747 y(in)369 b(whic)-31
+b(h)12262 13075 y Fl(M)428 b Fn(\274)307 b Fl(I)333 b
+Fn(\241)246 b Fl(\260)61 b(J)291 b(;)1292 b(J)414 b Fw(=)307
+b Fl(@)61 b(f)119 b(=@)61 b(y)225 b(;)1292 b Fw(and)1108
+b Fl(\260)369 b Fw(=)307 b Fl(h)32711 13241 y Fj(n)33313
+13075 y Fl(\257)33939 13241 y Fj(n;)p Fk(0)35431 13075
+y Fl(:)9987 b Fw(\(3.6\))0 15038 y(The)401 b(initial)j(guess)d(for)h
+(the)f(iteration)j(is)d(a)g(predicted)h(v)-61 b(alue)401
+b Fl(y)27129 14636 y Fj(n)p Fk(\(0\))29266 15038 y Fw(computed)h
+(explicitly)i(from)e(the)f(a)-31 b(v)-61 b(ailable)0
+16366 y(history)370 b(data.)494 b(F)-92 b(or)368 b(the)i(Newton)g
+(corrections,)g Fs(cv)-25 b(odes)370 b Fw(pro)-31 b(vides)369
+b(a)h(c)-31 b(hoice)370 b(of)g(four)f(metho)31 b(ds:)p
+Black 1660 18541 a Fn(\262)p Black 554 w Fw(a)370 b(dense)e(direct)i
+(solv)-31 b(er)369 b(\(serial)i(v)-31 b(ersion)369 b(only\),)p
+Black 1660 20736 a Fn(\262)p Black 554 w Fw(a)h(band)f(direct)h(solv)
+-31 b(er)369 b(\(serial)h(v)-31 b(ersion)370 b(only\),)p
+Black 1660 22930 a Fn(\262)p Black 554 w Fw(a)g(diagonal)i(appro)-31
+b(ximate)372 b(Jacobian)e(solv)-31 b(er,)370 b(or)p Black
+1660 25124 a Fn(\262)p Black 554 w Fs(spgmr)e Fw(=)h(Scaled)h
+(Preconditioned)h(GMRES,)e(without)j(restarts.)0 27299
+y(F)-92 b(or)367 b(large)h(sti\256)f(systems,)h(where)f(direct)h(metho)
+31 b(ds)368 b(are)f(not)h(feasible,)i(the)d(com)-31 b(bination)371
+b(of)d(a)f(BDF)g(in)-31 b(tegrator)0 28627 y(and)527
+b(a)g(preconditioned)h(GMRES)e(algorithm)k(yields)d(a)g(p)31
+b(o)-31 b(w)g(erful)528 b(to)31 b(ol)528 b(b)31 b(ecause)527
+b(it)g(com)-31 b(bines)528 b(established)0 29956 y(metho)31
+b(ds)534 b(for)g(sti\256)g(in)-31 b(tegration,)578 b(nonlinear)534
+b(iteration,)578 b(and)534 b(Krylo)-31 b(v)534 b(\(linear\))i
+(iteration)f(with)g(a)f(problem-)0 31284 y(sp)31 b(eci\257c)304
+b(treatmen)-31 b(t)307 b(of)e(the)g(dominan)-31 b(t)307
+b(source)d(of)h(sti\256ness,)317 b(in)305 b(the)g(form)g(of)h(the)f
+(user-supplied)f(preconditioner)0 32612 y(matrix)371
+b([2)q(].)1660 33941 y(In)395 b(the)g(pro)31 b(cess)394
+b(of)i(con)-31 b(trolling)398 b(errors)393 b(at)j(v)-61
+b(arious)395 b(lev)-31 b(els,)403 b Fs(cv)-25 b(odes)396
+b Fw(uses)e(a)h(w)-31 b(eigh)g(ted)397 b(ro)31 b(ot-mean-square)0
+35269 y(norm,)443 b(denoted)428 b Fn(k)286 b(\242)f(k)9498
+35435 y Fk(WRMS)12374 35269 y Fw(,)443 b(for)427 b(all)i(error-lik)-31
+b(e)428 b(quan)-31 b(tities.)671 b(The)428 b(w)-31 b(eigh)g(ts)429
+b(used)e(are)h(based)f(on)h(the)g(curren)-31 b(t)0 36598
+y(solution)371 b(and)e(on)h(the)f(relativ)-31 b(e)371
+b(and)f(absolute)g(tolerances)g(input)g(b)-31 b(y)370
+b(the)f(user,)g(namely)17760 38984 y Fl(W)18805 39150
+y Fj(i)19482 38984 y Fw(=)307 b Fs(r)-74 b(tol)246 b
+Fn(\242)h(j)p Fl(y)24819 39150 y Fj(i)25187 38984 y Fn(j)g
+Fw(+)f Fs(a)-74 b(tol)29379 39150 y Fj(i)29932 38984
+y Fl(:)15486 b Fw(\(3.7\))0 41370 y(Because)460 b Fl(W)5370
+41536 y Fj(i)6198 41370 y Fw(represen)-31 b(ts)459 b(a)h(tolerance)h
+(in)f(the)g(comp)31 b(onen)-31 b(t)461 b Fl(y)27016 41536
+y Fj(i)27385 41370 y Fw(,)482 b(a)460 b(v)-31 b(ector)461
+b(whose)f(norm)g(is)g(1)g(is)f(regarded)h(as)0 42699
+y(\\small.")495 b(F)-92 b(or)368 b(brevit)-31 b(y)-92
+b(,)371 b(w)-31 b(e)370 b(will)g(usually)h(drop)e(the)g(subscript)g
+(WRMS)f(on)i(norms)f(in)g(what)h(follo)-31 b(ws.)1660
+44027 y(F)-92 b(or)418 b(the)h(direct)g(solv)-31 b(ers)418
+b(\(dense,)431 b(band)419 b(and)f(diagonal\),)435 b(the)419
+b(iteration)h(is)f(a)f(mo)31 b(di\257ed)420 b(Newton)g(iteration)0
+45355 y(since)f(the)g(iteration)i(matrix)f Fl(M)540 b
+Fw(is)419 b(\257xed)g(throughout)h(the)f(nonlinear)h(iterations.)644
+b(Ho)-31 b(w)g(ev)g(er,)433 b(for)419 b Fs(spgmr)p Fw(,)431
+b(it)0 46684 y(is)381 b(an)h(Inexact)g(Newton)h(iteration,)k(in)382
+b(whic)-31 b(h)382 b Fl(M)502 b Fw(is)382 b(applied)g(in)g(a)g
+(matrix-free)g(manner,)k(with)c(matrix-v)-31 b(ector)0
+48012 y(pro)31 b(ducts)389 b Fl(J)106 b(v)428 b Fw(obtained)391
+b(b)-31 b(y)390 b(either)f(di\256erence)g(quotien)-31
+b(ts)391 b(or)e(a)g(user-supplied)g(routine.)554 b(The)389
+b(matrix)i Fl(M)509 b Fw(\(for)0 49340 y(the)445 b(direct)h(solv)-31
+b(ers\))445 b(or)g(preconditioner)h(matrix)h Fl(P)598
+b Fw(\(for)445 b Fs(spgmr)p Fw(\))g(is)g(up)31 b(dated)445
+b(as)g(infrequen)-31 b(tly)447 b(as)e(p)31 b(ossible)0
+50669 y(to)391 b(balance)h(the)e(high)i(costs)e(of)h(matrix)h(op)31
+b(erations)392 b(against)g(other)f(costs.)556 b(Sp)31
+b(eci\257cally)-92 b(,)398 b(this)390 b(matrix)i(up)31
+b(date)0 51997 y(o)g(ccurs)368 b(when:)p Black 1660 54172
+a Fn(\262)p Black 554 w Fw(starting)j(the)e(problem,)p
+Black 1660 56366 a Fn(\262)p Black 554 w Fw(more)h(than)g(20)g(steps)e
+(ha)-31 b(v)g(e)371 b(b)31 b(een)368 b(tak)-31 b(en)371
+b(since)e(the)g(last)h(up)31 b(date,)p Black 1660 58561
+a Fn(\262)p Black 554 w Fw(the)370 b(v)-61 b(alue)410
+b(\271)-594 b Fl(\260)431 b Fw(of)370 b Fl(\260)430 b
+Fw(at)370 b(the)g(last)g(up)31 b(date)369 b(satis\257es)h
+Fn(j)p Fl(\260)61 b(=)41 b Fw(\271)-594 b Fl(\260)309
+b Fn(\241)246 b Fw(1)p Fn(j)308 b Fl(>)g Fw(0)p Fl(:)p
+Fw(3,)p Black 1660 60755 a Fn(\262)p Black 554 w Fw(a)370
+b(non-fatal)h(con)-31 b(v)g(ergence)371 b(failure)f(just)f(o)31
+b(ccurred,)369 b(or)p Black 1660 62949 a Fn(\262)p Black
+554 w Fw(an)h(error)e(test)i(failure)g(just)f(o)31 b(ccurred.)0
+65124 y(When)343 b(forced)g(b)-31 b(y)344 b(a)g(con)-31
+b(v)g(ergence)344 b(failure,)351 b(an)343 b(up)31 b(date)344
+b(of)g Fl(M)464 b Fw(or)343 b Fl(P)497 b Fw(ma)-31 b(y)345
+b(in)-31 b(v)g(olv)g(e)346 b(a)e(reev)-61 b(aluation)345
+b(of)f Fl(J)450 b Fw(\(in)344 b Fl(M)121 b Fw(\))0 66452
+y(or)381 b(of)g(Jacobian)i(data)f(\(in)g Fl(P)154 b Fw(\))381
+b(if)h(Jacobian)g(error)e(w)-31 b(as)382 b(the)f(lik)-31
+b(ely)383 b(cause)e(of)h(the)f(failure.)529 b(More)381
+b(generally)-92 b(,)386 b(the)0 67781 y(decision)370
+b(is)f(made)h(to)g(reev)-61 b(aluate)370 b Fl(J)475 b
+Fw(\(or)370 b(instruct)f(the)h(user)e(to)i(re-ev)-61
+b(aluate)370 b(Jacobian)h(data)f(in)g Fl(P)154 b Fw(\))369
+b(when:)p Black 1660 69956 a Fn(\262)p Black 554 w Fw(starting)i(the)e
+(problem,)p Black 1660 72150 a Fn(\262)p Black 554 w
+Fw(more)h(than)g(50)g(steps)e(ha)-31 b(v)g(e)371 b(b)31
+b(een)368 b(tak)-31 b(en)371 b(since)e(the)g(last)h(ev)-61
+b(aluation,)p Black 1660 74344 a Fn(\262)p Black 554
+w Fw(a)314 b(con)-31 b(v)g(ergence)313 b(failure)h(o)31
+b(ccurred)312 b(with)i(an)f(outdated)i(matrix,)326 b(and)313
+b(the)g(v)-61 b(alue)354 b(\271)-594 b Fl(\260)375 b
+Fw(\()p Fl(\260)f Fw(at)314 b(the)f(last)h(up)31 b(date\))2767
+75673 y(satis\257es)370 b Fn(j)p Fl(\260)61 b(=)41 b
+Fw(\271)-594 b Fl(\260)309 b Fn(\241)246 b Fw(1)p Fn(j)308
+b Fl(<)g Fw(0)p Fl(:)p Fw(2,)371 b(or)p Black 1660 77867
+a Fn(\262)p Black 554 w Fw(a)f(con)-31 b(v)g(ergence)370
+b(failure)g(o)31 b(ccurred)368 b(that)j(forced)e(a)h(reduction)f(of)h
+(the)g(step)f(size.)p Black Black eop
+%%Page: 13 23
+13 22 bop Black 4000 2701 a Fx(3.1)425 b(IVP)g(solution)37545
+b(13)p 4000 3144 48001 45 v Black 5660 6974 a Fw(The)347
+b(stopping)h(test)e(for)h(the)f(Newton)i(iteration)g(is)f(related)g(to)
+g(the)f(subsequen)-31 b(t)346 b(lo)31 b(cal)348 b(error)d(test,)352
+b(with)c(the)4000 8302 y(goal)360 b(of)e(k)-31 b(eeping)359
+b(the)f(nonlinear)i(iteration)g(errors)c(from)j(in)-31
+b(terfering)359 b(with)g(lo)31 b(cal)360 b(error)d(con)-31
+b(trol.)490 b(As)358 b(describ)31 b(ed)4000 9631 y(b)g(elo)-31
+b(w,)481 b(the)457 b(\257nal)g(computed)h(v)-61 b(alue)458
+b Fl(y)20818 9229 y Fj(n)p Fk(\()p Fj(m)p Fk(\))23354
+9631 y Fw(will)g(ha)-31 b(v)g(e)458 b(to)g(satisfy)g(a)f(lo)31
+b(cal)458 b(error)e(test)i Fn(k)p Fl(y)43054 9229 y Fj(n)p
+Fk(\()p Fj(m)p Fk(\))45438 9631 y Fn(\241)304 b Fl(y)47186
+9229 y Fj(n)p Fk(\(0\))48921 9631 y Fn(k)455 b(\267)e
+Fl(\262)p Fw(.)4000 10959 y(Letting)313 b Fl(y)8415 10557
+y Fj(n)9328 10959 y Fw(denote)f(the)f(exact)h(solution)h(of)f(\(3.4\),)
+325 b(w)-31 b(e)312 b(w)-31 b(an)g(t)313 b(to)f(ensure)e(that)j(the)e
+(iteration)i(error)e Fl(y)46560 10557 y Fj(n)47292 10959
+y Fn(\241)130 b Fl(y)48866 10557 y Fj(n)p Fk(\()p Fj(m)p
+Fk(\))51256 10959 y Fw(is)4000 12287 y(small)341 b(relativ)-31
+b(e)341 b(to)f Fl(\262)p Fw(,)346 b(sp)31 b(eci\257cally)340
+b(that)h(it)f(is)f(less)g(than)h(0)p Fl(:)p Fw(1)p Fl(\262)p
+Fw(.)485 b(\(The)340 b(safet)-31 b(y)340 b(factor)h(0)p
+Fl(:)p Fw(1)f(can)g(b)31 b(e)339 b(c)-31 b(hanged)340
+b(b)-31 b(y)340 b(the)4000 13616 y(user.\))540 b(F)-92
+b(or)384 b(this,)390 b(w)-31 b(e)385 b(also)h(estimate)h(the)e(linear)h
+(con)-31 b(v)g(ergence)386 b(rate)f(constan)-31 b(t)386
+b Fl(R)393 b Fw(as)385 b(follo)-31 b(ws.)543 b(W)-92
+b(e)384 b(initialize)k Fl(R)4000 14944 y Fw(to)318 b(1,)328
+b(and)317 b(reset)f Fl(R)g Fw(=)307 b(1)318 b(when)f
+Fl(M)437 b Fw(or)317 b Fl(P)470 b Fw(is)317 b(up)31 b(dated.)476
+b(After)317 b(computing)i(a)e(correction)h Fl(\261)41774
+15110 y Fj(m)42922 14944 y Fw(=)308 b Fl(y)44674 14542
+y Fj(n)p Fk(\()p Fj(m)p Fk(\))46895 14944 y Fn(\241)142
+b Fl(y)48481 14542 y Fj(n)p Fk(\()p Fj(m)p Fg(\241)p
+Fk(1\))51693 14944 y Fw(,)4000 16272 y(w)-31 b(e)370
+b(up)31 b(date)369 b Fl(R)377 b Fw(if)370 b Fl(m)307
+b(>)h Fw(1)369 b(as)20224 17601 y Fl(R)316 b Fn(\303)307
+b Fw(max)q Fn(f)p Fw(0)p Fl(:)p Fw(3)p Fl(R)9 b(;)184
+b Fn(k)p Fl(\261)29207 17767 y Fj(m)30051 17601 y Fn(k)p
+Fl(=)p Fn(k)p Fl(\261)32202 17767 y Fj(m)p Fg(\241)p
+Fk(1)34177 17601 y Fn(kg)g Fl(:)4000 19428 y Fw(No)-31
+b(w)370 b(w)-31 b(e)370 b(use)f(the)g(estimate)11406
+21588 y Fn(k)p Fl(y)12542 21131 y Fj(n)13390 21588 y
+Fn(\241)246 b Fl(y)15080 21131 y Fj(n)p Fk(\()p Fj(m)p
+Fk(\))17160 21588 y Fn(k)308 b(\274)f(k)p Fl(y)20325
+21131 y Fj(n)p Fk(\()p Fj(m)p Fk(+1\))23772 21588 y Fn(\241)246
+b Fl(y)25462 21131 y Fj(n)p Fk(\()p Fj(m)p Fk(\))27541
+21588 y Fn(k)308 b(\274)g Fl(R)9 b Fn(k)p Fl(y)31557
+21131 y Fj(n)p Fk(\()p Fj(m)p Fk(\))33881 21588 y Fn(\241)246
+b Fl(y)35571 21131 y Fj(n)p Fk(\()p Fj(m)p Fg(\241)p
+Fk(1\))38784 21588 y Fn(k)308 b Fw(=)f Fl(R)9 b Fn(k)p
+Fl(\261)42708 21754 y Fj(m)43549 21588 y Fn(k)184 b Fl(:)4000
+23748 y Fw(Therefore)369 b(the)h(con)-31 b(v)g(ergence)370
+b(\(stopping\))h(test)f(is)24440 25908 y Fl(R)9 b Fn(k)p
+Fl(\261)26335 26074 y Fj(m)27175 25908 y Fn(k)308 b Fl(<)g
+Fw(0)p Fl(:)p Fw(1)p Fl(\262)184 b(:)4000 28068 y Fw(W)-92
+b(e)503 b(allo)-31 b(w)507 b(at)d(most)h(3)f(iterations,)540
+b(but)504 b(this)h(limit)h(can)e(b)31 b(e)503 b(c)-31
+b(hanged)505 b(b)-31 b(y)504 b(the)h(user.)895 b(W)-92
+b(e)504 b(also)g(declare)h(the)4000 29397 y(iteration)422
+b(div)-31 b(erged)421 b(if)g(an)-31 b(y)421 b Fn(k)p
+Fl(\261)17278 29563 y Fj(m)18119 29397 y Fn(k)p Fl(=)p
+Fn(k)p Fl(\261)20270 29563 y Fj(m)p Fg(\241)p Fk(1)22245
+29397 y Fn(k)393 b Fl(>)g Fw(2)420 b(with)h Fl(m)393
+b(>)f Fw(1.)646 b(If)420 b(con)-31 b(v)g(ergence)421
+b(fails)g(with)g Fl(J)526 b Fw(or)420 b Fl(P)574 b Fw(curren)-31
+b(t,)4000 30725 y(w)g(e)384 b(are)g(forced)g(to)h(reduce)e(the)h(step)g
+(size,)k(and)c(w)-31 b(e)384 b(replace)g Fl(h)30626 30891
+y Fj(n)31612 30725 y Fw(b)-31 b(y)384 b Fl(h)33802 30891
+y Fj(n)34405 30725 y Fl(=)p Fw(4.)537 b(The)384 b(in)-31
+b(tegration)387 b(is)d(halted)h(after)g(a)4000 32053
+y(preset)373 b(n)-31 b(um)g(b)31 b(er)374 b(of)g(con)-31
+b(v)g(ergence)375 b(failures;)i(the)d(default)h(v)-61
+b(alue)374 b(of)h(this)f(limit)i(is)d(10,)k(but)d(this)g(can)g(b)31
+b(e)373 b(c)-31 b(hanged)4000 33382 y(b)g(y)369 b(the)h(user.)5660
+34710 y(When)502 b Fs(spgmr)f Fw(is)h(used)f(to)i(solv)-31
+b(e)503 b(the)g(linear)g(system,)536 b(its)502 b(errors)f(m)-31
+b(ust)503 b(also)g(b)31 b(e)501 b(con)-31 b(trolled,)538
+b(and)502 b(this)4000 36038 y(also)460 b(in)-31 b(v)g(olv)g(es)461
+b(the)e(lo)31 b(cal)461 b(error)d(test)h(constan)-31
+b(t.)764 b(The)459 b(linear)h(iteration)h(error)d(in)h(the)h(solution)g
+(v)-31 b(ector)460 b Fl(\261)49956 36204 y Fj(m)51256
+36038 y Fw(is)4000 37367 y(appro)-31 b(ximated)322 b(b)-31
+b(y)320 b(the)g(preconditioned)h(residual)g(v)-31 b(ector.)476
+b(Th)-31 b(us)320 b(to)h(ensure)d(\(or)i(attempt)i(to)f(ensure\))e
+(that)i(the)4000 38695 y(linear)383 b(iteration)i(errors)c(do)i(not)g
+(in)-31 b(terfere)382 b(with)i(the)f(nonlinear)g(error)f(and)h(lo)31
+b(cal)383 b(in)-31 b(tegration)386 b(error)381 b(con)-31
+b(trols,)4000 40023 y(w)g(e)370 b(require)e(that)j(the)e(norm)h(of)f
+(the)h(preconditioned)h(residual)e(in)h Fs(spgmr)e Fw(b)31
+b(e)368 b(less)h(than)h(0)p Fl(:)p Fw(05)248 b Fn(\242)f
+Fw(\(0)p Fl(:)p Fw(1)p Fl(\262)p Fw(\).)5660 41352 y(With)430
+b(the)g(direct)g(dense)f(and)g(band)h(metho)31 b(ds,)445
+b(the)430 b(Jacobian)h(ma)-31 b(y)431 b(b)31 b(e)429
+b(supplied)g(b)-31 b(y)430 b(a)g(user)e(routine,)446
+b(or)4000 42680 y(appro)-31 b(ximated)499 b(b)-31 b(y)497
+b(di\256erence)f(quotien)-31 b(ts,)530 b(at)498 b(the)e(user's)g
+(option.)876 b(In)496 b(the)h(latter)g(case,)529 b(w)-31
+b(e)497 b(use)f(the)g(usual)4000 44008 y(appro)-31 b(ximation)19547
+45337 y Fl(J)20161 45503 y Fj(ij)21248 45337 y Fw(=)307
+b([)p Fl(f)23265 45503 y Fj(i)23634 45337 y Fw(\()p Fl(t;)184
+b(y)287 b Fw(+)246 b Fl(\276)27525 45503 y Fj(j)27991
+45337 y Fl(e)28506 45503 y Fj(j)28972 45337 y Fw(\))h
+Fn(\241)f Fl(f)31298 45503 y Fj(i)31666 45337 y Fw(\()p
+Fl(t;)184 b(y)40 b Fw(\)])p Fl(=\276)35493 45503 y Fj(j)36146
+45337 y Fl(:)4000 47164 y Fw(The)369 b(incremen)-31 b(ts)370
+b Fl(\276)12483 47330 y Fj(j)13318 47164 y Fw(are)f(giv)-31
+b(en)371 b(b)-31 b(y)21082 49696 y Fl(\276)21715 49862
+y Fj(j)22489 49696 y Fw(=)307 b(max)25902 48467 y Fh(n)26640
+48705 y Fn(p)p 27562 48705 877 45 v 991 x Fl(U)428 b
+Fn(j)p Fl(y)29596 49862 y Fj(j)30063 49696 y Fn(j)p Fl(;)184
+b(\276)31494 49862 y Fk(0)31991 49696 y Fl(W)33036 49862
+y Fj(j)33503 48467 y Fh(o)34610 49696 y Fl(;)4000 52127
+y Fw(where)470 b Fl(U)591 b Fw(is)470 b(the)h(unit)g(roundo\256,)497
+b Fl(\276)19777 52293 y Fk(0)20743 52127 y Fw(is)470
+b(a)h(dimensionless)h(v)-61 b(alue,)496 b(and)471 b Fl(W)36581
+52293 y Fj(j)37518 52127 y Fw(is)g(the)f(error)g(w)-31
+b(eigh)g(t)472 b(de\257ned)f(in)4000 53455 y(\(3.7\).)537
+b(In)383 b(the)g(dense)g(case,)k(this)d(sc)-31 b(heme)383
+b(requires)g Fl(N)504 b Fw(ev)-61 b(aluations)385 b(of)f
+Fl(f)119 b Fw(,)387 b(one)c(for)h(eac)-31 b(h)384 b(column)g(of)g
+Fl(J)106 b Fw(.)535 b(In)383 b(the)4000 54784 y(band)360
+b(case,)i(the)d(columns)i(of)f Fl(J)465 b Fw(are)360
+b(computed)g(in)g(groups)f(b)-31 b(y)360 b(the)g(Curtis-P)-31
+b(o)g(w)g(ell-Reid)363 b(algorithm,)i(with)c(the)4000
+56112 y(n)-31 b(um)g(b)31 b(er)369 b(of)h Fl(f)488 b
+Fw(ev)-61 b(aluations)371 b(equal)f(to)g(the)g(bandwidth.)5660
+57440 y(In)513 b(the)g(case)g(of)g Fs(spgmr)p Fw(,)548
+b(preconditioning)516 b(ma)-31 b(y)514 b(b)31 b(e)512
+b(used)h(on)g(the)g(left,)550 b(on)514 b(the)f(righ)-31
+b(t,)550 b(or)513 b(b)31 b(oth,)550 b(with)4000 58769
+y(user-supplied)309 b(routines)g(for)h(the)f(preconditioning)j(setup)d
+(and)g(solv)-31 b(e)310 b(op)31 b(erations,)323 b(and)310
+b(optionally)i(also)e(for)g(the)4000 60097 y(required)303
+b(matrix-v)-31 b(ector)306 b(pro)31 b(ducts)303 b Fl(J)106
+b(v)40 b Fw(.)470 b(If)303 b(a)h(routine)g(for)g Fl(J)106
+b(v)343 b Fw(is)303 b(not)i(supplied,)317 b(these)303
+b(pro)31 b(ducts)303 b(are)h(computed)4000 61425 y(as)20474
+62754 y Fl(J)106 b(v)347 b Fw(=)307 b([)p Fl(f)119 b
+Fw(\()p Fl(t;)184 b(y)288 b Fw(+)246 b Fl(\276)40 b(v)g
+Fw(\))245 b Fn(\241)h Fl(f)119 b Fw(\()p Fl(t;)184 b(y)40
+b Fw(\)])p Fl(=\276)226 b(:)14199 b Fw(\(3.8\))4000 64581
+y(The)369 b(incremen)-31 b(t)371 b Fl(\276)408 b Fw(is)369
+b(1)p Fl(=)p Fn(k)p Fl(v)40 b Fn(k)p Fw(,)371 b(so)e(that)h
+Fl(\276)40 b(v)408 b Fw(has)369 b(norm)g(1.)5660 65909
+y(A)386 b(critical)h(part)f(of)g Fs(cv)-25 b(odes)p Fw(,)390
+b(that)d(mak)-31 b(es)386 b(it)g(an)g(ODE)f(\\solv)-31
+b(er")387 b(rather)e(than)i(just)e(an)h(ODE)f(metho)31
+b(d,)391 b(is)4000 67238 y(its)337 b(con)-31 b(trol)337
+b(of)g(lo)31 b(cal)338 b(error.)481 b(A)-31 b(t)337 b(ev)-31
+b(ery)336 b(step,)343 b(the)337 b(lo)31 b(cal)337 b(error)f(is)g
+(estimated)i(and)e(required)g(to)h(satisfy)h(tolerance)4000
+68566 y(conditions,)479 b(and)455 b(the)g(step)f(is)h(redone)g(with)h
+(reduced)e(step)h(size)f(whenev)-31 b(er)455 b(that)h(error)e(test)h
+(fails.)751 b(As)455 b(with)4000 69894 y(an)-31 b(y)359
+b(linear)g(m)-31 b(ultistep)360 b(metho)31 b(d,)362 b(the)c(lo)31
+b(cal)360 b(truncation)f(error)f(L)-92 b(TE,)358 b(at)h(order)f
+Fl(q)398 b Fw(and)358 b(step)g(size)g Fl(h)p Fw(,)i(satis\257es)f(an)
+4000 71223 y(asymptotic)372 b(relation)20517 72551 y(L)-92
+b(TE)308 b(=)f Fl(C)79 b(h)25653 72094 y Fj(q)28 b Fk(+1)27263
+72551 y Fl(y)27846 72094 y Fk(\()p Fj(q)g Fk(+1\))30393
+72551 y Fw(+)246 b Fl(O)31 b Fw(\()p Fl(h)33443 72094
+y Fj(q)d Fk(+2)35053 72551 y Fw(\))4000 74379 y(for)312
+b(some)g(constan)-31 b(t)314 b Fl(C)79 b Fw(,)324 b(under)311
+b(mild)i(assumptions)g(on)f(the)g(step)g(sizes.)473 b(A)312
+b(similar)h(relation)h(holds)e(for)g(the)g(error)4000
+75707 y(in)369 b(the)h(predictor)f Fl(y)12522 75305 y
+Fj(n)p Fk(\(0\))14257 75707 y Fw(.)493 b(These)369 b(are)g(com)-31
+b(bined)371 b(to)f(get)f(a)h(relation)19946 77867 y(L)-92
+b(TE)308 b(=)f Fl(C)24444 77410 y Fg(0)24755 77867 y
+Fw([)p Fl(y)25645 77410 y Fj(n)26493 77867 y Fn(\241)246
+b Fl(y)28183 77410 y Fj(n)p Fk(\(0\))29918 77867 y Fw(])h(+)f
+Fl(O)31 b Fw(\()p Fl(h)33522 77410 y Fj(q)d Fk(+2)35132
+77867 y Fw(\))184 b Fl(:)p Black Black eop
+%%Page: 14 24
+14 23 bop Black 0 2701 a Fx(14)30377 b(Mathematical)424
+b(Considerations)p 0 3144 48001 45 v Black 0 6974 a Fw(The)300
+b(lo)31 b(cal)301 b(error)e(test)h(is)f(simply)i Fn(k)p
+Fw(L)-92 b(TE)q Fn(k)308 b(\267)f Fw(1.)470 b(Using)300
+b(the)g(ab)31 b(o)-31 b(v)g(e,)315 b(it)301 b(is)e(p)31
+b(erformed)300 b(on)g(the)f(predictor-corrector)0 8302
+y(di\256erence)369 b(\242)5876 8468 y Fj(n)6786 8302
+y Fn(\264)308 b Fl(y)8538 7900 y Fj(n)p Fk(\()p Fj(m)p
+Fk(\))10863 8302 y Fn(\241)246 b Fl(y)12553 7900 y Fj(n)p
+Fk(\(0\))14657 8302 y Fw(\(with)371 b Fl(y)18192 7900
+y Fj(n)p Fk(\()p Fj(m)p Fk(\))20640 8302 y Fw(the)f(\257nal)g(iterate)g
+(computed\),)h(and)f(tak)-31 b(es)370 b(the)f(form)19286
+10609 y Fn(k)p Fw(\242)20761 10775 y Fj(n)21365 10609
+y Fn(k)307 b(\267)h Fl(\262)g Fn(\264)f Fw(1)p Fl(=)p
+Fn(j)p Fl(C)27602 10152 y Fg(0)27915 10609 y Fn(j)184
+b Fl(:)0 12915 y Fw(If)416 b(this)g(test)h(passes,)427
+b(the)417 b(step)f(is)g(considered)g(successful.)633
+b(If)416 b(it)h(fails,)429 b(the)417 b(step)f(is)g(rejected)g(and)g(a)h
+(new)f(step)0 14243 y(size)369 b Fl(h)2735 13842 y Fg(0)3414
+14243 y Fw(is)h(computed)g(based)f(on)g(the)h(asymptotic)h(b)31
+b(eha)-31 b(vior)371 b(of)e(the)h(lo)31 b(cal)370 b(error,)f(namely)i
+(b)-31 b(y)369 b(the)h(equation)18617 16550 y(\()p Fl(h)19685
+16093 y Fg(0)19996 16550 y Fl(=h)p Fw(\))21617 16093
+y Fj(q)28 b Fk(+1)23227 16550 y Fn(k)p Fw(\242)24702
+16716 y Fj(n)25306 16550 y Fn(k)308 b Fw(=)f Fl(\262=)p
+Fw(6)184 b Fl(:)0 18856 y Fw(Here)415 b(1/6)i(is)e(a)h(safet)-31
+b(y)416 b(factor.)632 b(A)416 b(new)f(attempt)j(at)e(the)g(step)f(is)g
+(made,)428 b(and)416 b(the)g(error)e(test)i(rep)31 b(eated.)631
+b(If)415 b(it)0 20185 y(fails)376 b(three)g(times,)i(the)d(order)g
+Fl(q)415 b Fw(is)375 b(reset)g(to)h(1)g(\(if)g Fl(q)358
+b(>)318 b Fw(1\),)378 b(or)d(the)h(step)f(is)g(restarted)g(from)h
+(scratc)-31 b(h)376 b(\(if)g Fl(q)358 b Fw(=)318 b(1\).)0
+21513 y(The)439 b(ratio)h Fl(h)5700 21111 y Fg(0)6010
+21513 y Fl(=h)e Fw(is)h(limited)i(ab)31 b(o)-31 b(v)g(e)439
+b(to)h(0.2)f(after)g(t)-31 b(w)g(o)441 b(error)c(test)i(failures,)457
+b(and)439 b(limited)i(b)31 b(elo)-31 b(w)439 b(to)h(0.1)f(after)0
+22841 y(three.)492 b(After)370 b(sev)-31 b(en)369 b(failures,)h
+Fs(cv)-25 b(odes)370 b Fw(returns)e(to)i(the)f(user)g(with)h(a)f(giv)
+-31 b(e-up)371 b(message.)1660 24170 y(In)413 b(addition)j(to)e
+(adjusting)h(the)f(step)f(size)h(to)g(meet)g(the)g(lo)31
+b(cal)415 b(error)d(test,)425 b Fs(cv)-25 b(odes)414
+b Fw(p)31 b(erio)g(dically)416 b(adjusts)0 25498 y(the)376
+b(order,)i(with)f(the)g(goal)h(of)e(maximizing)k(the)c(step)g(size.)514
+b(The)376 b(in)-31 b(tegration)379 b(starts)d(out)h(at)g(order)f(1,)i
+(but)f(the)0 26826 y(order)300 b(is)h(v)-61 b(aried)301
+b(dynamically)k(after)c(that.)471 b(The)302 b(basic)f(idea)h(is)f(to)h
+(pic)-31 b(k)301 b(the)h(order)e Fl(q)341 b Fw(for)301
+b(whic)-31 b(h)302 b(a)f(p)31 b(olynomial)304 b(of)0
+28155 y(order)e Fl(q)342 b Fw(b)31 b(est)303 b(\257ts)f(the)h(discrete)
+g(data)h(in)-31 b(v)g(olv)g(ed)305 b(in)e(the)g(m)-31
+b(ultistep)304 b(metho)31 b(d.)472 b(Ho)-31 b(w)g(ev)g(er,)318
+b(if)303 b(either)g(a)g(con)-31 b(v)g(ergence)0 29483
+y(failure)414 b(or)g(an)f(error)g(test)g(failure)i(o)31
+b(ccurred)412 b(on)i(the)f(step)h(just)f(completed,)427
+b(no)413 b(c)-31 b(hange)415 b(is)e(made)h(to)g(the)g(step)0
+30811 y(size)337 b(or)h(order.)481 b(A)-31 b(t)338 b(the)g(curren)-31
+b(t)337 b(order)g Fl(q)40 b Fw(,)344 b(selecting)339
+b(a)f(new)f(step)h(size)f(is)g(done)h(exactly)h(as)f(when)f(the)h
+(error)e(test)0 32140 y(fails,)371 b(giving)g(a)e(ten)-31
+b(tativ)g(e)373 b(step)c(size)g(ratio)16566 34446 y Fl(h)17204
+33989 y Fg(0)17515 34446 y Fl(=h)307 b Fw(=)h(\()p Fl(\262=)p
+Fw(6)p Fn(k)p Fw(\242)23642 34612 y Fj(n)24247 34446
+y Fn(k)p Fw(\))25230 33989 y Fk(1)p Fj(=)p Fk(\()p Fj(q)28
+b Fk(+1\))28735 34446 y Fn(\264)307 b Fl(\264)30453 34612
+y Fj(q)31126 34446 y Fl(:)0 36753 y Fw(W)-92 b(e)307
+b(consider)h(c)-31 b(hanging)309 b(order)e(only)i(after)f(taking)i
+Fl(q)163 b Fw(+)123 b(1)308 b(steps)f(at)h(order)f Fl(q)40
+b Fw(,)320 b(and)308 b(then)g(w)-31 b(e)309 b(consider)e(only)i(orders)
+0 38081 y Fl(q)534 37679 y Fg(0)1152 38081 y Fw(=)e Fl(q)215
+b Fn(\241)175 b Fw(1)333 b(\(if)i Fl(q)347 b(>)307 b
+Fw(1\))335 b(or)e Fl(q)11542 37679 y Fg(0)12160 38081
+y Fw(=)307 b Fl(q)215 b Fw(+)175 b(1)333 b(\(if)h Fl(q)348
+b(<)307 b Fw(5\).)482 b(The)333 b(lo)31 b(cal)335 b(truncation)h(error)
+c(at)i(order)f Fl(q)38738 37679 y Fg(0)39382 38081 y
+Fw(is)g(estimated)i(using)0 39409 y(the)354 b(history)g(data.)488
+b(Then)354 b(a)f(ten)-31 b(tativ)g(e)356 b(step)e(size)f(ratio)h(is)g
+(computed)g(on)g(the)f(basis)h(that)g(this)g(error,)i(L)-92
+b(TE\()p Fl(q)46951 39008 y Fg(0)47262 39409 y Fw(\),)0
+40738 y(b)31 b(eha)-31 b(v)g(es)370 b(asymptotically)j(as)c
+Fl(h)13571 40336 y Fj(q)14005 40002 y Ff(0)14304 40336
+y Fk(+1)15480 40738 y Fw(.)492 b(With)370 b(safet)-31
+b(y)370 b(factors)g(of)g(1/6)g(and)g(1/10)h(resp)31 b(ectiv)-31
+b(ely)-92 b(,)370 b(these)f(ratios)h(are:)15259 43044
+y Fl(h)15897 42587 y Fg(0)16207 43044 y Fl(=h)308 b Fw(=)f([1)p
+Fl(=)p Fw(6)p Fn(k)p Fw(L)-92 b(TE)s(\()p Fl(q)286 b
+Fn(\241)246 b Fw(1\))p Fn(k)p Fw(])27708 42587 y Fk(1)p
+Fj(=q)29401 43044 y Fn(\264)308 b Fl(\264)31120 43210
+y Fj(q)28 b Fg(\241)p Fk(1)0 45351 y Fw(and)13836 46679
+y Fl(h)14474 46222 y Fg(0)14784 46679 y Fl(=h)308 b Fw(=)f([1)p
+Fl(=)p Fw(10)p Fn(k)p Fw(L)-92 b(TE)t(\()p Fl(q)286 b
+Fw(+)246 b(1\))p Fn(k)p Fw(])26839 46222 y Fk(1)p Fj(=)p
+Fk(\()p Fj(q)28 b Fk(+2\))30345 46679 y Fn(\264)307 b
+Fl(\264)32063 46845 y Fj(q)28 b Fk(+1)33857 46679 y Fl(:)0
+48594 y Fw(The)369 b(new)h(order)e(and)i(step)f(size)g(are)g(then)g
+(set)g(according)i(to)15336 50901 y Fl(\264)347 b Fw(=)307
+b(max)q Fn(f)p Fl(\264)20564 51067 y Fj(q)28 b Fg(\241)p
+Fk(1)22186 50901 y Fl(;)184 b(\264)23227 51067 y Fj(q)23717
+50901 y Fl(;)g(\264)24758 51067 y Fj(q)28 b Fk(+1)26368
+50901 y Fn(g)370 b Fl(;)923 b(h)29159 50443 y Fg(0)29777
+50901 y Fw(=)307 b Fl(\264)40 b(h)184 b(;)0 53207 y Fw(with)450
+b Fl(q)3135 52805 y Fg(0)3894 53207 y Fw(set)f(to)g(the)g(index)h(ac)
+-31 b(hieving)450 b(the)f(ab)31 b(o)-31 b(v)g(e)450 b(maxim)-31
+b(um.)735 b(Ho)-31 b(w)g(ev)g(er,)470 b(if)449 b(w)-31
+b(e)450 b(\257nd)e(that)i Fl(\264)480 b(<)440 b Fw(1)p
+Fl(:)p Fw(5,)470 b(w)-31 b(e)450 b(do)0 54535 y(not)394
+b(b)31 b(other)393 b(with)i(the)e(c)-31 b(hange.)566
+b(Also,)401 b Fl(h)17666 54134 y Fg(0)17976 54535 y Fl(=h)393
+b Fw(is)h(alw)-31 b(a)g(ys)395 b(limited)g(to)g(10,)400
+b(except)394 b(on)f(the)h(\257rst)f(step,)399 b(when)394
+b(it)g(is)0 55864 y(limited)371 b(to)f(10)6210 55462
+y Fk(4)6708 55864 y Fw(.)1660 57192 y(The)288 b(v)-61
+b(arious)287 b(algorithmic)j(features)e(of)f Fs(cv)-25
+b(odes)288 b Fw(describ)31 b(ed)286 b(ab)31 b(o)-31 b(v)g(e,)305
+b(as)287 b(inherited)h(from)g Fs(v)-25 b(ode)287 b Fw(and)g
+Fs(v)-25 b(odpk)p Fw(,)0 58520 y(are)369 b(do)31 b(cumen)-31
+b(ted)370 b(in)g([1)q(,)f(3)q(,)g(14)q(].)493 b(They)370
+b(are)f(also)h(summarized)g(in)f([15)r(].)1660 59849
+y(Normally)-92 b(,)413 b Fs(cv)-25 b(odes)402 b Fw(tak)-31
+b(es)403 b(steps)f(un)-31 b(til)403 b(a)g(user-de\257ned)d(output)j(v)
+-61 b(alue)403 b Fl(t)362 b Fw(=)g Fl(t)35420 60015 y
+Fk(out)37153 59849 y Fw(is)402 b(o)-31 b(v)g(ertak)g(en,)412
+b(and)403 b(then)0 61177 y(it)350 b(computes)h Fl(y)40
+b Fw(\()p Fl(t)7407 61343 y Fk(out)8738 61177 y Fw(\))350
+b(b)-31 b(y)350 b(in)-31 b(terp)31 b(olation.)489 b(Ho)-31
+b(w)g(ev)g(er,)356 b(a)350 b(\\one)g(step")g(mo)31 b(de)350
+b(option)i(is)d(a)-31 b(v)-61 b(ailable,)357 b(where)349
+b(con)-31 b(trol)0 62505 y(returns)522 b(to)h(the)h(calling)h(program)e
+(after)h(eac)-31 b(h)523 b(step.)953 b(There)523 b(are)g(also)h
+(options)g(to)f(force)g Fs(cv)-25 b(odes)523 b Fw(not)h(to)0
+63834 y(in)-31 b(tegrate)371 b(past)f(a)f(giv)-31 b(en)371
+b(stopping)f(p)31 b(oin)-31 b(t)371 b Fl(t)307 b Fw(=)g
+Fl(t)20525 64000 y Fk(stop)22207 63834 y Fw(.)0 67472
+y Fr(3.2)1793 b(F)-149 b(orw)-50 b(ard)598 b(sensitivit)-50
+b(y)601 b(analysis)0 69897 y Fw(T)-31 b(ypically)-92
+b(,)501 b(the)473 b(go)-31 b(v)g(erning)474 b(equations)f(of)g
+(complex,)500 b(large-scale)474 b(mo)31 b(dels)472 b(dep)31
+b(end)472 b(on)h(v)-61 b(arious)472 b(parameters,)0 71225
+y(through)428 b(the)g(righ)-31 b(t-hand)430 b(side)d(v)-31
+b(ector)429 b(and/or)f(through)h(the)f(v)-31 b(ector)428
+b(of)g(initial)j(conditions,)444 b(as)428 b(in)g(\(3.2\).)670
+b(In)0 72553 y(addition)435 b(to)f(n)-31 b(umerically)436
+b(solving)e(the)g(ODEs,)449 b(it)434 b(ma)-31 b(y)434
+b(b)31 b(e)433 b(desirable)g(to)h(determine)g(the)g(sensitivit)-31
+b(y)435 b(of)f(the)0 73882 y(results)371 b(with)h(resp)31
+b(ect)370 b(to)i(the)f(mo)31 b(del)372 b(parameters.)498
+b(Suc)-31 b(h)371 b(sensitivit)-31 b(y)373 b(information)h(can)d(b)31
+b(e)371 b(used)f(to)i(estimate)0 75210 y(whic)-31 b(h)323
+b(parameters)f(are)g(most)h(in\260uen)-31 b(tial)324
+b(in)e(a\256ecting)h(the)g(b)31 b(eha)-31 b(vior)322
+b(of)h(the)f(sim)-31 b(ulation)325 b(or)d(to)g(ev)-61
+b(aluate)324 b(opti-)0 76539 y(mization)388 b(gradien)-31
+b(ts)386 b(\(in)g(the)g(setting)h(of)e(dynamic)i(optimization,)394
+b(parameter)386 b(estimation,)393 b(optimal)388 b(con)-31
+b(trol,)0 77867 y(etc.\).)p Black Black eop
+%%Page: 15 25
+15 24 bop Black 4000 2701 a Fx(3.2)425 b(F)-106 b(orw)-35
+b(ard)425 b(sensitivit)-35 b(y)424 b(analysis)29254 b(15)p
+4000 3144 48001 45 v Black 5660 6974 a Fw(The)393 b Fq(solution)417
+b(sensitivity)394 b Fw(with)g(resp)31 b(ect)392 b(to)h(the)g(mo)31
+b(del)393 b(parameter)g Fl(p)36251 7140 y Fj(i)37012
+6974 y Fw(is)g(de\257ned)f(as)g(the)h(v)-31 b(ector)394
+b Fl(s)49164 7140 y Fj(i)49532 6974 y Fw(\()p Fl(t)p
+Fw(\))347 b(=)4000 8302 y Fl(@)61 b(y)40 b Fw(\()p Fl(t)p
+Fw(\))p Fl(=@)61 b(p)8251 8468 y Fj(i)8966 8302 y Fw(and)346
+b(satis\257es)g(the)g(follo)-31 b(wing)350 b Fq(forwar)-57
+b(d)374 b(sensitivity)i(e)-57 b(quations)346 b Fw(\(or)g(in)h(short)e
+Fq(sensitivity)376 b(e)-57 b(quations)p Fw(\):)19273
+11178 y(_)-474 b Fl(s)19625 11344 y Fj(i)20301 11178
+y Fw(=)21602 10429 y Fl(@)61 b(f)p 21602 10924 1311 45
+v 21641 11938 a(@)g(y)23045 11178 y(s)23564 11344 y Fj(i)24179
+11178 y Fw(+)25551 10429 y Fl(@)g(f)p 25418 10924 1575
+45 v 25418 11938 a(@)g(p)26624 12104 y Fj(i)27310 11178
+y Fl(;)1292 b(s)29428 11344 y Fj(i)29797 11178 y Fw(\()p
+Fl(t)30627 11344 y Fk(0)31124 11178 y Fw(\))308 b(=)33163
+10429 y Fl(@)61 b(y)34355 10595 y Fk(0)34851 10429 y
+Fw(\()p Fl(p)p Fw(\))p 33163 10924 3107 45 v 33929 11938
+a Fl(@)g(p)35135 12104 y Fj(i)36587 11178 y Fl(;)12831
+b Fw(\(3.9\))4000 14003 y(obtained)371 b(b)-31 b(y)369
+b(applying)i(the)f(c)-31 b(hain)370 b(rule)f(of)h(di\256eren)-31
+b(tiation)372 b(to)d(the)h(original)h(ODEs)e(\(3.2\).)5660
+15332 y(When)459 b(p)31 b(erforming)460 b(forw)-31 b(ard)460
+b(sensitivit)-31 b(y)461 b(analysis,)484 b Fs(cv)-25
+b(odes)459 b Fw(carries)g(out)h(the)f(time)i(in)-31 b(tegration)462
+b(of)e(the)4000 16660 y(com)-31 b(bined)300 b(system,)314
+b(\(3.2\))301 b(and)e(\(3.9\),)316 b(b)-31 b(y)299 b(viewing)i(it)e(as)
+g(an)g(ODE)g(system)g(of)g(size)g Fl(N)121 b Fw(\()p
+Fl(N)41478 16826 y Fj(s)42057 16660 y Fw(+)105 b(1\),)315
+b(where)299 b Fl(N)48648 16826 y Fj(s)49420 16660 y Fw(is)g(the)4000
+17988 y(n)-31 b(um)g(b)31 b(er)308 b(of)g(mo)31 b(del)309
+b(parameters)f Fl(p)18625 18154 y Fj(i)18993 17988 y
+Fw(,)321 b(with)309 b(resp)31 b(ect)307 b(to)h(the)g(desired)f
+(sensitivities)j(\()p Fl(N)39857 18154 y Fj(s)40638 17988
+y Fn(\267)e Fl(N)42696 18154 y Fj(p)43208 17988 y Fw(\).)472
+b(Ho)-31 b(w)g(ev)g(er,)322 b(ma)61 b(jor)4000 19317
+y(impro)-31 b(v)g(emen)g(ts)421 b(in)d(e\261ciency)i(can)e(b)31
+b(e)418 b(made)i(b)-31 b(y)418 b(taking)j(adv)-61 b(an)-31
+b(tage)420 b(of)f(the)g(sp)31 b(ecial)419 b(form)g(of)g(the)g
+(sensitivit)-31 b(y)4000 20645 y(equations)386 b(as)f(linearizations)j
+(of)d(the)g(original)i(ODEs.)538 b(In)385 b(particular,)390
+b(for)385 b(sti\256)g(systems,)k(for)c(whic)-31 b(h)385
+b Fs(cv)-25 b(odes)4000 21973 y Fw(emplo)-31 b(ys)458
+b(a)g(Newton)g(iteration,)482 b(the)457 b(original)j(ODE)c(system)i
+(and)f(all)h(sensitivit)-31 b(y)460 b(systems)d(share)f(the)h(same)4000
+23302 y(Jacobian)371 b(matrix,)g(and)e(therefore)h(the)f(same)h
+(iteration)h(matrix)g Fl(M)489 b Fw(in)370 b(\(3.6\).)5660
+24630 y(The)458 b(sensitivit)-31 b(y)459 b(equations)f(are)f(solv)-31
+b(ed)458 b(with)g(the)g(same)f(linear)h(m)-31 b(ultistep)459
+b(form)-31 b(ula)459 b(that)f(w)-31 b(as)457 b(selected)4000
+25958 y(for)435 b(the)f(original)j(ODEs)d(and,)451 b(if)435
+b(Newton)h(iteration)h(w)-31 b(as)435 b(selected,)451
+b(the)435 b(same)g(linear)g(solv)-31 b(er)435 b(is)f(used)g(in)h(the)
+4000 27287 y(correction)423 b(phase)e(for)h(b)31 b(oth)423
+b(state)f(and)h(sensitivit)-31 b(y)424 b(v)-61 b(ariables.)651
+b(In)421 b(addition,)438 b Fs(cv)-25 b(odes)423 b Fw(o\256ers)e(the)h
+(option)h(of)4000 28615 y(including)442 b(\()p Fq(ful)57
+b(l)462 b(err)-57 b(or)462 b(c)-57 b(ontr)g(ol)p Fw(\))441
+b(or)f(excluding)i(\()p Fq(p)-57 b(artial)462 b(err)-57
+b(or)461 b(c)-57 b(ontr)g(ol)p Fw(\))442 b(the)e(sensitivit)-31
+b(y)443 b(v)-61 b(ariables)441 b(from)h(the)4000 29944
+y(lo)31 b(cal)371 b(error)d(test.)4000 33008 y Fo(3.2.1)1495
+b(F)-125 b(orw)-42 b(ard)502 b(sensitivit)-42 b(y)499
+b(metho)42 b(ds)4000 35051 y Fw(In)414 b(what)i(follo)-31
+b(ws)416 b(w)-31 b(e)415 b(brie\260y)g(describ)31 b(e)413
+b(three)h(metho)31 b(ds)415 b(that)h(ha)-31 b(v)g(e)415
+b(b)31 b(een)414 b(prop)31 b(osed)414 b(for)h(the)f(solution)j(of)e
+(the)4000 36380 y(com)-31 b(bined)371 b(ODE)d(and)i(sensitivit)-31
+b(y)371 b(system)f(for)f(the)g(v)-31 b(ector)446 b(^)-629
+b Fl(y)347 b Fw(=)308 b([)p Fl(y)40 b(;)184 b(s)33757
+36546 y Fk(1)34254 36380 y Fl(;)g(:)g(:)g(:)k(;)c(s)37232
+36546 y Fj(N)37933 36657 y Fi(s)38416 36380 y Fw(].)p
+Black 5660 38618 a Fn(\262)p Black 554 w Fq(Stagger)-57
+b(e)g(d)397 b(Dir)-57 b(e)g(ct)6767 40349 y Fw(In)275
+b(this)h(approac)-31 b(h)276 b([7)q(],)295 b(the)276
+b(nonlinear)g(system)g(\(3.4\))h(is)f(\257rst)e(solv)-31
+b(ed)276 b(and,)295 b(once)276 b(an)f(acceptable)i(n)-31
+b(umerical)6767 41678 y(solution)297 b(is)e(obtained,)312
+b(the)296 b(sensitivit)-31 b(y)297 b(v)-61 b(ariables)296
+b(at)f(the)h(new)f(step)g(are)g(found)h(b)-31 b(y)295
+b(directly)h(solving)h(\(3.9\))6767 43006 y(after)372
+b(the)g(\(BDF)f(or)g(Adams\))h(discretization)h(is)f(used)e(to)i
+(eliminate)541 b(_)-474 b Fl(s)37121 43172 y Fj(i)37490
+43006 y Fw(.)498 b(Although)373 b(the)f(system)f(matrix)6767
+44334 y(of)350 b(the)f(ab)31 b(o)-31 b(v)g(e)350 b(linear)f(system)g
+(is)g(based)f(on)h(exactly)i(the)d(same)i(information)h(as)e(the)g
+(matrix)h Fl(M)469 b Fw(in)349 b(\(3.6\),)6767 45663
+y(it)499 b(m)-31 b(ust)499 b(b)31 b(e)498 b(up)31 b(dated)499
+b(and)f(factored)h(at)g(ev)-31 b(ery)498 b(step)g(of)h(the)g(in)-31
+b(tegration,)533 b(in)499 b(con)-31 b(trast)499 b(to)g
+Fl(M)619 b Fw(whic)-31 b(h)6767 46991 y(is)462 b(up)31
+b(dated)462 b(only)h(o)31 b(ccasionally)-92 b(.)773 b(F)-92
+b(or)461 b(problems)h(with)h(man)-31 b(y)463 b(parameters)f(\(relativ)
+-31 b(e)464 b(to)e(the)g(problem)6767 48319 y(size\),)317
+b(the)302 b(staggered)g(direct)h(metho)31 b(d)302 b(can)h(outp)31
+b(erform)302 b(the)g(metho)31 b(ds)303 b(describ)31 b(ed)301
+b(b)31 b(elo)-31 b(w)303 b([21)q(].)471 b(Ho)-31 b(w)g(ev)g(er,)6767
+49648 y(the)371 b(computational)j(cost)d(asso)31 b(ciated)372
+b(with)f(matrix)h(up)31 b(dates)371 b(and)f(factorizations)k(mak)-31
+b(es)371 b(this)g(metho)31 b(d)6767 50976 y(unattractiv)-31
+b(e)352 b(for)e(problems)g(with)g(man)-31 b(y)351 b(more)f(states)f
+(than)i(parameters)e(\(suc)-31 b(h)350 b(as)f(those)h(arising)g(from)
+6767 52305 y(semidiscretization)372 b(of)e(PDEs\))g(and)f(is)g
+(therefore)g(not)h(implemen)-31 b(ted)372 b(in)d Fs(cv)-25
+b(odes)p Fw(.)p Black 5660 54439 a Fn(\262)p Black 554
+w Fq(Simultane)-57 b(ous)397 b(Corr)-57 b(e)g(ctor)6767
+56171 y Fw(In)335 b(this)g(metho)31 b(d)335 b([22)r(],)342
+b(the)335 b(discretization)i(is)d(applied)i(sim)-31 b(ultaneously)338
+b(to)d(b)31 b(oth)335 b(the)g(original)i(equations)6767
+57499 y(\(3.2\))372 b(and)d(the)h(sensitivit)-31 b(y)371
+b(systems)e(\(3.9\))j(resulting)e(in)f(the)g(follo)-31
+b(wing)373 b(nonlinear)e(system)19918 59577 y(^)19668
+59857 y Fl(G)p Fw(\()76 b(^)-629 b Fl(y)21511 60023 y
+Fj(n)22114 59857 y Fw(\))308 b Fn(\264)383 b Fw(^)-629
+b Fl(y)24563 60023 y Fj(n)25411 59857 y Fn(\241)246 b
+Fl(h)27156 60023 y Fj(n)27759 59857 y Fl(\257)28385 60023
+y Fj(n;)p Fk(0)29930 59565 y Fw(^)29692 59857 y Fl(f)119
+b Fw(\()p Fl(t)31183 60023 y Fj(n)31785 59857 y Fl(;)446
+b Fw(^)-629 b Fl(y)33005 60023 y Fj(n)33607 59857 y Fw(\))247
+b Fn(\241)261 b Fw(^)-568 b Fl(a)35976 60023 y Fj(n)36886
+59857 y Fw(=)307 b(0)184 b Fl(;)6767 62255 y Fw(where)10223
+61963 y(^)9985 62255 y Fl(f)453 b Fw(=)335 b([)p Fl(f)119
+b Fw(\()p Fl(t;)184 b(y)40 b(;)184 b(p)p Fw(\))p Fl(;)g(:)g(:)g(:)190
+b(;)184 b Fw(\()p Fl(@)61 b(f)119 b(=@)61 b(y)40 b Fw(\)\()p
+Fl(t;)184 b(y)40 b(;)184 b(p)p Fw(\))p Fl(s)26843 62421
+y Fj(i)27473 62255 y Fw(+)257 b(\()p Fl(@)61 b(f)119
+b(=@)61 b(p)32090 62421 y Fj(i)32460 62255 y Fw(\)\()p
+Fl(t;)184 b(y)40 b(;)184 b(p)p Fw(\))p Fl(;)g(:)g(:)g(:)6
+b Fw(],)390 b(and)401 b(^)-568 b Fl(a)41816 62421 y Fj(n)42803
+62255 y Fw(is)386 b(comprised)g(of)g(the)6767 63583 y(terms)468
+b(in)h(the)f(discretization)i(that)g(dep)31 b(end)467
+b(on)h(the)h(solution)h(at)e(previous)h(in)-31 b(tegration)471
+b(steps.)788 b(This)6767 64912 y(com)-31 b(bined)511
+b(nonlinear)g(system)f(can)g(b)31 b(e)509 b(solv)-31
+b(ed)510 b(using)g(a)g(mo)31 b(di\257ed)511 b(Newton)g(metho)31
+b(d)510 b(as)g(in)g(\(3.5\))i(b)-31 b(y)6767 66240 y(solving)371
+b(the)f(corrector)f(equation)21687 68198 y(^)21274 68478
+y Fl(M)121 b Fw([)76 b(^)-629 b Fl(y)23319 68678 y Fj(n)p
+Fk(\()p Fj(m)p Fk(+1\))26765 68478 y Fn(\241)322 b Fw(^)-629
+b Fl(y)28415 68678 y Fj(n)p Fk(\()p Fj(m)p Fk(\))30495
+68478 y Fw(])308 b(=)g Fn(\241)33390 68198 y Fw(^)33140
+68478 y Fl(G)p Fw(\()76 b(^)-629 b Fl(y)34983 68678 y
+Fj(n)p Fk(\()p Fj(m)p Fk(\))37063 68478 y Fw(\))11678
+b(\(3.10\))6767 70716 y(at)370 b(eac)-31 b(h)370 b(iteration,)i(where)
+21039 74728 y(^)20626 75008 y Fl(M)428 b Fw(=)23297 71122
+y Fh(2)23297 73071 y(6)23297 73735 y(6)23297 74399 y(6)23297
+75063 y(6)23297 75727 y(6)23297 76436 y(4)25083 71972
+y Fl(M)24378 73300 y Fn(\241)p Fl(\260)61 b(J)26487 73466
+y Fk(1)28434 73300 y Fl(M)24378 74628 y Fn(\241)p Fl(\260)g(J)26487
+74794 y Fk(2)28754 74628 y Fw(0)1477 b Fl(M)25527 75808
+y Fw(.)25527 76251 y(.)25527 76694 y(.)28877 75808 y(.)28877
+76251 y(.)28877 76694 y(.)30797 75919 y(.)31227 76251
+y(.)31658 76583 y(.)33195 75919 y(.)33626 76251 y(.)34056
+76583 y(.)24035 78022 y Fn(\241)p Fl(\260)61 b(J)26144
+78188 y Fj(N)26845 78299 y Fi(s)28754 78022 y Fw(0)1428
+b Fl(:)184 b(:)g(:)1479 b Fw(0)d Fl(M)36727 71122 y Fh(3)36727
+73071 y(7)36727 73735 y(7)36727 74399 y(7)36727 75063
+y(7)36727 75727 y(7)36727 76436 y(5)37834 75008 y Fl(;)p
+Black Black eop
+%%Page: 16 26
+16 25 bop Black 0 2701 a Fx(16)30377 b(Mathematical)424
+b(Considerations)p 0 3144 48001 45 v Black 2767 6974
+a Fl(M)469 b Fw(is)349 b(de\257ned)g(as)f(in)h(\(3.6\),)356
+b(and)349 b Fl(J)17487 7140 y Fj(i)18162 6974 y Fw(=)308
+b(\()p Fl(@)61 b(=@)g(y)41 b Fw(\))184 b([)q(\()p Fl(@)61
+b(f)119 b(=@)61 b(y)40 b Fw(\))p Fl(s)27592 7140 y Fj(i)28208
+6974 y Fw(+)246 b(\()p Fl(@)61 b(f)119 b(=@)61 b(p)32814
+7140 y Fj(i)33184 6974 y Fw(\)])q(.)485 b(It)349 b(can)g(b)31
+b(e)348 b(sho)-31 b(wn)350 b(that)f(2-step)2767 8302
+y(quadratic)412 b(con)-31 b(v)g(ergence)411 b(can)g(b)31
+b(e)409 b(attained)k(b)-31 b(y)410 b(using)h(only)g(the)f(blo)31
+b(c)-31 b(k-diagonal)415 b(p)31 b(ortion)411 b(of)43938
+8022 y(^)43525 8302 y Fl(M)531 b Fw(in)411 b(the)2767
+9631 y(corrector)469 b(equation)h(\(3.10\).)794 b(This)468
+b(results)g(in)h(a)g(decoupling)h(that)g(allo)-31 b(ws)471
+b(the)d(reuse)g(of)h Fl(M)589 b Fw(without)2767 10959
+y(additional)485 b(matrix)d(factorizations.)832 b(Ho)-31
+b(w)g(ev)g(er,)511 b(the)481 b(pro)31 b(ducts)481 b(\()p
+Fl(@)61 b(f)119 b(=@)61 b(y)40 b Fw(\))p Fl(s)35556 11125
+y Fj(i)36406 10959 y Fw(and)482 b(the)f(v)-31 b(ectors)482
+b Fl(@)61 b(f)119 b(=@)61 b(p)47631 11125 y Fj(i)2767
+12287 y Fw(m)-31 b(ust)389 b(still)h(b)31 b(e)388 b(reev)-61
+b(aluated)389 b(at)g(eac)-31 b(h)389 b(step)f(of)h(the)g(iterativ)-31
+b(e)390 b(pro)31 b(cess)387 b(\(3.10\))k(to)e(up)31 b(date)389
+b(the)g(sensitivit)-31 b(y)2767 13616 y(p)31 b(ortions)370
+b(of)g(the)f(residual)14660 13336 y(^)14409 13616 y Fl(G)p
+Fw(.)p Black 1660 15723 a Fn(\262)p Black 554 w Fq(Stagger)-57
+b(e)g(d)397 b(c)-57 b(orr)g(e)g(ctor)2767 17441 y Fw(In)395
+b(this)h(approac)-31 b(h)397 b([10)q(],)403 b(as)395
+b(in)h(the)g(staggered)g(direct)g(metho)31 b(d,)403 b(the)396
+b(nonlinear)g(system)g(\(3.4\))i(is)d(solv)-31 b(ed)2767
+18770 y(\257rst)397 b(using)g(the)h(Newton)g(iteration)i(\(3.5\).)578
+b(Then)398 b(a)f(separate)g(Newton)i(iteration)g(is)e(used)g(to)h(solv)
+-31 b(e)398 b(the)2767 20098 y(sensitivit)-31 b(y)372
+b(system)d(\(3.9\):)3874 22815 y Fl(M)121 b Fw([)p Fl(s)5895
+22240 y Fj(n)p Fk(\()p Fj(m)p Fk(+1\))5895 23124 y Fj(i)9342
+22815 y Fn(\241)246 b Fl(s)10968 22240 y Fj(n)p Fk(\()p
+Fj(m)p Fk(\))10968 23124 y Fj(i)13048 22815 y Fw(])308
+b(=)15049 25262 y Fn(\241)16156 23701 y Fh(\267)16740
+25262 y Fl(s)17259 24687 y Fj(n)p Fk(\()p Fj(m)p Fk(\))17259
+25570 y Fj(i)19585 25262 y Fn(\241)246 b Fl(\260)21511
+23701 y Fh(\265)22458 24513 y Fl(@)61 b(f)p 22458 25007
+1311 45 v 22497 26021 a(@)g(y)23901 25262 y Fw(\()p Fl(t)24731
+25428 y Fj(n)25334 25262 y Fl(;)184 b(y)26408 24805 y
+Fj(n)27011 25262 y Fl(;)g(p)p Fw(\))p Fl(s)29008 24687
+y Fj(n)p Fk(\()p Fj(m)p Fk(\))29008 25570 y Fj(i)31335
+25262 y Fw(+)32707 24513 y Fl(@)61 b(f)p 32575 25007
+1575 45 v 32575 26021 a(@)g(p)33781 26187 y Fj(i)34283
+25262 y Fw(\()p Fl(t)35113 25428 y Fj(n)35715 25262 y
+Fl(;)184 b(y)36789 24805 y Fj(n)37392 25262 y Fl(;)g(p)p
+Fw(\))38870 23701 y Fh(\266)39933 25262 y Fn(\241)246
+b Fl(a)41625 25428 y Fj(i;n)42803 23701 y Fh(\270)43757
+25262 y Fl(;)1107 b Fw(\(3.11\))2767 28310 y(where)426
+b Fl(a)6610 28476 y Fj(i;n)8191 28310 y Fw(=)9454 27480
+y Fh(P)10623 28643 y Fj(j)45 b(>)p Fk(0)12222 28310 y
+Fw(\()p Fl(\256)13360 28476 y Fj(n;j)14637 28310 y Fl(s)15156
+27779 y Fj(n)p Fg(\241)p Fj(j)15156 28619 y(i)17146 28310
+y Fw(+)284 b Fl(h)18929 28476 y Fj(n)19531 28310 y Fl(\257)20157
+28476 y Fj(n;j)21601 28310 y Fw(_)-474 b Fl(s)21953 27779
+y Fj(n)p Fg(\241)p Fj(j)21953 28619 y(i)23658 28310 y
+Fw(\).)663 b(In)426 b(other)g(w)-31 b(ords,)441 b(a)426
+b(mo)31 b(di\257ed)427 b(Newton)h(iteration)g(is)2767
+29639 y(used)483 b(to)g(solv)-31 b(e)484 b(a)f(linear)g(system.)834
+b(In)482 b(this)h(approac)-31 b(h,)513 b(the)483 b(v)-31
+b(ectors)483 b Fl(@)61 b(f)119 b(=@)61 b(p)36322 29805
+y Fj(i)37174 29639 y Fw(need)482 b(b)31 b(e)483 b(up)31
+b(dated)483 b(only)2767 30967 y(once)361 b(p)31 b(er)360
+b(in)-31 b(tegration)364 b(step,)f(after)e(the)g(state)h(correction)g
+(phase)e(\(3.5\))j(has)e(con)-31 b(v)g(erged.)491 b(Note)362
+b(also)g(that)2767 32296 y(Jacobian-related)299 b(data)e(can)f(b)31
+b(e)295 b(reused)g(at)i(all)g(iterations)h(\(3.11\))g(to)f(ev)-61
+b(aluate)297 b(the)f(pro)31 b(ducts)296 b(\()p Fl(@)61
+b(f)119 b(=@)61 b(y)40 b Fw(\))p Fl(s)47323 32462 y Fj(i)47693
+32296 y Fw(.)1660 34466 y Fs(cv)-25 b(odes)277 b Fw(implemen)-31
+b(ts)278 b(the)f(sim)-31 b(ultaneous)278 b(corrector)f(metho)31
+b(d)277 b(and)f(t)-31 b(w)g(o)278 b(\260a)-31 b(v)g(ors)277
+b(of)g(the)g(staggered)g(corrector)0 35794 y(metho)31
+b(d)332 b(whic)-31 b(h)333 b(di\256er)e(only)h(if)g(the)g(sensitivit)
+-31 b(y)333 b(v)-61 b(ariables)332 b(are)f(included)i(in)e(the)h(error)
+e(con)-31 b(trol)333 b(test.)481 b(In)330 b(the)i Fq(ful)57
+b(l)0 37122 y(err)-57 b(or)465 b(c)-57 b(ontr)g(ol)444
+b Fw(case,)463 b(the)445 b(\257rst)e(v)-61 b(arian)-31
+b(t)445 b(of)g(the)g(staggered)f(corrector)g(metho)31
+b(d)446 b(requires)d(the)h(con)-31 b(v)g(ergence)445
+b(of)0 38451 y(the)319 b(iterations)j(\(3.11\))g(for)d(all)h
+Fl(N)13904 38617 y Fj(s)14697 38451 y Fw(sensitivit)-31
+b(y)321 b(systems)f(and)f(then)h(p)31 b(erforms)318 b(the)i(error)e
+(test)i(on)f(the)h(sensitivit)-31 b(y)0 39779 y(v)-61
+b(ariables.)619 b(The)411 b(second)g(v)-61 b(arian)-31
+b(t)412 b(of)g(the)f(metho)31 b(d)412 b(will)h(p)31 b(erform)411
+b(the)g(error)f(test)h(for)g(eac)-31 b(h)412 b(sensitivit)-31
+b(y)413 b(v)-31 b(ector)0 41107 y Fl(s)519 41273 y Fj(i)887
+41107 y Fw(,)508 b(\()p Fl(i)493 b Fw(=)f(1)p Fl(;)184
+b Fw(2)p Fl(;)g(:)g(:)g(:)190 b(;)184 b(N)9306 41273
+y Fj(s)9780 41107 y Fw(\))480 b(individually)-92 b(,)511
+b(as)480 b(they)g(pass)f(the)h(con)-31 b(v)g(ergence)481
+b(test.)825 b(Di\256erences)478 b(in)j(p)31 b(erformance)0
+42436 y(b)g(et)-31 b(w)g(een)364 b(the)f(t)-31 b(w)g(o)364
+b(v)-61 b(arian)-31 b(ts)364 b(ma)-31 b(y)364 b(therefore)f(b)31
+b(e)362 b(noticed)i(whenev)-31 b(er)363 b(one)g(of)g(the)g(sensitivit)
+-31 b(y)365 b(v)-31 b(ectors)364 b Fl(s)44410 42602 y
+Fj(i)45141 42436 y Fw(fails)g(a)0 43764 y(con)-31 b(v)g(ergence)370
+b(or)f(error)f(test.)1660 45092 y(An)479 b(imp)31 b(ortan)-31
+b(t)481 b(observ)-61 b(ation)480 b(is)e(that)i(the)f(staggered)h
+(corrector)f(metho)31 b(d,)507 b(com)-31 b(bined)480
+b(with)g(the)f Fs(spgmr)0 46421 y Fw(linear)519 b(solv)-31
+b(er,)556 b(e\256ectiv)-31 b(ely)520 b(results)e(in)h(a)f(staggered)h
+(direct)g(metho)31 b(d.)940 b(Indeed,)556 b Fs(spgmr)517
+b Fw(requires)g(only)j(the)0 47749 y(action)331 b(of)f(the)f(matrix)i
+Fl(M)449 b Fw(on)330 b(a)f(v)-31 b(ector)330 b(and)g(this)f(can)g(b)31
+b(e)329 b(pro)-31 b(vided)330 b(with)g(the)g(curren)-31
+b(t)329 b(Jacobian)h(information.)0 49077 y(Therefore,)370
+b(the)f(mo)31 b(di\257ed)370 b(Newton)h(pro)31 b(cedure)368
+b(\(3.11\))k(will)f(theoretically)h(con)-31 b(v)g(erge)370
+b(after)g(one)f(iteration.)0 52130 y Fo(3.2.2)1495 b(Selection)499
+b(of)f(the)h(absolute)g(tolerances)h(for)f(sensitivit)-42
+b(y)499 b(v)-83 b(ariables)0 54174 y Fw(If)539 b(the)h(sensitivities)h
+(are)e(included)h(in)g(the)f(error)f(test,)583 b Fs(cv)-25
+b(odes)540 b Fw(pro)-31 b(vides)540 b(an)f(automated)j(estimation)g(of)
+0 55502 y(absolute)294 b(tolerances)g(for)f(the)g(sensitivit)-31
+b(y)295 b(v)-61 b(ariables)293 b(based)g(on)g(the)g(absolute)i
+(tolerance)f(for)f(the)g(corresp)31 b(onding)0 56830
+y(state)397 b(v)-61 b(ariable.)574 b(The)397 b(relativ)-31
+b(e)398 b(tolerance)f(for)f(sensitivit)-31 b(y)398 b(v)-61
+b(ariables)397 b(is)f(set)g(to)h(b)31 b(e)396 b(the)g(same)g(as)g(for)h
+(the)f(state)0 58159 y(v)-61 b(ariables.)463 b(The)278
+b(selection)i(of)f(absolute)g(tolerances)g(for)f(the)h(sensitivit)-31
+b(y)280 b(v)-61 b(ariables)279 b(is)f(based)g(on)g(the)h(observ)-61
+b(ation)0 59487 y(that)321 b(the)f(sensitivit)-31 b(y)321
+b(v)-31 b(ector)321 b Fl(s)13220 59653 y Fj(i)13907 59487
+y Fw(will)h(ha)-31 b(v)g(e)320 b(units)g(of)g([)p Fl(y)40
+b Fw(])p Fl(=)p Fw([)p Fl(p)25000 59653 y Fj(i)25370
+59487 y Fw(].)476 b(With)320 b(this,)331 b(the)319 b(absolute)i
+(tolerance)g(for)f(the)f Fl(j)63 b Fw(-th)0 60815 y(comp)31
+b(onen)-31 b(t)361 b(of)g(the)f(sensitivit)-31 b(y)362
+b(v)-31 b(ector)360 b Fl(s)17891 60981 y Fj(i)18620 60815
+y Fw(is)f(set)h(to)h Fs(a)-74 b(tol)25317 60981 y Fj(j)25783
+60815 y Fl(=)p Fn(j)94 b Fw(\271)-647 b Fl(p)27200 60981
+y Fj(i)27570 60815 y Fn(j)p Fw(,)362 b(where)e Fs(a)-74
+b(tol)34269 60981 y Fj(j)35095 60815 y Fw(are)360 b(the)g(absolute)h
+(tolerances)0 62144 y(for)471 b(the)g(state)g(v)-61 b(ariables)472
+b(and)565 b(\271)-647 b Fl(p)470 b Fw(is)h(a)g(v)-31
+b(ector)471 b(of)g(scaling)h(factors)g(that)g(are)e(dimensionally)k
+(consisten)-31 b(t)472 b(with)0 63472 y(the)391 b(mo)31
+b(del)393 b(parameters)e Fl(p)g Fw(and)h(giv)-31 b(e)392
+b(an)g(indication)i(of)e(their)f(order)g(of)g(magnitude.)561
+b(This)392 b(c)-31 b(hoice)392 b(of)g(relativ)-31 b(e)0
+64800 y(and)404 b(absolute)h(tolerances)g(is)e(equiv)-61
+b(alen)-31 b(t)406 b(to)f(requiring)f(that)h(the)f(w)-31
+b(eigh)g(ted)406 b(ro)31 b(ot-mean-square)405 b(norm)f(of)h(the)0
+66129 y(sensitivit)-31 b(y)399 b(v)-31 b(ector)398 b
+Fl(s)9169 66295 y Fj(i)9934 66129 y Fw(with)g(w)-31 b(eigh)g(ts)399
+b(based)d(on)i Fl(s)21646 66295 y Fj(i)22411 66129 y
+Fw(b)31 b(e)396 b(the)h(same)g(as)g(the)g(w)-31 b(eigh)g(ted)399
+b(ro)31 b(ot-mean-square)399 b(norm)0 67457 y(of)389
+b(the)f(v)-31 b(ector)389 b(of)f(scaled)g(sensitivities)434
+b(\271)-597 b Fl(s)17602 67623 y Fj(i)18309 67457 y Fw(=)339
+b Fn(j)94 b Fw(\271)-647 b Fl(p)20373 67623 y Fj(i)20742
+67457 y Fn(j)p Fl(s)21568 67623 y Fj(i)22325 67457 y
+Fw(with)389 b(w)-31 b(eigh)g(ts)390 b(based)e(on)g(the)g(state)h(v)-61
+b(ariables)389 b(\(the)f(scaled)0 68786 y(sensitivities)554
+b(\271)-598 b Fl(s)6610 68952 y Fj(i)7486 68786 y Fw(b)31
+b(eing)508 b(dimensionally)j(consisten)-31 b(t)509 b(with)g(the)f
+(state)g(v)-61 b(ariables\).)909 b(Ho)-31 b(w)g(ev)g(er,)545
+b(this)508 b(c)-31 b(hoice)508 b(of)0 70114 y(tolerances)380
+b(for)f(the)h Fl(s)9325 70280 y Fj(i)10072 70114 y Fw(ma)-31
+b(y)381 b(b)31 b(e)379 b(a)g(p)31 b(o)g(or)379 b(one,)k(and)c(the)h
+(user)e(of)h Fs(cv)-25 b(odes)380 b Fw(can)g(pro)-31
+b(vide)380 b(di\256eren)-31 b(t)379 b(v)-61 b(alues)379
+b(as)h(an)0 71442 y(option.)0 74495 y Fo(3.2.3)1495 b(Ev)-83
+b(aluation)500 b(of)e(the)g(sensitivit)-42 b(y)500 b(righ)-42
+b(t-hand)501 b(side)0 76539 y Fw(There)443 b(are)f(sev)-31
+b(eral)444 b(metho)31 b(ds)443 b(for)g(ev)-61 b(aluating)445
+b(the)e(righ)-31 b(t-hand)444 b(side)f(of)h(the)f(sensitivit)-31
+b(y)445 b(systems)d(\(3.9\):)643 b(an-)0 77867 y(alytic)422
+b(ev)-61 b(aluation,)436 b(automatic)424 b(di\256eren)-31
+b(tiation,)436 b(complex-step)422 b(appro)-31 b(ximation,)437
+b(and)421 b(\257nite)g(di\256erences)e(\(or)p Black Black
+eop
+%%Page: 17 27
+17 26 bop Black 4000 2701 a Fx(3.3)425 b(Adjoin)-35 b(t)425
+b(sensitivit)-35 b(y)423 b(analysis)29629 b(17)p 4000
+3144 48001 45 v Black 4000 6974 a Fw(directional)534
+b(deriv)-61 b(ativ)-31 b(es\).)984 b Fs(cv)-25 b(odes)533
+b Fw(pro)-31 b(vides)532 b(all)i(the)e(soft)-31 b(w)g(are)534
+b(ho)31 b(oks)533 b(for)f(implemen)-31 b(ting)536 b(in)-31
+b(terfaces)533 b(to)4000 8302 y(automatic)545 b(di\256eren)-31
+b(tiation)545 b(or)d(complex-step)h(appro)-31 b(ximation,)590
+b(and)542 b(future)g(v)-31 b(ersions)542 b(will)i(pro)-31
+b(vide)543 b(these)4000 9631 y(capabilities.)483 b(A)-31
+b(t)331 b(the)g(presen)-31 b(t)330 b(time,)341 b(b)31
+b(esides)330 b(the)h(option)h(for)f(analytical)j(sensitivit)-31
+b(y)333 b(righ)-31 b(t-hand)332 b(sides)e(\(user-)4000
+10959 y(pro)-31 b(vided\),)514 b Fs(cv)-25 b(odes)484
+b Fw(can)g(ev)-61 b(aluate)485 b(these)e(quan)-31 b(tities)486
+b(using)e(v)-61 b(arious)484 b(\257nite)g(di\256erence-based)g(appro)
+-31 b(xima-)4000 12287 y(tions)499 b(to)g(ev)-61 b(aluate)499
+b(the)f(terms)g(\()p Fl(@)61 b(f)119 b(=@)61 b(y)40 b
+Fw(\))p Fl(s)22509 12453 y Fj(i)23376 12287 y Fw(and)499
+b(\()p Fl(@)61 b(f)119 b(=@)61 b(p)29157 12453 y Fj(i)29527
+12287 y Fw(\),)530 b(or)498 b(using)h(directional)h(deriv)-61
+b(ativ)-31 b(es)499 b(to)f(ev)-61 b(aluate)4000 13616
+y([\()p Fl(@)61 b(f)119 b(=@)61 b(y)40 b Fw(\))p Fl(s)8781
+13782 y Fj(i)9397 13616 y Fw(+)246 b(\()p Fl(@)61 b(f)119
+b(=@)61 b(p)14003 13782 y Fj(i)14373 13616 y Fw(\)])q(.)668
+b(As)428 b(is)g(t)-31 b(ypical)430 b(for)e(\257nite)g(di\256erences,)
+442 b(the)428 b(prop)31 b(er)427 b(c)-31 b(hoice)429
+b(of)f(p)31 b(erturbations)429 b(is)f(a)4000 14944 y(delicate)303
+b(matter.)471 b Fs(cv)-25 b(odes)302 b Fw(tak)-31 b(es)302
+b(in)-31 b(to)303 b(accoun)-31 b(t)302 b(sev)-31 b(eral)302
+b(problem-related)h(features:)459 b(the)301 b(relativ)-31
+b(e)303 b(ODE)e(error)4000 16272 y(tolerance)i Fs(r)-74
+b(tol)p Fw(,)315 b(the)302 b(mac)-31 b(hine)304 b(unit)e(roundo\256)g
+Fl(U)121 b Fw(,)315 b(the)302 b(scale)g(factor)397 b(\271)-647
+b Fl(p)34103 16438 y Fj(i)34471 16272 y Fw(,)316 b(and)302
+b(the)g(w)-31 b(eigh)g(ted)303 b(ro)31 b(ot-mean-square)4000
+17601 y(norm)369 b(of)h(the)g(sensitivit)-31 b(y)371
+b(v)-31 b(ector)370 b Fl(s)19174 17767 y Fj(i)19542 17601
+y Fw(.)5660 18971 y(Using)348 b(cen)-31 b(tral)349 b(\257nite)f
+(di\256erences)e(as)h(an)h(example,)354 b(the)347 b(t)-31
+b(w)g(o)349 b(terms)f(\()p Fl(@)61 b(f)119 b(=@)61 b(y)40
+b Fw(\))p Fl(s)39535 19137 y Fj(i)40251 18971 y Fw(and)348
+b Fl(@)61 b(f)119 b(=@)61 b(p)45451 19137 y Fj(i)46168
+18971 y Fw(in)347 b(the)h(righ)-31 b(t-)4000 20300 y(hand)369
+b(side)g(of)h(\(3.9\))i(can)d(b)31 b(e)369 b(ev)-61 b(aluated)370
+b(separately:)17658 22709 y Fl(@)61 b(f)p 17658 23203
+1311 45 v 17697 24217 a(@)g(y)19101 23458 y(s)19620 23624
+y Fj(i)20296 23458 y Fn(\274)21597 22709 y Fl(f)119 b
+Fw(\()p Fl(t;)184 b(y)287 b Fw(+)246 b Fl(\276)26149
+22875 y Fj(y)26680 22709 y Fl(s)27199 22875 y Fj(i)27568
+22709 y Fl(;)184 b(p)p Fw(\))247 b Fn(\241)f Fl(f)119
+b Fw(\()p Fl(t;)184 b(y)287 b Fn(\241)246 b Fl(\276)34952
+22875 y Fj(y)35483 22709 y Fl(s)36002 22875 y Fj(i)36371
+22709 y Fl(;)184 b(p)p Fw(\))p 21597 23203 16254 45 v
+28772 24217 a(2)g Fl(\276)30142 24383 y Fj(y)38168 23458
+y Fl(;)10696 b Fw(\(3.12\))18268 25807 y Fl(@)61 b(f)p
+18136 26301 1575 45 v 18136 27315 a(@)g(p)19342 27481
+y Fj(i)20151 26556 y Fn(\274)21453 25807 y Fl(f)119 b
+Fw(\()p Fl(t;)184 b(y)40 b(;)184 b(p)247 b Fw(+)f Fl(\276)27053
+25973 y Fj(i)27421 25807 y Fl(e)27936 25973 y Fj(i)28305
+25807 y Fw(\))h Fn(\241)f Fl(f)119 b Fw(\()p Fl(t;)184
+b(y)40 b(;)184 b(p)247 b Fn(\241)f Fl(\276)35689 25973
+y Fj(i)36057 25807 y Fl(e)36572 25973 y Fj(i)36941 25807
+y Fw(\))p 21453 26301 15920 45 v 28543 27315 a(2)184
+b Fl(\276)29913 27481 y Fj(i)37689 26556 y Fl(;)10868
+b Fw(\(3.12'\))13200 29436 y Fl(\276)13833 29602 y Fj(i)14509
+29436 y Fw(=)307 b Fn(j)94 b Fw(\271)-647 b Fl(p)16541
+29602 y Fj(i)16910 29436 y Fn(j)17217 28435 y Fh(p)p
+18325 28435 6809 45 v 18325 29436 a Fw(max)q(\()p Fs(r)-74
+b(tol)p Fl(;)184 b(U)121 b Fw(\))186 b Fl(;)1292 b(\276)27550
+29602 y Fj(y)28389 29436 y Fw(=)35656 28687 y(1)p 29690
+29181 12485 45 v 29690 30195 a(max)q(\(1)p Fl(=\276)33919
+30361 y Fj(i)34289 30195 y Fl(;)184 b Fn(k)p Fl(s)35852
+30361 y Fj(i)36222 30195 y Fn(k)36775 30361 y Fk(WRMS)39650
+30195 y Fl(=)p Fn(j)94 b Fw(\271)-647 b Fl(p)41067 30361
+y Fj(i)41437 30195 y Fn(j)p Fw(\))42492 29436 y Fl(;)4000
+32543 y Fw(sim)-31 b(ultaneously:)13644 34891 y Fl(@)61
+b(f)p 13644 35385 1311 45 v 13683 36399 a(@)g(y)15087
+35640 y(s)15606 35806 y Fj(i)16221 35640 y Fw(+)17593
+34891 y Fl(@)g(f)p 17461 35385 1575 45 v 17461 36399
+a(@)g(p)18667 36565 y Fj(i)19476 35640 y Fn(\274)20777
+34891 y Fl(f)119 b Fw(\()p Fl(t;)184 b(y)287 b Fw(+)246
+b Fl(\276)40 b(s)25888 35057 y Fj(i)26255 34891 y Fl(;)184
+b(p)247 b Fw(+)f Fl(\276)40 b(e)29845 35057 y Fj(i)30213
+34891 y Fw(\))247 b Fn(\241)f Fl(f)119 b Fw(\()p Fl(t;)184
+b(y)287 b Fn(\241)245 b Fl(\276)40 b(s)37107 35057 y
+Fj(i)37475 34891 y Fl(;)184 b(p)247 b Fn(\241)f Fl(\276)40
+b(e)41065 35057 y Fj(i)41433 34891 y Fw(\))p 20777 35385
+21087 45 v 30615 36399 a(2)184 b Fl(\276)42181 35640
+y(;)6683 b Fw(\(3.13\))23998 37987 y Fl(\276)347 b Fw(=)307
+b(min)q(\()p Fl(\276)29054 38153 y Fj(i)29423 37987 y
+Fl(;)184 b(\276)30547 38153 y Fj(y)31079 37987 y Fw(\))g
+Fl(;)4000 40507 y Fw(or)376 b(b)-31 b(y)377 b(adaptiv)-31
+b(ely)380 b(switc)-31 b(hing)378 b(b)31 b(et)-31 b(w)g(een)378
+b(\(3.12\)+\(3.12'\))383 b(and)376 b(\(3.13\),)382 b(dep)31
+b(ending)377 b(on)g(the)g(relativ)-31 b(e)378 b(size)e(of)i(the)4000
+41835 y(estimated)371 b(\257nite)f(di\256erence)f(incremen)-31
+b(ts)369 b Fl(\276)23039 42001 y Fj(i)23776 41835 y Fw(and)h
+Fl(\276)26562 42001 y Fj(y)27093 41835 y Fw(.)5660 43206
+y(These)388 b(pro)31 b(cedures)387 b(for)i(c)-31 b(ho)31
+b(osing)389 b(the)g(p)31 b(erturbations)388 b(\()p Fl(\261)30505
+43372 y Fj(i)30874 43206 y Fw(,)394 b Fl(\261)32067 43372
+y Fj(y)32599 43206 y Fw(,)f Fl(\261)42 b Fw(\))388 b(and)h(switc)-31
+b(hing)390 b(\()p Fl(\275)42739 43372 y Fk(max)44429
+43206 y Fw(\))e(b)31 b(et)-31 b(w)g(een)389 b(\257nite)4000
+44534 y(di\256erence)423 b(and)g(directional)j(deriv)-61
+b(ativ)-31 b(e)424 b(form)-31 b(ulas)425 b(ha)-31 b(v)g(e)424
+b(also)g(b)31 b(een)423 b(implemen)-31 b(ted)425 b(for)f(\257rst-order)
+e(form)-31 b(ulas.)4000 45863 y(F)-92 b(orw)-31 b(ard)264
+b(\257nite)h(di\256erences)f(can)h(b)31 b(e)264 b(applied)h(to)g(\()p
+Fl(@)61 b(f)120 b(=@)61 b(y)40 b Fw(\))p Fl(s)29081 46029
+y Fj(i)29714 45863 y Fw(and)265 b Fl(@)61 b(f)119 b(=@)61
+b(p)34831 46029 y Fj(i)35465 45863 y Fw(separately)-92
+b(,)286 b(or)265 b(the)f(single)i(directional)4000 47191
+y(deriv)-61 b(ativ)-31 b(e)371 b(form)-31 b(ula)16940
+48259 y Fl(@)61 b(f)p 16940 48753 1311 45 v 16979 49767
+a(@)g(y)18383 49008 y(s)18902 49174 y Fj(i)19516 49008
+y Fw(+)20888 48259 y Fl(@)g(f)p 20756 48753 1575 45 v
+20756 49767 a(@)g(p)21962 49933 y Fj(i)22771 49008 y
+Fn(\274)24072 48259 y Fl(f)119 b Fw(\()p Fl(t;)184 b(y)287
+b Fw(+)246 b Fl(\261)42 b(s)29044 48425 y Fj(i)29412
+48259 y Fl(;)184 b(p)247 b Fw(+)f Fl(\261)42 b(e)32863
+48425 y Fj(i)33232 48259 y Fw(\))246 b Fn(\241)g Fl(f)119
+b Fw(\()p Fl(t;)184 b(y)40 b(;)184 b(p)p Fw(\))p 24072
+48753 14989 45 v 31299 49767 a Fl(\261)4000 51653 y Fw(can)310
+b(b)31 b(e)310 b(used.)472 b(In)310 b Fs(cv)-25 b(odes)p
+Fw(,)323 b(the)310 b(default)i(v)-61 b(alue)310 b(of)h
+Fl(\275)26221 51819 y Fk(max)28217 51653 y Fw(=)d(0)i(indicates)i(the)e
+(use)f(of)i(the)f(second-order)g(cen)-31 b(tered)4000
+52982 y(directional)504 b(deriv)-61 b(ativ)-31 b(e)503
+b(form)-31 b(ula)503 b(\(3.13\))h(exclusiv)-31 b(ely)-92
+b(.)891 b(Otherwise,)535 b(the)502 b(magnitude)h(of)f
+Fl(\275)43936 53148 y Fk(max)46127 52982 y Fw(and)g(its)f(sign)4000
+54310 y(\(p)31 b(ositiv)-31 b(e)372 b(or)d(negativ)-31
+b(e\))373 b(indicates)e(whether)f(this)g(switc)-31 b(hing)371
+b(is)f(done)g(with)h(regard)e(to)i(\(cen)-31 b(tered)370
+b(or)g(forw)-31 b(ard\))4000 55639 y(\257nite)370 b(di\256erences,)f
+(resp)31 b(ectiv)-31 b(ely)-92 b(.)4000 59524 y Fr(3.3)1793
+b(Adjoin)-50 b(t)598 b(sensitivit)-50 b(y)602 b(analysis)4000
+62028 y Fw(In)474 b(the)h Fq(forwar)-57 b(d)492 b(sensitivity)i(appr)
+-57 b(o)g(ach)474 b Fw(describ)31 b(ed)474 b(in)h(the)f(previous)h
+(section,)502 b(obtaining)477 b(sensitivities)g(with)4000
+63356 y(resp)31 b(ect)391 b(to)i Fl(N)10079 63522 y Fj(s)10944
+63356 y Fw(parameters)f(is)g(roughly)h(equiv)-61 b(alen)-31
+b(t)394 b(to)f(solving)g(an)f(ODE)g(system)g(of)h(size)e(\(1)262
+b(+)g Fl(N)47060 63522 y Fj(s)47533 63356 y Fw(\))p Fl(N)121
+b Fw(.)561 b(This)4000 64684 y(can)388 b(b)31 b(ecome)388
+b(prohibitiv)-31 b(ely)391 b(exp)31 b(ensiv)-31 b(e,)393
+b(esp)31 b(ecially)389 b(for)f(large-scale)h(problems,)k(if)388
+b(sensitivities)i(with)f(resp)31 b(ect)4000 66013 y(to)338
+b(man)-31 b(y)339 b(parameters)f(are)f(desired.)481 b(In)337
+b(this)h(situation,)347 b(the)337 b Fq(adjoint)367 b(sensitivity)i
+(metho)-57 b(d)337 b Fw(is)g(a)h(v)-31 b(ery)337 b(attractiv)-31
+b(e)4000 67341 y(alternativ)g(e,)355 b(pro)-31 b(vided)348
+b(that)h(w)-31 b(e)348 b(do)f(not)i(need)e(the)g(solution)j
+(sensitivities)f Fl(s)36869 67507 y Fj(i)37237 67341
+y Fw(,)j(but)c(rather)f(the)h(gradien)-31 b(ts)349 b(with)4000
+68669 y(resp)31 b(ect)376 b(to)i(mo)31 b(del)378 b(parameters)f(of)h(a)
+f(relativ)-31 b(ely)380 b(few)d(deriv)-31 b(ed)377 b(functionals)j(of)d
+(the)g(solution.)518 b(In)377 b(other)g(w)-31 b(ords,)4000
+69998 y(if)370 b Fl(y)40 b Fw(\()p Fl(t)p Fw(\))369 b(is)g(the)g
+(solution)i(of)f(\(3.2\),)i(w)-31 b(e)370 b(wish)f(to)h(ev)-61
+b(aluate)371 b(the)e(gradien)-31 b(t)371 b Fl(dG=dp)f
+Fw(of)22403 73287 y Fl(G)p Fw(\()p Fl(p)p Fw(\))308 b(=)26167
+71780 y Fh(Z)27274 72054 y Fj(t)27608 72325 y Fk(f)26782
+74295 y Fj(t)27116 74406 y Fp(0)28178 73287 y Fl(g)40
+b Fw(\()p Fl(t;)184 b(y)40 b(;)184 b(p)p Fw(\))p Fl(dt)g(;)15576
+b Fw(\(3.14\))4000 76539 y(or,)474 b(alternativ)-31 b(ely)-92
+b(,)477 b(the)452 b(gradien)-31 b(t)455 b Fl(dg)39 b(=dp)453
+b Fw(of)g(the)g(function)h Fl(g)40 b Fw(\()p Fl(t;)184
+b(x;)g(p)p Fw(\))454 b(at)g(time)f Fl(t)38859 76705 y
+Fk(f)39189 76539 y Fw(.)742 b(The)453 b(function)h Fl(g)492
+b Fw(m)-31 b(ust)453 b(b)31 b(e)4000 77867 y(smo)g(oth)370
+b(enough)g(that)h Fl(@)61 b(g)40 b(=@)61 b(y)409 b Fw(and)369
+b Fl(@)61 b(g)40 b(=@)61 b(p)369 b Fw(exist)h(and)g(are)f(b)31
+b(ounded.)p Black Black eop
+%%Page: 18 28
+18 27 bop Black 0 2701 a Fx(18)30377 b(Mathematical)424
+b(Considerations)p 0 3144 48001 45 v Black 1660 6974
+a Fw(In)416 b(what)h(follo)-31 b(ws,)430 b(w)-31 b(e)416
+b(only)h(sk)-31 b(etc)g(h)416 b(the)g(analysis)h(for)f(the)g
+(sensitivit)-31 b(y)418 b(problem)f(for)f(b)31 b(oth)416
+b Fl(G)g Fw(and)g Fl(g)40 b Fw(.)632 b(F)-92 b(or)0 8302
+y(details)527 b(on)f(the)f(deriv)-61 b(ation)527 b(see)e([6)q(].)962
+b(In)-31 b(tro)31 b(ducing)527 b(a)f(Lagrange)g(m)-31
+b(ultiplier)528 b Fl(\270)p Fw(,)565 b(w)-31 b(e)526
+b(form)g(the)g(augmen)-31 b(ted)0 9631 y(ob)61 b(jectiv)-31
+b(e)372 b(function)14473 12134 y Fl(I)87 b Fw(\()p Fl(p)p
+Fw(\))308 b(=)f Fl(G)p Fw(\()p Fl(p)p Fw(\))247 b Fn(\241)21581
+10627 y Fh(Z)22688 10901 y Fj(t)23022 11012 y Fp(1)22196
+13142 y Fj(t)22530 13253 y Fp(0)23694 12134 y Fl(\270)24340
+11677 y Fg(\244)25033 12134 y Fw(\()200 b(_)-506 b Fl(y)285
+b Fn(\241)246 b Fl(f)119 b Fw(\()p Fl(t;)184 b(y)40 b(;)184
+b(p)p Fw(\)\))j Fl(dt)d(;)11645 b Fw(\(3.15\))0 15264
+y(where)369 b Fn(\244)g Fw(denotes)h(the)f(conjugate)i(transp)31
+b(ose.)493 b(The)369 b(gradien)-31 b(t)371 b(of)f Fl(G)f
+Fw(with)h(resp)31 b(ect)369 b(to)h Fl(p)f Fw(is)10630
+17970 y Fl(dG)p 10630 18464 1447 45 v 10787 19478 a(dp)12516
+18718 y Fw(=)13818 17970 y Fl(dI)p 13818 18464 1150 45
+v 13826 19478 a(dp)15408 18718 y Fw(=)16576 17212 y Fh(Z)17683
+17485 y Fj(t)18017 17596 y Fp(1)17191 19727 y Fj(t)17525
+19838 y Fp(0)18505 18718 y Fw(\()p Fl(g)19463 18884 y
+Fj(p)20221 18718 y Fw(+)246 b Fl(g)21856 18884 y Fj(y)22388
+18718 y Fl(s)p Fw(\))p Fl(dt)g Fn(\241)25666 17212 y
+Fh(Z)26773 17485 y Fj(t)27107 17596 y Fp(1)26281 19727
+y Fj(t)26615 19838 y Fp(0)27779 18718 y Fl(\270)28425
+18261 y Fg(\244)29119 18718 y Fw(\()167 b(_)-474 b Fl(s)246
+b Fn(\241)g Fl(f)31963 18884 y Fj(y)32495 18718 y Fl(s)g
+Fn(\241)g Fl(f)34909 18884 y Fj(p)35420 18718 y Fw(\))185
+b Fl(dt)f(;)7669 b Fw(\(3.16\))0 22136 y(where)590 b(subscripts)f(on)i
+(functions)g(suc)-31 b(h)590 b(as)g Fl(f)709 b Fw(or)590
+b Fl(g)630 b Fw(are)590 b(used)g(to)h(denote)g(partial)h(deriv)-61
+b(ativ)-31 b(es)591 b(and)f Fl(s)676 b Fw(=)0 23464 y([)p
+Fl(s)826 23630 y Fk(1)1323 23464 y Fl(;)184 b(:)g(:)g(:)k(;)c(s)4301
+23630 y Fj(N)5002 23741 y Fi(s)5485 23464 y Fw(])432
+b(is)g(the)g(matrix)h(of)g(solution)g(sensitivities.)683
+b(Applying)434 b(in)-31 b(tegration)434 b(b)-31 b(y)433
+b(parts)e(to)i(the)f(term)g Fl(\270)46972 23063 y Fg(\244)47648
+23464 y Fw(_)-474 b Fl(s)0 24793 y Fw(and)369 b(selecting)i
+Fl(\270)e Fw(suc)-31 b(h)368 b(that)17819 27937 y(_)17650
+28229 y Fl(\270)307 b Fw(=)g Fn(\241)20816 26668 y Fh(\265)21764
+27480 y Fl(@)61 b(f)p 21764 27975 1311 45 v 21803 28988
+a(@)g(y)23208 26668 y Fh(\266)24022 26898 y Fg(\244)24716
+28229 y Fl(\270)246 b Fn(\241)26714 26668 y Fh(\265)27670
+27480 y Fl(@)61 b(g)p 27662 27975 1232 45 v 27662 28988
+a(@)g(y)29027 26668 y Fh(\266)29841 26898 y Fg(\244)17650
+30653 y Fl(\270)p Fw(\()p Fl(t)19126 30819 y Fk(1)19622
+30653 y Fw(\))308 b(=)g(0)184 b Fl(;)45171 29071 y Fw(\(3.17\))0
+33350 y(the)369 b(gradien)-31 b(t)371 b(of)f Fl(G)f Fw(with)i(resp)31
+b(ect)368 b(to)i Fl(p)f Fw(is)g(nothing)i(but)14655 36055
+y Fl(dG)p 14655 36550 1447 45 v 14812 37564 a(dp)16541
+36804 y Fw(=)308 b Fl(\270)18356 36347 y Fg(\244)18864
+36804 y Fw(\()p Fl(t)19694 36970 y Fk(0)20191 36804 y
+Fw(\))p Fl(s)p Fw(\()p Fl(t)21970 36970 y Fk(0)22467
+36804 y Fw(\))247 b(+)24251 35298 y Fh(Z)25358 35571
+y Fj(t)25692 35682 y Fp(1)24866 37813 y Fj(t)25200 37924
+y Fp(0)26364 36804 y Fw(\()q Fl(g)27323 36970 y Fj(p)28080
+36804 y Fw(+)f Fl(\270)29833 36347 y Fg(\244)30342 36804
+y Fl(f)30884 36970 y Fj(p)31395 36804 y Fw(\))185 b Fl(dt)f(:)11694
+b Fw(\(3.18\))0 40283 y(The)287 b(gradien)-31 b(t)288
+b(of)f Fl(g)40 b Fw(\()p Fl(t)9025 40449 y Fk(1)9522
+40283 y Fl(;)184 b(y)40 b(;)184 b(p)p Fw(\))288 b(with)g(resp)31
+b(ect)286 b(to)h Fl(p)f Fw(can)h(b)31 b(e)286 b(then)h(obtained)i(b)-31
+b(y)287 b(using)g(the)f(Leibnitz)i(di\256eren)-31 b(tiation)0
+41612 y(rule.)492 b(Indeed,)370 b(from)f(\(3.14\),)20086
+43235 y Fl(dg)p 20086 43730 1144 45 v 20091 44743 a(dp)21363
+43984 y Fw(\()p Fl(t)22193 44150 y Fk(1)22690 43984 y
+Fw(\))308 b(=)25177 43235 y Fl(d)p 24729 43730 1473 45
+v 24729 44743 a(dt)25705 44909 y Fk(1)26467 43235 y Fl(dG)p
+26467 43730 1447 45 v 26624 44743 a(dp)0 47031 y Fw(and)511
+b(therefore,)547 b(taking)514 b(in)-31 b(to)512 b(accoun)-31
+b(t)513 b(that)f Fl(dG=dp)g Fw(in)f(\(3.18\))j(dep)31
+b(ends)510 b(on)i Fl(t)35061 47197 y Fk(1)36068 47031
+y Fw(b)31 b(oth)512 b(through)f(the)h(upp)31 b(er)0 48360
+y(in)-31 b(tegration)372 b(limit)g(and)d(through)h Fl(\270)f
+Fw(and)g(that)h Fl(\270)p Fw(\()p Fl(t)21653 48526 y
+Fk(1)22150 48360 y Fw(\))308 b(=)f(0,)13550 51127 y Fl(dg)p
+13550 51621 1144 45 v 13555 52635 a(dp)14827 51876 y
+Fw(\()p Fl(t)15657 52042 y Fk(1)16154 51876 y Fw(\))h(=)f
+Fl(\271)18727 51418 y Fg(\244)19236 51876 y Fw(\()p Fl(t)20066
+52042 y Fk(0)20563 51876 y Fw(\))p Fl(s)p Fw(\()p Fl(t)22342
+52042 y Fk(0)22839 51876 y Fw(\))246 b(+)g Fl(g)25150
+52042 y Fj(p)25662 51876 y Fw(\()p Fl(t)26492 52042 y
+Fk(1)26989 51876 y Fw(\))g(+)28772 50369 y Fh(Z)29879
+50642 y Fj(t)30213 50753 y Fp(1)29387 52884 y Fj(t)29721
+52995 y Fp(0)30885 51876 y Fl(\271)31552 51418 y Fg(\244)32061
+51876 y Fl(f)32603 52042 y Fj(p)33115 51876 y Fl(dt)184
+b(;)10589 b Fw(\(3.19\))0 55293 y(where)527 b Fl(\271)g
+Fw(is)h(the)f(sensitivit)-31 b(y)530 b(of)d Fl(\270)g
+Fw(with)i(resp)31 b(ect)526 b(to)j(the)e(\257nal)h(in)-31
+b(tegration)530 b(limit)g(and)e(th)-31 b(us)527 b(satis\257es)h(the)0
+56621 y(follo)-31 b(wing)373 b(equation,)e(obtained)g(b)-31
+b(y)370 b(taking)h(the)e(total)j(deriv)-61 b(ativ)-31
+b(e)370 b(with)h(resp)31 b(ect)368 b(to)i Fl(t)36696
+56787 y Fk(1)37561 56621 y Fw(of)g(\(3.17\):)19441 60119
+y(_)-518 b Fl(\271)308 b Fw(=)f Fn(\241)22418 58559 y
+Fh(\265)23366 59370 y Fl(@)61 b(f)p 23366 59865 1311
+45 v 23405 60879 a(@)g(y)24809 58559 y Fh(\266)25624
+58788 y Fg(\244)26318 60119 y Fl(\271)19230 63306 y(\271)p
+Fw(\()p Fl(t)20727 63472 y Fk(1)21224 63306 y Fw(\))308
+b(=)23131 61745 y Fh(\265)24086 62557 y Fl(@)61 b(g)p
+24078 63051 1232 45 v 24078 64065 a(@)g(y)25443 61745
+y Fh(\266)26258 61974 y Fg(\244)26258 64413 y Fj(t)p
+Fk(=)p Fj(t)27606 64524 y Fp(1)28462 63306 y Fl(:)45171
+61752 y Fw(\(3.20\))0 67084 y(The)277 b(\257nal)g(condition)h(on)f
+Fl(\271)p Fw(\()p Fl(t)12257 67250 y Fk(1)12754 67084
+y Fw(\))g(follo)-31 b(ws)278 b(from)f(\()p Fl(@)61 b(\270=@)g(t)p
+Fw(\))f(+)g(\()p Fl(@)h(\270=@)g(t)27591 67250 y Fk(1)28091
+67084 y Fw(\))308 b(=)g(0)276 b(at)h Fl(t)32487 67250
+y Fk(1)32984 67084 y Fw(,)295 b(and)277 b(therefore,)295
+b Fl(\271)p Fw(\()p Fl(t)42025 67250 y Fk(1)42522 67084
+y Fw(\))308 b(=)g Fn(\241)45459 66792 y Fw(_)45290 67084
+y Fl(\270)o Fw(\()p Fl(t)46765 67250 y Fk(1)47262 67084
+y Fw(\).)1660 68568 y(The)354 b(\257rst)e(thing)j(to)f(notice)g(ab)31
+b(out)354 b(the)f(adjoin)-31 b(t)356 b(system)d(\(3.17\))j(is)d(that)h
+(there)f(is)g(no)g(explicit)i(sp)31 b(eci\257cation)0
+69897 y(of)382 b(the)g(parameters)g Fl(p)p Fw(;)388 b(this)382
+b(implies)g(that,)387 b(once)381 b(the)h(solution)i Fl(\270)d
+Fw(is)g(found,)386 b(the)381 b(form)-31 b(ula)384 b(\(3.18\))g(can)e
+(then)f(b)31 b(e)0 71225 y(used)349 b(to)i(\257nd)f(the)h(gradien)-31
+b(t)351 b(of)g Fl(G)f Fw(with)h(resp)31 b(ect)350 b(to)h(an)-31
+b(y)350 b(of)h(the)g(parameters)f Fl(p)p Fw(.)486 b(The)350
+b(same)h(holds)f(true)g(for)h(the)0 72553 y(system)446
+b(\(3.20\))i(and)e(the)g(form)-31 b(ula)447 b(\(3.19\))i(for)c(gradien)
+-31 b(ts)447 b(of)f Fl(g)40 b Fw(\()p Fl(t)28004 72719
+y Fk(1)28501 72553 y Fl(;)184 b(y)40 b(;)184 b(p)p Fw(\).)723
+b(The)446 b(second)f(imp)31 b(ortan)-31 b(t)448 b(remark)e(is)0
+73882 y(that)312 b(the)g(adjoin)-31 b(t)313 b(systems)e(\(3.17\))j(and)
+e(\(3.20\))i(are)d(terminal)i(v)-61 b(alue)312 b(problems)f(whic)-31
+b(h)312 b(dep)31 b(end)311 b(on)g(the)h(solution)0 75210
+y Fl(y)40 b Fw(\()p Fl(t)p Fw(\))380 b(of)g(the)g(original)i(IVP)e
+(\(3.2\).)527 b(Therefore,)384 b(a)c(pro)31 b(cedure)379
+b(is)g(needed)h(for)g(pro)-31 b(viding)382 b(the)e(states)g
+Fl(y)419 b Fw(obtained)0 76539 y(during)467 b(a)g(forw)-31
+b(ard)468 b(in)-31 b(tegration)470 b(phase)c(of)i(\(3.2\))h(to)e
+Fs(cv)-25 b(odes)467 b Fw(during)h(the)f(bac)-31 b(kw)g(ard)468
+b(in)-31 b(tegration)470 b(phase)c(of)0 77867 y(\(3.17\))372
+b(or)d(\(3.20\).)495 b(The)370 b(approac)-31 b(h)370
+b(adopted)g(in)g Fs(cv)-25 b(odes)p Fw(,)370 b(based)f(on)g
+Fq(che)-57 b(ckp)g(ointing)p Fw(,)372 b(is)d(describ)31
+b(ed)369 b(b)31 b(elo)-31 b(w.)p Black Black eop
+%%Page: 19 29
+19 28 bop Black 4000 2701 a Fx(3.3)425 b(Adjoin)-35 b(t)425
+b(sensitivit)-35 b(y)423 b(analysis)29629 b(19)p 4000
+3144 48001 45 v Black Black 12000 15794 a @beginspecial
+0 @llx 0 @lly 490 @urx 152 @ury 2880 @rwi @setspecial
+%%BeginDocument: ckpnt.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: ckpnt.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Tue Aug 26 11:58:22 2003
+%%For: radu at tux111.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 490 152
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.541 0.525 0.510 srgb} bind def
+
+end
+save
+newpath 0 152 moveto 0 0 lineto 490 0 lineto 490 152 lineto closepath clip newpath
+-99.0 325.3 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 1800 4050 m
+ 8100 4050 l gs col0 s gr 
+% Polyline
+n 1800 3900 m
+ 1800 4200 l gs col0 s gr 
+% Polyline
+n 3450 3900 m
+ 3450 4200 l gs col0 s gr 
+% Polyline
+n 4950 3900 m
+ 4950 4200 l gs col0 s gr 
+% Polyline
+n 7500 3900 m
+ 7500 4200 l gs col0 s gr 
+% Polyline
+n 9750 3900 m
+ 9750 4200 l gs col0 s gr 
+% Polyline
+7.500 slw
+n 2100 3975 m
+ 2100 4125 l gs col0 s gr 
+% Polyline
+15.000 slw
+n 9000 4050 m
+ 9750 4050 l gs col0 s gr 
+% Polyline
+ [90] 0 sd
+n 8100 4050 m
+ 9000 4050 l gs col0 s gr  [] 0 sd
+% Polyline
+7.500 slw
+n 2400 3975 m
+ 2400 4125 l gs col0 s gr 
+% Polyline
+n 2700 3975 m
+ 2700 4125 l gs col0 s gr 
+% Polyline
+n 3075 3975 m
+ 3075 4125 l gs col0 s gr 
+% Polyline
+n 3825 3975 m
+ 3825 4125 l gs col0 s gr 
+% Polyline
+n 4200 3975 m
+ 4200 4125 l gs col0 s gr 
+% Polyline
+n 4575 3975 m
+ 4575 4125 l gs col0 s gr 
+% Polyline
+n 5400 3975 m
+ 5400 4125 l gs col0 s gr 
+% Polyline
+n 5850 3975 m
+ 5850 4125 l gs col0 s gr 
+% Polyline
+n 6450 3975 m
+ 6450 4125 l gs col0 s gr 
+% Polyline
+n 7050 3975 m
+ 7050 4125 l gs col0 s gr 
+% Polyline
+n 7875 3975 m
+ 7875 4125 l gs col0 s gr 
+% Polyline
+n 9375 3975 m
+ 9375 4125 l gs col0 s gr 
+% Polyline
+n 9075 3975 m
+ 9075 4125 l gs col0 s gr 
+/Times-Roman ff 210.00 scf sf
+1725 4500 m
+gs 1 -1 sc (t) col0 sh gr
+/Times-Roman ff 150.00 scf sf
+1800 4575 m
+gs 1 -1 sc (0) col0 sh gr
+/Times-Roman ff 210.00 scf sf
+2025 4500 m
+gs 1 -1 sc (t) col0 sh gr
+/Times-Roman ff 150.00 scf sf
+2100 4575 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman ff 210.00 scf sf
+2325 4500 m
+gs 1 -1 sc (t) col0 sh gr
+/Times-Roman ff 150.00 scf sf
+2400 4575 m
+gs 1 -1 sc (2) col0 sh gr
+/Times-Roman ff 210.00 scf sf
+2625 4500 m
+gs 1 -1 sc (t) col0 sh gr
+/Times-Roman ff 150.00 scf sf
+2700 4575 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman ff 210.00 scf sf
+9675 4500 m
+gs 1 -1 sc (t) col0 sh gr
+/Times-Roman ff 150.00 scf sf
+9750 4575 m
+gs 1 -1 sc (f) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+7350 3750 m
+gs 1 -1 sc (k) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+7500 3825 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+4800 3750 m
+gs 1 -1 sc (k) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+4950 3825 m
+gs 1 -1 sc (2) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+3300 3750 m
+gs 1 -1 sc (k) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+3450 3825 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+1650 3750 m
+gs 1 -1 sc (k) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+1800 3825 m
+gs 1 -1 sc (0) col0 sh gr
+% Polyline
+30.000 slw
+gs  clippath
+6502 3217 m 6502 3082 l 6070 3082 l 6408 3150 l 6070 3217 l cp
+eoclip
+n 5437 3150 m
+ 6487 3150 l gs col32 s gr gr
+
+% arrowhead
+n 6070 3217 m 6408 3150 l 6070 3082 l 6138 3150 l 6070 3217 l 
+ cp gs col32 1.00 shd ef gr  col32 s
+/Times-Roman ff 195.00 scf sf
+5370 3525 m
+gs 1 -1 sc (Forward pass) col0 sh gr
+% Polyline
+gs  clippath
+8385 4582 m 8385 4717 l 8816 4717 l 8479 4650 l 8816 4582 l cp
+eoclip
+n 9450 4650 m
+ 8400 4650 l gs col32 s gr gr
+
+% arrowhead
+n 8816 4582 m 8479 4650 l 8816 4717 l 8749 4650 l 8816 4582 l 
+ cp gs col32 1.00 shd ef gr  col32 s
+/Times-Roman ff 195.00 scf sf
+8257 5025 m
+gs 1 -1 sc (Backward pass) col0 sh gr
+% Polyline
+7.500 slw
+n 4950 4200 m
+ 4950 5400 l gs col0 s gr 
+% Polyline
+n 3450 4200 m
+ 3450 5400 l gs col0 s gr 
+% Polyline
+n 7500 4200 m
+ 7500 5400 l gs col0 s gr 
+% Polyline
+2 slj
+15.000 slw
+gs  clippath
+9755 3561 m 9777 3473 l 9556 3418 l 9720 3506 l 9534 3506 l cp
+eoclip
+n 1802 3514 m 1804 3513 l 1806 3513 l 1809 3512 l 1814 3510 l 1821 3508 l
+ 1830 3505 l 1842 3502 l 1855 3498 l 1872 3493 l 1891 3487 l
+ 1913 3480 l 1938 3473 l 1965 3465 l 1996 3456 l 2030 3446 l
+ 2066 3436 l 2106 3424 l 2148 3413 l 2193 3400 l 2240 3387 l
+ 2290 3373 l 2342 3359 l 2396 3344 l 2453 3329 l 2511 3314 l
+ 2572 3299 l 2634 3283 l 2698 3267 l 2763 3252 l 2830 3236 l
+ 2898 3220 l 2968 3204 l 3039 3188 l 3112 3173 l 3186 3157 l
+ 3261 3142 l 3338 3127 l 3416 3112 l 3496 3098 l 3578 3084 l
+ 3661 3070 l 3746 3057 l 3834 3044 l 3923 3031 l 4014 3019 l
+ 4108 3007 l 4205 2996 l 4304 2985 l 4405 2975 l 4510 2965 l
+ 4617 2957 l 4728 2948 l 4841 2941 l 4957 2934 l 5076 2928 l
+ 5197 2923 l 5321 2919 l 5447 2916 l 5574 2915 l 5702 2914 l
+ 5830 2915 l 5958 2916 l 6084 2919 l 6209 2923 l 6332 2928 l
+ 6452 2934 l 6570 2941 l 6685 2948 l 6797 2957 l 6907 2965 l
+ 7014 2975 l 7118 2985 l 7220 2996 l 7319 3007 l 7416 3019 l
+ 7510 3031 l 7603 3044 l 7693 3057 l 7782 3070 l 7869 3084 l
+ 7954 3098 l 8037 3112 l 8119 3127 l 8200 3142 l 8279 3157 l
+ 8357 3173 l 8433 3188 l 8509 3204 l 8582 3220 l 8655 3236 l
+ 8725 3251 l 8795 3267 l 8862 3283 l 8929 3299 l 8993 3314 l
+ 9055 3329 l 9115 3344 l 9173 3359 l 9229 3373 l 9282 3387 l
+ 9333 3400 l 9381 3413 l 9426 3424 l 9468 3436 l 9507 3446 l
+ 9543 3456 l 9576 3465 l 9606 3473 l 9633 3480 l 9656 3487 l
+ 9677 3493 l 9694 3498 l 9709 3502 l 9721 3505 l 9731 3508 l
+ 9739 3510 l 9744 3512 l
+ 9752 3514 l gs col12 s gr gr
+
+% arrowhead
+0 slj
+n 9534 3506 m 9720 3506 l 9556 3418 l  col12 s
+% Polyline
+2 slj
+gs  clippath
+8184 4621 m 8194 4531 l 7968 4506 l 8142 4571 l 7958 4595 l cp
+eoclip
+n 7500 4500 m
+ 8175 4575 l gs col12 s gr gr
+
+% arrowhead
+0 slj
+n 7958 4595 m 8142 4571 l 7968 4506 l  col12 s
+% Polyline
+2 slj
+gs  clippath
+7524 4540 m 7505 4452 l 7282 4500 l 7468 4507 l 7301 4588 l cp
+eoclip
+n 4950 4500 m 4951 4500 l 4953 4501 l 4957 4502 l 4964 4503 l 4973 4505 l
+ 4985 4508 l 5000 4511 l 5019 4515 l 5041 4520 l 5066 4526 l
+ 5094 4531 l 5124 4538 l 5157 4544 l 5193 4551 l 5230 4558 l
+ 5269 4566 l 5309 4573 l 5352 4580 l 5395 4587 l 5440 4594 l
+ 5487 4601 l 5535 4607 l 5585 4614 l 5638 4619 l 5692 4625 l
+ 5749 4630 l 5809 4635 l 5871 4639 l 5937 4643 l 6005 4646 l
+ 6077 4648 l 6150 4649 l 6225 4650 l 6300 4649 l 6373 4648 l
+ 6445 4646 l 6513 4643 l 6579 4639 l 6641 4635 l 6701 4630 l
+ 6758 4625 l 6812 4619 l 6865 4614 l 6915 4607 l 6963 4601 l
+ 7010 4594 l 7055 4587 l 7098 4580 l 7141 4573 l 7181 4566 l
+ 7220 4558 l 7257 4551 l 7293 4544 l 7326 4538 l 7356 4531 l
+ 7384 4526 l 7409 4520 l 7431 4515 l 7450 4511 l 7465 4508 l
+ 7477 4505 l 7486 4503 l
+ 7500 4500 l gs col12 s gr gr
+
+% arrowhead
+0 slj
+n 7301 4588 m 7468 4507 l 7282 4500 l  col12 s
+% Polyline
+2 slj
+gs  clippath
+4981 4535 m 4946 4452 l 4735 4539 l 4919 4513 l 4769 4623 l cp
+eoclip
+n 3450 4500 m 3451 4500 l 3454 4502 l 3459 4504 l 3467 4507 l 3478 4511 l
+ 3492 4516 l 3510 4523 l 3531 4530 l 3554 4538 l 3580 4547 l
+ 3608 4556 l 3638 4566 l 3669 4575 l 3702 4584 l 3736 4594 l
+ 3772 4602 l 3810 4611 l 3850 4619 l 3892 4626 l 3936 4632 l
+ 3983 4638 l 4034 4643 l 4087 4647 l 4143 4649 l 4200 4650 l
+ 4257 4649 l 4313 4647 l 4366 4643 l 4417 4638 l 4464 4632 l
+ 4508 4626 l 4550 4619 l 4590 4611 l 4628 4602 l 4664 4594 l
+ 4698 4584 l 4731 4575 l 4763 4566 l 4792 4556 l 4820 4547 l
+ 4846 4538 l 4869 4530 l 4890 4523 l 4908 4516 l 4922 4511 l
+ 4933 4507 l
+ 4950 4500 l gs col12 s gr gr
+
+% arrowhead
+0 slj
+n 4769 4623 m 4919 4513 l 4735 4539 l  col12 s
+% Polyline
+2 slj
+gs  clippath
+7515 4605 m 7461 4677 l 7643 4814 l 7526 4670 l 7697 4742 l cp
+eoclip
+n 7500 4650 m
+ 8100 5100 l gs col4 s gr gr
+
+% arrowhead
+0 slj
+n 7697 4742 m 7526 4670 l 7643 4814 l  col4 s
+% Polyline
+2 slj
+gs  clippath
+4974 4609 m 4905 4667 l 5051 4842 l 4971 4675 l 5120 4784 l cp
+eoclip
+n 7500 4650 m 7499 4651 l 7498 4653 l 7495 4656 l 7490 4662 l 7483 4669 l
+ 7474 4679 l 7463 4692 l 7449 4708 l 7432 4726 l 7413 4747 l
+ 7391 4770 l 7367 4796 l 7341 4823 l 7312 4852 l 7282 4883 l
+ 7250 4914 l 7216 4946 l 7181 4978 l 7145 5011 l 7107 5043 l
+ 7069 5075 l 7029 5106 l 6988 5137 l 6945 5166 l 6902 5195 l
+ 6857 5222 l 6810 5249 l 6761 5274 l 6710 5297 l 6657 5318 l
+ 6602 5338 l 6545 5356 l 6485 5371 l 6422 5383 l 6358 5392 l
+ 6292 5398 l 6225 5400 l 6158 5398 l 6092 5392 l 6028 5383 l
+ 5965 5371 l 5905 5356 l 5848 5338 l 5793 5318 l 5740 5297 l
+ 5689 5274 l 5640 5249 l 5593 5222 l 5548 5195 l 5505 5166 l
+ 5462 5137 l 5421 5106 l 5381 5075 l 5343 5043 l 5305 5011 l
+ 5269 4978 l 5234 4946 l 5200 4914 l 5168 4883 l 5138 4852 l
+ 5109 4823 l 5083 4796 l 5059 4770 l 5037 4747 l 5018 4726 l
+ 5001 4708 l 4987 4692 l 4976 4679 l 4967 4669 l 4960 4662 l
+
+ 4950 4650 l gs col4 s gr gr
+
+% arrowhead
+0 slj
+n 5120 4784 m 4971 4675 l 5051 4842 l  col4 s
+% Polyline
+2 slj
+gs  clippath
+3482 4615 m 3403 4657 l 3509 4859 l 3465 4679 l 3588 4817 l cp
+eoclip
+n 4950 4650 m 4949 4651 l 4948 4654 l 4945 4660 l 4940 4669 l 4934 4681 l
+ 4926 4697 l 4915 4717 l 4902 4740 l 4888 4767 l 4871 4798 l
+ 4852 4830 l 4832 4865 l 4810 4902 l 4787 4940 l 4763 4978 l
+ 4737 5017 l 4711 5055 l 4683 5092 l 4655 5129 l 4625 5164 l
+ 4595 5198 l 4563 5231 l 4530 5261 l 4495 5290 l 4458 5316 l
+ 4420 5339 l 4379 5360 l 4337 5376 l 4293 5389 l 4247 5397 l
+ 4200 5400 l 4153 5397 l 4107 5389 l 4063 5376 l 4021 5360 l
+ 3980 5339 l 3942 5316 l 3905 5290 l 3870 5261 l 3837 5231 l
+ 3805 5198 l 3775 5164 l 3745 5129 l 3717 5092 l 3689 5055 l
+ 3663 5017 l 3638 4978 l 3613 4940 l 3590 4902 l 3568 4865 l
+ 3548 4830 l 3529 4798 l 3512 4767 l 3498 4740 l 3485 4717 l
+ 3474 4697 l 3466 4681 l 3460 4669 l
+ 3450 4650 l gs col4 s gr gr
+
+% arrowhead
+0 slj
+n 3588 4817 m 3465 4679 l 3509 4859 l  col4 s
+/Times-Bold ff 210.00 scf sf
+8258 3712 m
+gs 1 -1 sc (.  .  .  .) col0 sh gr
+/Times-Bold ff 210.00 scf sf
+2850 4500 m
+gs 1 -1 sc (.  .  .) col0 sh gr
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial 4000 18229 a Fw(Figure)343 b(3.1:)481 b(Illustration)345
+b(of)e(the)g(c)-31 b(hec)g(kp)31 b(oin)-31 b(ting)346
+b(algorithm)g(for)d(generation)h(of)g(the)f(forw)-31
+b(ard)344 b(solution)h(during)4000 19558 y(the)369 b(in)-31
+b(tegration)373 b(of)c(the)h(adjoin)-31 b(t)371 b(system.)p
+Black 4000 23264 a Fo(3.3.1)1495 b(Chec)-42 b(kp)42 b(oin)-42
+b(ting)501 b(sc)-42 b(heme)4000 25466 y Fw(During)276
+b(the)g(bac)-31 b(kw)g(ard)277 b(in)-31 b(tegration,)298
+b(the)276 b(ev)-61 b(aluation)279 b(of)d(the)g(righ)-31
+b(t-hand)278 b(side)d(of)i(the)f(adjoin)-31 b(t)278 b(system)e
+(requires,)4000 26794 y(at)375 b(the)f(curren)-31 b(t)374
+b(time,)j(the)e(states)f Fl(y)414 b Fw(whic)-31 b(h)375
+b(w)-31 b(ere)374 b(computed)h(during)g(the)f(forw)-31
+b(ard)375 b(in)-31 b(tegration)377 b(phase.)508 b(Since)4000
+28122 y Fs(cv)-25 b(odes)322 b Fw(implemen)-31 b(ts)323
+b(v)-61 b(ariable-step)322 b(in)-31 b(tegration)324 b(form)-31
+b(ulas,)333 b(it)322 b(is)f(unlik)-31 b(ely)324 b(that)e(the)g(states)f
+(will)i(b)31 b(e)321 b(a)-31 b(v)-61 b(ailable)4000 29451
+y(at)334 b(the)g(desired)f(time)i(and)f(so)g(some)g(form)g(of)g(in)-31
+b(terp)31 b(olation)337 b(is)d(needed.)480 b(The)334
+b Fs(cv)-25 b(odes)334 b Fw(implemen)-31 b(tation)338
+b(b)31 b(eing)4000 30779 y(also)302 b(v)-61 b(ariable-order,)315
+b(it)301 b(is)g(p)31 b(ossible)301 b(that)h(during)f(the)g(forw)-31
+b(ard)301 b(in)-31 b(tegration)304 b(phase)c(the)h(order)f(ma)-31
+b(y)302 b(b)31 b(e)301 b(reduced)4000 32107 y(as)316
+b(lo)-31 b(w)317 b(as)e(\257rst)h(order,)326 b(whic)-31
+b(h)316 b(means)g(that)h(there)f(ma)-31 b(y)317 b(b)31
+b(e)315 b(p)31 b(oin)-31 b(ts)316 b(in)g(time)h(where)f(only)g
+Fl(y)355 b Fw(and)515 b(_)-506 b Fl(y)355 b Fw(are)316
+b(a)-31 b(v)-61 b(ailable.)4000 33436 y(Therefore,)506
+b Fs(cv)-25 b(odes)479 b Fw(implemen)-31 b(ts)481 b(a)e(cubic)f
+(Hermite)i(in)-31 b(terp)31 b(olation)482 b(algorithm.)823
+b(Ho)-31 b(w)g(ev)g(er,)508 b(esp)31 b(ecially)480 b(for)4000
+34764 y(large-scale)356 b(problems)f(and)g(long)h(in)-31
+b(tegration)358 b(in)-31 b(terv)-61 b(als,)359 b(the)354
+b(n)-31 b(um)g(b)31 b(er)355 b(and)g(size)g(of)g(the)g(v)-31
+b(ectors)355 b Fl(y)394 b Fw(and)554 b(_)-506 b Fl(y)394
+b Fw(that)4000 36092 y(w)-31 b(ould)371 b(need)e(to)h(b)31
+b(e)368 b(stored)h(mak)-31 b(e)371 b(this)e(approac)-31
+b(h)370 b(computationally)k(in)-31 b(tractable.)5660
+37506 y Fs(cv)-25 b(odes)476 b Fw(settles)f(for)g(a)g(compromise)h(b)31
+b(et)-31 b(w)g(een)476 b(storage)g(space)f(and)g(execution)h(time)g(b)
+-31 b(y)475 b(implemen)-31 b(ting)4000 38834 y(a)453
+b(so-called)h Fq(che)-57 b(ckp)g(ointing)476 b(scheme)p
+Fw(.)743 b(A)-31 b(t)454 b(the)f(cost)g(of)g(at)h(most)g(one)f
+(additional)j(forw)-31 b(ard)453 b(in)-31 b(tegration,)477
+b(this)4000 40162 y(approac)-31 b(h)410 b(o\256ers)e(the)h(b)31
+b(est)408 b(p)31 b(ossible)409 b(estimate)h(of)g(memory)f(requiremen)
+-31 b(ts)409 b(for)g(adjoin)-31 b(t)411 b(sensitivit)-31
+b(y)411 b(analysis.)4000 41491 y(T)-92 b(o)484 b(b)31
+b(egin)484 b(with,)514 b(based)483 b(on)h(the)g(problem)g(size)g
+Fl(N)604 b Fw(and)484 b(the)g(a)-31 b(v)-61 b(ailable)486
+b(memory)-92 b(,)513 b(the)484 b(user)e(decides)i(on)g(the)4000
+42819 y(n)-31 b(um)g(b)31 b(er)357 b Fl(N)8908 42985
+y Fj(d)9782 42819 y Fw(of)h(data)h(pairs)e(\()p Fl(y)40
+b Fw(,)559 b(_)-506 b Fl(y)39 b Fw(\))358 b(that)h(can)e(b)31
+b(e)357 b(k)-31 b(ept)359 b(in)e(memory)i(for)e(the)h(purp)31
+b(ose)356 b(of)i(in)-31 b(terp)31 b(olation.)492 b(Then,)4000
+44148 y(during)323 b(the)f(\257rst)g(forw)-31 b(ard)323
+b(in)-31 b(tegration)325 b(stage,)333 b(after)323 b(ev)-31
+b(ery)322 b Fl(N)30601 44314 y Fj(d)31440 44148 y Fw(in)-31
+b(tegration)325 b(steps)d(a)g(c)-31 b(hec)g(kp)31 b(oin)-31
+b(t)325 b(is)d(formed)h(b)-31 b(y)4000 45476 y(sa)g(ving)353
+b(enough)g(information)i(\(either)e(in)g(memory)g(or)f(on)g(disk\))h
+(to)g(allo)-31 b(w)354 b(for)f(a)f(hot)h(restart,)j(that)d(is)f(a)h
+(restart)4000 46804 y(whic)-31 b(h)481 b(will)h(exactly)f(repro)31
+b(duce)479 b(the)h(forw)-31 b(ard)481 b(in)-31 b(tegration.)828
+b(In)480 b(order)f(to)i(a)-31 b(v)g(oid)481 b(storing)g
+(Jacobian-related)4000 48133 y(data)371 b(at)g(eac)-31
+b(h)370 b(c)-31 b(hec)g(kp)31 b(oin)-31 b(t,)372 b(a)e(reev)-61
+b(aluation)372 b(of)e(the)g(iteration)i(matrix)f(is)f(forced)g(b)31
+b(efore)369 b(eac)-31 b(h)371 b(c)-31 b(hec)g(kp)31 b(oin)-31
+b(t.)496 b(A)-31 b(t)4000 49461 y(the)443 b(end)g(of)h(this)f(stage,)
+463 b(w)-31 b(e)444 b(are)f(left)h(with)g Fl(N)24068
+49627 y Fj(c)24963 49461 y Fw(c)-31 b(hec)g(kp)31 b(oin)-31
+b(ts,)463 b(including)445 b(one)e(at)h Fl(t)40104 49627
+y Fk(0)40601 49461 y Fw(.)714 b(During)443 b(the)g(bac)-31
+b(kw)g(ard)4000 50789 y(in)g(tegration)456 b(stage,)476
+b(the)454 b(adjoin)-31 b(t)455 b(v)-61 b(ariables)454
+b(are)f(in)-31 b(tegrated)455 b(from)f Fl(t)33841 50955
+y Fk(1)34791 50789 y Fw(to)g Fl(t)36628 50955 y Fk(0)37577
+50789 y Fw(going)h(from)f(one)g(c)-31 b(hec)g(kp)31 b(oin)-31
+b(t)455 b(to)4000 52118 y(the)378 b(previous)h(one.)519
+b(The)379 b(bac)-31 b(kw)g(ard)379 b(in)-31 b(tegration)381
+b(from)e(c)-31 b(hec)g(kp)31 b(oin)-31 b(t)380 b Fl(i)252
+b Fw(+)g(1)379 b(to)f(c)-31 b(hec)g(kp)31 b(oin)-31 b(t)380
+b Fl(i)f Fw(is)f(preceded)f(b)-31 b(y)379 b(a)4000 53446
+y(forw)-31 b(ard)417 b(in)-31 b(tegration)419 b(from)e
+Fl(i)f Fw(to)h Fl(i)277 b Fw(+)g(1)417 b(during)f(whic)-31
+b(h)417 b Fl(N)29074 53612 y Fj(d)30007 53446 y Fw(data)g(pairs)f(\()p
+Fl(y)40 b Fw(,)627 b(_)-506 b Fl(y)39 b Fw(\))417 b(are)e(generated)i
+(and)g(stored)f(in)4000 54774 y(memory)370 b(for)f(in)-31
+b(terp)31 b(olation.)496 b(\(see)369 b(Fig.)h(3.1\).)5660
+56188 y(This)397 b(approac)-31 b(h)397 b(transfers)e(the)i(uncertain)
+-31 b(t)g(y)398 b(in)e(the)g(n)-31 b(um)g(b)31 b(er)396
+b(of)h(in)-31 b(tegration)399 b(steps)c(in)i(the)f(forw)-31
+b(ard)397 b(in)-31 b(te-)4000 57516 y(gration)369 b(phase)e(to)h
+(uncertain)-31 b(t)g(y)370 b(in)d(the)h(\257nal)g(n)-31
+b(um)g(b)31 b(er)367 b(of)h(c)-31 b(hec)g(kp)31 b(oin)-31
+b(ts.)493 b(Ho)-31 b(w)g(ev)g(er,)370 b Fl(N)41086 57682
+y Fj(c)41905 57516 y Fw(is)d(m)-31 b(uc)g(h)368 b(smaller)g(than)4000
+58844 y(the)414 b(n)-31 b(um)g(b)31 b(er)414 b(of)g(steps)f(tak)-31
+b(en)415 b(during)f(the)g(forw)-31 b(ard)415 b(in)-31
+b(tegration,)428 b(and)414 b(there)f(is)h(no)g(ma)61
+b(jor)415 b(p)31 b(enalt)-31 b(y)415 b(for)f(writ-)4000
+60173 y(ing/reading)339 b(the)e(c)-31 b(hec)g(kp)31 b(oin)-31
+b(t)339 b(data)f(to/from)h(a)e(temp)31 b(orary)338 b(\257le.)482
+b(Note)338 b(that,)345 b(at)338 b(the)f(end)g(of)g(the)h(\257rst)e
+(forw)-31 b(ard)4000 61501 y(in)g(tegration)386 b(stage,)i(data)d
+(pairs)e(\()p Fl(y)40 b Fw(,)586 b(_)-506 b Fl(y)40 b
+Fw(\))383 b(are)h(a)-31 b(v)-61 b(ailable)386 b(from)d(the)h(last)g(c)
+-31 b(hec)g(kp)31 b(oin)-31 b(t)385 b(to)g(the)e(end)g(of)h(the)g(in)
+-31 b(terv)-61 b(al)4000 62830 y(of)432 b(in)-31 b(tegration.)682
+b(If)432 b(no)f(c)-31 b(hec)g(kp)31 b(oin)-31 b(ts)433
+b(are)e(necessary)g(\()p Fl(N)28538 62996 y Fj(d)29486
+62830 y Fw(is)h(larger)g(than)g(the)f(n)-31 b(um)g(b)31
+b(er)432 b(of)g(in)-31 b(tegration)434 b(steps)4000 64158
+y(tak)-31 b(en)368 b(in)g(the)f(solution)i(of)f(\(3.2\)\),)j(the)c
+(total)i(cost)f(of)g(an)f(adjoin)-31 b(t)369 b(sensitivit)-31
+b(y)370 b(computation)g(can)d(b)31 b(e)367 b(as)g(lo)-31
+b(w)369 b(as)4000 65486 y(one)380 b(forw)-31 b(ard)381
+b(plus)f(one)g(bac)-31 b(kw)g(ard)382 b(in)-31 b(tegration.)528
+b(In)379 b(addition,)385 b Fs(cv)-25 b(odes)381 b Fw(pro)-31
+b(vides)380 b(the)g(capabilit)-31 b(y)383 b(of)e(reusing)4000
+66815 y(a)436 b(set)g(of)h(c)-31 b(hec)g(kp)31 b(oin)-31
+b(ts)438 b(for)e(m)-31 b(ultiple)438 b(bac)-31 b(kw)g(ard)438
+b(in)-31 b(tegrations,)456 b(th)-31 b(us)436 b(allo)-31
+b(wing)439 b(for)e(e\261cien)-31 b(t)437 b(computation)i(of)4000
+68143 y(gradien)-31 b(ts)370 b(of)g(sev)-31 b(eral)370
+b(functionals)h(\(3.14\).)5660 71225 y(Finally)-92 b(,)330
+b(w)-31 b(e)318 b(note)g(that)h(the)e(adjoin)-31 b(t)320
+b(sensitivit)-31 b(y)320 b(mo)31 b(dule)318 b(in)g Fs(cv)-25
+b(odes)317 b Fw(pro)-31 b(vides)318 b(the)g(necessary)f(infrastruc-)
+4000 72553 y(ture)373 b(to)i(in)-31 b(tegrate)375 b(bac)-31
+b(kw)g(ards)375 b(in)f(time)g(an)-31 b(y)375 b(ODE)e(terminal)i(v)-61
+b(alue)374 b(problem)h(dep)31 b(enden)-31 b(t)373 b(on)h(the)g
+(solution)h(of)4000 73882 y(the)314 b(IVP)g(\(3.2\),)328
+b(including)315 b(adjoin)-31 b(t)316 b(systems)e(\(3.17\))j(or)c
+(\(3.20\),)328 b(as)314 b(w)-31 b(ell)315 b(as)f(an)-31
+b(y)315 b(other)f(quadrature)g(ODEs)g(that)4000 75210
+y(ma)-31 b(y)325 b(b)31 b(e)322 b(needed)h(in)h(ev)-61
+b(aluating)326 b(the)d(in)-31 b(tegrals)325 b(in)f(\(3.18\))i(or)d
+(\(3.19\).)480 b(In)323 b(particular,)334 b(for)324 b(ODE)f(systems)g
+(arising)4000 76539 y(from)450 b(semi-discretization)i(of)e(time-dep)31
+b(enden)-31 b(t)451 b(PDEs,)469 b(this)450 b(feature)g(allo)-31
+b(ws)451 b(for)f(in)-31 b(tegration)452 b(of)e(either)g(the)4000
+77867 y(discretized)370 b(adjoin)-31 b(t)371 b(PDE)e(system)h(or)f(the)
+g(adjoin)-31 b(t)371 b(of)f(the)g(discretized)f(PDE.)p
+Black Black eop
+%%Page: 20 30
+20 29 bop Black 0 2701 a Fx(20)30377 b(Mathematical)424
+b(Considerations)p 0 3144 48001 45 v Black 0 6974 a Fr(3.4)1793
+b(BDF)598 b(stabilit)-50 b(y)600 b(limit)f(detection)0
+10198 y Fs(cv)-25 b(odes)248 b Fw(includes)h(an)f(algorithm,)276
+b Fs(st)-74 b(ald)248 b Fw(\(ST)-92 b(Abilit)-31 b(y)251
+b(Limit)f(Detection\),)275 b(whic)-31 b(h)249 b(pro)-31
+b(vides)248 b(protection)i(against)0 11527 y(p)31 b(oten)-31
+b(tially)476 b(unstable)d(b)31 b(eha)-31 b(vior)473 b(of)f(the)h(BDF)e
+(m)-31 b(ultistep)474 b(in)-31 b(tegration)475 b(metho)31
+b(ds)473 b(in)g(certain)g(situations,)500 b(as)0 12855
+y(describ)31 b(ed)368 b(b)31 b(elo)-31 b(w.)1660 14613
+y(When)430 b(the)g(BDF)f(option)j(is)e(selected,)446
+b Fs(cv)-25 b(odes)431 b Fw(uses)e(Bac)-31 b(kw)g(ard)431
+b(Di\256eren)-31 b(tiation)433 b(F)-92 b(orm)-31 b(ula)431
+b(metho)31 b(ds)430 b(of)0 15942 y(orders)341 b(1)h(to)h(5.)484
+b(A)-31 b(t)343 b(order)e(1)h(or)g(2,)348 b(the)342 b(BDF)f(metho)31
+b(d)343 b(is)f(A-stable,)349 b(meaning)344 b(that)f(for)f(an)-31
+b(y)343 b(complex)g(constan)-31 b(t)0 17270 y Fl(\270)310
+b Fw(in)h(the)g(op)31 b(en)311 b(left)h(half-plane)h(the)e(metho)31
+b(d)312 b(is)e(unconditionally)315 b(stable)d(\(for)f(an)-31
+b(y)312 b(step)e(size\))h(for)g(the)g(standard)0 18598
+y(scalar)414 b(mo)31 b(del)415 b(problem)614 b(_)-506
+b Fl(y)421 b Fw(=)382 b Fl(\270y)40 b Fw(.)626 b(F)-92
+b(or)413 b(an)h(ODE)g(system,)425 b(this)415 b(means)f(that,)427
+b(roughly)415 b(sp)31 b(eaking,)426 b(as)414 b(long)h(as)0
+19927 y(all)390 b(mo)31 b(des)388 b(in)h(the)g(system)f(are)h(stable,)
+394 b(the)389 b(metho)31 b(d)389 b(is)f(also)i(stable)f(for)g(an)-31
+b(y)389 b(c)-31 b(hoice)389 b(of)g(step)f(size,)394 b(at)389
+b(least)h(in)0 21255 y(the)369 b(sense)g(of)g(a)h(lo)31
+b(cal)370 b(linear)g(stabilit)-31 b(y)372 b(analysis.)1660
+23013 y(A)-31 b(t)435 b(orders)e(3)h(to)h(5,)451 b(the)434
+b(BDF)f(metho)31 b(ds)434 b(are)g(not)g(A-stable,)452
+b(although)436 b(they)e(are)g Fq(sti\262y)456 b(stable)p
+Fw(.)686 b(In)433 b(eac)-31 b(h)0 24342 y(case,)400 b(in)395
+b(order)e(for)h(the)g(metho)31 b(d)395 b(to)g(b)31 b(e)393
+b(stable)i(at)g(step)e(size)h Fl(h)g Fw(on)g(the)g(scalar)g(mo)31
+b(del)395 b(problem,)402 b(the)394 b(pro)31 b(duct)0
+25670 y Fl(h\270)317 b Fw(m)-31 b(ust)317 b(lie)i(within)f(a)g
+Fq(r)-57 b(e)g(gion)350 b(of)e(absolute)g(stability)p
+Fw(.)476 b(That)318 b(region)g(excludes)f(a)h(p)31 b(ortion)318
+b(of)g(the)g(left)g(half-plane)0 26998 y(that)472 b(is)e(concen)-31
+b(trated)472 b(near)f(the)f(imaginary)j(axis.)798 b(The)470
+b(size)h(of)g(that)h(region)f(of)g(instabilit)-31 b(y)474
+b(gro)-31 b(ws)471 b(as)g(the)0 28327 y(order)378 b(increases)g(from)h
+(3)f(to)h(5.)521 b(What)379 b(this)g(means)f(is)h(that,)j(when)d
+(running)f(BDF)g(at)h(an)-31 b(y)379 b(of)g(these)f(orders,)i(if)0
+29655 y(an)356 b(eigen)-31 b(v)-61 b(alue)356 b Fl(\270)f
+Fw(of)h(the)g(system)f(lies)h(close)f(enough)h(to)g(the)g(imaginary)i
+(axis,)h(the)c(step)g(sizes)g Fl(h)g Fw(for)g(whic)-31
+b(h)357 b(the)0 30983 y(metho)31 b(d)353 b(is)e(stable)i(are)e(limited)
+j(\(at)f(least)g(according)g(to)f(the)g(linear)g(stabilit)-31
+b(y)355 b(theory\))e(to)f(a)g(set)g(that)h(prev)-31 b(en)g(ts)0
+32312 y Fl(h\270)316 b Fw(from)i(lea)-31 b(ving)319 b(the)e(stabilit)
+-31 b(y)320 b(region.)476 b(The)317 b(meaning)h(of)g
+Fq(close)347 b(enough)317 b Fw(dep)31 b(ends)316 b(on)h(the)h(order.)
+474 b(A)-31 b(t)318 b(order)e(3,)0 33640 y(the)385 b(unstable)g(region)
+h(is)e(m)-31 b(uc)g(h)385 b(narro)-31 b(w)g(er)385 b(than)h(at)f(order)
+f(5,)389 b(so)384 b(the)h(p)31 b(oten)-31 b(tial)388
+b(for)c(unstable)i(b)31 b(eha)-31 b(vior)385 b(gro)-31
+b(ws)0 34968 y(with)370 b(order.)1660 36727 y(System)342
+b(eigen)-31 b(v)-61 b(alues)343 b(that)f(are)f(lik)-31
+b(ely)343 b(to)f(run)f(in)-31 b(to)342 b(this)g(instabilit)-31
+b(y)344 b(are)d(ones)g(that)i(corresp)31 b(ond)340 b(to)i(w)-31
+b(eakly)0 38055 y(damp)31 b(ed)424 b(oscillations.)658
+b(A)423 b(pure)f(undamp)31 b(ed)424 b(oscillation)j(corresp)31
+b(onds)422 b(to)i(an)f(eigen)-31 b(v)-61 b(alue)425 b(on)f(the)f
+(imaginary)0 39383 y(axis.)465 b(Problems)283 b(with)i(mo)31
+b(des)283 b(of)g(that)h(kind)g(call)g(for)f(di\256eren)-31
+b(t)283 b(considerations)i(since)e(the)g(oscillation)j(generally)0
+40712 y(m)-31 b(ust)353 b(b)31 b(e)352 b(follo)-31 b(w)g(ed)356
+b(b)-31 b(y)353 b(the)f(solv)-31 b(er,)357 b(but)c(this)g(requires)f
+(step)g(sizes)h(\()p Fl(h)307 b Fn(\273)h Fw(1)p Fl(=\272)70
+b Fw(,)357 b(where)c Fl(\272)422 b Fw(is)353 b(the)g(frequency\))g
+(that)0 42040 y(are)540 b(stable)h(for)g(BDF)e(an)-31
+b(yw)g(a)g(y)-92 b(.)1009 b(But)540 b(for)h(a)f(w)-31
+b(eakly)543 b(damp)31 b(ed)541 b(oscillatory)i(mo)31
+b(de,)584 b(the)540 b(oscillation)k(in)d(the)0 43368
+y(solution)338 b(is)e(ev)-31 b(en)g(tually)339 b(damp)31
+b(ed)336 b(to)h(the)f(noise)h(lev)-31 b(el,)344 b(and)336
+b(at)h(that)h(time)f(it)g(is)f(imp)31 b(ortan)-31 b(t)338
+b(that)f(the)g(solv)-31 b(er)336 b(not)0 44697 y(b)31
+b(e)369 b(restricted)g(to)h(step)g(sizes)f(on)g(the)h(order)f(of)h(1)p
+Fl(=\272)70 b Fw(.)494 b(It)369 b(is)h(in)f(this)h(situation)i(that)e
+(the)g(new)g(option)h(ma)-31 b(y)370 b(b)31 b(e)369 b(of)0
+46025 y(great)h(v)-61 b(alue.)1660 47783 y(In)423 b(terms)f(of)h
+(partial)h(di\256eren)-31 b(tial)425 b(equations,)438
+b(the)422 b(t)-31 b(ypical)425 b(problems)e(for)g(whic)-31
+b(h)423 b(the)g(stabilit)-31 b(y)425 b(limit)g(de-)0
+49112 y(tection)480 b(option)h(is)d(appropriate)i(are)f(ODE)f(systems)h
+(resulting)g(from)h(semi-discretized)f(PDEs)g(\(i.e.,)508
+b(PDEs)0 50440 y(discretized)473 b(in)f(space\))g(with)i(adv)-31
+b(ection)474 b(and)f(di\256usion,)499 b(but)472 b(with)h(adv)-31
+b(ection)475 b(dominating)g(o)-31 b(v)g(er)473 b(di\256usion.)0
+51768 y(Di\256usion)338 b(alone)i(pro)31 b(duces)337
+b(pure)h(deca)-31 b(y)339 b(mo)31 b(des,)345 b(while)339
+b(adv)-31 b(ection)341 b(tends)d(to)h(pro)31 b(duce)338
+b(undamp)31 b(ed)338 b(oscillatory)0 53097 y(mo)31 b(des.)493
+b(A)369 b(mix)h(of)g(the)f(t)-31 b(w)g(o)371 b(with)g(adv)-31
+b(ection)371 b(dominan)-31 b(t)372 b(will)e(ha)-31 b(v)g(e)371
+b(w)-31 b(eakly)371 b(damp)31 b(ed)369 b(oscillatory)j(mo)31
+b(des.)1660 54855 y(The)403 b Fs(st)-74 b(ald)402 b Fw(algorithm)j
+(attempts)f(to)e(detect,)412 b(in)402 b(a)g(direct)g(manner,)411
+b(the)403 b(presence)d(of)j(a)f(stabilit)-31 b(y)405
+b(region)0 56183 y(b)31 b(oundary)439 b(that)h(is)e(limiting)k(the)d
+(step)f(sizes)g(in)h(the)g(presence)f(of)h(a)g(w)-31
+b(eakly)440 b(damp)31 b(ed)439 b(oscillation)j([12)q(].)702
+b(The)0 57512 y(algorithm)293 b(supplemen)-31 b(ts)290
+b(\(but)h(di\256ers)f(greatly)h(from\))g(the)g(existing)g(algorithms)i
+(in)d Fs(cv)-25 b(odes)290 b Fw(for)h(c)-31 b(ho)31 b(osing)291
+b(step)0 58840 y(size)334 b(and)g(order)f(based)h(on)g(estimated)i(lo)
+31 b(cal)336 b(truncation)f(errors.)480 b(The)334 b Fs(st)-74
+b(ald)335 b Fw(algorithm)h(w)-31 b(orks)335 b(directly)g(with)0
+60168 y(history)327 b(data)h(that)g(is)e(readily)i(a)-31
+b(v)-61 b(ailable)329 b(in)e Fs(cv)-25 b(odes)p Fw(.)478
+b(If)327 b(it)g(concludes)g(that)h(the)e(step)h(size)f(is)h(in)f(fact)i
+(stabilit)-31 b(y-)0 61497 y(limited,)489 b(it)463 b(dictates)i(a)e
+(reduction)g(in)g(the)g(metho)31 b(d)464 b(order)e(regardless)h(of)g
+(the)g(outcome)h(of)g(the)f(error-based)0 62825 y(algorithm.)777
+b(The)464 b Fs(st)-74 b(ald)463 b Fw(algorithm)j(has)d(b)31
+b(een)463 b(tested)h(in)f(com)-31 b(bination)467 b(with)d(the)f
+Fs(v)-25 b(ode)464 b Fw(solv)-31 b(er)464 b(on)f(linear)0
+64153 y(adv)-31 b(ection-dominated)344 b(adv)-31 b(ection-di\256usion)
+342 b(problems)e([13)q(],)346 b(where)339 b(it)h(w)-31
+b(orks)340 b(w)-31 b(ell.)484 b(The)340 b(implemen)-31
+b(tation)344 b(in)0 65482 y Fs(cv)-25 b(odes)432 b Fw(has)g(b)31
+b(een)431 b(successfully)g(tested)h(on)g(linear)h(and)f(nonlinear)g
+(adv)-31 b(ection-di\256usion)435 b(problems,)448 b(among)0
+66810 y(others.)1660 68568 y(This)346 b(stabilit)-31
+b(y)347 b(limit)g(detection)f(option)h(adds)d(some)h(computational)k(o)
+-31 b(v)g(erhead)346 b(to)f(the)g Fs(cv)-25 b(odes)345
+b Fw(solution.)0 69897 y(\(In)319 b(timing)j(tests,)330
+b(these)319 b(o)-31 b(v)g(erhead)321 b(costs)e(ha)-31
+b(v)g(e)321 b(ranged)e(from)h(2\045)h(to)f(7\045)g(of)g(the)g(total,)
+332 b(dep)31 b(ending)320 b(on)f(the)h(size)0 71225 y(and)391
+b(complexit)-31 b(y)393 b(of)e(the)f(problem,)397 b(with)391
+b(lo)-31 b(w)g(er)392 b(relativ)-31 b(e)392 b(costs)e(for)h(larger)f
+(problems.\))557 b(Therefore,)396 b(it)391 b(should)0
+72553 y(b)31 b(e)421 b(activ)-61 b(ated)423 b(only)g(when)f(there)f(is)
+g(reasonable)i(exp)31 b(ectation)423 b(of)f(mo)31 b(des)422
+b(in)g(the)g(user's)e(system)i(for)g(whic)-31 b(h)422
+b(it)0 73882 y(is)428 b(appropriate.)672 b(In)428 b(particular,)445
+b(if)429 b(a)f Fs(cv)-25 b(odes)429 b Fw(solution)i(with)e(this)g
+(option)h(turned)e(o\256)h(app)31 b(ears)428 b(to)h(tak)-31
+b(e)430 b(an)0 75210 y(inordinately)329 b(large)e(n)-31
+b(um)g(b)31 b(er)327 b(of)g(steps)f(for)h(orders)e(b)31
+b(et)-31 b(w)g(een)327 b(3)g(and)g(5)g(for)f(no)h(apparen)-31
+b(t)328 b(reason)e(in)h(terms)g(of)g(the)0 76539 y(solution)424
+b(time)g(scale,)437 b(then)423 b(there)g(is)f(a)h(go)31
+b(o)g(d)423 b(c)-31 b(hance)424 b(that)f(step)g(sizes)f(are)h(b)31
+b(eing)423 b(limited)i(b)-31 b(y)422 b(stabilit)-31 b(y)-92
+b(,)440 b(and)0 77867 y(that)370 b(turning)g(on)g(the)f(option)i(will)g
+(impro)-31 b(v)g(e)371 b(e\261ciency)-92 b(.)p Black
+Black eop
+%%Page: 21 31
+21 30 bop Black 4000 2701 a Fx(3.5)425 b(Ro)35 b(ot\257nding)38101
+b(21)p 4000 3144 48001 45 v Black 4000 6974 a Fr(3.5)1793
+b(Ro)50 b(ot\257nding)4000 9398 y Fw(The)436 b Fs(cv)-25
+b(odes)437 b Fw(solv)-31 b(er)437 b(has)f(b)31 b(een)436
+b(augmen)-31 b(ted)438 b(to)f(include)g(a)f(ro)31 b(ot\257nding)438
+b(feature.)695 b(This)436 b(means)h(that,)455 b(while)4000
+10727 y(in)-31 b(tegrating)395 b(the)c(Initial)j(V)-92
+b(alue)392 b(Problem)h(\(3.1\),)400 b Fs(cv)-25 b(odes)392
+b Fw(can)g(also)g(\257nd)g(the)g(ro)31 b(ots)391 b(of)h(a)g(set)g(of)g
+(user-de\257ned)4000 12055 y(functions)399 b Fl(g)9329
+12221 y Fj(i)9698 12055 y Fw(\()p Fl(t;)184 b(y)40 b
+Fw(\))399 b(that)h(dep)31 b(end)398 b(b)31 b(oth)398
+b(on)h Fl(t)f Fw(and)h(on)f(the)h(solution)h(v)-31 b(ector)399
+b Fl(y)d Fw(=)356 b Fl(y)40 b Fw(\()p Fl(t)p Fw(\).)580
+b(The)399 b(n)-31 b(um)g(b)31 b(er)398 b(of)h(these)4000
+13383 y(ro)31 b(ot)441 b(functions)g(is)g(arbitrary)-92
+b(,)459 b(and)440 b(if)h(more)g(than)g(one)g Fl(g)28922
+13549 y Fj(i)29730 13383 y Fw(is)g(found)g(to)g(ha)-31
+b(v)g(e)441 b(a)g(ro)31 b(ot)441 b(in)f(an)-31 b(y)441
+b(giv)-31 b(en)442 b(in)-31 b(terv)-61 b(al,)4000 14712
+y(the)377 b(v)-61 b(arious)377 b(ro)31 b(ot)377 b(lo)31
+b(cations)378 b(are)f(found)g(and)g(rep)31 b(orted)376
+b(in)h(the)f(order)g(that)i(they)f(o)31 b(ccur)376 b(on)h(the)g
+Fl(t)f Fw(axis,)k(in)d(the)4000 16040 y(direction)370
+b(of)g(in)-31 b(tegration.)5660 17369 y(Generally)-92
+b(,)360 b(this)d(ro)31 b(ot\257nding)358 b(feature)f(\257nds)f(only)h
+(ro)31 b(ots)357 b(of)g(o)31 b(dd)356 b(m)-31 b(ultiplicit)g(y)-92
+b(,)364 b(corresp)31 b(onding)356 b(to)h(c)-31 b(hanges)4000
+18697 y(in)401 b(sign)f(of)h Fl(g)9455 18863 y Fj(i)9824
+18697 y Fw(\()p Fl(t;)184 b(y)40 b Fw(\()p Fl(t)p Fw(\)\),)410
+b(denoted)401 b Fl(g)18876 18863 y Fj(i)19244 18697 y
+Fw(\()p Fl(t)p Fw(\))g(for)f(short.)586 b(If)400 b(a)h(user)e(ro)31
+b(ot)401 b(function)h(has)e(a)g(ro)31 b(ot)401 b(of)g(ev)-31
+b(en)400 b(m)-31 b(ultiplicit)g(y)4000 20025 y(\(no)408
+b(sign)g(c)-31 b(hange\),)419 b(it)408 b(will)i(probably)e(b)31
+b(e)407 b(missed)h(b)-31 b(y)407 b Fs(cv)-25 b(odes)p
+Fw(.)609 b(If)407 b(suc)-31 b(h)407 b(a)h(ro)31 b(ot)408
+b(is)f(desired,)417 b(the)408 b(user)e(should)4000 21354
+y(reform)-31 b(ulate)371 b(the)e(ro)31 b(ot)370 b(function)h(so)e(that)
+h(it)g(c)-31 b(hanges)370 b(sign)g(at)f(the)h(desired)f(ro)31
+b(ot.)5660 22682 y(The)411 b(basic)f(sc)-31 b(heme)410
+b(used)g(is)g(to)h(c)-31 b(hec)g(k)410 b(for)g(sign)h(c)-31
+b(hanges)411 b(of)f(an)-31 b(y)411 b Fl(g)34916 22848
+y Fj(i)35284 22682 y Fw(\()p Fl(t)p Fw(\))g(o)-31 b(v)g(er)411
+b(eac)-31 b(h)410 b(time)i(step)e(tak)-31 b(en,)422 b(and)4000
+24010 y(then)334 b(\(when)h(a)g(sign)f(c)-31 b(hange)335
+b(is)g(found\))g(to)g(hone)f(in)g(on)h(the)f(ro)31 b(ot\(s\))336
+b(with)f(a)g(mo)31 b(di\257ed)335 b(secan)-31 b(t)334
+b(metho)31 b(d)336 b([11)q(].)481 b(In)4000 25339 y(addition,)339
+b(eac)-31 b(h)328 b(time)h Fl(g)367 b Fw(is)328 b(computed,)337
+b Fs(cv)-25 b(odes)328 b Fw(c)-31 b(hec)g(ks)328 b(to)h(see)e(if)h
+Fl(g)33009 25505 y Fj(i)33378 25339 y Fw(\()p Fl(t)p
+Fw(\))308 b(=)f(0)328 b(exactly)-92 b(,)338 b(and)328
+b(if)g(so)g(it)g(rep)31 b(orts)327 b(this)4000 26667
+y(as)361 b(a)g(ro)31 b(ot.)490 b(Ho)-31 b(w)g(ev)g(er,)364
+b(if)e(an)f(exact)g(zero)g(of)g(an)-31 b(y)361 b Fl(g)25467
+26833 y Fj(i)26196 26667 y Fw(is)g(found)g(at)h(a)f(p)31
+b(oin)-31 b(t)362 b Fl(t)p Fw(,)g Fs(cv)-25 b(odes)361
+b Fw(computes)h Fl(g)400 b Fw(at)361 b Fl(t)229 b Fw(+)g
+Fl(\277)486 b Fw(for)4000 27995 y(a)370 b(small)g(\(near)g(roundo\256)g
+(lev)-31 b(el\))371 b(incremen)-31 b(t)370 b Fl(\277)125
+b Fw(,)370 b(sligh)-31 b(tly)372 b(further)d(in)g(the)h(direction)h(of)
+f(in)-31 b(tegration,)372 b(and)e(if)g(an)-31 b(y)4000
+29324 y Fl(g)4528 29490 y Fj(i)4897 29324 y Fw(\()p Fl(t)281
+b Fw(+)h Fl(\277)125 b Fw(\))397 b(=)f(0)423 b(also,)437
+b Fs(cv)-25 b(odes)423 b Fw(stops)f(and)h(rep)31 b(orts)422
+b(an)g(error.)652 b(This)423 b(w)-31 b(a)g(y)-92 b(,)437
+b(eac)-31 b(h)423 b(time)h Fs(cv)-25 b(odes)423 b Fw(tak)-31
+b(es)423 b(a)g(time)4000 30652 y(step,)401 b(it)394 b(is)g(guaran)-31
+b(teed)396 b(that)f(the)f(v)-61 b(alues)395 b(of)f(all)h
+Fl(g)25719 30818 y Fj(i)26482 30652 y Fw(are)f(nonzero)g(at)h(some)f
+(past)h(v)-61 b(alue)394 b(of)h Fl(t)p Fw(,)400 b(b)31
+b(ey)-31 b(ond)395 b(whic)-31 b(h)395 b(a)4000 31980
+y(searc)-31 b(h)369 b(for)g(ro)31 b(ots)370 b(is)f(to)h(b)31
+b(e)368 b(done.)5660 33309 y(A)-31 b(t)398 b(an)-31 b(y)398
+b(giv)-31 b(en)398 b(time)h(in)e(the)g(course)g(of)g(the)h
+(time-stepping,)406 b(after)398 b(suitable)h(c)-31 b(hec)g(king)398
+b(and)f(adjusting)i(has)4000 34637 y(b)31 b(een)402 b(done,)412
+b Fs(cv)-25 b(odes)403 b Fw(has)g(an)g(in)-31 b(terv)-61
+b(al)404 b(\()p Fl(t)22314 34803 y Fj(l)t(o)23091 34637
+y Fl(;)184 b(t)23982 34803 y Fj(hi)24869 34637 y Fw(])403
+b(in)g(whic)-31 b(h)404 b(ro)31 b(ots)403 b(of)g(the)g
+Fl(g)36708 34803 y Fj(i)37077 34637 y Fw(\()p Fl(t)p
+Fw(\))g(are)g(to)g(b)31 b(e)402 b(sough)-31 b(t,)413
+b(suc)-31 b(h)403 b(that)4000 35965 y Fl(t)4400 36131
+y Fj(hi)5639 35965 y Fw(is)353 b(further)f(ahead)i(in)f(the)g
+(direction)h(of)g(in)-31 b(tegration,)359 b(and)353 b(all)i
+Fl(g)32747 36131 y Fj(i)33115 35965 y Fw(\()p Fl(t)33945
+36131 y Fj(l)t(o)34722 35965 y Fw(\))308 b Fn(6)p Fw(=)f(0.)488
+b(The)353 b(endp)31 b(oin)-31 b(t)354 b Fl(t)45231 36131
+y Fj(hi)46470 35965 y Fw(is)f(either)g Fl(t)51090 36131
+y Fj(n)51693 35965 y Fw(,)4000 37294 y(the)333 b(end)f(of)g(the)h(time)
+g(step)f(last)i(tak)-31 b(en,)341 b(or)332 b(the)h(next)f(requested)g
+(output)i(time)f Fl(t)38200 37460 y Fk(out)39863 37294
+y Fw(if)g(this)g(comes)g(so)31 b(oner.)480 b(The)4000
+38622 y(endp)31 b(oin)-31 b(t)423 b Fl(t)9065 38788 y
+Fj(l)t(o)10263 38622 y Fw(is)f(either)g Fl(t)15021 38788
+y Fj(n)p Fg(\241)p Fk(1)16756 38622 y Fw(,)435 b(the)422
+b(last)h(output)g(time)g Fl(t)28262 38788 y Fk(out)30014
+38622 y Fw(\(if)g(this)f(o)31 b(ccurred)421 b(within)j(the)e(last)g
+(step\),)436 b(or)422 b(the)4000 39950 y(last)336 b(ro)31
+b(ot)335 b(lo)31 b(cation)338 b(\(if)e(a)f(ro)31 b(ot)336
+b(w)-31 b(as)336 b(just)f(lo)31 b(cated)336 b(within)h(this)e(step\),)
+343 b(p)31 b(ossibly)335 b(adjusted)h(sligh)-31 b(tly)337
+b(to)-31 b(w)g(ard)337 b Fl(t)50417 40116 y Fj(n)51354
+39950 y Fw(if)4000 41279 y(an)323 b(exact)h(zero)f(w)-31
+b(as)323 b(found.)478 b(The)323 b(algorithm)j(c)-31 b(hec)g(ks)323
+b Fl(g)27392 41445 y Fj(i)28083 41279 y Fw(at)h Fl(t)29790
+41445 y Fj(hi)30999 41279 y Fw(for)f(zeros)g(and)g(for)g(sign)g(c)-31
+b(hanges)324 b(in)f(\()p Fl(t)47492 41445 y Fj(l)t(o)48269
+41279 y Fl(;)184 b(t)49160 41445 y Fj(hi)50047 41279
+y Fw(\).)478 b(If)4000 42607 y(no)343 b(sign)g(c)-31
+b(hanges)343 b(w)-31 b(ere)342 b(found,)349 b(then)343
+b(either)f(a)h(ro)31 b(ot)343 b(is)g(rep)31 b(orted)342
+b(\(if)h(some)g Fl(g)36820 42773 y Fj(i)37188 42607 y
+Fw(\()p Fl(t)38018 42773 y Fj(hi)38905 42607 y Fw(\))308
+b(=)g(0\))343 b(or)f(w)-31 b(e)343 b(pro)31 b(ceed)342
+b(to)i(the)4000 43936 y(next)391 b(time)g(in)-31 b(terv)-61
+b(al)391 b(\(starting)h(at)f Fl(t)19430 44102 y Fj(hi)20317
+43936 y Fw(\).)556 b(If)389 b(one)i(or)f(more)g(sign)h(c)-31
+b(hanges)390 b(w)-31 b(ere)391 b(found,)396 b(then)390
+b(a)h(lo)31 b(op)391 b(is)f(en)-31 b(tered)4000 45264
+y(to)370 b(lo)31 b(cate)371 b(the)e(ro)31 b(ot)370 b(to)g(within)h(a)e
+(rather)g(tigh)-31 b(t)371 b(tolerance,)g(giv)-31 b(en)371
+b(b)-31 b(y)16419 47699 y Fl(\277)433 b Fw(=)307 b(100)248
+b Fn(\244)e Fl(U)367 b Fn(\244)246 b Fw(\()p Fn(j)p Fl(t)24269
+47865 y Fj(n)24872 47699 y Fn(j)h Fw(+)f Fn(j)p Fl(h)p
+Fn(j)p Fw(\))1108 b(\()p Fl(U)428 b Fw(=)308 b(unit)370
+b(roundo\256\))f Fl(:)4000 50135 y Fw(Whenev)-31 b(er)375
+b(sign)h(c)-31 b(hanges)376 b(are)f(seen)g(in)h(t)-31
+b(w)g(o)377 b(or)e(more)h(ro)31 b(ot)376 b(functions,)j(the)c(one)h
+(deemed)g(most)g(lik)-31 b(ely)378 b(to)e(ha)-31 b(v)g(e)4000
+51463 y(its)415 b(ro)31 b(ot)415 b(o)31 b(ccur)414 b(\257rst)g(is)h
+(the)g(one)g(with)h(the)e(largest)i(v)-61 b(alue)415
+b(of)g Fn(j)p Fl(g)31738 51629 y Fj(i)32107 51463 y Fw(\()p
+Fl(t)32937 51629 y Fj(hi)33824 51463 y Fw(\))p Fn(j)p
+Fl(=)p Fn(j)p Fl(g)35949 51629 y Fj(i)36320 51463 y Fw(\()p
+Fl(t)37150 51629 y Fj(hi)38037 51463 y Fw(\))276 b Fn(\241)h
+Fl(g)40409 51629 y Fj(i)40777 51463 y Fw(\()p Fl(t)41607
+51629 y Fj(l)t(o)42384 51463 y Fw(\))p Fn(j)p Fw(,)427
+b(corresp)31 b(onding)415 b(to)4000 52791 y(the)c(closest)g(to)h
+Fl(t)11302 52957 y Fj(l)t(o)12489 52791 y Fw(of)f(the)g(secan)-31
+b(t)412 b(metho)31 b(d)411 b(v)-61 b(alues.)618 b(A)-31
+b(t)412 b(eac)-31 b(h)411 b(pass)f(through)i(the)f(lo)31
+b(op,)422 b(a)411 b(new)g(v)-61 b(alue)412 b Fl(t)49231
+52957 y Fj(mid)51256 52791 y Fw(is)4000 54120 y(set,)362
+b(strictly)e(within)h(the)f(searc)-31 b(h)358 b(in)-31
+b(terv)-61 b(al,)363 b(and)d(the)f(v)-61 b(alues)360
+b(of)g Fl(g)31895 54286 y Fj(i)32263 54120 y Fw(\()p
+Fl(t)33093 54286 y Fj(mid)34708 54120 y Fw(\))g(are)f(c)-31
+b(hec)g(k)g(ed.)490 b(Then)359 b(either)h Fl(t)48232
+54286 y Fj(l)t(o)49367 54120 y Fw(or)f Fl(t)51113 54286
+y Fj(hi)4000 55448 y Fw(is)317 b(reset)f(to)i Fl(t)9363
+55614 y Fj(mid)11295 55448 y Fw(according)g(to)g(whic)-31
+b(h)318 b(subin)-31 b(terv)-61 b(al)318 b(is)f(found)g(to)h(include)g
+(the)f(sign)g(c)-31 b(hange.)477 b(If)316 b(there)h(is)g(none)h(in)4000
+56776 y(\()p Fl(t)4830 56942 y Fj(l)t(o)5607 56776 y
+Fl(;)184 b(t)6498 56942 y Fj(mid)8114 56776 y Fw(\))338
+b(but)h(some)f Fl(g)14151 56942 y Fj(i)14520 56776 y
+Fw(\()p Fl(t)15350 56942 y Fj(mid)16965 56776 y Fw(\))308
+b(=)f(0,)345 b(then)339 b(that)g(ro)31 b(ot)339 b(is)f(rep)31
+b(orted.)482 b(The)339 b(lo)31 b(op)339 b(con)-31 b(tin)g(ues)339
+b(un)-31 b(til)340 b Fn(j)p Fl(t)46007 56942 y Fj(hi)47078
+56776 y Fn(\241)184 b Fl(t)48523 56942 y Fj(l)t(o)49300
+56776 y Fn(j)308 b Fl(<)f(\277)125 b Fw(,)4000 58105
+y(and)369 b(then)h(the)f(rep)31 b(orted)369 b(ro)31 b(ot)370
+b(lo)31 b(cation)371 b(is)e Fl(t)23141 58271 y Fj(hi)24028
+58105 y Fw(.)5660 59433 y(In)g(the)h(lo)31 b(op)370 b(to)g(lo)31
+b(cate)370 b(the)g(ro)31 b(ot)370 b(of)f Fl(g)22027 59599
+y Fj(i)22396 59433 y Fw(\()p Fl(t)p Fw(\),)h(the)f(form)-31
+b(ula)371 b(for)f Fl(t)32396 59599 y Fj(mid)34379 59433
+y Fw(is)16131 61868 y Fl(t)16531 62034 y Fj(mid)18453
+61868 y Fw(=)307 b Fl(t)20021 62034 y Fj(hi)21154 61868
+y Fn(\241)246 b Fw(\()p Fl(t)23091 62034 y Fj(hi)24224
+61868 y Fn(\241)f Fl(t)25730 62034 y Fj(l)t(o)26507 61868
+y Fw(\))p Fl(g)27465 62034 y Fj(i)27834 61868 y Fw(\()p
+Fl(t)28664 62034 y Fj(hi)29551 61868 y Fw(\))p Fl(=)p
+Fw([)p Fl(g)31369 62034 y Fj(i)31739 61868 y Fw(\()p
+Fl(t)32569 62034 y Fj(hi)33456 61868 y Fw(\))h Fn(\241)g
+Fl(\256)t(g)36479 62034 y Fj(i)36848 61868 y Fw(\()p
+Fl(t)37678 62034 y Fj(l)t(o)38455 61868 y Fw(\)])370
+b Fl(;)4000 64304 y Fw(where)355 b Fl(\256)k Fw(is)c(a)g(w)-31
+b(eigh)g(t)357 b(parameter.)489 b(On)355 b(the)g(\257rst)g(t)-31
+b(w)g(o)356 b(passes)f(through)g(the)h(lo)31 b(op,)359
+b Fl(\256)g Fw(is)c(set)g(to)h(1,)i(making)f Fl(t)50385
+64470 y Fj(mid)4000 65632 y Fw(the)466 b(secan)-31 b(t)466
+b(metho)31 b(d)466 b(v)-61 b(alue.)782 b(Thereafter,)491
+b Fl(\256)470 b Fw(is)465 b(reset)g(according)i(to)f(the)g(side)f(of)h
+(the)g(subin)-31 b(terv)-61 b(al)466 b(\(lo)-31 b(w)468
+b(vs.)4000 66960 y(high,)361 b(i.e.,)g(to)-31 b(w)g(ard)358
+b Fl(t)12919 67126 y Fj(l)t(o)14052 66960 y Fw(vs.)489
+b(to)-31 b(w)g(ard)358 b Fl(t)19949 67126 y Fj(hi)20836
+66960 y Fw(\))f(in)g(whic)-31 b(h)358 b(the)f(sign)g(c)-31
+b(hange)358 b(w)-31 b(as)358 b(found)f(in)g(the)h(previous)f(t)-31
+b(w)g(o)358 b(passes.)4000 68289 y(If)401 b(the)h(t)-31
+b(w)g(o)403 b(sides)e(w)-31 b(ere)401 b(opp)31 b(osite,)411
+b Fl(\256)406 b Fw(is)401 b(set)g(to)h(1.)590 b(If)401
+b(the)h(t)-31 b(w)g(o)403 b(sides)e(w)-31 b(ere)401 b(the)h(same,)410
+b Fl(\256)c Fw(is)401 b(halv)-31 b(ed)403 b(\(if)f(on)g(the)4000
+69617 y(lo)-31 b(w)396 b(side\))f(or)f(doubled)h(\(if)g(on)g(the)g
+(high)g(side\).)569 b(The)394 b(v)-61 b(alue)395 b(of)g
+Fl(t)31766 69783 y Fj(mid)33775 69617 y Fw(is)f(closer)h(to)g
+Fl(t)39801 69783 y Fj(l)t(o)40972 69617 y Fw(when)f Fl(\256)354
+b(<)c Fw(1)394 b(and)h(closer)4000 70945 y(to)384 b Fl(t)5767
+71111 y Fj(hi)7037 70945 y Fw(when)g Fl(\256)336 b(>)331
+b Fw(1.)537 b(If)383 b(the)h(ab)31 b(o)-31 b(v)g(e)385
+b(v)-61 b(alue)384 b(of)g Fl(t)24317 71111 y Fj(mid)26315
+70945 y Fw(is)g(within)h Fl(\277)125 b(=)p Fw(2)385 b(of)f
+Fl(t)34676 71111 y Fj(l)t(o)35836 70945 y Fw(or)f Fl(t)37606
+71111 y Fj(hi)38493 70945 y Fw(,)k(it)d(is)g(adjusted)g(in)-31
+b(w)g(ard,)389 b(suc)-31 b(h)4000 72274 y(that)383 b(its)f(fractional)i
+(distance)e(from)g(the)g(endp)31 b(oin)-31 b(t)383 b(\(relativ)-31
+b(e)383 b(to)g(the)f(in)-31 b(terv)-61 b(al)382 b(size\))g(is)g(b)31
+b(et)-31 b(w)g(een)382 b(.1)g(and)g(.5)h(\(.5)4000 73602
+y(b)31 b(eing)370 b(the)f(midp)31 b(oin)-31 b(t\),)372
+b(and)e(the)f(actual)i(distance)f(from)g(the)f(endp)31
+b(oin)-31 b(t)371 b(is)e(at)h(least)g Fl(\277)125 b(=)p
+Fw(2.)p Black Black eop
+%%Page: 22 32
+22 31 bop Black Black Black Black eop
+%%Page: 23 33
+23 32 bop Black Black 4000 15322 a Ft(Chapter)861 b(4)4000
+20903 y Fv(Co)86 b(de)1033 b(Organization)4000 27370
+y Fr(4.1)1793 b(SUNDIALS)599 b(organization)4000 29881
+y Fw(The)485 b(family)h(of)f(solv)-31 b(ers)485 b(referred)e(to)i(as)f
+Fs(sundials)f Fw(consists)i(of)g(the)g(solv)-31 b(ers)484
+b Fs(cv)-25 b(ode)485 b Fw(\(for)g(ODE)f(systems\),)4000
+31209 y Fs(kinsol)400 b Fw(\(for)i(nonlinear)h(algebraic)g(systems\),)
+410 b(and)402 b Fs(id)-25 b(a)401 b Fw(\(for)h(di\256eren)-31
+b(tial-algebraic)405 b(systems\).)590 b(In)401 b(addition,)4000
+32537 y(v)-61 b(arian)-31 b(ts)517 b(of)g(these)f(whic)-31
+b(h)517 b(also)g(do)f(sensitivit)-31 b(y)519 b(analysis)e(calculations)
+i(are)d(a)-31 b(v)-61 b(ailable)519 b(or)d(in)g(dev)-31
+b(elopmen)g(t.)4000 33866 y Fs(cv)-25 b(odes)p Fw(,)460
+b(an)442 b(extension)g(of)g Fs(cv)-25 b(ode)442 b Fw(that)g(pro)-31
+b(vides)442 b(b)31 b(oth)441 b(forw)-31 b(ard)443 b(and)e(adjoin)-31
+b(t)443 b(sensitivit)-31 b(y)444 b(capabilities)g(is)4000
+35194 y(a)-31 b(v)-61 b(ailable,)372 b(while)f Fs(id)-25
+b(as)369 b Fw(is)g(curren)-31 b(tly)369 b(in)h(dev)-31
+b(elopmen)g(t.)5660 36569 y(The)256 b(v)-61 b(arious)256
+b(solv)-31 b(ers)256 b(of)g(this)g(family)i(share)d(man)-31
+b(y)257 b(sub)31 b(ordinate)256 b(mo)31 b(dules.)456
+b(F)-92 b(or)255 b(this)h(reason,)279 b(it)256 b(is)g(organized)4000
+37897 y(as)396 b(a)h(family)-92 b(,)406 b(with)397 b(a)g(directory)g
+(structure)f(that)i(exploits)g(that)f(sharing)g(\(see)f(Fig.)575
+b(4.1\).)h(The)397 b(follo)-31 b(wing)400 b(is)d(a)4000
+39226 y(list)370 b(of)g(the)f(solv)-31 b(er)370 b(pac)-31
+b(k)-61 b(ages)370 b(presen)-31 b(tly)369 b(a)-31 b(v)-61
+b(ailable:)p Black 5660 41578 a Fn(\262)p Black 554 w
+Fs(cv)-25 b(ode)p Fw(,)371 b(a)e(solv)-31 b(er)370 b(for)f(sti\256)g
+(and)h(nonsti\256)g(ODEs)e Fl(dy)40 b(=dt)308 b Fw(=)f
+Fl(f)119 b Fw(\()p Fl(t;)184 b(y)40 b Fw(\);)p Black
+5660 43977 a Fn(\262)p Black 554 w Fs(cv)-25 b(odes)p
+Fw(,)392 b(a)387 b(solv)-31 b(er)387 b(for)f(sti\256)h(and)g
+(nonsti\256)g(ODEs)f Fl(dy)40 b(=dt)336 b Fw(=)g Fl(f)119
+b Fw(\()p Fl(t;)184 b(y)40 b(;)184 b(p)p Fw(\))389 b(with)f(sensitivit)
+-31 b(y)388 b(analysis)g(capa-)6767 45306 y(bilities;)p
+Black 5660 47705 a Fn(\262)p Black 554 w Fs(kinsol)p
+Fw(,)368 b(a)i(solv)-31 b(er)369 b(for)h(nonlinear)g(algebraic)h
+(systems)e Fl(F)154 b Fw(\()p Fl(u)p Fw(\))308 b(=)f(0;)p
+Black 5660 50104 a Fn(\262)p Black 554 w Fs(id)-25 b(a)p
+Fw(,)370 b(a)f(solv)-31 b(er)370 b(for)f(di\256eren)-31
+b(tial-algebraic)373 b(systems)c Fl(F)154 b Fw(\()p Fl(t;)184
+b(y)40 b(;)184 b(y)33053 49702 y Fg(0)33364 50104 y Fw(\))308
+b(=)g(0.)4000 54010 y Fr(4.2)1793 b(CV)-50 b(ODES)599
+b(organization)4000 56521 y Fw(The)461 b Fs(cv)-25 b(odes)462
+b Fw(pac)-31 b(k)-61 b(age)462 b(is)f(written)i(in)e(ANSI)g
+Fs(C)p Fw(.)h(The)f(follo)-31 b(wing)465 b(summarizes)c(the)h(basic)f
+(structure)g(of)h(the)4000 57849 y(pac)-31 b(k)-61 b(age,)371
+b(although)g(kno)-31 b(wledge)372 b(of)d(this)h(structure)e(is)i(not)f
+(necessary)g(for)g(its)h(use.)5660 59224 y(The)497 b(o)-31
+b(v)g(erall)498 b(organization)h(of)d(the)g Fs(cv)-25
+b(odes)497 b Fw(pac)-31 b(k)-61 b(age)497 b(is)f(sho)-31
+b(wn)496 b(in)g(Figure)g(4.2.)874 b(The)496 b(basic)h(elemen)-31
+b(ts)4000 60552 y(of)536 b(the)g(structure)g(are)f(a)h(mo)31
+b(dule)537 b(for)f(the)g(basic)g(in)-31 b(tegration)539
+b(algorithm)f(\(including)g(forw)-31 b(ard)537 b(sensitivit)-31
+b(y)4000 61880 y(analysis\),)441 b(a)425 b(mo)31 b(dule)426
+b(for)f(adjoin)-31 b(t)427 b(sensitivit)-31 b(y)428 b(analysis,)440
+b(and)425 b(a)h(set)f(of)g(mo)31 b(dules)426 b(for)f(the)g(solution)i
+(of)e(linear)4000 63209 y(systems)351 b(that)h(arise)g(in)f(the)g(case)
+g(of)h(a)g(sti\256)f(system.)487 b(The)351 b(cen)-31
+b(tral)352 b(in)-31 b(tegration)354 b(mo)31 b(dule,)357
+b(implemen)-31 b(ted)353 b(in)f(the)4000 64537 y(\257les)359
+b Fu(cvodes.h)h Fw(and)f Fu(cvodes.c)p Fw(,)k(deals)c(with)h(the)g(ev)
+-61 b(aluation)361 b(of)f(in)-31 b(tegration)361 b(co)31
+b(e\261cien)-31 b(ts,)363 b(the)d(functional)h(or)4000
+65865 y(Newton)297 b(iteration)h(pro)31 b(cess,)310 b(estimation)299
+b(of)d(lo)31 b(cal)297 b(error,)310 b(selection)297 b(of)g(step)e(size)
+h(and)g(order,)311 b(and)296 b(in)-31 b(terp)31 b(olation)4000
+67194 y(to)305 b(user)e(output)j(p)31 b(oin)-31 b(ts,)318
+b(among)306 b(other)e(issues.)471 b(Although)306 b(this)e(mo)31
+b(dule)305 b(con)-31 b(tains)306 b(logic)g(for)e(the)h(basic)f(Newton)
+4000 68522 y(iteration)389 b(algorithm,)395 b(it)388
+b(has)f(no)h(kno)-31 b(wledge)389 b(of)f(the)g(metho)31
+b(d)388 b(b)31 b(eing)387 b(used)g(to)h(solv)-31 b(e)388
+b(the)f(linear)h(systems)g(that)4000 69850 y(arise.)481
+b(F)-92 b(or)332 b(an)-31 b(y)334 b(giv)-31 b(en)335
+b(user)d(problem,)342 b(one)334 b(of)f(the)h(linear)g(system)g(mo)31
+b(dules)334 b(is)f(sp)31 b(eci\257ed,)340 b(and)334 b(is)f(then)h(in)
+-31 b(v)g(ok)g(ed)4000 71179 y(as)369 b(needed)g(during)g(the)h(in)-31
+b(tegration.)5660 72553 y(In)390 b(addition,)398 b(if)391
+b(forw)-31 b(ard)390 b(sensitivit)-31 b(y)393 b(analysis)e(is)f(turned)
+g(on,)396 b(the)390 b(main)i(mo)31 b(dule)391 b(will)g(in)-31
+b(tegrate)392 b(the)f(for-)4000 73882 y(w)-31 b(ard)441
+b(sensitivit)-31 b(y)442 b(equations)f(sim)-31 b(ultaneously)443
+b(with)e(the)g(original)h(IVP)-92 b(.)440 b(The)g(sensitivit)-31
+b(y)442 b(v)-61 b(ariables)441 b(ma)-31 b(y)441 b(b)31
+b(e)4000 75210 y(included)359 b(in)f(the)h(lo)31 b(cal)360
+b(error)d(con)-31 b(trol)360 b(mec)-31 b(hanism)359 b(of)g(the)f(main)i
+(in)-31 b(tegrator.)491 b Fs(cv)-25 b(odes)359 b Fw(pro)-31
+b(vides)358 b(three)g(di\256er-)4000 76539 y(en)-31 b(t)408
+b(strategies)g(for)f(dealing)i(with)f(the)f(correction)h(stage)g(for)f
+(the)h(sensitivit)-31 b(y)409 b(v)-61 b(ariables:)569
+b Fu(CV)p 44370 76539 349 45 v 419 w(SIMULTANEOUS)p Fw(,)4000
+77867 y Fu(CV)p 5232 77867 V 419 w(STAGGERED)300 b Fw(and)f
+Fu(CV)p 14424 77867 V 419 w(STAGGERED1)h Fw(\(see)f Fn(x)p
+Fw(3.2)h(and)g Fn(x)p Fw(6.2.1\).)472 b(The)299 b Fs(cv)-25
+b(odes)299 b Fw(pac)-31 b(k)-61 b(age)300 b(includes)g(an)f(algorithm)p
+Black Black eop
+%%Page: 24 34
+24 33 bop Black 0 2701 a Fx(24)36248 b(Co)35 b(de)426
+b(Organization)p 0 3144 48001 45 v Black Black 0 33745
+a @beginspecial 0 @llx 0 @lly 804 @urx 301 @ury 4320
+ at rwi @setspecial
+%%BeginDocument: sunorg1.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: sunorg.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Wed Aug 20 14:17:18 2003
+%%For: radu at tux111.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 804 301
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.988 0.953 0.549 srgb} bind def
+/col33 {0.631 0.816 0.922 srgb} bind def
+/col34 {0.553 0.922 0.553 srgb} bind def
+/col35 {0.855 0.855 0.855 srgb} bind def
+
+end
+save
+newpath 0 301 moveto 0 0 lineto 804 0 lineto 804 301 lineto closepath clip newpath
+-3.2 303.1 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 10800 3900 m
+ 10800 4350 l gs col8 s gr 
+% Polyline
+n 180 1938 m 75 1938 75 2231 105 arcto 4 {pop} repeat
+  75 2336 1245 2336 105 arcto 4 {pop} repeat
+  1350 2336 1350 2043 105 arcto 4 {pop} repeat
+  1350 1938 180 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+285 2212 m
+gs 1 -1 sc (CVDIAG) col8 sh gr
+% Polyline
+n 1530 1938 m 1425 1938 1425 2231 105 arcto 4 {pop} repeat
+  1425 2336 2595 2336 105 arcto 4 {pop} repeat
+  2700 2336 2700 2043 105 arcto 4 {pop} repeat
+  2700 1938 1530 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+1537 2212 m
+gs 1 -1 sc (CVDENSE) col8 sh gr
+% Polyline
+n 2880 1938 m 2775 1938 2775 2231 105 arcto 4 {pop} repeat
+  2775 2336 3945 2336 105 arcto 4 {pop} repeat
+  4050 2336 4050 2043 105 arcto 4 {pop} repeat
+  4050 1938 2880 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+2955 2212 m
+gs 1 -1 sc (CVBAND) col8 sh gr
+% Polyline
+n 4230 1938 m 4125 1938 4125 2231 105 arcto 4 {pop} repeat
+  4125 2336 5295 2336 105 arcto 4 {pop} repeat
+  5400 2336 5400 2043 105 arcto 4 {pop} repeat
+  5400 1938 4230 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+4222 2212 m
+gs 1 -1 sc (CVSPGMR) col8 sh gr
+% Polyline
+n 6030 1938 m 5925 1938 5925 2231 105 arcto 4 {pop} repeat
+  5925 2336 7095 2336 105 arcto 4 {pop} repeat
+  7200 2336 7200 2043 105 arcto 4 {pop} repeat
+  7200 1938 6030 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+5985 2212 m
+gs 1 -1 sc (IDADENSE) col8 sh gr
+% Polyline
+n 7380 1938 m 7275 1938 7275 2231 105 arcto 4 {pop} repeat
+  7275 2336 8445 2336 105 arcto 4 {pop} repeat
+  8550 2336 8550 2043 105 arcto 4 {pop} repeat
+  8550 1938 7380 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+7402 2212 m
+gs 1 -1 sc (IDABAND) col8 sh gr
+% Polyline
+n 8730 1938 m 8625 1938 8625 2231 105 arcto 4 {pop} repeat
+  8625 2336 9795 2336 105 arcto 4 {pop} repeat
+  9900 2336 9900 2043 105 arcto 4 {pop} repeat
+  9900 1938 8730 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+8670 2212 m
+gs 1 -1 sc (IDASPGMR) col8 sh gr
+% Polyline
+n 7380 963 m 7275 963 7275 1256 105 arcto 4 {pop} repeat
+  7275 1361 8445 1361 105 arcto 4 {pop} repeat
+  8550 1361 8550 1068 105 arcto 4 {pop} repeat
+  8550 963 7380 963 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+7710 1237 m
+gs 1 -1 sc (IDA) col8 sh gr
+% Polyline
+n 11280 963 m 11175 963 11175 1256 105 arcto 4 {pop} repeat
+  11175 1361 12345 1361 105 arcto 4 {pop} repeat
+  12450 1361 12450 1068 105 arcto 4 {pop} repeat
+  12450 963 11280 963 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+11392 1237 m
+gs 1 -1 sc (KINSOL) col8 sh gr
+% Polyline
+n 11280 1938 m 11175 1938 11175 2231 105 arcto 4 {pop} repeat
+  11175 2336 12345 2336 105 arcto 4 {pop} repeat
+  12450 2336 12450 2043 105 arcto 4 {pop} repeat
+  12450 1938 11280 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+11220 2212 m
+gs 1 -1 sc (KINSPGMR) col8 sh gr
+% Polyline
+n 1230 963 m 1125 963 1125 1256 105 arcto 4 {pop} repeat
+  1125 1361 2295 1361 105 arcto 4 {pop} repeat
+  2400 1361 2400 1068 105 arcto 4 {pop} repeat
+  2400 963 1230 963 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+1372 1237 m
+gs 1 -1 sc (CVODE) col8 sh gr
+% Polyline
+n 3180 963 m 3075 963 3075 1256 105 arcto 4 {pop} repeat
+  3075 1361 4245 1361 105 arcto 4 {pop} repeat
+  4350 1361 4350 1068 105 arcto 4 {pop} repeat
+  4350 963 3180 963 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+3255 1237 m
+gs 1 -1 sc (CVODES) col8 sh gr
+% Polyline
+n 5580 63 m 5475 63 5475 356 105 arcto 4 {pop} repeat
+  5475 461 6645 461 105 arcto 4 {pop} repeat
+  6750 461 6750 168 105 arcto 4 {pop} repeat
+  6750 63 5580 63 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+5565 337 m
+gs 1 -1 sc (SUNDIALS) col8 sh gr
+% Polyline
+n 3300 3514 m 4575 3514 l 4575 3911 l 3300 3911 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+3562 3787 m
+gs 1 -1 sc (DENSE) col8 sh gr
+% Polyline
+n 7725 3525 m 9000 3525 l 9000 4275 l 7725 4275 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+7972 3825 m
+gs 1 -1 sc (SPGMR) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+7830 4125 m
+gs 1 -1 sc (ITERATIVE) col8 sh gr
+% Polyline
+n 5475 3514 m 6750 3514 l 6750 3911 l 5475 3911 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+5805 3787 m
+gs 1 -1 sc (BAND) col8 sh gr
+% Polyline
+n 10200 3514 m 11475 3514 l 11475 3911 l 10200 3911 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+10380 3780 m
+gs 1 -1 sc (NVECTOR) col8 sh gr
+% Polyline
+n 8325 4644 m 10800 4644 l 10800 5030 l 8325 5030 l
+ cp gs col35 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+8715 4882 m
+gs 1 -1 sc (NVECTOR_SERIAL) col8 sh gr
+% Polyline
+n 10950 4644 m 13425 4644 l 13425 5030 l 10950 5030 l
+ cp gs col35 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+11182 4882 m
+gs 1 -1 sc (NVECTOR_PARALLEL) col8 sh gr
+% Polyline
+n 2025 2325 m 2025 2775 l 6600 2775 l
+ 6600 2325 l gs col8 s gr 
+% Polyline
+n 3375 2325 m 3375 2925 l 7950 2925 l
+ 7950 2325 l gs col8 s gr 
+% Polyline
+n 4725 2325 m 4725 3150 l 11850 3150 l
+ 11850 2325 l gs col8 s gr 
+% Polyline
+n 9300 2325 m
+ 9300 3150 l gs col8 s gr 
+% Polyline
+n 1725 1350 m 1725 1575 l 3675 1575 l
+ 3675 1350 l gs col8 s gr 
+% Polyline
+gs  clippath
+4680 1965 m 4770 1965 l 4770 1808 l 4725 1928 l 4680 1808 l cp
+705 1965 m 795 1965 l 795 1808 l 750 1928 l 705 1808 l cp
+eoclip
+n 750 1950 m 750 1725 l 4725 1725 l
+ 4725 1950 l gs col8 s gr gr
+
+% arrowhead
+n 705 1808 m 750 1928 l 795 1808 l 705 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 4680 1808 m 4725 1928 l 4770 1808 l 4680 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+3930 3540 m 4020 3540 l 4020 3383 l 3975 3503 l 3930 3383 l cp
+eoclip
+n 3975 2775 m
+ 3975 3525 l gs col8 s gr gr
+
+% arrowhead
+n 3930 3383 m 3975 3503 l 4020 3383 l 3930 3383 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6030 3540 m 6120 3540 l 6120 3383 l 6075 3503 l 6030 3383 l cp
+eoclip
+n 6075 2925 m
+ 6075 3525 l gs col8 s gr gr
+
+% arrowhead
+n 6030 3383 m 6075 3503 l 6120 3383 l 6030 3383 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8280 3540 m 8370 3540 l 8370 3383 l 8325 3503 l 8280 3383 l cp
+eoclip
+n 8325 3150 m
+ 8325 3525 l gs col8 s gr gr
+
+% arrowhead
+n 8280 3383 m 8325 3503 l 8370 3383 l 8280 3383 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+11805 1965 m 11895 1965 l 11895 1808 l 11850 1928 l 11805 1808 l cp
+eoclip
+n 11850 1350 m
+ 11850 1950 l gs col8 s gr gr
+
+% arrowhead
+n 11805 1808 m 11850 1928 l 11895 1808 l 11805 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+11805 990 m 11895 990 l 11895 833 l 11850 953 l 11805 833 l cp
+1680 990 m 1770 990 l 1770 833 l 1725 953 l 1680 833 l cp
+eoclip
+n 1725 975 m 1725 675 l 11850 675 l
+ 11850 975 l gs col8 s gr gr
+
+% arrowhead
+n 1680 833 m 1725 953 l 1770 833 l 1680 833 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 11805 833 m 11850 953 l 11895 833 l 11805 833 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+9255 1965 m 9345 1965 l 9345 1808 l 9300 1928 l 9255 1808 l cp
+6555 1965 m 6645 1965 l 6645 1808 l 6600 1928 l 6555 1808 l cp
+eoclip
+n 6600 1950 m 6600 1725 l 9300 1725 l
+ 9300 1950 l gs col8 s gr gr
+
+% arrowhead
+n 6555 1808 m 6600 1928 l 6645 1808 l 6555 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 9255 1808 m 9300 1928 l 9345 1808 l 9255 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 7950 1350 m
+ 7950 1725 l gs col8 s gr 
+% Polyline
+gs  clippath
+3630 990 m 3720 990 l 3720 833 l 3675 953 l 3630 833 l cp
+eoclip
+n 3675 675 m
+ 3675 975 l gs col8 s gr gr
+
+% arrowhead
+n 3630 833 m 3675 953 l 3720 833 l 3630 833 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+7905 990 m 7995 990 l 7995 833 l 7950 953 l 7905 833 l cp
+eoclip
+n 7950 675 m
+ 7950 975 l gs col8 s gr gr
+
+% arrowhead
+n 7905 833 m 7950 953 l 7995 833 l 7905 833 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+12030 4665 m 12120 4665 l 12120 4508 l 12075 4628 l 12030 4508 l cp
+9480 4665 m 9570 4665 l 9570 4508 l 9525 4628 l 9480 4508 l cp
+eoclip
+n 9525 4650 m 9525 4350 l 12075 4350 l
+ 12075 4650 l gs col8 s gr gr
+
+% arrowhead
+n 9480 4508 m 9525 4628 l 9570 4508 l 9480 4508 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 12030 4508 m 12075 4628 l 12120 4508 l 12030 4508 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 6075 450 m
+ 6075 675 l gs col8 s gr 
+% Polyline
+gs  clippath
+1980 1965 m 2070 1965 l 2070 1808 l 2025 1928 l 1980 1808 l cp
+eoclip
+n 2025 1725 m
+ 2025 1950 l gs col8 s gr gr
+
+% arrowhead
+n 1980 1808 m 2025 1928 l 2070 1808 l 1980 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+3330 1965 m 3420 1965 l 3420 1808 l 3375 1928 l 3330 1808 l cp
+eoclip
+n 3375 1725 m
+ 3375 1950 l gs col8 s gr gr
+
+% arrowhead
+n 3330 1808 m 3375 1928 l 3420 1808 l 3330 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+7905 1965 m 7995 1965 l 7995 1808 l 7950 1928 l 7905 1808 l cp
+eoclip
+n 7950 1725 m
+ 7950 1950 l gs col8 s gr gr
+
+% arrowhead
+n 7905 1808 m 7950 1928 l 7995 1808 l 7905 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 2775 1575 m
+ 2775 1725 l gs col8 s gr 
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial 19361 36180 a Fe(\(a\))314 b(High-lev)-26
+b(el)314 b(diagram)0 63101 y @beginspecial 0 @llx 0 @lly
+768 @urx 390 @ury 4320 @rwi @setspecial
+%%BeginDocument: sunorg2.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: sunorg2.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Fri Jul 23 08:13:08 2004
+%%For: radu at tux111.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 768 390
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.592 0.776 0.882 srgb} bind def
+/col33 {0.949 0.914 0.525 srgb} bind def
+/col34 {0.816 0.816 0.816 srgb} bind def
+/col35 {0.961 0.941 0.765 srgb} bind def
+
+end
+save
+newpath 0 390 moveto 0 0 lineto 768 0 lineto 768 390 lineto closepath clip newpath
+-79.7 424.3 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 4200 4050 m 5100 4050 l 5100 4350 l 4200 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 5400 m 5100 5400 l 5100 5700 l 4200 5700 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 5400 m 9675 5400 l 9675 5700 l 8775 5700 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 2100 4050 m 3000 4050 l 3000 4350 l 2100 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 4050 m 7200 4050 l 7200 4350 l 6300 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 4050 m 9675 4050 l 9675 4350 l 8775 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 4050 m 11775 4050 l 11775 4350 l 10875 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 2250 m 9825 2250 l 9825 2550 l 8775 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 2250 m 11925 2250 l 11925 2550 l 10875 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 2250 m 7350 2250 l 7350 2550 l 6300 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 2250 m 5250 2250 l 5250 2550 l 4200 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 2100 2250 m 3150 2250 l 3150 2550 l 2100 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 5850 m 5700 5850 l 5700 6150 l 4200 6150 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 6300 m 5700 6300 l 5700 6600 l 4200 6600 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 6750 m 4800 6750 l 4800 7050 l 4200 7050 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 6750 m 6900 6750 l 6900 7050 l 6300 7050 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 6300 m 7800 6300 l 7800 6600 l 6300 6600 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 5850 m 7800 5850 l 7800 6150 l 6300 6150 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 5850 m 10275 5850 l 10275 6150 l 8775 6150 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 6300 m 10275 6300 l 10275 6600 l 8775 6600 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 6750 m 9375 6750 l 9375 7050 l 8775 7050 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 6750 m 11475 6750 l 11475 7050 l 10875 7050 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 6300 m 12375 6300 l 12375 6600 l 10875 6600 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 5850 m 12375 5850 l 12375 6150 l 10875 6150 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 1350 1650 m 2250 1650 l 2250 1950 l 1350 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 3450 1650 m 4350 1650 l 4350 1950 l 3450 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 5550 1650 m 6450 1650 l 6450 1950 l 5550 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8025 1650 m 8925 1650 l 8925 1950 l 8025 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10125 1650 m 11025 1650 l 11025 1950 l 10125 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 600 m 7500 600 l 7500 900 l 6300 900 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 11625 1650 m 12825 1650 l 12825 1950 l 11625 1950 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 12900 1650 m 14100 1650 l 14100 1950 l 12900 1950 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Courier ff 180.00 scf sf
+2250 3270 m
+gs 1 -1 sc (nvector.h) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 3480 m
+gs 1 -1 sc (dense.h) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 3690 m
+gs 1 -1 sc (spgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 3900 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 2850 m
+gs 1 -1 sc (sundialstypes.h) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 3060 m
+gs 1 -1 sc (sundialsmath.h) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 3480 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 5205 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 5430 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 5430 m
+gs 1 -1 sc (...) col0 sh gr
+% Polyline
+gs  clippath
+4215 4252 m 4215 4147 l 4026 4147 l 4176 4200 l 4026 4252 l cp
+eoclip
+n 3900 4200 m
+ 4200 4200 l gs col8 s gr gr
+
+% arrowhead
+n 4026 4252 m 4176 4200 l 4026 4147 l 4026 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 5602 m 4215 5497 l 4026 5497 l 4176 5550 l 4026 5602 l cp
+eoclip
+n 3900 5550 m
+ 4200 5550 l gs col8 s gr gr
+
+% arrowhead
+n 4026 5602 m 4176 5550 l 4026 5497 l 4026 5602 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 5602 m 8790 5497 l 8601 5497 l 8751 5550 l 8601 5602 l cp
+eoclip
+n 8475 5550 m
+ 8775 5550 l gs col8 s gr gr
+
+% arrowhead
+n 8601 5602 m 8751 5550 l 8601 5497 l 8601 5602 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 1800 1950 m
+ 1800 4200 l gs col8 s gr 
+% Polyline
+n 6000 1950 m
+ 6000 6900 l gs col8 s gr 
+% Polyline
+n 3900 1950 m
+ 3900 6900 l gs col8 s gr 
+% Polyline
+n 8475 1950 m
+ 8475 6900 l gs col8 s gr 
+% Polyline
+n 10575 1950 m
+ 10575 6900 l gs col8 s gr 
+% Polyline
+gs  clippath
+6315 6952 m 6315 6847 l 6126 6847 l 6276 6900 l 6126 6952 l cp
+eoclip
+n 6000 6900 m
+ 6300 6900 l gs col8 s gr gr
+
+% arrowhead
+n 6126 6952 m 6276 6900 l 6126 6847 l 6126 6952 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6315 6502 m 6315 6397 l 6126 6397 l 6276 6450 l 6126 6502 l cp
+eoclip
+n 6000 6450 m
+ 6300 6450 l gs col8 s gr gr
+
+% arrowhead
+n 6126 6502 m 6276 6450 l 6126 6397 l 6126 6502 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6315 6052 m 6315 5947 l 6126 5947 l 6276 6000 l 6126 6052 l cp
+eoclip
+n 6000 6000 m
+ 6300 6000 l gs col8 s gr gr
+
+% arrowhead
+n 6126 6052 m 6276 6000 l 6126 5947 l 6126 6052 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6315 4252 m 6315 4147 l 6126 4147 l 6276 4200 l 6126 4252 l cp
+eoclip
+n 6000 4200 m
+ 6300 4200 l gs col8 s gr gr
+
+% arrowhead
+n 6126 4252 m 6276 4200 l 6126 4147 l 6126 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6315 2452 m 6315 2347 l 6126 2347 l 6276 2400 l 6126 2452 l cp
+eoclip
+n 6000 2400 m
+ 6300 2400 l gs col8 s gr gr
+
+% arrowhead
+n 6126 2452 m 6276 2400 l 6126 2347 l 6126 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 6952 m 4215 6847 l 4026 6847 l 4176 6900 l 4026 6952 l cp
+eoclip
+n 3900 6900 m
+ 4200 6900 l gs col8 s gr gr
+
+% arrowhead
+n 4026 6952 m 4176 6900 l 4026 6847 l 4026 6952 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 6502 m 4215 6397 l 4026 6397 l 4176 6450 l 4026 6502 l cp
+eoclip
+n 3900 6450 m
+ 4200 6450 l gs col8 s gr gr
+
+% arrowhead
+n 4026 6502 m 4176 6450 l 4026 6397 l 4026 6502 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 6052 m 4215 5947 l 4026 5947 l 4176 6000 l 4026 6052 l cp
+eoclip
+n 3900 6000 m
+ 4200 6000 l gs col8 s gr gr
+
+% arrowhead
+n 4026 6052 m 4176 6000 l 4026 5947 l 4026 6052 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 2452 m 4215 2347 l 4026 2347 l 4176 2400 l 4026 2452 l cp
+eoclip
+n 3900 2400 m
+ 4200 2400 l gs col8 s gr gr
+
+% arrowhead
+n 4026 2452 m 4176 2400 l 4026 2347 l 4026 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+2115 2452 m 2115 2347 l 1926 2347 l 2076 2400 l 1926 2452 l cp
+eoclip
+n 1800 2400 m
+ 2100 2400 l gs col8 s gr gr
+
+% arrowhead
+n 1926 2452 m 2076 2400 l 1926 2347 l 1926 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+2115 4252 m 2115 4147 l 1926 4147 l 2076 4200 l 1926 4252 l cp
+eoclip
+n 1800 4200 m
+ 2100 4200 l gs col8 s gr gr
+
+% arrowhead
+n 1926 4252 m 2076 4200 l 1926 4147 l 1926 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+1747 1665 m 1852 1665 l 1852 1476 l 1800 1626 l 1747 1476 l cp
+eoclip
+n 1800 1350 m
+ 1800 1650 l gs col8 s gr gr
+
+% arrowhead
+n 1747 1476 m 1800 1626 l 1852 1476 l 1747 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+3847 1665 m 3952 1665 l 3952 1476 l 3900 1626 l 3847 1476 l cp
+eoclip
+n 3900 1350 m
+ 3900 1650 l gs col8 s gr gr
+
+% arrowhead
+n 3847 1476 m 3900 1626 l 3952 1476 l 3847 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+5947 1665 m 6052 1665 l 6052 1476 l 6000 1626 l 5947 1476 l cp
+eoclip
+n 6000 1350 m
+ 6000 1650 l gs col8 s gr gr
+
+% arrowhead
+n 5947 1476 m 6000 1626 l 6052 1476 l 5947 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6922 1365 m 7027 1365 l 7027 1176 l 6975 1326 l 6922 1176 l cp
+eoclip
+n 6975 900 m
+ 6975 1350 l gs col8 s gr gr
+
+% arrowhead
+n 6922 1176 m 6975 1326 l 7027 1176 l 6922 1176 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8422 1665 m 8527 1665 l 8527 1476 l 8475 1626 l 8422 1476 l cp
+eoclip
+n 8475 1350 m
+ 8475 1650 l gs col8 s gr gr
+
+% arrowhead
+n 8422 1476 m 8475 1626 l 8527 1476 l 8422 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10522 1665 m 10627 1665 l 10627 1476 l 10575 1626 l 10522 1476 l cp
+eoclip
+n 10575 1350 m
+ 10575 1650 l gs col8 s gr gr
+
+% arrowhead
+n 10522 1476 m 10575 1626 l 10627 1476 l 10522 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+12172 1665 m 12277 1665 l 12277 1476 l 12225 1626 l 12172 1476 l cp
+eoclip
+n 12225 1350 m
+ 12225 1650 l gs col8 s gr gr
+
+% arrowhead
+n 12172 1476 m 12225 1626 l 12277 1476 l 12172 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+13447 1665 m 13552 1665 l 13552 1476 l 13500 1626 l 13447 1476 l cp
+eoclip
+n 13500 1350 m
+ 13500 1650 l gs col8 s gr gr
+
+% arrowhead
+n 13447 1476 m 13500 1626 l 13552 1476 l 13447 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 2452 m 10890 2347 l 10701 2347 l 10851 2400 l 10701 2452 l cp
+eoclip
+n 10575 2400 m
+ 10875 2400 l gs col8 s gr gr
+
+% arrowhead
+n 10701 2452 m 10851 2400 l 10701 2347 l 10701 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 2452 m 8790 2347 l 8601 2347 l 8751 2400 l 8601 2452 l cp
+eoclip
+n 8475 2400 m
+ 8775 2400 l gs col8 s gr gr
+
+% arrowhead
+n 8601 2452 m 8751 2400 l 8601 2347 l 8601 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 4252 m 8790 4147 l 8601 4147 l 8751 4200 l 8601 4252 l cp
+eoclip
+n 8475 4200 m
+ 8775 4200 l gs col8 s gr gr
+
+% arrowhead
+n 8601 4252 m 8751 4200 l 8601 4147 l 8601 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 6052 m 8790 5947 l 8601 5947 l 8751 6000 l 8601 6052 l cp
+eoclip
+n 8475 6000 m
+ 8775 6000 l gs col8 s gr gr
+
+% arrowhead
+n 8601 6052 m 8751 6000 l 8601 5947 l 8601 6052 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 6502 m 8790 6397 l 8601 6397 l 8751 6450 l 8601 6502 l cp
+eoclip
+n 8475 6450 m
+ 8775 6450 l gs col8 s gr gr
+
+% arrowhead
+n 8601 6502 m 8751 6450 l 8601 6397 l 8601 6502 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 6952 m 8790 6847 l 8601 6847 l 8751 6900 l 8601 6952 l cp
+eoclip
+n 8475 6900 m
+ 8775 6900 l gs col8 s gr gr
+
+% arrowhead
+n 8601 6952 m 8751 6900 l 8601 6847 l 8601 6952 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 6952 m 10890 6847 l 10701 6847 l 10851 6900 l 10701 6952 l cp
+eoclip
+n 10575 6900 m
+ 10875 6900 l gs col8 s gr gr
+
+% arrowhead
+n 10701 6952 m 10851 6900 l 10701 6847 l 10701 6952 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 6502 m 10890 6397 l 10701 6397 l 10851 6450 l 10701 6502 l cp
+eoclip
+n 10575 6450 m
+ 10875 6450 l gs col8 s gr gr
+
+% arrowhead
+n 10701 6502 m 10851 6450 l 10701 6397 l 10701 6502 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 6052 m 10890 5947 l 10701 5947 l 10851 6000 l 10701 6052 l cp
+eoclip
+n 10575 6000 m
+ 10875 6000 l gs col8 s gr gr
+
+% arrowhead
+n 10701 6052 m 10851 6000 l 10701 5947 l 10701 6052 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 4252 m 10890 4147 l 10701 4147 l 10851 4200 l 10701 4252 l cp
+eoclip
+n 10575 4200 m
+ 10875 4200 l gs col8 s gr gr
+
+% arrowhead
+n 10701 4252 m 10851 4200 l 10701 4147 l 10701 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 1800 1350 m
+ 13500 1350 l gs col8 s gr 
+/Courier ff 180.00 scf sf
+4500 3060 m
+gs 1 -1 sc (cvdense.h) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 3270 m
+gs 1 -1 sc (cvspgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 2850 m
+gs 1 -1 sc (cvodes.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 3060 m
+gs 1 -1 sc (cvodea.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 3270 m
+gs 1 -1 sc (cvdense.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 3480 m
+gs 1 -1 sc (cvspgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 3690 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 4650 m
+gs 1 -1 sc (cvode.c) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 4860 m
+gs 1 -1 sc (cvdense.c) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 5070 m
+gs 1 -1 sc (cvspgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 4650 m
+gs 1 -1 sc (cvodes.c) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 4860 m
+gs 1 -1 sc (cvodea.c) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 5070 m
+gs 1 -1 sc (cvdense.c) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 5280 m
+gs 1 -1 sc (cvspgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 2850 m
+gs 1 -1 sc (kinsol.h) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 3060 m
+gs 1 -1 sc (kinspgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 3270 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 2850 m
+gs 1 -1 sc (ida.h) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 3060 m
+gs 1 -1 sc (idadense.h) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 3270 m
+gs 1 -1 sc (idaspgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 3480 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 4650 m
+gs 1 -1 sc (kinsol.c) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 4860 m
+gs 1 -1 sc (kinspgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 4650 m
+gs 1 -1 sc (ida.c) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 4860 m
+gs 1 -1 sc (idadense.c) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 5070 m
+gs 1 -1 sc (idaspgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 5280 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 2850 m
+gs 1 -1 sc (cvode.h) col0 sh gr
+/Courier ff 180.00 scf sf
+7125 1200 m
+gs 1 -1 sc (configure) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 4860 m
+gs 1 -1 sc (nvector.c) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 5070 m
+gs 1 -1 sc (dense.c) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 5280 m
+gs 1 -1 sc (spgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 4650 m
+gs 1 -1 sc (sundialsmath.c) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 5070 m
+gs 1 -1 sc (...) col0 sh gr
+/Times-Bold ff 210.00 scf sf
+4350 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4350 5625 m
+gs 1 -1 sc (fcmix) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8925 5625 m
+gs 1 -1 sc (fcmix) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4342 6975 m
+gs 1 -1 sc (doc) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4297 6525 m
+gs 1 -1 sc (examples_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4312 6075 m
+gs 1 -1 sc (examples_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6412 6075 m
+gs 1 -1 sc (examples_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6397 6525 m
+gs 1 -1 sc (examples_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6442 6975 m
+gs 1 -1 sc (doc) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8917 6975 m
+gs 1 -1 sc (doc) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8872 6525 m
+gs 1 -1 sc (examples_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8887 6075 m
+gs 1 -1 sc (examples_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8925 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+11025 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6450 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+2250 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+11062 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8962 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6487 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4387 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+2287 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+1492 1875 m
+gs 1 -1 sc (shared) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+3630 1875 m
+gs 1 -1 sc (cvode) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+5685 1875 m
+gs 1 -1 sc (cvodes) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8190 1875 m
+gs 1 -1 sc (kinsol) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+10440 1875 m
+gs 1 -1 sc (ida) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+11805 1875 m
+gs 1 -1 sc (nvec_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+13065 1875 m
+gs 1 -1 sc (nvec_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6525 825 m
+gs 1 -1 sc (sundials) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+10987 6075 m
+gs 1 -1 sc (examples_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+10972 6525 m
+gs 1 -1 sc (examples_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+11017 6975 m
+gs 1 -1 sc (doc) col8 sh gr
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial 19259 65536 a(\(b\))f(Directory)h(structure)p
+Black 12086 68851 a Fw(Figure)369 b(4.1:)494 b(Organization)372
+b(of)e(the)f(SUNDIALS)g(suite)p Black Black Black Black
+eop
+%%Page: 25 35
+25 34 bop Black 4000 2701 a Fx(4.2)425 b(CV)-35 b(ODES)426
+b(organization)32076 b(25)p 4000 3144 48001 45 v Black
+Black 4000 30012 a @beginspecial 0 @llx 0 @lly 660 @urx
+332 @ury 4320 @rwi @setspecial
+%%BeginDocument: cvsorg.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: cvsorg.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Wed Feb 18 11:31:32 2004
+%%For: radu at tux111.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 660 332
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.965 0.929 0.525 srgb} bind def
+/col33 {0.608 0.792 0.898 srgb} bind def
+/col34 {0.529 0.898 0.529 srgb} bind def
+/col35 {0.831 0.831 0.831 srgb} bind def
+/col36 {0.976 0.957 0.780 srgb} bind def
+/col37 {0.533 0.533 0.533 srgb} bind def
+
+end
+save
+newpath 0 332 moveto 0 0 lineto 660 0 lineto 660 332 lineto closepath clip newpath
+1.3 343.5 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 5400 1650 m
+ 5400 2025 l gs col8 s gr 
+% Polyline
+gs  clippath
+5370 1215 m 5430 1215 l 5430 1048 l 5400 1168 l 5370 1048 l cp
+eoclip
+n 5400 675 m
+ 5400 1200 l gs col36 1.00 shd ef gr gs col37 s gr gr
+
+% arrowhead
+n 5370 1048 m 5400 1168 l 5430 1048 l 5370 1048 l  cp gs col37 1.00 shd ef gr  col37 s
+% Polyline
+n 2700 4425 m
+ 2700 4875 l gs col8 s gr 
+% Polyline
+n 7425 3975 m 8775 3975 l 8775 4725 l 7425 4725 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+7710 4275 m
+gs 1 -1 sc (SPGMR) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+7567 4575 m
+gs 1 -1 sc (ITERATIVE) col8 sh gr
+% Polyline
+n 5625 3975 m 6975 3975 l 6975 4425 l 5625 4425 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+5992 4275 m
+gs 1 -1 sc (BAND) col8 sh gr
+% Polyline
+n 3825 3969 m 5175 3969 l 5175 4430 l 3825 4430 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+4125 4275 m
+gs 1 -1 sc (DENSE) col8 sh gr
+% Polyline
+n 4830 1200 m 4725 1200 4725 1545 105 arcto 4 {pop} repeat
+  4725 1650 5970 1650 105 arcto 4 {pop} repeat
+  6075 1650 6075 1305 105 arcto 4 {pop} repeat
+  6075 1200 4830 1200 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+4942 1500 m
+gs 1 -1 sc (CVODES) col8 sh gr
+% Polyline
+n 4830 225 m 4725 225 4725 570 105 arcto 4 {pop} repeat
+  4725 675 5970 675 105 arcto 4 {pop} repeat
+  6075 675 6075 330 105 arcto 4 {pop} repeat
+  6075 225 4830 225 105 arcto 4 {pop} repeat
+ cp gs col36 1.00 shd ef gr gs col37 s gr 
+/Times-Bold ff 180.00 scf sf
+4927 517 m
+gs 1 -1 sc (SUNDIALS) col37 sh gr
+% Polyline
+n 7530 1200 m 7425 1200 7425 1545 105 arcto 4 {pop} repeat
+  7425 1650 8670 1650 105 arcto 4 {pop} repeat
+  8775 1650 8775 1305 105 arcto 4 {pop} repeat
+  8775 1200 7530 1200 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+7635 1500 m
+gs 1 -1 sc (CVODEA) col8 sh gr
+% Polyline
+n 105 1200 m 0 1200 0 1545 105 arcto 4 {pop} repeat
+  0 1650 1245 1650 105 arcto 4 {pop} repeat
+  1350 1650 1350 1305 105 arcto 4 {pop} repeat
+  1350 1200 105 1200 105 arcto 4 {pop} repeat
+ cp gs col36 1.00 shd ef gr gs col37 s gr 
+/Times-Bold ff 180.00 scf sf
+352 1492 m
+gs 1 -1 sc (CVODE) col37 sh gr
+% Polyline
+n 1680 1200 m 1575 1200 1575 1545 105 arcto 4 {pop} repeat
+  1575 1650 2820 1650 105 arcto 4 {pop} repeat
+  2925 1650 2925 1305 105 arcto 4 {pop} repeat
+  2925 1200 1680 1200 105 arcto 4 {pop} repeat
+ cp gs col36 1.00 shd ef gr gs col37 s gr 
+/Times-Bold ff 180.00 scf sf
+1890 1492 m
+gs 1 -1 sc (KINSOL) col37 sh gr
+% Polyline
+n 3255 1200 m 3150 1200 3150 1545 105 arcto 4 {pop} repeat
+  3150 1650 4395 1650 105 arcto 4 {pop} repeat
+  4500 1650 4500 1305 105 arcto 4 {pop} repeat
+  4500 1200 3255 1200 105 arcto 4 {pop} repeat
+ cp gs col36 1.00 shd ef gr gs col37 s gr 
+/Times-Bold ff 180.00 scf sf
+3652 1492 m
+gs 1 -1 sc (IDA) col37 sh gr
+% Polyline
+n 2848 5254 m 5252 5254 l 5252 5695 l 2848 5695 l
+ cp gs col35 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+3073 5518 m
+gs 1 -1 sc (NVECTOR_PARALLEL) col8 sh gr
+% Polyline
+n 2025 3975 m 3375 3975 l 3375 4425 l 2025 4425 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+2242 4267 m
+gs 1 -1 sc (NVECTOR) col8 sh gr
+% Polyline
+gs  clippath
+8070 3990 m 8130 3990 l 8130 3823 l 8100 3943 l 8070 3823 l cp
+eoclip
+n 8100 2850 m
+ 8100 3975 l gs col8 s gr gr
+
+% arrowhead
+n 8070 3823 m 8100 3943 l 8130 3823 l 8070 3823 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6270 3990 m 6330 3990 l 6330 3823 l 6300 3943 l 6270 3823 l cp
+eoclip
+n 6300 2850 m
+ 6300 3975 l gs col8 s gr gr
+
+% arrowhead
+n 6270 3823 m 6300 3943 l 6330 3823 l 6270 3823 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4470 3990 m 4530 3990 l 4530 3823 l 4500 3943 l 4470 3823 l cp
+eoclip
+n 4500 2850 m
+ 4500 3975 l gs col8 s gr gr
+
+% arrowhead
+n 4470 3823 m 4500 3943 l 4530 3823 l 4470 3823 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8085 3045 m 8085 3105 l 8252 3105 l 8132 3075 l 8252 3045 l cp
+eoclip
+n 9300 3075 m
+ 8100 3075 l gs col8 s gr gr
+
+% arrowhead
+n 8252 3045 m 8132 3075 l 8252 3105 l 8252 3045 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8085 3645 m 8085 3705 l 8252 3705 l 8132 3675 l 8252 3645 l cp
+eoclip
+n 9300 3675 m
+ 8100 3675 l gs col8 s gr gr
+
+% arrowhead
+n 8252 3645 m 8132 3675 l 8252 3705 l 8252 3645 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8070 2415 m 8130 2415 l 8130 2248 l 8100 2368 l 8070 2248 l cp
+2670 2415 m 2730 2415 l 2730 2248 l 2700 2368 l 2670 2248 l cp
+eoclip
+n 2700 2400 m 2700 2025 l 8100 2025 l
+ 8100 2400 l gs col8 s gr gr
+
+% arrowhead
+n 2670 2248 m 2700 2368 l 2730 2248 l 2670 2248 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 8070 2248 m 8100 2368 l 8130 2248 l 8070 2248 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4470 2415 m 4530 2415 l 4530 2248 l 4500 2368 l 4470 2248 l cp
+eoclip
+n 4500 2025 m
+ 4500 2400 l gs col8 s gr gr
+
+% arrowhead
+n 4470 2248 m 4500 2368 l 4530 2248 l 4470 2248 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6270 2415 m 6330 2415 l 6330 2248 l 6300 2368 l 6270 2248 l cp
+eoclip
+n 6300 2025 m
+ 6300 2400 l gs col8 s gr gr
+
+% arrowhead
+n 6270 2248 m 6300 2368 l 6330 2248 l 6270 2248 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6060 1395 m 6060 1455 l 6227 1455 l 6107 1425 l 6227 1395 l cp
+eoclip
+n 7425 1425 m
+ 6075 1425 l gs col8 s gr gr
+
+% arrowhead
+n 6227 1395 m 6107 1425 l 6227 1455 l 6227 1395 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+645 1215 m 705 1215 l 705 1048 l 675 1168 l 645 1048 l cp
+eoclip
+n 4725 450 m 675 450 l
+ 675 1200 l gs col37 s gr gr
+
+% arrowhead
+n 645 1048 m 675 1168 l 705 1048 l 645 1048 l  cp gs col37 1.00 shd ef gr  col37 s
+% Polyline
+gs  clippath
+2220 1215 m 2280 1215 l 2280 1048 l 2250 1168 l 2220 1048 l cp
+eoclip
+n 2250 450 m
+ 2250 1200 l gs col37 s gr gr
+
+% arrowhead
+n 2220 1048 m 2250 1168 l 2280 1048 l 2220 1048 l  cp gs col37 1.00 shd ef gr  col37 s
+% Polyline
+gs  clippath
+3795 1215 m 3855 1215 l 3855 1048 l 3825 1168 l 3795 1048 l cp
+eoclip
+n 3825 450 m
+ 3825 1200 l gs col37 s gr gr
+
+% arrowhead
+n 3795 1048 m 3825 1168 l 3855 1048 l 3795 1048 l  cp gs col37 1.00 shd ef gr  col37 s
+% Polyline
+n 225 5247 m 2625 5247 l 2625 5703 l 225 5703 l
+ cp gs col35 1.00 shd ef gr gs col8 s gr 
+% Polyline
+gs  clippath
+3945 5265 m 4005 5265 l 4005 5098 l 3975 5218 l 3945 5098 l cp
+1395 5265 m 1455 5265 l 1455 5098 l 1425 5218 l 1395 5098 l cp
+eoclip
+n 1425 5250 m 1425 4875 l 3975 4875 l
+ 3975 5250 l gs col8 s gr gr
+
+% arrowhead
+n 1395 5098 m 1425 5218 l 1455 5098 l 1395 5098 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 3945 5098 m 3975 5218 l 4005 5098 l 3945 5098 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 2130 2400 m 2025 2400 2025 2745 105 arcto 4 {pop} repeat
+  2025 2850 3270 2850 105 arcto 4 {pop} repeat
+  3375 2850 3375 2505 105 arcto 4 {pop} repeat
+  3375 2400 2130 2400 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 3930 2400 m 3825 2400 3825 2745 105 arcto 4 {pop} repeat
+  3825 2850 5070 2850 105 arcto 4 {pop} repeat
+  5175 2850 5175 2505 105 arcto 4 {pop} repeat
+  5175 2400 3930 2400 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 5730 2400 m 5625 2400 5625 2745 105 arcto 4 {pop} repeat
+  5625 2850 6870 2850 105 arcto 4 {pop} repeat
+  6975 2850 6975 2505 105 arcto 4 {pop} repeat
+  6975 2400 5730 2400 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 7530 2400 m 7425 2400 7425 2745 105 arcto 4 {pop} repeat
+  7425 2850 8670 2850 105 arcto 4 {pop} repeat
+  8775 2850 8775 2505 105 arcto 4 {pop} repeat
+  8775 2400 7530 2400 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 9405 3447 m 9300 3447 9300 3798 105 arcto 4 {pop} repeat
+  9300 3903 10845 3903 105 arcto 4 {pop} repeat
+  10950 3903 10950 3552 105 arcto 4 {pop} repeat
+  10950 3447 9405 3447 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 9405 2847 m 9300 2847 9300 3198 105 arcto 4 {pop} repeat
+  9300 3303 10845 3303 105 arcto 4 {pop} repeat
+  10950 3303 10950 2952 105 arcto 4 {pop} repeat
+  10950 2847 9405 2847 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+577 5520 m
+gs 1 -1 sc (NVECTOR_SERIAL) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+2250 2700 m
+gs 1 -1 sc (CVDIAG) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+3975 2700 m
+gs 1 -1 sc (CVDENSE) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+5850 2700 m
+gs 1 -1 sc (CVBAND) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+7575 2700 m
+gs 1 -1 sc (CVSPGMR) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+9450 3150 m
+gs 1 -1 sc (CVBANDPRE) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+9525 3750 m
+gs 1 -1 sc (CVBBDPRE) col8 sh gr
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial 2435 x Fw(Figure)346 b(4.2:)482 b(Ov)-31
+b(erall)347 b(structure)f(of)g(the)h Fs(cv)-25 b(odes)346
+b Fw(pac)-31 b(k)-61 b(age.)486 b(Mo)31 b(dules)346 b(sp)31
+b(eci\257c)345 b(to)i Fs(cv)-25 b(odes)347 b Fw(are)e(distinguished)
+4000 33776 y(b)-31 b(y)369 b(rounded)g(b)31 b(o)-31 b(xes,)370
+b(while)h(generic)e(solv)-31 b(er)370 b(and)f(auxiliary)i(mo)31
+b(dules)370 b(are)f(in)h(rectangular)g(b)31 b(o)-31 b(xes.)p
+Black 4000 37334 a(for)396 b(the)g(appro)-31 b(ximation)399
+b(of)d(the)g(sensitivit)-31 b(y)398 b(equations)f(righ)-31
+b(t-hand)398 b(sides)d(b)-31 b(y)396 b(di\256erence)f(quotien)-31
+b(ts,)405 b(but)396 b(the)4000 38662 y(user)368 b(has)h(the)h(option)h
+(of)e(supplying)h(these)g(righ)-31 b(t-hand)370 b(sides)f(directly)-92
+b(.)5660 40001 y(The)402 b(adjoin)-31 b(t)404 b(sensitivit)-31
+b(y)403 b(mo)31 b(dule)403 b(pro)-31 b(vides)401 b(the)h
+(infrastructure)g(needed)f(for)g(the)h(bac)-31 b(kw)g(ard)403
+b(in)-31 b(tegration)4000 41330 y(of)367 b(an)-31 b(y)366
+b(system)g(of)h(ODEs)e(whic)-31 b(h)367 b(dep)31 b(ends)365
+b(on)i(the)f(solution)i(of)e(the)g(original)j(IVP)-92
+b(,)366 b(in)g(particular)h(the)g(adjoin)-31 b(t)4000
+42658 y(system)443 b(and)f(an)-31 b(y)444 b(quadratures)e(required)g
+(in)h(ev)-61 b(aluating)445 b(the)d(gradien)-31 b(t)444
+b(of)f(the)g(ob)61 b(jectiv)-31 b(e)445 b(functional.)714
+b(This)4000 43986 y(mo)31 b(dule)341 b(deals)f(with)h(the)f(setup)f(of)
+i(the)f(c)-31 b(hec)g(kp)31 b(oin)-31 b(ts,)347 b(the)340
+b(in)-31 b(terp)31 b(olation)343 b(of)d(the)g(forw)-31
+b(ard)341 b(solution)h(during)e(the)4000 45315 y(bac)-31
+b(kw)g(ard)371 b(in)-31 b(tegration,)372 b(and)e(the)f(bac)-31
+b(kw)g(ard)371 b(in)-31 b(tegration)372 b(of)e(the)f(adjoin)-31
+b(t)371 b(equations.)5660 46654 y(A)-31 b(t)370 b(presen)-31
+b(t,)370 b(the)f(pac)-31 b(k)-61 b(age)371 b(includes)e(the)g(follo)-31
+b(wing)373 b(four)d Fs(cv)-25 b(odes)369 b Fw(linear)h(solv)-31
+b(er)370 b(mo)31 b(dules:)p Black 5660 48901 a Fn(\262)p
+Black 554 w Fs(cvdense)p Fw(:)494 b(LU)369 b(factorization)k(and)c(bac)
+-31 b(ksolving)372 b(with)e(dense)f(matrices;)p Black
+5660 51158 a Fn(\262)p Black 554 w Fs(cvband)p Fw(:)493
+b(LU)369 b(factorization)k(and)c(bac)-31 b(ksolving)372
+b(with)e(banded)g(matrices;)p Black 5660 53416 a Fn(\262)p
+Black 554 w Fs(cvdia)-25 b(g)p Fw(:)493 b(an)369 b(in)-31
+b(ternally)372 b(generated)e(diagonal)i(appro)-31 b(ximation)372
+b(to)e(the)g(Jacobian;)p Black 5660 55673 a Fn(\262)p
+Black 554 w Fs(cvspgmr)p Fw(:)492 b(scaled)370 b(preconditioned)h
+(GMRES)d(metho)31 b(d.)4000 57920 y(This)451 b(set)g(of)g(linear)h
+(solv)-31 b(er)451 b(mo)31 b(dules)451 b(is)g(in)-31
+b(tended)452 b(to)g(b)31 b(e)450 b(expanded)h(in)g(the)g(future)g(as)g
+(new)g(algorithms)i(are)4000 59248 y(dev)-31 b(elop)31
+b(ed.)5660 60587 y(In)254 b(the)g(case)f(of)i(the)f(direct)g
+Fs(cvdense)g Fw(and)g Fs(cvband)g Fw(metho)31 b(ds,)278
+b(the)254 b(pac)-31 b(k)-61 b(age)255 b(includes)f(an)g(algorithm)j
+(for)d(the)4000 61916 y(appro)-31 b(ximation)338 b(of)d(the)f(Jacobian)
+i(b)-31 b(y)335 b(di\256erence)f(quotien)-31 b(ts,)343
+b(but)335 b(the)f(user)g(also)h(has)f(the)h(option)h(of)f(supplying)
+4000 63244 y(the)d(Jacobian)g(\(or)g(an)g(appro)-31 b(ximation)335
+b(to)d(it\))g(directly)-92 b(.)481 b(In)331 b(the)h(case)f(of)h(the)f
+(iterativ)-31 b(e)334 b Fs(cvspgmr)c Fw(metho)31 b(d,)341
+b(the)4000 64572 y(pac)-31 b(k)-61 b(age)267 b(includes)f(an)f
+(algorithm)k(for)c(the)h(appro)-31 b(ximation)270 b(of)c(the)f(pro)31
+b(duct)266 b(b)31 b(et)-31 b(w)g(een)267 b(the)e(Jacobian)i(matrix)h
+(and)4000 65901 y(a)341 b(v)-31 b(ector)341 b(of)g(appropriate)g
+(length)h(b)-31 b(y)341 b(di\256erence)f(quotien)-31
+b(ts.)484 b(Again,)348 b(the)341 b(user)e(has)i(the)f(option)i(of)f
+(pro)-31 b(viding)343 b(a)4000 67229 y(routine)333 b(for)g(this)f(op)31
+b(eration.)482 b(In)332 b(the)h(case)f(of)h Fs(cvspgmr)p
+Fw(,)339 b(the)333 b(preconditioner)g(m)-31 b(ust)333
+b(b)31 b(e)332 b(supplied)h(b)-31 b(y)332 b(the)h(user)4000
+68558 y(in)387 b(t)-31 b(w)g(o)389 b(parts:)528 b(setup)386
+b(\(prepro)31 b(cessing)387 b(of)h(Jacobian)g(data\))h(and)e(solv)-31
+b(e.)546 b(While)388 b(there)e(is)h(no)g(default)h(c)-31
+b(hoice)388 b(of)4000 69886 y(preconditioner)370 b(analogous)g(to)g
+(the)e(di\256erence)g(quotien)-31 b(t)371 b(appro)-31
+b(ximation)372 b(in)d(the)g(direct)f(case,)h(the)g(references)4000
+71214 y([2)q(])328 b(and)g([3)q(],)337 b(together)329
+b(with)g(the)f(example)h(programs)g(included)f(with)h
+Fs(cv)-25 b(odes)p Fw(,)337 b(o\256er)328 b(considerable)g(assistance)
+4000 72543 y(in)369 b(building)i(preconditioners.)5660
+73882 y(Eac)-31 b(h)457 b Fs(cv)-25 b(odes)456 b Fw(linear)g(solv)-31
+b(er)456 b(mo)31 b(dule)457 b(consists)f(of)g(four)g(routines)g(dev)-31
+b(oted)456 b(to)h(\(1\))g(memory)f(allo)31 b(cation)4000
+75210 y(and)377 b(initialization,)384 b(\(2\))378 b(setup)e(of)h(the)g
+(matrix)h(data)g(in)-31 b(v)g(olv)g(ed,)381 b(\(3\))d(solution)h(of)e
+(the)f(system,)k(and)c(\(4\))i(freeing)4000 76539 y(of)456
+b(memory)-92 b(.)752 b(The)455 b(setup)h(and)f(solution)i(phases)e(are)
+g(separate)h(b)31 b(ecause)455 b(the)g(ev)-61 b(aluation)458
+b(of)e(Jacobians)h(and)4000 77867 y(preconditioners)490
+b(is)f(done)h(only)g(p)31 b(erio)g(dically)491 b(during)f(the)f(in)-31
+b(tegration,)523 b(and)489 b(only)h(as)g(required)e(to)i(ac)-31
+b(hiev)g(e)p Black Black eop
+%%Page: 26 36
+26 35 bop Black 0 2701 a Fx(26)36248 b(Co)35 b(de)426
+b(Organization)p 0 3144 48001 45 v Black 0 6974 a Fw(con)-31
+b(v)g(ergence.)473 b(The)308 b(call)i(list)e(within)i(the)e(cen)-31
+b(tral)309 b Fs(cv)-25 b(odes)308 b Fw(mo)31 b(dule)309
+b(for)f(eac)-31 b(h)309 b(of)f(the)g(\257v)-31 b(e)309
+b(asso)31 b(ciated)309 b(functions)0 8302 y(is)e(\257xed,)320
+b(th)-31 b(us)307 b(allo)-31 b(wing)310 b(the)d(cen)-31
+b(tral)308 b(mo)31 b(dule)308 b(to)g(b)31 b(e)306 b(completely)j(indep)
+31 b(enden)-31 b(t)308 b(of)f(the)h(linear)f(system)g(metho)31
+b(d.)1660 10959 y(These)448 b(mo)31 b(dules)448 b(are)f(also)i(decomp)
+31 b(osed)448 b(in)g(another)g(w)-31 b(a)g(y)-92 b(.)729
+b(Eac)-31 b(h)449 b(of)f(the)g(mo)31 b(dules)448 b Fs(cvdense)p
+Fw(,)469 b Fs(cvband)0 12287 y Fw(and)405 b Fs(cvspgmr)f
+Fw(is)h(a)g(set)g(of)h(in)-31 b(terface)406 b(routines)f(built)h(on)g
+(top)f(of)h(a)f(generic)g(solv)-31 b(er)406 b(mo)31 b(dule,)415
+b(named)406 b Fs(dense)p Fw(,)0 13616 y Fs(band)424 b
+Fw(and)g Fs(spgmr)p Fw(,)436 b(resp)31 b(ectiv)-31 b(ely)-92
+b(.)658 b(The)424 b(in)-31 b(terfaces)424 b(deal)h(with)g(the)f(use)f
+(of)h(these)g(metho)31 b(ds)424 b(in)g(the)g Fs(cv)-25
+b(odes)0 14944 y Fw(con)-31 b(text,)474 b(whereas)451
+b(the)h(generic)g(solv)-31 b(er)451 b(is)h(indep)31 b(enden)-31
+b(t)452 b(of)g(the)f(con)-31 b(text.)741 b(While)452
+b(the)f(generic)h(solv)-31 b(ers)451 b(here)0 16272 y(w)-31
+b(ere)430 b(generated)g(with)h Fs(sundials)e Fw(in)h(mind,)446
+b(our)429 b(in)-31 b(ten)g(tion)432 b(is)e(that)h(they)f(b)31
+b(e)429 b(usable)h(in)g(other)g(applications)0 17601
+y(as)406 b(general-purp)31 b(ose)406 b(solv)-31 b(ers.)604
+b(This)406 b(separation)i(also)f(allo)-31 b(ws)408 b(for)e(an)-31
+b(y)407 b(generic)g(solv)-31 b(er)406 b(to)h(b)31 b(e)406
+b(replaced)g(b)-31 b(y)407 b(an)0 18929 y(impro)-31 b(v)g(ed)371
+b(v)-31 b(ersion,)370 b(with)g(no)g(necessit)-31 b(y)369
+b(to)h(revise)f(the)g Fs(cv)-25 b(odes)370 b Fw(pac)-31
+b(k)-61 b(age)370 b(elsewhere.)1660 20257 y Fs(cv)-25
+b(odes)348 b Fw(also)g(pro)-31 b(vides)347 b(t)-31 b(w)g(o)349
+b(preconditioner)g(mo)31 b(dules.)485 b(The)348 b(\257rst)e(one,)353
+b Fs(cvbandpre)p Fw(,)f(is)347 b(in)-31 b(tended)348
+b(to)g(b)31 b(e)0 21586 y(used)338 b(with)j Fs(nvector)p
+9716 21586 368 45 v 440 w(serial)e Fw(and)g(pro)-31 b(vides)339
+b(banded)g(di\256erence)g(quotien)-31 b(t)341 b(Jacobian-based)g
+(preconditioner)0 22914 y(and)425 b(solv)-31 b(er)426
+b(routines)g(for)f(use)g(with)h Fs(cvspgmr)p Fw(.)660
+b(The)426 b(second)f(preconditioner)h(mo)31 b(dule,)441
+b Fs(cvbbdpre)p Fw(,)f(w)-31 b(orks)0 24242 y(in)475
+b(conjunction)h(with)f Fs(nvector)p 14851 24242 V 441
+w(p)-74 b(arallel)475 b Fw(and)g(generates)g(a)f(preconditioner)i(that)
+f(is)f(a)h(blo)31 b(c)-31 b(k-diagonal)0 25571 y(matrix)371
+b(with)f(eac)-31 b(h)370 b(blo)31 b(c)-31 b(k)370 b(b)31
+b(eing)370 b(a)f(band)g(matrix.)1660 26899 y(All)445
+b(state)g(information)i(used)c(b)-31 b(y)445 b Fs(cv)-25
+b(odes)444 b Fw(to)h(solv)-31 b(e)445 b(a)f(giv)-31 b(en)445
+b(problem)g(is)f(sa)-31 b(v)g(ed)444 b(in)g(a)h(structure,)462
+b(and)445 b(a)0 28227 y(p)31 b(oin)-31 b(ter)300 b(to)g(that)h
+(structure)d(is)i(returned)e(to)i(the)g(user.)468 b(There)299
+b(is)g(no)h(global)h(data)g(in)e(the)h Fs(cv)-25 b(odes)300
+b Fw(pac)-31 b(k)-61 b(age,)315 b(and)0 29556 y(so)335
+b(in)f(this)i(resp)31 b(ect)333 b(it)j(is)e(reen)-31
+b(tran)g(t.)482 b(State)336 b(information)i(sp)31 b(eci\257c)334
+b(to)h(the)g(linear)h(solv)-31 b(er)335 b(is)f(sa)-31
+b(v)g(ed)336 b(in)e(a)h(separate)0 30884 y(structure,)401
+b(a)395 b(p)31 b(oin)-31 b(ter)395 b(to)g(whic)-31 b(h)395
+b(resides)f(in)h(the)g Fs(cv)-25 b(odes)394 b Fw(memory)i(structure.)
+568 b(The)395 b(reen)-31 b(trancy)394 b(of)h Fs(cv)-25
+b(odes)0 32213 y Fw(w)-31 b(as)430 b(motiv)-61 b(ated)433
+b(b)-31 b(y)430 b(the)g(an)-31 b(ticipated)433 b(m)-31
+b(ulticomputer)432 b(extension,)447 b(but)430 b(is)g(also)g(essen)-31
+b(tial)431 b(in)f(a)h(unipro)31 b(cessor)0 33541 y(setting)464
+b(where)e(t)-31 b(w)g(o)464 b(or)e(more)h(problems)g(are)f(solv)-31
+b(ed)464 b(b)-31 b(y)462 b(in)-31 b(termixed)465 b(calls)e(to)g(the)g
+(pac)-31 b(k)-61 b(age)463 b(from)g(within)i(a)0 34869
+y(single)370 b(user)e(program.)p Black Black eop
+%%Page: 27 37
+27 36 bop Black Black 4000 15280 a Ft(Chapter)861 b(5)4000
+20819 y Fv(Using)1033 b(CV)-86 b(ODES)1032 b(for)h(IVP)f(Solution)4000
+26580 y Fw(This)394 b(c)-31 b(hapter)394 b(is)g(concerned)f(with)i(the)
+f(use)f(of)i Fs(cv)-25 b(odes)394 b Fw(for)f(the)h(solution)i(of)e
+(IVPs.)566 b(The)394 b(follo)-31 b(wing)397 b(sections)4000
+27908 y(treat)458 b(the)f(header)f(\257les)h(and)g(the)g(la)-31
+b(y)g(out)460 b(of)d(the)g(user's)f(main)i(program,)480
+b(and)457 b(pro)-31 b(vide)458 b(descriptions)f(of)h(the)4000
+29237 y Fs(cv)-25 b(odes)370 b Fw(user-callable)g(functions)g(and)g
+(user-supplied)e(functions.)5660 30569 y(This)f(usage)h(is)e(essen)-31
+b(tially)369 b(equiv)-61 b(alen)-31 b(t)368 b(to)g(using)f
+Fs(cv)-25 b(ode)367 b Fw([18)r(].)492 b(The)367 b(listings)h(of)f(the)g
+(sample)g(programs)h(in)4000 31898 y(the)389 b(companion)j(do)31
+b(cumen)-31 b(t)390 b([16)r(])f(ma)-31 b(y)391 b(also)f(b)31
+b(e)388 b(helpful.)554 b(Those)390 b(co)31 b(des)389
+b(ma)-31 b(y)390 b(b)31 b(e)389 b(used)f(as)i(templates)h(and)e(are)
+4000 33226 y(included)370 b(in)f(the)h Fs(cv)-25 b(odes)369
+b Fw(pac)-31 b(k)-61 b(age.)5660 34559 y(The)535 b(user)e(should)i(b)31
+b(e)534 b(a)-31 b(w)g(are)536 b(that)g(not)f(all)g(linear)h(solv)-31
+b(er)535 b(mo)31 b(dules)535 b(are)f(compatible)j(with)e(all)h
+Fs(nvec-)4000 35887 y(tor)436 b Fw(implemen)-31 b(tations.)700
+b(F)-92 b(or)436 b(example,)456 b Fs(nvector)p 26943
+35887 368 45 v 440 w(p)-74 b(arallel)438 b Fw(is)f(not)h(compatible)h
+(with)f(the)f(direct)g(dense)4000 37215 y(or)471 b(direct)g(band)h
+(linear)g(solv)-31 b(ers)471 b(since)g(these)g(linear)h(solv)-31
+b(er)471 b(mo)31 b(dules)472 b(need)f(to)h(form)f(the)h(complete)h
+(system)4000 38544 y(Jacobian.)1013 b(The)542 b(follo)-31
+b(wing)546 b Fs(cv)-25 b(odes)542 b Fw(mo)31 b(dules)543
+b(can)f(only)i(b)31 b(e)541 b(used)h(with)h Fs(nvector)p
+42362 38544 V 441 w(serial)p Fw(:)837 b Fs(cvdense)p
+Fw(,)4000 39872 y Fs(cvband)549 b Fw(and)h Fs(cvbandpre)p
+Fw(.)1033 b(Also,)595 b(the)550 b(preconditioner)g(mo)31
+b(dule)550 b Fs(cvbbdpre)g Fw(can)f(only)h(b)31 b(e)549
+b(used)g(with)4000 41200 y Fs(nvector)p 8727 41200 V
+441 w(p)-74 b(arallel)p Fw(.)5660 42533 y Fs(cv)-25 b(odes)407
+b Fw(uses)f(v)-61 b(arious)407 b(constan)-31 b(ts)407
+b(for)g(b)31 b(oth)407 b(input)g(and)g(output.)606 b(These)406
+b(are)h(de\257ned)f(as)g(needed)h(in)f(this)4000 43861
+y(c)-31 b(hapter,)370 b(but)g(for)f(con)-31 b(v)g(enience)370
+b(are)f(also)h(listed)h(separately)f(in)f(Chapter)h(11.)4000
+47545 y Fr(5.1)1793 b(Access)599 b(to)e(libraries)j(and)e(header)h
+(\257les)4000 49977 y Fw(A)-31 b(t)434 b(this)f(p)31
+b(oin)-31 b(t,)450 b(it)434 b(is)e(assumed)h(that)h(the)f(installation)
+k(of)c Fs(cv)-25 b(odes)p Fw(,)449 b(follo)-31 b(wing)437
+b(the)c(pro)31 b(cedure)432 b(describ)31 b(ed)432 b(in)4000
+51306 y(Chapter)370 b(2,)g(has)f(b)31 b(een)369 b(completed)h
+(successfully)-92 b(.)5660 52638 y(Regardless)395 b(of)g(where)f(the)h
+(user's)f(application)k(program)d(resides,)401 b(its)395
+b(asso)31 b(ciated)395 b(compilation)k(and)c(load)4000
+53967 y(commands)300 b(m)-31 b(ust)300 b(mak)-31 b(e)301
+b(reference)d(to)i(the)f(lo)31 b(cations)302 b(of)d(the)h(libraries)f
+(and)h(header)f(\257les)g(required)f(b)-31 b(y)300 b
+Fs(cv)-25 b(odes)p Fw(.)4000 55295 y(In)369 b(terms)g(of)h(the)f
+(directory)h Fq(build)p 18705 55295 340 45 v 407 w(tr)-57
+b(e)g(e)370 b Fw(de\257ned)f(in)h(Chapter)f(2,)h(the)g(relev)-61
+b(an)-31 b(t)370 b(library)g(\257les)f(are)p Black 5660
+57522 a Fn(\262)p Black 554 w Fq(build)p 9126 57522 V
+408 w(tr)-57 b(e)g(e)p Fu(/lib/libsundials)p 20571 57522
+349 45 v 422 w(cvodes.)p Fq(lib)p Fw(,)p Black 5660 59753
+a Fn(\262)p Black 554 w Fq(build)p 9126 59753 340 45
+v 408 w(tr)g(e)g(e)p Fu(/lib/libsundials)p 20571 59753
+349 45 v 422 w(shared.)p Fq(lib)p Fw(,)371 b(and)p Black
+5660 61984 a Fn(\262)p Black 554 w Fq(build)p 9126 61984
+340 45 v 408 w(tr)-57 b(e)g(e)p Fu(/lib/libsundials)p
+20571 61984 349 45 v 422 w(nvec*.)p Fq(lib)370 b Fw(\(up)g(to)g(t)-31
+b(w)g(o)370 b(\257les\))4000 64211 y(where)276 b(the)h(\257le)f
+(extension)h(.)p Fq(lib)g Fw(is)g(t)-31 b(ypically)279
+b Fu(.so)d Fw(for)h(shared)e(libraries)i(and)f Fu(.a)h
+Fw(for)f(static)i(libraries.)462 b(All)277 b(relev)-61
+b(an)-31 b(t)4000 65539 y(header)369 b(\257les)g(are)g(lo)31
+b(cated)371 b(under)d(the)i(sub)31 b(directory)p Black
+5660 67766 a Fn(\262)p Black 554 w Fq(build)p 9126 67766
+340 45 v 408 w(tr)-57 b(e)g(e)p Fu(/include)4000 71449
+y Fr(5.2)1793 b(Data)598 b(T)-50 b(yp)50 b(es)4000 73882
+y Fw(The)312 b Fu(sundialstypes.h)h Fw(\257le)e(con)-31
+b(tains)313 b(the)f(de\257nition)h(of)f(the)f(t)-31 b(yp)31
+b(e)312 b Fu(realtype)p Fw(,)324 b(whic)-31 b(h)312 b(is)g(used)e(b)-31
+b(y)312 b(the)f Fs(sundi-)4000 75210 y(als)375 b Fw(solv)-31
+b(ers)375 b(for)h(all)g(\260oating-p)31 b(oin)-31 b(t)379
+b(data.)513 b(The)375 b(t)-31 b(yp)31 b(e)376 b Fu(realtype)g
+Fw(can)g(b)31 b(e)375 b Fu(float)p Fw(,)j Fu(double)p
+Fw(,)g(or)d Fu(long)582 b(double)p Fw(,)4000 76539 y(with)300
+b(the)g(default)h(b)31 b(eing)299 b Fu(double)p Fw(.)470
+b(The)300 b(user)e(can)h(c)-31 b(hange)301 b(the)e(precision)h(of)f
+(the)h Fs(sundials)e Fw(solv)-31 b(ers)300 b(arithmetic)4000
+77867 y(at)370 b(the)f(con\257guration)j(stage)e(\(see)f
+Fn(x)p Fw(2.2\).)p Black Black eop
+%%Page: 28 38
+28 37 bop Black 0 2701 a Fx(28)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 1660 6974 a Fw(Additionally)-92 b(,)296 b(based)272
+b(on)h(the)f(curren)-31 b(t)272 b(precision,)292 b Fu(sundialstypes.h)
+275 b Fw(de\257nes)c Fu(BIG)p 37372 6974 349 45 v 419
+w(REAL)i Fw(to)g(b)31 b(e)271 b(the)i(largest)0 8302
+y(v)-61 b(alue)290 b(represen)-31 b(table)290 b(as)g(a)g
+Fu(realtype)p Fw(,)307 b Fu(SMALL)p 19807 8302 V 419
+w(REAL)290 b Fw(to)g(b)31 b(e)290 b(the)g(smallest)h(v)-61
+b(alue)290 b(represen)-31 b(table)290 b(as)f(a)h Fu(realtype)p
+Fw(,)0 9631 y(and)369 b Fu(UNIT)p 4546 9631 V 419 w(ROUNDOFF)i
+Fw(to)f(b)31 b(e)368 b(the)i(di\256erence)e(b)31 b(et)-31
+b(w)g(een)370 b(1)p Fl(:)p Fw(0)h(and)e(the)h(minim)-31
+b(um)371 b Fu(realtype)g Fw(greater)e(than)h(1)p Fl(:)p
+Fw(0.)1660 10962 y(Within)382 b Fs(sundials)p Fw(,)g(real)f(constan)-31
+b(ts)381 b(are)f(set)g(b)-31 b(y)381 b(w)-31 b(a)g(y)381
+b(of)g(a)g(macro)g(called)g Fu(RCONST)p Fw(.)h(It)e(is)g(this)h(macro)g
+(that)0 12291 y(needs)392 b(the)h(abilit)-31 b(y)396
+b(to)d(branc)-31 b(h)393 b(on)g(the)g(de\257nition)h
+Fu(realtype)p Fw(.)565 b(In)392 b(ANSI)h Fs(C)p Fw(,)g(a)g
+(\260oating-p)31 b(oin)-31 b(t)396 b(constan)-31 b(t)395
+b(with)0 13619 y(no)353 b(su\261x)g(is)f(stored)h(as)f(a)h
+Fu(double)p Fw(.)488 b(Placing)355 b(the)e(su\261x)f(\\F")h(at)h(the)f
+(end)f(of)h(a)g(\260oating)i(p)31 b(oin)-31 b(t)354 b(constan)-31
+b(t)354 b(mak)-31 b(es)0 14948 y(it)370 b(a)f Fu(float)p
+Fw(,)i(whereas)e(using)g(the)h(su\261x)f(\\L")h(mak)-31
+b(es)370 b(it)g(a)f Fu(long)582 b(double)p Fw(.)493 b(F)-92
+b(or)369 b(example,)p Black Black 0 17176 a Fu(#define)582
+b(A)f(1.0)0 18504 y(#define)h(B)f(1.0F)0 19832 y(#define)h(C)f(1.0L)0
+22057 y Fw(de\257nes)463 b Fu(A)g Fw(to)h(b)31 b(e)463
+b(a)h Fu(double)g Fw(constan)-31 b(t)464 b(equal)h(to)f(1)p
+Fl(:)p Fw(0,)489 b Fu(B)463 b Fw(to)h(b)31 b(e)463 b(a)g
+Fu(float)h Fw(constan)-31 b(t)465 b(equal)f(to)h(1)p
+Fl(:)p Fw(0,)488 b(and)464 b Fu(C)f Fw(to)0 23385 y(b)31
+b(e)450 b(a)h Fu(long)582 b(double)451 b Fw(constan)-31
+b(t)452 b(equal)g(to)f(1)p Fl(:)p Fw(0.)739 b(The)450
+b(macro)i(call)g Fu(RCONST\(1.0\))g Fw(automatically)j(expands)c(to)0
+24714 y Fu(1.0)401 b Fw(if)h Fu(realtype)f Fw(is)g Fu(double)p
+Fw(,)410 b(to)402 b Fu(1.0F)f Fw(if)h Fu(realtype)f Fw(is)g
+Fu(float)p Fw(,)410 b(or)401 b(to)h Fu(1.0L)f Fw(if)g
+Fu(realtype)h Fw(is)f Fu(long)582 b(double)p Fw(.)0 26042
+y Fs(sundials)368 b Fw(uses)g(the)i Fu(RCONST)g Fw(macro)g(in)-31
+b(ternally)371 b(to)f(declare)g(all)g(of)g(its)f(\260oating-p)31
+b(oin)-31 b(t)373 b(constan)-31 b(ts.)1660 27374 y(A)423
+b(user)f(program)i(whic)-31 b(h)424 b(uses)d(the)j(t)-31
+b(yp)31 b(e)423 b Fu(realtype)h Fw(and)f(the)g Fu(RCONST)g
+Fw(macro)h(to)g(handle)f(\260oating-p)31 b(oin)-31 b(t)0
+28702 y(constan)g(ts)443 b(is)e(precision-indep)31 b(enden)-31
+b(t)442 b(except)g(for)g(an)-31 b(y)442 b(calls)g(to)g(precision-sp)31
+b(eci\257c)442 b(standard)g(math)g(library)0 30031 y(functions.)736
+b(\(Our)450 b(example)h(programs)g(use)e(b)31 b(oth)451
+b Fu(realtype)g Fw(and)f Fu(RCONST)p Fw(.\))h(Users)e(can,)471
+b(ho)-31 b(w)g(ev)g(er,)472 b(use)450 b(the)0 31359 y(t)-31
+b(yp)31 b(e)318 b Fu(double)p Fw(,)328 b Fu(float)p Fw(,)h(or)317
+b Fu(long)581 b(double)318 b Fw(in)f(their)h(co)31 b(de)317
+b(\(assuming)h(the)f(t)-31 b(yp)31 b(edef)318 b(for)f
+Fu(realtype)h Fw(matc)-31 b(hes)318 b(this)0 32687 y(c)-31
+b(hoice\).)488 b(Th)-31 b(us,)356 b(a)351 b(previously)h(existing)h
+(piece)f(of)g(ANSI)f Fs(C)g Fw(co)31 b(de)352 b(can)f(use)g
+Fs(sundials)f Fw(without)k(mo)31 b(difying)354 b(the)0
+34016 y(co)31 b(de)454 b(to)g(use)f Fu(realtype)p Fw(,)476
+b(so)453 b(long)i(as)f(the)g Fs(sundials)e Fw(libraries)i(use)f(the)h
+(correct)f(precision)h(\(for)h(details)f(see)0 35344
+y Fn(x)p Fw(2.2\).)0 39024 y Fr(5.3)1793 b(Header)598
+b(\257les)0 41455 y Fw(The)352 b(calling)i(program)f(m)-31
+b(ust)353 b(include)f(sev)-31 b(eral)353 b(header)e(\257les)h(so)g
+(that)h(v)-61 b(arious)352 b(macros)h(and)f(data)h(t)-31
+b(yp)31 b(es)352 b(can)g(b)31 b(e)0 42783 y(used.)492
+b(The)369 b(header)g(\257le)h(that)g(is)f(alw)-31 b(a)g(ys)372
+b(required)c(is:)p Black 1660 45008 a Fn(\262)p Black
+554 w Fu(cvodes.h)p Fw(,)409 b(the)399 b(main)h(header)f(\257le)h(for)f
+Fs(cv)-25 b(odes)p Fw(,)408 b(whic)-31 b(h)400 b(de\257nes)e(the)i(sev)
+-31 b(eral)399 b(t)-31 b(yp)31 b(es)400 b(and)f(v)-61
+b(arious)400 b(con-)2767 46336 y(stan)-31 b(ts,)371 b(and)e(includes)h
+(function)g(protot)-31 b(yp)31 b(es.)0 48561 y(Note)284
+b(that)g Fu(cvodes.h)f Fw(includes)g Fu(sundialstypes.h)p
+Fw(,)303 b(whic)-31 b(h)284 b(de\257nes)e(the)h(t)-31
+b(yp)31 b(es)283 b Fu(realtype)g Fw(and)g Fu(booleantype)0
+49889 y Fw(and)369 b(the)h(constan)-31 b(ts)370 b Fu(FALSE)g
+Fw(and)f Fu(TRUE)p Fw(.)1660 51221 y(The)250 b(calling)i(program)e(m)
+-31 b(ust)250 b(also)g(include)g(an)g Fs(nvector)f Fw(implemen)-31
+b(tation)254 b(header)249 b(\257le)h(\(see)f Fn(x)p Fw(8)h(for)f
+(details\).)0 52550 y(F)-92 b(or)330 b(the)g(t)-31 b(w)g(o)333
+b Fs(nvector)d Fw(implemen)-31 b(tations)334 b(that)e(are)f(included)g
+(in)f(the)h Fs(cv)-25 b(odes)331 b Fw(pac)-31 b(k)-61
+b(age,)340 b(the)331 b(corresp)31 b(onding)0 53878 y(header)369
+b(\257les)g(are:)p Black 1660 56103 a Fn(\262)p Black
+554 w Fu(nvector)p 6904 56103 V 420 w(serial.h)p Fw(,)i(whic)-31
+b(h)370 b(de\257nes)e(the)i(serial)f(implemen)-31 b(tation)374
+b Fs(nvector)p 36817 56103 368 45 v 440 w(serial)p Fw(;)p
+Black 1660 58331 a Fn(\262)p Black 554 w Fu(nvector)p
+6904 58331 349 45 v 420 w(parallel.h)p Fw(,)272 b(whic)-31
+b(h)248 b(de\257nes)d(the)i(parallel)g(\()p Fs(MPI)p
+Fw(-based\))g(implemen)-31 b(tation,)276 b Fs(nvector)p
+45190 58331 368 45 v 440 w(p)-74 b(arallel)p Fw(.)0 60555
+y(Note)515 b(that)h(b)31 b(oth)515 b(these)f(\257les)g(in)h(turn)f
+(include)h(the)g(header)f(\257le)h Fu(nvector.h)g Fw(whic)-31
+b(h)516 b(de\257nes)d(the)i(abstract)0 61884 y Fu(N)p
+651 61884 349 45 v 419 w(Vector)369 b Fw(data)i(t)-31
+b(yp)31 b(e.)1660 63216 y(Finally)-92 b(,)472 b(if)451
+b(the)f(user)f(c)-31 b(ho)31 b(oses)450 b(Newton)h(iteration)i(for)d
+(the)g(solution)i(of)e(the)h(nonlinear)g(systems,)470
+b(then)451 b(a)0 64544 y(linear)315 b(solv)-31 b(er)314
+b(mo)31 b(dule)315 b(header)f(\257le)g(will)h(b)31 b(e)314
+b(required.)474 b(The)314 b(header)f(\257les)h(corresp)31
+b(onding)314 b(to)h(the)f(v)-61 b(arious)314 b(linear)0
+65872 y(solv)-31 b(ers)369 b(a)-31 b(v)-61 b(ailble)372
+b(for)d(use)f(with)j Fs(cv)-25 b(odes)369 b Fw(are:)p
+Black 1660 68097 a Fn(\262)p Black 554 w Fu(cvdense.h)p
+Fw(,)409 b(whic)-31 b(h)401 b(is)f(used)f(with)i(the)f(dense)f(direct)h
+(linear)h(solv)-31 b(er)400 b(in)g(the)g(con)-31 b(text)401
+b(of)g Fs(cv)-25 b(odes)p Fw(.)584 b(This)2767 69425
+y(in)411 b(turn)g(includes)g(a)g(header)f(\257le)h(\()p
+Fu(dense.h)p Fw(\))i(whic)-31 b(h)411 b(de\257nes)f(the)h
+Fu(DenseMat)h Fw(t)-31 b(yp)31 b(e)411 b(and)g(corresp)31
+b(onding)2767 70754 y(accessor)369 b(macros;)p Black
+1660 72982 a Fn(\262)p Black 554 w Fu(cvband.h)p Fw(,)470
+b(whic)-31 b(h)449 b(is)f(used)f(with)i(the)g(band)f(direct)g(linear)h
+(solv)-31 b(er)449 b(in)f(the)g(con)-31 b(text)450 b(of)f
+Fs(cv)-25 b(odes)p Fw(.)729 b(This)2767 74310 y(in)501
+b(turn)f(includes)g(a)g(header)g(\257le)g(\()p Fu(band.h)p
+Fw(\))i(whic)-31 b(h)501 b(de\257nes)f(the)g Fu(BandMat)h
+Fw(t)-31 b(yp)31 b(e)500 b(and)h(corresp)31 b(onding)2767
+75639 y(accessor)369 b(macros;)p Black 1660 77867 a Fn(\262)p
+Black 554 w Fu(cvdiag.h)p Fw(,)i(whic)-31 b(h)370 b(is)f(used)g(with)h
+(the)g(diagonal)i(linear)e(solv)-31 b(er)369 b(in)h(the)f(con)-31
+b(text)371 b(of)f Fs(cv)-25 b(odes)p Fw(;)p Black Black
+eop
+%%Page: 29 39
+29 38 bop Black 4000 2701 a Fx(5.4)425 b(A)g(sk)-35 b(eleton)425
+b(of)g(the)g(user's)g(main)f(program)23238 b(29)p 4000
+3144 48001 45 v Black Black 4000 44435 a @beginspecial
+0 @llx 0 @lly 687 @urx 552 @ury 4320 @rwi @setspecial
+%%BeginDocument: cvssim.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: cvssim.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Mon Nov  1 09:37:33 2004
+%%For: radu at tux111.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 687 552
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.573 0.757 0.863 srgb} bind def
+/col33 {0.796 0.796 0.796 srgb} bind def
+/col34 {0.929 0.875 0.525 srgb} bind def
+/col35 {0.941 0.922 0.749 srgb} bind def
+
+end
+save
+newpath 0 552 moveto 0 0 lineto 687 0 lineto 687 552 lineto closepath clip newpath
+-88.7 613.3 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 10605 3525 m 10500 3525 10500 5507 105 arcto 4 {pop} repeat
+  10500 5612 12795 5612 105 arcto 4 {pop} repeat
+  12900 5612 12900 3630 105 arcto 4 {pop} repeat
+  12900 3525 10605 3525 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10605 1136 m 10500 1136 10500 3120 105 arcto 4 {pop} repeat
+  10500 3225 12795 3225 105 arcto 4 {pop} repeat
+  12900 3225 12900 1241 105 arcto 4 {pop} repeat
+  12900 1136 10605 1136 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 9300 5250 m 9300 1050 l 3750 1050 l 3750 5250 l
+ cp gs col35 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 5205 5850 m 5100 5850 5100 7785 105 arcto 4 {pop} repeat
+  5100 7890 7395 7890 105 arcto 4 {pop} repeat
+  7500 7890 7500 5955 105 arcto 4 {pop} repeat
+  7500 5850 5205 5850 105 arcto 4 {pop} repeat
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 1605 8625 m 1500 8625 1500 10095 105 arcto 4 {pop} repeat
+  1500 10200 3630 10200 105 arcto 4 {pop} repeat
+  3735 10200 3735 8730 105 arcto 4 {pop} repeat
+  3735 8625 1605 8625 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4065 8625 m 3960 8625 3960 10095 105 arcto 4 {pop} repeat
+  3960 10200 6120 10200 105 arcto 4 {pop} repeat
+  6225 10200 6225 8730 105 arcto 4 {pop} repeat
+  6225 8625 4065 8625 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6555 8625 m 6450 8625 6450 10095 105 arcto 4 {pop} repeat
+  6450 10200 8595 10200 105 arcto 4 {pop} repeat
+  8700 10200 8700 8730 105 arcto 4 {pop} repeat
+  8700 8625 6555 8625 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 9015 8625 m 8910 8625 8910 10095 105 arcto 4 {pop} repeat
+  8910 10200 11070 10200 105 arcto 4 {pop} repeat
+  11175 10200 11175 8730 105 arcto 4 {pop} repeat
+  11175 8625 9015 8625 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+gs  clippath
+10515 4627 m 10515 4522 l 10322 4522 l 10487 4575 l 10322 4627 l cp
+eoclip
+n 9900 4575 m
+ 10500 4575 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 10322 4627 m 10487 4575 l 10322 4522 l 10322 4627 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+gs  clippath
+9915 3502 m 9915 3397 l 9722 3397 l 9887 3450 l 9722 3502 l cp
+eoclip
+n 9300 3450 m
+ 9900 3450 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 9722 3502 m 9887 3450 l 9722 3397 l 9722 3502 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+gs  clippath
+10515 2227 m 10515 2122 l 10322 2122 l 10487 2175 l 10322 2227 l cp
+eoclip
+n 9900 2175 m
+ 10500 2175 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 10322 2227 m 10487 2175 l 10322 2122 l 10322 2227 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+n 9900 2175 m
+ 9900 4575 l gs col35 1.00 shd ef gr gs col8 s gr 
+% Polyline
+gs  clippath
+2497 8640 m 2602 8640 l 2602 8447 l 2550 8612 l 2497 8447 l cp
+eoclip
+n 2550 8325 m
+ 2550 8625 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 2497 8447 m 2550 8612 l 2602 8447 l 2497 8447 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+gs  clippath
+5047 8640 m 5152 8640 l 5152 8447 l 5100 8612 l 5047 8447 l cp
+eoclip
+n 5100 8325 m
+ 5100 8625 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 5047 8447 m 5100 8612 l 5152 8447 l 5047 8447 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+gs  clippath
+7447 8640 m 7552 8640 l 7552 8447 l 7500 8612 l 7447 8447 l cp
+eoclip
+n 7500 8325 m
+ 7500 8625 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 7447 8447 m 7500 8612 l 7552 8447 l 7447 8447 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+gs  clippath
+9997 8640 m 10102 8640 l 10102 8447 l 10050 8612 l 9997 8447 l cp
+eoclip
+n 10050 8325 m
+ 10050 8625 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 9997 8447 m 10050 8612 l 10102 8447 l 9997 8447 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+gs  clippath
+6247 8340 m 6352 8340 l 6352 8147 l 6300 8312 l 6247 8147 l cp
+eoclip
+n 6300 7875 m
+ 6300 8325 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 6247 8147 m 6300 8312 l 6352 8147 l 6247 8147 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+gs  clippath
+6247 5865 m 6352 5865 l 6352 5672 l 6300 5837 l 6247 5672 l cp
+eoclip
+n 6300 5250 m
+ 6300 5850 l gs col35 1.00 shd ef gr gs col8 s gr gr
+
+% arrowhead
+7.500 slw
+n 6247 5672 m 6300 5837 l 6352 5672 l 6247 5672 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+15.000 slw
+n 2550 8325 m
+ 10050 8325 l gs col35 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+10650 2550 m
+gs 1 -1 sc (NV_DATA_S\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10650 2775 m
+gs 1 -1 sc (NV_LENGTH_S\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10650 3000 m
+gs 1 -1 sc (NV_Ith_S\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10575 4800 m
+gs 1 -1 sc (NV_DATA_P\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10575 5025 m
+gs 1 -1 sc (NV_LOCLENGTH_P\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10575 5475 m
+gs 1 -1 sc (NV_Ith_P\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10575 5250 m
+gs 1 -1 sc (NV_GLOBLENGTH_P\(...\)) col8 sh gr
+% Polyline
+n 10500 1650 m
+ 12900 1650 l gs col8 s gr 
+% Polyline
+n 10500 2180 m
+ 12900 2175 l gs col8 s gr 
+% Polyline
+n 10500 4050 m
+ 12900 4050 l gs col8 s gr 
+% Polyline
+n 10500 4580 m
+ 12900 4575 l gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+10875 1500 m
+gs 1 -1 sc (NVECTOR_SERIAL) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10950 1875 m
+gs 1 -1 sc (nvector_serial.h) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10950 2100 m
+gs 1 -1 sc (nvector_serial.c) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10725 3900 m
+gs 1 -1 sc (NVECTOR_PARALLEL) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10875 4275 m
+gs 1 -1 sc (nvector_parallel.h) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+10875 4500 m
+gs 1 -1 sc (nvector_parallel.c) col8 sh gr
+% Polyline
+n 3750 1650 m
+ 9300 1650 l gs col8 s gr 
+% Polyline
+n 1500 9187 m
+ 3750 9187 l gs col8 s gr 
+% Polyline
+n 3975 9669 m
+ 6225 9669 l gs col8 s gr 
+% Polyline
+n 3975 9187 m
+ 6225 9187 l gs col8 s gr 
+% Polyline
+n 1500 9669 m
+ 3750 9669 l gs col8 s gr 
+% Polyline
+n 6450 9669 m
+ 8700 9669 l gs col8 s gr 
+% Polyline
+n 6450 9187 m
+ 8700 9187 l gs col8 s gr 
+% Polyline
+n 8925 9187 m
+ 11175 9187 l gs col8 s gr 
+% Polyline
+n 8925 9669 m
+ 11175 9669 l gs col8 s gr 
+% Polyline
+n 5100 6825 m
+ 7500 6825 l gs col8 s gr 
+% Polyline
+n 5100 6375 m
+ 7500 6375 l gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+5715 1425 m
+gs 1 -1 sc (User's Program) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 2175 m
+gs 1 -1 sc (  y = N_VNew_Serial\(...\) or N_VNew_Parallel\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 2700 m
+gs 1 -1 sc (  CVodeMalloc\(cvode_mem, f, ...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 1950 m
+gs 1 -1 sc (main\(\) {) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 2430 m
+gs 1 -1 sc (  cvode_mem = CVodeCreate\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 3300 m
+gs 1 -1 sc (  for \(...\) { CVode\(..., y, ...\) }) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 3600 m
+gs 1 -1 sc (  N_VDestroy_Serial\(y\) or N_VDestroy_Parallel\(y\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 4725 m
+gs 1 -1 sc (jac\(...\){...} or) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 5025 m
+gs 1 -1 sc (jtimes\(...\){...} , PrecSetup\(...\){...} and PrecSolve\(...\){...}) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 3000 m
+gs 1 -1 sc (  CVDense or CVBand or CVDiag or CVSpgmr\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 3900 m
+gs 1 -1 sc (  CVodeFree\(cvode_mem\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 4125 m
+gs 1 -1 sc (}) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+3900 4425 m
+gs 1 -1 sc (f\(...\){...}) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+5175 6225 m
+gs 1 -1 sc (Main   CVODE   Integrator) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+5250 7125 m
+gs 1 -1 sc (CVodeMalloc\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+5250 7425 m
+gs 1 -1 sc (CVode\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+5250 7725 m
+gs 1 -1 sc (CVodeFree\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+2175 9000 m
+gs 1 -1 sc (  CVDENSE) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+1650 9450 m
+gs 1 -1 sc (cvdense.h , cvdense.c) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+1650 9975 m
+gs 1 -1 sc (CVDense\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+4200 9450 m
+gs 1 -1 sc (cvband.h , cvband.c) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+4575 9000 m
+gs 1 -1 sc (  CVBAND) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+4125 9975 m
+gs 1 -1 sc (CVBand\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+6675 9975 m
+gs 1 -1 sc (CVDiag\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+6750 9450 m
+gs 1 -1 sc (cvdiag.h , cvdiag.c) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+7125 9000 m
+gs 1 -1 sc (  CVDIAG) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+9525 9000 m
+gs 1 -1 sc (  CVSPGMR) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+9150 9450 m
+gs 1 -1 sc (cvspgmr.h , cvspgmr.c) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+9120 9975 m
+gs 1 -1 sc (CVSpgmr\(...\)) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+5550 6675 m
+gs 1 -1 sc (cvodes.h , cvodes.c) col8 sh gr
+/Times-Roman ff 195.00 scf sf
+11062 3938 m
+gs 1 -1 sc ( ) col0 sh gr
+/Times-Roman ff 195.00 scf sf
+11062 1538 m
+gs 1 -1 sc ( ) col0 sh gr
+/Times-Roman ff 195.00 scf sf
+2062 9027 m
+gs 1 -1 sc ( ) col0 sh gr
+/Times-Roman ff 195.00 scf sf
+4537 9027 m
+gs 1 -1 sc ( ) col0 sh gr
+/Times-Roman ff 195.00 scf sf
+7012 9027 m
+gs 1 -1 sc ( ) col0 sh gr
+/Times-Roman ff 195.00 scf sf
+9487 9027 m
+gs 1 -1 sc ( ) col0 sh gr
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial Black 7915 46870 a Fw(Figure)369 b(5.1:)494
+b(Diagram)370 b(of)g(user)e(program)i(and)g(CV)-31 b(ODES)369
+b(pac)-31 b(k)-61 b(age)371 b(for)e(in)-31 b(tegration)372
+b(of)e(IVP)p Black Black Black 5660 50250 a Fn(\262)p
+Black 554 w Fu(cvspgmr.h)p Fw(,)452 b(whic)-31 b(h)435
+b(is)e(used)h(with)h(the)f(Krylo)-31 b(v)435 b(solv)-31
+b(er)434 b Fs(spgmr)e Fw(in)j(the)f(con)-31 b(text)435
+b(of)f Fs(cv)-25 b(odes)p Fw(.)687 b(This)435 b(in)6767
+51578 y(turn)396 b(includes)g(a)g(header)f(\257le)h(\()p
+Fu(iterative.h)p Fw(\))i(whic)-31 b(h)397 b(en)-31 b(umerates)396
+b(the)g(kind)g(of)g(preconditioning)j(and)6767 52907
+y(the)370 b(a)-31 b(v)-61 b(ailable)372 b(c)-31 b(hoices)369
+b(for)h(the)f(Gram-Sc)-31 b(hmidt)371 b(pro)31 b(cess.)5660
+54964 y(Other)521 b(headers)f(ma)-31 b(y)523 b(b)31 b(e)520
+b(needed,)559 b(dep)31 b(ending)521 b(up)31 b(on)521
+b(the)h(c)-31 b(hoice)521 b(of)h(preconditioner,)560
+b(etc.)949 b(In)520 b(one)h(of)4000 56292 y(the)467 b(examples)h(in)g
+([17)q(],)493 b(preconditioning)469 b(is)e(done)h(with)g(a)f(blo)31
+b(c)-31 b(k-diagonal)471 b(matrix.)788 b(F)-92 b(or)466
+b(this,)493 b(the)467 b(header)4000 57621 y Fu(smalldense.h)371
+b Fw(is)e(included.)4000 61248 y Fr(5.4)1793 b(A)598
+b(sk)-50 b(eleton)599 b(of)f(the)g(user's)i(main)e(program)4000
+63672 y Fw(A)431 b(high-lev)-31 b(el)432 b(o)-31 b(v)g(erview)433
+b(of)e(the)g(com)-31 b(bined)432 b(user)d(program)i(and)g
+Fs(cv)-25 b(odes)431 b Fw(pac)-31 b(k)-61 b(age)432 b(is)f(sho)-31
+b(wn)431 b(in)g(Figure)f(5.1.)4000 65001 y(The)k(follo)-31
+b(wing)437 b(is)c(a)h(sk)-31 b(eleton)435 b(of)f(the)f(user's)g(main)h
+(program)h(\(or)e(calling)j(program\))f(for)e(the)h(in)-31
+b(tegration)436 b(of)4000 66329 y(an)383 b(ODE)g(IVP)-92
+b(.)383 b(Some)h(steps)f(are)f(indep)31 b(enden)-31 b(t)384
+b(of)g(the)f Fs(nvector)g Fw(implemen)-31 b(tation)387
+b(used;)j(where)383 b(this)g(is)g(not)4000 67657 y(the)425
+b(case,)439 b(usage)426 b(sp)31 b(eci\257cations)426
+b(are)f(giv)-31 b(en)426 b(for)f(the)g(t)-31 b(w)g(o)427
+b(implemen)-31 b(tations)429 b(pro)-31 b(vided)425 b(with)i
+Fs(cv)-25 b(odes)p Fw(:)604 b(steps)4000 68986 y(mark)-31
+b(ed)499 b(with)h([)p Fx(P)p Fw(])g(corresp)31 b(ond)498
+b(to)h Fs(nvector)p 24681 68986 368 45 v 441 w(p)-74
+b(arallel)p Fw(,)533 b(while)500 b(steps)e(mark)-31 b(ed)500
+b(with)g([)p Fx(S)p Fw(])f(corresp)31 b(ond)498 b(to)4000
+70314 y Fs(nvector)p 8727 70314 V 441 w(serial)p Fw(.)p
+Black 4553 72371 a(1.)p Black 493 w Fx([P])424 b(Initialize)f(MPI)5906
+74253 y Fw(Call)336 b Fu(MPI)p 10021 74253 349 45 v 419
+w(Init\(&argc,)582 b(&argv\);)347 b Fw(to)334 b(initialize)j
+Fs(MPI)c Fw(if)h(used)f(b)-31 b(y)334 b(the)g(user's)f(program.)481
+b(Here)334 b Fu(argc)g Fw(and)5906 75581 y Fu(argv)370
+b Fw(are)f(the)g(command)i(line)f(argumen)-31 b(t)371
+b(coun)-31 b(ter)370 b(and)f(arra)-31 b(y)370 b(receiv)-31
+b(ed)369 b(b)-31 b(y)369 b Fu(main)p Fw(,)h(resp)31 b(ectiv)-31
+b(ely)-92 b(.)p Black 4553 77867 a(2.)p Black 493 w Fx(Set)426
+b(problem)f(dimensions)p Black Black eop
+%%Page: 30 40
+30 39 bop Black 0 2701 a Fx(30)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 1906 6974 a Fw([)p Fx(S)p Fw(])371 b(Set)e Fu(N)p
+Fw(,)h(the)f(problem)h(size)f Fl(N)121 b Fw(.)1906 8856
+y([)p Fx(P)p Fw(])457 b(Set)f Fu(Nlocal)p Fw(,)478 b(the)456
+b(lo)31 b(cal)457 b(v)-31 b(ector)456 b(length)h(\(the)f(sub-v)-31
+b(ector)456 b(length)h(for)e(this)h(pro)31 b(cess\);)499
+b Fu(N)p Fw(,)456 b(the)g(global)1906 10184 y(v)-31 b(ector)375
+b(length)g(\(the)f(problem)h(size)f Fl(N)121 b Fw(,)375
+b(and)f(the)g(sum)f(of)i(all)g(the)f(v)-61 b(alues)374
+b(of)g Fu(Nlocal)p Fw(\);)j(and)d(the)g(activ)-31 b(e)376
+b(set)1906 11512 y(of)370 b(pro)31 b(cesses.)p Black
+553 13796 a(3.)p Black 493 w Fx(Set)426 b(v)-35 b(ector)424
+b(of)h(initial)e(v)-71 b(alues)1906 15678 y Fw(T)-92
+b(o)523 b(set)f(the)h(v)-31 b(ector)523 b Fu(y0)f Fw(of)h(initial)i(v)
+-61 b(alues,)561 b(use)522 b(the)h(appropriate)g(functions)g(de\257ned)
+f(b)-31 b(y)523 b(a)g(particular)1906 17007 y Fs(nvector)368
+b Fw(implemen)-31 b(tation.)497 b(If)368 b(a)g Fu(realtype)h
+Fw(arra)-31 b(y)368 b Fu(ydata)h Fw(con)-31 b(taining)371
+b(the)d(initial)j(v)-61 b(alues)368 b(of)h Fl(y)407 b
+Fw(already)1906 18335 y(exists,)370 b(then)g(mak)-31
+b(e)370 b(the)g(call:)1906 20217 y([)p Fx(S)p Fw(])h
+Fu(y0)581 b(=)g(NV)p 7735 20217 349 45 v 419 w(Make)p
+10478 20217 V 419 w(Serial\(N,)i(ydata\);)1906 22099
+y Fw([)p Fx(P)p Fw(])371 b Fu(y0)581 b(=)g(NV)p 7898
+22099 V 419 w(Make)p 10641 22099 V 419 w(Parallel\(comm,)i(Nlocal,)g
+(N,)e(ydata\);)1906 23980 y Fw(Otherwise,)370 b(mak)-31
+b(e)371 b(the)e(call:)1906 25862 y([)p Fx(S)p Fw(])i
+Fu(y0)581 b(=)g(NV)p 7735 25862 V 419 w(New)p 9897 25862
+V 419 w(Serial\(N\);)1906 27744 y Fw([)p Fx(P)p Fw(])371
+b Fu(y0)581 b(=)g(NV)p 7898 27744 V 419 w(New)p 10060
+27744 V 419 w(Parallel\(comm,)i(Nlocal,)f(N\);)1906 29626
+y Fw(and)370 b(load)g(initial)i(v)-61 b(alues)369 b(in)-31
+b(to)371 b(the)f(structure)e(de\257ned)h(b)-31 b(y:)1906
+31508 y([)p Fx(S)p Fw(])371 b Fu(NV)p 4830 31508 V 418
+w(DATA)p 7572 31508 V 419 w(S\(y0\))1906 33390 y Fw([)p
+Fx(P)p Fw(])g Fu(NV)p 4993 33390 V 418 w(DATA)p 7735
+33390 V 419 w(P\(y0\))1906 35271 y Fw(Here)262 b Fu(comm)f
+Fw(is)h(the)g Fs(MPI)e Fw(comm)-31 b(unicator,)287 b(set)261
+b(in)h(one)g(of)g(t)-31 b(w)g(o)263 b(w)-31 b(a)g(ys:)440
+b(If)262 b(a)f(prop)31 b(er)261 b(subset)g(of)h(activ)-31
+b(e)263 b(pro)31 b(cesses)1906 36600 y(is)390 b(to)h(b)31
+b(e)389 b(used,)395 b Fu(comm)c Fw(m)-31 b(ust)390 b(b)31
+b(e)389 b(set)h(b)-31 b(y)390 b(suitable)i Fs(MPI)d Fw(calls.)556
+b(Otherwise,)395 b(to)c(sp)31 b(ecify)390 b(that)h(all)g(pro)31
+b(cesses)1906 37928 y(are)369 b(to)h(b)31 b(e)369 b(used,)g
+Fu(comm)h Fw(m)-31 b(ust)370 b(b)31 b(e)368 b Fu(MPI)p
+18205 37928 V 419 w(COMM)p 20948 37928 V 419 w(WORLD)p
+Fw(.)p Black 553 40212 a(4.)p Black 493 w Fx(Create)426
+b Fs(cv)-25 b(odes)425 b Fx(ob)71 b(ject)1906 42094 y
+Fw(Call)598 b Fu(cvode)p 7445 42094 V 420 w(mem)581 b(=)g
+(CVodeCreate\(lmm,)j(iter\);)710 b Fw(to)597 b(create)g(the)f
+Fs(cv)-25 b(odes)597 b Fw(memory)g(blo)31 b(c)-31 b(k)598
+b(and)e(to)1906 43422 y(sp)31 b(ecify)584 b(the)h(solution)g(metho)31
+b(d)585 b(\(linear)h(m)-31 b(ultistep)586 b(metho)31
+b(d)584 b(and)h(nonlinear)g(solv)-31 b(er)584 b(iteration)i(t)-31
+b(yp)31 b(e\).)1906 44751 y Fu(CVodeCreate)371 b Fw(returns)d(a)i(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(structure.)492 b(See)369 b Fn(x)p Fw(5.5.1)i(for)f
+(details.)p Black 553 47035 a(5.)p Black 493 w Fx(Allo)35
+b(cate)425 b(in)-35 b(ternal)425 b(memory)1906 48916
+y Fw(Call)415 b Fu(CVodeMalloc\(...\);)436 b Fw(to)413
+b(pro)-31 b(vide)414 b(required)e(problem)h(sp)31 b(eci\257cations,)425
+b(allo)31 b(cate)415 b(in)-31 b(ternal)414 b(memory)1906
+50245 y(for)452 b Fs(cv)-25 b(odes)p Fw(,)473 b(and)452
+b(initialize)i Fs(cv)-25 b(odes)p Fw(.)740 b Fu(CVodeMalloc)453
+b Fw(returns)d(a)i(\260ag,)473 b(the)452 b(v)-61 b(alue)452
+b(of)g(whic)-31 b(h)452 b(indicates)1906 51573 y(either)370
+b(success)e(or)h(an)g(illegal)j(argumen)-31 b(t)371 b(v)-61
+b(alue.)493 b(See)369 b Fn(x)p Fw(5.5.1)i(for)e(details.)p
+Black 553 53857 a(6.)p Black 493 w Fx(Set)426 b(optional)e(inputs)1906
+55739 y Fw(Call)444 b Fu(CVodeSet*)g Fw(functions)f(to)g(c)-31
+b(hange)443 b(an)-31 b(y)443 b(optional)i(inputs)d(that)h(con)-31
+b(trol)444 b(the)f(b)31 b(eha)-31 b(vior)443 b(of)f Fs(cv)-25
+b(odes)1906 57067 y Fw(from)370 b(their)g(default)g(v)-61
+b(alues.)493 b(See)369 b Fn(x)p Fw(5.5.4)i(for)f(details.)p
+Black 553 59351 a(7.)p Black 493 w Fx(A)-35 b(ttac)g(h)424
+b(linear)h(solv)-35 b(er)425 b(mo)35 b(dule)1906 61233
+y Fw(If)397 b(Newton)i(iteration)h(is)d(c)-31 b(hosen,)405
+b(initialize)400 b(the)e(linear)g(solv)-31 b(er)397 b(mo)31
+b(dule)399 b(with)f(one)g(of)f(the)h(follo)-31 b(wing)401
+b(calls)1906 62561 y(\(for)370 b(details)h(see)d Fn(x)p
+Fw(5.5.2\):)1906 64443 y([)p Fx(S)p Fw(])j Fu(ier)581
+b(=)h(CVDense\(...\);)1906 66325 y Fw([)p Fx(S)p Fw(])371
+b Fu(ier)581 b(=)h(CVBand\(...\);)1906 68207 y(ier)g(=)f
+(CVDiag\(...\);)1906 70089 y(ier)h(=)f(CVSpgmr\(...\);)p
+Black 553 72373 a Fw(8.)p Black 493 w Fx(Set)426 b(linear)e(solv)-35
+b(er)425 b(optional)f(inputs)1906 74255 y Fw(Call)339
+b Fu(CV*Set*)f Fw(functions)g(from)g(the)f(selected)h(linear)g(solv)-31
+b(er)337 b(mo)31 b(dule)338 b(to)g(c)-31 b(hange)338
+b(optional)i(inputs)d(sp)31 b(eci\257c)1906 75583 y(to)370
+b(that)h(linear)f(solv)-31 b(er.)493 b(See)369 b Fn(x)p
+Fw(5.5.4)i(for)e(details.)p Black 553 77867 a(9.)p Black
+493 w Fx(Sp)35 b(ecify)425 b(ro)35 b(ot\257nding)427
+b(problem)p Black Black eop
+%%Page: 31 41
+31 40 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(31)p 4000 3144 48001 45
+v Black 5906 6974 a Fw(Optionally)-92 b(,)365 b(call)360
+b Fu(CVodeRootInit)h Fw(to)f(initialize)i(a)e(ro)31 b(ot\257nding)360
+b(problem)g(to)g(b)31 b(e)359 b(solv)-31 b(ed)360 b(during)f(the)h(in)
+-31 b(te-)5906 8302 y(gration)371 b(of)f(the)g(ODE)e(system.)493
+b(See)369 b Fn(x)p Fw(5.8.1)j(for)d(details.)p Black
+4000 10625 a(10.)p Black 493 w Fx(Adv)-71 b(ance)426
+b(solution)f(in)f(time)5906 12507 y Fw(F)-92 b(or)335
+b(eac)-31 b(h)336 b(p)31 b(oin)-31 b(t)337 b(at)f(whic)-31
+b(h)336 b(output)h(is)e(desired,)342 b(call)337 b Fu(ier)581
+b(=)h(CVode\(cvode)p 38284 12507 349 45 v 420 w(mem,)f(tout,)h(yout,)g
+(&tret,)5906 13835 y(itask\);)485 b Fw(Set)446 b Fu(itask)g
+Fw(to)g(sp)31 b(ecify)446 b(the)g(return)f(mo)31 b(de.)722
+b(The)446 b(v)-31 b(ector)446 b Fu(y)f Fw(\(whic)-31
+b(h)447 b(can)f(b)31 b(e)445 b(the)h(same)g(as)g(the)5906
+15163 y(v)-31 b(ector)370 b Fu(y0)g Fw(ab)31 b(o)-31
+b(v)g(e\))371 b(will)f(con)-31 b(tain)372 b Fl(y)40 b
+Fw(\()p Fl(t)p Fw(\).)492 b(See)369 b Fn(x)p Fw(5.5.3)j(for)d(details.)
+p Black 4000 17486 a(11.)p Black 493 w Fx(Get)425 b(optional)g(outputs)
+5906 19368 y Fw(Call)371 b Fu(CV*Get*)f Fw(functions)h(to)f(obtain)g
+(optional)i(output.)494 b(See)369 b Fn(x)p Fw(5.5.6)j(and)d
+Fn(x)p Fw(5.8.1)i(for)f(details.)p Black 4000 21691 a(12.)p
+Black 493 w Fx(Deallo)35 b(cate)425 b(memory)h(for)f(solution)g(v)-35
+b(ector)5906 23573 y Fw(Up)31 b(on)304 b(completion)h(of)f(the)f(in)-31
+b(tegration,)320 b(deallo)31 b(cate)306 b(memory)e(for)f(the)g(v)-31
+b(ector)304 b Fu(y)f Fw(b)-31 b(y)303 b(calling)j(the)d(destructor)5906
+24901 y(function)371 b(de\257ned)e(b)-31 b(y)369 b(the)h
+Fs(nvector)f Fw(implemen)-31 b(tation:)5906 26783 y([)p
+Fx(S)p Fw(])371 b Fu(NV)p 8830 26783 V 418 w(Destroy)p
+13315 26783 V 420 w(Serial\(y\);)5906 28665 y Fw([)p
+Fx(P)p Fw(])g Fu(NV)p 8993 28665 V 418 w(Destroy)p 13478
+28665 V 420 w(Parallel\(y\);)p Black 4000 30987 a Fw(13.)p
+Black 493 w Fx(F)-106 b(ree)426 b(solv)-35 b(er)425 b(memory)5906
+32869 y Fw(Call)371 b Fu(CVodeFree\(cvode)p 17028 32869
+V 421 w(mem\);)f Fw(to)g(free)e(the)i(memory)g(allo)31
+b(cated)372 b(for)d Fs(cv)-25 b(odes)p Fw(.)p Black 4000
+35192 a(14.)p Black 493 w Fx([P])424 b(Finalize)g(MPI)5906
+37074 y Fw(Call)371 b Fu(MPI)p 10056 37074 V 419 w(Finalize\(\);)g
+Fw(to)f(terminate)h(MPI.)4000 40733 y Fr(5.5)1793 b(User-callable)599
+b(functions)g(for)f(IVP)f(solution)4000 43157 y Fw(This)378
+b(section)g(describ)31 b(es)377 b(the)h Fs(cv)-25 b(odes)378
+b Fw(functions)g(that)h(are)f(called)g(b)-31 b(y)378
+b(the)g(user)f(to)h(setup)f(and)h(then)g(solv)-31 b(e)379
+b(an)4000 44486 y(IVP)-92 b(.)339 b(Some)h(of)f(these)g(are)f
+(required.)482 b(Ho)-31 b(w)g(ev)g(er,)347 b(starting)341
+b(with)f Fn(x)p Fw(5.5.4,)347 b(the)339 b(functions)h(listed)g(in)-31
+b(v)g(olv)g(e)341 b(optional)4000 45814 y(inputs/outputs)379
+b(or)e(restarting,)j(and)d(those)g(paragraphs)h(ma)-31
+b(y)378 b(b)31 b(e)376 b(skipp)31 b(ed)377 b(for)g(a)g(casual)h(use)e
+(of)i Fs(cv)-25 b(odes)p Fw(.)516 b(In)4000 47142 y(an)-31
+b(y)370 b(case,)f(refer)f(to)i Fn(x)p Fw(5.4)h(for)e(the)g(correct)g
+(order)f(of)i(these)f(calls.)493 b(Calls)371 b(related)e(to)h(ro)31
+b(ot\257nding)371 b(are)e(describ)31 b(ed)4000 48471
+y(in)369 b Fn(x)p Fw(5.8.)4000 51568 y Fo(5.5.1)1495
+b(CV)-42 b(ODES)500 b(initialization)h(and)e(deallo)42
+b(cation)500 b(functions)4000 53611 y Fw(The)420 b(follo)-31
+b(wing)423 b(three)c(functions)i(m)-31 b(ust)420 b(b)31
+b(e)419 b(called)i(in)e(the)h(order)f(listed.)644 b(The)420
+b(last)h(one)e(is)h(to)g(b)31 b(e)419 b(called)i(only)4000
+54939 y(after)407 b(the)g(IVP)g(solution)i(is)d(complete,)419
+b(as)406 b(it)i(frees)e(the)h Fs(cv)-25 b(odes)407 b
+Fw(memory)h(blo)31 b(c)-31 b(k)407 b(created)g(and)g(allo)31
+b(cated)410 b(b)-31 b(y)4000 56268 y(the)369 b(\257rst)g(t)-31
+b(w)g(o)371 b(calls.)p 4000 58135 7146 45 v 4000 59476
+45 1341 v 4376 59144 a Fu(CVodeCreate)p 11101 59476 V
+4000 59520 7146 45 v Black 4000 60872 a Fw(Call)p Black
+4848 w Fu(cvode)p 13789 60872 349 45 v 419 w(mem)582
+b(=)f(CVodeCreate\(lmm,)j(iter\);)p Black 4000 62641
+a Fw(Description)p Black 1286 w(The)335 b(function)i
+Fu(CVodeCreate)f Fw(instan)-31 b(tiates)338 b(a)d Fs(cv)-25
+b(odes)335 b Fw(solv)-31 b(er)335 b(ob)61 b(ject)337
+b(and)e(sp)31 b(eci\257es)334 b(the)h(solu-)10814 63969
+y(tion)370 b(metho)31 b(d.)p Black 4000 65739 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(lmm)p Black 1135 w Fw(\()p
+Fu(int)p Fw(\))529 b(sp)31 b(eci\257es)528 b(the)g(linear)h(m)-31
+b(ultistep)530 b(metho)31 b(d)529 b(and)g(ma)-31 b(y)529
+b(b)31 b(e)528 b(one)g(of)h(t)-31 b(w)g(o)530 b(p)31
+b(ossible)13692 67067 y(v)-61 b(alues:)493 b Fu(CV)p
+18651 67067 V 419 w(ADAMS)369 b Fw(or)g Fu(CV)p 24862
+67067 V 419 w(BDF)p Fw(.)p Black 10814 68615 a Fu(iter)p
+Black 554 w Fw(\()p Fu(int)p Fw(\))256 b(sp)31 b(eci\257es)254
+b(the)h(t)-31 b(yp)31 b(e)255 b(of)g(nonlinear)h(solv)-31
+b(er)255 b(iteration)i(and)e(ma)-31 b(y)256 b(b)31 b(e)254
+b(either)h Fu(CV)p 48164 68615 V 419 w(NEWTON)13692 69943
+y Fw(or)369 b Fu(CV)p 16280 69943 V 419 w(FUNCTIONAL)p
+Fw(.)10814 71713 y(The)326 b(recommended)f(c)-31 b(hoices)326
+b(for)g(\()p Fu(lmm)p Fw(,)335 b Fu(iter)p Fw(\))326
+b(are)f(\()p Fu(CV)p 34710 71713 V 420 w(ADAMS)p Fw(,)h
+Fu(CV)p 39830 71713 V 419 w(FUNCTIONAL)p Fw(\))h(for)e(nonsti\256)10814
+73041 y(problems)370 b(and)f(\()p Fu(CV)p 19373 73041
+V 419 w(BDF)p Fw(,)h Fu(CV)p 23374 73041 V 419 w(NEWTON)p
+Fw(\))g(for)f(sti\256)h(problems.)p Black 4000 74810
+a(Return)f(v)-61 b(alue)p Black 554 w(If)458 b(successful,)481
+b Fu(CVodeCreate)461 b Fw(returns)c(a)i(p)31 b(oin)-31
+b(ter)460 b(to)f(the)g(newly)h(created)f Fs(cv)-25 b(odes)459
+b Fw(memory)10814 76139 y(blo)31 b(c)-31 b(k)349 b(\(of)g(t)-31
+b(yp)31 b(e)348 b Fu(void)582 b(*)p Fw(\).)486 b(If)348
+b(an)g(error)f(o)31 b(ccurred,)352 b Fu(CVodeCreate)d
+Fw(prin)-31 b(ts)348 b(an)h(error)e(message)h(to)10814
+77467 y Fu(stderr)370 b Fw(and)f(returns)f Fu(NULL)p
+Fw(.)p Black Black eop
+%%Page: 32 42
+32 41 bop Black 0 2701 a Fx(32)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 5965 7146 45 v 0 7306 45 1341 v 376 6974 a Fu(CVodeMalloc)p
+7101 7306 V 0 7350 7146 45 v Black 0 8702 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeMalloc\(cvode)p 20829
+8702 349 45 v 421 w(mem,)h(f,)f(t0,)h(y0,)f(itol,)h(reltol,)g
+(abstol\);)p Black 0 10459 a Fw(Description)p Black 1286
+w(The)387 b(function)h Fu(CVodeMalloc)h Fw(pro)-31 b(vides)387
+b(required)g(problem)g(and)g(solution)i(sp)31 b(eci\257cations,)393
+b(al-)6814 11787 y(lo)31 b(cates)370 b(in)-31 b(ternal)371
+b(memory)-92 b(,)370 b(and)g(initializes)i Fs(cv)-25
+b(odes)p Fw(.)p Black 0 13544 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 9789 13544 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))330 b(p)31 b(oin)-31
+b(ter)331 b(to)f(the)g Fs(cv)-25 b(odes)330 b Fw(memory)h(blo)31
+b(c)-31 b(k)331 b(returned)e(b)-31 b(y)330 b Fu(CVodeCreate)p
+Fw(.)p Black 6814 15079 a Fu(f)p Black 5040 w Fw(\()p
+Fu(CVRhsFn)p Fw(\))348 b(is)e(the)g Fs(C)g Fw(function)h(whic)-31
+b(h)347 b(computes)g Fl(f)465 b Fw(in)346 b(the)g(ODE.)g(This)g
+(function)12435 16407 y(has)369 b(the)h(form)f Fu(f\(t,)582
+b(y,)g(ydot,)f(f)p 27719 16407 V 419 w(data\))370 b Fw(\(for)f(full)i
+(details)f(see)f Fn(x)p Fw(5.6.1\).)p Black 6814 17942
+a Fu(t0)p Black 4459 w Fw(\()p Fu(realtype)p Fw(\))i(is)e(the)h
+(initial)i(v)-61 b(alue)369 b(of)h Fl(t)p Fw(.)p Black
+6814 19477 a Fu(y0)p Black 4459 w Fw(\()p Fu(N)p 13516
+19477 V 419 w(Vector)p Fw(\))g(is)g(the)f(initial)j(v)-61
+b(alue)370 b(of)f Fl(y)40 b Fw(.)p Black 6814 21012 a
+Fu(itol)p Black 3297 w Fw(\()p Fu(int)p Fw(\))311 b(is)f(one)g(of)h
+Fu(CV)p 20807 21012 V 419 w(SS)p Fw(,)f Fu(CV)p 24167
+21012 V 419 w(SV)p Fw(,)h(or)f Fu(CV)p 28825 21012 V
+418 w(WF)p Fw(,)h(where)f Fu(itol)p Fw(=)p Fu(SS)g Fw(indicates)i
+(scalar)e(rel-)12435 22341 y(ativ)-31 b(e)275 b(error)d(tolerance)i
+(and)g(scalar)f(absolute)i(error)d(tolerance,)294 b(while)274
+b Fu(itol)p Fw(=)p Fu(CV)p 46488 22341 V 420 w(SV)12435
+23669 y Fw(indicates)k(scalar)f(relativ)-31 b(e)279 b(error)c
+(tolerance)j(and)f(v)-31 b(ector)277 b(absolute)h(error)e(tolerance.)
+12435 24997 y(The)371 b(latter)g(c)-31 b(hoice)372 b(is)e(imp)31
+b(ortan)-31 b(t)373 b(when)d(the)h(absolute)g(error)f(tolerance)h
+(needs)f(to)12435 26326 y(b)31 b(e)269 b(di\256eren)-31
+b(t)270 b(for)f(eac)-31 b(h)270 b(comp)31 b(onen)-31
+b(t)271 b(of)f(the)g(ODE.)f(If)h Fu(itol)p Fw(=)p Fu(CV)p
+39084 26326 V 419 w(WF)p Fw(,)g(the)g(argumen)-31 b(ts)12435
+27654 y Fu(reltol)304 b Fw(and)f Fu(abstol)h Fw(are)f(ignored)g(and)h
+(the)f(user)f(is)h(exp)31 b(ected)303 b(to)h(pro)-31
+b(vide)304 b(a)f(func-)12435 28982 y(tion)309 b(to)g(ev)-61
+b(aluate)309 b(the)g(error)d(w)-31 b(eigh)g(t)311 b(v)-31
+b(ector)308 b Fl(W)462 b Fw(from)309 b(\(3.7\).)474 b(See)308
+b Fu(CVodeSetEwtFn)12435 30311 y Fw(in)370 b Fn(x)p Fw(5.5.4.)p
+Black 6814 31846 a Fu(reltol)p Black 2135 w Fw(\()p Fu(realtype)p
+Fw(\))h(is)e(the)h(relativ)-31 b(e)371 b(error)d(tolerance.)p
+Black 6814 33381 a Fu(abstol)p Black 2135 w Fw(\()p Fu(void)582
+b(*)p Fw(\))548 b(is)f(a)h(p)31 b(oin)-31 b(ter)548 b(to)g(the)g
+(absolute)g(error)f(tolerance.)1028 b(If)547 b Fu(itol)p
+Fw(=)p Fu(CV)p 46181 33381 V 419 w(SS)p Fw(,)12435 34709
+y Fu(abstol)335 b Fw(m)-31 b(ust)336 b(b)31 b(e)334 b(a)h(p)31
+b(oin)-31 b(ter)336 b(to)f(a)g Fu(realtype)h Fw(v)-61
+b(ariable.)482 b(If)335 b Fu(itol)p Fw(=)p Fu(CV)p 42360
+34709 V 419 w(SV)p Fw(,)g Fu(abstol)12435 36038 y Fw(m)-31
+b(ust)370 b(b)31 b(e)369 b(an)g Fu(N)p 18873 36038 V
+419 w(Vector)g Fw(v)-61 b(ariable.)p Black 0 37794 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(will)h(b)31 b(e)369 b(one)g(of)h(the)f(follo)-31
+b(wing:)p Black 6814 39551 a Fu(CV)p 8046 39551 V 419
+w(SUCCESS)p Black 1554 w Fw(The)369 b(call)i(to)f Fu(CVodeMalloc)g
+Fw(w)-31 b(as)370 b(successful.)p Black 6814 41086 a
+Fu(CV)p 8046 41086 V 419 w(MEM)p 10208 41086 V 419 w(NULL)p
+Black 1135 w Fw(The)363 b Fs(cv)-25 b(odes)364 b Fw(memory)g(blo)31
+b(c)-31 b(k)364 b(w)-31 b(as)364 b(not)g(initialized)i(through)e(a)f
+(previous)h(call)14016 42414 y(to)370 b Fu(CVodeCreate)p
+Fw(.)p Black 6814 43949 a Fu(CV)p 8046 43949 V 419 w(MEM)p
+10208 43949 V 419 w(FAIL)p Black 1135 w Fw(A)f(memory)h(allo)31
+b(cation)373 b(request)c(has)g(failed.)p Black 6814 45484
+a Fu(CV)p 8046 45484 V 419 w(ILL)p 10208 45484 V 419
+w(INPUT)p Black 554 w Fw(An)g(input)h(argumen)-31 b(t)371
+b(to)e Fu(CVodeMalloc)i Fw(has)e(an)h(illegal)i(v)-61
+b(alue.)p Black 0 47241 a(Notes)p Black 4072 w(If)344
+b(an)g(error)f(o)31 b(ccurred,)348 b Fu(CVodeMalloc)d
+Fw(also)g(prin)-31 b(ts)344 b(an)g(error)f(message)h(to)h(the)f(\257le)
+g(sp)31 b(eci\257ed)344 b(b)-31 b(y)6814 48569 y(the)369
+b(optional)j(input)e Fu(errfp)p Fw(.)6814 50326 y(The)411
+b(tolerance)h(v)-61 b(alues)411 b(in)g Fu(reltol)h Fw(and)f
+Fu(abstol)h Fw(ma)-31 b(y)412 b(b)31 b(e)410 b(c)-31
+b(hanged)412 b(b)31 b(et)-31 b(w)g(een)412 b(calls)g(to)f
+Fu(CVode)6814 51654 y Fw(\(see)369 b Fu(CVodeSetTolerances)j
+Fw(in)d Fn(x)p Fw(5.5.4\).)7942 54249 y @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1429 b Fw(It)300 b(is)h(the)g(user's)e
+(resp)31 b(onsibilit)-31 b(y)302 b(to)g(pro)-31 b(vide)301
+b(compatible)i Fu(itol)e Fw(and)g Fu(abstol)g Fw(argumen)-31
+b(ts.)p 0 56761 5984 45 v 0 58102 45 1341 v 376 57770
+a Fu(CVodeFree)p 5939 58102 V 0 58146 5984 45 v Black
+0 59498 a Fw(Call)p Black 4848 w Fu(CVodeFree\(cvode)p
+15599 59498 349 45 v 421 w(mem\);)p Black 0 61254 a Fw(Description)p
+Black 1286 w(The)251 b(function)h Fu(CVodeFree)g Fw(frees)d(the)i
+(memory)h(allo)31 b(cated)253 b(b)-31 b(y)251 b(a)g(previous)g(call)g
+(to)h Fu(CVodeMalloc)p Fw(.)p Black 0 63011 a(Argumen)-31
+b(ts)p Black 1517 w(The)369 b(argumen)-31 b(t)371 b(is)e(the)h(p)31
+b(oin)-31 b(ter)370 b(to)f(the)h Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k)370 b(\(of)g(t)-31 b(yp)31
+b(e)370 b Fu(void)581 b(*)p Fw(\).)p Black 0 64767 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(function)i Fu(CVodeFree)f
+Fw(has)f(no)h(return)e(v)-61 b(alue.)0 67854 y Fo(5.5.2)1495
+b(Linear)499 b(solv)-42 b(er)500 b(sp)42 b(eci\257cation)500
+b(functions)0 69897 y Fw(As)380 b(previously)h(explained,)j(Newton)e
+(iteration)g(requires)d(the)i(solution)g(of)g(linear)g(systems)f(of)g
+(the)h(form)f(\(3.5\).)0 71225 y(There)368 b(are)f(four)h
+Fs(cv)-25 b(odes)368 b Fw(linear)h(solv)-31 b(ers)367
+b(curren)-31 b(tly)368 b(a)-31 b(v)-61 b(ailable)371
+b(for)d(this)g(task:)492 b Fs(cvdense)p Fw(,)370 b Fs(cvband)p
+Fw(,)e Fs(cvdia)-25 b(g)p Fw(,)0 72553 y(and)319 b Fs(cvspgmr)p
+Fw(.)475 b(The)319 b(\257rst)f(three)g(are)g(direct)h(solv)-31
+b(ers)319 b(and)g(deriv)-31 b(e)319 b(their)g(names)f(from)i(the)e(t)
+-31 b(yp)31 b(e)319 b(of)h(appro)-31 b(xima-)0 73882
+y(tion)410 b(used)e(for)h(the)h(Jacobian)g Fl(J)480 b
+Fw(=)374 b Fl(@)61 b(f)119 b(=@)61 b(y)40 b Fw(.)612
+b Fs(cvdense)p Fw(,)420 b Fs(cvband)409 b Fw(and)g Fs(cvdia)-25
+b(g)409 b Fw(w)-31 b(ork)409 b(with)h(dense,)419 b(banded,)0
+75210 y(and)401 b(diagonal)j(appro)-31 b(ximations)404
+b(to)e Fl(J)106 b Fw(,)409 b(resp)31 b(ectiv)-31 b(ely)-92
+b(.)589 b(The)401 b(fourth)g Fs(cv)-25 b(odes)402 b Fw(linear)f(solv)
+-31 b(er,)410 b Fs(cvspgmr)p Fw(,)f(is)401 b(an)0 76539
+y(iterativ)-31 b(e)478 b(solv)-31 b(er.)811 b(The)476
+b Fs(spgmr)e Fw(in)i(the)g(name)g(indicates)h(that)f(it)g(uses)f(a)h
+(scaled)f(preconditioned)i(GMRES)0 77867 y(metho)31 b(d.)p
+Black Black eop
+%%Page: 33 43
+33 42 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(33)p 4000 3144 48001 45
+v Black 5660 6974 a Fw(T)-92 b(o)386 b(sp)31 b(ecify)384
+b(a)h Fs(cv)-25 b(odes)385 b Fw(linear)h(solv)-31 b(er,)389
+b(after)c(the)g(call)h(to)f Fu(CVodeCreate)h Fw(but)f(b)31
+b(efore)385 b(an)-31 b(y)385 b(calls)g(to)h Fu(CVode)p
+Fw(,)4000 8302 y(the)468 b(user's)f(program)i(m)-31 b(ust)469
+b(call)g Fu(CVDense)p Fw(,)494 b Fu(CVBand)p Fw(,)g Fu(CVDiag)p
+Fw(,)g(or)468 b Fu(CVSpgmr)p Fw(,)494 b(as)468 b(do)31
+b(cumen)-31 b(ted)469 b(b)31 b(elo)-31 b(w.)791 b(The)4000
+9631 y(\257rst)387 b(argumen)-31 b(t)389 b(passed)f(to)g(these)g
+(functions)h(is)e(the)h Fs(cv)-25 b(odes)389 b Fw(memory)f(p)31
+b(oin)-31 b(ter)389 b(returned)e(b)-31 b(y)388 b Fu(CVodeCreate)p
+Fw(.)4000 10959 y(A)k(call)h(to)f(one)g(of)g(these)g(functions)g(links)
+h(the)e(main)i Fs(cv)-25 b(odes)392 b Fw(in)-31 b(tegrator)394
+b(to)e(a)g(linear)h(solv)-31 b(er)392 b(and)g(allo)-31
+b(ws)394 b(the)4000 12287 y(user)e(to)h(sp)31 b(ecify)393
+b(parameters)h(whic)-31 b(h)393 b(are)g(sp)31 b(eci\257c)392
+b(to)i(a)f(particular)h(solv)-31 b(er,)400 b(suc)-31
+b(h)392 b(as)h(the)g(half-bandwidths)j(in)4000 13616
+y(the)343 b Fs(cvband)g Fw(case.)484 b(The)343 b(use)f(of)h(eac)-31
+b(h)344 b(of)f(the)g(linear)h(solv)-31 b(ers)343 b(in)-31
+b(v)g(olv)g(es)344 b(certain)g(constan)-31 b(ts)344 b(and)f(p)31
+b(ossibly)343 b(some)4000 14944 y(macros)301 b(that)h(are)e(lik)-31
+b(ely)303 b(to)e(b)31 b(e)300 b(needed)g(in)h(the)g(user)e(co)31
+b(de.)470 b(These)300 b(are)h(a)-31 b(v)-61 b(ailable)303
+b(in)e(the)f(corresp)31 b(onding)301 b(header)4000 16272
+y(\257le)369 b(asso)31 b(ciated)371 b(with)f(the)g(linear)g(solv)-31
+b(er,)370 b(as)f(sp)31 b(eci\257ed)369 b(b)31 b(elo)-31
+b(w.)5660 17647 y(In)335 b(eac)-31 b(h)335 b(case,)342
+b(except)336 b(in)f(the)g(diagonal)j(appro)-31 b(ximation)338
+b(case)d(\()p Fs(cvdia)-25 b(g)p Fw(\),)343 b(the)335
+b(linear)h(solv)-31 b(er)336 b(mo)31 b(dule)335 b(used)4000
+18976 y(b)-31 b(y)447 b Fs(cv)-25 b(odes)448 b Fw(is)e(actually)k
+(built)e(on)f(top)h(of)f(a)h(generic)f(linear)g(system)h(solv)-31
+b(er,)467 b(whic)-31 b(h)448 b(ma)-31 b(y)448 b(b)31
+b(e)446 b(of)i(in)-31 b(terest)448 b(in)4000 20304 y(itself.)483
+b(These)335 b(generic)i(solv)-31 b(ers,)343 b(denoted)336
+b Fs(dense)p Fw(,)344 b Fs(band)336 b Fw(and)g Fs(spgmr)p
+Fw(,)342 b(are)336 b(describ)31 b(ed)335 b(separately)i(in)f(Chapter)
+4000 21632 y(10.)p 4000 23749 4821 45 v 4000 25090 45
+1341 v 4376 24757 a Fu(CVDense)p 8776 25090 V 4000 25134
+4821 45 v Black 4000 26532 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVDense\(cvode)p 22505 26532 349 45 v 420 w(mem,)h(N\);)p
+Black 4000 28397 a Fw(Description)p Black 1286 w(The)369
+b(function)i Fu(CVDense)f Fw(selects)f(the)h Fs(cvdense)g
+Fw(linear)g(solv)-31 b(er.)10814 30262 y(The)369 b(user's)g(main)h
+(program)g(m)-31 b(ust)370 b(include)g(the)f Fu(cvdense.h)h
+Fw(header)f(\257le.)p Black 4000 32126 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 32126 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 33722
+a Fu(N)p Black 5040 w Fw(\()p Fu(long)582 b(int)p Fw(\))370
+b(problem)g(dimension.)p Black 4000 35587 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 10814 37451 a Fu(CVDENSE)p
+14951 37451 V 419 w(SUCCESS)p Black 1555 w Fw(The)g Fs(cvdense)h
+Fw(initialization)k(w)-31 b(as)370 b(successful.)p Black
+10814 39048 a Fu(CVDENSE)p 14951 39048 V 419 w(MEM)p
+17113 39048 V 419 w(NULL)p Black 1136 w Fw(The)f Fu(cvode)p
+26172 39048 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 10814 40644 a Fu(CVDENSE)p
+14951 40644 V 419 w(ILL)p 17113 40644 V 419 w(INPUT)p
+Black 555 w Fw(The)277 b Fs(cvdense)h Fw(solv)-31 b(er)278
+b(is)f(not)h(compatible)i(with)e(the)g(curren)-31 b(t)277
+b Fs(nvector)20922 41973 y Fw(mo)31 b(dule.)p Black 10814
+43569 a Fu(CVDENSE)p 14951 43569 V 419 w(MEM)p 17113
+43569 V 419 w(FAIL)p Black 1136 w Fw(A)369 b(memory)h(allo)31
+b(cation)372 b(request)d(failed.)p Black 4000 45434 a(Notes)p
+Black 4072 w(The)393 b Fs(cvdense)g Fw(linear)g(solv)-31
+b(er)392 b(ma)-31 b(y)394 b(not)f(b)31 b(e)392 b(compatible)j(with)e(a)
+g(particular)h(implemen)-31 b(tation)10814 46762 y(of)304
+b(the)h Fs(nvector)e Fw(mo)31 b(dule.)472 b(Of)304 b(the)g(t)-31
+b(w)g(o)306 b Fs(nvector)e Fw(mo)31 b(dules)304 b(pro)-31
+b(vided)305 b(with)g Fs(sundials)p Fw(,)317 b(only)10814
+48090 y Fs(nvector)p 15541 48090 368 45 v 441 w(serial)368
+b Fw(is)h(compatible.)p 4000 50653 4240 45 v 4000 51994
+45 1341 v 4376 51662 a Fu(CVBand)p 8195 51994 V 4000
+52038 4240 45 v Black 4000 53437 a Fw(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVBand\(cvode)p 21924 53437 349 45
+v 420 w(mem,)h(N,)f(mupper,)i(mlower\);)p Black 4000
+55302 a Fw(Description)p Black 1286 w(The)369 b(function)i
+Fu(CVBand)f Fw(selects)f(the)g Fs(cvband)h Fw(linear)g(solv)-31
+b(er.)10814 57166 y(The)369 b(user's)g(main)h(program)g(m)-31
+b(ust)370 b(include)g(the)f Fu(cvband.h)h Fw(header)f(\257le.)p
+Black 4000 59031 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 59031 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 60627 a Fu(N)p Black 5040
+w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(problem)g(dimension.)p
+Black 10814 62223 a Fu(mupper)p Black 2135 w Fw(\()p
+Fu(long)582 b(int)p Fw(\))391 b(upp)31 b(er)388 b(half-bandwidth)393
+b(of)d(the)f(problem)i(Jacobian)g(\(or)f(of)g(the)g(ap-)16435
+63552 y(pro)-31 b(ximation)372 b(of)e(it\).)p Black 10814
+65148 a Fu(mlower)p Black 2135 w Fw(\()p Fu(long)582
+b(int)p Fw(\))418 b(lo)-31 b(w)g(er)419 b(half-bandwidth)h(of)e(the)f
+(problem)h(Jacobian)h(\(or)e(of)h(the)g(ap-)16435 66477
+y(pro)-31 b(ximation)372 b(of)e(it\).)p Black 4000 68341
+a(Return)f(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black 10814 70206
+a Fu(CVBAND)p 14370 70206 V 419 w(SUCCESS)p Black 1554
+w Fw(The)h Fs(cvband)f Fw(initialization)374 b(w)-31
+b(as)370 b(successful.)p Black 10814 71802 a Fu(CVBAND)p
+14370 71802 V 419 w(MEM)p 16532 71802 V 419 w(NULL)p
+Black 1135 w Fw(The)g Fu(cvode)p 25591 71802 V 419 w(mem)f
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+10814 73399 a Fu(CVBAND)p 14370 73399 V 419 w(ILL)p 16532
+73399 V 419 w(INPUT)p Black 554 w Fw(The)389 b Fs(cvband)g
+Fw(solv)-31 b(er)389 b(is)g(not)g(compatible)i(with)f(the)f(curren)-31
+b(t)388 b Fs(nvector)20340 74727 y Fw(mo)31 b(dule,)462
+b(or)441 b(one)i(of)f(the)g(Jacobian)h(half-bandwidths)i(is)c(outside)i
+(of)f(its)20340 76055 y(v)-61 b(alid)371 b(range)e(\(0)184
+b Fl(:)g(:)g(:)373 b Fu(N)p Fn(\241)p Fw(1\).)p Black
+10814 77652 a Fu(CVBAND)p 14370 77652 V 419 w(MEM)p 16532
+77652 V 419 w(FAIL)p Black 1135 w Fw(A)d(memory)g(allo)31
+b(cation)372 b(request)d(failed.)p Black Black eop
+%%Page: 34 44
+34 43 bop Black 0 2701 a Fx(34)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black Black 0 6974 a Fw(Notes)p Black 4072 w(The)431
+b Fs(cvband)f Fw(linear)i(solv)-31 b(er)431 b(ma)-31
+b(y)432 b(not)f(b)31 b(e)430 b(compatible)j(with)f(a)f(particular)h
+(implemen)-31 b(tation)6814 8302 y(of)501 b(the)f Fs(nvector)g
+Fw(mo)31 b(dule.)887 b(Of)500 b(the)g(t)-31 b(w)g(o)502
+b Fs(nvector)e Fw(mo)31 b(dules)501 b(pro)-31 b(vided)501
+b(with)g Fs(sundials)p Fw(,)6814 9631 y(only)472 b Fs(nvector)p
+14072 9631 368 45 v 441 w(serial)f Fw(is)g(compatible.)801
+b(The)472 b(half-bandwidths)i(are)d(to)h(b)31 b(e)470
+b(set)i(suc)-31 b(h)471 b(that)6814 10959 y(the)481 b(nonzero)h(lo)31
+b(cations)483 b(\()p Fl(i;)184 b(j)63 b Fw(\))484 b(in)d(the)h(banded)f
+(\(appro)-31 b(ximate\))485 b(Jacobian)e(satisfy)f Fn(\241)p
+Fu(mlower)6814 12287 y Fn(\267)307 b Fl(j)j Fn(\241)246
+b Fl(i)307 b Fn(\267)369 b Fu(mupper)p Fw(.)p 0 14551
+4240 45 v 0 16138 45 1587 v 376 15560 a Fu(CVDiag)p 4195
+16138 V 0 16182 4240 45 v Black 0 17462 a Fw(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVDiag\(cvode)p 17924 17462
+349 45 v 420 w(mem\);)p Black 0 19227 a Fw(Description)p
+Black 1286 w(The)369 b(function)i Fu(CVDiag)f Fw(selects)f(the)g
+Fs(cvdia)-25 b(g)370 b Fw(linear)f(solv)-31 b(er.)6814
+20993 y(The)369 b(user's)g(main)h(function)h(m)-31 b(ust)369
+b(include)h(the)g Fu(cvdiag.h)g Fw(header)f(\257le.)p
+Black 0 22758 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 22758 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 0 24524 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p
+Black 6814 26289 a Fu(CVDIAG)p 10370 26289 V 419 w(SUCCESS)p
+Black 1554 w Fw(The)h Fs(cvdia)-25 b(g)369 b Fw(initialization)374
+b(w)-31 b(as)370 b(successful.)p Black 6814 27834 a Fu(CVDIAG)p
+10370 27834 V 419 w(MEM)p 12532 27834 V 419 w(NULL)p
+Black 1135 w Fw(The)g Fu(cvode)p 21591 27834 V 419 w(mem)f
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+6814 29378 a Fu(CVDIAG)p 10370 29378 V 419 w(ILL)p 12532
+29378 V 419 w(INPUT)p Black 554 w Fw(The)423 b Fs(cvdia)-25
+b(g)422 b Fw(solv)-31 b(er)422 b(is)g(not)h(compatible)i(with)e(the)f
+(curren)-31 b(t)422 b Fs(nvector)16340 30706 y Fw(mo)31
+b(dule.)p Black 6814 32250 a Fu(CVDIAG)p 10370 32250
+V 419 w(MEM)p 12532 32250 V 419 w(FAIL)p Black 1135 w
+Fw(A)370 b(memory)g(allo)31 b(cation)372 b(request)d(failed.)p
+Black 0 34016 a(Notes)p Black 4072 w(The)452 b Fs(cvdia)-25
+b(g)452 b Fw(solv)-31 b(er)453 b(is)f(the)g(simplest)i(of)e(all)i(of)e
+(the)h(curren)-31 b(t)451 b Fs(cv)-25 b(odes)453 b Fw(linear)g(solv)-31
+b(ers.)742 b(The)6814 35344 y Fs(cvdia)-25 b(g)397 b
+Fw(solv)-31 b(er)397 b(uses)f(an)h(appro)-31 b(ximate)400
+b(diagonal)g(Jacobian)e(formed)g(b)-31 b(y)397 b(w)-31
+b(a)g(y)399 b(of)e(a)g(di\256erence)6814 36673 y(quotien)-31
+b(t.)663 b(The)425 b(user)f(do)31 b(es)425 b Fq(not)g
+Fw(ha)-31 b(v)g(e)426 b(the)f(option)i(of)f(supplying)g(a)g(function)g
+(to)g(compute)h(an)6814 38001 y(appro)-31 b(ximate)372
+b(diagonal)g(Jacobian.)p 0 40265 4821 45 v 0 41852 45
+1587 v 376 41273 a Fu(CVSpgmr)p 4776 41852 V 0 41896
+4821 45 v Black 0 43175 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVSpgmr\(cvode)p 18505 43175 349 45 v 420 w(mem,)h(pretype,)g
+(maxl\);)p Black 0 44941 a Fw(Description)p Black 1286
+w(The)369 b(function)i Fu(CVSpgmr)f Fw(selects)f(the)h
+Fs(cvspgmr)e Fw(linear)i(solv)-31 b(er.)6814 46706 y(The)369
+b(user's)g(main)h(function)h(m)-31 b(ust)369 b(include)h(the)g
+Fu(cvspgmr.h)g Fw(header)f(\257le.)p Black 0 48472 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 48472 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 50016
+a Fu(pretype)p Black 1554 w Fw(\()p Fu(int)p Fw(\))419
+b(sp)31 b(eci\257es)417 b(the)h(preconditioning)j(t)-31
+b(yp)31 b(e)418 b(and)g(m)-31 b(ust)419 b(b)31 b(e)417
+b(one)h(of:)591 b Fu(PREC)p 45019 50016 V 419 w(NONE)p
+Fw(,)12435 51344 y Fu(PREC)p 14829 51344 V 419 w(LEFT)p
+Fw(,)370 b Fu(PREC)p 20573 51344 V 419 w(RIGHT)p Fw(,)g(or)f
+Fu(PREC)p 28254 51344 V 419 w(BOTH)p Fw(.)p Black 6814
+52889 a Fu(maxl)p Black 3297 w Fw(\()p Fu(int)p Fw(\))406
+b(maxim)-31 b(um)407 b(dimension)f(of)f(the)g(Krylo)-31
+b(v)406 b(subspace)e(to)h(b)31 b(e)404 b(used.)598 b(P)-31
+b(ass)405 b(0)g(to)12435 54217 y(use)369 b(the)g(default)i(v)-61
+b(alue)369 b Fu(CVSPGMR)p 26971 54217 V 420 w(MAXL)582
+b(=)f(5)p Fw(.)p Black 0 55983 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 6814 57748 a Fu(CVSPGMR)p 10951 57748 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g Fs(cvspgmr)f Fw(initialization)374
+b(w)-31 b(as)370 b(successful.)p Black 6814 59292 a Fu(CVSPGMR)p
+10951 59292 V 419 w(MEM)p 13113 59292 V 419 w(NULL)p
+Black 1136 w Fw(The)f Fu(cvode)p 22172 59292 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p Fw(.)p Black
+6814 60836 a Fu(CVSPGMR)p 10951 60836 V 419 w(ILL)p 13113
+60836 V 419 w(INPUT)p Black 555 w Fw(The)f(preconditioner)h(t)-31
+b(yp)31 b(e)370 b Fu(pretype)g Fw(is)f(not)h(v)-61 b(alid.)p
+Black 6814 62381 a Fu(CVSPGMR)p 10951 62381 V 419 w(MEM)p
+13113 62381 V 419 w(FAIL)p Black 1136 w Fw(A)369 b(memory)h(allo)31
+b(cation)372 b(request)d(failed.)p Black 0 64146 a(Notes)p
+Black 4072 w(The)384 b Fs(cvspgmr)f Fw(solv)-31 b(er)385
+b(uses)e(a)h(scaled)h(preconditioned)g(GMRES)f(iterativ)-31
+b(e)386 b(metho)31 b(d)385 b(to)g(solv)-31 b(e)6814 65475
+y(the)369 b(linear)h(system)g(\(3.5\).)6814 67240 y(With)408
+b(the)g Fs(spgmr)e Fw(metho)31 b(d,)418 b(preconditioning)410
+b(can)e(b)31 b(e)407 b(done)g(on)h(the)g(left)g(only)-92
+b(,)418 b(on)408 b(the)g(righ)-31 b(t)6814 68568 y(only)-92
+b(,)384 b(on)379 b(b)31 b(oth)381 b(the)f(left)g(and)g(the)g(righ)-31
+b(t,)384 b(or)c(not)g(at)h(all.)525 b(F)-92 b(or)379
+b(a)h(giv)-31 b(en)381 b(preconditioner)g(matrix,)6814
+69897 y(the)268 b(merits)g(of)h(left)g(vs.)458 b(righ)-31
+b(t)269 b(preconditioning)i(are)c(generally)j(unclear,)289
+b(and)268 b(so)f(the)i(user)d(should)6814 71225 y(exp)31
+b(erimen)-31 b(t)396 b(with)g(b)31 b(oth)396 b(c)-31
+b(hoices.)571 b(P)-31 b(erformance)397 b(will)g(di\256er)d(b)31
+b(ecause)395 b(the)g(in)-31 b(v)g(erse)396 b(of)f(the)h(left)6814
+72553 y(preconditioner)461 b(is)g(included)f(in)h(the)f(linear)h
+(system)g(residual)g(whose)f(norm)h(is)f(b)31 b(eing)460
+b(tested)6814 73882 y(in)422 b(the)g Fs(spgmr)f Fw(algorithm.)653
+b(As)421 b(a)h(rule,)436 b(ho)-31 b(w)g(ev)g(er,)436
+b(if)423 b(the)f(preconditioner)h(is)e(the)h(pro)31 b(duct)422
+b(of)6814 75210 y(t)-31 b(w)g(o)405 b(matrices,)413 b(w)-31
+b(e)404 b(recommend)g(that)h(preconditioning)h(b)31 b(e)403
+b(done)g(either)h(on)g(the)f(left)i(only)f(or)6814 76539
+y(the)442 b(righ)-31 b(t)443 b(only)-92 b(,)462 b(rather)441
+b(than)i(using)f(one)h(factor)g(on)f(eac)-31 b(h)442
+b(side.)711 b(F)-92 b(or)441 b(a)i(sp)31 b(eci\257cation)443
+b(of)g(the)6814 77867 y(preconditioner,)371 b(see)d Fn(x)p
+Fw(5.5.4)k(and)d Fn(x)p Fw(5.6.)p Black Black eop
+%%Page: 35 45
+35 44 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(35)p 4000 3144 48001 45
+v Black 10814 6974 a Fw(If)407 b(preconditioning)i(is)e(done,)417
+b(then)407 b(the)g(user)f(m)-31 b(ust)407 b(supply)g(functions)h
+(de\257ning)g(the)f(left)h(and)10814 8302 y(righ)-31
+b(t)295 b(preconditioner)g(matrices)f Fl(P)25738 8468
+y Fk(1)26528 8302 y Fw(and)g Fl(P)29316 8468 y Fk(2)30106
+8302 y Fw(\(either)g(of)h(whic)-31 b(h)294 b(could)h(b)31
+b(e)293 b(the)h(iden)-31 b(tit)g(y)296 b(matrix\),)10814
+9631 y(suc)-31 b(h)369 b(that)h(the)g(pro)31 b(duct)369
+b Fl(P)22481 9797 y Fk(1)22977 9631 y Fl(P)23688 9797
+y Fk(2)24553 9631 y Fw(appro)-31 b(ximates)372 b(the)d(Newton)i(matrix)
+g Fl(M)428 b Fw(=)307 b Fl(I)333 b Fn(\241)246 b Fl(\260)61
+b(J)475 b Fw(of)370 b(\(3.6\).)4000 12735 y Fo(5.5.3)1495
+b(CV)-42 b(ODE)500 b(solv)-42 b(er)500 b(function)4000
+14780 y Fw(This)370 b(is)f(the)g(cen)-31 b(tral)370 b(step)f(in)h(the)f
+(solution)i(pro)31 b(cess)368 b(-)h(the)h(call)g(to)g(p)31
+b(erform)369 b(the)g(in)-31 b(tegration)373 b(of)c(the)h(IVP)-92
+b(.)p 4000 16655 3659 45 v 4000 17996 45 1341 v 4376
+17664 a Fu(CVode)p 7614 17996 V 4000 18040 3659 45 v
+Black 4000 19393 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVode\(cvode)p 21343 19393 349 45 v 420 w(mem,)h(tout,)g(yout,)g
+(tret,)f(itask\);)p Black 4000 21166 a Fw(Description)p
+Black 1286 w(The)369 b(function)i Fu(CVode)f Fw(in)-31
+b(tegrates)371 b(the)e(ODE)g(o)-31 b(v)g(er)370 b(an)f(in)-31
+b(terv)-61 b(al)370 b(in)g Fl(t)p Fw(.)p Black 4000 22940
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p 13789
+22940 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p
+Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25
+b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black
+10814 24491 a Fu(tout)p Black 3297 w Fw(\()p Fu(realtype)p
+Fw(\))371 b(the)f(next)f(time)i(at)f(whic)-31 b(h)370
+b(a)f(computed)i(solution)g(is)e(desired.)p Black 10814
+26041 a Fu(yout)p Black 3297 w Fw(\()p Fu(N)p 17516 26041
+V 419 w(Vector)p Fw(\))h(the)g(computed)g(solution)h(v)-31
+b(ector.)p Black 10814 27592 a Fu(tret)p Black 3297 w
+Fw(\()p Fu(realtype)583 b(*)p Fw(\))370 b(the)f(time)h(reac)-31
+b(hed)370 b(b)-31 b(y)369 b(the)g(solv)-31 b(er.)p Black
+10814 29143 a Fu(itask)p Black 2716 w Fw(\()p Fu(int)p
+Fw(\))445 b(a)g(\260ag)g(indicating)i(the)d(job)h(of)f(the)h(solv)-31
+b(er)445 b(for)f(the)g(next)h(user)e(step.)718 b(The)16435
+30471 y Fu(CV)p 17667 30471 V 419 w(NORMAL)577 b Fw(option)i(causes)e
+(the)h(solv)-31 b(er)577 b(to)h(tak)-31 b(e)579 b(in)-31
+b(ternal)578 b(steps)f(un)-31 b(til)579 b(it)f(has)16435
+31800 y(reac)-31 b(hed)577 b(or)f(just)h(passed)f(the)h(user-sp)31
+b(eci\257ed)576 b Fu(tout)h Fw(parameter.)1115 b(The)577
+b(solv)-31 b(er)16435 33128 y(then)564 b(in)-31 b(terp)31
+b(olates)566 b(in)e(order)f(to)h(return)g(an)g(appro)-31
+b(ximate)566 b(v)-61 b(alue)564 b(of)h Fl(y)40 b Fw(\()p
+Fu(tout)p Fw(\).)16435 34456 y(The)549 b Fu(CV)p 20122
+34456 V 419 w(ONE)p 22284 34456 V 419 w(STEP)g Fw(option)i(tells)f(the)
+f(solv)-31 b(er)549 b(to)h(tak)-31 b(e)550 b(just)f(one)g(in)-31
+b(ternal)551 b(step)16435 35785 y(and)556 b(then)g(return)f(the)h
+(solution)h(at)g(the)f(p)31 b(oin)-31 b(t)557 b(reac)-31
+b(hed)556 b(b)-31 b(y)556 b(that)g(step.)1053 b(The)16435
+37113 y Fu(CV)p 17667 37113 V 419 w(NORMAL)p 21572 37113
+V 419 w(TSTOP)308 b Fw(and)f Fu(CV)p 28456 37113 V 419
+w(ONE)p 30618 37113 V 419 w(STEP)p 33361 37113 V 419
+w(TSTOP)h Fw(mo)31 b(des)307 b(are)g(similar)h(to)g Fu(CV)p
+48164 37113 V 419 w(NORMAL)16435 38442 y Fw(and)356 b
+Fu(CV)p 19806 38442 V 418 w(ONE)p 21967 38442 V 419 w(STEP)p
+Fw(,)h(resp)31 b(ectiv)-31 b(ely)-92 b(,)359 b(except)d(that)g(the)g
+(in)-31 b(tegration)358 b(nev)-31 b(er)356 b(pro)31 b(ceeds)16435
+39770 y(past)340 b(the)f(v)-61 b(alue)340 b Fu(tstop)g
+Fw(\(sp)31 b(eci\257ed)339 b(through)h(the)g(function)h
+Fu(CVodeSetStopTime)p Fw(\).)p Black 4000 41543 a(Return)369
+b(v)-61 b(alue)p Black 554 w(On)490 b(return,)519 b Fu(CVode)491
+b Fw(returns)d(a)j(v)-31 b(ector)490 b Fu(yout)g Fw(and)g(a)g(corresp)
+31 b(onding)490 b(indep)31 b(enden)-31 b(t)491 b(v)-61
+b(ariable)10814 42872 y(v)g(alue)370 b Fl(t)307 b Fw(=)p
+Fu(*tret)p Fw(,)370 b(suc)-31 b(h)369 b(that)h Fu(yout)g
+Fw(is)f(the)g(computed)i(v)-61 b(alue)369 b(of)h Fl(y)40
+b Fw(\()p Fl(t)p Fw(\).)10814 44645 y(In)302 b Fu(CV)p
+13363 44645 V 419 w(NORMAL)h Fw(mo)31 b(de)303 b(\(with)h(no)f
+(errors\),)315 b Fu(*tret)303 b Fw(will)h(b)31 b(e)302
+b(equal)i(to)f Fu(tout)g Fw(and)f Fu(yout)h Fw(=)g Fl(y)40
+b Fw(\()p Fu(tout)p Fw(\).)10814 46418 y(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(will)h(b)31 b(e)369 b(one)g(of)h(the)f(follo)-31
+b(wing:)p Black 10814 48192 a Fu(CV)p 12046 48192 V 419
+w(SUCCESS)p Black 3716 w(CVode)369 b Fw(succeeded)g(and)g(no)h(ro)31
+b(ots)369 b(w)-31 b(ere)369 b(found.)p Black 10814 49742
+a Fu(CV)p 12046 49742 V 419 w(TSTOP)p 15370 49742 V 419
+w(RETURN)p Black 973 w(CVode)360 b Fw(succeeded)f(b)-31
+b(y)361 b(reac)-31 b(hing)361 b(the)f(stopping)h(p)31
+b(oin)-31 b(t)361 b(sp)31 b(eci\257ed)360 b(through)20178
+51071 y(the)369 b(optional)j(input)e(function)g Fu(CVodeSetStopTime)i
+Fw(\(see)d Fn(x)p Fw(5.5.4\).)p Black 10814 52622 a Fu(CV)p
+12046 52622 V 419 w(ROOT)p 14789 52622 V 419 w(RETURN)p
+Black 1554 w(CVode)392 b Fw(succeeded)g(and)h(found)f(one)h(or)f(more)h
+(ro)31 b(ots.)562 b(If)392 b Fu(nrtfn)h Fl(>)346 b Fw(1,)399
+b(call)20178 53950 y Fu(CVodeGetRootInfo)341 b Fw(to)f(see)f(whic)-31
+b(h)340 b Fl(g)36563 54116 y Fj(i)37271 53950 y Fw(w)-31
+b(ere)339 b(found)h(to)g(ha)-31 b(v)g(e)340 b(a)g(ro)31
+b(ot.)483 b(See)20178 55278 y Fn(x)p Fw(5.8)370 b(for)f(more)h
+(information.)p Black 10814 56829 a Fu(CV)p 12046 56829
+V 419 w(MEM)p 14208 56829 V 419 w(NULL)p Black 3297 w
+Fw(The)f Fu(cvode)p 25428 56829 V 419 w(mem)h Fw(argumen)-31
+b(t)370 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)p Black 10814
+58380 a Fu(CV)p 12046 58380 V 419 w(NO)p 13627 58380
+V 418 w(MALLOC)p Black 2717 w Fw(The)246 b Fs(cv)-25
+b(odes)247 b Fw(memory)g(blo)31 b(c)-31 b(k)247 b(w)-31
+b(as)247 b(not)g(allo)31 b(cated)248 b(b)-31 b(y)247
+b(a)f(call)i(to)f Fu(CVodeMalloc)p Fw(.)p Black 10814
+59931 a Fu(CV)p 12046 59931 V 419 w(ILL)p 14208 59931
+V 419 w(INPUT)p Black 2716 w Fw(One)417 b(of)h(the)g(inputs)f(to)i
+Fu(CVode)f Fw(is)f(illegal.)640 b(This)418 b(includes)g(the)f
+(situation)20178 61259 y(where)303 b(a)h(ro)31 b(ot)305
+b(of)f(one)g(of)g(the)g(ro)31 b(ot)304 b(functions)h(w)-31
+b(as)305 b(found)f(b)31 b(oth)304 b(at)h(a)f(p)31 b(oin)-31
+b(t)20178 62588 y Fl(t)363 b Fw(and)h(also)g(v)-31 b(ery)364
+b(near)g Fl(t)p Fw(.)490 b(It)364 b(also)h(includes)f(the)g(situation)i
+(where)d(a)h(com-)20178 63916 y(p)31 b(onen)-31 b(t)305
+b(of)g(the)g(error)f(w)-31 b(eigh)g(t)306 b(v)-31 b(ector)306
+b(b)31 b(ecomes)305 b(negativ)-31 b(e)306 b(during)f(in)-31
+b(ternal)20178 65244 y(time-stepping.)546 b(The)386 b
+Fu(CV)p 31139 65244 V 419 w(ILL)p 33301 65244 V 419 w(INPUT)g
+Fw(\260ag)h(will)h(also)g(b)31 b(e)385 b(returned)h(if)h(the)20178
+66573 y(linear)336 b(solv)-31 b(er)336 b(initialization)k(function)d
+(\(called)g(b)-31 b(y)336 b(the)f(user)g(after)h(calling)20178
+67901 y Fu(CVodeCreate)p Fw(\))458 b(failed)h(to)e(set)g(the)g(linear)h
+(solv)-31 b(er-sp)31 b(eci\257c)457 b Fu(lsolve)h Fw(\257eld)20178
+69229 y(in)436 b Fu(cvode)p 24511 69229 V 419 w(mem)p
+Fw(.)694 b(In)435 b(an)-31 b(y)437 b(case,)453 b(the)436
+b(user)f(should)i(see)e(the)h(prin)-31 b(ted)437 b(error)20178
+70558 y(message)369 b(for)h(details.)p Black 10814 72109
+a Fu(CV)p 12046 72109 V 419 w(LINIT)p 15370 72109 V 419
+w(FAIL)p Black 2135 w Fw(The)f(linear)h(solv)-31 b(er's)370
+b(initialization)k(function)d(failed.)p Black 10814 73659
+a Fu(CV)p 12046 73659 V 419 w(TOO)p 14208 73659 V 419
+w(MUCH)p 16951 73659 V 419 w(WORK)p Black 554 w Fw(The)518
+b(solv)-31 b(er)518 b(to)31 b(ok)520 b Fu(mxstep)e Fw(in)-31
+b(ternal)520 b(steps)e(but)g(still)h(could)g(not)g(reac)-31
+b(h)20178 74988 y(tout.)494 b(The)369 b(default)i(v)-61
+b(alue)369 b(for)h Fu(mxstep)f Fw(is)h Fu(MXSTEP)p 42082
+74988 V 419 w(DEFAULT)582 b(=)f(500)p Fw(.)p Black 10814
+76539 a Fu(CV)p 12046 76539 V 419 w(TOO)p 14208 76539
+V 419 w(MUCH)p 16951 76539 V 419 w(ACC)p Black 1135 w
+Fw(The)452 b(solv)-31 b(er)452 b(could)g(not)g(satisfy)h(the)f
+(accuracy)g(demanded)g(b)-31 b(y)452 b(the)g(user)20178
+77867 y(for)369 b(some)g(in)-31 b(ternal)371 b(step.)p
+Black Black eop
+%%Page: 36 46
+36 45 bop Black 0 2701 a Fx(36)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black Black 6814 6974 a Fu(CV)p 8046 6974 349 45 v 419
+w(ERR)p 10208 6974 V 419 w(FAILURE)p Black 1554 w Fw(Either)516
+b(error)e(test)h(failures)h(o)31 b(ccurred)515 b(to)31
+b(o)516 b(man)-31 b(y)517 b(times)f(\()p Fu(MXNEF)582
+b(=)f(7)p Fw(\))16178 8302 y(during)369 b(one)h(in)-31
+b(ternal)370 b(time)h(step,)e(or)g(with)i Fn(j)p Fl(h)p
+Fn(j)308 b Fw(=)f Fl(h)38224 8468 y Fj(min)39925 8302
+y Fw(.)p Black 6814 9897 a Fu(CV)p 8046 9897 V 419 w(CONV)p
+10789 9897 V 419 w(FAILURE)p Black 973 w Fw(Either)434
+b(con)-31 b(v)g(ergence)435 b(test)f(failures)g(o)31
+b(ccurred)433 b(to)31 b(o)435 b(man)-31 b(y)435 b(times)g(\()p
+Fu(MXNCF)16178 11226 y(=)581 b(10)p Fw(\))370 b(during)f(one)h(in)-31
+b(ternal)370 b(time)h(step,)e(or)g(with)i Fn(j)p Fl(h)p
+Fn(j)308 b Fw(=)f Fl(h)41348 11392 y Fj(min)43049 11226
+y Fw(.)p Black 6814 12821 a Fu(CV)p 8046 12821 V 419
+w(LSETUP)p 11951 12821 V 419 w(FAIL)p Black 1554 w Fw(The)372
+b(linear)h(solv)-31 b(er's)373 b(setup)f(function)i(failed)g(in)e(an)h
+(unreco)-31 b(v)g(erable)373 b(man-)16178 14149 y(ner.)p
+Black 6814 15744 a Fu(CV)p 8046 15744 V 419 w(LSOLVE)p
+11951 15744 V 419 w(FAIL)p Black 1554 w Fw(The)400 b(linear)g(solv)-31
+b(er's)400 b(solv)-31 b(e)401 b(function)g(failed)g(in)f(an)f(unreco)
+-31 b(v)g(erable)401 b(man-)16178 17073 y(ner.)p Black
+0 18935 a(Notes)p Black 4072 w(The)343 b(v)-31 b(ector)343
+b Fu(yout)g Fw(can)g(o)31 b(ccup)-31 b(y)343 b(the)g(same)g(space)f(as)
+h(the)g Fu(y0)f Fw(v)-31 b(ector)344 b(of)f(initial)i(conditions)g
+(that)6814 20263 y(w)-31 b(as)370 b(passed)e(to)i Fu(CVodeMalloc)p
+Fw(.)6814 22125 y(In)378 b(the)g Fu(CV)p 11354 22125
+V 419 w(ONE)p 13516 22125 V 419 w(STEP)g Fw(mo)31 b(de,)381
+b Fu(tout)e Fw(is)f(only)h(used)e(on)i(the)f(\257rst)g(call)h(to)g(get)
+g(the)f(direction)i(and)6814 23454 y(a)369 b(rough)h(scale)f(of)h(the)g
+(indep)31 b(enden)-31 b(t)369 b(v)-61 b(ariable.)6814
+25316 y(All)521 b(failure)f(return)f(v)-61 b(alues)520
+b(are)g(negativ)-31 b(e)522 b(and)e(so)f(the)h(test)g
+Fu(ier)582 b(<)f(0)520 b Fw(will)h(trap)f(all)h Fu(CVode)6814
+26644 y Fw(failures.)6814 28506 y(On)463 b(an)-31 b(y)464
+b(error)e(return)h(in)g(whic)-31 b(h)464 b(one)g(or)f(more)g(in)-31
+b(ternal)465 b(steps)e(w)-31 b(ere)463 b(tak)-31 b(en)464
+b(b)-31 b(y)464 b Fu(CVode)p Fw(,)488 b(the)6814 29834
+y(returned)510 b(v)-61 b(alues)512 b(of)f Fu(tret)h Fw(and)f
+Fu(yout)h Fw(corresp)31 b(ond)510 b(to)i(the)g(farthest)g(p)31
+b(oin)-31 b(t)512 b(reac)-31 b(hed)511 b(in)h(the)6814
+31163 y(in)-31 b(tegration.)696 b(On)436 b(all)h(other)f(error)f
+(returns,)452 b Fu(tret)437 b Fw(and)f Fu(yout)g Fw(are)g(left)h(unc)
+-31 b(hanged)437 b(from)g(the)6814 32491 y(previous)369
+b Fu(CVode)h Fw(return.)0 35831 y Fo(5.5.4)1495 b(Optional)500
+b(input)f(functions)0 37959 y Fs(cv)-25 b(odes)368 b
+Fw(pro)-31 b(vides)368 b(an)f(extensiv)-31 b(e)369 b(set)e(of)h
+(functions)g(that)h(can)e(b)31 b(e)367 b(used)g(to)h(c)-31
+b(hange)368 b(from)g(their)g(default)h(v)-61 b(alues)0
+39287 y(v)g(arious)431 b(optional)i(input)e(parameters)g(that)h(con)-31
+b(trol)432 b(the)f(b)31 b(eha)-31 b(vior)432 b(of)f(the)g
+Fs(cv)-25 b(odes)431 b Fw(solv)-31 b(er.)677 b(T)-92
+b(able)431 b(5.1)h(lists)0 40615 y(all)412 b(optional)h(input)e
+(functions)h(in)f Fs(cv)-25 b(odes)411 b Fw(whic)-31
+b(h)412 b(are)e(then)h(describ)31 b(ed)410 b(in)g(detail)j(in)e(the)f
+(remainder)h(of)g(this)0 41944 y(section.)494 b(F)-92
+b(or)368 b(the)h(most)h(casual)g(use)f(of)h Fs(cv)-25
+b(odes)p Fw(,)370 b(the)f(reader)g(can)g(skip)g(to)h
+Fn(x)p Fw(5.6.)1660 43317 y(W)-92 b(e)278 b(note)i(that,)298
+b(on)279 b(error)f(return,)296 b(all)280 b(of)f(the)g(optional)j(input)
+d(functions)h(prin)-31 b(t)279 b(an)g(error)f(message)h(to)g
+Fu(stderr)0 44646 y Fw(\(or)414 b(to)g(the)g(\257le)g(p)31
+b(oin)-31 b(ted)415 b(to)f(b)-31 b(y)414 b Fu(errfp)p
+Fw(,)426 b(if)414 b(already)g(sp)31 b(eci\257ed\).)626
+b(W)-92 b(e)413 b(also)h(note)h(that)f(all)h(error)e(return)g(v)-61
+b(alues)0 45974 y(are)369 b(negativ)-31 b(e,)372 b(so)d(the)g(test)h
+Fu(flag)582 b(<)f(0)369 b Fw(will)i(catc)-31 b(h)370
+b(all)h(errors.)0 49093 y Fx(Main)424 b(solv)-35 b(er)425
+b(optional)g(input)g(functions)0 51220 y Fw(The)369 b(calls)h(listed)h
+(here)d(can)h(b)31 b(e)369 b(executed)h(in)f(an)-31 b(y)370
+b(order.)p 0 53376 9470 45 v 0 54716 45 1341 v 376 54384
+a Fu(CVodeSetErrFile)p 9426 54716 V 0 54760 9470 45 v
+Black 0 56158 a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVodeSetErrFile\(cvode)p 23153 56158 349 45 v 422 w(mem,)g(errfp\);)p
+Black 0 58020 a Fw(Description)p Black 1286 w(The)392
+b(function)g Fu(CVodeSetErrFile)i Fw(sp)31 b(eci\257es)390
+b(a)i(p)31 b(oin)-31 b(ter)392 b(to)g(the)g(\257le)f(where)h(all)g
+Fs(cv)-25 b(odes)392 b Fw(mes-)6814 59348 y(sages)369
+b(should)h(b)31 b(e)368 b(directed.)p Black 0 61210 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 61210 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 62806
+a Fu(errfp)p Black 2716 w Fw(\()p Fu(FILE)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(output)g(\257le.)p
+Black 0 64668 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+6814 66530 a Fu(CV)p 8046 66530 V 419 w(SUCCESS)p Black
+973 w Fw(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 6814 68125 a
+Fu(CV)p 8046 68125 V 419 w(MEM)p 10208 68125 V 419 w(NULL)p
+Black 554 w Fw(The)f Fu(cvode)p 18685 68125 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+0 69987 a(Notes)p Black 4072 w(The)g(default)i(v)-61
+b(alue)370 b(for)f Fu(errfp)h Fw(is)f Fu(stderr)p Fw(.)6814
+71849 y(P)-31 b(assing)400 b(a)f(v)-61 b(alue)399 b(of)g
+Fu(NULL)g Fw(disables)g(all)h(future)f(error)f(message)h(output)h
+(\(except)f(for)g(the)g(case)6814 73177 y(in)369 b(whic)-31
+b(h)371 b(the)e Fs(cv)-25 b(odes)370 b Fw(memory)g(p)31
+b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(\).)7942 75878
+y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1437 b
+Fw(If)308 b Fu(CVodeSetErrFile)i Fw(is)e(to)i(b)31 b(e)308
+b(called,)322 b(it)309 b(should)g(b)31 b(e)308 b(called)h(b)31
+b(efore)308 b(an)-31 b(y)309 b(other)g(optional)6814
+77206 y(input)370 b(functions,)h(in)e(order)g(to)h(tak)-31
+b(e)370 b(e\256ect)f(for)g(an)-31 b(y)370 b(later)g(error)e(message.)p
+Black Black eop
+%%Page: 37 47
+37 46 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(37)p 4000 3144 48001 45
+v Black Black Black 8074 21499 a Fw(T)-92 b(able)370
+b(5.1:)494 b(Optional)371 b(inputs)f(for)f(CV)-31 b(ODES,)370
+b(CVDENSE,)h(CVBAND,)f(and)g(CVSPGMR)p Black 4000 22533
+50619 45 v 3978 23862 45 1329 v 4664 23463 a Fx(Optional)425
+b(input)p 27507 23862 V 15306 w(F)-106 b(unction)425
+b(name)p 42783 23862 V 7014 w(Default)p 54597 23862 V
+4000 23906 50619 45 v 3978 25234 45 1329 v 23589 24836
+a(CV)-35 b(ODE)426 b(main)d(solv)-35 b(er)p 54597 25234
+V 4000 25278 50619 45 v 3978 26607 45 1329 v 4664 26208
+a Fw(P)k(oin)g(ter)371 b(to)f(an)f(error)g(\257le)p 27507
+26607 V 12616 w Fu(CVodeSetErrFile)p 42783 26607 V 6561
+w(stderr)p 54597 26607 V 3978 27935 V 4664 27537 a Fw(Data)h(for)f
+(righ)-31 b(t-hand)371 b(side)e(function)p 27507 27935
+V 7452 w Fu(CVodeSetFdata)p 42783 27935 V 7723 w(NULL)p
+54597 27935 V 3978 29264 V 4664 28865 a Fw(Maxim)-31
+b(um)371 b(order)e(for)g(BDF)f(metho)31 b(d)p 27507 29264
+V 7301 w Fu(CVodeSetMaxOrd)p 42783 29264 V 7142 w Fw(5)p
+54597 29264 V 3978 30592 V 4664 30193 a(Maxim)-31 b(um)371
+b(order)e(for)g(Adams)h(metho)31 b(d)p 27507 30592 V
+6295 w Fu(CVodeSetMaxOrd)p 42783 30592 V 7142 w Fw(12)p
+54597 30592 V 3978 31920 V 4664 31522 a(Maxim)-31 b(um)371
+b(no.)493 b(of)370 b(in)-31 b(ternal)371 b(steps)d(b)31
+b(efore)369 b Fl(t)23747 31688 y Fk(out)p 27507 31920
+V 28193 31522 a Fu(CVodeSetMaxNumSteps)p 42783 31920
+V 4237 w Fw(500)p 54597 31920 V 3978 33249 V 4664 32850
+a(Maxim)-31 b(um)371 b(no.)493 b(of)370 b(w)-31 b(arnings)370
+b(for)f Fl(t)19897 33016 y Fj(n)20746 32850 y Fw(+)246
+b Fl(h)307 b Fw(=)g Fl(t)24366 33016 y Fj(n)p 27507 33249
+V 28193 32850 a Fu(CVodeSetMaxHnilWarns)p 42783 33249
+V 3656 w Fw(10)p 54597 33249 V 3978 34577 V 4664 34178
+a(Flag)370 b(to)g(activ)-61 b(ate)371 b(stabilit)-31
+b(y)372 b(limit)g(detection)p 27507 34577 V 4137 w Fu
+(CVodeSetStabLimDet)p 42783 34577 V 4818 w(FALSE)p 54597
+34577 V 3978 35905 V 4664 35507 a Fw(Initial)f(step)e(size)p
+27507 35905 V 16168 w Fu(CVodeSetInitStep)p 42783 35905
+V 5980 w Fw(estimated)p 54597 35905 V 3978 37234 V 4664
+36835 a(Minim)-31 b(um)371 b(absolute)g(step)e(size)p
+27507 37234 V 10042 w Fu(CVodeSetMinStep)p 42783 37234
+V 6561 w Fw(0.0)p 54597 37234 V 3978 38562 V 4664 38163
+a(Maxim)-31 b(um)371 b(absolute)g(step)e(size)p 27507
+38562 V 9827 w Fu(CVodeSetMaxStep)p 42783 38562 V 6561
+w Fn(1)p 54597 38562 V 3978 39890 V 4664 39492 a Fw(V)-92
+b(alue)370 b(of)g Fl(t)9400 39658 y Fj(stop)p 27507 39890
+V 28193 39492 a Fu(CVodeSetStopTime)p 42783 39890 V 5980
+w Fn(1)p 54597 39890 V 3978 41219 V 4664 40820 a Fw(Maxim)-31
+b(um)371 b(no.)493 b(of)370 b(error)e(test)i(failures)p
+27507 41219 V 6685 w Fu(CVodeSetMaxErrTestFails)p 42783
+41219 V 1913 w Fw(7)p 54597 41219 V 3978 42547 V 4664
+42149 a(Maxim)-31 b(um)371 b(no.)493 b(of)370 b(nonlinear)g(iterations)
+p 27507 42547 V 5623 w Fu(CVodeSetMaxNonlinIters)p 42783
+42547 V 2494 w Fw(3)p 54597 42547 V 3978 43875 V 4664
+43477 a(Maxim)-31 b(um)371 b(no.)493 b(of)370 b(con)-31
+b(v)g(ergence)370 b(failures)p 27507 43875 V 5437 w Fu
+(CVodeSetMaxConvFails)p 42783 43875 V 3656 w Fw(10)p
+54597 43875 V 3978 45204 V 4664 44805 a(Co)31 b(e\261cien)-31
+b(t)371 b(in)f(the)f(nonlinear)i(con)-31 b(v)g(ergence)370
+b(test)p 27507 45204 V 2085 w Fu(CVodeSetNonlinConvCoef)p
+42783 45204 V 2494 w Fw(0.1)p 54597 45204 V 3978 46532
+V 4664 46134 a(Data)g(for)f(ro)31 b(ot\257nding)371 b(function)p
+27507 46532 V 9426 w Fu(CVodeSetGdata)p 42783 46532 V
+7723 w(NULL)p 54597 46532 V 3978 47860 V 4664 47462 a
+Fw(Nonlinear)g(iteration)g(t)-31 b(yp)31 b(e)p 27507
+47860 V 11839 w Fu(CVodeSetIterType)p 42783 47860 V 5980
+w Fw(none)p 54597 47860 V 3978 49189 V 4664 48790 a(In)-31
+b(tegration)372 b(tolerances)p 27507 49189 V 13001 w
+Fu(CVodeSetTolerances)p 42783 49189 V 4818 w Fw(none)p
+54597 49189 V 3978 50517 V 4664 50119 a(Ewt)e(compuation)i(function)p
+27507 50517 V 11185 w Fu(CVodeSetEwtFn)p 42783 50517
+V 7723 w Fw(in)-31 b(ternal)371 b(fn.)p 54597 50517 V
+4000 50561 50619 45 v 3978 51890 45 1329 v 22579 51491
+a Fx(CVDENSE)427 b(linear)d(solv)-35 b(er)p 54597 51890
+V 4000 51934 50619 45 v 3978 53262 45 1329 v 4664 52864
+a Fw(Dense)368 b(Jacobian)j(function)g(and)e(data)p 27507
+53262 V 7012 w Fu(CVDenseSetJacFn)p 42783 53262 V 6561
+w Fw(in)-31 b(ternal)371 b(DQ,)e(NULL)p 54597 53262 V
+4000 53307 50619 45 v 3978 54635 45 1329 v 22835 54237
+a Fx(CVBAND)426 b(linear)e(solv)-35 b(er)p 54597 54635
+V 4000 54679 50619 45 v 3978 56008 45 1329 v 4664 55609
+a Fw(Band)370 b(Jacobian)g(function)h(and)e(data)p 27507
+56008 V 7326 w Fu(CVBandSetJacFn)p 42783 56008 V 7142
+w Fw(in)-31 b(ternal)371 b(DQ,)e(NULL)p 54597 56008 V
+4000 56052 50619 45 v 3978 57380 45 1329 v 22385 56982
+a Fx(CVSPGMR)425 b(linear)g(solv)-35 b(er)p 54597 57380
+V 4000 57425 50619 45 v 3978 58753 45 1329 v 4664 58354
+a Fw(Preconditioner)371 b(functions)f(and)g(data)p 27507
+58753 V 6990 w Fu(CVSpgmrSetPreconditioner)p 42783 58753
+V 1332 w Fw(NULL,)g(NULL,)f(NULL)p 54597 58753 V 3978
+60081 V 4664 59683 a(Jacobian)i(times)f(v)-31 b(ector)370
+b(function)h(and)e(data)p 27507 60081 V 3980 w Fu
+(CVSpgmrSetJacTimesVecFn)p 42783 60081 V 1913 w Fw(in)-31
+b(ternal)371 b(DQ,)e(NULL)p 54597 60081 V 3978 61410
+V 4664 61011 a(T)-31 b(yp)31 b(e)370 b(of)g(Gram-Sc)-31
+b(hmidt)370 b(orthogonalization)p 27507 61410 V 3503
+w Fu(CVSpgmrSetGSType)p 42783 61410 V 5980 w Fw(classical)h(GS)p
+54597 61410 V 3978 62738 V 4664 62339 a(Ratio)g(b)31
+b(et)-31 b(w)g(een)370 b(linear)g(and)f(nonlinear)i(tolerances)p
+27507 62738 V 1329 w Fu(CVSpgmrSetDelt)p 42783 62738
+V 7142 w Fw(0.05)p 54597 62738 V 3978 64066 V 4664 63668
+a(Preconditioning)h(t)-31 b(yp)31 b(e)p 27507 64066 V
+13395 w Fu(CVSpgmrSetPrecType)p 42783 64066 V 4818 w
+Fw(none)p 54597 64066 V 4000 64111 50619 45 v Black Black
+Black eop
+%%Page: 38 48
+38 47 bop Black 0 2701 a Fx(38)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 5965 8308 45 v 0 7306 45 1341 v 376 6974 a Fu(CVodeSetFdata)p
+8263 7306 V 0 7350 8308 45 v Black 0 8710 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetFdata\(cvode)p
+21991 8710 349 45 v 421 w(mem,)h(f)p 25899 8710 V 419
+w(data\);)p Black 0 10496 a Fw(Description)p Black 1286
+w(The)293 b(function)g Fu(CVodeSetFdata)i Fw(sp)31 b(eci\257es)291
+b(the)i(user-de\257ned)e(data)j(blo)31 b(c)-31 b(k)293
+b Fu(f)p 39180 10496 V 418 w(data)g Fw(to)g(b)31 b(e)292
+b(passed)6814 11825 y(to)401 b(the)g(user-supplied)f(righ)-31
+b(t-hand)401 b(side)g(function)h Fl(f)119 b Fw(,)408
+b(and)401 b(attac)-31 b(hes)402 b(it)f(to)g(the)g(main)g
+Fs(cv)-25 b(odes)6814 13153 y Fw(memory)370 b(blo)31
+b(c)-31 b(k.)p Black 0 14940 a(Argumen)g(ts)p Black Black
+1517 w Fu(cvode)p 9789 14940 V 419 w(mem)p Black 554
+w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 16497 a Fu(f)p 7465 16497 V
+419 w(data)p Black 2297 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(user-de\257ned)f(data)j(blo)31
+b(c)-31 b(k.)p Black 0 18284 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 6814 20070 a Fu(CV)p 8046 20070 V 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 6814 21628 a
+Fu(CV)p 8046 21628 V 419 w(MEM)p 10208 21628 V 419 w(NULL)p
+Black 554 w Fw(The)f Fu(cvode)p 18685 21628 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+0 23414 a(Notes)p Black 4072 w(If)g Fu(f)p 8572 23414
+V 419 w(data)g Fw(is)g(not)h(sp)31 b(eci\257ed,)369 b(a)h
+Fu(NULL)f Fw(p)31 b(oin)-31 b(ter)370 b(is)f(passed)g(to)h(the)g
+Fl(f)488 b Fw(function.)p 0 25731 8889 45 v 0 27072 45
+1341 v 376 26740 a Fu(CVodeSetMaxOrd)p 8845 27072 V 0
+27116 8889 45 v Black 0 28476 a Fw(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeSetMaxOrder\(cvode)p 23734 28476
+349 45 v 422 w(mem,)g(maxord\);)p Black 0 30262 a Fw(Description)p
+Black 1286 w(The)357 b(function)i Fu(CVodeSetMaxOrder)h
+Fw(sp)31 b(eci\257es)356 b(the)i(maxim)-31 b(um)360 b(order)c(of)i(the)
+g(linear)g(m)-31 b(ultistep)6814 31591 y(metho)31 b(d.)p
+Black 0 33377 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 33377 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 34935 a Fu(maxord)p Black 2135
+w Fw(\()p Fu(int)p Fw(\))370 b(v)-61 b(alue)370 b(of)g(the)f(maxim)-31
+b(um)372 b(metho)31 b(d)370 b(order.)p Black 0 36721
+a(Return)f(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(is)f(one)g(of)p Black 6814 38508 a
+Fu(CV)p 8046 38508 V 419 w(SUCCESS)p Black 1554 w Fw(The)g(optional)j
+(v)-61 b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 40065 a Fu(CV)p 8046 40065 V 419 w(MEM)p 10208
+40065 V 419 w(NULL)p Black 1135 w Fw(The)f Fu(cvode)p
+19266 40065 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 6814 41623 a Fu(CV)p 8046
+41623 V 419 w(ILL)p 10208 41623 V 419 w(INPUT)p Black
+554 w Fw(The)298 b(sp)31 b(eci\257ed)298 b(v)-61 b(alue)299
+b Fu(maxord)g Fw(is)f(negativ)-31 b(e)300 b(or)e(larger)h(than)g(its)f
+(previous)h(v)-61 b(alue.)p Black 0 43409 a(Notes)p Black
+4072 w(The)270 b(default)h(v)-61 b(alue)270 b(is)f Fu(ADAMS)p
+19359 43409 V 419 w(Q)p 20359 43409 V 419 w(MAX)582 b(=)f(12)270
+b Fw(for)f(the)h(Adams-Moulton)i(metho)31 b(d)270 b(and)g
+Fu(BDF)p 44908 43409 V 419 w(Q)p 45908 43409 V 419 w(MAX)6814
+44737 y(=)581 b(5)521 b Fw(for)f(the)h(BDF)f(metho)31
+b(d.)948 b(Since)520 b Fu(maxord)i Fw(a\256ects)e(the)h(memory)h
+(requiremen)-31 b(ts)521 b(for)g(the)6814 46066 y(in)-31
+b(ternal)362 b Fs(cv)-25 b(odes)360 b Fw(memory)h(blo)31
+b(c)-31 b(k,)364 b(its)d(v)-61 b(alue)360 b(cannot)i(b)31
+b(e)359 b(increased)h(past)h(its)g(previous)f(v)-61 b(alue.)p
+0 48383 11795 45 v 0 49970 45 1587 v 376 49392 a Fu
+(CVodeSetMaxNumSteps)p 11750 49970 V 0 50014 11795 45
+v Black 0 51301 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeSetMaxNumSteps\(cvode)p 25477 51301 349 45
+v 422 w(mem,)h(mxsteps\);)p Black 0 53088 a Fw(Description)p
+Black 1286 w(The)494 b(function)h Fu(CVodeSetMaxNumSteps)h
+Fw(sp)31 b(eci\257es)493 b(the)g(maxim)-31 b(um)496 b(n)-31
+b(um)g(b)31 b(er)494 b(of)g(steps)f(to)h(b)31 b(e)6814
+54416 y(tak)-31 b(en)370 b(b)-31 b(y)370 b(the)f(solv)-31
+b(er)370 b(in)f(its)h(attempt)h(to)f(reac)-31 b(h)369
+b(the)h(next)g(output)g(time.)p Black 0 56202 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 56202 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 57760
+a Fu(mxsteps)p Black 1554 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(maxim)-31 b(um)372 b(allo)-31 b(w)g(ed)372
+b(n)-31 b(um)g(b)31 b(er)369 b(of)h(steps.)p Black 0
+59546 a(Return)f(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(is)f(one)g(of)p Black 6814 61333 a
+Fu(CV)p 8046 61333 V 419 w(SUCCESS)p Black 1554 w Fw(The)g(optional)j
+(v)-61 b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 62890 a Fu(CV)p 8046 62890 V 419 w(MEM)p 10208
+62890 V 419 w(NULL)p Black 1135 w Fw(The)f Fu(cvode)p
+19266 62890 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 6814 64448 a Fu(CV)p 8046
+64448 V 419 w(ILL)p 10208 64448 V 419 w(INPUT)p Black
+554 w(mxsteps)h Fw(is)f(non-p)31 b(ositiv)-31 b(e.)p
+Black 0 66234 a(Notes)p Black 4072 w(P)g(assing)370 b
+Fu(mxsteps)p Fw(=)309 b(0)369 b(results)g(in)g Fs(cv)-25
+b(odes)370 b Fw(using)g(the)f(default)i(v)-61 b(alue)369
+b(\(500\).)p 0 68663 12376 45 v 0 70004 45 1341 v 376
+69672 a Fu(CVodeSetMaxHnilWarns)p 12331 70004 V 0 70048
+12376 45 v Black 0 71408 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeSetMaxHnilWarns\(cvode)p 26058 71408 349 45
+v 422 w(mem,)h(mxhnil\);)p Black 0 73195 a Fw(Description)p
+Black 1286 w(The)384 b(function)g Fu(CVodeSetMaxHnilWarns)i
+Fw(sp)31 b(eci\257es)383 b(the)g(maxim)-31 b(um)386 b(n)-31
+b(um)g(b)31 b(er)384 b(of)f(messages)h(is-)6814 74523
+y(sued)369 b(b)-31 b(y)369 b(the)g(solv)-31 b(er)370
+b(w)-31 b(arning)371 b(that)f Fl(t)246 b Fw(+)g Fl(h)307
+b Fw(=)h Fl(t)368 b Fw(on)i(the)f(next)h(in)-31 b(ternal)370
+b(step.)p Black 0 76309 a(Argumen)-31 b(ts)p Black Black
+1517 w Fu(cvode)p 9789 76309 V 419 w(mem)p Black 554
+w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 77867 a Fu(mxhnil)p Black 2135
+w Fw(\()p Fu(int)p Fw(\))370 b(maxim)-31 b(um)372 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(w)-31 b(arning)371 b(messages)p
+Black Black eop
+%%Page: 39 49
+39 48 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(39)p 4000 3144 48001 45
+v Black Black 4000 6974 a Fw(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 10814 8758 a Fu(CV)p 12046 8758 349 45 v 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 10814 10315 a
+Fu(CV)p 12046 10315 V 419 w(MEM)p 14208 10315 V 419 w(NULL)p
+Black 554 w Fw(The)f Fu(cvode)p 22685 10315 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+4000 12100 a(Notes)p Black 4072 w(The)391 b(default)h(v)-61
+b(alue)391 b(is)g(10.)558 b(A)391 b(negativ)-31 b(e)393
+b(v)-61 b(alue)391 b(for)g Fu(mxhnil)h Fw(indicates)g(that)g(no)f(w)-31
+b(arning)392 b(mes-)10814 13428 y(sages)369 b(should)h(b)31
+b(e)368 b(issued.)p 4000 15739 11214 45 v 4000 17080
+45 1341 v 4376 16748 a Fu(CVodeSetStabLimDet)p 15169
+17080 V 4000 17124 11214 45 v Black 4000 18483 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetstabLimDet\(cvode)p
+28896 18483 349 45 v 422 w(mem,)h(stldet\);)p Black 4000
+20268 a Fw(Description)p Black 1286 w(The)420 b(function)g
+Fu(CVodeSetStabLimDet)i Fw(indicates)f(if)f(the)g(BDF)e(stabilit)-31
+b(y)422 b(limit)g(detection)f(al-)10814 21596 y(gorithm)371
+b(should)e(b)31 b(e)369 b(used.)492 b(See)369 b Fn(x)p
+Fw(3.4)i(for)e(further)g(details.)p Black 4000 23381
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p 13789
+23381 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p
+Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25
+b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black
+10814 24937 a Fu(stldet)p Black 2135 w Fw(\()p Fu(booleantype)p
+Fw(\))313 b(\260ag)d(con)-31 b(trolling)313 b(stabilit)-31
+b(y)313 b(limit)f(detection)g(\()p Fu(TRUE)f Fw(=)f(on;)330
+b Fu(FALSE)16435 26266 y Fw(=)369 b(o\256)86 b(\).)p
+Black 4000 28050 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 10814 29835 a Fu(CV)p 12046 29835 V 419 w(SUCCESS)p
+Black 1554 w Fw(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 10814 31391 a
+Fu(CV)p 12046 31391 V 419 w(MEM)p 14208 31391 V 419 w(NULL)p
+Black 1135 w Fw(The)f Fu(cvode)p 23266 31391 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+10814 32948 a Fu(CV)p 12046 32948 V 419 w(ILL)p 14208
+32948 V 419 w(INPUT)p Black 554 w Fw(The)g(linear)h(m)-31
+b(ultistep)371 b(metho)31 b(d)371 b(is)e(not)h(set)f(to)h
+Fu(CV)p 39687 32948 V 418 w(BDF)p Fw(.)p Black 4000 34732
+a(Notes)p Black 4072 w(The)495 b(default)h(v)-61 b(alue)496
+b(is)f Fu(FALSE)p Fw(.)g(If)g Fu(stldet)582 b(=)f(TRUE)496
+b Fw(when)f(BDF)f(is)g(used)h(and)g(the)g(metho)31 b(d)10814
+36061 y(order)445 b(is)g(greater)h(than)h(or)e(equal)i(to)f(3,)465
+b(then)446 b(an)g(in)-31 b(ternal)447 b(function,)467
+b Fu(CVsldet)p Fw(,)f(is)445 b(called)i(to)10814 37389
+y(detect)361 b(a)g(p)31 b(ossible)360 b(stabilit)-31
+b(y)363 b(limit.)492 b(If)360 b(suc)-31 b(h)360 b(a)h(limit)h(is)f
+(detected,)i(then)e(the)f(order)g(is)g(reduced.)p 4000
+39701 10052 45 v 4000 41287 45 1587 v 4376 40709 a Fu(CVodeSetInitStep)
+p 14007 41287 V 4000 41331 10052 45 v Black 4000 42618
+a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f(CVodeSetInitStep\(cvode)p
+27734 42618 349 45 v 422 w(mem,)g(hin\);)p Black 4000
+44402 a Fw(Description)p Black 1286 w(The)369 b(function)i
+Fu(CVodeSetInitStep)g Fw(sp)31 b(eci\257es)369 b(the)g(initial)j(step)d
+(size.)p Black 4000 46187 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 13789 46187 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 47743 a Fu(hin)p Black 3878
+w Fw(\()p Fu(realtype)p Fw(\))371 b(v)-61 b(alue)370
+b(of)g(the)f(initial)j(step)d(size.)p Black 4000 49528
+a(Return)g(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(is)f(one)g(of)p Black 10814 51313
+a Fu(CV)p 12046 51313 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j
+(v)-61 b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 52869 a Fu(CV)p 12046 52869 V 419 w(MEM)p
+14208 52869 V 419 w(NULL)p Black 554 w Fw(The)f Fu(cvode)p
+22685 52869 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 4000 54654 a(Notes)p Black
+4072 w(By)246 b(default,)273 b Fs(cv)-25 b(odes)247 b
+Fw(estimates)g(the)g(initial)i(step)d(size)g(to)h(b)31
+b(e)245 b(the)i(solution)h Fl(h)e Fw(of)g Fn(k)p Fw(0)p
+Fl(:)p Fw(5)p Fl(h)47319 54252 y Fk(2)47894 54654 y Fw(\304)-629
+b Fl(y)39 b Fn(k)48953 54820 y Fk(WRMS)52136 54654 y
+Fw(=)10814 55982 y(1,)370 b(where)445 b(\304)-629 b Fl(y)408
+b Fw(is)369 b(an)h(estimated)h(second)e(deriv)-61 b(ativ)-31
+b(e)371 b(of)e(the)h(solution)h(at)f(the)f(initial)j(time.)p
+4000 58294 9470 45 v 4000 59880 45 1587 v 4376 59302
+a Fu(CVodeSetMinStep)p 13426 59880 V 4000 59924 9470
+45 v Black 4000 61211 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeSetMinStep\(cvode)p 27153 61211 349 45 v 422
+w(mem,)g(hmin\);)p Black 4000 62995 a Fw(Description)p
+Black 1286 w(The)362 b(function)i Fu(CVodeSetMinStep)g
+Fw(sp)31 b(eci\257es)361 b(a)i(lo)-31 b(w)g(er)363 b(b)31
+b(ound)362 b(on)g(the)h(magnitude)h(of)f(the)f(step)10814
+64324 y(size.)p Black 4000 66108 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 13789 66108 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 67665
+a Fu(hmin)p Black 3297 w Fw(\()p Fu(realtype)p Fw(\))371
+b(minim)-31 b(um)372 b(absolute)e(v)-61 b(alue)370 b(of)g(the)f(step)g
+(size.)p Black 4000 69449 a(Return)g(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 10814 71234 a Fu(CV)p 12046 71234 V 419 w(SUCCESS)p
+Black 1554 w Fw(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 10814 72791 a
+Fu(CV)p 12046 72791 V 419 w(MEM)p 14208 72791 V 419 w(NULL)p
+Black 1135 w Fw(The)f Fu(cvode)p 23266 72791 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+10814 74347 a Fu(CV)p 12046 74347 V 419 w(ILL)p 14208
+74347 V 419 w(INPUT)p Black 554 w Fw(Either)431 b Fu(hmin)h
+Fw(is)f(nonp)31 b(ositiv)-31 b(e)433 b(or)e(it)h(exceeds)e(the)i(maxim)
+-31 b(um)433 b(allo)-31 b(w)g(able)435 b(step)18016 75675
+y(size.)p Black 4000 77460 a(Notes)p Black 4072 w(The)369
+b(default)i(v)-61 b(alue)370 b(is)f(0)p Fl(:)p Fw(0.)p
+Black Black eop
+%%Page: 40 50
+40 49 bop Black 0 2701 a Fx(40)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 5965 9470 45 v 0 7552 45 1587 v 376 6974 a Fu(CVodeSetMaxStep)p
+9426 7552 V 0 7596 9470 45 v Black 0 8876 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetMaxStep\(cvode)p
+23153 8876 349 45 v 422 w(mem,)g(hmax\);)p Black 0 10639
+a Fw(Description)p Black 1286 w(The)288 b(function)h
+Fu(CVodeSetMaxStep)h Fw(sp)31 b(eci\257es)287 b(an)h(upp)31
+b(er)287 b(b)31 b(ound)288 b(on)g(the)g(magnitude)i(of)e(the)g(step)
+6814 11968 y(size.)p Black 0 13731 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 9789 13731 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 15274
+a Fu(hmax)p Black 3297 w Fw(\()p Fu(realtype)p Fw(\))371
+b(maxim)-31 b(um)372 b(absolute)f(v)-61 b(alue)369 b(of)h(the)f(step)g
+(size.)p Black 0 17038 a(Return)g(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 6814 18801 a Fu(CV)p 8046 18801 V 419 w(SUCCESS)p
+Black 1554 w Fw(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 6814 20344 a
+Fu(CV)p 8046 20344 V 419 w(MEM)p 10208 20344 V 419 w(NULL)p
+Black 1135 w Fw(The)f Fu(cvode)p 19266 20344 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+6814 21886 a Fu(CV)p 8046 21886 V 419 w(ILL)p 10208 21886
+V 419 w(INPUT)p Black 554 w Fw(Either)336 b Fu(hmax)g
+Fw(is)g(nonp)31 b(ositiv)-31 b(e)338 b(or)d(it)i(is)e(smaller)i(than)f
+(the)g(minim)-31 b(um)338 b(allo)-31 b(w)g(able)14016
+23214 y(step)369 b(size.)p Black 0 24978 a(Notes)p Black
+4072 w(P)-31 b(ass)369 b Fu(hmax)p Fw(=)308 b(0)370 b(to)g(obtain)h
+(the)e(default)i(v)-61 b(alue)369 b Fn(1)p Fw(.)p 0 27240
+10052 45 v 0 28827 45 1587 v 376 28249 a Fu(CVodeSetStopTime)p
+10007 28827 V 0 28871 10052 45 v Black 0 30151 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetStopTime\(cvode)p
+23734 30151 349 45 v 422 w(mem,)g(tstop\);)p Black 0
+31915 a Fw(Description)p Black 1286 w(The)320 b(function)h
+Fu(CVodeSetStopTime)h Fw(sp)31 b(eci\257es)319 b(the)h(v)-61
+b(alue)321 b(of)f(the)g(indep)31 b(enden)-31 b(t)320
+b(v)-61 b(ariable)321 b Fl(t)e Fw(past)6814 33243 y(whic)-31
+b(h)370 b(the)g(solution)h(is)e(not)h(to)g(pro)31 b(ceed.)p
+Black 0 35007 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 35007 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 36549 a Fu(tstop)p Black 2716
+w Fw(\()p Fu(realtype)p Fw(\))586 b(v)-61 b(alue)585
+b(of)g(the)f(indep)31 b(enden)-31 b(t)585 b(v)-61 b(ariable)585
+b(past)f(whic)-31 b(h)586 b(the)e(solution)12435 37877
+y(should)370 b(not)g(pro)31 b(ceed.)p Black 0 39641 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(is)f(one)g(of)p Black 6814 41405 a
+Fu(CV)p 8046 41405 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(v)
+-61 b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 42947 a Fu(CV)p 8046 42947 V 419 w(MEM)p 10208
+42947 V 419 w(NULL)p Black 554 w Fw(The)f Fu(cvode)p
+18685 42947 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 0 44711 a(Notes)p Black
+4072 w(The)g(default)i(v)-61 b(alue)370 b(is)f Fn(1)p
+Fw(.)p 0 46973 14120 45 v 0 48314 45 1341 v 376 47982
+a Fu(CVodeSetMaxErrTestFails)p 14075 48314 V 0 48358
+14120 45 v Black 0 49710 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeSetMaxErrTestFails\(cvode)p 27801 49710 349
+45 v 423 w(mem,)g(maxnef\);)p Black 0 51474 a Fw(Description)p
+Black 1286 w(The)334 b(function)i Fu(CVodeSetMaxErrTestFails)h
+Fw(sp)31 b(eci\257es)334 b(the)g(maxim)-31 b(um)337 b(n)-31
+b(um)g(b)31 b(er)334 b(of)g(error)f(test)6814 52802 y(failures)370
+b(p)31 b(ermitted)370 b(in)f(attempting)k(one)c(step.)p
+Black 0 54566 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 54566 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 56108 a Fu(maxnef)p Black 2135
+w Fw(\()p Fu(int)p Fw(\))370 b(maxim)-31 b(um)372 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(error)e(test)i(failures)g(allo)-31
+b(w)g(ed)372 b(on)d(one)g(step.)p Black 0 57872 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 6814 59636 a Fu(CV)p 8046
+59636 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 61178 a Fu(CV)p 8046 61178 V 419 w(MEM)p 10208
+61178 V 419 w(NULL)p Black 554 w Fw(The)f Fu(cvode)p
+18685 61178 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 0 62942 a(Notes)p Black
+4072 w(The)g(default)i(v)-61 b(alue)370 b(is)f(7.)p 0
+65204 13539 45 v 0 66545 45 1341 v 376 66213 a Fu
+(CVodeSetMaxNonlinIters)p 13494 66545 V 0 66589 13539
+45 v Black 0 67941 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeSetMaxNonlinIters\(cvode)p 27220 67941 349
+45 v 423 w(mem,)g(maxcor\);)p Black 0 69705 a Fw(Description)p
+Black 1286 w(The)404 b(function)h Fu(CVodeSetMaxNonlinIters)i
+Fw(sp)31 b(eci\257es)404 b(the)g(maxim)-31 b(um)406 b(n)-31
+b(um)g(b)31 b(er)404 b(of)h(nonlinear)6814 71033 y(solv)-31
+b(er)370 b(iterations)h(p)31 b(ermitted)370 b(p)31 b(er)368
+b(step.)p Black 0 72797 a(Argumen)-31 b(ts)p Black Black
+1517 w Fu(cvode)p 9789 72797 V 419 w(mem)p Black 554
+w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 74339 a Fu(maxcor)p Black 2135
+w Fw(\()p Fu(int)p Fw(\))370 b(maxim)-31 b(um)372 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(nonlinear)h(solv)-31 b(er)369
+b(iterations)i(allo)-31 b(w)g(ed)372 b(p)31 b(er)368
+b(step.)p Black 0 76103 a(Return)h(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 6814 77867 a Fu(CV)p 8046 77867 V 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black Black eop
+%%Page: 41 51
+41 50 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(41)p 4000 3144 48001 45
+v Black Black 10814 6974 a Fu(CV)p 12046 6974 349 45
+v 419 w(MEM)p 14208 6974 V 419 w(NULL)p Black 554 w Fw(The)369
+b Fu(cvode)p 22685 6974 V 419 w(mem)h Fw(p)31 b(oin)-31
+b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black 4000 9001 a(Notes)p
+Black 4072 w(The)g(default)i(v)-61 b(alue)370 b(is)f(3.)p
+4000 12078 12376 45 v 4000 13418 45 1341 v 4376 13086
+a Fu(CVodeSetMaxConvFails)p 16331 13418 V 4000 13462
+12376 45 v Black 4000 14943 a Fw(Call)p Black 4848 w
+Fu(flag)582 b(=)f(CVodeSetMaxConvFails\(cvode)p 30058
+14943 349 45 v 422 w(mem,)h(maxncf\);)p Black 4000 16970
+a Fw(Description)p Black 1286 w(The)549 b(function)i
+Fu(CVodeSetMaxConvFails)h Fw(sp)31 b(eci\257es)548 b(the)i(maxim)-31
+b(um)552 b(n)-31 b(um)g(b)31 b(er)549 b(of)h(nonlinear)10814
+18298 y(solv)-31 b(er)370 b(con)-31 b(v)g(ergence)370
+b(failures)g(p)31 b(ermitted)370 b(during)f(one)h(step.)p
+Black 4000 20326 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 20326 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 22003 a Fu(maxncf)p Black
+2135 w Fw(\()p Fu(int)p Fw(\))336 b(maxim)-31 b(um)337
+b(n)-31 b(um)g(b)31 b(er)335 b(of)g(allo)-31 b(w)g(able)339
+b(nonlinear)c(solv)-31 b(er)336 b(con)-31 b(v)g(ergence)335
+b(failures)16435 23332 y(p)31 b(er)368 b(step.)p Black
+4000 25359 a(Return)h(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+10814 27386 a Fu(CV)p 12046 27386 V 419 w(SUCCESS)p Black
+973 w Fw(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 10814 29064 a
+Fu(CV)p 12046 29064 V 419 w(MEM)p 14208 29064 V 419 w(NULL)p
+Black 554 w Fw(The)f Fu(cvode)p 22685 29064 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+4000 31092 a(Notes)p Black 4072 w(The)g(default)i(v)-61
+b(alue)370 b(is)f(10.)p 4000 34168 13539 45 v 4000 35509
+45 1341 v 4376 35177 a Fu(CVodeSetNonlinConvCoef)p 17494
+35509 V 4000 35553 13539 45 v Black 4000 37033 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetNonlinConvCoef\(cvode)p
+31220 37033 349 45 v 423 w(mem,)g(nlscoef\);)p Black
+4000 39060 a Fw(Description)p Black 1286 w(The)347 b(function)h
+Fu(CVodeSetNonlinConvCoef)i Fw(sp)31 b(eci\257es)346
+b(the)h(safet)-31 b(y)348 b(factor)g(used)e(in)i(the)f(nonlin-)10814
+40389 y(ear)369 b(con)-31 b(v)g(ergence)370 b(test)g(\(see)f
+Fn(x)p Fw(3.1\).)p Black 4000 42416 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 13789 42416 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 44094
+a Fu(nlscoef)p Black 1554 w Fw(\()p Fu(realtype)p Fw(\))371
+b(co)31 b(e\261cien)-31 b(t)371 b(in)e(nonlinear)i(con)-31
+b(v)g(ergence)370 b(test.)p Black 4000 46121 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 10814 48148 a Fu(CV)p 12046
+48148 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 49826 a Fu(CV)p 12046 49826 V 419 w(MEM)p
+14208 49826 V 419 w(NULL)p Black 554 w Fw(The)f Fu(cvode)p
+22685 49826 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 4000 51854 a(Notes)p Black
+4072 w(The)g(default)i(v)-61 b(alue)370 b(is)f(0)p Fl(:)p
+Fw(1.)p 4000 54930 10052 45 v 4000 56517 45 1587 v 4376
+55939 a Fu(CVodeSetIterType)p 14007 56517 V 4000 56561
+10052 45 v Black 4000 57968 a Fw(Call)p Black 4848 w
+Fu(flag)582 b(=)f(CVodeSetIterType\(cvode)p 27734 57968
+349 45 v 422 w(mem,)g(iter\);)p Black 4000 59996 a Fw(Description)p
+Black 1286 w(The)369 b(function)i Fu(CVodeSetIterType)g
+Fw(resets)e(the)g(nonlinear)h(solv)-31 b(er)370 b(iteration)i(t)-31
+b(yp)31 b(e)369 b(to)h Fu(iter)p Fw(.)p Black 4000 62023
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p 13789
+62023 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p
+Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25
+b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black
+10814 63701 a Fu(iter)p Black 3297 w Fw(\()p Fu(int)p
+Fw(\))490 b(sp)31 b(eci\257es)489 b(the)g(t)-31 b(yp)31
+b(e)490 b(of)g(nonlinear)g(solv)-31 b(er)490 b(iteration)h(and)e(ma)-31
+b(y)491 b(b)31 b(e)489 b(either)16435 65029 y Fu(CV)p
+17667 65029 V 419 w(NEWTON)370 b Fw(or)f Fu(CV)p 24460
+65029 V 418 w(FUNCTIONAL)p Fw(.)p Black 4000 67057 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 10814 69084 a Fu(CV)p 12046
+69084 V 419 w(SUCCESS)p Black 1554 w Fw(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 70762 a Fu(CV)p 12046 70762 V 419 w(MEM)p
+14208 70762 V 419 w(NULL)p Black 1135 w Fw(The)f Fu(cvode)p
+23266 70762 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 10814 72440 a Fu(CV)p 12046
+72440 V 419 w(ILL)p 14208 72440 V 419 w(INPUT)p Black
+554 w Fw(The)g Fu(iter)h Fw(v)-61 b(alue)369 b(passed)g(is)g(neither)h
+Fu(CV)p 35462 72440 V 418 w(NEWTON)g Fw(nor)f Fu(CV)p
+42869 72440 V 419 w(FUNCTIONAL)p Fw(.)p Black 4000 74467
+a(Notes)p Black 4072 w(The)476 b(nonlinear)h(solv)-31
+b(er)476 b(iteration)j(t)-31 b(yp)31 b(e)476 b(is)g(initially)j(sp)31
+b(eci\257ed)475 b(in)i(the)f(call)h(to)f Fu(CVodeCreate)10814
+75795 y Fw(\(see)376 b Fn(x)p Fw(5.5.1\).)515 b(This)377
+b(function)g(call)g(is)f(needed)g(only)h(if)f Fu(iter)g
+Fw(is)g(b)31 b(eing)377 b(c)-31 b(hanged)377 b(from)f(its)g(v)-61
+b(alue)10814 77124 y(in)369 b(the)h(prior)f(call)h(to)g
+Fu(CVodeCreate)p Fw(.)p Black Black eop
+%%Page: 42 52
+42 51 bop Black 0 2701 a Fx(42)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 5965 11214 45 v 0 7306 45 1341 v 376 6974 a Fu
+(CVodeSetTolerances)p 11169 7306 V 0 7350 11214 45 v
+Black 0 8808 a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVodeSetTolerances\(cvode)p 24896 8808 349 45 v 422
+w(mem,)h(itol,)g(reltol,)g(abstol\);)p Black 0 10792
+a Fw(Description)p Black 1286 w(The)369 b(function)i
+Fu(CVodeSetTolerances)h Fw(resets)c(the)h(in)-31 b(tegration)372
+b(tolerances.)p Black 0 12775 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 9789 12775 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 14431 a Fu(itol)p Black 3297
+w Fw(\()p Fu(int)p Fw(\))386 b(is)e(either)g Fu(CV)p
+20938 14431 V 419 w(SS)g Fw(or)g Fu(CV)p 25436 14431
+V 419 w(SV)p Fw(,)h(where)f Fu(itol)582 b(=)f(CV)p 36155
+14431 V 419 w(SS)384 b Fw(indicates)i(scalar)e(rela-)12435
+15759 y(tiv)-31 b(e)337 b(error)e(tolerance)j(and)e(scalar)g(absolute)i
+(error)d(tolerance,)344 b(while)337 b Fu(itol)p Fw(=)p
+Fu(CV)p 46488 15759 V 420 w(SV)12435 17088 y Fw(indicates)278
+b(scalar)f(relativ)-31 b(e)279 b(error)c(tolerance)j(and)f(v)-31
+b(ector)277 b(absolute)h(error)e(tolerance.)12435 18416
+y(The)371 b(latter)g(c)-31 b(hoice)372 b(is)e(imp)31
+b(ortan)-31 b(t)373 b(when)d(the)h(absolute)g(error)f(tolerance)h
+(needs)f(to)12435 19744 y(b)31 b(e)369 b(di\256eren)-31
+b(t)369 b(for)g(eac)-31 b(h)370 b(comp)31 b(onen)-31
+b(t)371 b(of)f(the)f(ODE.)p Black 6814 21400 a Fu(reltol)p
+Black 2135 w Fw(\()p Fu(realtype)p Fw(\))i(the)f(relativ)-31
+b(e)371 b(error)d(tolerance.)p Black 6814 23056 a Fu(abstol)p
+Black 2135 w Fw(\()p Fu(void)582 b(*)p Fw(\))548 b(is)f(a)h(p)31
+b(oin)-31 b(ter)548 b(to)g(the)g(absolute)g(error)f(tolerance.)1028
+b(If)547 b Fu(itol)p Fw(=)p Fu(CV)p 46181 23056 V 419
+w(SS)p Fw(,)12435 24384 y Fu(abstol)335 b Fw(m)-31 b(ust)336
+b(b)31 b(e)334 b(a)h(p)31 b(oin)-31 b(ter)336 b(to)f(a)g
+Fu(realtype)h Fw(v)-61 b(ariable.)482 b(If)335 b Fu(itol)p
+Fw(=)p Fu(CV)p 42360 24384 V 419 w(SV)p Fw(,)g Fu(abstol)12435
+25713 y Fw(m)-31 b(ust)370 b(b)31 b(e)369 b(an)g Fu(N)p
+18873 25713 V 419 w(Vector)g Fw(v)-61 b(ariable.)p Black
+0 27696 a(Return)369 b(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+6814 29680 a Fu(CV)p 8046 29680 V 419 w(SUCCESS)p Black
+1554 w Fw(The)g(tolerances)h(ha)-31 b(v)g(e)370 b(b)31
+b(een)369 b(successfully)g(set.)p Black 6814 31335 a
+Fu(CV)p 8046 31335 V 419 w(MEM)p 10208 31335 V 419 w(NULL)p
+Black 1135 w Fw(The)g Fu(cvode)p 19266 31335 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+6814 32991 a Fu(CV)p 8046 32991 V 419 w(ILL)p 10208 32991
+V 419 w(INPUT)p Black 554 w Fw(An)g(input)h(argumen)-31
+b(t)371 b(has)e(an)g(illegal)j(v)-61 b(alue.)p Black
+0 34975 a(Notes)p Black 4072 w(The)256 b(in)-31 b(tegration)258
+b(tolerances)e(are)g(initially)j(sp)31 b(eci\257ed)255
+b(in)h(the)f(call)i(to)f Fu(CVodeMalloc)h Fw(\(see)f
+Fn(x)p Fw(5.5.1\).)6814 36303 y(This)346 b(function)h(call)g(is)e
+(needed)g(only)i(if)f(the)g(tolerances)g(are)f(b)31 b(eing)346
+b(c)-31 b(hanged)347 b(from)f(their)g(v)-61 b(alues)6814
+37631 y(b)31 b(ew)-31 b(een)369 b(successiv)g(calls)h(to)g
+Fu(CVode)p Fw(.)7942 40177 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+
+
+ at endspecial Fd(!)1429 b Fw(It)300 b(is)h(the)g(user's)e(resp)31
+b(onsibilit)-31 b(y)302 b(to)g(pro)-31 b(vide)301 b(compatible)i
+Fu(itol)e Fw(and)g Fu(abstol)g Fw(argumen)-31 b(ts.)7942
+43142 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1497
+b Fw(It)370 b(is)f(illegal)j(to)e(call)g Fu(CVodeSetTolerances)i
+Fw(b)31 b(efore)369 b(a)g(call)i(to)e Fu(CVodeMalloc)p
+Fw(.)p 0 46336 8308 45 v 0 47677 45 1341 v 376 47345
+a Fu(CVodeSetEwtFn)p 8263 47677 V 0 47721 8308 45 v Black
+0 49179 a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVodeSetEwtFn\(cvode)p 21991 49179 349 45 v 421 w(mem,)h(efun,)g(e)p
+29386 49179 V 418 w(data\);)p Black 0 51163 a Fw(Description)p
+Black 1286 w(The)456 b(function)g Fu(CVodeSetEwtFn)h
+Fw(sp)31 b(eci\257es)455 b(the)h(user-de\257ned)e(function)j(to)f(b)31
+b(e)455 b(used)f(in)i(com-)6814 52491 y(puting)370 b(the)g(error)e(w)
+-31 b(eigh)g(t)371 b(v)-31 b(ector)370 b Fl(W)523 b Fw(in)370
+b(\(3.7\).)p Black 0 54474 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 9789 54474 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 56130 a Fu(efun)p Black 3297
+w Fw(\()p Fu(CVEwtFn)p Fw(\))371 b(is)e(the)h Fs(C)f
+Fw(function)h(whic)-31 b(h)371 b(de\257nes)d(the)h Fu(ewt)h
+Fw(v)-31 b(ector)370 b(\(see)f Fn(x)p Fw(5.6.2\).)p Black
+6814 57786 a Fu(e)p 7465 57786 V 419 w(data)p Black 2297
+w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(user)e(data)i(passed)f(to)h Fu(efun)g
+Fw(ev)-31 b(ery)369 b(time)h(it)g(is)f(called.)p Black
+0 59770 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+6814 61753 a Fu(CV)p 8046 61753 V 419 w(SUCCESS)p Black
+973 w Fw(The)g(function)i Fu(efun)e Fw(and)h(data)g(p)31
+b(oin)-31 b(ter)370 b Fu(e)p 31880 61753 V 419 w(data)f
+Fw(ha)-31 b(v)g(e)370 b(b)31 b(een)369 b(successfully)g(set.)p
+Black 6814 63409 a Fu(CV)p 8046 63409 V 419 w(MEM)p 10208
+63409 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+18685 63409 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 0 65392 a(Notes)p Black
+4072 w(This)h(function)g(can)g(b)31 b(e)368 b(called)j(b)31
+b(et)-31 b(w)g(een)370 b(successiv)-31 b(e)369 b(calls)h(to)g
+Fu(CVode)p Fw(.)6814 67376 y(If)f(not)h(needed,)f(pass)g
+Fu(NULL)h Fw(for)f Fu(edata)p Fw(.)7942 70136 y @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1497 b Fw(It)370 b(is)f(illegal)j(to)e
+(call)g Fu(CVodeSetEwtFn)h Fw(b)31 b(efore)369 b(a)g(call)i(to)f
+Fu(CVodeMalloc)p Fw(.)0 73976 y Fx(Linear)424 b(solv)-35
+b(er)425 b(optional)g(input)g(functions)0 76217 y Fw(The)330
+b(linear)g(solv)-31 b(er)330 b(mo)31 b(dules,)338 b(with)331
+b(one)f(exception,)339 b(allo)-31 b(w)332 b(for)d(v)-61
+b(arious)330 b(optional)i(inputs)e(whic)-31 b(h)330 b(are)g(describ)31
+b(ed)0 77546 y(here.)492 b(The)369 b(diagonal)j(linear)e(solv)-31
+b(er)370 b(mo)31 b(dule)370 b(has)f(no)g(optional)j(inputs.)p
+Black Black eop
+%%Page: 43 53
+43 52 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(43)p 4000 3144 48001 45
+v Black 4000 6974 a(Dense)448 b(Linear)f(solv)-35 b(er.)1107
+b Fw(The)388 b Fs(cvdense)i Fw(solv)-31 b(er)389 b(needs)f(a)h
+(function)g(to)h(compute)f(a)g(dense)f(appro)-31 b(ximation)4000
+8302 y(to)380 b(the)g(Jacobian)h(matrix)g Fl(J)106 b
+Fw(\()p Fl(t;)184 b(y)40 b Fw(\).)525 b(This)380 b(function)h(m)-31
+b(ust)380 b(b)31 b(e)379 b(of)h(t)-31 b(yp)31 b(e)380
+b Fu(CVDenseJacFn)p Fw(.)525 b(The)380 b(user)e(can)i(supply)4000
+9631 y(his/her)374 b(o)-31 b(wn)374 b(dense)g(Jacobian)h(function,)i
+(or)c(use)h(the)g(default)h(di\256erence)e(quotien)-31
+b(t)376 b(function)f Fu(CVDenseDQJac)4000 10959 y Fw(that)397
+b(comes)f(with)h(the)f Fs(cvdense)g Fw(solv)-31 b(er.)573
+b(T)-92 b(o)396 b(sp)31 b(ecify)396 b(a)f(user-supplied)h(Jacobian)h
+(function)g Fu(djac)f Fw(and)g(asso-)4000 12287 y(ciated)360
+b(user)e(data)i Fu(jac)p 13909 12287 349 45 v 419 w(data)p
+Fw(,)i Fs(cvdense)e Fw(pro)-31 b(vides)359 b(the)g(function)h
+Fu(CVDenseSetJacFn)p Fw(.)492 b(The)359 b Fs(cvdense)g
+Fw(solv)-31 b(er)4000 13616 y(passes)383 b(the)h(p)31
+b(oin)-31 b(ter)385 b Fu(jac)p 14919 13616 V 419 w(data)f
+Fw(to)h(its)f(dense)f(Jacobian)j(function.)538 b(This)384
+b(allo)-31 b(ws)386 b(the)f(user)d(to)j(create)f(an)g(arbi-)4000
+14944 y(trary)405 b(structure)f(with)i(relev)-61 b(an)-31
+b(t)406 b(problem)f(data)h(and)g(access)e(it)i(during)f(the)g
+(execution)h(of)f(the)g(user-supplied)4000 16272 y(Jacobian)289
+b(function,)306 b(without)290 b(using)d(global)j(data)f(in)f(the)f
+(program.)467 b(The)288 b(p)31 b(oin)-31 b(ter)288 b
+Fu(jac)p 41208 16272 V 419 w(data)g Fw(ma)-31 b(y)288
+b(b)31 b(e)287 b(iden)-31 b(tical)4000 17601 y(to)370
+b Fu(f)p 6004 17601 V 419 w(data)p Fw(,)g(if)f(the)h(latter)g(w)-31
+b(as)370 b(sp)31 b(eci\257ed)369 b(through)h Fu(CVodeSetFdata)p
+Fw(.)p 4000 19377 9470 45 v 4000 20717 45 1341 v 4376
+20385 a Fu(CVDenseSetJacFn)p 13426 20717 V 4000 20761
+9470 45 v Black 4000 22114 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVDenseSetJacFn\(cvode)p 27153 22114 349 45 v 422
+w(mem,)g(djac,)h(jac)p 35710 22114 V 419 w(data\);)p
+Black 4000 23777 a Fw(Description)p Black 1286 w(The)407
+b(function)h Fu(CVDenseSetJacFn)g Fw(sp)31 b(eci\257es)406
+b(the)h(dense)f(Jacobian)i(appro)-31 b(ximation)410 b(function)10814
+25106 y(to)370 b(b)31 b(e)369 b(used)f(and)i(the)f(p)31
+b(oin)-31 b(ter)370 b(to)g(user)e(data.)p Black 4000
+26769 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+13789 26769 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fs(cv)-25 b(ode)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 10814 28211 a Fu(djac)p Black 3297 w Fw(\()p Fu(CVDenseJacFn)p
+Fw(\))372 b(user-de\257ned)c(dense)g(Jacobian)j(appro)-31
+b(ximation)373 b(function.)p Black 10814 29654 a Fu(jac)p
+12627 29654 V 419 w(data)p Black 1135 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(user-de\257ned)
+f(data)j(structure.)p Black 4000 31317 a(Return)e(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 10814 32981 a Fu(CVDENSE)p
+14951 32981 V 419 w(SUCCESS)p Black 1555 w Fw(The)g(optional)j(v)-61
+b(alue)369 b(has)h(b)31 b(een)368 b(successfully)h(set.)p
+Black 10814 34423 a Fu(CVDENSE)p 14951 34423 V 419 w(MEM)p
+17113 34423 V 419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p
+26172 34423 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 10814 35865 a Fu(CVDENSE)p
+14951 35865 V 419 w(LMEM)p 17694 35865 V 419 w(NULL)p
+Black 555 w Fw(The)f Fs(cvdense)h Fw(linear)g(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 37528 a(Notes)p Black 4072 w(By)398 b(default,)406
+b Fs(cvdense)399 b Fw(uses)e(the)h(di\256erence)f(quotien)-31
+b(t)400 b(function)f Fu(CVDenseDQJac)p Fw(.)579 b(If)398
+b Fu(NULL)g Fw(is)10814 38857 y(passed)369 b(to)h Fu(djac)p
+Fw(,)g(this)f(default)i(function)f(is)g(used.)10814 40520
+y(The)f(function)i(t)-31 b(yp)31 b(e)370 b Fu(CVDenseJacFn)g
+Fw(is)g(describ)31 b(ed)368 b(in)h Fn(x)p Fw(5.6.3.)4000
+43705 y Fx(Band)444 b(Linear)h(solv)-35 b(er.)1107 b
+Fw(The)387 b Fs(cvband)g Fw(solv)-31 b(er)388 b(needs)e(a)h(function)h
+(to)g(compute)g(a)f(banded)g(appro)-31 b(ximation)4000
+45033 y(to)411 b(the)f(Jacobian)i(matrix)f Fl(J)106 b
+Fw(\()p Fl(t;)184 b(y)40 b Fw(\).)617 b(This)410 b(function)i(m)-31
+b(ust)411 b(b)31 b(e)409 b(of)i(t)-31 b(yp)31 b(e)410
+b Fu(CVBandJacFn)p Fw(.)617 b(The)410 b(user)f(can)i(supply)4000
+46362 y(his/her)298 b(o)-31 b(wn)299 b(banded)f(Jacobian)i(appro)-31
+b(ximation)302 b(function,)314 b(or)298 b(use)g(the)g(default)i
+(di\256erence)d(quotien)-31 b(t)300 b(function)4000 47690
+y Fu(CVBandDQJac)286 b Fw(that)f(comes)g(with)g(the)g
+Fs(cvband)g Fw(solv)-31 b(er.)464 b(T)-92 b(o)285 b(sp)31
+b(ecify)285 b(a)f(user-supplied)g(Jacobian)i(function)f
+Fu(bjac)4000 49019 y Fw(and)392 b(asso)31 b(ciated)393
+b(user)e(data)i Fu(jac)p 18194 49019 V 419 w(data)p Fw(,)398
+b Fs(cvband)392 b Fw(pro)-31 b(vides)393 b(the)f(function)h
+Fu(CVBandSetJacFn)p Fw(.)563 b(The)392 b Fs(cvband)4000
+50347 y Fw(solv)-31 b(er)372 b(passes)e(the)h(p)31 b(oin)-31
+b(ter)372 b Fu(jac)p 18028 50347 V 419 w(data)f Fw(to)h(its)g(banded)f
+(Jacobian)h(appro)-31 b(ximation)375 b(function.)500
+b(This)371 b(allo)-31 b(ws)374 b(the)4000 51675 y(user)367
+b(to)h(create)g(an)g(arbitrary)g(structure)f(with)i(relev)-61
+b(an)-31 b(t)368 b(problem)h(data)f(and)g(access)f(it)i(during)f(the)f
+(execution)4000 53004 y(of)518 b(the)g(user-supplied)f(Jacobian)i
+(function,)556 b(without)520 b(using)d(global)j(data)f(in)e(the)h
+(program.)938 b(The)518 b(p)31 b(oin)-31 b(ter)4000 54332
+y Fu(jac)p 5813 54332 V 419 w(data)369 b Fw(ma)-31 b(y)371
+b(b)31 b(e)369 b(iden)-31 b(tical)371 b(to)f Fu(f)p 19223
+54332 V 419 w(data)p Fw(,)g(if)f(the)h(latter)g(w)-31
+b(as)370 b(sp)31 b(eci\257ed)369 b(through)h Fu(CVodeSetFdata)p
+Fw(.)p 4000 56108 8889 45 v 4000 57449 45 1341 v 4376
+57117 a Fu(CVBandSetJacFn)p 12845 57449 V 4000 57493
+8889 45 v Black 4000 58845 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVBandSetJacFn\(cvode)p 26572 58845 349 45 v 421
+w(mem,)h(bjac,)g(jac)p 35129 58845 V 419 w(data\);)p
+Black 4000 60509 a Fw(Description)p Black 1286 w(The)373
+b(function)g Fu(CVBandSetJacFn)i Fw(sp)31 b(eci\257es)371
+b(the)i(banded)f(Jacobian)i(appro)-31 b(ximation)376
+b(function)10814 61837 y(to)370 b(b)31 b(e)369 b(used)f(and)i(the)f(p)
+31 b(oin)-31 b(ter)370 b(to)g(user)e(data.)p Black 4000
+63500 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+13789 63500 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fs(cv)-25 b(ode)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 10814 64943 a Fu(bjac)p Black 3297 w Fw(\()p Fu(CVBandJacFn)p
+Fw(\))372 b(user-de\257ned)c(banded)h(Jacobian)i(appro)-31
+b(ximation)373 b(function.)p Black 10814 66385 a Fu(jac)p
+12627 66385 V 419 w(data)p Black 1135 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(user-de\257ned)
+f(data)j(structure.)p Black 4000 68048 a(Return)e(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 10814 69712 a Fu(CVBAND)p
+14370 69712 V 419 w(SUCCESS)p Black 1554 w Fw(The)h(optional)i(v)-61
+b(alue)369 b(has)g(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 71154 a Fu(CVBAND)p 14370 71154 V 419 w(MEM)p
+16532 71154 V 419 w(NULL)p Black 1135 w Fw(The)h Fu(cvode)p
+25591 71154 V 419 w(mem)f Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 10814 72596 a Fu(CVBAND)p
+14370 72596 V 419 w(LMEM)p 17113 72596 V 419 w(NULL)p
+Black 554 w Fw(The)h Fs(cvband)f Fw(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 74260 a(Notes)p Black 4072 w(By)473 b(default,)502
+b Fs(cvband)473 b Fw(uses)f(the)i(di\256erence)f(quotien)-31
+b(t)475 b(function)g Fu(CVBandDQJac)p Fw(.)806 b(If)473
+b Fu(NULL)h Fw(is)10814 75588 y(passed)369 b(to)h Fu(bjac)p
+Fw(,)g(this)f(default)i(function)f(is)g(used.)10814 77252
+y(The)f(function)i(t)-31 b(yp)31 b(e)370 b Fu(CVBandJacFn)g
+Fw(is)f(describ)31 b(ed)369 b(in)g Fn(x)p Fw(5.6.4.)p
+Black Black eop
+%%Page: 44 54
+44 53 bop Black 0 2701 a Fx(44)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 6974 a(SPGMR)401 b(Linear)g(solv)-35 b(er.)1107
+b Fw(If)348 b(an)-31 b(y)350 b(t)-31 b(yp)31 b(e)349
+b(of)g(preconditioning)i(is)d(to)i(b)31 b(e)348 b(done)h(within)h(the)f
+Fs(spgmr)e Fw(metho)31 b(d,)0 8302 y(then)488 b(the)g(user)f(m)-31
+b(ust)488 b(supply)g(a)h(preconditioner)g(solv)-31 b(e)488
+b(function)i Fu(psolve)e Fw(and)g(sp)31 b(ecify)488 b(its)g(name)h
+(through)0 9631 y(a)455 b(call)g(to)g Fu(CVSpgmrSetPreconditioner)p
+Fw(.)752 b(The)454 b(ev)-61 b(aluation)457 b(and)e(prepro)31
+b(cessing)453 b(of)i(an)-31 b(y)455 b(Jacobian-related)0
+10959 y(data)294 b(needed)f(b)-31 b(y)294 b(the)f(user's)g
+(preconditioner)h(solv)-31 b(e)294 b(function)h(is)e(done)h(in)f(the)h
+(optional)i(user-supplied)c(function)0 12287 y Fu(psetup)p
+Fw(.)490 b(Both)360 b(of)g(these)g(functions)g(are)g(fully)g(sp)31
+b(eci\257ed)359 b(in)h Fn(x)p Fw(5.6.)491 b(If)359 b(used,)i(the)f
+Fu(psetup)g Fw(function)h(should)f(also)0 13616 y(b)31
+b(e)514 b(sp)31 b(eci\257ed)515 b(in)g(the)g(call)h(to)g
+Fu(CVSpgmrSetPreconditioner)p Fw(.)933 b(Optionally)-92
+b(,)554 b(the)515 b Fs(cvspgmr)f Fw(solv)-31 b(er)516
+b(passes)0 14944 y(the)421 b(p)31 b(oin)-31 b(ter)421
+b(it)g(receiv)-31 b(es)420 b(through)i Fu(CVSpgmrSetPreconditioner)h
+Fw(to)f(the)e(preconditioner)i(setup)e(and)h(solv)-31
+b(e)0 16272 y(functions.)829 b(This)481 b(allo)-31 b(ws)483
+b(the)e(user)f(to)i(create)f(an)g(arbitrary)h(structure)e(with)i(relev)
+-61 b(an)-31 b(t)482 b(problem)f(data)i(and)0 17601 y(access)g(it)g
+(during)h(the)f(execution)h(of)g(the)f(user-supplied)g(preconditioner)h
+(functions)g(without)h(using)f(global)0 18929 y(data)466
+b(in)g(the)f(program.)782 b(The)466 b(p)31 b(oin)-31
+b(ter)466 b Fu(p)p 18095 18929 349 45 v 418 w(data)g
+Fw(ma)-31 b(y)466 b(b)31 b(e)465 b(iden)-31 b(tical)468
+b(to)e Fu(f)p 31985 18929 V 418 w(data)p Fw(,)491 b(if)465
+b(the)h(latter)g(w)-31 b(as)466 b(sp)31 b(eci\257ed)0
+20257 y(through)370 b Fu(CVodeSetFdata)p Fw(.)1660 21627
+y(The)400 b Fs(cvspgmr)e Fw(solv)-31 b(er)399 b(requires)f(a)h
+(function)i(to)e(compute)h(an)g(appro)-31 b(ximation)402
+b(to)e(the)f(pro)31 b(duct)399 b(b)31 b(et)-31 b(w)g(een)0
+22955 y(the)357 b(Jacobian)h(matrix)f Fl(J)106 b Fw(\()p
+Fl(t;)184 b(y)40 b Fw(\))358 b(and)f(a)f(v)-31 b(ector)358
+b Fl(v)40 b Fw(.)487 b(The)357 b(user)e(can)i(supply)f(his/her)g(o)-31
+b(wn)358 b(Jacobian)g(times)f(v)-31 b(ector)0 24284 y(appro)g(ximation)
+394 b(function,)k(or)391 b(use)f(the)g(di\256erence)g(quotien)-31
+b(t)393 b(function)f Fu(CVSpgmrDQJtimes)h Fw(that)f(comes)f(with)0
+25612 y(the)456 b Fs(cvspgmr)f Fw(solv)-31 b(er.)752
+b(A)456 b(user-de\257ned)f(Jacobian-v)-31 b(ector)458
+b(function)f(m)-31 b(ust)456 b(b)31 b(e)455 b(of)i(t)-31
+b(yp)31 b(e)456 b Fu(CVSpgmrJtimesFn)0 26940 y Fw(and)311
+b(can)g(b)31 b(e)311 b(sp)31 b(eci\257ed)310 b(through)i(a)f(call)h(to)
+f Fu(CVSpgmrSetJacTimesVecFn)j Fw(\(see)d Fn(x)p Fw(5.6)h(for)f(sp)31
+b(eci\257cation)312 b(details\).)0 28269 y(As)505 b(with)i(the)f
+(preconditioner)h(user)e(data)h(structure)g Fu(p)p 24610
+28269 V 418 w(data)p Fw(,)541 b(the)506 b(user)e(can)i(also)h(sp)31
+b(ecify)506 b(in)-31 b(t)506 b(the)g(call)h(to)0 29597
+y Fu(CVSpgmrSetJacFn)p Fw(,)359 b(a)353 b(p)31 b(oin)-31
+b(ter)354 b(to)f(a)g(user-de\257ned)f(data)i(structure,)i
+Fu(jac)p 31832 29597 V 419 w(data)p Fw(,)h(whic)-31 b(h)354
+b(the)f Fs(cvspgmr)f Fw(solv)-31 b(er)0 30925 y(passes)423
+b(to)h(the)g(Jacobian)h(times)f(v)-31 b(ector)424 b(function)h
+Fu(jtimes)f Fw(eac)-31 b(h)424 b(time)h(it)f(is)g(called.)657
+b(The)423 b(p)31 b(oin)-31 b(ter)425 b Fu(jac)p 45327
+30925 V 418 w(data)0 32254 y Fw(ma)-31 b(y)370 b(b)31
+b(e)369 b(iden)-31 b(tical)372 b(to)e Fu(p)p 10368 32254
+V 418 w(data)g Fw(and/or)g Fu(f)p 17754 32254 V 418 w(data)p
+Fw(.)p 0 34453 14701 45 v 0 36039 45 1587 v 376 35461
+a Fu(CVSpgmrSetPreconditioner)p 14656 36039 V 0 36083
+14701 45 v Black 0 37404 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVSpgmrSetPrecSolveFn\(cvode)p 26639 37404 349
+45 v 422 w(mem,)h(psolve,)g(psetup,)h(p)p 39847 37404
+V 418 w(data\);)p Black 0 39257 a Fw(Description)p Black
+1286 w(The)419 b(function)i Fu(CVSpgmrSet)f Fw(sp)31
+b(eci\257es)419 b(the)g(preconditioner)h(setup)f(and)g(solv)-31
+b(e)420 b(functions)h(and)6814 40586 y(the)369 b(p)31
+b(oin)-31 b(ter)370 b(to)g(user)e(data.)p Black 0 42439
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p 9789
+42439 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p
+Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25
+b(ode)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814
+44030 a Fu(psolve)p Black 2135 w Fw(\()p Fu(CVSpgmrPrecSolveFn)p
+Fw(\))373 b(user-de\257ned)368 b(preconditioner)i(solv)-31
+b(e)370 b(function.)p Black 6814 45621 a Fu(psetup)p
+Black 2135 w Fw(\()p Fu(CVSpgmrPrecSetupFn)p Fw(\))j(user-de\257ned)368
+b(preconditioner)i(setup)f(function.)p Black 6814 47212
+a Fu(p)p 7465 47212 V 419 w(data)p Black 2297 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f(user-de\257ned)f(data)j(structure.)p Black
+0 49065 a(Return)e(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+6814 50918 a Fu(CVSPGMR)p 10951 50918 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(v)-61 b(alue)369 b(has)h(b)31
+b(een)368 b(successfully)h(set.)p Black 6814 52509 a
+Fu(CVSPGMR)p 10951 52509 V 419 w(MEM)p 13113 52509 V
+419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p 22172 52509
+V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p
+Fw(.)p Black 6814 54100 a Fu(CVSPGMR)p 10951 54100 V
+419 w(LMEM)p 13694 54100 V 419 w(NULL)p Black 555 w Fw(The)f
+Fs(cvspgmr)f Fw(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)p Black 0 55954 a(Notes)p Black
+4072 w(The)507 b(function)h(t)-31 b(yp)31 b(e)508 b Fu
+(CVSpgmrPrecSolveFn)h Fw(is)e(describ)31 b(ed)506 b(in)h
+Fn(x)p Fw(5.6.6.)908 b(The)507 b(function)h(t)-31 b(yp)31
+b(e)6814 57282 y Fu(CVSpgmrPrecSetupFn)372 b Fw(is)d(describ)31
+b(ed)368 b(in)i Fn(x)p Fw(5.6.7.)p 0 59810 14120 45 v
+0 61397 45 1587 v 376 60819 a Fu(CVSpgmrSetJacTimesVecFn)p
+14075 61397 V 0 61441 14120 45 v Black 0 62762 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVSpgmrSetJacTimesVecFn\(cvode)p
+27801 62762 349 45 v 423 w(mem,)g(jtimes,)i(jac)p 37522
+62762 V 419 w(data\);)p Black 0 64615 a Fw(Description)p
+Black 1286 w(The)268 b(function)h Fu(CVSpgmrSetJacTimesFn)h
+Fw(sp)31 b(eci\257es)267 b(the)g(Jacobian-v)-31 b(ector)270
+b(function)f(to)f(b)31 b(e)267 b(used)6814 65943 y(and)369
+b(the)h(p)31 b(oin)-31 b(ter)370 b(to)g(user)e(data.)p
+Black 0 67797 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 67797 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(ode)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 69388 a Fu(jtimes)p Black 2135
+w Fw(\()p Fu(CVSpgmrJacTimesVecFn)p Fw(\))373 b(user-de\257ned)368
+b(Jacobian-v)-31 b(ector)372 b(pro)31 b(duct)369 b(function.)p
+Black 6814 70978 a Fu(jac)p 8627 70978 V 419 w(data)p
+Black 1135 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f(user-de\257ned)f(data)j(structure.)p
+Black 0 72832 a(Return)e(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+6814 74685 a Fu(CVSPGMR)p 10951 74685 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(v)-61 b(alue)369 b(has)h(b)31
+b(een)368 b(successfully)h(set.)p Black 6814 76276 a
+Fu(CVSPGMR)p 10951 76276 V 419 w(MEM)p 13113 76276 V
+419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p 22172 76276
+V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p
+Fw(.)p Black 6814 77867 a Fu(CVSPGMR)p 10951 77867 V
+419 w(LMEM)p 13694 77867 V 419 w(NULL)p Black 555 w Fw(The)f
+Fs(cvspgmr)f Fw(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)p Black Black eop
+%%Page: 45 55
+45 54 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(45)p 4000 3144 48001 45
+v Black Black 4000 6974 a Fw(Notes)p Black 4072 w(By)318
+b(default,)330 b Fs(cvspgmr)317 b Fw(uses)g(the)h(di\256erence)g
+(quotien)-31 b(t)320 b(function)f Fu(CVSpgmrDQJtimes)p
+Fw(.)478 b(If)317 b Fu(NULL)10814 8302 y Fw(is)369 b(passed)g(to)h
+Fu(jtimes)p Fw(,)g(this)g(default)g(function)h(is)e(used.)10814
+10080 y(The)g(function)i(t)-31 b(yp)31 b(e)370 b Fu
+(CVSpgmrJacTimesVecFn)i Fw(is)d(describ)31 b(ed)368 b(in)h
+Fn(x)p Fw(5.6.5.)p 4000 12368 10052 45 v 4000 13955 45
+1587 v 4376 13376 a Fu(CVSpgmrSetGSType)p 14007 13955
+V 4000 13999 10052 45 v Black 4000 15281 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVSpgmrSetGSType\(cvode)p
+27734 15281 349 45 v 422 w(mem,)g(gstype\);)p Black 4000
+17059 a Fw(Description)p Black 1286 w(The)443 b(function)h
+Fu(CVSpgmrSetGSType)i Fw(sp)31 b(eci\257es)442 b(the)h(t)-31
+b(yp)31 b(e)443 b(of)h(Gram-Sc)-31 b(hmidt)444 b(orthogonaliza-)10814
+18387 y(tion)521 b(to)g(b)31 b(e)520 b(used.)945 b(This)520
+b(m)-31 b(ust)521 b(b)31 b(e)520 b(one)g(of)h(the)f(en)-31
+b(umeration)522 b(constan)-31 b(ts)521 b Fu(MODIFIED)p
+48981 18387 V 420 w(GS)f Fw(or)10814 19715 y Fu(CLASSICAL)p
+16113 19715 V 420 w(GS)p Fw(.)264 b(These)f(corresp)31
+b(ond)262 b(to)j(using)e(mo)31 b(di\257ed)265 b(Gram-Sc)-31
+b(hmidt)264 b(and)g(classical)h(Gram-)10814 21044 y(Sc)-31
+b(hmidt,)371 b(resp)31 b(ectiv)-31 b(ely)-92 b(.)p Black
+4000 22821 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+13789 22821 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 10814 24374 a Fu(gstype)p Black 2135 w Fw(\()p
+Fu(int)p Fw(\))370 b(t)-31 b(yp)31 b(e)370 b(of)g(Gram-Sc)-31
+b(hmidt)371 b(orthogonalization.)p Black 4000 26151 a(Return)e(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 10814 27929 a Fu(CVSPGMR)p
+14951 27929 V 419 w(SUCCESS)p Black 1555 w Fw(The)g(optional)j(v)-61
+b(alue)369 b(has)h(b)31 b(een)368 b(successfully)h(set.)p
+Black 10814 29481 a Fu(CVSPGMR)p 14951 29481 V 419 w(MEM)p
+17113 29481 V 419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p
+26172 29481 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 10814 31034 a Fu(CVSPGMR)p
+14951 31034 V 419 w(LMEM)p 17694 31034 V 419 w(NULL)p
+Black 555 w Fw(The)f Fs(cvspgmr)f Fw(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 10814 32587 a Fu(CVSPGMR)p 14951 32587 V 419 w(ILL)p
+17113 32587 V 419 w(INPUT)p Black 555 w Fw(The)h(Gram-Sc)-31
+b(hmidt)371 b(orthogonalization)j(t)-31 b(yp)31 b(e)370
+b Fu(gstype)g Fw(is)f(not)h(v)-61 b(alid.)p Black 4000
+34364 a(Notes)p Black 4072 w(The)369 b(default)i(v)-61
+b(alue)370 b(is)f Fu(MODIFIED)p 25501 34364 V 419 w(GS)p
+Fw(.)p 4000 36653 8889 45 v 4000 38239 45 1587 v 4376
+37661 a Fu(CVSpgmrSetDelt)p 12845 38239 V 4000 38283
+8889 45 v Black 4000 39566 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVSpgmrSetDelt\(cvode)p 26572 39566 349 45 v 421
+w(mem,)h(delt\);)p Black 4000 41344 a Fw(Description)p
+Black 1286 w(The)360 b(function)h Fu(CVSpgmrSetDelt)h
+Fw(sp)31 b(eci\257es)359 b(the)i(factor)f(b)-31 b(y)361
+b(whic)-31 b(h)360 b(the)h(GMRES)e(con)-31 b(v)g(ergence)10814
+42672 y(test)370 b(constan)-31 b(t)370 b(is)f(reduced)g(from)h(the)f
+(Newton)i(iteration)g(test)f(constan)-31 b(t.)p Black
+4000 44449 a(Argumen)g(ts)p Black Black 1517 w Fu(cvode)p
+13789 44449 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 10814 46002 a Fu(delt)p Black 3297 w Fw(\()p Fu(realtype)p
+Fw(\))371 b(ratio)g(b)31 b(et)-31 b(w)g(een)370 b(linear)g(and)f
+(nonlinear)i(tolerances.)p Black 4000 47779 a(Return)e(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 10814 49557 a Fu(CVSPGMR)p
+14951 49557 V 419 w(SUCCESS)p Black 1555 w Fw(The)g(optional)j(v)-61
+b(alue)369 b(has)h(b)31 b(een)368 b(successfully)h(set.)p
+Black 10814 51110 a Fu(CVSPGMR)p 14951 51110 V 419 w(MEM)p
+17113 51110 V 419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p
+26172 51110 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 10814 52663 a Fu(CVSPGMR)p
+14951 52663 V 419 w(LMEM)p 17694 52663 V 419 w(NULL)p
+Black 555 w Fw(The)f Fs(cvspgmr)f Fw(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 10814 54215 a Fu(CVSPGMR)p 14951 54215 V 419 w(ILL)p
+17113 54215 V 419 w(INPUT)p Black 555 w Fw(The)h(factor)h
+Fu(delt)g Fw(is)f(negativ)-31 b(e.)p Black 4000 55993
+a(Notes)p Black 4072 w(The)369 b(default)i(v)-61 b(alue)370
+b(is)f(0)p Fl(:)p Fw(05.)10814 57770 y(P)-31 b(assing)370
+b(a)g(v)-61 b(alue)369 b Fu(delt)582 b(=)f(0.0)370 b
+Fw(also)g(indicates)g(the)g(default)g(v)-61 b(alue)370
+b(should)g(b)31 b(e)368 b(used.)p 4000 60058 11214 45
+v 4000 61645 45 1587 v 4376 61067 a Fu(CVSpgmrSetPrecType)p
+15169 61645 V 4000 61689 11214 45 v Black 4000 62972
+a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f(CVSpgmrSetPrecType\(cvode)p
+28896 62972 349 45 v 422 w(mem,)h(pretype\);)p Black
+4000 64749 a Fw(Description)p Black 1286 w(The)369 b(function)i
+Fu(CVSpgmrSetPrecType)h Fw(resets)c(the)h(t)-31 b(yp)31
+b(e)370 b(of)g(preconditioning)i(to)d(b)31 b(e)369 b(used.)p
+Black 4000 66527 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 66527 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 68079 a Fu(pretype)p Black
+1554 w Fw(\()p Fu(int)p Fw(\))247 b(sp)31 b(eci\257es)246
+b(the)g(t)-31 b(yp)31 b(e)247 b(of)g(preconditioning)i(and)d(m)-31
+b(ust)247 b(b)31 b(e:)430 b Fu(PREC)p 45408 68079 V 419
+w(NONE)p Fw(,)248 b Fu(PREC)p 51030 68079 V 419 w(LEFT)p
+Fw(,)16435 69408 y Fu(PREC)p 18829 69408 V 419 w(RIGHT)p
+Fw(,)370 b(or)f Fu(PREC)p 26510 69408 V 419 w(BOTH)p
+Fw(.)p Black 4000 71185 a(Return)g(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 10814 72962 a Fu(CVSPGMR)p 14951 72962 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(v)-61 b(alue)369 b(has)h(b)31
+b(een)368 b(successfully)h(set.)p Black 10814 74515 a
+Fu(CVSPGMR)p 14951 74515 V 419 w(MEM)p 17113 74515 V
+419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p 26172 74515
+V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p
+Fw(.)p Black 10814 76068 a Fu(CVSPGMR)p 14951 76068 V
+419 w(LMEM)p 17694 76068 V 419 w(NULL)p Black 555 w Fw(The)f
+Fs(cvspgmr)f Fw(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)p Black 10814 77621 a Fu(CVSPGMR)p
+14951 77621 V 419 w(ILL)p 17113 77621 V 419 w(INPUT)p
+Black 555 w Fw(The)h(preconditioner)h(t)-31 b(yp)31 b(e)370
+b Fu(pretype)g Fw(is)f(not)h(v)-61 b(alid.)p Black Black
+eop
+%%Page: 46 56
+46 55 bop Black 0 2701 a Fx(46)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black Black 0 6974 a Fw(Notes)p Black 4072 w(The)328
+b(preconditioning)i(t)-31 b(yp)31 b(e)327 b(is)h(initially)j(sp)31
+b(eci\257ed)326 b(in)i(the)g(call)g(to)h Fu(CVSpgmr)f
+Fw(\(see)f Fn(x)p Fw(5.5.2\).)481 b(This)6814 8302 y(function)319
+b(call)g(is)f(needed)f(only)i(if)f Fu(pretype)h Fw(is)e(b)31
+b(eing)319 b(c)-31 b(hanged)318 b(from)h(its)f(v)-61
+b(alue)318 b(in)g(the)g(prior)g(call)6814 9631 y(to)370
+b Fu(CVSpgmr)p Fw(.)0 13466 y Fo(5.5.5)1495 b(In)-42
+b(terp)42 b(olated)500 b(output)f(function)0 15628 y
+Fw(An)458 b(optional)j(function)f Fu(CVodeGetDky)f Fw(is)f(a)-31
+b(v)-61 b(ailable)461 b(to)e(obtain)h(additional)i(output)d(v)-61
+b(alues.)760 b(This)458 b(function)0 16956 y(should)318
+b(only)i(b)31 b(e)317 b(called)j(after)e(a)h(successful)e(return)h
+(from)g Fu(CVode)h Fw(as)f(it)h(pro)-31 b(vides)318 b(in)-31
+b(terp)31 b(olated)321 b(v)-61 b(alues)318 b(either)g(of)0
+18285 y Fl(y)405 b Fw(or)365 b(of)h(its)f(deriv)-61 b(ativ)-31
+b(es)367 b(\(up)f(to)g(the)f(curren)-31 b(t)365 b(order)g(of)h(the)f
+(in)-31 b(tegration)369 b(metho)31 b(d\))367 b(in)-31
+b(terp)31 b(olated)367 b(to)f(an)-31 b(y)366 b(v)-61
+b(alue)0 19613 y(of)370 b Fl(t)e Fw(in)i(the)f(last)h(in)-31
+b(ternal)371 b(step)e(tak)-31 b(en)371 b(b)-31 b(y)369
+b Fs(cv)-25 b(odes)p Fw(.)1660 21005 y(The)370 b(call)g(to)g(the)g
+Fu(CVodeGetDky)g Fw(function)h(has)e(the)g(follo)-31
+b(wing)373 b(form:)p 0 23211 7146 45 v 0 24797 45 1587
+v 376 24219 a Fu(CVodeGetDky)p 7101 24797 V 0 24841 7146
+45 v Black 0 26185 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeGetDky\(cvode)p 20829 26185 349 45 v 421 w(mem,)h(t,)f(k,)h
+(dky\);)p Black 0 28083 a Fw(Description)p Black 1286
+w(The)501 b(function)i Fu(CVodeGetDky)f Fw(computes)g(the)f
+Fu(k)p Fw(-th)g(deriv)-61 b(ativ)-31 b(e)503 b(of)e(the)h(function)g
+Fu(y)f Fw(at)h(time)6814 29411 y Fu(t)p Fw(,)462 b(i.e.)716
+b Fl(d)10869 29009 y Fk(\()p Fj(k)19 b Fk(\))12106 29411
+y Fl(y)40 b(=dt)14218 29009 y Fk(\()p Fj(k)19 b Fk(\))15454
+29411 y Fw(\()p Fl(t)p Fw(\),)463 b(where)443 b Fl(t)21159
+29577 y Fj(n)22057 29411 y Fn(\241)295 b Fl(h)23851 29577
+y Fj(u)24861 29411 y Fn(\267)443 b Fu(t)g Fn(\267)432
+b Fl(t)28882 29577 y Fj(n)29484 29411 y Fw(,)462 b Fl(t)30653
+29577 y Fj(n)31698 29411 y Fw(denotes)444 b(the)g(curren)-31
+b(t)443 b(in)-31 b(ternal)445 b(time)6814 30739 y(reac)-31
+b(hed,)355 b(and)c Fl(h)13910 30905 y Fj(u)14839 30739
+y Fw(is)f(the)h(last)h(in)-31 b(ternal)352 b(step)e(size)h
+(successfully)f(used)g(b)-31 b(y)351 b(the)g(solv)-31
+b(er.)487 b(The)351 b(user)6814 32068 y(ma)-31 b(y)370
+b(request)f Fu(k)g Fw(=)308 b(0)p Fl(;)184 b Fw(1)p Fl(;)g(:::;)g(q)
+19178 32234 y Fj(u)19762 32068 y Fw(,)370 b(where)f Fl(q)24134
+32234 y Fj(u)25081 32068 y Fw(is)g(the)h(curren)-31 b(t)369
+b(order.)p Black 0 33966 a(Argumen)-31 b(ts)p Black Black
+1517 w Fu(cvode)p 9789 33966 V 419 w(mem)p Black 554
+w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 35579 a Fu(t)p Black 5040 w
+Fw(\()p Fu(realtype)p Fw(\))390 b(the)f(v)-61 b(alue)389
+b(of)g(the)f(indep)31 b(enden)-31 b(t)389 b(v)-61 b(ariable)389
+b(at)g(whic)-31 b(h)390 b(the)e(deriv)-61 b(ativ)-31
+b(e)12435 36908 y(is)369 b(to)h(b)31 b(e)369 b(ev)-61
+b(aluated.)p Black 6814 38521 a Fu(k)p Black 5040 w Fw(\()p
+Fu(int)p Fw(\))370 b(the)g(deriv)-61 b(ativ)-31 b(e)371
+b(order)d(requested.)p Black 6814 40134 a Fu(dky)p Black
+3878 w Fw(\()p Fu(N)p 13516 40134 V 419 w(Vector)p Fw(\))286
+b(v)-31 b(ector)285 b(con)-31 b(taining)287 b(the)e(deriv)-61
+b(ativ)-31 b(e.)466 b(This)284 b(v)-31 b(ector)286 b(m)-31
+b(ust)285 b(b)31 b(e)283 b(allo)31 b(cated)12435 41463
+y(b)-31 b(y)370 b(the)f(user.)p Black 0 43361 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 6814 45259 a Fu(CV)p 8046
+45259 V 419 w(SUCCESS)p Black 973 w(CVodeGetDky)h Fw(succeeded.)p
+Black 6814 46872 a Fu(CV)p 8046 46872 V 419 w(BAD)p 10208
+46872 V 419 w(K)p Black 2297 w(k)f Fw(is)g(not)h(in)f(the)h(range)f(0)p
+Fl(;)184 b Fw(1)p Fl(;)g(:::;)g(q)27674 47038 y Fj(u)28258
+46872 y Fw(.)p Black 6814 48485 a Fu(CV)p 8046 48485
+V 419 w(BAD)p 10208 48485 V 419 w(T)p Black 2297 w(t)369
+b Fw(is)g(not)h(in)f(the)h(in)-31 b(terv)-61 b(al)370
+b([)p Fl(t)25371 48651 y Fj(n)26220 48485 y Fn(\241)246
+b Fl(h)27965 48651 y Fj(u)28543 48485 y Fl(;)184 b(t)29434
+48651 y Fj(n)30038 48485 y Fw(].)p Black 6814 50099 a
+Fu(CV)p 8046 50099 V 419 w(BAD)p 10208 50099 V 419 w(DKY)p
+Black 1135 w Fw(The)369 b Fu(dky)g Fw(argumen)-31 b(t)371
+b(w)-31 b(as)370 b Fu(NULL)p Fw(.)p Black 6814 51712
+a Fu(CV)p 8046 51712 V 419 w(MEM)p 10208 51712 V 419
+w(NULL)p Black 554 w Fw(The)f Fu(cvode)p 18685 51712
+V 419 w(mem)h Fw(argumen)-31 b(t)370 b(w)-31 b(as)370
+b Fu(NULL)p Fw(.)p Black 0 53610 a(Notes)p Black 4072
+w(It)347 b(is)g(only)g(legal)i(to)f(call)g(the)f(function)h
+Fu(CVodeGetDky)g Fw(after)g(a)f(successful)f(return)g(from)i
+Fu(CVode)p Fw(.)6814 54939 y(See)339 b Fu(CVodeGetCurrentTime)p
+Fw(,)349 b Fu(CVodeGetLastOrder)p Fw(,)f(and)340 b Fu(CVodeGetLastStep)
+i Fw(in)e(the)f(next)6814 56267 y(section)370 b(for)f(access)g(to)h
+Fl(t)17229 56433 y Fj(n)17831 56267 y Fw(,)g Fl(q)19002
+56433 y Fj(u)19581 56267 y Fw(,)f(and)g Fl(h)23047 56433
+y Fj(u)23626 56267 y Fw(,)g(resp)31 b(ectiv)-31 b(ely)-92
+b(.)0 59703 y Fo(5.5.6)1495 b(Optional)500 b(output)f(functions)0
+61864 y Fs(cv)-25 b(odes)369 b Fw(pro)-31 b(vides)370
+b(an)f(extensiv)-31 b(e)370 b(set)e(of)i(functions)g(that)g(can)f(b)31
+b(e)368 b(used)h(to)g(obtain)i(solv)-31 b(er)369 b(p)31
+b(erformance)369 b(infor-)0 63193 y(mation.)535 b(T)-92
+b(able)384 b(5.2)g(lists)f(all)h(optional)h(output)f(functions)g(in)f
+Fs(cv)-25 b(odes)p Fw(,)386 b(whic)-31 b(h)384 b(are)f(then)f(describ)
+31 b(ed)382 b(in)h(detail)0 64521 y(in)369 b(the)h(remainder)f(of)h
+(this)g(section.)0 67735 y Fx(Main)424 b(solv)-35 b(er)425
+b(optional)g(output)h(functions)0 69897 y Fs(cv)-25 b(odes)362
+b Fw(pro)-31 b(vides)363 b(sev)-31 b(eral)362 b(user-callable)h
+(functions)g(that)h(can)e(b)31 b(e)361 b(used)h(to)g(obtain)i
+(di\256eren)-31 b(t)362 b(quan)-31 b(tities)365 b(that)0
+71225 y(ma)-31 b(y)348 b(b)31 b(e)346 b(of)h(in)-31 b(terest)347
+b(to)g(the)f(user,)351 b(suc)-31 b(h)346 b(as)g(solv)-31
+b(er)347 b(w)-31 b(orkspace)347 b(requiremen)-31 b(ts,)352
+b(solv)-31 b(er)347 b(p)31 b(erformance)347 b(statistics,)0
+72553 y(as)479 b(w)-31 b(ell)481 b(as)e(additional)k(data)d(from)g(the)
+g Fs(cv)-25 b(odes)480 b Fw(memory)g(blo)31 b(c)-31 b(k)480
+b(\(a)g(suggested)g(tolerance)h(scaling)f(factor,)0 73882
+y(the)442 b(error)f(w)-31 b(eigh)g(t)444 b(v)-31 b(ector,)461
+b(and)442 b(the)g(v)-31 b(ector)443 b(of)f(estimated)h(lo)31
+b(cal)444 b(errors\).)709 b(F)-92 b(unctions)442 b(are)g(also)h(pro)-31
+b(vided)442 b(to)0 75210 y(extract)326 b(statistics)g(related)g(to)f
+(the)g(p)31 b(erformance)325 b(of)h(the)f Fs(cv)-25 b(odes)325
+b Fw(nonlinear)h(solv)-31 b(er)325 b(used.)477 b(As)325
+b(a)g(con)-31 b(v)g(enience,)0 76539 y(additional)379
+b(information)g(extraction)f(functions)f(pro)-31 b(vide)376
+b(the)g(optional)j(outputs)e(in)f(groups.)512 b(These)376
+b(optional)0 77867 y(output)370 b(functions)h(are)e(describ)31
+b(ed)368 b(next.)p Black Black eop
+%%Page: 47 57
+47 56 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(47)p 4000 3144 48001 45
+v Black Black Black 4665 11492 a Fw(T)-92 b(able)370
+b(5.2:)494 b(Optional)371 b(outputs)f(from)g(CV)-31 b(ODES,)370
+b(CVDENSE,)h(CVBAND,)f(CVDIA)-31 b(G,)370 b(and)f(CVSPGMR)p
+Black 4691 12526 46619 45 v 4669 13855 45 1329 v 5355
+13456 a Fx(Optional)425 b(output)p 32524 13855 V 18856
+w(F)-106 b(unction)424 b(name)p 51287 13855 V 4691 13899
+46619 45 v 4669 15227 45 1329 v 21926 14829 a(CV)-35
+b(ODES)426 b(main)e(solv)-35 b(er)p 51287 15227 V 4691
+15272 46619 45 v 4669 16600 45 1329 v 5355 16201 a Fw(Size)369
+b(of)h Fs(cv)-25 b(odes)370 b Fw(real)f(and)h(in)-31
+b(teger)370 b(w)-31 b(orkspaces)p 32524 16600 V 6788
+w Fu(CVodeGetWorkSpace)p 51287 16600 V 4669 17928 V 5355
+17530 a Fw(Cum)g(ulativ)g(e)373 b(n)-31 b(um)g(b)31 b(er)369
+b(of)g(in)-31 b(ternal)371 b(steps)p 32524 17928 V 10126
+w Fu(CVodeGetNumSteps)p 51287 17928 V 4669 19257 V 5355
+18858 a Fw(No.)493 b(of)370 b(calls)g(to)g(r.h.s.)493
+b(function)p 32524 19257 V 13728 w Fu(CVodeGetNumRhsEvals)p
+51287 19257 V 4669 20585 V 5355 20186 a Fw(No.)g(of)370
+b(calls)g(to)g(linear)g(solv)-31 b(er)370 b(setup)f(function)p
+32524 20585 V 7446 w Fu(CVodeGetNumLinSolvSetups)p 51287
+20585 V 4669 21913 V 5355 21515 a Fw(No.)493 b(of)370
+b(lo)31 b(cal)371 b(error)d(test)h(failures)h(that)h(ha)-31
+b(v)g(e)370 b(o)31 b(ccurred)p 32524 21913 V 3963 w Fu
+(CVodeGetNumErrTestFails)p 51287 21913 V 4669 23242 V
+5355 22843 a Fw(Order)368 b(used)h(during)g(the)h(last)g(step)p
+32524 23242 V 12638 w Fu(CVodeGetLastOrder)p 51287 23242
+V 4669 24570 V 5355 24172 a Fw(Order)e(to)i(b)31 b(e)369
+b(attempted)i(on)e(the)h(next)g(step)p 32524 24570 V
+8533 w Fu(CVodeGetCurrentOrder)p 51287 24570 V 4669 25898
+V 5355 25500 a Fw(No.)493 b(of)370 b(order)e(reductions)i(due)f(to)h
+(stabilit)-31 b(y)372 b(limit)f(detection)p 32524 25898
+V 1331 w Fu(CVodeGetNumStabLimOrderReds)p 51287 25898
+V 4669 27227 V 5355 26828 a Fw(Actual)g(initial)h(step)d(size)g(used)p
+32524 27227 V 14461 w Fu(CVodeGetActualInitStep)p 51287
+27227 V 4669 28555 V 5355 28157 a Fw(Step)g(size)h(used)e(for)h(the)h
+(last)g(step)p 32524 28555 V 13038 w Fu(CVodeGetLastStep)p
+51287 28555 V 4669 29883 V 5355 29485 a Fw(Step)f(size)h(to)f(b)31
+b(e)369 b(attempted)i(on)f(the)f(next)h(step)p 32524
+29883 V 7119 w Fu(CVodeGetCurrentStep)p 51287 29883 V
+4669 31212 V 5355 30813 a Fw(Curren)-31 b(t)369 b(in)-31
+b(ternal)371 b(time)f(reac)-31 b(hed)370 b(b)-31 b(y)369
+b(the)g(solv)-31 b(er)p 32524 31212 V 6834 w Fu(CVodeGetCurrentTime)p
+51287 31212 V 4669 32540 V 5355 32142 a Fw(Suggested)370
+b(factor)g(for)f(tolerance)i(scaling)p 32524 32540 V
+9817 w Fu(CVodeGetTolScaleFactor)p 51287 32540 V 4669
+33868 V 5355 33470 a Fw(Error)e(w)-31 b(eigh)g(t)371
+b(v)-31 b(ector)370 b(for)f(state)h(v)-61 b(ariables)p
+32524 33868 V 9423 w Fu(CVodeGetErrWeights)p 51287 33868
+V 4669 35197 V 5355 34798 a Fw(Estimated)371 b(lo)31
+b(cal)371 b(error)d(v)-31 b(ector)p 32524 35197 V 14263
+w Fu(CVodeGetEstLocalErrors)p 51287 35197 V 4669 36525
+V 5355 36127 a Fw(No.)493 b(of)370 b(nonlinear)g(solv)-31
+b(er)370 b(iterations)p 32524 36525 V 11847 w Fu
+(CVodeGetNumNonlinSolvIters)p 51287 36525 V 4669 37854
+V 5355 37455 a Fw(No.)493 b(of)370 b(nonlinear)g(con)-31
+b(v)g(ergence)370 b(failures)p 32524 37854 V 9946 w Fu
+(CVodeGetNumNonlinSolvConvFails)p 51287 37854 V 4669
+39182 V 5355 38783 a Fw(All)g Fs(cv)-25 b(odes)370 b
+Fw(in)-31 b(tegrator)371 b(statistics)p 32524 39182 V
+12444 w Fu(CVodeGetIntegratorStats)p 51287 39182 V 4669
+40510 V 5355 40112 a Fs(cv)-25 b(odes)370 b Fw(nonlinear)g(solv)-31
+b(er)370 b(statistics)p 32524 40510 V 11392 w Fu
+(CVodeGetNonlinSolvStats)p 51287 40510 V 4669 41839 V
+5355 41440 a Fw(Arra)-31 b(y)369 b(sho)-31 b(wing)371
+b(ro)31 b(ots)369 b(found)p 32524 41839 V 14921 w Fu(CvodeGetRootInfo)p
+51287 41839 V 4669 43167 V 5355 42768 a Fw(No.)493 b(of)370
+b(calls)g(to)g(ro)31 b(ot)370 b(function)p 32524 43167
+V 14257 w Fu(CVodeGetNumGEvals)p 51287 43167 V 4691 43211
+46619 45 v 4669 44540 45 1329 v 21270 44141 a Fx(CVDENSE)426
+b(linear)f(solv)-35 b(er)p 51287 44540 V 4691 44584 46619
+45 v 4669 45912 45 1329 v 5355 45514 a Fw(Size)369 b(of)h
+Fs(cvdense)g Fw(real)g(and)f(in)-31 b(teger)370 b(w)-31
+b(orkspaces)p 32524 45912 V 6171 w Fu(CVDenseGetWorkSpace)p
+51287 45912 V 4669 47241 V 5355 46842 a Fw(No.)493 b(of)370
+b(Jacobian)h(ev)-61 b(aluations)p 32524 47241 V 14399
+w Fu(CVDenseGetNumJacEvals)p 51287 47241 V 4669 48569
+V 5355 48170 a Fw(No.)493 b(of)370 b(r.h.s.)493 b(calls)370
+b(for)f(\257nite)h(di\256.)492 b(Jacobian)371 b(ev)-61
+b(als.)p 32524 48569 V 4909 w Fu(CVDenseGetNumRhsEvals)p
+51287 48569 V 4669 49897 V 5355 49499 a Fw(Last)369 b(return)g(from)h
+(a)f Fs(cvdense)h Fw(function)p 32524 49897 V 9668 w
+Fu(CVDenseGetLastFlag)p 51287 49897 V 4691 49942 46619
+45 v 4669 51270 45 1329 v 21526 50871 a Fx(CVBAND)425
+b(linear)g(solv)-35 b(er)p 51287 51270 V 4691 51314 46619
+45 v 4669 52643 45 1329 v 5355 52244 a Fw(Size)369 b(of)h
+Fs(cvband)g Fw(real)f(and)g(in)-31 b(teger)371 b(w)-31
+b(orkspaces)p 32524 52643 V 6591 w Fu(CVBandGetWorkSpace)p
+51287 52643 V 4669 53971 V 5355 53572 a Fw(No.)493 b(of)370
+b(Jacobian)h(ev)-61 b(aluations)p 32524 53971 V 14399
+w Fu(CVBandGetNumJacEvals)p 51287 53971 V 4669 55299
+V 5355 54901 a Fw(No.)493 b(of)370 b(r.h.s.)493 b(calls)370
+b(for)f(\257nite)h(di\256.)492 b(Jacobian)371 b(ev)-61
+b(als.)p 32524 55299 V 4909 w Fu(CVBandGetNumRhsEvals)p
+51287 55299 V 4669 56628 V 5355 56229 a Fw(Last)369 b(return)g(from)h
+(a)f Fs(cvband)h Fw(function)p 32524 56628 V 10088 w
+Fu(CVBandGetLastFlag)p 51287 56628 V 4691 56672 46619
+45 v 4669 58000 45 1329 v 21753 57602 a Fx(CVDIA)-35
+b(G)425 b(linear)f(solv)-35 b(er)p 51287 58000 V 4691
+58044 46619 45 v 4669 59373 45 1329 v 5355 58974 a Fw(Size)369
+b(of)h Fs(cvdia)-25 b(g)369 b Fw(real)h(and)f(in)-31
+b(teger)370 b(w)-31 b(orkspaces)p 32524 59373 V 6893
+w Fu(CVDiagGetWorkSpace)p 51287 59373 V 4669 60701 V
+5355 60303 a Fw(No.)493 b(of)370 b(r.h.s.)493 b(calls)370
+b(for)f(\257nite)h(di\256.)492 b(Jacobian)371 b(ev)-61
+b(als.)p 32524 60701 V 4909 w Fu(CVDiagGetNumRhsEvals)p
+51287 60701 V 4669 62030 V 5355 61631 a Fw(Last)369 b(return)g(from)h
+(a)f Fs(cvdia)-25 b(g)369 b Fw(function)p 32524 62030
+V 10390 w Fu(CVDiagGetLastFlag)p 51287 62030 V 4691 62074
+46619 45 v 4669 63402 45 1329 v 21075 63004 a Fx(CVSPGMR)426
+b(linear)e(solv)-35 b(er)p 51287 63402 V 4691 63446 46619
+45 v 4669 64775 45 1329 v 5355 64376 a Fw(Size)369 b(of)h
+Fs(cvspgmr)e Fw(real)i(and)f(in)-31 b(teger)371 b(w)-31
+b(orkspaces)p 32524 64775 V 5955 w Fu(CVSpgmrGetWorkSpace)p
+51287 64775 V 4669 66103 V 5355 65705 a Fw(No.)493 b(of)370
+b(linear)g(iterations)p 32524 66103 V 16776 w Fu(CVSpgmrGetNumLinIters)
+p 51287 66103 V 4669 67432 V 5355 67033 a Fw(No.)493
+b(of)370 b(linear)g(con)-31 b(v)g(ergence)370 b(failures)p
+32524 67432 V 11729 w Fu(CVSpgmrGetNumConvFails)p 51287
+67432 V 4669 68760 V 5355 68361 a Fw(No.)493 b(of)370
+b(preconditioner)g(ev)-61 b(aluations)p 32524 68760 V
+11703 w Fu(CVSpgmrGetNumPrecEvals)p 51287 68760 V 4669
+70088 V 5355 69690 a Fw(No.)493 b(of)370 b(preconditioner)g(solv)-31
+b(es)p 32524 70088 V 14309 w Fu(CVSpgmrGetNumPrecSolves)p
+51287 70088 V 4669 71417 V 5355 71018 a Fw(No.)493 b(of)370
+b(Jacobian-v)-31 b(ector)372 b(pro)31 b(duct)369 b(ev)-61
+b(aluations)p 32524 71417 V 6921 w Fu(CVSpgmrGetNumJtimesEvals)p
+51287 71417 V 4669 72745 V 5355 72346 a Fw(No.)493 b(of)370
+b(r.h.s.)493 b(calls)370 b(for)f(\257nite)h(di\256.)492
+b(Jacobian-v)-31 b(ector)372 b(ev)-61 b(als.)p 32524
+72745 V 1585 w Fu(CVSpgmrGetNumRhsEvals)p 51287 72745
+V 4669 74073 V 5355 73675 a Fw(Last)369 b(return)g(from)h(a)f
+Fs(cvspgmr)f Fw(function)p 32524 74073 V 9453 w Fu(CVSpgmrGetLastFlag)p
+51287 74073 V 4691 74118 46619 45 v Black Black Black
+eop
+%%Page: 48 58
+48 57 bop Black 0 2701 a Fx(48)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 5965 10633 45 v 0 7552 45 1587 v 376 6974 a Fu
+(CVodeGetWorkSpace)p 10588 7552 V 0 7596 10633 45 v Black
+0 8876 a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVodeGetWorkSpace\(cvode)p 24315 8876 349 45 v 422 w(mem,)h(&lenrw,)g
+(&leniw\);)p Black 0 10634 a Fw(Description)p Black 1286
+w(The)536 b(function)h Fu(CVodeGetWorkSpace)h Fw(returns)d(the)h
+Fs(cv)-25 b(odes)536 b Fw(real)g(and)g(in)-31 b(teger)537
+b(w)-31 b(orkspace)6814 11963 y(sizes.)p Black 0 13721
+a(Argumen)g(ts)p Black Black 1517 w Fu(cvode)p 9789 13721
+V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 15258
+a Fu(lenrw)p Black 2716 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(the)g(n)-31 b(um)g(b)31 b(er)369 b(of)h Fu(realtype)g
+Fw(v)-61 b(alues)369 b(in)g(the)h Fs(cv)-25 b(odes)369
+b Fw(w)-31 b(orkspace.)p Black 6814 16795 a Fu(leniw)p
+Black 2716 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(the)g(n)-31
+b(um)g(b)31 b(er)369 b(of)h(in)-31 b(teger)370 b(v)-61
+b(alues)369 b(in)g(the)h Fs(cv)-25 b(odes)370 b Fw(w)-31
+b(orkspace.)p Black 0 18554 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 6814 20312 a Fu(CV)p 8046 20312 V 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(output)e(v)-61 b(alues)370
+b(ha)-31 b(v)g(e)370 b(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 21849 a Fu(CV)p 8046 21849 V 419 w(MEM)p 10208
+21849 V 419 w(NULL)p Black 554 w Fw(The)f Fu(cvode)p
+18685 21849 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 0 23608 a(Notes)p Black
+4072 w(In)397 b(terms)h(of)g(the)g(problem)g(size)g Fl(N)518
+b Fw(and)398 b(maxim)-31 b(um)400 b(metho)31 b(d)399
+b(order)e Fu(maxord)p Fw(,)406 b(the)398 b(actual)h(size)6814
+24936 y(of)370 b(the)f(real)h(w)-31 b(orkspace)370 b(giv)-31
+b(en)370 b(in)g Fu(realtype)g Fw(w)-31 b(ords)369 b(is:)p
+Black 8142 27125 a Fn(\262)p Black 554 w Fw(Base)g(v)-61
+b(alue:)494 b Fu(lenrw)369 b Fw(=)308 b(86+)370 b(\()p
+Fu(maxord+5)p Fw(\))p Fl(N)p Black 8142 28871 a Fn(\262)p
+Black 554 w Fw(With)g Fu(itol)582 b(=)f(CV)p 17409 28871
+V 419 w(SV)p Fw(:)369 b Fu(lenrw)h Fw(=)f Fu(lenrw)h
+Fw(+)p Fl(N)p Black 8142 30617 a Fn(\262)p Black 554
+w Fw(With)g(ro)31 b(ot\257nding)371 b(for)e Fl(N)20384
+30783 y Fj(g)21268 30617 y Fw(functions)h(\(see)g Fn(x)p
+Fw(5.8\):)494 b Fu(lenrw)370 b Fw(=)f Fu(lenrw)g Fw(+3)p
+Fl(N)41479 30783 y Fj(g)6814 32805 y Fw(The)337 b(size)h(of)f(the)h(in)
+-31 b(teger)338 b(w)-31 b(orkspace)338 b(\(without)i(distinction)g(b)31
+b(et)-31 b(w)g(een)338 b Fu(int)f Fw(and)h Fu(long)581
+b(int)p Fw(\))338 b(is:)p Black 8142 34994 a Fn(\262)p
+Black 554 w Fw(Base)369 b(v)-61 b(alue:)494 b Fu(leniw)369
+b Fw(=)308 b(52+)370 b(\()p Fu(maxord+5)p Fw(\))p Fl(N)p
+Black 8142 36740 a Fn(\262)p Black 554 w Fw(With)g Fu(itol)582
+b(=)f(CV)p 17409 36740 V 419 w(SV)p Fw(:)369 b Fu(leniw)h
+Fw(=)f Fu(leniw)h Fw(+)p Fl(N)p Black 8142 38486 a Fn(\262)p
+Black 554 w Fw(With)g(ro)31 b(ot\257nding)371 b(for)e
+Fl(N)20384 38652 y Fj(g)21268 38486 y Fw(functions:)494
+b Fu(leniw)370 b Fw(=)f Fu(leniw)g Fw(+)p Fl(N)36000
+38652 y Fj(g)6814 40675 y Fw(F)-92 b(or)368 b(the)i(default)g(v)-61
+b(alue)370 b(of)g Fu(maxord)p Fw(,)g(the)g(base)f(v)-61
+b(alues)369 b(are:)p Black 8142 42863 a Fn(\262)p Black
+554 w Fw(F)-92 b(or)369 b(the)g(Adams)h(metho)31 b(d:)493
+b Fu(lenrw)370 b Fw(=)308 b(96)247 b(+)f(17)p Fl(N)491
+b Fw(and)369 b Fu(leniw)h Fw(=)307 b(52)247 b(+)f(17)p
+Fl(N)p Black 8142 44609 a Fn(\262)p Black 554 w Fw(F)-92
+b(or)369 b(the)g(BDF)f(metho)31 b(d:)494 b Fu(lenrw)370
+b Fw(=)307 b(96)247 b(+)f(10)p Fl(N)491 b Fw(and)370
+b Fu(leniw)f Fw(=)308 b(52)247 b(+)f(10)p Fl(N)6814 46798
+y Fw(Note)469 b(that)g(additional)h(memory)f(is)f(allo)31
+b(cated)470 b(if)e(quadratures)g(and/or)g(forw)-31 b(ard)469
+b(sensitivit)-31 b(y)6814 48126 y(in)g(tegration)372
+b(is)d(enabled.)494 b(See)368 b Fn(x)p Fw(5.7.1)k(and)d
+Fn(x)p Fw(6.2.1)j(for)d(more)g(details.)p 0 50384 10052
+45 v 0 51971 45 1587 v 376 51393 a Fu(CVodeGetNumSteps)p
+10007 51971 V 0 52015 10052 45 v Black 0 53294 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetNumSteps\(cvode)p
+23734 53294 349 45 v 422 w(mem,)g(&nsteps\);)p Black
+0 55053 a Fw(Description)p Black 1286 w(The)564 b(function)i
+Fu(CVodeGetNumSteps)g Fw(returns)d(the)h(cum)-31 b(ulativ)g(e)567
+b(n)-31 b(um)g(b)31 b(er)564 b(of)h(in)-31 b(ternal)565
+b(steps)6814 56381 y(tak)-31 b(en)370 b(b)-31 b(y)370
+b(the)f(solv)-31 b(er)370 b(\(total)i(so)d(far\).)p Black
+0 58140 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+9789 58140 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 59677 a Fu(nsteps)p Black 2135 w Fw(\()p Fu(long)582
+b(int)p Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(steps)f(tak)-31
+b(en)370 b(b)-31 b(y)370 b Fs(cv)-25 b(odes)p Fw(.)p
+Black 0 61435 a(Return)369 b(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+6814 63194 a Fu(CV)p 8046 63194 V 419 w(SUCCESS)p Black
+973 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfully)g(set.)p Black 6814 64731 a
+Fu(CV)p 8046 64731 V 419 w(MEM)p 10208 64731 V 419 w(NULL)p
+Black 554 w Fw(The)g Fu(cvode)p 18685 64731 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p 0
+66989 11795 45 v 0 68330 45 1341 v 376 67997 a Fu(CVodeGetNumRhsEvals)p
+11750 68330 V 0 68374 11795 45 v Black 0 69726 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetNumRhsEvals\(cvode)p
+25477 69726 349 45 v 422 w(mem,)h(&nfevals\);)p Black
+0 71484 a Fw(Description)p Black 1286 w(The)428 b(function)i
+Fu(CVodeGetNumRhsEvals)g Fw(returns)d(the)h(n)-31 b(um)g(b)31
+b(er)428 b(of)h(calls)g(to)f(the)h(user's)e(righ)-31
+b(t-)6814 72813 y(hand)369 b(side)g(function.)p Black
+0 74571 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+9789 74571 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 76108 a Fu(nfevals)p Black 1554 w Fw(\()p
+Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369
+b(of)h(calls)g(to)g(the)g(user's)e Fu(f)h Fw(function.)p
+Black 0 77867 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+Black eop
+%%Page: 49 59
+49 58 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(49)p 4000 3144 48001 45
+v Black Black 10814 6974 a Fu(CV)p 12046 6974 349 45
+v 419 w(SUCCESS)p Black 973 w Fw(The)369 b(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 8503 a Fu(CV)p 12046 8503 V 419 w(MEM)p 14208
+8503 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p 22685
+8503 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370 b(is)f
+Fu(NULL)p Fw(.)p Black 4000 10253 a(Notes)p Black 4072
+w(The)267 b Fu(nfevals)g Fw(v)-61 b(alue)268 b(returned)e(b)-31
+b(y)267 b Fu(CVodeGetNumRhsEvals)i Fw(do)31 b(es)266
+b(not)i(accoun)-31 b(t)268 b(for)f(calls)g(made)10814
+11581 y(to)370 b Fu(f)f Fw(b)-31 b(y)370 b(a)f(linear)h(solv)-31
+b(er)370 b(or)f(preconditioner)h(mo)31 b(dule.)p 4000
+13832 14701 45 v 4000 15419 45 1587 v 4376 14840 a Fu
+(CVodeGetNumLinSolvSetups)p 18656 15419 V 4000 15463
+14701 45 v Black 4000 16742 a Fw(Call)p Black 4848 w
+Fu(flag)582 b(=)f(CVodeGetNumLinSolvSetups\(cvode)p 32382
+16742 349 45 v 423 w(mem,)h(&nlinsetups\);)p Black 4000
+18492 a Fw(Description)p Black 1286 w(The)462 b(function)h
+Fu(CVodeGetNumLinSolvSetups)j Fw(returns)460 b(the)i(n)-31
+b(um)g(b)31 b(er)462 b(of)h(calls)f(made)h(to)g(the)10814
+19821 y(linear)370 b(solv)-31 b(er's)370 b(setup)f(function.)p
+Black 4000 21571 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 21571 V 419 w(mem)p Black 1298 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 23100 a Fu(nlinsetups)p Black
+555 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(calls)g(made)g(to)g(the)f(linear)h(solv)-31
+b(er)370 b(setup)f(function.)p Black 4000 24850 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 10814 26600 a Fu(CV)p 12046
+26600 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 28129 a Fu(CV)p 12046 28129 V 419 w(MEM)p
+14208 28129 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+22685 28129 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p 4000 30380 14120 45 v 4000 31720
+45 1341 v 4376 31388 a Fu(CVodeGetNumErrTestFails)p 18075
+31720 V 4000 31764 14120 45 v Black 4000 33117 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetNumErrTestFails\(cvode)p
+31801 33117 349 45 v 423 w(mem,)g(&netfails\);)p Black
+4000 34867 a Fw(Description)p Black 1286 w(The)254 b(function)h
+Fu(CVodeGetNumErrTestFails)i Fw(returns)c(the)g(n)-31
+b(um)g(b)31 b(er)254 b(of)g(lo)31 b(cal)255 b(error)e(test)h(failures)
+10814 36195 y(that)370 b(ha)-31 b(v)g(e)371 b(o)31 b(ccurred.)p
+Black 4000 37945 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 37945 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 39474 a Fu(netfails)p Black
+973 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(error)e(test)i(failures.)p Black 4000
+41224 a(Return)f(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(is)f(one)g(of)p Black 10814 42974
+a Fu(CV)p 12046 42974 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j
+(output)e(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g
+(set.)p Black 10814 44503 a Fu(CV)p 12046 44503 V 419
+w(MEM)p 14208 44503 V 419 w(NULL)p Black 554 w Fw(The)g
+Fu(cvode)p 22685 44503 V 419 w(mem)h Fw(p)31 b(oin)-31
+b(ter)370 b(is)f Fu(NULL)p Fw(.)p 4000 46754 10633 45
+v 4000 48094 45 1341 v 4376 47762 a Fu(CVodeGetLastOrder)p
+14588 48094 V 4000 48138 10633 45 v Black 4000 49491
+a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f(CVodeGetLastOrder\(cvode)p
+28315 49491 349 45 v 422 w(mem,)h(&qlast\);)p Black 4000
+51241 a Fw(Description)p Black 1286 w(The)411 b(function)h
+Fu(CVodeGetLastOrder)h Fw(returns)c(the)i(in)-31 b(tegration)414
+b(metho)31 b(d)412 b(order)e(used)g(during)10814 52569
+y(the)369 b(last)h(in)-31 b(ternal)371 b(step.)p Black
+4000 54319 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+13789 54319 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 10814 55848 a Fu(qlast)p Black 2716 w Fw(\()p Fu(int)p
+Fw(\))370 b(metho)31 b(d)371 b(order)d(used)h(on)g(the)h(last)g(in)-31
+b(ternal)370 b(step.)p Black 4000 57598 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 10814 59349 a Fu(CV)p 12046
+59349 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 60877 a Fu(CV)p 12046 60877 V 419 w(MEM)p
+14208 60877 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+22685 60877 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p 4000 63128 12376 45 v 4000 64469
+45 1341 v 4376 64137 a Fu(CVodeGetCurrentOrder)p 16331
+64469 V 4000 64513 12376 45 v Black 4000 65865 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetCurrentOrder\(cvode)p
+30058 65865 349 45 v 422 w(mem,)h(&qcur\);)p Black 4000
+67615 a Fw(Description)p Black 1286 w(The)297 b(function)i
+Fu(CVodeGetCurrentOrder)g Fw(returns)d(the)i(in)-31 b(tegration)300
+b(metho)31 b(d)298 b(order)e(to)i(b)31 b(e)296 b(used)10814
+68944 y(on)369 b(the)h(next)g(in)-31 b(ternal)370 b(step.)p
+Black 4000 70694 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 70694 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 72223 a Fu(qcur)p Black 3297
+w Fw(\()p Fu(int)p Fw(\))370 b(metho)31 b(d)371 b(order)d(to)i(b)31
+b(e)369 b(used)f(on)i(the)f(next)h(in)-31 b(ternal)371
+b(step.)p Black 4000 73973 a(Return)e(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 10814 75723 a Fu(CV)p 12046 75723 V 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+10814 77252 a Fu(CV)p 12046 77252 V 419 w(MEM)p 14208
+77252 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+22685 77252 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black Black eop
+%%Page: 50 60
+50 59 bop Black 0 2701 a Fx(50)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 5965 10052 45 v 0 7552 45 1587 v 376 6974 a Fu
+(CVodeGetLastStep)p 10007 7552 V 0 7596 10052 45 v Black
+0 8894 a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVodeGetLastStep\(cvode)p 23734 8894 349 45 v 422 w(mem,)g(&hlast\);)p
+Black 0 10702 a Fw(Description)p Black 1286 w(The)453
+b(function)h Fu(CVodeGetLastStep)h Fw(returns)d(the)h(in)-31
+b(tegration)456 b(step)d(size)g(tak)-31 b(en)454 b(on)f(the)g(last)6814
+12030 y(in)-31 b(ternal)371 b(step.)p Black 0 13838 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 13838 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 15406
+a Fu(hlast)p Black 2716 w Fw(\()p Fu(realtype)p Fw(\))371
+b(step)e(size)g(tak)-31 b(en)371 b(on)e(the)h(last)g(in)-31
+b(ternal)370 b(step.)p Black 0 17214 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 6814 19021 a Fu(CV)p 8046
+19021 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 6814 20589 a Fu(CV)p 8046 20589 V 419 w(MEM)p 10208
+20589 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+18685 20589 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p 0 22973 11795 45 v 0 24560 45
+1587 v 376 23982 a Fu(CVodeGetCurrentStep)p 11750 24560
+V 0 24604 11795 45 v Black 0 25902 a Fw(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVodeGetCurrentStep\(cvode)p
+25477 25902 349 45 v 422 w(mem,)h(&hcur\);)p Black 0
+27710 a Fw(Description)p Black 1286 w(The)322 b(function)g
+Fu(CVodeGetCurrentStep)i Fw(returns)d(the)g(in)-31 b(tegration)324
+b(step)e(size)f(to)h(b)31 b(e)321 b(attempted)6814 29038
+y(on)369 b(the)h(next)g(in)-31 b(ternal)370 b(step.)p
+Black 0 30846 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 30846 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 32414 a Fu(hcur)p Black 3297
+w Fw(\()p Fu(realtype)p Fw(\))371 b(step)e(size)g(to)h(b)31
+b(e)369 b(attempted)i(on)f(the)f(next)h(in)-31 b(ternal)371
+b(step.)p Black 0 34222 a(Return)e(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 6814 36029 a Fu(CV)p 8046 36029 V 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 37598 a Fu(CV)p 8046 37598 V 419 w(MEM)p 10208 37598
+V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p 18685
+37598 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370 b(is)f
+Fu(NULL)p Fw(.)p 0 39982 13539 45 v 0 41568 45 1587 v
+376 40990 a Fu(CVodeGetActualInitStep)p 13494 41568 V
+0 41612 13539 45 v Black 0 42910 a Fw(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeGetActualInitStep\(cvode)p 27220
+42910 349 45 v 423 w(mem,)g(&hinused\);)p Black 0 44718
+a Fw(Description)p Black 1286 w(The)365 b(function)i
+Fu(CVodeGetActualInitStep)i Fw(returns)364 b(the)h(v)-61
+b(alue)366 b(of)g(the)g(in)-31 b(tegration)368 b(step)d(size)6814
+46046 y(used)k(on)g(the)g(\257rst)g(step.)p Black 0 47854
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p 9789
+47854 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p
+Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25
+b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black
+6814 49422 a Fu(hinused)p Black 1554 w Fw(\()p Fu(realtype)p
+Fw(\))371 b(actual)g(v)-61 b(alue)370 b(of)f(initial)j(step)d(size.)p
+Black 0 51230 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+6814 53038 a Fu(CV)p 8046 53038 V 419 w(SUCCESS)p Black
+973 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfully)g(set.)p Black 6814 54606 a
+Fu(CV)p 8046 54606 V 419 w(MEM)p 10208 54606 V 419 w(NULL)p
+Black 554 w Fw(The)g Fu(cvode)p 18685 54606 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+0 56413 a(Notes)p Black 4072 w(Ev)-31 b(en)311 b(if)h(the)f(v)-61
+b(alue)311 b(of)g(the)g(initial)j(in)-31 b(tegration)314
+b(step)c(size)h(w)-31 b(as)312 b(sp)31 b(eci\257ed)310
+b(b)-31 b(y)311 b(the)g(user)f(through)i(a)6814 57742
+y(call)373 b(to)g Fu(CVodeSetInitStep)p Fw(,)i(this)d(v)-61
+b(alue)372 b(migh)-31 b(t)374 b(ha)-31 b(v)g(e)373 b(b)31
+b(een)371 b(c)-31 b(hanged)373 b(b)-31 b(y)372 b Fs(cv)-25
+b(odes)372 b Fw(to)h(ensure)6814 59070 y(that)417 b(the)g(step)f(size)g
+(is)g(within)i(the)f(prescrib)31 b(ed)414 b(b)31 b(ounds)416
+b(\()p Fl(h)32695 59236 y Fk(min)34603 59070 y Fn(\267)386
+b Fl(h)36488 59236 y Fk(0)37371 59070 y Fn(\267)f Fl(h)39255
+59236 y Fk(max)40944 59070 y Fw(\),)429 b(or)416 b(to)h(satisfy)6814
+60399 y(the)369 b(lo)31 b(cal)371 b(error)d(test)i(condition.)p
+0 62783 11795 45 v 0 64123 45 1341 v 376 63791 a Fu
+(CVodeGetCurrentTime)p 11750 64123 V 0 64167 11795 45
+v Black 0 65538 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeGetCurrentTime\(cvode)p 25477 65538 349 45
+v 422 w(mem,)h(&tcur\);)p Black 0 67346 a Fw(Description)p
+Black 1286 w(The)356 b(function)h Fu(CVodeGetCurrentTime)h
+Fw(returns)c(the)i(curren)-31 b(t)355 b(in)-31 b(ternal)357
+b(time)f(reac)-31 b(hed)356 b(b)-31 b(y)356 b(the)6814
+68674 y(solv)-31 b(er.)p Black 0 70482 a(Argumen)g(ts)p
+Black Black 1517 w Fu(cvode)p 9789 70482 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 72050
+a Fu(tcur)p Black 3297 w Fw(\()p Fu(realtype)p Fw(\))371
+b(curren)-31 b(t)369 b(in)-31 b(ternal)371 b(time)f(reac)-31
+b(hed.)p Black 0 73858 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 6814 75665 a Fu(CV)p 8046 75665 V 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 77233 a Fu(CV)p 8046 77233 V 419 w(MEM)p 10208 77233
+V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p 18685
+77233 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370 b(is)f
+Fu(NULL)p Fw(.)p Black Black eop
+%%Page: 51 61
+51 60 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(51)p 4000 3144 48001 45
+v Black 4000 5965 16444 45 v 4000 7306 45 1341 v 4376
+6974 a Fu(CVodeGetNumStabLimOrderReds)p 20399 7306 V
+4000 7350 16444 45 v Black 4000 8702 a Fw(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVodeGetNumStabLimOrderReds\(cvode)p
+34125 8702 349 45 v 423 w(mem,)h(&nslred\);)p Black 4000
+10435 a Fw(Description)p Black 1286 w(The)320 b(function)h
+Fu(CVodeGetNumStabLimOrderReds)j Fw(returns)318 b(the)i(n)-31
+b(um)g(b)31 b(er)320 b(of)g(order)f(reductions)10814
+11764 y(dictated)371 b(b)-31 b(y)369 b(the)h(BDF)e(stabilit)-31
+b(y)372 b(limit)f(detection)g(algorithm)h(\(see)d Fn(x)p
+Fw(3.4\).)p Black 4000 13497 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 13789 13497 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 15008 a Fu(nslred)p Black
+2135 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(order)f(reductions)g(due)g(to)h(stabilit)
+-31 b(y)372 b(limit)f(detection.)p Black 4000 16741 a(Return)e(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 10814 18474 a Fu(CV)p 12046
+18474 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 19986 a Fu(CV)p 12046 19986 V 419 w(MEM)p
+14208 19986 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+22685 19986 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 10814 21498 a Fu(CV)p 12046
+21498 V 419 w(NO)p 13627 21498 V 418 w(SLDET)p Black
+555 w Fw(The)355 b(stabilit)-31 b(y)358 b(limit)g(detection)f
+(algorithm)h(w)-31 b(as)356 b(not)g(activ)-61 b(ated)358
+b(through)e(a)g(call)17435 22826 y(to)370 b Fu(CVodeSetStabLimDet)p
+Fw(.)p 4000 25062 13539 45 v 4000 26403 45 1341 v 4376
+26071 a Fu(CVodeGetTolScaleFactor)p 17494 26403 V 4000
+26447 13539 45 v Black 4000 27799 a Fw(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeGetTolScaleFactor\(cvode)p 31220
+27799 349 45 v 423 w(mem,)g(&tolsfac\);)p Black 4000
+29532 a Fw(Description)p Black 1286 w(The)287 b(function)h
+Fu(CVodeGetTolScaleFactor)i Fw(returns)c(a)h(suggested)h(factor)g(b)-31
+b(y)287 b(whic)-31 b(h)288 b(the)f(user's)10814 30861
+y(tolerances)513 b(should)g(b)31 b(e)511 b(scaled)i(when)f(to)31
+b(o)514 b(m)-31 b(uc)g(h)513 b(accuracy)f(has)h(b)31
+b(een)511 b(requested)h(for)g(some)10814 32189 y(in)-31
+b(ternal)371 b(step.)p Black 4000 33922 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 33922 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 35434
+a Fu(tolsfac)p Black 1554 w Fw(\()p Fu(realtype)p Fw(\))371
+b(suggested)f(scaling)g(factor)h(for)e(user-supplied)f(tolerances.)p
+Black 4000 37167 a(Return)h(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+10814 38900 a Fu(CV)p 12046 38900 V 419 w(SUCCESS)p Black
+973 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfully)g(set.)p Black 10814 40411 a
+Fu(CV)p 12046 40411 V 419 w(MEM)p 14208 40411 V 419 w(NULL)p
+Black 554 w Fw(The)g Fu(cvode)p 22685 40411 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p 4000
+42647 11214 45 v 4000 44234 45 1587 v 4376 43656 a Fu
+(CVodeGetErrWeights)p 15169 44234 V 4000 44278 11214
+45 v Black 4000 45558 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeGetErrWeights\(cvode)p 28896 45558 349 45
+v 422 w(mem,)h(eweight\);)p Black 4000 47291 a Fw(Description)p
+Black 1286 w(The)412 b(function)i Fu(CVodeGetErrWeights)g
+Fw(returns)d(the)h(solution)i(error)d(w)-31 b(eigh)g(ts)414
+b(at)f(the)f(curren)-31 b(t)10814 48619 y(time.)494 b(These)369
+b(are)g(the)g(recipro)31 b(cals)370 b(of)f(the)h Fl(W)30453
+48785 y Fj(i)31191 48619 y Fw(giv)-31 b(en)370 b(b)-31
+b(y)370 b(\(3.7\).)p Black 4000 50352 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 13789 50352 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 51864
+a Fu(eweight)p Black 1554 w Fw(\()p Fu(N)p 17516 51864
+V 419 w(Vector)p Fw(\))370 b(solution)h(error)e(w)-31
+b(eigh)g(ts)371 b(at)f(the)f(curren)-31 b(t)369 b(time.)p
+Black 4000 53597 a(Return)g(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+10814 55330 a Fu(CV)p 12046 55330 V 419 w(SUCCESS)p Black
+973 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfully)g(set.)p Black 10814 56842 a
+Fu(CV)p 12046 56842 V 419 w(MEM)p 14208 56842 V 419 w(NULL)p
+Black 554 w Fw(The)g Fu(cvode)p 22685 56842 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+4000 59352 a(Notes)p Black 5200 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+
+
+ at endspecial Fd(!)1497 b Fw(The)370 b(user)e(m)-31 b(ust)370
+b(allo)31 b(cate)371 b(memory)g(for)e Fu(eweight)p Fw(.)p
+4000 61844 13539 45 v 4000 63184 45 1341 v 4376 62852
+a Fu(CVodeGetEstLocalErrors)p 17494 63184 V 4000 63228
+13539 45 v Black 4000 64581 a Fw(Call)p Black 4848 w
+Fu(flag)582 b(=)f(CVodeGetEstLocalErrors\(cvode)p 31220
+64581 349 45 v 423 w(mem,)g(ele\);)p Black 4000 66314
+a Fw(Description)p Black 1286 w(The)369 b(function)i
+Fu(CVodeGetEstLocalErrors)h Fw(returns)c(the)i(v)-31
+b(ector)370 b(of)g(estimated)g(lo)31 b(cal)371 b(errors.)p
+Black 4000 68047 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 68047 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 69558 a Fu(ele)p Black 3878
+w Fw(\()p Fu(N)p 17516 69558 V 419 w(Vector)p Fw(\))370
+b(estimated)h(lo)31 b(cal)371 b(errors.)p Black 4000
+71291 a(Return)e(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(is)f(one)g(of)p Black 10814 73024
+a Fu(CV)p 12046 73024 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j
+(output)e(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g
+(set.)p Black 10814 74536 a Fu(CV)p 12046 74536 V 419
+w(MEM)p 14208 74536 V 419 w(NULL)p Black 554 w Fw(The)g
+Fu(cvode)p 22685 74536 V 419 w(mem)h Fw(p)31 b(oin)-31
+b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black 4000 77046 a(Notes)p
+Black 5200 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1497
+b Fw(The)370 b(user)e(m)-31 b(ust)370 b(allo)31 b(cate)371
+b(memory)g(for)e Fu(ele)p Fw(.)p Black Black eop
+%%Page: 52 62
+52 61 bop Black 0 2701 a Fx(52)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 5965 14120 45 v 0 7552 45 1587 v 376 6974 a Fu
+(CVodeGetIntegratorStats)p 14075 7552 V 0 7596 14120
+45 v Black 0 9165 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeGetIntegratorStats\()t(cvode)p 27805 9165
+349 45 v 419 w(mem,)h(&nsteps,)g(&nfevals,)24830 10493
+y(&nlinsetups,)h(&netfails,)f(&qlast,)g(&qcur,)24830
+11821 y(&hinused,)g(&hlast,)g(&hcur,)g(&tcur\);)p Black
+0 13798 a Fw(Description)p Black 1286 w(The)388 b(function)h
+Fu(CVodeGetIntegratorStats)i Fw(returns)c(the)h Fs(cv)-25
+b(odes)389 b Fw(in)-31 b(tegrator)389 b(statistics)h(as)6814
+15126 y(a)369 b(group.)p Black 0 17153 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 17153 V 419
+w(mem)p Black 1298 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 18831
+a Fu(nsteps)p Black 2879 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(steps)f(tak)-31
+b(en)370 b(b)-31 b(y)370 b Fs(cv)-25 b(odes)p Fw(.)p
+Black 6814 20508 a Fu(nfevals)p Black 2298 w Fw(\()p
+Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369
+b(of)h(calls)g(to)g(the)f(user's)g Fu(f)g Fw(function.)p
+Black 6814 22186 a Fu(nlinsetups)p Black 555 w Fw(\()p
+Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369
+b(of)h(calls)g(made)g(to)g(the)f(linear)h(solv)-31 b(er)370
+b(setup)f(function.)p Black 6814 23864 a Fu(netfails)p
+Black 1717 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(error)e(test)i(failures.)p
+Black 6814 25541 a Fu(qlast)p Black 3460 w Fw(\()p Fu(int)p
+Fw(\))g(metho)31 b(d)370 b(order)f(used)g(on)g(the)g(last)i(in)-31
+b(ternal)370 b(step.)p Black 6814 27219 a Fu(qcur)p Black
+4041 w Fw(\()p Fu(int)p Fw(\))g(metho)31 b(d)370 b(order)f(to)h(b)31
+b(e)369 b(used)f(on)i(the)f(next)h(in)-31 b(ternal)370
+b(step.)p Black 6814 28897 a Fu(hinused)p Black 2298
+w Fw(\()p Fu(realtype)p Fw(\))h(actual)g(v)-61 b(alue)370
+b(of)f(initial)j(step)d(size.)p Black 6814 30574 a Fu(hlast)p
+Black 3460 w Fw(\()p Fu(realtype)p Fw(\))i(step)e(size)g(tak)-31
+b(en)371 b(on)e(the)h(last)g(in)-31 b(ternal)370 b(step.)p
+Black 6814 32252 a Fu(hcur)p Black 4041 w Fw(\()p Fu(realtype)p
+Fw(\))h(step)e(size)g(to)h(b)31 b(e)369 b(attempted)i(on)f(the)f(next)h
+(in)-31 b(ternal)370 b(step.)p Black 6814 33930 a Fu(tcur)p
+Black 4041 w Fw(\()p Fu(realtype)p Fw(\))h(curren)-31
+b(t)369 b(in)-31 b(ternal)371 b(time)f(reac)-31 b(hed.)p
+Black 0 35956 a(Return)369 b(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+6814 37983 a Fu(CV)p 8046 37983 V 419 w(SUCCESS)p Black
+973 w Fw(the)g(optional)j(output)e(v)-61 b(alues)370
+b(ha)-31 b(v)g(e)370 b(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 39661 a Fu(CV)p 8046 39661 V 419 w(MEM)p 10208
+39661 V 419 w(NULL)p Black 554 w Fw(the)f Fu(cvode)p
+18316 39661 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p 0 42736 15863 45 v 0 44077 45
+1341 v 376 43745 a Fu(CVodeGetNumNonlinSolvIters)p 15818
+44077 V 0 44121 15863 45 v Black 0 45601 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetNumNonlinSolvIters\(cvode)p
+29544 45601 349 45 v 423 w(mem,)h(&nniters\);)p Black
+0 47628 a Fw(Description)p Black 1286 w(The)413 b(function)i
+Fu(CVodeGetNumNonlinSolvIters)i Fw(returns)412 b(the)h(n)-31
+b(um)g(b)31 b(er)413 b(of)h(nonlinear)g(\(func-)6814
+48956 y(tional)371 b(or)e(Newton\))i(iterations)h(p)31
+b(erformed.)p Black 0 50983 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 9789 50983 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 52661 a Fu(nniters)p Black
+1554 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(nonlinear)h(iterations)g(p)31
+b(erformed.)p Black 0 54688 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 6814 56715 a Fu(CV)p 8046 56715 V 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(output)e(v)-61 b(alues)370
+b(ha)-31 b(v)g(e)370 b(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 58392 a Fu(CV)p 8046 58392 V 419 w(MEM)p 10208
+58392 V 419 w(NULL)p Black 554 w Fw(The)f Fu(cvode)p
+18685 58392 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p 0 61468 18188 45 v 0 62808 45
+1341 v 376 62476 a Fu(CVodeGetNumNonlinSolvConvFails)p
+18143 62808 V 0 62852 18188 45 v Black 0 64332 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetNumNonlinSolvConvFails\(cvode)p
+31868 64332 349 45 v 424 w(mem,)h(&nncfails\);)p Black
+0 66359 a Fw(Description)p Black 1286 w(The)549 b(function)h
+Fu(CVodeGetNumNonlinSolvConvFails)j Fw(returns)547 b(the)i(n)-31
+b(um)g(b)31 b(er)548 b(of)i(nonlinear)6814 67688 y(con)-31
+b(v)g(ergence)370 b(failures)g(that)g(ha)-31 b(v)g(e)370
+b(o)31 b(ccurred.)p Black 0 69715 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 9789 69715 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 71392
+a Fu(nncfails)p Black 973 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(nonlinear)h(con)-31
+b(v)g(ergence)370 b(failures.)p Black 0 73419 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 6814 75446 a Fu(CV)p 8046
+75446 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 6814 77124 a Fu(CV)p 8046 77124 V 419 w(MEM)p 10208
+77124 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+18685 77124 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black Black eop
+%%Page: 53 63
+53 62 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(53)p 4000 3144 48001 45
+v Black 4000 5965 14120 45 v 4000 7306 45 1341 v 4376
+6974 a Fu(CVodeGetNonlinSolvStats)p 18075 7306 V 4000
+7350 14120 45 v Black 4000 8727 a Fw(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeGetNonlinSolvStats\(cvode)p
+31801 8727 349 45 v 423 w(mem,)g(&nniters,)i(&nncfails\);)p
+Black 4000 10549 a Fw(Description)p Black 1286 w(The)362
+b(function)h Fu(CVodeGetNonlinSolvStats)i Fw(returns)c(the)h
+Fs(cv)-25 b(odes)362 b Fw(nonlinear)h(solv)-31 b(er)362
+b(statis-)10814 11877 y(tics)370 b(as)f(a)g(group.)p
+Black 4000 13698 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 13698 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 15273 a Fu(nniters)p Black
+1554 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(nonlinear)h(iterations)g(p)31
+b(erformed.)p Black 10814 16848 a Fu(nncfails)p Black
+973 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(nonlinear)h(con)-31 b(v)g(ergence)370
+b(failures.)p Black 4000 18669 a(Return)f(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 10814 20491 a Fu(CV)p 12046 20491 V 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+10814 22065 a Fu(CV)p 12046 22065 V 419 w(MEM)p 14208
+22065 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+22685 22065 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)4000 25476 y Fx(Linear)424 b(solv)-35
+b(er)425 b(optional)g(output)h(functions)4000 27566 y
+Fw(F)-92 b(or)439 b(eac)-31 b(h)440 b(of)g(the)g(linear)h(system)f
+(solv)-31 b(er)440 b(mo)31 b(dules)441 b(there)e(are)h(v)-61
+b(arious)440 b(optional)i(outputs)f(that)g(describ)31
+b(e)439 b(the)4000 28894 y(p)31 b(erformance)369 b(of)h(the)g(mo)31
+b(dule.)493 b(The)370 b(functions)g(a)-31 b(v)-61 b(ailable)372
+b(to)e(access)e(these)h(are)g(describ)31 b(ed)369 b(b)31
+b(elo)-31 b(w.)4000 31930 y Fx(Dense)492 b(Linear)f(solv)-35
+b(er.)1107 b Fw(The)426 b(follo)-31 b(wing)431 b(optional)e(outputs)f
+(are)e(a)-31 b(v)-61 b(ailable)430 b(from)d(the)g Fs(cvdense)g
+Fw(mo)31 b(dule:)4000 33258 y(w)-31 b(orkspace)366 b(requiremen)-31
+b(ts,)366 b(n)-31 b(um)g(b)31 b(er)365 b(of)g(calls)h(to)f(the)g
+(Jacobian)h(routine,)h(n)-31 b(um)g(b)31 b(er)365 b(of)g(calls)h(to)f
+(the)g(righ)-31 b(t-hand)4000 34586 y(side)507 b(routine)g(for)g
+(\257nite-di\256erence)h(Jacobian)g(appro)-31 b(ximation,)546
+b(and)507 b(last)h(return)e(v)-61 b(alue)507 b(from)h(a)f
+Fs(cvdense)4000 35915 y Fw(function.)p 4000 37917 11795
+45 v 4000 39503 45 1587 v 4376 38925 a Fu(CVDenseGetWorkSpace)p
+15750 39503 V 4000 39547 11795 45 v Black 4000 40852
+a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f(CVDenseGetWorkSpace\(cvode)p
+29477 40852 349 45 v 422 w(mem,)h(&lenrwD,)g(&leniwD\);)p
+Black 4000 42673 a Fw(Description)p Black 1286 w(The)338
+b(function)i Fu(CVDenseGetWorkSpace)g Fw(returns)d(the)i
+Fs(cvdense)f Fw(real)h(and)f(in)-31 b(teger)339 b(w)-31
+b(orkspace)10814 44002 y(sizes.)p Black 4000 45823 a(Argumen)g(ts)p
+Black Black 1517 w Fu(cvode)p 13789 45823 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 47398
+a Fu(lenrwD)p Black 2135 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(the)g(n)-31 b(um)g(b)31 b(er)369 b(of)h Fu(realtype)g
+Fw(v)-61 b(alues)369 b(in)g(the)h Fs(cvdense)g Fw(w)-31
+b(orkspace.)p Black 10814 48973 a Fu(leniwD)p Black 2135
+w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(the)g(n)-31
+b(um)g(b)31 b(er)369 b(of)h(in)-31 b(teger)370 b(v)-61
+b(alues)369 b(in)g(the)h Fs(cvdense)g Fw(w)-31 b(orkspace.)p
+Black 4000 50794 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 10814 52615 a Fu(CVDENSE)p 14951 52615 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(output)e(v)-61 b(alues)369
+b(ha)-31 b(v)g(e)371 b(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 54190 a Fu(CVDENSE)p 14951 54190 V 419 w(MEM)p
+17113 54190 V 419 w(NULL)p Black 1136 w Fw(The)f Fu(cvode)p
+26172 54190 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 10814 55765 a Fu(CVDENSE)p
+14951 55765 V 419 w(LMEM)p 17694 55765 V 419 w(NULL)p
+Black 555 w Fw(The)f Fs(cvdense)h Fw(linear)g(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 57586 a(Notes)p Black 4072 w(In)326 b(terms)g(of)h(the)g
+(problem)g(size)f Fl(N)121 b Fw(,)335 b(the)327 b(actual)h(size)e(of)h
+(the)f(real)h(w)-31 b(orkspace)327 b(is)g(2)p Fl(N)46528
+57185 y Fk(2)47351 57586 y Fu(realtype)10814 58915 y
+Fw(w)-31 b(ords,)370 b(and)f(the)h(actual)h(size)e(of)g(the)h(in)-31
+b(teger)370 b(w)-31 b(orkspace)370 b(is)f Fl(N)490 b
+Fw(in)-31 b(teger)370 b(w)-31 b(ords.)p 4000 61342 12957
+45 v 4000 62682 45 1341 v 4376 62350 a Fu(CVDenseGetNumJacEvals)p
+16913 62682 V 4000 62726 12957 45 v Black 4000 64104
+a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVDenseGetNumJacEvals\(cvode)p 30639 64104 349 45 v
+422 w(mem,)h(&njevalsD\);)p Black 4000 65925 a Fw(Description)p
+Black 1286 w(The)338 b(function)g Fu(CVDenseGetNumJacEvals)j
+Fw(returns)336 b(the)i(n)-31 b(um)g(b)31 b(er)337 b(of)h(calls)g(made)h
+(to)f(the)f(dense)10814 67253 y(Jacobian)371 b(appro)-31
+b(ximation)373 b(function.)p Black 4000 69075 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 69075 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 70649
+a Fu(njevalsD)p Black 973 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(the)g(n)-31 b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)f
+(Jacobian)i(function.)p Black 4000 72471 a(Return)e(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 10814 74292 a Fu(CVDENSE)p
+14951 74292 V 419 w(SUCCESS)p Black 1555 w Fw(The)g(optional)j(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 75867 a Fu(CVDENSE)p 14951 75867 V 419 w(MEM)p
+17113 75867 V 419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p
+26172 75867 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 10814 77442 a Fu(CVDENSE)p
+14951 77442 V 419 w(LMEM)p 17694 77442 V 419 w(NULL)p
+Black 555 w Fw(The)f Fs(cvdense)h Fw(linear)g(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black Black eop
+%%Page: 54 64
+54 63 bop Black 0 2701 a Fx(54)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 5965 12957 45 v 0 7306 45 1341 v 376 6974 a Fu
+(CVDenseGetNumRhsEvals)p 12913 7306 V 0 7350 12957 45
+v Black 0 8702 a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVDenseGetNumRhsEvals\(cvode)p 26639 8702 349 45 v 422
+w(mem,)h(&nfevalsD\);)p Black 0 10462 a Fw(Description)p
+Black 1286 w(The)365 b(function)i Fu(CVDenseGetNumRhsEvals)h
+Fw(returns)c(the)h(n)-31 b(um)g(b)31 b(er)365 b(of)h(calls)g(made)g(to)
+g(the)f(user-)6814 11790 y(supplied)372 b(righ)-31 b(t-hand)374
+b(side)e(function)h(due)f(to)h(the)f(\257nite)h(di\256erence)f(dense)f
+(Jacobian)j(appro)-31 b(xi-)6814 13119 y(mation.)p Black
+0 14878 a(Argumen)g(ts)p Black Black 1517 w Fu(cvode)p
+9789 14878 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 16417 a Fu(nfevalsD)p Black 973 w Fw(\()p
+Fu(long)582 b(int)p Fw(\))350 b(the)f(n)-31 b(um)g(b)31
+b(er)348 b(of)h(calls)h(made)f(to)h(the)f(user-supplied)f(righ)-31
+b(t-hand)350 b(side)12435 17745 y(function.)p Black 0
+19505 a(Return)369 b(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+6814 21264 a Fu(CVDENSE)p 10951 21264 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 22803 a Fu(CVDENSE)p 10951 22803 V 419 w(MEM)p 13113
+22803 V 419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p
+22172 22803 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 6814 24341 a Fu(CVDENSE)p
+10951 24341 V 419 w(LMEM)p 13694 24341 V 419 w(NULL)p
+Black 555 w Fw(The)f Fs(cvdense)h Fw(linear)g(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 0 26101 a(Notes)p Black 4072 w(The)386 b(v)-61
+b(alue)387 b Fu(nfevalsD)g Fw(is)f(incremen)-31 b(ted)387
+b(only)g(if)f(the)h(default)g Fu(CVDenseDQJac)h Fw(di\256erence)d(quo-)
+6814 27429 y(tien)-31 b(t)371 b(function)f(is)f(used.)p
+0 29688 11214 45 v 0 31274 45 1587 v 376 30696 a Fu(CVDenseGetLastFlag)
+p 11169 31274 V 0 31318 11214 45 v Black 0 32598 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVDenseGetLastFlag\(cvode)p
+24896 32598 349 45 v 422 w(mem,)h(&lsflag\);)p Black
+0 34358 a Fw(Description)p Black 1286 w(The)538 b(function)h
+Fu(CVDenseGetLastFlag)h Fw(returns)d(the)g(last)i(return)e(v)-61
+b(alue)538 b(from)g(a)g Fs(cvdense)6814 35686 y Fw(routine.)p
+Black 0 37446 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 37446 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 38984 a Fu(lsflag)p Black 2135
+w Fw(\()p Fu(int)p Fw(\))370 b(the)g(v)-61 b(alue)370
+b(of)f(the)h(last)g(return)e(\260ag)i(from)g(a)f Fs(cvdense)h
+Fw(function.)p Black 0 40744 a(Return)f(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 6814 42504 a Fu(CVDENSE)p 10951 42504 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 44042 a Fu(CVDENSE)p 10951 44042 V 419 w(MEM)p 13113
+44042 V 419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p
+22172 44042 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 6814 45580 a Fu(CVDENSE)p
+10951 45580 V 419 w(LMEM)p 13694 45580 V 419 w(NULL)p
+Black 555 w Fw(The)f Fs(cvdense)h Fw(linear)g(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 0 47340 a(Notes)p Black 4072 w(If)282 b(the)h Fs(cvdense)g
+Fw(setup)f(function)i(failed)g(\()p Fu(CVode)f Fw(returned)f
+Fu(CV)p 33656 47340 V 419 w(LSETUP)p 37561 47340 V 419
+w(FAIL)p Fw(\),)i(then)f(the)f(v)-61 b(alue)6814 48668
+y(of)285 b Fu(lsflag)g Fw(corresp)31 b(onds)284 b(to)h(the)g(column)h
+(index)f(\(n)-31 b(um)g(b)31 b(ered)285 b(from)g(one\))g(of)g(a)g
+(diagonal)i(elemen)-31 b(t)6814 49997 y(with)261 b(v)-61
+b(alue)260 b(zero)f(that)i(w)-31 b(as)260 b(encoun)-31
+b(tered)260 b(during)g(the)f(LU)h(factorization)j(of)d(the)f(dense)g
+(Jacobian)6814 51325 y(matrix.)0 54592 y Fx(Band)575
+b(Linear)h(solv)-35 b(er.)1107 b Fw(The)500 b(follo)-31
+b(wing)505 b(optional)e(outputs)e(are)g(a)-31 b(v)-61
+b(ailable)503 b(from)e(the)g Fs(cvband)f Fw(mo)31 b(dule:)0
+55921 y(w)-31 b(orkspace)366 b(requiremen)-31 b(ts,)366
+b(n)-31 b(um)g(b)31 b(er)365 b(of)g(calls)h(to)f(the)g(Jacobian)h
+(routine,)h(n)-31 b(um)g(b)31 b(er)365 b(of)g(calls)h(to)f(the)g(righ)
+-31 b(t-hand)0 57249 y(side)541 b(routine)h(for)f
+(\257nite-di\256erence)h(Jacobian)h(appro)-31 b(ximation,)588
+b(and)542 b(last)g(return)f(v)-61 b(alue)541 b(from)h(a)g
+Fs(cvband)0 58577 y Fw(function.)p 0 60436 11214 45 v
+0 62023 45 1587 v 376 61445 a Fu(CVBandGetWorkSpace)p
+11169 62023 V 0 62067 11214 45 v Black 0 63347 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVBandGetWorkSpace\(cvode)p
+24896 63347 349 45 v 422 w(mem,)h(&lenrwB,)g(&leniwB\);)p
+Black 0 65106 a Fw(Description)p Black 1286 w(The)450
+b(function)g Fu(CVBandGetWorkSpace)i Fw(returns)c(the)i
+Fs(cvband)f Fw(real)h(and)g(in)-31 b(teger)450 b(w)-31
+b(orkspace)6814 66435 y(sizes.)p Black 0 68194 a(Argumen)g(ts)p
+Black Black 1517 w Fu(cvode)p 9789 68194 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 69733
+a Fu(lenrwB)p Black 2135 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(the)g(n)-31 b(um)g(b)31 b(er)369 b(of)h Fu(realtype)g
+Fw(v)-61 b(alues)369 b(in)g(the)h Fs(cvband)f Fw(w)-31
+b(orkspace.)p Black 6814 71271 a Fu(leniwB)p Black 2135
+w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(the)g(n)-31
+b(um)g(b)31 b(er)369 b(of)h(in)-31 b(teger)370 b(v)-61
+b(alues)369 b(in)g(the)h Fs(cvband)f Fw(w)-31 b(orkspace.)p
+Black 0 73031 a(Return)369 b(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+6814 74790 a Fu(CVBAND)p 10370 74790 V 419 w(SUCCESS)p
+Black 1554 w Fw(The)h(optional)i(output)e(v)-61 b(alues)369
+b(ha)-31 b(v)g(e)370 b(b)31 b(een)369 b(successfully)g(set.)p
+Black 6814 76329 a Fu(CVBAND)p 10370 76329 V 419 w(MEM)p
+12532 76329 V 419 w(NULL)p Black 1135 w Fw(The)h Fu(cvode)p
+21591 76329 V 419 w(mem)f Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 6814 77867 a Fu(CVBAND)p
+10370 77867 V 419 w(LMEM)p 13113 77867 V 419 w(NULL)p
+Black 554 w Fw(The)h Fs(cvband)f Fw(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black Black eop
+%%Page: 55 65
+55 64 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(55)p 4000 3144 48001 45
+v Black Black 4000 6974 a Fw(Notes)p Black 4072 w(In)397
+b(terms)g(of)h(the)g(problem)g(size)f Fl(N)519 b Fw(and)397
+b(Jacobian)i(half-bandwidths,)408 b(the)397 b(actual)i(size)f(of)g(the)
+10814 8302 y(real)388 b(w)-31 b(orkspace)389 b(is)f(\(2)h
+Fu(mupper)p Fw(+3)g Fu(mlower)p Fw(+2\))184 b Fl(N)511
+b Fu(realtype)389 b Fw(w)-31 b(ords,)393 b(and)c(the)f(actual)h(size)f
+(of)10814 9631 y(the)369 b(in)-31 b(teger)371 b(w)-31
+b(orkspace)370 b(is)f Fl(N)490 b Fw(in)-31 b(teger)370
+b(w)-31 b(ords.)p 4000 12104 12376 45 v 4000 13445 45
+1341 v 4376 13113 a Fu(CVBandGetNumJacEvals)p 16331 13445
+V 4000 13489 12376 45 v Black 4000 14874 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVBandGetNumJacEvals\(cvode)p
+30058 14874 349 45 v 422 w(mem,)h(&njevalsB\);)p Black
+4000 16710 a Fw(Description)p Black 1286 w(The)313 b(function)h
+Fu(CVBandGetNumJacEvals)h Fw(returns)d(the)g(n)-31 b(um)g(b)31
+b(er)313 b(of)g(calls)g(made)h(to)f(the)g(banded)10814
+18038 y(Jacobian)371 b(appro)-31 b(ximation)373 b(function.)p
+Black 4000 19874 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 19874 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 21457 a Fu(njevalsB)p Black
+973 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(the)g(n)-31
+b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)f(Jacobian)i(function.)p
+Black 4000 23293 a(Return)e(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+10814 25129 a Fu(CVBAND)p 14370 25129 V 419 w(SUCCESS)p
+Black 1554 w Fw(The)h(optional)i(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)368 b(successfully)i(set.)p Black
+10814 26711 a Fu(CVBAND)p 14370 26711 V 419 w(MEM)p 16532
+26711 V 419 w(NULL)p Black 1135 w Fw(The)g Fu(cvode)p
+25591 26711 V 419 w(mem)f Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 10814 28293 a Fu(CVBAND)p
+14370 28293 V 419 w(LMEM)p 17113 28293 V 419 w(NULL)p
+Black 554 w Fw(The)h Fs(cvband)f Fw(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+4000 30767 12376 45 v 4000 32108 45 1341 v 4376 31775
+a Fu(CVBandGetNumRhsEvals)p 16331 32108 V 4000 32152
+12376 45 v Black 4000 33536 a Fw(Call)p Black 4848 w
+Fu(flag)582 b(=)f(CVBandGetNumRhsEvals\(cvode)p 30058
+33536 349 45 v 422 w(mem,)h(&nfevalsB\);)p Black 4000
+35372 a Fw(Description)p Black 1286 w(The)418 b(function)h
+Fu(CVBandGetNumRhsEvals)i Fw(returns)c(the)h(n)-31 b(um)g(b)31
+b(er)418 b(of)h(calls)f(made)h(to)g(the)f(user-)10814
+36701 y(supplied)323 b(righ)-31 b(t-hand)323 b(side)g(function)g(due)f
+(to)h(the)g(\257nite)g(di\256erence)f(banded)g(Jacobian)i(appro)-31
+b(x-)10814 38029 y(imation.)p Black 4000 39865 a(Argumen)g(ts)p
+Black Black 1517 w Fu(cvode)p 13789 39865 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 41448
+a Fu(nfevalsB)p Black 973 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))350 b(the)f(n)-31 b(um)g(b)31 b(er)348 b(of)h(calls)h(made)f(to)h
+(the)f(user-supplied)f(righ)-31 b(t-hand)350 b(side)16435
+42776 y(function.)p Black 4000 44612 a(Return)369 b(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 10814 46448 a Fu(CVBAND)p
+14370 46448 V 419 w(SUCCESS)p Black 1554 w Fw(The)h(optional)i(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 48030 a Fu(CVBAND)p 14370 48030 V 419 w(MEM)p
+16532 48030 V 419 w(NULL)p Black 1135 w Fw(The)g Fu(cvode)p
+25591 48030 V 419 w(mem)f Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 10814 49613 a Fu(CVBAND)p
+14370 49613 V 419 w(LMEM)p 17113 49613 V 419 w(NULL)p
+Black 554 w Fw(The)h Fs(cvband)f Fw(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 51449 a(Notes)p Black 4072 w(The)269 b(v)-61
+b(alue)268 b Fu(nfevalsB)i Fw(is)e(incremen)-31 b(ted)269
+b(only)h(if)f(the)f(default)i Fu(CVBandDQJac)g Fw(di\256erence)e
+(quotien)-31 b(t)10814 52777 y(function)371 b(is)e(used.)p
+4000 55251 10633 45 v 4000 56837 45 1587 v 4376 56259
+a Fu(CVBandGetLastFlag)p 14588 56837 V 4000 56881 10633
+45 v Black 4000 58194 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVBandGetLastFlag\(cvode)p 28315 58194 349 45 v
+422 w(mem,)h(&lsflag\);)p Black 4000 60030 a Fw(Description)p
+Black 1286 w(The)521 b(function)i Fu(CVBandGetLastFlag)g
+Fw(returns)d(the)h(v)-61 b(alue)521 b(of)h(the)f(last)h(return)e
+(\260ag)i(from)g(a)10814 61358 y Fs(cvband)369 b Fw(routine.)p
+Black 4000 63194 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 63194 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 64776 a Fu(lsflag)p Black
+2135 w Fw(\()p Fu(int)p Fw(\))370 b(the)g(v)-61 b(alue)370
+b(of)f(the)h(last)g(return)e(\260ag)i(from)g(a)f Fs(cvband)h
+Fw(function.)p Black 4000 66613 a(Return)f(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 10814 68449 a Fu(CVBAND)p 14370 68449 V 419 w(SUCCESS)p
+Black 1554 w Fw(The)h(optional)i(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)368 b(successfully)i(set.)p Black
+10814 70031 a Fu(CVBAND)p 14370 70031 V 419 w(MEM)p 16532
+70031 V 419 w(NULL)p Black 1135 w Fw(The)g Fu(cvode)p
+25591 70031 V 419 w(mem)f Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 10814 71613 a Fu(CVBAND)p
+14370 71613 V 419 w(LMEM)p 17113 71613 V 419 w(NULL)p
+Black 554 w Fw(The)h Fs(cvband)f Fw(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 73449 a(Notes)p Black 4072 w(If)435 b(the)h
+Fs(cvband)f Fw(setup)g(function)i(failed)g(\()p Fu(CVode)f
+Fw(returned)e Fu(CV)p 38458 73449 V 419 w(LSETUP)p 42363
+73449 V 419 w(FAIL)p Fw(\),)j(the)f(v)-61 b(alue)435
+b(of)10814 74778 y Fu(lsflag)383 b Fw(corresp)31 b(onds)382
+b(to)h(the)g(column)h(index)f(\(n)-31 b(um)g(b)31 b(ered)383
+b(from)g(one\))g(of)g(a)g(diagonal)i(elemen)-31 b(t)10814
+76106 y(with)408 b(v)-61 b(alue)407 b(zero)f(that)i(w)-31
+b(as)407 b(encoun)-31 b(tered)408 b(during)e(the)h(LU)g(factorization)j
+(of)d(the)g(banded)g(Ja-)10814 77434 y(cobian)370 b(matrix.)p
+Black Black eop
+%%Page: 56 66
+56 65 bop Black 0 2701 a Fx(56)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 6974 a(Diagonal)407 b(Linear)f(solv)-35 b(er.)1107
+b Fw(The)354 b(follo)-31 b(wing)357 b(optional)f(outputs)f(are)e(a)-31
+b(v)-61 b(ailable)356 b(from)e(the)g Fs(cvdia)-25 b(g)353
+b Fw(mo)31 b(dule:)0 8302 y(w)-31 b(orkspace)333 b(requiremen)-31
+b(ts,)341 b(n)-31 b(um)g(b)31 b(er)333 b(of)g(calls)g(to)g(the)g(righ)
+-31 b(t-hand)334 b(side)f(routine)g(for)f(\257nite-di\256erence)h
+(Jacobian)0 9631 y(appro)-31 b(ximation,)373 b(and)d(last)g(return)e(v)
+-61 b(alue)370 b(from)g(a)f Fs(cvdia)-25 b(g)369 b Fw(function.)p
+0 11487 11214 45 v 0 13074 45 1587 v 376 12496 a Fu(CVDiagGetWorkSpace)
+p 11169 13074 V 0 13118 11214 45 v Black 0 14398 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVDiagGetWorkSpace\(cvode)p
+24896 14398 349 45 v 422 w(mem,)h(&lenrwDI,)g(&leniwDI\);)p
+Black 0 16155 a Fw(Description)p Black 1286 w(The)483
+b(function)h Fu(CVDiagGetWorkSpace)h Fw(returns)d(the)h
+Fs(cvdia)-25 b(g)483 b Fw(real)g(and)g(in)-31 b(teger)484
+b(w)-31 b(orkspace)6814 17483 y(sizes.)p Black 0 19241
+a(Argumen)g(ts)p Black Black 1517 w Fu(cvode)p 9789 19241
+V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 20777
+a Fu(lenrwDI)p Black 1554 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(the)g(n)-31 b(um)g(b)31 b(er)369 b(of)h Fu(realtype)g
+Fw(v)-61 b(alues)369 b(in)g(the)h Fs(cvdia)-25 b(g)369
+b Fw(w)-31 b(orkspace.)p Black 6814 22313 a Fu(leniwDI)p
+Black 1554 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(the)g(n)-31
+b(um)g(b)31 b(er)369 b(of)h(in)-31 b(teger)370 b(v)-61
+b(alues)369 b(in)g(the)h Fs(cvdia)-25 b(g)369 b Fw(w)-31
+b(orkspace.)p Black 0 24070 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 6814 25827 a Fu(CVDIAG)p 10370 25827 V 419 w(SUCCESS)p
+Black 1554 w Fw(The)h(optional)i(output)e(v)-61 b(alus)369
+b(ha)-31 b(v)g(e)371 b(b)31 b(een)368 b(successfully)h(set.)p
+Black 6814 27363 a Fu(CVDIAG)p 10370 27363 V 419 w(MEM)p
+12532 27363 V 419 w(NULL)p Black 1135 w Fw(The)h Fu(cvode)p
+21591 27363 V 419 w(mem)f Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 6814 28899 a Fu(CVDIAG)p
+10370 28899 V 419 w(LMEM)p 13113 28899 V 419 w(NULL)p
+Black 554 w Fw(The)h Fs(cvdia)-25 b(g)369 b Fw(linear)h(solv)-31
+b(er)369 b(has)h(not)f(b)31 b(een)369 b(initialized.)p
+Black 0 30656 a(Notes)p Black 4072 w(In)357 b(terms)h(of)g(the)g
+(problem)h(size)e Fl(N)121 b Fw(,)361 b(the)d(actual)h(size)f(of)g(the)
+g(real)g(w)-31 b(orkspace)359 b(is)f(3)p Fl(N)479 b Fu(realtype)6814
+31985 y Fw(w)-31 b(ords.)p 0 34242 12376 45 v 0 35828
+45 1587 v 376 35250 a Fu(CVDiagGetNumRhsEvals)p 12331
+35828 V 0 35872 12376 45 v Black 0 37152 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVDiagGetNumRhsEvals\(cvode)p
+26058 37152 349 45 v 422 w(mem,)h(&nfevalsDI\);)p Black
+0 38909 a Fw(Description)p Black 1286 w(The)418 b(function)h
+Fu(CVDiagGetNumRhsEvals)i Fw(returns)c(the)h(n)-31 b(um)g(b)31
+b(er)418 b(of)h(calls)f(made)h(to)g(the)f(user-)6814
+40238 y(supplied)342 b(righ)-31 b(t-hand)344 b(side)e(function)i(due)e
+(to)h(the)f(\257nite)h(di\256erence)f(Jacobian)i(appro)-31
+b(ximation.)p Black 0 41995 a(Argumen)g(ts)p Black Black
+1517 w Fu(cvode)p 9789 41995 V 419 w(mem)p Black 554
+w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 43531 a Fu(nfevalsDI)p Black
+555 w Fw(\()p Fu(long)582 b(int)p Fw(\))333 b(the)g(n)-31
+b(um)g(b)31 b(er)332 b(of)h(calls)g(made)g(to)h(the)e(user-supplied)g
+(righ)-31 b(t-hand)334 b(side)12435 44859 y(function.)p
+Black 0 46617 a(Return)369 b(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+6814 48374 a Fu(CVDIAG)p 10370 48374 V 419 w(SUCCESS)p
+Black 1554 w Fw(The)h(optional)i(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)368 b(successfully)i(set.)p Black
+6814 49910 a Fu(CVDIAG)p 10370 49910 V 419 w(MEM)p 12532
+49910 V 419 w(NULL)p Black 1135 w Fw(The)g Fu(cvode)p
+21591 49910 V 419 w(mem)f Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 6814 51446 a Fu(CVDIAG)p
+10370 51446 V 419 w(LMEM)p 13113 51446 V 419 w(NULL)p
+Black 554 w Fw(The)h Fs(cvdia)-25 b(g)369 b Fw(linear)h(solv)-31
+b(er)369 b(has)h(not)f(b)31 b(een)369 b(initialized.)p
+Black 0 53203 a(Notes)p Black 4072 w(The)317 b(n)-31
+b(um)g(b)31 b(er)317 b(of)h(diagonal)h(appro)-31 b(ximate)320
+b(Jacobians)e(formed)g(is)f(equal)g(to)h(the)f(n)-31
+b(um)g(b)31 b(er)317 b(of)h(calls)6814 54531 y(made)247
+b(to)g(the)f(linear)h(solv)-31 b(er)247 b(setup)f(function)i(\(a)-31
+b(v)-61 b(ailable)249 b(b)-31 b(y)246 b(calling)j Fu
+(CVodeGetNumLinsolvSetups)p Fw(\).)p 0 56900 10633 45
+v 0 58487 45 1587 v 376 57909 a Fu(CVDiagGetLastFlag)p
+10588 58487 V 0 58531 10633 45 v Black 0 59811 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVDiagGetLastFlag\(cvode)p
+24315 59811 349 45 v 422 w(mem,)h(&lsflag\);)p Black
+0 61568 a Fw(Description)p Black 1286 w(The)266 b(function)h
+Fu(CVDiagGetLastFlag)i Fw(returns)c(the)h(last)h(return)e(v)-61
+b(alue)266 b(from)h(a)f Fs(cvdia)-25 b(g)266 b Fw(routine.)p
+Black 0 63325 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 63325 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 64861 a Fu(lsflag)p Black 2135
+w Fw(\()p Fu(int)p Fw(\))370 b(the)g(v)-61 b(alue)370
+b(of)f(the)h(last)g(return)e(\260ag)i(from)g(a)f Fs(cvdia)-25
+b(g)369 b Fw(function.)p Black 0 66619 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 6814 68376 a Fu(CVDIAG)p
+10370 68376 V 419 w(SUCCESS)p Black 1554 w Fw(The)h(optional)i(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 69912 a Fu(CVDIAG)p 10370 69912 V 419 w(MEM)p
+12532 69912 V 419 w(NULL)p Black 1135 w Fw(The)g Fu(cvode)p
+21591 69912 V 419 w(mem)f Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 6814 71448 a Fu(CVDIAG)p
+10370 71448 V 419 w(LMEM)p 13113 71448 V 419 w(NULL)p
+Black 554 w Fw(The)h Fs(cvdia)-25 b(g)369 b Fw(linear)h(solv)-31
+b(er)369 b(has)h(not)f(b)31 b(een)369 b(initialized.)p
+Black 0 73205 a(Notes)p Black 4072 w(If)462 b(the)h Fs(cvdia)-25
+b(g)463 b Fw(setup)f(function)i(failed)h(\()p Fu(CVode)e
+Fw(returned)f Fu(CV)p 34376 73205 V 419 w(LSETUP)p 38281
+73205 V 419 w(FAIL)p Fw(\),)i(the)f(v)-61 b(alue)463
+b(of)6814 74533 y Fu(lsflag)448 b Fw(is)f(equal)h(to)g
+Fu(CVDIAG)p 19925 74533 V 420 w(INV)p 22088 74533 V 418
+w(FAIL)p Fw(,)h(indicating)g(that)g(a)e(diagonal)j(elemen)-31
+b(t)449 b(with)f(v)-61 b(alue)6814 75862 y(zero)414 b(w)-31
+b(as)415 b(encoun)-31 b(tered.)628 b(The)414 b(same)h(v)-61
+b(alue)414 b(is)h(also)g(returned)e(if)i(the)f Fs(cvdia)-25
+b(g)414 b Fw(solv)-31 b(e)415 b(function)6814 77190 y(failed)371
+b(\()p Fu(CVode)f Fw(returned)e Fu(CV)p 19229 77190 V
+419 w(LSOLVE)p 23134 77190 V 419 w(FAIL)p Fw(\).)p Black
+Black eop
+%%Page: 57 67
+57 66 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(57)p 4000 3144 48001 45
+v Black 4000 6974 a(SPGMR)328 b(Linear)f(solv)-35 b(er.)1107
+b Fw(The)285 b(follo)-31 b(wing)288 b(optional)g(outputs)d(are)g(a)-31
+b(v)-61 b(ailable)287 b(from)f(the)f Fs(cvspgmr)e Fw(mo)31
+b(dule:)4000 8302 y(w)-31 b(orkspace)359 b(requiremen)-31
+b(ts,)361 b(n)-31 b(um)g(b)31 b(er)357 b(of)i(linear)f(iterations,)k(n)
+-31 b(um)g(b)31 b(er)358 b(of)g(linear)h(con)-31 b(v)g(ergence)359
+b(failures,)i(n)-31 b(um)g(b)31 b(er)4000 9631 y(of)272
+b(calls)g(to)g(the)g(preconditioner)h(setup)e(and)g(solv)-31
+b(e)273 b(routines,)292 b(n)-31 b(um)g(b)31 b(er)271
+b(of)h(calls)g(to)g(the)g(Jacobian-v)-31 b(ector)274
+b(pro)31 b(duct)4000 10959 y(routine,)387 b(n)-31 b(um)g(b)31
+b(er)383 b(of)g(calls)g(to)h(the)e(righ)-31 b(t-hand)384
+b(side)f(routine)g(for)g(\257nite-di\256erence)g(Jacobian-v)-31
+b(ector)385 b(pro)31 b(duct)4000 12287 y(appro)-31 b(ximation,)373
+b(and)d(last)g(return)e(v)-61 b(alue)370 b(from)g(a)f
+Fs(cvspgmr)f Fw(function.)p 4000 14593 11795 45 v 4000
+16179 45 1587 v 4376 15601 a Fu(CVSpgmrGetWorkSpace)p
+15750 16179 V 4000 16223 11795 45 v Black 4000 17585
+a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f(CVSpgmrGetWorkSpace\(cvode)p
+29477 17585 349 45 v 422 w(mem,)h(&lenrwSG,)g(&leniwSG\);)p
+Black 4000 19521 a Fw(Description)p Black 1286 w(The)314
+b(function)i Fu(CVSpgmrGetWorkSpace)h Fw(returns)c(the)h
+Fs(cvspgmr)f Fw(real)i(and)f(in)-31 b(teger)315 b(w)-31
+b(orkspace)10814 20849 y(sizes.)p Black 4000 22785 a(Argumen)g(ts)p
+Black Black 1517 w Fu(cvode)p 13789 22785 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 24417
+a Fu(lenrwSG)p Black 1554 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(the)g(n)-31 b(um)g(b)31 b(er)369 b(of)h Fu(realtype)g
+Fw(v)-61 b(alues)369 b(in)g(the)h Fs(cvspgmr)e Fw(w)-31
+b(orkspace.)p Black 10814 26049 a Fu(leniwSG)p Black
+1554 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(the)g(n)-31
+b(um)g(b)31 b(er)369 b(of)h(in)-31 b(teger)370 b(v)-61
+b(alues)369 b(in)g(the)h Fs(cvspgmr)e Fw(w)-31 b(orkspace.)p
+Black 4000 27985 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 10814 29921 a Fu(CVSPGMR)p 14951 29921 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(output)e(v)-61 b(alues)369
+b(ha)-31 b(v)g(e)371 b(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 31553 a Fu(CVSPGMR)p 14951 31553 V 419 w(MEM)p
+17113 31553 V 419 w(NULL)p Black 1136 w Fw(The)f Fu(cvode)p
+26172 31553 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 10814 33185 a Fu(CVSPGMR)p
+14951 33185 V 419 w(LMEM)p 17694 33185 V 419 w(NULL)p
+Black 555 w Fw(The)f Fs(cvspgmr)f Fw(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 35120 a(Notes)p Black 4072 w(In)402 b(terms)h(of)g(the)g
+(problem)g(size)g Fl(N)523 b Fw(and)403 b(maxim)-31 b(um)405
+b(subspace)d(size)h Fu(maxl)p Fw(,)412 b(the)402 b(actual)j(size)d(of)
+10814 36449 y(the)455 b(real)g(w)-31 b(orkspace)456 b(is)f(\()p
+Fu(maxl)p Fw(+5\))305 b Fn(\244)f Fl(N)121 b Fw(+)455
+b Fu(maxl)g Fn(\244)p Fw(\()h Fu(maxl)p Fw(+4\))304 b(+)f(1)456
+b Fu(realtype)g Fw(w)-31 b(ords.)750 b(\(In)455 b(a)10814
+37777 y(parallel)371 b(setting,)g(this)e(v)-61 b(alue)370
+b(is)f(global)j(-)d(summed)g(o)-31 b(v)g(er)370 b(all)g(pro)31
+b(cesses.\))p 4000 40677 12957 45 v 4000 42263 45 1587
+v 4376 41685 a Fu(CVSpgmrGetNumLinIters)p 16913 42263
+V 4000 42307 12957 45 v Black 4000 43669 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVSpgmrGetNumLinIters\(cvode)p
+30639 43669 349 45 v 422 w(mem,)h(&nliters\);)p Black
+4000 45605 a Fw(Description)p Black 1286 w(The)396 b(function)i
+Fu(CVSpgmrGetNumLinIters)g Fw(returns)d(the)i(cum)-31
+b(ulativ)g(e)398 b(n)-31 b(um)g(b)31 b(er)396 b(of)h(linear)f(iter-)
+10814 46934 y(ations.)p Black 4000 48869 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 48869 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 50501
+a Fu(nliters)p Black 1554 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(the)g(curren)-31 b(t)368 b(n)-31 b(um)g(b)31
+b(er)370 b(of)f(linear)h(iterations.)p Black 4000 52437
+a(Return)f(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(is)f(one)g(of)p Black 10814 54373
+a Fu(CVSPGMR)p 14951 54373 V 419 w(SUCCESS)p Black 1555
+w Fw(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfully)g(set.)p Black 10814 56005 a
+Fu(CVSPGMR)p 14951 56005 V 419 w(MEM)p 17113 56005 V
+419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p 26172 56005
+V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p
+Fw(.)p Black 10814 57637 a Fu(CVSPGMR)p 14951 57637 V
+419 w(LMEM)p 17694 57637 V 419 w(NULL)p Black 555 w Fw(The)f
+Fs(cvspgmr)f Fw(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)p 4000 60425 13539 45 v 4000
+62011 45 1587 v 4376 61433 a Fu(CVSpgmrGetNumConvFails)p
+17494 62011 V 4000 62055 13539 45 v Black 4000 63417
+a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVSpgmrGetNumConvFails\(cvode)p 31220 63417 349 45 v
+423 w(mem,)g(&nlcfails\);)p Black 4000 65353 a Fw(Description)p
+Black 1286 w(The)332 b(function)h Fu(CVSpgmrGetNumConvFails)i
+Fw(returns)c(the)h(cum)-31 b(ulativ)g(e)334 b(n)-31 b(um)g(b)31
+b(er)332 b(of)g(linear)h(con-)10814 66681 y(v)-31 b(ergence)369
+b(failures.)p Black 4000 68617 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 13789 68617 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 70249 a Fu(nlcfails)p Black
+973 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(the)g(curren)-31
+b(t)368 b(n)-31 b(um)g(b)31 b(er)370 b(of)f(linear)h(con)-31
+b(v)g(ergence)370 b(failures.)p Black 4000 72185 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of)p Black 10814 74120 a Fu(CVSPGMR)p
+14951 74120 V 419 w(SUCCESS)p Black 1555 w Fw(The)g(optional)j(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 75753 a Fu(CVSPGMR)p 14951 75753 V 419 w(MEM)p
+17113 75753 V 419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p
+26172 75753 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 10814 77385 a Fu(CVSPGMR)p
+14951 77385 V 419 w(LMEM)p 17694 77385 V 419 w(NULL)p
+Black 555 w Fw(The)f Fs(cvspgmr)f Fw(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black Black eop
+%%Page: 58 68
+58 67 bop Black 0 2701 a Fx(58)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 5965 13539 45 v 0 7552 45 1587 v 376 6974 a Fu
+(CVSpgmrGetNumPrecEvals)p 13494 7552 V 0 7596 13539 45
+v Black 0 8876 a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVSpgmrGetNumPrecEvals\(cvode)p 27220 8876 349 45 v
+423 w(mem,)g(&npevals\);)p Black 0 10643 a Fw(Description)p
+Black 1286 w(The)396 b(function)h Fu(CVSpgmrGetNumPrecEvals)i
+Fw(returns)c(the)h(n)-31 b(um)g(b)31 b(er)396 b(of)g(preconditioner)h
+(ev)-61 b(alu-)6814 11971 y(ations,)371 b(i.e.,)g(the)e(n)-31
+b(um)g(b)31 b(er)370 b(of)f(calls)h(made)g(to)g Fu(psetup)g
+Fw(with)g Fu(jok)582 b(=)f(FALSE)p Fw(.)p Black 0 13738
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p 9789
+13738 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p
+Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25
+b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black
+6814 15284 a Fu(npevals)p Black 1554 w Fw(\()p Fu(long)582
+b(int)p Fw(\))370 b(the)g(curren)-31 b(t)368 b(n)-31
+b(um)g(b)31 b(er)370 b(of)f(calls)h(to)g Fu(psetup)p
+Fw(.)p Black 0 17051 a(Return)f(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 6814 18818 a Fu(CVSPGMR)p 10951 18818 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 20364 a Fu(CVSPGMR)p 10951 20364 V 419 w(MEM)p 13113
+20364 V 419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p
+22172 20364 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 6814 21910 a Fu(CVSPGMR)p
+10951 21910 V 419 w(LMEM)p 13694 21910 V 419 w(NULL)p
+Black 555 w Fw(The)f Fs(cvspgmr)f Fw(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+0 24175 14120 45 v 0 25762 45 1587 v 376 25183 a Fu
+(CVSpgmrGetNumPrecSolves)p 14075 25762 V 0 25806 14120
+45 v Black 0 27085 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVSpgmrGetNumPrecSolves\(cvode)p 27801 27085 349
+45 v 423 w(mem,)g(&npsolves\);)p Black 0 28852 a Fw(Description)p
+Black 1286 w(The)274 b(function)h Fu(CVSpgmrGetNumPrecSolves)i
+Fw(returns)272 b(the)i(cum)-31 b(ulativ)g(e)277 b(n)-31
+b(um)g(b)31 b(er)273 b(of)i(calls)f(made)6814 30181 y(to)370
+b(the)f(preconditioner)i(solv)-31 b(e)370 b(function)g
+Fu(psolve)p Fw(.)p Black 0 31948 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 9789 31948 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 33494
+a Fu(npsolves)p Black 973 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(the)g(curren)-31 b(t)368 b(n)-31 b(um)g(b)31
+b(er)370 b(of)f(calls)h(to)g Fu(psolve)p Fw(.)p Black
+0 35261 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+6814 37028 a Fu(CVSPGMR)p 10951 37028 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 38574 a Fu(CVSPGMR)p 10951 38574 V 419 w(MEM)p 13113
+38574 V 419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p
+22172 38574 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 6814 40119 a Fu(CVSPGMR)p
+10951 40119 V 419 w(LMEM)p 13694 40119 V 419 w(NULL)p
+Black 555 w Fw(The)f Fs(cvspgmr)f Fw(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+0 42385 14701 45 v 0 43971 45 1587 v 376 43393 a Fu
+(CVSpgmrGetNumJtimesEvals)p 14656 43971 V 0 44015 14701
+45 v Black 0 45295 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVSpgmrGetNumJtimesEvals\(cvode)p 28382 45295 349
+45 v 423 w(mem,)h(&njvevals\);)p Black 0 47062 a Fw(Description)p
+Black 1286 w(The)558 b(function)i Fu(CVSpgmrGetNumJtimesEvals)h
+Fw(returns)c(the)h(cum)-31 b(ulativ)g(e)561 b(n)-31 b(um)g(b)31
+b(er)558 b(of)h(calls)6814 48390 y(made)370 b(to)g(the)f(Jacobian-v)-31
+b(ector)372 b(pro)31 b(duct)369 b(function)i Fu(jtimes)p
+Fw(.)p Black 0 50158 a(Argumen)-31 b(ts)p Black Black
+1517 w Fu(cvode)p 9789 50158 V 419 w(mem)p Black 554
+w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 51703 a Fu(njvevals)p Black
+973 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(the)g(curren)-31
+b(t)368 b(n)-31 b(um)g(b)31 b(er)370 b(of)f(calls)h(made)g(to)g
+Fu(jtimes)p Fw(.)p Black 0 53470 a(Return)f(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 6814 55237 a Fu(CVSPGMR)p 10951 55237 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 56783 a Fu(CVSPGMR)p 10951 56783 V 419 w(MEM)p 13113
+56783 V 419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p
+22172 56783 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 6814 58329 a Fu(CVSPGMR)p
+10951 58329 V 419 w(LMEM)p 13694 58329 V 419 w(NULL)p
+Black 555 w Fw(The)f Fs(cvspgmr)f Fw(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+0 60594 12957 45 v 0 62181 45 1587 v 376 61603 a Fu
+(CVSpgmrGetNumRhsEvals)p 12913 62181 V 0 62225 12957
+45 v Black 0 63505 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVSpgmrGetNumRhsEvals\(cvode)p 26639 63505 349
+45 v 422 w(mem,)h(&nfevalsSG\);)p Black 0 65272 a Fw(Description)p
+Black 1286 w(The)365 b(function)i Fu(CVSpgmrGetNumRhsEvals)h
+Fw(returns)c(the)h(n)-31 b(um)g(b)31 b(er)365 b(of)h(calls)g(made)g(to)
+g(the)f(user-)6814 66600 y(supplied)f(righ)-31 b(t-hand)365
+b(side)e(function)i(due)e(to)h(the)g(\257nite)g(di\256erence)f
+(Jacobian-v)-31 b(ector)366 b(pro)31 b(duct)6814 67928
+y(appro)-31 b(ximation.)p Black 0 69696 a(Argumen)g(ts)p
+Black Black 1517 w Fu(cvode)p 9789 69696 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 71241
+a Fu(nfevalsSG)p Black 555 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(the)f(n)-31 b(um)g(b)31 b(er)370 b(of)f(calls)h(to)g(the)g
+(user)e(righ)-31 b(t-hand)370 b(side)g(function.)p Black
+0 73008 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p Black
+6814 74775 a Fu(CVSPGMR)p 10951 74775 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 76321 a Fu(CVSPGMR)p 10951 76321 V 419 w(MEM)p 13113
+76321 V 419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p
+22172 76321 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 6814 77867 a Fu(CVSPGMR)p
+10951 77867 V 419 w(LMEM)p 13694 77867 V 419 w(NULL)p
+Black 555 w Fw(The)f Fs(cvspgmr)f Fw(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black Black eop
+%%Page: 59 69
+59 68 bop Black 4000 2701 a Fx(5.5)425 b(User-callable)g(functions)g
+(for)g(IVP)g(solution)22490 b(59)p 4000 3144 48001 45
+v Black Black 4000 6974 a Fw(Notes)p Black 4072 w(The)405
+b(v)-61 b(alue)404 b Fu(nfevalsSG)i Fw(is)e(incremen)-31
+b(ted)405 b(only)h(if)f(the)f(default)i Fu(CVSpgmrDQJtimes)g
+Fw(di\256erence)10814 8302 y(quotien)-31 b(t)371 b(function)g(is)e
+(used.)p 4000 10601 11214 45 v 4000 12188 45 1587 v 4376
+11610 a Fu(CVSpgmrGetLastFlag)p 15169 12188 V 4000 12232
+11214 45 v Black 4000 13516 a Fw(Call)p Black 4848 w
+Fu(flag)582 b(=)f(CVSpgmrGetLastFlag\(cvode)p 28896 13516
+349 45 v 422 w(mem,)h(&lsflag\);)p Black 4000 15297 a
+Fw(Description)p Black 1286 w(The)516 b(function)i Fu
+(CVSpgmrGetLastFlag)g Fw(returns)d(the)i(last)g(return)e(v)-61
+b(alue)517 b(from)f(a)h Fs(cvspgmr)10814 16625 y Fw(routine.)p
+Black 4000 18406 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 18406 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 19960 a Fu(lsflag)p Black
+2135 w Fw(\()p Fu(int)p Fw(\))370 b(the)g(v)-61 b(alue)370
+b(of)f(the)h(last)g(return)e(\260ag)i(from)g(a)f Fs(cvspgmr)g
+Fw(function.)p Black 4000 21741 a(Return)g(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 10814 23522 a Fu(CVSPGMR)p 14951 23522 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+10814 25076 a Fu(CVSPGMR)p 14951 25076 V 419 w(MEM)p
+17113 25076 V 419 w(NULL)p Black 1136 w Fw(The)g Fu(cvode)p
+26172 25076 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 10814 26631 a Fu(CVSPGMR)p
+14951 26631 V 419 w(LMEM)p 17694 26631 V 419 w(NULL)p
+Black 555 w Fw(The)f Fs(cvspgmr)f Fw(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 28411 a(Notes)p Black 4072 w(If)343 b(the)g
+Fs(cvspgmr)g Fw(setup)g(function)i(failed)f(\()p Fu(CVode)g
+Fw(returned)f Fu(CV)p 38358 28411 V 419 w(LSETUP)p 42263
+28411 V 419 w(FAIL)p Fw(\),)i(then)e Fu(lsflag)10814
+29740 y Fw(con)-31 b(tains)371 b(the)e(return)g(v)-61
+b(alue)369 b(of)h(the)f(preconditioner)i(setup)e(function)i
+Fu(psetup)p Fw(.)10814 31520 y(If)380 b(the)g Fs(cvspgmr)f
+Fw(solv)-31 b(e)381 b(function)h(failed)g(\()p Fu(CVode)f
+Fw(returned)e Fu(CV)p 38407 31520 V 419 w(LSOLVE)p 42312
+31520 V 419 w(FAIL)p Fw(\),)j Fu(lsflag)f Fw(con-)10814
+32849 y(tains)502 b(the)f(error)f(return)g(\260ag)i(from)g
+Fu(SpgmrSolve)g Fw(and)f(will)i(b)31 b(e)500 b(one)h(of:)757
+b Fu(SPGMR)p 46583 32849 V 419 w(CONV)p 49326 32849 V
+419 w(FAIL)10814 34177 y Fw(indicating)365 b(a)e(failure)h(to)f(con)-31
+b(v)g(erge,)366 b Fu(SPGMR)p 29446 34177 V 419 w(QRFACT)p
+33351 34177 V 419 w(FAIL)d Fw(indicating)j(a)c(singular)i(matrix)g(w)
+-31 b(as)10814 35505 y(found)415 b(during)g(the)f(QR)g(factorization,)
+430 b Fu(SPGMR)p 31329 35505 V 419 w(PSOLVE)p 35234 35505
+V 419 w(FAIL)p 37977 35505 V 419 w(REC)415 b Fw(indicating)i(that)f
+(the)f(pre-)10814 36834 y(conditioner)380 b(solv)-31
+b(e)380 b(function)g Fu(psolve)f Fw(failed)h(reco)-31
+b(v)g(erably)-92 b(,)382 b Fu(SPGMR)p 39581 36834 V 420
+w(MEM)p 41744 36834 V 418 w(NULL)d Fw(indicating)j(that)10814
+38162 y(the)367 b Fs(spgmr)e Fw(memory)i(is)g Fu(NULL)p
+Fw(,)g Fu(SPGMR)p 27769 38162 V 419 w(ATIMES)p 31674
+38162 V 420 w(FAIL)f Fw(indicating)j(a)e(failure)h(of)f(the)f
+(Jacobian-)10814 39491 y(v)-31 b(ector)280 b(pro)31 b(duct)280
+b(function,)300 b Fu(SPGMR)p 25660 39491 V 419 w(PSOLVE)p
+29565 39491 V 419 w(FAIL)p 32308 39491 V 419 w(UNREC)280
+b Fw(indicating)j(that)e(the)f(preconditioner)10814 40819
+y(solv)-31 b(e)377 b(function)h Fu(psolve)f Fw(failed)h(unreco)-31
+b(v)g(erably)-92 b(,)380 b Fu(SPGMR)p 35007 40819 V 419
+w(GS)p 36588 40819 V 419 w(FAIL)d Fw(indicating)i(a)d(failure)i(in)f
+(the)10814 42147 y(Gram-Sc)-31 b(hmidt)534 b(pro)31 b(cedure,)572
+b(or)532 b Fu(SPGMR)p 28606 42147 V 420 w(QRSOL)p 31931
+42147 V 419 w(FAIL)g Fw(indicating)j(that)f(the)e(matrix)i
+Fl(R)540 b Fw(w)-31 b(as)10814 43476 y(found)370 b(to)g(b)31
+b(e)368 b(singular)i(during)g(the)f(QR)g(solv)-31 b(e)370
+b(phase.)4000 47000 y Fo(5.5.7)1495 b(CV)-42 b(ODES)500
+b(reinitialization)h(function)4000 49052 y Fw(The)322
+b(function)g Fu(CVodeReInit)h Fw(reinitializes)h(the)e(main)g
+Fs(cv)-25 b(odes)322 b Fw(solv)-31 b(er)322 b(for)f(the)h(solution)h
+(of)f(a)g(problem,)332 b(where)4000 50380 y(a)497 b(prior)g(call)h(to)f
+Fu(CVodeMalloc)h Fw(has)f(b)31 b(een)496 b(made.)876
+b(The)497 b(new)g(problem)h(m)-31 b(ust)497 b(ha)-31
+b(v)g(e)498 b(the)f(same)g(size)g(as)g(the)4000 51708
+y(previous)352 b(one.)487 b Fu(CVodeReInit)353 b Fw(p)31
+b(erforms)351 b(the)h(same)g(input)h(c)-31 b(hec)g(king)353
+b(and)f(initializations)k(that)d Fu(CVodeMalloc)4000
+53037 y Fw(do)31 b(es,)442 b(but)428 b(do)31 b(es)427
+b(no)h(memory)g(allo)31 b(cation)431 b(as)d(it)g(assumes)f(that)i(the)f
+(existing)h(in)-31 b(ternal)429 b(memory)f(is)g(su\261cien)-31
+b(t)4000 54365 y(for)369 b(the)h(new)f(problem.)5660
+55698 y(The)418 b(use)g(of)g Fu(CVodeReInit)h Fw(requires)e(that)i(the)
+f(maxim)-31 b(um)421 b(metho)31 b(d)419 b(order,)429
+b(denoted)419 b(b)-31 b(y)418 b Fu(maxord)p Fw(,)431
+b(b)31 b(e)418 b(no)4000 57027 y(larger)386 b(for)g(the)h(new)f
+(problem)g(than)h(for)f(the)g(previous)h(problem.)543
+b(This)387 b(condition)h(is)e(automatically)k(ful\257lled)4000
+58355 y(if)332 b(the)f(m)-31 b(ultistep)334 b(metho)31
+b(d)332 b(parameter)g Fu(lmm)g Fw(is)f(unc)-31 b(hanged)332
+b(\(or)g(c)-31 b(hanged)332 b(from)g Fu(CV)p 39362 58355
+V 418 w(ADAMS)g Fw(to)g Fu(CV)p 45494 58355 V 419 w(BDF)p
+Fw(\))g(and)g(the)4000 59683 y(default)371 b(v)-61 b(alue)369
+b(for)h Fu(maxord)f Fw(is)h(sp)31 b(eci\257ed.)5660 61016
+y(If)435 b(there)g(are)f(c)-31 b(hanges)436 b(to)f(the)g(linear)h(solv)
+-31 b(er)435 b(sp)31 b(eci\257cations,)453 b(mak)-31
+b(e)436 b(the)f(appropriate)h Fu(CV*Set*)f Fw(calls,)453
+b(as)4000 62345 y(describ)31 b(ed)368 b(in)i Fn(x)p Fw(5.5.2)p
+4000 64244 7146 45 v 4000 65584 45 1341 v 4376 65252
+a Fu(CVodeReInit)p 11101 65584 V 4000 65628 7146 45 v
+Black 4000 66985 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeReInit\(cvode)p 24829 66985 349 45 v 421 w(mem,)h(f,)f(t0,)h
+(y0,)f(itol,)h(reltol,)g(abstol\);)p Black 4000 68766
+a Fw(Description)p Black 1286 w(The)420 b(function)i
+Fu(CVodeReInit)f Fw(pro)-31 b(vides)421 b(required)e(problem)i(sp)31
+b(eci\257cations)421 b(and)f(reinitializes)10814 70094
+y Fs(cv)-25 b(odes)p Fw(.)p Black 4000 71875 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 71875 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 73430
+a Fu(f)p Black 5040 w Fw(\()p Fu(CVRhsFn)p Fw(\))348
+b(is)e(the)g Fs(C)g Fw(function)h(whic)-31 b(h)347 b(computes)g
+Fl(f)465 b Fw(in)346 b(the)g(ODE.)g(This)g(function)16435
+74758 y(has)369 b(the)h(form)f Fu(f\(N,)582 b(t,)g(y,)f(ydot,)h(f)p
+33463 74758 V 418 w(data\))370 b Fw(\(for)g(full)g(details)h(see)d
+Fn(x)p Fw(5.6\).)p Black 10814 76312 a Fu(t0)p Black
+4459 w Fw(\()p Fu(realtype)p Fw(\))j(is)e(the)h(initial)i(v)-61
+b(alue)369 b(of)h Fl(t)p Fw(.)p Black 10814 77867 a Fu(y0)p
+Black 4459 w Fw(\()p Fu(N)p 17516 77867 V 419 w(Vector)p
+Fw(\))g(is)g(the)f(initial)j(v)-61 b(alue)370 b(of)f
+Fl(y)40 b Fw(.)p Black Black eop
+%%Page: 60 70
+60 69 bop Black 0 2701 a Fx(60)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black Black 6814 6974 a Fu(itol)p Black 3297 w Fw(\()p
+Fu(int)p Fw(\))261 b(is)f(one)g(of)h Fu(CV)p 20607 6974
+349 45 v 418 w(SS)p Fw(,)g Fu(CV)p 23917 6974 V 418 w(SV)p
+Fw(,)g(or)f Fu(CV)p 28474 6974 V 418 w(WF)p Fw(,)h(where)f
+Fu(itol)581 b(=)h(CV)p 38944 6974 V 418 w(SS)260 b Fw(indicates)h
+(scalar)12435 8302 y(relativ)-31 b(e)410 b(error)e(tolerance)h(and)g
+(scalar)g(absolute)h(error)d(tolerance,)420 b(while)410
+b Fu(itol)582 b(=)12435 9631 y(CV)p 13667 9631 V 419
+w(SV)491 b Fw(indicates)i(scalar)f(relativ)-31 b(e)494
+b(error)c(tolerance)j(and)f(v)-31 b(ector)492 b(absolute)h(error)12435
+10959 y(tolerance.)466 b(The)285 b(latter)i(c)-31 b(hoice)286
+b(is)f(imp)31 b(ortan)-31 b(t)288 b(when)d(the)h(absolute)g(error)f
+(tolerance)12435 12287 y(needs)362 b(to)h(b)31 b(e)362
+b(di\256eren)-31 b(t)363 b(for)g(eac)-31 b(h)363 b(comp)31
+b(onen)-31 b(t)364 b(of)f(the)g(ODE.)g(If)f Fu(itol)p
+Fw(=)p Fu(CV)p 44281 12287 V 419 w(WF)p Fw(,)i(the)12435
+13616 y(argumen)-31 b(ts)498 b Fu(reltol)g Fw(and)g Fu(abstol)g
+Fw(are)f(ignored)h(and)g(the)f(user)f(is)i(exp)31 b(ected)497
+b(to)12435 14944 y(pro)-31 b(vide)396 b(a)g(function)h(to)g(ev)-61
+b(aluate)397 b(the)f(error)e(w)-31 b(eigh)g(t)398 b(v)-31
+b(ector)396 b Fl(W)550 b Fw(from)396 b(\(3.7\).)574 b(See)12435
+16272 y Fu(CVodeSetEwtFn)371 b Fw(in)e Fn(x)p Fw(5.5.4.)p
+Black 6814 17902 a Fu(reltol)p Black 2135 w Fw(\()p Fu(realtype)p
+Fw(\))i(is)e(the)h(relativ)-31 b(e)371 b(error)d(tolerance.)p
+Black 6814 19532 a Fu(abstol)p Black 2135 w Fw(\()p Fu(void)582
+b(*)p Fw(\))548 b(is)f(a)h(p)31 b(oin)-31 b(ter)548 b(to)g(the)g
+(absolute)g(error)f(tolerance.)1028 b(If)547 b Fu(itol)p
+Fw(=)p Fu(CV)p 46181 19532 V 419 w(SS)p Fw(,)12435 20861
+y Fu(abstol)335 b Fw(m)-31 b(ust)336 b(b)31 b(e)334 b(a)h(p)31
+b(oin)-31 b(ter)336 b(to)f(a)g Fu(realtype)h Fw(v)-61
+b(ariable.)482 b(If)335 b Fu(itol)p Fw(=)p Fu(CV)p 42360
+20861 V 419 w(SV)p Fw(,)g Fu(abstol)12435 22189 y Fw(m)-31
+b(ust)370 b(b)31 b(e)369 b(an)g Fu(N)p 18873 22189 V
+419 w(Vector)g Fw(v)-61 b(ariable.)p Black 0 24120 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(\260ag)h
+Fu(flag)f Fw(\(of)i(t)-31 b(yp)31 b(e)369 b Fu(int)p
+Fw(\))h(will)h(b)31 b(e)369 b(one)g(of)h(the)f(follo)-31
+b(wing:)p Black 6814 26052 a Fu(CV)p 8046 26052 V 419
+w(SUCCESS)p Black 1554 w Fw(The)369 b(call)i(to)f Fu(CVodeReInit)g
+Fw(w)-31 b(as)370 b(successful.)p Black 6814 27682 a
+Fu(CV)p 8046 27682 V 419 w(MEM)p 10208 27682 V 419 w(NULL)p
+Black 1135 w Fw(The)363 b Fs(cv)-25 b(odes)364 b Fw(memory)g(blo)31
+b(c)-31 b(k)364 b(w)-31 b(as)364 b(not)g(initialized)i(through)e(a)f
+(previous)h(call)14016 29010 y(to)370 b Fu(CVodeCreate)p
+Fw(.)p Black 6814 30640 a Fu(CV)p 8046 30640 V 419 w(NO)p
+9627 30640 V 418 w(MALLOC)p Black 555 w Fw(Memory)274
+b(space)f(for)h(the)g Fs(cv)-25 b(odes)274 b Fw(memory)h(blo)31
+b(c)-31 b(k)274 b(w)-31 b(as)275 b(not)f(allo)31 b(cated)276
+b(through)14016 31968 y(a)369 b(previous)h(call)g(to)g
+Fu(CVodeMalloc)p Fw(.)p Black 6814 33598 a Fu(CV)p 8046
+33598 V 419 w(ILL)p 10208 33598 V 419 w(INPUT)p Black
+554 w Fw(An)f(input)h(argumen)-31 b(t)371 b(to)e Fu(CVodeReInit)i
+Fw(has)e(an)h(illegal)i(v)-61 b(alue.)p Black 0 35530
+a(Notes)p Black 4072 w(If)344 b(an)g(error)f(o)31 b(ccurred,)348
+b Fu(CVodeReInit)d Fw(also)g(prin)-31 b(ts)344 b(an)g(error)f(message)h
+(to)h(the)f(\257le)g(sp)31 b(eci\257ed)344 b(b)-31 b(y)6814
+36858 y(the)369 b(optional)j(input)e Fu(errfp)p Fw(.)7942
+39598 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1429
+b Fw(It)300 b(is)h(the)g(user's)e(resp)31 b(onsibilit)-31
+b(y)302 b(to)g(pro)-31 b(vide)301 b(compatible)i Fu(itol)e
+Fw(and)g Fu(abstol)g Fw(argumen)-31 b(ts.)0 43684 y Fr(5.6)1793
+b(User-supplied)600 b(functions)0 46257 y Fw(The)400
+b(user-supplied)f(functions)i(consist)f(of)h(one)f(function)h
+(de\257ning)f(the)g(ODE,)g(\(optionally\))k(a)c(function)i(that)0
+47586 y(pro)-31 b(vides)355 b(the)f(error)g(w)-31 b(eigh)g(t)356
+b(v)-31 b(ector,)359 b(\(optionally\))g(a)354 b(function)i(that)g(pro)
+-31 b(vides)355 b(Jacobian)h(related)f(information)0
+48914 y(for)310 b(the)h(linear)g(solv)-31 b(er)311 b(\(if)g(Newton)h
+(iteration)g(is)e(c)-31 b(hosen\),)323 b(and)311 b(\(optionally\))k
+(one)310 b(or)g(t)-31 b(w)g(o)312 b(functions)g(that)f(de\257ne)0
+50242 y(the)369 b(preconditioner)i(for)e(use)g(in)g(the)h
+Fs(spgmr)e Fw(algorithm.)0 53767 y Fo(5.6.1)1495 b(ODE)499
+b(righ)-42 b(t-hand)501 b(side)0 55959 y Fw(The)369 b(user)g(m)-31
+b(ust)369 b(pro)-31 b(vide)370 b(a)g(function)g(of)g(t)-31
+b(yp)31 b(e)370 b Fu(CVRhsFn)g Fw(de\257ned)f(as)g(follo)-31
+b(ws:)p 0 58253 4821 45 v 0 59594 45 1341 v 376 59262
+a Fu(CVRhsFn)p 4776 59594 V 0 59638 4821 45 v Black 0
+61070 a Fw(De\257nition)p Black 2034 w Fu(typedef)582
+b(void)g(\(*CVRhsFn\)\()r(realtype)g(t,)f(N)p 28386 61070
+349 45 v 419 w(Vector)h(y,)f(N)p 35197 61070 V 419 w(Vector)h(ydot,)
+20762 62399 y(void)f(*f)p 24899 62399 V 419 w(data\);)p
+Black 0 64280 a Fw(Purp)31 b(ose)p Black 2884 w(This)336
+b(function)g(computes)g(the)g(ODE)e(righ)-31 b(t-hand)337
+b(side)e(for)g(a)h(giv)-31 b(en)336 b(v)-61 b(alue)336
+b(of)g(the)f(indep)31 b(enden)-31 b(t)6814 65608 y(v)-61
+b(ariable)370 b Fl(t)f Fw(and)g(state)h(v)-31 b(ector)370
+b Fl(y)40 b Fw(.)p Black 0 67540 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(t)p Black 3297 w Fw(is)369 b(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(indep)31 b(enden)-31
+b(t)370 b(v)-61 b(ariable.)p Black 6814 69170 a Fu(y)p
+Black 3297 w Fw(is)369 b(the)g(curren)-31 b(t)369 b(v)-61
+b(alue)370 b(of)f(the)h(dep)31 b(enden)-31 b(t)369 b(v)-61
+b(ariable)370 b(v)-31 b(ector,)371 b Fl(y)40 b Fw(\()p
+Fl(t)p Fw(\).)p Black 6814 70800 a Fu(ydot)p Black 1554
+w Fw(is)369 b(the)g(output)i(v)-31 b(ector)369 b Fl(f)119
+b Fw(\()p Fl(t;)184 b(y)40 b Fw(\).)p Black 6814 72430
+a Fu(f)p 7465 72430 V 419 w(data)p Black 554 w Fw(is)535
+b(a)g(p)31 b(oin)-31 b(ter)536 b(to)g(user)f(data)h(|)f(the)h(same)f
+(as)g(the)h Fu(f)p 34663 72430 V 419 w(data)f Fw(parameter)h(passed)f
+(to)10692 73758 y Fu(CVodeSetFdata)p Fw(.)p Black 0 75689
+a(Return)369 b(v)-61 b(alue)p Black 554 w(A)369 b Fu(CVRhsFn)h
+Fw(function)h(t)-31 b(yp)31 b(e)369 b(do)31 b(es)369
+b(not)h(ha)-31 b(v)g(e)370 b(a)g(return)e(v)-61 b(alue.)p
+Black 0 77621 a(Notes)p Black 4072 w(Allo)31 b(cation)372
+b(of)e(memory)g(for)f Fu(ydot)h Fw(is)f(handled)h(within)h
+Fs(cv)-25 b(odes)p Fw(.)p Black Black eop
+%%Page: 61 71
+61 70 bop Black 4000 2701 a Fx(5.6)425 b(User-supplied)h(functions)
+31554 b(61)p 4000 3144 48001 45 v Black 4000 6974 a Fo(5.6.2)1495
+b(Error)500 b(w)-42 b(eigh)g(t)499 b(function)4000 9116
+y Fw(As)347 b(an)h(alternativ)-31 b(e)351 b(to)d(pro)-31
+b(viding)349 b(the)f(relativ)-31 b(e)350 b(and)d(absolute)i
+(tolerances,)354 b(the)348 b(user)e(ma)-31 b(y)349 b(pro)-31
+b(vide)348 b(a)g(function)4000 10444 y(of)383 b(t)-31
+b(yp)31 b(e)384 b Fu(CVEwtFn)g Fw(to)f(compute)h(a)g(v)-31
+b(ector)383 b Fu(ewt)g Fw(con)-31 b(taining)386 b(the)d(w)-31
+b(eigh)g(ts)385 b(in)e(the)g(WRMS)f(norm)i Fn(k)f Fl(v)40
+b Fn(k)47934 10610 y Fk(WRMS)51139 10444 y Fw(=)4000
+10920 y Fh(q)p 5107 10920 8413 45 v 1379 x Fw(\(1)p Fl(=)-61
+b(N)121 b Fw(\))8206 11469 y Fh(P)9376 11742 y Fj(N)9376
+12631 y Fk(1)10401 12299 y Fl(W)11446 12465 y Fj(i)12061
+12299 y Fn(\242)246 b Fl(v)13151 12465 y Fj(i)13519 12299
+y Fw(.)493 b(The)369 b(function)i(t)-31 b(yp)31 b(e)369
+b Fu(CVEwtFn)h Fw(is)f(de\257ned)g(as)g(follo)-31 b(ws:)p
+4000 14853 4821 45 v 4000 16194 45 1341 v 4376 15862
+a Fu(CVEwtFn)p 8776 16194 V 4000 16238 4821 45 v Black
+4000 17643 a Fw(De\257nition)p Black 2034 w Fu(typedef)582
+b(int)g(\(*CVEwtFn\)\(N)p 24830 17643 349 45 v 420 w(Vector)g(y,)f(N)p
+31642 17643 V 419 w(Vector)h(ewt,)g(void)g(*e)p 43103
+17643 V 418 w(data\);)p Black 4000 19521 a Fw(Purp)31
+b(ose)p Black 2884 w(This)370 b(function)g(computes)g(the)g(WRMS)e
+(error)g(w)-31 b(eigh)g(ts)371 b(for)e(the)h(v)-31 b(ector)370
+b Fl(y)40 b Fw(.)p Black 4000 21398 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(y)p Black 3297 w Fw(is)369 b(the)g(v)-61
+b(alue)370 b(of)g(the)f(v)-31 b(ector)370 b(for)f(whic)-31
+b(h)370 b(the)g(WRMS)e(norm)h(m)-31 b(ust)370 b(b)31
+b(e)369 b(computed.)p Black 10814 23000 a Fu(ewt)p Black
+2135 w Fw(is)g(the)g(output)i(v)-31 b(ector)369 b(con)-31
+b(taining)373 b(the)c(error)f(w)-31 b(eigh)g(ts.)p Black
+10814 24603 a Fu(e)p 11465 24603 V 419 w(data)p Black
+554 w Fw(is)535 b(a)g(p)31 b(oin)-31 b(ter)536 b(to)g(user)f(data)h(|)f
+(the)h(same)f(as)g(the)h Fu(e)p 38663 24603 V 419 w(data)f
+Fw(parameter)h(passed)f(to)14692 25931 y Fu(CVodeSetEwtFn)p
+Fw(.)p Black 4000 27809 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(A)374 b Fu(CVEwtFn)h Fw(function)h(t)-31
+b(yp)31 b(e)374 b(m)-31 b(ust)375 b(return)f(0)g(if)h(it)g(successfuly)
+f(set)g(the)g(error)f(w)-31 b(eigh)g(ts)376 b(and)f Fn(\241)p
+Fw(1)10814 29137 y(otherwise.)494 b(In)368 b(case)h(of)h(failure,)h(a)e
+(message)h(is)f(prin)-31 b(ted)370 b(and)f(the)g(in)-31
+b(tegration)373 b(stops.)p Black 4000 31014 a(Notes)p
+Black 4072 w(Allo)31 b(cation)372 b(of)e(memory)g(for)f
+Fu(ewt)h Fw(is)f(handled)h(within)h Fs(cv)-25 b(odes)p
+Fw(.)11942 33668 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial
+Fd(!)1635 b Fw(The)507 b(error)f(w)-31 b(eigh)g(t)509
+b(v)-31 b(ector)507 b(m)-31 b(ust)508 b(ha)-31 b(v)g(e)507
+b(all)h(comp)31 b(onen)-31 b(ts)508 b(p)31 b(ositiv)-31
+b(e.)907 b(It)507 b(is)g(the)g(user's)10814 34997 y(resp)31
+b(onsiblit)-31 b(y)370 b(to)g(p)31 b(erform)369 b(this)h(test)f(and)h
+(return)e Fn(\241)p Fw(1)i(if)g(it)g(is)f(not)h(satis\257ed.)4000
+38377 y Fo(5.6.3)1495 b(Jacobian)500 b(information)g(\(direct)f(metho)
+42 b(d)499 b(with)g(dense)f(Jacobian\))4000 40518 y Fw(If)449
+b(the)g(direct)h(linear)f(solv)-31 b(er)450 b(with)g(dense)f(treatmen)
+-31 b(t)451 b(of)e(the)h(Jacobian)g(is)f(used)g(\(i.e.,)471
+b Fu(CVDense)450 b Fw(is)f(called)i(in)4000 41847 y(Step)369
+b(7)h(of)g Fn(x)p Fw(5.4\),)h(the)e(user)g(ma)-31 b(y)370
+b(pro)-31 b(vide)370 b(a)f(function)i(of)f(t)-31 b(yp)31
+b(e)369 b Fu(CVDenseJacFn)i Fw(de\257ned)e(b)-31 b(y:)p
+4000 44109 7727 45 v 4000 45449 45 1341 v 4376 45117
+a Fu(CVDenseJacFn)p 11682 45449 V 4000 45493 7727 45
+v Black 4000 46899 a Fw(De\257nition)p Black 2034 w Fu(typedef)582
+b(void)g(\(*CVDenseJacFn\)\()r(long)g(int)g(N,)f(DenseMat)h(J,)g
+(realtype)g(t,)27667 48227 y(N)p 28318 48227 349 45 v
+419 w(Vector)g(y,)f(N)p 35129 48227 V 419 w(Vector)h(fy,)g(void)f(*jac)
+p 47170 48227 V 419 w(data,)27667 49555 y(N)p 28318 49555
+V 419 w(Vector)h(tmp1,)g(N)p 36873 49555 V 418 w(Vector)g(tmp2,)g(N)p
+45427 49555 V 419 w(Vector)g(tmp3\);)p Black 4000 51443
+a Fw(Purp)31 b(ose)p Black 2884 w(This)370 b(function)g(computes)g(the)
+g(dense)e(Jacobian)j Fl(J)414 b Fw(=)307 b Fl(@)61 b(f)119
+b(=@)61 b(y)409 b Fw(\(or)370 b(an)f(appro)-31 b(ximation)373
+b(to)d(it\).)p Black 4000 53321 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(N)p Black 4459 w Fw(is)369 b(the)g(problem)h
+(size.)p Black 10814 54923 a Fu(J)p Black 4459 w Fw(is)f(the)g(output)i
+(Jacobian)g(matrix.)p Black 10814 56526 a Fu(t)p Black
+4459 w Fw(is)e(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370
+b(of)g(the)f(indep)31 b(enden)-31 b(t)370 b(v)-61 b(ariable.)p
+Black 10814 58129 a Fu(y)p Black 4459 w Fw(is)357 b(the)h(curren)-31
+b(t)357 b(v)-61 b(alue)357 b(of)h(the)g(dep)31 b(enden)-31
+b(t)357 b(v)-61 b(ariable)358 b(v)-31 b(ector,)361 b(namely)e(the)f
+(predicted)15854 59457 y(v)-61 b(alue)370 b(of)f Fl(y)40
+b Fw(\()p Fl(t)p Fw(\).)p Black 10814 61060 a Fu(fy)p
+Black 3878 w Fw(is)369 b(the)g(v)-31 b(ector)370 b Fl(f)119
+b Fw(\()p Fl(t;)184 b(y)40 b Fw(\).)p Black 10814 62663
+a Fu(jac)p 12627 62663 V 419 w(data)p Black 554 w Fw(is)369
+b(a)h(p)31 b(oin)-31 b(ter)370 b(to)g(user)e(data)i(|)f(the)h(same)f
+(as)g(the)h Fu(jac)p 39161 62663 V 419 w(data)f Fw(parameter)h(passed)f
+(to)15854 63991 y Fu(CVDenseSetJacData)p Fw(.)p Black
+10814 65594 a Fu(tmp1)p Black Black 10814 67196 a(tmp2)p
+Black Black 10814 68799 a(tmp3)p Black 2716 w Fw(are)f(p)31
+b(oin)-31 b(ters)369 b(to)g(memory)g(allo)31 b(cated)371
+b(for)e(v)-61 b(ariables)369 b(of)g(t)-31 b(yp)31 b(e)369
+b Fu(N)p 42970 68799 V 418 w(Vector)g Fw(whic)-31 b(h)370
+b(can)15854 70128 y(b)31 b(e)369 b(used)f(b)-31 b(y)370
+b Fu(CVDenseJacFn)g Fw(as)f(temp)31 b(orary)370 b(storage)h(or)e(w)-31
+b(ork)370 b(space.)p Black 4000 72005 a(Return)f(v)-61
+b(alue)p Black 554 w(A)369 b Fu(CVDenseJacFn)i Fw(function)g(t)-31
+b(yp)31 b(e)369 b(do)31 b(es)369 b(not)h(ha)-31 b(v)g(e)370
+b(a)g(return)e(v)-61 b(alue.)p Black 4000 73882 a(Notes)p
+Black 4072 w(A)338 b(user-supplied)g(dense)g(Jacobian)i(function)g(m)
+-31 b(ust)339 b(load)h(the)f Fu(N)f Fw(b)-31 b(y)339
+b Fu(N)f Fw(dense)g(matrix)i Fu(J)f Fw(with)h(an)10814
+75210 y(appro)-31 b(ximation)409 b(to)e(the)f(Jacobian)i(matrix)f
+Fl(J)512 b Fw(at)407 b(the)f(p)31 b(oin)-31 b(t)407 b(\()p
+Fu(t)p Fw(,)416 b Fu(y)p Fw(\).)603 b(Only)407 b(nonzero)f(elemen)-31
+b(ts)10814 76539 y(need)469 b(to)i(b)31 b(e)469 b(loaded)h(in)-31
+b(to)471 b Fu(J)f Fw(b)31 b(ecause)469 b Fu(J)g Fw(is)h(set)f(to)h(the)
+g(zero)f(matrix)i(b)31 b(efore)470 b(the)f(call)i(to)g(the)10814
+77867 y(Jacobian)371 b(function.)494 b(The)369 b(t)-31
+b(yp)31 b(e)370 b(of)g Fu(J)f Fw(is)g Fu(DenseMat)p Fw(.)p
+Black Black eop
+%%Page: 62 72
+62 71 bop Black 0 2701 a Fx(62)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 6814 6974 a Fw(The)514 b(accessor)g(macros)h Fu(DENSE)p
+20519 6974 349 45 v 419 w(ELEM)g Fw(and)f Fu(DENSE)p
+28979 6974 V 419 w(COL)h Fw(allo)-31 b(w)517 b(the)d(user)f(to)i(read)f
+(and)h(write)6814 8302 y(dense)356 b(matrix)j(elemen)-31
+b(ts)358 b(without)h(making)g(explicit)g(references)c(to)j(the)f
+(underlying)h(represen-)6814 9631 y(tation)402 b(of)e(the)h
+Fu(DenseMat)f Fw(t)-31 b(yp)31 b(e.)586 b Fu(DENSE)p
+24370 9631 V 419 w(ELEM\(J,)c(i,)f(j\))400 b Fw(references)f(the)h(\()p
+Fu(i)p Fw(,)409 b Fu(j)p Fw(\)-th)400 b(elemen)-31 b(t)6814
+10959 y(of)413 b(the)f(dense)g(matrix)i Fu(J)e Fw(\()p
+Fu(i)p Fw(,)424 b Fu(j)581 b Fw(=)380 b(0)184 b Fl(:)g(:)g(:)j(N)396
+b Fn(\241)275 b Fw(1\).)623 b(This)412 b(macro)h(is)g(mean)-31
+b(t)413 b(for)g(small)g(problems)6814 12287 y(for)449
+b(whic)-31 b(h)450 b(e\261ciency)g(of)g(access)e(is)h(not)h(a)g(ma)61
+b(jor)450 b(concern.)732 b(Th)-31 b(us,)470 b(in)449
+b(terms)g(of)h(the)f(indices)6814 13616 y Fl(m)371 b
+Fw(and)h Fl(n)g Fw(ranging)h(from)f(1)g(to)h Fl(N)121
+b Fw(,)373 b(the)f(Jacobian)h(elemen)-31 b(t)373 b Fl(J)33186
+13782 y Fj(m;n)35208 13616 y Fw(can)f(b)31 b(e)371 b(set)h(using)g(the)
+g(state-)6814 14944 y(men)-31 b(t)414 b Fu(DENSE)p 12631
+14944 V 420 w(ELEM\(J,)582 b(m-1,)f(n-1\))h(=)414 b Fl(J)25050
+15110 y Fj(m;n)26700 14944 y Fw(.)626 b(Alternativ)-31
+b(ely)-92 b(,)427 b Fu(DENSE)p 37584 14944 V 420 w(COL\(J,)582
+b(j\))413 b Fw(returns)g(a)6814 16272 y(p)31 b(oin)-31
+b(ter)308 b(to)h(the)f(\257rst)f(elemen)-31 b(t)309 b(of)f(the)g
+Fu(j)p Fw(-th)g(column)h(of)f Fu(J)g Fw(\()p Fu(j)581
+b Fw(=)308 b(0)184 b Fl(:)g(:)g(:)k(N)244 b Fn(\241)123
+b Fw(1\),)321 b(and)308 b(the)g(elemen)-31 b(ts)6814
+17601 y(of)324 b(the)h Fu(j)p Fw(-th)f(column)h(can)f(then)h(b)31
+b(e)323 b(accessed)g(using)i(ordinary)f(arra)-31 b(y)325
+b(indexing.)479 b(Consequen)-31 b(tly)-92 b(,)6814 18929
+y Fl(J)7428 19095 y Fj(m;n)9339 18929 y Fw(can)260 b(b)31
+b(e)260 b(loaded)i(using)f(the)f(statemen)-31 b(ts)262
+b Fu(col)p 27921 18929 V 419 w(n)581 b(=)h(DENSE)p 33570
+18929 V 419 w(COL\(J,)g(n-1\);)297 b(col)p 43002 18929
+V 419 w(n[m-1])582 b(=)6814 20257 y Fl(J)7428 20423 y
+Fj(m;n)9079 20257 y Fw(.)461 b(F)-92 b(or)277 b(large)g(problems,)296
+b(it)278 b(is)f(more)g(e\261cien)-31 b(t)278 b(to)g(use)e
+Fu(DENSE)p 34103 20257 V 419 w(COL)h Fw(than)h(to)f(use)g
+Fu(DENSE)p 45019 20257 V 419 w(ELEM)p Fw(.)6814 21586
+y(Note)370 b(that)h(b)31 b(oth)369 b(of)h(these)f(macros)h(n)-31
+b(um)g(b)31 b(er)369 b(ro)-31 b(ws)369 b(and)h(columns)g(starting)g
+(from)g(0.)6814 23355 y(The)363 b Fu(DenseMat)g Fw(t)-31
+b(yp)31 b(e)363 b(and)g(accessor)f(macros)h Fu(DENSE)p
+29705 23355 V 419 w(ELEM)g Fw(and)g Fu(DENSE)p 37862
+23355 V 419 w(COL)f Fw(are)h(do)31 b(cumen)-31 b(ted)6814
+24683 y(in)369 b Fn(x)p Fw(10.1.)6814 26452 y(If)415
+b(the)g(user's)g Fu(CVDenseJacFn)h Fw(function)h(uses)d(di\256erence)h
+(quotien)-31 b(t)417 b(appro)-31 b(ximations,)431 b(it)416
+b(ma)-31 b(y)6814 27780 y(need)484 b(to)g(access)f(quan)-31
+b(tities)487 b(not)d(in)g(the)g(argumen)-31 b(t)486 b(list.)837
+b(These)484 b(include)g(the)h(curren)-31 b(t)483 b(step)6814
+29109 y(size,)333 b(the)325 b(error)d(w)-31 b(eigh)g(ts,)336
+b(etc.)478 b(T)-92 b(o)324 b(obtain)i(these,)333 b(use)323
+b(the)h Fu(CVodeGet*)i Fw(functions)e(describ)31 b(ed)324
+b(in)6814 30437 y Fn(x)p Fw(5.5.6.)454 b(The)246 b(unit)h(roundo\256)f
+(can)h(b)31 b(e)246 b(accessed)f(as)h Fu(UNIT)p 30159
+30437 V 419 w(ROUNDOFF)h Fw(de\257ned)f(in)h Fu(sundialstypes.h)p
+Fw(.)0 33934 y Fo(5.6.4)1495 b(Jacobian)500 b(information)g(\(direct)f
+(metho)42 b(d)499 b(with)g(banded)g(Jacobian\))0 35977
+y Fw(If)437 b(the)g(direct)g(linear)h(solv)-31 b(er)438
+b(with)g(banded)f(treatmen)-31 b(t)439 b(of)f(the)f(Jacobian)i(is)e
+(used)f(\(i.e.)698 b Fu(CVBand)437 b Fw(is)g(called)i(in)0
+37305 y(Step)369 b(7)h(of)g Fn(x)p Fw(5.4\),)h(the)e(user)g(ma)-31
+b(y)370 b(pro)-31 b(vide)370 b(a)f(function)i(of)f(t)-31
+b(yp)31 b(e)369 b Fu(CVBandJacFn)i Fw(de\257ned)e(as)g(follo)-31
+b(ws:)p 0 39284 7146 45 v 0 40625 45 1341 v 376 40293
+a Fu(CVBandJacFn)p 7101 40625 V 0 40669 7146 45 v Black
+0 42021 a Fw(De\257nition)p Black 2034 w Fu(typedef)582
+b(void)g(\(*CVBandJacFn\)\()r(long)g(int)f(N,)h(long)g(int)f(mupper,)
+23086 43350 y(long)h(int)f(mlower,)i(BandMat)f(J,)f(realtype)i(t,)23086
+44678 y(N)p 23737 44678 349 45 v 419 w(Vector)f(y,)f(N)p
+30548 44678 V 419 w(Vector)h(fy,)f(void)h(*jac)p 42589
+44678 V 419 w(data,)23086 46006 y(N)p 23737 46006 V 419
+w(Vector)g(tmp1,)g(N)p 32292 46006 V 418 w(Vector)g(tmp2,)g(N)p
+40846 46006 V 419 w(Vector)g(tmp3\);)p Black 0 47786
+a Fw(Purp)31 b(ose)p Black 2884 w(This)343 b(function)g(computes)g(the)
+g(banded)f(Jacobian)i Fl(J)414 b Fw(=)307 b Fl(@)61 b(f)119
+b(=@)61 b(y)383 b Fw(\(or)342 b(a)h(banded)f(appro)-31
+b(ximation)6814 49115 y(to)370 b(it\).)p Black 0 50884
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(N)p Black
+4459 w Fw(is)369 b(the)g(problem)h(size.)p Black 6814
+52431 a Fu(mlower)p Black Black 6814 53979 a(mupper)p
+Black 1554 w Fw(are)f(the)g(lo)-31 b(w)g(er)371 b(and)e(upp)31
+b(er)368 b(half-bandwidths)k(of)e(the)f(Jacobian.)p Black
+6814 55526 a Fu(J)p Black 4459 w Fw(is)g(the)g(output)i(Jacobian)g
+(matrix.)p Black 6814 57074 a Fu(t)p Black 4459 w Fw(is)e(the)g(curren)
+-31 b(t)369 b(v)-61 b(alue)370 b(of)g(the)f(indep)31
+b(enden)-31 b(t)370 b(v)-61 b(ariable.)p Black 6814 58621
+a Fu(y)p Black 4459 w Fw(is)357 b(the)h(curren)-31 b(t)357
+b(v)-61 b(alue)357 b(of)h(the)g(dep)31 b(enden)-31 b(t)357
+b(v)-61 b(ariable)358 b(v)-31 b(ector,)361 b(namely)e(the)f(predicted)
+11854 59950 y(v)-61 b(alue)370 b(of)f Fl(y)40 b Fw(\()p
+Fl(t)p Fw(\).)p Black 6814 61497 a Fu(fy)p Black 3878
+w Fw(is)369 b(the)g(v)-31 b(ector)370 b Fl(f)119 b Fw(\()p
+Fl(t;)184 b(y)40 b Fw(\).)p Black 6814 63045 a Fu(jac)p
+8627 63045 V 419 w(data)p Black 554 w Fw(is)422 b(a)g(p)31
+b(oin)-31 b(ter)423 b(to)f(user)f(data)i(-)f(the)g(same)h(as)f(the)g
+Fu(jac)p 35003 63045 V 419 w(data)g Fw(parameter)h(passed)e(to)11854
+64373 y Fu(CVBandSetJacData)p Fw(.)p Black 6814 65921
+a Fu(tmp1)p Black Black 6814 67468 a(tmp2)p Black Black
+6814 69016 a(tmp3)p Black 2716 w Fw(are)368 b(p)31 b(oin)-31
+b(ters)369 b(to)g(memory)g(allo)31 b(cated)371 b(for)e(v)-61
+b(ariables)369 b(of)g(t)-31 b(yp)31 b(e)369 b Fu(N)p
+38970 69016 V 418 w(Vector)g Fw(whic)-31 b(h)370 b(can)11854
+70344 y(b)31 b(e)369 b(used)f(b)-31 b(y)370 b Fu(CVBandJacFn)g
+Fw(as)f(temp)31 b(orary)370 b(storage)g(or)f(w)-31 b(ork)370
+b(space.)p Black 0 72113 a(Return)f(v)-61 b(alue)p Black
+554 w(A)369 b Fu(CVBandJacFn)i Fw(function)f(t)-31 b(yp)31
+b(e)370 b(do)31 b(es)369 b(not)h(ha)-31 b(v)g(e)370 b(a)f(return)g(v)
+-61 b(alue.)p Black 0 73882 a(Notes)p Black 4072 w(A)319
+b(user-supplied)g(band)h(Jacobian)h(function)f(m)-31
+b(ust)320 b(load)h(the)f(band)f(matrix)i Fu(J)e Fw(of)h(t)-31
+b(yp)31 b(e)320 b Fu(BandMat)6814 75210 y Fw(with)418
+b(the)f(elemen)-31 b(ts)418 b(of)g(the)f(Jacobian)h Fl(J)106
+b Fw(\()p Fl(t;)184 b(y)40 b Fw(\))418 b(at)g(the)f(p)31
+b(oin)-31 b(t)418 b(\()p Fu(t)p Fw(,)p Fu(y)p Fw(\).)637
+b(Only)418 b(nonzero)f(elemen)-31 b(ts)6814 76539 y(need)389
+b(to)g(b)31 b(e)389 b(loaded)h(in)-31 b(to)390 b Fu(J)f
+Fw(b)31 b(ecause)389 b Fu(J)g Fw(is)g(initialized)j(to)d(the)h(zero)e
+(matrix)j(b)31 b(efore)389 b(the)g(call)h(to)6814 77867
+y(the)369 b(Jacobian)i(function.)p Black Black eop
+%%Page: 63 73
+63 72 bop Black 4000 2701 a Fx(5.6)425 b(User-supplied)h(functions)
+31554 b(63)p 4000 3144 48001 45 v Black 10814 6974 a
+Fw(The)340 b(accessor)f(macros)h Fu(BAND)p 23414 6974
+349 45 v 419 w(ELEM)p Fw(,)g Fu(BAND)p 29128 6974 V 419
+w(COL)p Fw(,)h(and)e Fu(BAND)p 36384 6974 V 419 w(COL)p
+38546 6974 V 419 w(ELEM)h Fw(allo)-31 b(w)342 b(the)e(user)f(to)h(read)
+10814 8302 y(and)365 b(write)g(band)g(matrix)h(elemen)-31
+b(ts)365 b(without)i(making)g(sp)31 b(eci\257c)364 b(references)f(to)i
+(the)g(underlying)10814 9631 y(represen)-31 b(tation)379
+b(of)g(the)g Fu(BandMat)g Fw(t)-31 b(yp)31 b(e.)520 b
+Fu(BAND)p 31035 9631 V 419 w(ELEM\(J,)583 b(i,)e(j\))378
+b Fw(references)f(the)i(\()p Fu(i)p Fw(,)i Fu(j)p Fw(\)-th)f(el-)10814
+10959 y(emen)-31 b(t)418 b(of)h(the)e(band)h(matrix)h
+Fu(J)p Fw(,)f(coun)-31 b(ting)420 b(from)e(0.)638 b(This)418
+b(macro)g(is)g(mean)-31 b(t)419 b(for)f(use)f(in)g(small)10814
+12287 y(problems)278 b(for)f(whic)-31 b(h)278 b(e\261ciency)g(of)g
+(access)f(is)g(not)h(a)f(ma)61 b(jor)279 b(concern.)462
+b(Th)-31 b(us,)296 b(in)277 b(terms)g(of)h(the)g(in-)10814
+13616 y(dices)292 b Fl(m)g Fw(and)g Fl(n)g Fw(ranging)h(from)g(1)f(to)h
+Fl(N)413 b Fw(with)293 b(\()p Fl(m;)184 b(n)p Fw(\))295
+b(within)e(the)g(band)f(de\257ned)g(b)-31 b(y)292 b Fu(mupper)h
+Fw(and)10814 14944 y Fu(mlower)p Fw(,)368 b(the)e(Jacobian)i(elemen)-31
+b(t)368 b Fl(J)26204 15110 y Fj(m;n)28221 14944 y Fw(can)e(b)31
+b(e)366 b(loaded)i(using)e(the)h(statemen)-31 b(t)368
+b Fu(BAND)p 47583 14944 V 419 w(ELEM\(J,)10814 16272
+y(m-1,)582 b(n-1\))f(=)405 b Fl(J)18225 16438 y Fj(m;n)19876
+16272 y Fw(.)599 b(The)405 b(elemen)-31 b(ts)406 b(within)h(the)e(band)
+g(are)g(those)g(with)h Fu(-mupper)f Fn(\267)g Fu(m-n)g
+Fn(\267)10814 17601 y Fu(mlower)p Fw(.)592 b(Alternativ)-31
+b(ely)-92 b(,)414 b Fu(BAND)p 24556 17601 V 419 w(COL\(J,)582
+b(j\))402 b Fw(returns)f(a)i(p)31 b(oin)-31 b(ter)403
+b(to)g(the)f(diagonal)j(elemen)-31 b(t)403 b(of)10814
+18929 y(the)489 b Fu(j)p Fw(-th)g(column)g(of)h Fu(J)p
+Fw(,)f(and)f(if)h(w)-31 b(e)490 b(assign)f(this)g(address)e(to)j
+Fu(realtype)582 b(*col)p 46066 18929 V 419 w(j)p Fw(,)519
+b(then)489 b(the)10814 20257 y Fu(i)p Fw(-th)402 b(elemen)-31
+b(t)404 b(of)e(the)g Fu(j)p Fw(-th)h(column)g(is)e(giv)-31
+b(en)404 b(b)-31 b(y)402 b Fu(BAND)p 34904 20257 V 419
+w(COL)p 37066 20257 V 419 w(ELEM\(col)p 42133 20257 V
+419 w(j,)582 b(i,)f(j\))p Fw(,)411 b(coun)-31 b(ting)10814
+21586 y(from)483 b(0.)834 b(Th)-31 b(us,)512 b(for)483
+b(\()p Fl(m;)184 b(n)p Fw(\))485 b(within)f(the)f(band,)512
+b Fl(J)33180 21752 y Fj(m;n)35313 21586 y Fw(can)483
+b(b)31 b(e)483 b(loaded)h(b)-31 b(y)483 b(setting)h Fu(col)p
+49908 21586 V 419 w(n)581 b(=)10814 22914 y(BAND)p 13208
+22914 V 419 w(COL\(J,)h(n-1\);)364 b(BAND)p 23288 22914
+V 419 w(COL)p 25450 22914 V 419 w(ELEM\(col)p 30517 22914
+V 420 w(n,)581 b(m-1,)h(n-1\))g(=)361 b Fl(J)39978 23080
+y Fj(m;n)41628 22914 y Fw(.)490 b(The)361 b(elemen)-31
+b(ts)362 b(of)g(the)10814 24242 y Fu(j)p Fw(-th)416 b(column)h(can)f
+(also)h(b)31 b(e)416 b(accessed)f(via)i(ordinary)f(arra)-31
+b(y)417 b(indexing,)429 b(but)416 b(this)h(approac)-31
+b(h)416 b(re-)10814 25571 y(quires)408 b(kno)-31 b(wledge)411
+b(of)e(the)g(underlying)h(storage)f(for)g(a)g(band)f(matrix)j(of)e(t)
+-31 b(yp)31 b(e)409 b Fu(BandMat)p Fw(.)612 b(The)10814
+26899 y(arra)-31 b(y)382 b Fu(col)p 15536 26899 V 419
+w(n)g Fw(can)h(b)31 b(e)381 b(indexed)i(from)f Fn(\241)p
+Fu(mupper)h Fw(to)g Fu(mlower)p Fw(.)532 b(F)-92 b(or)382
+b(large)g(problems,)387 b(it)382 b(is)h(more)10814 28227
+y(e\261cien)-31 b(t)348 b(to)f(use)f Fu(BAND)p 20495
+28227 V 419 w(COL)h Fw(and)g Fu(BAND)p 27458 28227 V
+419 w(COL)p 29620 28227 V 418 w(ELEM)g Fw(than)h(to)f(use)f(the)h
+Fu(BAND)p 42698 28227 V 419 w(ELEM)f Fw(macro.)486 b(As)347
+b(in)10814 29556 y(the)369 b(dense)g(case,)g(these)h(macros)f(all)i(n)
+-31 b(um)g(b)31 b(er)369 b(ro)-31 b(ws)369 b(and)h(columns)g(starting)g
+(from)g(0.)10814 31367 y(The)362 b Fu(BandMat)g Fw(t)-31
+b(yp)31 b(e)362 b(and)g(the)g(accessor)f(macros)h Fu(BAND)p
+34436 31367 V 419 w(ELEM)p Fw(,)g Fu(BAND)p 40172 31367
+V 419 w(COL)g Fw(and)g Fu(BAND)p 47165 31367 V 419 w(COL)p
+49327 31367 V 418 w(ELEM)10814 32695 y Fw(are)369 b(do)31
+b(cumen)-31 b(ted)370 b(in)g Fn(x)p Fw(10.2.)10814 34506
+y(If)460 b(the)g(user's)f Fu(CVBandJacFn)i Fw(function)g(uses)e
+(di\256erence)h(quotien)-31 b(t)462 b(appro)-31 b(ximations,)486
+b(then)460 b(it)10814 35834 y(ma)-31 b(y)481 b(need)f(to)h(access)f
+(quan)-31 b(tities)482 b(not)f(in)g(the)f(argumen)-31
+b(t)482 b(list.)826 b(These)480 b(include)h(the)f(curren)-31
+b(t)10814 37162 y(step)462 b(size,)487 b(the)463 b(error)e(w)-31
+b(eigh)g(ts,)488 b(etc.)773 b(T)-92 b(o)463 b(obtain)i(these,)486
+b(use)462 b(the)h Fu(CVodeGet*)g Fw(functions)h(de-)10814
+38491 y(scrib)31 b(ed)494 b(in)g Fn(x)p Fw(5.5.6.)871
+b(The)495 b(unit)g(roundo\256)f(can)h(b)31 b(e)494 b(accessed)g(as)g
+Fu(UNIT)p 41647 38491 V 419 w(ROUNDOFF)h Fw(de\257ned)g(in)10814
+39819 y Fu(sundialstypes.h)p Fw(.)4000 43423 y Fo(5.6.5)1495
+b(Jacobian)500 b(information)g(\(SPGMR)d(matrix-v)-42
+b(ector)501 b(pro)42 b(duct\))4000 45503 y Fw(If)456
+b(an)h(iterativ)-31 b(e)459 b Fs(spgmr)d Fw(linear)h(solv)-31
+b(er)457 b(is)g(selected)g(\()p Fu(CVSpgmr)h Fw(is)f(called)h(in)e
+(step)h(7)g(of)g Fn(x)p Fw(5.4\),)481 b(the)457 b(user)f(ma)-31
+b(y)4000 46832 y(pro)g(vide)370 b(a)f(function)i(of)f(t)-31
+b(yp)31 b(e)369 b Fu(CVSpgmrJacTimesVecFn)j Fw(de\257ned)d(as)g(follo)
+-31 b(ws:)p 4000 48806 12376 45 v 4000 50392 45 1587
+v 4376 49814 a Fu(CVSpgmrJacTimesVecFn)p 16331 50392
+V 4000 50436 12376 45 v Black 4000 51897 a Fw(De\257nition)p
+Black 2034 w Fu(typedef)582 b(int)g(\(*CVSpgmrJacTimesVecFn\)\()s(N)p
+32386 51897 349 45 v 419 w(Vector)g(v,)f(N)p 39197 51897
+V 419 w(Vector)h(Jv,)g(realtype)g(t,)31735 53225 y(N)p
+32386 53225 V 419 w(Vector)g(y,)f(N)p 39197 53225 V 419
+w(Vector)h(fy,)31735 54554 y(void)g(*jac)p 37035 54554
+V 419 w(data,)g(N)p 41522 54554 V 419 w(Vector)g(tmp\);)p
+Black 4000 56375 a Fw(Purp)31 b(ose)p Black 2884 w(This)370
+b(function)g(computes)g(the)g(pro)31 b(duct)369 b Fl(J)106
+b(v)347 b Fw(=)307 b(\()p Fl(@)61 b(f)119 b(=@)61 b(y)40
+b Fw(\))p Fl(v)410 b Fw(\(or)369 b(an)h(appro)-31 b(ximation)373
+b(to)d(it\).)p Black 4000 58186 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(v)p Black 4459 w Fw(is)369 b(the)g(v)-31
+b(ector)370 b(b)-31 b(y)370 b(whic)-31 b(h)370 b(the)f(Jacobian)i(m)-31
+b(ust)370 b(b)31 b(e)369 b(m)-31 b(ultiplied.)p Black
+10814 59756 a Fu(Jv)p Black 3878 w Fw(is)369 b(the)g(output)i(v)-31
+b(ector)370 b(computed.)p Black 10814 61325 a Fu(t)p
+Black 4459 w Fw(is)f(the)g(curren)-31 b(t)369 b(v)-61
+b(alue)370 b(of)g(the)f(indep)31 b(enden)-31 b(t)370
+b(v)-61 b(ariable.)p Black 10814 62895 a Fu(y)p Black
+4459 w Fw(is)369 b(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370
+b(of)g(the)f(dep)31 b(enden)-31 b(t)369 b(v)-61 b(ariable)371
+b(v)-31 b(ector.)p Black 10814 64464 a Fu(fy)p Black
+3878 w Fw(is)369 b(the)g(v)-31 b(ector)370 b Fl(f)119
+b Fw(\()p Fl(t;)184 b(y)40 b Fw(\).)p Black 10814 66034
+a Fu(jac)p 12627 66034 V 419 w(data)p Black 554 w Fw(is)422
+b(a)g(p)31 b(oin)-31 b(ter)423 b(to)f(user)f(data)i(-)f(the)g(same)h
+(as)f(the)g Fu(jac)p 39003 66034 V 419 w(data)g Fw(parameter)h(passed)e
+(to)15854 67362 y Fu(CVSpgmrSetJacData)p Fw(.)p Black
+10814 68932 a Fu(tmp)p Black 3297 w Fw(is)350 b(a)h(p)31
+b(oin)-31 b(ter)351 b(to)g(memory)g(allo)31 b(cated)353
+b(for)d(a)h(v)-61 b(ariable)351 b(of)g(t)-31 b(yp)31
+b(e)351 b Fu(N)p 43006 68932 V 418 w(Vector)g Fw(whic)-31
+b(h)352 b(can)15854 70260 y(b)31 b(e)369 b(used)f(for)h(w)-31
+b(ork)370 b(space.)p Black 4000 72071 a(Return)f(v)-61
+b(alue)p Black 554 w(The)540 b(v)-61 b(alue)541 b(to)g(b)31
+b(e)540 b(returned)g(b)-31 b(y)540 b(the)h(Jacobian-v)-31
+b(ector)542 b(pro)31 b(duct)541 b(function)g(should)g(b)31
+b(e)540 b(0)g(if)10814 73399 y(successful.)495 b(An)-31
+b(y)371 b(other)g(return)e(v)-61 b(alue)371 b(will)h(result)e(in)h(an)f
+(unreco)-31 b(v)g(erable)371 b(error)f(of)g(the)h Fs(spgmr)10814
+74728 y Fw(generic)e(solv)-31 b(er,)371 b(in)e(whic)-31
+b(h)370 b(case)f(the)h(in)-31 b(tegration)372 b(is)d(halted.)p
+Black 4000 76539 a(Notes)p Black 4072 w(If)285 b(the)g(user's)f
+Fu(CVSpgmrJacTimesVecFn)k Fw(function)f(uses)d(di\256erence)h(quotien)
+-31 b(t)287 b(appro)-31 b(ximations,)10814 77867 y(it)405
+b(ma)-31 b(y)405 b(need)f(to)h(access)e(quan)-31 b(tities)406
+b(not)f(in)f(the)h(argumen)-31 b(t)405 b(list.)598 b(These)404
+b(include)h(the)f(curren)-31 b(t)p Black Black eop
+%%Page: 64 74
+64 73 bop Black 0 2701 a Fx(64)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 6814 6974 a Fw(step)462 b(size,)487 b(the)463 b(error)e(w)-31
+b(eigh)g(ts,)488 b(etc.)773 b(T)-92 b(o)463 b(obtain)i(these,)486
+b(use)462 b(the)h Fu(CVodeGet*)g Fw(functions)h(de-)6814
+8302 y(scrib)31 b(ed)494 b(in)g Fn(x)p Fw(5.5.6.)871
+b(The)495 b(unit)g(roundo\256)f(can)h(b)31 b(e)494 b(accessed)g(as)g
+Fu(UNIT)p 37647 8302 349 45 v 419 w(ROUNDOFF)h Fw(de\257ned)g(in)6814
+9631 y Fu(sundialstypes.h)p Fw(.)0 13388 y Fo(5.6.6)1495
+b(Preconditioning)501 b(\(SPGMR)c(linear)i(system)g(solution\))0
+15523 y Fw(If)539 b(preconditioning)j(is)d(used,)582
+b(then)540 b(the)f(user)g(m)-31 b(ust)540 b(pro)-31 b(vide)540
+b(a)f Fs(C)h Fw(function)g(to)h(solv)-31 b(e)540 b(the)f(linear)i
+(system)0 16851 y Fl(P)154 b(z)355 b Fw(=)308 b Fl(r)31
+b Fw(,)353 b(where)348 b Fl(P)502 b Fw(ma)-31 b(y)350
+b(b)31 b(e)348 b(either)g(a)h(left)h(or)e(righ)-31 b(t)349
+b(preconditioner)h(matrix.)487 b(This)349 b(function)h(m)-31
+b(ust)349 b(b)31 b(e)348 b(of)h(t)-31 b(yp)31 b(e)0 18179
+y Fu(CVSpgmrPrecSolveFn)p Fw(,)372 b(de\257ned)d(as)g(follo)-31
+b(ws:)p 0 20307 11214 45 v 0 21894 45 1587 v 376 21316
+a Fu(CVSpgmrPrecSolveFn)p 11169 21894 V 0 21938 11214
+45 v Black 0 23428 a Fw(De\257nition)p Black 2034 w Fu(typedef)582
+b(int)g(\(*CVSpgmrPrecSolveFn\)\()s(realtype)g(t,)g(N)p
+34198 23428 349 45 v 418 w(Vector)g(y,)g(N)p 41009 23428
+V 418 w(Vector)h(fy,)26573 24756 y(N)p 27224 24756 V
+419 w(Vector)f(r,)f(N)p 34035 24756 V 419 w(Vector)h(z,)26573
+26084 y(realtype)g(gamma,)g(realtype)h(delta,)26573 27413
+y(int)f(lr,)f(void)h(*p)p 35360 27413 V 419 w(data,)g(N)p
+39847 27413 V 418 w(Vector)g(tmp\);)p Black 0 29231 a
+Fw(Purp)31 b(ose)p Black 2884 w(This)370 b(function)g(solv)-31
+b(es)370 b(the)f(preconditioned)i(system)e Fl(P)154 b(z)356
+b Fw(=)307 b Fl(r)31 b Fw(.)p Black 0 31100 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(t)p Black 3297 w Fw(is)369
+b(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(indep)31
+b(enden)-31 b(t)370 b(v)-61 b(ariable.)p Black 6814 32699
+a Fu(y)p Black 3297 w Fw(is)369 b(the)g(curren)-31 b(t)369
+b(v)-61 b(alue)370 b(of)f(the)h(dep)31 b(enden)-31 b(t)369
+b(v)-61 b(ariable)370 b(v)-31 b(ector.)p Black 6814 34297
+a Fu(fy)p Black 2716 w Fw(is)369 b(the)g(v)-31 b(ector)370
+b Fl(f)119 b Fw(\()p Fl(t;)184 b(y)40 b Fw(\).)p Black
+6814 35896 a Fu(r)p Black 3297 w Fw(is)369 b(the)g(righ)-31
+b(t-hand)371 b(side)e(v)-31 b(ector)370 b(of)g(the)f(linear)h(system.)p
+Black 6814 37494 a Fu(z)p Black 3297 w Fw(is)f(the)g(computed)h(output)
+h(v)-31 b(ector.)p Black 6814 39093 a Fu(gamma)p Black
+973 w Fw(is)369 b(the)g(scalar)h Fl(\260)430 b Fw(app)31
+b(earing)371 b(in)e(the)g(Newton)i(matrix)g(giv)-31 b(en)370
+b(b)-31 b(y)370 b Fl(M)428 b Fw(=)307 b Fl(I)333 b Fn(\241)246
+b Fl(\260)61 b(J)106 b Fw(.)p Black 6814 40692 a Fu(delta)p
+Black 973 w Fw(is)497 b(an)h(input)h(tolerance)g(to)f(b)31
+b(e)497 b(used)g(if)i(an)f(iterativ)-31 b(e)500 b(metho)31
+b(d)498 b(is)g(emplo)-31 b(y)g(ed)500 b(in)e(the)10692
+42020 y(solution.)491 b(In)360 b(that)i(case,)g(the)f(residual)g(v)-31
+b(ector)361 b Fl(R)9 b(es)307 b Fw(=)h Fl(r)259 b Fn(\241)229
+b Fl(P)154 b(z)408 b Fw(of)361 b(the)g(system)f(should)10692
+43348 y(b)31 b(e)393 b(made)i(less)e(than)i Fu(delta)f
+Fw(in)g(the)g(w)-31 b(eigh)g(ted)396 b Fl(l)31387 43514
+y Fk(2)32278 43348 y Fw(norm,)401 b(i.e.,)37632 42429
+y Fh(p)p 38738 42429 8052 45 v 38738 42518 a(P)39907
+43680 y Fj(i)40275 43348 y Fw(\()p Fl(R)9 b(es)42589
+43514 y Fj(i)43204 43348 y Fn(\242)246 b Fl(ew)30 b(t)45494
+43514 y Fj(i)45863 43348 y Fw(\))46293 43028 y Fk(2)47139
+43348 y Fl(<)10692 44677 y(del)22 b(ta)p Fw(.)493 b(T)-92
+b(o)369 b(obtain)i(the)f Fu(N)p 21551 44677 349 45 v
+418 w(Vector)g(ewt)g Fw(call)g Fu(CVodeGetErrWeights)i
+Fw(\(see)d Fn(x)p Fw(5.5.6\).)p Black 6814 46275 a Fu(lr)p
+Black 2716 w Fw(is)362 b(an)g(input)h(\260ag)g(indicating)h(whether)f
+(the)f(preconditioner)h(solv)-31 b(e)363 b(function)h(is)e(to)g(use)
+10692 47604 y(the)369 b(left)h(preconditioner)h(\()p
+Fu(lr)582 b(=)f(1)p Fw(\))369 b(or)h(the)f(righ)-31 b(t)370
+b(preconditioner)h(\()p Fu(lr)582 b(=)f(2)p Fw(\);)p
+Black 6814 49202 a Fu(p)p 7465 49202 V 419 w(data)p Black
+554 w Fw(is)446 b(a)g(p)31 b(oin)-31 b(ter)447 b(to)h(user)d(data)i(-)f
+(the)h(same)g(as)f(the)g Fu(p)p 32946 49202 V 419 w(data)h
+Fw(parameter)g(passed)e(to)j(the)10692 50531 y(function)370
+b Fu(CVSpgmrSetPrecData)p Fw(.)p Black 6814 52129 a Fu(tmp)p
+Black 2135 w Fw(is)327 b(a)g(p)31 b(oin)-31 b(ter)328
+b(to)g(memory)g(allo)31 b(cated)329 b(for)e(a)h(v)-61
+b(ariable)328 b(of)f(t)-31 b(yp)31 b(e)328 b Fu(N)p 37588
+52129 V 418 w(Vector)g Fw(whic)-31 b(h)328 b(can)f(b)31
+b(e)10692 53457 y(used)368 b(for)h(w)-31 b(ork)370 b(space.)p
+Black 0 55326 a(Return)f(v)-61 b(alue)p Black 554 w(The)520
+b(v)-61 b(alue)520 b(to)h(b)31 b(e)519 b(returned)g(b)-31
+b(y)520 b(the)g(preconditioner)g(solv)-31 b(e)521 b(function)g(is)f(a)g
+(\260ag)g(indicating)6814 56655 y(whether)252 b(it)h(w)-31
+b(as)253 b(successful.)453 b(This)253 b(v)-61 b(alue)252
+b(should)h(b)31 b(e)252 b(0)g(if)h(successful,)275 b(p)31
+b(ositiv)-31 b(e)254 b(for)e(a)h(reco)-31 b(v)g(erable)6814
+57983 y(error)424 b(\(in)i(whic)-31 b(h)425 b(case)g(the)g(step)g(will)
+i(b)31 b(e)424 b(retried\),)440 b(or)425 b(negativ)-31
+b(e)427 b(for)e(an)g(unreco)-31 b(v)g(erable)426 b(error)6814
+59311 y(\(in)370 b(whic)-31 b(h)370 b(case)f(the)h(in)-31
+b(tegration)372 b(is)d(halted\).)0 62669 y Fo(5.6.7)1495
+b(Preconditioning)501 b(\(SPGMR)c(Jacobian)i(data\))0
+64803 y Fw(If)437 b(the)h(user's)e(preconditioner)j(requires)e(that)h
+(an)-31 b(y)438 b(Jacobian-related)i(data)f(b)31 b(e)437
+b(prepro)31 b(cessed)436 b(or)h(ev)-61 b(aluated,)0 66132
+y(then)409 b(this)f(needs)g(to)h(b)31 b(e)408 b(done)h(in)f(a)h
+(user-supplied)f Fs(C)g Fw(function)i(of)f(t)-31 b(yp)31
+b(e)409 b Fu(CVSpgmrPrecSetupFn)p Fw(,)421 b(de\257ned)408
+b(as)0 67460 y(follo)-31 b(ws:)p 0 69588 11214 45 v 0
+71175 45 1587 v 376 70597 a Fu(CVSpgmrPrecSetupFn)p 11169
+71175 V 0 71219 11214 45 v Black 0 72708 a Fw(De\257nition)p
+Black 2034 w Fu(typedef)582 b(int)g(\(*CVSpgmrPrecSetupFn)s
+(\)\(realtype)g(t,)g(N)p 34198 72708 349 45 v 418 w(Vector)g(y,)g(N)p
+41009 72708 V 418 w(Vector)h(fy,)25411 74037 y(booleantype)g(jok,)e
+(booleantype)i(*jcurPtr,)25411 75365 y(realtype)f(gamma,)g(void)g(*p)p
+38847 75365 V 419 w(data,)25411 76694 y(N)p 26062 76694
+V 418 w(Vector)g(tmp1,)g(N)p 34616 76694 V 419 w(Vector)g(tmp2,)25411
+78022 y(N)p 26062 78022 V 418 w(Vector)g(tmp3\);)p Black
+Black eop
+%%Page: 65 75
+65 74 bop Black 4000 2701 a Fx(5.7)425 b(In)-35 b(tegration)425
+b(of)g(pure)h(quadrature)f(equations)21793 b(65)p 4000
+3144 48001 45 v Black Black 4000 6974 a Fw(Purp)31 b(ose)p
+Black 2884 w(This)334 b(function)h(prepro)31 b(cesses)332
+b(and/or)i(ev)-61 b(aluates)335 b(Jacobian-related)h(data)e(needed)g(b)
+-31 b(y)334 b(the)f(pre-)10814 8302 y(conditioner.)p
+Black 4000 9991 a(Argumen)-31 b(ts)p Black 1517 w(The)369
+b(argumen)-31 b(ts)371 b(of)e(a)h Fu(CVSpgmrPrecSetupFn)i
+Fw(are)d(as)g(follo)-31 b(ws:)p Black 10814 11680 a Fu(t)p
+Black 4040 w Fw(is)370 b(the)f(curren)-31 b(t)369 b(v)-61
+b(alue)369 b(of)h(the)g(indep)31 b(enden)-31 b(t)369
+b(v)-61 b(ariable.)p Black 10814 13147 a Fu(y)p Black
+4040 w Fw(is)395 b(the)h(curren)-31 b(t)394 b(v)-61 b(alue)396
+b(of)f(the)g(dep)31 b(enden)-31 b(t)395 b(v)-61 b(ariable)396
+b(v)-31 b(ector,)403 b(namely)396 b(the)g(predicted)15435
+14476 y(v)-61 b(alue)370 b(of)g Fl(y)40 b Fw(\()p Fl(t)p
+Fw(\).)p Black 10814 15943 a Fu(fy)p Black 3459 w Fw(is)370
+b(the)f(v)-31 b(ector)370 b Fl(f)119 b Fw(\()p Fl(t;)184
+b(y)40 b Fw(\).)p Black 10814 17410 a Fu(jok)p Black
+2878 w Fw(is)479 b(an)f(input)h(\260ag)g(indicating)i(whether)e(the)f
+(Jacobian-related)j(data)f(needs)d(to)i(b)31 b(e)15435
+18739 y(up)g(dated.)1027 b(The)547 b Fu(jok)g Fw(argumen)-31
+b(t)548 b(pro)-31 b(vides)548 b(for)f(the)g(reuse)f(of)h(Jacobian)h
+(data)h(in)15435 20067 y(the)447 b(preconditioner)h(solv)-31
+b(e)447 b(function.)726 b Fu(jok)582 b(=)f(FALSE)447
+b Fw(means)g(that)h(the)e(Jacobian-)15435 21395 y(related)341
+b(data)g(m)-31 b(ust)341 b(b)31 b(e)340 b(recomputed)g(from)h(scratc)
+-31 b(h.)483 b Fu(jok)581 b(=)h(TRUE)340 b Fw(means)g(that)i(the)15435
+22724 y(Jacobian)321 b(data,)331 b(if)320 b(sa)-31 b(v)g(ed)320
+b(from)g(the)f(previous)g(call)i(to)f(this)g(function,)331
+b(can)319 b(b)31 b(e)319 b(reused)15435 24052 y(\(with)414
+b(the)e(curren)-31 b(t)411 b(v)-61 b(alue)412 b(of)g
+Fu(gamma)p Fw(\).)621 b(A)412 b(call)h(with)g Fu(jok)581
+b(=)h(TRUE)412 b Fw(can)g(only)g(o)31 b(ccur)15435 25380
+y(after)370 b(a)g(call)g(with)h Fu(jok)581 b(=)g(FALSE)p
+Fw(.)p Black 10814 26848 a Fu(jcurPtr)p Black 554 w Fw(is)534
+b(a)g(p)31 b(oin)-31 b(ter)534 b(to)g(a)g(\260ag)g(whic)-31
+b(h)534 b(should)g(b)31 b(e)533 b(set)h(to)g Fu(TRUE)f
+Fw(if)h(Jacobian)h(data)g(w)-31 b(as)15435 28176 y(recomputed,)320
+b(or)306 b(set)h(to)g Fu(FALSE)f Fw(if)h(Jacobian)h(data)f(w)-31
+b(as)307 b(not)g(recomputed,)320 b(but)306 b(sa)-31 b(v)g(ed)15435
+29505 y(data)371 b(w)-31 b(as)370 b(still)g(reused.)p
+Black 10814 30972 a Fu(gamma)p Black 1716 w Fw(is)g(the)f(scalar)h
+Fl(\260)430 b Fw(app)31 b(earing)370 b(in)g(the)f(Newton)i(matrix)g
+Fl(M)428 b Fw(=)307 b Fl(I)333 b Fn(\241)246 b Fl(\260)61
+b(P)154 b Fw(.)p Black 10814 32439 a Fu(p)p 11465 32439
+349 45 v 419 w(data)p Black 1297 w Fw(is)577 b(a)g(p)31
+b(oin)-31 b(ter)578 b(to)f(user)f(data,)630 b(the)577
+b(same)g(as)g(the)g Fu(p)p 38539 32439 V 418 w(data)g
+Fw(parameter)h(passed)e(to)15435 33768 y Fu(CVSpgmrSetPrecData)p
+Fw(.)p Black 10814 35235 a Fu(tmp1)p Black Black 10814
+36703 a(tmp2)p Black Black 10814 38170 a(tmp3)p Black
+2297 w Fw(are)407 b(p)31 b(oin)-31 b(ters)407 b(to)g(memory)g(allo)31
+b(cated)409 b(for)e(v)-61 b(ariables)407 b(of)g(t)-31
+b(yp)31 b(e)406 b Fu(N)p 42893 38170 V 419 w(Vector)h
+Fw(whic)-31 b(h)408 b(can)15435 39498 y(b)31 b(e)369
+b(used)g(b)-31 b(y)369 b Fu(CVSpgmrPrecSetupFn)j Fw(as)d(temp)31
+b(orary)370 b(storage)g(or)f(w)-31 b(ork)370 b(space.)p
+Black 4000 41187 a(Return)f(v)-61 b(alue)p Black 554
+w(The)501 b(v)-61 b(alue)501 b(to)h(b)31 b(e)500 b(returned)g(b)-31
+b(y)501 b(the)g(preconditioner)h(setup)f(function)h(is)f(a)g(\260ag)g
+(indicating)10814 42515 y(whether)252 b(it)h(w)-31 b(as)253
+b(successful.)453 b(This)253 b(v)-61 b(alue)252 b(should)h(b)31
+b(e)252 b(0)g(if)h(successful,)275 b(p)31 b(ositiv)-31
+b(e)254 b(for)e(a)h(reco)-31 b(v)g(erable)10814 43844
+y(error)424 b(\(in)i(whic)-31 b(h)425 b(case)g(the)g(step)g(will)i(b)31
+b(e)424 b(retried\),)440 b(or)425 b(negativ)-31 b(e)427
+b(for)e(an)g(unreco)-31 b(v)g(erable)426 b(error)10814
+45172 y(\(in)370 b(whic)-31 b(h)370 b(case)f(the)h(in)-31
+b(tegration)372 b(is)d(halted\).)p Black 4000 46861 a(Notes)p
+Black 4072 w(The)292 b(op)31 b(erations)294 b(p)31 b(erformed)291
+b(b)-31 b(y)293 b(this)f(function)i(migh)-31 b(t)294
+b(include)f(forming)g(a)g(crude)e(appro)-31 b(ximate)10814
+48189 y(Jacobian,)353 b(and)346 b(p)31 b(erforming)347
+b(an)f(LU)g(factorization)k(of)c(the)g(resulting)h(appro)-31
+b(ximation)350 b(to)d Fl(M)428 b Fw(=)10814 49518 y Fl(I)332
+b Fn(\241)246 b Fl(\260)61 b(J)106 b Fw(.)10814 51206
+y(Eac)-31 b(h)279 b(call)h(to)f(the)f(preconditioner)h(setup)g
+(function)g(is)f(preceded)g(b)-31 b(y)278 b(a)h(call)g(to)g(the)g
+Fu(CVRhsFn)g Fw(user)10814 52535 y(function)297 b(with)g(the)f(same)h
+Fu(\(t,y\))f Fw(argumen)-31 b(ts.)469 b(Th)-31 b(us,)311
+b(the)297 b(preconditioner)g(setup)e(function)j(can)10814
+53863 y(use)363 b(an)-31 b(y)365 b(auxiliary)h(data)f(that)h(is)e
+(computed)h(and)f(sa)-31 b(v)g(ed)365 b(during)f(the)g(ev)-61
+b(aluation)366 b(of)f(the)f(ODE)10814 55191 y(righ)-31
+b(t-hand)371 b(side.)10814 56880 y(This)285 b(function)h(is)f(not)g
+(called)h(in)f(adv)-61 b(ance)285 b(of)g(ev)-31 b(ery)285
+b(call)h(to)f(the)g(preconditioner)h(solv)-31 b(e)286
+b(function,)10814 58209 y(but)491 b(rather)g(is)g(called)i(only)f(as)f
+(often)h(as)f(needed)g(to)h(ac)-31 b(hiev)g(e)492 b(con)-31
+b(v)g(ergence)493 b(in)e(the)g(Newton)10814 59537 y(iteration.)10814
+61226 y(If)430 b(the)h(user's)e Fu(CVSpgmrPrecSetupFn)k
+Fw(function)f(uses)e(di\256erence)f(quotien)-31 b(t)433
+b(appro)-31 b(ximations,)10814 62554 y(it)588 b(ma)-31
+b(y)588 b(need)e(to)i(access)e(quan)-31 b(tities)589
+b(not)f(in)f(the)g(call)h(list.)1146 b(These)587 b(include)g(the)g
+(curren)-31 b(t)10814 63882 y(step)462 b(size,)487 b(the)463
+b(error)e(w)-31 b(eigh)g(ts,)488 b(etc.)773 b(T)-92 b(o)463
+b(obtain)i(these,)486 b(use)462 b(the)h Fu(CVodeGet*)g
+Fw(functions)h(de-)10814 65211 y(scrib)31 b(ed)494 b(in)g
+Fn(x)p Fw(5.5.6.)871 b(The)495 b(unit)g(roundo\256)f(can)h(b)31
+b(e)494 b(accessed)g(as)g Fu(UNIT)p 41647 65211 V 419
+w(ROUNDOFF)h Fw(de\257ned)g(in)10814 66539 y Fu(sundialstypes.h)p
+Fw(.)4000 70129 y Fr(5.7)1793 b(In)-50 b(tegration)599
+b(of)e(pure)i(quadrature)h(equations)4000 72553 y Fw(If)452
+b(the)h(system)f(of)h(ODEs)f(con)-31 b(tains)454 b Fq(pur)-57
+b(e)472 b(quadr)-57 b(atur)g(es)p Fw(,)473 b(it)453 b(is)g(more)f
+(e\261cien)-31 b(t)454 b(to)f(treat)g(them)g(separately)h(b)-31
+b(y)4000 73882 y(excluding)435 b(them)f(from)g(the)g(nonlinear)h
+(solution)g(stage.)687 b(T)-92 b(o)434 b(do)g(this,)451
+b(b)31 b(egin)434 b(b)-31 b(y)433 b(excluding)i(the)f(quadrature)4000
+75210 y(v)-61 b(ariables)283 b(from)h(the)f(v)-31 b(ector)283
+b Fu(y)g Fw(and)g(the)g(quadrature)h(equations)g(from)f(within)i
+Fu(f)p Fw(.)464 b(The)283 b(follo)-31 b(wing)286 b(is)d(an)g(o)-31
+b(v)g(erview)4000 76539 y(of)399 b(the)g(sequence)f(of)h(calls)g(in)g
+(a)g(user's)f(main)h(program)h(in)e(this)h(situation.)583
+b(Steps)399 b(that)g(are)g(unc)-31 b(hanged)399 b(from)4000
+77867 y(the)369 b(sk)-31 b(eleton)371 b(program)f(presen)-31
+b(ted)369 b(in)g Fn(x)p Fw(5.4)i(are)e(gra)-31 b(y)g(ed)370
+b(out.)p Black Black eop
+%%Page: 66 76
+66 75 bop Black 0 2701 a Fx(66)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black Black 553 6974 a Fw(1.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx([P])f(Initialize)f(MPI)p Black Black 553 9499
+a Fw(2.)p Black 493 w Fx(Set)j(problem)f(dimensions)1906
+11381 y Fw([)p Fx(S)p Fw(])508 b(Set)f Fu(N)f Fw(to)h(the)g(problem)g
+(size)g Fl(N)627 b Fw(\(excluding)509 b(quadrature)e(v)-61
+b(ariables\),)542 b(and)507 b Fu(Nq)g Fw(to)g(the)g(n)-31
+b(um)g(b)31 b(er)506 b(of)1906 12709 y(quadrature)370
+b(v)-61 b(ariables.)1906 14591 y([)p Fx(P)p Fw(])372
+b(Set)e Fu(Nlocal)h Fw(to)g(the)f(lo)31 b(cal)372 b(v)-31
+b(ector)370 b(length)i(\(excluding)g(quadrature)e(v)-61
+b(ariables\),)372 b(and)f Fu(Nqlocal)g Fw(to)g(the)1906
+15919 y(lo)31 b(cal)371 b(n)-31 b(um)g(b)31 b(er)369
+b(of)h(quadrature)g(v)-61 b(ariables.)p Black 553 18445
+a(3.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Set)426
+b(v)-35 b(ector)424 b(of)h(initial)e(v)-71 b(alues)p
+Black Black 553 20970 a Fw(4.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx(Create)426 b Fs(cv)-25 b(odes)425 b Fx(ob)71
+b(ject)p Black Black 553 23495 a Fw(5.)p Black 0.5 0.5 0.5
+TeXcolorrgb 493 w Fx(Allo)35 b(cate)425 b(in)-35 b(ternal)425
+b(memory)p Black Black 553 26020 a Fw(6.)p Black 0.5 0.5 0.5
+TeXcolorrgb 493 w Fx(Set)h(optional)e(inputs)p Black
+Black 553 28545 a Fw(7.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx(A)-35 b(ttac)g(h)424 b(linear)h(solv)-35 b(er)425
+b(mo)35 b(dule)p Black Black 553 31071 a Fw(8.)p Black
+0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Set)426 b(linear)e(solv)-35
+b(er)425 b(optional)f(inputs)p Black Black 553 33596
+a Fw(9.)p Black 493 w Fx(Set)i(v)-35 b(ector)424 b(of)h(initial)e(v)-71
+b(alues)425 b(for)g(quadrature)g(v)-71 b(ariables)1906
+35478 y Fw(T)-31 b(ypically)-92 b(,)373 b(the)c(quadrature)h(v)-61
+b(ariables)370 b(should)f(b)31 b(e)369 b(initialized)j(to)e(0.)p
+Black 0 38003 a(10.)p Black 493 w Fx(Initialize)423 b(quadrature)j(in)
+-35 b(tegration)1906 39885 y Fw(Call)366 b Fu(CVodeQuadMalloc)f
+Fw(to)g(sp)31 b(ecify)364 b(the)f(quadrature)i(equation)g(righ)-31
+b(t-hand)365 b(side)f(function)h(and)f(to)g(allo-)1906
+41213 y(cate)370 b(in)-31 b(ternal)371 b(memory)f(related)g(to)g
+(quadrature)g(in)-31 b(tegration.)495 b(See)369 b Fn(x)p
+Fw(5.7.1)j(for)d(details.)p Black 0 43738 a(11.)p Black
+493 w Fx(Set)426 b(optional)e(inputs)h(for)g(quadrature)h(in)-35
+b(tegration)1906 45620 y Fw(Call)527 b Fu(CVodeSetQuadFdata)g
+Fw(to)f(sp)31 b(ecify)525 b(user)e(data)j(required)f(for)g(the)g(ev)-61
+b(aluation)527 b(of)e(the)g(quadrature)1906 46949 y(equation)j(righ)-31
+b(t-hand)527 b(side.)963 b(Call)528 b Fu(CVodeSetQuadErrCon)g
+Fw(to)e(indicate)i(whether)e(or)g(not)g(quadrature)1906
+48277 y(v)-61 b(ariables)537 b(shoule)g(b)31 b(e)535
+b(used)g(in)i(the)f(step)g(size)g(con)-31 b(trol)538
+b(mec)-31 b(hanism,)579 b(and)537 b(to)f(sp)31 b(ecify)537
+b(the)f(in)-31 b(tegration)1906 49605 y(tolerances)370
+b(for)g(quadrature)f(v)-61 b(ariables.)494 b(See)369
+b Fn(x)p Fw(5.7.3)i(for)e(details.)p Black 0 52130 a(12.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Adv)-71 b(ance)426
+b(solution)f(in)f(time)p Black Black 0 54656 a Fw(13.)p
+Black 493 w Fx(Extract)h(quadrature)g(v)-71 b(ariables)1906
+56537 y Fw(Call)453 b Fu(CVodeGetQuad)f Fw(to)f(obtain)h(the)f(v)-61
+b(alues)451 b(of)g(the)g(quadrature)g(v)-61 b(ariables)451
+b(at)g(the)g(curren)-31 b(t)450 b(time.)738 b(See)1906
+57866 y Fn(x)p Fw(5.7.2)372 b(for)d(details.)p Black
+0 60391 a(14.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Get)425
+b(optional)g(outputs)p Black Black 0 62916 a Fw(15.)p
+Black 493 w Fx(Get)g(quadrature)h(optional)f(outputs)1906
+64798 y Fw(Call)435 b Fu(CVodeGetQuad*)g Fw(functions)e(to)h(obtain)g
+(optional)i(output)e(related)g(to)f(the)g(in)-31 b(tegration)436
+b(of)d(quadra-)1906 66126 y(tures.)493 b(See)368 b Fn(x)p
+Fw(5.7.4)k(for)d(details.)p Black 0 68652 a(16.)p Black
+493 w Fx(Deallo)35 b(cate)425 b(memory)h(for)f(solution)g(v)-35
+b(ector)425 b(and)f(for)h(the)g(v)-35 b(ector)425 b(of)g(quadrature)h
+(v)-71 b(ariables)p Black 0 71177 a Fw(17.)p Black 493
+w Fx(F)-106 b(ree)426 b(solv)-35 b(er)425 b(memory)p
+Black 0 73702 a Fw(18.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx([P])f(Finalize)g(MPI)p Black 0 76539 a Fu(CVodeQuadMalloc)370
+b Fw(can)f(b)31 b(e)368 b(called)h(and)g(quadrature-related)h(optional)
+h(inputs)d(\(step)h(11)g(ab)31 b(o)-31 b(v)g(e\))370
+b(can)f(b)31 b(e)367 b(set,)0 77867 y(an)-31 b(ywhere)370
+b(b)31 b(et)-31 b(w)g(een)370 b(steps)f(4)g(and)h(12.)p
+Black Black eop
+%%Page: 67 77
+67 76 bop Black 4000 2701 a Fx(5.7)425 b(In)-35 b(tegration)425
+b(of)g(pure)h(quadrature)f(equations)21793 b(67)p 4000
+3144 48001 45 v Black 4000 6974 a Fo(5.7.1)1495 b(Quadrature)501
+b(initialization)g(functions)4000 9060 y Fw(The)346 b(function)i
+Fu(CVodeQuadMalloc)g Fw(activ)-61 b(ates)348 b(in)-31
+b(tegration)349 b(of)e(quadrature)g(equations)h(and)e(allo)31
+b(cates)348 b(in)-31 b(ternal)4000 10389 y(memory)370
+b(related)g(to)g(these)f(calculations.)496 b(The)369
+b(form)h(of)f(the)h(call)g(to)g(this)g(function)g(is)g(as)f(follo)-31
+b(ws:)p 4000 12381 9470 45 v 4000 13876 45 1495 v 4376
+13390 a Fu(CVodeQuadMalloc)p 13426 13876 V 4000 13920
+9470 45 v Black 4000 15141 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeQuadMalloc\(cvode)p 27153 15141 349 45 v 422
+w(mem,)g(fQ,)h(yQ0\);)p Black 4000 16959 a Fw(Description)p
+Black 1286 w(The)542 b(function)h Fu(CVodeQuadMalloc)h
+Fw(pro)-31 b(vides)543 b(required)e(problem)i(sp)31 b(eci\257cations,)
+587 b(allo)31 b(cates)10814 18287 y(in)-31 b(ternal)371
+b(memory)-92 b(,)370 b(and)f(initializes)j(quadrature)e(in)-31
+b(tegration.)p Black 4000 20105 a(Argumen)g(ts)p Black
+Black 1517 w Fu(cvode)p 13789 20105 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))330 b(p)31 b(oin)-31
+b(ter)331 b(to)f(the)g Fs(cv)-25 b(odes)330 b Fw(memory)h(blo)31
+b(c)-31 b(k)331 b(returned)e(b)-31 b(y)330 b Fu(CVodeCreate)p
+Fw(.)p Black 10814 21678 a Fu(fQ)p Black 4459 w Fw(\()p
+Fu(CVQuadRhsFn)p Fw(\))380 b(is)d(the)g Fs(C)g Fw(function)h(whic)-31
+b(h)378 b(computes)g Fl(f)41342 21844 y Fj(Q)42095 21678
+y Fw(,)h(the)e(righ)-31 b(t-hand)379 b(side)16435 23007
+y(of)278 b(the)g(quadrature)h(equations.)463 b(This)279
+b(function)g(has)e(the)h(form)h Fu(fQ\(t,)582 b(y,)f(yQdot,)16435
+24335 y(fQ)p 17667 24335 V 419 w(data\))370 b Fw(\(for)f(full)h
+(details)h(see)e Fn(x)p Fw(5.7.5\).)p Black 10814 25908
+a Fu(yQ0)p Black 3878 w Fw(\()p Fu(N)p 17516 25908 V
+419 w(Vector)p Fw(\))h(is)g(the)f(initial)j(v)-61 b(alue)370
+b(of)f Fl(y)33032 26074 y Fj(Q)33784 25908 y Fw(.)p Black
+4000 27726 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(will)h(b)31 b(e)369
+b(one)g(of)h(the)f(follo)-31 b(wing:)p Black 10814 29543
+a Fu(CV)p 12046 29543 V 419 w(SUCCESS)p Black 973 w Fw(The)369
+b(call)h(to)g Fu(CVodeQuadMalloc)i Fw(w)-31 b(as)369
+b(successful.)p Black 10814 31116 a Fu(CV)p 12046 31116
+V 419 w(MEM)p 14208 31116 V 419 w(NULL)p Black 554 w
+Fw(The)246 b Fs(cv)-25 b(odes)247 b Fw(memory)g(blo)31
+b(c)-31 b(k)247 b(w)-31 b(as)247 b(not)g(initialized)i(b)-31
+b(y)247 b(a)f(prior)g(call)i(to)e Fu(CVodeCreate)p Fw(.)p
+Black 10814 32689 a Fu(CV)p 12046 32689 V 419 w(MEM)p
+14208 32689 V 419 w(FAIL)p Black 554 w Fw(A)369 b(memory)h(allo)31
+b(cation)373 b(request)368 b(failed.)p Black 4000 34507
+a(Notes)p Black 4072 w(If)314 b(an)h(error)e(o)31 b(ccured,)325
+b Fu(CVodeQuadMalloc)316 b Fw(also)f(prin)-31 b(ts)315
+b(an)f(error)g(message)g(to)h(the)g(\257le)f(sp)31 b(eci\257ed)10814
+35836 y(b)-31 b(y)369 b(the)h(optional)i(input)e Fu(errfp)p
+Fw(.)10814 37653 y(If)f(quadrature)h(in)-31 b(tegration)372
+b(is)d(enabled,)h(the)4000 39405 y(In)352 b(terms)h(of)g(the)g(n)-31
+b(um)g(b)31 b(er)352 b(of)i(quadrature)f(v)-61 b(ariables)353
+b Fl(N)27969 39571 y Fj(q)28811 39405 y Fw(and)g(maxim)-31
+b(um)355 b(metho)31 b(d)354 b(order)e Fu(maxord)p Fw(,)357
+b(the)c(size)f(of)4000 40733 y(the)369 b(real)h(w)-31
+b(orkspace)370 b(is)f(increased)g(b)-31 b(y:)p Black
+5660 43017 a Fn(\262)p Black 554 w Fw(Base)370 b(v)-61
+b(alue:)493 b Fu(lenrw)369 b Fw(=)g Fu(lenrw)h Fw(+)f(\()p
+Fu(maxord+5)p Fw(\))p Fl(N)28099 43183 y Fj(q)p Black
+5660 45324 a Fn(\262)p Black 554 w Fw(With)h Fu(itolQ)582
+b(=)f(CV)p 15508 45324 V 419 w(SV)369 b Fw(\(see)g Fu
+(CVodeSetQuadErrCon)p Fw(\):)496 b Fu(lenrw)370 b Fw(=)f
+Fu(lenrw)g Fw(+)p Fl(N)40828 45490 y Fj(q)4000 47608
+y Fw(the)g(size)h(of)f(the)h(in)-31 b(teger)370 b(w)-31
+b(orkspace)370 b(is)f(increased)g(b)-31 b(y:)p Black
+5660 49892 a Fn(\262)p Black 554 w Fw(Base)370 b(v)-61
+b(alue:)493 b Fu(leniw)369 b Fw(=)g Fu(leniw)h Fw(+)f(\()p
+Fu(maxord+5)p Fw(\))p Fl(N)28099 50058 y Fj(q)p Black
+5660 52199 a Fn(\262)p Black 554 w Fw(With)h Fu(itolQ)582
+b(=)f(CV)p 15508 52199 V 419 w(SV)p Fw(:)370 b Fu(leniw)f
+Fw(=)g Fu(leniw)h Fw(+)p Fl(N)27225 52365 y Fj(q)5660
+54483 y Fw(The)454 b(function)h Fu(CVodeQuadReInit)p
+Fw(,)477 b(useful)454 b(during)g(the)f(solution)j(of)e(a)f(sequence)h
+(of)g(problems)f(of)h(same)4000 55811 y(size,)305 b(reinitializes)291
+b(the)d(quadrature)h(related)g(in)-31 b(ternal)290 b(memory)f(and)g(m)
+-31 b(ust)289 b(follo)-31 b(w)291 b(a)d(call)i(to)f Fu(CVodeQuadMalloc)
+4000 57139 y Fw(\(and)439 b(ma)-31 b(yb)31 b(e)439 b(a)g(call)h(to)f
+Fu(CVodeReInit)p Fw(\).)702 b(The)438 b(n)-31 b(um)g(b)31
+b(er)439 b Fu(Nq)f Fw(of)h(quadratures)f(is)h(assumed)f(to)h(b)31
+b(e)438 b(unc)-31 b(hanged)4000 58468 y(from)366 b(the)g(prior)g(call)h
+(to)f Fu(CVodeQuadMalloc)p Fw(.)494 b(The)366 b(call)h(to)f(the)g
+Fu(CVodeQuadReInit)i Fw(function)f(has)f(the)g(form:)p
+4000 60460 9470 45 v 4000 61954 45 1495 v 4376 61469
+a Fu(CVodeQuadReInit)p 13426 61954 V 4000 61998 9470
+45 v Black 4000 63220 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeQuadReInit\(cvode)p 27153 63220 349 45 v 422
+w(mem,)g(fQ,)h(yQ0\);)p Black 4000 65038 a Fw(Description)p
+Black 1286 w(The)300 b(function)g Fu(CVodeQuadReInit)i
+Fw(pro)-31 b(vides)299 b(required)g(problem)h(sp)31 b(eci\257cations)
+301 b(and)f(reinitial-)10814 66366 y(izes)369 b(the)g(quadrature)h(in)
+-31 b(tegration.)p Black 4000 68184 a(Argumen)g(ts)p
+Black Black 1517 w Fu(cvode)p 13789 68184 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 69757
+a Fu(fQ)p Black 4459 w Fw(\()p Fu(CVQuadRhsFn)p Fw(\))355
+b(is)e(the)g Fs(C)g Fw(function)h(whic)-31 b(h)354 b(computes)f
+Fl(f)119 b(Q)p Fw(,)357 b(the)c(righ)-31 b(t-hand)354
+b(side)16435 71085 y(of)370 b(the)f(quadrature)h(equations.)p
+Black 10814 72658 a Fu(yQ0)p Black 3878 w Fw(\()p Fu(N)p
+17516 72658 V 419 w(Vector)p Fw(\))g(is)g(the)f(initial)j(v)-61
+b(alue)370 b(of)f Fl(y)33032 72824 y Fj(Q)33784 72658
+y Fw(.)p Black 4000 74476 a(Return)g(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(will)h(b)31
+b(e)369 b(one)g(of)h(the)f(follo)-31 b(wing:)p Black
+10814 76294 a Fu(CV)p 12046 76294 V 419 w(SUCCESS)p Black
+973 w Fw(The)369 b(call)h(to)g Fu(CVodeReInit)h Fw(w)-31
+b(as)370 b(successful.)p Black 10814 77867 a Fu(CV)p
+12046 77867 V 419 w(MEM)p 14208 77867 V 419 w(NULL)p
+Black 554 w Fw(The)246 b Fs(cv)-25 b(odes)247 b Fw(memory)g(blo)31
+b(c)-31 b(k)247 b(w)-31 b(as)247 b(not)g(initialized)i(b)-31
+b(y)247 b(a)f(prior)g(call)i(to)e Fu(CVodeCreate)p Fw(.)p
+Black Black eop
+%%Page: 68 78
+68 77 bop Black 0 2701 a Fx(68)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black Black 6814 6974 a Fu(CV)p 8046 6974 349 45 v 419
+w(NO)p 9627 6974 V 418 w(QUAD)p Black 1136 w Fw(Memory)511
+b(space)g(for)h(the)f(quadrature)h(in)-31 b(tegration)514
+b(w)-31 b(as)512 b(not)g(allo)31 b(cated)514 b(b)-31
+b(y)512 b(a)13435 8302 y(prior)369 b(call)h(to)g Fu(CVodeQuadMalloc)p
+Fw(.)p Black 0 10062 a(Notes)p Black 4072 w(If)314 b(an)h(error)e(o)31
+b(ccured,)325 b Fu(CVodeQuadReInit)316 b Fw(also)f(prin)-31
+b(ts)315 b(an)f(error)g(message)g(to)h(the)g(\257le)f(sp)31
+b(eci\257ed)6814 11391 y(b)-31 b(y)369 b(the)h(optional)i(input)e
+Fu(errfp)p Fw(.)0 14480 y Fo(5.7.2)1495 b(Quadrature)501
+b(extraction)e(functions)0 16523 y Fw(If)310 b(quadrature)i(in)-31
+b(tegration)313 b(has)e(b)31 b(een)310 b(initialized)k(b)-31
+b(y)311 b(a)g(call)h(to)f Fu(CVodeQuadMalloc)p Fw(,)325
+b(or)310 b(reinitialized)k(b)-31 b(y)311 b(a)g(call)0
+17852 y(to)366 b Fu(CVodeQuadReInit)p Fw(,)i(then)d Fs(cv)-25
+b(odes)365 b Fw(computes)g(b)31 b(oth)366 b(a)f(solution)h(and)f
+(quadratures)g(at)h(time)g Fu(t)p Fw(.)491 b(Ho)-31 b(w)g(ev)g(er,)0
+19180 y Fu(CVode)476 b Fw(will)i(still)f(return)f(only)h(the)f
+(solution)i Fl(y)515 b Fw(in)476 b Fu(y)p Fw(.)813 b(Solution)478
+b(quadratures)e(can)g(b)31 b(e)476 b(obtained)h(using)g(the)0
+20508 y(follo)-31 b(wing)373 b(function:)p 0 22368 7727
+45 v 0 23862 45 1495 v 376 23376 a Fu(CVodeGetQuad)p
+7682 23862 V 0 23906 7727 45 v Black 0 25105 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetQuad\(cvode)p
+21410 25105 349 45 v 421 w(mem,)h(t,)f(yQ\);)p Black
+0 26865 a Fw(Description)p Black 1286 w(The)379 b(function)h
+Fu(CVodeGetQuad)g Fw(returns)d(the)i(quadrature)g(solution)h(v)-31
+b(ector)380 b(after)f(a)f(successful)6814 28193 y(return)368
+b(from)i Fu(CVode)p Fw(.)p Black 0 29954 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 29954 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(memory)h(previously)g(allo)31
+b(cated)372 b(b)-31 b(y)370 b Fu(CVodeMalloc)p Fw(.)p
+Black 6814 31493 a Fu(t)p Black 5040 w Fw(\()p Fu(realtype)p
+Fw(\))429 b(the)e(time)h(at)g(whic)-31 b(h)427 b(quadrature)h
+(information)i(is)c(requested.)666 b(The)12435 32821
+y(time)275 b Fu(t)e Fw(m)-31 b(ust)273 b(fall)i(within)g(the)f(in)-31
+b(terv)-61 b(al)274 b(de\257ned)f(b)-31 b(y)273 b(the)h(last)g
+(successful)f(step)g(tak)-31 b(en)12435 34149 y(b)g(y)370
+b Fs(cv)-25 b(odes)p Fw(.)p Black 6814 35688 a Fu(yQ)p
+Black 4459 w Fw(\()p Fu(N)p 13516 35688 V 419 w(Vector)p
+Fw(\))370 b(the)g(computed)g(quadrature)g(v)-31 b(ector.)p
+Black 0 37448 a(Return)369 b(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(of)h
+Fu(CVodeGetQuad)h Fw(is)e(one)g(of:)p Black 6814 39209
+a Fu(CV)p 8046 39209 V 419 w(SUCCESS)p Black 973 w(CVodeGetQuad)h
+Fw(w)-31 b(as)370 b(successful.)p Black 6814 40748 a
+Fu(CV)p 8046 40748 V 419 w(MEM)p 10208 40748 V 419 w(NULL)p
+Black 554 w(cvode)p 16410 40748 V 419 w(mem)f Fw(w)-31
+b(as)370 b(NULL.)p Black 6814 42286 a Fu(CV)p 8046 42286
+V 419 w(NO)p 9627 42286 V 418 w(QUAD)p Black 1136 w Fw(Quadrature)f(in)
+-31 b(tegration)372 b(w)-31 b(as)370 b(not)g(initialized.)p
+Black 6814 43825 a Fu(CV)p 8046 43825 V 419 w(BAD)p 10208
+43825 V 419 w(DKY)p Black 1135 w(yQ)f Fw(is)g Fu(NULL)p
+Fw(.)p Black 6814 45364 a Fu(CV)p 8046 45364 V 419 w(BAD)p
+10208 45364 V 419 w(T)p Black 2297 w Fw(The)g(time)h
+Fu(t)g Fw(is)f(not)h(in)f(the)h(allo)-31 b(w)g(ed)371
+b(range.)p Black 0 47124 a(Notes)p Black 4072 w(In)e(case)g(of)g(an)h
+(error)e(return,)h(an)g(error)g(message)g(is)g(also)h(prin)-31
+b(ted.)0 48853 y(The)402 b(function)i Fu(CVodeGetQuadDky)g
+Fw(computes)e(the)h Fu(k)p Fw(-th)f(deriv)-61 b(ativ)-31
+b(es)403 b(of)g(the)f(in)-31 b(terp)31 b(olating)405
+b(p)31 b(olynomials)405 b(for)0 50181 y(the)392 b(quadrature)h(v)-61
+b(ariables)393 b(at)g(time)h Fu(t)p Fw(.)561 b(This)393
+b(function)h(is)e(called)h(b)-31 b(y)393 b Fu(CVodeGetQuad)h
+Fw(with)f Fu(k)581 b(=)h(0)p Fw(,)398 b(but)393 b(ma)-31
+b(y)0 51509 y(also)370 b(b)31 b(e)369 b(called)h(directly)g(b)-31
+b(y)370 b(the)f(user.)p 0 53369 9470 45 v 0 54956 45
+1587 v 376 54377 a Fu(CVodeGetQuadDky)p 9426 54956 V
+0 55000 9470 45 v Black 0 56279 a Fw(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeGetQuadDky\(cvode)p 23153 56279
+349 45 v 422 w(mem,)g(t,)h(k,)f(dkyQ\);)p Black 0 58039
+a Fw(Description)p Black 1286 w(The)386 b(function)g
+Fu(CVodeGetQuadDky)i Fw(returns)c(deriv)-61 b(ativ)-31
+b(es)387 b(of)e(the)h(quadrature)g(solution)h(v)-31 b(ector)6814
+59368 y(after)370 b(a)f(successful)g(return)f(from)i
+Fu(CVode)p Fw(.)p Black 0 61128 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 9789 61128 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f(memory)h(previously)g(allo)31
+b(cated)372 b(b)-31 b(y)370 b Fu(CVodeMalloc)p Fw(.)p
+Black 6814 62667 a Fu(t)p Black 5040 w Fw(\()p Fu(realtype)p
+Fw(\))429 b(the)e(time)h(at)g(whic)-31 b(h)427 b(quadrature)h
+(information)i(is)c(requested.)666 b(The)12435 63995
+y(time)275 b Fu(t)e Fw(m)-31 b(ust)273 b(fall)i(within)g(the)f(in)-31
+b(terv)-61 b(al)274 b(de\257ned)f(b)-31 b(y)273 b(the)h(last)g
+(successful)f(step)g(tak)-31 b(en)12435 65324 y(b)g(y)370
+b Fs(cv)-25 b(odes)p Fw(.)p Black 6814 66863 a Fu(k)p
+Black 5040 w Fw(\()p Fu(int)p Fw(\))370 b(order)f(of)h(the)f(requested)
+g(deriv)-61 b(ativ)-31 b(e.)p Black 6814 68401 a Fu(dkyQ)p
+Black 3297 w Fw(\()p Fu(N)p 13516 68401 V 419 w(Vector)p
+Fw(\))412 b(the)e(v)-31 b(ector)411 b(con)-31 b(taining)413
+b(the)e(deriv)-61 b(ativ)-31 b(e.)617 b(This)410 b(v)-31
+b(ector)411 b(m)-31 b(ust)411 b(b)31 b(e)410 b(al-)12435
+69730 y(lo)31 b(cated)371 b(b)-31 b(y)369 b(the)h(user.)p
+Black 0 71490 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(of)h Fu(CVodeGetQuadDky)h
+Fw(is)e(one)h(of:)p Black 6814 73250 a Fu(CV)p 8046 73250
+V 419 w(SUCCESS)p Black 973 w(CVodeGetQuadDky)h Fw(succeeded.)p
+Black 6814 74789 a Fu(CV)p 8046 74789 V 419 w(MEM)p 10208
+74789 V 419 w(NULL)p Black 554 w Fw(The)e(p)31 b(oin)-31
+b(ter)370 b(to)g Fu(cvode)p 23854 74789 V 419 w(mem)g
+Fw(w)-31 b(as)369 b(NULL.)p Black 6814 76328 a Fu(CV)p
+8046 76328 V 419 w(NO)p 9627 76328 V 418 w(QUAD)p Black
+1136 w Fw(Quadrature)g(in)-31 b(tegration)372 b(w)-31
+b(as)370 b(not)g(initialized.)p Black 6814 77867 a Fu(CV)p
+8046 77867 V 419 w(BAD)p 10208 77867 V 419 w(DKY)p Black
+1135 w Fw(The)f(v)-31 b(ector)370 b Fu(dkyQ)g Fw(is)f
+Fu(NULL)p Fw(.)p Black Black eop
+%%Page: 69 79
+69 78 bop Black 4000 2701 a Fx(5.7)425 b(In)-35 b(tegration)425
+b(of)g(pure)h(quadrature)f(equations)21793 b(69)p 4000
+3144 48001 45 v Black Black 10814 6974 a Fu(CV)p 12046
+6974 349 45 v 419 w(BAD)p 14208 6974 V 419 w(K)p Black
+2297 w(k)369 b Fw(is)g(not)h(in)f(the)h(range)f(0)p Fl(;)184
+b Fw(1)p Fl(;)g(:::;)g(q)31674 7140 y Fj(u)32258 6974
+y Fw(.)p Black 10814 8507 a Fu(CV)p 12046 8507 V 419
+w(BAD)p 14208 8507 V 419 w(T)p Black 2297 w Fw(The)369
+b(time)h Fu(t)g Fw(is)f(not)h(in)f(the)h(allo)-31 b(w)g(ed)371
+b(range.)p Black 4000 10262 a(Notes)p Black 4072 w(In)e(case)g(of)g(an)
+h(error)e(return,)h(an)g(error)g(message)g(is)g(also)h(prin)-31
+b(ted.)4000 13346 y Fo(5.7.3)1495 b(Optional)500 b(inputs)g(for)e
+(quadrature)i(in)-42 b(tegration)4000 15389 y Fs(cv)-25
+b(odes)505 b Fw(pro)-31 b(vides)504 b(the)g(follo)-31
+b(wing)508 b(optional)f(input)e(functions)g(to)g(con)-31
+b(trol)505 b(the)g(in)-31 b(tegration)507 b(of)d(quadrature)4000
+16718 y(equations.)p 4000 18572 10633 45 v 4000 20067
+45 1495 v 4376 19581 a Fu(CVodeSetQuadFdata)p 14588 20067
+V 4000 20111 10633 45 v Black 4000 21309 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetQuadFdata\(cvode)p
+28315 21309 349 45 v 422 w(mem,)h(fQ)p 32805 21309 V
+418 w(data\);)p Black 4000 23064 a Fw(Description)p Black
+1286 w(The)422 b(function)h Fu(CVodeSetQuadFdata)i Fw(sp)31
+b(eci\257es)421 b(the)h(user-de\257ned)f(data)i(blo)31
+b(c)-31 b(k)423 b Fu(fQ)p 47122 23064 V 418 w(data)g
+Fw(and)10814 24392 y(attac)-31 b(hes)371 b(it)f(to)g(the)f(main)h
+Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 4000 26147 a(Argumen)g(ts)p Black Black 1517 w
+Fu(cvode)p 13789 26147 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 27680 a Fu(fQ)p 12046 27680
+V 419 w(data)p Black 1716 w Fw(\()p Fu(void)582 b(*)p
+Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(user)f(data.)p
+Black 4000 29435 a(Return)h(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black
+10814 31189 a Fu(CV)p 12046 31189 V 419 w(SUCCESS)p Black
+973 w Fw(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 10814 32723 a
+Fu(CV)p 12046 32723 V 419 w(MEM)p 14208 32723 V 419 w(NULL)p
+Black 554 w Fw(The)f Fu(cvode)p 22685 32723 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+4000 34477 a(Notes)p Black 4072 w(If)331 b Fu(fQ)p 13115
+34477 V 419 w(data)h Fw(is)f(not)h(sp)31 b(eci\257ed,)339
+b(a)332 b Fu(NULL)f Fw(p)31 b(oin)-31 b(ter)332 b(is)g(passed)f(to)h
+(all)g(user-supplied)f(functions)i(that)10814 35806 y(ha)-31
+b(v)g(e)341 b(it)f(as)g(an)g(argumen)-31 b(t.)484 b(Note)341
+b(that)g Fu(fQ)p 28873 35806 V 419 w(data)f Fw(can)g(b)31
+b(e)339 b(the)h(same)g(as)g(the)g(p)31 b(oin)-31 b(ter)340
+b Fu(f)p 47628 35806 V 419 w(data)g Fw(set)10814 37134
+y(through)370 b Fu(CVodeSetFdata)p Fw(.)p 4000 39388
+11214 45 v 4000 40883 45 1495 v 4376 40397 a Fu(CVodeSetQuadErrCon)p
+15169 40883 V 4000 40927 11214 45 v Black 4000 42125
+a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f(CVodeSetQuadErrCon\(cvode)p
+28896 42125 349 45 v 422 w(mem,)h(errconQ,)g(itolQ,)g(reltolQ,)g
+(abstolQ\);)p Black 4000 43880 a Fw(Description)p Black
+1286 w(The)246 b(function)i Fu(CVodeSetQuadErrCon)h Fw(sp)31
+b(eci\257es)245 b(whether)i(or)f(not)g(quadrature)h(v)-61
+b(ariables)247 b(shoule)10814 45208 y(b)31 b(e)406 b(used)g(in)h(the)h
+(step)e(size)h(con)-31 b(trol)408 b(mec)-31 b(hanism,)418
+b(and)407 b(if)h(so,)416 b(sp)31 b(eci\257es)406 b(the)h(in)-31
+b(tegration)410 b(toler-)10814 46537 y(ances)369 b(for)g(quadrature)h
+(v)-61 b(ariables.)p Black 4000 48291 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 13789 48291 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 49825
+a Fu(errconQ)p Black 1554 w Fw(\()p Fu(booleantype)p
+Fw(\))323 b(sp)31 b(eci\257es)321 b(whether)g(quadrature)g(v)-61
+b(ariables)322 b(are)f(included)g(\()p Fu(TRUE)p Fw(\))16435
+51153 y(or)468 b(not)h(\()p Fu(FALSE)p Fw(\))h(in)e(the)g(error)g(con)
+-31 b(trol)469 b(mec)-31 b(hanism.)791 b(If)468 b Fu(errconQ)p
+Fw(=)p Fu(FALSE)p Fw(,)j(the)16435 52481 y(follo)-31
+b(wing)373 b(three)c(argumen)-31 b(ts)370 b(are)f(ignored.)p
+Black 10814 54014 a Fu(itolQ)p Black 2716 w Fw(\()p Fu(int)p
+Fw(\))383 b(is)e(either)h Fu(CV)p 24930 54014 V 419 w(SS)f
+Fw(or)h Fu(CV)p 29423 54014 V 418 w(SV)p Fw(,)g(where)g
+Fu(itolQ)582 b(=)f(CV)p 40717 54014 V 419 w(SS)381 b
+Fw(indicates)i(scalar)f(rel-)16435 55343 y(ativ)-31 b(e)481
+b(error)d(tolerance)i(and)f(scalar)g(absolute)i(error)d(tolerance,)508
+b(while)480 b Fu(itolQ)582 b(=)16435 56671 y(CV)p 17667
+56671 V 419 w(SV)491 b Fw(indicates)i(scalar)f(relativ)-31
+b(e)494 b(error)c(tolerance)j(and)f(v)-31 b(ector)492
+b(absolute)h(error)16435 58000 y(tolerance.)744 b(The)453
+b(latter)h(c)-31 b(hoice)453 b(is)f(imp)31 b(ortan)-31
+b(t)455 b(when)e(the)g(absolute)h(error)d(toler-)16435
+59328 y(ance)369 b(needs)g(to)h(b)31 b(e)369 b(di\256eren)-31
+b(t)369 b(for)g(eac)-31 b(h)370 b(quadrature)g(v)-61
+b(ariable.)p Black 10814 60861 a Fu(reltolQ)p Black 1554
+w Fw(\()p Fu(realtype)583 b(*)p Fw(\))370 b(is)f(a)g(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f(relativ)-31 b(e)371
+b(error)d(tolerance.)p Black 10814 62394 a Fu(abstolQ)p
+Black 1554 w Fw(\()p Fu(void)582 b(*)p Fw(\))500 b(is)e(a)i(p)31
+b(oin)-31 b(ter)499 b(to)h(the)f(absolute)h(error)e(tolerance.)883
+b(If)499 b Fu(itolQ)p Fw(=)p Fu(CV)p 50181 62394 V 419
+w(SS)p Fw(,)16435 63723 y Fu(abstolQ)565 b Fw(m)-31 b(ust)564
+b(b)31 b(e)564 b(a)g(p)31 b(oin)-31 b(ter)565 b(to)g(a)f
+Fu(realtype)h Fw(v)-61 b(ariable.)1078 b(If)564 b Fu(itolQ)p
+Fw(=)p Fu(CV)p 50181 63723 V 419 w(SV)p Fw(,)16435 65051
+y Fu(abstolQ)370 b Fw(m)-31 b(ust)370 b(b)31 b(e)369
+b(an)g Fu(N)p 27310 65051 V 419 w(Vector)g Fw(v)-61 b(ariable.)p
+Black Black Black 4000 68339 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p
+Black 10814 70093 a Fu(CV)p 12046 70093 V 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 10814 71627 a
+Fu(CV)p 12046 71627 V 419 w(MEM)p 14208 71627 V 419 w(NULL)p
+Black 554 w Fw(The)f Fu(cvode)p 22685 71627 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+10814 73160 a Fu(CV)p 12046 73160 V 419 w(ILL)p 14208
+73160 V 419 w(INPUT)p Black 554 w Fw(An)g(input)h(argumen)-31
+b(t)371 b(to)e Fu(CVodeSetQuadErrCon)j Fw(has)d(an)h(illegal)i(v)-61
+b(alue.)p Black 4000 74915 a(Notes)p Black 4072 w(By)369
+b(default,)i Fu(errconQ)f Fw(is)g(set)f(to)h Fu(FALSE)p
+Fw(.)11942 77446 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial
+Fd(!)1497 b Fw(It)370 b(is)f(illegal)j(to)e(call)g Fu
+(CVodeSetQuadErrCon)i Fw(b)31 b(efore)369 b(a)g(call)i(to)e
+Fu(CVodeQuadMalloc)p Fw(.)p Black Black eop
+%%Page: 70 80
+70 79 bop Black 0 2701 a Fx(70)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 6974 a Fo(5.7.4)1495 b(Optional)500 b(outputs)g(for)e
+(quadrature)i(in)-42 b(tegration)0 9196 y Fs(cv)-25 b(odes)347
+b Fw(pro)-31 b(vides)346 b(the)g(follo)-31 b(wing)350
+b(functions)d(that)h(can)e(b)31 b(e)346 b(used)f(to)i(obtain)h(solv)-31
+b(er)346 b(p)31 b(erformance)347 b(information)0 10524
+y(related)370 b(to)g(quadrature)g(in)-31 b(tegration.)p
+0 12997 14120 45 v 0 14492 45 1495 v 376 14006 a Fu
+(CVodeGetQuadNumRhsEvals)p 14075 14492 V 0 14536 14120
+45 v Black 0 15830 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeGetQuadNumRhsEvals\(cvode)p 27801 15830 349
+45 v 423 w(mem,)g(&nfQevals\);)p Black 0 17793 a Fw(Description)p
+Black 1286 w(The)520 b(function)i Fu(CVodeGetQuadNumRhsEvals)h
+Fw(returns)c(the)h(n)-31 b(um)g(b)31 b(er)520 b(of)g(calls)h(made)g(to)
+g(the)6814 19121 y(user's)368 b(quadrature)i(righ)-31
+b(t-hand)371 b(side)e(function.)p Black 0 21084 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 21084 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 22730
+a Fu(nfQevals)p Black 973 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(calls)g(made)g(to)g(the)f
+(user's)g Fu(fQ)g Fw(function.)p Black 0 24693 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 6814 26655 a Fu(CV)p 8046
+26655 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 6814 28301 a Fu(CV)p 8046 28301 V 419 w(MEM)p 10208
+28301 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+18685 28301 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 6814 29947 a Fu(CV)p 8046
+29947 V 419 w(NO)p 9627 29947 V 418 w(QUAD)p Black 1136
+w Fw(Quadrature)g(in)-31 b(tegration)372 b(has)d(not)h(b)31
+b(een)369 b(initialized.)p 0 32820 16444 45 v 0 34314
+45 1495 v 376 33828 a Fu(CVodeGetQuadNumErrTestFails)p
+16399 34314 V 0 34358 16444 45 v Black 0 35653 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetQuadNumErrTestFails\(cvode)p
+30125 35653 349 45 v 423 w(mem,)h(&nQetfails\);)p Black
+0 37616 a Fw(Description)p Black 1286 w(The)411 b(function)h
+Fu(CVodeGetQuadNumErrTestFails)i Fw(returns)c(the)h(n)-31
+b(um)g(b)31 b(er)411 b(of)g(lo)31 b(cal)412 b(error)d(test)6814
+38944 y(failures)370 b(due)f(to)h(quadrature)f(v)-61
+b(ariables.)p Black 0 40907 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 9789 40907 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 42552 a Fu(nQetfails)p Black
+555 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(error)e(test)i(failures)f(due)g(to)h(quadrature)g(v)-61
+b(ariables.)p Black 0 44515 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p
+Black 6814 46478 a Fu(CV)p 8046 46478 V 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 48124 a Fu(CV)p 8046 48124 V 419 w(MEM)p 10208 48124
+V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p 18685
+48124 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370 b(is)f
+Fu(NULL)p Fw(.)p Black 6814 49769 a Fu(CV)p 8046 49769
+V 419 w(NO)p 9627 49769 V 418 w(QUAD)p Black 1136 w Fw(Quadrature)g(in)
+-31 b(tegration)372 b(has)d(not)h(b)31 b(een)369 b(initialized.)p
+0 52643 13539 45 v 0 54229 45 1587 v 376 53651 a Fu
+(CVodeGetQuadErrWeights)p 13494 54229 V 0 54273 13539
+45 v Black 0 55649 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeGetQuadErrWeights\(cvode)p 27220 55649 349
+45 v 423 w(mem,)g(eQweight\);)p Black 0 57612 a Fw(Description)p
+Black 1286 w(The)419 b(function)h Fu(CVodeGetQuadErrWeights)i
+Fw(returns)c(the)h(quadrature)g(error)f(w)-31 b(eigh)g(ts)421
+b(at)f(the)6814 58940 y(curren)-31 b(t)369 b(time.)p
+Black 0 60903 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 60903 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 62549 a Fu(eQweight)p Black
+973 w Fw(\()p Fu(N)p 13516 62549 V 419 w(Vector)p Fw(\))370
+b(quadrature)g(error)e(w)-31 b(eigh)g(ts)371 b(at)f(the)g(curren)-31
+b(t)368 b(time.)p Black 0 64511 a(Return)h(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p
+Black 6814 66474 a Fu(CV)p 8046 66474 V 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 68120 a Fu(CV)p 8046 68120 V 419 w(MEM)p 10208 68120
+V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p 18685
+68120 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370 b(is)f
+Fu(NULL)p Fw(.)p Black 6814 69766 a Fu(CV)p 8046 69766
+V 419 w(NO)p 9627 69766 V 418 w(QUAD)p Black 1136 w Fw(Quadrature)g(in)
+-31 b(tegration)372 b(has)d(not)h(b)31 b(een)369 b(initialized.)p
+Black 0 72505 a(Notes)p Black 5200 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+
+
+ at endspecial Fd(!)1497 b Fw(The)370 b(user)e(m)-31 b(ust)370
+b(allo)31 b(cate)371 b(memory)g(for)e Fu(eQweight)p Fw(.)6814
+74468 y(If)455 b(quadratures)g(w)-31 b(ere)455 b(not)g(included)h(in)f
+(the)g(error)f(con)-31 b(trol)456 b(mec)-31 b(hanism)457
+b(\(through)f(a)f(call)h(to)6814 75797 y Fu(CVodeSetQuadErrCon)307
+b Fw(with)f Fu(errconQ)583 b(=)e(TRUE)p Fw(\),)306 b
+Fu(CVodeGetQuadErrWeights)i Fw(do)31 b(es)304 b(not)i(set)6814
+77125 y(the)369 b Fu(eQweight)i Fw(v)-31 b(ector.)p Black
+Black eop
+%%Page: 71 81
+71 80 bop Black 4000 2701 a Fx(5.8)425 b(Ro)35 b(ot\257nding)38101
+b(71)p 4000 3144 48001 45 v Black 4000 5965 10633 45
+v 4000 7460 45 1495 v 4376 6974 a Fu(CVodeGetQuadStats)p
+14588 7460 V 4000 7504 10633 45 v Black 4000 8845 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetQuadStats\(cvode)p
+28315 8845 349 45 v 422 w(mem,)h(&nfQevals,)g(&nQetfails\);)p
+Black 4000 10901 a Fw(Description)p Black 1286 w(The)296
+b(function)h Fu(CVodeGetQuadStats)i Fw(returns)294 b(the)i
+Fs(cv)-25 b(odes)297 b Fw(in)-31 b(tegrator)298 b(statistics)f(as)f(a)g
+(group.)p Black 4000 12957 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 13789 12957 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 14649 a Fu(nfQevals)p Black
+973 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(calls)g(to)g(the)g(user's)e Fu(fQ)h Fw(function.)p
+Black 10814 16342 a Fu(nQetfails)p Black 555 w Fw(\()p
+Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369
+b(of)h(error)e(test)i(failures)f(due)g(to)h(quadrature)g(v)-61
+b(ariables.)p Black 4000 18398 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 10814 20454 a Fu(CV)p 12046 20454 V 419 w(SUCCESS)p
+Black 973 w Fw(the)g(optional)j(output)e(v)-61 b(alues)370
+b(ha)-31 b(v)g(e)370 b(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 22146 a Fu(CV)p 12046 22146 V 419 w(MEM)p
+14208 22146 V 419 w(NULL)p Black 554 w Fw(the)f Fu(cvode)p
+22316 22146 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 10814 23838 a Fu(CV)p 12046
+23838 V 419 w(NO)p 13627 23838 V 418 w(QUAD)p Black 1136
+w Fw(Quadrature)g(in)-31 b(tegration)372 b(has)d(not)h(b)31
+b(een)369 b(initialized.)4000 27693 y Fo(5.7.5)1495 b(User-supplied)501
+b(function)e(for)f(quadrature)j(in)-42 b(tegration)4000
+30002 y Fw(F)-92 b(or)293 b(in)-31 b(tegration)296 b(of)e(quadrature)g
+(equations,)311 b(the)294 b(user)e(m)-31 b(ust)294 b(pro)-31
+b(vide)294 b(a)g(function)h(that)g(de\257nes)e(the)g(righ)-31
+b(t-hand)4000 31330 y(side)369 b(of)h(the)f(quadrature)h(equations.)494
+b(This)370 b(function)g(m)-31 b(ust)370 b(b)31 b(e)369
+b(of)h(t)-31 b(yp)31 b(e)369 b Fu(CVQuadRhsFn)i Fw(de\257ned)e(as)g
+(follo)-31 b(ws:)p 4000 33955 7146 45 v 4000 35449 45
+1495 v 4376 34963 a Fu(CVQuadRhsFn)p 11101 35449 V 4000
+35493 7146 45 v Black 4000 37077 a Fw(De\257nition)p
+Black 2034 w Fu(typedef)582 b(void)g(\(*CVQuadRhsFn)r(\)\(realtype)g
+(t,)g(N)p 34711 37077 349 45 v 419 w(Vector)g(y,)25924
+38405 y(N)p 26575 38405 V 418 w(Vector)g(yQdot,)h(void)e(*fQ)p
+39778 38405 V 419 w(data\);)p Black 4000 40411 a Fw(Purp)31
+b(ose)p Black 2884 w(This)399 b(function)h(computes)f(the)g(quadrature)
+g(equation)h(righ)-31 b(t-hand)400 b(side)e(for)h(a)g(giv)-31
+b(en)399 b(v)-61 b(alue)399 b(of)10814 41739 y(the)369
+b(indep)31 b(enden)-31 b(t)370 b(v)-61 b(ariable)370
+b Fl(t)f Fw(and)h(state)g(v)-31 b(ector)370 b Fl(y)40
+b Fw(.)p Black 4000 43795 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(t)p Black 3878 w Fw(is)369 b(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(indep)31 b(enden)-31
+b(t)370 b(v)-61 b(ariable.)p Black 10814 45487 a Fu(y)p
+Black 3878 w Fw(is)369 b(the)g(curren)-31 b(t)369 b(v)-61
+b(alue)370 b(of)f(the)h(dep)31 b(enden)-31 b(t)369 b(v)-61
+b(ariable)370 b(v)-31 b(ector,)371 b Fl(y)40 b Fw(\()p
+Fl(t)p Fw(\).)p Black 10814 47180 a Fu(yQdot)p Black
+1554 w Fw(is)369 b(the)g(output)i(v)-31 b(ector)370 b
+Fl(f)119 b(Q)p Fw(\()p Fl(t;)184 b(y)40 b Fw(\).)p Black
+10814 48872 a Fu(fQ)p 12046 48872 V 419 w(data)p Black
+554 w Fw(is)505 b(a)g(p)31 b(oin)-31 b(ter)506 b(to)f(user)f(data)i(-)f
+(the)g(same)h(as)f(the)g Fu(fQ)p 38754 48872 V 418 w(data)h
+Fw(parameter)g(passed)e(to)15273 50200 y Fu(CVodeSetQuadFdata)p
+Fw(.)p Black 4000 52256 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(A)369 b Fu(CVQuadRhsFn)i Fw(function)f(t)-31
+b(yp)31 b(e)370 b(do)31 b(es)369 b(not)h(ha)-31 b(v)g(e)370
+b(a)f(return)g(v)-61 b(alue.)p Black 4000 54313 a(Notes)p
+Black 4072 w(Allo)31 b(cation)372 b(of)e(memory)g(for)f
+Fu(yQdot)h Fw(is)f(automatically)374 b(handled)c(within)h
+Fs(cv)-25 b(odes)p Fw(.)10814 56369 y(Both)491 b Fu(y)g
+Fw(and)g Fu(yQdot)g Fw(are)f(of)i(t)-31 b(yp)31 b(e)491
+b Fu(N)p 27044 56369 V 418 w(Vector)p Fw(,)522 b(but)491
+b(they)g(t)-31 b(ypically)494 b(ha)-31 b(v)g(e)491 b(di\256eren)-31
+b(t)491 b(in)-31 b(ternal)10814 57697 y(represen)g(tations.)704
+b(It)440 b(is)f(the)h(user's)f(resp)31 b(onsibilit)-31
+b(y)441 b(to)f(access)f(the)h(v)-31 b(ector)440 b(data)h(consisten)-31
+b(tly)10814 59025 y(\(including)267 b(the)f(use)e(of)i(the)f(correct)g
+(accessor)g(macros)g(from)h(eac)-31 b(h)265 b Fs(nvector)h
+Fw(implemen)-31 b(tation\).)10814 60354 y(F)-92 b(or)481
+b(the)i(sak)-31 b(e)482 b(of)h(computational)j(e\261ciency)-92
+b(,)511 b(the)482 b(v)-31 b(ector)483 b(functions)g(in)g(the)f(t)-31
+b(w)g(o)484 b Fs(nvector)10814 61682 y Fw(implemen)-31
+b(tations)413 b(pro)-31 b(vided)409 b(with)h Fs(cv)-25
+b(odes)409 b Fw(do)g(not)g(p)31 b(erform)409 b(an)-31
+b(y)409 b(consistency)h(c)-31 b(hec)g(ks)409 b(with)10814
+63010 y(resp)31 b(ect)368 b(to)i(their)g Fu(N)p 19257
+63010 V 418 w(Vector)g Fw(argumen)-31 b(ts)370 b(\(see)g
+Fn(x)p Fw(8.1)g(and)f Fn(x)p Fw(8.2\).)4000 67427 y Fr(5.8)1793
+b(Ro)50 b(ot\257nding)4000 70117 y Fw(While)315 b(solving)h(the)e(IVP)
+-92 b(,)315 b Fs(cv)-25 b(odes)314 b Fw(has)h(the)f(capabilit)-31
+b(y)318 b(to)d(\257nd)f(the)g(ro)31 b(ots)315 b(of)g(a)f(set)g(of)h
+(user-de\257ned)e(functions.)4000 71445 y(This)275 b(section)h(describ)
+31 b(es)274 b(the)i(user-callable)g(functions)g(used)f(to)h(initialize)
+i(and)d(de\257ne)g(the)g(ro)31 b(ot\257nding)277 b(problem)4000
+72774 y(and)369 b(to)h(obtain)h(solution)g(information,)i(and)c(it)h
+(also)g(describ)31 b(es)368 b(the)i(required)e(user-supplied)h
+(function.)4000 76628 y Fo(5.8.1)1495 b(User-callable)501
+b(functions)f(for)e(ro)42 b(ot\257nding)p Black Black
+eop
+%%Page: 72 82
+72 81 bop Black 0 2701 a Fx(72)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 5965 8308 45 v 0 7306 45 1341 v 376 6974 a Fu(CVodeRootInit)p
+8263 7306 V 0 7350 8308 45 v Black 0 8714 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeRootInit\(cvode)p
+21991 8714 349 45 v 421 w(mem,)h(nrtfn,)g(g,)f(g)p 31710
+8714 V 419 w(data\);)p Black 0 10509 a Fw(Description)p
+Black 1286 w(The)387 b(function)h Fu(CVodeRootInit)h
+Fw(sp)31 b(eci\257es)386 b(that)i(the)f(ro)31 b(ots)387
+b(of)g(a)g(set)g(of)g(functions)h Fl(g)43431 10675 y
+Fj(i)43799 10509 y Fw(\()p Fl(t;)184 b(y)40 b Fw(\))388
+b(are)6814 11838 y(to)370 b(b)31 b(e)369 b(found)g(while)i(the)e(IVP)g
+(is)g(b)31 b(eing)370 b(solv)-31 b(ed.)p Black 0 13633
+a(Argumen)g(ts)p Black Black 1517 w Fu(cvode)p 9789 13633
+V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(ode)370
+b Fw(memory)g(blo)31 b(c)-31 b(k)370 b(returned)f(b)-31
+b(y)369 b Fu(CVodeCreate)p Fw(.)p Black 6814 15195 a
+Fu(nrtfn)p Black 2716 w Fw(\()p Fu(int)p Fw(\))h(is)g(the)f(n)-31
+b(um)g(b)31 b(er)369 b(of)h(ro)31 b(ot)370 b(functions)g
+Fl(g)31391 15361 y Fj(i)31759 15195 y Fw(.)p Black 6814
+16756 a Fu(g)p Black 5040 w Fw(\()p Fu(CVRootFn)p Fw(\))482
+b(is)d(the)h Fs(C)g Fw(function)h(whic)-31 b(h)480 b(de\257nes)f(the)h
+Fu(nrtfn)h Fw(functions)f Fl(g)45296 16922 y Fj(i)45665
+16756 y Fw(\()p Fl(t;)184 b(y)40 b Fw(\))12435 18085
+y(whose)370 b(ro)31 b(ots)369 b(are)g(sough)-31 b(t.)494
+b(See)369 b Fn(x)p Fw(5.8.2)i(for)e(details.)p Black
+6814 19647 a Fu(g)p 7465 19647 V 419 w(data)p Black 2297
+w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f(user)f(data)j(for)e(use)g(b)-31
+b(y)369 b(the)h(user's)e(ro)31 b(ot)370 b(function)g
+Fl(g)40 b Fw(.)p Black 0 21442 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of)p
+Black 6814 23237 a Fu(CV)p 8046 23237 V 419 w(SUCCESS)p
+Black 2716 w Fw(The)h(call)g(to)g Fu(CVodeRootInit)h
+Fw(w)-31 b(as)370 b(successful.)p Black 6814 24799 a
+Fu(CV)p 8046 24799 V 419 w(MEM)p 10208 24799 V 419 w(NULL)p
+Black 2297 w Fw(The)g Fu(cvode)p 20429 24799 V 419 w(mem)f
+Fw(argumen)-31 b(t)371 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)p
+Black 6814 26360 a Fu(CV)p 8046 26360 V 419 w(MEM)p 10208
+26360 V 419 w(FAIL)p Black 2297 w Fw(A)f(memory)h(allo)31
+b(cation)373 b(failed.)p Black 6814 27922 a Fu(CV)p 8046
+27922 V 419 w(RTFUNC)p 11951 27922 V 419 w(NULL)p Black
+554 w Fw(The)d(function)g Fu(g)f Fw(is)g Fu(NULL)p Fw(,)h(but)g
+Fu(nrtfn)p Fl(>)308 b Fw(0.)p Black 0 29717 a(Notes)p
+Black 4072 w(If)394 b(a)g(new)h(IVP)f(is)g(to)h(b)31
+b(e)394 b(solv)-31 b(ed)395 b(with)g(a)g(call)g(to)g
+Fu(CVodeReInit)p Fw(,)402 b(where)394 b(the)h(new)f(IVP)g(has)h(no)6814
+31046 y(ro)31 b(ot\257nding)371 b(problem)f(but)f(the)g(prior)g(one)h
+(did,)g(then)f(call)i Fu(CVodeRootInit)g Fw(with)f Fu(nrtfn)p
+Fw(=)308 b(0.)0 32786 y(There)369 b(are)g(t)-31 b(w)g(o)371
+b(optional)h(output)e(functions)g(asso)31 b(ciated)371
+b(with)f(ro)31 b(ot\257nding.)p 0 34718 10052 45 v 0
+36059 45 1341 v 376 35727 a Fu(CVodeGetRootInfo)p 10007
+36059 V 0 36103 10052 45 v Black 0 37467 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetRootInfo\(cvode)p
+23734 37467 349 45 v 422 w(mem,)g(rootsfound\);)p Black
+0 39263 a Fw(Description)p Black 1286 w(The)289 b(function)i
+Fu(CVodeGetRootInfo)g Fw(returns)d(an)h(arra)-31 b(y)290
+b(sho)-31 b(wing)290 b(whic)-31 b(h)290 b(functions)g(w)-31
+b(ere)289 b(found)6814 40591 y(to)370 b(ha)-31 b(v)g(e)370
+b(a)g(ro)31 b(ot.)p Black 0 42386 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 9789 42386 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 43948
+a Fu(rootsfound)p Black 555 w Fw(\()p Fu(int)582 b(*)p
+Fw(\))479 b(an)h Fu(int)f Fw(arra)-31 b(y)479 b(of)h(length)g
+Fu(nrtfn)f Fw(sho)-31 b(wing)481 b(the)e(indices)g(of)h(the)f(user)
+12435 45276 y(functions)303 b Fl(g)17668 45442 y Fj(i)18339
+45276 y Fw(found)f(to)h(ha)-31 b(v)g(e)303 b(a)g(ro)31
+b(ot.)471 b(F)-92 b(or)301 b Fl(i)308 b Fw(=)f(0)p Fl(;)184
+b(:)g(:)g(:)189 b(;)p Fu(nrtfn)p Fn(\241)p Fw(1,)317
+b Fu(rootsfound)p Fw([)p Fl(i)p Fw(]=)12435 46604 y(1)370
+b(if)f Fl(g)14900 46770 y Fj(i)15638 46604 y Fw(has)g(a)g(ro)31
+b(ot,)371 b(and)e(0)g(if)h(not.)p Black 0 48400 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 6814 50195 a Fu(CV)p 8046
+50195 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(output)e(v)-61
+b(alues)370 b(ha)-31 b(v)g(e)370 b(b)31 b(een)368 b(successfully)i
+(set.)p Black 6814 51757 a Fu(CV)p 8046 51757 V 419 w(MEM)p
+10208 51757 V 419 w(NULL)p Black 554 w Fw(The)f Fu(cvode)p
+18685 51757 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 0 54329 a(Notes)p Black
+5200 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1497
+b Fw(The)370 b(user)e(m)-31 b(ust)370 b(allo)31 b(cate)371
+b(memory)g(for)e(the)g(v)-31 b(ector)370 b Fu(rootsfound)p
+Fw(.)p 0 56929 10633 45 v 0 58270 45 1341 v 376 57938
+a Fu(CVodeGetNumGEvals)p 10588 58270 V 0 58314 10633
+45 v Black 0 59678 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeGetNumGEvals\(cvode)p 24315 59678 349 45 v
+422 w(mem,)h(&ngevals\);)p Black 0 61473 a Fw(Description)p
+Black 1286 w(The)312 b(function)h Fu(CVodeGetNumGEvals)h
+Fw(returns)d(the)h(cum)-31 b(ulativ)g(e)314 b(n)-31 b(um)g(b)31
+b(er)312 b(of)g(calls)h(made)f(to)h(the)6814 62802 y(user-supplied)369
+b(ro)31 b(ot)369 b(function)i Fl(g)40 b Fw(.)p Black
+0 64597 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+9789 64597 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 66158 a Fu(ngevals)p Black 1554 w Fw(\()p
+Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369
+b(of)h(calls)g(made)g(to)g(the)f(user's)g(function)h
+Fu(g)f Fw(th)-31 b(us)370 b(far.)p Black 0 67954 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 6814 69749 a Fu(CV)p 8046
+69749 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 6814 71311 a Fu(CV)p 8046 71311 V 419 w(MEM)p 10208
+71311 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+18685 71311 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)0 74473 y Fo(5.8.2)1495 b(User-supplied)501
+b(function)e(for)f(ro)42 b(ot\257nding)0 76539 y Fw(If)428
+b(a)h(ro)31 b(ot\257nding)430 b(problem)g(is)e(to)i(b)31
+b(e)428 b(solv)-31 b(ed)429 b(during)g(the)g(in)-31 b(tegration)431
+b(of)e(the)g(ODE)g(system,)444 b(the)429 b(user)e(m)-31
+b(ust)0 77867 y(supply)369 b(a)h Fs(C)f Fw(function)i(of)e(t)-31
+b(yp)31 b(e)370 b Fu(CVRootFn)p Fw(,)h(de\257ned)d(as)i(follo)-31
+b(ws:)p Black Black eop
+%%Page: 73 83
+73 82 bop Black 4000 2701 a Fx(5.9)425 b(Preconditioner)i(mo)35
+b(dules)31418 b(73)p 4000 3144 48001 45 v Black 4000
+5965 5402 45 v 4000 7306 45 1341 v 4376 6974 a Fu(CVRootFn)p
+9358 7306 V 4000 7350 5402 45 v Black 4000 8739 a Fw(De\257nition)p
+Black 2034 w Fu(typedef)582 b(void)g(\(*CVRootFn\)\()r(realtype)g(t,)f
+(N)p 32967 8739 349 45 v 419 w(Vector)h(y,)g(realtype)g(*gout,)25343
+10067 y(void)f(*g)p 29480 10067 V 419 w(data\);)p Black
+4000 11922 a Fw(Purp)31 b(ose)p Black 2884 w(This)429
+b(function)g(implemen)-31 b(ts)430 b(a)f(v)-31 b(ector-v)-61
+b(alued)429 b(function)h Fl(g)40 b Fw(\()p Fl(t;)184
+b(y)40 b Fw(\))429 b(suc)-31 b(h)428 b(that)h(the)f(ro)31
+b(ots)429 b(of)g(the)10814 13251 y Fu(nrtfn)370 b Fw(comp)31
+b(onen)-31 b(ts)370 b Fl(g)20711 13417 y Fj(i)21080 13251
+y Fw(\()p Fl(t;)184 b(y)40 b Fw(\))370 b(are)f(sough)-31
+b(t.)p Black 4000 15095 a(Argumen)g(ts)p Black Black
+1517 w Fu(t)p Black 3297 w Fw(is)369 b(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(indep)31 b(enden)-31
+b(t)370 b(v)-61 b(ariable.)p Black 10814 16681 a Fu(y)p
+Black 3297 w Fw(is)369 b(the)g(curren)-31 b(t)369 b(v)-61
+b(alue)370 b(of)f(the)h(dep)31 b(enden)-31 b(t)369 b(v)-61
+b(ariable)370 b(v)-31 b(ector,)371 b Fl(y)40 b Fw(\()p
+Fl(t)p Fw(\).)p Black 10814 18267 a Fu(gout)p Black 1554
+w Fw(is)369 b(the)g(output)i(arra)-31 b(y)-92 b(,)369
+b(of)h(length)g Fu(nrtfn)p Fw(,)h(with)f(comp)31 b(onen)-31
+b(ts)370 b Fl(g)41820 18433 y Fj(i)42189 18267 y Fw(\()p
+Fl(t;)184 b(y)40 b Fw(\).)p Black 10814 19853 a Fu(g)p
+11465 19853 V 419 w(data)p Black 554 w Fw(is)588 b(a)g(p)31
+b(oin)-31 b(ter)589 b(to)f(user)f(data)i(-)f(the)g(same)h(as)f(the)g
+Fu(g)p 38505 19853 V 418 w(data)h Fw(parameter)g(passed)e(to)14692
+21182 y Fu(CVodeSetGdata)p Fw(.)p Black 4000 23026 a(Return)369
+b(v)-61 b(alue)p Black 554 w(A)369 b Fu(CVRootFn)h Fw(function)h(t)-31
+b(yp)31 b(e)370 b(do)31 b(es)368 b(not)i(ha)-31 b(v)g(e)371
+b(a)e(return)g(v)-61 b(alue.)p Black 4000 24870 a(Notes)p
+Black 4072 w(Allo)31 b(cation)372 b(of)e(memory)g(for)f
+Fu(gout)h Fw(is)f(automatically)374 b(handled)c(within)h
+Fs(cv)-25 b(odes)p Fw(.)4000 28724 y Fr(5.9)1793 b(Preconditioner)600
+b(mo)50 b(dules)4000 31217 y Fw(The)317 b(e\261ciency)h(of)g(Krylo)-31
+b(v)318 b(iterativ)-31 b(e)319 b(metho)31 b(ds)317 b(for)g(the)h
+(solution)g(of)g(linear)g(systems)e(can)i(b)31 b(e)316
+b(greatly)j(enhanced)4000 32545 y(through)413 b(preconditioning.)625
+b(F)-92 b(or)412 b(problems)g(in)h(whic)-31 b(h)413 b(the)g(user)e
+(cannot)j(de\257ne)e(a)h(more)f(e\256ectiv)-31 b(e,)425
+b(problem-)4000 33873 y(sp)31 b(eci\257c)345 b(preconditioner,)352
+b Fs(cv)-25 b(odes)346 b Fw(pro)-31 b(vides)346 b(a)g(banded)g
+(preconditioner)g(in)g(the)g(mo)31 b(dule)346 b Fs(cvbandpre)h
+Fw(and)f(a)4000 35202 y(band-blo)31 b(c)-31 b(k-diagonal)373
+b(preconditioner)e(mo)31 b(dule)370 b Fs(cvbbdpre)p Fw(.)4000
+38494 y Fo(5.9.1)1495 b(A)499 b(serial)g(banded)h(preconditioner)g(mo)
+42 b(dule)4000 40605 y Fw(This)305 b(preconditioner)g(pro)-31
+b(vides)305 b(a)f(band)h(matrix)g(preconditioner)h(based)e(on)g
+(di\256erence)g(quotien)-31 b(ts)306 b(of)f(the)f(ODE)4000
+41933 y(righ)-31 b(t-hand)318 b(side)f(function)i Fu(f)p
+Fw(.)475 b(It)317 b(generates)g(a)h(band)f(matrix)h(of)g(bandwidth)h
+Fl(m)37968 42099 y Fj(l)38449 41933 y Fw(+)142 b Fl(m)40424
+42099 y Fj(u)41144 41933 y Fw(+)g(1,)328 b(where)317
+b(the)g(n)-31 b(um)g(b)31 b(er)4000 43262 y(of)271 b(sup)31
+b(er-diagonals)271 b(\()p Fl(m)14321 43428 y Fj(u)14900
+43262 y Fw(,)290 b(the)271 b(upp)31 b(er)269 b(half-bandwidth\))k(and)d
+(sub-diagonals)i(\()p Fl(m)38681 43428 y Fj(l)39022 43262
+y Fw(,)290 b(the)270 b(lo)-31 b(w)g(er)272 b(half-bandwidth\))4000
+44590 y(are)340 b(sp)31 b(eci\257ed)339 b(b)-31 b(y)340
+b(the)g(user)e(and)i(uses)f(this)h(to)g(form)h(a)f(preconditioner)h
+(for)e(use)g(with)i(the)f(Krylo)-31 b(v)341 b(linear)f(solv)-31
+b(er)4000 45918 y(in)447 b Fs(cvspgmr)p Fw(.)726 b(Although)449
+b(this)e(matrix)i(is)e(in)-31 b(tended)448 b(to)g(appro)-31
+b(ximate)450 b(the)d(Jacobian)h Fl(@)61 b(f)119 b(=@)61
+b(y)40 b Fw(,)468 b(it)448 b(ma)-31 b(y)448 b(b)31 b(e)447
+b(a)4000 47247 y(v)-31 b(ery)424 b(crude)f(appro)-31
+b(ximation.)661 b(The)424 b(true)g(Jacobian)h(need)f(not)h(b)31
+b(e)423 b(banded,)439 b(or)423 b(its)i(true)e(bandwidth)j(ma)-31
+b(y)425 b(b)31 b(e)4000 48575 y(larger)323 b(than)g Fl(m)10604
+48741 y Fj(l)11097 48575 y Fw(+)153 b Fl(m)13083 48741
+y Fj(u)13815 48575 y Fw(+)g(1,)332 b(as)323 b(long)h(as)f(the)f(banded)
+h(appro)-31 b(ximation)327 b(generated)c(here)f(is)h(su\261cien)-31
+b(tly)324 b(accurate)4000 49904 y(to)370 b(sp)31 b(eed)368
+b(con)-31 b(v)g(ergence)370 b(as)f(a)h(preconditioner.)5660
+51268 y(In)534 b(order)f(to)i(use)f(the)g Fs(cvbandpre)h
+Fw(mo)31 b(dule,)577 b(the)534 b(user)f(need)h(not)g(de\257ne)g(an)-31
+b(y)535 b(additional)i(functions.)4000 52597 y(Aside)411
+b(from)h(the)f(header)g(\257les)g(required)g(for)g(the)g(in)-31
+b(tegration)415 b(of)c(the)h(ODE)e(problem)i(\(see)f
+Fn(x)p Fw(5.3\),)424 b(to)412 b(use)f(the)4000 53925
+y Fs(cvbandpre)437 b Fw(mo)31 b(dule,)454 b(the)436 b(main)h(program)g
+(m)-31 b(ust)437 b(include)f(the)h(header)e(\257le)i
+Fu(cvbandpre.h)g Fw(whic)-31 b(h)437 b(declares)4000
+55253 y(the)327 b(needed)f(function)i(protot)-31 b(yp)31
+b(es.)479 b(The)327 b(follo)-31 b(wing)330 b(is)d(a)f(summary)h(of)g
+(the)g(usage)g(of)g(this)g(mo)31 b(dule.)479 b(Steps)327
+b(that)4000 56582 y(are)369 b(unc)-31 b(hanged)370 b(from)g(the)f(sk)
+-31 b(eleton)371 b(program)f(presen)-31 b(ted)369 b(in)g
+Fn(x)p Fw(5.4)h(are)f(gra)-31 b(y)g(ed)371 b(out.)p Black
+4553 58905 a(1.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w
+Fx(Set)426 b(problem)f(dimensions)p Black Black 4553
+61303 a Fw(2.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Set)h(v)-35
+b(ector)424 b(of)h(initial)e(v)-71 b(alues)p Black Black
+4553 63700 a Fw(3.)p Black 0.5 0.5 0.5 TeXcolorrgb 493
+w Fx(Create)426 b Fs(cv)-25 b(odes)425 b Fx(ob)71 b(ject)p
+Black Black 4553 66098 a Fw(4.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx(Set)426 b(optional)e(inputs)p Black Black 4553
+68495 a Fw(5.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Allo)35
+b(cate)425 b(in)-35 b(ternal)425 b(memory)p Black Black
+4553 70893 a Fw(6.)p Black 493 w Fx(Initialize)e(the)i
+Fs(cvbandpre)h Fx(preconditioner)g(mo)35 b(dule)5906
+72775 y Fw(Sp)c(ecify)370 b(the)f(upp)31 b(er)369 b(and)g(lo)-31
+b(w)g(er)371 b(half-bandwidths)g(\()p Fu(mu)f Fw(and)f
+Fu(ml)p Fw(,)h(resp)31 b(ectiv)-31 b(ely\))371 b(and)e(call)5906
+74657 y Fu(bp)p 7138 74657 V 419 w(data)582 b(=)f
+(CVBandPrecAlloc\(cvode)p 23826 74657 V 422 w(mem,)g(N,)h(mu,)g(ml\);)
+5906 76539 y Fw(to)399 b(allo)31 b(cate)401 b(memory)e(for)f(and)g(to)h
+(initialize)i(a)e(data)g(structure)e(\(p)31 b(oin)-31
+b(ted)400 b(to)f(b)-31 b(y)398 b Fu(bp)p 42432 76539
+V 419 w(data)p Fw(\))h(to)g(b)31 b(e)397 b(passed)5906
+77867 y(to)370 b(the)g Fs(cvspgmr)e Fw(linear)i(solv)-31
+b(er.)p Black Black eop
+%%Page: 74 84
+74 83 bop Black 0 2701 a Fx(74)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black Black 553 6974 a Fw(7.)p Black 493 w Fx(A)-35 b(ttac)g(h)424
+b(the)h Fs(cvspgmr)f Fx(linear)g(solv)-35 b(er)1906 8856
+y Fu(flag)582 b(=)f(CVBPSpgmr\(cvode)p 14759 8856 349
+45 v 421 w(mem,)h(pretype,)g(maxl,)g(bp)p 27965 8856
+V 419 w(data\);)1906 10738 y Fw(The)537 b(function)h
+Fu(CVBPSpgmr)g Fw(is)f(a)g(wrapp)31 b(er)536 b(for)h(the)g
+Fs(cvspgmr)f Fw(sp)31 b(eci\257cation)538 b(function)g
+Fu(CVSpgmr)g Fw(and)1906 12066 y(p)31 b(erforms)369 b(the)h(follo)-31
+b(wing)372 b(actions:)p Black 3788 14424 a Fn(\262)p
+Black 1 w Fw(A)-31 b(ttac)g(hes)370 b(the)g Fs(cvspgmr)e
+Fw(linear)i(solv)-31 b(er)370 b(to)g(the)f(main)i Fs(cv)-25
+b(odes)369 b Fw(solv)-31 b(er)370 b(memory;)p Black 3788
+16229 a Fn(\262)p Black 1 w Fw(Sets)f(the)g(preconditioner)i(data)f
+(structure)f(for)g Fs(cvbandpre)p Fw(;)p Black 3788 18034
+a Fn(\262)p Black 1 w Fw(Sets)g(the)g(preconditioner)i(setup)e
+(function)h(for)g Fs(cvbandpre)p Fw(;)p Black 3788 19839
+a Fn(\262)p Black 1 w Fw(Sets)f(the)g(preconditioner)i(solv)-31
+b(e)370 b(function)g(for)g Fs(cvbandpre)p Fw(;)1906 22197
+y(The)425 b(argumen)-31 b(ts)426 b Fu(pretype)f Fw(and)g
+Fu(maxl)g Fw(are)g(describ)31 b(ed)423 b(b)31 b(elo)-31
+b(w.)660 b(The)425 b(last)h(argumen)-31 b(t)426 b(to)f
+Fu(CVBPSpgmr)h Fw(is)f(a)1906 23526 y(p)31 b(oin)-31
+b(ter)370 b(to)g(the)g Fs(cvbandpre)g Fw(data)g(structure)f(returned)f
+(b)-31 b(y)370 b Fu(CVBandPrecAlloc)p Fw(.)p Black 553
+25884 a(8.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Set)426
+b(linear)e(solv)-35 b(er)425 b(optional)f(inputs)p Black
+1906 27766 a Fw(Note)279 b(that)g(the)g(user)d(should)j(not)f(o)-31
+b(v)g(erwrite)280 b(the)e(preconditioner)h(data,)298
+b(setup)278 b(function,)298 b(or)278 b(solv)-31 b(e)278
+b(function)1906 29094 y(through)370 b(calls)g(to)g Fs(cvspgmr)f
+Fw(optional)j(input)d(functions.)p Black 553 31453 a(9.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Adv)-71 b(ance)426
+b(solution)f(in)f(time)p Black Black 0 33811 a Fw(10.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Deallo)35 b(cate)425
+b(memory)h(for)f(solution)g(v)-35 b(ector)p Black Black
+0 36169 a Fw(11.)p Black 493 w Fx(F)-106 b(ree)426 b(the)f
+Fs(cvbandpre)g Fx(data)f(structure)1906 38051 y Fu(CVBandPrecFree\(bp)p
+11853 38051 V 421 w(data\);)p Black 0 40410 a Fw(12.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(F)-106 b(ree)426
+b(solv)-35 b(er)425 b(memory)p Black 1660 42674 a Fw(The)377
+b(three)f(user-callable)h(functions)h(that)f(initialize,)k(attac)-31
+b(h,)381 b(and)376 b(deallo)31 b(cate)379 b(the)d Fs(cvbandpre)h
+Fw(precon-)0 44003 y(ditioner)370 b(mo)31 b(dule)371
+b(\(steps)e(6,)h(7)f(and)h(11)g(ab)31 b(o)-31 b(v)g(e\))370
+b(are)f(describ)31 b(ed)369 b(in)g(more)h(detail)h(b)31
+b(elo)-31 b(w.)p 0 46073 9470 45 v 0 47414 45 1341 v
+376 47081 a Fu(CVBandPrecAlloc)p 9426 47414 V 0 47458
+9470 45 v Black 0 48827 a Fw(Call)p Black 4848 w Fu(bp)p
+8046 48827 349 45 v 419 w(data)581 b(=)h(CVBandPrecAlloc\(cvode)p
+24734 48827 V 421 w(mem,)g(N,)f(mu,)h(ml\);)p Black 0
+50632 a Fw(Description)p Black 1286 w(The)378 b(function)i
+Fu(CVBandPrecAlloc)g Fw(initializes)h(and)d(allo)31 b(cates)380
+b(memory)g(for)e(the)g Fs(cvbandpre)6814 51960 y Fw(preconditioner.)p
+Black 0 53765 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 53765 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 55331 a Fu(N)p Black 5040 w
+Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(problem)g(dimension.)p
+Black 6814 56898 a Fu(mu)p Black 4459 w Fw(\()p Fu(long)582
+b(int)p Fw(\))370 b(upp)31 b(er)368 b(half-bandwidth)k(of)e(the)g
+(Jacobian)g(appro)-31 b(ximation.)p Black 6814 58465
+a Fu(ml)p Black 4459 w Fw(\()p Fu(long)582 b(int)p Fw(\))370
+b(lo)-31 b(w)g(er)371 b(half-bandwidth)h(of)d(the)h(Jacobian)h(appro)
+-31 b(ximation.)p Black 0 60270 a(Return)369 b(v)-61
+b(alue)p Black 554 w(If)453 b(successful,)474 b Fu(CVBandPrecAlloc)455
+b Fw(returns)d(a)i(p)31 b(oin)-31 b(ter)454 b(to)g(the)f(newly)i
+(created)e Fs(cvbandpre)6814 61598 y Fw(memory)306 b(blo)31
+b(c)-31 b(k)306 b(\(of)h(t)-31 b(yp)31 b(e)305 b Fu(void)582
+b(*)p Fw(\).)472 b(If)305 b(an)h(error)e(o)31 b(ccurred,)317
+b Fu(CVBandPrecAlloc)308 b Fw(returns)c Fu(NULL)p Fw(.)p
+Black 0 63403 a(Notes)p Black 4072 w(The)378 b(banded)g(appro)-31
+b(ximate)380 b(Jacobian)f(will)h(ha)-31 b(v)g(e)378 b(nonzero)g(elemen)
+-31 b(ts)379 b(only)g(in)f(lo)31 b(cations)379 b(\()p
+Fl(i;)184 b(j)63 b Fw(\))6814 64731 y(with)370 b Fn(\241)p
+Fu(ml)g Fn(\267)307 b Fl(j)i Fn(\241)246 b Fl(i)308 b
+Fn(\267)369 b Fu(mu)p Fw(.)p 0 67107 5984 45 v 0 68693
+45 1587 v 376 68115 a Fu(CVBPSpgmr)p 5939 68693 V 0 68737
+5984 45 v Black 0 70034 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVBPSpgmr\(cvode)p 19667 70034 349 45 v 421 w(mem,)g(pretype,)i
+(maxl,)f(bp)p 32873 70034 V 418 w(data\);)p Black 0 71839
+a Fw(Description)p Black 1286 w(The)314 b(function)i
+Fu(CVBPSpgmr)f Fw(links)f(the)h Fs(cvbandpre)f Fw(data)h(to)g(the)f
+Fs(cvspgmr)f Fw(linear)i(solv)-31 b(er)315 b(and)6814
+73167 y(attac)-31 b(hes)371 b(the)e(latter)i(to)f(the)f
+Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 0 74972 a(Argumen)g(ts)p Black Black 1517 w Fu(cvode)p
+9789 74972 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 76539 a Fu(pretype)p Black 1554 w Fw(\()p
+Fu(int)p Fw(\))377 b(sp)31 b(eci\257es)376 b(the)g(preconditioning)i(t)
+-31 b(yp)31 b(e)377 b(and)f(m)-31 b(ust)377 b(b)31 b(e)375
+b(either)i Fu(PREC)p 43964 76539 V 419 w(LEFT)f Fw(or)12435
+77867 y Fu(PREC)p 14829 77867 V 419 w(RIGHT)p Fw(.)p
+Black Black eop
+%%Page: 75 85
+75 84 bop Black 4000 2701 a Fx(5.9)425 b(Preconditioner)i(mo)35
+b(dules)31418 b(75)p 4000 3144 48001 45 v Black Black
+10814 6974 a Fu(maxl)p Black 3297 w Fw(\()p Fu(int)p
+Fw(\))406 b(maxim)-31 b(um)407 b(dimension)f(of)f(the)g(Krylo)-31
+b(v)406 b(subspace)e(to)h(b)31 b(e)404 b(used.)598 b(P)-31
+b(ass)405 b(0)g(to)16435 8302 y(use)369 b(the)g(default)i(v)-61
+b(alue)369 b Fu(CVSPGMR)p 30971 8302 349 45 v 420 w(MAXL)582
+b(=)f(5)p Fw(.)p Black 10814 9921 a Fu(bp)p 12046 9921
+V 419 w(data)p Black 1716 w Fw(\()p Fu(void)h(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cvbandpre)h
+Fw(data)h(structure.)p Black 4000 11832 a(Return)e(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 10814 13742 a Fu(CVSPGMR)p
+14951 13742 V 419 w(SUCCESS)p Black 1555 w Fw(The)g Fs(cvspgmr)f
+Fw(initialization)374 b(w)-31 b(as)370 b(successful.)p
+Black 10814 15361 a Fu(CVSPGMR)p 14951 15361 V 419 w(MEM)p
+17113 15361 V 419 w(NULL)p Black 1136 w Fw(The)f Fu(cvode)p
+26172 15361 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369
+b(is)h Fu(NULL)p Fw(.)p Black 10814 16981 a Fu(CVSPGMR)p
+14951 16981 V 419 w(ILL)p 17113 16981 V 419 w(INPUT)p
+Black 555 w Fw(The)f(preconditioner)h(t)-31 b(yp)31 b(e)370
+b Fu(pretype)g Fw(is)f(not)h(v)-61 b(alid.)p Black 10814
+18600 a Fu(CVSPGMR)p 14951 18600 V 419 w(MEM)p 17113
+18600 V 419 w(FAIL)p Black 1136 w Fw(A)369 b(memory)h(allo)31
+b(cation)372 b(request)d(failed.)p Black 10814 20219
+a Fu(CV)p 12046 20219 V 419 w(PDATA)p 15370 20219 V 419
+w(NULL)p Black 2879 w Fw(The)g Fs(cvbandpre)h Fw(preconditioner)g(has)f
+(not)h(b)31 b(een)369 b(initialized.)p 4000 22926 8889
+45 v 4000 24267 45 1341 v 4376 23935 a Fu(CVBandPrecFree)p
+12845 24267 V 4000 24311 8889 45 v Black 4000 25733 a
+Fw(Call)p Black 4848 w Fu(CVBandPrecFree\(bp)p 20761
+25733 349 45 v 421 w(data\);)p Black 4000 27643 a Fw(Description)p
+Black 1286 w(The)g(function)i Fu(CVBandPrecFree)g Fw(frees)d(the)i(p)31
+b(oin)-31 b(ter)370 b(allo)31 b(cated)371 b(b)-31 b(y)370
+b Fu(CVBandPrecAlloc)p Fw(.)p Black 4000 29553 a(Argumen)-31
+b(ts)p Black 1517 w(The)337 b(only)h(argumen)-31 b(t)338
+b(passed)e(to)h Fu(CVBandPrecFree)i Fw(is)d(the)h(p)31
+b(oin)-31 b(ter)338 b(to)f(the)g Fs(cvbandpre)h Fw(data)10814
+30882 y(structure)369 b(\(of)h(t)-31 b(yp)31 b(e)369
+b Fu(void)582 b(*)p Fw(\).)p Black 4000 32792 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(function)i Fu(CVBandPrecFree)g
+Fw(has)e(no)h(return)e(v)-61 b(alue.)4000 34590 y(The)369
+b(follo)-31 b(wing)373 b(three)c(optional)j(output)e(functions)h(are)e
+(a)-31 b(v)-61 b(ailable)372 b(for)d(use)f(with)j(the)e
+Fs(cvbandpre)h Fw(mo)31 b(dule:)p 4000 36828 13539 45
+v 4000 38414 45 1587 v 4376 37836 a Fu(CVBandPrecGetWorkSpace)p
+17494 38414 V 4000 38458 13539 45 v Black 4000 39808
+a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f(CVBandPrecGetWorkSpace\(bp)p
+29477 39808 349 45 v 422 w(data,)h(&lenrwBP,)h(&leniwBP\);)p
+Black 4000 41718 a Fw(Description)p Black 1286 w(The)594
+b(function)g Fu(CVBandPrecGetWorkSpace)j Fw(returns)592
+b(the)i Fs(cvbandpre)g Fw(real)f(and)h(in)-31 b(teger)10814
+43046 y(w)g(orkspace)370 b(sizes.)p Black 4000 44956
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(bp)p 12046
+44956 V 419 w(data)p Black 716 w Fw(\()p Fu(void)583
+b(*)p Fw(\))369 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)g
+Fs(cvbandpre)g Fw(data)g(structure.)p Black 10814 46576
+a Fu(lenrwBP)p Black 554 w Fw(\()p Fu(long)583 b(int)p
+Fw(\))370 b(the)f(n)-31 b(um)g(b)31 b(er)369 b(of)h Fu(realtype)g
+Fw(v)-61 b(alues)369 b(in)h(the)f Fs(cvbandpre)h Fw(w)-31
+b(orkspace.)p Black 10814 48195 a Fu(leniwBP)p Black
+554 w Fw(\()p Fu(long)583 b(int)p Fw(\))370 b(the)f(n)-31
+b(um)g(b)31 b(er)369 b(of)h(in)-31 b(teger)370 b(v)-61
+b(alues)369 b(in)h(the)f Fs(cvbandpre)h Fw(w)-31 b(orkspace.)p
+Black 4000 50105 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p
+Black 10814 52015 a Fu(CV)p 12046 52015 V 419 w(SUCCESS)p
+Black 2135 w Fw(The)g(optional)j(output)f(v)-61 b(alues)369
+b(ha)-31 b(v)g(e)370 b(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 53635 a Fu(CV)p 12046 53635 V 419 w(PDATA)p
+15370 53635 V 419 w(NULL)p Black 554 w Fw(The)g Fs(cvbandpre)h
+Fw(preconditioner)h(has)e(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 55545 a(Notes)p Black 4072 w(In)381 b(terms)g(of)h(problem)h
+(size)e Fl(N)502 b Fw(and)382 b Fu(smu)g Fw(=)f(min)q(\()p
+Fl(N)376 b Fn(\241)254 b Fw(1)p Fl(;)184 b Fu(mu+ml)p
+Fw(\),)387 b(the)382 b(actual)h(size)f(of)g(the)f(real)10814
+56873 y(w)-31 b(orkspace)469 b(is)e(\(2)i Fu(ml)f Fw(+)f
+Fu(mu)h Fw(+)f Fu(smu)h Fw(+2\))184 b Fl(N)590 b Fu(realtype)469
+b Fw(w)-31 b(ords,)493 b(and)468 b(the)g(actual)i(size)d(of)i(the)10814
+58202 y(in)-31 b(teger)370 b(w)-31 b(orkspace)370 b(is)f
+Fl(N)490 b Fw(in)-31 b(teger)371 b(w)-31 b(ords.)p 4000
+60909 14701 45 v 4000 62250 45 1341 v 4376 61917 a Fu
+(CVBandPrecGetNumRhsEvals)p 18656 62250 V 4000 62294
+14701 45 v Black 4000 63715 a Fw(Call)p Black 4848 w
+Fu(flag)582 b(=)f(CVBandPrecGetNumRhsEvals\(bp)p 30639
+63715 349 45 v 422 w(data,)h(&nfevalsBP\);)p Black 4000
+65626 a Fw(Description)p Black 1286 w(The)462 b(function)h
+Fu(CVBandPrecGetNumRhsEvals)j Fw(returns)460 b(the)i(n)-31
+b(um)g(b)31 b(er)462 b(of)h(calls)f(made)h(to)g(the)10814
+66954 y(user-supplied)423 b(righ)-31 b(t-hand)424 b(side)g(function)g
+(for)g(\257nite)g(di\256erence)e(banded)i(Jacobian)h(appro)-31
+b(xi-)10814 68282 y(mation)371 b(used)e(within)i(the)e(preconditioner)i
+(setup)e(function.)p Black 4000 70193 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(bp)p 12046 70193 V 419 w(data)p
+Black 1879 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cvbandpre)h Fw(data)g(structure.)p
+Black 10814 71812 a Fu(nfevalsBP)p Black 555 w Fw(\()p
+Fu(long)582 b(int)p Fw(\))370 b(the)f(n)-31 b(um)g(b)31
+b(er)370 b(of)f(calls)h(to)g(the)g(user)e(righ)-31 b(t-hand)370
+b(side)g(function.)p Black 4000 73722 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 10814 75632 a Fu(CV)p
+12046 75632 V 419 w(SUCCESS)p Black 2135 w Fw(The)g(optional)j(output)f
+(v)-61 b(alue)369 b(has)g(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 77252 a Fu(CV)p 12046 77252 V 419 w(PDATA)p
+15370 77252 V 419 w(NULL)p Black 554 w Fw(The)g Fs(cvbandpre)h
+Fw(preconditioner)h(has)e(not)h(b)31 b(een)368 b(initialized.)p
+Black Black eop
+%%Page: 76 86
+76 85 bop Black 0 2701 a Fx(76)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 6974 a Fo(5.9.2)1495 b(A)499 b(parallel)h(band-blo)42
+b(c)-42 b(k-diagonal)501 b(preconditioner)g(mo)42 b(dule)0
+9017 y Fw(A)457 b(principal)h(reason)f(for)g(using)h(a)f(parallel)i
+(ODE)d(solv)-31 b(er)458 b(suc)-31 b(h)456 b(as)h Fs(cv)-25
+b(odes)458 b Fw(lies)f(in)g(the)h(solution)g(of)g(partial)0
+10345 y(di\256eren)-31 b(tial)528 b(equations)h(\(PDEs\).)966
+b(Moreo)-31 b(v)g(er,)567 b(the)527 b(use)f(of)h(a)g(Krylo)-31
+b(v)528 b(iterativ)-31 b(e)529 b(metho)31 b(d)527 b(for)g(the)g
+(solution)0 11674 y(of)500 b(man)-31 b(y)500 b(suc)-31
+b(h)499 b(problems)h(is)f(motiv)-61 b(ated)501 b(b)-31
+b(y)500 b(the)f(nature)h(of)f(the)h(underlying)g(linear)g(system)g(of)f
+(equations)0 13002 y(\(3.5\))552 b(that)e(m)-31 b(ust)551
+b(b)31 b(e)549 b(solv)-31 b(ed)550 b(at)g(eac)-31 b(h)550
+b(time)h(step.)1034 b(The)549 b(linear)i(algebraic)g(system)f(is)f
+(large,)596 b(sparse)549 b(and)0 14331 y(structured.)485
+b(Ho)-31 b(w)g(ev)g(er,)354 b(if)348 b(a)h(Krylo)-31
+b(v)348 b(iterativ)-31 b(e)350 b(metho)31 b(d)349 b(is)f(to)h(b)31
+b(e)347 b(e\256ectiv)-31 b(e)349 b(in)f(this)g(setting,)354
+b(then)348 b(a)g(non)-31 b(trivial)0 15659 y(preconditioner)282
+b(needs)f(to)h(b)31 b(e)280 b(used.)463 b(Otherwise,)300
+b(the)281 b(rate)h(of)f(con)-31 b(v)g(ergence)282 b(of)g(the)f(Krylo)
+-31 b(v)282 b(iterativ)-31 b(e)284 b(metho)31 b(d)282
+b(is)0 16987 y(usually)370 b(unacceptably)h(slo)-31 b(w.)494
+b(Unfortunately)-92 b(,)372 b(an)d(e\256ectiv)-31 b(e)370
+b(preconditioner)h(tends)e(to)h(b)31 b(e)369 b(problem-sp)31
+b(eci\257c.)1660 18316 y(Ho)-31 b(w)g(ev)g(er,)352 b(w)-31
+b(e)345 b(ha)-31 b(v)g(e)346 b(dev)-31 b(elop)31 b(ed)346
+b(one)f(t)-31 b(yp)31 b(e)345 b(of)g(preconditioner)h(that)g(treats)f
+(a)g(rather)g(broad)g(class)f(of)i(PDE-)0 19644 y(based)484
+b(problems.)840 b(It)484 b(has)h(b)31 b(een)484 b(successfully)g(used)g
+(for)h(sev)-31 b(eral)485 b(realistic,)515 b(large-scale)486
+b(problems)f([19)r(])g(and)0 20972 y(is)541 b(included)h(in)f(a)g(soft)
+-31 b(w)g(are)543 b(mo)31 b(dule)542 b(within)h(the)e
+Fs(cv)-25 b(odes)542 b Fw(pac)-31 b(k)-61 b(age.)1009
+b(This)541 b(mo)31 b(dule)542 b(w)-31 b(orks)542 b(with)g
+Fs(nvec-)0 22301 y(tor)p 2098 22301 368 45 v 440 w(p)-74
+b(arallel)542 b Fw(and)f(generates)h(a)f(preconditioner)h(that)g(is)f
+(a)g(blo)31 b(c)-31 b(k-diagonal)545 b(matrix)d(with)g(eac)-31
+b(h)542 b(blo)31 b(c)-31 b(k)0 23629 y(b)31 b(eing)374
+b(a)g(band)g(matrix.)508 b(The)374 b(blo)31 b(c)-31 b(ks)375
+b(need)e(not)i(ha)-31 b(v)g(e)374 b(the)h(same)f(n)-31
+b(um)g(b)31 b(er)373 b(of)i(sup)31 b(er-)372 b(and)i(sub-diagonals,)k
+(and)0 24957 y(these)388 b(n)-31 b(um)g(b)31 b(ers)388
+b(ma)-31 b(y)390 b(v)-61 b(ary)388 b(from)h(blo)31 b(c)-31
+b(k)389 b(to)g(blo)31 b(c)-31 b(k.)551 b(This)389 b(Band-Blo)31
+b(c)-31 b(k-Diagonal)393 b(Preconditioner)d(mo)31 b(dule)389
+b(is)0 26286 y(called)370 b Fs(cvbbdpre)p Fw(.)1660 27614
+y(One)385 b(w)-31 b(a)g(y)386 b(to)f(en)-31 b(vision)386
+b(these)f(preconditioners)g(is)g(to)g(think)h(of)f(the)g(domain)h(of)f
+(the)g(computational)k(PDE)0 28942 y(problem)490 b(as)g(b)31
+b(eing)490 b(sub)31 b(divided)490 b(in)-31 b(to)491 b
+Fl(M)611 b Fw(non-o)-31 b(v)g(erlapping)492 b(sub)31
+b(domains.)855 b(Eac)-31 b(h)491 b(of)f(these)f(sub)31
+b(domains)491 b(is)0 30271 y(then)389 b(assigned)g(to)g(one)g(of)g(the)
+g Fl(M)509 b Fw(pro)31 b(cesses)387 b(to)i(b)31 b(e)388
+b(used)g(to)i(solv)-31 b(e)389 b(the)g(ODE)f(system.)551
+b(The)389 b(basic)g(idea)h(is)e(to)0 31599 y(isolate)417
+b(the)f(preconditioning)i(so)d(that)i(it)f(is)f(lo)31
+b(cal)417 b(to)f(eac)-31 b(h)416 b(pro)31 b(cess,)427
+b(and)415 b(also)i(to)f(use)f(a)g(\(p)31 b(ossibly)417
+b(c)-31 b(heap)31 b(er\))0 32927 y(appro)-31 b(ximate)424
+b(righ)-31 b(t-hand)424 b(side)d(function.)652 b(This)422
+b(requires)f(the)h(de\257nition)h(of)f(a)g(new)g(function)i
+Fl(g)40 b Fw(\()p Fl(t;)184 b(y)40 b Fw(\))422 b(whic)-31
+b(h)0 34256 y(appro)g(ximates)346 b(the)f(function)g
+Fl(f)119 b Fw(\()p Fl(t;)184 b(y)40 b Fw(\))346 b(in)e(the)g
+(de\257nition)i(of)f(the)f(ODE)g(system)g(\(3.1\).)487
+b(Ho)-31 b(w)g(ev)g(er,)351 b(the)344 b(user)g(ma)-31
+b(y)0 35584 y(set)444 b Fl(g)473 b Fw(=)433 b Fl(f)119
+b Fw(.)719 b(Corresp)31 b(onding)445 b(to)h(the)f(domain)h(decomp)31
+b(osition,)466 b(there)445 b(is)f(a)h(decomp)31 b(osition)447
+b(of)e(the)g(solution)0 36913 y(v)-31 b(ector)333 b Fl(y)372
+b Fw(in)-31 b(to)334 b Fl(M)454 b Fw(disjoin)-31 b(t)334
+b(blo)31 b(c)-31 b(ks)333 b Fl(y)15707 37079 y Fj(m)16548
+36913 y Fw(,)340 b(and)333 b(a)g(decomp)31 b(osition)335
+b(of)e Fl(g)372 b Fw(in)-31 b(to)335 b(blo)31 b(c)-31
+b(ks)333 b Fl(g)35636 37079 y Fj(m)36477 36913 y Fw(.)480
+b(The)333 b(blo)31 b(c)-31 b(k)333 b Fl(g)42915 37079
+y Fj(m)44089 36913 y Fw(dep)31 b(ends)0 38241 y(b)g(oth)461
+b(on)h Fl(y)4878 38407 y Fj(m)6179 38241 y Fw(and)f(on)g(comp)31
+b(onen)-31 b(ts)463 b(of)e(blo)31 b(c)-31 b(ks)462 b
+Fl(y)21584 38407 y Fj(m)22370 38186 y Ff(0)23184 38241
+y Fw(asso)31 b(ciated)463 b(with)f(neigh)-31 b(b)31 b(oring)462
+b(sub)31 b(domains)462 b(\(so-called)0 39569 y(ghost-cell)367
+b(data\).)493 b(Let)441 b(\271)-629 b Fl(y)10825 39735
+y Fj(m)12030 39569 y Fw(denote)365 b Fl(y)16135 39735
+y Fj(m)17341 39569 y Fw(augmen)-31 b(ted)366 b(with)g(those)g(other)f
+(comp)31 b(onen)-31 b(ts)366 b(on)f(whic)-31 b(h)366
+b Fl(g)42576 39735 y Fj(m)43781 39569 y Fw(dep)31 b(ends.)0
+40898 y(Then)369 b(w)-31 b(e)370 b(ha)-31 b(v)g(e)13468
+42226 y Fl(g)40 b Fw(\()p Fl(t;)184 b(y)40 b Fw(\))308
+b(=)f([)p Fl(g)18681 42392 y Fk(1)19178 42226 y Fw(\()p
+Fl(t;)262 b Fw(\271)-631 b Fl(y)21042 42392 y Fk(1)21540
+42226 y Fw(\))p Fl(;)184 b(g)22989 42392 y Fk(2)23487
+42226 y Fw(\()p Fl(t;)261 b Fw(\271)-630 b Fl(y)25351
+42392 y Fk(2)25849 42226 y Fw(\))p Fl(;)184 b(:)g(:)g(:)k(;)c(g)29266
+42392 y Fj(M)30250 42226 y Fw(\()p Fl(t;)261 b Fw(\271)-630
+b Fl(y)32114 42392 y Fj(M)33097 42226 y Fw(\)])33834
+41769 y Fj(T)45725 42226 y Fw(\(5.1\))0 44200 y(and)369
+b(eac)-31 b(h)370 b(of)g(the)f(blo)31 b(c)-31 b(ks)370
+b Fl(g)11696 44366 y Fj(m)12537 44200 y Fw(\()p Fl(t;)261
+b Fw(\271)-630 b Fl(y)14401 44366 y Fj(m)15243 44200
+y Fw(\))369 b(is)g(uncoupled)h(from)g(the)f(others.)1660
+45528 y(The)h(preconditioner)g(asso)31 b(ciated)371 b(with)f(this)g
+(decomp)31 b(osition)371 b(has)e(the)h(form)17937 47932
+y Fl(P)461 b Fw(=)308 b Fl(diag)40 b Fw([)p Fl(P)23406
+48098 y Fk(1)23903 47932 y Fl(;)184 b(P)25105 48098 y
+Fk(2)25602 47932 y Fl(;)g(:)g(:)g(:)k(;)c(P)28772 48098
+y Fj(M)29755 47932 y Fw(])15663 b(\(5.2\))0 50336 y(where)20478
+51665 y Fl(P)21189 51831 y Fj(m)22337 51665 y Fn(\274)308
+b Fl(I)332 b Fn(\241)246 b Fl(\260)61 b(J)26680 51831
+y Fj(m)45725 51665 y Fw(\(5.3\))0 53639 y(and)309 b Fl(J)2706
+53805 y Fj(m)3855 53639 y Fw(is)f(a)h(di\256erence)e(quotien)-31
+b(t)311 b(appro)-31 b(ximation)312 b(to)d Fl(@)61 b(g)24758
+53805 y Fj(m)25599 53639 y Fl(=@)g(y)27344 53805 y Fj(m)28185
+53639 y Fw(.)473 b(This)308 b(matrix)i(is)f(tak)-31 b(en)309
+b(to)g(b)31 b(e)308 b(banded,)322 b(with)0 54967 y(upp)31
+b(er)339 b(and)i(lo)-31 b(w)g(er)341 b(half-bandwidths)i
+Fu(mudq)e Fw(and)f Fu(mldq)h Fw(de\257ned)f(as)g(the)g(n)-31
+b(um)g(b)31 b(er)341 b(of)g(non-zero)f(diagonals)j(ab)31
+b(o)-31 b(v)g(e)0 56295 y(and)298 b(b)31 b(elo)-31 b(w)299
+b(the)f(main)h(diagonal,)315 b(resp)31 b(ectiv)-31 b(ely)-92
+b(.)469 b(The)298 b(di\256erence)g(quotien)-31 b(t)300
+b(appro)-31 b(ximation)301 b(is)d(computed)g(using)0
+57624 y Fu(mudq)327 b Fw(+)g Fu(mldq)g Fw(+2)g(ev)-61
+b(aluations)329 b(of)e Fl(g)15691 57790 y Fj(m)16532
+57624 y Fw(,)336 b(but)327 b(only)h(a)f(matrix)h(of)f(bandwidth)i
+Fu(mu)e Fw(+)f Fu(ml)h Fw(+1)g(is)g(retained.)479 b(Neither)0
+58952 y(pair)300 b(of)h(parameters)f(need)g(b)31 b(e)300
+b(the)g(true)g(half-bandwidths)i(of)f(the)f(Jacobian)i(of)e(the)g(lo)31
+b(cal)302 b(blo)31 b(c)-31 b(k)301 b(of)f Fl(g)40 b Fw(,)314
+b(if)301 b(smaller)0 60280 y(v)-61 b(alues)369 b(pro)-31
+b(vide)370 b(a)g(more)f(e\261cien)-31 b(t)371 b(preconditioner.)494
+b(The)369 b(solution)i(of)f(the)f(complete)i(linear)f(system)22276
+62684 y Fl(P)154 b(x)307 b Fw(=)g Fl(b)20001 b Fw(\(5.4\))0
+65089 y(reduces)368 b(to)i(solving)h(eac)-31 b(h)369
+b(of)h(the)g(equations)21092 67493 y Fl(P)21803 67659
+y Fj(m)22643 67493 y Fl(x)23276 67659 y Fj(m)24424 67493
+y Fw(=)308 b Fl(b)26068 67659 y Fj(m)45725 67493 y Fw(\(5.5\))0
+69897 y(and)369 b(this)h(is)f(done)h(b)-31 b(y)369 b(banded)g(LU)g
+(factorization)k(of)d Fl(P)23773 70063 y Fj(m)24982 69897
+y Fw(follo)-31 b(w)g(ed)372 b(b)-31 b(y)370 b(a)f(banded)h(bac)-31
+b(ksolv)g(e.)1660 71225 y(The)465 b Fs(cvbbdpre)g Fw(mo)31
+b(dule)465 b(calls)g(t)-31 b(w)g(o)466 b(user-pro)-31
+b(vided)464 b(functions)i(to)f(construct)f Fl(P)154 b
+Fw(:)682 b(a)465 b(required)e(function)0 72553 y Fu(gloc)485
+b Fw(\(of)h(t)-31 b(yp)31 b(e)485 b Fu(CVLocalFn)p Fw(\))i(whic)-31
+b(h)485 b(appro)-31 b(ximates)487 b(the)f(righ)-31 b(t-hand)486
+b(side)e(function)j Fl(g)40 b Fw(\()p Fl(t;)184 b(y)40
+b Fw(\))501 b Fn(\274)f Fl(f)119 b Fw(\()p Fl(t;)184
+b(y)40 b Fw(\))486 b(and)0 73882 y(whic)-31 b(h)501 b(is)e(computed)i
+(lo)31 b(cally)-92 b(,)535 b(and)500 b(an)g(optional)j(function)e
+Fu(cfn)f Fw(\(of)h(t)-31 b(yp)31 b(e)500 b Fu(CVCommFn)p
+Fw(\))i(whic)-31 b(h)500 b(p)31 b(erforms)500 b(all)0
+75210 y(in)-31 b(terpro)31 b(cess)388 b(comm)-31 b(unication)392
+b(necessary)c(to)h(ev)-61 b(aluate)390 b(the)f(appro)-31
+b(ximate)391 b(righ)-31 b(t-hand)390 b(side)e Fl(g)40
+b Fw(.)550 b(These)388 b(are)h(in)0 76539 y(addition)479
+b(to)f(the)g(user-supplied)f(righ)-31 b(t-hand)478 b(side)f(function)i
+Fu(f)p Fw(.)817 b(Both)478 b(functions)g(tak)-31 b(e)479
+b(as)e(input)h(the)f(same)0 77867 y(p)31 b(oin)-31 b(ter)509
+b Fu(f)p 4606 77867 349 45 v 418 w(data)f Fw(that)h(is)f(passed)f(b)-31
+b(y)508 b(the)g(user)f(to)i Fu(CVodeSetFdata)g Fw(and)f(that)h(w)-31
+b(as)509 b(passed)e(to)i(the)f(user's)p Black Black eop
+%%Page: 77 87
+77 86 bop Black 4000 2701 a Fx(5.9)425 b(Preconditioner)i(mo)35
+b(dules)31418 b(77)p 4000 3144 48001 45 v Black 4000
+6974 a Fw(function)483 b Fu(f)p Fw(,)511 b(and)482 b(neither)g
+(function)h(has)f(a)g(return)g(v)-61 b(alue.)831 b(The)482
+b(user)f(is)h(resp)31 b(onsible)481 b(for)h(pro)-31 b(viding)484
+b(space)4000 8302 y(\(presumably)356 b(within)g Fu(f)p
+14440 8302 349 45 v 419 w(data)p Fw(\))g(for)f(comp)31
+b(onen)-31 b(ts)356 b(of)f Fu(y)g Fw(that)h(are)e(comm)-31
+b(unicated)358 b(b)31 b(et)-31 b(w)g(een)356 b(pro)31
+b(cesses)353 b(b)-31 b(y)355 b Fu(cfn)p Fw(,)4000 9631
+y(and)369 b(that)i(are)e(then)g(used)g(b)-31 b(y)369
+b Fu(gloc)p Fw(,)h(whic)-31 b(h)370 b(is)g(not)g(exp)31
+b(ected)369 b(to)h(do)f(an)-31 b(y)370 b(comm)-31 b(unication.)p
+4000 11560 5984 45 v 4000 12901 45 1341 v 4376 12569
+a Fu(CVLocalFn)p 9939 12901 V 4000 12945 5984 45 v Black
+4000 14309 a Fw(De\257nition)p Black 2034 w Fu(typedef)582
+b(void)g(\(*CVLocalFn\)\()r(long)g(int)f(Nlocal,)h(realtype)h(t,)e(N)p
+43428 14309 349 45 v 419 w(Vector)h(y,)25924 15637 y(N)p
+26575 15637 V 418 w(Vector)g(glocal,)h(void)e(*f)p 39778
+15637 V 419 w(data\);)p Black 4000 17442 a Fw(Purp)31
+b(ose)p Black 2884 w(This)370 b(function)g(computes)g
+Fl(g)40 b Fw(\()p Fl(t;)184 b(y)40 b Fw(\).)493 b(It)370
+b(loads)g(the)f(v)-31 b(ector)370 b Fu(glocal)g Fw(as)f(a)h(function)g
+(of)g Fu(t)f Fw(and)g Fu(y)p Fw(.)p Black 4000 19236
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(Nlocal)p Black
+554 w Fw(is)369 b(the)h(lo)31 b(cal)371 b(v)-31 b(ector)370
+b(length.)p Black 10814 20797 a Fu(t)p Black 3459 w Fw(is)f(the)h(v)-61
+b(alue)370 b(of)f(the)h(indep)31 b(enden)-31 b(t)369
+b(v)-61 b(ariable.)p Black 10814 22358 a Fu(y)p Black
+3459 w Fw(is)369 b(the)h(dep)31 b(enden)-31 b(t)369 b(v)-61
+b(ariable.)p Black 10814 23920 a Fu(glocal)p Black 554
+w Fw(is)369 b(the)h(output)g(v)-31 b(ector.)p Black 10814
+25481 a Fu(f)p 11465 25481 V 419 w(data)p Black 716 w
+Fw(is)577 b(a)f(p)31 b(oin)-31 b(ter)577 b(to)g(user)f(data)h(-)g(the)f
+(same)h(as)f(the)h Fu(f)p 38540 25481 V 418 w(data)g
+Fw(parameter)g(passed)f(to)14854 26809 y Fu(CVodeSetFdata)p
+Fw(.)p Black 4000 28603 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(A)369 b Fu(CVLocalFn)h Fw(function)h(t)-31
+b(yp)31 b(e)370 b(do)31 b(es)369 b(not)h(ha)-31 b(v)g(e)370
+b(a)f(return)g(v)-61 b(alue.)p Black 4000 30397 a(Notes)p
+Black 4072 w(This)300 b(function)h(assumes)e(that)h(all)h(in)-31
+b(terpro)31 b(cess)299 b(comm)-31 b(unication)303 b(of)d(data)g(needed)
+g(to)g(calculate)10814 31726 y Fu(glocal)370 b Fw(has)f(already)h(b)31
+b(een)369 b(done,)h(and)f(that)i(this)e(data)i(is)e(accessible)g
+(within)i Fu(f)p 45550 31726 V 419 w(data)p Fw(.)10814
+33520 y(The)e(case)g(where)g Fl(g)409 b Fw(is)369 b(mathematically)374
+b(iden)-31 b(tical)372 b(to)e Fl(f)488 b Fw(is)369 b(allo)-31
+b(w)g(ed.)p 4000 35861 5402 45 v 4000 37202 45 1341 v
+4376 36869 a Fu(CVCommFn)p 9358 37202 V 4000 37246 5402
+45 v Black 4000 38609 a Fw(De\257nition)p Black 2034
+w Fu(typedef)582 b(void)g(\(*CVCommFn\)\()r(long)f(int)h(Nlocal,)g
+(realtype)h(t,)25343 39938 y(N)p 25994 39938 349 45 v
+418 w(Vector)f(y,)g(void)g(*f)p 36292 39938 V 418 w(data\);)p
+Black 4000 41681 a Fw(Purp)31 b(ose)p Black 2884 w(This)368
+b(function)i(p)31 b(erforms)367 b(all)j(in)-31 b(terpro)31
+b(cess)367 b(comm)-31 b(unication)372 b(necessary)367
+b(for)i(the)f(execution)h(of)10814 43010 y(the)g Fu(gloc)h
+Fw(function)h(ab)31 b(o)-31 b(v)g(e,)370 b(using)g(the)f(input)h(v)-31
+b(ector)370 b Fu(y)p Fw(.)p Black 4000 44804 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(Nlocal)p Black 554 w Fw(is)369
+b(the)h(lo)31 b(cal)371 b(v)-31 b(ector)370 b(length.)p
+Black 10814 46365 a Fu(t)p Black 3459 w Fw(is)f(the)h(v)-61
+b(alue)370 b(of)f(the)h(indep)31 b(enden)-31 b(t)369
+b(v)-61 b(ariable.)p Black 10814 47926 a Fu(y)p Black
+3459 w Fw(is)369 b(the)h(dep)31 b(enden)-31 b(t)369 b(v)-61
+b(ariable.)p Black 10814 49487 a Fu(f)p 11465 49487 V
+419 w(data)p Black 716 w Fw(is)577 b(a)f(p)31 b(oin)-31
+b(ter)577 b(to)g(user)f(data)h(-)g(the)f(same)h(as)f(the)h
+Fu(f)p 38540 49487 V 418 w(data)g Fw(parameter)g(passed)f(to)14854
+50816 y Fu(CVodeSetFdata)p Fw(.)p Black 4000 52610 a(Return)369
+b(v)-61 b(alue)p Black 554 w(A)369 b Fu(CVCommFn)h Fw(function)h(t)-31
+b(yp)31 b(e)370 b(do)31 b(es)368 b(not)i(ha)-31 b(v)g(e)371
+b(a)e(return)g(v)-61 b(alue.)p Black 4000 54404 a(Notes)p
+Black 4072 w(The)377 b Fu(cfn)g Fw(function)h(is)e(exp)31
+b(ected)377 b(to)g(sa)-31 b(v)g(e)377 b(comm)-31 b(unicated)380
+b(data)e(in)f(space)f(de\257ned)g(within)j(the)10814
+55732 y(data)370 b(structure)f Fu(f)p 18734 55732 V 419
+w(data)p Fw(.)10814 57526 y(Eac)-31 b(h)410 b(call)g(to)g(the)f
+Fu(cfn)g Fw(function)i(is)e(preceded)f(b)-31 b(y)409
+b(a)h(call)g(to)g(the)f(righ)-31 b(t-hand)411 b(side)d(function)j
+Fu(f)10814 58855 y Fw(with)h(the)f(same)g(\()p Fu(t)p
+Fw(,)422 b Fu(y)p Fw(\))412 b(argumen)-31 b(ts.)618 b(Th)-31
+b(us,)422 b Fu(cfn)411 b Fw(can)g(omit)i(an)-31 b(y)411
+b(comm)-31 b(unication)415 b(done)c(b)-31 b(y)411 b Fu(f)10814
+60183 y Fw(if)405 b(relev)-61 b(an)-31 b(t)405 b(to)g(the)g(ev)-61
+b(aluation)407 b(of)e Fu(glocal)p Fw(.)599 b(If)404 b(all)i(necessary)d
+(com)-31 b(unication)408 b(w)-31 b(as)405 b(done)g(in)f
+Fu(f)p Fw(,)10814 61511 y(then)369 b Fu(cfn)582 b(=)f(NULL)370
+b Fw(can)f(b)31 b(e)369 b(passed)g(in)g(the)h(call)g(to)g
+Fu(CVBBDPrecAlloc)h Fw(\(see)e(b)31 b(elo)-31 b(w\).)5660
+63251 y(Besides)418 b(the)h(header)f(\257les)g(required)g(for)g(the)h
+(in)-31 b(tegration)421 b(of)e(the)f(ODE)g(problem)h(\(see)f
+Fn(x)p Fw(5.3\),)433 b(to)419 b(use)f(the)4000 64579
+y Fs(cvbbdpre)386 b Fw(mo)31 b(dule,)390 b(the)385 b(main)h(program)g
+(m)-31 b(ust)386 b(include)f(the)h(header)e(\257le)i
+Fu(cvbbdpre.h)g Fw(whic)-31 b(h)386 b(declares)f(the)4000
+65908 y(needed)369 b(function)h(protot)-31 b(yp)31 b(es.)5660
+67248 y(The)374 b(follo)-31 b(wing)377 b(is)d(a)g(summary)g(of)g(the)f
+(prop)31 b(er)373 b(usage)h(of)g(this)g(mo)31 b(dule.)506
+b(Steps)374 b(that)h(are)e(unc)-31 b(hanged)374 b(from)4000
+68576 y(the)369 b(sk)-31 b(eleton)371 b(program)f(presen)-31
+b(ted)369 b(in)g Fn(x)p Fw(5.4)i(are)e(gra)-31 b(y)g(ed)370
+b(out.)p Black 4553 70824 a(1.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx(Initialize)423 b(MPI)p Black Black 4553 73172
+a Fw(2.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Set)j(problem)f
+(dimensions)p Black Black 4553 75519 a Fw(3.)p Black
+0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Set)h(v)-35 b(ector)424
+b(of)h(initial)e(v)-71 b(alues)p Black Black 4553 77867
+a Fw(4.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Create)426
+b Fs(cv)-25 b(odes)425 b Fx(ob)71 b(ject)p Black Black
+Black eop
+%%Page: 78 88
+78 87 bop Black 0 2701 a Fx(78)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black Black 553 6974 a Fw(5.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx(Set)h(optional)e(inputs)p Black Black 553 9299
+a Fw(6.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Allo)35
+b(cate)425 b(in)-35 b(ternal)425 b(memory)p Black Black
+553 11625 a Fw(7.)p Black 493 w Fx(Initialize)e(the)i
+Fs(cvbbdpre)h Fx(preconditioner)g(mo)35 b(dule)1906 13507
+y Fw(Sp)c(ecify)369 b(the)g(upp)31 b(er)367 b(and)i(lo)-31
+b(w)g(er)369 b(half-bandwidths)i Fu(mudq)e Fw(and)g Fu(mldq)p
+Fw(,)g(and)g Fu(mukeep)g Fw(and)f Fu(mlkeep)p Fw(,)i(and)f(call)1906
+15388 y Fu(bbd)p 3719 15388 349 45 v 419 w(data)582 b(=)f
+(CVBBDPrecAlloc\()s(cvode)p 19829 15388 V 419 w(mem,)h(local)p
+26059 15388 V 419 w(N,)f(mudq,)h(mldq,)16854 16717 y(mukeep,)g(mlkeep,)
+g(dqrely,)g(gloc,)g(cfn\);)1906 18610 y Fw(to)363 b(allo)31
+b(cate)364 b(memory)f(for)f(and)g(to)g(initialize)j(a)d(data)h
+(structure)e(\(p)31 b(oin)-31 b(ted)364 b(to)e(b)-31
+b(y)362 b Fu(bbd)p 38541 18610 V 419 w(data)p Fw(\))h(to)f(b)31
+b(e)361 b(passed)1906 19938 y(to)398 b(the)f Fs(cvspgmr)g
+Fw(linear)g(solv)-31 b(er.)577 b(The)397 b(last)h(t)-31
+b(w)g(o)399 b(argumen)-31 b(ts)398 b(passed)e(to)i Fu(CVBBDPrecAlloc)h
+Fw(are)e(the)g(t)-31 b(w)g(o)1906 21266 y(mandatory)372
+b(user-supplied)c(functions)i(describ)31 b(ed)369 b(ab)31
+b(o)-31 b(v)g(e.)p Black 553 23592 a(8.)p Black 493 w
+Fx(A)c(ttac)g(h)424 b(the)h Fs(cvspgmr)f Fx(linear)g(solv)-35
+b(er)1906 25474 y Fu(flag)582 b(=)f(CVBBDSpgmr\(cvode)p
+15340 25474 V 421 w(mem,)h(pretype,)g(maxl,)g(bbd)p 29127
+25474 V 419 w(data\);)1906 27356 y Fw(The)537 b(function)h
+Fu(CVBPSpgmr)g Fw(is)f(a)g(wrapp)31 b(er)536 b(for)h(the)g
+Fs(cvspgmr)f Fw(sp)31 b(eci\257cation)538 b(function)g
+Fu(CVSpgmr)g Fw(and)1906 28684 y(p)31 b(erforms)369 b(the)h(follo)-31
+b(wing)372 b(actions:)p Black 3788 31009 a Fn(\262)p
+Black 1 w Fw(A)-31 b(ttac)g(hes)370 b(the)g Fs(cvspgmr)e
+Fw(linear)i(solv)-31 b(er)370 b(to)g(the)f(main)i Fs(cv)-25
+b(odes)369 b Fw(solv)-31 b(er)370 b(memory;)p Black 3788
+32781 a Fn(\262)p Black 1 w Fw(Sets)f(the)g(preconditioner)i(data)f
+(structure)f(for)g Fs(cvbbdpre)p Fw(;)p Black 3788 34553
+a Fn(\262)p Black 1 w Fw(Sets)g(the)g(preconditioner)i(setup)e
+(function)h(for)g Fs(cvbbdpre)p Fw(;)p Black 3788 36325
+a Fn(\262)p Black 1 w Fw(Sets)f(the)g(preconditioner)i(solv)-31
+b(e)370 b(function)g(for)g Fs(cvbbdpre)p Fw(;)1906 38651
+y(The)274 b(argumen)-31 b(ts)275 b Fu(pretype)g Fw(and)f
+Fu(maxl)g Fw(are)g(describ)31 b(ed)273 b(b)31 b(elo)-31
+b(w.)462 b(The)274 b(last)g(argumen)-31 b(t)276 b(passed)d(to)i
+Fu(CVBBDSpgmr)1906 39979 y Fw(is)370 b(a)f(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cvbbdpre)h Fw(memory)h(blo)31
+b(c)-31 b(k)370 b(returned)e(b)-31 b(y)370 b Fu(CVBBDPrecAlloc)p
+Fw(.)p Black 553 42305 a(9.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx(Set)426 b(linear)e(solv)-35 b(er)425 b(optional)f(inputs)p
+Black 1906 44186 a Fw(Note)279 b(that)g(the)g(user)d(should)j(not)f(o)
+-31 b(v)g(erwrite)280 b(the)e(preconditioner)h(data,)298
+b(setup)278 b(function,)298 b(or)278 b(solv)-31 b(e)278
+b(function)1906 45515 y(through)370 b(calls)g(to)g Fs(cvspgmr)f
+Fw(optional)j(input)d(functions.)p Black 0 47840 a(10.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Adv)-71 b(ance)426
+b(solution)f(in)f(time)p Black Black 0 50166 a Fw(11.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Deallo)35 b(cate)425
+b(memory)h(for)f(solution)g(v)-35 b(ector)p Black Black
+0 52491 a Fw(12.)p Black 493 w Fx(F)-106 b(ree)426 b(the)f
+Fs(cvbbdpre)g Fx(data)g(structure)1906 54373 y Fu(CVBBDPrecFree\(bbd)p
+11853 54373 V 421 w(data\);)p Black 0 56699 a Fw(13.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(F)-106 b(ree)426
+b(solv)-35 b(er)425 b(memory)p Black Black 0 59024 a
+Fw(14.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Finalize)f(MPI)p
+Black 0 61239 a Fw(The)282 b(three)f(user-callable)i(functions)g(that)f
+(initialize,)303 b(attac)-31 b(h,)302 b(and)281 b(deallo)31
+b(cate)284 b(the)e Fs(cvbbdpre)h Fw(preconditioner)0
+62568 y(mo)31 b(dule)370 b(\(steps)f(7,)h(8,)g(and)g(12)g(ab)31
+b(o)-31 b(v)g(e\))370 b(are)f(describ)31 b(ed)369 b(next.)p
+0 64551 8889 45 v 0 65891 45 1341 v 376 65559 a Fu(CVBBDPrecAlloc)p
+8845 65891 V 0 65935 8889 45 v Black 0 67288 a Fw(Call)p
+Black 4848 w Fu(bbd)p 8627 67288 349 45 v 419 w(data)582
+b(=)f(CVBBDPrecAlloc\()r(cvode)p 24736 67288 V 419 w(mem,)h(local)p
+30966 67288 V 419 w(N,)g(mudq,)g(mldq,)21761 68616 y(mukeep,)g(mlkeep,)
+h(dqrely,)f(gloc,)g(cfn\);)p Black 0 70338 a Fw(Description)p
+Black 1286 w(The)522 b(function)i Fu(CVBBDPrecAlloc)g
+Fw(initializes)h(and)e(allo)31 b(cates)524 b(memory)f(for)f(the)h
+Fs(cvbbdpre)6814 71666 y Fw(preconditioner.)p Black 0
+73438 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+9789 73438 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 74988 a Fu(local)p 9789 74988 V 419 w(N)p
+Black 1716 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(lo)31
+b(cal)371 b(v)-31 b(ector)370 b(length.)p Black 6814
+76539 a Fu(mudq)p Black 3297 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))510 b(upp)31 b(er)509 b(half-bandwidth)j(to)e(b)31
+b(e)509 b(used)g(in)g(the)h(di\256erence)f(quotien)-31
+b(t)12435 77867 y(Jacobian)371 b(appro)-31 b(ximation.)p
+Black Black eop
+%%Page: 79 89
+79 88 bop Black 4000 2701 a Fx(5.9)425 b(Preconditioner)i(mo)35
+b(dules)31418 b(79)p 4000 3144 48001 45 v Black Black
+10814 6974 a Fu(mldq)p Black 3297 w Fw(\()p Fu(long)582
+b(int)p Fw(\))541 b(lo)-31 b(w)g(er)542 b(half-bandwidth)g(to)f(b)31
+b(e)540 b(used)f(in)i(the)f(di\256erence)g(quotien)-31
+b(t)16435 8302 y(Jacobian)371 b(appro)-31 b(ximation.)p
+Black 10814 9837 a Fu(mukeep)p Black 2135 w Fw(\()p Fu(long)582
+b(int)p Fw(\))315 b(upp)31 b(er)313 b(half-bandwidth)k(of)d(the)g
+(retained)h(banded)f(appro)-31 b(ximate)317 b(Ja-)16435
+11165 y(cobian)370 b(blo)31 b(c)-31 b(k.)p Black 10814
+12699 a Fu(mlkeep)p Black 2135 w Fw(\()p Fu(long)582
+b(int)p Fw(\))350 b(lo)-31 b(w)g(er)349 b(half-bandwidth)j(of)d(the)g
+(retained)g(banded)f(appro)-31 b(ximate)352 b(Ja-)16435
+14028 y(cobian)370 b(blo)31 b(c)-31 b(k.)p Black 10814
+15562 a Fu(dqrely)p Black 2135 w Fw(\()p Fu(realtype)p
+Fw(\))262 b(the)e(relativ)-31 b(e)261 b(incremen)-31
+b(t)261 b(in)f(comp)31 b(onen)-31 b(ts)261 b(of)f Fu(y)f
+Fw(used)g(in)h(the)g(di\256erence)16435 16890 y(quotien)-31
+b(t)414 b(appro)-31 b(ximations.)622 b(The)412 b(default)h(is)e
+Fu(dqrely)p Fw(=)41182 15947 y Fn(p)p 42104 15947 6369
+45 v 943 x Fw(unit)370 b(roundo\256)q(,)422 b(whic)-31
+b(h)16435 18219 y(can)369 b(b)31 b(e)369 b(sp)31 b(eci\257ed)369
+b(b)-31 b(y)369 b(passing)h Fu(dqrely)582 b(=)f(0.0)p
+Fw(.)p Black 10814 19753 a Fu(gloc)p Black 3297 w Fw(\()p
+Fu(CVLocalFn)p Fw(\))389 b(the)e Fs(C)g Fw(function)h(whic)-31
+b(h)388 b(computes)f(the)g(appro)-31 b(ximation)390 b
+Fl(g)40 b Fw(\()p Fl(t;)184 b(y)40 b Fw(\))338 b Fn(\274)16435
+21081 y Fl(f)119 b Fw(\()p Fl(t;)184 b(y)40 b Fw(\).)p
+Black 10814 22616 a Fu(cfn)p Black 3878 w Fw(\()p Fu(CVCommFn)p
+Fw(\))385 b(the)f(optional)i Fs(C)d Fw(function)i(whic)-31
+b(h)384 b(p)31 b(erforms)383 b(all)h(in)-31 b(terpro)31
+b(cess)383 b(com-)16435 23944 y(m)-31 b(unication)372
+b(required)d(for)g(the)h(computation)i(of)e Fl(g)40 b
+Fw(\()p Fl(t;)184 b(y)40 b Fw(\).)p Black 4000 25700
+a(Return)369 b(v)-61 b(alue)p Black 554 w(If)284 b(successful,)301
+b Fu(CVBBDPrecAlloc)286 b Fw(returns)e(a)g(p)31 b(oin)-31
+b(ter)285 b(to)g(the)g(newly)g(created)g Fs(cvbbdpre)g
+Fw(mem-)10814 27028 y(ory)369 b(blo)31 b(c)-31 b(k)370
+b(\(of)h(t)-31 b(yp)31 b(e)369 b Fu(void)582 b(*)p Fw(\).)493
+b(If)369 b(an)g(error)g(o)31 b(ccurred,)368 b Fu(CVBBDPrecAlloc)j
+Fw(returns)e Fu(NULL)p Fw(.)p Black 4000 28784 a(Notes)p
+Black 4072 w(If)544 b(one)g(of)h(the)f(half-bandwidths)j
+Fu(mudq)d Fw(or)g Fu(mldq)g Fw(to)h(b)31 b(e)544 b(used)f(in)i(the)f
+(di\256erence)g(quotien)-31 b(t)10814 30112 y(calculation)390
+b(of)d(the)g(appro)-31 b(ximate)390 b(Jacobian)e(is)f(negativ)-31
+b(e)389 b(or)e(exceeds)f(the)h(v)-61 b(alue)388 b Fu(local)p
+49348 30112 349 45 v 419 w(N)p Fn(\241)p Fw(1,)10814
+31441 y(it)370 b(is)f(replaced)g(with)i(0)e(or)g Fu(local)p
+25178 31441 V 420 w(N)p Fn(\241)p Fw(1)g(accordingly)-92
+b(.)10814 33196 y(The)533 b(half-bandwidths)i Fu(mudq)e
+Fw(and)f Fu(mldq)h Fw(need)f(not)i(b)31 b(e)532 b(the)g(true)h
+(half-bandwidths)i(of)e(the)10814 34525 y(Jacobian)371
+b(of)e(the)h(lo)31 b(cal)370 b(blo)31 b(c)-31 b(k)371
+b(of)e Fl(g)409 b Fw(when)369 b(smaller)i(v)-61 b(alues)369
+b(ma)-31 b(y)370 b(pro)-31 b(vide)370 b(a)g(greater)f(e\261ciency)-92
+b(.)10814 36280 y(Also,)502 b(the)474 b(half-bandwidths)j
+Fu(mukeep)e Fw(and)f Fu(mlkeep)h Fw(of)g(the)g(retained)g(banded)f
+(appro)-31 b(ximate)10814 37609 y(Jacobian)408 b(blo)31
+b(c)-31 b(k)407 b(ma)-31 b(y)407 b(b)31 b(e)406 b(ev)-31
+b(en)406 b(smaller,)417 b(to)407 b(reduce)e(storage)i(and)g
+(computational)j(costs)c(fur-)10814 38937 y(ther.)10814
+40693 y(F)-92 b(or)368 b(all)j(four)e(half-bandwidths,)j(the)e(v)-61
+b(alues)369 b(need)g(not)h(b)31 b(e)368 b(the)i(same)f(for)h(ev)-31
+b(ery)369 b(pro)31 b(cess.)p 4000 42948 6565 45 v 4000
+44535 45 1587 v 4376 43957 a Fu(CVBBDSpgmr)p 10520 44535
+V 4000 44579 6565 45 v Black 4000 45859 a Fw(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVBBDSpgmr\(cvode)p 24248 45859
+349 45 v 421 w(mem,)h(pretype,)g(maxl,)g(bbd)p 38035
+45859 V 419 w(data\);)p Black 4000 47614 a Fw(Description)p
+Black 1286 w(The)325 b(function)i Fu(CVBBDSpgmr)f Fw(links)g(the)g
+Fs(cvbbdpre)g Fw(data)g(to)g(the)g Fs(cvspgmr)e Fw(linear)i(solv)-31
+b(er)326 b(and)10814 48943 y(attac)-31 b(hes)371 b(the)e(latter)i(to)f
+(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31
+b(k.)p Black 4000 50699 a(Argumen)g(ts)p Black Black
+1517 w Fu(cvode)p 13789 50699 V 419 w(mem)p Black 554
+w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 52233 a Fu(pretype)p Black
+1554 w Fw(\()p Fu(int)p Fw(\))370 b(preconditioning)i(t)-31
+b(yp)31 b(e.)493 b(Must)369 b(b)31 b(e)369 b(either)g
+Fu(PREC)p 40110 52233 V 419 w(LEFT)h Fw(or)f Fu(PREC)p
+46903 52233 V 419 w(RIGHT)p Fw(.)p Black 10814 53767
+a Fu(maxl)p Black 3297 w Fw(\()p Fu(int)p Fw(\))406 b(maxim)-31
+b(um)407 b(dimension)f(of)f(the)g(Krylo)-31 b(v)406 b(subspace)e(to)h
+(b)31 b(e)404 b(used.)598 b(P)-31 b(ass)405 b(0)g(to)16435
+55096 y(use)369 b(the)g(default)i(v)-61 b(alue)369 b
+Fu(CVSPGMR)p 30971 55096 V 420 w(MAXL)582 b(=)f(5)p Fw(.)p
+Black 10814 56630 a Fu(bbd)p 12627 56630 V 419 w(data)p
+Black 1135 w Fw(\()p Fu(void)h(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cvbbdpre)h Fw(data)h(structure.)p
+Black 4000 58386 a(Return)e(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black
+10814 60141 a Fu(CVSPGMR)p 14951 60141 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g Fs(cvspgmr)f Fw(initialization)374
+b(w)-31 b(as)370 b(successful.)p Black 10814 61676 a
+Fu(CVSPGMR)p 14951 61676 V 419 w(MEM)p 17113 61676 V
+419 w(NULL)p Black 1136 w Fw(The)f Fu(cvode)p 26172 61676
+V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)369 b(is)h Fu(NULL)p
+Fw(.)p Black 10814 63210 a Fu(CVSPGMR)p 14951 63210 V
+419 w(ILL)p 17113 63210 V 419 w(INPUT)p Black 555 w Fw(The)f
+(preconditioner)h(t)-31 b(yp)31 b(e)370 b Fu(pretype)g
+Fw(is)f(not)h(v)-61 b(alid.)p Black 10814 64745 a Fu(CVSPGMR)p
+14951 64745 V 419 w(MEM)p 17113 64745 V 419 w(FAIL)p
+Black 1136 w Fw(A)369 b(memory)h(allo)31 b(cation)372
+b(request)d(failed.)p Black 10814 66279 a Fu(CV)p 12046
+66279 V 419 w(PDATA)p 15370 66279 V 419 w(NULL)p Black
+2879 w Fw(The)g Fs(cvbbdpre)h Fw(preconditioner)g(has)f(not)h(b)31
+b(een)369 b(initialized.)p 4000 68534 8308 45 v 4000
+69875 45 1341 v 4376 69543 a Fu(CVBBDPrecFree)p 12263
+69875 V 4000 69919 8308 45 v Black 4000 71271 a Fw(Call)p
+Black 4848 w Fu(CVBBDPrecFree\(bbd)p 20761 71271 349
+45 v 421 w(data\);)p Black 4000 73027 a Fw(Description)p
+Black 1286 w(The)g(function)i Fu(CVBBDPrecFree)g Fw(frees)d(the)i(p)31
+b(oin)-31 b(ter)370 b(allo)31 b(cated)371 b(b)-31 b(y)370
+b Fu(CVBBDPrecAlloc)p Fw(.)p Black 4000 74783 a(Argumen)-31
+b(ts)p Black 1517 w(The)445 b(only)h(argumen)-31 b(t)446
+b(passed)e(to)i Fu(CVBBDPrecFree)g Fw(is)f(the)g(p)31
+b(oin)-31 b(ter)445 b(to)h(the)f Fs(cvbbdpre)h Fw(data)10814
+76111 y(structure)369 b(\(of)h(t)-31 b(yp)31 b(e)369
+b Fu(void)582 b(*)p Fw(\).)p Black 4000 77867 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(function)i Fu(CVBBDPrecFree)g
+Fw(has)e(no)g(return)g(v)-61 b(alue.)p Black Black eop
+%%Page: 80 90
+80 89 bop Black 0 2701 a Fx(80)28067 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(IVP)g(Solution)p 0 3144 48001 45 v
+Black 0 6974 a Fw(The)349 b Fs(cvbbdpre)g Fw(mo)31 b(dule)349
+b(also)g(pro)-31 b(vides)349 b(a)f(reinitialization)353
+b(function)d(to)f(allo)-31 b(w)351 b(solving)f(a)e(sequence)g(of)h
+(prob-)0 8302 y(lems)401 b(of)g(the)g(same)g(size)g(with)h
+Fs(cvspgmr)p Fw(/)p Fs(cvbbdpre)p Fw(,)410 b(pro)-31
+b(vided)401 b(there)g(is)g(no)g(c)-31 b(hange)401 b(in)g
+Fu(local)p 42567 8302 349 45 v 419 w(N)p Fw(,)h Fu(mukeep)p
+Fw(,)0 9631 y(or)c Fu(mlkeep)p Fw(.)581 b(After)399 b(solving)h(one)f
+(problem,)407 b(and)398 b(after)h(calling)i Fu(CVodeReInit)f
+Fw(to)f(re-initialize)i Fs(cv)-25 b(odes)399 b Fw(for)g(a)0
+10959 y(subsequen)-31 b(t)426 b(problem,)441 b(a)427
+b(call)g(to)g Fu(CVBBDPrecReInit)h Fw(can)e(b)31 b(e)426
+b(made)g(to)h(c)-31 b(hange)427 b(an)-31 b(y)427 b(of)f(the)h(follo)-31
+b(wing:)610 b(the)0 12287 y(half-bandwidths)289 b Fu(mudq)f
+Fw(and)f Fu(mldq)g Fw(used)f(in)i(the)f(di\256erence)f(quotien)-31
+b(t)289 b(Jacobian)g(appro)-31 b(ximations,)307 b(the)287
+b(relativ)-31 b(e)0 13616 y(incremen)g(t)370 b Fu(dqrely)p
+Fw(,)h(or)e(one)g(of)h(the)f(user-supplied)g(functions)h
+Fu(gloc)g Fw(and)f Fu(cfn)p Fw(.)p 0 15566 9470 45 v
+0 16907 45 1341 v 376 16575 a Fu(CVBBDPrecReInit)p 9426
+16907 V 0 16951 9470 45 v Black 0 18319 a Fw(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVBBDPrecReInit\(bbd)p 21991
+18319 349 45 v 421 w(data,)h(mudq,)g(mldq,)g(dqrely,)g(gloc,)g(cfn\);)p
+Black 0 20121 a Fw(Description)p Black 1286 w(The)369
+b(function)i Fu(CVBBDPrecReInit)g Fw(re-initializes)h(the)d
+Fs(cvbbdpre)h Fw(preconditioner.)p Black 0 21923 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(bbd)p 8627 21923 V 419 w(data)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cvbbdpre)h Fw(data)h(structure.)p
+Black 6814 23488 a Fu(mudq)p Black 2716 w Fw(\()p Fu(long)582
+b(int)p Fw(\))368 b(upp)31 b(er)367 b(half-bandwidth)j(to)e(b)31
+b(e)367 b(used)g(in)h(the)f(di\256erence)g(quotien)-31
+b(t)370 b(Ja-)11854 24816 y(cobian)g(appro)-31 b(ximation.)p
+Black 6814 26381 a Fu(mldq)p Black 2716 w Fw(\()p Fu(long)582
+b(int)p Fw(\))396 b(lo)-31 b(w)g(er)396 b(half-bandwidth)i(to)e(b)31
+b(e)395 b(used)f(in)i(the)f(di\256erence)f(quotien)-31
+b(t)398 b(Ja-)11854 27710 y(cobian)370 b(appro)-31 b(ximation.)p
+Black 6814 29275 a Fu(dqrely)p Black 1554 w Fw(\()p Fu(realtype)p
+Fw(\))314 b(the)f(relativ)-31 b(e)314 b(incremen)-31
+b(t)314 b(in)f(comp)31 b(onen)-31 b(ts)313 b(of)g Fu(y)g
+Fw(used)f(in)h(the)f(di\256erence)11854 30603 y(quotien)-31
+b(t)429 b(appro)-31 b(ximations.)669 b(The)428 b(default)g(is)f
+Fu(dqrely)h Fw(=)37163 29660 y Fn(p)p 38085 29660 6369
+45 v 943 x Fw(unit)370 b(roundo\256,)442 b(whic)-31 b(h)11854
+31931 y(can)369 b(b)31 b(e)369 b(sp)31 b(eci\257ed)369
+b(b)-31 b(y)369 b(passing)h Fu(dqrely)582 b(=)f(0.0)p
+Fw(.)p Black 6814 33497 a Fu(gloc)p Black 2716 w Fw(\()p
+Fu(CVLocalFn)p Fw(\))449 b(the)e Fs(C)g Fw(function)h(whic)-31
+b(h)448 b(computes)g(the)f(appro)-31 b(ximation)450 b
+Fl(g)40 b Fw(\()p Fl(t;)184 b(y)40 b Fw(\))438 b Fn(\274)11854
+34825 y Fl(f)119 b Fw(\()p Fl(t;)184 b(y)40 b Fw(\).)p
+Black 6814 36390 a Fu(cfn)p Black 3297 w Fw(\()p Fu(CVCommFn)p
+Fw(\))450 b(the)e(optional)i Fs(C)e Fw(function)h(whic)-31
+b(h)449 b(p)31 b(erforms)448 b(all)h(in)-31 b(terpro)31
+b(cess)447 b(com-)11854 37718 y(m)-31 b(unication)372
+b(required)d(for)g(the)g(computation)k(of)c Fl(g)40 b
+Fw(\()p Fl(t;)184 b(y)40 b Fw(\).)p Black 0 39520 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b(of)f Fu(CVBBDPrecReInit)i Fw(is)f(alw)-31
+b(a)g(ys)371 b Fu(CV)p 31572 39520 349 45 v 419 w(SUCCESS)p
+Fw(.)p Black 0 41322 a(Notes)p Black 4072 w(If)282 b(one)h(of)f(the)h
+(half-bandwidths)i Fu(mudq)d Fw(or)g Fu(mldq)h Fw(is)f(negativ)-31
+b(e)285 b(or)d(exceeds)f(the)i(v)-61 b(alue)283 b Fu(local)p
+45348 41322 V 419 w(N)p Fn(\241)p Fw(1,)6814 42651 y(it)370
+b(is)f(replaced)g(with)i(0)e(or)g Fu(local)p 21178 42651
+V 420 w(N)p Fn(\241)p Fw(1)g(accordingly)-92 b(.)0 44395
+y(The)369 b(follo)-31 b(wing)373 b(t)-31 b(w)g(o)371
+b(optional)h(output)e(functions)h(are)e(a)-31 b(v)-61
+b(ailable)372 b(for)d(use)f(with)j(the)e Fs(cvbbdpre)h
+Fw(mo)31 b(dule:)p 0 46345 12957 45 v 0 47932 45 1587
+v 376 47354 a Fu(CVBBDPrecGetWorkSpace)p 12913 47932
+V 0 47976 12957 45 v Black 0 49271 a Fw(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVBBDPrecGetWorkSpace\(bbd)p
+25477 49271 349 45 v 422 w(data,)h(&lenrwBBDP,)h(&leniwBBDP\);)p
+Black 0 51073 a Fw(Description)p Black 1286 w(The)422
+b(function)i Fu(CVBBDPrecGetWorkSpace)h Fw(returns)c(the)h(lo)31
+b(cal)424 b Fs(cvbbdpre)f Fw(real)f(and)h(in)-31 b(teger)6814
+52401 y(w)g(orkspace)370 b(sizes.)p Black 0 54203 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(bbd)p 8627 54203 V 419 w(data)p
+Black 1298 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fs(cvbbdpre)h Fw(data)g(structure.)p
+Black 6814 55768 a Fu(lenrwBBDP)p Black 555 w Fw(\()p
+Fu(long)582 b(int)p Fw(\))291 b(lo)31 b(cal)292 b(n)-31
+b(um)g(b)31 b(er)290 b(of)h Fu(realtype)g Fw(v)-61 b(alues)290
+b(in)h(the)f Fs(cvbbdpre)h Fw(w)-31 b(orkspace.)p Black
+6814 57334 a Fu(leniwBBDP)p Black 555 w Fw(\()p Fu(long)582
+b(int)p Fw(\))370 b(lo)31 b(cal)371 b(n)-31 b(um)g(b)31
+b(er)369 b(of)g(in)-31 b(teger)371 b(v)-61 b(alues)369
+b(in)g(the)h Fs(cvbbdpre)g Fw(w)-31 b(orkspace.)p Black
+0 59136 a(Return)369 b(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black
+6814 60938 a Fu(CV)p 8046 60938 V 419 w(SUCCESS)p Black
+2135 w Fw(The)g(optional)j(output)f(v)-61 b(alues)369
+b(ha)-31 b(v)g(e)370 b(b)31 b(een)369 b(successfully)g(set.)p
+Black 6814 62503 a Fu(CV)p 8046 62503 V 419 w(PDATA)p
+11370 62503 V 419 w(NULL)p Black 554 w Fw(The)g Fs(cvbbdpre)h
+Fw(preconditioner)h(has)e(not)h(b)31 b(een)368 b(initialized.)p
+Black 0 64305 a(Notes)p Black 4072 w(In)317 b(terms)g(of)g
+Fu(local)p 15361 64305 V 419 w(N)h Fw(and)f Fu(smu)g
+Fw(=)g(min)q(\()p Fu(local)p 27197 64305 V 420 w(N)581
+b(-)g(1,)h(mukeep)318 b Fw(+)f Fu(mlkeep)p Fw(\),)329
+b(the)317 b(actual)i(size)6814 65633 y(of)314 b(the)f(real)g(w)-31
+b(orkspace)314 b(is)f(\(2)h Fu(mlkeep)g Fw(+)f Fu(mukeep)h
+Fw(+)f Fu(smu)g Fw(+2\))184 b Fu(local)p 36571 65633
+V 420 w(N)313 b(realtype)i Fw(w)-31 b(ords,)325 b(and)6814
+66961 y(the)443 b(actual)h(size)e(of)h(the)g(in)-31 b(teger)443
+b(w)-31 b(orkspace)443 b(is)g Fu(local)p 30940 66961
+V 419 w(N)f Fw(in)-31 b(teger)444 b(w)-31 b(ords.)712
+b(These)442 b(v)-61 b(alues)443 b(are)6814 68290 y(lo)31
+b(cal)371 b(to)f(eac)-31 b(h)369 b(pro)31 b(cess.)p 0
+70656 14120 45 v 0 71996 45 1341 v 376 71664 a Fu
+(CVBBDPrecGetNumGfnEvals)p 14075 71996 V 0 72040 14120
+45 v Black 0 73408 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVBBDPrecGetNumGfnEvals\(bbd)p 26639 73408 349
+45 v 422 w(data,)h(&ngevalsBBDP\);)p Black 0 75210 a
+Fw(Description)p Black 1286 w(The)520 b(function)i Fu
+(CVBBDPrecGetNumGfnEvals)h Fw(returns)c(the)h(n)-31 b(um)g(b)31
+b(er)520 b(of)g(calls)h(made)g(to)g(the)6814 76539 y(user-supplied)323
+b Fu(gloc)h Fw(function)h(due)e(to)h(the)g(\257nite)g(di\256erence)f
+(appro)-31 b(ximation)327 b(of)d(the)f(Jacobian)6814
+77867 y(blo)31 b(c)-31 b(ks)370 b(used)e(within)j(the)f(preconditioner)
+g(setup)f(function.)p Black Black eop
+%%Page: 81 91
+81 90 bop Black 4000 2701 a Fx(5.9)425 b(Preconditioner)i(mo)35
+b(dules)31418 b(81)p 4000 3144 48001 45 v Black Black
+4000 6974 a Fw(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(bbd)p 12627 6974 349 45 v 419 w(data)p Black 2460
+w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cvbbdpre)h Fw(data)h(structure.)p
+Black 10814 8524 a Fu(ngevalsBBDP)p Black 555 w Fw(\()p
+Fu(long)582 b(int)p Fw(\))250 b(the)f(n)-31 b(um)g(b)31
+b(er)249 b(of)h(calls)g(made)g(to)g(the)f(user-supplied)f
+Fu(gloc)i Fw(function.)p Black 4000 10295 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(is)f(one)g(of)p Black 10814 12066
+a Fu(CV)p 12046 12066 V 419 w(SUCCESS)p Black 2135 w
+Fw(The)g(optional)j(output)f(v)-61 b(alue)369 b(has)g(b)31
+b(een)369 b(successfully)g(set.)p Black 10814 13616 a
+Fu(CV)p 12046 13616 V 419 w(PDATA)p 15370 13616 V 419
+w(NULL)p Black 554 w Fw(The)g Fs(cvbbdpre)h Fw(preconditioner)h(has)e
+(not)h(b)31 b(een)368 b(initialized.)5660 15344 y(The)456
+b(costs)g(asso)31 b(ciated)457 b(with)f Fs(cvbbdpre)h
+Fw(also)f(include)h Fu(nlinsetups)f Fw(LU)g(factorizations,)481
+b Fu(nlinsetups)4000 16672 y Fw(calls)420 b(to)h Fu(cfn)p
+Fw(,)433 b(and)420 b Fu(npsolves)g Fw(banded)g(bac)-31
+b(ksolv)g(e)421 b(calls,)434 b(where)419 b Fu(nlinsetups)i
+Fw(and)f Fu(npsolves)h Fw(are)e(optional)4000 18001 y
+Fs(cv)-25 b(odes)370 b Fw(outputs)g(\(see)f Fn(x)p Fw(5.5.6\).)5660
+19329 y(Similar)273 b(blo)31 b(c)-31 b(k-diagonal)274
+b(preconditioners)d(could)g(b)31 b(e)270 b(considered)g(with)h
+(di\256eren)-31 b(t)271 b(treatmen)-31 b(ts)272 b(of)f(the)f(blo)31
+b(c)-31 b(ks)4000 20657 y Fl(P)4711 20823 y Fj(m)5552
+20657 y Fw(.)882 b(F)-92 b(or)499 b(example,)534 b(incomplete)501
+b(LU)e(factorization)k(or)c(an)h(iterativ)-31 b(e)501
+b(metho)31 b(d)501 b(could)f(b)31 b(e)498 b(used)h(instead)h(of)4000
+21986 y(banded)369 b(LU)g(factorization.)p Black Black
+eop
+%%Page: 82 92
+82 91 bop Black Black Black Black eop
+%%Page: 83 93
+83 92 bop Black Black 4000 15324 a Ft(Chapter)861 b(6)4000
+20907 y Fv(Using)1033 b(CV)-86 b(ODES)1032 b(for)h(F)-258
+b(orw)-86 b(ard)4000 24228 y(Sensitivit)g(y)1033 b(Analysis)4000
+30032 y Fw(This)343 b(c)-31 b(hapter)344 b(describ)31
+b(es)342 b(the)h(use)g(of)g Fs(cv)-25 b(odes)344 b Fw(to)f(compute)i
+(solution)f(sensitivities)h(using)f(forw)-31 b(ard)344
+b(sensitivit)-31 b(y)4000 31360 y(analysis.)660 b(One)425
+b(of)g(our)f(main)i(guiding)g(principles)f(w)-31 b(as)426
+b(to)f(design)g(the)g Fs(cv)-25 b(odes)425 b Fw(user)e(in)-31
+b(terface)426 b(for)f(forw)-31 b(ard)4000 32688 y(sensitivit)g(y)348
+b(analysis)g(as)e(an)g(extension)h(of)g(that)g(for)f(IVP)g(in)-31
+b(tegration.)488 b(Assuming)347 b(a)f(user)f(main)j(program)f(and)4000
+34017 y(user-de\257ned)463 b(supp)31 b(ort)464 b(routines)g(for)h(IVP)f
+(in)-31 b(tegration)467 b(ha)-31 b(v)g(e)465 b(already)g(b)31
+b(een)464 b(de\257ned,)488 b(in)464 b(order)g(to)h(p)31
+b(erform)4000 35345 y(forw)-31 b(ard)512 b(sensitivit)-31
+b(y)513 b(analysis)f(the)f(user)f(only)i(has)e(to)i(insert)f(a)g(few)g
+(more)h(calls)f(in)-31 b(to)513 b(the)e(main)h(program)4000
+36673 y(and)391 b(\(optionally\))k(de\257ne)390 b(an)h(additional)i
+(routine)f(whic)-31 b(h)391 b(computes)h(the)e(righ)-31
+b(t-hand)392 b(side)f(of)g(the)g(sensitivit)-31 b(y)4000
+38002 y(systems)325 b(\(3.9\).)480 b(The)324 b(only)i(departure)e(from)
+i(this)f(philosoph)-31 b(y)326 b(is)f(due)f(to)h(the)g
+Fu(CVRhsFn)h Fw(t)-31 b(yp)31 b(e)325 b(de\257nition)h(\()p
+Fn(x)p Fw(5.6\).)4000 39330 y(Without)331 b(c)-31 b(hanging)332
+b(the)e(de\257nition)h(of)f(this)h(t)-31 b(yp)31 b(e,)338
+b(the)330 b(only)h(w)-31 b(a)g(y)331 b(to)g(pass)e(v)-61
+b(alues)330 b(of)g(the)g(problem)g(parameters)4000 40658
+y(to)304 b(the)f(ODE)g(righ)-31 b(t-hand)304 b(side)f(function)i(is)e
+(to)g(require)g(the)g(user)f(data)i(structure)f Fu(f)p
+39595 40658 349 45 v 419 w(data)g Fw(to)h(con)-31 b(tain)305
+b(a)e(p)31 b(oin)-31 b(ter)4000 41987 y(to)370 b(the)f(arra)-31
+b(y)370 b(of)g(real)f(parameters)h Fl(p)p Fw(.)5660 43363
+y Fs(cv)-25 b(odes)407 b Fw(uses)f(v)-61 b(arious)407
+b(constan)-31 b(ts)407 b(for)g(b)31 b(oth)407 b(input)g(and)g(output.)
+606 b(These)406 b(are)h(de\257ned)f(as)g(needed)h(in)f(this)4000
+44691 y(c)-31 b(hapter,)370 b(but)g(for)f(con)-31 b(v)g(enience)370
+b(are)f(also)h(listed)h(separately)f(in)f(Chapter)h(11.)5660
+46068 y(W)-92 b(e)494 b(b)31 b(egin)495 b(with)h(a)f(brief)g(o)-31
+b(v)g(erview,)528 b(in)495 b(the)g(form)g(of)g(a)g(sk)-31
+b(eleton)496 b(user)d(program.)870 b(F)-92 b(ollo)-31
+b(wing)497 b(that)f(are)4000 47396 y(detailed)428 b(descriptions)e(of)h
+(the)f(in)-31 b(terface)427 b(to)g(the)f(v)-61 b(arious)427
+b(user-callable)g(routines)f(and)h(of)f(the)g(user-supplied)4000
+48724 y(routines)370 b(that)g(w)-31 b(ere)369 b(not)h(already)g
+(describ)31 b(ed)369 b(in)g Fn(x)p Fw(5.)4000 52639 y
+Fr(6.1)1793 b(A)598 b(sk)-50 b(eleton)599 b(of)f(the)g(user's)i(main)e
+(program)4000 55153 y Fw(The)472 b(follo)-31 b(wing)476
+b(is)471 b(a)i(sk)-31 b(eleton)473 b(of)f(the)g(user's)f(main)i
+(program)g(\(or)f(calling)i(program\))f(as)f(an)g(application)j(of)4000
+56481 y Fs(cv)-25 b(odes)p Fw(.)714 b(The)443 b(user)f(program)i(is)f
+(to)g(ha)-31 b(v)g(e)444 b(these)f(steps)f(in)i(the)f(order)f
+(indicated,)463 b(unless)443 b(otherwise)h(noted.)4000
+57810 y(F)-92 b(or)341 b(the)i(sak)-31 b(e)343 b(of)f(brevit)-31
+b(y)-92 b(,)349 b(w)-31 b(e)343 b(defer)f(man)-31 b(y)343
+b(of)g(the)g(details)g(to)g(the)g(later)g(sections.)484
+b(As)342 b(in)h Fn(x)p Fw(5.4,)349 b(most)343 b(steps)f(are)4000
+59138 y(indep)31 b(enden)-31 b(t)399 b(of)g(the)g Fs(nvector)g
+Fw(implemen)-31 b(tation)403 b(used;)413 b(where)398
+b(this)h(is)g(not)g(the)g(case,)407 b(usage)399 b(sp)31
+b(eci\257cations)4000 60466 y(are)452 b(giv)-31 b(en)454
+b(for)e(the)h(t)-31 b(w)g(o)454 b(implemen)-31 b(tations)456
+b(pro)-31 b(vided)453 b(with)h Fs(cv)-25 b(odes)p Fw(:)659
+b(steps)452 b(mark)-31 b(ed)453 b(with)g([)p Fx(P)p Fw(])h(corresp)31
+b(ond)4000 61795 y(to)423 b Fs(nvector)p 10133 61795
+368 45 v 441 w(p)-74 b(arallel)p Fw(,)437 b(while)424
+b(steps)e(mark)-31 b(ed)423 b(with)h([)p Fx(S)p Fw(])g(corresp)31
+b(ond)421 b(to)i Fs(nvector)p 42048 61795 V 441 w(serial)p
+Fw(.)652 b(Di\256erences)4000 63123 y(b)31 b(et)-31 b(w)g(een)370
+b(the)g(user)e(main)i(program)g(in)g Fn(x)p Fw(5.4)g(and)f(the)h(one)f
+(b)31 b(elo)-31 b(w)371 b(start)e(only)h(at)g(step)f(\(9\).)5660
+64499 y(First,)296 b(note)278 b(that)h(no)f(additional)i(header)e
+(\257les)f(need)g(b)31 b(e)277 b(included)h(for)g(forw)-31
+b(ard)278 b(sensitivit)-31 b(y)280 b(analysis)e(b)31
+b(ey)-31 b(ond)4000 65828 y(those)370 b(for)f(IVP)g(solution)i(\()p
+Fn(x)p Fw(5.4\).)p Black 4553 68185 a(1.)p Black 0.5 0.5 0.5
+TeXcolorrgb 493 w Fx([P])424 b(Initialize)f(MPI)p Black
+Black 4553 70606 a Fw(2.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx(Set)j(problem)f(dimensions)p Black Black 4553
+73026 a Fw(3.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Set)h(initial)c
+(v)-71 b(alues)p Black Black 4553 75446 a Fw(4.)p Black
+0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Create)426 b Fs(cv)-25
+b(odes)425 b Fx(ob)71 b(ject)p Black Black 4553 77867
+a Fw(5.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Allo)35
+b(cate)425 b(in)-35 b(ternal)425 b(memory)p Black Black
+Black eop
+%%Page: 84 94
+84 93 bop Black 0 2701 a Fx(84)19434 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(F)-106 b(orw)-35 b(ard)426 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black Black 553
+6974 a Fw(6.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Set)j(optional)e
+(inputs)p Black Black 553 9302 a Fw(7.)p Black 0.5 0.5 0.5
+TeXcolorrgb 493 w Fx(A)-35 b(ttac)g(h)424 b(linear)h(solv)-35
+b(er)425 b(mo)35 b(dule)p Black Black 553 11630 a Fw(8.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Set)426 b(linear)e(solv)-35
+b(er)425 b(optional)f(inputs)p Black Black 553 13958
+a Fw(9.)p Black 493 w Fx(De\257ne)i(the)f(sensitivit)-35
+b(y)424 b(problem)p Black 3788 16509 a Fn(\262)p Black
+1 w Fw(Num)-31 b(b)31 b(er)369 b(of)h(sensitivities)4342
+18060 y(Set)f Fu(Ns)p Fw(,)h(the)f(n)-31 b(um)g(b)31
+b(er)370 b(of)f(parameters)h(with)g(resp)31 b(ect)369
+b(to)h(whic)-31 b(h)370 b(sensitivities)h(are)e(to)h(b)31
+b(e)368 b(computed.)p Black 3788 19835 a Fn(\262)p Black
+1 w Fw(Problem)i(parameters)4342 21386 y(If)508 b Fs(cv)-25
+b(odes)508 b Fw(will)i(ev)-61 b(aluate)510 b(the)e(righ)-31
+b(t-hand)510 b(sides)e(of)g(the)h(sensitivit)-31 b(y)510
+b(systems,)544 b(set)508 b Fu(p)p Fw(,)543 b(an)508 b(arra)-31
+b(y)4342 22715 y(of)521 b Fu(Np)h Fw(real)f(parameters)h(up)31
+b(on)521 b(whic)-31 b(h)522 b(the)f(IVP)g(dep)31 b(ends.)948
+b(Only)522 b(parameters)f(with)i(resp)31 b(ect)520 b(to)4342
+24043 y(whic)-31 b(h)358 b(sensitivities)g(are)f(\(p)31
+b(oten)-31 b(tially\))361 b(desired)356 b(need)h(to)g(b)31
+b(e)357 b(included.)489 b(A)-31 b(ttac)g(h)358 b Fu(p)f
+Fw(to)h(the)f(user)f(data)4342 25371 y(structure)368
+b Fu(f)p 9740 25371 349 45 v 419 w(data)p Fw(.)493 b(F)-92
+b(or)368 b(example,)j Fu(f)p 20493 25371 V 419 w(data->p)582
+b(=)g(p;)4342 26923 y Fw(If)447 b(the)g(user)f(pro)-31
+b(vides)447 b(a)h(function)g(to)g(ev)-61 b(aluate)449
+b(the)e(sensitivit)-31 b(y)449 b(righ)-31 b(t-hand)449
+b(side,)467 b Fu(p)447 b Fw(need)f(not)i(b)31 b(e)4342
+28251 y(sp)g(eci\257ed.)p Black 3788 30026 a Fn(\262)p
+Black 1 w Fw(P)-31 b(arameter)370 b(list)4342 31577 y(If)346
+b Fs(cv)-25 b(odes)347 b Fw(will)h(ev)-61 b(aluate)348
+b(the)f(righ)-31 b(t-hand)348 b(sides)e(of)h(the)f(sensitivit)-31
+b(y)349 b(systems,)i(set)c Fu(plist)p Fw(,)352 b(an)346
+b(arra)-31 b(y)4342 32906 y(of)403 b Fu(Ns)f Fw(in)-31
+b(teger)404 b(\260ags)e(to)i(sp)31 b(ecify)402 b(the)h(parameters)g
+Fu(p)f Fw(with)i(resp)31 b(ect)401 b(to)i(whic)-31 b(h)404
+b(solution)g(sensitivities)4342 34234 y(are)319 b(to)g(b)31
+b(e)319 b(computed.)477 b(If)319 b(sensitivities)i(with)f(resp)31
+b(ect)318 b(to)i(the)f Fl(j)63 b Fw(-th)320 b(problem)f(parameter)h
+(are)f(desired,)4342 35562 y(set)402 b(plist)8200 35833
+y Fj(i)8932 35562 y Fw(=)363 b Fl(j)63 b Fw(,)411 b(for)403
+b(some)g Fl(i)363 b Fw(=)g(1)p Fl(;)184 b(:)g(:)g(:)k(;)c(N)21797
+35728 y Fj(s)22272 35562 y Fw(.)592 b(Note)404 b(that)f(the)g
+(parameters)g(are)f(n)-31 b(um)g(b)31 b(ered)403 b(from)g(1)g(for)4342
+36891 y(the)369 b(purp)31 b(ose)369 b(of)g Fu(plist)p
+Fw(.)4342 38442 y(If)486 b Fu(plist)h Fw(is)g(not)g(sp)31
+b(eci\257ed,)517 b Fs(cv)-25 b(odes)487 b Fw(will)h(compute)g
+(sensitivities)g(with)g(resp)31 b(ect)486 b(to)i(the)f(\257rst)f
+Fu(Ns)4342 39770 y Fw(parameters;)370 b(i.e.,)h(plist)14569
+40041 y Fj(i)15245 39770 y Fw(=)307 b Fl(i)p Fw(,)370
+b Fl(i)308 b Fw(=)f(1)p Fl(;)184 b(:)g(:)g(:)189 b(;)184
+b(N)23230 39936 y Fj(s)23704 39770 y Fw(.)p Black 3788
+41545 a Fn(\262)p Black 1 w Fw(P)-31 b(arameter)370 b(scaling)h
+(factors)4342 43096 y(If)364 b Fs(cv)-25 b(odes)364 b
+Fw(estimates)i(tolerances)f(for)f(the)h(sensitivit)-31
+b(y)366 b(solution)g(v)-31 b(ectors)365 b(\(based)f(on)h(tolerances)g
+(for)4342 44425 y(the)371 b(state)h(solution)h(v)-31
+b(ector\))372 b(or)f(if)h Fs(cv)-25 b(odes)371 b Fw(will)i(ev)-61
+b(aluate)372 b(the)g(righ)-31 b(t-hand)372 b(sides)f(of)g(the)h
+(sensitivit)-31 b(y)4342 45753 y(systems,)369 b(the)h(results)e(will)j
+(b)31 b(e)369 b(more)h(accurate)g(if)f(order)g(of)g(magnitude)j
+(information)g(is)d(pro)-31 b(vided.)4342 47305 y(Set)336
+b Fu(pbar)p Fw(,)343 b(an)336 b(arra)-31 b(y)336 b(of)h
+Fu(Ns)e Fw(p)31 b(ositiv)-31 b(e)338 b(scaling)f(factors.)482
+b(T)-31 b(ypically)-92 b(,)346 b(if)336 b Fl(p)34587
+47471 y Fj(i)35263 47305 y Fn(6)p Fw(=)307 b(0,)344 b(the)336
+b(v)-61 b(alue)430 b(\271)-647 b Fl(p)42891 47471 y Fk(plist)44578
+47677 y Fi(i)45291 47305 y Fw(=)308 b Fn(j)p Fl(p)47324
+47471 y Fj(i)47693 47305 y Fn(j)4342 48633 y Fw(can)369
+b(b)31 b(e)369 b(used.)4342 50184 y(If)g Fu(pbar)g Fw(is)g(not)h(sp)31
+b(eci\257ed,)370 b Fs(cv)-25 b(odes)369 b Fw(will)i(use)463
+b(\271)-647 b Fl(p)24753 50350 y Fj(i)25429 50184 y Fw(=)307
+b(1)p Fl(:)p Fw(0.)1906 52735 y(Note)376 b(that)g(the)e(names)h(for)g
+Fu(p)p Fw(,)h Fu(pbar)p Fw(,)g Fu(plist)p Fw(,)h(as)e(w)-31
+b(ell)376 b(as)e(the)h(\257eld)f Fq(p)g Fw(of)h Fu(f)p
+34007 52735 V 419 w(data)g Fw(are)f(arbitrary)-92 b(,)377
+b(but)d(they)1906 54064 y(m)-31 b(ust)370 b(agree)g(with)g(the)g
+(argumen)-31 b(ts)370 b(passed)f(to)g Fu(CVodeSetSensParams)j
+Fw(b)31 b(elo)-31 b(w.)p Black 0 56392 a(10.)p Black
+493 w Fx(Set)426 b(sensitivit)-35 b(y)423 b(initial)g(conditions)1906
+58274 y Fw(Set)370 b(the)f Fu(Ns)h Fw(v)-31 b(ectors)369
+b Fu(yS0[i])h Fw(of)g Fu(N)f Fw(initial)j(v)-61 b(alues)369
+b(for)g(sensitivities)i(\(for)f Fl(i)308 b Fw(=)f(0)p
+Fl(;)184 b(:)g(:)g(:)189 b(;)184 b(N)121 b(s)247 b Fn(\241)f
+Fw(1\).)1906 60156 y(First,)370 b(create)f(an)h(arra)-31
+b(y)369 b(of)h Fu(Ns)f Fw(v)-31 b(ectors)370 b(b)-31
+b(y)369 b(making)i(the)f(call)1906 62037 y([)p Fx(S)p
+Fw(])h Fu(yS0)581 b(=)h(N)p 7736 62037 V 418 w(VNewVectorArray)p
+16869 62037 V 421 w(Serial\(Ns,)g(N\);)1906 63919 y Fw([)p
+Fx(P)p Fw(])371 b Fu(yS0)581 b(=)g(N)p 7898 63919 V 419
+w(VNewVectorArray)p 17032 63919 V 421 w(Parallel\(Ns,)i(N\);)1906
+65801 y Fw(and,)437 b(for)423 b(eac)-31 b(h)424 b Fl(i)397
+b Fw(=)g(1)p Fl(;)184 b Fn(\242)g(\242)g(\242)373 b Fl(;)p
+Fu(Ns)p Fw(,)437 b(load)424 b(initial)i(v)-61 b(alues)423
+b(for)g(the)g Fl(i)p Fw(-th)g(sensitivit)-31 b(y)425
+b(v)-31 b(ector)424 b(in)-31 b(to)424 b(the)f(structure)1906
+67129 y(de\257ned)369 b(b)-31 b(y:)1906 69011 y([)p Fx(S)p
+Fw(])371 b Fu(NV)p 4830 69011 V 418 w(DATA)p 7572 69011
+V 419 w(S\(yS0[i]\))1906 70893 y Fw([)p Fx(P)p Fw(])g
+Fu(NV)p 4993 70893 V 418 w(DATA)p 7735 70893 V 419 w(P\(yS0[i]\))1906
+72775 y Fw(If)c(the)h(initial)i(v)-61 b(alues)367 b(for)h(the)f
+(sensitivit)-31 b(y)370 b(v)-61 b(ariables)367 b(are)g(already)i(a)-31
+b(v)-61 b(ailable)370 b(in)d Fu(realtype)h Fw(arra)-31
+b(ys,)369 b(create)1906 74103 y(an)h(arra)-31 b(y)369
+b(of)h Fu(Ns)f Fw(\\empt)-31 b(y")372 b(v)-31 b(ectors)369
+b(b)-31 b(y)370 b(making)h(the)e(call)1906 75985 y([)p
+Fx(S)p Fw(])i Fu(yS0)581 b(=)h(N)p 7736 75985 V 418 w
+(VNewVectorArrayEmpty)p 19774 75985 V 421 w(Serial\(Ns,)h(N\);)1906
+77867 y Fw([)p Fx(P)p Fw(])371 b Fu(yS0)581 b(=)g(N)p
+7898 77867 V 419 w(VNewVectorArrayEmpty)p 19937 77867
+V 421 w(Parallel\(Ns,)i(N\);)p Black Black eop
+%%Page: 85 95
+85 94 bop Black 4000 2701 a Fx(6.2)425 b(User-callable)g(routines)h
+(for)f(forw)-35 b(ard)425 b(sensitivit)-35 b(y)424 b(analysis)15059
+b(85)p 4000 3144 48001 45 v Black 5906 6974 a Fw(and)445
+b(then)g(attac)-31 b(h)447 b(the)e Fu(realtype)h Fw(arra)-31
+b(y)445 b Fu(yS0)p 26081 6974 349 45 v 419 w(i)g Fw(con)-31
+b(taining)447 b(the)e(initial)j(v)-61 b(alues)445 b(of)g(the)g
+Fl(i)p Fw(-th)h(sensitivit)-31 b(y)5906 8302 y(v)g(ector)370
+b(using)5906 10184 y([)p Fx(S)p Fw(])h Fu(N)p 8249 10184
+V 418 w(VSetArrayPointer)p 17963 10184 V 421 w(Serial\(yS0)p
+24194 10184 V 420 w(i,)581 b(yS0[i]\);)5906 12066 y Fw([)p
+Fx(P)p Fw(])371 b Fu(N)p 8412 12066 V 418 w(VSetArrayPointer)p
+18126 12066 V 421 w(Parallel\(yS0)p 25519 12066 V 420
+w(i,)582 b(yS0[i]\);)p Black 4000 14398 a Fw(11.)p Black
+493 w Fx(Activ)-71 b(ate)425 b(sensitivit)-35 b(y)424
+b(calculations)5906 16279 y Fw(Call)307 b Fu(flag)582
+b(=)f(CVodeSensMalloc\(...\);)330 b Fw(to)306 b(activ)-61
+b(ate)307 b(forw)-31 b(ard)306 b(sensitivit)-31 b(y)307
+b(computations)h(and)d(allo)31 b(cate)5906 17608 y(in)-31
+b(ternal)371 b(memory)f(for)g Fs(cv)-25 b(odes)369 b
+Fw(related)h(to)g(sensitivit)-31 b(y)371 b(calculations)h(\(see)d
+Fn(x)p Fw(6.2.1\).)p Black 4000 19939 a(12.)p Black 493
+w Fx(Set)426 b(sensitivit)-35 b(y)423 b(analysis)h(optional)g(inputs)
+5906 21821 y Fw(Call)275 b Fu(CVodeSetSens*)g Fw(routines)e(to)h(c)-31
+b(hange)274 b(from)g(their)f(default)h(v)-61 b(alues)273
+b(an)-31 b(y)274 b(optional)i(inputs)d(that)h(con)-31
+b(trol)5906 23150 y(the)370 b(b)31 b(eha)-31 b(vior)370
+b(of)g Fs(cv)-25 b(odes)369 b Fw(in)h(computing)h(forw)-31
+b(ard)370 b(sensitivities.)p Black 4000 25481 a(13.)p
+Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Adv)-71 b(ance)426
+b(solution)f(in)f(time)p Black Black 4000 27813 a Fw(14.)p
+Black 493 w Fx(Extract)h(sensitivit)-35 b(y)424 b(solution)5906
+29695 y Fw(After)434 b(eac)-31 b(h)433 b(successful)f(return)g(from)i
+Fu(CVode)p Fw(,)449 b(the)433 b(solution)i(of)e(the)g(original)j(IVP)c
+(is)h(a)-31 b(v)-61 b(ailable)436 b(in)d(the)g Fu(y)5906
+31023 y Fw(argumen)-31 b(t)448 b(of)e Fu(CVode)p Fw(,)466
+b(while)446 b(the)g(sensitivit)-31 b(y)448 b(solution)g(can)e(b)31
+b(e)445 b(extracted)h(in)-31 b(to)448 b Fu(yS)d Fw(\(whic)-31
+b(h)447 b(can)f(b)31 b(e)446 b(the)5906 32352 y(same)370
+b(as)f Fu(yS0)p Fw(\))h(b)-31 b(y)369 b(calling)j(the)d(routine)h
+Fu(flag)582 b(=)f(CVodeGetSens\(cvode)p 37943 32352 V
+421 w(mem,)h(t,)g(yS\);)369 b Fw(\(see)g Fn(x)p Fw(6.2.2\).)p
+Black 4000 34683 a(15.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx(Deallo)35 b(cate)425 b(memory)h(for)f(solution)g(v)-35
+b(ector)p Black Black 4000 37015 a Fw(16.)p Black 493
+w Fx(Deallo)35 b(cate)425 b(memory)h(for)f(sensitivit)-35
+b(y)423 b(v)-35 b(ectors)5906 38897 y Fw(Up)31 b(on)370
+b(completion)i(of)d(the)h(in)-31 b(tegration,)372 b(deallo)31
+b(cate)372 b(memory)e(for)f(the)h(v)-31 b(ectors)369
+b Fu(yS0)p Fw(:)5906 40779 y([)p Fx(S)p Fw(])i Fu(N)p
+8249 40779 V 418 w(VDestroyVectorArray)p 19706 40779
+V 421 w(Serial\(yS0,)583 b(Ns\);)5906 42661 y Fw([)p
+Fx(P)p Fw(])371 b Fu(N)p 8412 42661 V 418 w(VDestroyVectorArray)p
+19869 42661 V 421 w(Parallel\(yS0,)584 b(Ns\);)5906 44542
+y Fw(If)335 b Fu(yS)g Fw(w)-31 b(as)335 b(created)g(from)h
+Fu(realtype)g Fw(arra)-31 b(ys)334 b Fu(yS)p 26509 44542
+V 419 w(i)p Fw(,)342 b(it)336 b(is)f(the)g(user's)f(resp)31
+b(onsibilit)-31 b(y)336 b(to)g(also)f(free)g(the)g(space)5906
+45871 y(for)370 b(the)f(arra)-31 b(ys)369 b Fu(yS0)p
+14653 45871 V 419 w(i)p Fw(.)p Black 4000 48202 a(17.)p
+Black 493 w Fx(F)-106 b(ree)426 b(user)f(data)g(structure)p
+Black 4000 50534 a Fw(18.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx(F)-106 b(ree)426 b(solv)-35 b(er)425 b(memory)p
+Black Black 4000 52866 a Fw(19.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx(F)-106 b(ree)426 b(v)-35 b(ector)425 b(sp)35
+b(eci\257cation)425 b(memory)p Black 4000 56545 a Fr(6.2)1793
+b(User-callable)599 b(routines)g(for)f(forw)-50 b(ard)598
+b(sensitivit)-50 b(y)602 b(analysis)4000 58977 y Fw(This)407
+b(section)h(describ)31 b(es)406 b(the)h Fs(cv)-25 b(odes)408
+b Fw(functions,)418 b(additional)410 b(to)e(those)f(presen)-31
+b(ted)407 b(in)g Fn(x)p Fw(5.5,)418 b(that)409 b(are)e(called)4000
+60305 y(b)-31 b(y)369 b(the)h(user)e(to)i(setup)f(and)g(solv)-31
+b(e)371 b(a)e(forw)-31 b(ard)370 b(sensitivit)-31 b(y)371
+b(problem.)4000 63422 y Fo(6.2.1)1495 b(F)-125 b(orw)-42
+b(ard)502 b(sensitivit)-42 b(y)499 b(initialization)i(and)e(deallo)42
+b(cation)500 b(functions)4000 65472 y Fw(Activ)-61 b(ation)334
+b(of)d(forw)-31 b(ard)332 b(sensitivit)-31 b(y)333 b(computation)h(is)c
+(done)i(b)-31 b(y)331 b(calling)i Fu(CVodeSensMalloc)p
+Fw(.)482 b(The)331 b(form)g(of)h(the)4000 66801 y(call)370
+b(to)g(this)g(routine)g(is)f(as)g(follo)-31 b(ws:)p 4000
+68688 9470 45 v 4000 70029 45 1341 v 4376 69697 a Fu(CVodeSensMalloc)p
+13426 70029 V 4000 70073 9470 45 v Black 4000 71429 a
+Fw(Call)p Black 4848 w Fu(flag)582 b(=)f(CVodeSensMalloc\(cvode)p
+27153 71429 349 45 v 422 w(mem,)g(Ns,)h(ism,)g(yS0\);)p
+Black 4000 73207 a Fw(Description)p Black 1286 w(The)488
+b(routine)g Fu(CVodeSensMalloc)i Fw(activ)-61 b(ates)489
+b(forw)-31 b(ard)489 b(sensitivit)-31 b(y)490 b(computations)g(and)e
+(allo-)10814 74535 y(cates)370 b(in)-31 b(ternal)370
+b(memory)g(related)g(to)g(sensitivit)-31 b(y)372 b(calculations.)p
+Black 4000 76314 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 76314 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))330 b(p)31 b(oin)-31 b(ter)331
+b(to)f(the)g Fs(cv)-25 b(odes)330 b Fw(memory)h(blo)31
+b(c)-31 b(k)331 b(returned)e(b)-31 b(y)330 b Fu(CVodeCreate)p
+Fw(.)p Black 10814 77867 a Fu(Ns)p Black 4459 w Fw(\()p
+Fu(int)p Fw(\))370 b(the)g(n)-31 b(um)g(b)31 b(er)369
+b(of)h(sensitivities)h(to)f(b)31 b(e)368 b(computed.)p
+Black Black eop
+%%Page: 86 96
+86 95 bop Black 0 2701 a Fx(86)19434 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(F)-106 b(orw)-35 b(ard)426 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black Black 6814
+6974 a Fu(ism)p Black 3878 w Fw(\()p Fu(int)p Fw(\))534
+b(a)g(\260ag)f(used)g(to)g(select)h(the)f(sensitivit)-31
+b(y)535 b(solution)g(metho)31 b(d)534 b(and)f(can)g(b)31
+b(e)12435 8302 y Fu(CV)p 13667 8302 349 45 v 419 w(SIMULTANEOUS)p
+Fw(,)371 b Fu(CV)p 22898 8302 V 419 w(STAGGERED)p Fw(,)g(or)e
+Fu(CV)p 31742 8302 V 418 w(STAGGERED1)p Fw(:)p Black
+13398 10079 a Fn(\262)p Black 554 w Fw(In)361 b(the)h
+Fu(CV)p 19012 10079 V 419 w(SIMULTANEOUS)h Fw(approac)-31
+b(h,)365 b(the)d(state)g(and)g(sensitivit)-31 b(y)364
+b(v)-61 b(ariables)14505 11407 y(are)338 b(corrected)f(at)i(the)f(same)
+g(time.)483 b(If)338 b Fu(CV)p 32281 11407 V 418 w(NEWTON)h
+Fw(w)-31 b(as)338 b(selected)g(as)g(the)g(non-)14505
+12736 y(linear)314 b(system)g(solution)h(metho)31 b(d,)326
+b(this)313 b(amoun)-31 b(ts)315 b(to)f(p)31 b(erforming)314
+b(a)g(mo)31 b(di\257ed)14505 14064 y(Newton)371 b(iteration)g(on)f(the)
+f(com)-31 b(bined)371 b(nonlinear)f(system;)p Black 13398
+15616 a Fn(\262)p Black 554 w Fw(In)h(the)i Fu(CV)p 19033
+15616 V 418 w(STAGGERED)g Fw(approac)-31 b(h,)374 b(the)e(correction)h
+(step)f(for)g(the)g(sensitivit)-31 b(y)14505 16945 y(v)-61
+b(ariables)301 b(tak)-31 b(es)302 b(place)f(at)g(the)g(same)g(time)h
+(for)f(all)g(sensitivit)-31 b(y)303 b(equations,)317
+b(but)14505 18273 y(only)379 b(after)g(the)f(correction)h(of)g(the)f
+(state)h(v)-61 b(ariables)379 b(has)f(con)-31 b(v)g(erged)379
+b(and)g(the)14505 19602 y(state)370 b(v)-61 b(ariables)370
+b(ha)-31 b(v)g(e)370 b(passed)f(the)g(lo)31 b(cal)371
+b(error)d(test;)p Black 13398 21154 a Fn(\262)p Black
+554 w Fw(In)346 b(the)g Fu(CV)p 18981 21154 V 418 w(STAGGERED1)i
+Fw(approac)-31 b(h,)352 b(all)347 b(corrections)f(are)g(done)g(sequen)
+-31 b(tially)-92 b(,)14505 22482 y(\257rst)387 b(for)g(the)h(state)g(v)
+-61 b(ariables)388 b(and)f(then)g(for)h(the)f(sensitivit)-31
+b(y)390 b(v)-61 b(ariables,)393 b(one)14505 23811 y(parameter)284
+b(at)g(a)f(time.)466 b(If)283 b(the)g(sensitivit)-31
+b(y)285 b(v)-61 b(ariables)284 b(are)f(not)h(included)g(in)g(the)14505
+25139 y(error)357 b(con)-31 b(trol,)363 b(this)c(approac)-31
+b(h)359 b(is)f(equiv)-61 b(alen)-31 b(t)360 b(to)g Fu(CV)p
+37062 25139 V 418 w(STAGGERED)p Fw(.)g(Note)g(that)14505
+26467 y(the)493 b Fu(CV)p 17767 26467 V 419 w(STAGGERED1)h
+Fw(approac)-31 b(h)494 b(can)f(b)31 b(e)492 b(used)h(only)g(if)h(the)f
+(user-pro)-31 b(vided)14505 27796 y(sensitivit)g(y)277
+b(righ)-31 b(t-hand)277 b(side)d(function)j(is)d(of)i(t)-31
+b(yp)31 b(e)275 b Fu(CVSensRhs1Fn)i Fw(\(see)e Fn(x)p
+Fw(6.3\).)p Black 6814 29572 a Fu(yS0)p Black 3878 w
+Fw(\()p Fu(N)p 13516 29572 V 419 w(Vector)582 b(*)p Fw(\))505
+b(a)h(p)31 b(oin)-31 b(ter)505 b(to)h(an)f(arra)-31 b(y)505
+b(of)g Fu(Ns)g Fw(v)-31 b(ectors)505 b(con)-31 b(taining)508
+b(the)d(initial)12435 30901 y(v)-61 b(alues)369 b(of)h(the)f
+(sensitivities.)p Black 0 32677 a(Return)g(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(will)h(b)31
+b(e)369 b(one)g(of)h(the)f(follo)-31 b(wing:)p Black
+6814 34454 a Fu(CV)p 8046 34454 V 419 w(SUCCESS)p Black
+1554 w Fw(The)369 b(call)i(to)f Fu(CVodeSensMalloc)h
+Fw(w)-31 b(as)370 b(successful.)p Black 6814 36007 a
+Fu(CV)p 8046 36007 V 419 w(MEM)p 10208 36007 V 419 w(NULL)p
+Black 1135 w Fw(The)363 b Fs(cv)-25 b(odes)364 b Fw(memory)g(blo)31
+b(c)-31 b(k)364 b(w)-31 b(as)364 b(not)g(initialized)i(through)e(a)f
+(previous)h(call)14016 37335 y(to)370 b Fu(CVodeCreate)p
+Fw(.)p Black 6814 38888 a Fu(CV)p 8046 38888 V 419 w(MEM)p
+10208 38888 V 419 w(FAIL)p Black 1135 w Fw(A)f(memory)h(allo)31
+b(cation)373 b(request)c(has)g(failed.)p Black 6814 40440
+a Fu(CV)p 8046 40440 V 419 w(ILL)p 10208 40440 V 419
+w(INPUT)p Black 554 w Fw(An)g(input)h(argumen)-31 b(t)371
+b(to)e Fu(CVodeSensMalloc)j Fw(has)d(an)g(illegal)j(v)-61
+b(alue.)p Black 0 42217 a(Notes)p Black 4072 w(If)314
+b(an)h(error)e(o)31 b(ccured,)325 b Fu(CVodeSensMalloc)316
+b Fw(also)f(prin)-31 b(ts)315 b(an)f(error)g(message)g(to)h(the)g
+(\257le)f(sp)31 b(eci\257ed)6814 43545 y(b)-31 b(y)369
+b(the)h(optional)i(input)e Fu(errfp)p Fw(.)0 45276 y(In)500
+b(terms)h(of)g(the)g(problem)g(size)g Fl(N)121 b Fw(,)534
+b(n)-31 b(um)g(b)31 b(er)500 b(of)h(sensitivit)-31 b(y)503
+b(v)-31 b(ectors)501 b Fl(N)32417 45442 y Fj(s)32891
+45276 y Fw(,)534 b(and)501 b(maxim)-31 b(um)503 b(metho)31
+b(d)501 b(order)0 46605 y Fu(maxord)p Fw(,)370 b(the)g(size)f(of)h(the)
+f(real)h(w)-31 b(orkspace)370 b(is)f(increased)g(b)-31
+b(y:)p Black 1660 48827 a Fn(\262)p Black 554 w Fw(Base)370
+b(v)-61 b(alue:)493 b Fu(lenrw)369 b Fw(=)g Fu(lenrw)h
+Fw(+)f(\()p Fu(maxord+5)p Fw(\))p Fl(N)24099 48993 y
+Fj(s)24575 48827 y Fl(N)p Black 1660 51052 a Fn(\262)p
+Black 554 w Fw(With)h Fu(itolS)582 b(=)f(CV)p 11508 51052
+V 419 w(SV)369 b Fw(\(see)g Fu(CVodeSetSensTolerances)p
+Fw(\):)497 b Fu(lenrw)369 b Fw(=)g Fu(lenrw)h Fw(+)p
+Fl(N)39153 51218 y Fj(s)39627 51052 y Fl(N)0 53274 y
+Fw(the)f(size)h(of)f(the)h(in)-31 b(teger)370 b(w)-31
+b(orkspace)370 b(is)f(increased)g(b)-31 b(y:)p Black
+1660 55496 a Fn(\262)p Black 554 w Fw(Base)370 b(v)-61
+b(alue:)493 b Fu(leniw)369 b Fw(=)g Fu(leniw)h Fw(+)f(\()p
+Fu(maxord+5)p Fw(\))p Fl(N)24099 55662 y Fj(s)24575 55496
+y Fl(N)p Black 1660 57721 a Fn(\262)p Black 554 w Fw(With)h
+Fu(itolS)582 b(=)f(CV)p 11508 57721 V 419 w(SV)p Fw(:)370
+b Fu(leniw)f Fw(=)g Fu(leniw)h Fw(+)p Fl(N)23225 57887
+y Fj(s)23699 57721 y Fl(N)1660 59944 y Fw(The)314 b(routine)h
+Fu(CVodeSensReInit)p Fw(,)327 b(useful)313 b(during)h(the)g(solution)h
+(of)f(a)g(sequence)f(of)i(problems)e(of)i(same)e(size,)0
+61272 y(reinitializes)306 b(the)d(sensitivit)-31 b(y-related)307
+b(in)-31 b(ternal)305 b(memory)f(and)g(m)-31 b(ust)304
+b(follo)-31 b(w)306 b(a)e(call)g(to)h Fu(CVodeSensMalloc)g
+Fw(\(and)0 62600 y(ma)-31 b(yb)31 b(e)326 b(a)f(call)h(to)f
+Fu(CVodeReInit)p Fw(\).)480 b(The)325 b(n)-31 b(um)g(b)31
+b(er)325 b Fu(Ns)f Fw(of)i(sensitivities)g(is)f(assumed)g(to)g(b)31
+b(e)324 b(unc)-31 b(hanged)326 b(since)f(the)0 63929
+y(call)370 b(to)g Fu(CVodeSensMalloc)p Fw(.)495 b(The)370
+b(call)g(to)g(the)f Fu(CVodeSensReInit)j Fw(function)e(has)f(the)h
+(form:)p 0 65812 9470 45 v 0 67153 45 1341 v 376 66821
+a Fu(CVodeSensReInit)p 9426 67153 V 0 67197 9470 45 v
+Black 0 68552 a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVodeSensReInit\(cvode)p 23153 68552 349 45 v 422 w(mem,)g(ism,)h
+(yS0\);)p Black 0 70328 a Fw(Description)p Black 1286
+w(The)369 b(routine)h Fu(CVodeSensReInit)i Fw(reinitializes)f(forw)-31
+b(ard)370 b(sensitivit)-31 b(y)371 b(computations.)p
+Black 0 72105 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 72105 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))330 b(p)31 b(oin)-31 b(ter)331
+b(to)f(the)g Fs(cv)-25 b(odes)330 b Fw(memory)h(blo)31
+b(c)-31 b(k)331 b(returned)e(b)-31 b(y)330 b Fu(CVodeCreate)p
+Fw(.)p Black 6814 73658 a Fu(ism)p Black 3878 w Fw(\()p
+Fu(int)p Fw(\))534 b(a)g(\260ag)f(used)g(to)g(select)h(the)f
+(sensitivit)-31 b(y)535 b(solution)g(metho)31 b(d)534
+b(and)f(can)g(b)31 b(e)12435 74986 y Fu(CV)p 13667 74986
+V 419 w(SIMULTANEOUS)p Fw(,)371 b Fu(CV)p 22898 74986
+V 419 w(STAGGERED)p Fw(,)g(or)e Fu(CV)p 31742 74986 V
+418 w(STAGGERED1)p Fw(.)p Black 6814 76539 a Fu(yS0)p
+Black 3878 w Fw(\()p Fu(N)p 13516 76539 V 419 w(Vector)582
+b(*)p Fw(\))382 b(a)f(p)31 b(oin)-31 b(ter)382 b(to)f(an)h(arra)-31
+b(y)381 b(of)h Fu(Ns)f Fw(v)-61 b(ariables)381 b(of)h(t)-31
+b(yp)31 b(e)381 b Fu(N)p 41754 76539 V 419 w(Vector)h
+Fw(con-)12435 77867 y(taining)371 b(the)f(initial)i(v)-61
+b(alues)369 b(of)h(the)f(sensitivities.)p Black Black
+eop
+%%Page: 87 97
+87 96 bop Black 4000 2701 a Fx(6.2)425 b(User-callable)g(routines)h
+(for)f(forw)-35 b(ard)425 b(sensitivit)-35 b(y)424 b(analysis)15059
+b(87)p 4000 3144 48001 45 v Black Black 4000 6974 a Fw(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(will)h(b)31 b(e)369 b(one)g(of)h(the)f(follo)-31
+b(wing:)p Black 10814 8879 a Fu(CV)p 12046 8879 349 45
+v 419 w(SUCCESS)p Black 1554 w Fw(The)369 b(call)i(to)f
+Fu(CVodeReInit)g Fw(w)-31 b(as)370 b(successful.)p Black
+10814 10496 a Fu(CV)p 12046 10496 V 419 w(MEM)p 14208
+10496 V 419 w(NULL)p Black 1135 w Fw(The)363 b Fs(cv)-25
+b(odes)364 b Fw(memory)g(blo)31 b(c)-31 b(k)364 b(w)-31
+b(as)364 b(not)g(initialized)i(through)e(a)f(previous)h(call)18016
+11824 y(to)370 b Fu(CVodeCreate)p Fw(.)p Black 10814
+13441 a Fu(CV)p 12046 13441 V 419 w(NO)p 13627 13441
+V 418 w(SENSI)p Black 1136 w Fw(Memory)427 b(space)h(for)f(sensitivit)
+-31 b(y)429 b(in)-31 b(tegration)431 b(w)-31 b(as)428
+b(not)g(allo)31 b(cated)429 b(through)g(a)18016 14769
+y(previous)369 b(call)i(to)e Fu(CVodeSensMalloc)p Fw(.)p
+Black 10814 16386 a Fu(CV)p 12046 16386 V 419 w(ILL)p
+14208 16386 V 419 w(INPUT)p Black 554 w Fw(An)g(input)h(argumen)-31
+b(t)371 b(to)e Fu(CVodeSensReInit)j Fw(has)d(an)g(illegal)j(v)-61
+b(alue.)p Black 10814 18003 a Fu(CV)p 12046 18003 V 419
+w(MEM)p 14208 18003 V 419 w(FAIL)p Black 1135 w Fw(A)369
+b(memory)h(allo)31 b(cation)373 b(request)c(has)g(failed.)p
+Black 4000 19908 a(Notes)p Black 4072 w(All)h(argumen)-31
+b(ts)370 b(of)g Fu(CVodeSensReInit)h Fw(are)e(the)h(same)f(as)g(those)h
+(of)g Fu(CVodeSensMalloc)p Fw(.)10814 21814 y(If)314
+b(an)h(error)e(o)31 b(ccured,)325 b Fu(CVodeSensReInit)316
+b Fw(also)f(prin)-31 b(ts)315 b(an)f(error)g(message)g(to)h(the)g
+(\257le)f(sp)31 b(eci\257ed)10814 23142 y(b)-31 b(y)369
+b(the)h(optional)i(input)e Fu(errfp)p Fw(.)4000 24937
+y(T)-92 b(o)247 b(deallo)31 b(cate)248 b(all)g(forw)-31
+b(ard)247 b(sensitivit)-31 b(y-related)249 b(memory)e(\(allo)31
+b(cated)249 b(through)e(a)g(preious)f(call)h(to)g Fu(CVodeSensMalloc)p
+Fw(\),)4000 26266 y(the)369 b(user)g(m)-31 b(ust)369
+b(call)p 4000 28490 8308 45 v 4000 29831 45 1341 v 4376
+29499 a Fu(CVodeSensFree)p 12263 29831 V 4000 29875 8308
+45 v Black 4000 31294 a Fw(Call)p Black 4848 w Fu(CVodeSensFree\(cvode)
+p 21923 31294 349 45 v 421 w(mem\);)p Black 4000 33199
+a Fw(Description)p Black 1286 w(The)353 b(function)h
+Fu(CVodeSensFree)g Fw(frees)e(the)h(memory)h(allo)31
+b(cated)355 b(for)e(forw)-31 b(ard)353 b(sensitivit)-31
+b(y)355 b(com-)10814 34528 y(putaions)370 b(b)-31 b(y)370
+b(a)f(previous)h(call)g(to)g Fu(CVodeSensMalloc)p Fw(.)p
+Black 4000 36433 a(Argumen)-31 b(ts)p Black 1517 w(The)369
+b(argumen)-31 b(t)371 b(is)e(the)h(p)31 b(oin)-31 b(ter)370
+b(to)f(the)h Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k)370 b(\(of)g(t)-31 b(yp)31 b(e)370 b Fu(void)581
+b(*)p Fw(\).)p Black 4000 38338 a(Return)369 b(v)-61
+b(alue)p Black 554 w(The)369 b(function)i Fu(CVodeSensFree)g
+Fw(has)e(no)g(return)g(v)-61 b(alue.)p Black 4000 40244
+a(Notes)p Black 4072 w(After)435 b(a)f(call)i(to)f Fu(CVodeSensFree)p
+Fw(,)453 b(forw)-31 b(ard)435 b(sensitivit)-31 b(y)437
+b(computations)g(can)d(b)31 b(e)434 b(reactiv)-61 b(ated)10814
+41572 y(only)370 b(b)-31 b(y)370 b(calling)h(again)g
+Fu(CVodeSensMalloc)p Fw(.)4000 43367 y(T)-92 b(o)538
+b(activ)-61 b(ate)540 b(and)f(deactiv)-61 b(ate)539 b(forw)-31
+b(ard)539 b(sensitivit)-31 b(y)540 b(calculations)h(for)d(successiv)-31
+b(e)538 b Fs(cv)-25 b(odes)538 b Fw(runs,)580 b(without)4000
+44696 y(ha)-31 b(ving)371 b(to)f(allo)31 b(cate)371 b(and)f(deallo)31
+b(cate)371 b(memory)-92 b(,)371 b(the)e(follo)-31 b(wing)373
+b(function)e(is)e(pro)-31 b(vided:)p 4000 46920 9470
+45 v 4000 48507 45 1587 v 4376 47929 a Fu(CVodeSensToggle)p
+13426 48507 V 4000 48551 9470 45 v Black 4000 49898 a
+Fw(Call)p Black 4848 w Fu(CVodeSensToggle\(cvode)p 23085
+49898 349 45 v 422 w(mem,)581 b(sensi\);)p Black 4000
+51803 a Fw(Description)p Black 1286 w(The)473 b(function)g
+Fu(CVodeSensToggle)i Fw(activ)-61 b(ates)473 b(or)g(deactiv)-61
+b(ates)473 b(forw)-31 b(ard)474 b(sensitivit)-31 b(y)474
+b(calcula-)10814 53131 y(tions.)494 b(It)369 b(do)31
+b(es)369 b Fq(not)f Fw(deallo)31 b(cate)372 b(sensitivit)-31
+b(y-related)372 b(memory)-92 b(.)p Black 4000 55036 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 55036 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(memory)h(previously)g(allo)31
+b(cated)372 b(b)-31 b(y)370 b Fu(CVodeMalloc)p Fw(.)p
+Black 10814 56653 a Fu(sensi)p Black 2716 w Fw(\()p Fu(booleantype)p
+Fw(\))391 b(\260ag)f(indicating)h(activ)-61 b(ation)392
+b(\()p Fu(sensi)582 b(=)g(TRUE)p Fw(\))389 b(or)g(deactiv)-61
+b(ation)16435 57982 y(\()p Fu(sensi)582 b(=)g(FALSE)p
+Fw(\))370 b(of)g(sensitivit)-31 b(y)371 b(computations.)p
+Black 4000 59887 a(Return)e(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(of)h
+Fu(CVodeSensToggle)h Fw(is)e(one)h(of:)p Black 10814
+61792 a Fu(CV)p 12046 61792 V 419 w(SUCCESS)p Black 973
+w(CVodeGetSens)g Fw(w)-31 b(as)370 b(successful.)p Black
+10814 63409 a Fu(CV)p 12046 63409 V 419 w(MEM)p 14208
+63409 V 419 w(NULL)p Black 554 w(cvode)p 20410 63409
+V 419 w(mem)f Fw(w)-31 b(as)370 b Fu(NULL)p Fw(.)p Black
+10814 65026 a Fu(CV)p 12046 65026 V 419 w(NO)p 13627
+65026 V 418 w(SENS)p Black 1136 w Fw(F)-92 b(orw)-31
+b(ard)369 b(sensitivit)-31 b(y)371 b(analysis)g(w)-31
+b(as)369 b(not)h(initialized.)p Black 4000 66931 a(Notes)p
+Black 4072 w(It)313 b(is)h(allo)-31 b(w)g(ed)316 b(to)e(set)f
+Fu(sensi)582 b(=)g(TRUE)313 b Fw(only)i(if)f Fu(CVodeSensMalloc)h
+Fw(has)e(b)31 b(een)313 b(previously)i(called)10814 68259
+y(to)370 b(alo)31 b(cate)371 b(sensitivit)-31 b(y-related)372
+b(memory)-92 b(.)4000 71714 y Fo(6.2.2)1495 b(F)-125
+b(orw)-42 b(ard)502 b(sensitivit)-42 b(y)499 b(extraction)h(functions)
+4000 73882 y Fw(If)344 b(forw)-31 b(ard)345 b(sensitivit)-31
+b(y)346 b(computations)h(ha)-31 b(v)g(e)345 b(b)31 b(een)343
+b(initialized)k(b)-31 b(y)345 b(a)f(call)h(to)g Fu(CVodeSensMalloc)p
+Fw(,)352 b(or)344 b(reinitial-)4000 75210 y(ized)452
+b(b)-31 b(y)451 b(a)h(call)g(to)h Fu(CVSensReInit)p Fw(,)474
+b(then)451 b Fs(cv)-25 b(odes)452 b Fw(computes)g(b)31
+b(oth)452 b(a)g(solution)h(and)e(sensitivities)i(at)g(time)4000
+76539 y Fu(t)p Fw(.)604 b(Ho)-31 b(w)g(ev)g(er,)418 b
+Fu(CVode)407 b Fw(will)h(still)g(return)d(only)j(the)e(solution)i
+Fl(y)446 b Fw(in)407 b Fu(y)p Fw(.)604 b(Solution)408
+b(sensitivities)h(can)d(b)31 b(e)406 b(obtained)4000
+77867 y(through)370 b(one)f(of)h(the)g(follo)-31 b(wing)372
+b(functions:)p Black Black eop
+%%Page: 88 98
+88 97 bop Black 0 2701 a Fx(88)19434 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(F)-106 b(orw)-35 b(ard)426 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black 0 5965 7727
+45 v 0 7306 45 1341 v 376 6974 a Fu(CVodeGetSens)p 7682
+7306 V 0 7350 7727 45 v Black 0 8713 a Fw(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVodeGetSens\(cvode)p 21410
+8713 349 45 v 421 w(mem,)h(t,)f(yS\);)p Black 0 10504
+a Fw(Description)p Black 1286 w(The)377 b(function)i
+Fu(CVodeGetSens)g Fw(returns)d(the)i(sensitivit)-31 b(y)379
+b(solution)g(v)-31 b(ectors)378 b(after)g(a)f(successful)6814
+11833 y(return)368 b(from)i Fu(CVode)p Fw(.)p Black 0
+13624 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+9789 13624 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(memory)h
+(previously)g(allo)31 b(cated)372 b(b)-31 b(y)370 b Fu(CVodeMalloc)p
+Fw(.)p Black 6814 15184 a Fu(t)p Black 5040 w Fw(\()p
+Fu(realtype)p Fw(\))279 b(sp)31 b(eci\257es)276 b(the)i(time)g(at)g
+(whic)-31 b(h)278 b(sensitivit)-31 b(y)279 b(information)h(is)d
+(requested.)12435 16513 y(The)330 b(time)h Fu(t)f Fw(m)-31
+b(ust)331 b(fall)g(within)h(the)e(in)-31 b(terv)-61 b(al)332
+b(de\257ned)d(b)-31 b(y)331 b(the)f(last)h(successful)e(step)12435
+17841 y(tak)-31 b(en)370 b(b)-31 b(y)370 b Fs(cv)-25
+b(odes)p Fw(.)p Black 6814 19401 a Fu(yS)p Black 4459
+w Fw(\()p Fu(N)p 13516 19401 V 419 w(Vector)582 b(*)p
+Fw(\))370 b(the)f(computed)i(forw)-31 b(ard)370 b(sensitivit)-31
+b(y)371 b(v)-31 b(ectors.)p Black 0 21193 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(of)h Fu(CVodeGetSens)h Fw(is)e(one)g(of:)p
+Black 6814 22985 a Fu(CV)p 8046 22985 V 419 w(SUCCESS)p
+Black 973 w(CVodeGetSens)h Fw(w)-31 b(as)370 b(successful.)p
+Black 6814 24545 a Fu(CV)p 8046 24545 V 419 w(MEM)p 10208
+24545 V 419 w(NULL)p Black 554 w(cvode)p 16410 24545
+V 419 w(mem)f Fw(w)-31 b(as)370 b Fu(NULL)p Fw(.)p Black
+6814 26105 a Fu(CV)p 8046 26105 V 419 w(NO)p 9627 26105
+V 418 w(SENS)p Black 1136 w Fw(F)-92 b(orw)-31 b(ard)369
+b(sensitivit)-31 b(y)371 b(analysis)g(w)-31 b(as)369
+b(not)h(initialized.)p Black 6814 27665 a Fu(CV)p 8046
+27665 V 419 w(BAD)p 10208 27665 V 419 w(DKY)p Black 1135
+w(yQ)f Fw(is)g Fu(NULL)p Fw(.)p Black 6814 29225 a Fu(CV)p
+8046 29225 V 419 w(BAD)p 10208 29225 V 419 w(T)p Black
+2297 w Fw(The)g(time)h Fu(t)g Fw(is)f(not)h(in)f(the)h(allo)-31
+b(w)g(ed)371 b(range.)p Black 0 31017 a(Notes)p Black
+4072 w(In)e(case)g(of)g(an)h(error)e(return,)h(an)g(error)g(message)g
+(is)g(also)h(prin)-31 b(ted.)0 32755 y(The)402 b(function)i
+Fu(CVodeGetSensDky)g Fw(computes)e(the)h Fu(k)p Fw(-th)f(deriv)-61
+b(ativ)-31 b(es)403 b(of)g(the)f(in)-31 b(terp)31 b(olating)405
+b(p)31 b(olynomials)405 b(for)0 34084 y(the)422 b(sensitivit)-31
+b(y)425 b(v)-61 b(ariables)423 b(at)g(time)g Fu(t)p Fw(.)652
+b(This)422 b(function)i(is)e(called)h(b)-31 b(y)423 b
+Fu(CVodeGetSens)h Fw(with)f Fu(k)f Fw(=)396 b(0,)436
+b(but)423 b(ma)-31 b(y)0 35412 y(also)370 b(b)31 b(e)369
+b(called)h(directly)g(b)-31 b(y)370 b(the)f(user.)p 0
+37336 9470 45 v 0 38922 45 1587 v 376 38344 a Fu(CVodeGetSensDky)p
+9426 38922 V 0 38966 9470 45 v Black 0 40256 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetSensDky\(cvode)p
+23153 40256 349 45 v 422 w(mem,)g(t,)h(k,)f(dkyS\);)p
+Black 0 42048 a Fw(Description)p Black 1286 w(The)384
+b(function)i Fu(CVodeGetSensDky)g Fw(returns)d(deriv)-61
+b(ativ)-31 b(es)385 b(of)f(the)g(sensitivit)-31 b(y)387
+b(solution)e(v)-31 b(ectors)6814 43376 y(after)370 b(a)f(successful)g
+(return)f(from)i Fu(CVode)p Fw(.)p Black 0 45168 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 45168 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(memory)h(previously)g(allo)31
+b(cated)372 b(b)-31 b(y)370 b Fu(CVodeMalloc)p Fw(.)p
+Black 6814 46728 a Fu(t)p Black 5040 w Fw(\()p Fu(realtype)p
+Fw(\))279 b(sp)31 b(eci\257es)276 b(the)i(time)g(at)g(whic)-31
+b(h)278 b(sensitivit)-31 b(y)279 b(information)h(is)d(requested.)12435
+48057 y(The)330 b(time)h Fu(t)f Fw(m)-31 b(ust)331 b(fall)g(within)h
+(the)e(in)-31 b(terv)-61 b(al)332 b(de\257ned)d(b)-31
+b(y)331 b(the)f(last)h(successful)e(step)12435 49385
+y(tak)-31 b(en)370 b(b)-31 b(y)370 b Fs(cv)-25 b(odes)p
+Fw(.)p Black 6814 50945 a Fu(k)p Black 5040 w Fw(\()p
+Fu(int)p Fw(\))370 b(order)f(of)h(deriv)-61 b(ativ)-31
+b(es.)p Black 6814 52505 a Fu(dkyS)p Black 3297 w Fw(\()p
+Fu(N)p 13516 52505 V 419 w(Vector)582 b(*)p Fw(\))418
+b(the)h(v)-31 b(ectors)418 b(con)-31 b(taining)421 b(the)d(deriv)-61
+b(ativ)-31 b(es.)640 b(The)418 b(space)f(for)h Fu(dkyS)12435
+53833 y Fw(m)-31 b(ust)370 b(b)31 b(e)369 b(allo)31 b(cated)371
+b(b)-31 b(y)370 b(the)f(user.)p Black 0 55625 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(of)h Fu(CVodeGetSensDky)h Fw(is)e(one)h(of:)p
+Black 6814 57417 a Fu(CV)p 8046 57417 V 419 w(SUCCESS)p
+Black 973 w(CVodeGetSensDky)h Fw(succeeded.)p Black 6814
+58977 a Fu(CV)p 8046 58977 V 419 w(MEM)p 10208 58977
+V 419 w(NULL)p Black 554 w Fw(The)e(p)31 b(oin)-31 b(ter)370
+b(to)g Fu(cvode)p 23854 58977 V 419 w(mem)g Fw(w)-31
+b(as)369 b Fu(NULL)p Fw(.)p Black 6814 60537 a Fu(CV)p
+8046 60537 V 419 w(NO)p 9627 60537 V 418 w(SENS)p Black
+1136 w Fw(F)-92 b(orw)-31 b(ard)369 b(sensitivit)-31
+b(y)371 b(analysis)g(w)-31 b(as)369 b(not)h(initialized.)p
+Black 6814 62097 a Fu(CV)p 8046 62097 V 419 w(BAD)p 10208
+62097 V 419 w(DKY)p Black 1135 w Fw(One)f(of)g(the)h(v)-31
+b(ectors)369 b Fu(dkyS)h Fw(is)f Fu(NULL)p Fw(.)p Black
+6814 63657 a Fu(CV)p 8046 63657 V 419 w(BAD)p 10208 63657
+V 419 w(K)p Black 2297 w(k)g Fw(is)g(not)h(in)f(the)h(range)f(0)p
+Fl(;)184 b Fw(1)p Fl(;)g(:::;)g(q)27674 63823 y Fj(u)28258
+63657 y Fw(.)p Black 6814 65217 a Fu(CV)p 8046 65217
+V 419 w(BAD)p 10208 65217 V 419 w(T)p Black 2297 w Fw(The)369
+b(time)h Fu(t)g Fw(is)f(not)h(in)f(the)h(allo)-31 b(w)g(ed)371
+b(range.)p Black 0 67009 a(Notes)p Black 4072 w(In)e(case)g(of)g(an)h
+(error)e(return,)h(an)g(error)g(message)g(is)g(also)h(prin)-31
+b(ted.)0 68748 y(F)-92 b(orw)-31 b(ard)496 b(sensitivit)-31
+b(y)497 b(solution)h(v)-31 b(ectors)496 b(can)f(also)i(b)31
+b(e)495 b(extracted)h(separately)h(for)f(eac)-31 b(h)496
+b(parameter)g(in)g(turn)0 70076 y(through)370 b(the)f(functions)i
+Fu(CVodeGetSens1)g Fw(and)e Fu(CVodeGetSensDky1)p Fw(,)j(de\257ned)d
+(as)g(follo)-31 b(ws:)p 0 72000 8308 45 v 0 73340 45
+1341 v 376 73008 a Fu(CVodeGetSens1)p 8263 73340 V 0
+73384 8308 45 v Black 0 74747 a Fw(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeGetSens1\(cvode)p 21991 74747
+349 45 v 421 w(mem,)h(t,)f(is,)h(yS\);)p Black 0 76539
+a Fw(Description)p Black 1286 w(The)346 b(function)h
+Fu(CVodeGetSens1)g Fw(returns)d(the)i Fu(is)p Fw(-th)g(sensitivit)-31
+b(y)348 b(solution)f(v)-31 b(ector)347 b(after)f(a)f(suc-)6814
+77867 y(cessful)369 b(return)f(from)i Fu(CVode)p Fw(.)p
+Black Black eop
+%%Page: 89 99
+89 98 bop Black 4000 2701 a Fx(6.2)425 b(User-callable)g(routines)h
+(for)f(forw)-35 b(ard)425 b(sensitivit)-35 b(y)424 b(analysis)15059
+b(89)p 4000 3144 48001 45 v Black Black 4000 6974 a Fw(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 6974 349 45
+v 419 w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(memory)h(previously)g(allo)31
+b(cated)372 b(b)-31 b(y)370 b Fu(CVodeMalloc)p Fw(.)p
+Black 10814 8659 a Fu(t)p Black 5040 w Fw(\()p Fu(realtype)p
+Fw(\))279 b(sp)31 b(eci\257es)276 b(the)i(time)g(at)g(whic)-31
+b(h)278 b(sensitivit)-31 b(y)279 b(information)h(is)d(requested.)16435
+9987 y(The)330 b(time)h Fu(t)f Fw(m)-31 b(ust)331 b(fall)g(within)h
+(the)e(in)-31 b(terv)-61 b(al)332 b(de\257ned)d(b)-31
+b(y)331 b(the)f(last)h(successful)e(step)16435 11315
+y(tak)-31 b(en)370 b(b)-31 b(y)370 b Fs(cv)-25 b(odes)p
+Fw(.)p Black 10814 13000 a Fu(is)p Black 4459 w Fw(\()p
+Fu(int)p Fw(\))370 b(sp)31 b(eci\257es)369 b(whic)-31
+b(h)370 b(sensitivit)-31 b(y)371 b(v)-31 b(ector)370
+b(is)f(to)h(b)31 b(e)369 b(returned)g(\(0)308 b Fn(\267)p
+Fu(is)p Fl(<)g(N)49297 13166 y Fj(s)49770 13000 y Fw(\).)p
+Black 10814 14685 a Fu(yS)p Black 4459 w Fw(\()p Fu(N)p
+17516 14685 V 419 w(Vector)p Fw(\))370 b(the)g(computed)g(forw)-31
+b(ard)370 b(sensitivit)-31 b(y)372 b(v)-31 b(ector.)p
+Black 4000 16727 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(of)h Fu(CVodeGetSens1)h Fw(is)e(one)g(of:)p Black
+10814 18768 a Fu(CV)p 12046 18768 V 419 w(SUCCESS)p Black
+973 w(CVodeGetSens1)i Fw(w)-31 b(as)369 b(successful.)p
+Black 10814 20453 a Fu(CV)p 12046 20453 V 419 w(MEM)p
+14208 20453 V 419 w(NULL)p Black 554 w(cvode)p 20410
+20453 V 419 w(mem)g Fw(w)-31 b(as)370 b Fu(NULL)p Fw(.)p
+Black 10814 22138 a Fu(CV)p 12046 22138 V 419 w(NO)p
+13627 22138 V 418 w(SENS)p Black 1136 w Fw(F)-92 b(orw)-31
+b(ard)369 b(sensitivit)-31 b(y)371 b(analysis)g(w)-31
+b(as)369 b(not)h(initialized.)p Black 10814 23823 a Fu(CV)p
+12046 23823 V 419 w(BAD)p 14208 23823 V 419 w(IS)p Black
+1716 w Fw(The)f(index)h Fu(is)f Fw(is)g(not)h(in)f(the)h(allo)-31
+b(w)g(ed)372 b(range.)p Black 10814 25508 a Fu(CV)p 12046
+25508 V 419 w(BAD)p 14208 25508 V 419 w(DKY)p Black 1135
+w(yQ)d Fw(is)g Fu(NULL)p Fw(.)p Black 10814 27193 a Fu(CV)p
+12046 27193 V 419 w(BAD)p 14208 27193 V 419 w(T)p Black
+2297 w Fw(The)g(time)h Fu(t)g Fw(is)f(not)h(in)f(the)h(allo)-31
+b(w)g(ed)371 b(range.)p Black 4000 29234 a(Notes)p Black
+4072 w(In)e(case)g(of)g(an)h(error)e(return,)h(an)g(error)g(message)g
+(is)g(also)h(prin)-31 b(ted.)p 4000 32356 10052 45 v
+4000 33942 45 1587 v 4376 33364 a Fu(CVodeGetSensDky1)p
+14007 33942 V 4000 33986 10052 45 v Black 4000 35401
+a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f(CVodeGetSensDky1\(cvode)p
+27734 35401 349 45 v 422 w(mem,)g(t,)h(k,)f(is,)h(dkyS\);)p
+Black 4000 37443 a Fw(Description)p Black 1286 w(The)441
+b(function)i Fu(CVodeGetSensDky1)h Fw(returns)c(the)h
+Fu(k)p Fw(-th)h(deriv)-61 b(ativ)-31 b(e)443 b(of)e(the)h
+Fu(is)p Fw(-th)g(sensitivit)-31 b(y)10814 38771 y(solution)371
+b(v)-31 b(ector)370 b(after)g(a)f(successful)g(return)f(from)i
+Fu(CVode)p Fw(.)p Black 4000 40812 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvode)p 13789 40812 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f(memory)h(previously)g(allo)31
+b(cated)372 b(b)-31 b(y)370 b Fu(CVodeMalloc)p Fw(.)p
+Black 10814 42497 a Fu(t)p Black 5040 w Fw(\()p Fu(realtype)p
+Fw(\))279 b(sp)31 b(eci\257es)276 b(the)i(time)g(at)g(whic)-31
+b(h)278 b(sensitivit)-31 b(y)279 b(information)h(is)d(requested.)16435
+43826 y(The)330 b(time)h Fu(t)f Fw(m)-31 b(ust)331 b(fall)g(within)h
+(the)e(in)-31 b(terv)-61 b(al)332 b(de\257ned)d(b)-31
+b(y)331 b(the)f(last)h(successful)e(step)16435 45154
+y(tak)-31 b(en)370 b(b)-31 b(y)370 b Fs(cv)-25 b(odes)p
+Fw(.)p Black 10814 46839 a Fu(k)p Black 5040 w Fw(\()p
+Fu(int)p Fw(\))370 b(order)f(of)h(deriv)-61 b(ativ)-31
+b(e.)p Black 10814 48524 a Fu(is)p Black 4459 w Fw(\()p
+Fu(int)p Fw(\))593 b(sp)31 b(eci\257es)592 b(the)g(sensitivit)-31
+b(y)595 b(deriv)-61 b(ativ)-31 b(e)593 b(v)-31 b(ector)593
+b(that)h(is)e(to)h(b)31 b(e)591 b(returned)16435 49852
+y(\(0)309 b Fn(\267)p Fu(is)p Fl(<)e(N)21807 50018 y
+Fj(s)22281 49852 y Fw(\).)p Black 10814 51537 a Fu(dkyS)p
+Black 3297 w Fw(\()p Fu(N)p 17516 51537 V 419 w(Vector)p
+Fw(\))352 b(the)f(v)-31 b(ector)352 b(con)-31 b(taining)353
+b(the)e(deriv)-61 b(ativ)-31 b(e.)488 b(The)351 b(space)g(for)g
+Fu(dkyS)g Fw(m)-31 b(ust)16435 52865 y(b)31 b(e)369 b(allo)31
+b(cated)371 b(b)-31 b(y)370 b(the)f(user.)p Black 4000
+54907 a(Return)g(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(of)h Fu(CVodeGetSensDky1)h
+Fw(is)e(one)h(of:)p Black 10814 56948 a Fu(CV)p 12046
+56948 V 419 w(SUCCESS)p Black 973 w(CVodeGetQuadDky1)h
+Fw(succeeded.)p Black 10814 58633 a Fu(CV)p 12046 58633
+V 419 w(MEM)p 14208 58633 V 419 w(NULL)p Black 554 w
+Fw(The)e(p)31 b(oin)-31 b(ter)370 b(to)g Fu(cvode)p 27854
+58633 V 419 w(mem)g Fw(w)-31 b(as)369 b Fu(NULL)p Fw(.)p
+Black 10814 60318 a Fu(CV)p 12046 60318 V 419 w(NO)p
+13627 60318 V 418 w(SENS)p Black 1136 w Fw(F)-92 b(orw)-31
+b(ard)369 b(sensitivit)-31 b(y)371 b(analysis)g(w)-31
+b(as)369 b(not)h(initialized.)p Black 10814 62003 a Fu(CV)p
+12046 62003 V 419 w(BAD)p 14208 62003 V 419 w(DKY)p Black
+1135 w Fw(One)f(of)g(the)h(v)-31 b(ectors)369 b Fu(dkyS)h
+Fw(is)f Fu(NULL)p Fw(.)p Black 10814 63688 a Fu(CV)p
+12046 63688 V 419 w(BAD)p 14208 63688 V 419 w(IS)p Black
+1716 w Fw(The)g(index)h Fu(is)f Fw(is)g(not)h(in)f(the)h(allo)-31
+b(w)g(ed)372 b(range.)p Black 10814 65373 a Fu(CV)p 12046
+65373 V 419 w(BAD)p 14208 65373 V 419 w(K)p Black 2297
+w(k)d Fw(is)g(not)h(in)f(the)h(range)f(0)p Fl(;)184 b
+Fw(1)p Fl(;)g(:::;)g(q)31674 65539 y Fj(u)32258 65373
+y Fw(.)p Black 10814 67058 a Fu(CV)p 12046 67058 V 419
+w(BAD)p 14208 67058 V 419 w(T)p Black 2297 w Fw(The)369
+b(time)h Fu(t)g Fw(is)f(not)h(in)f(the)h(allo)-31 b(w)g(ed)371
+b(range.)p Black 4000 69099 a(Notes)p Black 4072 w(In)e(case)g(of)g(an)
+h(error)e(return,)h(an)g(error)g(message)g(is)g(also)h(prin)-31
+b(ted.)4000 72915 y Fo(6.2.3)1495 b(Optional)500 b(inputs)g(for)e(forw)
+-42 b(ard)500 b(sensitivit)-42 b(y)500 b(analysis)4000
+75210 y Fw(Optional)482 b(input)f(v)-61 b(ariables)480
+b(that)i(con)-31 b(trol)481 b(the)f(computation)j(of)e(sensitivities)g
+(can)g(b)31 b(e)479 b(c)-31 b(hanged)481 b(from)g(their)4000
+76539 y(default)530 b(v)-61 b(alues)529 b(through)g(calls)h(to)f
+Fu(CVodeSetSens*)i Fw(functions.)972 b(T)-92 b(able)530
+b(6.1)g(lists)f(all)h(forw)-31 b(ard)530 b(sensitivit)-31
+b(y)4000 77867 y(optional)372 b(input)e(functions)g(in)f
+Fs(cv)-25 b(odes)370 b Fw(whic)-31 b(h)370 b(are)f(describ)31
+b(ed)368 b(in)i(detail)h(in)e(the)h(remainder)f(of)h(this)f(section.)p
+Black Black eop
+%%Page: 90 100
+90 99 bop Black 0 2701 a Fx(90)19434 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(F)-106 b(orw)-35 b(ard)426 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black Black Black
+12895 7743 a Fw(T)-92 b(able)370 b(6.1:)494 b(F)-92 b(orw)-31
+b(ard)369 b(sensitivit)-31 b(y)372 b(optional)f(inputs)p
+Black 1138 8777 45724 45 v 1116 10105 45 1329 v 1802
+9707 a Fx(Optional)425 b(input)p 23274 10105 V 13935
+w(Routine)g(name)p 39712 10105 V 8606 w(Default)p 46840
+10105 V 1138 10150 45724 45 v 1116 11478 45 1329 v 1802
+11079 a Fw(Sensitivit)-31 b(y)372 b(righ)-31 b(t-hand)371
+b(side)e(routine)p 23274 11478 V 5597 w Fu(CVodeSetSensRhsFn)p
+39712 11478 V 6561 w Fw(in)-31 b(ternal)371 b(DQ)p 46840
+11478 V 1116 12806 V 1802 12408 a(Sensitivit)-31 b(y)372
+b(righ)-31 b(t-hand)371 b(side)e(routine)p 23274 12806
+V 5597 w Fu(CVodeSetSensRhs1Fn)p 39712 12806 V 5980 w
+Fw(in)-31 b(ternal)371 b(DQ)p 46840 12806 V 1116 14135
+V 1802 13736 a(Data)f(for)g(sensitivit)-31 b(y)371 b(righ)-31
+b(t-hand)371 b(side)e(routine)p 23274 14135 V 1329 w
+Fu(CVodeSetSensFdata)p 39712 14135 V 6561 w(NULL)p 46840
+14135 V 1116 15463 V 1802 15064 a Fw(Sensitivit)-31 b(y)372
+b(scaling)f(factors)p 23274 15463 V 9837 w Fu(CVodeSetSensPbar)p
+39712 15463 V 7142 w(NULL)p 46840 15463 V 1116 16791
+V 1802 16393 a Fw(T)-31 b(yp)31 b(e)370 b(of)g(DQ)e(appro)-31
+b(ximation)p 23274 16791 V 8952 w Fu(CVodeSetSensRho)p
+39712 16791 V 7723 w Fw(0.0)p 46840 16791 V 1116 18120
+V 1802 17721 a(Error)369 b(con)-31 b(trol)371 b(strategy)p
+23274 18120 V 11544 w Fu(CVodeSetSensErrCon)p 39712 18120
+V 5980 w(FALSE)p 46840 18120 V 1116 19448 V 1802 19050
+a Fw(Sensitivit)-31 b(y)372 b(in)-31 b(tegration)372
+b(tolerances)p 23274 19448 V 6274 w Fu(CVodeSetSensTolerances)p
+39712 19448 V 3656 w Fw(estimated)p 46840 19448 V 1116
+20776 V 1802 20378 a(Maxim)-31 b(um)371 b(no.)493 b(of)370
+b(nonlinear)h(iterations)p 23274 20776 V 4251 w Fu
+(CVodeSetSensMaxNonlinIters)p 39712 20776 V 1332 w Fw(3)p
+46840 20776 V 1138 20821 45724 45 v Black 0 22904 10633
+45 v 0 24245 45 1341 v 376 23913 a Fu(CVodeSetSensRhsFn)p
+10588 24245 V 0 24289 10633 45 v Black 0 25641 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetSensRhsFn\(cvode)p
+24315 25641 349 45 v 422 w(mem,)h(fS\);)p Black 0 27355
+a Fw(Description)p Black 1286 w(The)341 b(function)h
+Fu(CVodeSetSensRhsFn)h Fw(sp)31 b(eci\257es)340 b(the)h(user-supplied)f
+Fs(C)h Fw(function)h(used)e(to)h(ev)-61 b(al-)6814 28684
+y(uate)370 b(the)f(sensitivit)-31 b(y)372 b(righ)-31
+b(t-hand)370 b(sides)f(\(for)h(all)g(parameters)g(at)g(once\).)p
+Black 0 30398 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 30398 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 31890 a Fu(fS)p Black 4459
+w Fw(\()p Fu(CVSensRhsFn)p Fw(\))372 b(user-de\257ned)c(sensitivit)-31
+b(y)371 b(righ)-31 b(t-hand)371 b(side)e(function.)p
+Black 0 33604 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black
+6814 35318 a Fu(CV)p 8046 35318 V 419 w(SUCCESS)p Black
+973 w Fw(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 6814 36811 a
+Fu(CV)p 8046 36811 V 419 w(MEM)p 10208 36811 V 419 w(NULL)p
+Black 554 w Fw(The)f Fu(cvode)p 18685 36811 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+0 39302 a(Notes)p Black 5200 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+
+
+ at endspecial Fd(!)1658 b Fw(This)530 b(t)-31 b(yp)31
+b(e)531 b(of)f(sensitivit)-31 b(y)532 b(righ)-31 b(t-hand)531
+b(side)f(function)i(is)d(not)i(compatible)h(with)g(the)6814
+40630 y Fu(CV)p 8046 40630 V 419 w(STAGGERED1)266 b Fw(sensitivit)-31
+b(y)267 b(solution)g(metho)31 b(d)265 b(\(argumen)-31
+b(t)267 b Fu(ism)e Fw(to)h Fu(CVodeSensMalloc)p Fw(\).)461
+b(The)6814 41958 y(compatibilit)-31 b(y)374 b(test)369
+b(is)g(p)31 b(erformed)369 b(at)h(the)g(\257rst)e(step)h(in)h
+Fu(CVode)p Fw(.)6814 43672 y(P)-31 b(assing)483 b Fu(fS)p
+Fw(=)p Fu(NULL)g Fw(indicates)h(using)f(the)f(default)i(in)-31
+b(ternal)484 b(di\256erence)e(quotien)-31 b(t)485 b(sensitivit)-31
+b(y)6814 45001 y(righ)g(t-hand)371 b(side)e(routine.)p
+0 47220 11214 45 v 0 48561 45 1341 v 376 48229 a Fu(CVodeSetSensRhs1Fn)
+p 11169 48561 V 0 48605 11214 45 v Black 0 49957 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetSensRhs1Fn\(cvode)p
+24896 49957 349 45 v 422 w(mem,)h(fS\);)p Black 0 51671
+a Fw(Description)p Black 1286 w(The)283 b(function)h
+Fu(CVodeSetSensRhs1Fn)h Fw(sp)31 b(eci\257es)282 b(the)g(user-supplied)
+h Fs(C)f Fw(function)i(used)e(to)h(ev)-61 b(al-)6814
+53000 y(uate)370 b(the)f(sensitivit)-31 b(y)372 b(righ)-31
+b(t-hand)370 b(sides)f(\(one)h(parameter)g(at)g(a)f(time\).)p
+Black 0 54714 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 54714 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 56206 a Fu(fS)p Black 4459
+w Fw(\()p Fu(CVSensRhs1Fn)p Fw(\))372 b(user-de\257ned)c(sensitivit)-31
+b(y)371 b(righ)-31 b(t-hand)371 b(side)e(function.)p
+Black 0 57920 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black
+6814 59634 a Fu(CV)p 8046 59634 V 419 w(SUCCESS)p Black
+973 w Fw(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 6814 61127 a
+Fu(CV)p 8046 61127 V 419 w(MEM)p 10208 61127 V 419 w(NULL)p
+Black 554 w Fw(The)f Fu(cvode)p 18685 61127 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+0 62841 a(Notes)p Black 4072 w(This)263 b(t)-31 b(yp)31
+b(e)263 b(of)h(sensitivit)-31 b(y)265 b(righ)-31 b(t-hand)264
+b(side)f(function)h Fq(must)e Fw(b)31 b(e)263 b(used)f(when)h(the)g
+Fu(CV)p 41840 62841 V 419 w(STAGGERED1)6814 64169 y Fw(sensitivit)-31
+b(y)273 b(solution)g(metho)31 b(d)271 b(is)g(selected)g(through)g
+Fu(CVodeSensMalloc)p Fw(,)293 b(but)271 b(can)g(also)h(b)31
+b(e)270 b(used)6814 65497 y(with)370 b(the)g(other)f(t)-31
+b(w)g(o)371 b(c)-31 b(hoices)370 b(\()p Fu(CV)p 21615
+65497 V 419 w(SIMULTANEOUS)h Fw(and)e Fu(CV)p 32691 65497
+V 419 w(STAGGERED)p Fw(\).)6814 67211 y(P)-31 b(assing)483
+b Fu(fS)p Fw(=)p Fu(NULL)g Fw(indicates)h(using)f(the)f(default)i(in)
+-31 b(ternal)484 b(di\256erence)e(quotien)-31 b(t)485
+b(sensitivit)-31 b(y)6814 68540 y(righ)g(t-hand)371 b(side)e(routine.)p
+0 70759 10633 45 v 0 72100 45 1341 v 376 71768 a Fu(CVodeSetSensFdata)p
+10588 72100 V 0 72144 10633 45 v Black 0 73496 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetSensFdata\(cvode)p
+24315 73496 349 45 v 422 w(mem,)h(fS)p 28805 73496 V
+418 w(data\);)p Black 0 75210 a Fw(Description)p Black
+1286 w(The)448 b(function)i Fu(CVodeSetSensFdata)h Fw(sp)31
+b(eci\257es)447 b(the)h(user)g(data)h(blo)31 b(c)-31
+b(k)449 b(for)f(use)g(b)-31 b(y)448 b(the)h(user-)6814
+76539 y(supplied)287 b(sensitivit)-31 b(y)289 b(righ)-31
+b(t-hand)288 b(side)f(function)h(and)f(attac)-31 b(hes)289
+b(it)e(to)h(the)f(main)h Fs(cv)-25 b(odes)287 b Fw(mem-)6814
+77867 y(ory)369 b(blo)31 b(c)-31 b(k.)p Black Black eop
+%%Page: 91 101
+91 100 bop Black 4000 2701 a Fx(6.2)425 b(User-callable)g(routines)h
+(for)f(forw)-35 b(ard)425 b(sensitivit)-35 b(y)424 b(analysis)15059
+b(91)p 4000 3144 48001 45 v Black Black 4000 6974 a Fw(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 6974 349 45
+v 419 w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 8663
+a Fu(fS)p 12046 8663 V 419 w(data)p Black 1716 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f(user)f(data.)p Black 4000 10714 a(Return)h(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 10814 12764 a Fu(CV)p
+12046 12764 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 14454 a Fu(CV)p 12046 14454 V 419 w(MEM)p
+14208 14454 V 419 w(NULL)p Black 554 w Fw(The)f Fu(cvode)p
+22685 14454 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 4000 16504 a(Notes)p Black
+4072 w(If)445 b Fu(fS)p 13229 16504 V 419 w(data)h Fw(is)f(not)h(sp)31
+b(eci\257ed,)464 b(a)446 b Fu(NULL)g Fw(p)31 b(oin)-31
+b(ter)446 b(is)f(passed)g(to)h(the)g(user-supplied)f(sensitivit)-31
+b(y)10814 17833 y(righ)g(t-hand)371 b(side)e(function.)10814
+19883 y(The)246 b(p)31 b(oin)-31 b(ter)247 b Fu(fS)p
+17891 19883 V 419 w(data)g Fw(can)f(b)31 b(e)246 b(the)g(same)h(as)f
+(the)g(p)31 b(oin)-31 b(ter)247 b Fu(f)p 35898 19883
+V 419 w(data)f Fw(sp)31 b(eci\257ed)246 b(through)h Fu(CVodeSetFdata)
+10814 21212 y Fw(\(see)369 b Fn(x)p Fw(5.5.4\))j(and)d(passed)g(to)h
+(the)f(user-supplied)g(righ)-31 b(t-hand)371 b(side)e(function)h
+Fl(f)119 b Fw(.)p 4000 24473 11214 45 v 4000 25814 45
+1341 v 4376 25482 a Fu(CVodeSetSensParams)p 15169 25814
+V 4000 25858 11214 45 v Black 4000 27350 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetSensParams\(cvode)p
+28896 27350 349 45 v 422 w(mem,)h(p,)f(pbar,)h(plist\);)p
+Black 4000 29401 a Fw(Description)p Black 1286 w(The)401
+b(function)h Fu(CVodeSetSensParams)g Fw(sp)31 b(eci\257es)400
+b(problem)h(parameter)h(information)h(for)d(sen-)10814
+30729 y(sitivit)-31 b(y)372 b(calculations.)p Black 4000
+32779 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+13789 32779 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 10814 34469 a Fu(p)p Black 5040 w Fw(\()p Fu(realtype)583
+b(*)p Fw(\))430 b(a)f(p)31 b(oin)-31 b(ter)430 b(to)h(the)e(arra)-31
+b(y)430 b(of)g(real)f(problem)i(parameters)e(used)g(to)16435
+35797 y(ev)-61 b(aluate)399 b Fl(f)119 b Fw(\()p Fl(t;)184
+b(y)40 b(;)184 b(p)p Fw(\).)580 b(If)397 b(non-)p Fu(NULL)p
+Fw(,)i Fu(p)f Fw(m)-31 b(ust)398 b(p)31 b(oin)-31 b(t)399
+b(to)f(a)g(\257eld)g(in)g(the)g(user's)f(data)16435 37126
+y(structure)369 b Fl(f)p 21910 37126 333 45 v 517 w(data)g
+Fw(passed)g(to)h(the)g(righ-hand)f(side)g(function.)495
+b(\(See)369 b Fn(x)p Fw(6.1\).)p Black 10814 38815 a
+Fu(pbar)p Black 3297 w Fw(\()p Fu(realtype)583 b(*)p
+Fw(\))448 b(an)g(arra)-31 b(y)449 b(of)f Fu(Ns)g Fw(p)31
+b(ositiv)-31 b(e)450 b(scaling)f(factors.)729 b(If)448
+b(non-)p Fu(NULL)p Fw(,)h Fu(pbar)16435 40143 y Fw(m)-31
+b(ust)370 b(ha)-31 b(v)g(e)370 b(all)g(its)g(comp)31
+b(onen)-31 b(ts)371 b Fl(>)307 b Fw(0)p Fl(:)p Fw(0.)494
+b(\(See)369 b Fn(x)p Fw(6.1\).)p Black 10814 41833 a
+Fu(plist)p Black 2716 w Fw(\()p Fu(int)582 b(*)p Fw(\))434
+b(an)f(arra)-31 b(y)433 b(of)h Fu(Ns)f Fw(p)31 b(ositiv)-31
+b(e)435 b(\260ags)e(to)h(sp)31 b(ecify)433 b(whic)-31
+b(h)434 b(parameters)g(to)f(use)16435 43161 y(in)394
+b(estimating)i(the)e(sensitivit)-31 b(y)396 b(equations.)567
+b(If)394 b(non-)p Fu(NULL)p Fw(,)h Fu(plist)f Fw(m)-31
+b(ust)394 b(ha)-31 b(v)g(e)395 b(all)16435 44490 y(comp)31
+b(onen)-31 b(ts)371 b Fn(\270)307 b Fw(1.)493 b(\(See)369
+b Fn(x)p Fw(6.1\).)p Black 4000 46540 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 10814 48591 a Fu(CV)p
+12046 48591 349 45 v 419 w(SUCCESS)p Black 1554 w Fw(The)g(optional)j
+(v)-61 b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 50280 a Fu(CV)p 12046 50280 V 419 w(MEM)p
+14208 50280 V 419 w(NULL)p Black 1135 w Fw(The)f Fu(cvode)p
+23266 50280 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 10814 51970 a Fu(CV)p 12046
+51970 V 419 w(ILL)p 14208 51970 V 419 w(INPUT)p Black
+554 w Fw(An)g(argumen)-31 b(t)371 b(has)e(an)g(illegal)j(v)-61
+b(alue.)p Black 4000 54797 a(Notes)p Black 5200 w @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1648 b Fw(While)521 b Fu(plist)f
+Fw(and)h Fu(pbar)f Fw(ha)-31 b(v)g(e)521 b(default)h(v)-61
+b(alues)520 b(\(see)g Fn(x)p Fw(6.1\),)560 b(an)520 b(error)f(will)j(o)
+31 b(ccur)519 b(if)10814 56126 y(neither)369 b Fu(p)h
+Fw(nor)f(a)g(user-pro)-31 b(vided)369 b(sensitivit)-31
+b(y)371 b(righ)-31 b(t-hand)371 b(side)e(function)i(w)-31
+b(ere)369 b(not)h(sp)31 b(eci\257ed.)p 4000 59275 9470
+45 v 4000 60616 45 1341 v 4376 60284 a Fu(CVodeSetSensRho)p
+13426 60616 V 4000 60660 9470 45 v Black 4000 62152 a
+Fw(Call)p Black 4848 w Fu(flag)582 b(=)f(CVodeSetSensRho\(cvode)p
+27153 62152 349 45 v 422 w(mem,)g(rho\);)p Black 4000
+64202 a Fw(Description)p Black 1286 w(The)299 b(function)i
+Fu(CVodeSetSensRho)g Fw(sp)31 b(eci\257es)298 b(the)i(di\256erence)e
+(quotien)-31 b(t)302 b(strategy)e(in)f(the)h(case)f(in)10814
+65531 y(whic)-31 b(h)337 b(the)f(righ)-31 b(t-hand)337
+b(side)f(of)h(the)f(sensitivit)-31 b(y)338 b(equations)g(are)d(to)i(b)
+31 b(e)336 b(computed)h(b)-31 b(y)336 b Fs(cv)-25 b(odes)p
+Fw(.)p Black 4000 67581 a(Argumen)-31 b(ts)p Black Black
+1517 w Fu(cvode)p 13789 67581 V 419 w(mem)p Black 554
+w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 69271 a Fu(rho)p Black 3878
+w Fw(\()p Fu(realtype)p Fw(\))371 b(v)-61 b(alue)370
+b(of)g(the)f(selection)h(parameter.)p Black 4000 71321
+a(Return)f(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black 10814 73372
+a Fu(CV)p 12046 73372 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j
+(v)-61 b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 75061 a Fu(CV)p 12046 75061 V 419 w(MEM)p
+14208 75061 V 419 w(NULL)p Black 554 w Fw(The)f Fu(cvode)p
+22685 75061 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 4000 77112 a(Notes)p Black
+4072 w(The)g(default)i(v)-61 b(alue)370 b(is)f Fu(rho)p
+Fw(=)308 b(0)p Fl(:)p Fw(0.)494 b(See)369 b Fn(x)p Fw(3.2)h(for)f
+(details.)p Black Black eop
+%%Page: 92 102
+92 101 bop Black 0 2701 a Fx(92)19434 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(F)-106 b(orw)-35 b(ard)426 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black 0 5965 11214
+45 v 0 7306 45 1341 v 376 6974 a Fu(CVodeSetSensErrCon)p
+11169 7306 V 0 7350 11214 45 v Black 0 8724 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeSetSensErrCon\(cvode)p
+24896 8724 349 45 v 422 w(mem,)h(errconS\);)p Black 0
+10540 a Fw(Description)p Black 1286 w(The)395 b(function)i
+Fu(CVodeSetSensErrCon)h Fw(sp)31 b(eci\257es)394 b(the)i(error)e(con)
+-31 b(trol)397 b(strategy)f(for)g(sensitivit)-31 b(y)6814
+11868 y(v)-61 b(ariables.)p Black 0 13684 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 13684 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 15256
+a Fu(errconS)p Black 1554 w Fw(\()p Fu(booleantype)p
+Fw(\))384 b(sp)31 b(eci\257es)381 b(whether)h(sensitivit)-31
+b(y)384 b(v)-61 b(ariables)382 b(are)f(included)h(\()p
+Fu(TRUE)p Fw(\))12435 16584 y(or)369 b(not)h(\()p Fu(FALSE)p
+Fw(\))h(in)e(the)h(error)e(con)-31 b(trol)370 b(mec)-31
+b(hanism.)p Black 0 18400 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p
+Black 6814 20215 a Fu(CV)p 8046 20215 V 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 6814 21787 a
+Fu(CV)p 8046 21787 V 419 w(MEM)p 10208 21787 V 419 w(NULL)p
+Black 554 w Fw(The)f Fu(cvode)p 18685 21787 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+0 23603 a(Notes)p Black 4072 w(By)432 b(default,)451
+b Fu(errconQ)433 b Fw(is)f(set)g(to)i Fu(FALSE)p Fw(.)f(If)f
+Fu(errcon)p Fw(=)p Fu(TRUE)i Fw(then)e(b)31 b(oth)433
+b(state)h(v)-61 b(ariables)433 b(and)6814 24931 y(sensitivit)-31
+b(y)392 b(v)-61 b(ariables)391 b(are)g(included)g(in)f(the)h(error)e
+(tests.)556 b(If)390 b Fu(errcon)p Fw(=)p Fu(FALSE)i
+Fw(then)f(the)f(sensi-)6814 26260 y(tivit)-31 b(y)307
+b(v)-61 b(ariables)306 b(are)e(excluded)i(from)f(the)g(error)f(tests.)
+471 b(Note)306 b(that,)319 b(in)305 b(an)-31 b(y)306
+b(ev)-31 b(en)g(t,)319 b(all)306 b(v)-61 b(ariables)6814
+27588 y(are)369 b(considered)g(in)g(the)h(con)-31 b(v)g(ergence)370
+b(tests.)p 0 29997 13539 45 v 0 31338 45 1341 v 376 31005
+a Fu(CVodeSetSensTolerances)p 13494 31338 V 0 31382 13539
+45 v Black 0 32756 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeSetSensTolerances\(cvode)p 27220 32756 349
+45 v 423 w(mem,)g(itolS,)h(reltolS,)h(abstolS\);)p Black
+0 34572 a Fw(Description)p Black 1286 w(The)378 b(function)i
+Fu(CVodeSetSensTolerances)h Fw(sp)31 b(eci\257es)378
+b(the)g(in)-31 b(tegration)381 b(tolerances)e(for)f(sensi-)6814
+35900 y(tivit)-31 b(y)372 b(v)-61 b(ariables.)p Black
+0 37716 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+9789 37716 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black 6814 39288 a Fu(itolS)p Black 2716 w Fw(\()p Fu(int)p
+Fw(\))595 b(is)f(one)f(of)i Fu(CV)p 21942 39288 V 418
+w(SS)p Fw(,)g Fu(CV)p 25586 39288 V 418 w(SV)p Fw(,)g(or)e
+Fu(CV)p 30810 39288 V 419 w(EE)p Fw(,)h(where)g Fu(itolS)p
+Fw(=)p Fu(CV)p 41646 39288 V 419 w(SS)f Fw(indicates)12435
+40616 y(scalar)486 b(relativ)-31 b(e)487 b(error)d(tolerance)j(and)e
+(scalar)h(absolute)g(error)f(tolerance,)516 b(while)12435
+41944 y Fu(itolS)p Fw(=)p Fu(CV)p 17433 41944 V 420 w(SV)375
+b Fw(indicates)i(scalar)f(relativ)-31 b(e)377 b(error)d(tolerance)j
+(and)e(v)-31 b(ector)376 b(absolute)12435 43273 y(error)437
+b(tolerance.)702 b Fu(itolS)p Fw(=)p Fu(CV)p 25594 43273
+V 420 w(EE)p Fw(,)439 b(the)f(argumen)-31 b(ts)440 b
+Fu(reltolS)f Fw(and)g Fu(abstolS)g Fw(are)12435 44601
+y(ignored)424 b(and)f Fs(cv)-25 b(odes)423 b Fw(will)i(estimate)g
+(tolerances)f(for)f(the)g(sensitivit)-31 b(y)425 b(v)-61
+b(ariables)12435 45929 y(based)369 b(on)h(the)f(state)h(tolerances)g
+(and)g(the)f(scaling)h(factors)464 b(\271)-647 b Fl(p)p
+Fw(.)p Black 6814 47501 a Fu(reltolS)p Black 1554 w Fw(\()p
+Fu(realtype)p Fw(\))371 b(is)e(the)h(relativ)-31 b(e)371
+b(error)d(tolerance.)p Black 6814 49073 a Fu(abstolS)p
+Black 1554 w Fw(\()p Fu(void)582 b(*)p Fw(\))500 b(is)e(a)i(p)31
+b(oin)-31 b(ter)499 b(to)h(the)f(absolute)h(error)e(tolerance.)883
+b(If)499 b Fu(itolS)p Fw(=)p Fu(CV)p 46181 49073 V 419
+w(SS)p Fw(,)12435 50402 y Fu(abstolS)247 b Fw(m)-31 b(ust)247
+b(b)31 b(e)245 b(a)i(p)31 b(oin)-31 b(ter)247 b(to)g(an)f(arra)-31
+b(y)247 b(of)g Fu(realtype)g Fw(v)-61 b(ariables.)452
+b(If)246 b Fu(itolS)p Fw(=)p Fu(CV)p 47658 50402 V 419
+w(SV)p Fw(,)12435 51730 y Fu(abstolS)376 b Fw(m)-31 b(ust)375
+b(b)31 b(e)375 b(an)g(arra)-31 b(y)375 b(of)h Fu(Ns)f
+Fw(v)-61 b(ariables)376 b(of)f(t)-31 b(yp)31 b(e)376
+b Fu(N)p 37399 51730 V 418 w(Vector)p Fw(.)511 b(In)374
+b(the)i(latter)12435 53058 y(case,)312 b Fu(abstolS)297
+b Fw(should)g(b)31 b(e)296 b(created)h(and)g(set)g(in)g(the)g(same)g
+(manner)g(as)f(the)h(v)-31 b(ectors)12435 54387 y(of)370
+b(initial)i(v)-61 b(alues)369 b(for)g(the)h(sensitivit)-31
+b(y)371 b(v)-61 b(ariables)370 b(\(see)f Fn(x)p Fw(6.1\).)p
+Black 0 56202 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black
+6814 58018 a Fu(CV)p 8046 58018 V 419 w(SUCCESS)p Black
+1554 w Fw(The)g(optional)j(v)-61 b(alues)369 b(ha)-31
+b(v)g(e)371 b(b)31 b(een)368 b(successfully)h(set.)p
+Black 6814 59590 a Fu(CV)p 8046 59590 V 419 w(MEM)p 10208
+59590 V 419 w(NULL)p Black 1135 w Fw(The)g Fu(cvode)p
+19266 59590 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 6814 61162 a Fu(CV)p 8046
+61162 V 419 w(ILL)p 10208 61162 V 419 w(INPUT)p Black
+554 w Fw(An)g(input)h(argumen)-31 b(t)371 b(to)e Fu
+(CVodeSetSensTolerances)k Fw(has)c(an)g(illegal)j(v)-61
+b(alue.)p Black 0 62977 a(Notes)p Black 4072 w(The)455
+b(default)h(b)31 b(eha)-31 b(vior)455 b(is)g(for)f Fs(cv)-25
+b(odes)455 b Fw(to)g(estimated)i(appropriate)e(in)-31
+b(tegration)458 b(tolerances)6814 64306 y(for)f(the)h(sensitivit)-31
+b(y)460 b(v)-61 b(ariables)458 b(based)f(on)h(the)g(state)g(tolerances)
+g(and)g(the)g(scaling)g(factors)553 b(\271)-647 b Fl(p)p
+Fw(.)6814 65634 y(See)369 b Fn(x)p Fw(3.2)h(for)g(details.)7942
+68227 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1566
+b Fw(It)437 b(is)g(the)h(user's)e(resp)31 b(onsibilit)-31
+b(y)440 b(to)e(pro)-31 b(vide)438 b(compatible)i Fu(itolS)e
+Fw(and)f Fu(abstolS)i Fw(argu-)6814 69555 y(men)-31 b(ts.)p
+0 71964 15863 45 v 0 73304 45 1341 v 376 72972 a Fu
+(CVodeSetSensMaxNonlinIters)p 15818 73304 V 0 73348 15863
+45 v Black 0 74723 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeSetSensMaxNonlinIters\(cvode)p 29544 74723
+349 45 v 423 w(mem,)h(maxcorS\);)p Black 0 76539 a Fw(Description)p
+Black 1286 w(The)406 b(function)h Fu(CVodeSetSensMaxNonlinIters)j
+Fw(sp)31 b(eci\257es)405 b(the)h(maxim)-31 b(um)408 b(n)-31
+b(um)g(b)31 b(er)406 b(of)h(non-)6814 77867 y(linear)370
+b(solv)-31 b(er)370 b(iterations)h(for)e(sensitivit)-31
+b(y)371 b(v)-61 b(ariables)370 b(p)31 b(er)368 b(step.)p
+Black Black eop
+%%Page: 93 103
+93 102 bop Black 4000 2701 a Fx(6.2)425 b(User-callable)g(routines)h
+(for)f(forw)-35 b(ard)425 b(sensitivit)-35 b(y)424 b(analysis)15059
+b(93)p 4000 3144 48001 45 v Black Black Black 16557 7743
+a Fw(T)-92 b(able)370 b(6.2:)494 b(F)-92 b(orw)-31 b(ard)369
+b(sensitivit)-31 b(y)371 b(optional)h(outputs)p Black
+4265 8777 47470 45 v 4243 10105 45 1329 v 4929 9707 a
+Fx(Optional)425 b(output)p 28301 10105 V 15058 w(Routine)g(name)p
+51713 10105 V 4265 10150 47470 45 v 4243 11478 45 1329
+v 4929 11079 a Fw(No.)493 b(of)370 b(calls)g(to)g(sensitivit)-31
+b(y)371 b(r.h.s.)493 b(function)p 28301 11478 V 4660
+w Fu(CVodeGetNumSensRhsEvals)p 51713 11478 V 4243 12806
+V 4929 12408 a Fw(No.)g(of)370 b(calls)g(to)g(r.h.s.)493
+b(function)370 b(for)g(sensitivit)-31 b(y)p 28301 12806
+V 2966 w Fu(CVodeGetNumRhsEvalsSens)p 51713 12806 V 4243
+14135 V 4929 13736 a Fw(No.)493 b(of)370 b(sensitivit)-31
+b(y)371 b(lo)31 b(cal)371 b(error)d(test)i(failures)p
+28301 14135 V 4373 w Fu(CVodeGetNumSensErrTestFails)p
+51713 14135 V 4243 15463 V 4929 15064 a Fw(No.)493 b(of)370
+b(calls)g(to)g(lin.)494 b(solv.)f(setup)369 b(routine)h(for)f(sens.)p
+28301 15463 V 1328 w Fu(CVodeGetNumSensLinSolvSetups)p
+51713 15463 V 4243 16791 V 4929 16393 a Fw(Error)g(w)-31
+b(eigh)g(t)371 b(v)-31 b(ector)370 b(for)f(sensitivit)-31
+b(y)372 b(v)-61 b(ariables)p 28301 16791 V 3066 w Fu
+(CVodeGetSensErrWeights)p 51713 16791 V 4243 18120 V
+4929 17721 a Fw(No.)493 b(of)370 b(sens.)492 b(nonlinear)370
+b(solv)-31 b(er)370 b(iterations)p 28301 18120 V 5269
+w Fu(CVodeGetNumSensNonlinSolvIters)p 51713 18120 V 4243
+19448 V 4929 19050 a Fw(No.)493 b(of)370 b(sens.)492
+b(con)-31 b(v)g(ergence)370 b(failures)p 28301 19448
+V 8229 w Fu(CVodeGetNumSensNonlinSolvConvFails)p 51713
+19448 V 4243 20776 V 4929 20378 a Fw(No.)493 b(of)370
+b(staggered)g(nonlinear)h(solv)-31 b(er)369 b(iterations)p
+28301 20776 V 3120 w Fu(CVodeGetNumStgrSensNonlinSolvIters)p
+51713 20776 V 4243 22105 V 4929 21706 a Fw(No.)493 b(of)370
+b(staggered)g(con)-31 b(v)g(ergence)370 b(failures)p
+28301 22105 V 6080 w Fu(CVodeGetNumStgrSensNonlinSolvConvFails)p
+51713 22105 V 4265 22149 47470 45 v Black Black 4000
+25475 a Fw(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+13789 25475 349 45 v 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 27027 a Fu(maxcorS)p Black
+1554 w Fw(\()p Fu(int)p Fw(\))370 b(maxim)-31 b(um)372
+b(n)-31 b(um)g(b)31 b(er)369 b(of)h(nonlinear)h(solv)-31
+b(er)369 b(iterations)i(allo)-31 b(w)g(ed)372 b(p)31
+b(er)368 b(step.)p Black 4000 28803 a(Return)h(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 10814 30579 a Fu(CV)p
+12046 30579 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 32131 a Fu(CV)p 12046 32131 V 419 w(MEM)p
+14208 32131 V 419 w(NULL)p Black 554 w Fw(The)f Fu(cvode)p
+22685 32131 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 4000 33907 a(Notes)p Black
+4072 w(The)g(default)i(v)-61 b(alue)370 b(is)f(3.)4000
+37019 y Fo(6.2.4)1495 b(Optional)500 b(outputs)g(for)e(forw)-42
+b(ard)500 b(sensitivit)-42 b(y)500 b(analysis)4000 39067
+y Fw(Optional)387 b(output)g(functions)f(that)g(return)f(statistics)h
+(and)g(solv)-31 b(er)385 b(p)31 b(erformance)386 b(information)i
+(related)e(to)g(for-)4000 40395 y(w)-31 b(ard)324 b(sensitivit)-31
+b(y)326 b(computations)h(are)c(listed)i(in)f(T)-92 b(able)324
+b(6.2)h(and)f(describ)31 b(ed)323 b(in)h(detail)h(in)f(the)g(remainder)
+g(of)g(this)4000 41723 y(section.)p 4000 43605 14120
+45 v 4000 44946 45 1341 v 4376 44614 a Fu(CVodeGetNumSensRhsEvals)p
+18075 44946 V 4000 44990 14120 45 v Black 4000 46344
+a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVodeGetNumSensRhsEvals\(cvode)p 31801 46344 349 45
+v 423 w(mem,)g(&nfSevals\);)p Black 4000 48120 a Fw(Description)p
+Black 1286 w(The)288 b(function)i Fu(CVodeGetNumSensRhsEvals)h
+Fw(returns)c(the)i(n)-31 b(um)g(b)31 b(er)288 b(of)g(calls)h(to)g(the)g
+(sensitivit)-31 b(y)10814 49449 y(righ)g(t-hand)371 b(side)e(function.)
+p Black 4000 51225 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 51225 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 52777 a Fu(nfSevals)p Black
+973 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(calls)g(to)g(the)g(sensitivit)-31 b(y)371
+b(righ)-31 b(t-hand)371 b(side)e(function.)p Black 4000
+54553 a(Return)g(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black 10814 56329
+a Fu(CV)p 12046 56329 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j
+(output)e(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g
+(set.)p Black 10814 57881 a Fu(CV)p 12046 57881 V 419
+w(MEM)p 14208 57881 V 419 w(NULL)p Black 554 w Fw(The)g
+Fu(cvode)p 22685 57881 V 419 w(mem)h Fw(p)31 b(oin)-31
+b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black 10814 59433 a
+Fu(CV)p 12046 59433 V 419 w(NO)p 13627 59433 V 418 w(SENS)p
+Black 1136 w Fw(F)-92 b(orw)-31 b(ard)369 b(sensitivit)-31
+b(y)371 b(analysis)g(w)-31 b(as)369 b(not)h(initialized.)p
+Black 4000 61209 a(Notes)p Black 4072 w(In)414 b(order)f(to)i(accommo)
+31 b(date)417 b(an)-31 b(y)415 b(of)g(the)f(three)g(p)31
+b(ossible)415 b(sensitivit)-31 b(y)416 b(solution)g(metho)31
+b(ds,)427 b(the)10814 62538 y(default)355 b(in)-31 b(ternal)356
+b(\257nite)e(di\256erence)g(quotien)-31 b(t)356 b(functions)f(ev)-61
+b(aluate)355 b(the)f(sensitivit)-31 b(y)356 b(righ)-31
+b(t-hand)10814 63866 y(sides)394 b(one)h(at)h(a)f(time.)570
+b(Therefore,)402 b Fu(nfSevals)396 b Fw(will)g(alw)-31
+b(a)g(ys)397 b(b)31 b(e)394 b(a)h(m)-31 b(ultiple)397
+b(of)f(the)f(n)-31 b(um)g(b)31 b(er)394 b(of)10814 65194
+y(sensitivit)-31 b(y)438 b(parameters)e(\(the)g(same)g(as)f(the)h(case)
+g(in)g(whic)-31 b(h)436 b(the)g(user)f(supplies)g(a)h(routine)g(of)
+10814 66523 y(t)-31 b(yp)31 b(e)370 b Fu(CVSensRhs1Fn)p
+Fw(\).)p 4000 68919 14120 45 v 4000 70259 45 1341 v 4376
+69927 a Fu(CVodeGetNumRhsEvalsSens)p 18075 70259 V 4000
+70303 14120 45 v Black 4000 71658 a Fw(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeGetNumRhsEvalsSens\(cvode)p
+31801 71658 349 45 v 423 w(mem,)g(&nfevalsS\);)p Black
+4000 73434 a Fw(Description)p Black 1286 w(The)506 b(function)i
+Fu(CVodeGetNumRhsEvalsSEns)h Fw(returns)c(the)i(n)-31
+b(um)g(b)31 b(er)506 b(of)g(calls)h(to)g(the)g(user's)10814
+74763 y(righ)-31 b(t-hand)532 b(side)f(function)h(due)f(to)g(the)h(in)
+-31 b(ternal)532 b(\257nite)f(di\256erence)g(appro)-31
+b(ximation)534 b(of)e(the)10814 76091 y(sensitivit)-31
+b(y)371 b(righ)-31 b(t-hand)371 b(sides.)p Black 4000
+77867 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvode)p
+13789 77867 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k.)p
+Black Black eop
+%%Page: 94 104
+94 103 bop Black 0 2701 a Fx(94)19434 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(F)-106 b(orw)-35 b(ard)426 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black Black 6814
+6974 a Fu(nfevalsS)p Black 973 w Fw(\()p Fu(long)582
+b(int)p Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)
+g(user)e(righ)-31 b(t-hand)370 b(side)f(function.)p Black
+0 8747 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black
+6814 10521 a Fu(CV)p 8046 10521 349 45 v 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 12072 a Fu(CV)p 8046 12072 V 419 w(MEM)p 10208 12072
+V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p 18685
+12072 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370 b(is)f
+Fu(NULL)p Fw(.)p Black 6814 13622 a Fu(CV)p 8046 13622
+V 419 w(NO)p 9627 13622 V 418 w(SENS)p Black 1136 w Fw(F)-92
+b(orw)-31 b(ard)369 b(sensitivit)-31 b(y)371 b(analysis)g(w)-31
+b(as)369 b(not)h(initialized.)p Black 0 15396 a(Notes)p
+Black 4072 w(This)264 b(coun)-31 b(ter)264 b(is)g(incremen)-31
+b(ted)264 b(only)h(if)f(the)g(in)-31 b(ternal)265 b(\257nite)f
+(di\256erence)f(appro)-31 b(ximation)267 b(routines)6814
+16724 y(are)369 b(used)g(for)g(the)g(ev)-61 b(aluation)372
+b(of)e(the)f(sensitivit)-31 b(y)371 b(righ)-31 b(t-hand)371
+b(sides.)p 0 19000 16444 45 v 0 20341 45 1341 v 376 20009
+a Fu(CVodeGetNumSensErrTestFails)p 16399 20341 V 0 20385
+16444 45 v Black 0 21738 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeGetNumSensErrTestFails\(cvode)p 30125 21738
+349 45 v 423 w(mem,)h(&nSetfails\);)p Black 0 23512 a
+Fw(Description)p Black 1286 w(The)411 b(function)h Fu
+(CVodeGetNumSensErrTestFails)i Fw(returns)c(the)h(n)-31
+b(um)g(b)31 b(er)411 b(of)g(lo)31 b(cal)412 b(error)d(test)6814
+24840 y(failures)370 b(for)f(the)h(sensitivit)-31 b(y)371
+b(v)-61 b(ariables)370 b(that)g(ha)-31 b(v)g(e)370 b(o)31
+b(ccured.)p Black 0 26613 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvode)p 9789 26613 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 28164 a Fu(nSetfails)p Black
+555 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(error)e(test)i(failures.)p Black 0 29938
+a(Return)f(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black 6814 31711
+a Fu(CV)p 8046 31711 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j
+(output)e(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g
+(set.)p Black 6814 33262 a Fu(CV)p 8046 33262 V 419 w(MEM)p
+10208 33262 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+18685 33262 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 6814 34813 a Fu(CV)p 8046
+34813 V 419 w(NO)p 9627 34813 V 418 w(SENS)p Black 1136
+w Fw(F)-92 b(orw)-31 b(ard)369 b(sensitivit)-31 b(y)371
+b(analysis)g(w)-31 b(as)369 b(not)h(initialized.)p Black
+0 36586 a(Notes)p Black 4072 w(This)346 b(coun)-31 b(ter)347
+b(is)e(incremen)-31 b(ted)347 b(only)g(if)f(the)g(sensitivit)-31
+b(y)348 b(v)-61 b(ariables)347 b(ha)-31 b(v)g(e)347 b(b)31
+b(een)345 b(included)h(in)h(the)6814 37915 y(error)369
+b(test)h(\(see)g Fu(CVodeSetSensErrCon)i Fw(in)e Fn(x)p
+Fw(6.2.3\).)498 b(Ev)-31 b(en)370 b(in)g(that)h(case,)g(this)f(coun)-31
+b(ter)370 b(is)g(not)6814 39243 y(incremen)-31 b(ted)365
+b(if)f(the)g Fu(ism)p Fw(=)p Fu(CV)p 19800 39243 V 419
+w(SIMULTANEOUS)i Fw(sensitivit)-31 b(y)366 b(solution)f(metho)31
+b(d)365 b(has)f(b)31 b(een)363 b(used.)p 0 41519 17025
+45 v 0 43106 45 1587 v 376 42527 a Fu(CVodeGetNumSensLinSolvSetups)p
+16981 43106 V 0 43150 17025 45 v Black 0 44430 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeGetNumSensLinSolvSetups\(cvode)p
+30706 44430 349 45 v 423 w(mem,)h(&nlinsetupsS\);)p Black
+0 46204 a Fw(Description)p Black 1286 w(The)542 b(function)h
+Fu(CVodeGetNumSensLinSolvSetups)j Fw(returns)541 b(the)h(n)-31
+b(um)g(b)31 b(er)542 b(of)g(calls)h(to)g(the)6814 47532
+y(linear)370 b(solv)-31 b(er)370 b(setup)f(function)h(due)f(to)h(forw)
+-31 b(ard)370 b(sensitivit)-31 b(y)371 b(calculations.)p
+Black 0 49306 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 49306 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 50856 a Fu(nlinsetupsS)p Black
+555 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(calls)g(to)g(the)g(linear)g(solv)-31
+b(er)369 b(setup)g(function.)p Black 0 52630 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 6814 54403 a Fu(CV)p 8046
+54403 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 6814 55954 a Fu(CV)p 8046 55954 V 419 w(MEM)p 10208
+55954 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+18685 55954 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 6814 57505 a Fu(CV)p 8046
+57505 V 419 w(NO)p 9627 57505 V 418 w(SENS)p Black 1136
+w Fw(F)-92 b(orw)-31 b(ard)369 b(sensitivit)-31 b(y)371
+b(analysis)g(w)-31 b(as)369 b(not)h(initialized.)p Black
+0 59278 a(Notes)p Black 4072 w(This)394 b(coun)-31 b(ter)395
+b(is)e(incremen)-31 b(ted)395 b(only)g(if)f(Newton)i(iteration)g(has)d
+(b)31 b(een)394 b(used)f(and)h(if)g(either)h(the)6814
+60607 y Fu(ism)p Fw(=)p Fu(CV)p 10650 60607 V 419 w(STAGGERED)379
+b Fw(or)f(the)f Fu(ism)p Fw(=)p Fu(CV)p 23722 60607 V
+420 w(STAGGERED1)i Fw(sensitivit)-31 b(y)380 b(solution)f(metho)31
+b(d)379 b(has)e(b)31 b(een)6814 61935 y(sp)g(eci\257ed)369
+b(in)g(the)h(call)g(to)g Fu(CVodeSensMalloc)h Fw(\(see)e
+Fn(x)p Fw(6.2.1\).)p 0 64323 10633 45 v 0 65664 45 1341
+v 376 65332 a Fu(CVodeGetSensStats)p 10588 65664 V 0
+65708 10633 45 v Black 0 67061 a Fw(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeGetSensStats\()s(cvode)p 24318
+67061 349 45 v 419 w(mem,)h(&nfSevals,)g(&nfevalsS,)21343
+68389 y(&nSetfails,)g(&nlinsetupsS\);)p Black 0 70112
+a Fw(Description)p Black 1286 w(The)384 b(function)h
+Fu(CVodeGet)g Fw(returns)e(all)i(of)f(the)g(ab)31 b(o)-31
+b(v)g(e)385 b(sensitivit)-31 b(y-related)387 b(solv)-31
+b(er)384 b(statistics)i(as)6814 71441 y(a)369 b(group.)p
+Black 0 73214 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(cvode)p 9789 73214 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 74765 a Fu(nfSevals)p Black
+973 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(calls)g(to)g(the)g(sensitivit)-31 b(y)371
+b(righ)-31 b(t-hand)371 b(side)e(function.)p Black 6814
+76316 a Fu(nfevalsS)p Black 973 w Fw(\()p Fu(long)582
+b(int)p Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)
+g(user-supplied)e(righ)-31 b(t-hand)371 b(side)e(function.)p
+Black 6814 77867 a Fu(nSetfails)p Black 555 w Fw(\()p
+Fu(long)582 b(int)p Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369
+b(of)h(error)e(test)i(failures.)p Black Black eop
+%%Page: 95 105
+95 104 bop Black 4000 2701 a Fx(6.2)425 b(User-callable)g(routines)h
+(for)f(forw)-35 b(ard)425 b(sensitivit)-35 b(y)424 b(analysis)15059
+b(95)p 4000 3144 48001 45 v Black Black 10814 6974 a
+Fu(nlinsetupsS)p Black 555 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)g
+(linear)g(solv)-31 b(er)369 b(setup)g(function.)p Black
+4000 8766 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black
+10814 10558 a Fu(CV)p 12046 10558 349 45 v 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(output)e(v)-61 b(alues)370
+b(ha)-31 b(v)g(e)370 b(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 12118 a Fu(CV)p 12046 12118 V 419 w(MEM)p
+14208 12118 V 419 w(NULL)p Black 554 w Fw(The)f Fu(cvode)p
+22685 12118 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 10814 13678 a Fu(CV)p 12046
+13678 V 419 w(NO)p 13627 13678 V 418 w(SENS)p Black 1136
+w Fw(F)-92 b(orw)-31 b(ard)369 b(sensitivit)-31 b(y)371
+b(analysis)g(w)-31 b(as)369 b(not)h(initialized.)p 4000
+16012 13539 45 v 4000 17599 45 1587 v 4376 17021 a Fu
+(CVodeGetSensErrWeights)p 17494 17599 V 4000 17643 13539
+45 v Black 4000 18933 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeGetSensErrWeights\(cvode)p 31220 18933 349
+45 v 423 w(mem,)g(&eSweight\);)p Black 4000 20725 a Fw(Description)p
+Black 1286 w(The)466 b(function)i Fu(CVodeGetSensErrWeights)h
+Fw(returns)c(the)h(sensitivit)-31 b(y)468 b(error)d(w)-31
+b(eigh)g(ts)468 b(at)f(the)10814 22053 y(curren)-31 b(t)343
+b(time.)485 b(These)343 b(are)g(the)h(recipro)31 b(cals)343
+b(of)h(the)f Fl(W)34112 22219 y Fj(i)34824 22053 y Fw(of)h(\(3.7\))h
+(for)f(the)f(sensitivit)-31 b(y)346 b(v)-61 b(ariables.)p
+Black 4000 23845 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 23845 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 10814 25405 a Fu(eSweight)p Black
+973 w Fw(\()p Fu(N)p 17516 25405 V 419 w(Vector)p 21421
+25405 V 419 w(S)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f(arra)-31 b(y)370 b(of)g(error)e(w)-31 b(eigh)g(t)371
+b(v)-31 b(ectors.)p Black 4000 27197 a(Return)369 b(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 10814 28989 a Fu(CV)p
+12046 28989 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 30549 a Fu(CV)p 12046 30549 V 419 w(MEM)p
+14208 30549 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+22685 30549 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 10814 32110 a Fu(CV)p 12046
+32110 V 419 w(NO)p 13627 32110 V 418 w(SENS)p Black 1136
+w Fw(F)-92 b(orw)-31 b(ard)369 b(sensitivit)-31 b(y)371
+b(analysis)g(w)-31 b(as)369 b(not)h(initialized.)p Black
+4000 33901 a(Notes)p Black 4072 w(The)539 b(user)f(need)g(not)i(allo)31
+b(cate)541 b(space)e(for)g Fu(eSweight)g Fw(and)h(should)f(not)g(mo)31
+b(dify)541 b(an)-31 b(y)539 b(of)g(its)10814 35230 y(comp)31
+b(onen)-31 b(ts.)p 4000 37564 18188 45 v 4000 38905 45
+1341 v 4376 38573 a Fu(CVodeGetNumSensNonlinSolvIters)p
+22143 38905 V 4000 38949 18188 45 v Black 4000 40312
+a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVodeGetNumSensNonlinSolvIters\(cvode)p 35868 40312
+349 45 v 424 w(mem,)h(&nSniters\);)p Black 4000 42103
+a Fw(Description)p Black 1286 w(The)549 b(function)h
+Fu(CVodeGetNumSensNonlinSolvIters)j Fw(returns)547 b(the)i(n)-31
+b(um)g(b)31 b(er)548 b(of)i(nonlinear)10814 43432 y(\(functional)372
+b(or)d(Newton\))i(iterations)g(p)31 b(erformed)369 b(for)g(sensitivit)
+-31 b(y)372 b(calculations.)p Black 4000 45224 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 45224 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 46784
+a Fu(nSniters)p Black 973 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(nonlinear)h(iterations)g
+(p)31 b(erformed.)p Black 4000 48576 a(Return)369 b(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 10814 50368 a Fu(CV)p
+12046 50368 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 51928 a Fu(CV)p 12046 51928 V 419 w(MEM)p
+14208 51928 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+22685 51928 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 10814 53488 a Fu(CV)p 12046
+53488 V 419 w(NO)p 13627 53488 V 418 w(SENS)p Black 1136
+w Fw(F)-92 b(orw)-31 b(ard)369 b(sensitivit)-31 b(y)371
+b(analysis)g(w)-31 b(as)369 b(not)h(initialized.)p Black
+4000 55280 a(Notes)p Black 4072 w(This)413 b(coun)-31
+b(ter)413 b(is)f(incremen)-31 b(ted)414 b(only)f(if)g(the)g
+Fu(ism)g Fw(w)-31 b(as)413 b Fu(CV)p 35882 55280 V 419
+w(STAGGERED)h Fw(or)e Fu(CV)p 44505 55280 V 419 w(STAGGERED1)i
+Fw(in)10814 56608 y(the)369 b(call)i(to)f Fu(CVodeSensMalloc)h
+Fw(\(see)e Fn(x)p Fw(6.2.1\).)10814 58400 y(In)317 b(the)h
+Fu(CV)p 15233 58400 V 418 w(STAGGERED1)h Fw(case,)328
+b(the)318 b(v)-61 b(alue)318 b(of)g Fu(nSniters)h Fw(is)e(the)h(sum)f
+(of)h(the)g(n)-31 b(um)g(b)31 b(er)318 b(of)g(nonlin-)10814
+59729 y(ear)389 b(iterations)i(p)31 b(erformed)389 b(for)h(eac)-31
+b(h)389 b(sensitivit)-31 b(y)392 b(equation.)554 b(These)390
+b(individual)h(coun)-31 b(ters)390 b(can)10814 61057
+y(b)31 b(e)369 b(obtained)i(through)e(a)h(call)g(to)g
+Fu(CVodeGetNumStgrSensNonlinSolvIters)k Fw(\(see)369
+b(b)31 b(elo)-31 b(w\).)p 4000 63503 20512 45 v 4000
+64844 45 1341 v 4376 64512 a Fu(CVodeGetNumSensNonlinSolvConvFails)p
+24468 64844 V 4000 64888 20512 45 v Black 4000 66251
+a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f
+(CVodeGetNumSensNonlinSolvConvFails\(cvode)p 38192 66251
+349 45 v 424 w(mem,)h(&nSncfails\);)p Black 4000 68042
+a Fw(Description)p Black 1286 w(The)375 b(function)i
+Fu(CVodeGetNumSensNonlinSolvConvFails)j Fw(returns)374
+b(the)h(n)-31 b(um)g(b)31 b(er)375 b(of)h(nonlin-)10814
+69371 y(ear)369 b(con)-31 b(v)g(ergence)370 b(failures)g(that)g(ha)-31
+b(v)g(e)371 b(o)31 b(ccurred)368 b(for)h(sensitivit)-31
+b(y)371 b(calculations.)p Black 4000 71163 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 13789 71163 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 10814 72723
+a Fu(nSncfails)p Black 555 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(nonlinear)g(con)-31
+b(v)g(ergence)370 b(failures.)p Black 4000 74515 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 10814 76307 a Fu(CV)p
+12046 76307 V 419 w(SUCCESS)p Black 973 w Fw(The)g(optional)j(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 77867 a Fu(CV)p 12046 77867 V 419 w(MEM)p
+14208 77867 V 419 w(NULL)p Black 554 w Fw(The)g Fu(cvode)p
+22685 77867 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black Black eop
+%%Page: 96 106
+96 105 bop Black 0 2701 a Fx(96)19434 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(F)-106 b(orw)-35 b(ard)426 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black Black 6814
+6974 a Fu(CV)p 8046 6974 349 45 v 419 w(NO)p 9627 6974
+V 418 w(SENS)p Black 1136 w Fw(F)-92 b(orw)-31 b(ard)369
+b(sensitivit)-31 b(y)371 b(analysis)g(w)-31 b(as)369
+b(not)h(initialized.)p Black 0 8742 a(Notes)p Black 4072
+w(This)413 b(coun)-31 b(ter)413 b(is)f(incremen)-31 b(ted)414
+b(only)f(if)g(the)g Fu(ism)g Fw(w)-31 b(as)413 b Fu(CV)p
+31882 8742 V 419 w(STAGGERED)h Fw(or)e Fu(CV)p 40505
+8742 V 419 w(STAGGERED1)i Fw(in)6814 10070 y(the)369
+b(call)i(to)f Fu(CVodeSensMalloc)h Fw(\(see)e Fn(x)p
+Fw(6.2.1\).)6814 11838 y(In)361 b(the)g Fu(CV)p 11320
+11838 V 419 w(STAGGERED1)i Fw(case,)g(the)f(v)-61 b(alue)361
+b(of)h Fu(nSncfails)h Fw(is)e(the)h(sum)f(of)h(the)f(n)-31
+b(um)g(b)31 b(er)362 b(of)g(non-)6814 13166 y(linear)285
+b(con)-31 b(v)g(ergence)285 b(failures)f(that)h(o)31
+b(ccured)284 b(for)g(eac)-31 b(h)284 b(sensitivit)-31
+b(y)286 b(equation.)467 b(These)283 b(individual)6814
+14495 y(coun)-31 b(ters)425 b(can)g(b)31 b(e)424 b(obtained)i(through)g
+(a)f(call)g(to)h Fu(CVodeGetNumStgrSensNonlinConvFails)6814
+15823 y Fw(\(see)369 b(b)31 b(elo)-31 b(w\).)p 0 18201
+16444 45 v 0 19542 45 1341 v 376 19210 a Fu
+(CVodeGetSensNonlinSolvStats)p 16399 19542 V 0 19586
+16444 45 v Black 0 20938 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeGetSensNonlinSolvStats\(cvode)p 30125 20938
+349 45 v 423 w(mem,)h(&nSniters,)h(&nSncfails\);)p Black
+0 22706 a Fw(Description)p Black 1286 w(The)257 b(function)i
+Fu(CVodeGetSensNonlinSolvStats)i Fw(returns)256 b(the)h(sensitivit)-31
+b(y-related)261 b(nonlinear)6814 24034 y(solv)-31 b(er)370
+b(statistics)g(as)f(a)h(group.)p Black 0 25802 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 25802 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 27349
+a Fu(nSniters)p Black 973 w Fw(\()p Fu(long)582 b(int)p
+Fw(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(nonlinear)h(iterations)g
+(p)31 b(erformed.)p Black 6814 28895 a Fu(nSncfails)p
+Black 555 w Fw(\()p Fu(long)582 b(int)p Fw(\))370 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(nonlinear)g(con)-31 b(v)g(ergence)370
+b(failures.)p Black 0 30663 a(Return)f(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p
+Black 6814 32431 a Fu(CV)p 8046 32431 V 419 w(SUCCESS)p
+Black 973 w Fw(The)g(optional)j(output)e(v)-61 b(alues)370
+b(ha)-31 b(v)g(e)370 b(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 33978 a Fu(CV)p 8046 33978 V 419 w(MEM)p 10208
+33978 V 419 w(NULL)p Black 554 w Fw(The)f Fu(cvode)p
+18685 33978 V 419 w(mem)h Fw(p)31 b(oin)-31 b(ter)370
+b(is)f Fu(NULL)p Fw(.)p Black 6814 35525 a Fu(CV)p 8046
+35525 V 419 w(NO)p 9627 35525 V 418 w(SENS)p Black 1136
+w Fw(F)-92 b(orw)-31 b(ard)369 b(sensitivit)-31 b(y)371
+b(analysis)g(w)-31 b(as)369 b(not)h(initialized.)p 0
+37791 20512 45 v 0 39377 45 1587 v 376 38799 a Fu
+(CVodeGetNumStgrSensNonlinSolvIters)p 20468 39377 V 0
+39421 20512 45 v Black 0 40701 a Fw(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVodeGetNumStgrSensNonlinSolvIters\(cvode)p
+34192 40701 349 45 v 424 w(mem,)h(nSTGR1niters\);)p Black
+0 42469 a Fw(Description)p Black 1286 w(The)375 b(function)i
+Fu(CVodeGetNumStgrSensNonlinSolvIters)j Fw(returns)374
+b(the)h(n)-31 b(um)g(b)31 b(er)375 b(of)h(nonlin-)6814
+43797 y(ear)486 b(\(functional)j(or)d(Newton\))i(iterations)g(p)31
+b(erformed)486 b(for)g(eac)-31 b(h)487 b(sensitivit)-31
+b(y)488 b(equation)g(sepa-)6814 45126 y(rately)-92 b(,)370
+b(in)g(the)f Fu(CV)p 14629 45126 V 419 w(STAGGERED1)i
+Fw(case.)p Black 0 46894 a(Argumen)-31 b(ts)p Black Black
+1517 w Fu(cvode)p 9789 46894 V 419 w(mem)p Black 554
+w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370 b Fw(memory)g(blo)31
+b(c)-31 b(k.)p Black 6814 48440 a Fu(nSTGR1niters)p Black
+555 w Fw(\()p Fu(long)582 b(int)g(*)p Fw(\))437 b(an)h(arra)-31
+b(y)437 b(\(of)h(dimension)g Fu(Ns)p Fw(\))g(whic)-31
+b(h)437 b(will)i(b)31 b(e)437 b(set)f(with)j(the)12435
+49768 y(n)-31 b(um)g(b)31 b(er)352 b(of)h(nonlinear)g(iterations)h(p)31
+b(erformed)352 b(for)h(eac)-31 b(h)352 b(sensitivit)-31
+b(y)355 b(system)d(indi-)12435 51097 y(vidually)-92 b(.)p
+Black 0 52865 a(Return)369 b(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black
+6814 54633 a Fu(CV)p 8046 54633 V 419 w(SUCCESS)p Black
+973 w Fw(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfully)g(set.)p Black 6814 56179 a
+Fu(CV)p 8046 56179 V 419 w(MEM)p 10208 56179 V 419 w(NULL)p
+Black 554 w Fw(The)g Fu(cvode)p 18685 56179 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+6814 57726 a Fu(CV)p 8046 57726 V 419 w(NO)p 9627 57726
+V 418 w(SENS)p Black 1136 w Fw(F)-92 b(orw)-31 b(ard)369
+b(sensitivit)-31 b(y)371 b(analysis)g(w)-31 b(as)369
+b(not)h(initialized.)p Black 0 60271 a(Notes)p Black
+5200 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1497
+b Fw(The)370 b(user)e(m)-31 b(ust)370 b(allo)31 b(cate)371
+b(space)e(for)h Fu(nSTGR1niters)p Fw(.)p 0 62793 22837
+45 v 0 64379 45 1587 v 376 63801 a Fu
+(CVodeGetNumStgrSensNonlinSolvConvFails)p 22792 64379
+V 0 64423 22837 45 v Black 0 65703 a Fw(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVodeGetNumStgrSensNonlinSolvConvFails\(cvode)
+p 36516 65703 349 45 v 425 w(mem,)h(nSTGR1ncfails\);)p
+Black 0 67471 a Fw(Description)p Black 1286 w(The)246
+b(function)i Fu(CVodeGetNumStgrSensNonlinSolvConvFails)k
+Fw(returns)245 b(the)h(n)-31 b(um)g(b)31 b(er)246 b(of)h(non-)6814
+68799 y(linear)327 b(con)-31 b(v)g(ergence)327 b(failures)f(that)h(ha)
+-31 b(v)g(e)327 b(o)31 b(ccurred)325 b(for)h(eac)-31
+b(h)327 b(sensitivit)-31 b(y)328 b(equation)f(separately)-92
+b(,)6814 70128 y(in)369 b(the)h Fu(CV)p 11244 70128 V
+419 w(STAGGERED1)g Fw(case.)p Black 0 71896 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvode)p 9789 71896 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fs(cv)-25 b(odes)370
+b Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 73442
+a Fu(nSTGR1ncfails)p Black 555 w Fw(\()p Fu(long)583
+b(int)e(*)p Fw(\))385 b(an)f(arra)-31 b(y)385 b(\(of)g(dimension)g
+Fu(Ns)p Fw(\))g(whic)-31 b(h)385 b(will)h(b)31 b(e)383
+b(set)h(with)i(the)12435 74771 y(n)-31 b(um)g(b)31 b(er)380
+b(of)g(nonlinear)h(con)-31 b(v)g(ergence)381 b(failures)g(for)f(eac)-31
+b(h)380 b(sensitivit)-31 b(y)382 b(system)e(indi-)12435
+76099 y(vidually)-92 b(.)p Black 0 77867 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black Black eop
+%%Page: 97 107
+97 106 bop Black 4000 2701 a Fx(6.3)425 b(User-supplied)h(routines)g
+(for)f(forw)-35 b(ard)426 b(sensitivit)-35 b(y)423 b(analysis)14593
+b(97)p 4000 3144 48001 45 v Black Black 10814 6974 a
+Fu(CV)p 12046 6974 349 45 v 419 w(SUCCESS)p Black 973
+w Fw(The)369 b(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfully)g(set.)p Black 10814 8673 a
+Fu(CV)p 12046 8673 V 419 w(MEM)p 14208 8673 V 419 w(NULL)p
+Black 554 w Fw(The)g Fu(cvode)p 22685 8673 V 419 w(mem)h
+Fw(p)31 b(oin)-31 b(ter)370 b(is)f Fu(NULL)p Fw(.)p Black
+10814 10372 a Fu(CV)p 12046 10372 V 419 w(NO)p 13627
+10372 V 418 w(SENS)p Black 1136 w Fw(F)-92 b(orw)-31
+b(ard)369 b(sensitivit)-31 b(y)371 b(analysis)g(w)-31
+b(as)369 b(not)h(initialized.)p Black 4000 13220 a(Notes)p
+Black 5200 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1497
+b Fw(The)370 b(user)e(m)-31 b(ust)370 b(allo)31 b(cate)371
+b(space)e(for)h Fu(nSTGR1ncfails)p Fw(.)4000 17674 y
+Fr(6.3)1793 b(User-supplied)600 b(routines)g(for)d(forw)-50
+b(ard)599 b(sensitivit)-50 b(y)601 b(analysis)4000 20376
+y Fw(In)284 b(addition)j(to)e(the)g(required)f(and)h(optional)j
+(user-supplied)c(routines)h(describ)31 b(ed)283 b(in)i
+Fn(x)p Fw(5.6,)304 b(when)284 b(using)h Fs(cv)-25 b(odes)4000
+21705 y Fw(for)436 b(forw)-31 b(ard)436 b(sensitivit)-31
+b(y)438 b(analysis,)455 b(the)436 b(user)e(has)i(the)g(option)i(of)e
+(pro)-31 b(viding)437 b(a)f(routine)h(that)g(calculates)h(the)4000
+23033 y(righ)-31 b(t-hand)371 b(side)e(of)g(the)h(sensitivit)-31
+b(y)371 b(equations)g(\(3.9\).)5660 24511 y(By)409 b(default,)420
+b Fs(cv)-25 b(odes)408 b Fw(uses)g(di\256erence)f(quotien)-31
+b(t)411 b(appro)-31 b(ximation)411 b(routines)e(for)f(the)h(righ)-31
+b(t-hand)410 b(sides)d(of)4000 25839 y(the)332 b(sensitivit)-31
+b(y)334 b(equations.)482 b(Ho)-31 b(w)g(ev)g(er,)342
+b Fs(cv)-25 b(odes)332 b Fw(allo)-31 b(ws)334 b(the)f(option)g(for)f
+(user-de\257ned)f(sensitivit)-31 b(y)334 b(righ)-31 b(t-hand)4000
+27168 y(side)487 b(routines)g(\(whic)-31 b(h)488 b(also)g(pro)-31
+b(vides)487 b(a)g(mec)-31 b(hanism)489 b(for)e(in)-31
+b(terfacing)489 b Fs(cv)-25 b(odes)487 b Fw(to)h(routines)f(generated)h
+(b)-31 b(y)4000 28496 y(automatic)372 b(di\256eren)-31
+b(tiation\).)4000 32167 y Fx(Sensitivit)c(y)424 b(equations)h(righ)-35
+b(t-hand)425 b(side)g(\(all)e(at)i(once\))4000 34488
+y Fw(If)290 b(the)h Fu(CV)p 8088 34488 V 419 w(SIMULTANEOUS)h
+Fw(or)e Fu(CV)p 18210 34488 V 419 w(STAGGERED)h Fw(approac)-31
+b(h)292 b(w)-31 b(as)291 b(selected)f(in)h(the)g(call)h(to)f
+Fu(CVodeSensMalloc)p Fw(,)309 b(the)4000 35816 y(user)303
+b(ma)-31 b(y)305 b(pro)-31 b(vide)304 b(the)g(righ)-31
+b(t-hand)305 b(sides)f(of)g(the)g(sensitivit)-31 b(y)306
+b(equations)f(\(3.9\),)320 b(for)303 b(all)i(sensitivit)-31
+b(y)306 b(parameters)4000 37145 y(at)370 b(once,)g(through)g(a)f
+(function)i(of)f(t)-31 b(yp)31 b(e)369 b Fu(CVSensRhsFn)i
+Fw(de\257ned)e(b)-31 b(y:)p 4000 39807 7146 45 v 4000
+41148 45 1341 v 4376 40815 a Fu(CVSensRhsFn)p 11101 41148
+V 4000 41192 7146 45 v Black 4000 42693 a Fw(De\257nition)p
+Black 2034 w Fu(typedef)582 b(void)g(\(*CVSensRhsFn\)\()r(int)g(Ns,)f
+(realtype)i(t,)27086 44022 y(N)p 27737 44022 349 45 v
+419 w(Vector)f(y,)f(N)p 34548 44022 V 419 w(Vector)h(ydot,)27086
+45350 y(N)p 27737 45350 V 419 w(Vector)g(*yS,)g(N)p 35711
+45350 V 418 w(Vector)g(*ySdot,)27086 46678 y(void)g(*fS)p
+31805 46678 V 419 w(data,)27086 48007 y(N)p 27737 48007
+V 419 w(Vector)g(tmp1,)g(N)p 36292 48007 V 418 w(Vector)g(tmp2\);)p
+Black 4000 50027 a Fw(Purp)31 b(ose)p Black 2884 w(This)516
+b(function)h(computes)f(the)g(sensitivit)-31 b(y)518
+b(righ)-31 b(t-hand)517 b(side)f(for)g(all)g(sensitivit)-31
+b(y)518 b(equations)10814 51355 y(at)512 b(once.)920
+b(It)511 b(m)-31 b(ust)512 b(compute)g(the)g(v)-31 b(ectors)512
+b(\()p Fl(@)61 b(f)119 b(=@)61 b(y)40 b Fw(\))p Fl(s)34971
+51521 y Fj(i)35341 51355 y Fw(\()p Fl(t)p Fw(\))341 b(+)g(\()p
+Fl(@)61 b(f)119 b(=@)61 b(p)41643 51521 y Fj(i)42013
+51355 y Fw(\))512 b(and)f(store)g(them)i(in)10814 52683
+y Fu(ySdot[i])p Fw(.)p Black 4000 54753 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(t)p Black 3878 w Fw(is)369
+b(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(indep)31
+b(enden)-31 b(t)370 b(v)-61 b(ariable.)p Black 10814
+56453 a Fu(y)p Black 3878 w Fw(is)369 b(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(state)g(v)-31
+b(ector,)370 b Fl(y)40 b Fw(\()p Fl(t)p Fw(\).)p Black
+10814 58152 a Fu(ydot)p Black 2135 w Fw(is)369 b(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(righ)-31 b(t-hand)371
+b(side)e(of)g(the)h(state)g(equations.)p Black 10814
+59851 a Fu(yS)p Black 3297 w Fw(con)-31 b(tains)371 b(the)e(curren)-31
+b(t)369 b(v)-61 b(alues)369 b(of)h(the)f(sensitivit)-31
+b(y)372 b(v)-31 b(ectors.)p Black 10814 61550 a Fu(ySdot)p
+Black 1554 w Fw(is)368 b(the)g(output)i(of)e Fu(CVSensRhsFn)p
+Fw(.)494 b(On)368 b(exit)h(it)g(m)-31 b(ust)369 b(con)-31
+b(tain)370 b(the)e(sensitivit)-31 b(y)371 b(righ)-31
+b(t-)15273 62879 y(hand)369 b(side)g(v)-31 b(ectors.)p
+Black 10814 64578 a Fu(f)p 11465 64578 V 419 w(data)p
+Black 1135 w Fw(is)505 b(a)g(p)31 b(oin)-31 b(ter)506
+b(to)f(user)f(data)i(-)f(the)g(same)h(as)f(the)g Fu(fS)p
+38754 64578 V 418 w(data)h Fw(parameter)g(passed)e(to)15273
+65906 y Fu(CVodeSetSensFdata)p Fw(.)p Black 10814 67606
+a Fu(tmp1)p Black Black 10814 69305 a(tmp2)p Black 2135
+w Fw(are)369 b Fu(N)p 17772 69305 V 418 w(Vector)p Fw(s)h(whic)-31
+b(h)370 b(can)f(b)31 b(e)369 b(used)g(as)g(temp)31 b(orary)370
+b(storage.)p Black 4000 71375 a(Return)f(v)-61 b(alue)p
+Black 554 w(A)369 b Fu(CVSensRhsFn)i Fw(function)f(t)-31
+b(yp)31 b(e)370 b(do)31 b(es)369 b(not)h(ha)-31 b(v)g(e)370
+b(a)f(return)g(v)-61 b(alue.)p Black 4000 74222 a(Notes)p
+Black 5200 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1581
+b Fw(A)453 b(sensitivit)-31 b(y)456 b(righ)-31 b(t-hand)454
+b(side)f(function)i(of)e(t)-31 b(yp)31 b(e)454 b Fu(CVSensRhsFn)g
+Fw(is)f(not)h(compatible)10814 75551 y(with)370 b(the)g
+Fu(CV)p 16474 75551 V 419 w(STAGGERED1)g Fw(approac)-31
+b(h.)10814 77621 y(Allo)31 b(cation)372 b(of)e(memory)g(for)f
+Fu(ySdot)h Fw(is)f(handled)h(within)h Fs(cv)-25 b(odes)p
+Fw(.)p Black Black eop
+%%Page: 98 108
+98 107 bop Black 0 2701 a Fx(98)19434 b(Using)425 b(CV)-35
+b(ODES)426 b(for)f(F)-106 b(orw)-35 b(ard)426 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black 0 6974 a(Sensitivit)-35
+b(y)424 b(equations)h(righ)-35 b(t-hand)425 b(side)g(\(one)h(at)e(a)g
+(time\))0 9029 y Fw(Alternativ)-31 b(ely)-92 b(,)410
+b(the)399 b(user)f(ma)-31 b(y)400 b(pro)-31 b(vide)399
+b(the)g(sensitivit)-31 b(y)401 b(righ)-31 b(t-hand)401
+b(sides,)406 b(one)399 b(sensitivit)-31 b(y)401 b(parameter)f(at)g(a)0
+10357 y(time,)374 b(through)f(a)f(function)h(of)g(t)-31
+b(yp)31 b(e)372 b Fu(CVSensRhs1Fn)p Fw(.)503 b(Note)372
+b(that)i(a)e(sensitivit)-31 b(y)374 b(righ)-31 b(t-hand)373
+b(side)f(function)h(of)0 11685 y(t)-31 b(yp)31 b(e)357
+b Fu(CVSensRhs1Fn)h Fw(is)f(compatible)i(with)f(an)-31
+b(y)357 b(v)-61 b(alid)357 b(v)-61 b(alue)357 b(of)g(the)g
+Fu(CVodeSensMalloc)i Fw(argumen)-31 b(t)358 b Fu(ism)p
+Fw(,)i(and)0 13014 y(is)369 b(required)g(if)h Fu(ism)p
+Fw(=)p Fu(CV)p 10306 13014 349 45 v 419 w(STAGGERED1)p
+Fw(.)494 b(The)369 b(t)-31 b(yp)31 b(e)370 b Fu(CVSensRhs1Fn)h
+Fw(is)e(de\257ned)g(b)-31 b(y)p 0 14915 7727 45 v 0 16256
+45 1341 v 376 15923 a Fu(CVSensRhs1Fn)p 7682 16256 V
+0 16300 7727 45 v Black 0 17658 a Fw(De\257nition)p Black
+2034 w Fu(typedef)582 b(void)g(\(*CVSensRhs1Fn\)\()r(int)g(Ns,)f
+(realtype)i(t,)23667 18986 y(N)p 24318 18986 349 45 v
+419 w(Vector)f(y,)f(N)p 31129 18986 V 419 w(Vector)h(ydot,)23667
+20315 y(int)g(iS,)f(N)p 28967 20315 V 419 w(Vector)h(yS,)g(N)p
+36360 20315 V 418 w(Vector)g(ySdot,)23667 21643 y(void)g(*fS)p
+28386 21643 V 419 w(data,)23667 22971 y(N)p 24318 22971
+V 419 w(Vector)g(tmp1,)g(N)p 32873 22971 V 418 w(Vector)g(tmp2\);)p
+Black 0 24704 a Fw(Purp)31 b(ose)p Black 2884 w(This)375
+b(function)g(computes)g(the)g(sensitivit)-31 b(y)376
+b(righ)-31 b(t-hand)376 b(side)e(for)h(one)f(sensitivit)-31
+b(y)377 b(equation)f(at)6814 26033 y(a)j(time.)523 b(It)379
+b(m)-31 b(ust)380 b(compute)g(the)f(v)-31 b(ector)380
+b(\()p Fl(@)61 b(f)119 b(=@)61 b(y)40 b Fw(\))p Fl(s)28912
+26199 y Fj(i)29282 26033 y Fw(\()p Fl(t)p Fw(\))253 b(+)f(\()p
+Fl(@)61 b(f)119 b(=@)61 b(p)35407 26199 y Fj(i)35777
+26033 y Fw(\))379 b(for)g Fl(i)p Fw(=)p Fu(iS)h Fw(and)f(store)g(it)h
+(in)6814 27361 y Fu(ySdot)p Fw(.)p Black 0 29145 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(t)p Black 3878 w Fw(is)369
+b(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(indep)31
+b(enden)-31 b(t)370 b(v)-61 b(ariable.)p Black 6814 30700
+a Fu(y)p Black 3878 w Fw(is)369 b(the)g(curren)-31 b(t)369
+b(v)-61 b(alue)370 b(of)f(the)h(state)g(v)-31 b(ector,)370
+b Fl(y)40 b Fw(\()p Fl(t)p Fw(\).)p Black 6814 32256
+a Fu(ydot)p Black 2135 w Fw(is)369 b(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(righ)-31 b(t-hand)371
+b(side)e(of)g(the)h(state)g(equations.)p Black 6814 33812
+a Fu(iS)p Black 3297 w Fw(is)384 b(the)h(index)g(of)g(the)g(parameter)h
+(for)e(whic)-31 b(h)386 b(the)f(sensitivit)-31 b(y)387
+b(righ)-31 b(t-hand)386 b(side)e(m)-31 b(ust)11273 35141
+y(b)31 b(e)368 b(computed.)p Black 6814 36696 a Fu(yS)p
+Black 3297 w Fw(con)-31 b(tains)371 b(the)e(curren)-31
+b(t)369 b(v)-61 b(alue)369 b(of)h(the)g Fu(iS)p Fw(-th)f(sensitivit)-31
+b(y)372 b(v)-31 b(ector.)p Black 6814 38252 a Fu(ySdot)p
+Black 1554 w Fw(is)326 b(the)g(output)h(of)f Fu(CVSensRhs1Fn)p
+Fw(.)480 b(On)325 b(exit)i(it)g(m)-31 b(ust)326 b(con)-31
+b(tain)328 b(the)e Fu(iS)p Fw(-th)h(sensitivit)-31 b(y)11273
+39581 y(righ)g(t-hand)370 b(side)f(v)-31 b(ector.)p Black
+6814 41136 a Fu(f)p 7465 41136 V 419 w(data)p Black 1135
+w Fw(is)505 b(a)g(p)31 b(oin)-31 b(ter)506 b(to)f(user)f(data)i(-)f
+(the)g(same)h(as)f(the)g Fu(fS)p 34754 41136 V 418 w(data)h
+Fw(parameter)g(passed)e(to)11273 42465 y Fu(CVodeSetSensFdata)p
+Fw(.)p Black 6814 44021 a Fu(tmp1)p Black Black 6814
+45577 a(tmp2)p Black 2135 w Fw(are)369 b Fu(N)p 13772
+45577 V 418 w(Vector)p Fw(s)h(whic)-31 b(h)370 b(can)f(b)31
+b(e)369 b(used)g(as)g(temp)31 b(orary)370 b(storage.)p
+Black 0 47360 a(Return)f(v)-61 b(alue)p Black 554 w(A)369
+b Fu(CVSensRhs1Fn)i Fw(function)g(t)-31 b(yp)31 b(e)369
+b(do)31 b(es)369 b(not)h(ha)-31 b(v)g(e)370 b(a)g(return)e(v)-61
+b(alue.)p Black 0 49143 a(Notes)p Black 4072 w(Allo)31
+b(cation)372 b(of)e(memory)g(for)f Fu(ySdot)h Fw(is)f(handled)h(within)
+h Fs(cv)-25 b(odes)p Fw(.)0 52837 y Fr(6.4)1793 b(Note)598
+b(on)f(using)i(partial)f(error)h(con)-50 b(trol)0 55273
+y Fw(F)-92 b(or)518 b(some)h(problems,)556 b(when)519
+b(sensitivities)h(are)f(excluded)g(from)g(the)g(error)e(con)-31
+b(trol)520 b(test,)557 b(the)519 b(b)31 b(eha)-31 b(vior)519
+b(of)0 56601 y Fs(cv)-25 b(odes)491 b Fw(ma)-31 b(y)492
+b(app)31 b(ear)491 b(at)g(\257rst)g(glance)h(to)f(b)31
+b(e)491 b(erroneous.)856 b(One)491 b(w)-31 b(ould)492
+b(exp)31 b(ect)491 b(that,)523 b(in)491 b(suc)-31 b(h)490
+b(cases,)522 b(the)0 57929 y(sensitivit)-31 b(y)464 b(v)-61
+b(ariables)463 b(w)-31 b(ould)464 b(not)f(in\260uence)f(in)h(an)-31
+b(y)463 b(w)-31 b(a)g(y)463 b(the)g(step)f(size)g(selection.)773
+b(A)462 b(comparison)i(of)f(the)0 59258 y(solv)-31 b(er)361
+b(diagnostics)h(rep)31 b(orted)360 b(for)h Fu(cvdx)f
+Fw(and)h(the)g(second)f(run)g(of)h(the)f Fu(cvfdx)h Fw(example)h(in)f
+([17)q(])g(indicates)h(that)0 60586 y(this)370 b(ma)-31
+b(y)370 b(not)g(alw)-31 b(a)g(ys)371 b(b)31 b(e)369 b(the)g(case.)1660
+61921 y(The)480 b(short)e(explanation)k(of)e(this)f(b)31
+b(eha)-31 b(vior)480 b(is)f(that)h(the)f(step)g(size)g(selection)h
+(implemen)-31 b(ted)481 b(b)-31 b(y)479 b(the)g(er-)0
+63249 y(ror)472 b(con)-31 b(trol)474 b(mec)-31 b(hanism)474
+b(in)f Fs(cv)-25 b(odes)473 b Fw(is)g(based)f(on)h(the)g(magnitude)i
+(of)e(the)g(correction)g(calculated)i(b)-31 b(y)473 b(the)0
+64577 y(nonlinear)511 b(solv)-31 b(er.)914 b(As)509 b(men)-31
+b(tioned)511 b(in)f Fn(x)p Fw(6.2.1,)548 b(ev)-31 b(en)509
+b(with)i(partial)g(error)e(con)-31 b(trol)511 b(selected)f(in)g(the)f
+(call)i(to)0 65906 y Fu(CVodeSensMalloc)p Fw(,)473 b(the)450
+b(sensitivit)-31 b(y)452 b(v)-61 b(ariables)450 b(are)g(included)g(in)g
+(the)g(con)-31 b(v)g(ergence)451 b(tests)f(of)g(the)h(nonlinear)0
+67234 y(solv)-31 b(er.)1660 68568 y(When)465 b(using)g(the)g(sim)-31
+b(ultaneous)467 b(corrector)e(metho)31 b(d)466 b(\()p
+Fn(x)p Fw(3.2\),)491 b(the)465 b(nonlinear)h(system)f(that)i(is)d(solv)
+-31 b(ed)466 b(at)0 69897 y(eac)-31 b(h)528 b(step)e(in)-31
+b(v)g(olv)g(es)530 b(b)31 b(oth)527 b(the)g(state)h(and)g(sensitivit)
+-31 b(y)529 b(equations.)968 b(In)526 b(this)i(case,)567
+b(it)527 b(is)g(easy)h(to)f(see)g(ho)-31 b(w)0 71225
+y(the)443 b(sensitivit)-31 b(y)445 b(v)-61 b(ariables)444
+b(ma)-31 b(y)444 b(a\256ect)f(the)g(con)-31 b(v)g(ergence)444
+b(rate)f(of)g(the)g(nonlinear)h(solv)-31 b(er)444 b(and)f(therefore)g
+(the)0 72553 y(step)422 b(size)g(selection.)652 b(The)422
+b(case)g(of)g(the)g(staggered)h(corrector)f(approac)-31
+b(h)423 b(is)f(more)g(subtle.)651 b(After)422 b(all,)437
+b(in)422 b(this)0 73882 y(case)473 b(\()p Fu(ism=CV)p
+6433 73882 V 420 w(STAGGERED)h Fw(or)g Fu(ism=CV)p 17503
+73882 V 419 w(STAGGERED1)h Fw(in)e(the)h(call)g(to)h
+Fu(CVodeSensMalloc)p Fw(\),)502 b(the)474 b(sensitivit)-31
+b(y)0 75210 y(v)-61 b(ariables)445 b(at)h(a)f(giv)-31
+b(en)446 b(step)f(are)f(computed)i(only)g(once)f(the)g(solv)-31
+b(er)445 b(for)g(the)g(nonlinear)h(state)g(equations)g(has)0
+76539 y(con)-31 b(v)g(erged.)526 b(Ho)-31 b(w)g(ev)g(er,)385
+b(if)380 b(the)h(nonlinear)g(system)f(corresp)31 b(onding)380
+b(to)h(the)g(sensitivit)-31 b(y)382 b(equations)f(has)f(con)-31
+b(v)g(er-)0 77867 y(gence)346 b(problems,)352 b Fs(cv)-25
+b(odes)346 b Fw(will)i(attempt)g(to)e(impro)-31 b(v)g(e)348
+b(the)e(initial)j(guess)c(b)-31 b(y)346 b(reducing)g(the)h(step)e(size)
+h(in)g(order)p Black Black eop
+%%Page: 99 109
+99 108 bop Black 4000 2701 a Fx(6.4)425 b(Note)h(on)f(using)g(partial)e
+(error)j(con)-35 b(trol)25246 b(99)p 4000 3144 48001
+45 v Black 4000 6974 a Fw(to)308 b(pro)-31 b(vide)308
+b(a)g(b)31 b(etter)307 b(prediction)h(of)g(the)g(sensitivit)-31
+b(y)309 b(v)-61 b(ariables.)473 b(Moreo)-31 b(v)g(er,)320
+b(ev)-31 b(en)307 b(if)h(there)f(are)g(no)h(con)-31 b(v)g(ergence)4000
+8302 y(failures)454 b(in)g(the)f(solution)i(of)f(the)g(sensitivit)-31
+b(y)455 b(system,)475 b Fs(cv)-25 b(odes)454 b Fw(ma)-31
+b(y)454 b(trigger)g(a)g(call)h(to)f(the)f(linear)h(solv)-31
+b(er's)4000 9631 y(setup)287 b(routine)g(whic)-31 b(h)288
+b(t)-31 b(ypically)290 b(in)-31 b(v)g(olv)g(es)289 b(reev)-61
+b(aluation)289 b(of)e(Jacobian)h(information)i(\(Jacobian)f(appro)-31
+b(ximation)4000 10959 y(in)449 b(the)g(case)g(of)h Fs(cvdense)f
+Fw(and)h Fs(cvband)p Fw(,)469 b(or)449 b(preconditioner)h(data)g(in)f
+(the)h(case)e(of)i Fs(cvspgmr)p Fw(\).)731 b(The)450
+b(new)4000 12287 y(Jacobian)331 b(information)i(will)e(b)31
+b(e)329 b(used)h(b)-31 b(y)329 b(subsequen)-31 b(t)330
+b(calls)h(to)f(the)g(nonlinear)h(solv)-31 b(er)330 b(for)g(the)g(state)
+g(equations)4000 13616 y(and,)370 b(in)f(this)h(w)-31
+b(a)g(y)-92 b(,)371 b(p)31 b(oten)-31 b(tially)372 b(a\256ect)e(the)g
+(step)f(size)g(selection.)5660 14944 y(When)457 b(using)h(the)g(sim)-31
+b(ultaneous)460 b(corrector)d(metho)31 b(d)458 b(it)h(is)e(not)h(p)31
+b(ossible)458 b(to)g(decide)g(whether)g(nonlinear)4000
+16272 y(solv)-31 b(er)462 b(con)-31 b(v)g(ergence)463
+b(failures)f(or)g(calls)g(to)h(the)f(linear)g(solv)-31
+b(er)462 b(setup)g(routine)g(ha)-31 b(v)g(e)463 b(b)31
+b(een)461 b(triggered)i(b)-31 b(y)462 b(con-)4000 17601
+y(v)-31 b(ergence)422 b(problems)h(due)f(to)g(the)h(state)g(or)e(the)i
+(sensitivit)-31 b(y)424 b(equations.)653 b(When)421 b(using)i(one)f(of)
+h(the)f(staggered)4000 18929 y(corrector)334 b(metho)31
+b(ds)334 b(ho)-31 b(w)g(ev)g(er,)343 b(these)333 b(situations)j(can)e
+(b)31 b(e)334 b(iden)-31 b(ti\257ed)335 b(b)-31 b(y)334
+b(carefully)h(monitoring)h(the)f(diagnostic)4000 20257
+y(information)296 b(pro)-31 b(vided)294 b(through)g(optional)i
+(outputs.)468 b(If)293 b(there)g(are)g(no)h(con)-31 b(v)g(ergence)294
+b(failures)g(in)f(the)h(sensitivit)-31 b(y)4000 21586
+y(nonlinear)320 b(solv)-31 b(er,)329 b(and)319 b(none)f(of)h(the)g
+(calls)g(to)g(the)g(linear)g(solv)-31 b(er)319 b(setup)f(routine)h(w)
+-31 b(ere)318 b(made)h(b)-31 b(y)319 b(the)g(sensitivit)-31
+b(y)4000 22914 y(nonlinear)370 b(solv)-31 b(er,)371 b(then)e(the)g
+(step)g(size)h(selection)g(is)f(not)h(a\256ected)g(b)-31
+b(y)369 b(the)h(sensitivit)-31 b(y)371 b(v)-61 b(ariables.)5660
+24242 y(Finally)-92 b(,)463 b(the)443 b(user)e(m)-31
+b(ust)443 b(b)31 b(e)442 b(w)-31 b(arned)443 b(that)h(the)e(e\256ect)h
+(of)g(app)31 b(ending)443 b(sensitivit)-31 b(y)445 b(equations)f(to)f
+(a)g(giv)-31 b(en)4000 25571 y(system)433 b(of)f(ODEs)g(on)h(the)f
+(step)g(size)g(selection)i(\(through)g(the)e(mec)-31
+b(hanisms)433 b(describ)31 b(ed)432 b(ab)31 b(o)-31 b(v)g(e\))434
+b(is)e(problem-)4000 26899 y(dep)31 b(enden)-31 b(t)347
+b(and)g(can)g(therefore)f(lead)i(to)f(either)g(an)g(increase)f(or)h
+(decrease)f(of)h(the)g(total)i(n)-31 b(um)g(b)31 b(er)346
+b(of)h(steps)g(that)4000 28227 y Fs(cv)-25 b(odes)485
+b Fw(tak)-31 b(es)486 b(to)f(complete)i(the)e(sim)-31
+b(ulation.)842 b(A)-31 b(t)486 b(\257rst)e(glance,)516
+b(one)485 b(w)-31 b(ould)486 b(exp)31 b(ect)485 b(that)h(the)f(impact)h
+(of)4000 29556 y(the)420 b(sensitivit)-31 b(y)423 b(v)-61
+b(ariables,)434 b(if)420 b(an)-31 b(y)-92 b(,)434 b(w)-31
+b(ould)422 b(b)31 b(e)419 b(in)i(the)f(direction)h(of)g(increasing)g
+(the)f(step)g(size)g(and)h(therefore)4000 30884 y(reducing)450
+b(the)g(total)i(n)-31 b(um)g(b)31 b(er)449 b(of)i(steps.)733
+b(The)450 b(argumen)-31 b(t)452 b(for)d(this)h(is)g(that)h(the)f
+(presence)e(of)j(the)f(sensitivit)-31 b(y)4000 32213
+y(v)-61 b(ariables)386 b(in)f(the)g(con)-31 b(v)g(ergence)386
+b(test)g(of)f(the)g(nonlinear)i(solv)-31 b(er)385 b(can)g(only)h(lead)g
+(to)g(additional)i(iterations)f(\(and)4000 33541 y(therefore)459
+b(a)f(smaller)i(\257nal)f(correction\),)483 b(or)458
+b(to)i(additional)h(calls)f(to)f(the)g(linear)g(solv)-31
+b(er)459 b(setup)g(routine)g(\(and)4000 34869 y(therefore)328
+b(more)g(up-to-date)i(Jacobian)g(information\),)340 b(b)31
+b(oth)328 b(of)h(whic)-31 b(h)329 b(will)h(lead)e(to)h(larger)g(steps)e
+(b)31 b(eing)329 b(tak)-31 b(en)4000 36198 y(b)g(y)425
+b Fs(cv)-25 b(odes)p Fw(.)662 b(Ho)-31 b(w)g(ev)g(er,)441
+b(this)425 b(is)h(true)f(only)h(lo)31 b(cally)-92 b(.)662
+b(Ov)-31 b(erall,)441 b(a)426 b(larger)f(in)-31 b(tegration)429
+b(step)c(tak)-31 b(en)426 b(at)g(a)g(giv)-31 b(en)4000
+37526 y(time)498 b(ma)-31 b(y)499 b(lead)f(to)g(step)f(size)g
+(reductions)g(at)h(later)g(times)g(\(due)g(to)f(either)h(nonlinear)g
+(solv)-31 b(er)498 b(con)-31 b(v)g(ergence)4000 38854
+y(failures)370 b(or)f(error)f(test)i(failures\).)p Black
+Black eop
+%%Page: 100 110
+100 109 bop Black Black Black Black eop
+%%Page: 101 111
+101 110 bop Black Black 4000 15314 a Ft(Chapter)861 b(7)4000
+20888 y Fv(Using)1033 b(CV)-86 b(ODES)1032 b(for)h(Adjoin)-86
+b(t)4000 24209 y(Sensitivit)g(y)1033 b(Analysis)4000
+30003 y Fw(This)335 b(c)-31 b(hapter)336 b(describ)31
+b(es)334 b(the)h(use)f(of)i Fs(cv)-25 b(odes)335 b Fw(to)h(compute)g
+(sensitivities)h(of)f(deriv)-31 b(ed)335 b(functions)h(using)g(adjoin)
+-31 b(t)4000 31332 y(sensitivit)g(y)461 b(analysis.)765
+b(As)459 b(men)-31 b(tioned)461 b(b)31 b(efore,)482 b(the)459
+b(adjoin)-31 b(t)462 b(sensitivit)-31 b(y)461 b(mo)31
+b(dule)460 b(of)g Fs(cv)-25 b(odes)460 b Fw(pro)-31 b(vides)460
+b(the)4000 32660 y(infrastructure)331 b(for)g(in)-31
+b(tegrating)333 b(bac)-31 b(kw)g(ard)333 b(in)e(time)g(an)-31
+b(y)332 b(system)f(of)g(ODEs)f(that)i(dep)31 b(ends)330
+b(on)h(the)g(solution)h(of)4000 33988 y(the)398 b(original)j(IVP)-92
+b(,)398 b(b)-31 b(y)399 b(pro)-31 b(viding)399 b(v)-61
+b(arious)399 b(in)-31 b(terfaces)399 b(to)g(the)f(main)h
+Fs(cv)-25 b(odes)399 b Fw(in)-31 b(tegrator,)408 b(as)398
+b(w)-31 b(ell)399 b(as)f(sev)-31 b(eral)4000 35317 y(supp)31
+b(orting)309 b(user-callable)i(functions.)473 b(F)-92
+b(or)308 b(this)i(reason,)321 b(in)309 b(the)g(follo)-31
+b(wing)313 b(sections)c(w)-31 b(e)309 b(refer)f(to)i(the)f
+Fq(b)-57 b(ackwar)g(d)4000 36645 y(pr)g(oblem)533 b Fw(and)h(not)g(to)g
+(the)g Fq(adjoint)547 b(pr)-57 b(oblem)534 b Fw(when)g(discussing)f
+(details)i(relev)-61 b(an)-31 b(t)534 b(to)g(the)g(ODEs)e(that)j(are)
+4000 37973 y(in)-31 b(tegrated)422 b(bac)-31 b(kw)g(ard)421
+b(in)g(time.)646 b(The)420 b(bac)-31 b(kw)g(ard)422 b(problem)e(can)h
+(b)31 b(e)419 b(the)h(adjoin)-31 b(t)422 b(problem)f(\(3.17\))i(or)d
+(\(3.20\),)4000 39302 y(and)369 b(can)h(b)31 b(e)369
+b(augmen)-31 b(ted)371 b(with)f(some)g(quadrature)f(di\256eren)-31
+b(tial)371 b(equations.)5660 40669 y Fs(cv)-25 b(odes)407
+b Fw(uses)f(v)-61 b(arious)407 b(constan)-31 b(ts)407
+b(for)g(b)31 b(oth)407 b(input)g(and)g(output.)606 b(These)406
+b(are)h(de\257ned)f(as)g(needed)h(in)f(this)4000 41997
+y(c)-31 b(hapter,)370 b(but)g(for)f(con)-31 b(v)g(enience)370
+b(are)f(also)h(listed)h(separately)f(in)f(Chapter)h(11.)5660
+43364 y(W)-92 b(e)494 b(b)31 b(egin)495 b(with)h(a)f(brief)g(o)-31
+b(v)g(erview,)528 b(in)495 b(the)g(form)g(of)g(a)g(sk)-31
+b(eleton)496 b(user)d(program.)870 b(F)-92 b(ollo)-31
+b(wing)497 b(that)f(are)4000 44692 y(detailed)388 b(descriptions)e(of)h
+(the)f(in)-31 b(terface)387 b(to)g(the)g(v)-61 b(arious)386
+b(user-callable)h(functions)g(and)f(of)h(the)f(user-supplied)4000
+46020 y(functions)370 b(that)h(w)-31 b(ere)369 b(not)h(already)g
+(describ)31 b(ed)368 b(in)i Fn(x)p Fw(5.)4000 49885 y
+Fr(7.1)1793 b(A)598 b(sk)-50 b(eleton)599 b(of)f(the)g(user's)i(main)e
+(program)4000 52381 y Fw(The)511 b(follo)-31 b(wing)515
+b(is)510 b(a)i(sk)-31 b(eleton)512 b(of)f(the)g(user's)f(main)i
+(program)g(as)f(an)g(application)j(of)e Fs(cv)-25 b(odes)p
+Fw(.)918 b(The)511 b(user)4000 53709 y(program)298 b(is)f(to)h(ha)-31
+b(v)g(e)298 b(these)f(steps)g(in)h(the)f(order)g(indicated,)313
+b(unless)297 b(otherwise)h(noted.)469 b(F)-92 b(or)297
+b(the)g(sak)-31 b(e)298 b(of)g(brevit)-31 b(y)-92 b(,)4000
+55038 y(w)-31 b(e)449 b(defer)f(man)-31 b(y)450 b(of)f(the)g(details)h
+(to)g(the)f(later)g(sections.)732 b(As)448 b(in)h Fn(x)p
+Fw(5.4,)470 b(most)450 b(steps)e(are)g(indep)31 b(enden)-31
+b(t)449 b(of)h(the)4000 56366 y Fs(nvector)329 b Fw(implemen)-31
+b(tation)333 b(used;)342 b(where)328 b(this)h(is)g(not)h(the)f(case,)
+337 b(usage)329 b(sp)31 b(eci\257cations)330 b(are)e(giv)-31
+b(en)330 b(for)f(the)g(t)-31 b(w)g(o)4000 57695 y(implemen)g(tations)
+329 b(pro)-31 b(vided)326 b(with)g Fs(cv)-25 b(odes)p
+Fw(:)471 b(steps)324 b(mark)-31 b(ed)326 b(with)g([)p
+Fx(P)p Fw(])g(corresp)31 b(ond)324 b(to)i Fs(nvector)p
+46435 57695 368 45 v 440 w(p)-74 b(arallel)p Fw(,)4000
+59023 y(while)370 b(steps)f(mark)-31 b(ed)370 b(with)g([)p
+Fx(S)p Fw(])h(corresp)31 b(ond)368 b(to)i Fs(nvector)p
+29541 59023 V 441 w(serial)p Fw(.)p Black 4553 61612
+a(1.)p Black 493 w Fx(Include)425 b(necessary)g(header)h(\257les)5906
+63494 y Fw(Besides)314 b Fu(cvodes.h)p Fw(,)326 b(the)314
+b(main)h(program)g(m)-31 b(ust)314 b(also)h(include)f
+Fu(cvodea.h)h Fw(whic)-31 b(h)315 b(de\257nes)e(additional)k(t)-31
+b(yp)31 b(es)5906 64822 y(and)368 b(constan)-31 b(ts,)369
+b(and)f(includes)f(function)i(protot)-31 b(yp)31 b(es)368
+b(for)g(the)f(adjoin)-31 b(t)370 b(sensitivit)-31 b(y)369
+b(mo)31 b(dule)368 b(user-callable)5906 66150 y(functions)487
+b(and)f Fu(cvodes.h)p Fw(.)842 b(In)485 b(addition,)517
+b(the)486 b(main)g(program)h(should)e(include)i(an)e
+Fs(nvector)h Fw(imple-)5906 67479 y(men)-31 b(tation)357
+b(header)d(\257le)g(\()p Fu(nvector)p 21039 67479 349
+45 v 420 w(serial.h)h Fw(or)f Fu(nvector)p 31870 67479
+V 419 w(parallel.h)h Fw(for)f(the)g(t)-31 b(w)g(o)356
+b(implemen)-31 b(tations)5906 68807 y(pro)g(vided)479
+b(with)h Fs(cv)-25 b(odes)p Fw(\))479 b(and,)506 b(if)479
+b(Newton)h(iteration)h(w)-31 b(as)478 b(selected,)507
+b(a)478 b(header)g(\257le)h(from)g(the)f(desired)5906
+70136 y(linear)370 b(solv)-31 b(er)370 b(mo)31 b(dule.)p
+Black 4553 72537 a(2.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx([P])424 b(Initialize)f(MPI)p Black 23206 75465
+a(F)-106 b(orw)-35 b(ard)426 b(problem)p Black 4553 77867
+a Fw(3.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Set)g(problem)f
+(dimensions)g(for)g(the)g(forw)-35 b(ard)426 b(problem)p
+Black Black Black eop
+%%Page: 102 112
+102 111 bop Black 0 2701 a Fx(102)19172 b(Using)426 b(CV)-35
+b(ODES)425 b(for)h(Adjoin)-35 b(t)425 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black Black 553
+6974 a Fw(4.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Set)j(initial)c
+(conditions)k(for)f(the)g(forw)-35 b(ard)425 b(problem)p
+Black Black 553 9307 a Fw(5.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx(Create)h Fs(cv)-25 b(odes)425 b Fx(ob)71 b(ject)425
+b(for)g(the)g(forw)-35 b(ard)426 b(problem)p Black Black
+553 11640 a Fw(6.)p Black 0.5 0.5 0.5 TeXcolorrgb 493
+w Fx(Allo)35 b(cate)425 b(in)-35 b(ternal)425 b(memory)g(for)g(the)g
+(forw)-35 b(ard)425 b(problem)p Black Black 553 13973
+a Fw(7.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w Fx(Set)h(optional)e
+(inputs)h(for)g(the)g(forw)-35 b(ard)426 b(problem)p
+Black Black 553 16306 a Fw(8.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx(A)-35 b(ttac)g(h)424 b(linear)h(solv)-35 b(er)425
+b(mo)35 b(dule)425 b(for)g(the)g(forw)-35 b(ard)426 b(problem)p
+Black Black 553 18638 a Fw(9.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx(Set)g(linear)e(solv)-35 b(er)425 b(optional)f(inputs)h(for)g
+(the)g(forw)-35 b(ard)426 b(problem)p Black Black 0 20971
+a Fw(10.)p Black 493 w Fx(Allo)35 b(cate)425 b(space)g(for)g(the)g
+(adjoin)-35 b(t)425 b(computation)1906 22853 y Fw(Call)276
+b Fu(cvadj)p 7123 22853 349 45 v 420 w(mem)581 b(=)h(CVadjMalloc\(\))
+276 b Fw(to)f(allo)31 b(cate)276 b(memory)g(for)e(the)h(com)-31
+b(bined)275 b(forw)-31 b(ard-bac)g(kw)g(ard)277 b(prob-)1906
+24182 y(lem)334 b(\(see)g Fn(x)p Fw(7.2.1)h(for)e(more)h(details\).)483
+b(This)333 b(call)i(requires)d Fu(Nd)p Fw(,)341 b(the)334
+b(n)-31 b(um)g(b)31 b(er)333 b(of)h(steps)f(b)31 b(et)-31
+b(w)g(een)334 b(t)-31 b(w)g(o)335 b(consec-)1906 25510
+y(utiv)-31 b(e)371 b(c)-31 b(hec)g(kp)31 b(oin)-31 b(ts.)p
+Black 0 27843 a(11.)p Black 493 w Fx(In)c(tegrate)426
+b(forw)-35 b(ard)425 b(problem)1906 29725 y Fw(Call)h
+Fu(CVodeF)p Fw(,)e(a)g(wrapp)31 b(er)423 b(for)g(the)h
+Fs(cv)-25 b(odes)423 b Fw(main)i(in)-31 b(tegration)426
+b(function)f Fu(CVode)p Fw(,)438 b(either)424 b(in)f
+Fu(CV)p 44164 29725 V 419 w(NORMAL)1906 31053 y Fw(mo)31
+b(de)419 b(to)f(the)g(time)i Fu(tout)e Fw(or)f(in)i Fu(CV)p
+17584 31053 V 418 w(ONE)p 19745 31053 V 419 w(STEP)f
+Fw(mo)31 b(de)419 b(inside)f(a)g(lo)31 b(op)419 b(\(if)g(in)-31
+b(termediate)420 b(solutions)f(of)g(the)1906 32381 y(forw)-31
+b(ard)376 b(problem)f(are)f(desired)g(\(see)g Fn(x)p
+Fw(7.2.2\)\).)511 b(The)375 b(\257nal)g(v)-61 b(alue)375
+b(of)f Fu(tret)p Fw(,)j(denoted)e Fu(tfinal)p Fw(,)i(is)d(then)h(the)
+1906 33710 y(maxim)-31 b(um)372 b(allo)-31 b(w)g(able)373
+b(v)-61 b(alue)370 b(for)f(the)g(endp)31 b(oin)-31 b(t)371
+b Fl(t)23342 33876 y Fk(1)23838 33710 y Fw(.)18771 36638
+y Fx(Bac)-35 b(kw)g(ard)423 b(problem)p Black 0 38971
+a Fw(12.)p Black 493 w Fx(Set)j(problem)f(dimensions)g(for)g(the)g(bac)
+-35 b(kw)g(ard)424 b(problem)1906 40853 y Fw([)p Fx(S)p
+Fw(])371 b(set)e Fu(NB)p Fw(,)g(the)h(n)-31 b(um)g(b)31
+b(er)369 b(of)h(v)-61 b(ariables)370 b(in)f(the)h(bac)-31
+b(kw)g(ard)370 b(problem)1906 42181 y([)p Fx(P)p Fw(])h(set)e
+Fu(NB)g Fw(and)g Fu(NBlocal)p Black 0 44514 a Fw(13.)p
+Black 493 w Fx(Set)426 b(\257nal)e(v)-71 b(alues)424
+b(for)h(the)h(bac)-35 b(kw)g(ard)424 b(problem)1906 46396
+y Fw(Set)370 b(the)f(v)-31 b(ector)370 b Fu(yB0)g Fw(of)f(\257nal)h(v)
+-61 b(alues)370 b(for)f(the)g(bac)-31 b(kw)g(ard)371
+b(problem.)p Black 0 48729 a(14.)p Black 493 w Fx(Create)426
+b Fs(cv)-25 b(odes)425 b Fx(ob)71 b(ject)425 b(for)g(the)g(bac)-35
+b(kw)g(ard)424 b(problem)1906 50611 y Fw(Call)338 b Fu(CVodeCreateB)p
+Fw(,)g(a)e(wrapp)31 b(er)336 b(for)g Fu(CVodeCreate)p
+Fw(,)344 b(to)337 b(create)f(the)g Fs(cv)-25 b(odes)337
+b Fw(memory)g(blo)31 b(c)-31 b(k)337 b(and)f(sp)31 b(ec-)1906
+51939 y(ify)458 b(the)f(solution)h(metho)31 b(d)457 b(\(linear)h(m)-31
+b(ultistep)459 b(metho)31 b(d)457 b(and)g(nonlinear)h(solv)-31
+b(er)457 b(iteration)h(t)-31 b(yp)31 b(e\))458 b(for)f(the)1906
+53267 y(bac)-31 b(kw)g(ard)375 b(problem.)505 b(Unlik)-31
+b(e)374 b Fu(CVodeCreate)p Fw(,)i(the)d(function)i Fu(CVodeCreateB)f
+Fw(do)31 b(es)373 b(not)g(return)g(a)g(p)31 b(oin)-31
+b(ter)1906 54596 y(to)457 b(the)g(newly)g(created)g(memory)g(blo)31
+b(c)-31 b(k.)755 b(Instead,)479 b(this)456 b(p)31 b(oin)-31
+b(ter)457 b(is)g(attac)-31 b(hed)458 b(to)f(the)f(adjoin)-31
+b(t)459 b(memory)1906 55924 y(blo)31 b(c)-31 b(k)371
+b(\(returned)e(b)-31 b(y)369 b Fu(CVadjMalloc)i Fw(and)e(passed)g(as)g
+(the)g(\257rst)g(argumen)-31 b(t)371 b(to)f Fu(CVodeCreateB)p
+Fw(\).)p Black 0 58257 a(15.)p Black 493 w Fx(Allo)35
+b(cate)425 b(memory)g(for)h(the)f(bac)-35 b(kw)g(ard)424
+b(problem)1906 60139 y Fw(Call)549 b Fu(CVodeMallocB)p
+Fw(,)f(a)f(wrapp)31 b(er)546 b(for)g Fu(CVodeMalloc)p
+Fw(,)593 b(to)547 b(allo)31 b(cate)549 b(in)-31 b(ternal)548
+b(memory)f(and)g(initialize)1906 61467 y Fs(cv)-25 b(odes)370
+b Fw(at)g Fu(tB0)f Fw(for)h(the)f(bac)-31 b(kw)g(ard)371
+b(problem)f(\(see)f Fn(x)p Fw(7.2.3\).)p Black 0 63800
+a(16.)p Black 493 w Fx(Set)426 b(optional)e(inputs)h(for)g(the)g(bac)
+-35 b(kw)g(ard)424 b(problem)1906 65682 y Fw(Call)369
+b Fu(CVodeSet*B)g Fw(functions)f(to)g(c)-31 b(hange)368
+b(from)g(their)f(default)i(v)-61 b(alues)367 b(an)-31
+b(y)368 b(optional)h(inputs)f(that)g(con)-31 b(trol)1906
+67010 y(the)312 b(b)31 b(eha)-31 b(vior)312 b(of)g Fs(cv)-25
+b(odes)p Fw(.)474 b(Unlik)-31 b(e)313 b(their)e(coun)-31
+b(terparts)312 b(for)f(the)h(forw)-31 b(ard)312 b(problem,)324
+b(these)311 b(functions)i(tak)-31 b(e)1906 68339 y(as)370
+b(their)f(\257rst)g(argumen)-31 b(t)370 b(the)g(adjoin)-31
+b(t)371 b(memory)f(blo)31 b(c)-31 b(k)370 b(returned)f(b)-31
+b(y)369 b Fu(CVadjMalloc)p Fw(.)p Black 0 70672 a(17.)p
+Black 493 w Fx(A)-35 b(ttac)g(h)424 b(linear)h(solv)-35
+b(er)425 b(mo)35 b(dule)425 b(for)g(the)g(bac)-35 b(kw)g(ard)424
+b(problem)1906 72553 y Fw(If)552 b(Newton)i(iteration)g(is)e(c)-31
+b(hosen,)599 b(initialize)555 b(the)d(linear)h(solv)-31
+b(er)553 b(mo)31 b(dule)553 b(for)f(the)g(bac)-31 b(kw)g(ard)554
+b(problem)1906 73882 y(b)-31 b(y)455 b(calling)i(the)e(appropriate)h
+(wrapp)31 b(er)454 b(function:)665 b Fu(CVDenseB)p Fw(,)456
+b Fu(CVBandB)p Fw(,)g Fu(CVDiagB)p Fw(,)g(or)e Fu(CVSpgmrB)i
+Fw(\(see)1906 75210 y Fn(x)p Fw(7.2.4\).)576 b(Note)397
+b(that)g(it)g(is)f(not)g(required)g(to)h(use)e(the)h(same)g(linear)h
+(solv)-31 b(er)396 b(mo)31 b(dule)397 b(for)f(b)31 b(oth)397
+b(the)f(forw)-31 b(ard)1906 76539 y(and)277 b(the)g(bac)-31
+b(kw)g(ard)278 b(problems;)309 b(for)276 b(example,)297
+b(the)277 b(forw)-31 b(ard)278 b(problem)f(could)h(b)31
+b(e)276 b(solv)-31 b(ed)277 b(with)h(the)f Fs(cvdense)1906
+77867 y Fw(linear)370 b(solv)-31 b(er)370 b(and)f(the)h(bac)-31
+b(kw)g(ard)371 b(problem)e(with)i Fs(cvspgmr)p Fw(.)p
+Black Black eop
+%%Page: 103 113
+103 112 bop Black 4000 2701 a Fx(7.2)425 b(User-callable)g(functions)g
+(for)g(adjoin)-35 b(t)424 b(sensitivit)-35 b(y)424 b(analysis)14281
+b(103)p 4000 3144 48001 45 v Black Black 4000 6974 a
+Fw(18.)p Black 493 w Fx(Initialize)423 b(quadrature)j(calculation)5906
+8856 y Fw(If)421 b(additional)k(quadrature)d(equations)g(m)-31
+b(ust)422 b(b)31 b(e)421 b(ev)-61 b(aluated)423 b(,)434
+b(call)423 b Fu(CVodeQuadMallocB)p Fw(,)g(a)f(wrapp)31
+b(er)421 b(for)5906 10184 y Fu(CVodeQuadMalloc)p Fw(,)328
+b(to)315 b(initialize)j(and)c(allo)31 b(cate)317 b(memory)e(for)f
+(quadrature)h(in)-31 b(tegration.)477 b(Optionally)-92
+b(,)329 b(call)5906 11512 y Fu(CVodeSetQuad*B)386 b Fw(functions)e(to)g
+(c)-31 b(hange)385 b(from)e(their)h(default)h(v)-61 b(alues)383
+b(optional)j(inputs)e(that)h(con)-31 b(trol)385 b(the)5906
+12841 y(in)-31 b(tegration)373 b(of)c(quadratures)h(during)f(the)h(bac)
+-31 b(kw)g(ard)370 b(phase.)p Black 4000 15196 a(19.)p
+Black 493 w Fx(In)-35 b(tegrate)426 b(bac)-35 b(kw)g(ard)424
+b(problem)5906 17078 y Fw(Call)448 b Fu(CVodeB)p Fw(,)f(a)f(second)f
+(wrapp)31 b(er)445 b(for)h(the)g Fs(cv)-25 b(odes)446
+b Fw(main)h(in)-31 b(tegration)449 b(function)e Fu(CVode)p
+Fw(,)465 b(to)447 b(in)-31 b(tegrate)5906 18407 y(the)341
+b(bac)-31 b(kw)g(ard)342 b(problem)f(from)g Fu(tB0)g
+Fw(\(see)g Fn(x)p Fw(7.2.5\).)485 b(This)341 b(function)h(can)f(b)31
+b(e)340 b(called)i(either)e(in)h Fu(CV)p 46837 18407
+349 45 v 419 w(NORMAL)g Fw(or)5906 19735 y Fu(CV)p 7138
+19735 V 419 w(ONE)p 9300 19735 V 419 w(STEP)f Fw(mo)31
+b(de.)484 b(T)-31 b(ypically)-92 b(,)349 b Fu(CVodeB)340
+b Fw(will)i(b)31 b(e)339 b(called)j(in)e Fu(CV)p 33765
+19735 V 419 w(NORMAL)g Fw(mo)31 b(de)341 b(with)g(an)f(end)g(time)h
+(equal)5906 21063 y(to)370 b(the)g(initial)i(time)e(of)g(the)f(forw)-31
+b(ard)370 b(problem.)p Black 4000 23419 a(20.)p Black
+493 w Fx(Extract)425 b(quadrature)g(v)-71 b(ariables)5906
+25301 y Fw(If)476 b(applicable,)506 b(call)477 b Fu(CVodeGetQuadB)p
+Fw(,)h(a)f(wrapp)31 b(er)475 b(for)i Fu(CVodeGetQuad)p
+Fw(,)504 b(to)477 b(extract)g(the)g(v)-61 b(alues)476
+b(of)h(the)5906 26629 y(quadrature)370 b(v)-61 b(ariables)370
+b(at)g(the)f(time)i(returned)d(b)-31 b(y)370 b(the)f(last)h(call)h(to)f
+Fu(CVodeB)p Fw(.)p Black 4000 28985 a(21.)p Black 493
+w Fx(Deallo)35 b(cate)425 b(memory)5906 30867 y Fw(Up)31
+b(on)421 b(completion)h(of)f(the)f(bac)-31 b(kw)g(ard)422
+b(in)-31 b(tegration,)436 b(call)421 b(all)h(necessary)d(deallo)31
+b(cation)424 b(functions.)646 b(These)5906 32195 y(include)317
+b(appropriate)h(destructors)e(for)g(the)g(v)-31 b(ectors)317
+b Fu(y)f Fw(and)h Fu(yB)p Fw(,)g(a)f(call)i(to)f Fu(CVodeFree)g
+Fw(to)g(free)f(the)g Fs(cv)-25 b(odes)5906 33524 y Fw(memory)338
+b(blo)31 b(c)-31 b(k)337 b(for)f(the)g(forw)-31 b(ard)337
+b(problem,)344 b(and)337 b(a)f(call)i(to)f Fu(CVadjFree)g
+Fw(\(see)f Fn(x)p Fw(7.2.1\))j(to)e(free)e(the)i(memory)5906
+34852 y(allo)31 b(cated)333 b(for)e(the)g(com)-31 b(bined)332
+b(problem.)480 b(Note)332 b(that)f Fu(CVadjFree)h Fw(also)g(deallo)31
+b(cates)332 b(the)f Fs(cv)-25 b(odes)331 b Fw(memory)5906
+36180 y(for)370 b(the)f(bac)-31 b(kw)g(ard)371 b(problem.)p
+Black 4000 38536 a(22.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w Fx(Finalize)424 b(MPI)p Black 5906 40418 a Fw([)p
+Fx(P)p Fw(])371 b(If)e Fs(MPI)f Fw(w)-31 b(as)370 b(initialized)i(b)-31
+b(y)370 b(the)f(user)f(main)j(program,)f(call)h Fu(MPI)p
+35975 40418 V 418 w(Finalize\(\);)p Fw(.)5660 42915 y(The)295
+b(ab)31 b(o)-31 b(v)g(e)295 b(user)d(in)-31 b(terface)295
+b(to)g(the)f(adjoin)-31 b(t)296 b(sensitivit)-31 b(y)296
+b(mo)31 b(dule)295 b(in)f Fs(cv)-25 b(odes)294 b Fw(w)-31
+b(as)295 b(motiv)-61 b(ated)296 b(b)-31 b(y)294 b(the)g(desire)4000
+44244 y(to)317 b(k)-31 b(eep)316 b(it)h(as)f(close)h(as)f(p)31
+b(ossible)316 b(in)h(lo)31 b(ok)317 b(and)f(feel)h(to)g(the)f(one)h
+(for)f(ODE)g(IVP)g(in)-31 b(tegration.)478 b(Note)317
+b(that)h(if)e(steps)4000 45572 y(\(12\)-\(20\))431 b(are)426
+b(not)i(presen)-31 b(t,)441 b(a)428 b(program)f(with)i(the)e(ab)31
+b(o)-31 b(v)g(e)428 b(structure)e(will)j(ha)-31 b(v)g(e)428
+b(the)f(same)g(functionalit)-31 b(y)431 b(as)4000 46900
+y(one)392 b(describ)31 b(ed)390 b(in)i Fn(x)p Fw(5.4)h(for)e(in)-31
+b(tegration)394 b(of)e(ODEs,)397 b(alb)31 b(eit)393 b(with)g(some)f(o)
+-31 b(v)g(erhead)392 b(due)f(to)h(the)g(c)-31 b(hec)g(kp)31
+b(oin)-31 b(ting)4000 48229 y(sc)g(heme.)4000 51972 y
+Fr(7.2)1793 b(User-callable)599 b(functions)g(for)f(adjoin)-50
+b(t)598 b(sensitivit)-50 b(y)601 b(analysis)4000 54647
+y Fo(7.2.1)1495 b(Adjoin)-42 b(t)500 b(sensitivit)-42
+b(y)500 b(allo)42 b(cation)499 b(and)g(deallo)42 b(cation)500
+b(functions)4000 56719 y Fw(After)527 b(the)h(setup)f(phase)f(for)i
+(the)f(forw)-31 b(ard)528 b(problem,)568 b(but)527 b(b)31
+b(efore)527 b(the)g(call)h(to)g Fu(CVodeF)p Fw(,)g(memory)g(for)g(the)
+4000 58047 y(com)-31 b(bined)337 b(forw)-31 b(ard-bac)g(kw)g(ard)338
+b(problem)e(m)-31 b(ust)337 b(b)31 b(e)335 b(allo)31
+b(cated)338 b(b)-31 b(y)336 b(a)g(call)g(to)h(the)f(function)h
+Fu(CVadjMalloc)p Fw(.)483 b(The)4000 59376 y(form)370
+b(of)f(the)h(call)g(to)g(this)g(function)g(is)p 4000
+61327 7146 45 v 4000 62914 45 1587 v 4376 62336 a Fu(CVadjMalloc)p
+11101 62914 V 4000 62958 7146 45 v Black 4000 64253 a
+Fw(Call)p Black 4848 w Fu(cvadj)p 13789 64253 349 45
+v 419 w(mem)582 b(=)f(CVadjMalloc\(cvode)p 27572 64253
+V 421 w(mem,)h(Nd\);)p Black 4000 66055 a Fw(Description)p
+Black 1286 w(The)421 b(function)h Fu(CVadjMalloc)h Fw(allo)31
+b(cates)423 b(in)-31 b(ternal)422 b(memory)g(for)f(the)g(com)-31
+b(bined)423 b(forw)-31 b(ard)422 b(and)10814 67384 y(bac)-31
+b(kw)g(ard)432 b(in)-31 b(tegration,)448 b(other)431
+b(than)g(the)f Fs(cv)-25 b(odes)430 b Fw(memory)h(blo)31
+b(c)-31 b(k.)677 b(Space)430 b(is)g(allo)31 b(cated)433
+b(for)10814 68712 y(the)369 b Fl(N)13609 68878 y Fj(d)14495
+68712 y Fw(in)-31 b(terp)31 b(olation)372 b(data)f(p)31
+b(oin)-31 b(ts)370 b(and)f(a)h(link)-31 b(ed)370 b(list)g(of)g(c)-31
+b(hec)g(kp)31 b(oin)-31 b(ts)371 b(is)e(initialized.)p
+Black 4000 70514 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvode)p 13789 70514 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))403 b(is)g(the)g Fs(cv)-25 b(odes)402
+b Fw(memory)i(blo)31 b(c)-31 b(k)403 b(for)g(the)g(forw)-31
+b(ard)403 b(problem)g(returned)16435 71843 y(b)-31 b(y)370
+b(a)f(previous)g(call)i(to)f Fu(CVodeCreate)p Fw(.)p
+Black 10814 73408 a Fu(Nd)p Black 4459 w Fw(\()p Fu(long)582
+b(int)p Fw(\))495 b(is)e(the)h(n)-31 b(um)g(b)31 b(er)494
+b(of)g(in)-31 b(tegration)496 b(steps)e(b)31 b(et)-31
+b(w)g(een)494 b(t)-31 b(w)g(o)496 b(consecutiv)-31 b(e)16435
+74736 y(c)g(hec)g(kp)31 b(oin)-31 b(ts.)p Black 4000
+76539 a(Return)369 b(v)-61 b(alue)p Black 554 w(If)374
+b(successful,)h Fu(CVadjMalloc)h Fw(returns)d(a)i(p)31
+b(oin)-31 b(ter)375 b(of)g(t)-31 b(yp)31 b(e)375 b Fu(void)581
+b(*)p Fw(.)508 b(The)375 b(user)e(do)31 b(es)374 b(not)h(need)10814
+77867 y(to)450 b(access)e(this)i(memory)f(blo)31 b(c)-31
+b(k)450 b(but)g(m)-31 b(ust)449 b(pass)g(it)g(to)h(other)f(adjoin)-31
+b(t)452 b(mo)31 b(dule)449 b(user-callable)p Black Black
+eop
+%%Page: 104 114
+104 113 bop Black 0 2701 a Fx(104)19172 b(Using)426 b(CV)-35
+b(ODES)425 b(for)h(Adjoin)-35 b(t)425 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black 6814 6974
+a Fw(functions.)461 b(In)272 b(case)g(of)h(failure)h(\()p
+Fu(cvode)p 23406 6974 349 45 v 419 w(mem)f Fw(is)f Fu(NULL)p
+Fw(,)h Fu(Nd)g Fw(is)f(nonp)31 b(ositiv)-31 b(e,)294
+b(or)272 b(a)h(memory)g(request)6814 8302 y(fails\),)297
+b Fu(CVadjMalloc)278 b Fw(prin)-31 b(ts)276 b(an)h(error)e(message)h
+(to)h(the)g(standard)g(output)g(stream)g Fu(stderr)g
+Fw(and)6814 9631 y(returns)368 b Fu(NULL)p Fw(.)p Black
+0 11381 a(Notes)p Black 4072 w(The)343 b(user)f(m)-31
+b(ust)344 b(set)f Fu(Nd)g Fw(so)g(that)h(all)g(data)g(needed)f(for)g
+(in)-31 b(terp)31 b(olation)346 b(of)e(the)f(forw)-31
+b(ard)344 b(problem)6814 12710 y(solution)406 b(b)31
+b(et)-31 b(w)g(een)405 b(t)-31 b(w)g(o)406 b(c)-31 b(hec)g(kp)31
+b(oin)-31 b(ts)405 b(\257ts)f(in)h(memory)-92 b(.)598
+b Fu(CVadjMalloc)406 b Fw(attempts)f(to)g(allo)31 b(cate)6814
+14038 y(space)369 b(for)g(\(2)p Fu(Nd)p Fw(+3\))i(v)-61
+b(ariables)370 b(of)g(t)-31 b(yp)31 b(e)370 b Fu(N)p
+24820 14038 V 418 w(Vector)p Fw(.)p 0 16401 5984 45 v
+0 17988 45 1587 v 376 17410 a Fu(CVadjFree)p 5939 17988
+V 0 18032 5984 45 v Black 0 19311 a Fw(Call)p Black 4848
+w Fu(CVadjFree\(cvadj)p 15599 19311 349 45 v 421 w(mem\);)p
+Black 0 21062 a Fw(Description)p Black 1286 w(The)251
+b(function)h Fu(CVadjFree)g Fw(frees)d(the)i(memory)h(allo)31
+b(cated)253 b(b)-31 b(y)251 b(a)g(previous)g(call)g(to)h
+Fu(CVadjMalloc)p Fw(.)p Black 0 22813 a(Argumen)-31 b(ts)p
+Black 1517 w(The)369 b(argumen)-31 b(t)371 b(is)e(the)h(p)31
+b(oin)-31 b(ter)370 b(to)f(the)h(adjoin)-31 b(t)371 b(memory)f(blo)31
+b(c)-31 b(k)371 b(\(of)f(t)-31 b(yp)31 b(e)369 b Fu(void)582
+b(*)p Fw(\).)p Black 0 24564 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(function)i Fu(CVadjFree)f Fw(has)f(no)h(return)e
+(v)-61 b(alue.)p Black 0 26314 a(Notes)p Black 4072 w(This)437
+b(function)h(frees)d(all)j(memory)f(allo)31 b(cated)439
+b(b)-31 b(y)437 b Fu(CVadjMalloc)p Fw(.)695 b(This)437
+b(includes)g(w)-31 b(orkspace)6814 27643 y(memory)-92
+b(,)310 b(the)295 b(link)-31 b(ed)295 b(list)g(of)f(c)-31
+b(hec)g(kp)31 b(oin)-31 b(ts,)312 b(memory)295 b(for)f(the)g(in)-31
+b(terp)31 b(olation)297 b(data,)311 b(the)294 b Fs(cv)-25
+b(odes)6814 28971 y Fw(memory)298 b(for)f(the)g(bac)-31
+b(kw)g(ard)298 b(in)-31 b(tegration)300 b(phase,)311
+b(and)297 b(p)31 b(ossibly)298 b(memory)f(for)g(bac)-31
+b(kw)g(ard-phase)6814 30299 y(preconditioners.)0 33381
+y Fo(7.2.2)1495 b(F)-125 b(orw)-42 b(ard)502 b(in)-42
+b(tegration)500 b(function)0 35424 y Fw(The)369 b(function)g
+Fu(CVodeF)g Fw(is)g(v)-31 b(ery)368 b(similar)i(to)f(the)f
+Fs(cv)-25 b(odes)369 b Fw(function)h Fu(CVode)f Fw(\(see)f
+Fn(x)p Fw(5.5.3\))j(in)e(that)g(it)g(in)-31 b(tegrates)0
+36752 y(the)497 b(solution)i(of)e(the)g(forw)-31 b(ard)498
+b(problem)f(and)g(returns)f(the)h(solution)i(in)e Fu(y)p
+Fw(.)875 b(A)-31 b(t)498 b(the)f(same)g(time,)530 b(ho)-31
+b(w)g(ev)g(er,)0 38081 y Fu(CVodeF)411 b Fw(stores)e(c)-31
+b(hec)g(kp)31 b(oin)-31 b(t)412 b(data)f(ev)-31 b(ery)410
+b Fu(Nd)g Fw(in)-31 b(tegration)413 b(steps.)615 b Fu(CVodeF)411
+b Fw(can)f(b)31 b(e)409 b(called)j(rep)31 b(eatedly)410
+b(b)-31 b(y)411 b(the)0 39409 y(user.)492 b(The)369 b(call)h(to)g(this)
+g(function)h(has)e(the)g(form)p 0 41260 4240 45 v 0 42601
+45 1341 v 376 42269 a Fu(CVodeF)p 4195 42601 V 0 42645
+4240 45 v Black 0 43997 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeF\(cvadj)p 17924 43997 349 45 v 420 w(mem,)h(tout,)g(yout,)g
+(tret,)g(itask,)g(ncheck\);)p Black 0 45748 a Fw(Description)p
+Black 1286 w(The)430 b(function)i Fu(CVodeF)f Fw(in)-31
+b(tegrates)432 b(the)f(forw)-31 b(ard)431 b(problem)g(o)-31
+b(v)g(er)431 b(an)f(in)-31 b(terv)-61 b(al)432 b(in)e
+Fl(t)g Fw(and)h(sa)-31 b(v)g(es)6814 47076 y(c)g(hec)g(kp)31
+b(oin)-31 b(ting)372 b(data.)p Black 0 48827 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvadj)p 9789 48827 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(adjoin)-31 b(t)372
+b(memory)e(blo)31 b(c)-31 b(k.)p Black 6814 50356 a Fu(tout)p
+Black 3297 w Fw(\()p Fu(realtype)p Fw(\))371 b(the)f(next)f(time)i(at)f
+(whic)-31 b(h)370 b(a)f(computed)i(solution)g(is)e(desired.)p
+Black 6814 51885 a Fu(yout)p Black 3297 w Fw(\()p Fu(N)p
+13516 51885 V 419 w(Vector)p Fw(\))h(the)g(computed)g(solution)h(v)-31
+b(ector.)p Black 6814 53415 a Fu(tret)p Black 3297 w
+Fw(\()p Fu(realtype)583 b(*)p Fw(\))370 b(the)f(time)h(reac)-31
+b(hed)370 b(b)-31 b(y)369 b(the)g(solv)-31 b(er.)p Black
+6814 54944 a Fu(itask)p Black 2716 w Fw(\()p Fu(int)p
+Fw(\))247 b(a)g(\260ag)g(indicating)i(the)d(job)h(of)g(the)f(solv)-31
+b(er)247 b(for)f(the)g(next)h(step.)452 b(The)246 b Fu(CV)p
+44415 54944 V 419 w(NORMAL)12435 56273 y Fw(task)438
+b(is)e(to)i(ha)-31 b(v)g(e)438 b(the)f(solv)-31 b(er)437
+b(tak)-31 b(e)438 b(in)-31 b(ternal)439 b(steps)d(un)-31
+b(til)439 b(it)e(has)g(reac)-31 b(hed)437 b(or)g(just)12435
+57601 y(passed)370 b(the)g(user-sp)31 b(eci\257ed)369
+b Fu(tout)h Fw(parameter.)496 b(The)371 b(solv)-31 b(er)370
+b(then)h(in)-31 b(terp)31 b(olates)372 b(in)12435 58929
+y(order)317 b(to)h(return)f(an)g(appro)-31 b(ximate)320
+b(v)-61 b(alue)318 b(of)g Fl(y)40 b Fw(\()p Fu(tout)p
+Fw(\).)476 b(The)318 b Fu(CV)p 39773 58929 V 419 w(ONE)p
+41935 58929 V 418 w(STEP)g Fw(option)12435 60258 y(tells)e(the)f(solv)
+-31 b(er)315 b(to)g(just)g(tak)-31 b(e)316 b(one)f(in)-31
+b(ternal)317 b(step)d(and)h(return)f(the)h(solution)i(at)f(the)12435
+61586 y(p)31 b(oin)-31 b(t)282 b(reac)-31 b(hed)281 b(b)-31
+b(y)282 b(that)g(step.)463 b(The)282 b Fu(CV)p 29104
+61586 V 418 w(NORMAL)p 33008 61586 V 420 w(TSTOP)f Fw(and)h
+Fu(CV)p 39841 61586 V 418 w(ONE)p 42002 61586 V 419 w(STEP)p
+44745 61586 V 419 w(TSTOP)12435 62914 y Fw(mo)31 b(des)281
+b(are)f(similar)i(to)f Fu(CV)p 23570 62914 V 419 w(NORMAL)g
+Fw(and)f Fu(CV)p 30981 62914 V 419 w(ONE)p 33143 62914
+V 419 w(STEP)p Fw(,)h(resp)31 b(ectiv)-31 b(ely)-92 b(,)300
+b(except)281 b(that)12435 64243 y(the)318 b(in)-31 b(tegration)320
+b(nev)-31 b(er)317 b(pro)31 b(ceeds)316 b(past)i(the)g(v)-61
+b(alue)317 b Fu(tstop)h Fw(\(sp)31 b(eci\257ed)318 b(through)g(the)
+12435 65571 y(function)371 b Fu(CVodeSetStopTime)p Fw(\).)p
+Black 0 67322 a(Return)e(v)-61 b(alue)p Black 554 w(On)438
+b(return,)455 b Fu(CVodeF)439 b Fw(returns)e(a)h(v)-31
+b(ector)439 b Fu(yout)g Fw(and)f(a)h(corresp)31 b(onding)438
+b(indep)31 b(enden)-31 b(t)439 b(v)-61 b(ariable)6814
+68650 y(v)g(alue)330 b Fl(t)307 b Fw(=)p Fu(*tret)p Fw(,)339
+b(suc)-31 b(h)329 b(that)h Fu(yout)g Fw(is)g(the)f(computed)i(v)-61
+b(alue)330 b(of)g Fl(y)40 b Fw(\()p Fl(t)p Fw(\).)479
+b(Additionally)-92 b(,)342 b(it)330 b(returns)6814 69978
+y(in)369 b Fu(ncheck)h Fw(the)g(n)-31 b(um)g(b)31 b(er)369
+b(of)h(c)-31 b(hec)g(kp)31 b(oin)-31 b(ts)370 b(sa)-31
+b(v)g(ed.)6814 71729 y(The)347 b(return)f(v)-61 b(alue)347
+b Fu(flag)h Fw(\(of)f(t)-31 b(yp)31 b(e)348 b Fu(int)p
+Fw(\))f(will)i(b)31 b(e)346 b(one)h(of)g(the)g(follo)-31
+b(wing.)489 b(F)-92 b(or)346 b(more)h(details)h(see)6814
+73057 y Fn(x)p Fw(5.5.3.)p Black 6814 74808 a Fu(CV)p
+8046 74808 V 419 w(SUCCESS)p Black 3716 w(CVodeF)370
+b Fw(succeeded.)p Black 6814 76338 a Fu(CV)p 8046 76338
+V 419 w(TSTOP)p 11370 76338 V 419 w(RETURN)p Black 973
+w(CVodeF)g Fw(succeeded)e(b)-31 b(y)369 b(reac)-31 b(hing)371
+b(the)e(optional)j(stopping)e(p)31 b(oin)-31 b(t.)p Black
+6814 77867 a Fu(CV)p 8046 77867 V 419 w(NO)p 9627 77867
+V 418 w(MALLOC)p Black 2717 w Fw(The)369 b(function)i
+Fu(CVodeMalloc)f Fw(has)f(not)h(b)31 b(een)369 b(previously)h(called.)p
+Black Black eop
+%%Page: 105 115
+105 114 bop Black 4000 2701 a Fx(7.2)425 b(User-callable)g(functions)g
+(for)g(adjoin)-35 b(t)424 b(sensitivit)-35 b(y)424 b(analysis)14281
+b(105)p 4000 3144 48001 45 v Black Black 10814 6974 a
+Fu(CV)p 12046 6974 349 45 v 419 w(ILL)p 14208 6974 V
+419 w(IPUT)p Black 3297 w Fw(One)369 b(of)g(the)h(inputs)f(to)h
+Fu(CVodeF)g Fw(is)f(illegal.)p Black 10814 8559 a Fu(CV)p
+12046 8559 V 419 w(TOO)p 14208 8559 V 419 w(MUCH)p 16951
+8559 V 419 w(WORK)p Black 554 w Fw(The)g(solv)-31 b(er)370
+b(to)31 b(ok)370 b Fu(mxstep)g Fw(in)-31 b(ternal)371
+b(steps)d(but)i(could)g(not)g(reac)-31 b(h)369 b(tout.)p
+Black 10814 10145 a Fu(CV)p 12046 10145 V 419 w(TOO)p
+14208 10145 V 419 w(MUCH)p 16951 10145 V 419 w(ACC)p
+Black 1135 w Fw(The)452 b(solv)-31 b(er)452 b(could)g(not)g(satisfy)h
+(the)f(accuracy)g(demanded)g(b)-31 b(y)452 b(the)g(user)20178
+11473 y(for)369 b(some)g(in)-31 b(ternal)371 b(step.)p
+Black 10814 13059 a Fu(CV)p 12046 13059 V 419 w(ERR)p
+14208 13059 V 419 w(FAILURE)p Black 1554 w Fw(Error)495
+b(test)h(failures)g(o)31 b(ccurred)495 b(to)31 b(o)496
+b(man)-31 b(y)497 b(times)g(during)e(one)h(in)-31 b(ternal)20178
+14387 y(time)370 b(step)f(or)g(o)31 b(ccurred)368 b(with)j
+Fn(j)p Fl(h)p Fn(j)308 b Fw(=)g Fl(h)36813 14553 y Fj(min)38514
+14387 y Fw(.)p Black 10814 15973 a Fu(CV)p 12046 15973
+V 419 w(CONV)p 14789 15973 V 419 w(FAILURE)p Black 973
+w Fw(Con)-31 b(v)g(ergence)383 b(test)g(failures)g(o)31
+b(ccurred)381 b(to)31 b(o)383 b(man)-31 b(y)384 b(times)f(during)f(one)
+h(in-)20178 17301 y(ternal)370 b(time)g(step)f(or)g(o)31
+b(ccurred)368 b(with)j Fn(j)p Fl(h)p Fn(j)308 b Fw(=)f
+Fl(h)40013 17467 y Fj(min)41715 17301 y Fw(.)p Black
+10814 18886 a Fu(CV)p 12046 18886 V 419 w(LSETUP)p 15951
+18886 V 419 w(FAIL)p Black 1554 w Fw(The)372 b(linear)h(solv)-31
+b(er's)373 b(setup)f(function)i(failed)g(in)e(an)h(unreco)-31
+b(v)g(erable)373 b(man-)20178 20215 y(ner.)p Black 10814
+21800 a Fu(CV)p 12046 21800 V 419 w(LSOLVE)p 15951 21800
+V 419 w(FAIL)p Black 1554 w Fw(The)400 b(linear)g(solv)-31
+b(er's)400 b(solv)-31 b(e)401 b(function)g(failed)g(in)f(an)f(unreco)
+-31 b(v)g(erable)401 b(man-)20178 23129 y(ner.)p Black
+10814 24714 a Fu(CV)p 12046 24714 V 419 w(ADJMEM)p 15951
+24714 V 419 w(NULL)p Black 1554 w Fw(The)369 b Fu(cvadj)p
+25428 24714 V 419 w(mem)h Fw(argumen)-31 b(t)370 b(w)-31
+b(as)370 b Fu(NULL)p Fw(.)p Black 10814 26300 a Fu(CV)p
+12046 26300 V 419 w(MEM)p 14208 26300 V 419 w(FAIL)p
+Black 3297 w Fw(A)358 b(memory)g(allo)31 b(cation)362
+b(request)357 b(has)h(failed)h(\(in)g(an)f(attempt)i(to)e(allo)31
+b(cate)20178 27628 y(space)369 b(for)g(a)g(new)h(c)-31
+b(hec)g(kp)31 b(oin)-31 b(t\).)p Black 4000 29470 a(Notes)p
+Black 4072 w(All)316 b(failure)g(return)e(v)-61 b(alues)315
+b(are)g(negativ)-31 b(e)317 b(and)f(therefore)f(a)g(test)g
+Fu(flag)p Fl(<)308 b Fw(0)316 b(will)h(trap)e(all)h Fu(CVodeF)10814
+30799 y Fw(failures.)10814 32641 y(A)-31 b(t)396 b(this)f(time,)403
+b Fu(CVodeF)395 b Fw(stores)f(c)-31 b(hec)g(kp)31 b(oin)-31
+b(t)397 b(information)h(in)d(memory)h(only)-92 b(.)570
+b(F)-92 b(uture)394 b(v)-31 b(ersions)10814 33970 y(will)389
+b(pro)-31 b(vide)388 b(for)g(a)g(safeguard)g(option)h(of)f(dumping)h(c)
+-31 b(hec)g(kp)31 b(oin)-31 b(t)389 b(data)g(in)-31 b(to)389
+b(a)e(temp)31 b(orary)389 b(\257le)10814 35298 y(as)372
+b(needed.)502 b(The)373 b(data)g(stored)g(at)g(eac)-31
+b(h)373 b(c)-31 b(hec)g(kp)31 b(oin)-31 b(t)374 b(is)e(basically)i(a)f
+(snapshot)g(of)g(the)f Fs(cv)-25 b(odes)10814 36627 y
+Fw(in)-31 b(ternal)520 b(memory)f(blo)31 b(c)-31 b(k)519
+b(and)f(con)-31 b(tains)520 b(enough)f(information)i(to)d(restart)h
+(the)f(in)-31 b(tegration)10814 37955 y(from)353 b(that)h(time)h(and)e
+(to)g(pro)31 b(ceed)353 b(with)h(the)f(same)g(step)g(size)f(and)i
+(metho)31 b(d)353 b(order)f(sequence)h(as)10814 39283
+y(during)369 b(the)h(forw)-31 b(ard)370 b(in)-31 b(tegration.)10814
+41126 y(In)342 b(addition,)351 b Fu(CVodeF)344 b Fw(also)g(stores)e(in)
+-31 b(terp)31 b(olation)346 b(data)e(b)31 b(et)-31 b(w)g(een)344
+b(consecutiv)-31 b(e)344 b(c)-31 b(hec)g(kp)31 b(oin)-31
+b(ts)345 b(so)10814 42454 y(that,)448 b(at)432 b(the)f(end)g(of)g(this)
+h(\257rst)e(forw)-31 b(ard)432 b(in)-31 b(tegration)434
+b(phase,)447 b(information)434 b(for)d(the)g(Hermite)10814
+43783 y(in)-31 b(terp)31 b(olation)445 b(is)d(already)h(a)-31
+b(v)-61 b(ailable)444 b(from)f(the)f(last)h(c)-31 b(hec)g(kp)31
+b(oin)-31 b(t)443 b(forw)-31 b(ard.)712 b(In)441 b(particular,)462
+b(if)10814 45111 y(no)452 b(c)-31 b(hec)g(k)453 b(p)31
+b(oin)-31 b(ts)453 b(w)-31 b(ere)452 b(necessary)-92
+b(,)472 b(there)452 b(is)g(no)h(need)e(for)i(the)f(second)g(forw)-31
+b(ard)453 b(in)-31 b(tegration)10814 46439 y(phase.)11942
+49059 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1669
+b Fw(Although)542 b(it)g(is)e(legal)j(to)e(de\257ne)f(a)h(v)-61
+b(alue)541 b(for)g Fu(tstop)g Fw(and)g(then)g(call)g
+Fu(CVodeF)h Fw(with)10814 50387 y Fu(itask)390 b Fw(=)e
+Fu(CV)p 16590 50387 V 419 w(NORMAL)p 20495 50387 V 419
+w(TSTOP)i Fw(or)f Fu(itask)g Fw(=)g Fu(CV)p 31291 50387
+V 419 w(ONE)p 33453 50387 V 419 w(STEP)p 36196 50387
+V 419 w(TSTOP)p Fw(,)h(after)f(a)h(return)e(with)i Fu(flag)10814
+51716 y Fw(=)452 b Fu(TSTOP)p 15102 51716 V 419 w(RETURN)p
+Fw(,)i(the)f(in)-31 b(tegration)456 b(should)c(not)i(b)31
+b(e)452 b(con)-31 b(tin)g(ued)454 b(\(no)f Fu(tstop)g
+Fw(information)j(is)10814 53044 y(stored)369 b(at)h(c)-31
+b(hec)g(kp)31 b(oin)-31 b(ts\).)11942 55725 y @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1620 b Fw(It)492 b(is)f(illegal)k(to)d(c)
+-31 b(hange)493 b(the)f(in)-31 b(tegration)494 b(tolerances)f(b)31
+b(et)-31 b(w)g(een)492 b(consecutiv)-31 b(e)493 b(calls)g(to)10814
+57054 y Fu(CVodeF)p Fw(,)370 b(as)f(this)h(information)i(is)d(not)h
+(captured)g(in)f(the)g(c)-31 b(hec)g(kp)31 b(oin)-31
+b(ts)371 b(data.)4000 60342 y Fo(7.2.3)1495 b(Bac)-42
+b(kw)g(ard)501 b(problem)f(initialization)h(functions)4000
+62452 y Fw(The)308 b(functions)h Fu(CVodeCreateB)h Fw(and)e
+Fu(CVodeMallocB)h Fw(m)-31 b(ust)309 b(b)31 b(e)307 b(called)j(in)e
+(the)g(order)f(listed.)473 b(They)309 b(instan)-31 b(tiate)4000
+63780 y(a)385 b Fs(cv)-25 b(odes)385 b Fw(solv)-31 b(er)385
+b(ob)61 b(ject,)390 b(pro)-31 b(vide)385 b(problem)h(and)f(solution)h
+(sp)31 b(eci\257cations,)390 b(and)385 b(allo)31 b(cate)387
+b(in)-31 b(ternal)386 b(memory)4000 65108 y(for)369 b(the)h(bac)-31
+b(kw)g(ard)370 b(problem.)p 4000 67167 7727 45 v 4000
+68507 45 1341 v 4376 68175 a Fu(CVodeCreateB)p 11682
+68507 V 4000 68551 7727 45 v Black 4000 69939 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeCreateB\(cvadj)p
+25410 69939 349 45 v 421 w(mem,)h(lmm,)g(iter\);)p Black
+4000 71782 a Fw(Description)p Black 1286 w(The)539 b(function)h
+Fu(CVodeCreateB)f Fw(instan)-31 b(tiates)542 b(a)c Fs(cv)-25
+b(odes)539 b Fw(solv)-31 b(er)539 b(ob)61 b(ject)540
+b(and)f(sp)31 b(eci\257es)538 b(the)10814 73110 y(solution)371
+b(metho)31 b(d)370 b(for)f(the)h(bac)-31 b(kw)g(ard)370
+b(problem.)p Black 4000 74953 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvadj)p 13789 74953 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f(adjoin)-31 b(t)372 b(memory)e(blo)31
+b(c)-31 b(k)370 b(returned)e(b)-31 b(y)370 b Fu(CVadjMalloc)p
+Fw(.)p Black 10814 76539 a Fu(lmm)p Black 3878 w Fw(\()p
+Fu(int)p Fw(\))301 b(sp)31 b(eci\257es)299 b(the)g(linear)i(m)-31
+b(ultistep)301 b(metho)31 b(d)301 b(and)f(ma)-31 b(y)300
+b(b)31 b(e)299 b(one)h(of)g(t)-31 b(w)g(o)302 b(p)31
+b(ossible)16435 77867 y(v)-61 b(alues:)493 b Fu(CV)p
+21394 77867 V 419 w(ADAMS)369 b Fw(or)g Fu(CV)p 27605
+77867 V 419 w(BDF)p Fw(.)p Black Black eop
+%%Page: 106 116
+106 115 bop Black 0 2701 a Fx(106)19172 b(Using)426 b(CV)-35
+b(ODES)425 b(for)h(Adjoin)-35 b(t)425 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black Black 6814
+6974 a Fu(iter)p Black 3297 w Fw(\()p Fu(int)p Fw(\))490
+b(sp)31 b(eci\257es)489 b(the)g(t)-31 b(yp)31 b(e)490
+b(of)g(nonlinear)g(solv)-31 b(er)490 b(iteration)h(and)e(ma)-31
+b(y)491 b(b)31 b(e)489 b(either)12435 8302 y Fu(CV)p
+13667 8302 349 45 v 419 w(NEWTON)370 b Fw(or)f Fu(CV)p
+20460 8302 V 418 w(FUNCTIONAL)p Fw(.)p Black 0 10023
+a(Return)g(v)-61 b(alue)p Black 554 w(If)467 b(successful,)491
+b Fu(CVodeCreateB)468 b Fw(stores)f(a)g(p)31 b(oin)-31
+b(ter)468 b(to)f(the)g(newly)h(created)f Fs(cv)-25 b(odes)468
+b Fw(memory)6814 11352 y(blo)31 b(c)-31 b(k)468 b(\(of)h(t)-31
+b(yp)31 b(e)468 b Fu(void)581 b(*)p Fw(\))468 b(for)g(the)g(bac)-31
+b(kw)g(ard)468 b(problem.)789 b(The)467 b(return)g(v)-61
+b(alue)468 b Fu(flag)g Fw(\(of)g(t)-31 b(yp)31 b(e)6814
+12680 y Fu(int)p Fw(\))370 b(is)f(one)g(of:)p Black 6814
+14401 a Fu(CV)p 8046 14401 V 419 w(SUCCESS)p Black 2716
+w Fw(The)h(call)g(to)g Fu(CVodeCreateB)h Fw(w)-31 b(as)369
+b(successful.)p Black 6814 15901 a Fu(CV)p 8046 15901
+V 419 w(ADJMEM)p 11951 15901 V 419 w(NULL)p Black 554
+w Fw(The)h Fu(cvadj)p 20429 15901 V 419 w(mem)f Fw(argumen)-31
+b(t)371 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)p Black 6814
+17401 a Fu(CV)p 8046 17401 V 419 w(MEM)p 10208 17401
+V 419 w(FAIL)p Black 2297 w Fw(An)416 b(error)f(o)31
+b(ccured)416 b(while)h(trying)g(to)g(create)f(the)g Fs(cv)-25
+b(odes)417 b Fw(memory)g(blo)31 b(c)-31 b(k)15178 18729
+y(for)369 b(the)h(bac)-31 b(kw)g(ard)370 b(problem.)0
+20457 y(The)501 b(function)h Fu(CVodeMallocB)g Fw(is)e(essen)-31
+b(tially)502 b(a)f(call)h(to)f Fu(CVodeMalloc)h Fw(with)g(some)f
+(particularization)j(for)0 21786 y(bac)-31 b(kw)g(ard)371
+b(in)-31 b(tegration)372 b(as)d(describ)31 b(ed)368 b(b)31
+b(elo)-31 b(w.)p 0 23611 7727 45 v 0 24952 45 1341 v
+376 24620 a Fu(CVodeMallocB)p 7682 24952 V 0 24996 7727
+45 v Black 0 26348 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeMallocB\(cvadj)p 21410 26348 349 45 v 421
+w(mem,)h(fB,)f(tB0,)h(yB0,)g(itolB,)g(reltolB,)g(abstolB\);)p
+Black 0 28069 a Fw(Description)p Black 1286 w(The)517
+b(function)h Fu(CVodeMallocB)h Fw(pro)-31 b(vides)517
+b(required)g(problem)g(and)g(solution)i(sp)31 b(eci\257cations,)6814
+29398 y(allo)g(cates)371 b(in)-31 b(ternal)371 b(memory)-92
+b(,)370 b(and)g(initializes)i Fs(cv)-25 b(odes)369 b
+Fw(for)h(the)f(bac)-31 b(kw)g(ard)371 b(problem.)p Black
+0 31119 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvadj)p
+9789 31119 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(adjoin)-31
+b(t)372 b(memory)e(blo)31 b(c)-31 b(k)370 b(returned)e(b)-31
+b(y)370 b Fu(CVadjMalloc)p Fw(.)p Black 6814 32619 a
+Fu(fB)p Black 4459 w Fw(\()p Fu(CVRhsFnB)p Fw(\))398
+b(is)e(the)g Fs(C)g Fw(function)i(whic)-31 b(h)397 b(computes)f
+Fl(f)119 b(B)56 b Fw(,)403 b(the)396 b(righ)-31 b(t-hand)397
+b(side)f(of)12435 33947 y(the)443 b(bac)-31 b(kw)g(ard)443
+b(ODE)f(problem.)713 b(This)442 b(function)i(has)e(the)g(form)h
+Fu(fB\(t,)582 b(y,)g(yB,)12435 35275 y(yBdot,)g(f)p 17154
+35275 V 419 w(dataB\))370 b Fw(\(for)f(full)h(details)h(see)e
+Fn(x)p Fw(7.3\).)p Black 6814 36775 a Fu(tB0)p Black
+3878 w Fw(\()p Fu(realtype)p Fw(\))393 b(sp)31 b(eci\257es)391
+b(the)g(endp)31 b(oin)-31 b(t)392 b(where)f(\257nal)h(conditions)h(are)
+e(pro)-31 b(vided)392 b(for)12435 38104 y(the)369 b(bac)-31
+b(kw)g(ard)371 b(problem.)p Black 6814 39603 a Fu(yB0)p
+Black 3878 w Fw(\()p Fu(N)p 13516 39603 V 419 w(Vector)p
+Fw(\))f(is)g(the)f(\257nal)h(v)-61 b(alue)370 b(of)f(the)h(bac)-31
+b(kw)g(ard)370 b(problem.)p Black 6814 41103 a Fu(itolB)p
+Black 2716 w Fw(\()p Fu(int)p Fw(\))479 b(is)e(one)h(of)g
+Fu(CV)p 21477 41103 V 418 w(SS)g Fw(or)f Fu(CV)p 26161
+41103 V 419 w(SV)g Fw(where)g Fu(itol)p Fw(=)p Fu(CV)p
+35875 41103 V 420 w(SS)g Fw(indicates)i(scalar)f(rela-)12435
+42431 y(tiv)-31 b(e)337 b(error)e(tolerance)j(and)e(scalar)g(absolute)i
+(error)d(tolerance,)344 b(while)337 b Fu(itol)p Fw(=)p
+Fu(CV)p 46488 42431 V 420 w(SV)12435 43760 y Fw(indicates)278
+b(scalar)f(relativ)-31 b(e)279 b(error)c(tolerance)j(and)f(v)-31
+b(ector)277 b(absolute)h(error)e(tolerance.)p Black 6814
+45259 a Fu(reltolB)p Black 1554 w Fw(\()p Fu(realtype)p
+Fw(\))371 b(is)e(the)h(relativ)-31 b(e)371 b(error)d(tolerance.)p
+Black 6814 46759 a Fu(abstolB)p Black 1554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))500 b(is)e(a)i(p)31 b(oin)-31
+b(ter)499 b(to)h(the)f(absolute)h(error)e(tolerance.)883
+b(If)499 b Fu(itolB)p Fw(=)p Fu(CV)p 46181 46759 V 419
+w(SS)p Fw(,)12435 48088 y Fu(abstolB)565 b Fw(m)-31 b(ust)564
+b(b)31 b(e)564 b(a)g(p)31 b(oin)-31 b(ter)565 b(to)g(a)f
+Fu(realtype)h Fw(v)-61 b(ariable.)1078 b(If)564 b Fu(itolB)p
+Fw(=)p Fu(CV)p 46181 48088 V 419 w(SV)p Fw(,)12435 49416
+y Fu(abstolB)370 b Fw(m)-31 b(ust)370 b(b)31 b(e)369
+b(an)g Fu(N)p 23310 49416 V 419 w(Vector)g Fw(v)-61 b(ariable.)p
+Black 0 51137 a(Return)369 b(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(will)h(b)31 b(e)369
+b(one)g(of)h(the)f(follo)-31 b(wing:)p Black 6814 52858
+a Fu(CV)p 8046 52858 V 419 w(SUCCESS)p Black 2716 w Fw(The)370
+b(call)g(to)g Fu(CVodeMallocB)h Fw(w)-31 b(as)369 b(successful.)p
+Black 6814 54358 a Fu(CV)p 8046 54358 V 419 w(ADJMEM)p
+11951 54358 V 419 w(NULL)p Black 554 w Fw(The)h Fu(cvadj)p
+20429 54358 V 419 w(mem)f Fw(argumen)-31 b(t)371 b(w)-31
+b(as)370 b Fu(NULL)p Fw(.)p Black 6814 55858 a Fu(CV)p
+8046 55858 V 419 w(BAD)p 10208 55858 V 419 w(TB0)p Black
+2878 w Fw(The)503 b(\257nal)h(time)h Fu(tB0)e Fw(is)g(outside)h(the)f
+(in)-31 b(terv)-61 b(al)505 b(o)-31 b(v)g(er)504 b(whic)-31
+b(h)504 b(the)f(forw)-31 b(ard)15178 57186 y(problem)370
+b(w)-31 b(as)370 b(solv)-31 b(ed.)p Black 6814 58686
+a Fu(CV)p 8046 58686 V 419 w(MEM)p 10208 58686 V 419
+w(NULL)p Black 2297 w Fw(The)429 b Fs(cv)-25 b(odes)429
+b Fw(memory)h(blo)31 b(c)-31 b(k)429 b(for)g(the)g(bac)-31
+b(kw)g(ard)430 b(problem)f(w)-31 b(as)430 b(not)f(ini-)15178
+60014 y(tialized)371 b(through)f(a)g(previous)f(call)i(to)f
+Fu(CVodeCreateB)p Fw(.)p Black 6814 61514 a Fu(CV)p 8046
+61514 V 419 w(MEM)p 10208 61514 V 419 w(FAIL)p Black
+2297 w Fw(A)f(memory)h(allo)31 b(cation)373 b(request)c(has)g(failed.)p
+Black 6814 63014 a Fu(CV)p 8046 63014 V 419 w(ILL)p 10208
+63014 V 419 w(INPUT)p Black 1716 w Fw(An)g(input)h(argumen)-31
+b(t)371 b(to)f Fu(CVodeMallocB)h Fw(has)e(an)g(illegal)j(v)-61
+b(alue.)p Black 0 65512 a(Notes)p Black 5200 w @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1566 b Fw(It)437 b(is)g(the)h(user's)e
+(resp)31 b(onsibilit)-31 b(y)440 b(to)e(pro)-31 b(vide)438
+b(compatible)i Fu(itolB)e Fw(and)f Fu(abstolB)i Fw(argu-)6814
+66840 y(men)-31 b(ts.)0 68568 y(F)-92 b(or)269 b(the)i(case)f(when)g
+(it)h(is)f(needed)f(to)i(solv)-31 b(e)271 b(sev)-31 b(eral)271
+b(di\256eren)-31 b(t)270 b(bac)-31 b(kw)g(ard)272 b(problems)e(corresp)
+31 b(onding)270 b(to)h(the)f(same)0 69897 y(original)469
+b(problem,)492 b Fs(cv)-25 b(odes)467 b Fw(pro)-31 b(vides)467
+b(a)g(mec)-31 b(hanism)468 b(to)f(reuse)f(the)h(existing)h(c)-31
+b(hec)g(kp)31 b(oin)-31 b(ts.)787 b(The)466 b(function)0
+71225 y Fu(CVodeReInitB)523 b Fw(reinitializes)h(the)e
+Fs(cv)-25 b(odes)522 b Fw(memory)h(blo)31 b(c)-31 b(k)523
+b(for)e(the)h(bac)-31 b(kw)g(ard)523 b(problem,)561 b(where)522
+b(a)g(prior)0 72553 y(call)427 b(to)f Fu(CVodeMallocB)g
+Fw(has)g(b)31 b(een)424 b(made)i(with)h(the)e(same)h(problem)g(size)f
+Fu(NB)p Fw(.)h Fu(CVodeReInitB)h Fw(p)31 b(erforms)425
+b(the)0 73882 y(same)441 b(input)g(c)-31 b(hec)g(king)441
+b(and)g(initializations)k(that)d Fu(CVodeMallocB)f Fw(do)31
+b(es,)459 b(but)440 b(do)31 b(es)440 b(no)h(memory)g(allo)31
+b(cation,)0 75210 y(assuming)351 b(that)f(the)g(existing)i(in)-31
+b(ternal)351 b(memory)f(is)g(su\261cien)-31 b(t)351 b(for)e(the)h(new)g
+(problem.)487 b(Note)351 b(that)g Fu(CVReInitB)0 76539
+y Fw(is)412 b(essen)-31 b(tially)414 b(a)e(wrapp)31 b(er)411
+b(for)h Fu(CVodeReInit)i Fw(and)e(so)g(all)h(details)g(giv)-31
+b(en)413 b(for)f Fu(CVodeReInit)h Fw(in)f Fn(x)p Fw(5.5.7)j(apply)-92
+b(.)0 77867 y(The)369 b(call)i(to)f(the)f Fu(CVodeReInitB)i
+Fw(function)g(has)e(the)g(form)p Black Black eop
+%%Page: 107 117
+107 116 bop Black 4000 2701 a Fx(7.2)425 b(User-callable)g(functions)g
+(for)g(adjoin)-35 b(t)424 b(sensitivit)-35 b(y)424 b(analysis)14281
+b(107)p 4000 3144 48001 45 v Black 4000 5965 7727 45
+v 4000 7306 45 1341 v 4376 6974 a Fu(CVodeReInitB)p 11682
+7306 V 4000 7350 7727 45 v Black 4000 8702 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeReInitB\(cvadj)p
+25410 8702 349 45 v 421 w(mem,)h(fB,)f(tB0,)h(yB0,)g(itolB,)g(reltolB,)
+g(abstolB\);)p Black 4000 10445 a Fw(Description)p Black
+1286 w(The)348 b(function)g Fu(CVodeReInitB)h Fw(pro)-31
+b(vides)348 b(required)f(problem)h(sp)31 b(eci\257cations)349
+b(and)e(reinitializes)10814 11774 y Fs(cv)-25 b(odes)370
+b Fw(for)f(the)g(bac)-31 b(kw)g(ard)371 b(problem.)p
+Black 4000 13517 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvadj)p 13789 13517 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f(adjoin)-31 b(t)372 b(memory)e(blo)31 b(c)-31
+b(k)370 b(returned)e(b)-31 b(y)370 b Fu(CVadjMalloc)p
+Fw(.)p Black 10814 15039 a Fu(fB)p Black 4459 w Fw(\()p
+Fu(CVRhsFnB)p Fw(\))398 b(is)e(the)g Fs(C)g Fw(function)i(whic)-31
+b(h)397 b(computes)f Fl(f)119 b(B)56 b Fw(,)403 b(the)396
+b(righ)-31 b(t-hand)397 b(side)f(of)16435 16367 y(the)443
+b(bac)-31 b(kw)g(ard)443 b(ODE)f(problem.)713 b(This)442
+b(function)i(has)e(the)g(form)h Fu(fB\(t,)582 b(y,)g(yB,)16435
+17696 y(yBdot,)g(f)p 21154 17696 V 419 w(dataB\))370
+b Fw(\(for)f(full)h(details)h(see)e Fn(x)p Fw(7.3\).)p
+Black 10814 19217 a Fu(tB0)p Black 3878 w Fw(\()p Fu(realtype)p
+Fw(\))393 b(sp)31 b(eci\257es)391 b(the)g(endp)31 b(oin)-31
+b(t)392 b(where)f(\257nal)h(conditions)h(are)e(pro)-31
+b(vided)392 b(for)16435 20546 y(the)369 b(bac)-31 b(kw)g(ard)371
+b(problem.)p Black 10814 22068 a Fu(yB0)p Black 3878
+w Fw(\()p Fu(N)p 17516 22068 V 419 w(Vector)p Fw(\))f(is)g(the)f
+(\257nal)h(v)-61 b(alue)370 b(of)f(the)h(bac)-31 b(kw)g(ard)370
+b(problem.)p Black 10814 23589 a Fu(itolB)p Black 2716
+w Fw(\()p Fu(int)p Fw(\))474 b(is)e(either)h Fu(CV)p
+25203 23589 V 419 w(SS)f Fw(or)h Fu(CV)p 29878 23589
+V 418 w(SV)p Fw(,)h(where)e Fu(itol)p Fw(=)p Fu(CV)p
+39890 23589 V 419 w(SS)h Fw(indicates)h(scalar)f(rela-)16435
+24918 y(tiv)-31 b(e)337 b(error)e(tolerance)j(and)e(scalar)g(absolute)i
+(error)d(tolerance,)344 b(while)337 b Fu(itol)p Fw(=)p
+Fu(CV)p 50488 24918 V 420 w(SV)16435 26246 y Fw(indicates)278
+b(scalar)f(relativ)-31 b(e)279 b(error)c(tolerance)j(and)f(v)-31
+b(ector)277 b(absolute)h(error)e(tolerance.)p Black 10814
+27768 a Fu(reltolB)p Black 1554 w Fw(\()p Fu(realtype)p
+Fw(\))371 b(is)e(the)h(relativ)-31 b(e)371 b(error)d(tolerance.)p
+Black 10814 29290 a Fu(abstolB)p Black 1554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))500 b(is)e(a)i(p)31 b(oin)-31
+b(ter)499 b(to)h(the)f(absolute)h(error)e(tolerance.)883
+b(If)499 b Fu(itolB)p Fw(=)p Fu(CV)p 50181 29290 V 419
+w(SS)p Fw(,)16435 30618 y Fu(abstolB)565 b Fw(m)-31 b(ust)564
+b(b)31 b(e)564 b(a)g(p)31 b(oin)-31 b(ter)565 b(to)g(a)f
+Fu(realtype)h Fw(v)-61 b(ariable.)1078 b(If)564 b Fu(itolB)p
+Fw(=)p Fu(CV)p 50181 30618 V 419 w(SV)p Fw(,)16435 31946
+y Fu(abstolB)370 b Fw(m)-31 b(ust)370 b(b)31 b(e)369
+b(an)g Fu(N)p 27310 31946 V 419 w(Vector)g Fw(v)-61 b(ariable.)p
+Black 4000 33690 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(will)h(b)31
+b(e)369 b(one)g(of)h(the)f(follo)-31 b(wing:)p Black
+10814 35433 a Fu(CV)p 12046 35433 V 419 w(SUCCESS)p Black
+2716 w Fw(The)370 b(call)g(to)g Fu(CVodeReInitB)h Fw(w)-31
+b(as)369 b(successful.)p Black 10814 36955 a Fu(CV)p
+12046 36955 V 419 w(ADJMEM)p 15951 36955 V 419 w(NULL)p
+Black 554 w Fw(The)h Fu(cvadj)p 24429 36955 V 419 w(mem)f
+Fw(argumen)-31 b(t)371 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)p
+Black 10814 38477 a Fu(CV)p 12046 38477 V 419 w(BAD)p
+14208 38477 V 419 w(TB0)p Black 2878 w Fw(The)503 b(\257nal)h(time)h
+Fu(tB0)e Fw(is)g(outside)h(the)f(in)-31 b(terv)-61 b(al)505
+b(o)-31 b(v)g(er)504 b(whic)-31 b(h)504 b(the)f(forw)-31
+b(ard)19178 39805 y(problem)370 b(w)-31 b(as)370 b(solv)-31
+b(ed.)p Black 10814 41327 a Fu(CV)p 12046 41327 V 419
+w(MEM)p 14208 41327 V 419 w(NULL)p Black 2297 w Fw(The)429
+b Fs(cv)-25 b(odes)429 b Fw(memory)h(blo)31 b(c)-31 b(k)429
+b(for)g(the)g(bac)-31 b(kw)g(ard)430 b(problem)f(w)-31
+b(as)430 b(not)f(ini-)19178 42655 y(tialized)371 b(through)f(a)g
+(previous)f(call)i(to)f Fu(CVodeCreateB)p Fw(.)p Black
+10814 44177 a Fu(CV)p 12046 44177 V 419 w(NO)p 13627
+44177 V 418 w(MALLOC)p Black 1717 w Fw(Memory)305 b(space)g(for)g(the)h
+Fs(cv)-25 b(odes)305 b Fw(memory)h(blo)31 b(c)-31 b(k)306
+b(for)f(the)h(bac)-31 b(kw)g(ard)306 b(prob-)19178 45505
+y(lem)370 b(w)-31 b(as)370 b(not)g(allo)31 b(cated)371
+b(through)f(a)g(previous)f(call)i(to)e Fu(CVodeMallocB)p
+Fw(.)p Black 10814 47027 a Fu(CV)p 12046 47027 V 419
+w(ILL)p 14208 47027 V 419 w(INPUT)p Black 1716 w Fw(An)g(input)h
+(argumen)-31 b(t)371 b(to)f Fu(CVodeReInitB)h Fw(has)e(an)g(illegal)j
+(v)-61 b(alue.)p Black 4000 49547 a(Notes)p Black 5200
+w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1566 b
+Fw(It)437 b(is)g(the)h(user's)e(resp)31 b(onsibilit)-31
+b(y)440 b(to)e(pro)-31 b(vide)438 b(compatible)i Fu(itolB)e
+Fw(and)f Fu(abstolB)i Fw(argu-)10814 50876 y(men)-31
+b(ts.)4000 52604 y(Note)370 b(that)h(memory)f(allo)31
+b(cated)371 b(b)-31 b(y)370 b Fu(CVodeMallocB)h Fw(is)e(deallo)31
+b(cated)371 b(b)-31 b(y)370 b(the)f(function)i Fu(CVadjFree)p
+Fw(.)4000 55679 y Fo(7.2.4)1495 b(Linear)499 b(solv)-42
+b(er)500 b(initialization)g(functions)g(for)e(bac)-42
+b(kw)g(ard)501 b(problem)4000 57722 y Fw(The)453 b(adjoin)-31
+b(t)455 b(sensitivit)-31 b(y)455 b(mo)31 b(dule)454 b(in)f
+Fs(cv)-25 b(odes)453 b Fw(pro)-31 b(vides)453 b(in)-31
+b(terfaces)454 b(to)f(the)g(initialization)458 b(functions)c(of)g(all)
+4000 59050 y(supp)31 b(orted)408 b(linear)h(solv)-31
+b(er)408 b(mo)31 b(dules)409 b(for)f(the)h(case)f(in)g(whic)-31
+b(h)410 b(Newton)f(iteration)i(is)d(selected)g(for)h(the)f(solution)
+4000 60379 y(of)435 b(the)g(bac)-31 b(kw)g(ard)437 b(problem.)690
+b(The)435 b(initialization)440 b(functions)c(describ)31
+b(ed)434 b(in)h Fn(x)p Fw(5.5.2)i(cannot)f(b)31 b(e)435
+b(directly)g(used)4000 61707 y(since)297 b(the)g(optional)i
+(user-de\257ned)d(Jacobian-related)j(functions)f(ha)-31
+b(v)g(e)298 b(di\256eren)-31 b(t)297 b(protot)-31 b(yp)31
+b(es)298 b(for)f(the)g(bac)-31 b(kw)g(ard)4000 63036
+y(problem)370 b(than)g(for)f(the)h(forw)-31 b(ard)370
+b(problem.)5660 64364 y(The)414 b(follo)-31 b(wing)418
+b(four)c(wrapp)31 b(er)413 b(functions)i(can)f(b)31 b(e)413
+b(used)g(to)h(initialize)j(one)d(of)h(the)f(linear)g(solv)-31
+b(er)414 b(mo)31 b(dules)4000 65692 y(for)325 b(the)g(bac)-31
+b(kw)g(ard)326 b(problem.)479 b(Their)325 b(argumen)-31
+b(ts)325 b(are)g(iden)-31 b(tical)327 b(to)f(those)f(of)g(the)g
+(functions)h(in)f Fn(x)p Fw(5.5.2)i(with)f(the)4000 67021
+y(exception)399 b(of)f(their)g(\257rst)g(argumen)-31
+b(t)399 b(whic)-31 b(h)399 b(m)-31 b(ust)398 b(b)31 b(e)397
+b(the)h(p)31 b(oin)-31 b(ter)399 b(to)f(the)g(adjoin)-31
+b(t)400 b(memory)f(blo)31 b(c)-31 b(k)398 b(returned)4000
+68349 y(b)-31 b(y)369 b Fu(CVadjMalloc)p Fw(.)p Black
+Black 5162 70451 a Fu(flag)582 b(=)f(CVDenseB\(cvadj_mem,)j(nB\);)5162
+71780 y(flag)e(=)f(CVDiagB\(cvadj_mem\);)5162 73108 y(flag)h(=)f
+(CVBandB\(cvadj_mem,)j(nB,)e(mupperB,)g(mlowerB\);)5162
+74436 y(flag)g(=)f(CVSpgmrB\(cvadj_mem,)j(pretypeB,)f(maxlB\);)4000
+76539 y Fw(Their)397 b(return)f(v)-61 b(alue)398 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)397 b Fu(int)p Fw(\))h(can)f(ha)-31
+b(v)g(e)398 b(an)-31 b(y)397 b(of)h(the)f(return)f(v)-61
+b(alues)397 b(of)g(their)h(coun)-31 b(terparts,)405 b(but)4000
+77867 y(it)370 b(can)f(also)h(b)31 b(e)369 b Fu(CV)p
+12095 77867 V 419 w(ADJMEM)p 16000 77867 V 419 w(NULL)h
+Fw(if)g(the)f Fu(cvadj)p 24939 77867 V 419 w(mem)h Fw(argumen)-31
+b(t)370 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)p Black Black
+eop
+%%Page: 108 118
+108 117 bop Black 0 2701 a Fx(108)19172 b(Using)426 b(CV)-35
+b(ODES)425 b(for)h(Adjoin)-35 b(t)425 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black 0 6974 a
+Fo(7.2.5)1495 b(Bac)-42 b(kw)g(ard)501 b(in)-42 b(tegration)501
+b(function)0 9017 y Fw(The)370 b(function)h Fu(CVodeB)f
+Fw(p)31 b(erforms)369 b(the)g(in)-31 b(tegration)373
+b(of)d(the)f(bac)-31 b(kw)g(ard)371 b(problem.)494 b(It)370
+b(is)f(essen)-31 b(tially)372 b(a)d(wrapp)31 b(er)0 10345
+y(for)343 b(the)g Fs(cv)-25 b(odes)343 b Fw(main)i(in)-31
+b(tegration)345 b(function)g Fu(CVode)e Fw(and,)349 b(in)343
+b(the)g(case)g(in)g(whic)-31 b(h)344 b(c)-31 b(hec)g(kp)31
+b(oin)-31 b(ts)345 b(w)-31 b(ere)343 b(needed,)0 11674
+y(it)288 b(ev)-31 b(olv)g(es)289 b(the)f(solution)i(of)e(the)g(bac)-31
+b(kw)g(ard)289 b(problem)f(through)h(a)f(sequence)f(of)h(forw)-31
+b(ard-bac)g(kw)g(ard)290 b(in)-31 b(tegrations)0 13002
+y(b)31 b(et)-31 b(w)g(een)277 b(consecutiv)-31 b(e)277
+b(c)-31 b(hec)g(kp)31 b(oin)-31 b(ts.)464 b(The)276 b(\257rst)f(run)h
+(in)-31 b(tegrates)278 b(the)e(original)i(IVP)e(forw)-31
+b(ard)277 b(in)g(time)g(and)f(stores)0 14331 y(in)-31
+b(terp)31 b(olation)345 b(data;)352 b(the)342 b(second)g(run)e(in)-31
+b(tegrates)344 b(the)d(bac)-31 b(kw)g(ard)343 b(problem)g(bac)-31
+b(kw)g(ard)343 b(in)f(time)h(and)e(p)31 b(erforms)0 15659
+y(Hermite)370 b(in)-31 b(terp)31 b(olation)373 b(to)c(pro)-31
+b(vide)370 b(the)g(solution)h(of)f(the)f(IVP)g(to)h(the)g(bac)-31
+b(kw)g(ard)370 b(problem.)1660 16987 y(The)g(call)g(to)g(this)g
+(function)g(has)g(the)f(form)p 0 18849 4240 45 v 0 20190
+45 1341 v 376 19858 a Fu(CVodeB)p 4195 20190 V 0 20234
+4240 45 v Black 0 21586 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeB\(cvadj)p 17924 21586 349 45 v 420 w(mem,)h(tBout,)g
+(yBout,)g(tBret,)g(itaskB\);)p Black 0 23349 a Fw(Description)p
+Black 1286 w(The)369 b(function)i Fu(CVodeB)f Fw(in)-31
+b(tegrates)371 b(the)e(bac)-31 b(kw)g(ard)371 b(ODE)e(problem)h(o)-31
+b(v)g(er)369 b(an)h(in)-31 b(terv)-61 b(al)370 b(in)g
+Fl(t)p Fw(.)p Black 0 25113 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvadj)p 9789 25113 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f(adjoin)-31 b(t)372 b(memory)e(blo)31
+b(c)-31 b(k)370 b(returned)e(b)-31 b(y)370 b Fu(CVadjMalloc)p
+Fw(.)p Black 6814 26654 a Fu(tBout)p Black 2716 w Fw(\()p
+Fu(realtype)p Fw(\))h(the)f(next)f(time)i(at)f(whic)-31
+b(h)370 b(a)f(computed)i(solution)g(is)e(desired.)p Black
+6814 28196 a Fu(yBout)p Black 2716 w Fw(\()p Fu(N)p 13516
+28196 V 419 w(Vector)p Fw(\))h(the)g(computed)g(solution)h(v)-31
+b(ector)370 b(of)g(the)f(bac)-31 b(kw)g(ard)371 b(problem.)p
+Black 6814 29738 a Fu(tBret)p Black 2716 w Fw(\()p Fu(realtype)583
+b(*)p Fw(\))370 b(the)f(time)h(reac)-31 b(hed)370 b(b)-31
+b(y)369 b(the)g(solv)-31 b(er.)p Black 6814 31280 a Fu(itaskB)p
+Black 2135 w Fw(\()p Fu(int)p Fw(\))247 b(a)g(\260ag)g(indicating)i
+(the)d(job)h(of)g(the)f(solv)-31 b(er)247 b(for)f(the)g(next)h(step.)
+452 b(The)246 b Fu(CV)p 44415 31280 V 419 w(NORMAL)12435
+32608 y Fw(task)438 b(is)e(to)i(ha)-31 b(v)g(e)438 b(the)f(solv)-31
+b(er)437 b(tak)-31 b(e)438 b(in)-31 b(ternal)439 b(steps)d(un)-31
+b(til)439 b(it)e(has)g(reac)-31 b(hed)437 b(or)g(just)12435
+33937 y(passed)d(the)h(user)f(sp)31 b(eci\257ed)434 b
+Fu(tBout)h Fw(parameter.)690 b(The)435 b(solv)-31 b(er)435
+b(then)g(in)-31 b(terp)31 b(olates)12435 35265 y(in)386
+b(order)e(to)i(return)f(an)g(appro)-31 b(ximate)388 b(v)-61
+b(alue)386 b(of)f Fl(y)40 b(B)56 b Fw(\()p Fu(tBout)p
+Fw(\).)541 b(The)386 b Fu(CV)p 43165 35265 V 419 w(ONE)p
+45327 35265 V 418 w(STEP)12435 36593 y Fw(option)298
+b(tells)f(the)g(solv)-31 b(er)297 b(to)g(just)g(tak)-31
+b(e)297 b(one)g(in)-31 b(ternal)298 b(step)e(and)h(return)e(the)i
+(solution)12435 37922 y(at)370 b(the)f(p)31 b(oin)-31
+b(t)371 b(reac)-31 b(hed)369 b(b)-31 b(y)369 b(that)i(step.)p
+Black 0 39685 a(Return)e(v)-61 b(alue)p Black 554 w(On)386
+b(return,)391 b Fu(CVodeB)c Fw(returns)f(a)g(v)-31 b(ector)388
+b Fu(yBout)f Fw(and)f(a)h(corresp)31 b(onding)387 b(indep)31
+b(enden)-31 b(t)387 b(v)-61 b(ariable)6814 41013 y(v)g(alue)249
+b Fl(t)307 b Fw(=)p Fu(*tBret)p Fw(,)274 b(suc)-31 b(h)248
+b(that)i Fu(yBout)f Fw(is)f(the)h(computed)h(v)-61 b(alue)249
+b(of)g(the)f(solution)j(of)e(the)f(bac)-31 b(kw)g(ard)6814
+42342 y(problem.)6814 44105 y(The)347 b(return)f(v)-61
+b(alue)347 b Fu(flag)h Fw(\(of)f(t)-31 b(yp)31 b(e)348
+b Fu(int)p Fw(\))f(will)i(b)31 b(e)346 b(one)h(of)g(the)g(follo)-31
+b(wing.)489 b(F)-92 b(or)346 b(more)h(details)h(see)6814
+45433 y Fn(x)p Fw(5.5.3.)p Black 6814 47196 a Fu(CV)p
+8046 47196 V 419 w(SUCCESS)p Black 3716 w(CVodeB)370
+b Fw(succeeded.)p Black 6814 48738 a Fu(CV)p 8046 48738
+V 419 w(NO)p 9627 48738 V 418 w(MALLOC)p Black 2717 w
+Fw(The)f Fs(cv)-25 b(odes)370 b Fw(memory)g(for)f(the)h(bac)-31
+b(kw)g(ard)370 b(problem)g(w)-31 b(as)370 b Fu(NULL)p
+Fw(.)p Black 6814 50280 a Fu(CV)p 8046 50280 V 419 w(ILL)p
+10208 50280 V 419 w(INPUT)p Black 2716 w Fw(One)f(of)g(the)h(inputs)f
+(to)h Fu(CVode)g Fw(is)f(illegal.)p Black 6814 51822
+a Fu(CV)p 8046 51822 V 419 w(BAD)p 10208 51822 V 419
+w(ITASK)p Black 2716 w Fw(The)g Fu(itaskB)h Fw(argumen)-31
+b(t)371 b(has)e(an)g(illegal)j(v)-61 b(alue.)p Black
+6814 53364 a Fu(CV)p 8046 53364 V 419 w(TOO)p 10208 53364
+V 419 w(MUCH)p 12951 53364 V 419 w(WORK)p Black 554 w
+Fw(The)369 b(solv)-31 b(er)370 b(to)31 b(ok)370 b Fu(mxstep)g
+Fw(in)-31 b(ternal)371 b(steps)d(but)i(could)g(not)g(reac)-31
+b(h)369 b Fu(tBout)p Fw(.)p Black 6814 54905 a Fu(CV)p
+8046 54905 V 419 w(TOO)p 10208 54905 V 419 w(MUCH)p 12951
+54905 V 419 w(ACC)p Black 1135 w Fw(The)452 b(solv)-31
+b(er)452 b(could)g(not)g(satisfy)h(the)f(accuracy)g(demanded)g(b)-31
+b(y)452 b(the)g(user)16178 56234 y(for)369 b(some)g(in)-31
+b(ternal)371 b(step.)p Black 6814 57776 a Fu(CV)p 8046
+57776 V 419 w(ERR)p 10208 57776 V 419 w(FAILURE)p Black
+1554 w Fw(Error)495 b(test)h(failures)g(o)31 b(ccurred)495
+b(to)31 b(o)496 b(man)-31 b(y)497 b(times)g(during)e(one)h(in)-31
+b(ternal)16178 59104 y(time)370 b(step.)p Black 6814
+60646 a Fu(CV)p 8046 60646 V 419 w(CONV)p 10789 60646
+V 419 w(FAILURE)p Black 973 w Fw(Con)-31 b(v)g(ergence)383
+b(test)g(failures)g(o)31 b(ccurred)381 b(to)31 b(o)383
+b(man)-31 b(y)384 b(times)f(during)f(one)h(in-)16178
+61974 y(ternal)370 b(time)g(step.)p Black 6814 63516
+a Fu(CV)p 8046 63516 V 419 w(LSETUP)p 11951 63516 V 419
+w(FAIL)p Black 1554 w Fw(The)i(linear)h(solv)-31 b(er's)373
+b(setup)f(function)i(failed)g(in)e(an)h(unreco)-31 b(v)g(erable)373
+b(man-)16178 64844 y(ner.)p Black 6814 66386 a Fu(CV)p
+8046 66386 V 419 w(SOLVE)p 11370 66386 V 419 w(FAIL)p
+Black 2135 w Fw(The)400 b(linear)g(solv)-31 b(er's)400
+b(solv)-31 b(e)401 b(function)g(failed)g(in)f(an)f(unreco)-31
+b(v)g(erable)401 b(man-)16178 67715 y(ner.)p Black 6814
+69256 a Fu(CV)p 8046 69256 V 419 w(ADJMEM)p 11951 69256
+V 419 w(NULL)p Black 1554 w Fw(The)369 b Fu(cvadj)p 21428
+69256 V 419 w(mem)h Fw(argumen)-31 b(t)370 b(w)-31 b(as)370
+b Fu(NULL)p Fw(.)p Black 6814 70798 a Fu(CV)p 8046 70798
+V 419 w(BCKMEM)p 11951 70798 V 419 w(NULL)p Black 1554
+w Fw(The)474 b Fu(cvodes)h Fw(memory)h(for)e(the)h(bac)-31
+b(kw)g(ard)476 b(problem)f(w)-31 b(as)475 b(not)h(created)16178
+72127 y(through)370 b(a)f(call)h(to)g Fu(CVodeCreateB)p
+Fw(.)p Black 6814 73668 a Fu(CV)p 8046 73668 V 419 w(BAD)p
+10208 73668 V 419 w(TBOUT)p Black 2716 w Fw(The)404 b(desired)g(output)
+i(time)g Fu(tBout)f Fw(is)g(outside)g(the)g(in)-31 b(terv)-61
+b(al)406 b(o)-31 b(v)g(er)405 b(whic)-31 b(h)16178 74997
+y(the)369 b(forw)-31 b(ard)370 b(problem)g(w)-31 b(as)370
+b(solv)-31 b(ed.)p Black 6814 76539 a Fu(CV)p 8046 76539
+V 419 w(REIFWD)p 11951 76539 V 419 w(FAIL)p Black 1554
+w Fw(Reinitialization)486 b(of)c(the)f(forw)-31 b(ard)482
+b(problem)g(failed)h(at)f(the)g(\257rst)e(c)-31 b(hec)g(k-)16178
+77867 y(p)31 b(oin)-31 b(t)370 b(\(corresp)31 b(onding)370
+b(to)g(the)f(initial)j(time)f(of)e(the)h(forw)-31 b(ard)370
+b(problem\).)p Black Black eop
+%%Page: 109 119
+109 118 bop Black 4000 2701 a Fx(7.2)425 b(User-callable)g(functions)g
+(for)g(adjoin)-35 b(t)424 b(sensitivit)-35 b(y)424 b(analysis)14281
+b(109)p 4000 3144 48001 45 v Black Black 10814 6974 a
+Fu(CV)p 12046 6974 349 45 v 419 w(FWD)p 14208 6974 V
+419 w(FAIL)p Black 3297 w Fw(An)369 b(error)f(o)31 b(ccured)369
+b(during)g(the)h(in)-31 b(tegration)372 b(of)d(the)h(forw)-31
+b(ard)370 b(problem.)p Black 4000 8739 a(Notes)p Black
+4072 w(All)316 b(failure)g(return)e(v)-61 b(alues)315
+b(are)g(negativ)-31 b(e)317 b(and)f(therefore)f(a)g(test)g
+Fu(flag)p Fl(<)308 b Fw(0)316 b(will)h(trap)e(all)h Fu(CVodeB)10814
+10067 y Fw(failures.)4000 13161 y Fo(7.2.6)1495 b(Optional)500
+b(input)f(and)g(output)g(functions)h(for)e(the)h(bac)-42
+b(kw)g(ard)501 b(problem)4000 15204 y Fx(Optional)425
+b(input)f(functions)4000 17247 y Fw(The)397 b(adjoin)-31
+b(t)398 b(mo)31 b(dule)397 b(in)g Fs(cv)-25 b(odes)397
+b Fw(pro)-31 b(vides)396 b(wrapp)31 b(ers)396 b(for)g(most)h(of)g(the)g
+(optional)i(input)e(functions)g(de\257ned)4000 18576
+y(in)503 b Fn(x)p Fw(5.5.4.)895 b(The)502 b(only)i(di\256erence)e(is)g
+(that)i(the)e(\257rst)g(argumen)-31 b(t)504 b(of)f(the)g(optional)i
+(input)e(functions)h(for)f(the)4000 19904 y(bac)-31 b(kw)g(ard)364
+b(problem)f(is)g(the)f(p)31 b(oin)-31 b(ter)363 b(to)h(the)e(adjoin)-31
+b(t)365 b(memory)e(blo)31 b(c)-31 b(k,)366 b Fu(cvadj)p
+37523 19904 V 419 w(mem)d Fw(of)g(t)-31 b(yp)31 b(e)363
+b Fu(void)581 b(*)p Fw(,)365 b(returned)4000 21232 y(b)-31
+b(y)369 b Fu(CVadjMalloc)p Fw(.)495 b(The)369 b(optional)j(input)e
+(functions)g(de\257ned)f(for)g(the)h(bac)-31 b(kw)g(ard)370
+b(problem)g(are:)p Black Black 5162 23422 a Fu(flag)582
+b(=)f(CVodeSetIterTypeB\(cvadj_mem,)586 b(iterB\);)5162
+24750 y(flag)c(=)f(CVodeSetFdataB\(cvadj_mem,)k(f_dataB\);)5162
+26078 y(flag)d(=)f(CVodeSetErrFileB\(cvadj_mem,)586 b(errfpB\);)5162
+27407 y(flag)c(=)f(CVodeSetMaxOrdB\(cvadj_mem,)k(maxordB\);)5162
+28735 y(flag)d(=)f(CVodeSetMaxNumStepsB\(cvadj_mem,)586
+b(mxstepsB\);)5162 30063 y(flag)c(=)f(CVodeSetStabLimDetB\(cvadj_mem,)
+586 b(stldetB\);)5162 31392 y(flag)c(=)f(CVodeSetInitStepB\(cvadj_mem,)
+586 b(hinB\);)5162 32720 y(flag)c(=)f(CVodeSetMinStepB\(cvadj_mem,)586
+b(hminB\);)5162 34048 y(flag)c(=)f(CVodeSetMaxStepB\(cvadj_mem,)586
+b(hmaxB\);)4000 36238 y Fw(Their)397 b(return)f(v)-61
+b(alue)398 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)397
+b Fu(int)p Fw(\))h(can)f(ha)-31 b(v)g(e)398 b(an)-31
+b(y)397 b(of)h(the)f(return)f(v)-61 b(alues)397 b(of)g(their)h(coun)-31
+b(terparts,)405 b(but)4000 37566 y(it)370 b(can)f(also)h(b)31
+b(e)369 b Fu(CV)p 12095 37566 V 419 w(ADJMEM)p 16000
+37566 V 419 w(NULL)h Fw(if)g(the)f Fu(cvadj)p 24939 37566
+V 419 w(mem)h Fw(argumen)-31 b(t)370 b(w)-31 b(as)370
+b Fu(NULL)p Fw(.)5660 38895 y(Optional)517 b(inputs)e(for)g(the)g
+Fs(cvdense)h Fw(linear)f(solv)-31 b(er)516 b(mo)31 b(dule)515
+b(can)g(b)31 b(e)514 b(set)h(for)g(the)g(bac)-31 b(kw)g(ard)516
+b(problem)4000 40223 y(through)370 b(the)f(follo)-31
+b(wing)373 b(function:)p 4000 42086 10052 45 v 4000 43427
+45 1341 v 4376 43095 a Fu(CVDenseSetJacFnB)p 14007 43427
+V 4000 43471 10052 45 v Black 4000 44823 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVDenseSetJacFnB\(cvadj)p
+27734 44823 349 45 v 422 w(mem,)g(djacB,)h(jac)p 36872
+44823 V 419 w(dataB\);)p Black 4000 46588 a Fw(Description)p
+Black 1286 w(The)334 b(function)i Fu(CVDenseSetJacFnB)g
+Fw(sp)31 b(eci\257es)333 b(the)h(dense)f(Jacobian)j(appro)-31
+b(ximation)337 b(function)10814 47917 y(to)370 b(b)31
+b(e)369 b(used)f(for)h(the)h(bac)-31 b(kw)g(ard)371 b(problem)e(and)h
+(the)f(p)31 b(oin)-31 b(ter)370 b(to)g(user)e(data.)p
+Black 4000 49682 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvadj)p 13789 49682 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f(adjoin)-31 b(t)372 b(memory)e(blo)31 b(c)-31
+b(k.)p Black 10814 51225 a Fu(djacB)p Black 2716 w Fw(\()p
+Fu(CVDenseJacFnB)p Fw(\))372 b(user-de\257ned)c(dense)h(Jacobian)h
+(appro)-31 b(ximation)373 b(function.)p Black 10814 52769
+a Fu(jac)p 12627 52769 V 419 w(dataB)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f(user-de\257ned)f(data)j(structure.)p Black
+4000 54534 a(Return)e(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black
+10814 56299 a Fu(CVDENSE)p 14951 56299 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(v)-61 b(alue)369 b(has)h(b)31
+b(een)368 b(successfuly)h(set.)p Black 10814 57842 a
+Fu(CVDENSE)p 14951 57842 V 419 w(MEM)p 17113 57842 V
+419 w(NULL)p Black 1136 w Fw(The)321 b Fs(cv)-25 b(odes)322
+b Fw(solv)-31 b(er)322 b(memory)g(blo)31 b(c)-31 b(k)322
+b(w)-31 b(as)322 b(not)g(created)g(through)g(a)g(call)20922
+59171 y(to)369 b Fu(CVodeCreateB)p Fw(.)p Black 10814
+60714 a Fu(CVDENSE)p 14951 60714 V 419 w(LMEM)p 17694
+60714 V 419 w(NULL)p Black 555 w Fw(The)303 b Fs(cvdense)g
+Fw(linear)h(solv)-31 b(er)304 b(has)e(not)i(b)31 b(een)303
+b(initialized)j(through)d(a)h(call)20922 62043 y(to)369
+b Fu(CVDenseB)p Fw(.)p Black 10814 63586 a Fu(CV)p 12046
+63586 V 419 w(ADJMEM)p 15951 63586 V 419 w(NULL)p Black
+2298 w Fw(The)g Fu(cvadj)p 26172 63586 V 419 w(mem)h
+Fw(argumen)-31 b(t)370 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)p
+Black 4000 65351 a(Notes)p Black 4072 w(The)f(function)i(t)-31
+b(yp)31 b(e)370 b Fu(CVDenseJacFnB)h Fw(is)e(describ)31
+b(ed)368 b(in)h Fn(x)p Fw(7.3.)4000 67080 y(Optional)e(inputs)e(for)g
+(the)g Fs(cvband)g Fw(linear)g(solv)-31 b(er)366 b(mo)31
+b(dule)365 b(can)g(b)31 b(e)365 b(set)f(for)h(the)g(bac)-31
+b(kw)g(ard)367 b(problem)e(through)4000 68408 y(the)k(follo)-31
+b(wing)373 b(function:)p 4000 70272 9470 45 v 4000 71612
+45 1341 v 4376 71280 a Fu(CVBandSetJacFnB)p 13426 71612
+V 4000 71656 9470 45 v Black 4000 73009 a Fw(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVBandSetJacFnB\(cvadj)p 27153
+73009 349 45 v 422 w(mem,)g(bjacB,)h(jac)p 36291 73009
+V 419 w(dataB\);)p Black 4000 74774 a Fw(Description)p
+Black 1286 w(The)300 b(function)h Fu(CVBandSetJacFnB)h
+Fw(sp)31 b(eci\257es)299 b(the)h(banded)g(Jacobian)h(appro)-31
+b(ximation)303 b(function)10814 76102 y(to)370 b(b)31
+b(e)369 b(used)f(for)h(the)h(bac)-31 b(kw)g(ard)371 b(problem)e(and)h
+(the)f(p)31 b(oin)-31 b(ter)370 b(to)g(user)e(data.)p
+Black 4000 77867 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvadj)p 13789 77867 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f(adjoin)-31 b(t)372 b(memory)e(blo)31 b(c)-31
+b(k.)p Black Black eop
+%%Page: 110 120
+110 119 bop Black 0 2701 a Fx(110)19172 b(Using)426 b(CV)-35
+b(ODES)425 b(for)h(Adjoin)-35 b(t)425 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black Black 6814
+6974 a Fu(bjacB)p Black 2716 w Fw(\()p Fu(CVBandJacFnB)p
+Fw(\))372 b(user-de\257ned)c(banded)h(Jacobian)i(appro)-31
+b(ximation)373 b(function.)p Black 6814 8490 a Fu(jac)p
+8627 8490 349 45 v 419 w(dataB)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f(user-de\257ned)f(data)j(structure.)p Black
+0 10228 a(Return)e(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black
+6814 11966 a Fu(CVBAND)p 10370 11966 V 419 w(SUCCESS)p
+Black 1554 w Fw(The)h(optional)i(v)-61 b(alue)369 b(has)g(b)31
+b(een)369 b(successfuly)g(set.)p Black 6814 13482 a Fu(CVBAND)p
+10370 13482 V 419 w(MEM)p 12532 13482 V 419 w(NULL)p
+Black 1135 w Fw(The)380 b Fs(cv)-25 b(odes)380 b Fw(solv)-31
+b(er)380 b(memory)g(blo)31 b(c)-31 b(k)381 b(w)-31 b(as)380
+b(not)g(created)g(through)g(a)g(call)16340 14810 y(to)370
+b Fu(CVodeCreateB)p Fw(.)p Black 6814 16326 a Fu(CVBAND)p
+10370 16326 V 419 w(LMEM)p 13113 16326 V 419 w(NULL)p
+Black 554 w Fw(The)404 b Fs(cvband)f Fw(linear)h(solv)-31
+b(er)404 b(has)f(not)g(b)31 b(een)403 b(initialized)j(through)e(a)g
+(call)16340 17655 y(to)370 b Fu(CVBandB)p Fw(.)p Black
+6814 19171 a Fu(CV)p 8046 19171 V 419 w(ADJMEM)p 11951
+19171 V 419 w(NULL)p Black 1716 w Fw(The)g Fu(cvadj)p
+21591 19171 V 419 w(mem)f Fw(argumen)-31 b(t)371 b(w)-31
+b(as)370 b Fu(NULL)p Fw(.)p Black 0 20909 a(Notes)p Black
+4072 w(The)f(function)i(t)-31 b(yp)31 b(e)370 b Fu(CVBandJacFnB)g
+Fw(is)g(describ)31 b(ed)368 b(in)h Fn(x)p Fw(7.3.)0 22637
+y(Optional)325 b(inputs)d(for)h(the)f Fs(cvspgmr)g Fw(linear)h(solv)-31
+b(er)323 b(mo)31 b(dule)323 b(can)g(b)31 b(e)322 b(set)g(for)g(the)h
+(bac)-31 b(kw)g(ard)324 b(problem)f(through)0 23966 y(the)369
+b(follo)-31 b(wing)373 b(functions:)p 0 25806 15282 45
+v 0 27392 45 1587 v 376 26814 a Fu(CVSpgmrSetPreconditionerB)p
+15237 27392 V 0 27436 15282 45 v Black 0 28716 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVSpgmrSetPrecSolveFnB\(cvadj)p
+27220 28716 349 45 v 423 w(mem,)g(psolveB,)i(psetupB,)f(p)p
+41590 28716 V 419 w(dataB\);)p Black 0 30454 a Fw(Description)p
+Black 1286 w(The)426 b(function)g Fu(CVSpgmrSetPrecSolveFnB)j
+Fw(sp)31 b(eci\257es)425 b(the)g(preconditioner)i(setup)e(and)h(solv)
+-31 b(e)6814 31782 y(functions)370 b(and)g(the)f(p)31
+b(oin)-31 b(ter)370 b(to)g(user)e(data)j(for)e(the)g(bac)-31
+b(kw)g(ard)371 b(in)-31 b(tegration.)p Black 0 33520
+a(Argumen)g(ts)p Black Black 1517 w Fu(cvadj)p 9789 33520
+V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(adjoin)-31 b(t)372
+b(memory)e(blo)31 b(c)-31 b(k.)p Black 6814 35036 a Fu(psolveB)p
+Black 1554 w Fw(\()p Fu(CVSpgmrPrecSolveFnB)p Fw(\))373
+b(user-de\257ned)368 b(preconditioner)i(solv)-31 b(e)370
+b(function.)p Black 6814 36552 a Fu(psetupB)p Black 1554
+w Fw(\()p Fu(CVSpgmrPrecSetupFnB)p Fw(\))j(user-de\257ned)368
+b(preconditioner)i(setup)f(function.)p Black 6814 38068
+a Fu(p)p 7465 38068 V 419 w(dataB)p Black 1716 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f(user-de\257ned)f(data)j(structure.)p Black
+0 39806 a(Return)e(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black
+6814 41544 a Fu(CVSPGMR)p 10951 41544 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(v)-61 b(alue)369 b(has)h(b)31
+b(een)368 b(successfuly)h(set.)p Black 6814 43060 a Fu(CVSPGMR)p
+10951 43060 V 419 w(MEM)p 13113 43060 V 419 w(NULL)p
+Black 1136 w Fw(The)321 b Fs(cv)-25 b(odes)322 b Fw(solv)-31
+b(er)322 b(memory)g(blo)31 b(c)-31 b(k)322 b(w)-31 b(as)322
+b(not)g(created)g(through)g(a)g(call)16922 44389 y(to)369
+b Fu(CVodeCreateB)p Fw(.)p Black 6814 45905 a Fu(CVSPGMR)p
+10951 45905 V 419 w(LMEM)p 13694 45905 V 419 w(NULL)p
+Black 555 w Fw(The)497 b Fs(cvspgmr)f Fw(linear)i(solv)-31
+b(er)498 b(has)f(not)h(b)31 b(een)496 b(initialized)501
+b(through)d(a)16922 47233 y(call)370 b(to)g Fu(CVSpgmrB)p
+Fw(.)p Black 6814 48749 a Fu(CV)p 8046 48749 V 419 w(ADJMEM)p
+11951 48749 V 419 w(NULL)p Black 2298 w Fw(The)f Fu(cvadj)p
+22172 48749 V 419 w(mem)h Fw(argumen)-31 b(t)370 b(w)-31
+b(as)370 b Fu(NULL)p Fw(.)p Black 0 50487 a(Notes)p Black
+4072 w(The)530 b(function)i(t)-31 b(yp)31 b(e)531 b Fu
+(CVSpgmrPrecSolveFnB)h Fw(is)f(describ)31 b(ed)529 b(in)h
+Fn(x)p Fw(7.3.)977 b(The)531 b(function)g(t)-31 b(yp)31
+b(e)6814 51816 y Fu(CVSpgmrPrecSetupFnB)372 b Fw(is)d(describ)31
+b(ed)368 b(in)i Fn(x)p Fw(7.3.)p 0 54055 14701 45 v 0
+55642 45 1587 v 376 55064 a Fu(CVSpgmrSetJacTimesVecFnB)p
+14656 55642 V 0 55686 14701 45 v Black 0 56966 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVSpgmrSetJacTimesVecFnB\(cvadj)p
+28382 56966 349 45 v 423 w(mem,)h(jtimesB,)g(jac)p 38684
+56966 V 419 w(data\);)p Black 0 58704 a Fw(Description)p
+Black 1286 w(The)332 b(function)h Fu(CVSpgmrSetJacTimesFnB)h
+Fw(sp)31 b(eci\257es)331 b(the)h(Jacobian-v)-31 b(ector)334
+b(pro)31 b(duct)331 b(function)6814 60032 y(to)370 b(b)31
+b(e)369 b(used)f(and)i(te)f(p)31 b(oin)-31 b(ter)370
+b(to)g(user)e(data.)p Black 0 61770 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fu(cvadj)p 9789 61770 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f(adjoin)-31 b(t)372 b(memory)e(blo)31
+b(c)-31 b(k.)p Black 6814 63286 a Fu(jtimesB)p Black
+1554 w Fw(\()p Fu(CVSpgmrJacTimesVecFnB)p Fw(\))271 b(user-de\257ned)
+266 b(Jacobian-v)-31 b(ector)270 b(pro)31 b(duct)267
+b(function.)p Black 6814 64802 a Fu(jac)p 8627 64802
+V 419 w(dataB)p Black 554 w Fw(\()p Fu(void)582 b(*)p
+Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(user-de\257ned)f
+(data)j(structure.)p Black 0 66540 a(Return)e(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p
+Black 6814 68278 a Fu(CVSPGMR)p 10951 68278 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(v)-61 b(alue)369 b(has)h(b)31
+b(een)368 b(successfuly)h(set.)p Black 6814 69794 a Fu(CVSPGMR)p
+10951 69794 V 419 w(MEM)p 13113 69794 V 419 w(NULL)p
+Black 1136 w Fw(The)321 b Fs(cv)-25 b(odes)322 b Fw(solv)-31
+b(er)322 b(memory)g(blo)31 b(c)-31 b(k)322 b(w)-31 b(as)322
+b(not)g(created)g(through)g(a)g(call)16922 71122 y(to)369
+b Fu(CVodeCreateB)p Fw(.)p Black 6814 72639 a Fu(CVSPGMR)p
+10951 72639 V 419 w(LMEM)p 13694 72639 V 419 w(NULL)p
+Black 555 w Fw(The)497 b Fs(cvspgmr)f Fw(linear)i(solv)-31
+b(er)498 b(has)f(not)h(b)31 b(een)496 b(initialized)501
+b(through)d(a)16922 73967 y(call)370 b(to)g Fu(CVSpgmrB)p
+Fw(.)p Black 6814 75483 a Fu(CV)p 8046 75483 V 419 w(ADJMEM)p
+11951 75483 V 419 w(NULL)p Black 2298 w Fw(The)f Fu(cvadj)p
+22172 75483 V 419 w(mem)h Fw(argumen)-31 b(t)370 b(w)-31
+b(as)370 b Fu(NULL)p Fw(.)p Black 0 77221 a(Notes)p Black
+4072 w(The)f(function)i(t)-31 b(yp)31 b(e)370 b Fu
+(CVSpgmrJacTimesVecFnB)i Fw(is)d(describ)31 b(ed)368
+b(in)i Fn(x)p Fw(7.3.)p Black Black eop
+%%Page: 111 121
+111 120 bop Black 4000 2701 a Fx(7.2)425 b(User-callable)g(functions)g
+(for)g(adjoin)-35 b(t)424 b(sensitivit)-35 b(y)424 b(analysis)14281
+b(111)p 4000 3144 48001 45 v Black 4000 5965 10633 45
+v 4000 7552 45 1587 v 4376 6974 a Fu(CVSpgmrSetGSTypeB)p
+14588 7552 V 4000 7596 10633 45 v Black 4000 8887 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVSpgmrSetGSType\(cvadj)p
+27734 8887 349 45 v 422 w(mem,)g(gstypeB\);)p Black 4000
+10681 a Fw(Description)p Black 1286 w(The)540 b(function)g
+Fu(CVSpgmrSetGSTypeB)i Fw(sp)31 b(eci\257es)539 b(the)g(t)-31
+b(yp)31 b(e)540 b(of)g(Gram-Sc)-31 b(hmidt)541 b(orthogonal-)10814
+12009 y(ization)533 b(to)f(b)31 b(e)531 b(used.)978 b(This)531
+b(m)-31 b(ust)532 b(b)31 b(e)530 b(one)i(of)f(the)h(en)-31
+b(umeration)533 b(constan)-31 b(ts)532 b Fu(MODIFIED)p
+50488 12009 V 420 w(GS)10814 13337 y Fw(or)503 b Fu(CLASSICAL)p
+17603 13337 V 420 w(GS)p Fw(.)h(These)f(corresp)31 b(ond)503
+b(to)h(using)g(mo)31 b(di\257ed)504 b(Gram-Sc)-31 b(hmidt)505
+b(and)e(classical)10814 14666 y(Gram-Sc)-31 b(hmidt,)371
+b(resp)31 b(ectiv)-31 b(ely)-92 b(.)p Black 4000 16459
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvadj)p 13789
+16459 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p
+Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(adjoin)-31
+b(t)372 b(memory)e(blo)31 b(c)-31 b(k.)p Black 10814
+18021 a Fu(gstypeB)p Black 1554 w Fw(\()p Fu(int)p Fw(\))370
+b(t)-31 b(yp)31 b(e)370 b(of)g(Gram-Sc)-31 b(hmidt)371
+b(orthogonalization.)p Black 4000 19814 a(Return)e(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 10814 21608 a Fu(CVSPGMR)p
+14951 21608 V 419 w(SUCCESS)p Black 1555 w Fw(The)g(optional)j(v)-61
+b(alue)369 b(has)h(b)31 b(een)368 b(successfuly)h(set.)p
+Black 10814 23169 a Fu(CVSPGMR)p 14951 23169 V 419 w(MEM)p
+17113 23169 V 419 w(NULL)p Black 1136 w Fw(The)321 b
+Fs(cv)-25 b(odes)322 b Fw(solv)-31 b(er)322 b(memory)g(blo)31
+b(c)-31 b(k)322 b(w)-31 b(as)322 b(not)g(created)g(through)g(a)g(call)
+20922 24497 y(to)369 b Fu(CVodeCreateB)p Fw(.)p Black
+10814 26058 a Fu(CVSPGMR)p 14951 26058 V 419 w(LMEM)p
+17694 26058 V 419 w(NULL)p Black 555 w Fw(The)497 b Fs(cvspgmr)f
+Fw(linear)i(solv)-31 b(er)498 b(has)f(not)h(b)31 b(een)496
+b(initialized)501 b(through)d(a)20922 27387 y(call)370
+b(to)g Fu(CVSpgmrB)p Fw(.)p Black 10814 28948 a Fu(CVSPGMR)p
+14951 28948 V 419 w(ILL)p 17113 28948 V 419 w(INPUT)p
+Black 555 w Fw(The)355 b(Gram-Sc)-31 b(hmidt)356 b(orthogonalization)k
+(t)-31 b(yp)31 b(e)356 b Fu(gstypeB)g Fw(is)f(not)g(v)-61
+b(alid.)p Black 10814 30509 a Fu(CV)p 12046 30509 V 419
+w(ADJMEM)p 15951 30509 V 419 w(NULL)p Black 2298 w Fw(The)369
+b Fu(cvadj)p 26172 30509 V 419 w(mem)h Fw(argumen)-31
+b(t)370 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)p Black 4000
+32303 a(Notes)p Black 4072 w(The)f(default)i(v)-61 b(alue)370
+b(is)f Fu(MODIFIED)p 25501 32303 V 419 w(GS)p Fw(.)p
+4000 34643 9470 45 v 4000 36229 45 1587 v 4376 35651
+a Fu(CVSpgmrSetDeltB)p 13426 36229 V 4000 36273 9470
+45 v Black 4000 37564 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVSpgmrSetDeltB\(cvadj)p 27153 37564 349 45 v 422
+w(mem,)g(deltB\);)p Black 4000 39358 a Fw(Description)p
+Black 1286 w(The)302 b(function)h Fu(CVSpgmrSetDeltB)h
+Fw(sp)31 b(eci\257es)301 b(the)h(factor)h(b)-31 b(y)302
+b(whic)-31 b(h)303 b(the)f(GMRES)f(con)-31 b(v)g(ergence)10814
+40686 y(test)370 b(constan)-31 b(t)370 b(is)f(reduced)g(from)h(the)f
+(Newton)i(iteration)g(test)f(constan)-31 b(t.)p Black
+4000 42480 a(Argumen)g(ts)p Black Black 1517 w Fu(cvadj)p
+13789 42480 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(adjoin)-31
+b(t)372 b(memory)e(blo)31 b(c)-31 b(k.)p Black 10814
+44041 a Fu(delt)p Black 3297 w Fw(\()p Fu(realtype)p
+Fw(\))371 b(the)f(v)-61 b(alue)369 b(of)h(the)f(con)-31
+b(v)g(ergence)371 b(test)e(constan)-31 b(t)371 b(reduction)f(factor.)p
+Black 4000 45835 a(Return)f(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black
+10814 47629 a Fu(CVSPGMR)p 14951 47629 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(v)-61 b(alue)369 b(has)h(b)31
+b(een)368 b(successfuly)h(set.)p Black 10814 49190 a
+Fu(CVSPGMR)p 14951 49190 V 419 w(MEM)p 17113 49190 V
+419 w(NULL)p Black 1136 w Fw(The)321 b Fs(cv)-25 b(odes)322
+b Fw(solv)-31 b(er)322 b(memory)g(blo)31 b(c)-31 b(k)322
+b(w)-31 b(as)322 b(not)g(created)g(through)g(a)g(call)20922
+50518 y(to)369 b Fu(CVodeCreateB)p Fw(.)p Black 10814
+52079 a Fu(CVSPGMR)p 14951 52079 V 419 w(LMEM)p 17694
+52079 V 419 w(NULL)p Black 555 w Fw(The)497 b Fs(cvspgmr)f
+Fw(linear)i(solv)-31 b(er)498 b(has)f(not)h(b)31 b(een)496
+b(initialized)501 b(through)d(a)20922 53407 y(call)370
+b(to)g Fu(CVSpgmrB)p Fw(.)p Black 10814 54968 a Fu(CVSPGMR)p
+14951 54968 V 419 w(ILL)p 17113 54968 V 419 w(INPUT)p
+Black 555 w Fw(The)f(factor)h Fu(deltB)g Fw(is)f(negativ)-31
+b(e.)p Black 10814 56529 a Fu(CV)p 12046 56529 V 419
+w(ADJMEM)p 15951 56529 V 419 w(NULL)p Black 2298 w Fw(The)369
+b Fu(cvadj)p 26172 56529 V 419 w(mem)h Fw(argumen)-31
+b(t)370 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)p Black 4000
+58323 a(Notes)p Black 4072 w(The)355 b(default)h(v)-61
+b(alue)356 b(is)e(0)p Fl(:)p Fw(05.)490 b(P)-31 b(assing)356
+b(a)f(v)-61 b(alue)355 b Fu(deltB)p Fw(=)308 b(0)p Fl(:)p
+Fw(0)356 b(also)g(indicates)g(using)f(the)g(default)10814
+59651 y(v)-61 b(alue.)p 4000 61992 11795 45 v 4000 63578
+45 1587 v 4376 63000 a Fu(CVSpgmrSetPrecTypeB)p 15750
+63578 V 4000 63622 11795 45 v Black 4000 64913 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVSpgmrSetPrecTypeB\(cvadj)p
+29477 64913 349 45 v 422 w(mem,)h(pretypeB\);)p Black
+4000 66707 a Fw(Description)p Black 1286 w(The)369 b(function)i
+Fu(CVSpgmrSetPrecTypeB)h Fw(resets)c(the)i(t)-31 b(yp)31
+b(e)369 b(of)h(preconditioning)i(to)e(b)31 b(e)368 b(used.)p
+Black 4000 68501 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cvadj)p 13789 68501 V 419 w(mem)p Black 554 w Fw(\()p
+Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f(adjoin)-31 b(t)372 b(memory)e(blo)31 b(c)-31
+b(k.)p Black 10814 70062 a Fu(pretypeB)p Black 973 w
+Fw(\()p Fu(int)p Fw(\))247 b(sp)31 b(eci\257es)246 b(the)g(t)-31
+b(yp)31 b(e)247 b(of)g(prconditioning)i(and)d(ma)-31
+b(y)247 b(b)31 b(e)246 b Fu(PREC)p 44080 70062 V 419
+w(NONE)p Fw(,)h Fu(PREC)p 49701 70062 V 419 w(LEFT)p
+Fw(,)16435 71390 y Fu(PREC)p 18829 71390 V 419 w(RIGHT)p
+Fw(,)370 b(or)f Fu(PREC)p 26510 71390 V 419 w(BOTH)p
+Fw(.)p Black 4000 73184 a(Return)g(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p
+Black 10814 74977 a Fu(CVSPGMR)p 14951 74977 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g(optional)j(v)-61 b(alue)369 b(has)h(b)31
+b(een)368 b(successfuly)h(set.)p Black 10814 76539 a
+Fu(CVSPGMR)p 14951 76539 V 419 w(MEM)p 17113 76539 V
+419 w(NULL)p Black 1136 w Fw(The)321 b Fs(cv)-25 b(odes)322
+b Fw(solv)-31 b(er)322 b(memory)g(blo)31 b(c)-31 b(k)322
+b(w)-31 b(as)322 b(not)g(created)g(through)g(a)g(call)20922
+77867 y(to)369 b Fu(CVodeCreateB)p Fw(.)p Black Black
+eop
+%%Page: 112 122
+112 121 bop Black 0 2701 a Fx(112)19172 b(Using)426 b(CV)-35
+b(ODES)425 b(for)h(Adjoin)-35 b(t)425 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black Black 6814
+6974 a Fu(CVSPGMR)p 10951 6974 349 45 v 419 w(LMEM)p
+13694 6974 V 419 w(NULL)p Black 555 w Fw(The)497 b Fs(cvspgmr)f
+Fw(linear)i(solv)-31 b(er)498 b(has)f(not)h(b)31 b(een)496
+b(initialized)501 b(through)d(a)16922 8302 y(call)370
+b(to)g Fu(CVSpgmrB)p Fw(.)p Black 6814 9855 a Fu(CVSPGMR)p
+10951 9855 V 419 w(ILL)p 13113 9855 V 419 w(INPUT)p Black
+555 w Fw(The)f(preconditioner)h(t)-31 b(yp)31 b(e)370
+b Fu(pretype)g Fw(is)f(not)h(v)-61 b(alid.)p Black 6814
+11408 a Fu(CV)p 8046 11408 V 419 w(ADJMEM)p 11951 11408
+V 419 w(NULL)p Black 2298 w Fw(The)369 b Fu(cvadj)p 22172
+11408 V 419 w(mem)h Fw(argumen)-31 b(t)370 b(w)-31 b(as)370
+b Fu(NULL)p Fw(.)p Black 0 13186 a(Notes)p Black 4072
+w(The)499 b(preconditioning)i(t)-31 b(yp)31 b(e)499 b(is)g(initially)j
+(sp)31 b(eci\257ed)498 b(in)h(the)g(call)h(to)g Fu(CVSpgmrB)f
+Fw(\(see)g Fn(x)p Fw(7.2.4\).)6814 14515 y(This)424 b(function)g(call)h
+(is)e(needed)f(only)j(if)e Fu(pretypeB)h Fw(is)f(b)31
+b(eing)424 b(c)-31 b(hanged)424 b(from)g(its)f(v)-61
+b(alue)424 b(in)g(the)6814 15843 y(previous)369 b(call)i(to)f
+Fu(CVSpgmrB)p Fw(.)0 18738 y Fx(Optional)425 b(output)g(functions)0
+20787 y Fw(The)250 b(user)f(of)i(the)f(adjoin)-31 b(t)253
+b(mo)31 b(dule)251 b(in)f Fs(cv)-25 b(odes)250 b Fw(has)g(access)g(to)h
+(an)-31 b(y)251 b(of)f(the)h(optional)h(output)g(functions)f(describ)31
+b(ed)0 22116 y(in)429 b Fn(x)p Fw(5.5.6,)447 b(b)31 b(oth)429
+b(for)g(the)g(main)h(solv)-31 b(er)429 b(and)g(for)g(the)g(linear)h
+(solv)-31 b(er)429 b(mo)31 b(dules.)672 b(The)429 b(\257rst)f(argumen)
+-31 b(t)431 b(of)e(these)0 23444 y Fu(CVodeGet*)402 b
+Fw(functions)g(is)e(the)h Fs(cv)-25 b(odes)402 b Fw(memory)f(blo)31
+b(c)-31 b(k)402 b(for)f(the)g(bac)-31 b(kw)g(ard)402
+b(problem.)588 b(In)400 b(order)h(to)g(call)h(an)-31
+b(y)0 24773 y(of)349 b(these)e(functions,)354 b(the)348
+b(user)f(m)-31 b(ust)349 b(\257rst)f(call)h(the)f(follo)-31
+b(wing)352 b(function)d(to)g(obtain)h(a)e(p)31 b(oin)-31
+b(ter)349 b(to)f(this)h(memory)0 26101 y(blo)31 b(c)-31
+b(k:)p 0 27987 10633 45 v 0 29574 45 1587 v 376 28996
+a Fu(CVadjGetCVodeBmem)p 10588 29574 V 0 29618 10633
+45 v Black 0 30901 a Fw(Call)p Black 4848 w Fu(cvode)p
+9789 30901 349 45 v 419 w(memB)582 b(=)f(CVadjGetCVodeBmem\(cvadj)p
+27639 30901 V 422 w(mem\);)p Black 0 32679 a Fw(Description)p
+Black 1286 w(The)350 b(function)h Fu(CvadjGetCVodeBmem)g
+Fw(returns)e(a)h(p)31 b(oin)-31 b(ter)350 b(to)g(the)g
+Fs(cv)-25 b(odes)350 b Fw(memory)g(blo)31 b(c)-31 b(k)351
+b(for)6814 34007 y(the)369 b(bac)-31 b(kw)g(ard)371 b(problem.)p
+Black 0 35785 a(Argumen)-31 b(ts)p Black 1517 w(The)397
+b(argumen)-31 b(t)399 b Fu(cvadj)p 17074 35785 V 419
+w(mem)e Fw(\(of)h(t)-31 b(yp)31 b(e)397 b Fu(void)582
+b(*)p Fw(\))397 b(is)g(a)g(p)31 b(oin)-31 b(ter)398 b(to)g(the)f
+(adjoin)-31 b(t)399 b(memory)f(blo)31 b(c)-31 b(k)6814
+37113 y(returned)368 b(b)-31 b(y)370 b Fu(CVadjMalloc)p
+Fw(.)p Black 0 38891 a(Return)f(v)-61 b(alue)p Black
+554 w(The)395 b(return)f(v)-61 b(alue,)402 b Fu(cvode)p
+18703 38891 V 419 w(memB)396 b Fw(\(of)f(t)-31 b(yp)31
+b(e)396 b Fu(void)581 b(*)p Fw(\),)403 b(is)394 b(a)h(p)31
+b(oin)-31 b(ter)396 b(to)g(the)f Fs(cv)-25 b(odes)395
+b Fw(memory)6814 40220 y(for)369 b(the)h(bac)-31 b(kw)g(ard)370
+b(problem.)p Black 0 42774 a(Notes)p Black 5200 w @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1497 b Fw(The)370 b(user)e(should)h(not)h
+(mo)31 b(dify)371 b(in)e(an)-31 b(y)370 b(w)-31 b(a)g(y)371
+b Fu(cvode)p 32147 42774 V 419 w(memB)p Fw(.)0 45891
+y Fo(7.2.7)1495 b(Bac)-42 b(kw)g(ard)501 b(in)-42 b(tegration)501
+b(of)d(pure)h(quadrature)h(equations)0 47940 y Fx(Bac)-35
+b(kw)g(ard)423 b(quadrature)j(initialization)c(functions)0
+49990 y Fw(The)439 b(function)h Fu(CVodeQuadMallocB)h
+Fw(initializes)g(and)e(allo)31 b(cates)441 b(memory)e(for)g(the)g(bac)
+-31 b(kw)g(ard)440 b(in)-31 b(tegration)441 b(of)0 51318
+y(quadrature)370 b(equations.)494 b(It)369 b(has)g(the)h(follo)-31
+b(wing)372 b(form:)p 0 53205 10052 45 v 0 54699 45 1495
+v 376 54213 a Fu(CVodeQuadMallocB)p 10007 54699 V 0 54743
+10052 45 v Black 0 55945 a Fw(Call)p Black 4848 w Fu(flag)582
+b(=)f(CVodeQuadMallocB\(cvadj)p 23734 55945 349 45 v
+422 w(mem,)g(fQB,)h(yQB0\);)p Black 0 57723 a Fw(Description)p
+Black 1286 w(The)462 b(function)h Fu(CVodeQuadMallocB)h
+Fw(pro)-31 b(vides)462 b(required)g(problem)g(sp)31 b(eci\257cations,)
+487 b(allo)31 b(cates)6814 59051 y(in)-31 b(ternal)371
+b(memory)-92 b(,)370 b(and)f(initializes)j(bac)-31 b(kw)g(ard)371
+b(quadrature)f(in)-31 b(tegration.)p Black 0 60829 a(Argumen)g(ts)p
+Black Black 1517 w Fu(cvadj)p 9789 60829 V 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f(adjoin)-31 b(t)372 b(memory)e(blo)31
+b(c)-31 b(k)370 b(returned)e(b)-31 b(y)370 b Fu(CVadjMalloc)p
+Fw(.)p Black 6814 62382 a Fu(fQB)p Black 3878 w Fw(\()p
+Fu(CVQuadRhsFnB)p Fw(\))435 b(is)d(the)g Fs(C)g Fw(function)i(whic)-31
+b(h)433 b(computes)g Fl(f)119 b(QB)56 b Fw(,)448 b(the)432
+b(righ)-31 b(t-hand)12435 63710 y(side)465 b(of)h(the)f(bac)-31
+b(kw)g(ard)467 b(quadrature)e(equations.)782 b(This)465
+b(function)i(has)e(the)g(form)12435 65039 y Fu(fQB\(t,)582
+b(y,)g(yB,)f(qBdot,)h(fQ)p 25871 65039 V 419 w(dataB\))370
+b Fw(\(for)g(full)g(details)g(see)f(b)31 b(elo)-31 b(w\).)p
+Black 6814 66592 a Fu(yQB0)p Black 3297 w Fw(\()p Fu(N)p
+13516 66592 V 419 w(Vector)p Fw(\))370 b(is)g(the)f(v)-61
+b(alue)370 b(of)f(the)h(quadrature)g(v)-61 b(ariables)369
+b(at)h Fu(tB0)p Fw(.)p Black 0 68370 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(will)h(b)31 b(e)369 b(one)g(of)h(the)f(follo)-31
+b(wing:)p Black 6814 70148 a Fu(CV)p 8046 70148 V 419
+w(SUCCESS)p Black 2716 w Fw(The)370 b(call)g(to)g Fu(CVodeQuadMallocB)h
+Fw(w)-31 b(as)370 b(successful.)p Black 6814 71701 a
+Fu(CV)p 8046 71701 V 419 w(MEM)p 10208 71701 V 419 w(NULL)p
+Black 2297 w Fw(The)258 b Fs(cv)-25 b(odes)259 b Fw(solv)-31
+b(er)258 b(memory)h(blo)31 b(c)-31 b(k)259 b(w)-31 b(as)259
+b(not)f(created)h(through)f(a)h(previous)15178 73029
+y(call)371 b(to)e Fu(CVodeCreateB)p Fw(.)p Black 6814
+74582 a Fu(CV)p 8046 74582 V 419 w(MEM)p 10208 74582
+V 419 w(FAIL)p Black 2297 w Fw(A)g(memory)h(allo)31 b(cation)373
+b(request)c(has)g(failed.)p Black 6814 76135 a Fu(CV)p
+8046 76135 V 419 w(ADJMEM)p 11951 76135 V 419 w(NULL)p
+Black 554 w Fw(The)h Fu(cvadj)p 20429 76135 V 419 w(mem)f
+Fw(argumen)-31 b(t)371 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)0
+77867 y(The)352 b(in)-31 b(tegration)355 b(of)d(quadrature)g(equations)
+h(during)f(the)g(bac)-31 b(kw)g(ard)353 b(phase)f(can)g(b)31
+b(e)351 b(re-initialized)j(b)-31 b(y)352 b(calling)p
+Black Black eop
+%%Page: 113 123
+113 122 bop Black 4000 2701 a Fx(7.2)425 b(User-callable)g(functions)g
+(for)g(adjoin)-35 b(t)424 b(sensitivit)-35 b(y)424 b(analysis)14281
+b(113)p 4000 3144 48001 45 v Black 4000 5965 10052 45
+v 4000 7460 45 1495 v 4376 6974 a Fu(CVodeQuadReInitB)p
+14007 7460 V 4000 7504 10052 45 v Black 4000 8702 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVodeQuadReInitB\(cvadj)p
+27734 8702 349 45 v 422 w(mem,)g(fQB,)h(yQB0\);)p Black
+4000 10447 a Fw(Description)p Black 1286 w(The)f(function)g
+Fu(CVodeQuadReInitB)i Fw(pro)-31 b(vides)580 b(required)g(problem)h(sp)
+31 b(eci\257cations)582 b(and)e(re-)10814 11776 y(initializes)372
+b(the)d(bac)-31 b(kw)g(ard)371 b(quadrature)f(in)-31
+b(tegration.)p Black 4000 13521 a(Argumen)g(ts)p Black
+Black 1517 w Fu(cvadj)p 13789 13521 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f(adjoin)-31 b(t)372 b(memory)e(blo)31
+b(c)-31 b(k.)p Black 10814 15045 a Fu(fQB)p Black 3878
+w Fw(\()p Fu(CVQuadRhsFnB)p Fw(\))435 b(is)d(the)g Fs(C)g
+Fw(function)i(whic)-31 b(h)433 b(computes)g Fl(f)119
+b(QB)56 b Fw(,)448 b(the)432 b(righ)-31 b(t-hand)16435
+16373 y(side)369 b(of)h(the)f(bac)-31 b(kw)g(ard)371
+b(quadrature)f(equations.)p Black 10814 17897 a Fu(yQB0)p
+Black 3297 w Fw(\()p Fu(N)p 17516 17897 V 419 w(Vector)p
+Fw(\))g(is)g(the)f(v)-61 b(alue)370 b(of)f(the)h(quadrature)g(v)-61
+b(ariables)369 b(at)h Fu(tB0)p Fw(.)p Black 4000 19642
+a(Return)f(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370
+b Fu(int)p Fw(\))g(will)h(b)31 b(e)369 b(one)g(of)h(the)f(follo)-31
+b(wing:)p Black 10814 21387 a Fu(CV)p 12046 21387 V 419
+w(SUCCESS)p Black 2716 w Fw(The)370 b(call)g(to)g Fu(CVodeReInitB)h
+Fw(w)-31 b(as)369 b(successful.)p Black 10814 22911 a
+Fu(CV)p 12046 22911 V 419 w(MEM)p 14208 22911 V 419 w(NULL)p
+Black 2297 w Fw(The)258 b Fs(cv)-25 b(odes)259 b Fw(solv)-31
+b(er)258 b(memory)h(blo)31 b(c)-31 b(k)259 b(w)-31 b(as)259
+b(not)f(created)h(through)f(a)h(previous)19178 24239
+y(call)371 b(to)e Fu(CVodeCreateB)p Fw(.)p Black 10814
+25763 a Fu(CV)p 12046 25763 V 419 w(NO)p 13627 25763
+V 418 w(QUAD)p Black 2879 w Fw(Quadrature)351 b(in)-31
+b(tegration)353 b(w)-31 b(as)351 b(not)g(activ)-61 b(ated)353
+b(through)e(a)g(previous)f(call)i(to)19178 27091 y Fu(CVodeQuadMallocB)
+p Fw(.)p Black 10814 28615 a Fu(CV)p 12046 28615 V 419
+w(ADJMEM)p 15951 28615 V 419 w(NULL)p Black 554 w Fw(The)370
+b Fu(cvadj)p 24429 28615 V 419 w(mem)f Fw(argumen)-31
+b(t)371 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)4000 31470
+y Fx(Bac)-35 b(kw)g(ard)423 b(Quadrature)j(Extraction)f(F)-106
+b(unction)4000 33513 y Fw(T)-92 b(o)309 b(extract)h(the)g(v)-61
+b(alues)309 b(of)g(the)g(quadrature)h(v)-61 b(ariables)309
+b(at)h(the)f(last)h(return)e(time)i(of)g Fu(CVodeB)p
+Fw(,)g Fs(cv)-25 b(odes)309 b Fw(pro)-31 b(vides)4000
+34842 y(a)369 b(wrapp)31 b(er)369 b(for)g(the)h(function)h
+Fu(CVodeGetQuad)f Fw(\(see)f Fn(x)p Fw(5.7.2\).)496 b(The)369
+b(call)i(to)f(this)f(function)i(has)e(the)g(form)p 4000
+36800 8308 45 v 4000 38295 45 1495 v 4376 37809 a Fu(CVodeGetQuadB)p
+12263 38295 V 4000 38339 8308 45 v Black 4000 39537 a
+Fw(Call)p Black 4848 w Fu(flag)582 b(=)f(CVodeGetQuadB\(cvadj)p
+25991 39537 349 45 v 421 w(mem,)h(yQB\);)p Black 4000
+41282 a Fw(Description)p Black 1286 w(The)321 b(function)g
+Fu(CVodeGetQuadB)h Fw(returns)e(the)h(quadrature)f(solution)j(v)-31
+b(ector)321 b(after)g(a)f(successful)10814 42611 y(return)368
+b(from)i Fu(CVodeB)p Fw(.)p Black 4000 44356 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvadj)p 13789 44356 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(adjoin)-31 b(t)372
+b(memory)e(returned)e(b)-31 b(y)370 b Fu(CVadjMalloc)p
+Fw(.)p Black 10814 45880 a Fu(yQB)p Black 3878 w Fw(\()p
+Fu(N)p 17516 45880 V 419 w(Vector)p Fw(\))g(the)g(computed)g(bac)-31
+b(kw)g(ard)371 b(quadrature)f(v)-31 b(ector.)p Black
+4000 47625 a(Return)369 b(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fu(flag)f Fw(of)h Fu(CVodeGetQuadB)h
+Fw(is)e(one)g(of:)p Black 10814 49370 a Fu(CV)p 12046
+49370 V 419 w(SUCCESS)p Black 2716 w(CVodeGetQuadB)i
+Fw(w)-31 b(as)370 b(successful.)p Black 10814 50894 a
+Fu(CV)p 12046 50894 V 419 w(MEM)p 14208 50894 V 419 w(NULL)p
+Black 2297 w Fw(The)258 b Fs(cv)-25 b(odes)259 b Fw(solv)-31
+b(er)258 b(memory)h(blo)31 b(c)-31 b(k)259 b(w)-31 b(as)259
+b(not)f(created)h(through)f(a)h(previous)19178 52222
+y(call)371 b(to)e Fu(CVodeCreateB)p Fw(.)p Black 10814
+53746 a Fu(CV)p 12046 53746 V 419 w(NO)p 13627 53746
+V 418 w(QUAD)p Black 2879 w Fw(Quadrature)313 b(in)-31
+b(tegration)316 b(w)-31 b(as)314 b(not)f(initialized)j(through)e(a)f
+(previous)g(call)h(to)19178 55074 y Fu(CVodeQuadMallocB)p
+Fw(..)p Black 10814 56598 a Fu(Cv)p 12046 56598 V 419
+w(BAD)p 14208 56598 V 419 w(DKY)p Black 2878 w(yQB)370
+b Fw(is)f Fu(NULL)p Fw(.)p Black 10814 58122 a Fu(CV)p
+12046 58122 V 419 w(ADJMEM)p 15951 58122 V 419 w(NULL)p
+Black 554 w Fw(The)h Fu(cvadj)p 24429 58122 V 419 w(mem)f
+Fw(argumen)-31 b(t)371 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)4000
+60977 y Fx(Optional)425 b(input)f(and)h(output)g(functions)h(for)f(bac)
+-35 b(kw)g(ard)424 b(quadrature)h(in)-35 b(tegration)4000
+63020 y Fw(Optional)382 b(v)-61 b(alues)379 b(con)-31
+b(trolling)383 b(the)c(bac)-31 b(kw)g(ard)381 b(in)-31
+b(tegration)383 b(of)d(quadrature)g(equations)h(can)f(b)31
+b(e)379 b(c)-31 b(hanged)380 b(from)4000 64348 y(their)547
+b(default)h(v)-61 b(alues)547 b(through)h(calls)f(to)h(one)f(of)g(the)g
+(follo)-31 b(wing)551 b(functions)c(whic)-31 b(h)548
+b(are)f(wrapp)31 b(ers)546 b(for)h(the)4000 65677 y(corresp)31
+b(onding)369 b(optional)j(input)e(functions)g(de\257ned)f(in)h
+Fn(x)p Fw(5.7.3:)p Black Black 5162 67787 a Fu(flag)582
+b(=)f(CVodeSetQuadFdataB\(cvadj_mem,)586 b(fQ_dataB\);)5162
+69115 y(flag)c(=)f(CVodeSetQuadErrConB\(cvadj_mem,)586
+b(errconQB,)c(itolQB,)h(reltolQB,)f(abstolQB\);)4000
+71225 y Fw(Their)397 b(return)f(v)-61 b(alue)398 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)397 b Fu(int)p Fw(\))h(can)f(ha)-31
+b(v)g(e)398 b(an)-31 b(y)397 b(of)h(the)f(return)f(v)-61
+b(alues)397 b(of)g(their)h(coun)-31 b(terparts,)405 b(but)4000
+72553 y(it)370 b(can)f(also)h(b)31 b(e)369 b Fu(CV)p
+12095 72553 V 419 w(ADJMEM)p 16000 72553 V 419 w(NULL)h
+Fw(if)g(the)f Fu(cvadj)p 24939 72553 V 419 w(mem)h Fw(argumen)-31
+b(t)370 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)5660 73882
+y(Access)291 b(to)g(optional)j(outputs)e(related)g(to)f(bac)-31
+b(kw)g(ard)293 b(quadrature)e(in)-31 b(tegration)294
+b(can)d(b)31 b(e)291 b(obtained)h(b)-31 b(y)292 b(calling)4000
+75210 y(the)424 b(corresp)31 b(onding)424 b Fu(CVodeGetQuad*)h
+Fw(functions)g(\(see)f Fn(x)p Fw(5.7.4\).)659 b(A)424
+b(p)31 b(oin)-31 b(ter)424 b(to)h(the)f Fs(cv)-25 b(odes)424
+b Fw(memory)h(blo)31 b(c)-31 b(k)4000 76539 y(for)294
+b(the)h(bac)-31 b(kw)g(ard)296 b(problem,)310 b(required)294
+b(as)g(the)h(\257rst)e(argumen)-31 b(t)296 b(of)f(these)f(functions,)
+311 b(can)294 b(b)31 b(e)294 b(obtained)i(through)4000
+77867 y(a)369 b(call)i(to)f(the)f(functions)i Fu(CVadjGetCVodeBmem)g
+Fw(\(see)e Fn(x)p Fw(7.2.6\).)p Black Black eop
+%%Page: 114 124
+114 123 bop Black 0 2701 a Fx(114)19172 b(Using)426 b(CV)-35
+b(ODES)425 b(for)h(Adjoin)-35 b(t)425 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black 0 6974 a
+Fo(7.2.8)1495 b(Chec)-42 b(k)499 b(P)-42 b(oin)g(t)500
+b(Listing)f(F)-125 b(unction)0 9017 y Fw(F)-92 b(or)505
+b(debugging)i(purp)31 b(oses,)539 b Fs(cv)-25 b(odes)506
+b Fw(pro)-31 b(vides)506 b(a)g(function)h Fu(CVadjGetCheckPointsList)i
+Fw(whic)-31 b(h)507 b(displa)-31 b(ys)0 10345 y(partial)309
+b(information)h(from)d(the)g(link)-31 b(ed)308 b(list)g(of)g(c)-31
+b(hec)g(kp)31 b(oin)-31 b(ts)308 b(generated)g(b)-31
+b(y)307 b Fu(CVodeF)p Fw(.)h(The)f(call)h(to)g(this)f(function)0
+11674 y(has)369 b(the)h(form:)p 0 13500 14120 45 v 0
+15087 45 1587 v 376 14509 a Fu(CVadjGetCheckPointsList)p
+14075 15087 V 0 15131 14120 45 v Black 0 16411 a Fw(Call)p
+Black 4848 w Fu(CVadjCheckPointsList\(cvadj)p 21990 16411
+349 45 v 422 w(mem\);)p Black 0 18133 a Fw(Description)p
+Black 1286 w(The)419 b(function)i Fu(CVadjGetCheckPointsList)h
+Fw(prin)-31 b(ts)420 b(the)f(memory)h(addresses)e(of)i(the)f(c)-31
+b(hec)g(k-)6814 19461 y(p)31 b(oin)-31 b(ts)370 b(and)f(the)h(time)g(p)
+31 b(oin)-31 b(ts)370 b(at)g(whic)-31 b(h)370 b(the)g(c)-31
+b(hec)g(kp)31 b(oin)-31 b(ts)371 b(w)-31 b(ere)369 b(de\257ned.)p
+Black 0 21183 a(Argumen)-31 b(ts)p Black 1517 w(The)397
+b(argumen)-31 b(t)399 b Fu(cvadj)p 17074 21183 V 419
+w(mem)e Fw(\(of)h(t)-31 b(yp)31 b(e)397 b Fu(void)582
+b(*)p Fw(\))397 b(is)g(a)g(p)31 b(oin)-31 b(ter)398 b(to)g(the)f
+(adjoin)-31 b(t)399 b(memory)f(blo)31 b(c)-31 b(k)6814
+22512 y(returned)368 b(b)-31 b(y)370 b Fu(CVadjMalloc)p
+Fw(.)p Black 0 24234 a(Return)f(v)-61 b(alue)p Black
+554 w(This)370 b(function)g(has)f(no)h(return)e(v)-61
+b(alue.)p Black 0 25956 a(Notes)p Black 4072 w(F)-92
+b(or)368 b(a)i(t)-31 b(ypical)371 b(output)g(of)e Fu
+(CVadjGetCheckPointsList)p Fw(,)k(see)c([17)q(].)0 29574
+y Fr(7.3)1793 b(User-supplied)600 b(functions)f(for)f(adjoin)-50
+b(t)598 b(sensitivit)-50 b(y)602 b(analysis)0 31999 y
+Fw(In)315 b(addition)k(to)d(the)h(required)e(ODE)h(righ)-31
+b(t-hand)317 b(side)f(function)h(and)f(an)-31 b(y)317
+b(optional)i(functions)e(for)f(the)g(forw)-31 b(ard)0
+33327 y(problem,)408 b(when)399 b(using)h(the)f(adjoin)-31
+b(t)402 b(sensitivit)-31 b(y)401 b(mo)31 b(dule)400 b(in)g
+Fs(cv)-25 b(odes)p Fw(,)407 b(the)400 b(user)e(m)-31
+b(ust)400 b(supply)f(one)g(function)0 34656 y(de\257ning)357
+b(the)h(bac)-31 b(kw)g(ard)358 b(problem)f(ODE)g(and,)j(optionally)-92
+b(,)363 b(functions)358 b(to)f(supply)g(Jacobian-related)i(informa-)0
+35984 y(tion)395 b(\(if)h(Newton)f(iteration)i(is)d(c)-31
+b(hosen\))395 b(and)f(one)h(or)f(t)-31 b(w)g(o)396 b(functions)f(that)g
+(de\257ne)f(the)h(preconditioner)g(\(if)h(the)0 37312
+y Fs(cvspgmr)384 b Fw(solv)-31 b(er)385 b(is)f(selected\))h(for)g(the)g
+(bac)-31 b(kw)g(ard)386 b(problem.)539 b(T)-31 b(yp)31
+b(e)385 b(de\257nitions)h(for)e(all)i(these)e(user-supplied)0
+38641 y(functions)370 b(are)f(giv)-31 b(en)371 b(b)31
+b(elo)-31 b(w.)0 41476 y Fx(ODE)425 b(righ)-35 b(t-hand)426
+b(side)e(for)i(the)f(bac)-35 b(kw)g(ard)424 b(problem)0
+43519 y Fw(The)369 b(user)g(m)-31 b(ust)369 b(pro)-31
+b(vide)370 b(a)g(function)g(of)g(t)-31 b(yp)31 b(e)370
+b Fu(CVRhsFnB)g Fw(de\257ned)f(as)g(follo)-31 b(ws:)p
+0 45346 5402 45 v 0 46686 45 1341 v 376 46354 a Fu(CVRhsFnB)p
+5358 46686 V 0 46730 5402 45 v Black 0 48083 a Fw(De\257nition)p
+Black 2034 w Fu(typedef)582 b(void)g(\(*CVRhsFnB\)\()r(realtype)g(t,)f
+(N)p 28967 48083 349 45 v 419 w(Vector)h(y,)g(N)p 35779
+48083 V 418 w(Vector)g(yB,)21343 49411 y(N)p 21994 49411
+V 418 w(Vector)g(yBdot,)g(void)g(*f)p 34616 49411 V 419
+w(dataB\);)p Black 0 51083 a Fw(Purp)31 b(ose)p Black
+2884 w(This)457 b(function)g(computes)g(the)g(righ)-31
+b(t-hand)457 b(side)f(of)h(the)g(bac)-31 b(kw)g(ard)457
+b(problem)g(ODE)f(system.)6814 52411 y(This)370 b(could)f(b)31
+b(e)369 b(\(3.17\))j(or)d(\(3.20\).)p Black 0 54133 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(t)p Black 3878 w Fw(is)369
+b(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(indep)31
+b(enden)-31 b(t)370 b(v)-61 b(ariable.)p Black 6814 55634
+a Fu(y)p Black 3878 w Fw(is)369 b(the)g(curren)-31 b(t)369
+b(v)-61 b(alue)370 b(of)f(the)h(forw)-31 b(ard)370 b(solution)h(v)-31
+b(ector.)p Black 6814 57135 a Fu(yB)p Black 3297 w Fw(is)369
+b(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(dep)31
+b(enden)-31 b(t)369 b(v)-61 b(ariable)370 b(v)-31 b(ector.)p
+Black 6814 58636 a Fu(yBdot)p Black 1554 w Fw(is)480
+b(the)g(output)i(v)-31 b(ector)481 b(con)-31 b(taining)483
+b(the)d(righ)-31 b(t-hand)482 b(side)e(of)h(the)f(bac)-31
+b(kw)g(ard)482 b(ODE)11273 59964 y(problem.)p Black 6814
+61465 a Fu(f)p 7465 61465 V 419 w(dataB)p Black 554 w
+Fw(is)505 b(a)g(p)31 b(oin)-31 b(ter)506 b(to)f(user)f(data)i(-)f(the)g
+(same)h(as)f(the)g Fu(f)p 34173 61465 V 418 w(dataB)h
+Fw(parameter)g(passed)e(to)11273 62793 y Fu(CVodeSetFdataB)p
+Fw(.)p Black 0 64515 a(Return)369 b(v)-61 b(alue)p Black
+554 w(A)369 b Fu(CVRhsFnB)h Fw(function)h(t)-31 b(yp)31
+b(e)370 b(do)31 b(es)368 b(not)i(ha)-31 b(v)g(e)371 b(a)e(return)g(v)
+-61 b(alue.)p Black 0 66237 a(Notes)p Black 4072 w(Allo)31
+b(cation)372 b(of)e(memory)g(for)f Fu(yBdot)h Fw(is)f(handled)h(within)
+h Fs(cv)-25 b(odes)p Fw(.)6814 67959 y(The)339 b Fu(y)p
+Fw(,)346 b Fu(yB)p Fw(,)339 b(and)g Fu(yBdot)h Fw(argumen)-31
+b(ts)340 b(are)e(all)j(of)e(t)-31 b(yp)31 b(e)339 b Fu(N)p
+30494 67959 V 419 w(Vector)p Fw(,)346 b(but)339 b Fu(yB)g
+Fw(and)g Fu(yBdot)h Fw(t)-31 b(ypically)6814 69288 y(ha)g(v)g(e)379
+b(di\256eren)-31 b(t)378 b(in)-31 b(ternal)380 b(represen)-31
+b(tations)379 b(from)f Fu(y)p Fw(.)519 b(It)378 b(is)g(the)h(user's)e
+(resp)31 b(onsibilit)-31 b(y)379 b(to)g(access)6814 70616
+y(the)471 b(v)-31 b(ector)471 b(data)h(consisten)-31
+b(tly)473 b(\(including)g(the)e(use)f(of)h(the)g(correct)g(accessor)f
+(macros)h(from)6814 71944 y(eac)-31 b(h)385 b Fs(nvector)g
+Fw(implemen)-31 b(tation\).)544 b(F)-92 b(or)384 b(the)g(sak)-31
+b(e)385 b(of)h(computational)i(e\261ciency)-92 b(,)390
+b(the)385 b(v)-31 b(ector)6814 73273 y(functions)294
+b(in)g(the)g(t)-31 b(w)g(o)295 b Fs(nvector)e Fw(implemen)-31
+b(tations)298 b(pro)-31 b(vided)294 b(with)g Fs(cv)-25
+b(odes)294 b Fw(do)g(not)g(p)31 b(erform)6814 74601 y(an)-31
+b(y)370 b(consistency)g(c)-31 b(hec)g(ks)369 b(with)h(resp)31
+b(ect)369 b(to)h(their)f Fu(N)p 29112 74601 V 419 w(Vector)h
+Fw(argumen)-31 b(ts)370 b(\(see)f Fn(x)p Fw(8.1)h(and)g
+Fn(x)p Fw(8.2\).)6814 76323 y(The)329 b Fu(f)p 9700 76323
+V 419 w(dataB)g Fw(p)31 b(oin)-31 b(ter)330 b(is)f(passed)g(to)h(the)f
+(user's)f Fu(fB)h Fw(function)i(ev)-31 b(ery)329 b(time)h(it)g(is)f
+(called)h(and)g(can)6814 77652 y(b)31 b(e)369 b(the)g(same)h(as)f(the)g
+Fu(f)p 16917 77652 V 419 w(data)g Fw(p)31 b(oin)-31 b(ter)370
+b(used)f(for)g(the)h(forw)-31 b(ard)370 b(problem.)p
+Black Black eop
+%%Page: 115 125
+115 124 bop Black 4000 2701 a Fx(7.3)425 b(User-supplied)h(functions)g
+(for)f(adjoin)-35 b(t)424 b(sensitivit)-35 b(y)424 b(analysis)13814
+b(115)p 4000 3144 48001 45 v Black 4000 6974 a(Quadrature)426
+b(righ)-35 b(t-hand)425 b(side)g(for)g(the)g(bac)-35
+b(kw)g(ard)424 b(problem)4000 9049 y Fw(The)369 b(user)g(m)-31
+b(ust)369 b(pro)-31 b(vide)370 b(a)g(function)g(of)g(t)-31
+b(yp)31 b(e)370 b Fu(CVQuadRhsFnB)h Fw(de\257ned)d(b)-31
+b(y)p 4000 11010 7727 45 v 4000 12505 45 1495 v 4376
+12019 a Fu(CVQuadRhsFnB)p 11682 12505 V 4000 12549 7727
+45 v Black 4000 14007 a Fw(De\257nition)p Black 2034
+w Fu(typedef)582 b(void)g(\(*CVQuadRhsFnB\)\()r(realtype)h(t,)e(N)p
+35292 14007 349 45 v 419 w(Vector)h(y,)f(N)p 42103 14007
+V 419 w(Vector)h(yB,)27667 15335 y(N)p 28318 15335 V
+419 w(Vector)g(qBdot,)g(void)g(*fQ)p 41522 15335 V 419
+w(dataB\);)p Black 4000 17090 a Fw(Purp)31 b(ose)p Black
+2884 w(This)512 b(function)h(computes)f(the)g(quadrature)h(equation)g
+(righ)-31 b(t-hand)513 b(side)f(for)f(the)h(bac)-31 b(kw)g(ard)10814
+18419 y(problem.)p Black 4000 20225 a(Argumen)g(ts)p
+Black Black 1517 w Fu(t)p Black 4459 w Fw(is)369 b(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)g(the)f(indep)31 b(enden)-31
+b(t)370 b(v)-61 b(ariable.)p Black 10814 21792 a Fu(y)p
+Black 4459 w Fw(is)369 b(the)g(curren)-31 b(t)369 b(v)-61
+b(alue)370 b(of)g(the)f(forw)-31 b(ard)370 b(solution)h(v)-31
+b(ector.)p Black 10814 23359 a Fu(yB)p Black 3878 w Fw(is)369
+b(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370 b(of)g(the)f(dep)31
+b(enden)-31 b(t)369 b(v)-61 b(ariable)371 b(v)-31 b(ector.)p
+Black 10814 24926 a Fu(qBdot)p Black 2135 w Fw(is)312
+b(the)h(output)h(v)-31 b(ector)313 b(con)-31 b(taining)315
+b(the)e(righ)-31 b(t-hand)314 b(side)f(of)g(the)f(bac)-31
+b(kw)g(ard)314 b(quadra-)15854 26254 y(ture)369 b(equations.)p
+Black 10814 27821 a Fu(fQ)p 12046 27821 V 419 w(dataB)p
+Black 554 w Fw(is)422 b(a)g(p)31 b(oin)-31 b(ter)423
+b(to)f(user)f(data)i(-)f(the)g(same)h(as)f(the)g Fu(fQ)p
+38422 27821 V 418 w(dataB)h Fw(parameter)g(passed)e(to)15854
+29150 y Fu(CVodeSetQuadFdataB)p Fw(.)p Black 4000 30955
+a(Return)369 b(v)-61 b(alue)p Black 554 w(A)369 b Fu(CVQuadRhsFnB)i
+Fw(function)g(t)-31 b(yp)31 b(e)369 b(do)31 b(es)369
+b(not)h(ha)-31 b(v)g(e)370 b(a)g(return)e(v)-61 b(alue.)p
+Black 4000 32761 a(Notes)p Black 4072 w(Allo)31 b(cation)372
+b(of)e(memory)g(for)f Fu(qBdot)h Fw(is)f(handled)h(within)h
+Fs(cv)-25 b(odes)p Fw(.)10814 34567 y(The)325 b Fu(y)p
+Fw(,)334 b Fu(yB)p Fw(,)326 b(and)f Fu(yQBdot)h Fw(argumen)-31
+b(ts)326 b(are)f(all)h(of)g(t)-31 b(yp)31 b(e)325 b Fu(N)p
+34939 34567 V 419 w(Vector)p Fw(,)335 b(but)325 b(they)h(t)-31
+b(ypically)328 b(all)e(ha)-31 b(v)g(e)10814 35895 y(di\256eren)g(t)447
+b(in)-31 b(ternal)449 b(represen)-31 b(tations.)727 b(It)447
+b(is)g(the)g(user's)g(resp)31 b(onsibilit)-31 b(y)448
+b(to)g(access)f(the)g(v)-31 b(ector)10814 37224 y(data)282
+b(consisten)-31 b(tly)282 b(\(including)h(the)d(use)g(of)h(the)g
+(correct)f(accessor)g(macros)h(from)g(eac)-31 b(h)281
+b Fs(nvector)10814 38552 y Fw(implemen)-31 b(tation\).)489
+b(F)-92 b(or)342 b(the)h(sak)-31 b(e)343 b(of)g(computational)k
+(e\261ciency)-92 b(,)350 b(the)343 b(v)-31 b(ector)343
+b(functions)h(in)g(the)10814 39881 y(t)-31 b(w)g(o)293
+b Fs(nvector)e Fw(implemen)-31 b(tations)296 b(pro)-31
+b(vided)292 b(with)g Fs(cv)-25 b(odes)292 b Fw(do)g(not)g(p)31
+b(erform)291 b(an)-31 b(y)292 b(consistency)10814 41209
+y(c)-31 b(hec)g(ks)369 b(with)i(repsect)d(to)i(their)g
+Fu(N)p 25167 41209 V 418 w(Vector)g Fw(argumen)-31 b(ts)370
+b(\(see)f Fn(x)p Fw(8.1)i(and)e Fn(x)p Fw(8.2\).)10814
+43015 y(The)384 b Fu(fQ)p 14336 43015 V 419 w(dataB)h
+Fw(p)31 b(oin)-31 b(ter)385 b(is)f(passed)g(to)h(the)f(user's)f
+Fu(fQB)i Fw(function)g(ev)-31 b(ery)385 b(time)g(it)g(is)f(called)i
+(and)10814 44343 y(can)369 b(b)31 b(e)369 b(the)h(same)f(as)g(the)h
+Fu(f)p 22947 44343 V 418 w(data)g Fw(p)31 b(oin)-31 b(ter)370
+b(used)e(for)i(the)f(forw)-31 b(ard)370 b(problem.)4000
+47312 y Fx(Jacobian)424 b(information)h(for)g(the)g(bac)-35
+b(kw)g(ard)424 b(problem)i(\(direct)f(metho)35 b(d)426
+b(with)e(dense)i(Jacobian\))4000 49388 y Fw(If)333 b(the)f(direct)h
+(linear)h(solv)-31 b(er)333 b(with)h(dense)e(treatmen)-31
+b(t)335 b(of)e(the)g(Jacobian)h(is)f(selected)g(for)g(the)g(bac)-31
+b(kw)g(ard)334 b(problem)4000 50716 y(\(i.e.)459 b Fu(CVDenseB)265
+b Fw(is)f(called)h(in)f(step)g(17)h(of)g Fn(x)p Fw(7.1\),)287
+b(the)265 b(user)e(ma)-31 b(y)265 b(pro)-31 b(vide,)286
+b(through)265 b(a)f(call)i(to)f Fu(CVDenseSetJacFnB)4000
+52045 y Fw(\(see)369 b Fn(x)p Fw(7.2.6\),)j(a)e(function)h(of)e(the)h
+(follo)-31 b(wing)372 b(t)-31 b(yp)31 b(e:)p 4000 54117
+8308 45 v 4000 55458 45 1341 v 4376 55126 a Fu(CVDenseJacFnB)p
+12263 55458 V 4000 55502 8308 45 v Black 4000 56872 a
+Fw(De\257nition)p Black 2034 w Fu(typedef)582 b(void)g
+(\(*CVDenseJacFnB\)\()r(long)g(int)g(nB,)f(DenseMat)i(JB,)e(realtype)i
+(t,)28248 58200 y(N)p 28899 58200 349 45 v 419 w(Vector)f(y,)g(N)p
+35711 58200 V 418 w(Vector)g(yB,)g(N)p 43103 58200 V
+418 w(Vector)g(fyB,)28248 59528 y(void)g(*jac)p 33548
+59528 V 419 w(dataB,)g(N)p 38616 59528 V 419 w(Vector)g(tmp1B,)28248
+60857 y(N)p 28899 60857 V 419 w(Vector)g(tmp2B,)g(N)p
+38035 60857 V 419 w(Vector)g(tmp3B\);)p Black 4000 62674
+a Fw(Purp)31 b(ose)p Black 2884 w(This)403 b(function)g(computes)h(the)
+e(dense)g(Jacobian)i(of)e(the)h(bac)-31 b(kw)g(ard)404
+b(problem)f(\(or)f(an)h(appro)-31 b(x-)10814 64002 y(imation)414
+b(to)e(it\).)620 b(If)411 b(the)g(bac)-31 b(kw)g(ard)413
+b(problem)f(is)f(the)g(adjoin)-31 b(t)414 b(of)e(the)f(original)i(IVP)
+-92 b(,)412 b(then)f(this)10814 65330 y(Jacobian)371
+b(is)e(just)g(the)h(transp)31 b(ose)369 b(of)g Fl(J)414
+b Fw(=)307 b Fl(@)61 b(f)119 b(=@)61 b(y)410 b Fw(with)370
+b(a)g(c)-31 b(hange)370 b(in)f(sign.)p Black 4000 67136
+a(Argumen)-31 b(ts)p Black Black 1517 w Fu(nB)p Black
+4459 w Fw(is)369 b(the)h(bac)-31 b(kw)g(ard)370 b(problem)g(size.)p
+Black 10814 68703 a Fu(J)p Black 5040 w Fw(is)f(the)h(output)g
+(Jacobian)h(matrix.)p Black 10814 70270 a Fu(t)p Black
+5040 w Fw(is)e(the)h(curren)-31 b(t)368 b(v)-61 b(alue)370
+b(of)g(the)f(indep)31 b(enden)-31 b(t)370 b(v)-61 b(ariable.)p
+Black 10814 71837 a Fu(y)p Black 5040 w Fw(is)369 b(the)h(curren)-31
+b(t)368 b(v)-61 b(alue)370 b(of)g(the)f(forw)-31 b(ard)370
+b(solution)h(v)-31 b(ector.)p Black 10814 73404 a Fu(yB)p
+Black 4459 w Fw(is)369 b(the)h(curren)-31 b(t)368 b(v)-61
+b(alue)370 b(of)g(the)f(dep)31 b(enden)-31 b(t)369 b(v)-61
+b(ariable)371 b(v)-31 b(ector.)p Black 10814 74971 a
+Fu(fyB)p Black 3878 w Fw(is)369 b(the)h(curren)-31 b(t)368
+b(v)-61 b(alue)370 b(of)g(the)f(righ)-31 b(t-hand)371
+b(side)e(of)h(the)f(bac)-31 b(kw)g(ard)371 b(problem.)p
+Black 10814 76539 a Fu(jac)p 12627 76539 V 419 w(dataB)p
+Black 554 w Fw(is)339 b(a)g(p)31 b(oin)-31 b(ter)340
+b(to)f(user)f(data)i(-)f(the)g(same)h(as)e(the)i Fu(jac)p
+38671 76539 V 418 w(dataB)g Fw(parameter)g(passed)e(to)16435
+77867 y Fu(CVDenseSetJacDataB)p Fw(.)p Black Black eop
+%%Page: 116 126
+116 125 bop Black 0 2701 a Fx(116)19172 b(Using)426 b(CV)-35
+b(ODES)425 b(for)h(Adjoin)-35 b(t)425 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black Black 6814
+6974 a Fu(tmp1B)p Black Black 6814 8550 a(tmp2B)p Black
+Black 6814 10127 a(tmp3B)p Black 2716 w Fw(are)315 b(p)31
+b(oin)-31 b(ters)316 b(to)h(memory)f(allo)31 b(cated)318
+b(for)e(v)-61 b(ariables)316 b(of)g(t)-31 b(yp)31 b(e)316
+b Fu(N)p 39075 10127 349 45 v 419 w(Vector)g Fw(whic)-31
+b(h)317 b(can)12435 11455 y(b)31 b(e)369 b(used)f(b)-31
+b(y)370 b Fu(CVDenseJacFnB)h Fw(as)e(temp)31 b(orary)370
+b(storage)g(or)f(w)-31 b(ork)370 b(space.)p Black 0 13280
+a(Return)f(v)-61 b(alue)p Black 554 w(A)369 b Fu(CVDenseJacFnB)i
+Fw(function)g(t)-31 b(yp)31 b(e)369 b(do)31 b(es)369
+b(not)h(ha)-31 b(v)g(e)370 b(a)g(return)e(v)-61 b(alue.)p
+Black 0 15105 a(Notes)p Black 4072 w(A)322 b(user-supplied)f(dense)g
+(Jacobian)i(function)g(m)-31 b(ust)322 b(load)h(the)f
+Fu(nB)f Fw(b)-31 b(y)322 b Fu(nB)g Fw(dense)f(matrix)i
+Fu(JB)f Fw(with)6814 16433 y(an)310 b(appro)-31 b(ximation)312
+b(to)f(the)e(Jacobian)i(matrix)g(at)f(the)f(p)31 b(oin)-31
+b(t)311 b(\()p Fu(t)p Fw(,)p Fu(y)p Fw(,)p Fu(yB)p Fw(\),)h(where)d
+Fu(y)g Fw(is)g(the)h(solution)6814 17761 y(of)407 b(the)f(original)j
+(IVP)d(at)h(time)h Fu(t)e Fw(and)h Fu(yB)f Fw(is)g(the)h(solution)h(of)
+f(the)g(bac)-31 b(kw)g(ard)407 b(problem)g(at)h(the)6814
+19090 y(same)392 b(time.)562 b(Only)392 b(nonzero)g(elemen)-31
+b(ts)393 b(need)e(to)i(b)31 b(e)391 b(loaded)i(in)-31
+b(to)394 b Fu(JB)d Fw(as)h(this)g(matrix)i(is)d(set)h(to)6814
+20418 y(zero)398 b(b)31 b(efore)399 b(the)g(call)h(to)f(the)g(Jacobian)
+h(function.)583 b(The)399 b(t)-31 b(yp)31 b(e)399 b(of)g
+Fu(JB)g Fw(is)g Fu(DenseMat)p Fw(.)582 b(The)399 b(user)6814
+21747 y(is)369 b(referred)f(to)i Fn(x)p Fw(5.6.3)h(for)f(details)g
+(regarding)g(accessing)g(a)f Fu(DenseMat)h Fw(ob)61 b(ject.)0
+24766 y Fx(Jacobian)366 b(information)h(for)g(the)g(bac)-35
+b(kw)g(ard)366 b(problem)h(\(direct)g(metho)35 b(d)368
+b(with)f(banded)g(Jacobian\))0 26859 y Fw(If)279 b(the)h(direct)f
+(linear)h(solv)-31 b(er)280 b(with)h(banded)e(treatmen)-31
+b(t)281 b(of)f(the)g(Jacobian)h(is)e(selected)g(for)h(the)f(bac)-31
+b(kw)g(ard)281 b(problem)0 28188 y(\(i.e.)483 b Fu(CVBandB)338
+b Fw(is)f(called)h(in)g(step)e(17)i(of)g Fn(x)p Fw(7.1\),)345
+b(the)338 b(user)e(ma)-31 b(y)338 b(pro)-31 b(vide,)345
+b(through)337 b(a)h(call)g(to)g Fu(CVBandSetJacFnB)0
+29516 y Fw(\(see)369 b Fn(x)p Fw(7.2.6\),)j(a)e(function)h(the)e(follo)
+-31 b(wing)373 b(t)-31 b(yp)31 b(e:)p 0 31639 7727 45
+v 0 32980 45 1341 v 376 32647 a Fu(CVBandJacFnB)p 7682
+32980 V 0 33024 7727 45 v Black 0 34403 a Fw(De\257nition)p
+Black 2034 w Fu(typedef)582 b(void)g(\(*CVBandJacFnB\)\()r(long)g(int)g
+(nB,)23667 35731 y(long)g(int)g(mupperB,)g(long)g(int)f(mlowerB,)23667
+37059 y(BandMat)h(JB,)g(realtype)g(t,)g(N)p 38266 37059
+349 45 v 418 w(Vector)g(y,)23667 38388 y(N)p 24318 38388
+V 419 w(Vector)g(yB,)g(N)p 31711 38388 V 418 w(Vector)g(fyB,)g(void)g
+(*jac)p 44333 38388 V 419 w(dataB,)23667 39716 y(N)p
+24318 39716 V 419 w(Vector)g(tmp1B,)g(N)p 33454 39716
+V 419 w(Vector)g(tmp2B,)23667 41044 y(N)p 24318 41044
+V 419 w(Vector)g(tmp3B\);)p Black 0 42880 a Fw(Purp)31
+b(ose)p Black 2884 w(This)398 b(function)i(computes)e(the)h(banded)f
+(Jacobian)h(of)g(the)f(bac)-31 b(kw)g(ard)399 b(problem)g(\(or)f(a)h
+(banded)6814 44209 y(appro)-31 b(ximation)373 b(to)d(it\).)p
+Black 0 46033 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fu(nB)p Black 4459 w Fw(is)369 b(the)h(bac)-31 b(kw)g(ard)370
+b(problem)g(size.)p Black 6814 47610 a Fu(mlowerB)p Black
+Black 6814 49186 a(mupperB)p Black 1554 w Fw(are)f(the)h(lo)-31
+b(w)g(er)370 b(and)f(upp)31 b(er)369 b(half-bandwidth)j(of)d(the)h
+(Jacobian.)p Black 6814 50763 a Fu(JB)p Black 4459 w
+Fw(is)f(the)h(output)g(Jacobian)h(matrix.)p Black 6814
+52339 a Fu(t)p Black 5040 w Fw(is)e(the)h(curren)-31
+b(t)368 b(v)-61 b(alue)370 b(of)g(the)f(indep)31 b(enden)-31
+b(t)370 b(v)-61 b(ariable.)p Black 6814 53916 a Fu(y)p
+Black 5040 w Fw(is)369 b(the)h(curren)-31 b(t)368 b(v)-61
+b(alue)370 b(of)g(the)f(forw)-31 b(ard)370 b(solution)h(v)-31
+b(ector.)p Black 6814 55493 a Fu(yB)p Black 4459 w Fw(is)369
+b(the)h(curren)-31 b(t)368 b(v)-61 b(alue)370 b(of)g(the)f(dep)31
+b(enden)-31 b(t)369 b(v)-61 b(ariable)371 b(v)-31 b(ector.)p
+Black 6814 57069 a Fu(fyB)p Black 3878 w Fw(is)369 b(the)h(curren)-31
+b(t)368 b(v)-61 b(alue)370 b(of)g(the)f(righ)-31 b(t-hand)371
+b(side)e(of)h(the)f(bac)-31 b(kw)g(ard)371 b(problem.)p
+Black 6814 58646 a Fu(jac)p 8627 58646 V 419 w(dataB)p
+Black 554 w Fw(is)339 b(a)g(p)31 b(oin)-31 b(ter)340
+b(to)f(user)f(data)i(-)f(the)g(same)h(as)e(the)i Fu(jac)p
+34671 58646 V 418 w(dataB)g Fw(parameter)g(passed)e(to)12435
+59974 y Fu(CVBandSetJacDataB)p Fw(.)p Black 6814 61551
+a Fu(tmp1B)p Black Black 6814 63127 a(tmp2B)p Black Black
+6814 64704 a(tmp3B)p Black 2716 w Fw(are)315 b(p)31 b(oin)-31
+b(ters)316 b(to)h(memory)f(allo)31 b(cated)318 b(for)e(v)-61
+b(ariables)316 b(of)g(t)-31 b(yp)31 b(e)316 b Fu(N)p
+39075 64704 V 419 w(Vector)g Fw(whic)-31 b(h)317 b(can)12435
+66032 y(b)31 b(e)369 b(used)f(b)-31 b(y)370 b Fu(CVBandJacFnB)h
+Fw(as)e(temp)31 b(orary)370 b(storage)g(or)f(w)-31 b(ork)370
+b(space.)p Black 0 67857 a(Return)f(v)-61 b(alue)p Black
+554 w(A)369 b Fu(CVBandJacFnB)i Fw(function)g(t)-31 b(yp)31
+b(e)369 b(do)31 b(es)369 b(not)h(ha)-31 b(v)g(e)370 b(a)g(return)e(v)
+-61 b(alue.)p Black 0 69682 a(Notes)p Black 4072 w(A)600
+b(user-supplied)h(band)f(Jacobian)j(function)f(m)-31
+b(ust)601 b(load)h(the)f(band)g(matrix)h Fu(JB)f Fw(\(of)g(t)-31
+b(yp)31 b(e)6814 71010 y Fu(BandMat)p Fw(\))523 b(with)h(the)e(elemen)
+-31 b(ts)523 b(of)g(the)f(Jacobian)i(at)f(the)f(p)31
+b(oin)-31 b(t)524 b(\()p Fu(t)p Fw(,)p Fu(y)p Fw(,)p
+Fu(yB)p Fw(\),)h(where)c Fu(y)i Fw(is)f(the)6814 72338
+y(solution)352 b(of)g(the)e(original)j(IVP)e(at)g(time)h
+Fu(t)f Fw(and)g Fu(yB)f Fw(is)h(the)g(solution)h(of)f(the)g(bac)-31
+b(kw)g(ard)352 b(problem)6814 73667 y(at)471 b(the)g(same)f(time.)798
+b(Only)471 b(nonzero)f(elemen)-31 b(ts)472 b(need)e(to)h(b)31
+b(e)470 b(loaded)h(in)-31 b(to)472 b Fu(JB)f Fw(b)31
+b(ecause)470 b Fu(JB)g Fw(is)6814 74995 y(preset)406
+b(to)i(zero)f(b)31 b(efore)406 b(the)i(call)g(to)f(the)h(Jacobian)g
+(function.)607 b(More)407 b(details)h(on)f(the)g(accessor)6814
+76323 y(macros)418 b(pro)-31 b(vided)418 b(for)g(a)g
+Fu(BandMat)g Fw(ob)61 b(ject)420 b(and)d(on)h(the)g(rest)f(of)h(the)g
+(argumen)-31 b(ts)419 b(passed)e(to)i(a)6814 77652 y(function)371
+b(of)e(t)-31 b(yp)31 b(e)370 b Fu(CVBandJacFnB)h Fw(are)e(giv)-31
+b(en)370 b(in)g Fn(x)p Fw(5.6.4.)p Black Black eop
+%%Page: 117 127
+117 126 bop Black 4000 2701 a Fx(7.3)425 b(User-supplied)h(functions)g
+(for)f(adjoin)-35 b(t)424 b(sensitivit)-35 b(y)424 b(analysis)13814
+b(117)p 4000 3144 48001 45 v Black 4000 6974 a(Jacobian)424
+b(information)h(for)g(the)g(bac)-35 b(kw)g(ard)424 b(problem)i(\()p
+Fs(spgmr)d Fx(case\))4000 9017 y Fw(If)394 b(an)h(iterativ)-31
+b(e)397 b Fs(spgmr)c Fw(linear)i(solv)-31 b(er)395 b(is)g(selected)g
+(\()p Fu(CVSpgmrB)h Fw(is)e(called)i(in)f(step)f(17)h(of)g
+Fn(x)p Fw(7.1\),)403 b(the)395 b(user)f(ma)-31 b(y)4000
+10345 y(pro)g(vide,)299 b(through)281 b(a)f(call)i(to)e
+Fu(CVSpgmrSetJacTimesVecFnB)k Fw(\(see)c Fn(x)p Fw(7.2.6\),)301
+b(a)280 b(function)i(of)e(the)h(follo)-31 b(wing)283
+b(t)-31 b(yp)31 b(e:)p 4000 12317 12957 45 v 4000 13904
+45 1587 v 4376 13326 a Fu(CVSpgmrJacTimesVecFnB)p 16913
+13904 V 4000 13948 12957 45 v Black 4000 15389 a Fw(De\257nition)p
+Black 2034 w Fu(typedef)582 b(int)g(\(*CVSpgmrJacTimesVecFnB\)\()s(N)p
+32967 15389 349 45 v 419 w(Vector)g(vB,)g(N)p 40360 15389
+V 418 w(Vector)g(JvB,)32316 16717 y(realtype)h(t,)e(N)p
+39941 16717 V 419 w(Vector)h(y,)32316 18045 y(N)p 32967
+18045 V 419 w(Vector)g(yB,)g(N)p 40360 18045 V 418 w(Vector)g(fyB,)
+32316 19374 y(void)g(*jac)p 37616 19374 V 419 w(dataB,)g(N)p
+42684 19374 V 419 w(Vector)g(tmpB\);)p Black 4000 21084
+a Fw(Purp)31 b(ose)p Black 2884 w(This)369 b(function)g(computes)g(the)
+g(action)h(of)e(the)h(Jacobian)h(on)e(a)h(giv)-31 b(en)369
+b(v)-31 b(ector)369 b Fu(vB)f Fw(for)h(the)f(bac)-31
+b(k-)10814 22412 y(w)g(ard)370 b(problem)g(\(or)f(an)h(appro)-31
+b(ximation)372 b(to)e(it\).)p Black 4000 24173 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(vB)p Black 4459 w Fw(is)369
+b(the)h(v)-31 b(ector)370 b(b)-31 b(y)369 b(whic)-31
+b(h)370 b(the)g(Jacobian)g(m)-31 b(ust)370 b(b)31 b(e)369
+b(m)-31 b(ultiplied)372 b(to)e(the)f(righ)-31 b(t.)p
+Black 10814 25713 a Fu(JvB)p Black 3878 w Fw(is)369 b(the)h(output)g(v)
+-31 b(ector)370 b(computed.)p Black 10814 27252 a Fu(t)p
+Black 5040 w Fw(is)f(the)h(curren)-31 b(t)368 b(v)-61
+b(alue)370 b(of)g(the)f(indep)31 b(enden)-31 b(t)370
+b(v)-61 b(ariable.)p Black 10814 28791 a Fu(y)p Black
+5040 w Fw(is)369 b(the)h(curren)-31 b(t)368 b(v)-61 b(alue)370
+b(of)g(the)f(forw)-31 b(ard)370 b(solution)h(v)-31 b(ector.)p
+Black 10814 30331 a Fu(yB)p Black 4459 w Fw(is)369 b(the)h(curren)-31
+b(t)368 b(v)-61 b(alue)370 b(of)g(the)f(dep)31 b(enden)-31
+b(t)369 b(v)-61 b(ariable)371 b(v)-31 b(ector.)p Black
+10814 31870 a Fu(fyB)p Black 3878 w Fw(is)369 b(the)h(curren)-31
+b(t)368 b(v)-61 b(alue)370 b(of)g(the)f(righ)-31 b(t-hand)371
+b(side)e(of)h(the)f(bac)-31 b(kw)g(ard)371 b(problem.)p
+Black 10814 33409 a Fu(jac)p 12627 33409 V 419 w(dataB)p
+Black 554 w Fw(is)339 b(a)g(p)31 b(oin)-31 b(ter)340
+b(to)f(user)f(data)i(-)f(the)g(same)h(as)e(the)i Fu(jac)p
+38671 33409 V 418 w(dataB)g Fw(parameter)g(passed)e(to)16435
+34738 y Fu(CVSpgmrSetJacDataB)p Fw(.)p Black 10814 36277
+a Fu(tmpB)p Black 3297 w Fw(is)382 b(a)f(p)31 b(oin)-31
+b(ter)383 b(to)f(memory)g(allo)31 b(cated)384 b(for)e(a)g(v)-31
+b(ector)382 b(whic)-31 b(h)383 b(can)e(b)31 b(e)381 b(used)g(for)h(w)
+-31 b(ork)16435 37605 y(space.)p Black 4000 39366 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)352 b(return)e(v)-61
+b(alue)352 b(of)g(a)g(function)h(of)f(t)-31 b(yp)31 b(e)352
+b Fu(CVSpgmrJtimesFnB)i Fw(should)d(b)31 b(e)351 b(0)h(if)g(successful)
+f(or)10814 40694 y(nonzero)369 b(if)h(an)g(error)e(w)-31
+b(as)370 b(encoun)-31 b(tered,)370 b(in)f(whic)-31 b(h)370
+b(case)f(the)h(in)-31 b(tegration)372 b(is)d(halted.)p
+Black 4000 42455 a(Notes)p Black 4072 w(A)395 b(user-supplied)f
+(Jacobian-v)-31 b(ector)398 b(pro)31 b(duct)395 b(function)h(m)-31
+b(ust)396 b(load)g(the)f(v)-31 b(ector)396 b Fu(JvB)f
+Fw(with)i(the)10814 43784 y(result)311 b(of)h(the)f(pro)31
+b(duct)311 b(b)31 b(et)-31 b(w)g(een)312 b(the)f(Jacobian)i(of)e(the)h
+(bac)-31 b(kw)g(ard)312 b(problem)g(at)g(the)f(p)31 b(oin)-31
+b(t)312 b(\()p Fu(t)p Fw(,)p Fu(y)p Fw(,)10814 45112
+y Fu(yB)p Fw(\))377 b(and)h(the)f(v)-31 b(ector)377 b
+Fu(vB)p Fw(.)h(Here,)h Fu(y)e Fw(is)f(the)i(solution)g(of)g(the)f
+(original)i(IVP)e(at)h(time)g Fu(t)f Fw(and)g Fu(yB)g
+Fw(is)10814 46440 y(the)435 b(solution)i(of)e(the)h(bac)-31
+b(kw)g(ard)436 b(problem)g(at)g(the)f(same)g(time.)691
+b(The)436 b(rest)e(of)h(the)h(argumen)-31 b(ts)10814
+47769 y(are)362 b(equiv)-61 b(alen)-31 b(t)363 b(to)g(those)f(passed)f
+(to)i(a)f(function)h(of)f(t)-31 b(yp)31 b(e)363 b Fu(CVSpgmrJtimesFn)g
+Fw(\(see)f Fn(x)p Fw(5.6.5\).)493 b(If)10814 49097 y(the)409
+b(bac)-31 b(kw)g(ard)410 b(problem)f(is)g(the)f(adjoin)-31
+b(t)411 b(of)608 b(_)-506 b Fl(y)413 b Fw(=)373 b Fl(f)119
+b Fw(\()p Fl(t;)184 b(y)40 b Fw(\),)420 b(then)409 b(this)g(function)h
+(is)e(to)i(compute)10814 50425 y Fn(\241)p Fw(\()p Fl(@)61
+b(f)119 b(=@)61 b(y)40 b Fw(\))15630 50024 y Fj(T)16329
+50425 y Fl(v)16866 50591 y Fj(B)17627 50425 y Fw(.)4000
+53294 y Fx(Preconditioning)426 b(for)f(the)g(bac)-35
+b(kw)g(ard)424 b(problem)i(\(linear)e(system)h(solution\))4000
+55337 y Fw(If)335 b(preconditioning)i(is)e(used)g(during)g(in)-31
+b(tegration)338 b(of)d(the)g(bac)-31 b(kw)g(ard)337 b(problem,)343
+b(then)335 b(the)g(user)f(m)-31 b(ust)336 b(pro)-31 b(vide)336
+b(a)4000 56665 y Fs(C)c Fw(function)i(to)f(solv)-31 b(e)333
+b(the)g(linear)g(system)f Fl(P)154 b(z)356 b Fw(=)307
+b Fl(r)31 b Fw(,)340 b(where)332 b Fl(P)486 b Fw(ma)-31
+b(y)333 b(b)31 b(e)332 b(either)h(a)f(left)i(or)e(a)g(righ)-31
+b(t)334 b(preconditioner)4000 57994 y(matrix.)494 b(This)370
+b(function)g(m)-31 b(ust)370 b(b)31 b(e)369 b(of)h(t)-31
+b(yp)31 b(e)369 b Fu(CVSpgmrPSolveFnB)j Fw(de\257ned)c(b)-31
+b(y)p 4000 59853 11795 45 v 4000 61440 45 1587 v 4376
+60862 a Fu(CVSpgmrPrecSolveFnB)p 15750 61440 V 4000 61484
+11795 45 v Black 4000 62925 a Fw(De\257nition)p Black
+2034 w Fu(typedef)582 b(int)g(\(*CVSpgmrPrecSolveFnB\)\()s(realtype)h
+(t,)e(N)p 38779 62925 349 45 v 419 w(Vector)h(y,)f(N)p
+45590 62925 V 419 w(Vector)h(yB,)31154 64253 y(N)p 31805
+64253 V 419 w(Vector)g(fyB,)g(N)p 39779 64253 V 418 w(Vector)g(rB,)
+31154 65582 y(N)p 31805 65582 V 419 w(Vector)g(zB,)f(realtype)i
+(gammaB,)31154 66910 y(realtype)g(deltaB,)f(int)f(lrB,)31154
+68238 y(void)h(*P)p 35292 68238 V 419 w(dataB,)g(N)p
+40360 68238 V 418 w(Vector)g(tmpB\);)p Black 4000 69949
+a Fw(Purp)31 b(ose)p Black 2884 w(This)370 b(function)g(solv)-31
+b(es)370 b(the)f(preconditioning)j(system)d Fl(P)154
+b(z)356 b Fw(=)307 b Fl(r)400 b Fw(for)370 b(the)f(bac)-31
+b(kw)g(ard)371 b(problem.)p Black 4000 71709 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(t)p Black 3878 w Fw(is)369
+b(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(indep)31
+b(enden)-31 b(t)370 b(v)-61 b(ariable.)p Black 10814
+73249 a Fu(y)p Black 3878 w Fw(is)369 b(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(forw)-31 b(ard)370
+b(solution)h(v)-31 b(ector.)p Black 10814 74788 a Fu(yB)p
+Black 3297 w Fw(is)369 b(the)g(curren)-31 b(t)369 b(v)-61
+b(alue)370 b(of)f(the)h(dep)31 b(enden)-31 b(t)369 b(v)-61
+b(ariable)370 b(v)-31 b(ector.)p Black 10814 76328 a
+Fu(fyB)p Black 2716 w Fw(is)369 b(the)g(curren)-31 b(t)369
+b(v)-61 b(alue)370 b(of)f(the)h(righ)-31 b(t-hand)371
+b(side)e(of)g(the)h(bac)-31 b(kw)g(ard)370 b(problem.)p
+Black 10814 77867 a Fu(rB)p Black 3297 w Fw(is)f(the)g(righ)-31
+b(t-hand)371 b(side)e(v)-31 b(ector)370 b(of)g(the)f(linear)h(system.)p
+Black Black eop
+%%Page: 118 128
+118 127 bop Black 0 2701 a Fx(118)19172 b(Using)426 b(CV)-35
+b(ODES)425 b(for)h(Adjoin)-35 b(t)425 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black Black 6814
+6974 a Fu(zB)p Black 3297 w Fw(is)369 b(the)g(output)i(v)-31
+b(ector)370 b(computed.)p Black 6814 8578 a Fu(gammaB)p
+Black 973 w Fw(is)f(the)g(scalar)h Fl(\260)431 b Fw(app)31
+b(earing)370 b(in)f(the)h(Newton)g(matrix.)p Black 6814
+10181 a Fu(deltaB)p Black 973 w Fw(is)456 b(an)g(input)h(tolerance)h
+(to)f(b)31 b(e)455 b(used)h(if)h(an)f(iterativ)-31 b(e)459
+b(metho)31 b(d)457 b(is)f(emplo)-31 b(y)g(ed)458 b(in)f(the)11273
+11510 y(solution.)p Black 6814 13113 a Fu(lrB)p Black
+2716 w Fw(is)313 b(an)h(input)h(\260ag)f(indicating)i(whether)e(the)g
+(preconditioner)h(solv)-31 b(e)314 b(function)h(is)f(to)g(use)11273
+14442 y(the)369 b(left)h(preconditioner)h(\()p Fu(lr=1)p
+Fw(\))f(or)f(the)h(righ)-31 b(t)370 b(preconditioner)g(\()p
+Fu(lr=2)p Fw(\);)p Black 6814 16045 a Fu(P)p 7465 16045
+349 45 v 419 w(dataB)p Black 554 w Fw(is)e(a)i(p)31 b(oin)-31
+b(ter)369 b(to)h(user)d(data)k(-)d(the)h(same)g(as)g(the)g
+Fu(P)p 32675 16045 V 419 w(dataB)g Fw(parameter)h(passed)e(to)i(the)
+11273 17374 y(function)g Fu(CVSpgmrSetPrecDataB)p Fw(.)p
+Black 6814 18977 a Fu(tmpB)p Black 2135 w Fw(is)464 b(a)h(p)31
+b(oin)-31 b(ter)465 b(to)h(memory)f(allo)31 b(cated)467
+b(for)e(a)g(v)-31 b(ector)465 b(whic)-31 b(h)466 b(can)e(b)31
+b(e)464 b(used)g(for)h(w)-31 b(ork)11273 20306 y(space.)p
+Black 0 22185 a(Return)369 b(v)-61 b(alue)p Black 554
+w(The)261 b(return)g(v)-61 b(alue)261 b(of)h(a)g(preconditioner)g(solv)
+-31 b(e)262 b(function)h(for)e(the)g(bac)-31 b(kw)g(ard)263
+b(problem)f(should)f(b)31 b(e)6814 23513 y(0)350 b(if)f(successful,)k
+(p)31 b(ositiv)-31 b(e)351 b(for)f(a)f(reco)-31 b(v)g(erable)351
+b(error)d(\(in)i(whic)-31 b(h)350 b(case)f(the)h(step)f(will)i(b)31
+b(e)349 b(retried\),)6814 24841 y(or)369 b(negativ)-31
+b(e)371 b(for)f(an)f(unreco)-31 b(v)g(erable)370 b(error)e(\(in)i(whic)
+-31 b(h)370 b(case)f(the)h(in)-31 b(tegration)372 b(is)d(halted\).)0
+28005 y Fx(Preconditioning)426 b(for)f(the)g(bac)-35
+b(kw)g(ard)424 b(problem)i(\(Jacobian)e(data\))0 30149
+y Fw(If)437 b(the)h(user's)e(preconditioner)j(requires)e(that)h(an)-31
+b(y)438 b(Jacobian-related)i(data)f(b)31 b(e)437 b(prepro)31
+b(cessed)436 b(or)h(ev)-61 b(aluated,)0 31477 y(then)369
+b(this)h(needs)f(to)g(b)31 b(e)369 b(done)h(in)f(a)h(user-supplied)e
+Fs(C)h Fw(function)i(of)f(t)-31 b(yp)31 b(e)369 b Fu(CVSpgmrPrecondFnB)
+j Fw(de\257ned)d(b)-31 b(y)p 0 33632 11795 45 v 0 35219
+45 1587 v 376 34641 a Fu(CVSpgmrPrecSetupFnB)p 11750
+35219 V 0 35263 11795 45 v Black 0 36757 a Fw(De\257nition)p
+Black 2034 w Fu(typedef)582 b(int)g(\(*CVSpgmrPrecSetupFnB\)\()s
+(realtype)h(t,)e(N)p 34779 36757 349 45 v 419 w(Vector)h(y,)f(N)p
+41590 36757 V 419 w(Vector)h(yB,)27154 38086 y(N)p 27805
+38086 V 419 w(Vector)g(fyB,)g(booleantype)g(jokB,)27154
+39414 y(booleantype)h(*jcurPtrB,)27154 40743 y(realtype)g(gammaB,)f
+(void)f(*P)p 41171 40743 V 419 w(dataB,)27154 42071 y(N)p
+27805 42071 V 419 w(Vector)h(tmp1B,)g(N)p 36941 42071
+V 418 w(Vector)g(tmp2B,)27154 43399 y(N)p 27805 43399
+V 419 w(Vector)g(tmp3B\);)p Black 0 45289 a Fw(Purp)31
+b(ose)p Black 2884 w(This)334 b(function)h(prepro)31
+b(cesses)332 b(and/or)i(ev)-61 b(aluates)335 b(Jacobian-related)h(data)
+e(needed)g(b)-31 b(y)334 b(the)f(pre-)6814 46618 y(conditioner)371
+b(for)e(the)h(bac)-31 b(kw)g(ard)370 b(problem.)p Black
+0 48497 a(Argumen)-31 b(ts)p Black 1517 w(The)369 b(argumen)-31
+b(ts)371 b(of)e(a)h Fu(CVSpgmrPrecSetupFnB)i Fw(are)d(as)g(follo)-31
+b(ws:)p Black 6814 50376 a Fu(t)p Black 4622 w Fw(is)369
+b(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(indep)31
+b(enden)-31 b(t)370 b(v)-61 b(ariable.)p Black 6814 51979
+a Fu(y)p Black 4622 w Fw(is)369 b(the)g(curren)-31 b(t)369
+b(v)-61 b(alue)370 b(of)f(the)h(forw)-31 b(ard)370 b(solution)h(v)-31
+b(ector.)p Black 6814 53583 a Fu(yB)p Black 4041 w Fw(is)369
+b(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(dep)31
+b(enden)-31 b(t)369 b(v)-61 b(ariable)370 b(v)-31 b(ector.)p
+Black 6814 55187 a Fu(fyB)p Black 3460 w Fw(is)369 b(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)f(the)h(righ)-31 b(t-hand)370
+b(side)f(of)h(the)g(bac)-31 b(kw)g(ard)370 b(problem.)p
+Black 6814 56791 a Fu(jokB)p Black 2879 w Fw(is)447 b(an)h(input)g
+(\260ag)g(indicating)j(whether)c(Jacobian-related)j(data)f(needs)e(to)h
+(b)31 b(e)447 b(re-)12017 58119 y(computed.)p Black 6814
+59723 a Fu(jcurPtrB)p Black 555 w Fw(is)348 b(a)h(p)31
+b(oin)-31 b(ter)350 b(to)f(an)g(output)h(in)-31 b(teger)350
+b(\260ag)f(whic)-31 b(h)350 b(is)e(to)i(b)31 b(e)348
+b(set)h(to)g Fu(TRUE)g Fw(if)g(Jacobian)12017 61051 y(data)467
+b(w)-31 b(as)467 b(recomputed,)492 b(or)466 b(to)h Fu(FALSE)g
+Fw(if)g(Jacobian)h(data)f(w)-31 b(as)467 b(not)g(recomputed)12017
+62379 y(but)369 b(sa)-31 b(v)g(ed)370 b(data)g(w)-31
+b(as)370 b(still)h(reused.)p Black 6814 63983 a Fu(gammaB)p
+Black 1717 w Fw(is)e(the)g(scalar)h Fl(\260)430 b Fw(app)31
+b(earing)371 b(in)e(the)g(Newton)i(matrix.)p Black 6814
+65587 a Fu(P)p 7465 65587 V 419 w(dataB)p Black 1298
+w Fw(is)451 b(a)i(p)31 b(oin)-31 b(ter)452 b(to)h(user)d(data)k(-)d
+(the)h(same)g(as)g(the)g Fu(P)p 34332 65587 V 419 w(dataB)g
+Fw(parameter)h(passed)e(to)12017 66915 y Fu(CVSpgmrSetPrecDataB)p
+Fw(.)p Black 6814 68519 a Fu(tmp1B)p Black Black 6814
+70122 a(tmp2B)p Black Black 6814 71726 a(tmp3B)p Black
+2298 w Fw(are)376 b(p)31 b(oin)-31 b(ters)377 b(to)h(memory)f(allo)31
+b(cated)380 b(for)c(v)-31 b(ectors)377 b(whic)-31 b(h)378
+b(can)f(b)31 b(e)376 b(used)g(as)h(temp)31 b(o-)12017
+73054 y(rary)368 b(storage)j(or)e(w)-31 b(ork)370 b(space.)p
+Black 0 74933 a(Return)f(v)-61 b(alue)p Black 554 w(The)357
+b(return)g(v)-61 b(alue)358 b(of)f(a)h(preconditioner)g(setup)f
+(function)i(for)e(the)h(bac)-31 b(kw)g(ard)358 b(problem)g(should)6814
+76262 y(b)31 b(e)255 b(0)g(if)h(successful,)278 b(p)31
+b(ositiv)-31 b(e)256 b(for)g(a)f(reco)-31 b(v)g(erable)256
+b(error)f(\(in)h(whic)-31 b(h)256 b(case)f(the)g(step)g(will)i(b)31
+b(e)255 b(retried\),)6814 77590 y(or)369 b(negativ)-31
+b(e)371 b(for)f(an)f(unreco)-31 b(v)g(erable)370 b(error)e(\(in)i(whic)
+-31 b(h)370 b(case)f(the)h(in)-31 b(tegration)372 b(is)d(halted\).)p
+Black Black eop
+%%Page: 119 129
+119 128 bop Black 4000 2701 a Fx(7.4)425 b(Using)g(CV)-35
+b(ODES)426 b(preconditioner)h(mo)35 b(dules)425 b(for)g(the)h(bac)-35
+b(kw)g(ard)423 b(problem)6727 b(119)p 4000 3144 48001
+45 v Black 4000 6974 a Fr(7.4)1793 b(Using)878 b(CV)-50
+b(ODES)879 b(preconditioner)i(mo)50 b(dules)879 b(for)g(the)g(bac)-50
+b(k-)8085 8966 y(w)g(ard)598 b(problem)4000 11619 y Fo(7.4.1)1495
+b(Using)500 b(the)e(banded)h(preconditioner)i(CVBANDPRE)4000
+13668 y Fw(The)318 b(adjoin)-31 b(t)320 b(mo)31 b(dule)318
+b(in)g Fs(cv)-25 b(odes)319 b Fw(o\256ers)d(an)i(in)-31
+b(terface)319 b(to)g(the)f(banded)g(preconditioner)g(mo)31
+b(dule)319 b Fs(cvbandpre)4000 14997 y Fw(describ)31
+b(ed)472 b(in)i(section)g Fn(x)p Fw(5.9.1.)806 b(This)474
+b(preconditioner)g(pro)-31 b(vides)474 b(a)f(band)h(matrix)g
+(preconditioner)h(based)e(on)4000 16325 y(di\256erence)482
+b(quotien)-31 b(ts)485 b(of)f(the)f(bac)-31 b(kw)g(ard)485
+b(problem)e(righ)-31 b(t-hand)485 b(side)e(function)h
+Fu(fB)p Fw(.)g(It)f(generates)g(a)h(banded)4000 17654
+y(appro)-31 b(ximation)430 b(to)e(the)f(Jacobian)h(with)g
+Fl(m)23051 17820 y Fj(l)t(B)24523 17654 y Fw(sub-diagonals)h(and)e
+Fl(m)34663 17820 y Fj(uB)36374 17654 y Fw(sup)31 b(er-diagonals)428
+b(to)f(b)31 b(e)427 b(used)f(with)4000 18982 y(the)369
+b(Krylo)-31 b(v)371 b(linear)f(solv)-31 b(er)369 b(in)h
+Fs(cvspgmr)p Fw(.)5660 20314 y(In)375 b(order)g(to)h(use)f(the)g
+Fs(cvbandpre)h Fw(mo)31 b(dule)376 b(in)g(the)f(solution)i(of)f(the)g
+(bac)-31 b(kw)g(ard)376 b(problem,)i(the)e(user)e(need)4000
+21642 y(not)276 b(de\257ne)f(an)-31 b(y)276 b(additional)i(functions.)
+463 b(First,)294 b(the)275 b(user)f(m)-31 b(ust)276 b(initialize)j(the)
+c Fs(cvbandpre)h Fw(mo)31 b(dule)276 b(b)-31 b(y)276
+b(calling)p 4000 23529 10052 45 v 4000 24870 45 1341
+v 4376 24538 a Fu(CVBandPrecAllocB)p 14007 24870 V 4000
+24914 10052 45 v Black 4000 26270 a Fw(Call)p Black 4848
+w Fu(flag)582 b(=)f(CVBandPrecAlloc\(cvadj)p 27153 26270
+349 45 v 422 w(mem,)g(nB,)h(muB,)g(mlB\);)p Black 4000
+28048 a Fw(Description)p Black 1286 w(The)314 b(function)h
+Fu(CVBandPrecAllocB)g Fw(initializes)i(and)d(allo)31
+b(cates)315 b(memory)g(for)e(the)h Fs(cvbandpre)10814
+29376 y Fw(preconditioner)370 b(for)g(the)f(bac)-31 b(kw)g(ard)371
+b(problem.)p Black 4000 31154 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvadj)p 13789 31154 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f(adjoin)-31 b(t)372 b(memory)e(blo)31
+b(c)-31 b(k)370 b(returned)e(b)-31 b(y)370 b Fu(CVadjMalloc)p
+Fw(.)p Black 10814 32707 a Fu(nB)p Black 4459 w Fw(\()p
+Fu(long)582 b(int)p Fw(\))370 b(bac)-31 b(kw)g(ard)371
+b(problem)f(dimension.)p Black 10814 34261 a Fu(muB)p
+Black 3878 w Fw(\()p Fu(long)582 b(int)p Fw(\))396 b(upp)31
+b(er)393 b(half-bandwidth)398 b(of)d(the)g(bac)-31 b(kw)g(ard)396
+b(problem)f(Jacobian)i(ap-)16435 35589 y(pro)-31 b(ximation.)p
+Black 10814 37142 a Fu(mlB)p Black 3878 w Fw(\()p Fu(long)582
+b(int)p Fw(\))430 b(lo)-31 b(w)g(er)431 b(half-bandwidth)h(of)e(the)f
+(bac)-31 b(kw)g(ard)431 b(problem)f(Jacobian)h(ap-)16435
+38471 y(pro)-31 b(ximation.)p Black 4000 40249 a(Return)369
+b(v)-61 b(alue)p Black 554 w(If)519 b(successful,)556
+b Fu(CVBandPrecAlloc)521 b Fw(stores)d(a)i(p)31 b(oin)-31
+b(ter)519 b(to)h(the)f(newly)h(created)f Fs(cvbandpre)10814
+41577 y Fw(memory)370 b(blo)31 b(c)-31 b(k.)494 b(The)369
+b(return)g(v)-61 b(alue)369 b Fu(flag)h Fw(\(of)g(t)-31
+b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p Black
+10814 43355 a Fu(CV)p 12046 43355 V 419 w(SUCCESS)p Black
+2716 w Fw(The)h(call)g(to)g Fu(CVBandPrecAllocB)h Fw(w)-31
+b(as)370 b(successful.)p Black 10814 44908 a Fu(CV)p
+12046 44908 V 419 w(PDATA)p 15370 44908 V 419 w(NULL)p
+Black 1135 w Fw(An)513 b(error)e(o)31 b(ccured)513 b(while)g(trying)h
+(to)g(create)f(the)f Fs(cvbandpre)i Fw(memory)19178 46237
+y(blo)31 b(c)-31 b(k.)p Black 10814 47790 a Fu(CV)p 12046
+47790 V 419 w(ADJMEM)p 15951 47790 V 419 w(NULL)p Black
+554 w Fw(The)370 b Fu(cvadj)p 24429 47790 V 419 w(mem)f
+Fw(argumen)-31 b(t)371 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)4000
+49522 y(T)-92 b(o)275 b(sp)31 b(ecify)274 b(the)g(use)g(of)h(the)f
+Fs(cvspgmr)f Fw(linear)i(solv)-31 b(er)275 b(mo)31 b(dule)275
+b(with)h(the)e Fs(cvbandpre)h Fw(preconditioner)g(mo)31
+b(dule,)4000 50850 y(mak)-31 b(e)370 b(the)g(follo)-31
+b(wing)373 b(call:)p 4000 52737 6565 45 v 4000 54324
+45 1587 v 4376 53746 a Fu(CVBPSpgmrB)p 10520 54324 V
+4000 54368 6565 45 v Black 4000 55651 a Fw(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVBPSpgmrB\(cvadj)p 24248 55651
+349 45 v 421 w(mem,)h(pretypeB,)g(maxlB\);)p Black 4000
+57429 a Fw(Description)p Black 1286 w(The)452 b(function)h
+Fu(CVBPSpgmrB)g Fw(links)g(the)f Fs(cvbandpre)g Fw(data)h(to)g(the)f
+Fs(cvspgmr)f Fw(linear)h(solv)-31 b(er)10814 58757 y(and)369
+b(attac)-31 b(hes)371 b(the)f(latter)g(to)g(the)f Fs(cv)-25
+b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k)370 b(for)g(the)f(bac)-31
+b(kw)g(ard)371 b(problem.)p Black 4000 60536 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cvadj)p 13789 60536 V 419
+w(mem)p Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(adjoin)-31 b(t)372
+b(memory)e(blo)31 b(c)-31 b(k)370 b(returned)e(b)-31
+b(y)370 b Fu(CVadjMalloc)p Fw(.)p Black 10814 62089 a
+Fu(pretypeB)p Black 973 w Fw(\()p Fu(int)p Fw(\))g(preconditioning)i(t)
+-31 b(yp)31 b(e.)493 b(Can)370 b(b)31 b(e)369 b(one)g(of)h
+Fu(PREC)p 39732 62089 V 419 w(LEFT)g Fw(or)f Fu(PREC)p
+46525 62089 V 419 w(RIGHT)p Fw(.)p Black 10814 63642
+a Fu(maxlB)p Black 2716 w Fw(\()p Fu(int)p Fw(\))406
+b(maxim)-31 b(um)407 b(dimension)f(of)f(the)g(Krylo)-31
+b(v)406 b(subspace)e(to)h(b)31 b(e)404 b(used.)598 b(P)-31
+b(ass)405 b(0)g(to)16435 64970 y(use)369 b(the)g(default)i(v)-61
+b(alue)369 b Fu(CVSPGMR)p 30971 64970 V 420 w(MAXL)p
+Fw(=)308 b(5.)p Black 4000 66748 a(Return)369 b(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fu(flag)f Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p
+Fw(\))g(is)f(one)g(of:)p Black 10814 68526 a Fu(CV)p
+12046 68526 V 419 w(SUCCESS)p Black 4460 w Fw(The)g Fs(cvspgmr)f
+Fw(initialization)374 b(w)-31 b(as)370 b(successful.)p
+Black 10814 70080 a Fu(CVSPGMR)p 14951 70080 V 419 w(MEM)p
+17113 70080 V 419 w(NULL)p Black 1136 w Fw(The)460 b
+Fs(cv)-25 b(odes)461 b Fw(memory)g(blo)31 b(c)-31 b(k)461
+b(for)f(the)h(bac)-31 b(kw)g(ard)461 b(problem)g(w)-31
+b(as)461 b(not)20922 71408 y(initialized)372 b(through)e(a)f(previous)h
+(call)g(to)g Fu(CVodeCreateB)p Fw(.)p Black 10814 72961
+a Fu(CVSPGMR)p 14951 72961 V 419 w(ILL)p 17113 72961
+V 419 w(INPUT)p Black 555 w Fw(The)f(preconditioner)h(t)-31
+b(yp)31 b(e)370 b Fu(pretypeB)g Fw(is)f(not)h(v)-61 b(alid.)p
+Black 10814 74514 a Fu(CVSPGMR)p 14951 74514 V 419 w(MEM)p
+17113 74514 V 419 w(FAIL)p Black 1136 w Fw(A)369 b(memory)h(allo)31
+b(cation)372 b(request)d(failed.)p Black 10814 76068
+a Fu(CV)p 12046 76068 V 419 w(PDATA)p 15370 76068 V 419
+w(NULL)p Black 2879 w Fw(The)g Fs(cvbandpre)h Fw(preconditioner)g(has)f
+(not)h(b)31 b(een)369 b(initialized.)p Black 10814 77621
+a Fu(CV)p 12046 77621 V 419 w(ADJMEM)p 15951 77621 V
+419 w(NULL)p Black 2298 w Fw(The)g Fu(cvadj)p 26172 77621
+V 419 w(mem)h Fw(argumen)-31 b(t)370 b(w)-31 b(as)370
+b Fu(NULL)p Fw(.)p Black Black eop
+%%Page: 120 130
+120 129 bop Black 0 2701 a Fx(120)19172 b(Using)426 b(CV)-35
+b(ODES)425 b(for)h(Adjoin)-35 b(t)425 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black 0 6974 a
+Fw(Note)398 b(that)g(memory)g(allo)31 b(cated)399 b(b)-31
+b(y)398 b Fu(CVBandPrecAllocB)h Fw(is)e(deallo)31 b(cated)399
+b(b)-31 b(y)397 b(the)g(function)i Fu(CVadjFree)p Fw(.)577
+b(F)-92 b(or)0 8302 y(more)369 b(details)i(on)e Fs(cvbandpre)h
+Fw(see)f Fn(x)p Fw(5.9.1.)0 11420 y Fo(7.4.2)1495 b(Using)500
+b(the)e(band-blo)42 b(c)-42 b(k-diagonal)502 b(preconditioner)e
+(CVBBDPRE)0 13470 y Fw(The)318 b(adjoin)-31 b(t)320 b(mo)31
+b(dule)319 b(in)f Fs(cv)-25 b(odes)318 b Fw(o\256ers)f(an)h(in)-31
+b(terface)319 b(to)g(the)f(band-blo)31 b(c)-31 b(k-diagonal)322
+b(preconditioner)d(mo)31 b(dule)0 14798 y Fs(cvbbdpre)507
+b Fw(describ)31 b(ed)505 b(in)h(section)g Fn(x)p Fw(5.9.2.)905
+b(This)506 b(generates)g(a)g(preconditioner)h(that)g(is)f(a)g(blo)31
+b(c)-31 b(k-diagonal)0 16127 y(matrix)532 b(with)g(eac)-31
+b(h)530 b(blo)31 b(c)-31 b(k)532 b(b)31 b(eing)531 b(a)f(band)h(matrix)
+h(and)f(can)f(b)31 b(e)530 b(used)g(with)h(the)g(Krylo)-31
+b(v)532 b(linear)f(solv)-31 b(er)531 b(in)0 17455 y Fs(cvspgmr)368
+b Fw(and)i(with)g(the)g(parallel)g(v)-31 b(ector)370
+b(mo)31 b(dule)371 b Fs(nvector)p 27505 17455 368 45
+v 440 w(p)-74 b(arallel)p Fw(.)1660 18787 y(In)409 b(order)g(to)i(use)d
+(the)i Fs(cvbbdpre)g Fw(mo)31 b(dule)411 b(in)f(the)f(solution)j(of)e
+(the)f(bac)-31 b(kw)g(ard)411 b(problem,)421 b(the)410
+b(user)e(m)-31 b(ust)0 20115 y(de\257ne)369 b(one)g(or)g(t)-31
+b(w)g(o)371 b(additional)i(functions,)d(describ)31 b(ed)369
+b(at)h(the)f(end)g(of)h(this)f(section.)0 23012 y Fx(Usage)426
+b(of)e Fs(cvbbdpre)i Fx(for)f(the)g(bac)-35 b(kw)g(ard)424
+b(problem)0 25062 y Fw(The)369 b Fs(cvbbdpre)h Fw(mo)31
+b(dule)371 b(is)e(initialized)j(b)-31 b(y)369 b(calling)p
+0 26949 9470 45 v 0 28290 45 1341 v 376 27958 a Fu(CVBBDPrecAllocB)p
+9426 28290 V 0 28334 9470 45 v Black 0 29690 a Fw(Call)p
+Black 4848 w Fu(flag)582 b(=)f(CVBBDPrecAllocB\()r(cvadj)p
+23155 29690 349 45 v 420 w(mem,)g(NlocalB,)i(mudqB,)f(mldqB,)20180
+31018 y(mukeepB,)h(mlkeepB,)f(dqrelyB,)g(glocB,)g(cfnB\);)p
+Black 0 32746 a Fw(Description)p Black 1286 w(The)458
+b(function)h Fu(CVBBDPrecAllocB)h Fw(initializes)g(and)e(allo)31
+b(cates)460 b(memory)e(for)g(the)g Fs(cvbbdpre)6814 34075
+y Fw(preconditioner)370 b(for)g(the)f(bac)-31 b(kw)g(ard)371
+b(problem.)p Black 0 35853 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvadj)p 9789 35853 V 419 w(mem)p Black
+554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f(adjoin)-31 b(t)372 b(memory)e(blo)31
+b(c)-31 b(k)370 b(returned)e(b)-31 b(y)370 b Fu(CVadjMalloc)p
+Fw(.)p Black 6814 37406 a Fu(NlocalB)p Black 1554 w Fw(\()p
+Fu(long)582 b(int)p Fw(\))370 b(lo)31 b(cal)371 b(v)-31
+b(ector)370 b(dimension)g(for)g(the)f(bac)-31 b(kw)g(ard)371
+b(problem.)p Black 6814 38960 a Fu(mudqB)p Black 2716
+w Fw(\()p Fu(long)582 b(int)p Fw(\))528 b(upp)31 b(er)526
+b(half-bandwidth)j(to)f(b)31 b(e)526 b(used)h(in)g(the)g
+(di\256erence-quotien)-31 b(t)12435 40288 y(Jacobian)371
+b(appro)-31 b(ximation.)p Black 6814 41841 a Fu(mldqB)p
+Black 2716 w Fw(\()p Fu(long)582 b(int)p Fw(\))334 b(lo)-31
+b(w)g(er)335 b(half-bandwidth)h(to)e(b)31 b(e)333 b(used)g(in)h(the)f
+(di\256erence-quotien)-31 b(t)336 b(Ja-)12435 43170 y(cobian)370
+b(appro)-31 b(ximation.)p Black 6814 44723 a Fu(mukeepB)p
+Black 1554 w Fw(\()p Fu(long)582 b(int)p Fw(\))315 b(upp)31
+b(er)313 b(half-bandwidth)k(of)d(the)g(retained)h(banded)f(appro)-31
+b(ximate)317 b(Ja-)12435 46051 y(cobian)370 b(blo)31
+b(c)-31 b(k.)p Black 6814 47605 a Fu(mlkeepB)p Black
+1554 w Fw(\()p Fu(long)582 b(int)p Fw(\))350 b(lo)-31
+b(w)g(er)349 b(half-bandwidth)j(of)d(the)g(retained)g(banded)f(appro)
+-31 b(ximate)352 b(Ja-)12435 48933 y(cobian)370 b(blo)31
+b(c)-31 b(k.)p Black 6814 50486 a Fu(dqrelyB)p Black
+1554 w Fw(\()p Fu(realtype)p Fw(\))365 b(the)f(relativ)-31
+b(e)365 b(incremen)-31 b(t)365 b(in)e(comp)31 b(onen)-31
+b(ts)365 b(of)f Fu(yB)f Fw(used)g(in)h(the)f(di\256er-)12435
+51815 y(ence)425 b(quotien)-31 b(t)428 b(appro)-31 b(ximations.)665
+b(The)426 b(default)h(is)e Fu(dqrelyB)p Fw(=)40402 50871
+y Fn(p)p 41324 50871 6369 45 v 944 x Fw(unit)370 b(roundo\256)q(,)12435
+53143 y(whic)-31 b(h)370 b(can)g(b)31 b(e)368 b(sp)31
+b(eci\257ed)369 b(b)-31 b(y)370 b(passing)f Fu(dqrely)p
+Fw(=)309 b(0)p Fl(:)p Fw(0.)p Black 6814 54696 a Fu(glocB)p
+Black 2716 w Fw(\()p Fu(CVLocalFnB)p Fw(\))376 b(the)e
+Fs(C)f Fw(function)i(whic)-31 b(h)375 b(computes)f(the)g(appro)-31
+b(ximation)377 b Fl(g)44903 54862 y Fj(B)45665 54696
+y Fw(\()p Fl(t;)184 b(y)40 b Fw(\))12435 56025 y(to)370
+b(the)f(righ)-31 b(t-hand)371 b(side)e(of)h(the)f(bac)-31
+b(kw)g(ard)371 b(problem.)p Black 6814 57578 a Fu(cfnB)p
+Black 3297 w Fw(\()p Fu(CVCommFnB)p Fw(\))321 b(the)e(optional)i
+Fs(C)e Fw(function)h(whic)-31 b(h)320 b(p)31 b(erforms)318
+b(all)i(in)-31 b(terpro)31 b(cess)318 b(com-)12435 58906
+y(m)-31 b(unication)372 b(required)d(for)g(the)h(computation)i(of)e
+Fl(g)34374 59072 y Fj(B)35135 58906 y Fw(\()p Fl(t;)184
+b(y)40 b Fw(\).)p Black 0 60685 a(Return)369 b(v)-61
+b(alue)p Black 554 w(If)346 b(successful,)351 b Fu(CVBBDPrecAlloc)e
+Fw(stores)d(a)h(p)31 b(oin)-31 b(ter)348 b(to)f(the)g(newly)h(created)f
+Fs(cvbbdpre)g Fw(mem-)6814 62013 y(ory)369 b(blo)31 b(c)-31
+b(k.)494 b(The)369 b(return)g(v)-61 b(alue)369 b Fu(flag)h
+Fw(\(of)g(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p
+Black 6814 63791 a Fu(CV)p 8046 63791 349 45 v 419 w(SUCCESS)p
+Black 2716 w Fw(The)h(call)g(to)g Fu(CVBBDPrecAllocB)h
+Fw(w)-31 b(as)370 b(successful.)p Black 6814 65345 a
+Fu(CV)p 8046 65345 V 419 w(PDATA)p 11370 65345 V 419
+w(NULL)p Black 1135 w Fw(An)247 b(error)f(o)31 b(ccured)247
+b(while)h(trying)g(to)g(create)f(the)g Fs(cvbbdpre)h
+Fw(memory)g(blo)31 b(c)-31 b(k.)p Black 6814 66898 a
+Fu(CV)p 8046 66898 V 419 w(ADJMEM)p 11951 66898 V 419
+w(NULL)p Black 554 w Fw(The)370 b Fu(cvadj)p 20429 66898
+V 419 w(mem)f Fw(argumen)-31 b(t)371 b(w)-31 b(as)370
+b Fu(NULL)p Fw(.)0 68630 y(T)-92 b(o)326 b(sp)31 b(ecify)325
+b(the)h(use)f(of)g(the)h Fs(cvspgmr)e Fw(linear)i(solv)-31
+b(er)326 b(mo)31 b(dule)327 b(with)f(the)g Fs(cvbbdpre)g
+Fw(preconditioner)g(mo)31 b(dule,)0 69958 y(mak)-31 b(e)370
+b(the)g(follo)-31 b(wing)373 b(call:)p 0 71846 7146 45
+v 0 73433 45 1587 v 376 72855 a Fu(CVBBDSpgmrB)p 7101
+73433 V 0 73477 7146 45 v Black 0 74760 a Fw(Call)p Black
+4848 w Fu(flag)582 b(=)f(CVBBDSpgmrB\(cvadj)p 20829 74760
+349 45 v 421 w(mem,)h(pretypeB,)g(maxlB\);)p Black 0
+76539 a Fw(Description)p Black 1286 w(The)464 b(function)i
+Fu(CVBBDSpgmrB)f Fw(links)g(the)f Fs(cvbbdpre)h Fw(data)g(to)g(the)f
+Fs(cvspgmr)g Fw(linear)g(solv)-31 b(er)6814 77867 y(and)369
+b(attac)-31 b(hes)371 b(the)f(latter)g(to)g(the)f Fs(cv)-25
+b(odes)370 b Fw(memory)g(blo)31 b(c)-31 b(k)370 b(for)g(the)f(bac)-31
+b(kw)g(ard)371 b(problem.)p Black Black eop
+%%Page: 121 131
+121 130 bop Black 4000 2701 a Fx(7.4)425 b(Using)g(CV)-35
+b(ODES)426 b(preconditioner)h(mo)35 b(dules)425 b(for)g(the)h(bac)-35
+b(kw)g(ard)423 b(problem)6727 b(121)p 4000 3144 48001
+45 v Black Black 4000 6974 a Fw(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cvadj)p 13789 6974 349 45 v 419 w(mem)p
+Black 554 w Fw(\()p Fu(void)582 b(*)p Fw(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f(adjoin)-31 b(t)372 b(memory)e(blo)31
+b(c)-31 b(k)370 b(returned)e(b)-31 b(y)370 b Fu(CVadjMalloc)p
+Fw(.)p Black 10814 8526 a Fu(pretypeB)p Black 973 w Fw(\()p
+Fu(int)p Fw(\))g(preconditioning)i(t)-31 b(yp)31 b(e.)493
+b(Can)370 b(b)31 b(e)369 b(one)g(of)h Fu(PREC)p 39732
+8526 V 419 w(LEFT)g Fw(or)f Fu(PREC)p 46525 8526 V 419
+w(RIGHT)p Fw(.)p Black 10814 10078 a Fu(maxlB)p Black
+2716 w Fw(\()p Fu(int)p Fw(\))406 b(maxim)-31 b(um)407
+b(dimension)f(of)f(the)g(Krylo)-31 b(v)406 b(subspace)e(to)h(b)31
+b(e)404 b(used.)598 b(P)-31 b(ass)405 b(0)g(to)16435
+11406 y(use)369 b(the)g(default)i(v)-61 b(alue)369 b
+Fu(CVSPGMR)p 30971 11406 V 420 w(MAXL)p Fw(=)308 b(5.)p
+Black 4000 13182 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p
+Black 10814 14957 a Fu(CVSPGMR)p 14951 14957 V 419 w(SUCCESS)p
+Black 1555 w Fw(The)g Fs(cvspgmr)f Fw(initialization)374
+b(w)-31 b(as)370 b(successful.)p Black 10814 16509 a
+Fu(CVSPGMR)p 14951 16509 V 419 w(MEM)p 17113 16509 V
+419 w(NULL)p Black 1136 w Fw(The)460 b Fs(cv)-25 b(odes)461
+b Fw(memory)g(blo)31 b(c)-31 b(k)461 b(for)f(the)h(bac)-31
+b(kw)g(ard)461 b(problem)g(w)-31 b(as)461 b(not)20922
+17838 y(initialized)372 b(through)e(a)f(previous)h(call)g(to)g
+Fu(CVodeCreateB)p Fw(.)p Black 10814 19390 a Fu(CVSPGMR)p
+14951 19390 V 419 w(ILL)p 17113 19390 V 419 w(INPUT)p
+Black 555 w Fw(The)f(preconditioner)h(t)-31 b(yp)31 b(e)370
+b Fu(pretypeB)g Fw(is)f(not)h(v)-61 b(alid.)p Black 10814
+20942 a Fu(CVSPGMR)p 14951 20942 V 419 w(MEM)p 17113
+20942 V 419 w(FAIL)p Black 1136 w Fw(A)369 b(memory)h(allo)31
+b(cation)372 b(request)d(failed.)p Black 10814 22493
+a Fu(CV)p 12046 22493 V 419 w(PDATA)p 15370 22493 V 419
+w(NULL)p Black 2879 w Fw(The)g Fs(cvbbdpre)h Fw(preconditioner)g(has)f
+(not)h(b)31 b(een)369 b(initialized.)p Black 10814 24045
+a Fu(CV)p 12046 24045 V 419 w(ADJMEM)p 15951 24045 V
+419 w(NULL)p Black 2298 w Fw(The)g Fu(cvadj)p 26172 24045
+V 419 w(mem)h Fw(argumen)-31 b(t)370 b(w)-31 b(as)370
+b Fu(NULL)p Fw(.)4000 25776 y(T)-92 b(o)464 b(reinitialize)j(the)d
+Fs(cvbbdpre)h Fw(preconditioner)g(mo)31 b(dule)465 b(for)f(the)h(bac)
+-31 b(kw)g(ard)465 b(problem)g(call)g(the)f(follo)-31
+b(wing)4000 27104 y(function:)p 4000 28985 10052 45 v
+4000 30326 45 1341 v 4376 29993 a Fu(CVBBDPrecReInitB)p
+14007 30326 V 4000 30370 10052 45 v Black 4000 31724
+a Fw(Call)p Black 4848 w Fu(flag)582 b(=)f(CVBBDPrecReInitB\(cvadj)p
+27734 31724 349 45 v 422 w(mem,)g(mudqB,)h(mldqB,)h(dqrelyB,)f(glocB,)g
+(cfnB\);)p Black 4000 33500 a Fw(Description)p Black
+1286 w(The)496 b(function)i Fu(CVBBDPrecReInitB)g Fw(reinitializes)g
+(the)e Fs(cvbbdpre)h Fw(preconditioner)g(for)g(the)10814
+34828 y(bac)-31 b(kw)g(ard)371 b(problem.)p Black 4000
+36604 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(cvadj)p
+13789 36604 V 419 w(mem)p Black 554 w Fw(\()p Fu(void)582
+b(*)p Fw(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(adjoin)-31
+b(t)372 b(memory)e(blo)31 b(c)-31 b(k)370 b(returned)e(b)-31
+b(y)370 b Fu(CVadjMalloc)p Fw(.)p Black 10814 38156 a
+Fu(mudqB)p Black 2716 w Fw(\()p Fu(long)582 b(int)p Fw(\))528
+b(upp)31 b(er)526 b(half-bandwidth)j(to)f(b)31 b(e)526
+b(used)h(in)g(the)g(di\256erence-quotien)-31 b(t)16435
+39484 y(Jacobian)371 b(appro)-31 b(ximation.)p Black
+10814 41036 a Fu(mldqB)p Black 2716 w Fw(\()p Fu(long)582
+b(int)p Fw(\))334 b(lo)-31 b(w)g(er)335 b(half-bandwidth)h(to)e(b)31
+b(e)333 b(used)g(in)h(the)f(di\256erence-quotien)-31
+b(t)336 b(Ja-)16435 42364 y(cobian)370 b(appro)-31 b(ximation.)p
+Black 10814 43916 a Fu(dqrelyB)p Black 1554 w Fw(\()p
+Fu(realtype)p Fw(\))365 b(the)f(relativ)-31 b(e)365 b(incremen)-31
+b(t)365 b(in)e(comp)31 b(onen)-31 b(ts)365 b(of)f Fu(yB)f
+Fw(used)g(in)h(the)f(di\256er-)16435 45245 y(ence)369
+b(quotien)-31 b(t)371 b(appro)-31 b(ximations.)p Black
+10814 46796 a Fu(glocB)p Black 2716 w Fw(\()p Fu(CVLocalFnB)p
+Fw(\))376 b(the)e Fs(C)f Fw(function)i(whic)-31 b(h)375
+b(computes)f(the)g(appro)-31 b(ximation)377 b Fl(g)48903
+46962 y Fj(B)49665 46796 y Fw(\()p Fl(t;)184 b(y)40 b
+Fw(\))16435 48125 y(to)370 b(the)f(righ)-31 b(t-hand)371
+b(side)e(of)h(the)f(bac)-31 b(kw)g(ard)371 b(problem.)p
+Black 10814 49677 a Fu(cfnB)p Black 3297 w Fw(\()p Fu(CVCommFnB)p
+Fw(\))321 b(the)e(optional)i Fs(C)e Fw(function)h(whic)-31
+b(h)320 b(p)31 b(erforms)318 b(all)i(in)-31 b(terpro)31
+b(cess)318 b(com-)16435 51005 y(m)-31 b(unication)372
+b(required)d(for)g(the)h(computation)i(of)e Fl(g)38374
+51171 y Fj(B)39135 51005 y Fw(\()p Fl(t;)184 b(y)40 b
+Fw(\).)p Black 4000 52781 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fu(flag)f
+Fw(\(of)h(t)-31 b(yp)31 b(e)370 b Fu(int)p Fw(\))g(is)f(one)g(of:)p
+Black 10814 54556 a Fu(CV)p 12046 54556 V 419 w(SUCCESS)p
+Black 2716 w Fw(The)h Fs(cvspgmr)e Fw(initialization)374
+b(w)-31 b(as)370 b(successful.)p Black 10814 56108 a
+Fu(CV)p 12046 56108 V 419 w(ADJMEM)p 15951 56108 V 419
+w(NULL)p Black 554 w Fw(The)g Fu(cvadj)p 24429 56108
+V 419 w(mem)f Fw(argumen)-31 b(t)371 b(w)-31 b(as)370
+b Fu(NULL)p Fw(.)4000 57839 y(Note)439 b(that)h(memory)g(allo)31
+b(cated)440 b(b)-31 b(y)439 b Fu(CVBBDPrecAllocB)i Fw(is)d(deallo)31
+b(cated)441 b(b)-31 b(y)438 b(the)h(function)h Fu(CVadjFree)p
+Fw(.)702 b(F)-92 b(or)4000 59167 y(more)369 b(details)i(on)e
+Fs(cvbbdpre)i Fw(see)d Fn(x)p Fw(5.9.2.)4000 62056 y
+Fx(User-supplied)427 b(functions)e(for)g Fs(cvbbdpre)4000
+64104 y Fw(T)-92 b(o)343 b(use)e(the)h Fs(cvbbdpre)h
+Fw(mo)31 b(dule,)349 b(the)343 b(user)e(m)-31 b(ust)342
+b(supply)g(one)h(or)f(t)-31 b(w)g(o)344 b(functions)f(whic)-31
+b(h)343 b(the)f(mo)31 b(dule)343 b(calls)g(to)4000 65432
+y(construct)384 b(the)f(preconditioner:)523 b(a)383 b(required)g
+(function)i Fu(glocB)f Fw(\(of)g(t)-31 b(yp)31 b(e)384
+b Fu(CVLocalFnB)p Fw(\))h(whic)-31 b(h)384 b(appro)-31
+b(ximates)4000 66760 y(the)287 b(righ)-31 b(t-hand)288
+b(side)f(of)g(the)g(bac)-31 b(kw)g(ard)288 b(problem)g(and)f(whic)-31
+b(h)288 b(is)e(computed)i(lo)31 b(cally)-92 b(,)306 b(and)287
+b(an)g(optional)i(function)4000 68089 y Fu(cfnB)333 b
+Fw(\(of)g(t)-31 b(yp)31 b(e)333 b Fu(CVCommFnB)p Fw(\))h(whic)-31
+b(h)333 b(p)31 b(erforms)332 b(all)i(in)-31 b(terpro)31
+b(cess)332 b(comm)-31 b(unication)336 b(necessary)331
+b(to)j(ev)-61 b(aluate)333 b(this)4000 69417 y(appro)-31
+b(ximate)526 b(righ)-31 b(t-hand)525 b(side)e(\(see)h
+Fn(x)p Fw(5.9.2\).)958 b(The)523 b(protot)-31 b(yp)31
+b(es)525 b(for)e(these)h(t)-31 b(w)g(o)525 b(functions)f(are)g(describ)
+31 b(ed)4000 70745 y(b)g(elo)-31 b(w.)p 4000 72626 6565
+45 v 4000 73967 45 1341 v 4376 73635 a Fu(CVLocalFnB)p
+10520 73967 V 4000 74011 6565 45 v Black 4000 75365 a
+Fw(De\257nition)p Black 2034 w Fu(typedef)582 b(void)g
+(\(*CVLocalFnB\)\()r(long)g(int)f(NlocalB,)i(realtype)f(t,)26505
+76694 y(N)p 27156 76694 349 45 v 419 w(Vector)g(y,)f(N)p
+33967 76694 V 419 w(Vector)h(yB,)f(N)p 41359 76694 V
+419 w(Vector)h(gB,)26505 78022 y(void)g(*f)p 30643 78022
+V 418 w(dataB\);)p Black Black eop
+%%Page: 122 132
+122 131 bop Black 0 2701 a Fx(122)19172 b(Using)426 b(CV)-35
+b(ODES)425 b(for)h(Adjoin)-35 b(t)425 b(Sensitivit)-35
+b(y)423 b(Analysis)p 0 3144 48001 45 v Black Black 0
+6974 a Fw(Purp)31 b(ose)p Black 2884 w(This)370 b(function)g(loads)g
+(the)g(v)-31 b(ector)370 b Fu(gB)f Fw(as)g(a)g(function)i(of)f
+Fu(t)p Fw(,)f Fu(y)p Fw(,)h(and)f Fu(yB)p Fw(.)p Black
+0 8745 a(Argumen)-31 b(ts)p Black Black 1517 w Fu(NlocalB)p
+Black 554 w Fw(is)370 b(the)f(lo)31 b(cal)371 b(v)-31
+b(ector)370 b(length)g(for)f(the)h(bac)-31 b(kw)g(ard)370
+b(problem.)p Black 6814 10295 a Fu(t)p Black 4040 w Fw(is)g(the)f(v)-61
+b(alue)370 b(of)f(the)h(indep)31 b(enden)-31 b(t)370
+b(v)-61 b(ariable.)p Black 6814 11844 a Fu(y)p Black
+4040 w Fw(is)370 b(the)f(curren)-31 b(t)369 b(v)-61 b(alue)369
+b(of)h(the)g(forw)-31 b(ard)370 b(solution)h(v)-31 b(ector.)p
+Black 6814 13394 a Fu(yB)p Black 3459 w Fw(is)370 b(the)f(curren)-31
+b(t)369 b(v)-61 b(alue)369 b(of)h(the)g(dep)31 b(enden)-31
+b(t)369 b(v)-61 b(ariable)370 b(v)-31 b(ector.)p Black
+6814 14944 a Fu(gB)p Black 3459 w Fw(is)370 b(the)f(output)h(v)-31
+b(ector.)p Black 6814 16494 a Fu(f)p 7465 16494 349 45
+v 419 w(dataB)p Black 716 w Fw(is)494 b(a)f(p)31 b(oin)-31
+b(ter)494 b(to)h(user)d(data)i(-)g(the)f(same)h(as)f(the)h
+Fu(f)p 34208 16494 V 418 w(dataB)g Fw(parameter)g(passed)f(to)11435
+17822 y Fu(CVodeSetFdataB)p Fw(.)p Black 0 19593 a(Return)369
+b(v)-61 b(alue)p Black 554 w(A)369 b Fu(CVLocalFnB)i
+Fw(function)f(t)-31 b(yp)31 b(e)370 b(do)31 b(es)369
+b(not)h(ha)-31 b(v)g(e)370 b(a)f(return)g(v)-61 b(alue.)p
+Black 0 21364 a(Notes)p Black 4072 w(This)347 b(routine)g(assumes)g
+(that)g(all)h(in)-31 b(terpro)31 b(cess)347 b(comm)-31
+b(unication)350 b(of)d(data)h(needed)e(to)i(calculate)6814
+22693 y Fu(gB)369 b Fw(has)g(already)i(b)31 b(een)368
+b(done,)i(and)g(this)f(data)h(is)g(accessible)f(within)i
+Fu(f)p 36827 22693 V 419 w(dataB)p Fw(.)p 0 24961 5984
+45 v 0 26302 45 1341 v 376 25970 a Fu(CVCommFnB)p 5939
+26302 V 0 26346 5984 45 v Black 0 27698 a Fw(De\257nition)p
+Black 2034 w Fu(typedef)582 b(void)g(\(*CVCommFnB\)\()r(long)g(int)f
+(NlocalB,)i(realtype)f(t,)21924 29027 y(N)p 22575 29027
+349 45 v 418 w(Vector)g(y,)g(N)p 29386 29027 V 418 w(Vector)h(yB,)e
+(void)h(*f)p 40265 29027 V 419 w(dataB\);)p Black 0 30747
+a Fw(Purp)31 b(ose)p Black 2884 w(This)325 b(function)h(p)31
+b(erforms)323 b(all)j(in)-31 b(terpro)31 b(cess)324 b(comm)-31
+b(unications)328 b(necessary)323 b(for)i(the)g(execution)g(of)6814
+32076 y(the)369 b Fu(glocB)h Fw(function)h(ab)31 b(o)-31
+b(v)g(e,)371 b(using)e(the)h(input)g(v)-31 b(ectors)369
+b Fu(y)g Fw(and)h Fu(yB)p Fw(.)p Black 0 33847 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(NlocalB)p Black 554 w Fw(is)370
+b(the)f(lo)31 b(cal)371 b(v)-31 b(ector)370 b(length.)p
+Black 6814 35397 a Fu(t)p Black 4040 w Fw(is)g(the)f(v)-61
+b(alue)370 b(of)f(the)h(indep)31 b(enden)-31 b(t)370
+b(v)-61 b(ariable.)p Black 6814 36946 a Fu(y)p Black
+4040 w Fw(is)370 b(the)f(curren)-31 b(t)369 b(v)-61 b(alue)369
+b(of)h(the)g(forw)-31 b(ard)370 b(solution)h(v)-31 b(ector.)p
+Black 6814 38496 a Fu(yB)p Black 3459 w Fw(is)370 b(the)f(curren)-31
+b(t)369 b(v)-61 b(alue)369 b(of)h(the)g(dep)31 b(enden)-31
+b(t)369 b(v)-61 b(ariable)370 b(v)-31 b(ector.)p Black
+6814 40046 a Fu(f)p 7465 40046 V 419 w(dataB)p Black
+716 w Fw(is)494 b(a)f(p)31 b(oin)-31 b(ter)494 b(to)h(user)d(data)i(-)g
+(the)f(same)h(as)f(the)h Fu(f)p 34208 40046 V 418 w(dataB)g
+Fw(parameter)g(passed)f(to)11435 41374 y Fu(CVodeSetFdataB)p
+Fw(.)p Black 0 43145 a(Return)369 b(v)-61 b(alue)p Black
+554 w(A)369 b Fu(CVCommFnB)i Fw(function)f(t)-31 b(yp)31
+b(e)370 b(do)31 b(es)369 b(not)h(ha)-31 b(v)g(e)370 b(a)f(return)g(v)
+-61 b(alue.)p Black 0 44917 a(Notes)p Black 4072 w(The)332
+b Fu(cfnB)g Fw(function)i(is)d(exp)31 b(ected)333 b(to)f(sa)-31
+b(v)g(e)333 b(comm)-31 b(unicated)334 b(data)f(in)g(space)e(de\257ned)h
+(within)i(the)6814 46245 y(structure)369 b Fu(f)p 12213
+46245 V 418 w(dataB)p Fw(.)6814 48016 y(Eac)-31 b(h)345
+b(call)g(to)f(the)h Fu(cfnB)f Fw(function)h(is)f(preceded)f(b)-31
+b(y)344 b(a)g(call)h(to)g(the)f(function)i(that)f(ev)-61
+b(aluates)345 b(the)6814 49344 y(righ)-31 b(t-hand)249
+b(side)e(of)g(the)h(bac)-31 b(kw)g(ard)249 b(problem)f(with)g(the)g
+(same)f Fu(t)p Fw(,)272 b Fu(y)p Fw(,)g(and)248 b Fu(yB)f
+Fw(argumen)-31 b(ts.)453 b(If)247 b(there)6814 50673
+y(is)338 b(no)h(additional)i(comm)-31 b(unication)342
+b(needed,)j(then)338 b(pass)g Fu(cfnB)h Fw(=)f Fu(NULL)g
+Fw(to)h Fu(CVBBDPrecAllocB)p Fw(.)p Black Black eop
+%%Page: 123 133
+123 132 bop Black Black 4000 15287 a Ft(Chapter)861 b(8)4000
+20832 y Fv(Description)1033 b(of)g(the)g(NVECTOR)4000
+24153 y(mo)86 b(dule)4000 29920 y Fw(The)288 b Fs(sundials)f
+Fw(solv)-31 b(ers)288 b(are)f(written)i(in)f(a)g(data-indep)31
+b(enden)-31 b(t)290 b(manner.)466 b(They)288 b(all)h(op)31
+b(erate)288 b(on)g(generic)g(v)-31 b(ectors)4000 31248
+y(\(of)356 b(t)-31 b(yp)31 b(e)355 b Fu(N)p 8804 31248
+349 45 v 419 w(Vector)p Fw(\))h(through)g(a)f(set)g(of)g(op)31
+b(erations)356 b(de\257ned)f(b)-31 b(y)355 b(the)g(particular)h
+Fs(nvector)f Fw(implemen)-31 b(tation.)4000 32576 y(Users)498
+b(can)i(pro)-31 b(vide)500 b(their)f(o)-31 b(wn)501 b(sp)31
+b(eci\257c)498 b(implemen)-31 b(tation)504 b(of)c(the)f
+Fs(nvector)h Fw(mo)31 b(dule)500 b(or)f(use)g(one)g(of)h(t)-31
+b(w)g(o)4000 33905 y(pro)g(vided)370 b(within)h Fs(sundials)p
+Fw(,)e(a)g(serial)h(and)f(an)h(MPI)e(parallel)j(implemen)-31
+b(tations.)5660 35244 y(The)469 b(generic)h Fu(N)p 12541
+35244 V 418 w(Vector)g Fw(t)-31 b(yp)31 b(e)469 b(is)g(a)g(p)31
+b(oin)-31 b(ter)469 b(to)h(a)f(structure)f(that)i(has)f(an)g(implemen)
+-31 b(tation-dep)31 b(enden)-31 b(t)4000 36572 y Fq(c)-57
+b(ontent)350 b Fw(\257eld)f(con)-31 b(taining)352 b(the)d(description)h
+(and)g(actual)h(data)f(of)f(the)h(v)-31 b(ector,)354
+b(and)c(an)f Fq(ops)f Fw(\257eld)h(p)31 b(oin)-31 b(ting)352
+b(to)e(a)4000 37900 y(structure)369 b(with)h(generic)f(v)-31
+b(ector)370 b(op)31 b(erations.)494 b(The)370 b(t)-31
+b(yp)31 b(e)369 b Fu(N)p 29585 37900 V 419 w(Vector)h
+Fw(is)f(de\257ned)g(as)p Black Black 4000 40156 a Fu(typedef)582
+b(struct)g(_generic_N_Vector)i(*N_Vector;)4000 42813
+y(struct)e(_generic_N_Vector)i({)6325 44141 y(void)d(*content;)6325
+45470 y(struct)h(_generic_N_Vector_Ops)i(*ops;)4000 46798
+y(};)4000 49044 y Fw(The)p 6424 49044 V 867 w Fu(generic)p
+10910 49044 V 419 w(N)p 11910 49044 V 419 w(Vector)p
+15815 49044 V 419 w(Ops)449 b Fw(structure)e(is)h(essen)-31
+b(tially)451 b(a)d(list)h(of)g(p)31 b(oin)-31 b(ters)448
+b(to)h(the)g(v)-61 b(arious)448 b(actual)i(v)-31 b(ector)4000
+50372 y(op)31 b(erations,)371 b(and)e(is)g(de\257ned)g(as)p
+Black Black 4000 52628 a Fu(struct)582 b(_generic_N_Vector_Ops)i({)5162
+53957 y(N_Vector)2326 b(\(*nvclone\)\(N_Vector\);)5162
+55285 y(N_Vector)g(\(*nvcloneempty\)\(N_Vector\);)5162
+56613 y(void)4650 b(\(*nvdestroy\)\(N_Vector\);)5162
+57942 y(void)g(\(*nvspace\)\(N_Vector,)584 b(long)e(int)g(*,)f(long)h
+(int)f(*\);)5162 59270 y(realtype*)1745 b
+(\(*nvgetarraypointer\)\(N_Vector\);)5162 60598 y(void)4650
+b(\(*nvsetarraypointer\)\(realtype)586 b(*,)581 b(N_Vector\);)5162
+61927 y(void)4650 b(\(*nvlinearsum\)\(realtype,)585 b(N_Vector,)d
+(realtype,)h(N_Vector,)f(N_Vector\);)5162 63255 y(void)4650
+b(\(*nvconst\)\(realtype,)584 b(N_Vector\);)5162 64583
+y(void)4650 b(\(*nvprod\)\(N_Vector,)584 b(N_Vector,)f(N_Vector\);)5162
+65912 y(void)4650 b(\(*nvdiv\)\(N_Vector,)584 b(N_Vector,)e
+(N_Vector\);)5162 67240 y(void)4650 b(\(*nvscale\)\(realtype,)584
+b(N_Vector,)f(N_Vector\);)5162 68568 y(void)4650 b
+(\(*nvabs\)\(N_Vector,)584 b(N_Vector\);)5162 69897 y(void)4650
+b(\(*nvinv\)\(N_Vector,)584 b(N_Vector\);)5162 71225
+y(void)4650 b(\(*nvaddconst\)\(N_Vector,)585 b(realtype,)d(N_Vector\);)
+5162 72553 y(realtype)2326 b(\(*nvdotprod\)\(N_Vector,)585
+b(N_Vector\);)5162 73882 y(realtype)2326 b(\(*nvmaxnorm\)\(N_Vector\);)
+5162 75210 y(realtype)g(\(*nvwrmsnorm\)\(N_Vector,)585
+b(N_Vector\);)5162 76539 y(realtype)2326 b
+(\(*nvwrmsnormmask\)\(N_Vector,)585 b(N_Vector,)e(N_Vector\);)5162
+77867 y(realtype)2326 b(\(*nvmin\)\(N_Vector\);)p Black
+Black eop
+%%Page: 124 134
+124 133 bop Black 0 2701 a Fx(124)24583 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black 1162 6974 a Fu(realtype)2326 b(\(*nvwl2norm\)\(N_Vector,)585
+b(N_Vector\);)1162 8302 y(realtype)2326 b(\(*nvl1norm\)\(N_Vector\);)
+1162 9631 y(void)4650 b(\(*nvcompare\)\(realtype,)585
+b(N_Vector,)d(N_Vector\);)1162 10959 y(booleantype)h
+(\(*nvinvtest\)\(N_Vector,)i(N_Vector\);)1162 12287 y(booleantype)e
+(\(*nvconstrmask\)\(N_Vector,)i(N_Vector,)d(N_Vector\);)1162
+13616 y(realtype)2326 b(\(*nvminquotient\)\(N_Vector,)585
+b(N_Vector\);)0 14944 y(};)1660 17158 y Fw(The)569 b(generic)f
+Fs(nvector)g Fw(mo)31 b(dule)569 b(also)f(de\257nes)g(and)g(implemen)
+-31 b(ts)570 b(the)e(v)-31 b(ector)569 b(op)31 b(erations)569
+b(acting)h(on)0 18486 y Fu(N)p 651 18486 349 45 v 419
+w(Vector)p Fw(.)473 b(These)310 b(routines)h(are)f(nothing)i(but)e
+(wrapp)31 b(ers)310 b(for)g(the)g(v)-31 b(ector)311 b(op)31
+b(erations)312 b(de\257ned)e(b)-31 b(y)310 b(a)h(particular)0
+19815 y Fs(nvector)400 b Fw(implemen)-31 b(tation,)412
+b(whic)-31 b(h)401 b(are)f(accessed)f(through)i(the)f
+Fq(ops)f Fw(\257eld)h(of)h(the)f Fu(N)p 37234 19815 V
+418 w(Vector)h Fw(structure.)584 b(T)-92 b(o)0 21143
+y(illustrate)301 b(this)f(p)31 b(oin)-31 b(t)301 b(w)-31
+b(e)299 b(sho)-31 b(w)300 b(b)31 b(elo)-31 b(w)301 b(the)e(implemen)-31
+b(tation)304 b(of)c(a)g(t)-31 b(ypical)301 b(v)-31 b(ector)300
+b(op)31 b(eration)301 b(from)f(the)g(generic)0 22471
+y Fs(nvector)369 b Fw(mo)31 b(dule,)371 b(namely)f Fu(N)p
+13730 22471 V 419 w(VScale)p Fw(,)g(whic)-31 b(h)370
+b(p)31 b(erforms)369 b(the)h(scaling)g(of)g(a)f(v)-31
+b(ector)370 b Fu(x)f Fw(b)-31 b(y)370 b(a)f(scalar)h
+Fu(c)p Fw(:)p Black Black 0 24685 a Fu(void)582 b(N_VScale\(realtype)h
+(c,)f(N_Vector)g(x,)g(N_Vector)g(z\))0 26014 y({)1743
+27342 y(z->ops->nvscale\(c,)i(x,)e(z\);)0 28670 y(})0
+30884 y Fw(T)-92 b(able)370 b(8.1)g(con)-31 b(tains)370
+b(a)f(complete)h(list)g(of)f(all)h(v)-31 b(ector)370
+b(op)31 b(erations)369 b(de\257ned)g(b)-31 b(y)369 b(the)g(generic)g
+Fs(nvector)f Fw(mo)31 b(dule.)1660 32213 y(Finally)-92
+b(,)339 b(note)330 b(that)g(the)f(generic)g Fs(nvector)g
+Fw(mo)31 b(dule)330 b(de\257nes)f(the)g(functions)h Fu(N)p
+35660 32213 V 418 w(VCloneVectorArray)i Fw(and)0 33541
+y Fu(N)p 651 33541 V 419 w(VCloneEmptyVectorArray)p Fw(.)480
+b(Both)324 b(functions)g(create)f(\(b)-31 b(y)323 b(cloning\))i(an)e
+(arra)-31 b(y)324 b(of)f Fu(count)g Fw(v)-61 b(ariables)324
+b(of)f(t)-31 b(yp)31 b(e)0 34869 y Fu(N)p 651 34869 V
+419 w(Vector)p Fw(,)370 b(eac)-31 b(h)370 b(of)f(the)h(same)f(t)-31
+b(yp)31 b(e)370 b(as)f(an)h(existing)g Fu(N)p 23728 34869
+V 419 w(Vector)p Fw(.)493 b(Their)370 b(protot)-31 b(yp)31
+b(es)370 b(are)p Black Black 0 37083 a Fu(N_Vector)582
+b(*N_VCloneVectorArray\(int)j(count,)d(N_Vector)g(w\);)0
+38412 y(N_Vector)g(*N_VCloneEmptyVectorArray\(int)k(count,)c(N_Vector)g
+(w\);)0 40625 y Fw(and)361 b(their)f(de\257nitions)i(are)e(based)g(on)h
+(the)f(implemen)-31 b(tation-sp)31 b(eci\257c)364 b Fu(N)p
+30861 40625 V 419 w(VClone)d Fw(and)f Fu(N)p 37851 40625
+V 419 w(VCloneEmpty)i Fw(op)31 b(era-)0 41954 y(tions,)272
+b(resp)31 b(ectiv)-31 b(ely)-92 b(.)452 b(An)247 b(arra)-31
+b(y)246 b(of)h(v)-61 b(ariables)247 b(of)f(t)-31 b(yp)31
+b(e)247 b Fu(N)p 23481 41954 V 419 w(Vector)g Fw(can)f(b)31
+b(e)246 b(destro)-31 b(y)g(ed)246 b(b)-31 b(y)247 b(calling)h
+Fu(N)p 41137 41954 V 419 w(VDestroyVectorArray)p Fw(,)0
+43282 y(whose)370 b(protot)-31 b(yp)31 b(e)370 b(is)p
+Black Black 0 45496 a Fu(void)582 b(N_VDestroyVectorArray\(N_Vector)j
+(*vs,)d(int)g(count\);)0 47710 y Fw(and)369 b(whose)h(de\257nition)h
+(is)e(based)g(on)g(the)h(implemen)-31 b(tation-sp)31
+b(eci\257c)373 b Fu(N)p 30379 47710 V 419 w(VDestroy)d
+Fw(op)31 b(eration.)1660 49038 y(A)370 b(particular)g(implemen)-31
+b(tation)374 b(of)369 b(the)h Fs(nvector)f Fw(mo)31 b(dule)370
+b(m)-31 b(ust:)p Black 1660 51252 a Fn(\262)p Black 554
+w Fw(Sp)31 b(ecify)370 b(the)f Fq(c)-57 b(ontent)370
+b Fw(\257eld)g(of)f Fu(N)p 16704 51252 V 419 w(Vector)p
+Fw(.)p Black 1660 53466 a Fn(\262)p Black 554 w Fw(De\257ne)455
+b(and)h(implemen)-31 b(t)459 b(the)d(v)-31 b(ector)456
+b(op)31 b(erations.)754 b(Note)456 b(that)h(the)f(names)g(of)h(these)e
+(routines)h(should)2767 54795 y(b)31 b(e)404 b(unique)h(to)h(that)f
+(implemen)-31 b(tation)409 b(in)c(order)f(to)h(p)31 b(ermit)405
+b(using)g(more)g(than)g(one)f Fs(nvector)h Fw(mo)31 b(dule)2767
+56123 y(\(eac)-31 b(h)371 b(with)f(di\256eren)-31 b(t)369
+b Fu(N)p 13230 56123 V 419 w(Vector)h Fw(in)-31 b(ternal)371
+b(data)f(represen)-31 b(tations\))370 b(in)g(the)f(same)h(co)31
+b(de.)p Black 1660 58337 a Fn(\262)p Black 554 w Fw(De\257ne)389
+b(and)h(implemen)-31 b(t)392 b(user-callable)f(constructor)f(and)f
+(destructor)h(routines)g(to)g(create)g(and)f(free)h(an)2767
+59665 y Fu(N)p 3418 59665 V 419 w(Vector)370 b Fw(with)g(the)g(new)f
+Fq(c)-57 b(ontent)370 b Fw(\257eld)f(and)h(with)g Fq(ops)e
+Fw(p)31 b(oin)-31 b(ting)372 b(to)e(the)f(new)g(v)-31
+b(ector)370 b(op)31 b(erations.)p Black 1660 61879 a
+Fn(\262)p Black 554 w Fw(Optionally)-92 b(,)337 b(de\257ne)325
+b(and)g(implemen)-31 b(t)327 b(additional)h(user-callable)e(routines)g
+(acting)g(on)f(the)g(newly)h(de\257ned)2767 63207 y Fu(N)p
+3418 63207 V 419 w(Vector)370 b Fw(\(e.g.,)h(a)f(routine)g(to)g(prin)
+-31 b(t)369 b(the)h(con)-31 b(ten)g(t)371 b(for)e(debugging)i(purp)31
+b(oses\).)p Black 1660 65421 a Fn(\262)p Black 554 w
+Fw(Optionally)-92 b(,)412 b(pro)-31 b(vide)401 b(accessor)f(macros)h
+(as)f(needed)g(for)g(that)i(particular)g(implemen)-31
+b(tation)404 b(to)e(b)31 b(e)399 b(used)2767 66750 y(to)370
+b(access)f(di\256eren)-31 b(t)369 b(parts)h(in)f(the)g
+Fq(c)-57 b(ontent)370 b Fw(\257eld)g(of)f(the)h(newly)g(de\257ned)f
+Fu(N)p 34871 66750 V 418 w(Vector)p Fw(.)p Black Black
+eop
+%%Page: 125 135
+125 134 bop Black 50091 2701 a Fx(125)p 4000 3144 48001
+45 v Black Black 15299 6974 a Fw(T)-92 b(able)370 b(8.1:)494
+b(Description)370 b(of)g(the)f(NVECTOR)i(op)31 b(erations)p
+Black 4000 8451 46657 45 v 3978 9779 45 1329 v 4664 9381
+a Fx(Name)p 15604 9779 V 8367 w(Usage)426 b(and)f(Description)p
+50635 9779 V 4000 9824 46657 45 v 4000 10045 V 3978 11373
+45 1329 v 15604 11373 V 50635 11373 V 3978 12702 V 4664
+12303 a Fu(N)p 5315 12303 349 45 v 419 w(VClone)p 15604
+12702 45 1329 v 7140 w(v)582 b(=)f(N)p 19266 12303 349
+45 v 419 w(VClone\(w\);)p 50635 12702 45 1329 v 3978
+16687 45 3986 v 15604 16687 V 16290 13632 a Fw(Creates)382
+b(a)g(new)g Fu(N)p 24183 13632 349 45 v 419 w(Vector)g
+Fw(of)g(the)g(same)g(t)-31 b(yp)31 b(e)382 b(as)f(an)h(existing)h(v)-31
+b(ector)383 b Fu(w)e Fw(and)16290 14960 y(sets)478 b(the)g
+Fq(ops)f Fw(\257eld.)819 b(It)478 b(do)31 b(es)478 b(not)h(cop)-31
+b(y)479 b(the)f(v)-31 b(ector,)506 b(but)478 b(rather)g(allo)31
+b(cates)16290 16288 y(storage)371 b(for)e(the)g(new)h(v)-31
+b(ector.)p 50635 16687 45 3986 v 3978 18015 45 1329 v
+15604 18015 V 50635 18015 V 3978 19344 V 4664 18945 a
+Fu(N)p 5315 18945 349 45 v 419 w(VCloneEmpty)p 15604
+19344 45 1329 v 4235 w(v)582 b(=)f(N)p 19266 18945 349
+45 v 419 w(VCloneEmpty\(w\);)p 50635 19344 45 1329 v
+3978 22000 45 2657 v 15604 22000 V 16290 20273 a Fw(Creates)382
+b(a)g(new)g Fu(N)p 24183 20273 349 45 v 419 w(Vector)g
+Fw(of)g(the)g(same)g(t)-31 b(yp)31 b(e)382 b(as)f(an)h(existing)h(v)-31
+b(ector)383 b Fu(w)e Fw(and)16290 21602 y(sets)369 b(the)h
+Fq(ops)e Fw(\257eld.)493 b(It)369 b(do)31 b(es)369 b(not)h(allo)31
+b(cate)371 b(storage)f(for)g(the)f(data)h(arra)-31 b(y)-92
+b(.)p 50635 22000 45 2657 v 3978 23329 45 1329 v 15604
+23329 V 50635 23329 V 3978 24657 V 4664 24258 a Fu(N)p
+5315 24258 349 45 v 419 w(VDestroy)p 15604 24657 45 1329
+v 5978 w(N)p 16941 24258 349 45 v 419 w(VDestroy\(v\);)p
+50635 24657 45 1329 v 3978 27314 45 2657 v 15604 27314
+V 16290 25587 a Fw(Destro)-31 b(ys)448 b(the)f Fu(N)p
+23555 25587 349 45 v 419 w(Vector)h(v)f Fw(and)h(frees)e(memory)j(allo)
+31 b(cated)450 b(for)d(its)h(in)-31 b(ternal)16290 26915
+y(data.)p 50635 27314 45 2657 v 3978 28642 45 1329 v
+15604 28642 V 50635 28642 V 3978 29970 V 4664 29572 a
+Fu(N)p 5315 29572 349 45 v 419 w(VSpace)p 15604 29970
+45 1329 v 7140 w(N)p 16941 29572 349 45 v 419 w(VSpace\(nvSpec,)583
+b(&lrw,)f(&liw\);)p 50635 29970 45 1329 v 3978 32627
+45 2657 v 15604 32627 V 16290 30900 a Fw(Returns)275
+b(storage)i(requiremen)-31 b(ts)276 b(for)f(one)h Fu(N)p
+34818 30900 349 45 v 419 w(Vector)p Fw(.)462 b Fu(lrw)276
+b Fw(con)-31 b(tains)277 b(the)f(n)-31 b(um-)16290 32229
+y(b)31 b(er)369 b(of)g(realt)-31 b(yp)31 b(e)371 b(w)-31
+b(ords)369 b(and)g Fu(liw)h Fw(con)-31 b(tains)371 b(the)e(n)-31
+b(um)g(b)31 b(er)369 b(of)h(in)-31 b(teger)370 b(w)-31
+b(ords.)p 50635 32627 45 2657 v 3978 33955 45 1329 v
+15604 33955 V 50635 33955 V 3978 35284 V 4664 34885 a
+Fu(N)p 5315 34885 349 45 v 419 w(VGetArrayPointer)p 15604
+35284 45 1329 v 1330 w(vdata)582 b(=)g(N)p 21591 34885
+349 45 v 418 w(VGetArrayPointer\(v\);)p 50635 35284 45
+1329 v 3978 41925 45 6642 v 15604 41925 V 16290 36214
+a Fw(Returns)290 b(a)g(p)31 b(oin)-31 b(ter)291 b(to)g(a)f
+Fu(realtype)h Fw(arra)-31 b(y)291 b(from)f(the)g Fu(N)p
+39887 36214 349 45 v 419 w(Vector)h(v)p Fw(.)466 b(Note)291
+b(that)16290 37542 y(this)383 b(assumes)f(that)h(the)g(in)-31
+b(ternal)383 b(data)h(in)e Fu(N)p 35663 37542 V 418 w(Vector)h
+Fw(is)f(a)h(con)-31 b(tiguous)384 b(arra)-31 b(y)16290
+38870 y(of)352 b Fu(realtype)p Fw(.)487 b(This)351 b(routine)g(is)g
+(only)g(used)f(in)h(the)g(solv)-31 b(er-sp)31 b(eci\257c)350
+b(in)-31 b(terfaces)16290 40199 y(to)350 b(the)f(dense)f(and)i(banded)f
+(linear)g(solv)-31 b(ers,)354 b(as)348 b(w)-31 b(ell)351
+b(as)e(the)g(in)-31 b(terfaces)349 b(to)h(the)16290 41527
+y(banded)370 b(preconditioners)g(pro)-31 b(vided)370
+b(with)g Fs(sundials)p Fw(.)p 50635 41925 45 6642 v 3978
+43254 45 1329 v 15604 43254 V 50635 43254 V 3978 44582
+V 4664 44184 a Fu(N)p 5315 44184 349 45 v 419 w(VSetArrayPointer)p
+15604 44582 45 1329 v 1330 w(N)p 16941 44184 349 45 v
+419 w(VSetArrayPointer\(vdata,)585 b(v\);)p 50635 44582
+45 1329 v 3978 49896 45 5314 v 15604 49896 V 16290 45512
+a Fw(Ov)-31 b(erwrites)419 b(the)e(data)i(in)f(an)g Fu(N)p
+30049 45512 349 45 v 419 w(Vector)g Fw(with)h(a)f(giv)-31
+b(en)419 b(arra)-31 b(y)418 b(of)g Fu(realtype)p Fw(.)16290
+46840 y(Note)460 b(that)h(this)e(assumes)g(that)h(the)f(in)-31
+b(ternal)460 b(data)h(in)e Fu(N)p 41454 46840 V 418 w(Vector)h
+Fw(is)f(a)g(con-)16290 48169 y(tiguous)374 b(arra)-31
+b(y)373 b(of)g Fu(realtype)p Fw(.)504 b(This)373 b(routine)h(is)e(only)
+i(used)e(in)h(the)f(in)-31 b(terfaces)16290 49497 y(to)370
+b(the)g(dense)e(linear)i(solv)-31 b(er.)p 50635 49896
+45 5314 v 3978 51224 45 1329 v 15604 51224 V 50635 51224
+V 3978 52552 V 4664 52154 a Fu(N)p 5315 52154 349 45
+v 419 w(VLinearSum)p 15604 52552 45 1329 v 4816 w(N)p
+16941 52154 349 45 v 419 w(VLinearSum\(a,)583 b(x,)f(b,)f(y,)g(z\);)p
+50635 52552 45 1329 v 3978 55209 45 2657 v 15604 55209
+V 16290 53482 a Fw(P)-31 b(erforms)397 b(the)f(op)31
+b(eration)398 b Fl(z)j Fw(=)352 b Fl(ax)264 b Fw(+)g
+Fl(by)40 b Fw(,)403 b(where)396 b Fl(a)g Fw(and)g Fl(b)g
+Fw(are)g(scalars)g(and)h Fl(x)16290 54811 y Fw(and)370
+b Fl(y)408 b Fw(are)369 b(of)h(t)-31 b(yp)31 b(e)370
+b Fu(N)p 25645 54811 349 45 v 418 w(Vector)p Fw(:)494
+b Fl(z)30795 54977 y Fj(i)31470 54811 y Fw(=)308 b Fl(ax)33857
+54977 y Fj(i)34471 54811 y Fw(+)246 b Fl(by)36596 54977
+y Fj(i)36965 54811 y Fl(;)430 b(i)308 b Fw(=)g(0)p Fl(;)184
+b(:)g(:)g(:)k(;)c(n)248 b Fn(\241)e Fw(1.)p 50635 55209
+45 2657 v 3978 56537 45 1329 v 15604 56537 V 50635 56537
+V 3978 57866 V 4664 57467 a Fu(N)p 5315 57467 349 45
+v 419 w(VConst)p 15604 57866 45 1329 v 7140 w(N)p 16941
+57467 349 45 v 419 w(VConst\(c,)583 b(z\);)p 50635 57866
+45 1329 v 3978 59194 V 15604 59194 V 16290 58796 a Fw(Sets)370
+b(all)g(comp)31 b(onen)-31 b(ts)370 b(of)g(the)g Fu(N)p
+30084 58796 349 45 v 418 w(Vector)g(z)f Fw(to)h Fu(c)p
+Fw(:)493 b Fl(z)38487 58962 y Fj(i)39163 58796 y Fw(=)307
+b Fl(c;)431 b(i)308 b Fw(=)f(0)p Fl(;)184 b(:)g(:)g(:)189
+b(;)184 b(n)247 b Fn(\241)f Fw(1.)p 50635 59194 45 1329
+v 3978 60522 V 15604 60522 V 50635 60522 V 3978 61851
+V 4664 61452 a Fu(N)p 5315 61452 349 45 v 419 w(VProd)p
+15604 61851 45 1329 v 7721 w(N)p 16941 61452 349 45 v
+419 w(VProd\(x,)582 b(y,)g(z\);)p 50635 61851 45 1329
+v 3978 64507 45 2657 v 15604 64507 V 16290 62781 a Fw(Sets)280
+b(the)f Fu(N)p 21011 62781 349 45 v 419 w(Vector)h(z)f
+Fw(to)h(b)31 b(e)279 b(the)g(comp)31 b(onen)-31 b(t-wise)282
+b(pro)31 b(duct)279 b(of)h(the)f Fu(N)p 46157 62781 V
+419 w(Vector)16290 64109 y Fw(inputs)370 b Fu(x)f Fw(and)h
+Fu(y)p Fw(:)492 b Fl(z)24677 64275 y Fj(i)25353 64109
+y Fw(=)307 b Fl(x)27154 64275 y Fj(i)27523 64109 y Fl(y)28066
+64275 y Fj(i)28434 64109 y Fl(;)431 b(i)308 b Fw(=)f(0)p
+Fl(;)184 b(:)g(:)g(:)189 b(;)184 b(n)247 b Fn(\241)f
+Fw(1.)p 50635 64507 45 2657 v 3978 65836 45 1329 v 15604
+65836 V 50635 65836 V 3978 67164 V 4664 66766 a Fu(N)p
+5315 66766 349 45 v 419 w(VDiv)p 15604 67164 45 1329
+v 8302 w(N)p 16941 66766 349 45 v 419 w(VDiv\(x,)582
+b(y,)g(z\);)p 50635 67164 45 1329 v 3978 72478 45 5314
+v 15604 72478 V 16290 68094 a Fw(Sets)417 b(the)f Fu(N)p
+21285 68094 349 45 v 419 w(Vector)h(z)f Fw(to)h(b)31
+b(e)415 b(the)i(comp)31 b(onen)-31 b(t-wise)418 b(ratio)g(of)f(the)f
+Fu(N)p 46157 68094 V 419 w(Vector)16290 69422 y Fw(inputs)350
+b Fu(x)f Fw(and)g Fu(y)p Fw(:)483 b Fl(z)24607 69588
+y Fj(i)25282 69422 y Fw(=)308 b Fl(x)27084 69588 y Fj(i)27452
+69422 y Fl(=y)28548 69588 y Fj(i)28917 69422 y Fl(;)390
+b(i)308 b Fw(=)g(0)p Fl(;)184 b(:)g(:)g(:)k(;)c(n)207
+b Fn(\241)f Fw(1.)486 b(The)349 b Fl(y)40566 69588 y
+Fj(i)41283 69422 y Fw(ma)-31 b(y)351 b(not)e(b)31 b(e)349
+b(tested)16290 70751 y(for)393 b(0)h(v)-61 b(alues.)564
+b(It)392 b(should)i(only)g(b)31 b(e)392 b(called)i(with)g(an)f
+Fu(x)g Fw(that)h(is)f(guaran)-31 b(teed)395 b(to)16290
+72079 y(ha)-31 b(v)g(e)371 b(all)f(nonzero)g(comp)31
+b(onen)-31 b(ts.)p 50635 72478 45 5314 v 4000 72522 46657
+45 v 3978 73850 45 1329 v 39553 73452 a Fc(con)j(tin)g(ued)341
+b(on)g(next)h(page)p 50635 73850 V 4000 73894 46657 45
+v Black Black eop
+%%Page: 126 136
+126 135 bop Black 0 2701 a Fx(126)24583 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black 0 5911 46657 45 v -22 7240 45 1329 v 664 6841
+a Fc(con)-28 b(tin)g(ued)341 b(from)g(last)h(page)p 46635
+7240 V 0 7284 46657 45 v -22 8612 45 1329 v 664 8214
+a Fx(Name)p 11604 8612 V 8367 w(Usage)426 b(and)f(Description)p
+46635 8612 V 0 8656 46657 45 v 0 8878 V -22 10206 45
+1329 v 11604 10206 V 46635 10206 V -22 11535 V 664 11136
+a Fu(N)p 1315 11136 349 45 v 419 w(VScale)p 11604 11535
+45 1329 v 7140 w(N)p 12941 11136 349 45 v 419 w(VScale\(c,)583
+b(x,)e(z\);)p 46635 11535 45 1329 v -22 14191 45 2657
+v 11604 14191 V 12290 12464 a Fw(Scales)527 b(the)f Fu(N)p
+18427 12464 349 45 v 418 w(Vector)h(x)f Fw(b)-31 b(y)526
+b(the)g(scalar)g Fu(c)g Fw(and)g(returns)f(the)h(result)g(in)g
+Fu(z)p Fw(:)12290 13793 y Fl(z)12805 13959 y Fj(i)13481
+13793 y Fw(=)308 b Fl(cx)15762 13959 y Fj(i)16130 13793
+y Fl(;)431 b(i)308 b Fw(=)f(0)p Fl(;)184 b(:)g(:)g(:)189
+b(;)184 b(n)247 b Fn(\241)f Fw(1.)p 46635 14191 45 2657
+v -22 15520 45 1329 v 11604 15520 V 46635 15520 V -22
+16848 V 664 16449 a Fu(N)p 1315 16449 349 45 v 419 w(VAbs)p
+11604 16848 45 1329 v 8302 w(N)p 12941 16449 349 45 v
+419 w(VAbs\(x,)582 b(y\);)p 46635 16848 45 1329 v -22
+19505 45 2657 v 11604 19505 V 12290 17778 a Fw(Sets)458
+b(the)f(comp)31 b(onen)-31 b(ts)459 b(of)f(the)g Fu(N)p
+26894 17778 349 45 v 418 w(Vector)g(y)g Fw(to)g(b)31
+b(e)457 b(the)h(absolute)g(v)-61 b(alues)458 b(of)12290
+19106 y(the)370 b(comp)31 b(onen)-31 b(ts)370 b(of)g(the)g
+Fu(N)p 24110 19106 V 418 w(Vector)g(x)p Fw(:)493 b Fl(y)30238
+19272 y Fj(i)30913 19106 y Fw(=)308 b Fn(j)p Fl(x)33022
+19272 y Fj(i)33390 19106 y Fn(j)p Fl(;)432 b(i)308 b
+Fw(=)f(0)p Fl(;)184 b(:)g(:)g(:)189 b(;)184 b(n)247 b
+Fn(\241)f Fw(1.)p 46635 19505 45 2657 v -22 20833 45
+1329 v 11604 20833 V 46635 20833 V -22 22161 V 664 21763
+a Fu(N)p 1315 21763 349 45 v 419 w(VInv)p 11604 22161
+45 1329 v 8302 w(N)p 12941 21763 349 45 v 419 w(VInv\(x,)582
+b(z\);)p 46635 22161 45 1329 v -22 27475 45 5314 v 11604
+27475 V 12290 23091 a Fw(Sets)370 b(the)h(comp)31 b(onen)-31
+b(ts)371 b(of)f(the)h Fu(N)p 26457 23091 349 45 v 418
+w(Vector)g(z)f Fw(to)g(b)31 b(e)370 b(the)g(in)-31 b(v)g(erses)370
+b(of)g(the)h(com-)12290 24420 y(p)31 b(onen)-31 b(ts)361
+b(of)f(the)g Fu(N)p 20207 24420 V 419 w(Vector)h(x)p
+Fw(:)488 b Fl(z)26294 24586 y Fj(i)26969 24420 y Fw(=)308
+b(1)p Fl(:)p Fw(0)p Fl(=x)30737 24586 y Fj(i)31107 24420
+y Fl(;)412 b(i)308 b Fw(=)g(0)p Fl(;)184 b(:)g(:)g(:)k(;)c(n)229
+b Fn(\241)e Fw(1.)490 b(This)361 b(routine)12290 25748
+y(ma)-31 b(y)449 b(not)f(c)-31 b(hec)g(k)448 b(for)f(division)i(b)-31
+b(y)448 b(0.)727 b(It)447 b(should)h(b)31 b(e)447 b(called)h(only)g
+(with)h(an)e Fu(x)12290 27076 y Fw(whic)-31 b(h)371 b(is)e(guaran)-31
+b(teed)370 b(to)g(ha)-31 b(v)g(e)370 b(all)h(nonzero)e(comp)31
+b(onen)-31 b(ts.)p 46635 27475 45 5314 v -22 28803 45
+1329 v 11604 28803 V 46635 28803 V -22 30131 V 664 29733
+a Fu(N)p 1315 29733 349 45 v 419 w(VAddConst)p 11604
+30131 45 1329 v 5397 w(N)p 12941 29733 349 45 v 419 w(VAddConst\(x,)583
+b(b,)e(z\);)p 46635 30131 45 1329 v -22 32788 45 2657
+v 11604 32788 V 12290 31061 a Fw(Adds)358 b(the)g(scalar)g
+Fu(b)g Fw(to)h(all)g(comp)31 b(onen)-31 b(ts)359 b(of)f
+Fu(x)g Fw(and)g(returns)f(the)h(result)g(in)g(the)12290
+32390 y Fu(N)p 12941 32390 349 45 v 419 w(Vector)370
+b(z)p Fw(:)493 b Fl(z)19042 32556 y Fj(i)19717 32390
+y Fw(=)308 b Fl(x)21519 32556 y Fj(i)22133 32390 y Fw(+)246
+b Fl(b;)431 b(i)308 b Fw(=)f(0)p Fl(;)184 b(:)g(:)g(:)189
+b(;)184 b(n)247 b Fn(\241)f Fw(1.)p 46635 32788 45 2657
+v -22 34117 45 1329 v 11604 34117 V 46635 34117 V -22
+35445 V 664 35046 a Fu(N)p 1315 35046 349 45 v 419 w(VDotProd)p
+11604 35445 45 1329 v 5978 w(d)582 b(=)f(N)p 15266 35046
+349 45 v 419 w(VDotProd\(x,)h(y\);)p 46635 35445 45 1329
+v -22 38102 45 2657 v 11604 38102 V 12290 36375 a Fw(Returns)607
+b(the)g(v)-61 b(alue)607 b(of)h(the)f(ordinary)g(dot)h(pro)31
+b(duct)607 b(of)g Fu(x)g Fw(and)h Fu(y)p Fw(:)968 b Fl(d)704
+b Fw(=)12290 36873 y Fh(P)13459 37146 y Fj(n)p Fg(\241)p
+Fk(1)13459 38035 y Fj(i)p Fk(=0)15379 37703 y Fl(x)16012
+37869 y Fj(i)16380 37703 y Fl(y)16923 37869 y Fj(i)17292
+37703 y Fw(.)p 46635 38102 V -22 39430 45 1329 v 11604
+39430 V 46635 39430 V -22 40758 V 664 40360 a Fu(N)p
+1315 40360 349 45 v 419 w(VMaxNorm)p 11604 40758 45 1329
+v 5978 w(m)582 b(=)f(N)p 15266 40360 349 45 v 419 w(VMaxNorm\(x\);)p
+46635 40758 45 1329 v -22 42087 V 11604 42087 V 12290
+41688 a Fw(Returns)369 b(the)g(maxim)-31 b(um)372 b(norm)e(of)f(the)h
+Fu(N)p 30281 41688 349 45 v 418 w(Vector)g(x)p Fw(:)493
+b Fl(m)307 b Fw(=)h(max)40374 41854 y Fj(i)40927 41688
+y Fn(j)p Fl(x)41867 41854 y Fj(i)42236 41688 y Fn(j)p
+Fw(.)p 46635 42087 45 1329 v -22 43415 V 11604 43415
+V 46635 43415 V -22 44743 V 664 44345 a Fu(N)p 1315 44345
+349 45 v 419 w(VWrmsNorm)p 11604 44743 45 1329 v 5397
+w(m)582 b(=)f(N)p 15266 44345 349 45 v 419 w(VWrmsNorm\(x,)i(w\))p
+46635 44743 45 1329 v -22 48700 45 3957 v 11604 48700
+V 12290 45673 a Fw(Returns)386 b(the)g(w)-31 b(eigh)g(ted)388
+b(ro)31 b(ot-mean-square)388 b(norm)e(of)h(the)f Fu(N)p
+38652 45673 349 45 v 418 w(Vector)h(x)f Fw(with)12290
+47698 y(w)-31 b(eigh)g(t)372 b(v)-31 b(ector)370 b Fu(w)p
+Fw(:)492 b Fl(m)308 b Fw(=)22948 46088 y Fh(r)p 24055
+46088 9149 45 v 382 x(\263)24716 46868 y(P)25885 47142
+y Fj(n)p Fg(\241)p Fk(1)25885 48030 y Fj(i)p Fk(=0)27620
+47698 y Fw(\()p Fl(x)28683 47864 y Fj(i)29052 47698 y
+Fl(w)29844 47864 y Fj(i)30213 47698 y Fw(\))30643 47379
+y Fk(2)31140 46470 y Fh(\264)31986 47698 y Fl(=n)q Fw(.)p
+46635 48700 45 3957 v -22 50028 45 1329 v 11604 50028
+V 46635 50028 V -22 51357 V 664 50958 a Fu(N)p 1315 50958
+349 45 v 419 w(VWrmsNormMask)p 11604 51357 45 1329 v
+3073 w(m)582 b(=)f(N)p 15266 50958 349 45 v 419 w(VWrmsNormMask\(x,)i
+(w,)f(id\);)p 46635 51357 45 1329 v -22 55342 45 3986
+v 11604 55342 V 12290 52287 a Fw(Returns)383 b(the)g(w)-31
+b(eigh)g(ted)385 b(ro)31 b(ot)384 b(mean)f(square)g(norm)g(of)h(the)f
+Fu(N)p 38658 52287 349 45 v 419 w(Vector)g(x)g Fw(with)12290
+53615 y(w)-31 b(eigh)g(t)482 b(v)-31 b(ector)480 b Fu(w)f
+Fw(built)h(using)g(only)g(the)f(elemen)-31 b(ts)481 b(of)e
+Fu(x)g Fw(corresp)31 b(onding)480 b(to)12290 54943 y(nonzero)370
+b(elemen)-31 b(ts)370 b(of)g(the)f Fu(N)p 24758 54943
+V 419 w(Vector)h(id)p Fw(:)p 46635 55342 45 3986 v -22
+58043 45 2702 v 11604 58043 V 12290 57041 a Fl(m)308
+b Fw(=)14738 55430 y Fh(r)p 15845 55430 13249 45 v 382
+x(\263)16506 56211 y(P)17675 56484 y Fj(n)p Fg(\241)p
+Fk(1)17675 57373 y Fj(i)p Fk(=0)19411 57041 y Fw(\()p
+Fl(x)20474 57207 y Fj(i)20842 57041 y Fl(w)21634 57207
+y Fj(i)22003 57041 y Fw(sign)q(\()p Fl(id)25303 57207
+y Fj(i)25672 57041 y Fw(\)\))26532 56721 y Fk(2)27030
+55812 y Fh(\264)27876 57041 y Fl(=n)p Fw(.)p 46635 58043
+45 2702 v -22 59371 45 1329 v 11604 59371 V 46635 59371
+V -22 60700 V 664 60301 a Fu(N)p 1315 60301 349 45 v
+419 w(VMin)p 11604 60700 45 1329 v 8302 w(m)582 b(=)f(N)p
+15266 60301 349 45 v 419 w(VMin\(x\);)p 46635 60700 45
+1329 v -22 62028 V 11604 62028 V 12290 61629 a Fw(Returns)369
+b(the)g(smallest)i(elemen)-31 b(t)371 b(of)e(the)h Fu(N)p
+30567 61629 349 45 v 418 w(Vector)g(x)p Fw(:)493 b Fl(m)307
+b Fw(=)h(min)40445 61795 y Fj(i)40998 61629 y Fl(x)41631
+61795 y Fj(i)41999 61629 y Fw(.)p 46635 62028 45 1329
+v -22 63356 V 11604 63356 V 46635 63356 V -22 64685 V
+664 64286 a Fu(N)p 1315 64286 349 45 v 419 w(VWL2Norm)p
+11604 64685 45 1329 v 5978 w(m)582 b(=)f(N)p 15266 64286
+349 45 v 419 w(VWL2Norm\(x,)h(w\);)p 46635 64685 45 1329
+v -22 67977 45 3293 v 11604 67977 V 12290 65614 a Fw(Returns)279
+b(the)g(w)-31 b(eigh)g(ted)281 b(Euclidean)f Fl(`)28235
+65780 y Fk(2)29011 65614 y Fw(norm)f(of)g(the)g Fu(N)p
+35451 65614 349 45 v 419 w(Vector)g(x)g Fw(with)h(w)-31
+b(eigh)g(t)12290 67393 y(v)g(ector)370 b Fu(w)p Fw(:)493
+b Fl(m)307 b Fw(=)19443 66029 y Fh(q)p 20550 66029 6424
+45 v 533 x(P)21718 66836 y Fj(n)p Fg(\241)p Fk(1)21718
+67725 y Fj(i)p Fk(=0)23454 67393 y Fw(\()p Fl(x)24517
+67559 y Fj(i)24886 67393 y Fl(w)25678 67559 y Fj(i)26047
+67393 y Fw(\))26477 67073 y Fk(2)26974 67393 y Fw(.)p
+46635 67977 45 3293 v -22 69306 45 1329 v 11604 69306
+V 46635 69306 V -22 70634 V 664 70235 a Fu(N)p 1315 70235
+349 45 v 419 w(VL1Norm)p 11604 70634 45 1329 v 6559 w(m)582
+b(=)f(N)p 15266 70235 349 45 v 419 w(VL1Norm\(x\);)p
+46635 70634 45 1329 v -22 72088 45 1455 v 11604 72088
+V 12290 71690 a Fw(Returns)369 b(the)g Fl(`)18864 71856
+y Fk(1)19730 71690 y Fw(norm)h(of)f(the)h Fu(N)p 26442
+71690 349 45 v 418 w(Vector)g(x)p Fw(:)493 b Fl(m)307
+b Fw(=)34475 70860 y Fh(P)35643 71133 y Fj(n)p Fg(\241)p
+Fk(1)35643 72022 y Fj(i)p Fk(=0)37563 71690 y Fn(j)p
+Fl(x)38503 71856 y Fj(i)38872 71690 y Fn(j)p Fw(.)p 46635
+72088 45 1455 v 0 72133 46657 45 v -22 73461 45 1329
+v 35553 73062 a Fc(con)-28 b(tin)g(ued)341 b(on)g(next)h(page)p
+46635 73461 V 0 73505 46657 45 v Black Black eop
+%%Page: 127 137
+127 136 bop Black 4000 2701 a Fx(8.1)425 b(The)g(NVECTOR)p
+15238 2701 382 45 v 459 w(SERIAL)f(implemen)-35 b(tation)20656
+b(127)p 4000 3144 48001 45 v Black 4000 5911 46657 45
+v 3978 7240 45 1329 v 4664 6841 a Fc(con)-28 b(tin)g(ued)341
+b(from)g(last)h(page)p 50635 7240 V 4000 7284 46657 45
+v 3978 8612 45 1329 v 4664 8214 a Fx(Name)p 15604 8612
+V 8367 w(Usage)426 b(and)f(Description)p 50635 8612 V
+4000 8656 46657 45 v 4000 8878 V 3978 10206 45 1329 v
+15604 10206 V 50635 10206 V 3978 11535 V 4664 11136 a
+Fu(N)p 5315 11136 349 45 v 419 w(VCompare)p 15604 11535
+45 1329 v 5978 w(N)p 16941 11136 349 45 v 419 w(VCompare\(c,)583
+b(x,)e(z\);)p 50635 11535 45 1329 v 3978 14191 45 2657
+v 15604 14191 V 16290 12464 a Fw(Compares)253 b(the)f(comp)31
+b(onen)-31 b(ts)253 b(of)f(the)g Fu(N)p 32697 12464 349
+45 v 418 w(Vector)h(x)e Fw(to)i(the)f(scalar)g Fu(c)f
+Fw(and)h(returns)16290 13793 y(an)370 b Fu(N)p 18479
+13793 V 419 w(Vector)f(z)h Fw(suc)-31 b(h)368 b(that:)494
+b Fl(z)29474 13959 y Fj(i)30150 13793 y Fw(=)308 b(1)p
+Fl(:)p Fw(0)370 b(if)g Fn(j)p Fl(x)35057 13959 y Fj(i)35425
+13793 y Fn(j)308 b(\270)g Fl(c)369 b Fw(and)g Fl(z)40724
+13959 y Fj(i)41400 13793 y Fw(=)307 b(0)p Fl(:)p Fw(0)371
+b(otherwise.)p 50635 14191 45 2657 v 3978 15520 45 1329
+v 15604 15520 V 50635 15520 V 3978 16848 V 4664 16449
+a Fu(N)p 5315 16449 349 45 v 419 w(VInvTest)p 15604 16848
+45 1329 v 5978 w(t)582 b(=)f(N)p 19266 16449 349 45 v
+419 w(VInvTest\(x,)h(z\);)p 50635 16848 45 1329 v 3978
+23490 45 6642 v 15604 23490 V 16290 17778 a Fw(Sets)596
+b(the)g(comp)31 b(onen)-31 b(ts)596 b(of)h(the)e Fu(N)p
+31584 17778 349 45 v 419 w(Vector)h(z)g Fw(to)g(b)31
+b(e)595 b(the)h(in)-31 b(v)g(erses)595 b(of)h(the)16290
+19106 y(comp)31 b(onen)-31 b(ts)585 b(of)e(the)g Fu(N)p
+26844 19106 V 419 w(Vector)g(x)p Fw(,)637 b(with)584
+b(prior)f(testing)h(for)f(zero)g(v)-61 b(alues:)16290
+20434 y Fl(z)16805 20600 y Fj(i)17636 20434 y Fw(=)463
+b(1)p Fl(:)p Fw(0)p Fl(=x)21559 20600 y Fj(i)21929 20434
+y Fl(;)493 b(i)463 b Fw(=)f(0)p Fl(;)184 b(:)g(:)g(:)189
+b(;)184 b(n)309 b Fn(\241)f Fw(1.)772 b(This)463 b(routine)g(returns)e
+Fu(TRUE)h Fw(if)h(all)h(com-)16290 21763 y(p)31 b(onen)-31
+b(ts)333 b(of)g Fu(x)f Fw(are)g(nonzero)g(\(successful)g(in)-31
+b(v)g(ersion\))334 b(and)e(returns)f Fu(FALSE)i Fw(oth-)16290
+23091 y(erwise.)p 50635 23490 45 6642 v 3978 24818 45
+1329 v 15604 24818 V 50635 24818 V 3978 26146 V 4664
+25748 a Fu(N)p 5315 25748 349 45 v 419 w(VConstrMask)p
+15604 26146 45 1329 v 4235 w(t)582 b(=)f(N)p 19266 25748
+349 45 v 419 w(VConstrMask\(c,)i(x,)e(m\);)p 50635 26146
+45 1329 v 3978 34117 45 7971 v 15604 34117 V 16290 27076
+a Fw(P)-31 b(erforms)477 b(the)g(follo)-31 b(wing)481
+b(constrain)-31 b(t)478 b(tests:)707 b Fl(x)37081 27242
+y Fj(i)37936 27076 y Fl(>)487 b Fw(0)477 b(if)g Fl(c)41915
+27242 y Fj(i)42770 27076 y Fw(=)486 b(2,)505 b Fl(x)46115
+27242 y Fj(i)46969 27076 y Fn(\270)487 b Fw(0)477 b(if)16290
+28405 y Fl(c)16769 28571 y Fj(i)17542 28405 y Fw(=)403
+b(1,)442 b Fl(x)20741 28571 y Fj(i)21513 28405 y Fn(\267)403
+b Fw(0)427 b(if)g Fl(c)25308 28571 y Fj(i)26080 28405
+y Fw(=)404 b Fn(\241)p Fw(1,)442 b Fl(x)30141 28571 y
+Fj(i)30912 28405 y Fl(<)404 b Fw(0)427 b(if)g Fl(c)34708
+28571 y Fj(i)35480 28405 y Fw(=)404 b Fn(\241)p Fw(2.)665
+b(There)427 b(is)g(no)g(constrain)-31 b(t)16290 29733
+y(on)424 b Fl(x)18515 29899 y Fj(i)19307 29733 y Fw(if)g
+Fl(c)20855 29899 y Fj(i)21622 29733 y Fw(=)398 b(0.)657
+b(This)424 b(routine)g(returns)f Fu(FALSE)h Fw(if)g(an)-31
+b(y)425 b(elemen)-31 b(t)425 b(failed)g(the)16290 31061
+y(constrain)-31 b(t)418 b(test,)429 b Fu(TRUE)417 b Fw(if)g(all)g
+(passed.)634 b(It)416 b(also)h(sets)f(a)h(mask)g(v)-31
+b(ector)417 b Fu(m)p Fw(,)428 b(with)16290 32390 y(elemen)-31
+b(ts)423 b(equal)g(to)f(1)p Fl(:)p Fw(0)h(where)e(the)h(constrain)-31
+b(t)423 b(test)f(failed,)436 b(and)422 b(0)p Fl(:)p Fw(0)h(where)16290
+33718 y(the)370 b(test)f(passed.)493 b(This)369 b(routine)h(is)f(used)g
+(only)h(for)f(constrain)-31 b(t)371 b(c)-31 b(hec)g(king.)p
+50635 34117 V 3978 35445 45 1329 v 15604 35445 V 50635
+35445 V 3978 36773 V 4664 36375 a Fu(N)p 5315 36375 349
+45 v 419 w(VMinQuotient)p 15604 36773 45 1329 v 3654
+w(minq)582 b(=)g(N)p 21010 36375 349 45 v 418 w(VMinQuotient\(num,)i
+(denom\);)p 50635 36773 45 1329 v 3978 42087 45 5314
+v 15604 42087 V 16290 37703 a Fw(This)367 b(routine)g(returns)e(the)i
+(minim)-31 b(um)368 b(of)f(the)g(quotien)-31 b(ts)368
+b(obtained)g(b)-31 b(y)366 b(term-)16290 39031 y(wise)294
+b(dividing)h Fu(num)24560 39197 y Fj(i)25221 39031 y
+Fw(b)-31 b(y)293 b Fu(denom)29587 39197 y Fj(i)29957
+39031 y Fw(.)467 b(A)292 b(zero)h(elemen)-31 b(t)294
+b(in)g Fu(denom)f Fw(will)i(b)31 b(e)292 b(skipp)31 b(ed.)16290
+40360 y(If)348 b(no)g(suc)-31 b(h)348 b(quotien)-31 b(ts)350
+b(are)d(found,)354 b(then)348 b(the)g(large)h(v)-61 b(alue)348
+b Fu(BIG)p 43097 40360 349 45 v 419 w(REAL)g Fw(\(de\257ned)16290
+41688 y(in)370 b(the)f(header)g(\257le)h Fu(sundialstypes.h)p
+Fw(\))h(is)f(returned.)p 50635 42087 45 5314 v 3978 43415
+45 1329 v 15604 43415 V 50635 43415 V 4000 43459 46657
+45 v 4000 48339 a Fr(8.1)1793 b(The)598 b(NVECTOR)p 21012
+48339 538 45 v 646 w(SERIAL)g(implemen)-50 b(tation)4000
+50897 y Fw(The)531 b(serial)g(implemen)-31 b(tation)535
+b(of)d(the)f Fs(nvector)f Fw(mo)31 b(dule)532 b(pro)-31
+b(vided)532 b(with)g Fs(sundials)p Fw(,)570 b Fs(nvector)p
+47952 50897 368 45 v 441 w(serial)p Fw(,)4000 52225 y(de\257nes)351
+b(the)g Fq(c)-57 b(ontent)352 b Fw(\257eld)g(of)g Fu(N)p
+17639 52225 349 45 v 418 w(Vector)g Fw(to)g(b)31 b(e)351
+b(a)h(structure)f(con)-31 b(taining)354 b(the)d(length)i(of)f(the)f(v)
+-31 b(ector,)356 b(a)c(p)31 b(oin)-31 b(ter)4000 53554
+y(to)249 b(the)g(b)31 b(eginning)250 b(of)f(a)f(con)-31
+b(tiguous)251 b(data)f(arra)-31 b(y)-92 b(,)273 b(and)249
+b(a)f(b)31 b(o)g(olean)250 b(\260ag)f Fq(own)p 35513
+53554 340 45 v 407 w(data)e Fw(whic)-31 b(h)250 b(sp)31
+b(eci\257es)247 b(the)i(o)-31 b(wnership)4000 54882 y(of)370
+b Fq(data)p Fw(.)p Black Black 4000 57382 a Fu(struct)582
+b(_N_VectorContent_Serial)j({)5162 58711 y(long)d(int)g(length;)5162
+60039 y(booleantype)h(own_data;)5162 61367 y(realtype)g(*data;)4000
+62696 y(};)4000 65124 y Fw(The)438 b(follo)-31 b(wing)441
+b(\257v)-31 b(e)438 b(macros)g(are)g(pro)-31 b(vided)438
+b(to)h(access)e(the)h(con)-31 b(ten)g(t)440 b(of)e(an)g
+Fs(nvector)p 41956 65124 368 45 v 440 w(serial)g Fw(v)-31
+b(ector.)699 b(The)4000 66453 y(su\261x)p 6997 66453
+349 45 v 788 w Fu(S)369 b Fw(in)g(the)h(names)f(denotes)h(serial)f(v)
+-31 b(ersion.)p Black 5660 68881 a Fn(\262)p Black 554
+w Fu(NV)p 7999 68881 V 419 w(CONTENT)p 12485 68881 V
+420 w(S)6767 70796 y Fw(This)370 b(routine)g(giv)-31
+b(es)370 b(access)f(to)h(the)f(con)-31 b(ten)g(ts)371
+b(of)e(the)h(serial)f(v)-31 b(ector)370 b Fu(N)p 36768
+70796 V 419 w(Vector)p Fw(.)6767 72710 y(The)332 b(assignmen)-31
+b(t)333 b Fu(v)p 15319 72710 V 419 w(cont)e Fw(=)h Fu(NV)p
+20748 72710 V 418 w(CONTENT)p 25233 72710 V 420 w(S\(v\))g
+Fw(sets)f Fu(v)p 31017 72710 V 418 w(cont)h Fw(to)g(b)31
+b(e)331 b(a)h(p)31 b(oin)-31 b(ter)332 b(to)g(the)g(serial)g
+Fu(N)p 48165 72710 V 418 w(Vector)6767 74038 y Fw(con)-31
+b(ten)g(t)371 b(structure.)6767 75953 y(Implemen)-31
+b(tation:)6767 77867 y Fu(#define)583 b(NV_CONTENT_S\(v\))g(\()e
+(\(N_VectorContent_Serial\)\(v->content\))587 b(\))p
+Black Black eop
+%%Page: 128 138
+128 137 bop Black 0 2701 a Fx(128)24583 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black Black 1660 6974 a Fn(\262)p Black 554 w Fu(NV)p
+3999 6974 349 45 v 419 w(OWN)p 6161 6974 V 419 w(DATA)p
+8904 6974 V 419 w(S)p Fw(,)370 b Fu(NV)p 11743 6974 V
+418 w(DATA)p 14485 6974 V 419 w(S)p Fw(,)g Fu(NV)p 17324
+6974 V 419 w(LENGTH)p 21229 6974 V 419 w(S)2767 8651
+y Fw(These)f(macros)h(giv)-31 b(e)370 b(individual)i(access)d(to)h(the)
+f(parts)g(of)h(the)f(con)-31 b(ten)g(t)371 b(of)f(a)f(serial)h
+Fu(N)p 39410 8651 V 419 w(Vector)p Fw(.)2767 10327 y(The)443
+b(assignmen)-31 b(t)445 b Fu(v)p 11542 10327 V 418 w(data)582
+b(=)f(NV)p 17190 10327 V 419 w(DATA)p 19933 10327 V 419
+w(S\(v\))443 b Fw(sets)g Fu(v)p 25939 10327 V 418 w(data)g
+Fw(to)h(b)31 b(e)442 b(a)h(p)31 b(oin)-31 b(ter)444 b(to)f(the)g
+(\257rst)f(comp)31 b(onen)-31 b(t)2767 11656 y(of)391
+b(the)e(data)i(for)f(the)g Fu(N)p 12810 11656 V 418 w(Vector)h(v)p
+Fw(.)554 b(The)389 b(assignmen)-31 b(t)392 b Fu(NV)p
+27726 11656 V 419 w(DATA)p 30469 11656 V 419 w(S\(v\))581
+b(=)h(v)p 35537 11656 V 418 w(data)390 b Fw(sets)f(the)h(comp)31
+b(onen)-31 b(t)2767 12984 y(arra)g(y)370 b(of)g Fu(v)f
+Fw(to)h(b)31 b(e)368 b Fu(v)p 11385 12984 V 419 w(data)i
+Fw(b)-31 b(y)369 b(storing)h(the)g(p)31 b(oin)-31 b(ter)370
+b Fu(v)p 26038 12984 V 418 w(data)p Fw(.)2767 14661 y(The)308
+b(assignmen)-31 b(t)309 b Fu(v)p 11271 14661 V 418 w(len)582
+b(=)f(NV)p 16338 14661 V 419 w(LENGTH)p 20243 14661 V
+419 w(S\(v\))308 b Fw(sets)e Fu(v)p 25977 14661 V 419
+w(len)h Fw(to)h(b)31 b(e)307 b(the)g(length)i(of)e Fu(v)p
+Fw(.)472 b(On)307 b(the)h(other)f(hand,)2767 15989 y(the)370
+b(call)g Fu(NV)p 7935 15989 V 419 w(LENGTH)p 11840 15989
+V 419 w(S\(v\))582 b(=)f(len)p 18070 15989 V 419 w(v)369
+b Fw(sets)g(the)h(length)g(of)g Fu(v)f Fw(to)h(b)31 b(e)368
+b Fu(len)p 33706 15989 V 419 w(v)p Fw(.)2767 17666 y(Implemen)-31
+b(tation:)2767 19342 y Fu(#define)583 b(NV_OWN_DATA_S\(v\))g(\()e
+(NV_CONTENT_S\(v\)->own_data)k(\))2767 21019 y(#define)e
+(NV_DATA_S\(v\))g(\()e(NV_CONTENT_S\(v\)->data)j(\))2767
+22696 y(#define)f(NV_LENGTH_S\(v\))g(\()e(NV_CONTENT_S\(v\)->length)k
+(\))p Black 1660 24721 a Fn(\262)p Black 554 w Fu(NV)p
+3999 24721 V 419 w(Ith)p 6161 24721 V 419 w(S)2767 26397
+y Fw(This)370 b(macro)g(giv)-31 b(es)370 b(access)f(to)h(the)f
+(individual)j(comp)31 b(onen)-31 b(ts)370 b(of)g(the)f(data)i(arra)-31
+b(y)369 b(of)h(an)f Fu(N)p 41187 26397 V 419 w(Vector)p
+Fw(.)2767 28074 y(The)420 b(assignmen)-31 b(t)421 b Fu(r)582
+b(=)f(NV)p 14401 28074 V 419 w(Ith)p 16563 28074 V 419
+w(S\(v,i\))420 b Fw(sets)f Fu(r)g Fw(to)h(b)31 b(e)419
+b(the)h(v)-61 b(alue)420 b(of)g(the)g Fu(i)p Fw(-th)g(comp)31
+b(onen)-31 b(t)421 b(of)f Fu(v)p Fw(.)644 b(The)2767
+29402 y(assignmen)-31 b(t)371 b Fu(NV)p 9700 29402 V
+419 w(Ith)p 11862 29402 V 419 w(S\(v,i\))582 b(=)f(r)369
+b Fw(sets)g(the)g(v)-61 b(alue)370 b(of)g(the)f Fu(i)p
+Fw(-th)h(comp)31 b(onen)-31 b(t)371 b(of)e Fu(v)h Fw(to)f(b)31
+b(e)369 b Fu(r)p Fw(.)2767 31079 y(Here)g Fl(i)g Fw(ranges)h(from)f(0)h
+(to)g Fl(n)246 b Fn(\241)g Fw(1)370 b(for)f(a)g(v)-31
+b(ector)370 b(of)g(length)g Fl(n)p Fw(.)2767 32756 y(Implemen)-31
+b(tation:)2767 34432 y Fu(#define)583 b(NV_Ith_S\(v,i\))g(\()e
+(NV_DATA_S\(v\)[i])i(\))0 36268 y Fw(The)342 b Fs(nvector)p
+6975 36268 368 45 v 441 w(serial)f Fw(mo)31 b(dule)343
+b(de\257nes)e(serial)i(implemen)-31 b(tations)345 b(of)e(all)g(v)-31
+b(ector)343 b(op)31 b(erations)343 b(listed)g(in)f(T)-92
+b(able)0 37597 y(8.1)370 b(and)g(pro)-31 b(vides)369
+b(the)h(follo)-31 b(wing)373 b(user-callable)d(routines:)p
+Black 1660 39433 a Fn(\262)p Black 554 w Fu(N)p 3418
+39433 349 45 v 419 w(VNew)p 6161 39433 V 419 w(Serial)2767
+41110 y Fw(This)448 b(function)g(creates)f(and)g(allo)31
+b(cates)449 b(memory)f(for)f(a)g(serial)g Fu(N)p 31152
+41110 V 419 w(Vector)p Fw(.)726 b(Its)447 b(only)g(argumen)-31
+b(t)449 b(is)e(the)2767 42438 y(v)-31 b(ector)370 b(length.)2767
+44115 y Fu(N_Vector)583 b(N_VNew_Serial\(long)h(int)d(vec_length\);)p
+Black 1660 46140 a Fn(\262)p Black 554 w Fu(N)p 3418
+46140 V 419 w(VNewEmpty)p 9066 46140 V 420 w(Serial)2767
+47816 y Fw(This)370 b(function)h(creates)e(a)g(new)h(serial)f
+Fu(N)p 20078 47816 V 419 w(Vector)h Fw(with)g(an)f(empt)-31
+b(y)371 b(\()p Fu(NULL)p Fw(\))f(data)h(arra)-31 b(y)-92
+b(.)2767 49493 y Fu(N_Vector)583 b(N_VNewEmpty_Serial\(long)h(int)e
+(vec_length\);)p Black 1660 51518 a Fn(\262)p Black 554
+w Fu(N)p 3418 51518 V 419 w(VMake)p 6742 51518 V 419
+w(Serial)2767 53195 y Fw(This)370 b(function)h(creates)e(and)g(allo)31
+b(cates)371 b(memory)g(for)e(a)g(serial)h(v)-31 b(ector)370
+b(with)g(user-pro)-31 b(vided)369 b(data)i(arra)-31 b(y)-92
+b(.)2767 54871 y Fu(N_Vector)583 b(N_VMake_Serial\(long)h(int)d
+(vec_length,)i(realtype)f(*v_data\);)p Black 1660 56896
+a Fn(\262)p Black 554 w Fu(N)p 3418 56896 V 419 w(VNewVectorArray)p
+12552 56896 V 421 w(Serial)2767 58573 y Fw(This)370 b(function)h
+(creates)e(an)g(arra)-31 b(y)370 b(of)f Fu(count)h Fw(serial)g(v)-31
+b(ectors.)2767 60250 y Fu(N_Vector)583 b
+(*N_VNewVectorArray_Serial\(int)i(count,)d(long)g(int)g(vec_length\);)p
+Black 1660 62275 a Fn(\262)p Black 554 w Fu(N)p 3418
+62275 V 419 w(VNewVectorArrayEmpty)p 15457 62275 V 421
+w(Serial)2767 63951 y Fw(This)369 b(function)g(creates)f(an)g(arra)-31
+b(y)369 b(of)f Fu(count)h Fw(serial)f(v)-31 b(ectors,)369
+b(eac)-31 b(h)369 b(with)g(an)f(empt)-31 b(y)370 b(\()p
+Fu(NULL)p Fw(\))f(data)g(arra)-31 b(y)-92 b(.)2767 65628
+y Fu(N_Vector)583 b(*N_VNewVectorArrayEmpty_Serial\(int)j(count,)c
+(long)g(int)f(vec_length\);)p Black 1660 67653 a Fn(\262)p
+Black 554 w Fu(N)p 3418 67653 V 419 w(VDestroyVectorArray)p
+14876 67653 V 421 w(Serial)2767 69330 y Fw(This)305 b(function)g(frees)
+e(memory)i(allo)31 b(cated)307 b(for)d(the)g(arra)-31
+b(y)305 b(of)f Fu(count)h Fw(v)-61 b(ariables)304 b(of)h(t)-31
+b(yp)31 b(e)304 b Fu(N)p 40352 69330 V 419 w(Vector)h
+Fw(created)2767 70658 y(with)371 b Fu(N)p 5940 70658
+V 418 w(VNewVectorArray)p 15073 70658 V 421 w(Serial)f
+Fw(or)f(with)h Fu(N)p 23808 70658 V 419 w(VNewVectorArrayEmpty)p
+35847 70658 V 421 w(Serial)p Fw(.)2767 72335 y Fu(void)582
+b(N_VDestroyVectorArray_Serial\(N_Vector)587 b(*vs,)582
+b(int)f(count\);)p Black 1660 74360 a Fn(\262)p Black
+554 w Fu(N)p 3418 74360 V 419 w(VPrint)p 7323 74360 V
+419 w(Serial)2767 76036 y Fw(This)370 b(function)h(prin)-31
+b(ts)369 b(the)g(con)-31 b(ten)g(t)371 b(of)f(a)f(serial)h(v)-31
+b(ector)370 b(to)g Fu(stdout)p Fw(.)2767 77713 y Fu(void)582
+b(N_VPrint_Serial\(N_Vector)j(v\);)p Black Black eop
+%%Page: 129 139
+129 138 bop Black 4000 2701 a Fx(8.2)425 b(The)g(NVECTOR)p
+15238 2701 382 45 v 459 w(P)-106 b(ARALLEL)424 b(implemen)-35
+b(tation)18588 b(129)p 4000 3144 48001 45 v Black 4000
+6974 a(Notes)p Black 5660 9180 a Fn(\262)p Black 554
+w Fw(When)438 b(lo)31 b(oping)440 b(o)-31 b(v)g(er)438
+b(the)g(comp)31 b(onen)-31 b(ts)439 b(of)g(an)f Fu(N)p
+28203 9180 349 45 v 419 w(Vector)g(v)p Fw(,)456 b(it)438
+b(is)g(more)h(e\261cien)-31 b(t)439 b(to)g(\257rst)e(obtain)j(the)6767
+10508 y(comp)31 b(onen)-31 b(t)317 b(arra)-31 b(y)315
+b(via)h Fu(v)p 17624 10508 V 419 w(data)582 b(=)f(NV)p
+23273 10508 V 419 w(DATA)p 26016 10508 V 419 w(S\(v\))315
+b Fw(and)g(then)g(access)g Fu(v)p 37438 10508 V 418 w(data[i])h
+Fw(within)h(the)e(lo)31 b(op)316 b(than)6767 11836 y(it)370
+b(is)f(to)h(use)f Fu(NV)p 13485 11836 V 419 w(Ith)p 15647
+11836 V 419 w(S\(v,i\))g Fw(within)i(the)f(lo)31 b(op.)p
+Black 5660 14823 a Fn(\262)p Black 1682 w @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1422 b Fw(The)294 b Fs(nvector)p
+16528 14823 368 45 v 441 w(serial)f Fw(constructor)i(functions)f
+Fu(N)p 31689 14823 349 45 v 419 w(VNewEmpty)p 37337 14823
+V 420 w(Serial)p Fw(,)310 b Fu(N)p 42441 14823 V 418
+w(VMake)p 45764 14823 V 420 w(Serial)p Fw(,)g(and)6767
+16152 y Fu(N)p 7418 16152 V 419 w(VNewVectorArrayEmpty)p
+19457 16152 V 421 w(Serial)247 b Fw(set)f(the)h(\257eld)f
+Fq(own)p 31197 16152 340 45 v 407 w(data)f Fw(=)h Fu(FALSE)p
+Fw(.)h(The)g(functions)g Fu(N)p 45866 16152 349 45 v
+419 w(VDestroy)p 50933 16152 V 419 w(Serial)6767 17480
+y Fw(and)j Fu(N)p 9451 17480 V 418 w(VDestroyVectorArray)p
+20908 17480 V 421 w(Serial)g Fw(will)h(not)e(attempt)i(to)f(free)e(the)
+i(p)31 b(oin)-31 b(ter)249 b Fq(data)f Fw(for)h(an)-31
+b(y)250 b Fu(N)p 48165 17480 V 418 w(Vector)6767 18808
+y Fw(with)328 b Fq(own)p 11238 18808 340 45 v 407 w(data)d
+Fw(set)i(to)g Fu(FALSE)p Fw(.)g(In)f(suc)-31 b(h)326
+b(a)h(case,)335 b(it)327 b(is)f(the)h(user's)e(resp)31
+b(onsibilit)-31 b(y)328 b(to)g(deallo)31 b(cate)328 b(the)f
+Fq(data)6767 20137 y Fw(p)31 b(oin)-31 b(ter.)p Black
+5660 23124 a Fn(\262)p Black 1682 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+
+
+ at endspecial Fd(!)1506 b Fw(T)-92 b(o)377 b(maximize)j(e\261ciency)-92
+b(,)380 b(v)-31 b(ector)378 b(op)31 b(erations)378 b(in)g(the)f
+Fs(nvector)p 37943 23124 368 45 v 441 w(serial)f Fw(implemen)-31
+b(tation)382 b(that)6767 24452 y(ha)-31 b(v)g(e)470 b(more)g(than)f
+(one)g Fu(N)p 17752 24452 349 45 v 419 w(Vector)h Fw(argumen)-31
+b(t)470 b(do)f(not)h(c)-31 b(hec)g(k)469 b(for)g(consisten)-31
+b(t)470 b(in)-31 b(ternal)471 b(represen)-31 b(tation)6767
+25780 y(of)472 b(these)f(v)-31 b(ectors.)800 b(It)471
+b(is)g(the)h(user's)e(resp)31 b(onsibilit)-31 b(y)473
+b(to)f(ensure)e(that)j(suc)-31 b(h)470 b(routines)i(are)f(called)i
+(with)6767 27109 y Fu(N)p 7418 27109 V 419 w(Vector)370
+b Fw(argumen)-31 b(ts)370 b(that)h(w)-31 b(ere)369 b(all)h(created)g
+(with)g(the)g(same)f(in)-31 b(ternal)371 b(represen)-31
+b(tations.)4000 30768 y Fr(8.2)1793 b(The)598 b(NVECTOR)p
+21012 30768 538 45 v 646 w(P)-149 b(ARALLEL)598 b(implemen)-50
+b(tation)4000 33192 y Fw(The)278 b(parallel)h(implemen)-31
+b(tation)281 b(of)d(the)f Fs(nvector)h Fw(mo)31 b(dule)278
+b(pro)-31 b(vided)278 b(with)g Fs(sundials)p Fw(,)296
+b Fs(nvector)p 46435 33192 368 45 v 440 w(p)-74 b(arallel)p
+Fw(,)4000 34521 y(de\257nes)345 b(the)i Fq(c)-57 b(ontent)347
+b Fw(\257eld)f(of)h Fu(N)p 17613 34521 349 45 v 418 w(Vector)g
+Fw(to)g(b)31 b(e)345 b(a)i(structure)e(con)-31 b(taining)349
+b(the)e(global)h(and)e(lo)31 b(cal)348 b(lengths)f(of)g(the)4000
+35849 y(v)-31 b(ector,)479 b(a)457 b(p)31 b(oin)-31 b(ter)457
+b(to)g(the)f(b)31 b(eginning)458 b(of)f(a)f(con)-31 b(tiguous)459
+b(lo)31 b(cal)457 b(data)h(arra)-31 b(y)-92 b(,)479 b(an)456
+b Fs(MPI)g Fw(comm)-31 b(unicator,)481 b(an)457 b(a)4000
+37177 y(b)31 b(o)g(olean)370 b(\260ag)g Fq(own)p 12203
+37177 340 45 v 407 w(data)e Fw(indicating)k(o)-31 b(wnership)370
+b(of)g(the)f(data)i(arra)-31 b(y)369 b Fq(data)p Fw(.)p
+Black Black 4000 39383 a Fu(struct)582 b(_N_VectorContent_Parallel)j({)
+5162 40711 y(long)d(int)g(local_length;)5162 42040 y(long)g(int)g
+(global_length;)5162 43368 y(booleantype)h(own_data;)5162
+44696 y(realtype)g(*data;)5162 46025 y(MPI_Comm)g(comm;)4000
+47353 y(};)4000 49559 y Fw(The)314 b(follo)-31 b(wing)318
+b(sev)-31 b(en)314 b(macros)g(are)g(pro)-31 b(vided)315
+b(to)g(access)f(the)g(con)-31 b(ten)g(t)316 b(of)e(a)h
+Fs(nvector)p 40786 49559 368 45 v 440 w(p)-74 b(arallel)315
+b Fw(v)-31 b(ector.)476 b(The)4000 50887 y(su\261x)p
+6997 50887 349 45 v 788 w Fu(P)369 b Fw(in)g(the)h(names)f(denotes)h
+(parallel)h(v)-31 b(ersion.)p Black 5660 53093 a Fn(\262)p
+Black 554 w Fu(NV)p 7999 53093 V 419 w(CONTENT)p 12485
+53093 V 420 w(P)6767 54862 y Fw(This)370 b(macro)g(giv)-31
+b(es)370 b(access)f(to)h(the)f(con)-31 b(ten)g(ts)371
+b(of)e(the)h(parallel)h(v)-31 b(ector)370 b Fu(N)p 37316
+54862 V 418 w(Vector)p Fw(.)6767 56631 y(The)355 b(assignmen)-31
+b(t)357 b Fu(v)p 15366 56631 V 419 w(cont)581 b(=)h(NV)p
+21015 56631 V 418 w(CONTENT)p 25500 56631 V 420 w(P\(v\))355
+b Fw(sets)f Fu(v)p 31330 56631 V 419 w(cont)h Fw(to)h(b)31
+b(e)354 b(a)h(p)31 b(oin)-31 b(ter)356 b(to)f(the)g Fu(N)p
+45780 56631 V 419 w(Vector)h Fw(con-)6767 57960 y(ten)-31
+b(t)371 b(structure)d(of)i(t)-31 b(yp)31 b(e)370 b Fu(struct)p
+21710 57960 V 1000 w(N)p 22710 57960 V 419 w(VectorParallelContent)p
+Fw(.)6767 59729 y(Implemen)-31 b(tation:)6767 61498 y
+Fu(#define)583 b(NV_CONTENT_P\(v\))g(\()e
+(\(N_VectorContent_Parallel\)\(v->content\))587 b(\))p
+Black 5660 63708 a Fn(\262)p Black 554 w Fu(NV)p 7999
+63708 V 419 w(OWN)p 10161 63708 V 419 w(DATA)p 12904
+63708 V 419 w(P)p Fw(,)370 b Fu(NV)p 15743 63708 V 418
+w(DATA)p 18485 63708 V 419 w(P)p Fw(,)g Fu(NV)p 21324
+63708 V 419 w(LOCLENGTH)p 26972 63708 V 420 w(P)p Fw(,)f
+Fu(NV)p 29811 63708 V 419 w(GLOBLENGTH)p 36040 63708
+V 420 w(P)6767 65477 y Fw(These)g(macros)h(giv)-31 b(e)370
+b(individual)i(access)d(to)h(the)f(parts)g(of)h(the)f(con)-31
+b(ten)g(t)371 b(of)f(a)f(parallel)i Fu(N)p 44449 65477
+V 419 w(Vector)p Fw(.)6767 67246 y(The)341 b(assignmen)-31
+b(t)342 b Fu(v)p 15337 67246 V 418 w(data)582 b(=)f(NV)p
+20985 67246 V 419 w(DATA)p 23728 67246 V 419 w(P\(v\))340
+b Fw(sets)g Fu(v)p 29528 67246 V 419 w(data)g Fw(to)h(b)31
+b(e)340 b(a)g(p)31 b(oin)-31 b(ter)341 b(to)g(the)f(\257rst)g(comp)31
+b(onen)-31 b(t)341 b(of)6767 68574 y(the)276 b(lo)31
+b(cal)276 b(data)h(for)e(the)g Fu(N)p 17590 68574 V 419
+w(Vector)g(v)p Fw(.)461 b(The)276 b(assignmen)-31 b(t)276
+b Fu(NV)p 32069 68574 V 419 w(DATA)p 34812 68574 V 419
+w(P\(v\))582 b(=)f(v)p 39880 68574 V 419 w(data)275 b
+Fw(sets)g(the)g(comp)31 b(onen)-31 b(t)6767 69903 y(arra)g(y)370
+b(of)g Fu(v)f Fw(to)h(b)31 b(e)368 b Fu(v)p 15385 69903
+V 419 w(data)i Fw(b)-31 b(y)369 b(storing)h(the)g(p)31
+b(oin)-31 b(ter)370 b Fu(v)p 30038 69903 V 418 w(data)p
+Fw(.)6767 71672 y(The)407 b(assignmen)-31 b(t)408 b Fu(v)p
+15469 71672 V 419 w(llen)581 b(=)h(NV)p 21118 71672 V
+418 w(LOCLENGTH)p 26765 71672 V 420 w(P\(v\))407 b Fw(sets)f
+Fu(v)p 32699 71672 V 418 w(llen)h Fw(to)g(b)31 b(e)406
+b(the)h(length)g(of)g(the)g(lo)31 b(cal)407 b(part)6767
+73000 y(of)370 b Fu(v)p Fw(.)493 b(The)369 b(call)i Fu(NV)p
+14946 73000 V 418 w(LENGTH)p 18850 73000 V 420 w(P\(v\))581
+b(=)h(llen)p 25662 73000 V 419 w(v)369 b Fw(sets)g(the)g(lo)31
+b(cal)371 b(length)f(of)g Fu(v)f Fw(to)h(b)31 b(e)369
+b Fu(llen)p 44493 73000 V 419 w(v)p Fw(.)6767 74769 y(The)517
+b(assignmen)-31 b(t)518 b Fu(v)p 15689 74769 V 419 w(glen)582
+b(=)f(NV)p 21338 74769 V 419 w(GLOBLENGTH)p 27567 74769
+V 420 w(P\(v\))516 b Fw(sets)h Fu(v)p 33721 74769 V 418
+w(glen)g Fw(to)g(b)31 b(e)516 b(the)h(global)i(length)f(of)f(the)6767
+76098 y(v)-31 b(ector)370 b Fu(v)p Fw(.)493 b(The)369
+b(call)i Fu(NV)p 17009 76098 V 419 w(GLOBLENGTH)p 23238
+76098 V 419 w(P\(v\))582 b(=)g(glen)p 30050 76098 V 419
+w(v)369 b Fw(sets)f(the)i(global)h(length)g(of)e Fu(v)g
+Fw(to)h(b)31 b(e)369 b Fu(glen)p 49526 76098 V 419 w(v)p
+Fw(.)6767 77867 y(Implemen)-31 b(tation:)p Black Black
+eop
+%%Page: 130 140
+130 139 bop Black 0 2701 a Fx(130)24583 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black 2767 6974 a Fu(#define)583 b(NV_OWN_DATA_P\(v\))1745
+b(\()582 b(NV_CONTENT_P\(v\)->own_data)j(\))2767 8698
+y(#define)e(NV_DATA_P\(v\))4069 b(\()582 b(NV_CONTENT_P\(v\)->data)i
+(\))2767 10421 y(#define)f(NV_LOCLENGTH_P\(v\))1164 b(\()582
+b(NV_CONTENT_P\(v\)->local_length)j(\))2767 12145 y(#define)e
+(NV_GLOBLENGTH_P\(v\))g(\()f(NV_CONTENT_P\(v\)->global_length)j(\))p
+Black 1660 14264 a Fn(\262)p Black 554 w Fu(NV)p 3999
+14264 349 45 v 419 w(COMM)p 6742 14264 V 419 w(P)2767
+15988 y Fw(This)393 b(macro)h(pro)-31 b(vides)392 b(access)h(to)g(the)g
+Fs(MPI)e Fw(comm)-31 b(unicator)396 b(used)c(b)-31 b(y)393
+b(the)f Fs(nvector)p 40443 15988 368 45 v 441 w(p)-74
+b(arallel)394 b Fw(v)-31 b(ec-)2767 17316 y(tors.)2767
+19040 y(Implemen)g(tation:)2767 20763 y Fu(#define)583
+b(NV_COMM_P\(v\))g(\()e(NV_CONTENT_P\(v\)->comm)j(\))p
+Black 1660 22882 a Fn(\262)p Black 554 w Fu(NV)p 3999
+22882 349 45 v 419 w(Ith)p 6161 22882 V 419 w(P)2767
+24606 y Fw(This)370 b(macro)g(giv)-31 b(es)370 b(access)f(to)h(the)f
+(individual)j(comp)31 b(onen)-31 b(ts)370 b(of)g(the)f(lo)31
+b(cal)371 b(data)f(arra)-31 b(y)370 b(of)g(an)f Fu(N)p
+43801 24606 V 419 w(Vector)p Fw(.)2767 26330 y(The)g(assignmen)-31
+b(t)371 b Fu(r)581 b(=)g(NV)p 14299 26330 V 419 w(Ith)p
+16461 26330 V 419 w(P\(v,i\))369 b Fw(sets)f Fu(r)h Fw(to)g(b)31
+b(e)368 b(the)h(v)-61 b(alue)369 b(of)g(the)g Fu(i)p
+Fw(-th)g(comp)31 b(onen)-31 b(t)370 b(of)f(the)g(lo)31
+b(cal)2767 27658 y(part)456 b(of)f Fu(v)p Fw(.)750 b(The)455
+b(assignmen)-31 b(t)457 b Fu(NV)p 17619 27658 V 418 w(Ith)p
+19780 27658 V 419 w(P\(v,i\))582 b(=)g(r)455 b Fw(sets)f(the)h(v)-61
+b(alue)456 b(of)f(the)g Fu(i)p Fw(-th)h(comp)31 b(onen)-31
+b(t)456 b(of)g(the)2767 28987 y(lo)31 b(cal)371 b(part)f(of)f
+Fu(v)g Fw(to)h(b)31 b(e)369 b Fu(r)p Fw(.)2767 30710
+y(Here)g Fl(i)g Fw(ranges)h(from)f(0)h(to)g Fl(n)246
+b Fn(\241)g Fw(1,)370 b(where)f Fl(n)g Fw(is)h(the)f(lo)31
+b(cal)371 b(length.)2767 32434 y(Implemen)-31 b(tation:)2767
+34158 y Fu(#define)583 b(NV_Ith_P\(v,i\))g(\()e(NV_DATA_P\(v\)[i])i(\))
+0 36182 y Fw(The)384 b Fs(nvector)p 7017 36182 368 45
+v 441 w(p)-74 b(arallel)384 b Fw(mo)31 b(dule)385 b(de\257nes)e
+(parallel)j(implemen)-31 b(tations)387 b(of)e(all)g(v)-31
+b(ector)384 b(op)31 b(erations)385 b(listed)g(in)0 37510
+y(T)-92 b(able)370 b(8.1)h(and)e(pro)-31 b(vides)370
+b(the)f(follo)-31 b(wing)373 b(user-callable)d(routines:)p
+Black 1660 39534 a Fn(\262)p Black 554 w Fu(N)p 3418
+39534 349 45 v 419 w(VNew)p 6161 39534 V 419 w(Parallel)2767
+41258 y Fw(This)g(function)h(creates)e(and)g(allo)31
+b(cates)371 b(memory)g(for)e(a)g(parallel)i(v)-31 b(ector.)p
+Black Black 2767 43851 a Fu(N_Vector)583 b(N_VNew_Parallel\(MPI_Comm)h
+(comm,)17296 45180 y(long)e(int)f(local_length,)17296
+46508 y(long)h(int)f(global_length\);)p Black 1660 49102
+a Fn(\262)p Black 554 w Fu(N)p 3418 49102 V 419 w(VNewEmpty)p
+9066 49102 V 420 w(Parallel)2767 50825 y Fw(This)370
+b(function)h(creates)e(a)g(new)h(parallel)g Fu(N)p 21117
+50825 V 419 w(Vector)g Fw(with)g(an)g(empt)-31 b(y)370
+b(\()p Fu(NULL)p Fw(\))h(data)f(arra)-31 b(y)-92 b(.)p
+Black Black 2767 53419 a Fu(N_Vector)583 b
+(N_VNewEmpty_Parallel\(MPI_Comm)i(comm,)20202 54747 y(long)d(int)f
+(local_length,)20202 56076 y(long)h(int)f(global_length\);)p
+Black 1660 58669 a Fn(\262)p Black 554 w Fu(N)p 3418
+58669 V 419 w(VMake)p 6742 58669 V 419 w(Parallel)2767
+60393 y Fw(This)305 b(function)g(creates)e(and)h(allo)31
+b(cates)306 b(memory)f(for)f(a)g(parallel)h(v)-31 b(ector)305
+b(with)g(user-pro)-31 b(vided)303 b(data)i(arra)-31 b(y)-92
+b(.)p Black Black 2767 62986 a Fu(N_Vector)583 b
+(N_VMake_Parallel\(MPI_Comm)i(comm,)17877 64314 y(long)d(int)g
+(local_length,)17877 65643 y(long)g(int)g(global_length,)17877
+66971 y(realtype)h(*v_data\);)p Black 1660 69565 a Fn(\262)p
+Black 554 w Fu(N)p 3418 69565 V 419 w(VNewVectorArray)p
+12552 69565 V 421 w(Parallel)2767 71288 y Fw(This)370
+b(function)h(creates)e(an)g(arra)-31 b(y)370 b(of)f Fu(count)h
+Fw(parallel)h(v)-31 b(ectors.)p Black Black 2767 73882
+a Fu(N_Vector)583 b(*N_VNewVectorArray_Parallel\(int)j(count,)24270
+75210 y(MPI_Comm)c(comm,)24270 76539 y(long)g(int)f(local_length,)24270
+77867 y(long)h(int)f(global_length\);)p Black Black eop
+%%Page: 131 141
+131 140 bop Black 4000 2701 a Fx(8.3)425 b(NVECTOR)g(functions)g(used)h
+(b)-35 b(y)424 b(CV)-35 b(ODES)21603 b(131)p 4000 3144
+48001 45 v Black Black 5660 6974 a Fn(\262)p Black 554
+w Fu(N)p 7418 6974 349 45 v 419 w(VNewVectorArrayEmpty)p
+19457 6974 V 421 w(Parallel)6767 8843 y Fw(This)299 b(function)g
+(creates)e(an)i(arra)-31 b(y)298 b(of)g Fu(count)g Fw(parallel)i(v)-31
+b(ectors,)313 b(eac)-31 b(h)298 b(with)h(an)f(empt)-31
+b(y)299 b(\()p Fu(NULL)p Fw(\))g(data)g(arra)-31 b(y)-92
+b(.)p Black Black 6767 11966 a Fu(N_Vector)583 b
+(*N_VNewVectorArrayEmpty_Parallel\(int)j(count,)31176
+13294 y(MPI_Comm)c(comm,)31176 14622 y(long)f(int)h(local_length,)31176
+15951 y(long)f(int)h(global_length\);)p Black 5660 19073
+a Fn(\262)p Black 554 w Fu(N)p 7418 19073 V 419 w(VDestroyVectorArray)p
+18876 19073 V 421 w(Parallel)6767 20942 y Fw(This)305
+b(function)g(frees)e(memory)i(allo)31 b(cated)307 b(for)d(the)g(arra)
+-31 b(y)305 b(of)f Fu(count)h Fw(v)-61 b(ariables)304
+b(of)h(t)-31 b(yp)31 b(e)304 b Fu(N)p 44352 20942 V 419
+w(Vector)h Fw(created)6767 22271 y(with)371 b Fu(N)p
+9940 22271 V 418 w(VNewVectorArray)p 19073 22271 V 421
+w(Parallel)f Fw(or)f(with)i Fu(N)p 28971 22271 V 418
+w(VNewVectorArrayEmpty)p 41009 22271 V 422 w(Parallel)p
+Fw(.)6767 24140 y Fu(void)582 b
+(N_VDestroyVectorArray_Parallel\(N_Vector)587 b(*vs,)582
+b(int)f(count\);)p Black 5660 26549 a Fn(\262)p Black
+554 w Fu(N)p 7418 26549 V 419 w(VPrint)p 11323 26549
+V 419 w(Parallel)6767 28418 y Fw(This)370 b(function)h(prin)-31
+b(ts)369 b(the)g(con)-31 b(ten)g(t)371 b(of)f(a)f(parallel)i(v)-31
+b(ector)370 b(to)g(stdout.)6767 30287 y Fu(void)582 b
+(N_VPrint_Parallel\(N_Vector)j(v\);)4000 33424 y Fx(Notes)p
+Black 5660 35785 a Fn(\262)p Black 554 w Fw(When)438
+b(lo)31 b(oping)440 b(o)-31 b(v)g(er)438 b(the)g(comp)31
+b(onen)-31 b(ts)439 b(of)g(an)f Fu(N)p 28203 35785 V
+419 w(Vector)g(v)p Fw(,)456 b(it)438 b(is)g(more)h(e\261cien)-31
+b(t)439 b(to)g(\257rst)e(obtain)j(the)6767 37113 y(lo)31
+b(cal)314 b(comp)31 b(onen)-31 b(t)314 b(arra)-31 b(y)312
+b(via)i Fu(v)p 20173 37113 V 418 w(data)582 b(=)f(NV)p
+25821 37113 V 419 w(DATA)p 28564 37113 V 419 w(P\(v\))312
+b Fw(and)h(then)f(access)g Fu(v)p 39975 37113 V 419 w(data[i])h
+Fw(within)g(the)g(lo)31 b(op)6767 38442 y(than)370 b(it)g(is)f(to)h
+(use)f Fu(NV)p 16068 38442 V 419 w(Ith)p 18230 38442
+V 419 w(P\(v,i\))g Fw(within)i(the)f(lo)31 b(op.)p Black
+5660 41628 a Fn(\262)p Black 1682 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+
+
+ at endspecial Fd(!)1375 b Fw(The)246 b Fs(nvector)p 16433
+41628 368 45 v 441 w(p)-74 b(arallel)247 b Fw(constructor)g(functions)g
+Fu(N)p 32969 41628 349 45 v 419 w(VNewEmpty)p 38617 41628
+V 419 w(Parallel)p Fw(,)273 b Fu(N)p 44845 41628 V 418
+w(VMake)p 48168 41628 V 419 w(Parallel)p Fw(,)6767 42957
+y(and)247 b Fu(N)p 9448 42957 V 418 w(VNewVectorArrayEmpty)p
+21486 42957 V 422 w(Parallel)g Fw(set)f(the)h(\257eld)f
+Fq(own)p 34389 42957 340 45 v 407 w(data)f Fw(=)h Fu(FALSE)p
+Fw(.)h(The)g(functions)g Fu(N)p 49058 42957 349 45 v
+418 w(VDestroy)p 54124 42957 V 420 w(Parallel)6767 44285
+y Fw(and)574 b Fu(N)p 9775 44285 V 419 w(VDestroyVectorArray)p
+21233 44285 V 421 w(Parallel)h Fw(will)g(not)g(attempt)h(to)e(free)f
+(the)h(p)31 b(oin)-31 b(ter)575 b Fq(data)d Fw(for)i(an)-31
+b(y)6767 45613 y Fu(N)p 7418 45613 V 419 w(Vector)292
+b Fw(with)g Fq(own)p 15980 45613 340 45 v 407 w(data)e
+Fw(set)h(to)h Fu(FALSE)p Fw(.)g(In)e(suc)-31 b(h)291
+b(a)g(case,)308 b(it)291 b(is)g(the)h(user's)e(resp)31
+b(onsibilit)-31 b(y)293 b(to)e(deallo)31 b(cate)6767
+46942 y(the)370 b Fq(data)e Fw(p)31 b(oin)-31 b(ter.)p
+Black 5660 50128 a Fn(\262)p Black 1682 w @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1602 b Fw(T)-92 b(o)474
+b(maximize)h(e\261ciency)-92 b(,)500 b(v)-31 b(ector)474
+b(op)31 b(erations)475 b(in)e(the)h Fs(nvector)p 38736
+50128 368 45 v 440 w(p)-74 b(arallel)475 b Fw(implemen)-31
+b(tation)6767 51457 y(that)278 b(ha)-31 b(v)g(e)278 b(more)f(than)h
+(one)f Fu(N)p 19290 51457 349 45 v 418 w(Vector)h Fw(argumen)-31
+b(t)278 b(do)f(not)g(c)-31 b(hec)g(k)278 b(for)e(consisten)-31
+b(t)278 b(in)-31 b(ternal)279 b(represen)-31 b(tation)6767
+52785 y(of)458 b(these)e(v)-31 b(ectors.)756 b(It)457
+b(is)g(the)g(user's)f(resp)31 b(onsabilit)-31 b(y)458
+b(to)g(ensure)d(that)j(suc)-31 b(h)457 b(routines)g(are)g(called)h
+(with)6767 54114 y Fu(N)p 7418 54114 V 419 w(Vector)370
+b Fw(argumen)-31 b(ts)370 b(that)h(w)-31 b(ere)369 b(all)h(created)g
+(with)g(the)g(same)f(in)-31 b(ternal)371 b(represen)-31
+b(tations.)4000 58034 y Fr(8.3)1793 b(NVECTOR)598 b(functions)h(used)f
+(b)-50 b(y)599 b(CV)-50 b(ODES)4000 60549 y Fw(In)314
+b(T)-92 b(able)315 b(8.2)g(b)31 b(elo)-31 b(w,)327 b(w)-31
+b(e)314 b(list)h(the)g(v)-31 b(ector)315 b(functions)g(in)f(the)g
+Fs(nvector)g Fw(mo)31 b(dule)316 b(within)f(the)g Fs(cv)-25
+b(odes)314 b Fw(pac)-31 b(k)-61 b(age.)4000 61878 y(The)373
+b(table)h(also)g(sho)-31 b(ws,)375 b(for)e(eac)-31 b(h)373
+b(function,)j(whic)-31 b(h)374 b(of)f(the)g(co)31 b(de)373
+b(mo)31 b(dules)374 b(uses)e(the)h(function.)505 b(The)373
+b Fs(cv)-25 b(odes)4000 63206 y Fw(column)312 b(sho)-31
+b(ws)311 b(function)h(usage)g(within)g(the)f(main)i(in)-31
+b(tegrator)312 b(mo)31 b(dule,)324 b(while)313 b(the)e(remaining)h(sev)
+-31 b(en)311 b(columns)4000 64534 y(sho)-31 b(w)353 b(function)g(usage)
+f(within)i(eac)-31 b(h)353 b(of)f(the)g(four)g Fs(cv)-25
+b(odes)353 b Fw(linear)g(solv)-31 b(ers,)356 b(the)c
+Fs(cvbandpre)h Fw(and)f Fs(cvbbdpre)4000 65863 y Fw(preconditioner)370
+b(mo)31 b(dules,)371 b(and)e(the)h Fs(cv)-25 b(odea)369
+b Fw(adjoin)-31 b(t)372 b(sensitivit)-31 b(y)371 b(mo)31
+b(dule.)5660 67240 y(There)429 b(is)f(one)h(subtlet)-31
+b(y)430 b(in)f(the)g Fs(cvspgmr)f Fw(column)i(hidden)e(b)-31
+b(y)429 b(the)g(table.)672 b(The)429 b(dot)h(pro)31 b(duct)428
+b(function)4000 68568 y Fu(N)p 4651 68568 V 419 w(VDotProd)441
+b Fw(is)f(called)i(b)31 b(oth)440 b(within)i(the)f(implemen)-31
+b(tation)445 b(\257le)440 b Fu(cvspgmr.c)i Fw(for)e(the)g
+Fs(cvspgmr)g Fw(solv)-31 b(er)441 b(and)4000 69897 y(within)323
+b(the)f(implemen)-31 b(tation)326 b(\257les)c Fu(spgmr.c)h
+Fw(and)f Fu(iterative.c)h Fw(for)f(the)f(generic)h Fs(spgmr)f
+Fw(solv)-31 b(er)322 b(up)31 b(on)322 b(whic)-31 b(h)4000
+71225 y(the)391 b Fs(cvspgmr)f Fw(solv)-31 b(er)392 b(is)f(implemen)-31
+b(ted.)561 b(Also,)397 b(although)c Fu(N)p 30444 71225
+V 419 w(VDiv)e Fw(and)h Fu(N)p 36334 71225 V 418 w(VProd)g
+Fw(are)f(not)h(called)g(within)h(the)4000 72553 y(implemen)-31
+b(tation)409 b(\257le)c Fu(cvspgmr.c)p Fw(,)415 b(they)405
+b(are)f(called)i(within)g(the)f(implemen)-31 b(tation)409
+b(\257le)404 b Fu(spgmr.c)i Fw(and)f(so)f(are)4000 73882
+y(required)319 b(b)-31 b(y)319 b(the)g Fs(cvspgmr)f Fw(solv)-31
+b(er)320 b(mo)31 b(dule.)477 b(This)319 b(issue)g(do)31
+b(es)318 b(not)i(arise)f(for)g(the)g(other)h(three)f
+Fs(cv)-25 b(odes)319 b Fw(linear)4000 75210 y(solv)-31
+b(ers)403 b(b)31 b(ecause)402 b(the)h(generic)g Fs(dense)g
+Fw(and)g Fs(band)g Fw(solv)-31 b(ers)402 b(\(used)h(in)g(the)g
+(implemen)-31 b(tation)407 b(of)c Fs(cvdense)h Fw(and)4000
+76539 y Fs(cvband)p Fw(\))351 b(do)f(not)h(mak)-31 b(e)351
+b(calls)g(to)g(an)-31 b(y)351 b(v)-31 b(ector)351 b(functions)g(and)f
+Fs(cvdia)-25 b(g)350 b Fw(is)g(not)h(implemen)-31 b(ted)353
+b(using)d(a)h(generic)4000 77867 y(diagonal)372 b(solv)-31
+b(er.)p Black Black eop
+%%Page: 132 142
+132 141 bop Black 0 2701 a Fx(132)24583 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black Black Black 7512 7743 a Fw(T)-92 b(able)371 b(8.2:)493
+b(List)370 b(of)g(v)-31 b(ector)370 b(functions)g(usage)f(b)-31
+b(y)370 b(CV)-31 b(ODES)370 b(co)31 b(de)369 b(mo)31
+b(dules)p Black 9184 8777 29633 45 v 9162 15101 45 6325
+v 20788 15101 V 22220 14703 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 22220 14703 a Fs(cv)-25
+b(odes)26047 14703 y
+ currentpoint grestore moveto
+ 26047 14703 a 23039 15101 45 6325
+v 24471 14703 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 24471 14703 a Fs(cvdense)28916 14703
+y
+ currentpoint grestore moveto
+ 28916 14703 a 25289 15101 45 6325 v 26721 14703 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 26721
+14703 a Fs(cvband)30746 14703 y
+ currentpoint grestore moveto
+ 30746 14703 a 27540 15101
+45 6325 v 28972 14703 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 28972 14703 a Fs(cvdia)g(g)32695
+14703 y
+ currentpoint grestore moveto
+ 32695 14703 a 29791 15101 45 6325 v 31223 14703
+a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 31223 14703 a Fs(cvspgmr)35883 14703 y
+ currentpoint grestore moveto
+ 35883 14703
+a 32042 15101 45 6325 v 33474 14703 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 33474 14703 a Fs(cvbandpre)39400
+14703 y
+ currentpoint grestore moveto
+ 39400 14703 a 34293 15101 45 6325 v 35725 14703
+a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 35725 14703 a Fs(cvbbdpre)40935 14703 y
+ currentpoint grestore moveto
+ 40935 14703
+a 36543 15101 45 6325 v 37975 14703 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 37975 14703 a Fs(cv)g(odea)41975
+14703 y
+ currentpoint grestore moveto
+ 41975 14703 a 38794 15101 45 6325 v 9184 15146
+29633 45 v 9184 15367 V 9162 16695 45 1329 v 15659 16297
+a Fu(N)p 16310 16297 349 45 v 419 w(VClone)p 20788 16695
+45 1329 v 1329 w Fb(X)p 23039 16695 V 25289 16695 V 27540
+16695 V 5831 w(X)p 29791 16695 V 1328 w(X)p 32042 16695
+V 34293 16695 V 36543 16695 V 5831 w(X)p 38794 16695
+V 9184 16740 29633 45 v 9162 18068 45 1329 v 14497 17670
+a Fu(N)p 15148 17670 349 45 v 419 w(VDestroy)p 20788
+18068 45 1329 v 1329 w Fb(X)p 23039 18068 V 25289 18068
+V 27540 18068 V 5831 w(X)p 29791 18068 V 1328 w(X)p 32042
+18068 V 34293 18068 V 36543 18068 V 5831 w(X)p 38794
+18068 V 9184 18112 29633 45 v 9162 19441 45 1329 v 15659
+19042 a Fu(N)p 16310 19042 349 45 v 419 w(VSpace)p 20788
+19441 45 1329 v 1329 w Fb(X)p 23039 19441 V 25289 19441
+V 27540 19441 V 29791 19441 V 32042 19441 V 34293 19441
+V 36543 19441 V 38794 19441 V 9184 19485 29633 45 v 9162
+20813 45 1329 v 9848 20415 a Fu(N)p 10499 20415 349 45
+v 418 w(VGetArrayPointer)p 20788 20813 45 1329 v 23039
+20813 V 3582 w Fb(X)p 25289 20813 V 1329 w(X)p 27540
+20813 V 29791 20813 V 32042 20813 V 5830 w(X)p 34293
+20813 V 1329 w(X)p 36543 20813 V 38794 20813 V 9184 20858
+29633 45 v 9162 22186 45 1329 v 9848 21787 a Fu(N)p 10499
+21787 349 45 v 418 w(VSetArrayPointer)p 20788 22186 45
+1329 v 23039 22186 V 3582 w Fb(X)p 25289 22186 V 27540
+22186 V 29791 22186 V 32042 22186 V 34293 22186 V 36543
+22186 V 38794 22186 V 9184 22230 29633 45 v 9162 23559
+45 1329 v 13335 23160 a Fu(N)p 13986 23160 349 45 v 418
+w(VLinearSum)p 20788 23559 45 1329 v 1330 w Fb(X)p 23039
+23559 V 1329 w(X)p 25289 23559 V 27540 23559 V 3580 w(X)p
+29791 23559 V 1328 w(X)p 32042 23559 V 34293 23559 V
+36543 23559 V 5831 w(X)p 38794 23559 V 9184 23603 29633
+45 v 9162 24931 45 1329 v 15659 24533 a Fu(N)p 16310
+24533 349 45 v 419 w(VConst)p 20788 24931 45 1329 v 1329
+w Fb(X)p 23039 24931 V 25289 24931 V 27540 24931 V 29791
+24931 V 8081 w(X)p 32042 24931 V 34293 24931 V 36543
+24931 V 38794 24931 V 9184 24975 29633 45 v 9162 26304
+45 1329 v 16240 25905 a Fu(N)p 16891 25905 349 45 v 419
+w(VProd)p 20788 26304 45 1329 v 1329 w Fb(X)p 23039 26304
+V 25289 26304 V 27540 26304 V 5831 w(X)p 29791 26304
+V 1328 w(X)p 32042 26304 V 34293 26304 V 36543 26304
+V 38794 26304 V 9184 26348 29633 45 v 9162 27676 45 1329
+v 16822 27278 a Fu(N)p 17473 27278 349 45 v 418 w(VDiv)p
+20788 27676 45 1329 v 1329 w Fb(X)p 23039 27676 V 25289
+27676 V 27540 27676 V 5831 w(X)p 29791 27676 V 1328 w(X)p
+32042 27676 V 34293 27676 V 36543 27676 V 38794 27676
+V 9184 27721 29633 45 v 9162 29049 45 1329 v 15659 28651
+a Fu(N)p 16310 28651 349 45 v 419 w(VScale)p 20788 29049
+45 1329 v 1329 w Fb(X)p 23039 29049 V 1329 w(X)p 25289
+29049 V 1329 w(X)p 27540 29049 V 1329 w(X)p 29791 29049
+V 1328 w(X)p 32042 29049 V 1329 w(X)p 34293 29049 V 1329
+w(X)p 36543 29049 V 1329 w(X)p 38794 29049 V 9184 29093
+29633 45 v 9162 30422 45 1329 v 16822 30023 a Fu(N)p
+17473 30023 349 45 v 418 w(VAbs)p 20788 30422 45 1329
+v 1329 w Fb(X)p 23039 30422 V 25289 30422 V 27540 30422
+V 29791 30422 V 32042 30422 V 34293 30422 V 36543 30422
+V 38794 30422 V 9184 30466 29633 45 v 9162 31794 45 1329
+v 16822 31396 a Fu(N)p 17473 31396 349 45 v 418 w(VInv)p
+20788 31794 45 1329 v 1329 w Fb(X)p 23039 31794 V 25289
+31794 V 27540 31794 V 5831 w(X)p 29791 31794 V 32042
+31794 V 34293 31794 V 36543 31794 V 38794 31794 V 9184
+31839 29633 45 v 9162 33167 45 1329 v 13916 32768 a Fu(N)p
+14567 32768 349 45 v 418 w(VAddConst)p 20788 33167 45
+1329 v 1330 w Fb(X)p 23039 33167 V 25289 33167 V 27540
+33167 V 5831 w(X)p 29791 33167 V 32042 33167 V 34293
+33167 V 36543 33167 V 38794 33167 V 9184 33211 29633
+45 v 9162 34540 45 1329 v 14497 34141 a Fu(N)p 15148
+34141 349 45 v 419 w(VDotProd)p 20788 34540 45 1329 v
+23039 34540 V 25289 34540 V 27540 34540 V 29791 34540
+V 10332 w Fb(X)p 32042 34540 V 34293 34540 V 36543 34540
+V 38794 34540 V 9184 34584 29633 45 v 9162 35912 45 1329
+v 14497 35514 a Fu(N)p 15148 35514 349 45 v 419 w(VMaxNorm)p
+20788 35912 45 1329 v 1329 w Fb(X)p 23039 35912 V 25289
+35912 V 27540 35912 V 29791 35912 V 32042 35912 V 34293
+35912 V 36543 35912 V 38794 35912 V 9184 35956 29633
+45 v 9162 37285 45 1329 v 13916 36886 a Fu(N)p 14567
+36886 349 45 v 418 w(VWrmsNorm)p 20788 37285 45 1329
+v 1330 w Fb(X)p 23039 37285 V 1329 w(X)p 25289 37285
+V 1329 w(X)p 27540 37285 V 29791 37285 V 3579 w(X)p 32042
+37285 V 1329 w(X)p 34293 37285 V 1329 w(X)p 36543 37285
+V 38794 37285 V 9184 37329 29633 45 v 9162 38657 45 1329
+v 16822 38259 a Fu(N)p 17473 38259 349 45 v 418 w(VMin)p
+20788 38657 45 1329 v 1329 w Fb(X)p 23039 38657 V 25289
+38657 V 27540 38657 V 29791 38657 V 32042 38657 V 34293
+38657 V 36543 38657 V 38794 38657 V 9184 38702 29633
+45 v 9162 40030 45 1329 v 14497 39632 a Fu(N)p 15148
+39632 349 45 v 419 w(VCompare)p 20788 40030 45 1329 v
+23039 40030 V 25289 40030 V 27540 40030 V 8082 w Fb(X)p
+29791 40030 V 32042 40030 V 34293 40030 V 36543 40030
+V 38794 40030 V 9184 40074 29633 45 v 9162 41403 45 1329
+v 14497 41004 a Fu(N)p 15148 41004 349 45 v 419 w(VInvTest)p
+20788 41403 45 1329 v 23039 41403 V 25289 41403 V 27540
+41403 V 8082 w Fb(X)p 29791 41403 V 32042 41403 V 34293
+41403 V 36543 41403 V 38794 41403 V 9184 41447 29633
+45 v Black 1660 44768 a Fw(A)-31 b(t)332 b(this)g(p)31
+b(oin)-31 b(t,)340 b(w)-31 b(e)332 b(should)f(emphasize)h(that)h(the)e
+Fs(cv)-25 b(odes)332 b Fw(user)e(do)31 b(es)331 b(not)g(need)g(to)h
+(kno)-31 b(w)333 b(an)-31 b(ything)333 b(ab)31 b(out)0
+46096 y(the)317 b(usage)g(of)g(v)-31 b(ector)318 b(functions)g(b)-31
+b(y)317 b(the)g Fs(cv)-25 b(odes)317 b Fw(co)31 b(de)317
+b(mo)31 b(dules)317 b(in)g(order)f(to)i(use)e Fs(cv)-25
+b(odes)p Fw(.)476 b(The)317 b(information)0 47425 y(is)369
+b(presen)-31 b(ted)369 b(as)g(an)g(implemen)-31 b(tation)374
+b(detail)d(for)e(the)h(in)-31 b(terested)369 b(reader.)1660
+48753 y(The)264 b(v)-31 b(ector)263 b(functions)h(listed)g(in)f(T)-92
+b(able)264 b(8.1)g(that)g(are)e Fq(not)h Fw(used)f(b)-31
+b(y)263 b Fs(cv)-25 b(odes)263 b Fw(are:)440 b Fu(N)p
+37036 48753 349 45 v 418 w(VWL2Norm)p Fw(,)286 b Fu(N)p
+43276 48753 V 418 w(VL1Norm)p Fw(,)0 50081 y Fu(N)p 651
+50081 V 419 w(VWrmsNormMask)p Fw(,)k Fu(N)p 9801 50081
+V 418 w(VConstrMask)p Fw(,)g Fu(N)p 17788 50081 V 418
+w(VCloneEmpty)p Fw(,)g(and)267 b Fu(N)p 27825 50081 V
+419 w(VMinQuotient)p Fw(.)460 b(Therefore)268 b(a)f(user-supplied)0
+51410 y Fs(nvector)369 b Fw(mo)31 b(dule)370 b(for)g
+Fs(cv)-25 b(odes)369 b Fw(could)h(omit)h(these)e(\257v)-31
+b(e)369 b(k)-31 b(ernels.)p Black Black eop
+%%Page: 133 143
+133 142 bop Black Black 4000 15296 a Ft(Chapter)861 b(9)4000
+20851 y Fv(Pro)-86 b(viding)1033 b(Alternate)g(Linear)g(Solv)-86
+b(er)4000 24172 y(Mo)86 b(dules)4000 29949 y Fw(The)404
+b(cen)-31 b(tral)406 b Fs(cv)-25 b(odes)404 b Fw(mo)31
+b(dule)405 b(in)-31 b(terfaces)405 b(with)h(the)e(linear)h(solv)-31
+b(er)405 b(mo)31 b(dule)405 b(to)g(b)31 b(e)404 b(used)f(b)-31
+b(y)405 b(w)-31 b(a)g(y)405 b(of)g(calls)g(to)4000 31277
+y(four)318 b(routines.)476 b(These)318 b(are)g(denoted)g(here)g(b)-31
+b(y)318 b Fu(linit)p Fw(,)329 b Fu(lsetup)p Fw(,)g Fu(lsolve)p
+Fw(,)h(and)318 b Fu(lfree)p Fw(.)476 b(Brie\260y)-92
+b(,)329 b(their)318 b(purp)31 b(oses)4000 32605 y(are)369
+b(as)g(follo)-31 b(ws:)p Black 5660 34880 a Fn(\262)p
+Black 554 w Fu(linit)p Fw(:)494 b(initialize)372 b(and)d(allo)31
+b(cate)372 b(memory)e(sp)31 b(eci\257c)369 b(to)h(the)f(linear)h(solv)
+-31 b(er;)p Black 5660 37175 a Fn(\262)p Black 554 w
+Fu(lsetup)p Fw(:)494 b(prepro)31 b(cess)367 b(and)j(ev)-61
+b(aluate)370 b(the)g(Jacobian)g(or)f(preconditioner;)p
+Black 5660 39470 a Fn(\262)p Black 554 w Fu(lsolve)p
+Fw(:)494 b(solv)-31 b(e)370 b(the)f(linear)h(system;)p
+Black 5660 41765 a Fn(\262)p Black 554 w Fu(lfree)p Fw(:)494
+b(free)368 b(the)i(linear)g(solv)-31 b(er)369 b(memory)-92
+b(.)4000 44039 y(A)312 b(linear)h(solv)-31 b(er)313 b(mo)31
+b(dule)313 b(m)-31 b(ust)312 b(also)i(pro)-31 b(vide)312
+b(a)h(user-callable)g(sp)31 b(eci\257cation)314 b(routine)f(\(lik)-31
+b(e)314 b(those)e(describ)31 b(ed)312 b(in)4000 45368
+y Fn(x)p Fw(5.5.2\))251 b(whic)-31 b(h)250 b(will)g(attac)-31
+b(h)251 b(the)d(ab)31 b(o)-31 b(v)g(e)250 b(four)f(routines)g(to)g(the)
+g(main)h Fs(cv)-25 b(odes)249 b Fw(memory)g(blo)31 b(c)-31
+b(k.)454 b(The)248 b(return)g(v)-61 b(alue)4000 46696
+y(of)344 b(the)f(sp)31 b(eci\257cation)345 b(routine)f(should)g(b)31
+b(e:)479 b Fu(CV*)p 24412 46696 349 45 v 419 w(SUCCESS)344
+b Fw(=)f(0)h(if)g(the)f(routine)h(w)-31 b(as)344 b(successful,)349
+b Fu(CV*)p 47165 46696 V 419 w(MEM)p 49327 46696 V 418
+w(FAIL)4000 48024 y Fw(=)415 b(-4)h(if)g(a)g(memory)g(allo)31
+b(cation)419 b(failed,)429 b Fu(CV*)p 23248 48024 V 419
+w(ILL)p 25410 48024 V 419 w(INPUT)416 b Fw(=)f(-3)h(if)g(some)f(input)i
+(w)-31 b(as)416 b(illegal)i(or)d(the)h Fs(nvector)4000
+49353 y Fw(implemen)-31 b(tation)325 b(is)c(not)h(compatible,)334
+b(or)321 b Fu(CV*)p 23887 49353 V 419 w(MEM)p 26049 49353
+V 419 w(NULL)g Fw(=)g(-1)g(if)h(the)f(p)31 b(oin)-31
+b(ter)322 b(to)g(the)f(main)h Fs(cv)-25 b(odes)322 b
+Fw(memory)4000 50681 y(blo)31 b(c)-31 b(k)370 b(is)f
+Fu(NULL)p Fw(.)5660 52030 y(These)317 b(four)g(routines)h(that)g(in)-31
+b(terface)318 b(b)31 b(et)-31 b(w)g(een)318 b Fs(cv)-25
+b(odes)318 b Fw(and)f(the)g(linear)h(solv)-31 b(er)318
+b(mo)31 b(dule)318 b(necessarily)f(ha)-31 b(v)g(e)4000
+53358 y(\257xed)443 b(call)h(sequences.)713 b(Th)-31
+b(us,)462 b(a)443 b(user)f(wishing)i(to)g(implemen)-31
+b(t)445 b(another)f(linear)f(solv)-31 b(er)444 b(within)g(the)f
+Fs(cv)-25 b(odes)4000 54686 y Fw(pac)-31 b(k)-61 b(age)281
+b(m)-31 b(ust)280 b(adhere)g(to)h(this)f(set)f(of)i(in)-31
+b(terfaces.)464 b(The)280 b(follo)-31 b(wing)283 b(is)d(a)g(complete)h
+(description)g(of)f(the)g(argumen)-31 b(t)4000 56015
+y(list)367 b(for)g(eac)-31 b(h)367 b(of)g(these)g(routines.)492
+b(Note)367 b(that)h(the)f(argumen)-31 b(t)368 b(list)g(of)f(eac)-31
+b(h)367 b(routine)g(includes)g(a)g(p)31 b(oin)-31 b(ter)367
+b(to)h(the)4000 57343 y(main)417 b Fs(cv)-25 b(odes)416
+b Fw(memory)h(blo)31 b(c)-31 b(k,)429 b(b)-31 b(y)415
+b(whic)-31 b(h)417 b(the)f(routine)h(can)f(access)f(v)-61
+b(arious)416 b(data)h(related)f(to)g(the)g Fs(cv)-25
+b(odes)4000 58671 y Fw(solution.)770 b(The)462 b(con)-31
+b(ten)g(ts)462 b(of)g(this)f(memory)h(blo)31 b(c)-31
+b(k)462 b(are)f(giv)-31 b(en)463 b(in)e(the)h(\257le)f
+Fu(cvodes.h)h Fw(\(but)g(not)g(repro)31 b(duced)4000
+60000 y(here,)369 b(for)g(the)h(sak)-31 b(e)369 b(of)h(space\).)4000
+62984 y Fx(Initialization)423 b(routine.)1107 b Fw(The)370
+b(t)-31 b(yp)31 b(e)370 b(de\257nition)g(of)g Fu(linit)g
+Fw(is)p 4000 64961 3659 45 v 4000 66301 45 1341 v 4376
+65969 a Fu(linit)p 7614 66301 V 4000 66345 3659 45 v
+Black 4000 67718 a Fw(De\257nition)p Black 2034 w Fu(int)582
+b(\(*linit\)\(CVodeMem)h(cv)p 24831 67718 349 45 v 419
+w(mem\);)p Black 4000 69529 a Fw(Purp)31 b(ose)p Black
+2884 w(The)310 b(purp)31 b(ose)309 b(of)h Fu(linit)h
+Fw(is)f(to)g(complete)i(linear)e(solv)-31 b(er-sp)31
+b(eci\257c)310 b(initializations,)327 b(suc)-31 b(h)310
+b(as)g(coun-)10814 70858 y(ters)369 b(and)g(statistics.)p
+Black 4000 72669 a(Argumen)-31 b(ts)p Black Black 1517
+w Fu(cv)p 12046 72669 V 419 w(mem)p Black 554 w Fw(is)369
+b(the)g Fs(cv)-25 b(odes)370 b Fw(memory)g(p)31 b(oin)-31
+b(ter)370 b(of)g(t)-31 b(yp)31 b(e)369 b Fu(CVodeMem)p
+Fw(.)p Black 4000 74481 a(Return)g(v)-61 b(alue)p Black
+554 w(An)370 b Fu(linit)g Fw(function)h(should)e(return)g(0)h(if)g(it)h
+(has)e(successfully)h(initialized)i(the)e Fs(cv)-25 b(odes)370
+b Fw(linear)10814 75809 y(solv)-31 b(er)370 b(and)f Fn(\241)p
+Fw(1)g(otherwise.)p Black 4000 77621 a(Notes)p Black
+4072 w(If)g(an)g(error)g(do)31 b(es)368 b(o)31 b(ccur,)370
+b(an)f(appropriate)h(message)g(should)g(b)31 b(e)368
+b(sen)-31 b(t)370 b(to)g Fu(cv)p 43644 77621 V 418 w(mem->cv)p
+48129 77621 V 420 w(errfp)p Fw(.)p Black Black eop
+%%Page: 134 144
+134 143 bop Black 0 2701 a Fx(134)21917 b(Pro)-35 b(viding)425
+b(Alternate)h(Linear)e(Solv)-35 b(er)425 b(Mo)35 b(dules)p
+0 3144 48001 45 v Black 0 6974 a(Setup)426 b(routine.)1107
+b Fw(The)370 b(t)-31 b(yp)31 b(e)369 b(de\257nition)i(of)f
+Fu(lsetup)g Fw(is)p 0 8918 4240 45 v 0 10504 45 1587
+v 376 9926 a Fu(lsetup)p 4195 10504 V 0 10548 4240 45
+v Black 0 12003 a Fw(De\257nition)p Black 2034 w Fu(int)582
+b(\(*lsetup\)\()q(CVodeMem)g(cv)p 21412 12003 349 45
+v 419 w(mem,)g(int)f(convfail,)i(N)p 33454 12003 V 419
+w(Vector)f(ypred,)14950 13332 y(N)p 15601 13332 V 419
+w(Vector)g(fpred,)g(booleantype)h(*jcurPtr,)14950 14660
+y(N)p 15601 14660 V 419 w(Vector)f(vtemp1,)g(N)p 25318
+14660 V 418 w(Vector)g(vtemp2,)h(N)p 35035 14660 V 418
+w(Vector)f(vtemp3\);)p Black 0 16409 a Fw(Purp)31 b(ose)p
+Black 2884 w(The)429 b(job)h(of)g Fu(lsetup)f Fw(is)g(to)h(prepare)f
+(the)g(linear)h(solv)-31 b(er)430 b(for)f(subsequen)-31
+b(t)429 b(calls)h(to)g Fu(lsolve)p Fw(.)673 b(It)6814
+17738 y(ma)-31 b(y)370 b(recompute)g(Jacobian-related)i(data)e(if)g(it)
+g(is)f(deemed)h(necessary)-92 b(.)p Black 0 19537 a(Argumen)-31
+b(ts)p Black Black 1517 w Fu(cv)p 8046 19537 V 419 w(mem)p
+Black 1879 w Fw(is)369 b(the)g Fs(cv)-25 b(odes)370 b
+Fw(memory)g(p)31 b(oin)-31 b(ter)370 b(of)g(t)-31 b(yp)31
+b(e)369 b Fu(CVodeMem)p Fw(.)p Black 6814 21101 a Fu(convfail)p
+Black 555 w Fw(is)524 b(an)g(input)h(\260ag)f(used)g(to)h(indicate)g
+(an)-31 b(y)525 b(problem)g(that)g(o)31 b(ccurred)523
+b(during)i(the)12017 22429 y(solution)428 b(of)f(the)g(nonlinear)h
+(equation)h(on)e(the)g(curren)-31 b(t)426 b(time)i(step)e(for)h(whic)
+-31 b(h)428 b(the)12017 23758 y(linear)437 b(solv)-31
+b(er)437 b(is)g(b)31 b(eing)437 b(used.)695 b(This)437
+b(\260ag)g(can)g(b)31 b(e)436 b(used)g(to)i(help)f(decide)g(whether)
+12017 25086 y(the)399 b(Jacobian)h(data)g(k)-31 b(ept)400
+b(b)-31 b(y)399 b(a)g Fs(cv)-25 b(odes)399 b Fw(linear)h(solv)-31
+b(er)399 b(needs)g(to)g(b)31 b(e)399 b(up)31 b(dated)399
+b(or)12017 26414 y(not.)493 b(Its)369 b(p)31 b(ossible)369
+b(v)-61 b(alues)370 b(are:)p Black 12980 28214 a Fn(\262)p
+Black 554 w Fu(NO)p 15319 28214 V 418 w(FAILURES)p Fw(:)446
+b(this)f(v)-61 b(alue)445 b(is)f(passed)g(to)h Fu(lsetup)g
+Fw(if)f(either)h(this)g(is)f(the)g(\257rst)14087 29542
+y(call)364 b(for)f(this)h(step,)h(or)e(the)g(lo)31 b(cal)365
+b(error)d(test)i(failed)g(on)g(the)f(previous)h(attempt)14087
+30871 y(at)370 b(this)f(step)g(\(but)h(the)g(Newton)g(iteration)i(con)
+-31 b(v)g(erged\).)p Black 12980 32435 a Fn(\262)p Black
+554 w Fu(FAIL)p 16481 32435 V 419 w(BAD)p 18643 32435
+V 419 w(J)p Fw(:)375 b(this)g(v)-61 b(alue)375 b(is)g(passed)f(to)i
+Fu(lsetup)f Fw(if)g(\(a\))h(the)f(previous)g(Newton)14087
+33763 y(corrector)260 b(iteration)i(did)e(not)h(con)-31
+b(v)g(erge)261 b(and)f(the)h(linear)g(solv)-31 b(er's)260
+b(setup)g(routine)14087 35091 y(indicated)k(that)f(its)g
+(Jacobian-related)i(data)f(is)e(not)h(curren)-31 b(t,)284
+b(or)263 b(\(b\))g(during)g(the)14087 36420 y(previous)478
+b(Newton)i(corrector)e(iteration,)509 b(the)479 b(linear)g(solv)-31
+b(er's)479 b(solv)-31 b(e)479 b(routine)14087 37748 y(failed)523
+b(in)f(a)h(reco)-31 b(v)g(erable)523 b(manner)f(and)g(the)h(linear)g
+(solv)-31 b(er's)522 b(setup)g(routine)14087 39076 y(indicated)370
+b(that)h(its)e(Jacobian-related)j(data)f(is)e(not)h(curren)-31
+b(t.)p Black 12980 40640 a Fn(\262)p Black 554 w Fu(FAIL)p
+16481 40640 V 419 w(OTHER)p Fw(:)254 b(this)g(v)-61 b(alue)254
+b(is)f(passed)g(to)i Fu(lsetup)f Fw(if)g(during)g(the)f(curren)-31
+b(t)253 b(in)-31 b(ternal)14087 41969 y(step)357 b(try)-92
+b(,)359 b(the)e(previous)h(Newton)g(iteration)h(failed)g(to)e(con)-31
+b(v)g(erge)358 b(ev)-31 b(en)358 b(though)14087 43297
+y(the)369 b(linear)h(solv)-31 b(er)370 b(w)-31 b(as)369
+b(using)h(curren)-31 b(t)369 b(Jacobian-related)i(data.)p
+Black 6814 45096 a Fu(ypred)p Black 2298 w Fw(is)e(the)g(predicted)h
+Fu(y)f Fw(v)-31 b(ector)370 b(for)f(the)g(curren)-31
+b(t)369 b Fs(cv)-25 b(odes)370 b Fw(in)-31 b(ternal)370
+b(step.)p Black 6814 46660 a Fu(fpred)p Black 2298 w
+Fw(is)f(the)g(v)-61 b(alue)370 b(of)g(the)f(righ)-31
+b(t-hand)371 b(side)e(at)h Fu(ypred)p Fw(,)g(i.e.)493
+b Fl(f)119 b Fw(\()p Fl(t)37061 46826 y Fj(n)37664 46660
+y Fl(;)184 b(y)38698 46826 y Fj(pr)24 b(ed)40526 46660
+y Fw(\).)p Black 6814 48224 a Fu(jcurPtr)p Black 1136
+w Fw(is)450 b(a)h(p)31 b(oin)-31 b(ter)451 b(to)h(a)e(b)31
+b(o)g(olean)452 b(to)f(b)31 b(e)450 b(\257lled)i(in)f(b)-31
+b(y)450 b Fu(lsetup)p Fw(.)738 b(The)451 b(function)g(should)12017
+49553 y(set)534 b Fu(*jcurPtr)582 b(=)f(TRUE)535 b Fw(if)f(its)h
+(Jacobian)g(data)h(is)e(curren)-31 b(t)533 b(after)i(the)f(call,)578
+b(and)12017 50881 y(should)312 b(set)h Fu(*jcurPtr)582
+b(=)f(FALSE)313 b Fw(if)g(its)g(Jacobian)h(data)g(is)e(not)i(curren)-31
+b(t.)473 b(If)312 b Fu(lsetup)12017 52209 y Fw(calls)482
+b(for)f(reev)-61 b(aluation)483 b(of)f(Jacobian)h(data)f(\(based)g(on)g
+Fu(convfail)g Fw(and)f Fs(cv)-25 b(odes)12017 53538 y
+Fw(state)397 b(data\),)405 b(it)397 b(should)g(return)e
+Fu(*jcurPtr)583 b(=)e(TRUE)397 b Fw(unconditionally;)414
+b(otherwise)12017 54866 y(an)369 b(in\257nite)h(lo)31
+b(op)371 b(can)e(result.)p Black 6814 56430 a Fu(vtemp1)p
+Black Black 6814 57994 a(vtemp2)p Black Black 6814 59558
+a(vtemp3)p Black 1717 w Fw(are)g(temp)31 b(orary)370
+b(v)-61 b(ariables)369 b(of)h(t)-31 b(yp)31 b(e)370 b
+Fu(N)p 28276 59558 V 418 w(Vector)g Fw(pro)-31 b(vided)370
+b(for)f(use)g(b)-31 b(y)369 b Fu(lsetup)p Fw(.)p Black
+0 61357 a(Return)g(v)-61 b(alue)p Black 554 w(The)459
+b Fu(lsetup)g Fw(routine)g(should)f(return)g(0)h(if)g(successful,)480
+b(a)459 b(p)31 b(ositiv)-31 b(e)460 b(v)-61 b(alue)459
+b(for)f(a)h(reco)-31 b(v)g(erable)6814 62686 y(error,)369
+b(and)g(a)g(negativ)-31 b(e)372 b(v)-61 b(alue)369 b(for)h(an)f(unreco)
+-31 b(v)g(erable)370 b(error.)0 65638 y Fx(Solv)-35 b(e)425
+b(routine.)1108 b Fw(The)369 b(t)-31 b(yp)31 b(e)370
+b(de\257nition)g(of)g Fu(lsolve)g Fw(is)p 0 67582 4240
+45 v 0 68923 45 1341 v 376 68591 a Fu(lsolve)p 4195 68923
+V 0 68967 4240 45 v Black 0 70333 a Fw(De\257nition)p
+Black 2034 w Fu(int)582 b(\(*lsolve\)\()q(CVodeMem)g(cv)p
+21412 70333 349 45 v 419 w(mem,)g(N)p 25318 70333 V 418
+w(Vector)g(b,)g(N)p 32129 70333 V 419 w(Vector)g(weight,)14950
+71662 y(N)p 15601 71662 V 419 w(Vector)g(ycur,)g(N)p
+24156 71662 V 418 w(Vector)g(fcur\);)p Black 0 73411
+a Fw(Purp)31 b(ose)p Black 2884 w(The)468 b(routine)h
+Fu(lsolve)f Fw(m)-31 b(ust)469 b(solv)-31 b(e)468 b(the)g(linear)h
+(equation)h Fl(M)121 b(x)471 b Fw(=)h Fl(b)p Fw(,)493
+b(where)467 b Fl(M)589 b Fw(is)467 b(some)i(ap-)6814
+74739 y(pro)-31 b(ximation)520 b(to)d Fl(I)430 b Fn(\241)344
+b Fl(\260)61 b(J)106 b Fw(,)555 b Fl(J)659 b Fw(=)553
+b(\()p Fl(@)61 b(f)119 b(=@)61 b(y)40 b Fw(\)\()p Fl(t)26486
+74905 y Fj(n)27090 74739 y Fl(;)184 b(y)28124 74905 y
+Fj(cur)29534 74739 y Fw(\))516 b(and)h(the)f(righ)-31
+b(t-hand)518 b(side)e(v)-31 b(ector)518 b Fl(b)e Fw(is)6814
+76067 y(input.)p Black 0 77867 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fu(cv)p 8046 77867 V 419 w(mem)p Black 554
+w Fw(is)369 b(the)g Fs(cv)-25 b(odes)370 b Fw(memory)g(p)31
+b(oin)-31 b(ter)370 b(of)g(t)-31 b(yp)31 b(e)369 b Fu(CVodeMem)p
+Fw(.)p Black Black eop
+%%Page: 135 145
+135 144 bop Black 50091 2701 a Fx(135)p 4000 3144 48001
+45 v Black Black 10814 6974 a Fu(b)p Black 3297 w Fw(is)347
+b(the)g(righ)-31 b(t-hand)348 b(side)f(v)-31 b(ector)348
+b Fl(b)p Fw(.)485 b(The)347 b(solution)i(is)e(to)h(b)31
+b(e)347 b(returned)f(in)h(the)h(v)-31 b(ector)347 b Fu(b)p
+Fw(.)p Black 10814 8524 a Fu(weight)p Black 554 w Fw(is)421
+b(a)h(v)-31 b(ector)422 b(that)g(con)-31 b(tains)423
+b(the)e(error)f(w)-31 b(eigh)g(ts.)650 b(These)421 b(are)g(the)h
+(recipro)31 b(cals)421 b(of)h(the)14692 9852 y Fl(W)15737
+10018 y Fj(i)16475 9852 y Fw(of)369 b(\(3.7\).)p Black
+10814 11402 a Fu(ycur)p Black 1554 w Fw(is)g(a)g(v)-31
+b(ector)370 b(that)h(con)-31 b(tains)370 b(the)g(solv)-31
+b(er's)369 b(curren)-31 b(t)369 b(appro)-31 b(ximation)373
+b(to)d Fl(y)40 b Fw(\()p Fl(t)46586 11568 y Fj(n)47188
+11402 y Fw(\).)p Black 10814 12951 a Fu(fcur)p Black
+1554 w Fw(is)369 b(a)g(v)-31 b(ector)370 b(that)h(con)-31
+b(tains)370 b Fl(f)119 b Fw(\()p Fl(t)28282 13117 y Fj(n)28885
+12951 y Fl(;)184 b(y)29919 13117 y Fj(cur)31329 12951
+y Fw(\).)p Black 4000 14723 a(Return)369 b(v)-61 b(alue)p
+Black 554 w Fu(lsolve)468 b Fw(returns)f(a)g(p)31 b(ositiv)-31
+b(e)469 b(v)-61 b(alue)468 b(for)g(a)f(reco)-31 b(v)g(erable)469
+b(error)d(and)i(a)g(negativ)-31 b(e)469 b(v)-61 b(alue)468
+b(for)g(an)10814 16051 y(unreco)-31 b(v)g(erable)370
+b(error.)492 b(Success)368 b(is)h(indicated)i(b)-31 b(y)369
+b(a)h(0)f(return)g(v)-61 b(alue.)4000 18928 y Fx(Memory)426
+b(deallo)35 b(cation)425 b(routine.)1107 b Fw(The)370
+b(t)-31 b(yp)31 b(e)370 b(de\257nition)g(of)g Fu(lfree)g
+Fw(is)p 4000 20797 3659 45 v 4000 22138 45 1341 v 4376
+21806 a Fu(lfree)p 7614 22138 V 4000 22182 3659 45 v
+Black 4000 23534 a Fw(De\257nition)p Black 2034 w Fu(void)582
+b(\(*lfree\)\(CVodeMem)h(cv)p 25412 23534 349 45 v 419
+w(mem\);)p Black 4000 25305 a Fw(Purp)31 b(ose)p Black
+2884 w(The)369 b(routine)h Fu(lfree)g Fw(should)g(free)e(up)h(an)-31
+b(y)370 b(memory)g(allo)31 b(cated)372 b(b)-31 b(y)369
+b(the)h(linear)g(solv)-31 b(er.)p Black 4000 27076 a(Argumen)g(ts)p
+Black 1517 w(The)369 b(argumen)-31 b(t)371 b Fu(cv)p
+19275 27076 V 419 w(mem)e Fw(is)g(the)h Fs(cv)-25 b(odes)369
+b Fw(memory)i(p)31 b(oin)-31 b(ter)369 b(of)h(t)-31 b(yp)31
+b(e)370 b Fu(CVodeMem)p Fw(.)p Black 4000 28847 a(Return)f(v)-61
+b(alue)p Black 554 w(This)370 b(routine)f(has)h(no)f(return)g(v)-61
+b(alue.)p Black 4000 30618 a(Notes)p Black 4072 w(This)396
+b(routine)h(is)f(called)h(once)f(a)g(problem)h(has)f(b)31
+b(een)395 b(completed)i(and)g(the)f(linear)g(solv)-31
+b(er)397 b(is)f(no)10814 31947 y(longer)370 b(needed.)p
+Black Black eop
+%%Page: 136 146
+136 145 bop Black Black Black Black eop
+%%Page: 137 147
+137 146 bop Black Black 4000 15276 a Ft(Chapter)861 b(10)4000
+20811 y Fv(Generic)1033 b(Linear)g(Solv)-86 b(ers)1033
+b(in)4000 24132 y(SUNDIALS)4000 29888 y Fw(In)399 b(this)h(c)-31
+b(hapter,)408 b(w)-31 b(e)400 b(describ)31 b(e)399 b(three)g(generic)h
+(linear)g(solv)-31 b(er)400 b(co)31 b(de)400 b(mo)31
+b(dules)400 b(that)h(are)e(included)h(in)g Fs(cv)-25
+b(odes)p Fw(,)4000 31216 y(but)363 b(whic)-31 b(h)363
+b(are)f(of)h(p)31 b(oten)-31 b(tial)365 b(use)d(as)h(generic)f(pac)-31
+b(k)-61 b(ages)363 b(in)g(themselv)-31 b(es,)365 b(either)e(in)g
+(conjunction)h(with)g(the)e(use)4000 32545 y(of)370 b
+Fs(cv)-25 b(odes)369 b Fw(or)g(separately)-92 b(.)494
+b(These)369 b(mo)31 b(dules)370 b(are:)p Black 5660 34716
+a Fn(\262)p Black 554 w Fw(The)401 b Fs(dense)g Fw(matrix)h(pac)-31
+b(k)-61 b(age,)410 b(whic)-31 b(h)402 b(includes)f(the)f(matrix)i(t)-31
+b(yp)31 b(e)401 b Fu(DenseMat)p Fw(,)410 b(macros)401
+b(and)g(functions)6767 36044 y(for)370 b Fu(DenseMat)g
+Fw(matrices,)g(and)g(functions)g(for)f(small)i(dense)d(matrices)j
+(treated)e(as)h(simple)g(arra)-31 b(y)369 b(t)-31 b(yp)31
+b(es.)p Black 5660 38237 a Fn(\262)p Black 554 w Fw(The)346
+b Fs(band)f Fw(matrix)i(pac)-31 b(k)-61 b(age,)352 b(whic)-31
+b(h)346 b(includes)g(the)f(matrix)i(t)-31 b(yp)31 b(e)346
+b Fu(BandMat)p Fw(,)351 b(macros)346 b(and)f(functions)i(for)6767
+39565 y Fu(BandMat)370 b Fw(matrices,)h(and)e(functions)i(for)e(small)h
+(band)g(matrices)g(treated)g(as)f(simple)h(arra)-31 b(y)370
+b(t)-31 b(yp)31 b(es.)p Black 5660 41758 a Fn(\262)p
+Black 554 w Fw(The)370 b Fs(spgmr)e Fw(pac)-31 b(k)-61
+b(age,)371 b(whic)-31 b(h)370 b(includes)f(a)h(solv)-31
+b(er)369 b(for)h(the)f(scaled)h(preconditioned)g(GMRES)f(metho)31
+b(d.)5660 43930 y(F)-92 b(or)457 b(the)h(sak)-31 b(e)457
+b(of)h(space,)480 b(the)458 b(functions)g(for)f Fu(DenseMat)i
+Fw(and)e Fu(BandMat)i Fw(matrices)f(and)g(the)f(functions)i(in)4000
+45258 y Fs(spgmr)372 b Fw(are)h(only)i(summarized)f(brie\260y)-92
+b(,)374 b(since)g(they)f(are)h(less)f(lik)-31 b(ely)375
+b(to)f(b)31 b(e)373 b(of)h(direct)f(use)g(in)h(connection)h(with)4000
+46586 y Fs(cv)-25 b(odes)p Fw(.)669 b(The)428 b(functions)h(for)e
+(small)j(dense)d(matrices)h(are)g(fully)h(describ)31
+b(ed,)442 b(b)31 b(ecause)427 b(w)-31 b(e)428 b(exp)31
+b(ect)428 b(that)h(they)4000 47915 y(will)414 b(b)31
+b(e)412 b(useful)h(in)g(the)g(implemen)-31 b(tation)417
+b(of)c(preconditioners)g(used)f(with)i(the)f(com)-31
+b(bination)416 b(of)d Fs(cv)-25 b(odes)413 b Fw(and)4000
+49243 y(the)369 b Fs(cvspgmr)g Fw(solv)-31 b(er.)4000
+52895 y Fr(10.1)1792 b(The)599 b(DENSE)g(mo)50 b(dule)4000
+55540 y Fo(10.1.1)1495 b(T)-42 b(yp)42 b(e)499 b Fa(DenseMat)4000
+57584 y Fw(The)369 b(t)-31 b(yp)31 b(e)370 b Fu(DenseMat)g
+Fw(is)f(de\257ned)g(to)h(b)31 b(e)369 b(a)g(p)31 b(oin)-31
+b(ter)370 b(to)g(a)g(structure)e(with)j(a)e(size)g(and)h(a)f(data)i
+(\257eld:)p Black Black 4000 59755 a Fu(typedef)582 b(struct)g({)5162
+61084 y(long)g(int)g(size;)5162 62412 y(realtype)1164
+b(**data;)4000 63740 y(})581 b(*DenseMat;)4000 65912
+y Fw(The)498 b Fq(size)g Fw(\257eld)h(indicates)g(the)f(n)-31
+b(um)g(b)31 b(er)499 b(of)f(columns)h(\(whic)-31 b(h)500
+b(is)e(the)g(same)h(as)f(the)g(n)-31 b(um)g(b)31 b(er)498
+b(of)h(ro)-31 b(ws\))499 b(of)g(a)4000 67240 y(dense)i(matrix,)537
+b(while)503 b(the)f Fq(data)f Fw(\257eld)h(is)f(a)h(t)-31
+b(w)g(o)504 b(dimensional)g(arra)-31 b(y)502 b(used)f(for)h(comp)31
+b(onen)-31 b(t)503 b(storage.)892 b(The)4000 68568 y(elemen)-31
+b(ts)354 b(of)f(a)f(dense)g(matrix)i(are)f(stored)f(column)-31
+b(wise)354 b(\(i.e)g(columns)g(are)e(stored)g(one)h(on)g(top)g(of)g
+(the)g(other)g(in)4000 69897 y(memory\).)479 b(If)322
+b Fu(A)h Fw(is)f(of)h(t)-31 b(yp)31 b(e)323 b Fu(DenseMat)p
+Fw(,)334 b(then)323 b(the)g(\()p Fu(i)p Fw(,)p Fu(j)p
+Fw(\)-th)h(elemen)-31 b(t)324 b(of)f Fu(A)g Fw(\(with)h(0)308
+b Fn(\267)323 b Fu(i)p Fw(,)332 b Fu(j)323 b Fn(\267)f
+Fu(size)p Fn(\241)p Fw(1\))i(is)f(giv)-31 b(en)4000 71225
+y(b)g(y)432 b(the)g(expression)f Fu(\(A->data\)[j][i])i
+Fw(or)f(b)-31 b(y)432 b(the)f(expression)h Fu(\(A->data\)[0][j*size+i])
+p Fw(.)683 b(The)431 b(macros)4000 72553 y(b)31 b(elo)-31
+b(w)359 b(allo)-31 b(w)361 b(a)d(user)f(to)i(e\261cien)-31
+b(tly)360 b(access)e(individual)i(matrix)g(elemen)-31
+b(ts)359 b(without)h(writing)g(out)f(explicit)h(data)4000
+73882 y(structure)498 b(references)f(and)i(without)h(kno)-31
+b(wing)501 b(to)31 b(o)499 b(m)-31 b(uc)g(h)499 b(ab)31
+b(out)500 b(the)e(underlying)i(elemen)-31 b(t)499 b(storage.)882
+b(The)4000 75210 y(only)432 b(storage)g(assumption)h(needed)e(is)g
+(that)h(elemen)-31 b(ts)432 b(are)f(stored)g(column)-31
+b(wise)433 b(and)f(that)g(a)g(p)31 b(oin)-31 b(ter)432
+b(to)g(the)4000 76539 y Fu(j)p Fw(-th)389 b(column)g(of)g(elemen)-31
+b(ts)390 b(can)e(b)31 b(e)388 b(obtained)i(via)g(the)e
+Fu(DENSE)p 30981 76539 349 45 v 420 w(COL)g Fw(macro.)551
+b(Users)388 b(should)g(use)g(these)g(macros)4000 77867
+y(whenev)-31 b(er)369 b(p)31 b(ossible.)p Black Black
+eop
+%%Page: 138 148
+138 147 bop Black 0 2701 a Fx(138)24941 b(Generic)425
+b(Linear)g(Solv)-35 b(ers)425 b(in)f(SUNDIALS)p 0 3144
+48001 45 v Black 0 6974 a Fo(10.1.2)1495 b(Accessor)501
+b(Macros)0 9069 y Fw(The)277 b(follo)-31 b(wing)280 b(t)-31
+b(w)g(o)278 b(macros)f(are)f(de\257ned)g(b)-31 b(y)277
+b(the)g Fs(dense)g Fw(mo)31 b(dule)277 b(to)g(pro)-31
+b(vide)278 b(access)d(to)j(data)f(in)g(the)g Fu(DenseMat)0
+10398 y Fw(t)-31 b(yp)31 b(e:)p Black 1660 12696 a Fn(\262)p
+Black 554 w Fu(DENSE)p 5742 12696 349 45 v 420 w(ELEM)2767
+14523 y Fw(Usage)370 b(:)493 b Fu(DENSE)p 9777 14523
+V 419 w(ELEM\(A,i,j\))583 b(=)e(a)p 18913 14523 V 418
+w(ij;)370 b Fw(or)f Fu(a)p 23381 14523 V 419 w(ij)581
+b(=)g(DENSE)p 29610 14523 V 419 w(ELEM\(A,i,j\);)2767
+16350 y(DENSE)p 5742 16350 V 420 w(ELEM)369 b Fw(references)f(the)h(\()
+p Fu(i)p Fw(,)p Fu(j)p Fw(\)-th)j(elemen)-31 b(t)370
+b(of)g(the)f Fl(N)e Fn(\243)246 b Fl(N)491 b Fu(DenseMat)370
+b(A)p Fw(,)f(0)308 b Fn(\267)369 b Fu(i)p Fw(,)h Fu(j)f
+Fn(\267)307 b Fl(N)368 b Fn(\241)246 b Fw(1.)p Black
+1660 18676 a Fn(\262)p Black 554 w Fu(DENSE)p 5742 18676
+V 420 w(COL)2767 20503 y Fw(Usage)370 b(:)493 b Fu(col)p
+8615 20503 V 419 w(j)581 b(=)g(DENSE)p 14263 20503 V
+419 w(COL\(A,j\);)2767 22331 y(DENSE)p 5742 22331 V 420
+w(COL)417 b Fw(references)f(the)h Fu(j)p Fw(-th)h(column)g(of)g(the)g
+Fl(N)399 b Fn(\243)278 b Fl(N)538 b Fu(DenseMat)418 b(A)p
+Fw(,)g(0)388 b Fn(\267)417 b Fu(j)g Fn(\267)388 b Fl(N)399
+b Fn(\241)278 b Fw(1.)637 b(The)417 b(t)-31 b(yp)31 b(e)2767
+23659 y(of)404 b(the)e(expression)h Fu(DENSE)p 14345
+23659 V 419 w(COL\(A,j\))h Fw(is)e Fu(realtype)583 b(*)402
+b Fw(.)593 b(After)403 b(the)g(assignmen)-31 b(t)404
+b(in)f(the)g(usage)g(ab)31 b(o)-31 b(v)g(e,)2767 24987
+y Fu(col)p 4580 24987 V 419 w(j)467 b Fw(ma)-31 b(y)468
+b(b)31 b(e)466 b(treated)i(as)e(an)h(arra)-31 b(y)467
+b(indexed)h(from)f(0)g(to)g Fl(N)433 b Fn(\241)311 b
+Fw(1.)785 b(The)467 b(\()p Fu(i)p Fw(,)492 b Fu(j)p Fw(\)-th)468
+b(elemen)-31 b(t)468 b(of)f Fu(A)g Fw(is)2767 26316 y(referenced)369
+b(b)-31 b(y)369 b Fu(col)p 11382 26316 V 419 w(j[i])p
+Fw(.)0 30505 y Fo(10.1.3)1495 b(F)-125 b(unctions)0 32600
+y Fw(The)377 b(follo)-31 b(wing)381 b(functions)d(for)g
+Fu(DenseMat)g Fw(matrices)g(are)f(a)-31 b(v)-61 b(ailable)379
+b(in)f(the)f Fs(dense)h Fw(pac)-31 b(k)-61 b(age.)518
+b(F)-92 b(or)376 b(full)i(details,)0 33928 y(see)369
+b(the)g(header)g(\257le)g Fu(dense.h)p Fw(.)p Black 1660
+36226 a Fn(\262)p Black 554 w Fu(DenseAllocMat)p Fw(:)495
+b(allo)31 b(cation)372 b(of)e(a)g Fu(DenseMat)g Fw(matrix;)p
+Black 1660 38553 a Fn(\262)p Black 554 w Fu(DenseAllocPiv)p
+Fw(:)495 b(allo)31 b(cation)372 b(of)e(a)g(piv)-31 b(ot)370
+b(arra)-31 b(y)370 b(for)f(use)g(with)h Fu(DenseFactor)p
+Fw(/)p Fu(DenseBacksolve)p Fw(;)p Black 1660 40879 a
+Fn(\262)p Black 554 w Fu(DenseFactor)p Fw(:)495 b(LU)369
+b(factorization)j(with)f(partial)g(piv)-31 b(oting;)p
+Black 1660 43205 a Fn(\262)p Black 554 w Fu(DenseBacksolve)p
+Fw(:)495 b(solution)371 b(of)f Fl(Ax)307 b Fw(=)g Fl(b)370
+b Fw(using)f(LU)g(factorization;)p Black 1660 45531 a
+Fn(\262)p Black 554 w Fu(DenseZero)p Fw(:)494 b(load)371
+b(a)e(matrix)i(with)f(zeros;)p Black 1660 47857 a Fn(\262)p
+Black 554 w Fu(DenseCopy)p Fw(:)494 b(cop)-31 b(y)370
+b(one)g(matrix)g(to)g(another;)p Black 1660 50183 a Fn(\262)p
+Black 554 w Fu(DenseScale)p Fw(:)494 b(scale)370 b(a)f(matrix)i(b)-31
+b(y)370 b(a)f(scalar;)p Black 1660 52509 a Fn(\262)p
+Black 554 w Fu(DenseAddI)p Fw(:)i(incremen)-31 b(t)370
+b(a)g(matrix)h(b)-31 b(y)369 b(the)g(iden)-31 b(tit)g(y)372
+b(matrix;)p Black 1660 54835 a Fn(\262)p Black 554 w
+Fu(DenseFreeMat)p Fw(:)495 b(free)368 b(memory)j(for)e(a)g
+Fu(DenseMat)i Fw(matrix;)p Black 1660 57161 a Fn(\262)p
+Black 554 w Fu(DenseFreePiv)p Fw(:)495 b(free)368 b(memory)j(for)e(a)g
+(piv)-31 b(ot)371 b(arra)-31 b(y;)p Black 1660 59487
+a Fn(\262)p Black 554 w Fu(DensePrint)p Fw(:)494 b(prin)-31
+b(t)370 b(a)g Fu(DenseMat)g Fw(matrix)g(to)g(standard)g(output.)0
+63676 y Fo(10.1.4)1495 b(Small)500 b(Dense)f(Matrix)f(F)-125
+b(unctions)0 65772 y Fw(The)369 b(follo)-31 b(wing)373
+b(functions)d(for)g(small)g(dense)f(matrices)h(are)f(a)-31
+b(v)-61 b(ailable)372 b(in)d(the)h Fs(dense)f Fw(pac)-31
+b(k)-61 b(age:)p Black 1660 68070 a Fn(\262)p Black 554
+w Fu(denalloc)2767 69897 y(denalloc\(n\))403 b Fw(allo)31
+b(cates)404 b(storage)e(for)g(an)g Fu(n)f Fw(b)-31 b(y)402
+b Fu(n)g Fw(dense)e(matrix.)592 b(It)401 b(returns)g(a)g(p)31
+b(oin)-31 b(ter)403 b(to)f(the)g(newly)2767 71225 y(allo)31
+b(cated)528 b(storage)d(if)h(successful.)959 b(If)524
+b(the)h(memory)h(request)f(cannot)h(b)31 b(e)524 b(satis\257ed,)565
+b(then)525 b Fu(denalloc)2767 72553 y Fw(returns)344
+b Fu(NULL)p Fw(.)h(The)g(underlying)g(t)-31 b(yp)31 b(e)345
+b(of)g(the)f(dense)g(matrix)i(returned)d(is)i Fu(realtype**)p
+Fw(.)485 b(If)345 b(w)-31 b(e)344 b(allo)31 b(cate)2767
+73882 y(a)538 b(dense)e(matrix)j Fu(realtype**)582 b(a)537
+b Fw(b)-31 b(y)537 b Fu(a)582 b(=)f(denalloc\(n\))p Fw(,)g(then)537
+b Fu(a[j][i])h Fw(references)e(the)h(\()p Fu(i)p Fw(,)p
+Fu(j)p Fw(\)-th)2767 75210 y(elemen)-31 b(t)341 b(of)f(the)g(matrix)h
+Fu(a)p Fw(,)k(0)308 b Fn(\267)340 b Fu(i)p Fw(,)345 b
+Fu(j)340 b Fn(\267)f Fu(n)p Fn(\241)p Fw(1,)346 b(and)340
+b Fu(a[j])g Fw(is)f(a)h(p)31 b(oin)-31 b(ter)340 b(to)g(the)f(\257rst)g
+(elemen)-31 b(t)341 b(in)f(the)f Fu(j)p Fw(-th)2767 76539
+y(column)420 b(of)g Fu(a)p Fw(.)641 b(The)419 b(lo)31
+b(cation)421 b Fu(a[0])e Fw(con)-31 b(tains)420 b(a)f(p)31
+b(oin)-31 b(ter)420 b(to)f Fu(n)30073 76137 y Fk(2)30989
+76539 y Fw(con)-31 b(tiguous)420 b(lo)31 b(cations)421
+b(whic)-31 b(h)420 b(con)-31 b(tain)2767 77867 y(the)370
+b(elemen)-31 b(ts)370 b(of)g Fu(a)p Fw(.)p Black Black
+eop
+%%Page: 139 149
+139 148 bop Black 4000 2701 a Fx(10.1)425 b(The)g(DENSE)h(mo)35
+b(dule)31943 b(139)p 4000 3144 48001 45 v Black Black
+5660 6974 a Fn(\262)p Black 554 w Fu(denallocpiv)6767
+8970 y(denallocpiv\(n\))413 b Fw(allo)31 b(cates)413
+b(an)e(arra)-31 b(y)411 b(of)h Fu(n)f Fw(in)-31 b(tegers.)618
+b(It)411 b(returns)f(a)h(p)31 b(oin)-31 b(ter)411 b(to)h(the)f(\257rst)
+f(elemen)-31 b(t)413 b(in)6767 10299 y(the)370 b(arra)-31
+b(y)369 b(if)h(successful.)492 b(It)369 b(returns)f Fu(NULL)i
+Fw(if)g(the)f(memory)h(request)f(could)h(not)g(b)31 b(e)369
+b(satis\257ed.)p Black 5660 12963 a Fn(\262)p Black 554
+w Fu(gefa)6767 14960 y(gefa\(a,n,p\))414 b Fw(factors)f(the)g
+Fu(n)f Fw(b)-31 b(y)412 b Fu(n)h Fw(dense)e(matrix)j
+Fu(a)p Fw(.)622 b(It)412 b(o)-31 b(v)g(erwrites)414 b(the)e(elemen)-31
+b(ts)414 b(of)e Fu(a)h Fw(with)g(its)g(LU)6767 16288
+y(factors)370 b(and)g(k)-31 b(eeps)369 b(trac)-31 b(k)370
+b(of)f(the)h(piv)-31 b(ot)371 b(ro)-31 b(ws)369 b(c)-31
+b(hosen)369 b(in)h(the)f(piv)-31 b(ot)371 b(arra)-31
+b(y)370 b Fu(p)p Fw(.)6767 18285 y(A)475 b(successful)f(LU)h
+(factorization)j(lea)-31 b(v)g(es)476 b(the)f(matrix)i
+Fu(a)d Fw(and)h(the)g(piv)-31 b(ot)477 b(arra)-31 b(y)475
+b Fu(p)g Fw(with)h(the)f(follo)-31 b(wing)6767 19613
+y(information:)p Black 7788 22278 a(1.)p Black 555 w
+Fu(p[k])303 b Fw(con)-31 b(tains)304 b(the)e(ro)-31 b(w)303
+b(n)-31 b(um)g(b)31 b(er)303 b(of)g(the)g(piv)-31 b(ot)304
+b(elemen)-31 b(t)304 b(c)-31 b(hosen)302 b(at)i(the)e(b)31
+b(eginning)304 b(of)f(elimination)9203 23606 y(step)369
+b Fu(k)p Fw(,)g Fu(k)h Fw(=)307 b(0)p Fl(;)184 b Fw(1)p
+Fl(;)g(:::;)p Fu(n)p Fn(\241)p Fw(1.)p Black 7788 25603
+a(2.)p Black 555 w(If)500 b(the)h(unique)g(LU)g(factorization)j(of)d
+Fu(a)g Fw(is)f(giv)-31 b(en)502 b(b)-31 b(y)501 b Fl(P)154
+b(a)526 b Fw(=)h Fl(LU)121 b Fw(,)534 b(where)500 b Fl(P)654
+b Fw(is)501 b(a)g(p)31 b(erm)-31 b(utation)9203 26931
+y(matrix,)465 b Fl(L)444 b Fw(is)g(a)g(lo)-31 b(w)g(er)445
+b(triangular)h(matrix)g(with)f(all)h(1's)e(on)g(the)h(diagonal,)466
+b(and)444 b Fl(U)564 b Fw(is)444 b(an)h(upp)31 b(er)9203
+28259 y(triangular)331 b(matrix,)339 b(then)329 b(the)h(upp)31
+b(er)328 b(triangular)j(part)e(of)h Fu(a)f Fw(\(including)i(its)f
+(diagonal\))i(con)-31 b(tains)330 b Fl(U)9203 29588 y
+Fw(and)369 b(the)h(strictly)g(lo)-31 b(w)g(er)370 b(triangular)h(part)f
+(of)g Fu(a)f Fw(con)-31 b(tains)370 b(the)g(m)-31 b(ultipliers,)372
+b Fl(I)332 b Fn(\241)246 b Fl(L)p Fw(.)9203 31250 y Fu(gefa)331
+b Fw(returns)f(0)h(if)g(successful.)480 b(Otherwise)331
+b(it)g(encoun)-31 b(tered)332 b(a)f(zero)g(diagonal)i(elemen)-31
+b(t)332 b(during)g(the)9203 32579 y(factorization.)581
+b(In)397 b(this)h(case)f(it)h(returns)f(the)g(column)i(index)f(\(n)-31
+b(um)g(b)31 b(ered)398 b(from)g(one\))g(at)h(whic)-31
+b(h)398 b(it)9203 33907 y(encoun)-31 b(tered)369 b(the)h(zero.)p
+Black 5660 36572 a Fn(\262)p Black 554 w Fu(gesl)6767
+38568 y(gesl\(a,n,p,b\))510 b Fw(solv)-31 b(es)507 b(the)h
+Fu(n)f Fw(b)-31 b(y)508 b Fu(n)f Fw(linear)h(system)g
+Fl(ax)538 b Fw(=)f Fl(b)p Fw(.)908 b(It)507 b(assumes)g(that)h
+Fu(a)g Fw(has)f(b)31 b(een)507 b(LU-)6767 39896 y(factored)354
+b(and)f(the)g(piv)-31 b(ot)354 b(arra)-31 b(y)353 b Fu(p)g
+Fw(has)f(b)31 b(een)352 b(set)h(b)-31 b(y)353 b(a)f(successful)g(call)i
+(to)g Fu(gefa\(a,n,p\))p Fw(.)488 b(The)353 b(solution)6767
+41225 y Fl(x)369 b Fw(is)g(written)i(in)-31 b(to)370
+b(the)g Fu(b)f Fw(arra)-31 b(y)-92 b(.)p Black 5660 43889
+a Fn(\262)p Black 554 w Fu(denzero)6767 45886 y(denzero\(a,n\))371
+b Fw(sets)e(all)h(the)g(elemen)-31 b(ts)370 b(of)g(the)f
+Fu(n)g Fw(b)-31 b(y)370 b Fu(n)f Fw(dense)f(matrix)j
+Fu(a)e Fw(to)h(b)31 b(e)369 b(0)p Fl(:)p Fw(0;)p Black
+5660 48551 a Fn(\262)p Black 554 w Fu(dencopy)6767 50547
+y(dencopy\(a,b,n\))i Fw(copies)f(the)f Fu(n)h Fw(b)-31
+b(y)369 b Fu(n)g Fw(dense)g(matrix)h Fu(a)g Fw(in)-31
+b(to)370 b(the)g Fu(n)f Fw(b)-31 b(y)369 b Fu(n)g Fw(dense)g(matrix)i
+Fu(b)p Fw(;)p Black 5660 53212 a Fn(\262)p Black 554
+w Fu(denscale)6767 55208 y(denscale\(c,a,n\))h Fw(scales)d(ev)-31
+b(ery)369 b(elemen)-31 b(t)371 b(in)e(the)h Fu(n)f Fw(b)-31
+b(y)369 b Fu(n)g Fw(dense)g(matrix)h Fu(a)g Fw(b)-31
+b(y)369 b Fu(c)p Fw(;)p Black 5660 57873 a Fn(\262)p
+Black 554 w Fu(denaddI)6767 59870 y(denaddI\(a,n\))i
+Fw(incremen)-31 b(ts)370 b(the)f Fu(n)h Fw(b)-31 b(y)369
+b Fu(n)g Fw(dense)g(matrix)h Fu(a)f Fw(b)-31 b(y)370
+b(the)f(iden)-31 b(tit)g(y)372 b(matrix;)p Black 5660
+62534 a Fn(\262)p Black 554 w Fu(denfreepiv)6767 64531
+y(denfreepiv\(p\))f Fw(frees)e(the)g(piv)-31 b(ot)371
+b(arra)-31 b(y)370 b Fu(p)f Fw(allo)31 b(cated)371 b(b)-31
+b(y)370 b Fu(denallocpiv)p Fw(;)p Black 5660 67196 a
+Fn(\262)p Black 554 w Fu(denfree)6767 69192 y(denfree\(a\))h
+Fw(frees)d(the)i(dense)e(matrix)j Fu(a)e Fw(allo)31 b(cated)372
+b(b)-31 b(y)369 b Fu(denalloc)p Fw(;)p Black 5660 71857
+a Fn(\262)p Black 554 w Fu(denprint)6767 73853 y(denprint\(a,n\))481
+b Fw(prin)-31 b(ts)479 b(the)g Fu(n)f Fw(b)-31 b(y)479
+b Fu(n)g Fw(dense)f(matrix)i Fu(a)f Fw(to)h(standard)f(output)h(as)e
+(it)i(w)-31 b(ould)480 b(normally)6767 75182 y(app)31
+b(ear)380 b(on)f(pap)31 b(er.)522 b(It)379 b(is)h(in)-31
+b(tended)380 b(as)f(a)g(debugging)i(to)31 b(ol)381 b(with)f(small)h(v)
+-61 b(alues)379 b(of)h Fu(n)p Fw(.)522 b(The)380 b(elemen)-31
+b(ts)380 b(are)6767 76510 y(prin)-31 b(ted)370 b(using)g(the)f
+Fu(\045g)g Fw(option.)495 b(A)369 b(blank)h(line)g(is)f(prin)-31
+b(ted)370 b(b)31 b(efore)369 b(and)g(after)h(the)f(matrix.)p
+Black Black eop
+%%Page: 140 150
+140 149 bop Black 0 2701 a Fx(140)24941 b(Generic)425
+b(Linear)g(Solv)-35 b(ers)425 b(in)f(SUNDIALS)p 0 3144
+48001 45 v Black 0 6974 a Fr(10.2)1792 b(The)599 b(BAND)f(mo)50
+b(dule)0 9646 y Fo(10.2.1)1495 b(T)-42 b(yp)42 b(e)499
+b Fa(BandMat)0 11716 y Fw(The)373 b(t)-31 b(yp)31 b(e)373
+b Fu(BandMat)h Fw(is)e(the)h(t)-31 b(yp)31 b(e)374 b(of)f(a)g(large)h
+(band)e(matrix)j(A)e(\(p)31 b(ossibly)373 b(distributed\).)505
+b(It)373 b(is)f(de\257ned)h(to)g(b)31 b(e)373 b(a)0 13045
+y(p)31 b(oin)-31 b(ter)370 b(to)g(a)f(structure)g(de\257ned)g(b)-31
+b(y:)p Black Black 0 15316 a Fu(typedef)582 b(struct)g({)1162
+16644 y(long)g(int)g(size;)1162 17973 y(long)g(int)g(mu,)f(ml,)h(smu;)
+1162 19301 y(realtype)h(**data;)0 20629 y(})e(*BandMat;)0
+22886 y Fw(The)369 b(\257elds)g(in)h(the)f(ab)31 b(o)-31
+b(v)g(e)371 b(structure)d(are:)p Black 1660 25143 a Fn(\262)p
+Black 554 w Fq(size)h Fw(is)g(the)h(n)-31 b(um)g(b)31
+b(er)369 b(of)h(columns)g(\(whic)-31 b(h)370 b(is)f(the)h(same)f(as)h
+(the)f(n)-31 b(um)g(b)31 b(er)369 b(of)h(ro)-31 b(ws\);)p
+Black 1660 27414 a Fn(\262)p Black 554 w Fq(mu)370 b
+Fw(is)f(the)g(upp)31 b(er)368 b(half-bandwidth,)373 b(0)308
+b Fn(\267)369 b Fq(mu)g Fn(\267)g Fq(size)p Fn(\241)p
+Fw(1;)p Black 1660 29685 a Fn(\262)p Black 554 w Fq(ml)h
+Fw(is)f(the)g(lo)-31 b(w)g(er)371 b(half-bandwidth,)h(0)308
+b Fn(\267)369 b Fq(ml)g Fn(\267)g Fq(size)p Fn(\241)p
+Fw(1;)p Black 1660 31957 a Fn(\262)p Black 554 w Fq(smu)300
+b Fw(is)f(the)h(storage)h(upp)31 b(er)298 b(half-bandwidth,)317
+b Fq(mu)300 b Fn(\267)f Fq(smu)g Fn(\267)h Fq(size)p
+Fn(\241)p Fw(1.)469 b(The)300 b Fu(BandFactor)h Fw(routine)f(writes)
+2767 33285 y(the)412 b(LU)f(factors)h(in)-31 b(to)413
+b(the)f(storage)g(for)g(A.)g(The)g(upp)31 b(er)410 b(triangular)j
+(factor)g(U,)f(ho)-31 b(w)g(ev)g(er,)423 b(ma)-31 b(y)413
+b(ha)-31 b(v)g(e)413 b(an)2767 34613 y(upp)31 b(er)315
+b(half-bandwidth)k(as)c(big)i(as)f(min)q(\()p Fq(size)p
+Fn(\241)p Fw(1,)p Fq(mu)p Fw(+)p Fq(ml)p Fw(\))h(b)31
+b(ecause)316 b(of)g(partial)i(piv)-31 b(oting.)477 b(The)316
+b Fq(smu)g Fw(\257eld)2767 35942 y(holds)370 b(the)f(upp)31
+b(er)369 b(half-bandwidth)j(allo)31 b(cated)371 b(for)e(A.)p
+Black 1660 38213 a Fn(\262)p Black 554 w Fq(data)402
+b Fw(is)g(a)h(t)-31 b(w)g(o)404 b(dimensional)h(arra)-31
+b(y)402 b(used)g(for)h(comp)31 b(onen)-31 b(t)404 b(storage.)593
+b(The)403 b(elemen)-31 b(ts)403 b(of)g(a)g(band)f(matrix)2767
+39541 y(of)461 b(t)-31 b(yp)31 b(e)461 b Fu(BandMat)h
+Fw(are)e(stored)g(column)-31 b(wise)463 b(\(i.e.)768
+b(columns)461 b(are)f(stored)g(one)h(on)g(top)g(of)g(the)g(other)g(in)
+2767 40870 y(memory\).)495 b(Only)369 b(elemen)-31 b(ts)370
+b(within)h(the)f(sp)31 b(eci\257ed)369 b(half-bandwidths)i(are)e
+(stored.)2767 42669 y(If)g(w)-31 b(e)370 b(n)-31 b(um)g(b)31
+b(er)369 b(ro)-31 b(ws)370 b(and)f(columns)h(in)g(the)f(band)g(matrix)i
+(starting)g(from)e(0,)h(then)p Black 4013 44941 a Fx({)p
+Black 554 w Fq(data[0])469 b Fw(is)i(a)f(p)31 b(oin)-31
+b(ter)471 b(to)g(\()p Fq(smu)p Fw(+)p Fq(ml)p Fw(+1\)*)p
+Fq(size)h Fw(con)-31 b(tiguous)472 b(lo)31 b(cations)472
+b(whic)-31 b(h)471 b(hold)g(the)g(elemen)-31 b(ts)5203
+46269 y(within)371 b(the)e(band)g(of)h(A)p Black 4013
+48069 a Fx({)p Black 554 w Fq(data[j])412 b Fw(is)g(a)h(p)31
+b(oin)-31 b(ter)413 b(to)f(the)h(upp)31 b(ermost)412
+b(elemen)-31 b(t)414 b(within)f(the)g(band)f(in)h(the)f(j-th)h(column.)
+622 b(This)5203 49397 y(p)31 b(oin)-31 b(ter)521 b(ma)-31
+b(y)523 b(b)31 b(e)520 b(treated)i(as)f(an)g(arra)-31
+b(y)522 b(indexed)f(from)h Fq(smu)p Fn(\241)p Fq(mu)f
+Fw(\(to)h(access)e(the)i(upp)31 b(ermost)5203 50725 y(elemen)-31
+b(t)458 b(within)h(the)f(band)f(in)h(the)g(j-th)f(column\))i(to)f
+Fq(smu)p Fw(+)p Fq(ml)f Fw(\(to)i(access)e(the)g(lo)-31
+b(w)g(est)459 b(elemen)-31 b(t)5203 52054 y(within)401
+b(the)f(band)g(in)f(the)h(j-th)g(column\).)586 b(Indices)399
+b(from)h(0)g(to)g Fq(smu)p Fn(\241)p Fq(mu)p Fn(\241)p
+Fw(1)g(giv)-31 b(e)401 b(access)e(to)h(extra)5203 53382
+y(storage)370 b(elemen)-31 b(ts)370 b(required)f(b)-31
+b(y)369 b Fu(BandFactor)p Fw(.)p Black 4013 55182 a Fx({)p
+Black 554 w Fq(data[j][i-j+smu])i Fw(is)e(the)g(\()p
+Fl(i;)184 b(j)63 b Fw(\)-th)372 b(elemen)-31 b(t,)371
+b Fl(j)63 b Fn(\241)p Fq(mu)370 b Fn(\267)307 b Fl(i)h
+Fn(\267)g Fl(j)63 b Fw(+)p Fq(ml)p Fw(.)1660 57453 y(The)345
+b(macros)g(b)31 b(elo)-31 b(w)345 b(allo)-31 b(w)347
+b(a)d(user)f(to)i(access)f(individual)j(matrix)e(elemen)-31
+b(ts)346 b(without)g(writing)g(out)f(explicit)0 58781
+y(data)313 b(structure)e(references)f(and)h(without)j(kno)-31
+b(wing)313 b(to)31 b(o)313 b(m)-31 b(uc)g(h)312 b(ab)31
+b(out)312 b(the)g(underlying)g(elemen)-31 b(t)313 b(storage.)475
+b(The)0 60110 y(only)373 b(storage)f(assumption)h(needed)f(is)f(that)i
+(elemen)-31 b(ts)373 b(are)f(stored)f(column)-31 b(wise)374
+b(and)e(that)h(a)f(p)31 b(oin)-31 b(ter)372 b(in)-31
+b(to)374 b(the)0 61438 y Fu(j)p Fw(-th)423 b(column)h(of)f(elemen)-31
+b(ts)424 b(can)e(b)31 b(e)422 b(obtained)j(via)e(the)g
+Fu(BAND)p 26708 61438 349 45 v 419 w(COL)g Fw(macro.)654
+b(Users)421 b(should)i(use)f(these)g(macros)0 62766 y(whenev)-31
+b(er)369 b(p)31 b(ossible.)1660 64109 y(See)369 b(Figure)g(10.1)i(for)f
+(a)f(diagram)i(of)f(the)f Fu(BandMat)h Fw(t)-31 b(yp)31
+b(e.)0 67284 y Fo(10.2.2)1495 b(Accessor)501 b(Macros)0
+69354 y Fw(The)292 b(follo)-31 b(wing)295 b(three)d(macros)g(are)g
+(de\257ned)f(b)-31 b(y)292 b(the)g Fs(band)g Fw(mo)31
+b(dule)293 b(to)f(pro)-31 b(vide)293 b(access)e(to)i(data)g(in)f(the)g
+Fu(BandMat)0 70682 y Fw(t)-31 b(yp)31 b(e:)p Black 1660
+72939 a Fn(\262)p Black 554 w Fu(BAND)p 5161 72939 V
+419 w(ELEM)2767 74739 y Fw(Usage)370 b(:)493 b Fu(BAND)p
+9196 74739 V 419 w(ELEM\(A,i,j\))582 b(=)g(a)p 18332
+74739 V 418 w(ij;)370 b Fw(or)f Fu(a)p 22800 74739 V
+418 w(ij)582 b(=)f(BAND)p 28448 74739 V 419 w(ELEM\(A,i,j\);)2767
+76539 y(BAND)p 5161 76539 V 419 w(ELEM)290 b Fw(references)e(the)h(\()p
+Fu(i)p Fw(,)p Fu(j)p Fw(\)-th)i(elemen)-31 b(t)290 b(of)g(the)f
+Fl(N)207 b Fn(\243)86 b Fl(N)410 b Fw(band)289 b(matrix)h
+Fu(A)p Fw(,)g(where)f(0)308 b Fn(\267)289 b Fu(i)p Fw(,)305
+b Fu(j)289 b Fn(\267)308 b Fl(N)206 b Fn(\241)86 b Fw(1.)2767
+77867 y(The)370 b(lo)31 b(cation)371 b(\()p Fu(i)p Fw(,)p
+Fu(j)p Fw(\))g(should)f(further)e(satisfy)j Fu(j)p Fn(\241)p
+Fu(\(A->mu\))f Fn(\267)f Fu(i)g Fn(\267)g Fu(j)p Fw(+)p
+Fu(\(A->ml\))p Fw(.)p Black Black eop
+%%Page: 141 151
+141 150 bop Black 4000 2701 a Fx(10.2)425 b(The)g(BAND)g(mo)35
+b(dule)32455 b(141)p 4000 3144 48001 45 v Black Black
+10000 58597 a @beginspecial 0 @llx 0 @lly 470 @urx 538
+ at ury 3240 @rwi @setspecial
+%%BeginDocument: bandmat.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: bandmat.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Thu May 23 14:49:16 2002
+%%For: radu at tux29.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 470 538
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.565 0.565 0.565 srgb} bind def
+/col33 {0.000 0.000 0.000 srgb} bind def
+
+end
+save
+newpath 0 538 moveto 0 0 lineto 470 0 lineto 470 538 lineto closepath clip newpath
+-98.0 559.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Times-Roman /Times-Roman-iso isovec ReEncode
+ /DrawEllipse {
+	/endangle exch def
+	/startangle exch def
+	/yrad exch def
+	/xrad exch def
+	/y exch def
+	/x exch def
+	/savematrix mtrx currentmatrix def
+	x y tr xrad yrad sc 0 0 1 startangle endangle arc
+	closepath
+	savematrix setmatrix
+	} def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+7.500 slw
+% Ellipse
+n 7800 3150 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 3300 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 3450 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 7650 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 7800 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 7950 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 5250 2775 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 5250 2325 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 5250 3675 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 3000 2700 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 2550 1500 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 5250 4125 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 5250 5025 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Polyline
+n 1650 3900 m 3450 3900 l 3450 2100 l 1650 2100 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 2100 m 5550 2100 l 5550 2550 l 4950 2550 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 2550 m 5550 2550 l 5550 3000 l 4950 3000 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 3000 m 5550 3000 l 5550 3450 l 4950 3450 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 3450 m 5550 3450 l 5550 3900 l 4950 3900 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 3900 m 5550 3900 l 5550 4350 l 4950 4350 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 4350 m 5550 4350 l 5550 4800 l 4950 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 4800 m 5550 4800 l 5550 5250 l 4950 5250 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+2520 2115 m 2580 2115 l 2580 1963 l 2550 2083 l 2520 1963 l cp
+eoclip
+n 2550 1500 m
+ 2550 2100 l gs col0 s gr gr
+
+% arrowhead
+n 2520 1963 m 2550 2083 l 2580 1963 l  col0 s
+% Polyline
+gs  clippath
+7215 1905 m 7215 1845 l 7063 1845 l 7183 1875 l 7063 1905 l cp
+eoclip
+n 5250 2775 m 5700 2775 l 5700 1875 l
+ 7200 1875 l gs col0 s gr gr
+
+% arrowhead
+n 7063 1905 m 7183 1875 l 7063 1845 l  col0 s
+% Polyline
+gs  clippath
+5070 2115 m 5130 2115 l 5130 1963 l 5100 2083 l 5070 1963 l cp
+eoclip
+n 3000 2700 m 3600 2700 l 3600 1875 l 5100 1875 l
+ 5100 2100 l gs col0 s gr gr
+
+% arrowhead
+n 5070 1963 m 5100 2083 l 5130 1963 l  col0 s
+% Polyline
+gs  clippath
+7215 705 m 7215 645 l 7063 645 l 7183 675 l 7063 705 l cp
+eoclip
+n 5250 2325 m 5250 675 l
+ 7200 675 l gs col0 s gr gr
+
+% arrowhead
+n 7063 705 m 7183 675 l 7063 645 l  col0 s
+% Polyline
+gs  clippath
+7215 3705 m 7215 3645 l 7063 3645 l 7183 3675 l 7063 3705 l cp
+eoclip
+n 5250 3675 m
+ 7200 3675 l gs col0 s gr gr
+
+% arrowhead
+n 7063 3705 m 7183 3675 l 7063 3645 l  col0 s
+% Polyline
+gs  clippath
+7215 8205 m 7215 8145 l 7063 8145 l 7183 8175 l 7063 8205 l cp
+eoclip
+n 5250 5025 m 5250 8175 l
+ 7200 8175 l gs col0 s gr gr
+
+% arrowhead
+n 7063 8205 m 7183 8175 l 7063 8145 l  col0 s
+% Polyline
+gs  clippath
+8970 615 m 9030 615 l 9030 463 l 9000 583 l 8970 463 l cp
+eoclip
+n 9000 375 m
+ 9000 600 l gs col0 s gr gr
+
+% arrowhead
+n 8970 463 m 9000 583 l 9030 463 l  col0 s
+% Polyline
+gs  clippath
+9030 1035 m 8970 1035 l 8970 1187 l 9000 1067 l 9030 1187 l cp
+eoclip
+n 9000 1275 m
+ 9000 1050 l gs col0 s gr gr
+
+% arrowhead
+n 9030 1187 m 9000 1067 l 8970 1187 l  col0 s
+% Polyline
+gs  clippath
+8970 1815 m 9030 1815 l 9030 1663 l 9000 1783 l 8970 1663 l cp
+eoclip
+n 9000 1575 m
+ 9000 1800 l gs col0 s gr gr
+
+% arrowhead
+n 8970 1663 m 9000 1783 l 9030 1663 l  col0 s
+% Polyline
+n 8550 600 m
+ 9450 600 l gs col0 s gr 
+% Polyline
+n 8550 1050 m
+ 9450 1050 l gs col0 s gr 
+% Polyline
+n 8550 1800 m
+ 9450 1800 l gs col0 s gr 
+% Polyline
+n 8400 3600 m 8400 3000 l 7200 3000 l 7200 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1650 m 8400 1500 l 7200 1500 l 7200 1650 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1800 m 8400 1650 l 7200 1650 l 7200 1800 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1500 m 8400 1350 l 7200 1350 l 7200 1500 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 2550 m 8400 2400 l 7200 2400 l 7200 2550 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 2700 m 8400 2550 l 7200 2550 l 7200 2700 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 2850 m 8400 2700 l 7200 2700 l 7200 2850 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 3000 m 8400 2850 l 7200 2850 l 7200 3000 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 4425 m 8400 4050 l 7200 4050 l 7200 4425 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 4800 m 8400 4425 l 7200 4425 l 7200 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 5175 m 8400 4800 l 7200 4800 l 7200 5175 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 5550 m 8400 5175 l 7200 5175 l 7200 5550 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 7050 m 8400 6900 l 7200 6900 l 7200 7050 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 7200 m 8400 7050 l 7200 7050 l 7200 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 7350 m 8400 7200 l 7200 7200 l 7200 7350 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 7500 m 8400 7350 l 7200 7350 l 7200 7500 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 8700 m 8400 8550 l 7200 8550 l 7200 8700 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 8850 m 8400 8700 l 7200 8700 l 7200 8850 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 9000 m 8400 8850 l 7200 8850 l 7200 9000 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 9150 m 8400 9000 l 7200 9000 l 7200 9150 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 9300 m 8400 9150 l 7200 9150 l 7200 9300 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+7215 6405 m 7215 6345 l 7063 6345 l 7183 6375 l 7063 6405 l cp
+eoclip
+n 5250 4125 m 5700 4125 l 5700 6375 l
+ 7200 6375 l gs col0 s gr gr
+
+% arrowhead
+n 7063 6405 m 7183 6375 l 7063 6345 l  col0 s
+% Polyline
+n 8400 6900 m 8400 6750 l 7200 6750 l 7200 6900 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 6300 m 8400 5925 l 7200 5925 l 7200 6300 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 8100 m 8400 7500 l 7200 7500 l 7200 8100 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 2400 m 8400 2250 l 7200 2250 l 7200 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1350 m 8400 1200 l 7200 1200 l 7200 1350 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1200 m 8400 1050 l 7200 1050 l 7200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 7200 1950 m 8400 1950 l 8400 2100 l 7200 2100 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 2100 m 8400 2100 l 8400 2250 l 7200 2250 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 1800 m 8400 1800 l 8400 1950 l 7200 1950 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 600 m 8400 600 l 8400 750 l 7200 750 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 750 m 8400 750 l 8400 900 l 7200 900 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 900 m 8400 900 l 8400 1050 l 7200 1050 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 3600 m 8400 3600 l 8400 3750 l 7200 3750 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 3750 m 8400 3750 l 8400 3900 l 7200 3900 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 3900 m 8400 3900 l 8400 4050 l 7200 4050 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 8400 5925 m 8400 5550 l 7200 5550 l 7200 5925 l
+ cp gs col0 s gr 
+% Polyline
+n 7200 6600 m 8400 6600 l 8400 6750 l 7200 6750 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 6450 m 8400 6450 l 8400 6600 l 7200 6600 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 6300 m 8400 6300 l 8400 6450 l 7200 6450 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 8100 m 8400 8100 l 8400 8250 l 7200 8250 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 8250 m 8400 8250 l 8400 8400 l 7200 8400 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 8400 m 8400 8400 l 8400 8550 l 7200 8550 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+/Times-Roman-iso ff 180.00 scf sf
+1875 1125 m
+gs 1 -1 sc (A \(type BandMat\)) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+1950 2400 m
+gs 1 -1 sc (size) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+2850 2400 m
+gs 1 -1 sc (data) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+2025 2775 m
+gs 1 -1 sc (N) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+1800 3300 m
+gs 1 -1 sc (mu) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+2400 3300 m
+gs 1 -1 sc (ml) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+3000 3300 m
+gs 1 -1 sc (smu) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 2400 m
+gs 1 -1 sc (data[0]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 2850 m
+gs 1 -1 sc (data[1]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 3750 m
+gs 1 -1 sc (data[j]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 4200 m
+gs 1 -1 sc (data[j+1]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 5100 m
+gs 1 -1 sc (data[N-1]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+5850 4275 m
+gs 1 -1 sc (data[j][smu-mu]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+5850 5400 m
+gs 1 -1 sc (data[j][smu]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+5850 6150 m
+gs 1 -1 sc (data[j][smu+ml]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+8700 1500 m
+gs 1 -1 sc (mu+ml+1) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+8700 900 m
+gs 1 -1 sc (smu-mu) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+7350 4650 m
+gs 1 -1 sc (A\(j-mu-1,j\)) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+7425 4275 m
+gs 1 -1 sc (A\(j-mu,j\)) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+7650 5400 m
+gs 1 -1 sc (A\(j,j\)) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+7500 6150 m
+gs 1 -1 sc (A\(j+ml,j\)) col0 sh gr
+% Ellipse
+n 7800 5100 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 5025 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 4950 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 5850 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 5775 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 5700 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 4650 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 4575 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 4500 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 3300 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 3225 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 3150 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Polyline
+n 2250 2850 m 2250 2550 l 1950 2550 l 1950 2850 l
+ cp gs col-1 s gr 
+% Polyline
+n 2100 3750 m 2100 3450 l 1800 3450 l 1800 3750 l
+ cp gs col-1 s gr 
+% Polyline
+n 2700 3750 m 2700 3450 l 2400 3450 l 2400 3750 l
+ cp gs col-1 s gr 
+% Polyline
+n 3300 3750 m 3300 3450 l 3000 3450 l 3000 3750 l
+ cp gs col-1 s gr 
+% Polyline
+n 2700 1650 m 2700 1350 l 2400 1350 l 2400 1650 l
+ cp gs col-1 s gr 
+% Polyline
+n 3150 2850 m 3150 2550 l 2850 2550 l 2850 2850 l
+ cp gs col-1 s gr 
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial 4000 61033 a Fw(Figure)511 b(10.1:)777 b(Diagram)512
+b(of)f(the)g(storage)g(for)g(a)g(band)g(matrix)h(of)f(t)-31
+b(yp)31 b(e)511 b Fu(BandMat)p Fw(.)918 b(Here)510 b
+Fu(A)h Fw(is)f(an)h Fl(N)462 b Fn(\243)340 b Fl(N)4000
+62361 y Fw(band)415 b(matrix)i(of)f(t)-31 b(yp)31 b(e)416
+b Fu(BandMat)g Fw(with)g(upp)31 b(er)414 b(and)i(lo)-31
+b(w)g(er)416 b(half-bandwidths)i Fu(mu)d Fw(and)h Fu(ml)p
+Fw(,)427 b(resp)31 b(ectiv)-31 b(ely)-92 b(.)632 b(The)4000
+63689 y(ro)-31 b(ws)487 b(and)h(columns)f(of)h Fu(A)f
+Fw(are)g(n)-31 b(um)g(b)31 b(ered)487 b(from)g(0)h(to)f
+Fl(N)446 b Fn(\241)325 b Fw(1)487 b(and)g(the)g(\()p
+Fl(i;)184 b(j)63 b Fw(\)-th)490 b(elemen)-31 b(t)489
+b(of)e Fu(A)g Fw(is)g(denoted)4000 65018 y Fu(A\(i,j\))p
+Fw(.)744 b(The)453 b(grey)-31 b(ed)454 b(out)f(areas)g(of)g(the)g
+(underlying)h(comp)31 b(onen)-31 b(t)455 b(storage)e(are)g(used)f(b)-31
+b(y)453 b(the)h Fu(BandFactor)4000 66346 y Fw(and)369
+b Fu(BandBacksolve)i Fw(routines.)p Black Black Black
+eop
+%%Page: 142 152
+142 151 bop Black 0 2701 a Fx(142)24941 b(Generic)425
+b(Linear)g(Solv)-35 b(ers)425 b(in)f(SUNDIALS)p 0 3144
+48001 45 v Black Black 1660 6974 a Fn(\262)p Black 554
+w Fu(BAND)p 5161 6974 349 45 v 419 w(COL)2767 8757 y
+Fw(Usage)370 b(:)493 b Fu(col)p 8615 8757 V 419 w(j)581
+b(=)g(BAND)p 13682 8757 V 419 w(COL\(A,j\);)2767 10540
+y(BAND)p 5161 10540 V 419 w(COL)328 b Fw(references)e(the)h(diagonal)j
+(elemen)-31 b(t)329 b(of)f(the)g Fu(j)p Fw(-th)f(column)i(of)f(the)f
+Fl(N)284 b Fn(\243)162 b Fl(N)448 b Fw(band)327 b(matrix)i
+Fu(A)p Fw(,)f(0)308 b Fn(\267)2767 11868 y Fu(j)392 b
+Fn(\267)345 b Fl(N)382 b Fn(\241)261 b Fw(1.)560 b(The)392
+b(t)-31 b(yp)31 b(e)392 b(of)g(the)g(expression)g Fu(BAND)p
+24534 11868 V 419 w(COL\(A,j\))g Fw(is)g Fu(realtype)582
+b(*)p Fw(.)560 b(The)392 b(p)31 b(oin)-31 b(ter)392 b(returned)2767
+13197 y(b)-31 b(y)475 b(the)h(call)g Fu(BAND)p 10952
+13197 V 419 w(COL\(A,j\))f Fw(can)g(b)31 b(e)475 b(treated)g(as)g(an)g
+(arra)-31 b(y)475 b(whic)-31 b(h)476 b(is)f(indexed)g(from)g
+Fn(\241)p Fu(\(A->mu\))h Fw(to)2767 14525 y Fu(\(A->ml\))p
+Fw(.)p Black 1660 16763 a Fn(\262)p Black 554 w Fu(BAND)p
+5161 16763 V 419 w(COL)p 7323 16763 V 419 w(ELEM)2767
+18546 y Fw(Usage)370 b(:)493 b Fu(BAND)p 9196 18546 V
+419 w(COL)p 11358 18546 V 419 w(ELEM\(col)p 16425 18546
+V 419 w(j,i,j\))582 b(=)g(a)p 22656 18546 V 418 w(ij;)370
+b Fw(or)f Fu(a)p 27124 18546 V 418 w(ij)582 b(=)f(BAND)p
+32772 18546 V 419 w(COL)p 34934 18546 V 419 w(ELEM\(col)p
+40001 18546 V 419 w(j,i,j\);)2767 20329 y Fw(This)553
+b(macro)g(references)d(the)i(\()p Fu(i)p Fw(,)p Fu(j)p
+Fw(\)-th)j(en)-31 b(try)552 b(of)g(the)h(band)f(matrix)h
+Fu(A)f Fw(when)g(used)g(in)g(conjunction)2767 21658 y(with)466
+b Fu(BAND)p 7778 21658 V 419 w(COL)e Fw(to)h(reference)e(the)i
+Fu(j)p Fw(-th)f(column)h(through)g Fu(col)p 31049 21658
+V 419 w(j)p Fw(.)778 b(The)464 b(index)h(\()p Fu(i)p
+Fw(,)p Fu(j)p Fw(\))g(should)g(satisfy)2767 22986 y Fu(j)p
+Fn(\241)p Fu(\(A->mu\))371 b Fn(\267)e Fu(i)g Fn(\267)g
+Fu(j)p Fw(+)p Fu(\(A->ml\))p Fw(.)0 27014 y Fo(10.2.3)1495
+b(F)-125 b(unctions)0 29068 y Fw(The)323 b(follo)-31
+b(wing)326 b(functions)d(for)g Fu(BandMat)g Fw(matrices)g(are)g(a)-31
+b(v)-61 b(ailable)325 b(in)d(the)h Fs(band)f Fw(pac)-31
+b(k)-61 b(age.)479 b(F)-92 b(or)321 b(full)j(details,)333
+b(see)0 30397 y(the)369 b(header)g(\257le)h Fu(band.h)p
+Fw(.)p Black 1660 32629 a Fn(\262)p Black 554 w Fu(BandAllocMat)p
+Fw(:)495 b(allo)31 b(cation)372 b(of)e(a)f Fu(BandMat)h
+Fw(matrix;)p Black 1660 34867 a Fn(\262)p Black 554 w
+Fu(BandAllocPiv)p Fw(:)495 b(allo)31 b(cation)372 b(of)e(a)f(piv)-31
+b(ot)371 b(arra)-31 b(y)370 b(for)f(use)g(with)h Fu(BandFactor)p
+Fw(/)p Fu(BandBacksolve)p Fw(;)p Black 1660 37104 a Fn(\262)p
+Black 554 w Fu(BandFactor)p Fw(:)494 b(LU)369 b(factorization)k(with)d
+(partial)h(piv)-31 b(oting;)p Black 1660 39342 a Fn(\262)p
+Black 554 w Fu(BandBacksolve)p Fw(:)495 b(solution)371
+b(of)f Fl(Ax)307 b Fw(=)g Fl(b)369 b Fw(using)h(LU)f(factorization;)p
+Black 1660 41580 a Fn(\262)p Black 554 w Fu(BandZero)p
+Fw(:)494 b(load)370 b(a)g(matrix)h(with)f(zeros;)p Black
+1660 43818 a Fn(\262)p Black 554 w Fu(BandCopy)p Fw(:)494
+b(cop)-31 b(y)370 b(one)f(matrix)i(to)f(another;)p Black
+1660 46056 a Fn(\262)p Black 554 w Fu(BandScale)p Fw(:)494
+b(scale)370 b(a)f(matrix)i(b)-31 b(y)369 b(a)h(scalar;)p
+Black 1660 48294 a Fn(\262)p Black 554 w Fu(BandAddI)p
+Fw(:)h(incremen)-31 b(t)370 b(a)g(matrix)g(b)-31 b(y)370
+b(the)f(iden)-31 b(tit)g(y)372 b(matrix;)p Black 1660
+50532 a Fn(\262)p Black 554 w Fu(BandFreeMat)p Fw(:)495
+b(free)368 b(memory)i(for)g(a)f Fu(BandMat)h Fw(matrix;)p
+Black 1660 52770 a Fn(\262)p Black 554 w Fu(BandFreePiv)p
+Fw(:)495 b(free)368 b(memory)i(for)g(a)f(piv)-31 b(ot)371
+b(arra)-31 b(y;)p Black 1660 55007 a Fn(\262)p Black
+554 w Fu(BandPrint)p Fw(:)494 b(prin)-31 b(t)370 b(a)f
+Fu(BandMat)h Fw(matrix)h(to)f(standard)g(output.)0 59597
+y Fr(10.3)1792 b(The)599 b(SPGMR)e(mo)50 b(dule)0 62033
+y Fw(The)445 b Fs(spgmr)f Fw(pac)-31 b(k)-61 b(age,)465
+b(in)445 b(the)g(\257les)g Fu(spgmr.h)g Fw(and)g Fu(spgmr.c)p
+Fw(,)465 b(includes)445 b(an)g(implemen)-31 b(tation)449
+b(of)c(the)g(scaled)0 63362 y(preconditioned)293 b(GMRES)e(metho)31
+b(d.)467 b(A)292 b(separate)f(co)31 b(de)292 b(mo)31
+b(dule,)308 b Fu(iterative.h)293 b Fw(and)e Fu(iterative.c)p
+Fw(,)309 b(con)-31 b(tains)0 64690 y(auxiliary)424 b(functions)f(that)h
+(supp)31 b(ort)421 b Fs(spgmr)p Fw(,)435 b(and)422 b(also)h(other)f
+(Krylo)-31 b(v)423 b(solv)-31 b(ers)422 b(to)h(b)31 b(e)421
+b(added)i(later.)652 b(F)-92 b(or)421 b(full)0 66018
+y(details,)371 b(including)g(usage)e(instructions,)i(see)e(the)g
+(\257les)g Fu(spgmr.h)h Fw(and)g Fu(iterative.h)p Fw(.)0
+68927 y Fx(F)-106 b(unctions.)1107 b Fw(The)370 b(follo)-31
+b(wing)372 b(functions)f(are)e(a)-31 b(v)-61 b(ailable)372
+b(in)d(the)g Fs(spgmr)f Fw(pac)-31 b(k)-61 b(age:)p Black
+1660 71159 a Fn(\262)p Black 554 w Fu(SpgmrMalloc)p Fw(:)495
+b(allo)31 b(cation)372 b(of)e(memory)g(for)f Fu(SpgmrSolve)p
+Fw(;)p Black 1660 73397 a Fn(\262)p Black 554 w Fu(SpgmrSolve)p
+Fw(:)494 b(solution)371 b(of)f Fl(Ax)307 b Fw(=)h Fl(b)369
+b Fw(b)-31 b(y)369 b(the)h Fs(spgmr)e Fw(metho)31 b(d;)p
+Black 1660 75635 a Fn(\262)p Black 554 w Fu(SpgmrFree)p
+Fw(:)494 b(free)369 b(memory)h(allo)31 b(cated)372 b(b)-31
+b(y)369 b Fu(SpgmrMalloc)p Fw(.)0 77867 y(The)g(follo)-31
+b(wing)373 b(functions)d(are)g(a)-31 b(v)-61 b(ailable)371
+b(in)f(the)f(supp)31 b(ort)369 b(pac)-31 b(k)-61 b(age)370
+b Fu(iterative.h)h Fw(and)e Fu(iterative.c)p Fw(:)p Black
+Black eop
+%%Page: 143 153
+143 152 bop Black 4000 2701 a Fx(10.3)425 b(The)g(SPGMR)g(mo)35
+b(dule)31554 b(143)p 4000 3144 48001 45 v Black Black
+5660 6974 a Fn(\262)p Black 554 w Fu(ModifiedGS)p Fw(:)371
+b(p)31 b(erforms)369 b(mo)31 b(di\257ed)370 b(Gram-Sc)-31
+b(hmidt)371 b(pro)31 b(cedure;)p Black 5660 9188 a Fn(\262)p
+Black 554 w Fu(ClassicalGS)p Fw(:)372 b(p)31 b(erforms)368
+b(classical)j(Gram-Sc)-31 b(hmidt)371 b(pro)31 b(cedure;)p
+Black 5660 11402 a Fn(\262)p Black 554 w Fu(QRfact)p
+Fw(:)494 b(p)31 b(erforms)368 b(QR)h(factorization)k(of)d(Hessen)-31
+b(b)31 b(erg)368 b(matrix;)p Black 5660 13616 a Fn(\262)p
+Black 554 w Fu(QRsol)p Fw(:)494 b(solv)-31 b(es)369 b(a)h(least)g
+(squares)e(problem)i(with)h(a)e(Hessen)-31 b(b)31 b(erg)369
+b(matrix)h(factored)g(b)-31 b(y)370 b Fu(QRfact)p Fw(.)p
+Black Black eop
+%%Page: 144 154
+144 153 bop Black Black Black Black eop
+%%Page: 145 155
+145 154 bop Black Black 4000 15276 a Ft(Chapter)861 b(11)4000
+20811 y Fv(CV)-86 b(ODES)1032 b(Constan)-86 b(ts)4000
+26567 y Fw(Belo)-31 b(w)467 b(w)-31 b(e)465 b(list)h(all)g(input)g(and)
+f(output)h(constan)-31 b(ts)466 b(used)e(b)-31 b(y)466
+b(the)f(main)h(solv)-31 b(er)465 b(and)h(linear)f(solv)-31
+b(er)466 b(mo)31 b(dules,)4000 27895 y(together)370 b(with)h(their)e(n)
+-31 b(umerical)371 b(v)-61 b(alues)369 b(and)h(a)f(short)g(description)
+h(of)g(their)g(meaning.)4000 31556 y Fr(11.1)1792 b(CV)-50
+b(ODES)599 b(input)g(constan)-50 b(ts)4000 33981 y Fs(cv)-25
+b(odes)425 b Fx(main)f(solv)-35 b(er)425 b(mo)35 b(dule)5156
+35821 y Fu(CV)p 6388 35821 349 45 v 419 w(ADAMS)9721
+b Fw(1)1329 b(Adams-Moulton)371 b(linear)f(m)-31 b(ultistep)371
+b(metho)31 b(d.)5156 37150 y Fu(CV)p 6388 37150 V 419
+w(BDF)10883 b Fw(2)1329 b(BDF)368 b(linear)i(m)-31 b(ultistep)371
+b(metho)31 b(d.)5156 38478 y Fu(CV)p 6388 38478 V 419
+w(FUNCTIONAL)6816 b Fw(1)1329 b(Nonlinear)370 b(system)g(solution)h
+(through)f(functional)h(iterations.)5156 39806 y Fu(CV)p
+6388 39806 V 419 w(NEWTON)9140 b Fw(2)1329 b(Nonlinear)370
+b(system)g(solution)h(through)f(Newton)g(iterations.)5156
+41135 y Fu(CV)p 6388 41135 V 419 w(SS)11464 b Fw(1)1329
+b(Scalar)370 b(relativ)-31 b(e)370 b(tolerance,)h(scalar)f(absolute)h
+(tolerance.)5156 42463 y Fu(CV)p 6388 42463 V 419 w(SV)11464
+b Fw(2)1329 b(Scalar)370 b(relativ)-31 b(e)370 b(tolerance,)h(v)-31
+b(ector)370 b(absolute)h(tolerance.)5156 43791 y Fu(CV)p
+6388 43791 V 419 w(EE)11464 b Fw(2)1329 b(Estimated)377
+b(relativ)-31 b(e)377 b(tolerance)g(and)f(absolute)h(tolerance)f(for)g
+(sensi-)21245 45120 y(tivit)-31 b(y)371 b(v)-61 b(ariables.)5156
+46448 y Fu(CV)p 6388 46448 V 419 w(NORMAL)9140 b Fw(1)1329
+b(Solv)-31 b(er)370 b(returns)e(at)i(sp)31 b(eci\257ed)368
+b(output)j(time.)5156 47776 y Fu(CV)p 6388 47776 V 419
+w(ONE)p 8550 47776 V 419 w(STEP)8140 b Fw(2)1329 b(Solv)-31
+b(er)370 b(returns)e(after)h(eac)-31 b(h)370 b(successful)f(step.)5156
+49105 y Fu(CV)p 6388 49105 V 419 w(NORMAL)p 10293 49105
+V 419 w(TSTOP)5816 b Fw(3)1329 b(Solv)-31 b(er)370 b(returns)f(at)h(sp)
+31 b(eci\257ed)369 b(output)i(time,)g(but)f(do)31 b(es)369
+b(not)i(pro)31 b(ceed)21245 50433 y(past)369 b(the)h(sp)31
+b(eci\257ed)368 b(stopping)j(time.)5156 51761 y Fu(CV)p
+6388 51761 V 419 w(ONE)p 8550 51761 V 419 w(STEP)p 11293
+51761 V 419 w(TSTOP)4816 b Fw(4)1329 b(Solv)-31 b(er)312
+b(returns)e(after)i(eac)-31 b(h)311 b(successful)g(step,)323
+b(but)312 b(do)31 b(es)311 b(not)h(pro)31 b(ceed)21245
+53090 y(past)369 b(the)h(sp)31 b(eci\257ed)368 b(stopping)j(time.)5156
+54418 y Fu(CV)p 6388 54418 V 419 w(SIMULTANEOUS)5654
+b Fw(1)1329 b(Sim)-31 b(ultaneous)371 b(corrector)e(forw)-31
+b(ard)370 b(sensitivit)-31 b(y)372 b(metho)31 b(d.)5156
+55746 y Fu(CV)p 6388 55746 V 419 w(STAGGERED)7397 b Fw(2)1329
+b(Staggered)370 b(corrector)f(forw)-31 b(ard)370 b(sensitivit)-31
+b(y)371 b(metho)31 b(d.)5156 57075 y Fu(CV)p 6388 57075
+V 419 w(STAGGERED1)6816 b Fw(3)1329 b(Staggered)370 b(\(v)-61
+b(arian)-31 b(t\))371 b(corrector)e(forw)-31 b(ard)370
+b(sensitivit)-31 b(y)372 b(metho)31 b(d.)4000 59712 y
+Fx(Iterativ)-35 b(e)424 b(linear)h(solv)-35 b(er)424
+b(mo)35 b(dule)5156 61553 y Fu(PREC)p 7550 61553 V 419
+w(NONE)9140 b Fw(0)1329 b(No)369 b(preconditioning)5156
+62881 y Fu(PREC)p 7550 62881 V 419 w(LEFT)9140 b Fw(1)1329
+b(Preconditioning)372 b(on)d(the)h(left)g(only)-92 b(.)5156
+64210 y Fu(PREC)p 7550 64210 V 419 w(RIGHT)8559 b Fw(2)1329
+b(Preconditioning)372 b(on)d(the)h(righ)-31 b(t)370 b(only)-92
+b(.)5156 65538 y Fu(PREC)p 7550 65538 V 419 w(BOTH)9140
+b Fw(3)1329 b(Preconditioning)372 b(on)d(b)31 b(oth)370
+b(the)f(left)i(and)e(the)g(righ)-31 b(t.)5156 66866 y
+Fu(MODIFIED)p 9874 66866 V 420 w(GS)7977 b Fw(1)1329
+b(Use)368 b(mo)31 b(di\257ed)371 b(Gram-Sc)-31 b(hmidt)370
+b(pro)31 b(cedure.)5156 68195 y Fu(CLASSICAL)p 10455
+68195 V 420 w(GS)7396 b Fw(2)1329 b(Use)368 b(classical)j(Gram-Sc)-31
+b(hmidt)371 b(pro)31 b(cedure.)4000 73165 y Fr(11.2)1792
+b(CV)-50 b(ODES)599 b(output)g(constan)-50 b(ts)4000
+75589 y Fs(cv)-25 b(odes)425 b Fx(main)f(solv)-35 b(er)425
+b(mo)35 b(dule)p Black Black eop
+%%Page: 146 156
+146 155 bop Black 0 2701 a Fx(146)34797 b(CV)-35 b(ODES)426
+b(Constan)-35 b(ts)p 0 3144 48001 45 v Black 664 6797
+a Fu(CV)p 1896 6797 349 45 v 419 w(SUCCESS)9481 b Fw(0)1329
+b(Successful)369 b(function)i(return.)664 8125 y Fu(CV)p
+1896 8125 V 419 w(TSTOP)p 5220 8125 V 419 w(RETURN)6738
+b Fw(1)1329 b Fu(CVode)370 b Fw(succeeded)e(b)-31 b(y)370
+b(reac)-31 b(hing)370 b(the)f(sp)31 b(eci\257ed)369 b(stopping)i(p)31
+b(oin)-31 b(t.)664 9453 y Fu(CV)p 1896 9453 V 419 w(ROOT)p
+4639 9453 V 419 w(RETURN)7319 b Fw(2)1329 b Fu(CVode)370
+b Fw(succeeded)e(and)i(found)f(one)h(or)f(more)g(ro)31
+b(ots.)664 10782 y Fu(CV)p 1896 10782 V 419 w(MEM)p 4058
+10782 V 419 w(NULL)8693 b Fw(-1)1329 b(The)370 b Fu(cvode)p
+22926 10782 V 419 w(mem)f Fw(argumen)-31 b(t)371 b(w)-31
+b(as)370 b Fu(NULL)p Fw(.)664 12110 y Fu(CV)p 1896 12110
+V 419 w(ILL)p 4058 12110 V 419 w(INPUT)8112 b Fw(-2)1329
+b(One)369 b(of)h(the)f(function)i(inputs)e(is)g(illegal.)664
+13438 y Fu(CV)p 1896 13438 V 419 w(NO)p 3477 13438 V
+419 w(MALLOC)8112 b Fw(-3)1329 b(The)939 b Fs(cv)-25
+b(ode)940 b Fw(memory)g(w)-31 b(as)940 b(not)g(allo)31
+b(cated)942 b(b)-31 b(y)939 b(a)h(call)g(to)17675 14767
+y Fu(CVodeMalloc)p Fw(.)664 16095 y Fu(CV)p 1896 16095
+V 419 w(TOO)p 4058 16095 V 419 w(MUCH)p 6801 16095 V
+419 w(WORK)5950 b Fw(-4)1329 b(The)533 b(solv)-31 b(er)533
+b(to)31 b(ok)534 b Fu(mxstep)f Fw(in)-31 b(ternal)534
+b(steps)e(but)h(could)g(not)h(reac)-31 b(h)17675 17424
+y(tout.)664 18752 y Fu(CV)p 1896 18752 V 419 w(TOO)p
+4058 18752 V 419 w(MUCH)p 6801 18752 V 419 w(ACC)6531
+b Fw(-5)1329 b(The)480 b(solv)-31 b(er)480 b(could)g(not)h(satisfy)f
+(the)g(accuracy)g(demanded)h(b)-31 b(y)479 b(the)17675
+20080 y(user)368 b(for)h(some)h(in)-31 b(ternal)371 b(step.)664
+21409 y Fu(CV)p 1896 21409 V 419 w(ERR)p 4058 21409 V
+419 w(FAILURE)6950 b Fw(-6)1329 b(Error)253 b(test)h(failures)h(o)31
+b(ccurred)253 b(to)31 b(o)254 b(man)-31 b(y)255 b(times)g(during)f(one)
+g(in)-31 b(ternal)17675 22737 y(time)371 b(step)e(or)g(minim)-31
+b(um)371 b(step)e(size)g(w)-31 b(as)370 b(reac)-31 b(hed.)664
+24065 y Fu(CV)p 1896 24065 V 419 w(CONV)p 4639 24065
+V 419 w(FAILURE)6369 b Fw(-7)1329 b(Con)-31 b(v)g(ergence)321
+b(test)f(failures)f(o)31 b(ccurred)319 b(to)31 b(o)320
+b(man)-31 b(y)321 b(times)f(during)f(one)17675 25394
+y(in)-31 b(ternal)371 b(time)f(step)f(or)g(minim)-31
+b(um)372 b(step)d(size)g(w)-31 b(as)370 b(reac)-31 b(hed.)664
+26722 y Fu(CV)p 1896 26722 V 419 w(LINIT)p 5220 26722
+V 419 w(FAIL)7531 b Fw(-8)1329 b(The)370 b(linear)f(solv)-31
+b(er's)370 b(initialization)k(function)d(failed.)664
+28050 y Fu(CV)p 1896 28050 V 419 w(LSETUP)p 5801 28050
+V 419 w(FAIL)6950 b Fw(-9)1329 b(The)455 b(linear)g(solv)-31
+b(er's)454 b(setup)g(function)i(failed)g(in)e(an)h(unreco)-31
+b(v)g(erable)17675 29379 y(manner.)664 30707 y Fu(CV)p
+1896 30707 V 419 w(LSOLVE)p 5801 30707 V 419 w(FAIL)6397
+b Fw(-10)1329 b(The)485 b(linear)h(solv)-31 b(er's)486
+b(solv)-31 b(e)485 b(function)i(failed)f(in)f(an)h(unreco)-31
+b(v)g(erable)17675 32035 y(manner.)664 33364 y Fu(CV)p
+1896 33364 V 419 w(MEM)p 4058 33364 V 419 w(FAIL)8140
+b Fw(-11)1329 b(A)369 b(memory)h(allo)31 b(cation)373
+b(failed.)664 34692 y Fu(CV)p 1896 34692 V 419 w(RTFUNC)p
+5801 34692 V 419 w(NULL)6397 b Fw(-12)1329 b(The)370
+b(user-supplied)e(ro)31 b(ot)370 b(function)g(is)g Fu(NULL)p
+Fw(.)664 36020 y Fu(CV)p 1896 36020 V 419 w(NO)p 3477
+36020 V 419 w(SLDET)8140 b Fw(-13)1329 b(The)370 b(stabilit)-31
+b(y)372 b(limit)f(detection)g(algorithm)h(w)-31 b(as)369
+b(not)h(activ)-61 b(ated.)664 37349 y Fu(CV)p 1896 37349
+V 419 w(BAD)p 4058 37349 V 419 w(K)9883 b Fw(-14)1329
+b(The)370 b(deriv)-61 b(ativ)-31 b(e)370 b(order)f Fl(k)404
+b Fw(is)369 b(larger)g(than)h(the)g(order)e(used.)664
+38677 y Fu(CV)p 1896 38677 V 419 w(BAD)p 4058 38677 V
+419 w(T)9883 b Fw(-15)1329 b(The)370 b(time)g Fl(t)f
+Fw(s)f(outside)i(the)g(last)g(step)f(tak)-31 b(en.)664
+40006 y Fu(CV)p 1896 40006 V 419 w(BAD)p 4058 40006 V
+419 w(DKY)8721 b Fw(-16)1329 b(The)370 b(output)g(deriv)-61
+b(ativ)-31 b(e)371 b(v)-31 b(ector)369 b(is)h Fu(NULL)p
+Fw(.)664 41334 y Fu(CV)p 1896 41334 V 419 w(PDATA)p 5220
+41334 V 419 w(NULL)6978 b Fw(-17)1329 b(The)370 b(preconditioner)g(mo)
+31 b(dule)370 b(has)f(not)h(b)31 b(een)369 b(initialized.)664
+42662 y Fu(CV)p 1896 42662 V 419 w(BAD)p 4058 42662 V
+419 w(IS)9302 b Fw(-18)1329 b(The)314 b(sensitivit)-31
+b(y)315 b(index)f(is)f(larger)g(than)h(the)g(n)-31 b(um)g(b)31
+b(er)313 b(of)h(sensitivities)17675 43991 y(computed.)664
+45319 y Fu(CV)p 1896 45319 V 419 w(NO)p 3477 45319 V
+419 w(QUAD)8721 b Fw(-20)1329 b(Quadrature)370 b(in)-31
+b(tegration)372 b(w)-31 b(as)369 b(not)h(activ)-61 b(ated.)664
+46647 y Fu(CV)p 1896 46647 V 419 w(NO)p 3477 46647 V
+419 w(SENS)8721 b Fw(-21)1329 b(F)-92 b(orw)-31 b(ard)369
+b(sensitivit)-31 b(y)372 b(in)-31 b(tegration)372 b(w)-31
+b(as)370 b(not)f(activ)-61 b(ated.)0 49285 y Fs(cv)-25
+b(odea)425 b Fx(adjoin)-35 b(t)424 b(solv)-35 b(er)425
+b(mo)35 b(dule)1156 51341 y Fu(CV)p 2388 51341 V 419
+w(ADJMEM)p 6293 51341 V 419 w(NULL)6397 b Fw(-101)1330
+b(The)369 b Fu(cvadj)p 23971 51341 V 419 w(mem)h Fw(argumen)-31
+b(t)370 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)1156 52669
+y Fu(CV)p 2388 52669 V 419 w(BAD)p 4550 52669 V 419 w(TB0)8721
+b Fw(-103)1330 b(The)395 b(\257nal)h(time)g(for)f(the)h(adjoin)-31
+b(t)397 b(problem)f(is)f(outside)h(the)f(in)-31 b(terv)-61
+b(al)18721 53997 y(o)-31 b(v)g(er)369 b(whic)-31 b(h)370
+b(the)g(forw)-31 b(ard)370 b(problem)g(w)-31 b(as)370
+b(solv)-31 b(ed.)1156 55326 y Fu(CV)p 2388 55326 V 419
+w(BCKMEM)p 6293 55326 V 419 w(NULL)6397 b Fw(-104)1330
+b(The)424 b Fu(cvodes)g Fw(memory)h(for)f(the)g(bac)-31
+b(kw)g(ard)426 b(problem)f(w)-31 b(as)424 b(not)h(cre-)18721
+56654 y(ated.)1156 57982 y Fu(CV)p 2388 57982 V 419 w(REIFWD)p
+6293 57982 V 419 w(FAIL)6397 b Fw(-105)1330 b(Reinitialization)647
+b(of)642 b(the)h(forw)-31 b(ard)643 b(problem)g(failed)g(at)g(the)g
+(\257rst)18721 59311 y(c)-31 b(hec)g(kp)31 b(oin)-31
+b(t.)1156 60639 y Fu(CV)p 2388 60639 V 419 w(FWD)p 4550
+60639 V 419 w(FAIL)8140 b Fw(-106)1330 b(An)387 b(error)f(o)31
+b(ccured)386 b(during)h(the)h(in)-31 b(tegration)390
+b(of)d(the)h(forw)-31 b(ard)387 b(prob-)18721 61968 y(lem.)1156
+63296 y Fu(CV)p 2388 63296 V 419 w(BAD)p 4550 63296 V
+419 w(ITASK)7559 b Fw(-107)1330 b(W)-92 b(rong)369 b(task)g(for)h(bac)
+-31 b(kw)g(ard)370 b(in)-31 b(tegration.)1156 64624 y
+Fu(CV)p 2388 64624 V 419 w(BAD)p 4550 64624 V 419 w(TBOUT)7559
+b Fw(-108)1330 b(The)324 b(desired)f(output)i(time)g(is)e(outside)i
+(the)f(in)-31 b(terv)-61 b(al)325 b(o)-31 b(v)g(er)324
+b(whic)-31 b(h)325 b(the)18721 65953 y(forw)-31 b(ard)370
+b(problem)f(w)-31 b(as)370 b(solv)-31 b(ed.)1156 67281
+y Fu(CV)p 2388 67281 V 419 w(GETY)p 5131 67281 V 419
+w(BADT)7559 b Fw(-109)1330 b(W)-92 b(rong)369 b(time)h(in)f(Hermite)i
+(in)-31 b(terp)31 b(olation)372 b(function.)0 69919 y
+Fs(cvdense)425 b Fx(linear)g(solv)-35 b(er)424 b(mo)35
+b(dule)1156 71759 y Fu(CVDENSE)p 5293 71759 V 420 w(SUCCESS)6022
+b Fw(0)1329 b(Successful)368 b(function)j(return.)1156
+73087 y Fu(CVDENSE)p 5293 73087 V 420 w(MEM)p 7456 73087
+V 418 w(NULL)5235 b Fw(-1)1329 b(The)369 b Fu(cvode)p
+22864 73087 V 419 w(mem)h Fw(argumen)-31 b(t)370 b(w)-31
+b(as)370 b Fu(NULL)p Fw(.)1156 74416 y Fu(CVDENSE)p 5293
+74416 V 420 w(LMEM)p 8037 74416 V 419 w(NULL)4653 b Fw(-2)1329
+b(The)369 b Fs(cvdense)h Fw(linear)g(solv)-31 b(er)370
+b(has)f(not)h(b)31 b(een)368 b(initialized.)p Black Black
+eop
+%%Page: 147 157
+147 156 bop Black 4000 2701 a Fx(11.2)425 b(CV)-35 b(ODES)426
+b(output)g(constan)-35 b(ts)28290 b(147)p 4000 3144 48001
+45 v Black 4664 6797 a Fu(CVDENSE)p 8801 6797 349 45
+v 420 w(ILL)p 10964 6797 V 419 w(INPUT)4653 b Fw(-3)1329
+b(The)296 b Fs(cvdense)i Fw(solv)-31 b(er)297 b(is)f(not)i(compatible)h
+(with)f(the)e(curren)-31 b(t)297 b Fs(nvec-)21122 8125
+y(tor)368 b Fw(mo)31 b(dule.)4664 9453 y Fu(CVDENSE)p
+8801 9453 V 420 w(MEM)p 10964 9453 V 419 w(FAIL)5234
+b Fw(-4)1329 b(A)369 b(memory)h(allo)31 b(cation)373
+b(request)368 b(failed.)4000 12091 y Fs(cvband)425 b
+Fx(linear)f(solv)-35 b(er)425 b(mo)35 b(dule)5156 13932
+y Fu(CVBAND)p 8712 13932 V 419 w(SUCCESS)6604 b Fw(0)1329
+b(Successful)368 b(function)j(return.)5156 15260 y Fu(CVBAND)p
+8712 15260 V 419 w(MEM)p 10874 15260 V 419 w(NULL)5816
+b Fw(-1)1329 b(The)369 b Fu(cvode)p 26864 15260 V 419
+w(mem)h Fw(argumen)-31 b(t)370 b(w)-31 b(as)370 b Fu(NULL)p
+Fw(.)5156 16588 y Fu(CVBAND)p 8712 16588 V 419 w(LMEM)p
+11455 16588 V 419 w(NULL)5235 b Fw(-2)1329 b(The)369
+b Fs(cvband)g Fw(linear)h(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)369 b(initialized.)5156 17917 y Fu(CVBAND)p 8712
+17917 V 419 w(ILL)p 10874 17917 V 419 w(INPUT)5235 b
+Fw(-3)1329 b(The)343 b Fs(cvband)h Fw(solv)-31 b(er)343
+b(is)h(not)g(compatible)i(with)e(the)g(curren)-31 b(t)343
+b Fs(nvec-)21614 19245 y(tor)368 b Fw(mo)31 b(dule.)5156
+20573 y Fu(CVBAND)p 8712 20573 V 419 w(MEM)p 10874 20573
+V 419 w(FAIL)5816 b Fw(-4)1329 b(A)369 b(memory)h(allo)31
+b(cation)373 b(request)368 b(failed.)4000 23211 y Fs(cvdia)-25
+b(g)424 b Fx(linear)h(solv)-35 b(er)424 b(mo)35 b(dule)5156
+25052 y Fu(CVDIAG)p 8712 25052 V 419 w(SUCCESS)6604 b
+Fw(0)1329 b(Successful)368 b(function)j(return.)5156
+26380 y Fu(CVDIAG)p 8712 26380 V 419 w(MEM)p 10874 26380
+V 419 w(NULL)5816 b Fw(-1)1329 b(The)369 b Fu(cvode)p
+26864 26380 V 419 w(mem)h Fw(argumen)-31 b(t)370 b(w)-31
+b(as)370 b Fu(NULL)p Fw(.)5156 27708 y Fu(CVDIAG)p 8712
+27708 V 419 w(LMEM)p 11455 27708 V 419 w(NULL)5235 b
+Fw(-2)1329 b(The)369 b Fs(cvdia)-25 b(g)369 b Fw(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)5156
+29037 y Fu(CVDIAG)p 8712 29037 V 419 w(ILL)p 10874 29037
+V 419 w(INPUT)5235 b Fw(-3)1329 b(The)377 b Fs(cvdia)-25
+b(g)376 b Fw(solv)-31 b(er)377 b(is)g(not)h(compatible)h(with)f(the)f
+(curren)-31 b(t)377 b Fs(nvec-)21614 30365 y(tor)368
+b Fw(mo)31 b(dule.)5156 31693 y Fu(CVDIAG)p 8712 31693
+V 419 w(MEM)p 10874 31693 V 419 w(FAIL)5816 b Fw(-4)1329
+b(A)369 b(memory)h(allo)31 b(cation)373 b(request)368
+b(failed.)4000 34331 y Fs(cvspgmr)424 b Fx(linear)g(solv)-35
+b(er)425 b(mo)35 b(dule)5156 36172 y Fu(CVSPGMR)p 9293
+36172 V 420 w(SUCCESS)6022 b Fw(0)1329 b(Successful)368
+b(function)j(return.)5156 37500 y Fu(CVSPGMR)p 9293 37500
+V 420 w(MEM)p 11456 37500 V 418 w(NULL)5235 b Fw(-1)1329
+b(The)369 b Fu(cvode)p 26864 37500 V 419 w(mem)h Fw(argumen)-31
+b(t)370 b(w)-31 b(as)370 b Fu(NULL)p Fw(.)5156 38828
+y Fu(CVSPGMR)p 9293 38828 V 420 w(LMEM)p 12037 38828
+V 419 w(NULL)4653 b Fw(-2)1329 b(The)369 b Fs(cvspgmr)f
+Fw(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31 b(een)369
+b(initialized.)5156 40157 y Fu(CVSPGMR)p 9293 40157 V
+420 w(ILL)p 11456 40157 V 418 w(INPUT)4654 b Fw(-3)1329
+b(The)272 b Fs(cvspgmr)g Fw(solv)-31 b(er)273 b(is)g(not)g(compatible)j
+(with)d(the)g(curren)-31 b(t)273 b Fs(nvec-)21614 41485
+y(tor)368 b Fw(mo)31 b(dule.)5156 42813 y Fu(CVSPGMR)p
+9293 42813 V 420 w(MEM)p 11456 42813 V 418 w(FAIL)5235
+b Fw(-4)1329 b(A)369 b(memory)h(allo)31 b(cation)373
+b(request)368 b(failed.)4000 45451 y Fs(spgmr)423 b Fx(generic)j
+(linear)e(solv)-35 b(er)425 b(mo)35 b(dule)5156 47507
+y Fu(SPGMR)p 8131 47507 V 419 w(SUCCESS)7185 b Fw(0)1329
+b(Con)-31 b(v)g(erged.)5156 48835 y Fu(SPGMR)p 8131 48835
+V 419 w(RES)p 10293 48835 V 419 w(REDUCED)5023 b Fw(1)1329
+b(No)369 b(con)-31 b(v)g(ergence,)371 b(but)e(the)h(residual)f(norm)h
+(w)-31 b(as)370 b(reduced.)5156 50163 y Fu(SPGMR)p 8131
+50163 V 419 w(CONV)p 10874 50163 V 419 w(FAIL)6185 b
+Fw(2)1329 b(F)-92 b(ailure)369 b(to)h(con)-31 b(v)g(erge.)5156
+51492 y Fu(SPGMR)p 8131 51492 V 419 w(QRFACT)p 12036
+51492 V 420 w(FAIL)5022 b Fw(3)1329 b(A)369 b(singular)h(matrix)h(w)-31
+b(as)369 b(found)h(during)g(the)f(QR)g(factorization.)5156
+52820 y Fu(SPGMR)p 8131 52820 V 419 w(PSOLVE)p 12036
+52820 V 420 w(FAIL)p 14780 52820 V 419 w(REC)2860 b Fw(4)1329
+b(The)369 b(preconditioner)h(solv)-31 b(e)370 b(function)h(failed)g
+(reco)-31 b(v)g(erably)-92 b(.)5156 54148 y Fu(SPGMR)p
+8131 54148 V 419 w(MEM)p 10293 54148 V 419 w(NULL)6397
+b Fw(-1)1329 b(The)369 b Fs(spgmr)f Fw(memory)i(is)f
+Fu(NULL)5156 55477 y(SPGMR)p 8131 55477 V 419 w(ATIMES)p
+12036 55477 V 420 w(FAIL)4653 b Fw(-2)1329 b(The)369
+b(Jacobian)i(tims)f(v)-31 b(ector)370 b(function)g(failed.)5156
+56805 y Fu(SPGMR)p 8131 56805 V 419 w(PSOLVE)p 12036
+56805 V 420 w(FAIL)p 14780 56805 V 419 w(UNREC)1329 b
+Fw(-3)g(The)369 b(preconditioner)h(solv)-31 b(e)370 b(function)h
+(failed)g(unreco)-31 b(v)g(erably)-92 b(.)5156 58134
+y Fu(SPGMR)p 8131 58134 V 419 w(GS)p 9712 58134 V 419
+w(FAIL)6978 b Fw(-4)1329 b(F)-92 b(ailure)369 b(in)g(the)h(Gram-Sc)-31
+b(hmidt)371 b(pro)31 b(cedure.)5156 59462 y Fu(SPGMR)p
+8131 59462 V 419 w(QRSOL)p 11455 59462 V 419 w(FAIL)5235
+b Fw(-5)1329 b(The)411 b(matrix)i Fl(R)419 b Fw(w)-31
+b(as)413 b(found)e(to)i(b)31 b(e)411 b(singular)h(during)g(the)f(QR)g
+(solv)-31 b(e)21614 60790 y(phase.)p Black Black eop
+%%Page: 148 158
+148 157 bop Black Black Black Black eop
+%%Page: 149 159
+149 158 bop Black Black 4000 15830 a Fv(Bibliograph)-86
+b(y)p Black 4553 21734 a Fw([1])p Black 555 w(P)-92 b(.)391
+b(N.)f(Bro)-31 b(wn,)396 b(G.)390 b(D.)g(Byrne,)395 b(and)c(A.)f(C.)h
+(Hindmarsh.)554 b(V)-31 b(ODE,)390 b(a)g(V)-92 b(ariable-Co)31
+b(e\261cien)-31 b(t)394 b(ODE)c(Solv)-31 b(er.)6275 23062
+y Fq(SIAM)396 b(J.)h(Sci.)g(Stat.)f(Comput.)p Fw(,)370
+b(10:1038{1051,)375 b(1989.)p Black 4553 25269 a([2])p
+Black 555 w(P)-92 b(.)409 b(N.)g(Bro)-31 b(wn)409 b(and)g(A.)g(C.)g
+(Hindmarsh.)609 b(Reduced)408 b(Storage)h(Matrix)g(Metho)31
+b(ds)409 b(in)f(Sti\256)h(ODE)f(Systems.)6275 26597 y
+Fq(J.)397 b(Appl.)f(Math.)f(&)h(Comp.)p Fw(,)370 b(31:49{91,)j(1989.)p
+Black 4553 28804 a([3])p Black 555 w(G.)390 b(D.)g(Byrne.)553
+b(Pragmatic)392 b(Exp)31 b(erimen)-31 b(ts)391 b(with)g(Krylo)-31
+b(v)391 b(Metho)31 b(ds)389 b(in)h(the)g(Sti\256)h(ODE)e(Setting.)555
+b(In)389 b(J.R.)6275 30132 y(Cash)382 b(and)g(I.)f(Gladw)-31
+b(ell,)387 b(editors,)f Fq(Computational)407 b(Or)-57
+b(dinary)407 b(Di\256er)-57 b(ential)409 b(Equations)p
+Fw(,)384 b(pages)e(323{356,)6275 31461 y(Oxford,)370
+b(1992.)i(Oxford)d(Univ)-31 b(ersit)g(y)371 b(Press.)p
+Black 4553 33667 a([4])p Black 555 w(G.)418 b(D.)g(Byrne)g(and)h(A.)f
+(C.)h(Hindmarsh.)638 b(A)418 b(P)-31 b(oly)g(algorithm)423
+b(for)418 b(the)g(Numerical)i(Solution)g(of)f(Ordinary)6275
+34996 y(Di\256eren)-31 b(tial)371 b(Equations.)493 b
+Fq(A)-28 b(CM)396 b(T)-85 b(r)-57 b(ans.)396 b(Math.)g(Softw.)p
+Fw(,)369 b(1:71{96,)k(1975.)p Black 4553 37203 a([5])p
+Black 555 w(G.)384 b(D.)f(Byrne)g(and)h(A.)g(C.)g(Hindmarsh.)534
+b(PV)-31 b(ODE,)385 b(An)e(ODE)g(Solv)-31 b(er)384 b(for)g(P)-31
+b(arallel)385 b(Computers.)535 b Fq(Intl.)409 b(J.)6275
+38531 y(High)397 b(Perf.)g(Comput.)f(Apps.)p Fw(,)369
+b(13\(4\):254{365,)375 b(1999.)p Black 4553 40738 a([6])p
+Black 555 w(Y.)512 b(Cao,)548 b(S.)511 b(Li,)548 b(L.)511
+b(R.)g(P)-31 b(etzold,)549 b(and)511 b(R.)g(Serban.)914
+b(Adjoin)-31 b(t)513 b(Sensitivit)-31 b(y)513 b(Analysis)f(for)f
+(Di\256eren)-31 b(tial-)6275 42066 y(Algebraic)506 b(Equations:)764
+b(The)505 b(Adjoin)-31 b(t)506 b(D)-31 b(AE)504 b(System)h(and)f(its)h
+(Numerical)g(Solution.)896 b Fq(SIAM)520 b(J.)h(Sci.)6275
+43394 y(Comput.)p Fw(,)370 b(24\(3\):1076{1089,)377 b(2003.)p
+Black 4553 45601 a([7])p Black 555 w(M.)387 b(Caracotsios)i(and)e(W.)g
+(E.)g(Stew)-31 b(art.)546 b(Sensitivit)-31 b(y)389 b(Analysis)f(of)f
+(Initial)i(V)-92 b(alue)387 b(Problems)h(with)g(Mixed)6275
+46929 y(ODEs)369 b(and)g(Algebraic)i(Equations.)493 b
+Fq(Computers)396 b(and)g(Chemic)-57 b(al)397 b(Engine)-57
+b(ering)p Fw(,)372 b(9:359{365,)i(1985.)p Black 4553
+49136 a([8])p Black 555 w(S.)333 b(D.)f(Cohen)i(and)e(A.)h(C.)h
+(Hindmarsh.)432 b(CV)-31 b(ODE)333 b(User)e(Guide.)432
+b(T)-92 b(ec)-31 b(hnical)334 b(Rep)31 b(ort)332 b(UCRL-MA-118618,)6275
+50465 y(LLNL,)370 b(Septem)-31 b(b)31 b(er)369 b(1994.)p
+Black 4553 52671 a([9])p Black 555 w(S.)380 b(D.)f(Cohen)g(and)h(A.)f
+(C.)h(Hindmarsh.)521 b(CV)-31 b(ODE)q(,)382 b(a)d(Sti\256/Nonsti\256)i
+(ODE)e(Solv)-31 b(er)380 b(in)f(C.)521 b Fq(Computers)404
+b(in)6275 54000 y(Physics)p Fw(,)370 b(10\(2\):138{143,)376
+b(1996.)p Black 4000 56206 a([10])p Black 555 w(W.)465
+b(F.)f(F)-92 b(eehery)g(,)487 b(J.)464 b(E.)h(T)-92 b(olsma,)491
+b(and)464 b(P)-92 b(.)465 b(I.)f(Barton.)776 b(E\261cien)-31
+b(t)466 b(Sensitivit)-31 b(y)467 b(Analysis)e(of)g(Large-Scale)6275
+57535 y(Di\256eren)-31 b(tial-Algebraic)373 b(Systems.)491
+b Fq(Applie)-57 b(d)396 b(Numer.)h(Math.)p Fw(,)369 b(25\(1\):41{54,)
+375 b(1997.)p Black 4000 59741 a([11])p Black 555 w(K.)431
+b(L.)f(Hieb)31 b(ert)431 b(and)g(L.)f(F.)g(Shampine.)675
+b(Implicitly)433 b(De\257ned)d(Output)h(P)-31 b(oin)g(ts)432
+b(for)e(Solutions)i(of)f(ODEs.)6275 61070 y(T)-92 b(ec)-31
+b(hnical)371 b(Rep)31 b(ort)369 b(SAND80-0180,)k(Sandia)d(National)i
+(Lab)31 b(oratories,)371 b(F)-92 b(ebruary)368 b(1980.)p
+Black 4000 63277 a([12])p Black 555 w(A.)391 b(C.)f(Hindmarsh.)554
+b(Detecting)391 b(Stabilit)-31 b(y)393 b(Barriers)c(in)h(BDF)f(Solv)-31
+b(ers.)553 b(In)390 b(J.R.)g(Cash)g(and)g(I.)g(Gladw)-31
+b(ell,)6275 64605 y(editor,)315 b Fq(Computational)331
+b(Or)-57 b(dinary)332 b(Di\256er)-57 b(ential)333 b(Equations)p
+Fw(,)314 b(pages)299 b(87{96,)316 b(Oxford,)e(1992.)302
+b(Oxford)d(Uni-)6275 65933 y(v)-31 b(ersit)g(y)371 b(Press.)p
+Black 4000 68140 a([13])p Black 555 w(A.)616 b(C.)g(Hindmarsh.)1225
+b(Av)-31 b(oiding)617 b(BDF)d(Stabilit)-31 b(y)618 b(Barriers)c(in)i
+(the)f(MOL)f(Solution)j(of)f(Adv)-31 b(ection-)6275 69468
+y(Dominated)371 b(Problems.)493 b Fq(Appl.)395 b(Num.)i(Math.)p
+Fw(,)369 b(17:311{318,)374 b(1995.)p Black 4000 71675
+a([14])p Black 555 w(A.)499 b(C.)f(Hindmarsh.)876 b(The)498
+b(PV)-31 b(ODE)498 b(and)g(ID)-31 b(A)498 b(Algorithms.)877
+b(T)-92 b(ec)-31 b(hnical)499 b(Rep)31 b(ort)498 b(UCRL-ID-141558,)6275
+73003 y(LLNL,)370 b(Decem)-31 b(b)31 b(er)368 b(2000.)p
+Black 4000 75210 a([15])p Black 555 w(A.)375 b(C.)f(Hindmarsh,)i(P)-92
+b(.)375 b(N.)f(Bro)-31 b(wn,)376 b(K.)e(E.)g(Gran)-31
+b(t,)376 b(S.)e(L.)g(Lee,)h(R.)f(Serban,)h(D.)f(E.)h(Sh)-31
+b(umak)g(er,)376 b(and)e(C.)h(S.)6275 76539 y(W)-92 b(o)31
+b(o)g(dw)-31 b(ard.)708 b(SUNDIALS,)460 b(suite)442 b(of)g(nonlinear)h
+(and)f(di\256eren)-31 b(tial/algebraic)446 b(equation)d(solv)-31
+b(ers.)708 b Fq(A)-28 b(CM)6275 77867 y(T)-85 b(r)-57
+b(ans.)397 b(Math.)e(Softw.)p Fw(,)370 b(\(submitted\),)i(2004.)p
+Black Black eop
+%%Page: 150 160
+150 159 bop Black 0 2701 a Fx(150)35847 b(BIBLIOGRAPHY)p
+0 3144 48001 45 v Black Black 0 6974 a Fw([16])p Black
+555 w(A.)475 b(C.)g(Hindmarsh)g(and)f(R.)h(Serban.)804
+b(Example)476 b(Programs)f(for)f(CV)-31 b(ODE)475 b(v2.2.0.)807
+b(T)-92 b(ec)-31 b(hnical)476 b(rep)31 b(ort,)2275 8302
+y(LLNL,)370 b(2004.)493 b(UCRL-SM-208110.)p Black 0 10516
+a([17])p Black 555 w(A.)432 b(C.)g(Hindmarsh)f(and)h(R.)f(Serban.)675
+b(Example)433 b(Programs)f(for)f(CV)-31 b(ODES)432 b(v2.1.0.)678
+b(T)-92 b(ec)-31 b(hnical)433 b(Rep)31 b(ort)2275 11844
+y(UCRL-SM-208115,)373 b(LLNL,)c(2004.)p Black 0 14058
+a([18])p Black 555 w(A.)424 b(C.)f(Hindmarsh)g(and)g(R.)g(Serban.)650
+b(User)422 b(Do)31 b(cumen)-31 b(tation)425 b(for)e(CV)-31
+b(ODE)423 b(v2.2.0.)653 b(T)-92 b(ec)-31 b(hnical)424
+b(Rep)31 b(ort)2275 15387 y(UCRL-SM-208108,)373 b(LLNL,)c(2004.)p
+Black 0 17601 a([19])p Black 555 w(A.)397 b(C.)g(Hindmarsh)g(and)f(A.)h
+(G.)f(T)-92 b(a)-31 b(ylor.)969 b(PV)-31 b(ODE)397 b(and)f(KINSOL:)h(P)
+-31 b(arallel)398 b(Soft)-31 b(w)g(are)398 b(for)e(Di\256eren)-31
+b(tial)2275 18929 y(and)370 b(Nonlinear)h(Systems.)491
+b(T)-92 b(ec)-31 b(hnical)371 b(Rep)31 b(ort)369 b(UCRL-ID-129739,)j
+(LLNL,)d(F)-92 b(ebruary)368 b(1998.)p Black 0 21143
+a([20])p Black 555 w(K.)373 b(R.)f(Jac)-31 b(kson)372
+b(and)h(R.)f(Sac)-31 b(ks-Da)g(vis.)501 b(An)372 b(Alternativ)-31
+b(e)374 b(Implemen)-31 b(tation)375 b(of)e(V)-92 b(ariable)373
+b(Step-Size)g(Mul-)2275 22471 y(tistep)d(F)-92 b(orm)-31
+b(ulas)370 b(for)f(Sti\256)h(ODEs.)491 b Fq(A)-28 b(CM)395
+b(T)-85 b(r)-57 b(ans.)397 b(Math.)e(Softw.)p Fw(,)370
+b(6:295{318,)k(1980.)p Black 0 24685 a([21])p Black 555
+w(S.)407 b(Li,)417 b(L.)407 b(R.)f(P)-31 b(etzold,)419
+b(and)407 b(W.)f(Zh)-31 b(u.)604 b(Sensitivit)-31 b(y)409
+b(Analysis)f(of)f(Di\256eren)-31 b(tial-Algebraic)409
+b(Equations:)570 b(A)2275 26014 y(Comparison)371 b(of)f(Metho)31
+b(ds)369 b(on)h(a)f(Sp)31 b(ecial)370 b(Problem.)493
+b Fq(Applie)-57 b(d)396 b(Num.)h(Math.)p Fw(,)368 b(32:161{174,)375
+b(2000.)p Black 0 28227 a([22])p Black 555 w(T.)568 b(Maly)g(and)g(L.)f
+(R.)g(P)-31 b(etzold.)1084 b(Numerical)568 b(Metho)31
+b(ds)567 b(and)h(Soft)-31 b(w)g(are)569 b(for)e(Sensitivit)-31
+b(y)570 b(Analysis)e(of)2275 29556 y(Di\256eren)-31 b(tial-Algebraic)
+373 b(Systems.)491 b Fq(Applie)-57 b(d)396 b(Numeric)-57
+b(al)397 b(Mathematics)p Fw(,)369 b(20:57{79,)k(1997.)p
+Black 0 31770 a([23])p Black 555 w(K.)315 b(Radhakrishnan)g(and)g(A.)g
+(C.)g(Hindmarsh.)402 b(Description)315 b(and)f(Use)g(of)h(LSODE,)g(the)
+f(Liv)-31 b(ermore)315 b(Solv)-31 b(er)2275 33098 y(for)370
+b(Ordinary)f(Di\256eren)-31 b(tial)370 b(Equations.)494
+b(T)-92 b(ec)-31 b(hnical)371 b(Rep)31 b(ort)369 b(UCRL-ID-113855,)j
+(LLNL,)d(marc)-31 b(h)370 b(1994.)p Black Black eop
+%%Page: 151 161
+151 160 bop Black Black Black 4000 13314 a Fv(Index)p
+Black 4000 18849 a Fw(Adams)370 b(metho)31 b(d,)370 b(11)4000
+20191 y Fu(ADAMS)p 6975 20191 349 45 v 419 w(Q)p 7975
+20191 V 419 w(MAX)581 b(=)h(12)p Fw(,)369 b(38)4000 21533
+y(adjoin)-31 b(t)371 b(sensitivit)-31 b(y)372 b(analysis)6214
+22875 y(c)-31 b(hec)g(kp)31 b(oin)-31 b(ting,)372 b(19)6214
+24217 y(implemen)-31 b(tation)373 b(in)d Fs(cv)-25 b(odes)p
+Fw(,)370 b(19,)g(25)6214 25559 y(mathematical)j(bac)-31
+b(kground,)371 b(17{19)6214 26901 y(quadrature)f(ev)-61
+b(aluation,)372 b(115)6214 28243 y(righ)-31 b(t-hand)371
+b(side)e(ev)-61 b(aluation,)372 b(114)4000 30919 y Fs(band)d
+Fw(generic)h(linear)g(solv)-31 b(er)6214 32261 y(functions,)371
+b(142)6214 33603 y(macros,)f(140{142)6214 34945 y(t)-31
+b(yp)31 b(e)370 b Fu(BandMat)p Fw(,)g(140)4000 36287
+y Fu(BAND)p 6394 36287 V 419 w(COL)p Fw(,)g(63,)g Fx(142)4000
+37629 y Fu(BAND)p 6394 37629 V 419 w(COL)p 8556 37629
+V 419 w(ELEM)p Fw(,)g(63,)g Fx(142)4000 38971 y Fu(BAND)p
+6394 38971 V 419 w(ELEM)p Fw(,)g(63,)h Fx(140)4000 40313
+y Fu(BandMat)p Fw(,)g(28,)f(62,)g(116,)h Fx(140)4000
+41655 y Fw(BDF)d(metho)31 b(d,)371 b(11)4000 42997 y
+Fu(BDF)p 5813 42997 V 419 w(Q)p 6813 42997 V 418 w(MAX)582
+b(=)f(5)p Fw(,)370 b(38)4000 44339 y Fu(BIG)p 5813 44339
+V 419 w(REAL)p Fw(,)g(28,)g(127)4000 47015 y Fu(CLASSICAL)p
+9299 47015 V 420 w(GS)p Fw(,)g Fx(45)p Fw(,)g Fx(111)4000
+48357 y Fu(CV)p 5232 48357 V 419 w(ADAMS)p Fw(,)g Fx(31)p
+Fw(,)g(59,)h(105)4000 49699 y Fu(CV)p 5232 49699 V 419
+w(ADJMEM)p 9137 49699 V 419 w(NULL)p Fw(,)f(105{113,)j(119{121)4000
+51041 y Fu(CV)p 5232 51041 V 419 w(BAD)p 7394 51041 V
+419 w(DKY)p Fw(,)d(46,)g(68,)g(88,)h(89)4000 52383 y
+Fu(Cv)p 5232 52383 V 419 w(BAD)p 7394 52383 V 419 w(DKY)p
+Fw(,)f(113)4000 53725 y Fu(CV)p 5232 53725 V 419 w(BAD)p
+7394 53725 V 419 w(IS)p Fw(,)f(89)4000 55067 y Fu(CV)p
+5232 55067 V 419 w(BAD)p 7394 55067 V 419 w(ITASK)p Fw(,)h(108)4000
+56409 y Fu(CV)p 5232 56409 V 419 w(BAD)p 7394 56409 V
+419 w(K)p Fw(,)f(46,)i(69,)f(88,)h(89)4000 57751 y Fu(CV)p
+5232 57751 V 419 w(BAD)p 7394 57751 V 419 w(T)p Fw(,)e(46,)i(69,)f(88,)
+h(89)4000 59093 y Fu(CV)p 5232 59093 V 419 w(BAD)p 7394
+59093 V 419 w(TB0)p Fw(,)f(106,)g(107)4000 60435 y Fu(CV)p
+5232 60435 V 419 w(BAD)p 7394 60435 V 419 w(TBOUT)p Fw(,)g(108)4000
+61777 y Fu(CV)p 5232 61777 V 419 w(BCKMEM)p 9137 61777
+V 419 w(NULL)p Fw(,)g(108)4000 63119 y Fu(CV)p 5232 63119
+V 419 w(BDF)p Fw(,)g Fx(31)p Fw(,)g(59,)h(105)4000 64461
+y Fu(CV)p 5232 64461 V 419 w(CONV)p 7975 64461 V 419
+w(FAILURE)p Fw(,)f(36,)h(105,)g(108)4000 65803 y Fu(CV)p
+5232 65803 V 419 w(EE)p Fw(,)e Fx(92)4000 67145 y Fu(CV)p
+5232 67145 V 419 w(ERR)p 7394 67145 V 419 w(FAILURE)p
+Fw(,)h(36,)h(105,)f(108)4000 68487 y Fu(CV)p 5232 68487
+V 419 w(FUNCTIONAL)p Fw(,)h Fx(31)p Fw(,)f(41,)h(106)4000
+69829 y Fu(CV)p 5232 69829 V 419 w(FWD)p 7394 69829 V
+419 w(FAIL)p Fw(,)f(109)4000 71171 y Fu(CV)p 5232 71171
+V 419 w(ILL)p 7394 71171 V 419 w(INPUT)p Fw(,)428 b(32,)442
+b(35,)h(38{42,)h(60,)e(69,)h(86,)f(87,)h(91,)8428 72499
+y(92,)370 b(106{108)4000 73841 y Fu(CV)p 5232 73841 V
+419 w(ILL)p 7394 73841 V 419 w(IPUT)p Fw(,)g(105)4000
+75183 y Fu(CV)p 5232 75183 V 419 w(LINIT)p 8556 75183
+V 419 w(FAIL)p Fw(,)g(35)4000 76525 y Fu(CV)p 5232 76525
+V 419 w(LSETUP)p 9137 76525 V 419 w(FAIL)p Fw(,)g(36,)h(105,)f(108)4000
+77867 y Fu(CV)p 5232 77867 V 419 w(LSOLVE)p 9137 77867
+V 419 w(FAIL)p Fw(,)g(36,)h(105)p Black Black 28553 18849
+a Fu(CV)p 29785 18849 V 419 w(MEM)p 31947 18849 V 419
+w(FAIL)p Fw(,)f(32,)h(67,)f(86,)g(87,)h(105,)g(106,)g(112)28553
+20191 y Fu(CV)p 29785 20191 V 419 w(MEM)p 31947 20191
+V 419 w(NULL)p Fw(,)519 b(32,)557 b(35,)g(36,)f(38{42,)j(46,)d(48{53,)j
+(60,)32981 21520 y(67{72,)372 b(86{97,)g(106,)f(107,)g(112,)g(113)28553
+22862 y Fu(CV)p 29785 22862 V 419 w(NEWTON)p Fw(,)g Fx(31)p
+Fw(,)f(41,)g(106)28553 24204 y Fu(CV)p 29785 24204 V
+419 w(NO)p 31366 24204 V 419 w(MALLOC)p Fw(,)g(35,)h(60,)f(104,)h(107,)
+g(108)28553 25546 y Fu(CV)p 29785 25546 V 419 w(NO)p
+31366 25546 V 419 w(QUAD)p Fw(,)f(68,)g(70,)h(71,)f(113)28553
+26889 y Fu(CV)p 29785 26889 V 419 w(NO)p 31366 26889
+V 419 w(SENS)p Fw(,)g(87{89,)i(93{97)28553 28231 y Fu(CV)p
+29785 28231 V 419 w(NO)p 31366 28231 V 419 w(SENSI)p
+Fw(,)e(87)28553 29573 y Fu(CV)p 29785 29573 V 419 w(NO)p
+31366 29573 V 419 w(SLDET)p Fw(,)g(51)28553 30916 y Fu(CV)p
+29785 30916 V 419 w(NORMAL)p Fw(,)h(35,)f(102,)h(104,)g(108)28553
+32258 y Fu(CV)p 29785 32258 V 419 w(NORMAL)p 33690 32258
+V 420 w(TSTOP)p Fw(,)f(35,)g(104)28553 33600 y Fu(CV)p
+29785 33600 V 419 w(ONE)p 31947 33600 V 419 w(STEP)p
+Fw(,)g(35,)h(102,)g(104,)f(108)28553 34942 y Fu(CV)p
+29785 34942 V 419 w(ONE)p 31947 34942 V 419 w(STEP)p
+34690 34942 V 419 w(TSTOP)p Fw(,)g(35,)h(104)28553 36285
+y Fu(CV)p 29785 36285 V 419 w(PDATA)p 33109 36285 V 419
+w(NULL)p Fw(,)f(75,)h(79{81,)h(119{121)28553 37627 y
+Fu(CV)p 29785 37627 V 419 w(REIFWD)p 33690 37627 V 420
+w(FAIL)p Fw(,)e(108)28553 38969 y Fu(CV)p 29785 38969
+V 419 w(ROOT)p 32528 38969 V 419 w(RETURN)p Fw(,)h(35)28553
+40311 y Fu(CV)p 29785 40311 V 419 w(SIMULTANEOUS)p Fw(,)g(23,)g
+Fx(86)p Fw(,)f(97)28553 41654 y Fu(CV)p 29785 41654 V
+419 w(SOLVE)p 33109 41654 V 419 w(FAIL)p Fw(,)g(108)28553
+42996 y Fu(CV)p 29785 42996 V 419 w(SS)p Fw(,)g Fx(32)p
+Fw(,)g Fx(42)p Fw(,)h(60,)f(69,)h(92,)f(106,)h(107)28553
+44338 y Fu(CV)p 29785 44338 V 419 w(STAGGERED)p Fw(,)g(23,)f
+Fx(86)p Fw(,)h(97)28553 45680 y Fu(CV)p 29785 45680 V
+419 w(STAGGERED1)p Fw(,)g(23,)g Fx(86)p Fw(,)f(98)28553
+47023 y Fu(CV)p 29785 47023 V 419 w(SUCCESS)p Fw(,)319
+b(32,)328 b(35,)h(36,)g(38{42,)h(46,)f(48{53,)h(60,)f(67{)32981
+48351 y(72,)312 b(75,)f(80,)g(81,)g(86{97,)i(104,)e(106{108,)j(112,)
+32981 49679 y(113,)371 b(119{121)28553 51022 y Fu(CV)p
+29785 51022 V 419 w(SV)p Fw(,)f Fx(32)p Fw(,)g Fx(42)p
+Fw(,)h(60,)f(69,)h(92,)f(106,)h(107)28553 52364 y Fu(CV)p
+29785 52364 V 419 w(TOO)p 31947 52364 V 419 w(MUCH)p
+34690 52364 V 419 w(ACC)p Fw(,)f(35,)g(105,)h(108)28553
+53706 y Fu(CV)p 29785 53706 V 419 w(TOO)p 31947 53706
+V 419 w(MUCH)p 34690 53706 V 419 w(WORK)p Fw(,)f(35,)h(105,)g(108)28553
+55048 y Fu(CV)p 29785 55048 V 419 w(TSTOP)p 33109 55048
+V 419 w(RETURN)p Fw(,)g(35,)f(104)28553 56391 y Fu(CV)p
+29785 56391 V 419 w(WF)p Fw(,)g Fx(32)p Fw(,)g(60)28553
+57733 y Fu(CVadjFree)p Fw(,)h Fx(104)28553 59075 y Fu
+(CVadjGetCheckPointsList)p Fw(,)i Fx(114)28553 60417
+y Fu(CvadjGetCVodeBmem)p Fw(,)f Fx(112)28553 61760 y
+Fu(CVadjMalloc)p Fw(,)g(102,)f Fx(103)28553 63102 y Fs(cvband)f
+Fw(linear)g(solv)-31 b(er)30767 64444 y(Jacobian)371
+b(appro)-31 b(ximation)373 b(used)c(b)-31 b(y)-92 b(,)369
+b(43)30767 65787 y Fs(nvector)h Fw(compatibilit)-31 b(y)-92
+b(,)374 b(33)30767 67129 y(optional)e(input,)f(43)30767
+68471 y(optional)h(output,)f(54{55)30767 69813 y(selection)g(of,)f(33)
+28553 71156 y Fs(cvband)g Fw(linear)g(solv)-31 b(er)30767
+72498 y(memory)371 b(requiremen)-31 b(ts,)370 b(55)28553
+73840 y Fu(CVBand)p Fw(,)h(30,)f(33,)h Fx(33)p Fw(,)f(62)28553
+75182 y Fu(cvband.h)p Fw(,)h(28)28553 76525 y Fu(CVBAND)p
+32109 76525 V 420 w(ILL)p 34272 76525 V 419 w(INPUT)p
+Fw(,)f(33)28553 77867 y Fu(CVBAND)p 32109 77867 V 420
+w(LMEM)p 34853 77867 V 419 w(NULL)p Fw(,)g(43,)g(54,)h(55,)f(110)p
+Black Black eop
+%%Page: 152 162
+152 161 bop Black 0 2701 a Fx(152)41838 b(INDEX)p 0 3144
+48001 45 v Black 0 6974 a Fu(CVBAND)p 3556 6974 349 45
+v 419 w(MEM)p 5718 6974 V 419 w(FAIL)p Fw(,)370 b(33)0
+8311 y Fu(CVBAND)p 3556 8311 V 419 w(MEM)p 5718 8311
+V 419 w(NULL)p Fw(,)g(33,)h(43,)f(54,)h(55,)f(110)0 9649
+y Fu(CVBAND)p 3556 9649 V 419 w(SUCCESS)p Fw(,)h(33,)f(43,)h(54,)f(55,)
+h(110)0 10987 y Fu(CVBandB)p Fw(,)g(116)0 12324 y Fu(CVBandDQJac)p
+Fw(,)g(43)0 13662 y Fu(CVBandGetLastFlag)p Fw(,)h Fx(55)0
+14999 y Fu(CVBandGetNumJacEvals)p Fw(,)g Fx(55)0 16337
+y Fu(CVBandGetNumRhsEvals)p Fw(,)g Fx(55)0 17675 y Fu
+(CVBandGetWorkSpace)p Fw(,)g Fx(54)0 19012 y Fu(CVBandJacFn)p
+Fw(,)f Fx(62)0 20350 y Fs(cvbandpre)f Fw(preconditioner)2214
+21688 y(description,)g(73)2214 23025 y(optional)i(output,)f(75)2214
+24363 y(usage,)f(73{74)2214 25700 y(usage)f(with)i(adjoin)-31
+b(t)371 b(mo)31 b(dule,)371 b(119{120)2214 27038 y(user-callable)f
+(functions,)h(74{75)0 28376 y Fu(CVBandPrecAlloc)p Fw(,)h
+Fx(74)0 29713 y Fu(CVBandPrecAllocB)p Fw(,)g Fx(119)0
+31051 y Fu(CVBandPrecFree)p Fw(,)g Fx(75)0 32388 y Fu
+(CVBandPrecGetNumRhsEvals)p Fw(,)h Fx(75)0 33726 y Fu
+(CVBandPrecGetWorkSpace)p Fw(,)g Fx(75)0 35064 y Fu(CVBandSetJacFn)p
+Fw(,)f Fx(43)0 36401 y Fu(CVBandSetJacFnB)p Fw(,)g Fx(109)0
+37739 y Fs(cvbbdpre)e Fw(preconditioner)2214 39076 y(description,)g(76)
+2214 40414 y(optional)i(output,)f(80{81)2214 41752 y(usage,)f(77{78)
+2214 43089 y(usage)f(with)i(adjoin)-31 b(t)371 b(mo)31
+b(dule,)371 b(120{122)2214 44427 y(user-callable)f(functions,)h(78{80)
+2214 45764 y(user-supplied)e(functions,)h(76{77)0 47102
+y Fu(CVBBDPrecAlloc)p Fw(,)i Fx(78)0 48440 y Fu(CVBBDPrecAllocB)p
+Fw(,)g Fx(120)0 49777 y Fu(CVBBDPrecFree)p Fw(,)f Fx(79)0
+51115 y Fu(CVBBDPrecGetNumGfnEvals)p Fw(,)i Fx(80)0 52452
+y Fu(CVBBDPrecGetWorkSpace)p Fw(,)g Fx(80)0 53790 y Fu(CVBBDPrecReInit)
+p Fw(,)f Fx(80)0 55128 y Fu(CVBBDPrecReInitB)p Fw(,)g
+Fx(121)0 56465 y Fu(CVBBDSpgmr)p Fw(,)f Fx(79)0 57803
+y Fu(CVBBDSpgmrB)p Fw(,)g Fx(120)0 59140 y Fu(CVBPSpgmr)p
+Fw(,)g(74,)f Fx(74)p Fw(,)h(78)0 60478 y Fu(CVBPSpgmrB)p
+Fw(,)g Fx(119)0 61816 y Fs(cvdense)f Fw(linear)g(solv)-31
+b(er)2214 63153 y(Jacobian)371 b(appro)-31 b(ximation)372
+b(used)d(b)-31 b(y)-92 b(,)370 b(43)2214 64491 y Fs(nvector)f
+Fw(compatibilit)-31 b(y)-92 b(,)374 b(33)2214 65828 y(optional)e
+(input,)e(43)2214 67166 y(optional)i(output,)f(53{54)2214
+68504 y(selection)f(of,)h(33)0 69841 y Fs(cvdense)f Fw(linear)g(solv)
+-31 b(er)2214 71179 y(memory)370 b(requiremen)-31 b(ts,)370
+b(53)0 72516 y Fu(CVDense)p Fw(,)h(30,)f(33,)g Fx(33)p
+Fw(,)h(61)0 73854 y Fu(cvdense.h)p Fw(,)g(28)0 75192
+y Fu(CVDENSE)p 4137 75192 V 419 w(ILL)p 6299 75192 V
+419 w(INPUT)p Fw(,)g(33)0 76529 y Fu(CVDENSE)p 4137 76529
+V 419 w(LMEM)p 6880 76529 V 419 w(NULL)p Fw(,)g(43,)f(53,)g(54,)h(109)0
+77867 y Fu(CVDENSE)p 4137 77867 V 419 w(MEM)p 6299 77867
+V 419 w(FAIL)p Fw(,)f(33)p Black Black 24553 6974 a Fu(CVDENSE)p
+28690 6974 V 420 w(MEM)p 30853 6974 V 419 w(NULL)p Fw(,)g(33,)g(43,)h
+(53,)f(54,)h(109)24553 8311 y Fu(CVDENSE)p 28690 8311
+V 420 w(SUCCESS)p Fw(,)f(33,)h(43,)f(53,)h(54,)f(109)24553
+9649 y Fu(CVDenseB)p Fw(,)h(115)24553 10987 y Fu(CVDenseDQJac)p
+Fw(,)h(43)24553 12324 y Fu(CVDenseGetLastFlag)p Fw(,)h
+Fx(54)24553 13662 y Fu(CVDenseGetNumJacEvals)p Fw(,)g
+Fx(53)24553 14999 y Fu(CVDenseGetNumRhsEvals)p Fw(,)g
+Fx(54)24553 16337 y Fu(CVDenseGetWorkSpace)p Fw(,)g Fx(53)24553
+17675 y Fu(CVDenseJacFn)p Fw(,)f Fx(61)24553 19012 y
+Fu(CVDenseSetJacFn)p Fw(,)g Fx(43)24553 20350 y Fu(CVDenseSetJacFnB)p
+Fw(,)g Fx(109)24553 21688 y Fs(cvdia)-25 b(g)370 b Fw(linear)f(solv)-31
+b(er)26767 23025 y(Jacobian)371 b(appro)-31 b(ximation)373
+b(used)c(b)-31 b(y)-92 b(,)369 b(34)26767 24363 y(optional)j(output,)f
+(56)26767 25700 y(selection)g(of,)f(34)24553 27038 y
+Fs(cvdia)-25 b(g)370 b Fw(linear)f(solv)-31 b(er)26767
+28376 y(memory)371 b(requiremen)-31 b(ts,)370 b(56)24553
+29713 y Fu(CVDiag)p Fw(,)h(30,)f(33,)h Fx(34)24553 31051
+y Fu(cvdiag.h)p Fw(,)g(28)24553 32388 y Fu(CVDIAG)p 28109
+32388 V 420 w(ILL)p 30272 32388 V 419 w(INPUT)p Fw(,)f(34)24553
+33726 y Fu(CVDIAG)p 28109 33726 V 420 w(LMEM)p 30853
+33726 V 419 w(NULL)p Fw(,)g(56)24553 35064 y Fu(CVDIAG)p
+28109 35064 V 420 w(MEM)p 30272 35064 V 419 w(FAIL)p
+Fw(,)g(34)24553 36401 y Fu(CVDIAG)p 28109 36401 V 420
+w(MEM)p 30272 36401 V 419 w(NULL)p Fw(,)g(34,)g(56)24553
+37739 y Fu(CVDIAG)p 28109 37739 V 420 w(SUCCESS)p Fw(,)g(34,)h(56)24553
+39076 y Fu(CVDiagGetLastFlag)p Fw(,)h Fx(56)24553 40414
+y Fu(CVDiagGetNumRhsEvals)p Fw(,)h Fx(56)24553 41752
+y Fu(CVDiagGetWorkSpace)p Fw(,)g Fx(56)24553 43089 y
+Fu(CVEwtFn)p Fw(,)e Fx(61)24553 44427 y Fs(cv)-25 b(ode)p
+Fw(,)371 b(1)24553 45764 y Fu(CVode)p Fw(,)g(31,)f Fx(35)24553
+47102 y Fu(cvodea.h)p Fw(,)h(101)24553 48440 y Fu(CVodeB)p
+Fw(,)g(103,)g Fx(108)24553 49777 y Fu(CVodeCreate)p Fw(,)h
+Fx(31)24553 51115 y Fu(CVodeCreateB)p Fw(,)g(102,)f Fx(105)24553
+52452 y Fu(CVodeF)p Fw(,)g(102,)g Fx(104)24553 53790
+y Fu(CVodeFree)p Fw(,)g(31,)g Fx(32)24553 55128 y Fu(CVodeGet)p
+Fw(,)g Fx(94)24553 56465 y Fu(CVodeGetActualInitStep)p
+Fw(,)i Fx(50)24553 57803 y Fu(CVodeGetCurrentOrder)p
+Fw(,)g Fx(49)24553 59140 y Fu(CVodeGetCurrentStep)p Fw(,)g
+Fx(50)24553 60478 y Fu(CVodeGetCurrentTime)p Fw(,)g Fx(50)24553
+61816 y Fu(CVodeGetDky)p Fw(,)f Fx(46)24553 63153 y Fu
+(CVodeGetErrWeights)p Fw(,)h Fx(51)24553 64491 y Fu
+(CVodeGetEstLocalErrors)p Fw(,)g Fx(51)24553 65828 y
+Fu(CVodeGetIntegratorStats)p Fw(,)g Fx(52)24553 67166
+y Fu(CVodeGetLastOrder)p Fw(,)f Fx(49)24553 68504 y Fu
+(CVodeGetLastStep)p Fw(,)g Fx(50)24553 69841 y Fu
+(CVodeGetNonlinSolvStats)p Fw(,)h Fx(53)24553 71179 y
+Fu(CVodeGetNumErrTestFails)p Fw(,)g Fx(49)24553 72516
+y Fu(CVodeGetNumGEvals)p Fw(,)f Fx(72)24553 73854 y Fu
+(CVodeGetNumLinSolvSetups)p Fw(,)i Fx(49)24553 75192
+y Fu(CVodeGetNumNonlinSolvConvFails)p Fw(,)g Fx(52)24553
+76529 y Fu(CVodeGetNumNonlinSolvIters)p Fw(,)g Fx(52)24553
+77867 y Fu(CVodeGetNumRhsEvals)p Fw(,)f Fx(48)p Black
+Black eop
+%%Page: 153 163
+153 162 bop Black 4000 2701 a Fx(INDEX)41838 b(153)p
+4000 3144 48001 45 v Black 4000 6974 a Fu(CVodeGetNumRhsEvalsSEns)p
+Fw(,)373 b Fx(93)4000 8311 y Fu(CVodeGetNumSensErrTestFails)p
+Fw(,)g Fx(94)4000 9649 y Fu(CVodeGetNumSensLinSolvSetups)p
+Fw(,)h Fx(94)4000 10987 y Fu(CVodeGetNumSensNonlinSolvConvFails)p
+Fw(,)h Fx(95)4000 12324 y Fu(CVodeGetNumSensNonlinSolvIters)p
+Fw(,)f Fx(95)4000 13662 y Fu(CVodeGetNumSensRhsEvals)p
+Fw(,)f Fx(93)4000 14999 y Fu(CVodeGetNumStabLimOrderReds)p
+Fw(,)g Fx(51)4000 16337 y Fu(CVodeGetNumSteps)p Fw(,)f
+Fx(48)4000 17675 y Fu(CVodeGetNumStgrSensNonlinSolvConvFails)p
+Fw(,)277 b Fx(96)4000 19012 y Fu(CVodeGetNumStgrSensNonlinSolvIters)p
+Fw(,)375 b Fx(96)4000 20350 y Fu(CVodeGetQuad)p Fw(,)c
+Fx(113)4000 21688 y Fu(CVodeGetQuadB)p Fw(,)g(103)4000
+23025 y Fu(CVodeGetQuadDky)p Fw(,)h Fx(68)4000 24363
+y Fu(CVodeGetQuadErrWeights)p Fw(,)h Fx(70)4000 25700
+y Fu(CVodeGetQuadNumErrTestFails)p Fw(,)g Fx(70)4000
+27038 y Fu(CVodeGetQuadNumRhsEvals)p Fw(,)g Fx(70)4000
+28376 y Fu(CVodeGetQuadStats)p Fw(,)f Fx(71)4000 29713
+y Fu(CVodeGetRootInfo)p Fw(,)g Fx(72)4000 31051 y Fu(CVodeGetSens)p
+Fw(,)f(85)4000 32388 y Fu(CVodeGetSensDky)p Fw(,)h Fx(88)4000
+33726 y Fu(CVodeGetSensErrWeights)p Fw(,)h Fx(95)4000
+35064 y Fu(CVodeGetSensNonlinSolvStats)p Fw(,)g Fx(96)4000
+36401 y Fu(CVodeGetTolScaleFactor)p Fw(,)g Fx(51)4000
+37739 y Fu(CVodeGetWorkSpace)p Fw(,)f Fx(48)4000 39076
+y Fu(CVodeMalloc)p Fw(,)f Fx(32)p Fw(,)g(59)4000 40414
+y Fu(CVodeMallocB)p Fw(,)g(102,)g(106,)g Fx(106)4000
+41752 y Fu(CVodeQuadMalloc)p Fw(,)h(67,)e Fx(67)4000
+43089 y Fu(CVodeQuadMallocB)p Fw(,)i Fx(112)4000 44427
+y Fu(CVodeReInit)p Fw(,)f Fx(59)4000 45764 y Fu(CVodeReInitB)p
+Fw(,)g Fx(106)4000 47102 y Fu(CVodeRootInit)p Fw(,)g
+Fx(72)4000 48440 y Fs(cv)-25 b(odes)6214 49777 y Fw(brief)369
+b(description)h(of,)g(1)6214 51115 y(motiv)-61 b(ation)372
+b(for)e(writing)h(in)e(C,)h(2)6214 52452 y(pac)-31 b(k)-61
+b(age)370 b(structure,)f(23)6214 53790 y(relationship)i(to)f
+Fs(cv)-25 b(ode)p Fw(,)370 b Fs(pv)-25 b(ode)p Fw(,)371
+b(1{2)6214 55128 y(relationship)g(to)f Fs(v)-25 b(ode)p
+Fw(,)370 b Fs(v)-25 b(odpk)p Fw(,)369 b(1)4000 56465
+y Fs(cv)-25 b(odes)370 b Fw(linear)g(solv)-31 b(ers)6214
+57803 y(built)370 b(on)g(generic)f(solv)-31 b(ers,)370
+b(33)6214 59140 y Fs(cvband)p Fw(,)g(33)6214 60478 y
+Fs(cvdense)p Fw(,)g(33)6214 61816 y Fs(cvdia)-25 b(g)p
+Fw(,)369 b(34)6214 63153 y Fs(cvspgmr)p Fw(,)g(34)6214
+64491 y(header)g(\257les,)g(28)6214 65828 y(implemen)-31
+b(tation)373 b(details,)e(25{26)6214 67166 y(list)f(of,)g(25)6214
+68504 y Fs(nvector)f Fw(compatibilit)-31 b(y)-92 b(,)374
+b(27)6214 69841 y(selecting)c(one,)g(32{33)6214 71179
+y(usage)f(with)i(adjoin)-31 b(t)371 b(mo)31 b(dule,)371
+b(107)4000 72516 y Fu(cvodes.h)p Fw(,)g(28)4000 73854
+y Fu(CVodeSensFree)p Fw(,)g Fx(87)4000 75192 y Fu(CVodeSensMalloc)p
+Fw(,)h(85,)e Fx(85)p Fw(,)h(86)4000 76529 y Fu(CVodeSensReInit)p
+Fw(,)h Fx(86)4000 77867 y Fu(CVodeSensToggle)p Fw(,)g
+Fx(87)p Black Black 28553 6974 a Fu(CVodeSetErrFile)p
+Fw(,)g Fx(36)28553 8312 y Fu(CVodeSetEwtFn)p Fw(,)g Fx(42)28553
+9650 y Fu(CVodeSetFdata)p Fw(,)g Fx(38)28553 10988 y
+Fu(CVodeSetInitStep)p Fw(,)g Fx(39)28553 12326 y Fu(CVodeSetIterType)p
+Fw(,)g Fx(41)28553 13665 y Fu(CVodeSetMaxConvFails)p
+Fw(,)h Fx(41)28553 15003 y Fu(CVodeSetMaxErrTestFails)p
+Fw(,)g Fx(40)28553 16341 y Fu(CVodeSetMaxHnilWarns)p
+Fw(,)g Fx(38)28553 17679 y Fu(CVodeSetMaxNonlinIters)p
+Fw(,)g Fx(40)28553 19017 y Fu(CVodeSetMaxNumSteps)p Fw(,)g
+Fx(38)28553 20355 y Fu(CVodeSetMaxOrder)p Fw(,)f Fx(38)28553
+21694 y Fu(CVodeSetMaxStep)p Fw(,)g Fx(40)28553 23032
+y Fu(CVodeSetMinStep)p Fw(,)g Fx(39)28553 24370 y Fu
+(CVodeSetNonlinConvCoef)p Fw(,)h Fx(41)28553 25708 y
+Fu(CVodeSetQuadErrCon)p Fw(,)g Fx(69)28553 27046 y Fu
+(CVodeSetQuadFdata)p Fw(,)f Fx(69)28553 28384 y Fu(CVodeSetSensErrCon)p
+Fw(,)h Fx(92)28553 29723 y Fu(CVodeSetSensFdata)p Fw(,)f
+Fx(90)28553 31061 y Fu(CVodeSetSensMaxNonlinIters)p Fw(,)i
+Fx(92)28553 32399 y Fu(CVodeSetSensParams)p Fw(,)f Fx(91)28553
+33737 y Fu(CVodeSetSensRho)p Fw(,)f Fx(91)28553 35075
+y Fu(CVodeSetSensRhs1Fn)p Fw(,)h Fx(90)28553 36413 y
+Fu(CVodeSetSensRhsFn)p Fw(,)f Fx(90)28553 37752 y Fu
+(CVodeSetSensTolerances)p Fw(,)h Fx(92)28553 39090 y
+Fu(CVodeSetStabLimDet)p Fw(,)g Fx(39)28553 40428 y Fu(CVodeSetStopTime)
+p Fw(,)f Fx(40)28553 41766 y Fu(CVodeSetTolerances)p
+Fw(,)h Fx(42)28553 43104 y Fu(CVQuadRhsFn)p Fw(,)f(67,)e
+Fx(71)28553 44442 y Fu(CVQuadRhsFnB)p Fw(,)i(112,)f(113,)g
+Fx(115)28553 45780 y Fu(CVRhsFn)p Fw(,)g(32,)f(59,)h
+Fx(60)28553 47119 y Fu(CVRhsFnB)p Fw(,)g(106,)g(107,)g
+Fx(114)28553 48457 y Fu(CVRootFn)p Fw(,)g Fx(72)28553
+49795 y Fu(CVSensRhs1Fn)p Fw(,)h Fx(98)28553 51133 y
+Fu(CVSensRhsFn)p Fw(,)g Fx(97)28553 52471 y Fs(cvspgmr)d
+Fw(linear)h(solv)-31 b(er)30767 53809 y(Jacobian)371
+b(appro)-31 b(ximation)373 b(used)c(b)-31 b(y)-92 b(,)369
+b(44)30767 55148 y(optional)j(input,)f(44{46)30767 56486
+y(optional)h(output,)f(57{59)30767 57824 y(preconditioner)g(setup)e
+(function,)i(44,)f(64)30767 59162 y(preconditioner)h(solv)-31
+b(e)370 b(function,)h(44,)f(64)30767 60500 y(selection)h(of,)f(34)28553
+61838 y Fs(cvspgmr)f Fw(linear)h(solv)-31 b(er)30767
+63177 y(memory)371 b(requiremen)-31 b(ts,)370 b(57)28553
+64515 y Fu(CVSpgmr)p Fw(,)h(30,)f(33,)h Fx(34)28553 65853
+y Fu(cvspgmr.h)p Fw(,)g(29)28553 67191 y Fu(CVSPGMR)p
+32690 67191 349 45 v 420 w(ILL)p 34853 67191 V 419 w(INPUT)p
+Fw(,)274 b(34,)293 b(45,)g(75,)g(79,)h(111,)f(112,)h(119,)32981
+68519 y(121)28553 69858 y Fu(CVSPGMR)p 32690 69858 V
+420 w(LMEM)p 35434 69858 V 419 w(NULL)p Fw(,)370 b(44,)g(45,)h(57{59,)h
+(110{112)28553 71196 y Fu(CVSPGMR)p 32690 71196 V 420
+w(MEM)p 34853 71196 V 419 w(FAIL)p Fw(,)e(34,)g(75,)h(79,)f(119,)h(121)
+28553 72534 y Fu(CVSPGMR)p 32690 72534 V 420 w(MEM)p
+34853 72534 V 419 w(NULL)p Fw(,)278 b(34,)297 b(44,)g(45,)g(57{59,)i
+(75,)e(79,)g(110,)32981 73862 y(111,)371 b(119,)g(121)28553
+75200 y Fu(CVSPGMR)p 32690 75200 V 420 w(SUCCESS)p Fw(,)351
+b(34,)k(44,)f(45,)h(57{59,)h(75,)f(79,)g(110,)32981 76529
+y(111,)371 b(121)28553 77867 y Fu(CVSpgmrDQJtimes)p Fw(,)h(44)p
+Black Black eop
+%%Page: 154 164
+154 163 bop Black 0 2701 a Fx(154)41838 b(INDEX)p 0 3144
+48001 45 v Black 0 6974 a Fu(CVSpgmrGetLastFlag)p Fw(,)372
+b Fx(59)0 8302 y Fu(CVSpgmrGetNumConvFails)p Fw(,)h Fx(57)0
+9631 y Fu(CVSpgmrGetNumJtimesEvals)p Fw(,)g Fx(58)0 10959
+y Fu(CVSpgmrGetNumLinIters)p Fw(,)g Fx(57)0 12287 y Fu
+(CVSpgmrGetNumPrecEvals)p Fw(,)g Fx(58)0 13616 y Fu
+(CVSpgmrGetNumPrecSolves)p Fw(,)g Fx(58)0 14944 y Fu
+(CVSpgmrGetNumRhsEvals)p Fw(,)g Fx(58)0 16272 y Fu(CVSpgmrGetWorkSpace)
+p Fw(,)f Fx(57)0 17601 y Fu(CVSpgmrJacTimesVecFn)p Fw(,)g
+Fx(63)0 18929 y Fu(CVSpgmrPrecondFnB)p Fw(,)g Fx(118)0
+20257 y Fu(CVSpgmrPrecSetupFn)p Fw(,)g Fx(64)0 21586
+y Fu(CVSpgmrPrecSolveFn)p Fw(,)g Fx(64)0 22914 y Fu(CVSpgmrPSolveFnB)p
+Fw(,)g Fx(117)0 24242 y Fu(CVSpgmrSet)p Fw(,)f Fx(44)0
+25571 y Fu(CVSpgmrSetDelt)p Fw(,)h Fx(45)0 26899 y Fu(CVSpgmrSetDeltB)p
+Fw(,)g Fx(111)0 28227 y Fu(CVSpgmrSetGSType)p Fw(,)g
+Fx(45)0 29556 y Fu(CVSpgmrSetGSTypeB)p Fw(,)g Fx(111)0
+30884 y Fu(CVSpgmrSetJacTimesFn)p Fw(,)g Fx(44)0 32213
+y Fu(CVSpgmrSetJacTimesFnB)p Fw(,)h Fx(110)0 33541 y
+Fu(CVSpgmrSetPrecSolveFnB)p Fw(,)g Fx(110)0 34869 y Fu
+(CVSpgmrSetPrecType)p Fw(,)f Fx(45)0 36198 y Fu(CVSpgmrSetPrecTypeB)p
+Fw(,)g Fx(111)0 38575 y Fu(denaddI)p Fw(,)f Fx(139)0
+39903 y Fu(denalloc)p Fw(,)g Fx(138)0 41232 y Fu(denallocpiv)p
+Fw(,)g Fx(139)0 42560 y Fu(dencopy)p Fw(,)g Fx(139)0
+43888 y Fu(denfree)p Fw(,)g Fx(139)0 45217 y Fu(denfreepiv)p
+Fw(,)g Fx(139)0 46545 y Fu(denprint)p Fw(,)g Fx(139)0
+47873 y Fu(denscale)p Fw(,)g Fx(139)0 49202 y Fs(dense)f
+Fw(generic)f(linear)h(solv)-31 b(er)2214 50530 y(functions)3321
+51858 y(large)370 b(matrix,)h(138)3321 53187 y(small)f(matrix,)i
+(138{139)2214 54515 y(macros,)e(138)2214 55844 y(t)-31
+b(yp)31 b(e)370 b Fu(DenseMat)p Fw(,)g(137)0 57172 y
+Fu(DENSE)p 2975 57172 349 45 v 419 w(COL)p Fw(,)g(62,)h
+Fx(138)0 58500 y Fu(DENSE)p 2975 58500 V 419 w(ELEM)p
+Fw(,)f(62,)h Fx(138)0 59829 y Fu(DenseMat)p Fw(,)g(28,)f(61,)h(116,)f
+Fx(137)0 61157 y Fu(denzero)p Fw(,)h Fx(139)0 63534 y
+Fu(e)p 651 63534 V 419 w(data)p Fw(,)f(61)0 64863 y(error)e(con)-31
+b(trol)2214 66191 y(order)368 b(selection,)j(14)2214
+67519 y(sensitivit)-31 b(y)371 b(v)-61 b(ariables,)371
+b(16)2214 68848 y(step)e(size)g(selection,)i(13{14)0
+70176 y(error)d(message,)i(36)0 72553 y Fu(f)p 651 72553
+V 419 w(data)p Fw(,)g Fx(38)p Fw(,)g(60,)h(77)0 73882
+y Fu(f)p 651 73882 V 419 w(dataB)p Fw(,)f(114,)h(122)0
+75210 y(forw)-31 b(ard)370 b(sensitivit)-31 b(y)371 b(analysis)2214
+76539 y(absolute)f(tolerance)h(selection,)g(16)2214 77867
+y(correction)f(strategies,)h(15{16,)g(23,)g(86)p Black
+Black 26767 6974 a(mathematical)j(bac)-31 b(kground,)371
+b(14{17)26767 8306 y(righ)-31 b(t)371 b(hand)e(side)g(ev)-61
+b(aluation,)372 b(16{17)26767 9637 y(righ)-31 b(t-hand)371
+b(side)e(ev)-61 b(aluation,)372 b(97)24553 10969 y Fu(fQ)p
+25785 10969 V 419 w(data)p Fw(,)e(69,)h(71)24553 12301
+y Fu(fQ)p 25785 12301 V 419 w(dataB)p Fw(,)f(115)24553
+13632 y Fu(fS)p 25785 13632 V 419 w(data)p Fw(,)g(97,)h(98)24553
+16126 y Fu(g)p 25204 16126 V 419 w(data)p Fw(,)f(73)24553
+17458 y Fu(gefa)p Fw(,)h Fx(139)24553 18789 y Fw(generic)f(linear)g
+(solv)-31 b(ers)26767 20121 y Fs(band)p Fw(,)370 b(140)26767
+21453 y Fs(dense)p Fw(,)h(137)26767 22784 y Fs(spgmr)p
+Fw(,)e(142)26767 24116 y(use)g(in)g Fs(cv)-25 b(odes)p
+Fw(,)371 b(26)24553 25448 y Fu(gesl)p Fw(,)g Fx(139)24553
+26779 y Fw(GMRES)e(metho)31 b(d,)371 b(34,)f(45,)g(111,)h(142)24553
+28111 y(Gram-Sc)-31 b(hmidt)371 b(pro)31 b(cedure,)369
+b(45,)h(111)24553 30605 y(half-bandwidths,)j(33,)d(62{63,)i(74,)e(78)
+24553 31937 y(header)f(\257les,)h(28,)g(73,)h(77)24553
+34430 y Fu(itask)p Fw(,)g(31,)f Fx(35)p Fw(,)h(104)24553
+35762 y Fu(iter)p Fw(,)g Fx(31)p Fw(,)f(41)24553 37094
+y Fu(itol)p Fw(,)h Fx(32)p Fw(,)f(106,)h(107)24553 38425
+y Fu(itol)582 b(=)g(CV)p 29854 38425 V 418 w(SS)p Fw(,)370
+b Fx(42)p Fw(,)g(60)24553 39757 y Fu(itolQ)582 b(=)g(CV)p
+30435 39757 V 418 w(SS)p Fw(,)370 b(69)24553 41089 y
+Fu(itolS)p Fw(,)h(92)24553 43583 y(Jacobian)g(appro)-31
+b(ximation)373 b(function)26767 44914 y(band)27874 46246
+y(di\256erence)c(quotien)-31 b(t,)372 b(43)27874 47578
+y(user-supplied,)d(43,)i(62{63)26767 48909 y(dense)27874
+50241 y(di\256erence)e(quotien)-31 b(t,)372 b(43)27874
+51573 y(user-supplied,)d(43,)i(61{62)26767 52904 y(diagonal)27874
+54236 y(di\256erence)e(quotien)-31 b(t,)372 b(34)26767
+55568 y(Jacobian)f(times)f(v)-31 b(ector)27874 56899
+y(di\256erence)369 b(quotien)-31 b(t,)372 b(44)27874
+58231 y(user-supplied,)d(44)26767 59563 y(Jacobian-v)-31
+b(ector)372 b(pro)31 b(duct)27874 60894 y(user-supplied,)369
+b(63{64)24553 63388 y Fu(linit)p Fw(,)i Fx(133)24553
+64720 y Fu(lmm)p Fw(,)f Fx(31)p Fw(,)h(59)24553 66051
+y Fs(lsode)p Fw(,)f(1)24553 68545 y Fu(maxl)p Fw(,)h(34,)f(75,)g(79)
+24553 69877 y Fu(maxord)p Fw(,)h Fx(38)p Fw(,)f(59)24553
+71209 y(memory)h(requiremen)-31 b(ts)26767 72540 y Fs(cvband)370
+b Fw(linear)g(solv)-31 b(er,)370 b(55)26767 73872 y Fs(cvbandpre)g
+Fw(preconditioner,)h(75)26767 75204 y Fs(cvbbdpre)f Fw(preconditioner,)
+h(80)26767 76535 y Fs(cvdense)f Fw(linear)g(solv)-31
+b(er,)371 b(53)26767 77867 y Fs(cvdia)-25 b(g)369 b Fw(linear)h(solv)
+-31 b(er,)371 b(56)p Black Black eop
+%%Page: 155 165
+155 164 bop Black 4000 2701 a Fx(INDEX)41838 b(155)p
+4000 3144 48001 45 v Black 6214 6974 a Fs(cv)-25 b(odes)370
+b Fw(solv)-31 b(er,)370 b(67,)g(86)6214 8313 y Fs(cv)-25
+b(odes)370 b Fw(solv)-31 b(er,)370 b(48)6214 9653 y Fs(cvspgmr)e
+Fw(linear)i(solv)-31 b(er,)370 b(57)4000 10992 y Fu(MODIFIED)p
+8718 10992 349 45 v 420 w(GS)p Fw(,)f Fx(45)p Fw(,)i
+Fx(111)4000 12332 y Fw(MPI,)e(3)4000 14962 y Fu(N)p 4651
+14962 V 419 w(VCloneEmptyVectorArray)p Fw(,)j Fx(124)4000
+16302 y Fu(N)p 4651 16302 V 419 w(VCloneVectorArray)p
+Fw(,)g Fx(124)4000 17641 y Fu(N)p 4651 17641 V 419 w
+(VDestroyVectorArray)p Fw(,)g Fx(124)4000 18981 y Fu(N)p
+4651 18981 V 419 w(VDestroyVectorArray)p 16109 18981
+V 421 w(Parallel)p Fw(,)e Fx(131)4000 20320 y Fu(N)p
+4651 20320 V 419 w(VDestroyVectorArray)p 16109 20320
+V 421 w(Serial)p Fw(,)g Fx(128)4000 21659 y Fu(N)p 4651
+21659 V 419 w(Vector)p Fw(,)g(28,)g(123,)h Fx(123)4000
+22999 y Fu(N)p 4651 22999 V 419 w(VMake)p 7975 22999
+V 419 w(Parallel)p Fw(,)f Fx(130)4000 24338 y Fu(N)p
+4651 24338 V 419 w(VMake)p 7975 24338 V 419 w(Serial)p
+Fw(,)g Fx(128)4000 25678 y Fu(N)p 4651 25678 V 419 w(VNew)p
+7394 25678 V 419 w(Parallel)p Fw(,)g Fx(130)4000 27017
+y Fu(N)p 4651 27017 V 419 w(VNew)p 7394 27017 V 419 w(Serial)p
+Fw(,)g Fx(128)4000 28356 y Fu(N)p 4651 28356 V 419 w(VNewEmpty)p
+10299 28356 V 419 w(Parallel)p Fw(,)h Fx(130)4000 29696
+y Fu(N)p 4651 29696 V 419 w(VNewEmpty)p 10299 29696 V
+419 w(Serial)p Fw(,)g Fx(128)4000 31035 y Fu(N)p 4651
+31035 V 419 w(VNewVectorArray)p 13785 31035 V 420 w(Parallel)p
+Fw(,)g Fx(130)4000 32375 y Fu(N)p 4651 32375 V 419 w(VNewVectorArray)p
+13785 32375 V 420 w(Serial)p Fw(,)g Fx(128)4000 33714
+y Fu(N)p 4651 33714 V 419 w(VNewVectorArrayEmpty)p 16690
+33714 V 421 w(Parallel)p Fw(,)g Fx(131)4000 35054 y Fu(N)p
+4651 35054 V 419 w(VNewVectorArrayEmpty)p 16690 35054
+V 421 w(Serial)p Fw(,)f Fx(128)4000 36393 y Fu(N)p 4651
+36393 V 419 w(VPrint)p 8556 36393 V 419 w(Parallel)p
+Fw(,)h Fx(131)4000 37732 y Fu(N)p 4651 37732 V 419 w(VPrint)p
+8556 37732 V 419 w(Serial)p Fw(,)f Fx(128)4000 39072
+y Fw(nonlinear)g(system)6214 40411 y(de\257nition,)h(11{12)6214
+41751 y(Newton)g(con)-31 b(v)g(ergence)370 b(test,)g(13)6214
+43090 y(Newton)h(iteration,)g(12{13)4000 44429 y(norm)6214
+45769 y(w)-31 b(eigh)g(ted)371 b(ro)31 b(ot-mean-square,)371
+b(12)4000 47108 y Fu(NV)p 5232 47108 V 419 w(COMM)p 7975
+47108 V 419 w(P)p Fw(,)e Fx(130)4000 48448 y Fu(NV)p
+5232 48448 V 419 w(CONTENT)p 9718 48448 V 419 w(P)p Fw(,)h
+Fx(129)4000 49787 y Fu(NV)p 5232 49787 V 419 w(CONTENT)p
+9718 49787 V 419 w(S)p Fw(,)g Fx(127)4000 51127 y Fu(NV)p
+5232 51127 V 419 w(DATA)p 7975 51127 V 419 w(P)p Fw(,)f
+Fx(129)4000 52466 y Fu(NV)p 5232 52466 V 419 w(DATA)p
+7975 52466 V 419 w(S)p Fw(,)g Fx(128)4000 53805 y Fu(NV)p
+5232 53805 V 419 w(GLOBLENGTH)p 11461 53805 V 420 w(P)p
+Fw(,)g Fx(129)4000 55145 y Fu(NV)p 5232 55145 V 419 w(Ith)p
+7394 55145 V 419 w(P)p Fw(,)g Fx(130)4000 56484 y Fu(NV)p
+5232 56484 V 419 w(Ith)p 7394 56484 V 419 w(S)p Fw(,)g
+Fx(128)4000 57824 y Fu(NV)p 5232 57824 V 419 w(LENGTH)p
+9137 57824 V 419 w(S)p Fw(,)h Fx(128)4000 59163 y Fu(NV)p
+5232 59163 V 419 w(LOCLENGTH)p 10880 59163 V 419 w(P)p
+Fw(,)g Fx(129)4000 60502 y Fu(NV)p 5232 60502 V 419 w(OWN)p
+7394 60502 V 419 w(DATA)p 10137 60502 V 419 w(P)p Fw(,)f
+Fx(129)4000 61842 y Fu(NV)p 5232 61842 V 419 w(OWN)p
+7394 61842 V 419 w(DATA)p 10137 61842 V 419 w(S)p Fw(,)g
+Fx(128)4000 63181 y Fu(NVECTOR)h Fw(mo)31 b(dule,)371
+b(123)4000 64521 y Fu(nvector.h)p Fw(,)g(28)4000 65860
+y Fu(nvector)p 8137 65860 V 419 w(parallel.h)p Fw(,)g(28)4000
+67200 y Fu(nvector)p 8137 67200 V 419 w(serial.h)p Fw(,)g(28)4000
+69830 y(optional)h(input)6214 71170 y(band)d(linear)h(solv)-31
+b(er,)370 b(43)6214 72509 y(dense)e(linear)i(solv)-31
+b(er,)371 b(43)6214 73849 y(iterativ)-31 b(e)371 b(linear)f(solv)-31
+b(er,)370 b(44{46)6214 75188 y(solv)-31 b(er,)370 b(36{42)4000
+76527 y(optional)i(output)6214 77867 y(band)d(linear)h(solv)-31
+b(er,)370 b(54{55)p Black Black 30767 6974 a(band-blo)31
+b(c)-31 b(k-diagonal)374 b(preconditioner,)d(80{81)30767
+8304 y(banded)f(preconditioner,)h(75)30767 9635 y(dense)e(linear)h
+(solv)-31 b(er,)370 b(53{54)30767 10965 y(diagonal)i(linear)e(solv)-31
+b(er,)370 b(56)30767 12295 y(in)-31 b(terp)31 b(olated)372
+b(solution,)f(46)30767 13626 y(iterativ)-31 b(e)372 b(linear)e(solv)-31
+b(er,)370 b(57{59)30767 14956 y(solv)-31 b(er,)371 b(46{53)28553
+16287 y(output)g(mo)31 b(de,)370 b(14)28553 18758 y(partial)h(error)e
+(con)-31 b(trol)30767 20088 y(explanation)372 b(of)e
+Fs(cv)-25 b(odes)370 b Fw(b)31 b(eha)-31 b(vior,)370
+b(98)28553 21419 y(p)31 b(ortabilit)-31 b(y)-92 b(,)373
+b(27)28553 22749 y Fu(PREC)p 30947 22749 V 420 w(BOTH)p
+Fw(,)d(34,)g(45,)g(111)28553 24079 y Fu(PREC)p 30947
+24079 V 420 w(LEFT)p Fw(,)g(34,)g(45,)g(74,)h(79,)f(111,)h(119,)g(121)
+28553 25410 y Fu(PREC)p 30947 25410 V 420 w(NONE)p Fw(,)f(34,)g(45,)g
+(111)28553 26740 y Fu(PREC)p 30947 26740 V 420 w(RIGHT)p
+Fw(,)g(34,)g(45,)h(74,)f(79,)g(111,)h(119,)g(121)28553
+28070 y(preconditioner)30767 29401 y(setup)e(and)h(solv)-31
+b(e)370 b(phases,)f(25)28553 30731 y(preconditioning)30767
+32062 y(advice)i(on,)e(25,)i(34{35)30767 33392 y(band-blo)31
+b(c)-31 b(k)371 b(diagonal,)h(76)30767 34722 y(banded,)e(73)30767
+36053 y(user-supplied,)g(44,)g(64)28553 37383 y Fu(pretype)p
+Fw(,)h Fx(34)p Fw(,)f(45,)h(74,)f(79)28553 38714 y Fu(pretypeB)p
+Fw(,)h(111,)g(119,)g(121)28553 40044 y Fs(pv)-25 b(ode)p
+Fw(,)371 b(1)28553 42515 y Fu(RCONST)p Fw(,)g(28)28553
+43846 y Fu(realtype)p Fw(,)g Fx(27)28553 45176 y Fw(reinitialization,)k
+(59,)370 b(106)28553 46506 y(righ)-31 b(t-hand)371 b(side)e(function,)i
+(60)30767 47837 y(bac)-31 b(kw)g(ard)371 b(problem,)f(114)30767
+49167 y(forw)-31 b(ard)370 b(sensitivit)-31 b(y)-92 b(,)372
+b(97)30767 50497 y(quadrature)e(bac)-31 b(kw)g(ard)371
+b(problem,)f(115)30767 51828 y(quadrature)g(equations,)h(71)28553
+53158 y(Ro)31 b(ot\257nding,)372 b(21,)e(30,)h(71)28553
+55629 y Fu(SMALL)p 31528 55629 V 420 w(REAL)p Fw(,)f(28)28553
+56960 y Fs(spgmr)e Fw(generic)i(linear)g(solv)-31 b(er)30767
+58290 y(description)370 b(of,)h(142)30767 59621 y(functions,)g(142)
+30767 60951 y(supp)31 b(ort)369 b(functions,)i(142{143)28553
+62281 y(Stabilit)-31 b(y)373 b(limit)e(detection,)h(20)28553
+63612 y(step)e(size)f(b)31 b(ounds,)369 b(39{40)28553
+64942 y Fu(sundialstypes.h)p Fw(,)j Fx(27)p Fw(,)f(28)28553
+67413 y(tolerances,)g(12,)f(32,)h(42,)f(61,)h(69,)f(92,)h(106,)g(107)
+28553 69885 y Fu(UNIT)p 30947 69885 V 420 w(ROUNDOFF)p
+Fw(,)f(28)28553 71215 y(User)f(main)h(program)30767 72545
+y(Adjoin)-31 b(t)372 b(sensitivit)-31 b(y)371 b(analysis,)g(101)30767
+73876 y Fs(cvbandpre)f Fw(usage,)g(73)30767 75206 y Fs(cvbbdpre)g
+Fw(usage,)g(77)30767 76536 y(forw)-31 b(ard)370 b(sensitivit)-31
+b(y)372 b(analysis,)f(83)30767 77867 y(in)-31 b(tegration)373
+b(of)c(quadratures,)h(65)p Black Black eop
+%%Page: 156 166
+156 165 bop Black 0 2701 a Fx(156)41838 b(INDEX)p 0 3144
+48001 45 v Black 2214 6974 a Fw(IVP)369 b(solution,)j(29)0
+9409 y Fs(v)-25 b(ode)p Fw(,)370 b(1)0 10738 y Fs(v)-25
+b(odpk)p Fw(,)370 b(1)p Black Black Black Black eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/Makefile b/Win32/WinCVODE/sundials/cvodes/examples_ser/Makefile
new file mode 100644
index 0000000..6a604c3
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/Makefile
@@ -0,0 +1,96 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:34:45 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/cvodes/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for CVODES serial examples
+#
+# cvodes/examples_ser/Makefile.  Generated from Makefile.in by configure.
+# -----------------------------------------------------------------
+
+SHELL = /bin/bash
+
+srcdir       = .
+builddir     = .
+top_builddir = ../../
+prefix       = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials
+exec_prefix  = ${prefix}
+includedir   = ${prefix}/include
+libdir       = ${exec_prefix}/lib
+
+
+
+CPP      = /usr/bin/cc -E
+CPPFLAGS = 
+CC       = /usr/bin/cc
+CFLAGS   = -g -O2
+LDFLAGS  = 
+LIBS     = -lm 
+
+COMPILER_PREFIX = 
+LINKER_PREFIX   = 
+
+SUNDIALS_INC_DIR = $(includedir)
+SUNDIALS_LIB_DIR = $(libdir)
+SUNDIALS_LIBS    = -lsundials_cvodes -lsundials_nvecserial -lsundials_shared
+
+EXEC_FILES = cvdx cvdxe cvbx cvkx cvkxb cvdemd cvdemk cvfnx cvfdx cvfkx cvadx cvabx cvakx cvakxb
+
+all: $(EXEC_FILES)
+
+cvdx: $(srcdir)/cvdx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdx $(builddir)/cvdx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvdxe: $(srcdir)/cvdxe.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdxe.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdxe $(builddir)/cvdxe.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvbx: $(srcdir)/cvbx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvbx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvbx $(builddir)/cvbx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvkx: $(srcdir)/cvkx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvkx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvkx $(builddir)/cvkx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvkxb: $(srcdir)/cvkxb.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvkxb.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvkxb $(builddir)/cvkxb.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvdemd: $(srcdir)/cvdemd.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdemd.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdemd $(builddir)/cvdemd.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvdemk: $(srcdir)/cvdemk.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdemk.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdemk $(builddir)/cvdemk.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvfnx: $(srcdir)/cvfnx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvfnx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvfnx $(builddir)/cvfnx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvfdx: $(srcdir)/cvfdx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvfdx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvfdx $(builddir)/cvfdx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvfkx: $(srcdir)/cvfkx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvfkx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvfkx $(builddir)/cvfkx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvadx: $(srcdir)/cvadx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvadx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvadx $(builddir)/cvadx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvabx: $(srcdir)/cvabx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvabx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvabx $(builddir)/cvabx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvakx: $(srcdir)/cvakx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvakx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvakx $(builddir)/cvakx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvakxb: $(srcdir)/cvakxb.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvakxb.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvakxb $(builddir)/cvakxb.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+
+clean:
+	rm -rf .libs
+	rm -f *.lo
+	rm -f *.o
+
+uninstall: clean
+	rm -f $(EXEC_FILES)
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/Makefile.in b/Win32/WinCVODE/sundials/cvodes/examples_ser/Makefile.in
new file mode 100644
index 0000000..a0df2bc
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/Makefile.in
@@ -0,0 +1,96 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:34:45 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/cvodes/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for CVODES serial examples
+#
+# @configure_input@
+# -----------------------------------------------------------------
+
+SHELL = @SHELL@
+
+srcdir       = @srcdir@
+builddir     = @builddir@
+top_builddir = @top_builddir@
+prefix       = @prefix@
+exec_prefix  = @exec_prefix@
+includedir   = @includedir@
+libdir       = @libdir@
+
+ at LIBTOOL_CMD@
+
+CPP      = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CC       = @CC@
+CFLAGS   = @CFLAGS@
+LDFLAGS  = @LDFLAGS@
+LIBS     = @LIBS@
+
+COMPILER_PREFIX = @COMPILER_PREFIX@
+LINKER_PREFIX   = @LINKER_PREFIX@
+
+SUNDIALS_INC_DIR = $(includedir)
+SUNDIALS_LIB_DIR = $(libdir)
+SUNDIALS_LIBS    = -lsundials_cvodes -lsundials_nvecserial -lsundials_shared
+
+EXEC_FILES = cvdx cvdxe cvbx cvkx cvkxb cvdemd cvdemk cvfnx cvfdx cvfkx cvadx cvabx cvakx cvakxb
+
+all: $(EXEC_FILES)
+
+cvdx: $(srcdir)/cvdx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdx $(builddir)/cvdx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvdxe: $(srcdir)/cvdxe.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdxe.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdxe $(builddir)/cvdxe.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvbx: $(srcdir)/cvbx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvbx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvbx $(builddir)/cvbx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvkx: $(srcdir)/cvkx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvkx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvkx $(builddir)/cvkx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvkxb: $(srcdir)/cvkxb.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvkxb.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvkxb $(builddir)/cvkxb.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvdemd: $(srcdir)/cvdemd.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdemd.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdemd $(builddir)/cvdemd.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvdemk: $(srcdir)/cvdemk.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdemk.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvdemk $(builddir)/cvdemk.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvfnx: $(srcdir)/cvfnx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvfnx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvfnx $(builddir)/cvfnx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvfdx: $(srcdir)/cvfdx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvfdx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvfdx $(builddir)/cvfdx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvfkx: $(srcdir)/cvfkx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvfkx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvfkx $(builddir)/cvfkx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvadx: $(srcdir)/cvadx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvadx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvadx $(builddir)/cvadx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvabx: $(srcdir)/cvabx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvabx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvabx $(builddir)/cvabx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvakx: $(srcdir)/cvakx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvakx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvakx $(builddir)/cvakx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+cvakxb: $(srcdir)/cvakxb.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/cvakxb.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/cvakxb $(builddir)/cvakxb.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+
+clean:
+	rm -rf .libs
+	rm -f *.lo
+	rm -f *.o
+
+uninstall: clean
+	rm -f $(EXEC_FILES)
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/README b/Win32/WinCVODE/sundials/cvodes/examples_ser/README
new file mode 100644
index 0000000..1d74387
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/README
@@ -0,0 +1,37 @@
+List of serial CVODES examples
+
+(1) Simulation
+
+  cvdx   : dense example
+  cvbx   : banded example
+  cvkx   : Krylov example
+  cvkxb  : Krylov example with banded preconditioner
+  cvdemd : demonstration program for direct methods
+  cvdemk : demonstration program for Krylov methods
+
+(2) Forward sensitivity
+
+  cvfnx : 1-D advection difusion PDE -
+          Adams with Functional iteration
+  cvfdx : chemical kinetics ODEs -
+          BDF with Newton Dense
+  cvfkx : 2-D 2-species diurnal advection-diffusion PDE -
+          BDF with Newton GMRES
+
+(3) Adjoint sensitivity
+
+  cvadx  : chemical kinetics - adjoint sensitivity
+  cvabx  : advection-diffusion - adjoint sensitivity
+  cvakx  : food web - adjoint sensitivity for G
+  cvakxb : food web - adjoint sensitivity for g
+
+Sample results:
+
+  SUNDIALS was built with the following options:
+
+  ./configure CC=gcc F77=g77
+
+  System Architecture: IA-32
+  Processor Type: Intel Pentium 4 Xeon DP (i686)
+  Operating System: Red Hat Enterprise Linux WS 3
+  C/Fortran Compilers: gcc/g77 v3.2.3-39 (Red Hat)
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvabx.c b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvabx.c
new file mode 100644
index 0000000..32f71c8
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvabx.c
@@ -0,0 +1,532 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:34:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Adjoint sensitivity example problem:
+ *
+ * The following is a simple example problem with a banded Jacobian,
+ * with the program for its solution by CVODES.
+ * The problem is the semi-discrete form of the advection-diffusion
+ * equation in 2-D:
+ *   du/dt = d^2 u / dx^2 + .5 du/dx + d^2 u / dy^2
+ * on the rectangle 0 <= x <= 2, 0 <= y <= 1, and the time
+ * interval 0 <= t <= 1. Homogeneous Dirichlet boundary conditions
+ * are posed, and the initial condition is the following:
+ *   u(x,y,t=0) = x(2-x)y(1-y)exp(5xy).
+ * The PDE is discretized on a uniform MX+2 by MY+2 grid with
+ * central differencing, and with boundary values eliminated,
+ * leaving an ODE system of size NEQ = MX*MY.
+ * This program solves the problem with the BDF method, Newton
+ * iteration with the CVODE band linear solver, and a user-supplied
+ * Jacobian routine.
+ * It uses scalar relative and absolute tolerances.
+ * Output is printed at t = .1, .2, ..., 1.
+ * Run statistics (optional outputs) are printed at the end.
+ *
+ * Additionally, CVODES integrates backwards in time the
+ * the semi-discrete form of the adjoint PDE:
+ *   d(lambda)/dt = - d^2(lambda) / dx^2 + 0.5 d(lambda) / dx
+ *                  - d^2(lambda) / dy^2 - 1.0
+ * with homogeneous Dirichlet boundary conditions and final
+ * conditions:
+ *   lambda(x,y,t=t_final) = 0.0
+ * whose solution at t = 0 represents the sensitivity of
+ *   G = int_0^t_final int_x int _y u(t,x,y) dx dy dt
+ * with respect to the initial conditions of the original problem.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "cvodes.h"
+#include "cvodea.h"
+#include "cvband.h"
+#include "nvector_serial.h"
+#include "sundialstypes.h"
+#include "sundialsmath.h"
+
+/* Problem Constants */
+
+#define XMAX  RCONST(2.0)   /* domain boundaries             */
+#define YMAX  RCONST(1.0)
+#define MX    40            /* mesh dimensions               */
+#define MY    20
+#define NEQ   MX*MY         /* number of equations           */
+#define ATOL  RCONST(1.e-5)        
+#define RTOLB RCONST(1.e-6)        
+#define T0    RCONST(0.0)   /* initial time                  */
+#define T1    RCONST(0.1)   /* first output time             */
+#define DTOUT RCONST(0.1)   /* output time increment         */
+#define NOUT  10            /* number of output times        */
+#define TOUT  RCONST(1.0)   /* final time                    */
+#define NSTEP 50            /* check point saved every NSTEP */
+
+#define ZERO  RCONST(0.0)
+#define ONE   RCONST(1.0)
+#define TWO   RCONST(2.0)
+
+/* User-defined vector access macro IJth */
+
+/* IJth is defined in order to isolate the translation from the
+   mathematical 2-dimensional structure of the dependent variable vector
+   to the underlying 1-dimensional storage. 
+   IJth(vdata,i,j) references the element in the vdata array for
+   u at mesh point (i,j), where 1 <= i <= MX, 1 <= j <= MY.
+   The vdata array is obtained via the macro call vdata = N_VDATA(v),
+   where v is an N_Vector. 
+   The variables are ordered by the y index j, then by the x index i. */
+
+#define IJth(vdata,i,j) (vdata[(j-1) + (i-1)*MY])
+
+/* Type : UserData 
+   contains grid constants */
+
+typedef struct {
+  realtype dx, dy, hdcoef, hacoef, vdcoef;
+} *UserData;
+
+/* Prototypes of user-supplied functions */
+
+static void f(realtype t, N_Vector u, N_Vector udot, void *f_data);
+
+static void Jac(long int N, long int mu, long int ml, BandMat J,
+                realtype t, N_Vector u, N_Vector fu, void *jac_data,
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3); 
+
+static void fB(realtype tB, N_Vector u, N_Vector uB, N_Vector uBdot, void *f_dataB);
+
+static void JacB(long int NB, long int muB, long int mlB, BandMat JB,
+                 realtype tB, N_Vector u, 
+                 N_Vector uB, N_Vector fuB, void *jac_dataB,
+                 N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B); 
+
+/* Prototypes of private functions */
+
+static void SetIC(N_Vector u, UserData data);
+static void PrintOutput(N_Vector uB, UserData data);
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/*
+ *--------------------------------------------------------------------
+ * MAIN PROGRAM
+ *--------------------------------------------------------------------
+ */
+
+int main(int argc, char *argv[])
+{
+  UserData data;
+
+  void *cvadj_mem;
+  void *cvode_mem;
+
+  realtype dx, dy, reltol, abstol, t;
+  N_Vector u;
+
+  realtype reltolB, abstolB;
+  N_Vector uB;
+  
+  int flag, ncheck;
+
+  data = NULL;
+  cvadj_mem = cvode_mem = NULL;
+  u = uB = NULL;
+
+  /* Allocate and initialize user data memory */
+
+  data = (UserData) malloc(sizeof *data);
+  if(check_flag((void *)data, "malloc", 2)) return(1);
+
+  dx = data->dx = XMAX/(MX+1);
+  dy = data->dy = YMAX/(MY+1);
+  data->hdcoef = ONE/(dx*dx);
+  data->hacoef = RCONST(1.5)/(TWO*dx);
+  data->vdcoef = ONE/(dy*dy);
+
+  /* Set the tolerances for the forward integration */
+  reltol = ZERO;
+  abstol = ATOL;
+
+  /* Allocate u vector */
+  u = N_VNew_Serial(NEQ);
+  if(check_flag((void *)u, "N_VNew", 0)) return(1);
+
+  /* Initialize u vector */
+  SetIC(u, data);
+
+  /* Create and allocate CVODES memory for forward run */
+
+  printf("\nCreate and allocate CVODES memory for forward runs\n");
+
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  flag = CVodeSetFdata(cvode_mem, data);
+  if(check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+
+  flag = CVodeMalloc(cvode_mem, f, T0, u, CV_SS, reltol, &abstol);
+  if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  /* Call CVBand with  bandwidths ml = mu = MY, */
+
+  flag = CVBand(cvode_mem, NEQ, MY, MY);
+  if(check_flag(&flag, "CVBand", 1)) return(1);
+
+  flag = CVBandSetJacFn(cvode_mem, Jac, data);
+  if(check_flag(&flag, "CVBandSetJacFn", 1)) return(1);
+
+  /* Allocate global memory */
+
+  printf("\nAllocate global memory\n");
+
+  cvadj_mem = CVadjMalloc(cvode_mem, NSTEP);
+  if(check_flag((void *)cvadj_mem, "CVadjMalloc", 0)) return(1);
+
+  /* Perform forward run */
+  printf("\nForward integration\n");
+  flag = CVodeF(cvadj_mem, TOUT, u, &t, CV_NORMAL, &ncheck);
+  if(check_flag(&flag, "CVodeF", 1)) return(1);
+
+  /* Set the tolerances for the backward integration */
+  reltolB = RTOLB;
+  abstolB = ATOL;
+
+  /* Allocate uB */
+  uB = N_VNew_Serial(NEQ);
+  if(check_flag((void *)uB, "N_VNew", 0)) return(1);
+  /* Initialize uB = 0 */
+  N_VConst(ZERO, uB);
+
+  /* Create and allocate CVODES memory for backward run */
+
+  printf("\nCreate and allocate CVODES memory for backward run\n");
+
+  flag = CVodeCreateB(cvadj_mem, CV_BDF, CV_NEWTON);
+  if(check_flag(&flag, "CVodeCreateB", 1)) return(1);
+
+  flag = CVodeSetFdataB(cvadj_mem, data);
+  if(check_flag(&flag, "CVodeSetFdataB", 1)) return(1);
+
+  flag = CVodeMallocB(cvadj_mem, fB, TOUT, uB, CV_SS, reltolB, &abstolB);
+  if(check_flag(&flag, "CVodeMallocB", 1)) return(1);
+
+  flag = CVBandB(cvadj_mem, NEQ, MY, MY);
+  if(check_flag(&flag, "CVBandB", 1)) return(1);
+  
+  flag = CVBandSetJacFnB(cvadj_mem, JacB, data);
+  if(check_flag(&flag, "CVBandSetJacFnB", 1)) return(1);
+
+  /* Perform backward integration */
+  printf("\nBackward integration\n");
+  flag = CVodeB(cvadj_mem, T0, uB, &t, CV_NORMAL);
+  if(check_flag(&flag, "CVodeB", 1)) return(1);
+
+  PrintOutput(uB, data);
+
+  N_VDestroy_Serial(u);  /* Free the u vector */
+  N_VDestroy_Serial(uB); /* Free the uB vector */
+  CVodeFree(cvode_mem);  /* Free the CVODE problem memory */
+  free(data);            /* Free the user data */
+
+  return(0);
+}
+
+/*
+ *--------------------------------------------------------------------
+ * FUNCTIONS CALLED BY CVODES
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * f routine. right-hand side of forward ODE.
+ */
+
+static void f(realtype t, N_Vector u, N_Vector udot, void *f_data)
+{
+  realtype uij, udn, uup, ult, urt, hordc, horac, verdc, hdiff, hadv, vdiff;
+  realtype *udata, *dudata;
+  int i, j;
+  UserData data;
+
+  udata = NV_DATA_S(u);
+  dudata = NV_DATA_S(udot);
+
+  /* Extract needed constants from data */
+
+  data = (UserData) f_data;
+  hordc = data->hdcoef;
+  horac = data->hacoef;
+  verdc = data->vdcoef;
+
+  /* Loop over all grid points. */
+
+  for (j=1; j <= MY; j++) {
+
+    for (i=1; i <= MX; i++) {
+
+      /* Extract u at x_i, y_j and four neighboring points */
+
+      uij = IJth(udata, i, j);
+      udn = (j == 1)  ? ZERO : IJth(udata, i, j-1);
+      uup = (j == MY) ? ZERO : IJth(udata, i, j+1);
+      ult = (i == 1)  ? ZERO : IJth(udata, i-1, j);
+      urt = (i == MX) ? ZERO : IJth(udata, i+1, j);
+
+      /* Set diffusion and advection terms and load into udot */
+
+      hdiff = hordc*(ult - TWO*uij + urt);
+      hadv = horac*(urt - ult);
+      vdiff = verdc*(uup - TWO*uij + udn);
+      IJth(dudata, i, j) = hdiff + hadv + vdiff;
+    }
+  }
+}
+
+/*
+ * Jac function. Jacobian of forward ODE.
+ */
+
+static void Jac(long int N, long int mu, long int ml, BandMat J,
+                realtype t, N_Vector u, N_Vector fu, void *jac_data,
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  long int i, j, k;
+  realtype *kthCol, hordc, horac, verdc;
+  UserData data;
+
+  /*
+    The components of f = udot that depend on u(i,j) are
+    f(i,j), f(i-1,j), f(i+1,j), f(i,j-1), f(i,j+1), with
+      df(i,j)/du(i,j) = -2 (1/dx^2 + 1/dy^2)
+      df(i-1,j)/du(i,j) = 1/dx^2 + .25/dx  (if i > 1)
+      df(i+1,j)/du(i,j) = 1/dx^2 - .25/dx  (if i < MX)
+      df(i,j-1)/du(i,j) = 1/dy^2           (if j > 1)
+      df(i,j+1)/du(i,j) = 1/dy^2           (if j < MY)
+  */
+
+  data = (UserData) jac_data;
+  hordc = data->hdcoef;
+  horac = data->hacoef;
+  verdc = data->vdcoef;
+
+  for (j=1; j <= MY; j++) {
+    for (i=1; i <= MX; i++) {
+      k = j-1 + (i-1)*MY;
+      kthCol = BAND_COL(J,k);
+
+      /* set the kth column of J */
+
+      BAND_COL_ELEM(kthCol,k,k) = -TWO*(verdc+hordc);
+      if (i != 1)  BAND_COL_ELEM(kthCol,k-MY,k) = hordc + horac;
+      if (i != MX) BAND_COL_ELEM(kthCol,k+MY,k) = hordc - horac;
+      if (j != 1)  BAND_COL_ELEM(kthCol,k-1,k)  = verdc;
+      if (j != MY) BAND_COL_ELEM(kthCol,k+1,k)  = verdc;
+    }
+  }
+}
+
+/*
+ * fB function. Right-hand side of backward ODE.
+ */
+
+static void fB(realtype tB, N_Vector u, N_Vector uB, N_Vector uBdot, 
+               void *f_dataB)
+{
+  UserData data;
+  realtype *uBdata, *duBdata;
+  realtype hordc, horac, verdc;
+  realtype uBij, uBdn, uBup, uBlt, uBrt;
+  realtype hdiffB, hadvB, vdiffB;
+  int i, j;
+
+  uBdata = NV_DATA_S(uB);
+  duBdata = NV_DATA_S(uBdot);
+
+  /* Extract needed constants from data */
+
+  data = (UserData) f_dataB;
+  hordc = data->hdcoef;
+  horac = data->hacoef;
+  verdc = data->vdcoef;
+
+  /* Loop over all grid points. */
+
+  for (j=1; j <= MY; j++) {
+
+    for (i=1; i <= MX; i++) {
+
+      /* Extract u at x_i, y_j and four neighboring points */
+
+      uBij = IJth(uBdata, i, j);
+      uBdn = (j == 1)  ? ZERO : IJth(uBdata, i, j-1);
+      uBup = (j == MY) ? ZERO : IJth(uBdata, i, j+1);
+      uBlt = (i == 1)  ? ZERO : IJth(uBdata, i-1, j);
+      uBrt = (i == MX) ? ZERO : IJth(uBdata, i+1, j);
+
+      /* Set diffusion and advection terms and load into udot */
+
+      hdiffB = hordc*(- uBlt + TWO*uBij - uBrt);
+      hadvB  = horac*(uBrt - uBlt);
+      vdiffB = verdc*(- uBup + TWO*uBij - uBdn);
+      IJth(duBdata, i, j) = hdiffB + hadvB + vdiffB - ONE;
+    }
+  }
+}
+
+/*
+ * JacB function. Jacobian of backward ODE
+ */
+
+static void JacB(long int NB, long int muB, long int mlB, BandMat JB,
+                 realtype tB, N_Vector u, 
+                 N_Vector uB, N_Vector fuB, void *jac_dataB,
+                 N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B)
+{
+  long int i, j, k;
+  realtype *kthCol, hordc, horac, verdc;
+  UserData data;
+
+  /* The Jacobian of the adjoint system is: JB = -J^T */
+
+  data = (UserData) jac_dataB;
+  hordc = data->hdcoef;
+  horac = data->hacoef;
+  verdc = data->vdcoef;
+
+  for (j=1; j <= MY; j++) {
+    for (i=1; i <= MX; i++) {
+      k = j-1 + (i-1)*MY;
+      kthCol = BAND_COL(JB,k);
+
+      /* set the kth column of J */
+
+      BAND_COL_ELEM(kthCol,k,k) = TWO*(verdc+hordc);
+      if (i != 1)  BAND_COL_ELEM(kthCol,k-MY,k) = - hordc + horac;
+      if (i != MX) BAND_COL_ELEM(kthCol,k+MY,k) = - hordc - horac;
+      if (j != 1)  BAND_COL_ELEM(kthCol,k-1,k)  = - verdc;
+      if (j != MY) BAND_COL_ELEM(kthCol,k+1,k)  = - verdc;
+    }
+  }
+}
+
+/*
+ *--------------------------------------------------------------------
+ * PRIVATE FUNCTIONS
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * Set initial conditions in u vector 
+ */
+
+static void SetIC(N_Vector u, UserData data)
+{
+  int i, j;
+  realtype x, y, dx, dy;
+  realtype *udata;
+
+  /* Extract needed constants from data */
+
+  dx = data->dx;
+  dy = data->dy;
+
+  /* Set pointer to data array in vector u. */
+
+  udata = NV_DATA_S(u);
+
+  /* Load initial profile into u vector */
+
+  for (j=1; j <= MY; j++) {
+    y = j*dy;
+    for (i=1; i <= MX; i++) {
+      x = i*dx;
+      IJth(udata,i,j) = x*(XMAX - x)*y*(YMAX - y)*exp(RCONST(5.0)*x*y);
+    }
+  }  
+
+}
+
+/*
+ * Print results after backward integration 
+ */
+
+static void PrintOutput(N_Vector uB, UserData data)
+{
+  realtype *uBdata, uBij, uBmax, x, y, dx, dy;
+  int i, j;
+
+  dx = data->dx;
+  dy = data->dy;
+
+  uBdata = NV_DATA_S(uB);
+
+  uBmax = ZERO;
+  for(j=1; j<= MY; j++) {
+    for(i=1; i<=MX; i++) {
+      uBij = IJth(uBdata, i, j);
+      if (ABS(uBij) > uBmax) {
+        uBmax = uBij;
+        x = i*dx;
+        y = j*dy;
+      }
+    }
+  }
+
+  printf("\nMaximum sensitivity\n");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("  lambda max = %Le\n", uBmax);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("  lambda max = %le\n", uBmax);
+#else
+  printf("  lambda max = %e\n", uBmax);
+#endif
+  printf("at\n");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("  x = %Le\n  y = %Le\n", x, y);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("  x = %le\n  y = %le\n", x, y);
+#else
+  printf("  x = %e\n  y = %e\n", x, y);
+#endif
+
+}
+
+/* 
+ * Check function return value.
+ *    opt == 0 means SUNDIALS function allocates memory so check if
+ *             returned NULL pointer
+ *    opt == 1 means SUNDIALS function returns a flag so check if
+ *             flag >= 0
+ *    opt == 2 means function allocates memory so check if returned
+ *             NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+	      funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvabx.out b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvabx.out
new file mode 100644
index 0000000..097c1c9
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvabx.out
@@ -0,0 +1,15 @@
+Create and allocate CVODES memory for forward runs
+ 
+Allocate global memory
+ 
+Forward integration
+ 
+Create and allocate CVODES memory for backward run
+ 
+Backward integration
+ 
+Maximum sensitivity
+  lambda max = 1.128855e-01
+at
+  x = 1.170732e+00
+  y = 4.761905e-01
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvadx.c b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvadx.c
new file mode 100644
index 0000000..d61efec
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvadx.c
@@ -0,0 +1,584 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:34:45 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * Adjoint sensitivity example problem.
+ * The following is a simple example problem, with the coding
+ * needed for its solution by CVODES. The problem is from chemical
+ * kinetics, and consists of the following three rate equations.
+ *    dy1/dt = -p1*y1 + p2*y2*y3
+ *    dy2/dt =  p1*y1 - p2*y2*y3 - p3*(y2)^2
+ *    dy3/dt =  p3*(y2)^2
+ * on the interval from t = 0.0 to t = 4.e10, with initial
+ * conditions: y1 = 1.0, y2 = y3 = 0. The reaction rates are:
+ * p1=0.04, p2=1e4, and p3=3e7. The problem is stiff.
+ * This program solves the problem with the BDF method, Newton
+ * iteration with the CVODE dense linear solver, and a user-supplied
+ * Jacobian routine.
+ * It uses a scalar relative tolerance and a vector absolute
+ * tolerance.
+ * Output is printed in decades from t = .4 to t = 4.e10.
+ * Run statistics (optional outputs) are printed at the end.
+ * 
+ * Optionally, CVODES can compute sensitivities with respect to
+ * the problem parameters p1, p2, and p3 of the following quantity:
+ *   G = int_t0^t1 g(t,p,y) dt
+ * where
+ *   g(t,p,y) = y3
+ *        
+ * The gradient dG/dp is obtained as:
+ *   dG/dp = int_t0^t1 (g_p - lambda^T f_p ) dt - lambda^T(t0)*y0_p
+ *         = - xi^T(t0) - lambda^T(t0)*y0_p
+ * where lambda and xi are solutions of:
+ *   d(lambda)/dt = - (f_y)^T * lambda - (g_y)^T
+ *   lambda(t1) = 0
+ * and
+ *   d(xi)/dt = - (f_p)^T * lambda + (g_p)^T
+ *   xi(t1) = 0
+ * 
+ * During the backward integration, CVODES also evaluates G as
+ *   G = - phi(t0)
+ * where
+ *   d(phi)/dt = g(t,y,p)
+ *   phi(t1) = 0
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "cvodes.h"
+#include "cvodea.h"
+#include "cvdense.h"
+#include "nvector_serial.h"
+#include "sundialstypes.h"
+#include "sundialsmath.h"
+
+/* Accessor macros */
+
+#define Ith(v,i)    NV_Ith_S(v,i-1)       /* i-th vector component i= 1..NEQ */
+#define IJth(A,i,j) DENSE_ELEM(A,i-1,j-1) /* (i,j)-th matrix component i,j = 1..NEQ */
+
+/* Problem Constants */
+
+#define NEQ      3             /* number of equations                  */
+
+#define RTOL     RCONST(1e-6)  /* scalar relative tolerance            */
+
+#define ATOL1    RCONST(1e-8)  /* vector absolute tolerance components */
+#define ATOL2    RCONST(1e-14)
+#define ATOL3    RCONST(1e-6)
+
+#define ATOLl    RCONST(1e-5)  /* absolute tolerance for adjoint vars. */
+#define ATOLq    RCONST(1e-6)  /* absolute tolerance for quadratures   */
+
+#define T0       RCONST(0.0)   /* initial time                         */
+#define TOUT     RCONST(4e7)   /* final time                           */
+
+#define TB1      RCONST(4e7)   /* starting point for adjoint problem   */
+#define TB2      RCONST(50.0)  /* starting point for adjoint problem   */
+
+#define STEPS    150           /* number of steps between check points */
+
+#define NP       3             /* number of problem parameters         */
+
+#define ZERO     RCONST(0.0)
+
+
+/* Type : UserData */
+
+typedef struct {
+  realtype p[3];
+} *UserData;
+
+/* Prototypes of user-supplied functions */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+static void Jac(long int N, DenseMat J, realtype t,
+                N_Vector y, N_Vector fy, void *jac_data, 
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+static void fQ(realtype t, N_Vector y, N_Vector qdot, void *fQ_data);
+static int ewt(N_Vector y, N_Vector w, void *e_data);
+
+static void fB(realtype t, N_Vector y, 
+               N_Vector yB, N_Vector yBdot, void *f_dataB);
+static void JacB(long int NB, DenseMat JB, realtype t,
+                 N_Vector y, N_Vector yB, N_Vector fyB, void *jac_dataB,
+                 N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B);
+static void fQB(realtype t, N_Vector y, N_Vector yB, 
+                N_Vector qBdot, void *fQ_dataB);
+
+
+/* Prototypes of private functions */
+
+static void PrintOutput(N_Vector yB, N_Vector qB);
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/*
+ *--------------------------------------------------------------------
+ * MAIN PROGRAM
+ *--------------------------------------------------------------------
+ */
+
+int main(int argc, char *argv[])
+{
+  UserData data;
+
+  void *cvadj_mem;
+  void *cvode_mem;
+
+  realtype reltolQ, abstolQ;
+  N_Vector y, q;
+
+  realtype reltolB, abstolB, abstolQB;
+  N_Vector yB, qB;
+
+  realtype time;
+  int flag, ncheck;
+
+  data = NULL;
+  cvadj_mem = cvode_mem = NULL;
+  y = yB = qB = NULL;
+
+  /* Print problem description */
+  printf("\n\n Adjoint Sensitivity Example for Chemical Kinetics\n");
+  printf(" -------------------------------------------------\n\n");
+  printf("ODE: dy1/dt = -p1*y1 + p2*y2*y3\n");
+  printf("     dy2/dt =  p1*y1 - p2*y2*y3 - p3*(y2)^2\n");
+  printf("     dy3/dt =  p3*(y2)^2\n\n");
+  printf("Find dG/dp for\n");
+  printf("     G = int_t0^tB0 g(t,p,y) dt\n");
+  printf("     g(t,p,y) = y3\n\n\n");
+
+
+  /* User data structure */
+  data = (UserData) malloc(sizeof *data);
+  if (check_flag((void *)data, "malloc", 2)) return(1);
+  data->p[0] = RCONST(0.04);
+  data->p[1] = RCONST(1.0e4);
+  data->p[2] = RCONST(3.0e7);
+
+  /* Initialize y */
+  y = N_VNew_Serial(NEQ);
+  if (check_flag((void *)y, "N_VNew_Serial", 0)) return(1);
+  Ith(y,1) = RCONST(1.0);
+  Ith(y,2) = ZERO;
+  Ith(y,3) = ZERO;
+
+  /* Initialize q */
+  q = N_VNew_Serial(1);
+  if (check_flag((void *)q, "N_VNew_Serial", 0)) return(1);
+  Ith(q,1) = ZERO;
+
+  /* Set the scalar realtive and absolute tolerances reltolQ and abstolQ */
+  reltolQ = RTOL;
+  abstolQ = ATOLq;
+
+  /* Create and allocate CVODES memory for forward run */
+  printf("Create and allocate CVODES memory for forward runs\n");
+
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if (check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  flag = CVodeMalloc(cvode_mem, f, T0, y, CV_WF, 0.0, NULL);
+  if (check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  flag = CVodeSetEwtFn(cvode_mem, ewt, NULL);
+  if (check_flag(&flag, "CVodeSetEwtFn", 1)) return(1);
+
+  flag = CVodeSetFdata(cvode_mem, data);
+  if (check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+
+  flag = CVDense(cvode_mem, NEQ);
+  if (check_flag(&flag, "CVDense", 1)) return(1);
+
+  flag = CVDenseSetJacFn(cvode_mem, Jac, data);
+  if (check_flag(&flag, "CVDenseSetJacFn", 1)) return(1);
+
+  flag = CVodeQuadMalloc(cvode_mem, fQ, q);
+  if (check_flag(&flag, "CVodeQuadMalloc", 1)) return(1);
+
+  flag = CVodeSetQuadFdata(cvode_mem, data);
+  if (check_flag(&flag, "CVodeSetQuadFdata", 1)) return(1);
+
+  flag = CVodeSetQuadErrCon(cvode_mem, TRUE, CV_SS, reltolQ, &abstolQ);
+  if (check_flag(&flag, "CVodeSetQuadErrCon", 1)) return(1);
+
+  /* Allocate global memory */
+  printf("Allocate global memory\n");
+
+  cvadj_mem = CVadjMalloc(cvode_mem, STEPS);
+  if (check_flag((void *)cvadj_mem, "CVadjMalloc", 0)) return(1);
+
+  /* Perform forward run */
+  printf("Forward integration ... ");
+  
+  flag = CVodeF(cvadj_mem, TOUT, y, &time, CV_NORMAL, &ncheck);
+  if (check_flag(&flag, "CVodeF", 1)) return(1);
+
+  flag = CVodeGetQuad(cvode_mem, TOUT, q);
+  if (check_flag(&flag, "CVodeGetQuad", 1)) return(1);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("done. ncheck = %d   G: %12.4Le \n",ncheck, Ith(q,1));
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("done. ncheck = %d   G: %12.4le \n",ncheck, Ith(q,1));
+#else
+  printf("done. ncheck = %d   G: %12.4e \n",ncheck, Ith(q,1));
+#endif
+
+  /* Initialize yB */
+  yB = N_VNew_Serial(NEQ);
+  if (check_flag((void *)yB, "N_VNew_Serial", 0)) return(1);
+  Ith(yB,1) = ZERO;
+  Ith(yB,2) = ZERO;
+  Ith(yB,3) = ZERO;
+
+  /* Initialize qB */
+  qB = N_VNew_Serial(NP);
+  if (check_flag((void *)qB, "N_VNew", 0)) return(1);
+  Ith(qB,1) = ZERO;
+  Ith(qB,2) = ZERO;
+  Ith(qB,3) = ZERO;
+
+  /* Set the scalar relative tolerance reltolB */
+  reltolB = RTOL;               
+
+  /* Set the scalar absolute tolerance abstolB */
+  abstolB = ATOLl;
+
+  /* Set the scalar absolute tolerance abstolQB */
+  abstolQB = ATOLq;
+
+  /* Create and allocate CVODES memory for backward run */
+  printf("\nCreate and allocate CVODES memory for backward run\n");
+
+  flag = CVodeCreateB(cvadj_mem, CV_BDF, CV_NEWTON);
+  if (check_flag(&flag, "CVodeCreateB", 1)) return(1);
+
+  flag = CVodeMallocB(cvadj_mem, fB, TB1, yB, CV_SS, reltolB, &abstolB);
+  if (check_flag(&flag, "CVodeMallocB", 1)) return(1);
+
+  flag = CVodeSetFdataB(cvadj_mem, data);
+  if (check_flag(&flag, "CVodeSetFdataB", 1)) return(1);
+
+  flag = CVDenseB(cvadj_mem, NEQ);
+  if (check_flag(&flag, "CVDenseB", 1)) return(1);
+
+  flag = CVDenseSetJacFnB(cvadj_mem, JacB, data);
+  if (check_flag(&flag, "CVDenseSetJacFnB", 1)) return(1);
+
+  flag = CVodeQuadMallocB(cvadj_mem, fQB, qB);
+  if (check_flag(&flag, "CVodeQuadMallocB", 1)) return(1);
+
+  flag = CVodeSetQuadFdataB(cvadj_mem, data);
+  if (check_flag(&flag, "CVodeSetQuadFdataB", 1)) return(1);
+
+  flag = CVodeSetQuadErrConB(cvadj_mem, TRUE, CV_SS, reltolB, &abstolQB);
+  if (check_flag(&flag, "CVodeSetQuadErrConB", 1)) return(1);
+
+  /* Backward Integration */
+  printf("Integrate backwards\n");
+
+  flag = CVodeB(cvadj_mem, T0, yB, &time, CV_NORMAL);
+  if (check_flag(&flag, "CVodeB", 1)) return(1);
+
+  flag = CVodeGetQuadB(cvadj_mem, qB);
+  if (check_flag(&flag, "CVodeGetQuadB", 1)) return(1);
+
+  PrintOutput(yB, qB);
+
+  /* Reinitialize backward phase (new tB0) */
+  Ith(yB,1) = ZERO;
+  Ith(yB,2) = ZERO;
+  Ith(yB,3) = ZERO;
+
+  Ith(qB,1) = ZERO;
+  Ith(qB,2) = ZERO;
+  Ith(qB,3) = ZERO;
+
+  printf("Re-initialize CVODES memory for backward run\n");
+
+  flag = CVodeReInitB(cvadj_mem, fB, TB2, yB, CV_SS, reltolB, &abstolB);
+  if (check_flag(&flag, "CVodeReInitB", 1)) return(1);
+
+  flag = CVodeQuadReInitB(cvadj_mem, fQB, qB); 
+  if (check_flag(&flag, "CVodeQuadReInitB", 1)) return(1);
+
+  /* Backward Integration */
+  printf("Integrate backwards\n");
+
+  flag = CVodeB(cvadj_mem, T0, yB, &time, CV_NORMAL);
+  if (check_flag(&flag, "CVodeB", 1)) return(1);
+
+  flag = CVodeGetQuadB(cvadj_mem, qB);
+  if (check_flag(&flag, "CVodeGetQuadB", 1)) return(1);
+
+  PrintOutput(yB, qB);
+
+  /* Free memory */
+  printf("Free memory\n\n");
+
+  CVodeFree(cvode_mem);
+  N_VDestroy_Serial(y); 
+  N_VDestroy_Serial(q);
+  N_VDestroy_Serial(yB);
+  N_VDestroy_Serial(qB);
+  CVadjFree(cvadj_mem);
+  free(data);
+
+  return(0);
+
+}
+
+/*
+ *--------------------------------------------------------------------
+ * FUNCTIONS CALLED BY CVODES
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * f routine. Compute f(t,y). 
+*/
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data)
+{
+  realtype y1, y2, y3, yd1, yd3;
+  UserData data;
+  realtype p1, p2, p3;
+
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+  data = (UserData) f_data;
+  p1 = data->p[0]; p2 = data->p[1]; p3 = data->p[2];
+
+  yd1 = Ith(ydot,1) = -p1*y1 + p2*y2*y3;
+  yd3 = Ith(ydot,3) = p3*y2*y2;
+        Ith(ydot,2) = -yd1 - yd3;
+}
+
+/* 
+ * Jacobian routine. Compute J(t,y). 
+*/
+
+static void Jac(long int N, DenseMat J, realtype t,
+                N_Vector y, N_Vector fy, void *jac_data, 
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  realtype y1, y2, y3;
+  UserData data;
+  realtype p1, p2, p3;
+ 
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+  data = (UserData) jac_data;
+  p1 = data->p[0]; p2 = data->p[1]; p3 = data->p[2];
+ 
+  IJth(J,1,1) = -p1;  IJth(J,1,2) = p2*y3;          IJth(J,1,3) = p2*y2;
+  IJth(J,2,1) =  p1;  IJth(J,2,2) = -p2*y3-2*p3*y2; IJth(J,2,3) = -p2*y2;
+                      IJth(J,3,2) = 2*p3*y2;
+}
+
+/* 
+ * fQ routine. Compute fQ(t,y). 
+*/
+
+static void fQ(realtype t, N_Vector y, N_Vector qdot, void *fQ_data)
+{
+  Ith(qdot,1) = Ith(y,3);  
+}
+ 
+/*
+ * EwtSet function. Computes the error weights at the current solution.
+ */
+
+static int ewt(N_Vector y, N_Vector w, void *e_data)
+{
+  int i;
+  realtype yy, ww, rtol, atol[3];
+
+  rtol    = RTOL;
+  atol[0] = ATOL1;
+  atol[1] = ATOL2;
+  atol[2] = ATOL3;
+
+  for (i=1; i<=3; i++) {
+    yy = Ith(y,i);
+    ww = rtol * ABS(yy) + atol[i-1];  
+    if (ww <= 0.0) return (-1);
+    Ith(w,i) = 1.0/ww;
+  }
+
+  return(0);
+}
+
+/* 
+ * fB routine. Compute fB(t,y,yB). 
+*/
+
+static void fB(realtype t, N_Vector y, N_Vector yB, N_Vector yBdot, void *f_dataB)
+{
+  UserData data;
+  realtype y1, y2, y3;
+  realtype p1, p2, p3;
+  realtype l1, l2, l3;
+  realtype l21, l32, y23;
+  
+  data = (UserData) f_dataB;
+
+  /* The p vector */
+  p1 = data->p[0]; p2 = data->p[1]; p3 = data->p[2];
+
+  /* The y vector */
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+  
+  /* The lambda vector */
+  l1 = Ith(yB,1); l2 = Ith(yB,2); l3 = Ith(yB,3);
+
+  /* Temporary variables */
+  l21 = l2-l1;
+  l32 = l3-l2;
+  y23 = y2*y3;
+
+  /* Load yBdot */
+  Ith(yBdot,1) = - p1*l21;
+  Ith(yBdot,2) = p2*y3*l21 - RCONST(2.0)*p3*y2*l32;
+  Ith(yBdot,3) = p2*y2*l21 - RCONST(1.0);
+}
+
+/* 
+ * JacB routine. Compute JB(t,y,yB). 
+*/
+
+static void JacB(long int NB, DenseMat JB, realtype t,
+                 N_Vector y, N_Vector yB, N_Vector fyB, void *jac_dataB,
+                 N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B)
+{
+  UserData data;
+  realtype y1, y2, y3;
+  realtype p1, p2, p3;
+  
+  data = (UserData) jac_dataB;
+
+  /* The p vector */
+  p1 = data->p[0]; p2 = data->p[1]; p3 = data->p[2];
+
+  /* The y vector */
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+
+  /* Load JB */
+  IJth(JB,1,1) = p1;     IJth(JB,1,2) = -p1; 
+  IJth(JB,2,1) = -p2*y3; IJth(JB,2,2) = p2*y3+2.0*p3*y2; IJth(JB,2,3) = RCONST(-2.0)*p3*y2;
+  IJth(JB,3,1) = -p2*y2; IJth(JB,3,2) = p2*y2;
+}
+
+/*
+ * fQB routine. Compute integrand for quadratures 
+*/
+
+static void fQB(realtype t, N_Vector y, N_Vector yB, 
+                N_Vector qBdot, void *fQ_dataB)
+{
+  UserData data;
+  realtype y1, y2, y3;
+  realtype p1, p2, p3;
+  realtype l1, l2, l3;
+  realtype l21, l32, y23;
+
+  data = (UserData) fQ_dataB;
+
+  /* The p vector */
+  p1 = data->p[0]; p2 = data->p[1]; p3 = data->p[2];
+
+  /* The y vector */
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+  
+  /* The lambda vector */
+  l1 = Ith(yB,1); l2 = Ith(yB,2); l3 = Ith(yB,3);
+
+  /* Temporary variables */
+  l21 = l2-l1;
+  l32 = l3-l2;
+  y23 = y2*y3;
+
+  Ith(qBdot,1) = y1*l21;
+  Ith(qBdot,2) = - y23*l21;
+  Ith(qBdot,3) = y2*y2*l32;
+}
+
+/*
+ *--------------------------------------------------------------------
+ * PRIVATE FUNCTIONS
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * Print results after backward integration
+ */
+
+static void PrintOutput(N_Vector yB, N_Vector qB)
+{
+  printf("--------------------------------------------------------\n");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("tB0:        %12.4Le\n",TB1);
+  printf("dG/dp:      %12.4Le %12.4Le %12.4Le\n", 
+         -Ith(qB,1), -Ith(qB,2), -Ith(qB,3));
+  printf("lambda(t0): %12.4Le %12.4Le %12.4Le\n", 
+         Ith(yB,1), Ith(yB,2), Ith(yB,3));
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("tB0:        %12.4le\n",TB1);
+  printf("dG/dp:      %12.4le %12.4le %12.4le\n", 
+         -Ith(qB,1), -Ith(qB,2), -Ith(qB,3));
+  printf("lambda(t0): %12.4le %12.4le %12.4le\n", 
+         Ith(yB,1), Ith(yB,2), Ith(yB,3));
+#else
+  printf("tB0:        %12.4e\n",TB1);
+  printf("dG/dp:      %12.4e %12.4e %12.4e\n", 
+         -Ith(qB,1), -Ith(qB,2), -Ith(qB,3));
+  printf("lambda(t0): %12.4e %12.4e %12.4e\n", 
+         Ith(yB,1), Ith(yB,2), Ith(yB,3));
+#endif
+  printf("--------------------------------------------------------\n\n");
+}
+
+/* 
+ * Check function return value.
+ *    opt == 0 means SUNDIALS function allocates memory so check if
+ *             returned NULL pointer
+ *    opt == 1 means SUNDIALS function returns a flag so check if
+ *             flag >= 0
+ *    opt == 2 means function allocates memory so check if returned
+ *             NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+	      funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvadx.out b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvadx.out
new file mode 100644
index 0000000..f7f8e4f
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvadx.out
@@ -0,0 +1,33 @@
+ Adjoint Sensitivity Example for Chemical Kinetics
+ -------------------------------------------------
+ 
+ODE: dy1/dt = -p1*y1 + p2*y2*y3
+     dy2/dt =  p1*y1 - p2*y2*y3 - p3*(y2)^2
+     dy3/dt =  p3*(y2)^2
+ 
+Find dG/dp for
+     G = int_t0^tB0 g(t,p,y) dt
+     g(t,p,y) = y3
+ 
+ 
+Create and allocate CVODES memory for forward runs
+Allocate global memory
+Forward integration ... done. ncheck = 5   G:   3.9983e+07
+ 
+Create and allocate CVODES memory for backward run
+Integrate backwards
+--------------------------------------------------------
+tB0:          4.0000e+07
+dG/dp:        7.6843e+05  -3.0691e+00   5.1150e-04
+lambda(t0):   3.9967e+07   3.9967e+07   3.9967e+07
+--------------------------------------------------------
+ 
+Re-initialize CVODES memory for backward run
+Integrate backwards
+--------------------------------------------------------
+tB0:          4.0000e+07
+dG/dp:        1.7341e+02  -5.0590e-04   8.4320e-08
+lambda(t0):   8.4190e+00   1.6097e+01   1.6097e+01
+--------------------------------------------------------
+ 
+Free memory
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvakx.c b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvakx.c
new file mode 100644
index 0000000..0aef834
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvakx.c
@@ -0,0 +1,1340 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:34:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * This program solves a stiff ODE system that arises from a system
+ * of partial differential equations. The PDE system is a food web
+ * population model, with predator-prey interaction and diffusion on
+ * the unit square in two dimensions. The dependent variable vector
+ * is the following:
+ *
+ *        1   2        ns
+ *  c = (c , c , ..., c  )
+ *
+ * and the PDEs are as follows:
+ *
+ *    i               i      i
+ *  dc /dt  =  d(i)*(c    + c   )  +  f (x,y,c)  (i=1,...,ns)
+ *                    xx     yy        i
+ *
+ * where
+ *
+ *                 i          ns         j
+ *  f (x,y,c)  =  c *(b(i) + sum a(i,j)*c ).
+ *   i                       j=1
+ *
+ * The number of species is ns = 2*np, with the first np being prey
+ * and the last np being predators. The coefficients a(i,j), b(i),
+ * d(i) are:
+ *
+ *  a(i,i) = -a  (all i)
+ *  a(i,j) = -g  (i <= np, j > np)
+ *  a(i,j) =  e  (i > np, j <= np)
+ *  b(i) =  b*(1 + alpha*x*y)  (i <= np)
+ *  b(i) = -b*(1 + alpha*x*y)  (i > np)
+ *  d(i) = Dprey  (i <= np)
+ *  d(i) = Dpred  (i > np)
+ *
+ * The spatial domain is the unit square. The final time is 10.
+ * The boundary conditions are: normal derivative = 0.
+ * A polynomial in x and y is used to set the initial conditions.
+ *
+ * The PDEs are discretized by central differencing on an MX by MY
+ * mesh. The resulting ODE system is stiff.
+ *
+ * The ODE system is solved by CVODES using Newton iteration and
+ * the CVSPGMR linear solver (scaled preconditioned GMRES).
+ *
+ * The preconditioner matrix used is the product of two matrices:
+ * (1) A matrix, only defined implicitly, based on a fixed number
+ * of Gauss-Seidel iterations using the diffusion terms only.
+ * (2) A block-diagonal matrix based on the partial derivatives of
+ * the interaction terms f only, using block-grouping (computing
+ * only a subset of the ns by ns blocks).
+ *
+ * Additionally, CVODES integrates backwards in time the
+ * the semi-discrete form of the adjoint PDE:
+ *   d(lambda)/dt = - D^T ( lambda_xx + lambda_yy )
+ *                  - F_c^T lambda - g_c^T
+ * with homogeneous Neumann boundary conditions and final
+ * conditions are the following:
+ *   lambda(x,y,t=t_final) = 0.0
+ * whose solution at t = 0 represents the sensitivity of
+ *   G = int_0^t_final int_x int _y g(t,c) dx dy dt
+ * with respect to the initial conditions of the original problem.
+ *
+ * In this example,
+ *   g(t,c) = c(ISPEC), with ISPEC defined below.
+ *
+ * During the forward run, CVODES also computes G as
+ *   G = phi(t_final)
+ * where
+ *   d(phi)/dt = int_x int _y g(t,c) dx dy
+ * and the 2-D integral is evaluated with Simpson's rule.
+ * -----------------------------------------------------------------
+ * Reference:  Peter N. Brown and Alan C. Hindmarsh, Reduced Storage
+ * Matrix Methods in Stiff ODE Systems, J. Appl. Math. & Comp., 31
+ * (1989), pp. 40-91.  Also available as Lawrence Livermore National
+ * Laboratory Report UCRL-95088, Rev. 1, June 1987.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "cvodes.h"
+#include "cvodea.h"
+#include "cvspgmr.h"
+#include "nvector_serial.h"
+#include "sundialstypes.h"
+#include "sundialsmath.h"
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+
+/* Problem Specification Constants */
+
+#define AA ONE               /* AA = a */
+#define EE RCONST(1e4)       /* EE = e */
+#define GG RCONST(0.5e-6)    /* GG = g */
+#define BB ONE               /* BB = b */
+#define DPREY ONE    
+#define DPRED RCONST(0.5)
+#define ALPH ONE
+#define NP 3
+#define NS (2*NP)
+
+/* Method Constants */
+
+#define MX   20
+#define MY   20
+#define MXNS (MX*NS)
+#define AX   ONE
+#define AY   ONE
+#define DX   (AX/(realtype)(MX-1))
+#define DY   (AY/(realtype)(MY-1))
+#define MP   NS
+#define MQ   (MX*MY)
+#define MXMP  (MX*MP)
+#define NGX   2
+#define NGY   2
+#define NGRP  (NGX*NGY)
+#define ITMAX 5
+
+/* CVodeMalloc Constants */
+
+#define NEQ   (NS*MX*MY)
+#define T0    RCONST(0.0)
+#define RTOL  RCONST(1e-5)
+#define ATOL  RCONST(1e-5)
+
+/* Output Constants */
+
+#define TOUT RCONST(10.0)
+
+/* Note: The value for species i at mesh point (j,k) is stored in */
+/* component number (i-1) + j*NS + k*NS*MX of an N_Vector,        */
+/* where 1 <= i <= NS, 0 <= j < MX, 0 <= k < MY.                  */
+
+/* Structure for user data */
+
+typedef struct {
+  realtype **P[NGRP];
+  long int *pivot[NGRP];
+  int ns,  mxns, mp, mq, mx, my, ngrp, ngx, ngy, mxmp;
+  int jgx[NGX+1], jgy[NGY+1], jigx[MX], jigy[MY];
+  int jxr[NGX], jyr[NGY];
+  realtype acoef[NS][NS], bcoef[NS], diff[NS];
+  realtype cox[NS], coy[NS], dx, dy, srur;
+  realtype fsave[NEQ];
+  realtype fBsave[NEQ];
+  N_Vector rewt;
+  void *cvadj_mem;
+  void *cvode_memF;
+} *WebData;
+
+/* Adjoint calculation constants */
+/* G = int_t int_x int_y c(ISPEC) dy dx dt */
+
+#define NSTEPS 300 /* check points every NSTEPS steps */
+#define ISPEC  6   /* species # in objective */
+
+/* Prototypes for user-supplied functions */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+
+static int Precond(realtype t, N_Vector c, N_Vector fc,
+                   booleantype jok, booleantype *jcurPtr, 
+                   realtype gamma, void *P_data,
+                   N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3);
+
+static int PSolve(realtype t, N_Vector c, N_Vector fc,
+                  N_Vector r, N_Vector z,
+                  realtype gamma, realtype delta,
+                  int lr, void *P_data, N_Vector vtemp);
+
+static void fB(realtype t, N_Vector c, N_Vector cB, 
+               N_Vector cBdot, void *f_data);
+
+static int PrecondB(realtype t, N_Vector c, 
+                    N_Vector cB, N_Vector fcB, booleantype jok, 
+                    booleantype *jcurPtr, realtype gamma,
+                    void *P_data,
+                    N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3);
+
+static int PSolveB(realtype t, N_Vector c, 
+                   N_Vector cB, N_Vector fcB, 
+                   N_Vector r, N_Vector z,
+                   realtype gamma, realtype delta, 
+                   int lr, void *P_data, N_Vector vtemp);
+
+/* Prototypes for private functions */
+
+static WebData AllocUserData(void);
+static void InitUserData(WebData wdata);
+static void SetGroups(int m, int ng, int jg[], int jig[], int jr[]);
+static void CInit(N_Vector c, WebData wdata);
+static void PrintOutput(N_Vector c, int ns, int mxns, WebData wdata);
+static void FreeUserData(WebData wdata);
+static void WebRates(realtype x, realtype y, realtype t, realtype c[], realtype rate[],
+                     WebData wdata);
+static void WebRatesB(realtype x, realtype y, realtype t, realtype c[], realtype cB[], 
+                      realtype rate[], realtype rateB[], WebData wdata);
+static void fblock (realtype t, realtype cdata[], int jx, int jy, realtype cdotdata[],
+                    WebData wdata);
+static void GSIter(realtype gamma, N_Vector z, N_Vector x, WebData wdata);
+static realtype doubleIntgr(N_Vector c, int i, WebData wdata);
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/* Small Vector Kernels */
+
+static void v_inc_by_prod(realtype u[], realtype v[], realtype w[], int n);
+static void v_sum_prods(realtype u[], realtype p[], realtype q[], realtype v[], realtype w[],
+                        int n);
+static void v_prod(realtype u[], realtype v[], realtype w[], int n);
+static void v_zero(realtype u[], int n);
+
+/*
+ *--------------------------------------------------------------------
+ * MAIN PROGRAM
+ *--------------------------------------------------------------------
+ */
+
+int main(int argc, char *argv[])
+{
+  realtype abstol=ATOL, reltol=RTOL, t;
+  N_Vector c;
+  WebData wdata;
+  void *cvode_mem;
+  int flag;
+
+  void *cvadj_mem;
+  int ncheck;
+  
+  realtype reltolB=RTOL, abstolB=ATOL;
+  N_Vector cB;
+
+  c = NULL;
+  cB = NULL;
+  wdata = NULL;
+  cvode_mem = NULL;
+  cvadj_mem = NULL;
+
+  /* Allocate and initialize user data */
+
+  wdata = AllocUserData();
+  if(check_flag((void *)wdata, "AllocUserData", 2)) return(1);
+  InitUserData(wdata);
+
+  /* Set-up forward problem */
+
+  /* Initializations */
+  c = N_VNew_Serial(NEQ+1);
+  if(check_flag((void *)c, "N_VNew_Serial", 0)) return(1);
+  CInit(c, wdata);
+
+  /* Call CVodeCreate/CVodeMalloc for forward run */
+  printf("\nCreate and allocate CVODE memory for forward run\n");
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+  wdata->cvode_memF = cvode_mem; /* Used in Precond */
+  flag = CVodeSetFdata(cvode_mem, wdata);
+  if(check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+  flag = CVodeMalloc(cvode_mem, f, T0, c, CV_SS, reltol, &abstol);
+  if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+  
+  /* Call CVSpgmr for forward run */
+  flag = CVSpgmr(cvode_mem, PREC_LEFT, 0);
+  if(check_flag(&flag, "CVSpgmr", 1)) return(1);
+  flag = CVSpgmrSetPreconditioner(cvode_mem, Precond, PSolve, wdata);
+  if(check_flag(&flag, "CVSpgmrSetPreconditioner", 1)) return(1);
+
+  /* Set-up adjoint calculations */
+
+  printf("\nAllocate global memory\n");
+  cvadj_mem = CVadjMalloc(cvode_mem, NSTEPS);
+  if(check_flag((void *)cvadj_mem, "CVadjMalloc", 0)) return(1);
+  wdata->cvadj_mem = cvadj_mem;
+
+  /* Perform forward run */
+
+  printf("\nForward integration ... ");
+  flag = CVodeF(cvadj_mem, TOUT, c, &t, CV_NORMAL, &ncheck);
+  if(check_flag(&flag, "CVodeF", 1)) return(1);
+  printf("done (ncheck = %d)\n",ncheck);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("\n   G = int_t int_x int_y c%d(t,x,y) dx dy dt = %Lf \n\n", 
+         ISPEC, NV_DATA_S(c)[NEQ]);
+#else
+  printf("\n   G = int_t int_x int_y c%d(t,x,y) dx dy dt = %f \n\n", 
+         ISPEC, NV_DATA_S(c)[NEQ]);
+#endif
+
+  /* Set-up backward problem */
+
+  /* Allocate cB */
+  cB = N_VNew_Serial(NEQ);
+  if(check_flag((void *)cB, "N_VNew_Serial", 0)) return(1);
+  /* Initialize cB = 0 */
+  N_VConst(ZERO, cB);
+
+  /* Create and allocate CVODES memory for backward run */
+  printf("\nCreate and allocate CVODES memory for backward run\n");
+  flag = CVodeCreateB(cvadj_mem, CV_BDF, CV_NEWTON);
+  if(check_flag(&flag, "CVodeCreateB", 1)) return(1);
+  flag = CVodeSetFdataB(cvadj_mem, wdata);
+  if(check_flag(&flag, "CVodeSetFdataB", 1)) return(1);
+  flag = CVodeMallocB(cvadj_mem, fB, TOUT, cB, CV_SS, reltolB, &abstolB);
+  if(check_flag(&flag, "CVodeMallocB", 1)) return(1);
+
+  /* Call CVSpgmr */
+  flag = CVSpgmrB(cvadj_mem, PREC_LEFT, 0);
+  if(check_flag(&flag, "CVSpgmrB", 1)) return(1);
+  flag = CVSpgmrSetPreconditionerB(cvadj_mem, PrecondB, PSolveB, wdata);
+  if(check_flag(&flag, "CVSpgmrSetPreconditionerB", 1)) return(1);
+
+  /* Perform backward integration */
+
+  printf("\nBackward integration\n");
+  flag = CVodeB(cvadj_mem, T0, cB, &t, CV_NORMAL);
+  if(check_flag(&flag, "CVodeB", 1)) return(1);
+
+  PrintOutput(cB, NS, MXNS, wdata);
+
+  /* Free all memory */
+  CVodeFree(cvode_mem);
+  CVadjFree(cvadj_mem);
+  N_VDestroy_Serial(c);
+  N_VDestroy_Serial(cB);
+  FreeUserData(wdata);
+
+  return(0);
+}
+
+/*
+ *--------------------------------------------------------------------
+ * FUNCTIONS CALLED BY CVODES
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * This routine computes the right-hand side of the ODE system and
+ * returns it in cdot. The interaction rates are computed by calls to WebRates,
+ * and these are saved in fsave for use in preconditioning.
+ */
+
+static void f(realtype t, N_Vector c, N_Vector cdot, void *f_data)
+{
+  int i, ic, ici, idxl, idxu, idyl, idyu, iyoff, jx, jy, ns, mxns;
+  realtype dcxli, dcxui, dcyli, dcyui, x, y, *cox, *coy, *fsave, dx, dy;
+  realtype *cdata, *cdotdata;
+  WebData wdata;
+  
+  wdata = (WebData) f_data;
+  cdata = NV_DATA_S(c);
+  cdotdata = NV_DATA_S(cdot);
+  
+  mxns = wdata->mxns;
+  ns = wdata->ns;
+  fsave = wdata->fsave;
+  cox = wdata->cox;
+  coy = wdata->coy;
+  mxns = wdata->mxns;
+  dx = wdata->dx;
+  dy = wdata->dy;
+  
+  for (jy = 0; jy < MY; jy++) {
+    y = jy*dy;
+    iyoff = mxns*jy;
+    idyu = (jy == MY-1) ? -mxns : mxns;
+    idyl = (jy == 0) ? -mxns : mxns;
+    for (jx = 0; jx < MX; jx++) {
+      x = jx*dx;
+      ic = iyoff + ns*jx;
+      /* Get interaction rates at one point (x,y). */
+      WebRates(x, y, t, cdata+ic, fsave+ic, wdata);
+      idxu = (jx == MX-1) ? -ns : ns;
+      idxl = (jx == 0) ? -ns : ns;
+      for (i = 1; i <= ns; i++) {
+        ici = ic + i-1;
+        /* Do differencing in y. */
+        dcyli = cdata[ici] - cdata[ici-idyl];
+        dcyui = cdata[ici+idyu] - cdata[ici];
+        /* Do differencing in x. */
+        dcxli = cdata[ici] - cdata[ici-idxl];
+        dcxui = cdata[ici+idxu] - cdata[ici];
+        /* Collect terms and load cdot elements. */
+        cdotdata[ici] = coy[i-1]*(dcyui - dcyli) + 
+                        cox[i-1]*(dcxui - dcxli) +
+                        fsave[ici];
+      }
+    }
+  }
+
+  /* Quadrature equation (species 1) */
+  cdotdata[NEQ] = doubleIntgr(c,ISPEC,wdata);
+}
+
+/*
+ * This routine generates the block-diagonal part of the Jacobian
+ * corresponding to the interaction rates, multiplies by -gamma, adds
+ * the identity matrix, and calls gefa to do the LU decomposition of
+ * each diagonal block. The computation of the diagonal blocks uses
+ * the preset block and grouping information. One block per group is
+ * computed. The Jacobian elements are generated by difference
+ * quotients using calls to the routine fblock.
+ *
+ * This routine can be regarded as a prototype for the general case
+ * of a block-diagonal preconditioner. The blocks are of size mp, and
+ * there are ngrp=ngx*ngy blocks computed in the block-grouping scheme.
+ */
+ 
+static int Precond(realtype t, N_Vector c, N_Vector fc,
+                   booleantype jok, booleantype *jcurPtr, 
+                   realtype gamma, void *P_data,
+                   N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3)
+{
+  long int N;
+  realtype ***P;
+  long int **pivot, ier;
+  int i, if0, if00, ig, igx, igy, j, jj, jx, jy;
+  int *jxr, *jyr, mp, ngrp, ngx, ngy, mxmp, flag;
+  realtype uround, fac, r, r0, save, srur;
+  realtype *f1, *fsave, *cdata, *rewtdata;
+  void *cvode_mem;
+  WebData wdata;
+  N_Vector rewt;
+
+  wdata = (WebData) P_data;
+  cvode_mem = wdata->cvode_memF;
+  rewt = wdata->rewt;
+  flag = CVodeGetErrWeights(cvode_mem, rewt);
+  if(check_flag(&flag, "CVodeGetErrWeights", 1)) return(1);
+
+  cdata = NV_DATA_S(c);
+  rewtdata = NV_DATA_S(rewt);
+
+  uround = UNIT_ROUNDOFF;
+
+  P = wdata->P;
+  pivot = wdata->pivot;
+  jxr = wdata->jxr;
+  jyr = wdata->jyr;
+  mp = wdata->mp;
+  srur = wdata->srur;
+  ngrp = wdata->ngrp;
+  ngx = wdata->ngx;
+  ngy = wdata->ngy;
+  mxmp = wdata->mxmp;
+  fsave = wdata->fsave;
+
+  /* Make mp calls to fblock to approximate each diagonal block of Jacobian.
+     Here, fsave contains the base value of the rate vector and 
+     r0 is a minimum increment factor for the difference quotient. */
+
+  f1 = NV_DATA_S(vtemp1);
+
+  fac = N_VWrmsNorm (fc, rewt);
+  N = NEQ+1;
+  r0 = RCONST(1000.0)*ABS(gamma)*uround*N*fac;
+  if (r0 == ZERO) r0 = ONE;
+
+  for (igy = 0; igy < ngy; igy++) {
+    jy = jyr[igy];
+    if00 = jy*mxmp;
+    for (igx = 0; igx < ngx; igx++) { 
+      jx = jxr[igx];
+      if0 = if00 + jx*mp;
+      ig = igx + igy*ngx; 
+      /* Generate ig-th diagonal block */
+      for (j = 0; j < mp; j++) {
+        /* Generate the jth column as a difference quotient */
+        jj = if0 + j; 
+        save = cdata[jj];
+        r = MAX(srur*ABS(save),r0/rewtdata[jj]);
+        cdata[jj] += r;
+        fac = -gamma/r;
+        fblock (t, cdata, jx, jy, f1, wdata);
+        for (i = 0; i < mp; i++) {
+          P[ig][j][i] = (f1[i] - fsave[if0+i])*fac;
+        }
+        cdata[jj] = save;
+      }
+    }
+  }
+  
+  /* Add identity matrix and do LU decompositions on blocks. */
+
+   for (ig = 0; ig < ngrp; ig++) {
+     denaddI(P[ig], mp);
+     ier = gefa(P[ig], mp, pivot[ig]);
+     if (ier != 0) return(1);
+   }
+
+  *jcurPtr = TRUE;
+  return(0);
+}
+
+/*
+ * This routine applies two inverse preconditioner matrices
+ * to the vector r, using the interaction-only block-diagonal Jacobian
+ * with block-grouping, denoted Jr, and Gauss-Seidel applied to the
+ * diffusion contribution to the Jacobian, denoted Jd.
+ * It first calls GSIter for a Gauss-Seidel approximation to
+ * ((I - gamma*Jd)-inverse)*r, and stores the result in z.
+ * Then it computes ((I - gamma*Jr)-inverse)*z, using LU factors of the
+ * blocks in P, and pivot information in pivot, and returns the result in z.
+ */
+
+static int PSolve(realtype t, N_Vector c, N_Vector fc,
+                  N_Vector r, N_Vector z,
+                  realtype gamma, realtype delta,
+                  int lr, void *P_data, N_Vector vtemp)
+{
+  realtype ***P;
+  long int **pivot;
+  int jx, jy, igx, igy, iv, ig, *jigx, *jigy, mx, my, ngx, mp;
+  WebData wdata;
+
+  wdata = (WebData) P_data;
+
+  N_VScale(ONE, r, z);
+
+  /* call GSIter for Gauss-Seidel iterations */
+
+  GSIter(gamma, z, vtemp, wdata);
+
+  /* Do backsolves for inverse of block-diagonal preconditioner factor */
+ 
+  P = wdata->P;
+  pivot = wdata->pivot;
+  mx = wdata->mx;
+  my = wdata->my;
+  ngx = wdata->ngx;
+  mp = wdata->mp;
+  jigx = wdata->jigx;
+  jigy = wdata->jigy;
+
+  iv = 0;
+  for (jy = 0; jy < my; jy++) {
+    igy = jigy[jy];
+    for (jx = 0; jx < mx; jx++) {
+      igx = jigx[jx];
+      ig = igx + igy*ngx;
+      gesl(P[ig], mp, pivot[ig], &(NV_DATA_S(z)[iv]));
+      iv += mp;
+    }
+  }
+
+  /* Solve for the quadrature variable */
+  NV_DATA_S(z)[NEQ] = NV_DATA_S(r)[NEQ] + gamma*doubleIntgr(z,ISPEC,wdata);
+
+  return(0);
+}
+
+/*
+ * This routine computes the right-hand side of the adjoint ODE system and
+ * returns it in cBdot. The interaction rates are computed by calls to WebRates,
+ * and these are saved in fsave for use in preconditioning. The adjoint 
+ * interaction rates are computed by calls to WebRatesB.
+ */
+
+static void fB(realtype t, N_Vector c, N_Vector cB, 
+               N_Vector cBdot, void *f_data)
+{
+  int i, ic, ici, idxl, idxu, idyl, idyu, iyoff, jx, jy, ns, mxns;
+  realtype dcxli, dcxui, dcyli, dcyui, x, y, *cox, *coy, *fsave, *fBsave, dx, dy;
+  realtype *cdata, *cBdata, *cBdotdata;
+  WebData wdata;
+
+  realtype gu[NS];
+
+  wdata = (WebData) f_data;
+  cdata = NV_DATA_S(c);
+  cBdata = NV_DATA_S(cB);
+  cBdotdata = NV_DATA_S(cBdot);
+
+  mxns = wdata->mxns;
+  ns = wdata->ns;
+  fsave = wdata->fsave;
+  fBsave = wdata->fBsave;
+  cox = wdata->cox;
+  coy = wdata->coy;
+  mxns = wdata->mxns;
+  dx = wdata->dx;
+  dy = wdata->dy;
+
+  for ( i = 0; i < ns; i++ ) gu[i] = ZERO; 
+  gu[ISPEC-1] = ONE;
+
+  for (jy = 0; jy < MY; jy++) {
+    y = jy*dy;
+    iyoff = mxns*jy;
+    idyu = (jy == MY-1) ? -mxns : mxns;
+    idyl = (jy == 0) ? -mxns : mxns;
+    for (jx = 0; jx < MX; jx++) {
+      x = jx*dx;
+      ic = iyoff + ns*jx;
+      /* Get interaction rates at one point (x,y). */
+      WebRatesB(x, y, t, cdata+ic, cBdata+ic, fsave+ic, fBsave+ic, wdata);
+      idxu = (jx == MX-1) ? -ns : ns;
+      idxl = (jx == 0) ? -ns : ns;
+      for (i = 1; i <= ns; i++) {
+        ici = ic + i-1;
+        /* Do differencing in y. */
+        dcyli = cBdata[ici] - cBdata[ici-idyl];
+        dcyui = cBdata[ici+idyu] - cBdata[ici];
+        /* Do differencing in x. */
+        dcxli = cBdata[ici] - cBdata[ici-idxl];
+        dcxui = cBdata[ici+idxu] - cBdata[ici];
+        /* Collect terms and load cdot elements. */
+        cBdotdata[ici] = - coy[i-1]*(dcyui - dcyli) 
+                         - cox[i-1]*(dcxui - dcxli)
+                         - fBsave[ici]
+                         - gu[i-1];
+      }
+    }
+  }
+}
+
+/*
+ * Preconditioner setup function for the backward problem
+ */
+
+static int PrecondB(realtype t, N_Vector c, 
+                    N_Vector cB, N_Vector fcB, booleantype jok, 
+                    booleantype *jcurPtr, realtype gamma,
+                    void *P_data,
+                    N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3)
+{
+  long int N;
+  realtype ***P;
+  long int **pivot, ier;
+  int i, if0, if00, ig, igx, igy, j, jj, jx, jy;
+  int *jxr, *jyr, mp, ngrp, ngx, ngy, mxmp, flag;
+  realtype uround, fac, r, r0, save, srur;
+  realtype *f1, *fsave, *cdata, *rewtdata;
+  void *cvode_mem;
+  WebData wdata;
+  N_Vector rewt;
+
+  wdata = (WebData) P_data;
+  cvode_mem = CVadjGetCVodeBmem(wdata->cvadj_mem);
+  if(check_flag((void *)cvode_mem, "CVadjGetCVodeBmem", 0)) return(1);
+  rewt = wdata->rewt;
+  flag = CVodeGetErrWeights(cvode_mem, rewt);
+  if(check_flag(&flag, "CVodeGetErrWeights", 1)) return(1);
+
+  cdata = NV_DATA_S(c);
+  rewtdata = NV_DATA_S(rewt);
+
+  uround = UNIT_ROUNDOFF;
+
+  P = wdata->P;
+  pivot = wdata->pivot;
+  jxr = wdata->jxr;
+  jyr = wdata->jyr;
+  mp = wdata->mp;
+  srur = wdata->srur;
+  ngrp = wdata->ngrp;
+  ngx = wdata->ngx;
+  ngy = wdata->ngy;
+  mxmp = wdata->mxmp;
+  fsave = wdata->fsave;
+
+  /* Make mp calls to fblock to approximate each diagonal block of Jacobian.
+     Here, fsave contains the base value of the rate vector and 
+     r0 is a minimum increment factor for the difference quotient. */
+
+  f1 = NV_DATA_S(vtemp1);
+  fac = N_VWrmsNorm (fcB, rewt);
+  N = NEQ;
+  r0 = RCONST(1000.0)*ABS(gamma)*uround*N*fac;
+  if (r0 == ZERO) r0 = ONE;
+
+  for (igy = 0; igy < ngy; igy++) {
+    jy = jyr[igy];
+    if00 = jy*mxmp;
+    for (igx = 0; igx < ngx; igx++) { 
+      jx = jxr[igx];
+      if0 = if00 + jx*mp;
+      ig = igx + igy*ngx; 
+      /* Generate ig-th diagonal block */
+      for (j = 0; j < mp; j++) {
+        /* Generate the jth column as a difference quotient */
+        jj = if0 + j; 
+        save = cdata[jj];
+        r = MAX(srur*ABS(save),r0/rewtdata[jj]);
+        cdata[jj] += r;
+        fac = gamma/r;
+        fblock (t, cdata, jx, jy, f1, wdata);
+        for (i = 0; i < mp; i++) {
+          P[ig][i][j] = (f1[i] - fsave[if0+i])*fac;
+        }
+        cdata[jj] = save;
+      }
+    }
+  }
+
+  /* Add identity matrix and do LU decompositions on blocks. */
+
+   for (ig = 0; ig < ngrp; ig++) {
+     denaddI(P[ig], mp);
+     ier = gefa(P[ig], mp, pivot[ig]);
+     if (ier != 0) return(1);
+   }
+
+  *jcurPtr = TRUE;
+  return(0);
+}
+
+/*
+ * Preconditioner solve function for the backward problem
+ */
+
+static int PSolveB(realtype t, N_Vector c, 
+                   N_Vector cB, N_Vector fcB, 
+                   N_Vector r, N_Vector z,
+                   realtype gamma, realtype delta, 
+                   int lr, void *P_data, N_Vector vtemp)
+{
+  realtype ***P;
+  long int **pivot;
+  int jx, jy, igx, igy, iv, ig, *jigx, *jigy, mx, my, ngx, mp;
+  WebData wdata;
+
+  wdata = (WebData) P_data;
+
+  N_VScale(ONE, r, z);
+
+  /* call GSIter for Gauss-Seidel iterations (same routine but with gamma=-gamma) */
+
+  GSIter(-gamma, z, vtemp, wdata);
+
+  /* Do backsolves for inverse of block-diagonal preconditioner factor */
+ 
+  P = wdata->P;
+  pivot = wdata->pivot;
+  mx = wdata->mx;
+  my = wdata->my;
+  ngx = wdata->ngx;
+  mp = wdata->mp;
+  jigx = wdata->jigx;
+  jigy = wdata->jigy;
+
+  iv = 0;
+  for (jy = 0; jy < my; jy++) {
+    igy = jigy[jy];
+    for (jx = 0; jx < mx; jx++) {
+      igx = jigx[jx];
+      ig = igx + igy*ngx;
+      gesl(P[ig], mp, pivot[ig], &(NV_DATA_S(z)[iv]));
+      iv += mp;
+    }
+  }
+
+  return(0);
+}
+
+/*
+ *--------------------------------------------------------------------
+ * PRIVATE FUNCTIONS
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * Allocate space for user data structure
+ */
+
+static WebData AllocUserData(void)
+{
+  int i, ngrp = NGRP, ns = NS;
+  WebData wdata;
+
+  wdata = (WebData) malloc(sizeof *wdata);
+  for(i=0; i < ngrp; i++) {
+    (wdata->P)[i] = denalloc(ns);
+    (wdata->pivot)[i] = denallocpiv(ns);
+  }
+  wdata->rewt = N_VNew_Serial(NEQ+1);
+  return(wdata);
+}
+
+/*
+ * Initialize user data structure
+ */
+
+static void InitUserData(WebData wdata)
+{
+  int i, j, ns;
+  realtype *bcoef, *diff, *cox, *coy, dx, dy;
+  realtype (*acoef)[NS];
+
+  acoef = wdata->acoef;
+  bcoef = wdata->bcoef;
+  diff = wdata->diff;
+  cox = wdata->cox;
+  coy = wdata->coy;
+  ns = wdata->ns = NS;
+
+  for (j = 0; j < NS; j++) { for (i = 0; i < NS; i++) acoef[i][j] = ZERO; }
+  for (j = 0; j < NP; j++) {
+    for (i = 0; i < NP; i++) {
+      acoef[NP+i][j] = EE;
+      acoef[i][NP+j] = -GG;
+    }
+    acoef[j][j] = -AA;
+    acoef[NP+j][NP+j] = -AA;
+    bcoef[j] = BB;
+    bcoef[NP+j] = -BB;
+    diff[j] = DPREY;
+    diff[NP+j] = DPRED;
+  }
+
+  /* Set remaining problem parameters */
+
+  wdata->mxns = MXNS;
+  dx = wdata->dx = DX;
+  dy = wdata->dy = DY;
+  for (i = 0; i < ns; i++) {
+    cox[i] = diff[i]/SQR(dx);
+    coy[i] = diff[i]/SQR(dy);
+  }
+
+  /* Set remaining method parameters */
+
+  wdata->mp = MP;
+  wdata->mq = MQ;
+  wdata->mx = MX;
+  wdata->my = MY;
+  wdata->srur = RSqrt(UNIT_ROUNDOFF);
+  wdata->mxmp = MXMP;
+  wdata->ngrp = NGRP;
+  wdata->ngx = NGX;
+  wdata->ngy = NGY;
+  SetGroups(MX, NGX, wdata->jgx, wdata->jigx, wdata->jxr);
+  SetGroups(MY, NGY, wdata->jgy, wdata->jigy, wdata->jyr);
+}
+
+/*
+ * This routine sets arrays jg, jig, and jr describing
+ * a uniform partition of (0,1,2,...,m-1) into ng groups.
+ * The arrays set are:
+ *   jg    = length ng+1 array of group boundaries.
+ *           Group ig has indices j = jg[ig],...,jg[ig+1]-1.
+ *   jig   = length m array of group indices vs node index.
+ *           Node index j is in group jig[j].
+ *   jr    = length ng array of indices representing the groups.
+ *           The index for group ig is j = jr[ig].
+ */
+
+static void SetGroups(int m, int ng, int jg[], int jig[], int jr[])
+{
+  int ig, j, len1, mper, ngm1;
+  
+  mper = m/ng; /* does integer division */
+  for (ig=0; ig < ng; ig++) jg[ig] = ig*mper;
+  jg[ng] = m;
+  
+  ngm1 = ng - 1;
+  len1 = ngm1*mper;
+  for (j = 0; j < len1; j++) jig[j] = j/mper;
+  for (j = len1; j < m; j++) jig[j] = ngm1;
+
+  for (ig = 0; ig < ngm1; ig++) jr[ig] = ((2*ig+1)*mper-1)/2;
+  jr[ngm1] = (ngm1*mper+m-1)/2;
+}
+
+/*
+ * This routine computes and loads the vector of initial values. 
+ */
+
+static void CInit(N_Vector c, WebData wdata)
+{
+  int i, ici, ioff, iyoff, jx, jy, ns, mxns;
+  realtype argx, argy, x, y, dx, dy, x_factor, y_factor, *cdata;
+  
+  cdata = NV_DATA_S(c);
+  ns = wdata->ns;
+  mxns = wdata->mxns;
+  dx = wdata->dx;
+  dy = wdata->dy;
+  
+  x_factor = RCONST(4.0)/SQR(AX);
+  y_factor = RCONST(4.0)/SQR(AY);
+  for (jy = 0; jy < MY; jy++) {
+    y = jy*dy;
+    argy = SQR(y_factor*y*(AY-y)); 
+    iyoff = mxns*jy;
+    for (jx = 0; jx < MX; jx++) {
+      x = jx*dx;
+      argx = SQR(x_factor*x*(AX-x));
+      ioff = iyoff + ns*jx;
+      for (i = 1; i <= ns; i++) {
+        ici = ioff + i-1;
+        cdata[ici] = RCONST(10.0) + i*argx*argy;
+
+        /*if(i==1) cdata[ici] += ONE;*/
+
+      }
+    }
+  }
+
+  /* Initialize quadrature variable to zero */
+  cdata[NEQ] = ZERO;
+}
+
+/*
+ * This routine computes the interaction rates for the species
+ * c_1, ... ,c_ns (stored in c[0],...,c[ns-1]), at one spatial point 
+ * and at time t.
+ */
+
+static void WebRates(realtype x, realtype y, realtype t, realtype c[], 
+                     realtype rate[], WebData wdata)
+{
+  int i, j, ns;
+  realtype fac, *bcoef;
+  realtype (*acoef)[NS];
+
+  ns = wdata->ns;
+  acoef = wdata->acoef;
+  bcoef = wdata->bcoef;
+
+  for (i = 0; i < ns; i++)
+    rate[i] = ZERO;
+  
+  for (j = 0; j < ns; j++) 
+    for (i = 0; i < ns; i++) 
+      rate[i] += c[j] * acoef[i][j];
+  
+  fac = ONE + ALPH*x*y;
+  for (i = 0; i < ns; i++) 
+    rate[i] = c[i]*(bcoef[i]*fac + rate[i]);
+}
+
+/*
+ * This routine computes the interaction rates for the backward problem
+ */
+
+static void WebRatesB(realtype x, realtype y, realtype t, realtype c[], realtype cB[], 
+                      realtype rate[], realtype rateB[], WebData wdata)
+{
+  int i, j, ns;
+  realtype fac, *bcoef;
+  realtype (*acoef)[NS];
+
+  ns = wdata->ns;
+  acoef = wdata->acoef;
+  bcoef = wdata->bcoef;
+
+  fac = ONE + ALPH*x*y;
+
+  for (i = 0; i < ns; i++)
+    rate[i] = bcoef[i]*fac;
+  
+  for (j = 0; j < ns; j++) 
+    for (i = 0; i < ns; i++)
+      rate[i] += acoef[i][j]*c[j];
+
+  for (i = 0; i < ns; i++) {
+    rateB[i] = cB[i]*rate[i];
+    rate[i] = c[i]*rate[i];
+  }
+
+  for (j = 0; j < ns; j++) 
+    for (i = 0; i < ns; i++)
+      rateB[i] += acoef[j][i]*c[j]*cB[j];
+}
+
+/*
+ * This routine computes one block of the interaction terms of the
+ * system, namely block (jx,jy), for use in preconditioning.
+ * Here jx and jy count from 0.
+ */
+
+static void fblock(realtype t, realtype cdata[], int jx, int jy, 
+                   realtype cdotdata[], WebData wdata)
+{
+  int iblok, ic;
+  realtype x, y;
+
+  iblok = jx + jy*(wdata->mx);
+  y = jy*(wdata->dy);
+  x = jx*(wdata->dx);
+  ic = (wdata->ns)*(iblok);
+  WebRates(x, y, t, cdata+ic, cdotdata, wdata);
+}
+
+
+/*
+ * This routine performs ITMAX=5 Gauss-Seidel iterations to compute an
+ * approximation to (P-inverse)*z, where P = I - gamma*Jd, and
+ * Jd represents the diffusion contributions to the Jacobian.
+ * The answer is stored in z on return, and x is a temporary vector.
+ * The dimensions below assume a global constant NS >= ns.
+ * Some inner loops of length ns are implemented with the small
+ * vector kernels v_sum_prods, v_prod, v_inc_by_prod.
+ */
+
+static void GSIter(realtype gamma, N_Vector z, N_Vector x, 
+                   WebData wdata)
+{
+  int i, ic, iter, iyoff, jx, jy, ns, mxns, mx, my, x_loc, y_loc;
+  realtype beta[NS], beta2[NS], cof1[NS], gam[NS], gam2[NS];
+  realtype temp, *cox, *coy, *xd, *zd;
+
+  xd = NV_DATA_S(x);
+  zd = NV_DATA_S(z);
+  ns = wdata->ns;
+  mx = wdata->mx;
+  my = wdata->my;
+  mxns = wdata->mxns;
+  cox = wdata->cox;
+  coy = wdata->coy;
+
+  /* Write matrix as P = D - L - U.
+     Load local arrays beta, beta2, gam, gam2, and cof1. */
+ 
+  for (i = 0; i < ns; i++) {
+    temp = ONE/(ONE + RCONST(2.0)*gamma*(cox[i] + coy[i]));
+    beta[i] = gamma*cox[i]*temp;
+    beta2[i] = RCONST(2.0)*beta[i];
+    gam[i] = gamma*coy[i]*temp;
+    gam2[i] = RCONST(2.0)*gam[i];
+    cof1[i] = temp;
+  }
+
+  /* Begin iteration loop.
+  Load vector x with (D-inverse)*z for first iteration. */
+
+  for (jy = 0; jy < my; jy++) {
+    iyoff = mxns*jy;
+    for (jx = 0; jx < mx; jx++) {
+      ic = iyoff + ns*jx;
+      v_prod(xd+ic, cof1, zd+ic, ns); /* x[ic+i] = cof1[i]z[ic+i] */
+    }
+  }
+  N_VConst(ZERO, z);
+
+  /* Looping point for iterations. */
+
+  for (iter=1; iter <= ITMAX; iter++) {
+
+    /* Calculate (D-inverse)*U*x if not the first iteration. */
+
+    if (iter > 1) {
+      for (jy=0; jy < my; jy++) {
+        iyoff = mxns*jy;
+        for (jx=0; jx < mx; jx++) { /* order of loops matters */
+          ic = iyoff + ns*jx;
+          x_loc = (jx == 0) ? 0 : ((jx == mx-1) ? 2 : 1);
+          y_loc = (jy == 0) ? 0 : ((jy == my-1) ? 2 : 1);
+          switch (3*y_loc+x_loc) {
+          case 0 : /* jx == 0, jy == 0 */
+            /* x[ic+i] = beta2[i]x[ic+ns+i] + gam2[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta2, xd+ic+ns, gam2, xd+ic+mxns, ns);
+            break;
+          case 1 : /* 1 <= jx <= mx-2, jy == 0 */
+            /* x[ic+i] = beta[i]x[ic+ns+i] + gam2[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta, xd+ic+ns, gam2, xd+ic+mxns, ns);
+            break;
+          case 2 : /* jx == mx-1, jy == 0 */
+            /* x[ic+i] = gam2[i]x[ic+mxns+i] */
+            v_prod(xd+ic, gam2, xd+ic+mxns, ns);
+            break;
+          case 3 : /* jx == 0, 1 <= jy <= my-2 */
+            /* x[ic+i] = beta2[i]x[ic+ns+i] + gam[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta2, xd+ic+ns, gam, xd+ic+mxns, ns);
+            break;
+          case 4 : /* 1 <= jx <= mx-2, 1 <= jy <= my-2 */
+            /* x[ic+i] = beta[i]x[ic+ns+i] + gam[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta, xd+ic+ns, gam, xd+ic+mxns, ns);
+            break;
+          case 5 : /* jx == mx-1, 1 <= jy <= my-2 */
+            /* x[ic+i] = gam[i]x[ic+mxns+i] */
+            v_prod(xd+ic, gam, xd+ic+mxns, ns);
+            break;
+          case 6 : /* jx == 0, jy == my-1 */
+            /* x[ic+i] = beta2[i]x[ic+ns+i] */
+            v_prod(xd+ic, beta2, xd+ic+ns, ns);
+            break;
+          case 7 : /* 1 <= jx <= mx-2, jy == my-1 */
+            /* x[ic+i] = beta[i]x[ic+ns+i] */
+            v_prod(xd+ic, beta, xd+ic+ns, ns);
+            break;
+          case 8 : /* jx == mx-1, jy == my-1 */
+            /* x[ic+i] = ZERO */
+            v_zero(xd+ic, ns);
+            break;
+          }
+        }
+      }
+    }  /* end if (iter > 1) */
+    
+    /* Overwrite x with [(I - (D-inverse)*L)-inverse]*x. */
+    
+    for (jy=0; jy < my; jy++) {
+      iyoff = mxns*jy;
+      for (jx=0; jx < mx; jx++) { /* order of loops matters */
+        ic = iyoff + ns*jx;
+        x_loc = (jx == 0) ? 0 : ((jx == mx-1) ? 2 : 1);
+        y_loc = (jy == 0) ? 0 : ((jy == my-1) ? 2 : 1);
+        switch (3*y_loc+x_loc) {
+        case 0 : /* jx == 0, jy == 0 */
+          break;
+        case 1 : /* 1 <= jx <= mx-2, jy == 0 */
+          /* x[ic+i] += beta[i]x[ic-ns+i] */
+          v_inc_by_prod(xd+ic, beta, xd+ic-ns, ns);
+          break;
+        case 2 : /* jx == mx-1, jy == 0 */
+          /* x[ic+i] += beta2[i]x[ic-ns+i] */
+          v_inc_by_prod(xd+ic, beta2, xd+ic-ns, ns);
+          break;
+        case 3 : /* jx == 0, 1 <= jy <= my-2 */
+          /* x[ic+i] += gam[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, gam, xd+ic-mxns, ns);
+          break;
+        case 4 : /* 1 <= jx <= mx-2, 1 <= jy <= my-2 */
+          /* x[ic+i] += beta[i]x[ic-ns+i] + gam[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam, xd+ic-mxns, ns);
+          break;
+        case 5 : /* jx == mx-1, 1 <= jy <= my-2 */
+          /* x[ic+i] += beta2[i]x[ic-ns+i] + gam[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta2, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam, xd+ic-mxns, ns);
+          break;
+        case 6 : /* jx == 0, jy == my-1 */
+          /* x[ic+i] += gam2[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, gam2, xd+ic-mxns, ns);
+          break;
+        case 7 : /* 1 <= jx <= mx-2, jy == my-1 */
+          /* x[ic+i] += beta[i]x[ic-ns+i] + gam2[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam2, xd+ic-mxns, ns);
+          break;
+        case 8 : /* jx == mx-1, jy == my-1 */
+          /* x[ic+i] += beta2[i]x[ic-ns+i] + gam2[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta2, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam2, xd+ic-mxns, ns);
+          break;
+        }
+      }
+    }
+    
+    /* Add increment x to z : z <- z+x */
+    
+    N_VLinearSum(ONE, z, ONE, x, z);
+    
+  }
+}
+
+static void v_inc_by_prod(realtype u[], realtype v[], realtype w[], int n)
+{
+  int i;  
+  for (i=0; i < n; i++) u[i] += v[i]*w[i];
+}
+
+static void v_sum_prods(realtype u[], realtype p[], realtype q[], 
+                        realtype v[], realtype w[], int n)
+{
+  int i;  
+  for (i=0; i < n; i++) u[i] = p[i]*q[i] + v[i]*w[i];
+}
+
+static void v_prod(realtype u[], realtype v[], realtype w[], int n)
+{ 
+  int i;
+  for (i=0; i < n; i++) u[i] = v[i]*w[i];
+}
+
+static void v_zero(realtype u[], int n)
+{
+  int i;  
+  for (i=0; i < n; i++) u[i] = ZERO;
+}
+
+/*
+ * Print maximum sensitivity of G for each species
+ */
+
+static void PrintOutput(N_Vector cB, int ns, int mxns, WebData wdata)
+{
+  int i, jx, jy;
+  realtype *cdata, cij, cmax, x, y;
+
+  cdata = NV_DATA_S(cB);
+
+  for (i=1; i <= ns; i++) {
+
+    cmax = ZERO;
+
+    for (jy=MY-1; jy >= 0; jy--) {
+      for (jx=0; jx < MX; jx++) {
+        cij = cdata[(i-1) + jx*ns + jy*mxns];
+        if (ABS(cij) > cmax) {
+          cmax = cij;
+          x = jx * wdata->dx;
+          y = jy * wdata->dy;
+        }
+      }
+    }
+
+    printf("\nMaximum sensitivity with respect to I.C. of species %d\n", i);
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+    printf("  lambda max = %Le\n",cmax);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+    printf("  lambda max = %le\n",cmax);
+#else
+    printf("  lambda max = %e\n",cmax);
+#endif
+    printf("at\n");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+    printf("  x = %Le\n  y = %Le\n", x, y);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+    printf("  x = %le\n  y = %le\n", x, y);
+#else
+    printf("  x = %e\n  y = %e\n", x, y);
+#endif
+
+  }
+
+}
+
+/*
+ * Compute double space integral
+ */
+
+static realtype doubleIntgr(N_Vector c, int i, WebData wdata)
+{
+  realtype *cdata;
+  int ns, mx, my, mxns;
+  realtype dx, dy;
+  realtype intgr_xy, intgr_x;
+  int jx, jy;
+
+  cdata = NV_DATA_S(c);
+
+  ns   = wdata->ns;
+  mx   = wdata->mx;
+  my   = wdata->my;
+  mxns = wdata->mxns;
+  dx   = wdata->dx;
+  dy   = wdata->dy;
+
+  jy = 0;
+  intgr_x = cdata[(i-1)+jy*mxns];
+  for (jx = 1; jx < mx-1; jx++) {
+    intgr_x += RCONST(2.0)*cdata[(i-1) + jx*ns + jy*mxns]; 
+  }
+  intgr_x += cdata[(i-1)+(mx-1)*ns+jy*mxns];
+  intgr_x *= RCONST(0.5)*dx;
+  
+  intgr_xy = intgr_x;
+  
+  for (jy = 1; jy < my-1; jy++) {
+    
+    intgr_x = cdata[(i-1)+jy*mxns];
+    for (jx = 1; jx < mx-1; jx++) {
+      intgr_x += RCONST(2.0)*cdata[(i-1) + jx*ns + jy*mxns]; 
+    }
+    intgr_x += cdata[(i-1)+(mx-1)*ns+jy*mxns];
+    intgr_x *= RCONST(0.5)*dx;
+    
+    intgr_xy += RCONST(2.0)*intgr_x;
+
+  }
+  
+  jy = my-1;
+  intgr_x = cdata[(i-1)+jy*mxns];
+  for (jx = 1; jx < mx-1; jx++) {
+    intgr_x += RCONST(2.0)*cdata[(i-1) + jx*ns + jy*mxns]; 
+  }
+  intgr_x += cdata[(i-1)+(mx-1)*ns+jy*mxns];
+  intgr_x *= RCONST(0.5)*dx;
+  
+  intgr_xy += intgr_x;
+  
+  intgr_xy *= RCONST(0.5)*dy;
+
+  return(intgr_xy);
+}
+
+/*
+ * Free space allocated for the user data structure
+ */
+
+static void FreeUserData(WebData wdata)
+{
+  int i, ngrp;
+
+  ngrp = wdata->ngrp;
+  for(i=0; i < ngrp; i++) {
+    denfree((wdata->P)[i]);
+    denfreepiv((wdata->pivot)[i]);
+  }
+  N_VDestroy_Serial(wdata->rewt);
+  free(wdata);
+}
+
+/* 
+ * Check function return value.
+ *    opt == 0 means SUNDIALS function allocates memory so check if
+ *             returned NULL pointer
+ *    opt == 1 means SUNDIALS function returns a flag so check if
+ *             flag >= 0
+ *    opt == 2 means function allocates memory so check if returned
+ *             NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+	      funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvakx.out b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvakx.out
new file mode 100644
index 0000000..3dfce21
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvakx.out
@@ -0,0 +1,48 @@
+Create and allocate CVODE memory for forward run
+ 
+Allocate global memory
+ 
+Forward integration ... done (ncheck = 2)
+ 
+   G = int_t int_x int_y c6(t,x,y) dx dy dt = 422296.125734
+ 
+ 
+Create and allocate CVODES memory for backward run
+ 
+Backward integration
+ 
+Maximum sensitivity with respect to I.C. of species 1
+  lambda max = 9.566140e+02
+at
+  x = 1.000000e+00
+  y = 1.000000e+00
+ 
+Maximum sensitivity with respect to I.C. of species 2
+  lambda max = 9.376469e+02
+at
+  x = 1.000000e+00
+  y = 1.000000e+00
+ 
+Maximum sensitivity with respect to I.C. of species 3
+  lambda max = 9.197261e+02
+at
+  x = 1.000000e+00
+  y = 1.000000e+00
+ 
+Maximum sensitivity with respect to I.C. of species 4
+  lambda max = -3.405877e-03
+at
+  x = 1.000000e+00
+  y = 0.000000e+00
+ 
+Maximum sensitivity with respect to I.C. of species 5
+  lambda max = -3.403802e-03
+at
+  x = 1.000000e+00
+  y = 0.000000e+00
+ 
+Maximum sensitivity with respect to I.C. of species 6
+  lambda max = 2.456960e-01
+at
+  x = 0.000000e+00
+  y = 0.000000e+00
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvakxb.c b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvakxb.c
new file mode 100644
index 0000000..ab6fcb7
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvakxb.c
@@ -0,0 +1,1340 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:34:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * This program solves a stiff ODE system that arises from a system
+ * of partial differential equations. The PDE system is a food web
+ * population model, with predator-prey interaction and diffusion on
+ * the unit square in two dimensions. The dependent variable vector
+ * is the following:
+ *
+ *        1   2        ns
+ *  c = (c , c , ..., c  )
+ *
+ * and the PDEs are as follows:
+ *
+ *    i               i      i
+ *  dc /dt  =  d(i)*(c    + c   )  +  f (x,y,c)  (i=1,...,ns)
+ *                    xx     yy        i
+ *
+ * where
+ *
+ *                 i          ns         j
+ *  f (x,y,c)  =  c *(b(i) + sum a(i,j)*c )
+ *   i                       j=1
+ *
+ * The number of species is ns = 2*np, with the first np being prey
+ * and the last np being predators. The coefficients a(i,j), b(i),
+ * d(i) are:
+ *
+ *  a(i,i) = -a  (all i)
+ *  a(i,j) = -g  (i <= np, j > np)
+ *  a(i,j) =  e  (i > np, j <= np)
+ *  b(i) =  b*(1 + alpha*x*y)  (i <= np)
+ *  b(i) = -b*(1 + alpha*x*y)  (i > np)
+ *  d(i) = Dprey  (i <= np)
+ *  d(i) = Dpred  (i > np)
+ *
+ * The spatial domain is the unit square. The final time is 10.
+ * The boundary conditions are: normal derivative = 0.
+ * A polynomial in x and y is used to set the initial conditions.
+ *
+ * The PDEs are discretized by central differencing on an MX by
+ * MY mesh. The resulting ODE system is stiff.
+ *
+ * The ODE system is solved by CVODES using Newton iteration and
+ * the CVSPGMR linear solver (scaled preconditioned GMRES).
+ *
+ * The preconditioner matrix used is the product of two matrices:
+ * (1) A matrix, only defined implicitly, based on a fixed number
+ * of Gauss-Seidel iterations using the diffusion terms only.
+ * (2) A block-diagonal matrix based on the partial derivatives
+ * of the interaction terms f only, using block-grouping (computing
+ * only a subset of the ns by ns blocks).
+ *
+ * Additionally, CVODES can integrate backwards in time the
+ * the semi-discrete form of the adjoint PDE:
+ *   d(lambda)/dt = - D^T ( lambda_xx + lambda_yy )
+ *                  - F_c^T lambda
+ * with homogeneous Neumann boundary conditions and final conditions
+ *   lambda(x,y,t=t_final) = - g_c^T(t_final)
+ * whose solution at t = 0 represents the sensitivity of
+ *   int_x int _y g(t_final,c) dx dy dt
+ * with respect to the initial conditions of the original problem.
+ *
+ * In this example,
+ *   g(t,c) = c(ISPEC), with ISPEC defined below.
+ * -----------------------------------------------------------------
+ * Reference:  Peter N. Brown and Alan C. Hindmarsh, Reduced Storage
+ * Matrix Methods in Stiff ODE Systems, J. Appl. Math. & Comp., 31
+ * (1989), pp. 40-91.  Also available as Lawrence Livermore National
+ * Laboratory Report UCRL-95088, Rev. 1, June 1987.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "cvodes.h"
+#include "cvodea.h"
+#include "cvspgmr.h"
+#include "nvector_serial.h"
+#include "sundialstypes.h"
+#include "sundialsmath.h"
+
+#define ZERO  RCONST(0.0)
+#define ONE   RCONST(1.0)
+#define TWO   RCONST(2.0)
+
+/* Problem Specification Constants */
+
+#define AA    ONE               /* AA = a */
+#define EE    RCONST(1.0e4)     /* EE = e */
+#define GG    RCONST(0.5e-6)    /* GG = g */
+#define BB    ONE               /* BB = b */
+#define DPREY ONE    
+#define DPRED RCONST(0.5)
+#define ALPH  ONE
+#define NP    3
+#define NS    (2*NP)
+
+/* Method Constants */
+
+#define MX    20
+#define MY    20
+#define MXNS  (MX*NS)
+#define AX    ONE
+#define AY    ONE
+#define DX    (AX/(realtype)(MX-1))
+#define DY    (AY/(realtype)(MY-1))
+#define MP    NS
+#define MQ    (MX*MY)
+#define MXMP  (MX*MP)
+#define NGX   2
+#define NGY   2
+#define NGRP  (NGX*NGY)
+#define ITMAX 5
+
+/* CVodeMalloc Constants */
+
+#define NEQ   (NS*MX*MY)
+#define T0    ZERO
+#define RTOL  RCONST(1.0e-5)
+#define ATOL  RCONST(1.0e-5)
+
+/* Output Constants */
+
+#define TOUT RCONST(10.0)
+
+/* Note: The value for species i at mesh point (j,k) is stored in */
+/* component number (i-1) + j*NS + k*NS*MX of an N_Vector,        */
+/* where 1 <= i <= NS, 0 <= j < MX, 0 <= k < MY.                  */
+
+/* Structure for user data */
+
+typedef struct {
+  realtype **P[NGRP];
+  long int *pivot[NGRP];
+  int ns, mxns, mp, mq, mx, my, ngrp, ngx, ngy, mxmp;
+  int jgx[NGX+1], jgy[NGY+1], jigx[MX], jigy[MY];
+  int jxr[NGX], jyr[NGY];
+  realtype acoef[NS][NS], bcoef[NS], diff[NS];
+  realtype cox[NS], coy[NS], dx, dy, srur;
+  realtype fsave[NEQ];
+  realtype fBsave[NEQ];
+  N_Vector rewt;
+  void *cvadj_mem;
+  void *cvode_memF;
+} *WebData;
+
+/* Adjoint calculation constants */
+/* g = int_x int_y c(ISPEC) dy dx at t = Tfinal */
+#define NSTEPS 80  /* check points every NSTEPS steps */
+#define ISPEC  6   /* species # in objective */
+
+/* Prototypes for user-supplied functions */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+
+static int Precond(realtype t, N_Vector c, N_Vector fc,
+                   booleantype jok, booleantype *jcurPtr, 
+                   realtype gamma, void *P_data,
+                   N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3);
+
+static int PSolve(realtype t, N_Vector c, N_Vector fc,
+                  N_Vector r, N_Vector z,
+                  realtype gamma, realtype delta,
+                  int lr, void *P_data, N_Vector vtemp);
+
+static void fB(realtype t, N_Vector c, N_Vector cB, 
+               N_Vector cBdot, void *f_data);
+
+static int PrecondB(realtype t, N_Vector c, 
+                    N_Vector cB, N_Vector fcB, booleantype jok, 
+                    booleantype *jcurPtr, realtype gamma,
+                    void *P_data,
+                    N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3);
+
+static int PSolveB(realtype t, N_Vector c, 
+                   N_Vector cB, N_Vector fcB, 
+                   N_Vector r, N_Vector z,
+                   realtype gamma, realtype delta, 
+                   int lr, void *P_data, N_Vector vtemp);
+
+/* Prototypes for private functions */
+
+static WebData AllocUserData(void);
+static void InitUserData(WebData wdata);
+static void SetGroups(int m, int ng, int jg[], int jig[], int jr[]);
+static void CInit(N_Vector c, WebData wdata);
+static void CbInit(N_Vector c, int is, WebData wdata);
+static void PrintOutput(N_Vector c, int ns, int mxns, WebData wdata);
+static void FreeUserData(WebData wdata);
+static void WebRates(realtype x, realtype y, realtype t, realtype c[], realtype rate[],
+                     WebData wdata);
+static void WebRatesB(realtype x, realtype y, realtype t, realtype c[], realtype cB[], 
+                      realtype rate[], realtype rateB[], WebData wdata);
+static void fblock (realtype t, realtype cdata[], int jx, int jy, realtype cdotdata[],
+                    WebData wdata);
+static void GSIter(realtype gamma, N_Vector z, N_Vector x, WebData wdata);
+static realtype doubleIntgr(N_Vector c, int i, WebData wdata);
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/* Small Vector Kernels */
+
+static void v_inc_by_prod(realtype u[], realtype v[], realtype w[], int n);
+static void v_sum_prods(realtype u[], realtype p[], realtype q[], realtype v[], 
+                        realtype w[], int n);
+static void v_prod(realtype u[], realtype v[], realtype w[], int n);
+static void v_zero(realtype u[], int n);
+
+/*
+ *--------------------------------------------------------------------
+ * MAIN PROGRAM
+ *--------------------------------------------------------------------
+ */
+
+int main(int argc, char *argv[])
+{
+  realtype abstol=ATOL, reltol=RTOL, t;
+  N_Vector c;
+  WebData wdata;
+  void *cvode_mem;
+  int flag;
+
+  void *cvadj_mem;
+  int ncheck;
+  
+  realtype reltolB=RTOL, abstolB=ATOL;
+  N_Vector cB;
+
+  c = cB = NULL;
+  wdata = NULL;
+  cvode_mem = cvadj_mem = NULL;
+
+  /* Allocate and initialize user data */
+
+  wdata = AllocUserData();
+  if(check_flag((void *)wdata, "AllocUserData", 2)) return(1);
+  InitUserData(wdata);
+
+  /* Set-up forward problem */
+
+  /* Initializations */
+  c = N_VNew_Serial(NEQ);
+  if(check_flag((void *)c, "N_VNew_Serial", 0)) return(1);
+  CInit(c, wdata);
+
+  /* Call CVodeCreate/CVodeMalloc for forward run */
+  printf("\nCreate and allocate CVODES memory for forward run\n");
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+  wdata->cvode_memF = cvode_mem; /* Used in Precond */
+  flag = CVodeSetFdata(cvode_mem, wdata);
+  if(check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+  flag = CVodeMalloc(cvode_mem, f, T0, c, CV_SS, reltol, &abstol);
+  if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  /* Call CVSpgmr for forward run */
+  flag = CVSpgmr(cvode_mem, PREC_LEFT, 0);
+  if(check_flag(&flag, "CVSpgmr", 1)) return(1);
+  flag = CVSpgmrSetPreconditioner(cvode_mem, Precond, PSolve, wdata);
+  if(check_flag(&flag, "CVSpgmrSetPreconditioner", 1)) return(1);
+
+  /* Set-up adjoint calculations */
+
+  printf("\nAllocate global memory\n");
+  cvadj_mem = CVadjMalloc(cvode_mem, NSTEPS);
+  if(check_flag((void *)cvadj_mem, "CVadjMalloc", 0)) return(1);
+  wdata->cvadj_mem = cvadj_mem;
+
+  /* Perform forward run */
+
+  printf("\nForward integration ... ");
+  flag = CVodeF(cvadj_mem, TOUT, c, &t, CV_NORMAL, &ncheck);
+  if(check_flag(&flag, "CVodeF", 1)) return(1);
+  printf("done (ncheck = %d)\n",ncheck);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("\n   g = int_x int_y c%d(Tfinal,x,y) dx dy = %Lf \n\n", 
+         ISPEC, doubleIntgr(c,ISPEC,wdata));
+#else
+  printf("\n   g = int_x int_y c%d(Tfinal,x,y) dx dy = %f \n\n", 
+         ISPEC, doubleIntgr(c,ISPEC,wdata));
+#endif
+
+  /* Set-up backward problem */
+
+  /* Allocate cB */
+  cB = N_VNew_Serial(NEQ);
+  if(check_flag((void *)cB, "N_VNew_Serial", 0)) return(1);
+  /* Initialize cB = 0 */
+  CbInit(cB, ISPEC, wdata);
+
+  /* Create and allocate CVODES memory for backward run */
+  printf("\nCreate and allocate CVODES memory for backward run\n");
+  flag = CVodeCreateB(cvadj_mem, CV_BDF, CV_NEWTON);
+  if(check_flag(&flag, "CVodeCreateB", 1)) return(1);
+  flag = CVodeSetFdataB(cvadj_mem, wdata);
+  if(check_flag(&flag, "CVodeSetFdataB", 1)) return(1);
+  flag = CVodeMallocB(cvadj_mem, fB, TOUT, cB, CV_SS, reltolB, &abstolB);
+  if(check_flag(&flag, "CVodeMallocB", 1)) return(1);
+
+  /* Call CVSpgmr */
+  flag = CVSpgmrB(cvadj_mem, PREC_LEFT, 0);
+  if(check_flag(&flag, "CVSpgmrB", 1)) return(1);
+  flag = CVSpgmrSetPreconditionerB(cvadj_mem, PrecondB, PSolveB, wdata);
+  if(check_flag(&flag, "CVSpgmrSetPreconditionerB", 1)) return(1);
+
+  /* Perform backward integration */
+
+  printf("\nBackward integration\n");
+  flag = CVodeB(cvadj_mem, T0, cB, &t, CV_NORMAL);
+  if(check_flag(&flag, "CVodeB", 1)) return(1);
+
+  PrintOutput(cB, NS, MXNS, wdata);
+
+  /* Free all memory */
+  CVodeFree(cvode_mem);
+  CVadjFree(cvadj_mem);
+  N_VDestroy_Serial(c);
+  N_VDestroy_Serial(cB);
+  FreeUserData(wdata);
+
+  return(0);
+}
+
+/*
+ *--------------------------------------------------------------------
+ * FUNCTIONS CALLED BY CVODES
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * This routine computes the right-hand side of the ODE system and
+ * returns it in cdot. The interaction rates are computed by calls to WebRates,
+ * and these are saved in fsave for use in preconditioning.
+ */
+
+static void f(realtype t, N_Vector c, N_Vector cdot, void *f_data)
+{
+  int i, ic, ici, idxl, idxu, idyl, idyu, iyoff, jx, jy, ns, mxns;
+  realtype dcxli, dcxui, dcyli, dcyui, x, y, *cox, *coy, *fsave, dx, dy;
+  realtype *cdata, *cdotdata;
+  WebData wdata;
+  
+  wdata = (WebData) f_data;
+  cdata = NV_DATA_S(c);
+  cdotdata = NV_DATA_S(cdot);
+  
+  mxns = wdata->mxns;
+  ns = wdata->ns;
+  fsave = wdata->fsave;
+  cox = wdata->cox;
+  coy = wdata->coy;
+  mxns = wdata->mxns;
+  dx = wdata->dx;
+  dy = wdata->dy;
+  
+  for (jy = 0; jy < MY; jy++) {
+    y = jy*dy;
+    iyoff = mxns*jy;
+    idyu = (jy == MY-1) ? -mxns : mxns;
+    idyl = (jy == 0) ? -mxns : mxns;
+    for (jx = 0; jx < MX; jx++) {
+      x = jx*dx;
+      ic = iyoff + ns*jx;
+      /* Get interaction rates at one point (x,y). */
+      WebRates(x, y, t, cdata+ic, fsave+ic, wdata);
+      idxu = (jx == MX-1) ? -ns : ns;
+      idxl = (jx == 0) ? -ns : ns;
+      for (i = 1; i <= ns; i++) {
+        ici = ic + i-1;
+        /* Do differencing in y. */
+        dcyli = cdata[ici] - cdata[ici-idyl];
+        dcyui = cdata[ici+idyu] - cdata[ici];
+        /* Do differencing in x. */
+        dcxli = cdata[ici] - cdata[ici-idxl];
+        dcxui = cdata[ici+idxu] - cdata[ici];
+        /* Collect terms and load cdot elements. */
+        cdotdata[ici] = coy[i-1]*(dcyui - dcyli) + 
+                        cox[i-1]*(dcxui - dcxli) +
+                        fsave[ici];
+      }
+    }
+  }
+}
+
+/*
+ * This routine generates the block-diagonal part of the Jacobian
+ * corresponding to the interaction rates, multiplies by -gamma, adds
+ * the identity matrix, and calls gefa to do the LU decomposition of
+ * each diagonal block. The computation of the diagonal blocks uses
+ * the preset block and grouping information. One block per group is
+ * computed. The Jacobian elements are generated by difference
+ * quotients using calls to the routine fblock.
+ *
+ * This routine can be regarded as a prototype for the general case
+ * of a block-diagonal preconditioner. The blocks are of size mp, and
+ * there are ngrp=ngx*ngy blocks computed in the block-grouping scheme.
+ */
+ 
+static int Precond(realtype t, N_Vector c, N_Vector fc,
+                   booleantype jok, booleantype *jcurPtr, 
+                   realtype gamma, void *P_data,
+                   N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3)
+{
+  realtype ***P;
+  long int **pivot, ier;
+  int i, if0, if00, ig, igx, igy, j, jj, jx, jy;
+  int *jxr, *jyr, mp, ngrp, ngx, ngy, mxmp, flag;
+  realtype uround, fac, r, r0, save, srur;
+  realtype *f1, *fsave, *cdata, *rewtdata;
+  void *cvode_mem;
+  WebData wdata;
+  N_Vector rewt;
+
+  wdata = (WebData) P_data;
+  cvode_mem = wdata->cvode_memF;
+  rewt = wdata->rewt;
+  flag = CVodeGetErrWeights(cvode_mem, rewt);
+  if(check_flag(&flag, "CVodeGetErrWeights", 1)) return(1);
+
+  cdata = NV_DATA_S(c);
+  rewtdata = NV_DATA_S(rewt);
+
+  uround = UNIT_ROUNDOFF;
+
+  P = wdata->P;
+  pivot = wdata->pivot;
+  jxr = wdata->jxr;
+  jyr = wdata->jyr;
+  mp = wdata->mp;
+  srur = wdata->srur;
+  ngrp = wdata->ngrp;
+  ngx = wdata->ngx;
+  ngy = wdata->ngy;
+  mxmp = wdata->mxmp;
+  fsave = wdata->fsave;
+
+  /* Make mp calls to fblock to approximate each diagonal block of Jacobian.
+     Here, fsave contains the base value of the rate vector and 
+     r0 is a minimum increment factor for the difference quotient. */
+
+  f1 = NV_DATA_S(vtemp1);
+
+  fac = N_VWrmsNorm (fc, rewt);
+  r0 = RCONST(1000.0)*ABS(gamma)*uround*NEQ*fac;
+  if (r0 == ZERO) r0 = ONE;
+
+  for (igy = 0; igy < ngy; igy++) {
+    jy = jyr[igy];
+    if00 = jy*mxmp;
+    for (igx = 0; igx < ngx; igx++) { 
+      jx = jxr[igx];
+      if0 = if00 + jx*mp;
+      ig = igx + igy*ngx; 
+      /* Generate ig-th diagonal block */
+      for (j = 0; j < mp; j++) {
+        /* Generate the jth column as a difference quotient */
+        jj = if0 + j; 
+        save = cdata[jj];
+        r = MAX(srur*ABS(save),r0/rewtdata[jj]);
+        cdata[jj] += r;
+        fac = -gamma/r;
+        fblock (t, cdata, jx, jy, f1, wdata);
+        for (i = 0; i < mp; i++) {
+          P[ig][j][i] = (f1[i] - fsave[if0+i])*fac;
+        }
+        cdata[jj] = save;
+      }
+    }
+  }
+  
+  /* Add identity matrix and do LU decompositions on blocks. */
+
+   for (ig = 0; ig < ngrp; ig++) {
+     denaddI(P[ig], mp);
+     ier = gefa(P[ig], mp, pivot[ig]);
+     if (ier != 0) return(1);
+   }
+
+  *jcurPtr = TRUE;
+  return(0);
+}
+
+/*
+ * This routine applies two inverse preconditioner matrices
+ * to the vector r, using the interaction-only block-diagonal Jacobian
+ * with block-grouping, denoted Jr, and Gauss-Seidel applied to the
+ * diffusion contribution to the Jacobian, denoted Jd.
+ * It first calls GSIter for a Gauss-Seidel approximation to
+ * ((I - gamma*Jd)-inverse)*r, and stores the result in z.
+ * Then it computes ((I - gamma*Jr)-inverse)*z, using LU factors of the
+ * blocks in P, and pivot information in pivot, and returns the result in z.
+ */
+
+static int PSolve(realtype t, N_Vector c, N_Vector fc,
+                  N_Vector r, N_Vector z,
+                  realtype gamma, realtype delta,
+                  int lr, void *P_data, N_Vector vtemp)
+{
+  realtype   ***P;
+  long int **pivot;
+  int jx, jy, igx, igy, iv, ig, *jigx, *jigy, mx, my, ngx, mp;
+  WebData wdata;
+
+  wdata = (WebData) P_data;
+
+  N_VScale(ONE, r, z);
+
+  /* call GSIter for Gauss-Seidel iterations */
+
+  GSIter(gamma, z, vtemp, wdata);
+
+  /* Do backsolves for inverse of block-diagonal preconditioner factor */
+ 
+  P = wdata->P;
+  pivot = wdata->pivot;
+  mx = wdata->mx;
+  my = wdata->my;
+  ngx = wdata->ngx;
+  mp = wdata->mp;
+  jigx = wdata->jigx;
+  jigy = wdata->jigy;
+
+  iv = 0;
+  for (jy = 0; jy < my; jy++) {
+    igy = jigy[jy];
+    for (jx = 0; jx < mx; jx++) {
+      igx = jigx[jx];
+      ig = igx + igy*ngx;
+      gesl(P[ig], mp, pivot[ig], &(NV_DATA_S(z)[iv]));
+      iv += mp;
+    }
+  }
+
+  return(0);
+}
+
+/*
+ * This routine computes the right-hand side of the adjoint ODE system and
+ * returns it in cBdot. The interaction rates are computed by calls to WebRates,
+ * and these are saved in fsave for use in preconditioning. The adjoint 
+ * interaction rates are computed by calls to WebRatesB.
+ */
+
+static void fB(realtype t, N_Vector c, N_Vector cB, 
+               N_Vector cBdot, void *f_data)
+{
+  int i, ic, ici, idxl, idxu, idyl, idyu, iyoff, jx, jy, ns, mxns;
+  realtype dcxli, dcxui, dcyli, dcyui, x, y, *cox, *coy, *fsave, *fBsave, dx, dy;
+  realtype *cdata, *cBdata, *cBdotdata;
+  WebData wdata;
+
+  wdata = (WebData) f_data;
+  cdata = NV_DATA_S(c);
+  cBdata = NV_DATA_S(cB);
+  cBdotdata = NV_DATA_S(cBdot);
+
+  mxns = wdata->mxns;
+  ns = wdata->ns;
+  fsave = wdata->fsave;
+  fBsave = wdata->fBsave;
+  cox = wdata->cox;
+  coy = wdata->coy;
+  mxns = wdata->mxns;
+  dx = wdata->dx;
+  dy = wdata->dy;
+
+  for (jy = 0; jy < MY; jy++) {
+    y = jy*dy;
+    iyoff = mxns*jy;
+    idyu = (jy == MY-1) ? -mxns : mxns;
+    idyl = (jy == 0) ? -mxns : mxns;
+    for (jx = 0; jx < MX; jx++) {
+      x = jx*dx;
+      ic = iyoff + ns*jx;
+      /* Get interaction rates at one point (x,y). */
+      WebRatesB(x, y, t, cdata+ic, cBdata+ic, fsave+ic, fBsave+ic, wdata);
+      idxu = (jx == MX-1) ? -ns : ns;
+      idxl = (jx == 0) ? -ns : ns;
+      for (i = 1; i <= ns; i++) {
+        ici = ic + i-1;
+        /* Do differencing in y. */
+        dcyli = cBdata[ici] - cBdata[ici-idyl];
+        dcyui = cBdata[ici+idyu] - cBdata[ici];
+        /* Do differencing in x. */
+        dcxli = cBdata[ici] - cBdata[ici-idxl];
+        dcxui = cBdata[ici+idxu] - cBdata[ici];
+        /* Collect terms and load cdot elements. */
+        cBdotdata[ici] = - coy[i-1]*(dcyui - dcyli) 
+                         - cox[i-1]*(dcxui - dcxli)
+	                 - fBsave[ici];
+      }
+    }
+  }
+}
+
+/*
+ * Preconditioner setup function for the backward problem
+ */
+
+static int PrecondB(realtype t, N_Vector c, 
+                    N_Vector cB, N_Vector fcB, booleantype jok, 
+                    booleantype *jcurPtr, realtype gamma,
+                    void *P_data,
+                    N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3)
+{
+  realtype ***P;
+  long int **pivot, ier;
+  int i, if0, if00, ig, igx, igy, j, jj, jx, jy;
+  int *jxr, *jyr, mp, ngrp, ngx, ngy, mxmp, flag;
+  realtype uround, fac, r, r0, save, srur;
+  realtype *f1, *fsave, *cdata, *rewtdata;
+  void *cvode_mem;
+  WebData wdata;
+  N_Vector rewt;
+
+  wdata = (WebData) P_data;
+  cvode_mem = CVadjGetCVodeBmem(wdata->cvadj_mem);
+  if(check_flag((void *)cvode_mem, "CVadjGetCVodeBmem", 0)) return(1);
+  rewt = wdata->rewt;
+  flag = CVodeGetErrWeights(cvode_mem, rewt);
+  if(check_flag(&flag, "CVodeGetErrWeights", 1)) return(1);
+
+  cdata = NV_DATA_S(c);
+  rewtdata = NV_DATA_S(rewt);
+
+  uround = UNIT_ROUNDOFF;
+
+  P = wdata->P;
+  pivot = wdata->pivot;
+  jxr = wdata->jxr;
+  jyr = wdata->jyr;
+  mp = wdata->mp;
+  srur = wdata->srur;
+  ngrp = wdata->ngrp;
+  ngx = wdata->ngx;
+  ngy = wdata->ngy;
+  mxmp = wdata->mxmp;
+  fsave = wdata->fsave;
+
+  /* Make mp calls to fblock to approximate each diagonal block of Jacobian.
+     Here, fsave contains the base value of the rate vector and 
+     r0 is a minimum increment factor for the difference quotient. */
+
+  f1 = NV_DATA_S(vtemp1);
+
+  fac = N_VWrmsNorm (fcB, rewt);
+  r0 = RCONST(1000.0)*ABS(gamma)*uround*NEQ*fac;
+  if (r0 == ZERO) r0 = ONE;
+
+  for (igy = 0; igy < ngy; igy++) {
+    jy = jyr[igy];
+    if00 = jy*mxmp;
+    for (igx = 0; igx < ngx; igx++) { 
+      jx = jxr[igx];
+      if0 = if00 + jx*mp;
+      ig = igx + igy*ngx; 
+      /* Generate ig-th diagonal block */
+      for (j = 0; j < mp; j++) {
+        /* Generate the jth column as a difference quotient */
+        jj = if0 + j; 
+        save = cdata[jj];
+        r = MAX(srur*ABS(save),r0/rewtdata[jj]);
+        cdata[jj] += r;
+        fac = gamma/r;
+        fblock (t, cdata, jx, jy, f1, wdata);
+        for (i = 0; i < mp; i++) {
+          P[ig][i][j] = (f1[i] - fsave[if0+i])*fac;
+        }
+        cdata[jj] = save;
+      }
+    }
+  }
+  
+  /* Add identity matrix and do LU decompositions on blocks. */
+
+   for (ig = 0; ig < ngrp; ig++) {
+     denaddI(P[ig], mp);
+     ier = gefa(P[ig], mp, pivot[ig]);
+     if (ier != 0) return(1);
+   }
+
+  *jcurPtr = TRUE;
+  return(0);
+}
+
+/*
+ * Preconditioner solve function for the backward problem
+ */
+
+static int PSolveB(realtype t, N_Vector c, 
+                   N_Vector cB, N_Vector fcB, 
+                   N_Vector r, N_Vector z,
+                   realtype gamma, realtype delta, 
+                   int lr, void *P_data, N_Vector vtemp)
+{
+  realtype ***P;
+  long int **pivot;
+  int jx, jy, igx, igy, iv, ig, *jigx, *jigy, mx, my, ngx, mp;
+  WebData wdata;
+
+  wdata = (WebData) P_data;
+
+  N_VScale(ONE, r, z);
+
+  /* call GSIter for Gauss-Seidel iterations (same routine but with gamma=-gamma) */
+
+  GSIter(-gamma, z, vtemp, wdata);
+
+  /* Do backsolves for inverse of block-diagonal preconditioner factor */
+ 
+  P = wdata->P;
+  pivot = wdata->pivot;
+  mx = wdata->mx;
+  my = wdata->my;
+  ngx = wdata->ngx;
+  mp = wdata->mp;
+  jigx = wdata->jigx;
+  jigy = wdata->jigy;
+
+  iv = 0;
+  for (jy = 0; jy < my; jy++) {
+    igy = jigy[jy];
+    for (jx = 0; jx < mx; jx++) {
+      igx = jigx[jx];
+      ig = igx + igy*ngx;
+      gesl(P[ig], mp, pivot[ig], &(NV_DATA_S(z)[iv]));
+      iv += mp;
+    }
+  }
+
+  return(0);
+}
+
+/*
+ *--------------------------------------------------------------------
+ * PRIVATE FUNCTIONS
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * Allocate space for user data structure
+ */
+
+static WebData AllocUserData(void)
+{
+  int i, ngrp = NGRP, ns = NS;
+  WebData wdata;
+
+  wdata = (WebData) malloc(sizeof *wdata);
+  for(i=0; i < ngrp; i++) {
+    (wdata->P)[i] = denalloc(ns);
+    (wdata->pivot)[i] = denallocpiv(ns);
+  }
+  wdata->rewt = N_VNew_Serial(NEQ);
+  return(wdata);
+}
+
+/*
+ * Initialize user data structure
+ */
+
+static void InitUserData(WebData wdata)
+{
+  int i, j, ns;
+  realtype *bcoef, *diff, *cox, *coy, dx, dy;
+  realtype (*acoef)[NS];
+
+  acoef = wdata->acoef;
+  bcoef = wdata->bcoef;
+  diff = wdata->diff;
+  cox = wdata->cox;
+  coy = wdata->coy;
+  ns = wdata->ns = NS;
+
+  for (j = 0; j < NS; j++) { for (i = 0; i < NS; i++) acoef[i][j] = ZERO; }
+  for (j = 0; j < NP; j++) {
+    for (i = 0; i < NP; i++) {
+      acoef[NP+i][j] = EE;
+      acoef[i][NP+j] = -GG;
+    }
+    acoef[j][j] = -AA;
+    acoef[NP+j][NP+j] = -AA;
+    bcoef[j] = BB;
+    bcoef[NP+j] = -BB;
+    diff[j] = DPREY;
+    diff[NP+j] = DPRED;
+  }
+
+  /* Set remaining problem parameters */
+
+  wdata->mxns = MXNS;
+  dx = wdata->dx = DX;
+  dy = wdata->dy = DY;
+  for (i = 0; i < ns; i++) {
+    cox[i] = diff[i]/SQR(dx);
+    coy[i] = diff[i]/SQR(dy);
+  }
+
+  /* Set remaining method parameters */
+
+  wdata->mp = MP;
+  wdata->mq = MQ;
+  wdata->mx = MX;
+  wdata->my = MY;
+  wdata->srur = RSqrt(UNIT_ROUNDOFF);
+  wdata->mxmp = MXMP;
+  wdata->ngrp = NGRP;
+  wdata->ngx = NGX;
+  wdata->ngy = NGY;
+  SetGroups(MX, NGX, wdata->jgx, wdata->jigx, wdata->jxr);
+  SetGroups(MY, NGY, wdata->jgy, wdata->jigy, wdata->jyr);
+}
+
+/*
+ * This routine sets arrays jg, jig, and jr describing
+ * a uniform partition of (0,1,2,...,m-1) into ng groups.
+ * The arrays set are:
+ *   jg    = length ng+1 array of group boundaries.
+ *           Group ig has indices j = jg[ig],...,jg[ig+1]-1.
+ *   jig   = length m array of group indices vs node index.
+ *           Node index j is in group jig[j].
+ *   jr    = length ng array of indices representing the groups.
+ *           The index for group ig is j = jr[ig].
+ */
+
+static void SetGroups(int m, int ng, int jg[], int jig[], int jr[])
+{
+  int ig, j, len1, mper, ngm1;
+  
+  mper = m/ng; /* does integer division */
+  for (ig=0; ig < ng; ig++) jg[ig] = ig*mper;
+  jg[ng] = m;
+  
+  ngm1 = ng - 1;
+  len1 = ngm1*mper;
+  for (j = 0; j < len1; j++) jig[j] = j/mper;
+  for (j = len1; j < m; j++) jig[j] = ngm1;
+
+  for (ig = 0; ig < ngm1; ig++) jr[ig] = ((2*ig+1)*mper-1)/2;
+  jr[ngm1] = (ngm1*mper+m-1)/2;
+}
+
+/*
+ * This routine computes and loads the vector of initial values. 
+ */
+
+static void CInit(N_Vector c, WebData wdata)
+{
+  int i, ici, ioff, iyoff, jx, jy, ns, mxns;
+  realtype argx, argy, x, y, dx, dy, x_factor, y_factor, *cdata;
+  
+  cdata = NV_DATA_S(c);
+  ns = wdata->ns;
+  mxns = wdata->mxns;
+  dx = wdata->dx;
+  dy = wdata->dy;
+  
+  x_factor = RCONST(4.0)/SQR(AX);
+  y_factor = RCONST(4.0)/SQR(AY);
+  for (jy = 0; jy < MY; jy++) {
+    y = jy*dy;
+    argy = SQR(y_factor*y*(AY-y)); 
+    iyoff = mxns*jy;
+    for (jx = 0; jx < MX; jx++) {
+      x = jx*dx;
+      argx = SQR(x_factor*x*(AX-x));
+      ioff = iyoff + ns*jx;
+      for (i = 1; i <= ns; i++) {
+        ici = ioff + i-1;
+        cdata[ici] = RCONST(10.0) + i*argx*argy;
+      }
+    }
+  }
+}
+
+/*
+ * This function computes and loads the final values for the adjoint variables
+ */
+
+static void CbInit(N_Vector c, int is, WebData wdata)
+{
+  int i, ici, ioff, iyoff, jx, jy, ns, mxns;
+  realtype *cdata;
+
+  realtype gu[NS];
+
+  cdata = NV_DATA_S(c);
+  ns = wdata->ns;
+  mxns = wdata->mxns;
+
+  for ( i = 1; i <= ns; i++ ) gu[i-1] = ZERO; 
+  gu[ISPEC-1] = ONE;
+
+  for (jy = 0; jy < MY; jy++) {
+    iyoff = mxns*jy;
+    for (jx = 0; jx < MX; jx++) {
+      ioff = iyoff + ns*jx;
+      for (i = 1; i <= ns; i++) {
+        ici = ioff + i-1;
+        cdata[ici] = gu[i-1];
+      }
+    }
+  }
+}
+
+/*
+ * This routine computes the interaction rates for the species
+ * c_1, ... ,c_ns (stored in c[0],...,c[ns-1]), at one spatial point 
+ * and at time t.
+ */
+
+static void WebRates(realtype x, realtype y, realtype t, realtype c[], 
+                     realtype rate[], WebData wdata)
+{
+  int i, j, ns;
+  realtype fac, *bcoef;
+  realtype (*acoef)[NS];
+
+  ns = wdata->ns;
+  acoef = wdata->acoef;
+  bcoef = wdata->bcoef;
+
+  for (i = 0; i < ns; i++)
+    rate[i] = ZERO;
+  
+  for (j = 0; j < ns; j++) 
+    for (i = 0; i < ns; i++) 
+      rate[i] += c[j] * acoef[i][j];
+  
+  fac = ONE + ALPH*x*y;
+  for (i = 0; i < ns; i++) 
+    rate[i] = c[i]*(bcoef[i]*fac + rate[i]);
+}
+
+/*
+ * This routine computes the interaction rates for the backward problem
+ */
+
+static void WebRatesB(realtype x, realtype y, realtype t, realtype c[], realtype cB[], 
+                      realtype rate[], realtype rateB[], WebData wdata)
+{
+  int i, j, ns;
+  realtype fac, *bcoef;
+  realtype (*acoef)[NS];
+
+  ns = wdata->ns;
+  acoef = wdata->acoef;
+  bcoef = wdata->bcoef;
+
+  fac = ONE + ALPH*x*y;
+
+  for (i = 0; i < ns; i++)
+    rate[i] = bcoef[i]*fac;
+  
+  for (j = 0; j < ns; j++) 
+    for (i = 0; i < ns; i++)
+      rate[i] += acoef[i][j]*c[j];
+
+  for (i = 0; i < ns; i++) {
+    rateB[i] = cB[i]*rate[i];
+    rate[i] = c[i]*rate[i];
+  }
+
+  for (j = 0; j < ns; j++) 
+    for (i = 0; i < ns; i++)
+      rateB[i] += acoef[j][i]*c[j]*cB[j];
+
+}
+
+/*
+ * This routine computes one block of the interaction terms of the
+ * system, namely block (jx,jy), for use in preconditioning.
+ * Here jx and jy count from 0.
+ */
+
+static void fblock(realtype t, realtype cdata[], int jx, int jy, 
+                   realtype cdotdata[], WebData wdata)
+{
+  int iblok, ic;
+  realtype x, y;
+
+  iblok = jx + jy*(wdata->mx);
+  y = jy*(wdata->dy);
+  x = jx*(wdata->dx);
+  ic = (wdata->ns)*(iblok);
+  WebRates(x, y, t, cdata+ic, cdotdata, wdata);
+}
+
+/*
+ * This routine performs ITMAX=5 Gauss-Seidel iterations to compute an
+ * approximation to (P-inverse)*z, where P = I - gamma*Jd, and
+ * Jd represents the diffusion contributions to the Jacobian.
+ * The answer is stored in z on return, and x is a temporary vector.
+ * The dimensions below assume a global constant NS >= ns.
+ * Some inner loops of length ns are implemented with the small
+ * vector kernels v_sum_prods, v_prod, v_inc_by_prod.
+ */
+
+static void GSIter(realtype gamma, N_Vector z, N_Vector x, WebData wdata)
+{
+  int i, ic, iter, iyoff, jx, jy, ns, mxns, mx, my, x_loc, y_loc;
+  realtype beta[NS], beta2[NS], cof1[NS], gam[NS], gam2[NS];
+  realtype temp, *cox, *coy, *xd, *zd;
+
+  xd = NV_DATA_S(x);
+  zd = NV_DATA_S(z);
+  ns = wdata->ns;
+  mx = wdata->mx;
+  my = wdata->my;
+  mxns = wdata->mxns;
+  cox = wdata->cox;
+  coy = wdata->coy;
+
+  /* Write matrix as P = D - L - U.
+     Load local arrays beta, beta2, gam, gam2, and cof1. */
+ 
+  for (i = 0; i < ns; i++) {
+    temp = ONE/(ONE + TWO*gamma*(cox[i] + coy[i]));
+    beta[i] = gamma*cox[i]*temp;
+    beta2[i] = TWO*beta[i];
+    gam[i] = gamma*coy[i]*temp;
+    gam2[i] = TWO*gam[i];
+    cof1[i] = temp;
+  }
+
+  /* Begin iteration loop.
+  Load vector x with (D-inverse)*z for first iteration. */
+
+  for (jy = 0; jy < my; jy++) {
+    iyoff = mxns*jy;
+    for (jx = 0; jx < mx; jx++) {
+      ic = iyoff + ns*jx;
+      v_prod(xd+ic, cof1, zd+ic, ns); /* x[ic+i] = cof1[i]z[ic+i] */
+    }
+  }
+  N_VConst(ZERO, z);
+
+  /* Looping point for iterations. */
+
+  for (iter=1; iter <= ITMAX; iter++) {
+
+    /* Calculate (D-inverse)*U*x if not the first iteration. */
+
+    if (iter > 1) {
+      for (jy=0; jy < my; jy++) {
+        iyoff = mxns*jy;
+        for (jx=0; jx < mx; jx++) { /* order of loops matters */
+          ic = iyoff + ns*jx;
+          x_loc = (jx == 0) ? 0 : ((jx == mx-1) ? 2 : 1);
+          y_loc = (jy == 0) ? 0 : ((jy == my-1) ? 2 : 1);
+          switch (3*y_loc+x_loc) {
+          case 0 : /* jx == 0, jy == 0 */
+            /* x[ic+i] = beta2[i]x[ic+ns+i] + gam2[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta2, xd+ic+ns, gam2, xd+ic+mxns, ns);
+            break;
+          case 1 : /* 1 <= jx <= mx-2, jy == 0 */
+            /* x[ic+i] = beta[i]x[ic+ns+i] + gam2[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta, xd+ic+ns, gam2, xd+ic+mxns, ns);
+            break;
+          case 2 : /* jx == mx-1, jy == 0 */
+            /* x[ic+i] = gam2[i]x[ic+mxns+i] */
+            v_prod(xd+ic, gam2, xd+ic+mxns, ns);
+            break;
+          case 3 : /* jx == 0, 1 <= jy <= my-2 */
+            /* x[ic+i] = beta2[i]x[ic+ns+i] + gam[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta2, xd+ic+ns, gam, xd+ic+mxns, ns);
+            break;
+          case 4 : /* 1 <= jx <= mx-2, 1 <= jy <= my-2 */
+            /* x[ic+i] = beta[i]x[ic+ns+i] + gam[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta, xd+ic+ns, gam, xd+ic+mxns, ns);
+            break;
+          case 5 : /* jx == mx-1, 1 <= jy <= my-2 */
+            /* x[ic+i] = gam[i]x[ic+mxns+i] */
+            v_prod(xd+ic, gam, xd+ic+mxns, ns);
+            break;
+          case 6 : /* jx == 0, jy == my-1 */
+            /* x[ic+i] = beta2[i]x[ic+ns+i] */
+            v_prod(xd+ic, beta2, xd+ic+ns, ns);
+            break;
+          case 7 : /* 1 <= jx <= mx-2, jy == my-1 */
+            /* x[ic+i] = beta[i]x[ic+ns+i] */
+            v_prod(xd+ic, beta, xd+ic+ns, ns);
+            break;
+          case 8 : /* jx == mx-1, jy == my-1 */
+            /* x[ic+i] = ZERO */
+            v_zero(xd+ic, ns);
+            break;
+          }
+        }
+      }
+    }  /* end if (iter > 1) */
+    
+    /* Overwrite x with [(I - (D-inverse)*L)-inverse]*x. */
+    
+    for (jy=0; jy < my; jy++) {
+      iyoff = mxns*jy;
+      for (jx=0; jx < mx; jx++) { /* order of loops matters */
+        ic = iyoff + ns*jx;
+        x_loc = (jx == 0) ? 0 : ((jx == mx-1) ? 2 : 1);
+        y_loc = (jy == 0) ? 0 : ((jy == my-1) ? 2 : 1);
+        switch (3*y_loc+x_loc) {
+        case 0 : /* jx == 0, jy == 0 */
+          break;
+        case 1 : /* 1 <= jx <= mx-2, jy == 0 */
+          /* x[ic+i] += beta[i]x[ic-ns+i] */
+          v_inc_by_prod(xd+ic, beta, xd+ic-ns, ns);
+          break;
+        case 2 : /* jx == mx-1, jy == 0 */
+          /* x[ic+i] += beta2[i]x[ic-ns+i] */
+          v_inc_by_prod(xd+ic, beta2, xd+ic-ns, ns);
+          break;
+        case 3 : /* jx == 0, 1 <= jy <= my-2 */
+          /* x[ic+i] += gam[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, gam, xd+ic-mxns, ns);
+          break;
+        case 4 : /* 1 <= jx <= mx-2, 1 <= jy <= my-2 */
+          /* x[ic+i] += beta[i]x[ic-ns+i] + gam[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam, xd+ic-mxns, ns);
+          break;
+        case 5 : /* jx == mx-1, 1 <= jy <= my-2 */
+          /* x[ic+i] += beta2[i]x[ic-ns+i] + gam[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta2, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam, xd+ic-mxns, ns);
+          break;
+        case 6 : /* jx == 0, jy == my-1 */
+          /* x[ic+i] += gam2[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, gam2, xd+ic-mxns, ns);
+          break;
+        case 7 : /* 1 <= jx <= mx-2, jy == my-1 */
+          /* x[ic+i] += beta[i]x[ic-ns+i] + gam2[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam2, xd+ic-mxns, ns);
+          break;
+        case 8 : /* jx == mx-1, jy == my-1 */
+          /* x[ic+i] += beta2[i]x[ic-ns+i] + gam2[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta2, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam2, xd+ic-mxns, ns);
+          break;
+        }
+      }
+    }
+    
+    /* Add increment x to z : z <- z+x */
+    
+    N_VLinearSum(ONE, z, ONE, x, z);
+    
+  }
+}
+
+static void v_inc_by_prod(realtype u[], realtype v[], realtype w[], int n)
+{
+  int i;  
+  for (i=0; i < n; i++) u[i] += v[i]*w[i];
+}
+
+static void v_sum_prods(realtype u[], realtype p[], realtype q[], 
+                        realtype v[], realtype w[], int n)
+{
+  int i;  
+  for (i=0; i < n; i++) u[i] = p[i]*q[i] + v[i]*w[i];
+}
+
+static void v_prod(realtype u[], realtype v[], realtype w[], int n)
+{ 
+  int i;
+  for (i=0; i < n; i++) u[i] = v[i]*w[i];
+}
+
+static void v_zero(realtype u[], int n)
+{
+  int i;  
+  for (i=0; i < n; i++) u[i] = ZERO;
+}
+
+/*
+ * Print maximum sensitivity of G for each species
+ */
+
+static void PrintOutput(N_Vector cB, int ns, int mxns, WebData wdata)
+{
+  int i, jx, jy;
+  realtype *cdata, cij, cmax, x, y;
+
+  cdata = NV_DATA_S(cB);
+
+  for (i=1; i <= ns; i++) {
+
+    cmax = ZERO;
+
+    for (jy=MY-1; jy >= 0; jy--) {
+      for (jx=0; jx < MX; jx++) {
+        cij = cdata[(i-1) + jx*ns + jy*mxns];
+        if (ABS(cij) > cmax) {
+          cmax = cij;
+          x = jx * wdata->dx;
+          y = jy * wdata->dy;
+        }
+      }
+    }
+
+    printf("\nMaximum sensitivity with respect to I.C. of species %d\n", i);
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+    printf("  mu max = %Le\n",cmax);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+    printf("  mu max = %le\n",cmax);
+#else
+    printf("  mu max = %e\n",cmax);
+#endif
+    printf("at\n");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+    printf("  x = %Le\n  y = %Le\n", x, y);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+    printf("  x = %le\n  y = %le\n", x, y);
+#else
+    printf("  x = %e\n  y = %e\n", x, y);
+#endif
+
+  }
+
+}
+
+/*
+ * Compute double space integral
+ */
+
+static realtype doubleIntgr(N_Vector c, int i, WebData wdata)
+{
+  realtype *cdata;
+  int ns, mx, my, mxns;
+  realtype dx, dy;
+  realtype intgr_xy, intgr_x;
+  int jx, jy;
+
+  cdata = NV_DATA_S(c);
+
+  ns   = wdata->ns;
+  mx   = wdata->mx;
+  my   = wdata->my;
+  mxns = wdata->mxns;
+  dx   = wdata->dx;
+  dy   = wdata->dy;
+
+  jy = 0;
+  intgr_x = cdata[(i-1)+jy*mxns];
+  for (jx = 1; jx < mx-1; jx++) {
+    intgr_x += TWO*cdata[(i-1) + jx*ns + jy*mxns]; 
+  }
+  intgr_x += cdata[(i-1)+(mx-1)*ns+jy*mxns];
+  intgr_x *= RCONST(0.5)*dx;
+  
+  intgr_xy = intgr_x;
+  
+  for (jy = 1; jy < my-1; jy++) {
+    
+    intgr_x = cdata[(i-1)+jy*mxns];
+    for (jx = 1; jx < mx-1; jx++) {
+      intgr_x += TWO*cdata[(i-1) + jx*ns + jy*mxns]; 
+    }
+    intgr_x += cdata[(i-1)+(mx-1)*ns+jy*mxns];
+    intgr_x *= RCONST(0.5)*dx;
+    
+    intgr_xy += TWO*intgr_x;
+
+  }
+  
+  jy = my-1;
+  intgr_x = cdata[(i-1)+jy*mxns];
+  for (jx = 1; jx < mx-1; jx++) {
+    intgr_x += TWO*cdata[(i-1) + jx*ns + jy*mxns]; 
+  }
+  intgr_x += cdata[(i-1)+(mx-1)*ns+jy*mxns];
+  intgr_x *= RCONST(0.5)*dx;
+  
+  intgr_xy += intgr_x;
+  
+  intgr_xy *= RCONST(0.5)*dy;
+
+  return(intgr_xy);
+}
+
+/*
+ * Free space allocated for the user data structure
+ */
+
+static void FreeUserData(WebData wdata)
+{
+  int i, ngrp;
+
+  ngrp = wdata->ngrp;
+  for(i=0; i < ngrp; i++) {
+    denfree((wdata->P)[i]);
+    denfreepiv((wdata->pivot)[i]);
+  }
+  N_VDestroy_Serial(wdata->rewt);
+  free(wdata);
+}
+
+/* 
+ * Check function return value.
+ *    opt == 0 means SUNDIALS function allocates memory so check if
+ *             returned NULL pointer
+ *    opt == 1 means SUNDIALS function returns a flag so check if
+ *             flag >= 0
+ *    opt == 2 means function allocates memory so check if returned
+ *             NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+	      funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvakxb.out b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvakxb.out
new file mode 100644
index 0000000..5ae39aa
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvakxb.out
@@ -0,0 +1,48 @@
+Create and allocate CVODES memory for forward run
+ 
+Allocate global memory
+ 
+Forward integration ... done (ncheck = 10)
+ 
+   g = int_x int_y c6(Tfinal,x,y) dx dy = 35988.918560
+ 
+ 
+Create and allocate CVODES memory for backward run
+ 
+Backward integration
+ 
+Maximum sensitivity with respect to I.C. of species 1
+  mu max = 5.060721e-04
+at
+  x = 9.473684e-01
+  y = 1.000000e+00
+ 
+Maximum sensitivity with respect to I.C. of species 2
+  mu max = 4.819976e-04
+at
+  x = 9.473684e-01
+  y = 1.000000e+00
+ 
+Maximum sensitivity with respect to I.C. of species 3
+  mu max = 4.598256e-04
+at
+  x = 9.473684e-01
+  y = 1.000000e+00
+ 
+Maximum sensitivity with respect to I.C. of species 4
+  mu max = 1.152169e-11
+at
+  x = 0.000000e+00
+  y = 0.000000e+00
+ 
+Maximum sensitivity with respect to I.C. of species 5
+  mu max = 1.100880e-11
+at
+  x = 0.000000e+00
+  y = 0.000000e+00
+ 
+Maximum sensitivity with respect to I.C. of species 6
+  mu max = 2.099096e-11
+at
+  x = 1.000000e+00
+  y = 1.000000e+00
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvbx.c b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvbx.c
new file mode 100644
index 0000000..d26b1bb
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvbx.c
@@ -0,0 +1,437 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:34:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Example problem:
+ *
+ * The following is a simple example problem with a banded Jacobian,
+ * with the program for its solution by CVODES.
+ * The problem is the semi-discrete form of the advection-diffusion
+ * equation in 2-D:
+ *   du/dt = d^2 u / dx^2 + .5 du/dx + d^2 u / dy^2
+ * on the rectangle 0 <= x <= 2, 0 <= y <= 1, and the time
+ * interval 0 <= t <= 1. Homogeneous Dirichlet boundary conditions
+ * are posed, and the initial condition is
+ *   u(x,y,t=0) = x(2-x)y(1-y)exp(5xy).
+ * The PDE is discretized on a uniform MX+2 by MY+2 grid with
+ * central differencing, and with boundary values eliminated,
+ * leaving an ODE system of size NEQ = MX*MY.
+ * This program solves the problem with the BDF method, Newton
+ * iteration with the CVBAND band linear solver, and a user-supplied
+ * Jacobian routine.
+ * It uses scalar relative and absolute tolerances.
+ * Output is printed at t = .1, .2, ..., 1.
+ * Run statistics (optional outputs) are printed at the end.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+/* Header files with a description of contents used in cvbx.c */
+
+#include "sundialstypes.h"   /* definition of type realtype                   */
+#include "cvodes.h"          /* prototypes for CVode* functions and constants */
+                             /* CV_BDF, CV_NEWTON, CV_SS, CV_NORMAL, and      */
+                             /* CV_SUCCESS                                    */
+#include "cvband.h"          /* prototype for CVBand                          */
+#include "nvector_serial.h"  /* definitions of type N_Vector, macro           */
+                             /* NV_DATA_S, and prototypes for N_VNew_Serial   */
+                             /* and N_VDestroy_Serial                         */
+#include "band.h"            /* definitions of type BandMat and macros        */
+
+/* Problem Constants */
+
+#define XMAX  RCONST(2.0)    /* domain boundaries         */
+#define YMAX  RCONST(1.0)
+#define MX    10             /* mesh dimensions           */
+#define MY    5
+#define NEQ   MX*MY          /* number of equations       */
+#define ATOL  RCONST(1.0e-5) /* scalar absolute tolerance */
+#define T0    RCONST(0.0)    /* initial time              */
+#define T1    RCONST(0.1)    /* first output time         */
+#define DTOUT RCONST(0.1)    /* output time increment     */
+#define NOUT  10             /* number of output times    */
+
+#define ZERO RCONST(0.0)
+#define HALF RCONST(0.5)
+#define ONE  RCONST(1.0)
+#define TWO  RCONST(2.0)
+#define FIVE RCONST(5.0)
+
+/* User-defined vector access macro IJth */
+
+/* IJth is defined in order to isolate the translation from the
+   mathematical 2-dimensional structure of the dependent variable vector
+   to the underlying 1-dimensional storage. 
+   IJth(vdata,i,j) references the element in the vdata array for
+   u at mesh point (i,j), where 1 <= i <= MX, 1 <= j <= MY.
+   The vdata array is obtained via the macro call vdata = NV_DATA_S(v),
+   where v is an N_Vector. 
+   The variables are ordered by the y index j, then by the x index i. */
+
+#define IJth(vdata,i,j) (vdata[(j-1) + (i-1)*MY])
+
+/* Type : UserData (contains grid constants) */
+
+typedef struct {
+  realtype dx, dy, hdcoef, hacoef, vdcoef;
+} *UserData;
+
+/* Private Helper Functions */
+
+static void SetIC(N_Vector u, UserData data);
+static void PrintHeader(realtype reltol, realtype abstol, realtype umax);
+static void PrintOutput(realtype t, realtype umax, long int nst);
+static void PrintFinalStats(void *cvode_mem);
+
+/* Private function to check function return values */
+
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/* Functions Called by the Solver */
+
+static void f(realtype t, N_Vector u, N_Vector udot, void *f_data);
+static void Jac(long int N, long int mu, long int ml, BandMat J,
+                realtype t, N_Vector u, N_Vector fu, void *jac_data,
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/*
+ *-------------------------------
+ * Main Program
+ *-------------------------------
+ */
+
+int main(void)
+{
+  realtype dx, dy, reltol, abstol, t, tout, umax;
+  N_Vector u;
+  UserData data;
+  void *cvode_mem;
+  int iout, flag;
+  long int nst;
+
+  u = NULL;
+  data = NULL;
+  cvode_mem = NULL;
+
+  /* Create a serial vector */
+
+  u = N_VNew_Serial(NEQ);  /* Allocate u vector */
+  if(check_flag((void*)u, "N_VNew_Serial", 0)) return(1);
+
+  reltol = ZERO;  /* Set the tolerances */
+  abstol = ATOL;
+
+  data = (UserData) malloc(sizeof *data);  /* Allocate data memory */
+  if(check_flag((void *)data, "malloc", 2)) return(1);
+  dx = data->dx = XMAX/(MX+1);  /* Set grid coefficients in data */
+  dy = data->dy = YMAX/(MY+1);
+  data->hdcoef = ONE/(dx*dx);
+  data->hacoef = HALF/(TWO*dx);
+  data->vdcoef = ONE/(dy*dy);
+
+  SetIC(u, data);  /* Initialize u vector */
+
+  /* 
+     Call CvodeCreate to create integrator memory 
+
+     CV_BDF     specifies the Backward Differentiation Formula
+     CV_NEWTON  specifies a Newton iteration
+
+     A pointer to the integrator problem memory is returned and
+     stored in cvode_mem.  
+  */
+
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  /* 
+     Call CVodeMalloc to initialize the integrator memory: 
+
+     cvode_mem is the pointer to the integrator memory returned by CVodeCreate
+     f       is the user's right hand side function in y'=f(t,y)
+     T0      is the initial time
+     u       is the initial dependent variable vector
+     CV_SS   specifies scalar relative and absolute tolerances
+     reltol  is the scalar relative tolerance
+     &abstol is a pointer to the scalar absolute tolerance
+  */
+
+  flag = CVodeMalloc(cvode_mem, f, T0, u, CV_SS, reltol, &abstol);
+  if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  /* Set the pointer to user-defined data */
+
+  flag = CVodeSetFdata(cvode_mem, data);
+  if(check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+
+  /* Call CVBand to specify the CVBAND band linear solver */
+
+  flag = CVBand(cvode_mem, NEQ, MY, MY);
+  if(check_flag(&flag, "CVBand", 1)) return(1);
+
+  /* Set the user-supplied Jacobian routine Jac and
+     the pointer to the user-defined block data. */
+
+  flag = CVBandSetJacFn(cvode_mem, Jac, data);
+  if(check_flag(&flag, "CVBandSetJacFn", 1)) return(1);
+
+  /* In loop over output points: call CVode, print results, test for errors */
+
+  umax = N_VMaxNorm(u);
+  PrintHeader(reltol, abstol, umax);
+  for(iout=1, tout=T1; iout <= NOUT; iout++, tout += DTOUT) {
+    flag = CVode(cvode_mem, tout, u, &t, CV_NORMAL);
+    if(check_flag(&flag, "CVode", 1)) break;
+    umax = N_VMaxNorm(u);
+    flag = CVodeGetNumSteps(cvode_mem, &nst);
+    check_flag(&flag, "CVodeGetNumSteps", 1);
+    PrintOutput(t, umax, nst);
+  }
+
+  PrintFinalStats(cvode_mem);  /* Print some final statistics   */
+
+  N_VDestroy_Serial(u);  /* Free the u vector */
+  CVodeFree(cvode_mem);  /* Free the integrator memory */
+  free(data);            /* Free the user data */
+
+  return(0);
+}
+
+/*
+ *-------------------------------
+ * Functions called by the solver
+ *-------------------------------
+ */
+
+/* f routine. Compute f(t,u). */
+
+static void f(realtype t, N_Vector u,N_Vector udot, void *f_data)
+{
+  realtype uij, udn, uup, ult, urt, hordc, horac, verdc, hdiff, hadv, vdiff;
+  realtype *udata, *dudata;
+  int i, j;
+  UserData data;
+
+  udata = NV_DATA_S(u);
+  dudata = NV_DATA_S(udot);
+
+  /* Extract needed constants from data */
+
+  data = (UserData) f_data;
+  hordc = data->hdcoef;
+  horac = data->hacoef;
+  verdc = data->vdcoef;
+
+  /* Loop over all grid points. */
+
+  for (j=1; j <= MY; j++) {
+
+    for (i=1; i <= MX; i++) {
+
+      /* Extract u at x_i, y_j and four neighboring points */
+
+      uij = IJth(udata, i, j);
+      udn = (j == 1)  ? ZERO : IJth(udata, i, j-1);
+      uup = (j == MY) ? ZERO : IJth(udata, i, j+1);
+      ult = (i == 1)  ? ZERO : IJth(udata, i-1, j);
+      urt = (i == MX) ? ZERO : IJth(udata, i+1, j);
+
+      /* Set diffusion and advection terms and load into udot */
+
+      hdiff = hordc*(ult - TWO*uij + urt);
+      hadv = horac*(urt - ult);
+      vdiff = verdc*(uup - TWO*uij + udn);
+      IJth(dudata, i, j) = hdiff + hadv + vdiff;
+    }
+  }
+}
+
+/* Jacobian routine. Compute J(t,u). */
+
+static void Jac(long int N, long int mu, long int ml, BandMat J,
+                realtype t, N_Vector u, N_Vector fu, void *jac_data,
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  long int i, j, k;
+  realtype *kthCol, hordc, horac, verdc;
+  UserData data;
+  
+  /*
+    The components of f = udot that depend on u(i,j) are
+    f(i,j), f(i-1,j), f(i+1,j), f(i,j-1), f(i,j+1), with
+      df(i,j)/du(i,j) = -2 (1/dx^2 + 1/dy^2)
+      df(i-1,j)/du(i,j) = 1/dx^2 + .25/dx  (if i > 1)
+      df(i+1,j)/du(i,j) = 1/dx^2 - .25/dx  (if i < MX)
+      df(i,j-1)/du(i,j) = 1/dy^2           (if j > 1)
+      df(i,j+1)/du(i,j) = 1/dy^2           (if j < MY)
+  */
+
+  data = (UserData) jac_data;
+  hordc = data->hdcoef;
+  horac = data->hacoef;
+  verdc = data->vdcoef;
+  
+  for (j=1; j <= MY; j++) {
+    for (i=1; i <= MX; i++) {
+      k = j-1 + (i-1)*MY;
+      kthCol = BAND_COL(J,k);
+
+      /* set the kth column of J */
+
+      BAND_COL_ELEM(kthCol,k,k) = -TWO*(verdc+hordc);
+      if (i != 1)  BAND_COL_ELEM(kthCol,k-MY,k) = hordc + horac;
+      if (i != MX) BAND_COL_ELEM(kthCol,k+MY,k) = hordc - horac;
+      if (j != 1)  BAND_COL_ELEM(kthCol,k-1,k)  = verdc;
+      if (j != MY) BAND_COL_ELEM(kthCol,k+1,k)  = verdc;
+    }
+  }
+}
+
+/*
+ *-------------------------------
+ * Private helper functions
+ *-------------------------------
+ */
+
+/* Set initial conditions in u vector */
+
+static void SetIC(N_Vector u, UserData data)
+{
+  int i, j;
+  realtype x, y, dx, dy;
+  realtype *udata;
+
+  /* Extract needed constants from data */
+
+  dx = data->dx;
+  dy = data->dy;
+
+  /* Set pointer to data array in vector u. */
+
+  udata = NV_DATA_S(u);
+
+  /* Load initial profile into u vector */
+  
+  for (j=1; j <= MY; j++) {
+    y = j*dy;
+    for (i=1; i <= MX; i++) {
+      x = i*dx;
+      IJth(udata,i,j) = x*(XMAX - x)*y*(YMAX - y)*exp(FIVE*x*y);
+    }
+  }  
+}
+
+/* Print first lines of output (problem description) */
+
+static void PrintHeader(realtype reltol, realtype abstol, realtype umax)
+{
+  printf("\n2-D Advection-Diffusion Equation\n");
+  printf("Mesh dimensions = %d X %d\n", MX, MY);
+  printf("Total system size = %d\n", NEQ);
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("Tolerance parameters: reltol = %Lg   abstol = %Lg\n\n", reltol, abstol);
+  printf("At t = %Lg      max.norm(u) =%14.6Le \n", T0, umax);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("Tolerance parameters: reltol = %lg   abstol = %lg\n\n", reltol, abstol);
+  printf("At t = %lg      max.norm(u) =%14.6le \n", T0, umax);
+#else
+  printf("Tolerance parameters: reltol = %g   abstol = %g\n\n", reltol, abstol);
+  printf("At t = %g      max.norm(u) =%14.6e \n", T0, umax);
+#endif
+
+  return;
+}
+
+/* Print current value */
+
+static void PrintOutput(realtype t, realtype umax, long int nst)
+{
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("At t = %4.2Lf   max.norm(u) =%14.6Le   nst = %4ld\n", t, umax, nst);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("At t = %4.2f   max.norm(u) =%14.6le   nst = %4ld\n", t, umax, nst);
+#else
+  printf("At t = %4.2f   max.norm(u) =%14.6e   nst = %4ld\n", t, umax, nst);
+#endif
+
+  return;
+}
+
+/* Get and print some final statistics */
+
+static void PrintFinalStats(void *cvode_mem)
+{
+  int flag;
+  long int nst, nfe, nsetups, netf, nni, ncfn, njeB, nfeB;
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  flag = CVBandGetNumJacEvals(cvode_mem, &njeB);
+  check_flag(&flag, "CVBandGetNumJacEvals", 1);
+  flag = CVBandGetNumRhsEvals(cvode_mem, &nfeB);
+  check_flag(&flag, "CVBandGetNumRhsEvals", 1);
+
+  printf("\nFinal Statistics:\n");
+  printf("nst = %-6ld nfe  = %-6ld nsetups = %-6ld nfeB = %-6ld njeB = %ld\n",
+	 nst, nfe, nsetups, nfeB, njeB);
+  printf("nni = %-6ld ncfn = %-6ld netf = %ld\n \n",
+	 nni, ncfn, netf);
+
+  return;
+}
+
+/* Check function return value...
+     opt == 0 means SUNDIALS function allocates memory so check if
+              returned NULL pointer
+     opt == 1 means SUNDIALS function returns a flag so check if
+              flag >= 0
+     opt == 2 means function allocates memory so check if returned
+              NULL pointer */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+              funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvbx.out b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvbx.out
new file mode 100644
index 0000000..deaddd4
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvbx.out
@@ -0,0 +1,22 @@
+
+2-D Advection-Diffusion Equation
+Mesh dimensions = 10 X 5
+Total system size = 50
+Tolerance parameters: reltol = 0   abstol = 1e-05
+
+At t = 0      max.norm(u) =  8.954716e+01 
+At t = 0.10   max.norm(u) =  4.132889e+00   nst =   85
+At t = 0.20   max.norm(u) =  1.039294e+00   nst =  103
+At t = 0.30   max.norm(u) =  2.979829e-01   nst =  113
+At t = 0.40   max.norm(u) =  8.765774e-02   nst =  120
+At t = 0.50   max.norm(u) =  2.625637e-02   nst =  126
+At t = 0.60   max.norm(u) =  7.830425e-03   nst =  130
+At t = 0.70   max.norm(u) =  2.329387e-03   nst =  134
+At t = 0.80   max.norm(u) =  6.953434e-04   nst =  137
+At t = 0.90   max.norm(u) =  2.115983e-04   nst =  140
+At t = 1.00   max.norm(u) =  6.556853e-05   nst =  142
+
+Final Statistics:
+nst = 142    nfe  = 173    nsetups = 23     nfeB = 0      njeB = 3
+nni = 170    ncfn = 0      netf = 3
+ 
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdemd.c b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdemd.c
new file mode 100644
index 0000000..f0c24bd
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdemd.c
@@ -0,0 +1,770 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:34:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Demonstration program for CVODES - direct linear solvers.
+ * Two separate problems are solved using both the CV_ADAMS and CV_BDF
+ * linear multistep methods in combination with CV_FUNCTIONAL and
+ * CV_NEWTON iterations:
+ *
+ * Problem 1: Van der Pol oscillator
+ *   xdotdot - 3*(1 - x^2)*xdot + x = 0, x(0) = 2, xdot(0) = 0.
+ * This second-order ODE is converted to a first-order system by
+ * defining y0 = x and y1 = xdot.
+ * The NEWTON iteration cases use the following types of Jacobian
+ * approximation: (1) dense, user-supplied, (2) dense, difference
+ * quotient approximation, (3) diagonal approximation.
+ *
+ * Problem 2: ydot = A * y, where A is a banded lower triangular
+ * matrix derived from 2-D advection PDE.
+ * The NEWTON iteration cases use the following types of Jacobian
+ * approximation: (1) band, user-supplied, (2) band, difference
+ * quotient approximation, (3) diagonal approximation.
+ *
+ * For each problem, in the series of eight runs, CVodeMalloc is
+ * called only once, for the first run, whereas CVodeReInit is
+ * called for each of the remaining seven runs.
+ *
+ * Notes: This program demonstrates the usage of the sequential
+ * macros NV_Ith_S, NV_DATA_S, DENSE_ELEM, BAND_COL, and
+ * BAND_COL_ELEM. The NV_Ith_S macro is used to reference the
+ * components of an N_Vector. It works for any size N=NEQ, but
+ * due to efficiency concerns it should only by used when the
+ * problem size is small. The Problem 1 right hand side and
+ * Jacobian functions f1 and Jac1 both use NV_Ith_S. The NV_DATA_S
+ * macro gives the user access to the memory used for the component
+ * storage of an N_Vector. In the sequential case, the user may
+ * assume that this is one contiguous array of reals. The NV_DATA_S
+ * macro gives a more efficient means (than the NV_Ith_S macro) to
+ * access the components of an N_Vector and should be used when the
+ * problem size is large. The Problem 2 right hand side function f2
+ * uses the NV_DATA_S macro. The DENSE_ELEM macro used in Jac1
+ * gives access to an element of a dense matrix of type DenseMat.
+ * It should be used only when the problem size is small (the size
+ * of a DenseMat is NEQ x NEQ) due to efficiency concerns. For
+ * larger problem sizes, the macro DENSE_COL can be used in order
+ * to work directly with a column of a DenseMat. The BAND_COL and
+ * BAND_COL_ELEM allow efficient columnwise access to the elements
+ * of a band matrix of type BandMat. These macros are used in the
+ * Jac2 function.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include "sundialstypes.h"   /* definition of realtype              */
+#include "cvodes.h"          /* main integrator header file         */
+#include "cvdense.h"         /* use CVDENSE linear solver           */
+#include "cvband.h"          /* use CVBAND linear solver            */
+#include "cvdiag.h"          /* use CVDIAG linear solver            */
+#include "nvector_serial.h"  /* definition of type N_Vector and the */
+                             /* macro NV_Ith_S                      */
+#include "sundialsmath.h"    /* contains the macros ABS and SQR     */
+
+/* Shared Problem Constants */
+
+#define ATOL RCONST(1.0e-6)
+#define RTOL RCONST(0.0)
+
+#define ZERO   RCONST(0.0)
+#define ONE    RCONST(1.0)
+#define TWO    RCONST(2.0)
+#define THIRTY RCONST(30.0)
+
+/* Problem #1 Constants */
+
+#define P1_NEQ        2
+#define P1_ETA        RCONST(3.0)
+#define P1_NOUT       4
+#define P1_T0         RCONST(0.0)
+#define P1_T1         RCONST(1.39283880203)
+#define P1_DTOUT      RCONST(2.214773875)
+#define P1_TOL_FACTOR RCONST(1.0e4)
+
+/* Problem #2 Constants */
+
+#define P2_MESHX      5
+#define P2_MESHY      5
+#define P2_NEQ        P2_MESHX*P2_MESHY
+#define P2_ALPH1      RCONST(1.0)
+#define P2_ALPH2      RCONST(1.0)
+#define P2_NOUT       5
+#define P2_ML         5
+#define P2_MU         0
+#define P2_T0         RCONST(0.0)
+#define P2_T1         RCONST(0.01)
+#define P2_TOUT_MULT  RCONST(10.0)
+#define P2_TOL_FACTOR RCONST(1.0e3)
+
+/* Linear Solver Options */
+
+enum {FUNC, DENSE_USER, DENSE_DQ, DIAG, BAND_USER, BAND_DQ};
+
+/* Private Helper Functions */
+
+static int  Problem1(void);
+static void PrintIntro1(void);
+static void PrintHeader1(void);
+static void PrintOutput1(realtype t, realtype y0, realtype y1, int qu, realtype hu);
+static int  Problem2(void);
+static void PrintIntro2(void);
+static void PrintHeader2(void);
+static void PrintOutput2(realtype t, realtype erm, int qu, realtype hu);
+static realtype MaxError(N_Vector y, realtype t);
+static int PrepareNextRun(void *cvode_mem, int lmm, int miter, long int mu,
+                          long int ml);
+static void PrintErrOutput(realtype tol_factor);
+static void PrintFinalStats(void *cvode_mem, int miter, realtype ero);
+static void PrintErrInfo(int nerr);
+
+/* Functions Called by the Solver */
+
+static void f1(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+static void Jac1(long int N, DenseMat J, realtype tn,
+                 N_Vector y, N_Vector fy, void *jac_data,
+                 N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+static void f2(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+static void Jac2(long int N, long int mu, long int ml, BandMat J,
+                 realtype tn, N_Vector y, N_Vector fy, void *jac_data,
+                 N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/* Private function to check function return values */
+
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/* Implementation */
+
+int main(void)
+{
+  int nerr;
+
+  nerr = Problem1();
+  nerr += Problem2();
+  PrintErrInfo(nerr);
+
+  return(0);
+}
+
+static int Problem1(void)
+{
+  realtype reltol=RTOL, abstol=ATOL, t, tout, ero, er;
+  int miter, flag, temp_flag, iout, nerr=0;
+  N_Vector y;
+  void *cvode_mem;
+  booleantype firstrun;
+  int qu;
+  realtype hu;
+
+  y = NULL;
+  cvode_mem = NULL;
+
+  y = N_VNew_Serial(P1_NEQ);
+  if(check_flag((void *)y, "N_VNew_Serial", 0)) return(1);
+  PrintIntro1();
+
+  cvode_mem = CVodeCreate(CV_ADAMS, CV_FUNCTIONAL);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  for (miter=FUNC; miter <= DIAG; miter++) {
+    ero = ZERO;
+    NV_Ith_S(y,0) = TWO;
+    NV_Ith_S(y,1) = ZERO;
+
+    firstrun = (miter==FUNC);
+    if (firstrun) {
+      flag = CVodeMalloc(cvode_mem, f1, P1_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+    } else {
+      flag = CVodeSetIterType(cvode_mem, CV_NEWTON);
+      if(check_flag(&flag, "CVodeSetIterType", 1)) ++nerr;
+      flag = CVodeReInit(cvode_mem, f1, P1_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeReInit", 1)) return(1);
+    }
+      
+    flag = PrepareNextRun(cvode_mem, CV_ADAMS, miter, 0, 0);
+    if(check_flag(&flag, "PrepareNextRun", 1)) return(1);
+
+    PrintHeader1();
+
+    for(iout=1, tout=P1_T1; iout <= P1_NOUT; iout++, tout += P1_DTOUT) {
+      flag = CVode(cvode_mem, tout, y, &t, CV_NORMAL);
+      check_flag(&flag, "CVode", 1);
+      temp_flag = CVodeGetLastOrder(cvode_mem, &qu);
+      if(check_flag(&temp_flag, "CVodeGetLastOrder", 1)) ++nerr;
+      temp_flag = CVodeGetLastStep(cvode_mem, &hu);
+      if(check_flag(&temp_flag, "CVodeGetLastStep", 1)) ++nerr;
+      PrintOutput1(t, NV_Ith_S(y,0), NV_Ith_S(y,1), qu, hu);
+      if (flag != CV_SUCCESS) {
+        nerr++;
+        break;
+      }
+      if (iout%2 == 0) {
+        er = ABS(NV_Ith_S(y,0)) / abstol;
+        if (er > ero) ero = er;
+        if (er > P1_TOL_FACTOR) {
+          nerr++;
+	  PrintErrOutput(P1_TOL_FACTOR);
+        }
+      }
+    }
+    
+    PrintFinalStats(cvode_mem, miter, ero);
+  }
+
+  CVodeFree(cvode_mem);
+
+  cvode_mem = CVodeCreate(CV_BDF, CV_FUNCTIONAL);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  for (miter=FUNC; miter <= DIAG; miter++) {
+    ero = ZERO;
+    NV_Ith_S(y,0) = TWO;
+    NV_Ith_S(y,1) = ZERO;
+      
+    firstrun = (miter==FUNC);
+    if (firstrun) {
+      flag = CVodeMalloc(cvode_mem, f1, P1_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+    } else {
+      flag = CVodeSetIterType(cvode_mem, CV_NEWTON);
+      if(check_flag(&flag, "CVodeSetIterType", 1)) ++nerr;
+      flag = CVodeReInit(cvode_mem, f1, P1_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeReInit", 1)) return(1);
+    }
+      
+    flag = PrepareNextRun(cvode_mem, CV_BDF, miter, 0, 0);     
+    if(check_flag(&flag, "PrepareNextRun", 1)) return(1);
+
+    PrintHeader1();
+      
+    for(iout=1, tout=P1_T1; iout <= P1_NOUT; iout++, tout += P1_DTOUT) {
+      flag = CVode(cvode_mem, tout, y, &t, CV_NORMAL);
+      check_flag(&flag, "CVode", 1);
+      temp_flag = CVodeGetLastOrder(cvode_mem, &qu);
+      if(check_flag(&temp_flag, "CVodeGetLastOrder", 1)) ++nerr;
+      temp_flag = CVodeGetLastStep(cvode_mem, &hu);
+      if(check_flag(&temp_flag, "CVodeGetLastStep", 1)) ++nerr;
+      PrintOutput1(t, NV_Ith_S(y,0), NV_Ith_S(y,1), qu, hu);
+      if (flag != CV_SUCCESS) {
+        nerr++;
+        break;
+      }
+      if (iout%2 == 0) {
+        er = ABS(NV_Ith_S(y,0)) / abstol;
+        if (er > ero) ero = er;
+        if (er > P1_TOL_FACTOR) {
+          nerr++;
+          PrintErrOutput(P1_TOL_FACTOR);
+        }
+      }
+    }
+    
+    PrintFinalStats(cvode_mem, miter, ero);
+  }
+
+  CVodeFree(cvode_mem);
+  N_VDestroy_Serial(y);
+
+  return(nerr);
+}
+
+static void PrintIntro1(void)
+{
+  printf("Demonstration program for CVODE package - direct linear solvers\n");
+  printf("\n\n");
+  printf("Problem 1: Van der Pol oscillator\n");
+  printf(" xdotdot - 3*(1 - x^2)*xdot + x = 0, x(0) = 2, xdot(0) = 0\n");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf(" neq = %d,  itol = %s,  reltol = %.2Lg,  abstol = %.2Lg",
+	 P1_NEQ, "CV_SS", RTOL, ATOL);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf(" neq = %d,  itol = %s,  reltol = %.2lg,  abstol = %.2lg",
+	 P1_NEQ, "CV_SS", RTOL, ATOL);
+#else
+  printf(" neq = %d,  itol = %s,  reltol = %.2g,  abstol = %.2g",
+	 P1_NEQ, "CV_SS", RTOL, ATOL);
+#endif
+}
+
+static void PrintHeader1(void)
+{
+  printf("\n     t           x              xdot         qu     hu \n");
+
+  return;
+}
+
+static void PrintOutput1(realtype t, realtype y0, realtype y1, int qu, realtype hu)
+{
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%10.5Lf    %12.5Le   %12.5Le   %2d    %6.4Le\n", t, y0, y1, qu, hu);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%10.5f    %12.5le   %12.5le   %2d    %6.4le\n", t, y0, y1, qu, hu);
+#else
+  printf("%10.5f    %12.5e   %12.5e   %2d    %6.4e\n", t, y0, y1, qu, hu);
+#endif
+
+  return;
+}
+
+static void f1(realtype t, N_Vector y, N_Vector ydot, void *f_data)
+{
+  realtype y0, y1;
+  
+  y0 = NV_Ith_S(y,0);
+  y1 = NV_Ith_S(y,1);
+
+  NV_Ith_S(ydot,0) = y1;
+  NV_Ith_S(ydot,1) = (ONE - SQR(y0))* P1_ETA * y1 - y0;
+} 
+
+static void Jac1(long int N, DenseMat J, realtype tn,
+                 N_Vector y, N_Vector fy, void *jac_data,
+                 N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  realtype y0, y1;
+
+  y0 = NV_Ith_S(y,0);
+  y1 = NV_Ith_S(y,1);
+
+  DENSE_ELEM(J,0,1) = ONE;
+  DENSE_ELEM(J,1,0) = -TWO * P1_ETA * y0 * y1 - ONE;
+  DENSE_ELEM(J,1,1) = P1_ETA * (ONE - SQR(y0));
+}
+
+static int Problem2(void)
+{
+  realtype reltol=RTOL, abstol=ATOL, t, tout, er, erm, ero;
+  int miter, flag, temp_flag, nerr=0;
+  N_Vector y;
+  void *cvode_mem;
+  booleantype firstrun;
+  int qu, iout;
+  realtype hu;
+
+  y = NULL;
+  cvode_mem = NULL;
+
+  y = N_VNew_Serial(P2_NEQ);
+  if(check_flag((void *)y, "N_VNew", 0)) return(1);
+
+  PrintIntro2();
+
+  cvode_mem = CVodeCreate(CV_ADAMS, CV_FUNCTIONAL);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  for (miter=FUNC; miter <= BAND_DQ; miter++) {
+    if ((miter==DENSE_USER) || (miter==DENSE_DQ)) continue;
+    ero = ZERO;
+    N_VConst(ZERO, y);
+    NV_Ith_S(y,0) = ONE;
+      
+    firstrun = (miter==FUNC);
+    if (firstrun) {
+      flag = CVodeMalloc(cvode_mem, f2, P2_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+    } else {
+      flag = CVodeSetIterType(cvode_mem, CV_NEWTON);
+      if(check_flag(&flag, "CVodeSetIterType", 1)) ++nerr;
+      flag = CVodeReInit(cvode_mem, f2, P2_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeReInit", 1)) return(1);
+    }
+      
+    flag = PrepareNextRun(cvode_mem, CV_ADAMS, miter, P2_MU, P2_ML);
+    if(check_flag(&flag, "PrepareNextRun", 1)) return(1);
+
+    PrintHeader2();
+
+    for(iout=1, tout=P2_T1; iout <= P2_NOUT; iout++, tout*=P2_TOUT_MULT) {
+      flag = CVode(cvode_mem, tout, y, &t, CV_NORMAL);
+      check_flag(&flag, "CVode", 1);
+      erm = MaxError(y, t);
+      temp_flag = CVodeGetLastOrder(cvode_mem, &qu);
+      if(check_flag(&temp_flag, "CVodeGetLastOrder", 1)) ++nerr;
+      temp_flag = CVodeGetLastStep(cvode_mem, &hu);
+      if(check_flag(&temp_flag, "CVodeGetLastStep", 1)) ++nerr;
+      PrintOutput2(t, erm, qu, hu);
+      if (flag != CV_SUCCESS) {
+        nerr++;
+        break;
+      }
+      er = erm / abstol;
+        if (er > ero) ero = er;
+        if (er > P2_TOL_FACTOR) {
+          nerr++;
+          PrintErrOutput(P2_TOL_FACTOR);
+        }
+    }
+    
+    PrintFinalStats(cvode_mem, miter, ero);
+  }
+
+  CVodeFree(cvode_mem);
+
+  cvode_mem = CVodeCreate(CV_BDF, CV_FUNCTIONAL);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  for (miter=FUNC; miter <= BAND_DQ; miter++) {
+    if ((miter==DENSE_USER) || (miter==DENSE_DQ)) continue;
+    ero = ZERO;
+    N_VConst(ZERO, y);
+    NV_Ith_S(y,0) = ONE;
+      
+    firstrun = (miter==FUNC);
+    if (firstrun) {
+      flag = CVodeMalloc(cvode_mem, f2, P2_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+    } else {
+      flag = CVodeSetIterType(cvode_mem, CV_NEWTON);
+      if(check_flag(&flag, "CVodeSetIterType", 1)) ++nerr;
+      flag = CVodeReInit(cvode_mem, f2, P2_T0, y, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeReInit", 1)) return(1);
+    }
+
+    flag = PrepareNextRun(cvode_mem, CV_BDF, miter, P2_MU, P2_ML);
+    if(check_flag(&flag, "PrepareNextRun", 1)) return(1);
+
+    PrintHeader2();
+      
+    for(iout=1, tout=P2_T1; iout <= P2_NOUT; iout++, tout*=P2_TOUT_MULT) {
+      flag = CVode(cvode_mem, tout, y, &t, CV_NORMAL);
+      check_flag(&flag, "CVode", 1);
+      erm = MaxError(y, t);
+      temp_flag = CVodeGetLastOrder(cvode_mem, &qu);
+      if(check_flag(&temp_flag, "CVodeGetLastOrder", 1)) ++nerr;
+      temp_flag = CVodeGetLastStep(cvode_mem, &hu);
+      if(check_flag(&temp_flag, "CVodeGetLastStep", 1)) ++nerr;
+      PrintOutput2(t, erm, qu, hu);
+      if (flag != CV_SUCCESS) {
+        nerr++;
+        break;
+      }
+      er = erm / abstol;
+        if (er > ero) ero = er;
+        if (er > P2_TOL_FACTOR) {
+          nerr++;
+          PrintErrOutput(P2_TOL_FACTOR);
+        }
+    }
+    
+    PrintFinalStats(cvode_mem, miter, ero);
+  }
+
+  CVodeFree(cvode_mem);
+  N_VDestroy_Serial(y);
+
+  return(nerr);
+}
+
+static void PrintIntro2(void)
+{
+  printf("\n\n-------------------------------------------------------------");
+  printf("\n-------------------------------------------------------------");
+  printf("\n\nProblem 2: ydot = A * y, where A is a banded lower\n");
+  printf("triangular matrix derived from 2-D advection PDE\n\n");
+  printf(" neq = %d, ml = %d, mu = %d\n", P2_NEQ, P2_ML, P2_MU);
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf(" itol = %s, reltol = %.2Lg, abstol = %.2Lg", "CV_SS", RTOL, ATOL);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf(" itol = %s, reltol = %.2lg, abstol = %.2lg", "CV_SS", RTOL, ATOL);
+#else
+  printf(" itol = %s, reltol = %.2g, abstol = %.2g", "CV_SS", RTOL, ATOL);
+#endif
+  printf("\n      t        max.err      qu     hu \n");
+}
+
+static void PrintHeader2(void)
+{
+  printf("\n      t        max.err      qu     hu \n");
+
+  return;
+}
+
+static void PrintOutput2(realtype t, realtype erm, int qu, realtype hu)
+{
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%10.3Lf  %12.4Le   %2d   %12.4Le\n", t, erm, qu, hu);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%10.3f  %12.4le   %2d   %12.4le\n", t, erm, qu, hu);
+#else
+  printf("%10.3f  %12.4e   %2d   %12.4e\n", t, erm, qu, hu);
+#endif
+
+  return;
+}
+
+static void f2(realtype t, N_Vector y, N_Vector ydot, void *f_data)
+{
+  long int i, j, k;
+  realtype d, *ydata, *dydata;
+  
+  ydata = NV_DATA_S(y);
+  dydata = NV_DATA_S(ydot);
+
+  /*
+     Excluding boundaries, 
+
+     ydot    = f    = -2 y    + alpha1 * y      + alpha2 * y
+         i,j    i,j       i,j             i-1,j             i,j-1
+  */
+
+  for (j=0; j < P2_MESHY; j++) {
+    for (i=0; i < P2_MESHX; i++) {
+      k = i + j * P2_MESHX;
+      d = -TWO*ydata[k];
+      if (i != 0) d += P2_ALPH1 * ydata[k-1];
+      if (j != 0) d += P2_ALPH2 * ydata[k-P2_MESHX];
+      dydata[k] = d;
+    }
+  }
+}
+
+static void Jac2(long int N, long int mu, long int ml, BandMat J,
+                 realtype tn, N_Vector y, N_Vector fy, void *jac_data,
+                 N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  long int i, j, k;
+  realtype *kthCol;
+
+  /*
+     The components of f(t,y) which depend on y    are
+                                               i,j
+     f    , f      , and f      : 
+      i,j    i+1,j        i,j+1
+
+     f    = -2 y    + alpha1 * y      + alpha2 * y
+      i,j       i,j             i-1,j             i,j-1
+
+     f      = -2 y      + alpha1 * y    + alpha2 * y
+      i+1,j       i+1,j             i,j             i+1,j-1
+
+     f      = -2 y      + alpha1 * y        + alpha2 * y
+      i,j+1       i,j+1             i-1,j+1             i,j
+  */
+
+  for (j=0; j < P2_MESHY; j++) {
+    for (i=0; i < P2_MESHX; i++) {
+      k = i + j * P2_MESHX;
+      kthCol = BAND_COL(J,k);
+      BAND_COL_ELEM(kthCol,k,k) = -TWO;
+      if (i != P2_MESHX-1) BAND_COL_ELEM(kthCol,k+1,k) = P2_ALPH1;
+      if (j != P2_MESHY-1) BAND_COL_ELEM(kthCol,k+P2_MESHX,k) = P2_ALPH2;
+    }
+  }
+}
+
+static realtype MaxError(N_Vector y, realtype t)
+{
+  long int i, j, k;
+  realtype *ydata, er, ex=ZERO, yt, maxError=ZERO, ifact_inv, jfact_inv=ONE;
+  
+  if (t == ZERO) return(ZERO);
+
+  ydata = NV_DATA_S(y);
+  if (t <= THIRTY) ex = exp(-TWO*t); 
+  
+  for (j = 0; j < P2_MESHY; j++) {
+    ifact_inv = ONE;
+    for (i = 0; i < P2_MESHX; i++) {
+      k = i + j * P2_MESHX;
+      yt = RPowerI(t,i+j) * ex * ifact_inv * jfact_inv;
+      er = ABS(ydata[k] - yt);
+      if (er > maxError) maxError = er;
+      ifact_inv /= (i+1);
+    }
+    jfact_inv /= (j+1);
+  }
+  return(maxError);
+}
+
+static int PrepareNextRun(void *cvode_mem, int lmm, int miter, 
+                          long int mu, long int ml)
+{
+  int flag = CV_SUCCESS;
+  
+  printf("\n\n-------------------------------------------------------------");
+  
+  printf("\n\nLinear Multistep Method : ");
+  if (lmm == CV_ADAMS) {
+    printf("ADAMS\n");
+  } else {
+    printf("BDF\n");
+  }
+  
+  printf("Iteration               : ");
+  if (miter == FUNC) {
+    printf("FUNCTIONAL\n");
+  } else {
+    printf("NEWTON\n");
+    printf("Linear Solver           : ");
+    switch(miter) {
+    case DENSE_USER : 
+      printf("Dense, User-Supplied Jacobian\n");
+      flag = CVDense(cvode_mem, P1_NEQ);
+      check_flag(&flag, "CVDense", 1);
+      if(flag != CV_SUCCESS) break;
+      flag = CVDenseSetJacFn(cvode_mem, Jac1, NULL);
+      check_flag(&flag, "CVDenseSetJacFn", 1);
+      break;
+    case DENSE_DQ   : 
+      printf("Dense, Difference Quotient Jacobian\n");
+      flag = CVDenseSetJacFn(cvode_mem, NULL, NULL);
+      check_flag(&flag, "CVDenseSetJacFn", 1);
+      break;
+    case DIAG       : 
+      printf("Diagonal Jacobian\n");
+      flag = CVDiag(cvode_mem);
+      check_flag(&flag, "CVDiag", 1);
+      break;
+    case BAND_USER  : 
+      printf("Band, User-Supplied Jacobian\n");
+      flag = CVBand(cvode_mem, P2_NEQ, mu, ml);
+      check_flag(&flag, "CVBand", 1);
+      if(flag != CV_SUCCESS) break;
+      flag = CVBandSetJacFn(cvode_mem, Jac2, NULL);
+      check_flag(&flag, "CVBandSetJacFn", 1);
+      break;
+    case BAND_DQ  :   
+      printf("Band, Difference Quotient Jacobian\n");
+      flag = CVBandSetJacFn(cvode_mem, NULL, NULL);
+      check_flag(&flag, "CVBandSetJacFn", 1);
+      break;    
+    }
+  }
+
+  return(flag);
+}
+
+static void PrintErrOutput(realtype tol_factor)
+{
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("\n\n Error exceeds %Lg * tolerance \n\n", tol_factor);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("\n\n Error exceeds %lg * tolerance \n\n", tol_factor);
+#else
+  printf("\n\n Error exceeds %g * tolerance \n\n", tol_factor);
+#endif
+
+  return;
+}
+
+static void PrintFinalStats(void *cvode_mem, int miter, realtype ero)
+{
+  long int lenrw, leniw, nst, nfe, nsetups, nni, ncfn, netf;
+  long int lenrwL, leniwL, nje, nfeL;
+  int flag;
+
+  flag = CVodeGetWorkSpace(cvode_mem, &lenrw, &leniw);
+  check_flag(&flag, "CVodeGetWorkSpace", 1);
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  printf("\n Final statistics for this run:\n\n");
+  printf(" CVode real workspace length              = %4ld \n", lenrw);
+  printf(" CVode integer workspace length           = %4ld \n", leniw);
+  printf(" Number of steps                          = %4ld \n",  nst);
+  printf(" Number of f-s                            = %4ld \n",  nfe);
+  printf(" Number of setups                         = %4ld \n",  nsetups);
+  printf(" Number of nonlinear iterations           = %4ld \n",  nni);
+  printf(" Number of nonlinear convergence failures = %4ld \n",  ncfn);
+  printf(" Number of error test failures            = %4ld \n\n",netf);
+  
+  if (miter != FUNC) {
+    switch(miter) {
+    case DENSE_USER :
+    case DENSE_DQ   :
+      flag = CVDenseGetNumJacEvals(cvode_mem, &nje);
+      check_flag(&flag, "CVDenseGetNumJacEvals", 1);
+      flag = CVDenseGetNumRhsEvals(cvode_mem, &nfeL);
+      check_flag(&flag, "CVDenseGetNumRhsEvals", 1);
+      flag = CVDenseGetWorkSpace(cvode_mem, &lenrwL, &leniwL);
+      check_flag(&flag, "CVDenseGetWorkSpace", 1);
+      break;
+    case BAND_USER  :
+    case BAND_DQ    :
+      flag = CVBandGetNumJacEvals(cvode_mem, &nje);
+      check_flag(&flag, "CVBandGetNumJacEvals", 1);
+      flag = CVBandGetNumRhsEvals(cvode_mem, &nfeL);
+      check_flag(&flag, "CVBandGetNumRhsEvals", 1);
+      flag = CVBandGetWorkSpace(cvode_mem, &lenrwL, &leniwL);
+      check_flag(&flag, "CVBandGetWorkSpace", 1);
+      break;  
+    case DIAG       :
+      nje = nsetups;
+      flag = CVDiagGetNumRhsEvals(cvode_mem, &nfeL);
+      check_flag(&flag, "CVDiagGetNumRhsEvals", 1);
+      flag = CVDiagGetWorkSpace(cvode_mem, &lenrwL, &leniwL);
+      check_flag(&flag, "CVDiagGetWorkSpace", 1);
+      break;
+    }
+    printf(" Linear solver real workspace length      = %4ld \n", lenrwL);
+    printf(" Linear solver integer workspace length   = %4ld \n", leniwL);
+    printf(" Number of Jacobian evaluations           = %4ld  \n", nje);
+    printf(" Number of f-s evaluations                = %4ld \n\n", nfeL);
+  }
+  
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf(" Error overrun = %.3Lf \n", ero);
+#else
+  printf(" Error overrun = %.3f \n", ero);
+#endif
+}
+
+static void PrintErrInfo(int nerr)
+{
+  printf("\n\n-------------------------------------------------------------");
+  printf("\n-------------------------------------------------------------");
+  printf("\n\n Number of errors encountered = %d \n", nerr);
+
+  return;
+}
+
+/* Check function return value...
+     opt == 0 means SUNDIALS function allocates memory so check if
+              returned NULL pointer
+     opt == 1 means SUNDIALS function returns a flag so check if
+              flag >= 0
+     opt == 2 means function allocates memory so check if returned
+              NULL pointer */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+              funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdemd.out b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdemd.out
new file mode 100644
index 0000000..71c1d27
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdemd.out
@@ -0,0 +1,502 @@
+Demonstration program for CVODE package - direct linear solvers
+
+
+Problem 1: Van der Pol oscillator
+ xdotdot - 3*(1 - x^2)*xdot + x = 0, x(0) = 2, xdot(0) = 0
+ neq = 2,  itol = CV_SS,  reltol = 0,  abstol = 1e-06
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : FUNCTIONAL
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91056e-01    5    9.8626e-02
+   3.60761    -2.12392e-05   -3.16877e+00    5    2.2756e-02
+   5.82239    -1.68010e+00    2.91060e-01    4    1.4079e-01
+   8.03716     9.57612e-05    3.16900e+00    5    2.0348e-02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   34 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  196 
+ Number of f-s                            =  390 
+ Number of setups                         =    0 
+ Number of nonlinear iterations           =    0 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   15 
+
+ Error overrun = 95.761 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : NEWTON
+Linear Solver           : Dense, User-Supplied Jacobian
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91056e-01    7    6.5178e-02
+   3.60761     2.42943e-06   -3.16870e+00    7    2.0626e-02
+   5.82239    -1.68010e+00    2.91062e-01    7    1.3038e-01
+   8.03716     1.99078e-05    3.16879e+00    7    2.3923e-02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   34 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  266 
+ Number of f-s                            =  365 
+ Number of setups                         =   46 
+ Number of nonlinear iterations           =  362 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   23 
+
+ Linear solver real workspace length      =    8 
+ Linear solver integer workspace length   =    2 
+ Number of Jacobian evaluations           =    5  
+ Number of f-s evaluations                =    0 
+
+ Error overrun = 19.908 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : NEWTON
+Linear Solver           : Dense, Difference Quotient Jacobian
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91056e-01    5    6.5835e-02
+   3.60761    -2.28046e-05   -3.16879e+00    6    3.1773e-02
+   5.82239    -1.68010e+00    2.91059e-01    6    9.3513e-02
+   8.03716    -9.84259e-06    3.16869e+00    6    2.8096e-02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   34 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  195 
+ Number of f-s                            =  267 
+ Number of setups                         =   34 
+ Number of nonlinear iterations           =  264 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   15 
+
+ Linear solver real workspace length      =    8 
+ Linear solver integer workspace length   =    2 
+ Number of Jacobian evaluations           =    4  
+ Number of f-s evaluations                =    8 
+
+ Error overrun = 22.805 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : NEWTON
+Linear Solver           : Diagonal Jacobian
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91054e-01    6    5.9553e-02
+   3.60761     6.36071e-05   -3.16853e+00    6    2.8912e-02
+   5.82239    -1.68011e+00    2.91057e-01    5    9.8149e-02
+   8.03716    -6.97420e-05    3.16847e+00    6    3.1284e-02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   34 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  238 
+ Number of f-s                            =  326 
+ Number of setups                         =   39 
+ Number of nonlinear iterations           =  323 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   19 
+
+ Linear solver real workspace length      =    6 
+ Linear solver integer workspace length   =    3 
+ Number of Jacobian evaluations           =   39  
+ Number of f-s evaluations                =   39 
+
+ Error overrun = 69.742 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : FUNCTIONAL
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91056e-01    4    9.6100e-02
+   3.60761    -1.35636e-04   -3.16912e+00    5    1.5675e-02
+   5.82239    -1.68009e+00    2.91063e-01    5    1.1210e-01
+   8.03716     2.20969e-04    3.16937e+00    5    1.4732e-02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   20 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  262 
+ Number of f-s                            =  497 
+ Number of setups                         =    0 
+ Number of nonlinear iterations           =    0 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   22 
+
+ Error overrun = 220.969 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : NEWTON
+Linear Solver           : Dense, User-Supplied Jacobian
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91056e-01    5    1.1991e-01
+   3.60761    -5.46907e-05   -3.16886e+00    5    1.6403e-02
+   5.82239    -1.68010e+00    2.91061e-01    4    1.0146e-01
+   8.03716     1.54312e-04    3.16917e+00    4    9.5378e-03
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   20 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  265 
+ Number of f-s                            =  357 
+ Number of setups                         =   40 
+ Number of nonlinear iterations           =  354 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   18 
+
+ Linear solver real workspace length      =    8 
+ Linear solver integer workspace length   =    2 
+ Number of Jacobian evaluations           =    5  
+ Number of f-s evaluations                =    0 
+
+ Error overrun = 154.312 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : NEWTON
+Linear Solver           : Dense, Difference Quotient Jacobian
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91058e-01    4    8.1067e-02
+   3.60761    -5.84200e-05   -3.16886e+00    4    1.1360e-02
+   5.82239    -1.68010e+00    2.91062e-01    5    6.4941e-02
+   8.03716     9.61737e-05    3.16899e+00    5    1.5216e-02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   20 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  276 
+ Number of f-s                            =  366 
+ Number of setups                         =   40 
+ Number of nonlinear iterations           =  363 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   17 
+
+ Linear solver real workspace length      =    8 
+ Linear solver integer workspace length   =    2 
+ Number of Jacobian evaluations           =    6  
+ Number of f-s evaluations                =   12 
+
+ Error overrun = 96.174 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : NEWTON
+Linear Solver           : Diagonal Jacobian
+
+     t           x              xdot         qu     hu 
+   1.39284     1.68010e+00   -2.91056e-01    5    1.1430e-01
+   3.60761    -9.83501e-05   -3.16900e+00    5    1.6712e-02
+   5.82239    -1.68009e+00    2.91063e-01    4    8.1261e-02
+   8.03716     1.66642e-04    3.16920e+00    4    1.0547e-02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =   20 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  266 
+ Number of f-s                            =  359 
+ Number of setups                         =   39 
+ Number of nonlinear iterations           =  356 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =   17 
+
+ Linear solver real workspace length      =    6 
+ Linear solver integer workspace length   =    3 
+ Number of Jacobian evaluations           =   39  
+ Number of f-s evaluations                =   39 
+
+ Error overrun = 166.642 
+
+
+-------------------------------------------------------------
+-------------------------------------------------------------
+
+Problem 2: ydot = A * y, where A is a banded lower
+triangular matrix derived from 2-D advection PDE
+
+ neq = 25, ml = 5, mu = 0
+ itol = CV_SS, reltol = 0, abstol = 1e-06
+      t        max.err      qu     hu 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : FUNCTIONAL
+
+      t        max.err      qu     hu 
+     0.010    1.4690e-07    3     1.1459e-02
+     0.100    5.2543e-07    4     4.1413e-02
+     1.000    1.2207e-06    5     6.8243e-02
+    10.000    9.7711e-07    3     2.8481e-01
+   100.000    1.5230e-07    1     6.0816e-01
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  425 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  341 
+ Number of f-s                            =  600 
+ Number of setups                         =    0 
+ Number of nonlinear iterations           =    0 
+ Number of nonlinear convergence failures =   79 
+ Number of error test failures            =    0 
+
+ Error overrun = 1.221 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : NEWTON
+Linear Solver           : Diagonal Jacobian
+
+      t        max.err      qu     hu 
+     0.010    1.3734e-07    3     1.0327e-02
+     0.100    2.4956e-06    3     2.3048e-02
+     1.000    4.2328e-06    4     4.3778e-02
+    10.000    9.7335e-07    4     3.1286e-01
+   100.000    8.2265e-10    1     3.9630e+02
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  425 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  154 
+ Number of f-s                            =  218 
+ Number of setups                         =   33 
+ Number of nonlinear iterations           =  215 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =    5 
+
+ Linear solver real workspace length      =   75 
+ Linear solver integer workspace length   =    3 
+ Number of Jacobian evaluations           =   33  
+ Number of f-s evaluations                =   33 
+
+ Error overrun = 4.233 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : NEWTON
+Linear Solver           : Band, User-Supplied Jacobian
+
+      t        max.err      qu     hu 
+     0.010    1.3670e-07    3     1.2164e-02
+     0.100    4.7920e-07    4     4.2115e-02
+     1.000    2.5077e-07    6     1.0365e-01
+    10.000    6.0790e-07    4     4.7206e-01
+   100.000    5.7390e-08    2     1.0750e+01
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  425 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  149 
+ Number of f-s                            =  183 
+ Number of setups                         =   32 
+ Number of nonlinear iterations           =  180 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =    6 
+
+ Linear solver real workspace length      =  425 
+ Linear solver integer workspace length   =   25 
+ Number of Jacobian evaluations           =    3  
+ Number of f-s evaluations                =    0 
+
+ Error overrun = 0.608 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : ADAMS
+Iteration               : NEWTON
+Linear Solver           : Band, Difference Quotient Jacobian
+
+      t        max.err      qu     hu 
+     0.010    1.4285e-07    3     1.3840e-02
+     0.100    5.7337e-07    4     4.2111e-02
+     1.000    7.3281e-07    5     6.3684e-02
+    10.000    3.8507e-07    5     2.6026e-01
+   100.000    4.1035e-12    1     6.2591e+01
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  425 
+ CVode integer workspace length           =   17 
+ Number of steps                          =  124 
+ Number of f-s                            =  141 
+ Number of setups                         =   24 
+ Number of nonlinear iterations           =  138 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =    1 
+
+ Linear solver real workspace length      =  425 
+ Linear solver integer workspace length   =   25 
+ Number of Jacobian evaluations           =    3  
+ Number of f-s evaluations                =   18 
+
+ Error overrun = 0.733 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : FUNCTIONAL
+
+      t        max.err      qu     hu 
+     0.010    5.5931e-07    2     8.1257e-03
+     0.100    5.2896e-06    3     1.7769e-02
+     1.000    2.3209e-06    5     7.5291e-02
+    10.000    1.2861e-06    5     2.7791e-01
+   100.000    1.6770e-08    1     8.7560e-01
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  250 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  377 
+ Number of f-s                            =  697 
+ Number of setups                         =    0 
+ Number of nonlinear iterations           =    0 
+ Number of nonlinear convergence failures =   56 
+ Number of error test failures            =    1 
+
+ Error overrun = 5.290 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : NEWTON
+Linear Solver           : Diagonal Jacobian
+
+      t        max.err      qu     hu 
+     0.010    5.6365e-07    2     8.1241e-03
+     0.100    7.9753e-07    4     1.8910e-02
+     1.000    5.9100e-06    5     5.1976e-02
+    10.000    1.1253e-05    4     9.7523e-02
+   100.000    1.1182e-09    1     8.7300e+01
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  250 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  202 
+ Number of f-s                            =  314 
+ Number of setups                         =   63 
+ Number of nonlinear iterations           =  311 
+ Number of nonlinear convergence failures =    5 
+ Number of error test failures            =    7 
+
+ Linear solver real workspace length      =   75 
+ Linear solver integer workspace length   =    3 
+ Number of Jacobian evaluations           =   63  
+ Number of f-s evaluations                =   63 
+
+ Error overrun = 11.253 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : NEWTON
+Linear Solver           : Band, User-Supplied Jacobian
+
+      t        max.err      qu     hu 
+     0.010    5.6372e-07    2     8.1246e-03
+     0.100    5.2784e-06    3     1.7819e-02
+     1.000    1.8169e-06    5     6.0110e-02
+    10.000    5.4997e-07    5     4.1661e-01
+   100.000    1.7764e-09    2     2.9748e+01
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  250 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  119 
+ Number of f-s                            =  143 
+ Number of setups                         =   25 
+ Number of nonlinear iterations           =  140 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =    2 
+
+ Linear solver real workspace length      =  425 
+ Linear solver integer workspace length   =   25 
+ Number of Jacobian evaluations           =    3  
+ Number of f-s evaluations                =    0 
+
+ Error overrun = 5.278 
+
+
+-------------------------------------------------------------
+
+Linear Multistep Method : BDF
+Iteration               : NEWTON
+Linear Solver           : Band, Difference Quotient Jacobian
+
+      t        max.err      qu     hu 
+     0.010    5.6492e-07    2     8.1361e-03
+     0.100    5.9968e-06    3     1.7105e-02
+     1.000    1.6902e-06    5     8.7628e-02
+    10.000    5.2314e-07    5     3.1091e-01
+   100.000    1.4380e-09    2     2.1635e+01
+
+ Final statistics for this run:
+
+ CVode real workspace length              =  250 
+ CVode integer workspace length           =   10 
+ Number of steps                          =  121 
+ Number of f-s                            =  144 
+ Number of setups                         =   24 
+ Number of nonlinear iterations           =  141 
+ Number of nonlinear convergence failures =    0 
+ Number of error test failures            =    1 
+
+ Linear solver real workspace length      =  425 
+ Linear solver integer workspace length   =   25 
+ Number of Jacobian evaluations           =    3  
+ Number of f-s evaluations                =   18 
+
+ Error overrun = 5.997 
+
+
+-------------------------------------------------------------
+-------------------------------------------------------------
+
+ Number of errors encountered = 0 
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdemk.c b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdemk.c
new file mode 100644
index 0000000..f24442b
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdemk.c
@@ -0,0 +1,1135 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:34:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * --------------------------------------------------------------------
+ * Demonstration program for CVODES - Krylov linear solver.
+ * ODE system from ns-species interaction PDE in 2 dimensions.
+ * 
+ * This program solves a stiff ODE system that arises from a system
+ * of partial differential equations. The PDE system is a food web
+ * population model, with predator-prey interaction and diffusion on
+ * the unit square in two dimensions. The dependent variable vector is:
+ *
+ *        1   2        ns
+ *  c = (c , c , ..., c  )
+ *
+ * and the PDEs are as follows:
+ *
+ *    i               i      i
+ *  dc /dt  =  d(i)*(c    + c   )  +  f (x,y,c)  (i=1,...,ns)
+ *                    xx     yy        i   
+ *
+ * where
+ *
+ *                 i          ns         j
+ *  f (x,y,c)  =  c *(b(i) + sum a(i,j)*c )
+ *   i                       j=1                                         
+ *                                                                       
+ * The number of species is ns = 2*np, with the first np being prey
+ * and the last np being predators. The coefficients a(i,j), b(i),
+ * d(i) are:
+ *
+ *  a(i,i) = -a  (all i)
+ *  a(i,j) = -g  (i <= np, j > np)
+ *  a(i,j) =  e  (i > np, j <= np)
+ *  b(i) =  b*(1 + alpha*x*y)  (i <= np)
+ *  b(i) = -b*(1 + alpha*x*y)  (i > np)
+ *  d(i) = Dprey  (i <= np)
+ *  d(i) = Dpred  (i > np)
+ *
+ * The spatial domain is the unit square. The final time is 10.
+ * The boundary conditions are: normal derivative = 0.
+ * A polynomial in x and y is used to set the initial conditions.
+ *
+ * The PDEs are discretized by central differencing on an MX by MY mesh.
+ *
+ * The resulting ODE system is stiff.
+ *
+ * The ODE system is solved using Newton iteration and the CVSPGMR
+ * linear solver (scaled preconditioned GMRES).
+ *
+ * The preconditioner matrix used is the product of two matrices:
+ * (1) A matrix, only defined implicitly, based on a fixed number
+ * of Gauss-Seidel iterations using the diffusion terms only.
+ * (2) A block-diagonal matrix based on the partial derivatives
+ * of the interaction terms f only, using block-grouping (computing
+ * only a subset of the ns by ns blocks).
+ *
+ * Four different runs are made for this problem.
+ * The product preconditoner is applied on the left and on the
+ * right. In each case, both the modified and classical Gram-Schmidt
+ * options are tested.
+ * In the series of runs, CVodeMalloc and CVSpgmr are called only
+ * for the first run, whereas CVodeReInit and CVReInitSpgmr are
+ * called for each of the remaining three runs.
+ *
+ * A problem description, performance statistics at selected output
+ * times, and final statistics are written to standard output.
+ * On the first run, solution values are also printed at output
+ * times. Error and warning messages are written to standard error,
+ * but there should be no such messages.
+ *
+ * Note: This program requires the "small" dense linear solver
+ * routines denalloc, denallocpiv, denaddI, gefa, gesl, denfreepiv
+ * and denfree.
+ *
+ * Note: This program assumes the sequential implementation for the
+ * type N_Vector and uses the NV_DATA_S macro to gain access to the
+ * contiguous array of components of an N_Vector.
+ * --------------------------------------------------------------------
+ * Reference: Peter N. Brown and Alan C. Hindmarsh, Reduced Storage
+ * Matrix Methods in Stiff ODE Systems, J. Appl. Math. & Comp., 31
+ * (1989), pp. 40-91.  Also available as Lawrence Livermore National
+ * Laboratory Report UCRL-95088, Rev. 1, June 1987.
+ * --------------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include "sundialstypes.h"  /* definition of type realtype      */
+#include "cvodes.h"         /* main integrator header file      */
+#include "cvspgmr.h"        /* use CVSPGMR linear solver        */
+#include "smalldense.h"     /* use small dense matrix functions */
+#include "nvector_serial.h" /* definition of type N_Vector and  */
+                            /* macro NV_DATA_S                  */
+#include "sundialsmath.h"   /* contains the macros ABS and SQR  */
+
+/* Constants */
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+
+/* Problem Specification Constants */
+
+#define AA    ONE               /* AA = a */
+#define EE    RCONST(1.0e4)     /* EE = e */
+#define GG    RCONST(0.5e-6)    /* GG = g */
+#define BB    ONE               /* BB = b */
+#define DPREY ONE
+#define DPRED RCONST(0.5)
+#define ALPH  ONE
+#define NP    3
+#define NS    (2*NP)
+
+/* Method Constants */
+
+#define MX    6
+#define MY    6
+#define MXNS  (MX*NS)
+#define AX    ONE
+#define AY    ONE
+#define DX    (AX/(realtype)(MX-1))
+#define DY    (AY/(realtype)(MY-1))
+#define MP    NS
+#define MQ    (MX*MY)
+#define MXMP  (MX*MP)
+#define NGX   2
+#define NGY   2
+#define NGRP  (NGX*NGY)
+#define ITMAX 5
+
+/* CVodeMalloc Constants */
+
+#define NEQ  (NS*MX*MY)
+#define T0   ZERO
+#define RTOL RCONST(1.0e-5)
+#define ATOL RCONST(1.0e-5)
+
+/* CVSpgmr Constants */
+
+#define MAXL 0     /* => use default = MIN(NEQ, 5)            */
+#define DELT ZERO  /* => use default = 0.05                   */
+
+/* Output Constants */
+
+#define T1        RCONST(1.0e-8)
+#define TOUT_MULT RCONST(10.0)
+#define DTOUT     ONE
+#define NOUT      18
+
+/* Note: The value for species i at mesh point (j,k) is stored in */
+/* component number (i-1) + j*NS + k*NS*MX of an N_Vector,        */
+/* where 1 <= i <= NS, 0 <= j < MX, 0 <= k < MY.                  */
+
+/* Structure for user data */
+
+typedef struct {
+  realtype **P[NGRP];
+  long int *pivot[NGRP];
+  int ns, mxns;
+  int mp, mq, mx, my, ngrp, ngx, ngy, mxmp;
+  int jgx[NGX+1], jgy[NGY+1], jigx[MX], jigy[MY];
+  int jxr[NGX], jyr[NGY];
+  realtype acoef[NS][NS], bcoef[NS], diff[NS];
+  realtype cox[NS], coy[NS], dx, dy, srur;
+  realtype fsave[NEQ];
+  N_Vector rewt;
+  void *cvode_mem;
+} *WebData;
+
+/* Private Helper Functions */
+
+static WebData AllocUserData(void);
+static void InitUserData(WebData wdata);
+static void SetGroups(int m, int ng, int jg[], int jig[], int jr[]);
+static void CInit(N_Vector c, WebData wdata);
+static void PrintIntro(void);
+static void PrintHeader(int jpre, int gstype);
+static void PrintAllSpecies(N_Vector c, int ns, int mxns, realtype t);
+static void PrintOutput(void *cvode_mem, realtype t);
+static void PrintFinalStats(void *cvode_mem);
+static void FreeUserData(WebData wdata);
+static void WebRates(realtype x, realtype y, realtype t, realtype c[],
+		     realtype rate[], WebData wdata);
+static void fblock (realtype t, realtype cdata[], int jx, int jy,
+		    realtype cdotdata[], WebData wdata);
+static void GSIter(realtype gamma, N_Vector z, N_Vector x,WebData wdata);
+
+/* Small Vector Kernels */
+
+static void v_inc_by_prod(realtype u[], realtype v[], realtype w[], int n);
+static void v_sum_prods(realtype u[], realtype p[], realtype q[], realtype v[],
+                        realtype w[], int n);
+static void v_prod(realtype u[], realtype v[], realtype w[], int n);
+static void v_zero(realtype u[], int n);
+
+/* Functions Called By The Solver */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+
+static int Precond(realtype tn, N_Vector c, N_Vector fc,
+		   booleantype jok, booleantype *jcurPtr, realtype gamma,
+		   void *P_data, N_Vector vtemp1, N_Vector vtemp2,
+                   N_Vector vtemp3);
+
+static int PSolve(realtype tn, N_Vector c, N_Vector fc,
+                  N_Vector r, N_Vector z,
+                  realtype gamma, realtype delta,
+                  int lr, void *P_data, N_Vector vtemp);
+
+/* Private function to check function return values */
+
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/* Implementation */
+
+int main()
+{
+  realtype abstol=ATOL, reltol=RTOL, t, tout;
+  N_Vector c;
+  WebData wdata;
+  void *cvode_mem;
+  booleantype firstrun;
+  int jpre, gstype, flag;
+  int ns, mxns, iout;
+
+  c = NULL;
+  wdata = NULL;
+  cvode_mem = NULL;
+
+  /* Initializations */
+  c = N_VNew_Serial(NEQ);
+  if(check_flag((void *)c, "N_VNew_Serial", 0)) return(1);
+  wdata = AllocUserData();
+  if(check_flag((void *)wdata, "AllocUserData", 2)) return(1);
+  InitUserData(wdata);
+  ns = wdata->ns;
+  mxns = wdata->mxns;
+
+  /* Print problem description */
+  PrintIntro();
+
+  /* Loop over jpre and gstype (four cases) */
+  for (jpre = PREC_LEFT; jpre <= PREC_RIGHT; jpre++) {
+    for (gstype = MODIFIED_GS; gstype <= CLASSICAL_GS; gstype++) {
+      
+      /* Initialize c and print heading */
+      CInit(c, wdata);
+      PrintHeader(jpre, gstype);
+
+      /* Call CVodeMalloc or CVodeReInit, then CVSpgmr to set up problem */
+      
+      firstrun = (jpre == PREC_LEFT) && (gstype == MODIFIED_GS);
+      if (firstrun) {
+        cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+        if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+        wdata->cvode_mem = cvode_mem;
+
+        flag = CVodeSetFdata(cvode_mem, wdata);
+        if(check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+
+        flag = CVodeMalloc(cvode_mem, f, T0, c, CV_SS, reltol, &abstol);
+        if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+        flag = CVSpgmr(cvode_mem, jpre, MAXL);
+        if(check_flag(&flag, "CVSpgmr", 1)) return(1);
+
+        flag = CVSpgmrSetGSType(cvode_mem, gstype);
+        if(check_flag(&flag, "CVSpgmrSetGSType", 1)) return(1);
+
+        flag = CVSpgmrSetDelt(cvode_mem, DELT);
+        if(check_flag(&flag, "CVSpgmrSetDelt", 1)) return(1);
+
+        flag = CVSpgmrSetPreconditioner(cvode_mem, Precond, PSolve, wdata);
+        if(check_flag(&flag, "CVSpgmrSetPreconditioner", 1)) return(1);
+
+      } else {
+
+        flag = CVodeReInit(cvode_mem, f, T0, c, CV_SS, reltol, &abstol);
+        if(check_flag(&flag, "CVodeReInit", 1)) return(1);
+
+        flag = CVSpgmrSetPrecType(cvode_mem, jpre);
+        check_flag(&flag, "CVSpgmrSetPrecType", 1);
+        flag = CVSpgmrSetGSType(cvode_mem, gstype);
+        if(check_flag(&flag, "CVSpgmrSetGSType", 1)) return(1);
+
+      }
+      
+      /* Print initial values */
+      if (firstrun) PrintAllSpecies(c, ns, mxns, T0);
+      
+      /* Loop over output points, call CVode, print sample solution values. */
+      tout = T1;
+      for (iout = 1; iout <= NOUT; iout++) {
+        flag = CVode(cvode_mem, tout, c, &t, CV_NORMAL);
+        PrintOutput(cvode_mem, t);
+        if (firstrun && (iout % 3 == 0)) PrintAllSpecies(c, ns, mxns, t);
+        if(check_flag(&flag, "CVode", 1)) break;
+        if (tout > RCONST(0.9)) tout += DTOUT; else tout *= TOUT_MULT; 
+      }
+      
+      /* Print final statistics, and loop for next case */
+      PrintFinalStats(cvode_mem);
+      
+    }
+  }
+
+  /* Free all memory */
+  CVodeFree(cvode_mem);
+  N_VDestroy_Serial(c);
+  FreeUserData(wdata);
+
+  return(0);
+}
+
+static WebData AllocUserData(void)
+{
+  int i, ngrp = NGRP;
+  int ns = NS;
+  WebData wdata;
+  
+  wdata = (WebData) malloc(sizeof *wdata);
+  for(i=0; i < ngrp; i++) {
+    (wdata->P)[i] = denalloc(ns);
+    (wdata->pivot)[i] = denallocpiv(ns);
+  }
+  wdata->rewt = N_VNew_Serial(NEQ);
+  return(wdata);
+}
+
+static void InitUserData(WebData wdata)
+{
+  int i, j, ns;
+  realtype *bcoef, *diff, *cox, *coy, dx, dy;
+  realtype (*acoef)[NS];
+  
+  acoef = wdata->acoef;
+  bcoef = wdata->bcoef;
+  diff = wdata->diff;
+  cox = wdata->cox;
+  coy = wdata->coy;
+  ns = wdata->ns = NS;
+  
+  for (j = 0; j < NS; j++) { for (i = 0; i < NS; i++) acoef[i][j] = 0.; }
+  for (j = 0; j < NP; j++) {
+    for (i = 0; i < NP; i++) {
+      acoef[NP+i][j] = EE;
+      acoef[i][NP+j] = -GG;
+    }
+    acoef[j][j] = -AA;
+    acoef[NP+j][NP+j] = -AA;
+    bcoef[j] = BB;
+    bcoef[NP+j] = -BB;
+    diff[j] = DPREY;
+    diff[NP+j] = DPRED;
+  }
+
+  /* Set remaining problem parameters */
+
+  wdata->mxns = MXNS;
+  dx = wdata->dx = DX;
+  dy = wdata->dy = DY;
+  for (i = 0; i < ns; i++) {
+    cox[i] = diff[i]/SQR(dx);
+    coy[i] = diff[i]/SQR(dy);
+  }
+
+  /* Set remaining method parameters */
+
+  wdata->mp = MP;
+  wdata->mq = MQ;
+  wdata->mx = MX;
+  wdata->my = MY;
+  wdata->srur = RSqrt(UNIT_ROUNDOFF);
+  wdata->mxmp = MXMP;
+  wdata->ngrp = NGRP;
+  wdata->ngx = NGX;
+  wdata->ngy = NGY;
+  SetGroups(MX, NGX, wdata->jgx, wdata->jigx, wdata->jxr);
+  SetGroups(MY, NGY, wdata->jgy, wdata->jigy, wdata->jyr);
+}
+
+/*
+ This routine sets arrays jg, jig, and jr describing
+ a uniform partition of (0,1,2,...,m-1) into ng groups.
+ The arrays set are:
+   jg    = length ng+1 array of group boundaries.
+           Group ig has indices j = jg[ig],...,jg[ig+1]-1.
+   jig   = length m array of group indices vs node index.
+           Node index j is in group jig[j].
+   jr    = length ng array of indices representing the groups.
+           The index for group ig is j = jr[ig].
+*/
+static void SetGroups(int m, int ng, int jg[], int jig[], int jr[])
+{
+  int ig, j, len1, mper, ngm1;
+
+  mper = m/ng; /* does integer division */
+  for (ig=0; ig < ng; ig++) jg[ig] = ig*mper;
+  jg[ng] = m;
+  
+  ngm1 = ng - 1;
+  len1 = ngm1*mper;
+  for (j = 0; j < len1; j++) jig[j] = j/mper;
+  for (j = len1; j < m; j++) jig[j] = ngm1;
+
+  for (ig = 0; ig < ngm1; ig++) jr[ig] = ((2*ig+1)*mper-1)/2;
+  jr[ngm1] = (ngm1*mper+m-1)/2;
+}
+
+/* This routine computes and loads the vector of initial values. */
+static void CInit(N_Vector c, WebData wdata)
+{
+  int jx, jy, ns, mxns, ioff, iyoff, i, ici;
+  realtype argx, argy, x, y, dx, dy, x_factor, y_factor, *cdata;
+  
+  cdata = NV_DATA_S(c);
+  ns = wdata->ns;
+  mxns = wdata->mxns;
+  dx = wdata->dx;
+  dy = wdata->dy;
+
+  x_factor = RCONST(4.0)/SQR(AX);
+  y_factor = RCONST(4.0)/SQR(AY);
+  for (jy = 0; jy < MY; jy++) {
+    y = jy*dy;
+    argy = SQR(y_factor*y*(AY-y)); 
+    iyoff = mxns*jy;
+    for (jx = 0; jx < MX; jx++) {
+      x = jx*dx;
+      argx = SQR(x_factor*x*(AX-x));
+      ioff = iyoff + ns*jx;
+      for (i = 1; i <= ns; i++) {
+        ici = ioff + i-1;
+        cdata[ici] = RCONST(10.0) + i*argx*argy;
+      }
+    }
+  }
+}
+
+static void PrintIntro(void)
+{
+  printf("\n\nDemonstration program for CVODES - CVSPGMR linear solver\n\n");
+  printf("Food web problem with ns species, ns = %d\n", NS);
+  printf("Predator-prey interaction and diffusion on a 2-D square\n\n");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("Matrix parameters: a = %.2Lg   e = %.2Lg   g = %.2Lg\n",
+         AA, EE, GG);
+  printf("b parameter = %.2Lg\n", BB);
+  printf("Diffusion coefficients: Dprey = %.2Lg   Dpred = %.2Lg\n",
+         DPREY, DPRED);
+  printf("Rate parameter alpha = %.2Lg\n\n", ALPH);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("Matrix parameters: a = %.2lg   e = %.2lg   g = %.2lg\n",
+         AA, EE, GG);
+  printf("b parameter = %.2lg\n", BB);
+  printf("Diffusion coefficients: Dprey = %.2lg   Dpred = %.2lg\n",
+         DPREY, DPRED);
+  printf("Rate parameter alpha = %.2lg\n\n", ALPH);
+#else
+  printf("Matrix parameters: a = %.2g   e = %.2g   g = %.2g\n",
+         AA, EE, GG);
+  printf("b parameter = %.2g\n", BB);
+  printf("Diffusion coefficients: Dprey = %.2g   Dpred = %.2g\n",
+         DPREY, DPRED);
+  printf("Rate parameter alpha = %.2g\n\n", ALPH);
+#endif
+  printf("Mesh dimensions (mx,my) are %d, %d.  ", MX, MY);
+  printf("Total system size is neq = %d \n\n", NEQ);
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("Tolerances: itol = %s,  reltol = %.2Lg, abstol = %.2Lg \n\n",
+         "CV_SS", RTOL, ATOL);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("Tolerances: itol = %s,  reltol = %.2lg, abstol = %.2lg \n\n",
+         "CV_SS", RTOL, ATOL);
+#else
+  printf("Tolerances: itol = %s,  reltol = %.2g, abstol = %.2g \n\n",
+         "CV_SS", RTOL, ATOL);
+#endif
+  printf("Preconditioning uses a product of:\n");
+  printf("  (1) Gauss-Seidel iterations with ");
+  printf("itmax = %d iterations, and\n", ITMAX);
+  printf("  (2) interaction-only block-diagonal matrix ");
+  printf("with block-grouping\n");
+  printf("  Number of diagonal block groups = ngrp = %d", NGRP);
+  printf("  (ngx by ngy, ngx = %d, ngy = %d)\n", NGX, NGY);
+  printf("\n\n--------------------------------------------------------------");
+  printf("--------------\n");
+}
+
+static void PrintHeader(int jpre, int gstype)
+{
+  if(jpre == PREC_LEFT)
+    printf("\n\nPreconditioner type is           jpre = %s\n", "PREC_LEFT");
+  else
+    printf("\n\nPreconditioner type is           jpre = %s\n", "PREC_RIGHT");
+
+  if(gstype == MODIFIED_GS)
+    printf("\nGram-Schmidt method type is    gstype = %s\n\n\n", "MODIFIED_GS");
+  else
+    printf("\nGram-Schmidt method type is    gstype = %s\n\n\n", "CLASSICAL_GS");
+}
+
+static void PrintAllSpecies(N_Vector c, int ns, int mxns, realtype t)
+{
+  int i, jx ,jy;
+  realtype *cdata;
+  
+  cdata = NV_DATA_S(c);
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("c values at t = %Lg:\n\n", t);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("c values at t = %lg:\n\n", t);
+#else
+  printf("c values at t = %g:\n\n", t);
+#endif
+  for (i=1; i <= ns; i++) {
+    printf("Species %d\n", i);
+    for (jy=MY-1; jy >= 0; jy--) {
+      for (jx=0; jx < MX; jx++) {
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+        printf("%-10.6Lg", cdata[(i-1) + jx*ns + jy*mxns]);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+        printf("%-10.6lg", cdata[(i-1) + jx*ns + jy*mxns]);
+#else
+        printf("%-10.6g", cdata[(i-1) + jx*ns + jy*mxns]);
+#endif
+      }
+      printf("\n");
+    }
+    printf("\n");
+  }
+}
+
+static void PrintOutput(void *cvode_mem, realtype t)
+{
+  long int nst, nfe, nni;
+  int qu, flag;
+  realtype hu;
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetLastOrder(cvode_mem, &qu);
+  check_flag(&flag, "CVodeGetLastOrder", 1);
+  flag = CVodeGetLastStep(cvode_mem, &hu);
+  check_flag(&flag, "CVodeGetLastStep", 1);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("t = %10.2Le  nst = %ld  nfe = %ld  nni = %ld", t, nst, nfe, nni);
+  printf("  qu = %d  hu = %11.2Le\n\n", qu, hu);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("t = %10.2le  nst = %ld  nfe = %ld  nni = %ld", t, nst, nfe, nni);
+  printf("  qu = %d  hu = %11.2le\n\n", qu, hu);
+#else
+  printf("t = %10.2e  nst = %ld  nfe = %ld  nni = %ld", t, nst, nfe, nni);
+  printf("  qu = %d  hu = %11.2e\n\n", qu, hu);
+#endif
+}
+
+static void PrintFinalStats(void *cvode_mem)
+{
+  long int lenrw, leniw ;
+  long int lenrwSPGMR, leniwSPGMR;
+  long int nst, nfe, nsetups, nni, ncfn, netf;
+  long int nli, npe, nps, ncfl, nfeSPGMR;
+  int flag;
+  realtype avdim;
+  
+  flag = CVodeGetWorkSpace(cvode_mem, &lenrw, &leniw);
+  check_flag(&flag, "CVodeGetWorkSpace", 1);
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  flag = CVSpgmrGetWorkSpace(cvode_mem, &lenrwSPGMR, &leniwSPGMR);
+  check_flag(&flag, "CVSpgmrGetWorkSpace", 1);
+  flag = CVSpgmrGetNumLinIters(cvode_mem, &nli);
+  check_flag(&flag, "CVSpgmrGetNumLinIters", 1);
+  flag = CVSpgmrGetNumPrecEvals(cvode_mem, &npe);
+  check_flag(&flag, "CVSpgmrGetNumPrecEvals", 1);
+  flag = CVSpgmrGetNumPrecSolves(cvode_mem, &nps);
+  check_flag(&flag, "CVSpgmrGetNumPrecSolves", 1);
+  flag = CVSpgmrGetNumConvFails(cvode_mem, &ncfl);
+  check_flag(&flag, "CVSpgmrGetNumConvFails", 1);
+  flag = CVSpgmrGetNumRhsEvals(cvode_mem, &nfeSPGMR);
+  check_flag(&flag, "CVSpgmrGetNumRhsEvals", 1);
+
+  printf("\n\n Final statistics for this run:\n\n");
+  printf(" CVode real workspace length           = %4ld \n", lenrw);
+  printf(" CVode integer workspace length        = %4ld \n", leniw);
+  printf(" CVSPGMR real workspace length         = %4ld \n", lenrwSPGMR);
+  printf(" CVSPGMR integer workspace length      = %4ld \n", leniwSPGMR);
+  printf(" Number of steps                       = %4ld \n", nst);
+  printf(" Number of f-s                         = %4ld \n", nfe);
+  printf(" Number of f-s (SPGMR)                 = %4ld \n", nfeSPGMR);
+  printf(" Number of f-s (TOTAL)                 = %4ld \n", nfe + nfeSPGMR);
+  printf(" Number of setups                      = %4ld \n", nsetups);
+  printf(" Number of nonlinear iterations        = %4ld \n", nni);
+  printf(" Number of linear iterations           = %4ld \n", nli);
+  printf(" Number of preconditioner evaluations  = %4ld \n", npe);
+  printf(" Number of preconditioner solves       = %4ld \n", nps);
+  printf(" Number of error test failures         = %4ld \n", netf);
+  printf(" Number of nonlinear conv. failures    = %4ld \n", ncfn);
+  printf(" Number of linear convergence failures = %4ld \n", ncfl);
+  avdim = (nni > 0) ? ((realtype)nli)/((realtype)nni) : ZERO;
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf(" Average Krylov subspace dimension     = %.3Lf \n", avdim);
+#else
+  printf(" Average Krylov subspace dimension     = %.3f \n", avdim);
+#endif
+  printf("\n\n--------------------------------------------------------------");
+  printf("--------------\n");
+  printf(    "--------------------------------------------------------------");
+  printf("--------------\n");
+}
+
+static void FreeUserData(WebData wdata)
+{
+  int i, ngrp;
+
+  ngrp = wdata->ngrp;
+  for(i=0; i < ngrp; i++) {
+    denfree((wdata->P)[i]);
+    denfreepiv((wdata->pivot)[i]);
+  }
+  N_VDestroy_Serial(wdata->rewt);
+  free(wdata);
+}
+
+/*
+ This routine computes the right-hand side of the ODE system and
+ returns it in cdot. The interaction rates are computed by calls to WebRates,
+ and these are saved in fsave for use in preconditioning.
+*/
+static void f(realtype t, N_Vector c, N_Vector cdot,void *f_data)
+{
+  int i, ic, ici, idxl, idxu, jx, ns, mxns, iyoff, jy, idyu, idyl;
+  realtype dcxli, dcxui, dcyli, dcyui, x, y, *cox, *coy, *fsave, dx, dy;
+  realtype *cdata, *cdotdata;
+  WebData wdata;
+  
+  wdata = (WebData) f_data;
+  cdata = NV_DATA_S(c);
+  cdotdata = NV_DATA_S(cdot);
+  
+  mxns = wdata->mxns;
+  ns = wdata->ns;
+  fsave = wdata->fsave;
+  cox = wdata->cox;
+  coy = wdata->coy;
+  mxns = wdata->mxns;
+  dx = wdata->dx;
+  dy = wdata->dy;
+  
+  for (jy = 0; jy < MY; jy++) {
+    y = jy*dy;
+    iyoff = mxns*jy;
+    idyu = (jy == MY-1) ? -mxns : mxns;
+    idyl = (jy == 0) ? -mxns : mxns;
+    for (jx = 0; jx < MX; jx++) {
+      x = jx*dx;
+      ic = iyoff + ns*jx;
+      /* Get interaction rates at one point (x,y). */
+      WebRates(x, y, t, cdata+ic, fsave+ic, wdata);
+      idxu = (jx == MX-1) ? -ns : ns;
+      idxl = (jx == 0) ? -ns : ns;
+      for (i = 1; i <= ns; i++) {
+        ici = ic + i-1;
+        /* Do differencing in y. */
+        dcyli = cdata[ici] - cdata[ici-idyl];
+        dcyui = cdata[ici+idyu] - cdata[ici];
+        /* Do differencing in x. */
+        dcxli = cdata[ici] - cdata[ici-idxl];
+        dcxui = cdata[ici+idxu] - cdata[ici];
+        /* Collect terms and load cdot elements. */
+        cdotdata[ici] = coy[i-1]*(dcyui - dcyli) + cox[i-1]*(dcxui - dcxli) +
+          fsave[ici];
+      }
+    }
+  }
+}
+
+/*
+  This routine computes the interaction rates for the species
+  c_1, ... ,c_ns (stored in c[0],...,c[ns-1]), at one spatial point 
+  and at time t.
+*/
+static void WebRates(realtype x, realtype y, realtype t, realtype c[],
+                     realtype rate[], WebData wdata)
+{
+  int i, j, ns;
+  realtype fac, *bcoef;
+  realtype (*acoef)[NS];
+  
+  ns = wdata->ns;
+  acoef = wdata->acoef;
+  bcoef = wdata->bcoef;
+  
+  for (i = 0; i < ns; i++)
+    rate[i] = ZERO;
+  
+  for (j = 0; j < ns; j++) 
+    for (i = 0; i < ns; i++) 
+      rate[i] += c[j] * acoef[i][j];
+  
+  fac = ONE + ALPH*x*y;
+  for (i = 0; i < ns; i++) 
+    rate[i] = c[i]*(bcoef[i]*fac + rate[i]);
+}
+
+/*
+ This routine generates the block-diagonal part of the Jacobian
+ corresponding to the interaction rates, multiplies by -gamma, adds
+ the identity matrix, and calls gefa to do the LU decomposition of
+ each diagonal block. The computation of the diagonal blocks uses
+ the preset block and grouping information. One block per group is
+ computed. The Jacobian elements are generated by difference
+ quotients using calls to the routine fblock.
+
+ This routine can be regarded as a prototype for the general case
+ of a block-diagonal preconditioner. The blocks are of size mp, and
+ there are ngrp=ngx*ngy blocks computed in the block-grouping scheme.
+*/ 
+static int Precond(realtype t, N_Vector c, N_Vector fc,
+		   booleantype jok, booleantype *jcurPtr, realtype gamma,
+		   void *P_data, N_Vector vtemp1, N_Vector vtemp2,
+                   N_Vector vtemp3)
+{
+  realtype ***P;
+  long int **pivot, ier;
+  int i, if0, if00, ig, igx, igy, j, jj, jx, jy;
+  int *jxr, *jyr, mp, ngrp, ngx, ngy, mxmp, flag;
+  realtype uround, fac, r, r0, save, srur;
+  realtype *f1, *fsave, *cdata, *rewtdata;
+  WebData wdata;
+  void *cvode_mem;
+  N_Vector rewt;
+  
+  wdata = (WebData) P_data;
+  cvode_mem = wdata->cvode_mem;
+  cdata = NV_DATA_S(c);
+  rewt = wdata->rewt;
+  flag = CVodeGetErrWeights(cvode_mem, rewt);
+  if(check_flag(&flag, "CVodeGetErrWeights", 1)) return(1);
+  rewtdata = NV_DATA_S(rewt);
+
+  uround = UNIT_ROUNDOFF;
+
+  P = wdata->P;
+  pivot = wdata->pivot;
+  jxr = wdata->jxr;
+  jyr = wdata->jyr;
+  mp = wdata->mp;
+  srur = wdata->srur;
+  ngrp = wdata->ngrp;
+  ngx = wdata->ngx;
+  ngy = wdata->ngy;
+  mxmp = wdata->mxmp;
+  fsave = wdata->fsave;
+  
+  /* Make mp calls to fblock to approximate each diagonal block of Jacobian.
+     Here, fsave contains the base value of the rate vector and 
+     r0 is a minimum increment factor for the difference quotient. */
+  
+  f1 = NV_DATA_S(vtemp1);
+  
+  fac = N_VWrmsNorm (fc, rewt);
+  r0 = RCONST(1000.0)*ABS(gamma)*uround*NEQ*fac;
+  if (r0 == ZERO) r0 = ONE;
+  
+  for (igy = 0; igy < ngy; igy++) {
+    jy = jyr[igy];
+    if00 = jy*mxmp;
+    for (igx = 0; igx < ngx; igx++) { 
+      jx = jxr[igx];
+      if0 = if00 + jx*mp;
+      ig = igx + igy*ngx; 
+      /* Generate ig-th diagonal block */
+      for (j = 0; j < mp; j++) {
+        /* Generate the jth column as a difference quotient */
+        jj = if0 + j; 
+        save = cdata[jj];
+        r = MAX(srur*ABS(save),r0/rewtdata[jj]);
+        cdata[jj] += r;
+        fac = -gamma/r;
+        fblock (t, cdata, jx, jy, f1, wdata);
+        for (i = 0; i < mp; i++) {
+          P[ig][j][i] = (f1[i] - fsave[if0+i])*fac;
+        }
+        cdata[jj] = save;
+      }
+    }
+  }
+  
+  /* Add identity matrix and do LU decompositions on blocks. */
+  
+  for (ig = 0; ig < ngrp; ig++) {
+    denaddI(P[ig], mp);
+    ier = gefa(P[ig], mp, pivot[ig]);
+    if (ier != 0) return(1);
+  }
+  
+  *jcurPtr = TRUE;
+  return(0);
+}
+
+/*
+  This routine computes one block of the interaction terms of the
+  system, namely block (jx,jy), for use in preconditioning.
+  Here jx and jy count from 0.
+*/
+static void fblock(realtype t, realtype cdata[], int jx, int jy,
+                   realtype cdotdata[], WebData wdata)
+{
+  int iblok, ic;
+  realtype x, y;
+  
+  iblok = jx + jy*(wdata->mx);
+  y = jy*(wdata->dy);
+  x = jx*(wdata->dx);
+  ic = (wdata->ns)*(iblok);
+  WebRates(x, y, t, cdata+ic, cdotdata, wdata);
+}
+
+/*
+  This routine applies two inverse preconditioner matrices
+  to the vector r, using the interaction-only block-diagonal Jacobian
+  with block-grouping, denoted Jr, and Gauss-Seidel applied to the
+  diffusion contribution to the Jacobian, denoted Jd.
+  It first calls GSIter for a Gauss-Seidel approximation to
+  ((I - gamma*Jd)-inverse)*r, and stores the result in z.
+  Then it computes ((I - gamma*Jr)-inverse)*z, using LU factors of the
+  blocks in P, and pivot information in pivot, and returns the result in z.
+*/
+static int PSolve(realtype tn, N_Vector c, N_Vector fc,
+                  N_Vector r, N_Vector z,
+                  realtype gamma, realtype delta,
+                  int lr, void *P_data, N_Vector vtemp)
+{
+  realtype   ***P;
+  long int **pivot;
+  int jx, jy, igx, igy, iv, ig, *jigx, *jigy, mx, my, ngx, mp;
+  WebData wdata;
+  
+  wdata = (WebData) P_data;
+  
+  N_VScale(ONE, r, z);
+  
+  /* call GSIter for Gauss-Seidel iterations */
+  
+  GSIter(gamma, z, vtemp, wdata);
+  
+  /* Do backsolves for inverse of block-diagonal preconditioner factor */
+  
+  P = wdata->P;
+  pivot = wdata->pivot;
+  mx = wdata->mx;
+  my = wdata->my;
+  ngx = wdata->ngx;
+  mp = wdata->mp;
+  jigx = wdata->jigx;
+  jigy = wdata->jigy;
+  
+  iv = 0;
+  for (jy = 0; jy < my; jy++) {
+    igy = jigy[jy];
+    for (jx = 0; jx < mx; jx++) {
+      igx = jigx[jx];
+      ig = igx + igy*ngx;
+      gesl(P[ig], mp, pivot[ig], &(NV_DATA_S(z)[iv]));
+      iv += mp;
+    }
+  }
+  
+  return(0);
+}
+
+/*
+  This routine performs ITMAX=5 Gauss-Seidel iterations to compute an
+  approximation to (P-inverse)*z, where P = I - gamma*Jd, and
+  Jd represents the diffusion contributions to the Jacobian.
+  The answer is stored in z on return, and x is a temporary vector.
+  The dimensions below assume a global constant NS >= ns.
+  Some inner loops of length ns are implemented with the small
+  vector kernels v_sum_prods, v_prod, v_inc_by_prod.
+*/
+static void GSIter(realtype gamma, N_Vector z, N_Vector x, WebData wdata)
+{
+  int jx, jy, mx, my, x_loc, y_loc;
+  int ns, mxns, i, iyoff, ic, iter;
+  realtype beta[NS], beta2[NS], cof1[NS], gam[NS], gam2[NS];
+  realtype temp, *cox, *coy, *xd, *zd;
+  
+  xd = NV_DATA_S(x);
+  zd = NV_DATA_S(z);
+  ns = wdata->ns;
+  mx = wdata->mx;
+  my = wdata->my;
+  mxns = wdata->mxns;
+  cox = wdata->cox;
+  coy = wdata->coy;
+  
+  /* Write matrix as P = D - L - U.
+     Load local arrays beta, beta2, gam, gam2, and cof1. */
+  
+  for (i = 0; i < ns; i++) {
+    temp = ONE/(ONE + RCONST(2.0)*gamma*(cox[i] + coy[i]));
+    beta[i] = gamma*cox[i]*temp;
+    beta2[i] = RCONST(2.0)*beta[i];
+    gam[i] = gamma*coy[i]*temp;
+    gam2[i] = RCONST(2.0)*gam[i];
+    cof1[i] = temp;
+  }
+  
+  /* Begin iteration loop.
+     Load vector x with (D-inverse)*z for first iteration. */
+  
+  for (jy = 0; jy < my; jy++) {
+    iyoff = mxns*jy;
+    for (jx = 0; jx < mx; jx++) {
+      ic = iyoff + ns*jx;
+      v_prod(xd+ic, cof1, zd+ic, ns); /* x[ic+i] = cof1[i]z[ic+i] */
+    }
+  }
+  N_VConst(ZERO, z);
+  
+  /* Looping point for iterations. */
+  
+  for (iter=1; iter <= ITMAX; iter++) {
+    
+    /* Calculate (D-inverse)*U*x if not the first iteration. */
+    
+    if (iter > 1) {
+      for (jy=0; jy < my; jy++) {
+        iyoff = mxns*jy;
+        for (jx=0; jx < mx; jx++) { /* order of loops matters */
+          ic = iyoff + ns*jx;
+          x_loc = (jx == 0) ? 0 : ((jx == mx-1) ? 2 : 1);
+          y_loc = (jy == 0) ? 0 : ((jy == my-1) ? 2 : 1);
+          switch (3*y_loc+x_loc) {
+          case 0 : 
+            /* jx == 0, jy == 0 */
+            /* x[ic+i] = beta2[i]x[ic+ns+i] + gam2[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta2, xd+ic+ns, gam2, xd+ic+mxns, ns);
+            break;
+          case 1 : 
+            /* 1 <= jx <= mx-2, jy == 0 */
+            /* x[ic+i] = beta[i]x[ic+ns+i] + gam2[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta, xd+ic+ns, gam2, xd+ic+mxns, ns);
+            break;
+          case 2 : 
+            /* jx == mx-1, jy == 0 */
+            /* x[ic+i] = gam2[i]x[ic+mxns+i] */
+            v_prod(xd+ic, gam2, xd+ic+mxns, ns);
+            break;
+          case 3 : 
+            /* jx == 0, 1 <= jy <= my-2 */
+            /* x[ic+i] = beta2[i]x[ic+ns+i] + gam[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta2, xd+ic+ns, gam, xd+ic+mxns, ns);
+            break;
+          case 4 : 
+            /* 1 <= jx <= mx-2, 1 <= jy <= my-2 */
+            /* x[ic+i] = beta[i]x[ic+ns+i] + gam[i]x[ic+mxns+i] */
+            v_sum_prods(xd+ic, beta, xd+ic+ns, gam, xd+ic+mxns, ns);
+            break;
+          case 5 : 
+            /* jx == mx-1, 1 <= jy <= my-2 */
+            /* x[ic+i] = gam[i]x[ic+mxns+i] */
+            v_prod(xd+ic, gam, xd+ic+mxns, ns);
+            break;
+          case 6 : 
+            /* jx == 0, jy == my-1 */
+            /* x[ic+i] = beta2[i]x[ic+ns+i] */
+            v_prod(xd+ic, beta2, xd+ic+ns, ns);
+            break;
+          case 7 : 
+            /* 1 <= jx <= mx-2, jy == my-1 */
+            /* x[ic+i] = beta[i]x[ic+ns+i] */
+            v_prod(xd+ic, beta, xd+ic+ns, ns);
+            break;
+          case 8 : 
+            /* jx == mx-1, jy == my-1 */
+            /* x[ic+i] = 0.0 */
+            v_zero(xd+ic, ns);
+            break;
+          }
+        }
+      }
+    }  /* end if (iter > 1) */
+    
+    /* Overwrite x with [(I - (D-inverse)*L)-inverse]*x. */
+    
+    for (jy=0; jy < my; jy++) {
+      iyoff = mxns*jy;
+      for (jx=0; jx < mx; jx++) { /* order of loops matters */
+        ic = iyoff + ns*jx;
+        x_loc = (jx == 0) ? 0 : ((jx == mx-1) ? 2 : 1);
+        y_loc = (jy == 0) ? 0 : ((jy == my-1) ? 2 : 1);
+        switch (3*y_loc+x_loc) {
+        case 0 : 
+          /* jx == 0, jy == 0 */
+          break;
+        case 1 : 
+          /* 1 <= jx <= mx-2, jy == 0 */
+          /* x[ic+i] += beta[i]x[ic-ns+i] */
+          v_inc_by_prod(xd+ic, beta, xd+ic-ns, ns);
+          break;
+        case 2 : 
+          /* jx == mx-1, jy == 0 */
+          /* x[ic+i] += beta2[i]x[ic-ns+i] */
+          v_inc_by_prod(xd+ic, beta2, xd+ic-ns, ns);
+          break;
+        case 3 : 
+          /* jx == 0, 1 <= jy <= my-2 */
+          /* x[ic+i] += gam[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, gam, xd+ic-mxns, ns);
+          break;
+        case 4 : 
+          /* 1 <= jx <= mx-2, 1 <= jy <= my-2 */
+          /* x[ic+i] += beta[i]x[ic-ns+i] + gam[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam, xd+ic-mxns, ns);
+          break;
+        case 5 : 
+          /* jx == mx-1, 1 <= jy <= my-2 */
+          /* x[ic+i] += beta2[i]x[ic-ns+i] + gam[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta2, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam, xd+ic-mxns, ns);
+          break;
+        case 6 : 
+          /* jx == 0, jy == my-1 */
+          /* x[ic+i] += gam2[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, gam2, xd+ic-mxns, ns);
+          break;
+        case 7 : 
+          /* 1 <= jx <= mx-2, jy == my-1 */
+          /* x[ic+i] += beta[i]x[ic-ns+i] + gam2[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam2, xd+ic-mxns, ns);
+          break;
+        case 8 : 
+          /* jx == mx-1, jy == my-1 */
+          /* x[ic+i] += beta2[i]x[ic-ns+i] + gam2[i]x[ic-mxns+i] */
+          v_inc_by_prod(xd+ic, beta2, xd+ic-ns, ns);
+          v_inc_by_prod(xd+ic, gam2, xd+ic-mxns, ns);
+          break;
+        }
+      }
+    }
+    
+    /* Add increment x to z : z <- z+x */
+    
+    N_VLinearSum(ONE, z, ONE, x, z);
+    
+  }
+}
+
+static void v_inc_by_prod(realtype u[], realtype v[], realtype w[], int n)
+{
+  int i;  
+  for (i=0; i < n; i++) u[i] += v[i]*w[i];
+}
+
+static void v_sum_prods(realtype u[], realtype p[], realtype q[],
+                        realtype v[], realtype w[], int n)
+{
+  int i;  
+  for (i=0; i < n; i++) u[i] = p[i]*q[i] + v[i]*w[i];
+}
+
+static void v_prod(realtype u[], realtype v[], realtype w[], int n)
+{ 
+  int i;
+  for (i=0; i < n; i++) u[i] = v[i]*w[i];
+}
+
+static void v_zero(realtype u[], int n)
+{
+  int i;  
+  for (i=0; i < n; i++) u[i] = ZERO;
+}
+
+/* Check function return value...
+     opt == 0 means SUNDIALS function allocates memory so check if
+              returned NULL pointer
+     opt == 1 means SUNDIALS function returns a flag so check if
+              flag >= 0
+     opt == 2 means function allocates memory so check if returned
+              NULL pointer */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+              funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdemk.out b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdemk.out
new file mode 100644
index 0000000..ca19090
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdemk.out
@@ -0,0 +1,645 @@
+
+
+Demonstration program for CVODE - CVSPGMR linear solver
+
+Food web problem with ns species, ns = 6
+Predator-prey interaction and diffusion on a 2-D square
+
+Matrix parameters: a = 1   e = 1e+04   g = 5e-07
+b parameter = 1
+Diffusion coefficients: Dprey = 1   Dpred = 0.5
+Rate parameter alpha = 1
+
+Mesh dimensions (mx,my) are 6, 6.  Total system size is neq = 216 
+
+Tolerances: itol = CV_SS,  reltol = 1e-05, abstol = 1e-05 
+
+Preconditioning uses a product of:
+  (1) Gauss-Seidel iterations with itmax = 5 iterations, and
+  (2) interaction-only block-diagonal matrix with block-grouping
+  Number of diagonal block groups = ngrp = 4  (ngx by ngy, ngx = 2, ngy = 2)
+
+
+----------------------------------------------------------------------------
+
+
+Preconditioner type is           jpre = PREC_LEFT
+
+Gram-Schmidt method type is    gstype = MODIFIED_GS
+
+
+c values at t = 0:
+
+Species 1
+10        10        10        10        10        10        
+10        10.1678   10.3775   10.3775   10.1678   10        
+10        10.3775   10.8493   10.8493   10.3775   10        
+10        10.3775   10.8493   10.8493   10.3775   10        
+10        10.1678   10.3775   10.3775   10.1678   10        
+10        10        10        10        10        10        
+
+Species 2
+10        10        10        10        10        10        
+10        10.3355   10.755    10.755    10.3355   10        
+10        10.755    11.6987   11.6987   10.755    10        
+10        10.755    11.6987   11.6987   10.755    10        
+10        10.3355   10.755    10.755    10.3355   10        
+10        10        10        10        10        10        
+
+Species 3
+10        10        10        10        10        10        
+10        10.5033   11.1325   11.1325   10.5033   10        
+10        11.1325   12.548    12.548    11.1325   10        
+10        11.1325   12.548    12.548    11.1325   10        
+10        10.5033   11.1325   11.1325   10.5033   10        
+10        10        10        10        10        10        
+
+Species 4
+10        10        10        10        10        10        
+10        10.6711   11.5099   11.5099   10.6711   10        
+10        11.5099   13.3974   13.3974   11.5099   10        
+10        11.5099   13.3974   13.3974   11.5099   10        
+10        10.6711   11.5099   11.5099   10.6711   10        
+10        10        10        10        10        10        
+
+Species 5
+10        10        10        10        10        10        
+10        10.8389   11.8874   11.8874   10.8389   10        
+10        11.8874   14.2467   14.2467   11.8874   10        
+10        11.8874   14.2467   14.2467   11.8874   10        
+10        10.8389   11.8874   11.8874   10.8389   10        
+10        10        10        10        10        10        
+
+Species 6
+10        10        10        10        10        10        
+10        11.0066   12.2649   12.2649   11.0066   10        
+10        12.2649   15.0961   15.0961   12.2649   10        
+10        12.2649   15.0961   15.0961   12.2649   10        
+10        11.0066   12.2649   12.2649   11.0066   10        
+10        10        10        10        10        10        
+
+t =   1.00e-08  nst = 3  nfe = 9  nni = 6  qu = 2  hu =    1.76e-08
+
+t =   1.00e-07  nst = 7  nfe = 13  nni = 10  qu = 2  hu =    4.78e-08
+
+t =   1.00e-06  nst = 15  nfe = 23  nni = 20  qu = 3  hu =    1.50e-07
+
+c values at t = 1e-06:
+
+Species 1
+9.99991   9.99992   9.99993   9.99993   9.99993   9.99992   
+9.99992   10.1677   10.3774   10.3774   10.1677   9.99993   
+9.99993   10.3774   10.8492   10.8492   10.3774   9.99993   
+9.99993   10.3774   10.8492   10.8492   10.3774   9.99993   
+9.99992   10.1677   10.3774   10.3774   10.1677   9.99992   
+9.99991   9.99992   9.99993   9.99993   9.99992   9.99991   
+
+Species 2
+9.99991   9.99993   9.99995   9.99995   9.99993   9.99992   
+9.99993   10.3355   10.7549   10.7549   10.3355   9.99993   
+9.99995   10.7549   11.6985   11.6985   10.7549   9.99995   
+9.99995   10.7549   11.6985   11.6985   10.7549   9.99995   
+9.99993   10.3355   10.7549   10.7549   10.3355   9.99993   
+9.99991   9.99993   9.99995   9.99995   9.99993   9.99991   
+
+Species 3
+9.99991   9.99994   9.99997   9.99997   9.99994   9.99992   
+9.99994   10.5032   11.1323   11.1323   10.5032   9.99994   
+9.99997   11.1323   12.5478   12.5478   11.1323   9.99997   
+9.99997   11.1323   12.5478   12.5478   11.1323   9.99997   
+9.99994   10.5032   11.1323   11.1323   10.5032   9.99994   
+9.99991   9.99994   9.99997   9.99997   9.99994   9.99991   
+
+Species 4
+13.499    13.499    13.499    13.499    13.499    13.4989   
+13.499    14.5506   15.8932   15.8932   14.5506   13.499    
+13.499    15.8932   19.0308   19.0308   15.8932   13.499    
+13.499    15.8932   19.0308   19.0308   15.8932   13.499    
+13.499    14.5506   15.8932   15.8932   14.5506   13.499    
+13.499    13.499    13.499    13.499    13.499    13.499    
+
+Species 5
+13.499    13.499    13.499    13.499    13.499    13.4989   
+13.499    14.7794   16.4145   16.4145   14.7794   13.499    
+13.499    16.4145   20.2373   20.2373   16.4145   13.499    
+13.499    16.4145   20.2373   20.2373   16.4145   13.499    
+13.499    14.7794   16.4145   16.4145   14.7794   13.499    
+13.499    13.499    13.499    13.499    13.499    13.499    
+
+Species 6
+13.499    13.499    13.499    13.499    13.499    13.4989   
+13.499    15.0082   16.9357   16.9357   15.0082   13.499    
+13.499    16.9357   21.4437   21.4437   16.9357   13.499    
+13.499    16.9357   21.4437   21.4437   16.9357   13.499    
+13.499    15.0082   16.9357   16.9357   15.0082   13.499    
+13.499    13.499    13.499    13.499    13.499    13.499    
+
+t =   1.00e-05  nst = 34  nfe = 46  nni = 43  qu = 5  hu =    6.11e-07
+
+t =   1.00e-04  nst = 116  nfe = 136  nni = 133  qu = 5  hu =    5.51e-06
+
+t =   1.00e-03  nst = 135  nfe = 155  nni = 152  qu = 2  hu =    3.53e-04
+
+c values at t = 0.001:
+
+Species 1
+9.90702   9.91664   9.92836   9.93033   9.92253   9.91674   
+9.91472   10.0746   10.2769   10.2785   10.0795   9.92253   
+9.92446   10.2748   10.7181   10.7194   10.2785   9.93033   
+9.92445   10.2744   10.7173   10.7181   10.2769   9.92836   
+9.91469   10.0734   10.2744   10.2748   10.0746   9.91664   
+9.90697   9.91469   9.92445   9.92446   9.91472   9.90702   
+
+Species 2
+9.90741   9.92474   9.94623   9.9482    9.93064   9.91713   
+9.92282   10.2412   10.644    10.6457   10.2461   9.93064   
+9.94232   10.6419   11.5267   11.5281   10.6457   9.9482    
+9.94231   10.6415   11.5258   11.5267   10.644    9.94623   
+9.92279   10.24     10.6415   10.6419   10.2412   9.92474   
+9.90737   9.92279   9.94231   9.94232   9.92282   9.90741   
+
+Species 3
+9.90781   9.93284   9.96408   9.96606   9.93874   9.91752   
+9.93092   10.4078   11.0109   11.0127   10.4127   9.93874   
+9.96017   11.0088   12.3339   12.3354   11.0127   9.96606   
+9.96016   11.0083   12.3329   12.3339   11.0109   9.96408   
+9.93089   10.4065   11.0083   11.0088   10.4078   9.93284   
+9.90776   9.93089   9.96016   9.96017   9.93092   9.90781   
+
+Species 4
+297231    297749    298393    298451    297925    297520    
+297692    307244    319327    319378    307390    297925    
+298276    319264    345799    345840    319378    298451    
+298276    319252    345771    345799    319327    298393    
+297691    307208    319252    319264    307244    297749    
+297229    297691    298276    298276    297692    297231    
+
+Species 5
+297231    297749    298393    298451    297925    297520    
+297692    307244    319327    319378    307390    297925    
+298276    319264    345799    345840    319378    298451    
+298276    319252    345771    345799    319327    298393    
+297691    307208    319252    319264    307244    297749    
+297229    297691    298276    298276    297692    297231    
+
+Species 6
+297231    297749    298393    298451    297925    297520    
+297692    307244    319327    319378    307390    297925    
+298276    319264    345799    345840    319378    298451    
+298276    319252    345771    345799    319327    298393    
+297691    307208    319252    319264    307244    297749    
+297229    297691    298276    298276    297692    297231    
+
+t =   1.00e-02  nst = 143  nfe = 165  nni = 162  qu = 3  hu =    1.37e-03
+
+t =   1.00e-01  nst = 165  nfe = 190  nni = 187  qu = 5  hu =    6.02e-03
+
+t =   1.00e+00  nst = 235  nfe = 264  nni = 261  qu = 4  hu =    2.49e-02
+
+c values at t = 1:
+
+Species 1
+1.58853   1.59926   1.62153   1.64766   1.67038   1.68151   
+1.58535   1.59505   1.61549   1.63954   1.66035   1.67038   
+1.57758   1.58549   1.60241   1.62237   1.63954   1.64766   
+1.56822   1.57414   1.58708   1.60241   1.61549   1.62153   
+1.5605    1.56465   1.57414   1.58549   1.59505   1.59926   
+1.55734   1.5605    1.56822   1.57758   1.58535   1.58853   
+
+Species 2
+1.59068   1.60143   1.62373   1.64989   1.67263   1.68377   
+1.5875    1.59721   1.61768   1.64175   1.66259   1.67263   
+1.57973   1.58764   1.60458   1.62456   1.64175   1.64989   
+1.57036   1.57628   1.58923   1.60458   1.61768   1.62373   
+1.56263   1.56678   1.57628   1.58764   1.59721   1.60143   
+1.55947   1.56263   1.57036   1.57973   1.5875    1.59068   
+
+Species 3
+1.59272   1.60347   1.6258    1.65199   1.67476   1.68591   
+1.58953   1.59926   1.61975   1.64384   1.6647    1.67476   
+1.58175   1.58968   1.60664   1.62664   1.64384   1.65199   
+1.57237   1.5783    1.59127   1.60664   1.61975   1.6258    
+1.56464   1.56879   1.5783    1.58968   1.59926   1.60347   
+1.56147   1.56464   1.57237   1.58175   1.58953   1.59272   
+
+Species 4
+47718.9   48040.8   48709.6   49494     50176.1   50509.9   
+47623.3   47914.5   48528.3   49250.2   49874.9   50176.1   
+47390.2   47627.5   48135.5   48734.6   49250.2   49494     
+47109     47286.6   47675.1   48135.5   48528.3   48709.6   
+46877.1   47001.6   47286.6   47627.5   47914.5   48040.8   
+46782.3   46877.1   47109     47390.2   47623.3   47718.9   
+
+Species 5
+47718.9   48040.8   48709.6   49494     50176.1   50509.9   
+47623.3   47914.5   48528.3   49250.2   49874.9   50176.1   
+47390.2   47627.5   48135.5   48734.6   49250.2   49494     
+47109     47286.6   47675.1   48135.5   48528.3   48709.6   
+46877.1   47001.6   47286.6   47627.5   47914.5   48040.8   
+46782.3   46877.1   47109     47390.2   47623.3   47718.9   
+
+Species 6
+47718.9   48040.8   48709.6   49494     50176.1   50509.9   
+47623.3   47914.5   48528.3   49250.2   49874.9   50176.1   
+47390.2   47627.5   48135.5   48734.6   49250.2   49494     
+47109     47286.6   47675.1   48135.5   48528.3   48709.6   
+46877.1   47001.6   47286.6   47627.5   47914.5   48040.8   
+46782.3   46877.1   47109     47390.2   47623.3   47718.9   
+
+t =   2.00e+00  nst = 272  nfe = 304  nni = 301  qu = 3  hu =    3.80e-02
+
+t =   3.00e+00  nst = 288  nfe = 321  nni = 318  qu = 3  hu =    6.58e-02
+
+t =   4.00e+00  nst = 303  nfe = 337  nni = 334  qu = 3  hu =    6.58e-02
+
+c values at t = 4:
+
+Species 1
+1.19535   1.20368   1.2211    1.24158   1.25935   1.268     
+1.19281   1.20035   1.21636   1.23523   1.25154   1.25935   
+1.18657   1.19274   1.20603   1.22174   1.23523   1.24158   
+1.17905   1.18368   1.1939    1.20603   1.21636   1.2211    
+1.17285   1.17613   1.18368   1.19274   1.20035   1.20368   
+1.17033   1.17285   1.17905   1.18657   1.19281   1.19535   
+
+Species 2
+1.19539   1.20372   1.22113   1.24161   1.25939   1.26804   
+1.19284   1.20039   1.2164    1.23527   1.25158   1.25939   
+1.18661   1.19277   1.20606   1.22177   1.23527   1.24161   
+1.17908   1.18372   1.19393   1.20606   1.2164    1.22113   
+1.17288   1.17616   1.18372   1.19277   1.20039   1.20372   
+1.17036   1.17288   1.17908   1.18661   1.19284   1.19539   
+
+Species 3
+1.19542   1.20375   1.22117   1.24164   1.25942   1.26807   
+1.19287   1.20042   1.21643   1.2353    1.25161   1.25942   
+1.18664   1.1928    1.20609   1.2218    1.2353    1.24164   
+1.17911   1.18375   1.19396   1.20609   1.21643   1.22117   
+1.17291   1.17619   1.18375   1.1928    1.20042   1.20375   
+1.17039   1.17291   1.17911   1.18664   1.19287   1.19542   
+
+Species 4
+35860.9   36110.3   36632.6   37246.6   37779.6   38038.8   
+35784.3   36010.5   36490.5   37056.4   37545.5   37779.6   
+35597.3   35782.1   36180.6   36651.7   37056.4   37246.6   
+35371.5   35510.5   35816.8   36180.6   36490.5   36632.6   
+35185.5   35283.9   35510.5   35782.1   36010.5   36110.3   
+35109.8   35185.5   35371.5   35597.3   35784.3   35860.9   
+
+Species 5
+35860.9   36110.2   36632.6   37246.5   37779.6   38038.8   
+35784.2   36010.6   36490.5   37056.5   37545.4   37779.6   
+35597.3   35782.1   36180.7   36651.7   37056.5   37246.5   
+35371.5   35510.5   35816.8   36180.7   36490.5   36632.6   
+35185.5   35283.9   35510.5   35782.1   36010.6   36110.2   
+35109.8   35185.5   35371.5   35597.3   35784.2   35860.9   
+
+Species 6
+35860.9   36110.2   36632.6   37246.5   37779.6   38038.7   
+35784.2   36010.6   36490.4   37056.5   37545.4   37779.6   
+35597.4   35782     36180.7   36651.7   37056.5   37246.5   
+35371.5   35510.5   35816.7   36180.7   36490.4   36632.6   
+35185.6   35283.9   35510.5   35782     36010.6   36110.2   
+35109.8   35185.6   35371.5   35597.4   35784.2   35860.9   
+
+t =   5.00e+00  nst = 317  nfe = 353  nni = 350  qu = 2  hu =    9.90e-02
+
+t =   6.00e+00  nst = 324  nfe = 361  nni = 358  qu = 3  hu =    1.73e-01
+
+t =   7.00e+00  nst = 330  nfe = 367  nni = 364  qu = 3  hu =    1.73e-01
+
+c values at t = 7:
+
+Species 1
+1.18854   1.19682   1.21415   1.23453   1.25221   1.26082   
+1.186     1.19351   1.20944   1.22822   1.24444   1.25221   
+1.1798    1.18593   1.19916   1.21479   1.22822   1.23453   
+1.17231   1.17692   1.18708   1.19916   1.20944   1.21415   
+1.16614   1.1694    1.17692   1.18593   1.19351   1.19682   
+1.16362   1.16614   1.17231   1.1798    1.186     1.18854   
+
+Species 2
+1.18854   1.19683   1.21415   1.23453   1.25222   1.26082   
+1.186     1.19351   1.20944   1.22822   1.24444   1.25222   
+1.1798    1.18593   1.19916   1.21479   1.22822   1.23453   
+1.17231   1.17692   1.18709   1.19916   1.20944   1.21415   
+1.16614   1.1694    1.17692   1.18593   1.19351   1.19683   
+1.16362   1.16614   1.17231   1.1798    1.186     1.18854   
+
+Species 3
+1.18854   1.19683   1.21415   1.23453   1.25222   1.26082   
+1.18601   1.19351   1.20944   1.22822   1.24444   1.25222   
+1.1798    1.18594   1.19916   1.21479   1.22822   1.23453   
+1.17231   1.17692   1.18709   1.19916   1.20944   1.21415   
+1.16614   1.1694    1.17692   1.18594   1.19351   1.19683   
+1.16363   1.16614   1.17231   1.1798    1.18601   1.18854   
+
+Species 4
+35655.3   35903.6   36423.1   37034.1   37564.4   37822.4   
+35579.3   35804.2   36281.9   36844.8   37331.5   37564.4   
+35393.1   35577.1   35973.4   36442.3   36844.8   37034.1   
+35168.4   35306.5   35611.5   35973.4   36281.9   36423.1   
+34983.3   35081.1   35306.5   35577.1   35804.2   35903.6   
+34907.8   34983.3   35168.4   35393.1   35579.3   35655.3   
+
+Species 5
+35655.2   35903.7   36423.1   37034.2   37564.3   37822.4   
+35579.4   35804.2   36282     36844.8   37331.6   37564.3   
+35393     35577.2   35973.3   36442.4   36844.8   37034.2   
+35168.5   35306.5   35611.6   35973.3   36282     36423.1   
+34983.2   35081.2   35306.5   35577.2   35804.2   35903.7   
+34907.9   34983.2   35168.5   35393     35579.4   35655.2   
+
+Species 6
+35655.1   35903.7   36423     37034.3   37564.3   37822.5   
+35579.4   35804.1   36282.1   36844.7   37331.7   37564.3   
+35392.9   35577.2   35973.2   36442.5   36844.7   37034.3   
+35168.5   35306.4   35611.7   35973.2   36282.1   36423     
+34983.1   35081.3   35306.4   35577.2   35804.1   35903.7   
+34908     34983.1   35168.5   35392.9   35579.4   35655.1   
+
+t =   8.00e+00  nst = 336  nfe = 373  nni = 370  qu = 3  hu =    1.73e-01
+
+t =   9.00e+00  nst = 342  nfe = 380  nni = 377  qu = 3  hu =    1.73e-01
+
+t =   1.00e+01  nst = 348  nfe = 386  nni = 383  qu = 3  hu =    1.73e-01
+
+c values at t = 10:
+
+Species 1
+1.18838   1.19667   1.21399   1.23437   1.25205   1.26066   
+1.18585   1.19335   1.20928   1.22805   1.24428   1.25205   
+1.17964   1.18578   1.199     1.21463   1.22805   1.23437   
+1.17215   1.17676   1.18693   1.199     1.20928   1.21399   
+1.16598   1.16925   1.17676   1.18578   1.19335   1.19667   
+1.16347   1.16598   1.17215   1.17964   1.18585   1.18838   
+
+Species 2
+1.18838   1.19667   1.21399   1.23437   1.25205   1.26066   
+1.18585   1.19335   1.20928   1.22805   1.24428   1.25205   
+1.17964   1.18578   1.199     1.21463   1.22805   1.23437   
+1.17215   1.17676   1.18693   1.199     1.20928   1.21399   
+1.16598   1.16925   1.17676   1.18578   1.19335   1.19667   
+1.16347   1.16598   1.17215   1.17964   1.18585   1.18838   
+
+Species 3
+1.18838   1.19667   1.21399   1.23437   1.25205   1.26066   
+1.18585   1.19335   1.20928   1.22805   1.24428   1.25205   
+1.17964   1.18578   1.199     1.21463   1.22805   1.23437   
+1.17215   1.17676   1.18693   1.199     1.20928   1.21399   
+1.16598   1.16925   1.17676   1.18578   1.19335   1.19667   
+1.16347   1.16598   1.17215   1.17964   1.18585   1.18838   
+
+Species 4
+35650.8   35898.7   36418.4   37029.2   37559.4   37817.5   
+35574.4   35799.6   36277     36840     37326.7   37559.4   
+35388.5   35572.2   35968.7   36437.4   36840     37029.2   
+35163.7   35301.9   35606.7   35968.7   36277     36418.4   
+34978.6   35076.5   35301.9   35572.2   35799.6   35898.7   
+34903.3   34978.6   35163.7   35388.5   35574.4   35650.8   
+
+Species 5
+35650.8   35898.7   36418.4   37029.2   37559.4   37817.5   
+35574.4   35799.7   36277     36840.1   37326.6   37559.4   
+35388.5   35572.2   35968.8   36437.4   36840.1   37029.2   
+35163.7   35301.9   35606.7   35968.8   36277     36418.4   
+34978.6   35076.5   35301.9   35572.2   35799.7   35898.7   
+34903.3   34978.6   35163.7   35388.5   35574.4   35650.8   
+
+Species 6
+35650.9   35898.6   36418.5   37029.2   37559.5   37817.4   
+35574.3   35799.7   36277     36840.1   37326.6   37559.5   
+35388.6   35572.2   35968.8   36437.4   36840.1   37029.2   
+35163.6   35301.9   35606.6   35968.8   36277     36418.5   
+34978.6   35076.4   35301.9   35572.2   35799.7   35898.6   
+34903.3   34978.6   35163.6   35388.6   35574.3   35650.9   
+
+
+
+ Final statistics for this run:
+
+ CVode real workspace length           = 2160 
+ CVode integer workspace length        =   10 
+ CVSPGMR real workspace length         = 2206 
+ CVSPGMR integer workspace length      =   10 
+ Number of steps                       =  348 
+ Number of f-s                         =  386 
+ Number of f-s (SPGMR)                 =  565 
+ Number of f-s (TOTAL)                 =  951 
+ Number of setups                      =   44 
+ Number of nonlinear iterations        =  383 
+ Number of linear iterations           =  565 
+ Number of preconditioner evaluations  =   44 
+ Number of preconditioner solves       =  932 
+ Number of error test failures         =    1 
+ Number of nonlinear conv. failures    =    0 
+ Number of linear convergence failures =    0 
+ Average Krylov subspace dimension     = 1.475 
+
+
+----------------------------------------------------------------------------
+----------------------------------------------------------------------------
+
+
+Preconditioner type is           jpre = PREC_LEFT
+
+Gram-Schmidt method type is    gstype = CLASSICAL_GS
+
+
+t =   1.00e-08  nst = 3  nfe = 9  nni = 6  qu = 2  hu =    1.76e-08
+
+t =   1.00e-07  nst = 7  nfe = 13  nni = 10  qu = 2  hu =    4.78e-08
+
+t =   1.00e-06  nst = 15  nfe = 23  nni = 20  qu = 3  hu =    1.50e-07
+
+t =   1.00e-05  nst = 34  nfe = 46  nni = 43  qu = 5  hu =    6.11e-07
+
+t =   1.00e-04  nst = 116  nfe = 136  nni = 133  qu = 5  hu =    5.51e-06
+
+t =   1.00e-03  nst = 135  nfe = 155  nni = 152  qu = 2  hu =    3.53e-04
+
+t =   1.00e-02  nst = 143  nfe = 165  nni = 162  qu = 3  hu =    1.37e-03
+
+t =   1.00e-01  nst = 165  nfe = 190  nni = 187  qu = 5  hu =    6.02e-03
+
+t =   1.00e+00  nst = 235  nfe = 264  nni = 261  qu = 4  hu =    2.49e-02
+
+t =   2.00e+00  nst = 272  nfe = 304  nni = 301  qu = 3  hu =    3.81e-02
+
+t =   3.00e+00  nst = 288  nfe = 321  nni = 318  qu = 3  hu =    6.59e-02
+
+t =   4.00e+00  nst = 303  nfe = 336  nni = 333  qu = 3  hu =    6.59e-02
+
+t =   5.00e+00  nst = 313  nfe = 348  nni = 345  qu = 3  hu =    1.25e-01
+
+t =   6.00e+00  nst = 321  nfe = 356  nni = 353  qu = 3  hu =    1.25e-01
+
+t =   7.00e+00  nst = 329  nfe = 364  nni = 361  qu = 3  hu =    1.25e-01
+
+t =   8.00e+00  nst = 337  nfe = 373  nni = 370  qu = 3  hu =    1.25e-01
+
+t =   9.00e+00  nst = 345  nfe = 381  nni = 378  qu = 3  hu =    1.25e-01
+
+t =   1.00e+01  nst = 353  nfe = 390  nni = 387  qu = 3  hu =    1.25e-01
+
+
+
+ Final statistics for this run:
+
+ CVode real workspace length           = 2160 
+ CVode integer workspace length        =   10 
+ CVSPGMR real workspace length         = 2206 
+ CVSPGMR integer workspace length      =   10 
+ Number of steps                       =  353 
+ Number of f-s                         =  390 
+ Number of f-s (SPGMR)                 =  581 
+ Number of f-s (TOTAL)                 =  971 
+ Number of setups                      =   43 
+ Number of nonlinear iterations        =  387 
+ Number of linear iterations           =  581 
+ Number of preconditioner evaluations  =   43 
+ Number of preconditioner solves       =  952 
+ Number of error test failures         =    1 
+ Number of nonlinear conv. failures    =    0 
+ Number of linear convergence failures =    0 
+ Average Krylov subspace dimension     = 1.501 
+
+
+----------------------------------------------------------------------------
+----------------------------------------------------------------------------
+
+
+Preconditioner type is           jpre = PREC_RIGHT
+
+Gram-Schmidt method type is    gstype = MODIFIED_GS
+
+
+t =   1.00e-08  nst = 3  nfe = 9  nni = 6  qu = 2  hu =    1.76e-08
+
+t =   1.00e-07  nst = 7  nfe = 13  nni = 10  qu = 2  hu =    4.78e-08
+
+t =   1.00e-06  nst = 15  nfe = 23  nni = 20  qu = 3  hu =    1.50e-07
+
+t =   1.00e-05  nst = 34  nfe = 46  nni = 43  qu = 5  hu =    6.11e-07
+
+t =   1.00e-04  nst = 118  nfe = 137  nni = 134  qu = 5  hu =    6.64e-06
+
+t =   1.00e-03  nst = 138  nfe = 162  nni = 159  qu = 2  hu =    4.17e-04
+
+t =   1.00e-02  nst = 146  nfe = 173  nni = 170  qu = 3  hu =    1.64e-03
+
+t =   1.00e-01  nst = 169  nfe = 199  nni = 196  qu = 5  hu =    9.35e-03
+
+t =   1.00e+00  nst = 207  nfe = 246  nni = 243  qu = 5  hu =    5.18e-02
+
+t =   2.00e+00  nst = 220  nfe = 261  nni = 258  qu = 5  hu =    7.92e-02
+
+t =   3.00e+00  nst = 228  nfe = 270  nni = 267  qu = 5  hu =    1.33e-01
+
+t =   4.00e+00  nst = 234  nfe = 277  nni = 274  qu = 5  hu =    2.04e-01
+
+t =   5.00e+00  nst = 239  nfe = 282  nni = 279  qu = 5  hu =    2.04e-01
+
+t =   6.00e+00  nst = 244  nfe = 287  nni = 284  qu = 5  hu =    2.04e-01
+
+t =   7.00e+00  nst = 257  nfe = 304  nni = 301  qu = 4  hu =    1.79e-01
+
+t =   8.00e+00  nst = 261  nfe = 308  nni = 305  qu = 3  hu =    3.21e-01
+
+t =   9.00e+00  nst = 264  nfe = 311  nni = 308  qu = 3  hu =    5.01e-01
+
+t =   1.00e+01  nst = 265  nfe = 312  nni = 309  qu = 3  hu =    8.10e-01
+
+
+
+ Final statistics for this run:
+
+ CVode real workspace length           = 2160 
+ CVode integer workspace length        =   10 
+ CVSPGMR real workspace length         = 2206 
+ CVSPGMR integer workspace length      =   10 
+ Number of steps                       =  265 
+ Number of f-s                         =  312 
+ Number of f-s (SPGMR)                 =  594 
+ Number of f-s (TOTAL)                 =  906 
+ Number of setups                      =   47 
+ Number of nonlinear iterations        =  309 
+ Number of linear iterations           =  594 
+ Number of preconditioner evaluations  =   47 
+ Number of preconditioner solves       =  867 
+ Number of error test failures         =    3 
+ Number of nonlinear conv. failures    =    1 
+ Number of linear convergence failures =   39 
+ Average Krylov subspace dimension     = 1.922 
+
+
+----------------------------------------------------------------------------
+----------------------------------------------------------------------------
+
+
+Preconditioner type is           jpre = PREC_RIGHT
+
+Gram-Schmidt method type is    gstype = CLASSICAL_GS
+
+
+t =   1.00e-08  nst = 3  nfe = 9  nni = 6  qu = 2  hu =    1.76e-08
+
+t =   1.00e-07  nst = 7  nfe = 13  nni = 10  qu = 2  hu =    4.78e-08
+
+t =   1.00e-06  nst = 15  nfe = 23  nni = 20  qu = 3  hu =    1.50e-07
+
+t =   1.00e-05  nst = 34  nfe = 46  nni = 43  qu = 5  hu =    6.11e-07
+
+t =   1.00e-04  nst = 118  nfe = 137  nni = 134  qu = 5  hu =    6.64e-06
+
+t =   1.00e-03  nst = 138  nfe = 162  nni = 159  qu = 2  hu =    4.17e-04
+
+t =   1.00e-02  nst = 146  nfe = 173  nni = 170  qu = 3  hu =    1.64e-03
+
+t =   1.00e-01  nst = 169  nfe = 199  nni = 196  qu = 5  hu =    9.35e-03
+
+t =   1.00e+00  nst = 207  nfe = 246  nni = 243  qu = 5  hu =    5.19e-02
+
+t =   2.00e+00  nst = 221  nfe = 266  nni = 263  qu = 4  hu =    1.24e-01
+
+t =   3.00e+00  nst = 229  nfe = 274  nni = 271  qu = 4  hu =    1.24e-01
+
+t =   4.00e+00  nst = 235  nfe = 281  nni = 278  qu = 4  hu =    2.03e-01
+
+t =   5.00e+00  nst = 240  nfe = 286  nni = 283  qu = 4  hu =    2.03e-01
+
+t =   6.00e+00  nst = 243  nfe = 290  nni = 287  qu = 4  hu =    3.16e-01
+
+t =   7.00e+00  nst = 246  nfe = 293  nni = 290  qu = 4  hu =    3.16e-01
+
+t =   8.00e+00  nst = 250  nfe = 299  nni = 296  qu = 3  hu =    1.21e-01
+
+t =   9.00e+00  nst = 255  nfe = 304  nni = 301  qu = 2  hu =    3.64e-01
+
+t =   1.00e+01  nst = 257  nfe = 306  nni = 303  qu = 2  hu =    3.64e-01
+
+
+
+ Final statistics for this run:
+
+ CVode real workspace length           = 2160 
+ CVode integer workspace length        =   10 
+ CVSPGMR real workspace length         = 2206 
+ CVSPGMR integer workspace length      =   10 
+ Number of steps                       =  257 
+ Number of f-s                         =  306 
+ Number of f-s (SPGMR)                 =  566 
+ Number of f-s (TOTAL)                 =  872 
+ Number of setups                      =   46 
+ Number of nonlinear iterations        =  303 
+ Number of linear iterations           =  566 
+ Number of preconditioner evaluations  =   46 
+ Number of preconditioner solves       =  833 
+ Number of error test failures         =    4 
+ Number of nonlinear conv. failures    =    1 
+ Number of linear convergence failures =   31 
+ Average Krylov subspace dimension     = 1.868 
+
+
+----------------------------------------------------------------------------
+----------------------------------------------------------------------------
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdx.c b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdx.c
new file mode 100644
index 0000000..5087b01
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdx.c
@@ -0,0 +1,369 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:34:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Example problem:
+ * 
+ * The following is a simple example problem, with the coding
+ * needed for its solution by CVODES. The problem is from
+ * chemical kinetics, and consists of the following three rate
+ * equations:         
+ *    dy1/dt = -.04*y1 + 1.e4*y2*y3
+ *    dy2/dt = .04*y1 - 1.e4*y2*y3 - 3.e7*(y2)^2
+ *    dy3/dt = 3.e7*(y2)^2
+ * on the interval from t = 0.0 to t = 4.e10, with initial
+ * conditions: y1 = 1.0, y2 = y3 = 0. The problem is stiff.
+ * While integrating the system, we also use the rootfinding
+ * feature to find the points at which y1 = 1e-4 or at which
+ * y3 = 0.01. This program solves the problem with the BDF method,
+ * Newton iteration with the CVDENSE dense linear solver, and a
+ * user-supplied Jacobian routine.
+ * It uses a scalar relative tolerance and a vector absolute
+ * tolerance. Output is printed in decades from t = .4 to t = 4.e10.
+ * Run statistics (optional outputs) are printed at the end.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+
+/* Header files with a description of contents used in cvdx.c */
+
+#include "sundialstypes.h"   /* definition of type realtype                */
+#include "cvodes.h"          /* prototypes for CVode* functions and        */
+                             /* constants CV_BDF, CV_NEWTON, CV_SV,        */
+                             /* CV_NORMAL, CV_SUCCESS, and CV_ROOT_RETURN  */
+#include "cvdense.h"         /* prototype for CVDense                      */
+#include "nvector_serial.h"  /* definitions of type N_Vector, macro        */
+                             /* NV_Ith_S, and prototypes for N_VNew_Serial */
+                             /* and N_VDestroy                             */
+#include "dense.h"           /* definition of type DenseMat and macro      */
+                             /* DENSE_ELEM                                 */
+
+/* User-defined vector and matrix accessor macros: Ith, IJth */
+
+/* These macros are defined in order to write code which exactly matches
+   the mathematical problem description given above.
+
+   Ith(v,i) references the ith component of the vector v, where i is in
+   the range [1..NEQ] and NEQ is defined below. The Ith macro is defined
+   using the N_VIth macro in nvector.h. N_VIth numbers the components of
+   a vector starting from 0.
+
+   IJth(A,i,j) references the (i,j)th element of the dense matrix A, where
+   i and j are in the range [1..NEQ]. The IJth macro is defined using the
+   DENSE_ELEM macro in dense.h. DENSE_ELEM numbers rows and columns of a
+   dense matrix starting from 0. */
+
+#define Ith(v,i)    NV_Ith_S(v,i-1)       /* Ith numbers components 1..NEQ */
+#define IJth(A,i,j) DENSE_ELEM(A,i-1,j-1) /* IJth numbers rows,cols 1..NEQ */
+
+
+/* Problem Constants */
+
+#define NEQ   3                /* number of equations  */
+#define Y1    RCONST(1.0)      /* initial y components */
+#define Y2    RCONST(0.0)
+#define Y3    RCONST(0.0)
+#define RTOL  RCONST(1.0e-4)   /* scalar relative tolerance            */
+#define ATOL1 RCONST(1.0e-8)   /* vector absolute tolerance components */
+#define ATOL2 RCONST(1.0e-14)
+#define ATOL3 RCONST(1.0e-6)
+#define T0    RCONST(0.0)      /* initial time           */
+#define T1    RCONST(0.4)      /* first output time      */
+#define TMULT RCONST(10.0)     /* output time factor     */
+#define NOUT  12               /* number of output times */
+
+
+/* Functions Called by the Solver */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+
+static void g(realtype t, N_Vector y, realtype *gout, void *g_data);
+
+static void Jac(long int N, DenseMat J, realtype t,
+                N_Vector y, N_Vector fy, void *jac_data,
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/* Private functions to output results */
+
+static void PrintOutput(realtype t, realtype y1, realtype y2, realtype y3);
+static void PrintRootInfo(int root_f1, int root_f2);
+
+/* Private function to print final statistics */
+
+static void PrintFinalStats(void *cvode_mem);
+
+/* Private function to check function return values */
+
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+
+/*
+ *-------------------------------
+ * Main Program
+ *-------------------------------
+ */
+
+int main()
+{
+  realtype reltol, t, tout;
+  N_Vector y, abstol;
+  void *cvode_mem;
+  int flag, flagr, iout;
+  int rootsfound[2];
+
+  y = abstol = NULL;
+  cvode_mem = NULL;
+
+  /* Create serial vector of length NEQ for I.C. and abstol */
+  y = N_VNew_Serial(NEQ);
+  if (check_flag((void *)y, "N_VNew_Serial", 0)) return(1);
+  abstol = N_VNew_Serial(NEQ); 
+  if (check_flag((void *)abstol, "N_VNew_Serial", 0)) return(1);
+
+  /* Initialize y */
+  Ith(y,1) = Y1;
+  Ith(y,2) = Y2;
+  Ith(y,3) = Y3;
+
+  /* Set the scalar relative tolerance */
+  reltol = RTOL;
+  /* Set the vector absolute tolerance */
+  Ith(abstol,1) = ATOL1;
+  Ith(abstol,2) = ATOL2;
+  Ith(abstol,3) = ATOL3;
+
+  /* 
+     Call CVodeCreate to create the solver memory:
+     
+     CV_BDF     specifies the Backward Differentiation Formula
+     CV_NEWTON  specifies a Newton iteration
+
+     A pointer to the integrator problem memory is returned and stored in cvode_mem.
+  */
+
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if (check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+  
+  /* 
+     Call CVodeMalloc to initialize the integrator memory: 
+     
+     cvode_mem is the pointer to the integrator memory returned by CVodeCreate
+     f         is the user's right hand side function in y'=f(t,y)
+     T0        is the initial time
+     y         is the initial dependent variable vector
+     CV_SV     specifies scalar relative and vector absolute tolerances
+     &reltol   is a pointer to the scalar relative tolerance
+     abstol    is the absolute tolerance vector
+  */
+
+  flag = CVodeMalloc(cvode_mem, f, T0, y, CV_SV, reltol, abstol);
+  if (check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  /* Call CVodeRootInit to specify the root function g with 2 components */
+  flag = CVodeRootInit(cvode_mem, 2, g, NULL);
+  if (check_flag(&flag, "CVodeRootInit", 1)) return(1);
+
+  /* Call CVDense to specify the CVDENSE dense linear solver */
+  flag = CVDense(cvode_mem, NEQ);
+  if (check_flag(&flag, "CVDense", 1)) return(1);
+
+  /* Set the Jacobian routine to Jac (user-supplied) */
+  flag = CVDenseSetJacFn(cvode_mem, Jac, NULL);
+  if (check_flag(&flag, "CVDenseSetJacFn", 1)) return(1);
+
+  /* In loop, call CVode, print results, and test for error.
+     Break out of loop when NOUT preset output times have been reached.  */
+  printf(" \n3-species kinetics problem\n\n");
+
+  iout = 0;  tout = T1;
+  while(1) {
+    flag = CVode(cvode_mem, tout, y, &t, CV_NORMAL);
+    PrintOutput(t, Ith(y,1), Ith(y,2), Ith(y,3));
+
+    if (flag == CV_ROOT_RETURN) {
+      flagr = CVodeGetRootInfo(cvode_mem, rootsfound);
+      check_flag(&flagr, "CVodeGetRootInfo", 1);
+      PrintRootInfo(rootsfound[0],rootsfound[1]);
+    }
+
+    if (check_flag(&flag, "CVode", 1)) break;
+    if (flag == CV_SUCCESS) {
+      iout++;
+      tout *= TMULT;
+    }
+
+    if (iout == NOUT) break;
+  }
+
+  /* Print some final statistics */
+  PrintFinalStats(cvode_mem);
+
+  /* Free y vector */
+  N_VDestroy_Serial(y);
+
+  /* Free integrator memory */
+  CVodeFree(cvode_mem);
+
+  return(0);
+}
+
+
+/*
+ *-------------------------------
+ * Functions called by the solver
+ *-------------------------------
+ */
+
+/*
+ * f routine. Compute function f(t,y). 
+ */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data)
+{
+  realtype y1, y2, y3, yd1, yd3;
+
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+
+  yd1 = Ith(ydot,1) = RCONST(-0.04)*y1 + RCONST(1.0e4)*y2*y3;
+  yd3 = Ith(ydot,3) = RCONST(3.0e7)*y2*y2;
+        Ith(ydot,2) = -yd1 - yd3;
+}
+
+/*
+ * g routine. Compute functions g_i(t,y) for i = 0,1. 
+ */
+
+static void g(realtype t, N_Vector y, realtype *gout, void *g_data)
+{
+  realtype y1, y3;
+
+  y1 = Ith(y,1); y3 = Ith(y,3);
+  gout[0] = y1 - RCONST(0.0001);
+  gout[1] = y3 - RCONST(0.01);
+}
+
+/*
+ * Jacobian routine. Compute J(t,y) = df/dy. *
+ */
+
+static void Jac(long int N, DenseMat J, realtype t,
+                N_Vector y, N_Vector fy, void *jac_data,
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  realtype y1, y2, y3;
+
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+
+  IJth(J,1,1) = RCONST(-0.04);
+  IJth(J,1,2) = RCONST(1.0e4)*y3;
+  IJth(J,1,3) = RCONST(1.0e4)*y2;
+  IJth(J,2,1) = RCONST(0.04); 
+  IJth(J,2,2) = RCONST(-1.0e4)*y3-RCONST(6.0e7)*y2;
+  IJth(J,2,3) = RCONST(-1.0e4)*y2;
+  IJth(J,3,2) = RCONST(6.0e7)*y2;
+}
+
+/*
+ *-------------------------------
+ * Private helper functions
+ *-------------------------------
+ */
+
+static void PrintOutput(realtype t, realtype y1, realtype y2, realtype y3)
+{
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("At t = %0.4Le      y =%14.6Le  %14.6Le  %14.6Le\n", t, y1, y2, y3);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("At t = %0.4le      y =%14.6le  %14.6le  %14.6le\n", t, y1, y2, y3);
+#else
+  printf("At t = %0.4e      y =%14.6e  %14.6e  %14.6e\n", t, y1, y2, y3);
+#endif
+
+  return;
+}
+
+static void PrintRootInfo(int root_f1, int root_f2)
+{
+  printf("    rootsfound[] = %3d %3d\n", root_f1, root_f2);
+
+  return;
+}
+
+/* 
+ * Get and print some final statistics
+ */
+
+static void PrintFinalStats(void *cvode_mem)
+{
+  long int nst, nfe, nsetups, njeD, nfeD, nni, ncfn, netf, nge;
+  int flag;
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  flag = CVDenseGetNumJacEvals(cvode_mem, &njeD);
+  check_flag(&flag, "CVDenseGetNumJacEvals", 1);
+  flag = CVDenseGetNumRhsEvals(cvode_mem, &nfeD);
+  check_flag(&flag, "CVDenseGetNumRhsEvals", 1);
+
+  flag = CVodeGetNumGEvals(cvode_mem, &nge);
+  check_flag(&flag, "CVodeGetNumGEvals", 1);
+
+  printf("\nFinal Statistics:\n");
+  printf("nst = %-6ld nfe  = %-6ld nsetups = %-6ld nfeD = %-6ld njeD = %ld\n",
+	 nst, nfe, nsetups, nfeD, njeD);
+  printf("nni = %-6ld ncfn = %-6ld netf = %-6ld nge = %ld\n \n",
+	 nni, ncfn, netf, nge);
+}
+
+/*
+ * Check function return value...
+ *   opt == 0 means SUNDIALS function allocates memory so check if
+ *            returned NULL pointer
+ *   opt == 1 means SUNDIALS function returns a flag so check if
+ *            flag >= 0
+ *   opt == 2 means function allocates memory so check if returned
+ *            NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+	      funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdx.out b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdx.out
new file mode 100644
index 0000000..f88383d
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdx.out
@@ -0,0 +1,24 @@
+ 
+3-species kinetics problem
+
+At t = 2.6391e-01      y =  9.899653e-01    3.470564e-05    1.000000e-02
+    rootsfound[] =   0   1
+At t = 4.0000e-01      y =  9.851641e-01    3.386242e-05    1.480205e-02
+At t = 4.0000e+00      y =  9.055097e-01    2.240338e-05    9.446793e-02
+At t = 4.0000e+01      y =  7.157952e-01    9.183486e-06    2.841956e-01
+At t = 4.0000e+02      y =  4.505420e-01    3.222963e-06    5.494548e-01
+At t = 4.0000e+03      y =  1.831878e-01    8.941319e-07    8.168113e-01
+At t = 4.0000e+04      y =  3.897868e-02    1.621567e-07    9.610212e-01
+At t = 4.0000e+05      y =  4.940023e-03    1.985716e-08    9.950600e-01
+At t = 4.0000e+06      y =  5.165107e-04    2.067097e-09    9.994835e-01
+At t = 2.0807e+07      y =  1.000000e-04    4.000395e-10    9.999000e-01
+    rootsfound[] =   1   0
+At t = 4.0000e+07      y =  5.201457e-05    2.080690e-10    9.999480e-01
+At t = 4.0000e+08      y =  5.207182e-06    2.082883e-11    9.999948e-01
+At t = 4.0000e+09      y =  5.105811e-07    2.042325e-12    9.999995e-01
+At t = 4.0000e+10      y =  4.511312e-08    1.804525e-13    1.000000e-00
+
+Final Statistics:
+nst = 515    nfe  = 754    nsetups = 110    nfeD = 0      njeD = 12
+nni = 751    ncfn = 0      netf = 26     nge = 543
+ 
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdxe.c b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdxe.c
new file mode 100644
index 0000000..7813ded
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdxe.c
@@ -0,0 +1,392 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:34:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Example problem:
+ * 
+ * The following is a simple example problem, with the coding
+ * needed for its solution by CVODES. The problem is from
+ * chemical kinetics, and consists of the following three rate
+ * equations:         
+ *    dy1/dt = -.04*y1 + 1.e4*y2*y3
+ *    dy2/dt = .04*y1 - 1.e4*y2*y3 - 3.e7*(y2)^2
+ *    dy3/dt = 3.e7*(y2)^2
+ * on the interval from t = 0.0 to t = 4.e10, with initial
+ * conditions: y1 = 1.0, y2 = y3 = 0. The problem is stiff.
+ * While integrating the system, we also use the rootfinding
+ * feature to find the points at which y1 = 1e-4 or at which
+ * y3 = 0.01. This program solves the problem with the BDF method,
+ * Newton iteration with the CVDENSE dense linear solver, and a
+ * user-supplied Jacobian routine.
+ * It uses a user-supplied function to compute the error weights
+ * required for the WRMS norm calculations.
+ * Output is printed in decades from t = .4 to t = 4.e10.
+ * Run statistics (optional outputs) are printed at the end.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+
+/* Header files with a description of contents used in cvdx.c */
+
+#include "sundialstypes.h"   /* definition of type realtype                */
+#include "cvodes.h"          /* prototypes for CVode* functions and        */
+                             /* constants CV_BDF, CV_NEWTON, CV_SV,        */
+                             /* CV_NORMAL, CV_SUCCESS, and CV_ROOT_RETURN  */
+#include "cvdense.h"         /* prototype for CVDense                      */
+#include "nvector_serial.h"  /* definitions of type N_Vector, macro        */
+                             /* NV_Ith_S, and prototypes for N_VNew_Serial */
+                             /* and N_VDestroy                             */
+#include "dense.h"           /* definition of type DenseMat and macro      */
+                             /* DENSE_ELEM                                 */
+#include "sundialsmath.h"    /* definition of ABS                          */
+
+/* User-defined vector and matrix accessor macros: Ith, IJth */
+
+/* These macros are defined in order to write code which exactly matches
+   the mathematical problem description given above.
+
+   Ith(v,i) references the ith component of the vector v, where i is in
+   the range [1..NEQ] and NEQ is defined below. The Ith macro is defined
+   using the N_VIth macro in nvector.h. N_VIth numbers the components of
+   a vector starting from 0.
+
+   IJth(A,i,j) references the (i,j)th element of the dense matrix A, where
+   i and j are in the range [1..NEQ]. The IJth macro is defined using the
+   DENSE_ELEM macro in dense.h. DENSE_ELEM numbers rows and columns of a
+   dense matrix starting from 0. */
+
+#define Ith(v,i)    NV_Ith_S(v,i-1)       /* Ith numbers components 1..NEQ */
+#define IJth(A,i,j) DENSE_ELEM(A,i-1,j-1) /* IJth numbers rows,cols 1..NEQ */
+
+
+/* Problem Constants */
+
+#define NEQ   3                /* number of equations  */
+#define Y1    RCONST(1.0)      /* initial y components */
+#define Y2    RCONST(0.0)
+#define Y3    RCONST(0.0)
+#define RTOL  RCONST(1.0e-4)   /* scalar relative tolerance            */
+#define ATOL1 RCONST(1.0e-8)   /* vector absolute tolerance components */
+#define ATOL2 RCONST(1.0e-14)
+#define ATOL3 RCONST(1.0e-6)
+#define T0    RCONST(0.0)      /* initial time           */
+#define T1    RCONST(0.4)      /* first output time      */
+#define TMULT RCONST(10.0)     /* output time factor     */
+#define NOUT  12               /* number of output times */
+
+
+/* Functions Called by the Solver */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+
+static void g(realtype t, N_Vector y, realtype *gout, void *g_data);
+
+static void Jac(long int N, DenseMat J, realtype t,
+                N_Vector y, N_Vector fy, void *jac_data,
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+static int ewt(N_Vector y, N_Vector w, void *e_data);
+
+/* Private functions to output results */
+
+static void PrintOutput(realtype t, realtype y1, realtype y2, realtype y3);
+static void PrintRootInfo(int root_f1, int root_f2);
+
+/* Private function to print final statistics */
+
+static void PrintFinalStats(void *cvode_mem);
+
+/* Private function to check function return values */
+
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+
+/*
+ *-------------------------------
+ * Main Program
+ *-------------------------------
+ */
+
+int main()
+{
+  realtype t, tout;
+  N_Vector y;
+  void *cvode_mem;
+  int flag, flagr, iout;
+  int rootsfound[2];
+
+  y = NULL;
+  cvode_mem = NULL;
+
+  /* Create serial vector of length NEQ for I.C. */
+  y = N_VNew_Serial(NEQ);
+  if (check_flag((void *)y, "N_VNew_Serial", 0)) return(1);
+
+  /* Initialize y */
+  Ith(y,1) = Y1;
+  Ith(y,2) = Y2;
+  Ith(y,3) = Y3;
+
+  /* 
+     Call CVodeCreate to create the solver memory:
+     
+     CV_BDF     specifies the Backward Differentiation Formula
+     CV_NEWTON  specifies a Newton iteration
+
+     A pointer to the integrator problem memory is returned and stored in cvode_mem.
+  */
+
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if (check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+  
+  /* 
+     Call CVodeMalloc to initialize the integrator memory: 
+     
+     cvode_mem is the pointer to the integrator memory returned by CVodeCreate
+     f         is the user's right hand side function in y'=f(t,y)
+     T0        is the initial time
+     y         is the initial dependent variable vector
+     CV_WF     specifies scalar relative and vector absolute tolerances
+     reltol    not needed (pass 0.0)
+     abstol    not needed (pass NULL)
+  */
+
+  flag = CVodeMalloc(cvode_mem, f, T0, y, CV_WF, 0.0, NULL);
+  if (check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  /* Use private function to compute error weights */
+  flag = CVodeSetEwtFn(cvode_mem, ewt, NULL);
+  if (check_flag(&flag, "CVodeSetEwtFn", 1)) return(1);
+
+  /* Call CVodeRootInit to specify the root function g with 2 components */
+  flag = CVodeRootInit(cvode_mem, 2, g, NULL);
+  if (check_flag(&flag, "CVodeRootInit", 1)) return(1);
+
+  /* Call CVDense to specify the CVDENSE dense linear solver */
+  flag = CVDense(cvode_mem, NEQ);
+  if (check_flag(&flag, "CVDense", 1)) return(1);
+
+  /* Set the Jacobian routine to Jac (user-supplied) */
+  flag = CVDenseSetJacFn(cvode_mem, Jac, NULL);
+  if (check_flag(&flag, "CVDenseSetJacFn", 1)) return(1);
+
+  /* In loop, call CVode, print results, and test for error.
+     Break out of loop when NOUT preset output times have been reached.  */
+  printf(" \n3-species kinetics problem\n\n");
+
+  iout = 0;  tout = T1;
+  while(1) {
+    flag = CVode(cvode_mem, tout, y, &t, CV_NORMAL);
+    PrintOutput(t, Ith(y,1), Ith(y,2), Ith(y,3));
+
+    if (flag == CV_ROOT_RETURN) {
+      flagr = CVodeGetRootInfo(cvode_mem, rootsfound);
+      check_flag(&flagr, "CVodeGetRootInfo", 1);
+      PrintRootInfo(rootsfound[0],rootsfound[1]);
+    }
+
+    if (check_flag(&flag, "CVode", 1)) break;
+    if (flag == CV_SUCCESS) {
+      iout++;
+      tout *= TMULT;
+    }
+
+    if (iout == NOUT) break;
+  }
+
+  /* Print some final statistics */
+  PrintFinalStats(cvode_mem);
+
+  /* Free y vector */
+  N_VDestroy_Serial(y);
+
+  /* Free integrator memory */
+  CVodeFree(cvode_mem);
+
+  return(0);
+}
+
+
+/*
+ *-------------------------------
+ * Functions called by the solver
+ *-------------------------------
+ */
+
+/*
+ * f routine. Compute function f(t,y). 
+ */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data)
+{
+  realtype y1, y2, y3, yd1, yd3;
+
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+
+  yd1 = Ith(ydot,1) = RCONST(-0.04)*y1 + RCONST(1.0e4)*y2*y3;
+  yd3 = Ith(ydot,3) = RCONST(3.0e7)*y2*y2;
+        Ith(ydot,2) = -yd1 - yd3;
+}
+
+/*
+ * g routine. Compute functions g_i(t,y) for i = 0,1. 
+ */
+
+static void g(realtype t, N_Vector y, realtype *gout, void *g_data)
+{
+  realtype y1, y3;
+
+  y1 = Ith(y,1); y3 = Ith(y,3);
+  gout[0] = y1 - RCONST(0.0001);
+  gout[1] = y3 - RCONST(0.01);
+}
+
+/*
+ * Jacobian routine. Compute J(t,y) = df/dy. *
+ */
+
+static void Jac(long int N, DenseMat J, realtype t,
+                N_Vector y, N_Vector fy, void *jac_data,
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  realtype y1, y2, y3;
+
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+
+  IJth(J,1,1) = RCONST(-0.04);
+  IJth(J,1,2) = RCONST(1.0e4)*y3;
+  IJth(J,1,3) = RCONST(1.0e4)*y2;
+  IJth(J,2,1) = RCONST(0.04); 
+  IJth(J,2,2) = RCONST(-1.0e4)*y3-RCONST(6.0e7)*y2;
+  IJth(J,2,3) = RCONST(-1.0e4)*y2;
+  IJth(J,3,2) = RCONST(6.0e7)*y2;
+}
+
+/*
+ * EwtSet function. Computes the error weights at the current solution.
+ */
+
+static int ewt(N_Vector y, N_Vector w, void *e_data)
+{
+  int i;
+  realtype yy, ww, rtol, atol[3];
+
+  rtol    = RTOL;
+  atol[0] = ATOL1;
+  atol[1] = ATOL2;
+  atol[2] = ATOL3;
+
+  for (i=1; i<=3; i++) {
+    yy = Ith(y,i);
+    ww = rtol * ABS(yy) + atol[i-1];  
+    if (ww <= 0.0) return (-1);
+    Ith(w,i) = 1.0/ww;
+  }
+
+  return(0);
+}
+
+/*
+ *-------------------------------
+ * Private helper functions
+ *-------------------------------
+ */
+
+static void PrintOutput(realtype t, realtype y1, realtype y2, realtype y3)
+{
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("At t = %0.4Le      y =%14.6Le  %14.6Le  %14.6Le\n", t, y1, y2, y3);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("At t = %0.4le      y =%14.6le  %14.6le  %14.6le\n", t, y1, y2, y3);
+#else
+  printf("At t = %0.4e      y =%14.6e  %14.6e  %14.6e\n", t, y1, y2, y3);
+#endif
+
+  return;
+}
+
+static void PrintRootInfo(int root_f1, int root_f2)
+{
+  printf("    rootsfound[] = %3d %3d\n", root_f1, root_f2);
+
+  return;
+}
+
+/* 
+ * Get and print some final statistics
+ */
+
+static void PrintFinalStats(void *cvode_mem)
+{
+  long int nst, nfe, nsetups, njeD, nfeD, nni, ncfn, netf, nge;
+  int flag;
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  flag = CVDenseGetNumJacEvals(cvode_mem, &njeD);
+  check_flag(&flag, "CVDenseGetNumJacEvals", 1);
+  flag = CVDenseGetNumRhsEvals(cvode_mem, &nfeD);
+  check_flag(&flag, "CVDenseGetNumRhsEvals", 1);
+
+  flag = CVodeGetNumGEvals(cvode_mem, &nge);
+  check_flag(&flag, "CVodeGetNumGEvals", 1);
+
+  printf("\nFinal Statistics:\n");
+  printf("nst = %-6ld nfe  = %-6ld nsetups = %-6ld nfeD = %-6ld njeD = %ld\n",
+	 nst, nfe, nsetups, nfeD, njeD);
+  printf("nni = %-6ld ncfn = %-6ld netf = %-6ld nge = %ld\n \n",
+	 nni, ncfn, netf, nge);
+}
+
+/*
+ * Check function return value...
+ *   opt == 0 means SUNDIALS function allocates memory so check if
+ *            returned NULL pointer
+ *   opt == 1 means SUNDIALS function returns a flag so check if
+ *            flag >= 0
+ *   opt == 2 means function allocates memory so check if returned
+ *            NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+	      funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdxe.out b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdxe.out
new file mode 100644
index 0000000..f88383d
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvdxe.out
@@ -0,0 +1,24 @@
+ 
+3-species kinetics problem
+
+At t = 2.6391e-01      y =  9.899653e-01    3.470564e-05    1.000000e-02
+    rootsfound[] =   0   1
+At t = 4.0000e-01      y =  9.851641e-01    3.386242e-05    1.480205e-02
+At t = 4.0000e+00      y =  9.055097e-01    2.240338e-05    9.446793e-02
+At t = 4.0000e+01      y =  7.157952e-01    9.183486e-06    2.841956e-01
+At t = 4.0000e+02      y =  4.505420e-01    3.222963e-06    5.494548e-01
+At t = 4.0000e+03      y =  1.831878e-01    8.941319e-07    8.168113e-01
+At t = 4.0000e+04      y =  3.897868e-02    1.621567e-07    9.610212e-01
+At t = 4.0000e+05      y =  4.940023e-03    1.985716e-08    9.950600e-01
+At t = 4.0000e+06      y =  5.165107e-04    2.067097e-09    9.994835e-01
+At t = 2.0807e+07      y =  1.000000e-04    4.000395e-10    9.999000e-01
+    rootsfound[] =   1   0
+At t = 4.0000e+07      y =  5.201457e-05    2.080690e-10    9.999480e-01
+At t = 4.0000e+08      y =  5.207182e-06    2.082883e-11    9.999948e-01
+At t = 4.0000e+09      y =  5.105811e-07    2.042325e-12    9.999995e-01
+At t = 4.0000e+10      y =  4.511312e-08    1.804525e-13    1.000000e-00
+
+Final Statistics:
+nst = 515    nfe  = 754    nsetups = 110    nfeD = 0      njeD = 12
+nni = 751    ncfn = 0      netf = 26     nge = 543
+ 
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfdx.c b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfdx.c
new file mode 100644
index 0000000..d9bd10b
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfdx.c
@@ -0,0 +1,618 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:34:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh, and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Example problem:
+ *
+ * The following is a simple example problem, with the coding
+ * needed for its solution by CVODES. The problem is from chemical
+ * kinetics, and consists of the following three rate equations:
+ *    dy1/dt = -p1*y1 + p2*y2*y3
+ *    dy2/dt =  p1*y1 - p2*y2*y3 - p3*(y2)^2
+ *    dy3/dt =  p3*(y2)^2
+ * on the interval from t = 0.0 to t = 4.e10, with initial
+ * conditions y1 = 1.0, y2 = y3 = 0. The reaction rates are: p1=0.04,
+ * p2=1e4, and p3=3e7. The problem is stiff.
+ * This program solves the problem with the BDF method, Newton
+ * iteration with the CVODES dense linear solver, and a
+ * user-supplied Jacobian routine.
+ * It uses a scalar relative tolerance and a vector absolute
+ * tolerance.
+ * Output is printed in decades from t = .4 to t = 4.e10.
+ * Run statistics (optional outputs) are printed at the end.
+ *
+ * Optionally, CVODES can compute sensitivities with respect to the
+ * problem parameters p1, p2, and p3.
+ * The sensitivity right hand side is given analytically through the
+ * user routine fS (of type SensRhs1Fn).
+ * Any of three sensitivity methods (SIMULTANEOUS, STAGGERED, and
+ * STAGGERED1) can be used and sensitivities may be included in the
+ * error test or not (error control set on TRUE or FALSE,
+ * respectively).
+ *
+ * Execution:
+ *
+ * If no sensitivities are desired:
+ *    % cvsdx -nosensi
+ * If sensitivities are to be computed:
+ *    % cvsdx -sensi sensi_meth err_con
+ * where sensi_meth is one of {sim, stg, stg1} and err_con is one of
+ * {t, f}.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "sundialstypes.h"   /* def. of type realtype                         */
+#include "cvodes.h"          /* prototypes for CVODES functions and constants */
+#include "cvdense.h"         /* prototype for CVDENSE functions and constants */
+#include "nvector_serial.h"  /* defs. of serial NVECTOR functions and macros  */
+#include "dense.h"           /* defs. of type DenseMat, macro DENSE_ELEM      */
+#include "sundialsmath.h"    /* definition of ABS                             */
+
+/* Accessor macros */
+
+#define Ith(v,i)    NV_Ith_S(v,i-1)       /* i-th vector component i=1..NEQ */
+#define IJth(A,i,j) DENSE_ELEM(A,i-1,j-1) /* (i,j)-th matrix component i,j=1..NEQ */
+
+/* Problem Constants */
+
+#define NEQ   3             /* number of equations  */
+#define Y1    RCONST(1.0)   /* initial y components */
+#define Y2    RCONST(0.0)
+#define Y3    RCONST(0.0)
+#define RTOL  RCONST(1e-4)  /* scalar relative tolerance */
+#define ATOL1 RCONST(1e-8)  /* vector absolute tolerance components */
+#define ATOL2 RCONST(1e-14)
+#define ATOL3 RCONST(1e-6)
+#define T0    RCONST(0.0)   /* initial time */
+#define T1    RCONST(0.4)   /* first output time */
+#define TMULT RCONST(10.0)  /* output time factor */
+#define NOUT  12            /* number of output times */
+
+#define NP    3             /* number of problem parameters */
+#define NS    3             /* number of sensitivities computed */
+
+#define ZERO  RCONST(0.0)
+
+/* Type : UserData */
+
+typedef struct {
+  realtype p[3];           /* problem parameters */
+} *UserData;
+
+/* Prototypes of functions by CVODES */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+
+static void Jac(long int N, DenseMat J, realtype t,
+                N_Vector y, N_Vector fy, void *jac_data, 
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+static void fS(int Ns, realtype t, N_Vector y, N_Vector ydot, 
+               int iS, N_Vector yS, N_Vector ySdot, 
+               void *fS_data, N_Vector tmp1, N_Vector tmp2);
+
+static int ewt(N_Vector y, N_Vector w, void *e_data);
+
+/* Prototypes of private functions */
+
+static void ProcessArgs(int argc, char *argv[],
+                        booleantype *sensi, int *sensi_meth, 
+                        booleantype *err_con);
+static void WrongArgs(char *name);
+static void PrintOutput(void *cvode_mem, realtype t, N_Vector u);
+static void PrintOutputS(N_Vector *uS);
+static void PrintFinalStats(void *cvode_mem, booleantype sensi);
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/*
+ *--------------------------------------------------------------------
+ * MAIN PROGRAM
+ *--------------------------------------------------------------------
+ */
+
+int main(int argc, char *argv[])
+{
+  void *cvode_mem;
+  UserData data;
+  realtype t, tout;
+  N_Vector y;
+  int iout, flag;
+
+  realtype pbar[NS];
+  int is; 
+  N_Vector *yS;
+  booleantype sensi, err_con;
+  int sensi_meth;
+
+  cvode_mem = NULL;
+  data      = NULL;
+  y         =  NULL;
+  yS        = NULL;
+
+  /* Process arguments */
+  ProcessArgs(argc, argv, &sensi, &sensi_meth, &err_con);
+
+  /* User data structure */
+  data = (UserData) malloc(sizeof *data);
+  if (check_flag((void *)data, "malloc", 2)) return(1);
+  data->p[0] = RCONST(0.04);
+  data->p[1] = RCONST(1.0e4);
+  data->p[2] = RCONST(3.0e7);
+
+  /* Initial conditions */
+  y = N_VNew_Serial(NEQ);
+  if (check_flag((void *)y, "N_VNew_Serial", 0)) return(1);
+
+  Ith(y,1) = Y1;
+  Ith(y,2) = Y2;
+  Ith(y,3) = Y3;
+
+  /* Create CVODES object */
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if (check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  /* Allocate space for CVODES */
+  flag = CVodeMalloc(cvode_mem, f, T0, y, CV_WF, 0.0, NULL);
+  if (check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  /* Use private function to compute error weights */
+  flag = CVodeSetEwtFn(cvode_mem, ewt, NULL);
+  if (check_flag(&flag, "CVodeSetEwtFn", 1)) return(1);
+
+  /* Attach user data */
+  flag = CVodeSetFdata(cvode_mem, data);
+  if (check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+
+  /* Attach linear solver */
+  flag = CVDense(cvode_mem, NEQ);
+  if (check_flag(&flag, "CVDense", 1)) return(1);
+
+  flag = CVDenseSetJacFn(cvode_mem, Jac, data);
+  if (check_flag(&flag, "CVDenseSetJacFn", 1)) return(1);
+
+  printf("\n3-species chemical kinetics problem\n");
+
+  /* Sensitivity-related settings */
+  if (sensi) {
+
+    pbar[0] = data->p[0];
+    pbar[1] = data->p[1];
+    pbar[2] = data->p[2];
+
+    yS = N_VNewVectorArray_Serial(NS, NEQ);
+    if (check_flag((void *)yS, "N_VNewVectorArray_Serial", 0)) return(1);
+    for (is=0;is<NS;is++) N_VConst(ZERO, yS[is]);
+
+    flag = CVodeSensMalloc(cvode_mem, NS, sensi_meth, yS);
+    if(check_flag(&flag, "CVodeSensMalloc", 1)) return(1);
+
+    flag = CVodeSetSensRhs1Fn(cvode_mem, fS);
+    if (check_flag(&flag, "CVodeSetSensRhs1Fn", 1)) return(1);
+    flag = CVodeSetSensErrCon(cvode_mem, err_con);
+    if (check_flag(&flag, "CVodeSetSensFdata", 1)) return(1);
+    flag = CVodeSetSensFdata(cvode_mem, data);
+    if (check_flag(&flag, "CVodeSetSensFdata", 1)) return(1);
+    flag = CVodeSetSensParams(cvode_mem, NULL, pbar, NULL);
+    if (check_flag(&flag, "CVodeSetSensParams", 1)) return(1);
+
+    printf("Sensitivity: YES ");
+    if(sensi_meth == CV_SIMULTANEOUS)   
+      printf("( SIMULTANEOUS +");
+    else 
+      if(sensi_meth == CV_STAGGERED) printf("( STAGGERED +");
+      else                           printf("( STAGGERED1 +");   
+    if(err_con) printf(" FULL ERROR CONTROL )");
+    else        printf(" PARTIAL ERROR CONTROL )");
+
+  } else {
+
+    printf("Sensitivity: NO ");
+
+  }
+  
+  /* In loop over output points, call CVode, print results, test for error */
+  
+  printf("\n\n");
+  printf("===================================================");
+  printf("============================\n");
+  printf("     T     Q       H      NST                    y1");
+  printf("           y2           y3    \n");
+  printf("===================================================");
+  printf("============================\n");
+
+  for (iout=1, tout=T1; iout <= NOUT; iout++, tout *= TMULT) {
+
+    flag = CVode(cvode_mem, tout, y, &t, CV_NORMAL);
+    if (check_flag(&flag, "CVode", 1)) break;
+
+    PrintOutput(cvode_mem, t, y);
+
+    if (sensi) {
+      flag = CVodeGetSens(cvode_mem, t, yS);
+      if (check_flag(&flag, "CVodeGetSens", 1)) break;
+      PrintOutputS(yS);
+    } 
+    printf("-------------------------------------------------");
+    printf("------------------------------\n");
+
+  }
+
+  /* Print final statistics */
+  PrintFinalStats(cvode_mem, sensi);
+
+  /* Free memory */
+
+  N_VDestroy_Serial(y);                    /* Free y vector */
+  if (sensi) {
+    N_VDestroyVectorArray_Serial(yS, NS);  /* Free yS vector */
+  }
+  free(data);                              /* Free user data */
+  CVodeFree(cvode_mem);                    /* Free CVODES memory */
+
+  return(0);
+}
+
+/*
+ *--------------------------------------------------------------------
+ * FUNCTIONS CALLED BY CVODES
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * f routine. Compute f(t,y). 
+ */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data)
+{
+  realtype y1, y2, y3, yd1, yd3;
+  UserData data;
+  realtype p1, p2, p3;
+
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+  data = (UserData) f_data;
+  p1 = data->p[0]; p2 = data->p[1]; p3 = data->p[2];
+
+  yd1 = Ith(ydot,1) = -p1*y1 + p2*y2*y3;
+  yd3 = Ith(ydot,3) = p3*y2*y2;
+        Ith(ydot,2) = -yd1 - yd3;
+}
+
+
+/* 
+ * Jacobian routine. Compute J(t,y). 
+ */
+
+static void Jac(long int N, DenseMat J, realtype t,
+                N_Vector y, N_Vector fy, void *jac_data, 
+                N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  realtype y1, y2, y3;
+  UserData data;
+  realtype p1, p2, p3;
+ 
+  y1 = Ith(y,1); y2 = Ith(y,2); y3 = Ith(y,3);
+  data = (UserData) jac_data;
+  p1 = data->p[0]; p2 = data->p[1]; p3 = data->p[2];
+ 
+  IJth(J,1,1) = -p1;  IJth(J,1,2) = p2*y3;          IJth(J,1,3) = p2*y2;
+  IJth(J,2,1) =  p1;  IJth(J,2,2) = -p2*y3-2*p3*y2; IJth(J,2,3) = -p2*y2;
+                      IJth(J,3,2) = 2*p3*y2;
+}
+ 
+/* 
+ * fS routine. Compute sensitivity r.h.s. 
+ */
+
+static void fS(int Ns, realtype t, N_Vector y, N_Vector ydot, 
+               int iS, N_Vector yS, N_Vector ySdot, 
+               void *fS_data, N_Vector tmp1, N_Vector tmp2)
+{
+  UserData data;
+  realtype p1, p2, p3;
+  realtype y1, y2, y3;
+  realtype s1, s2, s3;
+  realtype sd1, sd2, sd3;
+
+  data = (UserData) fS_data;
+  p1 = data->p[0]; p2 = data->p[1]; p3 = data->p[2];
+
+  y1 = Ith(y,1);  y2 = Ith(y,2);  y3 = Ith(y,3);
+  s1 = Ith(yS,1); s2 = Ith(yS,2); s3 = Ith(yS,3);
+
+  sd1 = -p1*s1 + p2*y3*s2 + p2*y2*s3;
+  sd3 = 2*p3*y2*s2;
+  sd2 = -sd1-sd3;
+
+  switch (iS) {
+  case 0:
+    sd1 += -y1;
+    sd2 +=  y1;
+    break;
+  case 1:
+    sd1 +=  y2*y3;
+    sd2 += -y2*y3;
+    break;
+  case 2:
+    sd2 += -y2*y2;
+    sd3 +=  y2*y2;
+    break;
+  }
+  
+  Ith(ySdot,1) = sd1;
+  Ith(ySdot,2) = sd2;
+  Ith(ySdot,3) = sd3;
+}
+
+/*
+ * EwtSet function. Computes the error weights at the current solution.
+ */
+
+static int ewt(N_Vector y, N_Vector w, void *e_data)
+{
+  int i;
+  realtype yy, ww, rtol, atol[3];
+
+  rtol    = RTOL;
+  atol[0] = ATOL1;
+  atol[1] = ATOL2;
+  atol[2] = ATOL3;
+
+  for (i=1; i<=3; i++) {
+    yy = Ith(y,i);
+    ww = rtol * ABS(yy) + atol[i-1];  
+    if (ww <= 0.0) return (-1);
+    Ith(w,i) = 1.0/ww;
+  }
+
+  return(0);
+}
+
+/*
+ *--------------------------------------------------------------------
+ * PRIVATE FUNCTIONS
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * Process and verify arguments to cvfdx.
+ */
+
+static void ProcessArgs(int argc, char *argv[], 
+                        booleantype *sensi, int *sensi_meth, booleantype *err_con)
+{
+  *sensi = FALSE;
+  *sensi_meth = -1;
+  *err_con = FALSE;
+
+  if (argc < 2) WrongArgs(argv[0]);
+
+  if (strcmp(argv[1],"-nosensi") == 0)
+    *sensi = FALSE;
+  else if (strcmp(argv[1],"-sensi") == 0)
+    *sensi = TRUE;
+  else
+    WrongArgs(argv[0]);
+  
+  if (*sensi) {
+
+    if (argc != 4)
+      WrongArgs(argv[0]);
+
+    if (strcmp(argv[2],"sim") == 0)
+      *sensi_meth = CV_SIMULTANEOUS;
+    else if (strcmp(argv[2],"stg") == 0)
+      *sensi_meth = CV_STAGGERED;
+    else if (strcmp(argv[2],"stg1") == 0)
+      *sensi_meth = CV_STAGGERED1;
+    else 
+      WrongArgs(argv[0]);
+
+    if (strcmp(argv[3],"t") == 0)
+      *err_con = TRUE;
+    else if (strcmp(argv[3],"f") == 0)
+      *err_con = FALSE;
+    else
+      WrongArgs(argv[0]);
+  }
+
+}
+
+static void WrongArgs(char *name)
+{
+    printf("\nUsage: %s [-nosensi] [-sensi sensi_meth err_con]\n",name);
+    printf("         sensi_meth = sim, stg, or stg1\n");
+    printf("         err_con    = t or f\n");
+    
+    exit(0);
+}
+
+/*
+ * Print current t, step count, order, stepsize, and solution.
+ */
+
+static void PrintOutput(void *cvode_mem, realtype t, N_Vector u)
+{
+  long int nst;
+  int qu, flag;
+  realtype hu, *udata;
+  
+  udata = NV_DATA_S(u);
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetLastOrder(cvode_mem, &qu);
+  check_flag(&flag, "CVodeGetLastOrder", 1);
+  flag = CVodeGetLastStep(cvode_mem, &hu);
+  check_flag(&flag, "CVodeGetLastStep", 1);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%8.3Le %2d  %8.3Le %5ld\n", t, qu, hu, nst);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%8.3le %2d  %8.3le %5ld\n", t, qu, hu, nst);
+#else
+  printf("%8.3e %2d  %8.3e %5ld\n", t, qu, hu, nst);
+#endif
+
+  printf("                          Solution       ");
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%12.4Le %12.4Le %12.4Le \n", udata[0], udata[1], udata[2]);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%12.4le %12.4le %12.4le \n", udata[0], udata[1], udata[2]);
+#else
+  printf("%12.4e %12.4e %12.4e \n", udata[0], udata[1], udata[2]);
+#endif
+
+}
+
+/* 
+ * Print sensitivities.
+*/
+
+static void PrintOutputS(N_Vector *uS)
+{
+  realtype *sdata;
+
+  sdata = NV_DATA_S(uS[0]);
+  printf("                          Sensitivity 1  ");
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%12.4Le %12.4Le %12.4Le \n", sdata[0], sdata[1], sdata[2]);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%12.4le %12.4le %12.4le \n", sdata[0], sdata[1], sdata[2]);
+#else
+  printf("%12.4e %12.4e %12.4e \n", sdata[0], sdata[1], sdata[2]);
+#endif
+  
+  sdata = NV_DATA_S(uS[1]);
+  printf("                          Sensitivity 2  ");
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%12.4Le %12.4Le %12.4Le \n", sdata[0], sdata[1], sdata[2]);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%12.4le %12.4le %12.4le \n", sdata[0], sdata[1], sdata[2]);
+#else
+  printf("%12.4e %12.4e %12.4e \n", sdata[0], sdata[1], sdata[2]);
+#endif
+
+  sdata = NV_DATA_S(uS[2]);
+  printf("                          Sensitivity 3  ");
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%12.4Le %12.4Le %12.4Le \n", sdata[0], sdata[1], sdata[2]);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%12.4le %12.4le %12.4le \n", sdata[0], sdata[1], sdata[2]);
+#else
+  printf("%12.4e %12.4e %12.4e \n", sdata[0], sdata[1], sdata[2]);
+#endif
+}
+
+/* 
+ * Print some final statistics from the CVODES memory.
+ */
+
+static void PrintFinalStats(void *cvode_mem, booleantype sensi)
+{
+  long int nst;
+  long int nfe, nsetups, nni, ncfn, netf;
+  long int nfSe, nfeS, nsetupsS, nniS, ncfnS, netfS;
+  long int njeD, nfeD;
+  int flag;
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  if (sensi) {
+    flag = CVodeGetNumSensRhsEvals(cvode_mem, &nfSe);
+    check_flag(&flag, "CVodeGetNumSensRhsEvals", 1);
+    flag = CVodeGetNumRhsEvalsSens(cvode_mem, &nfeS);
+    check_flag(&flag, "CVodeGetNumRhsEvalsSens", 1);
+    flag = CVodeGetNumSensLinSolvSetups(cvode_mem, &nsetupsS);
+    check_flag(&flag, "CVodeGetNumSensLinSolvSetups", 1);
+    flag = CVodeGetNumSensErrTestFails(cvode_mem, &netfS);
+    check_flag(&flag, "CVodeGetNumSensErrTestFails", 1);
+    flag = CVodeGetNumSensNonlinSolvIters(cvode_mem, &nniS);
+    check_flag(&flag, "CVodeGetNumSensNonlinSolvIters", 1);
+    flag = CVodeGetNumSensNonlinSolvConvFails(cvode_mem, &ncfnS);
+    check_flag(&flag, "CVodeGetNumSensNonlinSolvConvFails", 1);
+  }
+
+  flag = CVDenseGetNumJacEvals(cvode_mem, &njeD);
+  check_flag(&flag, "CVDenseGetNumJacEvals", 1);
+  flag = CVDenseGetNumRhsEvals(cvode_mem, &nfeD);
+  check_flag(&flag, "CVDenseGetNumRhsEvals", 1);
+
+  printf("\nFinal Statistics\n\n");
+  printf("nst     = %5ld\n\n", nst);
+  printf("nfe     = %5ld\n",   nfe);
+  printf("netf    = %5ld    nsetups  = %5ld\n", netf, nsetups);
+  printf("nni     = %5ld    ncfn     = %5ld\n", nni, ncfn);
+
+  if(sensi) {
+    printf("\n");
+    printf("nfSe    = %5ld    nfeS     = %5ld\n", nfSe, nfeS);
+    printf("netfs   = %5ld    nsetupsS = %5ld\n", netfS, nsetupsS);
+    printf("nniS    = %5ld    ncfnS    = %5ld\n", nniS, ncfnS);
+  }
+
+  printf("\n");
+  printf("njeD    = %5ld    nfeD     = %5ld\n", njeD, nfeD);
+
+}
+
+/* 
+ * Check function return value.
+ *    opt == 0 means SUNDIALS function allocates memory so check if
+ *             returned NULL pointer
+ *    opt == 1 means SUNDIALS function returns a flag so check if
+ *             flag >= 0
+ *    opt == 2 means function allocates memory so check if returned
+ *             NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, 
+            "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, 
+              "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+	      funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, 
+            "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+	    funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfdx.out1 b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfdx.out1
new file mode 100644
index 0000000..0822210
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfdx.out1
@@ -0,0 +1,93 @@
+
+3-species chemical kinetics problem
+Sensitivity: YES ( SIMULTANEOUS + FULL ERROR CONTROL )
+
+===============================================================================
+     T     Q       H      NST                    y1           y2           y3    
+===============================================================================
+4.000e-01  3  4.881e-02   115
+                          Solution         9.8517e-01   3.3864e-05   1.4794e-02 
+                          Sensitivity 1   -3.5595e-01   3.9025e-04   3.5556e-01 
+                          Sensitivity 2    9.5431e-08  -2.1309e-10  -9.5218e-08 
+                          Sensitivity 3   -1.5833e-11  -5.2900e-13   1.6362e-11 
+-------------------------------------------------------------------------------
+4.000e+00  5  2.363e-01   138
+                          Solution         9.0552e-01   2.2405e-05   9.4459e-02 
+                          Sensitivity 1   -1.8761e+00   1.7922e-04   1.8759e+00 
+                          Sensitivity 2    2.9614e-06  -5.8305e-10  -2.9608e-06 
+                          Sensitivity 3   -4.9334e-10  -2.7626e-13   4.9362e-10 
+-------------------------------------------------------------------------------
+4.000e+01  3  1.485e+00   219
+                          Solution         7.1583e-01   9.1856e-06   2.8416e-01 
+                          Sensitivity 1   -4.2475e+00   4.5913e-05   4.2475e+00 
+                          Sensitivity 2    1.3731e-05  -2.3573e-10  -1.3730e-05 
+                          Sensitivity 3   -2.2883e-09  -1.1380e-13   2.2884e-09 
+-------------------------------------------------------------------------------
+4.000e+02  3  8.882e+00   331
+                          Solution         4.5052e-01   3.2229e-06   5.4947e-01 
+                          Sensitivity 1   -5.9584e+00   3.5431e-06   5.9584e+00 
+                          Sensitivity 2    2.2738e-05  -2.2605e-11  -2.2738e-05 
+                          Sensitivity 3   -3.7896e-09  -4.9948e-14   3.7897e-09 
+-------------------------------------------------------------------------------
+4.000e+03  2  1.090e+02   486
+                          Solution         1.8317e-01   8.9403e-07   8.1683e-01 
+                          Sensitivity 1   -4.7500e+00  -5.9957e-06   4.7500e+00 
+                          Sensitivity 2    1.8809e-05   2.3136e-11  -1.8809e-05 
+                          Sensitivity 3   -3.1348e-09  -1.8757e-14   3.1348e-09 
+-------------------------------------------------------------------------------
+4.000e+04  3  1.178e+03   588
+                          Solution         3.8977e-02   1.6215e-07   9.6102e-01 
+                          Sensitivity 1   -1.5748e+00  -2.7620e-06   1.5748e+00 
+                          Sensitivity 2    6.2869e-06   1.1002e-11  -6.2869e-06 
+                          Sensitivity 3   -1.0478e-09  -4.5362e-15   1.0478e-09 
+-------------------------------------------------------------------------------
+4.000e+05  3  1.514e+04   645
+                          Solution         4.9387e-03   1.9852e-08   9.9506e-01 
+                          Sensitivity 1   -2.3639e-01  -4.5861e-07   2.3639e-01 
+                          Sensitivity 2    9.4525e-07   1.8334e-12  -9.4525e-07 
+                          Sensitivity 3   -1.5751e-10  -6.3629e-16   1.5751e-10 
+-------------------------------------------------------------------------------
+4.000e+06  4  2.323e+05   696
+                          Solution         5.1684e-04   2.0684e-09   9.9948e-01 
+                          Sensitivity 1   -2.5667e-02  -5.1064e-08   2.5667e-02 
+                          Sensitivity 2    1.0266e-07   2.0424e-13  -1.0266e-07 
+                          Sensitivity 3   -1.7111e-11  -6.8513e-17   1.7111e-11 
+-------------------------------------------------------------------------------
+4.000e+07  4  1.776e+06   753
+                          Solution         5.2039e-05   2.0817e-10   9.9995e-01 
+                          Sensitivity 1   -2.5991e-03  -5.1931e-09   2.5991e-03 
+                          Sensitivity 2    1.0396e-08   2.0772e-14  -1.0397e-08 
+                          Sensitivity 3   -1.7330e-12  -6.9328e-18   1.7330e-12 
+-------------------------------------------------------------------------------
+4.000e+08  4  2.766e+07   802
+                          Solution         5.2106e-06   2.0842e-11   9.9999e-01 
+                          Sensitivity 1   -2.6063e-04  -5.2149e-10   2.6063e-04 
+                          Sensitivity 2    1.0425e-09   2.0859e-15  -1.0425e-09 
+                          Sensitivity 3   -1.7366e-13  -6.9467e-19   1.7367e-13 
+-------------------------------------------------------------------------------
+4.000e+09  2  4.183e+08   836
+                          Solution         5.1881e-07   2.0752e-12   1.0000e-00 
+                          Sensitivity 1   -2.5907e-05  -5.1717e-11   2.5907e-05 
+                          Sensitivity 2    1.0363e-10   2.0687e-16  -1.0363e-10 
+                          Sensitivity 3   -1.7293e-14  -6.9174e-20   1.7293e-14 
+-------------------------------------------------------------------------------
+4.000e+10  2  3.799e+09   859
+                          Solution         6.5181e-08   2.6072e-13   1.0000e-00 
+                          Sensitivity 1   -2.4884e-06  -3.3032e-12   2.4884e-06 
+                          Sensitivity 2    9.9534e-12   1.3213e-17  -9.9534e-12 
+                          Sensitivity 3   -2.1727e-15  -8.6908e-21   2.1727e-15 
+-------------------------------------------------------------------------------
+
+Final Statistics
+
+nst     =   859
+
+nfe     =  1221
+netf    =    29    nsetups  =   142
+nni     =  1218    ncfn     =     4
+
+nfSe    =  3663    nfeS     =     0
+netfs   =     0    nsetupsS =     0
+nniS    =     0    ncfnS    =     0
+
+njeD    =    24    nfeD     =     0
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfdx.out2 b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfdx.out2
new file mode 100644
index 0000000..e37a27b
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfdx.out2
@@ -0,0 +1,93 @@
+
+3-species chemical kinetics problem
+Sensitivity: YES ( STAGGERED + PARTIAL ERROR CONTROL )
+
+===============================================================================
+     T     Q       H      NST                    y1           y2           y3    
+===============================================================================
+4.000e-01  3  1.205e-01    59
+                          Solution         9.8517e-01   3.3863e-05   1.4797e-02 
+                          Sensitivity 1   -3.5611e-01   3.9023e-04   3.5572e-01 
+                          Sensitivity 2    9.4831e-08  -2.1325e-10  -9.4618e-08 
+                          Sensitivity 3   -1.5733e-11  -5.2897e-13   1.6262e-11 
+-------------------------------------------------------------------------------
+4.000e+00  4  5.316e-01    74
+                          Solution         9.0552e-01   2.2404e-05   9.4461e-02 
+                          Sensitivity 1   -1.8761e+00   1.7922e-04   1.8760e+00 
+                          Sensitivity 2    2.9612e-06  -5.8308e-10  -2.9606e-06 
+                          Sensitivity 3   -4.9330e-10  -2.7624e-13   4.9357e-10 
+-------------------------------------------------------------------------------
+4.000e+01  3  1.445e+00   116
+                          Solution         7.1584e-01   9.1854e-06   2.8415e-01 
+                          Sensitivity 1   -4.2474e+00   4.5928e-05   4.2473e+00 
+                          Sensitivity 2    1.3730e-05  -2.3573e-10  -1.3729e-05 
+                          Sensitivity 3   -2.2883e-09  -1.1380e-13   2.2884e-09 
+-------------------------------------------------------------------------------
+4.000e+02  3  1.605e+01   164
+                          Solution         4.5054e-01   3.2228e-06   5.4946e-01 
+                          Sensitivity 1   -5.9582e+00   3.5498e-06   5.9582e+00 
+                          Sensitivity 2    2.2737e-05  -2.2593e-11  -2.2737e-05 
+                          Sensitivity 3   -3.7895e-09  -4.9947e-14   3.7896e-09 
+-------------------------------------------------------------------------------
+4.000e+03  3  1.474e+02   227
+                          Solution         1.8321e-01   8.9422e-07   8.1679e-01 
+                          Sensitivity 1   -4.7501e+00  -5.9934e-06   4.7501e+00 
+                          Sensitivity 2    1.8809e-05   2.3126e-11  -1.8809e-05 
+                          Sensitivity 3   -3.1348e-09  -1.8759e-14   3.1348e-09 
+-------------------------------------------------------------------------------
+4.000e+04  3  2.331e+03   307
+                          Solution         3.8978e-02   1.6215e-07   9.6102e-01 
+                          Sensitivity 1   -1.5749e+00  -2.7623e-06   1.5749e+00 
+                          Sensitivity 2    6.2868e-06   1.1001e-11  -6.2868e-06 
+                          Sensitivity 3   -1.0479e-09  -4.5364e-15   1.0479e-09 
+-------------------------------------------------------------------------------
+4.000e+05  3  2.342e+04   349
+                          Solution         4.9410e-03   1.9861e-08   9.9506e-01 
+                          Sensitivity 1   -2.3638e-01  -4.5834e-07   2.3638e-01 
+                          Sensitivity 2    9.4515e-07   1.8319e-12  -9.4515e-07 
+                          Sensitivity 3   -1.5757e-10  -6.3653e-16   1.5757e-10 
+-------------------------------------------------------------------------------
+4.000e+06  4  1.723e+05   391
+                          Solution         5.1690e-04   2.0686e-09   9.9948e-01 
+                          Sensitivity 1   -2.5662e-02  -5.1036e-08   2.5662e-02 
+                          Sensitivity 2    1.0264e-07   2.0412e-13  -1.0264e-07 
+                          Sensitivity 3   -1.7110e-11  -6.8509e-17   1.7110e-11 
+-------------------------------------------------------------------------------
+4.000e+07  4  4.952e+06   439
+                          Solution         5.1984e-05   2.0795e-10   9.9995e-01 
+                          Sensitivity 1   -2.5970e-03  -5.1903e-09   2.5970e-03 
+                          Sensitivity 2    1.0388e-08   2.0761e-14  -1.0388e-08 
+                          Sensitivity 3   -1.7312e-12  -6.9256e-18   1.7312e-12 
+-------------------------------------------------------------------------------
+4.000e+08  3  2.444e+07   491
+                          Solution         5.2121e-06   2.0849e-11   9.9999e-01 
+                          Sensitivity 1   -2.6067e-04  -5.2146e-10   2.6067e-04 
+                          Sensitivity 2    1.0427e-09   2.0858e-15  -1.0427e-09 
+                          Sensitivity 3   -1.7385e-13  -6.9541e-19   1.7385e-13 
+-------------------------------------------------------------------------------
+4.000e+09  4  1.450e+08   525
+                          Solution         5.0539e-07   2.0216e-12   1.0000e-00 
+                          Sensitivity 1   -2.6111e-05  -5.3906e-11   2.6111e-05 
+                          Sensitivity 2    1.0445e-10   2.1562e-16  -1.0445e-10 
+                          Sensitivity 3   -1.7437e-14  -6.9746e-20   1.7437e-14 
+-------------------------------------------------------------------------------
+4.000e+10  5  7.934e+08   579
+                          Solution         5.9422e-08   2.3769e-13   1.0000e-00 
+                          Sensitivity 1   -2.8007e-06  -5.2605e-12   2.8007e-06 
+                          Sensitivity 2    1.1203e-11   2.1042e-17  -1.1203e-11 
+                          Sensitivity 3   -1.7491e-15  -6.9963e-21   1.7491e-15 
+-------------------------------------------------------------------------------
+
+Final Statistics
+
+nst     =   579
+
+nfe     =  1379
+netf    =    25    nsetups  =   109
+nni     =   797    ncfn     =     0
+
+nfSe    =  2829    nfeS     =     0
+netfs   =     0    nsetupsS =     3
+nniS    =   942    ncfnS    =     0
+
+njeD    =    11    nfeD     =     0
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfkx.c b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfkx.c
new file mode 100644
index 0000000..4e72b34
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfkx.c
@@ -0,0 +1,920 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:34:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen and Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Example problem:
+ *
+ * An ODE system is generated from the following 2-species diurnal
+ * kinetics advection-diffusion PDE system in 2 space dimensions:
+ *
+ * dc(i)/dt = Kh*(d/dx)^2 c(i) + V*dc(i)/dx + (d/dz)(Kv(z)*dc(i)/dz)
+ *                 + Ri(c1,c2,t)      for i = 1,2,   where
+ *   R1(c1,c2,t) = -q1*c1*c3 - q2*c1*c2 + 2*q3(t)*c3 + q4(t)*c2 ,
+ *   R2(c1,c2,t) =  q1*c1*c3 - q2*c1*c2 - q4(t)*c2 ,
+ *   Kv(z) = Kv0*exp(z/5) ,
+ * Kh, V, Kv0, q1, q2, and c3 are constants, and q3(t) and q4(t)
+ * vary diurnally. The problem is posed on the square
+ *   0 <= x <= 20,    30 <= z <= 50   (all in km),
+ * with homogeneous Neumann boundary conditions, and for time t in
+ *   0 <= t <= 86400 sec (1 day).
+ * The PDE system is treated by central differences on a uniform
+ * 10 x 10 mesh, with simple polynomial initial profiles.
+ * The problem is solved with CVODES, with the BDF/GMRES method
+ * (i.e. using the CVSPGMR linear solver) and the block-diagonal
+ * part of the Newton matrix as a left preconditioner. A copy of
+ * the block-diagonal part of the Jacobian is saved and
+ * conditionally reused within the Precond routine.
+ *
+ * Optionally, CVODES can compute sensitivities with respect to the
+ * problem parameters q1 and q2.
+ * Any of three sensitivity methods (SIMULTANEOUS, STAGGERED, and
+ * STAGGERED1) can be used and sensitivities may be included in the
+ * error test or not (error control set on FULL or PARTIAL,
+ * respectively).
+ *
+ * Execution:
+ *
+ * If no sensitivities are desired:
+ *    % cvskx -nosensi
+ * If sensitivities are to be computed:
+ *    % cvskx -sensi sensi_meth err_con
+ * where sensi_meth is one of {sim, stg, stg1} and err_con is one of
+ * {t, f}.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include "sundialstypes.h"     /* definition of realtype                          */
+#include "cvodes.h"            /* main CVODES header file                         */
+#include "iterative.h"         /* contains the enum for types of preconditioning  */
+#include "cvspgmr.h"           /* use CVSPGMR linear solver each internal step    */
+#include "smalldense.h"        /* use generic DENSE solver for preconditioning    */
+#include "nvector_serial.h"    /* definitions of type N_Vector, macro NV_DATA_S   */
+#include "sundialsmath.h"      /* contains SQR macro                              */
+
+/* Problem Constants */
+
+#define NUM_SPECIES  2                /* number of species */
+#define C1_SCALE     RCONST(1.0e6)    /* coefficients in initial profiles */
+#define C2_SCALE     RCONST(1.0e12)
+
+#define T0           RCONST(0.0)      /* initial time */
+#define NOUT         12               /* number of output times */
+#define TWOHR        RCONST(7200.0)   /* number of seconds in two hours  */
+#define HALFDAY      RCONST(4.32e4)   /* number of seconds in a half day */
+#define PI           RCONST(3.1415926535898)   /* pi */ 
+
+#define XMIN         RCONST(0.0)      /* grid boundaries in x  */
+#define XMAX         RCONST(20.0)           
+#define ZMIN         RCONST(30.0)     /* grid boundaries in z  */
+#define ZMAX         RCONST(50.0)
+#define XMID         RCONST(10.0)     /* grid midpoints in x,z */          
+#define ZMID         RCONST(40.0)
+
+#define MX           15               /* MX = number of x mesh points */
+#define MZ           15               /* MZ = number of z mesh points */
+#define NSMX         NUM_SPECIES*MX   /* NSMX = NUM_SPECIES*MX */
+#define MM           (MX*MZ)          /* MM = MX*MZ */
+
+/* CVodeMalloc Constants */
+#define RTOL         RCONST(1.0e-5)   /* scalar relative tolerance */
+#define FLOOR        RCONST(100.0)    /* value of C1 or C2 at which tolerances */
+                                      /* change from relative to absolute      */
+#define ATOL         (RTOL*FLOOR)     /* scalar absolute tolerance */
+#define NEQ          (NUM_SPECIES*MM) /* NEQ = number of equations */
+
+/* Sensitivity Constants */
+#define NP           8
+#define NS           2
+
+#define ZERO         RCONST(0.0)
+#define ONE          RCONST(1.0)
+
+/* User-defined vector and matrix accessor macros: IJKth, IJth */
+
+/* IJKth is defined in order to isolate the translation from the
+   mathematical 3-dimensional structure of the dependent variable vector
+   to the underlying 1-dimensional storage. IJth is defined in order to
+   write code which indexes into small dense matrices with a (row,column)
+   pair, where 1 <= row, column <= NUM_SPECIES.   
+   
+   IJKth(vdata,i,j,k) references the element in the vdata array for
+   species i at mesh point (j,k), where 1 <= i <= NUM_SPECIES,
+   0 <= j <= MX-1, 0 <= k <= MZ-1. The vdata array is obtained via
+   the macro call vdata = NV_DATA_S(v), where v is an N_Vector. 
+   For each mesh point (j,k), the elements for species i and i+1 are
+   contiguous within vdata.
+
+   IJth(a,i,j) references the (i,j)th entry of the small matrix realtype **a,
+   where 1 <= i,j <= NUM_SPECIES. The small matrix routines in dense.h
+   work with matrices stored by column in a 2-dimensional array. In C,
+   arrays are indexed starting at 0, not 1. */
+
+#define IJKth(vdata,i,j,k) (vdata[i-1 + (j)*NUM_SPECIES + (k)*NSMX])
+#define IJth(a,i,j)        (a[j-1][i-1])
+
+/* Type : UserData 
+   contains preconditioner blocks, pivot arrays, 
+   problem parameters, and problem constants     */
+
+typedef struct {
+  realtype *p;
+  realtype **P[MX][MZ], **Jbd[MX][MZ];
+  long int *pivot[MX][MZ];
+  realtype q4, om, dx, dz, hdco, haco, vdco;
+} *UserData;
+
+
+/* Prototypes of user-supplied functions */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+
+static int Precond(realtype tn, N_Vector y, N_Vector fy, booleantype jok,
+                   booleantype *jcurPtr, realtype gamma, void *P_data,
+                   N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3);
+
+static int PSolve(realtype tn, N_Vector y, N_Vector fy,
+                  N_Vector r, N_Vector z,
+                  realtype gamma, realtype delta,
+                  int lr, void *P_data, N_Vector vtemp);
+
+/* Prototypes of private functions */
+
+static void ProcessArgs(int argc, char *argv[],
+                        booleantype *sensi, int *sensi_meth, booleantype *err_con);
+static void WrongArgs(char *name);
+static UserData AllocUserData(void);
+static void InitUserData(UserData data);
+static void FreeUserData(UserData data);
+static void SetInitialProfiles(N_Vector y, realtype dx, realtype dz);
+static void PrintOutput(void *cvode_mem, realtype t, N_Vector y);
+static void PrintOutputS(N_Vector *uS);
+static void PrintFinalStats(void *cvode_mem, booleantype sensi);
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/*
+ *--------------------------------------------------------------------
+ * MAIN PROGRAM
+ *--------------------------------------------------------------------
+ */
+
+int main(int argc, char *argv[])
+{
+  void *cvode_mem;
+  UserData data;
+  realtype abstol, reltol, t, tout;
+  N_Vector y;
+  int iout, flag;
+
+  realtype *pbar;
+  int is, *plist;
+  N_Vector *uS;
+  booleantype sensi, err_con;
+  int sensi_meth;
+
+  pbar = NULL;
+  plist = NULL;
+  uS = NULL;
+  y = NULL;
+  data = NULL;
+  cvode_mem = NULL;
+
+  /* Process arguments */
+  ProcessArgs(argc, argv, &sensi, &sensi_meth, &err_con);
+
+  /* Problem parameters */
+  data = AllocUserData();
+  if(check_flag((void *)data, "AllocUserData", 2)) return(1);
+  InitUserData(data);
+
+  /* Initial states */
+  y = N_VNew_Serial(NEQ);
+  if(check_flag((void *)y, "N_VNew_Serial", 0)) return(1);
+  SetInitialProfiles(y, data->dx, data->dz);
+  
+  /* Tolerances */
+  abstol=ATOL; 
+  reltol=RTOL;
+
+  /* Create CVODES object */
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  flag = CVodeSetFdata(cvode_mem, data);
+  if(check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+
+  flag = CVodeSetMaxNumSteps(cvode_mem, 2000);
+  if(check_flag(&flag, "CVodeSetMaxNumSteps", 1)) return(1);
+
+  /* Allocate CVODES memory */
+  flag = CVodeMalloc(cvode_mem, f, T0, y, CV_SS, reltol, &abstol);
+  if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  /* Attach CVSPGMR linear solver */
+  flag = CVSpgmr(cvode_mem, PREC_LEFT, 0);
+  if(check_flag(&flag, "CVSpgmr", 1)) return(1);
+
+  flag = CVSpgmrSetPreconditioner(cvode_mem, Precond, PSolve, data);
+  if(check_flag(&flag, "CVSpgmrSetPreconditioner", 1)) return(1);
+
+  printf("\n2-species diurnal advection-diffusion problem\n");
+
+  /* Forward sensitivity analysis */
+  if(sensi) {
+
+    plist = (int *) malloc(NS * sizeof(int));
+    if(check_flag((void *)plist, "malloc", 2)) return(1);
+    for(is=0; is<NS; is++) plist[is] = is+1;
+
+    pbar = (realtype *) malloc(NS * sizeof(realtype));
+    if(check_flag((void *)pbar, "malloc", 2)) return(1);
+    for(is=0; is<NS; is++) pbar[is] = data->p[plist[is]-1];
+
+    uS = N_VNewVectorArray_Serial(NS, NEQ);
+    if(check_flag((void *)uS, "N_VNewVectorArray_Serial", 0)) return(1);
+    for(is=0;is<NS;is++)
+      N_VConst(ZERO,uS[is]);
+
+    flag = CVodeSensMalloc(cvode_mem, NS, sensi_meth, uS);
+    if(check_flag(&flag, "CVodeSensMalloc", 1)) return(1);
+
+    flag = CVodeSetSensErrCon(cvode_mem, err_con);
+    if(check_flag(&flag, "CVodeSetSensErrCon", 1)) return(1);
+
+    flag = CVodeSetSensRho(cvode_mem, ZERO);
+    if(check_flag(&flag, "CVodeSetSensRho", 1)) return(1);
+
+    flag = CVodeSetSensParams(cvode_mem, data->p, pbar, plist);
+    if(check_flag(&flag, "CVodeSetSensParams", 1)) return(1);
+
+    printf("Sensitivity: YES ");
+    if(sensi_meth == CV_SIMULTANEOUS)   
+      printf("( SIMULTANEOUS +");
+    else 
+      if(sensi_meth == CV_STAGGERED) printf("( STAGGERED +");
+      else                           printf("( STAGGERED1 +");   
+    if(err_con) printf(" FULL ERROR CONTROL )");
+    else        printf(" PARTIAL ERROR CONTROL )");
+    
+  } else {
+
+    printf("Sensitivity: NO ");
+
+  }
+
+  /* In loop over output points, call CVode, print results, test for error */
+
+  printf("\n\n");
+  printf("========================================================================\n");
+  printf("     T     Q       H      NST                    Bottom left  Top right \n");
+  printf("========================================================================\n");
+
+  for (iout=1, tout = TWOHR; iout <= NOUT; iout++, tout += TWOHR) {
+    flag = CVode(cvode_mem, tout, y, &t, CV_NORMAL);
+    if(check_flag(&flag, "CVode", 1)) break;
+    PrintOutput(cvode_mem, t, y);
+    if (sensi) {
+      flag = CVodeGetSens(cvode_mem, t, uS);
+      if(check_flag(&flag, "CVodeGetSens", 1)) break;
+      PrintOutputS(uS);
+    }
+    
+    printf("------------------------------------------------------------------------\n");
+
+  }
+
+  /* Print final statistics */
+  PrintFinalStats(cvode_mem, sensi);
+
+  /* Free memory */
+  N_VDestroy_Serial(y);
+  if (sensi) {
+    N_VDestroyVectorArray_Serial(uS, NS);
+    free(pbar);
+    free(plist);
+  }
+  FreeUserData(data);
+  CVodeFree(cvode_mem);
+
+  return(0);
+}
+
+/*
+ *--------------------------------------------------------------------
+ * FUNCTIONS CALLED BY CVODES
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * f routine. Compute f(t,y). 
+ */
+
+static void f(realtype t, N_Vector y, N_Vector ydot, void *f_data)
+{
+  realtype q3, c1, c2, c1dn, c2dn, c1up, c2up, c1lt, c2lt;
+  realtype c1rt, c2rt, czdn, czup, hord1, hord2, horad1, horad2;
+  realtype qq1, qq2, qq3, qq4, rkin1, rkin2, s, vertd1, vertd2, zdn, zup;
+  realtype q4coef, delz, verdco, hordco, horaco;
+  realtype *ydata, *dydata;
+  int jx, jz, idn, iup, ileft, iright;
+  UserData data;
+  realtype Q1, Q2, C3, A3, A4, KH, VEL, KV0;
+
+  data = (UserData) f_data;
+  ydata = NV_DATA_S(y);
+  dydata = NV_DATA_S(ydot);
+
+  /* Load problem coefficients and parameters */
+
+  Q1 = data->p[0];
+  Q2 = data->p[1];
+  C3 = data->p[2];
+  A3 = data->p[3];
+  A4 = data->p[4];
+  KH = data->p[5];
+  VEL = data->p[6];
+  KV0 = data->p[7];
+
+  /* Set diurnal rate coefficients. */
+
+  s = sin(data->om*t);
+  if (s > ZERO) {
+    q3 = exp(-A3/s);
+    data->q4 = exp(-A4/s);
+  } else {
+    q3 = ZERO;
+    data->q4 = ZERO;
+  }
+
+  /* Make local copies of problem variables, for efficiency. */
+
+  q4coef = data->q4;
+  delz = data->dz;
+  verdco = data->vdco;
+  hordco  = data->hdco;
+  horaco  = data->haco;
+
+  /* Loop over all grid points. */
+
+  for (jz=0; jz < MZ; jz++) {
+
+    /* Set vertical diffusion coefficients at jz +- 1/2 */
+
+    zdn = ZMIN + (jz - RCONST(0.5))*delz;
+    zup = zdn + delz;
+    czdn = verdco*exp(RCONST(0.2)*zdn);
+    czup = verdco*exp(RCONST(0.2)*zup);
+    idn = (jz == 0) ? 1 : -1;
+    iup = (jz == MZ-1) ? -1 : 1;
+    for (jx=0; jx < MX; jx++) {
+
+      /* Extract c1 and c2, and set kinetic rate terms. */
+
+      c1 = IJKth(ydata,1,jx,jz); 
+      c2 = IJKth(ydata,2,jx,jz);
+      qq1 = Q1*c1*C3;
+      qq2 = Q2*c1*c2;
+      qq3 = q3*C3;
+      qq4 = q4coef*c2;
+      rkin1 = -qq1 - qq2 + RCONST(2.0)*qq3 + qq4;
+      rkin2 = qq1 - qq2 - qq4;
+
+      /* Set vertical diffusion terms. */
+
+      c1dn = IJKth(ydata,1,jx,jz+idn);
+      c2dn = IJKth(ydata,2,jx,jz+idn);
+      c1up = IJKth(ydata,1,jx,jz+iup);
+      c2up = IJKth(ydata,2,jx,jz+iup);
+      vertd1 = czup*(c1up - c1) - czdn*(c1 - c1dn);
+      vertd2 = czup*(c2up - c2) - czdn*(c2 - c2dn);
+
+      /* Set horizontal diffusion and advection terms. */
+
+      ileft = (jx == 0) ? 1 : -1;
+      iright =(jx == MX-1) ? -1 : 1;
+      c1lt = IJKth(ydata,1,jx+ileft,jz); 
+      c2lt = IJKth(ydata,2,jx+ileft,jz);
+      c1rt = IJKth(ydata,1,jx+iright,jz);
+      c2rt = IJKth(ydata,2,jx+iright,jz);
+      hord1 = hordco*(c1rt - RCONST(2.0)*c1 + c1lt);
+      hord2 = hordco*(c2rt - RCONST(2.0)*c2 + c2lt);
+      horad1 = horaco*(c1rt - c1lt);
+      horad2 = horaco*(c2rt - c2lt);
+
+      /* Load all terms into ydot. */
+
+      IJKth(dydata, 1, jx, jz) = vertd1 + hord1 + horad1 + rkin1; 
+      IJKth(dydata, 2, jx, jz) = vertd2 + hord2 + horad2 + rkin2;
+    }
+  }
+}
+
+/*
+ * Preconditioner setup routine. Generate and preprocess P. 
+ */
+
+static int Precond(realtype tn, N_Vector y, N_Vector fy, booleantype jok,
+                   booleantype *jcurPtr, realtype gamma, void *P_data,
+                   N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3)
+{
+  realtype c1, c2, czdn, czup, diag, zdn, zup, q4coef, delz, verdco, hordco;
+  realtype **(*P)[MZ], **(*Jbd)[MZ];
+  long int *(*pivot)[MZ];
+  int ier, jx, jz;
+  realtype *ydata, **a, **j;
+  UserData data;
+  realtype Q1, Q2, C3, A3, A4, KH, VEL, KV0;
+
+  /* Make local copies of pointers in P_data, and of pointer to y's data */
+  data = (UserData) P_data;
+  P = data->P;
+  Jbd = data->Jbd;
+  pivot = data->pivot;
+  ydata = NV_DATA_S(y);
+
+  /* Load problem coefficients and parameters */
+  Q1 = data->p[0];
+  Q2 = data->p[1];
+  C3 = data->p[2];
+  A3 = data->p[3];
+  A4 = data->p[4];
+  KH = data->p[5];
+  VEL = data->p[6];
+  KV0 = data->p[7];
+
+  if (jok) {
+
+  /* jok = TRUE: Copy Jbd to P */
+
+    for (jz=0; jz < MZ; jz++)
+      for (jx=0; jx < MX; jx++)
+        dencopy(Jbd[jx][jz], P[jx][jz], NUM_SPECIES);
+
+  *jcurPtr = FALSE;
+
+  }
+
+  else {
+  /* jok = FALSE: Generate Jbd from scratch and copy to P */
+
+  /* Make local copies of problem variables, for efficiency. */
+
+  q4coef = data->q4;
+  delz = data->dz;
+  verdco = data->vdco;
+  hordco  = data->hdco;
+
+  /* Compute 2x2 diagonal Jacobian blocks (using q4 values 
+     computed on the last f call).  Load into P. */
+
+    for (jz=0; jz < MZ; jz++) {
+      zdn = ZMIN + (jz - RCONST(0.5))*delz;
+      zup = zdn + delz;
+      czdn = verdco*exp(RCONST(0.2)*zdn);
+      czup = verdco*exp(RCONST(0.2)*zup);
+      diag = -(czdn + czup + RCONST(2.0)*hordco);
+      for (jx=0; jx < MX; jx++) {
+        c1 = IJKth(ydata,1,jx,jz);
+        c2 = IJKth(ydata,2,jx,jz);
+        j = Jbd[jx][jz];
+        a = P[jx][jz];
+        IJth(j,1,1) = (-Q1*C3 - Q2*c2) + diag;
+        IJth(j,1,2) = -Q2*c1 + q4coef;
+        IJth(j,2,1) = Q1*C3 - Q2*c2;
+        IJth(j,2,2) = (-Q2*c1 - q4coef) + diag;
+        dencopy(j, a, NUM_SPECIES);
+      }
+    }
+
+  *jcurPtr = TRUE;
+
+  }
+
+  /* Scale by -gamma */
+
+    for (jz=0; jz < MZ; jz++)
+      for (jx=0; jx < MX; jx++)
+        denscale(-gamma, P[jx][jz], NUM_SPECIES);
+
+  /* Add identity matrix and do LU decompositions on blocks in place. */
+
+  for (jx=0; jx < MX; jx++) {
+    for (jz=0; jz < MZ; jz++) {
+      denaddI(P[jx][jz], NUM_SPECIES);
+      ier = gefa(P[jx][jz], NUM_SPECIES, pivot[jx][jz]);
+      if (ier != 0) return(1);
+    }
+  }
+
+  return(0);
+}
+
+/*
+ * Preconditioner solve routine 
+ */
+
+static int PSolve(realtype tn, N_Vector y, N_Vector fy,
+                  N_Vector r, N_Vector z,
+                  realtype gamma, realtype delta,
+                  int lr, void *P_data, N_Vector vtemp)
+{
+  realtype **(*P)[MZ];
+  long int *(*pivot)[MZ];
+  int jx, jz;
+  realtype *zdata, *v;
+  UserData data;
+
+  /* Extract the P and pivot arrays from P_data. */
+
+  data = (UserData) P_data;
+  P = data->P;
+  pivot = data->pivot;
+  zdata = NV_DATA_S(z);
+
+  N_VScale(ONE, r, z);
+
+  /* Solve the block-diagonal system Px = r using LU factors stored
+     in P and pivot data in pivot, and return the solution in z. */
+
+  for (jx=0; jx < MX; jx++) {
+    for (jz=0; jz < MZ; jz++) {
+      v = &(IJKth(zdata, 1, jx, jz));
+      gesl(P[jx][jz], NUM_SPECIES, pivot[jx][jz], v);
+    }
+  }
+
+  return(0);
+}
+ 
+/*
+ *--------------------------------------------------------------------
+ * PRIVATE FUNCTIONS
+ *--------------------------------------------------------------------
+ */
+
+/* 
+ * Process and verify arguments to cvfkx.
+ */
+
+static void ProcessArgs(int argc, char *argv[], 
+                        booleantype *sensi, int *sensi_meth, booleantype *err_con)
+{
+  *sensi = FALSE;
+  *sensi_meth = -1;
+  *err_con = FALSE;
+
+  if (argc < 2) WrongArgs(argv[0]);
+
+  if (strcmp(argv[1],"-nosensi") == 0)
+    *sensi = FALSE;
+  else if (strcmp(argv[1],"-sensi") == 0)
+    *sensi = TRUE;
+  else
+    WrongArgs(argv[0]);
+  
+  if (*sensi) {
+
+    if (argc != 4)
+      WrongArgs(argv[0]);
+
+    if (strcmp(argv[2],"sim") == 0)
+      *sensi_meth = CV_SIMULTANEOUS;
+    else if (strcmp(argv[2],"stg") == 0)
+      *sensi_meth = CV_STAGGERED;
+    else if (strcmp(argv[2],"stg1") == 0)
+      *sensi_meth = CV_STAGGERED1;
+    else 
+      WrongArgs(argv[0]);
+
+    if (strcmp(argv[3],"t") == 0)
+      *err_con = TRUE;
+    else if (strcmp(argv[3],"f") == 0)
+      *err_con = FALSE;
+    else
+      WrongArgs(argv[0]);
+  }
+
+}
+
+static void WrongArgs(char *name)
+{
+    printf("\nUsage: %s [-nosensi] [-sensi sensi_meth err_con]\n",name);
+    printf("         sensi_meth = sim, stg, or stg1\n");
+    printf("         err_con    = t or f\n");
+    
+    exit(0);
+}
+
+/*
+ * Allocate memory for data structure of type UserData 
+ */
+
+static UserData AllocUserData(void)
+{
+  int jx, jz;
+  UserData data;
+
+  data = (UserData) malloc(sizeof *data);
+
+  for (jx=0; jx < MX; jx++) {
+    for (jz=0; jz < MZ; jz++) {
+      (data->P)[jx][jz] = denalloc(NUM_SPECIES);
+      (data->Jbd)[jx][jz] = denalloc(NUM_SPECIES);
+      (data->pivot)[jx][jz] = denallocpiv(NUM_SPECIES);
+    }
+  }
+
+  data->p = (realtype *) malloc(NP*sizeof(realtype));
+
+  return(data);
+}
+
+/*
+ * Load problem constants in data 
+ */
+
+static void InitUserData(UserData data)
+{
+  realtype Q1, Q2, C3, A3, A4, KH, VEL, KV0;
+
+  /* Set problem parameters */
+  Q1 = RCONST(1.63e-16); /* Q1  coefficients q1, q2, c3             */
+  Q2 = RCONST(4.66e-16); /* Q2                                      */
+  C3 = RCONST(3.7e16);   /* C3                                      */
+  A3 = RCONST(22.62);    /* A3  coefficient in expression for q3(t) */
+  A4 = RCONST(7.601);    /* A4  coefficient in expression for q4(t) */
+  KH = RCONST(4.0e-6);   /* KH  horizontal diffusivity Kh           */ 
+  VEL = RCONST(0.001);   /* VEL advection velocity V                */
+  KV0 = RCONST(1.0e-8);  /* KV0 coefficient in Kv(z)                */  
+
+  data->om = PI/HALFDAY;
+  data->dx = (XMAX-XMIN)/(MX-1);
+  data->dz = (ZMAX-ZMIN)/(MZ-1);
+  data->hdco = KH/SQR(data->dx);
+  data->haco = VEL/(RCONST(2.0)*data->dx);
+  data->vdco = (ONE/SQR(data->dz))*KV0;
+
+  data->p[0] = Q1;
+  data->p[1] = Q2;
+  data->p[2] = C3;
+  data->p[3] = A3;
+  data->p[4] = A4;
+  data->p[5] = KH;
+  data->p[6] = VEL;
+  data->p[7] = KV0;
+}
+
+/*
+ * Free user data memory 
+ */
+
+static void FreeUserData(UserData data)
+{
+  int jx, jz;
+
+  for (jx=0; jx < MX; jx++) {
+    for (jz=0; jz < MZ; jz++) {
+      denfree((data->P)[jx][jz]);
+      denfree((data->Jbd)[jx][jz]);
+      denfreepiv((data->pivot)[jx][jz]);
+    }
+  }
+
+  free(data->p);
+
+  free(data);
+}
+
+/*
+ * Set initial conditions in y 
+ */
+
+static void SetInitialProfiles(N_Vector y, realtype dx, realtype dz)
+{
+  int jx, jz;
+  realtype x, z, cx, cz;
+  realtype *ydata;
+
+  /* Set pointer to data array in vector y. */
+
+  ydata = NV_DATA_S(y);
+
+  /* Load initial profiles of c1 and c2 into y vector */
+
+  for (jz=0; jz < MZ; jz++) {
+    z = ZMIN + jz*dz;
+    cz = SQR(RCONST(0.1)*(z - ZMID));
+    cz = ONE - cz + RCONST(0.5)*SQR(cz);
+    for (jx=0; jx < MX; jx++) {
+      x = XMIN + jx*dx;
+      cx = SQR(RCONST(0.1)*(x - XMID));
+      cx = ONE - cx + RCONST(0.5)*SQR(cx);
+      IJKth(ydata,1,jx,jz) = C1_SCALE*cx*cz; 
+      IJKth(ydata,2,jx,jz) = C2_SCALE*cx*cz;
+    }
+  }
+}
+
+/*
+ * Print current t, step count, order, stepsize, and sampled c1,c2 values 
+ */
+
+static void PrintOutput(void *cvode_mem, realtype t, N_Vector y)
+{  
+  long int nst;
+  int qu, flag;
+  realtype hu;
+  realtype *ydata;
+
+  ydata = NV_DATA_S(y);
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetLastOrder(cvode_mem, &qu);
+  check_flag(&flag, "CVodeGetLastOrder", 1);
+  flag = CVodeGetLastStep(cvode_mem, &hu);
+  check_flag(&flag, "CVodeGetLastStep", 1);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%8.3Le %2d  %8.3Le %5ld\n", t,qu,hu,nst);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%8.3le %2d  %8.3le %5ld\n", t,qu,hu,nst);
+#else
+  printf("%8.3e %2d  %8.3e %5ld\n", t,qu,hu,nst);
+#endif
+
+  printf("                                Solution       ");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%12.4Le %12.4Le \n", IJKth(ydata,1,0,0), IJKth(ydata,1,MX-1,MZ-1)); 
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%12.4le %12.4le \n", IJKth(ydata,1,0,0), IJKth(ydata,1,MX-1,MZ-1)); 
+#else
+  printf("%12.4e %12.4e \n", IJKth(ydata,1,0,0), IJKth(ydata,1,MX-1,MZ-1)); 
+#endif
+  printf("                                               ");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%12.4Le %12.4Le \n", IJKth(ydata,2,0,0), IJKth(ydata,2,MX-1,MZ-1));
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%12.4le %12.4le \n", IJKth(ydata,2,0,0), IJKth(ydata,2,MX-1,MZ-1));
+#else
+  printf("%12.4e %12.4e \n", IJKth(ydata,2,0,0), IJKth(ydata,2,MX-1,MZ-1));
+#endif
+}
+
+/*
+ * Print sampled sensitivities 
+ */
+
+static void PrintOutputS(N_Vector *uS)
+{
+  realtype *sdata;
+
+  sdata = NV_DATA_S(uS[0]);
+
+  printf("                                ----------------------------------------\n"); 
+  printf("                                Sensitivity 1  ");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%12.4Le %12.4Le \n", IJKth(sdata,1,0,0), IJKth(sdata,1,MX-1,MZ-1)); 
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%12.4le %12.4le \n", IJKth(sdata,1,0,0), IJKth(sdata,1,MX-1,MZ-1)); 
+#else
+  printf("%12.4e %12.4e \n", IJKth(sdata,1,0,0), IJKth(sdata,1,MX-1,MZ-1)); 
+#endif
+  printf("                                               ");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%12.4Le %12.4Le \n", IJKth(sdata,2,0,0), IJKth(sdata,2,MX-1,MZ-1));
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%12.4le %12.4le \n", IJKth(sdata,2,0,0), IJKth(sdata,2,MX-1,MZ-1));
+#else
+  printf("%12.4e %12.4e \n", IJKth(sdata,2,0,0), IJKth(sdata,2,MX-1,MZ-1));
+#endif
+
+  sdata = NV_DATA_S(uS[1]);
+
+  printf("                                ----------------------------------------\n"); 
+  printf("                                Sensitivity 2  ");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%12.4Le %12.4Le \n", IJKth(sdata,1,0,0), IJKth(sdata,1,MX-1,MZ-1)); 
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%12.4le %12.4le \n", IJKth(sdata,1,0,0), IJKth(sdata,1,MX-1,MZ-1)); 
+#else
+  printf("%12.4e %12.4e \n", IJKth(sdata,1,0,0), IJKth(sdata,1,MX-1,MZ-1)); 
+#endif
+  printf("                                               ");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%12.4Le %12.4Le \n", IJKth(sdata,2,0,0), IJKth(sdata,2,MX-1,MZ-1));
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%12.4le %12.4le \n", IJKth(sdata,2,0,0), IJKth(sdata,2,MX-1,MZ-1));
+#else
+  printf("%12.4e %12.4e \n", IJKth(sdata,2,0,0), IJKth(sdata,2,MX-1,MZ-1));
+#endif
+}
+
+/*
+ * Print final statistics contained in iopt 
+ */
+
+static void PrintFinalStats(void *cvode_mem, booleantype sensi)
+{
+  long int nst;
+  long int nfe, nsetups, nni, ncfn, netf;
+  long int nfSe, nfeS, nsetupsS, nniS, ncfnS, netfS;
+  long int nli, ncfl, npe, nps;
+  int flag;
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  if (sensi) {
+    flag = CVodeGetNumSensRhsEvals(cvode_mem, &nfSe);
+    check_flag(&flag, "CVodeGetNumSensRhsEvals", 1);
+    flag = CVodeGetNumRhsEvalsSens(cvode_mem, &nfeS);
+    check_flag(&flag, "CVodeGetNumRhsEvalsSens", 1);
+    flag = CVodeGetNumSensLinSolvSetups(cvode_mem, &nsetupsS);
+    check_flag(&flag, "CVodeGetNumSensLinSolvSetups", 1);
+    flag = CVodeGetNumSensErrTestFails(cvode_mem, &netfS);
+    check_flag(&flag, "CVodeGetNumSensErrTestFails", 1);
+    flag = CVodeGetNumSensNonlinSolvIters(cvode_mem, &nniS);
+    check_flag(&flag, "CVodeGetNumSensNonlinSolvIters", 1);
+    flag = CVodeGetNumSensNonlinSolvConvFails(cvode_mem, &ncfnS);
+    check_flag(&flag, "CVodeGetNumSensNonlinSolvConvFails", 1);
+  }
+
+  flag = CVSpgmrGetNumLinIters(cvode_mem, &nli);
+  check_flag(&flag, "CVSpgmrGetNumLinIters", 1);
+  flag = CVSpgmrGetNumConvFails(cvode_mem, &ncfl);
+  check_flag(&flag, "CVSpgmrGetNumConvFails", 1);
+  flag = CVSpgmrGetNumPrecEvals(cvode_mem, &npe);
+  check_flag(&flag, "CVSpgmrGetNumPrecEvals", 1);
+  flag = CVSpgmrGetNumPrecSolves(cvode_mem, &nps);
+  check_flag(&flag, "CVSpgmrGetNumPrecSolves", 1);
+
+  printf("\nFinal Statistics\n\n");
+  printf("nst     = %5ld\n\n", nst);
+  printf("nfe     = %5ld\n",   nfe);
+  printf("netf    = %5ld    nsetups  = %5ld\n", netf, nsetups);
+  printf("nni     = %5ld    ncfn     = %5ld\n", nni, ncfn);
+
+  if(sensi) {
+    printf("\n");
+    printf("nfSe    = %5ld    nfeS     = %5ld\n", nfSe, nfeS);
+    printf("netfs   = %5ld    nsetupsS = %5ld\n", netfS, nsetupsS);
+    printf("nniS    = %5ld    ncfnS    = %5ld\n", nniS, ncfnS);
+  }
+
+  printf("\n");
+  printf("nli     = %5ld    ncfl     = %5ld\n", nli, ncfl);
+  printf("npe     = %5ld    nps      = %5ld\n", npe, nps);
+
+}
+
+/*
+ * Check function return value...
+ *   opt == 0 means SUNDIALS function allocates memory so check if
+ *            returned NULL pointer
+ *   opt == 1 means SUNDIALS function returns a flag so check if
+ *            flag >= 0
+ *   opt == 2 means function allocates memory so check if returned
+ *            NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n", funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n", funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n", funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfkx.out1 b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfkx.out1
new file mode 100644
index 0000000..6bb9b57
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfkx.out1
@@ -0,0 +1,142 @@
+
+2-species diurnal advection-diffusion problem
+Sensitivity: YES ( SIMULTANEOUS + FULL ERROR CONTROL )
+
+========================================================================
+     T     Q       H      NST                    Bottom left  Top right 
+========================================================================
+7.200e+03  3  3.800e+01   329
+                                Solution         1.0593e+04   1.1152e+04 
+                                                 2.5567e+11   2.6917e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -6.4963e+19  -6.8394e+19 
+                                                 7.2120e+19   7.6303e+19 
+                                ----------------------------------------
+                                Sensitivity 2   -4.4900e+14  -4.9768e+14 
+                                                -2.5039e+18  -2.7671e+18 
+------------------------------------------------------------------------
+1.440e+04  3  3.907e+01   814
+                                Solution         6.9172e+06   7.2517e+06 
+                                                 2.6829e+11   2.8137e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -4.2432e+22  -4.4483e+22 
+                                                 6.2762e+22   6.6564e+22 
+                                ----------------------------------------
+                                Sensitivity 2   -4.8955e+17  -5.3580e+17 
+                                                -7.1117e+21  -7.7237e+21 
+------------------------------------------------------------------------
+2.160e+04  2  9.348e+00  1380
+                                Solution         2.7558e+07   2.9196e+07 
+                                                 3.1024e+11   3.3000e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -1.6903e+23  -1.7907e+23 
+                                                 4.0588e+23   4.4683e+23 
+                                ----------------------------------------
+                                Sensitivity 2   -8.2851e+18  -9.3611e+18 
+                                                -8.2852e+22  -9.3662e+22 
+------------------------------------------------------------------------
+2.880e+04  3  7.457e+01  1942
+                                Solution         8.9631e+06   9.8602e+06 
+                                                 3.4824e+11   3.8331e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -5.4975e+22  -6.0476e+22 
+                                                 5.8239e+23   7.0579e+23 
+                                ----------------------------------------
+                                Sensitivity 2   -5.2367e+18  -6.4007e+18 
+                                                -1.8450e+23  -2.2574e+23 
+------------------------------------------------------------------------
+3.600e+04  4  2.607e+01  2035
+                                Solution         1.4433e+04   1.6660e+04 
+                                                 3.4814e+11   4.0186e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -8.8547e+19  -1.0220e+20 
+                                                 5.6473e+23   7.6273e+23 
+                                ----------------------------------------
+                                Sensitivity 2   -9.0220e+15  -1.2170e+16 
+                                                -1.9753e+23  -2.6679e+23 
+------------------------------------------------------------------------
+4.320e+04  4  3.084e+02  2246
+                                Solution         2.1437e-08  -2.6258e-08 
+                                                 3.4900e+11   4.0867e+11 
+                                ----------------------------------------
+                                Sensitivity 1    1.6252e+09  -1.0713e+09 
+                                                 5.7083e+23   7.9553e+23 
+                                ----------------------------------------
+                                Sensitivity 2    2.1233e+04  -1.4607e+04 
+                                                -1.9969e+23  -2.7830e+23 
+------------------------------------------------------------------------
+5.040e+04  5  4.799e+02  2264
+                                Solution        -1.4486e-09  -3.8972e-10 
+                                                 3.5570e+11   4.1225e+11 
+                                ----------------------------------------
+                                Sensitivity 1    1.2153e+09   3.3968e+08 
+                                                 5.9553e+23   8.1823e+23 
+                                ----------------------------------------
+                                Sensitivity 2    1.4370e+04   4.7645e+03 
+                                                -2.0833e+23  -2.8624e+23 
+------------------------------------------------------------------------
+5.760e+04  4  1.152e+02  2287
+                                Solution        -3.6662e-09  -9.0092e-10 
+                                                 3.6425e+11   4.1628e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -2.7620e+08  -6.6366e+07 
+                                                 6.2592e+23   8.4334e+23 
+                                ----------------------------------------
+                                Sensitivity 2    5.7119e+06   1.5660e+06 
+                                                -2.1896e+23  -2.9502e+23 
+------------------------------------------------------------------------
+6.480e+04  4  1.152e+02  2350
+                                Solution         4.6665e-08   1.3352e-08 
+                                                 3.6334e+11   4.2182e+11 
+                                ----------------------------------------
+                                Sensitivity 1    3.2209e+10   9.1921e+09 
+                                                 6.2461e+23   8.7310e+23 
+                                ----------------------------------------
+                                Sensitivity 2   -3.6567e+06  -1.1729e+06 
+                                                -2.1850e+23  -3.0543e+23 
+------------------------------------------------------------------------
+7.200e+04  4  3.863e+02  2401
+                                Solution        -1.2181e-13  -3.5735e-14 
+                                                 3.6192e+11   4.3354e+11 
+                                ----------------------------------------
+                                Sensitivity 1    1.3446e+05   3.9499e+04 
+                                                 6.2310e+23   9.2797e+23 
+                                ----------------------------------------
+                                Sensitivity 2   -1.0378e-01  -3.6328e-02 
+                                                -2.1798e+23  -3.2463e+23 
+------------------------------------------------------------------------
+7.920e+04  4  3.863e+02  2419
+                                Solution         4.3057e-18   1.0027e-18 
+                                                 3.6148e+11   4.4474e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -1.6766e+01  -4.9221e+00 
+                                                 6.2481e+23   9.8067e+23 
+                                ----------------------------------------
+                                Sensitivity 2   -1.8879e-04  -6.7774e-05 
+                                                -2.1858e+23  -3.4306e+23 
+------------------------------------------------------------------------
+8.640e+04  4  3.863e+02  2438
+                                Solution        -1.2147e-19  -8.3429e-20 
+                                                 3.6318e+11   4.4524e+11 
+                                ----------------------------------------
+                                Sensitivity 1    1.6818e-01   2.0015e-01 
+                                                 6.3248e+23   9.8819e+23 
+                                ----------------------------------------
+                                Sensitivity 2    1.6567e-06   2.4079e-06 
+                                                -2.2126e+23  -3.4570e+23 
+------------------------------------------------------------------------
+
+Final Statistics
+
+nst     =  2438
+
+nfe     =  3667
+netf    =   208    nsetups  =   567
+nni     =  3664    ncfn     =     9
+
+nfSe    =  7334    nfeS     = 14668
+netfs   =     0    nsetupsS =     0
+nniS    =     0    ncfnS    =     0
+
+nli     =  7275    ncfl     =     0
+npe     =    59    nps      = 15921
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfkx.out2 b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfkx.out2
new file mode 100644
index 0000000..7b15de6
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfkx.out2
@@ -0,0 +1,142 @@
+
+2-species diurnal advection-diffusion problem
+Sensitivity: YES ( STAGGERED + PARTIAL ERROR CONTROL )
+
+========================================================================
+     T     Q       H      NST                    Bottom left  Top right 
+========================================================================
+7.200e+03  5  1.504e+02   193
+                                Solution         1.0593e+04   1.1152e+04 
+                                                 2.5567e+11   2.6917e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -6.4963e+19  -6.8394e+19 
+                                                 7.2121e+19   7.6304e+19 
+                                ----------------------------------------
+                                Sensitivity 2   -4.4900e+14  -4.9768e+14 
+                                                -2.5040e+18  -2.7672e+18 
+------------------------------------------------------------------------
+1.440e+04  5  3.433e+02   226
+                                Solution         6.9172e+06   7.2517e+06 
+                                                 2.6829e+11   2.8137e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -4.2432e+22  -4.4483e+22 
+                                                 6.2762e+22   6.6563e+22 
+                                ----------------------------------------
+                                Sensitivity 2   -4.8955e+17  -5.3580e+17 
+                                                -7.1115e+21  -7.7235e+21 
+------------------------------------------------------------------------
+2.160e+04  5  3.931e+02   251
+                                Solution         2.7558e+07   2.9196e+07 
+                                                 3.1024e+11   3.3000e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -1.6903e+23  -1.7907e+23 
+                                                 4.0588e+23   4.4683e+23 
+                                ----------------------------------------
+                                Sensitivity 2   -8.2851e+18  -9.3611e+18 
+                                                -8.2851e+22  -9.3662e+22 
+------------------------------------------------------------------------
+2.880e+04  5  3.931e+02   269
+                                Solution         8.9631e+06   9.8602e+06 
+                                                 3.4824e+11   3.8331e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -5.4975e+22  -6.0476e+22 
+                                                 5.8239e+23   7.0579e+23 
+                                ----------------------------------------
+                                Sensitivity 2   -5.2367e+18  -6.4007e+18 
+                                                -1.8450e+23  -2.2574e+23 
+------------------------------------------------------------------------
+3.600e+04  5  1.546e+02   292
+                                Solution         1.4433e+04   1.6660e+04 
+                                                 3.4814e+11   4.0186e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -8.8547e+19  -1.0220e+20 
+                                                 5.6474e+23   7.6273e+23 
+                                ----------------------------------------
+                                Sensitivity 2   -9.0220e+15  -1.2170e+16 
+                                                -1.9753e+23  -2.6679e+23 
+------------------------------------------------------------------------
+4.320e+04  4  3.112e+02   345
+                                Solution        -5.0189e-07  -7.0194e-07 
+                                                 3.4900e+11   4.0867e+11 
+                                ----------------------------------------
+                                Sensitivity 1    3.0955e+09   4.2708e+09 
+                                                 5.7083e+23   7.9553e+23 
+                                ----------------------------------------
+                                Sensitivity 2    1.9589e+07   2.4638e+07 
+                                                -1.9969e+23  -2.7830e+23 
+------------------------------------------------------------------------
+5.040e+04  5  5.074e+02   366
+                                Solution         3.1363e-09  -4.3983e-09 
+                                                 3.5570e+11   4.1225e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -4.4370e+07   8.6444e+07 
+                                                 5.9553e+23   8.1823e+23 
+                                ----------------------------------------
+                                Sensitivity 2   -1.0155e+06   9.7697e+04 
+                                                -2.0833e+23  -2.8624e+23 
+------------------------------------------------------------------------
+5.760e+04  5  5.074e+02   380
+                                Solution         1.7985e-10  -2.4446e-10 
+                                                 3.6425e+11   4.1628e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -5.7945e+08   8.7743e+08 
+                                                 6.2592e+23   8.4334e+23 
+                                ----------------------------------------
+                                Sensitivity 2    1.5117e+07  -3.1176e+06 
+                                                -2.1897e+23  -2.9502e+23 
+------------------------------------------------------------------------
+6.480e+04  5  5.074e+02   394
+                                Solution         1.3696e-11  -1.8685e-11 
+                                                 3.6334e+11   4.2182e+11 
+                                ----------------------------------------
+                                Sensitivity 1   -3.0284e+07   4.5683e+07 
+                                                 6.2461e+23   8.7310e+23 
+                                ----------------------------------------
+                                Sensitivity 2   -8.5394e+06   1.6714e+06 
+                                                -2.1851e+23  -3.0544e+23 
+------------------------------------------------------------------------
+7.200e+04  5  5.074e+02   408
+                                Solution         9.3096e-13  -1.2744e-12 
+                                                 3.6192e+11   4.3354e+11 
+                                ----------------------------------------
+                                Sensitivity 1    6.5609e+07  -9.9063e+07 
+                                                 6.2311e+23   9.2797e+23 
+                                ----------------------------------------
+                                Sensitivity 2    1.3270e+07  -2.5979e+06 
+                                                -2.1798e+23  -3.2463e+23 
+------------------------------------------------------------------------
+7.920e+04  5  5.074e+02   422
+                                Solution         3.7060e-14  -5.0865e-14 
+                                                 3.6148e+11   4.4474e+11 
+                                ----------------------------------------
+                                Sensitivity 1    1.0293e+06  -1.5592e+06 
+                                                 6.2481e+23   9.8067e+23 
+                                ----------------------------------------
+                                Sensitivity 2    1.9413e+05  -3.8591e+04 
+                                                -2.1858e+23  -3.4306e+23 
+------------------------------------------------------------------------
+8.640e+04  5  5.074e+02   437
+                                Solution         5.6771e-16  -7.9226e-16 
+                                                 3.6318e+11   4.4524e+11 
+                                ----------------------------------------
+                                Sensitivity 1    8.4375e+04  -1.2725e+05 
+                                                 6.3249e+23   9.8820e+23 
+                                ----------------------------------------
+                                Sensitivity 2    1.7230e+04  -3.3562e+03 
+                                                -2.2126e+23  -3.4570e+23 
+------------------------------------------------------------------------
+
+Final Statistics
+
+nst     =   437
+
+nfe     =   972
+netf    =    18    nsetups  =    59
+nni     =   532    ncfn     =     0
+
+nfSe    =  1110    nfeS     =  2220
+netfs   =     0    nsetupsS =     0
+nniS    =   554    ncfnS    =     0
+
+nli     =  1892    ncfl     =     0
+npe     =     8    nps      =  3294
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfnx.c b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfnx.c
new file mode 100644
index 0000000..e9b3f7c
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfnx.c
@@ -0,0 +1,513 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:34:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh, George D. Byrne,
+ *              and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Example problem:
+ *
+ * The following is a simple example problem, with the program for
+ * its solution by CVODES. The problem is the semi-discrete form of
+ * the advection-diffusion equation in 1-D:
+ *   du/dt = q1 * d^2 u / dx^2 + q2 * du/dx
+ * on the interval 0 <= x <= 2, and the time interval 0 <= t <= 5.
+ * Homogeneous Dirichlet boundary conditions are posed, and the
+ * initial condition is:
+ *   u(x,y,t=0) = x(2-x)exp(2x).
+ * The PDE is discretized on a uniform grid of size MX+2 with
+ * central differencing, and with boundary values eliminated,
+ * leaving an ODE system of size NEQ = MX.
+ * This program solves the problem with the option for nonstiff
+ * systems: ADAMS method and functional iteration.
+ * It uses scalar relative and absolute tolerances.
+ * Output is printed at t = .5, 1.0, ..., 5.
+ * Run statistics (optional outputs) are printed at the end.
+ *
+ * Optionally, CVODES can compute sensitivities with respect to the
+ * problem parameters q1 and q2.
+ * Any of three sensitivity methods (SIMULTANEOUS, STAGGERED, and
+ * STAGGERED1) can be used and sensitivities may be included in the
+ * error test or not (error control set on FULL or PARTIAL,
+ * respectively).
+ *
+ * Execution:
+ *
+ * If no sensitivities are desired:
+ *    % cvsnx -nosensi
+ * If sensitivities are to be computed:
+ *    % cvsnx -sensi sensi_meth err_con
+ * where sensi_meth is one of {sim, stg, stg1} and err_con is one of
+ * {t, f}.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include "sundialstypes.h"
+#include "cvodes.h"
+#include "nvector_serial.h"
+
+/* Problem Constants */
+#define XMAX  RCONST(2.0)   /* domain boundary           */
+#define MX    10            /* mesh dimension            */
+#define NEQ   MX            /* number of equations       */
+#define ATOL  RCONST(1.e-5) /* scalar absolute tolerance */
+#define T0    RCONST(0.0)   /* initial time              */
+#define T1    RCONST(0.5)   /* first output time         */
+#define DTOUT RCONST(0.5)   /* output time increment     */
+#define NOUT  10            /* number of output times    */
+
+#define NP    2
+#define NS    2
+
+#define ZERO  RCONST(0.0)
+
+/* Type : UserData 
+   contains problem parameters, grid constants, work array. */
+
+typedef struct {
+  realtype *p;
+  realtype dx;
+} *UserData;
+
+/* Functions Called by the CVODES Solver */
+
+static void f(realtype t, N_Vector u, N_Vector udot, void *f_data);
+
+/* Private Helper Functions */
+
+static void ProcessArgs(int argc, char *argv[],
+                        booleantype *sensi, int *sensi_meth,
+			booleantype *err_con);
+static void WrongArgs(char *name);
+static void SetIC(N_Vector u, realtype dx);
+static void PrintOutput(void *cvode_mem, realtype t, N_Vector u);
+static void PrintOutputS(N_Vector *uS);
+static void PrintFinalStats(void *cvode_mem, booleantype sensi);
+
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/*
+ *--------------------------------------------------------------------
+ * MAIN PROGRAM
+ *--------------------------------------------------------------------
+ */
+
+int main(int argc, char *argv[])
+{
+  void *cvode_mem;
+  UserData data;
+  realtype dx, reltol, abstol, t, tout;
+  N_Vector u;
+  int iout, flag;
+
+  realtype *pbar;
+  int is, *plist;
+  N_Vector *uS;
+  booleantype sensi, err_con;
+  int sensi_meth;
+
+  cvode_mem = NULL;
+  data = NULL;
+  u = NULL;
+  pbar = NULL;
+  plist = NULL;
+  uS = NULL;
+
+  /* Process arguments */
+  ProcessArgs(argc, argv, &sensi, &sensi_meth, &err_con);
+
+  /* Set user data */
+  data = (UserData) malloc(sizeof *data); /* Allocate data memory */
+  if(check_flag((void *)data, "malloc", 2)) return(1);
+  data->p = (realtype *) malloc(NP * sizeof(realtype));
+  dx = data->dx = XMAX/((realtype)(MX+1));
+  data->p[0] = RCONST(1.0);
+  data->p[1] = RCONST(0.5);
+
+  /* Allocate and set initial states */
+  u = N_VNew_Serial(NEQ);
+  if(check_flag((void *)u, "N_VNew_Serial", 0)) return(1);
+  SetIC(u, dx);
+
+  /* Set integration tolerances */
+  reltol = ZERO;
+  abstol = ATOL;
+
+  /* Create CVODES object */
+  cvode_mem = CVodeCreate(CV_ADAMS, CV_FUNCTIONAL);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  flag = CVodeSetFdata(cvode_mem, data);
+  if(check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+
+  /* Allocate CVODES memory */
+  flag = CVodeMalloc(cvode_mem, f, T0, u, CV_SS, reltol, &abstol);
+  if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+  
+  printf("\n1-D advection-diffusion equation, mesh size =%3d\n", MX);
+
+  /* Sensitivity-related settings */
+  if(sensi) {
+
+    plist = (int *) malloc(NS * sizeof(int));
+    if(check_flag((void *)plist, "malloc", 2)) return(1);
+    for(is=0; is<NS; is++) plist[is] = is+1;
+
+    pbar  = (realtype *) malloc(NS * sizeof(realtype));
+    if(check_flag((void *)pbar, "malloc", 2)) return(1);
+    for(is=0; is<NS; is++) pbar[is] = data->p[plist[is]-1];
+
+    uS = N_VNewVectorArray_Serial(NS, NEQ);
+    if(check_flag((void *)uS, "N_VNew", 0)) return(1);
+    for(is=0;is<NS;is++)
+      N_VConst(ZERO, uS[is]);
+
+    flag = CVodeSensMalloc(cvode_mem, NS, sensi_meth, uS);
+    if(check_flag(&flag, "CVodeSensMalloc", 1)) return(1);
+
+    flag = CVodeSetSensErrCon(cvode_mem, err_con);
+    if(check_flag(&flag, "CVodeSetSensErrCon", 1)) return(1);
+
+    flag = CVodeSetSensRho(cvode_mem, ZERO);
+    if(check_flag(&flag, "CVodeSetSensRho", 1)) return(1);
+
+    flag = CVodeSetSensParams(cvode_mem, data->p, pbar, plist);
+    if(check_flag(&flag, "CVodeSetSensParams", 1)) return(1);
+
+    printf("Sensitivity: YES ");
+    if(sensi_meth == CV_SIMULTANEOUS)   
+      printf("( SIMULTANEOUS +");
+    else 
+      if(sensi_meth == CV_STAGGERED) printf("( STAGGERED +");
+      else                           printf("( STAGGERED1 +");   
+    if(err_con) printf(" FULL ERROR CONTROL )");
+    else        printf(" PARTIAL ERROR CONTROL )");
+
+  } else {
+
+    printf("Sensitivity: NO ");
+
+  }
+
+  /* In loop over output points, call CVode, print results, test for error */
+
+  printf("\n\n");
+  printf("============================================================\n");
+  printf("     T     Q       H      NST                    Max norm   \n");
+  printf("============================================================\n");
+
+  for (iout=1, tout=T1; iout <= NOUT; iout++, tout += DTOUT) {
+    flag = CVode(cvode_mem, tout, u, &t, CV_NORMAL);
+    if(check_flag(&flag, "CVode", 1)) break;
+    PrintOutput(cvode_mem, t, u);
+    if (sensi) {
+      flag = CVodeGetSens(cvode_mem, t, uS);
+      if(check_flag(&flag, "CVodeGetSens", 1)) break;
+      PrintOutputS(uS);
+    } 
+    printf("------------------------------------------------------------\n");
+  }
+
+  /* Print final statistics */
+  PrintFinalStats(cvode_mem, sensi);
+
+  /* Free memory */
+  N_VDestroy_Serial(u);
+  if (sensi) {
+    N_VDestroyVectorArray_Serial(uS, NS);
+    free(plist);
+    free(pbar);
+  }
+  free(data);
+  CVodeFree(cvode_mem);
+
+  return(0);
+}
+
+/*
+ *--------------------------------------------------------------------
+ * FUNCTIONS CALLED BY CVODES
+ *--------------------------------------------------------------------
+ */
+
+/* 
+ * f routine. Compute f(t,u). 
+ */
+
+static void f(realtype t, N_Vector u, N_Vector udot, void *f_data)
+{
+  realtype ui, ult, urt, hordc, horac, hdiff, hadv;
+  realtype dx;
+  realtype *udata, *dudata;
+  int i;
+  UserData data;
+
+  udata = NV_DATA_S(u);
+  dudata = NV_DATA_S(udot);
+
+  /* Extract needed problem constants from data */
+  data = (UserData) f_data;
+  dx    = data->dx;
+  hordc = data->p[0]/(dx*dx);
+  horac = data->p[1]/(RCONST(2.0)*dx);
+
+  /* Loop over all grid points. */
+  for (i=0; i<NEQ; i++) {
+
+    /* Extract u at x_i and two neighboring points */
+    ui = udata[i];
+    if(i!=0) 
+      ult = udata[i-1];
+    else
+      ult = ZERO;
+    if(i!=NEQ-1)
+      urt = udata[i+1];
+    else
+      urt = ZERO;
+
+    /* Set diffusion and advection terms and load into udot */
+    hdiff = hordc*(ult - RCONST(2.0)*ui + urt);
+    hadv = horac*(urt - ult);
+    dudata[i] = hdiff + hadv;
+  }
+}
+
+/*
+ *--------------------------------------------------------------------
+ * PRIVATE FUNCTIONS
+ *--------------------------------------------------------------------
+ */
+
+/* 
+ * Process and verify arguments to cvfnx.
+ */
+
+static void ProcessArgs(int argc, char *argv[], 
+                        booleantype *sensi, int *sensi_meth, booleantype *err_con)
+{
+  *sensi = FALSE;
+  *sensi_meth = -1;
+  *err_con = FALSE;
+
+  if (argc < 2) WrongArgs(argv[0]);
+
+  if (strcmp(argv[1],"-nosensi") == 0)
+    *sensi = FALSE;
+  else if (strcmp(argv[1],"-sensi") == 0)
+    *sensi = TRUE;
+  else
+    WrongArgs(argv[0]);
+  
+  if (*sensi) {
+
+    if (argc != 4)
+      WrongArgs(argv[0]);
+
+    if (strcmp(argv[2],"sim") == 0)
+      *sensi_meth = CV_SIMULTANEOUS;
+    else if (strcmp(argv[2],"stg") == 0)
+      *sensi_meth = CV_STAGGERED;
+    else if (strcmp(argv[2],"stg1") == 0)
+      *sensi_meth = CV_STAGGERED1;
+    else 
+      WrongArgs(argv[0]);
+
+    if (strcmp(argv[3],"t") == 0)
+      *err_con = TRUE;
+    else if (strcmp(argv[3],"f") == 0)
+      *err_con = FALSE;
+    else
+      WrongArgs(argv[0]);
+  }
+
+}
+
+static void WrongArgs(char *name)
+{
+    printf("\nUsage: %s [-nosensi] [-sensi sensi_meth err_con]\n",name);
+    printf("         sensi_meth = sim, stg, or stg1\n");
+    printf("         err_con    = t or f\n");
+    
+    exit(0);
+}
+
+/* 
+ * Set initial conditions in u vector.
+ */
+
+static void SetIC(N_Vector u, realtype dx)
+{
+  int i;
+  realtype x;
+  realtype *udata;
+
+  /* Set pointer to data array and get local length of u. */
+  udata = NV_DATA_S(u);
+
+  /* Load initial profile into u vector */
+  for (i=0; i<NEQ; i++) {
+    x = (i+1)*dx;
+    udata[i] = x*(XMAX - x)*exp(RCONST(2.0)*x);
+  }  
+}
+
+/*
+ * Print current t, step count, order, stepsize, and max norm of solution  
+ */
+
+static void PrintOutput(void *cvode_mem, realtype t, N_Vector u)
+{
+  long int nst;
+  int qu, flag;
+  realtype hu;
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetLastOrder(cvode_mem, &qu);
+  check_flag(&flag, "CVodeGetLastOrder", 1);
+  flag = CVodeGetLastStep(cvode_mem, &hu);
+  check_flag(&flag, "CVodeGetLastStep", 1);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%8.3Le %2d  %8.3Le %5ld\n", t, qu, hu ,nst);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%8.3le %2d  %8.3le %5ld\n", t, qu, hu ,nst);
+#else
+  printf("%8.3e %2d  %8.3e %5ld\n", t, qu, hu ,nst);
+#endif
+
+  printf("                                Solution       ");
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%12.4Le \n", N_VMaxNorm(u));
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%12.4le \n", N_VMaxNorm(u));
+#else
+  printf("%12.4e \n", N_VMaxNorm(u));
+#endif
+}
+
+/*
+ * Print max norm of sensitivities 
+ */
+
+static void PrintOutputS(N_Vector *uS)
+{
+  printf("                                Sensitivity 1  ");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%12.4Le \n", N_VMaxNorm(uS[0]));
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%12.4le \n", N_VMaxNorm(uS[0]));
+#else
+  printf("%12.4e \n", N_VMaxNorm(uS[0]));
+#endif
+
+  printf("                                Sensitivity 2  ");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%12.4Le \n", N_VMaxNorm(uS[1]));
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%12.4le \n", N_VMaxNorm(uS[1]));
+#else
+  printf("%12.4e \n", N_VMaxNorm(uS[1]));
+#endif
+}
+
+
+/*
+ * Print some final statistics located in the CVODES memory
+ */
+
+static void PrintFinalStats(void *cvode_mem, booleantype sensi)
+{
+  long int nst;
+  long int nfe, nsetups, nni, ncfn, netf;
+  long int nfSe, nfeS, nsetupsS, nniS, ncfnS, netfS;
+  int flag;
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  if (sensi) {
+    flag = CVodeGetNumSensRhsEvals(cvode_mem, &nfSe);
+    check_flag(&flag, "CVodeGetNumSensRhsEvals", 1);
+    flag = CVodeGetNumRhsEvalsSens(cvode_mem, &nfeS);
+    check_flag(&flag, "CVodeGetNumRhsEvalsSens", 1);
+    flag = CVodeGetNumSensLinSolvSetups(cvode_mem, &nsetupsS);
+    check_flag(&flag, "CVodeGetNumSensLinSolvSetups", 1);
+    flag = CVodeGetNumSensErrTestFails(cvode_mem, &netfS);
+    check_flag(&flag, "CVodeGetNumSensErrTestFails", 1);
+    flag = CVodeGetNumSensNonlinSolvIters(cvode_mem, &nniS);
+    check_flag(&flag, "CVodeGetNumSensNonlinSolvIters", 1);
+    flag = CVodeGetNumSensNonlinSolvConvFails(cvode_mem, &ncfnS);
+    check_flag(&flag, "CVodeGetNumSensNonlinSolvConvFails", 1);
+  }
+
+  printf("\nFinal Statistics\n\n");
+  printf("nst     = %5ld\n\n", nst);
+  printf("nfe     = %5ld\n",   nfe);
+  printf("netf    = %5ld    nsetups  = %5ld\n", netf, nsetups);
+  printf("nni     = %5ld    ncfn     = %5ld\n", nni, ncfn);
+
+  if(sensi) {
+    printf("\n");
+    printf("nfSe    = %5ld    nfeS     = %5ld\n", nfSe, nfeS);
+    printf("netfs   = %5ld    nsetupsS = %5ld\n", netfS, nsetupsS);
+    printf("nniS    = %5ld    ncfnS    = %5ld\n", nniS, ncfnS);
+  }
+
+}
+
+/*
+ * Check function return value...
+ *   opt == 0 means SUNDIALS function allocates memory so check if
+ *            returned NULL pointer
+ *   opt == 1 means SUNDIALS function returns a flag so check if
+ *            flag >= 0
+ *   opt == 2 means function allocates memory so check if returned
+ *            NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, 
+            "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n", 
+            funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, 
+              "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n", 
+              funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, 
+            "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n", 
+            funcname);
+    return(1); }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfnx.out1 b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfnx.out1
new file mode 100644
index 0000000..5c05735
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfnx.out1
@@ -0,0 +1,69 @@
+
+1-D advection-diffusion equation, mesh size = 10
+Sensitivity: YES ( SIMULTANEOUS + FULL ERROR CONTROL )
+
+============================================================
+     T     Q       H      NST                    Max norm   
+============================================================
+5.000e-01  4  7.656e-03   115
+                                Solution         3.0529e+00 
+                                Sensitivity 1    3.8668e+00 
+                                Sensitivity 2    6.2020e-01 
+------------------------------------------------------------
+1.000e+00  4  9.525e-03   182
+                                Solution         8.7533e-01 
+                                Sensitivity 1    2.1743e+00 
+                                Sensitivity 2    1.8909e-01 
+------------------------------------------------------------
+1.500e+00  3  1.040e-02   255
+                                Solution         2.4949e-01 
+                                Sensitivity 1    9.1825e-01 
+                                Sensitivity 2    7.3922e-02 
+------------------------------------------------------------
+2.000e+00  2  1.271e-02   330
+                                Solution         7.1097e-02 
+                                Sensitivity 1    3.4667e-01 
+                                Sensitivity 2    2.8228e-02 
+------------------------------------------------------------
+2.500e+00  2  1.629e-02   402
+                                Solution         2.0260e-02 
+                                Sensitivity 1    1.2301e-01 
+                                Sensitivity 2    1.0085e-02 
+------------------------------------------------------------
+3.000e+00  2  3.820e-03   473
+                                Solution         5.7734e-03 
+                                Sensitivity 1    4.1956e-02 
+                                Sensitivity 2    3.4556e-03 
+------------------------------------------------------------
+3.500e+00  2  8.988e-03   540
+                                Solution         1.6451e-03 
+                                Sensitivity 1    1.3922e-02 
+                                Sensitivity 2    1.1669e-03 
+------------------------------------------------------------
+4.000e+00  2  1.199e-02   617
+                                Solution         4.6945e-04 
+                                Sensitivity 1    4.5300e-03 
+                                Sensitivity 2    3.8674e-04 
+------------------------------------------------------------
+4.500e+00  3  4.744e-03   680
+                                Solution         1.3422e-04 
+                                Sensitivity 1    1.4548e-03 
+                                Sensitivity 2    1.2589e-04 
+------------------------------------------------------------
+5.000e+00  1  4.010e-03   757
+                                Solution         3.8656e-05 
+                                Sensitivity 1    4.6451e-04 
+                                Sensitivity 2    4.0616e-05 
+------------------------------------------------------------
+
+Final Statistics
+
+nst     =   757
+
+nfe     =  1372
+netf    =     1    nsetups  =     0
+nni     =  1369    ncfn     =   117
+
+nfSe    =  2744    nfeS     =  5488
+netfs   =     0    nsetupsS =     0
+nniS    =     0    ncfnS    =     0
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfnx.out2 b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfnx.out2
new file mode 100644
index 0000000..af4d1a6
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvfnx.out2
@@ -0,0 +1,69 @@
+
+1-D advection-diffusion equation, mesh size = 10
+Sensitivity: YES ( STAGGERED + PARTIAL ERROR CONTROL )
+
+============================================================
+     T     Q       H      NST                    Max norm   
+============================================================
+5.000e-01  3  7.876e-03   115
+                                Solution         3.0529e+00 
+                                Sensitivity 1    3.8668e+00 
+                                Sensitivity 2    6.2020e-01 
+------------------------------------------------------------
+1.000e+00  3  1.145e-02   208
+                                Solution         8.7533e-01 
+                                Sensitivity 1    2.1743e+00 
+                                Sensitivity 2    1.8909e-01 
+------------------------------------------------------------
+1.500e+00  2  9.985e-03   287
+                                Solution         2.4948e-01 
+                                Sensitivity 1    9.1826e-01 
+                                Sensitivity 2    7.3913e-02 
+------------------------------------------------------------
+2.000e+00  2  4.223e-03   388
+                                Solution         7.1096e-02 
+                                Sensitivity 1    3.4667e-01 
+                                Sensitivity 2    2.8228e-02 
+------------------------------------------------------------
+2.500e+00  2  4.220e-03   507
+                                Solution         2.0261e-02 
+                                Sensitivity 1    1.2301e-01 
+                                Sensitivity 2    1.0085e-02 
+------------------------------------------------------------
+3.000e+00  2  4.220e-03   625
+                                Solution         5.7738e-03 
+                                Sensitivity 1    4.1957e-02 
+                                Sensitivity 2    3.4557e-03 
+------------------------------------------------------------
+3.500e+00  2  4.220e-03   744
+                                Solution         1.6454e-03 
+                                Sensitivity 1    1.3923e-02 
+                                Sensitivity 2    1.1670e-03 
+------------------------------------------------------------
+4.000e+00  2  4.220e-03   862
+                                Solution         4.6887e-04 
+                                Sensitivity 1    4.5282e-03 
+                                Sensitivity 2    3.8632e-04 
+------------------------------------------------------------
+4.500e+00  2  4.220e-03   981
+                                Solution         1.3364e-04 
+                                Sensitivity 1    1.4502e-03 
+                                Sensitivity 2    1.2546e-04 
+------------------------------------------------------------
+5.000e+00  2  4.220e-03  1099
+                                Solution         3.8105e-05 
+                                Sensitivity 1    4.5891e-04 
+                                Sensitivity 2    4.0166e-05 
+------------------------------------------------------------
+
+Final Statistics
+
+nst     =  1099
+
+nfe     =  3157
+netf    =     3    nsetups  =     0
+nni     =  1657    ncfn     =    11
+
+nfSe    =  4838    nfeS     =  9676
+netfs   =     0    nsetupsS =     0
+nniS    =  2418    ncfnS    =   398
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvkx.c b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvkx.c
new file mode 100644
index 0000000..9f7dd6e
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvkx.c
@@ -0,0 +1,659 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:34:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Example problem:
+ *
+ * An ODE system is generated from the following 2-species diurnal
+ * kinetics advection-diffusion PDE system in 2 space dimensions:
+ *
+ * dc(i)/dt = Kh*(d/dx)^2 c(i) + V*dc(i)/dx + (d/dy)(Kv(y)*dc(i)/dy)
+ *                 + Ri(c1,c2,t)      for i = 1,2,   where
+ *   R1(c1,c2,t) = -q1*c1*c3 - q2*c1*c2 + 2*q3(t)*c3 + q4(t)*c2 ,
+ *   R2(c1,c2,t) =  q1*c1*c3 - q2*c1*c2 - q4(t)*c2 ,
+ *   Kv(y) = Kv0*exp(y/5) ,
+ * Kh, V, Kv0, q1, q2, and c3 are constants, and q3(t) and q4(t)
+ * vary diurnally. The problem is posed on the square
+ *   0 <= x <= 20,    30 <= y <= 50   (all in km),
+ * with homogeneous Neumann boundary conditions, and for time t in
+ *   0 <= t <= 86400 sec (1 day).
+ * The PDE system is treated by central differences on a uniform
+ * 10 x 10 mesh, with simple polynomial initial profiles.
+ * The problem is solved with CVODES, with the BDF/GMRES
+ * method (i.e. using the CVSPGMR linear solver) and the
+ * block-diagonal part of the Newton matrix as a left
+ * preconditioner. A copy of the block-diagonal part of the
+ * Jacobian is saved and conditionally reused within the Precond
+ * routine.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "sundialstypes.h"  /* definitions of realtype, TRUE and FALSE     */
+#include "cvodes.h"         /* CVode* prototypes and various constants     */
+#include "cvspgmr.h"        /* prototypes & constants for CVSPGMR solver   */
+#include "smalldense.h"     /* use generic DENSE solver in preconditioning */
+#include "nvector_serial.h" /* definitions of type N_Vector and macro      */
+                            /* NV_DATA_S                                   */
+#include "sundialsmath.h"   /* contains SQR macro                          */
+
+/* Problem Constants */
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+#define TWO  RCONST(2.0)
+
+#define NUM_SPECIES  2                 /* number of species         */
+#define KH           RCONST(4.0e-6)    /* horizontal diffusivity Kh */
+#define VEL          RCONST(0.001)     /* advection velocity V      */
+#define KV0          RCONST(1.0e-8)    /* coefficient in Kv(y)      */
+#define Q1           RCONST(1.63e-16)  /* coefficients q1, q2, c3   */ 
+#define Q2           RCONST(4.66e-16)
+#define C3           RCONST(3.7e16)
+#define A3           RCONST(22.62)     /* coefficient in expression for q3(t) */
+#define A4           RCONST(7.601)     /* coefficient in expression for q4(t) */
+#define C1_SCALE     RCONST(1.0e6)     /* coefficients in initial profiles    */
+#define C2_SCALE     RCONST(1.0e12)
+
+#define T0           ZERO                 /* initial time */
+#define NOUT         12                   /* number of output times */
+#define TWOHR        RCONST(7200.0)       /* number of seconds in two hours  */
+#define HALFDAY      RCONST(4.32e4)       /* number of seconds in a half day */
+#define PI       RCONST(3.1415926535898)  /* pi */ 
+
+#define XMIN         ZERO                 /* grid boundaries in x  */
+#define XMAX         RCONST(20.0)           
+#define YMIN         RCONST(30.0)         /* grid boundaries in y  */
+#define YMAX         RCONST(50.0)
+#define XMID         RCONST(10.0)         /* grid midpoints in x,y */          
+#define YMID         RCONST(40.0)
+
+#define MX           10             /* MX = number of x mesh points */
+#define MY           10             /* MY = number of y mesh points */
+#define NSMX         20             /* NSMX = NUM_SPECIES*MX */
+#define MM           (MX*MY)        /* MM = MX*MY */
+
+/* CVodeMalloc Constants */
+
+#define RTOL    RCONST(1.0e-5)    /* scalar relative tolerance */
+#define FLOOR   RCONST(100.0)     /* value of C1 or C2 at which tolerances */
+                                  /* change from relative to absolute      */
+#define ATOL    (RTOL*FLOOR)      /* scalar absolute tolerance */
+#define NEQ     (NUM_SPECIES*MM)  /* NEQ = number of equations */
+
+/* User-defined vector and matrix accessor macros: IJKth, IJth */
+
+/* IJKth is defined in order to isolate the translation from the
+   mathematical 3-dimensional structure of the dependent variable vector
+   to the underlying 1-dimensional storage. IJth is defined in order to
+   write code which indexes into small dense matrices with a (row,column)
+   pair, where 1 <= row, column <= NUM_SPECIES.   
+   
+   IJKth(vdata,i,j,k) references the element in the vdata array for
+   species i at mesh point (j,k), where 1 <= i <= NUM_SPECIES,
+   0 <= j <= MX-1, 0 <= k <= MY-1. The vdata array is obtained via
+   the macro call vdata = NV_DATA_S(v), where v is an N_Vector. 
+   For each mesh point (j,k), the elements for species i and i+1 are
+   contiguous within vdata.
+
+   IJth(a,i,j) references the (i,j)th entry of the small matrix realtype **a,
+   where 1 <= i,j <= NUM_SPECIES. The small matrix routines in dense.h
+   work with matrices stored by column in a 2-dimensional array. In C,
+   arrays are indexed starting at 0, not 1. */
+
+#define IJKth(vdata,i,j,k) (vdata[i-1 + (j)*NUM_SPECIES + (k)*NSMX])
+#define IJth(a,i,j)        (a[j-1][i-1])
+
+/* Type : UserData 
+   contains preconditioner blocks, pivot arrays, and problem constants */
+
+typedef struct {
+  realtype **P[MX][MY], **Jbd[MX][MY];
+  long int *pivot[MX][MY];
+  realtype q4, om, dx, dy, hdco, haco, vdco;
+} *UserData;
+
+/* Private Helper Functions */
+
+static UserData AllocUserData(void);
+static void InitUserData(UserData data);
+static void FreeUserData(UserData data);
+static void SetInitialProfiles(N_Vector u, realtype dx, realtype dy);
+static void PrintOutput(void *cvode_mem, N_Vector u, realtype t);
+static void PrintFinalStats(void *cvode_mem);
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/* Functions Called by the Solver */
+
+static void f(realtype t, N_Vector u, N_Vector udot, void *f_data);
+
+static int Precond(realtype tn, N_Vector u, N_Vector fu,
+                   booleantype jok, booleantype *jcurPtr, realtype gamma,
+                   void *P_data, N_Vector vtemp1, N_Vector vtemp2,
+                   N_Vector vtemp3);
+
+static int PSolve(realtype tn, N_Vector u, N_Vector fu,
+                  N_Vector r, N_Vector z,
+                  realtype gamma, realtype delta,
+                  int lr, void *P_data, N_Vector vtemp);
+
+
+/*
+ *-------------------------------
+ * Main Program
+ *-------------------------------
+ */
+
+int main()
+{
+  realtype abstol, reltol, t, tout;
+  N_Vector u;
+  UserData data;
+  void *cvode_mem;
+  int iout, flag;
+
+  u = NULL;
+  data = NULL;
+  cvode_mem = NULL;
+
+  /* Allocate memory, and set problem data, initial values, tolerances */ 
+  u = N_VNew_Serial(NEQ);
+  if(check_flag((void *)u, "N_VNew_Serial", 0)) return(1);
+  data = AllocUserData();
+  if(check_flag((void *)data, "AllocUserData", 2)) return(1);
+  InitUserData(data);
+  SetInitialProfiles(u, data->dx, data->dy);
+  abstol=ATOL; 
+  reltol=RTOL;
+
+  /* Call CvodeCreate to create the solver memory 
+
+     CV_BDF     specifies the Backward Differentiation Formula
+     CV_NEWTON  specifies a Newton iteration
+
+     A pointer to the integrator memory is returned and stored in cvode_mem. */
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  /* Set the pointer to user-defined data */
+  flag = CVodeSetFdata(cvode_mem, data);
+  if(check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+
+  /* Call CVodeMalloc to initialize the integrator memory: 
+
+     f       is the user's right hand side function in u'=f(t,u)
+     T0      is the initial time
+     u       is the initial dependent variable vector
+     CV_SS   specifies scalar relative and absolute tolerances
+     reltol  is the relative tolerance
+     &abstol is a pointer to the scalar absolute tolerance      */
+  flag = CVodeMalloc(cvode_mem, f, T0, u, CV_SS, reltol, &abstol);
+  if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  /* Call CVSpgmr to specify the linear solver CVSPGMR 
+     with left preconditioning and the maximum Krylov dimension maxl */
+  flag = CVSpgmr(cvode_mem, PREC_LEFT, 0);
+  if(check_flag(&flag, "CVSpgmr", 1)) return(1);
+
+  /* Set modified Gram-Schmidt orthogonalization, preconditioner 
+     setup and solve routines Precond and PSolve, and the pointer 
+     to the user-defined block data */
+  flag = CVSpgmrSetGSType(cvode_mem, MODIFIED_GS);
+  if(check_flag(&flag, "CVSpgmrSetGSType", 1)) return(1);
+
+  flag = CVSpgmrSetPreconditioner(cvode_mem, Precond, PSolve, data);
+  if(check_flag(&flag, "CVSpgmrSetPreconditioner", 1)) return(1);
+
+  /* In loop over output points, call CVode, print results, test for error */
+  printf(" \n2-species diurnal advection-diffusion problem\n\n");
+  for (iout=1, tout = TWOHR; iout <= NOUT; iout++, tout += TWOHR) {
+    flag = CVode(cvode_mem, tout, u, &t, CV_NORMAL);
+    PrintOutput(cvode_mem, u, t);
+    if(check_flag(&flag, "CVode", 1)) break;
+  }
+
+  PrintFinalStats(cvode_mem);
+
+  /* Free memory */
+  N_VDestroy_Serial(u);
+  FreeUserData(data);
+  CVodeFree(cvode_mem);
+
+  return(0);
+}
+
+/*
+ *-------------------------------
+ * Private helper functions
+ *-------------------------------
+ */
+
+/* Allocate memory for data structure of type UserData */
+
+static UserData AllocUserData(void)
+{
+  int jx, jy;
+  UserData data;
+
+  data = (UserData) malloc(sizeof *data);
+
+  for (jx=0; jx < MX; jx++) {
+    for (jy=0; jy < MY; jy++) {
+      (data->P)[jx][jy] = denalloc(NUM_SPECIES);
+      (data->Jbd)[jx][jy] = denalloc(NUM_SPECIES);
+      (data->pivot)[jx][jy] = denallocpiv(NUM_SPECIES);
+    }
+  }
+
+  return(data);
+}
+
+/* Load problem constants in data */
+
+static void InitUserData(UserData data)
+{
+  data->om = PI/HALFDAY;
+  data->dx = (XMAX-XMIN)/(MX-1);
+  data->dy = (YMAX-YMIN)/(MY-1);
+  data->hdco = KH/SQR(data->dx);
+  data->haco = VEL/(TWO*data->dx);
+  data->vdco = (ONE/SQR(data->dy))*KV0;
+}
+
+/* Free data memory */
+
+static void FreeUserData(UserData data)
+{
+  int jx, jy;
+
+  for (jx=0; jx < MX; jx++) {
+    for (jy=0; jy < MY; jy++) {
+      denfree((data->P)[jx][jy]);
+      denfree((data->Jbd)[jx][jy]);
+      denfreepiv((data->pivot)[jx][jy]);
+    }
+  }
+
+  free(data);
+}
+
+/* Set initial conditions in u */
+
+static void SetInitialProfiles(N_Vector u, realtype dx, realtype dy)
+{
+  int jx, jy;
+  realtype x, y, cx, cy;
+  realtype *udata;
+
+  /* Set pointer to data array in vector u. */
+
+  udata = NV_DATA_S(u);
+
+  /* Load initial profiles of c1 and c2 into u vector */
+
+  for (jy=0; jy < MY; jy++) {
+    y = YMIN + jy*dy;
+    cy = SQR(RCONST(0.1)*(y - YMID));
+    cy = ONE - cy + RCONST(0.5)*SQR(cy);
+    for (jx=0; jx < MX; jx++) {
+      x = XMIN + jx*dx;
+      cx = SQR(RCONST(0.1)*(x - XMID));
+      cx = ONE - cx + RCONST(0.5)*SQR(cx);
+      IJKth(udata,1,jx,jy) = C1_SCALE*cx*cy; 
+      IJKth(udata,2,jx,jy) = C2_SCALE*cx*cy;
+    }
+  }
+}
+
+/* Print current t, step count, order, stepsize, and sampled c1,c2 values */
+
+static void PrintOutput(void *cvode_mem, N_Vector u, realtype t)
+{
+  long int nst;
+  int qu, flag;
+  realtype hu, *udata;
+  int mxh = MX/2 - 1, myh = MY/2 - 1, mx1 = MX - 1, my1 = MY - 1;
+
+  udata = NV_DATA_S(u);
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetLastOrder(cvode_mem, &qu);
+  check_flag(&flag, "CVodeGetLastOrder", 1);
+  flag = CVodeGetLastStep(cvode_mem, &hu);
+  check_flag(&flag, "CVodeGetLastStep", 1);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("t = %.2Le   no. steps = %ld   order = %d   stepsize = %.2Le\n",
+         t, nst, qu, hu);
+  printf("c1 (bot.left/middle/top rt.) = %12.3Le  %12.3Le  %12.3Le\n",
+         IJKth(udata,1,0,0), IJKth(udata,1,mxh,myh), IJKth(udata,1,mx1,my1));
+  printf("c2 (bot.left/middle/top rt.) = %12.3Le  %12.3Le  %12.3Le\n\n",
+         IJKth(udata,2,0,0), IJKth(udata,2,mxh,myh), IJKth(udata,2,mx1,my1));
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("t = %.2le   no. steps = %ld   order = %d   stepsize = %.2le\n",
+         t, nst, qu, hu);
+  printf("c1 (bot.left/middle/top rt.) = %12.3le  %12.3le  %12.3le\n",
+         IJKth(udata,1,0,0), IJKth(udata,1,mxh,myh), IJKth(udata,1,mx1,my1));
+  printf("c2 (bot.left/middle/top rt.) = %12.3le  %12.3le  %12.3le\n\n",
+         IJKth(udata,2,0,0), IJKth(udata,2,mxh,myh), IJKth(udata,2,mx1,my1));
+#else
+  printf("t = %.2e   no. steps = %ld   order = %d   stepsize = %.2e\n",
+         t, nst, qu, hu);
+  printf("c1 (bot.left/middle/top rt.) = %12.3e  %12.3e  %12.3e\n",
+         IJKth(udata,1,0,0), IJKth(udata,1,mxh,myh), IJKth(udata,1,mx1,my1));
+  printf("c2 (bot.left/middle/top rt.) = %12.3e  %12.3e  %12.3e\n\n",
+         IJKth(udata,2,0,0), IJKth(udata,2,mxh,myh), IJKth(udata,2,mx1,my1));
+#endif
+}
+
+/* Get and print final statistics */
+
+static void PrintFinalStats(void *cvode_mem)
+{
+  long int lenrw, leniw ;
+  long int lenrwSPGMR, leniwSPGMR;
+  long int nst, nfe, nsetups, nni, ncfn, netf;
+  long int nli, npe, nps, ncfl, nfeSPGMR;
+  int flag;
+
+  flag = CVodeGetWorkSpace(cvode_mem, &lenrw, &leniw);
+  check_flag(&flag, "CVodeGetWorkSpace", 1);
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  flag = CVSpgmrGetWorkSpace(cvode_mem, &lenrwSPGMR, &leniwSPGMR);
+  check_flag(&flag, "CVSpgmrGetWorkSpace", 1);
+  flag = CVSpgmrGetNumLinIters(cvode_mem, &nli);
+  check_flag(&flag, "CVSpgmrGetNumLinIters", 1);
+  flag = CVSpgmrGetNumPrecEvals(cvode_mem, &npe);
+  check_flag(&flag, "CVSpgmrGetNumPrecEvals", 1);
+  flag = CVSpgmrGetNumPrecSolves(cvode_mem, &nps);
+  check_flag(&flag, "CVSpgmrGetNumPrecSolves", 1);
+  flag = CVSpgmrGetNumConvFails(cvode_mem, &ncfl);
+  check_flag(&flag, "CVSpgmrGetNumConvFails", 1);
+  flag = CVSpgmrGetNumRhsEvals(cvode_mem, &nfeSPGMR);
+  check_flag(&flag, "CVSpgmrGetNumRhsEvals", 1);
+
+  printf("\nFinal Statistics.. \n\n");
+  printf("lenrw   = %5ld     leniw = %5ld\n", lenrw, leniw);
+  printf("llrw    = %5ld     lliw  = %5ld\n", lenrwSPGMR, leniwSPGMR);
+  printf("nst     = %5ld\n"                  , nst);
+  printf("nfe     = %5ld     nfel  = %5ld\n"  , nfe, nfeSPGMR);
+  printf("nni     = %5ld     nli   = %5ld\n"  , nni, nli);
+  printf("nsetups = %5ld     netf  = %5ld\n"  , nsetups, netf);
+  printf("npe     = %5ld     nps   = %5ld\n"  , npe, nps);
+  printf("ncfn    = %5ld     ncfl  = %5ld\n\n", ncfn, ncfl);
+}
+
+/* Check function return value...
+     opt == 0 means SUNDIALS function allocates memory so check if
+              returned NULL pointer
+     opt == 1 means SUNDIALS function returns a flag so check if
+              flag >= 0
+     opt == 2 means function allocates memory so check if returned
+              NULL pointer */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+              funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  return(0);
+}
+
+/*
+ *-------------------------------
+ * Functions called by the solver
+ *-------------------------------
+ */
+
+/* f routine. Compute RHS function f(t,u). */
+
+static void f(realtype t, N_Vector u, N_Vector udot, void *f_data)
+{
+  realtype q3, c1, c2, c1dn, c2dn, c1up, c2up, c1lt, c2lt;
+  realtype c1rt, c2rt, cydn, cyup, hord1, hord2, horad1, horad2;
+  realtype qq1, qq2, qq3, qq4, rkin1, rkin2, s, vertd1, vertd2, ydn, yup;
+  realtype q4coef, dely, verdco, hordco, horaco;
+  realtype *udata, *dudata;
+  int jx, jy, idn, iup, ileft, iright;
+  UserData data;
+
+  data = (UserData) f_data;
+  udata = NV_DATA_S(u);
+  dudata = NV_DATA_S(udot);
+
+  /* Set diurnal rate coefficients. */
+
+  s = sin(data->om*t);
+  if (s > ZERO) {
+    q3 = exp(-A3/s);
+    data->q4 = exp(-A4/s);
+  } else {
+      q3 = ZERO;
+      data->q4 = ZERO;
+  }
+
+  /* Make local copies of problem variables, for efficiency. */
+
+  q4coef = data->q4;
+  dely = data->dy;
+  verdco = data->vdco;
+  hordco  = data->hdco;
+  horaco  = data->haco;
+
+  /* Loop over all grid points. */
+
+  for (jy=0; jy < MY; jy++) {
+
+    /* Set vertical diffusion coefficients at jy +- 1/2 */
+
+    ydn = YMIN + (jy - RCONST(0.5))*dely;
+    yup = ydn + dely;
+    cydn = verdco*exp(RCONST(0.2)*ydn);
+    cyup = verdco*exp(RCONST(0.2)*yup);
+    idn = (jy == 0) ? 1 : -1;
+    iup = (jy == MY-1) ? -1 : 1;
+    for (jx=0; jx < MX; jx++) {
+
+      /* Extract c1 and c2, and set kinetic rate terms. */
+
+      c1 = IJKth(udata,1,jx,jy); 
+      c2 = IJKth(udata,2,jx,jy);
+      qq1 = Q1*c1*C3;
+      qq2 = Q2*c1*c2;
+      qq3 = q3*C3;
+      qq4 = q4coef*c2;
+      rkin1 = -qq1 - qq2 + TWO*qq3 + qq4;
+      rkin2 = qq1 - qq2 - qq4;
+
+      /* Set vertical diffusion terms. */
+
+      c1dn = IJKth(udata,1,jx,jy+idn);
+      c2dn = IJKth(udata,2,jx,jy+idn);
+      c1up = IJKth(udata,1,jx,jy+iup);
+      c2up = IJKth(udata,2,jx,jy+iup);
+      vertd1 = cyup*(c1up - c1) - cydn*(c1 - c1dn);
+      vertd2 = cyup*(c2up - c2) - cydn*(c2 - c2dn);
+
+      /* Set horizontal diffusion and advection terms. */
+
+      ileft = (jx == 0) ? 1 : -1;
+      iright =(jx == MX-1) ? -1 : 1;
+      c1lt = IJKth(udata,1,jx+ileft,jy); 
+      c2lt = IJKth(udata,2,jx+ileft,jy);
+      c1rt = IJKth(udata,1,jx+iright,jy);
+      c2rt = IJKth(udata,2,jx+iright,jy);
+      hord1 = hordco*(c1rt - TWO*c1 + c1lt);
+      hord2 = hordco*(c2rt - TWO*c2 + c2lt);
+      horad1 = horaco*(c1rt - c1lt);
+      horad2 = horaco*(c2rt - c2lt);
+
+      /* Load all terms into udot. */
+
+      IJKth(dudata, 1, jx, jy) = vertd1 + hord1 + horad1 + rkin1; 
+      IJKth(dudata, 2, jx, jy) = vertd2 + hord2 + horad2 + rkin2;
+    }
+  }
+
+}
+
+/* Preconditioner setup routine. Generate and preprocess P. */
+
+static int Precond(realtype tn, N_Vector u, N_Vector fu,
+                   booleantype jok, booleantype *jcurPtr, realtype gamma,
+                   void *P_data, N_Vector vtemp1, N_Vector vtemp2,
+                   N_Vector vtemp3)
+{
+  realtype c1, c2, cydn, cyup, diag, ydn, yup, q4coef, dely, verdco, hordco;
+  realtype **(*P)[MY], **(*Jbd)[MY];
+  long int *(*pivot)[MY], ier;
+  int jx, jy;
+  realtype *udata, **a, **j;
+  UserData data;
+  
+  /* Make local copies of pointers in P_data, and of pointer to u's data */
+  
+  data = (UserData) P_data;
+  P = data->P;
+  Jbd = data->Jbd;
+  pivot = data->pivot;
+  udata = NV_DATA_S(u);
+  
+  if (jok) {
+    
+    /* jok = TRUE: Copy Jbd to P */
+    
+    for (jy=0; jy < MY; jy++)
+      for (jx=0; jx < MX; jx++)
+        dencopy(Jbd[jx][jy], P[jx][jy], NUM_SPECIES);
+    
+    *jcurPtr = FALSE;
+    
+  }
+  
+  else {
+    /* jok = FALSE: Generate Jbd from scratch and copy to P */
+    
+    /* Make local copies of problem variables, for efficiency. */
+    
+    q4coef = data->q4;
+    dely = data->dy;
+    verdco = data->vdco;
+    hordco  = data->hdco;
+    
+    /* Compute 2x2 diagonal Jacobian blocks (using q4 values 
+       computed on the last f call).  Load into P. */
+    
+    for (jy=0; jy < MY; jy++) {
+      ydn = YMIN + (jy - RCONST(0.5))*dely;
+      yup = ydn + dely;
+      cydn = verdco*exp(RCONST(0.2)*ydn);
+      cyup = verdco*exp(RCONST(0.2)*yup);
+      diag = -(cydn + cyup + TWO*hordco);
+      for (jx=0; jx < MX; jx++) {
+        c1 = IJKth(udata,1,jx,jy);
+        c2 = IJKth(udata,2,jx,jy);
+        j = Jbd[jx][jy];
+        a = P[jx][jy];
+        IJth(j,1,1) = (-Q1*C3 - Q2*c2) + diag;
+        IJth(j,1,2) = -Q2*c1 + q4coef;
+        IJth(j,2,1) = Q1*C3 - Q2*c2;
+        IJth(j,2,2) = (-Q2*c1 - q4coef) + diag;
+        dencopy(j, a, NUM_SPECIES);
+      }
+    }
+    
+    *jcurPtr = TRUE;
+    
+  }
+  
+  /* Scale by -gamma */
+  
+  for (jy=0; jy < MY; jy++)
+    for (jx=0; jx < MX; jx++)
+      denscale(-gamma, P[jx][jy], NUM_SPECIES);
+  
+  /* Add identity matrix and do LU decompositions on blocks in place. */
+  
+  for (jx=0; jx < MX; jx++) {
+    for (jy=0; jy < MY; jy++) {
+      denaddI(P[jx][jy], NUM_SPECIES);
+      ier = gefa(P[jx][jy], NUM_SPECIES, pivot[jx][jy]);
+      if (ier != 0) return(1);
+    }
+  }
+  
+  return(0);
+}
+
+/* Preconditioner solve routine */
+
+static int PSolve(realtype tn, N_Vector u, N_Vector fu,
+                  N_Vector r, N_Vector z,
+                  realtype gamma, realtype delta,
+                  int lr, void *P_data, N_Vector vtemp)
+{
+  realtype **(*P)[MY];
+  long int *(*pivot)[MY];
+  int jx, jy;
+  realtype *zdata, *v;
+  UserData data;
+
+  /* Extract the P and pivot arrays from P_data. */
+
+  data = (UserData) P_data;
+  P = data->P;
+  pivot = data->pivot;
+  zdata = NV_DATA_S(z);
+  
+  N_VScale(ONE, r, z);
+  
+  /* Solve the block-diagonal system Px = r using LU factors stored
+     in P and pivot data in pivot, and return the solution in z. */
+  
+  for (jx=0; jx < MX; jx++) {
+    for (jy=0; jy < MY; jy++) {
+      v = &(IJKth(zdata, 1, jx, jy));
+      gesl(P[jx][jy], NUM_SPECIES, pivot[jx][jy], v);
+    }
+  }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvkx.out b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvkx.out
new file mode 100644
index 0000000..9cb78c0
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvkx.out
@@ -0,0 +1,63 @@
+ 
+2-species diurnal advection-diffusion problem
+
+t = 7.20e+03   no. steps = 219   order = 5   stepsize = 1.59e+02
+c1 (bot.left/middle/top rt.) =    1.047e+04     2.964e+04     1.119e+04
+c2 (bot.left/middle/top rt.) =    2.527e+11     7.154e+11     2.700e+11
+
+t = 1.44e+04   no. steps = 251   order = 5   stepsize = 3.77e+02
+c1 (bot.left/middle/top rt.) =    6.659e+06     5.316e+06     7.301e+06
+c2 (bot.left/middle/top rt.) =    2.582e+11     2.057e+11     2.833e+11
+
+t = 2.16e+04   no. steps = 277   order = 5   stepsize = 2.75e+02
+c1 (bot.left/middle/top rt.) =    2.665e+07     1.036e+07     2.931e+07
+c2 (bot.left/middle/top rt.) =    2.993e+11     1.028e+11     3.313e+11
+
+t = 2.88e+04   no. steps = 301   order = 5   stepsize = 3.72e+02
+c1 (bot.left/middle/top rt.) =    8.702e+06     1.292e+07     9.650e+06
+c2 (bot.left/middle/top rt.) =    3.380e+11     5.029e+11     3.751e+11
+
+t = 3.60e+04   no. steps = 329   order = 5   stepsize = 8.62e+01
+c1 (bot.left/middle/top rt.) =    1.404e+04     2.029e+04     1.561e+04
+c2 (bot.left/middle/top rt.) =    3.387e+11     4.894e+11     3.765e+11
+
+t = 4.32e+04   no. steps = 386   order = 4   stepsize = 4.03e+02
+c1 (bot.left/middle/top rt.) =   -2.083e-07    -6.285e-07    -2.237e-07
+c2 (bot.left/middle/top rt.) =    3.382e+11     1.355e+11     3.804e+11
+
+t = 5.04e+04   no. steps = 399   order = 5   stepsize = 4.22e+02
+c1 (bot.left/middle/top rt.) =   -5.968e-09     5.891e-07    -9.151e-09
+c2 (bot.left/middle/top rt.) =    3.358e+11     4.930e+11     3.864e+11
+
+t = 5.76e+04   no. steps = 416   order = 4   stepsize = 1.05e+02
+c1 (bot.left/middle/top rt.) =    8.838e-08    -1.508e-06     1.409e-07
+c2 (bot.left/middle/top rt.) =    3.320e+11     9.650e+11     3.909e+11
+
+t = 6.48e+04   no. steps = 432   order = 4   stepsize = 5.14e+02
+c1 (bot.left/middle/top rt.) =    7.999e-11    -2.155e-09     1.308e-10
+c2 (bot.left/middle/top rt.) =    3.313e+11     8.922e+11     3.963e+11
+
+t = 7.20e+04   no. steps = 446   order = 4   stepsize = 5.14e+02
+c1 (bot.left/middle/top rt.) =    7.272e-15    -1.817e-13     1.188e-14
+c2 (bot.left/middle/top rt.) =    3.330e+11     6.186e+11     4.039e+11
+
+t = 7.92e+04   no. steps = 460   order = 4   stepsize = 5.14e+02
+c1 (bot.left/middle/top rt.) =    4.110e-18    -2.359e-14     6.131e-18
+c2 (bot.left/middle/top rt.) =    3.334e+11     6.669e+11     4.120e+11
+
+t = 8.64e+04   no. steps = 474   order = 4   stepsize = 5.14e+02
+c1 (bot.left/middle/top rt.) =    7.647e-19     1.346e-14    -1.473e-17
+c2 (bot.left/middle/top rt.) =    3.352e+11     9.108e+11     4.163e+11
+
+
+Final Statistics.. 
+
+lenrw   =  2000     leniw =    10
+llrw    =  2046     lliw  =    10
+nst     =   474
+nfe     =   610     nfel  =   649
+nni     =   607     nli   =   649
+nsetups =    78     netf  =    27
+npe     =     8     nps   =  1204
+ncfn    =     0     ncfl  =     0
+
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvkxb.c b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvkxb.c
new file mode 100644
index 0000000..f74372c
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvkxb.c
@@ -0,0 +1,534 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:34:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @LLNL
+ * -----------------------------------------------------------------
+ * Example problem:
+ *
+ * An ODE system is generated from the following 2-species diurnal
+ * kinetics advection-diffusion PDE system in 2 space dimensions:
+ *
+ * dc(i)/dt = Kh*(d/dx)^2 c(i) + V*dc(i)/dx + (d/dy)(Kv(y)*dc(i)/dy)
+ *                 + Ri(c1,c2,t)      for i = 1,2,   where
+ *   R1(c1,c2,t) = -q1*c1*c3 - q2*c1*c2 + 2*q3(t)*c3 + q4(t)*c2 ,
+ *   R2(c1,c2,t) =  q1*c1*c3 - q2*c1*c2 - q4(t)*c2 ,
+ *   Kv(y) = Kv0*exp(y/5) ,
+ * Kh, V, Kv0, q1, q2, and c3 are constants, and q3(t) and q4(t)
+ * vary diurnally. The problem is posed on the square
+ *   0 <= x <= 20,    30 <= y <= 50   (all in km),
+ * with homogeneous Neumann boundary conditions, and for time t in
+ *   0 <= t <= 86400 sec (1 day).
+ * The PDE system is treated by central differences on a uniform
+ * 10 x 10 mesh, with simple polynomial initial profiles.
+ * The problem is solved with CVODES, with the BDF/GMRES
+ * method (i.e. using the CVSPGMR linear solver) and a banded
+ * preconditioner, generated by difference quotients, using the
+ * module CVBANDPRE. The problem is solved with left and right
+ * preconditioning.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "sundialstypes.h"  /* definition of realtype                      */
+#include "cvodes.h"         /* CVode* prototypes and various constants     */
+#include "cvspgmr.h"        /* prototypes & constants for CVSPGMR solver   */
+#include "cvbandpre.h"      /* prototypes & constants for CVBANDPRE module */
+#include "smalldense.h"     /* use generic DENSE solver in preconditioning */
+#include "nvector_serial.h" /* definitions of type N_Vector and macro      */
+                            /* NV_DATA_S                                   */
+#include "sundialsmath.h"   /* contains SQR macro                          */
+
+
+/* Problem Constants */
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+#define TWO  RCONST(2.0)
+
+#define NUM_SPECIES  2                 /* number of species         */
+#define KH           RCONST(4.0e-6)    /* horizontal diffusivity Kh */
+#define VEL          RCONST(0.001)     /* advection velocity V      */
+#define KV0          RCONST(1.0e-8)    /* coefficient in Kv(y)      */
+#define Q1           RCONST(1.63e-16)  /* coefficients q1, q2, c3   */ 
+#define Q2           RCONST(4.66e-16)
+#define C3           RCONST(3.7e16)
+#define A3           RCONST(22.62)     /* coefficient in expression for q3(t) */
+#define A4           RCONST(7.601)     /* coefficient in expression for q4(t) */
+#define C1_SCALE     RCONST(1.0e6)     /* coefficients in initial profiles    */
+#define C2_SCALE     RCONST(1.0e12)
+
+#define T0           ZERO                /* initial time */
+#define NOUT         12                  /* number of output times */
+#define TWOHR        RCONST(7200.0)      /* number of seconds in two hours  */
+#define HALFDAY      RCONST(4.32e4)      /* number of seconds in a half day */
+#define PI       RCONST(3.1415926535898) /* pi */ 
+
+#define XMIN         ZERO                /* grid boundaries in x  */
+#define XMAX         RCONST(20.0)           
+#define YMIN         RCONST(30.0)        /* grid boundaries in y  */
+#define YMAX         RCONST(50.0)
+#define XMID         RCONST(10.0)        /* grid midpoints in x,y */          
+#define YMID         RCONST(40.0)
+
+#define MX           10             /* MX = number of x mesh points */
+#define MY           10             /* MY = number of y mesh points */
+#define NSMX         20             /* NSMX = NUM_SPECIES*MX */
+#define MM           (MX*MY)        /* MM = MX*MY */
+
+/* CVodeMalloc Constants */
+
+#define RTOL    RCONST(1.0e-5)   /* scalar relative tolerance */
+#define FLOOR   RCONST(100.0)    /* value of C1 or C2 at which tolerances */
+                                 /* change from relative to absolute      */
+#define ATOL    (RTOL*FLOOR)     /* scalar absolute tolerance */
+#define NEQ     (NUM_SPECIES*MM) /* NEQ = number of equations */
+
+/* User-defined vector and matrix accessor macros: IJKth, IJth */
+
+/* IJKth is defined in order to isolate the translation from the
+   mathematical 3-dimensional structure of the dependent variable vector
+   to the underlying 1-dimensional storage. IJth is defined in order to
+   write code which indexes into small dense matrices with a (row,column)
+   pair, where 1 <= row, column <= NUM_SPECIES.   
+   
+   IJKth(vdata,i,j,k) references the element in the vdata array for
+   species i at mesh point (j,k), where 1 <= i <= NUM_SPECIES,
+   0 <= j <= MX-1, 0 <= k <= MY-1. The vdata array is obtained via
+   the macro call vdata = NV_DATA_S(v), where v is an N_Vector. 
+   For each mesh point (j,k), the elements for species i and i+1 are
+   contiguous within vdata.
+
+   IJth(a,i,j) references the (i,j)th entry of the small matrix realtype **a,
+   where 1 <= i,j <= NUM_SPECIES. The small matrix routines in dense.h
+   work with matrices stored by column in a 2-dimensional array. In C,
+   arrays are indexed starting at 0, not 1. */
+
+#define IJKth(vdata,i,j,k) (vdata[i-1 + (j)*NUM_SPECIES + (k)*NSMX])
+#define IJth(a,i,j)        (a[j-1][i-1])
+
+/* Type : UserData 
+   contains preconditioner blocks, pivot arrays, and problem constants */
+
+typedef struct {
+  realtype q4, om, dx, dy, hdco, haco, vdco;
+} *UserData;
+
+/* Private Helper Functions */
+
+static void InitUserData(UserData data);
+static void SetInitialProfiles(N_Vector u, realtype dx, realtype dy);
+static void PrintIntro(int mu, int ml);
+static void PrintOutput(void *cvode_mem, N_Vector u, realtype t);
+static void PrintFinalStats(void *cvode_mem, void *bpdata);
+
+/* Private function to check function return values */
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/* Function Called by the Solver */
+
+static void f(realtype t, N_Vector u, N_Vector udot, void *f_data);
+
+/*
+ *-------------------------------
+ * Main Program
+ *-------------------------------
+ */
+
+int main()
+{
+  realtype abstol, reltol, t, tout;
+  N_Vector u;
+  UserData data;
+  void *bpdata;
+  void *cvode_mem;
+  int flag, ml, mu, iout, jpre;
+
+  u = NULL;
+  data = NULL;
+  bpdata = cvode_mem = NULL;
+
+  /* Allocate and initialize u, and set problem data and tolerances */ 
+  u = N_VNew_Serial(NEQ);
+  if(check_flag((void *)u, "N_VNew_Serial", 0)) return(1);
+  data = (UserData) malloc(sizeof *data);
+  if(check_flag((void *)data, "malloc", 2)) return(1);
+  InitUserData(data);
+  SetInitialProfiles(u, data->dx, data->dy);
+  abstol = ATOL; 
+  reltol = RTOL;
+
+  /* Call CvodeCreate to create the solver memory 
+
+     CV_BDF     specifies the Backward Differentiation Formula
+     CV_NEWTON  specifies a Newton iteration
+
+     A pointer to the integrator memory is returned and stored in cvode_mem. */
+  cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
+  if(check_flag((void *)cvode_mem, "CVodeCreate", 0)) return(1);
+
+  /* Set the pointer to user-defined data */
+  flag = CVodeSetFdata(cvode_mem, data);
+  if(check_flag(&flag, "CVodeSetFdata", 1)) return(1);
+
+  /* Call CVodeMalloc to initialize the integrator memory: 
+     f       is the user's right hand side function in u'=f(t,u)
+     T0      is the initial time
+     u       is the initial dependent variable vector
+     CV_SS   specifies scalar relative and absolute tolerances
+     reltol  is the relative tolerance
+     &abstol is a  pointer to the scalar absolutetolerance      */
+  flag = CVodeMalloc(cvode_mem, f, T0, u, CV_SS, reltol, &abstol);
+  if(check_flag(&flag, "CVodeMalloc", 1)) return(1);
+
+  /* Call CVBandPreAlloc to initialize band preconditioner */
+  ml = mu = 2;
+  bpdata = CVBandPrecAlloc (cvode_mem, NEQ, mu, ml);
+  if(check_flag((void *)bpdata, "CVBandPrecAlloc", 0)) return(1);
+
+  /* Call CVBPSpgmr to specify the linear solver CVSPGMR 
+     with left preconditioning and the maximum Krylov dimension maxl */
+  flag = CVBPSpgmr(cvode_mem, PREC_LEFT, 0, bpdata);
+  if(check_flag(&flag, "CVBPSpgmr", 1)) return(1);
+
+  PrintIntro(mu, ml);
+
+  /* Loop over jpre (= PREC_LEFT, PREC_RIGHT), and solve the problem */
+
+  for (jpre = PREC_LEFT; jpre <= PREC_RIGHT; jpre++) {
+    
+    /* On second run, re-initialize u, the solver, and CVSPGMR */
+    
+    if (jpre == PREC_RIGHT) {
+      
+      SetInitialProfiles(u, data->dx, data->dy);
+      
+      flag = CVodeReInit(cvode_mem, f, T0, u, CV_SS, reltol, &abstol);
+      if(check_flag(&flag, "CVodeReInit", 1)) return(1);
+
+      flag = CVSpgmrSetPrecType(cvode_mem, PREC_RIGHT);
+      check_flag(&flag, "CVSpgmrSetPrecType", 1);
+      
+      printf("\n\n-------------------------------------------------------");
+      printf("------------\n");
+    }
+    
+    printf("\n\nPreconditioner type is:  jpre = %s\n\n",
+           (jpre == PREC_LEFT) ? "PREC_LEFT" : "PREC_RIGHT");
+    
+    /* In loop over output points, call CVode, print results, test for error */
+    
+    for (iout = 1, tout = TWOHR; iout <= NOUT; iout++, tout += TWOHR) {
+      flag = CVode(cvode_mem, tout, u, &t, CV_NORMAL);
+      check_flag(&flag, "CVode", 1);
+      PrintOutput(cvode_mem, u, t);
+      if (flag != CV_SUCCESS) {
+        break;
+      }
+    }
+    
+    /* Print final statistics */
+    
+    PrintFinalStats(cvode_mem, bpdata);
+    
+  } /* End of jpre loop */
+
+  /* Free memory */
+  N_VDestroy_Serial(u);
+  free(data);
+  CVBandPrecFree(bpdata);
+  CVodeFree(cvode_mem);
+
+  return(0);
+}
+
+/*
+ *-------------------------------
+ * Private helper functions
+ *-------------------------------
+ */
+
+/* Load problem constants in data */
+
+static void InitUserData(UserData data)
+{
+  data->om = PI/HALFDAY;
+  data->dx = (XMAX-XMIN)/(MX-1);
+  data->dy = (YMAX-YMIN)/(MY-1);
+  data->hdco = KH/SQR(data->dx);
+  data->haco = VEL/(TWO*data->dx);
+  data->vdco = (ONE/SQR(data->dy))*KV0;
+}
+
+/* Set initial conditions in u */
+
+static void SetInitialProfiles(N_Vector u, realtype dx, realtype dy)
+{
+  int jx, jy;
+  realtype x, y, cx, cy;
+  realtype *udata;
+
+  /* Set pointer to data array in vector u. */
+
+  udata = NV_DATA_S(u);
+
+  /* Load initial profiles of c1 and c2 into u vector */
+
+  for (jy = 0; jy < MY; jy++) {
+    y = YMIN + jy*dy;
+    cy = SQR(RCONST(0.1)*(y - YMID));
+    cy = ONE - cy + RCONST(0.5)*SQR(cy);
+    for (jx = 0; jx < MX; jx++) {
+      x = XMIN + jx*dx;
+      cx = SQR(RCONST(0.1)*(x - XMID));
+      cx = ONE - cx + RCONST(0.5)*SQR(cx);
+      IJKth(udata,1,jx,jy) = C1_SCALE*cx*cy; 
+      IJKth(udata,2,jx,jy) = C2_SCALE*cx*cy;
+    }
+  }
+}
+
+static void PrintIntro(int mu, int ml)
+{
+  printf("2-species diurnal advection-diffusion problem, %d by %d mesh\n",
+         MX, MY);
+  printf("SPGMR solver; band preconditioner; mu = %d, ml = %d\n\n",
+         mu, ml);
+
+  return;
+}
+
+/* Print current t, step count, order, stepsize, and sampled c1,c2 values */
+
+static void PrintOutput(void *cvode_mem, N_Vector u,realtype t)
+{
+  long int nst;
+  int qu, flag;
+  realtype hu, *udata;
+  int mxh = MX/2 - 1, myh = MY/2 - 1, mx1 = MX - 1, my1 = MY - 1;
+
+  udata = NV_DATA_S(u);
+
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetLastOrder(cvode_mem, &qu);
+  check_flag(&flag, "CVodeGetLastOrder", 1);
+  flag = CVodeGetLastStep(cvode_mem, &hu);
+  check_flag(&flag, "CVodeGetLastStep", 1);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("t = %.2Le   no. steps = %ld   order = %d   stepsize = %.2Le\n",
+         t, nst, qu, hu);
+  printf("c1 (bot.left/middle/top rt.) = %12.3Le  %12.3Le  %12.3Le\n",
+         IJKth(udata,1,0,0), IJKth(udata,1,mxh,myh), IJKth(udata,1,mx1,my1));
+  printf("c2 (bot.left/middle/top rt.) = %12.3Le  %12.3Le  %12.3Le\n\n",
+         IJKth(udata,2,0,0), IJKth(udata,2,mxh,myh), IJKth(udata,2,mx1,my1));
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("t = %.2le   no. steps = %ld   order = %d   stepsize = %.2le\n",
+         t, nst, qu, hu);
+  printf("c1 (bot.left/middle/top rt.) = %12.3le  %12.3le  %12.3le\n",
+         IJKth(udata,1,0,0), IJKth(udata,1,mxh,myh), IJKth(udata,1,mx1,my1));
+  printf("c2 (bot.left/middle/top rt.) = %12.3le  %12.3le  %12.3le\n\n",
+         IJKth(udata,2,0,0), IJKth(udata,2,mxh,myh), IJKth(udata,2,mx1,my1));
+#else
+  printf("t = %.2e   no. steps = %ld   order = %d   stepsize = %.2e\n",
+         t, nst, qu, hu);
+  printf("c1 (bot.left/middle/top rt.) = %12.3e  %12.3e  %12.3e\n",
+         IJKth(udata,1,0,0), IJKth(udata,1,mxh,myh), IJKth(udata,1,mx1,my1));
+  printf("c2 (bot.left/middle/top rt.) = %12.3e  %12.3e  %12.3e\n\n",
+         IJKth(udata,2,0,0), IJKth(udata,2,mxh,myh), IJKth(udata,2,mx1,my1));
+#endif
+}
+
+/* Get and print final statistics */
+
+static void PrintFinalStats(void *cvode_mem, void *bpdata)
+{
+  long int lenrw, leniw ;
+  long int lenrwSPGMR, leniwSPGMR;
+  long int lenrwBP, leniwBP;
+  long int nst, nfe, nsetups, nni, ncfn, netf;
+  long int nli, npe, nps, ncfl, nfeSPGMR;
+  long int nfeBP;
+  int flag;
+
+  flag = CVodeGetWorkSpace(cvode_mem, &lenrw, &leniw);
+  check_flag(&flag, "CVodeGetWorkSpace", 1);
+  flag = CVodeGetNumSteps(cvode_mem, &nst);
+  check_flag(&flag, "CVodeGetNumSteps", 1);
+  flag = CVodeGetNumRhsEvals(cvode_mem, &nfe);
+  check_flag(&flag, "CVodeGetNumRhsEvals", 1);
+  flag = CVodeGetNumLinSolvSetups(cvode_mem, &nsetups);
+  check_flag(&flag, "CVodeGetNumLinSolvSetups", 1);
+  flag = CVodeGetNumErrTestFails(cvode_mem, &netf);
+  check_flag(&flag, "CVodeGetNumErrTestFails", 1);
+  flag = CVodeGetNumNonlinSolvIters(cvode_mem, &nni);
+  check_flag(&flag, "CVodeGetNumNonlinSolvIters", 1);
+  flag = CVodeGetNumNonlinSolvConvFails(cvode_mem, &ncfn);
+  check_flag(&flag, "CVodeGetNumNonlinSolvConvFails", 1);
+
+  flag = CVSpgmrGetWorkSpace(cvode_mem, &lenrwSPGMR, &leniwSPGMR);
+  check_flag(&flag, "CVSpgmrGetWorkSpace", 1);
+  flag = CVSpgmrGetNumLinIters(cvode_mem, &nli);
+  check_flag(&flag, "CVSpgmrGetNumLinIters", 1);
+  flag = CVSpgmrGetNumPrecEvals(cvode_mem, &npe);
+  check_flag(&flag, "CVSpgmrGetNumPrecEvals", 1);
+  flag = CVSpgmrGetNumPrecSolves(cvode_mem, &nps);
+  check_flag(&flag, "CVSpgmrGetNumPrecSolves", 1);
+  flag = CVSpgmrGetNumConvFails(cvode_mem, &ncfl);
+  check_flag(&flag, "CVSpgmrGetNumConvFails", 1);
+  flag = CVSpgmrGetNumRhsEvals(cvode_mem, &nfeSPGMR);
+  check_flag(&flag, "CVSpgmrGetNumRhsEvals", 1);
+
+  flag = CVBandPrecGetWorkSpace(bpdata, &lenrwBP, &leniwBP);
+  check_flag(&flag, "CVBandPrecGetWorkSpace", 1);
+  flag = CVBandPrecGetNumRhsEvals(bpdata, &nfeBP);
+  check_flag(&flag, "CVBandPrecGetNumRhsEvals", 1);
+
+  printf("\nFinal Statistics.. \n\n");
+  printf("lenrw   = %5ld     leniw  = %5ld\n", lenrw, leniw);
+  printf("llrw    = %5ld     lliw   = %5ld\n", lenrwSPGMR, leniwSPGMR);
+  printf("llrw    = %5ld     lliw   = %5ld\n", lenrwBP, leniwBP);
+  printf("nst     = %5ld\n"                  , nst);
+  printf("nfe     = %5ld     nfetot = %5ld\n"  , nfe, nfe+nfeSPGMR+nfeBP);
+  printf("nfeSPGMR= %5ld     nfeBP  = %5ld\n"  , nfeSPGMR, nfeBP);
+  printf("nni     = %5ld     nli    = %5ld\n"  , nni, nli);
+  printf("nsetups = %5ld     netf   = %5ld\n"  , nsetups, netf);
+  printf("npe     = %5ld     nps    = %5ld\n"  , npe, nps);
+  printf("ncfn    = %5ld     ncfl   = %5ld\n\n", ncfn, ncfl);
+}
+
+/* Check function return value...
+     opt == 0 means SUNDIALS function allocates memory so check if
+              returned NULL pointer
+     opt == 1 means SUNDIALS function returns a flag so check if
+              flag >= 0
+     opt == 2 means function allocates memory so check if returned
+              NULL pointer */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  /* Check if flag < 0 */
+  else if (opt == 1) {
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n",
+              funcname, *errflag);
+      return(1); }}
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL) {
+    fprintf(stderr, "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n",
+            funcname);
+    return(1); }
+
+  return(0);
+}
+
+/*
+ *-------------------------------
+ * Function called by the solver
+ *-------------------------------
+ */
+
+/* f routine. Compute f(t,u). */
+
+static void f(realtype t, N_Vector u, N_Vector udot,void *f_data)
+{
+  realtype q3, c1, c2, c1dn, c2dn, c1up, c2up, c1lt, c2lt;
+  realtype c1rt, c2rt, cydn, cyup, hord1, hord2, horad1, horad2;
+  realtype qq1, qq2, qq3, qq4, rkin1, rkin2, s, vertd1, vertd2, ydn, yup;
+  realtype q4coef, dely, verdco, hordco, horaco;
+  realtype *udata, *dudata;
+  int idn, iup, ileft, iright, jx, jy;
+  UserData data;
+
+  data = (UserData) f_data;
+  udata = NV_DATA_S(u);
+  dudata = NV_DATA_S(udot);
+
+  /* Set diurnal rate coefficients. */
+
+  s = sin(data->om*t);
+  if (s > ZERO) {
+    q3 = exp(-A3/s);
+    data->q4 = exp(-A4/s);
+  } else {
+    q3 = ZERO;
+    data->q4 = ZERO;
+  }
+
+  /* Make local copies of problem variables, for efficiency. */
+
+  q4coef = data->q4;
+  dely = data->dy;
+  verdco = data->vdco;
+  hordco  = data->hdco;
+  horaco  = data->haco;
+
+  /* Loop over all grid points. */
+
+  for (jy = 0; jy < MY; jy++) {
+
+    /* Set vertical diffusion coefficients at jy +- 1/2 */
+
+    ydn = YMIN + (jy - RCONST(0.5))*dely;
+    yup = ydn + dely;
+    cydn = verdco*exp(RCONST(0.2)*ydn);
+    cyup = verdco*exp(RCONST(0.2)*yup);
+    idn = (jy == 0) ? 1 : -1;
+    iup = (jy == MY-1) ? -1 : 1;
+    for (jx = 0; jx < MX; jx++) {
+
+      /* Extract c1 and c2, and set kinetic rate terms. */
+
+      c1 = IJKth(udata,1,jx,jy); 
+      c2 = IJKth(udata,2,jx,jy);
+      qq1 = Q1*c1*C3;
+      qq2 = Q2*c1*c2;
+      qq3 = q3*C3;
+      qq4 = q4coef*c2;
+      rkin1 = -qq1 - qq2 + TWO*qq3 + qq4;
+      rkin2 = qq1 - qq2 - qq4;
+
+      /* Set vertical diffusion terms. */
+
+      c1dn = IJKth(udata,1,jx,jy+idn);
+      c2dn = IJKth(udata,2,jx,jy+idn);
+      c1up = IJKth(udata,1,jx,jy+iup);
+      c2up = IJKth(udata,2,jx,jy+iup);
+      vertd1 = cyup*(c1up - c1) - cydn*(c1 - c1dn);
+      vertd2 = cyup*(c2up - c2) - cydn*(c2 - c2dn);
+
+      /* Set horizontal diffusion and advection terms. */
+
+      ileft = (jx == 0) ? 1 : -1;
+      iright =(jx == MX-1) ? -1 : 1;
+      c1lt = IJKth(udata,1,jx+ileft,jy); 
+      c2lt = IJKth(udata,2,jx+ileft,jy);
+      c1rt = IJKth(udata,1,jx+iright,jy);
+      c2rt = IJKth(udata,2,jx+iright,jy);
+      hord1 = hordco*(c1rt - TWO*c1 + c1lt);
+      hord2 = hordco*(c2rt - TWO*c2 + c2lt);
+      horad1 = horaco*(c1rt - c1lt);
+      horad2 = horaco*(c2rt - c2lt);
+
+      /* Load all terms into udot. */
+
+      IJKth(dudata, 1, jx, jy) = vertd1 + hord1 + horad1 + rkin1; 
+      IJKth(dudata, 2, jx, jy) = vertd2 + hord2 + horad2 + rkin2;
+    }
+  }
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/examples_ser/cvkxb.out b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvkxb.out
new file mode 100644
index 0000000..1385856
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/examples_ser/cvkxb.out
@@ -0,0 +1,138 @@
+2-species diurnal advection-diffusion problem, 10 by 10 mesh
+SPGMR solver; band preconditioner; mu = 2, ml = 2
+
+
+
+Preconditioner type is:  jpre = PREC_LEFT
+
+t = 7.20e+03   no. steps = 190   order = 5   stepsize = 1.61e+02
+c1 (bot.left/middle/top rt.) =    1.047e+04     2.964e+04     1.119e+04
+c2 (bot.left/middle/top rt.) =    2.527e+11     7.154e+11     2.700e+11
+
+t = 1.44e+04   no. steps = 221   order = 5   stepsize = 3.83e+02
+c1 (bot.left/middle/top rt.) =    6.659e+06     5.316e+06     7.301e+06
+c2 (bot.left/middle/top rt.) =    2.582e+11     2.057e+11     2.833e+11
+
+t = 2.16e+04   no. steps = 246   order = 5   stepsize = 2.78e+02
+c1 (bot.left/middle/top rt.) =    2.665e+07     1.036e+07     2.931e+07
+c2 (bot.left/middle/top rt.) =    2.993e+11     1.028e+11     3.313e+11
+
+t = 2.88e+04   no. steps = 291   order = 3   stepsize = 1.31e+02
+c1 (bot.left/middle/top rt.) =    8.702e+06     1.292e+07     9.650e+06
+c2 (bot.left/middle/top rt.) =    3.380e+11     5.029e+11     3.751e+11
+
+t = 3.60e+04   no. steps = 334   order = 4   stepsize = 7.28e+01
+c1 (bot.left/middle/top rt.) =    1.404e+04     2.029e+04     1.561e+04
+c2 (bot.left/middle/top rt.) =    3.387e+11     4.894e+11     3.765e+11
+
+t = 4.32e+04   no. steps = 403   order = 5   stepsize = 4.88e+02
+c1 (bot.left/middle/top rt.) =    6.130e-06    -1.990e-05     6.818e-06
+c2 (bot.left/middle/top rt.) =    3.382e+11     1.355e+11     3.804e+11
+
+t = 5.04e+04   no. steps = 418   order = 5   stepsize = 4.88e+02
+c1 (bot.left/middle/top rt.) =   -5.176e-11    -1.077e-09     8.885e-11
+c2 (bot.left/middle/top rt.) =    3.358e+11     4.930e+11     3.864e+11
+
+t = 5.76e+04   no. steps = 433   order = 4   stepsize = 2.12e+02
+c1 (bot.left/middle/top rt.) =    1.155e-15    -7.003e-15    -4.198e-15
+c2 (bot.left/middle/top rt.) =    3.320e+11     9.650e+11     3.909e+11
+
+t = 6.48e+04   no. steps = 447   order = 4   stepsize = 5.85e+02
+c1 (bot.left/middle/top rt.) =    4.259e-16     2.045e-14     1.404e-15
+c2 (bot.left/middle/top rt.) =    3.313e+11     8.922e+11     3.963e+11
+
+t = 7.20e+04   no. steps = 459   order = 4   stepsize = 5.85e+02
+c1 (bot.left/middle/top rt.) =   -5.832e-16     8.243e-15     6.911e-16
+c2 (bot.left/middle/top rt.) =    3.330e+11     6.186e+11     4.039e+11
+
+t = 7.92e+04   no. steps = 472   order = 4   stepsize = 5.85e+02
+c1 (bot.left/middle/top rt.) =   -1.475e-14     2.060e-14     8.124e-15
+c2 (bot.left/middle/top rt.) =    3.334e+11     6.669e+11     4.120e+11
+
+t = 8.64e+04   no. steps = 484   order = 4   stepsize = 5.85e+02
+c1 (bot.left/middle/top rt.) =    3.002e-22     2.443e-18    -8.887e-16
+c2 (bot.left/middle/top rt.) =    3.352e+11     9.108e+11     4.162e+11
+
+
+Final Statistics.. 
+
+lenrw   =  2000     leniw  =    10
+llrw    =  2046     lliw   =    10
+llrw    =  2400     lliw   =   200
+nst     =   484
+nfe     =   627     nfetot =  1270
+nfeSPGMR=   598     nfeBP  =    45
+nni     =   624     nli    =   598
+nsetups =    89     netf   =    30
+npe     =     9     nps    =  1140
+ncfn    =     0     ncfl   =     0
+
+
+
+-------------------------------------------------------------------
+
+
+Preconditioner type is:  jpre = PREC_RIGHT
+
+t = 7.20e+03   no. steps = 219   order = 5   stepsize = 1.55e+02
+c1 (bot.left/middle/top rt.) =    1.047e+04     2.964e+04     1.119e+04
+c2 (bot.left/middle/top rt.) =    2.527e+11     7.154e+11     2.700e+11
+
+t = 1.44e+04   no. steps = 251   order = 5   stepsize = 3.59e+02
+c1 (bot.left/middle/top rt.) =    6.659e+06     5.316e+06     7.301e+06
+c2 (bot.left/middle/top rt.) =    2.582e+11     2.057e+11     2.833e+11
+
+t = 2.16e+04   no. steps = 279   order = 5   stepsize = 3.58e+02
+c1 (bot.left/middle/top rt.) =    2.665e+07     1.036e+07     2.931e+07
+c2 (bot.left/middle/top rt.) =    2.993e+11     1.028e+11     3.313e+11
+
+t = 2.88e+04   no. steps = 302   order = 5   stepsize = 1.70e+02
+c1 (bot.left/middle/top rt.) =    8.702e+06     1.292e+07     9.650e+06
+c2 (bot.left/middle/top rt.) =    3.380e+11     5.029e+11     3.751e+11
+
+t = 3.60e+04   no. steps = 340   order = 4   stepsize = 5.80e+01
+c1 (bot.left/middle/top rt.) =    1.404e+04     2.029e+04     1.561e+04
+c2 (bot.left/middle/top rt.) =    3.387e+11     4.894e+11     3.765e+11
+
+t = 4.32e+04   no. steps = 397   order = 5   stepsize = 5.83e+02
+c1 (bot.left/middle/top rt.) =   -3.393e-09    -2.304e-09    -3.658e-09
+c2 (bot.left/middle/top rt.) =    3.382e+11     1.355e+11     3.804e+11
+
+t = 5.04e+04   no. steps = 416   order = 5   stepsize = 3.34e+02
+c1 (bot.left/middle/top rt.) =   -6.444e-12    -6.155e-09    -1.285e-09
+c2 (bot.left/middle/top rt.) =    3.358e+11     4.930e+11     3.864e+11
+
+t = 5.76e+04   no. steps = 430   order = 5   stepsize = 4.11e+02
+c1 (bot.left/middle/top rt.) =    3.314e-16     4.376e-14     2.254e-18
+c2 (bot.left/middle/top rt.) =    3.320e+11     9.650e+11     3.909e+11
+
+t = 6.48e+04   no. steps = 440   order = 5   stepsize = 7.57e+02
+c1 (bot.left/middle/top rt.) =    3.963e-15    -1.020e-14    -2.279e-16
+c2 (bot.left/middle/top rt.) =    3.313e+11     8.922e+11     3.963e+11
+
+t = 7.20e+04   no. steps = 450   order = 5   stepsize = 7.57e+02
+c1 (bot.left/middle/top rt.) =   -2.200e-15     2.374e-15    -2.062e-18
+c2 (bot.left/middle/top rt.) =    3.330e+11     6.186e+11     4.039e+11
+
+t = 7.92e+04   no. steps = 459   order = 5   stepsize = 7.57e+02
+c1 (bot.left/middle/top rt.) =   -1.736e-15     1.067e-13    -2.145e-18
+c2 (bot.left/middle/top rt.) =    3.334e+11     6.669e+11     4.120e+11
+
+t = 8.64e+04   no. steps = 469   order = 5   stepsize = 7.57e+02
+c1 (bot.left/middle/top rt.) =    5.919e-16    -1.245e-13    -3.982e-18
+c2 (bot.left/middle/top rt.) =    3.352e+11     9.106e+11     4.163e+11
+
+
+Final Statistics.. 
+
+lenrw   =  2000     leniw  =    10
+llrw    =  2046     lliw   =    10
+llrw    =  2400     lliw   =   200
+nst     =   469
+nfe     =   621     nfetot =  1421
+nfeSPGMR=   715     nfeBP  =    85
+nni     =   618     nli    =   715
+nsetups =    90     netf   =    32
+npe     =     8     nps    =  1213
+ncfn    =     0     ncfl   =     0
+
diff --git a/Win32/WinCVODE/sundials/cvodes/include/cvband.h b/Win32/WinCVODE/sundials/cvodes/include/cvband.h
new file mode 100644
index 0000000..dfeac43
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/include/cvband.h
@@ -0,0 +1,219 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:36:53 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the CVODE/CVODES band linear
+ * solver, CVBAND.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVBAND_H
+#define _CVBAND_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "band.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+ 
+/*
+ * -----------------------------------------------------------------
+ * CVBAND solver constants
+ * -----------------------------------------------------------------
+ * CVB_MSBJ : maximum number of steps between band Jacobian
+ *            evaluations
+ *
+ * CVB_DGMAX : maximum change in gamma between band Jacobian
+ *             evaluations
+ * -----------------------------------------------------------------
+ */
+
+#define CVB_MSBJ  50
+#define CVB_DGMAX RCONST(0.2)
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVBandJacFn
+ * -----------------------------------------------------------------
+ * A band Jacobian approximation function Jac must have the
+ * prototype given below. Its parameters are:
+ *
+ * N is the length of all vector arguments.
+ *
+ * mupper is the upper half-bandwidth of the approximate banded
+ * Jacobian. This parameter is the same as the mupper parameter
+ * passed by the user to the CVBand function.
+ *
+ * mlower is the lower half-bandwidth of the approximate banded
+ * Jacobian. This parameter is the same as the mlower parameter
+ * passed by the user to the CVBand function.
+ *
+ * J is the band matrix (of type BandMat) that will be loaded
+ * by a CVBandJacFn with an approximation to the Jacobian matrix
+ * J = (df_i/dy_j) at the point (t,y).
+ * J is preset to zero, so only the nonzero elements need to be
+ * loaded. Three efficient ways to load J are:
+ *
+ * (1) (with macros - no explicit data structure references)
+ *    for (j=0; j < n; j++) {
+ *       col_j = BAND_COL(J,j);
+ *       for (i=j-mupper; i <= j+mlower; i++) {
+ *         generate J_ij = the (i,j)th Jacobian element
+ *         BAND_COL_ELEM(col_j,i,j) = J_ij;
+ *       }
+ *     }
+ *
+ * (2) (with BAND_COL macro, but without BAND_COL_ELEM macro)
+ *    for (j=0; j < n; j++) {
+ *       col_j = BAND_COL(J,j);
+ *       for (k=-mupper; k <= mlower; k++) {
+ *         generate J_ij = the (i,j)th Jacobian element, i=j+k
+ *         col_j[k] = J_ij;
+ *       }
+ *     }
+ *
+ * (3) (without macros - explicit data structure references)
+ *     offset = J->smu;
+ *     for (j=0; j < n; j++) {
+ *       col_j = ((J->data)[j])+offset;
+ *       for (k=-mupper; k <= mlower; k++) {
+ *         generate J_ij = the (i,j)th Jacobian element, i=j+k
+ *         col_j[k] = J_ij;
+ *       }
+ *     }
+ * Caution: J->smu is generally NOT the same as mupper.
+ *
+ * The BAND_ELEM(A,i,j) macro is appropriate for use in small
+ * problems in which efficiency of access is NOT a major concern.
+ *
+ * t is the current value of the independent variable.
+ *
+ * y is the current value of the dependent variable vector,
+ *      namely the predicted value of y(t).
+ *
+ * fy is the vector f(t,y).
+ *
+ * jac_data is a pointer to user data - the same as the jac_data
+ *          parameter passed to CVBand.
+ *
+ * NOTE: If the user's Jacobian routine needs other quantities,
+ *     they are accessible as follows: hcur (the current stepsize)
+ *     and ewt (the error weight vector) are accessible through
+ *     CVodeGetCurrentStep and CVodeGetErrWeights, respectively
+ *     (see cvode.h). The unit roundoff is available as
+ *     UNIT_ROUNDOFF defined in sundialstypes.h
+ *
+ * tmp1, tmp2, and tmp3 are pointers to memory allocated for
+ * vectors of length N which can be used by a CVBandJacFn
+ * as temporary storage or work space.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVBandJacFn)(long int N, long int mupper, long int mlower,
+                            BandMat J, realtype t,
+                            N_Vector y, N_Vector fy, void *jac_data,
+                            N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBand
+ * -----------------------------------------------------------------
+ * A call to the CVBand function links the main CVODE integrator
+ * with the CVBAND linear solver.
+ *
+ * cvode_mem is the pointer to the integrator memory returned by
+ *           CVodeCreate.
+ *
+ * N is the size of the ODE system.
+ *
+ * mupper is the upper bandwidth of the band Jacobian
+ *        approximation.
+ *
+ * mlower is the lower bandwidth of the band Jacobian
+ *        approximation.
+ *
+ * The return value of CVBand is one of:
+ *    CVBAND_SUCCESS   if successful
+ *    CVBAND_MEM_NULL  if the cvode memory was NULL
+ *    CVBAND_MEM_FAIL  if there was a memory allocation failure
+ *    CVBAND_ILL_INPUT if a required vector operation is missing or
+ *                     if a bandwidth has an illegal value.
+ * -----------------------------------------------------------------
+ */
+
+int CVBand(void *cvode_mem, long int N,
+           long int mupper, long int mlower);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional inputs to the CVBAND linear solver
+ * -----------------------------------------------------------------
+ *
+ * CVBandSetJacFn specifies the band Jacobian approximation
+ *                routine to be used. A user-supplied bjac routine
+ *                must be of type CVBandJacFn. By default, a difference
+ *                quotient routine CVBandDQJac, supplied with this
+ *                solver is used.
+ *                It also specifies a pointer to user data which is
+ *                passed to the bjac routine every time it is called.
+ *
+ * The return value of CVBandSet* is one of:
+ *    CVBAND_SUCCESS   if successful
+ *    CVBAND_MEM_NULL  if the cvode memory was NULL
+ *    CVBAND_LMEM_NULL if the cvband memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVBandSetJacFn(void *cvode_mem, CVBandJacFn bjac, void *jac_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional outputs from the CVBAND linear solver
+ * -----------------------------------------------------------------
+ *
+ * CVBandGetWorkSpace returns the real and integer workspace used
+ *                    by CVBAND.
+ * CVBandGetNumJacEvals returns the number of calls made to the
+ *                      Jacobian evaluation routine bjac.
+ * CVBandGetNumRhsEvals returns the number of calls to the user
+ *                      f routine due to finite difference Jacobian
+ *                      evaluation.
+ * CVBandGetLastFlag returns the last error flag set by any of
+ *                   the CVBAND interface functions.
+ *
+ * The return value of CVBandGet* is one of:
+ *    CVBAND_SUCCESS   if successful
+ *    CVBAND_MEM_NULL  if the cvode memory was NULL
+ *    CVBAND_LMEM_NULL if the cvband memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVBandGetWorkSpace(void *cvode_mem, long int *lenrwB, long int *leniwB);
+int CVBandGetNumJacEvals(void *cvode_mem, long int *njevalsB);
+int CVBandGetNumRhsEvals(void *cvode_mem, long int *nfevalsB);
+int CVBandGetLastFlag(void *cvode_mem, int *flag);
+
+/* CVBAND return values */
+
+#define CVBAND_SUCCESS    0
+#define CVBAND_MEM_NULL  -1
+#define CVBAND_LMEM_NULL -2
+#define CVBAND_ILL_INPUT -3
+#define CVBAND_MEM_FAIL  -4
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/include/cvbandpre.h b/Win32/WinCVODE/sundials/cvodes/include/cvbandpre.h
new file mode 100644
index 0000000..d97c3cd
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/include/cvbandpre.h
@@ -0,0 +1,174 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:36:53 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Michael Wittman, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the CVBANDPRE module, which
+ * provides a banded difference quotient Jacobian-based
+ * preconditioner and solver routines for use with CVSPGMR.
+ *
+ * Summary:
+ * These routines provide a band matrix preconditioner based on
+ * difference quotients of the ODE right-hand side function f.
+ * The user supplies parameters
+ *   mu = upper half-bandwidth (number of super-diagonals)
+ *   ml = lower half-bandwidth (number of sub-diagonals)
+ * The routines generate a band matrix of bandwidth ml + mu + 1
+ * and use this to form a preconditioner for use with the Krylov
+ * linear solver in CVSPGMR.  Although this matrix is intended
+ * to approximate the Jacobian df/dy, it may be a very crude
+ * approximation.  The true Jacobian need not be banded, or its
+ * true bandwith may be larger than ml + mu + 1, as long as the
+ * banded approximation generated here is sufficiently accurate
+ * to speed convergence as a preconditioner.
+ *
+ * Usage:
+ *   The following is a summary of the usage of this module.
+ *   Details of the calls to CVodeCreate, CVodeMalloc, CVSpgmr,
+ *   and CVode are available in the User Guide.
+ *   To use these routines, the sequence of calls in the user
+ *   main program should be as follows:
+ *
+ *   #include "cvbandpre.h"
+ *   #include "nvector_serial.h"
+ *   ...
+ *   void *bp_data;
+ *   ...
+ *   Set y0
+ *   ...
+ *   cvode_mem = CVodeCreate(...);
+ *   ier = CVodeMalloc(...);
+ *   ...
+ *   bp_data = CVBandPrecAlloc(cvode_mem, N, mu, ml);
+ *   ...
+ *   flag = CVBPSpgmr(cvode_mem, pretype, maxl, bp_data);
+ *   ...
+ *   flag = CVode(...);
+ *   ...
+ *   CVBandPrecFree(bp_data);
+ *   ...
+ *   Free y0
+ *   ...
+ *   CVodeFree(cvode_mem);
+ *
+ * Notes:
+ * (1) Include this file for the CVBandPrecData type definition.
+ * (2) In the CVBandPrecAlloc call, the arguments N is the same
+ *     as in the call to CVodeMalloc.
+ * (3) In the CVBPSpgmr call, the user is free to specify the input
+ *     pretype and the optional input maxl.  The last argument
+ *     must be the pointer returned by CVBandPrecAlloc.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVBANDPRE_H
+#define _CVBANDPRE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBandPrecAlloc
+ * -----------------------------------------------------------------
+ * CVBandPrecAlloc allocates and initializes a CVBandPrecData
+ * structure to be passed to CVSpgmr (and subsequently used by
+ * CVBandPrecSetup and CVBandPrecSolve).
+ *
+ * The parameters of CVBandPrecAlloc are as follows:
+ *
+ * cvode_mem is the pointer to CVODE memory returned by CVodeCreate.
+ *
+ * N is the problem size.
+ *
+ * mu is the upper half bandwidth.
+ *
+ * ml is the lower half bandwidth.
+ *
+ * CVBandPrecAlloc returns the storage pointer of type
+ * CVBandPrecData, or NULL if the request for storage cannot be
+ * satisfied.
+ *
+ * NOTE: The band preconditioner assumes a serial implementation
+ *       of the NVECTOR package. Therefore, CVBandPrecAlloc will
+ *       first test for a compatible N_Vector internal
+ *       representation by checking for required functions.
+ * -----------------------------------------------------------------
+ */
+
+void *CVBandPrecAlloc(void *cvode_mem, long int N,
+                      long int mu, long int ml);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBPSpgmr
+ * -----------------------------------------------------------------
+ * CVBPSpgmr links the CVBANDPPRE preconditioner to the CVSPGMR
+ * linear solver. It performs the following actions:
+ *  1) Calls the CVSPGMR specification routine and attaches the
+ *     CVSPGMR linear solver to the integrator memory;
+ *  2) Sets the preconditioner data structure for CVSPGMR
+ *  3) Sets the preconditioner setup routine for CVSPGMR
+ *  4) Sets the preconditioner solve routine for CVSPGMR
+ *
+ * Its first 3 arguments are the same as for CVSpgmr (see
+ * cvspgmr.h). The last argument is the pointer to the CVBANDPPRE
+ * memory block returned by CVBandPrecAlloc.
+ * Note that the user need not call CVSpgmr.
+ *
+ * Possible return values are:
+ *    CVSPGMR_SUCCESS     if successful
+ *    CVSPGMR_MEM_NULL    if the cvode memory was NULL
+ *    CVSPGMR_LMEM_NULL   if the cvspgmr memory was NULL
+ *    CVSPGMR_MEM_FAIL    if there was a memory allocation failure
+ *    CVSPGMR_ILL_INPUT   if a required vector operation is missing
+ *    CV_PDATA_NULL       if the bp_data was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVBPSpgmr(void *cvode_mem, int pretype, int maxl, void *p_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBandPrecFree
+ * -----------------------------------------------------------------
+ * CVBandPrecFree frees the memory allocated by CVBandPrecAlloc
+ * in the argument pdata.
+ * -----------------------------------------------------------------
+ */
+
+void CVBandPrecFree(void *bp_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional output functions : CVBandPrecGet*
+ * -----------------------------------------------------------------
+ * CVBandPrecGetWorkSpace returns the real and integer workspace used
+ *                        by CVBANDPRE.
+ * CVBandPrecGetNumRhsEvals returns the number of calls made from
+ *                          CVBANDPRE to the user's right hand side
+ *                          routine f.
+ *
+ * The return value of CVBandPrecGet* is one of:
+ *    CV_SUCCESS    if successful
+ *    CV_PDATA_NULL if the bp_data memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVBandPrecGetWorkSpace(void *bp_data, long int *lenrwBP, long int *leniwBP);
+int CVBandPrecGetNumRhsEvals(void *bp_data, long int *nfevalsBP);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/include/cvbbdpre.h b/Win32/WinCVODE/sundials/cvodes/include/cvbbdpre.h
new file mode 100644
index 0000000..06628fc
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/include/cvbbdpre.h
@@ -0,0 +1,298 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:36:53 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Michael Wittman, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the CVBBDPRE module, for a
+ * band-block-diagonal preconditioner, i.e. a block-diagonal
+ * matrix with banded blocks, for use with CVSpgmr, and
+ * the parallel implementation of the NVECTOR module.
+ *
+ * Summary:
+ *
+ * These routines provide a preconditioner matrix  that is
+ * block-diagonal with banded blocks.  The blocking corresponds
+ * to the distribution of the dependent variable vector y among
+ * the processors.  Each preconditioner block is generated from
+ * the Jacobian of the local part (on the current processor) of a
+ * given function g(t,y) approximating f(t,y).  The blocks are
+ * generated by a difference quotient scheme on each processor
+ * independently.  This scheme utilizes an assumed banded
+ * structure with given half-bandwidths, mudq and mldq.
+ * However, the banded Jacobian block kept by the scheme has
+ * half-bandwiths mukeep and mlkeep, which may be smaller.
+ *
+ * The user's calling program should have the following form:
+ *
+ *   #include "nvector_parallel.h"
+ *   #include "cvbbdpre.h"
+ *   ...
+ *   void *cvode_mem;
+ *   void *bbd_data;
+ *   ...
+ *   Set y0
+ *   ...
+ *   cvode_mem = CVodeCreate(...);
+ *   ier = CVodeMalloc(...);
+ *   ...
+ *   bbd_data = CVBBDPrecAlloc(cvode_mem, Nlocal, mudq ,mldq,
+ *                             mukeep, mlkeep, dqrely, gloc, cfn);
+ *   flag = CVBBDSpgmr(cvode_mem, pretype, maxl, bbd_data);
+ *   ...
+ *   ier = CVode(...);
+ *   ...
+ *   CVBBDPrecFree(bbd_data);
+ *   ...                                                           
+ *   CVodeFree(...);
+ * 
+ *   Free y0
+ *
+ * The user-supplied routines required are:
+ *
+ *   f    = function defining the ODE right-hand side f(t,y).
+ *
+ *   gloc = function defining the approximation g(t,y).
+ *
+ *   cfn  = function to perform communication need for gloc.
+ *
+ * Notes:
+ *
+ * 1) This header file is included by the user for the definition
+ *    of the CVBBDData type and for needed function prototypes.
+ *
+ * 2) The CVBBDPrecAlloc call includes half-bandwiths mudq and mldq
+ *    to be used in the difference-quotient calculation of the
+ *    approximate Jacobian.  They need not be the true
+ *    half-bandwidths of the Jacobian of the local block of g,
+ *    when smaller values may provide a greater efficiency.
+ *    Also, the half-bandwidths mukeep and mlkeep of the retained
+ *    banded approximate Jacobian block may be even smaller,
+ *    to reduce storage and computation costs further.
+ *    For all four half-bandwidths, the values need not be the
+ *    same on every processor.
+ *
+ * 3) The actual name of the user's f function is passed to
+ *    CVodeMalloc, and the names of the user's gloc and cfn
+ *    functions are passed to CVBBDPrecAlloc.
+ *
+ * 4) The pointer to the user-defined data block f_data, which is
+ *    set through CVodeSetFdata is also available to the user in
+ *    gloc and cfn.
+ *
+ * 5) For the CVSpgmr solver, the Gram-Schmidt type gstype, is
+ *    left to the user to specify through CVSpgmrSetGStype.
+ *
+ * 6) Optional outputs specific to this module are available by
+ *    way of routines listed below.  These include work space sizes
+ *    and the cumulative number of gloc calls.  The costs
+ *    associated with this module also include nsetups banded LU
+ *    factorizations, nlinsetups cfn calls, and npsolves banded
+ *    backsolve calls, where nlinsetups and npsolves are
+ *    integrator/CVSPGMR optional outputs.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVBBDPRE_H
+#define _CVBBDPRE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVLocalFn
+ * -----------------------------------------------------------------
+ * The user must supply a function g(t,y) which approximates the
+ * right-hand side function f for the system y'=f(t,y), and which
+ * is computed locally (without inter-processor communication).
+ * (The case where g is mathematically identical to f is allowed.)
+ * The implementation of this function must have type CVLocalFn.
+ *
+ * This function takes as input the local vector size Nlocal, the
+ * independent variable value t, the local real dependent
+ * variable vector y, and a pointer to the user-defined data
+ * block f_data.  It is to compute the local part of g(t,y) and
+ * store this in the vector g.
+ * (Allocation of memory for y and g is handled within the
+ * preconditioner module.)
+ * The f_data parameter is the same as that specified by the user
+ * through the CVodeSetFdata routine.
+ * A CVLocalFn gloc does not have a return value.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVLocalFn)(long int Nlocal, realtype t, N_Vector y,
+                          N_Vector g, void *f_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVCommFn
+ * -----------------------------------------------------------------
+ * The user may supply a function of type CVCommFn which performs
+ * all inter-processor communication necessary to evaluate the
+ * approximate right-hand side function described above.
+ *
+ * This function takes as input the local vector size Nlocal,
+ * the independent variable value t, the dependent variable
+ * vector y, and a pointer to the user-defined data block f_data.
+ * The f_data parameter is the same as that specified by the user
+ * through the CVodeSetFdata routine.  The CVCommFn cfn is
+ * expected to save communicated data in space defined within the
+ * structure f_data.  Note: A CVCommFn cfn does not have a return value.
+ *
+ * Each call to the CVCommFn cfn is preceded by a call to the
+ * RhsFn f with the same (t,y) arguments.  Thus cfn can omit any
+ * communications done by f if relevant to the evaluation of g.
+ * If all necessary communication was done by f, the user can
+ * pass NULL for cfn in CVBBDPrecAlloc (see below).
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVCommFn)(long int Nlocal, realtype t, N_Vector y,
+                         void *f_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBBDPrecAlloc
+ * -----------------------------------------------------------------
+ * CVBBDPrecAlloc allocates and initializes a CVBBDData structure
+ * to be passed to CVSpgmr (and used by CVBBDPrecSetup and
+ * and CVBBDPrecSolve.
+ *
+ * The parameters of CVBBDPrecAlloc are as follows:
+ *
+ * cvode_mem is the pointer to the integrator memory.
+ *
+ * Nlocal is the length of the local block of the vectors y etc.
+ *        on the current processor.
+ *
+ * mudq, mldq are the upper and lower half-bandwidths to be used
+ *            in the difference-quotient computation of the local
+ *            Jacobian block.
+ *
+ * mukeep, mlkeep are the upper and lower half-bandwidths of the
+ *                retained banded approximation to the local Jacobian
+ *                block.
+ *
+ * dqrely is an optional input.  It is the relative increment
+ *        in components of y used in the difference quotient
+ *        approximations.  To specify the default, pass 0.
+ *        The default is dqrely = sqrt(unit roundoff).
+ *
+ * gloc is the name of the user-supplied function g(t,y) that
+ *      approximates f and whose local Jacobian blocks are
+ *      to form the preconditioner.
+ *
+ * cfn is the name of the user-defined function that performs
+ *     necessary inter-processor communication for the
+ *     execution of gloc.
+ *
+ * CVBBDPrecAlloc returns the storage allocated (type *void),
+ * or NULL if the request for storage cannot be satisfied.
+ * -----------------------------------------------------------------
+ */
+
+void *CVBBDPrecAlloc(void *cvode_mem, long int Nlocal, 
+                     long int mudq, long int mldq, 
+                     long int mukeep, long int mlkeep, 
+                     realtype dqrely,
+                     CVLocalFn gloc, CVCommFn cfn);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBBDSpgmr
+ * -----------------------------------------------------------------
+ * CVBBDSpgmr links the CVBBDPRE preconditioner to the CVSPGMR
+ * linear solver. It performs the following actions:
+ *  1) Calls the CVSPGMR specification routine and attaches the
+ *     CVSPGMR linear solver to the integrator memory;
+ *  2) Sets the preconditioner data structure for CVSPGMR
+ *  3) Sets the preconditioner setup routine for CVSPGMR
+ *  4) Sets the preconditioner solve routine for CVSPGMR
+ *
+ * Its first 3 arguments are the same as for CVSpgmr (see
+ * cvspgmr.h). The last argument is the pointer to the CVBBDPRE
+ * memory block returned by CVBBDPrecAlloc.
+ * Note that the user need not call CVSpgmr.
+ *
+ * Possible return values are:
+ *    CVSPGMR_SUCCESS     if successful
+ *    CVSPGMR_MEM_NULL    if the cvode memory was NULL
+ *    CVSPGMR_LMEM_NULL   if the cvspgmr memory was NULL
+ *    CVSPGMR_MEM_FAIL    if there was a memory allocation failure
+ *    CVSPGMR_ILL_INPUT   if a required vector operation is missing
+ *    CV_PDATA_NULL       if the bbd_data was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVBBDSpgmr(void *cvode_mem, int pretype, int maxl, void *bbd_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBBDPrecReInit
+ * -----------------------------------------------------------------
+ * CVBBDPrecReInit re-initializes the BBDPRE module when solving a
+ * sequence of problems of the same size with CVSPGMR/CVBBDPRE,
+ * provided there is no change in Nlocal, mukeep, or mlkeep.
+ * After solving one problem, and after calling CVodeReInit to
+ * re-initialize the integrator for a subsequent problem, call
+ * CVBBDPrecReInit.  Then call CVSpgmrSet* functions if necessary
+ * for any changes to CVSpgmr parameters, before calling CVode.
+ *
+ * The first argument to CVBBDPrecReInit must be the pointer pdata
+ * that was returned by CVBBDPrecAlloc.  All other arguments have
+ * the same names and meanings as those of CVBBDPrecAlloc.
+ *
+ * The return value of CVBBDPrecReInit is CV_SUCCESS, indicating
+ * success, or CV_PDATA_NULL if bbd_data was NULL.
+ * -----------------------------------------------------------------
+ */
+
+int CVBBDPrecReInit(void *bbd_data, long int mudq, long int mldq,
+                    realtype dqrely, CVLocalFn gloc, CVCommFn cfn);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBBDPrecFree
+ * -----------------------------------------------------------------
+ * CVBBDPrecFree frees the memory block bbd_data allocated by the
+ * call to CVBBDAlloc.
+ * -----------------------------------------------------------------
+ */
+
+void CVBBDPrecFree(void *bbd_data);
+
+/*
+ * -----------------------------------------------------------------
+ * BBDPRE optional output extraction routines
+ * -----------------------------------------------------------------
+ * CVBBDPrecGetWorkSpace returns the BBDPRE real and integer workspace
+ *                       sizes.
+ * CVBBDPrecGetNumGfnEvals returns the number of calls to gfn.
+ *
+ * The return value of CVBBDPrecGet* is one of:
+ *    CV_SUCCESS    if successful
+ *    CV_PDATA_NULL if the bbd_data memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVBBDPrecGetWorkSpace(void *bbd_data, long int *lenrwBBDP, long int *leniwBBDP);
+int CVBBDPrecGetNumGfnEvals(void *bbd_data, long int *ngevalsBBDP);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/include/cvdense.h b/Win32/WinCVODE/sundials/cvodes/include/cvdense.h
new file mode 100644
index 0000000..2161c9e
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/include/cvdense.h
@@ -0,0 +1,191 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:36:53 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the CVODE/CVODES dense linear
+ * solver, CVDENSE.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVDENSE_H
+#define _CVDENSE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "dense.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * CVDENSE solver constants
+ * -----------------------------------------------------------------
+ * CVD_MSBJ : maximum number of steps between dense Jacobian
+ *            evaluations
+ *
+ * CVD_DGMAX : maximum change in gamma between dense Jacobian
+ *             evaluations
+ * -----------------------------------------------------------------
+ */
+
+#define CVD_MSBJ  50
+#define CVD_DGMAX RCONST(0.2)
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVDenseJacFn
+ * -----------------------------------------------------------------
+ * A dense Jacobian approximation function Jac must have the
+ * prototype given below. Its parameters are:
+ *
+ * N is the problem size.
+ *
+ * J is the dense matrix (of type DenseMat) that will be loaded
+ * by a CVDenseJacFn with an approximation to the Jacobian matrix
+ * J = (df_i/dy_j) at the point (t,y).
+ * J is preset to zero, so only the nonzero elements need to be
+ * loaded. Two efficient ways to load J are:
+ *
+ * (1) (with macros - no explicit data structure references)
+ *     for (j=0; j < n; j++) {
+ *       col_j = DENSE_COL(J,j);
+ *       for (i=0; i < n; i++) {
+ *         generate J_ij = the (i,j)th Jacobian element
+ *         col_j[i] = J_ij;
+ *       }
+ *     }
+ *
+ * (2) (without macros - explicit data structure references)
+ *     for (j=0; j < n; j++) {
+ *       col_j = (J->data)[j];
+ *       for (i=0; i < n; i++) {
+ *         generate J_ij = the (i,j)th Jacobian element
+ *         col_j[i] = J_ij;
+ *       }
+ *     }
+ *
+ * The DENSE_ELEM(A,i,j) macro is appropriate for use in small
+ * problems in which efficiency of access is NOT a major concern.
+ *
+ * t is the current value of the independent variable.
+ *
+ * y is the current value of the dependent variable vector,
+ *   namely the predicted value of y(t).
+ *
+ * fy is the vector f(t,y).
+ *
+ * jac_data is a pointer to user data - the same as the jac_data
+ *          parameter passed to CVDense.
+ *
+ * NOTE: If the user's Jacobian routine needs other quantities,
+ *       they are accessible as follows: hcur (the current stepsize)
+ *       and ewt (the error weight vector) are accessible through
+ *       CVodeGetCurrentStep and CVodeGetErrWeights, respectively
+ *       (see cvode.h). The unit roundoff is available as
+ *       UNIT_ROUNDOFF defined in sundialstypes.h.
+ *
+ * tmp1, tmp2, and tmp3 are pointers to memory allocated for
+ * vectors of length N which can be used by a CVDenseJacFn
+ * as temporary storage or work space.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVDenseJacFn)(long int N, DenseMat J, realtype t,
+                             N_Vector y, N_Vector fy, void *jac_data,
+                             N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVDense
+ * -----------------------------------------------------------------
+ * A call to the CVDense function links the main integrator with
+ * the CVDENSE linear solver.
+ *
+ * cvode_mem is the pointer to the integrator memory returned by
+ *           CVodeCreate.
+ *
+ * N is the size of the ODE system.
+ *
+ * The return value of CVDense is one of:
+ *    CVDENSE_SUCCESS   if successful
+ *    CVDENSE_MEM_NULL  if the cvode memory was NULL
+ *    CVDENSE_MEM_FAIL  if there was a memory allocation failure
+ *    CVDENSE_ILL_INPUT if a required vector operation is missing
+ * -----------------------------------------------------------------
+ */
+
+int CVDense(void *cvode_mem, long int N);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional inputs to the CVDENSE linear solver
+ * -----------------------------------------------------------------
+ *
+ * CVDenseSetJacFn specifies the dense Jacobian approximation
+ *                 routine to be used. A user-supplied djac routine
+ *                 must be of type CVDenseJacFn. By default, a
+ *                 difference quotient routine CVDenseDQJac, supplied
+ *                 with this solver is used.                     
+ *                 It also specifies a pointer to user data which is
+ *                 passed to the djac routine every time it is called.
+ *
+ * The return value of CVDenseSet* is one of:
+ *    CVDENSE_SUCCESS   if successful
+ *    CVDENSE_MEM_NULL  if the cvode memory was NULL
+ *    CVDENSE_LMEM_NULL if the cvdense memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVDenseSetJacFn(void *cvode_mem, CVDenseJacFn djac, void *jac_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional outputs from the CVDENSE linear solver
+ * -----------------------------------------------------------------
+ *
+ * CVDenseGetWorkSpace returns the real and integer workspace used
+ *                     by CVDENSE.
+ * CVDenseGetNumJacEvals returns the number of calls made to the
+ *                       Jacobian evaluation routine djac.
+ * CVDenseGetNumRhsEvals returns the number of calls to the user
+ *                       f routine due to finite difference Jacobian
+ *                       evaluation.
+ * CVDenseGetLastFlag returns the last error flag set by any of
+ *                    the CVDENSE interface functions.
+ *
+ * The return value of CVDenseGet* is one of:
+ *    CVDENSE_SUCCESS   if successful
+ *    CVDENSE_MEM_NULL  if the cvode memory was NULL
+ *    CVDENSE_LMEM_NULL if the cvdense memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVDenseGetWorkSpace(void *cvode_mem, long int *lenrwD, long int *leniwD);
+int CVDenseGetNumJacEvals(void *cvode_mem, long int *njevalsD);
+int CVDenseGetNumRhsEvals(void *cvode_mem, long int *nfevalsD);
+int CVDenseGetLastFlag(void *cvode_mem, int *flag);
+
+/* CVDENSE return values */
+
+#define CVDENSE_SUCCESS    0
+#define CVDENSE_MEM_NULL  -1
+#define CVDENSE_LMEM_NULL -2
+#define CVDENSE_ILL_INPUT -3
+#define CVDENSE_MEM_FAIL  -4
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/include/cvdiag.h b/Win32/WinCVODE/sundials/cvodes/include/cvdiag.h
new file mode 100644
index 0000000..fe53104
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/include/cvdiag.h
@@ -0,0 +1,91 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:36:53 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the CVODE/CVODES diagonal linear
+ * solver, CVDIAG.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVDIAG_H
+#define _CVDIAG_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVDiag
+ * -----------------------------------------------------------------
+ * A call to the CVDiag function links the main integrator with
+ * the CVDIAG linear solver.
+ *
+ * cvode_mem is the pointer to the integrator memory returned by
+ *           CVodeCreate.
+ *
+ * The return value of CVDiag is one of:
+ *    CVDIAG_SUCCESS   if successful
+ *    CVDIAG_MEM_NULL  if the cvode memory was NULL
+ *    CVDIAG_MEM_FAIL  if there was a memory allocation failure
+ *    CVDIAG_ILL_INPUT if a required vector operation is missing
+ * -----------------------------------------------------------------
+ */
+
+int CVDiag(void *cvode_mem);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional outputs from the CVDIAG linear solver
+ * -----------------------------------------------------------------
+ *
+ * CVDiagGetWorkSpace returns the real and integer workspace used
+ *                    by CVDIAG.
+ * CVDiagGetNumRhsEvals returns the number of calls to the user
+ *                      f routine due to finite difference Jacobian
+ *                      evaluation.
+ *                      Note: The number of diagonal approximate
+ *                      Jacobians formed is equal to the number of
+ *                      CVDiagSetup calls. This number is available
+ *                      through CVodeGetNumLinSolvSetups.
+ * CVDiagGetLastFlag returns the last error flag set by any of
+ *                   the CVDIAG interface functions.
+ *
+ * The return value of CVDiagGet* is one of:
+ *    CVDIAG_SUCCESS   if successful
+ *    CVDIAG_MEM_NULL  if the cvode memory was NULL
+ *    CVDIAG_LMEM_NULL if the cvdiag memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVDiagGetWorkSpace(void *cvode_mem, long int *lenrwDI, long int *leniwDI);
+int CVDiagGetNumRhsEvals(void *cvode_mem, long int *nfevalsDI);
+int CVDiagGetLastFlag(void *cvode_mem, int *flag);
+
+#define CVDIAG_SUCCESS    0
+#define CVDIAG_MEM_NULL  -1
+#define CVDIAG_LMEM_NULL -2
+#define CVDIAG_ILL_INPUT -3
+#define CVDIAG_MEM_FAIL  -4
+
+#define CVDIAG_INV_FAIL   1
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/include/cvodea.h b/Win32/WinCVODE/sundials/cvodes/include/cvodea.h
new file mode 100644
index 0000000..96807aa
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/include/cvodea.h
@@ -0,0 +1,428 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.3 $
+ * $Date: 2006/04/11 13:09:34 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Radu Serban and Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the interface file for the CVODEA adjoint integrator.
+ *
+ * Part I: Function types:
+ *    CVRhsFnB
+ *    CVQuadRhsFnB
+ *    CVDenseJacFnB
+ *    CVBandJacFnB
+ *    CVSpgmrPrecSetupFnB
+ *    CVSpgmrPrecSolveB
+ *    CVSpgmrJacTimesVecFnB
+ * Part II: Exported functions prototypes:
+ *    CVadjMalloc
+ *    CVodeF
+ *    CVodeCreateB
+ *    CVodeMallocB
+ *    CVDenseB
+ *    CVBandB
+ *    CVSpgmrB
+ *    CVBandPrecAllocB
+ *    CVBPSpgmrB
+ *    CVBBDPrecAllocB
+ *    CVBBDPrecReInit
+ *    CVBBDSpgmrB
+ *    CVodeB
+ *    CVadjFree
+ * Part III: CVODEA return values
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVODEA_H
+#define _CVODEA_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+  /* 
+   * ===============================================================
+   * INCLUDED HEADER FILES
+   * ===============================================================
+   */
+
+#include <stdio.h>
+
+#include "WinCVODE.h"
+#include "dense.h"
+#include "band.h"
+#include "spgmr.h"
+#include "sundialstypes.h"
+#include "nvector.h"
+
+  /* 
+   * ===============================================================
+   * DEFINITIONS OF CVODEA INPUTS
+   * ===============================================================
+   */
+
+  /*
+   * -----------------------------------------------------------------
+   * interp: Specifies the interpolation type used to evaluate the
+   *         forward solution during the backward integration phase.
+   *         CV_HERMITE specifies cubic Hermite interpolation.
+   * -----------------------------------------------------------------
+   */
+  
+#define CV_HERMITE   1
+
+  /* 
+   * ===============================================================
+   * FUNCTION TYPES
+   * ===============================================================
+   */
+
+  /*
+   * -----------------------------------------------------------------
+   * CVRhsFnB
+   *    The fB function which defines the right hand side of the
+   *    ODE systems to be integrated backwards must have type CVRhsFnB.
+   * -----------------------------------------------------------------
+   * CVQuadRhsFnB
+   *    The fQB function which defines the quadratures to be integrated
+   *    backwards must have type CVQuadRhsFnB.
+   * -----------------------------------------------------------------
+   * CVDenseJacFnB
+   *    A dense Jacobian approximation function djacB for the backward
+   *    integration must have the prototype given below.
+   * -----------------------------------------------------------------
+   * CVBandJacFnB
+   *    A band Jacobian approximation function bjacB for the backward
+   *    integration must have the prototype given below.
+   * -----------------------------------------------------------------
+   * CVSpgmrJacTimesVecFnB
+   *    A Jacobian times vector function jtimesB for the backward
+   *    integration must have the prototype given below.
+   * -----------------------------------------------------------------
+   * CVSpgmrPrecSetupFnB
+   *    A preconditioner setup function precondB for the backward
+   *    integration must have the prototype given below.
+   * -----------------------------------------------------------------
+   * CVSpgmrPrecSolveFnB
+   *    A preconditioner solve function psolveB for the backward
+   *    integration must have the prototype given below.
+   * -----------------------------------------------------------------
+   * CVLocalFnB and CVCommFnB
+   *    Local approximation function and inter-process communication
+   *    function for the BBD preconditioner on the backward phase.
+   * -----------------------------------------------------------------
+   */
+  
+  typedef void (*CVRhsFnB)(realtype t, N_Vector y,
+                           N_Vector yB, N_Vector yBdot,
+                           void *f_dataB);
+  
+  typedef void (*CVQuadRhsFnB)(realtype t, N_Vector y,
+                               N_Vector yB, N_Vector qBdot,
+                               void *fQ_dataB);
+  
+  typedef void (*CVDenseJacFnB)(long int nB, DenseMat JB, realtype t,
+                                N_Vector y, N_Vector yB, N_Vector fyB,
+                                void *jac_dataB, N_Vector tmp1B,
+                                N_Vector tmp2B, N_Vector tmp3B);
+  
+  typedef void (*CVBandJacFnB)(long int nB, long int mupperB,
+                               long int mlowerB, BandMat JB,
+                               realtype t, N_Vector y,
+                               N_Vector yB, N_Vector fyB,
+                               void *jac_dataB, N_Vector tmp1B,
+                               N_Vector tmp2B, N_Vector tmp3B);
+  
+  typedef int (*CVSpgmrJacTimesVecFnB)(N_Vector vB, N_Vector JvB, realtype t,
+                                       N_Vector y, N_Vector yB, N_Vector fyB,
+                                       void *jac_dataB, N_Vector tmpB);
+  
+  typedef int (*CVSpgmrPrecSetupFnB)(realtype t, N_Vector y,
+                                     N_Vector yB, N_Vector fyB,
+                                     booleantype jokB,
+                                     booleantype *jcurPtrB, realtype gammaB,
+                                     void *P_dataB,
+                                     N_Vector tmp1B, N_Vector tmp2B,
+                                     N_Vector tmp3B);
+  
+  typedef int (*CVSpgmrPrecSolveFnB)(realtype t, N_Vector y,
+                                     N_Vector yB, N_Vector fyB,
+                                     N_Vector rB, N_Vector zB,
+                                     realtype gammaB, realtype deltaB,
+                                     int lrB, void *P_dataB, N_Vector tmpB);
+  
+  typedef void (*CVLocalFnB)(long int NlocalB, realtype t,
+                             N_Vector y, N_Vector yB, N_Vector gB,
+                             void *f_dataB);
+  
+  typedef void (*CVCommFnB)(long int NlocalB, realtype t,
+                            N_Vector y, N_Vector yB,
+                            void *f_dataB);
+
+  /* 
+   * ===============================================================
+   * EXPORTED FUNCTIONS
+   * ===============================================================
+   */
+
+  /*
+   * -----------------------------------------------------------------
+   * CVadjMalloc
+   * -----------------------------------------------------------------
+   * CVadjMalloc specifies some parameters for the adjoint problem and
+   * allocates space for the global CVODEA memory structure.
+   * -----------------------------------------------------------------
+   */
+  
+  WINCVODE_API void *CVadjMalloc(void *cvode_mem, long int steps);
+
+  /*
+   * -----------------------------------------------------------------
+   * CVodeF
+   * -----------------------------------------------------------------
+   * CVodeF integrates towards tout and returns solution into yout.
+   * In the same time, it stores check point data every 'steps'.
+   *
+   * CVodeF can be called repeatedly by the user.
+   *
+   * ncheckPtr points to the number of check points stored so far.
+   *
+   * Return values:
+   *    CV_SUCCESS
+   *    CVADJ_MEM_FAIL
+   *    any CVode return value
+   * -----------------------------------------------------------------
+   */
+
+  WINCVODE_API int CVodeF(void *cvadj_mem, realtype tout, N_Vector yout,
+             realtype *tret, int itask, int *ncheckPtr);
+
+  /*
+   * -----------------------------------------------------------------
+   * Interfaces to CVODES functions for setting-up the
+   *  backward integration
+   * -----------------------------------------------------------------
+   * CVodeCreateB, CVodeMallocB, CVodeSet*B
+   *    These functions are just wrappers around the corresponding
+   *    functions in cvodes.h, with some particularizations for the
+   *    backward integration.
+   * -----------------------------------------------------------------
+   * CVodeSetQuad*B, CVodeQuadMallocB, CVodeQuadReInitB
+   * -----------------------------------------------------------------
+   * CVDenseB, CVDenseSet*B
+   *    CVDenseB links the main CVODE integrator with the CVDENSE
+   *    linear solver for the backward integration.
+   * -----------------------------------------------------------------
+   * CVDiagB
+   *    CVDiagB links the main CVODE integrator with the CVDIAG
+   *    linear solver for the backward integration.
+   * -----------------------------------------------------------------
+   * CVBandB, CVBandSet*B
+   *    CVBandB links the main CVODE integrator with the CVBAND
+   *    linear solver for the backward integration.
+   * -----------------------------------------------------------------
+   * CVSpgmrB, CVSpgmrSet*B
+   *    CVSpgmrB links the main CVODE integrator with the CVSPGMR
+   *    linear solver for the backward integration.
+   * -----------------------------------------------------------------
+   * CVBandPrecAllocB, CVBPSpgmrB, CVBPSpbcgB
+   *    CVBandPrecAllocB interfaces to the CVBANDPRE preconditioner
+   *    for the backward integration. The pointer to the structure
+   *    returned by this routine should then be used in the call to
+   *    CVBPSpgmrB/CVBPSpbcgB which interfaces to CVBPSpgmr/CVBPSpbcg.
+   * -----------------------------------------------------------------
+   * CVBBDPrecAllocB, CVBBDSpgmrB, CVBBDSpbcgB, CVBBDPrecReInit
+   *    Interface functions for the BBD preconditioner to be used on
+   *    the backward phase.
+   * -----------------------------------------------------------------
+   */
+
+  WINCVODE_API int CVodeCreateB(void *cvadj_mem, int lmmB, int iterB);
+
+  WINCVODE_API int CVodeMallocB(void *cvadj_mem, CVRhsFnB fB,
+                   realtype tB0, N_Vector yB0,
+                   int itolB, realtype reltolB, void *abstolB);
+  
+  int CVodeSetIterTypeB(void *cvadj_mem, int iterB);
+  WINCVODE_API int CVodeSetFdataB(void *cvadj_mem, void *f_dataB);
+  int CVodeSetErrFileB(void *cvadj_mem, FILE *errfpB);
+  int CVodeSetMaxOrdB(void *cvadj_mem, int maxordB);
+  int CVodeSetMaxNumStepsB(void *cvadj_mem, long int mxstepsB);
+  int CVodeSetStabLimDetB(void *cvadj_mem, booleantype stldetB);
+  int CVodeSetInitStepB(void *cvadj_mem, realtype hinB);
+  int CVodeSetMinStepB(void *cvadj_mem, realtype hminB);
+  int CVodeSetMaxStepB(void *cvadj_mem, realtype hmaxB);
+  
+  WINCVODE_API int CVodeReInitB(void *cvadj_mem, CVRhsFnB fB,
+                   realtype tB0, N_Vector yB0,
+                   int itolB, realtype reltolB, void *abstolB);
+    
+  WINCVODE_API int CVodeSetQuadFdataB(void *cvadj_mem, void *fQ_dataB);
+  int CVodeSetQuadErrConB(void *cvadj_mem, booleantype errconQB,
+                          int itolQB, realtype reltolQB, void *abstolQB);
+  WINCVODE_API int CVodeQuadMallocB(void *cvadj_mem, CVQuadRhsFnB fQB, N_Vector yQB0);
+  int CVodeQuadReInitB(void *cvadj_mem, CVQuadRhsFnB fQB, N_Vector yQB0);
+  
+  WINCVODE_API int CVDenseB(void *cvadj_mem, long int nB);
+  
+  WINCVODE_API int CVDenseSetJacFnB(void *cvadj_mem, CVDenseJacFnB djacB, void *jac_dataB);
+  
+  int CVDiagB(void *cvadj_mem);
+  
+  int CVBandB(void *cvadj_mem, long int nB,
+              long int mupperB, long int mlowerB);
+  
+  int CVBandSetJacFnB(void *cvadj_mem, CVBandJacFnB bjacB, void *jac_dataB);
+  
+  int CVSpgmrB(void *cvadj_mem, int pretypeB, int maxlB);
+  
+  int CVSpgmrSetPrecTypeB(void *cvadj_mem, int pretypeB);
+  int CVSpgmrSetGSTypeB(void *cvadj_mem, int gstypeB);
+  int CVSpgmrSetDeltB(void *cvadj_mem, realtype deltB);
+  int CVSpgmrSetPreconditionerB(void *cvadj_mem, CVSpgmrPrecSetupFnB psetB,
+                                CVSpgmrPrecSolveFnB psolveB, void *P_dataB);
+  int CVSpgmrSetJacTimesVecFnB(void *cvadj_mem, CVSpgmrJacTimesVecFnB jtimesB,
+                               void *jac_dataB);
+  
+  int CVBandPrecAllocB(void *cvadj_mem, long int nB,
+                       long int muB, long int mlB);
+  
+  int CVBPSpbcgB(void *cvadj_mem, int pretypeB, int maxlB);
+  int CVBPSpgmrB(void *cvadj_mem, int pretypeB, int maxlB);
+  
+  int CVBBDPrecAllocB(void *cvadj_mem, long int NlocalB,
+                      long int mudqB, long int mldqB,
+                      long int mukeepB, long int mlkeepB,
+                      realtype dqrelyB,
+                      CVLocalFnB glocB, CVCommFnB cfnB);
+  
+  int CVBBDSpbcgB(void *cvadj_mem, int pretypeB, int maxlB);
+  int CVBBDSpgmrB(void *cvadj_mem, int pretypeB, int maxlB);
+  
+  int CVBBDPrecReInitB(void *cvadj_mem, long int mudqB, long int mldqB,
+                       realtype dqrelyB, CVLocalFnB glocB, CVCommFnB cfnB);
+
+  /*
+   * -----------------------------------------------------------------
+   * CVodeB
+   * -----------------------------------------------------------------
+   * CVodeB performs the backward integration from tfinal to
+   * tinitial through a sequence of forward-backward runs in
+   * between consecutive check points. It returns the values of
+   * the adjoint variables and any existing quadrature variables
+   * at tinitial.
+   * -----------------------------------------------------------------
+   */
+  
+  WINCVODE_API int CVodeB(void *cvadj_mem, realtype tBout, N_Vector yBout,
+             realtype *tBret, int itaskB);
+  
+  /*
+   * -----------------------------------------------------------------
+   * CVodeGetQuadB
+   * -----------------------------------------------------------------
+   * CVodeGetQuadB extracts values for quadrature variables in
+   * the N_Vector qB.
+   * -----------------------------------------------------------------
+   */
+  
+  WINCVODE_API int CVodeGetQuadB(void *cvadj_mem, N_Vector qB);
+  
+  /*
+   * -----------------------------------------------------------------
+   * CVadjFree
+   * -----------------------------------------------------------------
+   * CVadjFree frees the memory allocated by CVadjMalloc.
+   * -----------------------------------------------------------------
+   */
+  
+  void CVadjFree(void *cvadj_mem);
+  
+  /*
+   * -----------------------------------------------------------------
+   * CVadjGetCVodeBmem
+   * -----------------------------------------------------------------
+   * CVadjGetCVodeBmem returns a (void *) pointer to the CVODES
+   * memory allocated for the backward problem. This pointer can
+   * then be used to call any of the CVodeGet* CVODES routines to
+   * extract optional output for the backward integration phase.
+   * -----------------------------------------------------------------
+   */
+  
+  void *CVadjGetCVodeBmem(void *cvadj_mem);
+
+  /* 
+   * ===============================================================
+   * UNDOCUMENTED DEVELOPMENT USER-CALLABLE FUNCTIONS
+   * ===============================================================
+   */
+
+  /*
+   * -----------------------------------------------------------------
+   * CVadjGetCheckPointsInfo
+   *    Loads an array of nckpnts structures of type CheckPointRec.
+   *    The user must allocate space for ckpnt (ncheck+1).
+   * CVadjGetCurrentCheckPoint
+   *    Returns the address of the 'active' check point.
+   * -----------------------------------------------------------------
+   */
+
+  typedef struct {
+    unsigned int my_addr;
+    unsigned int next_addr;
+    realtype t0;
+    realtype t1;
+    long int nstep;
+    int order;
+    realtype step;
+  } CheckPointRec;
+
+  int CVadjGetCheckPointsInfo(void *cvadj_mem, CheckPointRec *ckpnt);
+  int CVadjGetCurrentCheckPoint(void *cvadj_mem, unsigned int *addr);
+
+  /*
+   * -----------------------------------------------------------------
+   * CVadjGetDataPointHermite
+   *    Returns the 2 vectors stored for cubic Hermite interpolation 
+   *    at the data point 'which'. The user must allocate space for
+   *    y and yd. Returns CVADJ_MEM_NULL if cvadj_mem is NULL.
+   *    Returns CV_ILL_INPUT if interpType != CV_HERMITE.
+   * CVadjGetY
+   *    Returns the interpolated forward solution at time t. This
+   *    function is a wrapper around the interpType-dependent internal
+   *    function.
+   *    The user must allocate space for y.
+   * -----------------------------------------------------------------
+   */
+
+  int CVadjGetDataPointHermite(void *cvadj_mem, long int which,
+                               realtype *t, N_Vector y, N_Vector yd);
+  
+  int CVadjGetY(void *cvadj_mem, realtype t, N_Vector y);
+  
+  /*
+   * ===============================================================
+   * CVODEA RETURN VALUES
+   * ===============================================================
+   */
+
+#define CV_ADJMEM_NULL -101
+#define CV_BAD_TB0     -103
+#define CV_BCKMEM_NULL -104
+#define CV_REIFWD_FAIL -105
+#define CV_FWD_FAIL    -106
+#define CV_BAD_ITASK   -107
+#define CV_BAD_TBOUT   -108
+#define CV_GETY_BADT   -109
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/include/cvodes.h b/Win32/WinCVODE/sundials/cvodes/include/cvodes.h
new file mode 100644
index 0000000..b2eed37
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/include/cvodes.h
@@ -0,0 +1,1400 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.5 $
+ * $Date: 2006/04/11 13:09:34 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh, Radu Serban
+ *                and Dan Shumaker @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the interface file for the main CVODES integrator.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVODES_H
+#define _CVODES_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "WinCVODE.h"
+#include "sundialstypes.h"
+#include "nvector.h"
+
+/*
+ * -----------------------------------------------------------------
+ * CVODES is used to solve numerically the ordinary initial value
+ * problem:
+ *
+ *                 y' = f(t,y),
+ *                 y(t0) = y0,
+ *
+ * where t0, y0 in R^N, and f: R x R^N -> R^N are given.
+ *
+ * Optionally, CVODES can perform forward sensitivity analysis
+ * to find sensitivities of the solution y with respect to
+ * parameters in the right hand side f and/or in the initial
+ * conditions y0.
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * Enumerations for inputs to CVodeCreate, CVodeMalloc,
+ * CVodeReInit, CVodeSensMalloc, CVodeSensReInit, CvodeQuadMalloc,
+ * CVodeQuadReInit, CVodeSet*, and CVode.
+ * -----------------------------------------------------------------
+ * Symbolic constants for the lmm, iter, and itol input
+ * parameters to CVodeMalloc and CVodeReInit, as well as the
+ * input parameter itask to CVode, are given below.
+ *
+ * lmm:   The user of the CVODES package specifies whether to use
+ *        the CV_ADAMS or CV_BDF (backward differentiation formula)
+ *        linear multistep method. The BDF method is recommended
+ *        for stiff problems, and the CV_ADAMS method is recommended
+ *        for nonstiff problems.
+ *
+ * iter:  At each internal time step, a nonlinear equation must
+ *        be solved. The user can specify either CV_FUNCTIONAL
+ *        iteration, which does not require linear algebra, or a
+ *        CV_NEWTON iteration, which requires the solution of linear
+ *        systems. In the CV_NEWTON case, the user also specifies a
+ *        CVODE linear solver. CV_NEWTON is recommended in case of
+ *        stiff problems.
+ *
+ * itol:  This parameter specifies the relative and absolute
+ *        tolerance types to be used. The CV_SS tolerance type means
+ *        a scalar relative and absolute tolerance. The CV_SV
+ *        tolerance type means a scalar relative tolerance and a
+ *        vector absolute tolerance (a potentially different
+ *        absolute tolerance for each vector component). The CV_WF
+ *        tolerance type means that the user provides a function
+ *        (of type CVEwtFn) to set the error weight vector.
+ *
+ * ism:   This parameter specifies the sensitivity corrector type
+ *        to be used. In the CV_SIMULTANEOUS case, the nonlinear
+ *        systems for states and all sensitivities are solved
+ *        simultaneously. In the CV_STAGGERED case, the nonlinear
+ *        system for states is solved first and then, the
+ *        nonlinear systems for all sensitivities are solved
+ *        at the same time. Finally, in the CV_STAGGERED1 approach
+ *        all nonlinear systems are solved in a sequence.
+ *
+ * itask: The itask input parameter to CVode indicates the job
+ *        of the solver for the next user step. The CV_NORMAL
+ *        itask is to have the solver take internal steps until
+ *        it has reached or just passed the user specified tout
+ *        parameter. The solver then interpolates in order to
+ *        return an approximate value of y(tout). The CV_ONE_STEP
+ *        option tells the solver to just take one internal step
+ *        and return the solution at the point reached by that
+ *        step. The CV_NORMAL_TSTOP and CV_ONE_STEP_TSTOP modes are
+ *        similar to CV_NORMAL and CV_ONE_STEP, respectively, except
+ *        that the integration never proceeds past the value
+ *        tstop (specified through the routine CVodeSetStopTime).
+ * -----------------------------------------------------------------
+ */
+
+/* lmm */
+#define CV_ADAMS 1
+#define CV_BDF   2
+
+/* iter */
+#define CV_FUNCTIONAL 1
+#define CV_NEWTON     2
+
+/* itol */
+#define CV_SS 1
+#define CV_SV 2
+#define CV_WF 3
+#define CV_EE 4
+
+/* itask */
+#define CV_NORMAL         1
+#define CV_ONE_STEP       2
+#define CV_NORMAL_TSTOP   3
+#define CV_ONE_STEP_TSTOP 4
+
+/* ism */
+#define CV_SIMULTANEOUS 1
+#define CV_STAGGERED    2
+#define CV_STAGGERED1   3
+
+/*
+ * =================================================================
+ *              F U N C T I O N   T Y P E S
+ * =================================================================
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVRhsFn
+ * -----------------------------------------------------------------
+ * The f function which defines the right hand side of the ODE
+ * system y' = f(t,y) must have type CVRhsFn.
+ * f takes as input the independent variable value t, and the
+ * dependent variable vector y.  It stores the result of f(t,y)
+ * in the vector ydot.  The y and ydot arguments are of type
+ * N_Vector.
+ * (Allocation of memory for ydot is handled within CVODES)
+ * The f_data parameter is the same as the f_data
+ * parameter set by the user through the CVodeSetFdata routine.
+ * This user-supplied pointer is passed to the user's f function
+ * every time it is called.
+ * A CVRhsFn f does not have a return value.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVRhsFn)(realtype t, N_Vector y,
+                        N_Vector ydot, void *f_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVRootFn
+ * -----------------------------------------------------------------
+ * A function g, which defines a set of functions g_i(t,y) whose
+ * roots are sought during the integration, must have type CVRootFn.
+ * The function g takes as input the independent variable value
+ * t, and the dependent variable vector y.  It stores the nrtfn
+ * values g_i(t,y) in the realtype array gout.
+ * (Allocation of memory for gout is handled within CVODE.)
+ * The g_data parameter is the same as that passed by the user
+ * to the CVodeSetGdata routine.  This user-supplied pointer is
+ * passed to the user's g function every time it is called.
+ * A CVRootFn g does not have a return value.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVRootFn)(realtype t, N_Vector y, realtype *gout,
+			 void *g_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVEwtFn
+ * -----------------------------------------------------------------
+ * A function e, which sets the error weight vector ewt, must have
+ * type CVEwtFn.
+ * The function e takes as input the current dependent variable y.
+ * It must set the vector of error weights used in the WRMS norm:
+ * 
+ *   ||y||_WRMS = sqrt [ 1/N * sum ( ewt_i * y_i)^2 ]
+ *
+ * Typically, the vector ewt has components:
+ * 
+ *   ewt_i = 1 / (reltol * |y_i| + abstol_i)
+ *
+ * The e_data parameter is the same as that passed by the user
+ * to the CVodeSetEdata routine.  This user-supplied pointer is
+ * passed to the user's e function every time it is called.
+ * A CVEwtFn e must return 0 if the error weight vector has been
+ * successfuly set and a non-zero value otherwise.
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*CVEwtFn)(N_Vector y, N_Vector ewt, void *e_data);
+
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVSensRhsFn
+ * -----------------------------------------------------------------
+ * The fS function which defines the right hand side of the
+ * sensitivity ODE systems s' = f_y * s + f_p must have type
+ * CVSensRhsFn.
+ * fS takes as input the number of sensitivities Ns, the
+ * independent variable value t, the states y and the
+ * corresponding value of f(t,y) in ydot, and the dependent
+ * sensitivity vectors yS. It stores the result of fS in ySdot.
+ * (Allocation of memory for ySdot is handled within CVODES)
+ * The fS_data parameter is the same as the fS_data parameter
+ * set by the user through the CVodeSetSensFdata routine and is
+ * passed to the fS function every time it is called.
+ * A CVSensRhsFn function does not have a return value.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVSensRhsFn)(int Ns, realtype t,
+                            N_Vector y, N_Vector ydot,
+                            N_Vector *yS, N_Vector *ySdot,
+                            void *fS_data,
+                            N_Vector tmp1, N_Vector tmp2);
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVSensRhs1Fn
+ * -----------------------------------------------------------------
+ * The fS1 function which defines the right hand side of the i-th
+ * sensitivity ODE system s_i' = f_y * s_i + f_p must have type
+ * CVSensRhs1Fn.
+ * fS1 takes as input the number of sensitivities Ns, the current
+ * sensitivity iS, the independent variable value t, the states y
+ * and the corresponding value of f(t,y) in ydot, and the
+ * dependent sensitivity vector yS. It stores the result of fS in
+ * ySdot.
+ * (Allocation of memory for ySdot is handled within CVODES)
+ * The fS_data parameter is the same as the fS_data parameter
+ * set by the user through the CVodeSetSensFdata routine and is
+ * passed to the fS1 function every time it is called.
+ * A CVSensRhs1Fn function does not have a return value.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVSensRhs1Fn)(int Ns, realtype t,
+                             N_Vector y, N_Vector ydot,
+                             int iS, N_Vector yS, N_Vector ySdot,
+                             void *fS_data,
+                             N_Vector tmp1, N_Vector tmp2);
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVQuadRhsFn
+ * -----------------------------------------------------------------
+ * The fQ function which defines the right hand side of the
+ * quadrature equations yQ' = fQ(t,y) must have type CVQuadRhsFn.
+ * fQ takes as input the value of the independent variable t,
+ * the vector of states y and must store the result of fQ in
+ * yQdot. (Allocation of memory for yQdot is handled by CVODES).
+ * The fQ_data parameter is the same as the fQ_data parameter
+ * set by the user through the CVodeSetQuadFdata routine and is
+ * passed to the fQ function every time it is called.
+ * A CVQuadRhsFn function does not have a return value.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVQuadRhsFn)(realtype t, N_Vector y, N_Vector yQdot,
+                            void *fQ_data);
+
+/*
+ * =================================================================
+ *          U S E R - C A L L A B L E   R O U T I N E S
+ * =================================================================
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeCreate
+ * -----------------------------------------------------------------
+ * CVodeCreate creates an internal memory block for a problem to
+ * be solved by CVODES.
+ *
+ * lmm  is the type of linear multistep method to be used.
+ *      The legal values are CV_ADAMS and CV_BDF (see previous
+ *      description).
+ *
+ * iter  is the type of iteration used to solve the nonlinear
+ *       system that arises during each internal time step.
+ *       The legal values are CV_FUNCTIONAL and CV_NEWTON.
+ *
+ * If successful, CVodeCreate returns a pointer to initialized
+ * problem memory. This pointer should be passed to CVodeMalloc.
+ * If an initialization error occurs, CVodeCreate prints an error
+ * message to standard err and returns NULL.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API void *CVodeCreate(int lmm, int iter);
+
+/*
+ * -----------------------------------------------------------------
+ * Integrator optional input specification functions
+ * -----------------------------------------------------------------
+ * The following functions can be called to set optional inputs
+ * to values other than the defaults given below:
+ *
+ * Function                |  Optional input / [ default value ]
+ * -----------------------------------------------------------------
+ *                         |
+ * CVodeSetErrFile         | the file pointer for an error file
+ *                         | where all CVODES warning and error
+ *                         | messages will be written. This parameter
+ *                         | can be stdout (standard output), stderr
+ *                         | (standard error), a file pointer
+ *                         | (corresponding to a user error file
+ *                         | opened for writing) returned by fopen.
+ *                         | If not called, then all messages will
+ *                         | be written to standard output.
+ *                         | [stderr]
+ *                         |
+ * CVodeSetFdata           | a pointer to user data that will be
+ *                         | passed to the user's f function every
+ *                         | time f is called.
+ *                         | [NULL]
+ *                         |
+ * CVodeSetEwtFn           | user-provide EwtSet function e and 
+ *                         | a pointer to user data that will be
+ *                         | passed to the user's e function every
+ *                         | time e is called.
+ *                         | [NULL]
+ *                         | [NULL]
+ *                         |
+ * CVodeSetMaxOrd          | maximum lmm order to be used by the
+ *                         | solver.
+ *                         | [12 for Adams , 5 for BDF]
+ *                         |
+ * CVodeSetMaxNumSteps     | maximum number of internal steps to be
+ *                         | taken by the solver in its attempt to
+ *                         | reach tout.
+ *                         | [500]
+ *                         |
+ * CVodeSetMaxHnilWarns    | maximum number of warning messages
+ *                         | issued by the solver that t+h==t on the
+ *                         | next internal step. A value of -1 means
+ *                         | no such messages are issued.
+ *                         | [10]
+ *                         |
+ * CVodeSetStabLimDet      | flag to turn on/off stability limit
+ *                         | detection (TRUE = on, FALSE = off).
+ *                         | When BDF is used and order is 3 or
+ *                         | greater, CVsldet is called to detect
+ *                         | stability limit.  If limit is detected,
+ *                         | the order is reduced.
+ *                         | [FALSE]
+ *                         |
+ * CVodeSetInitStep        | initial step size.
+ *                         | [estimated by CVODES]
+ *                         |
+ * CVodeSetMinStep         | minimum absolute value of step size
+ *                         | allowed.
+ *                         | [0.0]
+ *                         |
+ * CVodeSetMaxStep         | maximum absolute value of step size
+ *                         | allowed.
+ *                         | [infinity]
+ *                         |
+ * CVodeSetStopTime        | the independent variable value past
+ *                         | which the solution is not to proceed.
+ *                         | [infinity]
+ *                         |
+ * CVodeSetMaxErrTestFails | Maximum number of error test failures
+ *                         | in attempting one step.
+ *                         | [7]
+ *                         |
+ * CVodeSetMaxNonlinIters  | Maximum number of nonlinear solver
+ *                         | iterations at one solution.
+ *                         | [3]
+ *                         |
+ * CVodeSetMaxConvFails    | Maximum number of allowable conv.
+ *                         | failures in attempting one step.
+ *                         | [10]
+ *                         |
+ * CVodeSetNonlinConvCoef  | Coeficient in the nonlinear conv.
+ *                         | test.
+ *                         | [0.1]
+ *                         |
+ * -----------------------------------------------------------------
+ *                         |
+ * CVodeSetIterType        | Changes the current nonlinear iteration
+ *                         | type.
+ *                         | [set by CVodecreate]
+ *                         |
+ * CVodeSetTolerances      | Changes the integration tolerances
+ *                         | between calls to CVode().
+ *                         | [set by CVodeMalloc/CVodeReInit]
+ *                         |
+ * -----------------------------------------------------------------
+ * Return flag:
+ *   CV_SUCCESS   if successful
+ *   CV_MEM_NULL  if the cvode memory is NULL
+ *   CV_ILL_INPUT if an argument has an illegal value
+ * -----------------------------------------------------------------
+ */
+
+int CVodeSetErrFile(void *cvode_mem, FILE *errfp);
+WINCVODE_API int CVodeSetFdata(void *cvode_mem, void *f_data);
+int CVodeSetEwtFn(void *cvode_mem, CVEwtFn efun, void *e_data);
+int CVodeSetMaxOrd(void *cvode_mem, int maxord);
+WINCVODE_API int CVodeSetMaxNumSteps(void *cvode_mem, long int mxsteps);
+int CVodeSetMaxHnilWarns(void *cvode_mem, int mxhnil);
+int CVodeSetStabLimDet(void *cvode_mem, booleantype stldet);
+int CVodeSetInitStep(void *cvode_mem, realtype hin);
+int CVodeSetMinStep(void *cvode_mem, realtype hmin);
+int CVodeSetMaxStep(void *cvode_mem, realtype hmax);
+int CVodeSetStopTime(void *cvode_mem, realtype tstop);
+int CVodeSetMaxErrTestFails(void *cvode_mem, int maxnef);
+int CVodeSetMaxNonlinIters(void *cvode_mem, int maxcor);
+int CVodeSetMaxConvFails(void *cvode_mem, int maxncf);
+int CVodeSetNonlinConvCoef(void *cvode_mem, realtype nlscoef);
+
+int CVodeSetIterType(void *cvode_mem, int iter);
+int CVodeSetTolerances(void *cvode_mem,
+                       int itol, realtype reltol, void *abstol);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeMalloc
+ * -----------------------------------------------------------------
+ * CVodeMalloc allocates and initializes memory for a problem to
+ * to be solved by CVODES.
+ *
+ * cvode_mem is pointer to CVODES memory returned by CVodeCreate.
+ *
+ * f       is the right hand side function in y' = f(t,y).
+ *
+ * t0      is the initial value of t.
+ *
+ * y0      is the initial condition vector y(t0).
+ *
+ * itol    is the type of tolerances to be used.
+ *         The legal values are:
+ *            CV_SS (scalar relative and absolute  tolerances),
+ *            CV_SV (scalar relative tolerance and vector
+ *                  absolute tolerance).
+ *            CV_WF (indicates that the user will provide a
+ *                function to evaluate the error weights.
+ *                In this case, reltol and abstol are ignored.)
+ *
+ * reltol  is the relative tolerance scalar.
+ *
+ * abstol  is a pointer to the absolute tolerance scalar or
+ *         an N_Vector of absolute tolerances.
+ *
+ * The parameters itol, reltol, and abstol define a vector of
+ * error weights, ewt, with components
+ *   ewt[i] = 1/(reltol*abs(y[i]) + abstol)   (if itol = CV_SS), or
+ *   ewt[i] = 1/(reltol*abs(y[i]) + abstol[i])   (if itol = CV_SV).
+ * This vector is used in all error and convergence tests, which
+ * use a weighted RMS norm on all error-like vectors v:
+ *    WRMSnorm(v) = sqrt( (1/N) sum(i=1..N) (v[i]*ewt[i])^2 ),
+ * where N is the problem dimension.
+ *
+ * If successful, CVodeMalloc returns SUCCESS. If an argument has
+ * an illegal value, CVodeMalloc prints an error message to the
+ * file specified by errfp and returns one of the error flags
+ * defined below.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVodeMalloc(void *cvode_mem, CVRhsFn f,
+                realtype t0, N_Vector y0,
+                int itol, realtype reltol, void *abstol);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeReInit
+ * -----------------------------------------------------------------
+ * CVodeReInit re-initializes CVode for the solution of a problem,
+ * where a prior call to CVodeMalloc has been made with the same
+ * problem size N. CVodeReInit performs the same input checking
+ * and initializations that CVodeMalloc does.
+ * But it does no memory allocation, assuming that the existing
+ * internal memory is sufficient for the new problem.
+ *
+ * The use of CVodeReInit requires that the maximum method order,
+ * maxord, is no larger for the new problem than for the problem
+ * specified in the last call to CVodeMalloc.  This condition is
+ * automatically fulfilled if the multistep method parameter lmm
+ * is unchanged (or changed from CV_ADAMS to CV_BDF) and the default
+ * value for maxord is specified.
+ *
+ * The first argument to CVodeReInit is:
+ *
+ * cvode_mem = pointer to CVODES memory returned by CVodeCreate.
+ *
+ * All the remaining arguments to CVodeReInit have names and
+ * meanings identical to those of CVodeMalloc.
+ *
+ * The return value of CVodeReInit is equal to CV_SUCCESS = 0 if
+ * there were no errors; otherwise it is a negative int equal to:
+ *   CV_MEM_NULL  indicating cvode_mem was NULL (i.e.,
+ *                CVodeCreate has not been called).
+ *   CV_NO_MALLOC indicating that cvode_mem has not been
+ *                allocated (i.e., CVodeMalloc has not been
+ *                called).
+ *   CV_ILL_INPUT indicating an input argument was illegal
+ *                (including an attempt to increase maxord).
+ * In case of an error return, an error message is also printed.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVodeReInit(void *cvode_mem, CVRhsFn f,
+                realtype t0, N_Vector y0,
+                int itol, realtype reltol, void *abstol);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeRootInit
+ * -----------------------------------------------------------------
+ * CVodeRootInit initializes a rootfinding problem to be solved
+ * during the integration of the ODE system.  It must be called
+ * after CVodeCreate, and before CVode.  The arguments are:
+ *
+ * cvode_mem = pointer to CVODE memory returned by CVodeCreate.
+ *
+  * nrtfn     = number of functions g_i, an int >= 0.
+ *
+ * g         = name of user-supplied function, of type CVRootFn,
+ *             defining the functions g_i whose roots are sought.
+ * g_data    = a pointer to user data that will be passed to the 
+ *             user's g function every time g is called.
+ *
+ * If a new problem is to be solved with a call to CVodeReInit,
+ * where the new problem has no root functions but the prior one
+ * did, then call CVodeRootInit with nrtfn = 0.
+ *
+ * The return value of CVodeRootInit is CV_SUCCESS = 0 if there were
+ * no errors; otherwise it is a negative int equal to:
+ *   CV_MEM_NULL    indicating cvode_mem was NULL, or
+ *   CV_MEM_FAIL    indicating a memory allocation failed.
+ *                  (including an attempt to increase maxord).
+ *   CV_RTFUNC_NULL indicating nrtfn > 0 but g = NULL.
+ * In case of an error return, an error message is also printed.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeRootInit(void *cvode_mem, int nrtfn, CVRootFn g, void *g_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Quadrature optional input specification functions
+ * -----------------------------------------------------------------
+ * The following functions can be called to set optional inputs
+ * to values other than the defaults given below:
+ *
+ * Function             |  Optional input / [ default value ]
+ * --------------------------------------------------------------
+ *                      |
+ * CVodeSetQuadFdata    | a pointer to user data that will be
+ *                      | passed to the user's fQ function every
+ *                      | time fQ is called.
+ *                      | [NULL]
+ *                      |
+ * CVodeSetQuadErrCon   | are quadrature variables considered in
+ *                      | the error control?
+ *                      | If yes, set tolerances for quadrature
+ *                      | integration. 
+ *                      | [errconQ = FALSE]
+ *                      | [ not tolerances]
+ *                      |
+ * -----------------------------------------------------------------
+ * If successful, these functions return CV_SUCCESS. If an argument
+ * has an illegal value, they print an error message to the
+ * file specified by errfp and return one of the error flags
+ * defined for the CVodeSet* routines.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVodeSetQuadFdata(void *cvode_mem, void *fQ_data);
+int CVodeSetQuadErrCon(void *cvode_mem, booleantype errconQ, 
+                       int itolQ, realtype reltolQ, void *abstolQ);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeQuadMalloc
+ * -----------------------------------------------------------------
+ * CVodeQuadMalloc allocates and initializes memory related to
+ * quadrature integration.
+ *
+ * cvode_mem is a pointer to CVODES memory returned by CVodeCreate
+ *
+ * fQ    is the user-provided integrand routine.
+ *
+ * yQ0   is an N_Vector with initial values for quadratures
+ *       (typically yQ0 has all zero components).
+ *
+ * Return values:
+ *  CV_SUCCESS if successful
+ *  CV_MEM_NULL if the cvode memory was NULL
+ *  CV_MEM_FAIL if a memory allocation failed
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVodeQuadMalloc(void *cvode_mem, CVQuadRhsFn fQ, N_Vector yQ0);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeQuadReInit
+ * -----------------------------------------------------------------
+ * CVodeQuadReInit re-initializes CVODES's quadrature related
+ * memory for a problem, assuming it has already been allocated
+ * in prior calls to CVodeMalloc and CvodeQuadMalloc.
+ *
+ * All problem specification inputs are checked for errors.
+ * The number of quadratures Nq is assumed to be unchanged
+ * since the previous call to CVodeQuadMalloc.
+ *
+ * Return values:
+ *  CV_SUCCESS  if successful
+ *  CV_MEM_NULL if the cvode memory was NULL
+ *  CV_NO_QUAD  if quadratures were not initialized
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVodeQuadReInit(void *cvode_mem, CVQuadRhsFn fQ, N_Vector yQ0);
+
+/*
+ * -----------------------------------------------------------------
+ * Forward sensitivity optional input specification functions
+ * -----------------------------------------------------------------
+ * The following functions can be called to set optional inputs
+ * to other values than the defaults given below:
+ *
+ * Function                   |  Optional input / [ default value ]
+ * -----------------------------------------------------------------
+ *                            |
+ * CVodeSetSensRhsFn          | sensitivity right hand side function.
+ *                            | This function must compute right hand
+ *                            | sides for all sensitivity equations.
+ *                            | [CVODES difference quotient approx.]
+ *                            |
+ * CVodeSetSensRhs1Fn         | the sensitivity right hand side.
+ *                            | This function must compute right hand
+ *                            | sides for one sensitivity equation at a
+ *                            | time.
+ *                            | [CVODES difference quotient approx.]
+ *                            |
+ * CVodeSetSensRho            | controls the selection of finite
+ *                            | difference schemes used in evaluating
+ *                            | the sensitivity right hand sides.
+ *                            | [0.0]
+ *                            |
+ * CVodeSetSensParams         | parameter information:
+ *                            | p: pointer to problem parameters
+ *                            | plist: list of parameters with respect
+ *                            |        to which sensitivities are to be
+ *                            |        computed.
+ *                            | pbar: order of magnitude info. 
+ *                            |       Typically, if p[plist[i]] is nonzero, 
+ *                            |       pbar[i]=p[plist[i]].
+ *                            | [p=NULL]
+ *                            | [plist=NULL]
+ *                            | [pbar=NULL]
+ *                            |
+ * CVodeSetSensFdata          | a pointer to user data that will be
+ *                            | passed to the user's fS function every
+ *                            | time fS is called.
+ *                            | [NULL]
+ *                            |
+ * CVodeSetSensErrCon         | are sensitivity variables considered in
+ *                            | the error control?
+ *                            | [FALSE]
+ *                            |
+ * CVodeSetSensTolerances     | type of sensi absolute tolerances.
+ *                            |
+ *                            | sensitivity relative tolerance scalar.
+ *                            |
+ *                            | pointer to the array of sensi
+ *                            | abs tol scalars or a pointer
+ *                            | to the array of N_Vector sensi
+ *                            | absolute tolerances.
+ *                            | [itolS = itol]
+ *                            | [reltolS = reltol]
+ *                            | [abstolS estimated by CVODES]
+ *                            |
+ * CVodeSetSensMaxNonlinIters | Maximum number of nonlinear solver
+ *                            | iterations at one solution.
+ *                            | [3]
+ *                            |
+ * -----------------------------------------------------------------
+ * The return values are the same as for CVodeSet*
+ * -----------------------------------------------------------------
+ */
+
+int CVodeSetSensRhsFn(void *cvode_mem, CVSensRhsFn fS);
+WINCVODE_API int CVodeSetSensRhs1Fn(void *cvode_mem, CVSensRhs1Fn fS);
+WINCVODE_API int CVodeSetSensFdata(void *cvode_mem, void *fS_data);
+WINCVODE_API int CVodeSetSensRho(void *cvode_mem, realtype rho);
+WINCVODE_API int CVodeSetSensErrCon(void *cvode_mem, booleantype errconS);
+int CVodeSetSensMaxNonlinIters(void *cvode_mem, int maxcorS);
+WINCVODE_API int CVodeSetSensParams(void *cvode_mem, realtype *p, realtype *pbar, int *plist);
+int CVodeSetSensTolerances(void *cvode_mem, int itolS,
+                           realtype reltolS, void *abstolS);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeSensMalloc
+ * -----------------------------------------------------------------
+ * CVodeSensMalloc allocates and initializes memory related to
+ * sensitivity computations.
+ *
+ * cvode_mem is pointer to CVODES memory returned by CVodeCreate
+ *
+ * Ns        is the number of sensitivities to be computed.
+ *
+ * ism       is the type of corrector used in sensitivity
+ *           analysis. The legal values are: CV_SIMULTANEOUS,
+ *           CV_STAGGERED, and CV_STAGGERED1 (see previous description)
+ *
+ * yS0       is the array of initial condition vectors for
+ *           sensitivity variables.
+ *
+ * Return values:
+ *   CV_SUCCESS
+ *   CV_MEM_NULL
+ *   CV_ILL_INPUT 
+ *   CV_MEM_FAIL
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVodeSensMalloc(void *cvode_mem, int Ns, int ism, N_Vector *yS0);
+    
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeSensReInit
+ * -----------------------------------------------------------------
+ * CVodeSensReInit re-initializes CVODES's sensitivity related
+ * memory for a problem, assuming it has already been allocated
+ * in prior calls to CVodeMalloc and CvodeSensMalloc.
+ *
+ * All problem specification inputs are checked for errors.
+ * The number of sensitivities Ns is assumed to be unchanged
+ * since the previous call to CVodeSensMalloc.
+ * If any error occurs during initialization, it is reported to
+ * the file whose file pointer is errfp.
+ *
+ * CVodeSensReInit potentially does some minimal memory allocation
+ * (for the sensitivity absolute tolerance and for arrays of
+ * counters used by the CV_STAGGERED1 method).
+ *
+ * The return value is equal to CV_SUCCESS = 0 if there were no
+ * errors; otherwise it is a negative int equal to:
+ *   CV_MEM_NULL  indicating cvode_mem was NULL, or
+ *   CV_NO_SENS   indicating there was not a prior call to
+ *                CVodeSensMalloc.
+ *   CV_ILL_INPUT indicating an input argument was illegal
+ *                (including an attempt to increase maxord).
+ *   CV_MEM_FAIL  indicating a memory request failed.
+ * In case of an error return, an error message is also printed.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVodeSensReInit(void *cvode_mem, int ism, N_Vector *yS0);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeSensToggle
+ * -----------------------------------------------------------------
+ * CVodeSensToggle activates or deactivates sensitivity calculations.
+ * It does NOT deallocate sensitivity-related memory.
+ * It is allowed to set sensi=TRUE only if CVodeSensMalloc has been
+ * previously called.
+ * 
+ * The return value is equal to CV_SUCCESS = 0 if there were no
+ * errors; otherwise it is a negative int equal to:
+ *   CV_MEM_NULL  indicating cvode_mem was NULL
+ *   CV_NO_SENS   indicating there was not a prior call to
+ *                CVodeSensMalloc.   
+ * -----------------------------------------------------------------
+*/
+
+int CVodeSensToggle(void *cvode_mem, booleantype sensi);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVode
+ * -----------------------------------------------------------------
+ * CVode integrates the ODE over an interval in t.
+ * If itask is CV_NORMAL, then the solver integrates from its
+ * current internal t value to a point at or beyond tout, then
+ * interpolates to t = tout and returns y(tout) in the user-
+ * allocated vector yout. If itask is CV_ONE_STEP, then the solver
+ * takes one internal time step and returns in yout the value of
+ * y at the new internal time. In this case, tout is used only
+ * during the first call to CVode to determine the direction of
+ * integration and the rough scale of the problem. In either
+ * case, the time reached by the solver is placed in (*t). The
+ * user is responsible for allocating the memory for this value.
+ *
+ * cvode_mem is the pointer to CVODES memory returned by
+ *           CVodeCreate.
+ *
+ * tout  is the next time at which a computed solution is desired.
+ *
+ * yout  is the computed solution vector. In CV_NORMAL mode with no
+ *       errors and no roots found, yout=y(tout).
+ *
+ * tret  is a pointer to a real location. CVode sets (*tret) to
+ *       the time reached by the solver and returns yout=y(*tret).
+ *
+ * itask is CV_NORMAL, CV_ONE_STEP, CV_NORMAL_TSTOP, or CV_ONE_STEP_TSTOP.
+ *       These four modes are described above.
+ *
+ * Here is a brief description of each return value:
+ *
+ * CV_SUCCESS: CVode succeeded and no roots were found.
+ *
+ * CV_ROOT_RETURN: CVode succeeded, and found one or more roots.
+ *                 If nrtfn > 1, call CVodeGetRootInfo to see
+ *                 which g_i were found to have a root at (*tret).
+ *
+ * CV_TSTOP_RETURN: CVode succeded and returned at tstop.
+ *
+ * CV_MEM_NULL:    The cvode_mem argument was NULL.
+ *
+ * CV_NO_MALLOC:   cvode_mem was not allocated.
+ *
+ * CV_ILL_INPUT:   One of the inputs to CVode is illegal. This
+ *                 includes the situation when a component of the
+ *                 error weight vectors becomes < 0 during
+ *                 internal time-stepping. The ILL_INPUT flag
+ *                 will also be returned if the linear solver
+ *                 routine CV--- (called by the user after
+ *                 calling CVodeCreate) failed to set one of the
+ *                 linear solver-related fields in cvode_mem or
+ *                 if the linear solver's init routine failed. In
+ *                 any case, the user should see the printed
+ *                 error message for more details.
+ *
+ * CV_TOO_MUCH_WORK: The solver took mxstep internal steps but
+ *                   could not reach tout. The default value for
+ *                   mxstep is MXSTEP_DEFAULT = 500.
+ *
+ * CV_TOO_MUCH_ACC: The solver could not satisfy the accuracy
+ *                  demanded by the user for some internal step.
+ *
+ * CV_ERR_FAILURE: Error test failures occurred too many times
+ *                 (= MXNEF = 7) during one internal time step or
+ *                 occurred with |h| = hmin.
+ *
+ * CV_CONV_FAILURE: Convergence test failures occurred too many
+ *                  times (= MXNCF = 10) during one internal time
+ *                  step or occurred with |h| = hmin.
+ *
+ * CV_LSETUP_FAIL: The linear solver's setup routine failed in an
+ *                 unrecoverable manner.
+ *
+ * CV_LSOLVE_FAIL: The linear solver's solve routine failed in an
+ *                 unrecoverable manner.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVode(void *cvode_mem, realtype tout, N_Vector yout,
+          realtype *tret, int itask);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeGetDky
+ * -----------------------------------------------------------------
+ * CVodeGetDky computes the kth derivative of the y function at
+ * time t, where tn-hu <= t <= tn, tn denotes the current
+ * internal time reached, and hu is the last internal step size
+ * successfully used by the solver. The user may request
+ * k=0, 1, ..., qu, where qu is the current order. The
+ * derivative vector is returned in dky. This vector must be
+ * allocated by the caller. It is only legal to call this
+ * function after a successful return from CVode.
+ *
+ * cvode_mem is the pointer to CVODES memory returned by
+ *           CVodeCreate.
+ *
+ * t   is the time at which the kth derivative of y is evaluated.
+ *     The legal range for t is [tn-hu,tn] as described above.
+ *
+ * k   is the order of the derivative of y to be computed. The
+ *     legal range for k is [0,qu] as described above.
+ *
+ * dky is the output derivative vector [(D_k)y](t).
+ *
+ * The return values for CVodeGetDky are defined below.
+ * Here is a brief description of each return value:
+ *
+ * CV_SUCCESS: CVodeGetDky succeeded.
+ *
+ * CV_BAD_K : k is not in the range 0, 1, ..., qu.
+ *
+ * CV_BAD_T : t is not in the interval [tn-hu,tn].
+ *
+ * CV_BAD_DKY : The dky argument was NULL.
+ *
+ * CV_MEM_NULL : The cvode_mem argument was NULL.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetDky(void *cvode_mem, realtype t, int k, N_Vector dky);
+
+/*
+ * -----------------------------------------------------------------
+ * Integrator optional output extraction functions
+ * -----------------------------------------------------------------
+ * The following functions can be called to get optional outputs
+ * and statistics related to the main integrator.
+ * -----------------------------------------------------------------
+ * CVodeGetWorkSpace returns the CVODES real and integer workspaces
+ * CVodeGetNumSteps returns the cumulative number of internal
+ *                  steps taken by the solver
+ * CVodeGetNumRhsEvals returns the number of calls to the user's
+ *                     f function
+ * CVodeGetNumLinSolvSetups returns the number of calls made to
+ *                          the linear solver's setup routine
+ * CVodeGetNumErrTestFails returns the number of local error test
+ *                         failures that have occured
+ * CVodeGetLastOrder returns the order used during the last
+ *                   internal step
+ * CVodeGetCurrentOrder returns the order to be used on the next
+ *                      internal step
+ * CVodeGetNumStabLimOrderReds returns the number of order
+ *                             reductions due to stability limit
+ *                             detection
+ * CVodeGetActualInitStep returns the actual initial step size
+ *                        used by CVODES
+ * CVodeGetLastStep returns the step size for the last internal
+ *                  step
+ * CVodeGetCurrentStep returns the step size to be attempted on
+ *                     the next internal step
+ * CVodeGetCurrentTime returns the current internal time reached
+ *                     by the solver
+ * CVodeGetTolScaleFactor returns a suggested factor by which the
+ *                        user's tolerances should be scaled when
+ *                        too much accuracy has been requested for
+ *                        some internal step
+ * CVodeGetErrWeights returns the state error weight vector.
+ *                    The user must allocate space for ewt.
+ * CVodeGetEstLocalErrors returns the vector of estimated local
+ *                        errors. The user must allocate space
+ *                        for ele.
+ * CVodeGetNumGEvals returns the number of calls to the user's
+ *                   g function (for rootfinding)
+ * CVodeGetRootInfo returns the indices for which g_i was found to 
+ *                  have a root. The user must allocate space for 
+ *                  rootsfound. For i = 0 ... nrtfn-1, 
+ *                  rootsfound[i] = 1 if g_i has a root, and = 0 if not.
+ *
+ * CVodeGet* return values:
+ *   CV_SUCCESS   if succesful
+ *   CV_MEM_NULL  if the cvode memory was NULL
+ *   CV_NO_SLDET  if stability limit was not turned on
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetWorkSpace(void *cvode_mem, long int *lenrw, long int *leniw);
+WINCVODE_API int CVodeGetNumSteps(void *cvode_mem, long int *nsteps);
+WINCVODE_API int CVodeGetNumRhsEvals(void *cvode_mem, long int *nfevals);
+WINCVODE_API int CVodeGetNumLinSolvSetups(void *cvode_mem, long int *nlinsetups);
+WINCVODE_API int CVodeGetNumErrTestFails(void *cvode_mem, long int *netfails);
+int CVodeGetLastOrder(void *cvode_mem, int *qlast);
+int CVodeGetCurrentOrder(void *cvode_mem, int *qcur);
+int CVodeGetNumStabLimOrderReds(void *cvode_mem, long int *nslred);
+int CVodeGetActualInitStep(void *cvode_mem, realtype *hinused);
+int CVodeGetLastStep(void *cvode_mem, realtype *hlast);
+int CVodeGetCurrentStep(void *cvode_mem, realtype *hcur);
+int CVodeGetCurrentTime(void *cvode_mem, realtype *tcur);
+int CVodeGetTolScaleFactor(void *cvode_mem, realtype *tolsfac);
+int CVodeGetErrWeights(void *cvode_mem, N_Vector eweight);
+int CVodeGetEstLocalErrors(void *cvode_mem, N_Vector ele);
+int CVodeGetNumGEvals(void *cvode_mem, long int *ngevals);
+int CVodeGetRootInfo(void *cvode_mem, int *rootsfound);
+
+/*
+ * -----------------------------------------------------------------
+ * As a convenience, the following functions provides the
+ * optional outputs in one group.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetIntegratorStats(void *cvode_mem, long int *nsteps,
+                            long int *nfevals, long int *nlinsetups,
+                            long int *netfails, int *qlast,
+                            int *qcur, realtype *hinused, realtype *hlast,
+                            realtype *hcur, realtype *tcur);
+
+/*
+ * -----------------------------------------------------------------
+ * Nonlinear solver optional output extraction functions
+ * -----------------------------------------------------------------
+ * The following functions can be called to get optional outputs
+ * and statistics related to the nonlinear solver.
+ * -----------------------------------------------------------------
+ * CVodeGetNumNonlinSolvIters returns the number of nonlinear
+ *                            solver iterations performed.
+ * CVodeGetNumNonlinSolvConvFails returns the number of nonlinear
+ *                                convergence failures.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetNumNonlinSolvIters(void *cvode_mem, long int *nniters);
+int CVodeGetNumNonlinSolvConvFails(void *cvode_mem, long int *nncfails);
+
+/*
+ * -----------------------------------------------------------------
+ * As a convenience, the following function provides the
+ * optional outputs in a group.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVodeGetNonlinSolvStats(void *cvode_mem, long int *nniters,
+                            long int *nncfails);
+
+/*
+ * -----------------------------------------------------------------
+ * Quadrature integration solution extraction routines
+ * -----------------------------------------------------------------
+ * The following functions can be called to obtain the quadrature
+ * variables after a successful integration step.
+ * If quadratures were not computed, they return CV_NO_QUAD.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVodeGetQuad(void *cvode_mem, realtype t, N_Vector yQout);
+int CVodeGetQuadDky(void *cvode_mem, realtype t, int k, N_Vector dky);
+
+/*
+ * -----------------------------------------------------------------
+ * Quadrature integration optional output extraction routines
+ * -----------------------------------------------------------------
+ * The following functions can be called to get optional outputs
+ * and statistics related to the integration of quadratures.
+ * -----------------------------------------------------------------
+ * CVodeGetQuadNumRhsEvals returns the number of calls to the
+ *                         user function fQ defining the right hand
+ *                         side of the quadrature variables.
+ * CVodeGetQuadNumErrTestFails returns the number of local error
+ *                             test failures for quadrature variables.
+ * CVodeGetQuadErrWeights returns the vector of error weights for
+ *                        the quadrature variables. The user must
+ *                        allocate space for ewtQ.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetQuadNumRhsEvals(void *cvode_mem, long int *nfQevals);
+int CVodeGetQuadNumErrTestFails(void *cvode_mem, long int *nQetfails);
+int CVodeGetQuadErrWeights(void *cvode_mem, N_Vector eQweight);
+
+/*
+ * -----------------------------------------------------------------
+ * As a convenience, the following function provides the
+ * optional outputs in a group.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetQuadStats(void *cvode_mem, long int *nfQevals,
+                      long int *nQetfails);
+
+/*
+ * -----------------------------------------------------------------
+ * Forward sensitivity solution extraction routines
+ * -----------------------------------------------------------------
+ * CVodeGetSensDky1 computes the kth derivative of the is-th
+ * sensitivity (is=1, 2, ..., Ns) of the y function at time t,
+ * where tn-hu <= t <= tn, tn denotes the current internal time
+ * reached, and hu is the last internal step size successfully
+ * used by the solver. The user may request k=0, 1, ..., qu,
+ * where qu is the current order.
+ * The is-th sensitivity derivative vector is returned in dky.
+ * This vector must be allocated by the caller. It is only legal
+ * to call this function after a successful return from CVode
+ * with sensitivty computations enabled.
+ * Arguments have the same meaning as in CVodeDky.
+ *
+ * CVodeGetSensDky computes the k-th derivative of all
+ * sensitivities of the y function at time t. It repeatedly calls
+ * CVodeGetSensDky. The argument dkyA must be a pointer to
+ * N_Vector and must be allocated by the user to hold at least Ns
+ * vectors.
+ *
+ * CVodeGetSens1 returns the is-th sensitivity of the y function
+ * at the time t. The argument ySout must be an N_Vector and must
+ * be allocated by the user.
+ *
+ * CVodeGetSens returns sensitivities of the y function at
+ * the time t. The argument ySout must be a pointer to N_Vector
+ * and must be allocated by the user to hold at least Ns vectors.
+ *
+ * Return values are similar to those of CVodeDky. Additionally,
+ * CVodeSensDky can return CV_NO_SENS if sensitivities were
+ * not computed and CV_BAD_IS if is < 0 or is >= Ns.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVodeGetSens(void *cvode_mem, realtype t, N_Vector *ySout);
+int CVodeGetSens1(void *cvode_mem, realtype t, int is, N_Vector ySout);
+int CVodeGetSensDky(void *cvode_mem, realtype t, int k,
+                    N_Vector *dkyA);
+int CVodeGetSensDky1(void *cvode_mem, realtype t, int k,
+                     int is, N_Vector dky);
+
+/*
+ * -----------------------------------------------------------------
+ * Forward sensitivity optional output extraction routines
+ * -----------------------------------------------------------------
+ * The following functions can be called to get optional outputs
+ * and statistics related to the integration of sensitivities.
+ * -----------------------------------------------------------------
+ * CVodeGetNumSensRhsEvals returns the number of calls to the
+ *                         sensitivity right hand side routine.
+ * CVodeGetNumRhsEvalsSens returns the number of calls to the
+ *                         user f routine due to finite difference
+ *                         evaluations of the sensitivity equations.
+ * CVodeGetNumSensErrTestFails returns the number of local error
+ *                             test failures for sensitivity variables.
+ * CVodeGetNumSensLinSolvSetups returns the number of calls made
+ *                              to the linear solver's setup routine
+ *                              due to sensitivity computations.
+ * CVodeGetSensErrWeights returns the sensitivity error weight
+ *                        vectors. The user need not allocate space
+ *                        for ewtS.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVodeGetNumSensRhsEvals(void *cvode_mem, long int *nfSevals);
+WINCVODE_API int CVodeGetNumRhsEvalsSens(void *cvode_mem, long int *nfevalsS);
+WINCVODE_API int CVodeGetNumSensErrTestFails(void *cvode_mem, long int *nSetfails);
+WINCVODE_API int CVodeGetNumSensLinSolvSetups(void *cvode_mem, long int *nlinsetupsS);
+int CVodeGetSensErrWeights(void *cvode_mem, N_Vector_S *eSweight);
+
+/*
+ * -----------------------------------------------------------------
+ * As a convenience, the following function provides the
+ * optional outputs in a group.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetSensStats(void *cvode_mem, long int *nfSevals, long int *nfevalsS,
+                      long int *nSetfails, long int *nlinsetupsS);
+
+/*
+ * -----------------------------------------------------------------
+ * Sensitivity nonlinear solver optional output extraction
+ * -----------------------------------------------------------------
+ * The following functions can be called to get optional outputs
+ * and statistics related to the sensitivity nonlinear solver.
+ * -----------------------------------------------------------------
+ * CVodeGetNumSensNonlinSolvIters returns the total number of
+ *                                nonlinear iterations for sensitivity
+ *                                variables.
+ * CVodeGetNumSensNonlinSolvConvFails returns the total number of
+ *                                    nonlinear convergence failures
+ *                                    for sensitivity variables
+ * CVodeGetNumStgrSensNonlinSolvIters returns a vector of Ns
+ *                                    nonlinear iteration counters
+ *                                    for sensitivity variables
+ *                                    in the CV_STAGGERED1 method.
+ * CVodeGetNumStgrSensNonlinSolvConvFails returns a vector of Ns
+ *                                        nonlinear solver convergence
+ *                                        failure counters for
+ *                                        sensitivity variables in
+ *                                        the CV_STAGGERED1 method.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API int CVodeGetNumSensNonlinSolvIters(void *cvode_mem, long int *nSniters);
+WINCVODE_API int CVodeGetNumSensNonlinSolvConvFails(void *cvode_mem, long int *nSncfails);
+int CVodeGetNumStgrSensNonlinSolvIters(void *cvode_mem, long int *nSTGR1niters);
+int CVodeGetNumStgrSensNonlinSolvConvFails(void *cvode_mem, 
+                                           long int *nSTGR1ncfails);
+
+/*
+ * -----------------------------------------------------------------
+ * As a convenience, the following function provides the      
+ * optional outputs in groups.                                    
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetSensNonlinSolvStats(void *cvode_mem, long int *nSniters,
+                                long int *nSncfails);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeFree
+ * -----------------------------------------------------------------
+ * CVodeFree frees the problem memory cvode_mem allocated by
+ * CVodeMalloc.  Its only argument is the pointer cvode_mem
+ * returned by CVodeCreate.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API void CVodeFree(void *cvode_mem);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeQuadFree
+ * -----------------------------------------------------------------
+ * CVodeQuadFree frees the problem memory in cvode_mem allocated
+ * for quadrature integration. Its only argument is the pointer
+ * cvode_mem returned by CVodeCreate.
+ * -----------------------------------------------------------------
+ */
+
+void CVodeQuadFree(void *cvode_mem);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeSensFree
+ * -----------------------------------------------------------------
+ * CVodeSensFree frees the problem memory in cvode_mem allocated
+ * for sensitivity analysis. Its only argument is the pointer
+ * cvode_mem returned by CVodeCreate.
+ * -----------------------------------------------------------------
+ */
+
+void CVodeSensFree(void *cvode_mem);
+
+/* 
+ * ----------------------------------------
+ * CVODES return flags
+ * ----------------------------------------
+ */
+
+#define CV_SUCCESS        0
+#define CV_TSTOP_RETURN   1
+#define CV_ROOT_RETURN    2
+
+#define CV_MEM_NULL      -1
+#define CV_ILL_INPUT     -2
+#define CV_NO_MALLOC     -3
+#define CV_TOO_MUCH_WORK -4
+#define CV_TOO_MUCH_ACC  -5
+#define CV_ERR_FAILURE   -6
+#define CV_CONV_FAILURE  -7
+#define CV_LINIT_FAIL    -8
+#define CV_LSETUP_FAIL   -9
+#define CV_LSOLVE_FAIL   -10
+
+#define CV_MEM_FAIL      -11
+
+#define CV_RTFUNC_NULL   -12
+
+#define CV_NO_SLDET      -13
+#define CV_BAD_K         -14
+#define CV_BAD_T         -15
+#define CV_BAD_DKY       -16
+
+#define CV_PDATA_NULL    -17
+
+#define CV_BAD_IS        -18
+
+#define CV_NO_QUAD       -19
+
+#define CV_NO_SENS       -20
+
+/*
+ * =================================================================
+ *     I N T E R F A C E   T O    L I N E A R   S O L V E R S
+ * =================================================================
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * Communication between CVODE and a CVODE Linear Solver
+ * -----------------------------------------------------------------
+ * convfail (input to cv_lsetup)
+ *
+ * CV_NO_FAILURES : Either this is the first cv_setup call for this
+ *                  step, or the local error test failed on the
+ *                  previous attempt at this step (but the Newton
+ *                  iteration converged).
+ *
+ * CV_FAIL_BAD_J  : This value is passed to cv_lsetup if
+ *
+ *                  (a) The previous Newton corrector iteration
+ *                      did not converge and the linear solver's
+ *                      setup routine indicated that its Jacobian-
+ *                      related data is not current
+ *                                   or
+ *                  (b) During the previous Newton corrector
+ *                      iteration, the linear solver's solve routine
+ *                      failed in a recoverable manner and the
+ *                      linear solver's setup routine indicated that
+ *                      its Jacobian-related data is not current.
+ *
+ * CV_FAIL_OTHER  : During the current internal step try, the
+ *                  previous Newton iteration failed to converge
+ *                  even though the linear solver was using current
+ *                  Jacobian-related data.
+ * -----------------------------------------------------------------
+ */
+
+/* Constants for convfail (input to cv_lsetup) */
+
+#define CV_NO_FAILURES 0
+#define CV_FAIL_BAD_J  1
+#define CV_FAIL_OTHER  2
+
+/*
+ * -----------------------------------------------------------------
+ * int (*cv_linit)(CVodeMem cv_mem);
+ * -----------------------------------------------------------------
+ * The purpose of cv_linit is to complete initializations for a
+ * specific linear solver, such as counters and statistics.
+ * An LInitFn should return 0 if it has successfully initialized the
+ * CVODE linear solver and a negative value otherwise.
+ * If an error does occur, an appropriate message should be sent to
+ * (cv_mem->errfp)
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * int (*cv_lsetup)(CVodeMem cv_mem, int convfail, N_Vector ypred,
+ *                 N_Vector fpred, booleantype *jcurPtr,
+ *                 N_Vector vtemp1, N_Vector vtemp2,
+ *                 N_Vector vtemp3);
+ * -----------------------------------------------------------------
+ * The job of cv_lsetup is to prepare the linear solver for
+ * subsequent calls to cv_lsolve. It may recompute Jacobian-
+ * related data is it deems necessary. Its parameters are as
+ * follows:
+ *
+ * cv_mem - problem memory pointer of type CVodeMem. See the big
+ *          typedef earlier in this file.
+ *
+ * convfail - a flag to indicate any problem that occurred during
+ *            the solution of the nonlinear equation on the
+ *            current time step for which the linear solver is
+ *            being used. This flag can be used to help decide
+ *            whether the Jacobian data kept by a CVODE linear
+ *            solver needs to be updated or not.
+ *            Its possible values have been documented above.
+ *
+ * ypred - the predicted y vector for the current CVODE internal
+ *         step.
+ *
+ * fpred - f(tn, ypred).
+ *
+ * jcurPtr - a pointer to a boolean to be filled in by cv_lsetup.
+ *           The function should set *jcurPtr=TRUE if its Jacobian
+ *           data is current after the call and should set
+ *           *jcurPtr=FALSE if its Jacobian data is not current.
+ *           Note: If cv_lsetup calls for re-evaluation of
+ *           Jacobian data (based on convfail and CVODE state
+ *           data), it should return *jcurPtr=TRUE always;
+ *           otherwise an infinite loop can result.
+ *
+ * vtemp1 - temporary N_Vector provided for use by cv_lsetup.
+ *
+ * vtemp3 - temporary N_Vector provided for use by cv_lsetup.
+ *
+ * vtemp3 - temporary N_Vector provided for use by cv_lsetup.
+ *
+ * The cv_lsetup routine should return 0 if successful, a positive
+ * value for a recoverable error, and a negative value for an
+ * unrecoverable error.
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * int (*cv_lsolve)(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+ *                  N_Vector ycur, N_Vector fcur);
+ * -----------------------------------------------------------------
+ * cv_lsolve must solve the linear equation P x = b, where
+ * P is some approximation to (I - gamma J), J = (df/dy)(tn,ycur)
+ * and the RHS vector b is input. The N-vector ycur contains
+ * the solver's current approximation to y(tn) and the vector
+ * fcur contains the N_Vector f(tn,ycur). The solution is to be
+ * returned in the vector b. cv_lsolve returns a positive value
+ * for a recoverable error and a negative value for an
+ * unrecoverable error. Success is indicated by a 0 return value.
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * void (*cv_lfree)(CVodeMem cv_mem);
+ * -----------------------------------------------------------------
+ * cv_lfree should free up any memory allocated by the linear
+ * solver. This routine is called once a problem has been
+ * completed and the linear solver is no longer needed.
+ * -----------------------------------------------------------------
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/include/cvspgmr.h b/Win32/WinCVODE/sundials/cvodes/include/cvspgmr.h
new file mode 100644
index 0000000..e868cef
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/include/cvspgmr.h
@@ -0,0 +1,376 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:36:53 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the CVODE/CVODES scaled,
+ * preconditioned GMRES linear solver, CVSPGMR.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVSPGMR_H
+#define _CVSPGMR_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "spgmr.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * CVSPGMR solver constants
+ * -----------------------------------------------------------------
+ * CVSPGMR_MAXL   : default value for the maximum Krylov
+ *                  dimension
+ *
+ * CVSPGMR_MSBPRE : maximum number of steps between
+ *                  preconditioner evaluations
+ *
+ * CVSPGMR_DGMAX  : maximum change in gamma between
+ *                  preconditioner evaluations
+ *
+ * CVSPGMR_DELT   : default value for factor by which the
+ *                  tolerance on the nonlinear iteration is
+ *                  multiplied to get a tolerance on the linear
+ *                  iteration
+ * -----------------------------------------------------------------
+ */
+
+#define CVSPGMR_MAXL   5
+#define CVSPGMR_MSBPRE 50
+#define CVSPGMR_DGMAX  RCONST(0.2)
+#define CVSPGMR_DELT   RCONST(0.05)
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVSpgmrPrecSetupFn
+ * -----------------------------------------------------------------
+ * The user-supplied preconditioner setup function PrecSetup and
+ * the user-supplied preconditioner solve function PrecSolve
+ * together must define left and right preconditoner matrices
+ * P1 and P2 (either of which may be trivial), such that the
+ * product P1*P2 is an approximation to the Newton matrix
+ * M = I - gamma*J.  Here J is the system Jacobian J = df/dy,
+ * and gamma is a scalar proportional to the integration step
+ * size h.  The solution of systems P z = r, with P = P1 or P2,
+ * is to be carried out by the PrecSolve function, and PrecSetup
+ * is to do any necessary setup operations.
+ *
+ * The user-supplied preconditioner setup function PrecSetup
+ * is to evaluate and preprocess any Jacobian-related data
+ * needed by the preconditioner solve function PrecSolve.
+ * This might include forming a crude approximate Jacobian,
+ * and performing an LU factorization on the resulting
+ * approximation to M.  This function will not be called in
+ * advance of every call to PrecSolve, but instead will be called
+ * only as often as necessary to achieve convergence within the
+ * Newton iteration.  If the PrecSolve function needs no
+ * preparation, the PrecSetup function can be NULL.
+ *
+ * For greater efficiency, the PrecSetup function may save
+ * Jacobian-related data and reuse it, rather than generating it
+ * from scratch.  In this case, it should use the input flag jok
+ * to decide whether to recompute the data, and set the output
+ * flag *jcurPtr accordingly.
+ *
+ * Each call to the PrecSetup function is preceded by a call to
+ * the RhsFn f with the same (t,y) arguments.  Thus the PrecSetup
+ * function can use any auxiliary data that is computed and
+ * saved by the f function and made accessible to PrecSetup.
+ *
+ * A function PrecSetup must have the prototype given below.
+ * Its parameters are as follows:
+ *
+ * t       is the current value of the independent variable.
+ *
+ * y       is the current value of the dependent variable vector,
+ *          namely the predicted value of y(t).
+ *
+ * fy      is the vector f(t,y).
+ *
+ * jok     is an input flag indicating whether Jacobian-related
+ *         data needs to be recomputed, as follows:
+ *           jok == FALSE means recompute Jacobian-related data
+ *                  from scratch.
+ *           jok == TRUE  means that Jacobian data, if saved from
+ *                  the previous PrecSetup call, can be reused
+ *                  (with the current value of gamma).
+ *         A Precset call with jok == TRUE can only occur after
+ *         a call with jok == FALSE.
+ *
+ * jcurPtr is a pointer to an output integer flag which is
+ *         to be set by PrecSetup as follows:
+ *         Set *jcurPtr = TRUE if Jacobian data was recomputed.
+ *         Set *jcurPtr = FALSE if Jacobian data was not recomputed,
+ *                        but saved data was reused.
+ *
+ * gamma   is the scalar appearing in the Newton matrix.
+ *
+ * P_data  is a pointer to user data - the same as the P_data
+ *         parameter passed to CVSpgmr.
+ *
+ * tmp1, tmp2, and tmp3 are pointers to memory allocated
+ *                      for N_Vectors which can be used by
+ *                      CVSpgmrPrecSetupFn as temporary storage or
+ *                      work space.
+ *
+ * NOTE: If the user's preconditioner needs other quantities,
+ *       they are accessible as follows: hcur (the current stepsize)
+ *       and ewt (the error weight vector) are accessible through
+ *       CVodeGetCurrentStep and CVodeGetErrWeights, respectively).
+ *       The unit roundoff is available as UNIT_ROUNDOFF defined in
+ *       sundialstypes.h.
+ *
+ * Returned value:
+ * The value to be returned by the PrecSetup function is a flag
+ * indicating whether it was successful.  This value should be
+ *   0   if successful,
+ *   > 0 for a recoverable error (step will be retried),
+ *   < 0 for an unrecoverable error (integration is halted).
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*CVSpgmrPrecSetupFn)(realtype t, N_Vector y, N_Vector fy,
+                                  booleantype jok, booleantype *jcurPtr,
+                                  realtype gamma, void *P_data,
+                                  N_Vector tmp1, N_Vector tmp2,
+                                  N_Vector tmp3);
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVSpgmrPrecSolveFn
+ * -----------------------------------------------------------------
+ * The user-supplied preconditioner solve function PrecSolve
+ * is to solve a linear system P z = r in which the matrix P is
+ * one of the preconditioner matrices P1 or P2, depending on the
+ * type of preconditioning chosen.
+ *
+ * A function PrecSolve must have the prototype given below.
+ * Its parameters are as follows:
+ *
+ * t      is the current value of the independent variable.
+ *
+ * y      is the current value of the dependent variable vector.
+ *
+ * fy     is the vector f(t,y).
+ *
+ * r      is the right-hand side vector of the linear system.
+ *
+ * z      is the output vector computed by PrecSolve.
+ *
+ * gamma  is the scalar appearing in the Newton matrix.
+ *
+ * delta  is an input tolerance for use by PSolve if it uses
+ *        an iterative method in its solution.  In that case,
+ *        the residual vector Res = r - P z of the system
+ *        should be made less than delta in weighted L2 norm,
+ *        i.e., sqrt [ Sum (Res[i]*ewt[i])^2 ] < delta.
+ *        Note: the error weight vector ewt can be obtained
+ *        through a call to the routine CVodeGetErrWeights.
+ *
+ * lr     is an input flag indicating whether PrecSolve is to use
+ *        the left preconditioner P1 or right preconditioner
+ *        P2: lr = 1 means use P1, and lr = 2 means use P2.
+ *
+ * P_data is a pointer to user data - the same as the P_data
+ *        parameter passed to CVSpgmr.
+ *
+ * tmp    is a pointer to memory allocated for an N_Vector
+ *        which can be used by PSolve for work space.
+ *
+ * Returned value:
+ * The value to be returned by the PrecSolve function is a flag
+ * indicating whether it was successful.  This value should be
+ *   0 if successful,
+ *   positive for a recoverable error (step will be retried),
+ *   negative for an unrecoverable error (integration is halted).
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*CVSpgmrPrecSolveFn)(realtype t, N_Vector y, N_Vector fy,
+                                  N_Vector r, N_Vector z,
+                                  realtype gamma, realtype delta,
+                                  int lr, void *P_data, N_Vector tmp);
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVSpgmrJacTimesVecFn
+ * -----------------------------------------------------------------
+ * The user-supplied function jtimes is to generate the product
+ * J*v for given v, where J is the Jacobian df/dy, or an
+ * approximation to it, and v is a given vector. It should return
+ * 0 if successful and a nonzero int otherwise.
+ *
+ * A function jtimes must have the prototype given below. Its
+ * parameters are as follows:
+ *
+ *   v        is the N_Vector to be multiplied by J.
+ *
+ *   Jv       is the output N_Vector containing J*v.
+ *
+ *   t        is the current value of the independent variable.
+ *
+ *   y        is the current value of the dependent variable
+ *            vector.
+ *
+ *   fy       is the vector f(t,y).
+ *
+ *   jac_data is a pointer to user Jacobian data, the same as the
+ *            pointer passed to CVSpgmr.
+ *
+ *   tmp      is a pointer to memory allocated for an N_Vector
+ *            which can be used by Jtimes for work space.
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*CVSpgmrJacTimesVecFn)(N_Vector v, N_Vector Jv, realtype t,
+                                    N_Vector y, N_Vector fy,
+                                    void *jac_data, N_Vector tmp);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVSpgmr
+ * -----------------------------------------------------------------
+ * A call to the CVSpgmr function links the main CVODE integrator
+ * with the CVSPGMR linear solver.
+ *
+ * cvode_mem is the pointer to the integrator memory returned by
+ *           CVodeCreate.
+ *
+ * pretype   is the type of user preconditioning to be done.
+ *           This must be one of the four enumeration constants
+ *           NONE, LEFT, RIGHT, or BOTH defined in iterative.h.
+ *           These correspond to no preconditioning,
+ *           left preconditioning only, right preconditioning
+ *           only, and both left and right preconditioning,
+ *           respectively.
+ *
+ * maxl      is the maximum Krylov dimension. This is an
+ *           optional input to the CVSPGMR solver. Pass 0 to
+ *           use the default value CVSPGMR_MAXL=5.
+ *
+ * The return value of CVSpgmr is one of:
+ *    CVSPGMR_SUCCESS   if successful
+ *    CVSPGMR_MEM_NULL  if the cvode memory was NULL
+ *    CVSPGMR_MEM_FAIL  if there was a memory allocation failure
+ *    CVSPGMR_ILL_INPUT if a required vector operation is missing
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmr(void *cvode_mem, int pretype, int maxl);
+
+/*
+ * -----------------------------------------------------------------
+ * Function: CVSpgmrSetPrecType
+ * -----------------------------------------------------------------
+ * CVSpgmrSetPrecType resets the type of preconditioner, pretype,
+ *     from the value set in a prior call to CVSpgmr.
+ *     This must be one of NONE, LEFT, RIGHT, or BOTH.
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrSetPrecType(void *cvode_mem, int pretype);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional inputs to the CVSPGMR linear solver
+ * -----------------------------------------------------------------
+ * CVSpgmrSetGSType specifies the type of Gram-Schmidt
+ *                orthogonalization to be used. This must be one of
+ *                the two enumeration constants MODIFIED_GS or
+ *                CLASSICAL_GS defined in iterative.h. These correspond
+ *                to using modified Gram-Schmidt and classical
+ *                Gram-Schmidt, respectively.
+ *                Default value is MODIFIED_GS.
+ * CVSpgmrSetDelt specifies the factor by which the tolerance on
+ *                the nonlinear iteration is multiplied to get a
+ *                tolerance on the linear iteration. This is an
+ *                optional input to the CVSPGMR solver.
+ *                Default value is 0.05.
+ * CVSpgmrSetPreconditioner specifies the PrecSetup and PrecSolve functions.
+ *                as well as a pointer to user preconditioner data.
+ *                This pointer is passed to PrecSetup and PrecSolve
+ *                every time these routines are called.
+ *                Default is NULL for al three arguments.
+ * CVSpgmrSetJacTimesVecFn specifies the jtimes function and a pointer to
+ *                user Jacobian data. This pointer is passed to jtimes every 
+ *                time the jtimes routine is called.
+ *                Default is to use an internal finite difference
+ *                approximation routine.
+ *
+ * The return value of CVSpgmrSet* is one of:
+ *    CVSPGMR_SUCCESS   if successful
+ *    CVSPGMR_MEM_NULL  if the cvode memory was NULL
+ *    CVSPGMR_LMEM_NULL if the cvspgmr memory was NULL
+ *    CVSPGMR_ILL_INPUT if an input has an illegal value
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrSetGSType(void *cvode_mem, int gstype);
+int CVSpgmrSetDelt(void *cvode_mem, realtype delt);
+int CVSpgmrSetPreconditioner(void *cvode_mem, CVSpgmrPrecSetupFn pset, 
+			     CVSpgmrPrecSolveFn psolve, void *P_data);
+int CVSpgmrSetJacTimesVecFn(void *cvode_mem, 
+                            CVSpgmrJacTimesVecFn jtimes, void *jac_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional outputs from the CVSPGMR linear solver
+ * -----------------------------------------------------------------
+ * CVSpgmrGetWorkSpace returns the real and integer workspace used
+ *                     by CVSPGMR.
+ * CVSpgmrGetNumPrecEvals returns the number of preconditioner
+ *                        evaluations, i.e. the number of calls made
+ *                        to PrecSetup with jok==FALSE.
+ * CVSpgmrGetNumPrecSolves returns the number of calls made to
+ *                         PrecSolve.
+ * CVSpgmrGetNumLinIters returns the number of linear iterations.
+ * CVSpgmrGetNumConvFails returns the number of linear
+ *                        convergence failures.
+ * CVSpgmrGetNumJtimesEvals returns the number of calls to jtimes.
+ * CVSpgmrGetNumRhsEvals returns the number of calls to the user
+ *                       f routine due to finite difference Jacobian
+ *                       times vector evaluation.
+ * CVSpgmrGetLastFlag returns the last error flag set by any of
+ *                    the CVSPGMR interface functions.
+ *
+ * The return value of CVSpgmrGet* is one of:
+ *    CVSPGMR_SUCCESS   if successful
+ *    CVSPGMR_MEM_NULL  if the cvode memory was NULL
+ *    CVSPGMR_LMEM_NULL if the cvspgmr memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetWorkSpace(void *cvode_mem, long int *lenrwSG, long int *leniwSG);
+int CVSpgmrGetNumPrecEvals(void *cvode_mem, long int *npevals);
+int CVSpgmrGetNumPrecSolves(void *cvode_mem, long int *npsolves);
+int CVSpgmrGetNumLinIters(void *cvode_mem, long int *nliters);
+int CVSpgmrGetNumConvFails(void *cvode_mem, long int *nlcfails);
+int CVSpgmrGetNumJtimesEvals(void *cvode_mem, long int *njvevals);
+int CVSpgmrGetNumRhsEvals(void *cvode_mem, long int *nfevalsSG); 
+int CVSpgmrGetLastFlag(void *cvode_mem, int *flag);
+
+/* CVSPGMR return values */
+
+#define CVSPGMR_SUCCESS    0
+#define CVSPGMR_MEM_NULL  -1
+#define CVSPGMR_LMEM_NULL -2
+#define CVSPGMR_ILL_INPUT -3
+#define CVSPGMR_MEM_FAIL  -4
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/source/Makefile b/Win32/WinCVODE/sundials/cvodes/source/Makefile
new file mode 100644
index 0000000..eb0cde8
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/Makefile
@@ -0,0 +1,106 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:37:27 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/cvodes/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for CVODES module
+#
+# cvodes/source/Makefile.  Generated from Makefile.in by configure.
+# -----------------------------------------------------------------
+
+SHELL = /bin/bash
+
+srcdir       = .
+builddir     = .
+abs_builddir = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials/cvodes/source
+top_builddir = ../../
+prefix       = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials
+exec_prefix  = ${prefix}
+includedir   = ${prefix}/include
+libdir       = ${exec_prefix}/lib
+
+INSTALL        = /usr/bin/install -c
+INSTALL_LIB    = ${INSTALL}
+INSTALL_HEADER = ${INSTALL} -m 644
+
+LIBTOOL      = $(SHELL) $(top_builddir)/libtool
+LIBTOOL_DEPS = config/ltmain.sh
+
+CPP      = /usr/bin/cc -E
+CPPFLAGS = 
+CC       = /usr/bin/cc
+CFLAGS   = -g -O2
+LDFLAGS  = 
+LIBS     = -lm 
+
+SHARED_INC_DIR = $(srcdir)/../../shared/include
+CVODES_INC_DIR = $(srcdir)/../include
+
+CVODES_LIB       = libsundials_cvodes.la
+CVODES_LIB_FILES = cvodes.lo cvodesio.lo cvodea.lo cvband.lo cvdense.lo cvdiag.lo cvspgmr.lo cvbandpre.lo cvbbdpre.lo
+
+OBJECT_FILES = cvodes.o cvodesio.o cvodea.o cvband.o cvdense.o cvdiag.o cvspgmr.o cvbandpre.o cvbbdpre.o
+
+all: update $(CVODES_LIB_FILES)
+
+update:
+	${INSTALL_HEADER} ${top_builddir}/config/sundials_config.h ${builddir}
+
+install: update $(CVODES_LIB_FILES)
+	$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(CVODES_LIB) $(CVODES_LIB_FILES) -rpath $(libdir) $(LDFLAGS) $(LIBS) -avoid-version
+	$(LIBTOOL) --mode=install $(INSTALL_LIB) $(CVODES_LIB) $(libdir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvodes.h $(includedir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvodea.h $(includedir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvdense.h $(includedir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvband.h $(includedir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvdiag.h $(includedir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvspgmr.h $(includedir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvbandpre.h $(includedir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvbbdpre.h $(includedir)
+
+clean:
+	$(LIBTOOL) --mode=clean rm -f $(CVODES_LIB)
+	rm -f $(CVODES_LIB_FILES)
+	rm -f $(OBJECT_FILES)
+	rm -f sundials_config.h
+
+uninstall: clean
+	$(LIBTOOL) --mode=uninstall rm -f $(libdir)/$(CVODES_LIB)
+	rm -f $(includedir)/cvodes.h
+	rm -f $(includedir)/cvodea.h
+	rm -f $(includedir)/cvdense.h
+	rm -f $(includedir)/cvband.h
+	rm -f $(includedir)/cvdiag.h
+	rm -f $(includedir)/cvspgmr.h
+	rm -f $(includedir)/cvbandpre.h
+	rm -f $(includedir)/cvbbdpre.h
+
+cvodes.lo: $(srcdir)/cvodes.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvodes.c
+cvodesio.lo: $(srcdir)/cvodesio.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvodesio.c
+cvodea.lo: $(srcdir)/cvodea.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvodea.c
+cvdense.lo: $(srcdir)/cvdense.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdense.c
+cvband.lo: $(srcdir)/cvband.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvband.c
+cvdiag.lo: $(srcdir)/cvdiag.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdiag.c
+cvspgmr.lo: $(srcdir)/cvspgmr.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvspgmr.c
+cvbandpre.lo: $(srcdir)/cvbandpre.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvbandpre.c
+cvbbdpre.lo: $(srcdir)/cvbbdpre.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvbbdpre.c
+
+libtool: $(top_builddir)/$(LIBTOOL_DEPS)
+	@cd $(top_builddir) ;                 \
+	 $(SHELL) ./config.status --recheck ; \
+	 cd $(abs_builddir)
diff --git a/Win32/WinCVODE/sundials/cvodes/source/Makefile.in b/Win32/WinCVODE/sundials/cvodes/source/Makefile.in
new file mode 100644
index 0000000..82f1db8
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/Makefile.in
@@ -0,0 +1,106 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:37:27 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/cvodes/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for CVODES module
+#
+# @configure_input@
+# -----------------------------------------------------------------
+
+SHELL = @SHELL@
+
+srcdir       = @srcdir@
+builddir     = @builddir@
+abs_builddir = @abs_builddir@
+top_builddir = @top_builddir@
+prefix       = @prefix@
+exec_prefix  = @exec_prefix@
+includedir   = @includedir@
+libdir       = @libdir@
+
+INSTALL        = @INSTALL@
+INSTALL_LIB    = @INSTALL_PROGRAM@
+INSTALL_HEADER = @INSTALL_DATA@
+
+LIBTOOL      = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+
+CPP      = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CC       = @CC@
+CFLAGS   = @CFLAGS@
+LDFLAGS  = @LDFLAGS@
+LIBS     = @LIBS@
+
+SHARED_INC_DIR = $(srcdir)/../../shared/include
+CVODES_INC_DIR = $(srcdir)/../include
+
+CVODES_LIB       = libsundials_cvodes.la
+CVODES_LIB_FILES = cvodes.lo cvodesio.lo cvodea.lo cvband.lo cvdense.lo cvdiag.lo cvspgmr.lo cvbandpre.lo cvbbdpre.lo
+
+OBJECT_FILES = cvodes.o cvodesio.o cvodea.o cvband.o cvdense.o cvdiag.o cvspgmr.o cvbandpre.o cvbbdpre.o
+
+all: update $(CVODES_LIB_FILES)
+
+update:
+	${INSTALL_HEADER} ${top_builddir}/config/sundials_config.h ${builddir}
+
+install: update $(CVODES_LIB_FILES)
+	$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(CVODES_LIB) $(CVODES_LIB_FILES) -rpath $(libdir) $(LDFLAGS) $(LIBS) -avoid-version
+	$(LIBTOOL) --mode=install $(INSTALL_LIB) $(CVODES_LIB) $(libdir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvodes.h $(includedir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvodea.h $(includedir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvdense.h $(includedir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvband.h $(includedir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvdiag.h $(includedir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvspgmr.h $(includedir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvbandpre.h $(includedir)
+	$(INSTALL_HEADER) $(CVODES_INC_DIR)/cvbbdpre.h $(includedir)
+
+clean:
+	$(LIBTOOL) --mode=clean rm -f $(CVODES_LIB)
+	rm -f $(CVODES_LIB_FILES)
+	rm -f $(OBJECT_FILES)
+	rm -f sundials_config.h
+
+uninstall: clean
+	$(LIBTOOL) --mode=uninstall rm -f $(libdir)/$(CVODES_LIB)
+	rm -f $(includedir)/cvodes.h
+	rm -f $(includedir)/cvodea.h
+	rm -f $(includedir)/cvdense.h
+	rm -f $(includedir)/cvband.h
+	rm -f $(includedir)/cvdiag.h
+	rm -f $(includedir)/cvspgmr.h
+	rm -f $(includedir)/cvbandpre.h
+	rm -f $(includedir)/cvbbdpre.h
+
+cvodes.lo: $(srcdir)/cvodes.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvodes.c
+cvodesio.lo: $(srcdir)/cvodesio.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvodesio.c
+cvodea.lo: $(srcdir)/cvodea.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvodea.c
+cvdense.lo: $(srcdir)/cvdense.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdense.c
+cvband.lo: $(srcdir)/cvband.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvband.c
+cvdiag.lo: $(srcdir)/cvdiag.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvdiag.c
+cvspgmr.lo: $(srcdir)/cvspgmr.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvspgmr.c
+cvbandpre.lo: $(srcdir)/cvbandpre.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvbandpre.c
+cvbbdpre.lo: $(srcdir)/cvbbdpre.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(CVODES_INC_DIR) $(CFLAGS) -c $(srcdir)/cvbbdpre.c
+
+libtool: $(top_builddir)/$(LIBTOOL_DEPS)
+	@cd $(top_builddir) ;                 \
+	 $(SHELL) ./config.status --recheck ; \
+	 cd $(abs_builddir)
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvband.c b/Win32/WinCVODE/sundials/cvodes/source/cvband.c
new file mode 100644
index 0000000..53cae89
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvband.c
@@ -0,0 +1,566 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the CVBAND linear solver.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvband_impl.h"
+#include "cvodes_impl.h"
+#include "sundialsmath.h"
+
+/* Other Constants */
+
+#define MIN_INC_MULT RCONST(1000.0)
+#define ZERO         RCONST(0.0)
+#define ONE          RCONST(1.0)
+#define TWO          RCONST(2.0)
+
+/* CVBAND linit, lsetup, lsolve, and lfree routines */
+
+static int CVBandInit(CVodeMem cv_mem);
+
+static int CVBandSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                       N_Vector fpred, booleantype *jcurPtr, N_Vector vtemp1,
+                       N_Vector vtemp2, N_Vector vtemp3);
+
+static int CVBandSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                       N_Vector ycur, N_Vector fcur);
+
+static void CVBandFree(CVodeMem cv_mem);
+
+/* CVBAND DQJac routine */
+
+static void CVBandDQJac(long int n, long int mupper, long int mlower,
+                        BandMat J, realtype t,
+                        N_Vector y, N_Vector fy, void *jac_data,
+                        N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/* Readability Replacements */
+
+#define lmm       (cv_mem->cv_lmm)
+#define f         (cv_mem->cv_f)
+#define f_data    (cv_mem->cv_f_data)
+#define uround    (cv_mem->cv_uround)
+#define nst       (cv_mem->cv_nst)
+#define tn        (cv_mem->cv_tn)
+#define h         (cv_mem->cv_h)
+#define gamma     (cv_mem->cv_gamma)
+#define gammap    (cv_mem->cv_gammap)
+#define gamrat    (cv_mem->cv_gamrat)
+#define ewt       (cv_mem->cv_ewt)
+#define nfe       (cv_mem->cv_nfe)
+#define errfp     (cv_mem->cv_errfp)
+#define linit     (cv_mem->cv_linit)
+#define lsetup    (cv_mem->cv_lsetup)
+#define lsolve    (cv_mem->cv_lsolve)
+#define lfree     (cv_mem->cv_lfree)
+#define lmem      (cv_mem->cv_lmem)
+#define vec_tmpl      (cv_mem->cv_tempv)
+#define setupNonNull  (cv_mem->cv_setupNonNull)
+
+#define n          (cvband_mem->b_n)
+#define jac        (cvband_mem->b_jac)
+#define M          (cvband_mem->b_M)
+#define mu         (cvband_mem->b_mu)
+#define ml         (cvband_mem->b_ml)
+#define storage_mu (cvband_mem->b_storage_mu)
+#define pivots     (cvband_mem->b_pivots)
+#define savedJ     (cvband_mem->b_savedJ)
+#define nstlj      (cvband_mem->b_nstlj)
+#define nje        (cvband_mem->b_nje)
+#define nfeB       (cvband_mem->b_nfeB)
+#define J_data     (cvband_mem->b_J_data)
+#define last_flag  (cvband_mem->b_last_flag)
+
+/*
+ * -----------------------------------------------------------------
+ * CVBand
+ * -----------------------------------------------------------------
+ * This routine initializes the memory record and sets various function
+ * fields specific to the band linear solver module.  CVBand first calls
+ * the existing lfree routine if this is not NULL.  It then sets the
+ * cv_linit, cv_lsetup, cv_lsolve, and cv_lfree fields in (*cvode_mem)
+ * to be CVBandInit, CVBandSetup, CVBandSolve, and CVBandFree,
+ * respectively.  It allocates memory for a structure of type
+ * CVBandMemRec and sets the cv_lmem field in (*cvode_mem) to the
+ * address of this structure.  It sets setupNonNull in (*cvode_mem) to be
+ * TRUE, b_mu to be mupper, b_ml to be mlower, and the b_jac field to be 
+ * CVBandDQJac.
+ * Finally, it allocates memory for M, savedJ, and pivot.  The CVBand
+ * return value is SUCCESS = 0, LMEM_FAIL = -1, or LIN_ILL_INPUT = -2.
+ *
+ * NOTE: The band linear solver assumes a serial implementation
+ *       of the NVECTOR package. Therefore, CVBand will first 
+ *       test for compatible a compatible N_Vector internal
+ *       representation by checking that the function 
+ *       N_VGetArrayPointer exists.
+ * -----------------------------------------------------------------
+ */
+                  
+int CVBand(void *cvode_mem, long int N,
+           long int mupper, long int mlower)
+{
+  CVodeMem cv_mem;
+  CVBandMem cvband_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGB_CVMEM_NULL);
+    return(CVBAND_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Test if the NVECTOR package is compatible with the BAND solver */
+  if (vec_tmpl->ops->nvgetarraypointer == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_BAD_NVECTOR);
+    return(CVBAND_ILL_INPUT);
+  }
+
+  if (lfree != NULL) lfree(cv_mem);
+
+  /* Set four main function fields in cv_mem */  
+  linit  = CVBandInit;
+  lsetup = CVBandSetup;
+  lsolve = CVBandSolve;
+  lfree  = CVBandFree;
+  
+  /* Get memory for CVBandMemRec */
+  cvband_mem = (CVBandMem) malloc(sizeof(CVBandMemRec));
+  if (cvband_mem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_MEM_FAIL);
+    return(CVBAND_MEM_FAIL);
+  }
+  
+  /* Set default Jacobian routine and Jacobian data */
+  jac = CVBandDQJac;
+  J_data = cvode_mem;
+  last_flag = CVBAND_SUCCESS;
+
+  setupNonNull = TRUE;
+  
+  /* Load problem dimension */
+  n = N;
+
+  /* Load half-bandwiths in cvband_mem */
+  ml = mlower;
+  mu = mupper;
+
+  /* Test ml and mu for legality */
+  if ((ml < 0) || (mu < 0) || (ml >= N) || (mu >= N)) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_BAD_SIZES);
+    return(CVBAND_ILL_INPUT);
+  }
+
+  /* Set extended upper half-bandwith for M (required for pivoting) */
+  storage_mu = MIN(N-1, mu + ml);
+
+  /* Allocate memory for M, savedJ, and pivot arrays */
+  M = BandAllocMat(N, mu, ml, storage_mu);
+  if (M == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_MEM_FAIL);
+    return(CVBAND_MEM_FAIL);
+  }
+  savedJ = BandAllocMat(N, mu, ml, mu);
+  if (savedJ == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_MEM_FAIL);
+    BandFreeMat(M);
+    return(CVBAND_MEM_FAIL);
+  }
+  pivots = BandAllocPiv(N);
+  if (pivots == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_MEM_FAIL);
+    BandFreeMat(M);
+    BandFreeMat(savedJ);
+    return(CVBAND_MEM_FAIL);
+  }
+
+  /* Attach linear solver memory to integrator memory */
+  lmem = cvband_mem;
+
+  return(CVBAND_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandSetJacFn
+ * -----------------------------------------------------------------
+ */
+
+int CVBandSetJacFn(void *cvode_mem, CVBandJacFn bjac, void *jac_data)
+{
+  CVodeMem cv_mem;
+  CVBandMem cvband_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_CVMEM_NULL);
+    return(CVBAND_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(CVBAND_LMEM_NULL);
+  }
+  cvband_mem = (CVBandMem) lmem;
+
+  jac = bjac;
+  if (bjac != NULL) J_data = jac_data;
+
+  return(CVBAND_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandGetWorkSpace
+ * -----------------------------------------------------------------
+ */
+
+int CVBandGetWorkSpace(void *cvode_mem, long int *lenrwB, long int *leniwB)
+{
+  CVodeMem cv_mem;
+  CVBandMem cvband_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_CVMEM_NULL);
+    return(CVBAND_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(CVBAND_LMEM_NULL);
+  }
+  cvband_mem = (CVBandMem) lmem;
+
+  *lenrwB = n*(storage_mu + mu + 2*ml + 2);
+  *leniwB = n;
+
+  return(CVBAND_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandGetNumJacEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVBandGetNumJacEvals(void *cvode_mem, long int *njevalsB)
+{
+  CVodeMem cv_mem;
+  CVBandMem cvband_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_CVMEM_NULL);
+    return(CVBAND_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(CVBAND_LMEM_NULL);
+  }
+  cvband_mem = (CVBandMem) lmem;
+
+  *njevalsB = nje;
+
+  return(CVBAND_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandGetNumRhsEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVBandGetNumRhsEvals(void *cvode_mem, long int *nfevalsB)
+{
+  CVodeMem cv_mem;
+  CVBandMem cvband_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_CVMEM_NULL);
+    return(CVBAND_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(CVBAND_LMEM_NULL);
+  }
+  cvband_mem = (CVBandMem) lmem;
+
+  *nfevalsB = nfeB;
+
+  return(CVBAND_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandGetLastFlag
+ * -----------------------------------------------------------------
+ */
+
+int CVBandGetLastFlag(void *cvode_mem, int *flag)
+{
+  CVodeMem cv_mem;
+  CVBandMem cvband_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_CVMEM_NULL);
+    return(CVBAND_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(CVBAND_LMEM_NULL);
+  }
+  cvband_mem = (CVBandMem) lmem;
+
+  *flag = last_flag;
+
+  return(CVBAND_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandInit
+ * -----------------------------------------------------------------
+ * This routine does remaining initializations specific to the band
+ * linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static int CVBandInit(CVodeMem cv_mem)
+{
+  CVBandMem cvband_mem;
+
+  cvband_mem = (CVBandMem) lmem;
+
+  nje   = 0;
+  nfeB  = 0;
+  nstlj = 0;
+
+  if (jac == NULL) {
+    jac = CVBandDQJac;
+    J_data = cv_mem;
+  }
+
+  last_flag = CVBAND_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandSetup
+ * -----------------------------------------------------------------
+ * This routine does the setup operations for the band linear solver.
+ * It makes a decision whether or not to call the Jacobian evaluation
+ * routine based on various state variables, and if not it uses the 
+ * saved copy.  In any case, it constructs the Newton matrix 
+ * M = I - gamma*J, updates counters, and calls the band LU 
+ * factorization routine.
+ * -----------------------------------------------------------------
+ */
+
+static int CVBandSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                       N_Vector fpred, booleantype *jcurPtr, N_Vector vtemp1,
+                       N_Vector vtemp2, N_Vector vtemp3)
+{
+  booleantype jbad, jok;
+  realtype dgamma;
+  long int ier;
+  CVBandMem cvband_mem;
+  
+  cvband_mem = (CVBandMem) lmem;
+
+  /* Use nst, gamma/gammap, and convfail to set J eval. flag jok */
+
+  dgamma = ABS((gamma/gammap) - ONE);
+  jbad = (nst == 0) || (nst > nstlj + CVB_MSBJ) ||
+         ((convfail == CV_FAIL_BAD_J) && (dgamma < CVB_DGMAX)) ||
+         (convfail == CV_FAIL_OTHER);
+  jok = !jbad;
+  
+  if (jok) {
+    /* If jok = TRUE, use saved copy of J */
+    *jcurPtr = FALSE;
+    BandCopy(savedJ, M, mu, ml);
+  } else {
+    /* If jok = FALSE, call jac routine for new J value */
+    nje++;
+    nstlj = nst;
+    *jcurPtr = TRUE;
+    BandZero(M); 
+    jac(n, mu, ml, M, tn, ypred, fpred, J_data, vtemp1, vtemp2, vtemp3);
+    BandCopy(M, savedJ, mu, ml);
+  }
+  
+  /* Scale and add I to get M = I - gamma*J */
+  BandScale(-gamma, M);
+  BandAddI(M);
+
+  /* Do LU factorization of M */
+  ier = BandFactor(M, pivots);
+
+  /* Return 0 if the LU was complete; otherwise return 1 */
+  if (ier > 0) {
+    last_flag = ier;
+    return(1);
+  }
+  last_flag = CVBAND_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandSolve
+ * -----------------------------------------------------------------
+ * This routine handles the solve operation for the band linear solver
+ * by calling the band backsolve routine.  The return value is 0.
+ * -----------------------------------------------------------------
+ */
+
+static int CVBandSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                       N_Vector ycur, N_Vector fcur)
+{
+  CVBandMem cvband_mem;
+  realtype *bd;
+
+  cvband_mem = (CVBandMem) lmem;
+
+  bd = N_VGetArrayPointer(b);
+
+  BandBacksolve(M, pivots, bd);
+
+  /* If CV_BDF, scale the correction to account for change in gamma */
+  if ((lmm == CV_BDF) && (gamrat != ONE)) {
+    N_VScale(TWO/(ONE + gamrat), b, b);
+  }
+
+  last_flag = CVBAND_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandFree
+ * -----------------------------------------------------------------
+ * This routine frees memory specific to the band linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static void CVBandFree(CVodeMem cv_mem)
+{
+  CVBandMem cvband_mem;
+
+  cvband_mem = (CVBandMem) lmem;
+
+  BandFreeMat(M);
+  BandFreeMat(savedJ);
+  BandFreePiv(pivots);
+  free(cvband_mem);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandDQJac
+ * -----------------------------------------------------------------
+ * This routine generates a banded difference quotient approximation to
+ * the Jacobian of f(t,y).  It assumes that a band matrix of type
+ * BandMat is stored column-wise, and that elements within each column
+ * are contiguous. This makes it possible to get the address of a column
+ * of J via the macro BAND_COL and to write a simple for loop to set
+ * each of the elements of a column in succession.
+ * -----------------------------------------------------------------
+ */
+
+static void CVBandDQJac(long int N, long int mupper, long int mlower,
+                        BandMat J, realtype t,
+                        N_Vector y, N_Vector fy, void *jac_data,
+                        N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  realtype fnorm, minInc, inc, inc_inv, srur;
+  N_Vector ftemp, ytemp;
+  long int group, i, j, width, ngroups, i1, i2;
+  realtype *col_j, *ewt_data, *fy_data, *ftemp_data, *y_data, *ytemp_data;
+
+  CVodeMem cv_mem;
+  CVBandMem cvband_mem;
+
+  /* jac_dat points to cvode_mem */
+  cv_mem = (CVodeMem) jac_data;
+  cvband_mem = (CVBandMem) lmem;
+
+  /* Rename work vectors for use as temporary values of y and f */
+  ftemp = tmp1;
+  ytemp = tmp2;
+
+  /* Obtain pointers to the data for ewt, fy, ftemp, y, ytemp */
+  ewt_data   = N_VGetArrayPointer(ewt);
+  fy_data    = N_VGetArrayPointer(fy);
+  ftemp_data = N_VGetArrayPointer(ftemp);
+  y_data     = N_VGetArrayPointer(y);
+  ytemp_data = N_VGetArrayPointer(ytemp);
+
+  /* Load ytemp with y = predicted y vector */
+  N_VScale(ONE, y, ytemp);
+
+  /* Set minimum increment based on uround and norm of f */
+  srur = RSqrt(uround);
+  fnorm = N_VWrmsNorm(fy, ewt);
+  minInc = (fnorm != ZERO) ?
+           (MIN_INC_MULT * ABS(h) * uround * N * fnorm) : ONE;
+
+  /* Set bandwidth and number of column groups for band differencing */
+  width = mlower + mupper + 1;
+  ngroups = MIN(width, N);
+  
+  for (group=1; group <= ngroups; group++) {
+    
+    /* Increment all y_j in group */
+    for(j=group-1; j < N; j+=width) {
+      inc = MAX(srur*ABS(y_data[j]), minInc/ewt_data[j]);
+      ytemp_data[j] += inc;
+    }
+
+    /* Evaluate f with incremented y */
+
+    f(tn, ytemp, ftemp, f_data);
+
+    /* Restore ytemp, then form and load difference quotients */
+    for (j=group-1; j < N; j+=width) {
+      ytemp_data[j] = y_data[j];
+      col_j = BAND_COL(J,j);
+      inc = MAX(srur*ABS(y_data[j]), minInc/ewt_data[j]);
+      inc_inv = ONE/inc;
+      i1 = MAX(0, j-mupper);
+      i2 = MIN(j+mlower, N-1);
+      for (i=i1; i <= i2; i++)
+        BAND_COL_ELEM(col_j,i,j) =
+          inc_inv * (ftemp_data[i] - fy_data[i]);
+    }
+  }
+  
+  /* Increment counter nfeB */
+  nfeB += ngroups;
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvband_impl.h b/Win32/WinCVODE/sundials/cvodes/source/cvband_impl.h
new file mode 100644
index 0000000..79fa475
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvband_impl.h
@@ -0,0 +1,90 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the band linear solver, CVBAND.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVBAND_IMPL_H
+#define _CVBAND_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "band.h"
+#include "cvband.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Types: CVBandMemRec, CVBandMem                                
+ * -----------------------------------------------------------------
+ * The type CVBandMem is pointer to a CVBandMemRec.
+ * This structure contains CVBand solver-specific data.                
+ * -----------------------------------------------------------------
+ */                                                                
+
+typedef struct {
+
+  long int b_n;           /* N = problem dimension                    */
+
+  CVBandJacFn b_jac;      /* jac = Jacobian routine to be called      */
+
+  long int b_ml;          /* b_ml = lower bandwidth of savedJ         */
+  
+  long int b_mu;          /* b_mu = upper bandwidth of savedJ         */ 
+  
+  long int b_storage_mu;  /* upper bandwith of M = MIN(N-1,b_mu+b_ml) */
+  
+  BandMat b_M;            /* M = I - gamma J, gamma = h / l1          */
+  
+  long int *b_pivots;     /* pivots = pivot array for PM = LU         */
+  
+  BandMat b_savedJ;       /* savedJ = old Jacobian                    */
+  
+  long int b_nstlj;       /* nstlj = nst at last Jacobian eval.       */
+  
+  long int b_nje;         /* nje = no. of calls to jac                */
+  
+  long int b_nfeB;        /* nfeB = no. of calls to f due to difference
+                             quotient band Jacobian approximation     */
+
+  void *b_J_data;         /* J_data is passed to jac                  */
+
+  int b_last_flag;        /* last error return flag                   */
+  
+} CVBandMemRec, *CVBandMem;
+
+/* Error Messages */
+
+#define _CVBAND_         "CVBand-- "
+#define MSGB_MEM_FAIL    _CVBAND_ "A memory request failed.\n\n"
+#define MSGB_BAD_SIZES_1 _CVBAND_ "Illegal bandwidth parameter(s)."
+#define MSGB_BAD_SIZES_2 "Must have 0 <=  ml, mu <= N-1.\n\n"
+#define MSGB_BAD_SIZES   MSGB_BAD_SIZES_1 MSGB_BAD_SIZES_2
+#define MSGB_BAD_NVECTOR _CVBAND_ "A required vector operation is not implemented.\n\n"
+#define MSGB_CVMEM_NULL  _CVBAND_ "Integrator memory is NULL.\n\n"
+
+#define MSGB_SETGET_CVMEM_NULL "CVBandSet*/CVBandGet*-- Integrator memory is NULL.\n\n"
+
+#define MSGB_SETGET_LMEM_NULL "CVBandSet*/CVBandGet*-- CVBAND memory is NULL.\n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvbandpre.c b/Win32/WinCVODE/sundials/cvodes/source/cvbandpre.c
new file mode 100644
index 0000000..0df5493
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvbandpre.c
@@ -0,0 +1,409 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This file contains implementations of the banded difference
+ * quotient Jacobian-based preconditioner and solver routines for
+ * use with CVSpgmr.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvbandpre_impl.h"
+#include "cvodes_impl.h"
+#include "cvspgmr_impl.h"
+
+#include "sundialsmath.h"
+
+#define MIN_INC_MULT RCONST(1000.0)
+#define ZERO         RCONST(0.0)
+#define ONE          RCONST(1.0)
+
+/* Prototypes of CVBandPrecSetup and CVBandPrecSolve */
+  
+static int CVBandPrecSetup(realtype t, N_Vector y, N_Vector fy, 
+                           booleantype jok, booleantype *jcurPtr, 
+                           realtype gamma, void *bp_data,
+                           N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+static int CVBandPrecSolve(realtype t, N_Vector y, N_Vector fy, 
+                           N_Vector r, N_Vector z, 
+                           realtype gamma, realtype delta,
+                           int lr, void *bp_data, N_Vector tmp);
+
+/* Prototype for difference quotient Jacobian calculation routine */
+
+static void CVBandPDQJac(CVBandPrecData pdata, 
+                         realtype t, N_Vector y, N_Vector fy, 
+                         N_Vector ftemp, N_Vector ytemp);
+
+/* Redability replacements */
+#define vec_tmpl (cv_mem->cv_tempv)
+#define errfp    (cv_mem->cv_errfp)
+
+/*
+ * -----------------------------------------------------------------
+ * Malloc, Free, and Get Functions
+ * NOTE: The band linear solver assumes a serial implementation
+ *       of the NVECTOR package. Therefore, CVBandPrecAlloc will 
+ *       first test for compatible a compatible N_Vector internal
+ *       representation by checking that the function 
+ *       N_VGetArrayPointer exists
+ * -----------------------------------------------------------------
+ */
+
+void *CVBandPrecAlloc(void *cvode_mem, long int N, 
+                      long int mu, long int ml)
+{
+  CVodeMem cv_mem;
+  CVBandPrecData pdata;
+  long int mup, mlp, storagemu;
+
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGBP_CVMEM_NULL);
+    return(NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Test if the NVECTOR package is compatible with the BAND preconditioner */
+  if(vec_tmpl->ops->nvgetarraypointer == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGBP_BAD_NVECTOR);
+    return(NULL);
+  }
+
+  pdata = (CVBandPrecData) malloc(sizeof *pdata);  /* Allocate data memory */
+  if (pdata == NULL) return(NULL);
+
+  /* Load pointers and bandwidths into pdata block. */
+  pdata->cvode_mem = cvode_mem;
+  pdata->N = N;
+  pdata->mu = mup = MIN( N-1, MAX(0,mu) );
+  pdata->ml = mlp = MIN( N-1, MAX(0,ml) );
+
+  /* Initialize nfeBP counter */
+  pdata->nfeBP = 0;
+
+  /* Allocate memory for saved banded Jacobian approximation. */
+  pdata->savedJ = BandAllocMat(N, mup, mlp, mup);
+  if (pdata->savedJ == NULL) {
+    free(pdata);
+    return(NULL);
+  }
+
+  /* Allocate memory for banded preconditioner. */
+  storagemu = MIN( N-1, mup + mlp);
+  pdata->savedP = BandAllocMat(N, mup, mlp, storagemu);
+  if (pdata->savedP == NULL) {
+    BandFreeMat(pdata->savedJ);
+    free(pdata);
+    return(NULL);
+  }
+
+  /* Allocate memory for pivot array. */
+  pdata->pivots = BandAllocPiv(N);
+  if (pdata->savedJ == NULL) {
+    BandFreeMat(pdata->savedP);
+    BandFreeMat(pdata->savedJ);
+    free(pdata);
+    return(NULL);
+  }
+
+  return((void *) pdata);
+}
+
+int CVBPSpgmr(void *cvode_mem, int pretype, int maxl, void *p_data)
+{
+  int flag;
+
+  if ( p_data == NULL ) {
+    fprintf(stderr, MSGBP_NO_PDATA);
+    return(CV_PDATA_NULL);
+  } 
+
+  flag = CVSpgmr(cvode_mem, pretype, maxl);
+  if(flag != CVSPGMR_SUCCESS) return(flag);
+
+  flag = CVSpgmrSetPreconditioner(cvode_mem, CVBandPrecSetup, CVBandPrecSolve, p_data);
+  if(flag != CVSPGMR_SUCCESS) return(flag);
+
+  return(CVSPGMR_SUCCESS);
+}
+
+void CVBandPrecFree(void *bp_data)
+{
+  CVBandPrecData pdata;
+
+  if ( bp_data != NULL ) {
+    pdata = (CVBandPrecData) bp_data;
+    BandFreeMat(pdata->savedJ);
+    BandFreeMat(pdata->savedP);
+    BandFreePiv(pdata->pivots);
+    free(pdata);
+  }
+}
+
+int CVBandPrecGetWorkSpace(void *bp_data, long int *lenrwBP, long int *leniwBP)
+{
+  CVBandPrecData pdata;
+  long int N, ml, mu, smu;
+
+  if ( bp_data == NULL ) {
+    fprintf(stderr, MSGBP_PDATA_NULL);
+    return(CV_PDATA_NULL);
+  } 
+
+  pdata = (CVBandPrecData) bp_data;
+  N   = pdata->N;
+  mu  = pdata->mu;
+  ml  = pdata->ml;
+  smu = MIN( N-1, mu + ml);
+
+  *leniwBP = pdata->N;
+  *lenrwBP = N * ( 2*ml + smu + mu + 2 );
+
+  return(CV_SUCCESS);
+}
+
+int CVBandPrecGetNumRhsEvals(void *bp_data, long int *nfevalsBP)
+{
+  CVBandPrecData pdata;
+
+  if ( bp_data == NULL ) {
+    fprintf(stderr, MSGBP_PDATA_NULL);
+    return(CV_PDATA_NULL);
+  } 
+
+  pdata = (CVBandPrecData) bp_data;
+
+  *nfevalsBP = pdata->nfeBP;
+
+  return(CV_SUCCESS);
+}
+
+/* Readability Replacements */
+
+#define N         (pdata->N)
+#define mu        (pdata->mu)
+#define ml        (pdata->ml)
+#define pivots    (pdata->pivots)
+#define savedJ    (pdata->savedJ)
+#define savedP    (pdata->savedP)
+#define nfeBP     (pdata->nfeBP)
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandPrecSetup
+ * -----------------------------------------------------------------
+ * Together CVBandPrecSetup and CVBandPrecSolve use a banded           
+ * difference quotient Jacobian to create a preconditioner.       
+ * CVBandPrecSetup calculates a new J, if necessary, then           
+ * calculates P = I - gamma*J, and does an LU factorization of P. 
+ *                                                                 
+ * The parameters of CVBandPrecSetup are as follows:                
+ *                                                                 
+ * t       is the current value of the independent variable.      
+ *                                                                 
+ * y       is the current value of the dependent variable vector, 
+ *           namely the predicted value of y(t).                  
+ *                                                                
+ * fy      is the vector f(t,y).                                  
+ *                                                                
+ * jok     is an input flag indicating whether Jacobian-related   
+ *         data needs to be recomputed, as follows:               
+ *           jok == FALSE means recompute Jacobian-related data   
+ *                  from scratch.                                 
+ *           jok == TRUE  means that Jacobian data from the       
+ *                  previous PrecSetup call will be reused          
+ *                  (with the current value of gamma).            
+ *         A CVBandPrecSetup call with jok == TRUE should only      
+ *         occur after a call with jok == FALSE.                  
+ *                                                                
+ * *jcurPtr is a pointer to an output integer flag which is        
+ *          set by CVBandPrecond as follows:                       
+ *           *jcurPtr = TRUE if Jacobian data was recomputed.     
+ *           *jcurPtr = FALSE if Jacobian data was not recomputed,
+ *                      but saved data was reused.                
+ *                                                                
+ * gamma   is the scalar appearing in the Newton matrix.          
+ *                                                                
+ * bp_data is a pointer to preconditoner data - the same as the   
+ *           bp_data parameter passed to CVSpgmr.                
+ *                                                               
+ * tmp1, tmp2, and tmp3 are pointers to memory allocated    
+ *           for vectors of length N for work space.  This        
+ *           routine uses only tmp1 and tmp2.                 
+ *                                                                
+ *                                                                
+ * The value to be returned by the CVBandPrecSetup function is      
+ *   0  if successful, or                                         
+ *   1  if the band factorization failed.                         
+ *
+ * -----------------------------------------------------------------
+ */
+
+static int CVBandPrecSetup(realtype t, N_Vector y, N_Vector fy, 
+                           booleantype jok, booleantype *jcurPtr, 
+                           realtype gamma, void *bp_data,
+                           N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  long int ier;
+  CVBandPrecData pdata;
+
+  /* Assume matrix and pivots have already been allocated. */
+  pdata = (CVBandPrecData) bp_data;
+
+  if (jok) {
+    /* If jok = TRUE, use saved copy of J. */
+    *jcurPtr = FALSE;
+    BandCopy(savedJ, savedP, mu, ml);
+  } else {
+    /* If jok = FALSE, call CVBandPDQJac for new J value. */
+    *jcurPtr = TRUE;
+    BandZero(savedJ);
+    CVBandPDQJac(pdata, t, y, fy, tmp1, tmp2);
+    BandCopy(savedJ, savedP, mu, ml);
+  }
+  
+  /* Scale and add I to get savedP = I - gamma*J. */
+  BandScale(-gamma, savedP);
+  BandAddI(savedP);
+ 
+  /* Do LU factorization of matrix. */
+  ier = BandFactor(savedP, pivots);
+ 
+  /* Return 0 if the LU was complete; otherwise return 1. */
+  if (ier > 0) return(1);
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandPrecSolve
+ * -----------------------------------------------------------------
+ * CVBandPrecSolve solves a linear system P z = r, where P is the
+ * matrix computed by CVBandPrecond.
+ *
+ * The parameters of CVBandPrecSolve used here are as follows:
+ *
+ * r       is the right-hand side vector of the linear system.
+ *
+ * bp_data is a pointer to preconditioner data - the same as the
+ *          bp_data parameter passed to CVSpgmr.
+ *
+ * z       is the output vector computed by CVBandPrecSolve.
+ *
+ * The value returned by the CVBandPrecSolve function is always 0,
+ * indicating success.
+ * -----------------------------------------------------------------
+ */ 
+
+static int CVBandPrecSolve(realtype t, N_Vector y, N_Vector fy, 
+                           N_Vector r, N_Vector z, 
+                           realtype gamma, realtype delta,
+                           int lr, void *bp_data, N_Vector tmp)
+{
+  CVBandPrecData pdata;
+  realtype *zd;
+
+  /* Assume matrix and pivots have already been allocated. */
+  pdata = (CVBandPrecData) bp_data;
+
+  /* Copy r to z. */
+  N_VScale(ONE, r, z);
+
+  /* Do band backsolve on the vector z. */
+  zd = N_VGetArrayPointer(z);
+
+  BandBacksolve(savedP, pivots, zd);
+
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVBandPDQJac
+ * -----------------------------------------------------------------
+ * This routine generates a banded difference quotient approximation to
+ * the Jacobian of f(t,y).  It assumes that a band matrix of type
+ * BandMat is stored column-wise, and that elements within each column
+ * are contiguous. This makes it possible to get the address of a column
+ * of J via the macro BAND_COL and to write a simple for loop to set
+ * each of the elements of a column in succession.
+ * -----------------------------------------------------------------
+ */
+
+#define ewt    (cv_mem->cv_ewt)
+#define uround (cv_mem->cv_uround)
+#define h      (cv_mem->cv_h)
+#define f      (cv_mem->cv_f)
+#define f_data (cv_mem->cv_f_data)
+
+static void CVBandPDQJac(CVBandPrecData pdata, 
+                         realtype t, N_Vector y, N_Vector fy, 
+                         N_Vector ftemp, N_Vector ytemp)
+{
+  CVodeMem cv_mem;
+  realtype    fnorm, minInc, inc, inc_inv, srur;
+  long int group, i, j, width, ngroups, i1, i2;
+  realtype *col_j, *ewt_data, *fy_data, *ftemp_data, *y_data, *ytemp_data;
+
+  cv_mem = (CVodeMem) pdata->cvode_mem;
+
+  /* Obtain pointers to the data for ewt, fy, ftemp, y, ytemp. */
+  ewt_data   = N_VGetArrayPointer(ewt);
+  fy_data    = N_VGetArrayPointer(fy);
+  ftemp_data = N_VGetArrayPointer(ftemp);
+  y_data     = N_VGetArrayPointer(y);
+  ytemp_data = N_VGetArrayPointer(ytemp);
+
+  /* Load ytemp with y = predicted y vector. */
+  N_VScale(ONE, y, ytemp);
+
+  /* Set minimum increment based on uround and norm of f. */
+  srur = RSqrt(uround);
+  fnorm = N_VWrmsNorm(fy, ewt);
+  minInc = (fnorm != ZERO) ?
+           (MIN_INC_MULT * ABS(h) * uround * N * fnorm) : ONE;
+
+  /* Set bandwidth and number of column groups for band differencing. */
+  width = ml + mu + 1;
+  ngroups = MIN(width, N);
+  
+  for (group = 1; group <= ngroups; group++) {
+    
+    /* Increment all y_j in group. */
+    for(j = group-1; j < N; j += width) {
+      inc = MAX(srur*ABS(y_data[j]), minInc/ewt_data[j]);
+      ytemp_data[j] += inc;
+    }
+
+    /* Evaluate f with incremented y. */
+
+    f(t, ytemp, ftemp, f_data);
+    nfeBP++;
+
+    /* Restore ytemp, then form and load difference quotients. */
+    for (j = group-1; j < N; j += width) {
+      ytemp_data[j] = y_data[j];
+      col_j = BAND_COL(savedJ,j);
+      inc = MAX(srur*ABS(y_data[j]), minInc/ewt_data[j]);
+      inc_inv = ONE/inc;
+      i1 = MAX(0, j-mu);
+      i2 = MIN(j+ml, N-1);
+      for (i=i1; i <= i2; i++)
+        BAND_COL_ELEM(col_j,i,j) =
+          inc_inv * (ftemp_data[i] - fy_data[i]);
+    }
+  }
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvbandpre_impl.h b/Win32/WinCVODE/sundials/cvodes/source/cvbandpre_impl.h
new file mode 100644
index 0000000..cf8ddf4
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvbandpre_impl.h
@@ -0,0 +1,70 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Michael Wittman, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the CVBANDPRE module.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVBANDPRE_IMPL_H
+#define _CVBANDPRE_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "cvbandpre.h"
+
+#include "band.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Type: CVBandPrecData
+ * -----------------------------------------------------------------
+ */
+
+typedef struct {
+
+  /* Data set by user in CVBandPrecAlloc: */
+  long int N;
+  long int ml, mu;
+
+  /* Data set by CVBandPrecSetup: */
+  BandMat savedJ;
+  BandMat savedP;
+  long int *pivots;
+
+  /* Rhs calls */
+  long int nfeBP;
+
+  /* Pointer to cvode_mem */
+  void *cvode_mem;
+
+} *CVBandPrecData;
+
+/* Error Messages */
+
+#define _CVBALLOC_        "CVBandPreAlloc-- "
+#define MSGBP_CVMEM_NULL  _CVBALLOC_ "Integrator memory is NULL.\n\n"
+#define MSGBP_BAD_NVECTOR _CVBALLOC_ "A required vector operation is not implemented.\n\n"
+
+#define MSGBP_PDATA_NULL "CVBandPrecGet*-- BandPrecData is NULL.\n\n"
+
+#define MSGBP_NO_PDATA "CVBPSpgmr-- BandPrecData is NULL.\n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvbbdpre.c b/Win32/WinCVODE/sundials/cvodes/source/cvbbdpre.c
new file mode 100644
index 0000000..245fb9a
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvbbdpre.c
@@ -0,0 +1,464 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Michael Wittman, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This file contains implementations of routines for a
+ * band-block-diagonal preconditioner, i.e. a block-diagonal
+ * matrix with banded blocks, for use with CVODE, CVSpgmr, and
+ * the parallel implementation of NVECTOR.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvbbdpre_impl.h"
+#include "cvodes_impl.h"
+#include "cvspgmr_impl.h"
+
+#include "sundialsmath.h"
+
+#define MIN_INC_MULT RCONST(1000.0)
+#define ZERO         RCONST(0.0)
+#define ONE          RCONST(1.0)
+
+/* Prototypes of functions CVBBDPrecSetup and CVBBDPrecSolve */
+
+static int CVBBDPrecSetup(realtype t, N_Vector y, N_Vector fy, 
+                          booleantype jok, booleantype *jcurPtr, 
+                          realtype gamma, void *bbd_data, 
+                          N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+static int CVBBDPrecSolve(realtype t, N_Vector y, N_Vector fy, 
+                          N_Vector r, N_Vector z, 
+                          realtype gamma, realtype delta,
+                          int lr, void *bbd_data, N_Vector tmp);
+
+/* Prototype for difference quotient Jacobian calculation routine */
+
+static void CVBBDDQJac(CVBBDPrecData pdata, realtype t, 
+                       N_Vector y, N_Vector gy, 
+                       N_Vector ytemp, N_Vector gtemp);
+
+/* Redability replacements */
+#define errfp    (cv_mem->cv_errfp)
+#define uround   (cv_mem->cv_uround)
+#define vec_tmpl (cv_mem->cv_tempv)
+
+/*
+ * -----------------------------------------------------------------
+ * User-Callable Functions: malloc, reinit, and free
+ * -----------------------------------------------------------------
+ */
+
+void *CVBBDPrecAlloc(void *cvode_mem, long int Nlocal, 
+                     long int mudq, long int mldq,
+                     long int mukeep, long int mlkeep, 
+                     realtype dqrely, 
+                     CVLocalFn gloc, CVCommFn cfn)
+{
+  CVodeMem cv_mem;
+  CVBBDPrecData pdata;
+  long int muk, mlk, storage_mu;
+
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGBBDP_CVMEM_NULL);
+    return(NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Test if the NVECTOR package is compatible with the BLOCK BAND preconditioner */
+  if(vec_tmpl->ops->nvgetarraypointer == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGBBDP_BAD_NVECTOR);
+    return(NULL);
+  }
+
+  /* Allocate data memory */
+  pdata = (CVBBDPrecData) malloc(sizeof *pdata);  
+  if (pdata == NULL) return(NULL);
+
+  /* Set pointers to gloc and cfn; load half-bandwidths */
+  pdata->cvode_mem = cvode_mem;
+  pdata->gloc = gloc;
+  pdata->cfn = cfn;
+  pdata->mudq = MIN( Nlocal-1, MAX(0,mudq) );
+  pdata->mldq = MIN( Nlocal-1, MAX(0,mldq) );
+  muk = MIN( Nlocal-1, MAX(0,mukeep) );
+  mlk = MIN( Nlocal-1, MAX(0,mlkeep) );
+  pdata->mukeep = muk;
+  pdata->mlkeep = mlk;
+
+  /* Allocate memory for saved Jacobian */
+  pdata->savedJ = BandAllocMat(Nlocal, muk, mlk, muk);
+  if (pdata->savedJ == NULL) { free(pdata); return(NULL); }
+
+  /* Allocate memory for preconditioner matrix */
+  storage_mu = MIN(Nlocal-1, muk + mlk);
+  pdata->savedP = BandAllocMat(Nlocal, muk, mlk, storage_mu);
+  if (pdata->savedP == NULL) {
+    BandFreeMat(pdata->savedJ);
+    free(pdata);
+    return(NULL);
+  }
+  /* Allocate memory for pivots */
+  pdata->pivots = BandAllocPiv(Nlocal);
+  if (pdata->savedJ == NULL) {
+    BandFreeMat(pdata->savedP);
+    BandFreeMat(pdata->savedJ);
+    free(pdata);
+    return(NULL);
+  }
+
+  /* Set pdata->dqrely based on input dqrely (0 implies default). */
+  pdata->dqrely = (dqrely > ZERO) ? dqrely : RSqrt(uround);
+
+  /* Store Nlocal to be used in CVBBDPrecSetup */
+  pdata->n_local = Nlocal;
+
+  /* Set work space sizes and initialize nge */
+  pdata->rpwsize = Nlocal*(muk + 2*mlk + storage_mu + 2);
+  pdata->ipwsize = Nlocal;
+  pdata->nge = 0;
+
+  return((void *)pdata);
+}
+
+int CVBBDSpgmr(void *cvode_mem, int pretype, int maxl, void *bbd_data)
+{
+  int flag;
+
+  if ( bbd_data == NULL ) {
+    fprintf(stderr, MSGBBDP_NO_PDATA);
+    return(CV_PDATA_NULL);
+  } 
+
+  flag = CVSpgmr(cvode_mem, pretype, maxl);
+  if(flag != CVSPGMR_SUCCESS) return(flag);
+
+  flag = CVSpgmrSetPreconditioner(cvode_mem, CVBBDPrecSetup, CVBBDPrecSolve, bbd_data);
+  if(flag != CVSPGMR_SUCCESS) return(flag);
+
+  return(CVSPGMR_SUCCESS);
+}
+
+int CVBBDPrecReInit(void *bbd_data, 
+                    long int mudq, long int mldq, 
+                    realtype dqrely, 
+                    CVLocalFn gloc, CVCommFn cfn)
+{
+  CVBBDPrecData pdata;
+  CVodeMem cv_mem;
+  long int Nlocal;
+
+  if ( bbd_data == NULL ) {
+    fprintf(stderr, MSGBBDP_NO_PDATA);
+    return(CV_PDATA_NULL);
+  } 
+
+  pdata = (CVBBDPrecData) bbd_data;
+  cv_mem = (CVodeMem) pdata->cvode_mem;
+
+  /* Set pointers to gloc and cfn; load half-bandwidths */
+  pdata->gloc = gloc;
+  pdata->cfn = cfn;
+  Nlocal = pdata->n_local;
+  pdata->mudq = MIN( Nlocal-1, MAX(0,mudq) );
+  pdata->mldq = MIN( Nlocal-1, MAX(0,mldq) );
+
+  /* Set pdata->dqrely based on input dqrely (0 implies default). */
+  pdata->dqrely = (dqrely > ZERO) ? dqrely : RSqrt(uround);
+
+  /* Re-initialize nge */
+  pdata->nge = 0;
+
+  return(CV_SUCCESS);
+}
+
+void CVBBDPrecFree(void *bbd_data)
+{
+  CVBBDPrecData pdata;
+  
+  if ( bbd_data != NULL ) {
+    pdata = (CVBBDPrecData) bbd_data;
+    BandFreeMat(pdata->savedJ);
+    BandFreeMat(pdata->savedP);
+    BandFreePiv(pdata->pivots);
+    free(pdata);
+  }
+}
+
+int CVBBDPrecGetWorkSpace(void *bbd_data, long int *lenrwBBDP, long int *leniwBBDP)
+{
+  CVBBDPrecData pdata;
+
+  if ( bbd_data == NULL ) {
+    fprintf(stderr, MSGBBDP_PDATA_NULL);
+    return(CV_PDATA_NULL);
+  } 
+
+  pdata = (CVBBDPrecData) bbd_data;
+
+  *lenrwBBDP = pdata->rpwsize;
+  *leniwBBDP = pdata->ipwsize;
+
+  return(CV_SUCCESS);
+}
+
+int CVBBDPrecGetNumGfnEvals(void *bbd_data, long int *ngevalsBBDP)
+{
+  CVBBDPrecData pdata;
+
+  if ( bbd_data == NULL ) {
+    fprintf(stderr, MSGBBDP_PDATA_NULL);
+    return(CV_PDATA_NULL);
+  } 
+
+  pdata = (CVBBDPrecData) bbd_data;
+
+  *ngevalsBBDP = pdata->nge;
+
+  return(CV_SUCCESS);
+}
+
+
+/* Readability Replacements */
+
+#define Nlocal    (pdata->n_local)
+#define mudq      (pdata->mudq)
+#define mldq      (pdata->mldq)
+#define mukeep    (pdata->mukeep)
+#define mlkeep    (pdata->mlkeep)
+#define dqrely    (pdata->dqrely)
+#define gloc      (pdata->gloc)
+#define cfn       (pdata->cfn)
+#define savedJ    (pdata->savedJ)
+#define savedP    (pdata->savedP)
+#define pivots    (pdata->pivots)
+#define nge       (pdata->nge)
+
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBBDPrecSetup                                      
+ * -----------------------------------------------------------------
+ * CVBBDPrecSetup generates and factors a banded block of the     
+ * preconditioner matrix on each processor, via calls to the      
+ * user-supplied gloc and cfn functions. It uses difference       
+ * quotient approximations to the Jacobian elements.              
+ *                                                                
+ * CVBBDPrecSetup calculates a new J,if necessary, then calculates
+ * P = I - gamma*J, and does an LU factorization of P.            
+ *                                                                
+ * The parameters of CVBBDPrecSetup used here are as follows:     
+ *                                                                
+ * t       is the current value of the independent variable.      
+ *                                                                
+ * y       is the current value of the dependent variable vector, 
+ *         namely the predicted value of y(t).                    
+ *                                                                
+ * fy      is the vector f(t,y).                                  
+ *                                                                
+ * jok     is an input flag indicating whether Jacobian-related   
+ *         data needs to be recomputed, as follows:               
+ *           jok == FALSE means recompute Jacobian-related data   
+ *                  from scratch.                                 
+ *           jok == TRUE  means that Jacobian data from the       
+ *                  previous CVBBDPrecon call can be reused       
+ *                  (with the current value of gamma).            
+ *         A CVBBDPrecon call with jok == TRUE should only occur  
+ *         after a call with jok == FALSE.                        
+ *                                                                
+ * jcurPtr is a pointer to an output integer flag which is        
+ *         set by CVBBDPrecon as follows:                         
+ *           *jcurPtr = TRUE if Jacobian data was recomputed.     
+ *           *jcurPtr = FALSE if Jacobian data was not recomputed,
+ *                      but saved data was reused.    
+ *                                                                
+ * gamma   is the scalar appearing in the Newton matrix.          
+ *                                                                
+ * bbd_data  is a pointer to user data - the same as the P_data   
+ *           parameter passed to CVSpgmr. For CVBBDPrecon, this   
+ *           should be of type CVBBDData.                         
+ *                                                                
+ * tmp1, tmp2, and tmp3 are pointers to memory allocated          
+ *           for NVectors which are be used by CVBBDPrecSetup     
+ *           as temporary storage or work space.                  
+ *                                                                
+ *                                                                
+ * Return value:                                                  
+ * The value returned by this CVBBDPrecSetup function is the int  
+ *   0  if successful,                                            
+ *   1  for a recoverable error (step will be retried).           
+ * -----------------------------------------------------------------
+ */
+
+static int CVBBDPrecSetup(realtype t, N_Vector y, N_Vector fy, 
+                          booleantype jok, booleantype *jcurPtr, 
+                          realtype gamma, void *bbd_data, 
+                          N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  long int ier;
+  CVBBDPrecData pdata;
+
+  pdata = (CVBBDPrecData) bbd_data;
+
+  if (jok) {
+    /* If jok = TRUE, use saved copy of J */
+    *jcurPtr = FALSE;
+    BandCopy(savedJ, savedP, mukeep, mlkeep);
+  } else {
+    /* Otherwise call CVBBDDQJac for new J value */
+    *jcurPtr = TRUE;
+    BandZero(savedJ);
+    CVBBDDQJac(pdata, t, y, tmp1, tmp2, tmp3);
+    nge += 1 + MIN(mldq + mudq + 1, Nlocal);
+    BandCopy(savedJ, savedP, mukeep, mlkeep);
+  }
+  
+  /* Scale and add I to get P = I - gamma*J */
+  BandScale(-gamma, savedP);
+  BandAddI(savedP);
+ 
+  /* Do LU factorization of P in place */
+  ier = BandFactor(savedP, pivots);
+ 
+  /* Return 0 if the LU was complete; otherwise return 1 */
+  if (ier > 0) return(1);
+  return(0);
+}
+
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVBBDPrecSolve                                      
+ * -----------------------------------------------------------------
+ * CVBBDPrecSolve solves a linear system P z = r, with the        
+ * band-block-diagonal preconditioner matrix P generated and      
+ * factored by CVBBDPrecSetup.                                    
+ *                                                                
+ * The parameters of CVBBDPrecSolve used here are as follows:     
+ *                                                                
+ * r      is the right-hand side vector of the linear system.     
+ *                                                                
+ * bbd_data is a pointer to the preconditioner data returned by   
+ *        CVBBDPrecAlloc.                                         
+ *                                                                
+ * z      is the output vector computed by CVBBDPrecSolve.        
+ *                                                                
+ * The value returned by the CVBBDPrecSolve function is always 0, 
+ * indicating success.                                            
+ * -----------------------------------------------------------------
+ */
+
+static int CVBBDPrecSolve(realtype t, N_Vector y, N_Vector fy, 
+                          N_Vector r, N_Vector z, 
+                          realtype gamma, realtype delta,
+                          int lr, void *bbd_data, N_Vector tmp)
+{
+  CVBBDPrecData pdata;
+  realtype *zd;
+
+  pdata = (CVBBDPrecData) bbd_data;
+
+  /* Copy r to z, then do backsolve and return */
+  N_VScale(ONE, r, z);
+  
+  zd = N_VGetArrayPointer(z);
+
+  BandBacksolve(savedP, pivots, zd);
+
+  return(0);
+}
+
+
+/*
+ * -----------------------------------------------------------------
+ * CVBBDDQJac 
+ * -----------------------------------------------------------------
+ * This routine generates a banded difference quotient approximation to
+ * the local block of the Jacobian of g(t,y).  It assumes that a band 
+ * matrix of type BandMat is stored columnwise, and that elements within
+ * each column are contiguous.  All matrix elements are generated as
+ * difference quotients, by way of calls to the user routine gloc.
+ * By virtue of the band structure, the number of these calls is
+ * bandwidth + 1, where bandwidth = mldq + mudq + 1.
+ * But the band matrix kept has bandwidth = mlkeep + mukeep + 1.
+ * This routine also assumes that the local elements of a vector are
+ * stored contiguously.
+ * -----------------------------------------------------------------
+ */
+
+#define ewt    (cv_mem->cv_ewt)
+#define h      (cv_mem->cv_h)
+#define f_data (cv_mem->cv_f_data)
+
+static void CVBBDDQJac(CVBBDPrecData pdata, realtype t, 
+                       N_Vector y, N_Vector gy, 
+                       N_Vector ytemp, N_Vector gtemp)
+{
+  CVodeMem cv_mem;
+  realtype    gnorm, minInc, inc, inc_inv;
+  long int group, i, j, width, ngroups, i1, i2;
+  realtype *y_data, *ewt_data, *gy_data, *gtemp_data, *ytemp_data, *col_j;
+
+  cv_mem = (CVodeMem) pdata->cvode_mem;
+
+  /* Load ytemp with y = predicted solution vector */
+  N_VScale(ONE, y, ytemp);
+
+  /* Call cfn and gloc to get base value of g(t,y) */
+  if (cfn != NULL)
+    cfn (Nlocal, t, y, f_data);
+  gloc(Nlocal, t, ytemp, gy, f_data);
+
+  /* Obtain pointers to the data for various vectors */
+  y_data     =  N_VGetArrayPointer(y);
+  gy_data    =  N_VGetArrayPointer(gy);
+  ewt_data   =  N_VGetArrayPointer(ewt);
+  ytemp_data =  N_VGetArrayPointer(ytemp);
+  gtemp_data =  N_VGetArrayPointer(gtemp);
+
+  /* Set minimum increment based on uround and norm of g */
+  gnorm = N_VWrmsNorm(gy, ewt);
+  minInc = (gnorm != ZERO) ?
+           (MIN_INC_MULT * ABS(h) * uround * Nlocal * gnorm) : ONE;
+
+  /* Set bandwidth and number of column groups for band differencing */
+  width = mldq + mudq + 1;
+  ngroups = MIN(width, Nlocal);
+
+  /* Loop over groups */  
+  for (group=1; group <= ngroups; group++) {
+    
+    /* Increment all y_j in group */
+    for(j=group-1; j < Nlocal; j+=width) {
+      inc = MAX(dqrely*ABS(y_data[j]), minInc/ewt_data[j]);
+      ytemp_data[j] += inc;
+    }
+
+    /* Evaluate g with incremented y */
+    gloc(Nlocal, t, ytemp, gtemp, f_data);
+
+    /* Restore ytemp, then form and load difference quotients */
+    for (j=group-1; j < Nlocal; j+=width) {
+      ytemp_data[j] = y_data[j];
+      col_j = BAND_COL(savedJ,j);
+      inc = MAX(dqrely*ABS(y_data[j]), minInc/ewt_data[j]);
+      inc_inv = ONE/inc;
+      i1 = MAX(0, j-mukeep);
+      i2 = MIN(j+mlkeep, Nlocal-1);
+      for (i=i1; i <= i2; i++)
+        BAND_COL_ELEM(col_j,i,j) =
+          inc_inv * (gtemp_data[i] - gy_data[i]);
+    }
+  }
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvbbdpre_impl.h b/Win32/WinCVODE/sundials/cvodes/source/cvbbdpre_impl.h
new file mode 100644
index 0000000..791b3ad
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvbbdpre_impl.h
@@ -0,0 +1,78 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Michael Wittman, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the CVBBDPRE module.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVBBDPRE_IMPL_H
+#define _CVBBDPRE_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "cvbbdpre.h"
+
+#include "band.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Type: CVBBDPrecData
+ * -----------------------------------------------------------------
+ */
+
+typedef struct {
+
+  /* passed by user to CVBBDPrecAlloc, used by PrecSetup/PrecSolve */
+  long int mudq, mldq, mukeep, mlkeep;
+  realtype dqrely;
+  CVLocalFn gloc;
+  CVCommFn cfn;
+
+  /* set by CVBBDPrecSetup and used by CVBBDPrecSolve */
+  BandMat savedJ;
+  BandMat savedP;
+  long int *pivots;
+
+  /* set by CVBBDPrecAlloc and used by CVBBDPrecSetup */
+  long int n_local;
+
+  /* available for optional output: */
+  long int rpwsize;
+  long int ipwsize;
+  long int nge;
+
+  /* Pointer to cvode_mem */
+  void *cvode_mem;
+
+} *CVBBDPrecData;
+
+
+/* Error Messages */
+
+#define _CVBBDALLOC_        "CVBBDAlloc-- "
+#define MSGBBDP_CVMEM_NULL  _CVBBDALLOC_ "Integrator memory is NULL.\n\n"
+#define MSGBBDP_BAD_NVECTOR _CVBBDALLOC_ "A required vector operation is not implemented.\n\n"
+
+#define MSGBBDP_PDATA_NULL "CVBBDPrecGet*-- BBDPrecData is NULL.\n\n"
+
+#define MSGBBDP_NO_PDATA "CVBBDSpgmr-- BBDPrecData is NULL.\n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvdense.c b/Win32/WinCVODE/sundials/cvodes/source/cvdense.c
new file mode 100644
index 0000000..bb1ac16
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvdense.c
@@ -0,0 +1,537 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the CVDENSE linear solver.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvdense_impl.h"
+#include "cvodes_impl.h"
+
+#include "sundialsmath.h"
+
+/* Other Constants */
+
+#define MIN_INC_MULT RCONST(1000.0)
+#define ZERO         RCONST(0.0)
+#define ONE          RCONST(1.0)
+#define TWO          RCONST(2.0)
+
+/* CVDENSE linit, lsetup, lsolve, and lfree routines */
+ 
+static int CVDenseInit(CVodeMem cv_mem);
+
+static int CVDenseSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                        N_Vector fpred, booleantype *jcurPtr, 
+                        N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3);
+
+static int CVDenseSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                        N_Vector ycur, N_Vector fcur);
+
+static void CVDenseFree(CVodeMem cv_mem);
+
+/* CVDENSE DQJac routine */
+
+static void CVDenseDQJac(long int n, DenseMat J, realtype t, 
+                         N_Vector y, N_Vector fy, void *jac_data,
+                         N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/* Readability Replacements */
+
+#define lmm       (cv_mem->cv_lmm)
+#define f         (cv_mem->cv_f)
+#define f_data    (cv_mem->cv_f_data)
+#define uround    (cv_mem->cv_uround)
+#define nst       (cv_mem->cv_nst)
+#define tn        (cv_mem->cv_tn)
+#define h         (cv_mem->cv_h)
+#define gamma     (cv_mem->cv_gamma)
+#define gammap    (cv_mem->cv_gammap)
+#define gamrat    (cv_mem->cv_gamrat)
+#define ewt       (cv_mem->cv_ewt)
+#define errfp     (cv_mem->cv_errfp)
+#define linit     (cv_mem->cv_linit)
+#define lsetup    (cv_mem->cv_lsetup)
+#define lsolve    (cv_mem->cv_lsolve)
+#define lfree     (cv_mem->cv_lfree)
+#define lmem      (cv_mem->cv_lmem)
+#define vec_tmpl     (cv_mem->cv_tempv)
+#define setupNonNull (cv_mem->cv_setupNonNull)
+
+#define n         (cvdense_mem->d_n)
+#define jac       (cvdense_mem->d_jac)
+#define M         (cvdense_mem->d_M)
+#define pivots    (cvdense_mem->d_pivots)
+#define savedJ    (cvdense_mem->d_savedJ)
+#define nstlj     (cvdense_mem->d_nstlj)
+#define nje       (cvdense_mem->d_nje)
+#define nfeD      (cvdense_mem->d_nfeD)
+#define J_data    (cvdense_mem->d_J_data)
+#define last_flag (cvdense_mem->d_last_flag)
+                  
+/*
+ * -----------------------------------------------------------------
+ * CVDense
+ * -----------------------------------------------------------------
+ * This routine initializes the memory record and sets various function
+ * fields specific to the dense linear solver module.  CVDense first
+ * calls the existing lfree routine if this is not NULL.  Then it sets
+ * the cv_linit, cv_lsetup, cv_lsolve, cv_lfree fields in (*cvode_mem)
+ * to be CVDenseInit, CVDenseSetup, CVDenseSolve, and CVDenseFree,
+ * respectively.  It allocates memory for a structure of type
+ * CVDenseMemRec and sets the cv_lmem field in (*cvode_mem) to the
+ * address of this structure.  It sets setupNonNull in (*cvode_mem) to
+ * TRUE, and the d_jac field to the default CVDenseDQJac.
+ * Finally, it allocates memory for M, savedJ, and pivots.
+ * The return value is SUCCESS = 0, or LMEM_FAIL = -1.
+ *
+ * NOTE: The dense linear solver assumes a serial implementation
+ *       of the NVECTOR package. Therefore, CVDense will first 
+ *       test for compatible a compatible N_Vector internal
+ *       representation by checking that N_VGetArrayPointer and
+ *       N_VSetArrayPointer exist.
+ * -----------------------------------------------------------------
+ */
+
+int CVDense(void *cvode_mem, long int N)
+{
+  CVodeMem cv_mem;
+  CVDenseMem cvdense_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDS_CVMEM_NULL);
+    return(CVDENSE_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Test if the NVECTOR package is compatible with the DENSE solver */
+  if (vec_tmpl->ops->nvgetarraypointer == NULL ||
+      vec_tmpl->ops->nvsetarraypointer == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_BAD_NVECTOR);
+    return(CVDENSE_ILL_INPUT);
+  }
+
+  if (lfree !=NULL) lfree(cv_mem);
+
+  /* Set four main function fields in cv_mem */
+  linit  = CVDenseInit;
+  lsetup = CVDenseSetup;
+  lsolve = CVDenseSolve;
+  lfree  = CVDenseFree;
+
+  /* Get memory for CVDenseMemRec */
+  cvdense_mem = (CVDenseMem) malloc(sizeof(CVDenseMemRec));
+  if (cvdense_mem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_MEM_FAIL);
+    return(CVDENSE_MEM_FAIL);
+  }
+
+  /* Set default Jacobian routine and Jacobian data */
+  jac = CVDenseDQJac;
+  J_data = cvode_mem;
+  last_flag = CVDENSE_SUCCESS;
+
+  setupNonNull = TRUE;
+
+  /* Set problem dimension */
+  n = N;
+
+  /* Allocate memory for M, savedJ, and pivot array */
+  
+  M = DenseAllocMat(N);
+  if (M == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_MEM_FAIL);
+    return(CVDENSE_MEM_FAIL);
+  }
+  savedJ = DenseAllocMat(N);
+  if (savedJ == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_MEM_FAIL);
+    DenseFreeMat(M);
+    return(CVDENSE_MEM_FAIL);
+  }
+  pivots = DenseAllocPiv(N);
+  if (pivots == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_MEM_FAIL);
+    DenseFreeMat(M);
+    DenseFreeMat(savedJ);
+    return(CVDENSE_MEM_FAIL);
+  }
+
+  /* Attach linear solver memory to integrator memory */
+  lmem = cvdense_mem;
+
+  return(CVDENSE_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseSetJacFn
+ * -----------------------------------------------------------------
+ */
+
+int CVDenseSetJacFn(void *cvode_mem, CVDenseJacFn djac, void *jac_data)
+{
+  CVodeMem cv_mem;
+  CVDenseMem cvdense_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDS_SETGET_CVMEM_NULL);
+    return(CVDENSE_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_SETGET_LMEM_NULL);
+    return(CVDENSE_LMEM_NULL);
+  }
+  cvdense_mem = (CVDenseMem) lmem;
+
+  jac = djac;
+  if (djac != NULL) J_data = jac_data;
+
+  return(CVDENSE_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseGetWorkSpace
+ * -----------------------------------------------------------------
+ */
+
+int CVDenseGetWorkSpace(void *cvode_mem, long int *lenrwD, long int *leniwD)
+{
+  CVodeMem cv_mem;
+  CVDenseMem cvdense_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDS_SETGET_CVMEM_NULL);
+    return(CVDENSE_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_SETGET_LMEM_NULL);
+    return(CVDENSE_LMEM_NULL);
+  }
+  cvdense_mem = (CVDenseMem) lmem;
+
+  *lenrwD = 2*n*n;
+  *leniwD = n;
+
+  return(CVDENSE_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseGetNumJacEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVDenseGetNumJacEvals(void *cvode_mem, long int *njevalsD)
+{
+  CVodeMem cv_mem;
+  CVDenseMem cvdense_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDS_SETGET_CVMEM_NULL);
+    return(CVDENSE_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_SETGET_LMEM_NULL);
+    return(CVDENSE_LMEM_NULL);
+  }
+  cvdense_mem = (CVDenseMem) lmem;
+
+  *njevalsD = nje;
+
+  return(CVDENSE_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseGetNumRhsEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVDenseGetNumRhsEvals(void *cvode_mem, long int *nfevalsD)
+{
+  CVodeMem cv_mem;
+  CVDenseMem cvdense_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDS_SETGET_CVMEM_NULL);
+    return(CVDENSE_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_SETGET_LMEM_NULL);
+    return(CVDENSE_LMEM_NULL);
+  }
+  cvdense_mem = (CVDenseMem) lmem;
+
+  *nfevalsD = nfeD;
+
+  return(CVDENSE_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseGetLastFlag
+ * -----------------------------------------------------------------
+ */
+
+int CVDenseGetLastFlag(void *cvode_mem, int *flag)
+{
+  CVodeMem cv_mem;
+  CVDenseMem cvdense_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDS_SETGET_CVMEM_NULL);
+    return(CVDENSE_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDS_SETGET_LMEM_NULL);
+    return(CVDENSE_LMEM_NULL);
+  }
+  cvdense_mem = (CVDenseMem) lmem;
+
+  *flag = last_flag;
+
+  return(CVDENSE_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseInit
+ * -----------------------------------------------------------------
+ * This routine does remaining initializations specific to the dense
+ * linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static int CVDenseInit(CVodeMem cv_mem)
+{
+  CVDenseMem cvdense_mem;
+
+  cvdense_mem = (CVDenseMem) lmem;
+  
+  nje   = 0;
+  nfeD  = 0;
+  nstlj = 0;
+  
+  if (jac == NULL) {
+    jac = CVDenseDQJac;
+    J_data = cv_mem;
+  }
+
+  last_flag = CVDENSE_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseSetup
+ * -----------------------------------------------------------------
+ * This routine does the setup operations for the dense linear solver.
+ * It makes a decision whether or not to call the Jacobian evaluation
+ * routine based on various state variables, and if not it uses the 
+ * saved copy.  In any case, it constructs the Newton matrix 
+ * M = I - gamma*J, updates counters, and calls the dense LU 
+ * factorization routine.
+ * -----------------------------------------------------------------
+ */
+
+static int CVDenseSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                        N_Vector fpred, booleantype *jcurPtr, 
+                        N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3)
+{
+  booleantype jbad, jok;
+  realtype dgamma;
+  long int ier;
+  CVDenseMem cvdense_mem;
+  
+  cvdense_mem = (CVDenseMem) lmem;
+ 
+  /* Use nst, gamma/gammap, and convfail to set J eval. flag jok */
+ 
+  dgamma = ABS((gamma/gammap) - ONE);
+  jbad = (nst == 0) || (nst > nstlj + CVD_MSBJ) ||
+         ((convfail == CV_FAIL_BAD_J) && (dgamma < CVD_DGMAX)) ||
+         (convfail == CV_FAIL_OTHER);
+  jok = !jbad;
+ 
+  if (jok) {
+    /* If jok = TRUE, use saved copy of J */
+    *jcurPtr = FALSE;
+    DenseCopy(savedJ, M);
+  } else {
+    /* If jok = FALSE, call jac routine for new J value */
+    nje++;
+    nstlj = nst;
+    *jcurPtr = TRUE;
+    DenseZero(M); 
+    jac(n, M, tn, ypred, fpred, J_data, vtemp1, vtemp2, vtemp3);
+    DenseCopy(M, savedJ);
+  }
+  
+  /* Scale and add I to get M = I - gamma*J */
+  DenseScale(-gamma, M);
+  DenseAddI(M);
+
+  /* Do LU factorization of M */
+  ier = DenseFactor(M, pivots); 
+
+  /* Return 0 if the LU was complete; otherwise return 1 */
+  last_flag = ier;
+  if (ier > 0) return(1);
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseSolve
+ * -----------------------------------------------------------------
+ * This routine handles the solve operation for the dense linear solver
+ * by calling the dense backsolve routine.  The returned value is 0.
+ * -----------------------------------------------------------------
+ */
+
+static int CVDenseSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                        N_Vector ycur, N_Vector fcur)
+{
+  CVDenseMem cvdense_mem;
+  realtype *bd;
+
+  cvdense_mem = (CVDenseMem) lmem;
+  
+  bd = N_VGetArrayPointer(b);
+
+  DenseBacksolve(M, pivots, bd);
+
+  /* If CV_BDF, scale the correction to account for change in gamma */
+  if ((lmm == CV_BDF) && (gamrat != ONE)) {
+    N_VScale(TWO/(ONE + gamrat), b, b);
+  }
+  
+  last_flag = CVDENSE_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseFree
+ * -----------------------------------------------------------------
+ * This routine frees memory specific to the dense linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static void CVDenseFree(CVodeMem cv_mem)
+{
+  CVDenseMem  cvdense_mem;
+
+  cvdense_mem = (CVDenseMem) lmem;
+  
+  DenseFreeMat(M);
+  DenseFreeMat(savedJ);
+  DenseFreePiv(pivots);
+  free(cvdense_mem);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDenseDQJac 
+ * -----------------------------------------------------------------
+ * This routine generates a dense difference quotient approximation to
+ * the Jacobian of f(t,y). It assumes that a dense matrix of type
+ * DenseMat is stored column-wise, and that elements within each column
+ * are contiguous. The address of the jth column of J is obtained via
+ * the macro DENSE_COL and this pointer is associated with an N_Vector
+ * using the N_VGetArrayPointer/N_VSetArrayPointer functions. 
+ * Finally, the actual computation of the jth column of the Jacobian is 
+ * done with a call to N_VLinearSum.
+ * -----------------------------------------------------------------
+ */
+ 
+static void CVDenseDQJac(long int N, DenseMat J, realtype t, 
+                         N_Vector y, N_Vector fy, void *jac_data,
+                         N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  realtype fnorm, minInc, inc, inc_inv, yjsaved, srur;
+  realtype *tmp2_data, *y_data, *ewt_data;
+  N_Vector ftemp, jthCol;
+  long int j;
+
+  CVodeMem cv_mem;
+  CVDenseMem  cvdense_mem;
+
+  /* jac_data points to cvode_mem */
+  cv_mem = (CVodeMem) jac_data;
+  cvdense_mem = (CVDenseMem) lmem;
+
+  /* Save pointer to the array in tmp2 */
+  tmp2_data = N_VGetArrayPointer(tmp2);
+
+  /* Rename work vectors for readibility */
+  ftemp = tmp1; 
+  jthCol = tmp2;
+
+  /* Obtain pointers to the data for ewt, y */
+  ewt_data = N_VGetArrayPointer(ewt);
+  y_data   = N_VGetArrayPointer(y);
+
+  /* Set minimum increment based on uround and norm of f */
+  srur = RSqrt(uround);
+  fnorm = N_VWrmsNorm(fy, ewt);
+  minInc = (fnorm != ZERO) ?
+           (MIN_INC_MULT * ABS(h) * uround * N * fnorm) : ONE;
+
+  /* This is the only for loop for 0..N-1 in CVODE */
+
+  for (j = 0; j < N; j++) {
+
+    /* Generate the jth col of J(tn,y) */
+
+    N_VSetArrayPointer(DENSE_COL(J,j), jthCol);
+
+    yjsaved = y_data[j];
+    inc = MAX(srur*ABS(yjsaved), minInc/ewt_data[j]);
+    y_data[j] += inc;
+    f(tn, y, ftemp, f_data);
+    y_data[j] = yjsaved;
+
+    inc_inv = ONE/inc;
+    N_VLinearSum(inc_inv, ftemp, -inc_inv, fy, jthCol);
+
+    DENSE_COL(J,j) = N_VGetArrayPointer(jthCol);
+  }
+
+  /* Restore original array pointer in tmp2 */
+  N_VSetArrayPointer(tmp2_data, tmp2);
+
+  /* Increment counter nfeD */
+  nfeD += N;
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvdense_impl.h b/Win32/WinCVODE/sundials/cvodes/source/cvdense_impl.h
new file mode 100644
index 0000000..9eef183
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvdense_impl.h
@@ -0,0 +1,82 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the dense linear solver, CVDENSE.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVDENSE_IMPL_H
+#define _CVDENSE_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "cvdense.h"
+
+#include "dense.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Types : CVDenseMemRec, CVDenseMem                             
+ * -----------------------------------------------------------------
+ * The type CVDenseMem is pointer to a CVDenseMemRec.
+ * This structure contains CVDense solver-specific data. 
+ * -----------------------------------------------------------------
+ */
+
+typedef struct {
+
+  long int d_n;       /* problem dimension                      */
+
+  CVDenseJacFn d_jac; /* jac = Jacobian routine to be called    */
+
+  DenseMat d_M;       /* M = I - gamma J, gamma = h / l1        */
+  
+  long int *d_pivots; /* pivots = pivot array for PM = LU   */
+  
+  DenseMat d_savedJ;  /* savedJ = old Jacobian                  */
+  
+  long int  d_nstlj;  /* nstlj = nst at last Jacobian eval.     */
+  
+  long int d_nje;     /* nje = no. of calls to jac              */
+
+  long int d_nfeD;    /* nfeD = no. of calls to f due to
+                         difference quotient approximation of J */
+  
+  void *d_J_data;     /* J_data is passed to jac                */
+
+  int d_last_flag;    /* last error return flag */
+  
+} CVDenseMemRec, *CVDenseMem;
+
+/* Error Messages */
+
+#define _CVDENSE_         "CVDense-- "
+#define MSGDS_CVMEM_NULL  _CVDENSE_ "Integrator memory is NULL.\n\n"
+#define MSGDS_BAD_NVECTOR _CVDENSE_ "A required vector operation is not implemented.\n\n"
+#define MSGDS_MEM_FAIL    _CVDENSE_ "A memory request failed.\n\n"
+
+#define MSGDS_SETGET_CVMEM_NULL "CVDenseSet*/CVDenseGet*-- Integrator memory is NULL.\n\n"
+
+#define MSGDS_SETGET_LMEM_NULL "CVDenseSet*/CVDenseGet*-- cvdense memory is NULL.\n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvdiag.c b/Win32/WinCVODE/sundials/cvodes/source/cvdiag.c
new file mode 100644
index 0000000..199c50e
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvdiag.c
@@ -0,0 +1,378 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the CVDIAG linear solver.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvdiag_impl.h"
+#include "cvodes_impl.h"
+
+/* Other Constants */
+  
+#define FRACT RCONST(0.1)
+#define ONE   RCONST(1.0)
+
+/* CVDIAG linit, lsetup, lsolve, and lfree routines */
+
+static int CVDiagInit(CVodeMem cv_mem);
+
+static int CVDiagSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                       N_Vector fpred, booleantype *jcurPtr, N_Vector vtemp1,
+                       N_Vector vtemp2, N_Vector vtemp3);
+
+static int CVDiagSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                       N_Vector ycur, N_Vector fcur);
+
+static void CVDiagFree(CVodeMem cv_mem);
+
+/* Readability Replacements */
+
+#define lrw1      (cv_mem->cv_lrw1)
+#define liw1      (cv_mem->cv_liw1)
+#define f         (cv_mem->cv_f)
+#define f_data    (cv_mem->cv_f_data)
+#define uround    (cv_mem->cv_uround)
+#define tn        (cv_mem->cv_tn)
+#define h         (cv_mem->cv_h)
+#define rl1       (cv_mem->cv_rl1)
+#define gamma     (cv_mem->cv_gamma)
+#define ewt       (cv_mem->cv_ewt)
+#define nfe       (cv_mem->cv_nfe)
+#define errfp     (cv_mem->cv_errfp)
+#define zn        (cv_mem->cv_zn)
+#define linit     (cv_mem->cv_linit)
+#define lsetup    (cv_mem->cv_lsetup)
+#define lsolve    (cv_mem->cv_lsolve)
+#define lfree     (cv_mem->cv_lfree)
+#define lmem      (cv_mem->cv_lmem)
+#define vec_tmpl  (cv_mem->cv_tempv)
+#define setupNonNull   (cv_mem->cv_setupNonNull)
+
+#define gammasv   (cvdiag_mem->di_gammasv)
+#define M         (cvdiag_mem->di_M)
+#define bit       (cvdiag_mem->di_bit)
+#define bitcomp   (cvdiag_mem->di_bitcomp)
+#define nfeDI     (cvdiag_mem->di_nfeDI)
+#define last_flag (cvdiag_mem->di_last_flag)
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiag 
+ * -----------------------------------------------------------------
+ * This routine initializes the memory record and sets various function
+ * fields specific to the diagonal linear solver module.  CVDense first
+ * calls the existing lfree routine if this is not NULL.  Then it sets
+ * the cv_linit, cv_lsetup, cv_lsolve, cv_lfree fields in (*cvode_mem)
+ * to be CVDiagInit, CVDiagSetup, CVDiagSolve, and CVDiagFree,
+ * respectively.  It allocates memory for a structure of type
+ * CVDiagMemRec and sets the cv_lmem field in (*cvode_mem) to the
+ * address of this structure.  It sets setupNonNull in (*cvode_mem) to
+ * TRUE.  Finally, it allocates memory for M, bit, and bitcomp.
+ * The CVDiag return value is SUCCESS = 0, LMEM_FAIL = -1, or 
+ * LIN_ILL_INPUT=-2.
+ * -----------------------------------------------------------------
+ */
+  
+int CVDiag(void *cvode_mem)
+{
+  CVodeMem cv_mem;
+  CVDiagMem cvdiag_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDG_CVMEM_NULL);
+    return(CVDIAG_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Check if N_VCompare and N_VInvTest are present */
+  if(vec_tmpl->ops->nvcompare == NULL ||
+     vec_tmpl->ops->nvinvtest == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDG_BAD_NVECTOR);
+    return(CVDIAG_ILL_INPUT);
+  }
+
+  if (lfree != NULL) lfree(cv_mem);
+  
+  /* Set four main function fields in cv_mem */
+  linit  = CVDiagInit;
+  lsetup = CVDiagSetup;
+  lsolve = CVDiagSolve;
+  lfree  = CVDiagFree;
+
+  /* Get memory for CVDiagMemRec */
+  cvdiag_mem = (CVDiagMem) malloc(sizeof(CVDiagMemRec));
+  if (cvdiag_mem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDG_MEM_FAIL);
+    return(CVDIAG_MEM_FAIL);
+  }
+
+  last_flag = CVDIAG_SUCCESS;
+
+  /* Set flag setupNonNull = TRUE */
+  setupNonNull = TRUE;
+
+  /* Allocate memory for M, bit, and bitcomp */
+    
+  M = N_VClone(vec_tmpl);
+  if (M == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDG_MEM_FAIL);
+    return(CVDIAG_MEM_FAIL);
+  }
+  bit = N_VClone(vec_tmpl);
+  if (bit == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDG_MEM_FAIL);
+    N_VDestroy(M);
+    return(CVDIAG_MEM_FAIL);
+  }
+  bitcomp = N_VClone(vec_tmpl);
+  if (bitcomp == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDG_MEM_FAIL);
+    N_VDestroy(M);
+    N_VDestroy(bit);
+    return(CVDIAG_MEM_FAIL);
+  }
+
+  /* Attach linear solver memory to integrator memory */
+  lmem = cvdiag_mem;
+
+  return(CVDIAG_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiagGetWorkSpace
+ * -----------------------------------------------------------------
+ */
+
+int CVDiagGetWorkSpace(void *cvode_mem, long int *lenrwDI, long int *leniwDI)
+{
+  CVodeMem cv_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDG_SETGET_CVMEM_NULL);
+    return(CVDIAG_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *lenrwDI = 3*lrw1;
+  *leniwDI = 3*liw1;
+
+  return(CVDIAG_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiagGetNumRhsEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVDiagGetNumRhsEvals(void *cvode_mem, long int *nfevalsDI)
+{
+  CVodeMem cv_mem;
+  CVDiagMem cvdiag_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDG_SETGET_CVMEM_NULL);
+    return(CVDIAG_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDG_SETGET_LMEM_NULL);
+    return(CVDIAG_LMEM_NULL);
+  }
+  cvdiag_mem = (CVDiagMem) lmem;
+
+  *nfevalsDI = nfeDI;
+
+  return(CVDIAG_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiagGetLastFlag
+ * -----------------------------------------------------------------
+ */
+
+int CVDiagGetLastFlag(void *cvode_mem, int *flag)
+{
+  CVodeMem cv_mem;
+  CVDiagMem cvdiag_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGDG_SETGET_CVMEM_NULL);
+    return(CVDIAG_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGDG_SETGET_LMEM_NULL);
+    return(CVDIAG_LMEM_NULL);
+  }
+  cvdiag_mem = (CVDiagMem) lmem;
+
+  *flag = last_flag;
+
+  return(CVDIAG_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiagInit
+ * -----------------------------------------------------------------
+ * This routine does remaining initializations specific to the diagonal
+ * linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static int CVDiagInit(CVodeMem cv_mem)
+{
+  CVDiagMem cvdiag_mem;
+
+  cvdiag_mem = (CVDiagMem) lmem;
+
+  nfeDI = 0;
+
+  last_flag = CVDIAG_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiagSetup
+ * -----------------------------------------------------------------
+ * This routine does the setup operations for the diagonal linear 
+ * solver.  It constructs a diagonal approximation to the Newton matrix 
+ * M = I - gamma*J, updates counters, and inverts M.
+ * -----------------------------------------------------------------
+ */
+
+static int CVDiagSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                       N_Vector fpred, booleantype *jcurPtr, N_Vector vtemp1,
+                       N_Vector vtemp2, N_Vector vtemp3)
+{
+  realtype r;
+  N_Vector ftemp, y;
+  booleantype invOK;
+  CVDiagMem cvdiag_mem;
+  
+  cvdiag_mem = (CVDiagMem) lmem;
+
+  /* Rename work vectors for use as temporary values of y and f */
+  ftemp = vtemp1;
+  y     = vtemp2;
+
+  /* Form y with perturbation = FRACT*(func. iter. correction) */
+  r = FRACT * rl1;
+  N_VLinearSum(h, fpred, -ONE, zn[1], ftemp);
+  N_VLinearSum(r, ftemp, ONE, ypred, y);
+
+  /* Evaluate f at perturbed y */
+  f(tn, y, M, f_data);
+  nfeDI++;
+
+  /* Construct M = I - gamma*J with J = diag(deltaf_i/deltay_i) */
+  N_VLinearSum(ONE, M, -ONE, fpred, M);
+  N_VLinearSum(FRACT, ftemp, -h, M, M);
+  N_VProd(ftemp, ewt, y);
+  /* Protect against deltay_i being at roundoff level */
+  N_VCompare(uround, y, bit);
+  N_VAddConst(bit, -ONE, bitcomp);
+  N_VProd(ftemp, bit, y);
+  N_VLinearSum(FRACT, y, -ONE, bitcomp, y);
+  N_VDiv(M, y, M);
+  N_VProd(M, bit, M);
+  N_VLinearSum(ONE, M, -ONE, bitcomp, M);
+
+  /* Invert M with test for zero components */
+  invOK = N_VInvTest(M, M);
+  if (!invOK) {
+    last_flag = CVDIAG_INV_FAIL;
+    return(1);
+  }
+
+  /* Set jcur = TRUE, save gamma in gammasv, and return */
+  *jcurPtr = TRUE;
+  gammasv = gamma;
+  last_flag = CVDIAG_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiagSolve
+ * -----------------------------------------------------------------
+ * This routine performs the solve operation for the diagonal linear
+ * solver.  If necessary it first updates gamma in M = I - gamma*J.
+ * -----------------------------------------------------------------
+ */
+
+static int CVDiagSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                       N_Vector ycur, N_Vector fcur)
+{
+  booleantype invOK;
+  realtype r;
+  CVDiagMem cvdiag_mem;
+
+  cvdiag_mem = (CVDiagMem) lmem;
+  
+  /* If gamma has changed, update factor in M, and save gamma value */
+
+  if (gammasv != gamma) {
+    r = gamma / gammasv;
+    N_VInv(M, M);
+    N_VAddConst(M, -ONE, M);
+    N_VScale(r, M, M);
+    N_VAddConst(M, ONE, M);
+    invOK = N_VInvTest(M, M);
+    if (!invOK) {
+      last_flag = CVDIAG_INV_FAIL;
+      return (1);
+    }
+    gammasv = gamma;
+  }
+
+  /* Apply M-inverse to b */
+  N_VProd(b, M, b);
+
+  last_flag = CVDIAG_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVDiagFree
+ * -----------------------------------------------------------------
+ * This routine frees memory specific to the diagonal linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static void CVDiagFree(CVodeMem cv_mem)
+{
+  CVDiagMem cvdiag_mem;
+  
+  cvdiag_mem = (CVDiagMem) lmem;
+
+  N_VDestroy(M);
+  N_VDestroy(bit);
+  N_VDestroy(bitcomp);
+  free(cvdiag_mem);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvdiag_impl.h b/Win32/WinCVODE/sundials/cvodes/source/cvdiag_impl.h
new file mode 100644
index 0000000..bd02250
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvdiag_impl.h
@@ -0,0 +1,74 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the diagonal linear solver, CVDIAG.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVDIAG_IMPL_H
+#define _CVDIAG_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "cvdiag.h"
+
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Types: CVDiagMemRec, CVDiagMem
+ * -----------------------------------------------------------------
+ * The type CVDiagMem is pointer to a CVDiagMemRec.
+ * This structure contains CVDiag solver-specific data.
+ * -----------------------------------------------------------------
+ */
+
+typedef struct {
+
+  realtype di_gammasv; /* gammasv = gamma at the last call to setup */
+                       /* or solve                                  */
+
+  N_Vector di_M;       /* M = (I - gamma J)^{-1} , gamma = h / l1   */
+
+  N_Vector di_bit;     /* temporary storage vector                  */
+
+  N_Vector di_bitcomp; /* temporary storage vector                  */
+
+  long int di_nfeDI;   /* no. of calls to f due to difference 
+                          quotient diagonal Jacobian approximation  */
+
+  int di_last_flag;    /* last error return flag                    */
+
+} CVDiagMemRec, *CVDiagMem;
+
+/* Error Messages */
+
+#define _CVDIAG_          "CVDiag-- "
+#define MSGDG_CVMEM_NULL  _CVDIAG_ "Integrator memory is NULL.\n\n"
+#define MSGDG_BAD_NVECTOR _CVDIAG_ "A required vector operation is not implemented.\n\n"
+#define MSGDG_MEM_FAIL    _CVDIAG_ "A memory request failed.\n\n"
+
+#define MSGDG_SETGET_CVMEM_NULL "CVDiagGet*-- Integrator memory is NULL.\n\n"
+
+#define MSGDG_SETGET_LMEM_NULL "CVDiagGet*-- cvdiag memory is NULL.\n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvodea.c b/Win32/WinCVODE/sundials/cvodes/source/cvodea.c
new file mode 100644
index 0000000..b3f8ad3
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvodea.c
@@ -0,0 +1,2159 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Radu Serban and Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the CVODEA adjoint integrator.
+ * -----------------------------------------------------------------
+ */
+
+/*=================================================================*/
+/*                  Import Header Files                            */
+/*=================================================================*/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvdiag.h"
+#include "cvodea_impl.h"
+#include "sundialsmath.h"
+#include "sundialstypes.h"
+
+/*=================================================================*/
+/*                  Macros                                         */
+/*=================================================================*/
+
+#define loop for(;;)
+
+/*=================================================================*/
+/*                  CVODEA Private Constants                       */
+/*=================================================================*/
+
+#define ZERO        RCONST(0.0)     /* real 0.0 */
+#define ONE         RCONST(1.0)     /* real 1.0 */
+#define TWO         RCONST(2.0)     /* real 2.0 */
+#define FUZZ_FACTOR RCONST(1000000.0)  /* fuzz factor for CVadjGetY */
+
+/*=================================================================*/
+/*             Private Functions Prototypes                        */
+/*=================================================================*/
+
+static booleantype CVAallocVectors(CVadjMem ca_mem);
+static void CVAfreeVectors(CVadjMem ca_mem);
+
+static CkpntMem CVAckpntInit(CVodeMem cv_mem);
+static CkpntMem CVAckpntNew(CVodeMem cv_mem);
+static void CVAckpntDelete(CkpntMem *ck_memPtr);
+
+static int  CVAdataStore(CVadjMem ca_mem, CkpntMem ck_mem);
+static int  CVAckpntGet(CVodeMem cv_mem, CkpntMem ck_mem); 
+
+static DtpntMem *CVAhermiteMalloc(CVodeMem cv_mem, long int steps);
+static void CVAhermiteFree(DtpntMem *dt_mem, long int steps);
+static void CVAhermitePrepare(CVadjMem ca_mem, DtpntMem *dt_mem, long int i);
+static void CVAhermiteInterpolate(CVadjMem ca_mem, DtpntMem *dt_mem,
+                                  long int i, realtype t, N_Vector y);
+static int CVAhermiteGetY(CVadjMem ca_mem, realtype t, N_Vector y);
+static int CVAhermiteStorePnt(CVodeMem cv_mem, DtpntMem d);
+
+/* Wrappers */
+
+static void CVArhs(realtype t, N_Vector yB, 
+                   N_Vector yBdot, void *cvadj_mem);
+static void CVAdenseJac(long int nB, DenseMat JB, realtype t, 
+                        N_Vector yB, N_Vector fyB, void *cvadj_mem,
+                        N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B);
+static void CVAbandJac(long int nB, long int mupperB, 
+                       long int mlowerB, BandMat JB, realtype t, 
+                       N_Vector yB, N_Vector fyB, void *cvadj_mem, 
+                       N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B);
+static int CVAspilsPrecSetup(realtype t, N_Vector yB, 
+                             N_Vector fyB, booleantype jokB, 
+                             booleantype *jcurPtrB, realtype gammaB,
+                             void *cvadj_mem,
+                             N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B);
+static int CVAspilsPrecSolve(realtype t, N_Vector yB, N_Vector fyB,
+                             N_Vector rB, N_Vector zB,
+                             realtype gammaB, realtype deltaB,
+                             int lrB, void *cvadj_mem, N_Vector tmpB);
+static int CVAspilsJacTimesVec(N_Vector vB, N_Vector JvB, realtype t, 
+                               N_Vector yB, N_Vector fyB, 
+                               void *cvadj_mem, N_Vector tmpB);
+static void CVArhsQ(realtype t, N_Vector yB, 
+                    N_Vector qBdot, void *cvadj_mem);
+
+static void CVAgloc(long int NlocalB, realtype t, N_Vector yB, N_Vector gB, 
+                    void *cvadj_mem);
+
+static void CVAcfn(long int NlocalB, realtype t, N_Vector yB,
+                   void *cvadj_mem);
+
+/*=================================================================*/
+/*                  Readibility Constants                          */
+/*=================================================================*/
+
+#define uround      (ca_mem->ca_uround)
+#define tinitial    (ca_mem->ca_tinitial)
+#define tfinal      (ca_mem->ca_tfinal)
+#define nckpnts     (ca_mem->ca_nckpnts)
+#define nsteps      (ca_mem->ca_nsteps)
+#define ckpntData   (ca_mem->ca_ckpntData)
+#define newData     (ca_mem->ca_newData)
+#define np          (ca_mem->ca_np)
+#define delta       (ca_mem->ca_delta)
+#define Y0          (ca_mem->ca_Y0)
+#define Y1          (ca_mem->ca_Y1)
+#define ytmp        (ca_mem->ca_ytmp)
+#define f_B         (ca_mem->ca_fB)
+#define f_data_B    (ca_mem->ca_f_dataB)
+#define djac_B      (ca_mem->ca_djacB)
+#define bjac_B      (ca_mem->ca_bjacB)
+#define jac_data_B  (ca_mem->ca_jac_dataB)
+#define P_data_B    (ca_mem->ca_P_dataB)
+#define fQ_B        (ca_mem->ca_fQB)
+#define fQ_data_B   (ca_mem->ca_fQ_dataB)
+#define gloc_B      (ca_mem->ca_glocB)
+#define cfn_B       (ca_mem->ca_cfnB)
+#define bbd_data_B  (ca_mem->ca_bbd_dataB)
+#define bp_data_B   (ca_mem->ca_bp_dataB)
+#define t_for_quad  (ca_mem->ca_t_for_quad)
+#define pset_B      (ca_mem->ca_psetB)
+#define psolve_B    (ca_mem->ca_psolveB)
+#define jtimes_B    (ca_mem->ca_jtimesB)
+
+#define interpType  (ca_mem->ca_interpType)
+#define getY        (ca_mem->ca_getY)
+#define storePnt    (ca_mem->ca_storePnt)
+
+#define zn         (cv_mem->cv_zn)
+#define nst        (cv_mem->cv_nst)
+#define q          (cv_mem->cv_q)
+#define qprime     (cv_mem->cv_qprime)
+#define qwait      (cv_mem->cv_qwait)
+#define L          (cv_mem->cv_L)
+#define gammap     (cv_mem->cv_gammap)
+#define h          (cv_mem->cv_h)
+#define hprime     (cv_mem->cv_hprime)
+#define hscale     (cv_mem->cv_hscale)
+#define eta        (cv_mem->cv_eta)
+#define etamax     (cv_mem->cv_etamax)
+#define tn         (cv_mem->cv_tn)
+#define tretlast   (cv_mem->cv_tretlast)
+#define tau        (cv_mem->cv_tau)
+#define tq         (cv_mem->cv_tq)
+#define l          (cv_mem->cv_l)
+#define saved_tq5  (cv_mem->cv_saved_tq5)
+#define forceSetup (cv_mem->cv_forceSetup)
+#define f          (cv_mem->cv_f)
+#define lmm        (cv_mem->cv_lmm)
+#define iter       (cv_mem->cv_iter)
+#define itol       (cv_mem->cv_itol)
+#define reltol     (cv_mem->cv_reltol)
+#define Sabstol    (cv_mem->cv_Sabstol)
+#define Vabstol    (cv_mem->cv_Vabstol)
+#define efun       (cv_mem->cv_efun)
+#define f_data     (cv_mem->cv_f_data)
+#define errfp      (cv_mem->cv_errfp)
+#define h0u        (cv_mem->cv_h0u)
+#define quadr      (cv_mem->cv_quadr)
+#define errconQ    (cv_mem->cv_errconQ)
+#define znQ        (cv_mem->cv_znQ)
+#define itolQ      (cv_mem->cv_itolQ)
+#define reltolQ    (cv_mem->cv_reltolQ)
+#define SabstolQ   (cv_mem->cv_SabstolQ)
+#define VabstolQ   (cv_mem->cv_VabstolQ)
+#define fQ         (cv_mem->cv_fQ)
+#define tempv      (cv_mem->cv_tempv)
+#define tempvQ     (cv_mem->cv_tempvQ)
+
+#define t0_        (ck_mem->ck_t0)
+#define t1_        (ck_mem->ck_t1)
+#define zn_        (ck_mem->ck_zn)
+#define znQ_       (ck_mem->ck_znQ)
+#define quadr_     (ck_mem->ck_quadr)
+#define zqm_       (ck_mem->ck_zqm)
+#define nst_       (ck_mem->ck_nst)
+#define tretlast_  (ck_mem->ck_tretlast)
+#define q_         (ck_mem->ck_q)
+#define qprime_    (ck_mem->ck_qprime)
+#define qwait_     (ck_mem->ck_qwait)
+#define L_         (ck_mem->ck_L)
+#define gammap_    (ck_mem->ck_gammap)
+#define h_         (ck_mem->ck_h)
+#define hprime_    (ck_mem->ck_hprime)
+#define hscale_    (ck_mem->ck_hscale)
+#define eta_       (ck_mem->ck_eta)
+#define etamax_    (ck_mem->ck_etamax)
+#define tau_       (ck_mem->ck_tau)
+#define tq_        (ck_mem->ck_tq)
+#define l_         (ck_mem->ck_l)
+#define saved_tq5_ (ck_mem->ck_saved_tq5)
+#define next_      (ck_mem->ck_next)
+
+/*=================================================================*/
+/*                  Exported Functions                             */
+/*=================================================================*/
+
+/*
+ * CVadjMalloc
+ *
+ * This routine allocates space for the global CVODEA memory
+ * structure.
+ */
+
+void *CVadjMalloc(void *cvode_mem, long int steps)
+{
+  CVadjMem ca_mem;
+  CVodeMem cv_mem;
+  booleantype allocOK;
+
+  /* Check arguments */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGAM_NO_MEM);
+    return(NULL);
+  }
+  if (steps <= 0) {
+    fprintf(stderr, MSGAM_BAD_STEPS);
+    return(NULL);
+  }
+
+  /* Allocate memory block */
+  ca_mem = (CVadjMem) malloc(sizeof(struct CVadjMemRec));
+  if (ca_mem == NULL) {
+    fprintf(stderr, MSGAM_MEM_FAIL);
+    return(NULL);
+  }
+
+  /* Attach CVODE memory for forward runs */
+  cv_mem = (CVodeMem)cvode_mem;
+  ca_mem->cv_mem = cv_mem;
+
+  /* Set interpolation type to cubic Hermite */
+  interpType = CV_HERMITE;
+
+  /* Allocate memory for workspace vectors */
+  allocOK = CVAallocVectors(ca_mem);
+  if (!allocOK) {
+    fprintf(stderr, MSGAM_MEM_FAIL);
+    return(NULL);
+  }
+
+  /* Initialize Check Points linked list */
+  ca_mem->ck_mem = CVAckpntInit(cv_mem);
+  if (ca_mem->ck_mem == NULL) {
+    CVAfreeVectors(ca_mem);
+    free(ca_mem);
+    fprintf(stderr, MSGAM_MEM_FAIL);
+    return(NULL);
+  }
+
+  switch (interpType) {
+
+  case CV_HERMITE:
+    /* Allocate Data Points memory */
+    ca_mem->dt_mem = CVAhermiteMalloc(cv_mem, steps);
+    if (ca_mem->dt_mem == NULL) {
+      CVAckpntDelete(&(ca_mem->ck_mem));
+      CVAfreeVectors(ca_mem);
+      free(ca_mem);
+      fprintf(stderr, MSGAM_MEM_FAIL);
+      return(NULL);
+    }
+    /* Attach interpolation function GetY */
+    getY = CVAhermiteGetY;
+    storePnt = CVAhermiteStorePnt;
+    break;
+  }
+
+  /* Other entries in ca_mem */
+  uround   = cv_mem->cv_uround;
+  nsteps   = steps;
+  tinitial = tn; 
+
+  /* Initialize nckpnts to ZERO */
+  nckpnts = 0;
+
+  /* Initialize backward cvode memory to NULL */
+  ca_mem->cvb_mem = NULL;
+
+  ca_mem->ca_f_dataB = NULL;
+  ca_mem->ca_fQ_dataB = NULL;
+  ca_mem->ca_jac_dataB = NULL;
+  ca_mem->ca_P_dataB = NULL;
+  ca_mem->ca_bp_dataB = NULL;
+  ca_mem->ca_bbd_dataB = NULL;
+
+  ca_mem->ca_jtimesB = NULL;
+  ca_mem->ca_psetB = NULL;
+  ca_mem->ca_psolveB = NULL;
+
+  return((void *)ca_mem);
+} 
+
+/*
+ * CVodeF
+ *
+ * This routine integrates to tout and returns solution into yout.
+ * In the same time, it stores check point data every 'steps' steps. 
+ * 
+ * CVodeF can be called repeatedly by the user.
+ *
+ * ncheckPtr points to the number of check points stored so far.
+ */
+
+int CVodeF(void *cvadj_mem, realtype tout, N_Vector yout, 
+           realtype *tret, int itask, int *ncheckPtr)
+{
+  CVadjMem ca_mem;
+  CVodeMem cv_mem;
+  CkpntMem tmp;
+  DtpntMem *dt_mem;
+  int cv_itask, flag;
+  booleantype iret, istop;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  cv_mem = ca_mem->cv_mem;
+  dt_mem = ca_mem->dt_mem;
+
+  iret = TRUE;
+  cv_itask = CV_ONE_STEP;
+
+  /* Interpret itask */
+  switch (itask) {
+  case CV_NORMAL:
+    iret = FALSE;
+    istop = FALSE;
+    cv_itask = CV_ONE_STEP;
+    break;
+  case CV_ONE_STEP:
+    iret = TRUE;
+    istop = FALSE;
+    cv_itask = CV_ONE_STEP;
+    break;
+  case CV_NORMAL_TSTOP:
+    iret = FALSE;
+    istop = TRUE;
+    cv_itask = CV_ONE_STEP_TSTOP;
+    break;
+  case CV_ONE_STEP_TSTOP:
+    iret = TRUE;
+    istop = TRUE;
+    cv_itask = CV_ONE_STEP_TSTOP;
+    break;
+  }
+
+  /* On the first step, load dt_mem[0] */
+  if ( nst == 0) {
+    dt_mem[0]->t = ca_mem->ck_mem->ck_t0;
+    storePnt(cv_mem, dt_mem[0]);
+  }
+
+  /* Integrate to tout (in CV_ONE_STEP mode) while loading check points */
+
+  loop {
+
+    /* Perform one step of the integration */
+
+    flag = CVode(cv_mem, tout, yout, tret, cv_itask);
+    if (flag < 0) break;
+
+    /* Test if a new check point is needed */
+
+    if ( nst % nsteps == 0 ) {
+
+      ca_mem->ck_mem->ck_t1 = *tret;
+
+      /* Create a new check point, load it, and append it to the list */
+      tmp = CVAckpntNew(cv_mem);
+      if (tmp == NULL) {
+        flag = CV_MEM_FAIL;
+        break;
+      }
+      tmp->ck_next = ca_mem->ck_mem;
+      ca_mem->ck_mem = tmp;
+      nckpnts++;
+      forceSetup = TRUE;
+      
+      /* Reset i=0 and load dt_mem[0] */
+      dt_mem[0]->t = ca_mem->ck_mem->ck_t0;
+      storePnt(cv_mem, dt_mem[0]);
+
+    } else {
+      
+      /* Load next point in dt_mem */
+      dt_mem[nst%nsteps]->t = *tret;
+      storePnt(cv_mem, dt_mem[nst%nsteps]);
+
+    }
+
+    /* Set t1 field of the current ckeck point structure
+       for the case in which there will be no future
+       check points */
+    ca_mem->ck_mem->ck_t1 = *tret;
+
+    /* tfinal is now set to *tret */
+    tfinal = *tret;
+
+    /* Return if in CV_ONE_STEP mode */
+    if (iret) 
+      break;
+
+    /* Return if tout reached */
+    if ( (*tret - tout)*h >= ZERO ) {
+      *tret = tout;
+      CVodeGetDky(cv_mem, tout, 0, yout);
+      break;
+    }
+
+  } /* end of loop() */
+
+  /* Get ncheck from ca_mem */ 
+  *ncheckPtr = nckpnts;
+
+  /* Data is available for the last interval */
+  newData = TRUE;
+  ckpntData = ca_mem->ck_mem;
+  np = nst % nsteps + 1;
+
+  return(flag);
+}
+
+/*
+ * CVodeCreateB, CVodeSet*B, CVodeMallocB, and CVodeReInitB
+ *
+ * Wrappers for the backward phase around the corresponding 
+ * CVODES functions
+ */
+
+int CVodeCreateB(void *cvadj_mem, int lmmB, int iterB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  cvode_mem = CVodeCreate(lmmB, iterB);
+
+  if (cvode_mem == NULL) return(CV_MEM_FAIL);
+
+  ca_mem->cvb_mem = (CVodeMem) cvode_mem;
+
+  return(CV_SUCCESS);
+
+}
+
+int CVodeSetIterTypeB(void *cvadj_mem, int iterB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+  cvode_mem = (void *)ca_mem->cvb_mem;
+
+  flag = CVodeSetIterType(cvode_mem, iterB);
+  
+  return(flag);
+}
+
+int CVodeSetFdataB(void *cvadj_mem, void *f_dataB)
+{
+  CVadjMem ca_mem;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  f_data_B = f_dataB;
+
+  return(CV_SUCCESS);
+}
+
+int CVodeSetErrFileB(void *cvadj_mem, FILE *errfpB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+  cvode_mem = (void *)ca_mem->cvb_mem;
+
+  flag = CVodeSetErrFile(cvode_mem, errfpB);
+
+  return(flag);
+}
+
+int CVodeSetMaxOrdB(void *cvadj_mem, int maxordB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+  cvode_mem = (void *)ca_mem->cvb_mem;
+
+  flag = CVodeSetMaxOrd(cvode_mem, maxordB);
+
+  return(flag);
+}
+
+
+int CVodeSetMaxNumStepsB(void *cvadj_mem, long int mxstepsB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+  cvode_mem = (void *)ca_mem->cvb_mem;
+
+  flag = CVodeSetMaxNumSteps(cvode_mem, mxstepsB);
+
+  return(flag);
+}
+
+int CVodeSetStabLimDetB(void *cvadj_mem, booleantype stldetB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+  cvode_mem = (void *)ca_mem->cvb_mem;
+
+  flag = CVodeSetStabLimDet(cvode_mem, stldetB);
+
+  return(flag);
+}
+
+int CVodeSetInitStepB(void *cvadj_mem, realtype hinB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+  cvode_mem = (void *)ca_mem->cvb_mem;
+
+  flag = CVodeSetInitStep(cvode_mem, hinB);
+
+  return(flag);
+}
+
+int CVodeSetMinStepB(void *cvadj_mem, realtype hminB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+  cvode_mem = (void *)ca_mem->cvb_mem;
+
+  flag = CVodeSetMinStep(cvode_mem, hminB);
+
+  return(flag);
+}
+
+int CVodeSetMaxStepB(void *cvadj_mem, realtype hmaxB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+  cvode_mem = (void *)ca_mem->cvb_mem;
+
+  flag = CVodeSetMaxStep(cvode_mem, hmaxB);
+
+  return(flag);
+}
+
+int CVodeMallocB(void *cvadj_mem, CVRhsFnB fB, 
+                 realtype tB0, N_Vector yB0,
+                 int itolB, realtype reltolB, void *abstolB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int sign, flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  sign = (tfinal - tinitial > ZERO) ? 1 : -1;
+  if ( (sign*(tB0-tinitial) < ZERO) || (sign*(tfinal-tB0) < ZERO) )
+    return(CV_BAD_TB0);
+
+  f_B = fB;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+
+  flag = CVodeMalloc(cvode_mem, CVArhs, tB0, yB0,
+                     itolB, reltolB, abstolB);
+
+  if (flag != CV_SUCCESS) return(flag);
+
+  CVodeSetMaxHnilWarns(cvode_mem, -1);
+  CVodeSetFdata(cvode_mem, cvadj_mem);
+
+  return(CV_SUCCESS);
+
+}
+
+int CVodeReInitB(void *cvadj_mem, CVRhsFnB fB, 
+                 realtype tB0, N_Vector yB0, 
+                 int itolB, realtype reltolB, void *abstolB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int sign, flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  sign = (tfinal - tinitial > ZERO) ? 1 : -1;
+  if ( (sign*(tB0-tinitial) < ZERO) || (sign*(tfinal-tB0) < ZERO) )
+    return(CV_BAD_TB0);
+  
+  f_B  = fB;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+
+  flag = CVodeReInit(cvode_mem, CVArhs, tB0, yB0,
+                     itolB, reltolB, abstolB);
+
+  if (flag != CV_SUCCESS) return(flag);
+
+  CVodeSetMaxHnilWarns(cvode_mem, -1);
+  CVodeSetFdata(cvode_mem, cvadj_mem);
+
+  return(CV_SUCCESS);
+
+}
+
+/*
+ * CVodeSetQuad*B, CVodeQuadMallocB, and CVodeQuadReInitB
+ *
+ * Wrappers for the backward phase around the corresponding 
+ * CVODES functions
+ */
+
+int CVodeSetQuadFdataB(void *cvadj_mem, void *fQ_dataB)
+{
+  CVadjMem ca_mem;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  fQ_data_B = fQ_dataB;
+
+  return(CV_SUCCESS);
+}
+
+int CVodeSetQuadErrConB(void *cvadj_mem, booleantype errconQB,
+                        int itolQB, realtype reltolQB, void *abstolQB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+  cvode_mem = (void *)ca_mem->cvb_mem;
+
+  flag = CVodeSetQuadErrCon(cvode_mem, errconQB, itolQB, reltolQB, abstolQB);
+
+  return(flag);
+}
+
+int CVodeQuadMallocB(void *cvadj_mem, CVQuadRhsFnB fQB, N_Vector yQB0)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  fQ_B = fQB;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+
+  flag = CVodeQuadMalloc(cvode_mem, CVArhsQ, yQB0);
+  if (flag != CV_SUCCESS) return(flag);
+
+  flag = CVodeSetQuadFdata(cvode_mem, cvadj_mem);
+
+  return(flag);
+
+}
+
+int CVodeQuadReInitB(void *cvadj_mem, CVQuadRhsFnB fQB, N_Vector yQB0)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  fQ_B = fQB;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+
+  flag = CVodeQuadReInit(cvode_mem, CVArhsQ, yQB0);
+
+  return(flag);
+
+}
+
+/*
+ * CVDenseB and CVdenseSet*B
+ *
+ * Wrappers for the backward phase around the corresponding 
+ * CVODES functions
+ */
+
+int CVDenseB(void *cvadj_mem, long int nB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+  
+  flag = CVDense(cvode_mem, nB);
+
+  return(flag);
+}
+
+int CVDenseSetJacFnB(void *cvadj_mem, CVDenseJacFnB djacB, void *jac_dataB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  djac_B     = djacB;
+  jac_data_B = jac_dataB;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+
+  flag = CVDenseSetJacFn(cvode_mem, CVAdenseJac, cvadj_mem);
+
+  return(flag);
+}
+
+/*
+ * CVDiagB
+ *
+ * Wrappers for the backward phase around the corresponding 
+ * CVODES functions
+ */
+
+int CVDiagB(void *cvadj_mem)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+  
+  flag = CVDiag(cvode_mem);
+
+  return(flag);
+}
+
+/*
+ * CVBandB and CVBandSet*B
+ *
+ * Wrappers for the backward phase around the corresponding 
+ * CVODES functions
+ */
+
+int CVBandB(void *cvadj_mem, long int nB, 
+            long int mupperB, long int mlowerB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+  
+  flag = CVBand(cvode_mem, nB, mupperB, mlowerB);
+
+  return(flag);
+}
+
+int CVBandSetJacFnB(void *cvadj_mem, CVBandJacFnB bjacB, void *jac_dataB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  bjac_B     = bjacB;
+  jac_data_B = jac_dataB;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+
+  flag = CVBandSetJacFn(cvode_mem, CVAbandJac, cvadj_mem);
+
+  return(flag);
+}
+
+/*
+ * CVSpgmrB and CVSpgmrSet*B
+ *
+ * Wrappers for the backward phase around the corresponding 
+ * CVODES functions
+ */
+
+int CVSpgmrB(void *cvadj_mem, int pretypeB, int maxlB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+  
+  flag = CVSpgmr(cvode_mem, pretypeB, maxlB);
+
+  return(flag);
+}
+
+int CVSpgmrSetPrecTypeB(void *cvadj_mem, int pretypeB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+
+  flag = CVSpgmrSetPrecType(cvode_mem, pretypeB);
+
+  return(flag);
+}
+
+int CVSpgmrSetGSTypeB(void *cvadj_mem, int gstypeB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+
+  flag = CVSpgmrSetGSType(cvode_mem,gstypeB);
+
+  return(flag);
+}
+
+int CVSpgmrSetDeltB(void *cvadj_mem, realtype deltB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+
+  flag = CVSpgmrSetDelt(cvode_mem,deltB);
+
+  return(flag);
+}
+
+int CVSpgmrSetPreconditionerB(void *cvadj_mem, CVSpgmrPrecSetupFnB psetB,
+                              CVSpgmrPrecSolveFnB psolveB, void *P_dataB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  pset_B   = psetB;
+  psolve_B = psolveB;
+  P_data_B = P_dataB;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+
+  flag = CVSpgmrSetPreconditioner(cvode_mem, CVAspilsPrecSetup, CVAspilsPrecSolve, cvadj_mem);
+
+  return(flag);
+}
+
+int CVSpgmrSetJacTimesVecFnB(void *cvadj_mem, CVSpgmrJacTimesVecFnB jtimesB,
+                             void *jac_dataB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  jtimes_B   = jtimesB;
+  jac_data_B = jac_dataB;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+
+  flag = CVSpgmrSetJacTimesVecFn(cvode_mem, CVAspilsJacTimesVec, cvadj_mem);
+
+  return(flag);
+}
+
+/*
+ * CVBandPrecAllocB, CVBPSpgmrB, CVBandPrecFreeB
+ *
+ * Wrappers for the backward phase around the corresponding 
+ * CVODES functions
+ */
+
+int CVBandPrecAllocB(void *cvadj_mem, long int nB, 
+                     long int muB, long int mlB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  void *bp_dataB;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+
+  bp_dataB = CVBandPrecAlloc(cvode_mem, nB, muB, mlB);
+
+  if (bp_dataB == NULL) return(CV_PDATA_NULL);
+
+  bp_data_B = bp_dataB;
+
+  return(CV_SUCCESS);
+
+}
+
+int CVBPSpgmrB(void *cvadj_mem, int pretypeB, int maxlB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+  
+  flag = CVBPSpgmr(cvode_mem, pretypeB, maxlB, bp_data_B);
+
+  return(flag);
+}
+
+/*
+ * CVBBDPrecAllocB, CVBPSpgmrB, CVBandPrecFreeB
+ *
+ * Wrappers for the backward phase around the corresponding 
+ * CVODES functions
+ */
+
+int CVBBDPrecAllocB(void *cvadj_mem, long int NlocalB, 
+                    long int mudqB, long int mldqB, 
+                    long int mukeepB, long int mlkeepB, 
+                    realtype dqrelyB,
+                    CVLocalFnB glocB, CVCommFnB cfnB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  void *bbd_dataB;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  cvode_mem = (void *) ca_mem->cvb_mem;
+
+  gloc_B = glocB;
+  cfn_B  = cfnB;
+
+  bbd_dataB = CVBBDPrecAlloc(cvode_mem, NlocalB, 
+                             mudqB, mldqB,
+                             mukeepB, mlkeepB, 
+                             dqrelyB, 
+                             CVAgloc, CVAcfn);
+
+  if (bbd_dataB == NULL) return(CV_PDATA_NULL);
+
+  bbd_data_B = bbd_dataB;
+
+  return(CV_SUCCESS);
+
+}
+
+int CVBBDSpgmrB(void *cvadj_mem, int pretypeB, int maxlB)
+{
+
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+  
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+  
+  cvode_mem = (void *) ca_mem->cvb_mem;
+  
+  flag = CVBBDSpgmr(cvode_mem, pretypeB, maxlB, bbd_data_B);
+
+  return(flag);
+
+}
+
+int CVBBDPrecReInitB(void *cvadj_mem, long int mudqB, long int mldqB,
+                     realtype dqrelyB, CVLocalFnB glocB, CVCommFnB cfnB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+  
+  cvode_mem = (void *) ca_mem->cvb_mem;
+  
+  gloc_B = glocB;
+  cfn_B  = cfnB;
+
+  flag = CVBBDPrecReInit(bbd_data_B, mudqB, mldqB,
+                         dqrelyB, CVAgloc, CVAcfn);
+
+  return(flag);
+}
+
+/*
+ * CVodeB
+ *
+ * This routine performs the backward integration towards tBout. 
+ * When necessary, it performs a forward integration between two 
+ * consecutive check points to update interpolation data.
+ * itask can be CV_NORMAL or CV_ONE_STEP only.
+ */
+
+int CVodeB(void *cvadj_mem, realtype tBout, N_Vector yBout, 
+           realtype *tBret, int itaskB)
+{
+  CVadjMem ca_mem;
+  CkpntMem ck_mem;
+  CVodeMem cvb_mem;
+  int sign, flag, cv_itask;
+  realtype tBn;
+  
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem  = (CVadjMem) cvadj_mem;
+
+  cvb_mem = ca_mem->cvb_mem;
+  if (cvb_mem == NULL) return(CV_BCKMEM_NULL);
+
+  if (itaskB == CV_NORMAL)
+    cv_itask = CV_NORMAL_TSTOP;
+  else if (itaskB == CV_ONE_STEP)
+    cv_itask = CV_ONE_STEP_TSTOP;
+  else
+    return(CV_BAD_ITASK);
+
+  ck_mem = ca_mem->ck_mem;
+
+  sign = (tfinal - tinitial > ZERO) ? 1 : -1;
+
+  if ( (sign*(tBout-tinitial) < ZERO) || (sign*(tfinal-tBout) < ZERO) )
+    return(CV_BAD_TBOUT);
+
+  tBn = cvb_mem->cv_tn;
+  while ( sign*(tBn - t0_) <= ZERO ) ck_mem = next_;
+  
+  loop {
+
+    /* Store interpolation data if not available 
+       This is the 2nd forward integration pass */
+    if (ck_mem != ckpntData) {
+      flag = CVAdataStore(ca_mem, ck_mem);
+      if (flag != CV_SUCCESS) return(flag);
+    }
+
+    /* Backward integration */
+    CVodeSetStopTime((void *)cvb_mem, t0_);
+    flag = CVode(cvb_mem, tBout, yBout, tBret, cv_itask);
+
+    /* If an error occured, return now */
+    if (flag < 0) return(flag);
+
+    /* Set the time at which CVodeGetQuadB will evaluate any quadratures */
+    t_for_quad = *tBret;
+
+    /* If in CV_ONE_STEP mode, return now (flag=CV_SUCCESS or flag=CV_TSTOP_RETURN) */
+    if (itaskB == CV_ONE_STEP) return(flag);
+
+    /* If succesfully reached tBout, return now */
+    if (*tBret == tBout) return(flag);
+
+    /* Move check point in linked list to next one */
+    ck_mem = next_;
+
+  } 
+
+  return(CV_SUCCESS);
+}
+
+/*
+ * CVodeGetQuadB
+ */
+
+int CVodeGetQuadB(void *cvadj_mem, N_Vector qB)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  int flag;
+  
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem  = (CVadjMem) cvadj_mem;
+  cvode_mem = (void *) ca_mem->cvb_mem;
+  
+  flag = CVodeGetQuad(cvode_mem, t_for_quad, qB);
+
+  return(flag);
+}
+
+/*
+ * CVadjFree
+ *
+ * This routine frees the memory allocated by CVadjMalloc.
+ */
+
+void CVadjFree(void *cvadj_mem)
+{
+  CVadjMem ca_mem;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  /* Delete check points one by one */
+  while (ca_mem->ck_mem != NULL) {
+    CVAckpntDelete(&(ca_mem->ck_mem));
+  }
+
+  /* Free vectors at each data point */
+  switch (interpType) {
+  case CV_HERMITE:
+    CVAhermiteFree(ca_mem->dt_mem, nsteps);
+    break;
+  }
+
+  free(ca_mem->dt_mem);
+
+  /* Free workspace vectors in ca_mem */
+  CVAfreeVectors(ca_mem);
+
+  /* Free CVODES memory for backward run */
+  CVodeFree(ca_mem->cvb_mem);
+
+  /* Free preconditioner data (the routines below check for non-NULL data) */
+  CVBandPrecFree(bp_data_B);
+  CVBBDPrecFree(bbd_data_B);
+
+  /* Free CVODEA memory */
+  free(ca_mem);
+}
+
+/*
+ * CVadjGetCVodeBmem
+ *
+ * CVadjGetCVodeBmem returns a (void *) pointer to the CVODES     
+ * memory allocated for the backward problem. This pointer can    
+ * then be used to call any of the CVodeGet* CVODES routines to  
+ * extract optional output for the backward integration phase.
+ */
+
+void *CVadjGetCVodeBmem(void *cvadj_mem)
+{
+  CVadjMem ca_mem;
+  void *cvode_mem;
+  
+  if (cvadj_mem == NULL) return(NULL);
+  ca_mem  = (CVadjMem) cvadj_mem;
+  cvode_mem = (void *) ca_mem->cvb_mem;
+
+  return(cvode_mem);
+}
+
+/*=================================================================*/
+/*       UNDOCUMENTED development user-callable functions          */
+/*=================================================================*/
+
+
+/*
+ * CVadjGetCheckPointsInfo
+ *
+ * This routine loads an array of nckpnts structures of type CheckPointRec.
+ * The user must allocate space for ckpnt.
+ */
+
+int CVadjGetCheckPointsInfo(void *cvadj_mem, CheckPointRec *ckpnt)
+{
+  CVadjMem ca_mem;
+  CkpntMem ck_mem;
+  int i;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+  ck_mem = ca_mem->ck_mem;
+  i = 0;
+
+  while (ck_mem != NULL) {
+
+    ckpnt[i].my_addr = (unsigned int) ck_mem;
+    ckpnt[i].next_addr = (unsigned int) next_;
+    ckpnt[i].t0 = t0_;
+    ckpnt[i].t1 = t1_;
+    ckpnt[i].nstep = nst_;
+    ckpnt[i].order = q_;
+    ckpnt[i].step = h_;
+
+    ck_mem = next_;
+    i++;
+
+  }
+
+  return(CV_SUCCESS);
+
+}
+
+/*
+ * CVadjGetCurrentCheckPoint
+ *
+ *  Returns the address of the 'active' check point.
+ */
+
+int CVadjGetCurrentCheckPoint(void *cvadj_mem, unsigned int *addr)
+{
+  CVadjMem ca_mem;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  *addr = (unsigned int) ckpntData;
+
+  return(CV_SUCCESS);
+}
+
+/*
+ * CVadjGetDataPointHermite
+ *
+ * This routine returns the solution stored in the data structure
+ * at the 'which' data point. Cubic Hermite interpolation.
+ */
+
+int CVadjGetDataPointHermite(void *cvadj_mem, long int which, 
+                             realtype *t, N_Vector y, N_Vector yd)
+{
+  CVadjMem ca_mem;
+  DtpntMem *dt_mem;
+  HermiteDataMem content;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem = (CVadjMem) cvadj_mem;
+  dt_mem = ca_mem->dt_mem;
+
+  if (interpType != CV_HERMITE) return(CV_ILL_INPUT);
+
+  *t = dt_mem[which]->t;
+
+  content = (HermiteDataMem) (dt_mem[which]->content);
+
+  if (y != NULL)
+    N_VScale(ONE, content->y, y);
+
+  if (yd != NULL)
+    N_VScale(ONE, content->yd, yd);
+
+  return(CV_SUCCESS);
+}
+
+/*
+ * CVadjGetY
+ *
+ * This routine returns the interpolated forward solution at time t.
+ * The user must allocate space for y.
+ */
+
+int CVadjGetY(void *cvadj_mem, realtype t, N_Vector y)
+{
+  CVadjMem ca_mem;
+
+  if (cvadj_mem == NULL) return(CV_ADJMEM_NULL);
+  ca_mem  = (CVadjMem) cvadj_mem;
+  
+  getY(ca_mem, t, y);
+
+  return(CV_SUCCESS);
+}
+
+/*=================================================================*/
+/*            Private Functions Implementation                     */
+/*=================================================================*/
+
+/*
+ * CVAallocVectors
+ *
+ * Allocate memory for adjoint workspace N_Vectors
+ */
+
+static booleantype CVAallocVectors(CVadjMem ca_mem)
+{
+
+  CVodeMem cv_mem;
+
+  cv_mem = ca_mem->cv_mem;
+
+  Y0 = N_VClone(tempv);
+  if (Y0 == NULL) {
+    return(FALSE);
+  }
+
+  Y1 = N_VClone(tempv);
+  if (Y1 == NULL) {
+    N_VDestroy(Y0);
+    return(FALSE);
+  }
+
+  ytmp = N_VClone(tempv);
+  if (ytmp == NULL) {
+    N_VDestroy(Y0);
+    N_VDestroy(Y1);
+    return(FALSE);
+  }
+
+  return(TRUE);
+
+}
+
+/*
+ * CVAfreeVectors
+ * 
+ * Free memory allocated by CVAallocVectors
+ */
+
+static void CVAfreeVectors(CVadjMem ca_mem)
+{
+  N_VDestroy(Y0);
+  N_VDestroy(Y1);
+  N_VDestroy(ytmp);
+}
+
+
+/*
+ * CVAckpntInit
+ *
+ * This routine initializes the check point linked list with 
+ * information from the initial time.
+ */
+
+static CkpntMem CVAckpntInit(CVodeMem cv_mem)
+{
+  CkpntMem ck_mem;
+
+  /* Allocate space for ckdata */
+  ck_mem = (CkpntMem) malloc(sizeof(struct CkpntMemRec));
+
+  zn_[0] = N_VClone(tempv);
+  zn_[1] = N_VClone(tempv);
+
+  /* zn_[qmax] was not allocated */
+  zqm_ = 0;
+
+  /* Load ckdata from cv_mem */
+  N_VScale(ONE, zn[0], zn_[0]);
+  t0_    = tn;
+  nst_   = 0;
+  q_     = 1;
+  h_     = 0.0;
+  
+  /* Do we need to carry quadratures */
+  quadr_ = quadr && errconQ;
+
+  if (quadr_) {
+    znQ_[0] = N_VClone(tempvQ);
+    N_VScale(ONE, znQ[0], znQ_[0]);
+  }
+
+  /* Next in list */
+  next_  = NULL;
+
+  return(ck_mem);
+}
+
+/*
+ * CVAckpntNew
+ *
+ * This routine allocates space for a new check point and sets 
+ * its data from current values in cv_mem.
+ */
+
+static CkpntMem CVAckpntNew(CVodeMem cv_mem)
+{
+  CkpntMem ck_mem;
+  int j;
+  int qmax; 
+
+  /* Allocate space for ckdata */
+  ck_mem = (CkpntMem) malloc(sizeof(struct CkpntMemRec));
+  if (ck_mem == NULL) return(NULL);
+
+  /* Test if we need to allocate space for the last zn.
+     NOTE: zn(qmax) may be needed for a hot restart, if an order
+     increase is deemed necessary at the first step after a check 
+     point */
+  qmax = cv_mem->cv_qmax;
+  zqm_ = (q < qmax) ? qmax : 0;
+
+  for (j=0; j<=q; j++) {
+    zn_[j] = N_VClone(tempv);
+    if(zn_[j] == NULL) return(NULL);
+  }
+
+  if ( q < qmax) {
+    zn_[qmax] = N_VClone(tempv);
+    if ( zn_[qmax] == NULL ) return(NULL);
+  }
+
+  /* Test if we need to carry quadratures */
+  quadr_ = quadr && errconQ;
+
+  if (quadr_) {
+    for (j=0; j<=q; j++) {
+      znQ_[j] = N_VClone(tempvQ);
+      if(znQ_[j] == NULL) return(NULL);
+    }
+
+    if ( q < qmax) {
+      znQ_[qmax] = N_VClone(tempvQ);
+      if ( znQ_[qmax] == NULL ) return(NULL);
+    }
+  }
+
+  /* Load check point data from cv_mem */
+
+  for (j=0; j<=q; j++) N_VScale(ONE, zn[j], zn_[j]);
+  if ( q < qmax ) N_VScale(ONE, zn[qmax], zn_[qmax]);
+
+  if(quadr_) {
+    for (j=0; j<=q; j++) N_VScale(ONE, znQ[j], znQ_[j]);
+    if ( q < qmax ) N_VScale(ONE, znQ[qmax], znQ_[qmax]);
+  }
+
+  for (j=0; j<=L_MAX; j++)     tau_[j] = tau[j];
+  for (j=0; j<=NUM_TESTS; j++) tq_[j] = tq[j];
+  for (j=0; j<=q; j++)         l_[j] = l[j];
+  nst_       = nst;
+  tretlast_  = tretlast;
+  q_         = q;
+  qprime_    = qprime;
+  qwait_     = qwait;
+  L_         = L;
+  gammap_    = gammap;
+  h_         = h;
+  hprime_    = hprime;
+  hscale_    = hscale;
+  eta_       = eta;
+  etamax_    = etamax;
+  t0_        = tn;
+  saved_tq5_ = saved_tq5;
+
+  return(ck_mem);
+}
+
+/*
+ * CVAckpntDelete
+ *
+ * This routine deletes the first check point in list.
+ */
+
+static void CVAckpntDelete(CkpntMem *ck_memPtr)
+{
+  CkpntMem tmp;
+  int j;
+
+  if (*ck_memPtr != NULL) {
+
+    /* store head of list */
+    tmp = *ck_memPtr;
+
+    /* move head of list */
+    *ck_memPtr = (*ck_memPtr)->ck_next;
+
+    /* free N_Vectors in tmp */
+    for (j=0;j<=tmp->ck_q;j++) N_VDestroy(tmp->ck_zn[j]);
+    if (tmp->ck_zqm != 0) N_VDestroy(tmp->ck_zn[tmp->ck_zqm]);
+
+    /* free N_Vectors for quadratures in tmp 
+     Note that at the check point at t_initial, only znQ_[0] 
+     was allocated*/
+    if(tmp->ck_quadr) {
+      if(tmp->ck_next != NULL) {
+        for (j=0;j<=tmp->ck_q;j++) N_VDestroy(tmp->ck_znQ[j]);
+        if (tmp->ck_zqm != 0) N_VDestroy(tmp->ck_znQ[tmp->ck_zqm]);
+      } else {
+        N_VDestroy(tmp->ck_znQ[0]);
+      }
+    }
+
+    free(tmp);
+
+  }
+}
+
+/*
+ * CVAdataStore
+ *
+ * This routine integrates the forward model starting at the check
+ * point ck_mem and stores y and yprime at all intermediate steps.
+ *
+ * Return values:
+ * CV_SUCCESS
+ * CV_REIFWD_FAIL
+ * CV_FWD_FAIL
+ */
+
+int CVAdataStore(CVadjMem ca_mem, CkpntMem ck_mem)
+{
+  CVodeMem cv_mem;
+  DtpntMem *dt_mem;
+  realtype t;
+  long int i;
+  int flag;
+
+  cv_mem = ca_mem->cv_mem;
+  dt_mem = ca_mem->dt_mem;
+
+  /* Initialize cv_mem with data from ck_mem */
+  flag = CVAckpntGet(cv_mem, ck_mem);
+  if (flag != CV_SUCCESS) return(CV_REIFWD_FAIL);
+
+  /* Set first structure in dt_mem[0] */
+  dt_mem[0]->t = t0_;
+  storePnt(cv_mem, dt_mem[0]);
+
+  /* Run CVode to set following structures in dt_mem[i] */
+
+  i = 1;
+  do {
+    flag = CVode(cv_mem, t1_, ytmp, &t, CV_ONE_STEP);
+    if (flag < 0) return(CV_FWD_FAIL);
+    dt_mem[i]->t = t;
+    storePnt(cv_mem, dt_mem[i]);
+    i++;
+  } while (t<t1_);
+
+  /* New data is now available */
+  ckpntData = ck_mem;
+  newData = TRUE;
+  np  = i;
+
+  return(CV_SUCCESS);
+}
+
+/*
+ * CVAckpntGet
+ *
+ * This routine prepares CVODE for a hot restart from
+ * the check point ck_mem
+ */
+
+static int CVAckpntGet(CVodeMem cv_mem, CkpntMem ck_mem) 
+{
+  int j;
+  int flag;
+  int qmax;
+  void *abstol;
+
+  abstol = NULL;
+
+  if (next_ == NULL) {
+
+    /* In this case, we just call the reinitialization routine,
+       but make sure we use the same initial stepsize as on 
+       the first run. */
+
+    CVodeSetInitStep(cv_mem, h0u);
+
+    switch (itol) {
+    case CV_SS:
+      abstol = (void *) &Sabstol;
+      break;
+    case CV_SV:
+      abstol = (void *)Vabstol;
+      break;
+    case CV_EE:
+      abstol = (void *)efun;
+      break;
+    }
+    flag = CVodeReInit(cv_mem, f, t0_, zn_[0], itol, reltol, abstol);
+    if (flag != CV_SUCCESS) return(flag);
+
+    if(quadr_) {
+      flag = CVodeQuadReInit(cv_mem, fQ, znQ_[0]);
+      if (flag != CV_SUCCESS) return(flag);
+    }
+
+  } else {
+    
+    qmax = cv_mem->cv_qmax;
+
+    /* Copy parameters from check point data structure */
+    nst       = nst_;
+    tretlast  = tretlast_;
+    q         = q_;
+    qprime    = qprime_;
+    qwait     = qwait_;
+    L         = L_;
+    gammap    = gammap_;
+    h         = h_;
+    hprime    = hprime_;
+    hscale    = hscale_;
+    eta       = eta_;
+    etamax    = etamax_;
+    tn        = t0_;
+    saved_tq5 = saved_tq5_;
+    
+    /* Copy the arrays from check point data structure */
+    for (j=0; j<=q; j++) N_VScale(ONE, zn_[j], zn[j]);
+    if ( q < qmax ) N_VScale(ONE, zn_[qmax], zn[qmax]);
+    if(quadr_) {
+      for (j=0; j<=q; j++) N_VScale(ONE, znQ_[j], znQ[j]);
+      if ( q < qmax ) N_VScale(ONE, znQ_[qmax], znQ[qmax]);
+    }
+    for (j=0; j<=L_MAX; j++)     tau[j] = tau_[j];
+    for (j=0; j<=NUM_TESTS; j++) tq[j] = tq_[j];
+    for (j=0; j<=q; j++)         l[j] = l_[j];
+    
+    /* Force a call to setup */
+    forceSetup = TRUE;
+
+  }
+
+  return(CV_SUCCESS);
+}
+
+/*=================================================================*/
+/*        Functions for cubic Hermite interpolation                */
+/*=================================================================*/
+
+/*
+ * CVAhermiteMalloc
+ *
+ * This routine allocates memory for storing information at all
+ * intermediate points between two consecutive check points. 
+ * This data is then used to interpolate the forward solution 
+ * at any other time.
+ */
+
+static DtpntMem *CVAhermiteMalloc(CVodeMem cv_mem, long int steps)
+{
+  DtpntMem *dt_mem;
+  HermiteDataMem content;
+  long int i;
+
+  dt_mem = (DtpntMem *) malloc((steps+1)*sizeof(struct DtpntMemRec *));
+
+  for (i=0; i<=steps; i++) {
+    dt_mem[i] = (DtpntMem) malloc(sizeof(struct DtpntMemRec));
+    content   = (HermiteDataMem) malloc(sizeof(struct HermiteDataMemRec));
+    content->y  = N_VClone(tempv);
+    content->yd = N_VClone(tempv);
+    dt_mem[i]->content = content;
+  } 
+
+  return(dt_mem);
+}
+
+/*
+ * CVAhermiteFree
+ *
+ * This routine frees the memeory allocated for data storage.
+ */
+
+static void CVAhermiteFree(DtpntMem *dt_mem, long int steps)
+{
+  long int i;
+  HermiteDataMem content;
+
+  for (i=0; i<=steps; i++) {
+    content = (HermiteDataMem) (dt_mem[i]->content);
+    N_VDestroy(content->y);
+    N_VDestroy(content->yd);
+    free(dt_mem[i]->content);
+    free(dt_mem[i]);
+  }
+}
+
+/*
+ * CVAhermiteStorePnt
+ *
+ * This routine stores a new point (y,yd) in the structure d for use
+ * in the cubic Hermite interpolation.
+ * Note that the time is already stored.
+ */
+
+static int CVAhermiteStorePnt(CVodeMem cv_mem, DtpntMem d)
+{
+  HermiteDataMem content;
+
+  content = (HermiteDataMem) d->content;
+
+  N_VScale(ONE, zn[0], content->y);
+  
+  if (nst == 0)
+    f(tn, content->y, content->yd, f_data);
+  else
+    N_VScale(ONE/h, zn[1], content->yd);
+
+  return(0);
+}
+
+/*
+ * CVAhermitePrepare
+ *
+ * This routine computes quantities required by the Hermite
+ * interpolation that are independent of the interpolation point.
+ */
+
+static void CVAhermitePrepare(CVadjMem ca_mem, DtpntMem *dt_mem, long int i)
+{
+  realtype t0, t1; 
+  HermiteDataMem content0, content1;
+  N_Vector y0, y1, yd0, yd1;
+
+  t0  = dt_mem[i-1]->t;
+  content0 = (HermiteDataMem) (dt_mem[i-1]->content);
+  y0  = content0->y;
+  yd0 = content0->yd;
+
+  t1  = dt_mem[i]->t;
+  content1 = (HermiteDataMem) (dt_mem[i]->content);
+  y1  = content1->y;
+  yd1 = content1->yd;
+
+  delta = t1 - t0;
+
+  N_VLinearSum(ONE, y1, -ONE, y0, Y0);
+  N_VLinearSum(ONE, yd1,  ONE, yd0, Y1);
+  N_VLinearSum(delta, Y1, -TWO, Y0, Y1);
+  N_VLinearSum(ONE, Y0, -delta, yd0, Y0);
+}
+
+/*
+ * CVAhermiteInterpolate
+ *
+ * This routine performs the Hermite interpolation.
+ */
+
+static void CVAhermiteInterpolate(CVadjMem ca_mem, DtpntMem *dt_mem,
+                                  long int i, realtype t, N_Vector y)
+{
+  realtype t0, t1;
+  HermiteDataMem content0;
+  N_Vector y0, yd0;
+  realtype factor;
+
+  t0  = dt_mem[i-1]->t;
+  t1  = dt_mem[i]->t;
+  content0 = (HermiteDataMem) (dt_mem[i-1]->content);
+  y0  = content0->y;
+  yd0 = content0->yd;
+
+  factor = t - t0;
+  N_VLinearSum(ONE, y0, factor, yd0, y);
+
+  factor = factor/delta;
+  factor = factor*factor;
+  N_VLinearSum(ONE, y, factor, Y0, y);
+
+  factor = factor*(t-t1)/delta;
+  N_VLinearSum(ONE, y, factor, Y1, y);
+}
+
+/*
+ * CVAhermiteGetY
+ *
+ * This routine uses cubic piece-wise Hermite interpolation for 
+ * the forward solution vector. 
+ * It is typically called by the wrapper routines before calling
+ * user provided routines (fB, djacB, bjacB, jtimesB, psolB) but
+ * can be directly called by the user through CVadjGetY
+*/
+
+static int CVAhermiteGetY(CVadjMem ca_mem, realtype t, N_Vector y)
+{
+  DtpntMem *dt_mem;
+  HermiteDataMem content;
+  static long int i;
+  long int inew;
+  int sign;
+  booleantype to_left, to_right;
+  realtype troundoff;
+
+  dt_mem = ca_mem->dt_mem;
+
+  sign = (tfinal - tinitial > ZERO) ? 1 : -1;
+
+  if ( newData ) {
+    i = np-1;
+    CVAhermitePrepare(ca_mem, dt_mem, i); 
+    newData = FALSE;
+  }
+
+  /* Search for inew starting from last i */ 
+  to_left  = ( sign*(t - dt_mem[i-1]->t) < ZERO);
+  to_right = ( sign*(t - dt_mem[i]->t)   > ZERO);
+  
+  /* Test if t is beyond left limit */
+  if ( (to_left) && (i==1) ) {
+    /*troundoff = FUZZ_FACTOR*uround*(ABS(dt_mem[0]->t)+ABS(dt_mem[1]->t));*/
+    troundoff = FUZZ_FACTOR*uround;
+    if ( ABS(t - dt_mem[0]->t) <= troundoff ) {
+      content = (HermiteDataMem) (dt_mem[0]->content);
+      N_VScale(ONE, content->y, y);
+      return(CV_SUCCESS);
+    }
+    else {
+      return(CV_GETY_BADT);
+    }
+  }
+
+  inew = i;
+  if ( to_left ) {
+    /* Search to the left */
+    inew--;
+    loop {
+      if ( inew == 1 ) break;
+      if ( sign*(t - dt_mem[inew-1]->t) <= ZERO) inew--;
+      else                                       break;
+    }
+  } else if ( to_right ) {
+    /* Search to the right */
+    inew++;
+    loop {
+      if ( sign*(t - dt_mem[inew]->t) > ZERO) inew++;
+      else                                    break;
+    }
+  }
+  
+  if ( inew != i )
+    CVAhermitePrepare(ca_mem, dt_mem, inew);
+
+  CVAhermiteInterpolate(ca_mem, dt_mem, inew, t, y);
+
+  i = inew;
+
+  return(CV_SUCCESS);
+}
+
+
+
+/*=================================================================*/
+/*             Wrappers for adjoint system                         */
+/*=================================================================*/
+
+/*
+ * CVArhs
+ *
+ * This routine interfaces to the CVRhsFnB routine provided by
+ * the user.
+ * NOTE: f_data actually contains cvadj_mem
+ */
+
+static void CVArhs(realtype t, N_Vector yB, 
+                   N_Vector yBdot, void *cvadj_mem)
+{
+  CVadjMem ca_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  /* Forward solution from Hermite interpolation */
+  flag = getY(ca_mem, t, ytmp);
+  if (flag != CV_SUCCESS) {
+    printf("\n\nBad t in interpolation\n\n");
+    exit(1);
+  }
+
+  /* Call user's adjoint RHS routine */
+  f_B(t, ytmp, yB, yBdot, f_data_B);
+}
+
+/*
+ * CVArhsQ
+ *
+ * This routine interfaces to the CVQuadRhsFnB routine provided by
+ * the user.
+ * NOTE: fQ_data actually contains cvadj_mem
+ */
+
+static void CVArhsQ(realtype t, N_Vector yB, 
+                    N_Vector qBdot, void *cvadj_mem)
+{
+  CVadjMem ca_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  /* Forward solution from Hermite interpolation */
+  flag = getY(ca_mem, t, ytmp);
+  if (flag != CV_SUCCESS) {
+    printf("\n\nBad t in interpolation\n\n");
+    exit(1);
+  }
+
+  /* Call user's adjoint RHS routine */
+  fQ_B(t, ytmp, yB, qBdot, fQ_data_B);
+}
+
+/*
+ * CVAdenseJac
+ *
+ * This routine interfaces to the CVDenseJacFnB routine provided 
+ * by the user.
+ * NOTE: jac_data actually contains cvadj_mem
+ */
+
+static void CVAdenseJac(long int nB, DenseMat JB, realtype t, 
+                        N_Vector yB, N_Vector fyB, void *cvadj_mem,
+                        N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B)
+{
+  CVadjMem ca_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  /* Forward solution from Hermite interpolation */
+  flag = getY(ca_mem, t, ytmp);
+  if (flag != CV_SUCCESS) {
+    printf("\n\nBad t in interpolation\n\n");
+    exit(1);
+  }
+
+  /* Call user's adjoint dense djacB routine */
+  djac_B(nB, JB, t, ytmp, yB, fyB, jac_data_B, 
+         tmp1B, tmp2B, tmp3B);
+
+}
+
+/*
+ * CVAbandJac
+ *
+ * This routine interfaces to the CVBandJacFnB routine provided 
+ * by the user.
+ * NOTE: jac_data actually contains cvadj_mem
+ */
+
+static void CVAbandJac(long int nB, long int mupperB, 
+                       long int mlowerB, BandMat JB, realtype t, 
+                       N_Vector yB, N_Vector fyB, void *cvadj_mem, 
+                       N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B)
+{
+  CVadjMem ca_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  /* Forward solution from Hermite interpolation */
+  flag = getY(ca_mem, t, ytmp);
+  if (flag != CV_SUCCESS) {
+    printf("\n\nBad t in interpolation\n\n");
+    exit(1);
+  }
+
+  /* Call user's adjoint band bjacB routine */
+  bjac_B(nB, mupperB, mlowerB, JB, t, ytmp, yB, fyB, jac_data_B,
+         tmp1B, tmp2B, tmp3B);
+}
+
+/*
+ * CVAspilsPrecSetup
+ *
+ * This routine interfaces to the CVSpgmrPrecSetupFnB routine 
+ * provided by the user.
+ * NOTE: p_data actually contains cvadj_mem
+ */
+
+static int CVAspilsPrecSetup(realtype t, N_Vector yB, 
+                             N_Vector fyB, booleantype jokB, 
+                             booleantype *jcurPtrB, realtype gammaB,
+                             void *cvadj_mem,
+                             N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B)
+{
+  CVadjMem ca_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  /* Forward solution from Hermite interpolation */
+  flag = getY(ca_mem, t, ytmp);
+  if (flag != CV_SUCCESS) {
+    printf("\n\nBad t in interpolation\n\n");
+    exit(1);
+  } 
+
+  /* Call user's adjoint precondB routine */
+  flag = pset_B(t, ytmp, yB, fyB, jokB, jcurPtrB, gammaB,
+                P_data_B, tmp1B, tmp2B, tmp3B);
+
+  return(flag);
+}
+
+/*
+ * CVAspilsPrecSolve
+ *
+ * This routine interfaces to the CVSpgmrPrecSolveFnB routine 
+ * provided by the user.
+ * NOTE: p_data actually contains cvadj_mem
+ */
+
+static int CVAspilsPrecSolve(realtype t, N_Vector yB, N_Vector fyB,
+                             N_Vector rB, N_Vector zB,
+                             realtype gammaB, realtype deltaB,
+                             int lrB, void *cvadj_mem, N_Vector tmpB)
+{
+  CVadjMem ca_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  /* Forward solution from Hermite interpolation */
+  flag = getY(ca_mem, t, ytmp);
+  if (flag != CV_SUCCESS) {
+    printf("\n\nBad t in interpolation\n\n");
+    exit(1);
+  } 
+
+  /* Call user's adjoint psolveB routine */
+  flag = psolve_B(t, ytmp, yB, fyB, rB, zB, gammaB, deltaB, 
+                  lrB, P_data_B, tmpB);
+
+  return(flag);
+}
+
+/*
+ * CVAspilsJacTimesVec
+ *
+ * This routine interfaces to the CVSpgmrJacTimesVecFnB routine 
+ * provided by the user.
+ * NOTE: jac_data actually contains cvadj_mem
+ */
+
+static int CVAspilsJacTimesVec(N_Vector vB, N_Vector JvB, realtype t, 
+                               N_Vector yB, N_Vector fyB, 
+                               void *cvadj_mem, N_Vector tmpB)
+{
+  CVadjMem ca_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  /* Forward solution from Hermite interpolation */
+  flag = getY(ca_mem, t, ytmp);
+  if (flag != CV_SUCCESS) {
+    printf("\n\nBad t in interpolation\n\n");
+    exit(1);
+  } 
+
+  /* Call user's adjoint jtimesB routine */
+  flag = jtimes_B(vB, JvB, t, ytmp, yB, fyB, jac_data_B, tmpB);
+
+  return(flag);
+}
+
+/*
+ * CVAgloc
+ *
+ * This routine interfaces to the CVLocalFnB routine 
+ * provided by the user.
+ * NOTE: f_data actually contains cvadj_mem
+ */
+
+static void CVAgloc(long int NlocalB, realtype t, N_Vector yB, N_Vector gB, 
+                    void *cvadj_mem)
+{
+  CVadjMem ca_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  /* Forward solution from Hermite interpolation */
+  flag = getY(ca_mem, t, ytmp);
+  if (flag != CV_SUCCESS) {
+    printf("\n\nBad t in interpolation\n\n");
+    exit(1);
+  } 
+
+  /* Call user's adjoint glocB routine */
+  gloc_B(NlocalB, t, ytmp, yB, gB, f_data_B);
+}
+
+/*
+ * CVAcfn
+ *
+ * This routine interfaces to the CVCommFnB routine 
+ * provided by the user.
+ * NOTE: f_data actually contains cvadj_mem
+ */
+
+static void CVAcfn(long int NlocalB, realtype t, N_Vector yB,
+                   void *cvadj_mem)
+{
+  CVadjMem ca_mem;
+  int flag;
+
+  ca_mem = (CVadjMem) cvadj_mem;
+
+  if (cfn_B == NULL) return;
+
+  /* Forward solution from Hermite interpolation */
+  flag = getY(ca_mem, t, ytmp);
+  if (flag != CV_SUCCESS) {
+    printf("\n\nBad t in interpolation\n\n");
+    exit(1);
+  } 
+
+  /* Call user's adjoint cfnB routine */
+  cfn_B(NlocalB, t, ytmp, yB, f_data_B);
+}
+
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvodea_impl.h b/Win32/WinCVODE/sundials/cvodes/source/cvodea_impl.h
new file mode 100644
index 0000000..1584f46
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvodea_impl.h
@@ -0,0 +1,251 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Radu Serban and Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the CVODEA adjoint integrator.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVODEA_IMPL_H
+#define _CVODEA_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "cvodea.h"
+#include "cvodes_impl.h"
+#include "cvdense_impl.h"
+#include "cvband_impl.h"
+#include "cvspgmr_impl.h"
+#include "cvbandpre_impl.h"
+#include "cvbbdpre_impl.h"
+
+#include "nvector.h"
+#include "sundialstypes.h"
+
+  /*
+   * -----------------------------------------------------------------
+   * Forward references for pointers to various structures 
+   * -----------------------------------------------------------------
+   */
+
+  typedef struct CVadjMemRec *CVadjMem;
+  typedef struct DtpntMemRec *DtpntMem;
+
+  /*
+   * -----------------------------------------------------------------
+   * Types for functions provided by an interpolation module
+   * -----------------------------------------------------------------
+   * CVAGetYFn:   Function type for a function that returns the 
+   *              interpolated forward solution.
+   * CVAStorePnt: Function type for a function that stores a new
+   *              point in the structure d
+   * -----------------------------------------------------------------
+   */
+
+  typedef int (*CVAGetYFn)(CVadjMem ca_mem, realtype t, N_Vector y);
+  typedef int (*CVAStorePntFn)(CVodeMem cv_mem, DtpntMem d);
+
+  /*
+   * -----------------------------------------------------------------
+   * Types : struct CkpntMemRec, CkpntMem
+   * -----------------------------------------------------------------
+   * The type CkpntMem is type pointer to struct CkpntMemRec.
+   * This structure contains fields to store all information at a
+   * check point that is needed to 'hot' start cvodes.
+   * -----------------------------------------------------------------
+   */
+
+  typedef struct CkpntMemRec {
+
+    /* Integration limits */
+    realtype ck_t0;
+    realtype ck_t1;
+    
+    /* Nordsieck History Array */
+    N_Vector ck_zn[L_MAX];
+    
+    /* Nordsieck History Array for quadratures */
+    N_Vector ck_znQ[L_MAX];
+    
+    /* Do we need to carry quadratures? */
+    booleantype ck_quadr;
+    
+    /* Was ck_zn[qmax] allocated?
+       ck_zqm = 0    - no
+       ck_zqm = qmax - yes      */
+    int ck_zqm;
+    
+    /* Step data */
+    long int ck_nst;
+    realtype ck_tretlast;
+    int      ck_q;
+    int      ck_qprime;
+    int      ck_qwait;
+    int      ck_L;
+    realtype ck_gammap;
+    realtype ck_h;
+    realtype ck_hprime;
+    realtype ck_hscale;
+    realtype ck_eta;
+    realtype ck_etamax;
+    realtype ck_tau[L_MAX+1];
+    realtype ck_tq[NUM_TESTS+1];
+    realtype ck_l[L_MAX];
+    
+    /* Saved values */
+    realtype ck_saved_tq5;
+    
+    /* Pointer to next structure in list */
+    struct CkpntMemRec *ck_next;
+    
+  } *CkpntMem;
+  
+  /*
+   * -----------------------------------------------------------------
+   * Type : struct DtpntMemRec
+   * -----------------------------------------------------------------
+   * This structure contains fields to store all information at a
+   * data point that is needed to interpolate solution of forward
+   * simulations. Its content field is interpType-dependent.
+   * -----------------------------------------------------------------
+   */
+  
+  struct DtpntMemRec {
+    realtype t;    /* time */
+    void *content; /* interpType-dependent content */
+  };
+
+  /* Data for cubic Hermite interpolation */
+  typedef struct HermiteDataMemRec {
+    N_Vector y;
+    N_Vector yd;
+  } *HermiteDataMem;
+
+  /*
+   * -----------------------------------------------------------------
+   * Type : struct CVadjMemRec
+   * -----------------------------------------------------------------
+   * The type CVadjMem is type pointer to struct CVadjMemRec.
+   * This structure contins fields to store all information
+   * necessary for adjoint sensitivity analysis.
+   * -----------------------------------------------------------------
+   */
+  
+  struct CVadjMemRec {
+    
+    /* CVODE memory for forward runs */
+    struct CVodeMemRec *cv_mem;
+    
+    /* CVODE memory for backward run */
+    struct CVodeMemRec *cvb_mem;
+    
+    /* Storage for check point information */
+    struct CkpntMemRec *ck_mem;
+
+    /* Interpolation type */
+    int ca_interpType;
+
+    /* Storage for data from forward runs */
+    struct DtpntMemRec **dt_mem;
+    
+    /* Functions set by the interpolation module */
+    CVAStorePntFn ca_storePnt; /* store a new interpolation point */
+    CVAGetYFn     ca_getY;     /* interpolate forward solution    */
+    
+    /* Right hand side function (fB) for backward run */
+    CVRhsFnB ca_fB;
+    
+    /* Right hand side quadrature function (fQB) for backward run */
+    CVQuadRhsFnB ca_fQB;
+    
+    /* Dense Jacobian function (djacB) for backward run */
+    CVDenseJacFnB ca_djacB;
+    
+    /* Banded Jacobian function (bjacB) for backward run */
+    CVBandJacFnB ca_bjacB;
+    
+    /* Jac times vec routine (jtimesB) for backward run */
+    CVSpgmrJacTimesVecFnB ca_jtimesB;
+    
+    /* Preconditioner routines (precondB and psolveB) for backward run */
+    CVSpgmrPrecSetupFnB ca_psetB;
+    CVSpgmrPrecSolveFnB ca_psolveB;
+    
+    /* BBD user functions (glocB and cfnB) for backward run */
+    CVLocalFnB ca_glocB;
+    CVCommFnB  ca_cfnB;
+    
+    /* User f_dataB */
+    void *ca_f_dataB;
+    
+    /* User fQ_dataB */
+    void *ca_fQ_dataB;
+    
+    /* User jac_dataB */
+    void *ca_jac_dataB;
+    
+    /* User P_dataB */
+    void *ca_P_dataB;
+    
+    /* BP prec data */
+    void *ca_bp_dataB;
+    
+    /* BBD prec data */
+    void *ca_bbd_dataB;
+    
+    /* Unit roundoff */
+    realtype ca_uround;
+    
+    /* Integration interval */
+    realtype ca_tinitial, ca_tfinal;
+    
+    /* Time at which to extract quadratures */
+    realtype ca_t_for_quad;
+    
+    /* Number of check points */
+    int ca_nckpnts;
+    
+    /* Number of steps between 2 check points */
+    long int ca_nsteps;
+    
+    /* Flag to indicate that data in dt_mem is new */
+    booleantype ca_newData;
+    
+    /* address of the check point structure for which data is available */
+    struct CkpntMemRec *ca_ckpntData;
+    
+    /* Actual number of data points saved in current dt_mem */
+    /* Commonly, np = nsteps+1                              */
+    long int ca_np;
+    
+    /* Temporary space used by the Hermite interpolation */
+    realtype ca_delta;
+    N_Vector ca_Y0, ca_Y1;
+    N_Vector ca_ytmp;
+    
+  };
+  
+  /* Error Messages */
+  
+#define _CVAM_          "CVadjMalloc-- "
+#define MSGAM_NO_MEM    _CVAM_ "cvode_mem = NULL illegal.\n\n"
+#define MSGAM_BAD_STEPS _CVAM_ "Steps nonpositive illegal.\n\n"
+#define MSGAM_MEM_FAIL  _CVAM_ "A memory request failed.\n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvodes.c b/Win32/WinCVODE/sundials/cvodes/source/cvodes.c
new file mode 100644
index 0000000..4f272db
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvodes.c
@@ -0,0 +1,6604 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the main CVODES integrator
+ * with sensitivity analysis capabilities.
+ * It is independent of the CVODES linear solver in use.
+ * -----------------------------------------------------------------
+ */
+
+/*=================================================================*/
+/*             Import Header Files                                 */
+/*=================================================================*/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvodes_impl.h"
+#include "sundialsmath.h"
+#include "sundialstypes.h"
+
+/*=================================================================*/
+/*             Macros                                              */
+/*=================================================================*/
+
+/* Macro: loop */
+#define loop for(;;)
+
+/*=================================================================*/
+/*             CVODES Private Constants                            */
+/*=================================================================*/
+
+#define ZERO   RCONST(0.0)     /* real 0.0     */
+#define TINY   RCONST(1.0e-10) /* small number */
+#define TENTH  RCONST(0.1)     /* real 0.1     */
+#define FOURTH RCONST(0.25)    /* real 0.25    */
+#define HALF   RCONST(0.5)     /* real 0.5     */
+#define ONE    RCONST(1.0)     /* real 1.0     */
+#define TWO    RCONST(2.0)     /* real 2.0     */
+#define THREE  RCONST(3.0)     /* real 3.0     */
+#define FOUR   RCONST(4.0)     /* real 4.0     */
+#define FIVE   RCONST(5.0)     /* real 5.0     */
+#define TWELVE RCONST(12.0)    /* real 12.0    */
+#define HUN    RCONST(100.0)   /* real 100.0   */
+
+/*=================================================================*/
+/*             CVODES Routine-Specific Constants                   */
+/*=================================================================*/
+
+/* CVodeGetDky and CVStep */
+
+#define FUZZ_FACTOR RCONST(100.0)
+
+/* CVHin */
+
+#define HLB_FACTOR RCONST(100.0)
+#define HUB_FACTOR RCONST(0.1)
+#define H_BIAS     HALF
+#define MAX_ITERS  4
+
+/* CVSet */
+
+#define CORTES RCONST(0.1)
+
+/* CVStep return values */
+
+#define SUCCESS_STEP      0
+#define REP_ERR_FAIL     -1
+#define REP_CONV_FAIL    -2
+#define SETUP_FAILED     -3
+#define SOLVE_FAILED     -4
+
+/* CVStep control constants */
+
+#define PREDICT_AGAIN    -5
+#define DO_ERROR_TEST     1
+
+/* CVStep */
+
+#define THRESH RCONST(1.5)
+#define ETAMX1 RCONST(10000.0) 
+#define ETAMX2 RCONST(10.0)
+#define ETAMX3 RCONST(10.0)
+#define ETAMXF RCONST(0.2)
+#define ETAMIN RCONST(0.1)
+#define ETACF  RCONST(0.25)
+#define ADDON  RCONST(0.000001)
+#define BIAS1  RCONST(6.0)
+#define BIAS2  RCONST(6.0)
+#define BIAS3  RCONST(10.0)
+#define ONEPSM RCONST(1.000001)
+
+#define SMALL_NST    10   /* nst > SMALL_NST => use ETAMX3          */
+#define MXNCF        10   /* max no. of convergence failures during
+                             one step try                           */
+#define MXNEF         7   /* max no. of error test failures during
+                             one step try                           */
+#define MXNEF1        3   /* max no. of error test failures before
+                             forcing a reduction of order           */
+#define SMALL_NEF     2   /* if an error failure occurs and
+                             SMALL_NEF <= nef <= MXNEF1, then
+                             reset eta =  MIN(eta, ETAMXF)          */
+#define LONG_WAIT    10   /* number of steps to wait before
+                             considering an order change when
+                             q==1 and MXNEF1 error test failures
+                             have occurred                          */
+
+/* CVNls return values */
+
+#define SOLVED            0
+#define CONV_FAIL        -1 
+#define SETUP_FAIL_UNREC -2
+#define SOLVE_FAIL_UNREC -3
+
+/* CVNls input flags */
+
+#define FIRST_CALL      0
+#define PREV_CONV_FAIL -1
+#define PREV_ERR_FAIL  -2
+
+/* CVNls other constants */
+
+#define NLS_MAXCOR 3       /* maximum no. of corrector iterations for the
+                              nonlinear solver                             */
+#define CRDOWN RCONST(0.3) /* constant used in the estimation of the
+                              convergence rate (crate) of the
+                              iterates for the nonlinear equation          */
+#define DGMAX  RCONST(0.3) /* iter == CV_NEWTON, |gamma/gammap-1| > DGMAX
+                              => call lsetup                               */
+
+#define RDIV      TWO      /* declare divergence if ratio del/delp > RDIV  */
+#define MSBP       20      /* max no. of steps between lsetup calls        */
+
+#define TRY_AGAIN  99      /* control constant for CVNlsNewton - should be
+                              distinct from CVNls return values            */
+
+/* CVRcheck* return values      */
+
+#define INITROOT -1
+#define CLOSERT  -2
+#define RTFOUND   1
+
+/* CVSensRhs1DQ finite difference methods */
+
+#define CENTERED1  0
+#define CENTERED2  1
+#define FORWARD1   2
+#define FORWARD2   3
+
+/*=================================================================*/
+/*             Private Helper Functions Prototypes                 */
+/*=================================================================*/
+
+static booleantype CVCheckNvector(N_Vector tmpl);
+
+static int CVInitialSetup(CVodeMem cv_mem);
+
+static booleantype CVAllocVectors(CVodeMem cv_mem, N_Vector tmpl, int tol);
+static void  CVFreeVectors(CVodeMem cv_mem);
+
+static int CVEwtSetSS(CVodeMem cv_mem, N_Vector ycur, N_Vector weight);
+static int CVEwtSetSV(CVodeMem cv_mem, N_Vector ycur, N_Vector weight);
+
+static booleantype CVHin(CVodeMem cv_mem, realtype tout);
+static realtype CVUpperBoundH0(CVodeMem cv_mem, realtype tdist);
+static realtype CVYddNorm(CVodeMem cv_mem, realtype hg);
+
+static int CVStep(CVodeMem cv_mem);
+
+static int CVsldet(CVodeMem cv_mem);
+
+static void CVAdjustParams(CVodeMem cv_mem);
+static void CVAdjustOrder(CVodeMem cv_mem, int deltaq);
+static void CVAdjustAdams(CVodeMem cv_mem, int deltaq);
+static void CVAdjustBDF(CVodeMem cv_mem, int deltaq);
+static void CVIncreaseBDF(CVodeMem cv_mem);
+static void CVDecreaseBDF(CVodeMem cv_mem);
+
+static void CVRescale(CVodeMem cv_mem);
+
+static void CVPredict(CVodeMem cv_mem);
+
+static void CVSet(CVodeMem cv_mem);
+static void CVSetAdams(CVodeMem cv_mem);
+static realtype CVAdamsStart(CVodeMem cv_mem, realtype m[]);
+static void CVAdamsFinish(CVodeMem cv_mem, realtype m[], realtype M[], realtype hsum);
+static realtype CVAltSum(int iend, realtype a[], int k);
+static void CVSetBDF(CVodeMem cv_mem);
+static void CVSetTqBDF(CVodeMem cv_mem, realtype hsum, realtype alpha0,
+                       realtype alpha0_hat, realtype xi_inv, realtype xistar_inv);
+
+static int CVNls(CVodeMem cv_mem, int nflag);
+static int CVNlsFunctional(CVodeMem cv_mem);
+static int CVNlsNewton(CVodeMem cv_mem, int nflag);
+static int CVNewtonIteration(CVodeMem cv_mem);
+
+static int CVHandleNFlag(CVodeMem cv_mem, int *nflagPtr, realtype saved_t,
+                         int *ncfPtr, long int *ncfnPtr);
+
+static void CVRestore(CVodeMem cv_mem, realtype saved_t);
+
+static booleantype CVDoErrorTest(CVodeMem cv_mem, int *nflagPtr, int *kflagPtr,
+                                 realtype saved_t, int *nefPtr, realtype *dsmPtr);
+
+static void CVCompleteStep(CVodeMem cv_mem);
+
+static void CVPrepareNextStep(CVodeMem cv_mem, realtype dsm);
+static void CVSetEta(CVodeMem cv_mem);
+static realtype CVComputeEtaqm1(CVodeMem cv_mem);
+static realtype CVComputeEtaqp1(CVodeMem cv_mem);
+static void CVChooseEta(CVodeMem cv_mem);
+static void CVBDFStab(CVodeMem cv_mem);
+
+static int CVHandleFailure(CVodeMem cv_mem,int kflag);
+
+/*----------------*/
+
+static int CVRcheck1(CVodeMem cv_mem);
+static int CVRcheck2(CVodeMem cv_mem);
+static int CVRcheck3(CVodeMem cv_mem);
+static int CVRootfind(CVodeMem cv_mem);
+
+/*----------------*/
+
+static booleantype CVQuadAllocVectors(CVodeMem cv_mem, N_Vector tmpl);
+static int CVQuadEwtSet(N_Vector qcur, N_Vector weightQ, CVodeMem cv_mem);
+static int CVQuadEwtSetSS(N_Vector qcur, N_Vector weightQ, CVodeMem cv_mem);
+static int CVQuadEwtSetSV(N_Vector qcur, N_Vector weightQ, CVodeMem cv_mem);
+static void CVQuadFreeVectors(CVodeMem cv_mem);
+
+/*----------------*/
+
+static booleantype CVQuadDoErrorTest(CVodeMem cv_mem, int *nflagPtr, 
+                                     int *kflagPtr, realtype saved_t, 
+                                     int *nefQPtr, realtype *dsmQPtr);
+
+/*----------------*/
+
+static realtype CVQuadUpdateNorm(CVodeMem cv_mem, realtype old_nrm,
+                                 N_Vector xQ, N_Vector wQ);
+static realtype CVQuadUpdateDsm(CVodeMem cv_mem, realtype old_dsm, 
+                                realtype dsmQ);
+
+/*----------------*/
+
+static booleantype CVSensAllocVectors(CVodeMem cv_mem, N_Vector tmpl);
+static void CVSensFreeVectors(CVodeMem cv_mem);
+
+/*----------------*/
+
+static int CVSensEwtSet(N_Vector *yScur, N_Vector *weightS, CVodeMem cv_mem);
+static int CVSensEwtSetEE(N_Vector *yScur, N_Vector *weightS, CVodeMem cv_mem);
+static int CVSensEwtSetSS(N_Vector *yScur, N_Vector *weightS, CVodeMem cv_mem);
+static int CVSensEwtSetSV(N_Vector *yScur, N_Vector *weightS, CVodeMem cv_mem);
+
+/*----------------*/
+
+static int CVStgrNls(CVodeMem cv_mem);
+static int CVStgrNlsFunctional(CVodeMem cv_mem);
+static int CVStgrNlsNewton(CVodeMem cv_mem);
+static int CVStgrNewtonIteration(CVodeMem cv_mem);
+static int CVStgr1Nls(CVodeMem cv_mem, int is);
+static int CVStgr1NlsFunctional(CVodeMem cv_mem, int is);
+static int CVStgr1NlsNewton(CVodeMem cv_mem, int is);
+static int CVStgr1NewtonIteration(CVodeMem cv_mem, int is);
+static booleantype CVStgrDoErrorTest(CVodeMem cv_mem, int *nflagPtr, int *kflagPtr, 
+                                     realtype saved_t, int *nefSPtr, realtype *dsmSPtr);
+
+/*----------------*/
+
+static realtype CVSensNorm(CVodeMem cv_mem, N_Vector *xS, N_Vector *wS);
+static realtype CVSensUpdateNorm(CVodeMem cv_mem, realtype old_nrm,
+                                 N_Vector *xS, N_Vector *wS);
+static realtype CVStgrUpdateDsm(CVodeMem cv_mem, realtype old_dsm, 
+                                realtype dsmS);
+
+/*----------------*/
+
+static void CVSensRhs(CVodeMem cv_mem, realtype time, 
+                      N_Vector ycur, N_Vector fcur, 
+                      N_Vector *yScur, N_Vector *fScur,
+                      N_Vector temp1, N_Vector temp2);
+
+static void CVSensRhs1(CVodeMem cv_mem, realtype time, 
+                       N_Vector ycur, N_Vector fcur, 
+                       int is, N_Vector yScur, N_Vector fScur,
+                       N_Vector temp1, N_Vector temp2);
+
+/*=================================================================*/
+/*             EXPORTED FUNCTIONS IMPLEMENTATION                   */
+/*=================================================================*/
+
+/* 
+ * CVodeCreate
+ *
+ * CVodeCreate creates an internal memory block for a problem to 
+ * be solved by CVODES.
+ * If successful, CVodeCreate returns a pointer to the problem memory. 
+ * This pointer should be passed to CVodeMalloc.  
+ * If an initialization error occurs, CVodeCreate prints an error 
+ * message to standard err and returns NULL. 
+ */
+
+void *CVodeCreate(int lmm, int iter)
+{
+  int maxord;
+  CVodeMem cv_mem;
+
+  /* Test inputs */
+
+  if ((lmm != CV_ADAMS) && (lmm != CV_BDF)) {
+    fprintf(stderr, MSGCVS_BAD_LMM);
+    return (NULL);
+  }
+  
+  if ((iter != CV_FUNCTIONAL) && (iter != CV_NEWTON)) {
+    fprintf(stderr, MSGCVS_BAD_ITER);
+    return (NULL);
+  }
+
+  cv_mem = (CVodeMem) malloc(sizeof(struct CVodeMemRec));
+  if (cv_mem == NULL) {
+    fprintf(stderr, MSGCVS_CVMEM_FAIL);
+    return (NULL);
+  }
+
+  maxord = (lmm == CV_ADAMS) ? ADAMS_Q_MAX : BDF_Q_MAX;
+
+  /* copy input parameters into cv_mem */
+  cv_mem->cv_lmm    = lmm;
+  cv_mem->cv_iter   = iter;
+
+  /* Set uround */
+  cv_mem->cv_uround = UNIT_ROUNDOFF;
+
+  /* Set default values for integrator optional inputs */
+  cv_mem->cv_f        = NULL;
+  cv_mem->cv_f_data   = NULL;
+  cv_mem->cv_efun     = NULL;
+  cv_mem->cv_e_data   = NULL;
+  cv_mem->cv_errfp    = stderr;
+  cv_mem->cv_qmax     = maxord;
+  cv_mem->cv_mxstep   = MXSTEP_DEFAULT;
+  cv_mem->cv_mxhnil   = MXHNIL_DEFAULT;
+  cv_mem->cv_sldeton  = FALSE;
+  cv_mem->cv_hin      = ZERO;
+  cv_mem->cv_hmin     = HMIN_DEFAULT;
+  cv_mem->cv_hmax_inv = HMAX_INV_DEFAULT;
+  cv_mem->cv_tstopset = FALSE;
+  cv_mem->cv_maxcor   = NLS_MAXCOR;
+  cv_mem->cv_maxnef   = MXNEF;
+  cv_mem->cv_maxncf   = MXNCF;
+  cv_mem->cv_nlscoef  = CORTES;
+
+  /* Set default values for quad. optional inputs */
+  cv_mem->cv_quadr    = FALSE;
+  cv_mem->cv_fQ       = NULL;
+  cv_mem->cv_fQ_data  = NULL;
+  cv_mem->cv_errconQ  = FALSE;
+
+  /* Set default values for sensi. optional inputs */
+  cv_mem->cv_sensi    = FALSE;
+  cv_mem->cv_fS_data  = (void *)cv_mem;
+  cv_mem->cv_fS       = CVSensRhsDQ;
+  cv_mem->cv_fS1      = CVSensRhs1DQ;
+  cv_mem->cv_fSDQ     = TRUE;
+  cv_mem->cv_ifS      = CV_ONESENS;
+  cv_mem->cv_rhomax   = ZERO;
+  cv_mem->cv_p        = NULL;
+  cv_mem->cv_pbar     = NULL;
+  cv_mem->cv_plist    = NULL;
+  cv_mem->cv_errconS  = FALSE;
+  cv_mem->cv_maxcorS  = NLS_MAXCOR;
+  cv_mem->cv_ncfS1    = NULL;
+  cv_mem->cv_ncfnS1   = NULL;
+  cv_mem->cv_nniS1    = NULL;
+  cv_mem->cv_itolS    = CV_EE;
+
+  /* Initialize lrw and liw */
+  cv_mem->cv_lrw = 65 + 2*L_MAX + NUM_TESTS;
+  cv_mem->cv_liw = 52;
+
+  /* No mallocs have been done yet */
+  cv_mem->cv_VabstolMallocDone  = FALSE;
+  cv_mem->cv_MallocDone         = FALSE;
+
+  cv_mem->cv_VabstolQMallocDone = FALSE;
+  cv_mem->cv_quadMallocDone     = FALSE;
+
+  cv_mem->cv_VabstolSMallocDone = FALSE;
+  cv_mem->cv_SabstolSMallocDone = FALSE;
+  cv_mem->cv_sensMallocDone     = FALSE;
+
+  /* Return pointer to CVODES memory block */
+  return((void *)cv_mem);
+}
+
+/*-----------------------------------------------------------------*/
+
+#define iter  (cv_mem->cv_iter)  
+#define lmm   (cv_mem->cv_lmm) 
+#define errfp (cv_mem->cv_errfp)
+#define lrw   (cv_mem->cv_lrw)
+#define liw   (cv_mem->cv_liw)
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVodeMalloc
+ * 
+ * CVodeMalloc allocates and initializes memory for a problem. All 
+ * problem inputs are checked for errors. If any error occurs during 
+ * initialization, it is reported to the file whose file pointer is 
+ * errfp and an error flag is returned. Otherwise, it returns CV_SUCCESS
+ */
+
+int CVodeMalloc(void *cvode_mem, CVRhsFn f, realtype t0, N_Vector y0, 
+                int itol, realtype reltol, void *abstol)
+{
+  CVodeMem cv_mem;
+  booleantype nvectorOK, allocOK, neg_abstol;
+  long int lrw1, liw1;
+  int i,k;
+  
+  /* Check cvode_mem */
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_CVM_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Check for legal input parameters */
+
+  if ( y0==NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_Y0_NULL);
+    return(CV_ILL_INPUT);
+  }
+
+  if ((itol != CV_SS) && (itol != CV_SV) && (itol != CV_WF)) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_ITOL);
+    return(CV_ILL_INPUT);
+  }
+
+  if (f == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_F_NULL);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Test if all required vector operations are implemented */
+
+  nvectorOK = CVCheckNvector(y0);
+  if(!nvectorOK) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_NVECTOR);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Test tolerances */
+
+  if (itol != CV_WF) {
+
+    if (abstol == NULL) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_ABSTOL_NULL);
+      return(CV_ILL_INPUT);
+    }
+
+    if (reltol < ZERO) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_RELTOL);
+      return(CV_ILL_INPUT);
+    }
+   
+    if (itol == CV_SS)
+      neg_abstol = (*((realtype *)abstol) < ZERO);
+    else
+      neg_abstol = (N_VMin((N_Vector)abstol) < ZERO);
+
+    if (neg_abstol) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_ABSTOL);
+      return(CV_ILL_INPUT);
+    }
+
+  }
+
+  /* Set space requirements for one N_Vector */
+
+  if (y0->ops->nvspace != NULL) {
+    N_VSpace(y0, &lrw1, &liw1);
+  } else {
+    lrw1 = 0;
+    liw1 = 0;
+  }
+  cv_mem->cv_lrw1 = lrw1;
+  cv_mem->cv_liw1 = liw1;
+
+  /* Allocate the vectors (using y0 as a template) */
+
+  allocOK = CVAllocVectors(cv_mem, y0, itol);
+  if (!allocOK) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_MEM_FAIL);
+    return(CV_MEM_FAIL);
+  }
+ 
+  /* Copy tolerances into memory */
+
+  cv_mem->cv_itol   = itol;
+  cv_mem->cv_reltol = reltol;      
+
+  if (itol == CV_SS)
+    cv_mem->cv_Sabstol = *((realtype *)abstol);
+  else if (itol == CV_SV)
+    N_VScale(ONE, (N_Vector)abstol, cv_mem->cv_Vabstol);
+
+  /* All error checking is complete at this point */
+
+  /* Copy the input parameters into CVODES state */
+
+  cv_mem->cv_f  = f;
+  cv_mem->cv_tn = t0;
+
+  /* Set step parameters */
+
+  cv_mem->cv_q      = 1;
+  cv_mem->cv_L      = 2;
+  cv_mem->cv_qwait  = cv_mem->cv_L;
+  cv_mem->cv_etamax = ETAMX1;
+
+  cv_mem->cv_qu = 0;
+  cv_mem->cv_hu = ZERO;
+  cv_mem->cv_tolsf = ONE;
+
+  /* Set the linear solver addresses to NULL.
+     (We check != NULL later, in CVode, if using CV_NEWTON.) */
+
+  cv_mem->cv_linit   = NULL;
+  cv_mem->cv_lsetup  = NULL;
+  cv_mem->cv_lsolve  = NULL;
+  cv_mem->cv_lfree   = NULL;
+  cv_mem->cv_lmem    = NULL;
+
+  /* Set forceSetup to FALSE */
+
+  cv_mem->cv_forceSetup = FALSE;
+
+  /* Initialize zn[0] in the history array */
+
+  N_VScale(ONE, y0, cv_mem->cv_zn[0]);
+ 
+  /* Initialize all the counters */
+
+  cv_mem->cv_nst     = 0;
+  cv_mem->cv_nfe     = 0;
+  cv_mem->cv_ncfn    = 0;
+  cv_mem->cv_netf    = 0;
+  cv_mem->cv_nni     = 0;
+  cv_mem->cv_nsetups = 0;
+  cv_mem->cv_nhnil   = 0;
+  cv_mem->cv_nstlp   = 0;
+  cv_mem->cv_nscon   = 0;
+  cv_mem->cv_nge     = 0;
+
+  /* Initialize root finding variables */
+
+  cv_mem->cv_glo    = NULL;
+  cv_mem->cv_ghi    = NULL;
+  cv_mem->cv_groot  = NULL;
+  cv_mem->cv_iroots = NULL;
+  cv_mem->cv_gfun   = NULL;
+  cv_mem->cv_g_data = NULL;
+  cv_mem->cv_nrtfn  = 0;  
+
+  /* Initialize Stablilty Limit Detection data */
+  /* NOTE: We do this even if stab lim det was not
+     turned on yet. This way, the user can turn it
+     on at any time */
+
+  cv_mem->cv_nor = 0;
+  for (i = 1; i <= 5; i++)
+    for (k = 1; k <= 3; k++) 
+      cv_mem->cv_ssdat[i-1][k-1] = ZERO;
+  
+  /* Problem has been successfully initialized */
+
+  cv_mem->cv_MallocDone = TRUE;
+
+  return(CV_SUCCESS);
+}
+
+#define lrw1 (cv_mem->cv_lrw1)
+#define liw1 (cv_mem->cv_liw1)
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVodeReInit
+ *
+ * CVodeReInit re-initializes CVODES' memory for a problem, assuming
+ * it has already been allocated in a prior CVodeMalloc call.
+ * All problem specification inputs are checked for errors.
+ * If any error occurs during initialization, it is reported to the
+ * file whose file pointer is errfp.
+ * The return value is CV_SUCCESS = 0 if no errors occurred, or
+ * a negative value otherwise.
+ */
+
+int CVodeReInit(void *cvode_mem, CVRhsFn f, realtype t0, N_Vector y0, 
+                int itol, realtype reltol, void *abstol)
+{
+  CVodeMem cv_mem;
+  booleantype neg_abstol;
+  int i,k;
+ 
+  /* Check cvode_mem */
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_CVM_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Check if cvode_mem was allocated */
+
+  if (cv_mem->cv_MallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_CVREI_NO_MALLOC);
+    return(CV_NO_MALLOC);
+  }
+
+  /* Check for legal input parameters */
+
+  if (y0 == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_Y0_NULL);
+    return (CV_ILL_INPUT);
+  }
+  
+  if ((itol != CV_SS) && (itol != CV_SV) && (itol != CV_WF)) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_ITOL);
+    return (CV_ILL_INPUT);
+  }
+
+  if (f == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_F_NULL);
+    return (CV_ILL_INPUT);
+  }
+
+/* Test tolerances */
+   
+  if (itol != CV_WF) {
+    
+    if (reltol < ZERO) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_RELTOL);
+      return (CV_ILL_INPUT);
+    }
+
+    if (itol == CV_SS)
+      neg_abstol = (*((realtype *)abstol) < ZERO);
+    else
+      neg_abstol = (N_VMin((N_Vector)abstol) < ZERO);
+
+    if (neg_abstol) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_ABSTOL);
+      return (CV_ILL_INPUT);
+    }
+
+  }
+   /* Copy tolerances into memory */
+
+  if ( (itol != CV_SV) && (cv_mem->cv_VabstolMallocDone) ) {
+    N_VDestroy(cv_mem->cv_Vabstol);
+    lrw -= lrw1;
+    liw -= liw1;
+    cv_mem->cv_VabstolMallocDone = FALSE;
+  }
+
+  if ( (itol == CV_SV) && !(cv_mem->cv_VabstolMallocDone) ) {
+    cv_mem->cv_Vabstol = N_VClone(y0);
+    lrw += lrw1;
+    liw += liw1;
+    cv_mem->cv_VabstolMallocDone = TRUE;
+  }
+
+  cv_mem->cv_itol   = itol;
+  cv_mem->cv_reltol = reltol;
+
+  if (itol == CV_SS)
+    cv_mem->cv_Sabstol = *((realtype *)abstol);
+  else if (itol == CV_SV)
+    N_VScale(ONE, (N_Vector)abstol, cv_mem->cv_Vabstol);
+
+  /* All error checking is complete at this point */
+  
+  /* Copy the input parameters into CVODE state */
+
+  cv_mem->cv_f = f;
+  cv_mem->cv_tn = t0;
+
+  /* Set step parameters */
+
+  cv_mem->cv_q      = 1;
+  cv_mem->cv_L      = 2;
+  cv_mem->cv_qwait  = cv_mem->cv_L;
+  cv_mem->cv_etamax = ETAMX1;
+
+  cv_mem->cv_qu     = 0;
+  cv_mem->cv_hu     = ZERO;
+  cv_mem->cv_tolsf  = ONE;
+
+  /* Set forceSetup to FALSE */
+
+  cv_mem->cv_forceSetup = FALSE;
+
+  /* Initialize zn[0] in the history array */
+
+  N_VScale(ONE, y0, cv_mem->cv_zn[0]);
+ 
+  /* Initialize all the counters */
+
+  cv_mem->cv_nst     = 0;
+  cv_mem->cv_nfe     = 0;
+  cv_mem->cv_ncfn    = 0;
+  cv_mem->cv_netf    = 0;
+  cv_mem->cv_nni     = 0;
+  cv_mem->cv_nsetups = 0;
+  cv_mem->cv_nhnil   = 0;
+  cv_mem->cv_nstlp   = 0;
+  cv_mem->cv_nscon   = 0;
+  cv_mem->cv_nge     = 0;
+
+  /* Initialize Stablilty Limit Detection data */
+
+  cv_mem->cv_nor = 0;
+  for (i = 1; i <= 5; i++)
+    for (k = 1; k <= 3; k++) 
+      cv_mem->cv_ssdat[i-1][k-1] = ZERO;
+  
+  /* Problem has been successfully re-initialized */
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+#define gfun   (cv_mem->cv_gfun)
+#define g_data (cv_mem->cv_g_data) 
+#define glo    (cv_mem->cv_glo)
+#define ghi    (cv_mem->cv_ghi)
+#define groot  (cv_mem->cv_groot)
+#define iroots (cv_mem->cv_iroots)
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVodeRootInit
+ *
+ * CVodeRootInit initializes a rootfinding problem to be solved
+ * during the integration of the ODE system.  It loads the root
+ * function pointer and the number of root functions, and allocates
+ * workspace memory.  The return value is CV_SUCCESS = 0 if no errors
+ * occurred, or a negative value otherwise.
+ */
+
+int CVodeRootInit(void *cvode_mem, int nrtfn, CVRootFn g, void *gdata)
+{
+  CVodeMem cv_mem;
+  int nrt;
+
+  /* Check cvode_mem */
+  if (cvode_mem==NULL) {
+    fprintf(stdout, MSGCVS_ROOT_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  nrt = (nrtfn < 0) ? 0 : nrtfn;
+
+  /* If rerunning CVodeRootInit() with a different number of root
+     functions (changing number of gfun components), then free
+     currently held memory resources */
+  if ((nrt != cv_mem->cv_nrtfn) && (cv_mem->cv_nrtfn > 0)) {
+    free(glo);
+    free(ghi);
+    free(groot);
+    free(iroots);
+
+    lrw -= 3* (cv_mem->cv_nrtfn);
+    liw -= cv_mem->cv_nrtfn;
+
+    /* Linux version of free() routine doesn't set pointer to NULL */
+    glo = ghi = groot = NULL;
+    iroots = NULL;
+  }
+
+  /* If CVodeRootInit() was called with nrtfn == 0, then set cv_nrtfn to
+     zero and cv_gfun to NULL before returning */
+  if (nrt == 0) {
+    cv_mem->cv_nrtfn = nrt;
+    gfun = NULL;
+    g_data = NULL;
+    return(CV_SUCCESS);
+  }
+
+  /* Store user's data pointer */
+  g_data = gdata;
+
+  /* If rerunning CVodeRootInit() with the same number of root functions
+     (not changing number of gfun components), then check if the root
+     function argument has changed */
+  /* If g != NULL then return as currently reserved memory resources
+     will suffice */
+  if (nrt == cv_mem->cv_nrtfn) {
+    if (g != gfun) {
+      if (g == NULL) {
+	free(glo);
+	free(ghi);
+	free(groot);
+	free(iroots);
+        
+        lrw -= 3*nrt;
+        liw -= nrt;
+
+	fprintf(errfp, MSGCVS_ROOT_FUNC_NULL);
+	return(CV_RTFUNC_NULL);
+      }
+      else {
+	gfun = g;
+	return(CV_SUCCESS);
+      }
+    }
+    else return(CV_SUCCESS);
+  }
+
+  /* Set variable values in CVode memory block */
+  cv_mem->cv_nrtfn = nrt;
+  if (g == NULL) {
+    fprintf(errfp, MSGCVS_ROOT_FUNC_NULL);
+    return(CV_RTFUNC_NULL);
+  }
+  else gfun = g;
+
+  /* Allocate necessary memory and return */
+  glo = (realtype *) malloc(nrt*sizeof(realtype));
+  if (glo == NULL) {
+    fprintf(stdout, MSGCVS_ROOT_MEM_FAIL);
+    return(CV_MEM_FAIL);
+  }
+    
+  ghi = (realtype *) malloc(nrt*sizeof(realtype));
+  if (ghi == NULL) {
+    free(glo);
+    fprintf(stdout, MSGCVS_ROOT_MEM_FAIL);
+    return(CV_MEM_FAIL);
+  }
+    
+  groot = (realtype *) malloc(nrt*sizeof(realtype));
+  if (groot == NULL) {
+    free(glo); free(ghi);
+    fprintf(stdout, MSGCVS_ROOT_MEM_FAIL);
+    return(CV_MEM_FAIL);
+  }
+
+  iroots = (int *) malloc(nrt*sizeof(int));
+  if (iroots == NULL) {
+    free(glo); free(ghi); free(groot);
+    fprintf(stdout, MSGCVS_ROOT_MEM_FAIL);
+    return(CV_MEM_FAIL);
+  }
+
+  lrw += 3*nrt;
+  liw += nrt;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVodeQuadMalloc
+ *
+ * CVodeQuadMalloc allocates and initializes quadrature related 
+ * memory for a problem. All problem specification inputs are 
+ * checked for errors. If any error occurs during initialization, 
+ * it is reported to the file whose file pointer is errfp. 
+ * The return value is CV_SUCCESS = 0 if no errors occurred, or
+ * a negative value otherwise.
+ */
+
+int CVodeQuadMalloc(void *cvode_mem, CVQuadRhsFn fQ, N_Vector yQ0)
+{
+  CVodeMem cv_mem;
+  booleantype allocOK;
+  long int lrw1Q, liw1Q;
+
+  /* Check cvode_mem */
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_QCVM_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Set space requirements for one N_Vector */
+  N_VSpace(yQ0, &lrw1Q, &liw1Q);
+  cv_mem->cv_lrw1Q = lrw1Q;
+  cv_mem->cv_liw1Q = liw1Q;
+
+  /* Allocate the vectors (using yQ0 as a template) */
+  allocOK = CVQuadAllocVectors(cv_mem, yQ0);
+  if (!allocOK) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_QCVM_MEM_FAIL);
+    return(CV_MEM_FAIL);
+  }
+
+  /* Initialize znQ[0] in the history array */
+  N_VScale(ONE, yQ0, cv_mem->cv_znQ[0]);
+
+  /* Copy the input parameters into CVODES state */
+  cv_mem->cv_fQ = fQ;
+
+  /* Initialize counters */
+  cv_mem->cv_nfQe  = 0;
+  cv_mem->cv_netfQ = 0;
+
+  /* Quadrature integration turned ON */
+  cv_mem->cv_quadr = TRUE;
+  cv_mem->cv_quadMallocDone = TRUE;
+
+  /* Quadrature initialization was successfull */
+  return(CV_SUCCESS);
+}
+
+#define lrw1Q (cv_mem->cv_lrw1Q)
+#define liw1Q (cv_mem->cv_liw1Q)
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVodeQuadReInit
+ *
+ * CVodeQuadReInit re-initializes CVODES' quadrature related memory 
+ * for a problem, assuming it has already been allocated in prior 
+ * calls to CVodeMalloc and CvodeQuadMalloc. 
+ * All problem specification inputs are checked for errors.
+ * If any error occurs during initialization, it is reported to the
+ * file whose file pointer is errfp.
+ * The return value is CV_SUCCESS = 0 if no errors occurred, or
+ * a negative value otherwise.
+ */
+
+int CVodeQuadReInit(void *cvode_mem, CVQuadRhsFn fQ, N_Vector yQ0)
+{
+  CVodeMem cv_mem;
+
+  /* Check cvode_mem */
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_QCVM_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Ckeck if quadrature was initialized? */
+  if (cv_mem->cv_quadMallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_QREI_NO_QUAD);
+    return(CV_NO_QUAD);
+  }
+
+  /* Initialize znQ[0] in the history array */
+  N_VScale(ONE, yQ0, cv_mem->cv_znQ[0]);
+
+  /* Copy the input parameters into CVODE state */
+  cv_mem->cv_fQ = fQ;
+
+  /* Initialize counters */
+  cv_mem->cv_nfQe  = 0;
+  cv_mem->cv_netfQ = 0;
+
+  /* Quadrature integration turned ON */
+  cv_mem->cv_quadr = TRUE;
+
+  /* Quadrature re-initialization was successfull */
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+#define ifS          (cv_mem->cv_ifS)
+#define fSDQ         (cv_mem->cv_fSDQ)
+#define stgr1alloc   (cv_mem->cv_stgr1alloc)
+#define nniS1        (cv_mem->cv_nniS1)
+#define ncfnS1       (cv_mem->cv_ncfnS1)
+#define ncfS1        (cv_mem->cv_ncfS1)
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVodeSenMalloc
+ *
+ * CVodeSensMalloc allocates and initializes sensitivity related 
+ * memory for a problem. All problem specification inputs are 
+ * checked for errors. If any error occurs during initialization, 
+ * it is reported to the file whose file pointer is errfp. 
+ * The return value is CV_SUCCESS = 0 if no errors occurred, or
+ * a negative value otherwise.
+ */
+
+int CVodeSensMalloc(void *cvode_mem, int Ns, int ism, N_Vector *yS0)
+{
+  CVodeMem    cv_mem;
+  booleantype allocOK;
+  int is;
+  
+  /* Check cvode_mem */
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SCVM_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Check if Ns is legal */
+  if (Ns<=0) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_NS);
+    return(CV_ILL_INPUT);
+  }
+  cv_mem->cv_Ns = Ns;
+
+  /* Check if ism is legal */
+  if ((ism!=CV_SIMULTANEOUS) && (ism!=CV_STAGGERED) && (ism!=CV_STAGGERED1)) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_ISM);
+    return(CV_ILL_INPUT);
+  }
+  cv_mem->cv_ism = ism;
+   
+  /* Check if yS0 is non-null */
+  if (yS0 == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_YS0_NULL);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Allocate ncfS1, ncfnS1, and nniS1 if needed */
+  if (ism == CV_STAGGERED1) {
+    stgr1alloc = TRUE;
+    ncfS1  = (int*)malloc(Ns*sizeof(int));
+    ncfnS1 = (long int*)malloc(Ns*sizeof(long int));
+    nniS1  = (long int*)malloc(Ns*sizeof(long int));
+    if ( (ncfS1 == NULL) || (ncfnS1 == NULL) || (nniS1 == NULL) ) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_SCVM_MEM_FAIL);
+      return(CV_MEM_FAIL);
+    }
+  } else {
+    stgr1alloc = FALSE;
+  }
+
+  /* Allocate the vectors (using yS0[0] as a template) */
+  allocOK = CVSensAllocVectors(cv_mem, yS0[0]);
+  if (!allocOK) {
+    if (stgr1alloc) {
+      free(ncfS1);
+      free(ncfnS1);
+      free(nniS1);
+    }
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SCVM_MEM_FAIL);
+    return(CV_MEM_FAIL);
+  }
+  
+  /*---------------------------------------------- 
+     All error checking is complete at this point 
+  -----------------------------------------------*/
+
+  /* Initialize znS[0] in the history array */
+  for (is=0; is<Ns; is++) 
+    N_VScale(ONE, yS0[is], cv_mem->cv_znS[0][is]);
+
+  /* Initialize all sensitivity related counters */
+  cv_mem->cv_nfSe     = 0;
+  cv_mem->cv_nfeS     = 0;
+  cv_mem->cv_ncfnS    = 0;
+  cv_mem->cv_netfS    = 0;
+  cv_mem->cv_nniS     = 0;
+  cv_mem->cv_nsetupsS = 0;
+  if (ism==CV_STAGGERED1)
+    for (is=0; is<Ns; is++) {
+      ncfnS1[is] = 0;
+      nniS1[is] = 0;
+    }
+
+  /* Sensitivities will be computed */
+  cv_mem->cv_sensi = TRUE;
+  cv_mem->cv_sensMallocDone = TRUE;
+
+  /* Sensitivity initialization was successfull */
+  return (CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+#define Ns (cv_mem->cv_Ns)
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVodeSensReInit
+ *
+ * CVodeSensReInit re-initializes CVODES' sensitivity related memory 
+ * for a problem, assuming it has already been allocated in prior 
+ * calls to CVodeMalloc and CVodeSensMalloc. 
+ * All problem specification inputs are checked for errors.
+ * The number of sensitivities Ns is assumed to be unchanged since
+ * the previous call to CVodeSensMalloc.
+ * If any error occurs during initialization, it is reported to the
+ * file whose file pointer is errfp.
+ * The return value is CV_SUCCESS = 0 if no errors occurred, or
+ * a negative value otherwise.
+ */ 
+
+int CVodeSensReInit(void *cvode_mem, int ism, N_Vector *yS0)
+{
+  CVodeMem    cv_mem;
+  int is;  
+
+  /* Check cvode_mem */
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SCVM_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Was sensitivity initialized? */
+  if (cv_mem->cv_sensMallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SREI_NO_SENSI);
+    return(CV_NO_SENS);
+  } 
+
+  /* Check if ism is legal */
+  if ((ism!=CV_SIMULTANEOUS) && (ism!=CV_STAGGERED) && (ism!=CV_STAGGERED1)) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_ISM);
+    return(CV_ILL_INPUT);
+  }
+  cv_mem->cv_ism = ism;
+  
+  /* Check if yS0 is non-null */
+  if (yS0 == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_YS0_NULL);
+    return(CV_ILL_INPUT);
+  }  
+  
+  /* Allocate ncfS1, ncfnS1, and nniS1 if needed */
+  if ( (ism==CV_STAGGERED1) && (stgr1alloc==FALSE) ) {
+    stgr1alloc = TRUE;
+    ncfS1  = (int*)malloc(Ns*sizeof(int));
+    ncfnS1 = (long int*)malloc(Ns*sizeof(long int));
+    nniS1  = (long int*)malloc(Ns*sizeof(long int));
+    if ( (ncfS1==NULL) || (ncfnS1==NULL) || (nniS1==NULL) ) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_SCVM_MEM_FAIL);
+      return(CV_MEM_FAIL);
+    }
+  }
+
+  /*---------------------------------------------- 
+     All error checking is complete at this point 
+  -----------------------------------------------*/
+
+  /* Initialize znS[0] in the history array */
+  for (is=0; is<Ns; is++) 
+    N_VScale(ONE, yS0[is], cv_mem->cv_znS[0][is]);
+
+  /* Initialize all sensitivity related counters */
+  cv_mem->cv_nfSe     = 0;
+  cv_mem->cv_nfeS     = 0;
+  cv_mem->cv_ncfnS    = 0;
+  cv_mem->cv_netfS    = 0;
+  cv_mem->cv_nniS     = 0;
+  cv_mem->cv_nsetupsS = 0;
+  if (ism==CV_STAGGERED1)
+    for (is=0; is<Ns; is++) {
+      ncfnS1[is] = 0;
+      nniS1[is] = 0;
+    }
+
+  /* Problem has been successfully re-initialized */
+  cv_mem->cv_sensi = TRUE;
+  return (CV_SUCCESS);
+}
+
+/*
+ * CVodeSensToggle
+ *
+ * CVodeSensToggle activates or deactivates sensitivity calculations.
+ * It does NOT deallocate sensitivity-related memory.
+ * It is allowed to set sensi=TRUE only if CVodeSensMalloc has been
+ * previously called.
+ */
+
+int CVodeSensToggle(void *cvode_mem, booleantype sensi)
+{
+  CVodeMem cv_mem;
+
+  /* Check cvode_mem */
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SCVT_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Disable sensitivities */
+  if (sensi == FALSE) {
+    cv_mem->cv_sensi = FALSE;
+    return (CV_SUCCESS);
+  }
+
+  /* Re-enable sensitivities */
+
+  if (cv_mem->cv_sensMallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SCVT_NO_SENSI);
+    return(CV_NO_SENS);
+  } 
+
+  cv_mem->cv_sensi = TRUE;
+
+  return (CV_SUCCESS);
+}
+
+/*=================================================================*/
+/*             Readibility Constants                               */
+/*=================================================================*/
+
+#define f              (cv_mem->cv_f)      
+#define f_data         (cv_mem->cv_f_data) 
+#define efun           (cv_mem->cv_efun)
+#define e_data         (cv_mem->cv_e_data) 
+#define qmax           (cv_mem->cv_qmax) 
+#define mxstep         (cv_mem->cv_mxstep)
+#define mxhnil         (cv_mem->cv_mxhnil)
+#define sldeton        (cv_mem->cv_sldeton)
+#define hin            (cv_mem->cv_hin)
+#define hmin           (cv_mem->cv_hmin)
+#define hmax_inv       (cv_mem->cv_hmax_inv)
+#define tstop          (cv_mem->cv_tstop)
+#define tstopset       (cv_mem->cv_tstopset)
+#define maxnef         (cv_mem->cv_maxnef)
+#define maxncf         (cv_mem->cv_maxncf)
+#define maxcor         (cv_mem->cv_maxcor)
+#define nlscoef        (cv_mem->cv_nlscoef)
+#define itol           (cv_mem->cv_itol)         
+#define reltol         (cv_mem->cv_reltol)       
+#define Sabstol        (cv_mem->cv_Sabstol) 
+#define Vabstol        (cv_mem->cv_Vabstol) 
+
+#define fQ             (cv_mem->cv_fQ)
+#define fQ_data        (cv_mem->cv_fQ_data)
+#define errconQ        (cv_mem->cv_errconQ)
+#define itolQ          (cv_mem->cv_itolQ)
+#define reltolQ        (cv_mem->cv_reltolQ)
+#define SabstolQ       (cv_mem->cv_SabstolQ)
+#define VabstolQ       (cv_mem->cv_VabstolQ)
+
+#define fS             (cv_mem->cv_fS)
+#define fS1            (cv_mem->cv_fS1)
+#define fS_data        (cv_mem->cv_fS_data)
+#define rhomax         (cv_mem->cv_rhomax)
+#define pbar           (cv_mem->cv_pbar)
+#define errconS        (cv_mem->cv_errconS)
+#define maxcorS        (cv_mem->cv_maxcorS)
+#define itolS          (cv_mem->cv_itolS)
+#define reltolS        (cv_mem->cv_reltolS)
+#define SabstolS       (cv_mem->cv_SabstolS)
+#define VabstolS       (cv_mem->cv_VabstolS)
+#define ism            (cv_mem->cv_ism)
+#define p              (cv_mem->cv_p)
+#define plist          (cv_mem->cv_plist)
+
+#define uround         (cv_mem->cv_uround)  
+#define zn             (cv_mem->cv_zn) 
+#define ewt            (cv_mem->cv_ewt)  
+#define y              (cv_mem->cv_y)
+#define acor           (cv_mem->cv_acor)
+#define tempv          (cv_mem->cv_tempv)
+#define ftemp          (cv_mem->cv_ftemp) 
+#define q              (cv_mem->cv_q)
+#define qprime         (cv_mem->cv_qprime)
+#define next_q         (cv_mem->cv_next_q)
+#define qwait          (cv_mem->cv_qwait)
+#define L              (cv_mem->cv_L)
+#define h              (cv_mem->cv_h)
+#define hprime         (cv_mem->cv_hprime)
+#define next_h         (cv_mem->cv_next_h)
+#define eta            (cv_mem->cv_eta) 
+#define etaqm1         (cv_mem->cv_etaqm1) 
+#define etaq           (cv_mem->cv_etaq) 
+#define etaqp1         (cv_mem->cv_etaqp1) 
+#define nscon          (cv_mem->cv_nscon)
+#define hscale         (cv_mem->cv_hscale)
+#define tn             (cv_mem->cv_tn)
+#define tau            (cv_mem->cv_tau)
+#define tq             (cv_mem->cv_tq)
+#define l              (cv_mem->cv_l)
+#define rl1            (cv_mem->cv_rl1)
+#define gamma          (cv_mem->cv_gamma) 
+#define gammap         (cv_mem->cv_gammap) 
+#define gamrat         (cv_mem->cv_gamrat)
+#define crate          (cv_mem->cv_crate)
+#define acnrm          (cv_mem->cv_acnrm)
+#define mnewt          (cv_mem->cv_mnewt)
+#define etamax         (cv_mem->cv_etamax)
+#define nst            (cv_mem->cv_nst)
+#define nfe            (cv_mem->cv_nfe)
+#define ncfn           (cv_mem->cv_ncfn)
+#define netf           (cv_mem->cv_netf)
+#define nni            (cv_mem->cv_nni)
+#define nsetups        (cv_mem->cv_nsetups)
+#define nhnil          (cv_mem->cv_nhnil)
+#define linit          (cv_mem->cv_linit)
+#define lsetup         (cv_mem->cv_lsetup)
+#define lsolve         (cv_mem->cv_lsolve) 
+#define lfree          (cv_mem->cv_lfree) 
+#define lmem           (cv_mem->cv_lmem) 
+#define qu             (cv_mem->cv_qu)          
+#define nstlp          (cv_mem->cv_nstlp)  
+#define h0u            (cv_mem->cv_h0u)
+#define hu             (cv_mem->cv_hu)         
+#define saved_tq5      (cv_mem->cv_saved_tq5)  
+#define jcur           (cv_mem->cv_jcur)         
+#define tolsf          (cv_mem->cv_tolsf)      
+#define setupNonNull   (cv_mem->cv_setupNonNull) 
+#define forceSetup     (cv_mem->cv_forceSetup)
+#define nor            (cv_mem->cv_nor)
+#define ssdat          (cv_mem->cv_ssdat)
+
+#define nrtfn          (cv_mem->cv_nrtfn)
+#define tlo            (cv_mem->cv_tlo)
+#define thi            (cv_mem->cv_thi)
+#define tretlast       (cv_mem->cv_tretlast)
+#define toutc          (cv_mem->cv_toutc)
+#define troot          (cv_mem->cv_troot)
+#define ttol           (cv_mem->cv_ttol)
+#define taskc          (cv_mem->cv_taskc)
+#define irfnd          (cv_mem->cv_irfnd)
+#define nge            (cv_mem->cv_nge)
+
+#define sensi          (cv_mem->cv_sensi)
+#define znS            (cv_mem->cv_znS)
+#define ewtS           (cv_mem->cv_ewtS)
+#define acorS          (cv_mem->cv_acorS)
+#define yS             (cv_mem->cv_yS)
+#define tempvS         (cv_mem->cv_tempvS)
+#define ftempS         (cv_mem->cv_ftempS)
+#define crateS         (cv_mem->cv_crateS)
+#define acnrmS         (cv_mem->cv_acnrmS)
+#define nfSe           (cv_mem->cv_nfSe)
+#define nfeS           (cv_mem->cv_nfeS)
+#define nniS           (cv_mem->cv_nniS)
+#define ncfnS          (cv_mem->cv_ncfnS)
+#define netfS          (cv_mem->cv_netfS)
+#define nsetupsS       (cv_mem->cv_nsetupsS)
+#define stgr1alloc     (cv_mem->cv_stgr1alloc)
+#define sensMallocDone (cv_mem->cv_sensMallocDone)
+
+#define quadr          (cv_mem->cv_quadr)
+#define znQ            (cv_mem->cv_znQ)
+#define ewtQ           (cv_mem->cv_ewtQ)
+#define acorQ          (cv_mem->cv_acorQ)
+#define yQ             (cv_mem->cv_yQ)
+#define tempvQ         (cv_mem->cv_tempvQ)
+#define acnrmQ         (cv_mem->cv_acnrmQ)
+#define nfQe           (cv_mem->cv_nfQe)
+#define netfQ          (cv_mem->cv_netfQ)
+#define quadMallocDone (cv_mem->cv_quadMallocDone)
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVode
+ *
+ * This routine is the main driver of the CVODE package. 
+ *
+ * It integrates over a time interval defined by the user, by calling
+ * CVStep to do internal time steps.
+ *
+ * The first time that CVode is called for a successfully initialized
+ * problem, it computes a tentative initial step size h.
+ *
+ * CVode supports four modes, specified by itask: CV_NORMAL, CV_ONE_STEP,
+ * CV_NORMAL_TSTOP, and CV_ONE_STEP_TSTOP.
+ * In the CV_NORMAL mode, the solver steps until it reaches or passes tout
+ * and then interpolates to obtain y(tout).
+ * In the CV_ONE_STEP mode, it takes one internal step and returns.
+ * CV_NORMAL_TSTOP and CV_ONE_STEP_TSTOP are similar to CV_NORMAL and CV_ONE_STEP,
+ * respectively, but the integration never proceeds past tstop (which
+ * must have been defined through a call to CVodeSetStopTime).
+ */
+
+int CVode(void *cvode_mem, realtype tout, N_Vector yout, 
+          realtype *tret, int itask)
+{
+  CVodeMem cv_mem;
+  N_Vector wrk1, wrk2;
+  long int nstloc; 
+  int kflag, istate, ier, task, irfndp;
+  booleantype istop, hOK;
+  int ewtsetOK, ewtSsetOK, ewtQsetOK;
+  int is;
+  realtype troundoff, rh, nrm;
+
+  /* Check if cvode_mem exists */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGCVS_CVODE_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Check if cvode_mem was allocated */
+  if (cv_mem->cv_MallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_CVODE_NO_MALLOC);
+    return(CV_NO_MALLOC);
+  }
+  
+  /* Check for yout != NULL */
+  if ((y = yout) == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_YOUT_NULL);       
+    return (CV_ILL_INPUT);
+  }
+  
+  /* Check for tret != NULL */
+  if (tret == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_TRET_NULL);
+    return (CV_ILL_INPUT);
+  }
+
+  /* Check for valid itask */
+  if ((itask != CV_NORMAL)       && 
+      (itask != CV_ONE_STEP)     &&
+      (itask != CV_NORMAL_TSTOP) &&
+      (itask != CV_ONE_STEP_TSTOP) ) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_ITASK);
+    return (CV_ILL_INPUT);
+  }
+
+  /* Split itask into task and istop */
+  if ((itask == CV_NORMAL_TSTOP) || (itask == CV_ONE_STEP_TSTOP)) {
+    if ( tstopset == FALSE ) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_NO_TSTOP);
+      return(CV_ILL_INPUT);
+    }
+    istop = TRUE;
+  } else {
+    istop = FALSE;
+  }
+  if ((itask == CV_NORMAL) || (itask == CV_NORMAL_TSTOP)) {
+    task = CV_NORMAL; toutc = tout;
+  } else {
+    task = CV_ONE_STEP;
+  }
+  taskc = task;
+
+
+  /* Sensitivity-specific tests */
+
+  if (sensi) {
+
+    /* Test if the pointer to parameters is available if needed */
+    if(fSDQ && (p == NULL)) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_P_NULL);
+      return(CV_ILL_INPUT);
+    }
+    
+    /* Set plist if needed and still NULL at this point */
+    if(fSDQ && (plist == NULL)) {
+      for (is=0; is<Ns; is++)
+        plist[is] = is+1;
+    }
+
+    /* Set pbar if needed and still NULL at this point */
+    if ((fSDQ || itolS == CV_EE) && (pbar == NULL))
+      for (is=0; is<Ns; is++)
+        pbar[is] = ONE;
+
+  }
+
+  /* Begin first call block */
+  
+  if (nst == 0) {
+
+    /* Check inputs for corectness */
+
+    ier = CVInitialSetup(cv_mem);
+    if (ier!= CV_SUCCESS) return (ier);
+
+    /* 
+       Call f at (t0,y0), set zn[1] = y'(t0), 
+       set initial h (from H0 or CVHin), and scale zn[1] by h.
+
+       Also check for zeros of root function g at and near t0.
+
+       If computing sensitivities, call fS at (t0,y0,yS0), set
+       znS[1][is] = yS'(t0), is=1,...,Ns, and scale znS[1][is] by h. 
+       If computing any quadratures, call fQ at (t0,znQ[0]), set
+       znQ[1] = fQ, and scale znQ[1] by h.
+    */
+    
+    f(tn, zn[0], zn[1], f_data); 
+    nfe++;
+
+    if (sensi) {
+      wrk1 = tempv;
+      wrk2 = ftemp;
+      CVSensRhs(cv_mem, tn, zn[0], zn[1], znS[0], znS[1], tempv, ftemp);
+    }    
+
+    if (quadr) {
+      fQ(tn, zn[0], znQ[1], fQ_data);
+      nfQe++;
+    }
+
+    h = hin;
+    if ( (h != ZERO) && ((tout-tn)*h < ZERO) ) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_H0);
+      return (CV_ILL_INPUT);
+    }
+    if (h == ZERO) {
+      hOK = CVHin(cv_mem, tout);
+      if (!hOK) {
+        if(errfp!=NULL) fprintf(errfp, MSGCVS_TOO_CLOSE);
+        return (CV_ILL_INPUT);
+      }
+    }
+    rh = ABS(h)*hmax_inv;
+    if (rh > ONE) h /= rh;
+    if (ABS(h) < hmin) h *= hmin/ABS(h);
+
+    /* Check for approach to tstop */
+
+    if (istop) {
+      if ( (tstop - tn)*h < ZERO ) {
+	if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_TSTOP, tn);
+        return(CV_ILL_INPUT);
+      }
+      if ( (tn + h - tstop)*h > ZERO ) 
+        h = tstop - tn;
+    }
+
+    hscale = h;
+    h0u    = h;
+    hprime = h;
+
+    N_VScale(h, zn[1], zn[1]);
+    
+    if (sensi)
+      for (is=0; is<Ns; is++) 
+        N_VScale(h, znS[1][is], znS[1][is]);
+    
+    if (quadr)
+      N_VScale(h, znQ[1], znQ[1]);
+
+    if (nrtfn > 0) {
+      ier = CVRcheck1(cv_mem);
+      if (ier != CV_SUCCESS) {
+        fprintf(errfp, MSGCVS_BAD_INIT_ROOT);
+        return(CV_ILL_INPUT);
+      }
+    }
+
+  } /* end first call block */
+
+  /* At following steps, perform stop tests */
+
+  if (nst > 0) {
+
+    /* First check for a root in the last step taken, other than the
+       last root found, if any.  If task = CV_ONE_STEP and y(tn) was not
+       returned because of an intervening root, return y(tn) now.     */
+
+    if (nrtfn > 0) {
+      
+      irfndp = irfnd;
+      
+      ier = CVRcheck2(cv_mem);
+      
+      if (ier == CLOSERT) {
+        fprintf(errfp, MSGCVS_CLOSE_ROOTS, tlo);
+        return(CV_ILL_INPUT);
+      }
+      
+      if (ier == RTFOUND) {
+        tretlast = *tret = tlo;
+        return(CV_ROOT_RETURN);
+      }
+      
+      if (tn != tretlast) {       /* Check remaining interval for roots */
+        ier = CVRcheck3(cv_mem);
+        if (ier == CV_SUCCESS) {     /* no root found */
+          irfnd = 0;
+          if (irfndp == 1 && task == CV_ONE_STEP) {
+            tretlast = *tret = tn;
+            N_VScale(ONE, zn[0], yout);
+            return(CV_SUCCESS);
+          }
+        }
+        if (ier == RTFOUND) {  /* a new root was found */
+          irfnd = 1;
+          tretlast = *tret = tlo;
+          return(CV_ROOT_RETURN);
+        }
+      }
+      
+    } /* end of root stop check */
+    
+    /* Test for tn past tstop */
+    if ( istop && ((tstop - tn)*h < ZERO) ) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_TSTOP, tn);
+      return (CV_ILL_INPUT);
+    }
+    
+    /* In CV_NORMAL mode, test if tout was reached */
+    if ( (task == CV_NORMAL) && ((tn-tout)*h >= ZERO) ) {
+      tretlast = *tret = tout;
+      ier =  CVodeGetDky(cv_mem, tout, 0, yout);
+      if (ier != CV_SUCCESS) {
+	  if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_TOUT, tout);
+        return (CV_ILL_INPUT);
+      }
+      return (CV_SUCCESS);
+    }
+    
+    /* In CV_ONE_STEP mode, test if tn was returned */
+    if (task == CV_ONE_STEP && tretlast != tn) {
+      tretlast = *tret = tn;
+      N_VScale(ONE, zn[0], yout);
+      return(CV_SUCCESS);
+    }
+    
+    /* Test for tn at tstop or near tstop */
+    if ( istop ) {
+      
+      troundoff = FUZZ_FACTOR*uround*(ABS(tn) + ABS(h));
+      if ( ABS(tn - tstop) <= troundoff) {
+        ier =  CVodeGetDky(cv_mem, tstop, 0, yout);
+        if (ier != CV_SUCCESS) {
+	  if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_TSTOP, tn);
+          return (CV_ILL_INPUT);
+        }
+        tretlast = *tret = tstop;
+        tn = tstop;
+        return (CV_TSTOP_RETURN);
+      }
+      
+      if ( (tn + hprime - tstop)*h > ZERO ) {
+        hprime = tstop - tn;
+        eta = hprime/h;
+      }
+      
+    } /* end of istop tests block */
+    
+  } /* end stopping tests block at nst>0 */  
+  
+  /* Start looping for internal steps */
+  
+  nstloc = 0;
+  loop {
+   
+    next_h = h;
+    next_q = q;
+    
+    /* Reset and check ewt */
+
+    if (nst > 0) {
+
+      ewtsetOK = efun(zn[0], ewt, e_data);
+ 
+      if (sensi)
+        ewtSsetOK = CVSensEwtSet(znS[0], ewtS, cv_mem);
+      else
+        ewtSsetOK = 0;
+
+      if (quadr && errconQ)
+        ewtQsetOK = CVQuadEwtSet(znQ[0], ewtQ, cv_mem);
+      else
+        ewtQsetOK = 0;
+        
+      if ( (ewtsetOK != 0) || (ewtSsetOK != 0) || (ewtQsetOK != 0) ) {
+
+	if(ewtsetOK != 0)  
+	  if(errfp!=NULL) {
+            if (itol == CV_WF) fprintf(errfp, MSGCVS_EWT_NOW_FAIL, tn);
+            else fprintf(errfp, MSGCVS_EWT_NOW_BAD, tn);
+	  }
+        if(ewtSsetOK != 0) 
+          if(errfp!=NULL) 
+            fprintf(errfp, MSGCVS_EWTS_NOW_BAD, tn);
+	if(ewtQsetOK != 0) 
+          if(errfp!=NULL) 
+            fprintf(errfp, MSGCVS_EWTQ_NOW_BAD, tn);
+
+        istate = CV_ILL_INPUT;
+        tretlast = *tret = tn;
+        N_VScale(ONE, zn[0], yout);
+        break;
+
+      }
+
+    }
+
+    /* Check for too many steps */
+    
+    if (nstloc >= mxstep) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_MAX_STEPS, tn);
+      istate = CV_TOO_MUCH_WORK;
+      tretlast = *tret = tn;
+      N_VScale(ONE, zn[0], yout);
+      break;
+    }
+
+    /* Check for too much accuracy requested */
+
+    nrm = N_VWrmsNorm(zn[0], ewt);
+    if (quadr && errconQ) {
+      nrm = CVQuadUpdateNorm(cv_mem, nrm, znQ[0], ewtQ); 
+    }
+    if (sensi && errconS) {
+      nrm = CVSensUpdateNorm(cv_mem, nrm, znS[0], ewtS);
+    }
+    tolsf = uround * nrm;
+
+    if (tolsf > ONE) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_TOO_MUCH_ACC, tn);
+      istate = CV_TOO_MUCH_ACC;
+      tretlast = *tret = tn;
+      N_VScale(ONE, zn[0], yout);
+      tolsf *= TWO;
+      break;
+    } else {
+      tolsf = ONE;
+    }
+    
+    /* Check for h below roundoff level in tn */
+
+    if (tn + hprime == tn) {
+      nhnil++;
+      if (nhnil <= mxhnil) if(errfp!=NULL) fprintf(errfp, MSGCVS_HNIL, tn, hprime);
+      if (nhnil == mxhnil) if(errfp!=NULL) fprintf(errfp, MSGCVS_HNIL_DONE);
+    }
+
+    /* Call CVStep to take a step */
+
+    kflag = CVStep(cv_mem);
+
+    /* Process failed step cases, and exit loop */
+   
+    if (kflag != SUCCESS_STEP) {
+      istate = CVHandleFailure(cv_mem, kflag);
+      tretlast = *tret = tn;
+      N_VScale(ONE, zn[0], yout);
+      break;
+    }
+    
+    nstloc++;
+
+    /* Check for root in last step taken. */
+    
+    if (nrtfn > 0) {
+      
+      ier = CVRcheck3(cv_mem);
+      
+      if (ier == RTFOUND) {  /* A new root was found */
+        irfnd = 1;
+        istate = CV_ROOT_RETURN;
+        tretlast = *tret = tlo;
+        break;
+      }
+    }
+
+    /* Check if tn is at tstop or near tstop */
+
+    if ( istop ) {
+
+      troundoff = FUZZ_FACTOR*uround*(ABS(tn) + ABS(h));
+      if ( ABS(tn - tstop) <= troundoff) {
+        (void) CVodeGetDky(cv_mem, tstop, 0, yout);
+        tretlast = *tret = tstop;
+
+        tn = tstop;
+        
+        istate = CV_TSTOP_RETURN;
+        break;
+      }
+
+      if ( (tn + hprime - tstop)*h > ZERO ) {
+        hprime = tstop - tn;
+        eta = hprime/h;
+      }
+
+    }
+
+    /* Check if in one-step mode, and if so copy y and exit loop */
+    
+    if (task == CV_ONE_STEP) {
+      istate = CV_SUCCESS;
+      tretlast = *tret = tn;
+      N_VScale(ONE, zn[0], yout);
+      next_q = qprime;
+      next_h = hprime;
+      break;
+    }
+
+    /* Check if tout reached, and if so interpolate and exit loop */
+
+    if ((tn-tout)*h >= ZERO) {
+      istate = CV_SUCCESS;
+      tretlast = *tret = tout;
+      (void) CVodeGetDky(cv_mem, tout, 0, yout);
+      next_q = qprime;
+      next_h = hprime;
+      break;
+    }
+
+  } /* end looping for internal steps */
+  
+  /* Load optional output */
+
+  if (sensi && (ism==CV_STAGGERED1)) { 
+    nniS  = 0;
+    ncfnS = 0;
+    for (is=0; is<Ns; is++) {
+      nniS  += nniS1[is];
+      ncfnS += ncfnS1[is];
+    }
+  }
+  
+  return (istate);
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVodeGetDky
+ *
+ * This routine computes the k-th derivative of the interpolating
+ * polynomial at the time t and stores the result in the vector dky.
+ * The formula is:
+ *         q 
+ *  dky = SUM c(j,k) * (t - tn)^(j-k) * h^(-j) * zn[j] , 
+ *        j=k 
+ * where c(j,k) = j*(j-1)*...*(j-k+1), q is the current order, and
+ * zn[j] is the j-th column of the Nordsieck history array.
+ *
+ * This function is called by CVode with k = 0 and t = tout, but
+ * may also be called directly by the user.
+ */
+
+int CVodeGetDky(void *cvode_mem, realtype t, int k, N_Vector dky)
+{
+  realtype s, c, r;
+  realtype tfuzz, tp, tn1;
+  int i, j;
+  CVodeMem cv_mem;
+  
+  /* Check all inputs for legality */
+ 
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGCVS_DKY_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (dky == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_DKY);
+    return (CV_BAD_DKY);
+  }
+
+  if ((k < 0) || (k > q)) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_K);
+    return (CV_BAD_K);
+  }
+  
+  /* Allow for some slack */
+  tfuzz = FUZZ_FACTOR * uround * (ABS(tn) + ABS(hu));
+  if (hu < ZERO) tfuzz = -tfuzz;
+  tp = tn - hu - tfuzz;
+  tn1 = tn + tfuzz;
+  if ((t-tp)*(t-tn1) > ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_T, t, tn-hu, tn);
+    return (CV_BAD_T);
+  }
+
+  /* Sum the differentiated interpolating polynomial */
+
+  s = (t - tn) / h;
+  for (j=q; j >= k; j--) {
+    c = ONE;
+    for (i=j; i >= j-k+1; i--) c *= i;
+    if (j == q) {
+      N_VScale(c, zn[q], dky);
+    } else {
+      N_VLinearSum(c, zn[j], s, dky, dky);
+    }
+  }
+  if (k == 0) return (CV_SUCCESS);
+  r = RPowerI(h,-k);
+  N_VScale(r, dky, dky);
+  return (CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+/* 
+ * CVodeGetQuad
+ *
+ * This routine extracts quadrature solution into yQout.
+ * This is just a wrapper that calls CvodeGEtQuadDky with k=0                    
+ */
+ 
+int CVodeGetQuad(void *cvode_mem, realtype t, N_Vector yQout)
+{
+  return (CVodeGetQuadDky(cvode_mem,t,0,yQout));
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVodeGetQuadDky
+ *
+ * CVodeQuadDky computes the kth derivative of the yQ function at
+ * time t, where tn-hu <= t <= tn, tn denotes the current         
+ * internal time reached, and hu is the last internal step size   
+ * successfully used by the solver. The user may request 
+ * k=0, 1, ..., qu, where qu is the current order. 
+ * The derivative vector is returned in dky. This vector 
+ * must be allocated by the caller. It is only legal to call this         
+ * function after a successful return from CVode with quadrature
+ * computation enabled.
+ */
+
+int CVodeGetQuadDky(void *cvode_mem, realtype t, int k, N_Vector dkyQ)
+{ 
+  realtype s, c, r;
+  realtype tfuzz, tp, tn1;
+  int i, j;
+  CVodeMem cv_mem;
+  
+  /* Check all inputs for legality */
+  
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGCVS_QDKY_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;  
+
+  if(quadr != TRUE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_QDKY_NO_QUAD);
+    return (CV_NO_QUAD);
+  }
+
+  if (dkyQ == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_QBAD_DKY);
+    return (CV_BAD_DKY);
+  }
+  
+  if ((k < 0) || (k > q)) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_QBAD_K);
+    return (CV_BAD_K);
+  }
+  
+  /* Allow for some slack */
+  tfuzz = FUZZ_FACTOR * uround * (ABS(tn) + ABS(hu));
+  if (hu < ZERO) tfuzz = -tfuzz;
+  tp = tn - hu - tfuzz;
+  tn1 = tn + tfuzz;
+  if ((t-tp)*(t-tn1) > ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_QBAD_T, t, tn-hu, tn);
+    return (CV_BAD_T);
+  }
+  
+  /* Sum the differentiated interpolating polynomial */
+  
+  s = (t - tn) / h;
+  for (j=q; j >= k; j--) {
+    c = ONE;
+    for (i=j; i >= j-k+1; i--) c *= i;
+    if (j == q) {
+      N_VScale(c, znQ[q], dkyQ);
+    } else {
+      N_VLinearSum(c, znQ[j], s, dkyQ, dkyQ);
+    }
+  }
+  if (k == 0) return (CV_SUCCESS);
+  r = RPowerI(h,-k);
+  N_VScale(r, dkyQ, dkyQ);
+  return (CV_SUCCESS);
+  
+}
+
+/*-----------------------------------------------------------------*/
+
+/* 
+ * CVodeGetSens
+ *
+ * This routine extracts sensitivity solution into ySout.
+ * This is just a wrapper that calls CvodeSensDky with k=0                    
+ */
+ 
+int CVodeGetSens(void *cvode_mem, realtype t, N_Vector *ySout)
+{
+  return (CVodeGetSensDky(cvode_mem,t,0,ySout));
+}
+    
+/*-----------------------------------------------------------------*/
+
+/* 
+ * CVodeGetSens1
+ *
+ * This routine extracts the is-th sensitivity solution into ySout.
+ * This is just a wrapper that calls CvodeSensDky1 with k=0                    
+ */
+ 
+int CVodeGetSens1(void *cvode_mem, realtype t, int is, N_Vector ySout)
+{
+  return (CVodeGetSensDky1(cvode_mem,t,0,is,ySout));
+}
+    
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVodeGetSensDky
+ *
+ * If the user calls directly CVodeSensDky then s must be allocated
+ * prior to this call. When CVodeSensDky is called by 
+ * CVodeGetSens, only ier=CV_SUCCESS, ier=CV_NO_SENS, or 
+ * ier=CV_BAD_T are possible.
+ */
+
+int CVodeGetSensDky(void *cvode_mem, realtype t, int k, N_Vector *dkyS)
+{
+  int ier=CV_SUCCESS;
+  int is;
+  CVodeMem cv_mem;
+  
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGCVS_SDKY_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;  
+  
+  if (dkyS == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SBAD_DKYA);
+    return (CV_BAD_DKY);
+  }
+  
+  for (is=0; is<Ns; is++) {
+    ier = CVodeGetSensDky1(cvode_mem,t,k,is+1,dkyS[is]);
+    if (ier!=CV_SUCCESS) break;
+  }
+  
+  return (ier);
+}
+    
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVodeGetSensDky1
+ *
+ * CVodeSensDky1 computes the kth derivative of the yS[is] function at
+ * time t, where tn-hu <= t <= tn, tn denotes the current         
+ * internal time reached, and hu is the last internal step size   
+ * successfully used by the solver. The user may request 
+ * is=1, 2, ..., Ns and k=0, 1, ..., qu, where qu is the current
+ * order. The derivative vector is returned in dky. This vector 
+ * must be allocated by the caller. It is only legal to call this         
+ * function after a successful return from CVode with sensitivity 
+ * computation enabled.
+ */
+
+int CVodeGetSensDky1(void *cvode_mem, realtype t, int k, int is, 
+                     N_Vector dkyS)
+{ 
+  realtype s, c, r;
+  realtype tfuzz, tp, tn1;
+  int i, j;
+  CVodeMem cv_mem;
+  
+  /* Check all inputs for legality */
+  
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGCVS_SDKY_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;  
+  
+  if(sensi != TRUE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SDKY_NO_SENSI);
+    return (CV_NO_SENS);
+  }
+
+  if (dkyS == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SBAD_DKY);
+    return (CV_BAD_DKY);
+  }
+  
+  if ((k < 0) || (k > q)) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SBAD_K);
+    return (CV_BAD_K);
+  }
+  
+  if ((is < 1) || (is > Ns)) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SBAD_IS);
+    return (CV_BAD_IS);
+  }
+  
+  is--;
+
+  /* Allow for some slack */
+  tfuzz = FUZZ_FACTOR * uround * (ABS(tn) + ABS(hu));
+  if (hu < ZERO) tfuzz = -tfuzz;
+  tp = tn - hu - tfuzz;
+  tn1 = tn + tfuzz;
+  if ((t-tp)*(t-tn1) > ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SBAD_T);
+    return (CV_BAD_T);
+  }
+  
+  /* Sum the differentiated interpolating polynomial */
+  
+  s = (t - tn) / h;
+  for (j=q; j >= k; j--) {
+    c = ONE;
+    for (i=j; i >= j-k+1; i--) c *= i;
+    if (j == q) {
+      N_VScale(c, znS[q][is], dkyS);
+    } else {
+      N_VLinearSum(c, znS[j][is], s, dkyS, dkyS);
+    }
+  }
+  if (k == 0) return (CV_SUCCESS);
+  r = RPowerI(h,-k);
+  N_VScale(r, dkyS, dkyS);
+  return (CV_SUCCESS);
+  
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVodeFree
+ *
+ * This routine frees the problem memory allocated by CVodeMalloc.
+ * Such memory includes all the vectors allocated by CVAllocVectors,
+ * and the memory lmem for the linear solver (deallocated by a call
+ * to lfree), as well as (if Ns!=0) all memory allocated for 
+ * sensitivity computations by CVodeSensMalloc.
+ */
+
+void CVodeFree(void *cvode_mem)
+{
+  CVodeMem cv_mem;
+
+  cv_mem = (CVodeMem) cvode_mem;
+  
+  if (cvode_mem == NULL) return;
+
+  CVFreeVectors(cv_mem);
+
+  CVodeQuadFree(cv_mem);
+
+  CVodeSensFree(cv_mem);
+
+  if (iter == CV_NEWTON && lfree != NULL) lfree(cv_mem);
+
+  if (nrtfn > 0) {
+    free(glo); 
+    free(ghi); 
+    free(groot); 
+    free(iroots);
+  }
+
+  free(cv_mem);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVodeQuadFree
+ *
+ * CVodeQuadFree frees the problem memory in cvode_mem allocated
+ * for quadrature integration. Its only argument is the pointer
+ * cvode_mem returned by CVodeCreate. 
+ */
+
+void CVodeQuadFree(void *cvode_mem)
+{
+  CVodeMem cv_mem;
+  
+  if (cvode_mem == NULL) return;
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if(quadMallocDone) {
+    CVQuadFreeVectors(cv_mem);
+    quadMallocDone = FALSE;
+    quadr = FALSE;
+  }
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVodeSensFree
+ *
+ * CVodeSensFree frees the problem memory in cvode_mem allocated
+ * for sensitivity analysis. Its only argument is the pointer
+ * cvode_mem returned by CVodeCreate. 
+ */
+
+void CVodeSensFree(void *cvode_mem)
+{
+  CVodeMem cv_mem;
+  
+  if (cvode_mem == NULL) return;
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if(sensMallocDone) {
+    if (stgr1alloc) {
+      free(ncfS1);
+      free(ncfnS1);
+      free(nniS1);
+      stgr1alloc = FALSE;
+    }
+    CVSensFreeVectors(cv_mem);
+    sensMallocDone = FALSE;
+    sensi = FALSE;
+  }
+}
+
+/*=================================================================*/
+/*             PRIVATE FUNCTIONS IMPLEMENTATION                    */
+/*=================================================================*/
+
+/*
+ * CVCheckNvector
+ * This routine checks if all required vector operations are present.
+ * If any of them is missing it returns FALSE.
+ */
+
+static booleantype CVCheckNvector(N_Vector tmpl)
+{
+  if((tmpl->ops->nvclone     == NULL) ||
+     (tmpl->ops->nvdestroy   == NULL) ||
+     (tmpl->ops->nvlinearsum == NULL) ||
+     (tmpl->ops->nvconst     == NULL) ||
+     (tmpl->ops->nvprod      == NULL) ||
+     (tmpl->ops->nvdiv       == NULL) ||
+     (tmpl->ops->nvscale     == NULL) ||
+     (tmpl->ops->nvabs       == NULL) ||
+     (tmpl->ops->nvinv       == NULL) ||
+     (tmpl->ops->nvaddconst  == NULL) ||
+     (tmpl->ops->nvmaxnorm   == NULL) ||
+     (tmpl->ops->nvwrmsnorm  == NULL) ||
+     (tmpl->ops->nvmin       == NULL))
+    return(FALSE);
+  else
+    return(TRUE);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVAllocVectors
+ *
+ * This routine allocates the CVODE vectors ewt, acor, tempv, ftemp, and
+ * zn[0], ..., zn[maxord]. If itol=CV_SV, it also allocates space for Vabstol.
+ * If all memory allocations are successful, CVAllocVectors returns TRUE. 
+ * Otherwise all allocated memory is freed and CVAllocVectors returns FALSE.
+ * This routine also sets the optional outputs lrw and liw, which are
+ * (respectively) the lengths of the real and integer work spaces
+ * allocated here.
+ */
+
+static booleantype CVAllocVectors(CVodeMem cv_mem, N_Vector tmpl, int tol)
+{
+  int i, j;
+
+  /* Allocate ewt, acor, tempv, ftemp */
+  
+  ewt = N_VClone(tmpl);
+  if (ewt == NULL) return (FALSE);
+  acor = N_VClone(tmpl);
+  if (acor == NULL) {
+    N_VDestroy(ewt);
+    return (FALSE);
+  }
+  tempv = N_VClone(tmpl);
+  if (tempv == NULL) {
+    N_VDestroy(ewt);
+    N_VDestroy(acor);
+    return (FALSE);
+  }
+  ftemp = N_VClone(tmpl);
+  if (ftemp == NULL) {
+    N_VDestroy(tempv);
+    N_VDestroy(ewt);
+    N_VDestroy(acor);
+    return (FALSE);
+  }
+
+  /* Allocate zn[0] ... zn[maxord] */
+
+  for (j=0; j <= qmax; j++) {
+    zn[j] = N_VClone(tmpl);
+    if (zn[j] == NULL) {
+      N_VDestroy(ewt);
+      N_VDestroy(acor);
+      N_VDestroy(tempv);
+      N_VDestroy(ftemp);
+      for (i=0; i < j; i++) N_VDestroy(zn[i]);
+      return (FALSE);
+    }
+  }
+
+  /* Update solver workspace lengths  */
+  lrw += (qmax + 5)*lrw1;
+  liw += (qmax + 5)*liw1;
+
+  if (tol == CV_SV) {
+    Vabstol = N_VClone(tmpl);
+    if (Vabstol == NULL) {
+      N_VDestroy(ewt);
+      N_VDestroy(acor);
+      N_VDestroy(tempv);
+      N_VDestroy(ftemp);
+      for (i=0; i <= qmax; i++) N_VDestroy(zn[i]);
+      return(FALSE);
+    }
+    lrw += lrw1;
+    liw += liw1;
+    cv_mem->cv_VabstolMallocDone = TRUE;
+  }  
+
+  return (TRUE);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*  
+ * CVFreeVectors
+ *
+ * This routine frees the CVODE vectors allocated in CVAllocVectors.
+ */
+
+static void CVFreeVectors(CVodeMem cv_mem)
+{
+  int j;
+  
+  N_VDestroy(ewt);
+  N_VDestroy(acor);
+  N_VDestroy(tempv);
+  N_VDestroy(ftemp);
+  for (j=0; j <= qmax; j++) N_VDestroy(zn[j]);
+  lrw -= (qmax + 5)*lrw1;
+  liw -= (qmax + 5)*liw1;
+  if (cv_mem->cv_VabstolMallocDone) {
+    N_VDestroy(Vabstol);
+    lrw -= lrw1;
+    liw -= liw1;
+  }
+}
+
+/*-----------------------------------------------------------------*/
+
+/*  
+ * CVInitialSetup
+ *
+ * This routine performs input consistency checks at the first step.
+ * If needed, it also checks the linear solver module and calls the
+ * linear solver initialization routine.
+ */
+
+static int CVInitialSetup(CVodeMem cv_mem)
+{
+  int ier;
+  int ewtsetOK;
+
+  /* Solver initial setup */
+
+  if (itol != CV_WF) {
+    efun = CVEwtSet;
+    e_data = (void *)cv_mem;
+  } else {
+    if (efun == NULL) {
+      if (errfp != NULL) fprintf(errfp, MSGCVS_NO_EFUN);
+      return(CV_ILL_INPUT);
+    }
+  }
+
+  ewtsetOK = efun(zn[0], ewt, e_data);
+  if (ewtsetOK != 0) {
+    if(errfp!=NULL) {
+      if (itol == CV_WF) fprintf(errfp, MSGCVS_FAIL_EWT);
+      else fprintf(errfp, MSGCVS_BAD_EWT);
+    }
+    return(CV_ILL_INPUT);
+  }
+  
+  /* Quadrature initial setup */
+
+  if (quadr && errconQ) {
+
+    /* Load ewtQ */
+    ewtsetOK = CVQuadEwtSet(znQ[0], ewtQ, cv_mem);
+    if (ewtsetOK != 0) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_EWTQ);
+      return (CV_ILL_INPUT);
+    }
+
+  }
+
+  if (!quadr) errconQ = FALSE;
+
+  /* Forward sensitivity initial setup */
+
+  if (sensi) {
+
+    /* Check if ism and ifS agree */
+    if ((ism==CV_STAGGERED1) && (ifS==CV_ALLSENS)) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_ISM_IFS);
+      return (CV_ILL_INPUT);
+    }    
+
+    /* Load ewtS */
+    ewtsetOK = CVSensEwtSet(znS[0], ewtS, cv_mem);
+    if (ewtsetOK != 0) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_EWTS);
+      return (CV_ILL_INPUT);
+    }
+
+  }
+
+  if (!sensi) errconS = FALSE;
+
+  /* Check if lsolve function exists (if needed)
+     and call linit function (if it exists) */
+
+  if (iter == CV_NEWTON) {
+    if (lsolve == NULL) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_LSOLVE_NULL);
+      return (CV_ILL_INPUT);
+    }
+    if (linit != NULL) {
+      ier = linit(cv_mem);
+      if (ier != 0) {
+        if(errfp!=NULL) fprintf(errfp, MSGCVS_LINIT_FAIL);
+        return (CV_ILL_INPUT);
+      }
+    }
+  }
+    
+  return(CV_SUCCESS);
+}
+
+/* 
+ * -----------------------------------------------------------------
+ * PRIVATE FUNCTIONS FOR QUADRATURES
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * CVodeQuadAllocVectors
+ *
+ * NOTE: Space for ewtQ is allocated even when errconQ=FALSE, 
+ * although in this case, ewtQ is never used. The reason for this
+ * decision is to allow the user to re-initialize the quadrature
+ * computation with errconQ=TRUE, after an initialization with
+ * errconQ=FALSE, without new memory allocation within 
+ * CVodeQuadReInit.
+*/
+
+static booleantype CVQuadAllocVectors(CVodeMem cv_mem, N_Vector tmpl) 
+{
+  int i, j;
+
+  /* Allocate ewtQ */
+  ewtQ = N_VClone(tmpl);
+  if (ewtQ == NULL) {
+    return (FALSE);
+  }
+  
+  /* Allocate acorQ */
+  acorQ = N_VClone(tmpl);
+  if (acorQ == NULL) {
+    N_VDestroy(ewtQ);
+    return (FALSE);
+  }
+
+  /* Allocate yQ */
+  yQ = N_VClone(tmpl);
+  if (yQ == NULL) {
+    N_VDestroy(ewtQ);
+    N_VDestroy(acorQ);
+    return (FALSE);
+  }
+
+  /* Allocate tempvQ */
+  tempvQ = N_VClone(tmpl);
+  if (tempvQ == NULL) {
+    N_VDestroy(ewtQ);
+    N_VDestroy(acorQ);
+    N_VDestroy(yQ);
+    return (FALSE);
+  }
+
+  /* Allocate zQn[0] ... zQn[maxord] */
+
+  for (j=0; j <= qmax; j++) {
+    znQ[j] = N_VClone(tmpl);
+    if (znQ[j] == NULL) {
+      N_VDestroy(ewtQ);
+      N_VDestroy(acorQ);
+      N_VDestroy(yQ);
+      N_VDestroy(tempvQ);
+      for (i=0; i < j; i++) N_VDestroy(znQ[i]);
+      return (FALSE);
+    }
+  }
+
+  /* Update solver workspace lengths */
+  lrw += (qmax + 5)*lrw1Q;
+  liw += (qmax + 5)*liw1Q;
+
+  return(TRUE);
+}
+
+/*-----------------------------------------------------------------*/
+
+static int CVQuadEwtSet(N_Vector qcur, N_Vector weightQ, CVodeMem cv_mem)
+{
+  int flag=0;
+
+  switch (itolQ) {
+  case CV_SS: 
+    flag = CVQuadEwtSetSS(qcur, weightQ, cv_mem);
+    break;
+  case CV_SV: 
+    flag = CVQuadEwtSetSV(qcur, weightQ, cv_mem);
+    break;
+  }
+
+  return(flag);
+
+}
+
+/*-----------------------------------------------------------------*/
+
+static int CVQuadEwtSetSS(N_Vector qcur, N_Vector weightQ, CVodeMem cv_mem)
+{
+  N_VAbs(qcur, tempvQ);
+  N_VScale(reltolQ, tempvQ, tempvQ);
+  N_VAddConst(tempvQ, SabstolQ, tempvQ);
+  if (N_VMin(tempvQ) <= ZERO) return (-1);
+  N_VInv(tempvQ, weightQ);
+
+  return (0);
+}
+
+/*-----------------------------------------------------------------*/
+
+static int CVQuadEwtSetSV(N_Vector qcur, N_Vector weightQ, CVodeMem cv_mem)
+{
+  N_VAbs(qcur, tempvQ);
+  N_VLinearSum(reltolQ, tempvQ, ONE, VabstolQ, tempvQ);
+  if (N_VMin(tempvQ) <= ZERO) return (-1);
+  N_VInv(tempvQ, weightQ);
+
+  return (0);
+}
+
+/*-----------------------------------------------------------------*/
+
+static void CVQuadFreeVectors(CVodeMem cv_mem)
+{
+  int j;
+  
+  N_VDestroy(ewtQ);
+  N_VDestroy(acorQ);
+  N_VDestroy(yQ);
+  N_VDestroy(tempvQ);
+  
+  for (j=0; j<=qmax; j++) N_VDestroy(znQ[j]);
+
+  lrw -= (qmax + 5)*lrw1Q;
+  liw -= (qmax + 5)*liw1Q;
+
+  if (cv_mem->cv_VabstolQMallocDone) {
+    N_VDestroy(VabstolQ);
+    lrw -= lrw1Q;
+    liw -= liw1Q;
+  }
+
+  cv_mem->cv_VabstolQMallocDone = FALSE;
+}
+
+/* 
+ * -----------------------------------------------------------------
+ * PRIVATE FUNCTIONS FOR SENSITIVITY ANALYSIS
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * CVSensAllocVectors
+ *
+ * Create (through duplication) N_Vectors used for sensitivity analysis, 
+ * using the N_Vector 'tmpl' as a template.
+ */
+
+static booleantype CVSensAllocVectors(CVodeMem cv_mem, N_Vector tmpl) 
+{
+  int i, j;
+  
+  /* Allocate yS */
+  yS = N_VCloneVectorArray(Ns, tmpl);
+  if (yS == NULL) {
+    return (FALSE);
+  }
+
+  /* Allocate ewtS */
+  ewtS = N_VCloneVectorArray(Ns, tmpl);
+  if (ewtS == NULL) {
+    N_VDestroyVectorArray(yS, Ns);
+    return (FALSE);
+  }
+  
+  /* Allocate acorS */
+  acorS = N_VCloneVectorArray(Ns, tmpl);
+  if (acorS == NULL) {
+    N_VDestroyVectorArray(yS, Ns);
+    N_VDestroyVectorArray(ewtS, Ns);
+    return (FALSE);
+  }
+  
+  /* Allocate tempvS */
+  tempvS = N_VCloneVectorArray(Ns, tmpl);
+  if (tempvS == NULL) {
+    N_VDestroyVectorArray(yS, Ns);
+    N_VDestroyVectorArray(ewtS, Ns);
+    N_VDestroyVectorArray(acorS, Ns);
+    return (FALSE);
+  }
+    
+  /* Allocate ftempS */
+  ftempS = N_VCloneVectorArray(Ns, tmpl);
+  if (ftempS == NULL) {
+    N_VDestroyVectorArray(yS, Ns);
+    N_VDestroyVectorArray(ewtS, Ns);
+    N_VDestroyVectorArray(acorS, Ns);
+    N_VDestroyVectorArray(tempvS, Ns);
+    return (FALSE);
+  }
+  
+  /* Allocate znS */
+  for (j=0; j<=qmax; j++) {
+    znS[j] = N_VCloneVectorArray(Ns, tmpl);
+    if (znS[j] == NULL) {
+      N_VDestroyVectorArray(yS, Ns);
+      N_VDestroyVectorArray(ewtS, Ns);
+      N_VDestroyVectorArray(acorS, Ns);
+      N_VDestroyVectorArray(tempvS, Ns);
+      N_VDestroyVectorArray(ftempS, Ns);
+      for (i=0; i<j; i++) N_VDestroyVectorArray(znS[i], Ns);
+      return (FALSE);
+    }
+  }
+  
+  /* Allocate space for pbar and plist */
+  pbar = (realtype *)malloc(Ns*sizeof(realtype));
+  if (pbar == NULL) {
+    N_VDestroyVectorArray(yS, Ns);
+    N_VDestroyVectorArray(ewtS, Ns);
+    N_VDestroyVectorArray(acorS, Ns);
+    N_VDestroyVectorArray(tempvS, Ns);
+    N_VDestroyVectorArray(ftempS, Ns);
+    for (i=0; i<=qmax; i++) N_VDestroyVectorArray(znS[i], Ns);
+    return (FALSE);
+  }
+
+  plist = (int *)malloc(Ns*sizeof(int));
+  if (plist == NULL) {
+    N_VDestroyVectorArray(yS, Ns);
+    N_VDestroyVectorArray(ewtS, Ns);
+    N_VDestroyVectorArray(acorS, Ns);
+    N_VDestroyVectorArray(tempvS, Ns);
+    N_VDestroyVectorArray(ftempS, Ns);
+    for (i=0; i<=qmax; i++) N_VDestroyVectorArray(znS[i], Ns);
+    free(pbar);
+    return (FALSE);
+  }
+
+  /* Update solver workspace lengths */
+  lrw += (qmax + 6)*Ns*lrw1 + Ns;
+  liw += (qmax + 6)*Ns*liw1 + Ns;
+  
+  return (TRUE);
+}
+
+/*-----------------------------------------------------------------*/
+
+static void CVSensFreeVectors(CVodeMem cv_mem) 
+{
+  int j;
+  
+  N_VDestroyVectorArray(yS, Ns);
+  N_VDestroyVectorArray(ewtS, Ns);
+  N_VDestroyVectorArray(acorS, Ns);
+  N_VDestroyVectorArray(tempvS, Ns);
+  N_VDestroyVectorArray(ftempS, Ns);
+  
+  for (j=0; j<=qmax; j++) N_VDestroyVectorArray(znS[j], Ns);  
+
+  free(pbar);
+  free(plist);
+
+  lrw -= (qmax + 6)*Ns*lrw1 + Ns;
+  liw -= (qmax + 6)*Ns*liw1 + Ns;
+
+  if (cv_mem->cv_VabstolSMallocDone) {
+    N_VDestroyVectorArray(VabstolS, Ns);
+    lrw -= Ns*lrw1;
+    liw -= Ns*liw1;
+  }
+  if (cv_mem->cv_SabstolSMallocDone) {
+    free(SabstolS);
+    lrw -= Ns;
+  }
+  cv_mem->cv_VabstolSMallocDone = FALSE;
+  cv_mem->cv_SabstolSMallocDone = FALSE;
+}
+
+/*-----------------------------------------------------------------*/
+
+static int CVSensEwtSet(N_Vector *yScur, N_Vector *weightS, CVodeMem cv_mem)
+{
+  int flag=0;
+
+  switch (itolS) {
+  case CV_EE:
+    flag = CVSensEwtSetEE(yScur, weightS, cv_mem);
+    break;
+  case CV_SS: 
+    flag = CVSensEwtSetSS(yScur, weightS, cv_mem);
+    break;
+  case CV_SV: 
+    flag = CVSensEwtSetSV(yScur, weightS, cv_mem);
+    break;
+  }
+
+  return(flag);
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVSensEwtSetEE
+ *
+ * In this case, the error weight vector for the i-th sensitivity is set to
+ *
+ * ewtS_i = pbar_i * efun(pbar_i*yS_i)
+ *
+ * In other words, the scaled sensitivity pbar_i * yS_i has the same error
+ * weight vector calculation as the solution vector.
+ *
+ */
+
+static int CVSensEwtSetEE(N_Vector *yScur, N_Vector *weightS, CVodeMem cv_mem)
+{
+  int is;
+  N_Vector pyS;
+  int flag;
+
+  /* Use tempvS[0] as temporary storage for the scaled sensitivity */
+  pyS = tempvS[0];
+
+  for (is=0; is<Ns; is++) {
+    N_VScale(pbar[is], yScur[is], pyS);
+    flag = efun(pyS, weightS[is], e_data);
+    if (flag != 0) return(-1);
+    N_VScale(pbar[is], weightS[is], weightS[is]);
+  }
+
+  return(0);
+}
+
+/*-----------------------------------------------------------------*/
+
+static int CVSensEwtSetSS(N_Vector *yScur, N_Vector *weightS, CVodeMem cv_mem)
+{
+  int is;
+  
+  for (is=0; is<Ns; is++) {
+    N_VAbs(yScur[is], tempv);
+    N_VScale(reltolS, tempv, tempv);
+    N_VAddConst(tempv, SabstolS[is], tempv);
+    if (N_VMin(tempv) <= ZERO) return (-1);
+    N_VInv(tempv, weightS[is]);
+  }
+  return (0);
+}
+
+/*-----------------------------------------------------------------*/
+
+static int CVSensEwtSetSV(N_Vector *yScur, N_Vector *weightS, CVodeMem cv_mem)
+{
+  int is;
+  
+  for (is=0; is<Ns; is++) {
+    N_VAbs(yScur[is], tempv);
+    N_VLinearSum(reltolS, tempv, ONE, VabstolS[is], tempv);
+    if (N_VMin(tempv) <= ZERO) return (-1);
+    N_VInv(tempv, weightS[is]);
+  }
+
+  return (0);
+}
+
+/* 
+ * -----------------------------------------------------------------
+ * PRIVATE FUNCTIONS FOR CVODE
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * CVHin
+ *
+ * This routine computes a tentative initial step size h0. 
+ * If tout is too close to tn (= t0), then CVHin returns FALSE and
+ * h remains uninitialized. Otherwise, CVHin sets h to the chosen 
+ * value h0 and returns TRUE.
+
+ * The algorithm used seeks to find h0 as a solution of
+ *       (WRMS norm of (h0^2 ydd / 2)) = 1, 
+ * where ydd = estimated second derivative of y.
+*/
+
+static booleantype CVHin(CVodeMem cv_mem, realtype tout)
+{
+  int sign, count;
+  realtype tdiff, tdist, tround, hlb, hub;
+  realtype hg, hgs, hnew, hrat, h0, yddnrm;
+
+  /* Test for tout too close to tn */
+  
+  if ((tdiff = tout-tn) == ZERO) return (FALSE);
+  
+  sign = (tdiff > ZERO) ? 1 : -1;
+  tdist = ABS(tdiff);
+  tround = uround * MAX(ABS(tn), ABS(tout));
+  if (tdist < TWO*tround) return (FALSE);
+  
+  /* Set lower and upper bounds on h0, and take geometric mean 
+     Exit with this value if the bounds cross each other       */
+
+  hlb = HLB_FACTOR * tround;
+  hub = CVUpperBoundH0(cv_mem, tdist);
+  hg  = RSqrt(hlb*hub);
+  if (hub < hlb) {
+    if (sign == -1) hg = -hg;
+    h = hg;
+    return (TRUE);
+  }
+  
+  /* Loop up to MAX_ITERS times to find h0.
+     Stop if new and previous values differ by a factor < 2.
+     Stop if hnew/hg > 2 after one iteration, as this probably means
+     that the ydd value is bad because of cancellation error.        */
+
+  count = 0;
+  loop {
+    hgs = hg*sign;
+    yddnrm = CVYddNorm(cv_mem, hgs);
+    hnew =  (yddnrm*hub*hub > TWO) ? RSqrt(TWO/yddnrm) : RSqrt(hg*hub);
+    count++;
+    if (count >= MAX_ITERS) break;
+    hrat = hnew/hg;
+    if ((hrat > HALF) && (hrat < TWO)) break;
+    if ((count >= 2) && (hrat > TWO)) {
+      hnew = hg;
+      break;
+    }
+    hg = hnew;
+  }
+  
+  /* Apply bounds, bias factor, and attach sign */
+
+  h0 = H_BIAS*hnew;
+  if (h0 < hlb) h0 = hlb;
+  if (h0 > hub) h0 = hub;
+  if (sign == -1) h0 = -h0;
+  h = h0;
+
+  return (TRUE);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVUpperBoundH0
+ *
+ * This routine sets an upper bound on abs(h0) based on
+ * tdist = tn - t0 and the values of y[i]/y'[i].
+ */
+
+static realtype CVUpperBoundH0(CVodeMem cv_mem, realtype tdist)
+{
+  realtype hub_inv, hubQ_inv, hubS_inv, hub;
+  N_Vector temp1, temp2;
+  N_Vector tempQ1, tempQ2;
+  N_Vector *tempS1;
+  int is;
+
+  /* 
+   * Bound based on |y|/|y'| -- allow at most an increase of
+   * HUB_FACTOR in y0 (based on a forward Euler step). The weight 
+   * factor is used as a safeguard against zero components in y0. 
+   */
+
+  temp1 = tempv;
+  temp2 = acor;
+
+  N_VAbs(zn[0], temp2);
+  efun(zn[0], temp1, e_data);
+  N_VInv(temp1, temp1);
+  N_VLinearSum(HUB_FACTOR, temp2, ONE, temp1, temp1);
+
+  N_VAbs(zn[1], temp2);
+
+  N_VDiv(temp2, temp1, temp1);
+  hub_inv = N_VMaxNorm(temp1);
+
+  /* Bound based on |yQ|/|yQ'| */
+  
+  if (quadr && errconQ) {
+
+    tempQ1 = tempvQ;
+    tempQ2 = acorQ;
+
+    N_VAbs(znQ[0], tempQ2);
+    CVQuadEwtSet(znQ[0], tempQ1, cv_mem);
+    N_VInv(tempQ1, tempQ1);
+    N_VLinearSum(HUB_FACTOR, tempQ2, ONE, tempQ1, tempQ1);
+    
+    N_VAbs(znQ[1], tempQ2);
+    
+    N_VDiv(tempQ2, tempQ1, tempQ1);
+    hubQ_inv = N_VMaxNorm(tempQ1);
+
+    if (hubQ_inv > hub_inv) hub_inv = hubQ_inv;
+
+  }
+
+  /* Bound based on |yS|/|yS'| */
+
+  if (sensi && errconS) {
+
+    tempS1 = acorS;
+    CVSensEwtSet(znS[0], tempS1, cv_mem);
+
+    for (is=0; is<Ns; is++) {
+
+      N_VAbs(znS[0][is], temp2);
+      N_VInv(tempS1[is], temp1);
+      N_VLinearSum(HUB_FACTOR, temp2, ONE, temp1, temp1);
+      
+      N_VAbs(znS[1][is], temp2);
+      
+      N_VDiv(temp2, temp1, temp1);
+      hubS_inv = N_VMaxNorm(temp1);
+
+      if (hubS_inv > hub_inv) hub_inv = hubS_inv;
+
+    }
+
+  }
+
+  /*
+   * bound based on tdist -- allow at most a step of magnitude
+   * HUB_FACTOR * tdist
+   */
+  
+  hub = HUB_FACTOR*tdist;
+
+  /* Use the smaler of the two */
+
+  if (hub*hub_inv > ONE) hub = ONE/hub_inv;
+
+  return (hub);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVYddNorm
+ *
+ * This routine computes an estimate of the second derivative of y
+ * using a difference quotient, and returns its WRMS norm.
+ */
+
+static realtype CVYddNorm(CVodeMem cv_mem, realtype hg)
+{
+  realtype yddnrm;
+  int is;
+  N_Vector wrk1, wrk2;
+  
+  /* y     <- h*y'(t) + y(t) */
+  
+  N_VLinearSum(hg, zn[1], ONE, zn[0], y);
+  
+  if (sensi && errconS) 
+    for (is=0; is<Ns; is++)
+      N_VLinearSum(hg, znS[1][is], ONE, znS[0][is], yS[is]);
+  
+  /* tempv <- f(t+h, h*y'(t)+y(t)) */
+
+  f(tn+hg, y, tempv, f_data);
+  nfe++;
+
+  if (quadr && errconQ) {
+    fQ(tn+hg, y, tempvQ, fQ_data);
+    nfQe++;
+  }
+
+  if (sensi && errconS) {
+    wrk1 = ftemp;
+    wrk2 = acor;
+    CVSensRhs(cv_mem, tn+hg, y, tempv, yS, tempvS, wrk1, wrk2);
+  }  
+
+  /* tempv <- f(t+h, h*y'(t)+y(t)) - y'(t) */
+  /* tempv <- ydd */
+  
+  N_VLinearSum(ONE, tempv, -ONE, zn[1], tempv);
+  N_VScale(ONE/hg, tempv, tempv);
+  
+  if (quadr && errconQ) {
+    N_VLinearSum(ONE, tempvQ, -ONE, znQ[1], tempvQ);
+    N_VScale(ONE/hg, tempvQ, tempvQ);
+  }
+
+  if (sensi && errconS)
+    for (is=0; is<Ns; is++) {
+      N_VLinearSum(ONE, tempvS[is], -ONE, znS[1][is], tempvS[is]);
+      N_VScale(ONE/hg, tempvS[is], tempvS[is]);
+    }
+
+  /* Estimate ||y''|| */
+  
+  yddnrm = N_VWrmsNorm(tempv, ewt);
+  if (quadr && errconQ) {
+    yddnrm = CVQuadUpdateNorm(cv_mem, yddnrm, tempvQ, ewtQ);
+  }
+  if (sensi && errconS) {
+    yddnrm = CVSensUpdateNorm(cv_mem, yddnrm, tempvS, ewtS);
+  }
+
+  return (yddnrm);
+}
+
+/*-----------------------------------------------------------------*/
+
+/* 
+ * CVStep
+ *
+ * This routine performs one internal cvode step, from tn to tn + h.
+ * It calls other routines to do all the work.
+ *
+ * The main operations done here are as follows:
+ * - preliminary adjustments if a new step size was chosen;
+ * - prediction of the Nordsieck history array zn at tn + h;
+ * - setting of multistep method coefficients and test quantities;
+ * - solution of the nonlinear system;
+ * - testing the local error;
+ * - updating zn and other state data if successful;
+ * - resetting stepsize and order for the next step.
+ * - if SLDET is on, check for stability, reduce order if necessary.
+ * On a failure in the nonlinear system solution or error test, the
+ * step may be reattempted, depending on the nature of the failure.
+*/
+
+static int CVStep(CVodeMem cv_mem)
+{
+  realtype saved_t, dsm, dsmS, dsmQ;
+  int ncf, nef, kflag, nflag, ncfS, nefS, nefQ;
+  booleantype do_sensi_stg, do_sensi_stg1, passed;
+  int is;
+
+  saved_t = tn;
+
+  ncf = nef = 0;
+  nflag = FIRST_CALL;
+
+  if (quadr) nefQ = 0;
+
+  /* Are we computing sensitivities with a staggered approach? */
+  do_sensi_stg  = (sensi && (ism==CV_STAGGERED));
+  do_sensi_stg1 = (sensi && (ism==CV_STAGGERED1));
+
+  if (do_sensi_stg) {
+    ncfS = 0;   /* local conv. failure counter for sensitivities */
+    nefS = 0;   /* local err.test failure counter for sensi. is */
+  }
+
+  if (do_sensi_stg1) {
+    for (is=0; is<Ns; is++) 
+      ncfS1[is] = 0;
+    nefS = 0;
+  }
+
+  if ((nst > 0) && (hprime != h)) CVAdjustParams(cv_mem);
+
+  /* Looping point for attempts to take a step */
+  loop {  
+    CVPredict(cv_mem);  
+    CVSet(cv_mem);
+
+    nflag = CVNls(cv_mem, nflag);
+    kflag = CVHandleNFlag(cv_mem, &nflag, saved_t, &ncf, &ncfn);
+
+    /* Go back in loop if we need to predict again */
+    if (kflag == PREDICT_AGAIN) continue;
+
+    /* Return if nonlinear solve failed and recovery not possible. */
+    if (kflag != DO_ERROR_TEST) return (kflag);
+
+    passed = CVDoErrorTest(cv_mem, &nflag, &kflag, saved_t, &nef, &dsm);
+
+    /* Return if error test failed and recovery not possible. */
+    if ((!passed) && (kflag == REP_ERR_FAIL)) return (kflag);
+
+    /* Retry step if error test failed, nflag == PREV_ERR_FAIL */
+    if (!passed) continue;
+
+    /* passed = TRUE, kflag  = DO_ERROR_TEST, nflag  = SOLVED */
+
+    /* Correct the quadrature variables */
+    if (quadr) {
+      /* Save quadrature correction in acorQ */
+      fQ(tn, y, acorQ, fQ_data);
+      N_VLinearSum(h, acorQ, -ONE, znQ[1], acorQ);
+      N_VScale(rl1, acorQ, acorQ);
+      /* Apply correction to quadrature variables */
+      N_VLinearSum(ONE, znQ[0], ONE, acorQ, yQ);
+      /* Error test on quadratures */
+      if (errconQ) {
+        acnrmQ = N_VWrmsNorm(acorQ, ewtQ);
+        passed = CVQuadDoErrorTest(cv_mem, &nflag, &kflag, saved_t, &nefQ, &dsmQ);
+        if ((!passed) && (kflag == REP_ERR_FAIL)) return (kflag);
+        if (!passed) continue;
+        /* update 'dsm' with 'dsmQ' (to be used in CVPrepareNextStep) */
+        dsm = CVQuadUpdateDsm(cv_mem, dsm, dsmQ);
+      }
+    }
+
+    /* CV_STAGGERED approach for sensitivities */
+    if (do_sensi_stg) {
+      /* Reset counters for states */
+      ncf = nef = 0;
+      /* Evaluate f at converged y */
+      f(tn, y, ftemp, f_data);
+      nfe++;
+      /* Nonlinear solve for sensitivities (all-at-once) */
+      nflag = CVStgrNls(cv_mem);
+      kflag = CVHandleNFlag(cv_mem, &nflag, saved_t, &ncfS, &ncfnS);
+      if (kflag == PREDICT_AGAIN) continue;
+      if (kflag != DO_ERROR_TEST) return (kflag);
+      /* Error test on sensitivities */
+      if (errconS) {
+        passed = CVStgrDoErrorTest(cv_mem,&nflag,&kflag,saved_t,&nefS,&dsmS);
+        if ((!passed) && (kflag == REP_ERR_FAIL)) return (kflag);
+        if (!passed) continue;
+        /* update 'dsm' with 'dsmS' (to be used in CVPrepareNextStep) */
+        dsm = CVStgrUpdateDsm(cv_mem, dsm, dsmS);
+      }
+    }
+
+    /* CV_STAGGERED1 approach for sensitivities */
+    if (do_sensi_stg1) {
+      /* Reset counters for states */
+      ncf = nef = 0;
+      /* Evaluate f at converged y */
+      f(tn, y, ftemp, f_data);
+      nfe++;
+      /* Nonlinear solve for sensitivities (one-by-one) */
+      for (is=0; is<Ns; is++) { 
+        nflag = CVStgr1Nls(cv_mem, is); 
+        kflag = CVHandleNFlag(cv_mem, &nflag, saved_t, &ncfS1[is], &ncfnS1[is]);
+        if (kflag != DO_ERROR_TEST) break; 
+      }  
+      if (kflag == PREDICT_AGAIN) continue;
+      if (kflag != DO_ERROR_TEST) return (kflag);
+      /* Error test on sensitivities */
+      if (errconS) {
+        acnrmS = CVSensNorm(cv_mem, acorS, ewtS);
+        passed = CVStgrDoErrorTest(cv_mem,&nflag,&kflag,saved_t,&nefS,&dsmS);
+        if ((!passed) && (kflag == REP_ERR_FAIL)) return (kflag);
+        if (!passed) continue;
+        /* update 'dsm' with 'dsmS' (to be used in CVPrepareNextStep) */
+        dsm = CVStgrUpdateDsm(cv_mem, dsm, dsmS);
+      }
+    }
+    
+    /* Everything went fine; exit loop */ 
+    break;
+
+  }
+
+  /* Nonlinear system solve and error test were both successful.
+     Update data, and consider change of step and/or order.       */
+
+  CVCompleteStep(cv_mem); 
+
+  CVPrepareNextStep(cv_mem, dsm); 
+
+  /* If Stablilty Limit Detection is turned on, call stability limit
+     detection routine for possible order reduction. */
+
+  if (sldeton) CVBDFStab(cv_mem);
+
+  etamax = (nst <= SMALL_NST) ? ETAMX2 : ETAMX3;
+
+  /*  Finally, we rescale the acor array to be the 
+      estimated local error vector. */
+
+  N_VScale(ONE/tq[2], acor, acor);
+
+  if (quadr)
+    N_VScale(ONE/tq[2], acorQ, acorQ);
+
+  if (sensi)
+    for (is=0; is<Ns; is++)
+      N_VScale(ONE/tq[2], acorS[is], acorS[is]);
+
+  return (SUCCESS_STEP);
+      
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVAdjustParams
+ *
+ * This routine is called when a change in step size was decided upon,
+ * and it handles the required adjustments to the history array zn.
+ * If there is to be a change in order, we call CVAdjustOrder and reset
+ * q, L = q+1, and qwait.  Then in any case, we call CVRescale, which
+ * resets h and rescales the Nordsieck array.
+ */
+
+static void CVAdjustParams(CVodeMem cv_mem)
+{
+  if (qprime != q) {
+    CVAdjustOrder(cv_mem, qprime-q);
+    q = qprime;
+    L = q+1;
+    qwait = L;
+  }
+  CVRescale(cv_mem);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVAdjustOrder
+ *
+ * This routine is a high level routine which handles an order
+ * change by an amount deltaq (= +1 or -1). If a decrease in order
+ * is requested and q==2, then the routine returns immediately.
+ * Otherwise CVAdjustAdams or CVAdjustBDF is called to handle the
+ * order change (depending on the value of lmm).
+ */
+
+static void CVAdjustOrder(CVodeMem cv_mem, int deltaq)
+{
+  if ((q==2) && (deltaq != 1)) return;
+  
+  switch(lmm){
+  case CV_ADAMS: 
+    CVAdjustAdams(cv_mem, deltaq);
+    break;
+  case CV_BDF:   
+    CVAdjustBDF(cv_mem, deltaq);
+    break;
+  }
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVAdjustAdams
+ *
+ * This routine adjusts the history array on a change of order q by
+ * deltaq, in the case that lmm == CV_ADAMS.
+ */
+
+static void CVAdjustAdams(CVodeMem cv_mem, int deltaq)
+{
+  int i, j;
+  int is;
+  realtype xi, hsum;
+
+  /* On an order increase, set new column of zn to zero and return */
+  
+  if (deltaq==1) {
+    N_VConst(ZERO, zn[L]);
+    if (quadr)
+      N_VConst(ZERO, znQ[L]);
+    if (sensi)
+      for (is=0; is<Ns; is++)
+        N_VConst(ZERO, znS[L][is]);
+    return;
+  }
+
+  /*     
+     On an order decrease, each zn[j] is adjusted by a multiple of zn[q].
+     The coeffs. in the adjustment are the coeffs. of the polynomial:
+          x
+     q * INT { u * ( u + xi_1 ) * ... * ( u + xi_{q-2} ) } du 
+          0
+     where xi_j = [t_n - t_(n-j)]/h => xi_0 = 0
+     
+  */
+
+  for (i=0; i <= qmax; i++) l[i] = ZERO;
+  l[1] = ONE;
+  hsum = ZERO;
+  for (j=1; j <= q-2; j++) {
+    hsum += tau[j];
+    xi = hsum / hscale;
+    for (i=j+1; i >= 1; i--) l[i] = l[i]*xi + l[i-1];
+  }
+  
+  for (j=1; j <= q-2; j++) l[j+1] = q * (l[j] / (j+1));
+  
+  for (j=2; j < q; j++)
+    N_VLinearSum(-l[j], zn[q], ONE, zn[j], zn[j]);
+
+  if (quadr)
+    for (j=2; j < q; j++)
+      N_VLinearSum(-l[j], znQ[q], ONE, znQ[j], znQ[j]);
+
+  if (sensi)
+    for (is=0; is<Ns; is++)
+      for (j=2; j < q; j++)
+        N_VLinearSum(-l[j], znS[q][is], ONE, znS[j][is], znS[j][is]);
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVAdjustBDF
+ *
+ * This is a high level routine which handles adjustments to the
+ * history array on a change of order by deltaq in the case that 
+ * lmm == CV_BDF.  CVAdjustBDF calls CVIncreaseBDF if deltaq = +1 and 
+ * CVDecreaseBDF if deltaq = -1 to do the actual work.
+ */
+
+static void CVAdjustBDF(CVodeMem cv_mem, int deltaq)
+{
+  switch(deltaq) {
+    case 1: 
+      CVIncreaseBDF(cv_mem);
+      return;
+    case -1: 
+      CVDecreaseBDF(cv_mem);
+      return;
+  }
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVIncreaseBDF
+ *
+ * This routine adjusts the history array on an increase in the 
+ * order q in the case that lmm == CV_BDF.  
+ * A new column zn[q+1] is set equal to a multiple of the saved 
+ * vector (= acor) in zn[qmax].  Then each zn[j] is adjusted by
+ * a multiple of zn[q+1].  The coefficients in the adjustment are the 
+ * coefficients of the polynomial x*x*(x+xi_1)*...*(x+xi_j),
+ * where xi_j = [t_n - t_(n-j)]/h.
+ */
+
+static void CVIncreaseBDF(CVodeMem cv_mem)
+{
+  realtype alpha0, alpha1, prod, xi, xiold, hsum, A1;
+  int i, j;
+  int is;
+
+  for (i=0; i <= qmax; i++) l[i] = ZERO;
+  l[2] = alpha1 = prod = xiold = ONE;
+  alpha0 = -ONE;
+  hsum = hscale;
+  if (q > 1) {
+    for (j=1; j < q; j++) {
+      hsum += tau[j+1];
+      xi = hsum / hscale;
+      prod *= xi;
+      alpha0 -= ONE / (j+1);
+      alpha1 += ONE / xi;
+      for (i=j+2; i >= 2; i--) l[i] = l[i]*xiold + l[i-1];
+      xiold = xi;
+    }
+  }
+  A1 = (-alpha0 - alpha1) / prod;
+
+  /* 
+     zn[qmax] contains the value Delta_n = y_n - y_n(0) 
+     This value was stored there at the previous successful
+     step (in CVCompleteStep) 
+     
+     A1 contains dbar = (1/xi* - 1/xi_q)/prod(xi_j)
+  */
+  
+  N_VScale(A1, zn[qmax], zn[L]);
+  for (j=2; j <= q; j++)
+    N_VLinearSum(l[j], zn[L], ONE, zn[j], zn[j]);
+
+  if (quadr) {
+    N_VScale(A1, znQ[qmax], znQ[L]);
+    for (j=2; j <= q; j++)
+      N_VLinearSum(l[j], znQ[L], ONE, znQ[j], znQ[j]);
+  }
+
+  if (sensi) {
+    for (is=0; is<Ns; is++) {
+      N_VScale(A1, znS[qmax][is], znS[L][is]);
+      for (j=2; j <= q; j++)
+        N_VLinearSum(l[j], znS[L][is], ONE, znS[j][is], znS[j][is]);
+    }
+  }
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVDecreaseBDF
+ *
+ * This routine adjusts the history array on a decrease in the 
+ * order q in the case that lmm == CV_BDF.  
+ * Each zn[j] is adjusted by a multiple of zn[q].  The coefficients
+ * in the adjustment are the coefficients of the polynomial
+ *   x*x*(x+xi_1)*...*(x+xi_j), where xi_j = [t_n - t_(n-j)]/h.
+ */
+
+static void CVDecreaseBDF(CVodeMem cv_mem)
+{
+  realtype hsum, xi;
+  int i, j;
+  int is;
+  
+  for (i=0; i <= qmax; i++) l[i] = ZERO;
+  l[2] = ONE;
+  hsum = ZERO;
+  for (j=1; j <= q-2; j++) {
+    hsum += tau[j];
+    xi = hsum /hscale;
+    for (i=j+2; i >= 2; i--) l[i] = l[i]*xi + l[i-1];
+  }
+  
+  for (j=2; j < q; j++)
+    N_VLinearSum(-l[j], zn[q], ONE, zn[j], zn[j]);
+
+  if (quadr) {
+    for (j=2; j < q; j++)
+      N_VLinearSum(-l[j], znQ[q], ONE, znQ[j], znQ[j]);
+  }
+
+  if (sensi) {
+    for (is=0; is<Ns; is++) 
+      for (j=2; j < q; j++)
+        N_VLinearSum(-l[j], znS[q][is], ONE, znS[j][is], znS[j][is]);
+  }
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVRescale
+ *
+ * This routine rescales the Nordsieck array by multiplying the
+ * jth column zn[j] by eta^j, j = 1, ..., q.  Then the value of
+ * h is rescaled by eta, and hscale is reset to h.
+ */
+
+static void CVRescale(CVodeMem cv_mem)
+{
+  int j;
+  int is;
+  realtype factor;
+
+  factor = eta;
+  for (j=1; j <= q; j++) {
+
+    N_VScale(factor, zn[j], zn[j]);
+
+    if (quadr)
+      N_VScale(factor, znQ[j], znQ[j]);
+
+    if (sensi)
+      for (is=0; is<Ns; is++)
+        N_VScale(factor, znS[j][is], znS[j][is]);
+
+    factor *= eta;
+
+  }
+  h = hscale * eta;
+  hscale = h;
+  nscon = 0;
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVPredict
+ *
+ * This routine advances tn by the tentative step size h, and computes
+ * the predicted array z_n(0), which is overwritten on zn.  The
+ * prediction of zn is done by repeated additions.
+ */
+
+static void CVPredict(CVodeMem cv_mem)
+{
+  int j, k;
+  int is;
+
+  tn += h;
+
+  for (k = 1; k <= q; k++)
+    for (j = q; j >= k; j--) 
+      N_VLinearSum(ONE, zn[j-1], ONE, zn[j], zn[j-1]); 
+
+  if (quadr) {
+    for (k = 1; k <= q; k++)
+      for (j = q; j >= k; j--) 
+        N_VLinearSum(ONE, znQ[j-1], ONE, znQ[j], znQ[j-1]);
+  }
+
+  if (sensi) {
+    for (is=0; is<Ns; is++) {
+      for (k = 1; k <= q; k++)
+        for (j = q; j >= k; j--) 
+          N_VLinearSum(ONE, znS[j-1][is], ONE, znS[j][is], znS[j-1][is]);
+    }
+  }
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVSet
+ *
+ * This routine is a high level routine which calls CVSetAdams or
+ * CVSetBDF to set the polynomial l, the test quantity array tq, 
+ * and the related variables  rl1, gamma, and gamrat.
+ */
+
+static void CVSet(CVodeMem cv_mem)
+{
+  switch(lmm) {
+  case CV_ADAMS: 
+    CVSetAdams(cv_mem);
+    break;
+  case CV_BDF: 
+    CVSetBDF(cv_mem);
+    break;
+  }
+  rl1 = ONE / l[1];
+  gamma = h * rl1;
+  if (nst == 0) gammap = gamma;
+  gamrat = (nst > 0) ? gamma / gammap : ONE;  /* protect x / x != 1.0 */
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVSetAdams
+ *
+ * This routine handles the computation of l and tq for the
+ * case lmm == CV_ADAMS.
+ *
+ * The components of the array l are the coefficients of a
+ * polynomial Lambda(x) = l_0 + l_1 x + ... + l_q x^q, given by
+ *                          q-1
+ * (d/dx) Lambda(x) = c * PRODUCT (1 + x / xi_i) , where
+ *                          i=1
+ *  Lambda(-1) = 0, Lambda(0) = 1, and c is a normalization factor.
+ * Here xi_i = [t_n - t_(n-i)] / h.
+ *
+ * The array tq is set to test quantities used in the convergence
+ * test, the error test, and the selection of h at a new order.
+ */
+
+static void CVSetAdams(CVodeMem cv_mem)
+{
+  realtype m[L_MAX], M[3], hsum;
+  
+  if (q == 1) {
+    l[0] = l[1] = tq[1] = tq[5] = ONE;
+    tq[2] = TWO;
+    tq[3] = TWELVE;
+    tq[4] = nlscoef * tq[2];       /* = 0.1 * tq[2] */
+    return;
+  }
+  
+  hsum = CVAdamsStart(cv_mem, m);
+  
+  M[0] = CVAltSum(q-1, m, 1);
+  M[1] = CVAltSum(q-1, m, 2);
+  
+  CVAdamsFinish(cv_mem, m, M, hsum);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVAdamsStart
+ *
+ * This routine generates in m[] the coefficients of the product
+ * polynomial needed for the Adams l and tq coefficients for q > 1.
+ */
+
+static realtype CVAdamsStart(CVodeMem cv_mem, realtype m[])
+{
+  realtype hsum, xi_inv, sum;
+  int i, j;
+  
+  hsum = h;
+  m[0] = ONE;
+  for (i=1; i <= q; i++) m[i] = ZERO;
+  for (j=1; j < q; j++) {
+    if ((j==q-1) && (qwait == 1)) {
+      sum = CVAltSum(q-2, m, 2);
+      tq[1] = m[q-2] / (q * sum);
+    }
+    xi_inv = h / hsum;
+    for (i=j; i >= 1; i--) m[i] += m[i-1] * xi_inv;
+    hsum += tau[j];
+    /* The m[i] are coefficients of product(1 to j) (1 + x/xi_i) */
+  }
+  return (hsum);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVAdamsFinish
+ *
+ * This routine completes the calculation of the Adams l and tq.
+ */
+
+static void CVAdamsFinish(CVodeMem cv_mem, realtype m[], realtype M[], realtype hsum)
+{
+  int i;
+  realtype M0_inv, xi, xi_inv;
+  
+  M0_inv = ONE / M[0];
+  
+  l[0] = ONE;
+  for (i=1; i <= q; i++) l[i] = M0_inv * (m[i-1] / i);
+  xi = hsum / h;
+  xi_inv = ONE / xi;
+  
+  tq[2] = xi * M[0] / M[1];
+  tq[5] = xi / l[q];
+
+  if (qwait == 1) {
+    for (i=q; i >= 1; i--) m[i] += m[i-1] * xi_inv;
+    M[2] = CVAltSum(q, m, 2);
+    tq[3] = L * M[0] / M[2];
+  }
+
+  tq[4] = nlscoef * tq[2];
+}
+
+/*-----------------------------------------------------------------*/
+
+/*  
+ * CVAltSum
+ *
+ * CVAltSum returns the value of the alternating sum
+ *   sum (i= 0 ... iend) [ (-1)^i * (a[i] / (i + k)) ].
+ * If iend < 0 then CVAltSum returns 0.
+ * This operation is needed to compute the integral, from -1 to 0,
+ * of a polynomial x^(k-1) M(x) given the coefficients of M(x).
+ */
+
+static realtype CVAltSum(int iend, realtype a[], int k)
+{
+  int i, sign;
+  realtype sum;
+  
+  if (iend < 0) return (ZERO);
+  
+  sum = ZERO;
+  sign = 1;
+  for (i=0; i <= iend; i++) {
+    sum += sign * (a[i] / (i+k));
+    sign = -sign;
+  }
+  return (sum);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVSetBDF
+ *
+ * This routine computes the coefficients l and tq in the case
+ * lmm == CV_BDF.  CVSetBDF calls CVSetTqBDF to set the test
+ * quantity array tq. 
+ * 
+ * The components of the array l are the coefficients of a
+ * polynomial Lambda(x) = l_0 + l_1 x + ... + l_q x^q, given by
+ *                                 q-1
+ * Lambda(x) = (1 + x / xi*_q) * PRODUCT (1 + x / xi_i) , where
+ *                                 i=1
+ *  xi_i = [t_n - t_(n-i)] / h.
+ *
+ * The array tq is set to test quantities used in the convergence
+ * test, the error test, and the selection of h at a new order.
+ */
+
+static void CVSetBDF(CVodeMem cv_mem)
+{
+  realtype alpha0, alpha0_hat, xi_inv, xistar_inv, hsum;
+  int i,j;
+  
+  l[0] = l[1] = xi_inv = xistar_inv = ONE;
+  for (i=2; i <= q; i++) l[i] = ZERO;
+  alpha0 = alpha0_hat = -ONE;
+  hsum = h;
+  if (q > 1) {
+    for (j=2; j < q; j++) {
+      hsum += tau[j-1];
+      xi_inv = h / hsum;
+      alpha0 -= ONE / j;
+      for (i=j; i >= 1; i--) l[i] += l[i-1]*xi_inv;
+      /* The l[i] are coefficients of product(1 to j) (1 + x/xi_i) */
+    }
+    
+    /* j = q */
+    alpha0 -= ONE / q;
+    xistar_inv = -l[1] - alpha0;
+    hsum += tau[q-1];
+    xi_inv = h / hsum;
+    alpha0_hat = -l[1] - xi_inv;
+    for (i=q; i >= 1; i--) l[i] += l[i-1]*xistar_inv;
+  }
+
+  CVSetTqBDF(cv_mem, hsum, alpha0, alpha0_hat, xi_inv, xistar_inv);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVSetTqBDF
+ *
+ * This routine sets the test quantity array tq in the case
+ * lmm == CV_BDF.
+*/
+
+static void CVSetTqBDF(CVodeMem cv_mem, realtype hsum, realtype alpha0,
+                       realtype alpha0_hat, realtype xi_inv, realtype xistar_inv)
+{
+  realtype A1, A2, A3, A4, A5, A6;
+  realtype C, CPrime, CPrimePrime;
+  
+  A1 = ONE - alpha0_hat + alpha0;
+  A2 = ONE + q * A1;
+  tq[2] = ABS(alpha0 * (A2 / A1));
+  tq[5] = ABS((A2) / (l[q] * xi_inv/xistar_inv));
+  if (qwait == 1) {
+    C = xistar_inv / l[q];
+    A3 = alpha0 + ONE / q;
+    A4 = alpha0_hat + xi_inv;
+    CPrime = A3 / (ONE - A4 + A3);
+    tq[1] = ABS(CPrime / C);
+    hsum += tau[q];
+    xi_inv = h / hsum;
+    A5 = alpha0 - (ONE / (q+1));
+    A6 = alpha0_hat - xi_inv;
+    CPrimePrime = A2 / (ONE - A6 + A5);
+    tq[3] = ABS(CPrimePrime * xi_inv * (q+2) * A5);
+  }
+  tq[4] = nlscoef * tq[2];
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVnls
+ *
+ * This routine attempts to solve the nonlinear system associated
+ * with a single implicit step of the linear multistep method.
+ * Depending on iter, it calls CVNlsFunctional or CVNlsNewton
+ * to do the work.
+ */
+
+static int CVNls(CVodeMem cv_mem, int nflag)
+{
+  int flag=SOLVED;
+
+  switch(iter) {
+  case CV_FUNCTIONAL: 
+    flag = CVNlsFunctional(cv_mem);
+    break;
+  case CV_NEWTON: 
+    flag = CVNlsNewton(cv_mem, nflag);
+    break;
+  }
+  
+  return(flag);
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVNlsFunctional
+ *
+ * This routine attempts to solve the nonlinear system using 
+ * functional iteration (no matrices involved).
+ * 
+ * This routine also handles the functional iteration of the
+ * combined system (states + sensitivities) when sensitivities are 
+ * computed using the CV_SIMULTANEOUS approach.
+ */
+
+static int CVNlsFunctional(CVodeMem cv_mem)
+{
+  int m;
+  realtype del, delS, Del, Delp, dcon;
+  int is;
+  booleantype do_sensi_sim;
+  N_Vector wrk1, wrk2;
+
+  /* Are we computing sensitivities with the CV_SIMULTANEOUS approach? */
+  do_sensi_sim = (sensi && (ism==CV_SIMULTANEOUS));
+
+  /* Initialize counter and evaluate f at predicted y */
+  crate = ONE;
+  m = 0;
+
+  f(tn, zn[0], tempv, f_data);
+  nfe++;
+
+  if (do_sensi_sim) {
+    wrk1 = ftemp;
+    wrk2 = ftempS[0];
+    CVSensRhs(cv_mem, tn, zn[0], tempv, znS[0], tempvS, wrk1, wrk2);
+  }
+
+  /* Initialize correction to zero */
+
+  N_VConst(ZERO, acor);
+  if (do_sensi_sim) {
+    for (is=0; is<Ns; is++)
+      N_VConst(ZERO,acorS[is]);
+  }
+
+  /* Loop until convergence; accumulate corrections in acor */
+
+  loop {
+
+    nni++;
+
+    /* Correct y directly from the last f value */
+
+    N_VLinearSum(h, tempv, -ONE, zn[1], tempv);
+    N_VScale(rl1, tempv, tempv);
+    N_VLinearSum(ONE, zn[0], ONE, tempv, y);
+
+    if (do_sensi_sim)
+      for (is=0; is<Ns; is++) {
+        N_VLinearSum(h, tempvS[is], -ONE, znS[1][is], tempvS[is]);
+        N_VScale(rl1, tempvS[is], tempvS[is]);
+        N_VLinearSum(ONE, znS[0][is], ONE, tempvS[is], yS[is]);
+      }
+    
+    /* Get WRMS norm of current correction to use in convergence test */
+
+    N_VLinearSum(ONE, tempv, -ONE, acor, acor);
+    if (do_sensi_sim)
+      for (is=0; is<Ns; is++)
+        N_VLinearSum(ONE, tempvS[is], -ONE, acorS[is], acorS[is]);
+
+    del = N_VWrmsNorm(acor, ewt);
+    if (do_sensi_sim)
+      delS = CVSensUpdateNorm(cv_mem, del, acorS, ewtS);
+
+    N_VScale(ONE, tempv, acor);
+    if (do_sensi_sim) 
+      for (is=0; is<Ns; is++)
+        N_VScale(ONE, tempvS[is], acorS[is]);
+    
+    /* Test for convergence.  If m > 0, an estimate of the convergence
+       rate constant is stored in crate, and used in the test. 
+
+       Recall that, even when errconS=FALSE, all variables are used in the
+       convergence test. Hence, we use Del (and not del). However, acnrm
+       is used in the error test and thus it has different forms
+       depending on errconS (and this explains why we have to carry around
+       del and delS)
+    */
+    
+    Del = (do_sensi_sim) ? delS : del;
+    if (m > 0) crate = MAX(CRDOWN * crate, Del / Delp);
+    dcon = Del * MIN(ONE, crate) / tq[4];
+
+    if (dcon <= ONE) {
+      if (m == 0)
+        if (do_sensi_sim && errconS) acnrm = delS;
+        else                                  acnrm = del;
+      else {
+        acnrm = N_VWrmsNorm(acor, ewt);
+        if (do_sensi_sim && errconS)
+          acnrm = CVSensUpdateNorm(cv_mem, acnrm, acorS, ewtS);
+      }
+      return (SOLVED);  /* Convergence achieved */
+    }
+
+    /* Stop at maxcor iterations or if iter. seems to be diverging */
+
+    m++;
+    if ((m==maxcor) || ((m >= 2) && (Del > RDIV * Delp)))
+      return (CONV_FAIL);
+
+    /* Save norm of correction, evaluate f, and loop again */
+
+    Delp = Del;
+
+    f(tn, y, tempv, f_data);
+    nfe++;
+
+    if (do_sensi_sim) {
+      wrk1 = ftemp;
+      wrk2 = ftempS[0];
+      CVSensRhs(cv_mem, tn, y, tempv, yS, tempvS, wrk1, wrk2);
+    }      
+
+  } /* end loop */
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVNlsNewton
+ *
+ * This routine handles the Newton iteration. It calls lsetup if 
+ * indicated, calls CVNewtonIteration to perform the iteration, and 
+ * retries a failed attempt at Newton iteration if that is indicated.
+ * See return values at top of this file.
+ *
+ * This routine also handles the Newton iteration of the combined 
+ * system when sensitivities are computed using the CV_SIMULTANEOUS
+ * approach. Since in that case we use a quasi-Newton on the 
+ * combined system (by approximating the Jacobian matrix by its
+ * block diagonal) and thus only solve linear systems with 
+ * multiple right hand sides (all sharing the same coefficient
+ * matrix - whatever iteration matrix we decide on) we set-up
+ * the linear solver to handle N equations at a time.
+ */
+
+static int CVNlsNewton(CVodeMem cv_mem, int nflag)
+{
+  N_Vector vtemp1, vtemp2, vtemp3, wrk1, wrk2;
+  int convfail, ier;
+  booleantype callSetup, do_sensi_sim;
+  int is;
+  
+  /* Are we computing sensitivities with the CV_SIMULTANEOUS approach? */
+  do_sensi_sim = (sensi && (ism==CV_SIMULTANEOUS));
+
+  vtemp1 = acor;  /* rename acor as vtemp1 for readability  */
+  vtemp2 = y;     /* rename y as vtemp2 for readability     */
+  vtemp3 = tempv; /* rename tempv as vtemp3 for readability */
+  
+  /* Set flag convfail, input to lsetup for its evaluation decision */
+  convfail = ((nflag == FIRST_CALL) || (nflag == PREV_ERR_FAIL)) ?
+    CV_NO_FAILURES : CV_FAIL_OTHER;
+
+  /* Decide whether or not to call setup routine (if one exists) */
+  if (setupNonNull) {      
+    callSetup = (nflag == PREV_CONV_FAIL) || (nflag == PREV_ERR_FAIL) ||
+      (nst == 0) || (nst >= nstlp + MSBP) || (ABS(gamrat-ONE) > DGMAX);
+
+    /* Decide whether to force a call to setup */
+    if (forceSetup) {
+      callSetup = TRUE;
+      convfail = CV_FAIL_OTHER;
+    }
+
+  } else {  
+    crate = ONE;
+    crateS = ONE;  /* if NO lsetup all conv. rates are set to ONE */
+    callSetup = FALSE;
+  }
+  
+  /* Looping point for the solution of the nonlinear system.
+     Evaluate f at the predicted y, call lsetup if indicated, and
+     call CVNewtonIteration for the Newton iteration itself.      */
+
+  loop {
+
+    f(tn, zn[0], ftemp, f_data);
+    nfe++; 
+
+    if (do_sensi_sim) {
+      wrk1 = tempv;
+      wrk2 = tempvS[0];
+      CVSensRhs(cv_mem, tn, zn[0], ftemp, znS[0], ftempS, wrk1, wrk2);
+    }
+
+    if (callSetup) {
+      ier = lsetup(cv_mem, convfail, zn[0], ftemp, &jcur, 
+                   vtemp1, vtemp2, vtemp3);
+      nsetups++;
+      callSetup = FALSE;
+      forceSetup = FALSE;
+      gamrat = ONE; 
+      gammap = gamma;
+      crate = ONE;
+      crateS = ONE; /* after lsetup all conv. rates are reset to ONE */
+      nstlp = nst;
+      /* Return if lsetup failed */
+      if (ier < 0) return (SETUP_FAIL_UNREC);
+      if (ier > 0) return (CONV_FAIL);
+    }
+
+    /* Set acor to zero and load prediction into y vector */
+    N_VConst(ZERO, acor);
+    N_VScale(ONE, zn[0], y);
+
+    if (do_sensi_sim)
+      for (is=0; is<Ns; is++) {
+        N_VConst(ZERO, acorS[is]);
+        N_VScale(ONE, znS[0][is], yS[is]);
+      }
+
+    /* Do the Newton iteration */
+    ier = CVNewtonIteration(cv_mem);
+
+    /* If there is a convergence failure and the Jacobian-related 
+       data appears not to be current, loop again with a call to lsetup
+       in which convfail=CV_FAIL_BAD_J.  Otherwise return.                 */
+    if (ier != TRY_AGAIN) return (ier);
+    
+    callSetup = TRUE;
+    convfail = CV_FAIL_BAD_J;
+  }
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVNewtonIteration
+ *
+ * This routine performs the Newton iteration. If the iteration succeeds,
+ * it returns the value SOLVED. If not, it may signal the CVNlsNewton 
+ * routine to call lsetup again and reattempt the iteration, by
+ * returning the value TRY_AGAIN. (In this case, CVNlsNewton must set 
+ * convfail to CV_FAIL_BAD_J before calling setup again). 
+ * Otherwise, this routine returns one of the appropriate values 
+ * SOLVE_FAIL_UNREC or CONV_FAIL back to CVNlsNewton.
+ *
+ * If sensitivities are computed using the CV_SIMULTANEOUS approach, this
+ * routine performs a quasi-Newton on the combined nonlinear system.
+ * The iteration matrix of the combined system is block diagonal with
+ * each block being the iteration matrix of the original system. Thus
+ * we solve linear systems with the same matrix but different right
+ * hand sides.
+ */
+
+static int CVNewtonIteration(CVodeMem cv_mem)
+{
+  int m, ret;
+  realtype del, delS, Del, Delp, dcon;
+  N_Vector b, *bS=NULL, wrk1, wrk2;
+  booleantype do_sensi_sim;
+  int is;
+  
+  /* Are we computing sensitivities with the CV_SIMULTANEOUS approach? */
+  do_sensi_sim = (sensi && (ism==CV_SIMULTANEOUS));
+
+  mnewt = m = 0;
+  
+  /* At this point, ftemp  <- f(t_n, y_n(0))
+                    ftempS <- fS(t_n, y_n(0), s_n(0))
+                    acor   <- 0
+                    acorS  <- 0
+                    y      <- y_n(0)
+                    yS     <- yS_n(0)                 */
+
+  /* Looping point for Newton iteration */
+  loop {
+    
+    /* Evaluate the residual of the nonlinear system */
+    N_VLinearSum(rl1, zn[1], ONE, acor, tempv);
+    N_VLinearSum(gamma, ftemp, -ONE, tempv, tempv);
+
+    /* Call the lsolve function */
+    b = tempv;
+    ret = lsolve(cv_mem, b, ewt, y, ftemp); 
+    nni++;
+
+    if (ret < 0) return (SOLVE_FAIL_UNREC);
+    
+    /* If lsolve had a recoverable failure and Jacobian data is
+       not current, signal to try the solution again            */
+    if (ret > 0) { 
+      if ((!jcur) && (setupNonNull)) return (TRY_AGAIN);
+      return (CONV_FAIL);
+    }
+
+    /* Solve the sensitivity linear systems and do the same 
+       tests on the return value of lsolve. */
+ 
+    if (do_sensi_sim) {
+
+      for (is=0; is<Ns; is++) {
+        N_VLinearSum(rl1, znS[1][is], ONE, acorS[is], tempvS[is]);
+        N_VLinearSum(gamma, ftempS[is], -ONE, tempvS[is], tempvS[is]);
+      }
+      bS = tempvS;
+      for (is=0; is<Ns; is++) {
+        ret = lsolve(cv_mem, bS[is], ewtS[is], y, ftemp);
+        if (ret < 0) return (SOLVE_FAIL_UNREC);
+        if (ret > 0) { 
+          if ((!jcur) && (setupNonNull)) return (TRY_AGAIN);
+          return (CONV_FAIL);
+        }
+      }
+    }
+    
+    /* Get WRMS norm of correction; add correction to acor and y */
+
+    del = N_VWrmsNorm(b, ewt);
+    N_VLinearSum(ONE, acor, ONE, b, acor);
+    N_VLinearSum(ONE, zn[0], ONE, acor, y);
+
+    if (do_sensi_sim) {
+      delS = CVSensUpdateNorm(cv_mem, del, bS, ewtS);
+      for (is=0; is<Ns; is++) {
+        N_VLinearSum(ONE, acorS[is], ONE, bS[is], acorS[is]);
+        N_VLinearSum(ONE, znS[0][is], ONE, acorS[is], yS[is]);
+      }
+    }
+
+    /* Test for convergence.  If m > 0, an estimate of the convergence
+       rate constant is stored in crate, and used in the test.        */
+
+    Del = (do_sensi_sim) ? delS : del;
+    if (m > 0) crate = MAX(CRDOWN * crate, Del/Delp);
+    dcon = Del * MIN(ONE, crate) / tq[4];
+    
+    if (dcon <= ONE) {
+      if (m == 0)
+        if (do_sensi_sim && errconS) acnrm = delS;
+        else                                  acnrm = del;
+      else {
+        acnrm = N_VWrmsNorm(acor, ewt);
+        if (do_sensi_sim && errconS)
+          acnrm = CVSensUpdateNorm(cv_mem, acnrm, acorS, ewtS);
+      }
+      jcur = FALSE;
+      return (SOLVED);  /* Convergence achieved */
+    }
+
+    mnewt = ++m;
+    
+    /* Stop at maxcor iterations or if iter. seems to be diverging.
+       If still not converged and Jacobian data is not current, 
+       signal to try the solution again                            */
+    if ((m == maxcor) || ((m >= 2) && (Del > RDIV * Delp))) {
+      if ((!jcur) && (setupNonNull)) return (TRY_AGAIN);
+      return (CONV_FAIL);
+    }
+    
+    /* Save norm of correction, evaluate f, and loop again */
+    Delp = Del;
+    f(tn, y, ftemp, f_data);
+    nfe++;
+
+    if (do_sensi_sim) {
+      wrk1 = tempv;
+      wrk2 = tempvS[0];
+      CVSensRhs(cv_mem, tn, y, ftemp, yS, ftempS, wrk1, wrk2);
+    }
+
+  } /* end loop */
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVHandleFlag
+ *
+ * This routine takes action on the return value nflag = *nflagPtr
+ * returned by CVNls, as follows:
+ *
+ * If CVNls succeeded in solving the nonlinear system, then
+ * CVHandleNFlag returns the constant DO_ERROR_TEST, which tells CVStep
+ * to perform the error test.
+ *
+ * If the nonlinear system was not solved successfully, then ncfn and
+ * ncf = *ncfPtr are incremented and Nordsieck array zn is restored.
+ *
+ * If the solution of the nonlinear system failed due to an
+ * unrecoverable failure by setup, we return the value SETUP_FAILED.
+ * 
+ * If it failed due to an unrecoverable failure in solve, then we return
+ * the value SOLVE_FAILED.
+ *
+ * Otherwise, a recoverable failure occurred when solving the 
+ * nonlinear system (CVNls returned nflag == CONV_FAIL). 
+ * In this case, we return the value REP_CONV_FAIL if ncf is now
+ * equal to maxncf or |h| = hmin. 
+ * If not, we set *nflagPtr = PREV_CONV_FAIL and return the value
+ * PREDICT_AGAIN, telling CVStep to reattempt the step.
+ */
+
+static int CVHandleNFlag(CVodeMem cv_mem, int *nflagPtr, realtype saved_t,
+                         int *ncfPtr, long int *ncfnPtr)
+{
+  int nflag;
+  
+  nflag = *nflagPtr;
+  
+  if (nflag == SOLVED) return (DO_ERROR_TEST);
+
+  /* The nonlinear soln. failed; increment ncfn and restore zn */
+  (*ncfnPtr)++;
+  CVRestore(cv_mem, saved_t);
+  
+  /* Return if lsetup or lsolve failed unrecoverably */
+  if (nflag == SETUP_FAIL_UNREC) return (SETUP_FAILED);
+  if (nflag == SOLVE_FAIL_UNREC) return (SOLVE_FAILED);
+  
+  /* At this point, nflag == CONV_FAIL; increment ncf */
+  
+  (*ncfPtr)++;
+  etamax = ONE;
+  /* If we had maxncf failures or |h| = hmin, return REP_CONV_FAIL */
+  if ((ABS(h) <= hmin*ONEPSM) || (*ncfPtr == maxncf))
+    return (REP_CONV_FAIL);
+
+  /* Reduce step size; return to reattempt the step */
+  eta = MAX(ETACF, hmin / ABS(h));
+  *nflagPtr = PREV_CONV_FAIL;
+  CVRescale(cv_mem);
+  return (PREDICT_AGAIN);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVRestore
+ *
+ * This routine restores the value of tn to saved_t and undoes the
+ * prediction.  After execution of CVRestore, the Nordsieck array zn has
+ * the same values as before the call to CVPredict.
+ */
+
+static void CVRestore(CVodeMem cv_mem, realtype saved_t)
+{
+  int j, k;
+  int is;
+
+  tn = saved_t;
+  for (k = 1; k <= q; k++)
+    for (j = q; j >= k; j--)
+      N_VLinearSum(ONE, zn[j-1], -ONE, zn[j], zn[j-1]);
+
+  if (quadr) {
+    for (k = 1; k <= q; k++)
+      for (j = q; j >= k; j--)
+        N_VLinearSum(ONE, znQ[j-1], -ONE, znQ[j], znQ[j-1]);
+  }
+
+  if (sensi) {
+    for (is=0; is<Ns; is++) {
+      for (k = 1; k <= q; k++)
+        for (j = q; j >= k; j--)
+          N_VLinearSum(ONE, znS[j-1][is], -ONE, znS[j][is], znS[j-1][is]);
+    }
+  }
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVDoErrorTest
+ *
+ * This routine performs the local error test. 
+ * The weighted local error norm dsm is loaded into *dsmPtr, and 
+ * the test dsm ?<= 1 is made.
+ *
+ * If the test passes, CVDoErrorTest returns TRUE. 
+ *
+ * If the test fails, we undo the step just taken (call CVRestore), 
+ * set *nflagPtr to PREV_ERR_FAIL, and return FALSE. 
+ *
+ * If maxnef error test failures have occurred or if ABS(h) = hmin,
+ * we set *kflagPtr = REP_ERR_FAIL. (Otherwise *kflagPtr has the
+ * value last returned by CVHandleNFlag.)
+ *
+ * If more than MXNEF1 error test failures have occurred, an order
+ * reduction is forced. If already at order 1 restart by reloading 
+ * zn from scratch. Note that if sensitivities are computed, znS is
+ * also reloaded, no matter what 'ism' or 'errconS' are. Same for 
+ * quadratures.
+ */
+
+static booleantype CVDoErrorTest(CVodeMem cv_mem, int *nflagPtr, 
+                                 int *kflagPtr, realtype saved_t, 
+                                 int *nefPtr, realtype *dsmPtr)
+{
+  realtype dsm;
+  int is;
+  N_Vector wrk1, wrk2;
+
+  dsm = acnrm / tq[2];
+
+  /* If est. local error norm dsm passes test, return TRUE */  
+  *dsmPtr = dsm; 
+  if (dsm <= ONE) return (TRUE);
+  
+  /* Test failed; increment counters, set nflag, and restore zn array */
+  (*nefPtr)++;
+  netf++;
+  *nflagPtr = PREV_ERR_FAIL;
+  CVRestore(cv_mem, saved_t);
+
+  /* At maxnef failures or |h| = hmin, return with kflag = REP_ERR_FAIL */
+  if ((ABS(h) <= hmin*ONEPSM) || (*nefPtr == maxnef)) {
+    *kflagPtr = REP_ERR_FAIL;
+    return (FALSE);
+  }
+
+  /* Set etamax = 1 to prevent step size increase at end of this step */
+  etamax = ONE;
+
+  /* Set h ratio eta from dsm, rescale, and return for retry of step */
+  if (*nefPtr <= MXNEF1) {
+    eta = ONE / (RPowerR(BIAS2*dsm,ONE/L) + ADDON);
+    eta = MAX(ETAMIN, MAX(eta, hmin / ABS(h)));
+    if (*nefPtr >= SMALL_NEF) eta = MIN(eta, ETAMXF);
+    CVRescale(cv_mem);
+    return (FALSE);
+  }
+  
+  /* After MXNEF1 failures, force an order reduction and retry step */
+  if (q > 1) {
+    eta = MAX(ETAMIN, hmin / ABS(h));
+    CVAdjustOrder(cv_mem,-1);
+    L = q;
+    q--;
+    qwait = L;
+    CVRescale(cv_mem);
+    return (FALSE);
+  }
+
+  /* If already at order 1, restart: reload zn from scratch */
+  eta = MAX(ETAMIN, hmin / ABS(h));
+  h *= eta;
+  hscale = h;
+  qwait = LONG_WAIT;
+  nscon = 0;
+
+  f(tn, zn[0], tempv, f_data);
+  nfe++;
+  N_VScale(h, tempv, zn[1]);
+
+  if (quadr) {
+    fQ(tn, zn[0], tempvQ, fQ_data);
+    nfQe++;
+    N_VScale(h, tempvQ, znQ[1]);
+  }
+
+  if (sensi) {
+    wrk1 = ftemp;
+    wrk2 = ftempS[0];
+    CVSensRhs(cv_mem, tn, zn[0], tempv, znS[0], tempvS, wrk1, wrk2);
+    for (is=0; is<Ns; is++) 
+      N_VScale(h, tempvS[is], znS[1][is]);
+  }
+  
+  return (FALSE);
+}
+
+/*-----------------------------------------------------------------*/
+
+static booleantype CVQuadDoErrorTest(CVodeMem cv_mem, int *nflagPtr, 
+                                     int *kflagPtr, realtype saved_t, 
+                                     int *nefQPtr, realtype *dsmQPtr)
+{
+  realtype dsmQ;
+  int is;
+  N_Vector wrk1, wrk2;
+
+  dsmQ = acnrmQ / tq[2];
+
+  /* If dsmQ passes the test, return TRUE */
+  *dsmQPtr = dsmQ; 
+  if (dsmQ <= ONE) return (TRUE);
+
+  /* Test failed; increment counters, set nflag, and restore zn array */
+  (*nefQPtr)++;
+  netfQ++;
+  *nflagPtr = PREV_ERR_FAIL;
+  CVRestore(cv_mem, saved_t);
+
+  /* At maxnef failures or |h| = hmin, return with kflag = REP_ERR_FAIL */
+  if ((ABS(h) <= hmin*ONEPSM) || (*nefQPtr == maxnef)) {
+    *kflagPtr = REP_ERR_FAIL;
+    return (FALSE);
+  }
+
+  /* Set etamax = 1 to prevent step size increase at end of this step */
+  etamax = ONE;
+
+  /* Set h ratio eta from dsmQ, rescale, and return for retry of step */
+  if (*nefQPtr <= MXNEF1) {
+    eta = ONE / (RPowerR(BIAS2*dsmQ,ONE/L) + ADDON);
+    eta = MAX(ETAMIN, MAX(eta, hmin / ABS(h)));
+    if (*nefQPtr >= SMALL_NEF) eta = MIN(eta, ETAMXF);
+    CVRescale(cv_mem);
+    return (FALSE);
+  }
+
+  /* After MXNEF1 failures, force an order reduction and retry step */
+  if (q > 1) {
+    eta = MAX(ETAMIN, hmin / ABS(h));
+    CVAdjustOrder(cv_mem,-1);
+    L = q;
+    q--;
+    qwait = L;
+    CVRescale(cv_mem);
+    return (FALSE);
+  }
+
+  /* If already at order 1, restart: reload zn and znQ from scratch */
+  eta = MAX(ETAMIN, hmin / ABS(h));
+  h *= eta;
+  hscale = h;
+  qwait = LONG_WAIT;
+  nscon = 0;
+
+  f(tn, zn[0], tempv, f_data);
+  nfe++;
+  N_VScale(h, tempv, zn[1]);
+
+  fQ(tn, zn[0], tempvQ, fQ_data);
+  nfQe++;
+  N_VScale(h, tempvQ, znQ[1]);
+
+  if (sensi) {
+    wrk1 = ftemp;
+    wrk2 = ftempS[0];
+    CVSensRhs(cv_mem, tn, zn[0], tempv, znS[0], tempvS, wrk1, wrk2);
+    for (is=0; is<Ns; is++) 
+      N_VScale(h, tempvS[is], znS[1][is]);
+  }
+  
+  return (FALSE);
+
+}
+
+/*=================================================================*/
+/*             Routines for CV_STAGGERED and CV_STAGGERED1         */
+/*=================================================================*/
+
+/*
+ * CVStgrNls
+ *
+ * This is a high-level routine that attempts to solve the 
+ * sensitivity linear systems using nonlinear iterations (CV_FUNCTIONAL
+ * or CV_NEWTON - depending on the value of iter) once the states y_n
+ * were obtained and passed the error test.
+ */
+
+static int CVStgrNls(CVodeMem cv_mem)
+{
+  int flag=SOLVED;
+
+  switch(iter) {
+  case CV_FUNCTIONAL: 
+    flag = CVStgrNlsFunctional(cv_mem);
+    break;
+  case CV_NEWTON:     
+    flag = CVStgrNlsNewton(cv_mem);
+    break;
+  }
+
+  return(flag);
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVStgrNlsfunctionsl
+ *
+ * This routine attempts to solve the sensitivity linear systems 
+ * using functional iteration (no matrices involved).
+ *
+ * Possible return values:
+ *  SOLVED
+ *  CONV_FAIL
+ */
+
+static int CVStgrNlsFunctional(CVodeMem cv_mem)
+{
+  int m;
+  int is;
+  realtype Del, Delp, dcon;
+  N_Vector wrk1, wrk2;
+
+  /* Initialize estimated conv. rate and counter */
+  crateS = ONE;
+  m = 0;
+
+  /* Evaluate fS at predicted yS but with converged y (and corresponding f) */
+  wrk1 = tempv;
+  wrk2 = ftempS[0];
+  CVSensRhs(cv_mem, tn, y, ftemp, znS[0], tempvS, wrk1, wrk2);
+
+  /* Initialize correction to zero */
+  for (is=0; is<Ns; is++)
+    N_VConst(ZERO,acorS[is]);
+
+  /* Loop until convergence; accumulate corrections in acorS */
+
+  loop {
+    
+    nniS++;
+    
+    /* Correct yS from last fS value */
+    for (is=0; is<Ns; is++) {
+      N_VLinearSum(h, tempvS[is], -ONE, znS[1][is], tempvS[is]);
+      N_VScale(rl1, tempvS[is], tempvS[is]);
+      N_VLinearSum(ONE, znS[0][is], ONE, tempvS[is], yS[is]);
+    }
+    /* Get norm of current correction to use in convergence test */
+    for (is=0; is<Ns; is++)
+      N_VLinearSum(ONE, tempvS[is], -ONE, acorS[is], acorS[is]);
+    Del = CVSensNorm(cv_mem, acorS, ewtS);
+    for (is=0; is<Ns; is++)
+      N_VScale(ONE, tempvS[is], acorS[is]);
+
+    /* Test for convergence.  If m > 0, an estimate of the convergence
+       rate constant is stored in crateS, and used in the test. 
+       acnrmS contains the norm of the corrections (yS_n-yS_n(0)) and
+       will be used in the error test (if errconS==TRUE)              */
+    if (m > 0) crateS = MAX(CRDOWN * crateS, Del / Delp);
+    dcon = Del * MIN(ONE, crateS) / tq[4];
+    
+    if (dcon <= ONE) {
+      if (errconS)
+        acnrmS = (m==0)? Del : CVSensNorm(cv_mem, acorS, ewtS);
+      return (SOLVED);  /* Convergence achieved */
+    }
+
+    /* Stop at maxcor iterations or if iter. seems to be diverging */
+    m++;
+    if ((m==maxcorS) || ((m >= 2) && (Del > RDIV * Delp)))
+      return (CONV_FAIL);
+
+    /* Save norm of correction, evaluate f, and loop again */
+    Delp = Del;
+
+    wrk1 = tempv;
+    wrk2 = ftempS[0];
+    CVSensRhs(cv_mem, tn, y, ftemp, yS, tempvS, wrk1, wrk2);
+
+  } /* end loop */
+  
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVStgrNlsNewton
+ *
+ * This routine attempts to solve the sensitivity linear systems using 
+ * Newton iteration. It calls CVStgrNlsNewton to perform the actual 
+ * iteration. If the Newton iteration fails with out-of-date Jacobian 
+ * data (ier=TRY_AGAIN), it calls lsetup and retries the Newton iteration. 
+ * This second try is unlikely to happen when using a Krylov linear solver.
+ *
+ * Possible return values:
+ *   SOLVED
+ *   CONV_FAIL
+ *   SOLVE_FAIL_UNREC
+ *   SETUP_FAIL_UNREC
+ */
+
+static int CVStgrNlsNewton(CVodeMem cv_mem)
+{
+  int is;
+  int convfail, ier;
+  booleantype callSetup;
+  N_Vector vtemp1, vtemp2, vtemp3, wrk1, wrk2;
+
+  callSetup = FALSE;
+
+  loop {
+
+    /* Set acorS to zero and load prediction into yS vector */
+    for (is=0; is<Ns; is++) {
+      N_VConst(ZERO, acorS[is]);
+      N_VScale(ONE, znS[0][is], yS[is]);
+    }
+ 
+    /* Evaluate fS at predicted yS but with converged y (and corresponding f) */
+    wrk1 = tempv;
+    wrk2 = tempvS[0];
+    CVSensRhs(cv_mem, tn, y, ftemp, yS, ftempS, wrk1, wrk2);
+    
+    /* Do the Newton iteration */
+    ier = CVStgrNewtonIteration(cv_mem);
+
+    /* If the solve was successful (ier=SOLVED) or if an error 
+       that cannot be fixed by a call to lsetup occured
+       (ier = SOLVE_FAIL_UNREC or CONV_FAIL) return */
+    if (ier != TRY_AGAIN) return (ier);
+
+    /* There was a convergence failure and the Jacobian-related data
+       appears not to be current. Call lsetup with convfail=CV_FAIL_BAD_J
+       and then loop again */
+    callSetup = TRUE;
+    convfail = CV_FAIL_BAD_J;
+
+    /* Rename some vectors for readibility */
+    vtemp1 = tempv;
+    vtemp2 = yS[0];
+    vtemp3 = ftempS[0];
+
+    /* Call linear solver setup at converged y */
+    ier = lsetup(cv_mem, convfail, y, ftemp, &jcur, 
+                 vtemp1, vtemp2, vtemp3);
+    nsetups++;
+    nsetupsS++;
+    gamrat = ONE;
+    gammap = gamma;
+    crate = ONE;
+    crateS = ONE; /* after lsetup all conv. rates are reset to ONE */
+    nstlp = nst;
+
+    /* Return if lsetup failed */
+    if (ier < 0) return (SETUP_FAIL_UNREC);
+    if (ier > 0) return (CONV_FAIL);
+
+  } /* end loop */
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVstgrNewtonIteration
+ *
+ * This routine performs the Newton iteration for all sensitivities. 
+ * If the iteration succeeds, it returns the value SOLVED. 
+ * If not, it may signal the CVStgrNlsNewton routine to call lsetup and 
+ * reattempt the iteration, by returning the value TRY_AGAIN. (In this case, 
+ * CVStgrNlsNewton must set convfail to CV_FAIL_BAD_J before calling setup again). 
+ * Otherwise, this routine returns one of the appropriate values 
+ * SOLVE_FAIL_UNREC or CONV_FAIL back to CVStgrNlsNewton.
+ */
+
+static int CVStgrNewtonIteration(CVodeMem cv_mem)
+{
+  int m, ret;
+  realtype Del, Delp, dcon;
+  N_Vector *bS, wrk1, wrk2;
+  int is;
+
+  m = 0;
+
+  /* ftemp  <- f(t_n, y_n)
+     y      <- y_n
+     ftempS <- fS(t_n, y_n(0), s_n(0))
+     acorS  <- 0
+     yS     <- yS_n(0)                   */
+
+  loop {
+
+    /* Evaluate the residual of the nonlinear systems */
+    for (is=0; is<Ns; is++) {
+      N_VLinearSum(rl1, znS[1][is], ONE, acorS[is], tempvS[is]);
+      N_VLinearSum(gamma, ftempS[is], -ONE, tempvS[is], tempvS[is]);
+    }
+
+    /* Call the lsolve function */
+    bS = tempvS;
+    nniS++;
+    for (is=0; is<Ns; is++) {
+
+      ret = lsolve(cv_mem, bS[is], ewtS[is], y, ftemp);
+
+      /* Unrecoverable error in lsolve */
+      if (ret < 0) return (SOLVE_FAIL_UNREC);
+
+      /* Recoverable error in lsolve and Jacobian data not current */
+      if (ret > 0) { 
+        if ((!jcur) && (setupNonNull)) return (TRY_AGAIN);
+        return (CONV_FAIL);
+      }
+
+    }
+ 
+    /* Get norm of correction; add correction to acorS and yS */
+    Del = CVSensNorm(cv_mem, bS, ewtS);
+    for (is=0; is<Ns; is++) {
+      N_VLinearSum(ONE, acorS[is], ONE, bS[is], acorS[is]);
+      N_VLinearSum(ONE, znS[0][is], ONE, acorS[is], yS[is]);
+    }
+
+    /* Test for convergence.  If m > 0, an estimate of the convergence
+       rate constant is stored in crateS, and used in the test.        */
+    if (m > 0) crateS = MAX(CRDOWN * crateS, Del/Delp);
+    dcon = Del * MIN(ONE, crateS) / tq[4];
+    if (dcon <= ONE) {
+      if (errconS)
+        acnrmS = (m==0) ? Del : CVSensNorm(cv_mem, acorS, ewtS);
+      jcur = FALSE;
+      return (SOLVED);  /* Convergence achieved */
+    }
+
+    m++;
+
+    /* Stop at maxcor iterations or if iter. seems to be diverging.
+       If still not converged and Jacobian data is not current, 
+       signal to try the solution again                            */
+    if ((m == maxcorS) || ((m >= 2) && (Del > RDIV * Delp))) {
+      if ((!jcur) && (setupNonNull)) return (TRY_AGAIN);
+      return (CONV_FAIL);
+    }
+    
+    /* Save norm of correction, evaluate fS, and loop again */
+    Delp = Del;
+    
+    wrk1 = tempv;
+    wrk2 = tempvS[0];
+    CVSensRhs(cv_mem, tn, y, ftemp, yS, ftempS, wrk1, wrk2);
+    
+  } /* end loop */
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVStgr1Nls
+ *
+ * This is a high-level routine that attempts to solve the i-th 
+ * sensitivity linear system using nonlinear iterations (CV_FUNCTIONAL
+ * or CV_NEWTON - depending on the value of iter) once the states y_n
+ * were obtained and passed the error test.
+ */
+
+static int CVStgr1Nls(CVodeMem cv_mem, int is)
+{
+  int flag=SOLVED;
+
+  switch(iter) {
+  case CV_FUNCTIONAL: 
+    flag = CVStgr1NlsFunctional(cv_mem,is);
+    break;
+  case CV_NEWTON:     
+    flag = CVStgr1NlsNewton(cv_mem,is);
+    break;
+  }
+
+  return(flag);
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVStgr1NlsFunctional
+ *
+ * This routine attempts to solve the i-th sensitivity linear system
+ * using functional iteration (no matrices involved).
+ *
+ * Possible return values:
+ *   SOLVED
+ *   CONV_FAIL
+ */
+
+static int CVStgr1NlsFunctional(CVodeMem cv_mem, int is)
+{
+  int m;
+  realtype Del, Delp, dcon;
+  N_Vector wrk1, wrk2;
+
+  /* Initialize estimated conv. rate and counter */
+  crateS = ONE;
+  m = 0;
+
+  /* Evaluate fS at predicted yS but with converged y (and corresponding f) */
+  wrk1 = tempv;
+  wrk2 = ftempS[0];
+  CVSensRhs1(cv_mem, tn, y, ftemp, is, znS[0][is], tempvS[is], wrk1, wrk2);
+
+  /* Initialize correction to zero */
+  N_VConst(ZERO,acorS[is]);
+
+  /* Loop until convergence; accumulate corrections in acorS */
+
+  loop {
+
+    nniS1[is]++;
+
+    /* Correct yS from last fS value */
+    N_VLinearSum(h, tempvS[is], -ONE, znS[1][is], tempvS[is]);
+    N_VScale(rl1, tempvS[is], tempvS[is]);
+    N_VLinearSum(ONE, znS[0][is], ONE, tempvS[is], yS[is]);
+
+    /* Get WRMS norm of current correction to use in convergence test */
+    N_VLinearSum(ONE, tempvS[is], -ONE, acorS[is], acorS[is]);
+    Del = N_VWrmsNorm(acorS[is], ewtS[is]);
+    N_VScale(ONE, tempvS[is], acorS[is]);
+
+    /* Test for convergence.  If m > 0, an estimate of the convergence
+       rate constant is stored in crateS, and used in the test. */
+
+    if (m > 0) crateS = MAX(CRDOWN * crateS, Del / Delp);
+    dcon = Del * MIN(ONE, crateS) / tq[4];
+
+    if (dcon <= ONE) {
+      return (SOLVED);  /* Convergence achieved */
+    }
+
+    /* Stop at maxcor iterations or if iter. seems to be diverging */
+    m++;
+    if ((m==maxcorS) || ((m >= 2) && (Del > RDIV * Delp)))
+      return (CONV_FAIL);
+
+    /* Save norm of correction, evaluate f, and loop again */
+    Delp = Del;
+
+    wrk1 = tempv;
+    wrk2 = ftempS[0];
+    CVSensRhs1(cv_mem, tn, y, ftemp, is, yS[is], tempvS[is], wrk1, wrk2);
+
+  } /* end loop */
+  
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVStgr1NlsNewton
+ *
+ * This routine attempts to solve the i-th sensitivity linear system 
+ * using Newton iteration. It calls CVStgr1NlsNewton to perform the 
+ * actual iteration. If the Newton iteration fails with out-of-date 
+ * Jacobian data (ier=TRY_AGAIN), it calls lsetup and retries the 
+ * Newton iteration. This second try is unlikely to happen when 
+ * using a Krylov linear solver.
+ *
+ * Possible return values:
+ *   SOLVED
+ *   CONV_FAIL
+ *   SOLVE_FAIL_UNREC
+ *   SETUP_FAIL_UNREC
+ */
+
+static int CVStgr1NlsNewton(CVodeMem cv_mem, int is)
+{
+  int convfail, ier;
+  booleantype callSetup;
+  N_Vector vtemp1, vtemp2, vtemp3, wrk1, wrk2;
+
+  callSetup = FALSE;
+
+  loop {
+
+    /* Set acorS to zero and load prediction into yS vector */
+    N_VConst(ZERO, acorS[is]);
+    N_VScale(ONE, znS[0][is], yS[is]);
+ 
+    /* Evaluate fS at predicted yS but with converged y (and corresponding f) */
+    wrk1 = tempv;
+    wrk2 = tempvS[0];
+    CVSensRhs1(cv_mem, tn, y, ftemp, is, yS[is], ftempS[is], wrk1, wrk2);
+    
+    /* Do the Newton iteration */
+    ier = CVStgr1NewtonIteration(cv_mem, is);
+
+    /* If the solve was successful (ier=SOLVED) or if an error 
+       that cannot be fixed by a call to lsetup occured
+       (ier = SOLVE_FAIL_UNREC or CONV_FAIL) return */
+    if (ier != TRY_AGAIN) return (ier);
+
+    /* There was a convergence failure and the Jacobian-related data
+       appears not to be current. Call lsetup with convfail=CV_FAIL_BAD_J
+       and then loop again */
+    callSetup = TRUE;
+    convfail = CV_FAIL_BAD_J;
+
+    /* Rename some vectors for readibility */
+    vtemp1 = tempv;
+    vtemp2 = yS[0];
+    vtemp3 = ftempS[0];
+
+    /* Call linear solver setup at converged y */
+    ier = lsetup(cv_mem, convfail, y, ftemp, &jcur, 
+                 vtemp1, vtemp2, vtemp3);
+    nsetups++;
+    nsetupsS++;
+    gamrat = ONE;
+    crate = ONE;
+    crateS = ONE; /* after lsetup all conv. rates are reset to ONE */
+    gammap = gamma;
+    nstlp = nst;
+
+    /* Return if lsetup failed */
+    if (ier < 0) return (SETUP_FAIL_UNREC);
+    if (ier > 0) return (CONV_FAIL);
+
+  } /* end loop */
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVStgr1Newtoniteration
+ *
+ * This routine performs the Newton iteration for the i-th sensitivity. 
+ * If the iteration succeeds, it returns the value SOLVED. 
+ * If not, it may signal the CVStgr1NlsNewton routine to call lsetup 
+ * and reattempt the iteration, by returning the value TRY_AGAIN. 
+ * (In this case, CVStgr1NlsNewton must set convfail to CV_FAIL_BAD_J 
+ * before calling setup again). Otherwise, this routine returns one 
+ * of the appropriate values SOLVE_FAIL_UNREC or CONV_FAIL back to 
+ * CVStgr1NlsNewton.
+ */
+
+static int CVStgr1NewtonIteration(CVodeMem cv_mem, int is)
+{
+  int m, ret;
+  realtype Del, Delp, dcon;
+  N_Vector *bS, wrk1, wrk2;
+
+  m = 0;
+
+  /* ftemp      <- f(t_n, y_n)
+     y          <- y_n
+     ftempS[is] <- fS(is, t_n, y_n(0), s_n(0))
+     acorS[is]  <- 0
+     yS[is]     <- yS_n(0)[is]                 */
+
+  loop {
+
+    /* Evaluate the residual of the nonlinear systems */
+    N_VLinearSum(rl1, znS[1][is], ONE, acorS[is], tempvS[is]);
+    N_VLinearSum(gamma, ftempS[is], -ONE, tempvS[is], tempvS[is]);
+
+    /* Call the lsolve function */
+    bS = tempvS;
+
+    nniS1[is]++;
+
+    ret = lsolve(cv_mem, bS[is], ewtS[is], y, ftemp);
+
+    /* Unrecoverable error in lsolve */
+    if (ret < 0) return (SOLVE_FAIL_UNREC);
+
+    /* Recoverable error in lsolve and Jacobian data not current */
+    if (ret > 0) { 
+      if ((!jcur) && (setupNonNull)) return (TRY_AGAIN);
+      return (CONV_FAIL);
+    }
+
+    /* Get norm of correction; add correction to acorS and yS */
+    Del = N_VWrmsNorm(bS[is], ewtS[is]);
+    N_VLinearSum(ONE, acorS[is], ONE, bS[is], acorS[is]);
+    N_VLinearSum(ONE, znS[0][is], ONE, acorS[is], yS[is]);
+
+    /* Test for convergence.  If m > 0, an estimate of the convergence
+       rate constant is stored in crateS, and used in the test.        */
+    if (m > 0) crateS = MAX(CRDOWN * crateS, Del/Delp);
+    dcon = Del * MIN(ONE, crateS) / tq[4];
+    if (dcon <= ONE) {
+      jcur = FALSE;
+      return (SOLVED);  /* Convergence achieved */
+    }
+
+    m++;
+
+    /* Stop at maxcor iterations or if iter. seems to be diverging.
+       If still not converged and Jacobian data is not current, 
+       signal to try the solution again                            */
+    if ((m == maxcorS) || ((m >= 2) && (Del > RDIV * Delp))) {
+      if ((!jcur) && (setupNonNull)) return (TRY_AGAIN);
+      return (CONV_FAIL);
+    }
+
+    /* Save norm of correction, evaluate fS, and loop again */
+    Delp = Del;
+
+    wrk1 = tempv;
+    wrk2 = tempvS[0];
+    CVSensRhs1(cv_mem, tn, y, ftemp, is, yS[is], ftempS[is], wrk1, wrk2);
+
+  } /* end loop */
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/* 
+ * CVStgrDoErrorTest (CV_STAGGERED or CV_STAGGERED1 approach)
+ *
+ * This routine performs the local error test on the sensitivity vars.
+ * The local error norm is loaded into dsmS, and the test dsmS ?<= 1 
+ * is made.
+ *
+ * If the test passes for all sensitivities, CVStgrDoErrorTest returns 
+ * TRUE. 
+ *
+ * If the test fails, we proceed like in CVDoErrorTest.
+ */
+
+static booleantype CVStgrDoErrorTest(CVodeMem cv_mem, int *nflagPtr, 
+                                     int *kflagPtr, realtype saved_t, 
+                                     int *nefSPtr, realtype *dsmSPtr)
+{
+  int is;
+  realtype dsmS;
+  N_Vector wrk1, wrk2;
+
+  dsmS = acnrmS / tq[2];
+
+  /* If dsmS passes test, return TRUE */  
+  *dsmSPtr = dsmS;
+  if (dsmS <= ONE) return (TRUE);
+
+  /* Test failed; increment counters, set nflag, and restore zn, znS arrays */
+  (*nefSPtr)++;
+  netfS++;
+  *nflagPtr = PREV_ERR_FAIL;
+  CVRestore(cv_mem, saved_t);
+  
+  /* At maxnef failures or |h| = hmin, return with nflag = REP_ERR_FAIL */
+  if ((ABS(h) <= hmin*ONEPSM) || ( (*nefSPtr) == maxnef)) {
+    *kflagPtr = REP_ERR_FAIL;
+    return (FALSE);
+  }
+
+  /* Set etamax = 1 to prevent step size increase at end of this step */
+  etamax = ONE;
+  
+  /* Set h ratio eta from dsmS, rescale, and return for retry of step */
+  if ((*nefSPtr) <= MXNEF1) {
+    eta = ONE / (RPowerR(BIAS2*dsmS,ONE/L) + ADDON);
+    eta = MAX(ETAMIN, MAX(eta, hmin / ABS(h)));
+    if ( (*nefSPtr) >= SMALL_NEF) eta = MIN(eta, ETAMXF);
+    CVRescale(cv_mem);
+    return (FALSE);
+  }
+
+  /* After MXNEF1 failures, force an order reduction and retry step */
+  if (q > 1) {
+    eta = MAX(ETAMIN, hmin / ABS(h));
+    CVAdjustOrder(cv_mem,-1);
+    L = q;
+    q--;
+    qwait = L;
+    CVRescale(cv_mem);
+    return (FALSE);
+  }
+  
+  /* If already at order 1, restart: reload zn from scratch */
+  eta = MAX(ETAMIN, hmin / ABS(h));
+  h *= eta;
+  hscale = h;
+  qwait = LONG_WAIT;
+  nscon = 0;
+  
+  f(tn, zn[0], tempv, f_data);
+  nfe++;
+  N_VScale(h, tempv, zn[1]);
+  
+  if (quadr) {
+    fQ(tn, zn[0], tempvQ, fQ_data);
+    nfQe++;
+    N_VScale(h, tempvQ, znQ[1]);
+  }
+
+  wrk1 = ftemp;
+  wrk2 = ftempS[0];
+  CVSensRhs(cv_mem, tn, zn[0], tempv, znS[0], tempvS, wrk1, wrk2);
+  for (is=0; is<Ns; is++) 
+    N_VScale(h, tempvS[is], znS[1][is]);
+  
+  return (FALSE);
+  
+}
+
+/*=================================================================*/
+/*             Private Routines after succesfull step              */
+/*=================================================================*/
+
+/*
+ * CVCompleteStep
+ *
+ * This routine performs various update operations when the solution
+ * to the nonlinear system has passed the local error test. 
+ * We increment the step counter nst, record the values hu and qu,
+ * update the tau array, and apply the corrections to the zn array.
+ * The tau[i] are the last q values of h, with tau[1] the most recent.
+ * The counter qwait is decremented, and if qwait == 1 (and q < qmax)
+ * we save acor and tq[5] for a possible order increase.
+ */
+
+static void CVCompleteStep(CVodeMem cv_mem)
+{
+  int i, j;
+  int is;
+  
+  nst++;
+  nscon++;
+  hu = h;
+  qu = q;
+
+  for (i=q; i >= 2; i--)  tau[i] = tau[i-1];
+  if ((q==1) && (nst > 1)) tau[2] = tau[1];
+  tau[1] = h;
+
+  /* Apply correction to column j of zn: l_j * Delta_n */
+
+  for (j=0; j <= q; j++) 
+    N_VLinearSum(l[j], acor, ONE, zn[j], zn[j]);
+
+  if (quadr) {
+    for (j=0; j <= q; j++) 
+      N_VLinearSum(l[j], acorQ, ONE, znQ[j], znQ[j]);
+  }
+
+  if (sensi) {
+    for (is=0; is<Ns; is++)
+      for (j=0; j <= q; j++) 
+        N_VLinearSum(l[j], acorS[is], ONE, znS[j][is], znS[j][is]);
+  }
+
+  /* If necessary, store Delta_n in zn[qmax] to be used in order increase
+  
+     This actually will be Delta_{n-1} in the ELTE at q+1 since it happens at
+     the next to last step of order q before a possible one at order q+1
+  */
+
+  qwait--;
+  if ((qwait == 1) && (q != qmax)) {
+    
+    N_VScale(ONE, acor, zn[qmax]);
+    
+    if (quadr)
+      N_VScale(ONE, acorQ, znQ[qmax]);
+
+    if (sensi)
+      for (is=0; is<Ns; is++)
+        N_VScale(ONE, acorS[is], znS[qmax][is]);
+    
+    saved_tq5 = tq[5];
+    
+  }
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVprepareNextStep
+ *
+ * This routine handles the setting of stepsize and order for the
+ * next step -- hprime and qprime.  Along with hprime, it sets the
+ * ratio eta = hprime/h.  It also updates other state variables 
+ * related to a change of step size or order. 
+ */
+
+static void CVPrepareNextStep(CVodeMem cv_mem, realtype dsm)
+{
+  /* If etamax = 1, defer step size or order changes */
+  if (etamax == ONE) {
+    qwait = MAX(qwait, 2);
+    qprime = q;
+    hprime = h;
+    eta = ONE;
+    return;
+  }
+
+  /* etaq is the ratio of new to old h at the current order */  
+  etaq = ONE /(RPowerR(BIAS2*dsm,ONE/L) + ADDON);
+  
+  /* If no order change, adjust eta and acor in CVSetEta and return */
+  if (qwait != 0) {
+    eta = etaq;
+    qprime = q;
+    CVSetEta(cv_mem);
+    return;
+  }
+  
+  /* If qwait = 0, consider an order change.   etaqm1 and etaqp1 are 
+     the ratios of new to old h at orders q-1 and q+1, respectively.
+     CVChooseEta selects the largest; CVSetEta adjusts eta and acor */
+  qwait = 2;
+  etaqm1 = CVComputeEtaqm1(cv_mem);
+  etaqp1 = CVComputeEtaqp1(cv_mem);  
+  CVChooseEta(cv_mem); 
+  CVSetEta(cv_mem);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVsetEta
+ *
+ * This routine adjusts the value of eta according to the various
+ * heuristic limits and the optional input hmax.  It also resets
+ * etamax to be the estimated local error vector.
+ */
+
+static void CVSetEta(CVodeMem cv_mem)
+{
+
+  /* If eta below the threshhold THRESH, reject a change of step size */
+  if (eta < THRESH) {
+    eta = ONE;
+    hprime = h;
+  } else {
+    /* Limit eta by etamax and hmax, then set hprime */
+    eta = MIN(eta, etamax);
+    eta /= MAX(ONE, ABS(h)*hmax_inv*eta);
+    hprime = h * eta;
+    if (qprime < q) nscon = 0;
+  }
+
+  /* Reset etamx for the next step size change, and scale acor */
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVComputeEtaqm1
+ *
+ * This routine computes and returns the value of etaqm1 for a
+ * possible decrease in order by 1.
+ */
+
+static realtype CVComputeEtaqm1(CVodeMem cv_mem)
+{
+  realtype ddn;
+  
+  etaqm1 = ZERO;
+
+  if (q > 1) {
+
+    ddn = N_VWrmsNorm(zn[q], ewt);
+
+    if ( quadr && errconQ) {
+      ddn = CVQuadUpdateNorm(cv_mem, ddn, znQ[q], ewtQ);
+    }
+
+    if ( sensi && errconS ) {
+      ddn = CVSensUpdateNorm(cv_mem, ddn, znS[q], ewtS);
+    }
+
+    ddn = ddn/tq[1];
+
+    etaqm1 = ONE/(RPowerR(BIAS1*ddn, ONE/q) + ADDON);
+
+  }
+
+  return (etaqm1);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVComputeEtaqp1
+ *
+ * This routine computes and returns the value of etaqp1 for a
+ * possible increase in order by 1.
+ */
+
+static realtype CVComputeEtaqp1(CVodeMem cv_mem)
+{
+  realtype dup, cquot;
+  int is;
+  
+  etaqp1 = ZERO;
+
+  if (q != qmax) {
+
+    cquot = (tq[5] / saved_tq5) * RPowerI(h/tau[2], L);
+
+    N_VLinearSum(-cquot, zn[qmax], ONE, acor, tempv);
+
+    dup = N_VWrmsNorm(tempv, ewt);
+
+    if ( quadr && errconQ ) {
+      N_VLinearSum(-cquot, znQ[qmax], ONE, acorQ, tempvQ);
+      dup = CVQuadUpdateNorm(cv_mem, dup, tempvQ, ewtQ);
+    }
+
+    if ( sensi && errconS ) {
+      for (is=0; is<Ns; is++) 
+        N_VLinearSum(-cquot, znS[qmax][is], ONE, acorS[is], tempvS[is]);
+      dup = CVSensUpdateNorm(cv_mem, dup, tempvS, ewtS);
+    }
+
+    dup = dup / tq[3];
+
+    etaqp1 = ONE / (RPowerR(BIAS3*dup, ONE/(L+1)) + ADDON);
+
+  }
+
+  return (etaqp1);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVChooseEta
+ * Given etaqm1, etaq, etaqp1 (the values of eta for qprime =
+ * q - 1, q, or q + 1, respectively), this routine chooses the 
+ * maximum eta value, sets eta to that value, and sets qprime to the
+ * corresponding value of q.  If there is a tie, the preference
+ * order is to (1) keep the same order, then (2) decrease the order,
+ * and finally (3) increase the order.  If the maximum eta value
+ * is below the threshhold THRESH, the order is kept unchanged and
+ * eta is set to 1.
+ */
+
+static void CVChooseEta(CVodeMem cv_mem)
+{
+  realtype etam;
+  int is;
+  
+  etam = MAX(etaqm1, MAX(etaq, etaqp1));
+  
+  if (etam < THRESH) {
+    eta = ONE;
+    qprime = q;
+    return;
+  }
+
+  if (etam == etaq) {
+    eta = etaq;
+    qprime = q;
+  } else if (etam == etaqm1) {
+    eta = etaqm1;
+    qprime = q - 1;
+  } else {
+    eta = etaqp1;
+    qprime = q + 1;
+    
+    /* Store Delta_n in zn[qmax] to be used in order increase 
+    
+       This happens at the last step of order q before an increase
+       to order q+1, so it represents Delta_n in the ELTE at q+1
+    */
+    
+    N_VScale(ONE, acor, zn[qmax]);
+    
+    if (quadr && errconQ)
+      N_VScale(ONE, acorQ, znQ[qmax]);
+
+    if (sensi && errconS)
+      for (is=0; is<Ns; is++)
+        N_VScale(ONE, acorS[is], znS[qmax][is]);
+    
+  }
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVHandleFailure
+ *
+ * This routine prints error messages for all cases of failure by
+ * CVStep. It returns to CVode the value that CVode is to return to
+ * the user.
+ */
+
+static int CVHandleFailure(CVodeMem cv_mem, int kflag)
+{
+
+  /* Set imxer to the index of maximum weighted local error */
+  N_VProd(acor, ewt, tempv);
+  N_VAbs(tempv, tempv);
+  
+  /* Depending on kflag, print error message and return error flag */
+  switch (kflag) {
+  case REP_ERR_FAIL:  
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_ERR_FAILS, tn, h);
+    return (CV_ERR_FAILURE);
+  case REP_CONV_FAIL: 
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_CONV_FAILS, tn, h);
+    return (CV_CONV_FAILURE);
+  case SETUP_FAILED:  
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SETUP_FAILED, tn);
+    return (CV_LSETUP_FAIL);
+  case SOLVE_FAILED:  
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SOLVE_FAILED, tn);
+    return (CV_LSOLVE_FAIL);
+  }
+
+  return(0);
+
+}
+
+/*=================================================================*/
+/*             BDF Stability Limit Detection                       */
+/*=================================================================*/
+
+/*
+ * CVBDFStab
+ *
+ * This routine handles the BDF Stability Limit Detection Algorithm
+ * STALD.  It is called if lmm = CV_BDF and the SLDET option is on.
+ * If the order is 3 or more, the required norm data is saved.
+ * If a decision to reduce order has not already been made, and
+ * enough data has been saved, CVsldet is called.  If it signals
+ * a stability limit violation, the order is reduced, and the step
+ * size is reset accordingly.
+ */
+
+void CVBDFStab(CVodeMem cv_mem)
+{
+  int i,k, ldflag, factorial;
+  realtype sq, sqm1, sqm2;
+      
+  /* If order is 3 or greater, then save scaled derivative data,
+     push old data down in i, then add current values to top.    */
+
+  if (q >= 3) {
+    for (k = 1; k <= 3; k++)
+      for (i = 5; i >= 2; i--) 
+        ssdat[i][k] = ssdat[i-1][k]; 
+    factorial = 1;
+    for (i = 1; i <= q-1; i++) factorial *= i;
+    sq = factorial*q*(q+1)*acnrm/tq[5];
+    sqm1 = factorial*q*N_VWrmsNorm(zn[q], ewt);
+    sqm2 = factorial*N_VWrmsNorm(zn[q-1], ewt);
+    ssdat[1][1] = sqm2*sqm2;
+    ssdat[1][2] = sqm1*sqm1;
+    ssdat[1][3] = sq*sq;
+  }  
+
+  if (qprime >= q) {
+
+    /* If order is 3 or greater, and enough ssdat has been saved,
+       nscon >= q+5, then call stability limit detection routine.  */
+
+    if ( (q >= 3) && (nscon >= q+5) ) {
+      ldflag = CVsldet(cv_mem);
+      if (ldflag > 3) {
+        /* A stability limit violation is indicated by
+           a return flag of 4, 5, or 6.
+           Reduce new order.                     */
+        qprime = q-1;
+        eta = etaqm1; 
+        eta = MIN(eta,etamax);
+        eta = eta/MAX(ONE,ABS(h)*hmax_inv*eta);
+        hprime = h*eta;
+        nor = nor + 1;
+      }
+    }
+  }
+  else {
+    /* Otherwise, let order increase happen, and 
+       reset stability limit counter, nscon.     */
+    nscon = 0;
+  }
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVsldet
+ *
+ * This routine detects stability limitation using stored scaled 
+ * derivatives data. CVsldet returns the magnitude of the
+ * dominate characteristic root, rr. The presents of a stability
+ * limit is indicated by rr > "something a little less then 1.0",  
+ * and a positive kflag. This routine should only be called if
+ * order is greater than or equal to 3, and data has been collected
+ * for 5 time steps. 
+ * 
+ * Returned values:
+ *    kflag = 1 -> Found stable characteristic root, normal matrix case
+ *    kflag = 2 -> Found stable characteristic root, quartic solution
+ *    kflag = 3 -> Found stable characteristic root, quartic solution,
+ *                 with Newton correction
+ *    kflag = 4 -> Found stability violation, normal matrix case
+ *    kflag = 5 -> Found stability violation, quartic solution
+ *    kflag = 6 -> Found stability violation, quartic solution,
+ *                 with Newton correction
+ *
+ *    kflag < 0 -> No stability limitation, 
+ *                 or could not compute limitation.
+ *
+ *    kflag = -1 -> Min/max ratio of ssdat too small.
+ *    kflag = -2 -> For normal matrix case, vmax > vrrt2*vrrt2
+ *    kflag = -3 -> For normal matrix case, The three ratios
+ *                  are inconsistent.
+ *    kflag = -4 -> Small coefficient prevents elimination of quartics.  
+ *    kflag = -5 -> R value from quartics not consistent.
+ *    kflag = -6 -> No corrected root passes test on qk values
+ *    kflag = -7 -> Trouble solving for sigsq.
+ *    kflag = -8 -> Trouble solving for B, or R via B.
+ *    kflag = -9 -> R via sigsq[k] disagrees with R from data.
+ */
+
+static int CVsldet(CVodeMem cv_mem)
+{
+  int i, k, j, it, kmin=0, kflag=0;
+  realtype rat[5][4], rav[4], qkr[4], sigsq[4], smax[4], ssmax[4];
+  realtype drr[4], rrc[4],sqmx[4], qjk[4][4], vrat[5], qc[6][4], qco[6][4];
+  realtype rr, rrcut, vrrtol, vrrt2, sqtol, rrtol;
+  realtype smink, smaxk, sumrat, sumrsq, vmin, vmax, drrmax, adrr;
+  realtype small, tem, sqmax, saqk, qp, s, sqmaxk, saqj, sqmin;
+  realtype rsa, rsb, rsc, rsd, rse, rd1a, rd1b, rd1c, rd1d;
+  realtype rd2a, rd2b, rd2c, rd3a, rd3b, cest1, corr1; 
+  realtype ratp, ratm, qfac1, qfac2, bb, rrb;
+
+ /* The following are cutoffs and tolerances used by this routine */
+
+  rrcut  = RCONST(0.98);
+  vrrtol = RCONST(1.0e-4);
+  vrrt2  = RCONST(5.0e-4);
+  sqtol  = RCONST(1.0e-3);
+  rrtol  = RCONST(1.0e-2);
+
+  rr = ZERO;
+
+ /*  Index k corresponds to the degree of the interpolating polynomial. */
+ /*      k = 1 -> q-1          */
+ /*      k = 2 -> q            */
+ /*      k = 3 -> q+1          */
+
+ /*  Index i is a backward-in-time index, i = 1 -> current time, */
+ /*      i = 2 -> previous step, etc    */
+
+ /* get maxima, minima, and variances, and form quartic coefficients  */
+
+  for (k=1; k<=3; k++) {
+    smink = ssdat[1][k];
+    smaxk = ZERO;
+    
+    for (i=1; i<=5; i++) {
+      smink = MIN(smink,ssdat[i][k]);
+      smaxk = MAX(smaxk,ssdat[i][k]);
+    }
+    
+    if (smink < TINY*smaxk) {
+      kflag = -1;  
+      return (kflag);
+    }
+    smax[k] = smaxk;
+    ssmax[k] = smaxk*smaxk;
+    
+    sumrat = ZERO;
+    sumrsq = ZERO;
+    for (i=1; i<=4; i++) {
+      rat[i][k] = ssdat[i][k]/ssdat[i+1][k];
+      sumrat = sumrat + rat[i][k];
+      sumrsq = sumrsq + rat[i][k]*rat[i][k];
+    } 
+    rav[k] = FOURTH*sumrat;
+    vrat[k] = ABS(FOURTH*sumrsq - rav[k]*rav[k]);
+      
+    qc[5][k] = ssdat[1][k]*ssdat[3][k] - ssdat[2][k]*ssdat[2][k];
+    qc[4][k] = ssdat[2][k]*ssdat[3][k] - ssdat[1][k]*ssdat[4][k];
+    qc[3][k] = ZERO;
+    qc[2][k] = ssdat[2][k]*ssdat[5][k] - ssdat[3][k]*ssdat[4][k];
+    qc[1][k] = ssdat[4][k]*ssdat[4][k] - ssdat[3][k]*ssdat[5][k];
+    
+    for (i=1; i<=5; i++) {
+      qco[i][k] = qc[i][k];
+    }
+  }                            /* End of k loop */
+  
+  /* Isolate normal or nearly-normal matrix case. Three quartic will
+     have common or nearly-common roots in this case. 
+     Return a kflag = 1 if this procedure works. If three root 
+     differ more than vrrt2, return error kflag = -3.    */
+  
+  vmin = MIN(vrat[1],MIN(vrat[2],vrat[3]));
+  vmax = MAX(vrat[1],MAX(vrat[2],vrat[3]));
+  
+  if (vmin < vrrtol*vrrtol) {
+
+    if (vmax > vrrt2*vrrt2) {
+      kflag = -2;  
+      return (kflag);
+    } else {
+      rr = (rav[1] + rav[2] + rav[3])/THREE;
+      drrmax = ZERO;
+      for (k = 1;k<=3;k++) {
+        adrr = ABS(rav[k] - rr);
+        drrmax = MAX(drrmax, adrr);
+      }
+      if (drrmax > vrrt2)
+        kflag = -3;    
+      kflag = 1;
+      /*  can compute charactistic root, drop to next section   */
+    }
+
+  } else {
+      
+      /* use the quartics to get rr. */
+      
+      if (ABS(qco[1][1]) < TINY*ssmax[1]) {
+        small = qco[1][1];
+        kflag = -4;    
+        return (kflag);
+      }
+      
+      tem = qco[1][2]/qco[1][1];
+      for (i=2; i<=5; i++) {
+        qco[i][2] = qco[i][2] - tem*qco[i][1];
+      }
+      
+      qco[1][2] = ZERO;
+      tem = qco[1][3]/qco[1][1];
+      for (i=2; i<=5; i++) {
+        qco[i][3] = qco[i][3] - tem*qco[i][1];
+      }
+      qco[1][3] = ZERO;
+      
+      if (ABS(qco[2][2]) < TINY*ssmax[2]) {
+        small = qco[2][2];
+        kflag = -4;    
+        return (kflag);
+      }
+      
+      tem = qco[2][3]/qco[2][2];
+      for (i=3; i<=5; i++) {
+        qco[i][3] = qco[i][3] - tem*qco[i][2];
+      }
+      
+      if (ABS(qco[4][3]) < TINY*ssmax[3]) {
+        small = qco[4][3];
+        kflag = -4;    
+        return (kflag);
+      }
+      
+      rr = -qco[5][3]/qco[4][3];
+      
+      if (rr < TINY || rr > HUN) {
+        kflag = -5;   
+        return (kflag);
+      }
+      
+      for (k=1; k<=3; k++) {
+        qkr[k] = qc[5][k] + rr*(qc[4][k] + rr*rr*(qc[2][k] + rr*qc[1][k]));
+      }  
+      
+      sqmax = ZERO;
+      for (k=1; k<=3; k++) {
+        saqk = ABS(qkr[k])/ssmax[k];
+        if (saqk > sqmax) sqmax = saqk;
+      } 
+      
+      if (sqmax < sqtol) {
+        kflag = 2;
+        
+        /*  can compute charactistic root, drop to "given rr,etc"   */
+        
+      } else {
+          
+        /* do Newton corrections to improve rr.  */
+        
+        for (it=1; it<=3; it++) {
+          for (k=1; k<=3; k++) {
+            qp = qc[4][k] + rr*rr*(THREE*qc[2][k] + rr*FOUR*qc[1][k]);
+            drr[k] = ZERO;
+            if (ABS(qp) > TINY*ssmax[k]) drr[k] = -qkr[k]/qp;
+            rrc[k] = rr + drr[k];
+          } 
+          
+          for (k=1; k<=3; k++) {
+            s = rrc[k];
+            sqmaxk = ZERO;
+            for (j=1; j<=3; j++) {
+              qjk[j][k] = qc[5][j] + s*(qc[4][j] + 
+                                        s*s*(qc[2][j] + s*qc[1][j]));
+              saqj = ABS(qjk[j][k])/ssmax[j];
+              if (saqj > sqmaxk) sqmaxk = saqj;
+            } 
+            sqmx[k] = sqmaxk;
+          } 
+              
+          sqmin = sqmx[1] + ONE;
+          for (k=1; k<=3; k++) {
+            if (sqmx[k] < sqmin) {
+              kmin = k;
+              sqmin = sqmx[k];
+            }
+          } 
+          rr = rrc[kmin];
+              
+          if (sqmin < sqtol) {
+            kflag = 3;
+            /*  can compute charactistic root   */
+            /*  break out of Newton correction loop and drop to "given rr,etc" */ 
+            break;
+          } else {
+            for (j=1; j<=3; j++) {
+              qkr[j] = qjk[j][kmin];
+            }
+          }     
+        } /*  end of Newton correction loop  */ 
+          
+        if (sqmin > sqtol) {
+          kflag = -6;
+          return (kflag);
+        }
+      } /*  end of if (sqmax < sqtol) else   */
+  } /*  end of if (vmin < vrrtol*vrrtol) else, quartics to get rr. */
+  
+  /* given rr, find sigsq[k] and verify rr.  */
+  /* All positive kflag drop to this section  */
+  
+  for (k=1; k<=3; k++) {
+    rsa = ssdat[1][k];
+    rsb = ssdat[2][k]*rr;
+    rsc = ssdat[3][k]*rr*rr;
+    rsd = ssdat[4][k]*rr*rr*rr;
+    rse = ssdat[5][k]*rr*rr*rr*rr;
+    rd1a = rsa - rsb;
+    rd1b = rsb - rsc;
+    rd1c = rsc - rsd;
+    rd1d = rsd - rse;
+    rd2a = rd1a - rd1b;
+    rd2b = rd1b - rd1c;
+    rd2c = rd1c - rd1d;
+    rd3a = rd2a - rd2b;
+    rd3b = rd2b - rd2c;
+    
+    if (ABS(rd1b) < TINY*smax[k]) {
+      kflag = -7;
+      return (kflag);
+    }
+    
+    cest1 = -rd3a/rd1b;
+    if (cest1 < TINY || cest1 > FOUR) {
+      kflag = -7;
+      return (kflag);
+    }
+    corr1 = (rd2b/cest1)/(rr*rr);
+    sigsq[k] = ssdat[3][k] + corr1;
+  }
+  
+  if (sigsq[2] < TINY) {
+    kflag = -8;
+    return (kflag);
+  }
+  
+  ratp = sigsq[3]/sigsq[2];
+  ratm = sigsq[1]/sigsq[2];
+  qfac1 = FOURTH*(q*q - ONE);
+  qfac2 = TWO/(q - ONE);
+  bb = ratp*ratm - ONE - qfac1*ratp;
+  tem = ONE - qfac2*bb;
+  
+  if (ABS(tem) < TINY) {
+    kflag = -8;
+    return (kflag);
+  }
+  
+  rrb = ONE/tem;
+  
+  if (ABS(rrb - rr) > rrtol) {
+    kflag = -9;
+    return (kflag);
+  }
+  
+  /* Check to see if rr is above cutoff rrcut  */
+  if (rr > rrcut) {
+    if (kflag == 1) kflag = 4;
+    if (kflag == 2) kflag = 5;
+    if (kflag == 3) kflag = 6;
+  }
+  
+  /* All positive kflag returned at this point  */
+  
+  return (kflag);
+  
+}
+
+/*=================================================================*/
+/*             Root finding                                        */
+/*=================================================================*/
+
+
+/*-----------------------------------------------------------------*/
+
+/* 
+ * CVRcheck1
+ *
+ * This routine completes the initialization of rootfinding memory
+ * information, and checks whether g has a zero both at and very near
+ * the initial point of the IVP.
+ *
+ * This routine returns an int equal to:
+ *  INITROOT = -1 if a close pair of zeros was found, and
+ *  CV_SUCCESS     =  0 otherwise.
+ */
+
+static int CVRcheck1(CVodeMem cv_mem)
+{
+  int i;
+  realtype smallh, hratio;
+  booleantype zroot;
+
+  for (i = 0; i < nrtfn; i++) iroots[i] = 0;
+  tlo = tn;
+  ttol = (ABS(tn) + ABS(h))*uround*HUN;
+
+  /* Evaluate g at initial t and check for zero values. */
+  gfun (tlo, zn[0], glo, g_data);
+  nge = 1;
+  zroot = FALSE;
+  for (i = 0; i < nrtfn; i++) {
+    if (ABS(glo[i]) == ZERO) zroot = TRUE;
+  }
+  if (!zroot) return(CV_SUCCESS);
+
+  /* Some g_i is zero at t0; look at g at t0+(small increment). */
+  smallh = (h > ZERO) ? ttol : -ttol;
+  tlo += smallh;
+  hratio = smallh/h;
+  N_VLinearSum(ONE, zn[0], hratio, zn[1], y);
+  gfun (tlo, y, glo, g_data);  nge++;
+  zroot = FALSE;
+  for (i = 0; i < nrtfn; i++) {
+    if (ABS(glo[i]) == ZERO) {
+      zroot = TRUE;
+      iroots[i] = 1;
+    }
+  }
+  if (zroot) return(INITROOT);
+  return(CV_SUCCESS);
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVRcheck2
+ *
+ * This routine checks for exact zeros of g at the last root found,
+ * if the last return was a root.  It then checks for a close
+ * pair of zeros (an error condition), and for a new root at a
+ * nearby point.  The left endpoint (tlo) of the search interval
+ * is adjusted if necessary to assure that all g_i are nonzero
+ * there, before returning to do a root search in the interval.
+ *
+ * On entry, tlo = tretlast is the last value of tret returned by
+ * CVode.  This may be the previous tn, the previous tout value, or
+ * the last root location.
+ *
+ * This routine returns an int equal to:
+ *      CLOSERT = -2 if a close pair of zeros was found,
+ *      RTFOUND =  1 if a new zero of g was found near tlo, or
+ *      CV_SUCCESS    =  0 otherwise.
+ */
+
+static int CVRcheck2(CVodeMem cv_mem)
+{
+  int i;
+  realtype smallh, hratio;
+  booleantype zroot;
+
+  if (irfnd == 0) return (CV_SUCCESS);
+
+  (void) CVodeGetDky(cv_mem, tlo, 0, y);
+  gfun (tlo, y, glo, g_data);  nge++;
+  zroot = FALSE;
+  for (i = 0; i < nrtfn; i++) iroots[i] = 0;
+  for (i = 0; i < nrtfn; i++) {
+    if (ABS(glo[i]) == ZERO) {
+      zroot = TRUE;
+      iroots[i] = 1;
+    }
+  }
+  if (!zroot) return(CV_SUCCESS);
+
+  /* One or more g_i has a zero at tlo.  Check g at tlo+smallh. */
+  ttol = (ABS(tn) + ABS(h))*uround*HUN;
+  smallh = (h > ZERO) ? ttol : -ttol;
+  tlo += smallh;
+  if ( (tlo - tn)*h >= ZERO) {
+    hratio = smallh/h;
+    N_VLinearSum(ONE, y, hratio, zn[1], y);
+  } else {
+    (void) CVodeGetDky(cv_mem, tlo, 0, y);
+  }
+  gfun (tlo, y, glo, g_data);  nge++;
+  zroot = FALSE;
+  for (i = 0; i < nrtfn; i++) {
+    if (ABS(glo[i]) == ZERO) {
+      if (iroots[i] == 1) return(CLOSERT);
+      zroot = TRUE;
+      iroots[i] = 1;
+    }
+  }
+  if (zroot) return(RTFOUND);
+  return(CV_SUCCESS);
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVRcheck3
+ *
+ * This routine interfaces to CVRootfind to look for a root of g
+ * between tlo and either tn or tout, whichever comes first.
+ * Only roots beyond tlo in the direction of integration are sought.
+ *
+ * This routine returns an int equal to:
+ *      RTFOUND =  1 if a root of g was found, or
+ *      CV_SUCCESS    =  0 otherwise.
+ */
+
+static int CVRcheck3(CVodeMem cv_mem)
+{
+  int i, ier;
+
+  /* Set thi = tn or tout, whichever comes first; set y = y(thi). */
+  if (taskc == CV_ONE_STEP) {
+    thi = tn;
+    N_VScale(ONE, zn[0], y);
+  }
+  if (taskc == CV_NORMAL) {
+    if ( (toutc - tn)*h >= ZERO) {
+      thi = tn; 
+      N_VScale(ONE, zn[0], y);
+    } else {
+      thi = toutc;
+      (void) CVodeGetDky(cv_mem, thi, 0, y);
+    }
+  }
+
+  /* Set ghi = g(thi) and call CVRootfind to search (tlo,thi) for roots. */
+  gfun (thi, y, ghi, g_data);  nge++;
+  ttol = (ABS(tn) + ABS(h))*uround*HUN;
+  ier = CVRootfind(cv_mem);
+  tlo = troot;
+  for (i = 0; i < nrtfn; i++) glo[i] = groot[i];
+
+  /* If no root found, return CV_SUCCESS. */  
+  if (ier == CV_SUCCESS) return(CV_SUCCESS);
+
+  /* If a root was found, interpolate to get y(troot) and return.  */
+  (void) CVodeGetDky(cv_mem, troot, 0, y);
+  return (RTFOUND);
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVRootFind
+ *
+ * This routine solves for a root of g(t) between tlo and thi, if
+ * one exists.  Only roots of odd multiplicity (i.e. with a change
+ * of sign in one of the g_i), or exact zeros, are found.
+ * Here the sign of tlo - thi is arbitrary, but if multiple roots
+ * are found, the one closest to tlo is returned.
+ *
+ * The method used is the Illinois algorithm, a modified secant method.
+ * Reference: Kathie L. Hiebert and Lawrence F. Shampine, Implicitly
+ * Defined Output Points for Solutions of ODEs, Sandia National
+ * Laboratory Report SAND80-0180, February 1980.
+ *
+ * This routine uses the following parameters for communication:
+ *
+ * nrtfn    = number of functions g_i, or number of components of
+ *            the vector-valued function g(t).  Input only.
+ *
+ * gfun     = user-defined function for g(t).  Its form is
+ *            (void) gfun(t, y, gt, g_data)
+ *
+ * nge      = cumulative counter for gfun calls.
+ *
+ * ttol     = a convergence tolerance for troot.  Input only.
+ *            When a root at troot is found, it is located only to
+ *            within a tolerance of ttol.  Typically, ttol should
+ *            be set to a value on the order of
+ *               100 * UROUND * max (ABS(tlo), ABS(thi))
+ *            where UROUND is the unit roundoff of the machine.
+ *
+ * tlo, thi = endpoints of the interval in which roots are sought.
+ *            On input, and must be distinct, but tlo - thi may
+ *            be of either sign.  The direction of integration is
+ *            assumed to be from tlo to thi.  On return, tlo and thi
+ *            are the endpoints of the final relevant interval.
+ *
+ * glo, ghi = arrays of length nrtfn containing the vectors g(tlo)
+ *            and g(thi) respectively.  Input and output.  On input,
+ *            none of the glo[i] should be zero.
+ *
+ * troot    = root location, if a root was found, or thi if not.
+ *            Output only.  If a root was found other than an exact
+ *            zero of g, troot is the endpoint thi of the final
+ *            interval bracketing the root, with size at most ttol.
+ *
+ * groot    = array of length nrtfn containing g(troot) on return.
+ *
+ * iroots   = int array of length nrtfn with root information.
+ *            Output only.  If a root was found, iroots indicates
+ *            which components g_i have a root at troot.  For
+ *            i = 0, ..., nrtfn-1, iroots[i] = 1 if g_i has a root
+ *            and iroots[i] = 0 otherwise.
+ *
+ * This routine returns an int equal to:
+ *      RTFOUND =  1 if a root of g was found, or
+ *      CV_SUCCESS    =  0 otherwise.
+ */
+
+static int CVRootfind(CVodeMem cv_mem)
+{
+  realtype alpha, tmid, gfrac, maxfrac, fracint, fracsub;
+  int i, imax, side, sideprev;
+  booleantype zroot, sgnchg;
+
+  imax = 0;
+
+  /* First check for change in sign in ghi or for a zero in ghi. */
+  maxfrac = ZERO;
+  zroot = FALSE;
+  sgnchg = FALSE;
+  for (i = 0;  i < nrtfn; i++) {
+    if (ABS(ghi[i]) == ZERO) {
+      zroot = TRUE;
+    } else {
+      if (glo[i]*ghi[i] < ZERO) {
+        gfrac = ABS(ghi[i]/(ghi[i] - glo[i]));
+        if (gfrac > maxfrac) {
+          sgnchg = TRUE;
+          maxfrac = gfrac;
+          imax = i;
+        }
+      }
+    }
+  }
+
+  /* If no sign change was found, reset troot and groot.  Then return
+     CV_SUCCESS if no zero was found, or set iroots and return RTFOUND.  */ 
+  if (!sgnchg) {
+    troot = thi;
+    for (i = 0; i < nrtfn; i++) groot[i] = ghi[i];
+    if (!zroot) return (CV_SUCCESS);
+    for (i = 0; i < nrtfn; i++) {
+      iroots[i] = 0;
+      if (ABS(ghi[i]) == ZERO) iroots[i] = 1;
+    }
+    return(RTFOUND);
+  }
+
+  /* A sign change was found.  Loop to locate nearest root. */
+
+  side = 0;  sideprev = -1;
+  loop {                                    /* Looping point */
+
+    /* Set weight alpha.
+       On the first two passes, set alpha = 1.  Thereafter, reset alpha
+       according to the side (low vs high) of the subinterval in which
+       the sign change was found in the previous two passes.
+       If the sides were opposite, set alpha = 1.
+       If the sides were the same, then double alpha (if high side),
+       or halve alpha (if low side).
+       The next guess tmid is the secant method value if alpha = 1, but
+       is closer to tlo if alpha < 1, and closer to thi if alpha > 1.    */
+
+    if (sideprev == side) {
+      alpha = (side == 2) ? alpha*TWO : alpha*HALF;
+    } else {
+      alpha = ONE;
+    }
+
+    /* Set next root approximation tmid and get g(tmid).
+       If tmid is too close to tlo or thi, adjust it inward,
+       by a fractional distance that is between 0.1 and 0.5.  */
+    tmid = thi - (thi - tlo)*ghi[imax]/(ghi[imax] - alpha*glo[imax]);
+    if (ABS(tmid - tlo) < HALF*ttol) {
+      fracint = ABS(thi - tlo)/ttol;
+      fracsub = (fracint > FIVE) ? TENTH : HALF/fracint;
+      tmid = tlo + fracsub*(thi - tlo);
+    }
+    if (ABS(thi - tmid) < HALF*ttol) {
+      fracint = ABS(thi - tlo)/ttol;
+      fracsub = (fracint > FIVE) ? TENTH : HALF/fracint;
+      tmid = thi - fracsub*(thi - tlo);
+    }
+
+    (void) CVodeGetDky(cv_mem, tmid, 0, y);
+    gfun (tmid, y, groot, g_data);  nge++;
+
+    /* Check to see in which subinterval g changes sign, and reset imax.
+       Set side = 1 if sign change is on low side, or 2 if on high side.  */  
+    maxfrac = ZERO;
+    zroot = FALSE;
+    sgnchg = FALSE;
+    sideprev = side;
+    for (i = 0;  i < nrtfn; i++) {
+      if (ABS(groot[i]) == ZERO) {
+        zroot = TRUE;
+      } else {
+        if (glo[i]*groot[i] < ZERO) {
+          gfrac = ABS(groot[i]/(groot[i] - glo[i]));
+          if (gfrac > maxfrac) {
+            sgnchg = TRUE;
+            maxfrac = gfrac;
+            imax = i;
+          }
+        }
+      }
+    }
+    if (sgnchg) {
+      /* Sign change found in (tlo,tmid); replace thi with tmid. */
+      thi = tmid;
+      for (i = 0; i < nrtfn; i++) ghi[i] = groot[i];
+      side = 1;
+      /* Stop at root thi if converged; otherwise loop. */
+      if (ABS(thi - tlo) <= ttol) break;
+    continue;  /* Return to looping point. */
+    }
+
+    if (zroot) {
+      /* No sign change in (tlo,tmid), but g = 0 at tmid; return root tmid. */
+      thi = tmid;
+      for (i = 0; i < nrtfn; i++) ghi[i] = groot[i];
+      break;
+    }
+
+    /* No sign change in (tlo,tmid), and no zero at tmid.
+       Sign change must be in (tmid,thi).  Replace tlo with tmid. */
+    tlo = tmid;
+    for (i = 0; i < nrtfn; i++) glo[i] = groot[i];
+    side = 2;
+    /* Stop at root thi if converged; otherwise loop back. */
+    if (ABS(thi - tlo) <= ttol) break;
+
+  } /* End of root-search loop */
+
+  /* Reset troot and groot, set iroots, and return RTFOUND. */
+  troot = thi;
+  for (i = 0; i < nrtfn; i++) {
+    groot[i] = ghi[i];
+    iroots[i] = 0;
+    if (ABS(ghi[i]) == ZERO) iroots[i] = 1;
+    if (glo[i]*ghi[i] < ZERO) iroots[i] = 1;
+  }
+  return(RTFOUND);
+}
+
+/*=================================================================*/
+/*      Internal EWT function                                      */
+/*=================================================================*/
+
+/*
+ * CVEwtSet
+ *
+ * This routine is responsible for setting the error weight vector ewt,
+ * according to tol_type, as follows:
+ *
+ * (1) ewt[i] = 1 / (reltol * ABS(ycur[i]) + *abstol), i=0,...,neq-1
+ *     if tol_type = CV_SS
+ * (2) ewt[i] = 1 / (reltol * ABS(ycur[i]) + abstol[i]), i=0,...,neq-1
+ *     if tol_type = CV_SV
+ *
+ * CVEwtSet returns 0 if ewt is successfully set as above to a
+ * positive vector and -1 otherwise. In the latter case, ewt is
+ * considered undefined.
+ *
+ * All the real work is done in the routines CVEwtSetSS, CVEwtSetSV.
+ */
+
+int CVEwtSet(N_Vector ycur, N_Vector weight, void *data)
+{
+  CVodeMem cv_mem;
+  int flag = 0;
+
+  /* data points to cv_mem here */
+
+  cv_mem = (CVodeMem) data;
+
+  switch(itol) {
+  case CV_SS: 
+    flag = CVEwtSetSS(cv_mem, ycur, weight);
+    break;
+  case CV_SV: 
+    flag = CVEwtSetSV(cv_mem, ycur, weight);
+    break;
+  }
+
+  return(flag);
+}
+
+/*
+ * CVEwtSetSS
+ *
+ * This routine sets ewt as decribed above in the case tol_type = CV_SS.
+ * It tests for non-positive components before inverting. CVEwtSetSS
+ * returns 0 if ewt is successfully set to a positive vector
+ * and -1 otherwise. In the latter case, ewt is considered undefined.
+ */
+
+static int CVEwtSetSS(CVodeMem cv_mem, N_Vector ycur, N_Vector weight)
+{
+  N_VAbs(ycur, tempv);
+  N_VScale(reltol, tempv, tempv);
+  N_VAddConst(tempv, Sabstol, tempv);
+  if (N_VMin(tempv) <= ZERO) return(-1);
+  N_VInv(tempv, weight);
+
+  return(0);
+}
+
+/*
+ * CVEwtSetSV
+ *
+ * This routine sets ewt as decribed above in the case tol_type = CV_SV.
+ * It tests for non-positive components before inverting. CVEwtSetSV
+ * returns 0 if ewt is successfully set to a positive vector
+ * and -1 otherwise. In the latter case, ewt is considered undefined.
+ */
+
+static int CVEwtSetSV(CVodeMem cv_mem, N_Vector ycur, N_Vector weight)
+{
+  N_VAbs(ycur, tempv);
+  N_VLinearSum(reltol, tempv, ONE, Vabstol, tempv);
+  if (N_VMin(tempv) <= ZERO) return(-1);
+  N_VInv(tempv, weight);
+  return(0);
+}
+
+
+/*=================================================================*/
+/*             Combined norms                                      */
+/*=================================================================*/
+
+/*
+ * CVQuadUpdateNorm
+ *
+ * Updates the norm old_nrm to account for all quadratures.
+ */
+
+static realtype CVQuadUpdateNorm(CVodeMem cv_mem, realtype old_nrm,
+                                 N_Vector xQ, N_Vector wQ)
+{
+  realtype qnrm;
+
+  qnrm = N_VWrmsNorm(xQ, wQ);
+  if (old_nrm > qnrm) return(old_nrm);
+  else                return(qnrm);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVQuadUpdateDsm
+ *
+ *  Usage    : dms = CVQuadUpdateDsm(cv_mem, dsm, dsmQ);
+ *
+ * This routine updates the local error norm dsm with quadrature
+ * related information. Used only if quadratures are computed
+ * with FULL error control.
+ *
+ * Returns the maximum over the wheighted local error norms.
+ */
+
+static realtype CVQuadUpdateDsm(CVodeMem cv_mem, realtype old_dsm, 
+                                realtype dsmQ)
+{
+  if ( old_dsm > dsmQ ) return (old_dsm);
+  else                  return (dsmQ);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVSensNorm
+ *
+ * This routine returns the maximum over the weighted root mean 
+ * square norm of xS with weight vectors wS:
+ *
+ *  max { wrms(xS[0],wS[0]) ... wrms(xS[Ns-1],wS[Ns-1]) }    
+ *
+ * Called by CVSensUpdateNorm or directly in the CV_STAGGERED approach 
+ * during the NLS solution and before the error test.
+ */
+
+static realtype CVSensNorm(CVodeMem cv_mem, N_Vector *xS, N_Vector *wS)
+{
+  int is;
+  realtype nrm, snrm;
+
+  nrm = N_VWrmsNorm(xS[0],wS[0]);
+  for (is=1; is<Ns; is++) {
+    snrm = N_VWrmsNorm(xS[is],wS[is]);
+    if ( snrm > nrm ) nrm = snrm;
+  }
+
+  return (nrm);
+
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVSensUpdateNorm
+ *
+ * Updates the norm old_nrm to account for all sensitivities.
+ */
+
+static realtype CVSensUpdateNorm(CVodeMem cv_mem, realtype old_nrm,
+                                 N_Vector *xS, N_Vector *wS)
+{
+  realtype snrm;
+  
+  snrm = CVSensNorm(cv_mem, xS, wS);
+  if (old_nrm > snrm) return(old_nrm);
+  else                return(snrm);
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVStgrUpdateNorm
+ *
+ *  Usage    : dms = CVStgrUpdateDsm(cv_mem, old_dsm, dsmS);
+ *
+ * This routine updates the local error norm old_dsm with sensitivity 
+ * related information. Used only in the CV_STAGGERED or CV_STAGGERED1 
+ * approach with FULL error control.This value is consistent with 
+ * the one computed in CVDoErrorTest when ism=CV_SIMULTANEOUS and 
+ * errconS=TRUE.
+ *
+ * Returns the maximum over the wheighted local error norms.
+ */
+
+static realtype CVStgrUpdateDsm(CVodeMem cv_mem, realtype old_dsm, 
+                                realtype dsmS)
+{
+  if ( old_dsm > dsmS ) return (old_dsm);
+  else                  return (dsmS);
+}
+
+/*=================================================================*/
+/*             Sensitivity RHS Routines                            */
+/*=================================================================*/
+
+/*
+ * CVSensRhs
+ *
+ * CVSensRhs is a high level routine that returns right hand side 
+ * of sensitivity equations. Depending on the 'ifS' flag, it either 
+ * calls directly the fS routine (ifS=CV_ALLSENS) or (if ifS=CV_ONESENS) 
+ * calls the fS1 routine in a loop over all sensitivities.
+ *
+ * CVSensRhs is called:
+ *  (*) by Cvode at the first step
+ *  (*) by CVYddNorm if errcon=TRUE
+ *  (*) by CVnlsFunctional, CVnlsNewton, and CVNewtonIteration
+ *      if ism=CV_SIMULTANEOUS
+ *  (*) by CVDoErrorTest when restarting from scratch
+ *  (*) in the corrector loop if ism=CV_STAGGERED
+ *  (*) by CVStgrDoErrorTest when restarting from scratch 
+ */
+
+static void CVSensRhs(CVodeMem cv_mem, realtype time, 
+                      N_Vector ycur, N_Vector fcur, 
+                      N_Vector *yScur, N_Vector *fScur,
+                      N_Vector temp1, N_Vector temp2)
+{
+  int is;
+
+  if (ifS==CV_ALLSENS) {
+    fS(Ns, time, ycur, fcur, yScur, fScur, 
+       fS_data, temp1, temp2);
+    nfSe++;
+  } else {
+    for (is=0; is<Ns; is++) {
+      fS1(Ns, time, ycur, fcur, is, yScur[is], fScur[is], 
+          fS_data, temp1, temp2);
+      nfSe++;
+    }
+  }
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVSensRhs1
+ *
+ * CVSensRhs1 is a high level routine that returns right hand side 
+ * of the is-th sensitivity equation. 
+ *
+ * CVSensRhs1 is called only during the CV_STAGGERED1 corrector loop
+ * (ifS must be CV_ONESENS, otherwise CVodeSensMalloc would have 
+ * issued an error message).
+ */
+
+static void CVSensRhs1(CVodeMem cv_mem, realtype time, 
+                       N_Vector ycur, N_Vector fcur, 
+                       int is, N_Vector yScur, N_Vector fScur,
+                       N_Vector temp1, N_Vector temp2)
+{
+  fS1(Ns, time, ycur, fcur, is, yScur, fScur, 
+      fS_data, temp1, temp2);
+  nfSe++;
+}
+
+/* Undefine Readibility Constants */
+
+#undef Ns
+#undef y
+#undef yS
+#undef fS_data
+#undef ftemp
+
+/*=================================================================*/
+/*             DQ Approximations for Sensitivity RHS Routines      */
+/*=================================================================*/
+
+/*
+ * CVSensRhsDQ
+ *
+ * CVSensRhsDQ computes right hand side of all sensitivity equations
+ * by finite differences
+ */
+
+void CVSensRhsDQ(int Ns, realtype t, 
+                 N_Vector y, N_Vector ydot, 
+                 N_Vector *yS, N_Vector *ySdot, 
+                 void *fS_data,  
+                 N_Vector ytemp, N_Vector ftemp)
+{
+  int is;
+  
+  for (is=0; is<Ns; is++)
+    CVSensRhs1DQ(Ns, t, y, ydot, is, yS[is], ySdot[is],
+                 fS_data, ytemp, ftemp);
+  
+}
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * CVSensRhs1DQ
+ *
+ * CVSensRhs1DQ computes the right hand side of the is-th sensitivity 
+ * equation by finite differences
+ */
+
+void CVSensRhs1DQ(int Ns, realtype t, 
+                  N_Vector y, N_Vector ydot, 
+                  int is, N_Vector yS, N_Vector ySdot, 
+                  void *fS_data,
+                  N_Vector ytemp, N_Vector ftemp)
+{
+  CVodeMem cv_mem;
+  int method;
+  int nfel = 0, which;
+  realtype psave, pbari;
+  realtype delta , rdelta;
+  realtype Deltap, rDeltap, r2Deltap;
+  realtype Deltay, rDeltay, r2Deltay;
+  realtype Delta , rDelta , r2Delta ;
+  realtype norms, ratio;
+  
+  /* fS_data points to cv_mem */
+  cv_mem = (CVodeMem) fS_data;
+
+  delta = RSqrt(MAX(reltol, uround));
+  rdelta = ONE/delta;
+  
+  pbari = pbar[is];
+
+  which = plist[is] - 1;
+
+  psave = p[which];
+  
+  Deltap  = pbari * delta;
+  rDeltap = ONE/Deltap;
+  norms   = N_VWrmsNorm(yS, ewt) * pbari;
+  rDeltay = MAX(norms, rdelta) / pbari;
+  Deltay  = ONE/rDeltay;
+  
+  ratio = Deltay * rDeltap;
+  
+  if ((MAX(ONE/ratio, ratio) <= ABS(rhomax)) || rhomax == ZERO)
+    method = (rhomax >= ZERO) ? CENTERED1 : FORWARD1; 
+  else
+    method = (rhomax > ZERO) ? CENTERED2 : FORWARD2;
+  
+  switch(method) {
+    
+  case CENTERED1:
+    
+    Delta = MIN(Deltay, Deltap);
+    r2Delta = HALF/Delta;
+    
+    N_VLinearSum(ONE,y,Delta,yS,ytemp);
+    p[which] = psave + Delta;
+    f(t, ytemp, ySdot, f_data);
+    nfel++;
+    
+    N_VLinearSum(ONE,y,-Delta,yS,ytemp);
+    p[which] = psave - Delta;
+    f(t, ytemp, ftemp, f_data);
+    nfel++;
+    
+    N_VLinearSum(r2Delta,ySdot,-r2Delta,ftemp,ySdot);
+    
+    break;
+    
+  case CENTERED2:
+    
+    r2Deltap = HALF/Deltap;
+    r2Deltay = HALF/Deltay;
+    
+    N_VLinearSum(ONE,y,Deltay,yS,ytemp);
+    f(t, ytemp, ySdot, f_data);
+    nfel++;
+    N_VLinearSum(ONE,y,-Deltay,yS,ytemp);
+    f(t, ytemp, ftemp, f_data);
+    nfel++;
+    N_VLinearSum(r2Deltay, ySdot, -r2Deltay, ftemp, ySdot);
+    
+    p[which] = psave + Deltap;
+    f(t, y, ytemp, f_data);
+    nfel++;
+    p[which] = psave - Deltap;
+    f(t, y, ftemp, f_data);
+    nfel++;
+    N_VLinearSum(r2Deltap,ytemp,-r2Deltap,ftemp,ftemp);
+    
+    N_VLinearSum(ONE,ySdot,ONE,ftemp,ySdot);
+    
+    break;
+    
+  case FORWARD1:
+    
+    Delta = MIN(Deltay, Deltap);
+    rDelta = ONE/Delta;
+    
+    N_VLinearSum(ONE,y,Delta,yS,ytemp);
+    p[which] = psave + Delta;
+    f(t, ytemp, ySdot, f_data);
+    nfel++;
+    
+    N_VLinearSum(rDelta,ySdot,-rDelta,ydot,ySdot);
+    
+    break;
+    
+  case FORWARD2:
+    
+    N_VLinearSum(ONE,y,Deltay,yS,ytemp);
+    f(t, ytemp, ySdot, f_data);
+    nfel++;
+    N_VLinearSum(rDeltay, ySdot, -rDeltay, ydot, ySdot);
+    
+    p[which] = psave + Deltap;
+    f(t, y, ytemp, f_data);
+    nfel++;
+    N_VLinearSum(rDeltap,ytemp,-rDeltap,ydot,ftemp);
+      
+    N_VLinearSum(ONE,ySdot,ONE,ftemp,ySdot);
+    
+    break;
+    
+  }
+  
+  p[which] = psave;
+  
+  /* Increment counter nfeS */
+  nfeS += nfel;
+  
+}
+
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvodes_impl.h b/Win32/WinCVODE/sundials/cvodes/source/cvodes_impl.h
new file mode 100644
index 0000000..6a38d52
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvodes_impl.h
@@ -0,0 +1,772 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh, Radu Serban,
+ *                and Dan Shumaker @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the main CVODES integrator.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVODES_IMPL_H
+#define _CVODES_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "cvodes.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/* Prototype of internal ewtSet function */
+
+int CVEwtSet(N_Vector ycur, N_Vector weight, void *e_data);
+
+
+/* Prototypes for internal sensitivity rhs DQ functions */
+
+void CVSensRhsDQ(int Ns, realtype t, 
+                 N_Vector y, N_Vector ydot, 
+                 N_Vector *yS, N_Vector *ySdot, 
+                 void *fS_data,  
+                 N_Vector tempv, N_Vector ftemp);
+
+void CVSensRhs1DQ(int Ns, realtype t, 
+                  N_Vector y, N_Vector ydot, 
+                  int is, N_Vector yS, N_Vector ySdot, 
+                  void *fS_data,
+                  N_Vector tempv, N_Vector ftemp);
+
+/* 
+ * =================================================================
+ *   M A I N    I N T E G R A T O R    M E M O R Y    B L O C K
+ * =================================================================
+ */
+
+/* Basic CVODES constants */
+
+#define ADAMS_Q_MAX 12      /* max value of q for lmm == ADAMS    */
+#define BDF_Q_MAX    5      /* max value of q for lmm == BDF      */
+#define Q_MAX  ADAMS_Q_MAX  /* max value of q for either lmm      */
+#define L_MAX  (Q_MAX+1)    /* max value of L for either lmm      */
+#define NUM_TESTS    5      /* number of error test quantities    */
+
+#define HMIN_DEFAULT     RCONST(0.0)    /* hmin default value     */
+#define HMAX_INV_DEFAULT RCONST(0.0)    /* hmax_inv default value */
+#define MXHNIL_DEFAULT   10             /* mxhnil default value   */
+#define MXSTEP_DEFAULT   500            /* mxstep default value   */
+
+/*                                                                
+ * ifS is the type of the function returning the sensitivity
+ * right-hand side. ifS can be either CV_ALLSENS if the function    
+ * (of type CVSensRhsFn) returns right hand sides for all    
+ * sensitivity systems at once, or CV_ONESENS if the function 
+ * (of type SensRhs1Fn) returns the right hand side of one 
+ *  sensitivity system at a time.                           
+ */
+
+#define CV_ONESENS 1
+#define CV_ALLSENS 2
+
+/*
+ * -----------------------------------------------------------------
+ * Types: struct CVodeMemRec, CVodeMem
+ * -----------------------------------------------------------------
+ * The type CVodeMem is type pointer to struct CVodeMemRec.
+ * This structure contains fields to keep track of problem state.
+ * -----------------------------------------------------------------
+ */
+  
+typedef struct CVodeMemRec {
+    
+  realtype cv_uround;      /* machine unit roundoff                        */   
+
+  /*-------------------------- 
+    Problem Specification Data 
+    --------------------------*/
+
+  CVRhsFn cv_f;            /* y' = f(t,y(t))                               */
+  void *cv_f_data;         /* user pointer passed to f                     */
+  int cv_lmm;              /* lmm = ADAMS or BDF                           */
+  int cv_iter;             /* iter = FUNCTIONAL or NEWTON                  */
+  int cv_itol;             /* itol = SS or SV                              */
+
+  realtype cv_reltol;      /* relative tolerance                           */
+  realtype cv_Sabstol;     /* scalar absolute tolerance                    */
+  N_Vector cv_Vabstol;     /* vector absolute tolerance                    */
+  void *cv_e_data;         /* user pointer passed to efun                  */
+
+  /*-----------------------
+    Quadrature Related Data 
+    -----------------------*/
+
+  booleantype cv_quadr;    /* TRUE if integrating quadratures              */
+
+  CVQuadRhsFn cv_fQ;
+  void *cv_fQ_data;        /* user pointer passed to fQ                    */
+  int cv_itolQ;
+  booleantype cv_errconQ;
+
+  realtype cv_reltolQ;     /* relative tolerance for quadratures           */
+  realtype cv_SabstolQ;    /* scalar absolute tolerance for quadratures    */
+  N_Vector cv_VabstolQ;    /* vector absolute tolerance for quadratures    */
+  CVEwtFn cv_efun;         /* function to set ewt                          */
+
+  /*------------------------
+    Sensitivity Related Data 
+    ------------------------*/
+
+  booleantype cv_sensi;    /* TRUE if computing sensitivities              */
+
+  int cv_Ns;               /* Number of sensitivities                      */
+
+  int cv_ism;              /* ism = SIMULTANEOUS or STAGGERED              */
+
+  CVSensRhsFn cv_fS;       /* fS = (df/dy)*yS + (df/dp)                    */
+  CVSensRhs1Fn cv_fS1;     /* fS1 = (df/dy)*yS_i + (df/dp)                 */
+  void *cv_fS_data;        /* user pointer passed to fS                    */
+  booleantype cv_fSDQ;
+  int cv_ifS;              /* ifS = ALLSENS or ONESENS                     */
+
+  realtype *cv_p;          /* parameters in f(t,y,p)                       */
+  realtype *cv_pbar;       /* scale factors for parameters                 */
+  int *cv_plist;           /* list of sensitivities                        */
+  realtype cv_rhomax;      /* cut-off value for centered/forward finite
+                              differences                                  */
+
+  booleantype cv_errconS;  /* TRUE if sensitivities are in err. control    */
+
+  int cv_itolS;
+  realtype cv_reltolS;     /* relative tolerance for sensitivities         */
+  realtype *cv_SabstolS;   /* scalar absolute tolerances for sensi.        */
+  N_Vector *cv_VabstolS;   /* vector absolute tolerances for sensi.        */
+
+  /*-----------------------
+    Nordsieck History Array 
+    -----------------------*/
+
+  N_Vector cv_zn[L_MAX];   /* Nordsieck array, of size N x (q+1).
+                              zn[j] is a vector of length N (j=0,...,q)
+                              zn[j] = [1/factorial(j)] * h^j * 
+                              (jth derivative of the interpolating 
+                              polynomial                                   */
+
+  /*-------------------
+    Vectors of length N 
+    -------------------*/
+
+  N_Vector cv_ewt;         /* error weight vector                          */
+  N_Vector cv_y;           /* y is used as temporary storage by the solver.
+                              The memory is provided by the user to CVode 
+                              where the vector is named yout.              */
+  N_Vector cv_acor;        /* In the context of the solution of the
+                              nonlinear equation, acor = y_n(m) - y_n(0).
+                              On return, this vector is scaled to give
+                              the estimated local error in y.              */
+  N_Vector cv_tempv;       /* temporary storage vector                     */
+  N_Vector cv_ftemp;       /* temporary storage vector                     */
+
+  /*--------------------------
+    Quadrature Related Vectors 
+    --------------------------*/
+
+  N_Vector cv_znQ[L_MAX];  /* Nordsieck arrays for sensitivities           */
+  N_Vector cv_ewtQ;        /* error weight vector for quadratures          */
+  N_Vector cv_yQ;          /* Unlike y, yQ is not allocated by the user    */
+  N_Vector cv_acorQ;       /* acorQ = yQ_n(m) - yQ_n(0)                    */
+  N_Vector cv_tempvQ;      /* temporary storage vector (~ tempv)           */
+
+  /*---------------------------
+    Sensitivity Related Vectors 
+    ---------------------------*/
+
+  N_Vector *cv_znS[L_MAX]; /* Nordsieck arrays for sensitivities           */
+  N_Vector *cv_ewtS;       /* error weight vectors for sensitivities       */
+  N_Vector *cv_yS;         /* yS=yS0 (allocated by the user)               */
+  N_Vector *cv_acorS;      /* acorS = yS_n(m) - yS_n(0)                    */
+  N_Vector *cv_tempvS;     /* temporary storage vector (~ tempv)           */
+  N_Vector *cv_ftempS;     /* temporary storage vector (~ ftemp)           */
+
+  /*-----------------------------------------------
+    Does CVodeSensMalloc allocate additional space?
+    -----------------------------------------------*/  
+
+  booleantype cv_stgr1alloc;     /* Are ncfS1, ncfnS1, and nniS1 allocated 
+                                    by CVODES?                             */
+
+  /*-----------------
+    Tstop information
+    -----------------*/
+  booleantype cv_tstopset;
+  realtype cv_tstop;
+
+  /*---------
+    Step Data 
+    ---------*/
+
+  int cv_q;                    /* current order                            */
+  int cv_qprime;               /* order to be used on the next step        */ 
+                               /* = q-1, q, or q+1                         */
+  int cv_next_q;               /* order to be used on the next step        */
+  int cv_qwait;                /* number of internal steps to wait before  */
+                               /* considering a change in q                */
+  int cv_L;                    /* L = q + 1                                */
+
+  realtype cv_hin;
+  realtype cv_h;               /* current step size                        */
+  realtype cv_hprime;          /* step size to be used on the next step    */ 
+  realtype cv_next_h;          /* step size to be used on the next step    */ 
+  realtype cv_eta;             /* eta = hprime / h                         */
+  realtype cv_hscale;          /* value of h used in zn                    */
+  realtype cv_tn;              /* current internal value of t              */
+
+  realtype cv_tau[L_MAX+1];    /* array of previous q+1 successful step
+                                  sizes indexed from 1 to q+1              */
+  realtype cv_tq[NUM_TESTS+1]; /* array of test quantities indexed from
+                                  1 to NUM_TESTS(=5)                       */
+  realtype cv_l[L_MAX];        /* coefficients of l(x) (degree q poly)     */
+
+  realtype cv_rl1;             /* 1 / l[1]                                 */
+  realtype cv_gamma;           /* gamma = h * rl1                          */
+  realtype cv_gammap;          /* gamma at the last setup call             */
+  realtype cv_gamrat;          /* gamma / gammap                           */
+
+  realtype cv_crate;           /* est. corrector conv. rate in Nls         */
+  realtype cv_crateS;          /* est. corrector conv. rate in NlsStgr     */
+  realtype cv_acnrm;           /* | acor |                                 */
+  realtype cv_acnrmS;          /* | acorS |                                */
+  realtype cv_acnrmQ;          /* | acorQ |                                */
+  realtype cv_nlscoef;         /* coeficient in nonlinear convergence test */
+  int  cv_mnewt;               /* Newton iteration counter                 */
+  int  *cv_ncfS1;              /* Array of Ns local counters for conv.  
+                                  failures (used in CVStep for STAGGERED1) */
+
+  /*------
+    Limits 
+    ------*/
+
+  int cv_qmax;             /* q <= qmax                                    */
+  long int cv_mxstep;      /* maximum number of internal steps for one 
+                              user call                                    */
+  int cv_maxcor;           /* maximum number of corrector iterations for 
+                              the solution of the nonlinear equation       */
+  int cv_maxcorS;
+  int cv_mxhnil;           /* maximum number of warning messages issued to 
+                              the user that t + h == t for the next 
+                              internal step                                */
+  int cv_maxnef;           /* maximum number of error test failures        */
+  int cv_maxncf;           /* maximum number of nonlinear conv. failures   */
+
+  realtype cv_hmin;        /* |h| >= hmin                                  */
+  realtype cv_hmax_inv;    /* |h| <= 1/hmax_inv                            */
+  realtype cv_etamax;      /* eta <= etamax                                */
+
+  /*----------
+    Counters 
+  ----------*/
+
+  long int cv_nst;         /* number of internal steps taken               */
+  long int cv_nfe;         /* number of f calls                            */
+  long int cv_nfSe;        /* number of fS calls                           */
+  long int cv_nfQe;        /* number of fQ calls                           */
+  long int cv_nfeS;        /* number of f calls from sensi DQ              */
+
+  long int cv_ncfn;        /* number of corrector convergence failures     */
+  long int cv_ncfnS;       /* number of total sensi. corr. conv. failures  */
+  long int *cv_ncfnS1;     /* number of sensi. corrector conv. failures    */
+
+  long int cv_nni;         /* number of nonlinear iterations performed     */
+  long int cv_nniS;        /* number of total sensi. nonlinear iterations  */
+  long int *cv_nniS1;      /* number of sensi. nonlinear iterations        */
+
+  long int cv_netf;        /* number of error test failures                */
+  long int cv_netfS;       /* number of sensi. error test failures         */
+  long int cv_netfQ;       /* number of quadr. error test failures         */
+
+  long int cv_nsetups;     /* number of setup calls                        */
+  long int cv_nsetupsS;    /* number of setup calls due to sensitivities   */
+
+  int cv_nhnil;            /* number of messages issued to the user that
+                                   t + h == t for the next iternal step    */
+
+  /*-----------------------------
+    Space requirements for CVODES 
+    -----------------------------*/
+
+  long int cv_lrw1;        /* no. of realtype words in 1 N_Vector y        */ 
+  long int cv_liw1;        /* no. of integer words in 1 N_Vector y         */ 
+  long int cv_lrw1Q;       /* no. of realtype words in 1 N_Vector yQ       */ 
+  long int cv_liw1Q;       /* no. of integer words in 1 N_Vector yQ        */ 
+  long int cv_lrw;         /* no. of realtype words in CVODES work vectors */
+  long int cv_liw;         /* no. of integer words in CVODES work vectors  */
+
+  /*----------------
+    Step size ratios
+    ----------------*/
+
+  realtype cv_etaqm1;      /* ratio of new to old h for order q-1          */
+  realtype cv_etaq;        /* ratio of new to old h for order q            */
+  realtype cv_etaqp1;      /* ratio of new to old h for order q+1          */
+
+  /*------------------
+    Linear Solver Data 
+    ------------------*/
+
+  /* Linear Solver functions to be called */
+
+  int (*cv_linit)(struct CVodeMemRec *cv_mem);
+
+  int (*cv_lsetup)(struct CVodeMemRec *cv_mem, int convfail, 
+                   N_Vector ypred, N_Vector fpred, booleantype *jcurPtr, 
+                   N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3); 
+
+  int (*cv_lsolve)(struct CVodeMemRec *cv_mem, N_Vector b, N_Vector weight,
+                   N_Vector ycur, N_Vector fcur);
+
+  void (*cv_lfree)(struct CVodeMemRec *cv_mem);
+
+  /* Linear Solver specific memory */
+
+  void *cv_lmem;           
+
+  /* Flag to request a call to the setup routine */
+
+  booleantype cv_forceSetup;
+
+  /*------------
+    Saved Values
+    ------------*/
+
+  int cv_qu;               /* last successful q value used                 */
+  long int cv_nstlp;       /* step number of last setup call               */
+  realtype cv_h0u;         /* actual initial stepsize                      */
+  realtype cv_hu;          /* last successful h value used                 */
+  realtype cv_saved_tq5;   /* saved value of tq[5]                         */
+  booleantype cv_jcur;     /* Is the Jacobian info used by
+                              linear solver current?                       */
+  realtype cv_tolsf;       /* tolerance scale factor                       */
+  booleantype cv_setupNonNull;  /* Does setup do something?                */
+
+  /*--------------------------------------------------------------------
+    Flags turned ON by CVodeMalloc, CVodeSensMalloc, and CVodeQuadMalloc 
+    and read by CVodeReInit, CVodeSensReInit, and CVodeQuadReInit
+    --------------------------------------------------------------------*/
+
+  booleantype cv_VabstolMallocDone;
+  booleantype cv_MallocDone;
+
+  booleantype cv_VabstolQMallocDone;
+  booleantype cv_quadMallocDone;
+
+  booleantype cv_VabstolSMallocDone;
+  booleantype cv_SabstolSMallocDone;
+  booleantype cv_sensMallocDone;
+
+  /*----------
+    Error File 
+    ----------*/
+
+  FILE *cv_errfp;             /* CVODE error messages are sent to errfp    */
+
+  /*-------------------------
+    Stability Limit Detection
+    -------------------------*/
+
+  booleantype cv_sldeton;     /* Is Stability Limit Detection on?          */
+  realtype cv_ssdat[6][4];    /* scaled data array for STALD               */
+  int cv_nscon;               /* counter for STALD method                  */
+  long int cv_nor;            /* counter for number of order reductions    */
+
+  /*----------------
+    Rootfinding Data
+    ----------------*/
+
+  CVRootFn cv_gfun;     /* Function g for roots sought                     */
+  int cv_nrtfn;         /* number of components of g                       */
+  void *cv_g_data;      /* pointer to user data for g                      */
+  int *cv_iroots;       /* int array for root information                  */
+  realtype cv_tlo;      /* nearest endpoint of interval in root search     */
+  realtype cv_thi;      /* farthest endpoint of interval in root search    */
+  realtype cv_troot;    /* approximate root location                       */
+  realtype *cv_glo;     /* saved array of g values at t = tlo              */
+  realtype *cv_ghi;     /* saved array of g values at t = thi              */
+  realtype *cv_groot;   /* array of g values at t = troot                  */
+  realtype cv_tretlast; /* last value of t returned                        */
+  realtype cv_toutc;    /* copy of tout (if NORMAL mode)                   */
+  realtype cv_ttol;     /* tolerance on root location troot                */
+  int cv_taskc;         /* copy of parameter task                          */
+  int cv_irfnd;         /* flag showing whether last step had a root       */
+  int cv_nge;           /* counter for g evaluations                       */
+
+  /*-------------------------
+    Complex step memory block
+    -------------------------*/
+
+  void *cv_csmem;
+
+} *CVodeMem;
+
+/* 
+ * =================================================================
+ *   C V O D E S    E R R O R    M E S S A G E S
+ * =================================================================
+ */
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+
+#define MSG_TIME      "t = %Lg"
+#define MSG_TIME_H    "t = %Lg and h = %Lg"
+#define MSG_TIME_INT  "t = %Lg is not between tcur - hu = %Lg and tcur = %Lg.\n\n"
+#define MSG_TIME_TOUT "tout = %Lg"
+
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+
+#define MSG_TIME      "t = %lg"
+#define MSG_TIME_H    "t = %lg and h = %lg"
+#define MSG_TIME_INT  "t = %lg is not between tcur - hu = %lg and tcur = %lg.\n\n"
+#define MSG_TIME_TOUT "tout = %lg"
+
+#else
+
+#define MSG_TIME      "t = %g"
+#define MSG_TIME_H    "t = %g and h = %g"
+#define MSG_TIME_INT  "t = %g is not between tcur - hu = %g and tcur = %g.\n\n"
+#define MSG_TIME_TOUT "tout = %g"
+
+#endif
+
+/* CvodeCreate Error Messages */
+
+#define _CVC_ "CVodeCreate-- "
+
+#define MSGCVS_BAD_LMM1 _CVC_ "Illegal value for lmm.\n"
+#define MSGCVS_BAD_LMM2 "The legal values are CV_ADAMS and CV_BDF.\n\n"
+#define MSGCVS_BAD_LMM  MSGCVS_BAD_LMM1 MSGCVS_BAD_LMM2
+
+#define MSGCVS_BAD_ITER1 _CVC_ "Illegal value for iter.\n"
+#define MSGCVS_BAD_ITER2 "The legal values are CV_FUNCTIONAL "
+#define MSGCVS_BAD_ITER3 "and CV_NEWTON.\n\n"
+#define MSGCVS_BAD_ITER  MSGCVS_BAD_ITER1 MSGCVS_BAD_ITER2 MSGCVS_BAD_ITER3
+
+#define MSGCVS_CVMEM_FAIL _CVC_ "Allocation of cv_mem failed.\n\n"
+
+/* CVodeSet* Error Messages */
+
+#define MSGCVS_SET_NO_MEM "cvode_mem = NULL in a CVodeSet routine illegal.\n\n"
+
+#define MSGCVS_SET_BAD_ITER1 "CVodeSetIterType-- Illegal value for iter.\n"
+#define MSGCVS_SET_BAD_ITER2 "The legal values are CV_FUNCTIONAL "
+#define MSGCVS_SET_BAD_ITER3 "and CV_NEWTON.\n\n"
+#define MSGCVS_SET_BAD_ITER  MSGCVS_SET_BAD_ITER1 MSGCVS_SET_BAD_ITER2 MSGCVS_SET_BAD_ITER3
+
+#define MSGCVS_SET_NEG_MAXORD "CVodeSetMaxOrd-- maxord <= 0 illegal.\n\n"
+
+#define MSGCVS_SET_BAD_MAXORD1 "CVodeSetMaxOrd-- Illegal attempt to increase "
+#define MSGCVS_SET_BAD_MAXORD2 "maximum method order.\n\n"
+#define MSGCVS_SET_BAD_MAXORD  MSGCVS_SET_BAD_MAXORD1 MSGCVS_SET_BAD_MAXORD2 
+
+#define MSGCVS_SET_NEG_MXSTEPS "CVodeSetMaxNumSteps-- mxsteps < 0 illegal.\n\n"
+
+#define MSGCVS_SET_SLDET1 "CVodeSetStabLimDet-- Attempt to use stability "
+#define MSGCVS_SET_SLDET2 "limit detection with the CV_ADAMS method illegal.\n\n"
+#define MSGCVS_SET_SLDET  MSGCVS_SET_SLDET1 MSGCVS_SET_SLDET2
+
+#define MSGCVS_SET_NEG_HMIN "CVodeSetMinStep-- hmin < 0 illegal.\n\n"
+
+#define MSGCVS_SET_NEG_HMAX "CVodeSetMaxStep-- hmax < 0 illegal.\n\n"
+
+#define MSGCVS_SET_BAD_HMM1       "CVodeSetMinStep/CVodeSetMaxStep-- Inconsistent\n"
+#define MSGCVS_SET_BAD_HMM2       "step size limits: hmin > hmax.\n\n"
+#define MSGCVS_SET_BAD_HMIN_HMAX  MSGCVS_SET_BAD_HMM1 MSGCVS_SET_BAD_HMM2
+
+#define _CVSET_TOL_ "CVodeSetTolerances-- "
+
+#define MSGCVS_SET_NO_MALLOC _CVSET_TOL_ "Attempt to call before CVodeMalloc.\n\n"
+
+#define MSGCVS_SET_BAD_ITOL1 _CVSET_TOL_ "Illegal value for itol.\n"
+#define MSGCVS_SET_BAD_ITOL2 "The legal values are CV_SS and CV_SV.\n\n"
+#define MSGCVS_SET_BAD_ITOL  MSGCVS_SET_BAD_ITOL1 MSGCVS_SET_BAD_ITOL2
+
+#define MSGCVS_SET_BAD_RELTOL _CVSET_TOL_ "reltol < 0 illegal.\n\n"
+
+#define MSGCVS_SET_ABSTOL_NULL _CVSET_TOL_ "abstol = NULL illegal.\n\n"
+
+#define MSGCVS_SET_BAD_ABSTOL _CVSET_TOL_ "abstol has negative component(s) (illegal).\n\n"
+
+/* CVodeMalloc/CVodeReInit Error Messages */
+
+#define _CVM_ "CVodeMalloc/CVodeReInit-- "
+
+#define MSGCVS_CVM_NO_MEM _CVM_ "cvode_mem = NULL illegal.\n\n"
+
+#define MSGCVS_Y0_NULL _CVM_ "y0 = NULL illegal.\n\n"
+
+#define MSGCVS_BAD_ITOL1 _CVM_ "Illegal value for itol.\n"
+#define MSGCVS_BAD_ITOL2 "The legal values are CV_SS, CV_SV, and CV_WF.\n\n"
+#define MSGCVS_BAD_ITOL  MSGCVS_BAD_ITOL1 MSGCVS_BAD_ITOL2
+
+#define MSGCVS_F_NULL _CVM_ "f = NULL illegal.\n\n"
+
+#define MSGCVS_BAD_RELTOL _CVM_ "reltol < 0 illegal.\n\n"
+
+#define MSGCVS_ABSTOL_NULL _CVM_ "abstol = NULL illegal.\n\n"
+
+#define MSGCVS_BAD_ABSTOL _CVM_ "abstol has negative component(s) (illegal).\n\n"
+
+#define MSGCVS_BAD_NVECTOR _CVM_ "A required vector operation is not implemented.\n\n"
+
+#define MSGCVS_MEM_FAIL _CVM_ "A memory request failed.\n\n"
+
+#define MSGCVS_CVREI_NO_MALLOC "CVodeReInit-- Attempt to call before CVodeMalloc.\n\n"
+
+/* CVodeRootInit Error Messages */
+
+#define _CVRT_ "CVodeRootInit-- "
+
+#define MSGCVS_ROOT_NO_MEM _CVRT_ "cvode_mem = NULL illegal.\n\n"
+
+#define MSGCVS_ROOT_MEM_FAIL _CVRT_ "A memory request failed.\n\n"
+
+#define MSGCVS_ROOT_FUNC_NULL _CVRT_ "g = NULL illegal.\n\n"
+
+/* CVodeQuadMalloc/CVodeQuadReInit Error Messages */
+
+#define _CVSET_QTOL_ "CVodeSetQuadErrCon-- "
+
+#define MSGCVS_SET_NO_QUAD  _CVSET_QTOL_ "Illegal attempt to call before calling CVodeQuadMalloc.\n\n"
+
+#define MSGCVS_BAD_ITOLQ1 "Illegal value for itolQ.\nThe legal values are CV_SS and CV_SV.\n\n"
+#define MSGCVS_BAD_ITOLQ  _CVSET_QTOL_ MSGCVS_BAD_ITOLQ1
+
+#define MSGCVS_ABSTOLQ_NULL _CVSET_QTOL_ "abstolQ = NULL illegal.\n\n"
+
+#define MSGCVS_BAD_RELTOLQ _CVSET_QTOL_ "reltolQ < 0 illegal.\n\n"
+
+#define MSGCVS_BAD_ABSTOLQ _CVSET_QTOL_ "abstolQ has negative component(s) (illegal).\n\n"  
+
+#define MSGCVS_QCVM_NO_MEM "CVodeQuadMalloc/CVodeQuadReInit-- cvode_mem = NULL illegal.\n\n"
+
+#define MSGCVS_QCVM_MEM_FAIL "CVodeQuadMalloc/CVodeQuadReInit-- A memory request failed.\n\n"
+
+#define MSGCVS_QREI_QUAD1   "CVodeQuadReInit-- Illegal attempt to call before "
+#define MSGCVS_QREI_QUAD2   "calling CVodeQuadMalloc.\n\n"
+#define MSGCVS_QREI_NO_QUAD MSGCVS_QREI_QUAD1 MSGCVS_QREI_QUAD2
+
+/* CVodeSetSens* /CVodeSensMalloc/CVodeSensReInit Error Messages */
+
+#define _CVSET_STOL_ "CVodeSetSensTolerances-- "
+
+#define MSGCVS_SET_SENSI_1  "Illegal attempt to call before calling CVodeSensMalloc.\n\n"
+#define MSGCVS_SET_NO_SENSI _CVSET_STOL_ MSGCVS_SET_SENSI_1
+
+#define MSGCVS_BAD_ITOLS1 _CVSET_STOL_ "Illegal value for itolS.\n"
+#define MSGCVS_BAD_ITOLS2 "The legal values are CV_SS, CV_SV, and CV_EE.\n\n"
+#define MSGCVS_BAD_ITOLS  MSGCVS_BAD_ITOLS1 MSGCVS_BAD_ITOLS2
+
+#define MSGCVS_ABSTOLS_NULL _CVSET_STOL_ "abstolS = NULL illegal.\n\n"
+
+#define MSGCVS_BAD_RELTOLS _CVSET_STOL_ "reltolS < 0 illegal.\n\n"
+
+#define MSGCVS_BAD_ABSTOLS _CVSET_STOL_ "abstolS has negative component(s) (illegal).\n\n"  
+
+#define MSGCVS_BAD_PBAR "CVodeSetSensParams-- pbar has zero component(s) (illegal).\n\n"
+#define MSGCVS_BAD_PLIST "CVodeSetSensParams-- plist has nonpositive component(s) (illegal).\n\n"
+
+#define _SCVM_ "CVodeSensMalloc/CVodeSensReInit-- "
+
+#define MSGCVS_SCVM_NO_MEM _SCVM_ "cvode_mem = NULL illegal.\n\n"
+
+#define MSGCVS_SCVM_MEM_FAIL _SCVM_ "A memory request failed.\n\n"
+
+#define MSGCVS_BAD_NS _SCVM_ "NS <= 0 illegal.\n\n"
+
+
+#define MSGCVS_YS0_NULL _SCVM_ "yS0 = NULL illegal.\n\n"
+
+#define MSGCVS_BAD_ISM1 _SCVM_ "Illegal value for ism.\n"
+#define MSGCVS_BAD_ISM2 "The legal values are: "
+#define MSGCVS_BAD_ISM3 "CV_SIMULTANEOUS, CV_STAGGERED and CV_STAGGERED1.\n\n"
+#define MSGCVS_BAD_ISM  MSGCVS_BAD_ISM1 MSGCVS_BAD_ISM2 MSGCVS_BAD_ISM3
+
+#define MSGCVS_SREI_SENSI1 "CVodeSensReInit-- Illegal attempt to call before "
+#define MSGCVS_SREI_SENSI2 "calling CVodeSensMalloc.\n\n"
+#define MSGCVS_SREI_NO_SENSI MSGCVS_SREI_SENSI1 MSGCVS_SREI_SENSI2
+
+#define MSGCVS_SCVT_NO_MEM "CVodeSensToggle-- cvode_mem = NULL illegal.\n\n"
+
+#define MSGCVS_SCVT_SENSI1 "CVodeSensToggle-- Illegal attempt to call before "
+#define MSGCVS_SCVT_SENSI2 "calling CVodeSensMalloc.\n\n"
+#define MSGCVS_SCVT_NO_SENSI MSGCVS_SCVT_SENSI1 MSGCVS_SCVT_SENSI2
+
+/* CVode Error Messages */
+
+#define _CVODE_ "CVode-- "
+#define _CVIS_  "Initial Setup: "
+
+#define MSGCVS_CVODE_NO_MEM _CVODE_ "cvode_mem = NULL illegal.\n\n"
+
+#define MSGCVS_CVODE_NO_MALLOC _CVODE_ "CVodeMalloc has not been called yet.\n\n"
+
+#define MSGCVS_NO_EFUN _CVODE_ _CVIS_ "itol = CV_WF but no EwtSet function was provided.\n\n"
+
+#define MSGCVS_FAIL_EWT _CVODE_ _CVIS_ "The user-provide EwtSet function failed.\n\n"
+
+#define MSGCVS_BAD_EWT _CVODE_ _CVIS_ "Initial ewt has component(s) equal to zero (illegal).\n\n"
+
+#define MSGCVS_BAD_EWTQ _CVODE_ _CVIS_ "Initial ewtQ has component(s) equal to zero (illegal).\n\n"
+
+#define MSGCVS_BAD_ISM_IFS _CVODE_ _CVIS_ "Illegal sens. rhs for ism = CV_STAGGERED1.\n\n"
+
+#define MSGCVS_BAD_EWTS _CVODE_ _CVIS_ "Initial ewtS has component(s) equal to zero (illegal).\n\n"
+
+#define MSGCVS_LSOLVE_NULL _CVODE_ _CVIS_ "The linear solver's solve routine is NULL.\n\n"
+
+#define MSGCVS_LINIT_FAIL _CVODE_ _CVIS_ "The linear solver's init routine failed.\n\n"
+
+#define MSGCVS_YOUT_NULL _CVODE_ "yout = NULL illegal.\n\n"
+
+#define MSGCVS_TRET_NULL _CVODE_ "tret = NULL illegal.\n\n"
+
+#define MSGCVS_BAD_ITASK _CVODE_ "Illegal value for itask.\n"
+
+#define MSGCVS_NO_TSTOP1 _CVODE_ "itask = CV_NORMAL_TSTOP or itask = CV_ONE_STEP_TSTOP "
+#define MSGCVS_NO_TSTOP2 "but tstop was not set.\n\n"
+#define MSGCVS_NO_TSTOP  MSGCVS_NO_TSTOP1 MSGCVS_NO_TSTOP2
+
+#define MSGCVS_BAD_H0 _CVODE_ "h0 and tout - t0 are inconsistent.\n\n"
+
+#define MSGCVS_P_NULL _CVODE_ "p = NULL when using internal DQ for sensitivity RHS illegal.\n\n"
+
+#define MSGCVS_HNIL_DONE_1 _CVODE_ "The above warning has been issued mxhnil times "
+#define MSGCVS_HNIL_DONE_2 "and will not be\nissued again for this problem.\n\n"
+#define MSGCVS_HNIL_DONE   MSGCVS_HNIL_DONE_1 MSGCVS_HNIL_DONE_2
+
+#define MSGCVS_TOO_CLOSE _CVODE_ "tout too close to t0 to start integration.\n\n"
+
+#define MSGCVS_BAD_INIT_ROOT _CVODE_ "Root found at and very near initial t.\n\n"
+
+#define MSGCVS_BAD_TOUT_1 _CVODE_ "Trouble interpolating at" MSG_TIME_TOUT ".\n"
+#define MSGCVS_BAD_TOUT_2 "tout too far back in direction of integration.\n\n"
+#define MSGCVS_BAD_TOUT   MSGCVS_BAD_TOUT_1 MSGCVS_BAD_TOUT_2
+
+#define MSGCVS_MAX_STEPS _CVODE_ "At " MSG_TIME ", mxstep steps taken before reaching tout.\n\n"
+
+#define MSGCVS_EWT_NOW_FAIL _CVODE_ "At " MSG_TIME ", the user-provide EwtSet function failed.\n\n"
+
+#define MSGCVS_EWT_NOW_BAD _CVODE_ "At " MSG_TIME ", a component of ewt has become <= 0.\n\n"
+
+#define MSGCVS_EWTS_NOW_BAD _CVODE_ "At " MSG_TIME ", a component of ewtS has become <= 0.\n\n"
+
+#define MSGCVS_EWTQ_NOW_BAD _CVODE_ "At " MSG_TIME ", a component of ewtQ has become <= 0.\n\n"
+
+#define MSGCVS_TOO_MUCH_ACC _CVODE_ "At " MSG_TIME ", too much accuracy requested.\n\n"
+
+#define MSGCVS_HNIL_1 _CVODE_ "Warning: Internal " MSG_TIME_H
+#define MSGCVS_HNIL_2 "\nare such that t + h = t on the next step.\n"
+#define MSGCVS_HNIL_3 "The solver will continue anyway.\n\n"
+#define MSGCVS_HNIL   MSGCVS_HNIL_1 MSGCVS_HNIL_2 MSGCVS_HNIL_3
+
+#define MSGCVS_ERR_FAILS_1 _CVODE_ "At " MSG_TIME_H ", the error test\n"
+#define MSGCVS_ERR_FAILS_2 "failed repeatedly or with |h| = hmin.\n\n"
+#define MSGCVS_ERR_FAILS   MSGCVS_ERR_FAILS_1 MSGCVS_ERR_FAILS_2
+
+#define MSGCVS_CONV_FAILS_1 _CVODE_ "At " MSG_TIME_H ", the corrector\n"
+#define MSGCVS_CONV_FAILS_2 "convergence failed repeatedly or with |h| = hmin.\n\n"
+#define MSGCVS_CONV_FAILS   MSGCVS_CONV_FAILS_1 MSGCVS_CONV_FAILS_2
+
+#define MSGCVS_SETUP_FAILED_1 _CVODE_ "At " MSG_TIME ", the setup routine failed "
+#define MSGCVS_SETUP_FAILED_2 "in an unrecoverable manner.\n\n"
+#define MSGCVS_SETUP_FAILED   MSGCVS_SETUP_FAILED_1 MSGCVS_SETUP_FAILED_2
+
+#define MSGCVS_SOLVE_FAILED_1 _CVODE_ "At " MSG_TIME ", the solve routine failed in an "
+#define MSGCVS_SOLVE_FAILED_2 "unrecoverable manner.\n\n"
+#define MSGCVS_SOLVE_FAILED   MSGCVS_SOLVE_FAILED_1 MSGCVS_SOLVE_FAILED_2
+
+#define MSGCVS_BAD_TSTOP_1 _CVODE_ "tstop is behind current " MSG_TIME
+#define MSGCVS_BAD_TSTOP_2 "\nin the direction of integration.\n\n"
+#define MSGCVS_BAD_TSTOP   MSGCVS_BAD_TSTOP_1 MSGCVS_BAD_TSTOP_2
+
+#define MSGCVS_CLOSE_ROOTS _CVODE_ "Root found at and very near current " MSG_TIME ".\n\n"
+
+/* CVodeGetDky Error Messages */
+
+#define _DKY_ "CVodeGetDky-- "
+
+#define MSGCVS_DKY_NO_MEM _DKY_ "cvode_mem = NULL illegal.\n\n"
+
+#define MSGCVS_BAD_K _DKY_ "Illegal value for k.\n\n"
+
+#define MSGCVS_BAD_DKY _DKY_ "dky = NULL illegal.\n\n"
+
+#define MSGCVS_BAD_T1 _DKY_ "Illegal value for t.\n"
+#define MSGCVS_BAD_T2 MSG_TIME_INT
+#define MSGCVS_BAD_T  MSGCVS_BAD_T1 MSGCVS_BAD_T2
+
+/* CVodeGetSens/CVodeGetSens1/CVodeGetSensDky1/CVodeGetSensDky Error Messages */
+
+#define _SDKY_ "CVodeGetSens/CVodeGetSens1/CVodeGetSensDky/CVodeGetSensDky1-- "
+
+#define MSGCVS_SDKY_NO_MEM _SDKY_ "cvode_mem = NULL illegal.\n\n"
+
+#define MSGCVS_SDKY_SENSI_1  "Illegal attempt to call before calling CVodeSensMalloc.\n\n"
+#define MSGCVS_SDKY_NO_SENSI _SDKY_ MSGCVS_SDKY_SENSI_1
+
+#define MSGCVS_SBAD_IS _SDKY_ "Illegal value for is.\n\n"
+
+#define MSGCVS_SBAD_K _SDKY_ "Illegal value for k.\n\n"
+
+#define MSGCVS_SBAD_T_1 _SDKY_ "Illegal value for t.\n"
+#define MSGCVS_SBAD_T_2 "t not in interval tcur - hu to tcur.\n\n"
+#define MSGCVS_SBAD_T   MSGCVS_SBAD_T_1 MSGCVS_SBAD_T_2
+
+#define MSGCVS_SBAD_DKYA _SDKY_ "dkyA = NULL illegal.\n\n"
+#define MSGCVS_SBAD_DKY  _SDKY_ "dky = NULL illegal.\n\n"
+
+/* CVodeGetQuad/CVodeGetQuadDky Error Messages */
+
+#define _QDKY_ "CVodeGetQuad/CVodeGetQuadDky-- "
+
+#define MSGCVS_QDKY_NO_MEM _QDKY_ "cvode_mem = NULL illegal.\n\n"
+
+#define MSGCVS_QDKY_QUAD_1  "Illegal attempt to call before calling CVodeQuadMalloc.\n\n"
+#define MSGCVS_QDKY_NO_QUAD _QDKY_ MSGCVS_QDKY_QUAD_1
+
+#define MSGCVS_QBAD_DKY _QDKY_ "dky = NULL illegal.\n\n"
+
+#define MSGCVS_QBAD_K _QDKY_ "Illegal value for k.\n\n"
+
+#define MSGCVS_QBAD_T_1 _QDKY_ "Illegal value for t.\n"
+#define MSGCVS_QBAD_T_2 MSG_TIME_INT
+#define MSGCVS_QBAD_T   MSGCVS_QBAD_T_1 MSGCVS_QBAD_T_2
+
+/* CVodeGet* Error Messages */
+
+#define MSGCVS_GET_NO_MEM    "cvode_mem = NULL in a CVodeGet routine illegal. \n\n"
+
+#define MSGCVS_GET_NO_SLDET1 "CVodeGetNumStabLimOrderReds-- Illegal attempt "
+#define MSGCVS_GET_NO_SLDET2 "to call without enabling SLDET.\n\n"
+#define MSGCVS_GET_NO_SLDET  MSGCVS_GET_NO_SLDET1 MSGCVS_GET_NO_SLDET2
+
+#define MSGCVS_GET_NO_QUAD1  "CVodeGetQuad*-- Illegal attempt to call before "
+#define MSGCVS_GET_NO_QUAD2  "calling CVodeQuadMalloc.\n\n"
+#define MSGCVS_GET_NO_QUAD   MSGCVS_GET_NO_QUAD1 MSGCVS_GET_NO_QUAD2
+
+#define MSGCVS_GET_NO_SENSI1 "CVodeGetSens*-- Illegal attempt to call before "
+#define MSGCVS_GET_NO_SENSI2 "calling CVodeSensMalloc.\n\n"
+#define MSGCVS_GET_NO_SENSI  MSGCVS_GET_NO_SENSI1 MSGCVS_GET_NO_SENSI2
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvodesio.c b/Win32/WinCVODE/sundials/cvodes/source/cvodesio.c
new file mode 100644
index 0000000..b902255
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvodesio.c
@@ -0,0 +1,1892 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the optional input and output
+ * functions for the CVODES solver.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvodes_impl.h"
+#include "sundialsmath.h"
+#include "sundialstypes.h"
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+
+#define lrw   (cv_mem->cv_lrw)
+#define liw   (cv_mem->cv_liw)
+#define lrw1  (cv_mem->cv_lrw1)
+#define liw1  (cv_mem->cv_liw1)
+#define lrw1Q (cv_mem->cv_lrw1Q)
+#define liw1Q (cv_mem->cv_liw1Q)
+
+/* 
+ * =================================================================
+ * CVODE optional input functions
+ * =================================================================
+ */
+
+/* 
+ * CVodeSetErrFile
+ *
+ * Specifies the FILE pointer for output (NULL means no messages)
+ */
+
+int CVodeSetErrFile(void *cvode_mem, FILE *errfp)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_errfp = errfp;
+
+  return(CV_SUCCESS);
+}
+
+#define errfp (cv_mem->cv_errfp)
+
+/* 
+ * CVodeSetIterType
+ *
+ * Specifies the iteration type (CV_FUNCTIONAL or CV_NEWTON)
+ */
+
+int CVodeSetIterType(void *cvode_mem, int iter)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if ((iter != CV_FUNCTIONAL) && (iter != CV_NEWTON)) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_BAD_ITER);
+    return (CV_ILL_INPUT);
+  }
+
+  cv_mem->cv_iter = iter;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetFdata
+ *
+ * Specifies the user data pointer for f
+ */
+
+int CVodeSetFdata(void *cvode_mem, void *f_data)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_f_data = f_data;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMaxOrd
+ *
+ * Specifies the maximum method order
+ */
+
+int CVodeSetMaxOrd(void *cvode_mem, int maxord)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (maxord <= 0) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_NEG_MAXORD);
+    return(CV_ILL_INPUT);
+  }
+  
+  if (maxord > cv_mem->cv_qmax) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_BAD_MAXORD);
+    return(CV_ILL_INPUT);
+  }
+
+  cv_mem->cv_qmax = maxord;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMaxNumSteps
+ *
+ * Specifies the maximum number of integration steps
+ */
+
+int CVodeSetMaxNumSteps(void *cvode_mem, long int mxsteps)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (mxsteps < 0) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_NEG_MXSTEPS);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Passing 0 sets the default */
+  if (mxsteps == 0)
+    cv_mem->cv_mxstep = MXSTEP_DEFAULT;
+  else
+    cv_mem->cv_mxstep = mxsteps;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMaxHnilWarns
+ *
+ * Specifies the maximum number of warnings for small h
+ */
+
+int CVodeSetMaxHnilWarns(void *cvode_mem, int mxhnil)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_mxhnil = mxhnil;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ *CVodeSetStabLimDet
+ *
+ * Turns on/off the stability limit detection algorithm
+ */
+
+int CVodeSetStabLimDet(void *cvode_mem, booleantype sldet)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if(sldet && (cv_mem->cv_lmm != CV_BDF) ) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_SLDET);
+    return(CV_ILL_INPUT);
+  }
+
+  cv_mem->cv_sldeton = sldet;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetInitStep
+ *
+ * Specifies the initial step size
+ */
+
+int CVodeSetInitStep(void *cvode_mem, realtype hin)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_hin = hin;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMinStep
+ *
+ * Specifies the minimum step size
+ */
+
+int CVodeSetMinStep(void *cvode_mem, realtype hmin)
+{
+  realtype hmax;
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (hmin < 0) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_NEG_HMIN);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Passing 0 sets hmin = zero */
+  if (hmin == ZERO) {
+    cv_mem->cv_hmin = HMIN_DEFAULT;
+    return(CV_SUCCESS);
+  }
+
+  if (hmin * cv_mem->cv_hmax_inv > ONE) {
+    hmax = ONE/cv_mem->cv_hmax_inv;
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_BAD_HMIN_HMAX);
+    return(CV_ILL_INPUT);
+  }
+
+  cv_mem->cv_hmin = hmin;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMaxStep
+ *
+ * Specifies the maximum step size
+ */
+
+int CVodeSetMaxStep(void *cvode_mem, realtype hmax)
+{
+  realtype hmax_inv;
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (hmax < 0) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_NEG_HMAX);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Passing 0 sets hmax = infinity */
+  if (hmax == ZERO) {
+    cv_mem->cv_hmax_inv = HMAX_INV_DEFAULT;
+    return(CV_SUCCESS);
+  }
+
+  hmax_inv = ONE/hmax;
+  if (hmax_inv * cv_mem->cv_hmin > ONE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_BAD_HMIN_HMAX);
+    return(CV_ILL_INPUT);
+  }
+
+  cv_mem->cv_hmax_inv = hmax_inv;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetStopTime
+ *
+ * Specifies the time beyond which the integration is not to
+ * proceed
+ */
+
+int CVodeSetStopTime(void *cvode_mem, realtype tstop)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_tstop = tstop;
+  cv_mem->cv_tstopset = TRUE;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMaxErrTestFails
+ *
+ * Specifies the maximum number of error test failures during one
+ * step try.
+ */
+
+int CVodeSetMaxErrTestFails(void *cvode_mem, int maxnef)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_maxnef = maxnef;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMaxConvFails
+ *
+ * Specifies the maximum number of nonlinear convergence failures 
+ * during one step try.
+ */
+
+int CVodeSetMaxConvFails(void *cvode_mem, int maxncf)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_maxncf = maxncf;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetMaxNonlinIters
+ *
+ * Specifies the maximum number of nonlinear iterations during
+ * one solve.
+ */
+
+int CVodeSetMaxNonlinIters(void *cvode_mem, int maxcor)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_maxcor = maxcor;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetNonlinConvCoef
+ *
+ * Specifies the coeficient in the nonlinear solver convergence
+ * test
+ */
+
+int CVodeSetNonlinConvCoef(void *cvode_mem, realtype nlscoef)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_nlscoef = nlscoef;
+
+  return(CV_SUCCESS);
+}
+
+/*
+ * CVodeSetTolerances
+ *
+ * Changes the integration tolerances between calls to CVode()
+ */
+
+int CVodeSetTolerances(void *cvode_mem, 
+                       int itol, realtype reltol, void *abstol)
+{
+  CVodeMem cv_mem;
+  booleantype neg_abstol;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Check if cvode_mem was allocated */
+
+  if (cv_mem->cv_MallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_NO_MALLOC);
+    return(CV_NO_MALLOC);
+  }
+
+  /* Check inputs */
+
+  if ( (itol != CV_SS) && (itol != CV_SV) ) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_BAD_ITOL);
+    return(CV_ILL_INPUT);
+  }
+
+  if (abstol == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_ABSTOL_NULL);
+    return(CV_ILL_INPUT);
+  }
+
+  if (reltol < ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_RELTOL);
+    return (CV_ILL_INPUT);
+  }
+
+  if (itol == CV_SS)
+    neg_abstol = (*((realtype *)abstol) < ZERO);
+  else
+    neg_abstol = (N_VMin((N_Vector)abstol) < ZERO);
+
+  if (neg_abstol) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_BAD_ABSTOL);
+    return(CV_ILL_INPUT);
+  }
+
+  /* Copy tolerances into memory */
+
+  if ( (itol != CV_SV) && (cv_mem->cv_VabstolMallocDone) ) {
+    N_VDestroy(cv_mem->cv_Vabstol);
+    lrw -= lrw1;
+    liw -= liw1;
+    cv_mem->cv_VabstolMallocDone = FALSE;
+  }
+
+  if ( (itol == CV_SV) && !(cv_mem->cv_VabstolMallocDone) ) {
+    cv_mem->cv_Vabstol = N_VClone(cv_mem->cv_tempv);
+    lrw += lrw1;
+    liw += liw1;
+    cv_mem->cv_VabstolMallocDone = TRUE;
+  }
+
+  cv_mem->cv_itol   = itol;
+  cv_mem->cv_reltol = reltol;      
+  if (itol == CV_SS)
+    cv_mem->cv_Sabstol = *((realtype *)abstol);
+  else
+    N_VScale(ONE, (N_Vector)abstol, cv_mem->cv_Vabstol);
+
+  cv_mem->cv_efun = CVEwtSet;
+  cv_mem->cv_e_data = cvode_mem;
+  
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeSetEwtFn
+ *
+ * Specifies the user-provide EwtSet function and data pointer for e
+ */
+
+int CVodeSetEwtFn(void *cvode_mem, CVEwtFn efun, void *e_data)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if ( cv_mem->cv_VabstolMallocDone ) {
+    N_VDestroy(cv_mem->cv_Vabstol);
+    lrw -= lrw1;
+    liw -= liw1;
+    cv_mem->cv_VabstolMallocDone = FALSE;
+  }
+
+  cv_mem->cv_itol = CV_WF;
+  cv_mem->cv_efun = efun;
+  cv_mem->cv_e_data = e_data;
+
+  return(CV_SUCCESS);
+}
+
+
+
+/* 
+ * =================================================================
+ * Quadrature optional input functions
+ * =================================================================
+ */
+
+int CVodeSetQuadFdata(void *cvode_mem, void *fQ_data)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_fQ_data = fQ_data;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeSetQuadErrCon(void *cvode_mem, booleantype errconQ, 
+                       int itolQ, realtype reltolQ, void *abstolQ)
+{
+  CVodeMem cv_mem;
+  booleantype neg_abstol;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+  
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_errconQ = errconQ;
+
+  /* Ckeck if quadrature was initialized? */
+
+  if (cv_mem->cv_quadMallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_NO_QUAD);
+    return(CV_NO_QUAD);
+  }
+
+  /* Check inputs */
+
+  if(errconQ == FALSE) {
+    if (cv_mem->cv_VabstolQMallocDone) {
+      N_VDestroy(cv_mem->cv_VabstolQ);
+      lrw -= lrw1Q;
+      liw -= liw1Q;
+      cv_mem->cv_VabstolQMallocDone = FALSE;
+    }
+    return(CV_SUCCESS);
+  }
+  
+  if ((itolQ != CV_SS) && (itolQ != CV_SV)) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_ITOLQ);
+    return(CV_ILL_INPUT);
+  }
+
+  if (abstolQ == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_ABSTOLQ_NULL);
+    return(CV_ILL_INPUT);
+  }
+
+  if (reltolQ < ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_RELTOLQ);
+    return(CV_ILL_INPUT);
+  }
+
+  if (itolQ == CV_SS)
+    neg_abstol = (*((realtype *)abstolQ) < ZERO);
+  else
+    neg_abstol = (N_VMin((N_Vector)abstolQ) < ZERO);
+
+  if (neg_abstol) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_ABSTOLQ);
+    return(CV_ILL_INPUT);
+  }
+
+  /* See if we need to free or allocate memory */
+
+  if ( (itolQ != CV_SV) && (cv_mem->cv_VabstolQMallocDone) ) {
+    N_VDestroy(cv_mem->cv_VabstolQ);
+    lrw -= lrw1Q;
+    liw -= liw1Q;
+    cv_mem->cv_VabstolQMallocDone = FALSE;
+  }
+
+  if ( (itolQ == CV_SV) && !(cv_mem->cv_VabstolQMallocDone) ) {
+    cv_mem->cv_VabstolQ = N_VClone(cv_mem->cv_tempvQ);
+    lrw += lrw1Q;
+    liw += liw1Q;
+    cv_mem->cv_VabstolMallocDone = TRUE;
+  }
+
+  /* Copy tolerances into memory */
+
+  cv_mem->cv_itolQ    = itolQ;
+  cv_mem->cv_reltolQ  = reltolQ;
+
+  if (itolQ == CV_SS)
+    cv_mem->cv_SabstolQ = *((realtype *)abstolQ);
+  else
+    N_VScale(ONE, (N_Vector)abstolQ, cv_mem->cv_VabstolQ);
+  
+  return(CV_SUCCESS);
+}
+
+/* 
+ * =================================================================
+ * FSA optional input functions
+ * =================================================================
+ */
+
+
+int CVodeSetSensRhsFn(void *cvode_mem, CVSensRhsFn fS)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_ifS  = CV_ALLSENS;
+
+  if (fS != NULL) {
+    cv_mem->cv_fS      = fS;
+    cv_mem->cv_fSDQ    = FALSE;
+  } else {
+    cv_mem->cv_fS      = CVSensRhsDQ;
+    cv_mem->cv_fS_data = cvode_mem;
+    cv_mem->cv_fSDQ    = TRUE;
+  }
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeSetSensRhs1Fn(void *cvode_mem, CVSensRhs1Fn fS1)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+  
+  cv_mem->cv_ifS  = CV_ONESENS;
+
+  if(fS1 != NULL) {
+    cv_mem->cv_fS1     = fS1;
+    cv_mem->cv_fSDQ    = FALSE;
+  } else {
+    cv_mem->cv_fS1     = CVSensRhs1DQ;
+    cv_mem->cv_fS_data = cvode_mem;
+    cv_mem->cv_fSDQ    = TRUE;
+  }
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeSetSensFdata(void *cvode_mem, void *fS_data)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_fS_data = fS_data;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeSetSensRho(void *cvode_mem, realtype rho)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_rhomax = rho;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeSetSensErrCon(void *cvode_mem, booleantype errconS)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_errconS = errconS;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeSetSensMaxNonlinIters(void *cvode_mem, int maxcorS)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return (CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  cv_mem->cv_maxcorS = maxcorS;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeSetSensParams(void *cvode_mem, realtype *p, realtype *pbar, int *plist)
+{
+  CVodeMem cv_mem;
+  int is, Ns;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  Ns = cv_mem->cv_Ns;
+
+  /* Parameters */
+
+  cv_mem->cv_p = p;
+
+  /* pbar */
+
+  if (pbar != NULL)
+    for (is=0; is<Ns; is++) {
+      if (pbar[is] == ZERO) {
+        if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_PBAR);
+        return(CV_ILL_INPUT);
+      }
+      cv_mem->cv_pbar[is] = ABS(pbar[is]);
+    }
+  else
+    for (is=0; is<Ns; is++)
+      cv_mem->cv_pbar[is] = ONE;
+
+  /* plist */
+
+  if (plist != NULL)
+    for (is=0; is<Ns; is++) {
+      if ( plist[is] <1 ) {
+        if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_PLIST);
+        return(CV_ILL_INPUT);
+      }
+      cv_mem->cv_plist[is] = plist[is];
+    }
+  else
+    for (is=0; is<Ns; is++)
+      cv_mem->cv_plist[is] = is+1;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeSetSensTolerances(void *cvode_mem, int itolS,
+                           realtype reltolS, void *abstolS)
+{
+  CVodeMem cv_mem;
+  booleantype neg_abstol;
+  realtype *atolSS;
+  N_Vector *atolSV;
+  int is, Ns;
+
+  atolSS = NULL;
+  atolSV = NULL;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_SET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Was sensitivity initialized? */
+
+  if (cv_mem->cv_sensMallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_SET_NO_SENSI);
+    return(CV_NO_SENS);
+  } 
+
+  /* Check inputs */
+
+  Ns = cv_mem->cv_Ns;
+
+  if ((itolS != CV_SS) && (itolS != CV_SV) && (itolS != CV_EE)) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_ITOLS);
+    return(CV_ILL_INPUT);
+  }
+
+  if (itolS != CV_EE) {
+
+    /* Test user-supplied tolerances */
+    
+    if (reltolS < ZERO) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_RELTOLS);
+      return(CV_ILL_INPUT);
+    }
+
+    if (abstolS == NULL) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_ABSTOLS_NULL);
+      return(CV_ILL_INPUT);
+    }
+
+    neg_abstol = FALSE;
+
+    if (itolS == CV_SS) {
+      atolSS = (realtype *) abstolS;
+      for (is=0; is<Ns; is++)
+        if (atolSS[is] < ZERO) {neg_abstol = TRUE; break;}
+    } else {
+      atolSV = (N_Vector *) abstolS;
+      for (is=0; is<Ns; is++) 
+        if (N_VMin(atolSV[is]) < ZERO) {neg_abstol = TRUE; break;}
+    }
+
+    if (neg_abstol) {
+      if(errfp!=NULL) fprintf(errfp, MSGCVS_BAD_ABSTOLS);
+      return(CV_ILL_INPUT);
+    }
+    
+  }
+
+  /* See if we should release some memory */
+
+  if ( (itolS != CV_SV) && (cv_mem->cv_VabstolSMallocDone) ) {
+    N_VDestroyVectorArray(cv_mem->cv_VabstolS, Ns);
+    lrw -= Ns*lrw1;
+    liw -= Ns*liw1;
+    cv_mem->cv_VabstolSMallocDone = FALSE;
+  }
+
+  if ( (itolS != CV_SS) && (cv_mem->cv_SabstolSMallocDone) ) {
+    free(cv_mem->cv_SabstolS);
+    lrw -= Ns;
+    cv_mem->cv_SabstolSMallocDone = FALSE;
+  }
+
+  /* If tolerances will be estimated, return now */
+
+  if (itolS == CV_EE) return(CV_SUCCESS);
+
+  /* See if we need to allocate some memory */
+
+  if ( (itolS == CV_SV) && !(cv_mem->cv_VabstolSMallocDone) ) {
+    cv_mem->cv_VabstolS = N_VCloneVectorArray(Ns, cv_mem->cv_tempv);
+    lrw += Ns*lrw1;
+    liw += Ns*liw1;
+    cv_mem->cv_VabstolSMallocDone = TRUE;
+  }
+
+  if ( (itolS == CV_SS) && !(cv_mem->cv_SabstolSMallocDone) ) {
+    cv_mem->cv_SabstolS = (realtype *)malloc(Ns*sizeof(realtype));
+    lrw += Ns;
+    cv_mem->cv_SabstolSMallocDone = TRUE;
+  }
+
+  /* Copy tolerances into memory */
+
+  cv_mem->cv_itolS   = itolS;
+  cv_mem->cv_reltolS = reltolS;
+
+  if (itolS == CV_SS)
+    for (is=0; is<Ns; is++)
+      cv_mem->cv_SabstolS[is] = atolSS[is];
+  else
+    for (is=0; is<Ns; is++)    
+      N_VScale(ONE, atolSV[is], cv_mem->cv_VabstolS[is]);
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * =================================================================
+ * CVODE optional output functions
+ * =================================================================
+ */
+
+/* 
+ * Readability constants
+ */
+
+#define nst            (cv_mem->cv_nst)
+#define nfe            (cv_mem->cv_nfe)
+#define ncfn           (cv_mem->cv_ncfn)
+#define netf           (cv_mem->cv_netf)
+#define nni            (cv_mem->cv_nni)
+#define nsetups        (cv_mem->cv_nsetups)
+#define qu             (cv_mem->cv_qu)
+#define next_q         (cv_mem->cv_next_q)
+#define ewt            (cv_mem->cv_ewt)  
+#define hu             (cv_mem->cv_hu)
+#define next_h         (cv_mem->cv_next_h)
+#define h0u            (cv_mem->cv_h0u)
+#define tolsf          (cv_mem->cv_tolsf)  
+#define acor           (cv_mem->cv_acor)
+#define lrw            (cv_mem->cv_lrw)
+#define liw            (cv_mem->cv_liw)
+#define nge            (cv_mem->cv_nge)
+#define iroots         (cv_mem->cv_iroots)
+#define nor            (cv_mem->cv_nor)
+#define sldeton        (cv_mem->cv_sldeton)
+#define tn             (cv_mem->cv_tn)
+
+/*
+ * CVodeGetNumSteps
+ *
+ * Returns the current number of integration steps
+ */
+
+int CVodeGetNumSteps(void *cvode_mem, long int *nsteps)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *nsteps = nst;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetNumRhsEvals
+ *
+ * Returns the current number of calls to f
+ */
+
+int CVodeGetNumRhsEvals(void *cvode_mem, long int *nfevals)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *nfevals = nfe;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetNumLinSolvSetups
+ *
+ * Returns the current number of calls to the linear solver setup routine
+ */
+
+int CVodeGetNumLinSolvSetups(void *cvode_mem, long int *nlinsetups)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *nlinsetups = nsetups;
+
+  return(CV_SUCCESS);
+}
+
+/*
+ * CVodeGetNumErrTestFails
+ *
+ * Returns the current number of error test failures
+ */
+
+int CVodeGetNumErrTestFails(void *cvode_mem, long int *netfails)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *netfails = netf;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetLastOrder
+ *
+ * Returns the order on the last succesful step
+ */
+
+int CVodeGetLastOrder(void *cvode_mem, int *qlast)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *qlast = qu;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetCurrentOrder
+ *
+ * Returns the order to be attempted on the next step
+ */
+
+int CVodeGetCurrentOrder(void *cvode_mem, int *qcur)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *qcur = next_q;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetNumStabLimOrderReds
+ *
+ * Returns the number of order reductions triggered by the stability
+ * limit detection algorithm
+ */
+
+int CVodeGetNumStabLimOrderReds(void *cvode_mem, long int *nslred)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (sldeton==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_SLDET);
+    return(CV_NO_SLDET);
+  }
+
+  *nslred = nor;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetActualInitStep
+ *
+ * Returns the step size used on the first step
+ */
+
+int CVodeGetActualInitStep(void *cvode_mem, realtype *hinused)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *hinused = h0u;
+
+  return(CV_SUCCESS);
+}
+
+/*
+ * CVodeGetLastStep
+ *
+ * Returns the step size used on the last successful step
+ */
+
+int CVodeGetLastStep(void *cvode_mem, realtype *hlast)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *hlast = hu;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetCurrentStep
+ *
+ * Returns the step size to be attempted on the next step
+ */
+
+int CVodeGetCurrentStep(void *cvode_mem, realtype *hcur)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+  
+  *hcur = next_h;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetCurrentTime
+ *
+ * Returns the current value of the independent variable
+ */
+
+int CVodeGetCurrentTime(void *cvode_mem, realtype *tcur)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *tcur = tn;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetTolScaleFactor
+ *
+ * Returns a suggested factor for scaling tolerances
+ */
+
+int CVodeGetTolScaleFactor(void *cvode_mem, realtype *tolsfact)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *tolsfact = tolsf;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetErrWeights
+ *
+ * This routine returns the current weight vector for y in weight.
+ * Note that weight need not be allocated by the user.
+ */
+
+int CVodeGetErrWeights(void *cvode_mem, N_Vector eweight)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  N_VScale(ONE, ewt, eweight);
+
+  return(CV_SUCCESS);
+}
+
+/*
+ * CVodeGetEstLocalErrors
+ *
+ * Returns an estimate of the local error
+ */
+
+int CVodeGetEstLocalErrors(void *cvode_mem, N_Vector ele)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  N_VScale(ONE, acor, ele);
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetWorkSpace
+ *
+ * Returns integrator work space requirements
+ */
+
+int CVodeGetWorkSpace(void *cvode_mem, long int *lenrw, long int *leniw)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *leniw = liw;
+  *lenrw = lrw;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetIntegratorStats
+ *
+ * Returns integrator statistics
+ */
+
+int CVodeGetIntegratorStats(void *cvode_mem, long int *nsteps, long int *nfevals, 
+                            long int *nlinsetups, long int *netfails, int *qlast, 
+                            int *qcur, realtype *hinused, realtype *hlast, 
+                            realtype *hcur, realtype *tcur)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *nsteps = nst;
+  *nfevals = nfe;
+  *nlinsetups = nsetups;
+  *netfails = netf;
+  *qlast = qu;
+  *qcur = next_q;
+  *hinused = h0u;
+  *hlast = hu;
+  *hcur = next_h;
+  *tcur = tn;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetNumGEvals
+ *
+ * Returns the current number of calls to g (for rootfinding)
+ */
+
+int CVodeGetNumGEvals(void *cvode_mem, long int *ngevals)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *ngevals = nge;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetRootInfo
+ *
+ * Returns pointer to array rootsfound showing roots found
+ */
+
+int CVodeGetRootInfo(void *cvode_mem, int *rootsfound)
+{
+  CVodeMem cv_mem;
+  int i, nrt;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  nrt = cv_mem->cv_nrtfn;
+
+  for (i=0; i<nrt; i++) rootsfound[i] = iroots[i];
+
+  return(CV_SUCCESS);
+}
+
+
+/* 
+ * CVodeGetNumNonlinSolvIters
+ *
+ * Returns the current number of iterations in the nonlinear solver
+ */
+
+int CVodeGetNumNonlinSolvIters(void *cvode_mem, long int *nniters)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *nniters = nni;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetNumNonlinSolvConvFails
+ *
+ * Returns the current number of convergence failures in the
+ * nonlinear solver
+ */
+
+int CVodeGetNumNonlinSolvConvFails(void *cvode_mem, long int *nncfails)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *nncfails = ncfn;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * CVodeGetNonlinSolvStats
+ *
+ * Returns nonlinear solver statistics
+ */
+
+int CVodeGetNonlinSolvStats(void *cvode_mem, long int *nniters, 
+                            long int *nncfails)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  *nniters = nni;
+  *nncfails = ncfn;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * =================================================================
+ * Quadrature optional output functions
+ * =================================================================
+ */
+
+/* 
+ * Readability constants
+ */
+
+#define quadr          (cv_mem->cv_quadr)
+#define nfQe           (cv_mem->cv_nfQe)
+#define netfQ          (cv_mem->cv_netfQ)
+#define ewtQ           (cv_mem->cv_ewtQ)
+#define errconQ        (cv_mem->cv_errconQ)
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetQuadNumRhsEvals(void *cvode_mem, long int *nfQevals)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (quadr==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_QUAD);
+    return(CV_NO_QUAD);
+  }
+
+  *nfQevals = nfQe;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetQuadNumErrTestFails(void *cvode_mem, long int *nQetfails)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (quadr==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_QUAD);
+    return(CV_NO_QUAD);
+  }
+
+  *nQetfails = netfQ;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetQuadErrWeights(void *cvode_mem, N_Vector eQweight)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (quadr==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_QUAD);
+    return(CV_NO_QUAD);
+  }
+
+  if(errconQ) N_VScale(ONE, ewtQ, eQweight);
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetQuadStats(void *cvode_mem, long int *nfQevals, long int *nQetfails)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (quadr==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_QUAD);
+    return(CV_NO_QUAD);
+  }
+
+  *nfQevals = nfQe;
+  *nQetfails = netfQ;
+
+  return(CV_SUCCESS);
+}
+
+/* 
+ * =================================================================
+ * FSA optional output functions
+ * =================================================================
+ */
+
+/* 
+ * Readability constants
+ */
+
+#define sensi          (cv_mem->cv_sensi)
+#define ism            (cv_mem->cv_ism)
+#define ewtS           (cv_mem->cv_ewtS)
+#define nfSe           (cv_mem->cv_nfSe)
+#define nfeS           (cv_mem->cv_nfeS)
+#define nniS           (cv_mem->cv_nniS)
+#define ncfnS          (cv_mem->cv_ncfnS)
+#define netfS          (cv_mem->cv_netfS)
+#define nsetupsS       (cv_mem->cv_nsetupsS)
+#define nniS1          (cv_mem->cv_nniS1)
+#define ncfnS1         (cv_mem->cv_ncfnS1)
+#define ncfS1          (cv_mem->cv_ncfS1)
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetNumSensRhsEvals(void *cvode_mem, long int *nfSevals)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (sensi==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_SENSI);
+    return(CV_NO_SENS);
+  }
+
+  *nfSevals = nfSe;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetNumRhsEvalsSens(void *cvode_mem, long int *nfevalsS)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (sensi==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_SENSI);
+    return(CV_NO_SENS);
+  }
+
+  *nfevalsS = nfeS;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetNumSensErrTestFails(void *cvode_mem, long int *nSetfails)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (sensi==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_SENSI);
+    return(CV_NO_SENS);
+  }
+
+  *nSetfails = netfS;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetNumSensLinSolvSetups(void *cvode_mem, long int *nlinsetupsS)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (sensi==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_SENSI);
+    return(CV_NO_SENS);
+  }
+
+  *nlinsetupsS = nsetupsS;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetSensErrWeights(void *cvode_mem, N_Vector_S *eSweight)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (sensi==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_SENSI);
+    return(CV_NO_SENS);
+  }
+
+  *eSweight = ewtS;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetSensStats(void *cvode_mem, long int *nfSevals, long int *nfevalsS, 
+                      long int *nSetfails, long int *nlinsetupsS)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (sensi==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_SENSI);
+    return(CV_NO_SENS);
+  }
+
+  *nfSevals = nfSe;
+  *nfevalsS = nfeS;
+  *nSetfails = netfS;
+  *nlinsetupsS = nsetupsS;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetNumSensNonlinSolvIters(void *cvode_mem, long int *nSniters)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (sensi==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_SENSI);
+    return(CV_NO_SENS);
+  }
+
+  *nSniters = nniS;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetNumSensNonlinSolvConvFails(void *cvode_mem, long int *nSncfails)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (sensi==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_SENSI);
+    return(CV_NO_SENS);
+  }
+
+  *nSncfails = ncfnS;
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetNumStgrSensNonlinSolvIters(void *cvode_mem, long int *nSTGR1niters)
+{
+  CVodeMem cv_mem;
+  int is, Ns;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  Ns = cv_mem->cv_Ns;
+
+  if (sensi==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_SENSI);
+    return(CV_NO_SENS);
+  }
+
+  if(ism==CV_STAGGERED1) 
+    for(is=0; is<Ns; is++) nSTGR1niters[is] = nniS1[is];
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetNumStgrSensNonlinSolvConvFails(void *cvode_mem, long int *nSTGR1ncfails)
+{
+  CVodeMem cv_mem;
+  int is, Ns;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  Ns = cv_mem->cv_Ns;
+
+  if (sensi==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_SENSI);
+    return(CV_NO_SENS);
+  }
+
+  if(ism==CV_STAGGERED1) 
+    for(is=0; is<Ns; is++) nSTGR1ncfails[is] = ncfnS1[is];
+
+  return(CV_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int CVodeGetSensNonlinSolvStats(void *cvode_mem, long int *nSniters, 
+                                long int *nSncfails)
+{
+  CVodeMem cv_mem;
+
+  if (cvode_mem==NULL) {
+    fprintf(stderr, MSGCVS_GET_NO_MEM);
+    return(CV_MEM_NULL);
+  }
+
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (sensi==FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSGCVS_GET_NO_SENSI);
+    return(CV_NO_SENS);
+  }
+
+  *nSniters = nniS;
+  *nSncfails = ncfnS;
+
+  return(CV_SUCCESS);
+}
+
+
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvspgmr.c b/Win32/WinCVODE/sundials/cvodes/source/cvspgmr.c
new file mode 100644
index 0000000..8948ae1
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvspgmr.c
@@ -0,0 +1,913 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the CVSPGMR linear solver.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "cvspgmr_impl.h"
+#include "cvodes_impl.h"
+
+#include "sundialsmath.h"
+
+/* Other Constants */
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+
+/* CVSPGMR linit, lsetup, lsolve, and lfree routines */
+
+static int CVSpgmrInit(CVodeMem cv_mem);
+
+static int CVSpgmrSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                        N_Vector fpred, booleantype *jcurPtr, N_Vector vtemp1,
+                        N_Vector vtemp2, N_Vector vtemp3);
+
+static int CVSpgmrSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                        N_Vector ynow, N_Vector fnow);
+
+static void CVSpgmrFree(CVodeMem cv_mem);
+
+/* CVSPGMR Atimes and PSolve routines called by generic SPGMR solver */
+
+static int CVSpgmrAtimes(void *cv_mem, N_Vector v, N_Vector z);
+
+static int CVSpgmrPSolve(void *cv_mem, N_Vector r, N_Vector z, int lr);
+
+/* CVSPGMR difference quotient routine for J*v */
+
+static int CVSpgmrDQJtimes(N_Vector v, N_Vector Jv, realtype t,
+                           N_Vector y, N_Vector fy, void *jac_data,
+                           N_Vector work);
+/* Readability Replacements */
+
+#define lrw1    (cv_mem->cv_lrw1)
+#define liw1    (cv_mem->cv_liw1)
+#define uround  (cv_mem->cv_uround)
+#define tq      (cv_mem->cv_tq)
+#define nst     (cv_mem->cv_nst)
+#define tn      (cv_mem->cv_tn)
+#define h       (cv_mem->cv_h)
+#define gamma   (cv_mem->cv_gamma)
+#define gammap  (cv_mem->cv_gammap)   
+#define nfe     (cv_mem->cv_nfe)
+#define f       (cv_mem->cv_f)
+#define f_data  (cv_mem->cv_f_data)
+#define ewt     (cv_mem->cv_ewt)
+#define errfp   (cv_mem->cv_errfp)
+#define mnewt   (cv_mem->cv_mnewt)
+#define ropt    (cv_mem->cv_ropt)
+#define linit   (cv_mem->cv_linit)
+#define lsetup  (cv_mem->cv_lsetup)
+#define lsolve  (cv_mem->cv_lsolve)
+#define lfree   (cv_mem->cv_lfree)
+#define lmem    (cv_mem->cv_lmem)
+#define vec_tmpl     (cv_mem->cv_tempv)
+#define setupNonNull (cv_mem->cv_setupNonNull)
+
+#define sqrtN   (cvspgmr_mem->g_sqrtN)   
+#define ytemp   (cvspgmr_mem->g_ytemp)
+#define x       (cvspgmr_mem->g_x)
+#define ycur    (cvspgmr_mem->g_ycur)
+#define fcur    (cvspgmr_mem->g_fcur)
+#define delta   (cvspgmr_mem->g_delta)
+#define deltar  (cvspgmr_mem->g_deltar)
+#define npe     (cvspgmr_mem->g_npe)
+#define nli     (cvspgmr_mem->g_nli)
+#define nps     (cvspgmr_mem->g_nps)
+#define ncfl    (cvspgmr_mem->g_ncfl)
+#define nstlpre (cvspgmr_mem->g_nstlpre)
+#define njtimes (cvspgmr_mem->g_njtimes)
+#define nfeSG   (cvspgmr_mem->g_nfeSG)
+#define spgmr_mem (cvspgmr_mem->g_spgmr_mem)
+#define last_flag (cvspgmr_mem->g_last_flag)
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmr
+ * -----------------------------------------------------------------
+ * This routine initializes the memory record and sets various function
+ * fields specific to the Spgmr linear solver module. CVSpgmr first
+ * calls the existing lfree routine if this is not NULL.  It then sets
+ * the cv_linit, cv_lsetup, cv_lsolve, cv_lfree fields in (*cvode_mem)
+ * to be CVSpgmrInit, CVSpgmrSetup, CVSpgmrSolve, and CVSpgmrFree,
+ * respectively.  It allocates memory for a structure of type
+ * CVSpgmrMemRec and sets the cv_lmem field in (*cvode_mem) to the
+ * address of this structure.  It sets setupNonNull in (*cvode_mem),
+ * and sets the following fields in the CVSpgmrMemRec structure:
+ *   g_pretype = pretype                                       
+ *   g_gstype  = gstype                                       
+ *   g_maxl    = MIN(N,CVSPGMR_MAXL)  if maxl <= 0             
+ *             = maxl                 if maxl > 0              
+ *   g_delt    = CVSPGMR_DELT if delt == 0.0                     
+ *             = delt         if delt != 0.0                     
+ *   g_P_data  = P_data                                        
+ *   g_pset    = pset                                       
+ *   g_psolve  = psolve                                        
+ *   g_jtimes  = input parameter jtimes  if jtimes != NULL
+ *             = CVSpgmrDQJtimes         otherwise
+ *   g_j_data  = input parameter jac_data
+ * Finally, CVSpgmr allocates memory for ytemp and x, and calls
+ * SpgmrMalloc to allocate memory for the Spgmr solver.
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmr(void *cvode_mem, int pretype, int maxl)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+  int mxl;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  /* Check if N_VDotProd is present */
+  if(vec_tmpl->ops->nvdotprod == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_BAD_NVECTOR);
+    return(CVSPGMR_ILL_INPUT);
+  }
+
+  if (lfree != NULL) lfree(cv_mem);
+
+  /* Set four main function fields in cv_mem */
+  linit  = CVSpgmrInit;
+  lsetup = CVSpgmrSetup;
+  lsolve = CVSpgmrSolve;
+  lfree  = CVSpgmrFree;
+
+  /* Get memory for CVSpgmrMemRec */
+  cvspgmr_mem = (CVSpgmrMem) malloc(sizeof(CVSpgmrMemRec));
+  if (cvspgmr_mem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_MEM_FAIL);
+    return(CVSPGMR_MEM_FAIL);
+  }
+
+  /* Set Spgmr parameters that have been passed in call sequence */
+  cvspgmr_mem->g_pretype    = pretype;
+  mxl = cvspgmr_mem->g_maxl = (maxl <= 0) ? CVSPGMR_MAXL : maxl;
+
+  /* Set default values for the rest of the Spgmr parameters */
+  cvspgmr_mem->g_gstype     = MODIFIED_GS;
+  cvspgmr_mem->g_delt       = CVSPGMR_DELT;
+  cvspgmr_mem->g_P_data     = NULL;
+  cvspgmr_mem->g_pset       = NULL;
+  cvspgmr_mem->g_psolve     = NULL;
+  cvspgmr_mem->g_jtimes     = CVSpgmrDQJtimes;
+  cvspgmr_mem->g_j_data     = cvode_mem;
+  cvspgmr_mem->g_last_flag  = CVSPGMR_SUCCESS;
+
+
+  setupNonNull = FALSE;
+
+  /* Check for legal pretype */ 
+  if ((pretype != PREC_NONE) && (pretype != PREC_LEFT) &&
+      (pretype != PREC_RIGHT) && (pretype != PREC_BOTH)) {
+    if(errfp!=NULL) 
+      fprintf(errfp, MSGS_BAD_PRETYPE);
+    return(CVSPGMR_ILL_INPUT);
+  }
+
+  /* Allocate memory for ytemp and x */
+  ytemp = N_VClone(vec_tmpl);
+  if (ytemp == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_MEM_FAIL);
+    return(CVSPGMR_MEM_FAIL);
+  }
+  x = N_VClone(vec_tmpl);
+  if (x == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_MEM_FAIL);
+    N_VDestroy(ytemp);
+    return(CVSPGMR_MEM_FAIL);
+  }
+
+  /* Compute sqrtN from a dot product */
+  N_VConst(ONE, ytemp);
+  sqrtN = RSqrt( N_VDotProd(ytemp, ytemp) );
+
+  /* Call SpgmrMalloc to allocate workspace for Spgmr */
+  spgmr_mem = SpgmrMalloc(mxl, vec_tmpl);
+  if (spgmr_mem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_MEM_FAIL);
+    N_VDestroy(ytemp);
+    N_VDestroy(x);
+    return(CVSPGMR_MEM_FAIL);
+  }
+  
+  /* Attach linear solver memory to integrator memory */
+  lmem = cvspgmr_mem;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrSetPrecType
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrSetPrecType(void *cvode_mem, int pretype)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  /* Check for legal pretype */ 
+  if ((pretype != PREC_NONE) && (pretype != PREC_LEFT) &&
+      (pretype != PREC_RIGHT) && (pretype != PREC_BOTH)) {
+    if(errfp!=NULL) 
+      fprintf(errfp, MSGS_SET_BAD_PRETYPE);
+    return(CVSPGMR_ILL_INPUT);
+  }
+
+  cvspgmr_mem->g_pretype = pretype;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrSetGSType
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrSetGSType(void *cvode_mem, int gstype)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  /* Check for legal gstype */
+  if ((gstype != MODIFIED_GS) && (gstype != CLASSICAL_GS)) {
+    if(errfp!=NULL) 
+      fprintf(errfp, MSGS_SET_BAD_GSTYPE);
+    return(CVSPGMR_ILL_INPUT);
+  }
+
+  cvspgmr_mem->g_gstype = gstype;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrSetDelt
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrSetDelt(void *cvode_mem, realtype delt)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  /* Check for legal delt */
+  if(delt < ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SET_BAD_DELT);
+    return(CVSPGMR_ILL_INPUT);
+  }
+
+  cvspgmr_mem->g_delt = (delt == ZERO) ? CVSPGMR_DELT : delt;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrSetPrecSetupFn
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrSetPreconditioner(void *cvode_mem, CVSpgmrPrecSetupFn pset, 
+                             CVSpgmrPrecSolveFn psolve, void *P_data)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  cvspgmr_mem->g_pset = pset;
+  cvspgmr_mem->g_psolve = psolve;
+  if (psolve != NULL) cvspgmr_mem->g_P_data = P_data;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrSetJacTimesVecFn
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrSetJacTimesVecFn(void *cvode_mem, CVSpgmrJacTimesVecFn jtimes, void *jac_data)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  cvspgmr_mem->g_jtimes = jtimes;
+  if (jtimes != NULL) cvspgmr_mem->g_j_data = jac_data;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetWorkSpace
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetWorkSpace(void *cvode_mem, long int *lenrwSG, long int *leniwSG)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+  int maxl;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  maxl = cvspgmr_mem->g_maxl;
+  *lenrwSG = lrw1*(maxl + 5) + maxl*(maxl + 4) + 1;
+  *leniwSG = liw1*(maxl + 5);
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetNumPrecEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetNumPrecEvals(void *cvode_mem, long int *npevals)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  *npevals = npe;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetNumPrecSolves
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetNumPrecSolves(void *cvode_mem, long int *npsolves)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  *npsolves = nps;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetNumLinIters
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetNumLinIters(void *cvode_mem, long int *nliters)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  *nliters = nli;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetNumConvFails
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetNumConvFails(void *cvode_mem, long int *nlcfails)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  *nlcfails = ncfl;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetNumJtimesEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetNumJtimesEvals(void *cvode_mem, long int *njvevals)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  *njvevals = njtimes;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetNumRhsEvals
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetNumRhsEvals(void *cvode_mem, long int *nfevalsSG)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  *nfevalsSG = nfeSG;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrGetLastFlag
+ * -----------------------------------------------------------------
+ */
+
+int CVSpgmrGetLastFlag(void *cvode_mem, int *flag)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+
+  /* Return immediately if cvode_mem is NULL */
+  if (cvode_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_CVMEM_NULL);
+    return(CVSPGMR_MEM_NULL);
+  }
+  cv_mem = (CVodeMem) cvode_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(CVSPGMR_LMEM_NULL);
+  }
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  *flag = last_flag;
+
+  return(CVSPGMR_SUCCESS);
+}
+
+
+/* Additional readability Replacements */
+
+#define pretype (cvspgmr_mem->g_pretype)
+#define gstype  (cvspgmr_mem->g_gstype)
+#define delt    (cvspgmr_mem->g_delt)
+#define maxl    (cvspgmr_mem->g_maxl)
+#define psolve  (cvspgmr_mem->g_psolve)
+#define pset    (cvspgmr_mem->g_pset)
+#define P_data  (cvspgmr_mem->g_P_data)
+#define jtimes  (cvspgmr_mem->g_jtimes)
+#define j_data  (cvspgmr_mem->g_j_data)
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrInit
+ * -----------------------------------------------------------------
+ * This routine does remaining initializations specific to the Spgmr 
+ * linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static int CVSpgmrInit(CVodeMem cv_mem)
+{
+  CVSpgmrMem cvspgmr_mem;
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  /* Initialize counters */
+  npe = nli = nps = ncfl = nstlpre = 0;
+  njtimes = nfeSG = 0;
+
+  /* Check for legal combination pretype - psolve */
+  if ((pretype != PREC_NONE) && (psolve == NULL)) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_PSOLVE_REQ);
+    last_flag = -1;
+    return(-1);
+  }
+
+  /* Set setupNonNull = TRUE iff there is preconditioning (pretype != PREC_NONE)
+     and there is a preconditioning setup phase (pset != NULL)             */
+  setupNonNull = (pretype != PREC_NONE) && (pset != NULL);
+
+  /* If jtimes is NULL at this time, set it to DQ */
+  if (jtimes == NULL) {
+    jtimes = CVSpgmrDQJtimes;
+    j_data = cv_mem;
+  }
+
+  last_flag = CVSPGMR_SUCCESS;
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrSetup
+ * -----------------------------------------------------------------
+ * This routine does the setup operations for the Spgmr linear solver.
+ * It makes a decision as to whether or not to signal for re-evaluation
+ * of Jacobian data in the pset routine, based on various state
+ * variables, then it calls pset.  If we signal for re-evaluation,
+ * then we reset jcur = *jcurPtr to TRUE, regardless of the pset output.
+ * In any case, if jcur == TRUE, we increment npe and save nst in nstlpre.
+ * -----------------------------------------------------------------
+ */
+
+static int CVSpgmrSetup(CVodeMem cv_mem, int convfail, N_Vector ypred,
+                        N_Vector fpred, booleantype *jcurPtr, N_Vector vtemp1,
+                        N_Vector vtemp2, N_Vector vtemp3)
+{
+  booleantype jbad, jok;
+  realtype dgamma;
+  int  ier;
+  CVSpgmrMem cvspgmr_mem;
+
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  /* Use nst, gamma/gammap, and convfail to set J eval. flag jok */
+  dgamma = ABS((gamma/gammap) - ONE);
+  jbad = (nst == 0) || (nst > nstlpre + CVSPGMR_MSBPRE) ||
+    ((convfail == CV_FAIL_BAD_J) && (dgamma < CVSPGMR_DGMAX)) ||
+    (convfail == CV_FAIL_OTHER);
+  *jcurPtr = jbad;
+  jok = !jbad;
+
+  /* Call pset routine and possibly reset jcur */
+  ier = pset(tn, ypred, fpred, jok, jcurPtr, gamma, P_data, 
+             vtemp1, vtemp2, vtemp3);
+  if (jbad) *jcurPtr = TRUE;
+
+  /* If jcur = TRUE, increment npe and save nst value */
+  if (*jcurPtr) {
+    npe++;
+    nstlpre = nst;
+  }
+
+  /* Return the same value ier that pset returned */
+  last_flag = ier;
+  return(ier);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrSolve
+ * -----------------------------------------------------------------
+ * This routine handles the call to the generic solver SpgmrSolve
+ * for the solution of the linear system Ax = b with the SPGMR method,
+ * without restarts.  The solution x is returned in the vector b.
+ *
+ * If the WRMS norm of b is small, we return x = b (if this is the first
+ * Newton iteration) or x = 0 (if a later Newton iteration).
+ *
+ * Otherwise, we set the tolerance parameter and initial guess (x = 0),
+ * call SpgmrSolve, and copy the solution x into b.  The x-scaling and
+ * b-scaling arrays are both equal to weight, and no restarts are allowed.
+ *
+ * The counters nli, nps, and ncfl are incremented, and the return value
+ * is set according to the success of SpgmrSolve.  The success flag is
+ * returned if SpgmrSolve converged, or if this is the first Newton
+ * iteration and the residual norm was reduced below its initial value.
+ * -----------------------------------------------------------------
+ */
+
+static int CVSpgmrSolve(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+                        N_Vector ynow, N_Vector fnow)
+{
+  realtype bnorm, res_norm;
+  CVSpgmrMem cvspgmr_mem;
+  int nli_inc, nps_inc, ier;
+  
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  /* Test norm(b); if small, return x = 0 or x = b */
+  deltar = delt*tq[4]; 
+
+  bnorm = N_VWrmsNorm(b, weight);
+  if (bnorm <= deltar) {
+    if (mnewt > 0) N_VConst(ZERO, b); 
+    return(0);
+  }
+
+  /* Set vectors ycur and fcur for use by the Atimes and Psolve routines */
+  ycur = ynow;
+  fcur = fnow;
+
+  /* Set inputs delta and initial guess x = 0 to SpgmrSolve */  
+  delta = deltar * sqrtN;
+  N_VConst(ZERO, x);
+  
+  /* Call SpgmrSolve and copy x to b */
+  ier = SpgmrSolve(spgmr_mem, cv_mem, x, b, pretype, gstype, delta, 0,
+                   cv_mem, weight, weight, CVSpgmrAtimes, CVSpgmrPSolve,
+                   &res_norm, &nli_inc, &nps_inc);
+
+  N_VScale(ONE, x, b);
+  
+  /* Increment counters nli, nps, and ncfl */
+  nli += nli_inc;
+  nps += nps_inc;
+  if (ier != 0) ncfl++;
+
+  /* Set return value to -1, 0, or 1 */
+  last_flag = ier;
+
+  if (ier < 0) return(-1);  
+
+  if ((ier == SPGMR_SUCCESS) || 
+      ((ier == SPGMR_RES_REDUCED) && (mnewt == 0)))
+    return(0);
+
+  return(1);  
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrFree
+ * -----------------------------------------------------------------
+ * This routine frees memory specific to the Spgmr linear solver.
+ * -----------------------------------------------------------------
+ */
+
+static void CVSpgmrFree(CVodeMem cv_mem)
+{
+  CVSpgmrMem cvspgmr_mem;
+
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+  
+  N_VDestroy(ytemp);
+  N_VDestroy(x);
+  SpgmrFree(spgmr_mem);
+  free(cvspgmr_mem);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrAtimes
+ * -----------------------------------------------------------------
+ * This routine generates the matrix-vector product z = Mv, where
+ * M = I - gamma*J. The product J*v is obtained by calling the jtimes 
+ * routine. It is then scaled by -gamma and added to v to obtain M*v.
+ * The return value is the same as the value returned by jtimes --
+ * 0 if successful, nonzero otherwise.
+ * -----------------------------------------------------------------
+ */
+
+static int CVSpgmrAtimes(void *cvode_mem, N_Vector v, N_Vector z)
+{
+  CVodeMem   cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+  int jtflag;
+
+  cv_mem = (CVodeMem) cvode_mem;
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  jtflag = jtimes(v, z, tn, ycur, fcur, j_data, ytemp);
+  njtimes++;
+  if (jtflag != 0) return(jtflag);
+
+  N_VLinearSum(ONE, v, -gamma, z, z);
+
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrPSolve
+ * -----------------------------------------------------------------
+ * This routine interfaces between the generic SpgmrSolve routine and
+ * the user's psolve routine.  It passes to psolve all required state 
+ * information from cvode_mem.  Its return value is the same as that
+ * returned by psolve. Note that the generic SPGMR solver guarantees
+ * that CVSpgmrPSolve will not be called in the case in which
+ * preconditioning is not done. This is the only case in which the
+ * user's psolve routine is allowed to be NULL.
+ * -----------------------------------------------------------------
+ */
+
+static int CVSpgmrPSolve(void *cvode_mem, N_Vector r, N_Vector z, int lr)
+{
+  CVodeMem   cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+  int ier;
+
+  cv_mem = (CVodeMem) cvode_mem;
+  cvspgmr_mem = (CVSpgmrMem)lmem;
+
+  ier = psolve(tn, ycur, fcur, r, z, gamma, delta, lr, P_data, ytemp);
+  /* This call is counted in nps within the CVSpgmrSolve routine */
+
+  return(ier);     
+}
+
+/*
+ * -----------------------------------------------------------------
+ * CVSpgmrDQJtimes
+ * -----------------------------------------------------------------
+ * This routine generates a difference quotient approximation to
+ * the Jacobian times vector f_y(t,y) * v. The approximation is 
+ * Jv = vnrm[f(y + v/vnrm) - f(y)], where vnrm = (WRMS norm of v) is
+ * input, i.e. the WRMS norm of v/vnrm is 1.
+ * -----------------------------------------------------------------
+ */
+
+static int CVSpgmrDQJtimes(N_Vector v, N_Vector Jv, realtype t, 
+                           N_Vector y, N_Vector fy,
+                           void *jac_data, N_Vector work)
+{
+  CVodeMem cv_mem;
+  CVSpgmrMem cvspgmr_mem;
+  realtype vnrm;
+
+  /* jac_data is cvode_mem */
+  cv_mem = (CVodeMem) jac_data;
+  cvspgmr_mem = (CVSpgmrMem) lmem;
+
+  /* Evaluate norm of v */
+  vnrm = N_VWrmsNorm(v, ewt);
+
+  /* Set work = y + (1/vnrm) v */
+  N_VLinearSum(ONE/vnrm, v, ONE, y, work);
+
+  /* Set Jv = f(tn, work) */
+  f(t, work, Jv, f_data); 
+  nfeSG++;
+
+  /* Replace Jv by vnrm*(Jv - fy) */
+  N_VLinearSum(ONE, Jv, -ONE, fy, Jv);
+  N_VScale(vnrm, Jv, Jv);
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/cvodes/source/cvspgmr_impl.h b/Win32/WinCVODE/sundials/cvodes/source/cvspgmr_impl.h
new file mode 100644
index 0000000..af11cdd
--- /dev/null
+++ b/Win32/WinCVODE/sundials/cvodes/source/cvspgmr_impl.h
@@ -0,0 +1,120 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:37:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvodes/LICENSE.
+ * -----------------------------------------------------------------
+ * Implementation header file for the scaled, preconditioned GMRES
+ * linear solver, CVSPGMR.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVSPGMR_IMPL_H
+#define _CVSPGMR_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "cvspgmr.h"
+
+#include "spgmr.h"
+#include "iterative.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Types : CVSpgmrMemRec, CVSpgmrMem
+ * -----------------------------------------------------------------
+ * The type CVSpgmrMem is pointer to a CVSpgmrMemRec.
+ * This structure contains CVSpgmr solver-specific data.
+ * -----------------------------------------------------------------
+ */
+
+typedef struct {
+
+  int  g_pretype;       /* type of preconditioning                      */
+  int  g_gstype;        /* type of Gram-Schmidt orthogonalization       */
+  realtype g_sqrtN;     /* sqrt(N)                                      */
+  realtype g_delt;      /* delt = user specified or DELT_DEFAULT        */
+  realtype g_deltar;    /* deltar = delt * tq4                          */
+  realtype g_delta;     /* delta = deltar * sqrtN                       */
+  int  g_maxl;          /* maxl = maximum dimension of the Krylov space */
+
+  long int g_nstlpre;   /* value of nst at the last pset call           */
+  long int g_npe;       /* npe = total number of pset calls             */
+  long int g_nli;       /* nli = total number of linear iterations      */
+  long int g_nps;       /* nps = total number of psolve calls           */
+  long int g_ncfl;      /* ncfl = total number of convergence failures  */
+  long int g_njtimes;   /* njtimes = total number of calls to jtimes    */
+  long int g_nfeSG;     /* nfeSG = total number of calls to f for     
+                           difference quotient Jacobian-vector products */
+
+  N_Vector g_ytemp;     /* temp vector passed to jtimes and psolve      */
+  N_Vector g_x;         /* temp vector used by CVSpgmrSolve             */
+  N_Vector g_ycur;      /* CVODE current y vector in Newton Iteration   */
+  N_Vector g_fcur;      /* fcur = f(tn, ycur)                           */
+
+  CVSpgmrPrecSetupFn g_pset; 
+                        /* pset = user-supplied routine to compute      */
+                        /* a preconditioner                             */
+
+  CVSpgmrPrecSolveFn g_psolve;   
+                        /* psolve = user-supplied routine to solve      */
+                        /* preconditioner linear system                 */
+
+  void *g_P_data;       /* P_data passed to psolve and pset             */
+  SpgmrMem g_spgmr_mem; /* spgmr_mem is memory used by the              */
+                        /* generic Spgmr solver                         */
+
+  CVSpgmrJacTimesVecFn g_jtimes;  
+                        /* jtimes = Jacobian * vector routine           */
+  void *g_j_data;       /* j_data is passed to jtimes                   */
+
+  int g_last_flag;      /* last error flag returned by any function     */
+
+} CVSpgmrMemRec, *CVSpgmrMem;
+
+/* Error Messages */
+
+#define _CVSPGMR_         "CVSpgmr-- "
+#define MSGS_CVMEM_NULL   _CVSPGMR_ "Integrator memory is NULL.\n\n"
+#define MSGS_MEM_FAIL     _CVSPGMR_ "A memory request failed.\n\n"
+#define MSGS_BAD_PRETYPE1 _CVSPGMR_ "Illegal value for pretype.\n"
+#define MSGS_BAD_PRETYPE2 "The legal values are PREC_NONE, PREC_LEFT, "
+#define MSGS_BAD_PRETYPE3 "PREC_RIGHT, and PREC_BOTH.\n\n"
+#define MSGS_BAD_PRETYPE  MSGS_BAD_PRETYPE1 MSGS_BAD_PRETYPE2 MSGS_BAD_PRETYPE3
+#define MSGS_PSOLVE_REQ   _CVSPGMR_ "pretype != PREC_NONE, but PSOLVE = NULL is illegal.\n\n"
+#define MSGS_BAD_NVECTOR  _CVSPGMR_ "A required vector operation is not implemented.\n\n"
+
+#define MSGS_SETGET_CVMEM_NULL "CVSpgmrSet*/CVSpgmrGet*-- Integrator memory is NULL.\n\n"
+
+#define MSGS_SETGET_LMEM_NULL "CVSpgmrSet*/CVSpgmrGet*-- cvspgmr memory is NULL.\n\n"
+
+#define MSGS_SET_BAD_PRETYPE1 "CVSpgmrSetPrecType-- Illegal value for pretype.\n"
+#define MSGS_SET_BAD_PRETYPE2 "The legal values are PREC_NONE, PREC_LEFT, "
+#define MSGS_SET_BAD_PRETYPE3 "PREC_RIGHT, and PREC_BOTH.\n\n"
+#define MSGS_SET_BAD_PRETYPE  MSGS_SET_BAD_PRETYPE1 MSGS_SET_BAD_PRETYPE2 MSGS_SET_BAD_PRETYPE3
+
+#define MSGS_SET_BAD_GSTYPE1 "CVSpgmrSetGSType-- Illegal value for gstype.\n"
+#define MSGS_SET_BAD_GSTYPE2 "The legal values are MODIFIED_GS and "
+#define MSGS_SET_BAD_GSTYPE3 "CLASSICAL_GS.\n\n"
+#define MSGS_SET_BAD_GSTYPE  MSGS_SET_BAD_GSTYPE1 MSGS_SET_BAD_GSTYPE2 MSGS_SET_BAD_GSTYPE3
+
+#define MSGS_SET_BAD_DELT "CVSpgmrSetDelt-- delt < 0 illegal.\n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/ida/LICENSE b/Win32/WinCVODE/sundials/ida/LICENSE
new file mode 100644
index 0000000..7236ff8
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/LICENSE
@@ -0,0 +1,59 @@
+Copyright (c) 2002, The Regents of the University of California. 
+Produced at the Lawrence Livermore National Laboratory.
+Written by Alan Hindmarsh, Allan Taylor, Radu Serban.
+UCRL-CODE-155952
+All rights reserved. 
+
+This file is part of IDA.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the disclaimer below.
+
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the disclaimer (as noted below)
+in the documentation and/or other materials provided with the
+distribution.
+
+3. Neither the name of the UC/LLNL nor the names of its contributors
+may be used to endorse or promote products derived from this software
+without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+REGENTS OF THE UNIVERSITY OF CALIFORNIA, THE U.S. DEPARTMENT OF ENERGY
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Additional BSD Notice
+---------------------
+1. This notice is required to be provided under our contract with
+the U.S. Department of Energy (DOE). This work was produced at the
+University of California, Lawrence Livermore National Laboratory
+under Contract No. W-7405-ENG-48 with the DOE.
+
+2. Neither the United States Government nor the University of
+California nor any of their employees, makes any warranty, express
+or implied, or assumes any liability or responsibility for the
+accuracy, completeness, or usefulness of any information, apparatus,
+product, or process disclosed, or represents that its use would not
+infringe privately-owned rights.
+
+3. Also, reference herein to any specific commercial products,
+process, or services by trade name, trademark, manufacturer or
+otherwise does not necessarily constitute or imply its endorsement,
+recommendation, or favoring by the United States Government or the
+University of California. The views and opinions of authors expressed
+herein do not necessarily state or reflect those of the United States
+Government or the University of California, and shall not be used for
+advertising or product endorsement purposes.
diff --git a/Win32/WinCVODE/sundials/ida/README b/Win32/WinCVODE/sundials/ida/README
new file mode 100644
index 0000000..12f2cd9
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/README
@@ -0,0 +1,236 @@
+                               IDA
+                    Release 2.3.0, April 2005
+             Alan C. Hindmarsh, Allan G. Taylor, Radu Serban 
+              Center for Applied Scientific Computing, LLNL
+
+
+IDA is a package for the solution of differential-algebraic equation
+(DAE) systems.  It is written in C, but derived from the package DASPK
+[4,5], which is written in FORTRAN. 
+
+IDA can be used both on serial and parallel (MPI) computers.  The main
+difference is in the NVECTOR module of vector kernels.  The desired
+version is obtained when compiling the example files by linking the
+appropriate library of NVECTOR kernels.  In the parallel version,
+communication between processors is done with the MPI (Message Passage
+Interface) system.
+
+When used with the serial NVECTOR module, IDA provides both direct 
+(dense and band) linear solvers and a preconditioned Krylov (iterative) 
+linear solver. When IDA is used with the parallel NVECTOR module, only the 
+Krylov linear solver is available.  For the latter case, in addition to the 
+basic solver, the IDA package also contains a preconditioner module called 
+IDABBDPRE, which provides a band-block-diagonal preconditioner.
+
+IDA is part of a software family called SUNDIALS: SUite of Nonlinear and 
+DIfferential/ALgebraic equation Solvers [3].  This suite consists of CVODE, 
+CVODES, IDA, and KINSOL.  The directory structure of the package supplied 
+reflects this family relationship.
+
+Several examples problem programs are included, covering both serial
+and parallel cases, both small and large problem sizes, and both
+linear and nonlinear problems.
+
+The notes below provide the location of documentation, directions for the 
+installation of the IDA package, and relevant references. Following that 
+is a brief history of revisions to the package.
+
+
+A. Documentation
+----------------
+
+/sundials/ida/doc contains PostScript and PDF files for the IDA User Guide [1] 
+(ida_guide.ps and ida_guide.pdf) and the IDA Examples [2] (ida_examples.ps and 
+ida_examples.pdf) documents.
+
+
+B. Installation
+---------------
+
+For basic installation instructions see the file /sundials/INSTALL_NOTES. 
+For complete installation instructions see the "IDA Installation Procedure"
+chapter in the IDA User Guide.
+
+
+C. References
+-------------
+
+[1] A. C. Hindmarsh and R. Serban, "User Documentation for IDA v2.2.0," 
+    LLNL technical report UCRL-SM-208112, November 2004.
+
+[2] A. C. Hindmarsh and R. Serban, "Example Programs for IDA v2.2.0," 
+    LLNL technical report UCRL-SM-208113, November 2004.
+
+[3] A. C. Hindmarsh, P. N. Brown, K. E. Grant, S. L. Lee, R. Serban, 
+    D. E. Shumaker, and C. S. Woodward, "SUNDIALS, Suite of Nonlinear and 
+    Differential/Algebraic Equation Solvers," ACM Trans. Math. Softw., 
+    to appear.
+
+[4] P. N. Brown, A. C. Hindmarsh, and L. R. Petzold, Using Krylov Methods 
+    in the Solution of Large-Scale Differential-Algebraic Systems, 
+    SIAM J. Sci. Comp., 15 (1994), pp. 1467-1488.
+
+[5] P. N. Brown, A. C. Hindmarsh, and L. R. Petzold, Consistent Initial 
+    Condition Calculation for Differential-Algebraic Systems, 
+    SIAM J. Sci. Comp., 19 (1998), pp. 1495-1512.
+
+D. Releases
+-----------
+
+v. 2.3.0   - Apr. 2005
+v. 2.2.2   - Mar. 2005
+v. 2.2.1   - Jan. 2005
+v. 2.2.0   - Dec. 2004
+v. 2.0     - Jul. 2002 (first SUNDIALS release)
+v. 1.0     - Feb. 1999 (date written)
+
+
+E. Revision History
+-------------------
+
+v. 2.2.2 (Mar. 2005) ---> v. 2.3.0 (Apr. 2005)
+----------------------------------------------
+
+- New features
+   - added option for user-provided error weight computation function
+     (of type IDAEwtFn specified through IDASetEwtFn).
+
+- Changes to user interface
+   - IDA now stores tolerances through values rather than references 
+     (to resolve potential scoping issues). 
+   - IDA now stores the constraints and id vectors (if defined) through
+     values ratherthan references.
+   - IDA now passes information back to the user through values rather
+     than references (error weights)
+   - IDAMalloc, IDAReInit, IDASetTolerances: added option itol=IDA_WF 
+     to indicate user-supplied function for computing the error weights; 
+     reltol is now declared as realtype. Note that it is now illegal to call
+     IDASetTolerances before IDAMalloc. It is now legal to deallocate
+     the absolute tolerance N_Vector right after its use.
+   - IDAGetErrorWeights: the user is now responsible for allocating space
+     for the N_Vector in which error weights will be copied.
+   - IDACalcIC takes as additional arguments (t0,y0,yp0). As a consequence,
+     it can be called at any time to correct a pair (y,y').
+   - Passing a value of 0 for the maximum step size or for maxsteps results 
+     in the solver using the corresponding default value (infinity, and 500, 
+     respectively)
+   - Several optional input functions were combined into a single one
+     (IDADenseSetJacFn and IDADenseSetJacData, IDABandSetJacFn and IDABandSetJacData, 
+     IDASpgmrSetPrecSolveFn and IDASpgmrSetPrecSetFn and IDASpgmrSetPrecData, 
+     IDASpgmrSetJacTimesVecFn and IDASpgmrSetJacData).
+
+v. 2.2.1 (Jan. 2005) ---> v. 2.2.2 (Mar. 2005)
+----------------------------------------------
+
+- Bug fixes
+   - changed implicit type conversion to explicit in check_flag() routine in
+     examples to avoid C++ compiler errors
+
+- Changes to documentation
+   - added section with numerical values of all input and output solver constants
+   - added more detailed notes on the type of absolute tolerances
+   - fixed several typos and removed reference to inexistent function IDASetMinStep 
+   - added description of --with-mpi-flags option
+
+- Changes related to the build system
+   - fixed autoconf-related bug to allow configuration with the PGI Fortran compiler
+   - modified to use customized detection of the Fortran name mangling scheme 
+     (autoconf's AC_F77_WRAPPERS routine is problematic on some platforms)
+   - added --with-mpi-flags as a configure option to allow user to specify
+     MPI-specific flags
+   - updated Makefiles for Fortran examples to avoid C++ compiler errors (now use
+     CC and MPICC to link)
+
+
+v. 2.2.0 (Dec. 2004) ---> v. 2.2.1 (Jan. 2005)
+----------------------------------------------
+
+- Changes related to the build system
+   - changed order of compiler directives in header files to avoid compilation
+     errors when using a C++ compiler.
+
+- Changes to documentation
+   - fixed various mistakes and typos in the user guide and example program
+     documents.
+
+v. 2.0 (Jul. 2002) ---> v. 2.2.0 (Dec. 2004)
+--------------------------------------------
+
+- New features
+   - added option to disable all error messages.
+
+- Bug fixes
+   - in the solution of the nonlinear system, the correction for small constraint 
+     violation is to ee, not y.
+   - besides delaying the order increase until the 2nd step, we now also delay
+     doubling the step size, to avoid using information from times before t0.
+
+- Changes related to the NVECTOR module 
+  (see also the file sundials/shared/README)
+   - removed machEnv, redefined table of vector operations (now contained
+     in the N_Vector structure itself).
+   - all IDA functions create new N_Vector variables through cloning, using
+     an N_Vector passed by the user as a template.
+
+- Changes to type names and IDA constants
+   - removed type 'integertype'; instead use int or long int, as appropriate.
+   - restructured the list of return values from the various IDA functions.
+   - changed all IDA constants (inputs and return values) to have the
+     prefix 'IDA_' (e.g. IDA_SUCCESS).
+   - renamed various function types to have the prefix 'IDA' (e.g. IDAResFn).
+
+- Changes to optional input/ouput
+   - added IDASet* and IDAGet* functions for optional inputs/outputs, 
+     replacing the arrays iopt and ropt.
+   - added new optional inputs (e.g. maximum number of Newton iterations,
+     maximum number of convergence failures, etc).
+   - added new function IDAGetSolution for dense output.
+   - the value of the last return flag from any function within a linear
+     solver module can be obtained as an optional output (e.g. IDADenseGetLastFlag).
+  
+- Changes to user-callable functions
+   - added new function IDACreate which initializes the IDA solver
+     object and returns a pointer to the IDA memory block.
+   - removed N (problem size) from all functions except the initialization
+     functions for the direct linear solvers (IDADense and IDABand).
+   - shortened argument lists of most IDA functions (the arguments that
+     were dropped can now be specified through IDASet* functions).
+   - removed reinitialization functions for band/dense/SPGMR linear
+     solvers (same functionality can be obtained using IDA*Set* functions).
+   - in IDABBDPRE, added a new function, IDABBDSpgmr to initialize the
+     SPGMR linear solver with the BBD preconditioner.
+   - function names changed in IDABBDPRE for uniformity.
+
+- Changes to user-supplied functions
+   - removed N (probem dimension) from argument lists.
+   - shortened argument lists for user dense/band/SPGMR Jacobian routines.
+   - in IDASPGMR, shortened argument lists for user preconditioner functions.
+   - in IDABBDPRE, added Nlocal, the local vector size, as an argument to 
+     IDABBDLocalFn and IDABBDCommFn.
+
+v. 1.0 (Feb. 1999) ---> v. 2.0 (Jul. 2002)
+------------------------------------------
+
+YYYYMMDD
+
+19990212  DATE WRITTEN; initial internal release (incomplete).
+19990514  IDABBDPRE preconditioner module added.
+19990720  Initial condition calculation routines (IDACalcIC) added.
+19991208  In IDABBDPRE, user routine argument lists changed.
+19991217  Generic SPGMR module revised to correct scalings.
+20000316  In parallel NVECTOR, comm arg. to PVecInitMPI is non-NULL.
+20000808  Fixed bug in N_VMin.  In IDACalcIC: added calculation of system
+          index in CALC_YA_YDP_INIT case, added scaling of fnorm when index = 0.
+20010110  Fixed two bugs in IDACalcIC and subordinate routines:
+          (1) Set hh in IDACalcIC independent of icopt, for lsetup.
+          (2) Set ypnew = yp0 in IDALineSrch in CALC_Y_INIT case.
+          Corrected #define ncfl0 line in idaspgmr.c.
+20011015  Fixed bug in IDAInterp (tn test).
+          Fixed minor bugs in error messages (missing arguments etc.)
+20011220  Default type 'integer' changed to 'long int' in llnltyps.h.
+20020313  Modified to work with new NVECTOR abstraction.
+20020626  Renamed types real, integer, boole as realtype, integertype,
+          and booleantype, and renamed related constants.  Renamed files
+          llnlmath.*, llnltypes.h as sundialsmath.*, sundialstypes.h.
+20020703  Added reinitialization routines for IDA, for each linear
+          solver module, and for IDABBDPRE.
diff --git a/Win32/WinCVODE/sundials/ida/doc/ida_examples.pdf b/Win32/WinCVODE/sundials/ida/doc/ida_examples.pdf
new file mode 100644
index 0000000..58d227f
Binary files /dev/null and b/Win32/WinCVODE/sundials/ida/doc/ida_examples.pdf differ
diff --git a/Win32/WinCVODE/sundials/ida/doc/ida_examples.ps b/Win32/WinCVODE/sundials/ida/doc/ida_examples.ps
new file mode 100644
index 0000000..fa794f8
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/doc/ida_examples.ps
@@ -0,0 +1,10849 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Title: ida_examples.dvi
+%%Pages: 88
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: CMR17 CMCSC10 CMR12 CMTI12 CMBX10 CMR10 CMBX12 CMTT10
+%%+ CMSY10 CMMI10 CMMI8 CMTT12 CMR8 CMEX10 CMSY8 CMTI10 CMR6
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -Ppdf ida_examples
+%DVIPSParameters: dpi=8000, compressed
+%DVIPSSource:  TeX output 2005.05.18:1637
+%%BeginProcSet: tex.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true 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/IEn 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 IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/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 A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
+/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
+setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
+restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/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{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: alt-rule.pro
+%!
+% Patch by TVZ
+% Makes dvips files draw rules with stroke rather than fill.
+% Makes narrow rules more predictable at low resolutions
+% after distilling to PDF.
+% May have unknown consequences for very thick rules.
+% Tested only with dvips 5.85(k).
+TeXDict begin
+/QV {
+  gsave newpath /ruleY X /ruleX X
+  Rx Ry gt
+  { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry }
+  { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx }
+  ifelse
+  setlinewidth 0 setlinecap stroke grestore
+} bind def
+end
+
+%%EndProcSet
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true 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/IEn 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 IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/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 A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A 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/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/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{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: pstricks.pro
+%!
+% PostScript prologue for pstricks.tex.
+% Version 97 patch 3, 98/06/01
+% For distribution, see pstricks.tex.
+%
+/tx at Dict 200 dict def tx at Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/TMatrix { } def
+/RAngle { 0 } def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+/pathforall load stopped { pop pop pop pop } if z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP  } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ]
+0 } ifelse setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { gsave abs CLW add /a ED a 0 dtransform round exch round exch
+2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25
+% DG/SR modification begin - Dec. 12, 1997 - Patch 2
+%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+% DG/SR modification end
+Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict
+/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1
+% DG/SR modification begin - Jun.  1, 1998 - Patch 3 (from Michael Vulis)
+% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore }
+% def
+a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore
+pop pop } def
+% DG/SR modification end
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
+div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
+CLW moveto } def
+/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
+2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
+curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
+def
+/SD { 0 360 arc fill } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto
+load } if ] cvx newpath 3 1 roll T exec } def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/Diamond { /mtrx CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul
+neg /d ED /a w h Atan def /h d a sin Div h add def /w d a cos Div w add
+def } ifelse mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2
+div /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+setmatrix } def
+% DG modification begin - Jan. 15, 1997
+%/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq {
+%pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+%div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0
+%d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+%setmatrix } def
+/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup
+CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0
+d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+% DG/SR modification begin - Jun.  1, 1998 - Patch 3 (from Michael Vulis)
+% setmatrix } def
+setmatrix pop } def
+% DG/SR modification end
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix
+rotate matrix concatmatrix exch findfont exch makefont setfont } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop
+} if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ]
+aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6
+2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto }
+ifelse } def
+/ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv {
+6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def
+/BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1
+sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore }
+def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 }
+if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if
+/dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div
+round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div
+round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub
+0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def
+/Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def }
+if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def }
+{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add
+exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n
+div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1
+dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt {
+dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt {
+pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup
+stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg}
+{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i
+w add def } repeat grestore gsave n 0 gt
+% DG/SR modification begin - Nov. 7, 1997 - Patch 1
+%{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash }
+{ 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash }
+% DG/SR modification end
+{ 2 setlinecap } ifelse /i y1 def /f x1 dx mul
+n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n
+div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop
+1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs
+dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt
+{z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g
+exch t L stroke /i i h add def } repeat grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET  } def
+/RotBegin { tx at Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 }
+def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle
+dup a add ] cvx def } def
+/RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ]
+cvx def } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def
+/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible
+/IfVisible true def } if } { IfVisible { Invisible /IfVisible false def
+} if } ifelse } def
+/InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def
+/Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit
+neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def
+/IfVisible true def } def
+end
+% END pstricks.pro
+
+%%EndProcSet
+%%BeginProcSet: pst-dots.pro
+%!PS-Adobe-2.0
+%%Title: Dot Font for PSTricks 97 - Version 97, 93/05/07.
+%%Creator: Timothy Van Zandt <tvz at Princeton.EDU>
+%%Creation Date: May 7, 1993
+10 dict dup begin
+  /FontType 3 def
+  /FontMatrix [ .001 0 0 .001 0 0 ] def
+  /FontBBox [ 0 0 0 0 ] def
+  /Encoding 256 array def
+  0 1 255 { Encoding exch /.notdef put } for
+  Encoding
+    dup (b) 0 get /Bullet put
+    dup (c) 0 get /Circle put
+    dup (C) 0 get /BoldCircle put
+    dup (u) 0 get /SolidTriangle put
+    dup (t) 0 get /Triangle put
+    dup (T) 0 get /BoldTriangle put
+    dup (r) 0 get /SolidSquare put
+    dup (s) 0 get /Square put
+    dup (S) 0 get /BoldSquare put
+    dup (q) 0 get /SolidPentagon put
+    dup (p) 0 get /Pentagon put
+    (P) 0 get /BoldPentagon put
+  /Metrics 13 dict def
+  Metrics begin
+    /Bullet 1000 def
+    /Circle 1000 def
+    /BoldCircle 1000 def
+    /SolidTriangle 1344 def
+    /Triangle 1344 def
+    /BoldTriangle 1344 def
+    /SolidSquare 886 def
+    /Square 886 def
+    /BoldSquare 886 def
+    /SolidPentagon 1093.2 def
+    /Pentagon 1093.2 def
+    /BoldPentagon 1093.2 def
+    /.notdef 0 def
+  end
+  /BBoxes 13 dict def
+  BBoxes begin
+    /Circle { -550 -550 550 550 } def
+    /BoldCircle /Circle load def
+    /Bullet /Circle load def
+    /Triangle { -571.5 -330 571.5 660 } def
+    /BoldTriangle /Triangle load def
+    /SolidTriangle /Triangle load def
+    /Square { -450 -450 450 450 } def
+    /BoldSquare /Square load def
+    /SolidSquare /Square load def
+    /Pentagon { -546.6 -465 546.6 574.7 } def
+    /BoldPentagon /Pentagon load def
+    /SolidPentagon /Pentagon load def
+    /.notdef { 0 0 0 0 } def
+  end
+  /CharProcs 20 dict def
+  CharProcs begin
+    /Adjust {
+      2 copy dtransform floor .5 add exch floor .5 add exch idtransform
+      3 -1 roll div 3 1 roll exch div exch scale
+    } def
+    /CirclePath { 0 0 500 0 360 arc closepath } def
+    /Bullet { 500 500 Adjust CirclePath fill } def
+    /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath eofill } def
+    /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath eofill } def
+    /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def
+    /TrianglePath {
+      0  660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath
+    } def
+    /SolidTriangle { TrianglePath fill } def
+    /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def
+    /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def
+    /SquarePath {
+      -450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto
+      closepath
+    } def
+    /SolidSquare { SquarePath fill } def
+    /Square { SquarePath .89 .89 scale SquarePath eofill } def
+    /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def
+    /PentagonPath {
+      -337.8 -465   moveto
+       337.8 -465   lineto
+       546.6  177.6 lineto
+         0    574.7 lineto
+      -546.6  177.6 lineto
+      closepath
+    } def
+    /SolidPentagon { PentagonPath fill } def
+    /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def
+    /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def
+    /.notdef { } def
+  end
+  /BuildGlyph {
+    exch
+    begin
+      Metrics 1 index get exec 0
+      BBoxes 3 index get exec
+      setcachedevice
+      CharProcs begin load exec end
+    end
+  } def
+  /BuildChar {
+    1 index /Encoding get exch get
+    1 index /BuildGlyph get exec
+  } bind def
+end
+/PSTricksDotFont exch definefont pop
+% END pst-dots.pro
+
+%%EndProcSet
+%%BeginProcSet: pst-node.pro
+%!
+% PostScript prologue for pst-node.tex.
+% Version 97 patch 1, 97/05/09.
+% For distribution, see pstricks.tex.
+%
+/tx at NodeDict 400 dict def tx at NodeDict begin
+tx at Dict begin /T /translate load def end
+/NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def }
+if begin tx at Dict begin STV CP T exec end /NodeMtrx CM def next end
+grestore } def
+/InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def
+} def
+/InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch
+Sin mul } def } def
+/GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def
+} ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def }
+ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx
+dup Sin mul Cos Div } ifelse } def
+/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub
+/u ED /NodePos { GetRnodePos } def } def
+/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup
+Cos mul exch Sin mul } def
+/TriNodePos { Sin s lt { d NodeSep sub dup Cos mul Sin Div exch } { w h
+mul w Sin mul h Cos abs mul add Div NodeSep add dup Cos mul exch Sin mul
+} ifelse } def
+/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d
+ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d
+sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan
+sin def /NodePos { TriNodePos } def } def
+/OvalNodePos { /ww w NodeSep add def /hh h NodeSep add def Sin ww mul Cos
+hh mul Atan dup cos ww mul exch sin hh mul } def
+/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
+/XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist
+Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg }
+{ 0 Dist Sin mul } ifelse } ifelse Do } def
+/GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform
+exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx
+dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop
+XYPos } ifelse } def
+/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1
+roll sin mul sub exch } ifelse } def
+/GetEdgeA { NodeSepA AngleA NodeA NodeSepTypeA GetEdge OffsetA AngleA
+AddOffset yA add /yA1 ED xA add /xA1 ED } def
+/GetEdgeB { NodeSepB AngleB NodeB NodeSepTypeB GetEdge OffsetB AngleB
+AddOffset yB add /yB1 ED xB add /xB1 ED } def
+/GetArmA { ArmTypeA 0 eq { /xA2 ArmA AngleA cos mul xA1 add def /yA2 ArmA
+AngleA sin mul yA1 add def } { ArmTypeA 1 eq {{exch}} {{}} ifelse /Do ED
+ArmA AngleA XYPos OffsetA AngleA AddOffset yA add /yA2 ED xA add /xA2 ED
+} ifelse } def
+/GetArmB { ArmTypeB 0 eq { /xB2 ArmB AngleB cos mul xB1 add def /yB2 ArmB
+AngleB sin mul yB1 add def } { ArmTypeB 1 eq {{exch}} {{}} ifelse /Do ED
+ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED
+} ifelse } def
+/InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED
+/NodeSepA ED /OffsetB ED /OffsetA ED tx at NodeDict a known tx at NodeDict b
+known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA
+ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def
+/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub
+mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def
+/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt
+{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop
+} repeat LPutLine cleartomark } def
+/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
+/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
+mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
+sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
+add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
+y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
+mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def
+/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def
+} def
+/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def
+/NAngle yyB yyA sub xxB xxA sub Atan def } def
+/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd  } def
+/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def
+} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit
+} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd 
+} def
+/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def
+} def
+/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def
+/NAngle yyB yyA sub xxB xxA sub Atan def } def
+/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd  } def
+/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def
+} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check {
+exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark
+VPosEnd  } def
+/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2
+roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx
+def grestore exec /LPutVar /SaveLPutVar load def } def
+/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def
+GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos {
+LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos {
+LPutVar VPutLine } def LPutVar } def
+/NCLine { NCCoor tx at Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop
+end } def
+/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub
+Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan
+/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1
+yA1 ] cvx def mark LPutVar tx at Dict begin false Line end /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+ifelse } def
+/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1
+roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA
+GetArmB xA2 yA2 xA1 yA1 tx at Dict begin ArrowA end xB2 yB2 xB1 yB1 tx at Dict
+begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ]
+cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines
+} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def
+/NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
+def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx
+itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2
+yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false Line end /LPutVar [ xB1
+yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def
+/HPutPos { HPutLines } def /VPutPos { VPutLines } def } def
+/NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2
+yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform
+/y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1
+tx at Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ]
+cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCBar { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def
+xA2 yA2 mtrx itransform pop xB2 yB2 mtrx itransform pop sub dup 0 mtrx
+transform 3 -1 roll 0 gt { /yB2 exch yB2 add def /xB2 exch xB2 add def }
+{ /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse mark ArmB
+0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict
+begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx
+def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCDiag { GetEdgeA GetEdgeB GetArmA GetArmB mark ArmB 0 ne { xB1 yB1 } if
+xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false Line end
+/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCDiagg { GetEdgeA GetArmA yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED
+GetEdgeB mark xB1 yB1 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin
+false Line end /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCLoop { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
+def xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED /xB3 xB2 yB2
+mtrx transform pop def xB3 yA3 mtrx itransform /yB3 ED /xB3 ED xA3 yA3
+mtrx itransform /yA3 ED /xA3 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2
+xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false
+Line end /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ]
+cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+% DG/SR modification begin - May 9, 1997 - Patch 1
+%/NCCircle { 0 0 NodesepA nodeA \tx at GetEdge pop xA sub 2 div dup 2 exp r
+%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
+%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
+%mul add dup 5 1 roll 90 sub \tx at PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
+/NCCircle { NodeSepA 0 NodeA 0 GetEdge pop 2 div dup 2 exp r
+r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
+exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
+mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
+% DG/SR modification end
+} def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA 90 sub a add
+AngleA 270 add a sub tx at Dict begin /angleB ED /angleA ED /r ED /c 57.2957 r
+Div def /y ED /x ED } def
+/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB
+180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos
+mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def
+/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy
+add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos
+{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar
+tx at Dict begin false Polygon end } def
+/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan
+def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2
+mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def
+/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div
+def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def
+GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul
+sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0
+eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn }
+{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def
+0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2
+roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0
+0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2
+roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat }
+ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos
+{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le {
+r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC }
+{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add
+add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub
+mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t
+sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse
+y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos {
+LPutPos } def } def
+/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB
+sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1
+ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB
+w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos
+{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop }
+{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine }
+def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx at Dict begin
+/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def
+/LPutCoor { NAngle tx at Dict begin /NAngle ED end gsave CM STV CP Y sub neg
+exch X sub neg exch moveto setmatrix CP grestore } def
+/LPut { tx at NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0
+def } ifelse LPutCoor  } def
+/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg }
+if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED }
+def
+/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if
+r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED }
+def
+end
+% END pst-node.pro
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
+exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub
+dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
+ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict
+end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{
+dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1
+roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def
+dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}
+if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}
+def 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 0 N/rwiSeen false N
+/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
+/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
+/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
+X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
+/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
+/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
+{userdict/md get type/dicttype eq{userdict begin md length 10 add md
+maxlength ge{/md md dup length 20 add dict copy def}if end 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 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
+save N userdict maxlength dict begin/magscale true 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
+ at SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{
+CLIP 1 eq{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 rwiSeen{rwi urx llx
+sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
+}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
+CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
+lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
+/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
+repeat grestore 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
+%%BeginProcSet: color.pro
+%!
+TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
+setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
+}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
+/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
+setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
+/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
+known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
+/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
+/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
+setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
+setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
+0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
+/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
+setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
+0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
+0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
+0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
+/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
+setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
+setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
+0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
+/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
+setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
+0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
+0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
+0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
+/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
+setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
+/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
+0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
+0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
+0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
+setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
+0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
+/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
+setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
+0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
+1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
+/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
+setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
+0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
+DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
+setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
+setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
+setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
+
+%%EndProcSet
+%%BeginFont: CMR6
+%!PS-AdobeFont-1.1: CMR6 1.0
+%%CreationDate: 1991 Aug 20 16:39:02
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+readonly def
+/FontBBox{-20 -250 1193 750}readonly def
+/UniqueXX 5000789 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204b031f3fc6c13d7da7277a94ba
+018e9998b3dd888011a5d7c4204989f30f908b95533bda845746b673ab71ea57
+65a0d14f4350707e47c8276305b28513cbe1bb0dbd269a53719bda46e536685d
+df78ca0146b6b93e760256b74d939d4e35b5e77238f04c92298dfdd188feea30
+e053eefbcbb52f2011772b3aae39f5805597bbc1e8bb75a446ce014030f4f2f0
+f49f9e962ee4a1024a746fa92a3628db5270732b54e43fe5ecfa524f127e5fcc
+788e77e66098336ad67fe4cccaf0253272d5df79864bf4b734cb9a5859d557d8
+bc11b8e00221ebc12e97de4b1f466ead83a4c894709363bca9040410a52d592e
+34ee40cc7e5efa920546b981aa659513a24b1b85c221a1875b62d0b89e57a368
+321b8043a5b094e0379760a443d632892b14ad6d19dacc8c78093243ad67e6a3
+08e56e6b68412ee690b10dac6e17708754a00d51fc957b500eb80175716eef4b
+2ca1ef867614659bee3f2b7319e97b6fdf1efc847bf3cee3156f72f21751da8e
+5fb6898919e6799820d3de0642d756e09d6fae4ff08dd3deda3173bff4bb11f7
+9109c97ddc05897af709ea199a90fcee8ce4c7a3c15b18170c41c04de2d3fba8
+f34296a95b8e1e8de3739b17273f8f2c85e914615e8eac5e8bd2387ba3b1edf4
+7968f06e2067d836d0f9f3e085cdfd2de06a62c81d786b304326f7002e83160a
+36598589228b4dddddc43c85e1d126f8fe81b828028e26317af5894aaccf4f69
+6301e1a9fc45935d8a414957f08febebbc3a72ada80f101e47447d019ade56e9
+f4fab969bba2b44e47399fedf5caa1bcea216d7ba713d523dc2b1a89801ad4ff
+2a26c7929cd309eeca94b69eca57ca332db286f97602a69bee8e37936b9346cc
+0f6d2e421c4e5512be432fce589448f5f84cdfa8f096528c8dda6e1db031dc03
+5e66de81a9d37e3d450af0aa8f8333ccb9dbe51fb4a5502fac0a0abb8dfb643b
+2d3323cfd843331fab1d8efb4557ad4e5bfe7801b7f7c63439a617535087a1c2
+8fd075da8442bf40379354ccd398a111fcdc9d73c3111b31a3b69d2312b6c377
+ae21dca966b5e4fc26e60405fe586a5ee1c8a609e245338f75a891c51463731d
+867a80d846e317122d616e4766adcae7c5f0a6151eb4da1305969cd321bf6434
+818eb8d67bff536da6043e5d8bec3cb2a48fd565fa9e51a68fabbf533d376351
+f7c12874628ae554478ffa1cb9de8dd27edb02366c415ea540b9b168507ff660
+57135fd2d0e24550420f68ecc804715f65d48434d8f6ec629f01e41172939b1b
+6513f142de44863de3bb5a56dfa8d2e34cd4f999d090e189c8fc8b2b7eb2644b
+e5e8a0bedac5914d70c4384ea11909eafa2fe7012105e423923c8f6aa46ce71f
+c6519c4dfbcfc84fff41119db33a9eab8dc061250b703726e05bcc86cc5b7577
+57fa2f13f00eea413d705581f0e7c72b8b7f8ea60814aac19bac4aa062aff864
+b0c96e3165486ba090fe3154ac42d6c7d520e8678dde7a65c469b7c5ab1f69d8
+25a789c3f4897b763da31f99f6895e5d6d80f4b15eb7d7ab1086255ae04a1cd9
+7f0f0e2d7d76849496b78541a28ee991f9a3325147580aab26d90897640bb6f1
+a84860aff36bc9e60d9899770cb607702aa9f71f28ec9e1eb3d373851131331d
+916b9d8eaec1225101add4fb091a56338d2b6dac4934144c24a680fd7d322df1
+dc246a228ac75a430384d5f91a1e2def9a3decce71ab09056601550e5a9beb81
+1d3d3e602bcbf01f991ce66dabfbdca501c3e18527e53e24daf9168f92e70f08
+9709b5ede3c0f3005b8f6302c97043ebdf163274624758925d68012ef835755a
+477a4f7cd66b7540563a13047e88f063674888fd87263217d88c3c31abc5483a
+304d632fb06eb2e14551cd53204ecd350232161b8f2982a744106de0fd09b45e
+807fe4d555c4abca492cc0c09920b02a8931454f2d1616735ed9962609b5ad15
+dccfc6b57782e550cf651dde7654b2db575254c2e187f5e3b0b09ed44079ddf8
+a3f50495a4cc55bef95f2ef51b613b65ac3548a00c22332ec7cfc0e6831bd209
+49600c0e7ce0aa57a7be7d91f131eb06b8e1faca502f13502e80ab63a17746b0
+19d8bf55ea0d68714d8a38ba2cc591b75a5172cd18aaf26f3ae519d5ecbc57c7
+5335d7f38aaa8a25256cdb28f7dde3262d25ab3327ec38ee5a9e8db68b3c520b
+59cca53e002ebdb4de62566dabd4c8507a51a376bb5cc8fb19951566328f3718
+319b30033c27d88409c4bc6d10d7a47221257ec700ddda6d2aa4248e4c1aef4a
+6ad488bc6bd8fd5241022744d97947c680e2c3f1b1266b4006a0687aa93f550e
+23e9862d28c30d245edd3442001265c83d9bb8d3a4ee2970da4e2853eae8c019
+99c2a660069ff12f3371f90a12a2b767bfe17091a709496a35a694e43cbaed4a
+04f0566be69a84f699403bc1ec40b19f28fea5cdf4c5bd62208f4063366c4877
+6d7d1656758d24318ceacedfd4fa70cc76502cbdeb58a8071d559a9c43e4794c
+94419e7f8f15635ebc023721471131f69ec35123f54768fa00efc5da8779058e
+5d6f53415bf0548f1a231a05a4d2ab60fd9023dbdffe2f7c6d29827b7ade2a2f
+1e4400b11cf8864cec09b0b74a43dfb2885322dc79855c9048681ea8b8dcc65f
+29360a8020e0db02bbd28bf06076dab63c480fa99c4025f2a4671cb03a55b8ec
+83c19c9d2cf8cb59cc2188a0fe58d00471f9dea9a832cace08caa73a983f5992
+fa55608534f91120079312ec86b6f9da938c4088f1b5c04a5e169b61bd2b1750
+b31254ddaf9ca5efa696fb2e53ac1edf2a442a52d1f930a207439c83604d338c
+efbb3045d66e1c0599c4fc09cec289f19b92201b4eab541b805909f2e7673594
+4b41da04eadd7a8ab4416704608a280930917fa81a2ec1b0f6fbddaf07344e4b
+256b000dadac578b6e7c5250b33750dee374765de50eda0d4dedc835cb4eec07
+447c0fc1dc70ccc6a9674a07fb7e146ad5aa87c71cfea89b2c730772b1849311
+bee0567e1e275f23fb745ae7fa749dcb21b0caac6e711126a102d8c2bf87c8c8
+66559045d5045daf826f2dc235878c1a5c1bec2a6108ecad8af749f25705a47b
+9ba49b2cf4446bdb44ed5b9ba4c198c00a4967477c69a5983c7705fe5e089db7
+a57dc77d16337626f4739a821522f8a6f9957410d034ca3a09fb3e47ca962a34
+68e0d8e1b7111246a34e7197470e92debe6d15a1577612b4ab5b5b580407c1fa
+ca33eaaf6a16f3e42e3f43f9e54a272562965c4fbe5493c111048a019ac54a01
+a6acbe32cadaebb926dcc2c9a0e8adbda8c5dd2f4032ee56f6c24720b484f5fa
+b8ea7616808f8871412de1c24d44bb1324ecedc653719eb70399695904e0a052
+b2ce2b09770f0a465c9fbc7f2105c0d586da9b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTT12
+%!PS-AdobeFont-1.1: CMTT12 1.0
+%%CreationDate: 1991 Aug 20 16:45:46
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 46 /period put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 119 /w put
+dup 120 /x put
+readonly def
+/FontBBox{-1 -234 524 695}readonly def
+/UniqueXX 5000833 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be79011d1f5b667eed85fade30ab2ec4e1c2f
+4fe750cf9a69506458071de8896261c001b1c290937fa42a1fa87de406e9f86a
+4c9c0f03f69fba719114f8ae51040a4c03a58b6f3de027f6726f32743dce7395
+14c2c6f3c2de1aeddcfa8eed7da56dd68dbcde33c29ff7a694769049e4325ec9
+61b2df16add2ad46f18781fbd63eec62c26f1db41e6a666a09886382dceba91d
+8ff7cedd64ddc8a2f15fe34076a064c46febd1f4dc3707aede0ce8af161bcb8e
+4ada202d0954baca5be71c28ab8bf32fd72029aa07f27d658a68f454a4bf386f
+6314224d16c7f0a8624f6b86319a4e2fd178f596f3b20db032ea28c157a68a69
+fad2bc88881658d2286c0d4ef061bc070c3145f2a37ebec03f51de7cda34cd97
+7eeebd86b00f9758b3a496f41d9a74279ef3c6322dc54945f95062c5f37a1e51
+cf7eaf45f2b3634b2d7d01ec3b298ff35b6616cd3020e096f6c6aa2bf04c4a93
+61c19f3c67a28d936ffc8120f1e46980b29bf54047c5f1fa48e67611a74fa434
+3384f802a4079b28b94681e119ab0c1692de5bbf426440ad1023506cb80732de
+c64d9061869cb34de924d2c26e404b7dbd9be55b9c0c5ae3095c15d278adbb49
+12df1484ed2d73128e5d9c1f1a3b9ac19e2ce5366c96644f5b3d3eea589caedb
+586fd9b8f4df32ec910e9b7434d5bbe57e03892eb03890567df5b811afa0da5e
+929d456af362fda0789aa0cff464e238029294fde86cfc8d7d33d5c98b18c76c
+319811e4d3d49560f2ac39103594ec513e0b1377c2c3e22979866c19b61448d5
+a7201ca4b7538aa370f6347253b0853d4c5d575a7572f93cb73a598e2e26b11a
+d46a1126e44e7e1795dff01562316b6ccc6678663e66a73db285746df3f4405d
+d51714679581946ef72103270c810f665686ede777f283690a7185bb0b3fd071
+477aefb5dddeb38ae27286c5cccc91c8ed6ad12f18c58dd1daf2561d9eac586e
+5036dc5bc31c7e849efb5edab11c6e2ecf58420f824bec440d020e7f8115f00a
+867bd09c3655c7524896d8a34e42690ff1dececb9f38c5ef4d656177cac21018
+c483aa8398ce539ffc8d8bf3f0b681c5b400f1555b7a98a87f6dd66e1b02fd90
+4bd1eebb4a7e6194150df4feab7953b0c3200fe95dedaa47fc03c84baa24951d
+d00df3e08b3afa7351559207fa4d1008240b207ae830b39c8a1a27b86032de22
+69b76235e96d9a0dd712e0ca0665713525a274130628b8a766b6ae5ce40c8bf3
+4acf614381f1aced261a1cf1264d0793d1e1e913a3761918b81ee3d178c1e449
+e89e523c4c6d6ced56bfa206e81e4d0e410f7a4a6a1dcf67096fd7fdb083fd95
+27df0a94cdb4d5f037d00bb79003ff0f09d56579b6bd2121459ff539806ab1a2
+2c3ade80ddc83158e3e2ce003d0994a6b44e2bd1842c5ce901845dcc06142495
+b049f9285563a316e02c5ab144b43f26439b12063599ecbce6754cdf54a45699
+e6dc31a6df57fbe27a135b494d1f03ec87dc27dfe10afd66d9e058dfd1b1b165
+b458a7d041040225a0035e76e681825ddff730802eb9b12f9e09a1147ee29e5b
+43391f55c7f769c638a4b8453a864442f42e287d8f76a160e613f18bfd5481d1
+68045f7f076a08a05d67bfd522f6c7591179c28acef829b0808f90560c5e6d9e
+c0c557cf8e8b8eb14ffb778f0cf6a0595810d6b9e03a9a95221b257110c5b81f
+879f7d3642ad6d76f5fb43c4bba4841e102b36c38a4e67cb89f8e19d03eca154
+b4eab5ca71777845757a27dd930e3a5b32c9598ae3b31abc5b2fd9551004ca62
+b953a6a294bc460095522d20f44326e59948794cc88a0a202e2accf916d1076a
+59de687669b01720df7d5e5c0de55e4e2a6e1bc4d7c065b73683b952aebb55b5
+9f93ec350e096ac8111b65cb3c19c28fb1e72797d0b910cc74a2b9fe826ccd44
+62e76b1af65b8a8a8e9224a9b1f5d7d900d349fa390aae8c57014df8853bd69b
+3fe53cf392b1ce96bdc7f3e01d3ebc5e59b1a9e5fff6dccec445211d64f4cd76
+0acd9e68bced3076c26191e7af144e0fbd57e1493ee1afaef4cb0646a960bad0
+46d18fcaac2a76db450de37ffdb9468ed2fb7b58f934babad7ba497cafec2e20
+136c41fc2341bc10ffdcb1b628f85ad9af6828f0cf9a539f2f3f8d7d9472ee73
+7d6cb8b0aa437f28b29c22a5e2bd14b4cb4383520c51e3c5e1fda90572490b95
+3b42b7669ae11ed50dd865a18eceded675e3cfbaa01fef3fc1059b1661cb87ac
+dbda5288dbac1c6443102cf76ff8b6b26e522789774600b59b70964b55c98ca3
+40134b696c4ed23634ecbce2df2c3985aef42feeaab93c63bdb50261eec54549
+2b14115f341e27d050d8051f93cc1a4ab6abdabe34f15cd3b95317bfbfc57173
+b4541b88fef5e3bd68781fe8f84969ce359a61e8d096354e68ad99018bdabd7b
+bf57bf99c2e5a42df3b35a292083043e42016647ef2ae630a8ee1655a832463d
+4ec071e30c4a10068778bb001f423c026fa8a7be9d2c37e088039e15aa09be82
+4930860270d12d0659765ee2894544f8553c4cfce3ee680ba8aa21074e0c96a6
+5ab5198c91f4e4c5e5cb5f466c451d8c3917466198785f794796a715deaccc82
+3dd5e9f5cf59c022b3e2d2efccd437efb758fd31ed0d8dafb1354b51bb9843a8
+d1bd5ba415779896fe413d5f884b51fd9a611a9936dd8603ecad728f9418f019
+4f1d35dd6d1b9d8ba71c8eefcaaefcbc04ba4ba43d3732337f018ba773a4c4f2
+5f6e6f946bbc0ba5e39977ef735b7cfa06ad48f2a0311b98f53dc5c516cd2238
+00bb0fdf79578379d019fd6249b0f4b6cee726883135be9a5a939860bb0e7cbc
+9a10e3c99b039b577c80281e52d657c98e7de612285b58e562e25b3cc1d44978
+17bdadf89a9a4c1f08c4c276cd8783741f38364d6d3fd6d3d2aafe4f9034492f
+7a6915b6f27de1a9eab7a1ddf3f7da52bb32adc64834a66819dcd33786f98762
+ec108c61052a2c8f2a5ab303231807f75933155324cadf9ebf44dbe1fe2a6238
+349e51beb23acc6509ed93abad617b4aa418f51c9dcacf1ab6f83d14aadec936
+67e2585dd7120b49f6c0d3a2db96732748d1cc3069149de63a4e8a420147e851
+24142260cb70294f1170a461b23b00867cd3527738a687c9ef0aa66d0d85d031
+1604a57d0084d17444dd27bbb765dbd06ce3e5cf2ebd6422d1a58f0c973f1aed
+06210df845ad6d04a9608857ccfd2c776fcefe291887e4e2a5e1ad783a224262
+ce1362168217500d8b4d1b0d351a254a01b0fed1050405854f0774f5e5f9bc40
+0e39593509042559dfef1b45afb65822600368c003827c4618794d41f9f9997a
+337ff33313118784b164f3f91e8add8b14e19057f39f7670f1c6571a7396cb70
+d902e2e3e6ce7c5db679dde48cee5ff5a2297237e0cc6f6f41830bfc078559c7
+2783287f71ade8bf88a38024edc71f3b7c175a98133a0b9707c62f5fc3af909b
+be06c911580e83b42387a57edb65910f86db8585496b1a6295b990d02278144e
+3172d106bc0acb9669e52f0efbb97191a806cda8ad569826400967564fa84f2c
+6d1e04d6a95c0ffd3cdd265861d4d075474defd2fdf766c3c693942049573b97
+e70836849d30a44a45ae675b9b88f15dd68796a10b40703d748424adba226195
+1a29c4c667eee55191a73fb31557bdea2554f0dd684a24fe88f85eebf8e55617
+9ddf4b5367c34fdd43eb111884d4b9a392e54b6e9f68348206fa7a97d1ec7c9e
+cdafdf23237bb53e1413111394216de2a136a7c2574e8fc40897ec1a305df3de
+5063c8f5d7aa7230983515b6cd3056a03a5b2c44434671287eea653020c72fc2
+4db04e232b73c1a6f1991259fa67dae67e70b27e4cd25a16711560095552e2b9
+de21fac8993c466e8ae702a0c905581a53b42bed9524d81f8359e332b4b1fb12
+a274bc4696640799a99c177459608096295b92c9fa00785baab7418e825da9d8
+d7f7ee9e561db84cde856f37cacc725327c16195195a13978c8aa955ebd269ae
+d28370135a9df7f6850326e4c3db976213e9ca1a684076395d5261ca293ec968
+2720a8c77a1c5af850cabda4f2e95656547516e9ba8b188a619dbb7032b02271
+a9e13d7e833879d49e5a93949d5324b05d7f4c0b1161dec440804923bb0e15d1
+2ca97c7f0d31cd830121780a9ee5066c1822d3ab871e33836936bcb9e0bb6ca3
+d75f95254d98e6eeabdfcec51566aef2f719812d2cf2dafc70756aeac3169b21
+23537fcd441f6c771ccec084ddbdcde2df9d6ed73c201759d2af231b8ba72f8c
+37325660daf048cab54b443071e6a1c2f97aea8a506c370b9dd0ca5b4e1fb061
+83907b382451cdcaf914fabe7f2392b4af8a18535300b251aacac498bd332d18
+5b8f1ba7b5dc31811b66
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.1: CMTI10 1.00B
+%%CreationDate: 1992 Feb 19 19:56:16
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 46 /period put
+dup 58 /colon put
+dup 65 /A put
+dup 73 /I put
+dup 74 /J put
+dup 77 /M put
+dup 78 /N put
+dup 83 /S put
+dup 97 /a put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 121 /y put
+readonly def
+/FontBBox{-163 -250 1146 969}readonly def
+/UniqueXX 5000828 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3ffd20326947b1065649b533eb5e9e3
+a88a87fe987918a687950b26f647d6e08bf14d983ed1d4a8ca1e2da8d985f944
+2eb916f5b6ed0697ac7c33e1e36a3bf460d34ce45f1631871097cb04f18e3889
+4cf4ac1538eb19481311d24fe3be7beaa4a3730e8b4831fe59d6d9ce2e46116b
+629c7ba2f9ce3ecba2f43bc162a5a077ca1b2882a42afdcec3f4b75b5d63e0bc
+8e5dc95257766d8ea467ad9cbaf47be60f797580cced6884b3a68f70c91f4fdf
+80fd00ed9139e7f480dc3a76af72ad9b434187730bdfaefe4cbfe5c7edcaaf24
+9204fd703011932e5a3c27be468b7dab69daa18dbbb6335ab8ddfdc607961c7c
+02582763fa069d43563ba17704029945cf42fcb19cf78c51df0ec4d851086d43
+c1ab38e865ef36865fff3a08b01cbcb070ba4893f7482dc7819ad03d337e520e
+7d8cd83bb8ac7aff4df36751f4f12aaaea2b6d7260c09a26e987c904003e0723
+7dbcc4a8e4e85cd3259f40d3caf55c742cbb40ad0db1044c20a4f122a63f7b81
+1d945bfa69662189ce4d089464d2ead9f6ed60b581b04114d5d45e97be27a576
+35154e9b8464f2a0df18da855eb51b8f64d3054b0b2e84621f025a0776d16fed
+b988a43d2d64c32768dd106b9f541ae8e68ac0bb7399e16f4d4ba074b2152d0a
+4e9b5bfc21bfa0d531e28165e518ffc054dd4ed0d74eca079d20e79670419f92
+e03bcbfeecf3554d661596f6f29e12170804d15a250d917ffe7a8b6e8fa53047
+1ed97ba56481589a65ca13619129f1e26affe6c22f0c38540f8ce37efb6e9e9b
+60b51a5a9cb4454fd7c7f92f2f9437159687ab590f35b946a54491a7739c9269
+e0f1fb48b129811c82edb3171cbd5105fe65906974db8a7da92f4f43dc7f6b36
+6981146d86d23613a0b38d9d6191db9fea0172e982cb1cc50e382f69da1b377c
+1be9407f88a2a761b56f398467a057f35d18c01cc377e006182c891ec80272e2
+2e3a5c7123cd27eccdc87392a9fdf63bb40f02b7649cfc53ef933c6518744cb8
+9cbbd437830ef5b1d58b00b67bbcf4426dc1e6ef583b0b4ad3aebd741e3ff0f7
+29ae271f032019b1e7268043fd215be590f9cf24da14a90f1683afcba8006cef
+5d5632c2481fbc1bd8224e8952debb7c4596a237e5505ac143180956ca1f603e
+ec70cdb4a33e1c4ca174436a38b06fd9d2b9196f02114b77a9a5f66595727faa
+ba323668573ae328f1f84e529c14d8395e79ed0b2c6788a8185c8d02fea6ad79
+e61c1b34605fc45304ac883f1530f23319391c9c06da81c56f87377a7f50930d
+bc5c36821fce8632087410badc929ff053c89c9a8406f322b80e1017eaa64fda
+5e5e82f0660147863be6ad79e1111e982d44bed91dce0bd7c779cdd77c3cc3d9
+58122914af3246c6117e9b2f6e719ba25cc2722d44654351ac78db249ae73827
+3d70634e80228aef25473508ce61df1b4a1447a747c0ec5decad42e81542894f
+b358fb777762a90f1d7c7bcffc9b71e3101eaff923f763cd63785c189b59c59c
+946cf35b5fcb1b5cf3b3015f63dd82ab5643f69c853d20776ba36284cf1b3659
+4ba50ec625d747edffe463805285134ffbd033fc1573c55d52026f15219833b5
+12ade6d652b2325df00a756c15b5f25e9246c07e16e879fbbcaaabf2f754e776
+ae8a2f9797046ae1237fdf664644c108d931859a3514b08dce31f70f462b6136
+9f09a90ce4d2563157cf3118a0df5f69112f2b1f322f224db6582038b9292b65
+4bdbd463c07f53de5443f3cfaf469c2a2370be82305eabb3b1e7c0debd51fff0
+aec7bef7da7f3f451513a7361688646c71e7d0e9731626ad66c1a611277ef78c
+9781202d171ab5fa7014b2e2819fa05e373fff0aa58df711b483c13cdfc3c574
+30554c78a963321da41b504c0e7d5bd47aa2c55e331745262e9acdebede3aa4f
+2d094af51521584b84a7c1ec70c11199b38b22c5e5d944c21e906630e89d0567
+cd049b8575ad74951e41d3ce009d2f39aa861e97e572e92cc1ac6f52f2de86c0
+59f37d6d199605968b8dbac33ce0c586a5711ad2e945b244fa1d584cfcbc754a
+c1dc99d22f95bec12a0e5ef7fab3ca05c69f8c28ca59176d6fe379ec393422da
+38718a94ffe20df9374fc1a849e40ffe09feb56ec2a59b07c1ea52ce33952376
+67ee45e7d6b263ed67540aa573aa067fb02ecd3b1cae4a4dbe11c610b401b4e0
+a8ad2ad2b006a26c2135971e5945d90aea332c48b377b71081020b4edb3c416e
+85c3730b48dd746fb14ac4f231055327dbbb36f7fab7d9446d04740bfaf1de21
+3643cdde666fa362ff7cd8f7bcffa8519aaa58a4474d20a67d463aabe38a7f53
+5de4917ec79ebcbf6f807cd0e53dc124687baea84fc08e3d7f7f02664e0b89c6
+2690ac383b6f1517dffd4951ea8e3e66125d483e27e5d59d0ef18eef5e2da3cc
+76ed31f981e736a9f1d3f60b8b2b3e6e442824cba1d356ccb170c98171c27135
+490a0e5c59d5220dcefd238fd41bcfd89c5b135a406e3b7dbbb0f11dc96e29d1
+8e57c72cfaf32821228a8309386f012f2ca13c65b62733851c67026676f3e815
+ac0fedb02769b192e358e850c005e11e90946889f417643dca31248e0219e92c
+19a49126dba7a1053cd54648b0cfbcbf957ed0d3a59c7317dfc42cc8783c236c
+cb8ef35432cb545f92219f20ade1a367288916503a5a01c6cd5879c9bf89adec
+26d31571cd1abe43dc42a22ef27d925803127c03bf7aeeb7ec796b354ed35b27
+b9943ca0968b489c9d2fcd4ed31044a04bdd46020412acaa19b7ade8c7edfce0
+2204c808dbf6b785139d1855ff6676c1de8d2e95623f0243a27aee2bfe49588d
+813d53713f7e2e0c2e56f4faac5a0b52b2c28b05c06fd4b293e7c07b0f379593
+0914f24d5adc88cee7d084c29e9a0862d574a7d9a5cbe1273dd33809bd93db7f
+3074d4c1a9ab76517d22603862e1be44f6a8b1ef58947920a5eb082ac28f8cec
+7ad38ca166f48174bd3d56204350adde550abf6d931f37b747ab2cae60e9e1f3
+a34dd3b7807bd462b173681256fb18fc7c770bc3335f38ddcd5a8b8e0ae9b8a9
+37558d5760bf60fa83438d9e477567e1a479379e676214909048201072036e56
+771ce9ce48c46eafb4f5ade5f3ee11d50c04ced097cd8355526a534aa5888177
+ff024fa4982a69ee8f546a4246ae6432d04a52e3cbf42ae0ac6082e7163853fe
+1c9d878e516769ab83f49578e635794084eafbb8153a6131e06eb57b0b25d87a
+3f1a341aa12ac2e9a9567c6a5bb94fce5f9ce211d078244ad5e28ad70d19c5f4
+35f72e1aa160d598d57f85d1ed3088bd0210ecf2f256b2ccf63b4913a3afb0b1
+cb24c65d492116b9b6664cfe8d3c4fa451aaae41d9eefcdd345178c7106c6110
+53d5351500f0e363e7b72f97cabcf4d8cdbea4a235554317ef020a317f5b4d2d
+2fa80b92ae9a71bea9e50eb540a388e1b0467bb761108bc24b91290faaa3eb04
+116aca472bd9d714b0a7bba8541b830b56666b1c47e512411d28b93cfab84840
+06ab835374bb52346300e5735137471d93d2a281e334de6a9038597ef56cfa9c
+33dfbc8f193f2bb17b02ce05317efd01b7cb38493d10c1b64d78e646e7bc5776
+53e1710cc4e3f9f087f29c840fa9985e78ccc53b24f1e5d6902b2e142a29ce3f
+2576f2a533e4193d866f86fd59ca24ab4076bf02406d391c0e6f85145e259257
+fc9d500e8086ec1a5b29177e5b3c0ec28dd20f4a6c59638364c60de696257085
+79d9cf23eb46a64ca2a9d54e8f48866a870b61be4e27c5999630bbd241ae632d
+cc57d0c78a9f1e58a38a526c24d19eb520b2d296d6bca249e5f225c1dedc8002
+7020d3c846d5d334e5ee3a3163a44346af7d38091f9eb1a42984668acdcaaba4
+77b6b7e99c8f1551de0f13872be4860c364f226c05668bfc56db1b770ecb08f4
+c86226dddde00ff3130abb0f896b9ff233be407ea815108a7eec2d927606078c
+b49a2a22295587b6cc4d432007ec387a0e0a423bed2857f963196ba6cdd93f23
+13fd26dcd375cb10467c75be3869a090c912f7f42dfb183bd7802bb5fc4cc493
+baa947a4182ff849bb19e5ae369b8aed5089219d724f17eb46569cf2d42fba89
+bd6c2bb246932d5a795ece10d641818c46d43042467f088a9588db9f855681cb
+c84b86c7f3e455277dda1f923e083c235df9bbfb58bee05d2065339cbe93ab8e
+6bb410a4170a0e23681c56fad08d0fed9bbe5e2905b33a66ccff136ce25abbed
+06937dc6664485e08cb5beeee4eb36f1f234d1fa9da6b8de02d0470a4361f1ce
+91d5350a73b2d2db49a1928cf6b8a2b4af7588aac5bab22e516849b769d5cd2d
+f656a18c7a41fa338420d3b54f74dec80acb17a9875fa91df54c69418393bd5d
+dbdd13d6e86ffffed3c07b3e837cfcbe2b5cdbe8de19fa0be516a28ae3b028e7
+d8a8341fb68c07511e9b1c6aee55290ce7e341f1fe63577da6dbbb5c6023ef02
+6aa5b9ce725160acf7a49530c6f6ead347aeb9caf5f150436135598d8d15b6fa
+14986f386a5e33c3e608b0412f4b087df34d9c63ee8fd0050c62f084ea23794c
+90ddc1d4cced468faba39ab71f9e9a6e5492e5d8a62426a971161fa58974181b
+c0e17dd9e1dcf35cfebde24ef77d1f5405d03075e516c164ecaa0ce6062fcb26
+e2cc7dd5dbf4e5205532a9d1ca20dae373e26436bec024a5ef79ffe95c2ee538
+eac06417b0f45d5e54de18d7391f352bc0089cc63e620947e49c241dd9ef3372
+306a92075e68cc9190b848bb18d0f4e0797aab20474fb1eb0ddbb6ba44ca8eb2
+42c664fee47562a2e7e48cd2a24ca1717ae84ad89686caa708670373117b2d31
+595a4a5584bf36fafae92c097b5658bd150c3c7f1f3381dd94a2c39b4e53208f
+1844b444a38c5154f5848b922b9ba8556cab7cf294a74e1aee96d5d31f2818a8
+f552f4d20ab95f957aac7b8d5772947abcbc5166de7b7fdc88311a558775914f
+d60ac05bccd1138f217a32e282ea0ecd1e6adb9d2fd443ada0817d2f55b50e0e
+32dfd37c0bd2a9bfebbff4e53b40217a0274e1fd5b9fe562622d21885570823b
+5c159f76330b558e4cd8060356e09d0e0981fb61a2de3d48154d6ceabb4ed2ab
+dba961d1b07783702eab6b42b1180f2f713acb9527356f54cbe7088b738c864a
+2b205224735a9e178eec411bb8f67fa9a0ab68f2abffc10513dff2c657b85c02
+97834a2c8240010760265891322ed972283589a87e5096f7f53ffb2d617adf19
+3cbcc73a601e77eb2a19799efb2e6e5df113d79202fec41e47df6608138e6370
+80f98bbaa6345a52261af4c71cf3efdbd784dd609a087d0c3024f1508f1b5cfb
+c8844b0b9b7eed58ea27dcc097fccd25eea76d135cfedecd3e14531c583fab19
+0f2d01d58724bd60437e8d03744e04dbfa2edbc435b6a98a116b1b005dd565e7
+95130fbf8d9a06113eebb5432a4a26e359f203e703c6a9b8a0cae4aa51beb770
+bc295b39e3088669b5a37207186cddc5593389be7727b33dee1ac848083e432e
+51187b0ce428e4c7c2a8854a00350e0a4324949f9cd55c4c110b7a9c109255b9
+638395b7fd7c5734064a4b3606550456157345d25cd6a99c39b0ed4fa6cb9b88
+55ea1084443bc953681855d557c8b41f2b4d8671e4447cb4eaa9e5340dc85bf5
+39b13fed019477cea8b262c6b8c39e93ca2cda8f3d148eeb249ec0cfa7bb0da0
+b8bb3f614538e31b9ff497d5989e2bbea086298e522a44890547a52237e88da1
+2f9670cdc5f0bee9bcfd4bd852796a4b267e9793008c8b0a34fe61a889ac2965
+a48ed10fa5baa86f5a5a1ced3488e2eaea0ddf76a91139d4c9c9e51f8bdec7d7
+87c45300b3e1f9cf803ee4a139a763a9656eaf8c6ca4ce5b1ad21251b5b1eda3
+b06ae1ec3df051ec09b0eaa136632a7f0a111bc2ab51ab6b3dad0cc9c21e4321
+92dc3a056ec58483463648108fd0b089cdf754beb6e6f19c457ba9b4e0333bee
+36e588b3bbaddd1132a8268b49b4f69fec6092aeddc61e4e0170ff3fb2566db6
+e9e6e422d5a4531606c3fb656fbfbc4988d8609420802b4aae118dda6fd48bf2
+bf29af0360fa6259ef9d660c82a5ad7be295b21079bb7a4633d18bcd5ceff49f
+9e5de5a5382bed8869c03108d0ccf58e937839cc83fdc812f0020c7569fa6942
+55abad50b03d6258260d05e46f145864ea4b20bccbd8eeb0709cc300c192c39d
+150d5b426216a567f5bc0f86ebf49df1616aa9368497ad4751c5211d56c08617
+bcb4208e53a3bd62fd6f8621a67594a5d61c9a762d685921b05d4d3094405732
+be9b4665566011f6088282e48293e4e1f844bab7fdf8bc4f5ae51bdc00c5b57a
+602c5dcb2c33d65ee12d70dfeed625ce9742cc1aa43d77677e783b43d9e6cdc2
+600cca3388608a6079b020beb49ef1816e38c0f08de3d46ee33abf731414668b
+d8cfe5290ad2f4654c3a46bf87f3646f6de12216a327a8184f37cccb6745ea3b
+da0329e916f359bd706bf477b7149d0e0617c717e777ff0ead640c82ba29758e
+191ee48966379e8ff040bfba29de306f2b0885b77861a05afd99c7fd6e2f2082
+86257d9c6ae5b86c77b59d6ae2e709dc984f2143cd7ab1b6085e7a46323daf69
+bdb506f80fb9d7db5b3fe9b52247ba1b6e1e2aa45b215d7c3219ad09ff3da307
+ef05d36c9e702042de0e135d19f5fb75bc5b873fb6b1fdd9978a3b027f4750cd
+c467dd4984abdb8055986155afeaa2d92241ea3fb36a062d9143dba8ab4330fc
+ccab160197560015245f7e5b8376871469148456aca019f0aff5f5caa96cd0e5
+5af8c9099f5a72f141fc92f434c302c0f98568f081401b3c40919c7cb7bcaeac
+d500e7840d7f84a18c16a72d42ff31cae6e9a367560ef7b7832eb863e6a3164a
+4119d088bfde626dc11b421e3ce7ef61db8dfe346250b6ab1baa69e6441cefb3
+2a65740a351b670df5a7c550af49c5fcebb85c1c96be184204691aa2267c2463
+ce93b0ace01bfb3f9a5e875d0296929615a9c061b00a260a5873fddace73677f
+0b1347c2982cfb91fdc673dd331f7f2525575c3f38faa670802637266c7a7754
+bb9df871616c1df39ebaecd579a80411403a4c6828cb0d6f125b8c5c1a077b0b
+9796d2180f116f6aae0cd04b4b885142bae547452a219aeb5f02a0f9b963436a
+04cfd95e5dad63fc2b8763bb59949162136e8125c0fe84b67d89fdbe37a919bf
+0a206ac08c4632b1a1abc4fa335c72653a7f882e2c12617f4f85d755048ef2d4
+2842f5a6a6d444114300336522401023a1f98cd0eef2fc24c1a143963dcfdd54
+3ee047231d07b026f782ca9bccd8d1802ae4da1e182aa7a9ca13bfd4922680ba
+861c069b7796abe4818e73e3236e41895d6175ee0b28550f718464725ce7c9b1
+bafb366d277dacb4b54917e9ff56ef2c80bd37a33a750b85a2b7ea7302466175
+0aec66ed109c8fc8f2f8702ab47e213bb972f6c0b909b7dddeb6603bc7b53d64
+f9ea2b70b97ce2ab772d5ab2731e3b746efcc32dda20fe3d99bd1c271bc35a6a
+9447db27878acc79f63714adc7cf90f29e7fc2a617cfe3d4cd1fb7c1e22af362
+68f96b045a960ffd439dd10753d8670626a74b9ef2a6f33ba707de4f7cad5901
+81f1bcff014708a13f2ad20de71a61cf1fa9188cc734b241174609ad0e488d08
+ea26ba900db466f16c49c8e75f07a52a200c7bb1a5d2bb64c2d650a871402ebc
+f89f72bf04aaf68b4c0bd6848f04517cdf6cb915bd7eba8f15f0bac660cf3d7a
+565f67c21139d30a5bc47993f3417155f8f35e6fb3f4d3a6e31fc4f38ae02782
+58085d786a67dba311b3328d8e719957a4c106d9a3936333ce6ebc6c66b102c1
+cb287c870f93a00fe7682e1d4637dc5fbba3bbecb93c7fff5c3b173cd1cb9b21
+682897b0a105741ee601e24edec019eec910faed7e0df2930f3a4be9de563e0d
+76fd469c02ff6d0e7e10071ebcee6e0855cedbca89b74f5da3833c0659925cbb
+038899b71497dc8bbe9eeed31ec4db600632791db46946bf4f0e463eef3a9f7e
+899df55207f96095ff1d0a4f3f8a7e3ffef7bcfb1b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 63 /question put
+dup 64 /at put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 94 /asciicircum put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 124 /bar put
+dup 125 /braceright put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+/UniqueXX 5000832 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306462c563d51ecefaacd079732f12c29
+315e4b9623a5752c6f1d8145869e120d910b2644887cea7e30b15676a92537c2
+9d3aa80dc30082aba94b40990b82fb1a877e805e0c8c48f61e9f2edac05b944e
+e4d8084ec1d5cc517aaeec5b3ea379dd011eeb454cecab3ad2443c887c582789
+72355673e503affe0394fc7db31de364e4f56c24033c7df2265c56445ec63a1d
+5695a6041ea1b94407e1cdb7c5635603a4fd047e6edcaeb2d0da6c9e0e9396d5
+1a4a58e8fdc1578730f992435560a6e2d3e3687703ee2f78f5896389ac8470bc
+806169eb01762e89b6dc9adf857ead656620e2589aae722c37a2ed7a2941c360
+b067ee34d8d5ca3bf68db725614d936bcb207781f4d4ec2ac67b13a5ad161f3f
+059add7b5e3d904831e31c20c04546fae83ca93a35989e65c201756888f727b9
+7e5313c9870ec96e4cec3901ea03a5c744754485e7d169bbc98bf872d0796e18
+9d43b712950c3786257d8be06ab6080b9d9392313298327549a8a41c00a2cea3
+690b4a333e45aa815a64facae1c2b44640860b8b8687afbefdbd5b4a541a7251
+4ee7d3e0752af3e96a88c95d31fa16d34ba2f02fdb0088b165844f02611c734a
+dbcc2037bf741fdea7e8bcdc130c70c33772f777d8bcddf4611db99001ccff14
+d7af2bb05defc3480bdab312a0eff2f375afb4e0df2f803c594b7c93f71ca4af
+861ae1711932fef19bfe2f9b7adb69d68e5a70ea4d1a3d5bd85231b16993f65e
+fb37a0a823f0542f8c2340a073dc1be4a8347f9d3068a6435cd8278b0db1809e
+8af9664c2c989b9f16873c009449b6284b85da4dee11c96a05ba83292f0edbd9
+2cf674aad6ac1a5ff966ffc37e88a66048deed053565b55ef6bdb8c2f2f67832
+f8939a32442ea54f13d003494d6350a2864b427a9126a9c26a031909fe53fa84
+63b80c3ffd536c9a5dd29ceb03148dbc24c0033aec95c7fb4031f65dbd67a2d7
+0e6b0a1bd772f5450fa1ddf2a6424fa2a5efcf7fcf2260372574d7050bbf7d9a
+c6340019109b8f57540141b0b96f948d83e0f470248390518a6e881ff4511933
+1c274c98a1f8af8eaed5a700c5aa8785011be8b2a6cfdd0e35ddfa96332ccf95
+f9ff25733ebed67bbfd4ab734fd429f2e389124ab79d94802f2ccd41741ef75f
+566ad0184b43477ab5a074aaa7d5032d9e54a27050363bd1cc0fa3d7dd0c1330
+618008fab04093d1b242b34a624b4fb22b90e1bf1f3e030052312cbd45e7437e
+b00f079e154138a510686c845e231d38f64b591b0a6871dbfd0a5f6eec3326a5
+b6e559e4955e6ec14bd4c08907d10bd3337e77f3e95ab24c7ede5326b7470523
+1664c3fb73ca3b1cd256101b8f0e3082bb42cbc707bccb31c18ffe2ba5248204
+baaeaa4827364a0ac244a673cefe846f1eb7efbaf56df912429af20762a52538
+567a6f6616a63610ebc1e5fb3edb58febc36f5a600f9929bdc94a9c86182b26a
+1ad60da643e184d010e46412f6b79ac874437090ac9b9d5e9fd561a02434eaf3
+86c73be33289afd12e360ce919a278321e3e9946abe3c4d85d59f4ae94766844
+31798e97254186f3ef0012168483a500bf05e5a057a7a1d29ddc982648d248de
+07c687e6ab29e6fe8f053df7056e12ef3208e8d962fee97bc5071cf2e8233eda
+b368271482d9da24ac4352ebbd41a4b481fac65eb8eb7ba55dd0d26911c7c8cc
+71b478fb79d91cc76d15ccd1a72d8dc29ff2662369bbff20820a7807fc423d02
+8f1d3c334cb38591059256cc1fbeef36cfd5b5a17392b7536ab2a6bd6cf81e38
+ee1730897477ba75cef601ce69cb1bc8b773a8e0b7ad51e5d35233c37d6572fd
+2db7afb1365ce6b1f140ceb1349d281e5aa1ea84d32b76d849510964b39c5ab6
+394d06618352e8f259f2530db7d44591155cdc51fefd1b4f6f968b6ba40d3e16
+097c3e76e17347fd9e18349a304f8f77f2c6b918b42d1a6b8884fd13987e816b
+c3741fa914dc6b1c8f33204f0f13a82c890dce71b9a2986ffaa2fb28c59d5a8d
+62fd41a4b19e695ab289caa9cb1c34b7650956b99502c3e284c373b60dac7b84
+9c618c42880609768ba86963ea71ca2bdc2cc8a0b7f9bd8b7852b76a59861038
+39e2b19796aa6f6fd3e4a2af29e5cdf323eb9cbe993736e96348a8a338c492cf
+853d6b6f881a37587fb147deffacb4cf54073f63f8659f53607f2b8109626c10
+77cbd5aa31bf434388cd54cdd3f94d8309824e0870b0db78bddf177526df567d
+ab1766c9b0a10333d854977c21cc89d7215123a83ab5f2c7a30a61a3f41d5e20
+551a03d2353f9e87f21c3715b178c2c9f23b4dae07d939084bda0b4e7c6cec2d
+278609899d1944ba0bd0533613b8e2f0c652e5ff2e2658c06d26b875ddfdc61c
+d50d2f83559a04b2a061d375b0f5535c96bff3cae7ae0107fa477f219b8bda49
+9bbcf9b991e3ed6443080b6846c0810df3f24e741333269b966e58367b179db4
+26e59aea3bc7184ee15ffcb8f82ab4de6a8849e8a426350f6888cb4689b38150
+41851208d2d0b1dca2da977a0713aeb6c78bd703677687d3ee3e44ed65521f9a
+4455ceed6b282278e6c47b9dd5dfcd0b998d228154bfea2449d51a673d455459
+ecdb1604e3c650103a622093372240c684f390b9283d1601bfcf4a60280432c7
+686a68305ac2651c0465c53d7485d98275078d0dad8e4af253f11439003e3265
+e69f60a1033b9b98d36e37669cbd00b559d79f8d41f3462d90f5c5955495725e
+77aba90f100ff82751b05f2f7d58ebd76250165123d7f8573960439bd24a2f9d
+888dfedd70a90c661e39714c2b87e99c55ef7b38f625055fa93b5e39a185e8c6
+d1b38d0a8b2ae12935c58220e83c5950296eddc1100737a3e06aff6940aff68f
+795103776b6b59d835769ca1f767d50c903b1d01c1c410fbbe63a4406f2ed090
+a4d1e8ac7fd0ec4b9f8992159612d478b1b3218fc6d2ba1db5b98c0c4dd9616d
+7f4319f6e128513208d1d0c6c005ea0b1cfe17440e82132616fac6752dbc0059
+2f50d4f5623e2427a26c96aacc6356fefce827505b4689afd7078426be2730c5
+1a7c9844c3d7cdf257e54bd0d376f8652451dc4fc6373f86819ec6a029563a04
+a50bfafa5c4c7a03c6502594f2e42ce3578fb9f71467e402f8527ad8dfcf8c4c
+f0c04d8627e7ef95a2e90115f58b48b12585d4293421dad883068fc4077bbfc3
+76ca0a31f31a5f7dc3cbdec3945ee76f425cba80178c36a0bf3b1475ba0589bd
+54a644c397e27e6447553089a0cb58412bf120143ce5265f70adbecf8ea69b2d
+8c13c3f544f137da31f507e66b69da476d0ba5459263cfc569604a51dda36eb4
+cc8ab53586657306e094b5412ecec4380a37fd277cfa5b262e8650bf6082f113
+bc580b36085422b28d6dd04d41bb417bab4691457b6e8bdaf0084abc9fe58812
+942a3aa8808c60f30ca9ed8fe9ed7fd7654b98bf4b3cb29dec8e895c266df5cf
+69561fe0e8f2e0bbebc5630450e125e27b71e34b3a184c4517da85d100f44a0d
+2fac008a89a76a98081e4de77a2b46bce2f2bcb3cb57ef5054472430839055c4
+c8e7eb189f0cd6cd399cbb7469cbf90074b209ab97c07aef1d16e99c34584317
+cb440fd854d73060df0e3270d221b067599774413442dfc91b1e6eec94c18c4e
+682d90c6d930cc9f68e8dc974554accb825964df328505ae288b1dd35b9e0b1f
+7ff38126c0e611b785320d17525d386f8b625a077ebd16059b333f65ba11f65f
+f1f268f2b5eae411b07be94710242e6d0a2b33b0ba39a4f79b632005cabb6c5a
+51a6e5bc4df5a5a37a5a787ec32605695fecbd8ae7ae80759c2773d4148422b5
+cffc971d7544d3e486424da9af2bf7275f2ca0c2a45835564f6c0a998ce6363a
+1194591876b660840fb985c75d7bd74950d5a064cb0a2debde68f88ff4eda82c
+ba3653c58beee40a548ba349c36b208ddf8f42bb40fc576c2e55408fbc2d166c
+3bf4d9fe044f260417788fe588c9d67b12b25164432fe25c985663dfe2598c53
+e8161724106a2823fd1a949caff3ac152b694582b42a70846f066139d76f8a02
+d2c6ab9e51c63db6ac97a4d1eb6d318dc02b10c35e0fd3cde634574a990df719
+9682a006d377673748a0d876a7e9c46a5db5dec399d39c1e6d2f81770cea1913
+ef0f1fd2916158f36fe920620817505aae59ae53a99cca95eacb2fd2160daa05
+3b3e95e3c8105bdab19efd1851ff1ab2b4787cb32e97bbb842987663c91629fb
+7810f11169374aaa7696d0bd91265eff4d31fdd3d3b681b7a242b1b843a99e68
+1fcfd32beaab6be5ecd7134b304973efb544598a5546a069f7783a8c72b10d54
+94aff8fbced6e150529a56ec3063ff74f1ce5dbd627afa64f7eaf1e5603294a0
+180cff2db97e1dab52abe700597b50d2d9ba61241817ebad1dbc6b768524616c
+1a3052b028903a4b03b91ae975eefa7a5cf38a4df54cad05e30b2975d7e90eb6
+b1cdde17caaa4cb0549362edae4c8b11cb3cebbaf9d7b191bcd7d6ba0bba295d
+3199d2c85112ec1520580a4dfe4ed63509ce2fd84cde38258b95a2b45cff373b
+c1f6089b52de98eaa0ca9a30a0f86a480aec8c6e3d3b90443405cba9bbe3b1c6
+3277f8dbbed4dd9ddbcaab1da5beac99220dbfe4f91c0e62d42b7c5126f99659
+1ddf08605808bf64ed9625d6fce5c874d74083fc79c084167ad48cc12a1920f4
+bd364ad1f6cec79ef3948f0a50ee64144b0eab2241323b9c83b75cf7a9c7dbe3
+c94a61f09dfcddb98e8b8e34dd05610c4811f5747ef78ddd4f0923ce5ef3d5ca
+a1a293f91bf8d34bddd4852e77c8d9acbd61144985532763a54319a3add58b4b
+1f18d12453e49a488c0afa7b3b9cb593562aea8e04b89ecfe34e070d8d4bf4bf
+61b43de0db1815ad82c9ef6b245068e18b8273058dfe6813909a91facebc4e1f
+b4ad271cb5a57f55e2d0bfdebed560bb7c0ef5ab0a36b374e2347cefe09e8d27
+f060dde4516f484203092f244d5c7f7a7460da196f16232fff3247e3a067ed57
+b0ac82a5e6f67f6bf3d5d279932d16aad69dded0bf55f78b2dcb03e0d1f8dd43
+eef4d9ab88cb9317f3a5402db73b218b2286ec67a6e498b06221c46c0508f29e
+b4724bb8a2802780ae081c7930361420c3035e55f02e824d2ebb39b991949e07
+b17668d0cd735126a882b4918f54503f6f64bad75224aa44f7fbab75f6b603de
+0f2ab7ffdbfbd84ee7feeac35e0ac526b3400b981967d00e3178a6afba7666a5
+72dcd978ee2f0765c39876a5135a772c3948069c69955cda476cd5f9c6f01536
+194ebe9b70665e5cca8d6db77185fac92fcdc6b212f2ed78dec0eb0b489b2bf2
+0fb9bbb8e245614d3a827ea1582a44d4950015f28f5550c3f85d9fafdc7e4d4e
+6df3dc70a4fe642f0a0921a364c6fd6a08529c61a0fa67f9ffeb28608679455d
+1d0d093b44df061b5b210a5e3f266434b7b7b4cc9783545b288ae7d2e695196a
+35a8b41af8f3f30de5330506bfe0c0de238228875d1bf9daf48de72a3ad9d11e
+559da0ba027602cdc25f637435880fb2b776c891178f7c45f90e345f8c919af2
+05b8c233b2b4b4507b2edec77142c39adb8f31f32b4c008652ef6976c3bf470c
+8a25ce64eab074888b09f2ef8c3c50f1e3e1f6bedc36670ee15d39b818b99b90
+470db10af5061657ff4d62e0dfc8fd1bf8d4003ee19ced243160a8ea63c9a9c4
+dfeed78cc2714bf2ce703a227b53207818f379b483bcd86be035d01ead11d76b
+ee5dbbcedf1f475bfe4d32bdf1cd93531586c648124e9610db6679c0715ef6fe
+76f615d133d055ac5d341f7b4a82c4e7f3b17192013a4a85958923255e0d1eef
+e75406fdfa91833cb8283c962f0ffe40dabe5ee21c6325f1029a54691519c476
+58a448fc708dc28889623ddb549887716bf453b938807469be7b5ea5380e3a22
+fb70ef1fdeac2b5de51d641b87755d7c66c74f6d1217adf6a439f569b65d46d3
+8cab406d1543879531f822f052df43aa3ecf2c2c52d0beb2e517bf8979027d33
+484bf0fe961bb9641055da76aca3b19d21be24b2dd8d7d0255d2e8af54d46e7e
+6b4064316d6a5fc318f6418b82cf30ad4539f9f16e36297a62cf8f0d4df6c5dd
+c7f742773b63d18e4e448b364aacbcc89a1ae27e8cbcda136f67955ce361a6f0
+ae9a182790ec3138898d88c638283f9075b12cd4085ccdaaf27bbc405b4fe601
+fd86b4e42dd9f6e43fc772ff3c59a95a455583c284691fa1ac25d986339c1f2c
+d1a5d29ed6d6ccb41c6bc13c6d85080de70749af688846d6a2a77d9c5aa09d1e
+b911817c599c4f877613fbf72014c927662afa5d8d233bb7263cc3d28d3b429d
+0757941f56cdc968070999cb89ed10150d5ea1be943f571cec0a8d199269e70b
+d850f0aa8340296f25ab5c0a0b89edb998b01033c3c81ad809f06f8ab1f9b704
+379cd2e6661020dc2dce9f207a228fb1fbc4c9634feced9538b76d2813a773d9
+c294bf4f9b0403b7ba4602d3f7712acd20ad7db8b3011d51ee4bf96541c9b15c
+4edffc24a668653ab9b8d0941bb05c18a0ecedd8baed73ce1de98d8281e88c79
+a2f0ad7ce0fe8c7c9afe1fe2e856cf2db4eba27575a6fa5dd711b216a00e02aa
+931d78d31663424ea170584d5963c05adde0ab85cd04aaa3f3ca4d1c9ee221c6
+d110f57614f550bbfb5a2db2f89a8c3c6d8bab9a86fb70da9792b311b6931846
+f392286aa2083ce38cc826a0d1481955f6fbbd223c3ab92d0cb96ebc205bcb11
+a23abc8b89d1882ee62169a72842e2688b753bc7a759d2973d13894e6c1f3f94
+475a56791c845a544077523313040abb58d2193b8bac6f600d5bbcd32c7eed48
+0ba423e573059791b860ffe6d7a4f1c2522a105886ee5f09a9acf89f9b80a521
+6d25c2a99231fade33de801865621d6871e174f3fe2eb1d192edcd1ded561dab
+952f526afd0977ec98f06ce256a0574b08f87d854e1cb276eabf3f31fb88073d
+c40b5f8b3c82d462fc2e5941e46c08371ce3aa58c743e62c48bc0cb7bd96560d
+900b26ea5fcc1c2708245cabcd7074c081a3bf4e8522b4fe398ef105ecb50469
+2991a26b8a3a6d4114c4eac3eaa7c45b91b1b39160c74e7ad32f27a55588763c
+d140d7c8a557ee2d2036c4dec948a5005f56e2e66c1bddcba2eaf75a29c4562e
+8337a31f5d5c2e57c9add574e14445c0ea1d958b1aba301038a8e28d8732a101
+8680f6d526bdaf1868e2794fb37ee16047c47d8f506bc4c1d3c20bb20bf101b0
+39f7a33288a79e56b5b936b0a52b88495fbcf94ba6339e945ede1ae6d7a12a0d
+e9eaebc6d11c1178ccefc17fc267e5da8fe2ab1bcba1541ae2847172687a88e4
+1bb30f32ea31baf120d94977f2b4828e2b63a80b2a26625a336703f63f2715b7
+0148bd6a24cd87534e554faae3521cb8509e3b858a046322ea0cb72f4827febc
+44a002d807e5c3a9c0b3d29ad6fb3afc14d62f439e6b8ad7ce144516db8ef683
+560788d3cf5de4fec59cc8986b182074957c7f61cdf3f4f7da20656545d62bbc
+80439b72fb162f8d7489bc97ccf1378a5a43bfb7bfaa9844e125d280183e4610
+a55d40673e204dfa0f73141ee643781c0985a995c71a19ee77c82763e7132ee3
+899354b21334476b3b508535c2b9473ac77662eb7d7230a28ba77cc88f1dd409
+22b81d33bc74906fd2921d920fdb423f2133525ab0e36bfbeefc7d0b38ae583c
+a0297bc8fb7fbf0b67df50ccfc3253443d6cdab32fc62dd41395d3716c1d44c5
+e80d2e6da1f4b85c04f83ba4a35ef9424b34247e95e3be227f509767699d23d0
+de6a86de99435954a1cc0be1a86a75e0fefa55487b8442f1452a9f131f19691d
+f9f39ee4b890e93d9b70c53eb09fef162b73e4884ce5ac4d78cbfc74f58e1da0
+9784a11012d8d6d67f8292b9a89877a75db9d38148d04f982679e9310eee92b2
+5a8f204c98b6881dc05f5eca732cf662ed74da8b088adb34d5be0244a60c989a
+dc9e7a2769c914c4e74fd0bc988b5427481b39c6b8c6b5a18ec70605ff4e8e7a
+2c778540500a5e322ebf95c5b83e3c6ec9557df3c17a972cd3f2ead51a78865b
+38aeb303f18b88283cf9bc4a174dc1a45797f4dabe18e3766084d4874a0fddfd
+43313b8ef405c37708172ed8d2e3ac976f5e39fa46ea34fb70be1212e41729a5
+dc2401ca452bc07ec64fa345eb1208dbbf4d6ef73abe11cb5a46d030cc58f0ef
+b4bbafd71213c01a046e5f0960355f2f0d525adfc5fb3ff417fa77a8447457ed
+5e53f1c363f4bc8557e7136f38d9468b9eebf9257f7fb7e41626c83a35da786b
+f69f7e9e11cc626fce709b93d594ded60f42abff4ede391768c09fca46c979d5
+62a574ada7807085d26f987e8fa97cb11d47dcb499ad8bf19184269b3d630ec5
+a6b25f57688469e0fb6831f5d377c04018865e1b0ae95bb9bf882b15a04033ee
+44e78f54acc47b49504089895ec6a8983c16743ff5f3093ddeec6aa6fe1f7014
+0a5d7fdd06f717d4782efdcd01bc0ae49edd1794c35ea02624ee4bb79f3fc20d
+b4405c7f9c2064e6bde7ada051ddf440dad669ced8d2a0785b0163a6ae65b45e
+b2dd50769c8a6a19207cb6096610cec11bbc4efbe1bb3da8245c68e8bae49846
+ed23b19162d147aaae7d8ad0579f100eff4bdf5827610c144807e4ae858d7531
+ee933ec776c46a6077eb338c1ba0999b58b58eac7f344546e893a07cbf1ba9d2
+c9bee2b87455fcdabcc73b22edba7ea898d311763ba582b8d7b0a4ee6fa08b1a
+be623efdcca87e11a13e3a7234c9b95d6ab67d1d89f6c03a9746c664738dc9e7
+a89ab31d4d13aafbeb5cb77a0c3b7c301c4052225fb4cfd967f39cfb79059386
+4b815bc55d9864ff46e68014220ed6260fa94bccd45c0f1c40ef310d0b3afd65
+29409428968a7cc1eb1dc29a8df9ea532aa8f4ac22ee3962ceb4fd523704b6d2
+d1913a03ad7f0eab0ab3617e9dd6adcd1d6c3a6076f1c64f1dabc95413e00d06
+db8375c09ab5ad13511c81e095d83865c1218852a4cd120c00b2ba9579bc5c0e
+b47a73cce903803ffcb66087f6dda10dcb9ece5a204790a113415b328026d4de
+17e1f01f444d08ca48c2e2ae72f5e6b194d29170b9ae7d91d827e2cb4bd3e39a
+bd1d2fa04a2ad0b3f7c224330f881a07ad5f24301e74c6771f548c43dfa170c7
+b55d2b28a0d8dec832479e4ac9f0366aa8e9f9b769b526edda26355ec4bba80f
+5a4ee74d5bcfef29b7252e40aae330d3311198fed738c807d16be8f0b16f5ba9
+f9051951799e3206befc6ce918cecd39dcff9e690452a67f9e2534316b05359a
+5adcad9ce3826af553f11942764c3e1abf7ecb9a9d2d50231f818bfdd2d16080
+81ecd61f99c7d9adc9a06b2560f92717c95f5fe4afcdce885a1cebe9358585ae
+8c35d90b3bd725149fb84f296ccc0a778e40bbc24eecda8bb594589bf17c4488
+d223a61b31559bf0a0e4ae8ad2e3f126dd798e4fd535f3501dfe14abca1c0cc7
+b0b3e1fcd8036189158a9221fae6ee3ab078cec66bb6577f0db670947207b176
+81c9c13b4d8ad7a674ad2793e9a71069206b6b654c6dc6fe6527118a876e7100
+a76b65e45262005e248d6804e0ac4922b918af4a2bc019a1edcbde4ff99dc70f
+b41f1f4ff647d8598f34cdec11abf95efc92f24fd07c3320d916d058e300c462
+c4d4763a6b31abdba7c3a4fc8d32f4628cdfa44398c467529d2d01f6ddd39e2b
+4adcb2fb895eca3a64b9b99fd84a9a65232735b83598d91f24903290c993df36
+c93a8ff34036b57fc8e15c7c652db14fd4a57fe9776e0ce876a7e34b1210b46e
+531ca15c9f21034a2595e6a3e3959af0e50f0e3b1120ca0aafa2f418d2eab1ad
+e96d88ba5e2dcf81c8c1d4e5fae3bbbe22babd8aa6668a745bf9b88e4b57f2c7
+e367b7431e88b60fe4d0faea776a66442bb22c82c29313023ded21dd76035961
+6147b653dedb0be2a733240337b34aa758120670d5a31ccde0a2435dc821f713
+a69cc07b360673bb5e8893075f5611bf3b8dcadb58a47d2ca20c48ab0a72f53a
+bffe89c72956f7f8e18df620d4e58bd3cf01bd84f2fa296b893df3f759bed59c
+3f3ff4c55b7b07f4a14601035b0fade44d42646eead673e7ec631b97dd4e9688
+be54fcb2ea0c05706700832ed27d3557fc0f6f400b684da7bee5e6e2720523e7
+52962a95b14f02d8c28ad664f79cb0b5a3da6f7f4a23c70ee28841c5647a5853
+be2fcbe22abf6d26f4dbf13121659b68419fd26b389fdd9bedcf24301de98e3b
+dac7311ec05b3a02149fd9f32840add49548a8f917ee09020cbbe8cf56dc61d4
+68f6b72543b6905a6b0adbc8db47d988ba36d28b7161a98d096d95092bc2dbff
+0ab88f1ef15b3d4e88247e04709dbbde5fb6b44428e3d92fcefabc4e83033f45
+a65820f2cff9657e59ab29303b1bd0034b19d124659c7a09a909d8f7b5f83024
+9b910b0bd4601781095cf47975ba8a1aa3c5c5c2e2ddd01f69bd42e27f9a049c
+450f293308818a499c59c3ee4beaf02240f0ea2e13a7f715c941c7efb1adb776
+24f4f73ed30bf1af54c02f3ad34073b5a1ccdc66708016dfada117154f08654a
+b734bc052f7da294c3b993c3250b8879e722eb9a3edffacf24839f594ef11dc4
+27ba93e682e48eae7719408919eeb4238a4a804aefa5f940a082124b46d071bb
+44aa0dd00508db6e7e28b03319d10923f8d9569d0c722054fbcef540ccbf0954
+a5583f79fab0479a6e0aa30ed682c480d6e99f015d31e43d84ee10b8deb26f01
+5e7f51e2ef877d71f5fe648c4661658e4266dbbd082dce77685918b09340bccc
+67349e7a7db4a39572629a67127d80f66a1744a887f1f6742f32bafcbdbf6562
+9d645724ebdf8ad180e84f6a0deaa5ff3bb5288f35af21bae96ccf24ca49a8bd
+ed624251f651247de7cba1adbe5acb4b7a30cdea63b65d32d19a0bd38502cc05
+473bc390df84e1430a0f5652fdb59857aebd369a6ba8bc896a05793a8b5b6a6a
+6cc0cb054ced3ef56a5d3605b039537b6a2182f7e3dce2c534bfb71cfe9bd441
+de035122323e86e51a57fdef30de238112fbb4089694280944f3d0016f7b0bfb
+7cab6b5caf38778af6d5b998ab4e3c484637901a93c36664b03a7e908521bc89
+dd27d8297e4ec8f1910f283d56973dae167d431a86b72f99ef29eedb1d3cce7d
+8a094acd99177bbb368c167a0116fb78eb93a2bfeb4327af1f2edd3c94c43fc9
+6efadd893ecf386b5d22094faaf6e82e982a17a939d24844562face216f5dc0a
+655e0d2a88c0e3cf45b6203a4221d3f89e19e0bb75966b9b2d9b072a7bf03067
+c650d6320ac369b134cb16eb50d8313d46c46cf5bec0f3c3d199e66ec59ac669
+74ed2b23e25fbc439a1dd09af351defaea77e8781ffb1c573b5e9126e78ef4c0
+09e71972cf09d9f7f1fe923ad26dacc8441eb6847516f938656bffb256321315
+b5146a4213a86f4171487c8a27251292ab4fe98bdcd47cf0b7aa762648ab129e
+556d706135a088782efc9b3a36227aca22efd3f9f10dc6e1775e9bda08af9242
+0c530084690f594eaa4fe1e2f9c2139626fc8aba181aa4f7a808ead8c5c868b2
+7062d90f1c1eb4d5e63cf1a5b8342eb27f7c57cb17fa3cf762ebdaec10a6fda8
+54bd2dc1eca4d67cb741433632c7817c76b5b8a6aa5e45519de36ddb58f00450
+1cc0d3ac98ec17cbb4fbd101e78f350369ef57d59a50f200770777f56a7425c3
+3fc4c721f721a45603919722b7c74d353ba339d3cb990c9d248418ea274bcb41
+6d822e5e5c908af4050bd52dd9d946aba0c6aa1c6eb732b09798d1e7e46a87e2
+ce0b76340328ad2d49a027d10bd14718cabe1b764c45c026fca79982a662fa4e
+dbc48aa698a3678664d9a16e3dadb6a0233dbc9d588bca45052a52124da71f37
+2601812d0a123c838c4b70c2f5895522d7844d79a9b3d954f813f22557db1b3f
+b55cfa6bb9e8465305dcd23e2e8b4b569d6e8de1de2bfaf17fd7e3c8eb8a6ccf
+2ba3cfe875305ddd9b8bac5b81f92b6fbcaa0b9b0d8e826a5125930f8e23bc78
+5d6f01f05614b6aac2e0f6e2163a389851f031211449a4d804d3179cffca1be0
+db23823c3e944b87a06117bf81146503c62bf4933c36e69a27644f25d1ab2deb
+2fd5cc868fb805e3aa897932407286c6aa6c9697bc47c1deb4bef3ba98a9862f
+65d2e08d4fd39c0d5262982108e462ba13bc354a5f189eab93a10d857db4e56a
+fc045cb7ddb02a495c2958adce197c688f86864ce8671b253710366e0459b696
+4e13c9d11cad4a2880ad10ab616c1779bca4c874e38ba0dc7a3346456c07bd7e
+25557d14b68d1d2e15ae614b4340ced9893cd937446ae2de1b4b7bf4a3881897
+c14a07933199b555ce47658397e30c05a61df558f176c2a4aa330519e1424aac
+9ebde5d6d3ff024d2368fefe7a2f1d3f1390bbda5189476eccc162baa8842f3c
+491649baa8466cee9c9de34f9a802958419c8507526e9a6fb7648419bc4d3b6f
+ca1908e90e6fbed1905212c6d6e1e194726a5f3732888bbb8d0f3f846f70e533
+7e314886917316c942646a7838375630745a043f9c4f5bd5e8ecfe1bbe7781e7
+c805d6267799bcc8823d47150fe4ad9e7e339a628fe9951585cee35c82df8557
+0e591de3e5ef646fa5c5f265c88a4473a47d7eedced6ea81329794b088aee8a9
+599f352206fc6a0bf71a711cc2998cb2cf0da952dc41415a039289368047cadb
+41e622f6e69dfdf1811ee3a0bdee0193152407948b78ec5e95fb014092e82363
+070d7cba33efab3d0c450e682a1d0909b68b42629dd71328288e80b89e2c1445
+94a478e59313981bdf349f41b020aab699b9a1320d40b17f36e6ac70d2924eda
+68c2bbb7fb66614ce69e169c606834101661f7f31f396331451a8de4526f1f54
+2fa84bc0aea9560d672af6330d006175b47c12cd70fdd4b62b0bd595aed083d7
+aa644c7d92dfa8970ca1fb28fbdb68e3125caf8e3bfb58c85e80f3c21b42a6e8
+4d0bcae465a981860ac7020732aa23677e27e7494000293c4bbd0710ca1210ae
+ec2eb6af0b3b76b411d1c1de0ec2de77b59de1a9c8c0500bd62c824e4254eebc
+08ba7e23da81302cb1ee72b0801dd78e539a0b62200a5da921df3bfdfd03a033
+4ba9e53c6cd82c26e7017ab8e7113537792ecce352f0ceaf199bba3ac56c5e8d
+2f704f92ff9f08d5c64d08d92a41a315e75baacebff3670ddcff725114a828c2
+3809eaddcac452e8131babca265dd06e0b32a6e6300054d76ae6fd25bec559b6
+1812b6329e6adb289af4321220fc702de26fce6eb1edc9604fe57009b8421ac3
+fe25898b878f2c1de298683541dc7606cd68276077713a47625d446f7724b478
+3a392bdad4204d68a796052dde3a430585d711974c91cd0909dd566c551ee14c
+cf18e2a2062eab86f2ebb879e348e3d31b641eac9004b7a976af1b04f39c97d7
+6735412491c338ec79bce934dccff9d3cad52a729d93e1023d3ddd423f468c0f
+8cc08c7173b4471a511b645c5af8fe2874b49384e398062b8209e4a4338900d5
+d02d3b00b8a48571a077b637d99adb6ea47d6b075fc06e4952f9a76a8046eb03
+f073bd6124926138d01d1284b383771a959b7c865da00ba4b67d185b9673601f
+87d4821cff3684742af03c28f950e7481731cba1ec67ccf1a57817ac82985343
+c5f8a4f95ccdbd6d5417ade630a44fab8aff8de82b32570e08f3eeefa423d283
+e29d7aa09122dfeed6128fbd83777bb79a905934defcdabdd3c3b598a4f1fd2e
+bd8d56ab3d145c4264e61e4085e3a50cda242d200f32284d5ea3a8fd64822821
+37d3e8bd1de8936109b7ac9279c95fbe2bf9aab39cdc0518cb47c5583605546a
+47ccdcc905c1d0bea1ab4a8bf067da534e9589e556cbce873764448e137ca532
+5efd48704ccdedc4d7b4a1849182be8056ed5d5a405f5e0d02b95c478d98fac1
+14d1192c7d23649ffb5dbfd042b05b48fb1926f8141d5a2a9ebc5bc9d160fcb5
+3e335ee6ff631e4976db5233d9a7384993ce7eb913127e8672b431b27aed0fcd
+97425edf9485990a150493f763722d25be47bea5a0d8635a6b91dd39bcdb6866
+17f420035d86002454b5d908d7050adc6ba459a160dedefd03f35989d1a4ff42
+a5a2e96d4bd01a11677b94c79d458491a142697064535c7416813866115f9396
+ef746e084072eabfa4ff025204e7784c7d1ba88ff64ff3c9bdd27ccf67e8ac11
+b6ce567291c8465ee9b84b30a19128900d091a48ae121e8d6400ac607622e9ec
+1ac778f09297607ff15da6a3857ee2d7b755fd28861e4b351f8feff0f79c7c7d
+e694eee0148d58fed7fae4c9ad6710c8ccabe50c7efb85441590820e3daed109
+5bada82357decd9089740c0e7fc083b199eb5298a8b83755090fd387a0a40e8d
+ce941c5cdffcc41c1fe554cc1d0c7f916a2004ecc169e72f4e5e6ba42a1ae3e9
+14ac5a4d033dff5942411f79e8262bc3cfd1d949e415283b22b8fa79f6e1ae5a
+5a9c39f49202d2195e47585685d62a30b0ecce4a2c1256d00e7f35ba6382f87a
+3cdb839806be3ecda6b680eb028d40d285ccb951929cc8c47fe8dac5f5e2a090
+bbf0ed8051d17d0992d4708b45d59a7f58b05f618a2a2e55918899dd2de5f6ea
+846585274d6581cd5fda6fb604d26e956843728dd28666b4aa2226b948f2b821
+e0d6366bd3f332bac7d4598da23db969340e2e8dfb06833989ebb17facc96bbf
+2a153c080b9083cce41a953f569c3280ef33fbb6f4043cf3ed5b5d7044760617
+cdd8a9eb46981f0702ef2bcd326c6e26bc1711c56f4b8362f893e98e8dddee97
+ada12abc9fb86d8b64acc05848fffa1c706f5e23c3a90f7e0bf7c2c67df3eea2
+7f15dad8b728af250d0c2bdfee21a48057437afa56232d351e9d3ac893056eef
+4414f364b5ed4fa4f88c1c9b55a46122188f655ccc64526487fd31605b1899bc
+06de0909d1bae5691f126b0c6977eab21c1b22fda4d055c992b06c4efc5aaac5
+eb7ad0613d2a50b773e1aaef35b048f2b4b238c0c77e2c0ef1da71e71802daf3
+db224fe6fd51243ad7bd39c9a4226dc01e0b411792de0671c121cd71b6e9fc96
+2f998eb486f15702170dc69fa1d71115a0dfb897d612e58d32a92674c3776e05
+877091dc643a090802761b128c2335405b77cb1ffbe2e374aa8fccdf07e92e51
+09f4426e80717f1199806b2c86eb9883e5b8e8bf7bdd75ee55214394c54f5a46
+b7ebaf79bc39f2f2fe604e546f79e3255ac0664f828207081ca21e2a02315f2b
+85a860946a5b6a592bf79e768d5bb6698ffc39f0d8df0ef83cbe33af0c436fd0
+47fccab70cff45db8c5a2b8ec576ab0262e56d5123053ce9ffdd8379a790bbc6
+199a1f8ec18dbc8ef97fbe76d463788e6c5396b035f7ada37d2e27e527d73c9c
+29a200b55e5c0680ab9a4f640e9ddbce17e818531be204392fa572a03cb77af3
+5e1001ce82f69c52bb534b3564cd18c69583af39150b42fe6cbb5ffe1ef99e53
+19ee60ee7316640701801a2779462baa14a6811d695965bbb30be178c7d06a08
+38e7547811d70f0b367857553da9c69fba8ecd3be0e18884474eb098a8303901
+2ca71786ecada1bc67a9e91508f0caf7722b08efc0feaef4c7af09f99cc02a1a
+f0c426e9c29f98e8ed37bf08fe78056d3a69b23670f561ed8223fa463c653740
+b55f23621f77e66cfa9360856ebce404346cc300bf81c8dbfaaeafae9b41c012
+e662e695454b9d0d60132cbad7581104ea3b42c3c725ef0ebb3057c3d35de55b
+48a409cb135d36be7fdbb5e63ddf0f107af030a271718efb19f56d176df4d40c
+9ff22dd6ef2f6484f556b239689cde8deeedd7a195aeb747a0f9d3c80cebabbf
+628ce7685e87755aa9d1eeda1f96c2da062b1512e08dc165f3f6ae3a6ab80dd5
+df5001481e106ff4f029307d1ffcf248947ec36300cafde7022f1d3c7b798705
+5499dbc71879e5413ccdcf208942db6bec4c9c9448c41420866e2af9ed88a4ce
+01778bded82732d2d15d4a626aa29db42931e5c117e777541e5eedd7be4b0985
+65c4e3b68721cb800217a9592aaef0d437030d22d01a6744697bc3ea97aa34cb
+02b8286b4c6e54deb48c4daa3d7594e5b6d946ebaf49d81e037016cdcea12047
+80fedf79640339761c266e9a8c0ac6ed90c5bbf7920e4d5a1463abff5929ff3b
+33d0b2a03579a261aba5ad1cf146828706b659fe39ef965b25e64827ce901434
+a6eed0e43ae82b4e432d91dea9586337dd9a9d787b52d16e735bcc7fb0f3e6f0
+56a364e652cd60228a1ed5f1b94af50b042a6c6cdb2c960f698bffc1f57a5c1a
+e643799e707810b19a5e5ccef6f5824a7138432e1e2efddb3f1fe437dfcfd617
+2651a91cb20adc16ddc82919fd2f77ccba9015b7d6b1292e78056e665f8b5db6
+a39c2dbd9e7ba82ffd5c6ced00143721076eee397c87876a47f411e7df47dfe8
+a6d8e9bcc98ed8fda0e453501e9bd125ac8426f3fbda711bfefaf8c572f15e11
+0013e4a614acf77727325a34e114c03db4bd075a1965d364deab80d4f4cbc843
+64009b35fc21740a6d1ecac7d0d0c21ecac800a47030522d6035410bdff889c7
+c925b3545e0eed7ae3cfdda8836a06c27cd8dcd4e289bcee34595e092802f283
+d0ae2835c1aafe7f0307c6d2e9f8d48c70bf8bc16aac0c48e853bbf1e4b87e74
+eef31071376c1df6e85bba5b939f6f064d4214bbd24757fa0d3b072f3aca6282
+d48a48467791d812ef90737eac038316b5d8a7395f26da8c1827a73546912402
+cc491cefe791c9ab0253fd5c6fde0dc4359d49c2530fe60331fb0ded6c47d1da
+f996c25667ce266dd90f68fe423fa11f2b11322f150cb6c0e584b9ee7107e8c7
+bc3e0f8dc35ac555025818547bc24ec2f5ac718cd78cfdfdf7d6ea489235c818
+4342cbafc5b05e6752beea4cf1adc0543755aac833eeea46f4b419e3e278eee0
+42bb95fa9f603972851f849f783f01c65a4a52f0b128885b55f70eca3b68ab2a
+94b68000ae6db7b42a5a468e1b6a92b93ce56b2575acdf5caed64258d76d8969
+1c7f40a183db3b56e0770d3c35d1b99cba6685b7177090379387a028a9b8dcc8
+f2c14b32ccfca87a84aa6321c36dba4dfb4ccde34a46043633ffd73e7f3d155b
+0bf21914903171bb8ac1554507f487632f9a796795f844dea6c7d2efda75a4b5
+9171c7ac50b05dc48c6e664a966786427e9d06182617df2e935ad45be6b939aa
+e623491d061e8f648c3d85ad417c687fd975079673cd8ae7fc022be87aff04f9
+60c00f1233a189246a86e953d5e04fb0b047b8ce585f7f1f1fd898e8cbca94da
+8584a0b7cf60f52eb1ce15234e2cd5028bbe5d8c23140b6c0291e4aba60c32e8
+ec4235f37f5c7973a9bee13523aa3e920ca437376eccfe1fd455711836a9d27e
+7e2bfb330a622d68b45da9f8dbff01575fa0b28027f3580ca6b4a17109980c6b
+f11741806667c75d14bafeecdb650ac421235b5a7c6ea596d0f3eefbcda4ec1f
+2d039a86e3820be651656fdf495745f75f169bfac42105cb4093c2b58e7e44d6
+e1cc6c03bfe95f78c23aff501a4000290843d802585d729be0cb769668912f21
+354959c9aca40ce9629f6a66d84b7c5104738b17a8a5dbfe8d0e2b310583686c
+a3e280afac5433b749aece7e6ca740d06a00940feab1142c06fa6aa6c7887ddd
+60bb8c0a660ed8286dfbe1961b97e5dbd1d0f08ac209ca4a8d74b2b198f04e09
+d10d73b6d785bd640371386461223243139ad577fc797988d1f7334245fd9be1
+7ec97632a2e5136441a66d3add0bd78b3000d4531baf7ff754829fc7cf4e8391
+3043f3a17420cf6e04bf235d0dba8debf58ec9f3cf061eb260364e478ca570f0
+1a166ea44921e7b50c42e6d28a53688d3743ca94e02c62ade6b17c9c9531d728
+8f4108c1f7498a9e5cde50671a7b1812e25e7b06588d663060bdaa10c68aeab7
+8fd42d1de32a1a551c4ef769868432f9db590b33742c70e0666332879378d11d
+2e374fe73f70cff1c01c11db5e9a4b91b1b7dfa8dd72b66bc89f4442e740ecd0
+cdd66a825687347fe957304340a6015592dc4731fe307eb93eb23a731041b83b
+d220d88647c1e0e83fe0730f41d52e926724c9bcc52a71cbb0dd28cdc40c4803
+444dfea38f69ad39f6ee23fd137b17eac7d749728bdf18411dfc28c1f920431d
+dde5277a969634a8f0280dda948661fecd05b14ad7748c7c672d9d887e1a212e
+a4b3ea545d6ca7bdb37aa68c783d3c3fccecb86a6938502c3857a5e2f43f3ef6
+670e87620e9fa9673b453d478e8244d50e0a4e9adea79b9562d7e4ad196d4464
+e0ac8a587c4a6197c83f00e84cbb91442aeb3f6d91c9cdadb269d87afd9d685c
+c90331908549b274589e61a9aaf0dc4b7ed5df920347dd2c891bcdf31a1925ad
+2bcedafcb24d8554f2e828bf7dcbb31a743295e132ffed2177bec05056f3e3b0
+d765571d02d00319354201f4269165c727eb3901570331b629c02826a6d5db6f
+9a9468985607a5dadb4b25a6e78cda32883390b060f97b6df53767a52751c755
+e6b944e6f7b648bcac07e8581a7bfbcbb34ecbedd8b4215d3cc0f1391d728860
+030c60b5d078755798e8245bedc1193a09079980eeae7e089dee5e92d985e85c
+17a6da232435e5cc70237f08fc82a45734d39757f1389d7726e6f3d076198430
+85aa430503e14f6ebd1917de6df7d3d04e20f094a3526f68509c01abb5204b72
+3385afc322e226b0e581f733fe4d884b8e014cac0ef59dd88d7ebb4390d693d2
+87a448a776f827caf96dfc35843ef8e543d75c2a0af9dc357bee4b14f8e848af
+9ad65147e30e7f87c596c7200683966f9156f810c08dfa7be39ff31c8a7cbf1e
+cb627f58ba34e95bddd4bdc8549e41df16f9556b71e209c6c2c928e1007afafd
+a25a557641389627479fe611a6ed00d945bedab51771f418285b5a86edd32e9c
+36262ca60b7f89ad7104b14ae47671fdee453c75de0fa89e92b64348809b6732
+d3455333574eef9e4dbf4902f908aaf95bbe9df5f7cb0f8e0596de87b149a95c
+2e792c3a96c321dafa558bd97c801071becd958e4b7bd1078be16348bf9b69e9
+31f36b281c38e07f63fa85f612abf46dcf809332f3a96c1b9840f661294dd966
+9dc10e748ce1169aefe5662b7557decf12578ee75b74a610e1822694dedd3337
+48a4392a64f303170e74de13e476051a8ef3a41e4b44b2c2005dae7e907218e3
+d13c921fb144682aeed74631a1c1741314fa636da440141c8360840e2b0234bd
+89126756116d17bd3bef14ade78969baba0c37bc5cd983d5206e1529f884b340
+e51698acec473893d591032d43f295fe6b682a88bbc14f614c9ef95548aefa56
+eec49397a2f84e2621c94a724963263c3f1b75c905c85c40628f3c4d3f2706cb
+ac067a893d969f3ce9e7f001e88bb67c95fd0755c3fa70902a5fdaf12c694af3
+b179b0eb570400e0e6fc9ab7d5686be5507d64817b5a464e5dc4dc2def98e70c
+3f9974704acf9b578aae100dfc178cdaba4bcc5ef9102d035ff7d1ee549e9085
+1228ce238fc08c318936798040683b4f4152272037e01563af41ec5c0d0a732b
+871f068cdbf5a45e3184f50115967dd7f1fc0b5f2d88264fc5c1a014d6f5dbc0
+6fbd7591d7ef1b2cad6f44e32ab9a08c1a20d26ae5b50391989e605198df7409
+e3a0113dc30daf478b6189907376fe3b37a3e3d87a80b0b6c687ad3d56bfc790
+c2f159351376587a9318e3efee1f844ac20d5a63fc4a7545b14190c6245662ef
+fee42d66ef73c095e77a0a3028abdc11a57f1db40a0544e90012b3e05c5d497c
+fcd0fc7e7cfa78fc40ebb707fff2d116a4b23904282bee7d685892c498b51386
+eb334aa3cd8bcc5d067f288dcca3eadbcd5244afa932c3abb1690c948786573c
+9dddb603050805f4508b31de0d8adf20db43cd5508a0e93e0eaa86b0486e9b27
+1bce3dae060818ce8ced9b080540d64d420899c26165c8ea5cf32052a85d6b01
+a03c296159cb74eeb5d5d1844b566a29df9ea182c50f3da09f329206d2c7db14
+b5fa0518a0a55386e95e6043da09376894a035630eaaeb74d83f69e5cbc84187
+04f4a9f52b3f167198e33a10e5b8f71c3f87512588be9777a89097fe6297d505
+c332bb10f1a60bd4400007a7b09809f416a0ab249b9a13f9d2e5ae3122e5963a
+b6cd889080a996828f4836efbdb27ab4f1f9692b32fae7e6ead114c7a838c327
+d709bc342cba0a4be1374d2e6fd9457d0eccfa218ffc4d278a61f3c514926d5f
+65cbd5a8735feee937b33b234c82b1ab913a65b800191154c18fa9ec0346c2f0
+6deec3f8e819e63c431fa2ff2f7de0ff22026c06e4a0b757bf17bfdd36ae72b9
+1e7c0c785987f50e9b8f1b0997207fa26ca032db72d6be17107bdad0ff965196
+0535491b1b572a5870d7c1057d7594123db5e86dc4abb461216dc93f0801824a
+39dabf5e61ca38ccb5b054654d5658c28a5fe9372d495033a2e2125e748fcffa
+2289c6c7c161c494d30e7e50790e71d4797013eb5a5f9d9d261ebff63f4df5a7
+707e043ca85a6119eb13d2bd8f532c92657924b162fd0ea989d47f7547872b0d
+c2a03b61a7b60a70634812a26fe869df2e27541e2e6ca2b98b10f77bd19a3119
+477d146b1d49aa68dc7f680a170c065c2eb103aeb53f8fd38e1b2665018c919f
+1ecc20ff01ef13b89375ef437274a233d7e4ac84ac5626ed74226d7f219337c1
+75516340388de16ba57935baed7f7e2dac7530bd320cacc96a31c2b578be0824
+8e9b0c4a537a1174bea61bfb70bff4e943b7e14c6d322ca022058ff0ca0fb443
+74e6cf34bc537c4554a418ba114ee30fef35d57dd41c45ee994a3faae6b40274
+b0ebe9c1ccb2b5164e6cf70efafa46e39d641e286477a0137ff0091e6e2862b9
+418d0966fafa2ac4f90d3b190c29cb1da6d324683a3defc8071dbbcbd3c3a45f
+cc90cefe9dcd0f41cbb6fee6d88ddec765558eafc613d1cef0ddecf74cc1ec00
+5ae90073c0208e397978eb3551b0981056902cfe462650733f1228c9dc9c4424
+033bc1dbc869a93f2e330a99dbddf57e16487f5724dcb62e5eb7b8c2cc251ecb
+0efd28f3cec5511d3e85b38203a7f37f9af72a36565db4adba909b67c2ee640d
+fb6251c11e972469eb210563d820fe2e352dd59b8cb2bea7f5605ec80bbc285b
+2a1ff2c4e69c3cb80b782615567d64fab018e1dc801f17455ab1f7b1961ac6ce
+26cf7092077331b2157cea077adc4961ac2c638844a493c6ed03ed734b8b38ae
+f466c07c54039d8b07
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY8
+%!PS-AdobeFont-1.1: CMSY8 1.0
+%%CreationDate: 1991 Aug 15 07:22:10
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+dup 48 /prime put
+readonly def
+/FontBBox{-30 -955 1185 779}readonly def
+/UniqueXX 5000818 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f059084178f5ab59e11b66566ca5ba42b1911a
+5d7f1bf343015eece988b7a93bce0c7aa61344d48aed9c92c8698d4b7c9951c8
+7d103f2414b39e1437f9d2e50c4ee5f218f2e6716926a79ea978f13b1f855345
+191dd7d31d8f82c2e3343c7a5894d95bdc492c28226834efcb5c12fea36ac5cc
+430e0aa604961e34888adf6c1f3954cbc2498e225d953cf5685852162346f474
+5a2a7087d5d7ad486de16d2ca8e15cee26e012671ba3bdc7d95cc8c98bb774f5
+08625e968aee27ff7d1a06e63bcfb5aa4876c3f8f13b30ccccee73c3caf4e70d
+98e6ed2f422dbb4950bf789680e064150995941a9f4dd68a575949847a7d012b
+b910bf03a69374e341e8036ff92c949f3dc6e86aaa7a2b795f6c8778f24792ad
+3b0ad9c6860c74a28bd5d91131bfe67fa38e497a42cd07709200689bb41b5c9b
+11035da5e0b62a2d3ce23c89aeefe2c24c73b0e3509fac65f9888b3892730acd
+cbd2905eea435d89352ce710dd91bbe1c02d70578dea44c27b1a77e560211c8a
+9dd7eae7a4a514a9a630cc563baff981603245ef41c66627cb4b7e32d3417dd9
+2d48ea931d10c3731f8ea8f3918436b98bdc7b41a875605470d05b52cb5b0b25
+be5ac20901f8b1ee2906ee7a3f4d1bf87dc869074fcbe5e96f88f86f87b1c62c
+092d4d4aa3b4e81f49a97f49e01880050eda7d42d407798e9e4cbe668a22c7b8
+c389a657838d0cdb143e20abbdde05d412eda26bcffc97f3cf9345582010ddb9
+1a0463c27463fee0c760dd4b13bcf87775585912
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMEX10
+%!PS-AdobeFont-1.1: CMEX10 1.00
+%%CreationDate: 1992 Jul 23 21:22:48
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMEX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMEX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /parenleftbig put
+dup 40 /braceleftBigg put
+dup 48 /parenlefttp put
+dup 49 /parenrighttp put
+dup 56 /bracelefttp put
+dup 58 /braceleftbt put
+dup 60 /braceleftmid put
+dup 62 /braceex put
+dup 64 /parenleftbt put
+dup 65 /parenrightbt put
+dup 88 /summationdisplay put
+readonly def
+/FontBBox{-24 -2960 1454 772}readonly def
+/UniqueXX 5000774 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a
+e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4
+d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828
+e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4
+7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80
+523f59a30d195fcf9b9fce4ffafc6d5649664203ab24acb938d58d246707ffe7
+d62f04bec4b70c21ef75beb2b812622b3c74e969d72d3cd11bd7106294a99caf
+0b1629bc7d4de6b96ca82930831d64575f23f4ad06a0e45e315b1d392411be8d
+6d73c998789ff258a07a3c8c2057325784514c845500bfd1a971310cfc11d41c
+1a167dbd5ff012c60add4e87325f6e5299032a839de65fb1473a166aae1876a4
+414a434f22c1d241591fb36f857df6fa930608750ffc0c54f44994662b1f00f1
+400bf752ea8d83ffc4cb77a290bc2d99981ae59a191748ba5c7ba1a9d2583fd2
+1398452b6ff5d83a059f7eadcd2ef744e9dd22bdf9c79d049bf06835e878c32b
+7765c69bdd8ef4deb4ea7cfff4cf9354a4ddffa689de961d16772491c7afbd7f
+ffde42400764c68e954ee5c455a5687959829bc3b319b2147deaab3628662c80
+30c5e02fea09609abe4eaa12e217bc3af673f1bc36a7039eb13fcacb4218fe0f
+c5a3f9452d4edf46cc91db67b624d4f2d37502fb9f11af4da18ca40b61097f95
+d44329375467ed13c5cb585ec53f62b83ef9502cc755af44bf32b87b8ae9f3f2
+f8dbf72dab90acafbacd280db6aaffaefdff6d5eff26669bac56280a950560e3
+d01714ba38659b0e4e28bf8cdc1f15ff7e3ea9d95a6afbbe3d8e6905aa6d531d
+6b6dcab89e2036cc492c65f76ddcc3cfcff33fde3d9ffd10f7a90530fd5c7683
+4329baa902e701ca42717476298c9ff511b1941244bb1dfd0e5cab92a43970cd
+1bdb292eadd055c97972844fdcdb0aa06401e7b2632b9d134f96bce0064860f3
+9859da7a9a82be0a840672a1331212752ae1b521b693b384a72dba8d37a86eaf
+a0341e7fc5f6ef7a8c566aacb91e8bf5005c18837894c4eacff41dba54e071ca
+83fd04735fc902fa2d6ac5e867bf7e9c6afb91cf07d29eeea04e40ebfc834622
+b6708e5be32302597bdf5c6e1ac8569e7399ba1fbe4631deda2d9409ee4fad26
+1ec8370e49afc455f918d9492a6f642ee8a18c648ef87fb6510b2eda370c046b
+82a3e4a1d4bb2a2226130f7e659aac7e39b2a32c43f2d58729ce2fbc7bf2a145
+86668fc997ba51ee07cd114aab976ebf984949475f447d5bab8ce7ddd385c3d6
+d1c5270e3b9707e59edd4c693e2b6ac58014b28a36c6476fc534cd52fd99d81c
+acfdcd87b3c0279956d678412ee4e96701f68e21263eed8cf2583b34303e9be0
+6cf93e3336d401d05d1efebc7357a1c20b5fa4cc11ca9c6a87c38fb382eb4ff5
+3fe9833b3bf79847e859f39a5799f3bdd9938ac88bc94fbf7ca31f483702a6ea
+50d51e310961219cd2e2dab2a7fc8bab2fd9b21cfd47a0df540791603e41654c
+df2145186c9bfd99686b9b3a23a3c33b9a96e4c53461945bd40c9fd137ecd095
+040e08f65a9bbbbf22b68269bad932a41d70a713329a45a5eb28983e29ff923f
+a17299a314867d4d757b088efc552bbf7f1c4c7e80f68c20015303be36217821
+780c67109c8a9086dd87d39dd1602e0bd3361742975144d1f6f71355600451f6
+102333ba6a3712c22f244ba1719ff779eb864e118315c8543550912cb5f6a433
+1e17afded3d79763f656b92daa792ae1c53ce87d95f9f636f983d0ad75cec1b4
+a60c7771920d04be1997cbc457fffda86b6247a99549b1c4514f1e6655c4bf69
+4a17b5c382274a34b9dcb15ddf04d4e0aba4f446d684e22cbd7c5d734a6e8bea
+7947267e22df9d386a20e289d819326662ceb496d1f34ec64b920be5a30b1d07
+7f4a2777ec18be94719c0a3d37fe926c843a964de8dd5f5e2718f6e98bc4dea6
+36fdfa3dfc3a7140e7bfbd3962e6d32496d96acc142c571a6ad432f8ab3a54d1
+b782bc80ec47ce6dbb07f1fa678a2eb1f6e61616c4d84d4f6e8b633ceb6ec9c5
+2f47ed2015ed66175f4e867bea07e64048b557d3c4209caa2fced021707344ea
+430948e587418934cbb03e6511b3589540dbcb82cfadd38008810032516dc9a1
+b42f84db728a9a1f3403588b79f867526a8349fc3311b1e608c4bff25938224e
+522f2c20004f0ac0012c3e2abc987469029f947999f6f03bc702297bf52b7bf8
+78efe2bb26e7694f79813a86ebd38e79008be7df3ca1cc904017f50d843800f2
+ebf2eb9568347d53a502ce12299d68c8aa1a8aa4976afc0fa2cc79e025c3b77a
+eb5882ee5aa48dcdfba9328d80035a2ffdf3d721215000994229e3b8cb782036
+05fa0ee4cb09ca9d355ba92debcafd941902f25f7f531bd9424597251c6839e0
+83d6274b3b68a5a2f57afc4f6aed7534affd9f7c91caaafa14dba3e6962bb701
+ff80c6b4b26fa473341578badfd316cdaa1419cf4797624835191a4f5b817b7f
+011956bfdf1535d12c11ea34c908204e677dfbb12fd0bffa4fb76fcd14b70be4
+f8bc4f5f5edf027836fa406471c9c5a9fbe8d9af85e3d7212ff2650cab02f714
+408d29dff126dc0c1b4fac09fda3efbaf052b39beb69a7c524e5d7818b6bc150
+648e97f287cf3d5e124e691682732901d88ffa314657908f66d21071a24eac5d
+b9e811e91b472140e1478ddf79c92c9ce386e527c8351a25c82f97fe66934430
+8477cb44e7b303cc58723fc53549da9729313027e2e80218101aeff4db4d1f8c
+8c1d14a219e3ecdd022df419f760edacfd0ac7db4516188ea8e13d4c37de78f3
+9cab6d94e2cd508515f14e91dc369a1bcb5e226e61027b12ea720990c5789863
+3de357784ddef845f6c4a229847f74369ef9b7b8282cd05b6d3b60c6690b6ef9
+1cbd3dc282f3462abdecd52746a70b967414a1a4b724057cc415e29e1b6e5648
+17bfaa4da5b37f80b2b231263799dd2a714f397f544e53266ec011dda413dbe8
+d8574355b3af47d7eb1bdbe35cfa21040a38b7dc25a4d74a5f3ceddf92a53ad7
+db48002f8ea500c11aba3bcc6400389fbc392492b6a22b17847822e74ff3bd4c
+b0a10ab180a5d07f933bec45ec5cd2ed5b8ca9cf7ea0aaffd219e1440f8f829b
+7c46dd7f357576f0a4a7fa5b2a816243e3a7cb8be9b4f2806e425bb5602e7979
+ee5a3c8d4fcd29d37a8817bc84578d521e9999dae5ba3cc2380953f722b5009e
+3b3857b5b8141a7a23eebc4bc9e9f172bb39ffa6299a28dbf3fbfec78882a469
+055a6827c0dc288504663a16a662a95e851c1498cab641bfdb570fddfa482b91
+cdf62ad6feada1cfe8c7f393f8159da922270e73e196b9126cddefdab522e1fb
+05cd9356086a627714dca3e450f356cec408d25ecd3a6ad0fbad08dfa798228c
+66f260f5f9ac66f3d72d7792f168af6f89c0c935769b5c500085f453
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR8
+%!PS-AdobeFont-1.1: CMR8 1.0
+%%CreationDate: 1991 Aug 20 16:39:40
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 61 /equal put
+readonly def
+/FontBBox{-36 -250 1070 750}readonly def
+/UniqueXX 5000791 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204b094541f345ec367ae85ca9bd
+24568a01d3b9f8095f7420e6c423c414b3dcce6da48dd1c89a56d078e0d0e2f2
+62a13640a06d17e44ee3866c3471fb58fedf5a3b77294517651c16bdd7267d39
+a54e7171752dbde63ac19bb4b3021ce95eb5fe67390b09ae4d9ed4d704a67443
+f55dce17acd996c1f5e023c9e5a18cbeecc3097f23763acb86cdd7cd13381ae7
+4e48495ec7fa520539d87f8a8dcb3c826275469b6800876a457e7d1e5be867c7
+b1ccad69742a8c9b0ad943482bf2a4ad0aed40baeb69a0233bad36b4ca2d2da7
+322956c70375d152653500b2f22d2ab6990cadde2da14b4917f7515e64bc3d96
+bf775258fc7dae4e42a4c9b6da8eddec4a800c8aadc8d75e48cae52137e05c03
+677f5d6a82fa46d9f2fc7f56d62e5c605a1b7898b8d1401c2cac1a0122a2c8a7
+aae09607f2c5f29293a09b9959399283be89051452898238b777db9830ff4318
+a298b221c4a820c700ca964fc99e6b1d9eb0bafc39be9aa9dffa2fa326b2a466
+1e67261bb3dbc85844e76f9313ab533ee16bcb478166de5502b68e6ec1ea6110
+f53206cf1cfea419571b0243244b32ea38b828a01e62b03bcf476a32c2341cec
+b8a0fa2a3f3f339315d5f3aa7704408f6617d026ffee4925aa48537a4b2e556d
+225be09392546ad561cd46cf766f0ba14c6854c5af1a528c3842b0c5aeefefcf
+19f19cbce5d967153c4f88e51c776cfbe10d39328466f7a3b83d85601ef4d1ce
+0cc136610fa6a74d9676e4e99291d565cad27b9eb2337b0eba4148efd0eb2866
+ebf0a4209ba135ad1376cf9cc2d4110f36121055caa3f2e50e42374ab0a611be
+7cf8003531f4120ca0b86290a7bdbc9dd85a9795fdd8f48bb7c8336a799590aa
+9206b20306075cb0752649da100bd9036b4d7a38e699b75880e8e7e67b54b207
+ff5bd829b0abf1c0af373b289d377efcf83b1bda36124bd7d965226e5206d075
+9449405d992ff17feddc4484269acc1a1160130318d0bbdc333680076b7645fa
+e1da7085569b68a6ed3455048faf7ffa8e6b274d08751527c41674ebae30ca88
+13e7bf36b4d922ef5ddc5eb0417c7ab2dcc28bdb84fcf6c708f8ee20bf068459
+3bf10f5cb563b4e3fbdb12fb5d706d65b6826ad6b3d50f4ccae0d79f75b6afc8
+12e4ec68ad01044ebe471ee369105d650a06822903ca22f826e1c5ab4bd0f15b
+0367df8aae9e1a38c08d7689a3716a1433a6b4609dc125a664f90ab12018f408
+1c6483d6cb287052f5eda73926a952f69718157f4409e2e89ca7367cd81fa04b
+899ab733a9e03c1f67a8765b139d8855659f2b4c7e5536ad38a24a19b28e7847
+d494ecec166fdcf0866a8b20d6fe0bff287ea65896745751c6cda0e9dda6a252
+a415ba740ba68b560e68bbbbd9f7a34301cebe81fa01a0cc6a4166b246f3e3a3
+7d5fc411462e4d295a3eb2b2af62743bcbf3aaeffcddf55ef58833aa244de63d
+aac78731b55a147168f0d1930fd0f0dfeb35ed28e3ae727a69ed5b86007afe66
+e305fb33c23551b056eb650d07acebb3f9fbcc7c1b9a5c6e971e435369284a65
+7057a9176bf871b8b30a37f74da3bdfe1f8ab99bd721eb15d326b04d7d9408a4
+da9835ace2ea9a1ec141a75c188722b2bcdd4a9af6b7cf10f1743bf49fc8885e
+a70615e2e4686eb97e8a4f2f6dda7c07f2a7a5e77f65d98afc6cce29f9d167d8
+bb3f0af0c03f68d99d3dd9dd7cd170dcfcad4e762c3588073e654834f5b9ae52
+0de947436db093035afbe4a7756a51ab5e072959a5525d6b3107498f33155bd1
+1ba78b5e30344414fdc37969ee8016fcc9c5a2511a5e6a5edefbe89f936fe692
+fa9cb05c32f3f0ec1e71d9132d5c7e0eded6d223ec2d7fb4ffb9ff1650dcc1e3
+572a303d1aabd19f050b26d85605fac9c6e8b59b3b51c47646ed4187871c5cbe
+dd2dbb860952cd4bbce4a5f6b1492bed25a8b0867b904e36d6668074a107eb7e
+180ca3920ae32a84feed393d900cd68b7044d0a58361eb7ae9bc62d5f78893ff
+584df2273f0358ce9cf084998e6588936ead2a180204e1f9a78aeb7a8574fb9c
+14a0e9105b20e3e54a272547486a747039a9ece8e00bd66106bda49ef49532e7
+adf4590bd90c5ec658c02b531a1639d0a13d104f4fdabb3ddf17b1a8e72574ee
+f1de65e567fbc52fe9031055b062ee43a402635873d26bcc49a9efa642c56be2
+d8cd8fde3b07e6b005013a7c93c551c2fe3e83d37ec871beb209660d1f378a2e
+5c978ac5161c4161b545b84ca1d7ece8e7373e0543c413fdcbf7e880965e03e8
+9481b95288a74b6da5b4be64b5a2a37a235f1f369492b43c019cdb5fc188090c
+4d03e8b18680164b41fc595a85eead0cc582b4c193841a4bfd5dae15c4d2b20a
+ec7d2d1b2d816983d5ab0eaaf63eae05e88e03e5e99f5c7f6a7bb0d7407b9282
+3edc90e0aad1563bc643026605b938a9b0ec38b3338e810d051f88fef7b7151e
+312a07bd7ca0bea054dad0e188639750d941f3fa45bfba6afbd9f9a7ab8386a9
+929f93f11c597d508fc02634d9b60e85004d8bc036798e608e5659900191b3a7
+9a3622eb0965986c715787173ac207844b4b3793fc1fc54a54364465b9e80c3b
+5b3d2efae2d29ba44b3212483eac71058b7d66cbe7cf6629dda1c836acee87b7
+69fd6f7e92bfe47e5a710b7878837151e6bf222580abf1d100499826560333ff
+3744b80f8bc268837822bf633d2edc036a3bd8b59a2774d68c3330eb6061499e
+67c6becf7c478c86951a296bcd70ca4c50615644952c0571e62d9acf819b7ee7
+f77420a56f92980ddcac91495d13e021e222632a56300fd0c8ba81c93998b0a5
+4e3d2948d1e63798a5e402cf935281c14926bd5befc8fe20b5b47772a2a83df2
+8ad6a30d35b155d8670ec70b1902128b2601d5b6ebe4021d9f0dd82a480f9579
+c4d54381d4ff2fbd3e919ce7264b159b2defc9701775d3d5faa40554b443785e
+467c21869905847c9a811f82cd651b8bb82aac20ee2d025ced77c56774de4d14
+1d7386b6018e2cb669c8e437e3c1269ecd863143792dfd73b69c19f8787e0f93
+4926b4be6f267fbd4e7571111d6493a223de0a3d7a6291c261c3fcc5f9c79390
+1033340952c8d21dae4df4e34e90f98446d1484c167b9395ce29fe28ea5df14f
+f4c31a4a7b1a723fce88d27d6601adacf4941502715231624fc5866b58bbe829
+ae1b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 46 /period put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 58 /colon put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 73 /I put
+dup 75 /K put
+dup 76 /L put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 120 /x put
+dup 121 /y put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+/UniqueXX 5000769 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be79011d1f5bfae5c1f476ee6f05eb1d2caeb
+269958b194521197b312fcced4867f3c8fbd030bd715d8ffda1dcd454b174e7a
+1a97b59fe770e67702519d9d9b23d61ac08424d555242a8ca08c49aef300945d
+99b999a79ce74804ae6bfde623f4463371442f6523a5f6ce19c839a708c02513
+2e22c696c8ccade45680e5197189d0f98e7f0d5f955e353970b392cf530a68cc
+56b0035ddfbf206c3074beeb0739dcbca272a6e629fb7aea2c5ba7bae50c7b4c
+a595df78200c352997ec3ee564df229fbb5473f5e8ccb1cc0153e9a7e299a8ea
+a29b69d1b622b1f0cffc58291248759607d91150cb0651120970dc9f743bebef
+44f6ae92facec57658999c8bf01f60611560043962c0695e1bb87d090e0fdaab
+659d6557208a660be9aeef8ae55f71b8bc76394d792967e41bd8023b6e7f8c3d
+9987d5e54c53bf2bbb32855b946473b44833bd78873df8e4c7e668ffff25aabb
+8da4148f744b9d0524d6cb8281247b3052cc5d66f3f1bcf8a56a3fb446ea587b
+d8be30257652cee035628aeddfd8283b5ad21b8b1480ad24d898970ac8a1e33e
+543ce4e3c48f9ee621c5ce3e8ae930f890011b630866c988606068d9e92396eb
+f51bb3db204505fc3d09d4701ac703a14d92bbfe27bd7411b363a88e33a8e9a8
+025ac31f21e73dc52b333b918d0b1270c54873a490222d041a66e0192612be6d
+2c88958a8f70c10390146ee5091df020ab97675e8e6acf98b28b539cd0a20d24
+a42f535ae44b8f5e9290b38fc6b02e1bbbdf1aca96558c2dd5afbec53f03ab51
+fbce958ed4a65b17fbc03f9defd4aea4a15229f3c320876235f2d8b69bda5f48
+03a2798790d35b394c63295997dd487bc603cdd10d18f3e3fcc7f17d2a6afc77
+f1d7f6cf69d2a86b104b9d3b260e4a78716927a485ad8a650d610e68378f4514
+3610b087981f0a0655090163dd2dd4d0030faf6a953896a9cb2cd033ec9eb0e3
+14c1b54df375ae6bd34d2d2e874d88a06adff2b1f7d964e9f25e4333e3f8461f
+2be5d19d3d0119a1a81f4ebf844bbd5858a4ee06cf411d810aaa58ae9cc50e6d
+bbbd7f26da1cf62161b47f7f5d36036e2a639a4a2efb85c225524290410726a7
+495e1e7b380ea42efc418fd74fad628718950210c5c048a243f80c4b39ec50fd
+dcd74b64c8ee902c10d5eb61970371666d960fd28cf3aec2ebdb81b10fb8ab4b
+18813aa2fddd900623d2cfd8603d151e132682bc9988fd7399f891df6c811516
+3a511bec31c489443e2acdc815889c3d16409d64fac7f8d89d9ac9dce162459e
+dfcb0518ead0f6bf1ab5792d1de4d5bd32d5fe14777dd4e5122fff2d64dbe21c
+9d63fca383e1c3a80065da840412be981808fcfb93630a8049337834280afce3
+ea33cc0af6da72cf1587399703384a26d692927a20da2f6a5997be8bcd786989
+a8eeceb4f936eafb1bcd609e570c0a427a242c3a160f43381ec14544e6bd0da7
+39e67e3623bd75c0e496f097614447e14e6458dde68d4c82dd5102c141576643
+c0c2f312fb7a07364cb4078e12de3053eed3c50ab2d381184cb4575ea9a14f53
+7f9c16884402e5fcd174bfa423ea3df478e7ecc2be8a28be9fb26bd8f4775f53
+d1c1c1ee1aebe310cd8e309bbe062715a9e35b7697c5a0468f4ee3b68fd779a7
+ad56c0b091b6b0d3dad392328b144386cc3bd81e1222e893bcbd7b873c49cf47
+cd00a1aa0db551534dc2be808293feeaca87410ed5a5d076de016b619fff0594
+64ebdf5adf77a4a0aaa18d86059bc9913d552101938210b1ab2b5c45b62a4fb1
+6e957b1bd20d52f99a2f22b6c30a9e622a4380be26e38b2bed5178363a60b3f1
+8d74991104f5c280c4e2e8b066c5c7c3fd5b8ff08c551c9f1abd243a1d64670e
+0ace8884bd99835b60ae3d4394ae1943484423a3c65587f41ecdb9fccf86fd6f
+e39ae8d6eb6eec1f2e63a1c7ac90766a74fdb8a4734711cff8e15efe5f41e66b
+8ec417af041f3746c9514f9ab29d5f95cba59446846375f7507f1dfd5a465d19
+b69df89c12b56a683d49c51e068662ca75299b019808c5cbe16986b54c2287b8
+963ce70835f55aa9f493fb94795a0ef92ffe18f2ac3b6733c0e34b48561b6fde
+b2d1d46b5529d5ad256e7dd6368441cfa3a61133f602bff38b9c60cd1c3acefa
+f7a524d0cb97e8cfb358aa798b1df0a741929016a9304169adfe847f1ff4f380
+b430ea3263a6979eaa856c1816552a7a74816b906fdc25de997b4f988b9a406d
+a62f776075284bf46709a1d23426e09ef56ffc2536e2fb847c7c5def00cfc271
+a8ef700efaf470554fd460b5622183ddd4dfbe637935dce3db273a65f96a187a
+9526f6712da4cbfe5863270704cdc99ebd72b284e3a920a7174bbb714570b326
+37d3d6d0eecd0be2321ec03f2c311dd5923ca5fafa18867e5585490014f385e3
+96de2626b4b4a93549116857e0299727dcd2b64e4fd4352924b079564f4bd4da
+3f918250fca48029bd130e89373e099d9d1cd562bc3db5d91008849a37fa6194
+fbcdd9d1c40ac568d9403d17344a3bbaf0953ee4dbf2a15d1e340d806549d6bd
+c7f8499dd16acce9e165179aadc3a4c41cd6fa444c9c610cf378420b982cb6fc
+51ac2830915340b4a34e60768985dda049cde800ccd2f5c6e808e81b33766689
+d40e4dc72ed8aaa89a3f5f3f9435322c0270a9b1b34ee5e2e2ee26781cb56358
+e0d800d57c57c86c05797189ab2d0b486caed0de77dd9c313092c0eb232d5685
+370d3f6bd5ace1b4d559c779f7ab13378983e6b5abca7c23f114565760149112
+297dacaf38947a3be3648067e2283ef717bd033f751b7e799a58eaabb8070e2a
+3ffd6b8c396b010cedd861b8a3b4977af12c8080f7a9b8c78e9ec5dec44302da
+5f7650fdb348ef0ac573b09c6317699baac48738f4d22af6a1ca37a3f86f4daa
+33cd6730a51958384e74f7422ff4ff6031a52d672c0ae1e7d8435139ff017ad8
+224d32290053d5ab18050b417d2469c23a8155851043cb9ea9594034c177a944
+e8419771b13951f0a8d8cf330c0edf034255ec5ba81a5dfbc453a37881f83d3b
+4f67a7a07f73034460bccec701444df1dd6ce76ea61bf1a3fcae4153f9f8172b
+14ba7a6ad424cc28d68af789eaf0eae53a35ecd5d1c9c360b1a4a357e3cd9a2e
+37525c1e39f6e9d2a11d43878b03db2d040ec2d5c0899d8e44c69296b7b91586
+0357358af77911e2ce18e1fa0c0d36cbb817af3a7f3c31581a47bbeebe1b5bcb
+ab0bdc37775548647436c85399ba54247b15e72921cebfbbd71966cf2361fbef
+0e362f1e41f3038d299f07dcffcc971532a3b4fe5139d9b52c37db0208c0ef74
+6bbf9f4b963e8333514eed5ea7a3986cee91523865b0d70eadcdac97a429c342
+ff912f63eadbaf380c77e8b2b7284b5cb0a258caeb8aebaf29982e7f4acc9824
+959dafd360975b9461a307e707049c0503460b0c6a7616517ed5d4d15d18aa38
+50d8bf3845af29e9ede06039bf49b7019c5512751e47333ac60f35ae33daebf8
+cc1a7ed18e2f38aab4c1f37e735375c7957907d84de53101e70f618780635ef9
+dcdb35f84e8c45d7b3241a326573f26b2a40b4669b88a4a2f4ea90ec9a74b6ae
+6eb8b2a76ded1db3a3fa69cee4cfc09cfc91261f55945cfcf69cc75dbdb7ed74
+43071a398bee6542241e95bf0c4a573cedd44e12344990c6e07e963dfcc0125d
+5d9253aafb372801489aea0cd2cef8c3c0fe9a32c7e062a374ac416c7551aa5e
+1ffa867c9aa6177923281ef15e2c6ef26d89d0f9058753fd98e4be674d36cd93
+da625bf7dd8bc5bf78ec985139b33dc044bb21a1ba93e7b70b5291238d564559
+3c9f3d5db38879f75e3fffdad87e9e29d5bc8933af37a86b12d31e1b9d351087
+f5dfc22ba14deffe1b76ab1576dc527e19792c53280b02cea5f5a3306afee635
+9841b05f7040c64e2b4a1856afc3548f282294857649a2234f7abbf8fa0f8f2f
+e46e7dc4852ef4fe6326f5c675d136387e9757f122431cfcde7ed5b4ee8051f1
+0bdab2723944506613ae6aad2b36976301dc4f74c7005f48d86b5ce6498d15b7
+be48728069351853997f92169b8b3e7852fb1b50ab6cbf9617f462f607cc7a69
+118c3dce49833ba8b34ba85eef371d8c66e3d281a9570624e870fd6b3c43fd8c
+ce56dca726ca375c441b1f53580d1d9ac794d9cf783e76a0481691a8f2f5240d
+f9532b093ae1cefb4fe9860401e66b48d4c71e5d24f0142bfeca4ba5f12d49ac
+c7863310bd979232b1dea7870e60cd7ca3354911497eae3457aae7ec70f3c8fa
+c9d37933ad12b0d1103c43c627a788ac27e046134ed5dd44fa12ffb786795b3a
+6cce99a75617d575c65d627525eebe1cc9d4af4ead27715ac75b3c720771936d
+08bf84c828f607d94f9b4a0311e9db24698ded35c7722005d424b778aca6e2d5
+57f8cc1b15851cf4fea2fc6374e7c19ef4a0a9b2576742e704c4044da24b48f5
+fa447db48d6f702f19ebbec0ce25e50b1811d3a68e378856d286b8b818fab764
+b195b35584a47d698ff0da3549505f065e15d72be28249a37db1d450465ac123
+12bbb41830da9817dd6758450c4286f3f230d73aca1790f384c2dae0e3d9b27f
+6e6c8f103c103d526feb17141bdb51b035a599d470e08f861cf95fbd3a4a5044
+7d0a40689c1c8200e169d6f13b2b263cf0ed6bf4f5b9fabe6c3ffe3dfdb07f3b
+035cbd14d38e35146025786cb4c21e447e4ed4fd3c15a7aaa0fac3dc9e480207
+6fc3e8001aacc2bc82389ea3639984ae7c63cc63ad42bc0624ebec30b38c8ec1
+2039680719b082b6a9d97c4caad519c9edad7bf17d4cd0e7621a1cd882bbb255
+d21a736780a18297dcba9c99a0bd0f87960f87b02180ab127d48eafbbbb70c9a
+d1b70b43b8fd3799cef4fac7eb4ae4143a34dacb2619c8c5769f2ab775be8ea0
+751184f41448f3c716abb12b25bcd9a421ace92ab1b436aff379516944b95403
+50174d754908be92d7f4308068b80ee8f4e38992e71cbb1205eb02fcf7491323
+d3436d1983ed78cd45ce5addde439a49a2cca5acf64c68792986a742d0cbc398
+fb247e9c7f6825defe86adbb241a70d0b9f0da4f8893e1f1741c1da006ecc508
+63d0e6560a110b8b89dcf047010db728c63d41a5cc2e2bfefc9bf4cfdbc5ee20
+2aedd127ea5005a7b542c46f997c7d1633d71a0a5a523707a56033f543cdf2db
+536a32eb3841c91c9c9f379fd20c74bde5d5db5f66a82242dcc9a8d918ffead5
+67dc294a0e5fdae763c5ec4c04b5223346372c264f3f582515324469cd9ae4b3
+60a4f3de67013a6888d35c9f7c2f4d405b8c69d220ea6c3e1b591f9d5ed4d5bc
+30d04afa8cbc02bc929bd06b506af7fd8ac0da0b68b5d2852641bd63ee7cef3c
+82c49d515586a7c67252e69e4350f3f77a54a5d5781d8d9f1ae9578c88e15513
+3a3c68552e97d8c34838011f0386d1d8834b09e82f759cb545ca923bdbbd236d
+4ca3057bee787409066527b27add6251a8165a50d69c16add77a1b083aa739ef
+589a12c12ca277d303123c350018cd41c16d28881a36999f0ef6e8ac7065b534
+7c67674cfa29bb6e70485903f81a4f5df5bd5b754a67228f7478815ce5cecd8c
+67a8794d4db21375ce0cd670c2b92dc3af701c1eca88ea751bc7520b4b32a8d1
+425e17bd119c236f558f300b98724afa91af6136e56b7b3d8ac788e6b0b93592
+0aa1f74843da795564134a8a213ff41a2c812ee09f78a937bc3c99902be93477
+985754e75b728141d157d81039f37e0ebb73640fed3dcd3b3b7703f45349f88c
+4b624ea161465a5856966f650b09736d4aca2be1fd920fa5dccadf8fca2c3856
+f56ee35ec0761b739a1401a151201839de486b2f8efdf3a79ea993279f2874f6
+cefcb94fc82e158e8791e9464af77e6ae28c16e0454c916fe47a57bdcbdb5dfc
+d19b5bfdbab0dfcb5e36f8fc61451c58a242cd7f7d5a2390ab901bebf5cf9ba1
+c72c8048dd92c310db42182d921b5e26cf8f4f5936c4ab6f3f7cca093de4a6cc
+ba55ae11a15e3d49a30f59ef56262113392ef386172f735aaf837fe8707de432
+0254507d4861f3e57c73fe86c470041f146ccb758de92ca39d32ca32952bb39c
+bac15dcbcc3a61cb41909486675b5e2df3f0e34d0d48302115ac2c02d60bdb63
+8315e8365f898e6ff783116340ea7ebd26eff3a60da00c1af06f8220f34528e2
+89f909da6bd1e8b341453d3d5c4661aed28dfe3e2a56aa1dc5e591032ad1840a
+980a4241143f07e37e6d9b9e7f078ac7225b349b2ee858e8ad62273f8a8590aa
+395c3fe35c01ff98de7198a5563b37ffad78a261eee4d613f125812b74403753
+9d519fc975e23d3fc85306b4dd3e03b8142f4eea9d03214c8d42a01818028f1e
+570b72d33fa32578bce78fc66d324a1c214f4dfb47460c4134046bd81f4ee5bd
+74ba82aa8e23766bfc61e53751fb7645600c7a703edd41dbf8f3b8de6476f2cd
+6b551f5dffbe7c25d9f2df8082e3364b6d10484c6707c131631a1ad04bb4aaf2
+496e83124cc123c4514a134ee0153326943a308f2cc244b9f81d901cd799aa33
+cce607560ec0fc9d2f6556519c60926ecd01c31bca57d74e871806225db07190
+dfffae56020a329ba10b78a0c412bb49bad70e22fc2d83ddede7a118718bfaff
+74a45e8f6c1f3a1e1eb6258089fca0b4b8a11c9219d9c68afd007af65a63cf44
+3190e57cf3017d725605da6a9fceef8b970c8251850129fa7d809e16d885bfc0
+0895b03437290b36775af9c451b7215d55b107a336fe6cdb186771ef4b93b1c7
+d934ac1f3de75acaf50593d3f7d3c62a2c86e89a5ebeefd68b1ce6f658a765aa
+de379ebaab0b848ce54c056d03f6d8cc0af728430a1a3a9a8c553e0c0cbed701
+793f3000197e7d545ba6552c25151f20fb7b1d21cff4e9ce0f00f452eeae4842
+bb25028b495601638d00323b6e2095ce860851d3ed0157043c3fc16c2d4cb113
+03e86e96281d4f2840880254bb3ce07578f7557a2bd58753ce84c55041186444
+64cca54115059d2e1f863a9f8b8d44d522ab7eb00acf8b3a82077470e02117cd
+3a9461afd350033d6f2facd94191810f564cd13b7339551a011ba9af86ff4025
+0db9b1c44456623a51911b8efbeed3b03a02f9db3bf43547dcc896c1f056174a
+1f65549e6b47aa100eec15f63eef0544529b6ea01606a64d2fcfa3d49da6850a
+414c9af76e34ec2764936493bfaf0d4189dd3fe52254b70218607aa67a7a087d
+28e3fb06f11a48893b300f52893e0134d446ad97aaf2201beefa2f902e6056b2
+d816a4796c06a6cc6e49a98be94338cf0a83438eaaaffb225a1087ffe564f05b
+aadaf2d65164054550a8d930ee3dd0216bb61b649abe0cf2eac3b62bf9bd9e88
+763e495d2e9299bba7c9659f73b08664cd7ce6146b66fac406838ce0990811c4
+3fc912a160a7b45be0417e91367f04660d5bea5886646854337a86b21ca19955
+908e8e4fe42c836892fa868b4fb6d7408e83318c4da8b95b64c9999925772c2c
+5b4f8a0dbd94493d02c87b37201acdc9525ac24b1ace09cadba97afc6589cfaf
+9bba88858a2779131bd48f9a622b354196c85e4c41642ff3bc03f9f83c37364b
+496925f96e92d615c83089518478d97d318f35617bd0c8a2561f2fbfd442201a
+5b2c3c3e3dcd4c7f1096a0ad371625499ff0100f5e721d3584013eae2a84f8c6
+4660c570372c6d1631ea81c30634962e49cc20885f9353c1400698b99cf2f1a0
+22bb16a469301a582d28451075e1d932d8bca35b8020aeefebba9a45c48b2b6f
+24e3466de82f89343bd03fca2ef74f3386f6e3802b8ffc74e02c6a3699fb06a2
+1ea37eb4005d6b5be1d5c99561dde4eeeb4973a916911fd176afc3d63d84eb69
+7db7b54203ef6465ce526fb7fa55b8b2766b679d5ce326ef4d13cbeea833c880
+d860f3da7015a504c4f5208927c36e589b425b6c4663ba07f815804c4eab74d7
+e0e732b4d248f777a8e5134a4c8920751cb27b6394b3f0bc698f3e5f51c80a61
+5897f8834a7976ef0788644281bbe298ca658425f5d6839f37eda34768910a39
+50f260d542dc40a3d68cb9548206c7276fc8e857c3118663ccb2d3ae817393bd
+42fe469d049fca242bc86b4b21addd67b713914f813dcf73fd734ae790526d9a
+2bc39f4844d7b2e92f555a80b14c1c2b9dec07f826e4dfed123700c57b718616
+0c81b1717d641c166680f813357bd737203d66b3ed44ee46318c3ac47c6f4223
+08235e5fe20637affb428fe94c43a1542e36a7dce8ebeacf14287c69b1ebc84e
+d1c1848952ce77cb54b5e3af16b0835b77b55e94344512e9406fe5f4ed66d334
+cd4aff3b661f33fac852a173dee2969bfad3b7d0dfd7f77e89523bd9c0fc0a2f
+1a31bf05daad1d67d0fdbceec0d4f4dbe30f6250a8a17105ff18738223c7e229
+4e05dede37e2fbb7ea8a8fbc486b86b81e27f540b154610ae00bd8bbe49c3663
+83b9a5da79b41e9cac7af7d873ae180b9bdaf1f4f64edfa006de8c21e69481fd
+0ce010f918d6af5b730870f54a5d6ac2f448152bf7cd42e90efb914c923ef1da
+395e0b2a4001451437812ca83472445048590235572846a48239101ee2b623d3
+76acaeba95ee40a72da4b2a644bc2a7f0c0c42bb00f6bbc284adebdcfb32a25d
+77fc85c3bbe4b58c2cecf69c1e34ed7874f41a64ee52efce799db917f451134e
+991020bb9a469130ce4879b321de56f96b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI8
+%!PS-AdobeFont-1.1: CMMI8 1.100
+%%CreationDate: 1996 Jul 23 07:53:54
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 115 /s put
+dup 120 /x put
+dup 121 /y put
+readonly def
+/FontBBox{-24 -250 1110 750}readonly def
+/UniqueXX 5087383 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930e72218b3075925ce1192f11fc8530fcd5e3
+038e3a6a6db2dcfbae3b4653e7e02730314e02b54a1e296d2bef8a79411d9225
+dad7b4e6d6f9cf0688b69ba21193bf1495807e7a196cf14c95a4e02f9cd2da8c
+db2546c6df52e524745992e18d9ff87aa25e4e1800bbe4ebb357c6ef55ed6d03
+6d3a00c1ee8073266c21d2f0ac85d656abf61d7e5a4fa87da8ec3b5329e434d0
+d2adab706b42a2e5331be5295399d803ccac03f631f01f39a022fcdf63486b68
+7d15ef284a77def7fde4898543e7b5f7ec267756103e477f547cfb8d2311c4b0
+09deff56085f5d419697af1846c8b88c1bbbae149f0f19ca3c8dafe19cec48fe
+6b38357246d8b5cef80b53bab4cbbbe8bc8318cc462a4158258f456e697f6058
+86010493f252073ee4e4c9531f23485415ad6bc901bbaea659ef701f825f4b6d
+5c9bed0dce7b63810f906b33ea4955531ca1ed1fc120cc56dc1e277a33222cc6
+c3a97552607b865783faf0895cbeccd0df54f57bd162a88494768435eda71a39
+69718c0c5912d3167bb0971546d733e735aa9bcd89f5aa154656031ab3f6fe41
+94ec225ad03ab8b67a9da43ab365c4df17c23e79f685c3b6fd5b654e4a6f2603
+6cec3a8641b0b57f93eb95f9e238832aeac2061f3153e0f375513c974f1c38f7
+b59edcc94716f2862cf71c9a2be8430985da1cd813b1e1c1b9310564a2eb1aff
+52c190f50fc981dccb64bb2c1f7a62c216f211c162c2ed1c554ef49fbaf12b31
+aa3b2a80fee259dc0a2a4242869ddec7c29e2941792b28bba7f2c6f77ef69638
+12b07d6843f33b51e01c8626b26edc34e1e0fffadede5fb468e8cd5de7e5a64c
+366967578f415484d122834de4a647541d66989f7d8b25d1712d8d16729bd9a6
+4727db53973f043b92ead0e719a448eda8b3621003e8ecc89844dcbb6a5b952a
+1f1399b426a029a58627c0bc99eb8ebb32f9d92e4fbe39d358f10db792f7db94
+73c0ea22e8e9262f54b018dac241ae327c8ba6a149e7888f99ad06a869bd8301
+96b8d9a79b7e715a2ef9d385137fda22f38b5e41b1fb8d37c37b25f5b9783b6a
+9b828ccd75b0672c2c9664da41579a82515eab8fc78d99735b0e6de83e81114e
+b5714b760fe73e11ddc2946becf3392b1afda19767fb8b849e85fab621057dba
+48aa146360f07ffaa560bd34256affa789d6e4510a0d0241691582cc040d1f90
+cc4df36343fe0f544b1332fc3de40cf6eddcb5136250e1009c532587699bc5b4
+218ac8265ad2cf9f25a411d4277ea9a181b6c0e4d92eb77b6284eb5d87ac0303
+b8f5f903e5b8dc3abd8fa9773e5c84ad544e31bfb235bc2d7481edcefef906f8
+025688702b9e8a7a7d5b102114ca645c03862ca654248024b224620edbd30f59
+ea34dcd4cfd043431f12e792f68231dee4aa7aebc2a5682f1f049b6d7ad6e4b2
+7ec3224dbdefe73dab0c98084e0a9fefe2787162b92db648a2166b93bc148f78
+64fe3d13ce975a0d7665213b7d3f43c3d35759ff3c4ed77af9df06de494e94c3
+d8d0915ecc70413c25d6e2dc92415f887cc6d698689526cb2ff67411d0e17232
+cb67795153fcf62eb7644299f088d6e5497441c9244a5b3283cb3375c5fe3663
+0b27fe9dd6d52fe9c935ccca8a23fb05cd4de7c6ea45d36f6b8f02ae8fee994c
+9ee9e5824c38e00bf6f4f0f925190a2b561edcebb01f24d1da42b736c7f9afc9
+755ce95b8379df386717114d8db2ebf61e67387bdfac756bcd3a0ca5b1b19b98
+5dca52b3b545bb4d727a8a75de6958dad2bbfc8b60590c80510841d824e3ad7f
+2a925d202d8ab4c10bfd798bc553c919c7938b928506e528158800b2110dc9b9
+e5f688d5797546068d445799c94affa5a3f9db9466a560e47d9f83e5d86f9339
+1e3ff18e3415b0e31a42c6edea8b711079f89b2303e0c9f510e79c1039756e74
+eaf1339c2b20fcb005ee53a47793984d4d8c409d771f4301e6fe9b870697875d
+5833cc0d9f12e584aabd1d979b9e0e0bf2953269f785519ce6a0fb53eb5a16bc
+b5bebe40d48213f954fe9f649af7238e2aeb3208042c73069cf66080b0b06456
+aa18e98efc75b662852998cfeed9fb6e1a2cde58b5fbe927f2ddb405cbbd676d
+f22f3ad2ef9cd3af796624717879e434230df236d9b513bc4badfb4ac572f773
+6b52e65537a278ff84c79fd750307461b499862179f1bf1198d30076b9d2d2fc
+cc98cf92eaea2ec99e02aa98aca5c9498fc907b6bf388981c99325ad1f0b6064
+73cba7397cfcc5a69500d853194de6631390d5e9088927c6472ebbe94cd68e91
+27d7c600375ece31abbb2ab18e9aee8f4b6ea210524ab54d4edd1274138857a3
+22685e3665d6282b368171ec84810a0a3de976917375b8d7195c45ed9768be51
+93ed36c297b33f185dfc22f9cfed0a60fa6db249dcb07e592f626f1f65cf40d3
+b784018e9c3e396f96a01ea089e4cd9f34a497965b6794b577083e4deaff21d8
+2283d82d699045c84bf892fd33f53e3145a79cfee2d3a8e4f79dee01deb10cfb
+0911679067cef2b152a9a28ccfb80e279ba128d58c01947549a8f5266ce7f87c
+f39276948d54b8ac3a5232831fc3bbf5ac6cc5446a91d5639af511713e4005db
+d9044340d416c14d6d4b9bc07fb2464c72cbe22c5730c2214334653daa94485f
+9d9beba49039ae8388b18ce108562c8507fc5f9d5271371eebb6d11248b17879
+0a34671f99295c620839a08f5099f26a09ed36554636894ccff54d879b02e019
+68eef45b4023137ebbdc11cedffd40be244313a02e5e8f7dd7c73c1a0a19d818
+48dceb4b667c33c3181acad30725f99c4a39c5df6aadc30831a7195511187a0f
+d19160b234b2e22efc1b1c41350d6cb07e18dc9dbe32fc2ce0fbd06d35ac91d2
+f4d8d63e6f218a6db55f2609bcee9b46bf260a9c7435de02b6d747571963f31f
+e4c60da0cdf34b5f2c91678d4892001f2f4cce1cb818e850d06f2e24672ebc4b
+8c6fa97b6052496fbcdb879ce464dcbfbe70aaa9da61cc3c3ea1235ed309eef0
+8756a21c34763d964bee05c804983b047e0f9491285be00af736c3e2524f022b
+cbd4b0d70c6ec1dd96fca9ec22304e0cae5cb8ace8fb407c22a27bbba2c25004
+a73210c526ebf4ed5a9614ebf00d0ad9aaf4c0d30a96f097a5d340c9340f0269
+063b76aad6b4b0bb62c6dd581176597fd8d06d94bd71badeca9d2a185bf6d371
+16004f81a1a0d6a72583004e311cfded8f2b19d1169d9ca1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 174 /alpha put
+dup 175 /beta put
+dup 188 /pi put
+dup 58 /period put
+dup 59 /comma put
+dup 61 /slash put
+dup 62 /greater put
+dup 64 /partialdiff put
+dup 67 /C put
+dup 70 /F put
+dup 74 /J put
+dup 76 /L put
+dup 78 /N put
+dup 80 /P put
+dup 82 /R put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 105 /i put
+dup 106 /j put
+dup 110 /n put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+/UniqueXX 5087385 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930da4f8d58abefd45db119b10eb409dd89792
+3c6e705479464a4b310b58348c4b42393988fef4925cf984423aaf65fea9f0e6
+4629953bcf50b919d968d99bd185f83112b2759cc411764e9bde677f57c5ee5a
+c555448d5f81a16259ded1e11bf4119d53e8ab07a802df900d3a2d5ccc1c6876
+d29c5e9effb7af3ef83400b0910c07873a8c56fa7b1eb1ba426043b00cc95dbe
+dc6e136cbbbcb3f67509964f9f281ebf81fe5b018122eaf66c4a838487e82e18
+6e006093042848a903efb3469ab6b4049767aadb95c30408dfd58d8a10f4cb22
+168decd9f3ee100f07b49aa44c92139b669cc312ba20192454eb2375be6284b0
+26659d964b96ae82d4942e758027fcf23c25ed01115af27ce7f20efe2a822bb6
+84004f20243a49c9e93301fc21b80815c033c3e2ba58ef53da2157d524b395f2
+b37abca13bc6a2f42e824ab7e47106176b0d6db267fbb795ac7425582df2e3dc
+55863468a9200742bd7b552c48f8cf58bc21343bd3b95abfa140f33f37c6f3f7
+8b0d8a5154eb7c1f62ec598267f13e841a3e64172663935ac8b665d86540d316
+ddece329c008049c5e74b27d59022c5515059bc3b89370b1bc6a169c888bb325
+e0b74282d6f053a50da4024ed1e433271a32ab8c17d41c632b41cf9f3ecd5fe1
+24daf7aea7ce8a63047b245822930d517df7baaafa69d2d17f7d93cebd47deb8
+5405d720de0bb4dcae731a8e27bdbb6e6be38d168b7daff815acfc32ce367374
+bf9fd98c0ae5ba1bccdb84d94b5c173abc92f7d18e19a68f64a2241a0a163910
+8dc46b8a04ead17662b7bbff3d3d9a95d5937698573bfac64973dc8d8b8d9f68
+c52d0c133119eca4fae72f7553d276c817003234a98337d7c037c0f1bce8a804
+57113bcd97515c002d20f836fa086a3277727873ec2b64a92bedb01193491134
+b6692a08de4a201a3f11dbe070d797f7629ad487d2b8dbf89a0631956c93864a
+46c2f50b088f09c4600cdd161bbec5b7fc285f8d29f70793d305f45b5035fb2f
+12d8e8b2db220002ee8311c24b28f0fe752c8eb749c292370e3b2b3d3c6d54b6
+7929ff73edfeb12312a91d170bbe84c825a29b8c2db04feb22cbcc55f287ee6b
+0d7084df5941b15f0440f009fea8d4ea5e3643c4c533237beb4a9389d2d89bf2
+c804e85785c0af8371e6f9c3992afc30c74f024ef04508b22f2722d83ce2b645
+2ebc657b2f38aeed234f2382dbd0478f02dadf5a2e7456387a97635d8c5d5440
+69e97387db091e640023aaa28398deacb820e25b26aae20995aebd046eaf6acc
+044da586c646eee394be7fd25e2fbc296eeae5b3e3e71ee0deb31e53295374af
+ccc7cd12e1ab55e134b2215195a7e2c58041170a8831c38f76c5b288d818f1d9
+691ff4c55645c83ea19749fc3d962b930b57a6d78cd7f2dd8f71b7518e00b675
+fda9a5a6782e07859e5650fe61d9a3ced43bfff510bd96a0d826fd4a65e742f1
+def81f6a0ab5bdbc253f8120123e3819d234e6b699eb26f84a3e1470111b2099
+4fd60e52ddb74c8f7db0d25e0f80b741416e56fe27fbdfc4b98a2253ffff135a
+74abb20f44d7c28222cf1c6dadf19241c2a40c8275c4547fa7e7ff272d520b3c
+7b2e09a38d5b8b4b4eff85a1290976f44cd9bb77f0ccd64dfcbdcc0c9234c89c
+be769d5330a340bb2be21355649c30fc35ce9f547d868fdb26a917e58cc9be83
+bb667af37d0764a7f523491d0324d507ce4a85738e262474d99de5adea8d41ed
+cca58ed304eb0a6c8a5560ce44082d41a894868a71c01a5ddf588c45e5ca1894
+1e8be1934f5f7352161dcc0947cd548436fb2e74e0f1c17e0a9cffe4334c8838
+58272a8099a20f22d480a2546207e1587baf8387c3c8b5ca1d5a65e76f734cda
+798891a70afff80105055cb25e9f14b04092b1d1157a0ef7caa5ca0e09ee11a5
+f1ed56d76966e90340b1065f2e3309cd77491bd65a4cb760f2f9e59f742f9295
+76a9aa6cc9f1756fe0bf7e454b96e1dfb7a249aacfb5380bbb157dc7ed9df79b
+e33aecc1f513f8038c06fc93687c2073f2a5692bd6ea69c9c43126f79d2f66e9
+ed70d07703621fb8dc36afe792148f1ddf0f564d11722c23fa73404f36978e0d
+70de1ee864df82d7b7b201fd0be749991f218a9db2a5efb145618e51bc1ae6f2
+4b5eca87feed3b95e27f183a76ada2ed20e699f43eec05bce7b5aa6c87f9d1ea
+deea7316537827bdc4b4a6a64d0a77335c90a95537d85cf14a980c3565c00003
+98350997732d83be072f0a449a9430f7147039cbb3c838c293d636fea2cef6e2
+d4b061e825526fd9cdc20c85d2d03192ce7e1bc214a94f71e83611bf95a237e9
+18e6776aa12ae53e4c1a25a803157205ddc83e58deb1ab6efd780b34d08ea67a
+8b82c5840e9e7e05509c000cfa7466e44ffac0e9deafa49e001a31b3cd45ed17
+d8c3f467b4cb3bf25e9b371e5ef0eca4a291a992d31fb6f47f5c0095b9032335
+98c07aef9bdf911191efbeed41338e027e26623faa94cd6d71f6e1798e4bc250
+0b36d43ae9233586764002656adeb104acf8f5ec5e453d520a7423872b8902f5
+2cbe53ca3f8b023c9cb47b864ae79daeeebc799db6dd4c46c073240c11671964
+8403f275e4ae97b8b2ec242260a16daa22f1615ca84c73d275f540f533247ce7
+1b20bf67d45c7f7299a34c09ad5a8bf79fbd6bd95d555265fecba7a4b1cea94f
+2bc3e73edb4a977e6444b931444b8d70119c8bd5d4db5cb68a2a43d2bf563315
+98ef6009c0fa76d99bbc04d270277d87e61a92d62ce59cef35a2f6ff68040409
+c6dfbf35693bbfc890f78112b2d616a6d7b71715cafcf2af0c0abc59176ae522
+b1bea0b31ea4857fb6db19b017f7e5c8de977cd92580e162791d20dafdd8ad66
+e1964f5594d957e1636651ddadef4bb5518ab9900ec362f8ddd307d8a199841f
+dfdf2676c38acf25e6deddf99cd9777af9c04172c9237d5a1351089e6c6ec6b5
+694dc5687a897a66e1f0d9c498c88ab2d4634423a1b332bda117c2c8c5828d66
+4eabca487b800113967cf9e5f97c700d44b40ed806864c4d06511ee2060ed829
+212e3306d134dea54656218984bb18c2e407a96c57e84332aa5cef9aab2ac577
+cab0e5ab8e1dcc38e5b5382f70983948443d9edb6db712b0047ce99ec0685aff
+5a17f7a0e96dde1fb020f40aa526fec8c3299d738b11e188c95b71e4531862d5
+14c2ff8af3e3bbfecefd3e304e6055750f1dc5272d324c57fd5365dd36c217b0
+100ce6a897f60b6f236a3bb9f787ef28e6b51c21f283736fbcc3727cadb108da
+4ff6c4511d64ca9d300a1e4d1c2dcf41f893d6718807472ad6cf528f243ba3f4
+e445760dad38a8635f13dd1092f420eaf3113688be029884ebea6a3da3c50660
+c4a450b6d4594d069d6ae3dd1f8d95d8060b9b8f67f098f2b1e8b123693d56c5
+b504e30d02e90ac65d649edc04c1841875671052fcf1e2064edef51a3767f3d8
+8633843eaf68733f612f8b963f4d4c89f29e090f489e92e8fd4c9eb32c3990d4
+d79ebea3d812717d51571a092f241992d3fb9b8e95ed4edf2917b93f6c69e57f
+8d7fb7f0d376c4cc21daff45a6e3f4ed92f5cd4fcd74cad29f8ce766921c16f7
+8d471b958c0aa388d7f15f18293b42ecc198bd7018db062b20d1bcbc6bff77a3
+a611a873a2dc706a0d08f272fa02379a64fe1842a18b508940ba6644279149b9
+8d77cff97bd7a834f72fe1730570a364667ca9e458f9eb04fbee058fc14570ab
+5a04e73541a52e2fb9bf890caaecf326170fbf1bf4f700c5b17d7c7bff543b11
+40a23a1b01c0f60868ee0c6b13138bcbe4e267149b93ef285035f5e223dd58ec
+1b39b4467891b16c6a520454c8238fd351186c5368ab2d67a179b03cd2f0ba46
+f27e6ae4d7d3ea1adc9c1d9cf3d97c858d6cda75b374466dd160df1c04dd1446
+2631bc423eadd0e170b00c1fd1f7d90394b724e9e32881c41a623e192af728d0
+3f571729cc3e0893daaadc7d4c8b4b0d67fbfac079b0cf2798f452bec45c5b19
+6f20b888bea328cfb4a2746f6726d87a4172ba6918bc668f10632d3c93b5d3a8
+6c150d7f3ffda543e7de8b60a04b0062f0cb0fae1fcef2d21686382c4af4b2e9
+d3c4fe5eaa5ef4aea502cf2502242cc0aeaa48624190b5d2681dbb1946bc0ccf
+671d19c4b21bafc255efe3fb7f479097ae00b0a43e9c3301f2543246e12234f6
+7f82b8ce59679fb3bb0e0fdcc8028a02f78506fa73ac7ea6a30434148c1abd02
+35bcae44b7fe43c7828361e97a53e6b35b8c43a58c7e8b60cc9315d0c48f3b7d
+d0413fe09bd2532aee6f01610b3b1d46d4280d011cdef72481bcbf8026d26f01
+103296958594bcc82fde58072e757eccbdd0ec32a114609235926c449e8fabf2
+173e5c4ba1562397d168951c98a5103f54c785737adb2723ea182f756366e353
+89c0772faa73448f03731791b75759e7ea410dcb0e5358a72ef317d114cc1070
+cdcaf3df73907195700fa3925f1eb2d41e88ee46b8d3361669c44191687948cd
+652ce2d120b9e6a58887870bb4ef71ee76b20d92d349a5596a6dbb35ea91cbe5
+d9e863aec035cd6b57d8d09300ee2eeac151662cbdf3d593e481551254f95e68
+b37f3e2dd0391eb554b16db380f7d19c8bb47256701ef879653328a36963714c
+6285c3c5b1211bd1d9d867316a3b792dbb27a9b6f681c1b2fc644b8df38b5b9b
+89f43a3c4cf65189ee3f78c3dac2abe3c063635161c89cfb697e37518a313ab9
+8ec3be875e279cd28217f36215abc3329dd2245e0c6fcda131c4f2c46630ef59
+116d5f2764e64756edf8a02b7c3b1ee26e5daebbe14642b675a497161587d65b
+0dd96a7cd1fa4644805ea205f170809a6a091e2701f513db4a3b0998b482e816
+0a168a1246310f9144decfb2e8f9d7cdab325b89e87669f9cbf6bf0395e35bc4
+e97e5b54a31ffb9801380d6eec7ce2ee28dcd4cc1f326eccc802711780bce578
+d89fb9989d9c5057afce894e880a61de3a6624714c71fc8f712ceb83a66b5bc5
+a39161f1f2b9e33165bc2ee29223f811e9ce9cb23d6a7296591b6d218ad6e685
+a6b61476d427b7349235a35859011f240ae4f357e5e7a45e151d68d6dbe85398
+6505e3059e09cfe0b1e4b4a9fa3ddcfafa396b193ddd111f4dad11a9f2405a28
+464565dcacefa082c6dfc4fd67dd26bb8cf8ba19035d89b9ae168a762aed7f03
+5fec03f564e1b3080e47cc2522714a0d34f899f6ca47f0a9de88a7d290a51e22
+505a87f9126e3ff8a7fad8d067fd847d42e9853f62ee86c7bba41eb2e50dfc74
+8d5642c663d2e7844ae946f020889f24bbe08103a3a603e7011cf42de01df826
+820e47b98a2fe874c69a77566ca3305080cc7ce981646c2376572e4cd0e84c5f
+5e2bec44aa5e93fa8face98082ae29189e137172b8d8adc18208c6497b181899
+e3aad434760522f12de87ce15621af6c3fd732413e805ebfdc87feda83cdda95
+635e55970d4edfad60026ad6fb11066a9d81085b2b7c8243466d3f13d9db96d2
+e478b9f62b9cd4124f607b87596140d7748360304c2938b1b2e15fcecd1f0bc1
+d72eb7e29efecb87dc269f43241fa9144f1ee7655f786e708c0981fdf129ace4
+83b5b05696ceb809db8de6fbacc07dfbd9f75793269781a1d6838f1e647546d8
+520e23879421ae035ffef40c1206f994ac78bf732b5c45cf5254d0817942920d
+0759a34d375419e7cc03aca41dd560d05b3c8e4880577216fd704a4c0bfcda4e
+342567e9b3d73e1ec7e4572db48c6c168f46d0b3ba4d51ece04162080949977d
+a9b5951d4eda20e71432ac49fccd2d2d01db82f6d9f5f0da91e9fa13443571ee
+a0930c350ab0edbbda52b1e95f9acb0a34c1e19800cd1c5a58012ecb3deaa265
+0bc772179295495a4e476382450e1666ee6348577f979c5b81f8ffdd05892e6f
+c874d8e24708e3d7dad3bb3ef3435b355e37ab490a678d84d4eb4783f8838349
+3f411f6866ea9633f78d0f31e0f9864d09fe62111b93578ba34d5b4cfa8a1b04
+991318af85aca3eeae9f134715bca40805f796552aad0fdba935e9f32f86ddf1
+edf736f79c5525d9b08bcbfd1fbaed1fc54d9a886fea483304ec1aee0af07fd4
+540ee1a7fb88d37932604ea19e67f0511b3fca5120d51d42348e2eda79070283
+e7932cebd56061fe3d044d71dddcd9c411b4aaf0b517870e0db5b330fbd0a1c4
+5913783b525160250fb6c24c58cf7edca40fc6f0ad126726b94e0dd17fe7333f
+13264452935d15165e995178ba995543aef1d4ea32dea3f533b287e90a8bf917
+bb8c012f1e78c23f66cc77d0607888d45382e6a89d6b975fb5f7eaece3f09047
+0d8954c6c12fa1a19a4eb0dafef5528542c708057d7232077d35d00d1f158bd3
+74f38b62c62ab30a93a2d233e3658186574c85edfa3c8de61f14104e381ce3d9
+f7d8a8e0df629139a82aa7ed84891298196f558d5bc8ed04486e788cf211e477
+2e4f98a7603b17a7e26d045bfee190b5684583290a748c77345523576f275ea9
+7caa3f61aa945edd0e1cbf06e47e0898ef8d2ae3b9f0f8ef693ea09ba9854fa3
+ef0a20b841bb812c35a5a1554c08b0a431b2d4485f973cb6d9bf8181f056f53d
+2a582bc057b3ba0c33e4d5c90be540e8d2f98027edca3948e2fbf278d644611c
+ba217c0963ea01f727514de2e50e8e1df9ab145b7008154875c82827209d280a
+58ea243dd5eae44ec375ef391e8932337c114839002778f6ca8e435c976c40aa
+7528fb9b79107791aba1dc6e5bc597e6696ffac6cacfa3e1bf5f3f0787433580
+9f349c3a593d91812ce67ecf82415d8d2b7809c3396cd83b52d7823c75cf1a24
+545abba99f9610f07779f799985211c838b45369c86752b333771948053b5c37
+dd99338333aafaf3b3c1c0fa621e69b60b9f3c3f9d3487a5bedbcc1294de0f79
+582c6e55ba744d63be20a027a518f68f501a21ae7c49955d55f4382a4d44155b
+ce770fe8ed2f0c6a30291c2adffc30230f10a8788e14697f53f222d8529d0c7c
+ede04b8e024b93ee2a2649d60203fd5add2b16d91ae2e01cd12ab861766d14e1
+0408faa10dffa38026d1543020c16b51570cd5368d8f1e992cbefd13c888655c
+9bfe88e36cb5096eab6455a888dc7e04ee9fc423d8d169656fedbfd1c7720068
+99f32e39321da78c73fbec32c11f1f2db4eb06ab4c1269793bea83a10e419e7c
+0108577713cae53657df21eb56d6efe5aa0bbf5841bf49dd01cb131e03ecfdc3
+f8548c05224e246087bf884e00dbe2cee11995b3bbfe555fc1b5bc2730e4d5aa
+445a1536e7b5f8cd1df162391f317851fe7035059b890774598b9d5602c7abea
+282c508b60eb1e63504ecfade60f76f7052fe575f8145cb3fdb1d97817da5d6b
+28e0fc830905ed3184b218c46d57d3c6d70161f0267e020152edc40eb0ecc303
+190b0a2e244044a0c1facb600e13ee8e9759d4cbbfa2876844362ce400b2f32a
+55ee285fb97c267d0f4a6c1e4106ed658ce831976578ed75099828342a13cb4d
+75eae9fd9f0153410f16ee7189f9e1a2f133da86010d1981843436bea72cb6a8
+1e3069b9090f6e63332fe3f15d876950d85410c115eff9a61ba57dfe73212d83
+49fb15342e9fbb3e0eb7ba4829f782d81d419820416ac183886b565ab1025e5c
+a9aefbef5f482c79408dfcc7a5d1b0abd31f4a8091abcbc73c401bddb289d6e8
+ebba8570a9506f74e35c0b36b8c35fb2255885f8928bb26cc50d7b0c42a944fb
+bed05edd7aac62bb3a8d6649b489e4724f862e7bcb2b10a8c16b9a3bc8dcbd12
+950d01baf84573391d7be49f1221c211d2a28ec0ce1092e6bea2fc6b5cdb5c3b
+494066bbb5f0af34d2042cda980943d0b36c505dba61afa4f496a9adfb45f090
+ede34ab910a903dc8efcc0c7191df3df2f654aa08fcbe0d0e6182bb63b3ff52e
+396f2b20c1277cdfe8668beaf321d46d1c94c673f008dfa30ace59897dc98b31
+0287bbb9fe777f833e26d6eb014064344e44df152396de7c91c7e9f7f804b095
+6d29784daebfb199dad1b41f848e1a907af4e61eb555d735aecac241bf62d3f8
+6ebcf1d715bb5ca2561e3951c171da3562f84910df52be838ae65b2f7ea9ddcf
+c6bb5d47ead029cfbd413e1d33e62d7ac77ef326adecfea6895ed74b6a3e43fc
+7a6b1d9117ee1ae00361b75bdfc4c6876bf9e7d7c125d842d5ce5fba89ce76af
+85c363067194e4eefed5b3a78139c796d2e4259e08acca572765fabec23ad553
+cd89eab8665e0ad8dda6e22b8525ee16684045d4657d69b860c4426a7086d57d
+f5470a8fa5f1a7f972fe0314a15d5ebfaa60dd2adc6029ad1bb70b8d11de95c8
+c1e0b3c706a1080dccb3e64a825029ff67dc5aad71e93c6a80d39bb02f5788c0
+36c5120c9782edbb039b1dbca1d528ed0cc26c71272bcce662668db938ede637
+c8691a3ea3d8626bc2d278efa7ee5d91a0787acf69c8e78b079bf7c4c4da3e4e
+17a492a21794aafa405f8d08ef26cd6112ab6653133e5e7b14e3fd5dba8d7583
+512acedba06ce3ed8216870cf3a378b1f2a1725babc8d53e2904c15709101704
+5d322a3c5e3fbd620277a21b86beda44234a80424e7fd35be51a5994a50e6e2d
+d8e035cc1d313c7a93d5d6f4d5ff8ac10c5b2f96f70baa8d34c8e67f9f60fd3a
+589a093cf6c5aa5e9844ad1a1e0d20a98efa340feb538176b054e0b07175c9c1
+b7bf55ca45d43d588c02de88ab7dbaa42e54ff08c4553637671fd737fab8d484
+94817f08e866829131dc2dfe42215fa716152a730aaba32f971fdca88cc5fe81
+2ea56563bec5490e1da07e1f73e31d4603df4b91e7e9da181c31a8eb3581c6bd
+65cf57172033ec57f9689be3cbac40a6ab9e736e51a853577ad5a7b6f13dfa3a
+8126d4ff66e4b8dc84184cd8f775b3912cbb2c2c466107751a56d8dc74fc4130
+1de2d8d40839403e66561676f5fadd03ec61d855d46593aec43b3513a4e4f31b
+3dc709a0bd10b1d2190862ef5402513342eae6217a21dee840dbf7364a046de6
+9e0b60193d7c6b27479a0de28b475cfc88239c0e6cbfb24cdf40f653e7e75a87
+fa3ab64dc50aa8e7a3bb753d19d972131a237a18fbcd08aff6e2edc3e3d7d1d0
+9f4c7bc5dd477f733931a714896ec968ae71107fab3540b3d2076bab1f5662a1
+ab3d9b23d1c5fc751d341b6b27e830685cf7ffed8982fcb381e324332d69b945
+7914a8d7d65a9b96330f33327a7822903c3911338a3c487f514078d894912131
+c50964865509dc963b986ce88d448d633878bc4ae0656c8d4243da310a29aad6
+29b9a0b44fddf218316d37b3b1c1e44b35c1f97fe19a7df3a1c79d4c4cf09324
+e114fdec2fa2143125dee25eeeeadd27408de62bd264e25f3e1c317c52462218
+27f3c0cb8b291c91bc0072efcce84b3d325d1e0c1b2c52dfa2d02f7d8d1fd86b
+ac190dbe2b03fb6eff90deec42e73e354b46239e2ade0c99d4e55fd6c1c0adb6
+2ce14ab89c729f78901bfb7b12777b1d85331c582d65bd6b2bdfe7164b194421
+ac8676fa8b9877a7c1b0be9a51f3298d4cad602ef5475e482ba3fa51e18d7130
+7619cf53fac5690e0c9bf0896a8881efcb8aaad2d78a1b9c2d007c1f59a24ead
+43a661ae66da332c664d95aa366a9fb6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+dup 162 /periodcentered put
+dup 163 /multiply put
+dup 174 /circledivide put
+dup 175 /circledot put
+dup 178 /bullet put
+dup 183 /lessequal put
+dup 188 /approxequal put
+dup 50 /element put
+dup 102 /braceleft put
+dup 103 /braceright put
+dup 120 /section put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+/UniqueXX 5000820 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f67052788e6703bb5ee49533870bca1f113ad8
+3750d597b842d8d96c423ba1273ddd32f3a54a912a443fcd44f7c3a6fe3956b0
+aa1e784aaec6fce08dae0c76da9d0a3eba57b98a6233d9e9f0c3f00fcc6b2c6a
+9ba23af389e6dfff4efec3de05d6276c6be417703ce508377f25960ef4ed83b4
+9b01b873f3a639ce00f356229b6477a081933fef3bb80e2b9dffa7f75567b1fa
+4d739b772f8d674e567534c6c5bbf1cf615372be20b18472f7aa58be8c216dbd
+df81cc0a86b6d8318ca68fe22c8af13b54d7576fe4ca5a7af9005ea5cc4edb79
+c0ab668e4fec4b7f5a9eb5f0e4c088cd818ecc4feb4b40ec8bd2981bf2336074
+b64c4302813551ec0153be72f1f9695b56a658dabe99f86661b49303d6565988
+88bfe2c6ad3f28b68ea9b83725ea102a0b9393a25f33efc29df1996ac4dd61f5
+f873f5babe16171ad53ce606645dd09e9afb6d3941bdc0cd7ebb88f03299f85d
+7e956540734911f7754de74b8c7cbae69278a0770b300d116d8408eb28eb9185
+15af0e18d71489f51eb20cb4102ce31371359d513266eb5301fed3910f27938d
+31939b21f9020ab0b593d552a14d215166e8195fc80399727f1540ea4967e5ee
+6dd572191891272a5c87a807c28f3aca7a5d65484a9a0134afdc5e63203a813f
+837735576c7667774794d2abc3d2e1bffad01425353e4f859305d6f0b5520eb6
+c1d675a78075ec5711739c1feb7c43a676a2022e4ac7bc72a60899aa880a71a8
+cc78057cb5ffe0b21ad60596d4c37eea6444db71ce1986241e5584344c7f40e4
+50af689a230e06466d0b5570d81ebd37d4773ff5b52d95442c2551d8a658b669
+9a987f125049902dd3285358733aaa2ac35177bd748020fa58a7b7f3bbc80ade
+bc0efb486220d3dfff0b20dda9057b86dc29e959ae1e1cffc2f4b901e541ea67
+623789a9404848a8fcc1ec16682889d60455b90bbaf28f412794bdb7b9e7e4be
+181c93ce4f821d35eafe5b2e2e8ba897bec2ee2331b050553202d6c030ebf122
+fb2568dc34daf7fb633357a51b0a64e8acba7667b18cae573700b715b14f4044
+bb61151022a1bff4789a1e2f6f0fd0b03b2c57713f85ba0eaa8e1e29bbcc2070
+d215ba9ed0d8ee685d64e431e22d66dc08940d35340ebbea4a6d07e7140ccee0
+693e88e775b62dd754a116cef09c579632e130a20ed9e7b53b1f19a86de4320e
+c9e5c3b48b8a15c46a9fdcee7b01e06f03eaf888e52af0bd34cbb46bb2a98549
+e867c596b3252944ed2d7eb834ddcc105c5cde4deb46c4c835adcffbc4c1691b
+e8135e015381ecc240154719c762886b65d1a62b881758072344121cfcc631d4
+be7136f8cc5f6f14f6ccbf23f69eca9a22e316ce39ede2b936f31e58af56cc6b
+7721900028273ba4baffe0152517c284bda97ffe82cb8ee2f738443fe9638b16
+3e1752fec9227dd1006af683503be1bd74bda6f51a4a12d14fa052de132cdff6
+946399082be8f106da40184037c1384520e8683550abe30f6f41a92ced7662d9
+bb429018c2b99f9db7b58b433bd29888e8261be2b81f4aac5f3589febdbd9cac
+491c1f9cb4691112b1e4b2ccd734ceb7d4d92d24bd5400a1b96689c6918167ef
+39c573c57a13a0b8abba571cca21f6f2840ccd36b536239812dac0fc86b9c47e
+4d244c9ac2b8f48475a868cd892e762c9f58202cde1296dafa7795b4377cd4a4
+f07fcf6f6633398a49708c64c74e32e3e516d2021f81652e8c32c42b4bfd9cf2
+6fdcf3f4a192230743c153882cbadaed6ba76394909854df8484b9013b725ef2
+260ab9f3e650b41cacc2c3c7c8d8b606c6a6cd2ce338c2f0ae3a83e8ba00ef7a
+a9170e987c27af41ccbb74583d3fd3cc6fa7e9ebf0ec8349c5a3677ead7e248e
+601989c563e27c184e0c30c3907e60eadb243e6f39286c3e5071c7c9b7d4015b
+3918d53e7c61f2e0f165312ad03b2420c70ee788828e6659fa79d1e402320729
+26d487fcdcaaf04aaaff807b24c36b8d8daa79c233432ab80f80c280c6319843
+3a525b9754a26def91a254a7c176683e4e6958096365491fffcd75664be64f83
+c567d970c5254297384e1393c54cbcb6444397d1c582b1430031a001756e72fd
+561cc32628abf4476f77bc150a09e3e4864bdfe8b15eb8246e45668aeb80f97d
+cb408736f1a59d07b3cd79f4acf8e9569cd61238d6d2fa8077df71467e3351f7
+4928c20f283348fbceb09439999d1d0af4719df5222affde133818064b6b32ea
+90a76f8cb4f0e01a06856977391cde1e0ab812d4f9c18ea3be9cb6f5800a03ff
+32d372d74201e8db0ef14ce429acddd06f1e0452cfcc9f516366b5ac49a18b6d
+a2d684cab95305036a48e054e7f32c0ed5b0d0e269a3e771376a3c6f45990628
+2f2f0aeaa736b043394446e8d2c7af60bb61adea674c2d0cb16cafe6444952b1
+cd1da8c387b3835f09da51d5d8660d81ae2a4f49186c9184d417c5359293fcee
+72e677eba503a9a6a3ecdbb4be07587102333fd3855e56d2bde676063f2a6990
+ffb75a0a1833853ba3916236da4c7758ae50fa3ed4f96e47e87146f05b9535ee
+3729d54cbf6939d9aa9c5c260c3f6c861208d78875acdc7e72e928fddae6364e
+74f7891fe69ce645eca84a532b2921fb81eb16cbf1d155e10456110efcfdcea3
+2425260a20096eb004e80d6b5335f0c12fd1a09b7ee19189cab79f8d52606b6b
+309f226e64ca681271dc40e3d67cf41a57745d544fea537aeb8bd3fe5de7170a
+3e24b94512a84370370c33806637e5f41e38be9a52daf6f4987406d83eb5f5c4
+712a3f157823046247a1257616661882a6ea47c86ed8bb351da4ebb011ea6281
+4dceb6368b0ffee8f858a5bd804eaca8aee863762e98b8fcae19e9e16b1df59f
+3906f20b202f996c1e1cc7d5f92f1dbfbf95e4cef8bd668ab9ebf0e3cf69623d
+b97fe7d6db5e7958115d7414a4337873542c93fea2556ca290c3232dbd4bea45
+053c3581e0c10f7e2aaef09cc648e7f903b86fac551a3c5417bd503a290685f7
+7fbf3157f8be9d85ed5d5d53b2291bf1c1893eb2faef0dba23ed789bede86f4e
+fad627c0cf132376bff2e2aff8e5f3f52074c649
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMCSC10
+%!PS-AdobeFont-1.1: CMCSC10 1.0
+%%CreationDate: 1991 Aug 18 17:46:49
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMCSC10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMCSC10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 174 /arrowup put
+dup 175 /arrowdown put
+dup 178 /questiondown put
+dup 183 /caron put
+dup 188 /germandbls put
+dup 45 /hyphen put
+dup 67 /C put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+readonly def
+/FontBBox{14 -250 1077 750}readonly def
+/UniqueXX 5000772 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd800bcb325468c79ffacb9cd3037a112066957
+7889d67fff57549064b985d67ede2fb03272083723541051ebe936eff01a4ab3
+cd845d565dfdf25d9ddd2792db17f52f894bea484480f06c832140fdd6c3af0e
+fef0584c6b78b5e2bbb9a752f10581fd1c48cb498a822afb18cddebba34695b9
+b418010368fdfb7bf758d50f3af03360b81c776325c33c9c81130b1e1be840cf
+68c71ffd091dccc0df7b507fe8953dc3836af0da08ff9ff3e9cf7288d9eb8baf
+ffac546a0fd987ae8e0bcf7b759f4408e13524f478de5896d816cb0ad2904271
+cbec82a5ca50f0598502b434ecd94531b4a65181b5b3afcb650904b15157737a
+a4386f1a7f1252caf2adbd5c8162bf3b065c01ca471d520c884ebbe1b29f9549
+134e285dea2fe158c15a08a744cdda00bb6c62158262e24702803d9e1dc1d3a3
+1383085631154b077fc20488ee3aa03f47ed2766644330b94133f2f9389b99b8
+96d3707d1c5bb227fd3bbdf3a6ff572bf07164107c7a1c0710a5c7cfb67282f9
+c238100fa138b75c553d7cbef17e2292a320d3d86a6210e6e3a1e590b10dac6e
+177094d5dd163db623d7b344478752f6f3d7d5b3fa92e6bc72dc6fc343d2f946
+9153e3d14c5a6d6b1d9ca52947b789cb4cf6196a02973aff0b097333f8d615c0
+a1726ab7e31c378eab77150faa28cce535afe3ae5798402ca51cbd18dedc2c43
+5281d0781351df30f4d11761579676449ae4a47a10f677cdd31ca9120fc2606a
+9025d3cc09d58856a9bbfb17669f706ff8c7efe37a3656c9b20609cccb58b309
+0595ca5666833f2bbf884aac1cd632fce69b4e0ea2e0a25b9c4d471f0e322e09
+4cefda321359fdbe0a82656d3ecaeb68b7e0c7e733d85066ed7474c22b67169a
+1bf1bdf7dfd0ce0aaeef78ee393ce6ea65edc1fdcdf3f744f714005d8221a156
+4e71a111cf8388437220d9468a0e10112121be7d2c88e2971d244913f099804f
+1b27afc6d9b3b4b0f1a040839c027547f4b831e999028bb890d5ec875658c121
+c9527209c36beb0a4f121e2476742b1105ac74e5c17ad56edec1ecf3bea47dab
+b032aa6a4bc7ae61755d8f455c5fab33afa619fe7c0148a8e8c6a02826545fed
+09df35ca1ce8e5a0dc6f25cc1979f177c2a9089366f2932f2726e0070876f072
+d8147953a5a20fe9e019085bc4a4161c1163ee336df6bc1800968b589b061574
+93a26daeab7ab1e19bb3acb02e45550b03bb7bf088247382f6bc905d71b0edbe
+8aecbcfae27921f749bb4994a84d80048508b859fd420149f146abc341a4849d
+90cbb1585ec0a554f262a4aa480e7a2cdec05091c00eb65b4fd3c213989ea804
+65c8d59b2ae9802c319e9ad1b09e3bc348a2c870da9df14994a45b5f4ad866b0
+161c0749adfa1cd25420f762c6a9d32b92f887144329979ef1c636136c127744
+b0af5db8b3d22407e9a95be133bb6b9bd939b766e16076b52fb1f2ab76e437e1
+11d581a365cacc76697d67a0bfcd333751668236d14ab397d90e9d1251e08ffd
+c266cb3c7f1079e0b5e17d31fd365940c429bd7dd6d2e7d5b05b55821c8ed334
+21a935d1fcb4a8e3c9c205a054520d205182393830f59022fe0697453317b532
+226e6cc5f39c2b9f47c7a2fbec05807c3b620891da18d923cf42a5db9bc99cc8
+aef4609b6aeddb3d01d1b299c9c301976363f4b3bd9135b3a46d4299b12cdd46
+d625d5bfe91ea18638a6353391797c3719a7891338456e8dcfd637980cdbd0a1
+b881238494ff7b543a461591ad975f14c29162f480e011d68bea70c8e5b2410f
+7ee996a548f451c204568e336ad53793e292728d188c04e908d0eaafd89af22d
+273bc7d4b9be3bb6dcf8b40b7b05ff3be8ad28d32de00138b8f53909be62c770
+49930ced299c0bd24af05d3f257a767f6df51b12211529df828bf95b02cc2346
+a24515cb16862a66e09904dbeccb6d91b88fdf7985cd0a719f5aad3d472a70c8
+4e641d0ae51c189603459969085defc89c0ebbe982862ece98762010e97b762a
+ea5045fcc8d3363235a9a79154a1fd11e6023b347096ac88fad0917fbbbf45df
+f2199e88af0fcb78107cd302360fbaa5f4f51476a63aa85756aca80bbe123b67
+f8c0b5faccb10604e4277ccd90bcaadd726924dfd6fe29cc38dfdb4d86f54141
+271a64b128ba5370c5ec42355a421a62a4e5c9c6c53dea03221aedf117731c89
+9e2bd9751832f109d5a5c07c9c375bd63feacfbac7be596cf81d65634da529dd
+e5a25d347098e7c84732110cbcdc392e977a697d39bb81fa8e22ad5a53c0371b
+c58dd737942e223aaca3306907f68d1e098577acb932d204269250a4153b182f
+fd8214b3e79c0ef0f338c41c408d6b9dc0a20f08cccc11b49a552b27ff5ea51a
+00e7a018234ca66de23f44e048f9deda7d78b8d3670e15e33336cafee5dd4e4f
+0811d703388a4d6d4bc8bb86af167099e11fa56f0fad347f2ebb99e2e6d0f8c9
+7bdc0891ac272e59c809cb542cc5e1550aeb082839560292c4905641ad0e8c0b
+bead8200d489d8a4b0024631b59d94c11b9e9802fec26bb486a80db8b519e9cd
+8b6a218c092ad0acd7799131c3b9acfbb7f2b7ffb6d8f7cdae805235cf9ea8eb
+4b5cc019994bb7207ed9adda876832b5cd03d1c9151bdb5cbea73b63135a073a
+de7891ff055b8afff596e3dd0ef149e109b0b6a9a1315d36ff25790e9fad2360
+bdcb0f27a54547df5dfd36b200f5f16ea76efa98d2a80e2510d415bdb3172010
+930a1d56c5e6407ae3d5e6f8135e7046a48d383e2593b499f32a8e2ee70ccfd0
+62573377d3e4e5399ae808dce808f50e302ded8c590b278a4241e47917653d74
+123329284658e17059ca7cb13ba2bf800c2701846834bb116442c27ccce8ae5b
+be5174bbc88e3528fda5838c46f12c0d1fa95aec6d911f4c00b5b6ed3b5c2a4f
+18cf70337f840447478ff9dbdd800442ac63b2856f5cf5a326e9371a24e6c79a
+17da5ef8986e434e9fbfa271f03f711e7366e7049d92a89a7e68f3b3d55565e5
+8d7201ba502dbb32bc50a897027b5b6f28b0d91667e8b1f5f93bbd61d178d184
+1d001bf8c233ccad6eb1c2d3d89712753bee63887f5ec89514f95987cf619b57
+821d962122bfe4d24be2f7b5b2e19d75c60f2b7b2892e7df9cd78f4eb2ef9310
+f15f031a600c468705741e462e0195b53a2f96f1e5903ab61d1f4fd9cf0407a6
+90c8854479216417508f963aeb16e212350463a16cc7cee8118bd0170021345d
+c023f76a1c052e1e2bc7dd8336d46e2028385b7fea7cd103ce256f2f2aadda83
+2cd67f5c57545598a6de0a1df36927541ebbae6858e478d68939f2d0035e9bd5
+6dbf5c064fc5c9ac119abee1b03bc4f1600ea8399d31a033c5c723452a47b836
+75b67962ce28c2e9dd541d2ee4bc74ae571a344effa8723066c87528467c410b
+830901e1ded2b73095d2aedb076029c9c0072504a9043184dec826bceb610f3d
+3a2ce7b27f682436f57b4c55a906ead34dfc2533adcacd5eff3b03decd86bbf1
+5dcabbfc0a174a7a9ecc9549ee513af2b74cfb03735fc3d40bbc49be62d93852
+7143cb50e4473a0e69b3098d945485d5d66f08e9f2cf82d92ed55897f7905574
+ee1843fe6bd79817feb72694be70d595a4efdde423a3ca1e45a456ed7c89aa9f
+0f5d08d0ce57a9495a918420b7d6ab3bf84cbb39de947fea445f16f678f81f20
+66289e867303f619ce8e3b88f87841c733853e41ebfc9a7c4372e049f2a653c0
+ca58fa385173d60915f953fb1d110246f07b5950b66ce10fc81ad00910f07ca6
+122d37f1538f1c1055b42c422d5af9a3311e26ec1feffd25c3dc05dbfcf7eff5
+9ba7d4ac94b14c7ef4c79799d47358f84d448071f24a83a054f2cee0db9ec062
+365104b02ea8d54bb013e4c0f23edc41e3f7304aab85a47e25103bb403449702
+df304d7cd68ec752e1313d5506612510221a5ad3e4f72c21a3a86c9576e514aa
+9281435f2eb0c77096e0ec08023fb5d023e4a39b0b6d166b9f47888553bd8c67
+209e0ab2405a3df8f0d5606a584d900af3b5c8fab15e4adc56627634ccc79c63
+ca50841a889457937676e9db689c2af1578095c35013eb0163e6c1e5275bea1a
+272438b6c8e80343f66fa02e925e372d6bbd8ff2490b93d8909dbd88485c7c3b
+044d6e6c46d80313b232941ae176f2e00ecda55ec289dfbae50210aa9915963a
+02e6ef4b6b67bfa5b9dba24a1aef0c89e540cb0c0c32f53c7b047572a2739c75
+1cbd2eca30f935f89b845773bdea7ee362790bdf3f69d143892dcfe9e9f0de51
+159ba3c1963d363e0d525e5593b16ef61650a7c78a78c1fbfdee3c2abb24c459
+dc9e260668dcdf8519c5d216dd88883291c14988b1dd2b5430578135ccf862c2
+382aa3afbf87eeaa6dd8214380990b34e4ae27d33626153f4f4bcf3f91e400ef
+a88b5a38fd4b63750cef3fd74dfb5cfc1574bd8173faf143b3372bc2626f1be7
+8f522f761974406212a007473db990d2876f54831add1787244b9670fe3ff228
+93183504c11eb8446211ca4164c41fff532414a875aed3b730da9729481bcb04
+7db6c813220ed028d4eb1e50233baf7a350f6c270e77273e7bd8074372f5dde6
+5452fb60c036277555a69bddd3ee391e8442fb54a3422fb46b429d0b1e51ee88
+d548b39edf7f1908f92f30f311ddf4356da59bbeae7c5d693fbc525ff11e74a8
+d7b14c669f56854fe998511c58caa24d05cd311c5f429a0b5733bf8eec9e93f0
+c37f1f883ba4514a93ebceedf215f40c77cc6a2cbca0003c7a3a702e6b6b038d
+0dc8a4ee7f3e048bc67e6695e859155f24b007d9c12ac951128a74d478b434f3
+3ffad444fedcace60ece19b159c4bc7f8d62f8a4b3b0baca7cf550bfab1d1b1e
+200ad2ea27162420344de7fdc2560212f44c9ce55037468481314ac978e5b65e
+072f4daeacdabf7dab9b709d2c15bd6cf1fea4095ca81a42eb29d2ef74277d6e
+d33fe4e56241f314cdb4e4bfc74ac324ffdd90a9d48fcec89f805c7ef2918730
+0753899385a636dd615b2b731c83d39a71bd237e23db3e00e337be21b3c04738
+52a7760ec99f4ac0e012b0654e8f7e85423460d9550f72230f0199a36c34b6e5
+174ad3f80f78f274b2392c17b1be04983eaa5306378bdfe3a648b2253f632f87
+d4a98f655741b35c861bb08fc5eace4987d18d92f32f8082b567f56edcd223d2
+64783b1530f397b6a91f44987b2cf766cc81dc7ca128359d89d36870d9279c41
+99b56ed3bd3507ff4a63f7fcfdba722413c35b4420b0267f1a08bf54e7901878
+7247264e82716307795138fde2a03ce3e189a0d6c0e4e6d639c94cac5bfbbb37
+d52d7985e9f521bc21282f09138a510a085dace693a660c12bc5059e554313b5
+a0969f606558eb0557966a07188859b4d620c3f6a57688d3e35a925e40b630cc
+bb258539b7289f5593aff7aaabafc94bb05b3dcb849ef8a29bb41951bc98fa7d
+adaa6309981b5adba19806efb8e58faaf92e2c448f0a86669c9e751e23cc0718
+10f449ed12e5b4f17ba69e7a409b2740b6438acb382b3ff6232aa9752072ab0a
+53c365736c8201fcb1c7c352383454125d23e4c3a4ce9e9473c28cd15ae80f28
+2243d88525edae94045829b20da9e352cdec9c08912ce9bb886d6084e5ae3053
+af3e9e3fd24ce6a5d2efa6a9e2a3c6ec5bc941d02f31a967caa8bdb46543dde0
+1ac3dd51ac011332747ea37b5e20e1ff9359aa24574842f332ae40434fe5c461
+1a7dd471e21f0fe840bbd9ebe2103d0fc94f0ee188d38ce841550cb45a81a707
+0c31a6b2b35e62ee17fa343adc4e44ad257068de21efcf8784bf2b0f5d9d9980
+b7909b327a7d75cf8ed06a5f95e9d81e5d45b21ed077bda2525a2ceae9b510a5
+3ccd1bb1d1eface8928b1fcc2899c7c8b75b4a1d1f42e6ea3c10328018a6fd73
+43f92262f5bc2586066b48dc6e16936a5bbc2fcab1cd39c093c3390816994291
+1323fe1bf2f70509e098816e32b4d957910694cff88405ef25bba4171191da70
+9cdae4719f9da903da175d4af7607bf30d627785743c370f4a99f693e65f0802
+973ca5bc2264ac6a9331322a4e2ff61c92becc0a2e699948a6582e0ec15b2039
+a92854822a17c74c24d775073ca3a5db853bee252944ed2d682faace6c954d2c
+e0abd7ad6b3452fd8200d2f534ca8a572be6bb294af2ff57d284669adfa9577b
+ee5a75154fe2dca8d852ee6de87b08309b73f2400820b5c63ea295ae1b3594d1
+75b78b6b0433f37f0e06f018a0f0b73e4bb339ed5c3fdea61ee6c08fdcb3fa7e
+9a7e2a05a79ae10f19c709831aeec4f6847c10fbad414c23b1e7e9d9e33dcf1a
+880bcb2951ce8a1fb0d8490bb92a4745d0260fd870f1614ee2f0d4e39ca370ea
+e56587bc699b0bca42e12cc31a5d3b1f011b08c99821673313ed30192ccae282
+91ec2c46a3b105257a38ff9bee1ba06130f72e5eb87946bf94e01591157e5ba5
+ba429ac6bebbcaab5f6915cedf2df304ad27386774c71d2c6a9f5138826305d9
+3a41182b08cb103ae39bafeb4342d2bea1951ed7f33707977028b38a4305add1
+a82a86b33536d496ab93e55bb63511269b78426ba7d65257333186e2ac8573bd
+6af090226693da26c8578ad655add3253dccffb4edd496d59eaf45fbda44a1e5
+4ff82e041d923763f9523f186759105a6344d3594a757db2b552c94e6bcd1491
+f6dc4cf79bfedc71368d8700da890e6f568ab09273e6ffbc07b9c51ea8fa7816
+8c2f5dbf1c4541d95220fa0132e31dde8135edb66dcfd6c7b0fb09cf71d8f7b2
+07793bc06116991422db601a38e2c2623bc4a333a23c3768e366fdc9baa3d83d
+889caa3a5bc8140055e6ec9a36c2981a30059d440f8da0f341b4f2f04c48f876
+227e3d54bace900da8311dd58b2760a1a185d2fa3a874b5b9f7abd9aa22dbacf
+da
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 173 /Omega put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 183 /caron put
+dup 188 /germandbls put
+dup 37 /percent put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 61 /equal put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 87 /W put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+/UniqueXX 5000793 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306457c7e62c1d269f306bd3402e266de
+fc3b5e7d8a8d2f5bf0fe6ddd40d07391df4fad4a6018dce29a2b8f692b29f202
+3a7c0e66de8ed85c14f1f8492167357f51a7e84cc5d92e0fee4d81cf7fbc8de5
+2d2e7bb57142033993f9c08c315abade8dbc4a732e84e142d3bee51557910e12
+cd8aa37c459a5e6b7f5269f59078aba3be4641a11ac48d0b625c8325b38ec08e
+4c9e5e7fed976a5650d99d82114f449b9ca14c4ec957702295a39a93ef93f618
+99b8ea06b092c3c1e503e6e436e0a9fa22576c8930ab3dc8c20f5d82b69cddf8
+ff4dacfa9c54bed5a3aa3ea5b129fe96be632843b9b6bc91b615581a985db56b
+1e01ca60ee69ca92cf5c0882ece62edad3e106d835348822400f0b66af658f2a
+e56ed08f8b0010571807009b73ab12a8cf14ca6c71f03c2a48c500f9d62266af
+154a6375ff600d9bac3f05ce34142d6867a79581c533176bb2f3117336671e2e
+44638a97167e2ea9644e31ea16c2ad2990ea33c54001e0c8156e6de8ab6a4d40
+a7137ba275f39589fea2e2db8256adc103d6f9cc038037a47e8fd469c5f98a5e
+3c15bd4ace40d340018b1cff7d1ed8abb0ac57b5b5a2c20a51957b96c453edb7
+dae5affd91a46d938fe0a13363001d844ded4323f1ee6d30012aea19b024a552
+315505535c85dc26bad31e09c50e6512802976d298c4e90d0044c362e6bf3ab3
+62a454ee93de25ce54411090c29e9d75c80ce26a84404bd9de3aee0e3f921ac5
+87f907572b8354a5c3165eea7e8b2ba4e333802132f760b41a900c698eb3d273
+8bea0aaf7aae96a558f08b61aec7c7d65b2889bb7b99800cffee5ba19ac90fce
+11437be1ddfcf0bca5670b543b9644a71c8726d0c1005abdb96f6e0cf7caaa31
+95017ca81519151c2c0b04f81e717c0691b63a76e9b25329ce2625b711cb7bf9
+9d23ec2bb5ec8aefb8c1a3b422ad617b3da4d49685fd44cc21a1fe5e1541163a
+b3e1594601d63c7e98801d7746474377ce93f81404f3570afbd5dbfe77578605
+917ab96963987e6efc2d3f99fa56ecae6422579852567f90cc90e4ef6d6f71d1
+858270205477e221018a375ca83c572b3f972c5181d18643cecb04909d84cf76
+7174b3c0c8ec69bf1e9fdfbc0fc7ed97ec67d878ea4ddac8caa522fdc6932df7
+21b81af837ab56b547d4799241310d6692918fcf8a46189a78d6638aad7cb446
+2d8774ec73d184076595c94c0b4a8233cd34f2d92f6ff94f941dfd589def2ce7
+90d5cb2159b953338c7384cb68c11779120a68bfa20b993d8c0313987eb96a2e
+a91e0d232c1e9f8f84a96ee67bef6abf0a9fbe98bc5aa135f9dac0db537855ff
+ddf467a6f2d17cf10860fa427e98cb714fb8c4c3bb7ea4400b4baecaccdc7fc6
+35fa5f89315c83f9c6e79c97b67e65c30e6b26bc226fe8b9c2ca7486bdfbc112
+6a2c08438d5eff32cbfa80af0fb4a3e3e3d2c49be516d2e4a39340cff787570f
+59a86d3388ddeed8529212cd42935f145ffbc576dd771be701c124303d8f3041
+42b60b5c28d1e957e8bad355a2fbdeade140117ec7822be4025c75a72a85b460
+050cd445a5d2cda32db63bf4372f1f1a9745bf1c0841a674cf4494e8470e7a51
+add67eb829004890d7bb6c1a4bc1328dab125048ee89f737eaa07490bcc182f8
+6bd2f1a546724e6c0dcf1648c6e729b3e684b3b687927b54b33974e2f4948f37
+45ed855756ccdcc6b9063dfc6389256aff10e45455d0ece267ba3241c34d835d
+c195dff0e642c69277061ba144944afda10a3bf4966e0ba0fe5f39999c4f13ef
+86d026c90716fafdd60d6521094d3ad61b34d84028d959b4e25f829c6846b680
+fdeec236bcb369b984a2b7b4e1c5a525b1cea576e64e16b3532dc03c551916b1
+e2641016ea5ec78a9396443296893478a75425d85fa234394973d9cc10153aff
+d534908e7484147f37c984650a999311dd8489398a6e2f358f53c5e1229dab97
+16980dda8f5fc487c7e74a9c8169372655dfef863fee4dcc5f953bb004c41f31
+99530b82eeefcf84e6d7ead84b4839a24d08b2d0645ef7d3b80c1b5b857ff999
+2e6421448a894e2def2068457e08e4d6c3aa05c95273151a677228c212d77473
+151c0923886d23f244517b7fe7781c90f68d857aae5205e66d0ca09b5971e03e
+32fb4056da9032b1417c6e8fbe0a274d838981569eb59a4b14b9812dc398a44e
+facc39c88b198e63b0105cacd5a2f613b4675d83f5b6d611187374fee5662ccf
+2bbf5cd353f54a149cdbce02238ec69b6ebc845485bbbcab08328c1616d712a2
+db6f000976be478f99808ffbd9421ab0a4087ed78f6299b5f77ee36afc796962
+9af52e1016fc17a924d4acb0fec6462dd45f940401909724ba4c7650df6fddaf
+70cd88690b5de0b7731051b952e0cda5818f4a185aaa5119e8fe9586f303d093
+793fdc6cdfb7d0d601287aea63396735493d347da8a43787177d6179e7f7c84b
+727428de9c3b098e7a8a100914c44ce560991d1ce31296b760b0c9dc5d0540b5
+7d9a7feda76e4528699538d0b635e8ab48981bb0f88aaef941aef8048550d6a3
+a135e8cfb821e916927984007bfdb9b31b24d27e90ac6ea4107ec9372c60dad6
+8c892413ff7625c0038739ae677eaefff0fff6df66fdc31a12f5e3913c4f84a4
+a0e84fb9bbd3242addcea08ff3ea70d5305dbec60bf835e742f3f48e1ac1ad48
+4de2c13f444f68321b827efe7c1939850564ae6e78d881626d1e4e545e906f7f
+7cf47a7b5b79623932a3fcff0e023b8c15b998796230590615132b07bab79e8c
+4699aef4190f212d702a96d2b6dc170a1e5c35f57a011c44aecdfb80f9f65712
+e628c1040f47f8ee05c9e7800600b2fb4ec5c603b64ea184114b2867cad2cbdf
+c453786187e740d8291a2b90108e7e1e5e5ff9be05a038c045d67aab936d1b5b
+c0eb620444194ed26b8574031f6947dcd0734f1a651073a434f19d86e14bb95c
+f611590387e23cb992cfbb6ff59e91be5cc89065ebb5a0edea94e84bd69cbb1e
+bc65ba56134f401d5693ce9a4b3551e8a76f557be5ae234dc4a9dad0e4f6cc96
+3dc05e3057566cce978c36a9bfa590b7c526a7ae65caba08a6475ad65ea51b24
+004285bd5f3826ef0eff807eeca27b6b3984e158132f1c788f9dd0558a89d476
+e57ae3e17fd81a357e49101714f0dd2f9597b679d3aa446b5977b445d66af22d
+e29fa7e2c2e4cf6ab96065978d96912c75bc65acd82fab4042e7ec1ff2002103
+3c8407deddf5b78078678a55878c45a510034bd777b8a0089242f64f647f6bb7
+2863b9514ec730dfcad899e16515ccd790cd97c5aeeb8a6cc6b4615917e71f59
+0458b754bce9cabc7435bdac933ef2b2c5c243ce240238376b6b682e867bee93
+1a41cc834ecd462b1bbc05e6848c833f57beb1a0ad4006dff96b6f3261fb56f2
+b7193e856f6ecd79dc91377df43a023c43d9aeed1b1de20813229cc992b8f21f
+7a0505c7c085a7cb9b2da0f67d1b72ee1e5284467794eeaf5b8a0c48dd1be540
+99195fd2135b3a280f104652eda72c6b2604f24fb1ce9a8ebdee61eaf7ce8e9b
+df4b6dce14331792f4407633b217ac31ff65f2608d415e7352a00669d25461ed
+1e0a9d450eed32c2c8afaa887a0595ccdcc1e1d5686f73bf14c63d060dadcccd
+95e2c681f13a0218f83d5d7edee651741e74377f5b193e0c914ec697765f0b16
+5b6fb9bbca4e07fd1f2d85a504c19a7cf55664f77b747310052226580b76b1d6
+8fa1662e1275a1f1abe6425271f9d1211e0914e1d2505e81c514ea5943596fb2
+cf54c0b01a99fa130eaec93a3d265a47a5ffb3fe973be1c56870dff546fe964f
+1ec70faa9e313ec52271fd24d6859a99f1d53afe99c646f5a834d0506abd4a9f
+630dc97f95d65cd75e7b41f36bb1f6277a0b2f903c15ab472255c7920eccb06b
+d4cc5a6b3384f24d9a5b7ce23d79b67f7da19e12b38de2830f225609dbdbf37d
+77ca043119996925f94c77030d32d365ec876c1be909d9c5c5886efc79e1b35c
+08b4bd8acef9ebf40d689e08f4736f36dcc3e78633254eed5a7c021452f1b758
+f4d058e27df3bf1215f67f03f6ec47753751c542de9e959a620b783031b8d2e7
+886808145ff8818395d0676049edecd10bf25b53ecd9a66cbe792e6120fa8cf7
+e6c1503726eb65dbba53a9878192c19d0754bd2686d3e25bfb38b173859e7979
+f6c5b8af696a56ed3475ce36ab962cb995d67dc3b44a0c13ae9c29da4e642903
+4bb6e919ee3e6a607d01034a6a7acc7a328253355e28c909597e9a70e56dcc9c
+813f9d8a52f9a80a084f49cfdf4892d390fb7b6ccc03bb4271fdef33c671ba54
+bd6a8ab973635b3a36552bf8d0a2ca97cf5637523e68b7d1f613f8dee07138ba
+6906293b637f3f086981361f21a8e6c07c432c52bb319ce296bbf3778918ad11
+d2a307b753f2a49eec0e7b231bb7505addbb0e15074b654cc1cf663d88543c0f
+ea7a475adc89e11f5e629f192cf2d641f639121eb133bb36ebb67c50e54a21dd
+53aa6ded2096d257d8a2e02044a0a191051b61b00272d50e9da14c480bf17896
+f1835ba3a39d4ce6776e20ef592a7d76df1cbb138dd6f668b85d33ccfdb95d7d
+317b01f46713bca8f5d34fabddf3c400c624f29531c64cd88a0e9f22b687a98f
+8e382fbff5501fd942854d5d64e608f4b37a8bc5697e6912dce46d935d4c3f99
+7068ed6579f6227c1a3416f7cbdf1689f59aef58a3ac582ee561487a47c6acf3
+781870216ccef7692819844df8912a8c59f5e7527220d08f80cb5ba325d0748d
+54f9249aaadc854ea1f001737232754ecb10dd950e221fc28e7aa9c1f8768299
+6c99ed87407ace059e7af6eabb47bc0c71d9f9e61647af868d8cdd5a2f5cc792
+85cfec8e4c668b11c8a9b230743c1ec55f59c4701a55cbf4c72a36f2b7397478
+cf4d08bab9a72007a2129951b54f0fa1003e0c379cf8cb8ffc5048558b36ae01
+7f9a0c4e3a5cce904ce4fabb3aa4711bfc7e9d43abd67766a6b39c9334857e9d
+ddeb5a3fa3c35af74eb73b39e4877bc941293d17625831644ecda43b2ace2d13
+e14aaeee80bcf0e0208b9f9fbe52aac7ec2abdefcca809c4e8b47b03ddb25322
+12a4ccbb0348979a7c200d6f81dfae9ee6c79b3d955d77032015fc1881841dee
+acbdc1ff7a4d64b40d448290325dbc176830728315068eef16655b9965b34a24
+e26bd4866c06fc2127b240578ed04abc51311e224b0573448b5019cb0736605a
+3975aabc95ed7545a84787192653930e7e52eb73fa2cd326dc695f3ac0b19956
+0363b3d197d4a485b75eef54dbaa9943e23bcc044f2d90e4f35d18c3de1b7a7a
+ed3f8dc2baa94b0a17395bfdd3b72eeceaac83eed85d3bbdf8c106f17532f49e
+1707f507d5af08b00407021adebedae003cff910345d7e5d80abe39801fa7e5d
+cc925ce01bc171ef13c05a0f2555e00f7a05f5a9d4936bfe38f95cb73384404a
+ca1483b401552522625fede75c0452743deddb3fa16220bc4ad9bdb5d6f5fa60
+85fd4c9a09284819c5039fbe7b6f3445552c9dcdcdc473e19795dd638f08e0c5
+913ea551faf07e8d7e2d7e0c6294e737e2f0f90b0178024e2d85acc51842f30e
+21a1a424d2078042678a50a62ab146dc6dfccd9b079e7eee9adcaacaddbc8dcf
+9dbe4dc1941eb5d299bf7cb9139f79ca7a2780edda92596771d1b4f4f15cb91a
+ec5cab34b3d0ea0636543320bcf353240ec17a40fe2b9920382a0ea059901db5
+a8d209436fce13520cda1b36935d116a4624137492bc15bb1d317a478501dcdc
+cd26a0e91766bee014e4771c351219edc81232d07f9a6abe44650df4d33e3598
+701da27a785064963423f93aa60754a01f869a7ed620e526e8776e7b814f281d
+3d92fc9d544ff6e95fd83a6d8d48ccd699f6f23d366b2bfb74109c236b191281
+fe8a964f646351939249cb73ed84b1fca53bbaaabc50b76fc687cc09ad73b91e
+5ef09db7f475353278f88a65af80ba13bb54e2ef58ed016b0b4e3a0f79d7d795
+08f0450b178f18ee95321d53937ec61fac973eacd00f4aee0d8517c278a04c2b
+f8502aa8cb156a40a0b1af19ac871cc6c3671923c53a0f560344075ad577ee8f
+68ce1466845a6c6ef42972057937be656877279a65cbb71d3409991d0675c3fa
+2d2890434a85236ed6dbfe7ea2dedfd2d73352591b6d0ff8b68d647dc87d9770
+2f591c41799effeed13b358d6cf2e6b545acea4c087f28f897aff96894428ec4
+eba1a4da8007c210d18d85b0ed56bfb39cbdb714fba923af2366cd24dcab8a42
+70f3717f048181e0dc988b99161a08ce06ebcdbc0461fedbf4c8ac4fb0d152e5
+7945af4bb0e22eedce2b3756db37c664db363528c16b8e754bf207cbbd67198d
+af3c93f379043738599c2b6f01e100d4e9c372f2b694a969946338ec4652bc30
+ae77ccbc3a8f397133b3f95335dc988d3661bb028a6c4c5d9951120bc1b7123e
+c9a44761587db61c9c924dab42d83390397d8acc5b62303031e1abb4a99f33d7
+554136134a142e62466a5cbea4b7bd800c9e5538b9088f873eb2814a6d5042b0
+853ced5330e6a29023bf85694ea2da016fbe0bed1716570a0d9f5654f315bcdc
+cd8aa7a8338381d2b52917f89f886fff63b389b6092e27c7f61418053bea4b42
+bdd9c4517c988158382dd52ea26782687c8fa2f7a7b556018bca25ee4efce92d
+210a79ef40c5447fdb8e464fd6fec716cb40c3bc88738389b9a281dbd6248235
+62ab6d2e7529eb19883d5fff404f85390caad9f02edba943603e90acd357f803
+eecee42c74679f599202f3efabe60751b5da0fbf580f771a3e7e34822f778710
+7ab37a67d3102059cb1f50978273fa88f46cd5cfbe0f59aed186dfc3a21d7722
+eff3585535abd50f1bc49dd294b730a77ed2529393278a9022ed4a13cd63db0f
+382741d7b0e2ad6e42170cf6ad78313411eaa58eca14be080083618fbef55611
+9082973e87506d6d05277b8e49c3192e49f602d1ef1119f40a673f507004596c
+77e36efe0a1bbe1e86bb937e5af17fccf1611f751b409c4741eb7442b6d87534
+05c6d40ba245373f270b76d6e6c7e2902f501369ffcb06f2ca8b65d864a03226
+d7a26f43f42a04a49bd69e3f47febe8731c0fe4aa25167d7369de6080d940acb
+dfca348b324376904fbc4ee24de45933d6659c9acdc89e2655a83db982fde219
+72dd3791fc54b3b19a95886c0e40ade9729aa2dc5214181e75ede0bc1e0635cd
+6196ae1c7df345ffa67874a9c3dd2c9bbc7579ed33540c624d7b656a64dbce90
+58e48cc5664c8169e12233d0d062e856391de5a6729235d4a8b89d629513aa59
+6434eec79de62539370af6fb5ed657d65e156d59dfdf0198787902e2564f8d24
+2d1b1cbb77e02307c31118f13edb692e42c277a1209f335a72383a63ee0aa956
+db11164cd0bf836f5b2dc39c22eb33cacfdeab3e1bead0c9ffe344631773a58b
+e3ff982c32fe6803435c1e74ac7ddb241198fc4f8b8976ec9e3c9aae560cfa95
+6276f7a74dcc215144eeb45b799411d8d224069eebfde3ce618779a9fb7c664d
+4bac5e8a1d941ac1b57d3d2b3ac6f26577671b6dcbe9b151b81b49ee20217bdc
+080e995c62e1642554895529fbbd33fc2103bfc3ae9a1ec1e7507a4a765b8525
+3c2326c0173ddd91811e93607bc01031fc8729c0615207c271bfb5f9146da35a
+b40ec02cc290432b5f07a2b5f750cd3183b889241aead464195769c8b8bbe347
+f2a78d137a3fa183ca7cd471aec59be9b5855e3b7c51ac8bef3b5d19a6b8a079
+f7df0a51fd068c9532da31347be76ef043b37417a79b0506d519245555cf0971
+9160f5bad2c7c1e024ea6716baf43fbb1215318e60bf0f3a8223fec735cabafe
+03cb32f2ebdb9033b0f30f7c59bd02c1c6c072c702fd1eb12fb8b10c4d331f62
+e0fd9a66da7033c6cf6af7c91a9c5d8fc906d71b2a364c475dcb3344b629ebbf
+b3b6e9e047a20ec7eb7b26fa940c201fa4b2bb8ad0921c539a21025b89b08a50
+48c6c3fc686c639f1489a1e4dc27bb85c68c3b0a305f4e23a2b2ef6503f75cb5
+070aa511b242afa34ec54255f7fc986519180ae7d7631fe17e064d942ab80088
+16ed3fae4bdd0346f0c193b370953197a9439037580f676e86e67a9a16ba2a8e
+a07ec8ce1d77d484b5b4f862f54a6affbb36b65b65091ca50dad156373ae0f6b
+30bf5934d2e88aa7761b31c5b51f6a21df607fd5a9ed014125be3a0f6ac05c20
+737279cc58fcb24d191d5f1ac51b6cb797a3fff8ccb05a970eaff61161ae8362
+812673f9c316b6635372b922d6564b4d34ab3a69712f2fb8a56dcadb8992efcb
+4f7c0a5b951098760ed708275eb621463dd822af1f184b5841e944ccb446880e
+c47c297b041ef57cd296fae1f1cb3ff219a034c81198a6a4471f8b4c711bc189
+7e1383e5fa1c6600625dc7047ca368c6e9a2e3b4386f163a208935b7a82da9a0
+e426acce4e8d2640246dd1433168d110bae7bfd872d6ea9210ba0be00c43249f
+ee3e2aeea468ead5b43b3d6c912a4c0d61ae2f87640ffaf14941a88b41f88e6e
+41a8683faf4bf86e1b1d15eba05a6119a75188525c2a292b1a987cdc91f023cc
+802ecbe7dda8cec659eefae66486b4f47919a0c95088e71dabdf05a4cde1ae6f
+265c3e44aaa076881f7f1cb7c58771ea8456484aced5abc72f7ed86d138683fe
+998e3aa695795e5cd699fc29a2e54b3b9d1f635f8a30ef37dfdddaef06c030dc
+26fe2a7b8d57825d1bded84f4e48d3b10efae44bd18a0bd8e817bddfcace1693
+f784bad0858a4fd39d3abbabfaf756a576c3f21ad20ef974252043a878ae8f42
+cb14e05530d6ea6b67478ea57509e6db2d569b432928e07cf8df9cecd50b4ef4
+dbf08ee58ca12cf2dc7ba05a6b6af8e1050c40434d086006601257e0fc2f3038
+a380a6a506f4cb6dec7013770ec7b805cc9a450b343ed971aeb56f781edc1005
+5bc792886cb0ce24615095e42a4630993779649bb1c122f885e2d10b6eded35d
+42b2b8de8849c54f5862382be4a17111f8663cd0a7a55287eb0c2ad9013e12a1
+d6d5260282063a5b677207e760250907f8433167e6a2fda41648b0ccc4fe52c8
+fce8aa182523788c77e305478191793eff6c5755e2b96de11e8982aa97600fa7
+b935f91a23d374cdfab53602dc0702dbeba2501d372ad5f75a2c9311669bab56
+c48526f70635cb134031cd473d9b39c3346649ac29fe755cb302c437f82f8bc7
+eff1a0b8b4d6d5e99a41ff9077d02321d69ca6185bda30c1f0a2d619f4262204
+66ec313492354f05e98a1dee582fc30f408ad7cf8356f9d6251b65acee449d19
+7eab33fd7bdd3a35a997751b5e78c677d356b3554ae21f251f6344b8e4d7e978
+a8df637653b29e566bb6fc6c62770e3b1f4de9522d3884c96b5c2bf8622a43f6
+c51891caeac74d1a931fa7f934acaccab2ea56f18d569cdb646fa29e8a9db22c
+b4cfede3fa653bd1aaa76e46b5e25157cc9f0f62953ee8ebbc956f12c11838df
+9dcd6b3a003947de89cccae3710a94072797d38bc4f39cee8128b5df3091797a
+412e9a6515b582e8e1c13cf10aa1bbb711b7e45c1adf8c6dc1f69f949ae58e81
+99b00b8ee9f6e97f6d67b40ef7d9e0f7bc633748b648dedff6e20a6b0a0024d5
+62e4d93407f478b89379d6370a50da378baf2f315f680c3b88c73f30758e16b4
+3cf2823bdb12b07403e16ca35cc64d64de35e363b70a5db1ffdca7e5ba3b3107
+5b450e60b0d3e39abd1d2f86022b796f9280bc49d9d9d4bb126ee8dda08babf3
+e6f47b89d2ba6ca219ddad1f5faca3c53336a6d8e8dce6f27861541bdb301382
+60438d08317b8c20844d6f1837dde89bd59a995bc257f0d7a86689941c43b604
+1851503efaaff06e861bb7b2196008de720e559d1bc8574aa186984280ecc4c7
+0a6ab59647a03682afba890a7e25f8bec7aa3a9d988e8c27578234180a625e1d
+8ca5de247b5ee6a99cf5eef5f920a1a3dd240ce8406d89a6d3f79bc19b38075f
+25c96bc22d44631544815baf942be1b98b8ace31fc4b1a6dbac6895a3fed7150
+d908942f84b3301321ff7db5935c43971767db35b066d9282390bee7971b48fd
+7cbf3cef7a27b67beebc961a6b274b339440a871a93ee3821241390a93c157aa
+96a32225635d39a4e3bc4f1141738120ffe550c119f0f41bf0bb40c0e6df2db8
+6b0526692345e7b947502b5c5cf86a015f523c4395df56771d92b3ff23f841af
+154679dbf406f488238a0a63c83cb839a8c16f8fb9e03f4de74030634f454faa
+48a701ff2f0620579efd22f7091a6126aaad5b14bf7c86da35c319f83eea6318
+e14cde547d64e54d5b4b5b4be078a62e47f924241eca8716fd1895fb35b92b18
+68c3a84bdf47338e37a6729772d61eb81e1a19d8ecbf67a29526cd296b65ad00
+fc79a13d7008d35d2d3cc56d1d36edf555359020155c6e0a55899fd619415ac1
+daaea993785a041fb64973e210141db3616fc9c9c50e1efc45f6cd391f11ac43
+6cf0c58ef09e852485f179120666f79f9717b7887d54cb842ba4ab49676f35d0
+6fb7680536b3bba2d3bc8a47bf5040fb062dfbb3ed944ca1d3bb97412a6b40ef
+a1bcffd6e24ad8090f5f5f4b63c1b2ce90b17fbe22e13d7cd50739d8852949ec
+c859552efc4a3ffbb9a060bd0573596a4b8f0df2de348b0bb22f88601c2e7e83
+71cf25598223ad7ccb031687fdff5875ec34d5f1640177e251ade00e470f87ce
+ad7c1c8096b9ca6bb8924f042083023690fdf544d482ad5925a70e86a82818b7
+7942512fa33f8bee106d34cd2d60ef88ec7eddaa74da35de92aa70c31058da35
+b38972405a881d488cd4300c70971612546ac159642b4bce8e20ba394fecc5da
+816f004368581f6a937e95169be354ba5c41113b90ec6187e89caff1eb8bbdf9
+e22b4e593aaaac945ced6ff961bed1b692d924b0ba9f21ba7bf385baed92aa72
+505951950198f682a8de6604a57a9a8aa38f3989ceb6b6bc9fc4585264ca375c
+de8001919083374954810ed19b3be1a1de1b984d71749c4e47866dc68b4bf4c5
+a64d1d02cfd67d4ebf9f1f4741eb6b7a0b810358918dbc56801f1737ecc0f67a
+72d7cb303882b548e68d65818c647daa27f1aa13ce6fe5ab9a648e34a6ecc64f
+93891f2660ed35875a3eee8704a9f5677881ff07cad4bf035e6a45eaa01042ae
+ea51178c85a1ee6945fa47efc55daf71ddb93013b36307ead21a04fe0db4dfa7
+0d3e70294679eb4d6b78c8a4887394028ce712e38b0c02ecb6adadc498226fa8
+e3a1c751f50845867fef5118847e331b46f0d461a56adfad1c0a64a24a5c422d
+c116f5f446d3d394f9f790a8fb48068d2265195d2ba603e3d064c99b75ef2ddc
+4bd9432f8fff779a7d3fe2c1bbeb8de2c49236b421d95efb455aef8437c85f39
+1d300ed12aa2aed3e04482ca6d38997360dae6b41d73f78665057255a377c69c
+fdb06e6f551dd44553eff40ea885284f3b258e97e2b8a51f09f3a1df35e026b0
+b03cbc5a7f909fd1820172a1380c5a3c18582ad96db56d3a6168f35a9e8a3c8a
+7d3424f30bbde3519e5a6415c58dca7f19008957720944729803bf617fc7d944
+5c944b45e050e31d50ea37a3cb8037a164186997d540a6c5a102f03ebe29a6d1
+bc914f6583983c387b92917139d1f763c1c02e253b3d4163e1e64aa39643435f
+7fd01b413983dffb99d6077ae2c06780df670773261ab6559671e65087400c63
+937465124ba1703957b9899f475270957dd59a68089d8d90533bd2505b35693f
+e80e8d7ddb18e60bce1bc9c6680118e2be207a6ad3ec28e867b575e6441265bd
+f8588227c00c5f0593075cff76bcee33a565652bca1f5ff62f6de2fc579c2db0
+c2429602aef35f323d92064853cc4937610bd8c00dc4f3d730957c142218c743
+4c18c8750354fd4969953f2445e67b8185da92cc6f542d54ebb71e050ccec710
+08eb72e129c12ea91c4108a0b8070e1fa035c15b1a4759a5ebfa876aca7bc6df
+b1a826ea8b6a195fcaaf27ce75db3297b647ee727634d993b3130f5479a43c20
+7c20deeed2ab4057789395e4de8c33baf9795c93adb8927609fa9276c97f03b9
+57674d6676e9d65ab8713dc3fc575bf51c660ecd5f437b91013b7f3a5dba39fe
+7c8b6e39a2d093a88e5957e09bbda3f92fff747758dec075b79e75209c53b44b
+3b3b8063e803fe9bb87aae501dbb2961cc167edc8a9378d4959e224cf709f14a
+5082edf901a671654f81a61436a12be5d84558df32d967b313cec81f92de9996
+531ea8593c1ef6e8f95a35df3b0a3839ae1d443d086c33b008ea71f418ea9254
+0b130ef8c971cadf4813f62c20942f4ddcc86ac3b5c1b98335342b0bf668f721
+4b3a7f4a379d83546ec11fac7e873d812ae5d978ccfb88d3fc6aefea8b5661d7
+06b0cd05657e79f35e399ba945150aa6ab133fd17243ccd89e67c7b77babfe72
+4ad3d4130d00d4cbe53675421c225235aeab4588331ef5d2db88e52c8a4bf4dc
+b9b560b0237d79b484aa05cba1d53dde222be1e9f567e5d82aaa7a46230ae68b
+ff2e3efc566549a456caee402296b8e474372305917149ed302ead3f85a3c76c
+7e92462e0841b7c2cf4f2b3ef74e88ba4096fb07e15cd075d584d230cc635717
+27944790163481bedc92d50ba86ea7015287bf310fe08032413f87dadf299d1a
+98ab048aeccfbeae8826e3ed9d6208de12ad8b840ba5cfdb9f61b2c3051fd1cf
+0d6b72371af2b14aff0005d87755efc283d0e6c9a9951d5a21003770f31e39d3
+b4ead17cf1b41cff5c9bbfbf267137000df1dfad03355fd813941352a2a24fd7
+fee56069f25bc24de962e43111eac48220396c45a1fc1d61b65452eaf3df4646
+df541b66e9fe3f2fa01bd1a13851fca1b0589546c901124ddf683bebf162bd52
+df7328087c7e71d09534d95c0923be736c51f1989d8b92c88315ec1979aaba41
+b136d8d5dfa671e959b5b02a8a68cd883aa81df667eb869ddd101988528df549
+1ae85c8795bbfa9291e3591a1be00b1b029b9c36439af657f681ae0b3afbd509
+43b0d7a4f30d459439fbc4031b57533a05d8dde1e80774c596b30d98165f7c4e
+dcd916bf9a6bdacb1e4fa23215266b6aaec12a74c94459d08f8b1e892ec4bedc
+9f501b0c5256c40572c41ebda52ad81cd35640eeb8331284a1353d6fea23bc9e
+f25453b0af8143a1773cd1d7628bc0533a0c46ea90883d8fc44aa16de9ae0236
+9baa269b2c4ac4b0adf6f9e7db18a8d39615d4058b8530e7bd49efe57c27b18e
+085a8af1ca08dd84ea32edce92be497cf45806a3b6b5745f9da3beae5858d06f
+2db662f0b2699685515456826594292906cf86f3010aa0d45f9b294f1979db6a
+c9a09700ed1da14c2aa3d26ea4fbb61c6dc9c9dfa90eba7120106147f918889d
+4a013a6fb8084693ed1a16ae16d26227642b2edac465c03c6975f54ad948b39e
+c6c57944dbd6f43fe47bbb2e3f6eb8ac8cffc336797daa71201b36ef473fa8e6
+671e19d8f55d497839978536aad006581e11a54da55d598e118000b86972fd3e
+adee82f8684856356eef7aa4876adfd2a42a3ad43cd363110cff99876df6e191
+3db0a786cf52a7ec5efd90d2a61ec481b69af9ebbf43837576bd52f215c9b71d
+5fe166f6636c390f31ef9ec0a04770e6cc903211d4bd06e40ad4422307a98449
+51ac6df003067c1a05d01148d97b365485a4568f03185c36294bcf2e1ac582c0
+2698f13bfa995e256f648d53f47d6978d67b6e6c9317a94b2c817240be36ba03
+78e64afbfa66d04c84b8be48a224813403d78fd246a802509aa41380ee965e34
+6f76d96e578331b6021a3ca41fadc8c186e1b573f799648294c1319c359363e9
+b32fe2973cc1bcf5179b273a4a4d80b57b73f0b36c793a035fe04db3901d47c0
+9592441f3432849782e89e2b0821bf12743d306f59e0c966233dcc65eab55ed0
+305d7e0c07ce66eab46fb92f936350dead55133b316ae208415f4212ab731e3e
+163fc04149820149b70aa18e39d8db85738266217c6da7f6360806f7f29137e3
+d716a57b203d816e5bd6c0a7bb0b41748149a29897c13781b45947165743d689
+ab25badbb408c9c4f25a1fe4b8f7ab0557ee99e0acd311acb8e9390a5eaa08d5
+52c385a3fdd0137e474e6258d884eb94f885fdd9b930107ea9fce670eb2f2f59
+1aa8ebb521af9684140e8a170261b831f7967b1c22396cae2985dd9bb75f282a
+3b7f8789c8e09d85e93a8cc49d6aa4e6bcfc4baab801686d2900bc524435a457
+5cbcc03fd1c122c98ca2206ce8dc9a397eac99eb2ebb3c4862daf4f64bdc3511
+be0cd530b896c2486d6b0674459180d57539f951b3d34ff147e7363f54d010c5
+9900027ac4c315fbcf7eb66e34641d8ff8968311459192726e846951db077e02
+2d8d37a1ebed51b349098aa7e14c50f6283ae81b84e284abed9a93c46dd8a9a1
+b5ffde4e451e8ba084a0e5105ca7eca451c4eb47bf3085af55f5f1bfaef0712a
+5917215369ca36e671d6140770fee0d77a0e995bc0f2257d57602a4ff414161e
+7a843a8c48802d1407c0eea2c5be71fd60a2b57ebc13776db8200cf91b5b3d6a
+d02bc2942e043762fb676eecd13f0a1370b1055b08e1310d9edebc005a51a39e
+c2c3da418aae46d77a67c50f5bb3c1ef07137c244607781c74f5719ce7d9e9c7
+6fdf892c3792d0af5be5d61ad086bb28de809e6434ffb87452c13ee93d93540d
+d06728a1d6eaa771a281f8a10ce78285f6c1bb7547b79ea831104a2e8632857e
+d5a572a5e26e3253eb60f4f64ded864c992bc11d8a9360dea2c9034d1c25f07b
+a6bc4ab7fe8ab5e598ad462e034aee0f764de3de0808fcd36b61e3e2b591064a
+79bdb2747b2c264200182eab8a48f65a294e8d846477f992312a6097d2475be3
+fd39a6ec379bd030e7b8b6c3aaf0c54394e43de06485e52e21a260a21c5be88b
+0ad11b05ee62fec2e6066f95225cb42b3328954437b5a08e3ab060affa4f9e97
+a17b76fc6dc328cbe4cda924f8cba16c2b050048ce7f75d44326ac3d2872ae53
+93ea438a8cd26edac9a7e2b0edaa94e4f9296a10ffba3e06115156e710d8bd8b
+7d19fa3d981d3fbe43bd58ec6e6a367ee9b32c29f8902ea222a4c4ecaf68d6b0
+e938cf5614963f869b2827db98966d6dfaa1840bd6001249fdafa5c007eb0a7a
+df3672ef7e5dbaf269cdbe248f3520ead1ebdceca650c8e984f77fb661af2dc5
+b7e2ff79b936df6573d9b41ba6015c15905dc3f6541eb9f95166db9299052756
+42c878e49a3138de66df07017756243fa6bcb68b567f741f8bf474fe486ce672
+018be8d5c50e7d468f9f276be0ff96659f99b777b38b877e8e335006a16f8435
+1fa98ee55c474a4ab98c02fa682d2efac7431f74595035a608418195fc20aa44
+21f3cd872633759e1b4b8efc9da8755893135ff222618d9a772cbc2745c99ee9
+cdfb5b6000aa241d0d126a0714a9cd3c382c067bb0470d44f056ed7b69ff2a69
+b2258f0163fc418c53e484cf3f587f9ce29b8f58c53cee6d2d3d0f54eafc7f43
+576a4de9b0af8d99a2bc433e186529ef8c391c79758331c81249e0f72e6da703
+c4044612e88ff5f22e33860cf841a528e302e34faec443517d0c2aee2a72b409
+d03a2e206e0034579b54d132c6303b0ef910bbc38bcf7ab55bb8298784333760
+e986244a91dd42bdb343baa25a1db3e452b3dadb5cb2d5eed2aedc0b11d6cdc8
+80d970b943b5c975fd04cc9c8698596ecd942f450fa6fc89a7c25bdc8c58a9c0
+5780f7951ce164b054a515079ce4d2213ecc900a33e7e4e7239a019b7a22b934
+768786e5afce04cad1e43dce8a7759e5430dffce990a83935fe01b08fcb1879e
+c5f3399f1ce0b07e7235ab8c97663df04d240bb6ee5fcbdf15501bdf39200999
+3f5de4d1783ab09c86837c6297e6f9fc9b9bd0543939bc20f644829f88a51d17
+53e76ac9a841b678ea2dfce823dec54efa8ec1c7f669cbdb7ff5979de55ad28a
+ef68e6605485898bed76de053f4a74a1cdb1952aecc0af81df8d59698956351a
+17d83d368602246dfa3d7635a9c1e2d18705b66e9d31f914b37c10c4774509cf
+057397eabeb13484b94ef12dc8f9ed7be67f2c7e166da01699eb7c0618e647e5
+cc0395d3b2ee094b45287c65ebb137dbc75da61272521b7796f5e69161c53f27
+34ca29764854d4f746897a0691b41dd88ed2ae4baa8ac1301de7ebdf13a32c92
+e2b06c2d80e7e36f230eecf1c209230ba6d835f79d4a6a85c3e8859bb68c8012
+f856f2f6ce93b7b977c3340c2023ccd8c09bc7bbb974037b708ae8c917139d8f
+d5b1d837716896a32d3ce3cc60eb58a90c68be36606acb58b74d8669171622a8
+be78ede43e4db73215e16851a23cf8a7e7f908bad5bed2f1d953173da043543d
+467971a252c979a334068266bad193414580a97478807917c71450286fafa05e
+f2f18faf99cf3cdbede5f96900e7462069d8c48fc6ea84ebaba38076f6c7dc22
+ec384766fa346259f8bace02460d60e940e105612f111d5b2113ee986f75c8db
+bbf167145a786f2ac440fc9a46f66b60099754b5ca0adba961046c64fce5dfdb
+6803416da70f4400214a20b719348acca0d6a09dadbb9a6e91c88d850a9b4fad
+ba9a42f20588e7297dc328c5d8978ca6bbd6abe8971dc719bfeb049f9e7c4e94
+eefe858aae5c2a3f8d494f109dfc7118c1223d88a7c092a895cccad5327a7cff
+855da5eda9bfaa5194831b8c042de1f138fe68c4f361c6bf4f9cd8631b95fa19
+c25cd0634dfc802752b30f77ffe17c95a1becd3cb6ecd7e747ddd95287580820
+f6551b7ebdbc276da771d2009a6434b04b0330b1edb084811a9134062a959383
+eacaf27a5aabb2dd8ac08ad41a1c27b53fbd4fb035067ea25f8bb2f8a41fe7c6
+62a4e37c3c823e49090586ece9222693a0f2a211003893a7388609dcf9ab4b6a
+677f76ccfa2fe07b4d1d91ed0ffdec12c0893c314dd7df80f94880e778bfc3f8
+956b11bb28b4ea57cd005ce3a249fb99eda747e795b194609e11c0762fd84b28
+cceece74f458f4563e884616c009527953ebfc8b55fd6631ee73b9601cf9815e
+f7cac1caafc2d11a2ee5591f1509f0c7f189442cee1c82915b7e36f631c38e0c
+a8d9ebdc22ad4f05eb43b66b653c466a856c91b7f18aea23327a707d4b1eda02
+c10076ac113be228d9651cda58836c959fb01b463221c451eaa9177fb49bf045
+5374cf462615242984d133d6bb73ae21a24a263df6811a95d73db460dde9fd5d
+35e456bbb2adb2c537ca85647a0e245c9131abbbd2c0c7396f2b3fb0869afa34
+ebb906196e3bae7c354a6ee7f7d669a11b0779728e7f51d7bfb38fcfe52beb0c
+86d147cb406b0efd378f9d85f8ccc10a6baa72a0c5df41412db1124cd89b4351
+70fd0b8a6e0d22db447d69da8261fc30bed56ca0cdc177ba20db2294fb02d55b
+17556edbc6752d74914cf67ae0efb3f7ee59d11b153dcb9bb0d7098913564142
+a175ddd904500c56297ba1b94b38bbc056f8349c5782a3a37927c35705c2be01
+7d7c07082336e4200da7ffeb1111cabe454cd2b6b6ada01c56491dac348502b5
+378c2c44b6cad47563e5272f2283f19c41c6676902c545181bd6e7ef76be5aaa
+b3885ca35a809fd814051446571a2e0647f1d09993b151659f24840bc5d93c7d
+c46211b5d5222b59f7dd7728252395fd79c8375b7e4519b7ddbd91557a60ee37
+ea32c30132689d75bbb8e5af594adf5c0d5996a14038094614ddd0701734fdb0
+396598fde29b3cc79fe7734b14b6c6ffb0684ea0712fb1331f55984a4f4e4f25
+fcd6e04015d4221bc84fe1f6829023d4c1a9f0519a0a5aadee18ddde85abada4
+67852a764293cb3671cdaab6b6854a589e35e90398a3665c07c8aeddba1c84f4
+bc27e95ced1a6bf27ccc1da1afc6000d3f8ecd7d1473b64903d6bdaf75699d55
+76a7e66998c14af78f4478799ec63bee841530e42643d6387c7edeba9eff9497
+09d4769e4082ae5f02682c2e4a85f942a8b5401c3d13e8ed49ee376dba037466
+fa3e241b24dc52eba4fbca6777a85799cd570c4eb9dd7d749aec6ff5360d5aaa
+807597b1b177c53e1ebeafa7813306f3c230c4308ff21326fbb6708964ab3862
+10306b17b2ad59f6ca7e539ffe115650179ae84a3f4f6f3bfcb5a61952e5bac6
+68ccad58f94204abd32435b5ced40d27ca314e86eec33639d8da86cea0b1e1cb
+ef5dc3fa84eae3d7b53f2f161f41ef97ac56a2a5f18c65b08a28e76fdf33acaf
+195c0d03266658976eb5a453f276388d3243e9ec32fdc4bbd95d30ce83674936
+a6d6afd6b9a0f2e81de41f14686df39941b3663978afc290d48955383d6d8147
+f2424dac49dc7ff4abaa8b61ac05792977f93c98f13e788a3403d78fcb980ea7
+ffece40499f3aa1ff2ff74d3f5bdafa402e5cfcda56c7ca7b6dad0244e44ac4f
+b05870d4470801501967748e759d1c37d4707670c580031d5a2b0a72900b309d
+bf3da06dd7c1a2339925bd0a0445113d8068a0c44aed9945a25addb2fde9c761
+3fa157551657145aa0708a3b943371dbc46cbba84ceb03ac990bff6cf400030b
+dd01308f48b5098b9ebe65ec1be2ada7812e5ca0725d5d4edc823deb3912f1cf
+4a743de6525a3149f454078389cac1fee1fc54039b37029dbb91399ce5566142
+991992eb299e7c7330542feea368e8e628a333d54e12ced71d86d040a277a6ed
+82102b8241a5214160b99af10974ef1b6415c5bef288a3feddc17b528ba61cef
+fe2b1c670e1f6349ee9a592886e1ec7bccbbd16e52e7e6004feacc18bf4ad79d
+b12e46f5f1c5447e7906789afaaedfd877809aa8e7f4a5fed7df8089e47b9256
+b1626af2dd97f9207084f5006007b6dd8599afbc7ab5578150170788bc0dabe4
+f6983fcde0ca5051cc2ba85b74e53edab259a75b6c2dac84a6e7bb923c8a2dc7
+53ddbba4e25541179ab1241a204088c782c84f4b4ca96e4f900fc84f19c50bbe
+711530145d1d4e8b6f44b6fe9b2ba72f271f0f195e0febf40f3f7f6062bad1ad
+b94d58794831c3c4cf4fed0f6762f1d986fc240baeaceaa152ed649410c0513e
+067cff1be8db40efe7f176fd957c2f53e7051123e6993dd491b32455718ad38c
+16e1ea5caac4ca2ac68d0fd2a72e96a03bfcf7dd7ae703ed407c184f38814264
+07debd65d8bf94d21ce951f3aae85c173339afa40bb604657b861419d1f45598
+354b7d80aad16538593e0c4c679fc5a8e54737615887bff88a4261cfad867467
+02c962d332a5bec77caf18e240d77c9ed5f47c9b705c3908175bd3832ccfa185
+b038f26570b6b7de1ad51a4a4157530f52384a9041baa304d4047531383afceb
+b03712acd1258c6da4dd67c8f1899d3e4c3c16e44d3a72d7910d314c027fb34f
+7a2fc606fca41e1cdc871d1b668dcc8fdc09cdf0b4064f553a1a8de49b66487d
+11fa474ce190fec79b85315fa41ea678f27e875aa2f12e2d10ad849bd1091612
+56737794ce72240ea2ca9b300ffe037c15acc52986e83d2cf5db26ac25bed011
+a31455d0d9299e0eb4de1b0d07cd720363a7c606cf2c91c57f5e978df2002c0c
+caeaf08e3a111069a48d270731c07eec1da2dab8a8745c9a0a24654d78c477b0
+09ac0efe89c43d97bc68748b4cd0b61f5f3b3cbf72f97bc8ba9f2d974d044433
+260cd1411266133134a576cc048fcd75aba0281de26bc9c6dd1eec027e6a8c2d
+81402da5d11c52abc523c67f855648ca60a79fc570e8aa681210b6ff818e97b8
+9a15d59fdc3ede2572fefec8ca472c2dce41a998d4142719a2f21f2bbda3b4ee
+54dce91d099ccef5950fa639374df767551f704a07971428244fbc55e293f557
+ab2be3be535665622c6c3164f976b9799a0897afc1d0ef65876551e5efb62ead
+d4d52826ffeb5d50c20438740b578ad5caa5fe9d0b2948db2f3d24228f87b120
+90337e49f7437004b73842d4cdc35b3f2fa2e71eff04ada98aaaaeeaa9177f71
+a15c3a5fc02244e4d53fa7062971789927b7196228abf1bc3cc00bcf0a4e4b82
+5770eea397de06f8e5fa186444373df3f19560ac0765a8e4603fd430a287589e
+49dc64678ef2c7f9dff5356ea9a47a82c9e793398f87cdf5385d00e0f181bd36
+67c8b5e50b44b995f92ffd92cca139d9a76b315fecc7dc3076b6badd7e55f397
+f14f542caf480bba66e368df25443661edcaf001e927f04ffa705ca40285c943
+4dda0f57eed5e19d42a4766602883def6b6f2fb32818b7c44958bd77dc9366b5
+02db546b22d140563e5575415302494d76a664cc59be0f53a7c1466c585e4bd1
+265184c0cd34ced4ee012b170665f8b142d13c2e1b5768329af56d0348997e76
+a8118f49c41f53fcd6d8865b4b045d32bf372b57e3eae8ba097e8fa6611878c9
+a68f89a479b1faec22180bedd357c5fae6c79911d7cfd61b1a7e461ab0f99629
+fb535fd306e27aa8d03e368e85df6a8cf1600b000cf71f3bb3f85bacce4f6aae
+b304b7cd0bd7fa876042940e968f299d87e8fcc8a3a6733eb9472265eb95e5db
+3be1124f2519c765452e97eb8025d455b0fc7626bac8572c0aa6fcd20cb37640
+59457efa089b879c72a629511277b54eaf49b43406a88d7eb6f947f9ff9abb81
+a4ce5cab3d7acc9603c70beeca0108d8dfd4594e61614130163ddd41e3425d5d
+7aa7bf717bb8c44cf21fb895ac5893f7589486d58cfbeeb628833405e28350ee
+8c44bb5e28a0a220eea2fa9a3de5172c593eecf483e3150e6b1b64e048e4c1f8
+b76bb256194580030810d619d2e657c1b3727cf354010e2f3e104176cb97ed75
+caa125c1139674e9afbf9ebc5c5c3f42551319c2307838d996d66406bee93e80
+0b822d8dd30b09242df71f6191b217a4ad4fbee8469aaf4ffc701f08b934bf50
+259dca324fb0db317a56813e4bcb70e3f4d2fd0ce39974a78397317ed3f5500f
+097edd983fc6ed1e91fd6e047e91ade16cc74627f124f072a5a9dbcbe4d76053
+b02631cdf3347ff1faa263c6d90096bffa104dc14b0013b63a7d3e32dd5fb572
+15b7493f65ec927e6f57c515b48efe4df3615ef5e27dc62e39aa3bf8b879c06f
+0516721f474be3cf3dbce26c0238156a7b498a3f8c356afb563df5347a532fc6
+01f1308bb51e4222e0ee16a6be111f8909e3a8924a8f356a3d273c4e59f4b5c0
+7eeb8997e16e131f2f7e730d5de78ada334d1252b5a7c1351f20bfaa12ac1466
+5329705be37fd5eda1c765aa2cf5c35434c6351517d7b2f0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMBX10
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 173 /Omega put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 183 /caron put
+dup 188 /germandbls put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 120 /x put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+/UniqueXX 5000768 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306462c563d51ece66fcc9c831843ecae
+1fefc1a232e2724f7baee428ae03aadb95c3035345c15e9922fe49e1f2cfc980
+237316572dbc57064edac9b0db8913a5e2d45e97e19a91435ccf8adfc835b585
+48e74b291446d689c7f2f8c4325e8356e974ae30c3e2977477baeaa33d141fb7
+80f59351e84bfc88c87b3a4a1d25e168b9d134554f6a581378c7d2d6eca8ac09
+045cc3a5e0ed86f147133f094029e3483bebc81cfde69942cf645ea20d0a2b64
+5140ccc2f9cb4a3d969f4b0a79cd3329b440dfcff5285494406f3dd08d804c86
+df191e57232f6f1f83df6430f214e03fa5412b1e13d83c60c52a698bc9a38159
+19a64162af7b83a9468fae9507c6cb55ea80df8c696dfbc3296c663902d77e89
+a181502627281181ac8624f65be9de5fb32f056cc7dd7cbc7366a91717b5892a
+34ef6b441871c6993da3a81afc9bf70ff3842a21a29c0e49da1ccba37dd6b920
+2702db510b8b1109acf4c27ee8d676bdbd16abe189f34a9b61532eb777457698
+cee0561838eaab2d3939c5093afbb215bac433d1918c739b62566906bb2187f3
+378521fb52e70c18886e1aa15f53a1f8a169528cf2ddd54c203613ff88e619f2
+6c9c50c2c3b8b8c868a88afab1dc8472e7b6f3f992a161723a3c0904865a7c42
+3281601eee91f35222c4a71f343739f102eb43145a47e4fac3bd666e4c114a90
+5950618ecb1bdc29f90f6ebed1d8325fe6b52e14a8870e9b4bb088e585c71b91
+493c12845a101937e3473ac5e9ae24f7c358f06d590d7618e1a1d5834d87621f
+e3f5432b655eebd4ca61a7b00dde0aa740796ce88a43d1c6952f8d2ca63d30b6
+dcbadbb0dadf13150a442714675dbe51ff838f2e47ebe8cd44f1eac6ae5b6ceb
+0b07af03f5d3896ff935a198aa635e337e367e1e128d15e31afe3ffca8245e41
+a3e17011340e49d52fa1e322b435b4f7f2f49ae01f6a319f68d3d786c24be810
+1e1c975a8feb5dd7e4922e00e3a08cacae5a945e1e8f8a20f1fe9534153307aa
+5ac7424759743e08af90b9bcca7447375222a66e2edd1bfd423b1bc50ba0e544
+68ef45c89036a20c01e4a5f27f9fe3e02cab3033c6d87574bab265c69d05af1d
+48b6ada1cd04622b62b82d646cfeeea510fffe46b3992356b9a78216dceda375
+1e3f6670d9ae871731741105c99a03b430ef00e0ba2687c8c18b520ad8466ef2
+e5d4c5d11165e1582855bb54fa9fec61cb41dd05a5e4e26e4dabc7ecc147b933
+2811e4cd7fe4f2f9281a740c606140afb28a9748965eac6028273fcdbaf40635
+732a68509e0da5b482ea3df988e4df9874ad69ac20bcad8782a215484e6e98e5
+fb69df4d50fbc249bb3a785a9b851a861ee3a660279594b07c85fb16fbede6ef
+a58ccfa7988f74c15a0ff2df7b21c73a29a1d650a588129826843432db2a459f
+d27b1aca6de903be72229b9acf4c51dd5024a9b2a463f3f2fc29cb83daa9a0a2
+8b7218c176fc57f0808d0db1bfa4d07661aac15806143b909cd108385bf04f31
+7692da3f68a08acc3cb39cff7f5ed339cce32670c134bff062e7c213c673f6e7
+c0bd4776a6e238695f26b22e7ad77f166b02cef33c51ff01a604698da6bb2df6
+7fa13a66f9ff916b70604dc86339aa1848dfe31d493da7f6e6438033c9107ad8
+b307279bd43af34862f9965d4053bb287a96df5db7135f65184bbfb93d8c408b
+da6c5ae56d7c5921aa9e7cb35cae94769f0f5fb7379856de22930985e108c982
+205cc0c179e7dbd953f6f21b0fb8c9097fa83b3727f6bf7de541702a92df6a49
+543857a2f13ccbc42836b13a3658787ebcca903e99f0139716a8b8d3db439260
+126e6ccac709842a6b794475e694f639dc52a1e400a9b4c249ac35b4a1cff985
+68e26203b758fbf17231b24c4205b44c80ff36127b7ba1f6539c2d604612d00f
+81392f1f45a93e87223d38f7d8fd5b236db6171327ee9cb7d08c4040e9c414a8
+16e58119a3a6c751f77de0d35c381d25c76e0550bd036ad825dc62503146f88f
+50db31fbe7265f58f99c3cec27220253d7bcf96c003a094ef37bc332e8f9ee06
+36e156046a8884f37cc03e20193a3fcb6395c03cbcac7258be91573105ee51a7
+0f4d22c358b733706b807fa6f533d38e9d4194e87450d3974b70942ca1bd0f95
+d1ad1497780763ef98711cb717703f44be4319e18341af537449a31c01caa2c5
+84c19b2c4eff8549aee456288d038c759d3d77f9770e51ec9afbc245d6837918
+e48c6bb7b06832d3611a67f7f61778ad2ebac13bc9a8be3ae782cb897b46d6c1
+f1a22616182f4ecd8c140b30a3d58133522ec4f2f66f6a1cd3843aea61cb5c21
+c4bf9c536f3ea184261d19d368a96d10d53e4dfb6c01c359b609396ded8c77d8
+e1f4e829c16c64f3ee77a401dba224cffc1a6a2f035ac773db9cf4074baac8f4
+34f421ed6aa23593c76d54cabb5e942bf7d6da4a20ae4d275453725f65c1b15e
+8e716c9882982f1fba1a49a2b6f3dd7ce2719b7a3d09e35efde88a3a544c65b0
+0130b92c0649bb82d65a8f8d9224e3d98f0214a1940f40abaf09fe614be450f2
+23c1e6083ef02f4a494c0834b72c54570de4a27daab0f4ba8adef064662086b9
+634eea0875674ae9ea38276ef0216727fd923c5d9fda40c6fa9be4ecacf4b9ca
+65ad750cd4e5258144d1d9978b202e50fe2cc61d12440a209c007a32964cbb1b
+41327232791b7f8ae85a675a9d0cd253fdb3518b2cab05a503a27d2dca5e998f
+3e39968938c5c7dd51449bd9ae41a6fa42860d8934aeff55d2c1970c9a83a5b8
+eaa32e3b2f60d1498746393e2109b00671336ca312840b2aedcf0d7d4c5c1413
+63494f20ea5e651ef98edaaea366fda1894f253ae307c218e33a4fca80d79a12
+14efe9780a1dec7842d744c00d4a33ddcc93808ccf7b5982a2655df21abbde80
+6270d425aecd1c32c875743301c19bed9d8a8f8385c76c1a3e753dbe9540790e
+ba361fa55468cad4e97e61f426612bcd3496360723ccdec824c460ebbe6e40de
+e0d5a7f52641a660ae83bbd8b9195e86d4b935e32d733af4847b98f3910c2b4d
+982e5f871684fb95653b9f6f954f11fc2d0dd56370204a2641bd7428aec2270f
+0822caaed222f57284c9429ffee3a50e90c34af95217c442bb70b622de992a94
+3400c75060715ad4a8c57648e1d5ec579641313ed73640ad5fccf1bb8dab7023
+699995a37e6374d988dcedc47c0242c42b9d614345ba0b8e0eb86139a8315249
+39c8ec7297cd6600bc87be709705a7c0a1f8992cace71ac5ccb7d0c2ff950b69
+2a18cb66c6a9bbd257fda80b96dde3ea911581ba6a5bdc6974b0c33ca72fb951
+5ccff9448cd5cd14fe6956e60226e69d935dd1747f5d022a8a8d0ca3688ad067
+a1c692f51e71ac8994ab0003dab975136be3ce0cac0f07b3e05ad2ec3273fef1
+4afb6398bfc09c1ae6ea98afad169351950c1d098e774cd54770279206f84cb0
+8b155891e611976f83ce1f52a1f7b28d0fd5ff30ec05ac2301bcce1ffd694ded
+6334197c52725719c2b8b26c1daa9b9b01f7b5b0b737ed277e08494adfca3e24
+c58155632bf53f90df643156e9495400b530ca9a3997e9bad809742587e2c139
+2658cf9e3fd10d57093fc8d717b37f6b39e7edf170019216c2f05fc7faf85b15
+01c86da93b52423af62eb14da49396ea01c011357b34d001a9e4c3388d2dff80
+ff93147800fcdc0c272f7948238a24f458726f230703624123ac7d19ec6b64d7
+4e3709371e33822b8a3701d9938948c5d4ad87d71c453598fe0a888ca921d25d
+babb509bcfcb6a355e09c9db936ac035982c9616e5d6ee6ee83f3775d6f35f7d
+df69f74bd85c9759df6cd023d6eec59360435c69c051a2771fa54b6a332d9f9c
+38529d17c8b66f8568ca0a0a180e7813df75f955199d517684861f11d3d3ea35
+e798dfce3afd2486ed17d8c4a3712c3ea1b093c525b9025530da013f48f890d7
+11a2632309619b22f51b253df06a363c9a671fe640910d46abfefe5382c5f367
+fd967c31c9fa35cba96f7e38c5bb492979cf047a62d8ce2bc3aefc1a9fac81e7
+c8eece91b681601d0fb5ce2f748c7ea154719de64149b6a4cf73d2a76c826d27
+d7e417fd33a8b65dd1d9b4c6ca6b8d7b7ea8889e0f8f9ae3d1b20176a8e0cc7c
+7ba2ca841f6813051a40fe165421b4d260305e20b39966ee4bc62977400d4487
+6a4532cba141ce9cdbcaea60aec7785050b562563c9c7ff113a602e48b967226
+4ac468422608388bdb0cacd00658673e5e83851dabd1d00779688a97333557d0
+7abd29516f6d994d02124e142015efcb77b099a0d88a277513f8c7d957791581
+2b17738beaa2ef1fcf130f21ca4a2835f3cb8a87d0ff323ef4531cfa9cfb7940
+b582722dfb0996ca014fb33b1777fb82f09afbcc2e2b9e4a6729fb7590c615d8
+a565caf828465dd4f0ee731b43abe51e4f6b0aa1bd61782c7adca27b0c889464
+7aaf57e993426916fae7e9369f8ea48232ba81d6ea218433a6d05c158b80dc98
+c14941dc2cb82f745b9fa29583c6722c85052036b326baf045b9d12cecb275c2
+18f75d7341edfccf8566e6261e3c3a139e87c406bbf29d0b605c1a54768abbe1
+705fbeb060b97856da4a9500252d457fcc4f1bed105440277b28301b2f3e96fd
+9f02ed22d207fe42f189c58db1e0a133c84d4bc9d15e666c71949e31a29c09f5
+4b49a3f5d1f5ee110b06e41a45568e2b0bdd3fc45bf85f71f70b30d2c33b847d
+06a376aa2e4c19e00d0dafc1578d21496118b1adbd8d53a944f2532aca877b78
+d34ea163963d3c80ed60d3851d25419970fbef2aa2a4dba6b8dbbc2d8cacf2f0
+b26226534a911baefc2ece505b0b2bbd2adb6a21a7afd442f55da97d5fac4e99
+e71aacedceb5c8d2835c93526dc81edd9283cc5faacb6d9aeb7e4616b9b4faf1
+277cda642e4d7383c568ed9bc6aff9d46b44d3f510115a0b279df2db165c96d9
+9c576bc34d0d7163ed765ded4188228f7821b2ba64dee97a9f383bd219051608
+772c18fcbb97cefa02a03210f0e4ef700592c230bae1f26976cd1b22d463c1a3
+5059b4c35e8954456a5c7154b8df638edd31a770a3757ea53c57aba795dcccf7
+9e680a16c21edf3f260c1ef482e9e7d10e23bed7d11ffebe59fe55a2d7d4a715
+437343e28edd85ba71c6b8a44d62e728ed4f7576c51a43411b8d88e7cc8fb638
+fa1a5d5271f872ef1849069d546ba30cd90664bf7176fcb64c7b513e28e4295c
+a235e3950c2ba0d7f706c45680faa03357ea57a8b94af41e9e2f708a2d6e7411
+03bfbfcdf5e83a5c43a8f23cfbecf70e915b2fa582eeb34bbd2e55525cf343e7
+9978f03817ca3cce423c8a550f02906ad7ab730c7a2657396781893a74ffdf77
+926dc70b88d1e8fed215ee4c2292826af45c423c12d7f339fd6921be3bb738f1
+b2dd4ae93bc19f710353983cbcb68c53777841d21c666c62762142e8cfd4b344
+d6f5023c647fab1aeaa1eb052bac624d8a141b6084577a16d7963c826ee267d4
+237791d2cbefedce79f5ead4504a6f6f6220b0427eaa7254504831a60b0a0f71
+9b4cd31036abb96a0bfa61a530b13e561f5d5eccdb9a62b9e50a843ab612a3d6
+0c1821463244480ffb29c542461f105ba2564e74f36337c8972ce846bd396f48
+fe75d9cc05a6e1f4dd8ba56f80735ae5e4f9006d9222affd7bb288941af8e05a
+ed01c2acd7da599aa7cacfff43183f8baa5f95eefa62f3d9dd5b5a2088ab9f57
+0b4213216c5dc01f6faa1d42a9e0cd6c005fd3c7f6d7285d9e7ea7d8f07b73f9
+c0c472e3eaa0d2ef6203b758d1978fe66a76d56e7565f0ea60bd8bf903fc7d3c
+5fafe15a59133f2db6325e2f1a5dd12ddff2fdf65fbf341167b882563064534f
+4738c4ee76f54f709db18ae2fb8a8632810df2e6ef98e0741d485632ce3889a0
+bb5b17877153143877b0fe6895271e473e093543be21c1dec65004c816af2032
+42d292cb87fd616e6321156418d6775853b6cd7c2c93b2fd7b5a1f6e2cce1659
+7ca3981d662a4e53263c548b014868e66bbcc8702bf7682f46ddffc9df9f4a06
+e4c3c700fd1737dffdb27768febf57835637bbb443639a8e66665b32700e589a
+7381b93e6858fb03c40771ff4b7630fd721ee125ba8d3af43fe79beff2f76e60
+878e9cb8bb016c59cc241b0b7316c4c9480c01fb033ec53c6bf8b0704d0de128
+29a52b8d9041d72862717c02d6e72f1bd53a6d07e2b7eaa487b7e5e0e94654eb
+f4297f02aa5dab0a1a0d3251dd1610f63224440582612c052c773b8ecf93a7eb
+a3033de4af139c061b8af43cfeb5f39da7e31bb3315c378d91264ff59d02b27d
+80c848ddbe9f3f1b714eed035bda5500b550edb74941ecb1bcfc2b804036c0c0
+2f4e492fd4c62cdc2a3eeef34b0416724039092342d09e7984a3d8b8ac853c7b
+dede2b63819cec2eacfe697195a836633de96b5699589e9c327f328e6b83b9f9
+e8d6bd0d84c9bbd47e76cd1152a1c763dbb23d509a8945abb89dfab3b8de93a6
+775ab5068542f8809a89740029bd76b742afb00e3d1d34564e6c8d525a5cde09
+f9cdef974f6653d5f828bbd33dfc3044f02d5ebe01c28b600004ebbad6545077
+96c96237eb2fc7d7b77b90bb5cb2bd3a8edab1bf8c4d1d090e093bff9c3fefbf
+d5921a800a9090dff39f8208cdab1c7fb4b0d518c042830d4e67548002d09ef7
+add998d62afe992911b79b2210ed1ca1629d893bec4ca939a6d3abf8d2c29af4
+ec7e295bf4f4f136c988dccc82bf4019cb7d9bd969b48adb147535bb970e8fd9
+b62cb039ede339f7ff946f934d9722092bbf819a0769cdbef8c3d297542a405b
+8d626570fb104fa2348eb2e18fa051135ef3f2bed30f4159921ce4e9062619e4
+52a76bfb45bbb152c0c236cc098740d3d2a9797646a2e2e41e91cddb13ec9b84
+83ad92e02559d5d37d5b97890ae581a80aa276d91b3da986886ab266e8cd5f41
+972b4ec0b7fb3b362ba36fee96b4a419a11efc863c9811b3d841c74e107864f5
+e035987d83bba23c9fa33f97ac35f4e9a335c0e894ae30309e00a932756bda37
+6b11ba6f0d6765223c100ac0cf922078322a8c5f3f35351c876e2b118d0765f9
+e179e060b6694561f1961c89ce6df79fce3b6ddbc9b36ec9ce5c7e5cc4891114
+d4912d1d9a336ae212cee93235cac7caa0617255c8ee401dc9b5190489ccfcc1
+3cd79d4aa3d5217175f6681e8113f9498d322774cc563de9de76a74abfb74aa9
+08bb658b02c4e27add8263d1d7d9cd995d20680726f58ca81f0a780f8a453db6
+bebbd23294cdad16139e28dcb0a4d8aebe42c08ada400ebdcd5ff83bd6e86776
+36e804976664e72a33d135b7bbcf6c2847434ff58266aa8e0f64f6ff71d52a9f
+087e307d7e929fc0cffcc3884d49d51f62b1c80dfda585e3288f63d87199e8d3
+1d6322da0c6640fcb4d0e9fd2d74b59bdf8df7eb3be9c221304b28951fe53c62
+c87e755b7432bb647195ae08f5e7bef157cb3f91376b138c6c03dba89d74cd33
+522e8b4f4282bb7b666c303e3d874eb68e0609b78e3a621df28826fd6a8734eb
+d4089cff2032bf383a2f78c29fe35f9e0a375e770ed38ace30eaee20dfe850f0
+bf203a8ef770cf53f85b2a745a06eaf14b59bea20a2d7ebad94aa0d155bcfb0d
+bf2dca4938436b6f89d052edb045ca5eb3ddd0cb564412e72fc4869cb6ccdaf2
+95576e1192e43d5c0f586bfa9ec5c80d87adc3bde8e2f47c4a4cb424234aebcf
+81d7f0eef451cf5c5d64b1233ddea9fabee4a951bbe9778b61cbaf1c93ff511e
+9cb389d02c8673aa1fc61cfaecf07248ac5eb47a2d6173766abc307001db6142
+1ddbbb7445e5272ee679d6f570311e2df3734a1e1f9322739e00eea5e2f24889
+ee5f13bbccf1f8a98301e6bb3c58395ffc75d9927e4d0ef2b7859d420593d34d
+22c14cc1d29b11eab02da57be34c11d0bb4ba7a88c2ad78473fae37f62b02fd2
+04f22383ebd9cde232825e90f56acca1afc5ad392e7ba37e913b78814e935043
+c85df6e41c9f3e8f243d07047d6938ee222c47c03cdaf8adada31388ce68bd8c
+73397ede27917f3d5cb1a273bc2561a82882132b4debe8d9e699731f937c6ae0
+077182bdb223cb8d830eddd46d3fe5f2d7600500b17f387b69e62f8d577c20e8
+055bc237f55af13de6c74fdfdc38fe796fe063e46467cb9dd21103fbae8fff69
+221e65f63eb8e1ae26dccfc773a42b6fd03b34b36a6bb691781c3889a77ce8c4
+9bcc9f75e5eef9da9b8620ac85e6ad789b09ec464b0ded329ecc13e7383d0145
+57464b97de1487341dfe7fcada77f5e8855e266a2ced954d1581c62a8994de87
+7bbc7632a495c2ed2e488f9e40f64e403782143769c079368b965c410f86f553
+1b6feaaab46fa0407baefb33c00af53d526462368f7f32a31c4a90ebdf3e9a56
+119d461ebabcc91f16ef73de9a65eb0c609ce8dff7329f111ae2dc6f2f836a25
+4b256eeef63b5bbc839596275b3c4d928d20c6e680ffc13c34abbabd8de41132
+afb5f4258a72cd2d8563e424ce7462a45f810a41f9c602b5548292502853d924
+1a15bd63992063c4539b012c222860ba6dd4c58a0537c00d2147a6ca9c6953e5
+48b791337e8df7bf8d901ff2123c6624d464683bbafcfb55c550931e52fe545d
+ffe65355be869f51b1baaff01b2c73385f2cf1e95be8ca379a74723d0fef9768
+a4e858ad48a6292fb074760f18913ce6e8659195d7ba98aada1307c658a973cd
+118c99896541f35f356cbbf77c3500f7bc19d874365bfa371405cbdeaf2ff817
+c5557c9507a305c2c83cd5f3bfcf90425cbf7d7520c16f7cb09f5de6535d6d1d
+048eae333949c5f485edeeed4033a177905b8f67a62415af5df25f4825510b6a
+04ca13056e4312d8baa4a94d8e256eac0e7aad600d610e66389ffbd781631186
+dd4c9b029dac60744194671e52f2ce7b117b0a9172f779549ed9ccb57d865f1f
+959f70adaa1300901f3a51f4d988931a5bcb5519ac29d6f4de356d104987b4c4
+c44fc2659d2d22f11dcf7772a52b474eda22b26dd32456f59289df1ae0c6f2ce
+9c1254a20f5cd7c04e55502026e6ed451530e3d3ab974a567a491d96bedfc5cd
+f4692d2890ad23b3ea22b9ea9922c093381d556fb125eca50ac4cef55bee8422
+3399a3b293d8bf1901a749f91f7c52066f330631b1e5dc80a178c5fada634b5b
+9ab66d478a044ac64aa9ea92c28e779fea9cfb9f837ef80e89d31b998d305dbe
+bc4d0487665e132a073b851dc3e4dbf3249fa4f7028a5b5669aa4dd7fc282b06
+1e7f65d4a9c437976d535771a6371ee88a90066de6898d19e4404222afa8d2b8
+c3c024ec4011538e9c47c685c409388773b655b1a5fef8a5cf85309a94c86812
+c1db370bd55352a248ad8badc93a8b613c77db8b00d201033a4c31321a314874
+415bbed966caaf4a9443ba6d08c40a4e6ed4c9c7194c5f324ef0488d09051cf7
+bb93ac3385a935ac4c107089e033d2c993ab9ff389554c238576c19fd82c8e71
+e5295f4935ea1b474b734be8ffc975e75265c4b9cc93f18f1aa8685530b63309
+3b23ac6fce318187bf1102dbe4fd0b08c61561720804fe2ef0bc571175f1d643
+c8d2fb186beb1010c5a4792a437d8a7906ffc56adb08086483a601227280cc34
+6200768bd8d56c59c2c2804f10dcc375b081d8ad4cf7abc5874eea87f2d644af
+ef49cf935090c13890601e21305ca8b1e1c2f60af6ba35207abedf89e44b1d4e
+817a7c5bc0aa652437efeb3a07c072c16c4ff44699cf8be8c8538e5a6691e14c
+d47a448a3776988b839b45277603d89043ed62eac16bbc67c293a003a090e596
+6c3d7e209fd763ccde2617b42e9dcaa2132f5c2b9cf7d61dd56c03d7ec1f75bd
+deb92ee6f590e1e012a8cede71876ce3b69cc0fcf3dc6bb9da6e6c16f898b1ef
+e42714f6005c3761a2102d98630d6566c4adf72e32828a87fea8048362eaa830
+be0e0b6230e88e0885c7523c51279b8a17b70c2f2cb25b68ff41a57e22cfaf6b
+e6d39476e0b878c794c39c47eb6c13592cc70986ee2e43512935f9d88a46567d
+827ff1f2e21154aab6b2c96868821aad087aab498bc62b2e18ebeb0657d2dfbc
+adbe2fad9f9314d7ffbe2265bab04cd24503e7b6bc25a095f866e06c0ab189c6
+dbcd5328a6825c15c2247ed0055290477b9f55a0edcf321379cb739143d50349
+c42eff61b3f711efb6401001fcf08915d28047bd0f929fbc273e3f619f420260
+3b44aa3e2338739427d77026a3af7b973b116c1da165bd4d474635e1d9dbe68a
+527814d7f62290f2b842a6e3ba54eb8c4d680e30245877b9ca6551c57f65113c
+a8a54754198e92264353abd45177f9b7e5b882911ff995f908eeefd03719695f
+75fcf23effc35b83ae85601ed0ff80b045461f935653827ea063827301722d13
+8c56d0cd665ff7afccd21b2f887e20c1eeafc8ecb142560dc19fa48bd4b6aff2
+8968a67b47e540266b057ceeceddf2dc471e35e4099977456bdefce020a9d808
+ef168505dfd0662d0fe1bf0c0a39169308fadd2a5581be601779db3f5127e8c5
+442379dd1e95996fa711dcbe5164bfbd8d0932302bf443e407d1aa24a6fc17cb
+622e6dfeae9d487f7bedc4e0a4e90903392cb4f60955d5464cc13ee3714fb265
+62bec4ad892c69d0956092e46468d6f19139db05103fe11ea510d2c7381a6737
+61650cd198e1b71c763087ef53b6a5215d9912f3a7740dca123e0ba3c624a818
+d24925f9f51b24ede410845230579df7a9fcb39795178067dd278620f60b70ec
+3265777d6d7d06b79715d4b69e0d2dde458a1bc8dc5c4462d066c1a710d6cd19
+54083ecc6f14b713827ce2d079d1d37084175b9edf048a097f52e1dc56e25dd5
+4122acd5e92d612e3c0694e0282f47d1cdf533b359df91f98bc304393c51bc53
+1e7b4cf617419baa4ce88c55494be8423dfa8c0f72cf1ac616ab59e26135acdf
+8005ca5967a6b035e29dd3611b4378cc009c7faf7f8071664a7d0d8bc40b6e29
+67103e2a76a12bd8b2f510d8266fa424cb6a7c43f827033bc8a155366b110da7
+7c16068219605d44ac74c4c97ec0ef87338b79c328818a609707240808a14a18
+47859abacf899444e9fa412e44fbf9a4080f3b534e300e6b5c26db754e30f3bf
+b1506978150696c7ba51fd4f3d53edae5a41603a34f272b9daa74835ddba77c0
+6886516e68da3f8a8131db0a2ef8d189d7cc7b33a48516dc4dda1ca5ac08e845
+734e1f5a3142e8c3586b7bfdf3d01ef5fa1d8213acd787720fa2fd34b2b1cce3
+fa8edee5ddd40b15b0d326accf9a7efade15e736892e91a1d21fcd26c3f41907
+769d774b60c57d487590c43eda2c69db6997cc35b7f594b5f55fad091754218b
+718f2d6766de45f0da3a7e996b2b8c127cbb9ad28508713d50ee0a95b34e488b
+44b5aa92f12650c079145d9fa571fb5b7973b6c761394184167b7e3a151c453c
+4349ce6b88a21eb009a0bfbdcc1bd761548022541f2745fb46dd77bf1f664836
+36b65f8aef082e0f4281541f01b5a277c6f98a27fecb45be9e95b41d5bc28ae4
+0855ed9566af40057474c63f1caa8ae0b084f270f6d3c646d768e3e16947bbe7
+acd736af1a21d4092050b72ae3f8316c0dd046e4220531094d55108ba498e356
+542a913fefa629ca85c760bae6679aa5b97711f6ea88b5fda45e6e8fb8be833a
+e9322ad3b384c3cb2d310eb8b918d3e00df344e341c41300e6069cfcad21bdfc
+efaf96320ae072ac773e6928ec50fe6c44a997acc9ca9eb62b34d4eb22d3ad74
+ddd2d05f213c57ae982d1b7c849f0a076323239e1344e2e83bc022fee380cdb7
+a908d1045cc5ea1d71cfc511c475e00e84f605f97a857503ba9230619d67fb0b
+e305e09a0d074b7d0a7820e11ab7c0f270e9a4378c9a72584519777e15a1eef2
+bb08543b5bdf431ca784fe864070b77ae02990531e7ed6c047e1812fb8617f81
+dd593a4bff8422156ad06c4b6c340932e7f9ab33181b822d6c1f89e1c9bd53ac
+e40c67036dc4de08ae4d2a2287f7215c872c45249c721449d432ff7510d1ca9c
+d25c60892b2af7455715261d3863141a2860e8bfa0729d1137aa0c604107d589
+f6dabd3e963dcc000e357dbaee83c6cf45dabfef42ac31497d3c449efb32abab
+9d317cdcbd10fdbc1608128d08e181c8bfb8e1319bc7cff4cb2088e7d02971a0
+cadde47b9355d394707fc8a70ee406d39024f3b8deb5f43e948ea90124f57847
+b1d6d1626b1bd60d4e599d73b9f7f6a80375803d7529cf2c4147239c0bf7ca6e
+c0d39b764871a5c4308b7e88cfa730fef0bd90bf8590d24e2817464ee5edf5d6
+773195dd4f7c82cf5d0d40611647d73d7e97f204612060e70599fe50956bd889
+59f8fa2066c920da7bf8df6ab1a0ff510e14346d769e2c3f6d67547d67f4571f
+3586084aed307676f3e57abf077fc1f33a5854d326690c3a56ee1d4c8d653430
+5be26cc58498dc72ff9426c88eb43fce399a27038a13b62676a02ca38a499af9
+cee9c918161325698b9d58a19a886c3b7bb0eda58dbc6e994430bf7396dd9a62
+a8744c642819ba3ae34fa4d7da34739721c01a2f046783c032215213a786e436
+b32d4b747c5c3c221f1450bff2339fbcd05abc311b0f245e7b29db79870db7c3
+2d173c5250a6ce41b7cba319cb1c98408a0117f3117fea719f71781e6d7ef5ec
+2887211012271962e0bdf0e05b8088243763ade3fd79ccc5a7deb36c110bb3ea
+66ae63fff8c2d5bc1f6204b9e74215ca2565482af1a3bea63884a85835951cf0
+5a7a4f92c2e8b469e35d9df1913759f6394fbd8230918ac990b5d6ff3f534829
+26e7b28494d092ec20bacf54f35c2af6cdec3dcb6daff1b310ace5deb1a71418
+b74219622ba01f3bee9984999f92da9769f3728ff17226a4e295955f2eb487db
+441c5dbc24d8d99ab43bfcd083e6ca8cd88e7684ef4d3319b59ef74c1222b0df
+bb30a4459b08ec7d518fcd509ddce8eaf9bd77a1891e7d02e76ffd7a8bb06373
+762de2a451c9f38496a6d1b698cf2bee7097d7ae4155f0f95f528837f09083b2
+020b65654ae32d6e8125f70ddced8da4f52227ce3c860648effeb50fcde048c9
+5b31228577e1736ef023fb0686134b57f5f37f74aa49f9e5266208902541c298
+23173976f3ab43b612ce964a73626d9661154fa53a8323bec7c1801312c931b5
+ddd61d62b4c94bb213ddb4556c6bb77555002b094dcd5cf5ab5a8cd5461e37ea
+c920b68670b6b36c4354db12b1e8d008dbca9f466b1f2d3a98aeb400636dff03
+3ee7f964c8f2cc2ef770b01ed6ff3c3faf778c58da1cb0e06acddf2e27bf1fe1
+0e1e3b155a33ee0d7f15b889451684934fe3fd8b0d5f760dbfaecce85f0cac7c
+230496d1ab865392d19be79f313c36a72093e16784fadd271a5973bb50113c08
+9356675c90a64df8ea53491b72a68453caec86a3a71e2d5491b41f3564557ab9
+7bdd1b29925e0aa9f708a9b52a0a7e6393ee9003661eb5548d2023dc19f2017a
+415a188918456a9af7b7b1ca94a69825fa3a69520164126369c494c93f5b79d8
+db3f28bcbc3debb08ab487f9dcd6bbf7976c9dd887eb9b8e997b3204203dc787
+879517295bdbee875e9b226ab9c34e638721ae2802d6264ccb61210738cfffb2
+19f046b01018bfb26e1a9b47e7ef60ba445bb3021eba7522bd46d1c95ebaf38d
+f3b5f2f8e2c826416ac7b463f127d83c5a002487f0cc2cdbabac023b8ce76cdc
+ea63e6bde0273fffe96be667bc525b359cc728f948cdea372eacfa260b698ece
+f09f2a74541609f92172bba24704bffd5d0a11f58fbd8c9a4aeda5694bcb499d
+10765c664dc8588b77bb7644f19d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTI12
+%!PS-AdobeFont-1.1: CMTI12 1.0
+%%CreationDate: 1991 Aug 18 21:06:53
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 173 /Omega put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 183 /caron put
+dup 188 /germandbls put
+dup 65 /A put
+dup 67 /C put
+dup 76 /L put
+dup 78 /N put
+dup 83 /S put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 121 /y put
+readonly def
+/FontBBox{-36 -251 1103 750}readonly def
+/UniqueXX 5000829 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd803271dc8bb1656323089e9e2bb50f2b95088
+87d31dc36e555668d9578b338402f8c259f6813b0b71e6cbd95e19c20ced8495
+2559e47577e612a4d94de3c1b4c6c41a6a3fa9e2313457242de74c7e4c0d722b
+3e224d18baa726369542682e9459b951b2ac638494880c42be4e2175a3c067e5
+945bfc1a05d3de8c3e8ab97f80ab6000e1f78fc258b85d3c84b038d7d0f5be85
+0d43fe03e26cdfbb41c36d14cb552e8447ca678efea1d275e85503123a2263b1
+4077587683de69a8f5a88d666172668411d0d0fed3e037ee468627207505dbb3
+59cfdc5d7f526fca5416d741073284f5dd2471e09f5916f4bff1a90eea4d1283
+7731f6a36e5ea695f4efc3bf5669b7f60ab606df5819149c0c8a4817f06dc172
+0543467645daeffe4457293e0c0407c4ec7857558d0452de2ac773f141783edf
+81b30215ae8d2d062aeb3cb69eb0d62bf04780997c9c027a22896f456b784378
+7f2ccdd4804375321e7946d3d254521249a4d28a360f4d3163912a688c16e807
+15d0440bd27bb78fcbc89bc28028aab2f594f8b641e45b9c599180b69663eef0
+03465a2425aa4f8b29dade493002fb335b23eb145108ef3ab828755d3753ea8d
+f0683265497b1cb5cb484c13f7a4e003fa6ab3ed5e24fcc6125cee4e33936122
+3cc907af3c64e5aaad882c356e673e6ca2509a71920e99549d8797e9aea189f7
+fe18bbf718017cd2e32b4652acf12f16e785462980f5895afc917ea83e9c3eab
+6297f1de23785f79172538b39984ab261f14ee296a42cca3159e63fb30583af1
+911646257a99b4162635fb79e25404242cccc3bf224d4c279e731333107ab2cb
+2598dc582dd185669c1fad35d2be0428389a4b175db159508c08a77e842fd400
+bc60f7a1320b77e0efa1c471b6e2dc24f3f34d5c567fb24e7adcef67172e8fb0
+d151a47715ee1f47dbf933b0bb0a9371d59f7a3811434e99485013bbfad6501b
+abece21f9f4c9633f3f80d20eee87b7e88384de00f72e4deb3b49afeb9e1956a
+1e6a5049b56922ac9c1f0d045a7c35a2610a791d80231ae6583d4178fe3c97d4
+868c39687e5618e4c55778b6927e640b18306f276e4c8fc3fe83b9d6cad8d1da
+61a1ecbdd2fca837fa8a45562960eeba2d84dce812fea8ed95c7927e61358a4e
+c83acb93039af50f193f0ed22cd4631e1eca02b98cf8f52ca7e030921440b150
+62e92b1543b5f987839b326d93ac5e4e39f52491cffe5895c6ce4e4096e5aab8
+068ee2448890160de83fc4dcef98ffde6929bce3823d3f2728478f108539c18d
+36302bf07d521683bc8943cf1f69fad9e58bf729788262748ce3383443716f05
+1b4d6263530443084d3fe3bff9f37f0f331974ad39b85d32bcc654027475e8ee
+6b9379bc7b03b885479edb849a2fa4efd4212b574124cbc023c0f5b0dd44ce45
+d5b6e869b38a6c6814264d06729e5c1d0376d4654c30c60b86047bfdb9d81aa8
+53e2f8e7158aacae0a48739ca7ee3728b94f367c223c4529017031e6884bbbe7
+f01fb9086c3fc7fbae90246a88d0797ef296206f53cbcce6c45a129f509e8bfb
+52fe40366c258807bae9ddda42283c3c6cb4e1205676ce798831bd3c30ca809f
+0373d0454669f644fbfba72dbd1d9b298795dcce8da602665313155f24742704
+9f99b825c4e0a1d4db97d68b600fb7caf55b9fbd22fc6cdbaa3c3c8a7cd79633
+6f6c66829c640aa975a22c77ed84cb9d93b058b59bd69ba772072c62f319ed67
+db583cff4f51a1641216472a16f68eddbf51ea7d4c6a3a37ebe7c1d3ac2a1d88
+705ab4e336ca3eb243a0fe0ce5db372be9f9ad6cb379ce45cb8542f2aa5b59bc
+fe57ce7dabf8b51b10d7f2d53856d7d98471057b4525cea9d92f2e1b870f8934
+b702575a4520e89601002d734313553a5bca2ab4ff60798d9df07920e9b8384b
+1d18e3c41a21c176b445acbbc7463af699d3b8986fe1b1387375d9414f4ef36c
+f048a321d777f37a28972dceeb36dbe4a81146190f674c6ba9a5d8193f439b0d
+afa2a94cfdc2ea9de1730f89150f4fa960cc5c88ed8b7dcc05ed57444bfe3c96
+7aca2ab69cdd80e2ff25f10812a11fe49617c567c9daa390d038b3afad4cb2d2
+552d925245ef6f6c2ab72d19719b1fba374ddefae7ee1d91dccf94b80f41e528
+8e74f0a1efe91f656e62f71955365e8e402676fc4206fb3d580dd92f0b8ce2b6
+d59b5ad4d0a7a7419162583c9360ffcdac052c1fca825322388277af5d9edcc1
+478e789cb84a8a3d05d5b3390f65348b741e84e145b36779710a75d4b91be6f4
+6d4f2c8baf2e3fbd57ea94b1cb247623690c3a61bb0a2b93c732d8b2a3dbbbaf
+84147b91bf4f086518f38138dfb045e3129025b4f20f3d0435b9a69b989c16cc
+83e873ac1f6b7331be13f2d61b00dcb7d501ddbbab415d5203638329e1488024
+6749c598e564aec56d210043aef9e4f6e3b00c6f7e8cec935df38d9800ad5598
+0e37d99177ce9b7967158531e0bed56d71ed89ccde1389551cc82a5ab6f18483
+bf46913319d78bf78bd34efb56a6dc41c5f09d4bf144cd7caa081bad072b6b2e
+95d67232f702c64f3e59acad37d4fdc29e22a1ccf8e0c02b6565f10633f17b0b
+10edc572adc8e09053d6691e869818935206c16427e60d10dc3382bd3bb0f366
+de281c0c9bdfb0f2b28f353c600761c2e5d7a610d1aa0e6ee2f3addf6bb49543
+e92be6a537b5ad3f04c91295b4ef662e659a94d9f8b288c9effebabac3730996
+a551b8caecba84e6a905e56e338aef9945726eb5d63d6d520b9bcd2f3660c686
+194f72f179711e92358584cf5c62fe9445abeb7e346ec45a4c49c6f31f0978f4
+f058767f662e5ef5ffdee1949963d4c2db1aa871963fce480b3ba1921a2cfce8
+0169475d6d694328c19c8401aa0b0e64b565def1a9ccff9a00765eaeb35b9614
+ce0a5f44c70a9bf680fb49558bf42e5b08fc257e1c6cdf3b394f48c416b539dc
+1b077b689bc21238e83ba81a93c205823c3de4c5593f55f0029b7a12758dd302
+e4731c957dbfa0bfb152e3032d00934d0ccf2a70b300c317b2399ec32453156b
+fd33c028aeb118ae958724ace916e0bf11d7356f1347768e0317d49b76777c8b
+464878c965b9d71722a926e5dec47f81199207ea3a7d10fd9be625e9d5283ec7
+899ed5d007bbc82ee1ae1d7239706fa9199b6d519cd19b6969984fcd0be2a9e6
+ed18a95299e023d42653d970fdb4ae37c8cb85bb9d3b4a8c5397a027e4891d88
+057b7b88ed3ac3df09fd629ac5703bf252c68956c517ec285eff679fd580400d
+25bff4709dc8fe849bbfdfb68000be50bb7f0fd8ecc9f62091d2d46f36d09ca9
+caebf5c7cca5d3d1bf436f2797ef0ded48718fcbe70610f1aa5c71e0c0e76afd
+c46cb9a58e24ccb8a4ecec9a4a1eeb2c393f7e1b1a3c2cc1ebc4abaa71ef3ff3
+b2af9ef124457f7b2f07666129e5e277e0cc851fafbef881cf501463eda2b0ee
+f497661104b99915d6c556962b3b0c119cfc0beb3eaae7efcc3a5979651d5f97
+f31304a6a656b6172ac0dac3561610d9eabb6371e045107b21aed7b32fe07494
+b395e128ee64e1310c951a0bd533b2e7aa3d3602149c078e52346bef6042f404
+181f19869076e6e3955b781a803f8907f42e7216215cb9378ae64a8d171628b4
+c805b409f694e41069a77fb3450682848379a570ed14ad3daacd45ee889ee2d9
+ed2ffa82465561d43c503e5fb3278e0ab725349b1b01cfdb3dba4d9f1018a60d
+7297294570c5545ce0b80e0b96a5c247819e39d99415633f43efed1a552f9e17
+6de960bb686cc60e2b02f36ff1254707ede34905fa355386b5d92d71feb1790f
+fbf449178ce8319a7956a2610f4ddb5745c61445722cd764956801f67373cbcb
+908708983e7fdf8d8abd59de531271c4a49b68f5af372882f6857d1fdc0771b2
+c541fb4ed3bf5449eaab0b3bf12c631b2b77a38d2e75980223c19f695f3afea3
+c9f0fff97537be5276427879de65ffc91ba8dbef11ecf7573d6bad2b4d4cc893
+584589a7b54e19cb7d3f06eeedc825936cd7af7cff4ffd4df26596a1435c518d
+f3ddf93c22b429a096b7b6ded033b4f8bec5d9e151e50a911bb8ba37b0da26af
+ec2ed8c7db7a5f3c4aeca2826a24c99a0300c1e132ad46bcf19aec3dcca7d90f
+80bdcdaa1061e3ae0461df2a0d4b6ca8ce7663d57f04eb1cbfa5547a97a7da25
+9166c056404431d4d6aba117bd09f5afc62036f7961b648ca34e35ea3ec7d690
+fbfa7e9bba7c8a6e1039a7631d5d33c2bdcb2e9f2e7a32afe812ce6659fe701c
+53c78bf1e30c7e5bb335e3691cb01c1379e0fdf25a0a0ad9150c95c9a9516292
+4fbc5859d49d8ecf159adee1c68fa8d4467f810d38ce202547f89d346383290a
+458fe1a5586d161ea90f3a696f3ae9c581e43fe80bfa621306103857b0f70284
+bbf16eb5a2c96a9d95ad7eed189f2fbf315a0d379e37951e6095f13861dce216
+13f3e6b825979402603350526bffbe65dcb8893231e3812848dbd840ff23d70c
+b0a59c2e205c475de7a3464a7ffa65b3b68540f1851106fdfb94935cc493f50c
+cd7d4b4aa2d243f3f67de382ffaaa5b886d08978e84a7da6147efe2a71c7564b
+4a0cd23188db014dfa189109965b45c48f3eacf9969df7c39b426408b4720583
+5fd725b443d4712b2d09c5cbddeb33160b6d2244f4fdebdd284e70485d6951d4
+565febfefa692610d5f6b7bd16b49e6582afae06ba864325fb719da6e6457c12
+bccdc58072af95895def3b6ece3cd2cfabbab3085481aeae35cbe218a32aa4f5
+d14c8f4093fdfb5f9fb281aa760a52d3096898982da15044b5c0bfcbf061da2d
+9576fed648f55e9c727ccffc639e08d644ac1d508318d38a26be50216e5b5c56
+106d2060905ff1d6c4a2c91d59e6f9cfc8193fd942ca0d2e152387703b2b7e5d
+9a43c5f7c6372ef456d1dd36732e147d84cb6b2707d3b76de8a6ccedf9d9fbe2
+dbba5ba8f42227da3a5c8725671f511afae08884e1467125c52fd0136d337f92
+bc8468056745d8a31b0996e5712e1f1adf2d550970fdddd0271e40a060d1e739
+67058d2c70e7991ce944c926fe47ad64b29f30c86bdf7131e24f206e98da87bb
+385466c1ab35bff89f944c6c506f06b45a0ab24fb6c0e774090202f88813049e
+951f7739d7deb572b7a690dead116c3566b2d5f05e9158fcacda01154024cf20
+10be43855c52b5b865b2498a94cfb9fffb0ec318cb698f4a00664ef06a52bdf4
+a3082bcd16cfa13f92247b114eaa571f38661459bf5dbc1af3e6200bbbc5af3a
+e7a0ae268c0897e185d350e9e3727433624308f17f43b2aa1453c30a9b0385e6
+cb80ace847ede42e152ee65c0b3f8e4d2aadc4d2c6624e0448d618d7e35ab1e4
+031073b4ef8e86d37212300edc36f98ae79c66c1de1e7ace965cb7ff0b366517
+8b14759135df98a11da928c1a8de068ed4a3cd3acabcf00e6bc132c352ec6bf9
+3d7184616f6d796ee16bf7f3bce2d21df66abe2a8c26c646d9fd62b301af1432
+06a7090e11ecdab9decbca4075ebcc666e98541ae7e365e2fb89fcfb48cf3d53
+f5e727b65a4a245ceadf920c0a28a9e94f4dedd822a26eb2f6cac0fb58a62ced
+10af26d9416305191c23fe39455a6e05e4fc67c8a16e45b59cdc4c605c5c1d89
+9dd3a9e7938c38c809f9cbb00cbfc0e1f9bea36b374669616dcd98ea5b71fc9a
+27ef841ce31c501a2606219026b16b9f97e28ba19da5ae00c89165d9b1acce0b
+cd43b310a967b072a3810c22a99bdd7265f2a78a489e45d95ad5e3a0e74ef50d
+233c8d65f0f77690e90dce8c2b171eed08c1646a401e17036f941f45cd877d9f
+76ceffd0478c058ffa8e4e85cb7837fcdd71be2f03e2cbd6e4b79c51f55bc61f
+90b8d750901d811db581a19e5453157f13efb0e97a0f7c5e51037e2159a5eb37
+3adf53c52a71d51de66d3604125ad847055fcd7fe7fc872b798711c5aa7c66fd
+dcec4bbc05b512ae19a7a92fac9def33d207d6ab1c02d4ccfd92abeb2a82203e
+825da07987f2ee13ff4b2d784be5f8b9e1627946535bbb0a0add6d4235bb5198
+4a3cead7e5cc5b972073209a9c1ffbeee92ba70c757d37066c7f9b9dafa620c3
+177bd201a76ea05286b0e51505660351f94601e41b06f4220fe6989696606b8a
+51395d926d8562ba45b2a79704ea71a985339eae6feb67f37376fc2596605a63
+0c2f303e7b1458c55fc74d974ed90a2cd435fb43037799ef678e70fbc23b0098
+73a3a841fd711526e23ef10fd47a7524bd122abc23e3dd9b73ddb144e664e0ca
+8f174e604993446929c21e55250b9d6a90a9fa1c917eb6bf7e1137a789c97572
+566e6c4ed7d1f7682f9eff4d1077ebae529ad3620e663acaff5f06ba0a32889f
+86a771b62259dc9e128d377785edca0551a62cbc225b85c46b443b870c7d22cf
+74005bb937e81bca9b141d169d58fa3f0cb3ddfa6231bbb4cfebdfb6ea61864e
+345b8de15b5bd75f9f4612584d3c64a1049e259736d5c330c66fd1f10ebca27e
+fdf0ee1a03ed6eee8e6063d7ef84339ed6b1c3cda9617c0294a28259bedb0714
+fb7e6660bcb8b39c6997b926db70389ccc1dbc17844019134ad288a298568d1c
+906b4b3650d3eb9e19215628588b0000a0b821e404c5a26de3c193c465bee767
+24c91bbc797587331968afd68e58cc24c079ad2dd24ca175bba518d1327a1d02
+e08d65964ca1c8d3007ef907bf16abfc1c420a8c67540b9cf10e1a5d1cc19cb5
+d0f6c3813c4e4e0dc0204d85d625cf988e2b34b260a92bf1275414f8c82f93c3
+ba5762233dde6a42f2f6401fb2f29719f014414acde11f4b71cca188f923381f
+216ff6037ab090681e5a31256295d86e2dae36921019507c83761324f7b0460b
+23b5ed0bf308cf3e8c1d7fd77804f6a8d2898ed71bb794975a86321d6f5d1cc7
+fa574a1f09d99104cd30b06dd7755442816c23264ee33dc692da6217cfeded00
+52ef441be9e0014499f06bd55f1f02b5d8f50da968a5e635a6803db94ec462e5
+2710666d12735b715d193345adce584b59fcf13828153d556335f38ccb5d9ef0
+13e6768bb3ee299330ca995d5e00aa4d28934ffb0e7fd2d6e25b761cac92725c
+0a4a12124659bf581134398cec13ff9e45c09698c0c0e9475bc52f7480e54fa7
+34d89bdf2a13e0c872b3e8b007b994450c6239f62351423319193bde95e8606f
+825684806d648c143ce156d6054e182e8e4db69f6b14825580669ef18b74dbd9
+750628b3bfee8720132312fe900f7c8d374822adb4ce088d2077283ff2897890
+fdfdd625c220740a0afbd83ad3fdfb2e021973deb052896e0bfb6bb59348ae9f
+91b223a3278fd91766f9c182be5bcfb10617d94e217d0435e9da4e55dd4864ff
+ab83694386deb76e9c2379cf6b022ff8c77d8ab6e2262d2c1c7c564637142835
+d1507accf2a38ad08b7cddcb8b804b8bfe17cd5407c5a881ad24661257633f35
+ea009bc3168b5cc2cd5f1a918be4c1bd1255897c3f80bcf574b1a5b4ba2e7382
+300281cf80c77dee0852c5c2eacbdc67fe31111685cc9a45d585228996842d35
+9fce4c0c032a382176daccf77de31eb2a9ff81e0718a875ac0e35df20e9d1251
+e088ca6656f7a2456a8732670e026b51a7d2b82e7d1edf90c6b85f6b1e5725f3
+d2a4790cdb1f9b50170383ded2f17b8c67bdc086a4a21eb1149a2a268e10caf2
+51bb26905f2ba774e812a62b180010b63bb446f216863dc495411616e2436842
+774126ae07717defed787266d16f66248e51cd2b080fbf94a661e50ce41912e5
+71ad0a5887815db9894353fd820e9b9e8fb5d7c6ed2e21dc58717c9503d9dbb3
+0ceb4693ef8e8d43b0447d5f71e2e7a1404eb22407604f343ec94cfd70e3d8a9
+7c6d404bf80aa1bd130863d5e16c6e9054f4777242a9456faf2521ac5b345249
+ca9dcfeb5faa81e1f7d65c4b7f37da26dff3998d09c0af00f8f871cf12af36a5
+c8177e58dfe87a0292e9d698547751d67a5dce4e67937e4d7a914e1767fde266
+1063c88fd5fa617c53e1f92a808ea17cdfc143f8202b895e1a10407c830af1f8
+d372b854fe864f34c4e9c9e64ee7c0fbe2445b4047e2fb48d5c893bfd4d22a76
+fce7a1889922a628fe6c9fa68c482782911a628919bcd19dfb8c7b005d8f06d8
+d6ff332a39213193f64e64e2143581a6d83d6e5ad63ff7e3ea93773146044a33
+62f1d156eafac5368f2cb8c04e6bee58b8fa50b067874599238face9eafc8b4d
+25f251351d01ebc49d0622026729d029db2112b9549e46db300b2cf4db7626e1
+c3a4fab0488912f017028420cdc004c8531f5e0b2766e5e53be3fcc057992f49
+0e0c86032fe588cd8a799c64da959577d73e2400adc33fb0d5d46cd50d12b839
+6b246a90913e02aca7c2b66de114d19e0a1bedb5768aff1c802273b8141c144e
+de7e5b686143a9ac799887de2c4afc21ded72b7981e2fa0bf897c5de803d7fa7
+a0f989f332ecd598891e4e3bde6579a84ea65b6b11aededc4c877471f268a2ba
+4d16180bd881470043ee0718eb1a3826695d594f1883b3fda28717ab1301131b
+6e549de998323e70cec23b780434c24ef583a861235952470e9454893666e318
+4943aecd35f5cf853653670c41bed2589bd274a8dd4e87cf303f6f21079ee4a1
+683370240a469c84fc1ac833ab55fd1525f87670a3658bbdc13ca8fa3e48f159
+779b6c7a086e4bba0f27ec2b0b1ae67025d3335d83a8169cc4cbc3244b52b22a
+aad0f7a0b0750e26f2fc6b90ca08fb9f0dd92e7d4090b5d3d0ef124ad0e1c78e
+21006d8f1ada8903e1b14fa2d92cd10533a45b337359d056ccf6dd7a3db7579f
+cf3cad2023b7d72afe3ac6575b43a0805738bae24216d93ec83a5b176142903b
+91e8c8b44628f59e49683c9b91652dcfd45d08ade104a8f91a6b30a611094bfd
+44c7f725a0a512e184eba075bac7e7c60b4b57a536e9e2ffbf4addbc76b1e857
+a38854b1104a0e6c93870f6b650f7420113e3dd236681bfdbb765249cc6cccd6
+27b263f7868137dbbb7e7878dcaf064066a3bec7230a75b5ab4e049a8e5aa94e
+3e939c5be4f464b4a55c3e75cdbe555dbe319c6d4245bf15a2879ebfe0e4ffb9
+fa04f8e8ab72a8657cc3a4fb1d1671185f3e14ebccadd46941e1a907bf99ba0a
+4dce1af082a10752c541ec44d1ab83d475e7330947c91d2842df70dc0f4e0b67
+98e06e6ad95aa707f722f0f99c926ce3e94b4a6ca6c142b3c8d612efb667124b
+c6079602c21613ad8d315036ffe0876fbda817d5ce96817f73da442ce7a0b995
+4c428d1dbdf1d098aa852f90023a57d96c202cad95c85927aaa5ce8a0793d805
+74913351718da2f330f272a0407418d5426b44253885afd3149c6e3cb5e526d7
+24995789325d07c1e764f2ddf26f2354e67e9da2ed2f247295ef0552b9b562bc
+bd289a33dcee57be34caa4714af6ff52dde39d58fa3f3db227036d2ae06d8fd3
+ac5b18daad3d781e5820dc640933080c6d5d0c13e18672b6c14f9416621a4e18
+a7a4415c93c9d147b6018808224e306cab92b90a07b6be918b1f166284dd6a8f
+6d821bdb8e90a4fbd1389d6317dc1d46145696d4e167710519e178fe0cdcfeef
+35ce4a849d3dfc08dad77ce78f4af6797017d0500a757e56a03911f253ff0c86
+971321b19c216bf151689f7bb78ae886b2cca2c804dfb4c05839e65e3ab42f99
+0d60457cad2d77b0e3acc23357c28bf49224a0f6b219b0db85823edf1b6577a6
+3dba747651e14d0ea17c270fe02cadfdb868ebf360c8d765ae4de7f81aa7de88
+2fe643f7825dc98e4cdc457a0da04f73dbd95e467847cc34e398e5df5afe9b27
+3378fd0af0a101bd87c5441242ff28369e4a8aad81803d59b2b85009088ee41e
+50f4fb340acbb1f0e087e35c66a136e4c4a7ecd376a373e960b0d1d5200245dd
+d717fa9c8db8b72f7f44692caba670951af09d378190b1f26038244b5526193c
+c856124ba9210de65fd81464903837406308e08cc24b57abf9532ef34b7cda26
+dbcecd31b6f4c3865c2b4d701bb7ea51e285576faeebbee076138ad1341c5df0
+dff057e2516372165c50f74a6f631c1bfaaf6f77dc1e0954aaa846c21bced2f1
+f82fae14563994f7e4ffce16569228e01cfbe54df4f4d60da736da1ef239f4b9
+a424ffa996ed9499d00677951eba867c06e6f3008370f3e5a9da0b1998cdde56
+26a9414177a5d00c8446663c652beda12c7dca92ca09c4e2d8be36a3c792b9fa
+e8ff43547ed3774d3f01ef4e622007203c7d7d63fe807d10b2d718854ecf71e0
+97c64669bbccc78da5bf156674b5981551b9a36d9d15fd634ef84aeb0f4ed9a4
+43283e3793aa13eb7626560d51045981b0f844faf1cb91c0c413a302fcda3d60
+f08be10ca887b08ceca9cd4efb8552648069dd5860b7c58ae229da1bf25f0eee
+8119d1413bae52f931fffa1cff4bef0a018f1a13824452b6a562897af5a39a43
+f553bf83d0ead3aba2ef1c01123d1ff65dd49dcf60865c836f65266bbb1b1efb
+8d470da39028a1f3cffc0e1a94e335dfbb484d1e444cd72a82f66c600d8becc7
+d23dfc8527c715034b32849d71deab318b69fa83163c28866bc22a485dc8704a
+8eadee70b871e49f913613e48fac762b0bfe182002f658a51c4cfc040d078c82
+beff587b449f93c8720df9f6a507d5466e02eb61681d7897c8ee6d376f029a5f
+4835c9aad043434a027609e3c04c8ada1daddeed0c5be73ce2362becf412a34c
+f4c0630abcab5561402c8ed6a58d12eb5e44a34da01763a97bb920a6fbe588b5
+f0f86e352dd20a8390f72fb0dfb1c0934c3134bf7b6a5bfa229db814f96480ee
+b2d8e4fc23e9e490c3c9f008dbc3ef3b11cbb4c73434b8ed2cd8b0267fd9ae29
+43053c0fda2500c2fda616c6f629a204541c4d2f3da4d25f5e294d783724ca14
+0cab04abca38e16fc26e2db2b6bba9176c023ded66935caa38341b47a646be22
+ec3470fb6a2d4bc9e3595ecb5985534cf7ed8a10e8f70fca0fe45ef7c2b62572
+61f53ab591e50d5cc4f5a4c3eee971e3499b158aaa3a7fa8812cdc4d29403155
+b73db9a75c69211df222837fbc3fb0a86891b04f15d6a462d45609cac18d1439
+d017a4eb2592cd8f7af8bc321c157e619705adb24cd64217b841ae3d70251bac
+88db87e3320289d64766c58d60f7ae1f48d1ad076321cce6a130cbd32fa7be99
+3fd8772e51ea61a1395d5c9a631d17bb966556d2a91b9e7c26dec747e9dced30
+3f0c3c15f191f7ca244ef163bde924212ecbb35f82335609b0c7ba5a5854951e
+32f7454b024b6e8fa392833eb070764ff005c2fe0a802046441c75af17886f6c
+ed77a8753f83ef3789ce204088fb68a8f1ae90069dbc6e9eeaf5a35154a5d52b
+a6a7b199ab215b5fa344304141652581c46426b8e27cbe70d7cdf1cbc5602d46
+54ac0bb031c87ae20ee67bb1972a8bd66cbef09db738c11e1a731ceba8b4eaf5
+75707b86e7db657ff9a7e19cc94a3975ba048e65a3dc44cb4bce4227e93b99da
+9eea0162a38c09f4a34bfaefb4a687cda2e0da3899ae4ecaadf5bb56610433cb
+8659f434af81db60f8a0625bfd9790f539
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR12
+%!PS-AdobeFont-1.1: CMR12 1.0
+%%CreationDate: 1991 Aug 20 16:38:05
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 173 /Omega put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 183 /caron put
+dup 188 /germandbls put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 53 /five put
+dup 56 /eight put
+dup 65 /A put
+dup 67 /C put
+dup 72 /H put
+dup 76 /L put
+dup 77 /M put
+dup 82 /R put
+dup 83 /S put
+dup 85 /U put
+dup 97 /a put
+dup 98 /b put
+dup 100 /d put
+dup 101 /e put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 117 /u put
+readonly def
+/FontBBox{-34 -251 988 750}readonly def
+/UniqueXX 5000794 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204a520640fd7c4d05e35ea5486f
+a43d0e970787203855daccb1ed0b16325828b13b7c767a1a58c87902f0546ea5
+404440fa6526975783c2d7a9572b8e5d5176bac598b8960609f49016aebf3763
+89c1adfe6a1ffc0c53b3acd9d168ec3a278fd4f1d9b085dc2df701346c9d0887
+3d230a161692b42a45bb5da343b4edd839dd60685a59aaa49fc65cd8e2ad2a9c
+5cab953495172a1a9f40d5f38e922443a519dd96f667201a408bd1d89e35f4ab
+98e2f68c3366efc14b5afe1018d9c845d808d4f8e07ea8168518a171ab4d6e21
+70eeac099eb7ef46eb9781384da1fac3b3133bb718bc80082eaea88759745188
+f266b31d0c7e791d633f16ed94e05517a32163e74cbd96dc5db066f2a5313d6d
+7f09465608cb404613e0f058073af000e5bdfafbbf9da0c0d5c02a3447f2cdc1
+f56481901e34265c26d331ac3f85bdcbc7c51ef9eddf2b9c189c5253f8e74282
+d6f053d7d183ae17ea175e5ebc401e67d21a9fea139cbbf3bb1358c713a75843
+b39a69aa2b1a7b975f53ff22d1dc3bdf7acd17afa1da21568310c68241b31d3d
+03bf404bd30baf9cc19c75b958bce7155f03cb0cfe2cae0327aad4b603284a51
+7c26de75b8c6f6aaa9debe4aec08ca4b646d787800acdb445bb55d10cbc2237b
+ffab58a0399b8e1a4709eee6012432005487a6979cabfd75caeaa480f411a990
+8b6d3a2e7e6937783279ac9a51ac69390985d83828feeec2ea288a657e0f79e6
+8ac3451a6bb1c8989c512da066d6dc771548f2da3b78d01c03e2f8f20dbe256a
+ecfe723afaf1bd728b86f31fefb6a4cbbca356f80b837c9a5acb8f511a576a6b
+8ca0a701eba732630025a8438d137831678929805a6e8caae351ddbc9a5be60e
+c8290b795df0ddbceaf0159ab4e7756d967bfc714db64bf3d52d3fd48d2bf9fe
+81eddc7b93896bcd6ef6886c89fa77d0d01a3bd35f17717064ae123923fd9065
+d67973dbe82dcd40d91887f0637bbc5f63966b1d6fbfa09b2926d21fdebea226
+3f6f99a2a156fa06ac7e8f5b380cbd9952dfc041da1b9a26785307ec6838d4bc
+27faffd9ee6cf691a024e535c8794d46fb7d7a6f013fe5c9f2c76d9835b47227
+7a144e3cea198f573e68f38ff4b8be3190a9b436e9cb998311aa264896bb6606
+12456ebc690e85a4b96d7addb9b885898a6488015520dd43938445b77d7b8d92
+5b08aed854e398f3bc1d32c165a8307245ebb70343bae1a6cb5994f73eef572f
+7102a4355608f1516c8d4d9c84b48e09e394c464d439dba6b0604b31f9433e96
+ace184198a09c2cac7072dccb9510212f439efa551ad99997908fad1ec74af10
+c027e36b1bc50d3e94286e5fa1f5e2f1c81d1ae83f5d9f4b0c80e45b41d2a251
+ae208163bd41117f92d5a4439b1a218cf775a1c03f5eec9ba07e0f210f8baed2
+bdb753760bb6805ebfe24395f2e1aeaf6a1428970722917d15644203ffbb647e
+79d7684d113cde66640438abad67e8d124663d4ec09b13f13b097933180592da
+9274f6b1c3d9b5f8adff8707bcd7e2f9b9bf581aa014c81537e409f6a7a0d149
+93015beb65f59d9db7c53a058062e6c9f80322e05cd573636bc185cd056dc8f3
+724173a96b0da3dfecb8ccf5ef67ad9b55e253288a8ca6d9ec6d868f31bbfa40
+9dd266660b375eeb0a79a00edcbebe17e018101da68e512e59667d2b87179d19
+0bc281c45db61e0116a59189f50fc7045e30bbc8d756d12b08f6dfd355e8df97
+e3154b8cb57ce7282c172231e9c5f742d133b8fe2353a75c4c86927acaddd433
+fc8b509d12fefa39326a9553bdacad224b1efddd3245cc26152811d51e41a2e7
+ade06af900abd982acbcea0f5f33618130d169d9c1af9cb98617c3c05f37f51a
+d030eb4ae9ce57dfab8632e968abfd344d68b483c63d2158d95a7d0dbc1e4612
+599269ee0cb694c8494c24a120df4531a91c866713646bcbe306ef3eac9c1902
+d58cec810a9b31d8ddd9253bb175af491aba884d90c2bbce70ea117f891dc99e
+7def1c0329d27e94c77e5641f4b7093ba78e348785173d530c1f414d3e751475
+27fca4728d21e95b30ed96a0cc81fac4ae82958cc4820ea298fab6df0f7be062
+75a6d47b94e47aea3b70bb027805852c69da103474e804bd2b3be4bb7656b0e3
+ca7295a39e769dd25bc2ce82883733f8e0639f5d5c02cc709a8c54b77f786021
+6d48e52dfd5cb2a52e433ad76ccbeccb61ec2f6f0dd71803a708eeafc681453c
+21299abc74c24c036aba49d422adff7925b550b50ea8c7ff2caadf2952072530
+6858325b605f97ea626fb1ccb1bfd7b7a4a98882678543cd3643dc00cdb8f4c2
+a91bbf0fd2e265cb9916779d70da417ea01b8eaf25c5fa3073e7e020156d3fb6
+6a31a25e9e946bf554ea1ac4d21ecd90935939e9d43370c61afcb3e11ac4dcd2
+1bd09a3b9d87cb80a6ff4539376c311d84906142d08034b25d9c4b7fced5221d
+cfa8e0c000d37801b67c3ebd8c774397b68cb32a69fe62652a62ccdda7ec6dda
+298635db4d5355b91df0f5b8a300f07fd1e7ce20652f41e8df8fcf1e3aa64214
+f03755de6fdeed042ff358cf3a0893b150e4c990566636688793f7f4ec8bbfd0
+cc7d16af1642c5c720dc6df0668780da84adb0f2b9470b357411fc63f2fc8558
+996b7a561f80a4e5d84cab8ccc1220cbe06fb56deb8a81109ddd16b682ac35d6
+3cffae9abb8ad6283ea3b6087a84b445e51a67accda168efe89df07c46f33d33
+cd54713b2e875f4b4ce09fb60460172eeec057ea7e518a0d3a0e2c7506cb8a59
+a3261a2ab42297991a358139c7038b42134605fb2428ddc62e74fdd48cb26e1b
+1dff24b5cbdbcf0ee220efe93828a12f25959af106c1f5c09d299325a398e733
+7f10162db22a90444f732e052766d387a563365f94e479f22940c50577116040
+d8e7aa03a2fb53b046ea2b50be6f85c23d3fee62d403d25e0046ea65a062a02a
+a4057f2180445c85478eebd2e84032670081fc552bce00664262f9ff38fef3b0
+b9a4e9444307d71f6c70cc61843f0a60fa47d535cdfdf2e2ea3520a1377100ca
+e15c99e5670b28e98654684112b9443ab3e1fb94d867b9c24a95ca8df39fe99d
+f2fcf4048bfd24f37ac0611f1877eaaa78d7e012c30c2c2f2c73406dbb1dad59
+32c94634f06026e79764033d5c157bbed2d96d32c62e45a79b2c124a316a621b
+c2e1a9b4b45c3cce2ce01071de7fbd1be683790f7114b3afbb11d9e974aae11f
+7176eb6343ea3604baebe2f7de0c733ceefe88ed6dcdf3a62ee50077146fb8f9
+b58e0eefad0d71151b42fb601c638b6652b90dd94187b496c9ac5e8f88bc47c5
+57ba6bd1f7b8ce33ca1ede8521fa87e25e65e8d5b68158d59f841377acf6fe60
+040659ed22965b347e67dd3214e6b2894b0c3df9834e76a637a16a5ff3d32a6a
+93accdafd8fdd1c4a23f2306990b385791df50527a79ff2c3a82727384a6b5fc
+cb1a54ddcbab6a703090fa7c779cc22cde056d5dbeca1bb8a929b0f811ea3402
+6e47042d00aefcce962c2dd177f1fa7591d213034c73e48b60d49e3845ac43bf
+ca02456f7c5250b3375d52f2a2d522e9bd9ae6b0ae47cb1e7cd4b73920c54ecb
+a68fb9b6fb1d59b634e803474aeb5cc682e73055257ee7bf80267849041c2bd9
+afc424a0f4e2ef3399d5f421d392e9543886ee881d5ceb4e6ce3dc65009817a2
+e1e792fbf8b03f82b8f1d93a9a2f242367415a17530ba0c0f37526fb5b7909c5
+08a6f0cffd5fa76e797776a059be7fca35ffac082e92921b98df65660a9ed7f4
+ff73e152b726c7ec7372cb8240cd2ba53f4fd812b238484c6bf8fb0429a58cb1
+25753dd436ed62c30415f08cd87cbdf4c971c73f80326d95af19cf7afa379a72
+d3f0d46e47e8f3d4e5100d51c86a0b0567945f4a655cd6d682c91e2e22c1c8c1
+0c7f1600c8c7971049215d0f73848c9ba335da44c126cae0c162cae28503b44e
+e96a1d727495bbb7e6a2e6b6b39f37eb7f91ea151a6f58577604ca9fb8443191
+a54c1d804136b3e68066040600284ade817a76aebd3dcd3b1597628c1317fe3c
+2a58c738fea7ef953ddc6288d9e73b2eb1b467bced6a9bbc45417a9691d653d5
+8f68f53faf25ca74a882c874e706fa2251e7f610acc3abf8b841697fcfb8d7db
+25cca7b9677db193338e0344f922d3a028386fbacdd9190da245cea28d26b760
+63be4b1900b13b5a1e8e12c7a8ae08ed862f8379bc9f972d4bd3be7df7891c32
+f27f7efbc825cefdc4389581bc107914dd62bcdebf9de923b92a5a2d0b0f910a
+bffa80a854bd143a056344e7eaadf00d2f75383f1d077db1cc80d3145ce9c798
+fdf25a4028d6cd36f05728658ec4ccbf8f712fa27f02e28c2d4ad7ad2231f17d
+0d445180c4ae79fd55b19d133d38b08ba5227b717d5bb4621e606e27bea40492
+019906d7cb100b8aa85bddb011e2ed2d499a153fff6aa6763ed5ff7a64205196
+0a2f8150c9b6e282e673ad1f82b2a02225259554e05604a8e2ffcbccb7b742ac
+6d7236a72fc176d73abe74295ba0923d67d6f226a1a48b36cf94ff2666a74c7d
+c0a2e5a298b0a260482d951dcfbac8fb7e09b6a2c28bbef53c4a8c827f009c77
+d1080ee8e71e4446b8792f9f17f8a3af7240298ef93d8e8c25629f7539397b83
+d6a8802e3821184e985ab7bbc659d365fae7d9c78a8ebf0a8c08bc6511d24562
+2a18d862ed8e7e87dc3df28ff5e07633203de5088eac33ae66eda557b4072373
+f674adfbf39930c4afa2ba141616e01a0fcdd69e7d3be1aa1272eaa426514520
+a917b47559d156103b985de00a731591de5dc6248e55180643a16e977dd38e46
+5042b3a21a2f50dc9bf5ab0171588e0c6ece477aa8f8e00bfd62f6470e1b28a4
+7b6c59ced01b32a86d0f3276713424adf61bd4d7824ae6085c5853bafaa42287
+60e351f59539aa607116cd5c51a2d508ddfaafcf27bd62b00636f90e2f7b200c
+a52bd6d3008b929fef22e5355c75d3459c2ce06f01c35434e221bd0fae8fcd38
+ca4308bfcd3248b84918c17e0cbc4c3864559f9449c994eae9c1906e03c9f508
+de0c3c7c2a9a3870a77370f00c2ac54ffd477bd59a4fd4d002b76690fe765c0f
+d964822fd9dafc63fdc68ef68020b7289092d743e49b01f5758eaeae41ce35ce
+05ee0345a682918539e09d61c84f6ff3f0fd094d54a05419a01b3845a58eff62
+329b6b8477d493bfa0e119b670dbe38e7a41d34eab03f35fedd932dd0dc2b4a1
+1488382b7869efafe43871949e2f05e864f07bc1541b6ce20c47772ce0ddf2db
+26999d7fe45fccabf9e724ed44128a430ff882783bd5686b7a066913fd22c9bb
+48813196660347df86fea6d0dbe948d85cb6042ada92c2f3e4b11b1b3c785b47
+8080e700d1d5e2578070a20a37a158bc489415cce47661dbe8c1bd38aa3b63d4
+0069b1e1c6f3ad3c2d0f2d6e4308734bd5d029b1cd6c5bc90e851cc1beb5cc85
+664e5b2496f23edd303a334a28895fa0fe63d9b840b8e8e2a2e02dc1325cc87d
+49d88343aa82b4b5ac98e5d3a33568616352e7597f0b61279a3f36cf9e411e48
+ed23bc8e1d4494fa78d55ee71b918eeed6ba420099468cf802230fec9dd0b2c9
+b6d08854124b721b7738e16ea74e3e0f032b92d13bc7aea157660d73fa607e2b
+f2eafaf8ade537f530394cbf79ebd95957a725b8cd7c8b2c103423e768c81507
+9cf57543abd1be3df290aeaa527a7d40da9934a1634a3506f92e25a061659820
+64d67b616966ce64ab302a0fa2ed070ee6301a1dd72a889a02485212fdd64a9c
+e5b6c338dc5edec49a2436a500f1c79b6cf14b0eb72e0e5de6c62195edb9ac8b
+9285cbdb1701a9aef5e7524c1ed1ab86ff1e51da97b04ec0a5dda0a03e7664da
+c19ace5d00c308fdc5e600dfa6cfafe21940164d7511b47c1c6015500c683cf8
+c6f6f36b1eea4da05d3cba412593d9c560b24776b05bd7e24f660a90ab2f32e0
+db402ea123edde9ed8311f4f0424df4e1f1228add0fa8e8b2e560bf23b9a0a78
+fe94d28495c65a01eb83800370de59effbed1a93c43a64df50257aaa2e653d23
+5a0c9a6b2a43cf8863bdc153df18a91f2ebe6f5b5c0508c330cfb4b4d9b4b69c
+a8632d6c9d4b070eaa8e3108b7a827aeb7c474570bd62b9f86156c30b5dd8c97
+acfa336aaa4aadbef925045a00f7e969f158104ab5f1994c470a2bdc0c1ae95c
+21d985601688754c64e539d887c14325e6d47de4c20eed1c7047166bc805728b
+e36e3062f433d263d2b5d469b687a6c7b228fedd5c2a53d1d8e4726635e95092
+a8eccbc22ae1c249a9d2289ffe7ac26266dedfedbb9794cc8743942c55b83bc6
+4497c44becd6271434b56bccc1771bb07af9040bd749cb61b074c4a48d014479
+9d300307e901136cd73a9a02695ad66bc6f7ed3f218696e5728b012bbf2e8ca9
+5d469341e0ec243d74c9c7b1cee6c6d7fe65677b092296153c261d060f9dae19
+12d818c5317b02f2bd36d9d5919eebb8e1e49999d0a1fbb571ecdd9ce3ac9b64
+40054326b5150b2cdae4d7a408c5babaa8b8e226b3c7f17770719b210d0bab3c
+314b103ecec4c6ca19e8ddad710db173df72c74cc74a5b28951d335f749b9e82
+66161ff4dd3c11feae82b33e7599a73241567bace729f79f458ccc25fb1dc4a5
+a0820939b49f381815108e5fdb64bfe4d3a044e6353644edd1657e1cb8a8bf01
+812556986017cca839037324600ed0f87687bb101f49c43754dccb39eacd274e
+8fecd9ed471fd4aba83be698c7bc55211824b05c014e80cf8ac1f7d740d92eff
+8428d647db943368a14399abb765e5130bde3b7594b9053e9fe78647419c3eab
+d650a1e195e468704afec34873130674b7ffdbda25f817e87a9d94f5b81566b8
+194704675689085a7f4b99a2db5436d0555bfed59df0483ad8ea3dcc25344126
+78747adca3a07207d323ef78520eae9b37ae40f056947bd6cc0260b765ac7ce5
+b0de2b1e1283f24baa5e8d43ec8a007dddeb01439f8b07ef34251503b598981b
+9a03667927402ca6c7f0a1d1a3ee0338b6bb4aa3857c235e7999f810f608911e
+0e764767219dd91ad83b361b9a4dd236a5f5a3d84c409c07e986e0f08baea41d
+4c970b024b1a6549d4474332692edbf3042f03a7f689b30feb873a9985ef56c1
+88070cbfab5093785c07f350cdc6ec1518e7d49ca3442e5c62b4c118eb81ecd5
+43d9ab029de0542261811d121f069d255637ac51aea1b4e4e27a334a5d12e56e
+6c3d2352223ee76a7b45d1190ea8302e4dd70f60a1970b16a7c1e8438557205b
+72298e1c91b0ba3392bc936019c2596d1e40c7c6a147e7955835bd77c63ea55c
+c4764118cb9867075733fcec68927bdd8a3016aea9120317633206db70df9330
+e67ce8b2b8f8207f7bd560ebf2f507ec96e5d93bdacf90d18532d238fe3803c6
+29299da77dbe6ff4d1fc88b221f89fd2303842ac148caf78eaf6a07546416810
+6409aa782164d7fa7c9da4b15e9a1b5ab791077fdaf7770366490b802f47284c
+d683c2e03dd9704a93746d6604f86fdc9bc9678d7452060d561d49204aa3ff61
+ba339ba7fd4b3a0fbc556dc50c06418223398048d9107d966d94d7843a2cd8e2
+c9e0ce63f1aa18255cc0dbc76e2430b5219f0e230a0e3f6b96605141686fbd68
+710dc4eaf72817a6fde284a34ce5ef9c4333b73937004c6b951aafa5d3c6554a
+262f5d4a3ee94fa7f3633c6cefa901af81e860a36b01cd8a138604ee3333eb49
+a9698370cf5977e6d1040b697296131152ad3641b6f264ff54a4d6615e0d9d68
+1d2544899e75fe4794f20042756f8a9cb7cf13a45ca568cbe8ac40c6bf96de57
+a32c33aa587619d6ff5a9456e6aa5ad9ffac69834aa07521144a945f9c186968
+d6d755e2f57f383060ffbd51dcc9b8999317a1989e7b5cb2b095e9e655d1c4d0
+cdadf7583e25ac0c94ecafba5231f495f6a7927c05e7e949e128d70ec67c4ac2
+68f1911a506bb05ee426f4c0b60c7857e3a8ed19f52c231547343545a4285eb6
+5a684b01e90abdaeac75fc58e1c8ff1271cf2840d97e0b661ee9b9518c9b284d
+43bceccca44c2a79e0fd0ba8809bb03a4e1df4dc5056f79eff4726bd4c332e6a
+5f748d58674ddd65ebf264c34a6e8b6e47a4205badcb0cab388641279f70b52b
+0fc6bb3c25760ffc83f101f8b0bf375e7f8075cade611f0bb89ec7d1ae763f66
+1f1c95cbd3f00b157de4c2cf8ca3a6b3c7681e9ba238ec04dc230b4b90f11610
+d03efe16a98a5ce64aeeb583ec83f3eddde8a08b5c23ba3c455a3a353b7b8106
+d0bc4cd9fee6df7297d763d2b9e2e35861ae93f2248df0a7513b95b657f4f810
+030b7d6992b5ce974a43a498fce0df8472a7942d4761ade714a9cf8c588c7223
+35b111573b6f189c27f1c8163806394549768b88314ce94dfc6b6c732fa0196f
+fb896da034bbd0af6c40cb5e7c5216ccf6336843784a55da5f34f67395008476
+86596db5d95880eb3481596e899ee223fe50a4618d3b594e5d230874f79d7c3d
+d2b486aee62c636ee8a6c3e4719f0e751da5c19aae8f1478519430fe1cbe9047
+9e33a3ddd57d1f428f6cf4367169e7a8737196ba4de6d4b68705747fd9f05167
+3c27ba81595ae4737647fcf131cc13409f42af5d2dec023e130fa53c94c49d49
+2715ab81b99bc1a6a5bef1c0b96c7ff817708e89bed71cea0f73da60f079952d
+b3ede1323a67899f327eecc7a1b8941e32f2dc851b62628a9607a4c630a63089
+2cb1750bd64e1200732ba41f496b915b8e56217e1c733b5508db28db0263a623
+d60edcaa9e55cae02a9efe6527f37496040552e81ab5a1280cd296a25e97c2b6
+3ea2695ee2246038c6f20f9e1f21ab533da0d82fe5e27c903ab0dc6ed45cf49c
+3cace58c4e055d69debf2b3bffaacad5d7d9a345832f1053e2705c44c14a873e
+17136a38ca72a6c5717465920c0f0ebb468b69c780a791cbf1c5e5e6ffd9540b
+3725c18dc06b3c3ed50513f2677aacf169dab438238e8d6af3b2228c1c6eebc6
+d9a478edcb3793651a4dfd046221de6e9cd8540a850035f13e1c246a5e0c728b
+92a12e58f8d417fafcfa3594007fcb8e2b9d91a08fc4c11c9e48646b0b204e0c
+f0d88ba5506304b4dff423f06316e5b8202e54cb3c4caa325df401529ba4d7c3
+b5e470b54606ac5126c65526bedca161e68e3e0ad297481bc815c7cb97d2a6dd
+a2d283a0cac97ba56acfe12521cbe46d6f3da91a9cb8af1c6b9d9919b225345a
+73ed425c552265c66e3f86172b4d993d19c9f2bf67026aace3cfc36668928b12
+3ebb2180227c783cb258f24b1b0fdde37f88103b7984119c46a99031bb7bc1ea
+52cbb31dc82128925e2a84d074c26157e1e2dbf253f5f4fbe1c470acee8e63c1
+605041f3ace9807de87d66b1279516f07c7887e1f5685d33591cbd0e8bd5bb33
+f29cbaaa558e2702277268e23cc7ac4a37ca06991ef44eb3bef991d931ca9dc4
+96c125c652cf62afa8952ec5e09c11c1d4cd39da61ba584d1ee99450a0093e84
+7e7365a875c2d2dca30699822a0cc56fe92e39d6fbdf266248eee4aef4e37e0a
+aa12ee9256979e8611f3e3766d48f2fb4dbf29db6fa62e0516f1c9d6c28655b9
+4a5b922114c64bc7da5587330fcaa28024c165940071f0f72d5a2de5c06f4b42
+db8e4814c6dc8cd9e380596dc592bc9e2a103d0ecadcb42dda3abf5ec8e6ed8e
+0aa042a48e10f03a4e0772d21ee5293552ed6f1d2bd854dd9bc098b664c2308b
+8e39f4d1cbb073c3ec6853aba0ffecf183d3b29ef96b5f1c085f71e951eeb752
+1469aed7b531b622833d9f7dbc116c9a784d61f6accd2127d6b368f45754beef
+2c84354b93223d2cfcdb10635ab6fff474c9ce3d5f6ebb4f9a67561a7ea8aff5
+85a038b3d081a18bd4465028839cfdf0af028f34b550143336e943ac9e691b4d
+737a98f474f4bf344d3ee0d0544525c60409b27d8f0ca0147749f3b8d55c2e8d
+01af0d4504f1a415ae7ebbffee4c0e350053ba27cfefe75f9952f7425ee76dc2
+6483b6691220aa934f574be5aab466021eaa943827e044b971fcd0bb7ecfa23b
+1769fb7d11d7e3541a7599b2a62dfad046cee7339d2db9ddc2091226945d9a22
+7cb26b8fa383ba24eda0a98abe71042a8a5e9011c319f754e594e97e5f0f9c6d
+8cff3117ae25cca6e7d0b2b8d42f5dd8d92dcec7bc5ee401dc7481ff5f0c1395
+780ce271997f223e7e3489c23ef85c503e0b2edbc0c22a2a874e7ca63bf24e06
+77c20052d81de36d7a62f5b327bb8c2710e5195a6cb4833380287a8cac5b4cad
+988a5f1ff2810007ab478b6d22460759482bb81545bc4c29962651439bbee562
+60332064a29d3783b2e32a05aca9eb410b31cb9a03fc17559cde447ffb8e2553
+19a08716c84c5cd4c6b057eb96739c7ff332f155c8cc8b8e0509e22d14c1fbb8
+94be795d238dea9f26d750050ea1ccd3d7c3b3c7cb4f9ebbf64ad6d7e0dac528
+53ec0f8a19bbb254d48b2fcfe2804f8c2947d5f23086020f0bf11cd5722428fa
+3b19baeaa0e179ecc4ca02a83e2d00f8f089d78cc3c86fde82672026b37df7ee
+841e6f5d689004b395ba4aad52e72b7162db8078e1f5b60bb5e015d54333b432
+a5ffbe780d03464881f9317fba07d970e1e6eeabc20a084ae5e5744f23f47ad7
+63f9d56ade14772840bbb500fc19c601f204fa00f78a6b7fbd6bbaa7b01de383
+2a6d3c0d408ea16eef5d757dc45111648f7410
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR17
+%!PS-AdobeFont-1.1: CMR17 1.0
+%%CreationDate: 1991 Aug 20 16:38:24
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR17) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR17 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 173 /Omega put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 183 /caron put
+dup 188 /germandbls put
+dup 46 /period put
+dup 48 /zero put
+dup 50 /two put
+dup 51 /three put
+dup 69 /E put
+dup 80 /P put
+dup 97 /a put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 108 /l put
+dup 109 /m put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 118 /v put
+dup 120 /x put
+readonly def
+/FontBBox{-33 -250 945 749}readonly def
+/UniqueXX 5000795 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be356c29c3aec91ef17f5d31183b1e489f1fa
+559a6693fbdd04d4f7e99886d8cb7cca13d4aa9ceb34a708af22e69ccef0e504
+c3997075243585edf60b6447c8d01cffb04b6e3ddbaa7da5891286861322a795
+e9d990fd56af2f5c2b35801a0b07874e4ac3170481d232e150443253c92a8b05
+513d4a4154a99d91f629ccd30376500f5d16aaa9b203bad6350e4b19424c0e33
+75f2949bc1927a6f6221252f8a96618e646aa1b0810753c98becc26b37837775
+24bca72b818d314074c1c91f4e1f4148d3d703d12d179ee6970bd55d04aa9a9d
+97f63f2c7dbd129ec2ed3ba5f8080270ea5854ea165dbcc061e2f47f1aaf0997
+2ac9a689a2a9620b91b53f6b5092884372f5f7afca495f331138d85a97c5bb83
+d8072dc88010fc89108b60bc06d4f93c722e8908d7ce3c1ea3c70e9e65edd769
+7db17ce0e012ad37d4030f33d30a73fd655b7a2e572f3378ac933dd75082f2f1
+68702be19bc60cef6bd5f0ada180d21408c04b7f7db9b6dbaefe09e809a80ddf
+a5366d10930d3e68ca53e4721ff525853f4c784f2c2c3aa0129a34d9df00debc
+ae4037e4c0fbdce3989f35964b4c07e7817b805bfe8c15f0c0ebf226cff606b6
+2954f0f42dff8c214a6537ab666d25389c44db7b5866440bbfc137712bcdcc89
+c68cd1adfd85648b1ed29bfb45a564b02172137feef782d604e0d7e1f1737c96
+719cca9e4b9dfdc87e5999b886a15ac572183df8607ecfab5eeafed9f2798b3b
+db56dc26f8b6f000eb0ecf24341c969953e317cb01bf72bf002c07632b5195a2
+8995c0b23034671dd2ff7f0334745a5d09646bb6027b54034f376bea19419a61
+757e497a619513e955d2550a1e22208ff446f974f02c629d4eec9342cac41e24
+3eda835485be27f1d1a6f2be3ac82262b74d067752a8dc602ec14c9f3007faa7
+c3db96201a742d9df127da560c6d8562103d07478718f7ceb6cf2247fbdefd09
+808d2515f5f021fb5201e1f84d0cc4829e80642117f6ae7ed463670402baacaf
+a7832c9cc2ae5ef803aec7a910c760363a972dddfad4a2f3e26ee34b6a878f25
+b7da95979ea7fc1c92ee30e310dcdcedf02f54159d50f77441cf0d6f8cc106bb
+d708c8d7dc0e462fd6852ecd375576763498711042ae96db57f4c61335902f5c
+0c34ae93bb3686784838480eeb9300c1a59cd7ba3cb0a9c1eb3faa6c8f77a957
+f411f8f83845a78435f5fb0a51e5da29532cf28bc53ea687e3c8a7592df86846
+61af4dd71107c4ad068c33d1d6d6e5e19826d888b0c077cce6e367dbc5505f7d
+35a29f04a859012c93f1c0932174fdd43aaf5e6c3e93d56dcd9e139f11189594
+36126a20732bd8e27bb61af8051157066f85109519cfdff06a63c0aa02142c7e
+05f834c970107c7a18561fa1bcbae529080c6c8effcbbdac71de2d0549ff002c
+c5824fbe1f39633233be53fa5736cd0ca13a5a73714b1e3324f5fb2bf458a893
+67ea530122a1eb907d77175063b1e8f7882294912dd48b04ffc25a71a8a61682
+ad55bf364ab347415a17e3f7b5efb9db5eb4387c1bd1b36f839c1739bbe040c6
+7e3582fa3eca89779ee4b4d7d1024c292d502070aa1d4e3f03e9964986a8b2e9
+05313459d09d24c3acb26d0df958d2bc1113e28bced5b9c68c42ac8f467965b5
+ddd75ec72732e2cfce62dbf45246f356a7ea610b7b9841cf592e3b459ab7f095
+915e63016b4a2fe3fccc7284c88903f937ab0d699daf9ff64cc623930a845e5c
+35127b27b7683f9e8b76f14824a0dfd90fd3281373a53edcfa94ac279f3092d9
+e0b103fa5ebbf30448197558f56c8ed022a4c689696c5d3cdcce8894fb4244fe
+12ad2526711d793264652bbd3c9f87d0f3ff1794607757370f46a857b723029e
+5e4aa8903256069ad13df5b5de53085a8016265e670d4bb4687c79618fcad768
+9d6ff170296591db21c1f5342f4f62a70e648f8a065153dfb4d43f20e3d16a0a
+7a38299aa975dc502f3a3e3487cac29f005fdb5c3e0379cba51b9a23161945fc
+1160c9044a1c223c38a9d9cda78662d4188c678dbcb39c5d897d3ab011109334
+6a3bc0dfcfe046d10e184726e6aeb89b99f8b8f0373bacbb473e55ce54370a83
+c5b2de76b7c709507f2c782c45a7f0ea7b576c5247032db843e8872dee84f965
+61a2bff379584041949a81b0bf39c91cbed1364a3cfffd00fa6053f4bc07b467
+1fd0b9b3b510e1d1000be288fe921120909deb507ccb885bdbec11df18c53fbb
+a13dd91cbd5f20d22f50eba63a2695e945dc73f6aeebf7200e7223c2676de017
+adb25947df341bda41b86561dd5e4d875af76770397625fb90704080bd157788
+b6666a5ca821d79c7cbae0ec7764533944268b47976e8f18f6b8f7c846feabd5
+80c11da637062def05c1128744f6c14b7e5fc187abc17db181feb376b191bfc0
+21c679e56e7517c76ee4f6fed65d6962c31c7c78e27de37a28abe2e1df7afa5a
+bacddaf78d83db673d88b8886480eba5096ec456aad79e935c75a1c5b606fd79
+53743aac30a012b502178e769e70e648a5c34e97364d392d90762a5f4b021ee8
+ea9772914490042d84cb6ee5bbea7739f8eb71e85a9f4763c3a6a4e3fdb34a38
+60d5b4d857d56b118dabc6d51540f8c3063789d817ab22a1beb250d29ceac865
+0fb4a82990a701cbc70039f682dfad254e045882e52634a2b1958daa5d53369c
+a9daaaea2d55f0d216b955a43d55876d6aa87974f7616ac98d1be35d361ba3fb
+39785d8f88951dd383be452050193be1ea03f8cf85f33709e297f55e262e1d45
+57bc920c0c78c5b65d82adb351f3ac2d508f727edd5f502a6d7a9a117554ba22
+0f226aaa36ced97fa4e2a1b248c7f21268c0eece69c51d1fe21564f173cfceac
+204aae61ebb2a0f052193f769e4b4c77b6eb6f82174881a695f771ae067c1fec
+9ad70ad0035c78d89d9122d25ab7b2d3c8558047c1d7295ac08f16cbb4a8449b
+7c7c7bcbcf1c70498fc99e46c2799f359688f34f73f553252e21a91b012c4679
+43c60d44060e1888696002ccb82c20b9be25ce5aa2b1f7a44853051cc74535ea
+5e31dbbc987b48c1bb94b84ed633dce7a2c234d55975637564c6a1f94a509628
+5287ce5532222064142734f371ec1ee6bf42232e3893f8c2ae1fcfa1bc123e09
+32b957c571d517f33e78396c1afecb3001a415f86420ed36db14f82c24ab4a2c
+8e3624329a2edacf7d0dda5fc922154aa62991b3d8468067634d5389335d7930
+71b2a92ab97e1fb980d57f08d87ff91f4d151e08d35d22ec426509e697aa5240
+1b3af642de761c630fd051410c2646d30e2f7cc8fd7a741358fe7a700d3e4f59
+fcd23dae64ce06dd609f5eda9c61c5b7445e465f3a5cbe11e9947d520eba1e5a
+d0810b0d15065dd14ef7e824aa413753a83127be40335eec5cc3467bd0a81da8
+bed57a047c078651a4f4155316ce7461d9897f1b84442904365a6ca31ef11210
+9246a247beb048948e06fee7eb1c0d548c334e42553d46b4b5639c10972f5820
+f98bfa1e5d6e3d3269c458ee5e433b557981aacdafd3d408c44f16522e130eef
+89717d4c758e3d81cd8c4d3e275bb5d2ff9b549b3ef0cdc435eca41972bc9ed6
+edc146f31aebcd8450f6790eab6ac3ac89325981b4b005389c846b9725e76340
+90316e3ca672bcfb8ce8e44120337924941293d78de225cf9b532b4801ecc728
+577bb9bc0872a8cbe3fe22020d305264d6cc96069674c3202a4243d0b017d5e3
+be2eec51822837a2691fb4d00f8031804a42065e3c9d79c5f41d8b2fae2366f6
+db385fc22ce0258942b1d97a9e4fbf9bd9b30e9bfef0ebb5e52e098b40d4708c
+e5bac40b1582fdbda7f05f1f6496260e5d040575631d0896a4d4180500b2e49c
+341d36d2abb3984b4892bc672d38d0ab67da25f12107f51c186e0109664cefe6
+e3a31f5b264df8c226817cf9d9a0532c5b8327d7ad1beb214cb725f8f94d43cc
+2090de689e5a909acb99037cb4de7c70f9ae1fa26a25995c8d796dcc3700199c
+dd4667766c434c07b936f0fbfd3c60199c01e0203a0ab8cab86c768165c8f6fb
+fac593ae053f1bc7f46b4fc25876e3a7b25273cdce3b7fc8572416d7b00ef393
+d21059714f455d74213f63dd20bdeab2cef6674fa228fec485496f303d83cb2d
+2db3d5b9f7607db45cb440cbcd3ce330faa3f17452325a850dafc599a995127c
+8ecf0f2298283ab00fbea977b1a1fd0503859f8741f90767b590a4fd83bb6bf8
+3b80e244a2ee2808b0a1992e5079f4b758d5a322c2b679ce21da1cf5f3b7f7ed
+a1254d4208de327e1dc3fa1d5076b69956b46c81d6b7e3518597bfe9774c8504
+04729c8b9173b8ba077890f5bcd9a4e3ace8bf1fde52febf8a682417f3ba16c1
+696e2354fc1be84e5e11787e4b7067bd4bb9e7552ace317c3c09ca692fef9db2
+08889af43b6a125d3f958fd9b4543cc8f331ac47ed5d097dd0d6c74fead6e0c8
+f79e6362000ac62e01fe36c2c48459bdec6104a151d378692854c2605acdd120
+db944911da7d4f974cd1b94c54b200896f9b3535c0ff5c49db9883f8f5d87900
+ea6a051fd1353166a8f36a1e04554ec4757f0ac0b5fc2e323c822c60719a8d52
+bcba9534eeb18c8b3fffd6c1a96cb7c2c6c03249d3a499db918907bfaeebcddd
+6ee03c15f3afa0fda6408efea4cb74afbb376e9df3b2a1d8a3a03c7846b5fd88
+783697d2f225de5153875cfa1543dd8028932f2df3a096b38ab69f062173ce91
+c02abbddb9a2abb07a8535faaf7bf71574634f9c9d48b799faee88de5ec935de
+b991311917507020e1bde74bee1068880bdb1737366b13491c79917a5db18d55
+9c972f2e386c7f516f6bc35efa9c09f13c34d94cd53cae0aaef3339f8da55a48
+28c382e72d2a8f90a559a030bcea07916d49d63ce846977972d886325ae1fd6b
+29c1a9af88cffd33034b3b56ba2410daf6697df202f1ba82f12d11ca3ab35ac6
+894bbd45f30c0c87167f699c36fed54059790216294bf2019a908f9d12f52eca
+9a85710974b60856f8e490b36fcc610f50828347f4dcb45288d3e32c52348385
+351d87687e6babd365b5c534d9d2ba23d55c0cc226bab35e6fe925eeaf74a7cb
+b8d31587a34a619a79d646c287675b1a7dda68ccdb87f8e116910c9ba28dfe84
+b05e6f587302b4d033949db57504cd8317073f22408ba4408ec506950e29631d
+ab1f51f6e59fe0c709e0d7c9ad5442f8d95d3bb5d6b314019eae101a05a0edfa
+fdc96bcfd4ecb288930cb121e37519394c9156a5e8357e33d3b47e4d7985e273
+931822c654c725380a7ff650bb3266d2ab494515f6197732089ec08b80be5577
+a7af286fc2bb0539b14dea96e8e872d3d18f64fed119535f0dacb155581775e8
+23b55380c63a364a2181a4a2746c5d8269fee574a15ab8b69899deb54ee6612f
+c49135fd03b63eca562cd30d3b37becde9a1eb3903fa8a4da54c8fc6f0558b57
+165275e160843b52d48fa258d4c8d36cbb5b8a7e3cc75f5f1040fc799bf6f663
+8ebdfee29a18f3da0ede5d7c668414ca2c0569a1160da43957028dc8b397b47d
+ce708f30f45cb8dbe92cb3b98d6e9c0c85d171e71a64a155d7144c9294167443
+12f00a5a869a0d21669fdffa665288a3e896785146f06f792ab9a2d9cd1fff11
+97b457fcd60757bd5792ce8c7986e2fe0ac4b306fd541405f126bdcb8a268ffd
+f49e7dca89b97868ed11c7e53a0e80b89f6d5fccee65f6d68c27cee743e3481c
+d6f9e71edddd25531afc6c11aa6eb41f2822d500c7a8afeffcfa826951653b40
+1e2dd5256ee6eee21be2663461dc6412cb720fd546d21f6f22c36b85d8e6c0af
+d056677df0d5b3e2ca3bb3a535b7869b2dc28919452de01d43fe96b699e04879
+eca003e5d115af35378dc54fabbedb68f80ee975be2b0d2f2362683997ce2c10
+685a72158da5ca2751b1afd243300fdab8dbd17823a054a63ba06a52945fdb69
+4d3ca5a890e6452628823305c449b31f370df734457f3dbaf2894663ff72a33a
+1ddcefab559dbca958d355156a37908312c8c6375ec27c8c3a1c1fabed5e1daf
+6c9b384faa10c5cc752b627892f3da75e88f9cde6f53e06cc99d0d0e9ba16a21
+59bddaea7feed60512034f9c0a85c9ee97c8477e240ec0209b03a1765a43e4d0
+7ffc8538fd725933c89e1e7b14446e15c5edbc9ff54506cded1892789bc1e9cc
+34a50b0a5fbeb0827db47753367b9599461e58f50c6ecebd4d99ae67739273f7
+818d15fff14e7464ed0db26570bfd10621d394d3ef8b64b461d32681836ac9ed
+a998f3c6fe48df4b8c566f5352f6d7f53bdb1d84f02ac329b35b2f0c6f8e21f9
+424462bd7f5c037a48f5594757ce670575e8b15680c190e8b10ea68f9a28c96e
+7b83b3da76dd4f685b4f41c2b38886bc592447162681d571d1f73c2cd5d31b08
+e9c455921d32e8bb490b9d74783217fe10f7c0a05dfda04ebb93946ac22886bb
+419b2aba475c9f9e20e482f0f663afbfccd97a314e37046c9baa5adae44983c0
+16bd10c5bff8f569aa09338b9f71346c33a87206906c7fc1c22263f63a4f0359
+3450c47297f0c1d37812c4b40723fcf752eaef2f939f9806c4acdae0586253ee
+02a2640a4a990b43095d617cb9aee837ef499a68537597682afbd000f78e4a91
+be54644b0b66dc60e0732bcaaec056099d6d7fbd9939bdbd959e4efa375d2605
+11dfb72a7fd28bc127bae9928022d8865c2a9e266eb035a2bd424d443e9c6af7
+b7edf0522272cb7b00f80de8a873544a7b8bd982d584f9f9af487528d65276c4
+24367fc46a4f9594e4154fbad0cff259e04395b2294cfa8ca696711c6a52e1fb
+9703b4983c85659e0c419d59ebba3365b9512f6117697ab0ac6897796fb3a9d4
+1f5ca4a46d11a3daf1be6565cd5d7bd1b1ea019b4dd5585d132a289c9c86c4f5
+d8b2dd596639d66ccf1e94f2687d19d766ec60a4fdfc72fea79d0d70c49ca983
+0c4cc4a10d0fdd0ec037aa7c23ee5ff3fef0a9bc55081663de7f917850046a58
+c1ff296e126d8abf5fc998d8d234462504a080828a9595140ee064d0cb83df01
+b1e822efabedff5a2d931e6448887a1f9b96a11a8e0c99042f3d38465f9783ad
+f233c9a2a90fbdba12ab2d85ba49bb71334c07519d9c1d395f385c08f0c09d04
+aaf08bc9d62dc66f5ae4c457cd0ebd0f83e026389066f2579b3120a175861bd5
+49ec877829246714f57dfecfe7a9592545c469ebf92c7269f237fc8c06f64d9f
+808072762541f456cb659ccc0a7f6afe3f5cf66490f45fb2460aa1c89fdfa5db
+02bd314d77862bff972cc96e194adbce456c1f95129259e6f9fbae2999ff3991
+7014c412b15d26282e28db1ecbd230aa1b755acafafd24c532c5826645bc2cea
+c0167ae72f4f8a294ddf0a03c6efeb3e6600e184ae4d4748b14b2f697df63ab8
+22b4b24656d7c1f066024d8edbca8ad10ef9ecfc46a6faaa8fd0f15e67cfccb6
+93fa6d244e0d70d5a09bce00095b9dae3b6edaa2ed94f5fbec6a01821b471557
+55529fb6c0e1c3f5180df3739c22d637f020a7383a764c2ea291820936059187
+f7011fcfe61e547fa40c46e0483dbc95c879f439546b3cb4353368d26fb2a0e7
+4c82ffd463986c6b33b212f9d94d33257a5eefce3a79f8583f69422ef5bbdb95
+c27306d8e7c960e2c3e8af7eb4a55eccd21412a692a2fb9b4d0ed194d0e30ab7
+c2ee8069c5526e6fc1334cd43bba6d1b42b6a3d6e2c9c06d59d91474ad88f273
+5806e36b0c2165b90859f3f786ef6e64c94849a17f3e5c4837c39ee6dcc0ce9f
+ac9b339ec546bafebe17c01cb02bf02ed2fa0af735b41fdd4d7ee17d42ec7347
+00651a79af2e4b71eb20f387008deca6dcb6c8033aac8ccd5b873ebf6bf2d7ea
+9267a04581acb1b828fc5a4902a59f47d244007d0130b2c6b7eb1bbe8555ef2f
+043e22d804d361929f8188cae8f4073197de76105610ed13cee8a4c73444fabd
+3e1402b3ac5b263d3456e9536f943e8a75a22312064f739bdafe0779529da497
+6c7e2c41a873cb8ad25b0113111bf3a58d911dc45d0fab50a85278e30958c4c4
+8f67256a9fe5d99a03e544deeb2119c64b2aefe565248cc9bce72113d9fd289d
+a47a200c37be1bf2a5a36933caededb9b22841859f7cf87aede2d6229ad72122
+3427e2ef6fa03ee85159f7a640112f3793127fe0bc7132185c3eaa53c2bb64c8
+25fd9d050333611cb948957e43c084dbf00652dc50d8d9b7e87c8dd6acc9a5da
+e8e1b9b743b99c81de48a17f69f16bd9c1bc294c040e9c5f7f2769d7a3c2e083
+8ca992ef95723fbdd5a62991c60bb803121e9e3e4763b49f32a8ca983d763236
+0006d035c586cb47ec91e3d6f6ac4a617c0562e416da7d17eb37db43ac38d97e
+7cb467d29e7c81989339
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+TeXDict begin 39158280 55380996 1000 8000 8000 (ida_examples.dvi)
+ at start /Fa 198[406 406 406 406 406 406 406 406 406 406
+48[{}10 664.176 /CMR6 rf /Fb 135[820 820 2[820 820 820
+1[820 820 3[820 1[820 820 2[820 820 820 820 820 50[820
+46[{}16 1594.02 /CMTT12 rf /Fc 134[589 3[651 403 496
+511 1[620 620 681 991 310 2[372 620 2[558 620 558 1[620
+13[681 4[901 1087 2[636 467 7[901 6[372 11[372 46[{}24
+1212.12 /CMTI10 rf /Fd 130[581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 1[581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 33[{}92 1106.96 /CMTT10 rf /Fe 207[255 47[732{}2
+885.568 /CMSY8 rf /Ff 167[1751 22[1061 1061 1[1077 1[1077
+1[1077 1[1077 6[1061 1061 7[976 40[{}10 1212.12 /CMEX10
+rf /Fg 194[732 5[470 470 470 470 470 470 470 470 48[{}9
+885.568 /CMR8 rf /Fh 135[684 684 2[684 684 684 1[684
+684 3[684 1[684 684 2[684 684 1[684 684 97[{}14 1328.35
+/CMTT12 rf /Fi 134[789 789 1[789 830 581 589 610 1[830
+747 830 1245 415 2[415 3[682 830 664 830 726 14[1115
+1[1021 4[1170 1[557 3[981 1145 1[1062 1128 6[415 6[747
+747 747 2[415 46[{}31 1328.35 /CMBX12 rf /Fj 134[465
+530 4[435 7[490 381 320 105[{}6 885.568 /CMMI8 rf /Fk
+133[564 594 693 2[694 438 568 547 1[610 1[728 3[499 418
+4[631 525 520 641 14[920 1[778 1[974 1[825 1[672 3[779
+2[866 2[644 1[943 606 1[337 337 32[691 12[686 775 11[{}30
+1212.12 /CMMI10 rf /Fl 135[539 16[606 606 51[808 29[943
+4[606 12[943 337 943{}9 1212.12 /CMSY10 rf /Fm 137[743
+743 716 555 730 1[676 770 743 905 622 2[366 1[777 1[676
+757 716 703 743 29[953 21[458 45[{}19 1212.12 /CMCSC10
+rf /Fn 134[636 636 636 636 636 636 636 636 636 636 636
+636 636 636 636 636 636 636 636 636 636 636 636 636 636
+7[636 636 636 636 636 636 636 636 636 636 636 636 636
+636 1[636 636 636 636 636 636 636 636 636 636 3[636 13[636
+636 1[636 1[636 636 636 4[636 35[{}57 1212.12 /CMTT10
+rf /Fo 135[946 2[996 697 707 732 1[996 897 996 1494 498
+2[498 1[897 548 818 996 797 996 872 13[996 1338 1[1225
+3[1077 2[668 3[1177 1374 1295 1275 1354 13[897 897 897
+49[{}31 1594.02 /CMBX12 rf /Fp 132[606 539 640 640 875
+640 673 471 478 475 640 673 606 673 1010 337 640 1[337
+673 606 370 539 673 539 673 606 3[337 1[337 3[1246 1[909
+875 673 892 1[825 943 909 1111 758 943 623 438 909 951
+791 825 926 875 859 909 3[943 1[337 337 606 606 606 606
+606 606 606 606 606 606 1[337 404 337 943 1[471 471 337
+1[1010 22[1010 673 673 707 875 10[{}75 1212.12 /CMR10
+rf /Fq 135[736 2[774 542 550 574 1[774 697 774 1162 387
+2[387 1[697 426 639 774 620 774 678 13[774 1045 1[953
+1[1091 1323 838 2[529 3[916 1069 1007 992 1054 9[697
+697 697 697 697 697 697 49[{}37 1212.12 /CMBX10 rf /Fr
+134[631 1[863 598 697 432 1[548 1[664 664 731 1063 332
+2[399 1[598 399 598 664 598 598 664 13[731 4[966 1[815
+8[930 1[966 52[731 12[{}25 1328.35 /CMTI12 rf /Fs 138[723
+1[513 506 1[723 1[723 1084 361 2[361 723 2[578 723 1[723
+650 11[975 1[723 957 4[1192 813 3[975 4[939 1[975 8[650
+2[650 1[650 650 650 650 1[361 434 45[{}29 1328.35 /CMR12
+rf /Ft 150[578 4[1194 2[1173 97[{}3 1912.83 /CMCSC10
+rf /Fu 135[927 1[927 2[687 677 1[977 877 1[1477 478 4[877
+527 777 3[877 16[1202 10[1202 17[877 877 1[877 1[478
+46[{}18 1912.83 /CMR17 rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 8000dpi
+TeXDict begin
+%%PaperSize: A4
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop Black Black Black Black 15062 16715 a Fu(Example)577
+b(Programs)i(for)g Ft(id)-43 b(a)578 b Fu(v2.3.0)17257
+21901 y Fs(Alan)434 b(C.)g(Hindmarsh)f(and)g(Radu)h(Serban)16542
+23451 y Fr(Center)463 b(for)i(Applie)-66 b(d)464 b(Scienti\257c)d
+(Computing)16374 25001 y(L)-66 b(awr)g(enc)g(e)463 b(Livermor)-66
+b(e)463 b(National)h(L)-66 b(ab)g(or)g(atory)25020 28317
+y Fs(April)433 b(2005)22816 75587 y(UCRL-SM-208113)p
+Black Black eop
+%%Page: 2 2
+2 1 bop Black Black Black Black 19458 16671 a Fq(DISCLAIMER)0
+19505 y Fp(This)416 b(do)34 b(cumen)-34 b(t)417 b(w)-34
+b(as)417 b(prepared)f(as)g(an)g(accoun)-34 b(t)417 b(of)f(w)-34
+b(ork)416 b(sp)34 b(onsored)416 b(b)-34 b(y)416 b(an)h(agency)e(of)h
+(the)g(United)0 21010 y(States)449 b(Go)-34 b(v)g(ernmen)g(t.)671
+b(Neither)448 b(the)g(United)g(States)h(Go)-34 b(v)g(ernmen)g(t)450
+b(nor)e(the)g(Univ)-34 b(ersit)g(y)448 b(of)g(Califor-)0
+22516 y(nia)508 b(nor)g(an)-34 b(y)509 b(of)f(their)g(emplo)-34
+b(y)g(ees,)533 b(mak)-34 b(es)508 b(an)-34 b(y)509 b(w)-34
+b(arran)g(t)g(y)-101 b(,)535 b(express)507 b(or)h(implied,)533
+b(or)508 b(assumes)g(an)-34 b(y)0 24021 y(legal)376 b(liabilit)-34
+b(y)376 b(or)h(resp)34 b(onsibilit)-34 b(y)376 b(for)h(the)h(accuracy)
+-101 b(,)381 b(completeness,)h(or)376 b(usefulness)i(of)f(an)-34
+b(y)378 b(informa-)0 25527 y(tion,)395 b(apparatus,)i(pro)34
+b(duct,)396 b(or)c(pro)34 b(cess)393 b(disclosed,)i(or)e(represen)-34
+b(ts)393 b(that)h(its)g(use)f(w)-34 b(ould)394 b(not)g(infringe)0
+27032 y(priv)-67 b(ately)308 b(o)-34 b(wned)311 b(righ)-34
+b(ts.)507 b(Reference)309 b(herein)g(to)g(an)-34 b(y)310
+b(sp)34 b(eci\257c)309 b(commercial)e(pro)34 b(duct,)329
+b(pro)34 b(cess,)327 b(or)309 b(ser-)0 28537 y(vice)369
+b(b)-34 b(y)371 b(trade)g(name,)377 b(trademark,)g(man)-34
+b(ufacturer,)378 b(or)370 b(otherwise,)377 b(do)34 b(es)370
+b(not)i(necessarily)d(constitute)0 30043 y(or)448 b(imply)g(its)h
+(endorsemen)-34 b(t,)460 b(recommendation,)g(or)448 b(fa)-34
+b(v)g(oring)449 b(b)-34 b(y)449 b(the)g(United)g(States)h(Go)-34
+b(v)g(ernmen)g(t)0 31548 y(or)543 b(the)g(Univ)-34 b(ersit)g(y)543
+b(of)g(California.)955 b(The)543 b(views)f(and)i(opinions)g(of)f
+(authors)h(expressed)e(herein)h(do)0 33054 y(not)416
+b(necessarily)e(state)h(or)g(re\260ect)g(those)g(of)h(the)f(United)h
+(States)g(Go)-34 b(v)g(ernmen)g(t)416 b(or)f(the)h(Univ)-34
+b(ersit)g(y)415 b(of)0 34559 y(California,)404 b(and)h(shall)f(not)h(b)
+34 b(e)404 b(used)g(for)h(adv)-34 b(ertising)404 b(or)g(pro)34
+b(duct)405 b(endorsemen)-34 b(t)405 b(purp)34 b(oses.)1882
+39076 y(This)456 b(researc)-34 b(h)455 b(w)-34 b(as)457
+b(supp)34 b(orted)457 b(under)f(the)g(auspices)g(of)g(the)g(U.S.)g
+(Departmen)-34 b(t)456 b(of)g(Energy)g(b)-34 b(y)0 40581
+y(the)431 b(Univ)-34 b(ersit)g(y)430 b(of)h(California,)437
+b(La)-34 b(wrence)430 b(Liv)-34 b(ermore)428 b(National)j(Lab)34
+b(oratory)430 b(under)h(con)-34 b(tract)431 b(No.)0 42087
+y(W-7405-Eng-48.)p Black Black 7988 81856 a(Appro)-34
+b(v)g(ed)405 b(for)g(public)f(release;)f(further)h(dissemination)h
+(unlimited)p Black Black eop
+%%Page: 3 3
+3 2 bop Black Black 4000 7638 a Fo(Con)-50 b(ten)g(ts)4000
+10356 y Fq(1)1121 b(In)-39 b(tro)39 b(duction)37801 b(1)4000
+13073 y(2)1121 b(Serial)465 b(example)f(problems)30545
+b(3)5818 14579 y Fp(2.1)1239 b(A)404 b(dense)h(example:)537
+b Fn(irobx)591 b Fp(.)606 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p
+Black 2445 w(3)p Black 5818 16084 a(2.2)1239 b(A)404
+b(banded)i(example:)537 b Fn(iwebsb)905 b Fp(.)605 b(.)h(.)g(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)p Black 2445 w(5)p Black 5818 17590 a(2.3)1239
+b(A)404 b(Krylo)-34 b(v)403 b(example:)538 b Fn(iheatsk)501
+b Fp(.)605 b(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)p Black 2445
+w(8)p Black 4000 20307 a Fq(3)1121 b(P)-39 b(arallel)465
+b(example)f(problems)28643 b(11)5818 21813 y Fp(3.1)1239
+b(A)404 b(user)g(preconditioner)g(example:)538 b Fn(iheatpk)521
+b Fp(.)606 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)p Black 1839 w(11)p Black 5818 23318
+a(3.2)1239 b(An)405 b(ID)-34 b(ABBDPRE)403 b(preconditioner)h(example:)
+538 b Fn(iwebbbd)1187 b Fp(.)606 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)p Black 1839 w(12)p Black 4000 26036 a Fq(References)40061
+b(15)4000 28753 y(A)764 b(Listing)466 b(of)e Fn(irobx.c)34108
+b Fq(16)4000 31471 y(B)826 b(Listing)466 b(of)e Fn(iwebsb.c)33472
+b Fq(23)4000 34188 y(C)811 b(Listing)466 b(of)e Fn(iheatsk.c)32836
+b Fq(36)4000 36906 y(D)749 b(Listing)466 b(of)e Fn(iheatpk.c)32836
+b Fq(47)4000 39624 y(E)902 b(Listing)466 b(of)e Fn(iwebbbd.c)32836
+b Fq(64)p Black Black eop
+%%Page: 4 4
+4 3 bop Black Black Black Black eop
+%%Page: 1 5
+1 4 bop Black Black 4000 7638 a Fo(1)1793 b(In)-50 b(tro)50
+b(duction)4000 10344 y Fp(This)459 b(rep)34 b(ort)459
+b(is)f(in)-34 b(tended)460 b(to)f(serv)-34 b(e)458 b(as)h(a)g
+(companion)g(do)34 b(cumen)-34 b(t)460 b(to)f(the)g(User)g(Do)34
+b(cumen)-34 b(tation)460 b(of)4000 11849 y Fm(id)-27
+b(a)451 b Fp([2].)678 b(It)451 b(pro)-34 b(vides)450
+b(details,)462 b(with)452 b(listings,)462 b(on)451 b(the)g(example)f
+(programs)h(supplied)h(with)f(the)g Fm(id)-27 b(a)4000
+13355 y Fp(distribution)405 b(pac)-34 b(k)-67 b(age.)5882
+14860 y(The)494 b Fm(id)-27 b(a)494 b Fp(distribution)g(con)-34
+b(tains,)517 b(in)493 b(the)h Fn(sundials/ida/examples)p
+39809 14860 382 45 v 465 w(ser)h Fp(directory)-101 b(,)514
+b(the)494 b(fol-)4000 16366 y(lo)-34 b(wing)405 b(four)f(serial)f
+(examples)h(\(using)h(the)g Fm(nvector)p 29639 16366
+403 45 v 484 w(serial)g Fp(mo)34 b(dule\):)p Black 5818
+18779 a Fl(\262)p Black 606 w Fn(irobx)364 b Fp(solv)-34
+b(es)361 b(the)h(Rob)34 b(ertson)363 b(c)-34 b(hemical)361
+b(kinetics)g(problem)h([3])f(whic)-34 b(h)363 b(consists)f(of)g(t)-34
+b(w)g(o)363 b(di\256er-)7030 20285 y(en)-34 b(tial)405
+b(equations)f(and)h(one)f(algebraic)g(constrain)-34 b(t.)7030
+22270 y(The)325 b(problem)g(is)f(solv)-34 b(ed)325 b(with)g(the)g
+Fm(id)-27 b(adense)326 b Fp(linear)e(solv)-34 b(er)324
+b(using)h(a)g(user-supplied)g(Jacobian.)p Black 5818
+24737 a Fl(\262)p Black 606 w Fn(iheatsb)407 b Fp(solv)-34
+b(es)404 b(a)g(2-D)g(heat)g(equation,)h(semidiscretized)e(to)h(a)g(D)
+-34 b(AE)405 b(on)f(the)h(unit)g(square.)7030 26723 y(This)582
+b(program)g(solv)-34 b(es)581 b(the)g(problem)h(with)g(the)f
+Fm(id)-27 b(aband)583 b Fp(linear)e(solv)-34 b(er)580
+b(and)i(the)g(default)7030 28228 y(di\256erence-quotien)-34
+b(t)435 b(Jacobian)g(appro)-34 b(ximation.)632 b(F)-101
+b(or)434 b(purp)34 b(oses)435 b(of)g(illustration,)443
+b Fn(IDACalcIC)7030 29734 y Fp(is)468 b(called)g(to)h(compute)g
+(correct)e(v)-67 b(alues)468 b(at)h(the)g(b)34 b(oundary)-101
+b(,)485 b(giv)-34 b(en)468 b(incorrect)f(v)-67 b(alues)468
+b(as)h(input)7030 31239 y(initial)404 b(guesses.)539
+b(The)404 b(constrain)-34 b(t)406 b Fk(u)336 b(>)h Fp(0)p
+Fk(:)p Fp(0)403 b(is)h(imp)34 b(osed)405 b(for)f(all)f(comp)34
+b(onen)-34 b(ts.)p Black 5818 33706 a Fl(\262)p Black
+606 w Fn(iheatsk)292 b Fp(solv)-34 b(es)289 b(the)h(same)f(problem)g
+(as)h Fn(iheatsb)p Fp(,)314 b(with)290 b(the)g(Krylo)-34
+b(v)288 b(linear)h(solv)-34 b(er)289 b Fm(id)-27 b(aspgmr)p
+Fp(.)7030 35211 y(The)405 b(preconditioner)f(uses)g(only)g(the)h
+(diagonal)f(elemen)-34 b(ts)405 b(of)f(the)h(Jacobian.)p
+Black 5818 37677 a Fl(\262)p Black 606 w Fn(iwebsb)457
+b Fp(solv)-34 b(es)454 b(a)g(system)h(of)g(PDEs)f(mo)34
+b(delling)454 b(a)g(fo)34 b(o)g(d)455 b(w)-34 b(eb)455
+b(problem,)467 b(with)455 b(predator-prey)7030 39183
+y(in)-34 b(teraction)405 b(and)g(di\256usion,)f(on)h(the)g(unit)f
+(square)g(in)g(2-D.)7030 41169 y(The)468 b(PDEs)f(are)g(discretized)g
+(in)g(space)h(to)g(a)f(system)g(of)h(D)-34 b(AEs)468
+b(whic)-34 b(h)468 b(are)f(solv)-34 b(ed)467 b(using)h(the)7030
+42674 y Fm(id)-27 b(aband)406 b Fp(linear)d(solv)-34
+b(er)404 b(with)h(the)f(default)h(di\256erence-quotien)-34
+b(t)405 b(Jacobian)f(appro)-34 b(ximation.)5882 45088
+y(In)370 b(the)h Fn(sundials/ida/examples)p 22849 45088
+382 45 v 466 w(par)g Fp(directory)-101 b(,)376 b(the)371
+b Fm(id)-27 b(a)371 b Fp(distribution)g(con)-34 b(tains)372
+b(the)e(follo)-34 b(w-)4000 46593 y(ing)404 b(four)h(parallel)e
+(examples)h(\(using)h(the)f Fm(nvector)p 28992 46593
+403 45 v 485 w(p)-81 b(arallel)406 b Fp(mo)34 b(dule\):)p
+Black 5818 49006 a Fl(\262)p Black 606 w Fn(iheatpk)516
+b Fp(solv)-34 b(es)514 b(the)g(same)f(problem)h(as)f
+Fn(iheatbbd)k Fp(with)d(a)f(user-supplied)i(preconditioner)7030
+50512 y(whic)-34 b(h)405 b(uses)g(the)f(diagonal)h(elemen)-34
+b(ts)404 b(of)g(the)h(Jacobian)f(only)-101 b(.)p Black
+5818 52978 a Fl(\262)p Black 606 w Fn(iheatbbd)407 b
+Fp(is)d(a)g(parallel)f(implemen)-34 b(tation)406 b(of)e(the)h(2-D)f
+(heat)g(equation.)7030 54964 y(This)360 b(program)e(solv)-34
+b(es)359 b(the)g(problem)f(in)h(parallel,)366 b(using)360
+b(the)f(Krylo)-34 b(v)357 b(linear)h(solv)-34 b(er)358
+b Fm(id)-27 b(aspgmr)7030 56470 y Fp(and)462 b(the)f(band-blo)34
+b(c)-34 b(k)462 b(diagonal)f(preconditioner)g Fm(id)-27
+b(abbdpre)462 b Fp(with)f(half-bandwidths)j(equal)7030
+57975 y(to)405 b(1.)p Black 5818 60441 a Fl(\262)p Black
+606 w Fn(iwebpk)h Fp(solv)-34 b(es)404 b(the)h(same)f(problem)g(as)g
+Fn(iwebbbd)j Fp(with)e(a)f(user-supplied)h(preconditioner.)7030
+62427 y(The)453 b(precondtioner)f(supplied)g(to)g Fm(id)-27
+b(aspgmr)453 b Fp(is)e(the)h(blo)34 b(c)-34 b(k-diagonal)452
+b(part)g(of)h(the)f(Jacobian)7030 63933 y(with)397 b
+Fk(n)10511 64115 y Fj(s)11253 63933 y Fl(\243)251 b Fk(n)13175
+64115 y Fj(s)14061 63933 y Fp(blo)34 b(c)-34 b(ks)395
+b(arising)g(from)h(the)g(reaction)f(terms)g(only)h(\()p
+Fk(n)38432 64115 y Fj(s)39317 63933 y Fp(is)g(the)g(n)-34
+b(um)g(b)34 b(er)396 b(of)g(sp)34 b(ecies)7030 65438
+y(in)404 b(the)h(mo)34 b(del\).)p Black 5818 67905 a
+Fl(\262)p Black 606 w Fn(iwebbbd)407 b Fp(is)d(a)g(parallel)f(implemen)
+-34 b(tation)405 b(of)g(the)f(predator-prey)g(problem.)7030
+69891 y(The)303 b(problem)g(is)g(solv)-34 b(ed)302 b(in)h(parallel)f
+(using)h(the)g Fm(id)-27 b(aspgmr)304 b Fp(linear)e(solv)-34
+b(er)302 b(and)h(the)g Fm(id)-27 b(abbdpre)7030 71396
+y Fp(preconditioner.)4000 75409 y(In)495 b(the)h(follo)-34
+b(wing)496 b(sections,)518 b(w)-34 b(e)496 b(giv)-34
+b(e)494 b(detailed)i(descriptions)f(of)h(some)f(\(but)i(not)f(all\))f
+(of)h(these)g(ex-)4000 76915 y(amples.)593 b(The)423
+b(App)34 b(endices)422 b(con)-34 b(tain)424 b(complete)e(listings)g(of)
+h(those)g(examples)e(describ)34 b(ed)422 b(b)34 b(elo)-34
+b(w.)594 b(W)-101 b(e)4000 78420 y(also)494 b(giv)-34
+b(e)494 b(our)h(output)h(\257les)e(for)h(eac)-34 b(h)494
+b(of)h(these)g(examples,)516 b(but)496 b(users)e(should)h(b)34
+b(e)495 b(cautioned)g(that)p Black 27697 81741 a(1)p
+Black eop
+%%Page: 2 6
+2 5 bop Black Black 0 7638 a Fp(their)495 b(results)g(ma)-34
+b(y)495 b(di\256er)g(sligh)-34 b(tly)495 b(from)g(these.)812
+b(Solution)496 b(v)-67 b(alues)494 b(ma)-34 b(y)495 b(di\256er)g
+(within)h(tolerances,)0 9143 y(and)369 b(di\256erences)e(in)h(cum)-34
+b(ulativ)g(e)369 b(coun)-34 b(ters,)375 b(suc)-34 b(h)369
+b(as)g(n)-34 b(um)g(b)34 b(ers)369 b(of)f(steps)h(or)f(Newton)h
+(iterations,)375 b(ma)-34 b(y)0 10649 y(di\256er)404
+b(from)g(one)g(mac)-34 b(hine)405 b(en)-34 b(vironmen)g(t)405
+b(to)f(another)h(b)-34 b(y)405 b(as)f(m)-34 b(uc)g(h)405
+b(as)f(10\045)h(to)f(20\045.)1882 12154 y(In)458 b(the)h(descriptions)f
+(b)34 b(elo)-34 b(w,)472 b(w)-34 b(e)458 b(mak)-34 b(e)458
+b(frequen)-34 b(t)459 b(references)e(to)i(the)f Fm(id)-27
+b(a)459 b Fp(User)f(Do)34 b(cumen)-34 b(t)459 b([2].)0
+13660 y(All)423 b(citations)h(to)g(sp)34 b(eci\257c)423
+b(sections)g(\(e.g.)596 b Fl(x)p Fp(5.1\))424 b(are)f(references)f(to)i
+(parts)g(of)g(that)h(User)e(Do)34 b(cumen)-34 b(t,)0
+15165 y(unless)404 b(explicitly)f(stated)i(otherwise.)0
+18271 y Fq(Note)p Fp(.)1101 b(The)592 b(examples)f(in)h(the)g
+Fm(id)-27 b(a)592 b Fp(distribution)h(are)e(written)i(in)e(suc)-34
+b(h)593 b(a)e(w)-34 b(a)g(y)593 b(as)f(to)g(compile)0
+19776 y(and)582 b(run)g(for)g(an)-34 b(y)582 b(com)-34
+b(bination)582 b(of)g(con\257guration)h(options)f(during)g(the)g
+(installation)g(of)g Fm(sundi-)0 21282 y(als)496 b Fp(\(see)f
+Fl(x)p Fp(2\).)811 b(As)496 b(a)f(consequence,)517 b(they)496
+b(con)-34 b(tain)496 b(p)34 b(ortions)495 b(of)h(co)34
+b(de)495 b(that)h(will)f(not)h(b)34 b(e)495 b(t)-34 b(ypically)0
+22787 y(presen)g(t)501 b(in)g(a)f(user)h(program.)827
+b(F)-101 b(or)501 b(example,)523 b(all)500 b(example)g(programs)h(mak)
+-34 b(e)500 b(use)h(of)f(the)h(v)-67 b(ariable)0 24293
+y Fn(SUNDIALS)p 5164 24293 382 45 v 461 w(EXTENDED)p
+10713 24293 V 461 w(PRECISION)290 b Fp(to)d(test)g(if)f(the)h(solv)-34
+b(er)286 b(libraries)f(w)-34 b(ere)287 b(built)g(in)f(extended)h
+(precision)0 25798 y(and)405 b(use)f(the)h(appropriate)f(con)-34
+b(v)g(ersion)405 b(sp)34 b(eci\257ers)403 b(in)h Fn(printf)i
+Fp(functions.)p Black 23697 81741 a(2)p Black eop
+%%Page: 3 7
+3 6 bop Black Black 4000 7638 a Fo(2)1793 b(Serial)599
+b(example)g(problems)4000 10483 y Fi(2.1)1495 b(A)499
+b(dense)f(example:)665 b Fh(irobx)4000 12865 y Fp(This)417
+b(example,)i(due)d(to)h(Rob)34 b(ertson)417 b([3],)i(is)d(a)h(mo)34
+b(del)416 b(of)g(a)h(three-sp)34 b(ecies)415 b(c)-34
+b(hemical)416 b(kinetics)g(system)4000 14371 y(written)279
+b(in)f(D)-34 b(AE)278 b(form.)497 b(Di\256eren)-34 b(tial)277
+b(equations)i(are)f(giv)-34 b(en)278 b(for)g(sp)34 b(ecies)277
+b Fk(y)38253 14553 y Fg(1)39057 14371 y Fp(and)i Fk(y)41882
+14553 y Fg(2)42686 14371 y Fp(while)f(an)h(algebraic)4000
+15876 y(equation)404 b(determines)h Fk(y)15682 16058
+y Fg(3)16208 15876 y Fp(.)538 b(The)405 b(equations)f(for)g(the)h
+(system)f(concen)-34 b(trations)405 b Fk(y)41616 16058
+y Fj(i)41992 15876 y Fp(\()p Fk(t)p Fp(\))g(are:)18121
+17818 y Ff(8)18121 18909 y(>)18121 19272 y(<)18121 21454
+y(>)18121 21818 y(:)19199 18918 y Fk(y)19836 18478 y
+Fe(0)19793 19243 y Fg(1)21531 18918 y Fp(=)336 b Fl(\241)p
+Fk(:)p Fp(04)p Fk(y)25896 19100 y Fg(1)26691 18918 y
+Fp(+)269 b(10)29115 18478 y Fg(4)29641 18918 y Fk(y)30235
+19100 y Fg(2)30761 18918 y Fk(y)31355 19100 y Fg(3)19199
+20724 y Fk(y)19836 20285 y Fe(0)19793 21049 y Fg(2)21531
+20724 y Fp(=)336 b(+)p Fk(:)p Fp(04)p Fk(y)25896 20906
+y Fg(1)26691 20724 y Fl(\241)269 b Fp(10)29115 20285
+y Fg(4)29641 20724 y Fk(y)30235 20906 y Fg(2)30761 20724
+y Fk(y)31355 20906 y Fg(3)32151 20724 y Fl(\241)g Fp(3)g
+Fl(\242)g Fp(10)36056 20285 y Fg(7)36582 20724 y Fk(y)37219
+20285 y Fg(2)37176 21049 y(2)19199 22531 y Fp(0)1726
+b(=)336 b Fk(y)23404 22713 y Fg(1)24200 22531 y Fp(+)269
+b Fk(y)26006 22713 y Fg(2)26801 22531 y Fp(+)g Fk(y)28607
+22713 y Fg(3)29403 22531 y Fl(\241)g Fp(1)202 b Fk(:)50451
+20666 y Fp(\(1\))4000 25389 y(The)377 b(initial)f(v)-67
+b(alues)376 b(are)f(tak)-34 b(en)377 b(as)g Fk(y)20842
+25571 y Fg(1)21705 25389 y Fp(=)336 b(1,)382 b Fk(y)24903
+25571 y Fg(2)25765 25389 y Fp(=)337 b(0,)382 b(and)377
+b Fk(y)31293 25571 y Fg(3)32155 25389 y Fp(=)337 b(0)376
+b(This)h(example)f(computes)h(the)g(three)4000 26894
+y(concen)-34 b(tration)405 b(comp)34 b(onen)-34 b(ts)406
+b(on)e(the)h(in)-34 b(terv)-67 b(al)403 b(from)h Fk(t)337
+b Fp(=)f(0)404 b(through)i Fk(t)336 b Fp(=)h(4)269 b
+Fl(\242)g Fp(10)41663 26454 y Fg(10)42660 26894 y Fp(.)5882
+28448 y(F)-101 b(or)383 b(the)h(source,)k(listed)383
+b(in)h(App)34 b(endix)384 b(A,)j(w)-34 b(e)384 b(giv)-34
+b(e)383 b(a)h(rather)g(detailed)f(explanation)h(of)g(the)g(parts)4000
+29954 y(of)404 b(the)h(program)f(and)h(their)f(in)-34
+b(teraction)405 b(with)g Fm(id)-27 b(a)p Fp(.)5882 31508
+y(F)-101 b(ollo)-34 b(wing)564 b(the)h(initial)e(commen)-34
+b(t)565 b(blo)34 b(c)-34 b(k,)603 b(this)564 b(program)g(has)g(a)g(n)
+-34 b(um)g(b)34 b(er)565 b(of)f Fn(#include)j Fp(lines,)4000
+33013 y(whic)-34 b(h)276 b(allo)-34 b(w)276 b(access)f(to)h(useful)g
+(items)f(in)h Fm(id)-27 b(a)276 b Fp(header)f(\257les.)496
+b(The)276 b Fn(sundialstypes.h)281 b Fp(\257le)275 b(pro)-34
+b(vides)276 b(the)4000 34519 y(de\257nition)306 b(of)g(the)f(t)-34
+b(yp)34 b(e)306 b Fn(realtype)i Fp(\(see)d Fl(x)p Fp(5.1)g(in)g(the)g
+(user)g(guide)h([2])e(for)i(details\).)506 b(F)-101 b(or)305
+b(no)-34 b(w,)326 b(it)305 b(su\261ces)4000 36024 y(to)345
+b(read)f Fn(realtype)k Fp(as)c Fn(double)p Fp(.)521 b(The)345
+b Fn(ida.h)i Fp(\257le)d(pro)-34 b(vides)345 b(protot)-34
+b(yp)34 b(es)345 b(for)g(the)g Fm(id)-27 b(a)345 b Fp(functions)h(to)f
+(b)34 b(e)4000 37530 y(called)412 b(\(excluding)g(the)h(linear)f(solv)
+-34 b(er)412 b(selection)g(function\),)k(and)d(also)g(a)f(n)-34
+b(um)g(b)34 b(er)414 b(of)e(constan)-34 b(ts)415 b(that)4000
+39035 y(are)453 b(to)i(b)34 b(e)454 b(used)g(in)g(setting)h(input)g
+(argumen)-34 b(ts)455 b(and)g(testing)g(the)f(return)h(v)-67
+b(alue)453 b(of)h Fn(IDASolve)p Fp(.)691 b(The)4000 40541
+y Fn(idadense.h)374 b Fp(\257le)d(pro)-34 b(vides)371
+b(the)g(protot)-34 b(yp)34 b(e)372 b(for)f(the)h Fn(IDADense)h
+Fp(function.)529 b(The)371 b Fn(nvector)p 46524 40541
+382 45 v 461 w(serial.h)4000 42046 y Fp(\257le)494 b(is)f(the)i(header)
+f(\257le)f(for)h(the)h(serial)d(implemen)-34 b(tation)495
+b(of)g(the)f Fm(nvector)i Fp(mo)34 b(dule)494 b(and)h(includes)4000
+43552 y(de\257nitions)560 b(of)f(the)g Fn(N)p 14509 43552
+V 459 w(Vector)h Fp(t)-34 b(yp)34 b(e,)598 b(a)558 b(macro)h(to)g
+(access)f(v)-34 b(ector)558 b(comp)34 b(onen)-34 b(ts,)598
+b(and)560 b(protot)-34 b(yp)34 b(es)4000 45057 y(for)420
+b(the)g(serial)f(implemen)-34 b(tation)421 b(sp)34 b(eci\257c)420
+b(mac)-34 b(hine)420 b(en)-34 b(vironmen)g(t)421 b(memory)e(allo)34
+b(cation)420 b(and)g(freeing)4000 46563 y(functions.)538
+b(Finally)-101 b(,)398 b(note)g(that)h Fn(idadense.h)j
+Fp(also)397 b(includes)h(the)g Fn(dense.h)i Fp(\257le)e(whic)-34
+b(h)399 b(pro)-34 b(vides)398 b(the)4000 48068 y(de\257nition)405
+b(of)g(the)f(dense)h(matrix)e(t)-34 b(yp)34 b(e)405 b
+Fn(DenseMat)i Fp(and)d(a)h(macro)e(for)i(accessing)e(matrix)h(elemen)
+-34 b(ts.)5882 49622 y(This)509 b(program)f(includes)g(the)h
+(user-de\257ned)g(accessor)f(macro)f Fn(IJth)j Fp(that)f(is)f(useful)h
+(in)g(writing)4000 51128 y(the)368 b(problem)f(functions)h(in)f(a)g
+(form)h(closely)d(matc)-34 b(hing)369 b(the)e(mathematical)g
+(description)h(of)f(the)h(D)-34 b(AE)4000 52633 y(system,)325
+b(i.e.)504 b(with)306 b(comp)34 b(onen)-34 b(ts)306 b(n)-34
+b(um)g(b)34 b(ered)306 b(from)f(1)g(instead)h(of)f(from)h(0.)505
+b(The)305 b Fn(IJth)i Fp(macro)d(is)h(used)h(to)4000
+54139 y(access)383 b(elemen)-34 b(ts)384 b(of)h(a)f(dense)g(matrix)f
+(of)i(t)-34 b(yp)34 b(e)384 b Fn(DenseMat)p Fp(.)534
+b(It)384 b(is)g(de\257ned)h(using)f(the)h Fm(dense)f
+Fp(accessor)4000 55644 y(macro)482 b Fn(DENSE)p 10974
+55644 V 460 w(ELEM)h Fp(whic)-34 b(h)484 b(n)-34 b(um)g(b)34
+b(ers)483 b(matrix)f(ro)-34 b(ws)483 b(and)g(columns)f(starting)i(with)
+f(0.)773 b(The)482 b(macro)4000 57149 y Fn(DENSE)p 7256
+57149 V 460 w(ELEM)405 b Fp(is)f(fully)g(describ)34 b(ed)404
+b(in)g Fl(x)p Fp(5.5.3.)5882 58704 y(The)379 b(program)h(prologue)f
+(ends)h(with)g(protot)-34 b(yp)34 b(es)380 b(of)f(the)h(t)-34
+b(w)g(o)381 b(user-supplied)e(functions)i(that)f(are)4000
+60209 y(called)460 b(b)-34 b(y)462 b Fm(id)-27 b(a)462
+b Fp(and)g(the)g(protot)-34 b(yp)34 b(e)462 b(of)f(the)h(priv)-67
+b(ate)461 b(function)h Fn(check)p 37485 60209 V 460 w(flag)h
+Fp(whic)-34 b(h)462 b(is)f(used)h(to)f(test)4000 61714
+y(the)405 b(return)f(\260ag)h(from)f(the)g Fm(id)-27
+b(a)405 b Fp(user-callable)e(functions.)5882 63269 y(After)454
+b(v)-67 b(arious)453 b(declarations,)465 b(the)454 b
+Fn(main)h Fp(program)f(b)34 b(egins)454 b(b)-34 b(y)454
+b(allo)34 b(cating)453 b(memory)g(for)h(the)g Fn(yy)p
+Fp(,)4000 64774 y Fn(yp)p Fp(,)361 b(and)350 b Fn(avtol)h
+Fp(v)-34 b(ectors)349 b(using)i Fn(N)p 19696 64774 V
+458 w(VNew)p 22698 64774 V 460 w(Serial)g Fp(with)g(a)e(length)h
+(argumen)-34 b(t)351 b(of)f Fn(NEQ)g Fp(\(=)337 b(3\).)520
+b(The)350 b(lines)4000 66279 y(follo)-34 b(wing)300 b(that)h(load)f
+(the)g(initial)f(v)-67 b(alues)298 b(of)i(the)g(dep)34
+b(endenden)-34 b(t)302 b(v)-67 b(ariable)298 b(v)-34
+b(ectors)299 b(in)-34 b(to)301 b Fn(yy)f Fp(and)g Fn(yp)g
+Fp(and)4000 67785 y(set)373 b(the)g(realtiv)-34 b(e)372
+b(tolerance)h Fn(rtol)h Fp(and)g(absolute)f(tolerance)g(v)-34
+b(ector)372 b Fn(avtol)p Fp(.)530 b(Serial)372 b Fn(N)p
+44221 67785 V 459 w(Vector)j Fp(v)-67 b(alues)4000 69290
+y(are)474 b(set)i(b)-34 b(y)475 b(\257rst)h(accessing)e(the)i(p)34
+b(oin)-34 b(ter)475 b(to)g(their)g(underlying)h(data)f(using)h(the)g
+(macro)e Fn(NV)p 47977 69290 V 459 w(DATA)p 50980 69290
+V 460 w(S)4000 70796 y Fp(de\257ned)405 b(b)-34 b(y)405
+b Fm(nvector)p 15033 70796 403 45 v 484 w(serial)g Fp(in)f
+Fn(nvector)p 25476 70796 382 45 v 461 w(serial.h)p Fp(.)5882
+72350 y(The)539 b(calls)g(to)g Fn(N)p 13672 72350 V 458
+w(VNew)p 16674 72350 V 460 w(Serial)p Fp(,)575 b(and)539
+b(also)g(later)g(calls)f(to)h Fn(IDA***)j Fp(functions,)573
+b(mak)-34 b(e)539 b(use)h(of)f(a)4000 73855 y(priv)-67
+b(ate)322 b(function,)340 b Fn(check)p 16271 73855 V
+460 w(flag)p Fp(,)g(whic)-34 b(h)324 b(examines)f(the)g(return)g(v)-67
+b(alue)322 b(and)i(prin)-34 b(ts)324 b(a)e(message)h(if)g(there)4000
+75361 y(w)-34 b(as)496 b(a)g(failure.)812 b(This)497
+b Fn(check)p 18125 75361 V 459 w(flag)g Fp(function)g(w)-34
+b(as)497 b(written)f(to)g(b)34 b(e)495 b(used)h(for)g(an)-34
+b(y)496 b(serial)f Fm(sundials)4000 76866 y Fp(application.)5882
+78420 y(The)463 b(call)f(to)h Fn(IDACreate)j Fp(creates)c(the)h
+Fm(id)-27 b(a)464 b Fp(solv)-34 b(er)462 b(memory)g(blo)34
+b(c)-34 b(k.)714 b(The)463 b(return)g(v)-67 b(alue)462
+b(of)h(this)p Black 27697 81741 a(3)p Black eop
+%%Page: 4 8
+4 7 bop Black Black 0 7638 a Fp(function)341 b(is)f(a)g(p)34
+b(oin)-34 b(ter)341 b(to)f(the)g(memory)g(blo)34 b(c)-34
+b(k)339 b(for)i(this)f(problem.)517 b(In)340 b(the)h(case)f(of)g
+(failure,)352 b(the)341 b(return)0 9143 y(v)-67 b(alue)403
+b(is)h Fn(NULL)p Fp(.)h(This)g(p)34 b(oin)-34 b(ter)404
+b(m)-34 b(ust)406 b(b)34 b(e)404 b(passed)h(in)f(the)g(remaining)g
+(calls)f(to)i Fm(id)-27 b(a)405 b Fp(functions.)1882
+10649 y(The)504 b(call)f(to)i Fn(IDAMalloc)i Fp(allo)34
+b(cates)503 b(the)h(solv)-34 b(er)503 b(memory)h(blo)34
+b(c)-34 b(k.)837 b(Its)504 b(argumen)-34 b(ts)506 b(include)e(the)0
+12154 y(name)537 b(of)h(the)f Fm(C)g Fp(function)i Fn(resrob)g
+Fp(de\257ning)f(the)g(residual)f(function)h Fk(F)168
+b Fp(\()p Fk(t;)202 b(y)43 b(;)202 b(y)38501 11715 y
+Fe(0)38813 12154 y Fp(\),)571 b(and)538 b(the)f(initial)0
+13660 y(v)-67 b(alues)451 b(of)h Fk(t)p Fp(,)463 b Fk(y)43
+b Fp(,)464 b(and)452 b Fk(y)10802 13220 y Fe(0)11114
+13660 y Fp(.)681 b(The)452 b(argumen)-34 b(t)453 b Fn(IDA)p
+22127 13660 382 45 v 459 w(SV)g Fp(sp)34 b(eci\257es)451
+b(a)g(v)-34 b(ector)452 b(of)g(absolute)g(tolerances,)463
+b(and)0 15165 y(this)526 b(is)g(follo)-34 b(w)g(ed)527
+b(b)-34 b(y)526 b(the)g(address)g(of)h(the)f(relativ)-34
+b(e)525 b(tolerance)g Fn(rtol)i Fp(and)g(the)f(absolute)g(tolerance)0
+16671 y(v)-34 b(ector)404 b Fn(avtol)p Fp(.)540 b(See)404
+b Fl(x)p Fp(5.4.1)f(for)h(full)h(details)f(of)g(this)h(call.)1882
+18176 y(The)644 b(calls)f(to)h Fn(IDADense)j Fp(\(see)d
+Fl(x)p Fp(5.4.2\))f(and)i Fn(IDADenseSetJacFn)k Fp(\(see)644
+b Fl(x)p Fp(5.4.5\))f(sp)34 b(ecify)644 b(the)0 19682
+y Fm(id)-27 b(adense)510 b Fp(linear)e(solv)-34 b(er)508
+b(with)h(an)g(analytic)g(Jacobian)f(supplied)i(b)-34
+b(y)509 b(the)g(user-supplied)h(function)0 21187 y Fn(jacrob)p
+Fp(.)1882 22693 y(The)445 b(actual)g(solution)h(of)f(the)g(D)-34
+b(AE)445 b(initial)f(v)-67 b(alue)444 b(problem)h(is)g(accomplished)f
+(in)h(the)g(lo)34 b(op)445 b(o)-34 b(v)g(er)0 24198 y(v)-67
+b(alues)473 b(of)h(the)h(output)g(time)f Fn(tout)p Fp(.)749
+b(In)474 b(eac)-34 b(h)474 b(pass)h(of)f(the)g(lo)34
+b(op,)491 b(the)474 b(program)g(calls)f Fn(IDASolve)k
+Fp(in)0 25704 y(the)375 b Fn(IDA)p 4042 25704 V 459 w(NORMAL)i
+Fp(mo)34 b(de,)381 b(meaning)375 b(that)h(the)f(in)-34
+b(tegrator)375 b(is)g(to)g(tak)-34 b(e)375 b(steps)h(un)-34
+b(til)375 b(it)g(o)-34 b(v)g(ersho)34 b(ots)376 b Fn(tout)0
+27209 y Fp(and)404 b(then)g(in)-34 b(terp)34 b(olate)403
+b(to)g Fk(t)337 b Fp(=)p Fn(tout)p Fp(,)404 b(putting)h(the)e(computed)
+h(v)-67 b(alue)402 b(of)i Fk(y)43 b Fp(\()p Fn(tout)p
+Fp(\))406 b(and)e Fk(y)41744 26769 y Fe(0)42055 27209
+y Fp(\()p Fn(tout)p Fp(\))h(in)-34 b(to)0 28715 y Fn(yy)466
+b Fp(and)g Fn(yp)p Fp(,)480 b(resp)34 b(ectiv)-34 b(ely)-101
+b(,)479 b(with)466 b Fn(t)f Fp(=)g Fn(tout)p Fp(.)722
+b(If)466 b(an)f(error)f(o)34 b(ccured)465 b(during)g(the)h(call)e(to)h
+Fn(IDASolve)p Fp(,)0 30220 y(the)399 b(program)f(returns)h(1)f(and)h
+(terminates.)537 b(On)398 b(a)h(successful)f(return)h(\(indicated)g(b)
+-34 b(y)399 b(a)f(return)h(v)-67 b(alue)0 31725 y Fn(IDA)p
+1984 31725 V 459 w(SUCCESS)p Fp(\),)494 b(the)d(program)g(prin)-34
+b(ts)492 b(the)f(solution,)514 b(the)491 b(cum)-34 b(ulativ)g(e)491
+b(n)-34 b(um)g(b)34 b(er)492 b(of)g(steps)f(tak)-34 b(en)492
+b(so)0 33231 y(far,)404 b(and)h(the)f(curren)-34 b(t)405
+b(metho)34 b(d)405 b(order)e(and)i(step)g(size.)1882
+34736 y(Finally)-101 b(,)402 b(the)i(main)f(program)h(calls)e
+Fn(PrintFinalStats)409 b Fp(to)403 b(extract)g(and)h(prin)-34
+b(t)404 b(sev)-34 b(eral)403 b(relev)-67 b(an)-34 b(t)0
+36242 y(statistical)311 b(quan)-34 b(tities,)330 b(suc)-34
+b(h)311 b(as)g(the)g(total)g(n)-34 b(um)g(b)34 b(er)311
+b(of)g(steps,)330 b(the)311 b(n)-34 b(um)g(b)34 b(er)311
+b(of)g(residual)f(and)i(Jacobian)0 37747 y(ev)-67 b(aluations,)309
+b(and)286 b(the)g(n)-34 b(um)g(b)34 b(er)286 b(of)g(error)e(test)i(and)
+h(con)-34 b(v)g(ergence)285 b(test)h(failures.)498 b(It)286
+b(then)g(calls)f Fn(IDAFree)0 39253 y Fp(to)325 b(free)f(the)h
+Fm(id)-27 b(a)326 b Fp(memory)e(blo)34 b(c)-34 b(k)324
+b(and)h Fn(NV)p 19170 39253 V 459 w(Destroy)p 24081 39253
+V 461 w(Serial)i Fp(to)e(free)f(the)h(v)-34 b(ectors)324
+b Fn(yy)p Fp(,)341 b Fn(yp)p Fp(,)g(and)326 b Fn(avtol)p
+Fp(.)1882 40758 y(The)567 b(function)i Fn(PrintFinalStats)j
+Fp(used)c(here)f(is)g(actually)g(suitable)g(for)g(general)g(use)g(in)h
+(ap-)0 42264 y(plications)502 b(of)g Fm(id)-27 b(a)502
+b Fp(to)g(an)-34 b(y)502 b(problem)g(with)h(a)e(dense)h(Jacobian.)832
+b(It)501 b(calls)g(v)-67 b(arious)501 b Fn(IDAGet***)k
+Fp(and)0 43769 y Fn(IDADenseGet***)435 b Fp(functions)c(to)f(obtain)h
+(the)f(relev)-67 b(an)-34 b(t)429 b(coun)-34 b(ters,)437
+b(and)431 b(then)f(prin)-34 b(ts)431 b(them.)616 b(Sp)34
+b(eci\257-)0 45275 y(cally)-101 b(,)430 b(these)d(are:)582
+b(the)426 b(cum)-34 b(ulativ)g(e)427 b(n)-34 b(um)g(b)34
+b(er)427 b(of)g(steps)g(\()p Fn(nst)p Fp(\),)433 b(the)426
+b(n)-34 b(um)g(b)34 b(er)428 b(of)e(residual)g(ev)-67
+b(aluations)0 46780 y(\()p Fn(nre)p Fp(\))349 b(\(excluding)e(those)h
+(for)f(di\256erence-quotien)-34 b(t)347 b(Jacobian)h(ev)-67
+b(aluations\),)358 b(the)348 b(n)-34 b(um)g(b)34 b(er)348
+b(of)f(residual)0 48286 y(ev)-67 b(aluations)521 b(for)f(Jacobian)h(ev)
+-67 b(aluations)521 b(\()p Fn(nreD)p Fp(\),)h(the)f(n)-34
+b(um)g(b)34 b(er)522 b(of)f(Jacobian)g(ev)-67 b(aluations)520
+b(\()p Fn(njeD)p Fp(\),)0 49791 y(the)441 b(n)-34 b(um)g(b)34
+b(er)442 b(of)g(nonlinear)f(\(Newton\))i(iterations)e(\()p
+Fn(nni)p Fp(\),)451 b(the)442 b(n)-34 b(um)g(b)34 b(er)442
+b(of)f(lo)34 b(cal)440 b(error)g(test)h(failures)0 51297
+y(\()p Fn(netf)p Fp(\),)468 b(and)454 b(the)g(n)-34 b(um)g(b)34
+b(er)454 b(of)g(nonlinear)f(con)-34 b(v)g(ergence)453
+b(failures)h(\()p Fn(ncfn)p Fp(\).)688 b(These)454 b(optional)g
+(outputs)0 52802 y(are)404 b(describ)34 b(ed)403 b(in)h
+Fl(x)p Fp(5.4.7.)1882 54307 y(The)560 b(functions)g Fn(resrob)i
+Fp(\(of)e(t)-34 b(yp)34 b(e)560 b Fn(IDAResFn)p Fp(\))i(and)e
+Fn(jacrob)i Fp(\(of)e(t)-34 b(yp)34 b(e)559 b Fn(IDADenseJacFn)p
+Fp(\))564 b(are)0 55813 y(straigh)-34 b(tforw)g(ard)542
+b(expressions)d(of)g(the)h(D)-34 b(AE)539 b(system.)944
+b(The)540 b(function)h Fn(jacrob)g Fp(mak)-34 b(es)539
+b(use)h(of)f(the)0 57318 y(macro)404 b Fn(IJth)h Fp(discussed)g(ab)34
+b(o)-34 b(v)g(e.)539 b(See)404 b Fl(x)p Fp(5.5.1)f(for)h(detailed)g(sp)
+34 b(eci\257cations)404 b(of)h Fn(IDAResFn)p Fp(.)1882
+58824 y(Sample)f(output)i(from)f Fn(irobx)g Fp(follo)-34
+b(ws.)p 0 60750 17898 45 v 18479 60816 a Fd(irobx)582
+b(sample)g(output)p 30102 60750 V 0 61550 45 801 v 47956
+61550 V 0 62879 45 1329 v 47956 62879 V 0 64207 V 844
+63808 a(irobx:)g(Robertson)h(kinetics)f(DAE)g(serial)g(example)g
+(problem)g(for)g(IDA)p 47956 64207 V 0 65535 V 4912 65137
+a(Three)g(equation)h(chemical)f(kinetics)g(problem.)p
+47956 65535 V 0 66864 V 47956 66864 V 0 68192 V 844 67794
+a(Linear)g(solver:)h(IDADENSE,)f(with)g(user-supplied)h(Jacobian.)p
+47956 68192 V 0 69520 V 844 69122 a(Tolerance)g(parameters:)1164
+b(rtol)581 b(=)h(0.0001)1744 b(atol)582 b(=)f(1e-06)h(1e-10)g(1e-06)p
+47956 69520 V 0 70849 V 844 70450 a(Initial)h(conditions)f(y0)g(=)f
+(\(1)g(0)h(0\))p 47956 70849 V 0 72177 V 844 71779 a(Constraints)h(and)
+f(id)f(not)h(used.)p 47956 72177 V 0 73505 V 47956 73505
+V 0 74834 V 844 74435 a
+(-------------------------------------------------------------------)p
+(--)p 47956 74834 V 0 76162 V 2007 75764 a(t)6392 b(y1)h(y2)g(y3)3487
+b(|)582 b(nst)1163 b(k)3487 b(h)p 47956 76162 V 0 77491
+V 844 77092 a
+(-------------------------------------------------------------------)p
+(--)p 47956 77491 V 0 78819 V 844 78420 a(4.00e-01)1745
+b(9.8517e-01)g(3.3864e-05)g(1.4795e-02)582 b(|)1163 b(77)g(3)1743
+b(1.1431e-01)p 47956 78819 V Black 23697 81741 a Fp(4)p
+Black eop
+%%Page: 5 9
+5 8 bop Black Black 4000 8037 45 1329 v 4844 7638 a Fd(4.00e+00)1745
+b(9.0551e-01)g(2.2403e-05)g(9.4470e-02)582 b(|)1163 b(91)g(4)1743
+b(3.7037e-01)p 51956 8037 V 4000 9365 V 4844 8966 a(4.00e+01)i
+(7.1582e-01)g(9.1854e-06)g(2.8417e-01)582 b(|)g(127)1163
+b(4)1743 b(2.9630e+00)p 51956 9365 V 4000 10693 V 4844
+10295 a(4.00e+02)i(4.5051e-01)g(3.2227e-06)g(5.4949e-01)582
+b(|)g(177)1163 b(3)1743 b(1.2405e+01)p 51956 10693 V
+4000 12022 V 4844 11623 a(4.00e+03)i(1.8316e-01)g(8.9396e-07)g
+(8.1684e-01)582 b(|)g(228)1163 b(3)1743 b(2.7646e+02)p
+51956 12022 V 4000 13350 V 4844 12951 a(4.00e+04)i(3.8985e-02)g
+(1.6218e-07)g(9.6101e-01)582 b(|)g(278)1163 b(5)1743
+b(2.6140e+03)p 51956 13350 V 4000 14678 V 4844 14280
+a(4.00e+05)i(4.9388e-03)g(1.9852e-08)g(9.9506e-01)582
+b(|)g(324)1163 b(5)1743 b(2.7701e+04)p 51956 14678 V
+4000 16007 V 4844 15608 a(4.00e+06)i(5.1763e-04)g(2.0716e-09)g
+(9.9948e-01)582 b(|)g(355)1163 b(4)1743 b(3.9788e+05)p
+51956 16007 V 4000 17335 V 4844 16936 a(4.00e+07)i(5.1907e-05)g
+(2.0764e-10)g(9.9995e-01)582 b(|)g(380)1163 b(3)1743
+b(6.3661e+06)p 51956 17335 V 4000 18663 V 4844 18265
+a(4.00e+08)i(5.8818e-06)g(2.3527e-11)g(9.9999e-01)582
+b(|)g(394)1163 b(1)1743 b(9.1671e+07)p 51956 18663 V
+4000 19992 V 4844 19593 a(4.00e+09)i(7.0539e-07)g(2.8216e-12)g
+(1.0000e-00)582 b(|)g(402)1163 b(1)1743 b(1.4667e+09)p
+51956 19992 V 4000 21320 V 4844 20922 a(4.00e+10)1164
+b(-7.3001e-07)g(-2.9200e-12)1745 b(1.0000e+00)582 b(|)g(407)1163
+b(1)1743 b(2.3468e+10)p 51956 21320 V 4000 22648 V 51956
+22648 V 4000 23977 V 4844 23578 a(Final)582 b(Run)g(Statistics:)p
+51956 23977 V 4000 25305 V 51956 25305 V 4000 26633 V
+4844 26235 a(Number)g(of)g(steps)11624 b(=)581 b(407)p
+51956 26633 V 4000 27962 V 4844 27563 a(Number)h(of)g(residual)g
+(evaluations)2908 b(=)581 b(557)p 51956 27962 V 4000
+29290 V 4844 28892 a(Number)h(of)g(Jacobian)g(evaluations)2908
+b(=)581 b(65)p 51956 29290 V 4000 30619 V 4844 30220
+a(Number)h(of)g(nonlinear)g(iterations)2908 b(=)581 b(557)p
+51956 30619 V 4000 31947 V 4844 31548 a(Number)h(of)g(error)g(test)f
+(failures)3489 b(=)581 b(6)p 51956 31947 V 4000 33275
+V 4844 32877 a(Number)h(of)g(nonlinear)g(conv.)g(failures)h(=)e(0)p
+51956 33275 V 4000 34075 45 801 v 51956 34075 V 4000
+34119 48001 45 v 4000 37329 a Fi(2.2)1495 b(A)499 b(banded)g(example:)
+665 b Fh(iwebsb)4000 39617 y Fp(This)305 b(example)e(is)h(a)g(mo)34
+b(del)304 b(of)g(a)g(m)-34 b(ulti-sp)34 b(ecies)304 b(fo)34
+b(o)g(d)304 b(w)-34 b(eb)305 b([1],)323 b(in)304 b(whic)-34
+b(h)305 b(predator-prey)f(relationships)4000 41122 y(with)351
+b(di\256usion)g(in)f(a)g(2-D)g(spatial)h(domain)f(are)g(sim)-34
+b(ulated.)521 b(Here)350 b(w)-34 b(e)350 b(consider)g(a)g(mo)34
+b(del)350 b(with)h Fk(s)337 b Fp(=)f(2)p Fk(p)4000 42628
+y Fp(sp)34 b(ecies:)726 b Fk(p)497 b Fp(predators)i(and)g
+Fk(p)f Fp(prey)-101 b(.)820 b(Sp)34 b(ecies)497 b(1)p
+Fk(;)202 b(:)g(:)g(:)f(;)h(p)498 b Fp(\(the)h(prey\))f(satisfy)g(rate)g
+(equations,)522 b(while)4000 44133 y(sp)34 b(ecies)465
+b Fk(p)311 b Fp(+)g(1)p Fk(;)202 b(:)g(:)g(:)f(;)h(s)466
+b Fp(\(the)h(predators\))h(ha)-34 b(v)g(e)466 b(in\257nitely)h(fast)g
+(reaction)f(rates.)726 b(The)466 b(coupled)h(PDEs)4000
+45639 y(for)404 b(the)h(sp)34 b(ecies)403 b(concen)-34
+b(trations)405 b Fk(c)20545 45199 y Fj(i)20920 45639
+y Fp(\()p Fk(x;)202 b(y)43 b(;)202 b(t)p Fp(\))405 b(are:)12768
+47084 y Ff(\()13745 48312 y Fk(@)67 b(c)14981 47872 y
+Fj(i)15356 48312 y Fk(=@)g(t)336 b Fp(=)g Fk(R)19646
+48494 y Fj(i)20022 48312 y Fp(\()p Fk(x;)202 b(y)43 b(;)202
+b(c)p Fp(\))270 b(+)f Fk(d)26010 48494 y Fj(i)26386 48312
+y Fp(\()p Fk(c)27382 47872 y Fj(i)27382 48612 y(xx)28766
+48312 y Fp(+)g Fk(c)30503 47872 y Fj(i)30503 48612 y(y)32
+b(y)31552 48312 y Fp(\))1010 b Fk(i)336 b Fp(=)h(1)p
+Fk(;)202 b Fp(2)p Fk(;)g(:)g(:)g(:)e(;)i(p)16625 50119
+y Fp(0)336 b(=)h Fk(R)19767 50301 y Fj(i)20143 50119
+y Fp(\()p Fk(x;)202 b(y)43 b(;)202 b(c)p Fp(\))269 b(+)h
+Fk(d)26131 50301 y Fj(i)26506 50119 y Fp(\()p Fk(c)27502
+49679 y Fj(i)27502 50418 y(xx)28886 50119 y Fp(+)f Fk(c)30623
+49679 y Fj(i)30623 50418 y(y)32 b(y)31672 50119 y Fp(\))1010
+b Fk(i)337 b Fp(=)f Fk(p)269 b Fp(+)g(1)p Fk(;)202 b(:)g(:)g(:)f(;)h(s)
+404 b(;)50451 49157 y Fp(\(2\))4000 52608 y(with)19229
+55204 y Fk(R)20149 55386 y Fj(i)20525 55204 y Fp(\()p
+Fk(x;)202 b(y)43 b(;)202 b(c)p Fp(\))337 b(=)g Fk(c)26542
+54703 y Fj(i)27119 52768 y Ff(0)27119 54949 y(@)28180
+55204 y Fk(b)28700 55386 y Fj(i)29345 55204 y Fp(+)31215
+53689 y Fj(s)30557 54052 y Ff(X)30616 56658 y Fj(j)51
+b Fg(=1)32510 55204 y Fk(a)33151 55386 y Fj(ij)33958
+55204 y Fk(c)34483 54703 y Fj(j)34969 52768 y Ff(1)34969
+54949 y(A)36434 55204 y Fk(:)4000 58821 y Fp(Here)395
+b Fk(c)g Fp(denotes)h(the)g(v)-34 b(ector)395 b Fl(f)p
+Fk(c)18993 58381 y Fj(i)19369 58821 y Fl(g)p Fp(.)535
+b(The)396 b(in)-34 b(teraction)396 b(and)h(di\256usion)f(co)34
+b(e\261cien)-34 b(ts)395 b(\()p Fk(a)43886 59003 y Fj(ij)44694
+58821 y Fk(;)202 b(b)45753 59003 y Fj(i)46128 58821 y
+Fk(;)g(d)47298 59003 y Fj(i)47674 58821 y Fp(\))396 b(can)f(b)34
+b(e)4000 60327 y(functions)406 b(of)e(\()p Fk(x;)202
+b(y)43 b Fp(\))405 b(in)f(general.)538 b(The)405 b(c)-34
+b(hoices)403 b(made)i(for)f(this)h(test)f(problem)g(are)g(as)g(follo)
+-34 b(ws:)18409 65663 y Fk(a)19050 65845 y Fj(ij)20194
+65663 y Fp(=)21473 61724 y Ff(8)21473 62815 y(>)21473
+63178 y(>)21473 63542 y(>)21473 63906 y(>)21473 64269
+y(<)21473 66451 y(>)21473 66815 y(>)21473 67178 y(>)21473
+67542 y(>)21473 67906 y(:)22551 63012 y Fl(\241)p Fp(1)5500
+b Fk(i)336 b Fp(=)g Fk(j)22551 64818 y Fl(\241)p Fp(0)p
+Fk(:)p Fp(5)269 b Fl(\242)g Fp(10)27130 64378 y Fe(\241)p
+Fg(6)29600 64818 y Fk(i)336 b Fl(\267)g Fk(p;)606 b(j)406
+b(>)337 b(p)22551 66625 y Fp(10)23763 66185 y Fg(4)29600
+66625 y Fk(i)f(>)g(p;)606 b(j)406 b Fl(\267)337 b Fk(p)22551
+68431 y Fp(0)6443 b(all)403 b(other)i(\()p Fk(i;)202
+b(j)69 b Fp(\))202 b Fk(;)12534 72212 y(b)13054 72394
+y Fj(i)13767 72212 y Fp(=)336 b Fk(b)15566 72394 y Fj(i)15942
+72212 y Fp(\()p Fk(x;)202 b(y)43 b Fp(\))338 b(=)20370
+70139 y Ff(\()21347 71367 y Fp(\(1)269 b(+)h Fk(\256)t(xy)313
+b Fp(+)269 b Fk(\257)d Fp(sin\(4)p Fk(\274)43 b(x)p Fp(\))202
+b(sin)q(\(4)p Fk(\274)43 b(y)g Fp(\)\))2158 b Fk(i)336
+b Fl(\267)h Fk(p)21347 73174 y Fl(\241)p Fp(\(1)269 b(+)g
+Fk(\256)t(xy)314 b Fp(+)269 b Fk(\257)d Fp(sin\(4)p Fk(\274)43
+b(x)p Fp(\))202 b(sin)q(\(4)p Fk(\274)43 b(y)g Fp(\)\))1215
+b Fk(i)336 b(>)h(p)202 b(;)4000 75282 y Fp(and)23162
+77514 y Fk(d)23793 77696 y Fj(i)24506 77514 y Fp(=)25785
+75441 y Ff(\()26762 76669 y Fp(1)2154 b Fk(i)337 b Fl(\267)f
+Fk(p)26762 78476 y Fp(0)p Fk(:)p Fp(5)1211 b Fk(i)337
+b(>)f(p)202 b(:)p Black 27697 81741 a Fp(5)p Black eop
+%%Page: 6 10
+6 9 bop Black Black 1882 7638 a Fp(The)429 b(spatial)f(domain)i(is)e
+(the)h(unit)g(square)f(0)377 b Fl(\267)g Fk(x;)202 b(y)421
+b Fl(\267)377 b Fp(1,)434 b(and)429 b(the)g(time)f(in)-34
+b(terv)-67 b(al)428 b(is)g(0)377 b Fl(\267)g Fk(t)g Fl(\267)g
+Fp(1.)0 9143 y(The)602 b(b)34 b(oundary)601 b(conditions)h(are)f(of)g
+(homogeneous)h(Neumann)h(t)-34 b(yp)34 b(e)601 b(\(zero)g(normal)g
+(deriv)-67 b(ativ)-34 b(es\))0 10649 y(ev)g(erywhere.)922
+b(The)533 b(co)34 b(e\261cien)-34 b(ts)532 b(are)f(suc)-34
+b(h)534 b(that)f(a)f(unique)h(stable)f(equilibrium)g(is)g(guaran)-34
+b(teed)534 b(to)0 12154 y(exist)446 b(when)h Fk(\256)412
+b Fp(=)407 b Fk(\257)470 b Fp(=)407 b(0)447 b([1)o(].)665
+b(Empirically)-101 b(,)455 b(a)446 b(stable)h(equilibrium)f(app)34
+b(ears)446 b(to)h(exist)f(for)g(\(2\))h(when)0 13660
+y Fk(\256)426 b Fp(and)c Fk(\257)484 b Fp(are)421 b(p)34
+b(ositiv)-34 b(e,)425 b(although)d(it)g(ma)-34 b(y)421
+b(not)h(b)34 b(e)421 b(unique.)589 b(In)422 b(this)f(problem)g(w)-34
+b(e)422 b(tak)-34 b(e)421 b Fk(\256)370 b Fp(=)365 b(50)421
+b(and)0 15165 y Fk(\257)400 b Fp(=)337 b(1000.)527 b(F)-101
+b(or)371 b(the)g(initial)f(conditions,)378 b(w)-34 b(e)371
+b(set)g(eac)-34 b(h)371 b(prey)f(concen)-34 b(tration)371
+b(to)g(a)g(simple)f(p)34 b(olynomial)0 16671 y(pro\257le)429
+b(satisfying)g(the)h(b)34 b(oundary)429 b(conditions,)436
+b(while)428 b(the)i(predator)f(concen)-34 b(trations)430
+b(are)e(all)h(set)g(to)0 18176 y(a)404 b(\260at)h(v)-67
+b(alue:)10889 20533 y Fk(c)11414 20032 y Fj(i)11790 20533
+y Fp(\()p Fk(x;)202 b(y)43 b(;)202 b Fp(0\))337 b(=)17363
+18460 y Ff(\()18339 19688 y Fp(10)270 b(+)f Fk(i)p Fp([16)p
+Fk(x)p Fp(\(1)g Fl(\241)g Fk(x)p Fp(\))p Fk(y)43 b Fp(\(1)270
+b Fl(\241)g Fk(y)43 b Fp(\)])32057 19248 y Fg(2)33795
+19688 y Fk(i)337 b Fl(\267)f Fk(p)202 b(;)18339 21494
+y Fp(10)19551 21055 y Fg(5)33795 21494 y Fk(i)337 b(>)f(p)202
+b(:)1882 23974 y Fp(W)-101 b(e)381 b(discretize)f(this)i(PDE)f(system)h
+(\(2\))g(\(plus)h(b)34 b(oundary)382 b(conditions\))h(with)f(cen)-34
+b(tral)381 b(di\256erencing)0 25480 y(on)388 b(an)f Fk(L)236
+b Fl(\243)g Fk(L)387 b Fp(mesh,)j(so)e(as)f(to)h(obtain)g(a)g(D)-34
+b(AE)387 b(system)g(of)h(size)f Fk(N)468 b Fp(=)337 b
+Fk(sL)34143 25040 y Fg(2)34669 25480 y Fp(.)533 b(The)387
+b(dep)34 b(enden)-34 b(t)389 b(v)-67 b(ariable)0 26985
+y(v)-34 b(ector)417 b Fk(C)504 b Fp(consists)417 b(of)g(the)h(v)-67
+b(alues)416 b Fk(c)17141 26545 y Fj(i)17516 26985 y Fp(\()p
+Fk(x)18680 27167 y Fj(j)19167 26985 y Fk(;)202 b(y)20300
+27182 y Fj(k)20869 26985 y Fk(;)g(t)p Fp(\))417 b(group)34
+b(ed)417 b(\257rst)h(b)-34 b(y)417 b(sp)34 b(ecies)416
+b(index)h Fk(i)p Fp(,)i(then)f(b)-34 b(y)418 b Fk(x)p
+Fp(,)h(and)0 28491 y(lastly)442 b(b)-34 b(y)443 b Fk(y)43
+b Fp(.)655 b(A)-34 b(t)443 b(eac)-34 b(h)443 b(spatial)g(mesh)g(p)34
+b(oin)-34 b(t,)453 b(the)443 b(system)f(has)h(a)g(blo)34
+b(c)-34 b(k)442 b(of)h Fk(p)f Fp(ODE's)g(follo)-34 b(w)g(ed)444
+b(b)-34 b(y)443 b(a)0 29996 y(blo)34 b(c)-34 b(k)494
+b(of)i Fk(p)e Fp(algebraic)g(equations,)518 b(all)494
+b(coupled.)811 b(F)-101 b(or)495 b(this)g(example,)517
+b(w)-34 b(e)495 b(tak)-34 b(e)495 b Fk(p)488 b Fp(=)f(1)p
+Fk(;)202 b(s)488 b Fp(=)g(2,)517 b(and)0 31502 y Fk(L)337
+b Fp(=)f(20.)539 b(The)404 b(Jacobian)h(is)e(banded,)j(with)e
+(half-bandwidths)k Fn(mu)637 b(=)g(ml)404 b Fp(=)337
+b Fk(sL)g Fp(=)f(40.)1882 33049 y(The)433 b Fn(iwebsb.c)j
+Fp(program)d(\(listed)g(in)g(App)34 b(endix)433 b(B\))g(includes)g(the)
+g(\257le)g Fn(idaband.h)j Fp(in)d(order)g(to)0 34554
+y(use)491 b(the)h Fm(id)-27 b(aband)493 b Fp(linear)d(solv)-34
+b(er.)800 b(This)492 b(\257le)f(con)-34 b(tains)492 b(the)g(protot)-34
+b(yp)34 b(e)492 b(for)f(the)h Fn(IDABand)i Fp(routine,)0
+36060 y(the)539 b(de\257nition)i(for)e(the)g(band)h(matrix)f(t)-34
+b(yp)34 b(e)539 b Fn(BandMat)p Fp(,)575 b(and)540 b(the)f
+Fn(BAND)p 34760 36060 382 45 v 460 w(COL)h Fp(and)g Fn(BAND)p
+42704 36060 V 459 w(COL)p 45071 36060 V 460 w(ELEM)0
+37565 y Fp(macros)361 b(for)h(accessing)g(matrix)f(elemen)-34
+b(ts.)525 b(See)361 b Fl(x)p Fp(8.2.)524 b(The)362 b(main)g
+Fm(id)-27 b(a)362 b Fp(header)g(\257le)g Fn(ida.h)h Fp(is)f(included)0
+39071 y(for)542 b(the)h(protot)-34 b(yp)34 b(es)543 b(of)g(the)f(solv)
+-34 b(er)542 b(user-callable)f(functions)j(and)f Fm(id)-27
+b(a)543 b Fp(constan)-34 b(ts,)578 b(while)542 b(the)h(\257le)0
+40576 y Fn(nvector)p 4528 40576 V 461 w(serial.h)481
+b Fp(is)d(included)h(for)f(the)h(de\257nition)h(of)e(the)h(serial)f
+Fn(N)p 33829 40576 V 458 w(Vector)j Fp(t)-34 b(yp)34
+b(e.)761 b(The)479 b(header)0 42081 y(\257le)388 b Fn(smalldense.h)393
+b Fp(is)388 b(included)g(for)h(the)g Fn(denalloc)i Fp(function)e(used)g
+(in)g(allo)34 b(cating)387 b(memory)h(for)g(the)0 43587
+y(user)404 b(data)h(structure.)1882 45134 y(The)419 b(include)h(lines)e
+(at)i(the)g(top)f(of)h(the)g(\257le)e(are)h(follo)-34
+b(w)g(ed)420 b(b)-34 b(y)420 b(de\257nitions)g(of)g(problem)f(constan)
+-34 b(ts)0 46639 y(whic)g(h)570 b(include)g(the)g Fk(x)f
+Fp(and)h Fk(y)613 b Fp(mesh)570 b(dimensions,)611 b Fn(MX)570
+b Fp(and)g Fn(MY)p Fp(,)g(the)g(n)-34 b(um)g(b)34 b(er)570
+b(of)g(equations)g Fn(NEQ)p Fp(,)0 48145 y(the)437 b(scalar)g(relativ)
+-34 b(e)436 b(and)i(absolute)f(tolerances)g Fn(RTOL)h
+Fp(and)g Fn(ATOL)p Fp(,)g(and)g(v)-67 b(arious)436 b(parameters)h(for)g
+(the)0 49650 y(fo)34 b(o)g(d-w)-34 b(eb)405 b(problem.)1882
+51197 y(Spatial)387 b(discretization)g(of)h(the)f(PDE)g(naturally)g
+(pro)34 b(duces)387 b(a)g(D)-34 b(AE)387 b(system)g(in)g(whic)-34
+b(h)388 b(equations)0 52703 y(are)481 b(n)-34 b(um)g(b)34
+b(ered)483 b(b)-34 b(y)482 b(mesh)h(co)34 b(ordinates)481
+b(\()p Fk(i;)202 b(j)69 b Fp(\).)773 b(The)482 b(user-de\257ned)h
+(macro)e Fn(IJth)p 38572 52703 V 460 w(Vptr)i Fp(isolates)f(the)0
+54208 y(translation)h(for)g(the)f(mathematical)h(t)-34
+b(w)g(o-dimensional)484 b(index)e(to)h(the)g(one-dimensional)f
+Fn(N)p 43799 54208 V 459 w(Vector)0 55714 y Fp(index)384
+b(and)h(allo)-34 b(ws)385 b(the)g(user)f(to)h(write)f(clean,)j
+(readable)d(co)34 b(de)384 b(to)h(access)f(comp)34 b(onen)-34
+b(ts)385 b(of)g(the)g(dep)34 b(en-)0 57219 y(den)-34
+b(t)415 b(v)-67 b(ariable.)567 b Fn(IJ)p 9135 57219 V
+459 w(Vptr\(v,i,j\))418 b Fp(returns)c(a)g(p)34 b(oin)-34
+b(ter)414 b(to)h(the)f(lo)34 b(cation)414 b(in)g Fn(v)g
+Fp(corresp)34 b(onding)414 b(to)g(the)0 58725 y(sp)34
+b(ecies)403 b(with)i(index)f Fn(is)h Fp(=)336 b(0,)404
+b(x-index)g Fn(ix)h Fp(=)336 b Fk(i)p Fp(,)403 b(and)i(y-index)f
+Fn(jy)h Fp(=)336 b Fk(j)69 b Fp(.)1882 60272 y(The)552
+b(t)-34 b(yp)34 b(e)553 b Fn(UserData)h Fp(is)e(a)g(p)34
+b(oin)-34 b(ter)553 b(to)f(a)g(structure)h(con)-34 b(taining)553
+b(problem)f(data)h(used)f(in)g(the)0 61777 y Fn(resweb)422
+b Fp(function.)586 b(This)420 b(structure)g(is)f(allo)34
+b(cated)419 b(and)i(initialized)d(at)i(the)g(b)34 b(eginning)420
+b(of)g Fn(main)p Fp(.)586 b(The)0 63283 y(p)34 b(oin)-34
+b(ter)321 b(to)g(it,)337 b(called)320 b Fn(webdata)p
+Fp(,)339 b(is)320 b(then)i(passed)f(to)g Fn(IDASetRData)j
+Fp(and)e(as)e(a)h(result)f(it)h(will)f(b)34 b(e)320 b(passed)0
+64788 y(bac)-34 b(k)404 b(to)h(the)f Fn(resweb)i Fp(function)g(eac)-34
+b(h)404 b(time)g(it)g(is)g(called.)1882 66335 y(The)328
+b Fn(main)h Fp(program)e(is)g(straigh)-34 b(tforw)g(ard)330
+b(and)e(v)-34 b(ery)327 b(similar)f(to)i(that)h(for)e
+Fn(irobx)p Fp(.)515 b(The)328 b(di\256erences)0 67841
+y(come)452 b(from)h(the)g(use)g(of)g(the)g Fm(id)-27
+b(aband)454 b Fp(linear)e(solv)-34 b(er)452 b(and)h(from)g(the)g(use)g
+(of)f(the)h(consisten)-34 b(t)454 b(initial)0 69346 y(conditions)578
+b(algorithm)f(in)g Fm(id)-27 b(a)577 b Fp(to)g(correct)f(the)i(initial)
+e(v)-67 b(alues.)1056 b Fn(IDACalcIC)580 b Fp(is)d(called)f(with)h(the)
+0 70851 y(option)509 b Fn(IDA)p 5859 70851 V 459 w(YA)p
+7590 70851 V 459 w(YDP)p 9957 70851 V 459 w(INIT)p Fp(,)g(meaning)f
+(that)g Fm(id)-27 b(a)509 b Fp(is)e(to)h(compute)g(the)h(algebraic)d
+(comp)34 b(onen)-34 b(ts)509 b(of)f Fk(y)0 72357 y Fp(and)603
+b(di\256eren)-34 b(tial)601 b(comp)34 b(onen)-34 b(ts)604
+b(of)e Fk(y)17903 71917 y Fe(0)18214 72357 y Fp(,)651
+b(giv)-34 b(en)602 b(the)g(di\256eren)-34 b(tial)602
+b(comp)34 b(onen)-34 b(ts)603 b(of)f Fk(y)43 b Fp(.)1133
+b(This)602 b(option)0 73862 y(requires)405 b(that)i(the)f
+Fn(N)p 9990 73862 V 458 w(Vector)i(id)f Fp(b)34 b(e)405
+b(set)h(through)h(a)f(call)f(to)h Fn(IDASetId)j Fp(sp)34
+b(ecifying)405 b(the)h(di\256eren)-34 b(tial)0 75368
+y(and)524 b(algebraic)f(comp)34 b(onen)-34 b(ts.)899
+b(In)523 b(this)i(example,)552 b Fn(id)525 b Fp(has)f(comp)34
+b(onen)-34 b(ts)525 b(equal)e(to)h(1)g(for)f(the)h(prey)0
+76873 y(\(indicating)405 b(di\256eren)-34 b(tial)404
+b(v)-67 b(ariables\))403 b(and)i(0)f(for)g(the)h(predators)g
+(\(algebraic)e(v)-67 b(ariables\).)1882 78420 y(Next,)398
+b(the)f Fn(IDASolve)i Fp(function)f(is)f(called)f(in)h(a)f(lo)34
+b(op)397 b(o)-34 b(v)g(er)397 b(the)g(output)i(times,)e(and)h(the)f
+(solution)p Black 23697 81741 a(6)p Black eop
+%%Page: 7 11
+7 10 bop Black Black 4000 7638 a Fp(for)328 b(the)g(sp)34
+b(ecies)327 b(concen)-34 b(trations)329 b(at)f(the)h(b)34
+b(ottom-left)329 b(and)f(top-righ)-34 b(t)329 b(corners)f(is)f(prin)-34
+b(ted,)344 b(along)328 b(with)4000 9143 y(the)405 b(cum)-34
+b(ulativ)g(e)404 b(n)-34 b(um)g(b)34 b(er)405 b(of)g(time)f(steps,)g
+(curren)-34 b(t)405 b(metho)34 b(d)404 b(order,)g(and)h(curren)-34
+b(t)404 b(step)h(size.)5882 10652 y(Finally)-101 b(,)492
+b(the)476 b(main)g(program)g(calls)f Fn(PrintFinalStats)480
+b Fp(to)c(get)g(and)g(prin)-34 b(t)477 b(all)e(of)h(the)g(relev)-67
+b(an)-34 b(t)4000 12158 y(statistical)453 b(quan)-34
+b(tities.)684 b(It)453 b(then)g(calls)f Fn(NV)p 24064
+12158 382 45 v 459 w(Destroy)p 28975 12158 V 461 w(Serial)i
+Fp(to)f(free)f(the)h(v)-34 b(ectors)452 b Fn(cc)p Fp(,)465
+b Fn(cp)p Fp(,)g(and)454 b Fn(id)p Fp(,)4000 13663 y(and)405
+b Fn(IDAFree)h Fp(to)f(free)f(the)g Fm(id)-27 b(a)405
+b Fp(memory)e(blo)34 b(c)-34 b(k.)5882 15172 y(The)455
+b(function)i Fn(PrintFinalStats)j Fp(used)455 b(here)g(is)f(actually)h
+(suitable)g(for)g(general)g(use)g(in)g(appli-)4000 16678
+y(cations)528 b(of)f Fm(id)-27 b(a)528 b Fp(to)g(an)-34
+b(y)528 b(problem)f(with)i(a)e(banded)i(Jacobian.)908
+b(It)527 b(calls)g(v)-67 b(arious)527 b Fn(IDAGet***)j
+Fp(and)4000 18183 y Fn(IDABandGet***)482 b Fp(functions)e(to)e(obtain)h
+(the)f(relev)-67 b(an)-34 b(t)477 b(coun)-34 b(ters,)497
+b(and)478 b(then)h(prin)-34 b(ts)479 b(them.)760 b(Sp)34
+b(eci\257-)4000 19689 y(cally)-101 b(,)430 b(these)d(are:)582
+b(the)426 b(cum)-34 b(ulativ)g(e)427 b(n)-34 b(um)g(b)34
+b(er)427 b(of)g(steps)g(\()p Fn(nst)p Fp(\),)433 b(the)426
+b(n)-34 b(um)g(b)34 b(er)428 b(of)e(residual)g(ev)-67
+b(aluations)4000 21194 y(\()p Fn(nre)p Fp(\))349 b(\(excluding)e(those)
+h(for)f(di\256erence-quotien)-34 b(t)347 b(Jacobian)h(ev)-67
+b(aluations\),)358 b(the)348 b(n)-34 b(um)g(b)34 b(er)348
+b(of)f(residual)4000 22699 y(ev)-67 b(aluations)521 b(for)f(Jacobian)h
+(ev)-67 b(aluations)521 b(\()p Fn(nreB)p Fp(\),)h(the)f(n)-34
+b(um)g(b)34 b(er)522 b(of)f(Jacobian)g(ev)-67 b(aluations)520
+b(\()p Fn(njeB)p Fp(\),)4000 24205 y(the)441 b(n)-34
+b(um)g(b)34 b(er)442 b(of)g(nonlinear)f(\(Newton\))i(iterations)e(\()p
+Fn(nni)p Fp(\),)451 b(the)442 b(n)-34 b(um)g(b)34 b(er)442
+b(of)f(lo)34 b(cal)440 b(error)g(test)h(failures)4000
+25710 y(\()p Fn(netf)p Fp(\),)468 b(and)454 b(the)g(n)-34
+b(um)g(b)34 b(er)454 b(of)g(nonlinear)f(con)-34 b(v)g(ergence)453
+b(failures)h(\()p Fn(ncfn)p Fp(\).)688 b(These)454 b(optional)g
+(outputs)4000 27216 y(are)404 b(describ)34 b(ed)403 b(in)h
+Fl(x)p Fp(5.4.7.)5882 28725 y(The)325 b(function)h Fn(resweb)h
+Fp(is)d(a)h(direct)f(translation)i(of)f(the)g(residual)f(of)h(\(2\).)
+513 b(It)324 b(\257rst)i(calls)e(the)h(priv)-67 b(ate)4000
+30230 y(function)482 b Fn(Fweb)h Fp(to)e(initialize)f(the)i(residual)f
+(v)-34 b(ector)480 b(with)i(the)g(righ)-34 b(t-hand)483
+b(side)e(of)g(\(2\))h(and)g(then)g(it)4000 31736 y(lo)34
+b(ops)433 b(o)-34 b(v)g(er)434 b(all)f(grid)g(p)34 b(oin)-34
+b(ts,)442 b(setting)434 b(residual)f(v)-67 b(alues)433
+b(appropriately)h(for)f(di\256eren)-34 b(tial)434 b(or)f(algebraic)4000
+33241 y(comp)34 b(onen)-34 b(ts.)534 b(The)389 b(calculation)f(of)g
+(the)h(in)-34 b(teraction)388 b(terms)g Fk(R)33525 33423
+y Fj(i)34289 33241 y Fp(is)g(done)h(in)f(the)g(function)h
+Fn(WebRates)p Fp(.)5882 34750 y(Sample)404 b(output)i(from)f
+Fn(iwebsb)h Fp(follo)-34 b(ws.)p 4000 36840 17608 45
+v 22189 36906 a Fd(iwebsb)582 b(sample)g(output)p 34393
+36840 V 4000 37640 45 801 v 51956 37640 V 4000 38968
+45 1329 v 51956 38968 V 4000 40297 V 4844 39898 a(iwebsb:)h
+(Predator-prey)g(DAE)e(serial)h(example)g(problem)h(for)e(IDA)p
+51956 40297 V 4000 41625 V 51956 41625 V 4000 42953 V
+4844 42555 a(Number)h(of)g(species)g(ns:)g(2)2905 b(Mesh)582
+b(dimensions:)h(20)e(x)h(20)2906 b(System)582 b(size:)g(800)p
+51956 42953 V 4000 44282 V 4844 43883 a(Tolerance)h(parameters:)1164
+b(rtol)581 b(=)h(1e-05)1744 b(atol)582 b(=)f(1e-05)p
+51956 44282 V 4000 45610 V 4844 45212 a(Linear)h(solver:)h(IDABAND,)
+1163 b(Band)582 b(parameters)g(mu)g(=)f(40,)h(ml)f(=)h(40)p
+51956 45610 V 4000 46938 V 4844 46540 a(CalcIC)g(called)g(to)g(correct)
+g(initial)g(predator)h(concentrations.)p 51956 46938
+V 4000 48267 V 51956 48267 V 4000 49595 V 4844 49197
+a(-----------------------------------------------------------)p
+51956 49595 V 4000 50923 V 6007 50525 a(t)4649 b(bottom-left)1164
+b(top-right)2326 b(|)581 b(nst)1163 b(k)3487 b(h)p 51956
+50923 V 4000 52252 V 4844 51853 a
+(-----------------------------------------------------------)p
+51956 52252 V 4000 53580 V 51956 53580 V 4000 54909 V
+4844 54510 a(0.00e+00)1745 b(1.0000e+01)g(9.9949e+04)g(|)e(0)1163
+b(0)1743 b(1.6310e-08)p 51956 54909 V 4000 56237 V 11237
+55838 a(9.9999e+04)i(9.9949e+04)g(|)p 51956 56237 V 4000
+57565 V 51956 57565 V 4000 58894 V 4844 58495 a(1.00e-03)g(1.0318e+01)g
+(1.0822e+05)g(|)1162 b(32)h(4)1743 b(1.0823e-04)p 51956
+58894 V 4000 60222 V 11237 59823 a(1.0319e+05)i(1.0822e+05)g(|)p
+51956 60222 V 4000 61550 V 51956 61550 V 4000 62879 V
+4844 62480 a(1.00e-02)g(1.6189e+02)g(1.9735e+06)g(|)581
+b(135)1163 b(4)1743 b(1.7964e-04)p 51956 62879 V 4000
+64207 V 11237 63808 a(1.6189e+06)i(1.9735e+06)g(|)p 51956
+64207 V 4000 65535 V 51956 65535 V 4000 66864 V 4844
+66465 a(1.00e-01)g(2.4019e+02)g(2.7072e+06)g(|)581 b(231)1163
+b(1)1743 b(4.4212e-02)p 51956 66864 V 4000 68192 V 11237
+67794 a(2.4019e+06)i(2.7072e+06)g(|)p 51956 68192 V 4000
+69520 V 51956 69520 V 4000 70849 V 4844 70450 a(4.00e-01)g(2.4019e+02)g
+(2.7072e+06)g(|)581 b(233)1163 b(1)1743 b(1.7685e-01)p
+51956 70849 V 4000 72177 V 11237 71779 a(2.4019e+06)i(2.7072e+06)g(|)p
+51956 72177 V 4000 73505 V 51956 73505 V 4000 74834 V
+4844 74435 a(7.00e-01)g(2.4019e+02)g(2.7072e+06)g(|)581
+b(234)1163 b(1)1743 b(3.5370e-01)p 51956 74834 V 4000
+76162 V 11237 75764 a(2.4019e+06)i(2.7072e+06)g(|)p 51956
+76162 V 4000 77491 V 51956 77491 V 4000 78819 V 4844
+78420 a(1.00e+00)g(2.4019e+02)g(2.7072e+06)g(|)581 b(235)1163
+b(1)1743 b(7.0740e-01)p 51956 78819 V Black 27697 81741
+a Fp(7)p Black eop
+%%Page: 8 12
+8 11 bop Black Black 0 8037 45 1329 v 7237 7638 a Fd(2.4019e+06)1745
+b(2.7072e+06)g(|)p 47956 8037 V 0 9365 V 47956 9365 V
+0 10693 V 844 10295 a
+(-----------------------------------------------------------)p
+47956 10693 V 0 12022 V 844 11623 a(Final)582 b(run)g(statistics:)p
+47956 12022 V 0 13350 V 47956 13350 V 0 14678 V 844 14280
+a(Number)g(of)g(steps)11624 b(=)581 b(235)p 47956 14678
+V 0 16007 V 844 15608 a(Number)h(of)g(residual)g(evaluations)2908
+b(=)581 b(3319)p 47956 16007 V 0 17335 V 844 16936 a(Number)h(of)g
+(Jacobian)g(evaluations)2908 b(=)581 b(36)p 47956 17335
+V 0 18663 V 844 18265 a(Number)h(of)g(nonlinear)g(iterations)2908
+b(=)581 b(401)p 47956 18663 V 0 19992 V 844 19593 a(Number)h(of)g
+(error)g(test)f(failures)3489 b(=)581 b(5)p 47956 19992
+V 0 21320 V 844 20922 a(Number)h(of)g(nonlinear)g(conv.)g(failures)h(=)
+e(0)p 47956 21320 V 0 22120 45 801 v 47956 22120 V 0
+22164 48001 45 v 0 25691 a Fi(2.3)1495 b(A)499 b(Krylo)-42
+b(v)498 b(example:)665 b Fh(iheatsk)0 28075 y Fp(This)391
+b(example)f(solv)-34 b(es)390 b(a)h(discretized)e(2D)i(heat)g(PDE)f
+(problem.)534 b(The)391 b(D)-34 b(AE)390 b(system)h(arises)f(from)h
+(the)0 29580 y(Diric)-34 b(hlet)439 b(b)34 b(oundary)441
+b(condition)g Fk(u)397 b Fp(=)f(0,)449 b(along)440 b(with)h(the)g
+(di\256eren)-34 b(tial)440 b(equations)g(arising)g(from)h(the)0
+31086 y(discretization)404 b(of)g(the)h(in)-34 b(terior)404
+b(of)g(the)h(region.)1882 32640 y(The)f(domain)h(is)f(the)h(unit)g
+(square)e(\255)337 b(=)g Fl(f)p Fp(0)g Fl(\267)f Fk(x;)202
+b(y)380 b Fl(\267)337 b Fp(1)p Fl(g)404 b Fp(and)h(the)f(equations)h
+(solv)-34 b(ed)404 b(are:)14726 34467 y Ff(\()15702 35695
+y Fk(@)67 b(u=@)g(t)336 b Fp(=)h Fk(u)21172 35877 y Fj(xx)22556
+35695 y Fp(+)269 b Fk(u)24462 35877 y Fj(y)32 b(y)26723
+35695 y Fp(\()p Fk(x;)202 b(y)43 b Fp(\))338 b Fl(2)e
+Fp(\255)15702 37502 y Fk(u)h Fp(=)f(0)8105 b(\()p Fk(x;)202
+b(y)43 b Fp(\))338 b Fl(2)e Fk(@)67 b Fp(\255)202 b Fk(:)46451
+36540 y Fp(\(3\))0 40440 y(The)405 b(time)f(in)-34 b(terv)-67
+b(al)403 b(is)h(0)337 b Fl(\267)f Fk(t)g Fl(\267)h Fp(10)p
+Fk(:)p Fp(24,)404 b(and)h(the)f(initial)g(conditions)h(are)e
+Fk(u)337 b Fp(=)f(16)p Fk(x)p Fp(\(1)270 b Fl(\241)f
+Fk(x)p Fp(\))p Fk(y)43 b Fp(\(1)271 b Fl(\241)e Fk(y)43
+b Fp(\).)1882 41995 y(W)-101 b(e)406 b(discretize)f(the)i(PDE)g(system)
+f(\(3\))i(\(plus)f(b)34 b(oundary)408 b(conditions\))f(with)h(cen)-34
+b(tral)406 b(di\256erencing)0 43500 y(on)388 b(a)f(10)236
+b Fl(\243)f Fp(10)388 b(mesh,)i(so)e(as)f(to)h(obtain)g(a)f(D)-34
+b(AE)388 b(system)f(of)h(size)e Fk(N)469 b Fp(=)337 b(100.)533
+b(The)387 b(dep)34 b(enden)-34 b(t)389 b(v)-67 b(ariable)0
+45005 y(v)-34 b(ector)411 b Fk(u)h Fp(consists)g(of)h(the)f(v)-67
+b(alues)411 b Fk(u)p Fp(\()p Fk(x)18184 45187 y Fj(j)18671
+45005 y Fk(;)202 b(y)19804 45202 y Fj(k)20373 45005 y
+Fk(;)g(t)p Fp(\))411 b(group)34 b(ed)413 b(\257rst)f(b)-34
+b(y)412 b Fk(x)p Fp(,)h(and)g(then)g(b)-34 b(y)412 b
+Fk(y)43 b Fp(.)562 b(Eac)-34 b(h)412 b(discrete)0 46511
+y(b)34 b(oundary)405 b(condition)g(b)34 b(ecomes)403
+b(an)i(algebraic)e(equation)i(within)g(the)f(D)-34 b(AE)404
+b(system.)1882 48066 y(The)324 b(source)f(for)g(this)h(example)f(is)g
+(listed)g(in)h(app)34 b(endix)324 b(C.)511 b(In)324 b(this)g(case,)339
+b Fn(idaspgmr.h)326 b Fp(is)e(included)0 49571 y(for)345
+b(the)h(de\257nitions)g(of)g(constan)-34 b(ts)347 b(and)f(function)g
+(protot)-34 b(yp)34 b(es)347 b(asso)34 b(ciated)345 b(with)h(the)f
+Fm(spgmr)h Fp(metho)34 b(d.)1882 51126 y(After)469 b(v)-67
+b(arious)468 b(initializations)g(\(including)i(a)f(v)-34
+b(ector)468 b(of)h(constrain)-34 b(ts)470 b(with)g(all)e(comp)34
+b(onen)-34 b(ts)470 b(set)0 52631 y(to)431 b(1)g(imp)34
+b(osing)431 b(all)f(solution)i(comp)34 b(onen)-34 b(ts)432
+b(to)f(b)34 b(e)430 b(non-negativ)-34 b(e\),)439 b(the)431
+b(main)g(program)g(creates)f(and)0 54136 y(initializes)470
+b(the)i Fm(id)-27 b(a)472 b Fp(memory)f(blo)34 b(c)-34
+b(k)471 b(and)i(then)f(attac)-34 b(hes)473 b(the)f Fm(id)-27
+b(aspgmr)472 b Fp(linear)f(solv)-34 b(er)470 b(using)i(the)0
+55642 y(default)405 b Fn(MODIFIED)p 9238 55642 382 45
+v 461 w(GS)g Fp(Gram-Scmidt)g(orthogonalization)g(algorithm.)1882
+57197 y(The)297 b(calls)g(to)g Fn(IDASpgmrSetPrecSetupFn)305
+b Fp(and)298 b Fn(IDASpgmrSetPsolveFn)304 b Fp(sp)34
+b(ecify)296 b(the)i(use)f(of)g(the)0 58702 y(user-supplied)311
+b(preconditioner)f(with)h Fn(data)h Fp(b)34 b(eing)310
+b(the)g(p)34 b(oin)-34 b(ter)311 b(to)f(user)g(data)h(passed)g(to)f
+Fn(PsolveHeat)0 60207 y Fp(and)274 b Fn(PsetupHeat)i
+Fp(whenev)-34 b(er)273 b(they)g(are)f(called)g(\(sp)34
+b(eci\257ed)273 b(with)h(the)f(call)f(to)h Fn(IDASpgmrSetPrecData)p
+Fp(\).)0 61713 y(In)470 b(a)g(lo)34 b(op)470 b(o)-34
+b(v)g(er)470 b(the)h(desired)f(output)i(times,)486 b
+Fn(IDASolve)473 b Fp(is)d(called)f(in)h Fn(IDA)p 35890
+61713 V 459 w(NORMAL)j Fp(mo)34 b(de)470 b(and)g(the)0
+63218 y(maxim)-34 b(um)405 b(solution)f(norm)h(is)f(prin)-34
+b(ted.)1882 64773 y(The)356 b Fn(main)i Fp(program)e(then)h
+(re-initializes)d(the)i Fm(id)-27 b(a)357 b Fp(solv)-34
+b(er)355 b(and)i(the)g Fm(id)-27 b(aspgmr)357 b Fp(linear)e(solv)-34
+b(er)355 b(and)0 66278 y(solv)-34 b(es)469 b(the)g(problem)g(again,)485
+b(this)470 b(time)f(using)g(the)h Fn(CLASSICAL)p 30541
+66278 V 461 w(GS)f Fp(Gramm-Sc)-34 b(hmidt)471 b(orthogonal-)0
+67784 y(ization)478 b(algorithm.)761 b(Finally)-101 b(,)496
+b(memory)478 b(for)g(the)h Fm(id)-27 b(a)478 b Fp(solv)-34
+b(er)478 b(and)h(for)f(the)h(v)-67 b(arious)477 b(v)-34
+b(ectors)478 b(used)h(is)0 69289 y(deallo)34 b(cated.)1882
+70844 y(The)360 b(user-supplied)g(residual)f(function)i
+Fn(resHeat)p Fp(,)370 b(of)360 b(t)-34 b(yp)34 b(e)359
+b Fn(IDAResFn)p Fp(,)371 b(loads)360 b(the)g(D)-34 b(AE)359
+b(residual)0 72349 y(with)469 b(the)f(v)-67 b(alue)468
+b(of)g Fk(u)g Fp(on)g(the)h(b)34 b(oundary)469 b(\(represen)-34
+b(ting)469 b(the)f(algebraic)f(equations)i(expressing)e(the)0
+73855 y(b)34 b(oundary)454 b(conditions)g(of)g(\(3\)\))g(and)h(with)f
+(the)f(spatial)h(discretization)f(of)h(the)g(PDE)f(\(using)h(cen)-34
+b(tral)0 75360 y(di\256erences\))404 b(in)g(the)g(rest)g(of)h(the)f
+(domain.)1882 76915 y(The)461 b(user-supplied)h(functions)g
+Fn(PsetupHeat)i Fp(and)d Fn(PsolveHeat)k Fp(together)c(de\257ne)g(the)g
+(left)g(pre-)0 78420 y(conditoner)509 b(matrix)g Fk(P)677
+b Fp(appro)-34 b(ximating)510 b(the)g(system)e(Jacobian)i(matrix)e
+Fk(J)628 b Fp(=)511 b Fk(@)67 b(F)101 b(=@)67 b(u)339
+b Fp(+)g Fk(\256)t(@)67 b(F)101 b(=@)67 b(u)47688 77981
+y Fe(0)p Black 23697 81741 a Fp(8)p Black eop
+%%Page: 9 13
+9 12 bop Black Black 4000 7638 a Fp(\(where)411 b(the)g(D)-34
+b(AE)411 b(system)g(is)g Fk(F)168 b Fp(\()p Fk(t;)202
+b(u;)g(u)22689 7198 y Fe(0)22999 7638 y Fp(\))348 b(=)g(0\),)412
+b(and)g(solv)-34 b(e)410 b(the)i(linear)e(systems)h Fk(P)168
+b(z)401 b Fp(=)347 b Fk(r)34 b Fp(.)558 b(Precondi-)4000
+9143 y(tioning)458 b(is)f(done)h(in)f(this)h(case)f(b)-34
+b(y)457 b(k)-34 b(eeping)458 b(only)f(the)h(diagonal)f(elemen)-34
+b(ts)458 b(of)f(the)h Fk(J)574 b Fp(matrix)457 b(ab)34
+b(o)-34 b(v)g(e,)4000 10649 y(storing)387 b(them)h(as)e(in)-34
+b(v)g(erses)387 b(in)g(a)g(v)-34 b(ector)386 b Fn(pp)p
+Fp(,)391 b(when)c(computed)h(in)f Fn(PsetupHeat)p Fp(,)393
+b(for)387 b(subsequen)-34 b(t)389 b(use)4000 12154 y(in)423
+b Fn(PsolveHeat)p Fp(.)599 b(In)423 b(this)h(instance,)j(only)c
+Fn(cj)h Fp(=)368 b Fk(\256)428 b Fp(and)c Fn(data)g Fp(\(the)g(user)f
+(data)h(structure\))g(are)e(used)4000 13660 y(from)404
+b(the)h Fn(PsetupHeat)i Fp(argumen)-34 b(t)406 b(list.)5882
+15165 y(Sample)e(output)i(from)f Fn(iheatsk)h Fp(follo)-34
+b(ws.)p 4000 16915 17317 45 v 21898 16981 a Fd(iheatsk)582
+b(sample)g(output)p 34683 16915 V 4000 17715 45 801 v
+51956 17715 V 4000 19043 45 1329 v 51956 19043 V 4000
+20371 V 4844 19973 a(iheatsk:)h(Heat)e(equation,)i(serial)f(example)g
+(problem)g(for)g(IDA)p 51956 20371 V 4000 21700 V 10075
+21301 a(Discretized)g(heat)g(equation)h(on)e(2D)g(unit)h(square.)p
+51956 21700 V 4000 23028 V 10075 22630 a(Zero)f(boundary)i(conditions,)
+g(polynomial)f(initial)g(conditions.)p 51956 23028 V
+4000 24356 V 10075 23958 a(Mesh)f(dimensions:)i(10)f(x)f(10)4649
+b(Total)582 b(system)g(size:)g(100)p 51956 24356 V 4000
+25685 V 51956 25685 V 4000 27013 V 4844 26615 a(Tolerance)h
+(parameters:)1164 b(rtol)581 b(=)h(0)1743 b(atol)582
+b(=)f(0.001)p 51956 27013 V 4000 28342 V 4844 27943 a(Constraints)i
+(set)f(to)f(force)h(all)g(solution)g(components)h(>=)e(0.)p
+51956 28342 V 4000 29670 V 4844 29271 a(Linear)h(solver:)h(IDASPGMR,)f
+(preconditioner)h(using)f(diagonal)h(elements.)p 51956
+29670 V 4000 30998 V 51956 30998 V 4000 32327 V 51956
+32327 V 4000 33655 V 4844 33256 a(Case)f(1:)g(gsytpe)g(=)f(MODIFIED_GS)
+p 51956 33655 V 4000 34983 V 51956 34983 V 4000 36312
+V 6588 35913 a(Output)h(Summary)g(\(umax)g(=)f(max-norm)i(of)e
+(solution\))p 51956 36312 V 4000 37640 V 51956 37640
+V 4000 38968 V 6007 38570 a(time)2906 b(umax)4069 b(k)1162
+b(nst)h(nni)g(nje)1743 b(nre)h(nreS)2907 b(h)3487 b(npe)581
+b(nps)p 51956 38968 V 4000 40297 V 4844 39898 a
+(-------------------------------------------------------------------)p
+(---)p 51956 40297 V 4000 41625 V 6007 41227 a(0.01)1744
+b(8.24106e-01)1164 b(2)1743 b(12)h(14)2325 b(7)g(14)2906
+b(7)1743 b(2.56e-03)2326 b(8)1162 b(21)p 51956 41625
+V 4000 42953 V 6007 42555 a(0.02)1744 b(6.88134e-01)1164
+b(3)1743 b(15)h(18)g(12)2325 b(18)f(12)1744 b(5.12e-03)2326
+b(8)1162 b(30)p 51956 42953 V 4000 44282 V 6007 43883
+a(0.04)1744 b(4.70711e-01)1164 b(3)1743 b(18)h(24)g(21)2325
+b(24)f(21)1744 b(6.58e-03)2326 b(9)1162 b(45)p 51956
+44282 V 4000 45610 V 6007 45212 a(0.08)1744 b(2.16509e-01)1164
+b(3)1743 b(22)h(29)g(30)2325 b(29)f(30)1744 b(1.32e-02)2326
+b(9)1162 b(59)p 51956 45610 V 4000 46938 V 6007 46540
+a(0.16)1744 b(4.57687e-02)1164 b(4)1743 b(28)h(36)g(44)2325
+b(36)f(44)1744 b(1.32e-02)2326 b(9)1162 b(80)p 51956
+46938 V 4000 48267 V 6007 47868 a(0.32)1744 b(2.09938e-03)1164
+b(4)1743 b(35)h(44)g(67)2325 b(44)f(67)1744 b(2.63e-02)h(10)581
+b(111)p 51956 48267 V 4000 49595 V 6007 49197 a(0.64)1744
+b(5.54028e-21)1164 b(1)1743 b(39)h(51)g(77)2325 b(51)f(77)1744
+b(1.05e-01)h(12)581 b(128)p 51956 49595 V 4000 50923
+V 6007 50525 a(1.28)1744 b(0.00000e+00)1164 b(1)1743
+b(41)h(53)g(77)2325 b(53)f(77)1744 b(4.21e-01)h(14)581
+b(130)p 51956 50923 V 4000 52252 V 6007 51853 a(2.56)1744
+b(0.00000e+00)1164 b(1)1743 b(43)h(55)g(77)2325 b(55)f(77)1744
+b(1.69e+00)h(16)581 b(132)p 51956 52252 V 4000 53580
+V 6007 53182 a(5.12)1744 b(0.00000e+00)1164 b(1)1743
+b(44)h(56)g(77)2325 b(56)f(77)1744 b(3.37e+00)h(17)581
+b(133)p 51956 53580 V 4000 54909 V 5425 54510 a(10.24)1745
+b(0.00000e+00)1164 b(1)1743 b(45)h(57)g(77)2325 b(57)f(77)1744
+b(6.74e+00)h(18)581 b(134)p 51956 54909 V 4000 56237
+V 51956 56237 V 4000 57565 V 4844 57167 a(Error)h(test)g(failures)6975
+b(=)581 b(1)p 51956 57565 V 4000 58894 V 4844 58495 a(Nonlinear)i
+(convergence)g(failures)f(=)f(0)p 51956 58894 V 4000
+60222 V 4844 59823 a(Linear)h(convergence)h(failures)2326
+b(=)581 b(0)p 51956 60222 V 4000 61550 V 51956 61550
+V 4000 62879 V 51956 62879 V 4000 64207 V 4844 63808
+a(Case)h(2:)g(gstype)g(=)f(CLASSICAL_GS)p 51956 64207
+V 4000 65535 V 51956 65535 V 4000 66864 V 6588 66465
+a(Output)h(Summary)g(\(umax)g(=)f(max-norm)i(of)e(solution\))p
+51956 66864 V 4000 68192 V 51956 68192 V 4000 69520 V
+6007 69122 a(time)2906 b(umax)4069 b(k)1162 b(nst)h(nni)g(nje)1743
+b(nre)h(nreS)2907 b(h)3487 b(npe)581 b(nps)p 51956 69520
+V 4000 70849 V 4844 70450 a
+(-------------------------------------------------------------------)p
+(---)p 51956 70849 V 4000 72177 V 6007 71779 a(0.01)1744
+b(8.24106e-01)1164 b(2)1743 b(12)h(14)2325 b(7)g(14)2906
+b(7)1743 b(2.56e-03)2326 b(8)1162 b(21)p 51956 72177
+V 4000 73505 V 6007 73107 a(0.02)1744 b(6.88134e-01)1164
+b(3)1743 b(15)h(18)g(12)2325 b(18)f(12)1744 b(5.12e-03)2326
+b(8)1162 b(30)p 51956 73505 V 4000 74834 V 6007 74435
+a(0.04)1744 b(4.70711e-01)1164 b(3)1743 b(18)h(24)g(21)2325
+b(24)f(21)1744 b(6.58e-03)2326 b(9)1162 b(45)p 51956
+74834 V 4000 76162 V 6007 75764 a(0.08)1744 b(2.16509e-01)1164
+b(3)1743 b(22)h(29)g(30)2325 b(29)f(30)1744 b(1.32e-02)2326
+b(9)1162 b(59)p 51956 76162 V 4000 77491 V 6007 77092
+a(0.16)1744 b(4.57687e-02)1164 b(4)1743 b(28)h(36)g(44)2325
+b(36)f(44)1744 b(1.32e-02)2326 b(9)1162 b(80)p 51956
+77491 V 4000 78819 V 6007 78420 a(0.32)1744 b(2.09938e-03)1164
+b(4)1743 b(35)h(44)g(67)2325 b(44)f(67)1744 b(2.63e-02)h(10)581
+b(111)p 51956 78819 V Black 27697 81741 a Fp(9)p Black
+eop
+%%Page: 10 14
+10 13 bop Black Black 0 8037 45 1329 v 2007 7638 a Fd(0.64)1744
+b(5.54028e-21)1164 b(1)1743 b(39)h(51)g(77)2325 b(51)f(77)1744
+b(1.05e-01)h(12)581 b(128)p 47956 8037 V 0 9365 V 2007
+8966 a(1.28)1744 b(0.00000e+00)1164 b(1)1743 b(41)h(53)g(77)2325
+b(53)f(77)1744 b(4.21e-01)h(14)581 b(130)p 47956 9365
+V 0 10693 V 2007 10295 a(2.56)1744 b(0.00000e+00)1164
+b(1)1743 b(43)h(55)g(77)2325 b(55)f(77)1744 b(1.69e+00)h(16)581
+b(132)p 47956 10693 V 0 12022 V 2007 11623 a(5.12)1744
+b(0.00000e+00)1164 b(1)1743 b(44)h(56)g(77)2325 b(56)f(77)1744
+b(3.37e+00)h(17)581 b(133)p 47956 12022 V 0 13350 V 1425
+12951 a(10.24)1745 b(0.00000e+00)1164 b(1)1743 b(45)h(57)g(77)2325
+b(57)f(77)1744 b(6.74e+00)h(18)581 b(134)p 47956 13350
+V 0 14678 V 47956 14678 V 0 16007 V 844 15608 a(Error)h(test)g
+(failures)6975 b(=)581 b(1)p 47956 16007 V 0 17335 V
+844 16936 a(Nonlinear)i(convergence)g(failures)f(=)f(0)p
+47956 17335 V 0 18663 V 844 18265 a(Linear)h(convergence)h(failures)
+2326 b(=)581 b(0)p 47956 18663 V 0 19463 45 801 v 47956
+19463 V 0 19507 48001 45 v Black 23394 81741 a Fp(10)p
+Black eop
+%%Page: 11 15
+11 14 bop Black Black 4000 7638 a Fo(3)1793 b(P)-50 b(arallel)598
+b(example)i(problems)4000 10402 y Fi(3.1)1495 b(A)499
+b(user)g(preconditioner)h(example:)665 b Fh(iheatpk)4000
+12704 y Fp(As)511 b(an)g(example)g(of)g(using)g Fm(id)-27
+b(a)512 b Fp(with)g(the)f(parallel)f(MPI)h Fm(nvector)p
+37200 12704 403 45 v 484 w(p)-81 b(arallel)513 b Fp(mo)34
+b(dule)511 b(and)h(the)4000 14209 y(Krylo)-34 b(v)491
+b(linear)g(solv)-34 b(er)491 b Fm(id)-27 b(aspgmr)492
+b Fp(with)h(user-de\257ned)f(preconditioner,)514 b(w)-34
+b(e)492 b(pro)-34 b(vide)491 b(the)i(example)4000 15715
+y Fn(iheatpk)398 b Fp(whic)-34 b(h)397 b(solv)-34 b(es)395
+b(the)h(same)g(2-D)f(heat)h(PDE)g(problem)g(as)f Fn(iheatsk)p
+Fp(.)538 b(The)397 b(source)e(is)g(listed)h(in)4000 17220
+y(App)34 b(endix)405 b(D.)5882 18733 y(In)d(the)h(parallel)f(setting,)h
+(w)-34 b(e)403 b(can)f(think)h(of)g(the)g(pro)34 b(cessors)402
+b(as)g(b)34 b(eing)402 b(laid)h(out)g(in)f(a)h(grid)f(of)h(size)4000
+20238 y Fn(NPEX)i Fl(\243)e Fn(NPEY)p Fp(,)h(with)h(eac)-34
+b(h)403 b(pro)34 b(cessor)403 b(computing)i(a)e(subset)i(of)e(the)h
+(solution)g(v)-34 b(ector)403 b(on)h(a)g(submesh)4000
+21744 y(of)443 b(size)e Fn(MXSUB)j Fl(\243)e Fn(MYSUB)p
+Fp(.)i(As)f(a)f(consequence,)452 b(the)442 b(computation)i(of)f(the)g
+(residual)f(v)-34 b(ector)442 b(requires)4000 23249 y(that)373
+b(eac)-34 b(h)372 b(pro)34 b(cessor)371 b(exc)-34 b(hange)371
+b(b)34 b(oundary)373 b(information)f(\(namely)g(the)g(comp)34
+b(onen)-34 b(ts)373 b(at)f(all)f(in)-34 b(terior)4000
+24755 y(subgrid)513 b(b)34 b(oundaries\))513 b(with)g(its)f(neigh)-34
+b(b)34 b(oring)513 b(pro)34 b(cessors.)862 b(The)513
+b(message-passing)g(\(implemen)-34 b(ted)4000 26260 y(in)494
+b(the)h(function)g Fn(rescomm)p Fp(\))j(uses)c(blo)34
+b(c)-34 b(king)494 b(sends,)517 b(non-blo)34 b(c)-34
+b(king)495 b(receiv)-34 b(es,)515 b(and)495 b(receiv)-34
+b(e-w)g(aiting,)4000 27766 y(in)451 b(routines)g Fn(BSend)p
+Fp(,)464 b Fn(BRecvPost)p Fp(,)i(and)451 b Fn(BRecvWait)p
+Fp(,)466 b(resp)34 b(ectiv)-34 b(ely)-101 b(.)677 b(The)451
+b(data)h(receiv)-34 b(ed)450 b(from)h(eac)-34 b(h)4000
+29271 y(neigh)g(b)34 b(oring)373 b(pro)34 b(cessor)372
+b(is)g(then)h(loaded)g(in)-34 b(to)373 b(a)f(w)-34 b(ork)373
+b(arra)-34 b(y)-101 b(,)378 b Fn(uext)p Fp(,)i(whic)-34
+b(h)373 b(con)-34 b(tains)374 b(this)f(ghost)g(cell)4000
+30777 y(data)405 b(along)f(with)h(the)g(lo)34 b(cal)403
+b(p)34 b(ortion)404 b(of)h(the)f(solution.)5882 32289
+y(The)311 b(lo)34 b(cal)310 b(p)34 b(ortion)311 b(of)g(the)g(residual)f
+(v)-34 b(ector)311 b(is)f(then)h(computed)h(in)f(the)g(routine)g
+Fn(reslocal)p Fp(,)332 b(whic)-34 b(h)4000 33795 y(assumes)402
+b(that)h(all)f(in)-34 b(ter-pro)34 b(cessor)401 b(comm)-34
+b(unication)403 b(of)f(data)h(needed)f(to)g(calculate)g
+Fn(rr)g Fp(has)h(already)4000 35300 y(b)34 b(een)348
+b(done.)520 b(Comp)34 b(onen)-34 b(ts)350 b(at)f(in)-34
+b(terior)347 b(subgrid)i(b)34 b(oundaries)349 b(are)e(assumed)i(to)g(b)
+34 b(e)347 b(in)i(the)f(w)-34 b(ork)348 b(arra)-34 b(y)4000
+36806 y Fn(uext)p Fp(.)734 b(The)469 b(lo)34 b(cal)468
+b(p)34 b(ortion)469 b(of)g(the)g(solution)h(v)-34 b(ector)468
+b Fn(uu)i Fp(is)e(\257rst)i(copied)e(in)-34 b(to)470
+b Fn(uext)p Fp(.)734 b(The)469 b(di\256usion)4000 38311
+y(terms)514 b(are)f(ev)-67 b(aluated)514 b(in)g(terms)g(of)h(the)f
+Fn(uext)h Fp(arra)-34 b(y)-101 b(,)541 b(and)515 b(the)f(residuals)g
+(are)g(formed.)868 b(The)515 b(zero)4000 39817 y(Diric)-34
+b(hlet)435 b(b)34 b(oundary)436 b(conditions)g(are)f(handled)h(here)f
+(b)-34 b(y)436 b(including)f(the)h(b)34 b(oundary)436
+b(comp)34 b(onen)-34 b(ts)437 b(in)4000 41322 y(the)405
+b(residual,)e(giving)h(algebraic)f(equations)i(for)f(the)g(discrete)g
+(b)34 b(oundary)405 b(conditions.)5882 42835 y(The)529
+b(preconditioner)f(\()p Fn(PsolveHeat)k Fp(and)e Fn(PsetupHeat)p
+Fp(\))i(uses)d(the)f(diagonal)h(elemen)-34 b(ts)529 b(of)g(the)4000
+44340 y(Jacobian)404 b(only)g(and)h(therefore)f(in)-34
+b(v)g(olv)g(es)404 b(only)g(lo)34 b(cal)403 b(calculations.)5882
+45853 y(The)461 b Fn(iheatpk)j Fp(main)d(program)g(b)34
+b(egins)461 b(with)g(MPI)g(calls)f(to)h(initialize)f(MPI)g(and)i(to)f
+(set)g(m)-34 b(ulti-)4000 47358 y(pro)34 b(cessor)482
+b(en)-34 b(vironmen)g(t)483 b(parameters)f Fn(npes)i
+Fp(\(n)-34 b(um)g(b)34 b(er)483 b(of)g(pro)34 b(cesses\))482
+b(and)h Fn(thispe)h Fp(\(lo)34 b(cal)481 b(pro)34 b(cess)4000
+48864 y(index\).)538 b(Then)402 b(the)g(lo)34 b(cal)401
+b(and)h(global)g(v)-34 b(ector)401 b(lengths)h(are)f(set,)h(the)h
+(user-data)f(structure)g Fn(Userdata)4000 50369 y Fp(is)426
+b(created)g(and)i(initialized,)i(and)e Fn(N)p 20934 50369
+382 45 v 458 w(Vector)h Fp(v)-67 b(ariables)425 b(are)h(created)g(and)h
+(initialized)f(for)g(the)h(initial)4000 51874 y(conditions)282
+b(\()p Fn(uu)g Fp(and)g Fn(up)p Fp(\),)306 b(for)281
+b(the)h(v)-34 b(ector)280 b Fn(id)i Fp(sp)34 b(ecifying)280
+b(the)i(di\256eren)-34 b(tial)281 b(and)h(algebraic)e(comp)34
+b(onen)-34 b(ts)4000 53380 y(of)557 b(the)g(solution)g(v)-34
+b(ector,)593 b(and)558 b(for)e(the)h(preconditioner)f(\()p
+Fn(pp)p Fp(\).)997 b(As)557 b(in)f Fn(iheatsk)p Fp(,)597
+b(constrain)-34 b(ts)557 b(are)4000 54885 y(passed)473
+b(to)g Fm(id)-27 b(a)474 b Fp(through)g(the)f Fn(N)p
+19302 54885 V 458 w(Vector)i(constraints)i Fp(and)c(the)g(function)h
+Fn(IDASetConstraints)p Fp(.)4000 56391 y(A)426 b(temp)34
+b(orary)425 b Fn(N)p 12001 56391 V 458 w(Vector)j(res)e
+Fp(is)g(also)f(created)g(here,)430 b(for)c(use)g(only)f(in)g
+Fn(SetInitialProfiles)p Fp(.)610 b(All)4000 57896 y(comp)34
+b(onen)-34 b(ts)502 b(of)f Fn(constraints)k Fp(are)500
+b(set)h(to)h(1)p Fk(:)p Fp(0)e(indicating)h(that)h(non-negativit)-34
+b(y)502 b(constrain)-34 b(ts)502 b(are)4000 59402 y(to)398
+b(b)34 b(e)398 b(imp)34 b(osed)398 b(on)g(eac)-34 b(h)399
+b(solution)f(comp)34 b(onen)-34 b(t.)538 b(In)398 b(addition,)i(for)e
+(illustration)g(purp)34 b(oses,)400 b Fn(iheatsk)4000
+60907 y Fp(also)381 b(excludes)f(the)h(algebraic)f(comp)34
+b(onen)-34 b(ts)382 b(of)f(the)h(solution)f(\(sp)34 b(eci\257ed)381
+b(through)h(the)f Fn(N)p 45674 60907 V 459 w(Vector)i(id)p
+Fp(\))4000 62413 y(from)404 b(the)h(error)e(test)i(b)-34
+b(y)404 b(calling)f Fn(IDASetSuppressAlg)411 b Fp(with)405
+b(a)f(\260ag)g Fn(TRUE)p Fp(.)5882 63925 y(Sample)g(output)i(from)f
+Fn(iheatpk)h Fp(follo)-34 b(ws.)p 4000 66064 17317 45
+v 21898 66130 a Fd(iheatpk)582 b(sample)g(output)p 34683
+66064 V 4000 66864 45 801 v 51956 66864 V 4000 68192
+45 1329 v 51956 68192 V 4000 69520 V 4844 69122 a(iheatpk:)h(Heat)e
+(equation,)i(parallel)f(example)g(problem)h(for)e(IDA)p
+51956 69520 V 4000 70849 V 10075 70450 a(Discretized)h(heat)g(equation)
+h(on)e(2D)g(unit)h(square.)p 51956 70849 V 4000 72177
+V 10075 71779 a(Zero)f(boundary)i(conditions,)g(polynomial)f(initial)g
+(conditions.)p 51956 72177 V 4000 73505 V 10075 73107
+a(Mesh)f(dimensions:)i(10)f(x)f(10)4649 b(Total)582 b(system)g(size:)g
+(100)p 51956 73505 V 4000 74834 V 51956 74834 V 4000
+76162 V 4844 75764 a(Subgrid)h(dimensions:)f(5)g(x)f(5)4649
+b(Processor)583 b(array:)f(2)f(x)g(2)p 51956 76162 V
+4000 77491 V 4844 77092 a(Tolerance)i(parameters:)1164
+b(rtol)581 b(=)h(0)1743 b(atol)582 b(=)f(0.001)p 51956
+77491 V 4000 78819 V 4844 78420 a(Constraints)i(set)f(to)f(force)h(all)
+g(solution)g(components)h(>=)e(0.)p 51956 78819 V Black
+27394 81741 a Fp(11)p Black eop
+%%Page: 12 16
+12 15 bop Black Black 0 8037 45 1329 v 844 7638 a Fd(SUPPRESSALG)583
+b(=)e(TRUE)h(to)g(suppress)g(local)g(error)g(testing)g(on)f(all)h
+(boundary)g(components.)p 47956 8037 V 0 9365 V 844 8966
+a(Linear)g(solver:)h(IDASPGMR)1163 b(Preconditioner:)583
+b(diagonal)g(elements)f(only.)p 47956 9365 V 0 10693
+V 47956 10693 V 0 12022 V 2588 11623 a(Output)g(Summary)g(\(umax)g(=)f
+(max-norm)i(of)e(solution\))p 47956 12022 V 0 13350 V
+47956 13350 V 0 14678 V 2007 14280 a(time)2906 b(umax)4069
+b(k)1162 b(nst)h(nni)g(nli)1743 b(nre)h(nreS)2907 b(h)3487
+b(npe)581 b(nps)p 47956 14678 V 0 16007 V 844 15608 a
+(-------------------------------------------------------------------)p
+(---)p 47956 16007 V 0 17335 V 2007 16936 a(0.00)1744
+b(9.75461e-01)1164 b(0)2324 b(0)h(0)g(0)2906 b(0)g(0)1743
+b(0.00e+00)2326 b(0)1744 b(0)p 47956 17335 V 0 18663
+V 2007 18265 a(0.01)g(8.24106e-01)1164 b(2)1743 b(12)h(14)2325
+b(7)g(14)2906 b(7)1743 b(2.56e-03)2326 b(8)1162 b(21)p
+47956 18663 V 0 19992 V 2007 19593 a(0.02)1744 b(6.88134e-01)1164
+b(3)1743 b(15)h(18)g(12)2325 b(18)f(12)1744 b(5.12e-03)2326
+b(8)1162 b(30)p 47956 19992 V 0 21320 V 2007 20922 a(0.04)1744
+b(4.70711e-01)1164 b(3)1743 b(18)h(24)g(21)2325 b(24)f(21)1744
+b(6.58e-03)2326 b(9)1162 b(45)p 47956 21320 V 0 22648
+V 2007 22250 a(0.08)1744 b(2.16509e-01)1164 b(3)1743
+b(22)h(29)g(30)2325 b(29)f(30)1744 b(1.32e-02)2326 b(9)1162
+b(59)p 47956 22648 V 0 23977 V 2007 23578 a(0.16)1744
+b(4.57687e-02)1164 b(4)1743 b(28)h(36)g(44)2325 b(36)f(44)1744
+b(1.32e-02)2326 b(9)1162 b(80)p 47956 23977 V 0 25305
+V 2007 24907 a(0.32)1744 b(2.09938e-03)1164 b(4)1743
+b(35)h(44)g(67)2325 b(44)f(67)1744 b(2.63e-02)h(10)581
+b(111)p 47956 25305 V 0 26633 V 2007 26235 a(0.64)1744
+b(5.54028e-21)1164 b(1)1743 b(39)h(51)g(77)2325 b(51)f(77)1744
+b(1.05e-01)h(12)581 b(128)p 47956 26633 V 0 27962 V 2007
+27563 a(1.28)1744 b(3.85107e-20)1164 b(1)1743 b(41)h(53)g(77)2325
+b(53)f(77)1744 b(4.21e-01)h(14)581 b(130)p 47956 27962
+V 0 29290 V 2007 28892 a(2.56)1744 b(5.00523e-20)1164
+b(1)1743 b(43)h(55)g(77)2325 b(55)f(77)1744 b(1.69e+00)h(16)581
+b(132)p 47956 29290 V 0 30619 V 2007 30220 a(5.12)1744
+b(1.58940e-19)1164 b(1)1743 b(44)h(56)g(77)2325 b(56)f(77)1744
+b(3.37e+00)h(17)581 b(133)p 47956 30619 V 0 31947 V 1425
+31548 a(10.24)1745 b(5.12685e-19)1164 b(1)1743 b(45)h(57)g(77)2325
+b(57)f(77)1744 b(6.74e+00)h(18)581 b(134)p 47956 31947
+V 0 33275 V 47956 33275 V 0 34604 V 844 34205 a(Error)h(test)g
+(failures)6975 b(=)581 b(1)p 47956 34604 V 0 35932 V
+844 35533 a(Nonlinear)i(convergence)g(failures)f(=)f(0)p
+47956 35932 V 0 37260 V 844 36862 a(Linear)h(convergence)h(failures)
+2326 b(=)581 b(0)p 47956 37260 V 0 38060 45 801 v 47956
+38060 V 0 38104 48001 45 v 0 41427 a Fi(3.2)1495 b(An)499
+b(ID)-42 b(ABBDPRE)499 b(preconditioner)i(example:)665
+b Fh(iwebbbd)0 43741 y Fp(In)532 b(this)h(example,)564
+b Fn(iwebbbd)p Fp(,)i(w)-34 b(e)533 b(solv)-34 b(e)532
+b(the)h(same)f(fo)34 b(o)g(d)533 b(w)-34 b(eb)533 b(problem)f(as)h
+(with)g Fn(iwebsb)p Fp(,)566 b(but)534 b(in)0 45247 y(parallel)566
+b(and)i(with)g(the)g Fm(id)-27 b(aspgmr)568 b Fp(linear)e(solv)-34
+b(er)567 b(and)h(using)g(the)f Fm(id)-27 b(abbdpre)568
+b Fp(mo)34 b(dule,)608 b(whic)-34 b(h)0 46752 y(generates)397
+b(and)i(uses)f(a)f(band-blo)34 b(c)-34 b(k-diagonal)399
+b(preconditioner.)537 b(The)398 b(source)f(is)g(listed)h(in)f(App)34
+b(endix)0 48258 y(E.)1882 49776 y(As)315 b(with)h Fn(iheatpk)p
+Fp(,)335 b(w)-34 b(e)315 b(use)g(a)g Fn(NPEX)i Fl(\243)d
+Fn(NPEY)j Fp(pro)34 b(cessor)314 b(grid,)332 b(with)316
+b(an)g Fn(MXSUB)g Fl(\243)f Fn(MYSUB)i Fp(submesh)0 51282
+y(on)422 b(eac)-34 b(h)421 b(pro)34 b(cessor.)590 b(Again,)425
+b(the)d(residual)f(ev)-67 b(aluation)421 b(b)34 b(egins)422
+b(with)g(the)g(comm)-34 b(unication)422 b(of)g(ghost)0
+52787 y(data)521 b(\(in)f Fn(rescomm)p Fp(\),)552 b(follo)-34
+b(w)g(ed)520 b(b)-34 b(y)521 b(computation)g(using)g(an)f(extended)h
+(lo)34 b(cal)518 b(arra)-34 b(y)-101 b(,)549 b Fn(cext)p
+Fp(,)h(in)519 b(the)0 54293 y Fn(reslocal)411 b Fp(routine.)553
+b(The)409 b(exterior)e(Neumann)j(b)34 b(oundary)409 b(conditions)h(are)
+e(explicitly)f(handled)i(here)0 55798 y(b)-34 b(y)423
+b(cop)-34 b(ying)423 b(data)g(from)g(the)f(\257rst)h(in)-34
+b(terior)423 b(mesh)f(line)g(to)h(the)g(ghost)g(cell)f(lo)34
+b(cations)422 b(in)g Fn(cext)p Fp(.)595 b(Then)0 57304
+y(the)373 b(reaction)g(and)h(di\256usion)g(terms)e(are)h(ev)-67
+b(aluated)373 b(in)g(terms)f(of)i(the)f Fn(cext)h Fp(arra)-34
+b(y)-101 b(,)379 b(and)374 b(the)f(residuals)0 58809
+y(are)404 b(formed.)1882 60328 y(The)379 b(Jacobian)f(blo)34
+b(c)-34 b(k)378 b(on)h(eac)-34 b(h)378 b(pro)34 b(cessor)378
+b(is)g(banded,)385 b(and)379 b(the)g(half-bandwidths)i(of)e(that)g(blo)
+34 b(c)-34 b(k)0 61833 y(are)516 b(b)34 b(oth)518 b(equal)e(to)i
+Fn(NUM)p 11998 61833 364 45 v 437 w(SPECIES)347 b Fl(\242)d
+Fn(MXSUB)r Fp(.)877 b(This)517 b(is)g(the)g(v)-67 b(alue)516
+b(supplied)i(as)f Fn(mudq)h Fp(and)g Fn(mldq)g Fp(in)0
+63339 y(the)500 b(call)f(to)g Fn(IDABBDPrecAlloc)p Fp(.)830
+b(But)500 b(in)g(order)f(to)h(reduce)f(storage)h(and)g(computation)h
+(costs)f(for)0 64844 y(preconditioning,)409 b(w)-34 b(e)408
+b(supply)g(the)g(v)-67 b(alues)407 b Fn(mukeep)j Fp(=)d
+Fn(mlkeep)j Fp(=)e(2)f(\(=)h Fn(NUM)p 36310 64844 382
+45 v 459 w(SPECIES)p Fp(\))j(as)c(the)h(half-)0 66350
+y(bandwidths)503 b(of)d(the)h(retained)f(band)h(matrix)f(blo)34
+b(c)-34 b(ks.)826 b(This)500 b(means)h(that)g(the)g(Jacobian)f(elemen)
+-34 b(ts)0 67855 y(are)372 b(computed)h(with)g(a)f(di\256erence)f
+(quotien)-34 b(t)373 b(sc)-34 b(heme)373 b(using)f(the)h(true)f
+(bandwidth)j(of)d(the)h(blo)34 b(c)-34 b(k,)378 b(but)0
+69361 y(only)404 b(a)g(narro)-34 b(w)405 b(band)g(matrix)f(\(bandwidth)
+j(5\))d(is)g(k)-34 b(ept)405 b(as)f(the)h(preconditioner.)1882
+70880 y(The)545 b(function)g Fn(reslocal)j Fp(is)c(also)g(passed)h(to)g
+(the)g Fm(id)-27 b(abbdpre)545 b Fp(preconditioner)f(as)h(the)g
+Fn(Gres)0 72385 y Fp(argumen)-34 b(t,)447 b(while)437
+b(a)g Fn(NULL)i Fp(p)34 b(oin)-34 b(ter)438 b(is)f(passed)h(for)g(the)g
+Fn(Gcomm)h Fp(argumen)-34 b(t)438 b(\(since)g(all)f(required)f(com-)0
+73891 y(m)-34 b(unication)405 b(for)g(the)f(ev)-67 b(aluation)404
+b(of)g Fn(Gres)i Fp(w)-34 b(as)405 b(already)e(done)i(for)f
+Fn(resweb)p Fp(\).)1882 75409 y(In)459 b(the)h Fn(iwebbbd)i
+Fp(main)d(program,)474 b(follo)-34 b(wing)460 b(MPI)f(initializations)g
+(and)h(creation)f(of)h(user)f(data)0 76915 y(blo)34 b(c)-34
+b(k)483 b Fn(webdata)j Fp(and)e Fn(N)p 11364 76915 V
+458 w(Vector)i Fp(v)-67 b(ariables,)501 b(the)484 b(initial)f
+(pro\257les)g(are)g(set,)503 b(the)484 b Fm(id)-27 b(a)484
+b Fp(memory)e(blo)34 b(c)-34 b(k)0 78420 y(is)493 b(created)f(and)i
+(allo)34 b(cated,)514 b(the)494 b Fm(id)-27 b(abbdpre)493
+b Fp(preconditioner)g(is)g(initialized,)514 b(and)494
+b(the)f Fm(id)-27 b(aspgmr)p Black 23394 81741 a Fp(12)p
+Black eop
+%%Page: 13 17
+13 16 bop Black Black 4000 7638 a Fp(linear)378 b(solv)-34
+b(er)379 b(is)g(attac)-34 b(hed)380 b(to)g(the)f Fm(id)-27
+b(a)380 b Fp(solv)-34 b(er.)530 b(The)379 b(call)f(to)i
+Fn(IDACalcIC)i Fp(corrects)c(the)i(initial)f(v)-67 b(alues)4000
+9143 y(so)404 b(that)h(they)g(are)e(consisten)-34 b(t)406
+b(with)f(the)f(D)-34 b(AE)404 b(algebraic)g(constrain)-34
+b(ts.)5882 10649 y(In)324 b(a)h(lo)34 b(op)324 b(o)-34
+b(v)g(er)324 b(the)h(desired)f(output)i(times,)340 b(the)325
+b(main)f(solv)-34 b(er)324 b(function)i Fn(IDASolve)h
+Fp(is)d(called,)339 b(and)4000 12154 y(selected)319 b(solution)i(comp)
+34 b(onen)-34 b(ts)321 b(\(at)g(the)f(b)34 b(ottom-left)321
+b(and)g(top-righ)-34 b(t)322 b(corners)d(of)h(the)h(computational)4000
+13660 y(domain\))470 b(are)f(collected)g(on)g(pro)34
+b(cessor)469 b(0)g(and)h(prin)-34 b(ted)471 b(to)f Fn(stdout)p
+Fp(.)736 b(The)470 b(main)f(program)h(ends)g(b)-34 b(y)4000
+15165 y(prin)g(ting)405 b(\257nal)g(solv)-34 b(er)403
+b(statistics,)i(freeing)e(memory)-101 b(,)404 b(and)g(\257nalizing)h
+(MPI.)5882 16671 y(Sample)f(output)i(from)f Fn(iwebbbd)h
+Fp(follo)-34 b(ws.)p 4000 18243 17317 45 v 21898 18309
+a Fd(iwebbbd)582 b(sample)g(output)p 34683 18243 V 4000
+19043 45 801 v 51956 19043 V 4000 20371 45 1329 v 4844
+19973 a(iwebbbd:)h(Predator-prey)g(DAE)e(parallel)i(example)f(problem)g
+(for)g(IDA)p 51956 20371 V 4000 21700 V 51956 21700 V
+4000 23028 V 4844 22630 a(Number)g(of)g(species)g(ns:)g(2)2905
+b(Mesh)582 b(dimensions:)h(20)e(x)h(20)2906 b(Total)582
+b(system)g(size:)g(800)p 51956 23028 V 4000 24356 V 4844
+23958 a(Subgrid)h(dimensions:)f(10)g(x)f(10)2906 b(Processor)583
+b(array:)f(2)f(x)g(2)p 51956 24356 V 4000 25685 V 4844
+25286 a(Tolerance)i(parameters:)1164 b(rtol)581 b(=)h(1e-05)1744
+b(atol)582 b(=)f(1e-05)p 51956 25685 V 4000 27013 V 4844
+26615 a(Linear)h(solver:)h(IDASPGMR)2906 b(Max.)582 b(Krylov)g
+(dimension)h(maxl:)f(12)p 51956 27013 V 4000 28342 V
+4844 27943 a(Preconditioner:)i(band-block-diagonal)g(\(IDABBDPRE\),)f
+(with)e(parameters)p 51956 28342 V 4000 29670 V 7750
+29271 a(mudq)h(=)f(20,)1163 b(mldq)582 b(=)f(20,)1163
+b(mukeep)582 b(=)f(2,)1163 b(mlkeep)582 b(=)f(2)p 51956
+29670 V 4000 30998 V 4844 30600 a(CalcIC)h(called)g(to)g(correct)g
+(initial)g(predator)h(concentrations)p 51956 30998 V
+4000 32327 V 51956 32327 V 4000 33655 V 4844 33256 a
+(-----------------------------------------------------------)p
+51956 33655 V 4000 34983 V 6007 34585 a(t)4649 b(bottom-left)1164
+b(top-right)2326 b(|)581 b(nst)1163 b(k)3487 b(h)p 51956
+34983 V 4000 36312 V 4844 35913 a
+(-----------------------------------------------------------)p
+51956 36312 V 4000 37640 V 51956 37640 V 4000 38968 V
+4844 38570 a(0.00e+00)1745 b(1.0000e+01)g(1.0000e+01)g(|)e(0)1163
+b(0)1743 b(1.6310e-08)p 51956 38968 V 4000 40297 V 11237
+39898 a(9.9999e+04)i(9.9949e+04)g(|)p 51956 40297 V 4000
+41625 V 51956 41625 V 4000 42953 V 4844 42555 a(1.00e-03)g(1.0318e+01)g
+(1.0827e+01)g(|)1162 b(33)h(4)1743 b(9.7404e-05)p 51956
+42953 V 4000 44282 V 11237 43883 a(1.0319e+05)i(1.0822e+05)g(|)p
+51956 44282 V 4000 45610 V 51956 45610 V 4000 46938 V
+4844 46540 a(1.00e-02)g(1.6189e+02)g(1.9735e+02)g(|)581
+b(111)1163 b(5)1743 b(1.6153e-04)p 51956 46938 V 4000
+48267 V 11237 47868 a(1.6189e+06)i(1.9735e+06)g(|)p 51956
+48267 V 4000 49595 V 51956 49595 V 4000 50923 V 4844
+50525 a(1.00e-01)g(2.4019e+02)g(2.7072e+02)g(|)581 b(190)1163
+b(1)1743 b(4.1353e-02)p 51956 50923 V 4000 52252 V 11237
+51853 a(2.4019e+06)i(2.7072e+06)g(|)p 51956 52252 V 4000
+53580 V 51956 53580 V 4000 54909 V 4844 54510 a(4.00e-01)g(2.4019e+02)g
+(2.7072e+02)g(|)581 b(193)1163 b(1)1743 b(3.3082e-01)p
+51956 54909 V 4000 56237 V 11237 55838 a(2.4019e+06)i(2.7072e+06)g(|)p
+51956 56237 V 4000 57565 V 51956 57565 V 4000 58894 V
+4844 58495 a(7.00e-01)g(2.4019e+02)g(2.7072e+02)g(|)581
+b(193)1163 b(1)1743 b(3.3082e-01)p 51956 58894 V 4000
+60222 V 11237 59823 a(2.4019e+06)i(2.7072e+06)g(|)p 51956
+60222 V 4000 61550 V 51956 61550 V 4000 62879 V 4844
+62480 a(1.00e+00)g(2.4019e+02)g(2.7072e+02)g(|)581 b(194)1163
+b(1)1743 b(6.6164e-01)p 51956 62879 V 4000 64207 V 11237
+63808 a(2.4019e+06)i(2.7072e+06)g(|)p 51956 64207 V 4000
+65535 V 51956 65535 V 4000 66864 V 4844 66465 a
+(-----------------------------------------------------------)p
+51956 66864 V 4000 68192 V 51956 68192 V 4000 69520 V
+4844 69122 a(Final)582 b(statistics:)p 51956 69520 V
+4000 70849 V 51956 70849 V 4000 72177 V 4844 71779 a(Number)g(of)g
+(steps)11624 b(=)581 b(194)p 51956 72177 V 4000 73505
+V 4844 73107 a(Number)h(of)g(residual)g(evaluations)2908
+b(=)581 b(899)p 51956 73505 V 4000 74834 V 4844 74435
+a(Number)h(of)g(nonlinear)g(iterations)2908 b(=)581 b(237)p
+51956 74834 V 4000 76162 V 4844 75764 a(Number)h(of)g(error)g(test)f
+(failures)3489 b(=)581 b(0)p 51956 76162 V 4000 77491
+V 4844 77092 a(Number)h(of)g(nonlinear)g(conv.)g(failures)h(=)e(0)p
+51956 77491 V 4000 78819 V 51956 78819 V Black 27394
+81741 a Fp(13)p Black eop
+%%Page: 14 18
+14 17 bop Black Black 0 8037 45 1329 v 844 7638 a Fd(Number)582
+b(of)g(linear)g(iterations)4651 b(=)581 b(660)p 47956
+8037 V 0 9365 V 844 8966 a(Number)h(of)g(linear)g(conv.)g(failures)2326
+b(=)581 b(0)p 47956 9365 V 0 10693 V 47956 10693 V 0
+12022 V 844 11623 a(Number)h(of)g(preconditioner)h(setups)2326
+b(=)581 b(26)p 47956 12022 V 0 13350 V 844 12951 a(Number)h(of)g
+(preconditioner)h(solves)2326 b(=)581 b(899)p 47956 13350
+V 0 14678 V 844 14280 a(Number)h(of)g(local)g(residual)g(evals.)2326
+b(=)581 b(1092)p 47956 14678 V 0 15478 45 801 v 47956
+15478 V 0 15522 48001 45 v Black 23394 81741 a Fp(14)p
+Black eop
+%%Page: 15 19
+15 18 bop Black Black 4000 7638 a Fo(References)p Black
+4000 10344 a Fp([1])p Black 606 w(P)-34 b(eter)414 b(N.)g(Bro)-34
+b(wn.)570 b(Deca)-34 b(y)414 b(to)h(uniform)g(states)h(in)f(fo)34
+b(o)g(d)414 b(w)-34 b(ebs.)570 b Fc(SIAM)444 b(J.)g(Appl.)e(Math.)p
+Fp(,)415 b(46:376{)5886 11849 y(392,)403 b(1986.)p Black
+4000 14351 a([2])p Black 606 w(A.)342 b(C.)h(Hindmarsh)g(and)g(R.)g
+(Serban.)438 b(User)342 b(Do)34 b(cumen)-34 b(tation)344
+b(for)e(ID)-34 b(A)343 b(v2.2.0.)436 b(T)-101 b(ec)-34
+b(hnical)343 b(Rep)34 b(ort)5886 15856 y(UCRL-SM-208112,)405
+b(LLNL,)d(2004.)p Black 4000 18358 a([3])p Black 606
+w(H.)425 b(H.)g(Rob)34 b(ertson.)602 b(The)426 b(solution)h(of)f(a)f
+(set)h(of)g(reaction)g(rate)f(equations.)602 b(In)425
+b(J.)h(W)-101 b(alsh,)430 b(editor,)5886 19864 y Fc(Numeric)-62
+b(al)431 b(analysis:)555 b(an)434 b(intr)-62 b(o)g(duction)p
+Fp(,)401 b(pages)k(178{182.)f(Academ.)g(Press,)f(1966.)p
+Black 27394 81741 a(15)p Black eop
+%%Page: 16 20
+16 19 bop Black Black 0 7638 a Fo(A)1793 b(Listing)600
+b(of)d Fb(irobx.c)-1734 10674 y Fa(1)1328 b Fd(/*)-1734
+12003 y Fa(2)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)
+-1734 13331 y Fa(3)1909 b Fd(*)581 b($Revision:)i(1.16.2.4)f($)-1734
+14659 y Fa(4)1909 b Fd(*)581 b($Date:)h(2005/04/06)h(23:34:13)f($)-1734
+15988 y Fa(5)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)
+-1734 17316 y Fa(6)1909 b Fd(*)581 b(Programmer\(s\):)j(Allan)e
+(Taylor,)g(Alan)g(Hindmarsh)g(and)-1734 18645 y Fa(7)1909
+b Fd(*)9299 b(Radu)581 b(Serban)h(@)g(LLNL)-1734 19973
+y Fa(8)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)
+-1734 21301 y Fa(9)1909 b Fd(*)581 b(This)h(simple)g(example)g(problem)
+h(for)e(IDA/IDAS,)i(due)e(to)h(Robertson,)-2140 22630
+y Fa(10)1909 b Fd(*)581 b(is)h(from)g(chemical)g(kinetics,)g(and)g
+(consists)g(of)g(the)f(following)i(three)-2140 23958
+y Fa(11)1909 b Fd(*)581 b(equations:)-2140 25286 y Fa(12)1909
+b Fd(*)-2140 26615 y Fa(13)g Fd(*)3487 b(dy1/dt)582 b(=)g(-.04*y1)g(+)f
+(1.e4*y2*y3)-2140 27943 y Fa(14)1909 b Fd(*)3487 b(dy2/dt)582
+b(=)g(.04*y1)g(-)f(1.e4*y2*y3)i(-)e(3.e7*y2**2)-2140
+29271 y Fa(15)1909 b Fd(*)5231 b(0)1743 b(=)582 b(y1)f(+)g(y2)h(+)f(y3)
+g(-)h(1)-2140 30600 y Fa(16)1909 b Fd(*)-2140 31928 y
+Fa(17)g Fd(*)581 b(on)h(the)f(interval)i(from)f(t)f(=)g(0.0)h(to)f(t)h
+(=)f(4.e10,)h(with)g(initial)-2140 33256 y Fa(18)1909
+b Fd(*)581 b(conditions:)i(y1)f(=)f(1,)g(y2)h(=)f(y3)h(=)f(0.)-2140
+34585 y Fa(19)1909 b Fd(*)-2140 35913 y Fa(20)g Fd(*)581
+b(The)h(problem)g(is)g(solved)g(with)f(IDA/IDAS)i(using)f(IDADENSE)g
+(for)g(the)f(linear)-2140 37241 y Fa(21)1909 b Fd(*)581
+b(solver,)i(with)e(a)h(user-supplied)h(Jacobian.)f(Output)g(is)g
+(printed)g(at)-2140 38570 y Fa(22)1909 b Fd(*)581 b(t)h(=)f(.4,)h(4,)f
+(40,)h(...,)f(4e10.)-2140 39898 y Fa(23)1909 b Fd(*)581
+b(-----------------------------------------------------------------)
+-2140 41227 y Fa(24)1909 b Fd(*/)-2140 42555 y Fa(25)-2140
+43883 y(26)1328 b Fd(#include)582 b(<stdio.h>)-2140 45212
+y Fa(27)1328 b Fd(#include)582 b(<math.h>)-2140 46540
+y Fa(28)1328 b Fd(#include)582 b("sundialstypes.h")-2140
+47868 y Fa(29)1328 b Fd(#include)582 b("sundialsmath.h")-2140
+49197 y Fa(30)1328 b Fd(#include)582 b("nvector_serial.h")-2140
+50525 y Fa(31)1328 b Fd(#include)582 b("ida.h")-2140
+51853 y Fa(32)1328 b Fd(#include)582 b("idadense.h")-2140
+53182 y Fa(33)-2140 54510 y(34)1328 b Fd(/*)581 b(Problem)i(Constants)f
+(*/)-2140 55838 y Fa(35)-2140 57167 y(36)1328 b Fd(#define)582
+b(NEQ)1744 b(3)-2140 58495 y Fa(37)1328 b Fd(#define)582
+b(NOUT)1163 b(12)-2140 59823 y Fa(38)-2140 61152 y(39)1328
+b Fd(#define)582 b(ZERO)g(RCONST\(0.0\);)-2140 62480
+y Fa(40)1328 b Fd(#define)582 b(ONE)1163 b(RCONST\(1.0\);)-2140
+63808 y Fa(41)-2140 65137 y(42)1328 b Fd(/*)581 b(Macro)h(to)g(define)g
+(dense)g(matrix)g(elements,)g(indexed)g(from)g(1.)g(*/)-2140
+66465 y Fa(43)-2140 67794 y(44)1328 b Fd(#define)582
+b(IJth\(A,i,j\))h(DENSE_ELEM\(A,i-1,j-1\))-2140 69122
+y Fa(45)-2140 70450 y(46)1328 b Fd(/*)581 b(Prototypes)i(of)f
+(functions)g(called)g(by)g(IDA)f(*/)-2140 71779 y Fa(47)-2140
+73107 y(48)1328 b Fd(int)582 b(resrob\(realtype)h(tres,)f(N_Vector)g
+(yy,)g(N_Vector)g(yp,)-2140 74435 y Fa(49)7721 b Fd(N_Vector)582
+b(resval,)g(void)g(*rdata\);)-2140 75764 y Fa(50)-2140
+77092 y(51)1328 b Fd(int)582 b(jacrob\(long)g(int)g(Neq,)g(realtype)g
+(tt,)g(N_Vector)g(yy,)g(N_Vector)g(yp,)-2140 78420 y
+Fa(52)7721 b Fd(N_Vector)582 b(resvec,)g(realtype)h(cj,)e(void)h
+(*jdata,)g(DenseMat)g(JJ,)p Black 23394 81741 a Fp(16)p
+Black eop
+%%Page: 17 21
+17 20 bop Black Black 1860 7638 a Fa(53)7721 b Fd(N_Vector)582
+b(tempv1,)g(N_Vector)h(tempv2,)f(N_Vector)g(tempv3\);)1860
+8966 y Fa(54)1860 10295 y(55)1328 b Fd(/*)581 b(Prototypes)i(of)f
+(private)g(functions)g(*/)1860 11623 y Fa(56)1328 b Fd(static)582
+b(void)g(PrintHeader\(realtype)i(rtol,)e(N_Vector)g(avtol,)g(N_Vector)h
+(y\);)1860 12951 y Fa(57)1328 b Fd(static)582 b(void)g
+(PrintOutput\(void)h(*mem,)f(realtype)h(t,)e(N_Vector)h(y\);)1860
+14280 y Fa(58)1328 b Fd(static)582 b(void)g(PrintFinalStats\(void)i
+(*mem\);)1860 15608 y Fa(59)1328 b Fd(static)582 b(int)g
+(check_flag\(void)h(*flagvalue,)g(char)f(*funcname,)g(int)g(opt\);)1860
+16936 y Fa(60)1860 18265 y(61)1328 b Fd(/*)1860 19593
+y Fa(62)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1860 20922 y Fa(63)g Fd(*)581 b(MAIN)h(PROGRAM)1860
+22250 y Fa(64)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1860 23578 y Fa(65)g Fd(*/)1860 24907 y Fa(66)1860
+26235 y(67)1328 b Fd(int)582 b(main\(void\))1860 27563
+y Fa(68)1328 b Fd({)1860 28892 y Fa(69)2490 b Fd(void)582
+b(*mem;)1860 30220 y Fa(70)2490 b Fd(N_Vector)583 b(yy,)e(yp,)h(avtol;)
+1860 31548 y Fa(71)2490 b Fd(realtype)583 b(rtol,)f(*yval,)g(*ypval,)g
+(*atval;)1860 32877 y Fa(72)2490 b Fd(realtype)583 b(t0,)e(t1,)h(tout,)
+g(tret;)1860 34205 y Fa(73)2490 b Fd(int)582 b(iout,)g(retval;)1860
+35533 y Fa(74)1860 36862 y(75)2490 b Fd(mem)582 b(=)f(NULL;)1860
+38190 y Fa(76)2490 b Fd(yy)582 b(=)f(yp)g(=)h(avtol)g(=)f(NULL;)1860
+39518 y Fa(77)2490 b Fd(yval)582 b(=)f(ypval)h(=)g(atval)f(=)h(NULL;)
+1860 40847 y Fa(78)1860 42175 y(79)2490 b Fd(/*)582 b(Allocate)g
+(N-vectors.)h(*/)1860 43504 y Fa(80)1860 44832 y(81)2490
+b Fd(yy)582 b(=)f(N_VNew_Serial\(NEQ\);)1860 46160 y
+Fa(82)2490 b Fd(if\(check_flag\(\(void)584 b(*\)yy,)e("N_VNew_Serial",)
+i(0\)\))d(return\(1\);)1860 47489 y Fa(83)2490 b Fd(yp)582
+b(=)f(N_VNew_Serial\(NEQ\);)1860 48817 y Fa(84)2490 b
+Fd(if\(check_flag\(\(void)584 b(*\)yp,)e("N_VNew_Serial",)i(0\)\))d
+(return\(1\);)1860 50145 y Fa(85)2490 b Fd(avtol)582
+b(=)f(N_VNew_Serial\(NEQ\);)1860 51474 y Fa(86)2490 b
+Fd(if\(check_flag\(\(void)584 b(*\)avtol,)f("N_VNew_Serial",)g(0\)\))f
+(return\(1\);)1860 52802 y Fa(87)1860 54130 y(88)2490
+b Fd(/*)582 b(Create)g(and)f(initialize)1164 b(y,)582
+b(y',)f(and)h(absolute)g(tolerance)h(vectors.)f(*/)1860
+55459 y Fa(89)1860 56787 y(90)2490 b Fd(yval)1163 b(=)581
+b(NV_DATA_S\(yy\);)1860 58115 y Fa(91)2490 b Fd(yval[0])582
+b(=)g(ONE;)1860 59444 y Fa(92)2490 b Fd(yval[1])582 b(=)g(ZERO;)1860
+60772 y Fa(93)2490 b Fd(yval[2])582 b(=)g(ZERO;)1860
+62100 y Fa(94)1860 63429 y(95)2490 b Fd(ypval)582 b(=)f
+(NV_DATA_S\(yp\);)1860 64757 y Fa(96)2490 b Fd(ypval[0])1164
+b(=)581 b(RCONST\(-0.04\);)1860 66086 y Fa(97)2490 b
+Fd(ypval[1])1164 b(=)581 b(RCONST\(0.04\);)1860 67414
+y Fa(98)2490 b Fd(ypval[2])1164 b(=)581 b(ZERO;)1860
+68742 y Fa(99)1454 70071 y(100)2490 b Fd(rtol)582 b(=)f
+(RCONST\(1.0e-4\);)1454 71399 y Fa(101)1454 72727 y(102)2490
+b Fd(atval)582 b(=)f(NV_DATA_S\(avtol\);)1454 74056 y
+Fa(103)2490 b Fd(atval[0])583 b(=)e(RCONST\(1.0e-6\);)1454
+75384 y Fa(104)2490 b Fd(atval[1])583 b(=)e(RCONST\(1.0e-10\);)1454
+76712 y Fa(105)2490 b Fd(atval[2])583 b(=)e(RCONST\(1.0e-6\);)1454
+78041 y Fa(106)p Black 27394 81741 a Fp(17)p Black eop
+%%Page: 18 22
+18 21 bop Black Black -2546 7638 a Fa(107)2490 b Fd(/*)582
+b(Integration)h(limits)f(*/)-2546 8966 y Fa(108)-2546
+10295 y(109)2490 b Fd(t0)582 b(=)f(ZERO;)-2546 11623
+y Fa(110)2490 b Fd(t1)582 b(=)f(RCONST\(0.4\);)-2546
+12951 y Fa(111)-2546 14280 y(112)2490 b Fd(PrintHeader\(rtol,)584
+b(avtol,)e(yy\);)-2546 15608 y Fa(113)-2546 16936 y(114)2490
+b Fd(/*)582 b(Call)f(IDACreate)i(and)f(IDAMalloc)g(to)g(initialize)g
+(IDA)g(memory)g(*/)-2546 18265 y Fa(115)-2546 19593 y(116)2490
+b Fd(mem)582 b(=)f(IDACreate\(\);)-2546 20922 y Fa(117)2490
+b Fd(if\(check_flag\(\(void)584 b(*\)mem,)e("IDACreate",)h(0\)\))f
+(return\(1\);)-2546 22250 y Fa(118)2490 b Fd(retval)582
+b(=)g(IDAMalloc\(mem,)h(resrob,)f(t0,)g(yy,)f(yp,)h(IDA_SV,)g(rtol,)g
+(avtol\);)-2546 23578 y Fa(119)2490 b Fd(if\(check_flag\(&retval,)585
+b("IDAMalloc",)e(1\)\))e(return\(1\);)-2546 24907 y Fa(120)-2546
+26235 y(121)2490 b Fd(/*)582 b(Free)f(avtol)h(*/)-2546
+27563 y Fa(122)2490 b Fd(N_VDestroy_Serial\(avtol\);)-2546
+28892 y Fa(123)-2546 30220 y(124)g Fd(/*)582 b(Call)f(IDADense)i(and)e
+(set)h(up)f(the)h(linear)g(solver.)g(*/)-2546 31548 y
+Fa(125)-2546 32877 y(126)2490 b Fd(retval)582 b(=)g(IDADense\(mem,)h
+(NEQ\);)-2546 34205 y Fa(127)2490 b Fd(if\(check_flag\(&retval,)585
+b("IDADense",)e(1\)\))e(return\(1\);)-2546 35533 y Fa(128)2490
+b Fd(retval)582 b(=)g(IDADenseSetJacFn\(mem,)i(jacrob,)e(NULL\);)-2546
+36862 y Fa(129)2490 b Fd(if\(check_flag\(&retval,)585
+b("IDADenseSetJacFn",)f(1\)\))d(return\(1\);)-2546 38190
+y Fa(130)-2546 39518 y(131)2490 b Fd(/*)582 b(Loop)f(over)h(tout)g
+(values)g(and)g(call)f(IDASolve.)i(*/)-2546 40847 y Fa(132)-2546
+42175 y(133)2490 b Fd(for)582 b(\(tout)g(=)f(t1,)h(iout)f(=)h(1;)f
+(iout)h(<=)f(NOUT)h(;)f(iout++,)i(tout)e(*=)h(RCONST\(10.0\)\))h({)
+-2546 43504 y Fa(134)3653 b Fd(retval=IDASolve\(mem,)584
+b(tout,)e(&tret,)g(yy,)f(yp,)h(IDA_NORMAL\);)-2546 44832
+y Fa(135)3653 b Fd(if\(check_flag\(&retval,)584 b("IDASolve",)f(1\)\))e
+(return\(1\);)-2546 46160 y Fa(136)3653 b Fd
+(PrintOutput\(mem,tret,yy\);)-2546 47489 y Fa(137)2490
+b Fd(})-2546 48817 y Fa(138)-2546 50145 y(139)g Fd
+(PrintFinalStats\(mem\);)-2546 51474 y Fa(140)-2546 52802
+y(141)g Fd(/*)582 b(Free)f(memory)i(*/)-2546 54130 y
+Fa(142)-2546 55459 y(143)2490 b Fd(IDAFree\(mem\);)-2546
+56787 y Fa(144)g Fd(N_VDestroy_Serial\(yy\);)-2546 58115
+y Fa(145)g Fd(N_VDestroy_Serial\(yp\);)-2546 59444 y
+Fa(146)-2546 60772 y(147)g Fd(return\(0\);)-2546 62100
+y Fa(148)-2546 63429 y(149)1328 b Fd(})-2546 64757 y
+Fa(150)-2546 66086 y(151)g Fd(/*)-2546 67414 y Fa(152)1909
+b Fd
+(*------------------------------------------------------------------)p
+(--)-2546 68742 y Fa(153)g Fd(*)581 b(FUNCTIONS)i(CALLED)f(BY)f(IDA)
+-2546 70071 y Fa(154)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)-2546 71399 y Fa(155)g Fd(*/)-2546 72727 y Fa(156)-2546
+74056 y(157)1328 b Fd(/*)-2546 75384 y Fa(158)1909 b
+Fd(*)581 b(Define)h(the)g(system)g(residual)g(function.)-2546
+76712 y Fa(159)1909 b Fd(*/)-2546 78041 y Fa(160)p Black
+23394 81741 a Fp(18)p Black eop
+%%Page: 19 23
+19 22 bop Black Black 1454 7638 a Fa(161)1328 b Fd(int)582
+b(resrob\(realtype)h(tres,)f(N_Vector)g(yy,)g(N_Vector)g(yp,)g
+(N_Vector)g(rr,)g(void)f(*rdata\))1454 8966 y Fa(162)1328
+b Fd({)1454 10295 y Fa(163)2490 b Fd(realtype)583 b(*yval,)f(*ypval,)g
+(*rval;)1454 11623 y Fa(164)1454 12951 y(165)2490 b Fd(yval)582
+b(=)f(NV_DATA_S\(yy\);)1454 14280 y Fa(166)2490 b Fd(ypval)582
+b(=)f(NV_DATA_S\(yp\);)1454 15608 y Fa(167)2490 b Fd(rval)582
+b(=)f(NV_DATA_S\(rr\);)1454 16936 y Fa(168)1454 18265
+y(169)2490 b Fd(rval[0])1164 b(=)581 b(RCONST\(-0.04\)*yval[0])j(+)e
+(RCONST\(1.0e4\)*yval[1]*yval[2];)1454 19593 y Fa(170)2490
+b Fd(rval[1])1164 b(=)581 b(-rval[0])h(-)g
+(RCONST\(3.0e7\)*yval[1]*yval[1])j(-)c(ypval[1];)1454
+20922 y Fa(171)2490 b Fd(rval[0])582 b(-=)1163 b(ypval[0];)1454
+22250 y Fa(172)2490 b Fd(rval[2])1164 b(=)e(yval[0])582
+b(+)g(yval[1])g(+)f(yval[2])h(-)g(ONE;)1454 23578 y Fa(173)1454
+24907 y(174)2490 b Fd(return\(0\);)1454 26235 y Fa(175)1454
+27563 y(176)1328 b Fd(})1454 28892 y Fa(177)1454 30220
+y(178)g Fd(/*)1454 31548 y Fa(179)1909 b Fd(*)581 b(Define)h(the)g
+(Jacobian)g(function.)1454 32877 y Fa(180)1909 b Fd(*/)1454
+34205 y Fa(181)1454 35533 y(182)1328 b Fd(int)582 b(jacrob\(long)g(int)
+g(Neq,)g(realtype)g(tt,)g(N_Vector)g(yy,)g(N_Vector)g(yp,)1454
+36862 y Fa(183)7721 b Fd(N_Vector)582 b(resvec,)g(realtype)h(cj,)e
+(void)h(*jdata,)g(DenseMat)g(JJ,)1454 38190 y Fa(184)7721
+b Fd(N_Vector)582 b(tempv1,)g(N_Vector)h(tempv2,)f(N_Vector)g(tempv3\))
+1454 39518 y Fa(185)1328 b Fd({)1454 40847 y Fa(186)1454
+42175 y(187)2490 b Fd(realtype)583 b(*yval;)1454 43504
+y Fa(188)1454 44832 y(189)2490 b Fd(yval)582 b(=)f(NV_DATA_S\(yy\);)
+1454 46160 y Fa(190)1454 47489 y(191)2490 b Fd(IJth\(JJ,1,1\))583
+b(=)f(RCONST\(-0.04\))h(-)e(cj;)1454 48817 y Fa(192)2490
+b Fd(IJth\(JJ,2,1\))583 b(=)f(RCONST\(0.04\);)1454 50145
+y Fa(193)2490 b Fd(IJth\(JJ,3,1\))583 b(=)f(ONE;)1454
+51474 y Fa(194)2490 b Fd(IJth\(JJ,1,2\))583 b(=)f
+(RCONST\(1.0e4\)*yval[2];)1454 52802 y Fa(195)2490 b
+Fd(IJth\(JJ,2,2\))583 b(=)f(RCONST\(-1.0e4\)*yval[2])i(-)d
+(RCONST\(6.0e7\)*yval[1])k(-)c(cj;)1454 54130 y Fa(196)2490
+b Fd(IJth\(JJ,3,2\))583 b(=)f(ONE;)1454 55459 y Fa(197)2490
+b Fd(IJth\(JJ,1,3\))583 b(=)f(RCONST\(1.0e4\)*yval[1];)1454
+56787 y Fa(198)2490 b Fd(IJth\(JJ,2,3\))583 b(=)f
+(RCONST\(-1.0e4\)*yval[1];)1454 58115 y Fa(199)2490 b
+Fd(IJth\(JJ,3,3\))583 b(=)f(ONE;)1454 59444 y Fa(200)1454
+60772 y(201)2490 b Fd(return\(0\);)1454 62100 y Fa(202)1454
+63429 y(203)1328 b Fd(})1454 64757 y Fa(204)1454 66086
+y(205)g Fd(/*)1454 67414 y Fa(206)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1454 68742 y Fa(207)g Fd(*)581 b(PRIVATE)i(FUNCTIONS)1454
+70071 y Fa(208)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1454 71399 y Fa(209)g Fd(*/)1454 72727 y Fa(210)1454
+74056 y(211)1328 b Fd(/*)1454 75384 y Fa(212)1909 b Fd(*)581
+b(Print)h(first)g(lines)g(of)g(output)g(\(problem)g(description\))1454
+76712 y Fa(213)1909 b Fd(*/)1454 78041 y Fa(214)p Black
+27394 81741 a Fp(19)p Black eop
+%%Page: 20 24
+20 23 bop Black Black -2546 7638 a Fa(215)1328 b Fd(static)582
+b(void)g(PrintHeader\(realtype)i(rtol,)e(N_Vector)g(avtol,)g(N_Vector)h
+(y\))-2546 8966 y Fa(216)1328 b Fd({)-2546 10295 y Fa(217)2490
+b Fd(realtype)583 b(*atval,)f(*yval;)-2546 11623 y Fa(218)-2546
+12951 y(219)2490 b Fd(atval)1163 b(=)582 b(NV_DATA_S\(avtol\);)-2546
+14280 y Fa(220)2490 b Fd(yval)1163 b(=)581 b(NV_DATA_S\(y\);)-2546
+15608 y Fa(221)-2546 16936 y(222)2490 b Fd(printf\("\\nirobx:)584
+b(Robertson)e(kinetics)h(DAE)e(serial)h(example)g(problem)h(for)e(IDA)h
+(\\n"\);)-2546 18265 y Fa(223)2490 b Fd(printf\(")4070
+b(Three)581 b(equation)i(chemical)f(kinetics)g(problem.)h(\\n\\n"\);)
+-2546 19593 y Fa(224)2490 b Fd(printf\("Linear)584 b(solver:)e
+(IDADENSE,)g(with)g(user-supplied)h(Jacobian.\\n"\);)-2546
+20922 y Fa(225)1328 b Fd(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546 22250 y
+Fa(226)2490 b Fd(printf\("Tolerance)584 b(parameters:)1164
+b(rtol)582 b(=)f(\045Lg)1744 b(atol)582 b(=)f(\045Lg)g(\045Lg)h(\045Lg)
+g(\\n",)-2546 23578 y Fa(227)6558 b Fd(rtol,)582 b
+(atval[0],atval[1],atval[2]\);)-2546 24907 y Fa(228)2490
+b Fd(printf\("Initial)584 b(conditions)e(y0)g(=)f(\(\045Lg)h(\045Lg)f
+(\045Lg\)\\n",)-2546 26235 y Fa(229)6558 b Fd(yval[0],)583
+b(yval[1],)f(yval[2]\);)-2546 27563 y Fa(230)1328 b Fd(#elif)582
+b(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546 28892 y
+Fa(231)2490 b Fd(printf\("Tolerance)584 b(parameters:)1164
+b(rtol)582 b(=)f(\045lg)1744 b(atol)582 b(=)f(\045lg)g(\045lg)h(\045lg)
+g(\\n",)-2546 30220 y Fa(232)6558 b Fd(rtol,)582 b
+(atval[0],atval[1],atval[2]\);)-2546 31548 y Fa(233)2490
+b Fd(printf\("Initial)584 b(conditions)e(y0)g(=)f(\(\045lg)h(\045lg)f
+(\045lg\)\\n",)-2546 32877 y Fa(234)6558 b Fd(yval[0],)583
+b(yval[1],)f(yval[2]\);)-2546 34205 y Fa(235)1328 b Fd(#else)-2546
+35533 y Fa(236)2490 b Fd(printf\("Tolerance)584 b(parameters:)1164
+b(rtol)582 b(=)f(\045g)1744 b(atol)581 b(=)h(\045g)f(\045g)h(\045g)f
+(\\n",)-2546 36862 y Fa(237)6558 b Fd(rtol,)582 b
+(atval[0],atval[1],atval[2]\);)-2546 38190 y Fa(238)2490
+b Fd(printf\("Initial)584 b(conditions)e(y0)g(=)f(\(\045g)h(\045g)f
+(\045g\)\\n",)-2546 39518 y Fa(239)6558 b Fd(yval[0],)583
+b(yval[1],)f(yval[2]\);)-2546 40847 y Fa(240)1328 b Fd(#endif)-2546
+42175 y Fa(241)2490 b Fd(printf\("Constraints)584 b(and)e(id)f(not)h
+(used.\\n\\n"\);)-2546 43504 y Fa(242)2490 b Fd
+(printf\("----------------------------------------------------------)p
+(-----------\\n"\);)-2546 44832 y Fa(243)g Fd(printf\(")1164
+b(t)6393 b(y1)g(y2)f(y3"\);)-2546 46160 y Fa(244)2490
+b Fd(printf\(")3488 b(|)582 b(nst)1162 b(k)3487 b(h\\n"\);)-2546
+47489 y Fa(245)2490 b Fd
+(printf\("----------------------------------------------------------)p
+(-----------\\n"\);)-2546 48817 y Fa(246)-2546 50145
+y(247)1328 b Fd(})-2546 51474 y Fa(248)-2546 52802 y(249)g
+Fd(/*)-2546 54130 y Fa(250)1909 b Fd(*)581 b(Print)h(Output)-2546
+55459 y Fa(251)1909 b Fd(*/)-2546 56787 y Fa(252)-2546
+58115 y(253)1328 b Fd(static)582 b(void)g(PrintOutput\(void)h(*mem,)f
+(realtype)h(t,)e(N_Vector)h(y\))-2546 59444 y Fa(254)1328
+b Fd({)-2546 60772 y Fa(255)2490 b Fd(realtype)583 b(*yval;)-2546
+62100 y Fa(256)2490 b Fd(int)582 b(retval,)g(kused;)-2546
+63429 y Fa(257)2490 b Fd(long)582 b(int)g(nst;)-2546
+64757 y Fa(258)2490 b Fd(realtype)583 b(hused;)-2546
+66086 y Fa(259)-2546 67414 y(260)2490 b Fd(yval)1163
+b(=)581 b(NV_DATA_S\(y\);)-2546 68742 y Fa(261)-2546
+70071 y(262)2490 b Fd(retval)582 b(=)g(IDAGetLastOrder\(mem,)i
+(&kused\);)-2546 71399 y Fa(263)2490 b Fd(check_flag\(&retval,)584
+b("IDAGetLastOrder",)g(1\);)-2546 72727 y Fa(264)2490
+b Fd(retval)582 b(=)g(IDAGetNumSteps\(mem,)i(&nst\);)-2546
+74056 y Fa(265)2490 b Fd(check_flag\(&retval,)584 b("IDAGetNumSteps",)g
+(1\);)-2546 75384 y Fa(266)2490 b Fd(retval)582 b(=)g
+(IDAGetLastStep\(mem,)i(&hused\);)-2546 76712 y Fa(267)2490
+b Fd(check_flag\(&retval,)584 b("IDAGetLastStep",)g(1\);)-2546
+78041 y Fa(268)1328 b Fd(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))p Black 23394
+81741 a Fp(20)p Black eop
+%%Page: 21 25
+21 24 bop Black Black 1454 7638 a Fa(269)2490 b Fd(printf\("\0458.2Le)
+584 b(\04512.4Le)e(\04512.4Le)g(\04512.4Le)g(|)f(\0453ld)1163
+b(\0451d)582 b(\04512.4Le\\n",)1454 8966 y Fa(270)6558
+b Fd(t,)582 b(yval[0],)g(yval[1],)g(yval[2],)h(nst,)f(kused,)g
+(hused\);)1454 10295 y Fa(271)1328 b Fd(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))1454 11623 y Fa(272)2490
+b Fd(printf\("\0458.2le)584 b(\04512.4le)e(\04512.4le)g(\04512.4le)g(|)
+f(\0453ld)1163 b(\0451d)582 b(\04512.4le\\n",)1454 12951
+y Fa(273)6558 b Fd(t,)582 b(yval[0],)g(yval[1],)g(yval[2],)h(nst,)f
+(kused,)g(hused\);)1454 14280 y Fa(274)1328 b Fd(#else)1454
+15608 y Fa(275)2490 b Fd(printf\("\0458.2e)583 b(\04512.4e)f(\04512.4e)
+g(\04512.4e)h(|)e(\0453ld)1163 b(\0451d)581 b(\04512.4e\\n",)1454
+16936 y Fa(276)6558 b Fd(t,)582 b(yval[0],)g(yval[1],)g(yval[2],)h
+(nst,)f(kused,)g(hused\);)1454 18265 y Fa(277)1328 b
+Fd(#endif)1454 19593 y Fa(278)g Fd(})1454 20922 y Fa(279)1454
+22250 y(280)g Fd(/*)1454 23578 y Fa(281)1909 b Fd(*)581
+b(Print)h(final)g(integrator)h(statistics)1454 24907
+y Fa(282)1909 b Fd(*/)1454 26235 y Fa(283)1454 27563
+y(284)1328 b Fd(static)582 b(void)g(PrintFinalStats\(void)i(*mem\))1454
+28892 y Fa(285)1328 b Fd({)1454 30220 y Fa(286)2490 b
+Fd(int)582 b(retval;)1454 31548 y Fa(287)2490 b Fd(long)582
+b(int)g(nst,)f(nni,)h(njeD,)g(nre,)g(nreD,)g(netf,)g(ncfn;)1454
+32877 y Fa(288)1454 34205 y(289)2490 b Fd(retval)582
+b(=)g(IDAGetNumSteps\(mem,)i(&nst\);)1454 35533 y Fa(290)2490
+b Fd(check_flag\(&retval,)584 b("IDAGetNumSteps",)g(1\);)1454
+36862 y Fa(291)2490 b Fd(retval)582 b(=)g(IDAGetNumResEvals\(mem,)i
+(&nre\);)1454 38190 y Fa(292)2490 b Fd(check_flag\(&retval,)584
+b("IDAGetNumResEvals",)g(1\);)1454 39518 y Fa(293)2490
+b Fd(retval)582 b(=)g(IDADenseGetNumJacEvals\(mem,)j(&njeD\);)1454
+40847 y Fa(294)2490 b Fd(check_flag\(&retval,)584 b
+("IDADenseGetNumJacEvals",)h(1\);)1454 42175 y Fa(295)2490
+b Fd(retval)582 b(=)g(IDAGetNumNonlinSolvIters\(mem,)j(&nni\);)1454
+43504 y Fa(296)2490 b Fd(check_flag\(&retval,)584 b
+("IDAGetNumNonlinSolvIters",)h(1\);)1454 44832 y Fa(297)2490
+b Fd(retval)582 b(=)g(IDAGetNumErrTestFails\(mem,)j(&netf\);)1454
+46160 y Fa(298)2490 b Fd(check_flag\(&retval,)584 b
+("IDAGetNumErrTestFails",)h(1\);)1454 47489 y Fa(299)2490
+b Fd(retval)582 b(=)g(IDAGetNumNonlinSolvConvFails\(mem,)k(&ncfn\);)
+1454 48817 y Fa(300)2490 b Fd(check_flag\(&retval,)584
+b("IDAGetNumNonlinSolvConvFails",)i(1\);)1454 50145 y
+Fa(301)2490 b Fd(retval)582 b(=)g(IDADenseGetNumResEvals\(mem,)j
+(&nreD\);)1454 51474 y Fa(302)2490 b Fd(check_flag\(&retval,)584
+b("IDADenseGetNumResEvals",)h(1\);)1454 52802 y Fa(303)1454
+54130 y(304)2490 b Fd(printf\("\\nFinal)584 b(Run)d(Statistics:)i
+(\\n\\n"\);)1454 55459 y Fa(305)2490 b Fd(printf\("Number)584
+b(of)d(steps)11624 b(=)581 b(\045ld\\n",)h(nst\);)1454
+56787 y Fa(306)2490 b Fd(printf\("Number)584 b(of)d(residual)h
+(evaluations)2908 b(=)581 b(\045ld\\n",)h(nre+nreD\);)1454
+58115 y Fa(307)2490 b Fd(printf\("Number)584 b(of)d(Jacobian)h
+(evaluations)2908 b(=)581 b(\045ld\\n",)h(njeD\);)1454
+59444 y Fa(308)2490 b Fd(printf\("Number)584 b(of)d(nonlinear)h
+(iterations)2908 b(=)581 b(\045ld\\n",)h(nni\);)1454
+60772 y Fa(309)2490 b Fd(printf\("Number)584 b(of)d(error)h(test)g
+(failures)3488 b(=)581 b(\045ld\\n",)h(netf\);)1454 62100
+y Fa(310)2490 b Fd(printf\("Number)584 b(of)d(nonlinear)h(conv.)g
+(failures)h(=)e(\045ld\\n",)h(ncfn\);)1454 63429 y Fa(311)1454
+64757 y(312)1328 b Fd(})1454 66086 y Fa(313)1454 67414
+y(314)g Fd(/*)1454 68742 y Fa(315)1909 b Fd(*)581 b(Check)h(function)h
+(return)f(value...)1454 70071 y Fa(316)1909 b Fd(*)1744
+b(opt)581 b(==)h(0)f(means)h(SUNDIALS)g(function)h(allocates)f(memory)g
+(so)g(check)g(if)1454 71399 y Fa(317)1909 b Fd(*)6974
+b(returned)582 b(NULL)g(pointer)1454 72727 y Fa(318)1909
+b Fd(*)1744 b(opt)581 b(==)h(1)f(means)h(SUNDIALS)g(function)h(returns)
+f(a)f(flag)h(so)f(check)h(if)1454 74056 y Fa(319)1909
+b Fd(*)6974 b(flag)582 b(>=)f(0)1454 75384 y Fa(320)1909
+b Fd(*)1744 b(opt)581 b(==)h(2)f(means)h(function)g(allocates)h(memory)
+f(so)f(check)h(if)g(returned)1454 76712 y Fa(321)1909
+b Fd(*)6974 b(NULL)582 b(pointer)1454 78041 y Fa(322)1909
+b Fd(*/)p Black 27394 81741 a Fp(21)p Black eop
+%%Page: 22 26
+22 25 bop Black Black -2546 7638 a Fa(323)-2546 8966
+y(324)1328 b Fd(static)582 b(int)g(check_flag\(void)h(*flagvalue,)g
+(char)f(*funcname,)g(int)g(opt\))-2546 10295 y Fa(325)1328
+b Fd({)-2546 11623 y Fa(326)2490 b Fd(int)582 b(*errflag;)-2546
+12951 y Fa(327)2490 b Fd(/*)582 b(Check)g(if)f(SUNDIALS)h(function)h
+(returned)f(NULL)g(pointer)g(-)f(no)h(memory)g(allocated)g(*/)-2546
+14280 y Fa(328)2490 b Fd(if)582 b(\(opt)f(==)h(0)f(&&)h(flagvalue)g(==)
+g(NULL\))g({)-2546 15608 y Fa(329)3653 b Fd(fprintf\(stderr,)-2546
+16936 y Fa(330)8302 b Fd("\\nSUNDIALS_ERROR:)584 b(\045s\(\))d(failed)h
+(-)g(returned)g(NULL)g(pointer\\n\\n",)-2546 18265 y
+Fa(331)8302 b Fd(funcname\);)-2546 19593 y Fa(332)3653
+b Fd(return\(1\);)-2546 20922 y Fa(333)2490 b Fd(})582
+b(else)f(if)h(\(opt)g(==)f(1\))g({)-2546 22250 y Fa(334)3653
+b Fd(/*)581 b(Check)h(if)f(flag)h(<)f(0)h(*/)-2546 23578
+y Fa(335)3653 b Fd(errflag)582 b(=)f(\(int)h(*\))f(flagvalue;)-2546
+24907 y Fa(336)3653 b Fd(if)581 b(\(*errflag)i(<)e(0\))g({)-2546
+26235 y Fa(337)4815 b Fd(fprintf\(stderr,)-2546 27563
+y Fa(338)9464 b Fd("\\nSUNDIALS_ERROR:)584 b(\045s\(\))e(failed)g(with)
+f(flag)h(=)f(\045d\\n\\n",)-2546 28892 y Fa(339)9464
+b Fd(funcname,)583 b(*errflag\);)-2546 30220 y Fa(340)4815
+b Fd(return\(1\);)-2546 31548 y Fa(341)3653 b Fd(})-2546
+32877 y Fa(342)2490 b Fd(})582 b(else)f(if)h(\(opt)g(==)f(2)g(&&)h
+(flagvalue)g(==)g(NULL\))g({)-2546 34205 y Fa(343)3653
+b Fd(/*)581 b(Check)h(if)f(function)i(returned)f(NULL)g(pointer)g(-)f
+(no)h(memory)g(allocated)g(*/)-2546 35533 y Fa(344)3653
+b Fd(fprintf\(stderr,)-2546 36862 y Fa(345)8302 b Fd("\\nMEMORY_ERROR:)
+583 b(\045s\(\))f(failed)g(-)f(returned)i(NULL)e(pointer\\n\\n",)-2546
+38190 y Fa(346)8302 b Fd(funcname\);)-2546 39518 y Fa(347)3653
+b Fd(return\(1\);)-2546 40847 y Fa(348)2490 b Fd(})-2546
+42175 y Fa(349)-2546 43504 y(350)g Fd(return\(0\);)-2546
+44832 y Fa(351)1328 b Fd(})p Black 23394 81741 a Fp(22)p
+Black eop
+%%Page: 23 27
+23 26 bop Black Black 4000 7638 a Fo(B)1793 b(Listing)599
+b(of)f Fb(iwebsb.c)2266 10674 y Fa(1)1328 b Fd(/*)2266
+12003 y Fa(2)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)2266
+13331 y Fa(3)1909 b Fd(*)581 b($Revision:)i(1.18.2.2)f($)2266
+14659 y Fa(4)1909 b Fd(*)581 b($Date:)h(2005/04/04)h(22:36:47)f($)2266
+15988 y Fa(5)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)2266
+17316 y Fa(6)1909 b Fd(*)581 b(Programmer\(s\):)j(Allan)e(Taylor,)g
+(Alan)g(Hindmarsh)g(and)2266 18645 y Fa(7)1909 b Fd(*)9299
+b(Radu)581 b(Serban)h(@)g(LLNL)2266 19973 y Fa(8)1909
+b Fd(*)581 b
+(-----------------------------------------------------------------)2266
+21301 y Fa(9)1909 b Fd(*)581 b(Example)i(program)f(for)f(IDA:)h(Food)g
+(web)g(problem.)1860 22630 y Fa(10)1909 b Fd(*)1860 23958
+y Fa(11)g Fd(*)581 b(This)h(example)g(program)h(\(serial)f(version\))g
+(uses)g(the)f(IDABAND)i(linear)1860 25286 y Fa(12)1909
+b Fd(*)581 b(solver,)i(and)e(IDACalcIC)i(for)e(initial)i(condition)f
+(calculation.)1860 26615 y Fa(13)1909 b Fd(*)1860 27943
+y Fa(14)g Fd(*)581 b(The)h(mathematical)h(problem)f(solved)g(in)g(this)
+f(example)i(is)e(a)g(DAE)h(system)1860 29271 y Fa(15)1909
+b Fd(*)581 b(that)h(arises)g(from)g(a)f(system)h(of)g(partial)g
+(differential)h(equations)f(after)1860 30600 y Fa(16)1909
+b Fd(*)581 b(spatial)i(discretization.)g(The)f(PDE)f(system)h(is)g(a)f
+(food)h(web)f(population)1860 31928 y Fa(17)1909 b Fd(*)581
+b(model,)h(with)g(predator-prey)h(interaction)g(and)f(diffusion)g(on)g
+(the)f(unit)1860 33256 y Fa(18)1909 b Fd(*)581 b(square)h(in)g(two)g
+(dimensions.)g(The)g(dependent)g(variable)h(vector)f(is:)1860
+34585 y Fa(19)1909 b Fd(*)1860 35913 y Fa(20)g Fd(*)5231
+b(1)1743 b(2)5231 b(ns)1860 37241 y Fa(21)1909 b Fd(*)1744
+b(c)581 b(=)g(\(c)h(,)f(c)g(,)1163 b(...,)582 b(c)1162
+b(\))581 b(,)h(ns)f(=)g(2)h(*)f(np)1860 38570 y Fa(22)1909
+b Fd(*)1860 39898 y Fa(23)g Fd(*)581 b(and)h(the)g(PDE's)g(are)f(as)h
+(follows:)1860 41227 y Fa(24)1909 b Fd(*)1860 42555 y
+Fa(25)g Fd(*)2906 b(i)7555 b(i)3487 b(i)1860 43883 y
+Fa(26)1909 b Fd(*)1744 b(dc)581 b(/dt)h(=)f(d\(i\)*\(c)2326
+b(+)581 b(c)1162 b(\))h(+)f(R)582 b(\(x,y,c\))1744 b(\(i)582
+b(=)f(1,...,np\))1860 45212 y Fa(27)1909 b Fd(*)11042
+b(xx)2906 b(yy)4069 b(i)1860 46540 y Fa(28)1909 b Fd(*)1860
+47868 y Fa(29)g Fd(*)8136 b(i)3487 b(i)1860 49197 y Fa(30)1909
+b Fd(*)1744 b(0)581 b(=)g(d\(i\)*\(c)2326 b(+)581 b(c)1163
+b(\))f(+)h(R)581 b(\(x,y,c\))1744 b(\(i)582 b(=)f(np+1,...,ns\))1860
+50525 y Fa(31)1909 b Fd(*)8136 b(xx)2906 b(yy)4069 b(i)1860
+51853 y Fa(32)1909 b Fd(*)1860 53182 y Fa(33)g Fd(*)1744
+b(where)582 b(the)f(reaction)i(terms)e(R)h(are:)1860
+54510 y Fa(34)1909 b Fd(*)1860 55838 y Fa(35)g Fd(*)11042
+b(i)7555 b(ns)5231 b(j)1860 57167 y Fa(36)1909 b Fd(*)1744
+b(R)1162 b(\(x,y,c\))i(=)e(c)g(*)582 b(\(b\(i\))1163
+b(+)581 b(sum)h(a\(i,j\)*c)g(\))1860 58495 y Fa(37)1909
+b Fd(*)2325 b(i)15691 b(j=1)1860 59823 y Fa(38)1909 b
+Fd(*)1860 61152 y Fa(39)g Fd(*)581 b(The)h(number)g(of)g(species)g(is)f
+(ns)h(=)f(2)g(*)h(np,)f(with)h(the)f(first)h(np)g(being)1860
+62480 y Fa(40)1909 b Fd(*)581 b(prey)h(and)g(the)f(last)h(np)g(being)f
+(predators.)i(The)f(coefficients)h(a\(i,j\),)1860 63808
+y Fa(41)1909 b Fd(*)581 b(b\(i\),)h(d\(i\))g(are:)1860
+65137 y Fa(42)1909 b Fd(*)1860 66465 y Fa(43)g Fd(*)1163
+b(a\(i,i\))582 b(=)f(-AA)1744 b(\(all)582 b(i\))1860
+67794 y Fa(44)1909 b Fd(*)1163 b(a\(i,j\))582 b(=)f(-GG)1744
+b(\(i)581 b(<=)h(np)f(,)g(j)h(>)1162 b(np\))1860 69122
+y Fa(45)1909 b Fd(*)1163 b(a\(i,j\))582 b(=)1162 b(EE)1744
+b(\(i)581 b(>)1163 b(np,)581 b(j)h(<=)f(np\))1860 70450
+y Fa(46)1909 b Fd(*)1163 b(all)581 b(other)h(a\(i,j\))g(=)f(0)1860
+71779 y Fa(47)1909 b Fd(*)1163 b(b\(i\))581 b(=)h(BB*\(1+)g(alpha)g(*)f
+(x*y)g(+)h(beta*sin\(4)g(pi)g(x\)*sin\(4)g(pi)g(y\)\))f(\(i)h(<=)f
+(np\))1860 73107 y Fa(48)1909 b Fd(*)1163 b(b\(i\))581
+b(=-BB*\(1+)i(alpha)f(*)f(x*y)g(+)h(beta*sin\(4)g(pi)g(x\)*sin\(4)g(pi)
+g(y\)\))f(\(i)1163 b(>)581 b(np\))1860 74435 y Fa(49)1909
+b Fd(*)1163 b(d\(i\))581 b(=)h(DPREY)1744 b(\(i)581 b(<=)h(np\))1860
+75764 y Fa(50)1909 b Fd(*)1163 b(d\(i\))581 b(=)h(DPRED)1744
+b(\(i)581 b(>)h(np\))1860 77092 y Fa(51)1909 b Fd(*)1860
+78420 y Fa(52)g Fd(*)581 b(The)h(various)g(scalar)g(parameters)h
+(required)f(are)g(set)f(using)h('#define')p Black 27394
+81741 a Fp(23)p Black eop
+%%Page: 24 28
+24 27 bop Black Black -2140 7638 a Fa(53)1909 b Fd(*)581
+b(statements)i(or)f(directly)g(in)f(routine)i(InitUserData.)g(In)e
+(this)h(program,)-2140 8966 y Fa(54)1909 b Fd(*)581 b(np)h(=)f(1,)h(ns)
+f(=)g(2.)h(The)f(boundary)i(conditions)f(are)g(homogeneous)h(Neumann:)
+-2140 10295 y Fa(55)1909 b Fd(*)581 b(normal)h(derivative)h(=)e(0.)
+-2140 11623 y Fa(56)1909 b Fd(*)-2140 12951 y Fa(57)g
+Fd(*)581 b(A)h(polynomial)g(in)g(x)f(and)h(y)f(is)g(used)h(to)g(set)f
+(the)h(initial)g(values)g(of)g(the)-2140 14280 y Fa(58)1909
+b Fd(*)581 b(first)h(np)g(variables)g(\(the)g(prey)g(variables\))g(at)g
+(each)g(x,y)f(location,)-2140 15608 y Fa(59)1909 b Fd(*)581
+b(while)h(initial)h(values)f(for)f(the)h(remaining)g(\(predator\))h
+(variables)f(are)-2140 16936 y Fa(60)1909 b Fd(*)581
+b(set)h(to)f(a)h(flat)g(value,)g(which)f(is)h(corrected)g(by)g
+(IDACalcIC.)-2140 18265 y Fa(61)1909 b Fd(*)-2140 19593
+y Fa(62)g Fd(*)581 b(The)h(PDEs)g(are)f(discretized)i(by)f(central)g
+(differencing)h(on)e(a)g(MX)h(by)f(MY)-2140 20922 y Fa(63)1909
+b Fd(*)581 b(mesh.)-2140 22250 y Fa(64)1909 b Fd(*)-2140
+23578 y Fa(65)g Fd(*)581 b(The)h(DAE)g(system)g(is)f(solved)h(by)g(IDA)
+f(using)h(the)g(IDABAND)g(linear)g(solver.)-2140 24907
+y Fa(66)1909 b Fd(*)581 b(Output)h(is)g(printed)g(at)g(t)f(=)g(0,)h
+(.001,)g(.01,)f(.1,)h(.4,)f(.7,)h(1.)-2140 26235 y Fa(67)1909
+b Fd(*)581 b
+(-----------------------------------------------------------------)
+-2140 27563 y Fa(68)1909 b Fd(*)581 b(References:)-2140
+28892 y Fa(69)1909 b Fd(*)581 b([1])h(Peter)g(N.)f(Brown)h(and)g(Alan)g
+(C.)f(Hindmarsh,)-2140 30220 y Fa(70)1909 b Fd(*)2906
+b(Reduced)582 b(Storage)g(Matrix)g(Methods)h(in)e(Stiff)h(ODE)g
+(systems,)g(Journal)-2140 31548 y Fa(71)1909 b Fd(*)2906
+b(of)581 b(Applied)i(Mathematics)f(and)g(Computation,)h(Vol.)f(31)f
+(\(May)h(1989\),)-2140 32877 y Fa(72)1909 b Fd(*)2906
+b(pp.)582 b(40-91.)-2140 34205 y Fa(73)1909 b Fd(*)-2140
+35533 y Fa(74)g Fd(*)581 b([2])h(Peter)g(N.)f(Brown,)h(Alan)g(C.)g
+(Hindmarsh,)g(and)g(Linda)g(R.)f(Petzold,)-2140 36862
+y Fa(75)1909 b Fd(*)2906 b(Using)582 b(Krylov)g(Methods)g(in)g(the)f
+(Solution)i(of)e(Large-Scale)-2140 38190 y Fa(76)1909
+b Fd(*)2906 b(Differential-Algebraic)584 b(Systems,)f(SIAM)f(J.)f(Sci.)
+h(Comput.,)g(15)-2140 39518 y Fa(77)1909 b Fd(*)2906
+b(\(1994\),)582 b(pp.)g(1467-1488.)-2140 40847 y Fa(78)1909
+b Fd(*)-2140 42175 y Fa(79)g Fd(*)581 b([3])h(Peter)g(N.)f(Brown,)h
+(Alan)g(C.)g(Hindmarsh,)g(and)g(Linda)g(R.)f(Petzold,)-2140
+43504 y Fa(80)1909 b Fd(*)2906 b(Consistent)583 b(Initial)f(Condition)g
+(Calculation)h(for)f(Differential-)-2140 44832 y Fa(81)1909
+b Fd(*)2906 b(Algebraic)583 b(Systems,)f(SIAM)g(J.)f(Sci.)h(Comput.,)g
+(19)g(\(1998\),)-2140 46160 y Fa(82)1909 b Fd(*)2906
+b(pp.)582 b(1495-1512.)-2140 47489 y Fa(83)1909 b Fd(*)581
+b(-----------------------------------------------------------------)
+-2140 48817 y Fa(84)1909 b Fd(*/)-2140 50145 y Fa(85)-2140
+51474 y(86)1328 b Fd(#include)582 b(<stdio.h>)-2140 52802
+y Fa(87)1328 b Fd(#include)582 b(<stdlib.h>)-2140 54130
+y Fa(88)1328 b Fd(#include)582 b(<math.h>)-2140 55459
+y Fa(89)1328 b Fd(#include)582 b("sundialstypes.h")1746
+b(/*)582 b(Definitions)h(of)e(realtype)h(and)g(booleantype)4070
+b(*/)-2140 56787 y Fa(90)1328 b Fd(#include)582 b("ida.h")7556
+b(/*)582 b(Main)g(header)g(file)17435 b(*/)-2140 58115
+y Fa(91)1328 b Fd(#include)582 b("idaband.h")5232 b(/*)582
+b(Use)f(IDABAND)i(linear)f(solver)12205 b(*/)-2140 59444
+y Fa(92)1328 b Fd(#include)582 b("nvector_serial.h")1165
+b(/*)582 b(Definitions)h(of)e(type)h(N_Vector,)g(macro)g(NV_DATA_S)h
+(*/)-2140 60772 y Fa(93)1328 b Fd(#include)582 b("smalldense.h")3489
+b(/*)582 b(Contains)g(definitions)h(for)e(denalloc)i(routine)2907
+b(*/)-2140 62100 y Fa(94)-2140 63429 y(95)1328 b Fd(/*)581
+b(Problem)i(Constants.)f(*/)-2140 64757 y Fa(96)-2140
+66086 y(97)1328 b Fd(#define)582 b(NPREY)4069 b(1)8136
+b(/*)582 b(No.)f(of)h(prey)f(\(=)h(no.)f(of)h(predators\).)h(*/)-2140
+67414 y Fa(98)1328 b Fd(#define)582 b(NUM_SPECIES)h(2*NPREY)-2140
+68742 y Fa(99)-2546 70071 y(100)1328 b Fd(#define)582
+b(PI)5812 b(RCONST\(3.1415926535898\))-2546 71399 y Fa(101)1328
+b Fd(#define)582 b(FOURPI)3488 b(\(RCONST\(4.0\)*PI\))-2546
+72727 y Fa(102)-2546 74056 y(103)1328 b Fd(#define)582
+b(MX)5812 b(20)7555 b(/*)582 b(MX)f(=)g(number)h(of)g(x)f(mesh)h
+(points)3488 b(*/)-2546 75384 y Fa(104)1328 b Fd(#define)582
+b(MY)5812 b(20)7555 b(/*)582 b(MY)f(=)g(number)h(of)g(y)f(mesh)h
+(points)3488 b(*/)-2546 76712 y Fa(105)1328 b Fd(#define)582
+b(NSMX)4650 b(\(NUM_SPECIES)583 b(*)e(MX\))-2546 78041
+y Fa(106)1328 b Fd(#define)582 b(NEQ)5231 b(\(NUM_SPECIES*MX*MY\))p
+Black 23394 81741 a Fp(24)p Black eop
+%%Page: 25 29
+25 28 bop Black Black 1454 7638 a Fa(107)1328 b Fd(#define)582
+b(AA)5812 b(RCONST\(1.0\))2326 b(/*)582 b(Coefficient)g(in)g(above)g
+(eqns.)g(for)f(a)1163 b(*/)1454 8966 y Fa(108)1328 b
+Fd(#define)582 b(EE)5812 b(RCONST\(10000.\))583 b(/*)f(Coefficient)g
+(in)g(above)g(eqns.)g(for)f(a)1163 b(*/)1454 10295 y
+Fa(109)1328 b Fd(#define)582 b(GG)5812 b(RCONST\(0.5e-6\))583
+b(/*)f(Coefficient)g(in)g(above)g(eqns.)g(for)f(a)1163
+b(*/)1454 11623 y Fa(110)1328 b Fd(#define)582 b(BB)5812
+b(RCONST\(1.0\))2326 b(/*)582 b(Coefficient)g(in)g(above)g(eqns.)g(for)
+f(b)1163 b(*/)1454 12951 y Fa(111)1328 b Fd(#define)582
+b(DPREY)4069 b(RCONST\(1.0\))2326 b(/*)582 b(Coefficient)g(in)g(above)g
+(eqns.)g(for)f(d)1163 b(*/)1454 14280 y Fa(112)1328 b
+Fd(#define)582 b(DPRED)4069 b(RCONST\(0.05\))1745 b(/*)582
+b(Coefficient)g(in)g(above)g(eqns.)g(for)f(d)1163 b(*/)1454
+15608 y Fa(113)1328 b Fd(#define)582 b(ALPHA)4069 b(RCONST\(50.\))2326
+b(/*)582 b(Coefficient)g(alpha)g(in)g(above)g(eqns.)1163
+b(*/)1454 16936 y Fa(114)1328 b Fd(#define)582 b(BETA)4650
+b(RCONST\(1000.\))1164 b(/*)582 b(Coefficient)g(beta)g(in)g(above)g
+(eqns.)1744 b(*/)1454 18265 y Fa(115)1328 b Fd(#define)582
+b(AX)5812 b(RCONST\(1.0\))2326 b(/*)582 b(Total)g(range)f(of)h(x)f
+(variable)5232 b(*/)1454 19593 y Fa(116)1328 b Fd(#define)582
+b(AY)5812 b(RCONST\(1.0\))2326 b(/*)582 b(Total)g(range)f(of)h(y)f
+(variable)5232 b(*/)1454 20922 y Fa(117)1328 b Fd(#define)582
+b(RTOL)4650 b(RCONST\(1.e-5\))1164 b(/*)582 b(Relative)g(tolerance)9300
+b(*/)1454 22250 y Fa(118)1328 b Fd(#define)582 b(ATOL)4650
+b(RCONST\(1.e-5\))1164 b(/*)582 b(Absolute)g(tolerance)9300
+b(*/)1454 23578 y Fa(119)1328 b Fd(#define)582 b(NOUT)4650
+b(6)8136 b(/*)582 b(Number)g(of)f(output)h(times)6975
+b(*/)1454 24907 y Fa(120)1328 b Fd(#define)582 b(TMULT)4069
+b(RCONST\(10.0\))1745 b(/*)582 b(Multiplier)g(for)g(tout)g(values)4650
+b(*/)1454 26235 y Fa(121)1328 b Fd(#define)582 b(TADD)4650
+b(RCONST\(0.3\))2326 b(/*)582 b(Increment)g(for)g(tout)f(values)5232
+b(*/)1454 27563 y Fa(122)1328 b Fd(#define)582 b(ZERO)4650
+b(RCONST\(0.\))1454 28892 y Fa(123)1328 b Fd(#define)582
+b(ONE)5231 b(RCONST\(1.0\))1454 30220 y Fa(124)1454 31548
+y(125)1328 b Fd(/*)1454 32877 y Fa(126)1909 b Fd(*)581
+b(User-defined)i(vector)f(and)g(accessor)g(macro:)g(IJ_Vptr.)1454
+34205 y Fa(127)1909 b Fd(*)581 b(IJ_Vptr)i(is)e(defined)h(in)g(order)g
+(to)f(express)h(the)g(underlying)g(3-D)g(structure)h(of)1454
+35533 y Fa(128)1909 b Fd(*)581 b(the)h(dependent)h(variable)f(vector)g
+(from)g(its)f(underlying)i(1-D)e(storage)i(\(an)e(N_Vector\).)1454
+36862 y Fa(129)1909 b Fd(*)581 b(IJ_Vptr\(vv,i,j\))j(returns)e(a)f
+(pointer)i(to)e(the)h(location)g(in)f(vv)h(corresponding)h(to)1454
+38190 y Fa(130)1909 b Fd(*)581 b(species)i(index)f(is)f(=)g(0,)h
+(x-index)g(ix)f(=)h(i,)f(and)h(y-index)g(jy)f(=)h(j.)1454
+39518 y Fa(131)1909 b Fd(*/)1454 40847 y Fa(132)1454
+42175 y(133)1328 b Fd(#define)582 b(IJ_Vptr\(vv,i,j\))i
+(\(&NV_Ith_S\(vv,)f(\(i\)*NUM_SPECIES)g(+)e(\(j\)*NSMX\)\))1454
+43504 y Fa(134)1454 44832 y(135)1328 b Fd(/*)581 b(Type:)h(UserData.)
+1164 b(Contains)582 b(problem)h(constants,)f(etc.)g(*/)1454
+46160 y Fa(136)1454 47489 y(137)1328 b Fd(typedef)582
+b(struct)g({)1454 48817 y Fa(138)2490 b Fd(long)582 b(int)g(Neq,)f(ns,)
+h(np,)g(mx,)f(my;)1454 50145 y Fa(139)2490 b Fd(realtype)583
+b(dx,)e(dy,)h(**acoef;)1454 51474 y Fa(140)2490 b Fd(realtype)583
+b(cox[NUM_SPECIES],)g(coy[NUM_SPECIES],)h(bcoef[NUM_SPECIES];)1454
+52802 y Fa(141)2490 b Fd(N_Vector)583 b(rates;)1454 54130
+y Fa(142)1328 b Fd(})581 b(*UserData;)1454 55459 y Fa(143)1454
+56787 y(144)1328 b Fd(/*)581 b(Prototypes)i(for)f(functions)g(called)g
+(by)g(the)f(IDA)h(Solver.)g(*/)1454 58115 y Fa(145)1454
+59444 y(146)1328 b Fd(static)582 b(int)g(resweb\(realtype)h(time,)f
+(N_Vector)g(cc,)g(N_Vector)g(cp,)g(N_Vector)g(resval,)1454
+60772 y Fa(147)11789 b Fd(void)581 b(*rdata\);)1454 62100
+y Fa(148)1454 63429 y(149)1328 b Fd(/*)581 b(Prototypes)i(for)f
+(private)g(Helper)g(Functions.)h(*/)1454 64757 y Fa(150)1454
+66086 y(151)1328 b Fd(static)582 b(void)g(InitUserData\(UserData)i
+(webdata\);)1454 67414 y Fa(152)1328 b Fd(static)582
+b(void)g(SetInitialProfiles\(N_Vector)j(cc,)d(N_Vector)g(cp,)f
+(N_Vector)i(id,)1454 68742 y Fa(153)19344 b Fd(UserData)582
+b(webdata\);)1454 70071 y Fa(154)1328 b Fd(static)582
+b(void)g(PrintHeader\(long)h(int)f(mu,)g(long)f(int)h(ml,)f(realtype)i
+(rtol,)f(realtype)g(atol\);)1454 71399 y Fa(155)1328
+b Fd(static)582 b(void)g(PrintOutput\(void)h(*mem,)f(N_Vector)h(c,)e
+(realtype)h(t\);)1454 72727 y Fa(156)1328 b Fd(static)582
+b(void)g(PrintFinalStats\(void)i(*mem\);)1454 74056 y
+Fa(157)1328 b Fd(static)582 b(void)g(Fweb\(realtype)h(tcalc,)f
+(N_Vector)g(cc,)g(N_Vector)g(crate,)g(UserData)h(webdata\);)1454
+75384 y Fa(158)1328 b Fd(static)582 b(void)g(WebRates\(realtype)h(xx,)f
+(realtype)g(yy,)g(realtype)g(*cxy,)g(realtype)h(*ratesxy,)1454
+76712 y Fa(159)13532 b Fd(UserData)582 b(webdata\);)1454
+78041 y Fa(160)1328 b Fd(static)582 b(realtype)g(dotprod\(long)h(int)f
+(size,)g(realtype)g(*x1,)g(realtype)g(*x2\);)p Black
+27394 81741 a Fp(25)p Black eop
+%%Page: 26 30
+26 29 bop Black Black -2546 7638 a Fa(161)1328 b Fd(static)582
+b(int)g(check_flag\(void)h(*flagvalue,)g(char)f(*funcname,)g(int)g
+(opt\);)-2546 8966 y Fa(162)-2546 10295 y(163)1328 b
+Fd(/*)-2546 11623 y Fa(164)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)-2546 12951 y Fa(165)g Fd(*)581 b(MAIN)h(PROGRAM)-2546
+14280 y Fa(166)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)-2546 15608 y Fa(167)g Fd(*/)-2546 16936 y Fa(168)-2546
+18265 y(169)1328 b Fd(int)582 b(main\(\))-2546 19593
+y Fa(170)1328 b Fd({)-2546 20922 y Fa(171)2490 b Fd(void)582
+b(*mem;)-2546 22250 y Fa(172)2490 b Fd(UserData)583 b(webdata;)-2546
+23578 y Fa(173)2490 b Fd(N_Vector)583 b(cc,)e(cp,)h(id;)-2546
+24907 y Fa(174)2490 b Fd(int)582 b(iout,)g(retval;)-2546
+26235 y Fa(175)2490 b Fd(long)582 b(int)g(mu,)f(ml;)-2546
+27563 y Fa(176)2490 b Fd(realtype)583 b(rtol,)f(atol,)f(t0,)h(tout,)g
+(tret;)-2546 28892 y Fa(177)-2546 30220 y(178)2490 b
+Fd(mem)582 b(=)f(NULL;)-2546 31548 y Fa(179)2490 b Fd(webdata)582
+b(=)g(NULL;)-2546 32877 y Fa(180)2490 b Fd(cc)582 b(=)f(cp)g(=)h(id)f
+(=)h(NULL;)-2546 34205 y Fa(181)-2546 35533 y(182)2490
+b Fd(/*)582 b(Allocate)g(and)g(initialize)g(user)g(data)g(block)g
+(webdata.)g(*/)-2546 36862 y Fa(183)-2546 38190 y(184)2490
+b Fd(webdata)582 b(=)g(\(UserData\))g(malloc\(sizeof)i(*webdata\);)
+-2546 39518 y Fa(185)2490 b Fd(webdata->rates)584 b(=)d
+(N_VNew_Serial\(NEQ\);)-2546 40847 y Fa(186)2490 b Fd(webdata->acoef)
+584 b(=)d(denalloc\(NUM_SPECIES\);)-2546 42175 y Fa(187)-2546
+43504 y(188)2490 b Fd(InitUserData\(webdata\);)-2546
+44832 y Fa(189)-2546 46160 y(190)g Fd(/*)582 b(Allocate)g(N-vectors)h
+(and)e(initialize)i(cc,)e(cp,)h(and)g(id.)f(*/)-2546
+47489 y Fa(191)-2546 48817 y(192)2490 b Fd(cc)1163 b(=)581
+b(N_VNew_Serial\(NEQ\);)-2546 50145 y Fa(193)2490 b Fd
+(if\(check_flag\(\(void)584 b(*\)cc,)e("N_VNew_Serial",)i(0\)\))d
+(return\(1\);)-2546 51474 y Fa(194)-2546 52802 y(195)2490
+b Fd(cp)1163 b(=)581 b(N_VNew_Serial\(NEQ\);)-2546 54130
+y Fa(196)2490 b Fd(if\(check_flag\(\(void)584 b(*\)cp,)e
+("N_VNew_Serial",)i(0\)\))d(return\(1\);)-2546 55459
+y Fa(197)-2546 56787 y(198)2490 b Fd(id)1163 b(=)581
+b(N_VNew_Serial\(NEQ\);)-2546 58115 y Fa(199)2490 b Fd
+(if\(check_flag\(\(void)584 b(*\)id,)e("N_VNew_Serial",)i(0\)\))d
+(return\(1\);)-2546 59444 y Fa(200)-2546 60772 y(201)2490
+b Fd(SetInitialProfiles\(cc,)585 b(cp,)c(id,)h(webdata\);)-2546
+62100 y Fa(202)-2546 63429 y(203)2490 b Fd(/*)582 b(Set)f(remaining)i
+(inputs)f(to)f(IDAMalloc.)i(*/)-2546 64757 y Fa(204)-2546
+66086 y(205)2490 b Fd(t0)582 b(=)f(ZERO;)-2546 67414
+y Fa(206)2490 b Fd(rtol)582 b(=)f(RTOL;)-2546 68742 y
+Fa(207)2490 b Fd(atol)582 b(=)f(ATOL;)-2546 70071 y Fa(208)-2546
+71399 y(209)2490 b Fd(/*)582 b(Call)f(IDACreate)i(and)f(IDAMalloc)g(to)
+g(initialize)g(IDA.)g(*/)-2546 72727 y Fa(210)-2546 74056
+y(211)2490 b Fd(mem)582 b(=)f(IDACreate\(\);)-2546 75384
+y Fa(212)2490 b Fd(if\(check_flag\(\(void)584 b(*\)mem,)e("IDACreate",)
+h(0\)\))f(return\(1\);)-2546 76712 y Fa(213)-2546 78041
+y(214)2490 b Fd(retval)582 b(=)g(IDASetRdata\(mem,)h(webdata\);)p
+Black 23394 81741 a Fp(26)p Black eop
+%%Page: 27 31
+27 30 bop Black Black 1454 7638 a Fa(215)2490 b Fd
+(if\(check_flag\(&retval,)585 b("IDASetRdata",)e(1\)\))f(return\(1\);)
+1454 8966 y Fa(216)1454 10295 y(217)2490 b Fd(retval)582
+b(=)g(IDASetId\(mem,)h(id\);)1454 11623 y Fa(218)2490
+b Fd(if\(check_flag\(&retval,)585 b("IDASetId",)e(1\)\))e(return\(1\);)
+1454 12951 y Fa(219)1454 14280 y(220)2490 b Fd(retval)582
+b(=)g(IDAMalloc\(mem,)h(resweb,)f(t0,)g(cc,)f(cp,)h(IDA_SS,)g(rtol,)g
+(&atol\);)1454 15608 y Fa(221)2490 b Fd(if\(check_flag\(&retval,)585
+b("IDAMalloc",)e(1\)\))e(return\(1\);)1454 16936 y Fa(222)1454
+18265 y(223)2490 b Fd(/*)582 b(Call)f(IDABand)i(to)e(specify)h(the)g
+(IDA)g(linear)g(solver.)g(*/)1454 19593 y Fa(224)1454
+20922 y(225)2490 b Fd(mu)582 b(=)f(ml)g(=)h(NSMX;)1454
+22250 y Fa(226)2490 b Fd(retval)582 b(=)g(IDABand\(mem,)h(NEQ,)e(mu,)h
+(ml\);)1454 23578 y Fa(227)2490 b Fd(if\(check_flag\(&retval,)585
+b("IDABand",)d(1\)\))g(return\(1\);)1454 24907 y Fa(228)1454
+26235 y(229)2490 b Fd(/*)582 b(Call)f(IDACalcIC)i(\(with)f(default)g
+(options\))g(to)g(correct)g(the)g(initial)g(values.)g(*/)1454
+27563 y Fa(230)1454 28892 y(231)2490 b Fd(tout)582 b(=)f
+(RCONST\(0.001\);)1454 30220 y Fa(232)2490 b Fd(retval)582
+b(=)g(IDACalcIC\(mem,)h(t0,)e(cc,)h(cp,)g(IDA_YA_YDP_INIT,)h(tout\);)
+1454 31548 y Fa(233)2490 b Fd(if\(check_flag\(&retval,)585
+b("IDACalcIC",)e(1\)\))e(return\(1\);)1454 32877 y Fa(234)1454
+34205 y(235)2490 b Fd(/*)582 b(Print)g(heading,)g(basic)g(parameters,)h
+(and)e(initial)h(values.)h(*/)1454 35533 y Fa(236)1454
+36862 y(237)2490 b Fd(PrintHeader\(mu,)584 b(ml,)d(rtol,)h(atol\);)1454
+38190 y Fa(238)2490 b Fd(PrintOutput\(mem,)584 b(cc,)d(ZERO\);)1454
+39518 y Fa(239)1454 40847 y(240)2490 b Fd(/*)582 b(Loop)f(over)h(iout,)
+g(call)g(IDASolve)g(\(normal)g(mode\),)g(print)g(selected)h(output.)f
+(*/)1454 42175 y Fa(241)1454 43504 y(242)2490 b Fd(for)582
+b(\(iout)g(=)f(1;)h(iout)f(<=)h(NOUT;)g(iout++\))g({)1454
+44832 y Fa(243)1454 46160 y(244)3653 b Fd(retval)582
+b(=)f(IDASolve\(mem,)i(tout,)f(&tret,)g(cc,)g(cp,)f(IDA_NORMAL\);)1454
+47489 y Fa(245)3653 b Fd(if\(check_flag\(&retval,)584
+b("IDASolve",)f(1\)\))e(return\(retval\);)1454 48817
+y Fa(246)1454 50145 y(247)3653 b Fd(PrintOutput\(mem,)583
+b(cc,)f(tret\);)1454 51474 y Fa(248)1454 52802 y(249)3653
+b Fd(if)581 b(\(iout)h(<)f(3\))h(tout)f(*=)h(TMULT;)g(else)g(tout)f(+=)
+h(TADD;)1454 54130 y Fa(250)1454 55459 y(251)2490 b Fd(})1454
+56787 y Fa(252)1454 58115 y(253)g Fd(/*)582 b(Print)g(final)g
+(statistics)g(and)g(free)g(memory.)g(*/)1454 59444 y
+Fa(254)1454 60772 y(255)2490 b Fd(PrintFinalStats\(mem\);)1454
+62100 y Fa(256)1454 63429 y(257)g Fd(/*)582 b(Free)f(memory)i(*/)1454
+64757 y Fa(258)1454 66086 y(259)2490 b Fd(IDAFree\(mem\);)1454
+67414 y Fa(260)1454 68742 y(261)g Fd(N_VDestroy_Serial\(cc\);)1454
+70071 y Fa(262)g Fd(N_VDestroy_Serial\(cp\);)1454 71399
+y Fa(263)g Fd(N_VDestroy_Serial\(id\);)1454 72727 y Fa(264)1454
+74056 y(265)1454 75384 y(266)g Fd(denfree\(webdata->acoef\);)1454
+76712 y Fa(267)g Fd(N_VDestroy_Serial\(webdata->rates\);)1454
+78041 y Fa(268)g Fd(free\(webdata\);)p Black 27394 81741
+a Fp(27)p Black eop
+%%Page: 28 32
+28 31 bop Black Black -2546 7638 a Fa(269)-2546 8966
+y(270)2490 b Fd(return\(0\);)-2546 10295 y Fa(271)1328
+b Fd(})-2546 11623 y Fa(272)-2546 12951 y(273)g Fd(/*)581
+b(Define)h(lines)g(for)g(readability)h(in)e(later)h(routines)g(*/)-2546
+14280 y Fa(274)-2546 15608 y(275)1328 b Fd(#define)582
+b(acoef)1163 b(\(webdata->acoef\))-2546 16936 y Fa(276)1328
+b Fd(#define)582 b(bcoef)1163 b(\(webdata->bcoef\))-2546
+18265 y Fa(277)1328 b Fd(#define)582 b(cox)2325 b(\(webdata->cox\))
+-2546 19593 y Fa(278)1328 b Fd(#define)582 b(coy)2325
+b(\(webdata->coy\))-2546 20922 y Fa(279)-2546 22250 y(280)1328
+b Fd(/*)-2546 23578 y Fa(281)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)-2546 24907 y Fa(282)g Fd(*)581 b(FUNCTIONS)i(CALLED)f(BY)f(IDA)
+-2546 26235 y Fa(283)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)-2546 27563 y Fa(284)g Fd(*/)-2546 28892 y Fa(285)-2546
+30220 y(286)1328 b Fd(/*)-2546 31548 y Fa(287)1909 b
+Fd(*)581 b(resweb:)i(System)f(residual)g(function)g(for)g
+(predator-prey)h(system.)-2546 32877 y Fa(288)1909 b
+Fd(*)581 b(This)h(routine)g(calls)g(Fweb)g(to)f(get)h(all)g(the)f
+(right-hand)i(sides)f(of)f(the)-2546 34205 y Fa(289)1909
+b Fd(*)581 b(equations,)i(then)f(loads)g(the)f(residual)i(vector)f
+(accordingly,)-2546 35533 y Fa(290)1909 b Fd(*)581 b(using)h(cp)g(in)f
+(the)h(case)g(of)f(prey)h(species.)-2546 36862 y Fa(291)1909
+b Fd(*/)-2546 38190 y Fa(292)-2546 39518 y(293)1328 b
+Fd(static)582 b(int)g(resweb\(realtype)h(tt,)f(N_Vector)g(cc,)g
+(N_Vector)g(cp,)-2546 40847 y Fa(294)11789 b Fd(N_Vector)582
+b(res,)1163 b(void)582 b(*rdata\))-2546 42175 y Fa(295)1328
+b Fd({)-2546 43504 y Fa(296)2490 b Fd(long)582 b(int)g(jx,)f(jy,)h(is,)
+f(yloc,)h(loc,)g(np;)-2546 44832 y Fa(297)2490 b Fd(realtype)583
+b(*resv,)f(*cpv;)-2546 46160 y Fa(298)2490 b Fd(UserData)583
+b(webdata;)-2546 47489 y Fa(299)-2546 48817 y(300)2490
+b Fd(webdata)582 b(=)g(\(UserData\)rdata;)-2546 50145
+y Fa(301)-2546 51474 y(302)2490 b Fd(cpv)582 b(=)f(NV_DATA_S\(cp\);)
+-2546 52802 y Fa(303)2490 b Fd(resv)582 b(=)f(NV_DATA_S\(res\);)-2546
+54130 y Fa(304)2490 b Fd(np)582 b(=)f(webdata->np;)-2546
+55459 y Fa(305)-2546 56787 y(306)2490 b Fd(/*)582 b(Call)f(Fweb)h(to)g
+(set)f(res)h(to)f(vector)h(of)g(right-hand)g(sides.)g(*/)-2546
+58115 y Fa(307)2490 b Fd(Fweb\(tt,)583 b(cc,)e(res,)h(webdata\);)-2546
+59444 y Fa(308)-2546 60772 y(309)2490 b Fd(/*)582 b(Loop)f(over)h(all)g
+(grid)g(points,)g(setting)g(residual)g(values)g(appropriately)-2546
+62100 y Fa(310)4234 b Fd(for)581 b(differential)i(or)f(algebraic)g
+(components.)13949 b(*/)-2546 63429 y Fa(311)-2546 64757
+y(312)2490 b Fd(for)582 b(\(jy)f(=)h(0;)f(jy)h(<)f(MY;)h(jy++\))f({)
+-2546 66086 y Fa(313)3653 b Fd(yloc)581 b(=)h(NSMX)f(*)h(jy;)-2546
+67414 y Fa(314)3653 b Fd(for)581 b(\(jx)h(=)f(0;)h(jx)f(<)g(MX;)h
+(jx++\))g({)-2546 68742 y Fa(315)4815 b Fd(loc)581 b(=)h(yloc)g(+)f
+(NUM_SPECIES)i(*)e(jx;)-2546 70071 y Fa(316)4815 b Fd(for)581
+b(\(is)h(=)f(0;)h(is)f(<)h(NUM_SPECIES;)h(is++\))e({)-2546
+71399 y Fa(317)5977 b Fd(if)582 b(\(is)f(<)h(np\))-2546
+72727 y Fa(318)7139 b Fd(resv[loc+is])583 b(=)f(cpv[loc+is])h(-)e
+(resv[loc+is];)-2546 74056 y Fa(319)5977 b Fd(else)-2546
+75384 y Fa(320)7139 b Fd(resv[loc+is])583 b(=)f(-resv[loc+is];)-2546
+76712 y Fa(321)4815 b Fd(})-2546 78041 y Fa(322)3653
+b Fd(})p Black 23394 81741 a Fp(28)p Black eop
+%%Page: 29 33
+29 32 bop Black Black 1454 7638 a Fa(323)2490 b Fd(})1454
+8966 y Fa(324)1454 10295 y(325)g Fd(return\(0\);)1454
+11623 y Fa(326)1454 12951 y(327)1328 b Fd(})1454 14280
+y Fa(328)1454 15608 y(329)g Fd(/*)1454 16936 y Fa(330)1909
+b Fd
+(*------------------------------------------------------------------)p
+(--)1454 18265 y Fa(331)g Fd(*)581 b(PRIVATE)i(FUNCTIONS)1454
+19593 y Fa(332)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1454 20922 y Fa(333)g Fd(*/)1454 22250 y Fa(334)1454
+23578 y(335)1328 b Fd(/*)1454 24907 y Fa(336)1909 b Fd(*)581
+b(InitUserData:)j(Load)d(problem)h(constants)h(in)e(webdata)i(\(of)e
+(type)h(UserData\).)1454 26235 y Fa(337)1909 b Fd(*/)1454
+27563 y Fa(338)1454 28892 y(339)1328 b Fd(static)582
+b(void)g(InitUserData\(UserData)i(webdata\))1454 30220
+y Fa(340)1328 b Fd({)1454 31548 y Fa(341)2490 b Fd(int)582
+b(i,)f(j,)h(np;)1454 32877 y Fa(342)2490 b Fd(realtype)583
+b(*a1,*a2,)f(*a3,)g(*a4,)f(dx2,)h(dy2;)1454 34205 y Fa(343)1454
+35533 y(344)2490 b Fd(webdata->mx)583 b(=)e(MX;)1454
+36862 y Fa(345)2490 b Fd(webdata->my)583 b(=)e(MY;)1454
+38190 y Fa(346)2490 b Fd(webdata->ns)583 b(=)e(NUM_SPECIES;)1454
+39518 y Fa(347)2490 b Fd(webdata->np)583 b(=)e(NPREY;)1454
+40847 y Fa(348)2490 b Fd(webdata->dx)583 b(=)e(AX/\(MX-1\);)1454
+42175 y Fa(349)2490 b Fd(webdata->dy)583 b(=)e(AY/\(MY-1\);)1454
+43504 y Fa(350)2490 b Fd(webdata->Neq=)583 b(NEQ;)1454
+44832 y Fa(351)1454 46160 y(352)2490 b Fd(/*)582 b(Set)f(up)h(the)f
+(coefficients)i(a)f(and)f(b,)h(and)f(others)h(found)g(in)g(the)f
+(equations.)i(*/)1454 47489 y Fa(353)2490 b Fd(np)582
+b(=)f(webdata->np;)1454 48817 y Fa(354)2490 b Fd(dx2)582
+b(=)f(\(webdata->dx\)*\(webdata->dx\);)586 b(dy2)581
+b(=)g(\(webdata->dy\)*\(webdata->dy\);)1454 50145 y Fa(355)1454
+51474 y(356)2490 b Fd(for)582 b(\(i)f(=)h(0;)f(i)g(<)h(np;)f(i++\))h({)
+1454 52802 y Fa(357)3653 b Fd(a1)581 b(=)g(&\(acoef[i][np]\);)1454
+54130 y Fa(358)3653 b Fd(a2)581 b(=)g(&\(acoef[i+np][0]\);)1454
+55459 y Fa(359)3653 b Fd(a3)581 b(=)g(&\(acoef[i][0]\);)1454
+56787 y Fa(360)3653 b Fd(a4)581 b(=)g(&\(acoef[i+np][np]\);)1454
+58115 y Fa(361)3653 b Fd(/*)1162 b(Fill)582 b(in)f(the)h(portion)g(of)g
+(acoef)g(in)f(the)h(four)f(quadrants,)i(row)f(by)f(row.)h(*/)1454
+59444 y Fa(362)3653 b Fd(for)581 b(\(j)h(=)f(0;)g(j)h(<)f(np;)h(j++\))f
+({)1454 60772 y Fa(363)4815 b Fd(*a1++)582 b(=)1162 b(-GG;)1454
+62100 y Fa(364)4815 b Fd(*a2++)582 b(=)1743 b(EE;)1454
+63429 y Fa(365)4815 b Fd(*a3++)582 b(=)f(ZERO;)1454 64757
+y Fa(366)4815 b Fd(*a4++)582 b(=)f(ZERO;)1454 66086 y
+Fa(367)3653 b Fd(})1454 67414 y Fa(368)1454 68742 y(369)g
+Fd(/*)581 b(Reset)h(the)g(diagonal)g(elements)g(of)g(acoef)g(to)f(-AA.)
+h(*/)1454 70071 y Fa(370)3653 b Fd(acoef[i][i])582 b(=)g(-AA;)f
+(acoef[i+np][i+np])j(=)d(-AA;)1454 71399 y Fa(371)1454
+72727 y(372)3653 b Fd(/*)581 b(Set)h(coefficients)h(for)e(b)g(and)h
+(diffusion)h(terms.)f(*/)1454 74056 y Fa(373)3653 b Fd(bcoef[i])582
+b(=)f(BB;)h(bcoef[i+np])h(=)e(-BB;)1454 75384 y Fa(374)3653
+b Fd(cox[i])582 b(=)f(DPREY/dx2;)i(cox[i+np])f(=)f(DPRED/dx2;)1454
+76712 y Fa(375)3653 b Fd(coy[i])582 b(=)f(DPREY/dy2;)i(coy[i+np])f(=)f
+(DPRED/dy2;)1454 78041 y Fa(376)2490 b Fd(})p Black 27394
+81741 a Fp(29)p Black eop
+%%Page: 30 34
+30 33 bop Black Black -2546 7638 a Fa(377)-2546 8966
+y(378)1328 b Fd(})-2546 10295 y Fa(379)-2546 11623 y(380)g
+Fd(/*)-2546 12951 y Fa(381)1909 b Fd(*)581 b(SetInitialProfiles:)j(Set)
+e(initial)g(conditions)h(in)e(cc,)h(cp,)f(and)h(id.)-2546
+14280 y Fa(382)1909 b Fd(*)581 b(A)h(polynomial)g(profile)h(is)e(used)h
+(for)f(the)h(prey)g(cc)f(values,)h(and)g(a)f(constant)-2546
+15608 y Fa(383)1909 b Fd(*)581 b(\(1.0e5\))i(is)e(loaded)h(as)g(the)f
+(initial)h(guess)g(for)g(the)f(predator)i(cc)e(values.)-2546
+16936 y Fa(384)1909 b Fd(*)581 b(The)h(id)f(values)i(are)e(set)h(to)f
+(1)g(for)h(the)g(prey)f(and)h(0)f(for)h(the)f(predators.)-2546
+18265 y Fa(385)1909 b Fd(*)581 b(The)h(prey)g(cp)f(values)h(are)g(set)f
+(according)i(to)e(the)h(given)g(system,)g(and)-2546 19593
+y Fa(386)1909 b Fd(*)581 b(the)h(predator)g(cp)g(values)g(are)f(set)h
+(to)g(zero.)-2546 20922 y Fa(387)1909 b Fd(*/)-2546 22250
+y Fa(388)-2546 23578 y(389)1328 b Fd(static)582 b(void)g
+(SetInitialProfiles\(N_Vector)j(cc,)d(N_Vector)g(cp,)f(N_Vector)i(id,)
+-2546 24907 y Fa(390)19344 b Fd(UserData)582 b(webdata\))-2546
+26235 y Fa(391)1328 b Fd({)-2546 27563 y Fa(392)2490
+b Fd(long)582 b(int)g(loc,)f(yloc,)h(is,)g(jx,)f(jy,)h(np;)-2546
+28892 y Fa(393)2490 b Fd(realtype)583 b(xx,)e(yy,)h(xyfactor,)g(fac;)
+-2546 30220 y Fa(394)2490 b Fd(realtype)583 b(*ccv,)f(*cpv,)f(*idv;)
+-2546 31548 y Fa(395)-2546 32877 y(396)2490 b Fd(ccv)582
+b(=)f(NV_DATA_S\(cc\);)-2546 34205 y Fa(397)2490 b Fd(cpv)582
+b(=)f(NV_DATA_S\(cp\);)-2546 35533 y Fa(398)2490 b Fd(idv)582
+b(=)f(NV_DATA_S\(id\);)-2546 36862 y Fa(399)2490 b Fd(np)582
+b(=)f(webdata->np;)-2546 38190 y Fa(400)-2546 39518 y(401)2490
+b Fd(/*)582 b(Loop)f(over)h(grid,)g(load)g(cc)f(values)h(and)g(id)f
+(values.)i(*/)-2546 40847 y Fa(402)2490 b Fd(for)582
+b(\(jy)f(=)h(0;)f(jy)h(<)f(MY;)h(jy++\))f({)-2546 42175
+y Fa(403)3653 b Fd(yy)581 b(=)g(jy)h(*)f(webdata->dy;)-2546
+43504 y Fa(404)3653 b Fd(yloc)581 b(=)h(NSMX)f(*)h(jy;)-2546
+44832 y Fa(405)3653 b Fd(for)581 b(\(jx)h(=)f(0;)h(jx)f(<)g(MX;)h
+(jx++\))g({)-2546 46160 y Fa(406)4815 b Fd(xx)581 b(=)h(jx)f(*)g
+(webdata->dx;)-2546 47489 y Fa(407)4815 b Fd(xyfactor)582
+b(=)g(RCONST\(16.0\)*xx*\(ONE-xx\)*yy*\(ONE-yy\);)-2546
+48817 y Fa(408)4815 b Fd(xyfactor)582 b(*=)g(xyfactor;)-2546
+50145 y Fa(409)4815 b Fd(loc)581 b(=)h(yloc)g(+)f(NUM_SPECIES*jx;)-2546
+51474 y Fa(410)4815 b Fd(fac)581 b(=)h(ONE)f(+)h(ALPHA)g(*)f(xx)g(*)h
+(yy)f(+)g(BETA)h(*)f(sin\(FOURPI*xx\))j(*)d(sin\(FOURPI*yy\);)-2546
+52802 y Fa(411)-2546 54130 y(412)4815 b Fd(for)581 b(\(is)h(=)f(0;)h
+(is)f(<)h(NUM_SPECIES;)h(is++\))e({)-2546 55459 y Fa(413)5977
+b Fd(if)582 b(\(is)f(<)h(np\))f({)-2546 56787 y Fa(414)8302
+b Fd(ccv[loc+is])583 b(=)e(RCONST\(10.0\))i(+)e(\(realtype\)\(is+1\))j
+(*)d(xyfactor;)-2546 58115 y Fa(415)7139 b Fd(idv[loc+is])583
+b(=)f(ONE;)-2546 59444 y Fa(416)5977 b Fd(})-2546 60772
+y Fa(417)g Fd(else)582 b({)-2546 62100 y Fa(418)7139
+b Fd(ccv[loc+is])583 b(=)f(RCONST\(1.0e5\);)-2546 63429
+y Fa(419)7139 b Fd(idv[loc+is])583 b(=)f(ZERO;)-2546
+64757 y Fa(420)5977 b Fd(})-2546 66086 y Fa(421)4815
+b Fd(})-2546 67414 y Fa(422)3653 b Fd(})-2546 68742 y
+Fa(423)2490 b Fd(})-2546 70071 y Fa(424)-2546 71399 y(425)g
+Fd(/*)582 b(Set)f(c')h(for)f(the)h(prey)g(by)f(calling)h(the)g
+(function)g(Fweb.)g(*/)-2546 72727 y Fa(426)2490 b Fd(Fweb\(ZERO,)583
+b(cc,)f(cp,)f(webdata\);)-2546 74056 y Fa(427)-2546 75384
+y(428)2490 b Fd(/*)582 b(Set)f(c')h(for)f(predators)i(to)e(0.)h(*/)
+-2546 76712 y Fa(429)2490 b Fd(for)582 b(\(jy)f(=)h(0;)f(jy)h(<)f(MY;)h
+(jy++\))f({)-2546 78041 y Fa(430)3653 b Fd(yloc)581 b(=)h(NSMX)f(*)h
+(jy;)p Black 23394 81741 a Fp(30)p Black eop
+%%Page: 31 35
+31 34 bop Black Black 1454 7638 a Fa(431)3653 b Fd(for)581
+b(\(jx)h(=)f(0;)h(jx)f(<)g(MX;)h(jx++\))g({)1454 8966
+y Fa(432)4815 b Fd(loc)581 b(=)h(yloc)g(+)f(NUM_SPECIES)i(*)e(jx;)1454
+10295 y Fa(433)4815 b Fd(for)581 b(\(is)h(=)f(np;)h(is)f(<)h
+(NUM_SPECIES;)h(is++\))f({)1454 11623 y Fa(434)5977 b
+Fd(cpv[loc+is])583 b(=)e(ZERO;)1454 12951 y Fa(435)4815
+b Fd(})1454 14280 y Fa(436)3653 b Fd(})1454 15608 y Fa(437)2490
+b Fd(})1454 16936 y Fa(438)1328 b Fd(})1454 18265 y Fa(439)1454
+19593 y(440)g Fd(/*)1454 20922 y Fa(441)1909 b Fd(*)581
+b(Print)h(first)g(lines)g(of)g(output)g(\(problem)g(description\))1454
+22250 y Fa(442)1909 b Fd(*/)1454 23578 y Fa(443)1454
+24907 y(444)1328 b Fd(static)582 b(void)g(PrintHeader\(long)h(int)f
+(mu,)g(long)f(int)h(ml,)f(realtype)i(rtol,)f(realtype)g(atol\))1454
+26235 y Fa(445)1328 b Fd({)1454 27563 y Fa(446)2490 b
+Fd(printf\("\\niwebsb:)584 b(Predator-prey)f(DAE)f(serial)g(example)g
+(problem)g(for)g(IDA)f(\\n\\n"\);)1454 28892 y Fa(447)2490
+b Fd(printf\("Number)584 b(of)d(species)h(ns:)g(\045d",)g
+(NUM_SPECIES\);)1454 30220 y Fa(448)2490 b Fd(printf\(")2907
+b(Mesh)582 b(dimensions:)h(\045d)e(x)h(\045d",)f(MX,)h(MY\);)1454
+31548 y Fa(449)2490 b Fd(printf\(")2907 b(System)582
+b(size:)g(\045d\\n",)g(NEQ\);)1454 32877 y Fa(450)1328
+b Fd(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))1454
+34205 y Fa(451)2490 b Fd(printf\("Tolerance)584 b(parameters:)1164
+b(rtol)582 b(=)f(\045Lg)1744 b(atol)582 b(=)f(\045Lg\\n",)h(rtol,)g
+(atol\);)1454 35533 y Fa(452)1328 b Fd(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))1454 36862 y Fa(453)2490
+b Fd(printf\("Tolerance)584 b(parameters:)1164 b(rtol)582
+b(=)f(\045lg)1744 b(atol)582 b(=)f(\045lg\\n",)h(rtol,)g(atol\);)1454
+38190 y Fa(454)1328 b Fd(#else)1454 39518 y Fa(455)2490
+b Fd(printf\("Tolerance)584 b(parameters:)1164 b(rtol)582
+b(=)f(\045g)1744 b(atol)581 b(=)h(\045g\\n",)g(rtol,)g(atol\);)1454
+40847 y Fa(456)1328 b Fd(#endif)1454 42175 y Fa(457)2490
+b Fd(printf\("Linear)584 b(solver:)e(IDABAND,)1163 b(Band)582
+b(parameters)h(mu)e(=)g(\045ld,)h(ml)g(=)f(\045ld\\n",mu,ml\);)1454
+43504 y Fa(458)2490 b Fd(printf\("CalcIC)584 b(called)e(to)f(correct)h
+(initial)g(predator)h(concentrations.\\n\\n"\);)1454
+44832 y Fa(459)2490 b Fd
+(printf\("----------------------------------------------------------)p
+(-\\n"\);)1454 46160 y Fa(460)g Fd(printf\(")1164 b(t)4649
+b(bottom-left)1164 b(top-right"\);)1454 47489 y Fa(461)2490
+b Fd(printf\(")2326 b(|)581 b(nst)1163 b(k)3487 b(h\\n"\);)1454
+48817 y Fa(462)2490 b Fd
+(printf\("----------------------------------------------------------)p
+(-\\n\\n"\);)1454 50145 y Fa(463)1454 51474 y(464)1328
+b Fd(})1454 52802 y Fa(465)1454 54130 y(466)g Fd(/*)1454
+55459 y Fa(467)1909 b Fd(*)581 b(PrintOutput:)i(Print)f(output)g
+(values)g(at)g(output)g(time)g(t)f(=)g(tt.)1454 56787
+y Fa(468)1909 b Fd(*)581 b(Selected)i(run)e(statistics)i(are)f
+(printed.)1163 b(Then)582 b(values)g(of)f(the)h(concentrations)1454
+58115 y Fa(469)1909 b Fd(*)581 b(are)h(printed)g(for)g(the)f(bottom)h
+(left)g(and)g(top)f(right)h(grid)g(points)g(only.)1454
+59444 y Fa(470)1909 b Fd(*/)1454 60772 y Fa(471)1454
+62100 y(472)1328 b Fd(static)582 b(void)g(PrintOutput\(void)h(*mem,)f
+(N_Vector)h(c,)e(realtype)h(t\))1454 63429 y Fa(473)1328
+b Fd({)1454 64757 y Fa(474)2490 b Fd(int)582 b(i,)f(kused,)h(flag;)1454
+66086 y Fa(475)2490 b Fd(long)582 b(int)g(nst;)1454 67414
+y Fa(476)2490 b Fd(realtype)583 b(*c_bl,)f(*c_tr,)g(hused;)1454
+68742 y Fa(477)1454 70071 y(478)2490 b Fd(flag)582 b(=)f
+(IDAGetLastOrder\(mem,)j(&kused\);)1454 71399 y Fa(479)2490
+b Fd(check_flag\(&flag,)584 b("IDAGetLastOrder",)g(1\);)1454
+72727 y Fa(480)2490 b Fd(flag)582 b(=)f(IDAGetNumSteps\(mem,)j(&nst\);)
+1454 74056 y Fa(481)2490 b Fd(check_flag\(&flag,)584
+b("IDAGetNumSteps",)g(1\);)1454 75384 y Fa(482)2490 b
+Fd(flag)582 b(=)f(IDAGetLastStep\(mem,)j(&hused\);)1454
+76712 y Fa(483)2490 b Fd(check_flag\(&flag,)584 b("IDAGetLastStep",)g
+(1\);)1454 78041 y Fa(484)p Black 27394 81741 a Fp(31)p
+Black eop
+%%Page: 32 36
+32 35 bop Black Black -2546 7638 a Fa(485)2490 b Fd(c_bl)582
+b(=)f(IJ_Vptr\(c,0,0\);)-2546 8966 y Fa(486)2490 b Fd(c_tr)582
+b(=)f(IJ_Vptr\(c,MX-1,MY-1\);)-2546 10295 y Fa(487)-2546
+11623 y(488)1328 b Fd(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))
+-2546 12951 y Fa(489)2490 b Fd(printf\("\0458.2Le)584
+b(\04512.4Le)e(\04512.4Le)1744 b(|)582 b(\0453ld)1162
+b(\0451d)582 b(\04512.4Le\\n",)-2546 14280 y Fa(490)6558
+b Fd(t,)582 b(c_bl[0],)g(c_tr[1],)g(nst,)g(kused,)g(hused\);)-2546
+15608 y Fa(491)2490 b Fd(for)582 b(\(i=1;i<NUM_SPECIES;i++\))-2546
+16936 y Fa(492)3653 b Fd(printf\(")5231 b(\04512.4Le)582
+b(\04512.4Le)1745 b(|\\n",c_bl[i],c_tr[i]\);)-2546 18265
+y Fa(493)1328 b Fd(#elif)582 b(defined\(SUNDIALS_DOUBLE_PRECISION\))
+-2546 19593 y Fa(494)2490 b Fd(printf\("\0458.2le)584
+b(\04512.4le)e(\04512.4le)1744 b(|)582 b(\0453ld)1162
+b(\0451d)582 b(\04512.4le\\n",)-2546 20922 y Fa(495)6558
+b Fd(t,)582 b(c_bl[0],)g(c_tr[1],)g(nst,)g(kused,)g(hused\);)-2546
+22250 y Fa(496)2490 b Fd(for)582 b(\(i=1;i<NUM_SPECIES;i++\))-2546
+23578 y Fa(497)3653 b Fd(printf\(")5231 b(\04512.4le)582
+b(\04512.4le)1745 b(|\\n",c_bl[i],c_tr[i]\);)-2546 24907
+y Fa(498)1328 b Fd(#else)-2546 26235 y Fa(499)2490 b
+Fd(printf\("\0458.2e)583 b(\04512.4e)f(\04512.4e)1745
+b(|)581 b(\0453ld)1163 b(\0451d)582 b(\04512.4e\\n",)-2546
+27563 y Fa(500)6558 b Fd(t,)582 b(c_bl[0],)g(c_tr[1],)g(nst,)g(kused,)g
+(hused\);)-2546 28892 y Fa(501)2490 b Fd(for)582 b
+(\(i=1;i<NUM_SPECIES;i++\))-2546 30220 y Fa(502)3653
+b Fd(printf\(")5231 b(\04512.4e)582 b(\04512.4e)1745
+b(|\\n",c_bl[i],c_tr[i]\);)-2546 31548 y Fa(503)1328
+b Fd(#endif)-2546 32877 y Fa(504)-2546 34205 y(505)2490
+b Fd(printf\("\\n"\);)-2546 35533 y Fa(506)1328 b Fd(})-2546
+36862 y Fa(507)-2546 38190 y(508)g Fd(/*)-2546 39518
+y Fa(509)1909 b Fd(*)581 b(PrintFinalStats:)j(Print)e(final)g(run)f
+(data)h(contained)h(in)e(iopt.)-2546 40847 y Fa(510)1909
+b Fd(*/)-2546 42175 y Fa(511)-2546 43504 y(512)1328 b
+Fd(static)582 b(void)g(PrintFinalStats\(void)i(*mem\))-2546
+44832 y Fa(513)1328 b Fd({)-2546 46160 y Fa(514)2490
+b Fd(long)582 b(int)g(nst,)f(nre,)h(nreB,)g(nni,)g(nje,)g(netf,)f
+(ncfn;)-2546 47489 y Fa(515)2490 b Fd(int)582 b(flag;)-2546
+48817 y Fa(516)-2546 50145 y(517)2490 b Fd(flag)582 b(=)f
+(IDAGetNumSteps\(mem,)j(&nst\);)-2546 51474 y Fa(518)2490
+b Fd(check_flag\(&flag,)584 b("IDAGetNumSteps",)g(1\);)-2546
+52802 y Fa(519)2490 b Fd(flag)582 b(=)f(IDAGetNumNonlinSolvIters\(mem,)
+586 b(&nni\);)-2546 54130 y Fa(520)2490 b Fd(check_flag\(&flag,)584
+b("IDAGetNumNonlinSolvIters",)h(1\);)-2546 55459 y Fa(521)2490
+b Fd(flag)582 b(=)f(IDAGetNumResEvals\(mem,)k(&nre\);)-2546
+56787 y Fa(522)2490 b Fd(check_flag\(&flag,)584 b("IDAGetNumResEvals",)
+g(1\);)-2546 58115 y Fa(523)2490 b Fd(flag)582 b(=)f
+(IDAGetNumErrTestFails\(mem,)k(&netf\);)-2546 59444 y
+Fa(524)2490 b Fd(check_flag\(&flag,)584 b("IDAGetNumErrTestFails",)h
+(1\);)-2546 60772 y Fa(525)2490 b Fd(flag)582 b(=)f
+(IDAGetNumNonlinSolvConvFails\(mem,)586 b(&ncfn\);)-2546
+62100 y Fa(526)2490 b Fd(check_flag\(&flag,)584 b
+("IDAGetNumNonlinSolvConvFails",)i(1\);)-2546 63429 y
+Fa(527)2490 b Fd(flag)582 b(=)f(IDABandGetNumJacEvals\(mem,)k(&nje\);)
+-2546 64757 y Fa(528)2490 b Fd(check_flag\(&flag,)584
+b("IDABandGetNumJacEvals",)h(1\);)-2546 66086 y Fa(529)2490
+b Fd(flag)582 b(=)f(IDABandGetNumResEvals\(mem,)k(&nreB\);)-2546
+67414 y Fa(530)2490 b Fd(check_flag\(&flag,)584 b
+("IDABandGetNumResEvals",)h(1\);)-2546 68742 y Fa(531)-2546
+70071 y(532)2490 b Fd
+(printf\("----------------------------------------------------------)p
+(-\\n"\);)-2546 71399 y Fa(533)g Fd(printf\("Final)583
+b(run)f(statistics:)h(\\n\\n"\);)-2546 72727 y Fa(534)2490
+b Fd(printf\("Number)584 b(of)d(steps)11624 b(=)581 b(\045ld\\n",)h
+(nst\);)-2546 74056 y Fa(535)2490 b Fd(printf\("Number)584
+b(of)d(residual)h(evaluations)2908 b(=)581 b(\045ld\\n",)h(nre+nreB\);)
+-2546 75384 y Fa(536)2490 b Fd(printf\("Number)584 b(of)d(Jacobian)h
+(evaluations)2908 b(=)581 b(\045ld\\n",)h(nje\);)-2546
+76712 y Fa(537)2490 b Fd(printf\("Number)584 b(of)d(nonlinear)h
+(iterations)2908 b(=)581 b(\045ld\\n",)h(nni\);)-2546
+78041 y Fa(538)2490 b Fd(printf\("Number)584 b(of)d(error)h(test)g
+(failures)3488 b(=)581 b(\045ld\\n",)h(netf\);)p Black
+23394 81741 a Fp(32)p Black eop
+%%Page: 33 37
+33 36 bop Black Black 1454 7638 a Fa(539)2490 b Fd(printf\("Number)584
+b(of)d(nonlinear)h(conv.)g(failures)h(=)e(\045ld\\n",)h(ncfn\);)1454
+8966 y Fa(540)1454 10295 y(541)1328 b Fd(})1454 11623
+y Fa(542)1454 12951 y(543)g Fd(/*)1454 14280 y Fa(544)1909
+b Fd(*)581 b(Fweb:)h(Rate)g(function)g(for)g(the)g(food-web)g(problem.)
+1454 15608 y Fa(545)1909 b Fd(*)581 b(This)h(routine)g(computes)h(the)e
+(right-hand)i(sides)f(of)f(the)h(system)g(equations,)1454
+16936 y Fa(546)1909 b Fd(*)581 b(consisting)i(of)f(the)f(diffusion)i
+(term)e(and)h(interaction)h(term.)1454 18265 y Fa(547)1909
+b Fd(*)581 b(The)h(interaction)h(term)f(is)f(computed)h(by)g(the)f
+(function)i(WebRates.)1454 19593 y Fa(548)1909 b Fd(*/)1454
+20922 y Fa(549)1454 22250 y(550)1328 b Fd(static)582
+b(void)g(Fweb\(realtype)h(tcalc,)f(N_Vector)g(cc,)g(N_Vector)g(crate,)
+1454 23578 y Fa(551)11208 b Fd(UserData)582 b(webdata\))1454
+24907 y Fa(552)1328 b Fd({)1454 26235 y Fa(553)2490 b
+Fd(long)582 b(int)g(jx,)f(jy,)h(is,)f(idyu,)h(idyl,)g(idxu,)g(idxl;)
+1454 27563 y Fa(554)2490 b Fd(realtype)583 b(xx,)e(yy,)h(*cxy,)g
+(*ratesxy,)g(*cratexy,)h(dcyli,)f(dcyui,)g(dcxli,)g(dcxui;)1454
+28892 y Fa(555)1454 30220 y(556)2490 b Fd(/*)582 b(Loop)f(over)h(grid)g
+(points,)g(evaluate)h(interaction)f(vector)g(\(length)h(ns\),)1454
+31548 y Fa(557)4234 b Fd(form)581 b(diffusion)i(difference)g(terms,)f
+(and)f(load)h(crate.)11624 b(*/)1454 32877 y Fa(558)1454
+34205 y(559)2490 b Fd(for)582 b(\(jy)f(=)h(0;)f(jy)h(<)f(MY;)h(jy++\))f
+({)1454 35533 y Fa(560)3653 b Fd(yy)581 b(=)g(\(webdata->dy\))i(*)f(jy)
+f(;)1454 36862 y Fa(561)3653 b Fd(idyu)581 b(=)h(\(jy!=MY-1\))g(?)g
+(NSMX)f(:)h(-NSMX;)1454 38190 y Fa(562)3653 b Fd(idyl)581
+b(=)h(\(jy!=)g(0)1162 b(\))581 b(?)h(NSMX)f(:)h(-NSMX;)1454
+39518 y Fa(563)1454 40847 y(564)3653 b Fd(for)581 b(\(jx)h(=)f(0;)h(jx)
+f(<)g(MX;)h(jx++\))g({)1454 42175 y Fa(565)4815 b Fd(xx)581
+b(=)h(\(webdata->dx\))h(*)e(jx;)1454 43504 y Fa(566)4815
+b Fd(idxu)582 b(=)f(\(jx!=)h(MX-1\))g(?)1162 b(NUM_SPECIES)583
+b(:)e(-NUM_SPECIES;)1454 44832 y Fa(567)4815 b Fd(idxl)582
+b(=)f(\(jx!=)1163 b(0)f(\))582 b(?)1162 b(NUM_SPECIES)583
+b(:)e(-NUM_SPECIES;)1454 46160 y Fa(568)4815 b Fd(cxy)581
+b(=)h(IJ_Vptr\(cc,jx,jy\);)1454 47489 y Fa(569)4815 b
+Fd(ratesxy)582 b(=)f(IJ_Vptr\(webdata->rates,jx,jy\);)1454
+48817 y Fa(570)4815 b Fd(cratexy)582 b(=)f(IJ_Vptr\(crate,jx,jy\);)1454
+50145 y Fa(571)1454 51474 y(572)4815 b Fd(/*)581 b(Get)h(interaction)h
+(vector)f(at)f(this)h(grid)g(point.)g(*/)1454 52802 y
+Fa(573)4815 b Fd(WebRates\(xx,)583 b(yy,)e(cxy,)h(ratesxy,)h
+(webdata\);)1454 54130 y Fa(574)1454 55459 y(575)4815
+b Fd(/*)581 b(Loop)h(over)g(species,)g(do)g(differencing,)h(load)e
+(crate)h(segment.)h(*/)1454 56787 y Fa(576)4815 b Fd(for)581
+b(\(is)h(=)f(0;)h(is)f(<)h(NUM_SPECIES;)h(is++\))e({)1454
+58115 y Fa(577)1454 59444 y(578)5977 b Fd(/*)582 b(Differencing)h(in)e
+(y.)g(*/)1454 60772 y Fa(579)5977 b Fd(dcyli)582 b(=)f(*\(cxy+is\))i(-)
+e(*\(cxy)h(-)f(idyl)h(+)f(is\))h(;)1454 62100 y Fa(580)5977
+b Fd(dcyui)582 b(=)f(*\(cxy)h(+)g(idyu)f(+)h(is\))f(-)h(*\(cxy+is\);)
+1454 63429 y Fa(581)1454 64757 y(582)5977 b Fd(/*)582
+b(Differencing)h(in)e(x.)g(*/)1454 66086 y Fa(583)5977
+b Fd(dcxli)582 b(=)f(*\(cxy+is\))i(-)e(*\(cxy)h(-)f(idxl)h(+)f(is\);)
+1454 67414 y Fa(584)5977 b Fd(dcxui)582 b(=)f(*\(cxy)h(+)g(idxu)f
+(+is\))h(-)f(*\(cxy+is\);)1454 68742 y Fa(585)1454 70071
+y(586)5977 b Fd(/*)582 b(Compute)g(the)f(crate)h(values)g(at)g
+(\(xx,yy\).)g(*/)1454 71399 y Fa(587)5977 b Fd(cratexy[is])583
+b(=)e(coy[is])h(*)g(\(dcyui)g(-)f(dcyli\))h(+)1454 72727
+y Fa(588)7139 b Fd(cox[is])583 b(*)e(\(dcxui)h(-)f(dcxli\))h(+)g
+(ratesxy[is];)1454 74056 y Fa(589)1454 75384 y(590)4815
+b Fd(})581 b(/*)h(End)f(is)h(loop)f(*/)1454 76712 y Fa(591)3653
+b Fd(})581 b(/*)g(End)h(of)f(jx)h(loop)g(*/)1454 78041
+y Fa(592)2490 b Fd(})582 b(/*)f(End)h(of)f(jy)h(loop)f(*/)p
+Black 27394 81741 a Fp(33)p Black eop
+%%Page: 34 38
+34 37 bop Black Black -2546 7638 a Fa(593)-2546 8966
+y(594)1328 b Fd(})-2546 10295 y Fa(595)-2546 11623 y(596)g
+Fd(/*)-2546 12951 y Fa(597)1909 b Fd(*)581 b(WebRates:)i(Evaluate)f
+(reaction)h(rates)f(at)f(a)g(given)h(spatial)g(point.)-2546
+14280 y Fa(598)1909 b Fd(*)581 b(At)h(a)f(given)h(\(x,y\),)g(evaluate)g
+(the)g(array)g(of)f(ns)h(reaction)g(terms)g(R.)-2546
+15608 y Fa(599)1909 b Fd(*/)-2546 16936 y Fa(600)-2546
+18265 y(601)1328 b Fd(static)582 b(void)g(WebRates\(realtype)h(xx,)f
+(realtype)g(yy,)g(realtype)g(*cxy,)g(realtype)h(*ratesxy,)-2546
+19593 y Fa(602)13532 b Fd(UserData)582 b(webdata\))-2546
+20922 y Fa(603)1328 b Fd({)-2546 22250 y Fa(604)2490
+b Fd(int)582 b(is;)-2546 23578 y Fa(605)2490 b Fd(realtype)583
+b(fac;)-2546 24907 y Fa(606)-2546 26235 y(607)2490 b
+Fd(for)582 b(\(is)f(=)h(0;)f(is)h(<)f(NUM_SPECIES;)i(is++\))-2546
+27563 y Fa(608)3653 b Fd(ratesxy[is])582 b(=)g(dotprod\(NUM_SPECIES,)i
+(cxy,)e(acoef[is]\);)-2546 28892 y Fa(609)-2546 30220
+y(610)2490 b Fd(fac)582 b(=)f(ONE)h(+)f(ALPHA*xx*yy)i(+)e
+(BETA*sin\(FOURPI*xx\)*sin\(FOURPI*yy\);)-2546 31548
+y Fa(611)-2546 32877 y(612)2490 b Fd(for)582 b(\(is)f(=)h(0;)f(is)h(<)f
+(NUM_SPECIES;)i(is++\))-2546 34205 y Fa(613)3653 b Fd(ratesxy[is])582
+b(=)g(cxy[is]*\()g(bcoef[is]*fac)h(+)f(ratesxy[is])g(\);)-2546
+35533 y Fa(614)-2546 36862 y(615)1328 b Fd(})-2546 38190
+y Fa(616)-2546 39518 y(617)g Fd(/*)-2546 40847 y Fa(618)1909
+b Fd(*)581 b(dotprod:)i(dot)e(product)i(routine)f(for)f(realtype)i
+(arrays,)f(for)f(use)h(by)g(WebRates.)-2546 42175 y Fa(619)1909
+b Fd(*/)-2546 43504 y Fa(620)-2546 44832 y(621)1328 b
+Fd(static)582 b(realtype)g(dotprod\(long)h(int)f(size,)g(realtype)g
+(*x1,)g(realtype)g(*x2\))-2546 46160 y Fa(622)1328 b
+Fd({)-2546 47489 y Fa(623)2490 b Fd(long)582 b(int)g(i;)-2546
+48817 y Fa(624)2490 b Fd(realtype)583 b(*xx1,)f(*xx2,)f(temp)h(=)f
+(ZERO;)-2546 50145 y Fa(625)-2546 51474 y(626)2490 b
+Fd(xx1)582 b(=)f(x1;)h(xx2)f(=)h(x2;)-2546 52802 y Fa(627)2490
+b Fd(for)582 b(\(i)f(=)h(0;)f(i)g(<)h(size;)g(i++\))f(temp)h(+=)g
+(\(*xx1++\))g(*)f(\(*xx2++\);)-2546 54130 y Fa(628)2490
+b Fd(return\(temp\);)-2546 55459 y Fa(629)-2546 56787
+y(630)1328 b Fd(})-2546 58115 y Fa(631)-2546 59444 y(632)g
+Fd(/*)-2546 60772 y Fa(633)1909 b Fd(*)581 b(Check)h(function)h(return)
+f(value...)-2546 62100 y Fa(634)1909 b Fd(*)1744 b(opt)581
+b(==)h(0)f(means)h(SUNDIALS)g(function)h(allocates)f(memory)g(so)g
+(check)g(if)-2546 63429 y Fa(635)1909 b Fd(*)6974 b(returned)582
+b(NULL)g(pointer)-2546 64757 y Fa(636)1909 b Fd(*)1744
+b(opt)581 b(==)h(1)f(means)h(SUNDIALS)g(function)h(returns)f(a)f(flag)h
+(so)f(check)h(if)-2546 66086 y Fa(637)1909 b Fd(*)6974
+b(flag)582 b(>=)f(0)-2546 67414 y Fa(638)1909 b Fd(*)1744
+b(opt)581 b(==)h(2)f(means)h(function)g(allocates)h(memory)f(so)f
+(check)h(if)g(returned)-2546 68742 y Fa(639)1909 b Fd(*)6974
+b(NULL)582 b(pointer)-2546 70071 y Fa(640)1909 b Fd(*/)-2546
+71399 y Fa(641)-2546 72727 y(642)1328 b Fd(static)582
+b(int)g(check_flag\(void)h(*flagvalue,)g(char)f(*funcname,)g(int)g
+(opt\))-2546 74056 y Fa(643)1328 b Fd({)-2546 75384 y
+Fa(644)2490 b Fd(int)582 b(*errflag;)-2546 76712 y Fa(645)-2546
+78041 y(646)2490 b Fd(if)582 b(\(opt)f(==)h(0)f(&&)h(flagvalue)g(==)g
+(NULL\))g({)p Black 23394 81741 a Fp(34)p Black eop
+%%Page: 35 39
+35 38 bop Black Black 1454 7638 a Fa(647)3653 b Fd(/*)581
+b(Check)h(if)f(SUNDIALS)i(function)f(returned)g(NULL)g(pointer)g(-)g
+(no)f(memory)h(allocated)h(*/)1454 8966 y Fa(648)3653
+b Fd(fprintf\(stderr,)1454 10295 y Fa(649)8302 b Fd
+("\\nSUNDIALS_ERROR:)584 b(\045s\(\))d(failed)h(-)g(returned)g(NULL)g
+(pointer\\n\\n",)1454 11623 y Fa(650)8302 b Fd(funcname\);)1454
+12951 y Fa(651)3653 b Fd(return\(1\);)1454 14280 y Fa(652)2490
+b Fd(})582 b(else)f(if)h(\(opt)g(==)f(1\))g({)1454 15608
+y Fa(653)3653 b Fd(/*)581 b(Check)h(if)f(flag)h(<)f(0)h(*/)1454
+16936 y Fa(654)3653 b Fd(errflag)582 b(=)f(\(int)h(*\))f(flagvalue;)
+1454 18265 y Fa(655)3653 b Fd(if)581 b(\(*errflag)i(<)e(0\))g({)1454
+19593 y Fa(656)4815 b Fd(fprintf\(stderr,)1454 20922
+y Fa(657)9464 b Fd("\\nSUNDIALS_ERROR:)584 b(\045s\(\))e(failed)g(with)
+f(flag)h(=)f(\045d\\n\\n",)1454 22250 y Fa(658)9464 b
+Fd(funcname,)583 b(*errflag\);)1454 23578 y Fa(659)4815
+b Fd(return\(1\);)1454 24907 y Fa(660)3653 b Fd(})1454
+26235 y Fa(661)2490 b Fd(})582 b(else)f(if)h(\(opt)g(==)f(2)g(&&)h
+(flagvalue)g(==)g(NULL\))g({)1454 27563 y Fa(662)3653
+b Fd(/*)581 b(Check)h(if)f(function)i(returned)f(NULL)g(pointer)g(-)f
+(no)h(memory)g(allocated)g(*/)1454 28892 y Fa(663)3653
+b Fd(fprintf\(stderr,)1454 30220 y Fa(664)8302 b Fd("\\nMEMORY_ERROR:)
+583 b(\045s\(\))f(failed)g(-)f(returned)i(NULL)e(pointer\\n\\n",)1454
+31548 y Fa(665)8302 b Fd(funcname\);)1454 32877 y Fa(666)3653
+b Fd(return\(1\);)1454 34205 y Fa(667)2490 b Fd(})1454
+35533 y Fa(668)1454 36862 y(669)g Fd(return\(0\);)1454
+38190 y Fa(670)1328 b Fd(})p Black 27394 81741 a Fp(35)p
+Black eop
+%%Page: 36 40
+36 39 bop Black Black 0 7638 a Fo(C)1793 b(Listing)600
+b(of)d Fb(iheatsk.c)-1734 10674 y Fa(1)1328 b Fd(/*)-1734
+12003 y Fa(2)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)
+-1734 13331 y Fa(3)1909 b Fd(*)581 b($Revision:)i(1.16.2.4)f($)-1734
+14659 y Fa(4)1909 b Fd(*)581 b($Date:)h(2005/04/06)h(23:34:13)f($)-1734
+15988 y Fa(5)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)
+-1734 17316 y Fa(6)1909 b Fd(*)581 b(Programmer\(s\):)j(Allan)e
+(Taylor,)g(Alan)g(Hindmarsh)g(and)-1734 18645 y Fa(7)1909
+b Fd(*)9299 b(Radu)581 b(Serban)h(@)g(LLNL)-1734 19973
+y Fa(8)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)
+-1734 21301 y Fa(9)1909 b Fd(*)581 b(Example)i(problem)f(for)f
+(IDA/IDAS:)i(2D)e(heat)h(equation,)h(serial,)f(GMRES.)-2140
+22630 y Fa(10)1909 b Fd(*)-2140 23958 y Fa(11)g Fd(*)581
+b(This)h(example)g(solves)g(a)g(discretized)h(2D)e(heat)h(equation)g
+(problem.)-2140 25286 y Fa(12)1909 b Fd(*)581 b(This)h(version)g(uses)g
+(the)g(Krylov)g(solver)g(IDASpgmr.)-2140 26615 y Fa(13)1909
+b Fd(*)-2140 27943 y Fa(14)g Fd(*)581 b(The)h(DAE)g(system)g(solved)g
+(is)f(a)g(spatial)i(discretization)g(of)e(the)h(PDE)-2140
+29271 y Fa(15)1909 b Fd(*)5812 b(du/dt)582 b(=)f(d^2u/dx^2)h(+)g
+(d^2u/dy^2)-2140 30600 y Fa(16)1909 b Fd(*)581 b(on)h(the)f(unit)h
+(square.)g(The)g(boundary)g(condition)h(is)e(u)h(=)f(0)g(on)h(all)f
+(edges.)-2140 31928 y Fa(17)1909 b Fd(*)581 b(Initial)i(conditions)f
+(are)g(given)g(by)f(u)h(=)f(16)g(x)h(\(1)f(-)g(x\))h(y)f(\(1)g(-)h
+(y\).)f(The)-2140 33256 y Fa(18)1909 b Fd(*)581 b(PDE)h(is)f(treated)i
+(with)e(central)i(differences)f(on)g(a)f(uniform)h(M)g(x)f(M)g(grid.)
+-2140 34585 y Fa(19)1909 b Fd(*)581 b(The)h(values)g(of)g(u)f(at)g(the)
+h(interior)g(points)g(satisfy)g(ODEs,)g(and)-2140 35913
+y Fa(20)1909 b Fd(*)581 b(equations)i(u)e(=)h(0)f(at)g(the)h
+(boundaries)h(are)e(appended,)i(to)e(form)h(a)f(DAE)-2140
+37241 y Fa(21)1909 b Fd(*)581 b(system)h(of)g(size)g(N)f(=)g(M^2.)h
+(Here)g(M)f(=)g(10.)-2140 38570 y Fa(22)1909 b Fd(*)-2140
+39898 y Fa(23)g Fd(*)581 b(The)h(system)g(is)g(solved)g(with)f
+(IDA/IDAS)i(using)f(the)f(Krylov)h(linear)g(solver)-2140
+41227 y Fa(24)1909 b Fd(*)581 b(IDASPGMR.)i(The)f(preconditioner)h
+(uses)f(the)f(diagonal)h(elements)h(of)e(the)-2140 42555
+y Fa(25)1909 b Fd(*)581 b(Jacobian)i(only.)f(Routines)g(for)g
+(preconditioning,)h(required)f(by)-2140 43883 y Fa(26)1909
+b Fd(*)581 b(IDASPGMR,)i(are)f(supplied)g(here.)g(The)f(constraints)i
+(u)e(>=)h(0)f(are)h(posed)-2140 45212 y Fa(27)1909 b
+Fd(*)581 b(for)h(all)g(components.)g(Output)g(is)g(taken)g(at)f(t)h(=)f
+(0,)g(.01,)h(.02,)g(.04,)-2140 46540 y Fa(28)1909 b Fd(*)581
+b(...,)h(10.24.)g(Two)g(cases)g(are)f(run)h(--)f(with)h(the)g
+(Gram-Schmidt)h(type)-2140 47868 y Fa(29)1909 b Fd(*)581
+b(being)h(Modified)h(in)e(the)h(first)g(case,)g(and)f(Classical)i(in)e
+(the)h(second.)-2140 49197 y Fa(30)1909 b Fd(*)581 b(The)h(second)g
+(run)g(uses)f(IDAReInit)i(and)f(IDAReInitSpgmr.)-2140
+50525 y Fa(31)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)
+-2140 51853 y Fa(32)1909 b Fd(*/)-2140 53182 y Fa(33)-2140
+54510 y(34)1328 b Fd(#include)582 b(<stdio.h>)-2140 55838
+y Fa(35)1328 b Fd(#include)582 b(<stdlib.h>)-2140 57167
+y Fa(36)1328 b Fd(#include)582 b(<math.h>)-2140 58495
+y Fa(37)1328 b Fd(#include)582 b("sundialstypes.h")-2140
+59823 y Fa(38)1328 b Fd(#include)582 b("nvector_serial.h")-2140
+61152 y Fa(39)1328 b Fd(#include)582 b("ida.h")-2140
+62480 y Fa(40)1328 b Fd(#include)582 b("idaspgmr.h")-2140
+63808 y Fa(41)-2140 65137 y(42)1328 b Fd(/*)581 b(Problem)i(Constants)f
+(*/)-2140 66465 y Fa(43)-2140 67794 y(44)1328 b Fd(#define)582
+b(NOUT)1163 b(11)-2140 69122 y Fa(45)1328 b Fd(#define)582
+b(MGRID)g(10)-2140 70450 y Fa(46)1328 b Fd(#define)582
+b(NEQ)1744 b(MGRID*MGRID)-2140 71779 y Fa(47)1328 b Fd(#define)582
+b(ZERO)1163 b(RCONST\(0.0\))-2140 73107 y Fa(48)1328
+b Fd(#define)582 b(ONE)1744 b(RCONST\(1.0\))-2140 74435
+y Fa(49)1328 b Fd(#define)582 b(TWO)1744 b(RCONST\(2.0\))-2140
+75764 y Fa(50)1328 b Fd(#define)582 b(FOUR)1163 b(RCONST\(4.0\))-2140
+77092 y Fa(51)-2140 78420 y(52)1328 b Fd(/*)581 b(User)h(data)g(type)g
+(*/)p Black 23394 81741 a Fp(36)p Black eop
+%%Page: 37 41
+37 40 bop Black Black 1860 7638 a Fa(53)1860 8966 y(54)1328
+b Fd(typedef)582 b(struct)g({)1860 10295 y Fa(55)2490
+b Fd(long)582 b(int)g(mm;)1162 b(/*)582 b(number)g(of)f(grid)h(points)g
+(*/)1860 11623 y Fa(56)2490 b Fd(realtype)583 b(dx;)1860
+12951 y Fa(57)2490 b Fd(realtype)583 b(coeff;)1860 14280
+y Fa(58)2490 b Fd(N_Vector)583 b(pp;)1162 b(/*)582 b(vector)g(of)f
+(prec.)h(diag.)g(elements)g(*/)1860 15608 y Fa(59)1328
+b Fd(})581 b(*UserData;)1860 16936 y Fa(60)1860 18265
+y(61)1328 b Fd(/*)581 b(Prototypes)i(for)f(functions)g(called)g(by)g
+(IDA)f(*/)1860 19593 y Fa(62)1860 20922 y(63)1328 b Fd(int)582
+b(resHeat\(realtype)h(tres,)f(N_Vector)g(uu,)g(N_Vector)g(up,)1860
+22250 y Fa(64)8302 b Fd(N_Vector)582 b(resval,)g(void)g(*rdata\);)1860
+23578 y Fa(65)1860 24907 y(66)1328 b Fd(int)582 b(PsetupHeat\(realtype)
+i(tt,)1860 26235 y Fa(67)10045 b Fd(N_Vector)583 b(uu,)e(N_Vector)i
+(up,)e(N_Vector)h(rr,)1860 27563 y Fa(68)10045 b Fd(realtype)583
+b(c_j,)e(void)h(*prec_data,)1860 28892 y Fa(69)10045
+b Fd(N_Vector)583 b(tmp1,)e(N_Vector)i(tmp2,)f(N_Vector)g(tmp3\);)1860
+30220 y Fa(70)1860 31548 y(71)1328 b Fd(int)582 b(PsolveHeat\(realtype)
+i(tt,)1860 32877 y Fa(72)10045 b Fd(N_Vector)583 b(uu,)e(N_Vector)i
+(up,)e(N_Vector)h(rr,)1860 34205 y Fa(73)10045 b Fd(N_Vector)583
+b(rvec,)e(N_Vector)i(zvec,)1860 35533 y Fa(74)10045 b
+Fd(realtype)583 b(c_j,)e(realtype)i(delta,)f(void)f(*prec_data,)1860
+36862 y Fa(75)10045 b Fd(N_Vector)583 b(tmp\);)1860 38190
+y Fa(76)1860 39518 y(77)1328 b Fd(/*)581 b(Prototypes)i(for)f(private)g
+(functions)g(*/)1860 40847 y Fa(78)1860 42175 y(79)1328
+b Fd(static)582 b(int)g(SetInitialProfile\(UserData)j(data,)d(N_Vector)
+g(uu,)f(N_Vector)i(up,)1860 43504 y Fa(80)18181 b Fd(N_Vector)583
+b(res\);)1860 44832 y Fa(81)1328 b Fd(static)582 b(void)g
+(PrintHeader\(realtype)i(rtol,)e(realtype)g(atol\);)1860
+46160 y Fa(82)1328 b Fd(static)582 b(void)g(PrintOutput\(void)h(*mem,)f
+(realtype)h(t,)e(N_Vector)h(uu\);)1860 47489 y Fa(83)1328
+b Fd(static)582 b(int)g(check_flag\(void)h(*flagvalue,)g(char)f
+(*funcname,)g(int)g(opt\);)1860 48817 y Fa(84)1860 50145
+y(85)1328 b Fd(/*)1860 51474 y Fa(86)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1860 52802 y Fa(87)g Fd(*)581 b(MAIN)h(PROGRAM)1860
+54130 y Fa(88)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1860 55459 y Fa(89)g Fd(*/)1860 56787 y Fa(90)1860
+58115 y(91)1328 b Fd(int)582 b(main\(\))1860 59444 y
+Fa(92)1328 b Fd({)1860 60772 y Fa(93)2490 b Fd(void)582
+b(*mem;)1860 62100 y Fa(94)2490 b Fd(UserData)583 b(data;)1860
+63429 y Fa(95)2490 b Fd(N_Vector)583 b(uu,)e(up,)h(constraints,)h(res;)
+1860 64757 y Fa(96)2490 b Fd(int)582 b(ier,)g(iout;)1860
+66086 y Fa(97)2490 b Fd(realtype)583 b(rtol,)f(atol,)f(t0,)h(t1,)g
+(tout,)g(tret;)1860 67414 y Fa(98)2490 b Fd(long)582
+b(int)g(netf,)g(ncfn,)f(ncfl;)1860 68742 y Fa(99)1454
+70071 y(100)2490 b Fd(mem)582 b(=)f(NULL;)1454 71399
+y Fa(101)2490 b Fd(data)582 b(=)f(NULL;)1454 72727 y
+Fa(102)2490 b Fd(uu)582 b(=)f(up)g(=)h(constraints)h(=)e(res)g(=)h
+(NULL;)1454 74056 y Fa(103)1454 75384 y(104)2490 b Fd(/*)582
+b(Allocate)g(N-vectors)h(and)e(the)h(user)g(data)f(structure.)i(*/)1454
+76712 y Fa(105)1454 78041 y(106)2490 b Fd(uu)582 b(=)f
+(N_VNew_Serial\(NEQ\);)p Black 27394 81741 a Fp(37)p
+Black eop
+%%Page: 38 42
+38 41 bop Black Black -2546 7638 a Fa(107)2490 b Fd
+(if\(check_flag\(\(void)584 b(*\)uu,)e("N_VNew_Serial",)i(0\)\))d
+(return\(1\);)-2546 8966 y Fa(108)-2546 10295 y(109)2490
+b Fd(up)582 b(=)f(N_VNew_Serial\(NEQ\);)-2546 11623 y
+Fa(110)2490 b Fd(if\(check_flag\(\(void)584 b(*\)up,)e
+("N_VNew_Serial",)i(0\)\))d(return\(1\);)-2546 12951
+y Fa(111)-2546 14280 y(112)2490 b Fd(res)582 b(=)f
+(N_VNew_Serial\(NEQ\);)-2546 15608 y Fa(113)2490 b Fd
+(if\(check_flag\(\(void)584 b(*\)res,)e("N_VNew_Serial",)i(0\)\))d
+(return\(1\);)-2546 16936 y Fa(114)-2546 18265 y(115)2490
+b Fd(constraints)583 b(=)e(N_VNew_Serial\(NEQ\);)-2546
+19593 y Fa(116)2490 b Fd(if\(check_flag\(\(void)584 b(*\)constraints,)g
+("N_VNew_Serial",)f(0\)\))f(return\(1\);)-2546 20922
+y Fa(117)-2546 22250 y(118)2490 b Fd(data)582 b(=)f(\(UserData\))i
+(malloc\(sizeof)g(*data\);)-2546 23578 y Fa(119)2490
+b Fd(data->pp)583 b(=)e(NULL;)-2546 24907 y Fa(120)2490
+b Fd(if\(check_flag\(\(void)584 b(*\)data,)e("malloc",)h(2\)\))f
+(return\(1\);)-2546 26235 y Fa(121)-2546 27563 y(122)2490
+b Fd(/*)582 b(Assign)g(parameters)g(in)g(the)f(user)h(data)g
+(structure.)h(*/)-2546 28892 y Fa(123)-2546 30220 y(124)2490
+b Fd(data->mm)1164 b(=)581 b(MGRID;)-2546 31548 y Fa(125)2490
+b Fd(data->dx)583 b(=)e(ONE/\(MGRID-ONE\);)-2546 32877
+y Fa(126)2490 b Fd(data->coeff)583 b(=)e(ONE/\(data->dx)i(*)f
+(data->dx\);)-2546 34205 y Fa(127)2490 b Fd(data->pp)583
+b(=)e(N_VNew_Serial\(NEQ\);)-2546 35533 y Fa(128)2490
+b Fd(if\(check_flag\(\(void)584 b(*\)data->pp,)f("N_VNew_Serial",)h
+(0\)\))d(return\(1\);)-2546 36862 y Fa(129)-2546 38190
+y(130)2490 b Fd(/*)582 b(Initialize)g(uu,)g(up.)g(*/)-2546
+39518 y Fa(131)-2546 40847 y(132)2490 b Fd(SetInitialProfile\(data,)585
+b(uu,)c(up,)h(res\);)-2546 42175 y Fa(133)-2546 43504
+y(134)2490 b Fd(/*)582 b(Set)f(constraints)i(to)f(all)f(1's)h(for)f
+(nonnegative)i(solution)f(values.)h(*/)-2546 44832 y
+Fa(135)-2546 46160 y(136)2490 b Fd(N_VConst\(ONE,)583
+b(constraints\);)-2546 47489 y Fa(137)-2546 48817 y(138)2490
+b Fd(/*)582 b(Assign)g(various)g(parameters.)h(*/)-2546
+50145 y Fa(139)-2546 51474 y(140)2490 b Fd(t0)1744 b(=)581
+b(ZERO;)-2546 52802 y Fa(141)2490 b Fd(t1)1744 b(=)581
+b(RCONST\(0.01\);)-2546 54130 y Fa(142)2490 b Fd(rtol)582
+b(=)f(ZERO;)-2546 55459 y Fa(143)2490 b Fd(atol)582 b(=)f
+(RCONST\(1.0e-3\);)-2546 56787 y Fa(144)-2546 58115 y(145)2490
+b Fd(/*)582 b(Call)f(IDACreate)i(and)f(IDAMalloc)g(to)g(initialize)g
+(solution)g(*/)-2546 59444 y Fa(146)-2546 60772 y(147)2490
+b Fd(mem)582 b(=)f(IDACreate\(\);)-2546 62100 y Fa(148)2490
+b Fd(if\(check_flag\(\(void)584 b(*\)mem,)e("IDACreate",)h(0\)\))f
+(return\(1\);)-2546 63429 y Fa(149)-2546 64757 y(150)2490
+b Fd(ier)582 b(=)f(IDASetRdata\(mem,)j(data\);)-2546
+66086 y Fa(151)2490 b Fd(if\(check_flag\(&ier,)584 b("IDASetRdata",)g
+(1\)\))d(return\(1\);)-2546 67414 y Fa(152)-2546 68742
+y(153)2490 b Fd(ier)582 b(=)f(IDASetConstraints\(mem,)k(constraints\);)
+-2546 70071 y Fa(154)2490 b Fd(if\(check_flag\(&ier,)584
+b("IDASetConstraints",)g(1\)\))e(return\(1\);)-2546 71399
+y Fa(155)2490 b Fd(N_VDestroy_Serial\(constraints\);)-2546
+72727 y Fa(156)-2546 74056 y(157)g Fd(ier)582 b(=)f(IDAMalloc\(mem,)i
+(resHeat,)g(t0,)e(uu,)h(up,)g(IDA_SS,)g(rtol,)g(&atol\);)-2546
+75384 y Fa(158)2490 b Fd(if\(check_flag\(&ier,)584 b("IDAMalloc",)f
+(1\)\))f(return\(1\);)-2546 76712 y Fa(159)-2546 78041
+y(160)2490 b Fd(/*)582 b(Call)f(IDASpgmr)i(to)e(specify)h(the)g(linear)
+g(solver.)g(*/)p Black 23394 81741 a Fp(38)p Black eop
+%%Page: 39 43
+39 42 bop Black Black 1454 7638 a Fa(161)1454 8966 y(162)2490
+b Fd(ier)582 b(=)f(IDASpgmr\(mem,)i(0\);)1454 10295 y
+Fa(163)2490 b Fd(if\(check_flag\(&ier,)584 b("IDASpgmr",)f(1\)\))f
+(return\(1\);)1454 11623 y Fa(164)1454 12951 y(165)2490
+b Fd(ier)582 b(=)f(IDASpgmrSetPreconditioner\(mem,)586
+b(PsetupHeat,)d(PsolveHeat,)f(data\);)1454 14280 y Fa(166)2490
+b Fd(if\(check_flag\(&ier,)584 b("IDASpgmrSetPreconditioner",)i(1\)\))
+581 b(return\(1\);)1454 15608 y Fa(167)1454 16936 y(168)2490
+b Fd(/*)582 b(Print)g(output)g(heading.)g(*/)1454 18265
+y Fa(169)2490 b Fd(PrintHeader\(rtol,)584 b(atol\);)1454
+19593 y Fa(170)1454 20922 y(171)2490 b Fd(/*)1454 22250
+y Fa(172)3071 b Fd(*)582 b
+(-------------------------------------------------------------------)p
+(------)1454 23578 y Fa(173)3071 b Fd(*)582 b(CASE)f(I)1454
+24907 y Fa(174)3071 b Fd(*)582 b
+(-------------------------------------------------------------------)p
+(------)1454 26235 y Fa(175)3071 b Fd(*/)1454 27563 y
+Fa(176)1454 28892 y(177)2490 b Fd(/*)582 b(Print)g(case)f(number,)i
+(output)f(table)g(heading,)g(and)f(initial)i(line)e(of)h(table.)g(*/)
+1454 30220 y Fa(178)1454 31548 y(179)2490 b Fd(printf\("\\n\\nCase)584
+b(1:)d(gsytpe)h(=)g(MODIFIED_GS\\n"\);)1454 32877 y Fa(180)2490
+b Fd(printf\("\\n)1745 b(Output)582 b(Summary)g(\(umax)g(=)g(max-norm)g
+(of)f(solution\))i(\\n\\n"\);)1454 34205 y Fa(181)2490
+b Fd(printf\(")1164 b(time)2906 b(umax)4069 b(k)1162
+b(nst)h(nni)g(nje)1744 b(nre)f(nreS)2907 b(h)3487 b(npe)581
+b(nps\\n")i(\);)1454 35533 y Fa(182)2490 b Fd
+(printf\("----------------------------------------------------------)p
+(------------\\n"\);)1454 36862 y Fa(183)1454 38190 y(184)g
+Fd(/*)582 b(Loop)f(over)h(output)g(times,)g(call)g(IDASolve,)h(and)e
+(print)h(results.)g(*/)1454 39518 y Fa(185)1454 40847
+y(186)2490 b Fd(for)582 b(\(tout)g(=)f(t1,iout)h(=)g(1;)f(iout)h(<=)f
+(NOUT)h(;)f(iout++,)h(tout)g(*=)g(TWO\))f({)1454 42175
+y Fa(187)3653 b Fd(ier)581 b(=)g(IDASolve\(mem,)j(tout,)d(&tret,)i(uu,)
+e(up,)h(IDA_NORMAL\);)1454 43504 y Fa(188)3653 b Fd
+(if\(check_flag\(&ier,)584 b("IDASolve",)e(1\)\))g(return\(1\);)1454
+44832 y Fa(189)3653 b Fd(PrintOutput\(mem,)583 b(tret,)f(uu\);)1454
+46160 y Fa(190)2490 b Fd(})1454 47489 y Fa(191)1454 48817
+y(192)g Fd(/*)582 b(Print)g(remaining)g(counters.)h(*/)1454
+50145 y Fa(193)1454 51474 y(194)2490 b Fd(ier)582 b(=)f
+(IDAGetNumErrTestFails\(mem,)k(&netf\);)1454 52802 y
+Fa(195)2490 b Fd(check_flag\(&ier,)584 b("IDAGetNumErrTestFails",)h
+(1\);)1454 54130 y Fa(196)1454 55459 y(197)2490 b Fd(ier)582
+b(=)f(IDAGetNumNonlinSolvConvFails\(mem,)586 b(&ncfn\);)1454
+56787 y Fa(198)2490 b Fd(check_flag\(&ier,)584 b
+("IDAGetNumNonlinSolvConvFails",)i(1\);)1454 58115 y
+Fa(199)1454 59444 y(200)2490 b Fd(ier)582 b(=)f
+(IDASpgmrGetNumConvFails\(mem,)586 b(&ncfl\);)1454 60772
+y Fa(201)2490 b Fd(check_flag\(&ier,)584 b("IDASpgmrGetNumConvFails",)h
+(1\);)1454 62100 y Fa(202)1454 63429 y(203)2490 b Fd(printf\("\\nError)
+584 b(test)d(failures)6975 b(=)582 b(\045ld\\n",)g(netf\);)1454
+64757 y Fa(204)2490 b Fd(printf\("Nonlinear)584 b(convergence)f
+(failures)f(=)f(\045ld\\n",)i(ncfn\);)1454 66086 y Fa(205)2490
+b Fd(printf\("Linear)584 b(convergence)e(failures)2326
+b(=)581 b(\045ld\\n",)i(ncfl\);)1454 67414 y Fa(206)1454
+68742 y(207)2490 b Fd(/*)1454 70071 y Fa(208)3071 b Fd(*)582
+b(-------------------------------------------------------------------)p
+(------)1454 71399 y Fa(209)3071 b Fd(*)582 b(CASE)f(II)1454
+72727 y Fa(210)3071 b Fd(*)582 b
+(-------------------------------------------------------------------)p
+(------)1454 74056 y Fa(211)3071 b Fd(*/)1454 75384 y
+Fa(212)1454 76712 y(213)2490 b Fd(/*)582 b(Re-initialize)h(uu,)e(up.)h
+(*/)1454 78041 y Fa(214)p Black 27394 81741 a Fp(39)p
+Black eop
+%%Page: 40 44
+40 43 bop Black Black -2546 7638 a Fa(215)2490 b Fd
+(SetInitialProfile\(data,)585 b(uu,)c(up,)h(res\);)-2546
+8966 y Fa(216)-2546 10295 y(217)2490 b Fd(/*)582 b(Re-initialize)h(IDA)
+e(and)h(IDASPGMR)g(*/)-2546 11623 y Fa(218)-2546 12951
+y(219)2490 b Fd(ier)582 b(=)f(IDAReInit\(mem,)i(resHeat,)g(t0,)e(uu,)h
+(up,)g(IDA_SS,)g(rtol,)g(&atol\);)-2546 14280 y Fa(220)2490
+b Fd(if\(check_flag\(&ier,)584 b("IDAReInit",)f(1\)\))f(return\(1\);)
+-2546 15608 y Fa(221)-2546 16936 y(222)2490 b Fd(ier)582
+b(=)f(IDASpgmrSetGSType\(mem,)k(CLASSICAL_GS\);)-2546
+18265 y Fa(223)2490 b Fd(if\(check_flag\(&ier,)584 b
+("IDASpgmrSetGSType",1\)\))h(return\(1\);)-2546 19593
+y Fa(224)-2546 20922 y(225)2490 b Fd(/*)582 b(Print)g(case)f(number,)i
+(output)f(table)g(heading,)g(and)f(initial)i(line)e(of)h(table.)g(*/)
+-2546 22250 y Fa(226)-2546 23578 y(227)2490 b Fd(printf\("\\n\\nCase)
+584 b(2:)d(gstype)h(=)g(CLASSICAL_GS\\n"\);)-2546 24907
+y Fa(228)2490 b Fd(printf\("\\n)1745 b(Output)582 b(Summary)g(\(umax)g
+(=)g(max-norm)g(of)f(solution\))i(\\n\\n"\);)-2546 26235
+y Fa(229)2490 b Fd(printf\(")1164 b(time)2906 b(umax)4069
+b(k)1162 b(nst)h(nni)g(nje)1744 b(nre)f(nreS)2907 b(h)3487
+b(npe)581 b(nps\\n")i(\);)-2546 27563 y Fa(230)2490 b
+Fd(printf\("----------------------------------------------------------)
+p(------------\\n"\);)-2546 28892 y Fa(231)-2546 30220
+y(232)g Fd(/*)582 b(Loop)f(over)h(output)g(times,)g(call)g(IDASolve,)h
+(and)e(print)h(results.)g(*/)-2546 31548 y Fa(233)-2546
+32877 y(234)2490 b Fd(for)582 b(\(tout)g(=)f(t1,iout)h(=)g(1;)f(iout)h
+(<=)f(NOUT)h(;)f(iout++,)h(tout)g(*=)g(TWO\))f({)-2546
+34205 y Fa(235)3653 b Fd(ier)581 b(=)g(IDASolve\(mem,)j(tout,)d(&tret,)
+i(uu,)e(up,)h(IDA_NORMAL\);)-2546 35533 y Fa(236)3653
+b Fd(if\(check_flag\(&ier,)584 b("IDASolve",)e(1\)\))g(return\(1\);)
+-2546 36862 y Fa(237)3653 b Fd(PrintOutput\(mem,)583
+b(tret,)f(uu\);)-2546 38190 y Fa(238)2490 b Fd(})-2546
+39518 y Fa(239)-2546 40847 y(240)g Fd(/*)582 b(Print)g(remaining)g
+(counters.)h(*/)-2546 42175 y Fa(241)-2546 43504 y(242)2490
+b Fd(ier)582 b(=)f(IDAGetNumErrTestFails\(mem,)k(&netf\);)-2546
+44832 y Fa(243)2490 b Fd(check_flag\(&ier,)584 b
+("IDAGetNumErrTestFails",)h(1\);)-2546 46160 y Fa(244)-2546
+47489 y(245)2490 b Fd(ier)582 b(=)f(IDAGetNumNonlinSolvConvFails\(mem,)
+586 b(&ncfn\);)-2546 48817 y Fa(246)2490 b Fd(check_flag\(&ier,)584
+b("IDAGetNumNonlinSolvConvFails",)i(1\);)-2546 50145
+y Fa(247)-2546 51474 y(248)2490 b Fd(ier)582 b(=)f
+(IDASpgmrGetNumConvFails\(mem,)586 b(&ncfl\);)-2546 52802
+y Fa(249)2490 b Fd(check_flag\(&ier,)584 b("IDASpgmrGetNumConvFails",)h
+(1\);)-2546 54130 y Fa(250)-2546 55459 y(251)2490 b Fd
+(printf\("\\nError)584 b(test)d(failures)6975 b(=)582
+b(\045ld\\n",)g(netf\);)-2546 56787 y Fa(252)2490 b Fd
+(printf\("Nonlinear)584 b(convergence)f(failures)f(=)f(\045ld\\n",)i
+(ncfn\);)-2546 58115 y Fa(253)2490 b Fd(printf\("Linear)584
+b(convergence)e(failures)2326 b(=)581 b(\045ld\\n",)i(ncfl\);)-2546
+59444 y Fa(254)-2546 60772 y(255)2490 b Fd(/*)582 b(Free)f(Memory)i(*/)
+-2546 62100 y Fa(256)-2546 63429 y(257)2490 b Fd(IDAFree\(mem\);)-2546
+64757 y Fa(258)-2546 66086 y(259)g Fd(N_VDestroy_Serial\(uu\);)-2546
+67414 y Fa(260)g Fd(N_VDestroy_Serial\(up\);)-2546 68742
+y Fa(261)g Fd(N_VDestroy_Serial\(res\);)-2546 70071 y
+Fa(262)-2546 71399 y(263)g Fd(N_VDestroy_Serial\(data->pp\);)-2546
+72727 y Fa(264)g Fd(free\(data\);)-2546 74056 y Fa(265)-2546
+75384 y(266)g Fd(return\(0\);)-2546 76712 y Fa(267)1328
+b Fd(})-2546 78041 y Fa(268)p Black 23394 81741 a Fp(40)p
+Black eop
+%%Page: 41 45
+41 44 bop Black Black 1454 7638 a Fa(269)1328 b Fd(/*)1454
+8966 y Fa(270)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1454 10295 y Fa(271)g Fd(*)581 b(FUNCTIONS)i(CALLED)f(BY)f(IDA)1454
+11623 y Fa(272)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1454 12951 y Fa(273)g Fd(*/)1454 14280 y Fa(274)1454
+15608 y(275)1328 b Fd(/*)1454 16936 y Fa(276)1909 b Fd(*)581
+b(resHeat:)i(heat)f(equation)g(system)g(residual)g(function)h
+(\(user-supplied\))1454 18265 y Fa(277)1909 b Fd(*)581
+b(This)h(uses)g(5-point)g(central)g(differencing)h(on)f(the)f(interior)
+i(points,)f(and)1454 19593 y Fa(278)1909 b Fd(*)581 b(includes)i
+(algebraic)f(equations)h(for)e(the)h(boundary)g(values.)1454
+20922 y Fa(279)1909 b Fd(*)581 b(So)h(for)f(each)h(interior)h(point,)f
+(the)f(residual)i(component)f(has)g(the)f(form)1454 22250
+y Fa(280)1909 b Fd(*)2325 b(res_i)582 b(=)f(u'_i)h(-)f(\(central)h
+(difference\)_i)1454 23578 y Fa(281)1909 b Fd(*)581 b(while)h(for)g
+(each)g(boundary)g(point,)g(it)g(is)f(res_i)h(=)f(u_i.)1454
+24907 y Fa(282)1909 b Fd(*/)1454 26235 y Fa(283)1454
+27563 y(284)1328 b Fd(int)582 b(resHeat\(realtype)h(tt,)1454
+28892 y Fa(285)8302 b Fd(N_Vector)582 b(uu,)g(N_Vector)g(up,)g
+(N_Vector)g(rr,)1454 30220 y Fa(286)8302 b Fd(void)582
+b(*res_data\))1454 31548 y Fa(287)1328 b Fd({)1454 32877
+y Fa(288)2490 b Fd(long)582 b(int)g(i,)f(j,)h(offset,)g(loc,)f(mm;)1454
+34205 y Fa(289)2490 b Fd(realtype)583 b(*uu_data,)f(*up_data,)h
+(*rr_data,)f(coeff,)g(dif1,)g(dif2;)1454 35533 y Fa(290)2490
+b Fd(UserData)583 b(data;)1454 36862 y Fa(291)1454 38190
+y(292)2490 b Fd(uu_data)582 b(=)g(NV_DATA_S\(uu\);)1454
+39518 y Fa(293)2490 b Fd(up_data)582 b(=)g(NV_DATA_S\(up\);)1454
+40847 y Fa(294)2490 b Fd(rr_data)582 b(=)g(NV_DATA_S\(rr\);)1454
+42175 y Fa(295)1454 43504 y(296)2490 b Fd(data)582 b(=)f(\(UserData\))i
+(res_data;)1454 44832 y Fa(297)1454 46160 y(298)2490
+b Fd(coeff)582 b(=)f(data->coeff;)1454 47489 y Fa(299)2490
+b Fd(mm)2325 b(=)581 b(data->mm;)1454 48817 y Fa(300)1454
+50145 y(301)2490 b Fd(/*)582 b(Initialize)g(rr)g(to)f(uu,)h(to)f(take)h
+(care)g(of)f(boundary)i(equations.)f(*/)1454 51474 y
+Fa(302)2490 b Fd(N_VScale\(ONE,)583 b(uu,)f(rr\);)1454
+52802 y Fa(303)1454 54130 y(304)2490 b Fd(/*)582 b(Loop)f(over)h
+(interior)h(points;)f(set)f(res)h(=)f(up)h(-)f(\(central)h
+(difference\).)h(*/)1454 55459 y Fa(305)2490 b Fd(for)582
+b(\(j)f(=)h(1;)f(j)g(<)h(MGRID-1;)g(j++\))g({)1454 56787
+y Fa(306)3653 b Fd(offset)582 b(=)f(mm*j;)1454 58115
+y Fa(307)3653 b Fd(for)581 b(\(i)h(=)f(1;)g(i)h(<)f(mm-1;)h(i++\))g({)
+1454 59444 y Fa(308)4815 b Fd(loc)581 b(=)h(offset)g(+)f(i;)1454
+60772 y Fa(309)4815 b Fd(dif1)582 b(=)f(uu_data[loc-1])1164
+b(+)582 b(uu_data[loc+1])1164 b(-)581 b(TWO)h(*)f(uu_data[loc];)1454
+62100 y Fa(310)4815 b Fd(dif2)582 b(=)f(uu_data[loc-mm])i(+)f
+(uu_data[loc+mm])h(-)e(TWO)h(*)f(uu_data[loc];)1454 63429
+y Fa(311)4815 b Fd(rr_data[loc]=)583 b(up_data[loc])g(-)e(coeff)h(*)f
+(\()h(dif1)f(+)h(dif2)f(\);)1454 64757 y Fa(312)3653
+b Fd(})1454 66086 y Fa(313)2490 b Fd(})1454 67414 y Fa(314)1454
+68742 y(315)g Fd(return\(0\);)1454 70071 y Fa(316)1328
+b Fd(})1454 71399 y Fa(317)1454 72727 y(318)g Fd(/*)1454
+74056 y Fa(319)1909 b Fd(*)581 b(PsetupHeat:)i(setup)f(for)g(diagonal)g
+(preconditioner)h(for)f(iheatsk.)1454 75384 y Fa(320)1909
+b Fd(*)1454 76712 y Fa(321)g Fd(*)581 b(The)h(optional)g(user-supplied)
+h(functions)g(PsetupHeat)g(and)1454 78041 y Fa(322)1909
+b Fd(*)581 b(PsolveHeat)i(together)f(must)g(define)g(the)g(left)g
+(preconditoner)p Black 27394 81741 a Fp(41)p Black eop
+%%Page: 42 46
+42 45 bop Black Black -2546 7638 a Fa(323)1909 b Fd(*)581
+b(matrix)h(P)g(approximating)h(the)e(system)i(Jacobian)f(matrix)-2546
+8966 y Fa(324)1909 b Fd(*)11042 b(J)581 b(=)h(dF/du)g(+)f(cj*dF/du')
+-2546 10295 y Fa(325)1909 b Fd(*)581 b(\(where)h(the)g(DAE)g(system)g
+(is)f(F\(t,u,u'\))i(=)e(0\),)h(and)f(solve)h(the)g(linear)-2546
+11623 y Fa(326)1909 b Fd(*)581 b(systems)i(P)e(z)g(=)h(r.)1743
+b(This)582 b(is)f(done)h(in)g(this)f(case)h(by)g(keeping)g(only)-2546
+12951 y Fa(327)1909 b Fd(*)581 b(the)h(diagonal)g(elements)h(of)e(the)h
+(J)f(matrix)h(above,)g(storing)g(them)g(as)-2546 14280
+y Fa(328)1909 b Fd(*)581 b(inverses)i(in)e(a)h(vector)g(pp,)f(when)h
+(computed)g(in)g(PsetupHeat,)g(for)-2546 15608 y Fa(329)1909
+b Fd(*)581 b(subsequent)i(use)f(in)f(PsolveHeat.)-2546
+16936 y Fa(330)1909 b Fd(*)-2546 18265 y Fa(331)g Fd(*)581
+b(In)h(this)g(instance,)g(only)g(cj)f(and)h(data)g(\(user)g(data)f
+(structure,)i(with)-2546 19593 y Fa(332)1909 b Fd(*)581
+b(pp)h(etc.\))g(are)f(used)h(from)g(the)f(PsetupdHeat)i(argument)g
+(list.)-2546 20922 y Fa(333)1909 b Fd(*/)-2546 22250
+y Fa(334)-2546 23578 y(335)1328 b Fd(int)582 b(PsetupHeat\(realtype)i
+(tt,)-2546 24907 y Fa(336)10045 b Fd(N_Vector)583 b(uu,)e(N_Vector)i
+(up,)e(N_Vector)h(rr,)-2546 26235 y Fa(337)10045 b Fd(realtype)583
+b(c_j,)e(void)h(*prec_data,)-2546 27563 y Fa(338)10045
+b Fd(N_Vector)583 b(tmp1,)e(N_Vector)i(tmp2,)f(N_Vector)g(tmp3\))-2546
+28892 y Fa(339)1328 b Fd({)-2546 30220 y Fa(340)-2546
+31548 y(341)2490 b Fd(long)582 b(int)g(i,)f(j,)h(offset,)g(loc,)f(mm;)
+-2546 32877 y Fa(342)2490 b Fd(realtype)583 b(*ppv,)f(pelinv;)-2546
+34205 y Fa(343)2490 b Fd(UserData)583 b(data;)-2546 35533
+y Fa(344)-2546 36862 y(345)2490 b Fd(data)582 b(=)f(\(UserData\))i
+(prec_data;)-2546 38190 y Fa(346)2490 b Fd(ppv)582 b(=)f
+(NV_DATA_S\(data->pp\);)-2546 39518 y Fa(347)2490 b Fd(mm)582
+b(=)f(data->mm;)-2546 40847 y Fa(348)-2546 42175 y(349)2490
+b Fd(/*)582 b(Initialize)g(the)g(entire)g(vector)g(to)g(1.,)f(then)h
+(set)f(the)h(interior)g(points)g(to)g(the)-2546 43504
+y Fa(350)4234 b Fd(correct)582 b(value)g(for)f(preconditioning.)j(*/)
+-2546 44832 y Fa(351)2490 b Fd(N_VConst\(ONE,data->pp\);)-2546
+46160 y Fa(352)-2546 47489 y(353)g Fd(/*)582 b(Compute)g(the)g(inverse)
+g(of)f(the)h(preconditioner)h(diagonal)f(elements.)h(*/)-2546
+48817 y Fa(354)2490 b Fd(pelinv)582 b(=)g(ONE/\(c_j)g(+)f
+(FOUR*data->coeff\);)-2546 50145 y Fa(355)-2546 51474
+y(356)2490 b Fd(for)582 b(\(j)f(=)h(1;)f(j)g(<)h(mm-1;)g(j++\))f({)
+-2546 52802 y Fa(357)3653 b Fd(offset)582 b(=)f(mm)g(*)h(j;)-2546
+54130 y Fa(358)3653 b Fd(for)581 b(\(i)h(=)f(1;)g(i)h(<)f(mm-1;)h
+(i++\))g({)-2546 55459 y Fa(359)4815 b Fd(loc)581 b(=)h(offset)g(+)f
+(i;)-2546 56787 y Fa(360)4815 b Fd(ppv[loc])582 b(=)g(pelinv;)-2546
+58115 y Fa(361)3653 b Fd(})-2546 59444 y Fa(362)2490
+b Fd(})-2546 60772 y Fa(363)-2546 62100 y(364)g Fd(return\(0\);)-2546
+63429 y Fa(365)1328 b Fd(})-2546 64757 y Fa(366)-2546
+66086 y(367)g Fd(/*)-2546 67414 y Fa(368)1909 b Fd(*)581
+b(PsolveHeat:)i(solve)f(preconditioner)h(linear)f(system.)-2546
+68742 y Fa(369)1909 b Fd(*)581 b(This)h(routine)g(multiplies)h(the)f
+(input)g(vector)g(rvec)f(by)h(the)f(vector)h(pp)-2546
+70071 y Fa(370)1909 b Fd(*)581 b(containing)i(the)f(inverse)g(diagonal)
+g(Jacobian)h(elements)f(\(previously)-2546 71399 y Fa(371)1909
+b Fd(*)581 b(computed)i(in)e(PrecondHeateq\),)j(returning)e(the)g
+(result)g(in)f(zvec.)-2546 72727 y Fa(372)1909 b Fd(*/)-2546
+74056 y Fa(373)-2546 75384 y(374)1328 b Fd(int)582 b
+(PsolveHeat\(realtype)i(tt,)-2546 76712 y Fa(375)10045
+b Fd(N_Vector)583 b(uu,)e(N_Vector)i(up,)e(N_Vector)h(rr,)-2546
+78041 y Fa(376)10045 b Fd(N_Vector)583 b(rvec,)e(N_Vector)i(zvec,)p
+Black 23394 81741 a Fp(42)p Black eop
+%%Page: 43 47
+43 46 bop Black Black 1454 7638 a Fa(377)10045 b Fd(realtype)583
+b(c_j,)e(realtype)i(delta,)f(void)f(*prec_data,)1454
+8966 y Fa(378)10045 b Fd(N_Vector)583 b(tmp\))1454 10295
+y Fa(379)1328 b Fd({)1454 11623 y Fa(380)2490 b Fd(UserData)583
+b(data;)1454 12951 y Fa(381)2490 b Fd(data)582 b(=)f(\(UserData\))i
+(prec_data;)1454 14280 y Fa(382)2490 b Fd(N_VProd\(data->pp,)584
+b(rvec,)e(zvec\);)1454 15608 y Fa(383)2490 b Fd(return\(0\);)1454
+16936 y Fa(384)1328 b Fd(})1454 18265 y Fa(385)1454 19593
+y(386)g Fd(/*)1454 20922 y Fa(387)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1454 22250 y Fa(388)g Fd(*)581 b(PRIVATE)i(FUNCTIONS)1454
+23578 y Fa(389)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1454 24907 y Fa(390)g Fd(*/)1454 26235 y Fa(391)1454
+27563 y(392)1328 b Fd(/*)1454 28892 y Fa(393)1909 b Fd(*)581
+b(SetInitialProfile:)j(routine)e(to)g(initialize)h(u)e(and)g(up)h
+(vectors.)1454 30220 y Fa(394)1909 b Fd(*/)1454 31548
+y Fa(395)1454 32877 y(396)1328 b Fd(static)582 b(int)g
+(SetInitialProfile\(UserData)j(data,)d(N_Vector)g(uu,)f(N_Vector)i(up,)
+1454 34205 y Fa(397)18181 b Fd(N_Vector)583 b(res\))1454
+35533 y Fa(398)1328 b Fd({)1454 36862 y Fa(399)2490 b
+Fd(long)582 b(int)g(mm,)f(mm1,)h(i,)f(j,)h(offset,)g(loc;)1454
+38190 y Fa(400)2490 b Fd(realtype)583 b(xfact,)f(yfact,)g(*udata,)g
+(*updata;)1454 39518 y Fa(401)1454 40847 y(402)2490 b
+Fd(mm)582 b(=)f(data->mm;)1454 42175 y Fa(403)1454 43504
+y(404)2490 b Fd(udata)582 b(=)f(NV_DATA_S\(uu\);)1454
+44832 y Fa(405)2490 b Fd(updata)582 b(=)g(NV_DATA_S\(up\);)1454
+46160 y Fa(406)1454 47489 y(407)2490 b Fd(/*)582 b(Initialize)g(uu)g
+(on)f(all)h(grid)g(points.)g(*/)1454 48817 y Fa(408)2490
+b Fd(mm1)582 b(=)f(mm)h(-)f(1;)1454 50145 y Fa(409)2490
+b Fd(for)582 b(\(j)f(=)h(0;)f(j)g(<)h(mm;)f(j++\))h({)1454
+51474 y Fa(410)3653 b Fd(yfact)581 b(=)h(data->dx)g(*)f(j;)1454
+52802 y Fa(411)3653 b Fd(offset)582 b(=)f(mm*j;)1454
+54130 y Fa(412)3653 b Fd(for)581 b(\(i)h(=)f(0;i)h(<)f(mm;)g(i++\))h({)
+1454 55459 y Fa(413)4815 b Fd(xfact)582 b(=)f(data->dx)h(*)g(i;)1454
+56787 y Fa(414)4815 b Fd(loc)581 b(=)h(offset)g(+)f(i;)1454
+58115 y Fa(415)4815 b Fd(udata[loc])583 b(=)e(RCONST\(16.0\))i(*)e
+(xfact)h(*)f(\(ONE)h(-)f(xfact\))h(*)g(yfact)g(*)f(\(ONE)h(-)f
+(yfact\);)1454 59444 y Fa(416)3653 b Fd(})1454 60772
+y Fa(417)2490 b Fd(})1454 62100 y Fa(418)1454 63429 y(419)g
+Fd(/*)582 b(Initialize)g(up)g(vector)g(to)f(0.)h(*/)1454
+64757 y Fa(420)2490 b Fd(N_VConst\(ZERO,)584 b(up\);)1454
+66086 y Fa(421)1454 67414 y(422)2490 b Fd(/*)582 b(resHeat)g(sets)g
+(res)f(to)h(negative)g(of)g(ODE)f(RHS)h(values)g(at)f(interior)i
+(points.)f(*/)1454 68742 y Fa(423)2490 b Fd(resHeat\(ZERO,)583
+b(uu,)f(up,)g(res,)f(data\);)1454 70071 y Fa(424)1454
+71399 y(425)2490 b Fd(/*)582 b(Copy)f(-res)h(into)g(up)f(to)h(get)f
+(correct)i(interior)f(initial)g(up)g(values.)g(*/)1454
+72727 y Fa(426)2490 b Fd(N_VScale\(-ONE,)584 b(res,)d(up\);)1454
+74056 y Fa(427)1454 75384 y(428)2490 b Fd(/*)582 b(Set)f(up)h(at)f
+(boundary)i(points)f(to)f(zero.)h(*/)1454 76712 y Fa(429)2490
+b Fd(for)582 b(\(j)f(=)h(0;)f(j)g(<)h(mm;)f(j++\))h({)1454
+78041 y Fa(430)3653 b Fd(offset)582 b(=)f(mm*j;)p Black
+27394 81741 a Fp(43)p Black eop
+%%Page: 44 48
+44 47 bop Black Black -2546 7638 a Fa(431)3653 b Fd(for)581
+b(\(i)h(=)f(0;)g(i)h(<)f(mm;)h(i++\))f({)-2546 8966 y
+Fa(432)4815 b Fd(loc)581 b(=)h(offset)g(+)f(i;)-2546
+10295 y Fa(433)4815 b Fd(if)581 b(\(j)h(==)f(0)h(||)f(j)g(==)h(mm1)f
+(||)h(i)f(==)h(0)f(||)g(i)h(==)f(mm1)h(\))f(updata[loc])i(=)e(ZERO;)
+-2546 11623 y Fa(434)3653 b Fd(})-2546 12951 y Fa(435)2490
+b Fd(})-2546 14280 y Fa(436)-2546 15608 y(437)g Fd(return\(0\);)-2546
+16936 y Fa(438)g Fd(})-2546 18265 y Fa(439)-2546 19593
+y(440)1328 b Fd(/*)-2546 20922 y Fa(441)1909 b Fd(*)581
+b(Print)h(first)g(lines)g(of)g(output)g(\(problem)g(description\))-2546
+22250 y Fa(442)1909 b Fd(*/)-2546 23578 y Fa(443)-2546
+24907 y(444)1328 b Fd(static)582 b(void)g(PrintHeader\(realtype)i
+(rtol,)e(realtype)g(atol\))-2546 26235 y Fa(445)1328
+b Fd({)-2546 27563 y Fa(446)2490 b Fd(printf\("\\niheatsk:)584
+b(Heat)e(equation,)g(serial)g(example)h(problem)f(for)f(IDA)h(\\n"\);)
+-2546 28892 y Fa(447)2490 b Fd(printf\(")5232 b(Discretized)583
+b(heat)e(equation)i(on)e(2D)h(unit)f(square.)i(\\n"\);)-2546
+30220 y Fa(448)2490 b Fd(printf\(")5232 b(Zero)582 b(boundary)g
+(conditions,"\);)-2546 31548 y Fa(449)2490 b Fd(printf\(")583
+b(polynomial)f(initial)g(conditions.\\n"\);)-2546 32877
+y Fa(450)2490 b Fd(printf\(")5232 b(Mesh)582 b(dimensions:)g(\045d)g(x)
+f(\045d",)h(MGRID,)g(MGRID\);)-2546 34205 y Fa(451)2490
+b Fd(printf\(")4651 b(Total)582 b(system)g(size:)g(\045d\\n\\n",)g
+(NEQ\);)-2546 35533 y Fa(452)1328 b Fd(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546 36862 y
+Fa(453)2490 b Fd(printf\("Tolerance)584 b(parameters:)1164
+b(rtol)582 b(=)f(\045Lg)1744 b(atol)582 b(=)f(\045Lg\\n",)h(rtol,)g
+(atol\);)-2546 38190 y Fa(454)1328 b Fd(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546 39518 y Fa(455)2490
+b Fd(printf\("Tolerance)584 b(parameters:)1164 b(rtol)582
+b(=)f(\045lg)1744 b(atol)582 b(=)f(\045lg\\n",)h(rtol,)g(atol\);)-2546
+40847 y Fa(456)1328 b Fd(#else)-2546 42175 y Fa(457)2490
+b Fd(printf\("Tolerance)584 b(parameters:)1164 b(rtol)582
+b(=)f(\045g)1744 b(atol)581 b(=)h(\045g\\n",)g(rtol,)g(atol\);)-2546
+43504 y Fa(458)1328 b Fd(#endif)-2546 44832 y Fa(459)2490
+b Fd(printf\("Constraints)584 b(set)e(to)f(force)h(all)g(solution)g
+(components)h(>=)e(0.)h(\\n"\);)-2546 46160 y Fa(460)2490
+b Fd(printf\("Linear)584 b(solver:)e(IDASPGMR,)g(preconditioner)h
+(using)f(diagonal)h(elements.)f(\\n"\);)-2546 47489 y
+Fa(461)1328 b Fd(})-2546 48817 y Fa(462)-2546 50145 y(463)g
+Fd(/*)-2546 51474 y Fa(464)1909 b Fd(*)581 b(PrintOutput:)i(print)f
+(max)g(norm)g(of)f(solution)h(and)g(current)g(solver)g(statistics)-2546
+52802 y Fa(465)1909 b Fd(*/)-2546 54130 y Fa(466)-2546
+55459 y(467)1328 b Fd(static)582 b(void)g(PrintOutput\(void)h(*mem,)f
+(realtype)h(t,)e(N_Vector)h(uu\))-2546 56787 y Fa(468)1328
+b Fd({)-2546 58115 y Fa(469)2490 b Fd(realtype)583 b(hused,)f(umax;)
+-2546 59444 y Fa(470)2490 b Fd(long)582 b(int)g(nst,)f(nni,)h(nje,)g
+(nre,)g(nreS,)g(nli,)f(npe,)h(nps;)-2546 60772 y Fa(471)2490
+b Fd(int)582 b(kused,)g(ier;)-2546 62100 y Fa(472)-2546
+63429 y(473)2490 b Fd(umax)582 b(=)f(N_VMaxNorm\(uu\);)-2546
+64757 y Fa(474)-2546 66086 y(475)2490 b Fd(ier)582 b(=)f
+(IDAGetLastOrder\(mem,)j(&kused\);)-2546 67414 y Fa(476)2490
+b Fd(check_flag\(&ier,)584 b("IDAGetLastOrder",)g(1\);)-2546
+68742 y Fa(477)2490 b Fd(ier)582 b(=)f(IDAGetNumSteps\(mem,)j(&nst\);)
+-2546 70071 y Fa(478)2490 b Fd(check_flag\(&ier,)584
+b("IDAGetNumSteps",)g(1\);)-2546 71399 y Fa(479)2490
+b Fd(ier)582 b(=)f(IDAGetNumNonlinSolvIters\(mem,)586
+b(&nni\);)-2546 72727 y Fa(480)2490 b Fd(check_flag\(&ier,)584
+b("IDAGetNumNonlinSolvIters",)h(1\);)-2546 74056 y Fa(481)2490
+b Fd(ier)582 b(=)f(IDAGetNumResEvals\(mem,)k(&nre\);)-2546
+75384 y Fa(482)2490 b Fd(check_flag\(&ier,)584 b("IDAGetNumResEvals",)g
+(1\);)-2546 76712 y Fa(483)2490 b Fd(ier)582 b(=)f
+(IDAGetLastStep\(mem,)j(&hused\);)-2546 78041 y Fa(484)2490
+b Fd(check_flag\(&ier,)584 b("IDAGetLastStep",)g(1\);)p
+Black 23394 81741 a Fp(44)p Black eop
+%%Page: 45 49
+45 48 bop Black Black 1454 7638 a Fa(485)2490 b Fd(ier)582
+b(=)f(IDASpgmrGetNumJtimesEvals\(mem,)586 b(&nje\);)1454
+8966 y Fa(486)2490 b Fd(check_flag\(&ier,)584 b
+("IDASpgmrGetNumJtimesEvals",)h(1\);)1454 10295 y Fa(487)2490
+b Fd(ier)582 b(=)f(IDASpgmrGetNumLinIters\(mem,)k(&nli\);)1454
+11623 y Fa(488)2490 b Fd(check_flag\(&ier,)584 b
+("IDASpgmrGetNumLinIters",)h(1\);)1454 12951 y Fa(489)2490
+b Fd(ier)582 b(=)f(IDASpgmrGetNumResEvals\(mem,)k(&nreS\);)1454
+14280 y Fa(490)2490 b Fd(check_flag\(&ier,)584 b
+("IDASpgmrGetNumResEvals",)h(1\);)1454 15608 y Fa(491)2490
+b Fd(ier)582 b(=)f(IDASpgmrGetNumPrecEvals\(mem,)586
+b(&npe\);)1454 16936 y Fa(492)2490 b Fd(check_flag\(&ier,)584
+b("IDASpgmrGetPrecEvals",)g(1\);)1454 18265 y Fa(493)2490
+b Fd(ier)582 b(=)f(IDASpgmrGetNumPrecSolves\(mem,)586
+b(&nps\);)1454 19593 y Fa(494)2490 b Fd(check_flag\(&ier,)584
+b("IDASpgmrGetNumPrecSolves",)h(1\);)1454 20922 y Fa(495)1454
+22250 y(496)1328 b Fd(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))
+1454 23578 y Fa(497)2490 b Fd(printf\(")583 b(\0455.2Lf)f(\04513.5Le)
+1163 b(\045d)g(\0453ld)g(\0453ld)f(\0453ld)h(\0454ld)g(\0454ld)g
+(\0459.2Le)g(\0453ld)582 b(\0453ld\\n",)1454 24907 y
+Fa(498)6558 b Fd(t,)582 b(umax,)g(kused,)g(nst,)f(nni,)h(nje,)g(nre,)g
+(nreS,)g(hused,)g(npe,)f(nps\);)1454 26235 y Fa(499)1328
+b Fd(#elif)582 b(defined\(SUNDIALS_DOUBLE_PRECISION\))1454
+27563 y Fa(500)2490 b Fd(printf\(")583 b(\0455.2f)f(\04513.5le)1163
+b(\045d)f(\0453ld)h(\0453ld)g(\0453ld)g(\0454ld)g(\0454ld)g(\0459.2le)g
+(\0453ld)582 b(\0453ld\\n",)1454 28892 y Fa(501)6558
+b Fd(t,)582 b(umax,)g(kused,)g(nst,)f(nni,)h(nje,)g(nre,)g(nreS,)g
+(hused,)g(npe,)f(nps\);)1454 30220 y Fa(502)1328 b Fd(#else)1454
+31548 y Fa(503)2490 b Fd(printf\(")583 b(\0455.2f)f(\04513.5e)1163
+b(\045d)f(\0453ld)h(\0453ld)g(\0453ld)g(\0454ld)g(\0454ld)g(\0459.2e)g
+(\0453ld)582 b(\0453ld\\n",)1454 32877 y Fa(504)6558
+b Fd(t,)582 b(umax,)g(kused,)g(nst,)f(nni,)h(nje,)g(nre,)g(nreS,)g
+(hused,)g(npe,)f(nps\);)1454 34205 y Fa(505)1328 b Fd(#endif)1454
+35533 y Fa(506)g Fd(})1454 36862 y Fa(507)1454 38190
+y(508)g Fd(/*)1454 39518 y Fa(509)1909 b Fd(*)581 b(Check)h(function)h
+(return)f(value...)1454 40847 y Fa(510)1909 b Fd(*)1744
+b(opt)581 b(==)h(0)f(means)h(SUNDIALS)g(function)h(allocates)f(memory)g
+(so)g(check)g(if)1454 42175 y Fa(511)1909 b Fd(*)6974
+b(returned)582 b(NULL)g(pointer)1454 43504 y Fa(512)1909
+b Fd(*)1744 b(opt)581 b(==)h(1)f(means)h(SUNDIALS)g(function)h(returns)
+f(a)f(flag)h(so)f(check)h(if)1454 44832 y Fa(513)1909
+b Fd(*)6974 b(flag)582 b(>=)f(0)1454 46160 y Fa(514)1909
+b Fd(*)1744 b(opt)581 b(==)h(2)f(means)h(function)g(allocates)h(memory)
+f(so)f(check)h(if)g(returned)1454 47489 y Fa(515)1909
+b Fd(*)6974 b(NULL)582 b(pointer)1454 48817 y Fa(516)1909
+b Fd(*/)1454 50145 y Fa(517)1454 51474 y(518)1328 b Fd(static)582
+b(int)g(check_flag\(void)h(*flagvalue,)g(char)f(*funcname,)g(int)g
+(opt\))1454 52802 y Fa(519)1328 b Fd({)1454 54130 y Fa(520)2490
+b Fd(int)582 b(*errflag;)1454 55459 y Fa(521)1454 56787
+y(522)2490 b Fd(/*)582 b(Check)g(if)f(SUNDIALS)h(function)h(returned)f
+(NULL)g(pointer)g(-)f(no)h(memory)g(allocated)g(*/)1454
+58115 y Fa(523)2490 b Fd(if)582 b(\(opt)f(==)h(0)f(&&)h(flagvalue)g(==)
+g(NULL\))g({)1454 59444 y Fa(524)3653 b Fd(fprintf\(stderr,)1454
+60772 y Fa(525)8302 b Fd("\\nSUNDIALS_ERROR:)584 b(\045s\(\))d(failed)h
+(-)g(returned)g(NULL)g(pointer\\n\\n",)1454 62100 y Fa(526)8302
+b Fd(funcname\);)1454 63429 y Fa(527)3653 b Fd(return\(1\);)1454
+64757 y Fa(528)2490 b Fd(})582 b(else)f(if)h(\(opt)g(==)f(1\))g({)1454
+66086 y Fa(529)3653 b Fd(/*)581 b(Check)h(if)f(flag)h(<)f(0)h(*/)1454
+67414 y Fa(530)3653 b Fd(errflag)582 b(=)f(\(int)h(*\))f(flagvalue;)
+1454 68742 y Fa(531)3653 b Fd(if)581 b(\(*errflag)i(<)e(0\))g({)1454
+70071 y Fa(532)4815 b Fd(fprintf\(stderr,)1454 71399
+y Fa(533)9464 b Fd("\\nSUNDIALS_ERROR:)584 b(\045s\(\))e(failed)g(with)
+f(flag)h(=)f(\045d\\n\\n",)1454 72727 y Fa(534)9464 b
+Fd(funcname,)583 b(*errflag\);)1454 74056 y Fa(535)4815
+b Fd(return\(1\);)1454 75384 y Fa(536)3653 b Fd(})1454
+76712 y Fa(537)2490 b Fd(})582 b(else)f(if)h(\(opt)g(==)f(2)g(&&)h
+(flagvalue)g(==)g(NULL\))g({)1454 78041 y Fa(538)3653
+b Fd(/*)581 b(Check)h(if)f(function)i(returned)f(NULL)g(pointer)g(-)f
+(no)h(memory)g(allocated)g(*/)p Black 27394 81741 a Fp(45)p
+Black eop
+%%Page: 46 50
+46 49 bop Black Black -2546 7638 a Fa(539)3653 b Fd(fprintf\(stderr,)
+-2546 8966 y Fa(540)8302 b Fd("\\nMEMORY_ERROR:)583 b(\045s\(\))f
+(failed)g(-)f(returned)i(NULL)e(pointer\\n\\n",)-2546
+10295 y Fa(541)8302 b Fd(funcname\);)-2546 11623 y Fa(542)3653
+b Fd(return\(1\);)-2546 12951 y Fa(543)2490 b Fd(})-2546
+14280 y Fa(544)-2546 15608 y(545)g Fd(return\(0\);)-2546
+16936 y Fa(546)1328 b Fd(})p Black 23394 81741 a Fp(46)p
+Black eop
+%%Page: 47 51
+47 50 bop Black Black 4000 7638 a Fo(D)1794 b(Listing)599
+b(of)e Fb(iheatpk.c)2266 10674 y Fa(1)1328 b Fd(/*)2266
+12003 y Fa(2)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)2266
+13331 y Fa(3)1909 b Fd(*)581 b($Revision:)i(1.15.2.3)f($)2266
+14659 y Fa(4)1909 b Fd(*)581 b($Date:)h(2005/04/06)h(23:34:20)f($)2266
+15988 y Fa(5)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)2266
+17316 y Fa(6)1909 b Fd(*)581 b(Programmer\(s\):)j(Allan)e(Taylor,)g
+(Alan)g(Hindmarsh)g(and)2266 18645 y Fa(7)1909 b Fd(*)9299
+b(Radu)581 b(Serban)h(@)g(LLNL)2266 19973 y Fa(8)1909
+b Fd(*)581 b
+(-----------------------------------------------------------------)2266
+21301 y Fa(9)1909 b Fd(*)581 b(Example)i(problem)f(for)f(IDA:)h(2D)g
+(heat)f(equation,)i(parallel,)f(GMRES.)1860 22630 y Fa(10)1909
+b Fd(*)1860 23958 y Fa(11)g Fd(*)581 b(This)h(example)g(solves)g(a)g
+(discretized)h(2D)e(heat)h(equation)g(problem.)1860 25286
+y Fa(12)1909 b Fd(*)581 b(This)h(version)g(uses)g(the)g(Krylov)g
+(solver)g(IDASpgmr.)1860 26615 y Fa(13)1909 b Fd(*)1860
+27943 y Fa(14)g Fd(*)581 b(The)h(DAE)g(system)g(solved)g(is)f(a)g
+(spatial)i(discretization)g(of)e(the)h(PDE)1860 29271
+y Fa(15)1909 b Fd(*)5812 b(du/dt)582 b(=)f(d^2u/dx^2)h(+)g(d^2u/dy^2)
+1860 30600 y Fa(16)1909 b Fd(*)581 b(on)h(the)f(unit)h(square.)g(The)g
+(boundary)g(condition)h(is)e(u)h(=)f(0)g(on)h(all)f(edges.)1860
+31928 y Fa(17)1909 b Fd(*)581 b(Initial)i(conditions)f(are)g(given)g
+(by)f(u)h(=)f(16)g(x)h(\(1)f(-)g(x\))h(y)f(\(1)g(-)h(y\).)1860
+33256 y Fa(18)1909 b Fd(*)581 b(The)h(PDE)g(is)f(treated)h(with)g
+(central)g(differences)h(on)e(a)h(uniform)g(MX)f(x)h(MY)1860
+34585 y Fa(19)1909 b Fd(*)581 b(grid.)h(The)g(values)g(of)f(u)h(at)f
+(the)h(interior)g(points)g(satisfy)g(ODEs,)g(and)1860
+35913 y Fa(20)1909 b Fd(*)581 b(equations)i(u)e(=)h(0)f(at)g(the)h
+(boundaries)h(are)e(appended,)i(to)e(form)h(a)f(DAE)1860
+37241 y Fa(21)1909 b Fd(*)581 b(system)h(of)g(size)g(N)f(=)g(MX)h(*)f
+(MY.)h(Here)f(MX)h(=)f(MY)h(=)f(10.)1860 38570 y Fa(22)1909
+b Fd(*)1860 39898 y Fa(23)g Fd(*)581 b(The)h(system)g(is)g(actually)g
+(implemented)h(on)e(submeshes,)i(processor)f(by)1860
+41227 y Fa(24)1909 b Fd(*)581 b(processor,)i(with)f(an)f(MXSUB)h(by)g
+(MYSUB)g(mesh)f(on)h(each)f(of)h(NPEX)g(*)f(NPEY)1860
+42555 y Fa(25)1909 b Fd(*)581 b(processors.)1860 43883
+y Fa(26)1909 b Fd(*)1860 45212 y Fa(27)g Fd(*)581 b(The)h(system)g(is)g
+(solved)g(with)f(IDA)h(using)g(the)f(Krylov)h(linear)g(solver)1860
+46540 y Fa(28)1909 b Fd(*)581 b(IDASPGMR.)i(The)f(preconditioner)h
+(uses)f(the)f(diagonal)h(elements)h(of)e(the)1860 47868
+y Fa(29)1909 b Fd(*)581 b(Jacobian)i(only.)f(Routines)g(for)g
+(preconditioning,)h(required)f(by)1860 49197 y Fa(30)1909
+b Fd(*)581 b(IDASPGMR,)i(are)f(supplied)g(here.)g(The)f(constraints)i
+(u)e(>=)h(0)f(are)h(posed)1860 50525 y Fa(31)1909 b Fd(*)581
+b(for)h(all)g(components.)g(Local)g(error)g(testing)g(on)g(the)f
+(boundary)i(values)1860 51853 y Fa(32)1909 b Fd(*)581
+b(is)h(suppressed.)h(Output)f(is)f(taken)h(at)g(t)f(=)g(0,)h(.01,)f
+(.02,)h(.04,)1860 53182 y Fa(33)1909 b Fd(*)581 b(...,)h(10.24.)1860
+54510 y Fa(34)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)1860
+55838 y Fa(35)1909 b Fd(*/)1860 57167 y Fa(36)1860 58495
+y(37)1328 b Fd(#include)582 b(<stdio.h>)1860 59823 y
+Fa(38)1328 b Fd(#include)582 b(<stdlib.h>)1860 61152
+y Fa(39)1328 b Fd(#include)582 b(<math.h>)1860 62480
+y Fa(40)1328 b Fd(#include)582 b("sundialstypes.h")1860
+63808 y Fa(41)1328 b Fd(#include)582 b("sundialsmath.h")1860
+65137 y Fa(42)1328 b Fd(#include)582 b("nvector_parallel.h")1860
+66465 y Fa(43)1328 b Fd(#include)582 b("ida.h")1860 67794
+y Fa(44)1328 b Fd(#include)582 b("idaspgmr.h")1860 69122
+y Fa(45)1328 b Fd(#include)582 b("iterative.h")1860 70450
+y Fa(46)1328 b Fd(#include)582 b("mpi.h")1860 71779 y
+Fa(47)1860 73107 y(48)1328 b Fd(#define)582 b(ZERO)1163
+b(RCONST\(0.0\))1860 74435 y Fa(49)1328 b Fd(#define)582
+b(ONE)1744 b(RCONST\(1.0\))1860 75764 y Fa(50)1328 b
+Fd(#define)582 b(TWO)1744 b(RCONST\(2.0\))1860 77092
+y Fa(51)1860 78420 y(52)1328 b Fd(#define)582 b(NOUT)5231
+b(11)7555 b(/*)582 b(Number)g(of)f(output)h(times)g(*/)p
+Black 27394 81741 a Fp(47)p Black eop
+%%Page: 48 52
+48 51 bop Black Black -2140 7638 a Fa(53)-2140 8966 y(54)1328
+b Fd(#define)582 b(NPEX)5231 b(2)8136 b(/*)582 b(No.)f(PEs)h(in)f(x)h
+(direction)g(of)g(PE)f(array)h(*/)-2140 10295 y Fa(55)1328
+b Fd(#define)582 b(NPEY)5231 b(2)8136 b(/*)582 b(No.)f(PEs)h(in)f(y)h
+(direction)g(of)g(PE)f(array)h(*/)-2140 11623 y Fa(56)22249
+b Fd(/*)582 b(Total)g(no.)f(PEs)h(=)f(NPEX*NPEY)i(*/)-2140
+12951 y Fa(57)1328 b Fd(#define)582 b(MXSUB)4650 b(5)8136
+b(/*)582 b(No.)f(x)h(points)g(per)f(subgrid)i(*/)-2140
+14280 y Fa(58)1328 b Fd(#define)582 b(MYSUB)4650 b(5)8136
+b(/*)582 b(No.)f(y)h(points)g(per)f(subgrid)i(*/)-2140
+15608 y Fa(59)-2140 16936 y(60)1328 b Fd(#define)582
+b(MX)6393 b(\(NPEX*MXSUB\))1745 b(/*)582 b(MX)f(=)h(number)g(of)f(x)g
+(mesh)h(points)g(*/)-2140 18265 y Fa(61)1328 b Fd(#define)582
+b(MY)6393 b(\(NPEY*MYSUB\))1745 b(/*)582 b(MY)f(=)h(number)g(of)f(y)g
+(mesh)h(points)g(*/)-2140 19593 y Fa(62)22249 b Fd(/*)582
+b(Spatial)g(mesh)g(is)f(MX)h(by)f(MY)h(*/)-2140 20922
+y Fa(63)-2140 22250 y(64)1328 b Fd(typedef)582 b(struct)g({)-2140
+23578 y Fa(65)2490 b Fd(long)582 b(int)g(thispe,)g(mx,)f(my,)h(ixsub,)g
+(jysub,)g(npex,)g(npey,)g(mxsub,)g(mysub;)-2140 24907
+y Fa(66)2490 b Fd(realtype)2326 b(dx,)582 b(dy,)f(coeffx,)h(coeffy,)h
+(coeffxy;)-2140 26235 y Fa(67)2490 b Fd(realtype)2326
+b(uext[\(MXSUB+2\)*\(MYSUB+2\)];)-2140 27563 y Fa(68)2490
+b Fd(N_Vector)2326 b(pp;)f(/*)582 b(vector)g(of)f(diagonal)h
+(preconditioner)i(elements)e(*/)-2140 28892 y Fa(69)2490
+b Fd(MPI_Comm)2326 b(comm;)-2140 30220 y Fa(70)1328 b
+Fd(})581 b(*UserData;)-2140 31548 y Fa(71)-2140 32877
+y(72)1328 b Fd(/*)581 b(User-supplied)j(residual)e(function)g(and)g
+(supporting)g(routines)h(*/)-2140 34205 y Fa(73)-2140
+35533 y(74)1328 b Fd(int)582 b(resHeat\(realtype)h(tt,)-2140
+36862 y Fa(75)8302 b Fd(N_Vector)582 b(uu,)g(N_Vector)g(up,)g(N_Vector)
+g(rr,)-2140 38190 y Fa(76)8302 b Fd(void)582 b(*res_data\);)-2140
+39518 y Fa(77)-2140 40847 y(78)1328 b Fd(static)582 b(int)g
+(rescomm\(N_Vector)h(uu,)f(N_Vector)g(up,)g(void)f(*res_data\);)-2140
+42175 y Fa(79)-2140 43504 y(80)1328 b Fd(static)582 b(int)g
+(reslocal\(realtype)h(tt,)f(N_Vector)g(uu,)g(N_Vector)g(up,)-2140
+44832 y Fa(81)12951 b Fd(N_Vector)582 b(res,)1163 b(void)582
+b(*res_data\);)-2140 46160 y Fa(82)-2140 47489 y(83)1328
+b Fd(static)582 b(int)g(BSend\(MPI_Comm)h(comm,)f(long)g(int)f(thispe,)
+h(long)g(int)g(ixsub,)g(long)f(int)h(jysub,)-2140 48817
+y Fa(84)11208 b Fd(long)581 b(int)h(dsizex,)g(long)g(int)f(dsizey,)i
+(realtype)f(uarray[]\);)-2140 50145 y Fa(85)-2140 51474
+y(86)1328 b Fd(static)582 b(int)g(BRecvPost\(MPI_Comm)h(comm,)f
+(MPI_Request)h(request[],)g(long)f(int)f(thispe,)-2140
+52802 y Fa(87)13532 b Fd(long)582 b(int)f(ixsub,)i(long)e(int)h(jysub,)
+-2140 54130 y Fa(88)13532 b Fd(long)582 b(int)f(dsizex,)i(long)e(int)h
+(dsizey,)-2140 55459 y Fa(89)13532 b Fd(realtype)582
+b(uext[],)h(realtype)f(buffer[]\);)-2140 56787 y Fa(90)-2140
+58115 y(91)1328 b Fd(static)582 b(int)g(BRecvWait\(MPI_Request)i
+(request[],)f(long)e(int)h(ixsub,)g(long)g(int)f(jysub,)-2140
+59444 y Fa(92)13532 b Fd(long)582 b(int)f(dsizex,)i(realtype)f(uext[],)
+g(realtype)h(buffer[]\);)-2140 60772 y Fa(93)-2140 62100
+y(94)1328 b Fd(/*)581 b(User-supplied)j(preconditioner)f(routines)f(*/)
+-2140 63429 y Fa(95)-2140 64757 y(96)1328 b Fd(int)582
+b(PsolveHeat\(realtype)i(tt,)-2140 66086 y Fa(97)10045
+b Fd(N_Vector)583 b(uu,)e(N_Vector)i(up,)e(N_Vector)h(rr,)-2140
+67414 y Fa(98)10045 b Fd(N_Vector)583 b(rvec,)e(N_Vector)i(zvec,)-2140
+68742 y Fa(99)10045 b Fd(realtype)583 b(c_j,)e(realtype)i(delta,)f
+(void)f(*prec_data,)-2546 70071 y Fa(100)10045 b Fd(N_Vector)583
+b(tmp\);)-2546 71399 y Fa(101)-2546 72727 y(102)1328
+b Fd(int)582 b(PsetupHeat\(realtype)i(tt,)-2546 74056
+y Fa(103)10045 b Fd(N_Vector)583 b(yy,)e(N_Vector)i(yp,)e(N_Vector)h
+(rr,)-2546 75384 y Fa(104)10045 b Fd(realtype)583 b(c_j,)e(void)h
+(*prec_data,)-2546 76712 y Fa(105)10045 b Fd(N_Vector)583
+b(tmp1,)e(N_Vector)i(tmp2,)f(N_Vector)g(tmp3\);)-2546
+78041 y Fa(106)p Black 23394 81741 a Fp(48)p Black eop
+%%Page: 49 53
+49 52 bop Black Black 1454 7638 a Fa(107)1328 b Fd(/*)581
+b(Private)i(function)f(to)f(check)h(function)h(return)f(values)g(*/)
+1454 8966 y Fa(108)1454 10295 y(109)1328 b Fd(static)582
+b(int)g(InitUserData\(int)h(thispe,)f(MPI_Comm)h(comm,)f(UserData)g
+(data\);)1454 11623 y Fa(110)1454 12951 y(111)1328 b
+Fd(static)582 b(int)g(SetInitialProfile\(N_Vector)j(uu,)c(N_Vector)i
+(up,)e(N_Vector)i(id,)1454 14280 y Fa(112)18181 b Fd(N_Vector)583
+b(res,)e(UserData)i(data\);)1454 15608 y Fa(113)1454
+16936 y(114)1328 b Fd(static)582 b(void)g(PrintHeader\(long)h(int)f
+(Neq,)g(realtype)g(rtol,)g(realtype)g(atol\);)1454 18265
+y Fa(115)1454 19593 y(116)1328 b Fd(static)582 b(void)g
+(PrintOutput\(int)h(id,)f(void)g(*mem,)f(realtype)i(t,)e(N_Vector)i
+(uu\);)1454 20922 y Fa(117)1454 22250 y(118)1328 b Fd(static)582
+b(void)g(PrintFinalStats\(void)i(*mem\);)1454 23578 y
+Fa(119)1454 24907 y(120)1328 b Fd(static)582 b(int)g(check_flag\(void)h
+(*flagvalue,)g(char)f(*funcname,)g(int)g(opt,)g(int)f(id\);)1454
+26235 y Fa(121)1454 27563 y(122)1328 b Fd(/*)1454 28892
+y Fa(123)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1454 30220 y Fa(124)g Fd(*)581 b(MAIN)h(PROGRAM)1454
+31548 y Fa(125)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1454 32877 y Fa(126)g Fd(*/)1454 34205 y Fa(127)1454
+35533 y(128)1328 b Fd(int)582 b(main\(int)g(argc,)g(char)g(*argv[]\))
+1454 36862 y Fa(129)1328 b Fd({)1454 38190 y Fa(130)2490
+b Fd(MPI_Comm)583 b(comm;)1454 39518 y Fa(131)2490 b
+Fd(void)582 b(*mem;)1454 40847 y Fa(132)2490 b Fd(UserData)583
+b(data;)1454 42175 y Fa(133)2490 b Fd(int)582 b(iout,)g(thispe,)g(ier,)
+g(npes;)1454 43504 y Fa(134)2490 b Fd(long)582 b(int)g(Neq,)f(local_N;)
+1454 44832 y Fa(135)2490 b Fd(realtype)583 b(rtol,)f(atol,)f(t0,)h(t1,)
+g(tout,)g(tret;)1454 46160 y Fa(136)2490 b Fd(N_Vector)583
+b(uu,)e(up,)h(constraints,)h(id,)e(res;)1454 47489 y
+Fa(137)1454 48817 y(138)2490 b Fd(mem)582 b(=)f(NULL;)1454
+50145 y Fa(139)2490 b Fd(data)582 b(=)f(NULL;)1454 51474
+y Fa(140)2490 b Fd(uu)582 b(=)f(up)g(=)h(constraints)h(=)e(id)g(=)h
+(res)f(=)h(NULL;)1454 52802 y Fa(141)1454 54130 y(142)2490
+b Fd(/*)582 b(Get)f(processor)i(number)f(and)f(total)h(number)g(of)g
+(pe's.)g(*/)1454 55459 y Fa(143)1454 56787 y(144)2490
+b Fd(MPI_Init\(&argc,)584 b(&argv\);)1454 58115 y Fa(145)2490
+b Fd(comm)582 b(=)f(MPI_COMM_WORLD;)1454 59444 y Fa(146)2490
+b Fd(MPI_Comm_size\(comm,)584 b(&npes\);)1454 60772 y
+Fa(147)2490 b Fd(MPI_Comm_rank\(comm,)584 b(&thispe\);)1454
+62100 y Fa(148)1454 63429 y(149)2490 b Fd(if)582 b(\(npes)g(!=)f
+(NPEX*NPEY\))i({)1454 64757 y Fa(150)3653 b Fd(if)581
+b(\(thispe)h(==)g(0\))1454 66086 y Fa(151)4815 b Fd(fprintf\(stderr,)
+1454 67414 y Fa(152)9464 b Fd("\\nMPI_ERROR\(0\):)584
+b(npes)d(=)h(\045d)f(is)h(not)f(equal)h(to)f(NPEX*NPEY)i(=)e
+(\045d\\n",)1454 68742 y Fa(153)9464 b Fd(npes,NPEX*NPEY\);)1454
+70071 y Fa(154)3653 b Fd(MPI_Finalize\(\);)1454 71399
+y Fa(155)g Fd(return\(1\);)1454 72727 y Fa(156)2490 b
+Fd(})1454 74056 y Fa(157)1454 75384 y(158)g Fd(/*)582
+b(Set)f(local)h(length)g(local_N)g(and)g(global)g(length)g(Neq.)g(*/)
+1454 76712 y Fa(159)1454 78041 y(160)2490 b Fd(local_N)582
+b(=)g(MXSUB*MYSUB;)p Black 27394 81741 a Fp(49)p Black
+eop
+%%Page: 50 54
+50 53 bop Black Black -2546 7638 a Fa(161)2490 b Fd(Neq)2906
+b(=)582 b(MX)f(*)h(MY;)-2546 8966 y Fa(162)-2546 10295
+y(163)2490 b Fd(/*)582 b(Allocate)g(and)g(initialize)g(the)g(data)g
+(structure)g(and)g(N-vectors.)g(*/)-2546 11623 y Fa(164)-2546
+12951 y(165)2490 b Fd(data)582 b(=)f(\(UserData\))i(malloc\(sizeof)g
+(*data\);)-2546 14280 y Fa(166)2490 b Fd(data->pp)583
+b(=)e(NULL;)-2546 15608 y Fa(167)2490 b Fd(if\(check_flag\(\(void)584
+b(*\)data,)e("malloc",)h(2,)e(thispe\)\))-2546 16936
+y Fa(168)3653 b Fd(MPI_Abort\(comm,)583 b(1\);)-2546
+18265 y Fa(169)-2546 19593 y(170)2490 b Fd(uu)582 b(=)f
+(N_VNew_Parallel\(comm,)j(local_N,)f(Neq\);)-2546 20922
+y Fa(171)2490 b Fd(if\(check_flag\(\(void)584 b(*\)uu,)e
+("N_VNew_Parallel",)i(0,)d(thispe\)\))-2546 22250 y Fa(172)3653
+b Fd(MPI_Abort\(comm,)583 b(1\);)-2546 23578 y Fa(173)-2546
+24907 y(174)2490 b Fd(up)582 b(=)f(N_VNew_Parallel\(comm,)j(local_N,)f
+(Neq\);)-2546 26235 y Fa(175)2490 b Fd(if\(check_flag\(\(void)584
+b(*\)up,)e("N_VNew_Parallel",)i(0,)d(thispe\)\))-2546
+27563 y Fa(176)3653 b Fd(MPI_Abort\(comm,)583 b(1\);)-2546
+28892 y Fa(177)-2546 30220 y(178)2490 b Fd(res)582 b(=)f
+(N_VNew_Parallel\(comm,)j(local_N,)f(Neq\);)-2546 31548
+y Fa(179)2490 b Fd(if\(check_flag\(\(void)584 b(*\)res,)e
+("N_VNew_Parallel",)i(0,)e(thispe\)\))-2546 32877 y Fa(180)3653
+b Fd(MPI_Abort\(comm,)583 b(1\);)-2546 34205 y Fa(181)-2546
+35533 y(182)2490 b Fd(constraints)583 b(=)e(N_VNew_Parallel\(comm,)k
+(local_N,)d(Neq\);)-2546 36862 y Fa(183)2490 b Fd
+(if\(check_flag\(\(void)584 b(*\)constraints,)g("N_VNew_Parallel",)f
+(0,)f(thispe\)\))-2546 38190 y Fa(184)3653 b Fd(MPI_Abort\(comm,)583
+b(1\);)-2546 39518 y Fa(185)-2546 40847 y(186)2490 b
+Fd(id)582 b(=)f(N_VNew_Parallel\(comm,)j(local_N,)f(Neq\);)-2546
+42175 y Fa(187)2490 b Fd(if\(check_flag\(\(void)584 b(*\)id,)e
+("N_VNew_Parallel",)i(0,)d(thispe\)\))-2546 43504 y Fa(188)3653
+b Fd(MPI_Abort\(comm,)583 b(1\);)-2546 44832 y Fa(189)-2546
+46160 y(190)2490 b Fd(/*)582 b(An)f(N-vector)i(to)e(hold)h
+(preconditioner.)h(*/)-2546 47489 y Fa(191)2490 b Fd(data->pp)583
+b(=)e(N_VNew_Parallel\(comm,)j(local_N,)f(Neq\);)-2546
+48817 y Fa(192)2490 b Fd(if\(check_flag\(\(void)584 b(*\)data->pp,)f
+("N_VNew_Parallel",)h(0,)d(thispe\)\))-2546 50145 y Fa(193)3653
+b Fd(MPI_Abort\(comm,)583 b(1\);)-2546 51474 y Fa(194)-2546
+52802 y(195)2490 b Fd(InitUserData\(thispe,)584 b(comm,)e(data\);)-2546
+54130 y Fa(196)-2546 55459 y(197)2490 b Fd(/*)582 b(Initialize)g(the)g
+(uu,)g(up,)f(id,)h(and)f(res)h(profiles.)g(*/)-2546 56787
+y Fa(198)-2546 58115 y(199)2490 b Fd(SetInitialProfile\(uu,)585
+b(up,)c(id,)h(res,)g(data\);)-2546 59444 y Fa(200)-2546
+60772 y(201)2490 b Fd(/*)582 b(Set)f(constraints)i(to)f(all)f(1's)h
+(for)f(nonnegative)i(solution)f(values.)h(*/)-2546 62100
+y Fa(202)-2546 63429 y(203)2490 b Fd(N_VConst\(ONE,)583
+b(constraints\);)-2546 64757 y Fa(204)-2546 66086 y(205)2490
+b Fd(t0)582 b(=)f(ZERO;)h(t1)f(=)h(RCONST\(0.01\);)-2546
+67414 y Fa(206)-2546 68742 y(207)2490 b Fd(/*)582 b(Scalar)g(relative)g
+(and)g(absolute)g(tolerance.)h(*/)-2546 70071 y Fa(208)-2546
+71399 y(209)2490 b Fd(rtol)582 b(=)f(ZERO;)-2546 72727
+y Fa(210)2490 b Fd(atol)582 b(=)f(RCONST\(1.0e-3\);)-2546
+74056 y Fa(211)-2546 75384 y(212)2490 b Fd(/*)582 b(Call)f(IDACreate)i
+(and)f(IDAMalloc)g(to)g(initialize)g(solution.)h(*/)-2546
+76712 y Fa(213)-2546 78041 y(214)2490 b Fd(mem)582 b(=)f
+(IDACreate\(\);)p Black 23394 81741 a Fp(50)p Black eop
+%%Page: 51 55
+51 54 bop Black Black 1454 7638 a Fa(215)2490 b Fd
+(if\(check_flag\(\(void)584 b(*\)mem,)e("IDACreate",)h(0,)f(thispe\)\))
+g(MPI_Abort\(comm,)h(1\);)1454 8966 y Fa(216)1454 10295
+y(217)2490 b Fd(ier)582 b(=)f(IDASetRdata\(mem,)j(data\);)1454
+11623 y Fa(218)2490 b Fd(if\(check_flag\(&ier,)584 b("IDASetRdata",)g
+(1,)d(thispe\)\))h(MPI_Abort\(comm,)i(1\);)1454 12951
+y Fa(219)1454 14280 y(220)2490 b Fd(ier)582 b(=)f
+(IDASetSuppressAlg\(mem,)k(TRUE\);)1454 15608 y Fa(221)2490
+b Fd(if\(check_flag\(&ier,)584 b("IDASetSuppressAlg",)g(1,)e
+(thispe\)\))g(MPI_Abort\(comm,)i(1\);)1454 16936 y Fa(222)1454
+18265 y(223)2490 b Fd(ier)582 b(=)f(IDASetId\(mem,)i(id\);)1454
+19593 y Fa(224)2490 b Fd(if\(check_flag\(&ier,)584 b("IDASetId",)f(1,)f
+(thispe\)\))g(MPI_Abort\(comm,)h(1\);)1454 20922 y Fa(225)1454
+22250 y(226)2490 b Fd(ier)582 b(=)f(IDASetConstraints\(mem,)k
+(constraints\);)1454 23578 y Fa(227)2490 b Fd(if\(check_flag\(&ier,)584
+b("IDASetConstraints",)g(1,)e(thispe\)\))g(MPI_Abort\(comm,)i(1\);)1454
+24907 y Fa(228)2490 b Fd(N_VDestroy_Parallel\(constraints\);)1454
+26235 y Fa(229)1454 27563 y(230)g Fd(ier)582 b(=)f(IDAMalloc\(mem,)i
+(resHeat,)g(t0,)e(uu,)h(up,)g(IDA_SS,)g(rtol,)g(&atol\);)1454
+28892 y Fa(231)2490 b Fd(if\(check_flag\(&ier,)584 b("IDAMalloc",)f(1,)
+f(thispe\)\))g(MPI_Abort\(comm,)h(1\);)1454 30220 y Fa(232)1454
+31548 y(233)2490 b Fd(/*)582 b(Call)f(IDASpgmr)i(to)e(specify)h(the)g
+(linear)g(solver.)g(*/)1454 32877 y Fa(234)1454 34205
+y(235)2490 b Fd(ier)582 b(=)f(IDASpgmr\(mem,)i(0\);)1454
+35533 y Fa(236)2490 b Fd(if\(check_flag\(&ier,)584 b("IDASpgmr",)f(1,)f
+(thispe\)\))g(MPI_Abort\(comm,)h(1\);)1454 36862 y Fa(237)1454
+38190 y(238)2490 b Fd(ier)582 b(=)f(IDASpgmrSetPreconditioner\(mem,)586
+b(PsetupHeat,)d(PsolveHeat,)f(data\);)1454 39518 y Fa(239)2490
+b Fd(if\(check_flag\(&ier,)584 b("IDASpgmrSetPreconditioner",)i(1,)581
+b(thispe\)\))h(MPI_Abort\(comm,)i(1\);)1454 40847 y Fa(240)1454
+42175 y(241)2490 b Fd(/*)582 b(Print)g(output)g(heading)g(\(on)f
+(processor)i(0)e(only\))h(and)g(intial)g(solution)1163
+b(*/)1454 43504 y Fa(242)1454 44832 y(243)2490 b Fd(if)582
+b(\(thispe)g(==)f(0\))h(PrintHeader\(Neq,)h(rtol,)f(atol\);)1454
+46160 y Fa(244)2490 b Fd(PrintOutput\(thispe,)584 b(mem,)e(t0,)g(uu\);)
+1454 47489 y Fa(245)1454 48817 y(246)2490 b Fd(/*)582
+b(Loop)f(over)h(tout,)g(call)g(IDASolve,)g(print)g(output.)g(*/)1454
+50145 y Fa(247)1454 51474 y(248)2490 b Fd(for)582 b(\(tout)g(=)f(t1,)h
+(iout)f(=)h(1;)f(iout)h(<=)f(NOUT;)h(iout++,)g(tout)g(*=)g(TWO\))f({)
+1454 52802 y Fa(249)1454 54130 y(250)3653 b Fd(ier)581
+b(=)g(IDASolve\(mem,)j(tout,)d(&tret,)i(uu,)e(up,)h(IDA_NORMAL\);)1454
+55459 y Fa(251)3653 b Fd(if\(check_flag\(&ier,)584 b("IDASolve",)e(1,)g
+(thispe\)\))g(MPI_Abort\(comm,)i(1\);)1454 56787 y Fa(252)1454
+58115 y(253)3653 b Fd(PrintOutput\(thispe,)584 b(mem,)d(tret,)h(uu\);)
+1454 59444 y Fa(254)1454 60772 y(255)2490 b Fd(})1454
+62100 y Fa(256)1454 63429 y(257)g Fd(/*)582 b(Print)g(remaining)g
+(counters.)h(*/)1454 64757 y Fa(258)1454 66086 y(259)2490
+b Fd(if)582 b(\(thispe)g(==)f(0\))h(PrintFinalStats\(mem\);)1454
+67414 y Fa(260)1454 68742 y(261)2490 b Fd(/*)582 b(Free)f(memory)i(*/)
+1454 70071 y Fa(262)1454 71399 y(263)2490 b Fd(IDAFree\(mem\);)1454
+72727 y Fa(264)1454 74056 y(265)g Fd(N_VDestroy_Parallel\(id\);)1454
+75384 y Fa(266)g Fd(N_VDestroy_Parallel\(res\);)1454
+76712 y Fa(267)g Fd(N_VDestroy_Parallel\(up\);)1454 78041
+y Fa(268)g Fd(N_VDestroy_Parallel\(uu\);)p Black 27394
+81741 a Fp(51)p Black eop
+%%Page: 52 56
+52 55 bop Black Black -2546 7638 a Fa(269)-2546 8966
+y(270)2490 b Fd(N_VDestroy_Parallel\(data->pp\);)-2546
+10295 y Fa(271)g Fd(free\(data\);)-2546 11623 y Fa(272)-2546
+12951 y(273)g Fd(MPI_Finalize\(\);)-2546 14280 y Fa(274)-2546
+15608 y(275)g Fd(return\(0\);)-2546 16936 y Fa(276)-2546
+18265 y(277)1328 b Fd(})-2546 19593 y Fa(278)-2546 20922
+y(279)g Fd(/*)-2546 22250 y Fa(280)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)-2546 23578 y Fa(281)g Fd(*)581 b(FUNCTIONS)i(CALLED)f(BY)f(IDA)
+-2546 24907 y Fa(282)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)-2546 26235 y Fa(283)g Fd(*/)-2546 27563 y Fa(284)-2546
+28892 y(285)1328 b Fd(/*)-2546 30220 y Fa(286)1909 b
+Fd(*)581 b(resHeat:)i(heat)f(equation)g(system)g(residual)g(function)
+-2546 31548 y Fa(287)1909 b Fd(*)581 b(This)h(uses)g(5-point)g(central)
+g(differencing)h(on)f(the)f(interior)i(points,)f(and)-2546
+32877 y Fa(288)1909 b Fd(*)581 b(includes)i(algebraic)f(equations)h
+(for)e(the)h(boundary)g(values.)-2546 34205 y Fa(289)1909
+b Fd(*)581 b(So)h(for)f(each)h(interior)h(point,)f(the)f(residual)i
+(component)f(has)g(the)f(form)-2546 35533 y Fa(290)1909
+b Fd(*)2325 b(res_i)582 b(=)f(u'_i)h(-)f(\(central)h(difference\)_i)
+-2546 36862 y Fa(291)1909 b Fd(*)581 b(while)h(for)g(each)g(boundary)g
+(point,)g(it)g(is)f(res_i)h(=)f(u_i.)-2546 38190 y Fa(292)1909
+b Fd(*)-2546 39518 y Fa(293)g Fd(*)581 b(This)h(parallel)h
+(implementation)g(uses)f(several)g(supporting)g(routines.)-2546
+40847 y Fa(294)1909 b Fd(*)581 b(First)h(a)g(call)f(is)h(made)g(to)f
+(rescomm)h(to)g(do)f(communication)i(of)f(subgrid)g(boundary)-2546
+42175 y Fa(295)1909 b Fd(*)581 b(data)h(into)g(array)g(uext.)1163
+b(Then)582 b(reslocal)g(is)f(called)h(to)g(compute)g(the)g(residual)
+-2546 43504 y Fa(296)1909 b Fd(*)581 b(on)h(individual)h(processors)f
+(and)g(their)g(corresponding)h(domains.)1163 b(The)582
+b(routines)-2546 44832 y Fa(297)1909 b Fd(*)581 b(BSend,)h(BRecvPost,)h
+(and)f(BREcvWait)g(handle)g(interprocessor)h(communication)-2546
+46160 y Fa(298)1909 b Fd(*)581 b(of)h(uu)f(required)i(to)e(calculate)i
+(the)e(residual.)-2546 47489 y Fa(299)1909 b Fd(*/)-2546
+48817 y Fa(300)-2546 50145 y(301)1328 b Fd(int)582 b(resHeat\(realtype)
+h(tt,)-2546 51474 y Fa(302)8302 b Fd(N_Vector)582 b(uu,)g(N_Vector)g
+(up,)g(N_Vector)g(rr,)-2546 52802 y Fa(303)8302 b Fd(void)582
+b(*res_data\))-2546 54130 y Fa(304)1328 b Fd({)-2546
+55459 y Fa(305)2490 b Fd(int)582 b(retval;)-2546 56787
+y Fa(306)-2546 58115 y(307)2490 b Fd(/*)582 b(Call)f(rescomm)i(to)e(do)
+h(inter-processor)h(communication.)g(*/)-2546 59444 y
+Fa(308)2490 b Fd(retval)582 b(=)g(rescomm\(uu,)g(up,)g(res_data\);)
+-2546 60772 y Fa(309)-2546 62100 y(310)2490 b Fd(/*)582
+b(Call)f(reslocal)i(to)e(calculate)i(res.)f(*/)-2546
+63429 y Fa(311)2490 b Fd(retval)582 b(=)g(reslocal\(tt,)h(uu,)e(up,)h
+(rr,)f(res_data\);)-2546 64757 y Fa(312)-2546 66086 y(313)2490
+b Fd(return\(0\);)-2546 67414 y Fa(314)-2546 68742 y(315)1328
+b Fd(})-2546 70071 y Fa(316)-2546 71399 y(317)g Fd(/*)-2546
+72727 y Fa(318)1909 b Fd(*)581 b(PsetupHeat:)i(setup)f(for)g(diagonal)g
+(preconditioner)h(for)f(heatsk.)-2546 74056 y Fa(319)1909
+b Fd(*)-2546 75384 y Fa(320)g Fd(*)581 b(The)h(optional)g
+(user-supplied)h(functions)g(PsetupHeat)g(and)-2546 76712
+y Fa(321)1909 b Fd(*)581 b(PsolveHeat)i(together)f(must)g(define)g(the)
+g(left)g(preconditoner)-2546 78041 y Fa(322)1909 b Fd(*)581
+b(matrix)h(P)g(approximating)h(the)e(system)i(Jacobian)f(matrix)p
+Black 23394 81741 a Fp(52)p Black eop
+%%Page: 53 57
+53 56 bop Black Black 1454 7638 a Fa(323)1909 b Fd(*)11042
+b(J)581 b(=)h(dF/du)g(+)f(cj*dF/du')1454 8966 y Fa(324)1909
+b Fd(*)581 b(\(where)h(the)g(DAE)g(system)g(is)f(F\(t,u,u'\))i(=)e
+(0\),)h(and)f(solve)h(the)g(linear)1454 10295 y Fa(325)1909
+b Fd(*)581 b(systems)i(P)e(z)g(=)h(r.)1743 b(This)582
+b(is)f(done)h(in)g(this)f(case)h(by)g(keeping)g(only)1454
+11623 y Fa(326)1909 b Fd(*)581 b(the)h(diagonal)g(elements)h(of)e(the)h
+(J)f(matrix)h(above,)g(storing)g(them)g(as)1454 12951
+y Fa(327)1909 b Fd(*)581 b(inverses)i(in)e(a)h(vector)g(pp,)f(when)h
+(computed)g(in)g(PsetupHeat,)g(for)1454 14280 y Fa(328)1909
+b Fd(*)581 b(subsequent)i(use)f(in)f(PsolveHeat.)1454
+15608 y Fa(329)1909 b Fd(*)1454 16936 y Fa(330)g Fd(*)581
+b(In)h(this)g(instance,)g(only)g(cj)f(and)h(data)g(\(user)g(data)f
+(structure,)i(with)1454 18265 y Fa(331)1909 b Fd(*)581
+b(pp)h(etc.\))g(are)f(used)h(from)g(the)f(PsetupHeat)i(argument)f
+(list.)1454 19593 y Fa(332)1909 b Fd(*)1454 20922 y Fa(333)g
+Fd(*/)1454 22250 y Fa(334)1454 23578 y(335)1328 b Fd(int)582
+b(PsetupHeat\(realtype)i(tt,)1454 24907 y Fa(336)10045
+b Fd(N_Vector)583 b(yy,)e(N_Vector)i(yp,)e(N_Vector)h(rr,)1454
+26235 y Fa(337)10045 b Fd(realtype)583 b(c_j,)e(void)h(*prec_data,)1454
+27563 y Fa(338)10045 b Fd(N_Vector)583 b(tmp1,)e(N_Vector)i(tmp2,)f
+(N_Vector)g(tmp3\))1454 28892 y Fa(339)1328 b Fd({)1454
+30220 y Fa(340)2490 b Fd(realtype)583 b(*ppv,)f(pelinv;)1454
+31548 y Fa(341)2490 b Fd(long)582 b(int)g(lx,)f(ly,)h(ixbegin,)g
+(ixend,)g(jybegin,)h(jyend,)f(locu,)f(mxsub,)i(mysub;)1454
+32877 y Fa(342)2490 b Fd(long)582 b(int)g(ixsub,)g(jysub,)g(npex,)g
+(npey;)1454 34205 y Fa(343)2490 b Fd(UserData)583 b(data;)1454
+35533 y Fa(344)1454 36862 y(345)2490 b Fd(data)582 b(=)f(\(UserData\))i
+(prec_data;)1454 38190 y Fa(346)1454 39518 y(347)2490
+b Fd(ppv)582 b(=)f(NV_DATA_P\(data->pp\);)1454 40847
+y Fa(348)2490 b Fd(ixsub)582 b(=)f(data->ixsub;)1454
+42175 y Fa(349)2490 b Fd(jysub)582 b(=)f(data->jysub;)1454
+43504 y Fa(350)2490 b Fd(mxsub)582 b(=)f(data->mxsub;)1454
+44832 y Fa(351)2490 b Fd(mysub)582 b(=)f(data->mysub;)1454
+46160 y Fa(352)2490 b Fd(npex)1163 b(=)581 b(data->npex;)1454
+47489 y Fa(353)2490 b Fd(npey)1163 b(=)581 b(data->npey;)1454
+48817 y Fa(354)1454 50145 y(355)2490 b Fd(/*)582 b(Initially)g(set)g
+(all)f(pp)h(elements)g(to)g(one.)f(*/)1454 51474 y Fa(356)2490
+b Fd(N_VConst\(ONE,)583 b(data->pp\);)1454 52802 y Fa(357)1454
+54130 y(358)2490 b Fd(/*)582 b(Prepare)g(to)f(loop)h(over)g(subgrid.)g
+(*/)1454 55459 y Fa(359)2490 b Fd(ixbegin)582 b(=)g(0;)1454
+56787 y Fa(360)2490 b Fd(ixend)1744 b(=)582 b(mxsub-1;)1454
+58115 y Fa(361)2490 b Fd(jybegin)582 b(=)g(0;)1454 59444
+y Fa(362)2490 b Fd(jyend)1744 b(=)582 b(mysub-1;)1454
+60772 y Fa(363)2490 b Fd(if)582 b(\(ixsub)g(==)f(0\))h(ixbegin++;)g(if)
+g(\(ixsub)g(==)f(npex-1\))h(ixend--;)1454 62100 y Fa(364)2490
+b Fd(if)582 b(\(jysub)g(==)f(0\))h(jybegin++;)g(if)g(\(jysub)g(==)f
+(npey-1\))h(jyend--;)1454 63429 y Fa(365)2490 b Fd(pelinv)582
+b(=)g(ONE/\(c_j)g(+)f(data->coeffxy\);)1454 64757 y Fa(366)1454
+66086 y(367)2490 b Fd(/*)582 b(Load)f(the)h(inverse)g(of)g(the)f
+(preconditioner)j(diagonal)e(elements)1454 67414 y Fa(368)4234
+b Fd(in)581 b(loop)h(over)g(all)f(the)h(local)g(subgrid.)g(*/)1454
+68742 y Fa(369)1454 70071 y(370)2490 b Fd(for)582 b(\(ly)f(=)h
+(jybegin;)g(ly)g(<=jyend;)g(ly++\))g({)1454 71399 y Fa(371)3653
+b Fd(for)581 b(\(lx)h(=)f(ixbegin;)h(lx)g(<=)f(ixend;)h(lx++\))g({)1454
+72727 y Fa(372)4815 b Fd(locu)1163 b(=)581 b(lx)h(+)f(ly*mxsub;)1454
+74056 y Fa(373)4815 b Fd(ppv[locu])582 b(=)g(pelinv;)1454
+75384 y Fa(374)3653 b Fd(})1454 76712 y Fa(375)2490 b
+Fd(})1454 78041 y Fa(376)p Black 27394 81741 a Fp(53)p
+Black eop
+%%Page: 54 58
+54 57 bop Black Black -2546 7638 a Fa(377)2490 b Fd(return\(0\);)-2546
+8966 y Fa(378)-2546 10295 y(379)1328 b Fd(})-2546 11623
+y Fa(380)-2546 12951 y(381)g Fd(/*)-2546 14280 y Fa(382)1909
+b Fd(*)581 b(PsolveHeat:)i(solve)f(preconditioner)h(linear)f(system.)
+-2546 15608 y Fa(383)1909 b Fd(*)581 b(This)h(routine)g(multiplies)h
+(the)f(input)g(vector)g(rvec)f(by)h(the)f(vector)h(pp)-2546
+16936 y Fa(384)1909 b Fd(*)581 b(containing)i(the)f(inverse)g(diagonal)
+g(Jacobian)h(elements)f(\(previously)-2546 18265 y Fa(385)1909
+b Fd(*)581 b(computed)i(in)e(PsetupHeat\),)i(returning)g(the)e(result)h
+(in)g(zvec.)-2546 19593 y Fa(386)1909 b Fd(*/)-2546 20922
+y Fa(387)-2546 22250 y(388)1328 b Fd(int)582 b(PsolveHeat\(realtype)i
+(tt,)-2546 23578 y Fa(389)10045 b Fd(N_Vector)583 b(uu,)e(N_Vector)i
+(up,)e(N_Vector)h(rr,)-2546 24907 y Fa(390)10045 b Fd(N_Vector)583
+b(rvec,)e(N_Vector)i(zvec,)-2546 26235 y Fa(391)10045
+b Fd(realtype)583 b(c_j,)e(realtype)i(delta,)f(void)f(*prec_data,)-2546
+27563 y Fa(392)10045 b Fd(N_Vector)583 b(tmp\))-2546
+28892 y Fa(393)1328 b Fd({)-2546 30220 y Fa(394)2490
+b Fd(UserData)583 b(data;)-2546 31548 y Fa(395)-2546
+32877 y(396)2490 b Fd(data)582 b(=)f(\(UserData\))i(prec_data;)-2546
+34205 y Fa(397)-2546 35533 y(398)2490 b Fd(N_VProd\(data->pp,)584
+b(rvec,)e(zvec\);)-2546 36862 y Fa(399)-2546 38190 y(400)2490
+b Fd(return\(0\);)-2546 39518 y Fa(401)-2546 40847 y(402)1328
+b Fd(})-2546 42175 y Fa(403)-2546 43504 y(404)g Fd(/*)-2546
+44832 y Fa(405)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)-2546 46160 y Fa(406)g Fd(*)581 b(SUPPORTING)i(FUNCTIONS)-2546
+47489 y Fa(407)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)-2546 48817 y Fa(408)g Fd(*/)-2546 50145 y Fa(409)-2546
+51474 y(410)-2546 52802 y(411)1328 b Fd(/*)-2546 54130
+y Fa(412)1909 b Fd(*)581 b(rescomm)i(routine.)1163 b(This)582
+b(routine)g(performs)g(all)g(inter-processor)-2546 55459
+y Fa(413)1909 b Fd(*)581 b(communication)j(of)d(data)h(in)f(u)g(needed)
+i(to)e(calculate)h(G.)-2546 56787 y Fa(414)1909 b Fd(*/)-2546
+58115 y Fa(415)-2546 59444 y(416)1328 b Fd(static)582
+b(int)g(rescomm\(N_Vector)h(uu,)f(N_Vector)g(up,)g(void)f(*res_data\))
+-2546 60772 y Fa(417)1328 b Fd({)-2546 62100 y Fa(418)2490
+b Fd(UserData)583 b(data;)-2546 63429 y Fa(419)2490 b
+Fd(realtype)583 b(*uarray,)f(*uext,)g(buffer[2*MYSUB];)-2546
+64757 y Fa(420)2490 b Fd(MPI_Comm)583 b(comm;)-2546 66086
+y Fa(421)2490 b Fd(long)582 b(int)g(thispe,)g(ixsub,)g(jysub,)g(mxsub,)
+g(mysub;)-2546 67414 y Fa(422)2490 b Fd(MPI_Request)583
+b(request[4];)-2546 68742 y Fa(423)-2546 70071 y(424)2490
+b Fd(data)582 b(=)f(\(UserData\))i(res_data;)-2546 71399
+y Fa(425)2490 b Fd(uarray)582 b(=)g(NV_DATA_P\(uu\);)-2546
+72727 y Fa(426)-2546 74056 y(427)2490 b Fd(/*)582 b(Get)f(comm,)h
+(thispe,)g(subgrid)h(indices,)f(data)g(sizes,)g(extended)g(array)g
+(uext.)g(*/)-2546 75384 y Fa(428)2490 b Fd(comm)582 b(=)f(data->comm;)
+1164 b(thispe)582 b(=)g(data->thispe;)-2546 76712 y Fa(429)2490
+b Fd(ixsub)582 b(=)f(data->ixsub;)1746 b(jysub)582 b(=)f(data->jysub;)
+-2546 78041 y Fa(430)2490 b Fd(mxsub)582 b(=)f(data->mxsub;)1746
+b(mysub)582 b(=)f(data->mysub;)p Black 23394 81741 a
+Fp(54)p Black eop
+%%Page: 55 59
+55 58 bop Black Black 1454 7638 a Fa(431)2490 b Fd(uext)582
+b(=)f(data->uext;)1454 8966 y Fa(432)1454 10295 y(433)2490
+b Fd(/*)582 b(Start)g(receiving)g(boundary)g(data)g(from)g(neighboring)
+h(PEs.)e(*/)1454 11623 y Fa(434)2490 b Fd(BRecvPost\(comm,)584
+b(request,)e(thispe,)g(ixsub,)g(jysub,)g(mxsub,)g(mysub,)g(uext,)g
+(buffer\);)1454 12951 y Fa(435)1454 14280 y(436)2490
+b Fd(/*)582 b(Send)f(data)h(from)g(boundary)g(of)g(local)g(grid)f(to)h
+(neighboring)h(PEs.)e(*/)1454 15608 y Fa(437)2490 b Fd(BSend\(comm,)583
+b(thispe,)f(ixsub,)g(jysub,)g(mxsub,)g(mysub,)g(uarray\);)1454
+16936 y Fa(438)1454 18265 y(439)2490 b Fd(/*)582 b(Finish)g(receiving)g
+(boundary)h(data)e(from)h(neighboring)h(PEs.)f(*/)1454
+19593 y Fa(440)2490 b Fd(BRecvWait\(request,)584 b(ixsub,)e(jysub,)g
+(mxsub,)g(uext,)g(buffer\);)1454 20922 y Fa(441)1454
+22250 y(442)2490 b Fd(return\(0\);)1454 23578 y Fa(443)1454
+24907 y(444)1328 b Fd(})1454 26235 y Fa(445)1454 27563
+y(446)g Fd(/*)1454 28892 y Fa(447)1909 b Fd(*)581 b(reslocal)i
+(routine.)1163 b(Compute)582 b(res)g(=)f(F\(t,)h(uu,)g(up\).)1163
+b(This)581 b(routine)i(assumes)1454 30220 y Fa(448)1909
+b Fd(*)581 b(that)h(all)g(inter-processor)h(communication)g(of)f(data)f
+(needed)h(to)g(calculate)g(F)1454 31548 y Fa(449)1909
+b Fd(*)581 b(has)h(already)g(been)g(done,)g(and)f(that)h(this)g(data)g
+(is)f(in)h(the)f(work)h(array)g(uext.)1454 32877 y Fa(450)1909
+b Fd(*/)1454 34205 y Fa(451)1454 35533 y(452)1328 b Fd(static)582
+b(int)g(reslocal\(realtype)h(tt,)1454 36862 y Fa(453)12951
+b Fd(N_Vector)582 b(uu,)g(N_Vector)g(up,)g(N_Vector)g(rr,)1454
+38190 y Fa(454)12951 b Fd(void)582 b(*res_data\))1454
+39518 y Fa(455)1328 b Fd({)1454 40847 y Fa(456)2490 b
+Fd(realtype)583 b(*uext,)f(*uuv,)g(*upv,)f(*resv;)1454
+42175 y Fa(457)2490 b Fd(realtype)583 b(termx,)f(termy,)g(termctr;)1454
+43504 y Fa(458)2490 b Fd(long)582 b(int)g(lx,)f(ly,)h(offsetu,)g
+(offsetue,)h(locu,)f(locue;)1454 44832 y Fa(459)2490
+b Fd(long)582 b(int)g(ixsub,)g(jysub,)g(mxsub,)g(mxsub2,)g(mysub,)g
+(npex,)g(npey;)1454 46160 y Fa(460)2490 b Fd(long)582
+b(int)g(ixbegin,)g(ixend,)g(jybegin,)g(jyend;)1454 47489
+y Fa(461)2490 b Fd(UserData)583 b(data;)1454 48817 y
+Fa(462)1454 50145 y(463)2490 b Fd(/*)582 b(Get)f(subgrid)i(indices,)f
+(array)g(sizes,)g(extended)g(work)g(array)g(uext.)g(*/)1454
+51474 y Fa(464)1454 52802 y(465)2490 b Fd(data)582 b(=)f(\(UserData\))i
+(res_data;)1454 54130 y Fa(466)2490 b Fd(uext)582 b(=)f(data->uext;)
+1454 55459 y Fa(467)2490 b Fd(uuv)582 b(=)f(NV_DATA_P\(uu\);)1454
+56787 y Fa(468)2490 b Fd(upv)582 b(=)f(NV_DATA_P\(up\);)1454
+58115 y Fa(469)2490 b Fd(resv)582 b(=)f(NV_DATA_P\(rr\);)1454
+59444 y Fa(470)2490 b Fd(ixsub)582 b(=)f(data->ixsub;)i(jysub)f(=)g
+(data->jysub;)1454 60772 y Fa(471)2490 b Fd(mxsub)582
+b(=)f(data->mxsub;)i(mxsub2)f(=)g(data->mxsub)h(+)e(2;)1454
+62100 y Fa(472)2490 b Fd(mysub)582 b(=)f(data->mysub;)i(npex)f(=)f
+(data->npex;)i(npey)f(=)f(data->npey;)1454 63429 y Fa(473)1454
+64757 y(474)2490 b Fd(/*)582 b(Initialize)g(all)g(elements)g(of)g(rr)f
+(to)h(uu.)f(This)h(sets)g(the)f(boundary)1454 66086 y
+Fa(475)4234 b Fd(elements)582 b(simply)g(without)g(indexing)h(hassles.)
+f(*/)1454 67414 y Fa(476)1454 68742 y(477)2490 b Fd(N_VScale\(ONE,)583
+b(uu,)f(rr\);)1454 70071 y Fa(478)1454 71399 y(479)2490
+b Fd(/*)582 b(Copy)f(local)h(segment)h(of)e(u)g(vector)h(into)g(the)g
+(working)g(extended)g(array)g(uext.)1454 72727 y Fa(480)4234
+b Fd(This)581 b(completes)i(uext)f(prior)g(to)f(the)h(computation)g(of)
+g(the)f(rr)h(vector.)2907 b(*/)1454 74056 y Fa(481)1454
+75384 y(482)2490 b Fd(offsetu)582 b(=)g(0;)1454 76712
+y Fa(483)2490 b Fd(offsetue)583 b(=)e(mxsub2)h(+)f(1;)1454
+78041 y Fa(484)2490 b Fd(for)582 b(\(ly)f(=)h(0;)f(ly)h(<)f(mysub;)h
+(ly++\))g({)p Black 27394 81741 a Fp(55)p Black eop
+%%Page: 56 60
+56 59 bop Black Black -2546 7638 a Fa(485)3653 b Fd(for)581
+b(\(lx)h(=)f(0;)h(lx)f(<)g(mxsub;)h(lx++\))g(uext[offsetue+lx])i(=)d
+(uuv[offsetu+lx];)-2546 8966 y Fa(486)3653 b Fd(offsetu)582
+b(=)f(offsetu)h(+)g(mxsub;)-2546 10295 y Fa(487)3653
+b Fd(offsetue)582 b(=)f(offsetue)i(+)e(mxsub2;)-2546
+11623 y Fa(488)2490 b Fd(})-2546 12951 y Fa(489)-2546
+14280 y(490)g Fd(/*)582 b(Set)f(loop)h(limits)g(for)g(the)f(interior)i
+(of)e(the)h(local)g(subgrid.)g(*/)-2546 15608 y Fa(491)-2546
+16936 y(492)2490 b Fd(ixbegin)582 b(=)g(0;)-2546 18265
+y Fa(493)2490 b Fd(ixend)1744 b(=)582 b(mxsub-1;)-2546
+19593 y Fa(494)2490 b Fd(jybegin)582 b(=)g(0;)-2546 20922
+y Fa(495)2490 b Fd(jyend)1744 b(=)582 b(mysub-1;)-2546
+22250 y Fa(496)2490 b Fd(if)582 b(\(ixsub)g(==)f(0\))h(ixbegin++;)g(if)
+g(\(ixsub)g(==)f(npex-1\))h(ixend--;)-2546 23578 y Fa(497)2490
+b Fd(if)582 b(\(jysub)g(==)f(0\))h(jybegin++;)g(if)g(\(jysub)g(==)f
+(npey-1\))h(jyend--;)-2546 24907 y Fa(498)-2546 26235
+y(499)2490 b Fd(/*)582 b(Loop)f(over)h(all)g(grid)g(points)g(in)f
+(local)h(subgrid.)g(*/)-2546 27563 y Fa(500)-2546 28892
+y(501)2490 b Fd(for)582 b(\(ly)f(=)h(jybegin;)g(ly)g(<=jyend;)g(ly++\))
+g({)-2546 30220 y Fa(502)3653 b Fd(for)581 b(\(lx)h(=)f(ixbegin;)h(lx)g
+(<=)f(ixend;)h(lx++\))g({)-2546 31548 y Fa(503)4815 b
+Fd(locu)1163 b(=)581 b(lx)h(+)f(ly*mxsub;)-2546 32877
+y Fa(504)4815 b Fd(locue)582 b(=)f(\(lx+1\))h(+)f(\(ly+1\)*mxsub2;)
+-2546 34205 y Fa(505)4815 b Fd(termx)582 b(=)f(data->coeffx)i
+(*\(uext[locue-1])3489 b(+)581 b(uext[locue+1]\);)-2546
+35533 y Fa(506)4815 b Fd(termy)582 b(=)f(data->coeffy)i
+(*\(uext[locue-mxsub2])h(+)d(uext[locue+mxsub2]\);)-2546
+36862 y Fa(507)4815 b Fd(termctr)582 b(=)f(data->coeffxy*uext[locue];)
+-2546 38190 y Fa(508)4815 b Fd(resv[locu])583 b(=)e(upv[locu])h(-)g
+(\(termx)g(+)f(termy)h(-)f(termctr\);)-2546 39518 y Fa(509)3071
+b Fd(})-2546 40847 y Fa(510)2490 b Fd(})-2546 42175 y
+Fa(511)g Fd(return\(0\);)-2546 43504 y Fa(512)-2546 44832
+y(513)1328 b Fd(})-2546 46160 y Fa(514)-2546 47489 y(515)g
+Fd(/*)-2546 48817 y Fa(516)1909 b Fd(*)581 b(Routine)i(to)e(send)h
+(boundary)g(data)g(to)f(neighboring)i(PEs.)-2546 50145
+y Fa(517)1909 b Fd(*/)-2546 51474 y Fa(518)-2546 52802
+y(519)1328 b Fd(static)582 b(int)g(BSend\(MPI_Comm)h(comm,)f(long)g
+(int)f(thispe,)h(long)g(int)g(ixsub,)g(long)f(int)h(jysub,)-2546
+54130 y Fa(520)11208 b Fd(long)581 b(int)h(dsizex,)g(long)g(int)f
+(dsizey,)i(realtype)f(uarray[]\))-2546 55459 y Fa(521)1328
+b Fd({)-2546 56787 y Fa(522)2490 b Fd(long)582 b(int)g(ly,)f(offsetu;)
+-2546 58115 y Fa(523)2490 b Fd(realtype)583 b(bufleft[MYSUB],)g
+(bufright[MYSUB];)-2546 59444 y Fa(524)-2546 60772 y(525)2490
+b Fd(/*)582 b(If)f(jysub)h(>)f(0,)h(send)g(data)f(from)h(bottom)g
+(x-line)g(of)g(u.)f(*/)-2546 62100 y Fa(526)-2546 63429
+y(527)2490 b Fd(if)582 b(\(jysub)g(!=)f(0\))-2546 64757
+y Fa(528)3653 b Fd(MPI_Send\(&uarray[0],)584 b(dsizex,)e
+(PVEC_REAL_MPI_TYPE,)i(thispe-NPEX,)f(0,)e(comm\);)-2546
+66086 y Fa(529)-2546 67414 y(530)2490 b Fd(/*)582 b(If)f(jysub)h(<)f
+(NPEY-1,)i(send)e(data)h(from)g(top)f(x-line)h(of)g(u.)f(*/)-2546
+68742 y Fa(531)-2546 70071 y(532)2490 b Fd(if)582 b(\(jysub)g(!=)f
+(NPEY-1\))h({)-2546 71399 y Fa(533)3653 b Fd(offsetu)582
+b(=)f(\(MYSUB-1\)*dsizex;)-2546 72727 y Fa(534)3653 b
+Fd(MPI_Send\(&uarray[offsetu],)585 b(dsizex,)d(PVEC_REAL_MPI_TYPE,)
+-2546 74056 y Fa(535)8883 b Fd(thispe+NPEX,)583 b(0,)e(comm\);)-2546
+75384 y Fa(536)2490 b Fd(})-2546 76712 y Fa(537)-2546
+78041 y(538)g Fd(/*)582 b(If)f(ixsub)h(>)f(0,)h(send)g(data)f(from)h
+(left)g(y-line)g(of)f(u)h(\(via)f(bufleft\).)i(*/)p Black
+23394 81741 a Fp(56)p Black eop
+%%Page: 57 61
+57 60 bop Black Black 1454 7638 a Fa(539)1454 8966 y(540)2490
+b Fd(if)582 b(\(ixsub)g(!=)f(0\))h({)1454 10295 y Fa(541)3653
+b Fd(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h(ly++\))g({)1454
+11623 y Fa(542)4815 b Fd(offsetu)582 b(=)f(ly*dsizex;)1454
+12951 y Fa(543)4815 b Fd(bufleft[ly])583 b(=)e(uarray[offsetu];)1454
+14280 y Fa(544)3653 b Fd(})1454 15608 y Fa(545)g Fd
+(MPI_Send\(&bufleft[0],)584 b(dsizey,)e(PVEC_REAL_MPI_TYPE,)i
+(thispe-1,)f(0,)e(comm\);)1454 16936 y Fa(546)2490 b
+Fd(})1454 18265 y Fa(547)1454 19593 y(548)g Fd(/*)582
+b(If)f(ixsub)h(<)f(NPEX-1,)i(send)e(data)h(from)g(right)g(y-line)g(of)f
+(u)g(\(via)h(bufright\).)h(*/)1454 20922 y Fa(549)1454
+22250 y(550)2490 b Fd(if)582 b(\(ixsub)g(!=)f(NPEX-1\))h({)1454
+23578 y Fa(551)3653 b Fd(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))g({)1454 24907 y Fa(552)4815 b Fd(offsetu)582
+b(=)f(ly*MXSUB)i(+)e(\(MXSUB-1\);)1454 26235 y Fa(553)4815
+b Fd(bufright[ly])583 b(=)e(uarray[offsetu];)1454 27563
+y Fa(554)3653 b Fd(})1454 28892 y Fa(555)g Fd(MPI_Send\(&bufright[0],)
+584 b(dsizey,)e(PVEC_REAL_MPI_TYPE,)i(thispe+1,)f(0,)e(comm\);)1454
+30220 y Fa(556)2490 b Fd(})1454 31548 y Fa(557)1454 32877
+y(558)g Fd(return\(0\);)1454 34205 y Fa(559)1454 35533
+y(560)1328 b Fd(})1454 36862 y Fa(561)1454 38190 y(562)g
+Fd(/*)1454 39518 y Fa(563)1909 b Fd(*)581 b(Routine)i(to)e(start)h
+(receiving)g(boundary)h(data)f(from)f(neighboring)i(PEs.)1454
+40847 y Fa(564)1909 b Fd(*)581 b(Notes:)1454 42175 y
+Fa(565)1909 b Fd(*)1744 b(1\))581 b(buffer)h(should)g(be)g(able)f(to)h
+(hold)g(2*MYSUB)g(realtype)g(entries,)h(should)f(be)1454
+43504 y Fa(566)1909 b Fd(*)3487 b(passed)582 b(to)g(both)f(the)h
+(BRecvPost)h(and)e(BRecvWait)i(functions,)f(and)g(should)g(not)1454
+44832 y Fa(567)1909 b Fd(*)3487 b(be)582 b(manipulated)g(between)h(the)
+e(two)h(calls.)1454 46160 y Fa(568)1909 b Fd(*)1744 b(2\))581
+b(request)h(should)g(have)g(4)f(entries,)i(and)e(should)h(be)g(passed)g
+(in)1454 47489 y Fa(569)1909 b Fd(*)3487 b(both)582 b(calls)g(also.)
+1454 48817 y Fa(570)1909 b Fd(*/)1454 50145 y Fa(571)1454
+51474 y(572)1328 b Fd(static)582 b(int)g(BRecvPost\(MPI_Comm)h(comm,)f
+(MPI_Request)h(request[],)g(long)f(int)f(thispe,)1454
+52802 y Fa(573)13532 b Fd(long)582 b(int)f(ixsub,)i(long)e(int)h
+(jysub,)1454 54130 y Fa(574)13532 b Fd(long)582 b(int)f(dsizex,)i(long)
+e(int)h(dsizey,)1454 55459 y Fa(575)13532 b Fd(realtype)582
+b(uext[],)h(realtype)f(buffer[]\))1454 56787 y Fa(576)1328
+b Fd({)1454 58115 y Fa(577)2490 b Fd(long)582 b(int)g(offsetue;)1454
+59444 y Fa(578)2490 b Fd(/*)582 b(Have)f(bufleft)i(and)e(bufright)i
+(use)e(the)h(same)g(buffer.)g(*/)1454 60772 y Fa(579)2490
+b Fd(realtype)583 b(*bufleft)f(=)f(buffer,)h(*bufright)h(=)e
+(buffer+MYSUB;)1454 62100 y Fa(580)1454 63429 y(581)2490
+b Fd(/*)582 b(If)f(jysub)h(>)f(0,)h(receive)g(data)g(for)f(bottom)h
+(x-line)g(of)g(uext.)g(*/)1454 64757 y Fa(582)2490 b
+Fd(if)582 b(\(jysub)g(!=)f(0\))1454 66086 y Fa(583)3653
+b Fd(MPI_Irecv\(&uext[1],)584 b(dsizex,)e(PVEC_REAL_MPI_TYPE,)1454
+67414 y Fa(584)9464 b Fd(thispe-NPEX,)583 b(0,)e(comm,)h
+(&request[0]\);)1454 68742 y Fa(585)1454 70071 y(586)2490
+b Fd(/*)582 b(If)f(jysub)h(<)f(NPEY-1,)i(receive)f(data)g(for)f(top)h
+(x-line)g(of)f(uext.)h(*/)1454 71399 y Fa(587)2490 b
+Fd(if)582 b(\(jysub)g(!=)f(NPEY-1\))h({)1454 72727 y
+Fa(588)3653 b Fd(offsetue)582 b(=)f(\(1)h(+)f
+(\(MYSUB+1\)*\(MXSUB+2\)\);)1454 74056 y Fa(589)3653
+b Fd(MPI_Irecv\(&uext[offsetue],)585 b(dsizex,)d(PVEC_REAL_MPI_TYPE,)
+1454 75384 y Fa(590)9464 b Fd(thispe+NPEX,)583 b(0,)e(comm,)h
+(&request[1]\);)1454 76712 y Fa(591)2490 b Fd(})1454
+78041 y Fa(592)p Black 27394 81741 a Fp(57)p Black eop
+%%Page: 58 62
+58 61 bop Black Black -2546 7638 a Fa(593)2490 b Fd(/*)582
+b(If)f(ixsub)h(>)f(0,)h(receive)g(data)g(for)f(left)h(y-line)g(of)g
+(uext)f(\(via)h(bufleft\).)h(*/)-2546 8966 y Fa(594)2490
+b Fd(if)582 b(\(ixsub)g(!=)f(0\))h({)-2546 10295 y Fa(595)3653
+b Fd(MPI_Irecv\(&bufleft[0],)584 b(dsizey,)e(PVEC_REAL_MPI_TYPE,)-2546
+11623 y Fa(596)9464 b Fd(thispe-1,)583 b(0,)e(comm,)h(&request[2]\);)
+-2546 12951 y Fa(597)2490 b Fd(})-2546 14280 y Fa(598)-2546
+15608 y(599)g Fd(/*)582 b(If)f(ixsub)h(<)f(NPEX-1,)i(receive)f(data)g
+(for)f(right)h(y-line)g(of)f(uext)h(\(via)g(bufright\).)h(*/)-2546
+16936 y Fa(600)2490 b Fd(if)582 b(\(ixsub)g(!=)f(NPEX-1\))h({)-2546
+18265 y Fa(601)3653 b Fd(MPI_Irecv\(&bufright[0],)584
+b(dsizey,)e(PVEC_REAL_MPI_TYPE,)-2546 19593 y Fa(602)9464
+b Fd(thispe+1,)583 b(0,)e(comm,)h(&request[3]\);)-2546
+20922 y Fa(603)2490 b Fd(})-2546 22250 y Fa(604)-2546
+23578 y(605)g Fd(return\(0\);)-2546 24907 y Fa(606)-2546
+26235 y(607)1328 b Fd(})-2546 27563 y Fa(608)-2546 28892
+y(609)g Fd(/*)-2546 30220 y Fa(610)1909 b Fd(*)581 b(Routine)i(to)e
+(finish)h(receiving)h(boundary)f(data)g(from)f(neighboring)i(PEs.)-2546
+31548 y Fa(611)1909 b Fd(*)581 b(Notes:)-2546 32877 y
+Fa(612)1909 b Fd(*)1744 b(1\))581 b(buffer)h(should)g(be)g(able)f(to)h
+(hold)g(2*MYSUB)g(realtype)g(entries,)h(should)f(be)-2546
+34205 y Fa(613)1909 b Fd(*)3487 b(passed)582 b(to)g(both)f(the)h
+(BRecvPost)h(and)e(BRecvWait)i(functions,)f(and)g(should)g(not)-2546
+35533 y Fa(614)1909 b Fd(*)3487 b(be)582 b(manipulated)g(between)h(the)
+e(two)h(calls.)-2546 36862 y Fa(615)1909 b Fd(*)1744
+b(2\))581 b(request)h(should)g(have)g(four)g(entries,)g(and)g(should)g
+(be)f(passed)h(in)g(both)-2546 38190 y Fa(616)1909 b
+Fd(*)3487 b(calls)582 b(also.)-2546 39518 y Fa(617)1909
+b Fd(*/)-2546 40847 y Fa(618)-2546 42175 y(619)1328 b
+Fd(static)582 b(int)g(BRecvWait\(MPI_Request)i(request[],)f(long)e(int)
+h(ixsub,)g(long)g(int)f(jysub,)-2546 43504 y Fa(620)13532
+b Fd(long)582 b(int)f(dsizex,)i(realtype)f(uext[],)g(realtype)h
+(buffer[]\))-2546 44832 y Fa(621)1328 b Fd({)-2546 46160
+y Fa(622)2490 b Fd(long)582 b(int)g(ly,)f(dsizex2,)i(offsetue;)-2546
+47489 y Fa(623)2490 b Fd(realtype)583 b(*bufleft)f(=)f(buffer,)h
+(*bufright)h(=)e(buffer+MYSUB;)-2546 48817 y Fa(624)2490
+b Fd(MPI_Status)583 b(status;)-2546 50145 y Fa(625)-2546
+51474 y(626)2490 b Fd(dsizex2)582 b(=)g(dsizex)g(+)f(2;)-2546
+52802 y Fa(627)-2546 54130 y(628)2490 b Fd(/*)582 b(If)f(jysub)h(>)f
+(0,)h(receive)g(data)g(for)f(bottom)h(x-line)g(of)g(uext.)g(*/)-2546
+55459 y Fa(629)2490 b Fd(if)582 b(\(jysub)g(!=)f(0\))-2546
+56787 y Fa(630)3653 b Fd(MPI_Wait\(&request[0],&status\);)-2546
+58115 y Fa(631)-2546 59444 y(632)2490 b Fd(/*)582 b(If)f(jysub)h(<)f
+(NPEY-1,)i(receive)f(data)g(for)f(top)h(x-line)g(of)f(uext.)h(*/)-2546
+60772 y Fa(633)2490 b Fd(if)582 b(\(jysub)g(!=)f(NPEY-1\))-2546
+62100 y Fa(634)3653 b Fd(MPI_Wait\(&request[1],&status\);)-2546
+63429 y Fa(635)-2546 64757 y(636)2490 b Fd(/*)582 b(If)f(ixsub)h(>)f
+(0,)h(receive)g(data)g(for)f(left)h(y-line)g(of)g(uext)f(\(via)h
+(bufleft\).)h(*/)-2546 66086 y Fa(637)2490 b Fd(if)582
+b(\(ixsub)g(!=)f(0\))h({)-2546 67414 y Fa(638)3653 b
+Fd(MPI_Wait\(&request[2],&status\);)-2546 68742 y Fa(639)-2546
+70071 y(640)g Fd(/*)581 b(Copy)h(the)f(buffer)h(to)g(uext.)g(*/)-2546
+71399 y Fa(641)3653 b Fd(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))g({)-2546 72727 y Fa(642)4815 b Fd(offsetue)582
+b(=)g(\(ly+1\)*dsizex2;)-2546 74056 y Fa(643)4815 b Fd(uext[offsetue])
+583 b(=)e(bufleft[ly];)-2546 75384 y Fa(644)3653 b Fd(})-2546
+76712 y Fa(645)2490 b Fd(})-2546 78041 y Fa(646)p Black
+23394 81741 a Fp(58)p Black eop
+%%Page: 59 63
+59 62 bop Black Black 1454 7638 a Fa(647)2490 b Fd(/*)582
+b(If)f(ixsub)h(<)f(NPEX-1,)i(receive)f(data)g(for)f(right)h(y-line)g
+(of)f(uext)h(\(via)g(bufright\).)h(*/)1454 8966 y Fa(648)2490
+b Fd(if)582 b(\(ixsub)g(!=)f(NPEX-1\))h({)1454 10295
+y Fa(649)3653 b Fd(MPI_Wait\(&request[3],&status\);)1454
+11623 y Fa(650)1454 12951 y(651)g Fd(/*)581 b(Copy)h(the)f(buffer)h(to)
+g(uext)g(*/)1454 14280 y Fa(652)3653 b Fd(for)581 b(\(ly)h(=)f(0;)h(ly)
+f(<)g(MYSUB;)h(ly++\))g({)1454 15608 y Fa(653)4815 b
+Fd(offsetue)582 b(=)g(\(ly+2\)*dsizex2)h(-)e(1;)1454
+16936 y Fa(654)4815 b Fd(uext[offsetue])583 b(=)e(bufright[ly];)1454
+18265 y Fa(655)3653 b Fd(})1454 19593 y Fa(656)2490 b
+Fd(})1454 20922 y Fa(657)1454 22250 y(658)g Fd(return\(0\);)1454
+23578 y Fa(659)1454 24907 y(660)1328 b Fd(})1454 26235
+y Fa(661)1454 27563 y(662)g Fd(/*)1454 28892 y Fa(663)1909
+b Fd
+(*------------------------------------------------------------------)p
+(--)1454 30220 y Fa(664)g Fd(*)581 b(PRIVATE)i(FUNCTIONS)1454
+31548 y Fa(665)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1454 32877 y Fa(666)g Fd(*/)1454 34205 y Fa(667)1454
+35533 y(668)1328 b Fd(/*)1454 36862 y Fa(669)1909 b Fd(*)581
+b(InitUserData)i(initializes)g(the)f(user's)g(data)g(block)f(data.)1454
+38190 y Fa(670)1909 b Fd(*/)1454 39518 y Fa(671)1454
+40847 y(672)1328 b Fd(static)582 b(int)g(InitUserData\(int)h(thispe,)f
+(MPI_Comm)h(comm,)f(UserData)g(data\))1454 42175 y Fa(673)1328
+b Fd({)1454 43504 y Fa(674)2490 b Fd(data->thispe)583
+b(=)f(thispe;)1454 44832 y Fa(675)2490 b Fd(data->dx)583
+b(=)e(ONE/\(MX-ONE\);)4070 b(/*)581 b(Assumes)i(a)e([0,1])h(interval)g
+(in)g(x.)f(*/)1454 46160 y Fa(676)2490 b Fd(data->dy)583
+b(=)e(ONE/\(MY-ONE\);)4070 b(/*)581 b(Assumes)i(a)e([0,1])h(interval)g
+(in)g(y.)f(*/)1454 47489 y Fa(677)2490 b Fd(data->coeffx)1164
+b(=)582 b(ONE/\(data->dx)h(*)e(data->dx\);)1454 48817
+y Fa(678)2490 b Fd(data->coeffy)1164 b(=)582 b(ONE/\(data->dy)h(*)e
+(data->dy\);)1454 50145 y Fa(679)2490 b Fd(data->coeffxy)583
+b(=)f(TWO/\(data->dx)h(*)e(data->dx\))i(+)e(TWO/\(data->dy)i(*)e
+(data->dy\))i(;)1454 51474 y Fa(680)2490 b Fd(data->jysub)1745
+b(=)582 b(thispe/NPEX;)1454 52802 y Fa(681)2490 b Fd(data->ixsub)1745
+b(=)582 b(thispe)g(-)f(data->jysub)i(*)e(NPEX;)1454 54130
+y Fa(682)2490 b Fd(data->npex)2326 b(=)582 b(NPEX;)1454
+55459 y Fa(683)2490 b Fd(data->npey)2326 b(=)582 b(NPEY;)1454
+56787 y Fa(684)2490 b Fd(data->mx)3488 b(=)582 b(MX;)1454
+58115 y Fa(685)2490 b Fd(data->my)3488 b(=)582 b(MY;)1454
+59444 y Fa(686)2490 b Fd(data->mxsub)583 b(=)e(MXSUB;)1454
+60772 y Fa(687)2490 b Fd(data->mysub)583 b(=)e(MYSUB;)1454
+62100 y Fa(688)2490 b Fd(data->comm)2326 b(=)582 b(comm;)1454
+63429 y Fa(689)2490 b Fd(return\(0\);)1454 64757 y Fa(690)1454
+66086 y(691)1328 b Fd(})1454 67414 y Fa(692)1454 68742
+y(693)g Fd(/*)1454 70071 y Fa(694)1909 b Fd(*)581 b(SetInitialProfile)j
+(sets)e(the)f(initial)i(values)f(for)f(the)h(problem.)1454
+71399 y Fa(695)1909 b Fd(*/)1454 72727 y Fa(696)1454
+74056 y(697)1328 b Fd(static)582 b(int)g(SetInitialProfile\(N_Vector)j
+(uu,)c(N_Vector)i(up,)1162 b(N_Vector)583 b(id,)1454
+75384 y Fa(698)18181 b Fd(N_Vector)583 b(res,)e(UserData)i(data\))1454
+76712 y Fa(699)1328 b Fd({)1454 78041 y Fa(700)2490 b
+Fd(long)582 b(int)g(i,)f(iloc,)h(j,)f(jloc,)h(offset,)h(loc,)e(ixsub,)h
+(jysub;)p Black 27394 81741 a Fp(59)p Black eop
+%%Page: 60 64
+60 63 bop Black Black -2546 7638 a Fa(701)2490 b Fd(long)582
+b(int)g(ixbegin,)g(ixend,)g(jybegin,)g(jyend;)-2546 8966
+y Fa(702)2490 b Fd(realtype)583 b(xfact,)f(yfact,)g(*udata,)g(*iddata,)
+g(dx,)g(dy;)-2546 10295 y Fa(703)-2546 11623 y(704)2490
+b Fd(/*)582 b(Initialize)g(uu.)g(*/)-2546 12951 y Fa(705)-2546
+14280 y(706)2490 b Fd(udata)582 b(=)f(NV_DATA_P\(uu\);)-2546
+15608 y Fa(707)2490 b Fd(iddata)582 b(=)g(NV_DATA_P\(id\);)-2546
+16936 y Fa(708)-2546 18265 y(709)2490 b Fd(/*)582 b(Set)f(mesh)h
+(spacings)g(and)g(subgrid)g(indices)g(for)g(this)g(PE.)f(*/)-2546
+19593 y Fa(710)2490 b Fd(dx)582 b(=)f(data->dx;)-2546
+20922 y Fa(711)2490 b Fd(dy)582 b(=)f(data->dy;)-2546
+22250 y Fa(712)2490 b Fd(ixsub)582 b(=)f(data->ixsub;)-2546
+23578 y Fa(713)2490 b Fd(jysub)582 b(=)f(data->jysub;)-2546
+24907 y Fa(714)-2546 26235 y(715)2490 b Fd(/*)582 b(Set)f(beginning)i
+(and)e(ending)h(locations)h(in)e(the)h(global)g(array)g(corresponding)
+-2546 27563 y Fa(716)4234 b Fd(to)581 b(the)h(portion)g(of)f(that)h
+(array)g(assigned)g(to)g(this)g(processor.)g(*/)-2546
+28892 y Fa(717)2490 b Fd(ixbegin)582 b(=)g(MXSUB*ixsub;)-2546
+30220 y Fa(718)2490 b Fd(ixend)1744 b(=)582 b(MXSUB*\(ixsub+1\))h(-)e
+(1;)-2546 31548 y Fa(719)2490 b Fd(jybegin)582 b(=)g(MYSUB*jysub;)-2546
+32877 y Fa(720)2490 b Fd(jyend)1744 b(=)582 b(MYSUB*\(jysub+1\))h(-)e
+(1;)-2546 34205 y Fa(721)-2546 35533 y(722)2490 b Fd(/*)582
+b(Loop)f(over)h(the)g(local)g(array,)g(computing)g(the)g(initial)g
+(profile)g(value.)-2546 36862 y Fa(723)4234 b Fd(The)581
+b(global)h(indices)h(are)e(\(i,j\))h(and)g(the)f(local)h(indices)g(are)
+g(\(iloc,jloc\).)-2546 38190 y Fa(724)4234 b Fd(Also)581
+b(set)h(the)g(id)f(vector)h(to)g(zero)f(for)h(boundary)g(points,)g(one)
+g(otherwise.)h(*/)-2546 39518 y Fa(725)-2546 40847 y(726)2490
+b Fd(N_VConst\(ONE,id\);)-2546 42175 y Fa(727)g Fd(for)582
+b(\(j)f(=)h(jybegin,)g(jloc)g(=)f(0;)g(j)h(<=)f(jyend;)h(j++,)g
+(jloc++\))g({)-2546 43504 y Fa(728)3653 b Fd(yfact)581
+b(=)h(data->dy*j;)-2546 44832 y Fa(729)3653 b Fd(offset=)582
+b(jloc*MXSUB;)-2546 46160 y Fa(730)3653 b Fd(for)581
+b(\(i)h(=)f(ixbegin,)h(iloc)g(=)f(0;)h(i)f(<=)h(ixend;)g(i++,)f
+(iloc++\))h({)-2546 47489 y Fa(731)4815 b Fd(xfact)582
+b(=)f(data->dx)h(*)g(i;)-2546 48817 y Fa(732)4815 b Fd(loc)581
+b(=)h(offset)g(+)f(iloc;)-2546 50145 y Fa(733)4815 b
+Fd(udata[loc])583 b(=)e(RCONST\(16.0\))i(*)e(xfact)h(*)f(\(ONE)h(-)f
+(xfact\))h(*)g(yfact)g(*)f(\(ONE)h(-)f(yfact\);)-2546
+51474 y Fa(734)4815 b Fd(if)581 b(\(i)h(==)f(0)h(||)f(i)g(==)h(MX-1)f
+(||)h(j)f(==)h(0)f(||)g(j)h(==)f(MY-1\))h(iddata[loc])h(=)e(ZERO;)-2546
+52802 y Fa(735)3653 b Fd(})-2546 54130 y Fa(736)2490
+b Fd(})-2546 55459 y Fa(737)-2546 56787 y(738)g Fd(/*)582
+b(Initialize)g(up.)g(*/)-2546 58115 y Fa(739)-2546 59444
+y(740)2490 b Fd(N_VConst\(ZERO,)584 b(up\);)2325 b(/*)581
+b(Initially)i(set)e(up)h(=)f(0.)g(*/)-2546 60772 y Fa(741)-2546
+62100 y(742)2490 b Fd(/*)582 b(resHeat)g(sets)g(res)f(to)h(negative)g
+(of)g(ODE)f(RHS)h(values)g(at)f(interior)i(points.)f(*/)-2546
+63429 y Fa(743)2490 b Fd(resHeat\(ZERO,)583 b(uu,)f(up,)g(res,)f
+(data\);)-2546 64757 y Fa(744)-2546 66086 y(745)2490
+b Fd(/*)582 b(Copy)f(-res)h(into)g(up)f(to)h(get)f(correct)i(initial)f
+(up)f(values.)h(*/)-2546 67414 y Fa(746)2490 b Fd(N_VScale\(-ONE,)584
+b(res,)d(up\);)-2546 68742 y Fa(747)-2546 70071 y(748)2490
+b Fd(return\(0\);)-2546 71399 y Fa(749)1328 b Fd(})-2546
+72727 y Fa(750)-2546 74056 y(751)g Fd(/*)-2546 75384
+y Fa(752)1909 b Fd(*)581 b(Print)h(first)g(lines)g(of)g(output)g(and)f
+(table)h(heading)-2546 76712 y Fa(753)1909 b Fd(*/)-2546
+78041 y Fa(754)p Black 23394 81741 a Fp(60)p Black eop
+%%Page: 61 65
+61 64 bop Black Black 1454 7638 a Fa(755)1328 b Fd(static)582
+b(void)g(PrintHeader\(long)h(int)f(Neq,)g(realtype)g(rtol,)g(realtype)g
+(atol\))1454 8966 y Fa(756)1328 b Fd({)1454 10295 y Fa(757)2490
+b Fd(printf\("\\niheatpk:)584 b(Heat)e(equation,)g(parallel)h(example)f
+(problem)g(for)g(IDA)f(\\n"\);)1454 11623 y Fa(758)2490
+b Fd(printf\(")5232 b(Discretized)583 b(heat)e(equation)i(on)e(2D)h
+(unit)f(square.)i(\\n"\);)1454 12951 y Fa(759)2490 b
+Fd(printf\(")5232 b(Zero)582 b(boundary)g(conditions,"\);)1454
+14280 y Fa(760)2490 b Fd(printf\(")583 b(polynomial)f(initial)g
+(conditions.\\n"\);)1454 15608 y Fa(761)2490 b Fd(printf\(")5232
+b(Mesh)582 b(dimensions:)g(\045d)g(x)f(\045d",)h(MX,)f(MY\);)1454
+16936 y Fa(762)2490 b Fd(printf\(")4651 b(Total)582 b(system)g(size:)g
+(\045ld\\n\\n",)g(Neq\);)1454 18265 y Fa(763)2490 b Fd
+(printf\("Subgrid)584 b(dimensions:)e(\045d)g(x)f(\045d",)h(MXSUB,)g
+(MYSUB\);)1454 19593 y Fa(764)2490 b Fd(printf\(")4651
+b(Processor)582 b(array:)g(\045d)g(x)f(\045d\\n",)h(NPEX,)g(NPEY\);)
+1454 20922 y Fa(765)1328 b Fd(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))1454 22250 y
+Fa(766)2490 b Fd(printf\("Tolerance)584 b(parameters:)1164
+b(rtol)582 b(=)f(\045Lg)1744 b(atol)582 b(=)f(\045Lg\\n",)h(rtol,)g
+(atol\);)1454 23578 y Fa(767)1328 b Fd(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))1454 24907 y Fa(768)2490
+b Fd(printf\("Tolerance)584 b(parameters:)1164 b(rtol)582
+b(=)f(\045lg)1744 b(atol)582 b(=)f(\045lg\\n",)h(rtol,)g(atol\);)1454
+26235 y Fa(769)1328 b Fd(#else)1454 27563 y Fa(770)2490
+b Fd(printf\("Tolerance)584 b(parameters:)1164 b(rtol)582
+b(=)f(\045g)1744 b(atol)581 b(=)h(\045g\\n",)g(rtol,)g(atol\);)1454
+28892 y Fa(771)1328 b Fd(#endif)1454 30220 y Fa(772)2490
+b Fd(printf\("Constraints)584 b(set)e(to)f(force)h(all)g(solution)g
+(components)h(>=)e(0.)h(\\n"\);)1454 31548 y Fa(773)2490
+b Fd(printf\("SUPPRESSALG)584 b(=)e(TRUE)f(to)h(suppress)g(local)g
+(error)g(testing)g(on)g("\);)1454 32877 y Fa(774)2490
+b Fd(printf\("all)583 b(boundary)f(components.)h(\\n"\);)1454
+34205 y Fa(775)2490 b Fd(printf\("Linear)584 b(solver:)e(IDASPGMR)1163
+b("\);)1454 35533 y Fa(776)2490 b Fd(printf\("Preconditioner:)585
+b(diagonal)d(elements)h(only.\\n"\);)1454 36862 y Fa(777)1454
+38190 y(778)2490 b Fd(/*)582 b(Print)g(output)g(table)g(heading)g(and)f
+(initial)i(line)e(of)h(table.)g(*/)1454 39518 y Fa(779)2490
+b Fd(printf\("\\n)1745 b(Output)582 b(Summary)g(\(umax)g(=)g(max-norm)g
+(of)f(solution\))i(\\n\\n"\);)1454 40847 y Fa(780)2490
+b Fd(printf\(")1164 b(time)2906 b(umax)4069 b(k)1162
+b(nst)h(nni)g(nli)1744 b(nre)f(nreS)2907 b(h)3487 b(npe)581
+b(nps\\n"\);)1454 42175 y Fa(781)2490 b Fd
+(printf\("----------------------------------------------------------)p
+(------------\\n"\);)1454 43504 y Fa(782)1328 b Fd(})1454
+44832 y Fa(783)1454 46160 y(784)g Fd(/*)1454 47489 y
+Fa(785)1909 b Fd(*)581 b(PrintOutput:)i(print)f(max)g(norm)g(of)f
+(solution)h(and)g(current)g(solver)g(statistics)1454
+48817 y Fa(786)1909 b Fd(*/)1454 50145 y Fa(787)1454
+51474 y(788)1328 b Fd(static)582 b(void)g(PrintOutput\(int)h(id,)f
+(void)g(*mem,)f(realtype)i(t,)e(N_Vector)i(uu\))1454
+52802 y Fa(789)1328 b Fd({)1454 54130 y Fa(790)2490 b
+Fd(realtype)583 b(hused,)f(umax;)1454 55459 y Fa(791)2490
+b Fd(long)582 b(int)g(nst,)f(nni,)h(nje,)g(nre,)g(nreS,)g(nli,)f(npe,)h
+(nps;)1454 56787 y Fa(792)2490 b Fd(int)582 b(kused,)g(ier;)1454
+58115 y Fa(793)1454 59444 y(794)2490 b Fd(umax)582 b(=)f
+(N_VMaxNorm\(uu\);)1454 60772 y Fa(795)1454 62100 y(796)2490
+b Fd(if)582 b(\(id)f(==)h(0\))f({)1454 63429 y Fa(797)1454
+64757 y(798)3653 b Fd(ier)581 b(=)g(IDAGetLastOrder\(mem,)k(&kused\);)
+1454 66086 y Fa(799)3653 b Fd(check_flag\(&ier,)583 b
+("IDAGetLastOrder",)h(1,)d(id\);)1454 67414 y Fa(800)3653
+b Fd(ier)581 b(=)g(IDAGetNumSteps\(mem,)j(&nst\);)1454
+68742 y Fa(801)3653 b Fd(check_flag\(&ier,)583 b("IDAGetNumSteps",)h
+(1,)d(id\);)1454 70071 y Fa(802)3653 b Fd(ier)581 b(=)g
+(IDAGetNumNonlinSolvIters\(mem,)586 b(&nni\);)1454 71399
+y Fa(803)3653 b Fd(check_flag\(&ier,)583 b("IDAGetNumNonlinSolvIters",)
+i(1,)d(id\);)1454 72727 y Fa(804)3653 b Fd(ier)581 b(=)g
+(IDAGetNumResEvals\(mem,)k(&nre\);)1454 74056 y Fa(805)3653
+b Fd(check_flag\(&ier,)583 b("IDAGetNumResEvals",)h(1,)e(id\);)1454
+75384 y Fa(806)3653 b Fd(ier)581 b(=)g(IDAGetLastStep\(mem,)j
+(&hused\);)1454 76712 y Fa(807)3653 b Fd(check_flag\(&ier,)583
+b("IDAGetLastStep",)h(1,)d(id\);)1454 78041 y Fa(808)3653
+b Fd(ier)581 b(=)g(IDASpgmrGetNumJtimesEvals\(mem,)586
+b(&nje\);)p Black 27394 81741 a Fp(61)p Black eop
+%%Page: 62 66
+62 65 bop Black Black -2546 7638 a Fa(809)3653 b Fd(check_flag\(&ier,)
+583 b("IDASpgmrGetNumJtimesEvals",)i(1,)d(id\);)-2546
+8966 y Fa(810)3653 b Fd(ier)581 b(=)g(IDASpgmrGetNumLinIters\(mem,)586
+b(&nli\);)-2546 10295 y Fa(811)3653 b Fd(check_flag\(&ier,)583
+b("IDASpgmrGetNumLinIters",)i(1,)c(id\);)-2546 11623
+y Fa(812)3653 b Fd(ier)581 b(=)g(IDASpgmrGetNumResEvals\(mem,)586
+b(&nreS\);)-2546 12951 y Fa(813)3653 b Fd(check_flag\(&ier,)583
+b("IDASpgmrGetNumResEvals",)i(1,)c(id\);)-2546 14280
+y Fa(814)3653 b Fd(ier)581 b(=)g(IDASpgmrGetNumPrecEvals\(mem,)586
+b(&npe\);)-2546 15608 y Fa(815)3653 b Fd(check_flag\(&ier,)583
+b("IDASpgmrGetPrecEvals",)i(1,)c(id\);)-2546 16936 y
+Fa(816)3653 b Fd(ier)581 b(=)g(IDASpgmrGetNumPrecSolves\(mem,)586
+b(&nps\);)-2546 18265 y Fa(817)3653 b Fd(check_flag\(&ier,)583
+b("IDASpgmrGetNumPrecSolves",)i(1,)d(id\);)-2546 19593
+y Fa(818)-2546 20922 y(819)1328 b Fd(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))-2546 22250 y
+Fa(820)3653 b Fd(printf\(")582 b(\0455.2Lf)g(\04513.5Le)1163
+b(\045d)g(\0453ld)g(\0453ld)g(\0453ld)g(\0454ld)f(\0454ld)h(\0459.2Le)h
+(\0453ld)581 b(\0453ld\\n",)-2546 23578 y Fa(821)7721
+b Fd(t,)581 b(umax,)h(kused,)g(nst,)g(nni,)g(nje,)f(nre,)h(nreS,)g
+(hused,)g(npe,)g(nps\);)-2546 24907 y Fa(822)1328 b Fd(#elif)582
+b(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546 26235 y
+Fa(823)3653 b Fd(printf\(")582 b(\0455.2f)g(\04513.5le)1163
+b(\045d)g(\0453ld)g(\0453ld)g(\0453ld)f(\0454ld)h(\0454ld)g(\0459.2le)g
+(\0453ld)582 b(\0453ld\\n",)-2546 27563 y Fa(824)7721
+b Fd(t,)581 b(umax,)h(kused,)g(nst,)g(nni,)g(nje,)f(nre,)h(nreS,)g
+(hused,)g(npe,)g(nps\);)-2546 28892 y Fa(825)1328 b Fd(#else)-2546
+30220 y Fa(826)3653 b Fd(printf\(")582 b(\0455.2f)g(\04513.5e)1163
+b(\045d)g(\0453ld)g(\0453ld)f(\0453ld)h(\0454ld)g(\0454ld)g(\0459.2e)g
+(\0453ld)582 b(\0453ld\\n",)-2546 31548 y Fa(827)7721
+b Fd(t,)581 b(umax,)h(kused,)g(nst,)g(nni,)g(nje,)f(nre,)h(nreS,)g
+(hused,)g(npe,)g(nps\);)-2546 32877 y Fa(828)1328 b Fd(#endif)-2546
+34205 y Fa(829)-2546 35533 y(830)2490 b Fd(})-2546 36862
+y Fa(831)1328 b Fd(})-2546 38190 y Fa(832)-2546 39518
+y(833)g Fd(/*)-2546 40847 y Fa(834)1909 b Fd(*)581 b(Print)h(some)g
+(final)g(integrator)h(statistics)-2546 42175 y Fa(835)1909
+b Fd(*/)-2546 43504 y Fa(836)-2546 44832 y(837)1328 b
+Fd(static)582 b(void)g(PrintFinalStats\(void)i(*mem\))-2546
+46160 y Fa(838)1328 b Fd({)-2546 47489 y Fa(839)2490
+b Fd(long)582 b(int)g(netf,)g(ncfn,)f(ncfl;)-2546 48817
+y Fa(840)-2546 50145 y(841)2490 b Fd(IDAGetNumErrTestFails\(mem,)585
+b(&netf\);)-2546 51474 y Fa(842)2490 b Fd
+(IDAGetNumNonlinSolvConvFails\(mem,)586 b(&ncfn\);)-2546
+52802 y Fa(843)2490 b Fd(IDASpgmrGetNumConvFails\(mem,)586
+b(&ncfl\);)-2546 54130 y Fa(844)-2546 55459 y(845)2490
+b Fd(printf\("\\nError)584 b(test)d(failures)6975 b(=)582
+b(\045ld\\n",)g(netf\);)-2546 56787 y Fa(846)2490 b Fd
+(printf\("Nonlinear)584 b(convergence)f(failures)f(=)f(\045ld\\n",)i
+(ncfn\);)-2546 58115 y Fa(847)2490 b Fd(printf\("Linear)584
+b(convergence)e(failures)2326 b(=)581 b(\045ld\\n",)i(ncfl\);)-2546
+59444 y Fa(848)1328 b Fd(})-2546 60772 y Fa(849)-2546
+62100 y(850)g Fd(/*)-2546 63429 y Fa(851)1909 b Fd(*)581
+b(Check)h(function)h(return)f(value...)-2546 64757 y
+Fa(852)1909 b Fd(*)1744 b(opt)581 b(==)h(0)f(means)h(SUNDIALS)g
+(function)h(allocates)f(memory)g(so)g(check)g(if)-2546
+66086 y Fa(853)1909 b Fd(*)6974 b(returned)582 b(NULL)g(pointer)-2546
+67414 y Fa(854)1909 b Fd(*)1744 b(opt)581 b(==)h(1)f(means)h(SUNDIALS)g
+(function)h(returns)f(a)f(flag)h(so)f(check)h(if)-2546
+68742 y Fa(855)1909 b Fd(*)6974 b(flag)582 b(>=)f(0)-2546
+70071 y Fa(856)1909 b Fd(*)1744 b(opt)581 b(==)h(2)f(means)h(function)g
+(allocates)h(memory)f(so)f(check)h(if)g(returned)-2546
+71399 y Fa(857)1909 b Fd(*)6974 b(NULL)582 b(pointer)-2546
+72727 y Fa(858)1909 b Fd(*/)-2546 74056 y Fa(859)-2546
+75384 y(860)1328 b Fd(static)582 b(int)g(check_flag\(void)h
+(*flagvalue,)g(char)f(*funcname,)g(int)g(opt,)g(int)f(id\))-2546
+76712 y Fa(861)1328 b Fd({)-2546 78041 y Fa(862)2490
+b Fd(int)582 b(*errflag;)p Black 23394 81741 a Fp(62)p
+Black eop
+%%Page: 63 67
+63 66 bop Black Black 1454 7638 a Fa(863)1454 8966 y(864)2490
+b Fd(if)582 b(\(opt)f(==)h(0)f(&&)h(flagvalue)g(==)g(NULL\))g({)1454
+10295 y Fa(865)3653 b Fd(/*)581 b(Check)h(if)f(SUNDIALS)i(function)f
+(returned)g(NULL)g(pointer)g(-)g(no)f(memory)h(allocated)h(*/)1454
+11623 y Fa(866)3653 b Fd(fprintf\(stderr,)1454 12951
+y Fa(867)8302 b Fd("\\nSUNDIALS_ERROR\(\045d\):)584 b(\045s\(\))e
+(failed)g(-)f(returned)i(NULL)e(pointer\\n\\n",)1454
+14280 y Fa(868)8302 b Fd(id,)581 b(funcname\);)1454 15608
+y Fa(869)3653 b Fd(return\(1\);)1454 16936 y Fa(870)2490
+b Fd(})582 b(else)f(if)h(\(opt)g(==)f(1\))g({)1454 18265
+y Fa(871)3653 b Fd(/*)581 b(Check)h(if)f(flag)h(<)f(0)h(*/)1454
+19593 y Fa(872)3653 b Fd(errflag)582 b(=)f(\(int)h(*\))f(flagvalue;)
+1454 20922 y Fa(873)3653 b Fd(if)581 b(\(*errflag)i(<)e(0\))g({)1454
+22250 y Fa(874)4815 b Fd(fprintf\(stderr,)1454 23578
+y Fa(875)9464 b Fd("\\nSUNDIALS_ERROR\(\045d\):)585 b(\045s\(\))c
+(failed)h(with)g(flag)g(=)f(\045d\\n\\n",)1454 24907
+y Fa(876)9464 b Fd(id,)582 b(funcname,)g(*errflag\);)1454
+26235 y Fa(877)4815 b Fd(return\(1\);)1454 27563 y Fa(878)3653
+b Fd(})1454 28892 y Fa(879)2490 b Fd(})582 b(else)f(if)h(\(opt)g(==)f
+(2)g(&&)h(flagvalue)g(==)g(NULL\))g({)1454 30220 y Fa(880)3653
+b Fd(/*)581 b(Check)h(if)f(function)i(returned)f(NULL)g(pointer)g(-)f
+(no)h(memory)g(allocated)g(*/)1454 31548 y Fa(881)3653
+b Fd(fprintf\(stderr,)1454 32877 y Fa(882)8302 b Fd
+("\\nMEMORY_ERROR\(\045d\):)584 b(\045s\(\))e(failed)g(-)f(returned)h
+(NULL)g(pointer\\n\\n",)1454 34205 y Fa(883)8302 b Fd(id,)581
+b(funcname\);)1454 35533 y Fa(884)3653 b Fd(return\(1\);)1454
+36862 y Fa(885)2490 b Fd(})1454 38190 y Fa(886)1454 39518
+y(887)g Fd(return\(0\);)1454 40847 y Fa(888)1328 b Fd(})p
+Black 27394 81741 a Fp(63)p Black eop
+%%Page: 64 68
+64 67 bop Black Black 0 7638 a Fo(E)1793 b(Listing)599
+b(of)f Fb(iwebbbd.c)-1734 10674 y Fa(1)1328 b Fd(/*)-1734
+12003 y Fa(2)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)
+-1734 13331 y Fa(3)1909 b Fd(*)581 b($Revision:)i(1.21.2.2)f($)-1734
+14659 y Fa(4)1909 b Fd(*)581 b($Date:)h(2005/04/04)h(22:36:42)f($)-1734
+15988 y Fa(5)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)
+-1734 17316 y Fa(6)1909 b Fd(*)581 b(Programmer\(s\):)j(Allan)e
+(Taylor,)g(Alan)g(Hindmarsh)g(and)-1734 18645 y Fa(7)1909
+b Fd(*)9299 b(Radu)581 b(Serban)h(@)g(LLNL)-1734 19973
+y Fa(8)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)
+-1734 21301 y Fa(9)1909 b Fd(*)581 b(Example)i(program)f(for)f(IDA:)h
+(Food)g(web,)g(parallel,)g(GMRES,)g(IDABBD)-2140 22630
+y Fa(10)1909 b Fd(*)581 b(preconditioner.)-2140 23958
+y Fa(11)1909 b Fd(*)-2140 25286 y Fa(12)g Fd(*)581 b(This)h(example)g
+(program)h(for)e(IDA)h(uses)g(IDASPGMR)g(as)f(the)h(linear)g(solver.)
+-2140 26615 y Fa(13)1909 b Fd(*)581 b(It)h(is)f(written)i(for)e(a)g
+(parallel)i(computer)f(system)g(and)g(uses)f(the)-2140
+27943 y Fa(14)1909 b Fd(*)581 b(IDABBDPRE)i(band-block-diagonal)h
+(preconditioner)f(module)f(for)g(the)-2140 29271 y Fa(15)1909
+b Fd(*)581 b(IDASPGMR)i(package.)f(It)g(was)f(originally)i(run)e(on)h
+(a)f(Sun)h(SPARC)g(cluster)-2140 30600 y Fa(16)1909 b
+Fd(*)581 b(and)h(used)g(MPICH.)-2140 31928 y Fa(17)1909
+b Fd(*)-2140 33256 y Fa(18)g Fd(*)581 b(The)h(mathematical)h(problem)f
+(solved)g(in)g(this)f(example)i(is)e(a)g(DAE)h(system)-2140
+34585 y Fa(19)1909 b Fd(*)581 b(that)h(arises)g(from)g(a)f(system)h(of)
+g(partial)g(differential)h(equations)f(after)-2140 35913
+y Fa(20)1909 b Fd(*)581 b(spatial)i(discretization.)g(The)f(PDE)f
+(system)h(is)g(a)f(food)h(web)f(population)-2140 37241
+y Fa(21)1909 b Fd(*)581 b(model,)h(with)g(predator-prey)h(interaction)g
+(and)f(diffusion)g(on)g(the)f(unit)-2140 38570 y Fa(22)1909
+b Fd(*)581 b(square)h(in)g(two)g(dimensions.)g(The)g(dependent)g
+(variable)h(vector)f(is:)-2140 39898 y Fa(23)1909 b Fd(*)-2140
+41227 y Fa(24)g Fd(*)5231 b(1)1743 b(2)5231 b(ns)-2140
+42555 y Fa(25)1909 b Fd(*)1744 b(c)581 b(=)g(\(c)h(,)f(c)g(,)1163
+b(...,)582 b(c)1162 b(\))581 b(,)h(ns)f(=)g(2)h(*)f(np)-2140
+43883 y Fa(26)1909 b Fd(*)-2140 45212 y Fa(27)g Fd(*)581
+b(and)h(the)g(PDE's)g(are)f(as)h(follows:)-2140 46540
+y Fa(28)1909 b Fd(*)-2140 47868 y Fa(29)g Fd(*)2906 b(i)7555
+b(i)3487 b(i)-2140 49197 y Fa(30)1909 b Fd(*)1744 b(dc)581
+b(/dt)h(=)f(d\(i\)*\(c)2326 b(+)581 b(c)1162 b(\))h(+)f(R)582
+b(\(x,y,c\))1744 b(\(i)582 b(=)f(1,...,np\))-2140 50525
+y Fa(31)1909 b Fd(*)11042 b(xx)2906 b(yy)4069 b(i)-2140
+51853 y Fa(32)1909 b Fd(*)-2140 53182 y Fa(33)g Fd(*)8136
+b(i)3487 b(i)-2140 54510 y Fa(34)1909 b Fd(*)1744 b(0)581
+b(=)g(d\(i\)*\(c)2326 b(+)581 b(c)1163 b(\))f(+)h(R)f(\(x,y,c\))1745
+b(\(i)581 b(=)g(np+1,...,ns\))-2140 55838 y Fa(35)1909
+b Fd(*)8136 b(xx)2906 b(yy)4069 b(i)-2140 57167 y Fa(36)1909
+b Fd(*)-2140 58495 y Fa(37)g Fd(*)1744 b(where)582 b(the)f(reaction)i
+(terms)e(R)h(are:)-2140 59823 y Fa(38)1909 b Fd(*)-2140
+61152 y Fa(39)g Fd(*)11042 b(i)7555 b(ns)5231 b(j)-2140
+62480 y Fa(40)1909 b Fd(*)1744 b(R)1162 b(\(x,y,c\))i(=)e(c)g(*)582
+b(\(b\(i\))1163 b(+)581 b(sum)h(a\(i,j\)*c)g(\))-2140
+63808 y Fa(41)1909 b Fd(*)2325 b(i)15691 b(j=1)-2140
+65137 y Fa(42)1909 b Fd(*)-2140 66465 y Fa(43)g Fd(*)581
+b(The)h(number)g(of)g(species)g(is)f(ns)h(=)f(2)g(*)h(np,)f(with)h(the)
+f(first)h(np)g(being)-2140 67794 y Fa(44)1909 b Fd(*)581
+b(prey)h(and)g(the)f(last)h(np)g(being)f(predators.)i(The)f
+(coefficients)h(a\(i,j\),)-2140 69122 y Fa(45)1909 b
+Fd(*)581 b(b\(i\),)h(d\(i\))g(are:)-2140 70450 y Fa(46)1909
+b Fd(*)-2140 71779 y Fa(47)g Fd(*)1744 b(a\(i,i\))582
+b(=)f(-AA)1163 b(\(all)582 b(i\))-2140 73107 y Fa(48)1909
+b Fd(*)1744 b(a\(i,j\))582 b(=)f(-GG)1163 b(\(i)581 b(<=)h(np)f(,)g(j)h
+(>)1162 b(np\))-2140 74435 y Fa(49)1909 b Fd(*)1744 b(a\(i,j\))582
+b(=)1162 b(EE)h(\(i)581 b(>)1163 b(np,)f(j)582 b(<=)f(np\))-2140
+75764 y Fa(50)1909 b Fd(*)1744 b(all)581 b(other)h(a\(i,j\))g(=)g(0)
+-2140 77092 y Fa(51)1909 b Fd(*)1744 b(b\(i\))581 b(=)h(BB*\(1+)g
+(alpha)g(*)f(x*y)h(+)f(beta*sin\(4)i(pi)e(x\)*sin\(4)h(pi)g(y\)\))1163
+b(\(i)581 b(<=)g(np\))-2140 78420 y Fa(52)1909 b Fd(*)1744
+b(b\(i\))581 b(=-BB*\(1+)i(alpha)f(*)f(x*y)h(+)f(beta*sin\(4)i(pi)e
+(x\)*sin\(4)h(pi)g(y\)\))1163 b(\(i)f(>)581 b(np\))p
+Black 23394 81741 a Fp(64)p Black eop
+%%Page: 65 69
+65 68 bop Black Black 1860 7638 a Fa(53)1909 b Fd(*)1744
+b(d\(i\))581 b(=)h(DPREY)1163 b(\(i)581 b(<=)h(np\))1860
+8966 y Fa(54)1909 b Fd(*)1744 b(d\(i\))581 b(=)h(DPRED)1163
+b(\(i)581 b(>)h(np\))1860 10295 y Fa(55)1909 b Fd(*)1860
+11623 y Fa(56)g Fd(*)581 b(Note:)h(The)g(above)g(equations)g(are)g
+(written)g(in)g(1-based)g(indices,)1860 12951 y Fa(57)1909
+b Fd(*)581 b(whereas)i(the)e(code)h(has)g(0-based)g(indices,)g(being)g
+(written)g(in)g(C.)1860 14280 y Fa(58)1909 b Fd(*)1860
+15608 y Fa(59)g Fd(*)581 b(The)h(various)g(scalar)g(parameters)h
+(required)f(are)g(set)f(using)h('#define')1860 16936
+y Fa(60)1909 b Fd(*)581 b(statements)i(or)f(directly)g(in)f(routine)i
+(InitUserData.)g(In)e(this)h(program,)1860 18265 y Fa(61)1909
+b Fd(*)581 b(np)h(=)f(1,)h(ns)f(=)g(2.)h(The)f(boundary)i(conditions)f
+(are)g(homogeneous)h(Neumann:)1860 19593 y Fa(62)1909
+b Fd(*)581 b(normal)h(derivative)1164 b(=)f(0.)1860 20922
+y Fa(63)1909 b Fd(*)1860 22250 y Fa(64)g Fd(*)581 b(A)h(polynomial)g
+(in)g(x)f(and)h(y)f(is)g(used)h(to)g(set)f(the)h(initial)g(values)g(of)
+g(the)1860 23578 y Fa(65)1909 b Fd(*)581 b(first)h(np)g(variables)g
+(\(the)g(prey)g(variables\))g(at)g(each)g(x,y)f(location,)1860
+24907 y Fa(66)1909 b Fd(*)581 b(while)h(initial)h(values)f(for)f(the)h
+(remaining)g(\(predator\))h(variables)f(are)1860 26235
+y Fa(67)1909 b Fd(*)581 b(set)h(to)f(a)h(flat)g(value,)g(which)f(is)h
+(corrected)g(by)g(IDACalcIC.)1860 27563 y Fa(68)1909
+b Fd(*)1860 28892 y Fa(69)g Fd(*)581 b(The)h(PDEs)g(are)f(discretized)i
+(by)f(central)g(differencing)h(on)e(a)g(MX)h(by)f(MY)1860
+30220 y Fa(70)1909 b Fd(*)581 b(mesh,)h(and)g(so)f(the)h(system)g(size)
+g(Neq)f(is)h(the)f(product)1860 31548 y Fa(71)1909 b
+Fd(*)581 b(MX)h(*)f(MY)h(*)f(NUM_SPECIES.)i(The)e(system)i(is)e
+(actually)h(implemented)h(on)1860 32877 y Fa(72)1909
+b Fd(*)581 b(submeshes,)i(processor)g(by)e(processor,)i(with)e(an)h
+(MXSUB)g(by)f(MYSUB)h(mesh)1860 34205 y Fa(73)1909 b
+Fd(*)581 b(on)h(each)g(of)f(NPEX)h(*)f(NPEY)h(processors.)1860
+35533 y Fa(74)1909 b Fd(*)1860 36862 y Fa(75)g Fd(*)581
+b(The)h(DAE)g(system)g(is)f(solved)h(by)g(IDA)f(using)h(the)g(IDASPGMR)
+g(linear)g(solver,)1860 38190 y Fa(76)1909 b Fd(*)581
+b(in)h(conjunction)h(with)e(the)h(preconditioner)h(module)f(IDABBDPRE.)
+h(The)1860 39518 y Fa(77)1909 b Fd(*)581 b(preconditioner)j(uses)d(a)h
+(5-diagonal)g(band-block-diagonal)1860 40847 y Fa(78)1909
+b Fd(*)581 b(approximation)j(\(half-bandwidths)f(=)e(2\).)h(Output)g
+(is)f(printed)i(at)1860 42175 y Fa(79)1909 b Fd(*)581
+b(t)h(=)f(0,)g(.001,)h(.01,)g(.1,)g(.4,)f(.7,)h(1.)1860
+43504 y Fa(80)1909 b Fd(*)581 b
+(-----------------------------------------------------------------)1860
+44832 y Fa(81)1909 b Fd(*)581 b(References:)1860 46160
+y Fa(82)1909 b Fd(*)581 b([1])h(Peter)g(N.)f(Brown)h(and)g(Alan)g(C.)f
+(Hindmarsh,)1860 47489 y Fa(83)1909 b Fd(*)2906 b(Reduced)582
+b(Storage)g(Matrix)g(Methods)h(in)e(Stiff)h(ODE)g(systems,)1860
+48817 y Fa(84)1909 b Fd(*)2906 b(Journal)582 b(of)g(Applied)g
+(Mathematics)h(and)e(Computation,)i(Vol.)f(31)1860 50145
+y Fa(85)1909 b Fd(*)2906 b(\(May)582 b(1989\),)g(pp.)f(40-91.)1860
+51474 y Fa(86)1909 b Fd(*)1860 52802 y Fa(87)g Fd(*)581
+b([2])h(Peter)g(N.)f(Brown,)h(Alan)g(C.)g(Hindmarsh,)g(and)g(Linda)g
+(R.)f(Petzold,)1860 54130 y Fa(88)1909 b Fd(*)2906 b(Using)582
+b(Krylov)g(Methods)g(in)g(the)f(Solution)i(of)e(Large-Scale)1860
+55459 y Fa(89)1909 b Fd(*)2906 b(Differential-Algebraic)584
+b(Systems,)f(SIAM)f(J.)f(Sci.)h(Comput.,)g(15)1860 56787
+y Fa(90)1909 b Fd(*)2906 b(\(1994\),)582 b(pp.)g(1467-1488.)1860
+58115 y Fa(91)1909 b Fd(*)1860 59444 y Fa(92)g Fd(*)581
+b([3])h(Peter)g(N.)f(Brown,)h(Alan)g(C.)g(Hindmarsh,)g(and)g(Linda)g
+(R.)f(Petzold,)1860 60772 y Fa(93)1909 b Fd(*)2906 b(Consistent)583
+b(Initial)f(Condition)g(Calculation)h(for)f(Differential-)1860
+62100 y Fa(94)1909 b Fd(*)2906 b(Algebraic)583 b(Systems,)f(SIAM)g(J.)f
+(Sci.)h(Comput.,)g(19)g(\(1998\),)1860 63429 y Fa(95)1909
+b Fd(*)2906 b(pp.)582 b(1495-1512.)1860 64757 y Fa(96)1909
+b Fd(*)581 b
+(-----------------------------------------------------------------)1860
+66086 y Fa(97)1909 b Fd(*/)1860 67414 y Fa(98)1860 68742
+y(99)1328 b Fd(#include)582 b(<stdio.h>)1454 70071 y
+Fa(100)1328 b Fd(#include)582 b(<stdlib.h>)1454 71399
+y Fa(101)1328 b Fd(#include)582 b(<math.h>)1454 72727
+y Fa(102)1328 b Fd(#include)582 b("sundialstypes.h")2327
+b(/*)582 b(Definitions)h(of)e(realtype)h(and)g(booleantype)4070
+b(*/)1454 74056 y Fa(103)1328 b Fd(#include)582 b("iterative.h")4651
+b(/*)582 b(Contains)g(the)g(types)g(of)f(preconditioning)5233
+b(*/)1454 75384 y Fa(104)1328 b Fd(#include)582 b("ida.h")8137
+b(/*)582 b(Main)g(header)g(file)17435 b(*/)1454 76712
+y Fa(105)1328 b Fd(#include)582 b("idaspgmr.h")5232 b(/*)582
+b(Use)g(IDASPGMR)g(linear)g(solver)11624 b(*/)1454 78041
+y Fa(106)1328 b Fd(#include)582 b("nvector_parallel.h")i(/*)e
+(Definitions)h(of)e(type)h(N_Vector,)g(macro)g(NV_DATA_P)h(*/)p
+Black 27394 81741 a Fp(65)p Black eop
+%%Page: 66 70
+66 69 bop Black Black -2546 7638 a Fa(107)1328 b Fd(#include)582
+b("sundialsmath.h")2908 b(/*)582 b(Contains)g(RSqrt)g(routine)13949
+b(*/)-2546 8966 y Fa(108)1328 b Fd(#include)582 b("smalldense.h")4070
+b(/*)582 b(Contains)g(definitions)h(for)f(denalloc)g(routine)2907
+b(*/)-2546 10295 y Fa(109)1328 b Fd(#include)582 b("mpi.h")8137
+b(/*)582 b(MPI)g(library)g(routines)15111 b(*/)-2546
+11623 y Fa(110)1328 b Fd(#include)582 b("idabbdpre.h")4651
+b(/*)582 b(Definitions)h(for)e(the)h(IDABBDPRE)g(preconditioner)1165
+b(*/)-2546 12951 y Fa(111)-2546 14280 y(112)1328 b Fd(/*)581
+b(Problem)i(Constants.)f(*/)-2546 15608 y Fa(113)-2546
+16936 y(114)1328 b Fd(#define)582 b(NPREY)4069 b(1)4649
+b(/*)582 b(Number)g(of)f(prey)h(\(=)f(number)h(of)g(predators\).)h(*/)
+-2546 18265 y Fa(115)1328 b Fd(#define)582 b(NUM_SPECIES)h(2*NPREY)
+-2546 19593 y Fa(116)-2546 20922 y(117)1328 b Fd(#define)582
+b(PI)5812 b(RCONST\(3.1415926535898\))585 b(/*)c(pi)g(*/)-2546
+22250 y Fa(118)1328 b Fd(#define)582 b(FOURPI)3488 b
+(\(RCONST\(4.0\)*PI\))4652 b(/*)581 b(4)g(pi)h(*/)-2546
+23578 y Fa(119)-2546 24907 y(120)1328 b Fd(#define)582
+b(MXSUB)4069 b(10)2325 b(/*)581 b(Number)h(of)g(x)f(mesh)h(points)g
+(per)f(processor)i(subgrid)f(*/)-2546 26235 y Fa(121)1328
+b Fd(#define)582 b(MYSUB)4069 b(10)2325 b(/*)581 b(Number)h(of)g(y)f
+(mesh)h(points)g(per)f(processor)i(subgrid)f(*/)-2546
+27563 y Fa(122)1328 b Fd(#define)582 b(NPEX)4650 b(2)2906
+b(/*)581 b(Number)h(of)g(subgrids)g(in)g(the)f(x)g(direction)i(*/)-2546
+28892 y Fa(123)1328 b Fd(#define)582 b(NPEY)4650 b(2)2906
+b(/*)581 b(Number)h(of)g(subgrids)g(in)g(the)f(y)g(direction)i(*/)-2546
+30220 y Fa(124)1328 b Fd(#define)582 b(MX)5812 b(\(MXSUB*NPEX\))3489
+b(/*)581 b(MX)h(=)f(number)h(of)f(x)h(mesh)f(points)h(*/)-2546
+31548 y Fa(125)1328 b Fd(#define)582 b(MY)5812 b(\(MYSUB*NPEY\))3489
+b(/*)581 b(MY)h(=)f(number)h(of)f(y)h(mesh)f(points)h(*/)-2546
+32877 y Fa(126)1328 b Fd(#define)582 b(NSMXSUB)2907 b(\(NUM_SPECIES)583
+b(*)e(MXSUB\))-2546 34205 y Fa(127)1328 b Fd(#define)582
+b(NEQ)5231 b(\(NUM_SPECIES*MX*MY\))584 b(/*)d(Number)h(of)g(equations)g
+(in)g(system)g(*/)-2546 35533 y Fa(128)1328 b Fd(#define)582
+b(AA)5812 b(RCONST\(1.0\))2326 b(/*)582 b(Coefficient)g(in)g(above)g
+(eqns.)g(for)f(a)h(*/)-2546 36862 y Fa(129)1328 b Fd(#define)582
+b(EE)5812 b(RCONST\(10000.\))583 b(/*)f(Coefficient)g(in)g(above)g
+(eqns.)g(for)f(a)h(*/)-2546 38190 y Fa(130)1328 b Fd(#define)582
+b(GG)5812 b(RCONST\(0.5e-6\))583 b(/*)f(Coefficient)g(in)g(above)g
+(eqns.)g(for)f(a)h(*/)-2546 39518 y Fa(131)1328 b Fd(#define)582
+b(BB)5812 b(RCONST\(1.0\))2326 b(/*)582 b(Coefficient)g(in)g(above)g
+(eqns.)g(for)f(b)h(*/)-2546 40847 y Fa(132)1328 b Fd(#define)582
+b(DPREY)4069 b(RCONST\(1.0\))2326 b(/*)582 b(Coefficient)g(in)g(above)g
+(eqns.)g(for)f(d)h(*/)-2546 42175 y Fa(133)1328 b Fd(#define)582
+b(DPRED)4069 b(RCONST\(0.05\))1745 b(/*)582 b(Coefficient)g(in)g(above)
+g(eqns.)g(for)f(d)h(*/)-2546 43504 y Fa(134)1328 b Fd(#define)582
+b(ALPHA)4069 b(RCONST\(50.\))2326 b(/*)582 b(Coefficient)g(alpha)g(in)g
+(above)g(eqns.)g(*/)-2546 44832 y Fa(135)1328 b Fd(#define)582
+b(BETA)4650 b(RCONST\(1000.\))1164 b(/*)582 b(Coefficient)g(beta)g(in)g
+(above)g(eqns.)f(*/)-2546 46160 y Fa(136)1328 b Fd(#define)582
+b(AX)5812 b(RCONST\(1.0\))2326 b(/*)582 b(Total)g(range)f(of)h(x)f
+(variable)i(*/)-2546 47489 y Fa(137)1328 b Fd(#define)582
+b(AY)5812 b(RCONST\(1.0\))2326 b(/*)582 b(Total)g(range)f(of)h(y)f
+(variable)i(*/)-2546 48817 y Fa(138)1328 b Fd(#define)582
+b(RTOL)4650 b(RCONST\(1.e-5\))1164 b(/*)f(rtol)582 b(tolerance)g(*/)
+-2546 50145 y Fa(139)1328 b Fd(#define)582 b(ATOL)4650
+b(RCONST\(1.e-5\))1164 b(/*)f(atol)582 b(tolerance)g(*/)-2546
+51474 y Fa(140)1328 b Fd(#define)582 b(ZERO)4650 b(RCONST\(0.\))2907
+b(/*)582 b(0.)f(*/)-2546 52802 y Fa(141)1328 b Fd(#define)582
+b(ONE)5231 b(RCONST\(1.0\))2326 b(/*)582 b(1.)f(*/)-2546
+54130 y Fa(142)1328 b Fd(#define)582 b(NOUT)4650 b(6)-2546
+55459 y Fa(143)1328 b Fd(#define)582 b(TMULT)4069 b(RCONST\(10.0\))1745
+b(/*)582 b(Multiplier)g(for)g(tout)g(values)g(*/)-2546
+56787 y Fa(144)1328 b Fd(#define)582 b(TADD)4650 b(RCONST\(0.3\))2326
+b(/*)582 b(Increment)g(for)g(tout)f(values)i(*/)-2546
+58115 y Fa(145)-2546 59444 y(146)1328 b Fd(/*)581 b(User-defined)i
+(vector)f(accessor)h(macro)f(IJ_Vptr.)g(*/)-2546 60772
+y Fa(147)-2546 62100 y(148)1328 b Fd(/*)-2546 63429 y
+Fa(149)1909 b Fd(*)581 b(IJ_Vptr)i(is)e(defined)h(in)g(order)g(to)f
+(express)h(the)g(underlying)g(3-d)g(structure)h(of)e(the)-2546
+64757 y Fa(150)1909 b Fd(*)581 b(dependent)i(variable)f(vector)g(from)g
+(its)g(underlying)g(1-d)g(storage)g(\(an)g(N_Vector\).)-2546
+66086 y Fa(151)1909 b Fd(*)581 b(IJ_Vptr\(vv,i,j\))j(returns)e(a)f
+(pointer)i(to)e(the)h(location)g(in)f(vv)h(corresponding)h(to)-2546
+67414 y Fa(152)1909 b Fd(*)581 b(species)i(index)f(is)f(=)g(0,)h
+(x-index)g(ix)f(=)h(i,)f(and)h(y-index)g(jy)f(=)h(j.)-2546
+68742 y Fa(153)1909 b Fd(*/)-2546 70071 y Fa(154)-2546
+71399 y(155)1328 b Fd(#define)582 b(IJ_Vptr\(vv,i,j\))i
+(\(&NV_Ith_P\(vv,)f(\(i\)*NUM_SPECIES)g(+)e(\(j\)*NSMXSUB)i(\)\))-2546
+72727 y Fa(156)-2546 74056 y(157)1328 b Fd(/*)581 b(Type:)h(UserData.)
+1164 b(Contains)582 b(problem)h(constants,)f(preconditioner)h(data,)f
+(etc.)g(*/)-2546 75384 y Fa(158)-2546 76712 y(159)1328
+b Fd(typedef)582 b(struct)g({)-2546 78041 y Fa(160)2490
+b Fd(long)582 b(int)g(ns,)f(np,)h(thispe,)g(npes,)g(ixsub,)g(jysub,)g
+(npex,)g(npey;)p Black 23394 81741 a Fp(66)p Black eop
+%%Page: 67 71
+67 70 bop Black Black 1454 7638 a Fa(161)2490 b Fd(long)582
+b(int)g(mxsub,)g(mysub,)g(nsmxsub,)g(nsmxsub2;)1454 8966
+y Fa(162)2490 b Fd(realtype)583 b(dx,)e(dy,)h(**acoef;)1454
+10295 y Fa(163)2490 b Fd(realtype)583 b(cox[NUM_SPECIES],)g
+(coy[NUM_SPECIES],)h(bcoef[NUM_SPECIES],)1454 11623 y
+Fa(164)3653 b Fd(rhs[NUM_SPECIES],)583 b
+(cext[\(MXSUB+2\)*\(MYSUB+2\)*NUM_SPECIES];)1454 12951
+y Fa(165)2490 b Fd(MPI_Comm)583 b(comm;)1454 14280 y
+Fa(166)2490 b Fd(N_Vector)583 b(rates;)1454 15608 y Fa(167)2490
+b Fd(long)582 b(int)g(n_local;)1454 16936 y Fa(168)1328
+b Fd(})581 b(*UserData;)1454 18265 y Fa(169)1454 19593
+y(170)1328 b Fd(/*)581 b(Prototypes)i(for)f(functions)g(called)g(by)g
+(the)f(IDA)h(Solver.)g(*/)1454 20922 y Fa(171)1454 22250
+y(172)1328 b Fd(static)582 b(int)g(resweb\(realtype)h(tt,)1454
+23578 y Fa(173)11789 b Fd(N_Vector)582 b(cc,)g(N_Vector)g(cp,)g
+(N_Vector)g(rr,)1454 24907 y Fa(174)11789 b Fd(void)581
+b(*res_data\);)1454 26235 y Fa(175)1454 27563 y(176)1328
+b Fd(static)582 b(int)g(reslocal\(long)h(int)e(Nlocal,)i(realtype)f
+(tt,)1454 28892 y Fa(177)12951 b Fd(N_Vector)582 b(cc,)g(N_Vector)g
+(cp,)g(N_Vector)g(res,)1454 30220 y Fa(178)12951 b Fd(void)582
+b(*res_data\);)1454 31548 y Fa(179)1454 32877 y(180)1328
+b Fd(static)582 b(int)g(rescomm\(long)h(int)e(Nlocal,)h(realtype)h(tt,)
+1454 34205 y Fa(181)12370 b Fd(N_Vector)582 b(cc,)g(N_Vector)g(cp,)1454
+35533 y Fa(182)12370 b Fd(void)582 b(*res_data\);)1454
+36862 y Fa(183)1454 38190 y(184)1328 b Fd(/*)581 b(Prototypes)i(for)f
+(supporting)g(functions)h(*/)1454 39518 y Fa(185)1454
+40847 y(186)1328 b Fd(static)582 b(void)g(BSend\(MPI_Comm)h(comm,)f
+(long)g(int)f(thispe,)h(long)g(int)g(ixsub,)g(long)g(int)f(jysub,)1454
+42175 y Fa(187)11789 b Fd(long)581 b(int)h(dsizex,)g(long)g(int)g
+(dsizey,)g(realtype)g(carray[]\);)1454 43504 y Fa(188)1454
+44832 y(189)1328 b Fd(static)582 b(void)g(BRecvPost\(MPI_Comm)i(comm,)e
+(MPI_Request)g(request[],)h(long)f(int)f(thispe,)1454
+46160 y Fa(190)14113 b Fd(long)582 b(int)g(ixsub,)g(long)f(int)h
+(jysub,)1454 47489 y Fa(191)14113 b Fd(long)582 b(int)g(dsizex,)g(long)
+g(int)f(dsizey,)1454 48817 y Fa(192)14113 b Fd(realtype)583
+b(cext[],)f(realtype)g(buffer[]\);)1454 50145 y Fa(193)1454
+51474 y(194)1328 b Fd(static)582 b(void)g(BRecvWait\(MPI_Request)i
+(request[],)f(long)e(int)h(ixsub,)g(long)g(int)f(jysub,)1454
+52802 y Fa(195)14113 b Fd(long)582 b(int)g(dsizex,)g(realtype)g
+(cext[],)g(realtype)h(buffer[]\);)1454 54130 y Fa(196)1454
+55459 y(197)1328 b Fd(static)582 b(void)g(WebRates\(realtype)h(xx,)f
+(realtype)g(yy,)g(realtype)g(*cxy,)g(realtype)h(*ratesxy,)1454
+56787 y Fa(198)13532 b Fd(UserData)582 b(webdata\);)1454
+58115 y Fa(199)1454 59444 y(200)1328 b Fd(static)582
+b(realtype)g(dotprod\(long)h(int)f(size,)g(realtype)g(*x1,)g(realtype)g
+(*x2\);)1454 60772 y Fa(201)1454 62100 y(202)1328 b Fd(/*)581
+b(Prototypes)i(for)f(private)g(functions)g(*/)1454 63429
+y Fa(203)1454 64757 y(204)1328 b Fd(static)582 b(void)g
+(InitUserData\(UserData)i(webdata,)e(int)g(thispe,)g(int)g(npes,)1454
+66086 y Fa(205)15857 b Fd(MPI_Comm)582 b(comm\);)1454
+67414 y Fa(206)1454 68742 y(207)1328 b Fd(static)582
+b(void)g(SetInitialProfiles\(N_Vector)j(cc,)d(N_Vector)g(cp,)f
+(N_Vector)i(id,)1454 70071 y Fa(208)19344 b Fd(N_Vector)582
+b(scrtch,)g(UserData)g(webdata\);)1454 71399 y Fa(209)1454
+72727 y(210)1328 b Fd(static)582 b(void)g(PrintHeader\(long)h(int)f
+(SystemSize,)h(int)e(maxl,)1454 74056 y Fa(211)15276
+b Fd(long)581 b(int)h(mudq,)g(long)g(int)f(mldq,)1454
+75384 y Fa(212)15276 b Fd(long)581 b(int)h(mukeep,)g(long)g(int)f
+(mlkeep,)1454 76712 y Fa(213)15276 b Fd(realtype)582
+b(rtol,)g(realtype)g(atol\);)1454 78041 y Fa(214)p Black
+27394 81741 a Fp(67)p Black eop
+%%Page: 68 72
+68 71 bop Black Black -2546 7638 a Fa(215)1328 b Fd(static)582
+b(void)g(PrintOutput\(void)h(*mem,)f(N_Vector)h(cc,)e(realtype)h(time,)
+-2546 8966 y Fa(216)15276 b Fd(UserData)582 b(webdata,)g(MPI_Comm)h
+(comm\);)-2546 10295 y Fa(217)-2546 11623 y(218)1328
+b Fd(static)582 b(void)g(PrintFinalStats\(void)i(*mem,)e(void)g
+(*P_data\);)-2546 12951 y Fa(219)-2546 14280 y(220)1328
+b Fd(static)582 b(int)g(check_flag\(void)h(*flagvalue,)g(char)f
+(*funcname,)g(int)g(opt,)g(int)f(id\);)-2546 15608 y
+Fa(221)-2546 16936 y(222)1328 b Fd(/*)-2546 18265 y Fa(223)1909
+b Fd
+(*------------------------------------------------------------------)p
+(--)-2546 19593 y Fa(224)g Fd(*)581 b(MAIN)h(PROGRAM)-2546
+20922 y Fa(225)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)-2546 22250 y Fa(226)g Fd(*/)-2546 23578 y Fa(227)-2546
+24907 y(228)1328 b Fd(int)582 b(main\(int)g(argc,)g(char)g(*argv[]\))
+-2546 26235 y Fa(229)1328 b Fd({)-2546 27563 y Fa(230)2490
+b Fd(MPI_Comm)583 b(comm;)-2546 28892 y Fa(231)2490 b
+Fd(void)582 b(*mem,)g(*P_data;)-2546 30220 y Fa(232)2490
+b Fd(UserData)583 b(webdata;)-2546 31548 y Fa(233)2490
+b Fd(long)582 b(int)g(SystemSize,)g(local_N,)h(mudq,)f(mldq,)g(mukeep,)
+g(mlkeep;)-2546 32877 y Fa(234)2490 b Fd(realtype)583
+b(rtol,)f(atol,)f(t0,)h(tout,)g(tret;)-2546 34205 y Fa(235)2490
+b Fd(N_Vector)583 b(cc,)e(cp,)h(res,)g(id;)-2546 35533
+y Fa(236)2490 b Fd(int)582 b(thispe,)g(npes,)g(maxl,)g(iout,)g(retval;)
+-2546 36862 y Fa(237)-2546 38190 y(238)2490 b Fd(cc)582
+b(=)f(cp)g(=)h(res)f(=)h(id)f(=)g(NULL;)-2546 39518 y
+Fa(239)2490 b Fd(webdata)582 b(=)g(NULL;)-2546 40847
+y Fa(240)2490 b Fd(mem)582 b(=)f(P_data)h(=)g(NULL;)-2546
+42175 y Fa(241)-2546 43504 y(242)2490 b Fd(/*)582 b(Set)f
+(communicator,)i(and)f(get)g(processor)g(number)g(and)g(total)g(number)
+g(of)f(PE's.)h(*/)-2546 44832 y Fa(243)-2546 46160 y(244)2490
+b Fd(MPI_Init\(&argc,)584 b(&argv\);)-2546 47489 y Fa(245)2490
+b Fd(comm)582 b(=)f(MPI_COMM_WORLD;)-2546 48817 y Fa(246)2490
+b Fd(MPI_Comm_rank\(comm,)584 b(&thispe\);)-2546 50145
+y Fa(247)2490 b Fd(MPI_Comm_size\(comm,)584 b(&npes\);)-2546
+51474 y Fa(248)-2546 52802 y(249)2490 b Fd(if)582 b(\(npes)g(!=)f
+(NPEX*NPEY\))i({)-2546 54130 y Fa(250)3653 b Fd(if)581
+b(\(thispe)h(==)g(0\))-2546 55459 y Fa(251)4815 b Fd(fprintf\(stderr,)
+-2546 56787 y Fa(252)9464 b Fd("\\nMPI_ERROR\(0\):)584
+b(npes)d(=)h(\045d)f(not)h(equal)g(to)f(NPEX*NPEY)i(=)e(\045d\\n",)
+-2546 58115 y Fa(253)9464 b Fd(npes,)582 b(NPEX*NPEY\);)-2546
+59444 y Fa(254)3653 b Fd(MPI_Finalize\(\);)-2546 60772
+y Fa(255)g Fd(return\(1\);)-2546 62100 y Fa(256)2490
+b Fd(})-2546 63429 y Fa(257)-2546 64757 y(258)g Fd(/*)582
+b(Set)f(local)h(length)g(\(local_N\))h(and)e(global)h(length)g
+(\(SystemSize\).)i(*/)-2546 66086 y Fa(259)-2546 67414
+y(260)2490 b Fd(local_N)582 b(=)g(MXSUB*MYSUB*NUM_SPECIES;)-2546
+68742 y Fa(261)2490 b Fd(SystemSize)583 b(=)e(NEQ;)-2546
+70071 y Fa(262)-2546 71399 y(263)2490 b Fd(/*)582 b(Set)f(up)h(user)g
+(data)f(block)h(webdata.)h(*/)-2546 72727 y Fa(264)-2546
+74056 y(265)2490 b Fd(webdata)582 b(=)g(\(UserData\))g(malloc\(sizeof)i
+(*webdata\);)-2546 75384 y Fa(266)2490 b Fd(webdata->rates)584
+b(=)d(N_VNew_Parallel\(comm,)j(local_N,)e(SystemSize\);)-2546
+76712 y Fa(267)2490 b Fd(webdata->acoef)584 b(=)d
+(denalloc\(NUM_SPECIES\);)-2546 78041 y Fa(268)p Black
+23394 81741 a Fp(68)p Black eop
+%%Page: 69 73
+69 72 bop Black Black 1454 7638 a Fa(269)2490 b Fd
+(InitUserData\(webdata,)585 b(thispe,)d(npes,)g(comm\);)1454
+8966 y Fa(270)1454 10295 y(271)2490 b Fd(/*)582 b(Create)g(needed)g
+(vectors,)g(and)g(load)g(initial)g(values.)1454 11623
+y Fa(272)4234 b Fd(The)581 b(vector)h(res)g(is)f(used)h(temporarily)h
+(only.)4650 b(*/)1454 12951 y Fa(273)1454 14280 y(274)2490
+b Fd(cc)1163 b(=)581 b(N_VNew_Parallel\(comm,)j(local_N,)f
+(SystemSize\);)1454 15608 y Fa(275)2490 b Fd(if\(check_flag\(\(void)584
+b(*\)cc,)e("N_VNew_Parallel",)i(0,)d(thispe\)\))i(MPI_Abort\(comm,)g
+(1\);)1454 16936 y Fa(276)1454 18265 y(277)2490 b Fd(cp)1163
+b(=)581 b(N_VNew_Parallel\(comm,)j(local_N,)f(SystemSize\);)1454
+19593 y Fa(278)2490 b Fd(if\(check_flag\(\(void)584 b(*\)cp,)e
+("N_VNew_Parallel",)i(0,)d(thispe\)\))i(MPI_Abort\(comm,)g(1\);)1454
+20922 y Fa(279)1454 22250 y(280)2490 b Fd(res)582 b(=)f
+(N_VNew_Parallel\(comm,)j(local_N,)f(SystemSize\);)1454
+23578 y Fa(281)2490 b Fd(if\(check_flag\(\(void)584 b(*\)res,)e
+("N_VNew_Parallel",)i(0,)e(thispe\)\))g(MPI_Abort\(comm,)h(1\);)1454
+24907 y Fa(282)1454 26235 y(283)2490 b Fd(id)1163 b(=)581
+b(N_VNew_Parallel\(comm,)j(local_N,)f(SystemSize\);)1454
+27563 y Fa(284)2490 b Fd(if\(check_flag\(\(void)584 b(*\)id,)e
+("N_VNew_Parallel",)i(0,)d(thispe\)\))i(MPI_Abort\(comm,)g(1\);)1454
+28892 y Fa(285)1454 30220 y(286)2490 b Fd(SetInitialProfiles\(cc,)585
+b(cp,)c(id,)h(res,)g(webdata\);)1454 31548 y Fa(287)1454
+32877 y(288)2490 b Fd(N_VDestroy_Parallel\(res\);)1454
+34205 y Fa(289)1454 35533 y(290)g Fd(/*)582 b(Set)f(remaining)i(inputs)
+f(to)f(IDAMalloc.)i(*/)1454 36862 y Fa(291)1454 38190
+y(292)2490 b Fd(t0)582 b(=)f(ZERO;)1454 39518 y Fa(293)2490
+b Fd(rtol)582 b(=)f(RTOL;)1454 40847 y Fa(294)2490 b
+Fd(atol)582 b(=)f(ATOL;)1454 42175 y Fa(295)1454 43504
+y(296)2490 b Fd(/*)582 b(Call)f(IDACreate)i(and)f(IDAMalloc)g(to)g
+(initialize)g(solution)g(*/)1454 44832 y Fa(297)1454
+46160 y(298)2490 b Fd(mem)582 b(=)f(IDACreate\(\);)1454
+47489 y Fa(299)2490 b Fd(if\(check_flag\(\(void)584 b(*\)mem,)e
+("IDACreate",)h(0,)f(thispe\)\))g(MPI_Abort\(comm,)h(1\);)1454
+48817 y Fa(300)1454 50145 y(301)2490 b Fd(retval)582
+b(=)g(IDASetRdata\(mem,)h(webdata\);)1454 51474 y Fa(302)2490
+b Fd(if\(check_flag\(&retval,)585 b("IDASetRdata",)e(1,)e(thispe\)\))i
+(MPI_Abort\(comm,)g(1\);)1454 52802 y Fa(303)1454 54130
+y(304)2490 b Fd(retval)582 b(=)g(IDASetId\(mem,)h(id\);)1454
+55459 y Fa(305)2490 b Fd(if\(check_flag\(&retval,)585
+b("IDASetId",)e(1,)e(thispe\)\))h(MPI_Abort\(comm,)i(1\);)1454
+56787 y Fa(306)1454 58115 y(307)2490 b Fd(retval)582
+b(=)g(IDAMalloc\(mem,)h(resweb,)f(t0,)g(cc,)f(cp,)h(IDA_SS,)g(rtol,)g
+(&atol\);)1454 59444 y Fa(308)2490 b Fd(if\(check_flag\(&retval,)585
+b("IDAMalloc",)e(1,)e(thispe\)\))h(MPI_Abort\(comm,)i(1\);)1454
+60772 y Fa(309)1454 62100 y(310)2490 b Fd(/*)582 b(Call)f
+(IDABBDPrecAlloc)j(to)d(initialize)i(the)f(band-block-diagonal)i
+(preconditioner.)1454 63429 y Fa(311)4234 b Fd(The)581
+b(half-bandwidths)j(for)d(the)h(difference)h(quotient)f(evaluation)h
+(are)e(exact)1454 64757 y Fa(312)4234 b Fd(for)581 b(the)h(system)g
+(Jacobian,)g(but)g(only)g(a)f(5-diagonal)i(band)e(matrix)i(is)e
+(retained.)h(*/)1454 66086 y Fa(313)1454 67414 y(314)2490
+b Fd(mudq)582 b(=)f(mldq)h(=)f(NSMXSUB;)1454 68742 y
+Fa(315)2490 b Fd(mukeep)582 b(=)g(mlkeep)g(=)f(2;)1454
+70071 y Fa(316)2490 b Fd(P_data)582 b(=)g(IDABBDPrecAlloc\(mem,)i
+(local_N,)e(mudq,)g(mldq,)g(mukeep,)g(mlkeep,)1454 71399
+y Fa(317)17019 b Fd(ZERO,)582 b(reslocal,)g(NULL\);)1454
+72727 y Fa(318)2490 b Fd(if\(check_flag\(\(void)584 b(*\)P_data,)f
+("IDABBDPrecAlloc",)h(0,)d(thispe\)\))h(MPI_Abort\(comm,)i(1\);)1454
+74056 y Fa(319)1454 75384 y(320)2490 b Fd(/*)582 b(Call)f(IDABBDSpgmr)i
+(to)f(specify)g(the)g(IDA)f(linear)h(solver)g(IDASPGMR)h(and)e(specify)
+1454 76712 y Fa(321)4234 b Fd(the)581 b(preconditioner)j(routines)e
+(supplied)1454 78041 y Fa(322)4234 b Fd(maxl)581 b(\(max.)h(Krylov)g
+(subspace)h(dim.\))f(is)f(set)h(to)f(12.)1744 b(*/)p
+Black 27394 81741 a Fp(69)p Black eop
+%%Page: 70 74
+70 73 bop Black Black -2546 7638 a Fa(323)-2546 8966
+y(324)2490 b Fd(maxl)582 b(=)f(12;)-2546 10295 y Fa(325)2490
+b Fd(retval)582 b(=)g(IDABBDSpgmr\(mem,)h(maxl,)f(P_data\);)-2546
+11623 y Fa(326)2490 b Fd(if\(check_flag\(&retval,)585
+b("IDABBDSpgmr",)e(1,)e(thispe\)\))i(MPI_Abort\(comm,)g(1\);)-2546
+12951 y Fa(327)-2546 14280 y(328)2490 b Fd(/*)582 b(Call)f(IDACalcIC)i
+(\(with)f(default)g(options\))g(to)g(correct)g(the)g(initial)g(values.)
+g(*/)-2546 15608 y Fa(329)-2546 16936 y(330)2490 b Fd(tout)582
+b(=)f(RCONST\(0.001\);)-2546 18265 y Fa(331)2490 b Fd(retval)582
+b(=)g(IDACalcIC\(mem,)h(t0,)e(cc,)h(cp,)g(IDA_YA_YDP_INIT,)h(tout\);)
+-2546 19593 y Fa(332)2490 b Fd(if\(check_flag\(&retval,)585
+b("IDACalcIC",)e(1,)e(thispe\)\))h(MPI_Abort\(comm,)i(1\);)-2546
+20922 y Fa(333)-2546 22250 y(334)2490 b Fd(/*)582 b(On)f(PE)h(0,)f
+(print)h(heading,)g(basic)g(parameters,)h(initial)f(values.)g(*/)-2546
+23578 y Fa(335)-2546 24907 y(336)2490 b Fd(if)582 b(\(thispe)g(==)f
+(0\))h(PrintHeader\(SystemSize,)i(maxl,)-2546 26235 y
+Fa(337)19344 b Fd(mudq,)582 b(mldq,)f(mukeep,)i(mlkeep,)-2546
+27563 y Fa(338)19344 b Fd(rtol,)582 b(atol\);)-2546 28892
+y Fa(339)2490 b Fd(PrintOutput\(mem,)584 b(cc,)d(t0,)h(webdata,)g
+(comm\);)-2546 30220 y Fa(340)-2546 31548 y(341)2490
+b Fd(/*)582 b(Call)f(IDA)h(in)g(tout)f(loop,)h(normal)g(mode,)g(and)g
+(print)g(selected)g(output.)g(*/)-2546 32877 y Fa(342)-2546
+34205 y(343)2490 b Fd(for)582 b(\(iout)g(=)f(1;)h(iout)f(<=)h(NOUT;)g
+(iout++\))g({)-2546 35533 y Fa(344)-2546 36862 y(345)3653
+b Fd(retval)582 b(=)f(IDASolve\(mem,)i(tout,)f(&tret,)g(cc,)g(cp,)f
+(IDA_NORMAL\);)-2546 38190 y Fa(346)3653 b Fd(if\(check_flag\(&retval,)
+584 b("IDASolve",)f(1,)e(thispe\)\))i(MPI_Abort\(comm,)g(1\);)-2546
+39518 y Fa(347)-2546 40847 y(348)3653 b Fd(PrintOutput\(mem,)583
+b(cc,)f(tret,)g(webdata,)g(comm\);)-2546 42175 y Fa(349)-2546
+43504 y(350)3653 b Fd(if)581 b(\(iout)h(<)f(3\))h(tout)f(*=)h(TMULT;)
+-2546 44832 y Fa(351)3653 b Fd(else)5812 b(tout)581 b(+=)h(TADD;)-2546
+46160 y Fa(352)-2546 47489 y(353)2490 b Fd(})-2546 48817
+y Fa(354)-2546 50145 y(355)g Fd(/*)582 b(On)f(PE)h(0,)f(print)h(final)g
+(set)f(of)h(statistics.)h(*/)-2546 51474 y Fa(356)-2546
+52802 y(357)2490 b Fd(if)582 b(\(thispe)g(==)f(0\))1163
+b(PrintFinalStats\(mem,)584 b(P_data\);)-2546 54130 y
+Fa(358)-2546 55459 y(359)2490 b Fd(/*)582 b(Free)f(memory.)i(*/)-2546
+56787 y Fa(360)-2546 58115 y(361)2490 b Fd(N_VDestroy_Parallel\(cc\);)
+-2546 59444 y Fa(362)g Fd(N_VDestroy_Parallel\(cp\);)-2546
+60772 y Fa(363)g Fd(N_VDestroy_Parallel\(id\);)-2546
+62100 y Fa(364)-2546 63429 y(365)g Fd(IDABBDPrecFree\(P_data\);)-2546
+64757 y Fa(366)-2546 66086 y(367)g Fd(IDAFree\(mem\);)-2546
+67414 y Fa(368)-2546 68742 y(369)g Fd(denfree\(webdata->acoef\);)-2546
+70071 y Fa(370)g Fd(N_VDestroy_Parallel\(webdata->rates\);)-2546
+71399 y Fa(371)g Fd(free\(webdata\);)-2546 72727 y Fa(372)-2546
+74056 y(373)g Fd(MPI_Finalize\(\);)-2546 75384 y Fa(374)-2546
+76712 y(375)g Fd(return\(0\);)-2546 78041 y Fa(376)1328
+b Fd(})p Black 23394 81741 a Fp(70)p Black eop
+%%Page: 71 75
+71 74 bop Black Black 1454 7638 a Fa(377)1454 8966 y(378)1328
+b Fd(/*)1454 10295 y Fa(379)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1454 11623 y Fa(380)g Fd(*)581 b(PRIVATE)i(FUNCTIONS)1454
+12951 y Fa(381)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)1454 14280 y Fa(382)g Fd(*/)1454 15608 y Fa(383)1454
+16936 y(384)1328 b Fd(/*)1454 18265 y Fa(385)1909 b Fd(*)581
+b(InitUserData:)j(Load)d(problem)h(constants)h(in)e(webdata)i(\(of)e
+(type)h(UserData\).)1454 19593 y Fa(386)1909 b Fd(*/)1454
+20922 y Fa(387)1454 22250 y(388)1328 b Fd(static)582
+b(void)g(InitUserData\(UserData)i(webdata,)e(int)g(thispe,)g(int)g
+(npes,)1454 23578 y Fa(389)15857 b Fd(MPI_Comm)582 b(comm\))1454
+24907 y Fa(390)1328 b Fd({)1454 26235 y Fa(391)2490 b
+Fd(int)582 b(i,)f(j,)h(np;)1454 27563 y Fa(392)2490 b
+Fd(realtype)583 b(*a1,*a2,)f(*a3,)g(*a4,)f(dx2,)h(dy2,)g(**acoef,)g
+(*bcoef,)g(*cox,)g(*coy;)1454 28892 y Fa(393)1454 30220
+y(394)2490 b Fd(webdata->jysub)584 b(=)d(thispe)h(/)f(NPEX;)1454
+31548 y Fa(395)2490 b Fd(webdata->ixsub)584 b(=)d(thispe)h(-)f
+(\(webdata->jysub\)*NPEX;)1454 32877 y Fa(396)2490 b
+Fd(webdata->mxsub)584 b(=)d(MXSUB;)1454 34205 y Fa(397)2490
+b Fd(webdata->mysub)584 b(=)d(MYSUB;)1454 35533 y Fa(398)2490
+b Fd(webdata->npex)583 b(=)f(NPEX;)1454 36862 y Fa(399)2490
+b Fd(webdata->npey)583 b(=)f(NPEY;)1454 38190 y Fa(400)2490
+b Fd(webdata->ns)583 b(=)e(NUM_SPECIES;)1454 39518 y
+Fa(401)2490 b Fd(webdata->np)583 b(=)e(NPREY;)1454 40847
+y Fa(402)2490 b Fd(webdata->dx)583 b(=)e(AX/\(MX-1\);)1454
+42175 y Fa(403)2490 b Fd(webdata->dy)583 b(=)e(AY/\(MY-1\);)1454
+43504 y Fa(404)2490 b Fd(webdata->thispe)584 b(=)d(thispe;)1454
+44832 y Fa(405)2490 b Fd(webdata->npes)1746 b(=)581 b(npes;)1454
+46160 y Fa(406)2490 b Fd(webdata->nsmxsub)584 b(=)d(MXSUB)h(*)f
+(NUM_SPECIES;)1454 47489 y Fa(407)2490 b Fd(webdata->nsmxsub2)584
+b(=)d(\(MXSUB+2\)*NUM_SPECIES;)1454 48817 y Fa(408)2490
+b Fd(webdata->comm)583 b(=)f(comm;)1454 50145 y Fa(409)2490
+b Fd(webdata->n_local)584 b(=)d(MXSUB*MYSUB*NUM_SPECIES;)1454
+51474 y Fa(410)1454 52802 y(411)2490 b Fd(/*)582 b(Set)f(up)h(the)f
+(coefficients)i(a)f(and)f(b)h(plus)f(others)h(found)g(in)g(the)f
+(equations.)i(*/)1454 54130 y Fa(412)1454 55459 y(413)2490
+b Fd(np)582 b(=)f(webdata->np;)1454 56787 y Fa(414)2490
+b Fd(dx2)582 b(=)f(\(webdata->dx\)*\(webdata->dx\);)1454
+58115 y Fa(415)2490 b Fd(dy2)582 b(=)f
+(\(webdata->dy\)*\(webdata->dy\);)1454 59444 y Fa(416)1454
+60772 y(417)2490 b Fd(acoef)582 b(=)f(webdata->acoef;)1454
+62100 y Fa(418)2490 b Fd(bcoef)582 b(=)f(webdata->bcoef;)1454
+63429 y Fa(419)2490 b Fd(cox)582 b(=)f(webdata->cox;)1454
+64757 y Fa(420)2490 b Fd(coy)582 b(=)f(webdata->coy;)1454
+66086 y Fa(421)1454 67414 y(422)2490 b Fd(for)582 b(\(i)f(=)h(0;)f(i)g
+(<)h(np;)f(i++\))h({)1454 68742 y Fa(423)3653 b Fd(a1)581
+b(=)g(&\(acoef[i][np]\);)1454 70071 y Fa(424)3653 b Fd(a2)581
+b(=)g(&\(acoef[i+np][0]\);)1454 71399 y Fa(425)3653 b
+Fd(a3)581 b(=)g(&\(acoef[i][0]\);)1454 72727 y Fa(426)3653
+b Fd(a4)581 b(=)g(&\(acoef[i+np][np]\);)1454 74056 y
+Fa(427)3653 b Fd(/*)1162 b(Fill)582 b(in)f(the)h(portion)g(of)g(acoef)g
+(in)f(the)h(four)f(quadrants,)i(row)f(by)f(row.)h(*/)1454
+75384 y Fa(428)3653 b Fd(for)581 b(\(j)h(=)f(0;)g(j)h(<)f(np;)h(j++\))f
+({)1454 76712 y Fa(429)4815 b Fd(*a1++)582 b(=)1162 b(-GG;)1454
+78041 y Fa(430)4815 b Fd(*a2++)582 b(=)1743 b(EE;)p Black
+27394 81741 a Fp(71)p Black eop
+%%Page: 72 76
+72 75 bop Black Black -2546 7638 a Fa(431)4815 b Fd(*a3++)582
+b(=)f(ZERO;)-2546 8966 y Fa(432)4815 b Fd(*a4++)582 b(=)f(ZERO;)-2546
+10295 y Fa(433)3653 b Fd(})-2546 11623 y Fa(434)-2546
+12951 y(435)g Fd(/*)581 b(Reset)h(the)g(diagonal)g(elements)g(of)g
+(acoef)g(to)f(-AA.)h(*/)-2546 14280 y Fa(436)3653 b Fd(acoef[i][i])582
+b(=)g(-AA;)f(acoef[i+np][i+np])j(=)d(-AA;)-2546 15608
+y Fa(437)-2546 16936 y(438)3653 b Fd(/*)581 b(Set)h(coefficients)h(for)
+e(b)g(and)h(diffusion)h(terms.)f(*/)-2546 18265 y Fa(439)3653
+b Fd(bcoef[i])582 b(=)f(BB;)h(bcoef[i+np])h(=)e(-BB;)-2546
+19593 y Fa(440)3653 b Fd(cox[i])582 b(=)f(DPREY/dx2;)i(cox[i+np])f(=)f
+(DPRED/dx2;)-2546 20922 y Fa(441)3653 b Fd(coy[i])582
+b(=)f(DPREY/dy2;)i(coy[i+np])f(=)f(DPRED/dy2;)-2546 22250
+y Fa(442)2490 b Fd(})-2546 23578 y Fa(443)-2546 24907
+y(444)1328 b Fd(})-2546 26235 y Fa(445)-2546 27563 y(446)g
+Fd(/*)-2546 28892 y Fa(447)1909 b Fd(*)581 b(SetInitialProfiles:)j(Set)
+e(initial)g(conditions)h(in)e(cc,)h(cp,)f(and)h(id.)-2546
+30220 y Fa(448)1909 b Fd(*)581 b(A)h(polynomial)g(profile)h(is)e(used)h
+(for)f(the)h(prey)g(cc)f(values,)h(and)g(a)f(constant)-2546
+31548 y Fa(449)1909 b Fd(*)581 b(\(1.0e5\))i(is)e(loaded)h(as)g(the)f
+(initial)h(guess)g(for)g(the)f(predator)i(cc)e(values.)-2546
+32877 y Fa(450)1909 b Fd(*)581 b(The)h(id)f(values)i(are)e(set)h(to)f
+(1)g(for)h(the)g(prey)f(and)h(0)f(for)h(the)f(predators.)-2546
+34205 y Fa(451)1909 b Fd(*)581 b(The)h(prey)g(cp)f(values)h(are)g(set)f
+(according)i(to)e(the)h(given)g(system,)g(and)-2546 35533
+y Fa(452)1909 b Fd(*)581 b(the)h(predator)g(cp)g(values)g(are)f(set)h
+(to)g(zero.)-2546 36862 y Fa(453)1909 b Fd(*/)-2546 38190
+y Fa(454)-2546 39518 y(455)1328 b Fd(static)582 b(void)g
+(SetInitialProfiles\(N_Vector)j(cc,)d(N_Vector)g(cp,)f(N_Vector)i(id,)
+-2546 40847 y Fa(456)19344 b Fd(N_Vector)582 b(res,)g(UserData)g
+(webdata\))-2546 42175 y Fa(457)1328 b Fd({)-2546 43504
+y Fa(458)2490 b Fd(long)582 b(int)g(ixsub,)g(jysub,)g(mxsub,)g(mysub,)g
+(nsmxsub,)g(np,)g(ix,)f(jy,)h(is;)-2546 44832 y Fa(459)2490
+b Fd(realtype)583 b(*cxy,)f(*idxy,)g(*cpxy,)g(dx,)f(dy,)h(xx,)f(yy,)h
+(xyfactor;)-2546 46160 y Fa(460)-2546 47489 y(461)2490
+b Fd(ixsub)582 b(=)f(webdata->ixsub;)-2546 48817 y Fa(462)2490
+b Fd(jysub)582 b(=)f(webdata->jysub;)-2546 50145 y Fa(463)2490
+b Fd(mxsub)582 b(=)f(webdata->mxsub;)-2546 51474 y Fa(464)2490
+b Fd(mysub)582 b(=)f(webdata->mxsub;)-2546 52802 y Fa(465)2490
+b Fd(nsmxsub)582 b(=)g(webdata->nsmxsub;)-2546 54130
+y Fa(466)2490 b Fd(dx)582 b(=)f(webdata->dx;)-2546 55459
+y Fa(467)2490 b Fd(dy)582 b(=)f(webdata->dy;)-2546 56787
+y Fa(468)2490 b Fd(np)582 b(=)f(webdata->np;)-2546 58115
+y Fa(469)-2546 59444 y(470)2490 b Fd(/*)582 b(Loop)f(over)h(grid,)g
+(load)g(cc)f(values)h(and)g(id)f(values.)i(*/)-2546 60772
+y Fa(471)2490 b Fd(for)582 b(\(jy)f(=)h(0;)f(jy)h(<)f(mysub;)h(jy++\))g
+({)-2546 62100 y Fa(472)3653 b Fd(yy)581 b(=)g(\(jy)h(+)f
+(jysub*mysub\))i(*)e(dy;)-2546 63429 y Fa(473)3653 b
+Fd(for)581 b(\(ix)h(=)f(0;)h(ix)f(<)g(mxsub;)h(ix++\))g({)-2546
+64757 y Fa(474)4815 b Fd(xx)581 b(=)h(\(ix)f(+)h(ixsub*mxsub\))g(*)g
+(dx;)-2546 66086 y Fa(475)4815 b Fd(xyfactor)582 b(=)g(16.*xx*\(1.)g(-)
+f(xx\)*yy*\(1.)i(-)e(yy\);)-2546 67414 y Fa(476)4815
+b Fd(xyfactor)582 b(*=)g(xyfactor;)-2546 68742 y Fa(477)-2546
+70071 y(478)4815 b Fd(cxy)581 b(=)h(IJ_Vptr\(cc,ix,jy\);)-2546
+71399 y Fa(479)4815 b Fd(idxy)582 b(=)f(IJ_Vptr\(id,ix,jy\);)-2546
+72727 y Fa(480)4815 b Fd(for)581 b(\(is)h(=)f(0;)h(is)f(<)h
+(NUM_SPECIES;)h(is++\))e({)-2546 74056 y Fa(481)5977
+b Fd(if)582 b(\(is)f(<)h(np\))f({)g(cxy[is])i(=)e(RCONST\(10.0\))i(+)e
+(\(realtype\)\(is+1\)*xyfactor;)k(idxy[is])e(=)e(ONE;)h(})-2546
+75384 y Fa(482)5977 b Fd(else)582 b({)f(cxy[is])h(=)g(1.0e5;)g
+(idxy[is])g(=)f(ZERO;)h(})-2546 76712 y Fa(483)4815 b
+Fd(})-2546 78041 y Fa(484)3653 b Fd(})p Black 23394 81741
+a Fp(72)p Black eop
+%%Page: 73 77
+73 76 bop Black Black 1454 7638 a Fa(485)2490 b Fd(})1454
+8966 y Fa(486)1454 10295 y(487)g Fd(/*)582 b(Set)f(c')h(for)f(the)h
+(prey)g(by)f(calling)h(the)g(residual)g(function)h(with)e(cp)h(=)f(0.)h
+(*/)1454 11623 y Fa(488)1454 12951 y(489)2490 b Fd(N_VConst\(ZERO,)584
+b(cp\);)1454 14280 y Fa(490)2490 b Fd(resweb\(ZERO,)583
+b(cc,)f(cp,)f(res,)h(webdata\);)1454 15608 y Fa(491)2490
+b Fd(N_VScale\(-ONE,)584 b(res,)d(cp\);)1454 16936 y
+Fa(492)1454 18265 y(493)2490 b Fd(/*)582 b(Set)f(c')h(for)f(predators)i
+(to)e(0.)h(*/)1454 19593 y Fa(494)1454 20922 y(495)2490
+b Fd(for)582 b(\(jy)f(=)h(0;)f(jy)h(<)f(mysub;)h(jy++\))g({)1454
+22250 y Fa(496)3653 b Fd(for)581 b(\(ix)h(=)f(0;)h(ix)f(<)g(mxsub;)h
+(ix++\))g({)1454 23578 y Fa(497)4815 b Fd(cpxy)582 b(=)f
+(IJ_Vptr\(cp,ix,jy\);)1454 24907 y Fa(498)4815 b Fd(for)581
+b(\(is)h(=)f(np;)h(is)f(<)h(NUM_SPECIES;)h(is++\))f(cpxy[is])g(=)f
+(ZERO;)1454 26235 y Fa(499)3653 b Fd(})1454 27563 y Fa(500)2490
+b Fd(})1454 28892 y Fa(501)1328 b Fd(})1454 30220 y Fa(502)1454
+31548 y(503)g Fd(/*)1454 32877 y Fa(504)1909 b Fd(*)581
+b(Print)h(first)g(lines)g(of)g(output)g(\(problem)g(description\))1454
+34205 y Fa(505)1909 b Fd(*)581 b(and)h(table)g(headerr)1454
+35533 y Fa(506)1909 b Fd(*/)1454 36862 y Fa(507)1454
+38190 y(508)1328 b Fd(static)582 b(void)g(PrintHeader\(long)h(int)f
+(SystemSize,)h(int)e(maxl,)1454 39518 y Fa(509)15276
+b Fd(long)581 b(int)h(mudq,)g(long)g(int)f(mldq,)1454
+40847 y Fa(510)15276 b Fd(long)581 b(int)h(mukeep,)g(long)g(int)f
+(mlkeep,)1454 42175 y Fa(511)15276 b Fd(realtype)582
+b(rtol,)g(realtype)g(atol\))1454 43504 y Fa(512)1328
+b Fd({)1454 44832 y Fa(513)2490 b Fd(printf\("\\niwebbbd:)584
+b(Predator-prey)f(DAE)f(parallel)g(example)g(problem)h(for)e(IDA)h
+(\\n\\n"\);)1454 46160 y Fa(514)2490 b Fd(printf\("Number)584
+b(of)d(species)h(ns:)g(\045d",)g(NUM_SPECIES\);)1454
+47489 y Fa(515)2490 b Fd(printf\(")2907 b(Mesh)582 b(dimensions:)h
+(\045d)e(x)h(\045d",)f(MX,)h(MY\);)1454 48817 y Fa(516)2490
+b Fd(printf\(")2907 b(Total)582 b(system)g(size:)g
+(\045ld\\n",SystemSize\);)1454 50145 y Fa(517)2490 b
+Fd(printf\("Subgrid)584 b(dimensions:)e(\045d)g(x)f(\045d",)h(MXSUB,)g
+(MYSUB\);)1454 51474 y Fa(518)2490 b Fd(printf\(")2907
+b(Processor)583 b(array:)f(\045d)f(x)h(\045d\\n",)g(NPEX,)f(NPEY\);)
+1454 52802 y Fa(519)1328 b Fd(#if)582 b
+(defined\(SUNDIALS_EXTENDED_PRECISION\))1454 54130 y
+Fa(520)2490 b Fd(printf\("Tolerance)584 b(parameters:)1164
+b(rtol)582 b(=)f(\045Lg)1744 b(atol)582 b(=)f(\045Lg\\n",)h(rtol,)g
+(atol\);)1454 55459 y Fa(521)1328 b Fd(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))1454 56787 y Fa(522)2490
+b Fd(printf\("Tolerance)584 b(parameters:)1164 b(rtol)582
+b(=)f(\045lg)1744 b(atol)582 b(=)f(\045lg\\n",)h(rtol,)g(atol\);)1454
+58115 y Fa(523)1328 b Fd(#else)1454 59444 y Fa(524)2490
+b Fd(printf\("Tolerance)584 b(parameters:)1164 b(rtol)582
+b(=)f(\045g)1744 b(atol)581 b(=)h(\045g\\n",)g(rtol,)g(atol\);)1454
+60772 y Fa(525)1328 b Fd(#endif)1454 62100 y Fa(526)2490
+b Fd(printf\("Linear)584 b(solver:)e(IDASPGMR)2907 b(Max.)581
+b(Krylov)h(dimension)h(maxl:)f(\045d\\n",)g(maxl\);)1454
+63429 y Fa(527)2490 b Fd(printf\("Preconditioner:)585
+b(band-block-diagonal)f(\(IDABBDPRE\),)f(with)f(parameters\\n"\);)1454
+64757 y Fa(528)2490 b Fd(printf\(")2907 b(mudq)582 b(=)f(\045ld,)1163
+b(mldq)582 b(=)f(\045ld,)1163 b(mukeep)582 b(=)f(\045ld,)1163
+b(mlkeep)582 b(=)g(\045ld\\n",)1454 66086 y Fa(529)6558
+b Fd(mudq,)582 b(mldq,)g(mukeep,)g(mlkeep\);)1454 67414
+y Fa(530)2490 b Fd(printf\("CalcIC)584 b(called)e(to)f(correct)h
+(initial)g(predator)h(concentrations)g(\\n\\n"\);)1454
+68742 y Fa(531)2490 b Fd
+(printf\("----------------------------------------------------------)p
+(-\\n"\);)1454 70071 y Fa(532)g Fd(printf\(")1164 b(t)4649
+b(bottom-left)1164 b(top-right"\);)1454 71399 y Fa(533)2490
+b Fd(printf\(")2326 b(|)581 b(nst)1163 b(k)3487 b(h\\n"\);)1454
+72727 y Fa(534)2490 b Fd
+(printf\("----------------------------------------------------------)p
+(-\\n\\n"\);)1454 74056 y Fa(535)1328 b Fd(})1454 75384
+y Fa(536)1454 76712 y(537)1454 78041 y(538)g Fd(/*)p
+Black 27394 81741 a Fp(73)p Black eop
+%%Page: 74 78
+74 77 bop Black Black -2546 7638 a Fa(539)1909 b Fd(*)581
+b(PrintOutput:)i(Print)f(output)g(values)g(at)g(output)g(time)g(t)f(=)g
+(tt.)-2546 8966 y Fa(540)1909 b Fd(*)581 b(Selected)i(run)e(statistics)
+i(are)f(printed.)1163 b(Then)582 b(values)g(of)f(c1)h(and)f(c2)-2546
+10295 y Fa(541)1909 b Fd(*)581 b(are)h(printed)g(for)g(the)f(bottom)h
+(left)g(and)g(top)f(right)h(grid)g(points)g(only.)-2546
+11623 y Fa(542)1909 b Fd(*/)-2546 12951 y Fa(543)-2546
+14280 y(544)1328 b Fd(static)582 b(void)g(PrintOutput\(void)h(*mem,)f
+(N_Vector)h(cc,)e(realtype)h(tt,)-2546 15608 y Fa(545)15276
+b Fd(UserData)582 b(webdata,)g(MPI_Comm)h(comm\))-2546
+16936 y Fa(546)1328 b Fd({)-2546 18265 y Fa(547)2490
+b Fd(MPI_Status)583 b(status;)-2546 19593 y Fa(548)2490
+b Fd(realtype)583 b(*cdata,)f(clast[2],)g(hused;)-2546
+20922 y Fa(549)2490 b Fd(long)582 b(int)g(nst;)-2546
+22250 y Fa(550)2490 b Fd(int)582 b(i,)f(kused,)h(flag,)g(thispe,)g
+(npelast,)h(ilast;;)-2546 23578 y Fa(551)-2546 24907
+y(552)2490 b Fd(thispe)582 b(=)g(webdata->thispe;)-2546
+26235 y Fa(553)2490 b Fd(npelast)582 b(=)g(webdata->npes)h(-)e(1;)-2546
+27563 y Fa(554)2490 b Fd(cdata)582 b(=)f(NV_DATA_P\(cc\);)-2546
+28892 y Fa(555)-2546 30220 y(556)2490 b Fd(/*)582 b(Send)f(conc.)h(at)g
+(top)f(right)h(mesh)g(point)g(from)g(PE)f(npes-1)h(to)g(PE)f(0.)h(*/)
+-2546 31548 y Fa(557)2490 b Fd(if)582 b(\(thispe)g(==)f(npelast\))i({)
+-2546 32877 y Fa(558)3653 b Fd(ilast)581 b(=)h(NUM_SPECIES*MXSUB*MYSUB)
+i(-)e(2;)-2546 34205 y Fa(559)3653 b Fd(if)581 b(\(npelast)h(!=)g(0\))
+-2546 35533 y Fa(560)4815 b Fd(MPI_Send\(&cdata[ilast],)584
+b(2,)e(PVEC_REAL_MPI_TYPE,)i(0,)d(0,)h(comm\);)-2546
+36862 y Fa(561)3653 b Fd(else)581 b({)h(clast[0])g(=)f(cdata[ilast];)i
+(clast[1])g(=)e(cdata[ilast+1];)i(})-2546 38190 y Fa(562)2490
+b Fd(})-2546 39518 y Fa(563)-2546 40847 y(564)g Fd(/*)582
+b(On)f(PE)h(0,)f(receive)h(conc.)g(at)g(top)f(right)h(from)g(PE)f(npes)
+h(-)f(1.)-2546 42175 y Fa(565)4234 b Fd(Then)581 b(print)h(performance)
+h(data)f(and)g(sampled)g(solution)g(values.)g(*/)-2546
+43504 y Fa(566)-2546 44832 y(567)2490 b Fd(if)582 b(\(thispe)g(==)f
+(0\))h({)-2546 46160 y Fa(568)-2546 47489 y(569)3653
+b Fd(if)581 b(\(npelast)h(!=)g(0\))-2546 48817 y Fa(570)4815
+b Fd(MPI_Recv\(&clast[0],)584 b(2,)d(PVEC_REAL_MPI_TYPE,)j(npelast,)f
+(0,)e(comm,)h(&status\);)-2546 50145 y Fa(571)-2546 51474
+y(572)3653 b Fd(flag)581 b(=)h(IDAGetLastOrder\(mem,)i(&kused\);)-2546
+52802 y Fa(573)3653 b Fd(check_flag\(&flag,)583 b("IDAGetLastOrder",)h
+(1,)e(thispe\);)-2546 54130 y Fa(574)3653 b Fd(flag)581
+b(=)h(IDAGetNumSteps\(mem,)i(&nst\);)-2546 55459 y Fa(575)3653
+b Fd(check_flag\(&flag,)583 b("IDAGetNumSteps",)h(1,)d(thispe\);)-2546
+56787 y Fa(576)3653 b Fd(flag)581 b(=)h(IDAGetLastStep\(mem,)i
+(&hused\);)-2546 58115 y Fa(577)3653 b Fd(check_flag\(&flag,)583
+b("IDAGetLastStep",)h(1,)d(thispe\);)-2546 59444 y Fa(578)-2546
+60772 y(579)1328 b Fd(#if)582 b(defined\(SUNDIALS_EXTENDED_PRECISION\))
+-2546 62100 y Fa(580)3653 b Fd(printf\("\0458.2Le)583
+b(\04512.4Le)f(\04512.4Le)1745 b(|)581 b(\0453ld)1163
+b(\0451d)581 b(\04512.4Le\\n",)-2546 63429 y Fa(581)6558
+b Fd(tt,)582 b(cdata[0],)g(clast[0],)h(nst,)f(kused,)g(hused\);)-2546
+64757 y Fa(582)3653 b Fd(for)581 b(\(i=1;i<NUM_SPECIES;i++\))-2546
+66086 y Fa(583)4815 b Fd(printf\(")5231 b(\04512.4Le)583
+b(\04512.4Le)1744 b(|\\n",cdata[i],clast[i]\);)-2546
+67414 y Fa(584)1328 b Fd(#elif)582 b
+(defined\(SUNDIALS_DOUBLE_PRECISION\))-2546 68742 y Fa(585)3653
+b Fd(printf\("\0458.2le)583 b(\04512.4le)f(\04512.4le)1745
+b(|)581 b(\0453ld)1163 b(\0451d)581 b(\04512.4le\\n",)-2546
+70071 y Fa(586)6558 b Fd(tt,)582 b(cdata[0],)g(clast[0],)h(nst,)f
+(kused,)g(hused\);)-2546 71399 y Fa(587)3653 b Fd(for)581
+b(\(i=1;i<NUM_SPECIES;i++\))-2546 72727 y Fa(588)4815
+b Fd(printf\(")5231 b(\04512.4le)583 b(\04512.4le)1744
+b(|\\n",cdata[i],clast[i]\);)-2546 74056 y Fa(589)1328
+b Fd(#else)-2546 75384 y Fa(590)3653 b Fd(printf\("\0458.2e)583
+b(\04512.4e)f(\04512.4e)1744 b(|)581 b(\0453ld)1163 b(\0451d)582
+b(\04512.4e\\n",)-2546 76712 y Fa(591)6558 b Fd(tt,)582
+b(cdata[0],)g(clast[0],)h(nst,)f(kused,)g(hused\);)-2546
+78041 y Fa(592)3653 b Fd(for)581 b(\(i=1;i<NUM_SPECIES;i++\))p
+Black 23394 81741 a Fp(74)p Black eop
+%%Page: 75 79
+75 78 bop Black Black 1454 7638 a Fa(593)4815 b Fd(printf\(")5231
+b(\04512.4e)582 b(\04512.4e)1745 b(|\\n",cdata[i],clast[i]\);)1454
+8966 y Fa(594)1328 b Fd(#endif)1454 10295 y Fa(595)3653
+b Fd(printf\("\\n"\);)1454 11623 y Fa(596)1454 12951
+y(597)2490 b Fd(})1454 14280 y Fa(598)1454 15608 y(599)1328
+b Fd(})1454 16936 y Fa(600)1454 18265 y(601)g Fd(/*)1454
+19593 y Fa(602)1909 b Fd(*)581 b(PrintFinalStats:)j(Print)e(final)g
+(run)f(data)h(contained)h(in)e(iopt.)1454 20922 y Fa(603)1909
+b Fd(*/)1454 22250 y Fa(604)1454 23578 y(605)1328 b Fd(static)582
+b(void)g(PrintFinalStats\(void)i(*mem,)e(void)g(*P_data\))1454
+24907 y Fa(606)1328 b Fd({)1454 26235 y Fa(607)2490 b
+Fd(long)582 b(int)g(nst,)f(nre,)h(nreS,)g(netf,)g(ncfn,)g(nni,)g(ncfl,)
+f(nli,)h(npe,)g(nps,)g(nge;)1454 27563 y Fa(608)2490
+b Fd(int)582 b(flag;)1454 28892 y Fa(609)1454 30220 y(610)2490
+b Fd(flag)582 b(=)f(IDAGetNumSteps\(mem,)j(&nst\);)1454
+31548 y Fa(611)2490 b Fd(check_flag\(&flag,)584 b("IDAGetNumSteps",)g
+(1,)d(0\);)1454 32877 y Fa(612)2490 b Fd(flag)582 b(=)f
+(IDAGetNumResEvals\(mem,)k(&nre\);)1454 34205 y Fa(613)2490
+b Fd(check_flag\(&flag,)584 b("IDAGetNumResEvals",)g(1,)e(0\);)1454
+35533 y Fa(614)2490 b Fd(flag)582 b(=)f(IDAGetNumErrTestFails\(mem,)k
+(&netf\);)1454 36862 y Fa(615)2490 b Fd(check_flag\(&flag,)584
+b("IDAGetNumErrTestFails",)h(1,)c(0\);)1454 38190 y Fa(616)2490
+b Fd(flag)582 b(=)f(IDAGetNumNonlinSolvConvFails\(mem,)586
+b(&ncfn\);)1454 39518 y Fa(617)2490 b Fd(check_flag\(&flag,)584
+b("IDAGetNumNonlinSolvConvFails",)i(1,)581 b(0\);)1454
+40847 y Fa(618)2490 b Fd(flag)582 b(=)f(IDAGetNumNonlinSolvIters\(mem,)
+586 b(&nni\);)1454 42175 y Fa(619)2490 b Fd(check_flag\(&flag,)584
+b("IDAGetNumNonlinSolvIters",)h(1,)d(0\);)1454 43504
+y Fa(620)1454 44832 y(621)2490 b Fd(flag)582 b(=)f
+(IDASpgmrGetNumConvFails\(mem,)586 b(&ncfl\);)1454 46160
+y Fa(622)2490 b Fd(check_flag\(&flag,)584 b("IDASpgmrGetNumConvFails",)
+h(1,)c(0\);)1454 47489 y Fa(623)2490 b Fd(flag)582 b(=)f
+(IDASpgmrGetNumLinIters\(mem,)586 b(&nli\);)1454 48817
+y Fa(624)2490 b Fd(check_flag\(&flag,)584 b("IDASpgmrGetNumLinIters",)h
+(1,)c(0\);)1454 50145 y Fa(625)2490 b Fd(flag)582 b(=)f
+(IDASpgmrGetNumPrecEvals\(mem,)586 b(&npe\);)1454 51474
+y Fa(626)2490 b Fd(check_flag\(&flag,)584 b("IDASpgmrGetNumPrecEvals",)
+h(1,)c(0\);)1454 52802 y Fa(627)2490 b Fd(flag)582 b(=)f
+(IDASpgmrGetNumPrecSolves\(mem,)586 b(&nps\);)1454 54130
+y Fa(628)2490 b Fd(check_flag\(&flag,)584 b
+("IDASpgmrGetNumPrecSolves",)h(1,)d(0\);)1454 55459 y
+Fa(629)2490 b Fd(flag)582 b(=)f(IDASpgmrGetNumResEvals\(mem,)586
+b(&nreS\);)1454 56787 y Fa(630)2490 b Fd(check_flag\(&flag,)584
+b("IDASpgmrGetNumResEvals",)h(1,)c(0\);)1454 58115 y
+Fa(631)1454 59444 y(632)2490 b Fd(flag)582 b(=)f
+(IDABBDPrecGetNumGfnEvals\(P_data,)586 b(&nge\);)1454
+60772 y Fa(633)2490 b Fd(check_flag\(&flag,)584 b
+("IDABBDPrecGetNumGfnEvals",)h(1,)d(0\);)1454 62100 y
+Fa(634)1454 63429 y(635)2490 b Fd
+(printf\("----------------------------------------------------------)p
+(-\\n"\);)1454 64757 y Fa(636)g Fd(printf\("\\nFinal)584
+b(statistics:)e(\\n\\n"\);)1454 66086 y Fa(637)1454 67414
+y(638)2490 b Fd(printf\("Number)584 b(of)d(steps)11624
+b(=)581 b(\045ld\\n",)h(nst\);)1454 68742 y Fa(639)2490
+b Fd(printf\("Number)584 b(of)d(residual)h(evaluations)2908
+b(=)581 b(\045ld\\n",)h(nre+nreS\);)1454 70071 y Fa(640)2490
+b Fd(printf\("Number)584 b(of)d(nonlinear)h(iterations)2908
+b(=)581 b(\045ld\\n",)h(nni\);)1454 71399 y Fa(641)2490
+b Fd(printf\("Number)584 b(of)d(error)h(test)g(failures)3488
+b(=)581 b(\045ld\\n",)h(netf\);)1454 72727 y Fa(642)2490
+b Fd(printf\("Number)584 b(of)d(nonlinear)h(conv.)g(failures)h(=)e
+(\045ld\\n\\n",)h(ncfn\);)1454 74056 y Fa(643)1454 75384
+y(644)2490 b Fd(printf\("Number)584 b(of)d(linear)h(iterations)4651
+b(=)581 b(\045ld\\n",)h(nli\);)1454 76712 y Fa(645)2490
+b Fd(printf\("Number)584 b(of)d(linear)h(conv.)g(failures)2326
+b(=)581 b(\045ld\\n\\n",)h(ncfl\);)1454 78041 y Fa(646)p
+Black 27394 81741 a Fp(75)p Black eop
+%%Page: 76 80
+76 79 bop Black Black -2546 7638 a Fa(647)2490 b Fd(printf\("Number)584
+b(of)d(preconditioner)i(setups)2326 b(=)581 b(\045ld\\n",)h(npe\);)
+-2546 8966 y Fa(648)2490 b Fd(printf\("Number)584 b(of)d
+(preconditioner)i(solves)2326 b(=)581 b(\045ld\\n",)h(nps\);)-2546
+10295 y Fa(649)2490 b Fd(printf\("Number)584 b(of)d(local)h(residual)g
+(evals.)2326 b(=)581 b(\045ld\\n",)h(nge\);)-2546 11623
+y Fa(650)-2546 12951 y(651)1328 b Fd(})-2546 14280 y
+Fa(652)-2546 15608 y(653)g Fd(/*)-2546 16936 y Fa(654)1909
+b Fd(*)581 b(Check)h(function)h(return)f(value...)-2546
+18265 y Fa(655)1909 b Fd(*)1744 b(opt)581 b(==)h(0)f(means)h(SUNDIALS)g
+(function)h(allocates)f(memory)g(so)g(check)g(if)-2546
+19593 y Fa(656)1909 b Fd(*)6974 b(returned)582 b(NULL)g(pointer)-2546
+20922 y Fa(657)1909 b Fd(*)1744 b(opt)581 b(==)h(1)f(means)h(SUNDIALS)g
+(function)h(returns)f(a)f(flag)h(so)f(check)h(if)-2546
+22250 y Fa(658)1909 b Fd(*)6974 b(flag)582 b(>=)f(0)-2546
+23578 y Fa(659)1909 b Fd(*)1744 b(opt)581 b(==)h(2)f(means)h(function)g
+(allocates)h(memory)f(so)f(check)h(if)g(returned)-2546
+24907 y Fa(660)1909 b Fd(*)6974 b(NULL)582 b(pointer)-2546
+26235 y Fa(661)1909 b Fd(*/)-2546 27563 y Fa(662)-2546
+28892 y(663)1328 b Fd(static)582 b(int)g(check_flag\(void)h
+(*flagvalue,)g(char)f(*funcname,)g(int)g(opt,)g(int)f(id\))-2546
+30220 y Fa(664)1328 b Fd({)-2546 31548 y Fa(665)2490
+b Fd(int)582 b(*errflag;)-2546 32877 y Fa(666)-2546 34205
+y(667)2490 b Fd(if)582 b(\(opt)f(==)h(0)f(&&)h(flagvalue)g(==)g(NULL\))
+g({)-2546 35533 y Fa(668)3653 b Fd(/*)581 b(Check)h(if)f(SUNDIALS)i
+(function)f(returned)g(NULL)g(pointer)g(-)g(no)f(memory)h(allocated)h
+(*/)-2546 36862 y Fa(669)3653 b Fd(fprintf\(stderr,)-2546
+38190 y Fa(670)8302 b Fd("\\nSUNDIALS_ERROR\(\045d\):)584
+b(\045s\(\))e(failed)g(-)f(returned)i(NULL)e(pointer\\n\\n",)-2546
+39518 y Fa(671)8302 b Fd(id,)581 b(funcname\);)-2546
+40847 y Fa(672)3653 b Fd(return\(1\);)-2546 42175 y Fa(673)2490
+b Fd(})582 b(else)f(if)h(\(opt)g(==)f(1\))g({)-2546 43504
+y Fa(674)3653 b Fd(/*)581 b(Check)h(if)f(flag)h(<)f(0)h(*/)-2546
+44832 y Fa(675)3653 b Fd(errflag)582 b(=)f(\(int)h(*\))f(flagvalue;)
+-2546 46160 y Fa(676)3653 b Fd(if)581 b(\(*errflag)i(<)e(0\))g({)-2546
+47489 y Fa(677)4815 b Fd(fprintf\(stderr,)-2546 48817
+y Fa(678)9464 b Fd("\\nSUNDIALS_ERROR\(\045d\):)585 b(\045s\(\))c
+(failed)h(with)g(flag)g(=)f(\045d\\n\\n",)-2546 50145
+y Fa(679)9464 b Fd(id,)582 b(funcname,)g(*errflag\);)-2546
+51474 y Fa(680)4815 b Fd(return\(1\);)-2546 52802 y Fa(681)3653
+b Fd(})-2546 54130 y Fa(682)2490 b Fd(})582 b(else)f(if)h(\(opt)g(==)f
+(2)g(&&)h(flagvalue)g(==)g(NULL\))g({)-2546 55459 y Fa(683)3653
+b Fd(/*)581 b(Check)h(if)f(function)i(returned)f(NULL)g(pointer)g(-)f
+(no)h(memory)g(allocated)g(*/)-2546 56787 y Fa(684)3653
+b Fd(fprintf\(stderr,)-2546 58115 y Fa(685)8302 b Fd
+("\\nMEMORY_ERROR\(\045d\):)584 b(\045s\(\))e(failed)g(-)f(returned)h
+(NULL)g(pointer\\n\\n",)-2546 59444 y Fa(686)8302 b Fd(id,)581
+b(funcname\);)-2546 60772 y Fa(687)3653 b Fd(return\(1\);)-2546
+62100 y Fa(688)2490 b Fd(})-2546 63429 y Fa(689)-2546
+64757 y(690)g Fd(return\(0\);)-2546 66086 y Fa(691)1328
+b Fd(})-2546 67414 y Fa(692)-2546 68742 y(693)g Fd(/*)-2546
+70071 y Fa(694)1909 b Fd
+(*------------------------------------------------------------------)p
+(--)-2546 71399 y Fa(695)g Fd(*)581 b(FUNCTIONS)i(CALLED)f(BY)f(IDA)h
+(&)f(SUPPORTING)i(FUNCTIONS)-2546 72727 y Fa(696)1909
+b Fd
+(*------------------------------------------------------------------)p
+(--)-2546 74056 y Fa(697)g Fd(*/)-2546 75384 y Fa(698)-2546
+76712 y(699)1328 b Fd(/*)-2546 78041 y Fa(700)1909 b
+Fd(*)581 b(resweb:)i(System)f(residual)g(function)g(for)g
+(predator-prey)h(system.)p Black 23394 81741 a Fp(76)p
+Black eop
+%%Page: 77 81
+77 80 bop Black Black 1454 7638 a Fa(701)1909 b Fd(*)581
+b(To)h(compute)g(the)g(residual)g(function)g(F,)g(this)g(routine)g
+(calls:)1454 8966 y Fa(702)1909 b Fd(*)581 b(rescomm,)i(for)e(needed)h
+(communication,)i(and)d(then)1454 10295 y Fa(703)1909
+b Fd(*)581 b(reslocal,)i(for)f(computation)g(of)g(the)f(residuals)i(on)
+e(this)h(processor.)1454 11623 y Fa(704)1909 b Fd(*/)1454
+12951 y Fa(705)1454 14280 y(706)1328 b Fd(static)582
+b(int)g(resweb\(realtype)h(tt,)1454 15608 y Fa(707)11789
+b Fd(N_Vector)582 b(cc,)g(N_Vector)g(cp,)g(N_Vector)g(rr,)1454
+16936 y Fa(708)11789 b Fd(void)581 b(*res_data\))1454
+18265 y Fa(709)1328 b Fd({)1454 19593 y Fa(710)2490 b
+Fd(int)582 b(retval;)1454 20922 y Fa(711)2490 b Fd(UserData)583
+b(webdata;)1454 22250 y Fa(712)2490 b Fd(long)582 b(int)g(Nlocal;)1454
+23578 y Fa(713)1454 24907 y(714)2490 b Fd(webdata)582
+b(=)g(\(UserData\))g(res_data;)1454 26235 y Fa(715)1454
+27563 y(716)2490 b Fd(Nlocal)582 b(=)g(webdata->n_local;)1454
+28892 y Fa(717)1454 30220 y(718)2490 b Fd(/*)582 b(Call)f(rescomm)i(to)
+e(do)h(inter-processor)h(communication.)g(*/)1454 31548
+y Fa(719)2490 b Fd(retval)582 b(=)g(rescomm\(Nlocal,)h(tt,)f(cc,)f(cp,)
+h(res_data\);)1454 32877 y Fa(720)1454 34205 y(721)2490
+b Fd(/*)582 b(Call)f(reslocal)i(to)e(calculate)i(the)e(local)h(portion)
+g(of)g(residual)g(vector.)g(*/)1454 35533 y Fa(722)2490
+b Fd(retval)582 b(=)g(reslocal\(Nlocal,)h(tt,)f(cc,)f(cp,)h(rr,)g
+(res_data\);)1454 36862 y Fa(723)1454 38190 y(724)2490
+b Fd(return\(0\);)1454 39518 y Fa(725)1328 b Fd(})1454
+40847 y Fa(726)1454 42175 y(727)g Fd(/*)1454 43504 y
+Fa(728)1909 b Fd(*)581 b(rescomm:)i(Communication)g(routine)f(in)g
+(support)g(of)f(resweb.)1454 44832 y Fa(729)1909 b Fd(*)581
+b(This)h(routine)g(performs)h(all)e(inter-processor)j(communication)f
+(of)e(components)1454 46160 y Fa(730)1909 b Fd(*)581
+b(of)h(the)f(cc)h(vector)g(needed)g(to)f(calculate)i(F,)e(namely)h(the)
+g(components)h(at)e(all)1454 47489 y Fa(731)1909 b Fd(*)581
+b(interior)i(subgrid)f(boundaries)h(\(ghost)f(cell)f(data\).)1164
+b(It)581 b(loads)h(this)g(data)1454 48817 y Fa(732)1909
+b Fd(*)581 b(into)h(a)f(work)h(array)g(cext)g(\(the)g(local)g(portion)g
+(of)f(c,)h(extended\).)1454 50145 y Fa(733)1909 b Fd(*)581
+b(The)h(message-passing)h(uses)f(blocking)h(sends,)f(non-blocking)g
+(receives,)1454 51474 y Fa(734)1909 b Fd(*)581 b(and)h
+(receive-waiting,)i(in)d(routines)h(BRecvPost,)h(BSend,)f(BRecvWait.)
+1454 52802 y Fa(735)1909 b Fd(*/)1454 54130 y Fa(736)1454
+55459 y(737)1328 b Fd(static)582 b(int)g(rescomm\(long)h(int)e(Nlocal,)
+h(realtype)h(tt,)1454 56787 y Fa(738)12370 b Fd(N_Vector)582
+b(cc,)g(N_Vector)g(cp,)1454 58115 y Fa(739)12370 b Fd(void)582
+b(*res_data\))1454 59444 y Fa(740)1328 b Fd({)1454 60772
+y Fa(741)1454 62100 y(742)2490 b Fd(UserData)583 b(webdata;)1454
+63429 y Fa(743)2490 b Fd(realtype)583 b(*cdata,)f(*cext,)g
+(buffer[2*NUM_SPECIES*MYSUB];)1454 64757 y Fa(744)2490
+b Fd(long)582 b(int)g(thispe,)g(ixsub,)g(jysub,)g(nsmxsub,)g(nsmysub;)
+1454 66086 y Fa(745)2490 b Fd(MPI_Comm)583 b(comm;)1454
+67414 y Fa(746)2490 b Fd(MPI_Request)583 b(request[4];)1454
+68742 y Fa(747)1454 70071 y(748)2490 b Fd(webdata)582
+b(=)g(\(UserData\))g(res_data;)1454 71399 y Fa(749)2490
+b Fd(cdata)582 b(=)f(NV_DATA_P\(cc\);)1454 72727 y Fa(750)1454
+74056 y(751)2490 b Fd(/*)582 b(Get)f(comm,)h(thispe,)g(subgrid)h
+(indices,)f(data)g(sizes,)g(extended)g(array)g(cext.)g(*/)1454
+75384 y Fa(752)1454 76712 y(753)2490 b Fd(comm)582 b(=)f
+(webdata->comm;)1454 78041 y Fa(754)2490 b Fd(thispe)582
+b(=)g(webdata->thispe;)p Black 27394 81741 a Fp(77)p
+Black eop
+%%Page: 78 82
+78 81 bop Black Black -2546 7638 a Fa(755)-2546 8966
+y(756)2490 b Fd(ixsub)582 b(=)f(webdata->ixsub;)-2546
+10295 y Fa(757)2490 b Fd(jysub)582 b(=)f(webdata->jysub;)-2546
+11623 y Fa(758)2490 b Fd(cext)582 b(=)f(webdata->cext;)-2546
+12951 y Fa(759)2490 b Fd(nsmxsub)582 b(=)g(webdata->nsmxsub;)-2546
+14280 y Fa(760)2490 b Fd(nsmysub)582 b(=)g
+(\(webdata->ns\)*\(webdata->mysub\);)-2546 15608 y Fa(761)-2546
+16936 y(762)2490 b Fd(/*)582 b(Start)g(receiving)g(boundary)g(data)g
+(from)g(neighboring)h(PEs.)e(*/)-2546 18265 y Fa(763)-2546
+19593 y(764)2490 b Fd(BRecvPost\(comm,)584 b(request,)e(thispe,)g
+(ixsub,)g(jysub,)g(nsmxsub,)h(nsmysub,)-2546 20922 y
+Fa(765)8302 b Fd(cext,)582 b(buffer\);)-2546 22250 y
+Fa(766)-2546 23578 y(767)2490 b Fd(/*)582 b(Send)f(data)h(from)g
+(boundary)g(of)g(local)g(grid)f(to)h(neighboring)h(PEs.)e(*/)-2546
+24907 y Fa(768)-2546 26235 y(769)2490 b Fd(BSend\(comm,)583
+b(thispe,)f(ixsub,)g(jysub,)g(nsmxsub,)h(nsmysub,)f(cdata\);)-2546
+27563 y Fa(770)-2546 28892 y(771)2490 b Fd(/*)582 b(Finish)g(receiving)
+g(boundary)h(data)e(from)h(neighboring)h(PEs.)f(*/)-2546
+30220 y Fa(772)-2546 31548 y(773)2490 b Fd(BRecvWait\(request,)584
+b(ixsub,)e(jysub,)g(nsmxsub,)h(cext,)e(buffer\);)-2546
+32877 y Fa(774)-2546 34205 y(775)2490 b Fd(return\(0\);)-2546
+35533 y Fa(776)1328 b Fd(})-2546 36862 y Fa(777)-2546
+38190 y(778)g Fd(/*)-2546 39518 y Fa(779)1909 b Fd(*)581
+b(BRecvPost:)i(Start)f(receiving)g(boundary)h(data)f(from)f
+(neighboring)i(PEs.)-2546 40847 y Fa(780)1909 b Fd(*)581
+b(\(1\))h(buffer)g(should)g(be)g(able)f(to)h(hold)g
+(2*NUM_SPECIES*MYSUB)h(realtype)g(entries,)-2546 42175
+y Fa(781)1909 b Fd(*)2906 b(should)582 b(be)g(passed)g(to)f(both)h(the)
+f(BRecvPost)i(and)e(BRecvWait)i(functions,)g(and)-2546
+43504 y Fa(782)1909 b Fd(*)2906 b(should)582 b(not)g(be)f(manipulated)i
+(between)f(the)g(two)f(calls.)-2546 44832 y Fa(783)1909
+b Fd(*)581 b(\(2\))h(request)g(should)g(have)g(4)f(entries,)i(and)e(is)
+h(also)f(passed)h(in)g(both)g(calls.)-2546 46160 y Fa(784)1909
+b Fd(*/)-2546 47489 y Fa(785)-2546 48817 y(786)1328 b
+Fd(static)582 b(void)g(BRecvPost\(MPI_Comm)i(comm,)e(MPI_Request)g
+(request[],)h(long)f(int)f(my_pe,)-2546 50145 y Fa(787)14113
+b Fd(long)582 b(int)g(ixsub,)g(long)f(int)h(jysub,)-2546
+51474 y Fa(788)14113 b Fd(long)582 b(int)g(dsizex,)g(long)g(int)f
+(dsizey,)-2546 52802 y Fa(789)14113 b Fd(realtype)583
+b(cext[],)f(realtype)g(buffer[]\))-2546 54130 y Fa(790)1328
+b Fd({)-2546 55459 y Fa(791)2490 b Fd(long)582 b(int)g(offsetce;)-2546
+56787 y Fa(792)2490 b Fd(/*)582 b(Have)f(bufleft)i(and)e(bufright)i
+(use)e(the)h(same)g(buffer.)g(*/)-2546 58115 y Fa(793)2490
+b Fd(realtype)583 b(*bufleft)f(=)f(buffer,)h(*bufright)h(=)e
+(buffer+NUM_SPECIES*MYSUB;)-2546 59444 y Fa(794)-2546
+60772 y(795)2490 b Fd(/*)582 b(If)f(jysub)h(>)f(0,)h(receive)g(data)g
+(for)f(bottom)h(x-line)g(of)g(cext.)g(*/)-2546 62100
+y Fa(796)2490 b Fd(if)582 b(\(jysub)g(!=)f(0\))-2546
+63429 y Fa(797)3653 b Fd(MPI_Irecv\(&cext[NUM_SPECIES],)585
+b(dsizex,)d(PVEC_REAL_MPI_TYPE,)-2546 64757 y Fa(798)9464
+b Fd(my_pe-NPEX,)583 b(0,)e(comm,)h(&request[0]\);)-2546
+66086 y Fa(799)-2546 67414 y(800)2490 b Fd(/*)582 b(If)f(jysub)h(<)f
+(NPEY-1,)i(receive)f(data)g(for)f(top)h(x-line)g(of)f(cext.)h(*/)-2546
+68742 y Fa(801)2490 b Fd(if)582 b(\(jysub)g(!=)f(NPEY-1\))h({)-2546
+70071 y Fa(802)3653 b Fd(offsetce)582 b(=)f(NUM_SPECIES*\(1)i(+)f
+(\(MYSUB+1\)*\(MXSUB+2\)\);)-2546 71399 y Fa(803)3653
+b Fd(MPI_Irecv\(&cext[offsetce],)585 b(dsizex,)d(PVEC_REAL_MPI_TYPE,)
+-2546 72727 y Fa(804)9464 b Fd(my_pe+NPEX,)583 b(0,)e(comm,)h
+(&request[1]\);)-2546 74056 y Fa(805)2490 b Fd(})-2546
+75384 y Fa(806)-2546 76712 y(807)g Fd(/*)582 b(If)f(ixsub)h(>)f(0,)h
+(receive)g(data)g(for)f(left)h(y-line)g(of)g(cext)f(\(via)h(bufleft\).)
+h(*/)-2546 78041 y Fa(808)2490 b Fd(if)582 b(\(ixsub)g(!=)f(0\))h({)p
+Black 23394 81741 a Fp(78)p Black eop
+%%Page: 79 83
+79 82 bop Black Black 1454 7638 a Fa(809)3653 b Fd
+(MPI_Irecv\(&bufleft[0],)584 b(dsizey,)e(PVEC_REAL_MPI_TYPE,)1454
+8966 y Fa(810)9464 b Fd(my_pe-1,)582 b(0,)g(comm,)g(&request[2]\);)1454
+10295 y Fa(811)2490 b Fd(})1454 11623 y Fa(812)1454 12951
+y(813)g Fd(/*)582 b(If)f(ixsub)h(<)f(NPEX-1,)i(receive)f(data)g(for)f
+(right)h(y-line)g(of)f(cext)h(\(via)g(bufright\).)h(*/)1454
+14280 y Fa(814)2490 b Fd(if)582 b(\(ixsub)g(!=)f(NPEX-1\))h({)1454
+15608 y Fa(815)3653 b Fd(MPI_Irecv\(&bufright[0],)584
+b(dsizey,)e(PVEC_REAL_MPI_TYPE,)1454 16936 y Fa(816)9464
+b Fd(my_pe+1,)582 b(0,)g(comm,)g(&request[3]\);)1454
+18265 y Fa(817)2490 b Fd(})1454 19593 y Fa(818)1454 20922
+y(819)1328 b Fd(})1454 22250 y Fa(820)1454 23578 y(821)g
+Fd(/*)1454 24907 y Fa(822)1909 b Fd(*)581 b(BRecvWait:)i(Finish)f
+(receiving)h(boundary)f(data)g(from)f(neighboring)i(PEs.)1454
+26235 y Fa(823)1909 b Fd(*)581 b(\(1\))h(buffer)g(should)g(be)g(able)f
+(to)h(hold)g(2*NUM_SPECIES*MYSUB)h(realtype)g(entries,)1454
+27563 y Fa(824)1909 b Fd(*)2906 b(should)582 b(be)g(passed)g(to)f(both)
+h(the)f(BRecvPost)i(and)e(BRecvWait)i(functions,)g(and)1454
+28892 y Fa(825)1909 b Fd(*)2906 b(should)582 b(not)g(be)f(manipulated)i
+(between)f(the)g(two)f(calls.)1454 30220 y Fa(826)1909
+b Fd(*)581 b(\(2\))h(request)g(should)g(have)g(4)f(entries,)i(and)e(is)
+h(also)f(passed)h(in)g(both)g(calls.)1454 31548 y Fa(827)1909
+b Fd(*/)1454 32877 y Fa(828)1454 34205 y(829)1328 b Fd(static)582
+b(void)g(BRecvWait\(MPI_Request)i(request[],)f(long)e(int)h(ixsub,)g
+(long)g(int)f(jysub,)1454 35533 y Fa(830)14113 b Fd(long)582
+b(int)g(dsizex,)g(realtype)g(cext[],)g(realtype)h(buffer[]\))1454
+36862 y Fa(831)1328 b Fd({)1454 38190 y Fa(832)2490 b
+Fd(int)582 b(i;)1454 39518 y Fa(833)2490 b Fd(long)582
+b(int)g(ly,)f(dsizex2,)i(offsetce,)f(offsetbuf;)1454
+40847 y Fa(834)2490 b Fd(realtype)583 b(*bufleft)f(=)f(buffer,)h
+(*bufright)h(=)e(buffer+NUM_SPECIES*MYSUB;)1454 42175
+y Fa(835)2490 b Fd(MPI_Status)583 b(status;)1454 43504
+y Fa(836)1454 44832 y(837)2490 b Fd(dsizex2)582 b(=)g(dsizex)g(+)f
+(2*NUM_SPECIES;)1454 46160 y Fa(838)1454 47489 y(839)2490
+b Fd(/*)582 b(If)f(jysub)h(>)f(0,)h(receive)g(data)g(for)f(bottom)h
+(x-line)g(of)g(cext.)g(*/)1454 48817 y Fa(840)2490 b
+Fd(if)582 b(\(jysub)g(!=)f(0\))1454 50145 y Fa(841)3653
+b Fd(MPI_Wait\(&request[0],&status\);)1454 51474 y Fa(842)1454
+52802 y(843)2490 b Fd(/*)582 b(If)f(jysub)h(<)f(NPEY-1,)i(receive)f
+(data)g(for)f(top)h(x-line)g(of)f(cext.)h(*/)1454 54130
+y Fa(844)2490 b Fd(if)582 b(\(jysub)g(!=)f(NPEY-1\))1454
+55459 y Fa(845)3653 b Fd(MPI_Wait\(&request[1],&status\);)1454
+56787 y Fa(846)1454 58115 y(847)2490 b Fd(/*)582 b(If)f(ixsub)h(>)f(0,)
+h(receive)g(data)g(for)f(left)h(y-line)g(of)g(cext)f(\(via)h
+(bufleft\).)h(*/)1454 59444 y Fa(848)2490 b Fd(if)582
+b(\(ixsub)g(!=)f(0\))h({)1454 60772 y Fa(849)3653 b Fd
+(MPI_Wait\(&request[2],&status\);)1454 62100 y Fa(850)1454
+63429 y(851)g Fd(/*)581 b(Copy)h(the)f(buffer)h(to)g(cext)g(*/)1454
+64757 y Fa(852)3653 b Fd(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))g({)1454 66086 y Fa(853)4815 b Fd(offsetbuf)582
+b(=)g(ly*NUM_SPECIES;)1454 67414 y Fa(854)4815 b Fd(offsetce)582
+b(=)g(\(ly+1\)*dsizex2;)1454 68742 y Fa(855)4815 b Fd(for)581
+b(\(i)h(=)f(0;)h(i)f(<)g(NUM_SPECIES;)i(i++\))1454 70071
+y Fa(856)5977 b Fd(cext[offsetce+i])584 b(=)d(bufleft[offsetbuf+i];)
+1454 71399 y Fa(857)3653 b Fd(})1454 72727 y Fa(858)2490
+b Fd(})1454 74056 y Fa(859)1454 75384 y(860)g Fd(/*)582
+b(If)f(ixsub)h(<)f(NPEX-1,)i(receive)f(data)g(for)f(right)h(y-line)g
+(of)f(cext)h(\(via)g(bufright\).)h(*/)1454 76712 y Fa(861)2490
+b Fd(if)582 b(\(ixsub)g(!=)f(NPEX-1\))h({)1454 78041
+y Fa(862)3653 b Fd(MPI_Wait\(&request[3],&status\);)p
+Black 27394 81741 a Fp(79)p Black eop
+%%Page: 80 84
+80 83 bop Black Black -2546 7638 a Fa(863)-2546 8966
+y(864)3653 b Fd(/*)581 b(Copy)h(the)f(buffer)h(to)g(cext)g(*/)-2546
+10295 y Fa(865)3653 b Fd(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))g({)-2546 11623 y Fa(866)4815 b Fd(offsetbuf)582
+b(=)g(ly*NUM_SPECIES;)-2546 12951 y Fa(867)4815 b Fd(offsetce)582
+b(=)g(\(ly+2\)*dsizex2)h(-)e(NUM_SPECIES;)-2546 14280
+y Fa(868)4815 b Fd(for)581 b(\(i)h(=)f(0;)h(i)f(<)g(NUM_SPECIES;)i
+(i++\))-2546 15608 y Fa(869)5977 b Fd(cext[offsetce+i])584
+b(=)d(bufright[offsetbuf+i];)-2546 16936 y Fa(870)3653
+b Fd(})-2546 18265 y Fa(871)2490 b Fd(})-2546 19593 y
+Fa(872)1328 b Fd(})-2546 20922 y Fa(873)-2546 22250 y(874)g
+Fd(/*)-2546 23578 y Fa(875)1909 b Fd(*)581 b(BSend:)h(Send)g(boundary)h
+(data)e(to)h(neighboring)h(PEs.)-2546 24907 y Fa(876)1909
+b Fd(*)581 b(This)h(routine)g(sends)g(components)h(of)e(cc)h(from)g
+(internal)g(subgrid)g(boundaries)-2546 26235 y Fa(877)1909
+b Fd(*)581 b(to)h(the)f(appropriate)i(neighbor)g(PEs.)-2546
+27563 y Fa(878)1909 b Fd(*/)-2546 28892 y Fa(879)-2546
+30220 y(880)1328 b Fd(static)582 b(void)g(BSend\(MPI_Comm)h(comm,)f
+(long)g(int)f(my_pe,)h(long)g(int)g(ixsub,)g(long)f(int)h(jysub,)-2546
+31548 y Fa(881)11789 b Fd(long)581 b(int)h(dsizex,)g(long)g(int)g
+(dsizey,)g(realtype)g(cdata[]\))-2546 32877 y Fa(882)1328
+b Fd({)-2546 34205 y Fa(883)2490 b Fd(int)582 b(i;)-2546
+35533 y Fa(884)2490 b Fd(long)582 b(int)g(ly,)f(offsetc,)i(offsetbuf;)
+-2546 36862 y Fa(885)2490 b Fd(realtype)583 b
+(bufleft[NUM_SPECIES*MYSUB],)i(bufright[NUM_SPECIES*MYSUB];)-2546
+38190 y Fa(886)-2546 39518 y(887)2490 b Fd(/*)582 b(If)f(jysub)h(>)f
+(0,)h(send)g(data)f(from)h(bottom)g(x-line)g(of)g(cc.)f(*/)-2546
+40847 y Fa(888)-2546 42175 y(889)2490 b Fd(if)582 b(\(jysub)g(!=)f(0\))
+-2546 43504 y Fa(890)3653 b Fd(MPI_Send\(&cdata[0],)584
+b(dsizex,)e(PVEC_REAL_MPI_TYPE,)i(my_pe-NPEX,)f(0,)e(comm\);)-2546
+44832 y Fa(891)-2546 46160 y(892)2490 b Fd(/*)582 b(If)f(jysub)h(<)f
+(NPEY-1,)i(send)e(data)h(from)g(top)f(x-line)h(of)g(cc.)f(*/)-2546
+47489 y Fa(893)-2546 48817 y(894)2490 b Fd(if)582 b(\(jysub)g(!=)f
+(NPEY-1\))h({)-2546 50145 y Fa(895)3653 b Fd(offsetc)582
+b(=)f(\(MYSUB-1\)*dsizex;)-2546 51474 y Fa(896)3653 b
+Fd(MPI_Send\(&cdata[offsetc],)584 b(dsizex,)f(PVEC_REAL_MPI_TYPE,)h
+(my_pe+NPEX,)e(0,)g(comm\);)-2546 52802 y Fa(897)2490
+b Fd(})-2546 54130 y Fa(898)-2546 55459 y(899)g Fd(/*)582
+b(If)f(ixsub)h(>)f(0,)h(send)g(data)f(from)h(left)g(y-line)g(of)f(cc)h
+(\(via)f(bufleft\).)i(*/)-2546 56787 y Fa(900)-2546 58115
+y(901)2490 b Fd(if)582 b(\(ixsub)g(!=)f(0\))h({)-2546
+59444 y Fa(902)3653 b Fd(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))g({)-2546 60772 y Fa(903)4815 b Fd(offsetbuf)582
+b(=)g(ly*NUM_SPECIES;)-2546 62100 y Fa(904)4815 b Fd(offsetc)582
+b(=)f(ly*dsizex;)-2546 63429 y Fa(905)4815 b Fd(for)581
+b(\(i)h(=)f(0;)h(i)f(<)g(NUM_SPECIES;)i(i++\))-2546 64757
+y Fa(906)5977 b Fd(bufleft[offsetbuf+i])584 b(=)e(cdata[offsetc+i];)
+-2546 66086 y Fa(907)3653 b Fd(})-2546 67414 y Fa(908)g
+Fd(MPI_Send\(&bufleft[0],)584 b(dsizey,)e(PVEC_REAL_MPI_TYPE,)i
+(my_pe-1,)e(0,)g(comm\);)-2546 68742 y Fa(909)2490 b
+Fd(})-2546 70071 y Fa(910)-2546 71399 y(911)g Fd(/*)582
+b(If)f(ixsub)h(<)f(NPEX-1,)i(send)e(data)h(from)g(right)g(y-line)g(of)f
+(cc)h(\(via)f(bufright\).)i(*/)-2546 72727 y Fa(912)-2546
+74056 y(913)2490 b Fd(if)582 b(\(ixsub)g(!=)f(NPEX-1\))h({)-2546
+75384 y Fa(914)3653 b Fd(for)581 b(\(ly)h(=)f(0;)h(ly)f(<)g(MYSUB;)h
+(ly++\))g({)-2546 76712 y Fa(915)4815 b Fd(offsetbuf)582
+b(=)g(ly*NUM_SPECIES;)-2546 78041 y Fa(916)4815 b Fd(offsetc)582
+b(=)f(offsetbuf*MXSUB)j(+)d(\(MXSUB-1\)*NUM_SPECIES;)p
+Black 23394 81741 a Fp(80)p Black eop
+%%Page: 81 85
+81 84 bop Black Black 1454 7638 a Fa(917)4815 b Fd(for)581
+b(\(i)h(=)f(0;)h(i)f(<)g(NUM_SPECIES;)i(i++\))1454 8966
+y Fa(918)5977 b Fd(bufright[offsetbuf+i])584 b(=)e(cdata[offsetc+i];)
+1454 10295 y Fa(919)3653 b Fd(})1454 11623 y Fa(920)g
+Fd(MPI_Send\(&bufright[0],)584 b(dsizey,)e(PVEC_REAL_MPI_TYPE,)i
+(my_pe+1,)f(0,)e(comm\);)1454 12951 y Fa(921)2490 b Fd(})1454
+14280 y Fa(922)1328 b Fd(})1454 15608 y Fa(923)1454 16936
+y(924)g Fd(/*)581 b(Define)h(lines)g(are)g(for)g(ease)f(of)h
+(readability)h(in)e(the)h(following)g(functions.)h(*/)1454
+18265 y Fa(925)1454 19593 y(926)1328 b Fd(#define)582
+b(mxsub)3488 b(\(webdata->mxsub\))1454 20922 y Fa(927)1328
+b Fd(#define)582 b(mysub)3488 b(\(webdata->mysub\))1454
+22250 y Fa(928)1328 b Fd(#define)582 b(npex)4069 b(\(webdata->npex\))
+1454 23578 y Fa(929)1328 b Fd(#define)582 b(npey)4069
+b(\(webdata->npey\))1454 24907 y Fa(930)1328 b Fd(#define)582
+b(ixsub)3488 b(\(webdata->ixsub\))1454 26235 y Fa(931)1328
+b Fd(#define)582 b(jysub)3488 b(\(webdata->jysub\))1454
+27563 y Fa(932)1328 b Fd(#define)582 b(nsmxsub)2326 b
+(\(webdata->nsmxsub\))1454 28892 y Fa(933)1328 b Fd(#define)582
+b(nsmxsub2)1745 b(\(webdata->nsmxsub2\))1454 30220 y
+Fa(934)1328 b Fd(#define)582 b(np)5231 b(\(webdata->np\))1454
+31548 y Fa(935)1328 b Fd(#define)582 b(dx)5231 b(\(webdata->dx\))1454
+32877 y Fa(936)1328 b Fd(#define)582 b(dy)5231 b(\(webdata->dy\))1454
+34205 y Fa(937)1328 b Fd(#define)582 b(cox)4650 b(\(webdata->cox\))1454
+35533 y Fa(938)1328 b Fd(#define)582 b(coy)4650 b(\(webdata->coy\))1454
+36862 y Fa(939)1328 b Fd(#define)582 b(rhs)4650 b(\(webdata->rhs\))1454
+38190 y Fa(940)1328 b Fd(#define)582 b(cext)4069 b(\(webdata->cext\))
+1454 39518 y Fa(941)1328 b Fd(#define)582 b(rates)3488
+b(\(webdata->rates\))1454 40847 y Fa(942)1328 b Fd(#define)582
+b(ns)5231 b(\(webdata->ns\))1454 42175 y Fa(943)1328
+b Fd(#define)582 b(acoef)3488 b(\(webdata->acoef\))1454
+43504 y Fa(944)1328 b Fd(#define)582 b(bcoef)3488 b(\(webdata->bcoef\))
+1454 44832 y Fa(945)1454 46160 y(946)1328 b Fd(/*)1454
+47489 y Fa(947)1909 b Fd(*)581 b(reslocal:)i(Compute)f(res)g(=)f
+(F\(t,cc,cp\).)1454 48817 y Fa(948)1909 b Fd(*)581 b(This)h(routine)g
+(assumes)h(that)e(all)h(inter-processor)h(communication)g(of)f(data)
+1454 50145 y Fa(949)1909 b Fd(*)581 b(needed)h(to)g(calculate)g(F)g
+(has)f(already)i(been)e(done.)1163 b(Components)583 b(at)e(interior)
+1454 51474 y Fa(950)1909 b Fd(*)581 b(subgrid)i(boundaries)f(are)g
+(assumed)g(to)g(be)f(in)g(the)h(work)g(array)g(cext.)1454
+52802 y Fa(951)1909 b Fd(*)581 b(The)h(local)g(portion)g(of)g(the)f(cc)
+h(vector)g(is)f(first)h(copied)g(into)g(cext.)1454 54130
+y Fa(952)1909 b Fd(*)581 b(The)h(exterior)g(Neumann)h(boundary)f
+(conditions)h(are)e(explicitly)i(handled)f(here)1454
+55459 y Fa(953)1909 b Fd(*)581 b(by)h(copying)g(data)g(from)g(the)f
+(first)h(interior)g(mesh)g(line)g(to)f(the)h(ghost)g(cell)1454
+56787 y Fa(954)1909 b Fd(*)581 b(locations)i(in)e(cext.)1163
+b(Then)582 b(the)g(reaction)g(and)g(diffusion)g(terms)g(are)1454
+58115 y Fa(955)1909 b Fd(*)581 b(evaluated)i(in)e(terms)h(of)g(the)f
+(cext)h(array,)g(and)g(the)f(residuals)i(are)e(formed.)1454
+59444 y Fa(956)1909 b Fd(*)581 b(The)h(reaction)g(terms)g(are)g(saved)g
+(separately)g(in)g(the)f(vector)h(webdata->rates)1454
+60772 y Fa(957)1909 b Fd(*)581 b(for)h(use)g(by)f(the)h(preconditioner)
+h(setup)f(routine.)1454 62100 y Fa(958)1909 b Fd(*/)1454
+63429 y Fa(959)1454 64757 y(960)1328 b Fd(static)582
+b(int)g(reslocal\(long)h(int)e(Nlocal,)i(realtype)f(tt,)1454
+66086 y Fa(961)12951 b Fd(N_Vector)582 b(cc,)g(N_Vector)g(cp,)g
+(N_Vector)g(rr,)1454 67414 y Fa(962)12951 b Fd(void)582
+b(*res_data\))1454 68742 y Fa(963)1328 b Fd({)1454 70071
+y Fa(964)2490 b Fd(realtype)583 b(*cdata,)f(*ratesxy,)g(*cpxy,)g
+(*resxy,)1454 71399 y Fa(965)3653 b Fd(xx,)581 b(yy,)h(dcyli,)g(dcyui,)
+g(dcxli,)g(dcxui;)1454 72727 y Fa(966)2490 b Fd(long)582
+b(int)g(ix,)f(jy,)h(is,)f(i,)h(locc,)g(ylocce,)g(locce;)1454
+74056 y Fa(967)2490 b Fd(UserData)583 b(webdata;)1454
+75384 y Fa(968)1454 76712 y(969)2490 b Fd(webdata)582
+b(=)g(\(UserData\))g(res_data;)1454 78041 y Fa(970)p
+Black 27394 81741 a Fp(81)p Black eop
+%%Page: 82 86
+82 85 bop Black Black -2546 7638 a Fa(971)2490 b Fd(/*)582
+b(Get)f(data)h(pointers,)h(subgrid)f(data,)g(array)g(sizes,)g(work)f
+(array)h(cext.)g(*/)-2546 8966 y Fa(972)-2546 10295 y(973)2490
+b Fd(cdata)582 b(=)f(NV_DATA_P\(cc\);)-2546 11623 y Fa(974)-2546
+12951 y(975)2490 b Fd(/*)582 b(Copy)f(local)h(segment)h(of)e(cc)g
+(vector)i(into)e(the)h(working)g(extended)g(array)g(cext.)g(*/)-2546
+14280 y Fa(976)-2546 15608 y(977)2490 b Fd(locc)582 b(=)f(0;)-2546
+16936 y Fa(978)2490 b Fd(locce)582 b(=)f(nsmxsub2)i(+)e(NUM_SPECIES;)
+-2546 18265 y Fa(979)2490 b Fd(for)582 b(\(jy)f(=)h(0;)f(jy)h(<)f
+(mysub;)h(jy++\))g({)-2546 19593 y Fa(980)3653 b Fd(for)581
+b(\(i)h(=)f(0;)g(i)h(<)f(nsmxsub;)h(i++\))g(cext[locce+i])h(=)e
+(cdata[locc+i];)-2546 20922 y Fa(981)3653 b Fd(locc)581
+b(=)h(locc)f(+)h(nsmxsub;)-2546 22250 y Fa(982)3653 b
+Fd(locce)581 b(=)h(locce)g(+)f(nsmxsub2;)-2546 23578
+y Fa(983)2490 b Fd(})-2546 24907 y Fa(984)-2546 26235
+y(985)g Fd(/*)582 b(To)f(facilitate)i(homogeneous)g(Neumann)f(boundary)
+g(conditions,)h(when)f(this)f(is)-2546 27563 y Fa(986)4234
+b Fd(a)581 b(boundary)h(PE,)g(copy)g(data)f(from)h(the)g(first)g
+(interior)g(mesh)g(line)g(of)f(cc)g(to)h(cext.)g(*/)-2546
+28892 y Fa(987)-2546 30220 y(988)2490 b Fd(/*)582 b(If)f(jysub)h(=)f
+(0,)h(copy)g(x-line)g(2)f(of)g(cc)h(to)f(cext.)h(*/)-2546
+31548 y Fa(989)2490 b Fd(if)582 b(\(jysub)g(==)f(0\))-2546
+32877 y Fa(990)3653 b Fd({)581 b(for)g(\(i)h(=)f(0;)h(i)f(<)g(nsmxsub;)
+i(i++\))e(cext[NUM_SPECIES+i])j(=)e(cdata[nsmxsub+i];)h(})-2546
+34205 y Fa(991)-2546 35533 y(992)2490 b Fd(/*)582 b(If)f(jysub)h(=)f
+(npey-1,)i(copy)e(x-line)h(mysub-1)h(of)e(cc)g(to)h(cext.)g(*/)-2546
+36862 y Fa(993)2490 b Fd(if)582 b(\(jysub)g(==)f(npey-1\))h({)-2546
+38190 y Fa(994)3653 b Fd(locc)581 b(=)h(\(mysub-2\)*nsmxsub;)-2546
+39518 y Fa(995)3653 b Fd(locce)581 b(=)h(\(mysub+1\)*nsmxsub2)i(+)d
+(NUM_SPECIES;)-2546 40847 y Fa(996)3653 b Fd(for)581
+b(\(i)h(=)f(0;)g(i)h(<)f(nsmxsub;)h(i++\))g(cext[locce+i])h(=)e
+(cdata[locc+i];)-2546 42175 y Fa(997)2490 b Fd(})-2546
+43504 y Fa(998)-2546 44832 y(999)g Fd(/*)582 b(If)f(ixsub)h(=)f(0,)h
+(copy)g(y-line)g(2)f(of)g(cc)h(to)f(cext.)h(*/)-2952
+46160 y Fa(1000)2490 b Fd(if)582 b(\(ixsub)g(==)f(0\))h({)-2952
+47489 y Fa(1001)3653 b Fd(for)581 b(\(jy)h(=)f(0;)h(jy)f(<)g(mysub;)h
+(jy++\))g({)-2952 48817 y Fa(1002)4815 b Fd(locc)582
+b(=)f(jy*nsmxsub)i(+)e(NUM_SPECIES;)-2952 50145 y Fa(1003)4815
+b Fd(locce)582 b(=)f(\(jy+1\)*nsmxsub2;)-2952 51474 y
+Fa(1004)4815 b Fd(for)581 b(\(i)h(=)f(0;)h(i)f(<)g(NUM_SPECIES;)i
+(i++\))f(cext[locce+i])h(=)e(cdata[locc+i];)-2952 52802
+y Fa(1005)3653 b Fd(})-2952 54130 y Fa(1006)2490 b Fd(})-2952
+55459 y Fa(1007)-2952 56787 y(1008)g Fd(/*)582 b(If)f(ixsub)h(=)f
+(npex-1,)i(copy)e(y-line)h(mxsub-1)h(of)e(cc)g(to)h(cext.)g(*/)-2952
+58115 y Fa(1009)2490 b Fd(if)582 b(\(ixsub)g(==)f(npex-1\))h({)-2952
+59444 y Fa(1010)3653 b Fd(for)581 b(\(jy)h(=)f(0;)h(jy)f(<)g(mysub;)h
+(jy++\))g({)-2952 60772 y Fa(1011)4815 b Fd(locc)1163
+b(=)581 b(\(jy+1\)*nsmxsub)i(-)f(2*NUM_SPECIES;)-2952
+62100 y Fa(1012)4815 b Fd(locce)582 b(=)f(\(jy+2\)*nsmxsub2)i(-)f
+(NUM_SPECIES;)-2952 63429 y Fa(1013)4815 b Fd(for)581
+b(\(i)h(=)f(0;)h(i)f(<)g(NUM_SPECIES;)i(i++\))f(cext[locce+i])h(=)e
+(cdata[locc+i];)-2952 64757 y Fa(1014)3653 b Fd(})-2952
+66086 y Fa(1015)2490 b Fd(})-2952 67414 y Fa(1016)-2952
+68742 y(1017)g Fd(/*)582 b(Loop)f(over)h(all)g(grid)g(points,)g
+(setting)g(local)g(array)g(rates)g(to)f(right-hand)i(sides.)-2952
+70071 y Fa(1018)4234 b Fd(Then)581 b(set)h(rr)g(values)g(appropriately)
+h(for)e(prey/predator)i(components)g(of)e(F.)h(*/)-2952
+71399 y Fa(1019)-2952 72727 y(1020)2490 b Fd(for)582
+b(\(jy)f(=)h(0;)f(jy)h(<)f(mysub;)h(jy++\))g({)-2952
+74056 y Fa(1021)3653 b Fd(ylocce)582 b(=)f(\(jy+1\)*nsmxsub2;)-2952
+75384 y Fa(1022)3653 b Fd(yy)2906 b(=)581 b(\(jy+jysub*mysub\)*dy;)
+-2952 76712 y Fa(1023)-2952 78041 y(1024)3653 b Fd(for)581
+b(\(ix)h(=)f(0;)h(ix)f(<)g(mxsub;)h(ix++\))g({)p Black
+23394 81741 a Fp(82)p Black eop
+%%Page: 83 87
+83 86 bop Black Black 1048 7638 a Fa(1025)4815 b Fd(locce)582
+b(=)f(ylocce)h(+)f(\(ix+1\)*NUM_SPECIES;)1048 8966 y
+Fa(1026)4815 b Fd(xx)581 b(=)h(\(ix)f(+)h(ixsub*mxsub\)*dx;)1048
+10295 y Fa(1027)1048 11623 y(1028)4815 b Fd(ratesxy)582
+b(=)f(IJ_Vptr\(rates,ix,jy\);)1048 12951 y Fa(1029)4815
+b Fd(WebRates\(xx,)583 b(yy,)e(&\(cext[locce]\),)j(ratesxy,)e
+(webdata\);)1048 14280 y Fa(1030)1048 15608 y(1031)4815
+b Fd(resxy)582 b(=)f(IJ_Vptr\(rr,ix,jy\);)1048 16936
+y Fa(1032)4815 b Fd(cpxy)582 b(=)f(IJ_Vptr\(cp,ix,jy\);)1048
+18265 y Fa(1033)1048 19593 y(1034)4815 b Fd(for)581 b(\(is)h(=)f(0;)h
+(is)f(<)h(NUM_SPECIES;)h(is++\))e({)1048 20922 y Fa(1035)5977
+b Fd(dcyli)582 b(=)f(cext[locce+is])5814 b(-)581 b
+(cext[locce+is-nsmxsub2];)1048 22250 y Fa(1036)5977 b
+Fd(dcyui)582 b(=)f(cext[locce+is+nsmxsub2])k(-)c(cext[locce+is];)1048
+23578 y Fa(1037)1048 24907 y(1038)5977 b Fd(dcxli)582
+b(=)f(cext[locce+is])7557 b(-)582 b(cext[locce+is-NUM_SPECIES];)1048
+26235 y Fa(1039)5977 b Fd(dcxui)582 b(=)f(cext[locce+is+NUM_SPECIES])k
+(-)d(cext[locce+is];)1048 27563 y Fa(1040)1048 28892
+y(1041)5977 b Fd(rhs[is])582 b(=)g(cox[is]*\(dcxui-dcxli\))i(+)d
+(coy[is]*\(dcyui-dcyli\))k(+)c(ratesxy[is];)1048 30220
+y Fa(1042)1048 31548 y(1043)5977 b Fd(if)582 b(\(is)f(<)h(np\))f
+(resxy[is])i(=)e(cpxy[is])h(-)g(rhs[is];)1048 32877 y
+Fa(1044)5977 b Fd(else)5231 b(resxy[is])583 b(=)5811
+b(-)582 b(rhs[is];)1048 34205 y Fa(1045)1048 35533 y(1046)4815
+b Fd(})1048 36862 y Fa(1047)3653 b Fd(})1048 38190 y
+Fa(1048)2490 b Fd(})1048 39518 y Fa(1049)1048 40847 y(1050)g
+Fd(return\(0\);)1048 42175 y Fa(1051)1328 b Fd(})1048
+43504 y Fa(1052)1048 44832 y(1053)g Fd(/*)1048 46160
+y Fa(1054)1909 b Fd(*)581 b(WebRates:)i(Evaluate)f(reaction)h(rates)f
+(at)f(a)g(given)h(spatial)g(point.)1048 47489 y Fa(1055)1909
+b Fd(*)581 b(At)h(a)f(given)h(\(x,y\),)g(evaluate)g(the)g(array)g(of)f
+(ns)h(reaction)g(terms)g(R.)1048 48817 y Fa(1056)1909
+b Fd(*/)1048 50145 y Fa(1057)1048 51474 y(1058)1328 b
+Fd(static)582 b(void)g(WebRates\(realtype)h(xx,)f(realtype)g(yy,)g
+(realtype)g(*cxy,)g(realtype)h(*ratesxy,)1048 52802 y
+Fa(1059)13532 b Fd(UserData)582 b(webdata\))1048 54130
+y Fa(1060)1328 b Fd({)1048 55459 y Fa(1061)2490 b Fd(int)582
+b(is;)1048 56787 y Fa(1062)2490 b Fd(realtype)583 b(fac;)1048
+58115 y Fa(1063)1048 59444 y(1064)2490 b Fd(for)582 b(\(is)f(=)h(0;)f
+(is)h(<)f(NUM_SPECIES;)i(is++\))1048 60772 y Fa(1065)3653
+b Fd(ratesxy[is])582 b(=)g(dotprod\(NUM_SPECIES,)i(cxy,)e(acoef[is]\);)
+1048 62100 y Fa(1066)1048 63429 y(1067)2490 b Fd(fac)582
+b(=)f(ONE)h(+)f(ALPHA*xx*yy)i(+)e
+(BETA*sin\(FOURPI*xx\)*sin\(FOURPI*yy\);)1048 64757 y
+Fa(1068)1048 66086 y(1069)2490 b Fd(for)582 b(\(is)f(=)h(0;)f(is)h(<)f
+(NUM_SPECIES;)i(is++\))1048 67414 y Fa(1070)3653 b Fd(ratesxy[is])582
+b(=)g(cxy[is]*\()g(bcoef[is]*fac)h(+)f(ratesxy[is])g(\);)1048
+68742 y Fa(1071)1048 70071 y(1072)1328 b Fd(})1048 71399
+y Fa(1073)1048 72727 y(1074)g Fd(/*)1048 74056 y Fa(1075)1909
+b Fd(*)581 b(dotprod:)i(dot)e(product)i(routine)f(for)f(realtype)i
+(arrays,)f(for)f(use)h(by)g(WebRates.)1048 75384 y Fa(1076)1909
+b Fd(*/)1048 76712 y Fa(1077)1048 78041 y(1078)1328 b
+Fd(static)582 b(realtype)g(dotprod\(long)h(int)f(size,)g(realtype)g
+(*x1,)g(realtype)g(*x2\))p Black 27394 81741 a Fp(83)p
+Black eop
+%%Page: 84 88
+84 87 bop Black Black -2952 7638 a Fa(1079)1328 b Fd({)-2952
+8966 y Fa(1080)2490 b Fd(long)582 b(int)g(i;)-2952 10295
+y Fa(1081)2490 b Fd(realtype)583 b(*xx1,)f(*xx2,)f(temp)h(=)f(ZERO;)
+-2952 11623 y Fa(1082)-2952 12951 y(1083)2490 b Fd(xx1)582
+b(=)f(x1;)-2952 14280 y Fa(1084)2490 b Fd(xx2)582 b(=)f(x2;)-2952
+15608 y Fa(1085)2490 b Fd(for)582 b(\(i)f(=)h(0;)f(i)g(<)h(size;)g
+(i++\))-2952 16936 y Fa(1086)3653 b Fd(temp)581 b(+=)h(\(*xx1++\))g(*)f
+(\(*xx2++\);)-2952 18265 y Fa(1087)-2952 19593 y(1088)2490
+b Fd(return\(temp\);)-2952 20922 y Fa(1089)1328 b Fd(})-2952
+22250 y Fa(1090)p Black 23394 81741 a Fp(84)p Black eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/Win32/WinCVODE/sundials/ida/doc/ida_guide.pdf b/Win32/WinCVODE/sundials/ida/doc/ida_guide.pdf
new file mode 100644
index 0000000..ec23e2d
Binary files /dev/null and b/Win32/WinCVODE/sundials/ida/doc/ida_guide.pdf differ
diff --git a/Win32/WinCVODE/sundials/ida/doc/ida_guide.ps b/Win32/WinCVODE/sundials/ida/doc/ida_guide.ps
new file mode 100644
index 0000000..d03dad0
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/doc/ida_guide.ps
@@ -0,0 +1,20250 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Title: ida_guide.dvi
+%%Pages: 100
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: CMR17 CMCSC10 CMR12 CMTI12 CMBX10 CMR10 CMBX12 CMTT10
+%%+ CMR5 CMSY10 CMTI10 CMITT10 CMMI10 CMSY7 CMR7 CMMI7 CMEX10 CMMI5
+%%+ CMSY5 CMR6 CMR8 CMSY8 CMMI8 CMMI6 CMR9 CMSL9 MSAM10 CMTT12
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -Ppdf ida_guide
+%DVIPSParameters: dpi=8000, compressed
+%DVIPSSource:  TeX output 2005.05.18:1637
+%%BeginProcSet: tex.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true 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/IEn 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 IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/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 A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
+/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
+setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
+restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/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{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: alt-rule.pro
+%!
+% Patch by TVZ
+% Makes dvips files draw rules with stroke rather than fill.
+% Makes narrow rules more predictable at low resolutions
+% after distilling to PDF.
+% May have unknown consequences for very thick rules.
+% Tested only with dvips 5.85(k).
+TeXDict begin
+/QV {
+  gsave newpath /ruleY X /ruleX X
+  Rx Ry gt
+  { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry }
+  { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx }
+  ifelse
+  setlinewidth 0 setlinecap stroke grestore
+} bind def
+end
+
+%%EndProcSet
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true 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/IEn 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 IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/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 A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A 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/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 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/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/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{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: pstricks.pro
+%!
+% PostScript prologue for pstricks.tex.
+% Version 97 patch 3, 98/06/01
+% For distribution, see pstricks.tex.
+%
+/tx at Dict 200 dict def tx at Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/TMatrix { } def
+/RAngle { 0 } def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+/pathforall load stopped { pop pop pop pop } if z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP  } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ]
+0 } ifelse setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { gsave abs CLW add /a ED a 0 dtransform round exch round exch
+2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25
+% DG/SR modification begin - Dec. 12, 1997 - Patch 2
+%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+% DG/SR modification end
+Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict
+/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1
+% DG/SR modification begin - Jun.  1, 1998 - Patch 3 (from Michael Vulis)
+% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore }
+% def
+a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore
+pop pop } def
+% DG/SR modification end
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
+div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
+CLW moveto } def
+/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
+2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
+curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
+def
+/SD { 0 360 arc fill } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto
+load } if ] cvx newpath 3 1 roll T exec } def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/Diamond { /mtrx CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul
+neg /d ED /a w h Atan def /h d a sin Div h add def /w d a cos Div w add
+def } ifelse mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2
+div /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+setmatrix } def
+% DG modification begin - Jan. 15, 1997
+%/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq {
+%pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+%div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0
+%d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+%setmatrix } def
+/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup
+CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0
+d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+% DG/SR modification begin - Jun.  1, 1998 - Patch 3 (from Michael Vulis)
+% setmatrix } def
+setmatrix pop } def
+% DG/SR modification end
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix
+rotate matrix concatmatrix exch findfont exch makefont setfont } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop
+} if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ]
+aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6
+2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto }
+ifelse } def
+/ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv {
+6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def
+/BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1
+sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore }
+def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 }
+if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if
+/dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div
+round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div
+round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub
+0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def
+/Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def }
+if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def }
+{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add
+exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n
+div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1
+dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt {
+dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt {
+pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup
+stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg}
+{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i
+w add def } repeat grestore gsave n 0 gt
+% DG/SR modification begin - Nov. 7, 1997 - Patch 1
+%{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash }
+{ 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash }
+% DG/SR modification end
+{ 2 setlinecap } ifelse /i y1 def /f x1 dx mul
+n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n
+div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop
+1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs
+dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt
+{z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g
+exch t L stroke /i i h add def } repeat grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET  } def
+/RotBegin { tx at Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 }
+def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle
+dup a add ] cvx def } def
+/RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ]
+cvx def } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def
+/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible
+/IfVisible true def } if } { IfVisible { Invisible /IfVisible false def
+} if } ifelse } def
+/InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def
+/Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit
+neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def
+/IfVisible true def } def
+end
+% END pstricks.pro
+
+%%EndProcSet
+%%BeginProcSet: pst-dots.pro
+%!PS-Adobe-2.0
+%%Title: Dot Font for PSTricks 97 - Version 97, 93/05/07.
+%%Creator: Timothy Van Zandt <tvz at Princeton.EDU>
+%%Creation Date: May 7, 1993
+10 dict dup begin
+  /FontType 3 def
+  /FontMatrix [ .001 0 0 .001 0 0 ] def
+  /FontBBox [ 0 0 0 0 ] def
+  /Encoding 256 array def
+  0 1 255 { Encoding exch /.notdef put } for
+  Encoding
+    dup (b) 0 get /Bullet put
+    dup (c) 0 get /Circle put
+    dup (C) 0 get /BoldCircle put
+    dup (u) 0 get /SolidTriangle put
+    dup (t) 0 get /Triangle put
+    dup (T) 0 get /BoldTriangle put
+    dup (r) 0 get /SolidSquare put
+    dup (s) 0 get /Square put
+    dup (S) 0 get /BoldSquare put
+    dup (q) 0 get /SolidPentagon put
+    dup (p) 0 get /Pentagon put
+    (P) 0 get /BoldPentagon put
+  /Metrics 13 dict def
+  Metrics begin
+    /Bullet 1000 def
+    /Circle 1000 def
+    /BoldCircle 1000 def
+    /SolidTriangle 1344 def
+    /Triangle 1344 def
+    /BoldTriangle 1344 def
+    /SolidSquare 886 def
+    /Square 886 def
+    /BoldSquare 886 def
+    /SolidPentagon 1093.2 def
+    /Pentagon 1093.2 def
+    /BoldPentagon 1093.2 def
+    /.notdef 0 def
+  end
+  /BBoxes 13 dict def
+  BBoxes begin
+    /Circle { -550 -550 550 550 } def
+    /BoldCircle /Circle load def
+    /Bullet /Circle load def
+    /Triangle { -571.5 -330 571.5 660 } def
+    /BoldTriangle /Triangle load def
+    /SolidTriangle /Triangle load def
+    /Square { -450 -450 450 450 } def
+    /BoldSquare /Square load def
+    /SolidSquare /Square load def
+    /Pentagon { -546.6 -465 546.6 574.7 } def
+    /BoldPentagon /Pentagon load def
+    /SolidPentagon /Pentagon load def
+    /.notdef { 0 0 0 0 } def
+  end
+  /CharProcs 20 dict def
+  CharProcs begin
+    /Adjust {
+      2 copy dtransform floor .5 add exch floor .5 add exch idtransform
+      3 -1 roll div 3 1 roll exch div exch scale
+    } def
+    /CirclePath { 0 0 500 0 360 arc closepath } def
+    /Bullet { 500 500 Adjust CirclePath fill } def
+    /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath eofill } def
+    /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath eofill } def
+    /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def
+    /TrianglePath {
+      0  660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath
+    } def
+    /SolidTriangle { TrianglePath fill } def
+    /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def
+    /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def
+    /SquarePath {
+      -450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto
+      closepath
+    } def
+    /SolidSquare { SquarePath fill } def
+    /Square { SquarePath .89 .89 scale SquarePath eofill } def
+    /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def
+    /PentagonPath {
+      -337.8 -465   moveto
+       337.8 -465   lineto
+       546.6  177.6 lineto
+         0    574.7 lineto
+      -546.6  177.6 lineto
+      closepath
+    } def
+    /SolidPentagon { PentagonPath fill } def
+    /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def
+    /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def
+    /.notdef { } def
+  end
+  /BuildGlyph {
+    exch
+    begin
+      Metrics 1 index get exec 0
+      BBoxes 3 index get exec
+      setcachedevice
+      CharProcs begin load exec end
+    end
+  } def
+  /BuildChar {
+    1 index /Encoding get exch get
+    1 index /BuildGlyph get exec
+  } bind def
+end
+/PSTricksDotFont exch definefont pop
+% END pst-dots.pro
+
+%%EndProcSet
+%%BeginProcSet: pst-node.pro
+%!
+% PostScript prologue for pst-node.tex.
+% Version 97 patch 1, 97/05/09.
+% For distribution, see pstricks.tex.
+%
+/tx at NodeDict 400 dict def tx at NodeDict begin
+tx at Dict begin /T /translate load def end
+/NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def }
+if begin tx at Dict begin STV CP T exec end /NodeMtrx CM def next end
+grestore } def
+/InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def
+} def
+/InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch
+Sin mul } def } def
+/GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def
+} ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def }
+ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx
+dup Sin mul Cos Div } ifelse } def
+/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub
+/u ED /NodePos { GetRnodePos } def } def
+/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup
+Cos mul exch Sin mul } def
+/TriNodePos { Sin s lt { d NodeSep sub dup Cos mul Sin Div exch } { w h
+mul w Sin mul h Cos abs mul add Div NodeSep add dup Cos mul exch Sin mul
+} ifelse } def
+/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d
+ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d
+sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan
+sin def /NodePos { TriNodePos } def } def
+/OvalNodePos { /ww w NodeSep add def /hh h NodeSep add def Sin ww mul Cos
+hh mul Atan dup cos ww mul exch sin hh mul } def
+/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
+/XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist
+Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg }
+{ 0 Dist Sin mul } ifelse } ifelse Do } def
+/GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform
+exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx
+dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop
+XYPos } ifelse } def
+/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1
+roll sin mul sub exch } ifelse } def
+/GetEdgeA { NodeSepA AngleA NodeA NodeSepTypeA GetEdge OffsetA AngleA
+AddOffset yA add /yA1 ED xA add /xA1 ED } def
+/GetEdgeB { NodeSepB AngleB NodeB NodeSepTypeB GetEdge OffsetB AngleB
+AddOffset yB add /yB1 ED xB add /xB1 ED } def
+/GetArmA { ArmTypeA 0 eq { /xA2 ArmA AngleA cos mul xA1 add def /yA2 ArmA
+AngleA sin mul yA1 add def } { ArmTypeA 1 eq {{exch}} {{}} ifelse /Do ED
+ArmA AngleA XYPos OffsetA AngleA AddOffset yA add /yA2 ED xA add /xA2 ED
+} ifelse } def
+/GetArmB { ArmTypeB 0 eq { /xB2 ArmB AngleB cos mul xB1 add def /yB2 ArmB
+AngleB sin mul yB1 add def } { ArmTypeB 1 eq {{exch}} {{}} ifelse /Do ED
+ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED
+} ifelse } def
+/InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED
+/NodeSepA ED /OffsetB ED /OffsetA ED tx at NodeDict a known tx at NodeDict b
+known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA
+ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def
+/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub
+mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def
+/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt
+{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop
+} repeat LPutLine cleartomark } def
+/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
+/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
+mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
+sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
+add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
+y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
+mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def
+/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def
+} def
+/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def
+/NAngle yyB yyA sub xxB xxA sub Atan def } def
+/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd  } def
+/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def
+} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit
+} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd 
+} def
+/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def
+} def
+/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def
+/NAngle yyB yyA sub xxB xxA sub Atan def } def
+/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd  } def
+/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def
+} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check {
+exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark
+VPosEnd  } def
+/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2
+roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx
+def grestore exec /LPutVar /SaveLPutVar load def } def
+/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def
+GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos {
+LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos {
+LPutVar VPutLine } def LPutVar } def
+/NCLine { NCCoor tx at Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop
+end } def
+/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub
+Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan
+/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1
+yA1 ] cvx def mark LPutVar tx at Dict begin false Line end /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+ifelse } def
+/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1
+roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA
+GetArmB xA2 yA2 xA1 yA1 tx at Dict begin ArrowA end xB2 yB2 xB1 yB1 tx at Dict
+begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ]
+cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines
+} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def
+/NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
+def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx
+itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2
+yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false Line end /LPutVar [ xB1
+yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def
+/HPutPos { HPutLines } def /VPutPos { VPutLines } def } def
+/NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2
+yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform
+/y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1
+tx at Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ]
+cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCBar { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def
+xA2 yA2 mtrx itransform pop xB2 yB2 mtrx itransform pop sub dup 0 mtrx
+transform 3 -1 roll 0 gt { /yB2 exch yB2 add def /xB2 exch xB2 add def }
+{ /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse mark ArmB
+0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict
+begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx
+def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCDiag { GetEdgeA GetEdgeB GetArmA GetArmB mark ArmB 0 ne { xB1 yB1 } if
+xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false Line end
+/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCDiagg { GetEdgeA GetArmA yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED
+GetEdgeB mark xB1 yB1 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin
+false Line end /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCLoop { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
+def xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED /xB3 xB2 yB2
+mtrx transform pop def xB3 yA3 mtrx itransform /yB3 ED /xB3 ED xA3 yA3
+mtrx itransform /yA3 ED /xA3 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2
+xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx at Dict begin false
+Line end /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ]
+cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+% DG/SR modification begin - May 9, 1997 - Patch 1
+%/NCCircle { 0 0 NodesepA nodeA \tx at GetEdge pop xA sub 2 div dup 2 exp r
+%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
+%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
+%mul add dup 5 1 roll 90 sub \tx at PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
+/NCCircle { NodeSepA 0 NodeA 0 GetEdge pop 2 div dup 2 exp r
+r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
+exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
+mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
+% DG/SR modification end
+} def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA 90 sub a add
+AngleA 270 add a sub tx at Dict begin /angleB ED /angleA ED /r ED /c 57.2957 r
+Div def /y ED /x ED } def
+/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB
+180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos
+mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def
+/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy
+add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos
+{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar
+tx at Dict begin false Polygon end } def
+/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan
+def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2
+mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def
+/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div
+def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def
+GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul
+sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0
+eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn }
+{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def
+0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2
+roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0
+0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2
+roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat }
+ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos
+{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le {
+r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC }
+{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add
+add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub
+mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t
+sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse
+y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos {
+LPutPos } def } def
+/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB
+sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1
+ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB
+w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos
+{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop }
+{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine }
+def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx at Dict begin
+/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def
+/LPutCoor { NAngle tx at Dict begin /NAngle ED end gsave CM STV CP Y sub neg
+exch X sub neg exch moveto setmatrix CP grestore } def
+/LPut { tx at NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0
+def } ifelse LPutCoor  } def
+/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg }
+if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED }
+def
+/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if
+r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED }
+def
+end
+% END pst-node.pro
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
+exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub
+dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
+ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict
+end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{
+dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1
+roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def
+dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}
+if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}
+def 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 0 N/rwiSeen false N
+/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
+/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
+/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
+X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
+/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
+/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
+{userdict/md get type/dicttype eq{userdict begin md length 10 add md
+maxlength ge{/md md dup length 20 add dict copy def}if end 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 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
+save N userdict maxlength dict begin/magscale true 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
+ at SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{
+CLIP 1 eq{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 rwiSeen{rwi urx llx
+sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
+}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
+CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
+lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
+/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
+repeat grestore 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
+%%BeginProcSet: color.pro
+%!
+TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
+setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
+}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
+/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
+setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
+/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
+known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
+/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
+/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
+setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
+setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
+0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
+/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
+setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
+0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
+0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
+0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
+/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
+setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
+setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
+0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
+/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
+setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
+0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
+0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
+0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
+/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
+setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
+/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
+0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
+0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
+0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
+setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
+0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
+/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
+setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
+0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
+1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
+/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
+setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
+0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
+DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
+setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
+setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
+setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
+
+%%EndProcSet
+%%BeginFont: CMTT12
+%!PS-AdobeFont-1.1: CMTT12 1.0
+%%CreationDate: 1991 Aug 20 16:45:46
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 66 /B put
+dup 68 /D put
+dup 77 /M put
+dup 97 /a put
+dup 100 /d put
+dup 101 /e put
+dup 110 /n put
+dup 115 /s put
+dup 116 /t put
+readonly def
+/FontBBox{-1 -234 524 695}readonly def
+/UniqueXX 5000833 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be79011d1f5b667eed85fade30ab2ec4e1c2f
+4fe750cf9a69506458071de8896261c001b1c290937fa42a1fa87de406e9f86a
+4c9c0f03f69fba719114f8ae51040a4c03a58b6f3de027f6726f32743dce7395
+14c2c6f3c2de1aeddcfa8eed7da56dd68dbcde33c29ff7a694769049e4325ec9
+61b2df16add2ad46f18781fbd63eec62c26f1db41e6a666a09886382dceba91d
+8ff7cedd64ddc8a2f15fe34076a064c46febd1f4dc3707aede0ce8af161bcb8e
+4ada202d0954baca5be71c28ab8bf32fd72029aa07f27d658a68f454a4bf386f
+6314224d16c7f0a8624f6b86319a4e2fd178f596f3b20db032ea28c157a68a69
+fad2bc88881658d2286c0d4ef061bc070c3145f2a37ebec03f51de7cda34cd97
+7eeebd86b00f9758b3a496f41d9a74279ef3c6322dc54945f95062c5f37a1e51
+cf7eaf45f2b3634b2d7d01ec3b298ff35b6616cd3020e096f6c6aa2bf04c4a93
+61c19f3c67a28d936ffc8120f1e46980b29bf54047c5f1fa48e67611a74fa434
+3384f802a4079b28b94681e119ab0c1692de5bbf426440ad1023506cb80732de
+c64d9061869cb34de924d2c26e404b7dbd9be55b9c0c5ae3095c15d278adbb49
+12df1484ed2d73128e5d9c1f1a3b9ac19e2ce5366c96644f5b3d3eea589caedb
+586fd9b8f4df32ec910e9b7434d5bbe57e03892eb03890567df5b811afa0da5e
+929d456af362fda0789aa0cff464e238029294fde86cfc8d7d33d5c98b18c76c
+319811e4d3d49560f2ac39103594ec513e0b1377c2c3e22979866c19b61448d5
+a7201ca4b7538aa370f6347253b0853d4c5d575a7572f93cb73a598e2e26b11a
+d46a1126e44e7e1795dff01562316b6ccc6678663e66a73db285746df3f4405d
+d51714679581946ef72104f6915fa0e3e31d40e5c09962bb071055a7b8e6a533
+e288dd79c77bb5c41a82633f7ca8e6f039766d53920aed04f9528c4529e96afa
+18fddccf30774b21fded23cddf6f9a78ae6edb1db56e9e3f45e5721f7b7c0e8d
+17bfb449b0a02edc1038f3257089e190d8e3dc5b30e7a16b556c3f2ef19f80bf
+b796635b00b9f0b0a172917069a9362e5ab7d7ed9644f1f711ce997d7dd14519
+1d86e8b8bcfcae86776d342aefb684519942d2b5d9a7429517b10242ad7d689a
+545595b8c87eb5f060ed4fa25977882071f34e485e5c3ef37d106c398bce1970
+2bfb26aa1e289c87425e06c0b4f107df69d4f5e4962b73de6874c56015b5e316
+e5b8f485ba437172803e0e7d044c301fab0f7c064e52f70e7243d76a9b5b1b93
+81c545874f3b4d3c1cc4c097a87452694bfc7fb289480292bc23a5bd6f6f0201
+cb9f0847555984636b3e91875f57a107d76ba61003d3b27b79c381467cc6294a
+192ad6ad34e3f866dd58e4de36205f82a93295a3378e490c691b8d02ca7896c4
+bbbf11713da29f575409826d733ce4737bb5802f7bec1f353742a1f80d90604d
+d40783b6011189697f28f3b0910f52fbfd05e7f74395a8825bed352b7d31399b
+bb5bc4b458f963840fd759fbe4961021f88fbadb9940bacf7eb9e7e81163a1de
+e96fe6b7c4f293a14ac40717802532c43b61a30f2af752daa01d59d0d3ba8d31
+2ec42e0b866d24948794b02d90ee6e7b408560d768e51d7be76a2979f2e13b81
+ebe7c7903928a071251d39c5d11e5fa50fe943dbc6eee23c6e8d79d13de7b956
+ea7217a7be2f5c52ee6ed7d2b89d436f5ac970552a28b1dcf7823db8cd4fc835
+7d0510b5ad0486998c4ba8eb9d77543369501a8ed54081abe39992cb043c4838
+a3b0a03bf2e6833cbdad59ab3f91322f83f46ee4f326fa9803b3ca9e4c77433f
+1a0a8a39459ca87732924faeaf9e9909ee10a312a2c2e475fe1441923e12253b
+dddb15c922c399ef5c599036b7a3d5737dcd466830faa8516120d3e7eb5881b4
+7d8b92a4b49c4285148fbb3bb84f9540f43ef393d4d11e17576da66bb68a7e93
+2347b293cb01f4b4927d23b616a05377cd8f77df773b3ab017bcf2586d2e06e7
+96db4a7472c0d68666376760ba4cf095f99dc0cff3ab8be353cb8595a0b4605a
+00d67efe102b19fcb371539ad1600e05b23c7dba7d3c3934c2b962d59d9d51fd
+6a8e55176855f42ca6c8ceb2c7766203fb25fa14617ff7d3ca3a36ce57f43f46
+b8239c8af16eb7d805a73de8364fb38de9afdbe326d9070650b1611e82006a37
+2821bed2978122f619c18ab3de28446c29b179a312b97da9539b3666d468a92f
+9b53b3d428bb77c517eb0b08fa9c21f2c55dfce4439e24f59df02309a4c06f92
+c60b50763f5753cbe70bff6247390c1fc5cabfdbc6668de35efecb1755d78d56
+a216caa804f93489ae155e1eb3d6fd6a588e3f3b9e03166b3bf2eab3b1914841
+c8b55c82c4299034c3aa6647946f94a995299d932d96660ec8b68ebf1456486b
+078280557f069676038893f370115644a53cfc22068fbfd9230ad073e358d762
+3de3e8134f33b17f82f6a59dab17d51ee2eb1af3c8c0fff32d1e309342332505
+5ba5f356aa0de903dcd808f99e595165ac91e91ce5e8e1c465868649018755ca
+0314a1b14e663bbace896035c0be9933db7c3219927c61abc14e8a4d865e9526
+b7436812364e353bd649ca16beb2b804726aca9193974825a2b356640bbc0a74
+4bed3f3fc201d8387b8c6df4fb207177cbf5152129639f62c841ae42139f5f51
+cf2f86e5a06f044897c57b1a948f8c88d116ee6f4a861af1b7aab54e8f439ca8
+4d607cf0fc63f0469e6c99d3ee3e5d3a6bffb6928ab91c8c24226d8a66097feb
+305d45868c99fa4c076e0247247c23d8204dbfdcd3c9d3072aa030747d6f72d2
+abad4002d9b3c64f520a5a5a03577dc838e616add00b4b830429c80df57b86da
+0b27ad1363a7efa336b1e1df377996a48da79a01b5813eebab2059addaac1d76
+569082eef0fd99fafeb574e9f05997f00392a4b5fe54e948d757c021af71b77a
+15521ac7710e72c3881fc95b3a7d234486f774a80bc7332a4abaf0934f8d05ef
+2e99706849db4215c08d09bcb9c22058f844cc52edb10b0d0bf80bf70fdaa22a
+df00d6c8812df422557f606e50de8bc6c521141d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: MSAM10
+%!PS-AdobeFont-1.1: MSAM10 2.1
+%%CreationDate: 1993 Sep 17 09:05:00
+
+% Math Symbol fonts were designed by the American Mathematical Society.
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (2.1) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (MSAM10) readonly def
+/FamilyName (Euler) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /MSAM10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 88 /check put
+readonly def
+/FontBBox{8 -463 1331 1003}readonly def
+/UniqueXX 5031981 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a
+e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4
+d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828
+e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4
+7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80
+523f59a30d195fcf9b9fce4ffafc6f33457e3200f0935ea98f1a0cfaff49cfa2
+d877ff805620cba84126dfd175a82e1b4c6ec58461fce97cdd749a012e2c4243
+86b199a97c306b282350cbe5af90cf1d8e7371dcaedbd5fa3346dd3e558072c5
+fd51a2edfee6890f62efd1b552699123f4f52c2817dadd5ece30b3bc178a3ef4
+f45fd8ad0ee5bf30db5f9eee9ddefe249f3c349a886cf9130cba68ae559ad719
+c439930ece1d52d38366116c390cbeabb8fdb36811cf3b8e2416825e8c880b24
+6521ec6880ebe7f127c8741c756b29e1f89e3fd5d638a7bbade8c3a0fdbbf7ba
+ec37cd372afb2d9dd25d509726d20a05914e418f6b7e759c440beb61519df02a
+06734ec1226890d17c51f25f775e6879fdc231bc4d7fcb4b33d04fa273bdb8e8
+f124171714614f8a94e98a6c2d6bdc1254913999f9c181e42c0886556cdf48af
+92a265c1eb06bb30fb2745840c17bd31c7b8bdfd37dfb9643a418a2eaae14094
+6752e0a315207aef85c3c2630538907971ec1b05687208571a3504bb3369b5c8
+9a43e5abe343d0599fd8d41a1bf01de49f5856bdd67d63a2b3ecea75d721a6ca
+0c8751ab41e892e9cf674218dd44acfd40019bf59f4d69ea40d5cf9068a6ff96
+9f8cc772b920baf17334833d732431a2969b9a30fe38bd44772cef653935a957
+af61dd568f041847ccce3c587656cba7bbf46d8cefec936c6d34dbe51bc04929
+0440354f3b29ed8e6b4f21ad53b5809779d67339f284563d54ed4d2a504b014d
+974a31c0ceb57b364af519bad4e85c41d521a3ffc26dbac555b42dc191367152
+1d60c30b95b5bbafb3c7d87a1c043ea5f0e6dab83a4de99a742e75f02837b923
+c50eb478ac4131ee604e3d7b784bd8c93eb9430291d452c21be0495718546333
+66a602a9f142a563fdae3c8d40de6a8aa581ff3172367ca325e6d23102c5c6a2
+02cc995812b50988ff4b5f53a79b9cab51abb0549384b2fb5c119db69e57acd0
+f823a4543b5bf49c4af0a8c247f64c26bdac42b45a88c1af99459bf6c9b57567
+d71aead98624c118336ea8df06f7d21bf526fd146344a42218e2fa3d4f8e30a1
+65f5c085f649d43110877bd3a7359e35cc6df30d1730fbfde1896822291d1513
+576a5a779b9259e3e032bbd12057c8b17d7bbddf8ca3511925d2b8ad09ba796a
+ba33243f8bd40a7d6839f579ff77ea17da0b98f2298332307eac40a8a9c3fe24
+815b864c6c6b0cafe94b92c1ecb5709a5f85fd9837e560b7d47e784225387ae2
+b633c40f52a6d55606af9548ef6d8e04cef04fe05a84394654d4acf8496e2cb3
+dbfa14ba5798f7837bd0ca59b3b5acd45b9c76f1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSL9
+%!PS-AdobeFont-1.1: CMSL9 1.0
+%%CreationDate: 1991 Aug 20 16:41:23
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSL9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSL9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 97 /a put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 120 /x put
+readonly def
+/FontBBox{-61 -250 1150 750}readonly def
+/UniqueXX 5000797 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd800bcb325468c79ffacb9cd3036f2ed7bb65d
+c6f12e33dd6d45b61272314f98990d08c0f8274e999f4b46af4b5c5da923683c
+960face50087915d2044d7211a18e0c22967ef89552662ba990e2dfb9267e09e
+354f41e871e612a4d94de3c1b4c6c54c7a054fd7cc0696a89c7a397b1d624505
+2e0c0ad0c5ce92a01bd0890730e2863ea92bbc1e036dbbd96c7f4f618a83417b
+9d46dcc4c226c30353b46dcd3d7f12dcadcd658fb2fa858840c4a0b11ed519ee
+b77ad0fbfd18b449569ef3b18afcbd697d436ea1bc3234bd0aeec1aac6eaa487
+043657562d0042f41fd9c42dd2b59f4aaef65a9ff83abcefd8f6df3748cf9dbb
+bda9e56e15ae7a6081894bb385baeeada06923f9c1948ca5076b83ca75d17844
+83cf2522178ec7a96a495a21f9188c0c190651ae49eadfcb5a1574032e34137d
+29bd1dfac2cc8b2f3e0b31491cb4faa1d861839f6ab105692e579a236a85a4a2
+dec3274ee7e793af7946191bcb7cd853fd38dcc02266138af3ba0de0741ac0e7
+4d83d57e5a522a7ed1ef9774b6b913e10081436d2f3beea6722d2e285ce94d15
+8511306020455c85e6698dd9ce31711423e1f09e7178ea99f7b0aa452e1abaa2
+263a474a7804c21b5687d42443e071736a6bb3ea787a0e632785b252d4f83484
+1f630abb6a705ca58310a344acd2e9996f2c374c618758d9ebd68703cd1eced0
+9b6d2c7de8158dc15d8330e5efd3bec45d193baf0c36c98e0d23ce267a2c99af
+6b003f14b42e6ce4c82ee16010685c7eeca24d7c5794bf91fe7034b551077511
+45c7cf84e39cc38f909251caf99c29dc463c1510c782fd92902761f7557fde57
+7e5ba583cadc053198a401763b8d02c261407bda072acb6ae6c78a050419d8bd
+260d4013d28e62f8ec13f965e07ac03394b55c9ab8e069c8c445cc50fe136e82
+2ba18d6c612b3133654dd80f2410633de88ddb9df406813e9d04e437a14f54a2
+41a3b393f56f4d238df5695e67f529c60f52e341c1d622c2b950bd8633461259
+ff9c502bf78d13b5670478844bcc4e8441ec80735182826f440b700e199a872c
+31d276f977ae221466f509f46220b01fb1e42b23bec4fe280fa96dff0c92b4fb
+cf36f7dd85bcfc099d9af8f45dd7eafd10aaf796271c1236d6f976c8a430a846
+797b61c25b22d7be4eaeb34e7dad9669790a0b13172380d38e3c253d46b8c902
+723a82a834f7749f34643745ec94f30a455b81cffb80d4ae9dbe0a46084eeb0c
+52cb3231ae73a6278f3349e73a9d5d99bbac59408dc1304ebbc9ab0977c20b5d
+8ae64bd6cff5b66c3e30f495cebae55929fba03d126b17d1f5f236158e56b488
+76267fbfe697302e4889655b1f423f1b389617691d00913b69f8223ccbb0373d
+93062841650bde4d366a84859718516bdc78310d7b371f69fd970e1fc0e71cb6
+e98ca35a9806f8078882db7d48e62f184454e216581b4543b3d844bd49144ae1
+01b486777e87e692f1c048ceab45fb98e79eb7c8edab2f113a5fafb940d78b96
+0b1f900dcd2acb49164d1dc639f4a157562c5a4296872e018256165d765ec220
+c52391bf4d19153187d1bc489a9d2d74f7f0e9f0cb047ee5cffb659c54c7ed5c
+ae73c126a316bf1a591478de15fcf1c3f9d6ab07acd538f6280013b36f41e8f4
+79401a6534fe966ac101fc5a91bbfeccebfb9bfe1b42cca1ddbfc97fe34e50b3
+505e7972827a88ec9072e5bd600f5bd802449268a179b1fea85acc34a8a51471
+9c4d9e5347cd3a56b9b1f495d89fbca73a3527eded861407a27fbc9fae3679e4
+2e7026dfcc0c31eb9dad362dbfc6e6ff30b4243d42614ffa33ac4e2630ad689f
+dec962166c7b937e59a9ea26a8f11f0d4ff1608e9694e37ecc30721d1615bbbc
+a5fb2ed187ce4cde0b97d7f82b04bda4301b47ef64306036810c5123bc13d631
+05339f674e3b444450fe5aa618645a51074112fba78d2a22e3767f319223246f
+9e1b335f8c56dba72ced8db92d2da21240730edc0222134d9379fd19e0899a5f
+5343db13440e907c6ca0816649eafca9a85f2cbaceecd8c0e01a83bd2fe956b8
+8cae5aab71bfce058f4aa07ae4e691113a1bbf269aed3c5063d4fad1c6aefbbc
+a1af54017efbb32af1e267015db0f2076201310bd6df14996f9f9d63db28c08e
+5aeb99894dee28dfa09baf88ba136e9adbcc969c25998a48a2759103ae8a8355
+9d058137f53c64a4fc3b62c6a56a959bf96cab96879c1a9f8b831c3f87078591
+47cb9d10b1b10ad935d226956cacc96371822b24da9ffdadb9f60b24ec873446
+3e03da25ad177fffebe151bd869f3ece9037c8381b222e434ad3abc0e71a25fe
+647008833729ee28c82440b9de20d363747c9f6d932167a54e8165acfbeb7610
+82085cc42a4967c67c362670289f6b41e6f1f5158d3f36097277c1a4c6b95e8b
+2e2a0a855f0a0e54acac887de7de397d4cb50255e82c9bf8f7394ab4769db954
+28de36dcc09bca0fbc95d7954e3d2e33619bfb177d008d3a020439cba08ee0fa
+69414f02a2e9264de7f49224a676f907c08b6e605a253cabc69599e9dfc4800f
+1aa754b0cb83dab6c83164230f776e276f381c371093b6624c6f056829b5180b
+c9e806b1278304dbfc8b4f2ae668be633efe6a0e990b33d96bf202bc0ffb9734
+addfae7f3ea87b0d3febb39ee973fb13f0f2d64128a7871b6ca98bc4f5d8b2d1
+899c9468ca97575f4daa95430d6f04edaf9117832407bc6e34bedc03b48b24c7
+9d93f88fa301061f96a05d491d0040602854a97a91500f9c0a4705166c4f38da
+007882c49e8129bc95b8b83222acf1ae2809eb5b0341bc5e5db5a5d90a30e62c
+4ec45729c835855be78b7934d125f14c02374c858e9b5c12a7c3f6e120332858
+7dd40d873d9b296f72d7e73ac8544afae0164e7e43644a5a8850e656fe9605f7
+3170659b573cd73c3c774d8fc56733a75ce19a8c83e9462e0c8abf4bf6cc26eb
+49435dc2f9fb18a71519853d98bac23f7ea1436b53c427c817ef8c639cb666b1
+1b8027d0205cc419496802c6ab151adaae55456df8f9c0bec1b3b3249af4fd3b
+15e2c2d628619a26c42d4af48870e7307b83716bdc3c10914b961ee54f95ce07
+e34ad853c93c0630abc3897ca72a0b35743355a379416671a5376bd7a8bec4e6
+7e48a50b52fe8769765ba4710382df144b3d71cea61ab3eb9f7b8ba308a0f8f6
+c30341d80c0649fd596a156d553cc7ea5b6d03b6df376d8b15d59fab6c835184
+ed84801e845a079e2ede1484ff9aa429c89beaf072c1db8f5b23ee573e848fbb
+46e5051daa559862357c55f039d8feee8979f62007ef9951c8e8e2a07c740806
+bce0beccb327a9ac360a6aaef0c4f4e31a2cbfb1227f67220acbd4c6fcaf53ce
+ea35226e5dbd6842d106b72bb363c6f7750dcce668de7895adca3b8dff795a71
+19eaae1f254ad3903af0ebf049a67c9936aa1b2e13d7f3dc8d8cf87b05259605
+2a26574c426c41967ad095c580c1dae2b1e05bb6097e209949dbd35e32c9459b
+14f32133be1784ade6ca925988d0e7221130cdc9e02012036051712f1410de1f
+c2a4ee597a856964abbfaa7af9961f67ddf80696fd3f62b589f62d8eb55861ca
+3572691e8d780b1a96d80de3e2851368b04c1d423f67fa50a7d9014a80ecc3b2
+b41abc6a549f40c449dc81e48fb5f93a4b702fb956ccd620b0885a3f14422b3d
+eef64ea2fcd5dd55abbea8d62b74c54c5692038c6c9c1a947f0d5ed1b5795151
+9a77aeb0e5c8a1adbcbf44f55153713d5f2b098514bbb3e236c5acda352567c6
+8ec4a47b842e09c76f6d7fdf1215f48292896d148b36e02b1b900dab8ea83634
+9e6238fa6b3cc465d194e36c04edc415662005dbd87c02d789cab736ff0cc96e
+a96960347880470a0667ce31ac0ef66e69450566e911dd9c2bbb1c96e11627e5
+be53892a8b1eae82eee3bdc4524464c9fcb6143ab0d83e89fd537ea706072c99
+df6dbb577871d9d36e85f539c92a1fd347a1c28cbda448063e84ba887d61dfb9
+959a985fd3f7edfeaeeea63f0467dad457560172766ade0844c4b9678ae078c9
+2dcbeb7f52a19ed3335284c1cf69922ca952ac6a5b9d341efa7529308edd1ec7
+50e14d44e83d3f4e72a8bc178f25f74cbebf523c07c526d00639c0478f32e4a9
+60a9f96f72a2355512b4f591c8952b9c57aede14dd12d91fb6a176667b391b0b
+8bf45da0f81cd11d9493fe4d0e6082459e5270bd54d2f56725569c65c30de7c3
+3bcb22d9cf7ab085aa035f96728c3183a6a4827a36bb3bb5c071d7b292616b61
+10a249c86cfb502f1aac1fdba5b665ad95271fe5a2f83242db75008685bf673f
+06857d2aa33526907022d9927b865706388bc5cb6e799ab3d4a9b92b19493f32
+e70478db69c2f659038744646f976917fac93fc65136357b0469046d92f2676e
+4545232bd46adebdc0677b223bb963540f715bfd12c37ce7dcd375450f898e0d
+e7a5109cbc7604f3ed6a91e28941d000b08432f8efb40c1bab76d486d84db2a2
+7b570d229f6f5be12e6c27883ac5a959eecad10aa2ce003a783c1646f9040f99
+29a68ed5c05adb2d57a915765cb39cf1f45bfd9a833fa8b7581d09b4ba9f90bf
+9e28c42db2171865fa68db1f7e84c72152bdbd90a55e2897054d3e9f9fad73d4
+6ce3bd37c974ea48fe12fa5a24d182ab646aa14d7cd54adead0f2aaef5a82297
+60da722784110a26ea02b83073e39e4298332ebcc664c2a518fc2742a66ebf3b
+cef1ebbee54fb11b2484dc959c4b34400298f439ced15747ce5b7f349ec1db53
+f32698aeb6e6195de7754ddd8d4f0e77208a7dae8b1c627baf13ae4e639b4362
+9cd0b00cae66dba17f6d6d960fd88ab45641bebc903827e5a9e2bf918d4ecc33
+e16b7246eb0d0ceb88ce2400b4f8e25e977b52100a6110e645ad54460b6608ca
+17851976e84fd127ba681dbf1c6842a79982f0b034ebdd25f5ababb5ea7f620f
+8cafcf92da73ff1c867ae40fefef702273d9bc18c3e4202a17814861b70051fc
+bffd038d8bce5370dbe1cc3632dfeca7f66c1f9f5377a9e1b6e3fa5079fdd460
+fedf7acbc89c9e02d28327031547a0b3200134bcbb02d18d9146de7381939a5a
+0101d60bb37ab2352ccf4988375ca2f2a8dd34e8b67a748f5785c1fb44975832
+3436035d298c832269016a09d1587c39b24d6ca6fcbd1d3cc2497151c102a658
+567e36b8150de89e46556159cc0bda983c7d55124d34c0c90f2d554b28981209
+0c20e0fba1191ff6d20cb30b86b918355f163e3356893230cb3d48df4405decc
+10eb22311fc26cc82ef2477cb5f69798ffd04d0de6a654d6f6b63ce3e6e0f9b5
+94ea24870690c5f41301e822b9e820dd6d2b589da12e3d9b63d5987ac5c85218
+99f869e9806965235b9dd9960506fdf27ee32a814226c71a920c925ac6338a5c
+721a29a92e66f554cd5228cb7b1296e819532ee001f59ddae6ea39eedb73f785
+4593e198e395ff470176c295b723435dc5095f10e5dbfa
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR9
+%!PS-AdobeFont-1.1: CMR9 1.0
+%%CreationDate: 1991 Aug 20 16:39:59
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+readonly def
+/FontBBox{-39 -250 1036 750}readonly def
+/UniqueXX 5000792 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b448685bdd20eb05d5e7c2126132e33a59a7170609
+dcf4871a5d023c9ef57d3362d9f2d7a440bb69bf653364105f16f4d0f03582f9
+aced3d05cc76489b16e3fa8a446094d30038b06ecceda269f2eab9d19a99c7f9
+39f9548f206c5a457a19270b2b82c43b091dfc5573468eaa3e7a4a32f8042891
+d85e4b180fcbcb3091d2800e54c87d84ce9cad6869b5aabbbe47f40c68799893
+d22b765295e1e69e33aa048b7ed98ba480ceca91f3ebf8ef85fe9a3976909626
+b95ac5940d53f9b02215d84a44837ba25ed15cce0d504f1d335065594f3bc824
+5405407591cccb11cfd4645da60d960c0b93f187b0cf7b105543c0b70f89af5d
+264b6c026e3ae646acf145950202ec73282111e3e601cf2bcde22ce3edf6db23
+516481420f26552ff4472d749811f27768150450d0d0ebe3c79f999e99b5c0f2
+2eaebb12d97782b1bd91b2a1f62a76412548ad53c0dd411d4a08c0f071c2c218
+63d9adb75a4621803ecb84c2bb235b620b658984b2d8e0c4637e2811bc8f0d04
+6c8935afc70141e1b2d9c23bdb251d304b3378faf8928bd09686aa0340fb0cb1
+dc48c996ef91530ff078666fad227a3589f50b605267212d3a65ebc1019a8eec
+9a0739a00279471a01e1505c17658c10030fae32f274fdc8c8774b0d5406c384
+a1d17068dcb0c2575c562fdc5a2176609bad9a2c255e426a4325a4fc3053c7b3
+2f35f7bbc9aa50135f30223360fa2fbf019294b3af98224c5c05d6038db08bc1
+4103010094dc215ef9ccfb96b237851332c8ed81a9184cced4edbda26b381f0c
+73a2bc4a92533b0e667e82ce49ddd8ac9e34d9d40fd4b5b9910eab3b1234bbf3
+af6608d66eaa424c158eddb75fbe39462708da8f5c18d92fbdb2f534598a844a
+e076f96a741f8002af3b38d7e4bfa363f5f5d1193014f71b97d4b3e6b49bf0d4
+e71db7a5d500ea99a03dba48b2cb68bd7fb7cc8610de7110c0cfe02944974e5d
+c7167dae756ed770a4230cc4476ed4879a0abf80e1879513c625f0bbb3f365de
+eddbbf53a0fe3e00eebca1129eb16003fb7ebeecd007460cb02c55a0f8cf92bc
+d75a91d576f7a04c064090482b417c14809c0123dec9b8808a5c680aa41e7ac8
+76534db8f4c55283cbbdde1069db82cfdab8ff45efebddbef77a76b93b5dbfe1
+cfddea913d9ac4c5bdb3532c767da841b121881a9fb483053133b0334995cea6
+693c0e0fc4c91af19602f5b444206ae955757e4fab2022d71737d156e3603a8c
+d90b4f7e014940ab180eb2711ca8310f20bdc3cff37ec1d25d88b5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI6
+%!PS-AdobeFont-1.1: CMMI6 1.100
+%%CreationDate: 1996 Jul 23 07:53:52
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 105 /i put
+readonly def
+/FontBBox{11 -250 1241 750}readonly def
+/UniqueXX 5087381 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930e72218b3075925ce1192f11fc8530fcd5e3
+038e3a6a6db2dcfbae3b4653e7e02730314e02b54a1e296d2bef8a79411d9225
+dad7b4e6d6f9cf0688b69ba21193bf1495807e7a1e67ed7e41cc25acc04702f6
+8ef703e3d45722c1a91fdef7100a48631a02a6f02a08c6b1f9b4df8310385b86
+8632718fd87119a233f219d9411383b7fa9f3e4780d8c27e2e89e0cae883d664
+c3eac57a3aef8988a2e9f0f8c7f53e0a80bdfc4620e21287d0390e1975398544
+7f3ea66401024bea75e1b4c4437b7bb188f76f96b918ac7c6ad7e8ae7f21d8c2
+790f08cccec904fe48ef39e597ed4d4237c1d1f596f5906b19ea308020f7a35c
+168e327ec3246b1dfabe912f6b6daac09974876d3996e57d180261110db05f15
+e3e8eebba3d90b5764c03df3033a1ed678ebc679569a2fb297378b25434c0f20
+5313ecb8a952f07242d3ee731b0cdc086a4481178a3d65129c47c09b22e9c431
+e11b3747b94c26a757c38d06001798c6a568303d541385244b967d3b1786edea
+f65bb53c4c2fe75e4b1b15c2c78d930b4296c80f08bad86012451edc8e9f0854
+c3b390a16e27b11b3d45a9f72eff8baded2242dc928a61685d79e09681c97425
+5b90a498614cf560fa5b1718981388268ba206a96989e6d0b5d485d9aca5594a
+e67dd7b34d8a369adb06647f8aff8814d6d9cdc04a4835918e557174c5bc0f3f
+bcea9907a04cf93c12727ec40db3f2f77596dca477862747435bdedacd9b2311
+6cc97fa47ffdd7d897fb6bdd5572e35d34e7e1cb5e7273a4ffd86525323ace4a
+84e1297028c2bd5469baa2e75d19360c2c9042139d5e7dd4390a6a3935424711
+de21910126d750ae279916ceb71da3591d60dc62db333c5021e2c1cd61ade51e
+9391472f46a58f4d47b46f95c41dbec5e4518446480e8974913480c0da9f92bc
+300aa0015bb8f9b3c2a25d5120886f62b2df404d1b579f01d97195616f552934
+e1f979b7ceffab3ce61dee1e4f585e219043cd509c73738a8640bc56f140f093
+3a2a0a5aacf4ab20455d4fe0ba59a261a47c000b10d468e73ed6d0b7b9297625
+d712e1b77522db962a08c15b1229def94f7102455440c79fb38d12693c4d30ae
+9da40e05613e3de42234d7636cc35a394dc57496a409d703d1c0a3a909c278c5
+64d1e878e9e78365efa363cce7790b4b5490a8e281528a9b009d4cfc917042d7
+8d164ecf2f1a8a9134a81ecf3f940661adb050e4d8db07ee36aa95e8ae818677
+c78ae35f7f96df9dd822f2c977157e92b8cac5d14b0e6edead6f3d9554b600d4
+7bc69037a4cb8dfa05a66eb9e938d92a1cd50ba41fc486a415cf3b1eec386c0b
+1b7471f4bcb055db1419c1c9fe9abc383116d4efa92cee4ef8b8efd52879
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI8
+%!PS-AdobeFont-1.1: CMMI8 1.100
+%%CreationDate: 1996 Jul 23 07:53:54
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 190 /sigma put
+dup 61 /slash put
+dup 71 /G put
+dup 74 /J put
+dup 76 /L put
+dup 78 /N put
+dup 87 /W put
+dup 118 /v put
+dup 121 /y put
+readonly def
+/FontBBox{-24 -250 1110 750}readonly def
+/UniqueXX 5087383 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930e72218b3075925ce1192f11fc8530fcd5e3
+038e3a6a6db2dcfbae3b4653e7e02730314e02b54a1e296d2bef8a79411d9225
+dad7b4e6d6f9cf0688b69ba21193bf1495807e7a196cf14c95a4e02f9cd2da8c
+db2546c6df52e524745992e18d9ff87aa25e4e1800bbe4ebb357c6ef55ed6d03
+6d3a00c1ee8073266c21d2f0ac85d656abf61d7e5a4fa87da8ec3b5329e434d0
+d2adab706b42a2e5331be5295399d803ccac03f631f01f39a022fcdf63486b68
+7d15ef284a77def7fde4898543e7b5f7ec267756103e477f547cfb8d2311c4b0
+09deff56085f5d419697af1846c8b88c1bbbae149f0f19ca3c8dafe19cec48fe
+6b38357246d8b5cef80b53bab4cbbbe8bc8318cc462a4158258f456e697f6058
+86010493f252073ee4e4c9531f23485415ad6bc901bbaea659ef701f825f4b6d
+5c9bed0dce7b63810f906b33ea4955531ca1ed1fc120cc56dc1e277a33222cc6
+c3a97552607b865783faf0895cbeccd0df54f57bd162a88494768435eda71a39
+69718c0c5912d3167bb0971546d733e735aa9bcd89f5aa154656031ab3f6fe41
+94ec225ad03ab8b67a9da43ab365c4df17c23e79f685c3b6fd5b654e4a6f2603
+6cec3a8641b0b57f93eb95f9e238832aeac2061f3153e0f375513c974f1c38f7
+b59edcc94716f2862cf71c9a2be8430985da1cd813b1e1c1b9310564a2eb1aff
+52c190f50fc981dccb64bb2c1f7a62c216f211c162c2ed1c554ef49fbaf12b31
+aa3b2a80fee259dc0a2a4242869ddec7c29e2941792b28bba7f2c6f77ef69638
+12b07d6843f33b51e01c8626b26edc34e1e0fffadede5fb468e8cd5de7e5a64c
+366967578f415484d122834de4a647541d66989f7d8b25d1712d8d16729bd9a6
+472e90129a2683bfdc33e9dd68460c122b1abb8107411de0724a72899991d062
+2da33ef65bbed2863fa481023e1ee021139af8834b00e82bb47203bee64717ee
+cc3b3c6190eb4ce26833e6b486023f5211fba2fd06d96dd3abf36a0159f7c0ce
+9c630fa5346ac7b3f286c99830d8964170f69c6c6c27705636f32108a8d2b35a
+ca525c8af34a0e906ed168e03584216d4b9408d7b6751c3835d4b4034f36d4e8
+e03de4d849f96af8f928b14d361883f7e235399eec7b6e686c244bb76c1bf047
+e20c26a638ffa0eaccd8fa05c0b9a5547ce2bf8a8223c6b1a9d4c1f7c182ecbf
+c8ffae49f6c541f71241dc6cad93d825575cb1fb5cb9bc2258e4b8778ed765a8
+fc800c2fce83c7a8bf169d909f60a22114b3a62cdd562637e839473af7e61409
+bcdb44e4715679e31e97c895ede5e386bee720135d5245146396eba20a716126
+ab5550bc108520c2e9cb22d73c542a34e03561e445d44032bfe46fd82877b5e5
+65fa5316b7d3cb76ab9190b1f83bc496a535c732a9d6f4cae0a5779a264eb7ae
+c50918fd3581294e168634393e344f520652d8dab7c6885a5ec79da3736a1d0b
+e99528507b26de11c451583c564b443c83dad0cec56fb6dd3866a31feaee28af
+7524cf92edd0ed0067413525c615bbdf56b575d11935834ef2e94d6ad2d0cae8
+8f1c4ad9e25e62ed890b3185926e68b3a10af64428fc874b1a776e897393dcbb
+c177ceb065b82e1b0b5b2fa01ae5dd66cd32d10c76731467b1d90634e2289506
+f75ac987da9fec9be2825ec9ac0d018e6df08e11a28c6e04a5fcb2428936072a
+eda3fa8e50122b174d062ec331a501acabc4611b5c345c61d15fa181a46f3b5d
+ad9319e338f3fc82c4eeba83cedb4f66baacc7fa3d1054c7e28d3a7840195f65
+76c7f1da93258b16d4a8f47d54c8899ac6996be0c80ac608878fcb84a31e0ac5
+53cd0ffab595a0dc75cbd22b773332af52a7557f4eb58418e54c665026e2037a
+030ec7c198e1ff420cce60000a3f33f53aeaf147c05ad2f3beee18dac384d67c
+a94fb0b746df2c35802d8faf4d31ea5a32262245c53ca509d48db2f2a1b20231
+2b193ed53916325dfd3b09966105d9b3f79840df612e4ffb5208fdf14ad6f325
+04d5127ffe114ead2cfa66c4c8ed14f6ea62cad8e50a8329925badaf6db6972d
+e03fc59953500d2e8d334012caafc6c574682e9e808e094259a5105a3a1beb05
+15cadc7a88afef81ec5550061b526cb9e96aa1756d450e9066a81fc22fe2ff40
+c38e580d7d63d71953e1105ba9c9e552cc85a6f84b4c33ff8201d59e1dc27649
+d8fc3c913cfe93e43a39ac0ad3402c2b5c16dbf4b80a8ca10443ccb81294b2a9
+739bf104d9e17c06e91efcdb27deb5ac23387832eb5ea9dc250fa05a390a5279
+73343f2a13bf5dc6969931361ff68672f39bc192e42902c0b77f69f291a4aec6
+3ff35a7bd33c443a6cbbe3ecbc93151cc6d208015419bec818a17aea97ff04b9
+d5977b0baa0177d4e3f759e6a1f6452191f247b8ac2b590b9f7c3f24df7ecbd1
+f24cc969217ada4dcdb272d208c12257de3453d756adb6f8a87e611ab3eaf38b
+38dbf82e05372a19cba004d51b63f686d2f7df72176fbb8df12da82412bccca5
+132255c8a7a8d3cba2fd392daf9c93fb142333685ba9e166cd84dac9ab6118ef
+fbdac5196a7079848d4fe8b0eff136888aa3608f32d1f0c61f3d122e906141f2
+9fee957876d8ce814adfd4388a2b98550154864ee1483dacf06cc1dc24942523
+7a7b6ef95cb9ffc3fdfb64686b9a43cfb0da70b14c19ee3cdbe253c5f76684df
+f2e0e82f78baa171e4a05de18ece9c08ef124204baa72b4f20c385ad2b95c47c
+d4fe7b2d83874ec7f1a9960fe1166453e7585d2ad8045409442e3a0011172169
+67255ca32b89aa47ba3e09c98cf11f8f9e029e7478c4f6bd1282dcaaa41e98c8
+530784edef028e7ca87767abcce9e894a621adaf1ba80150cc7ff57f9249c64e
+1808afd73f3958c455409d490e3887dd48275d0094663fe8afd57678ce120d58
+2fcce6530ff86182043e80b0ab2f50d0418015b3de9bb629b099fc634289592d
+12f2942ac6f5615ffb2472bee30b6fe7362a50a49eaf07724f8e4f49c85652c6
+5734da7d4aa2a22abd7781b5c049af530f39ad6abe3a2ef464291b166f0a37b6
+78623ecc1a96c3f7a24e768e0e434ecf752cdd3b5714534aa3e59a3c0a923401
+5929a89ed952d0f934b4c4b3788e87dd4d07b88fe6d0aa06eea00fbb09b647bf
+4eac6e15788741c0289508bf0b390d42e3056cfdd8b6c4abb8119e7324346844
+ad4c23829f1cf8835da1b85ecb84f08bfc826b16fa1db2c3aefa7568ec1de33c
+ff3093d845a54265d390066b01a7095e00d1988c6776e492a047a26b45db18f6
+4472661cd22b30eed3bcc80f3434ac57b1c417380c9cf7fc8e61c0daeff65808
+1b96d9c9e8336f529cd2d0969f68a594dc70ca38652be6811c93447b9c83f1c5
+7ebee6fa18b6623334390f4f07eec1f911024c15ceda500b5b00d53d7da78fb6
+107dd9b7d80b664ac9f6f6c56014f10bb297366cd37975cd8348ac8232a409e0
+1465f4b71fc8c656c140c17513cb8c2bcef701eff9346b842cffd24a2eb87dcb
+e755787190697f13e1cbde351000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY8
+%!PS-AdobeFont-1.1: CMSY8 1.0
+%%CreationDate: 1991 Aug 15 07:22:10
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 190 /propersuperset put
+dup 107 /bardbl put
+dup 112 /radical put
+readonly def
+/FontBBox{-30 -955 1185 779}readonly def
+/UniqueXX 5000818 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f059084178f5ab59e11b66566ca5ba42b1911a
+5d7f1bf343015eece988b7a93bce0c7aa61344d48aed9c92c8698d4b7c9951c8
+7d103f2414b39e1437f9d2e50c4ee5f218f2e6716926a79ea978f13b1f855345
+191dd7d31d8f82c2e3343c7a5894d95bdc492c28226834efcb5c12fea36ac5cc
+430e0aa604961e34888adf6c1f3954cbc2498e225d953cf5685852162346f474
+5a2a7087d5d7ad486de16d2ca8e15cee26e012671ba3bdc7d95cc8c98bb774f5
+08625e968aee27ff7d1a06e63bcfb5aa4876c3f8f13b30ccccee73c3caf4e70d
+98e6ed2f422dbb4950bf789680e064150995941a9f4dd68a575949847a7d012b
+b910bf03a18bfd18d2ff279844b29842a5e4038099fec03d76e2e12d44eba94e
+07ceacf0366dd81ddaa1324574affcda48753aee6bd0e241b40dde978ad76d68
+af8e3293fb9b714193bc9b1aa240c0721afbb5adee98e713cba45913117c8232
+8e695e47e79700f7881760649c30ea1c26c8306ff4e0422868bc809ee5496a22
+425ef83aa9882498998dc213bb4559992d0444961ce9fc0ee5412c2359fc6d52
+ccb212e5630a2dd55dff5c9947d0d29520fa1bc056890fb238c1c19c0c8a76cb
+28e309540d28d0b8e591b71b49a979b907b02780cd552179aec6d4cd3e5b1181
+6dff7d8544fb2d91429a536a11943814d706876893952cbaccabce446d2eb9a8
+d37a254b728a6eb46c6a176f026d6c0afc2a5c9b635610f9b7b2aba668941a85
+d544e4e7c8c3c0bf6eae8b454380f52a02ccad435cc9227348144895e42545a8
+44f33a2b7c41ef7d0541c39036dce50fadd2b00b0e7f58b8b6867f0da1957af8
+2f25b39328e2f2957b6e0fe38b373c26eabf0e6d8c5667c6914c49115a7a8fbd
+5b75e0a1e28ffe35806114715cc38a93edc0e2df168980063ad51a2f467691ec
+475a678b100820be1fcd91f63ef2f8cc762e371016730b5439ff8540c19312c1
+550e14b596d25366f6c714a99fc77aaabade9866de75d10540b05a69a999db05
+5b9548c49b3b0f5aa054acbb75e263e63e1eb2d577ffad4e88e0de2f
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR8
+%!PS-AdobeFont-1.1: CMR8 1.0
+%%CreationDate: 1991 Aug 20 16:39:40
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 162 /Delta put
+dup 190 /oe put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 49 /one put
+dup 59 /semicolon put
+dup 61 /equal put
+dup 65 /A put
+dup 68 /D put
+dup 72 /H put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 87 /W put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 121 /y put
+readonly def
+/FontBBox{-36 -250 1070 750}readonly def
+/UniqueXX 5000791 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204b094541f345ec367ae85ca9bd
+24568a01d3b9f8095f7420e6c423c414b3dcce6da48dd1c89a56d078e0d0e2f2
+62a13640a06d17e44ee3866c3471fb58fedf5a3b77294517651c16bdd7267d39
+a54e7171752dbde63ac19bb4b3021ce95eb5fe67390b09ae4d9ed4d704a67443
+f55dce17acd996c1f5e023c9e5a18cbeecc3097f23763acb86cdd7cd13381ae7
+4e48495ec7fa520539d87f8a8dcb3c826275469b6800876a457e7d1e5be867c7
+b1ccad69742a8c9b0ad943482bf2a4ad0aed40baeb69a0233bad36b4ca2d2da7
+322956c70375d152653500b2f22d2ab6990cadde2da14b4917f7515e64bc3d96
+bf775258fc7dae4e42a4c9b6da8eddec4a800c8aadc8d75e48cae52137e05c03
+677f5d6a82fa46d9f2fc7f56d62e5c605a1b7898b8d1401c2cac1a0122a2c8a7
+aae09607f2c5f29293a09b9959399283be89051452898238b777db9830ff4318
+a298b221c4a820c700ca964fc99e6b1d9eb0bafc39be9aa9dffa2fa326b2a466
+1e67261bb3dbc85844e76f9313ab533ee16bcb478166de5502b68e6ec1ea6110
+f53206cf1cfea419571b0243244b32ea38b828a01e62b03bcf476a32c2341cec
+b8a0fa2a3f3f339315d5f3aa7704408f6617d0278d5c892bb12e35c9c7c11c20
+a6ddf5832b2ff46bff9cde62a884dd607933864f6e1e9e2899faa6f2c9712eb5
+22f0e723416ff6662065e9e132ecfba92a0c51ae000c87515df4d95aa141a0ee
+5e16a5f3f833aec3b0951bd68b348f65df291829a67ee1ca79e14902eac1b912
+6016755a1dcc184c6087667bc8aa7cd79507d23799c678826d169c172a7567b8
+b783af25752af5a7ae470e8076782899d4879c8369eae52c461c6a0dd23dba5b
+fbb348a238556f0f84b5a7921e3475f161a550e00d01fe7bfef531e99e314fdf
+3c08ee038c403263f55e087a6e003f5711cc75edf0277884ebad1c007c2001bb
+0bde7b1a9fe93da570d2eecedaa68ffe44b41ef484c47ca2a1432ef8529a3bad
+a5c65e6afdd5fe34ca4e3cb6994ec27f5313d40abd8cd4eca2c3db2bf2b93263
+bfc413e95e88fa0704f5799e261a172902a0d15730dfc588450a75d7786fd028
+1537230bf5e0c221265066028cf7d3d1d015babda6156ed7b90107ed51d69921
+eadcc4781102ba4ca22ac9c8d8511d928d68ac8406b7fd7d6475f5677b714cc4
+0d481ecf1aa7928a5f6dab1a15d0306f32f9cbacaca6b7eb9ef674b152258d48
+de6b9f7475aeac1f5917ba27167a336fda0fd56dec3b7cccfefe3e5145d6fc50
+32e9137f6273f125f558cb75a476e25df07cbe125ce944ad62529f9e16618a68
+43039e252af85e933a20e93e9b04f956570d8cc7d9bb47836b5e2c83363329c5
+fc7903b054ed72e434ffb899c0b683b84ccaa29a5aea5f967b633d410e68c2b1
+1667a41efce93f471e9c638b81404bf1a5affad8c02e24a287d65158211630dc
+1273035bc0b99e5d3bd88b1b77191a8ef35ae6d19e9c84bb1e20408e556c4bd5
+6f50181b3d4413af1b6cd3360277dedd7e88d94a07c274e159f26a8334dd2007
+726f19fdcb77b75462777e945fbe4b8e57a1945c6e33b898ada243660d666772
+1cdcc0c9574721f6adec76a4304c5e9d8c8d65cce0ac1a93f11da5c9d1080f62
+1f4254e5765b938ca18fc8839e2e15a9ae7e94fe3a1fe70f2eee2761c0765163
+c88d4c19c02ce68ab1d2b025bb83eae3972c27730f8bfefeaa9cb831c05de44d
+ccadb9106721fd7bac94af812093873a2f96c968679ec30d47be84a36d487f1b
+d9c32a54ce4b7656a7e374c44c64edb9572120505ee0ad119f86cce0bd3241aa
+9fa57053daf27efcccb69c09780f1daad302e6c2951569f19542964b4de1fa54
+921223acd8bd5433f1d192cc3d6bdc884a1685f055fb55d269c3908e4f90c2c2
+6d19cd01d1717d250d2a4d6cd332c095ac68bc9e678aa88a6588001041c8f583
+a4078dba6224882dab67e4a60405e046ebaafc9c41fa2be693b8c480fcda0195
+f79a65deec6b2bbd40691f267bb70f19dc16e633301fcf7c9c7df20fd6f2f26c
+391cdb5f9c500947ac99cf3d711449dcd22dc2568352a969d35690a293628242
+89bfed6f605d0a92b887b24245bede6422434fb34bf320b7ecbdcd96d668f6c3
+4a4780ea945fc7af4de784103b7723be8d45c7880d07e441ae240a319836f51c
+a8e9968719e2284dc37d12066fffab48d46dee91990690649e95b73e3a0a2200
+475eddc01e17ebb1e92785674e2fc1cefab8249d6c70486b2d28e3b69d6088cd
+ad1615c0672aa48b509f692528a9ebe0b0c2ba2d2df7934a40cad1c2f92bbac5
+aed7a24ef306bbf5174ac6a397868d524c4e1d97f70d173f98efe4d635b89129
+816bd5d5511e726af7d147b0cd3e6e5de8e132b214cf9d5a20a44bb26b9cad6c
+eac9aad733cb69892d3c5b9b550a7267cd4b07909f54b295a1a5de73bb5e17d3
+91b866e74c5c320ac7569bc9382a7a5707d2fcea019f92b747b0c26c3e957e21
+cd5031e9033e64691fe1941f1dbddead321d637b4addc84f81fe52bc10e9ff64
+99c27da7a1e67f6f5987cb5f22eeed23b03b0946b34a8f4391457939cc1b6337
+fe8c8348171db4370a44f298fc62b619d90a75e9b51275a8b0f1c63e545690da
+f24c7a49d25df09ebf461b94af625793cee31531b595fa31491bebd32781e787
+ab238efe2220e0d14ee9ca6eed6b64f8f0d9a3da77e69cd98abed70524360d6e
+889e1ac5d71693fa56577837e14946a62dea4f20def4e36f85e481773a976eae
+c8d674a7d68040ec621ad0417a96b6d80d0240bfee627cfd8cefeb3d26563a76
+80807bea235fd3f0a829dd7a06e23643f66a27321b27fd4c0a2d83b7fc51bf3c
+a1550f1377c99f14f8d4117348c2a83a62642f314be7cc04341795cf3abe0daf
+86de16305a0c397424c5c558046cdb9e281650eb37b5aad8fb40f145b56718fd
+ec15c04a201e427f73a1b645d0dba53995e64a1131963db43e279033f420fd2f
+767b926afbd2e9e5ade45ddd51620463ae3291b00a70687060feb3ac9f3b198e
+6aa1f7eeb2f077582a9d122c848ee0f0353223260414483997fac453f070468c
+f7efa4615ad352e7294d1f79121e29b3c0e99adb238ba80d3dbe769f25fa4c72
+d8fabc5ba3e594d2efa21d2ee57234a16a65b0816609085c6548753e31c7c4af
+b6f07dff3cb502570dbb830665893b20c50cd9fa98dcd72e1fb8694aafd2cc11
+e66865b65c24a4cc72ae6d138de86a9d34725ce96e1b2c6fd8290925c7cf81d2
+fd591ad02b4c3adb1b0980441707452b12d701fbe5ea27e2cbf498a60e78076b
+68713e4a86c3ad746d9fce1f09a3f8e8d52e87a9ea4124b5a6d54dd7ece3e5b4
+bc0afa3f81e2d5cd91bf92492e16830b85103fa49382c890208dfaa6ccb16ffe
+cf0e092723c76d1d74ce49925c40a65995d0bb86a2a61f245599d365fc4ec117
+3418756ff7331974bc7695350c8bc971181815393fecb22f17564674d5ac2f26
+9468fa4bd054c7b343625c75b493f6b10ecf77e5ad2d05d8751efdc33d46619a
+74d2361a1eae5863d6bfa96d89ab4071c28807ecfb233e3a2dd2932b3436a012
+ccaa906232550853e54b972d9433b94c1832e601ebdebd01a7139065d027d657
+bddaeade1d39342bf37f4cd7ff9da0028bfa30712ac4dc5d4d301f164c47c49f
+33c9d99c94fd77d04ad60bcd3312151d75076d9bd5d70ab976ff3633a015e1f7
+d795bb91c0153f11ceb7225c8111d3c2e55b583a337db1fc1bd49cf55f9c6e53
+c25d31f43fdc8070938746798d8dbe73b604f450e9570c8db60c9776c005d33a
+0471fcf765be51608e063c1fc7e259240db74d6a924b0cc0738ba2760718e1a0
+e474753c8ed9fbcb070b83a7f0ba56e98c390218403499250f203b5526506bf9
+67465aba5f42425bd1da3900e13fc649f074ad246de02c4eaa4405c4d3a2ab5d
+bcf6c9479f9265283824d80322bcacdb01ff2e49d6ffed6e319ef8e7c6a4f709
+8e5dc9b041eb1ca028ff320b3aaaa1b28850f55ce0eafd2fd52a7d981789552e
+8718b49ee29a8725356cb664ce73701d9a4eaa4910785793fdbbc61ba39e2aa2
+c4951ae04d38654896058b96fd74f7d5d498f88c4d8aa388916c852f7d96b432
+f49f70afbb704b0c473cd99c5c8df8352664d75d2bfcf002d12a5ab0520d1048
+bfe35886f72f8507bfa63d66112a7c4c2bbebeb40e9439c0e3b5eb9ee6619791
+674cc6164824288883bbf16ce84e9d48fd9387def556ab1cc60e9e603b2c3199
+5d30bcca4bd7a150109634c93d08911f283ad0dfee4765d0f64d80b6f45edcc1
+7c51ddb335afcbb76a7935ff18c8948716995a9da703bd2f5b461d3ebf05ca93
+e95bf29bb25fef5314d8738f7cc3cffb1707494c0f65476eb47cc1a598a2faf1
+56507b901577e351141dd637b1c094ab53a39a83ff33246879f724925e227706
+b88a7392cb5ce3c1082a46f1f40976e30beb508ba09e6c41908ff236a8a73a59
+049e1fd3aafa1e7a127d960b6dee27a9977692b641a605e6c35e608636920e82
+90011a11d6ad5e0dee7e5ac3ef4e792f67f3178e21f839f5dd8c7055ece2e68d
+5b6a2a827261215f8b971773f5b0525537663d2bc2a8113810fbcecf0d979648
+2db1bab33e913b0eae998acecb54d7412f0f856c35769df54de028a8a68784f6
+547641cfd7075d8bb7ae88ef1269c38181df4d24be47aebfc1793fe081bf9e96
+c6aa6132be985c2e8fad9d534d9699592e1313b260297e5d530cdd637a85c29f
+f947216c02cc6e620ddf38440175ffd652166c1086a3b9a299e6a183392d155a
+96daaa7df9be227b6edf36bc0265d9b05ca8cbe4e78ba57cad53924d9f169adc
+a16508e9f60e31bb54bdbf06c8531835df76b31844c1e7b0c5462accd21105c3
+bce833cec3af9dadde6951f346a77fd38fd258d94756c966f1e3c2feca3910b6
+ce3ca4ccb92d9ec847964ae95e9a2742f7d9f5e0dd3ba61dd8545f07198b926a
+8ba271f0286df410a5a882d2e8106eec55d8aa0d08e54a4f97b5c2acd98ba5cc
+82dfe09427ee6cbbe309c0a2b83722bf508a60c21ef428f9ad1da1fbc8cff6c5
+db3ba1c7211e7d9fe1ec27af93fd0b981aa922c417b338c4adb44a1d61f5a266
+5a067029ee7aec3671590e4fd08c3c037476c6eb9e2ea303bf151d70f5a9f2d8
+d6edd03ab447b324aa39b3a55a9d03597ab12d0371a21057379799f6f40444dd
+d39e124e2887ed227d2a44628994944d590413c68952e0c21d409a1a80e52a5a
+7cfdd7a8b12b2aadbd358040d95476b9fbecf8570f67099f560d3c0ac0563f4a
+59839f0964cb3bd66ef794bea60aeae6fede6a792edd954ee6f4eb69480c5563
+772150d1ba5cba3419d4b66a3c932a064fa7665f6a696c3bc3f281b3501dee39
+e2d77943a7961b8b331130d148cc0f1dd7af3c0c4ffa680d4cbd6e7f611eac82
+aa9b1125707219912eb0d562d03cf54357e5738ceb5d63e0e0ed52dc9a4cc9da
+1632baec01908d02da97a0071543a0a9faecbf35ad9d3ea8880a8bac63d78526
+2ae81a52ed4bdf784cc5405ec369a2ac28a72a4c4465f7e6df8b8005676df7e7
+f2b1ffbf77d725152a85ceacfe415843479a9130eafe75775b3a86ea1cb6a121
+e1d8d7b0d33492617facf6099ebbddde36df1e1ae5cbd74bcbbf9573bb83fdf7
+84c3fe28e095221748591caeb247351f267202c0b0d4bc5f5026be84a67ab845
+f1b562b6d3cb201a1240ea3f6335102d2f1b113dabc3478a978f7111e9b3cc6c
+85421c427ed6ec89f4fd42da180ab43e4e33e98957eccdca9fb169b17080467a
+2e8bcc8db52dba734a9e6a80f6fc2619da47d4059ec06dbc8f036c66f4038475
+a9c6dc5840c75a79866825a865975c768cdb057876fe7a90ba58b9a527ecbf92
+27dd83d16af526d414fc868149761d1cb0e826d8367773f1cc4f2585dd1850b3
+c020e85f66d73b7599d4f405a77a3e8e6252e6b8e16e231dcd12e03aa3550151
+78111ec808b1fe5c6ebaa7cf1c2824ff2bf6b95753cf73d2603329f542718d27
+d9973fa061f5231c4514ab9c9c87460bdd4417b8bef0e608df9552cae54358cd
+a121905154cfd6fc8ca94484c8f04155d8b0eae30a6adc95755de74b9045b635
+0a0236154b268ebe8d1057b7ad7017407e4842cd40fe973704805389d1116a03
+8fa6e6726669db728ddefd808b09754fb295269c1414f1129745ccc9bacf84d8
+b760d8ddf3fdfad8437bcb299fc3cf79819dcca806ca908cf4f546542ac5ac91
+22b2d053035222da3d4fbb30d0bd9bafe391be03b52741888b2f192795c9ae6a
+d12c229b093870b3adff1e6019184b942acba1091ff66681f788d360c8afa7d0
+451e43cef38c70693d45b0c4dac9ef3cdd7168776e03b02e0160f74285a53dbf
+113ea5bcf5424072b9b6078ad3f164cc364402d2b1872269b75fc36c8c8a99d4
+9dd0e8277efe9cf2a7ad9ddf035afc3555786365df7f89c3336a48a2340079ec
+79d2d21c0286b6bb97e4fe04264496d7c4c6608091208c88e4e5a2f3bd6800d8
+ea6863ba0dd66ba789912c12739a26fa6e67ad5b102cc966dfa56d765c271e49
+b93552e87f6bb1535bbafb75194be2651353df5746b521544210b44002890bfa
+6d52b15e0a0611585bf28d31e005469fc38887824509d432c84baa15aa2499f0
+89f7cc67af76deeeb4547d67b54327c8de4d862952844e3abf9c8cf386623eea
+cb36399a1fc857fd084fc3be0f6df4f38289bb759c565d5b20b57fb6e636c1aa
+ec3c08e069c4ae5d62370f042427a57e0a28aee368682c9fd1f6ed632f5fbf8f
+a747864921917160a77ccce87ea74d5a5be22f35919bace07cc811b8b1564fcf
+4c66354067c28268893124193916c08b0419ba7a2e863f7a7aa2aad2a6d772b3
+ac5201fbedb6fbf9d01e34400b57007b7d4f82536503c560ce6eb57e1ed7d7ea
+0c34299113f30cac0ce36ed5086a09482fe1e1c82cda6bd5b5cce1fc80ef6683
+5c36c1bc7239d3cd9b5eef6cf9819372740a90dc79696d232c3815f0133b825e
+7a5adc7c334fb616fb8b157c7c7f71f1979e83a0d3e5e6b3ee7afcad230147fe
+1065ed44f9cc5b4e5405fe23946f573ef0931d89bed735a07207fcbd654cfaea
+dd7a79eb67a8fa310573812ff00e527e7dfbc2c95061085151886061afa2eaf2
+947706459fe721cc9d83626b7f3cbfeb3a8964b6127dabd70b7db7cdab66b6fc
+cc9dd09bb095c60d310bdb5a10e9e4acada152fcd478040427ac16160fb471ec
+dd9ce3edb3e05aeda074130fc65e3ec811c8bbda4fa58940bb91fbb27392aa39
+7c8d149b0932b5cd749814eaee3fadcecd8f4c24a6f59709e1bcaa6bbd1c8f3c
+52aef793bd161ec2e1364b1ed1c4d658650a9b9ec8b30bc79202706bd1679148
+5c1bcde9d39425fa8846a29de3888f9ef02fc1b1fc8d2acaf1d8ab75fbb2b011
+195b95b092baffe930989f8203dc0ddd74dafe632d44511d5bf299a3e8ec4b97
+a90087e64ad97a08b666fe0ef87d9a53570884f249758d8f33414cec9e67bb4f
+263b9c43d64d1d477572bdb2287a27d044e23c2d9367d489dbe08577c92cca8b
+7eab78fb1480d23788960641b8b536283c1e386254fa96fef6646c2e40611b59
+07b80e8e5306b737a5c5e43da88e8f85336b5d1fd73440ce8ea7c9559172f471
+7f8a928872ea7995e8ca0529d7e155b13280255b7af74993d4ace4db557db0b1
+768320253ad3d0ea19255aa0894546e386661981dc3e1640ebb616c8169759c7
+f568d0554eaf3c1fc91dca751d7664115fe746da260e8dcbc6f7ce04a6a1dd68
+ce1c42f3230e693c7dcb1a49aa52b877edd6a26e521d2be1069c8a4f222d27e4
+5f81d72ae5e2c1f6751ddb4df7ebf62063b21be4d835ec4fc2567b0fe038c7c8
+44396b17535158a0d48bf619f56db2d9de7f6155e3b54a7540098cb76adfa4c7
+137cf78275f7b3f047ae9e9ca9191210f1d8eed5504f8e0ace70d9cb3c39ad3a
+815151c79c7fcc70f00dc436339345782fddf84589a5f5930c8d5cb8162c2219
+159538a75f16e4d596cdecbccc91d12fd49c2258fee32c6de1c87de80625d86b
+d214e0df422d3c978fd1c2532ccbf1c67b0e023768e7a7a643f5c90662d27d53
+2c3024b755060134a631a3931e6054581b819245d735fd478841b673c9207ca5
+18db495027561a5f360dda9f3b3832f215b5de6cc4399c55fc67577d8e1fd962
+b04e5900564252adf9472abc7eb26971ca4812171d74c77a67702c17da9558be
+7e8ba14654e95b4a854e3574f3a01d568f036401774ffb35ccc023b8b67a1b87
+88588b8b791fe242479d8b0f6a7a513f079940b8c7fd893179f200dc71b861b7
+00fd63479bcad0b9d7f3e58a12e52449863c510ea3a5af7a61bd5d6aa0c9db80
+a1d5478fff9e176c5bf102cf97f159771410b05f6c7c78e99fff3806ca3d5b35
+40ba0fa91bd773d8cec9a998f018003bf8bc581df14f0c8005f36ca045fe815a
+57a3b19feb0db03f23a047fb281f9d9a8c4d6b0d6853dbc76dc718cc52188a4c
+9a45238a7302c6cb1a47b1e8e399dd447f8c9c7b5010630e77bcc0a481713f34
+882ea30886b61ad5ddc578a199cde9a235633a3a59bc13dc07ebd6d070e0982a
+2f22f1fc8573d2271f3d931af503ada5e95dd4414cb39eb26507eca324f66835
+eb9926673a6d4aa9d835a47b2ff55205cad090ef45d845fac687fe7f638c711d
+f1811b683e4bb40ec511e071923788c835e174f7f4d30d9935e5a98d1a2af7d6
+195b34e131ec140746d7c7216f0cd56aa21d5aacf3282fe5f8b7ce8174a2334f
+259473e990e24467d0388754a698780f0d7187591e6fcd0ba66278c294855639
+bc35b2e74e31c85c226c3838cd4e909321c455beddc65c07b8bc79ad477a1170
+2fc07d475206514c429d3b6186b0b39e86ba24cafeab01a4e373de2858cc42cd
+6b452462340e31d7aeef4f8fa7afbcb54a3b8dbb389cd4e9722fd9fd17834fd0
+fef3b050986240e938fdf3329ffacc1dba38c5d54cfd50b90ebc7e8d11bbaf2f
+2f94635d1c1aee0295a005ac03299ab5dec1041fb4f5d3e99397ea4dfad1da89
+7b045d8eccc9d05f93cdca342aab9d4aaf5e1694139f22bc8b39795f84aef1ba
+66747b8f0e52845a21901b76edf5970810816815cd452f164b9aba0c4cd02f0c
+68750dc50967c1d2901acdcb5bee715aebb0543511417cf9f07dbf71a7f3d6c4
+09701a78b29cab532acb91002aa0a237d4c3c72c76126363c23667ad2ffe1dab
+1aa15c47ce1907f41d3387371b3dab996d73266f366cf97f8edbb5011f445321
+cbba1a31c3c51344793fcebf2755550561cc9c6492f7c6745c4eaaaafe0e9122
+62e62c0cae30f68380e8d901fe0c42360f5da15df7fe4eff8346c323fba614f9
+26282f6ebe28daa5923ac7f2dd68c75456768891c185d4180dfe098f2366d7e5
+db294954dc2d3691094e81dbdcfa9ecb4e15c57aec08957d53ab13f0a12f44f4
+8c5aeff81e8e17238cd1bbce75195ce55253609bda765959d63d77c428e06e0c
+da058797a96d961faae822290d4616778f5459e9ef2dc45f3a67c27d4d18d879
+6d4e27fa010f73b026218d077ab2bab0c4893e8848b455690fd2724a3f2f2138
+4831994b70a07c8ee3e8774cd3d88367df6461a4153a5d6f9a4c9ef210765912
+f8830389850f7407b1d940bce7ab640dc5af00c11b78ba497f7efdfdbf98595b
+22214c03fef3f92ebaf231704d177ce3f388f4747bd6ce2c69a5782904927468
+712c9b630dc0172859ce5788e0968b82dbbd8459f07536a26f6c462d806f93f1
+63adcdab17707d331f7d38ef3288679da60f734cad0ad5ef42bac9e9dbfb279b
+0b439ab719e3aa4eecfc6d983c885940ef89dc1679977564919c469f0e406210
+864e25e52666c2b5cb6515170203c0c4b95f8d09bbc8082023d527a9c3b1431b
+8f21789a6bdff500557786c63e5d8397b2ca66183a13720e7a07739d592bb6bd
+8784a91f8177f57ab70eced21b9d74311b5747b3a0fbc1afaed4b75988f89ba7
+75fe47d820230568cc7d3accd234e6c79f2d800b324995fdd530f800b5c76b69
+64353e2026371b5dae6597c7deddb296022e82c57eeb963e446c80928b759c33
+2ef0c1b031271811bb9e10ea87134da453b6b477f805604dfd60d8606ddab1a3
+dcfc63ff99d4f38f25089e74a65ca5650297514b474e2b56a017b93daf63eca2
+2ca939fe3c5f453ef6394bb4248a0f0547d97447eb7698b50bdc3500ca58c4ef
+d7c6a9987de1411149d0c1e30c4e97ffb94efee9c3ce54e1634276c1fb1a85bc
+948c12801e424613405bb0151960901d92459e5e55fc3a052a741ed98cbddb0e
+b38fff5c5332e102c9221a85e93dcee8af0f231396d66092108408cd39caa450
+9ec0293d24bfb49cce640ebdf6bf0df81fa1a59c437245eaf603be91821a1fe5
+c194c3fb7110ab01173f6d5d9cbc5a75e6dbe8784cea89afdc7e36eb31fd781a
+f9eca1589900e13620503632deb561eefaee7156fbdd165ded093f680df3f2aa
+1d4f850b58bb4330a0e9f1f1d63719c40956298477a253e82e7103762b052a3a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR6
+%!PS-AdobeFont-1.1: CMR6 1.0
+%%CreationDate: 1991 Aug 20 16:39:02
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 162 /Delta put
+dup 190 /oe put
+dup 49 /one put
+dup 50 /two put
+readonly def
+/FontBBox{-20 -250 1193 750}readonly def
+/UniqueXX 5000789 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204b031f3fc6c13d7da7277a94ba
+018e9998b3dd888011a5d7c4204989f30f908b95533bda845746b673ab71ea57
+65a0d14f4350707e47c8276305b28513cbe1bb0dbd269a53719bda46e536685d
+df78ca0146b6b93e760256b74d939d4e35b5e77238f04c92298dfdd188feea30
+e053eefbcbb52f2011772b3aae39f5805597bbc1e8bb75a446ce014030f4f2f0
+f49f9e962ee4a1024a746fa92a3628db5270732b54e43fe5ecfa524f127e5fcc
+788e77e66098336ad67fe4cccaf0253272d5df79864bf4b734cb9a5859d557d8
+bc11b8e00221ebc12e97de4b1f466ead83a4c894709363bca9040410a52d592e
+34ee40cc7e5efa920546b981aa659513a24b1b85c221a1875b62d0b89e57a368
+321b8043a5b094e0379760a443d632892b14ad6d19dacc8c78093243ad67e6a3
+08e56e6b68412ee690b10dac6e17708754a00d51fc957b500eb80175716eef4b
+2ca1ef867614659bee3f2b7319e97b6fdf1efc847bf3cee3156f72f21751da8e
+5fb6898919e6799820d3de0642d756e09d6fae4ff08dd3deda3173bff4bb11f7
+9109c97ddc05897af709ea199a90fcee8ce4c7a3c15b18170c41c04de2d3fba8
+f34296a95b8e1e8de3739b17273f8f2c85e914615e8eac5e8bd2387ba3b1edf4
+7968f06e2067d836d0f9f3e085cdfd2de06a62c81d786b304326f7002e83160a
+36598589228b4dddddc43c85e1d126f8fe81b828028e26317af5894aaccf4f69
+6301e1a9fc45935d8a414957f08febebbc3a72ada80f101e47447d019ade56e9
+f4fab969bba2b44e47399fedf5caa1bcea216d7ba713d523d8c1e5c02115408a
+277a0db93878d14fcdfef599a5142518e5b2a302a91173bc1a17ee6abea058c2
+7cad67c6fd77a1ec929b6b5488f862c46ca9d1109eec7e70eb27eea597898dae
+1a2866478814b5d9943b3d53246d565a0891f8017d79fc8c20cdc7b2eee5e71d
+df4827af970d15f8f7ad80637f7939e55d652557f38d774693e47ba467f6f77d
+79b5c86d7700ca263054e3719d793e45202505ad549fd2fac038a843003ba82d
+3fdeb5144d64d00ef08be502097e57697e555d9ef147a74a0fb6ba6e37dd27ae
+991e0ae1765c7a31eab44c5f4bb5ed2577710899d13409f4d23f1907ef74285d
+a31180e887bcb2f2d0b4d3b95e5d8781081e6fadf8e83ff5210e224f236dad0b
+ebb32b43d1cbb98aa59aedca399e4f5126c07745b227f82704bbbbfabbc9a51a
+272e0d17b0f2534b8692b6f295dd7dc79efd09abe7817450c593b54a363a45a5
+8a086b8b7a15f36b7d3d2796f65e64f81ab725fcfc62410a2852be3323025298
+c6033514861e86025896e5e10528be3df02e48b5b9d54a8a28dd702c9c8d17c6
+34798b9a9e2d96e7b1aae1756e164d1b70f705d5b13ac2b1f09c19ab37f37a3e
+a88d63c0f9ac27f871b57331669f799d094885b9b3a7ebd8194b5723c2632238
+6fcd128a0b13531ed95c43d7c416296be7035b02b854c640cf7db430cfe88f41
+3ce97e8c2e4d6d0d4d094c0743c321a89d7481ed0b62b6f3962165d5add96d1d
+84ae5324f207affb494dbd40c6c2dcfd6dee8bfc84a044e1cbdfd7e8d25e0d1e
+1a6aba9b978dd3aaafb488c610d9c47699a66a4b8b46895826f6982a22c05bf4
+825c2ac4f0aa2160d406ab65c6811f33f65faec5a9328b6c31595687efdc3c05
+610afaa57832bb71b68348026a51c77ad046281a4a31934daa12cbe4cb7482ca
+bce84ff893491e1f83e14df4d61187f1fa3250bfa64be9628247c2444fa69280
+ec177fbc0ad3fe7c56c4025fd390167aba4b493baf5ddf5ac37df05fd9d53d1f
+5715c7e8352bf880
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY5
+%!PS-AdobeFont-1.1: CMSY5 1.0
+%%CreationDate: 1991 Aug 15 07:21:16
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY5) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+dup 162 /periodcentered put
+dup 190 /propersuperset put
+dup 48 /prime put
+readonly def
+/FontBBox{21 -944 1448 791}readonly def
+/UniqueXX 5000815 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f059084178f5ab59e11b6784decd2fb36dec8f
+7478da853762e00bc9c52ba86ef50d222ff142abc18e4fb95b86b3e57d9390ca
+86e8de6347bf7f48f93322a372c5d7830521b14e8fa0771961b027c81365426d
+d95d16b950e216a90f28ce806244ff28dd969cb512a23e05045e7b2bcaf7d6f0
+ca8b51494f2ec0681bdfde60420628d9bce98a0ca1ecca9140f452a88db19a30
+ed46ae881b098c843a51d06f9a153489357fd24de6a0c36cb5a9eb9b3b64dd75
+18f83018ae7cefa1c12fd205df6880a705e28457af7b869a6dd28f6b37d82cc3
+e51cba348dcdb34efb119b8ce5a996f15492b0f5d34538850a2c1b6a509fe5fa
+015eceaf28b0223cb57ac422cc75ea5af6535ee85ace82cd3674b7407f29093e
+bdedc359e654b1b8f6fd7ec00f592fe46a806ef91ca0d902c83031b8043976f4
+8f7fdc818c2b9dc1d11fb997865314bc2bc382270efd30a9ab4fb8f113142fae
+81704ca22c55a8172b0748be30722e22746601532e683b0b8da554646945e566
+4e7304fde61acc377888aad8ea841f9e895686e4208c42de8c0c49a3f57d0ac5
+dd202690835d9c90b6ad5ee941c5681d0b25af34ecf179835c90ae6997820351
+1088935a12095e0c3952f8c84e711cb1b5b7ad63de3adee7d1618d1b8fc453cb
+c8fae548b9c359e044c79e7ed713a1fac4490a7b78bfd409525f23e3a1544067
+eaa28801ec0b5c3e08b81ece4bf0856b2e3d8de4cd03d6c8c3db9d93e0258e1a
+71f82057b237295883491e5a51be318b6a21389c8b75bfc6575f6555cf6d1719
+e997536d9c0f82bdb59eaa54509c7de25913fcdf78c674b38b5cc8a71ba43b15
+3c950d8af388c7f126d9d3ef9a86b3f28479ca338717dd003d643827fdc59ce8
+ceb20992df828ed27ceda4ecbde0b1200161f61c01bed58e29abe0abb0f17ea3
+a8d45d4d24fd0fa2a200e9ddc2d7e6fdf78bba11358b6cde8fd71f7684d15255
+2cdc91ea486a2769bf93494899ec4dda3babd29c4f29137eae406425be7b935a
+788a842e9fdc8636a22b3a134dd6f9c9498d1b6d76dc91510c0d57383939c9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI5
+%!PS-AdobeFont-1.1: CMMI5 1.100
+%%CreationDate: 1996 Aug 02 08:21:10
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI5) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 190 /sigma put
+dup 109 /m put
+readonly def
+/FontBBox{37 -250 1349 750}readonly def
+/UniqueXX 5087380 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311e252234d51741e18db3a68e8ad10242
+29e5817a10e796a78d2c7f7c1f50961b9a57aa604c9f821dbf5a9295197bc666
+31678d7d2c7e1f8f2151ce0c29efce46270570f4301c5dad1b38884732e53dad
+05dfc36b020e726ca575f71f04abf2b49e1f1d6d2a08a477658ca9a48f1c8cce
+14382f0a42201de56e2821ee2b0e91a818b1b753d810ec2428dae5153b66af66
+9442192024becf743a8f6264a58a0b3aa823510a4957d1bab3e1b83135362888
+3e392f49926471a8021fdb48637baf0abcf31204b1b214f48c99f44af7782323
+69d772ae4f49be53a1bf584747bf29b94f530d59a5be5370b8dd0691e32a21ba
+9d0d592cf3bb50a99a3ecd18d6c4114cb4cfecc49705da90d7edb10e3a28f9eb
+a49347a09d31eec896f2a28e9607d99d42914aea16545c16e136bdd0b75fe486
+61e24c7a9e9b233a76754c760822d0a88c575e08ae3e3f081d7bfb80ec4c03ac
+a08b65fb6474f71fc95c7c2462f2eb3754e647c29498288f2ced0bd3a2bca5c3
+2f80a61fa667802d376cacd34de1f9572d1b3ab09d6f352750db4a768f869638
+a87457889aa502850427b40e1294c5ba33e6b17532b2d13b5f50e71582f93daa
+231e86597872a2a968127afb0f36257a76ce1eb24e6c4f29fce2aaf6532fb5cf
+df84da03f03a45b915209f67d398c7c4f7a3b0623750259087a478dca684b29e
+a8b7f52060bae9394369ed1cecc645d113cca3772a8dc36c6d916b5c5e65454c
+0a188a33395fd3da67ad0a31ddab6a8434dd80f0bd0ea1a2a62eecc331d88b3e
+369552daa1c575a98fe84383548626b65be7c24ae7eb61159f149872cfd87cf7
+6c1a7c155c7186c7600e58cb61b8cb0c5dea98268a39e928bf6fc53985eaa763
+2b28c1eb3d82e4d3fe225223f4266d2b6147e344aad2d4884a9308aadc7801af
+a606838925e3e50ee7aaf73f090baefcfd4e34b795cd92d83c944d91a4940f2f
+c955d727ea5bd76f0c8057b12621eceb0947b0a5dd10dbcbc52957dd978d7db0
+c794660afdd4e946b3d7fc1ba60907fb3f756aab0406c0e7bce5a2238fb3e12e
+07e2c0a7f465e90057642d704434ae0b57bd46c8ea91ab2a386e24c6deaf9cb0
+8cdaa8fc4ec3fadc06bf28659cb878453db16f4b03925b2127b83be8fc240f33
+23ea950b51d70c8fe861e30c346efa0a0125137598caca5478991e35f5bbbc19
+4c787488ba339830bca15f8333431902e82b66a514a41c0bff92719a6a0d9587
+4cff62c622fc61a0308a69f9fb7ef51bb274ce9e059c04b64e817abdbc4210e7
+1fd76df9b22c0cdb798fa20b593ff16fdf85bee14c83a58907d8299b2a9a40ce
+4d850d79b4b6f4f79859affd1211376d00e98f2be561edc56b2a5c8006fdaef6
+202262dec1733f090541f3b8729005376eb0dac252617a8e7b68c41202036a1a
+c8f6ce4ef77b39529d5c3c5d19e2cd8115efd4ff77feddb0365032d3eb302245
+568c4eab3d1d96a7f09889288bca02634e44f29b2369b1ae979cac3d5e47ae80
+93f32e255f929890dd860db0604a36d22b0bbea540827647d8398637caca7718
+b1400ed003e3b724e35356ba12a1006202eb4a099984d34ec144b0b56e6d89ab
+eb1845d54637aacccdaea06864e1bfd9dc02d7cd65b093d4c390df6b27eff82f
+f9215eabdb79685de57140e5c4cb43b3165894c85b13eeadb27bd92975431f2c
+c4a10df39d3ce1a65aa5b9fe64952c1b50c921a0f3553165122a4f28bc7ec111
+5d0d9164707ca423c2d17ed250f9aa31e8bf7c4a98c59d61712b6a0199fe6956
+4df9fe735942a31d3ab814441639e55668f47dc15572124654f37e33316a5776
+8d6f191d4c0f69c9d7b3de5e215a0f1b5bda3a18c33ae78c1d7300fa57760b7d
+b1962d88518f859f580cf28e7c28884e4334e8821fef10e0b06b2f0c5299d73b
+ad2f605af8e90726635b74a9a0e800f273e0b22041cb157d97992dd798e73296
+29d19156507567dba41f45c3a00e86319ff08db3ee7eeeb5897c2e5bb1f19d14
+377139f8924eafe50b9895fcb70061748d64533909e5b26f3b77c552933e55be
+4de0b7386a6cd8ad49447d84693d34c1a68d834e25c7f5cabfdfd280a60a8de3
+58c2ddd449297f66cbe91fbdcb00c6e74fb3dfd77cfa3faf2e2fc53d359cbdf2
+7543da23177b0c2fd55bc88906f5c8b8db39062fe8b892746a0f954ff2eec7ba
+c863d379de0437818d31386a2914cbe00f7a59171e4be78c2feebf0c9aab4ae2
+59f713c42e1eb41568f34b89ebb3a45c3cec04c40908143350e06936339e23d5
+c3a108736c12f08d51514fb3bee5046bacba9ab774bad2d25f84f8be483df817
+0d495f05499275e784625ac8fe2dd152d678a65e74326be81270c0ae361b5489
+55a0109999d94119ebe400b4dc7291d89ef3aeb2d62c3da6529169db5027d6db
+f7c55d8821790b4332540cf3c9164a70814cebfbc510c2da27522e90eeab1629
+cd51fefae504fe4ff0250a7d39089e39486d4c146143e67b0b167dcfd4a4f8c5
+98869abbae8cf851797235068d9939f074d4ea5c0b2e0f97bd
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMEX10
+%!PS-AdobeFont-1.1: CMEX10 1.00
+%%CreationDate: 1992 Jul 23 21:22:48
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMEX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMEX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /parenleftbig put
+dup 162 /parenrightbig put
+dup 169 /braceleftbig put
+dup 170 /bracerightbig put
+dup 179 /parenleftBig put
+dup 180 /parenrightBig put
+dup 181 /parenleftbigg put
+dup 182 /parenrightbigg put
+dup 190 /bracerightbigg put
+dup 195 /parenleftBigg put
+dup 33 /parenrightBigg put
+dup 80 /summationtext put
+dup 88 /summationdisplay put
+dup 112 /radicalbig put
+dup 113 /radicalBig put
+dup 114 /radicalbigg put
+readonly def
+/FontBBox{-24 -2960 1454 772}readonly def
+/UniqueXX 5000774 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a
+e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4
+d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828
+e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4
+7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80
+523f59a30d195fcf9b9fce4ffafc6d5649664203ab24acb938d58d246707ffe7
+d62f04bec4b70c21ef75beb2b812622b3c74e969d72d3cd11bd7106294a99caf
+0b1629bc7d4de6b96ca82930831d64575f23f4ad06a0e45e315b1d392411be8d
+6d73c998789ff258a07a3c8c2057325784514c845500bfd1a971310cfc11d41c
+1a167dbd5ff012c60add4e87325f6e5299032a839de65fb1473a166aae1876a4
+414a434f22c1d241591fb36f857df6fa930608750ffc0c54f44994662b1f00f1
+400bf752ea8d83ffc4cb77a290bc2d99981ae59a191748ba5c7ba1a9d2583fd2
+1398452b6ff5d83a059f7eadcd2ef744e9dd22bdf9c79d049bf06835e878c32b
+7765c69bdd8ef4deb4ea7cfff4cf9354a4ddffa689de961d16772491c7afbd7f
+ffde42400764c68e954ee5c455a5687959829bc3b319b2147deaab3628662c80
+30c5e02fea09609abe4eaa12e217bc3af673f1bc36a7039eb13fcacb4218fe0f
+c5a3f9452d4edf46cc91db67b624d4f2d37502fb9f11af4da18ca40b61097f95
+d44329375467ed13c5cb585ec53f62b83ef9502cc755af44bf32b87b8ae9f3f2
+f8dbf72dab90acafbacd280db6aaffaefdff6d5eff26669bac56280a950560e3
+d01714ba38659b0e4e28bf8cdc1f15ff7e3ea9d95a6afbbe3d8e6905aa6d531d
+6b6dcab89e2036cc492c65f76ddcc3cfcff33fde3d9ffd10f7a90530fd5c7683
+4329baa902e701ca42717476298c9ff511b1941244bb1dfd0e5cab92a43970cd
+1bdb292eadd055c97972844fdcdb0aa06401e7b2632b9d134f96bce0064860f3
+9859da7a9a82be0a840672a1331212752ae1b521b693b384a72dba8d37a86eaf
+a0341e7fc5f6ef7a8c566aacb91e8bf5005c18837894c4eacff41dba54e071ca
+83fd01c81afd0f8ed01e8e7e1f83d1ca84a84329730700231dae848ef29b7b49
+8e98c0c2cd6b1a9eb6fdcd8766669873fcc87375156c660c91aa0c5fa804a3e7
+a51d2c9bade283b642a6cce6c992a687d8fc7decd56cf89c5f759cbda086e3dc
+ebae6294917491b87f4243f5be298c4a0b51e2fb30e34766140b9bb8fab61d71
+165797dcb0b619d16c39a41fd6d83128f63a49bd2c9a745277543a12fc0028fd
+40b9db5c58e2dc4c755e05066e3551c61275d6eef15532744bf3d4f37a3b1470
+c79c1e4c3c3a125131e361c89f1bc1fa4bab327c5623f5ba538577ad2a2e5cc3
+a3635f375869f0ef100a2a94bb277ef17402c7aa0e85f619eb3bf64b25485f08
+1ae7f52008d46664655a8aa06c8a86dade23971aa6da59783ce7a6064974a60c
+e2c01ae8d758c439459457bd5d1be9dfdeca15af3eb8fff5a8a0dad7113f0fbf
+71f3bcca9bb2dc7283a7e7ee61c0da9ba0ffb3464ac7f32bdaafeedc0ee5e1df
+ff7e09b9bd91af7c9c16ab259bc807826fce66653a8fdd9f604fea6dea52a2bc
+a21428026313bcece517e3116f1d1bc73d4aacad9c533687233f87cc660a43a0
+241aa78d56a0130d5d0ad182bdd5940ac7fe84615e107b46d6dc120d49beae67
+27839cfc2296f2e7150e209d6246965553198008459ec9c16afddd0593e9493b
+96d525967a7a060f77f93c52fe9f89ffff0143cb45855904af20bed3c1eeddb1
+797f78349748c36d1041953c26cd950e7dbc55ca725a8507237dc93eb1d004e1
+bd31160431cea4abe23651ffcde6ab47296b6c191f198531a6fde5f5dd17989e
+04c1afaa4e6377a56137f377bc8d89008313446f6a4ca450a0a31e994db7221c
+571c7bcad128f6f185fab01900bc3280a7185e8099d9c931db1ff01cbba6c30b
+8acfce9833ea264e1fb1013b1156f7fd5f744c989e95c6ce886959c286b1054d
+8b1ab1f9aba8107476282756184eaa2458cb7576eae649076c24f888b90f4d57
+363a2367c7d3210a5f80a3bc52d7c214fc46330e874b07df8964705a732d4121
+e71b25e69464f7697a08387f1bac0c8a70ec4323f5d5e5e26c70b835d2be589b
+1cadf2773144d832f746cd290421bb7023571a59cf662495d97bf1d4c71d8e7f
+0af2c079e5c787b49e83a484d18e88398957ee665acf6079557731f379dfbe30
+9c7762a40ce1f9fefa4cafe247a1249ddd29f9f229111c858e4dd9c5ff280cad
+377926a9e51d1822c9b46c52e59678cebb6bc8a00c28b678388a633408fffc4d
+1c8da5f1dc734d3165dff70144e53d0e6c5542b9b1e6f5f5aff8f6a9bd645f1f
+9dff2cf6f086c05dc109b591920441e0ec79ea9aad5e974bd5de9e54b78265ec
+b9fa0b6a9662e4a85a9886d63c132e320b22f0b77cb9eb78729755c9630fe241
+1c08c6ad0489128ee1a435276f479cb3f51f2cd87951f74408bccb41f14d41d3
+e1b44299f3aa37f99a150542a1d787547a0889084fbe9f9cd1673427cb2078ef
+006012f35bb58ffad5f06efa397aef977526bfced32a3547d9015ed089673f41
+4272a107e35bd79a453b94b4b669c52f2e84dd01f4e5634549b09937f59d54ed
+07a9a967a66a01adafaf5d6e387e8ad03029f16d5f5bd6315593258583f96121
+77dcc1a44883f0a16cb5f73ee34670c402951840e7da665e4cf864e7a69b74b7
+ee02dbeadc736f598fbb03678a169599055a2c736c80cba2aacbb9823e306af4
+59a786ad976da21d063c550bbf2d389cd824e3c533bd745b4b83c35041cb1bc2
+d8b50bcf38e2d38c3cabdf8791dbd20a83fad80abcff124f81fe576d0ca08664
+2d2d2bbf1c504a57aa63210d0730f24aeaa7e4e542da6ec840ab5b09fe3e2ac4
+67e3a505814777945717328a2772d41f94864a2a23b4eda3031d51e5651a7a51
+96901593ac6f14e8939eecd80ab6bf9d83a7a6f5ea0ffb62324806a4ef825a75
+3ee678921b24d883a065bfe5c572bb52fd246f19d254961b650b2c5b7eb3819a
+d470434a9860cee096e48396153da28a281763357d62dc541def4eea5c876320
+b5d426c8060b7d26e4668e9be3cf1fbd392b64511ce302a4351b7f7fb41bc302
+a1d1a919f1433279f9784adf109310060f163ec095a0565756e3dc9768946e6f
+89911259543d1cdd58bdd0f4c9a00c5b370c25920105bdb68f2c1410e93442fe
+c9fcdcf09a09b284d9ae46f9da7724595263832d4486754499ce7e3f7b4e549e
+322e78ddc3b98b7428f0ffea1351e37288d515554297dca9744aab1c1b63f06b
+50125a25ecb6f77fbc4d3885c8317ddc92a3e2545161fc275d16a2186e872b58
+95b3fadca045b953a25a0fbdffb639ac1007f000b17adfff7096480683c18979
+70db27d32a06695aa29d699a0a5673773e140bb322a23851f55037bbed4f5837
+1cb8633969392f5ac081de1a532b5cdab5c3e3397bb04991a82c6f18ca32e525
+a1ae1606abbc5a219b9d1effd4ed7a37a09fce047b6ebc88c32c7fd83b1f1da1
+d016ac3ebe2b5e561bb36e83673080a38e9f9f6dce919593265faa57ea7d5c69
+eb37afa4bd9bc7eceb40ad63f79b51e50522cc2f69a56237c8ea53059716364b
+17872de2173375415436ba3f38f05c6d5f8189e454114fe2b4100327c8970c32
+6d6c11f3562c93abf734a898a767d9bbbb34809f83284ea12c19e3559164e25c
+3297a7efc30f0494046ee070943f243f88db35e05088cecd9e6e65d1cf88992f
+cb1dd2b76802eb3cfbe0fd1d20f899ab37288566b2fd8b3ff35b279605ef0c47
+fddfbdad4db2f457e5e00c1cc6c54449c74e18d79b892bf48825b93a1271640c
+8a3467945f6335560f3b2a18bece23170f3f9d838ed4e2df81700271e4f3d952
+62208eb85cfc5ca0beb79a2a0b211565e9fa863076c983ad45ef14a5620a8757
+89beb51a6e73a340e7d9c5e9f8fe8a8e5881b384837a7853b53993785881570e
+2180a46c2978b53a4ac45aa909ba9021b75f0f2620692cab24d0c1441ea5d5ad
+0d686f598c37bd59d5c5f38fde3a336b30248723300d026446a168a6c9ec8313
+da0d0b07bed92a4a7a73b46a352aed3eda59cc24d7327d7db6490377e000a4f1
+904040141de349587e589a8b27522dce27ff59d258e130d027d7b85e2f79078c
+2ed595be613db6dca8abf7f8bf886dc90c95438376fa59b1eba65d027d8cb587
+c307efaaa79e04f2c33342ca55a3aa95d7818176921ab119fdd7c5b59373c268
+4e412803a2f228c823c2c5acb03cdf16b11ddd6611aa8d27aa9e1386a72ff460
+06f4fdd859806a6b4858df97576fbb2cb4177315418c52d47c963507e1a9f4ca
+62756b1f880f0db45cef1adef03a3ce5d89c629c2bd3447c61b6e1176273ff8d
+39d95ff8ad87dddfd09be43b8b981f01f892e36abf9844aaca35a9d9d715aebe
+456798a111af58a81424690738f3957190da927c49fbca0fabdc10cc7bb8bb82
+b81298b8b925e787dceff007ea62d91832c86d95d3c28cf8c754ce4985c0eb86
+a906e761140e76731b1261c8db0b23a7665d0a7281c6e3db253be2b916c85bc7
+aefea4993b06126de9ec2a3a23d4a85d43a1604abe2e5ae7dfca4abee5dbf59d
+3f05ed412b2d6faf6625708c52db27ef39ee43320d24a0fbfdc83bc0c4c3782a
+49b4dd15dffbe7008a7eb35ae61a708c78f1813f3a33cee9a72253031bb535b8
+e6b25a32f2959e5010cb3c3a85a02e8b393ea5643b4614cbd51faf81fc1ae2e0
+84db2f9701e0320e294d7969f00ffb26b96879309fd98baac374c64f5234eaf9
+6f5415e7a9d295f18a42fa20c7e825a0f34d2f2154016ef6cb9445d3d2bed594
+498a40d4b74aec90f6da03a23ec8e0524daad9c4db5ad78bb18bcf4a6540d5a2
+6f736c91e432fcbf971546e134ab469acefcb1be19bd980dbbe71993b6eb192d
+b8e4065e672da5f29cf2156c148aadb33032ddd5fdb7834c247064c763
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI7
+%!PS-AdobeFont-1.1: CMMI7 1.100
+%%CreationDate: 1996 Jul 23 07:53:53
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 169 /Phi put
+dup 170 /Psi put
+dup 179 /zeta put
+dup 180 /eta put
+dup 181 /theta put
+dup 182 /iota put
+dup 190 /sigma put
+dup 195 /psi put
+dup 59 /comma put
+dup 61 /slash put
+dup 77 /M put
+dup 78 /N put
+dup 84 /T put
+dup 97 /a put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+readonly def
+/FontBBox{0 -250 1171 750}readonly def
+/UniqueXX 5087382 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930f01bdaae649990604a33aa9eaffbe5b5489
+e5c7c9ff9d9be01b08220832c41caac64816b53bbc087ae4b621d2b44b21ae5e
+3f7fe4ddb05c675abfe30510eee4a7c874bb57b2ffe521a6875eddfdfd18c781
+25bfca5a097aad361dd94df46f14026c25ea988194899b95001209cb7009cead
+4b4ea03473ea120e7a7e341d4e3926796347fdb3a124c29660ac09f4648b313c
+b58e824884382f24ce08d2edc686923acace1201c16a07a42803288cd0b946f7
+546510e95b1fa1cc96f0bf72aa823d8e83d7c68c752c82a54c752eed2b1e699d
+e9db1830272ffbf2f4996ccc2d6fe2ae272798989525ef3b67b0d09bffcef749
+a805e5f76578222b9c4a8a09b13189a16ab746ddef7875f1ecf83e568f493d82
+ff729baa1e0834dbec30a35d3c49c9b10c5e1d90c6e3c8fb737df5ceb3299d96
+0fb79632f91f257753b4d2e34e3f54a26c7b950981fb7fe4dee3315db63e75b0
+24b4d318baec8aac9cde186f6d65767df1dba35124287c2e805bc660a3a22772
+0ae4fa097f1d75107441c0a0fbb9eec17d5516fa03b98756b7df7ac7eff9c7a2
+364b9f691ed5cb692dfff9dd80c761e9c4d5d6061782b327302c053ce1cd09ba
+0605ebf761cf9b730524e1994e7dfaa956799d522ec53d5acba27a35c4d28279
+617771938ece58c5ab664aa00c1bc4efba2d15504247a68e3af0f9bd59a387b3
+80db88cca083b06f5af70d768d1699826fb12ce12efc2b4c70923e052dbb964f
+5fa957c3ce225c0fda64d9b5321ee1ade207c1cc93105096cc73118f4082594c
+8ecddeb0d7bfde6f70bc62f10407c26a476ed88be7999d64a15912493829a9de
+62c71f5a34fbf5a843e311873cd98817dc9f8a4aeb7e0738b5de10043f5cfea7
+147e7035d2e47fc5df8590627dc99082760e8b3e1719b67e7451372f3bfdbd83
+00c920263b424101df6b97edd8039218fc327827764a8076339ebf1728e1a42d
+e3b7d0f73e919e5bf7f623e0a7b8f21ffb90958329f5f7a83b13947396a2797c
+4d4c39095eb4e35d58bed8a06f1c127e99cc860b914a089e0e88b6967e27ef2e
+61a22a09bcd54bbebd7fb7fe919eddb95430cb95d5386477ab3e658d3689f6af
+a3c31785f00c4a9e97a2f2a9916eaccba59ce308982d95f06e77b75e9a941c4f
+de260a7ef1cd338f666426635eb83b0d86f1f8da71f7eda46a0c8439a967964a
+870c2ccbc0a72568e58172b9c62f89167c6e192a5fb06643f5bdfe64e2333b02
+e07329b677e22a92b930e7f56421cd8219ebee12f998e5b6deb979b97c75a3c1
+f52d907e8a390709588045cae2007c3cf3298404ef712567aaace91001b3e329
+fe24d92cfe66600c534dc2d5c569b1ba8f97e627c2906616e4969471a9445225
+6c16c48b46459fad29b8ebf53c8be82c93ca667502563cceb7d1a8a56ed8fc4e
+d96c56c41a8e2cc22c789abfc5ebd4e4eaed9c865b25e804bce4c95db6410b3f
+3d44f74e24d3afbc40cebf188988fb19891725ee5bb0ed73cb1be34039c2c4f8
+120edd7e8e8a7b7f478116edf2bb92f550e81fca05de67d32676ea8b1f1cdf8d
+4071f8b2d2d3b3b130cd4b47e4c438155bc8e01f028b8a615e51741b8e8d9077
+5089e852dd23a68a652dd0374ff955c9eee4a0f971bd827e4e9bbf2322787cfa
+5a36a6ce71c52e25f39613942504263694c0199a62e4c5f0afd837d036399cc6
+7e65a0947af6671b21b1cdac13c742ea2d3cf429b845c550f534a92eb0c64ca2
+059e10e8e0190e1de9dbb48ae947b8860a6674378fcc66efbd1d61b029de6f99
+f7b5df44ec8528e2d48f34e6b03424d1238be314effbe755d2a133273beba4f3
+2831452f9c636c74f6f726a0a0aff955158f9c6707af81e82b6b8df60387c8c7
+d5b3398671b3a209e8b7ba501083ae6a2b6413d7ea7a4e985f008a3523c8de36
+5d152b8d545bd97d43b0fc279faa1048173719fc5c74c04c14c76e1155af110b
+0a69fd96b99c2a37cec90bc5f977f9fef986854499d9510d104ff9674092477f
+18aaab4cc1e789ceaa7616a1225a1ca2274cd54e420193506fd27b3882a0b9a5
+8617c1a9de4ae9e2f1c310e6487e29cd79d8da352aaa70dcff566ae1da376204
+f7b6fb90c87b9425c7c983c679a9d558818ebb16350553c85a724cc88ab1dae0
+bc141d6d8d1299420274dbc29264154193cac9f4c611a35a148b0d2c09f4cc9f
+18cc705eeb144682c7325e9c128c08b12d86681864389263e36e29f58575666a
+058946d1d8eba44da8061817bb8e6ef489e19ce3cbe15e24cfef7f4d48f4f322
+1566f68f9b504a7e4d3106c25e9d78db2ff6a98a0d31738c147936e220a56161
+0d6ed6c4019e1a74ec80681d9961d6778457a3eeb7d3ca7cd7f3ffadfc8ad2e7
+ad70e98f84acc6f34344de612fc9c00bf2a69270e22462d78a633a8aab7b5145
+9400fcea08cabfaf1a47576846e829cc5392d07a01da208dd94a7a97edf987cd
+00071b466b99473aa0bc9412ad138f6f76f24c0565402761a40d824feafc1f9f
+094e3836217edfa01683071d03d7e7df0e17d8b39ff6082f305643cf4e2f32ad
+d4f2d80d63926206c7d5f32f8738fe339b17baa062453e6e7da00c67b33bcad3
+7de7ad8a7d49c44034473fb3436d1a150d9884a50280a33bc3bf8a26c929281d
+eba0246c3ed5ccd7c76c1570c999df35070407a79b4b79f9b438166a855cafaa
+363e82e5844ae5537c2138b77813224b5deb90f383c50c770b8155a9ec281257
+fd8bde22d9b668b91367abad5169ecf7db6c722955ea2b4f9675dc7446f4ee2c
+9993636973f0f7c7cf44ddd108d0e38e042045c01a890ea1d55b535ec039ab49
+4a0c4b808d5b64385722e2e0a50a9942d2a1f145867bb710f728a7db4a429c02
+1ad8e037c9e48e75fd9ac1d4a0a217f7b418e53a197440e0c5b629e352890fc1
+9a8de1ca9a7eed1c54af86dcbabf8913117fc642e90757e6edae88eeb7300e75
+4d2c07773ea9b48db0cfe79f1b60762da27a376020233a6f5fa53e6ab02590c9
+da8a4a9c533d5c92ee9930302e8c2dc7b214d7a47497eb1fb4cb79d046b6feb0
+54d96468eefb908bc6ed4c9b8af3a3e3134cf02ffe261484cfa5869dffe24ea7
+3d4c94d991d70b31fe9a1fa659d7e68aeeef851dd3c2bf3b77ff4721bd382a40
+46aa3bbadb13e4f4a6dd2333149a10bceb25c64dfc6d290a111696c4397e768e
+3abb6bfcc55d001db6d4d6791174a1fbcc8aba7c76850361bdd42e6073551da5
+209fcfb0bf29da39f637836d2fab252ccb45b469a9b17c547f5b8edbae0c3653
+aae51f1aa402defd7500d60ce1c9c9ccde8e30dfd692719cd4c0b5e2807e1e8e
+299e2b2a5791b40af28cc6c87661eacf5647c8c1714f01af6f6e6a33d5103694
+7ea8c93ce5a0ad787aa0d20196b43cf5d83fc9266ee49658131dbbce0b42a909
+4ebaac9dc7e5626f77286a2b5b29f9e039944551005811137f544efb1cae45ad
+838ee1ae4da6eb15f465c1555fbc96b3d5d28c3e6a643201f5912792b4345bd6
+0e191e71903d9035a729e3fbadebefdabff735bcc0b8eae78557ed300de1a0bf
+f03dd549913208c1fd3b19201509ce404f80e77a06e56bbe53ec1b73a92647bf
+7face6a7c929ad2f90a8e4fa0dd93ae2e4ba2a074b5525a37e1eb8ebe977a348
+becf79c0e31c0499b41e39f3b00b0ebc7a8ba43ca3bd96b775d4da3e96c84825
+5fc7032c273c08015717005ed1ce32854c4d881963f447643a4e34f815fb86b1
+f3f5e7850d30c2e5552c392caaab926c918d90329620733fe00a77bbf4015bf8
+f989aa51f27519602e141cbebf7ce58eadd7511712ac263b21d7e0f9df29be12
+673789eb94e55e288631f3d65187da0907d4079bfa35b5da7717b6f4e9bbbdec
+7bafe9b0c23fe87b93251098988eb41f3c74ade03a3cc941c858165ae2bc7906
+8df74aac2c761182537ad6c65cf1c51543bba7088861ee4ef55f7b51aa906929
+2e55b92ef191c569f204fb4888ca17fb73a44f3fa77a6ca6f16211d55290295b
+277a238ea7c5ad99025128101212a3d9e93a1c11a33125ad53d7098a8f674949
+fff6ec2530fbdbaed6111ebea404124be676ba0c9fc071717c363e78c8fafb50
+68f7425073ce8b71681c8a0f2f7c583b143ef214bc5c37e1cac836b547910f85
+15af7f1ac515b320895a05bdc8e99a5fc615793fd1912f85c60911e0c2bb7c97
+22cdf152f1b3d05a911b0cf4a59563f72cbe73f835e13ecd22c4a7d912c582da
+5c80fafe4b4c2182d37fdcc7b8792e1488246ea0534959b79ea32204254eff47
+0c5a08ebf6c9f7b5294fbe8721615de2861e0796a3a0ecbb39ed3136739fffe0
+88ef4ab4f57907b799f2e1891e815a437aba158bc80cce53a3b1bf085e847739
+e71a23ff8510106f1220671e040dc41b5d350e5a8a5cd0d3107d53b5c8dea5dc
+a6a55f947be15f810f9276a0be7bb5bf97df075948a9bbdd3a884eb2297d83ec
+9766fbad839c02f3d854c81ec23e573b9da2156b8837ced31f6c0e6c81c0bb57
+f64937dacc016393989c583269a4234b02b5006092847ab3facf23b90f31f310
+8094b86b6730504b8b9a6101484bc4b4180477359f14a45c67da4ad70bc42f53
+39bafe5f6f0dcc56fa1cb5d98a78daf833743aeb0c8158b6b545f9a902d82d10
+8b9f2844266dcbd2f5a2edaf715a01b9483f4cbaa0524e1766cacbdfb27598c9
+4dc2b58b9c049bc98a8b799be753fac6bb8eb4b608164c7c7bba7bc9d1a97159
+171a996c9803b502844d9003d469b83145be75b08cd3ca021689e8129b2275f9
+05f43fd7c28101a896390d6634a9baa02db1dc5235415c378482880e47e4a57b
+db196815cbd3f38fc281e311a3810888c0770dfe532425c1428aad38d24707a8
+26d6dee3150cdfb552410f364597a18f3fed9903f42b82bb66fb56892fbe39ca
+3d691a6079f3111168486a3b5ffa78a4a5959df6d2509ae00f1102dcb7997b36
+3882843f504db8dacd0b5432cc934fa91b5465021e3161d4bb41b4855bd4dedf
+fc7f95283c7ecd7a9939c21e0f86897ef0f8588b36976e7b455ee1be0bc1a750
+f68bb57a6bb57c13a731b1a7cc83686647307c5ae68c3caa1d0f59ed0c735249
+e6f2df10234a55973ee7a833e528b2cc03329b83ae23596ebc9734407c93f879
+4af12a938221e500eb71b68a357dda265f63a663cda7eecf58a056454c6e35d4
+2ea864468064895c372d56dcd6bba66cb4fdb44b96d793edb7edb0a1b59c92fe
+8c8faf14b6b5121e770177c67623bf7c7acf287534ac9e5ac737724d4de8201e
+689cb14f7d1fc0ed9707547e60d3f620c0ed1d398476a64af25a46f06c8813fe
+ac47dafa5bbe414ca01518d6ffb7a5586d0f28f4f430c37b9032ada6cc0411bf
+e77ff41b58ac490283e761403d116a58ee5815f670a8ab7576f2b702572b52b9
+74bda75f6918ea6baf23c422a10cfc9d81f995fd72f4f646b24994738cb2b7da
+809f8cd7a3dc411d44338b96cf8a7db2fb61d285e3ed2fba7c4209da32054b8b
+8f228ddba0b36c340391efea84e3c86624412125ebedd4df39319a36d8e41707
+495b14d0357f9697b1a6c2616e93539ab4a34d7540a84f85c6c9b6e9665a7ff7
+e1114f1a237b310532691c777cc560cdc4e54037639c8f772c2ef69baeeee2a7
+52767f7cdad1e5b054d577f21dc09701e07257947503a816fc9b551725d03219
+0dc373c106891c062d06014a6b5a698f271104b01f2d464a15001862ad0575b9
+c99aa715940b367e938bfd12b47da7d3d8f8269a1352723d208a378f82fabc77
+c1495b12e488c3156ad07b64af1cd7b9d9894c7d86082b16c342d9a93d452a13
+d5bc3a66ea3aed828ac4b223cc3a975e83973735e122c877873154d87b05dc64
+5f6e0d3c145679a2467d06480693823767047b793c6e02f85ff2d936b9f84c1a
+167bae28de59bdfc74c88807d2a646f1c7cd2c671a4ed51658962ce9ad437261
+e4cf4becbd3c477b2c7881ec5c27bcdc454fd96b9e00473b5cea29c318c7220f
+50e6734fecf105f9417b1bdcfeb7e989a2943e377ecc59160f6090c019c02b5c
+f57222ac8c1c5632ac3cd4cab0441566c4d9548a4ebc433d77212d13468effa5
+af4833b2bc3c739a8cb16844eda0699befe7e70cb73b79f04ab56411e20b5da1
+52da08cf57577a54d8448c4b0fc9cb9ae9a2119472d5586f74b9a342767d142f
+ae6a5f3ef9cc84886c79bdcc909166cfe7610ab51db775bb3a86a9a9bfd6e70c
+83f9f3e7abae66ffaa4866bf3190cbea6ac6864215878f5b2d58878146f7b9c4
+ffadfa059589114219f463e5b7f6d5d775a165a967f4a6354515e11fe83b3813
+d2b4a2cf485f78036ef5c6e3cfbd2d9e54b3c1859e56b0cfa4e48220becf60ef
+741ffa02559f2f6098a3f4b0b3822acfd72876c01ba2f0951c1b412d36a39f46
+b73a84a5d10f5b8067691ed3f964bdada7502f71954e310fc3f01d66ea28fb97
+108de3493ba1e33f247b66852bac7129567c2ce8ee113115a6969a5f13695812
+c4e70bf84c454b1f68e8eeeeae1cb80d22f212ee46169524cc5a5d5935f751f6
+c78eb274319f00e3e19273085ea85e04ccc7610f5815d801f4dc80610c9e9b4c
+6edcdc202bb57ac44375bf90b9342557db435a91e2e943d0c3612d9ecca20f2b
+f16c230bece245eefd262d9142e3d47c2fe2b7485242fa15e1f999d5dddf1b42
+e380e600ee472c4f92bbe966346721b896309697d259298c9ed1c9b0f3dc8e19
+d8a5ab0035cac30c0903382aff6a1e032e9aacc2a15897563c3b4838ad1422fc
+99d3ef23a44a1456237b98c23e85ee7cd4be1d3dacc27084be746c08e0780c5d
+76e0ca769fbd9e519b4dba5adbb68ebb821e18cefd8ffc9f9d2efba5676416fc
+6a2ab1b9e12957f185d05b4f834a8665ddcc465096ba75726184f1bdeaa429ff
+eea9861c0d966a73dd2f9adb012e14ec8feafc3aac82647a56b4f2ccbdabb3e9
+4522622af1500693a12888b930e7bd87d1c38c05489e88ce0654e2565546f0a7
+07f338d5d489d802623661dd083738c516e1526dec7025b628c735cfcfb4f928
+97a19b0ba8689be60fe22c7bd8b638f03692484b97f87fe3929da81e9d366482
+f770bb821c138117b697b5a12819197d8e60c3cc7e7f6f7c8fb685a84ba801d1
+b5b9308a74bdc3ee85d4eea9d971eb381eab64a2a0732d52adf82521c21d9954
+eb379f05ca07f7474a2998d570f935a933649d39b8c2c99e9013e2d566efde3e
+1f5a1882c77ac8387077f444051c163a5de6691a6baeff68ae4303a5bd4eff7d
+9815513219798df0a152486455558ceccd4971696828db4804adfc71c597debb
+d8999f6c8422c325bee667ae5e436ba16dbdb1d8f7881324a061594497dde105
+6e97b5099ca35827ee35f1e3172a0234f3f2097d4c708d8972fc78cb353c6a3f
+e1bc035418a0b5cb5a8d852e3ae3c71d7a2da9569ea4c9b5ac4ff406d52bf4c9
+01a874583811e317d3bc3a87ff5454fbb3e235c2c2e37100b42f550c7ecf4058
+b019c80c6a89e2f7823a76f2a4411cf7d3206e8553f24e5a9534b1e535a4f6ad
+c766b3aa805cf0ee1648096b9e11af7c4dd7ae9b74f200bc83bacefdfe101eb2
+5c569263d33678106d6b24cd7a0d6b3044b2997e920c7a2464af39d7cf7c069f
+376b72e1d80ba5bba5c5c20787b352a58136399aee92aa94b8e14162f10131a7
+990bce1ca5843f59ebc0510a5ddcc274e173a34df5a00e065fb5191411067793
+fbdb67707219d2e67f8754458f24184fb588fae5fd54a2dd8d800e149420718e
+4b8727a1cf38847a29e048782f2d7dd15467cc59fd566e5b79e584406011c681
+85697384a43f6b2b3c0b9187c6e4c75ce2d251d5fa8539bb46a5e670fdd1276e
+e8d88113f4605f6ddb099ddde45febe9b8d25b58770b6be372358df9c3c6a754
+17f73d1ec3cf04450d4917b2819992531e2898ac8bb59357cdcf255fe95b8781
+e80f4a305420297f423f50f8388679f0f1217853e0628b10210d037248c783ee
+5db83074632eb7cf8fd99d849619076d8e37edc4f2ee3c297691f883c4b9e1c7
+6494fe4f1b77b6c4f880080275f9a062ed5f49bc0b25439acf21e0d07917712a
+c17d378367e8923d99f075004663a34c36eb6f8085a5a80151edbea4b0c95cfb
+3f644ac84c34954cc3d5fd3eca967010268c5cf45ee88faa4034d50c6fd4ddc0
+b66ac1670e7897124380a06faaf0a207256b62870b1247cc61d995a9cf653fce
+dbd00e0e16cfb9f0a64042b447bd511b4784b9819752bb4ea85a13a9e8c21133
+ae979e67a5d0ae2f23ff652064c1567b473c5fcd2afd6637586ad45ad49e57f7
+d9cb2a72a08a94520c35efd169781152d8205a448757f55e219b1d890e6d4d25
+458c44d7c28a305522e09f5079f357164dea324da01893935584fcdb19b701b2
+7a77c9af02e693ed275989ee9d36e964cff8b4c8668b27e41d639cae2b006ae0
+ec0ed106bd83ed84673d062f1a9ebd147b0bbac1bac6526d958ffde9d7f52872
+2240cb3317c1b4dd4dd8bce855aea84d3f438eabc9bfe6b0dc5746902e15f256
+0002c4ceed76980686eb2fc25523aea4083feded651c03376d27717b5f1123ef
+daa6ec96509171ba6d1330dd3e79ae5f3cb950e6fc5f3890a8d88f92bcbb8720
+c1a7b570728125c9bd1bb04eb38346f93ee555f7f88d22fab4fd91098e83f402
+d72cb07fa87f05089bee2989c68871599771d9c225c6a9e1c7443a981cbf1520
+2823a2e1cdf22fd8c6a43507c27fea6b2447d3cbd0963890fb7f1c04d119ade3
+786411635878e4cebc456f9abb19c2c452afad5589bf194b5d5716deeed51d75
+3d21a0098f55d18af641a0a0652fb547933e4fe87188123e4bfcf73e7138d7dc
+8559b58ef95fa09950e0ee7ceedc69d9ff01382a6746160c997ddc6d4f7661a7
+e4edd18843c227bc148d369537a756d705d2d187c867189240d09c0e2e87ae10
+1d7ae06f0d6f909709756c7e05bbeff9621ee18d5401f1df60097caa66a09e82
+6f2230866950243177b22973c8d865caf09d0cf41a22333dc8f303b966f0870f
+2d3fe1e29a15efc469637145f9c285cdb47dbf8ba0f8a96a8cecbaaa4c5a9e0c
+e8f50e44fde93ed81689fe458f513ac2c9491242384c2e32975a19da7c61b5e4
+9652860c26bbccbe32ba6b521dbeb1cdbf83f960f0c6f42c9a32ae90ad8d6b02
+8ad1d0a360a7238386935409ea98cf4f33407b37626686e5bbade51787ac9773
+4f652735579ca44c72ad493df570b97467183e22df9de61bdbfbe71dac6fbc8b
+498f3793efc3cdea02ab1f4a675b3b9685ff46c842fcd9f1900f14db91c882dd
+026f851edcf066b94ec939deb32253e6a3395b56f54202ff120365864158849a
+8708272602d61441b7bcf25bcd48518170fa293d79d3178a13a5acf07606ba76
+9055b088b86985ea7132b236a4695377fb69b7bd7d53ab87e451222577f1d12d
+2852bb026178e7c73849f30fab0a36404307488e09aa336c47a155564873285d
+e962b3eeb688eef1da33e44c0379ba8a5d6720f7f003d8476ba5ed55b024fc9d
+740c10a9747f147022aa15bbe4921e44a40746309380510310842dea9a280f7f
+caa4bf9a4f9fe60dd02764d54e4ac4de8619979fbf0cd354b9f368c7b9db6142
+ee7484ffb26e395a7d82ad96641f589c1e44e77e19bf3a90c07696909996f4b9
+d26a638147c8a56a06e0e813d63c21b48d6ddb52ddcc45833b9543fcc4ee49f0
+0712acda15ae87b9b4d5d175072b344ea3f0d4abe7f1ca21a990001e7b2fa918
+a0a52471a4798eb990fb67ff33a6a002ffb4e1e427ef7693ec79862baf76a944
+63bb7f99971fbb550e58c7d5e98af8ce5f839cd550491350e35f5da6eb5782fb
+81c3752392c75d50e8af864fea1254d1b8cea19e69ffb2bc77a3d658afd647bf
+f9639d9af3ca5730ca056e135bf0d624e839f527198bb04d288a8746ee6e6f68
+1204c5597f4666975820ffcf03bdb441df5cb4ddb12c6a6704dba97d52802100
+e100d71b5e30f20745319267d35f8627e7ad038ca60551108d48e2b4929720a9
+a8e40bc0ac693326017973b3d51266521eb88a8346fc09a4e93650265f375c6d
+81b88ee783ab74204ecf269fbc1cf68e2413a5204296d435a419a5657ede3d9b
+7f9396dd4c6961005a4eb51da199861e426e5f9a5a3068dc998cde0dbcbec032
+9316be823bd446f4a81a5ca1265141d469b941adc2f0517c7f38766d4c97
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR7
+%!PS-AdobeFont-1.1: CMR7 1.0
+%%CreationDate: 1991 Aug 20 16:39:21
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 169 /Phi put
+dup 170 /Psi put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 190 /oe put
+dup 195 /suppress put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 43 /plus put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 61 /equal put
+dup 77 /M put
+dup 82 /R put
+dup 83 /S put
+dup 87 /W put
+dup 97 /a put
+dup 105 /i put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 120 /x put
+readonly def
+/FontBBox{-27 -250 1122 750}readonly def
+/UniqueXX 5000790 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b448685940729e6e22f4be0e08c6505cba868f7950
+93f556b64b808dd710eb936d3ac83e5783b5f7e56d363a59a026a5619a357d21
+c4e77bea121eb24b09027d1aad93158edf912940e91cd2f17922b35885894644
+7773730bb19af9e70453e1b78d5edc123b273a979891d6d5e624f4a388f3897e
+13b045e34b4ee2f5e4fc5e996d3549640010c671de14d18b0b3cd300e57dac03
+22e59bfbf7b29422230870f5897fcfaad4b50c7c1c58edcd119218163d6f6e56
+25ccb882db7b6d09a1586508e8cb642a11c29a46915e4a96e282079cb21922c1
+c2e360b487a45302fd22ec8c5fab63e54b5e844d4b17ca2fff37c69c366dd72a
+d02922c14c0932f65ed03e4219c117962edbad2dcdeaa9c10ce8af38a4ae52e2
+b377245b0be19a77d6c936e7530cc4d0b78d0cc4a92698fa2870fa54f2d8503e
+2d17b3d52fb2febb09f2b2af0c2a1892039ebe19a690098799a858e3d39631bd
+6925a154d161df3918074ada6bd52baddd0adc3f07e2d9f15e27cbf7fe8b98c4
+07205c811121fa91e059f2f99322fed63f359ac9da97aec383f067f23e5de331
+51e80f0a88ab50fe8fdae4a5de93c1ae2fdca06150b37246140c0e87cb2325a6
+0d2349162ae3ac93144eee1e665a1289105318fdfe86b6e76251cb25adc967d3
+d0b97fe5e279e1161736ab22b4ca510b964342383a840defd38f96a7280e6ac1
+34e48d740607ff2e7804164a16d47735864db8463a486ce4314ce68a4abbfd0c
+1d8090a1146e51c1147146f1189098b0ac1b31819e481ca297840873961ddd87
+af46c4d818cc252607802320dde80926c63221841035992073004f7dc1ec8b82
+581e2e62ed4d0cc3ef0599b2dee151270a188a7649e96e60b4578236e03bb332
+6e18e077fa8af24e434ae05a3139f24b6da32f4ae82a86570b3f933c7c8ab503
+7809a99ab190d89e32c8f9a62383c0b3ef7ec5822b4938ad704a2c34c6d5a572
+057601b56aa011cd12df0e1eebe8755e3b81529a7078c81665e3ffe19a70f569
+d5b8aa10382e9b6b0c39e9c114e4c5b70bd04e572c5acadea7cb0d6083af2802
+e8ad26c08178b96c8d0f9793b99f9c009a86dac57a5ac2a23dacefcdc3ba6c11
+53b4f3db8a9cfdd42402d979e901d7a7175073882a3ff4e0875eb9c2531bbdfa
+1573b48540bc7ff74997ef4dcf62e626bea8300b6fa5d830d7952c1fa015db0e
+d9c1a92e5ea1f6e63cf57ba487182089f1942fbf1c63e4530381cd130ebeb392
+401765cc33ee6cea4e0c700f69327f29c36e1f49fdc9d680eb446ace99e1e91d
+e76200f1f6f5aea7c887055a8783fe497f4a807900408332f2350a1a9da72cf5
+440ef0160e0584881b8b3abd28263cb51fcce08aa016258d16d38be4008673a9
+41e51a25f8c53361cbbc63901b5a19cad6185a32d5f239f88274db5571a45b4c
+19615516591f93ea0c75a542bd1ebe5e7be11fc4409579ad89d4e9e49754d26a
+911a1c2acf1082b6e64c8af34ca759d6fbd06def101348d213059bc8546a90b8
+f1f049969eb786eda38220631a96a5b138ed4be328b43621c621b5a484954163
+6f74cb5312868d3456dc4230dc3fa67648be708b082b217a711502f418c16000
+79fad6fd0eaa6919b4ab95cabed0a4f93052b60c9009e5f5f5297ee601b3169f
+773fa845db04d94e447ba91dd1aee9d22c2a3a90c5ac297d9a5f1f1c5a9a26ad
+bffd12562f16f6dc0bc6a43f76b69a07f0fb41cd9b31f0e508e8e30f243369e6
+51860e6108c216084af999298f49787a17ad6ece96cf6a00453ff8d6b67a8bc9
+7d28294cbb8bb546d314b1fcd7c4398dc145abc89f6f98453df6c63ff4e17a8f
+dd4573dd737f0a892d13f68d433b901f9be01c4b936be2eee82a81951998195a
+baa16355e62933fb7e9fa8014358f90409f958645587312b00139b482a5f4954
+9f00b2a22d9b9a606d5456d4e9355ffee0a120ddc6b1c1b35d961dd2e8efa89a
+f9d0b01c1bc2696cd62a16c62709a3d56e2d2a4f475178ceeca0ac76918452a3
+775319b5b0b4f394eb835217bb97cf24bba6fddc9ab3464ae902bfff94f9df99
+ad0bdff00862bcb8d5747f07bec24dc2cf1febcf6697ce8995c2464af7e90017
+a5c7bbb78d5fd1b1722cf2381010769318796848f94dda98948873c6ded32a00
+ef2b30ead80d9888a5ce6b9b5356c34878cfe66a8adf0bf58b23c63feb5f40c8
+103c95d9c810d1f16ee0a91229de1da26b287fa05a7336bf724b835d530af61c
+90b61bdc2d7f7e602e19eec44b818725d34e688f48f86af73f804061fc949484
+012d4835ce027b6be16f57b36213baad42cd09670c89b548ff2ad945ceb6aed0
+83e48c6a2588b10ee0abcf10199a038db847af51ea4e30dbae544d3b40e09290
+ca5313ca018791d857ec92cd0f7a617906ce558ebb72fd6b16bce7da9c523e72
+09f2a84b5152f0d3da08ddd3b034a308f955c865d7d5e5751cc0c910d1f16e67
+ac612c6a53ea8ace93fc31f523b2c23228f2c7ee69a07d137c95dde1451f53a5
+b4b1d58706e927adab98f0fcadf2b7772364425434add6cb09cd206d9e43ee02
+9f4ff2de4f78fd38030b6834c2837a2fc40a9fd2dd0fc6293fef57058a42c13d
+8c45ccb95e1367b01dddcbb86f4134fdcf360f395427acbecc2a9827d4050614
+6c69a36413e8708e03fa9eed737e1e15e65a68a1c61b4aa65e5ded6b532ffa1c
+e7ee7e3166861f774d392bacb1becaa900a73dcbd5b22ae795be3408f44be9a4
+2ac7c75e8a35e133b758b05da5c640927d7d874b7e3eec782a798cc4bb647e56
+c73716b13e2618534751d9d8dae3286704d4b3f34ca4cad68e50aa01a6f5ad77
+2ade78d25707ad496a74c9feee3fce7134a9bfe180f836f6e26203ac8783fc06
+1897d9f746341f41d8c2db44ae73c267546bcc39a9520aa37550a87925742a5a
+096c8791fc77188e2a42eb87d4b2be0c80ee550098440022306cbf41810f6d55
+70a8277ceedebb7d642b3a01ef43151a283bf48f35076aa446260fda25ca4260
+692a1ce43aa9362886d381b83d265f83b0b2e1a31fa3b631b0224ded93337ecd
+e4243c9f046ee739ded9c66c144523fc7fb3b84546feaa2778ea1581dde1b732
+76df3555c14dc4d515b880a1b96e34969ee74b4fa8fd7c13c0fc4a6bcdf4aa6f
+6087f29967b8b07954961e4651a45e654f1aec245c74e8e22ac9c1a15e5a7ab5
+15d86f74a7ce60d4dd022aef83fc25c17cc910386905ce1073471155b5c593d6
+434efd517764d3475fa25da4f3bf716ac67c1f2193ff4cfcc258df46b8f182ab
+9a841b0b5b2b536b494069cb62232f9ad6b6b49338faded23961de46918139ff
+3db10fea939aea5cb2dbe4801f40e4a57bdb5208201e5de364e1cda703520091
+24ecf0761ce68aac634553547aaee290d319d2170a31c453689dca621dc3b566
+5154cff71afc8ae8116d7ff6e1378ee8134e547ffd7194c428b4d1496938a073
+aec82e3f6d5a5e1300fc33def2535fd13d80f74e4c8597dcca543e5b180b38f9
+7459bd40ab33271f6d419738c0bb2c5bbdeec8e908fad5ed7ad5785e47a800c8
+a36ff071bc1c5e3bcec2b5311572a03b97de7ca75470b1ec45bb127d813d5200
+51dadf9c9a29d907231b0b7f7a56471d059aa5c29894e806982eddeadb9c7a6d
+a15572fbc495f4c53f19e115e69fcf388f21786b0cfa7d393cbf0191c09cbfd9
+73ee37df5257179cb3875512b0ce8763be1502696a5d2d3bf45f3021bdbad352
+f5e30dfafed2c74c0774b22913849f643015531fef602828e11f2bef892a62fb
+16bbcbe6a3a99418d89a6bba1cdc3e299fdafdad17db3b6cdf6fa39e01698aaf
+b81714f90bb3bcdb19d142f428296931e019e28d591d3210f786bee935d19108
+1b098e5d73f493e6cba62aa4e851f589547daa7f5ff05da73ec536dde89f2856
+859852ad3f5b914be0b1c55d5bfc425dee07eae1d32c33a059860a74910179c9
+f7074c5acc2dd9a30af0ae707223b6480a5dd7b23814cf7f2ed2f5cd92f1fc4e
+4dc31a185844367d8eb74ff98869501c34f966ae3ff6224d95f53cfffe33c108
+d596fe81cdf5df5a7828657eb0c6b150f59bd46a1fccf6a7d569c1dc27bc8ce1
+ad68e2b9875d095647a52e0f52419c93058ff384e61ec2f3d831bb8589a61bf2
+157e095180e09e08e7e4346bcec5ea9fe28016ecbb91e6b8c9ebbd45a3ad3acf
+683f8b2f01de399cc4861a087d4d7591555a8a39a5db566284e65214054485e3
+63c9c4c2f8b72fd72bbf31536b280c39bd07657898018e50de1dd30241ac46c5
+6d7fe7869b990895262f103e9dbaa2ae5620b5fe84187ebc41446d9b5f4cec1e
+e233ea5ef6cb8869ef59c646f63ea4583828e1806196b85d425cef6d4a44e340
+7921db10905607a044b142bf7e2e5df626e4860c3674f2ee70927b263c144e98
+642cb853afdb5ad29e8676db6e69988c290cab5a93db9fad23d5d66ff31c06af
+9c0a055fe65ababcebd431a3169b1123729a9f50ec9ec90b1f17dfe8276029af
+cd22530a101fc3822e8d42a90b5295a1009a42c170914cf1b196aa0f3ed61bc5
+968ec1100bd0d967d5d51cd1a4f4717fc4d232b217747ce6a5826007b5835fb0
+17151cd94ae6c78c8d77a4bf591f2e67da58502579a3843e515df02052c465d1
+78690169082bfe79b909852c51a7600c81580e7f5c5f2fd100e3ffe1547785b1
+a341f0214cfa5512f9ff3174d8fdff2f12cd8fb2e023aec50d1f41db285432a7
+aa2a37570c129d671dfbae9a1b3ffdb697c4415f28812417ed5903db6b9e396b
+d635ac25da5ceba94850f589d6f88bdd2d93d53c25d0e26fe176eba826c17f2a
+473583bd1ca7e38a0e0adca9cb2ffd4fc13ae643f77794f6f2e7580d031f8b11
+0296992c85a82e2ea4dc3b8d75898a6779ce4eedff3a5b0ecd4f7f5353b1e1fa
+530d10be3a4a9e0d8e89326f14a9e6c10a05811c08795f09d61a38fa0df3c4ed
+986ef7c47557e8472dcb0c8250319e269ac3e9ef404ef730a51f8cd1f3809ced
+63fd6d64b0df6aab5ee8d3a20cc1043fe9325e12aec7ec71c02a7813a962ff84
+d7f9b48824a129c5db73aa9fd26808e49856ce5026448ec8bf823cf3da07aa46
+19c44b897fa8bcf36bb1cd34a6a614e44bd78248186a48fe577d108ceda3eebc
+3af2325fb93fe85f467fd5ab63e0e3142ed40692d4df1c2a4a0a3f36f119f34f
+8a5ebbc8b4dced0783010dd6a0be66b13c8c34f987b64ce001d47357ecdab8ef
+a716a7b67ef253e669cc451996d96093522d94a7b9a3da37460854a4342f428a
+9fc10aa47f18ec35009291c9260a13b2ea06b2acb075c3ad1da47c7a1eb94159
+18685b33ecb430a17ce3cd6a4b741a486160ee508668d1778041d54c3c694702
+b454e6f1f6ef9522b3ddbb3de042504014edfbe5247aa69a71734cc756829045
+8c3180fba43409791bf645ba3c061e0c51a866113bebd1f5022b969f3a02f041
+d2f4b271e81261fec27bcf4a68efaad76eac2480fa9a8f7cca2c32769fcf6507
+1299ed750a3d4f3cd9ae53e6710fd10c8a778b0d9c3dc1c14fc4e3dda580fe5d
+4ba9f073fb5e6028c4f9df877fab07d09d64c3f947791b2fc26222de8cd44033
+600ca3027e97adba7350b9d92bb72b5002303ea9428cd10c44fa14112f96b0f8
+de998672f25017d2e516ccbcf818986eff1c603f1cb1f4eaee9b0db1d58b5410
+e5cebbf5d2db16a54a2cdebc085be760ebab2df82e97b174c57a4d786c86bf6d
+87930cbf13bbe23a18079dd32b6781bf1d37024461ee4b8b851d3f9a86ddd60c
+e179637666f1e3b1d59d83ec1d8c1a0bb50c9a2620a26c8c720115c5721533e3
+b47778dd99024381327dda66768cd5c091a63b88c978ed0103179f1ba8c6b3cf
+ae18ea445d78dd8188f1f6f34d837675e0e26f6edcef109ec3e933d11a6f4f1e
+132b2944beb1d3f6ed43d1adc8d439e14100242eaa73f3b65506501d94e9904b
+edbe234e1ef22f855e50b10c857c05a564def9db8956ffcfd0bc89694ff9daa6
+d9486242b53862fbce5d902bb38e67b2415ed47fd0d05c8d2dec5af352b91e1c
+00e822263e8bb5de9c4900a8c4e91dd63d7f4e2eb479de1aafce05247a5c798d
+e79bb3530c143528e7bacdde729a01bd9ad4f0fa017a3353d091a63a8a917283
+e4f6cf53b060fdec978804e7e7383d8d753547eeeca49830f8c62fc17c1acd9e
+58d6b29c31350fcca47eb8036d03f1c7e97890dcb84d3eabcfd0f31d8fd2e1a1
+e8c1f705347716a2f77f001fc6e2d6948885ac6e755006750a5fb0eb34314008
+5d949d9ee873c0c1a6ec75b9726bce5616a49cd2859741aeb7f5391c9ab30615
+38387a9d88ced3e6410c50b299f9bb57caaaeb718b889381e9cb04bc0f14203c
+b303fde96a0814b86096c4755faa91c583a94e74afa72799e3c803142f600793
+e729515cfa6c402aa2618ae8cd85faaead8c51c158ad38f707653b7e479007f0
+556d77a4273d2171233370e9d81d3ccd5d11cd69530e7e6b93d65d4c7aad4631
+d8e14bdb100647bae660a441cab390c3317e4bfb147405093ce70de0a8cfe87b
+1370af3e9fd782d7c31fb7e8383f7d1a63ab764826d0aa823f1bd841ae52c9f8
+bb28d99016a397b8b84d2c1d8fadb6c890ef60a42c92373deb8304d4ec747e20
+c07da31d7940821e931f40693f7d8c338d872f11751e2221e85558f9fd5a8a6f
+89d81e7eaa8b3e5eab9e50e4acb633af0bf5616e20b6dfb9c9e0ac261ff86c64
+f608df1242ccc28eb6270fa25ca79cd19fb8001a60a77d15253f0dd3f5166904
+c1e7026c5cebe7113b7f92f0b09540431875832d9dba934efc27c90e57209fb5
+c8d0e958eb99a417ec564b86f35e88908bc23d379a4f8400aec02c228a031930
+0cf9e8e0287dff1deb110a4e167af30f9f22a056e0ea174798b04902af33ab49
+10db22097a9c2125facd1d39bd8fa7945785b5bcaff042575127b22957bee752
+612158b8d009a804208cad94cd0220440e5e6bd486afd37a41733631f450d2ae
+081e83c9372c6211e38e21d854c8d7ac72d138572e6793eb5aaa906e23211713
+653fcbb20de370b84f648c5717e54f4025496a3a2acbefeed6b00825bf025dfc
+42f51f87bb34492c9f76a5427c62f10e6682ca52e17c7103916c3412f06908cd
+85f70f0c7e4141ac419469e95ff80952e3a80656f16227d34e8efed795d09952
+6316fb8f10b33735ac0db8400125ca2fa139e136de5bf0d4648e17bee29aac50
+aeccdada2b77e2bdf48b8fa18f306f386fb431d708aee35abb3454b1bdd1593c
+ab1383f4b949a86220ce847614b62e4527b331753b90dded26e3ccef592c30d2
+8279cde4daa79c859e71a139d503ed730de0685632215e8aaa05c5cb03747d25
+ff8683368b30c2a4c876cac57894585d6e10939df74add342bb729d1e9a3220f
+d4b242d2d25b7579a8f01f0720d4b6b7c201bdf0f71e8281fdb8cd0e1afb1440
+4a7e6da47cd19d09093d8e0b2a83acb4e5bc65db95b36460a37c0318ab422b3d
+daff5573a6793c0ec082884fe2244e0fb103f146ced00fcf2aeeab146a350878
+522006d2df2dffb402db5915d384ca929564f64a5709736d9a9cdb317fb39584
+e9f1030e442a6ee6e01526937635657fa0c99ecae0ac7dbf6a866b52dbfd1c7c
+0cbaafa0893a1f136f01d19d2d89fc7c19edb745cd8d97d769c150850e85b7a7
+14ec33e5db959ca31cd253f58024fec165fc1a115891b42aa8e673cb0a4545f7
+58b5291a80714dd0b40d033bd3a617eed04e574b695b790d9a5e50239626b619
+98503f65a2748fe42830e75a9e3ce93ac75f37043d67bdc00c5ec893e8540cd6
+bd598f688306ea15d7633780aaadab353e55c3b791eb816ee2d7c9fdab3b64e9
+4ea476690b4328108d190f39e4ee15ea1b78965dd1be3b6967f98851d525e837
+3ab229c8744d577c20d735ae325f29a2d18d863c12f55cc80e77a77f5e5af966
+57cf58c4b124eb3ad2011f7b8cdef94bf58cc9daca59891972e7a2350ed6da9b
+f5ad123cac24e7bc1b8ff8a8260c5b088738cae5fa847499daee3a5b7df30c5f
+89fe806f751d5da2d2ede3a147648956d10bb1006d4f1c424c65ddc06cfa4d5e
+4a57d038458049b26bae929f8f38dd0943d410124342639b47be0e0a212a76ad
+1b6c0874225bef84a7a082a9162b923fadf96bbd077b502f2f1c3761948ec04d
+46b0fdd3145870a1d232fe7af5845bb16f150de7934e9f76c9e17d1f4a100a4f
+46af97b9bc72e10b07cd232dfd7b16982de94029505144
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY7
+%!PS-AdobeFont-1.1: CMSY7 1.0
+%%CreationDate: 1991 Aug 15 07:21:52
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+dup 162 /periodcentered put
+dup 169 /circleplus put
+dup 170 /circleminus put
+dup 179 /equivasymptotic put
+dup 180 /equivalence put
+dup 181 /reflexsubset put
+dup 182 /reflexsuperset put
+dup 190 /propersuperset put
+dup 195 /arrowleft put
+dup 48 /prime put
+readonly def
+/FontBBox{-15 -951 1252 782}readonly def
+/UniqueXX 5000817 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f73e9b697ddc0351763500e23c4d170ea8a2d2
+75ad0b6b23097f02fa803c1f46f9ac10fe0e527c431b11b1b9a50e874896cca6
+17fe3e255960846bc319ca68b9b930a45d5d0fc36b352c3443ab6f7793b38d2c
+7fb9c409ab7980ead55e9f8f6b83c70088d1fa6d7f2214da8928e40b96334ad2
+72d1b5db9d1355a579b26a8dac21f021e393d7d837a95deb8de92ed818a8b80b
+98ee9cdd8a3c57ad7d6eb7a82f43eaa6ec520eefa7302e750edc4b495f70bba2
+24a2182eec37f1a1c5dc8e20973007150237daa6bf03d498826777eeebe09014
+ebfe05a8731e1a421cfc513d47d673e3d94d805f5d0668ffa265e0962cb5a75a
+4a93d9b87126ae4175aaa7a9a5a5e8bda6e3a2f916f54e217750f7a8d2b8a6a7
+926bca7b3e3ec4a41de1f07491614f24a1972cefd10ff5a96c0a0c43395fd7d6
+ee18a644127b768e803e6a3a8c589e947d5d987c6a2d3d62b48d8e6c6e0cc91a
+a9a66dcb19f7fdcbd34836647c67db0da98fd86ae13018a210ded2cbacef4c1b
+067cb6654c3459077e0970c2e31fb0dab34d9531842db375ea183e6479a8129c
+02d9dcafd49118f9e7b6154c112cf5d34249f3b582bf8947614b510c09a834f7
+ae54a0d5fb80f2a924c9f33bb4753dca48f2a81b3221f2fdd063e24e89b8a657
+ca89ede0edd05a3da05223add5a04df6631d2ee18c8e45b9ca57656606f64e6d
+782f305af90ce158d78425b111b463820352bc2d7090792de1b414eb50ceaa67
+3f03100b0efd5a31a701b6a91f787e880d0dd2ac73212d711691e10401293b77
+b41102a3d4244088ab45102197265fe96ff63d7acece7458972020bcbe2c641d
+583f9bf87a811434f2776e06b403e1cb44c5b3683688ed96b1f3871a2dc483a7
+a42776bb94749748c587cf392acdef75e57591c729b8d97f89254a1d63a1a693
+a5ea38377efec7cb0e812ac179c4570a57686977100792f143c63cf87047fa52
+773027f23a34fd43e417319fa7b13c9731f166a54368c3d29c977344a2ff924b
+33d29e620f179fba6fdec995c0a61183e09f26a9a8664f0cba424efe4b19e578
+ef129ffde94d5e5795c7fc920d8675ca425a48ef2b27264431af55fc6e37e898
+80c88f41513f07a50a2e3ada21403ba8b6796f9884863ba8b0981ebcb645a68f
+11b541d1d197a33eaeae8fe756ab289078c0ed375cef7853faffe3e7c0018fb0
+cef3581e08991e950d254d940279456ec8bccb6addfe07f0b557c473caf33e71
+7dad280fa83bf95958ed933dc70ffccd119c0ca9e5d243fa327a196d98cdb403
+75a03a2d98446ca1664be621f689dfe522cc18f104cbad1c1dd6b5e6473a0259
+b1fb4fc1f2a2696560eb86b844d2cb61d4ca1f6274a299ce6816a81460a5ce1d
+15987a10380e48b03f36c760fd8cfe50776cbff6fa5f2bd8875aa663e20ba04b
+2a0e46b7b2d30ae4ce05c95da620a3dd3581e61a03dac5224eb4bd2dd609eb6e
+e05a4cc2f0c98dd70dffaee99616e5b6c5f328afa3a67cf3c9d79a99ecd53702
+1743282801329ab540f3ad8b9488a76ef37a132ee7b62815711dfa6b475da98c
+66c9b71c62badf61b91a26e11bf98a309038560d3a962f92dd7e139bfb7c0ced
+011a6cb7e02554b027f1d04983240888a068708724d9fe62c6da5b12e4b01b99
+8e39b96d3cb2a261ea5c77a71a8a650cd4d60588367f976ce6c0d1f0f5f48d89
+80fe64be2d1a65d5046026d8f00cea82d9987398735e5580ffe5433b23946598
+d65e4ed626b0a11dbdf042ac6f05abf5663798932ed3424385e636b4248ec7b6
+50203503bcfb36b1ada02f36c02bb8cd9e0a6c411e6f1da28e8f197f991acbc8
+16220f1b1ff8b33807f340627082e88781f008f06ab3b9fd9f010014fad69b6e
+a7304ed8367fc51b227e5568a22bcf518b07b2e715116bcca931fccb5814aebe
+24e19faff8aeb8ce0e92a681a0db9414abaa76f99d49d6816b7496c5ea575606
+8046944bb8398ce70fe7f88b2d44ef3ba0c0f7f14dfb285ce705b0656e81f421
+a042e6370662c1c0132b3af162125fc9d21c39006b33b4e8428a5fd6bdd3f8e7
+550b349b9b54a5f8eb39127547d4e283b8afd6966d6e114e0c1fd2b139f8f943
+d650f8dc69d49263ff4a33220ec73d6ae4e72e2edf8b9188accc4a55cc1f5448
+216d461e1dc78fa61df696c56b58623a19026e249683c2eb14a4c3a0df67bf85
+bfe4bf1f925caeef669cf9acebbfeed04fc80c48fa03565a3c48264bd397388d
+9b6b9465f93c2f5e4e391d92cf1a92222ecf3e96d288c1be2510aa08be43b866
+9a713d48b93a870233adf0ce8b907236c4f0a05822b6699febb698c46814963f
+82884dda6520e3cedcdd5b089170f732ece67aa7da16cb7f7b03d8c4649568d6
+81383e86a093d717835b0e40ac8aaffe22ea4fcc86ef5d52827fe6d80bc039f5
+64e9687ce59c77df992c99c96c19e72646ae02dc5d5c584542732848c87c99ec
+acb76d68bb3dea5a3c230b20faef9ba69bc9cc2c4b1f1264383708a91173bc16
+0d870584cf29355327537a9e391b8302dfc6ddd0280b7af666744e43a2a72d03
+1cd4a1b42977d7e4520b52c2a8c7e2a660ceed4d53411c388a8a8fa5506e2bd2
+046bae6283fbba59bdc6cecd1a5c6426655c48c7d1cef503e7804eab8ed5d38e
+23d753feae5b40fb8cf8fe2444
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 169 /Phi put
+dup 170 /Psi put
+dup 174 /alpha put
+dup 177 /delta put
+dup 179 /zeta put
+dup 180 /eta put
+dup 181 /theta put
+dup 182 /iota put
+dup 190 /sigma put
+dup 193 /phi put
+dup 195 /psi put
+dup 58 /period put
+dup 59 /comma put
+dup 60 /less put
+dup 61 /slash put
+dup 62 /greater put
+dup 64 /partialdiff put
+dup 65 /A put
+dup 67 /C put
+dup 70 /F put
+dup 71 /G put
+dup 73 /I put
+dup 74 /J put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 87 /W put
+dup 96 /lscript put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+/UniqueXX 5087385 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930da4f8d58abefd45db119b10eb409dd89792
+3c6e705479464a4b310b58348c4b42393988fef4925cf984423aaf65fea9f0e6
+4629953bcf50b919d968d99bd185f83112b2759cc411764e9bde677f57c5ee5a
+c555448d5f81a16259ded1e11bf4119d53e8ab07a802df900d3a2d5ccc1c6876
+d29c5e9effb7af3ef83400b0910c07873a8c56fa7b1eb1ba426043b00cc95dbe
+dc6e136cbbbcb3f67509964f9f281ebf81fe5b018122eaf66c4a838487e82e18
+6e006093042848a903efb3469ab6b4049767aadb95c30408dfd58d8a10f4cb22
+168decd9f3ee100f07b49aa44c92139b669cc312ba20192454eb2375be6284b0
+26659d964b96ae82d4942e758027fcf23c25ed01115af27ce7f20efe2a822bb6
+84004f20243a49c9e93301fc21b80815c033c3e2ba58ef53da2157d524b395f2
+b37abca13bc6a2f42e824ab7e47106176b0d6db267fbb795ac7425582df2e3dc
+55863468a9200742bd7b552c48f8cf58bc21343bd3b95abfa140f33f37c6f3f7
+8b0d8a5154eb7c1f62ec598267f13e841a3e64172663935ac8b665d86540d316
+ddece329c008049c5e74b27d59022c5515059bc3b89370b1bc6a169c888bb325
+e0b74282d6f053a50da4024ed1e433271a32ab8c17d41c632b41cf9f3ecd5fe1
+24daf7aea7ce8a63047b245822930d517df7baaafa69d2d17f7d93cebd47deb8
+5405d720de0bb4dcae731a8e27bdbb6e6be38d168b7daff815acfc32ce367374
+bf9fd98c0ae5ba1bccdb84d94b5c173abc92f7d18e19a68f64a2241a0a163910
+8dc46b8a04ead17662b7bbff3d3d9a95d5937698573bfac64973dc8d8b8d9f68
+c52d0c133119eca4fae72f7553d276c817003234a98337d7c037c0f1bce8a804
+57113bcd97515c002d20f836fa086a3277727873ec2b64a92bedb01193491134
+b6692a08de4a201a3f11dbe070d797f7629ad487d2b8dbf89a0631956c93864a
+43b6784c7f743cd09b432225ca14a00915bac57b66379730c60ec8dad785e30d
+ebd16f84d4bf9469a6216226f535b33ad5ef6674c02a4053a3494faf2bc0f990
+8d70b5a707a6f258674a779f55d9652136b0ca41491c2436828bcfe1e2aaa2c9
+9ea9813d8ac7da5e16e2be2d0b69d5a13728f90a072b412f4cb8888366b92b1f
+f0f6747020a67fd5fa4da785278159d9f6e06beb96e2ad1ff1a8d1b484af359c
+b68c4c85a7f9f2e1eaf6c31dd517342fa4575a7ea7c6955fccbba56862b4a8e6
+4da2a6550b161f48f57ba0b773fdab46b615a90c42598e370b8f1b62be46c2d5
+c5b5c9f2f31273bdbf966915eacf5f3fab9b0ff835fb27b40e9a7d628103ac34
+9ca4110169cf12d9cc21fff921f0220aa84401873a7f23c935358c9dd6570df1
+62b67778ac9e9b94972196a4aef0ec8882757d1b5d440ac3f2d60e671870b09e
+59ddad3e1943900f7e9a39426c8d24fc619a8e3b728f51ec81a98e6fbe2bda90
+af166be79e3756c784a097acfbbd862cd98bad3fb27dd3ed853955aaa014f7c0
+0a99b8a8a946813ce95219a0b0325cf01d4c939c29b07e1a3d044be0d6c04e0b
+1ad3e9420c3ac0de1d411783cd910792c444cbec97ee56765d7ac2fb5b99bbb4
+f5a97a12af72b3f01a21684c369b8b5d76d43d3308754cc1ecd821258023bdc1
+20da4ef7708e076f2a0fe9a791d8138386daa26ebabda9cd397b7ecba7b4dcd6
+99c140b0ddda86d00652242ee37c8fc5999a2bd37054ec9f08d2dc99c9a9238e
+18d548c074716dc86f0ee2e6c4916a7c9985280c8e45c2983609b8db68f5ef2c
+c0f9876d7a9bca9b0b7d99a1d77f602ccf81496b3b0f1456bdcc349952001474
+9499fec5ef266981fc4ff6509a0a2daf171ef3c1f8cc7fc5e7af9fea0220b2a8
+58e21ae15afc6d054ac9635fb066520bc5e5b38520470e6607c3c87965977b41
+3bfd29bc1d6fc6ae256de19cf1bf7e47167e118b141bf37336285b3f25876633
+6073a00af5db26db6d2c6db4551c57be5b9c3c71c49f9ba2e8e29df56eea1a2e
+b1a9b70ac46105fc8ece17f5d17d9ce62d57db09a2fd12a8457ef06596a79dac
+0dc6f75db27c76c01f587d77bb99ddc66b7cb035a3ddf4a0a30e1cc0e161b5c3
+3d94b625aa39927565a9934efde5df08fb73eff0b8d248889183c170bea1a9f0
+f98992f4e81fa0e640c42156740ddf85e570c5b631545251f80d9ba72a30a07c
+4d1a94b9431f654854ede0853e1738b9242c7cce9c6eac820444965e6aa91b3d
+60039e206dd9f0c8aec0061c416e64d257335dc151a53aae163b533be32981a0
+cf6cc8e84390f985c689923c0c6a8f0be45dbf8016ad88ab55d6150ab0763857
+3770d4062bfcb74f41fcfcefec61fe205864384c2f35643e2a08b3fd7390df93
+b02223b2c66574c4f9efc884035fe58ebe120bbc5e03f49bfbaecd6e90c36712
+4e75fb01434c4fe2d991b271e7719e1b8c0d9f7564c1e5c54cbe1c613f651469
+ab9fe2fc73fda90756236bb8b7df9c30c5df7f1a5e37f39dff8623d8b20593ba
+bd1d64f80a19c1f89e4c4c8cb5a1c94e1be791bb23cf9a7e471120b36a3a3d2c
+ff1cb002b7054cda6019ebf5fc2bf31af19f205952f77fd32d4b59ee1fd7a6f1
+d60ec00b68b71f43cc707bceb9086c57786789ede56334b15bfe9a12aaa693a7
+a327dc4a0153b7c5d3b3e6f3781a57a1b00531b6324f3719dcde673d4385906b
+cfd82fb140bf49b15ac220f7af1edc066aab06fb675f1b1678cda7ba09c192af
+629978498a86749c0f001272d790957ce5ac947ac2bf197de2eb8948d509489a
+4726b567febd1e7ffb85292eb54030bfdf5dddd97a8541d8e38af9ad23626b51
+ce653f20c8bb19ca3c7e1e1782f1a534271c96c147eb5d64b84d0b4817cab969
+a7c5591b12a9cdbf095d876350584d9c30e44930b51a33efcf6d5246bb9f5354
+99f4df28fae3c640e0efbb0b510c39ddac40e7f211e20e46c3c9943d453fd4e1
+f8722b2c5acbd94fc5a2af414dbe1d18de48a7dd28e36322c301013ed1134383
+9ef5312db95c543bb268cd12d881eb74b2db291f20eb0b335b16d63364b3005a
+93ac21e7c393dacdc33cbb61626f92b227c3b2905184b76d90f0e5559f7ae0f8
+286fd7d8d6c00711a3eaa70e58068a3238c2f1a8125cd82d7a013010d7549fc2
+4cb5b948dd233a0e304c589f0e271a340efafce49a535f8d8d6f804652b24061
+02b00fc212105755245e4ff4d327fa3afdc91e0385c9d4cdc576e35bfd27662e
+dd23e14356320fcf02316dce3d30ea261793ab4ffd87201da5c4b4582c8e10b7
+145786962b7cb98e69de686732a96351d68cd2b913484f4fd8141413416c963d
+953476f007e042141a0a04fcec1721b27e6bfa999ff6905fe014ee3e87b5dad0
+bda4e4e750d4bf9ce65bd2aa12dd1fd691ab23965eba1f018bb8446cc05b69e5
+887c115106c1362a0fddcaa0c71659bf7fe6474fb9c9fd5ca26351d64bbfaf6c
+3e6a34ba606a3c2e032b98681b23c79de2dd85ca8ef127c478056170b7d28778
+13301eeede5a22d1db0011d328ceba1ec997ad1c67692017d5e9b98d8ec85c7e
+810960f119809c7f6d4f955d63196486900d80a083279b381e4264fee511b04d
+c2f6225b008473ed8735ece8821d6611ba1b2934d3853e6233ad581f9ceb6b15
+fa4e68f8af6291767a178179450257b80e5fa208f996979cdd5cf3a905219f00
+0c24866834f15b9e514655e8897157525389236f0644537fde057a8d1d82fd67
+93b3381e945d529af5be0e7fd62a6794a6abc84fe1f8a2dd51ac8a944f5f343b
+9081f24c936609e8f007df97601ccef28c9540f8f0cc908adfc6e58cca453afe
+7ce82138bcfe68bc288670e393738f9e8b6a7f408fa77a5682ca27ef2c8dc001
+f4f6d542390aa86721397598cee69d07af5f4c65535b2ae9b104023e05b314e7
+9c17c5d3cdc1fe290169a812a9ba85746df6d4275117a9e05aeedeef33cbccd5
+fd1f6ece48837a60b53e52a83fad94847eedc5f2ffa9c78f68b692326da326d5
+9a14d4681a6667abae51091a7cf823bd1426a681b976614d7030f350e55fe790
+3c04fe9cd8d65bd7cf82ca52ff9898069e55211139cbf497a7fd5564e32f95b0
+a8cf229609643ad95523accdcdcbe449c7019b57fb7f77cc8a928658bb395b4e
+ca3ccf7f2bd22106ca4298bbc6c65efaa4ba0d0ff46630e2f986bf8873b1cc3b
+90861e8b0a99f6aeae3ba081095389c2b1cf307a1cd43bef0c48f0d6297e85b6
+9b0c48c73ff49ee39990a4fc3e6cc2fd38b13bc8b35da9549711fcecc1753242
+6eb194779b4a1361b175d0e260c93f5dabfa1deebbf109354f3ad34609aa8006
+1933604a4bcc6a524cd7df2475fb688b251355b250f263528a588883b05bf190
+3bba64b2a59e150f6aea5278a77ba3e67f26098b2a8162d890adc27cf6fd133b
+b0e0c1cb3d2a4fb98851549923a50c83662a86c53f346d34385d31fe860d1e54
+ae820a40d902872768e67c0e5876dffa53a41fca324dcd3e4517a01be2c44225
+a19ea8ca650c1f158b96e14ed199257bc9ce4893bfda9b7ada222247d4ca89c3
+793a4af37a553b95c7837b335c18007887f5d70b9640018706eebdd3446e8c50
+0ab93c67170286143b1647242bea84b4433f0862161889f4b0d7dc79c3a0237d
+2a99454b81753d326d5cc10f0f919d772a9cf478580a5f160d791280ef60bf44
+b4dc8bfc2826d0bcb0ada292086d620c91eba5f056628b4f9410fa0cd6792170
+c56185c17bc46502e3c1e04f51ac824eb6cd5748053bff36a5184faa329780c7
+ddbf46ff28d14c04b0760fe6b736e91a552b8aadab4de5c3a0c2bbc76f01a352
+7310d6f1330157aedefbf72f2517ab380b5f0ab690ba8e88bd79e747b81db5e8
+7e7c9da2c6557a8448fb3b7d79fd77a57367bfc3b8086c1b12e558367cfc60fb
+5f03c3938bad08178ea7bc2a400572366b35cc1a85e5e59e16e0e534dddb2085
+6eb0f7a6b9d4c397da2daf7f9eb7903ba917dadbb03e78517a06a26930bbbf12
+47364e5c86e4434df9a73f229a07b63abe0e667152e7631368476ba89e1cd5e2
+56c0f225cee449112da478f06d34f7908d3717ba83f4713ccbc67f5a5cc9d38d
+bd2b07c341d201a66f9c268f57519c538c6da1d6fc036500594222bd522e9d57
+802749209762b6ec0921ef1dc97ee41f372118aa517310c93c982f0fb48cd662
+f85957ec438fff72203af8c5424ebf225ad65a26917786bc99c06cc8f3ac9f52
+644a4e6dd471def5a2651c557b5e2b965a229fe7ebce5c217ec64a3edd5e5dc4
+16ae834780338eee7ccadb93fb546676fe46b60c77ae4f6d831d826ca062a6d3
+859a2be6125fff4fb8174a5c552f734290d4a01669bf44e366684d7cab54c4f5
+cf9dafdf9db5202b951c58ed1c92c50d5116da3582b6ddd4beb3724e635901ee
+6b465f6b8dbaa87437ebf5cb4775d69148062c3da53740256efcc80b7d5133d8
+d7b163f9bbc12c617f9b9e1a2c6ab74eb658f92c6af40d6a7b67a5d55209a86b
+04e164faee9a36af996612efaa76124a5933d6a00cbf3f19e4caaf486f3f5d6a
+f194006f80746ce13fa480b614d7e805e615d38da9f25756e3988a88b82f9424
+88f40a8c060747938d7edd702d048787dcaed7a7329521a8cb9479c57d2e8f39
+8cc2be5a462e9304dd47b9101f8118c83a82ab7f975052987ff084ea67283c3b
+350882e05971966501f1b4fb3829315fcd5fe4387e8b634416a900bcfdcf1c2d
+709c9630766b49e63a861447c80fffce7573b7bf2e8a6ab0d76fcf76717765dc
+fa975020ec52f63db92c18aab3aeb985cf9805d53728240da32096f15e89efae
+6a723a108671f8dc4b791c40a1e0f3e8e05115112d1a4a929da19fa46d3bd89c
+d9c9f9ae3daf41914de233552b81fe3f41f996eb6b6e6dbb974d00933b10fd4a
+bfd1d7127d999536c1bdb63091a18cb5f0e194faee5316444686e3cd85b3554e
+5c07049fd7cd3e1519ff9897f004b1aca5d14b6fb42420beb61ae99c164a9e1f
+44b421b00947c05806869e3e49a61bfbda9b0b61d34fb535baf5f628f03f8f5e
+dc51e6119b4ccb50aa146b471ad76f49205526e2697467f14d22d4fdd36a77d4
+97bde436bff7499e7b099ac958e090ebd0a61ef120c008fa672133cabc1fb766
+a63fa3efbe57ae30f20b69df0cc65b5edd2c3e925716b93b4a5fb755844d41cd
+ef8cca217dfa68db7a693a0f9aa4d4ebbf49db36d3f151dacfcab94ba2f6fc84
+355c33d2b46b2c73ddb85e2f0c8b4ef12966b27223b099c15db8105b5bbc7903
+776b5d5e38cb224ef9eaa18552c2c2f448152b9f8d4c0083124324cc3be4cd18
+9784ae75d0f20614cdc48c7286cd3ea198f34987fc0376dc5745855ca4819edf
+9b6d6cfdbedb9389fbdc429301cc284bab67a8eada39ba8d9a0689ce72d6d603
+7cef43184f1e04635365f9f70ada16e8d5f525dda3a743963c910667ea65be66
+af0afb53871ebf24d7f99da4941ac1c1765f3da2326cadfe0551430170e32edb
+7cae8e5c5cc7f8a13651500bdb34292afc6efe943426f70149be301e30e44cfd
+f48d7e649cb106460d12d767e58866db0a775b8fd43c607198380b21dba77d96
+768cca5d668de812b04ef2c19e4b75afb5a99d170ab880155a2831d5576451ef
+09e6c7a01b994574a48ffa0c46ebac077c327843ae4daad20f26ca86cc7b8a61
+02691ee7675ba12ec2232e99930f8ba9462dcc674f358559ea23490823904f26
+02e943d1a59c56d538a5595b30af2feed138b332d9aee33e30c151d5832bea55
+e6fca26d6b871c51cb73db381a11efc848fe5b608a1a90bf4b13aa789af34788
+63d6b74c5ebdcca5eef3a01f64d62167242e7e71d805945345c6d4ea796b8b7e
+cea0ffa014cf1efc9b4933c7992a1bf220e59b00309622433660a1c6a7ce2091
+5356c6cb91fd4acb543418bd3ec334a352cb3ccac21c6c7313fd332661162b01
+83b8221f6f8294052e64ab983eb91171f3f2acb52dedcf4764a0e35187867b48
+6c5975227851904e96fa3423bf45e08ec64576e890a31753384c7a536c5bdad1
+8f4229e835241818b7253d47bd284fa51e562ccd83ba7c81f89b5256d069aac2
+6f2d0cf15b089f11f791bec600933965008afa101cecc40885898e92e16d7ada
+caac535cdf1edd14dca21c68326c37e9a8238bc756348d1dbfe0a499a7fcee62
+675e9933f53fb8bcee6aca7a2b062f3362fd1bb810c3d8d84fdbb4b3a1e30835
+89cbed29caadcd04341518a20483db18bb244c4325426bb96af8d198d0d84909
+17d843e9e4397bfece92bc0c62ef62ecc22698e7bb9d09265fcf4a4542119144
+482b8cec27c527ca10bfa4b3ac92f395e015193d2a808804a642a73a3c4ad485
+551cfe0bae84f1825e81c6f3eebdcae23098a3e3c0aab416d9a32669eddc0c3e
+9f67b17dd6822f42f063974348ddf7d74254bca65ca7c9ce0f93378e7c5c32ff
+7597e95f6053699baf2ac7cb1b4e391ce826a715fcf2a644beba05baf39cfc52
+67edbc351dc0e2f45a6cec04f8e011c1fde05f35c4573b5f22e255c06a69df50
+0bf0796842a6ca91ffd324e523248189e706500af8e94c95c42cdcf6c0377c6e
+abecb36be3866de3ccfc9d45bea229b235267bbc988cc2e67457caf555b66a33
+d8fa83ce38abef9e0687ef03411d11299647cec696e7e9a0df52e9e5b32ccc69
+cd8294d0f25cc696a1bc6fe978518351a2e641e6b2a7e3626fc2569ad9228f04
+d0c88e91654fb2747b8c0aac4382e7ccc7748682a87641922fbf374a8d57ea3f
+ceea2c4df4976ca34968702d8f9a0cecac3b524e3098818a90e57cbfdc86face
+b97304a611aa6c667b8c8beddc1eaa2bc398e860ad69073a2b4dc67f70977385
+e579d624c515f016db93dbe1d9a2278d48193851ff680d0dbba728bad94222f7
+c374ab77177f1b4eddfe527e1f704a94c7cc7d9841acf92176461534c1ce6380
+7c177fb037fb9c2b6c03c9e316eb7dd4913103d2b58af3f627779790074a8109
+f28e2de220fe32ac9b38143beb907bd7184c0d26fadb959f15dc8bdc8d4a0535
+7a522bac9173f04a294602f3725067fbd4b86d783e85b67a38fbe746343b4567
+d83d6949e483d5b4c23da49c994db32af955b6e9406954e6c0847ccb5febd497
+e32911c71896b2e7d9c074740c331ff44d323f091423c30bdf4cbd1554eb8bf4
+90f84b900423733e8ead7ef402a8d649d29dcadce63c66d0205dd1bf384707e2
+5cc346f669330dfdef95a089e4d8fc4fef20352eb84536661829df1e366b7b3c
+07402edadee7b187def57ed9f530513d9a5ca8008cce9cfc0f413cce43b20d9b
+7c79901af9dabc0e2b3e356edaf6e332f5eece45108fbbdfe35594bf31679ea7
+8c7430733576e0fd8848d0991919f3074944d4116312156a2e6ec975dab124cf
+94d348940b00aac5f03d1043bbbd5f74803ca727da2808520e768df6e979ac94
+2a1b31d6a7f1c643b843b870ffbe89fa1de7cf814cff4f9acde6d98fa755e73c
+51c44e4433390c63350922dcb8aeb010f973597a675cfcf1893f3431ad840850
+3ec25144608faadbacca1e36fc278c596abbee66f5d279688b07c5a18bb7121d
+16af307002f4c8e319d1b0bbbabdaaeb3ec640efe60ba906e88883dfff579b75
+207c03fe4722f120f7ee4ffee77aca36d14acede08e9518fdae49d57dbc701c2
+f0a3024de83e556dd8b3c64538c3b98c0d06864e3f1409c3c47fc497c78e4a78
+82b980635bac2a83c4c2ac3949845c3e03f798917ba38ecf4e8d164c7d6b3c18
+50de085782b9ce7c25ae26d72bf19ca6c1aa7ebfdc8de88650e66d820ae25d74
+c0eea8b92efc6dbdd0cbeac178635d1818375b0475ea5ab64a3819f31b458640
+0599be4d82103d7ade194e5233242e24cc1b02b691205ac4965e9a71cebab325
+d6eb6842f7ca48917935861f98ebf63a3dd8886289c7877f5c9a8fc1ae0fb4f0
+2659f6cc49727bedbc2542ddc48ba14f69b79878fb3e1de144851dc2d11c22b8
+e18a4186ce13efd8fa68b2316dd7e6bb809a052daf8b53d9cbeb4c2335523096
+c09e11aff6dc16c7c19baa09667003b603e45cf9e37f3412fc3a5061fbbfe5d9
+da72f0f4bf1575da3a6101a58b8d4db0c803405004741c544aa167ae5008116a
+be0e7908b25120de70628718f6fe8aa465eaf216eb07b7c93f6b648868536515
+2bbc0931aa174f839b492de96a260b5f11032818a7af93ed72ce6df770be140a
+5fed4a9be8797625c5d47dc9c16cb44ba79bf604c358f3987a6326355e632957
+fbee2e6701b8232dd61a86194d82f228a056ace0b902f6bf8bc54211005e00c1
+b6f227e1c37e805084245e647a1d2a1d6608c713a85940f5f4c4ce2fdfd0aa1d
+88696a255b03b6d4c9fd3d78a8eb8c7ec416016affcde6554a9c144c39890d00
+0be94dad7a7069e05b71eae1340910d8670cd50c5cc08031e0d3ea160ddb9e98
+8bb50cb41ef6235366ab7ddc9277c7aa1084046a22fb3dfaa9d63ee97546c1f8
+eea35f9d7f1a7cd951025e83c75bd6d20197445773ceb10bc2c0b6269a0c22dc
+eacd39667c7374612b65578df54013f793f39ae1c72d89aa203f373930dba1e6
+4b98eb974f6f043827c535c48e9f2bac4f5224964fc10a30c0e37402a22aa7f0
+5b4b985a6f6bcb1a820ec06a9cf0b3c29e3b6b3bb4f65f2beab3b58001a43dc0
+293aba662134276990a63bb4802c591c08078ec49fd9ca9f25b7304e1fdc3ce7
+d0ae10fe92c9c1f47dcd0f9653418654be056d54303fdb0696246916eb68bab0
+2407e39682ababbff318e7a22ada20bc93b3d0763deba11d2b4b6e3de2bd93cc
+37a1f00f4d5b99bdbbfa223f441934f2f0fb7432c05ce4cc58d3a4695ce217f9
+4644732b81979b7a0c4e78e2d9977b45675a00e000b16c879d99293eb3fbb741
+36aafa6346257a008bb3f9c233b664493e6508366ecc3b60cc9ce828728338e8
+97b149fcefbad21743b283d7d427db53783878d9332a3921551f0736132cf4da
+966bab35830da3d05e286e4a52348c490c803b84609aaaac186ba107ca6c57d6
+2652503013c67efef2aad1db43cc75b7fd7f05dd11f1fefa5d305c58f30d6672
+3376a0bdf54408b72ef7229377ff227717483ff96fbff63de22fb6033f3f43af
+aa90548aa1678192c6e9f923e8ac43f01fe681a57fa5938ced197442024282a3
+38107f407a5e01f6866b217f3027472b41a91acea18cfca857edd3e018df62c2
+9c9522000cfab488998b861c648b5153996a4711d5f73d8b949d33f86013d040
+a597da018856136f8de529cf46f4138feda328fa21ad67bdc8de1eafc06d0f28
+4361b529551898d8bbccca1aa461d7f9e85ca6fd93ffe3862097bc0311affdf2
+91eeb123b0750b55bead88471c8264b2ef46a3f8ce21694ec2d0a092a801432c
+5c978683677db95dfc2d3f48920acdab38425a99b6ff71643297476669b4056c
+2f3d69e0fe63b090dbe18fd13d311e13fd604218ca5c1610b51818f8cfb287a6
+238fd9273ad856b8ddda276a8660d340b377e225d24b61ac6fa45437628fcdf6
+7a44fc565b62b99093c86069943d609985edc64f0b4d54aee7aaa5d407ad3f72
+d9bdc37f3770feddb5a61fe92ce335cc4a7e74578e6ca598db6c8fe524c9a1c7
+489d9eac559ac3274c9a0609d29afdac1959839625a269bde44a54e65ff8ec79
+0d037a216877932f8bc4231f6c3fd3e34f5c0cfdf404a935c1015bb139de45b4
+9671f5bcc3c7a5e27fdfaca01511a05ed1228f56fb3e4ba2937a044ceb809992
+d3e3b4a8043a328085f28c95dd537e2d7ab9157310acca2639b258f8372c7610
+98aff03931014d423dd8ad2a10786e76731357e602e666bd4ab77cf94aff1a90
+9d1a77fa10ef3e879eb6a0ef053ee106e224e0f6be37a91c9a7de94b9eb5255b
+ae0aba19f3108dfd74980b8873d25d631188764e47d3b24db2d4b94bfa737106
+9959d5af7e0016215f47198dcfdbc9561c6216b00d83eda56ae3a90cdde9a08a
+4b5bbe6e20fda641e861095d5433d3a83e6868426110e7e4a7141dd048864a12
+5bdc49adab0c4b76785e76e4e1f76483f11b5956e445f0f607070f7c555a5e31
+6f416e01e95bb441eba4753489be507a30bbbc529d6f4fdee852dd37d1176fc2
+18f23f369917a13f209a874a5c243da499c8d3a8f431970e7ea5416f59cb4c63
+c57d5443f4c064dc49564b245b665fffd8ac499af0a116bc4d6d6218d9bd45a9
+a4de741f80eede4ad89648118ed785dee0ba658e62c1c68c8cab37ecd4d37b06
+7ed0db6e0ff2a1324eb2680c4fa9307815646b73ee74e9fa1e0a8691d4a46329
+09dadcb8e3d35396bc846b7ead92adc34ff705d2cb91c4ac3555bdef3d218530
+16f00a74420166f73aef0df5fdf3e9a7d20e92a5155a40723178e76e1b936363
+cd3acc09820479d6911f8225d0727158ff8459afeb6cf27b96c649d0ef4d05bb
+f0a89d49c19d98a46dc8c29435785db8e1821eb3197e2c5d7b69d70cc74959c1
+23fbab64c9172e9ecd0498e5020a5c91c8d123af154db41aa0b86c38655dac38
+2c7abb010c093c23e279d7fc8e3fc49dd77fcd3ba8c968bfa945fdbf43d62005
+b6c3531aaaceaf751f4ce97c49a5e362ed94b5391965f214c52bf16cb8b5a481
+36f7a1969f7bb4e38a083e889b1c2e12997d145e4cc97112386975120981f804
+24a6983bfdfa5bbec98ad96d9a81c99a8f0aea996e79d9226c53bbd5a913c257
+4ca9bd40e79ebebfa56dae0df88c3e6d77af3f44a24fe2daccc845ccd93b5665
+77753668d76feca0f90b2646170bcb789bf1c776245ac8f4befdae9fe326823d
+6d511b60c14e742a23b8366566fdb2e3fde5a10eeec73112dfc1971fe0d20e01
+fbc8414e8abe93a6a2d68d73d0a8478dcbdd8f9ef3f952b1571ca285f7221acd
+9e73782384c633429478dd82bf431ea59fd85654e7d9dced0717aa083b2c5186
+f6a926edad7d38696a66f5c057b7e7a5bf89e77d8dc540b1037b413ecce78036
+d9360bc4ed9268d557dedd32ca6d6807c7301fd0b693bc9615f629a7f9a68bf8
+d4e3880969c073c2cad826b0ac7f029b27fbf64efc04233d37bff3ede69723b3
+d2d1916d16ba2844bc4761ba42dcc878e4503fb0354eb5f3812f16442e003b26
+650deb3b7b67c8fe00d1e0314aa0d77ce23e0bdad410873be151197454e7d856
+5947631e33767c47046c6822b0a15d5c5ab36107f522febf840f1b24eede249d
+52ab0c955df4e9eacc0b7a4f53b097f345c1dc9dc2557671d908aed88071bfc7
+b66218c633ee1f5f0819c85e71da72d3abd61e57141710e594a9e4aca274768b
+e4f0fac3d53739111be5bbe937376e9efe3bd2ca2e0586704a1f4fd0c3f01581
+c2bc34bc453ea7dc148a6438690891460fcb2bbf05d41a62d7387001ef781392
+70cafb421ecd15eca12181f388b4f1806bf5f8478ae02c21d0e66d9b75bb76b1
+4662dd287ac2e2e86fed04fd95e1f262e91950605de2338564a4f6d55b53ac99
+ae51af00f5974f795c930015262966cf06dbfa04069845e55fc986a7763ae6c0
+32c2bc7313bf59056a6a70b7c6cdd452d862d107b23cdb1ecbd230aa1b7565ff
+b4015369eec27353bce97897d64439657d2749c2abc86c2c82a0b6825f7e8cee
+2026672710dcc0dffe39c302ec3291f9fbeb8973aafd7bf4faa927745d7f9aec
+daf7a9873e2bae6e848c9b3b18bd1dd9e53a55adde4c3d3ad34fb2ad55595009
+ebe55bb0b96b7a1dbcca3a597441ab8e2943fce2514dfcef997f79b5346f2294
+215d9f25b6a67ab072bde68eab60e59ced664f5f55d4f38449a56d71f0ac84d3
+c43ec8f6772c1076840ca25234731a45764727168ae0f8335e0a5ac68ea38c86
+adf78be9a8c9072321505cd9871b944700abef16c28f51a881659c979670dc32
+f44f4efc4a743b5cec6d4de6669b71e9176cf2186df2e5112608cf19f15ebe58
+9a559660c7c86555a2d4b73352e14786e8a1b3218ac91d3b8fd2e22408646881
+9eac8da2725ef8f564c8d7b58570fa01ea03b79aa0590d2219836dc95ff33d91
+bcab3167d2e576c710b65cb195a5706830846409f1021a4f1d5194b36348a31f
+2ac3491593a8b842e58d4f6588fcda0b281f4071373088906aa3938926c4f51b
+7343236706fb706a53c24c4624f792df7006f84b93ece08666b55f6545fedd50
+0408de672d34ab76bc72c29409dcc168b9418dcef049f3382e6f79a9b42f4337
+737e9044361987149cc0cd096439a9c0567dab470ecd680aa70166b39df29b7d
+062a956a39982b84f33ed8e6daf24a1a9b8c13ff2eaa25f01a2f91c7ebf7f286
+cd915a2459d6467afb483905b58ff59232e14f25fd017fcf6d083a5821e8722e
+5b61e9fb932eee12deae7575e34ccd0bdccc2327d811afd80acaf52a17d416f2
+8bc579dec544c642b0a553c01e9728e63f54cfe5231e8ab279473fe146dfaecd
+f219469b57ff2f47380a274fd2063a1d641efec994c5e281db74188e74924ad5
+4d413cbb0cc9183f2881a078eeb934684377f37e29c1512ceb5fe7fc5d193040
+b2cd252ef201c6246977ca85e1d49309987c1a4f432e90cdfc2598201de5d4c4
+e2a8c1a9cbda6bf45b27d7a5e3751ab6f15ee53d9a06d5208ff4b6dd642ba863
+4166d475e1d81bb60f45893b2ffbfae0d5fb5ca502ab83f45b5477cdbd4cd569
+eb3355d51e4b455806a5170e5becbcc3e639679be44ca55df310483c99bedb2b
+290ad42a8796864a3269c50cf0dccf91f6c79d5e6d78df22a8fa6c1afd779c75
+d7923c72cdff1672a33f2811b7564d3bff84ee75cfa6e7031f02f71913765d87
+77b39a779cca02058305f3d58c0fc2d20f0ef20577ba8e624772380b096bb148
+a6c5aed36ce7f406d8e27ce34ecc4823f0726d33be33fe7c8752896df8d607ee
+a461ed4d268872aa0dce06e94322e21516920aa89bfbac806cafc2edd21aece3
+d39d18fc049f10aa6591843114cce4e234bc4de8db14d2dc7f9ff417c8685a39
+63487f5bd4d2fe496db23bfce942f80c71f043e2635fdc5c560cbbc6f58c8e16
+c2159f011c0e431be5cf21fe967a1dc4f3ee1cf185ebb9c54e7093194ae39629
+5af006f926f368d5d10f8d2bf301ab9d656acfb586fe31586b45381b24db8267
+c3f1f6ab0e3d1af489ecadb489cffad4b70197d23455b7b0f4bb3cb07ddb27e7
+0ed338b91f861ecbbef4930cab41ec377a0debbfd39862079896035873f748a3
+23dd1dbc8fc40a2ec58634e5c57a868d1e946d9bf68e4badc5aa75b6b36b63bf
+e990dc08dbdd7a9861d84392158127107c9589833ea285c148f132d44e008a5f
+4ab177bffbb6e36033d2df2196fcdb5b59e51a36bebd5dd2ae91412b08ad30d7
+295a0fd863a25f4354d483dda19355fc8a4861feeae5382b852baa1b4fe592f8
+40d12eed02ddab8f6f45a50bf3cb9e003accb35d13de5dae35618e8f62f656b7
+bc7e274c9b8c11c489ad1e85c798a9838926f48909dde2cb9d686b61ca6917ae
+6731a2b727fc516fdb58fea15aecd13a23a5fdc2f8baf25f81019448c8d0b040
+ddde5754300d607b4043ea372724a9a48ae5bb354d1d7aa6009a1163ebcfa0d6
+fca6b70712c9891e5008a01c5bc850591d6978c079a60afb79422af6bc7cf81e
+122e7805d787818b1a2b925f5fb60a39e353ac53a04b53c727886044014f0c22
+4f2c24b29ea9fdc6381effceea7205a8c8f7f30f8597378a900be018ec9d2f7c
+54954049c43250912258b8074fae97f3f94b9cac3bf2773e09d6df235de8f109
+661ec29f8a3726deb91258e9b371759fd4cbc26ea2d191a7259bbf44d60a0a68
+470337ec55b8331f052ddc7af84b8e881c6ddc36e8eaf254976cee7837892554
+5a693071cd86aa9e61297f5615a3a0d760518425e414f6b36c7692848e1f4b8e
+9ca6eb832b90655f09c534db3909caa667ea2fbbdd1bb6c3e4662ca8067ea084
+b675dfafdd8663c036999a3e6f7c024f5195013ead2abd75de4cbcfc8415cfee
+32b8e0e8a024322dc565ae54fe1e822d6ab9e5d391638e8be20ded76a58f7b4d
+29a0f41a07160821a3b439c466a85feaae87cbb3713c82a9913afbfd751767b6
+3bd75ddcee4b1decca1175e318814ad6ea2a9bfa93844a86b4cfbae22b0d7ca7
+345da6604094437042f55d37c4e8d34d99e8514d30d0c880a7f9ec465b790c74
+285b62b66b7d44b74982851953504de61a9a86ccfa96e69be90fc9289084ae1b
+010d04e6ead97c990fc65080f02cbc4ad744d8e4a31372f455433461e2e0549a
+27d39dcf32c55f5b9a1622101b186db17036ccff5a404083c69901c6e8345b39
+dc3b69aa157bac004b6f34fa49bec4ddb0243f00bd635697192ee34119222d52
+f4cd5eb738034ff66c1b3e2cc389a1b56faa6b9695b65066ad6454edd5cceef9
+3a4745f9b6caebe4c8059e496f7925d4e4b9f203dc3f27a52a0853ef91c3f7e5
+3b12312d71abd3c66465ae16e5878480e8903920d0b01a373cf37977c0896d37
+5b685a6c77732adb3c1b37d6420ed30b958be908a6c51b1f52a88ef214047e69
+9ceca4661a6ad2c6d59dc0538d61a74946fd402792c7902b98df7162800749cb
+ce64251979604a9943df8cdcf98743d4e8a64d15b470ce362fd08238a1ce3bd8
+a65ce94120ec2049080445c64963e6665ea00b330d43ece46b4696394e0d8a4e
+6cff970bc3032316b3b335fef49feedc35039a18f4022b062bf46542af8e0755
+7154ca3634e14534512bfd6442e44e90272da0c7abe7b009dfee40a863adcfff
+94b2801e59b5f30a376e145f6123b63f3495522862e798ff3cacaf2be59a6bb6
+beaf1a1d4833b4f2bc23dada0e7afbd354ac66a14426e05a51fc2affb93f7a57
+9526b0503d25539533ff25dd91b5d0cba2c687da4235dabacdb787494d9e00a8
+3f75070a51320e3c452c9e01044a7455900d5c1c1ecce64128f693d86da7fa7f
+aaf4c6a1532813f87842a30ac1c993f5b6672950d0d655ac2d15058bc6decac4
+6909fe9661c51f704dab09f20867829d76abb73bcad52ba38ec568598b3c64f6
+b3e10a6d8ea88d26e9522195da10342c068f7f082bac5ab4703da9f2d179128b
+36e61661663159e0c8bf037c1ddfee6eb052a0c9eff533dfad2cdf32ab73bcbb
+6ef0f1408444eb1320bd5df45c93cc6e7dff557852c3c8a03198e3bdde14bc88
+01ab1abb99c4a2461cafe28068ef7e86e6f17bf677344766f780d29446418a09
+0b2c55e2115659566eb18b00aa23123445066ba037abb6dcc2ff58165a570789
+53341892e91bef98537c2f1125a5fc415ca5c40670dc99eecc4b4a548387bf9a
+1255aac48163ebc97a976799fd6160ee3dbb599f543244df308fe419f8de2af7
+c30e9b9987ad8a8c18aedece920c9a71c1fbbfdb3a875c04abdea0d06cee264a
+8153a83f0ed1ce1e7da687a24b04747f438418eacb2fbe4f8254dcf0fcbcd339
+a8df9d50d13a7c0b8237d9d0ab4a25644a3292b4dd8b3fcd3549bc27e625a391
+7588d8ca98f6bd767313994d620b1bb7e959d78c46a603e5c7406f7b2c53af0b
+e12b6fe30b9fcd7fb0ec4b19c55a83fec6a56aaa4efc4013a2a5be4eaa48438d
+e086bc353034e0e206a3825c4788d2703720d4be4cd9a6bbedda439a8aa6a714
+b079b69fcedfedb47cdfa3d27e23f19733f4e2cc1ac04fb08e907068e8edc660
+834a2b44bd2ce110853a48349522c7f1cca43f69e8c92d86452f92ea31398738
+5e4d3ef796a9288ac889c7a8beeca1d554837121152899c683b4cf45592336e7
+6b75e7f717b5de8d57e770e10670f5b74662c45289cec1e72e72e36eaea665fb
+6f3fde4b0385e1c8149f6e79be26bc9571a94ac2136e328278b7096274e72119
+bf755cde476bf261297c5b915ae7bc9987e36ff8fc61804d93b2953c0739c6c4
+f4b80a6af01487629ccbbccf9154fe5d192f7d9f6d48eade5fe6df625c14f35d
+df35b47323ba81ddbb0ca52808c75fa7689547e7f799dd8356dd3301f4f34a9c
+e78185ad0a9a9f81304e4eea179872baa885c40d94513bfb441006a71f39c98c
+357b338b56e3cde77cbba17d3f6d9effc65e488ef0921211e9eb8e31821a8bbd
+6f83b302e969369e1a72256703b49bc836c21b5a2c2688d9bfff42f835de15e8
+0faa91ff6a7578671ef4dec7ff700f6ebe655c2f3aadfe0d1b4048559e5a6624
+a067fdb127fc1751d19470e30dbd31a39811acfa8256fad72c9bbe2f18c9ba0e
+e4072283f5eb32252dedf7e73dd048427cd177bb98ea6a6790b757bdd33a3802
+9fce97e2bfdf6231d739fd6fef12ee11b30e23a074966ed0015d0b5fa205e798
+65915baa2cffe807400c4909ea38633b2dad624e0043a69867e79595d7896893
+1d42fbba1cf096f34000a17a6a9eabf8d78b798d8808e30eba998fc8bd99cd84
+2318c0d322866439ce43eb26ed10062946ca22f891734e1ef4004e52b18987e1
+c2074cbb4334c7ac822cb56a3fea8d65a1f559aa93cee5c99afd3897feb063d0
+1003ef2469bf7a120008c90fefbad512427107780f2ceaf22b0e18421a19e3db
+34ada077417a22262ab38cb0ee57305f04f8fd75f29c1a2b3a8ce2d5b3081e8d
+e2883a1f3ef8b76ee8b733a18c76ae8d7d87efe9a6eda25f675de2c1e2d75582
+d6645a3187eef5a22ceba2784299fc5fcc272cbbcdf71752ec35def4536aa876
+cd856e736091d31fbf4a59d063e66ef2c75fa5e1e224acf8b28155e107eb473d
+ec6d5d013cfcda826ce10367423c8336234c90937e58c1b3e7f572a6f13cb568
+d2b82bce87dd17f5bdc014300d498902b95803a54d65ecaa634adca1e7706812
+41d4a5db373cd81af43ae85652bbcebcb80567d9082b032cf04db21c3f9c8eac
+b7331c0ea9f24fa59c54687efec109f3f9ba9328f05dd51ae92e9f1d0e8840d2
+798a370927968321e29a550b9c59d15a0e4da923479de12ef2b80f540409bd71
+2391b73e1b2c68ca585bd9c466d338ab0c227df3e8798d556ae01c21b61c3b31
+b46b934b323ae2953e23df26216b1ace79a1e22403437e38b94059123fc237d2
+2ae8956c636cc0da07e5ef66670305f75bc6a8a273a4633ea2897d10966d1fa0
+be057a7a62933df1190bd00c6600d2fcda6659df94e00d0edf4d4aa41f085a0b
+a809c1ba9e28937e9be558532d6e1505f1834321fb645d99db6a2a51ba0ec246
+a4c6391f8c29edae2bc4c9e4dbd1ba206e6623d3baf0b662e8117c6321c0d0c9
+2ac39073cceba5237800191ededd2783b35c5d8ccecd2e2be686c43abec344cb
+c5cffd1c6fed6bcac31c5461523569895cca58252c0a2173f00a52ead291069f
+a0cc7d268efb51665f0c0f4f952de48f2cff1969993696721a4baa349cbfdfa3
+5d9d207167f303bb449f7c955e8890cd618b61223ba92111b5e077eeb9443072
+822dddd4bcafae94ad479205d5ed9495472a2175b996fe1619647d60ef2fa837
+b30866224d6241c1c1cc747aef95783fbdf1d1cc729d3023e8867cfd6761871a
+6ee387d9e243281764ae314e15ac89f766683bed1789ac159f6b23c0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMITT10
+%!PS-AdobeFont-1.1: CMITT10 1.0
+%%CreationDate: 1991 Aug 18 17:48:50
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMITT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMITT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 169 /Phi put
+dup 170 /Psi put
+dup 174 /arrowup put
+dup 177 /exclamdown put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 190 /oe put
+dup 193 /OE put
+dup 195 /visiblespace put
+dup 98 /b put
+dup 105 /i put
+dup 108 /l put
+readonly def
+/FontBBox{11 -233 669 696}readonly def
+/UniqueXX 5000779 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cdbafa8977dcfa841fdff9afd3a7a7c7905c219
+28506d4d50a72fd1db1b54a855775831bec099a567f3f795b812ed5e145213c6
+d5d27f9ec6709245e9e4068a6606742aef616dfcfc9e0b9af7e687fdcda43c51
+81a08d6ab72b86fb38756fec992191c1b3fd151c417125d4777f0bd0c57d2959
+0db35f1e9e27945498a3f7dd60bc54d72bc8a573457c16796914029dc282aaea
+fdaa4b1439f4125add4b7399be6fc68e4d5a766cbe5ddd161180d4e1ee3c95d8
+64e79fd0c65b8f459336e99827454d662768df3e6c1c3647b00b70b5f96a3944
+b7a197be0f58a1e995a77221bd374a40159d81c7196c94e8af7c3392255ee6dd
+0663e05998ff917a62d635ca45e952252342507d6b4d28833c7809c1b88400ea
+50c652efc339a66355c8017651fd24d9a5cc51ecb55bbe64ea523b094332c832
+52f7b426909808ae113c1e5601b0e081fa8e7777ab93b42207100f43abbb9ce4
+ebbf51e584299a06fbea62b8ad3632ff0f281ebf9503ba6b8ae4f3b57f650388
+df63eea9e1ef1e08f7a2c6e4f5cae2c4dc7b42726a6ea6b7592e9355a01fe517
+12264a713ba83c057cb5f663045791d4c7598b246cd3b8466a1130249568e95d
+ee2c0b4abfabc8e362b78d9fdc025fc19cdf1887997d32fd1487cf2bf0ccc966
+319e3e3cf4add90ab51f0c3e918a00e5726ee346ae410ec3ce90404580c47572
+35b3ec4f5ddf23dd43224d90d8dc932ec7f0acfbbcdaf80f261482ea4a2a2644
+129c27fb4b44ba8c78d23273122cbf1ca49ae879ddeb6991b87ce2ff25c655e6
+b5ad950028de17f6628f9eec6842b79f69c84b6c55ae423714e622eb4e47f9fb
+c30a71808d70b89cc1a9b60f0ef21ad074a63d38344446947c480523a32c3122
+3cccec0d2fdf005c2e6b7927a17a52cd790119d6bb0f5f857694477ef22d3f4e
+e60edbc0c489ff3eace0a7c87a516250155b134014bf346b46a39c76c687f44f
+224e7e297ed6a26cddbb54c61845d190fc86b929eda89c0955411ea2bfd97579
+8f87660f7cbc10e3bad1cb2a76fee4bf293df6157e7410108d1eb48cf79c4ede
+1ea15ffaae8890608fdb628f7cef7cda6a813f170a4e42b06cd8244b194e5526
+733458ce8f19a74f666609a953fe02baeff0f4d806cf644ef73cb6d8823598ab
+04d27c88faef8a3e23f533ed02650a6004eb4b656bfda4716ec040828ea9184e
+7f2985c05f3c87fc6a3ef10840b1065f6358ff01f4b189441fb8e8d6b74e9448
+50c48930714ab9e5f99af483ecececf4ff679fd661534791d63fb06121c3b017
+6a1d684859e089b8e63d31c530f09ecb52ff003997a3d781baa8bb3613509def
+ca40cdb4620432241c504c38d4c606f9a7d097e50ddc48268424c448d466803a
+55daf292f4d285d0d247557568c27b50a29671f2dd7eab721cb2325483521b92
+5b46fcacd14a3ece51b8c53be683c1c4b22e6f929f58cd7f853cd2a328e7e4ca
+f0ff720c73a315cf855e96422e9627be3fe00dbb5dd3caf381a0e36318bdb791
+c2fcab4fdc4e425c570a1aad2f45d99ea714346018f3b3024148943bfcca43da
+1e4f55dfede2b8ae33b999d62c645a9f24ba1924567dd35e5ece67c55201962c
+260a737c7f21df62aee2a8d469357323ee5b709b00cc84d44a3c035af30bd62f
+5e1eb80ae6708d100c895c7896563679038a11b5aaf9efb446800880d26dd489
+f708cb2a86d304411040a8377cf85489be725c33dc1776e1b1c49951dbf87aa7
+3bacbf40a3a621c3cbede2c433a3c1c85f99d3ef2956d0468a9ca901cb38e502
+02d26e11a2840c55c845d33e9b99f221f272eead643eceadf048555d2a3716d8
+7459e4b625ea6ce3d41aec641099577b4511f8046ce11472a135f8e762ec505f
+b65594a93500059c1e124044415f40c12ee597c69800e79b68c2faf7dfbb3ba9
+a3137b26c3cf0707595134a7a969ff253a3703abb5cd36a3eb3d9f655ed9e92d
+fc2a9acdf7962ae58a908db3c242fe5248b5fb92c194b0afa1362e871e85562c
+46bbabe24681d8f2ca68f7800ada2023d80cb5fc2f932157cde65a2d171ff38a
+7323b8a2efb560bef4202740c3afb713f9c8c32d01172230c00bcdcc494438a6
+f6f700d2ad62803baf7cb56ffdda612497a4708ed3380d3d8892b96762a3a509
+8e4842187c0227d21890566819773e86f8a3eac76f36269900057503386528f7
+a1d7617612be03e6d8dc27c206f6960d0edd245bc843628b6f7f53e364f1e5aa
+de138fb22d7336ed14c81ff8e25ad82c6ea12d1d88a46347a03ccf0c10917877
+a8446c765cc9c32f4a36048cedf884618eebb6f30632682d78ffd5a588fff88a
+8e042c88bc87adacc31be1f66de2e558ce5ceb34776260fba933458cb94df654
+ed5f58fd60de9154c321ed6fcbdc51be67faa7868bd22fbea5dc706a4caaf9c5
+3a1734b8cc0ee57e7dc929c2b317c99c1fb7d510a547432e7ce1920d50b3c145
+e639812f6e9752f3f424ec8a0512424b0fa2f394193517fda2c79d6b6f6ca13c
+ffb8ccf2c8cddf4e2ac58914aec87f26149be2d25fec64d5cd65bdf150ce7221
+204356491b7c3bef9fcc67082df2a8b4c740f7164a58649297d38dc401883690
+70c86a9e53c28217532f8beddbd379e155f929eaed274b873a3a5f2102511596
+ecfa6bb5d27719c4d7e951437445c67e8bbf7bbeb838634516ad96205c8a6dff
+49da233ec7f3ddee6e681b3d3fd0d41223f77b789d55e3928a5f147d0a4a6b39
+2660c12c88f93d7650bf639380769dd8b3aa5ec9692b7b2b3f7c8e60af38a644
+523b185e12843f491006e8eb2f2e6fd5823cc16bcd0a05b5ef64845c37e5032e
+967eaddead9ffa552eee7b019c594a5b69f99f47c5ce0a129f07f9807b862fbe
+e2e496b46b3bcedc466b8cd981c13133e59352e247cac9a435604de3eea1c7ac
+363f4d5ae4f7a83bfeeed85929dc3b4ea6fa8b689a341bbc052f2ae01b272622
+3cb65bbfd70b383fa48476b726b0bbf01d8537dcbb3b0edaef0e3eccffad3432
+b3ce2ee584f03455a8da7a6527e801a6f21b63c89c2c36a21997e33df1191185
+75b6988e64d50059ddd90f7b42073818b5563ab69c4af3b4bf7573818f275450
+b3dbd0f45c17c3dc49d622b53128056149e8cc34d7aef0a828d81e1432cc4869
+a2a92d31bc061445e8d8fa00ff6f3b350bf5113298898ea86ec9c1eb1ce99276
+a39e3d3f08af32a19ab6a1ebe25e367eafbe3cf266d1f3336d24837b0c3902e5
+8423c6b4e0539afd94b3977b91cd2ea57f1f80635735e62f18fc10521c74897a
+cf38594ae732964e52d5fb2261079ce9f4540aee37f8d83f7e55d35184164b8c
+d76a99b8cd0ca6b31841e6bc00ba7b48e0b7ed20a3d2e15e83fe80003f17e3f5
+66c34a7aa060b654ab7e5b93cfcb88830d400651823078845c7b48a10186f54c
+85f28ab3766cea57b51e39f64cc4e5ec20337506a8d349c0d518978d6484e328
+8befd9be9563c80f7b57437182c6b5c98dd96c6d804c46b7e15b31366ccd11df
+757fbea1885ae6b638412b02257453b6fdf89072764e217242b5382a647a5fab
+d224c85b5592c52b09443eacf5beeb1a545f7b8959f76819587e95f0d186e113
+b1c698cdb1bf0581292468938f03e93d0c769a05e018e7b16ee8e03b808c3e02
+ed03413209f47b0c17908896fb35b424528abce48c0bc735eda33c1811769261
+4459fa326575966617ef2cc26dacca8a4cc9ddca8aed27d0128a9f9443bfe09c
+262ccf5d70a1480311d4b898b8d962962f933fca11e8f59874d4bf3c832a7f64
+292747d6f0ab94cf3abbc49a8bb11a7a9d57c61399b3606f48cc22421c12bc9b
+d0af3efb5f97fdcd590a87c920edf1809dcd9ea92cd3946a08659029c39937f9
+971b804942182089f6f9ddbac9d1cafca5ebc06eb62843c93bd252af03e0dc2b
+6fce5be043669d6ee551e64031a486cb462d7f5d07c72feb0546373cb9699189
+84f0fde83fc2e60a8801f5a18687e8e2a94c63973e69944b285995940487d466
+46e329ad38a2a9ed7ad08cedfd6a7df52edbf50580ebdaae44c3ba7256a1ecb1
+d9e1d837ff668ebbe3b7889df1403819693a3e5ac9397cf99f0787d19b9b4e11
+335d8a06f6ffa6d0a30b56a49935a5b6f45eebfe135a76e158b212b97804acf0
+a7e4c019039757fa37e298a384301b8b6f9504163afaa6a0feafeb9836104f82
+038226f23f41347380bd247a971a0f4de9bb30a15dfaa5c40ea54f8f4da12e54
+e37fc779eb6e60868619bb700b857484910729d46a7bd281eda6366a249de2c0
+bfe3caafdd94cf4dfd926e7ea3c191cde90e8258642915948ee74da2d4b162c7
+37fd2949a70c252b829d1e2169aa7c419a3c065eac44f5e13423bdacffe05c9b
+7a8f6d45347154c885dc42e7a215b69781fca8e6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.1: CMTI10 1.00B
+%%CreationDate: 1992 Feb 19 19:56:16
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 169 /Phi put
+dup 170 /Psi put
+dup 174 /ff put
+dup 175 /fi put
+dup 177 /ffi put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 190 /oe put
+dup 193 /OE put
+dup 195 /suppress put
+dup 38 /ampersand put
+dup 43 /plus put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 65 /A put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 83 /S put
+dup 86 /V put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-163 -250 1146 969}readonly def
+/UniqueXX 5000828 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3ffd20326947b1065649b533eb5e9e3
+a88a87fe987918a687950b26f647d6e08bf14d983ed1d4a8ca1e2da8d985f944
+2eb916f5b6ed0697ac7c33e1e36a3bf460d34ce45f1631871097cb04f18e3889
+4cf4ac1538eb19481311d24fe3be7beaa4a3730e8b4831fe59d6d9ce2e46116b
+629c7ba2f9ce3ecba2f43bc162a5a077ca1b2882a42afdcec3f4b75b5d63e0bc
+8e5dc95257766d8ea467ad9cbaf47be60f797580cced6884b3a68f70c91f4fdf
+80fd00ed9139e7f480dc3a76af72ad9b434187730bdfaefe4cbfe5c7edcaaf24
+9204fd703011932e5a3c27be468b7dab69daa18dbbb6335ab8ddfdc607961c7c
+02582763fa069d43563ba17704029945cf42fcb19cf78c51df0ec4d851086d43
+c1ab38e865ef36865fff3a08b01cbcb070ba4893f7482dc7819ad03d337e520e
+7d8cd83bb8ac7aff4df36751f4f12aaaea2b6d7260c09a26e987c904003e0723
+7dbcc4a8e4e85cd3259f40d3caf55c742cbb40ad0db1044c20a4f122a63f7b81
+1d945bfa69662189ce4d089464d2ead9f6ed60b581b04114d5d45e97be27a576
+35154e9b8464f2a0df18da855eb51b8f64d3054b0b2e84621f025a0776d16fed
+b988a43d2d64c32768dd106b9f541ae8e68ac0bb7399e16f4d4ba074b2152d0a
+4e9b5bfc21bfa0d531e28165e518ffc054dd4ed0d74eca079d20e79670419f92
+e03bcbfeecf3554d661596f6f29e12170804d15a250d917ffe7a8b6e8fa53047
+1ed97ba56481589a65ca13619129f1e26affe6c22f0c38540f8ce37efb6e9e9b
+60b51a5a9cb4454fd7c7f92f2f9437159687ab590f35b946a54491a7739c9269
+e0f1fb48b129811c82edb3171cbd5105fe65906974db8a7da92f4f43dc7f6b36
+6981146d86d23613a0b38d9d6191db9fea0172e982cb1cc50e382f69da1b377c
+1be9407f88a2a761b56f398467a057f35d18c01cc377e006182c891ec80272e2
+2e3a5c7123cd27eccdc87392a9fdf63bb40f02b7649cfc53ef933c6518744cb8
+9cbbd437830ef5b1d58b00b67bbcf4426dc1e6ef583b0b4ad3aebd741e3ff0f7
+29ae271f032019b1e7268043fd215be590f9cf24da14a90f1683afcba8006cef
+5d5632c2481fbc1bd8224e8952debb7c4596a237e5505ac143180956ca1f603e
+ec70cdb4a33e1c4ca1744e08940ce778e246938429e09e84f5d90f2822272e69
+7a2b4ec52ec64d678f49d5ab137c172ada65c98e1d94b526ce82792fc597a7b8
+d1e444067a1c4393da7825c1543a87f3384648b24d078d6d45fd4bc57a73c47b
+7b542c0f07512809ae399fb3878d2bd01593bc0eb71eb3c418dd157822bf0869
+de8cfa7351c5fb1efa6843353d859ed973f00e448f5722ba6e7c2945ca64102d
+bdb6ed71e95c381c56219b706394a9bf17bb424dbd9689242fe6c360bb35cdb7
+9b952b9b1eeda6f9f89177399c3f1d980f59764ecd7bb6944572e6352e4e92b9
+1d3cf676a0b633a61f9f181175df326aadc8da648b77d533a41198602b562014
+6db9b14b5e50d3179ed3e734c4e58c41911dc65a44fba4851ee9233d73277c72
+fd361881b22a2278bf161a3a8b7e39585553ddc42cce04696b780ef306be038f
+866532cc766d5a8fd2198fa5f812df4cfcd8d340a82c3fdf7ff36dff07b7fa48
+af619b643f4fdc8272eff8e074ef4f1a4439b621623c541775be14d24225c7a4
+d65e789dd6d395974332d0f70d09af5f1c349993d2bb13491fb05993391985fe
+525566b4ef1f41e2d9fb2630c95b51fd27c02a207233fe6e1cd159019e02626c
+f968d36badc678ed09f8b1fe3b22d02d2e36a0ecd37c0337c57109f5fbdf8dc3
+6be8c4a26c9ff58ba709b2c129f3304ae9309b2250cc581e7f58d8d52d524780
+906f5db4e7da8d776292af2cf1301016ef43a4b5c3c2641d5727b8ca3608da09
+ebc1a1221265f4d34bdce504313f374af4cbf4774081ec7b300c130e22320273
+a5763d6904fe9c6c204a483337d979a5542bc9e58a1dd0a7fab0d6bc73c643c8
+5768c8040aad11dc26b1c9ea10180667c04297e48cb487f30a88e1c4a3507278
+b04b81e1fae0fb1487d219598b25b83364f378c63d9e0f88c19b79d15650f4e4
+c89d57cb1d213fe5b9dc80e35d34d54013abd3182f792f811acbc9671d042dc4
+e79b266cae98e1c083a06b5d33267e44ea2ac23f8de9a15f35d5a437b963117e
+e0915f6f717bfc405a374a4fc9bf7b70846a26a81dda4af49f68adcfa8e8e99d
+31d8ca34a5e462f5f01bd539b95ea10bb77237a70949a316690b88d0f2fa716f
+c653770fcc50c0dc777b685191ea7d917da66c7f7d15998cba8feb11fd588e04
+8f396ec2a6826e6ae8222caef3327884d3a99a38089ad22c91c95698ffc96958
+fee32fa4530f9309a17858470f66c2eda54b1dda00489533e648d6cf982e6281
+1b6837776dce6ae31f9ffa7d2e98e223b27abe4c3d067468907e29d85bda78a7
+e0092b6c89a8153cd7bfb17ddaa15e1819cb5122961e5160446c0e3607c0a6f0
+0e6577628f70e0b03d2955c471d019e3a3d6747733d0246f9128df2965a2f233
+a08acd9b7587ac2456ecf13391ce25774bf3b284e37a47db56d89738e243ae22
+38087db8554c45046651a2f97704b951d4b01ef41ba6c2d5fca02904262b0052
+5b4b7a0ca3b174ce7569efae9dedd119e4f7f0c4495a2961e3599444c56ce424
+6d753e57dc03a2398de27c5e6358d51818e0c028bee4881934b4e622eeeabd88
+c828dbc6cf1e375f88c43816e547c52eab7bac1ca7372c873aa74eb421d0799d
+21d3c70e32fc85138279e9ca52b3950632f19f4a33aca4d2a8cd45e016e4bf15
+3eb85e3842ff415349b93556dd81c1b41294190ead88624955f2c405188a95bc
+94a02dc230ac8ddfc9fd4eb2bcb59e4c95476bc7e54bd613761e586d6356b253
+cca5fddd8d2f1bf54a51229022bfd6b0517b391e43f88774740acab5641e828f
+54b6e6c1ca36f972a9d25d43c4ddfa59b45f9778b0504d8efb1de760c8dc4c62
+abc1c12933cb782a33fd610252323fd065ea99a19630bba04e383576b3b0a092
+f9846115fba4837ba4f8ae57095a2154d1740f339e11388c07a578838837f4b4
+d1eba4c6c17cd596a3c59fd266a825392984de605292b6921f42ead0335e2d5b
+bc19fe3d89cd6b4bee463ecb2d9d22eb121da805687ba5826843385843d7f577
+22c86e67fa4fb91279fd9f16f005a2822956a00e9876e729e1c377e2241d1363
+2e3adb9ca98725286ca17daa97f747dfa6d249946fc160f85f32647cbc73d58c
+bf2ff8e9c12ed0992d27957eb4ef0a61d8398c669ab4a5aa4bd810eab484d2bb
+99e251242cc836c8f0fe5b4f648689e76a03bfe91b69c4aaf3859c0f08701cd2
+7c0b822c7abc90ddcafe283bdf3afc96a98ab47ab35bd0b6ce5ae7288be06bb4
+673ae6daffefeb1fee39cb5acf7f2140117f2da924b6c9ee681ecbd7468b31b6
+8e069673fc64d2110817e2ec44f18badcf952ac3e73d383127040bd79385efd2
+9e21e3d4fd94973eb884f7dca97353e1c9565fd471dd44628de44aa5a6f7ed05
+3eb930add7dd2f0ad00b4a719bca577cb13aff5fc1a0b791b568839530ed3451
+1895a1e2d8a13426ef9eaeb2d8d3910b7f141c0aceb256683f8b18e3ab381f38
+23b27501015bc81e634d65f00d0b2b4d318066e3fb8f9c9f0cf6c2d214bffa75
+95f873c15136cc5da44f502529af6afaa1af585765d6791e7f09668457b9a778
+d27717be1d9068eb457cbb4509772636a8415cb1b509770139fe726db8d85ddb
+77f076e6c03930e868ba7437e24a57dc3294c7b55ed7fcb93022528794a42518
+ecdb8bc78ab0b8d34556b141bb6d36b460fb0c56db33af9b827a189d3d060e5e
+b5893cca8da49cf4c5771ad06d49a818b3dd5537379a7603d3fb1e706cf81cfc
+09ddee4ca47db91bb567bb60384f4d452339d5ee14fc17fb253f39594f9ab51a
+3ed3a71e550a7accfe7f905f62225216bcb2ac353962be75aa16f1454def5da9
+7b4b3337e68277979ad31b218a44da4531cb3d230a0c8779080e85abd9e3ef87
+39e90fbe0045916d26c507458ecae39e78601753f29b4f24bdef09da8f6175f1
+0b5929e397e4dc50d6c8c05ee5026c2c25625c232850db9f93826b246880c0f9
+d6f64857126fa26fecd2ae498fe8f58a0713fbf2e415e9de1daba4b8511ae99c
+06fc1df98678a004f2d64f5da01fb02ef191c62fb9aada3d26c8ff12f013a9e2
+915c5f49f22d9876cd98b97c94358cdf404e1f6d8d1b6dd6fb1fcab3a933751d
+1e0a15fe5b14cddaa624249a0421c7913e1e8c70a014f833c0ce2a6d8497e3e1
+33e719d55f55141f6839d2b00e7912b1844aefcdf0ab6cc66bbd596dbe53ff45
+4f8f8068d8002086473e44a6dd2dcffaf4977cfbf80b0e0f19adede0b34620ad
+b6c6f788ddaa3c0f06ad035263d92ace8b573ee057698d2d64a4422abc6227e3
+554166e41511ad08a3acce7509521a565280a410fe11e16b4678d782b53f6ccf
+ec10c2b153d41c609fa5e598f74132aa0348567b1428657f04eab11d0ee449a7
+6afc5341cf7fee1b7b37f5c310d84e31197f90f13798a2ccd0c7d489f560fd5a
+f3105e145ca5a2850f744b40fadc7937578c9a987efbdd6e5f6e14f5a1df465e
+e0f65ac8ff21dc23389db68eef09cc37cf86c836bf56e78c0aeed46c91a7fe99
+7c0b222e7ea925fd2c6f597bbc0f3da49f1c9b4de57f40440e3658798055e1b0
+c585ebc00c2ebecb8f4e3209116fb6c79ab9295e7b5cdd105f758709df8a8de1
+27d7812e54bad322377e659e8fb3bacd92db76353929c7f929c71b7c55a49f80
+2c2c7c97bc7972da229d07c12fa250efc9f77228347126eaa3f865ca42763f18
+26e342ce4e744d8d36bd8bb525a1a2ac3895852cddd31c787b15e831903a4962
+2298e8ba1ecf02819d7ed7ca7628eb704196c2f12707583588f89279558a3cff
+7d286415789b6cdc798d50396c3fd195ce6f51cabace4d60f2d2c72be512e177
+d89445088e887860c47664a993f8146491b69668a257414fd610cb326778c081
+1625e8faa69f23ea476387ce0ad1195e576c58d6b1759f3bf8faa3e6958bd9fc
+86840d5bca7fd6e0efca802a3e96100f7e50c707ddb8c1b2ec4504cd32c20cc2
+c5b6c0ea706e5c45c06ac1a11f3b402031d5e6b34d7af2d3239e1b9d789bb619
+0c05ea4230b2d40a719758e717263e466b12699b8cc75073b1bf47521fd7e735
+d5c3a4ebefe0beadb5b7cb7f315453d43db795ec562708ba3ee85722592c3886
+c67e468198e77fe74ce548ce16ac761e8a857b4a628ca13dc8fe2f3d512e29d1
+fdead2799b1641ceeb0e0d8284758fd59597ef087cea52d550955fba62ef5f9b
+cda11d1f57402992083cd854a0ac3d61435c82cf8558b4fb6c30aea0b84f9a33
+145a882563d79f597a02f0a73f31447a9d410bf457dd8b9af5a9d2382be202fd
+279606b863a66a9b91a835bfeb43855e00dc31e82edfb36968a121f1fc852cec
+a68d304cadb88891a2825190de706d4d8a4b425346d5ce2985e5f72cb967ec71
+6659960ee64a3d876f5497b9a818728caa8459e400dcb4cf55ec4f7ee50b353b
+c786b1e0b6225618571430287fde581b497c1b23bf15748f656dae896d47282e
+827e510586de843017ebf288e814784edc51a05154aea362ec3ec9b49e9ad906
+7718b6e5c3ea6a9645c7f9a2042ac8d358bc9ad810e8ef42c17a57e0052e25e7
+41e4b0da0e2fdd06df66f990a79a56b46d30fd4fe3a5c668b17290ff99ad6db8
+28e48ea5745d29ba7316d958ef9da110fe5dd16c4f980d5d1103842dc2db1fb8
+0da8228a9332ffbafda2de8f4f46774551b6373dab9360bf95d3012d9965a65b
+120f2106d63b2b210884e0aeda5721d715e1e6fbd7a66a37b842e2722118b586
+555dd6c338b5ae46a9c674fd17b45222c3f65a85169033858bad93824487c6d2
+d6da2b45d736e5fa807a1224658c410739051681efcd2feee81ffa3f273acf81
+f8c0fb7a06901e9dd08ae05b14b6a59d16af8fc89a077dce7e8707ce0b40ec77
+acf189918274de38df6483c6a786add34cae09bec29686e5154436d311fd0a86
+fd6ed0cba2224774c8d5e85e5878c8baf5144efe31a7a3a3a913f94e99200add
+603fad0cedc379ca7c78f0ebf5f8e8035d465815e145fd6a9ec96c96b3637d86
+d87f683816699ad85d7a53d5f2d71401f2f0ae8af4c94c25ce73e5ac9572f148
+769f43989c6ba2d5d404b8d9c5d8206779c341d733c521e1248b8c7e5a7ced7e
+1a709713aa7269b6dbeb91d7145fbb2948d7c5f40c8717d2af4122c8580295dc
+36f38fddf5b8e5b475446fd49280b05878c75788ea628e348965723770b820d3
+6d268b4c385bf4b6d9321d64550a8fc097f5e7afc9ec740531cd524951a8f4f2
+8c231eca9eab3f07dbee3ff532ed3ee46040609140ab3af103905c92f898e925
+5a13d25123ab2bffe0584081fbed388c989ae4c2107b4098f4cc1a642c019c62
+5d24af748151147ba748ed8e0dd12f55aced8c6105424b265147ed5274f5f2b9
+e8487f0c1cb40d08789903b22996274a08d0920cc98719f826fc8fb625e4d014
+1512bea4c7c3e3093d70b729129a3b6ae8f11acbafac443ea00091f659f05ed9
+9a5d74c65c3a6f3d096356ce1a1a0457ce8cbd31b95a7bbe3629ac6a062ffdc3
+a4acd4bf0e6b0c3bb05a3e75cab3d5310bad4d8023e177b5d89760094e6aa8a7
+21a7df588d1970eb8d63348c307bb45deea3fd3d63504d6c90ae6c31acd00437
+2c7ea26c5e01582b5ff91ebdd4d6a1787be6c5410ad12820b7c422234577c9b0
+b66740e85fce4c51f4fc33c375daf9d9464ff35129565adb6c6b4032413d1944
+eb669a33a438fcf0aa572f61a682849f00fe213525122b2f18fe39cf165757ef
+c5c62210baee2f8d7dd50b3be69ed6bb057d09a28175074fecf3b5ddd0289575
+9bc049dafe2f4c5191ea3f7d027f2183a997ecfc11d9e0268d5c506579586d1f
+e3d6ac74260cc597a16ce7562d5cd12163e4dc50c220569fbcd46075bc35b151
+58f22b93466de1bf50d027d3b2888da229a2293527671b4c3b785e728fda80e8
+c6c8144d3abb224cf945f20c549f3725feffc919137f1759c6441da3f9cf530d
+893102c893b03d206285fdcb89512b49a622d355e887afc1d8de0208e9ce144f
+fe334d7716a3e793952cc5f3b38bb3e1b7671c2fabdfcc0a5b0f3bb32be4b2a3
+20ec8b86860da0f537be5574df0b005e3a2d2d9598a94f0faf70afb47f7fcba0
+1e7476adc1ec350ed8b1c31b32d86e4fbe173dbf3818e9cdb31ebc450d6b62cd
+a469f57683554de2021de1fd2eef5b91bdf752846286cbb2ba0caf36eab5ce6d
+aebca50dcd59e5dea9228196217affd35989e579c17fb418565657f5da964f5b
+c7509ef51234e7378376e21f7790736cce64d5027fd3fc161b00b6f455aa2499
+af65a827487abbd7c1326b96114b772108a2b7331f8f2595bab2a56fd6774b4b
+a90f05afc0ba156225f55b57034da76db6c49fbca9e16589f628578b27045439
+1a5a90f77809c53ddb74cca67ecee945551da9d182ae0a8253cf7c9f4b9be60c
+97652015615e016caf69ef84c573b10f647efca5d8e09d114a3eca772db75fb5
+8f2e1464604822221b6c19353206a19a158f14c4fb9863cd65a615ac3465c2da
+0119131ff8974369371f576bcc462b7fe32ced0691ff42ef37ba372334cbac0f
+1825c78d8a696b62f061185fed9d606b24fbf57581a795169e6cec7bc11b3cf9
+8ce827899d2432f0d7917243a1ce685ad7996d0d866868e3e30f10b11a4b1d86
+a8de3c27b69263cdac274fe10d35a63fa6fe8bba24db13029f4d621e5d27f872
+6609d7b9a7654a167432e3247ac495511a12b126c1d5a110f2f15e728b7cd2b2
+03d3f65fb982507fedeb475f429fd7c4e13e9c65ee0018971cb994b1923f4027
+4f421d73b5b33eeab969a9c12e510f03118526912cbcbd76d2bc5c39eac09697
+a32f758e5aa0e27a3e3b427c775cf967c6638c858ba7d96c27fe39442b840911
+bff32c046957dc4a3918c4560940a2e32bde31f4ec2a27834bd26ddeadd9c0b2
+07ae41d8af29abb4e04e291ee886ae996d833588c5e5c531179b2ac700b57ec0
+b1af48fbe1f0f08f0e9084109fa1323b9a324bff21c19f6c998fc65d1bbb6850
+56a0a4590912597c470ab0b2cd2a209ad2b9ba644ae0c27c8b779aa0ade645c0
+169e8346ee958e219cdb5624cbdfd7dbf55cefe3f62ad110f9b5bc6543146db3
+4a1eeab574a9188b5b37b97fc1cb589f2746b18d9210b76f138c43f974edca08
+2a4171a773ea47245a17103370702f4a1eed4e3fb5e795fd12cdc50af454502e
+97680a383f9a9beea80653ef6d1382b1ac9eedf449cc377e315b6f4f4486d65e
+09fea003e47f6963d8440588afb7c515684f59e162100075efcbab002b16537f
+9c6088fafb474a00862dccb2cf7dc150b19d08e3b912673f804baa7231fb9dd2
+84864f2c20098ca6e51398aba33ef30ef488eae0000373be108966b3532e927b
+9382417768517be26dbcdd5092bd180365d4b0c8fefc7273eae169d15c414c18
+e53d5bc4febc5ef940a7d0bacb62868be4ec5aed536c4c8b90b53b1f98ccdb15
+970e28881d5ce63ff56d6b9cc387ee83f09bae9b979adcd82de2872577dde928
+10745ef42436be1c4a25079614f8d586e89af9a9ff872ce7454d15e160ecc0eb
+b0e862a295ac2aa25331b9e7ece353fafdc6b12fffbf76ff15864c8e51fb76ff
+81abb899c23e8a0c9d48e3a5b19f02f106658251cf1594450dad2ef433b9a5e4
+fa2c075a11cfa332be49fb4b7c13d5427f4892acd3badcfcadf177bd57941a9f
+02d0f7e3516b6aa0ceff592acda31bf61d24ea70dda746b04f64eae4d4e6f066
+8079f17d29fc130a63c87204c497139dd37bf308aa3ad725ead19a7008e0b170
+f49e23efc41c9e32068da257dc528714210a0ef8e16ecefde6b427eff5b3de36
+667a3f430ed91b89da9ce75089072ed70a11c1e0e1b8a84127d2f717a309dbb6
+e8802db8b5194590d29b8bb2ad45c5dfd33e66d131771b32b41c01945550b380
+9bfe105300744ca0219948939785f441d7c636bba9cc508b944143aa0f9e088c
+8ec83e0d322f69190f07492580cecdb67dcc96f459eb213e86cb94cc92e4d6c7
+b499d0147a3463e210e3890438c49ad89661765f4a33d36e55de0cf7520dc349
+41dc94d8baeea8dc06709454e503e0287deaa4b3d2ead293f953aebfcf3bd4d2
+0445a389da1af24c3e1c4d9498e12c65e92c590aa57ca148ef0a05e6be95faa2
+c0f785fae5134f68d0d1db50a34a855bf939e9ad227ed4742f88ef66240b2fec
+a5e6ab574f4124ca31cf43059e789880724d2d2c635ae6d7ef4cce55f833cbaa
+f2dfdebf10a789299250843014592447f36d6c721097bfad595b67f20212261f
+4acd21f9ad1f5d2b45201e2d5bb9db627027b137882b55c04a344c0b4f2ddf2d
+279c86c41c2ca0d4d3f65fa949b69260526604d0d2e17c54e9f7075613a87107
+bed712ff7f1b78efa00071d171d5590e070d8952ae509caaac25a37552f7fb9f
+2e4167643461c700b150ee56a28e9aff63e93178867794235f99263a4966059a
+b05841ea92472a7ae5572b097b6465bf792b5c594a7f309950d158b9123c63bf
+2f97176eff6432e461cc26e834ce0e2771c63ff4ebee324b8af748ef417d7b4c
+7fee84acc86f923101339097d7916a6159e45df61b0f31f2fd4e2bc8597c2959
+d9ece5a910a3f3a05387d190fc0ae9ae6e584139dabc6976b02567a5151a02dc
+5dc18f6ba138df5e58ac9a52e97a3c02af2127f0b9e7ce3f253ca9c55ac786f3
+b16a007efc285876b9f4ace78a97cfa75e99b1fbe4b4eacb187ebb2c2c3ed724
+cadb188723d07f4ef9b793038dbc8a77c0125b0dbff1893a3bc5907da6a2fdad
+6874f84801f251662418797a4dfd654e15c3dc1136eb013ec0cae9fc338b5fb2
+d22ad09e5f3b7eef2bceecce2a3a5b532932aa97fde60f9ce8d9032d3d2c6670
+324ac97e7a82ca9a13dbe9b131ace519713b9b57601987df7232c6d4f1dd31d9
+4573c3da675b07653c7a735160402dc39146297daad4327e6b8d0fd05aed2ace
+c5c497184207efb7dfa244e111b8578e426603076111d796c5836b60b0a9df45
+bda15eb97aa6e5324a9e74e02d25c8dbd875542d9a0ce9b332830ddca49031a6
+73181ea9a30332027643c6771eb1b3df975ea0c3cfe7659185fe26d0f3b20189
+b310ffd293edd06c9ce5119e6335e904554271bc8c7426b6eb6828076a0a66fc
+566a7bb88f6864a7a358dcb5aa030912187050f322f10a217b1816f582753a2d
+db0329fad1af68594fc80ffce4f5e8ce2fff7ea68f92c1b505c04af457490708
+b5ca91879e0d2c745659f991eae92a5affecc142742e742bd3103d53c439423f
+33b4d5606da26206a1bf6897b7dfb28254a598213ded7d3f140a2f537991e4d6
+920a473dfc19f89341836147863a7b8597eb39c845ada63634ee0fe9e422e872
+13a5724a93959750c2dc89abe4ec675f4045b7f633a4f64a477e94d73fd11067
+8708c2ef976773278a8720d93c10c8aab2d81635ddfb524f5d030e18987b9dfb
+504ed267b95e183b20d093b87e6d0e12d50d0adb813a8075ba291c5b0724af6d
+9e4021ace655bdf185050eb269db8b02945893d5abee15e0d0a6e18c32ca1dc3
+468d3c0574b19e16618db8aa056d0df37f02425e563b8c6644af97942e5c78e7
+716b50504a070830016b56585ffecc0b347d1cb78b35691d135a89ec594696f0
+596b6955236d3cebcb90bee2c5c76b29502a41f4340a3784fc7bc164c245052d
+8a86e67f85251b9b287ea3db31516c97219b1710c1b11e09afc217b87c1de62e
+a45cd5d069f9681279e4261cdc0aad670dbd5f2107a63f8609187b06c89be014
+8c3ecf6a74bf847088c0aa695155731ba907948f9902ae416fc8dbf9f490be78
+ff557b892c39e2cb5b3ec53b3309b05b5567d9cb084f10f6b271b5c907d07147
+32a2382255cc955c5ac626110e8859fc51e9aacbc5caac6a44edea754c6be5a1
+bb28bd703e0b001006455ddb256cb6704b7f6a89011d28a8031171aea5a2ee39
+1d0c68bdffba90559529bcf30b26908fd5c701f788f3d67249a882b5ad179c49
+cc3d745a2dca761fb09f97af6118064618a4a6dc6f30d40934fe178d043230d6
+b5d3717aa44bf5b63ff0c8223a977cb00f2b9f2c9594adcf3f1f6ff570cd7028
+19017562f4e42ed027ff576c02b4dc7001fc9684e7e753fa1c41fd5d1ab5581b
+843a1f107af7188e4dcaad7cea2c497992a11a6718a40600494b4beba8a15d2c
+5130958bb0a8844f474b37c5c13d61e023cda893b6fb6d97bbafd7df31697d36
+efc517f9e41fdb65549740d48c4d9a29e7d80a311f7edd0fe0ce287478bb08f2
+ac3f71928734618fc22f707fbc3f9423d5e9843861427850bd3b9ff4dd282b41
+b805f728ae3d7f6f18439513c1bbafc4e26ddb6f7ae727ba5a2a8e960d9138bd
+d75148ccbf098bfdb5315f5d269e3e4cf9894a99c1b1212023bf73f4c7e2acff
+0c9080c907deb2041001826bccc3c8f2ead3c4d918961a40fe70937849622647
+9a1fe68fb0064709be8fd1935acb3fc018a92f7c0af384c0ff9032b1d581bb1b
+4b1ee35e3d99ba47a469252249c67e3b5844be5ea0cd815d72439f1cd3756c40
+e2dd768514d4d43d3e346222d17ce2634d42d4a8d9d07ae31b7c28fe0ab79571
+8cb6024ed790b75eea3fc1607086381a904492e0e02a029eb3cd76c87f5cada0
+9db5f2d7fbe7cb1f4df8f3732d8b53e3694c645d9e918b44841b76059d7ef3e7
+f8bd1e4c84cf82313faeb59a7f448bec85a5c29a3c5468414e6d015a2b457583
+0137c80dafd3f048996fcd3863807ad26d1e98c6658c09708aaca7599123c737
+71cc3e1191d25d56784837cd85e7111384a64fa28f5427f0b6d403631c82eb8f
+5158e3d285803c25baf27b3e5a7d1281eb5f5689a56c9fe17d73f0dace78f063
+196e76546295bbb8bfc830bfc184ad434864680bb15a52ce55aeb43e45c11d17
+9f51367333f99a4d340fa3bf0eb5f55bfaa9a5bb1dfc176174ea97df161bbc64
+351fc515a6eb834625f3d111196e800e92e7c40cd2a6dbaab7b1770ddb17d45f
+51c3fbe477fff04d636ae0d0a970f9686d0ad70c1290d77ec2647ab209bbf813
+c87598396d5d589d2481fe75606f26d93ed4db1fed0a8d9546a398db6ca365a5
+f8dfba7e2d1127e84d87daf251e895c5d707cae00c81daecc902a4ecad6fc647
+ba44d557f7af8ee1d58dac9418a8c99fe607d166e6b736d2109a7ae1322cb016
+cc1a70fb02885d5cfd77cf1c22ed49e284712658dd245d3b8552f7b6919e7d44
+ba6b412de7a8f8bcb245f962328d847245f3ec9af7b1a3729e1a18b3cf63ef24
+b1acec921c78b46d74a3caf5858882ea84f4c70542db33bcfc18d8aa9cbfd460
+5076e1dd086d60fa7224e30b4a127f4a1b2193e731071ae88e76a5f7ff2a8c98
+33236996807b89552b2415f46ef6e828ff88457d29dd043635b8719c29ba755f
+6c82845b260b6496fe7f3609355e1adc069fb185df76aba3933f79fa24fa1dca
+03a063212b666808c7f7438bd137d32003682d4445470b44166e22b6c175ca81
+bb47101027d0096c7477958349e97cb384d44539b3d76e228fc9b797aa73fcf9
+1ca094bf055c0e16a904827e0bee616d5cd1c34a7804ca00ba957748f4ea02f8
+f7109fe525b2e216e2934ae69c3d769106b16762464ec87a07078e5d232d75b8
+385b23fa86eaa60482fce9a5698a14a091ea0dfb85e2ae7741c631eccf050b44
+38d691f6cb64c2f4583cc762e5080e1c2a76eb03cb3750f6d941b6bdf66f3ae5
+168ac7ec40c99aee2ae88735d1c695c0212b3d1722c824021c3a18c02a2d5325
+32e5ca85e8e543d6eaf290e08e00cc8ad733d4f817cf3a6ab0c7896471b72df5
+b3c4fa1313d46ebef2e10e58e2dde048e9a1bd75f288d7277cc0bf37f5569872
+aaf33886c43991e905e3c1cef1beb8066d793e6c51a46a666b0eb7efa8d16e33
+48a8fe97f3d36a2c5aee896ba87661a79833228a2699349e537748c7f4c1ef32
+7f83f70e514a9fda2e35b09bce82c48bc8933c033b97bc21bba01dfd775237e9
+dda1470ff2aef47bb4ac34f0a566206d0c29473777e800687a8a058a0ee94592
+ea060372fd89f164696a91ac3dec8496f5e5d7d45fc3104b201572463deb55de
+adf115768125a5ae7db94c0eeb2b232b3cf1c6ad7fae9fb179606d8776ea2f95
+15e4a61929d28a112127d913b3d00a0f72b86e132c246adca9f6763dca883ce5
+fc204ed7593568e9cde0ab5d6228ae8af820131added2663fd89f7cffc57fece
+2cfc7af0964dae4e09dc310ae3b013e411e7346e6817cd55573a6724848df749
+520a285d76d97e6a639eab3fd5af69021db6f9a76065caa13c5c65000fd32a5b
+d24d165591eeadefddafe59dba0620aab1a1de5382135071553526e0d8d0ad6f
+b0858288b62925a927c72495b0edc72fb5e8b21a481933c321393b48445c613b
+8251fc2d3cdc2eb09feb1fa109ac6bd2edd9075704c55faa25d86013ef454773
+9f4d68ee17bac0a48b3a73caa37061a4ad215716885fdd39b9894c141c0132df
+bac8be1105359f7dc626ef6a01ad2f0fb3d469ce184af7242b4ab89b57cdddfd
+00d555ed61f3c445f11e16627885f43674b7097dc525d80631b2b451cf667e3b
+c2736ba44df2cb437a27596d0eefb45592e73c50287d0dbc5a5b3460c6e365bc
+3b9872a20f2bb1e1ddd3f364b4a42a21efc9cc27b9f5b93e4af6526354361409
+f73f9ce5ac1e3eddea8a524707097e14a68b340f56ea3e782c7279f6647a5382
+6ff716390b0dd741c8f268e5f8533fe02f00d4c20c59f56a204fcde748db7801
+af9f53db99042e9313f4b3eac5533c277dd5a9bd7675f0d7cc42fe3c04bd4915
+833a192de5a69af0b66d6900aa5fa39410810c5d5c7fc9e4e56379555e0344ff
+2cd52bb964cb9e9baf073112c05024ef05f7c759d70bae0aced71d362f4b78c3
+c3e26e6ac9c5e6f8c85f1fefd4578548a698457da86d5b9040ed0bb86c7f958c
+713a7cfe7dd183e31bc483ee22a3431a7b0edddabbe1f4c0466498c500c6af82
+4fdae60e8f02694d1f6b1f0035d4f15c11405eaa41fc3c26b1cb2def8ef31b58
+83956c9bd311bd7de0f63ce8dd4280be7ee44d391f00ab3faf1991a906ada850
+56d6e55beab4308f0d3aec1a4a015f276c33729245811f59dac8a55fadd4ba5f
+b95ee8b90989ba03efe17cb64aa1b9b54bff3dd55324dd3039d9bd8dedccb0cf
+6cf92b0c57520392e3b6ca0ce52ad229f702c185cb910d655bce4ab1722ca4a7
+1d66776970c2e88a30e2f4dff728d975f8d176a7bf5b32029cccf057e170e63e
+270d5e7b568823ab3c91221a6116682d366a335cc08475d30ff0cb160372e4f1
+30d05593c53a7e074bfff96b6b6a7a82b49e8660d15a3fce6ec02752390b24f3
+cf840966414acb03cf99f28b6e49daa07d8e9587396cab2fb4e1a1da0ac697de
+8cf61d80034e147e359f1c44a2cd6278129dd0da5ac9cc31fbff35060c8eef59
+7a5b881737e585b1e00c7e8269755c94cd754189cc79d17975db5a005d458fa0
+ca8767c3ee6f50df8a86116768cda92df31c52c4b73d5c430badb5188244337e
+d3c9a29a2971e588c71af7db6671490cdd8fd8d26f6ec76f4982a10ed11e7650
+e6827a0ea1320c8928fa5e329708fc1e7be188f376f82e7f8cac1a24f3a49267
+d023f62be1f16dedb40027ef786a0816df1c7672e093a8eff411238939e271a9
+32961842cc5e90defaa7dd3c4a0524f2461d0dec0451473b3c4d8c9afec9112b
+e6e4630bb9a2baddfa030a5a98213ba7b1478409110b09127b39a72625a0c3c4
+e6bbf4eda78f32b1a54a7a74446ec43915eb50ab7535685fe5d2aa443befa5de
+f832c6c6ec066ae14039667cc234e0131fe9807df562e13597bdfceb011aafd8
+041fca9451f192d6f98c168aa8c8fee5bbe395ca92d832e249e710bc03cae03e
+b790ec94a865ee288ca0e8a0aeeba1b459c0ce9f43d0d94b32cf79da91c2ed02
+941d916403aa42f20d4f5b21718b295880fb7f2f47a9cf2443db510b0c1f351a
+e534829d2f130ce8ee8bdc710472e9adf7bc941addbed1a930f1dae7b74224b6
+d02db193ffc53720074f2d1e5249049625646d6305455409cc20f361d49487d9
+83ac515d6e917e366c0c86c32c3d2f35e98397eee97baa18b0d8de76d78a9b3f
+7f353ec718f3081d12487113ef8d2debbec1e35d2c3e9618a89e5555a5b36f95
+2f0334acac48621fa7205b737a16d889c62087fe995ffa063cda107ee706931d
+ac1c942f52b908af0dda5e6de9cbf73ef540eca2d7c7496ba7651081daf41b12
+7d7f00f17450d58f4b0151ad3d6f98bde8e24b09011c6fbcaa430cae960ddf43
+7fbb5d15fec118e0bd64d059f958406442fdd0893ee4b8f8835ab8d2809b2893
+a16fc3bedd593c0c6d0ac66389ca5b7963e6ecff25370ff1f61b5ab999a0ae6f
+f061cd776d76ac67eb3a90b576c88ae4f93fc1da13a6577baaad18abd8d9f582
+2bdfa501c513e643b6b7fedb708d60db08957dc9a3d71df80cc683ae9f15b7c2
+05d5eca82ac6245ec41e50d2007b35c348e91dd840321e3d7fd2dab7492b15dd
+eac69cc0266d118118d88a12bb06f34314c2a5ac3fdb238e312b24bee212aa16
+5450beed72c2a82ec5cf322f22066b987ff0087f45b3df611fc9faaacf057e77
+18b9e076bd24418d4217981e9c892ea42239fa5142a54f6722442349dcf91502
+f10b1314e4f00c5674a6a886df6450119262c493a91309a4c7f4cded190a6bad
+88eb75d532f1c2192b4f100fc3f6cd4a60ef666797eac1f5958f61601bd41d43
+47b791beaee40faad4ef632aec96b993be8d4ec2cd40631d94849105d833bd84
+b1d560e57bef25316b07261bf1c8a75144054dfd89ee94514d95e66972358661
+61d31fceb41c3acfbf240a267e80e131ea51177cb7699e544553b741e5cc2114
+46e58f1f4d3af5c0a5f191300b9abde3a0e8d055ab4d00327e9360f40c3adec7
+a479f5d2e896f8456165b50d3d641c3ee0bbb6577cb2cc475bc7b373577eb52f
+43dd3921a4da42c4efd74c483ae7c6006b3686ec30bcc8adf3a87ff6b2e6c2fa
+1161205c111d019ef996f09839b9340c7047287b2e4301ebb944e3de75320671
+526a8c8fb58a73756c8cad9757eb5d9dbc66e9ae672a655d1d31e4b48d45d33e
+0e1a7187c377d790fad8ffbb75a6ae85639d11363067f067a12d1dc237f4814f
+78cbf24693f2152f432fac555479fd81ef117e6650de5f9eb0876037bd4c2bff
+45c94d468df1cb9c4acd105105f93c9198a4cf7cb759a2f723e87a5afd118ff3
+1c6cd1a57db4ca62adea19b988f68d3a14c14fd8b77359734ace9d344b32c25a
+94923669d3ffa7dbc10d7be6f5d0153ea32ac2fd0053c938c9c401db4fca5744
+aa8887ba98bc8a32eb6d9af9d204d1bae81e88610758b6275b6a223d6721b14a
+3cf7ab4f2b18d43f3d422c94c26a10df75bac1cdc830705346843749f2d46188
+d77023c99016760aad8198302c939dd7b1436e01cdbd3e76235e82d7a06cfeb8
+21ddc237ef54b56eb85a832b1fa8ee49fe9212ab9d72f54a65ac3e865a7bae1c
+a190f60df54c5cd03360e6dc8fd59802eb10b84f63152591202bf63d29422662
+3cec665a860274630fc8e395e7fc30f24f653719c14b2c042a6c6a36122d49f4
+ac2dfb78b11163557cd86fc0444f91bf7b8a360223cae4dbf6d8b33060aea7c6
+e5564c1a75e78f95f19b0f6b99818d263744268b2a7ebc87fadddb46f1378814
+bdf903e0eb873ae9fa99efc0a01a04bfe5f00542e799286b7b0c87b0362c4afc
+9e6cdca8371a52a77b0141d438eaaef7140da4b9ad910758eeccc1c1240b2936
+b0ac914e8f6691a2c2bc767ae43aa0cb31f5f2e9bf9fc8c5d0ae372118c76ba6
+8b916157d1f96fe621620491b54b45896427d97e2e9fbb592210c9c0e7e6e68d
+fe518156b56f0f1337d6c8e016d2307d1bd62e53899c205861a2de1623c40b8f
+3cc30f61a06a6e31072a10d985ad4dde358cd3d730992a1e6e4da793d3af294b
+5d186dc0b5b36d8e0bb3f74f70737a4ecf6e8c024a733a508e180f2cf5a32ff5
+532439d276675d4b55c4f5d02113ff4411dbd3901912cc1a2b61233098aa5893
+2124ea7e90202ebf42e4d751b7c2e867384203d9c7b0940b31a9803fa35a4fe3
+5c21802974ff97de17669566568c603ea988544b3761221fb6247b113bc5d266
+de98700542367a3b3218d87a476d22cc15c18af34f53ff26f0e69ea1d12fd671
+4ead8f9405c759e8675ea8b209b3710f60e7b1b204e051847dfa9fc3b0e301d7
+3cd6171f84623716d48c0b9eb68eaf41dad313cae7aef59ca22440a773572493
+1886c6b95f1e044a819df2d5c12d0a213734f46a5dfca94744b5a84cbc37751f
+c75e0504062e4d8313c17e1caa75d2cc0556c8ed441b9412e94c7de0d1d19fb3
+9e2869806dc402b0745c58106860074864bb53343240412776a87d39ad3e4467
+917c18436fc3336e4dd67feff18b25647fa6e9b663f32f27d514fb251375e5f0
+2b3c0c916b3d727a3f06bde005d207ae9c1ec12b6c618116966a09a48647f172
+5ba1ddb09dd189f73885802099b8efd365b297bfa26cffff0b7800c877fb9a8b
+581010d671d04b459495fd241d2761c0654d1f16e87a0d753d2a5fdbfc504e7e
+ed78434b96e7885f2e1394d6650a9f92b28c9116cd44dd850e2204084ff17832
+421587bf56a7287b74d00570e25ea99bc910f3733488a705e6b48fac8c11b02c
+d04e1a4c01e3ddddf27b005b2ddea7707a6f06b47a0462ae76f56babc50fb155
+758706eacb7a1fed5b2f7f8ea12d2a39aac8dc4584a55ac7e65b4cb4d2e1a282
+d91cda0e02126059
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+dup 162 /periodcentered put
+dup 163 /multiply put
+dup 164 /asteriskmath put
+dup 169 /circleplus put
+dup 170 /circleminus put
+dup 174 /circledivide put
+dup 175 /circledot put
+dup 177 /openbullet put
+dup 178 /bullet put
+dup 179 /equivasymptotic put
+dup 180 /equivalence put
+dup 181 /reflexsubset put
+dup 182 /reflexsuperset put
+dup 183 /lessequal put
+dup 184 /greaterequal put
+dup 188 /approxequal put
+dup 190 /propersuperset put
+dup 193 /precedes put
+dup 195 /arrowleft put
+dup 49 /infinity put
+dup 54 /negationslash put
+dup 102 /braceleft put
+dup 103 /braceright put
+dup 106 /bar put
+dup 107 /bardbl put
+dup 112 /radical put
+dup 120 /section put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+/UniqueXX 5000820 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f67052788e6703bb5ee49533870bca1f113ad8
+3750d597b842d8d96c423ba1273ddd32f3a54a912a443fcd44f7c3a6fe3956b0
+aa1e784aaec6fce08dae0c76da9d0a3eba57b98a6233d9e9f0c3f00fcc6b2c6a
+9ba23af389e6dfff4efec3de05d6276c6be417703ce508377f25960ef4ed83b4
+9b01b873f3a639ce00f356229b6477a081933fef3bb80e2b9dffa7f75567b1fa
+4d739b772f8d674e567534c6c5bbf1cf615372be20b18472f7aa58be8c216dbd
+df81cc0a86b6d8318ca68fe22c8af13b54d7576fe4ca5a7af9005ea5cc4edb79
+c0ab668e4fec4b7f5a9eb5f0e4c088cd818ecc4feb4b40ec8bd2981bf2336074
+b64c4301da1e778dc34c37478847febbb8373a4470c67c9c7f4a4ee2bbec944c
+b6065f544f156c55c4b78d4209061602874835ff6d992c7260173bf08b452149
+f4cc3be3c2e54e296c1b25426251f964406f254921db8fc5890cb026bd31b640
+5b616ade6efe6c92fdc0c0bb2cc497bc376e745346f0d6dd3e50e52ade66aba3
+338173ca3fa6519fdcaca852d5578cb3c7848f4231a604ccd70ce3a5398cd843
+d58494b59b1a5d5ea22a06512438ab18f185a9b20d9601c097e31ca932b64bad
+5bb70b4736e37ef39ccf9af89e413fa9ab99f3205e074ebdf5ae793eb9137528
+4330d7bf81cae24ed4860b3e2c9fb00051c1a08b72f050adab9c9b7d5ebbf045
+bbf04e4648a774ded11ebb9c2c813b4e4be22b03870be7bacd70fced284a385c
+31d0f51ac4920b91f7c876c4f7e8c4b629290aa02ddfb7acd2553aab889c587c
+d05a0a56ed125a65c742b3400f964ca21bf8391bcfdbe760fe105a2bfe6d349d
+a6114c6b5504cff5f5b520c044137be4e2442dcd220f9bf5c43805d66c37d3fd
+a87d2c7fc117ab23655d9f4491952ef9715465429198d14062167c8f3e84b0d5
+7f830595258a5df91a21ec8c952688c6eca335b0b0838d0810bb71c9e951c1fa
+ce28d31fcd2b76f5488a9d5196e757f53265056b70bd8a162087a65bdc6e3c92
+60dd89f246bd9d064ac971a7ea5278830e6df73a0d510fea1876baa32e39246d
+7f8caaaec956c2e8f744cdb2b52149ee4a9600ce66e490149a4104f95afe1cef
+203008a8fa9226c398531a5b86bb4e4a3780a6845e19599d7f08612d6dcf3881
+18c43fe63068858230159d3fd1a37883b56a8d58b2c69a92472abbcab444cd7c
+aa29ee9b290f8e420dd3a37095c9a0f367758ba53c6c7cf95a85d05f4c8feb36
+28c6abdb0f528321c3f7177e54a20570c6ee27a72d06b84af2e57a630ba5fd89
+baf626276ea15184d74f2cc22a450c40adae2863103ce37368737dfa707daba1
+00a84c4912173040e204d9150c6c1d18f19f55d100c684a6665f8683453243da
+d9a4ceeb1300e02eaf2671d753b6ce52c726793c0e3543a27ef659d016971c53
+ddbaaecf4af4b18f923de11241d9e803bee3b98971b9b4f9abc864f84f79f7a3
+f5ca3a224f3ce5710ea389d1897c8777bb634ff83bbe2352408e71cbb9b92391
+40477ab4a9adfda3242d8affea4de283409a40ee5964cbf76752f894804ecee3
+54de6a759406d10bd945eede349d82d571d9a1cbce30835d1a2563ebea6a0fd7
+70967979412a3eb27251c323936f63e2c2b069d8be703ee911eb40b38717a5bf
+4df056c7d85d2bc8e444d2dccbc7c406a3444cc4ce23c14c10595331ae8853c8
+51736c5af36c20427dd1d791514736af109fc5ff2438a4526e59470c78f568f0
+9d17e56e07a7d0ec8db9adbcc5c5231ec93889ecf8b2f3a173cfb2901b0f7ffe
+fb19a916c8f04602c1c932099b4792163dd1a302dd22df441dc4cb82b3276b8f
+2fd162d4f71082481b52bafb0b4404647cca274957ece1665cd1fe4379b33070
+f99b5a5f08d5ae94659f079d9ef3ca8a7210dbada697a1b41b23476ff5cb92c4
+0efe220b3c127d4940e7859f535e07e46c8764b1e32cc19d284a65c22460dac0
+438c18e6a863e94376bb5ba15845a7f5a724ff6490c2d8e3102cba7cd5aa25d2
+8721fbe65db998b3e251c20bbea16f8f8b3c6e7d2c1c2c79a81952380045f87c
+247c8ace93f09319b23f0183b2b4a863cb54b5cb6911f89f59b3f23a400b4daa
+85cc107ce61bca1498381e71dd20e2de6cba518c670de3c9e96f3f9c5f3d64ea
+dbe58ddd4a2011b353a5169889b5dfbb3cd934ec2380c04aca386d166016ca10
+452db25c5a6f7bb550a23606b12cfe02383309c5c4e7fa4e86786de314bb6898
+f8379957e2c41a20c376d2a2835e0c3dce3210aa35bab81f8faf6d9089efb895
+7a697f193642903a39352f831b7e8fe30488456f8609e93ee84d5db31d7831b1
+719e9a241e9592e26c8b6ec6416729115c0708663c4d6f39bf86d0887ffcfef6
+5c8be089bb3a9713a731800a8f7a0df70f17c1667b255668e580c11499a2961a
+ae7d202c2d8e4822d29f694ff95dee84c3a2aedfca15964d2a71fa357b0bdb59
+62bc4266bce3bfefd0d765e68526a8f562e5f7f41f639e8fe5158e5a2f6532b2
+f09d8dc71ab4f3aed544bd8b22ab5cc3b4b2245087bff9b11c39f592e5e34f0f
+dc4de3591709664d7e889339e2685267b5bcee5bf83d47da6f36b60f5a8accf9
+afcee5db6b143278a363da673d9219f5c114932d715cbe293bec765706956b55
+6673a8b63a8272f15d39f3b81e395610275947e8814ed4490c7cfe91a9c579c5
+78d62ab5732ce85746c11c960231e26080f781cc16c4b501d5ad12b98738393c
+d06c503bbcad61cd72beb4fed7b4d34e57ce355b9abdbad95918c363a411c6ca
+8a64fad2eab0731a4c8ba7dfbd6273ddb26f066d3cb556b76c5bf909b883c228
+0821c4e5ec4534bdcd7d2ae43264e4c5820ae5d79fa626dcfe88f20da18caa78
+e0eb0fc8596dc048e6f9d8614816b944665fc9209eb92b97012b026f79f4aa5b
+a709ec2514011289181f7e6838490c2a418c58f2fa86da6841516e6a48e23274
+b55d8ae7b8314662f20c1fc8b6803328e7c4974045062404c49ced4a4482239e
+9731ca7ad49c767db8694218fff770f452e0c34b65a9bd8d028e72a68e8da706
+961fdfcf939de447a270c25305eb9a09bc87ecf3ab4ae32b7011c6e30e47b73f
+b7ba9a08e2853931626bdb9bfd271045c2119d0bd703f8ecbcc7d23bbd6b4986
+5ac4e058bcb2a02ebb107ffabcf009d616ec7023ef110af154d5ea846ddafbfd
+f2560a0d94fed8623ad0d486e0dcf2839f3533608b6ae073b0b47357bdf2c3e1
+d25896c0fb828906b9bdaffad7917eb6607706458dd420822d0ae97033fc50b8
+5d7f04659199e947d9d7aeb2adf247183e84078e9cdf0ed7bbed15a257ba678a
+8dc5909c06418bb7e6ca9cdb59cd3e01fe30d494ead0de07ec9764fc5dbe64bc
+a442186908af029ef31c1512410ddd99e581e39777c41e947eb755b1f4277df5
+02bdbc8c8e01779667263ac88dfdc8779317b1f022870f67dbf3668a831070c4
+64c7913779700180284e999283edd6e0b394b293e7237cefcfd5017193b152b5
+857aed23941d87597b0654e7835bb06ff8e145289fad5296e08ff1d9f0ad14c4
+cc8c21f0016f6dff44fc57cf65132608cbf62317822c0f79757b563e0de46566
+ceb71ca19639b4aaa683f72bdc593c4198a4a89467e03565ccf92fa459454a8f
+91ef76e68b5f7aff03774f951a77745d28cb182d2344e6ee21bd0257a44de89d
+77612618ca1414a3d61f239bee766ccd919217f26cd0ef4c84cb5b00aca30b3b
+40a0076b5c79303bfbcaa72eeea7764eef5e104a3c9227cda65ebdee33aaf6a7
+ee37c87547789befc645416f768cee66b680a8bf234ae01d01ba78c9bc97e568
+5ed8ab0d6e2b6510a9b8e63513ab71800387abcf5829310cb9f9c0b7c0a3b09e
+e66941d67f25ee12780b27cdb7af84cdbfe4bba719df3d8a0147b101453e4776
+641c7d3fad920ee34d4667d8554667b556beb9bfd6ecd2d36ff24152a86ecf99
+d7b72f829d52222f57de534505d387b4dfb7816a5173a0cce85fbdd3011d459a
+324835dfe1f0b44e71b5c574e8d9518cfbefc264b93cfdee78297ff13dce7c7f
+d1234a3c8aa1b0458ad1c15a0e267b83ed055851ed7d8f522b37150ed6d1aef0
+7c74b718615ea6fa4b3a2f39bf3dd0b7a815d4f962f9f142c613f93e487e5ccf
+50e202415dabdec11403714c4ec03c98d90776b936e59fd5fc3b3b7f3c8d7733
+2ae4a3091da9967cbd071289890921e0a1b59f489d173af182003a0f39379c5f
+c7d3f669662fbfee6717a7966555e8dfc4aefc30c5126e7b10355f64ba58a583
+54cb210f2e0a7b962be17345a65c8a19fba0ffd2e425191aa05e55e42b924c2e
+53e74d6c107f956b857291df6c752644387dcd74d25c9433da16c6eb90a76438
+531b45b774a347012960ad4408940d45882d7fe1fd97daa8f4b65de5865c2fad
+69b7d45a9a9b97d2f1f6388d47bad0baa0352b0f98b681ccbfebf6f000e5b52d
+aeebaeb6dd3cc68e56f9dca2e4398440e5bafabf79b22ad26050c6ae94380b60
+714ebbf86310354bdacc8540e61983eb3e06ab4dc2d1474be0ad89e81ca301e1
+29ce0e53bef21aa833b806f6675a09b6d08cd0a54226f534e046a1b0c1e62296
+2a12cf28c176fdbfbdb2e28521375b9cd4f674d206f65843dbde0925590f9abc
+3d38ede9fff4550e5aefb1d8a7b91daf7d6185e4135fccfee2bfa94be2fbcdf9
+6551061450bb0f22965269f2fa5072a970077a1239cd5fc40766e8149c6a183c
+30d2c178cd39f9dccd5142da00907fe0e3d389d80b8213347a64375e566a68c7
+e3cfb6ca9e33f7660cbfa720a0a6281f85f7a037e48c69637d413c2450ef2bf7
+21c334dae9de0688334eb54ec2ea00c4836058bc78e447ddb6d63da92d561ab2
+9851965bd5137cf5abe5110a4406334f87c3da5a02d9b6ba270654ab549e89bb
+a76507c1d26c8a547355d692a9e29707c31717a31d8df7ef636e22b72f0f5ff9
+3f74c3d3a05eff5c1da03f19ba92b39b35f3cc60f5bcc0a6c517b0b138d70d20
+a58320ac8bda522e6e938ef601ffd99e6a4879d0b21727006d1ddbba4c9e1558
+73be9fe412f3d52ac7c0949da04faa22d4e722bce25fb1c35286ed9500022446
+8e2715000bbad153adb6daf8163b35ea25f78d083b22d61e97aef58f72ef3bd4
+975303e5e53f3153021052bef8f6d2db614c02ab8d4ba188bc93e76d7c20cb7a
+80026ff1ea6ea745cb1b6a09e04cb3ddf147ce6ed61d34aa249bf3fb5e158b0e
+460919a224be3ea55e4c4fc9972142205cc6b8d13da798a9868240be11585b20
+ead79c9b0eef9750d40b774ee2c7c533955895c61df8feeaad64e7e9cc7aba0a
+7742b2d52b4a053b593d0869e9b2357b677e1af84086c5c2dc1de6e38739d736
+0b84b4eac3cf75da2bab023a528d2983218bffa73631a974808d10c689016f46
+eb4c8a8fd71beb01f6ef3847b2fac8df9b0fcd812ea1c4e6f9c3bc526b647c09
+e53b024febf0259c93fcd7a8510f5e733666b9261dec4a3acb6129f4f1b588bf
+b1c9f4d81558fd99e48ccb8366f8f4bc8979ed0711e448a2005cd25a5d043ee9
+e9970b212a3acc989eab34df13bebf3cd63d672781ed780b919a6cb9f8eab69b
+0eeea6d8c594c8a6ac68109c527d1c06c1fa100419a90261428a294362fae726
+9cc72b5f5eb4c7c3c27fcb414024e0dbbef599aa0db1c531b3639f34f2cfa97f
+c1619e1cd69933a6ea4510e3b164a8f27d65b19decbd672aee025dca11f0fcde
+f6c57e8dfea33a5189f7a8598efa0fee057ddc9956548a868bc41c04e09cd492
+065212025b404730d0aa005a6502e9df19f31045c43a50489544294e5bd26335
+16b650753f5068aaeac26f505e1859771ab76e27e8960ed41415dd510d7ce076
+1f7868c83892641994e022f977ee8db264c24c0da71da7681824c6710f577f2f
+296a7de1e23a8da2d7988e71c8b2a6550c88b619e2b71504de4d1b8fa93d7b54
+82ba452a8634f2257ec5d6e8e87bde8527b257d7a339c825b3785f18a364cbac
+aff899026e60ccff3317523e7101e17dcc5ffdc1877863e2c66bb61a2a464e82
+56e84992db3ff0259eb02b5f539085fced106b4545afc7810186f0e81168522b
+426314d427529143e02f22060c73fbbf0a10cf897f4032fd1119e091267b0a2c
+f9fb14635febd4cfadc6e4f2dade58fe73aa78448206ed2e215fcdcdf963518e
+ec47773ad889f6d5eee9ca598fbc757bcfa1dc42aeda7bdf4f14048c7f254d7d
+a44bf64768d4c44718ffce70697dc760d16595151a785814ecac6beb409e8d70
+16d4ceda6cff8b984dd718400eda9d02bdc77fbec192bfa72d5349354a3258f7
+2eb4df7a50d8f085170d9eb793d1793931823bda147737e9040124f44fbb41d1
+4635
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 169 /Phi put
+dup 170 /Psi put
+dup 174 /ff put
+dup 175 /fi put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 188 /germandbls put
+dup 190 /oe put
+dup 193 /OE put
+dup 195 /suppress put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+/UniqueXX 5000769 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be79011d1f5bfae5c1f476ee6f05eb1d2caeb
+269958b194521197b312fcced4867f3c8fbd030bd715d8ffda1dcd454b174e7a
+1a97b59fe770e67702519d9d9b23d61ac08424d555242a8ca08c49aef300945d
+99b999a79ce74804ae6bfde623f4463371442f6523a5f6ce19c839a708c02513
+2e22c696c8ccade45680e5197189d0f98e7f0d5f955e353970b392cf530a68cc
+56b0035ddfbf206c3074beeb0739dcbca272a6e629fb7aea2c5ba7bae50c7b4c
+a595df78200c352997ec3ee564df229fbb5473f5e8ccb1cc0153e9a7e299a8ea
+a29b69d1b622b1f0cffc58291248759607d91150cb0651120970dc9f743bebef
+44f6ae92facec57658999c8bf01f60611560043962c0695e1bb87d090e0fdaab
+659d6557208a660be9aeef8ae55f71b8bc76394d792967e41bd8023b6e7f8c3d
+9987d5e54c53bf2bbb32855b946473b44833bd78873df8e4c7e668ffff25aabb
+8da4148f744b9d0524d6cb8281247b3052cc5d66f3f1bcf8a56a3fb446ea587b
+d8be30257652cee035628aeddfd8283b5ad21b8b1480ad24d898970ac8a1e33e
+543ce4e3c48f9ee621c5ce3e8ae930f890011b630866c988606068d9e92396eb
+f51bb3db204505fc3d09d4701ac703a14d92bbfe27bd7411b363a88e33a8e9a8
+025ac31f21e73dc52b333b918d0b1270c54873a490222d041a66e0192612be6d
+2c88958a8f70c10390146ee5091df020ab97675e8e6901226eed50125d36c221
+be8f20647442444b13f0325f899b8fa15e1414119b45f920f73dc3496f6de0dd
+4418a1181e791b49a52866c79d377494beff7f1b444111bca4fc2bfb7279fa29
+38fa9be2de762f20d470813c4ee0034371812efb9f87014528b7a09be4f01f1f
+84de922d6c66d7f6ff96a49233b2396d9c19b85b132ff565893ad3a11ddb88e4
+69fc1decd51e5b3fadfd1e3e50914839dee5d5d2b63f83e8a7953833efe2492a
+30314f32e2bd9a758f2abda8107618eef886f13905eece29e3a0267fa506a772
+71c89450b6cb4320ebecbaa8928a9cccc83bb321da05ffd64b3e3f5f7c13e42c
+0369dd7d8cc208d4e42864e6022c05583623c4dcde164c953724fdf2cf825429
+628b4b5a5717e152924bc126f8b0960ec10aeb74236f3cf44c573c206ae492e3
+cebc050ead5350bc9307cfe473cb974b0317940b3341527e41e09d54c8333468
+8c15aea020a0331dc183245f2f09774765ee52a864b93bf3772b55971c80f9fb
+796a4a683125e99a79c082d5aca36ed8f9c00bc82a7d45fc1c395a259e0cb2ba
+7bba7858f258706d5a305ad9191954fb3dce7652ce757c2e6b64f0cdd6c5799d
+723274b7c55d6391f19fb117279579369da36d526d19f3dd4d8dcb722fb3d625
+1365876fa7a50160d08cbef275622a8ed9f875178d1df2428b40d8bb944c2be6
+fdb64dbf9ac35c782810916060ccde292bbb93e1f3909d0fd0e86a82416fb3f5
+8e83b2447bc684b2de1c1c79e3f455e3fbd39c6ee95f7bc1fd7adb118437efa2
+930a25fa8f0b6f794c85a7f1d420779c49a0ff88b3e610514d9075e5a74f84b7
+1e4958d64111532931277d7bcd85b38ef968e8fbba535eaf802748a21cff2213
+f10635aa8fcb41b1d99cd7d309b7d07038e1b5e1a837a96682e0dadde4bd7c49
+236b524f3e2f19a557c6d34325cee72e9b71b0dbda1a651eee9a4afbf6f91651
+f7015f729b687156bdc5d42ab6e3252e0b4c0addc31ee969a6320fd7d957c527
+c9ba6601181a976ea48e3d49893575fe9159f7963408b15d0e584827bf87b7ab
+7ddf0e9798b15ef96dd46166615f0bb10fe22898a480f861c65bafc5abbec9bb
+a392e5e0d3a67253972a3b3902d5009e5899dea00226bd393508dcd6b7332c7a
+c055b9a7aec8c4f19540d78208533a2fe3826a8c2b7fc60fb6e1720be3edfd7c
+7ebaed9a5457d3c4d179c83c68d181dd6b913424f754f2ae81f558dc0a1a981f
+672556e8fe4658041005e2c49556bfcbc3e6412957ee1c822db5d896d9ead4a6
+479448e1d5c1c1e38ba87546a3af28ff342a226ffadf4577f5b222a47e4a3d15
+de5cc2e70839dbb28d1dff1d18bf4e6253d4eb7dd089811a4138191840dace08
+75bff56d4bd5fa9980c7a89568c939a27f4515874ab1da5d82eebbed805e62a0
+cc5115864a61e3ff194f5402b6f50234baecc8776e98ab4120addff753cefd45
+4981f61fa657ea493bf1cb18d1b86e29bac849bc7f008e170f1f562b22baff41
+f022747c4f64489f4315aa581c1037204e7d506e4805de1bd70795d634d6fe57
+98bd4d2a9756d84ca1f45aa9b934f85f030af460f3eeee73f828f7e31429fec3
+fb50da626bb02aeb6525d7b87b3b7b51a9be125f08ff584705749ae4fa2b5670
+3e08d8e17c802043e16ab8619c0363a87bcd3bfd67bd01f527700ab6c332ab78
+977d772ea8229f5fde77706129198f0ddd8a92cf94e7857c65c48246623ae0b4
+3bba8626344e8e3c1a8d125d3735de24d6bd618d3d5a1e9ac916abf22ca357f0
+55e3328f1409ebf2fcfcda684971066ac50180563d8f9804b7bf374895a84c80
+5d46f21438fe830e70bcac24191668c58fc42c2ec014adb5678786b8e06c00f1
+7590429c0e5f4c13d4779f181d6678222c5a0f31ebc7454c13a7d13754e9651c
+7855e17108229ad1d64a69d041360268185d228e69872c76693c13b1dceb4b91
+0c57b3729d839908e9569d36601e0fac5879224333824ffcbf51124d08eaf929
+6697b11c436d54fdd3f73b1d967424ae5c53e792edda6d28d53847d8476d4e23
+bcc099fd4700af9e2731c5c4e52b511b0048eefe8063be994911d4edda76e9cc
+2de6f8387ef7ff76cb84e0dc4886e7872ed789463fb095b205a17aeb00f5907d
+8ac6a63fba38767b48721bd0f584fa20a8a6bbdcbb8695d7f143794f78192245
+645b2f7de2ca36184277ffb64fb1af12c276bf0671b728b4003c82813ce92197
+e6e441ae4c2fc9a1cacb4f3c90d396b6b0e0aa472eedf77665e004f5903ab76e
+3a3c36fd35dfd21bd0ec076da9141a0e75f01c569593c4c5fcb17391055165d6
+8e088c286d9414311221997662c80196d5ce1c235c8e87caa069d80aae3b7bef
+8dcee04e5401096a88e86833c9b568f7cc7631d20ea3e7c22830a5f49ee6d7ed
+8ceb5c5787a2ec3ec43bd58a844807c479820eb9ef721d963bdd78382bc8574c
+5a4224ab4a633008f5b8b172f883a1356f43a1ee1a0cf692e45f55aa555af248
+d346737dd5d5013a167f60f75dde24a9b3d0df0de5ac52df25a91df5a36c3c07
+cfb181046a6fa9c7e73f76155a0a87ab5625b107f000296ac086c50289ce8275
+9bfcbe92032194cb890080f6cf556b21eaeedec9df710fa6652b3e729c0ed5ae
+527549f18e685141479e921d783adcd03fcf914ab95bbc25da8eab01176602ff
+27db168224267a59cc91ae0f9855bc27e211ba35e4c5117469506746bb76cd1a
+a6d7f6fbc1d37725bc90d0d78949237876b66021e8d85863238fde344ca014bf
+91a3f858e355934addaf08c953d33ff428ae16aa41b6f398f98742eba70e01a7
+5346486cd7f1f6991cb68bccfcb751fc7a63262d7ce702a90e4bbe743b39e642
+bc5cc0b04d5c0e739ed43f9b1fb1cc539561da3b1a87eca6637406153f894f0f
+2b1ca3f121d21704bbc4af87dfba404bcdbe7138aafd4dfa277db9e393478d16
+a8792a312c3daa42ce21b0f5dd6e086ea5a219157a74e2e03d950f5066876f84
+4c6c73a01860e97b8f9727fe6fff95ac016d1b4fcb04cbd076bebb2bcd8bb85a
+77fa76d87bd3bc00718d5ccd956ab3435b31cd4232b654c562170ca4e51911d9
+0160b6c413449095c398222f108a64c52e5942bc2e1d669681bbc37a6e294a1c
+50fb9eccbda9897a4d4af3925548cc58311366f4fe2393720c1d52ae091caebe
+5cbe54a4ca31dffeb9990299659da54fd431dd68790cc3ba7e3bb949cf3a25c0
+0594912dba0c28fc2151b494386631074985342d7b8b7c9c49cab73110f6d344
+f32ca70bcb381cfa819d1ce89b13721b985c6db6876a504822d0d8eb5d3ed72f
+5f0489d01152c3c0e33954fa83d60e8d49bcc258c06faa42249d1d4f2cb42f31
+efad9537f9e22318e25046a1c0743913e71064be48f704c7c6772ee2ff714e4d
+3df09fd1bc6cd22975c5e5381f0a00aea4121c2c8d46ed418606f69aa1ae0053
+4f0e16a778db09ca71cbe78e304b424b1f7e00a42ee42198e79c8a523eab66df
+2c34e37a8aa9e2269772d192f65f15ede123d97f80a7fa1756d3858fe3ee3ace
+4b4055a909961cfb99067f1e38b33ec3bf791bb45cae1679cf0bc61f84b19d6f
+34b575b825deb100afdf18ecc3c740dbd469d22c3974a71eeb6ca38ad63988c8
+1d58e63badfa56b527eec6693a3443ddfe4aafed28b5a7c74467e092710c7055
+8217ee97117cac2be22e08372e9ea8172dba935b64f9a010897c9d659c5cf08e
+c2b94dbe91523c0a9202accb0462a29d53bea648953208fda3f2881ca01858a3
+1e0deeaef3bdba2d41bc9362200de078c52c1cdd37b3cf374c0434e03b1add93
+cbbce69eb321ffa1dfdb34940a90de8c29d64a0bf37531b2c343d1eab4b18bce
+e4633185eae9554f1ba74d7f85a21315622bdd28d737265c10037383b625b82c
+603b0908068168e1862338897ce54cdf6e2cbed6a0f035e369111239a9c90488
+40c1b993e78a9d2a3e793ce80a05da6f3ab8de95be39da2d743caab01b296f08
+9470a65546a06e292f39985c4b4d88d50bc87253e13fa9760d2beccb46804d51
+694a2836b4a45fe949d860105d2a33da71e9a58ba85028cf35a4978001e9c092
+29cf8f5c7c62eae66a4212b43487047d259e722e4606a1e88f7b5eb2a072e85e
+603e742b977a4ce0d5ec6094e6bc088c3b23e00e5211df54371fcd4ec854725f
+a74ee59f7b4ccb72c263ca4802d3162d01faca7cd84bd421e2a890bd82d23703
+eb47cd11189c610dfd17d994192838be42a525f1ba347d4609c4f9b3eaa0dd6f
+ad1e2dfc1dcb8ee61fa702a85e17349f6c1429c8560314249b789a09c28534b0
+3d62fb038316d0dab0505538b7e238b2b29ccfed295f8a97669a03fdba5056c5
+9c049c191fb2bc5931a813a9db5fb0e5ff7a944ae10043810386bcd47bb9c090
+89853eb2acbd5fa08bc263b0404445e108bc1bc1a6676b231c6f50ac78731fec
+efa9cd2ddfda0674c7a80c010ce4b6aba27e91a491d8f29048671f66fee68262
+8b13171105853ea9b4cec4f57c95a67592bd9e10e7551a50698d46136b323750
+17d870f877b621d995c26fd8f787623fd927909c1745fef146cf58213501b30e
+4c8a1e826ffc8a01c8249fdd9f4ecad3d74a81b61060bf89f37acd09d9b93524
+c5591eb8e0cce85cd50fab2631101ed815ee39320e8173a1eb01dbb8586cc319
+d5b29f48f653d832d5e6852e1ccd9e16b5f60371666e25495d8b3d21ccc2c7d6
+9125fff805c2b9b5bf8d4dee0d9d5ddbe5c8d522203ef7359339ef59ab9f87bd
+b84771ae129c1ad94f7b61257c0b800756ba039f8fb9bc3144508966e5a004e5
+01805e874e52a1016d089de7e6db7fe27a2c8cb8db9dfd026c27a87c882508ad
+7d43900557ed7d7f5b9fe9628aa26a44f2dc3cc6761b962e3cc94fe430217053
+680923d7dd80026fb1b701f47cefbb8d4d5e089c5014559debfa38e3a04634c7
+433c4ec089635618d8e7fc0e0a73d3e8f3b18f8a8ac84372c7d51f30cf080d21
+853a470b964868a081e0e77cbc6a9a20947b903d6d9c39255c5636876a8ef5d9
+971412c2bcb94eb12d89d5d08bdbc2a92927974387f04967d4e6b0f86fea3102
+5ccacab3fe41296107dd7d0c072fe68f6daf307feb54cdbc59841ae3cfc8f00b
+fc3ce5ae340e475dae271df2911c1543c223bca27224dcf661175bf68cbb970b
+88f0ac8997fb194efae4be9803af772a60db607b053fbaa515a32fd65cba44fe
+d4b50c8ad90b6a272e7f40039aebaa209775c81cd11cc05df07f522d88c9351a
+2f647311b13596b56380fd3995a133a7b95f39a41d5a7435c1b777680a9314d3
+a7c92dbb864cd48d247f14dfab238a50eb3e4861da92f90de5e795fdc29d7dbc
+9c50dc0f38a6c81dfe42b86f912369628a9b0ec247e8e6dedb92cabec125a871
+4c30ba88247cff8d21e984b3b8f910f09849e8b5b0eb76aca5ffcbeb35be6627
+54577f32ead143b132d359b789cc497aaeedf81193c53e60fbfd1fed16e11b07
+e3b1cd5975779350d389161a65e7cd0b20edb78cf47e87344ac7e52c0f93fd7b
+e3362c44a429d56ad027c2e1901332e025397cef54c9bd01d689284d830d02d1
+03fec6d43b58d5b8936864a3d07a7469114a5ae0f3a4716b0d2a25150015acbf
+bed45038fde276a2b97f3b1e041194a6cfd7ef82b15c86ff925566b96fdd99a1
+b3ad4f92c3695edd5db40ee7b04ccfe9a0732c2da824ce55a91fb8fd8f170979
+b5b0ee29cd4f50a2300a3e8701f39bfa56751c1159ce3fa0b25f20bf9c235665
+413dc9f9d107411617aba3df779b480145351045ca40211c41596933b4229cb0
+3ca0633ba0531311288c34d2127b792b6b2be340da7aff4e1fed39f99f3800a1
+ff0b573d667021ec60e8b90974ee1c7e8adc19d9a336c7ed5255e3e03bf01dbf
+40e6e1ce9574657000caff4bb152512dc0119a0acf70bc07e0b2bc161166ae42
+7268911f6ba186aaef8984183f8ff3c31b1a8e0661e43616076865578093df28
+8104d1474181e6dd8ba7e5c6dfbfb9562d3f91861f232b215d6c225e957562fc
+81e1068afe1a0fcb8e21b1d9d9a7f1143c3bc27e295a7fad761706e39a8aa445
+3b99e62dbc34cc74a1c64635d192806464cdb8c689136d0e343f295387aa76bc
+27b4d2b4a9b60fffb1c011f1a6970c9a53d8b2930f9f35912ebe8876cfe3004a
+e4ab31df52c83529fca7be6d718c325b1672712924b93f4ab7970b4cf7bc6028
+bb6568665b4074da9a2dce234f7d67d8716f1600870381979eda801a7c91cb1a
+31cb972f655b4e257127e051605d9382684e909898292634b3b2a38b60253251
+9ca55337714a74a832bf4305f282799ca47611cdc9b42e1ca1d5b66e62ca9b6b
+bbd184e2f55fb0a296288ec985bb3d6b76f118f38c0fe3df926f1102fae365ed
+0b284d2b19d62f8c4d9bfdcce2f14efedc2c8eef10ab5bb0b0a7cdd6241e7dcb
+20905e8a5c3a25c75c92ffcd425e7961a038ca4ffac5a29ce0fd965d99981bae
+62f134d13698a925c3476f4b53a0c51f2aa1622e8b5da61ab08a1718794922e8
+3ab0abeee7f2185a6cef08f6ee73f89bfe208d416ddbab05a68971f0c22049d7
+4180d08060b9d2f826f427e4913d749ecfe1a008563c978098b35d9cb19c5cf5
+1b6451af465510bb88e0188f6e614b52d3162b8410a16eb04caa1ecb16326604
+7a47034243427b5b860aa15f2d7dde76816e5745281a8335bb1c35447b143f9e
+c2f52e57230cd5e2d4b42e55be9821157b8bb53dfe316c7bc5c605d08c93beda
+32afb42c523313b169088892c0b21a70d64cc1d7bb7c307ed353b70df9ca0311
+d078dbed37f6087973a9e99d88d51ea2b950b5035dd5709897d7b1db6e3a7ba8
+fb28d8fa300529fdf3361cf6e6a0f02b65d5b2db71cd39010b2a842ca0ce9fab
+5a390085c523f9e17e592ad35dd2b1c7d290a09f0a8ae065535165fd9954f5d0
+aa8e937242acf106775fb19eaf5422829f7c96fbdab9424589737734abce63e8
+9ed56ebe63b399cbd6f4b8eeb9b2097f46d51460c23981f7e11ea3bc628b86ba
+ff8c929625a219a63cdbece6f91966bd83d87c660b9bbe1f128832a44647201b
+ae1eb7fc69622849d9979624fa3cf29c66bfe2f557dc0684167e750daa32a72a
+603f43ad42856c226f9d77db46af8432e9cdd920df01ab397049cf8e61d54411
+b26b446f032bd5c1b834bc422bb456d6b042a25262d2cf1cda17a0c7966e0308
+6645b39835bfac350f645f7fcabb44b8b635d2df9ea2e68e2bed6c5d19c9a298
+aeb5db01464aee0fae35451ce9fe195af74e58738b94d1d6feafd3f468920d2d
+99c5aebc2a6114fbbd67fe6ed79ee3a7eb4df882b52f2c5697bea5dcd3cf08ea
+74ff7dd8f2b84621b2b33af8877e1fc942a90a9859b847fdf3800e01a1b88d0c
+84711274ee5ba0ebac4010635652db13d519495a0c50d966b099ad9646e61ea3
+822a395c8929b5a4cebe859b4e55feabf0b6aca7701cfb35f2b56b6ae8102c72
+2f1bd56ddf19c214cf3d1affe041c8ec7565b295bcb6a12bd3b2386235ae2084
+e7bf812f870ab2d1825b9d581a5ae330ecb611a2e657b2a0bcba4f388e83b5e7
+1fbb02f735b50db852ac6bc77b3f9b405ecc2feeb543bee45b1a6d9e154328d7
+32145cdf22fa3bd607113fc7963d602985239a1413fea74d7d17aeff827a6da2
+49d0a7d85773c3ac515db21c4d611f44d6cccda2149f1834abaff28cb1c23d2c
+1ea56afbaf12501a2d026a12101f8d688c2c534457425f2e8d2315bf3ff3cdea
+9d9f45a05b3ad66fd1d466fb3b4db03eed5095572991802171144890f6d56ae7
+4103349f385b1440dada790a169596870e9d4fe5d5d59a2c67b21a2807ac128b
+7d2818977002ec6d7a7083f523030952453c8b26140c898538d3d8d8e2e90f49
+74b0886309cc3fe74738db13ab980d29bf32efa6194425b3cffd0bd1390e560e
+7b67536c38671e5049d08e4285d1bf0e2e19533c361eb6db92dd2fc9198b4578
+8c8e42926473084ca2bb9703334c270c6eec4307673db171e2ab8d75f3aedc79
+f0dd9e3dcf332e275eaeb3ddf84ef1b05bf09953b942c20493c91b1c28f30fcb
+15b8fdc75530c56e21a0a2947bb4162e84107433d080cb0f89ab2aef0df7eeb7
+78eb27a289e94e29bd43cdad265391fffe1e0f9bee760b3eb834cade928fbbc0
+701153eee4e83b98e8dd19371f83461a7d73f18640120fb5817ff7ab1d7e2c98
+9bd1ebf95af78a870592f9abc69c6633732071ba70673f7feefdb31498800e2c
+c38d5a517390b54e3faaa8605505aa69767d1a8d65cc8c48d63837972f5480c8
+26c9c536c99db2b51408e9a94d46d783130de66a24cf3901d6e40576b4902c10
+aa6270a9018eccc46fe8f0b7e5a75f92236df57bf1d1dd8da573d3a047ec36d0
+aa30dfde087073fb8579f21828dd0645977d00e5f75282125b19a50007737bf5
+036012cc06f9dcd18de3311497a13d77ec87f92b6fbccf82a0677eb7808df71d
+5f0c662c8973cd09c78d1cc91a2108f36e1d77d022d799f49976a4341618d4b4
+3f63a8ab748c74f3199aed2152055458cd1936ab10a95fc9731c58f72ac6d566
+83267064d74c8b2c5a38c397c8ff24bc6716630ff6ed3854a480a65699084313
+9b240289c45d966a3482508e28ee45544e07abd13af40588157d8949ad6d6976
+004dd0c7bb9b9ceb104c078d523f164b3a09f530a149a7e92663ce371b4dee1d
+4adc634e47b76f8ac4d60d60328cfad29389365d091853a8d488f2af191f20d2
+92fdf375dd1333eebc538081a58c721c4d621207bb9e3fef02d3f4314d031b1c
+2e4c3ef79e22fb2d0f805ba2d563286b013ccef0cd5de7e5a618ce78dd1d8daf
+30ccbd13d395a5000c34be4d0d353da3c366182e33c957b2bb0c04eb7a94b25b
+dc1c7276d03bb6421eb4848a82c0d239947796f00e1e5df925efc80d799b870c
+8314ec51e11132af66d0a70dfb334445ad4cdc45185b6fde2e1059fa22a92c7d
+d81227a932740cbcf434784086c11dc626719826b3b9c19f052a90c9bba47cd7
+b0a4f6d3a369ea710c12297b460cb382621bba3fa349d13bffb6709e7f43fef5
+a734698b3ce2b8cdfbff311d49be6d6c7d4eee66739e649cadbd8857dd43dac6
+a6763f03010a3aa4344a2ad0ee30e3a86c46b8f22aeaeade879d113ba5ff2f99
+bd0133eb31a75e503cc5ed915dd102f3c6a387e869ecdea85bb21905dda805b1
+0f078b1f9516fb353dd323a843c5478917f36993cd748974b925e815440b960a
+81a09900b8bdb5c90e3f11c8bc1f828d83a8db8394ecdab1ff5b5712262c39c2
+8f0a74eff84cae78000251f92d5bee1e05e031ca4ac2385c588e791d0a40a074
+5e4f1e8cd95274dae53a8d72111d4d4fc15d47b9545971fbf875170db65df20a
+b6da40df3d9d99b521fbdc51df9f8e240ec96633415a0aeeb3fd8222f23d7b0d
+adcc2e7a3e12860272690c6dc5c74e5dc77fae77941bb3b33f9a48945ec06a4d
+c87905f16d02492f0ac6cc269a189db22362a29a9a7b79abc14c17ef7f71d3d6
+3fce408180a9120d3dd83c291f070b628e6b5e94e4cc7fbc8608e8b419b85263
+f625c120832f1527500d128185835011f83fcb9dffdf7ad3bf8faad33dbfbb40
+74e1c88082338830d36849195b73a0445de27b0a0cfbf2b59362302a8b4a918b
+3e57b0130a54e30f3fe267c17daca97179d1cb90d922c66fab103c1f12d71ff1
+320e3045e32e24cd5e7aab6f62a790bebfdd7742ddc50a5c62a1a7faa9161e9f
+858a454f98b2e93874b94b30f6a0c6676a6a5c9f9f81c3a24a66627895de886a
+aee1e1f36a855ceb6a404e6232b81054ebf22e2f8c2af02fde7788a07ff82c9c
+c63a8c60d88132f42e14f4fc22c3b69fff3f98c67a2e69c9d3e49828b511f9f2
+d2285237cd02e947e5e0149cc425dc5dc8f69efa4dfd602d4b89270b01aa05fd
+73f5796ef0388458e52b19031b3b4df26da1101aca640f840cdf19e93647c877
+f1e61158de08f9b7c991bc8f2a13724b5e70a90069ff618ae55d1f5cfc0cf791
+6e9b520aaf752459cff4740a51d2507fe97eb3551129d4267a6e986216799730
+2b2ae9a7f125d1ae9bf6dc8a077ac44e39fde15ebabcdf4edbdc4095fa78f9a8
+afdf16c5bd19b20c5bf6eaea83ca5a1cf3fe67b381152c738c0263fdf0ce8c6b
+00ae3300b2d029166fadacd429e8f3a849746217f582bee46592584384c06dca
+5ff450f41b18d0f400cd9cf4e88d7beec8d03d25cdf3c7cda1713ebe2dfc52b7
+e3e6cfa9d8235ce3896a29fb6f1af188d1e4b29f1926b963da8a59f13545c63c
+57d396817fc8f5032f023196b509f72ee4b4b6cbe5a223a890a8519db2e53e15
+f929b0c6e9d7dcbb867091ae2775613133bb12fd36f64a1fd599fefb9b00c3fa
+1f49e31a9f17a9c1de40b0093f78d4f70a86416c16d478ffb4b3b59587e06155
+b67c75fafa3adfabe601bf6f6539550d31bb56d591a7e8d5488fe5efd6ea4f46
+5a2fdcfe904a994ea5ea47b20bbe325ff2dfde842f336eedbef5bcfff1e8c902
+2f9985310d989519c9cb54878b28446be4a18d4463b9b39b8cec0b39959e6146
+964455a027d730ebd38acf8caba1e610b686fe04b14506ddd8f820af54a66153
+0c845f70188c25ad3aa9aa9b7c31694548468de72f9ecfe9f2554db4ae57846f
+a10ef6d913c15487e2e8227b69e669b0c54319cbfa8f7a8de75663deddd802ea
+5aa1c30b39589627d29bb53f0eda22a7f14f69655fe87269295c813dc69664c5
+ae27100256f093dbd1b26c39de9be1d24167d059801e1e0db5e64703fd76ec06
+01a5f30fcb0581e199c212268d8ccb21514722636606c238e51c60b4031c395b
+c8718eb76c94739fa32ff4f2caa3b451c7f614e21d75ab5172530a71cbf9bc52
+46537574db349864f2f5ac948c162078b239e0f5295aa6e0c828f0f90a009658
+972ccf7d7ed8ee679049083dc5d2d37da0b6ed574b8a3d05d2df57f3dd1e0994
+ddc562ee1a85a937a405a41ee2d0341bee9eefef2c7d78db3906b8e5cea32c18
+556cd632f60923e500861c6e0a84bc9c27a4cb7b05408a8dd141583c08fdf0a0
+933fd5aa376d692cf36a4104db6e259034bcefd9bdf8008d1e42e2bb95925991
+5489d581ae8d5f9e0e2c6aef7967dfabad709d8070efe1ba7570cca947dbbcd7
+81c7d8098de94b346a727c1cb82cb21afb9ed6516d2a6bc0de730031827f5f35
+d17b0bda249d74607f493ab7fcffb10cb2907623900b42c19a5526c2dfdb1d97
+ee43c0c4bd630d5c5ba7be5ccb5cde6db303aa236261850c71fb3a37237ab2a6
+0a8d36c278aeb0a83e771a6f1cda50ea0c1376d9bd8f3adb8f845444f1acf9fa
+5ce0ca32a65dfa3e2505ad4ac6cc4614746a50daa6f8ea93f9d220103d666880
+fa6ce7621bf5a8b2e25c73d08d171ff0d9f9f4ca2bf188d0a510caf48ddabb0d
+3ca1a11b04e0a5a3a785e85b7bbd4403fcf70b5537691fed4412287d77a99056
+c25fcff4facfab270bd4ec8630defb1064ee15e2876a5a23d2e00cd8bfc26962
+70e8341d5b620d29b3d7a1d490e64fb067da326905dba4a3899b7182811ee5a2
+b1a8315b132eb3ac94efd597fec7bf083693776b5cdbb3cfaa3870802114a09d
+8da9f6559dbd55adaae067b27567e9bdcc05310a93bfc50196a21cde3b16a246
+9d1a07b6c4346fe155f186b87f4270ac14ad1e24af5cedb1c5e06a177086881c
+be5dae3a4641581e747945acaeac9cb0f208f2109cb8acd5a764c521992b9f52
+4b7fb5511bf89b5d7070f106f8a9e00f177e26a57744dca2b09750311543d93b
+d46cd1cf93d550311686befc7b6f09a656715246ec6c589d121efbe0d46e4560
+6a85014a49201077a33747abd6c7536f1dfb38fa046a22cfd63da995ede69c06
+f9e6f736c12ef69a7474509a1a300d3cf4ccb88b34b2289f22b9b1c7a0828a8b
+9f664d8a6c0f20471bdd534c44d158067bb9933a2c7307cb6f932ca106487269
+312526d75521acc3d86e5d6a79c5355d11b54b65c61edc92248a9900f1a578eb
+93c40f3f80cffbf953c2dd9681a5089f29d59de5fa35d19c93df3fd2417b7369
+2cff704f4fcd512f4712bd19d8f83d98887aa86634e16878f1453bfe7835dda0
+42def17bd427325b2498d4a49383d965e8aa01a0d6d1a2d2463735849d83eafd
+0883f68ccd0104913de3fe2bb0f27c49f25efff690bb3a81e7f6eac61bae54bf
+5c122c085e8aa1f0f0a9729c7102e7adcf2dcf32678a86aad055f5c09edac56c
+b3ddea7ed43555be0bbd68b327f05aee6365bd499d525924cf625e37dfc4ee1d
+02d2044b7ed73119a8b6ae960c295eda062c50541b2ad402c8ce479a43fe231a
+a5a0bfc56534a32a652421be9cb91ebbc518bd9deedc93d4ae6eeaa99a45783a
+4283340d99d1ce0c7e9307b927949e4c1283fcad149337187a09d5c397b72063
+3fa1c6946212ad4914a2b9342df3936c7fe968c34baf62c14eaca5c5fa0feee0
+6461d43d9d2dd5b1b0c05977ee4e5e53afbf34bd2e962930d392e6e2f882e4df
+83b36df6046f6f23357c8ef34d255e350b9566078dd3543876a9cfe06e177ab0
+17ee3635134d3271a20740e6a09c59a71e1dfd79facd8a81b581b941188fa063
+6520a672c78cc50ca53f0a64f09228c8d249e8ce4f9c6de997ba37cfa6c957e0
+9745c421a376e71e52e27a3148cf67735124614939fed286f9df0de127a4344b
+241c74efe0336d2edbbb7f6d1d9b980604473f369da07a932b42a9a35bd7ef30
+57ef9ea2be90985677523dad31391361d4b64d7818d37f4968da4f0985054cf7
+797e8ca52976c8b361390c620fdee068fc8ec3eeef7f5a375da07faa32fdbcd1
+1725139005b3619a7cb26e34ca08798bb7150ee22aa973adba87d0db9fb130a5
+42ba8defdb8852005c1ef4a10a7511d5f9fb95634a05516837102a541dee4b90
+a3739d5e4f82d468275e43ee51a742b5d42dff8b1f689ea96225dd08debe380e
+b53e7b5a5a79f142b1fc9878858e343a4c37173edef233a0fd99d7c3b28e2711
+a17075461c199fa13beb1a3119a20f231adcf12e63380f9e5b8518da37f84353
+4bc47c9c34334c3c676081b2f62d0e34d758e4cc295949f652f4f0ff57f9cdda
+a7f1fe75b2f50d77c7055940cfc737975c82c52ea6cfcb9f1934b86fcdd55451
+ac457163dcbac1aac5b4e1d9afa7cf5ac8d1982d6f93e91ea57ca98165d7178c
+56f4a12f5667fbd1256374cf8b1233a71e89f50af5fb06269b8a680344117687
+04a10a7934405aa58103faa11efdd4d5ce5fcaa05b8406b1afe04b95e7b02580
+28c1aaa89bbc21cea38aff28b06d51e72fbc7c02c230d1a6eb57dbfeb4eea2ef
+7a1a9eaa1c2fbf1754be4f45b96853f8ecf2d0da48ee20ab7a4e42261578afd0
+0c8256e6731918bcf9228a748f1e7f596cea04c853a2f348d03b4f00a66dc501
+e7fce0739006063e804586e0c05fc05c1c3f5e2d746321a58955126366c47738
+4f890f641d37fb4cd7d9efc6b5c98412d7f74eb70bd51f8120cde904c1f947cf
+6e4025f7c98aea2d7d1eb7c22a1cbcb5053fcfd1ee18ee1722cb26189f07fb10
+b0cee72ae6d81cf1ac63f2f59a66ff0538cbdd876ab2736537b4642135447eac
+69914c65e2515f560a4bda4e7963282ffa289a1117b2bd92ac853d73bbddb65e
+95952a288353f2c85ec69698a210316f1e556ce7d539bc4c0d51ceb6093f078d
+94e1d81e91dd0570d9f31175a0505ec2233a63f9b7a10b743a3985a0daae300a
+d24c114df65565d1eaa5129e467ac4967eee39947755300af65602a639130a31
+e4133c4e75c5c6d6c93afcfa7eb7c88cd146cde943a2527c9f61d7bacc6ac0fd
+ed5a659502f1614248f9410252f4d6a9e0702ed8ac2c195a9507c3d0afa10970
+31b4c5a0750f10c310b17172d4bdf69ee5ce0e9d8e4f5452c2031b6c5b8b4d84
+e9b53a0720ad8ac9d1f86a783a04343b644c414a99468a29e88bc99e4401b533
+048c578f61717929ffdd48d43fa1ab507431c69a66e321b219f36e6bbf662757
+56850d1ac018f6f6a5a0b8b5a10047420dea573395494b5ab337c4bd6f8a8067
+5df5a34dad98b48c02093f514d92726b0374bdd3367ff6243efe4bdc327f76df
+8774c47533391f33661f862d20d5a816b568ae3dcd321279b85ca60afaebc2d6
+4c21b19e391bc4f3132550cb0fd6c53a1648043ad925f0fade000412832b9b21
+4f5eadc0b15fea039d5c87217921b8c8a9d662b861cdcc0b2207f2909a606b4f
+a1300393e84ef5cfcc9814e7471c030a1a0945ca7bda7bec2715cbf3c4bc6ca4
+973f765f66a4988ffecf9772f9bbf8d500667fead98db2e340cd84aeb6fa1d12
+560445189d7bd4451c111952185ae5e59f63341748b6fc4297c9f5bb3565b98b
+c55cea9f914e35c7b7d44c2fe5f0f6b5947d9ee4065cd187bd9e6ccb1b625e63
+8db2aa1476de03be32592843a05bf4201d40f7ce5bf26fb70b55b04f732c578f
+1a29482f9fb3883b9d7843cb02691cf7beb766cd957ea4167fac05ec68219546
+805eec0cbdb239b8629ec8595719c7cf2e15558721685c9002daf6466775cac8
+8c3f019346299af89a109e0276598fb106def719309c63bff26d253c36ff1e6c
+4dd654f5e0858090a9780db6b1e1eceaaa9cf99caf698b1e7ed4a9c3231f7548
+ffe54799049f68e64021c23c2033c1388b6ae961c8a7275285da9b58df386af2
+406ff28c9fcd341a76662742e468c53242872fbada869408860e5dfb7e2310f7
+7ef024355f4e644b06bb4d715b0ed34136ce7a4137137f6848b8368ee9d8fc80
+911d2398cc650efcbc72ae555bcdb70d3d42a6e9e55a93781e7e8526b2bcea63
+381346bd30b376da439d53356fc6b7b20a765b1aa86913fd7be4d4bd04759476
+74d0659596984b873adad6bd4dbfa1b994b084bf7b3ec4714904b16e66bc1a28
+cf33cf0e4e097b8d70a0970f99db4f119463a184ac9472715faf8b56dfd8a373
+2188959edde0948c1b4fd15a772d74dcb61bb80ba72c0175b5f4f4912f6891e1
+c6f1b8a8569ddd4c75cce4e4103093065f9a32f135ea244e82d33c25f39dffdb
+d42e86b71eb0f3594faa83ef4e7febea5b10804671d40b711e76f93d2d1c9e1f
+02fdb6445641d6ad75eeb648f82d70a5d47f1a8e3f5f2423d08d5e4cc8954f62
+22519adb32f413d2c4cf97224b4017d6c7a816d3c4da513a82fba30c2c534dc7
+9fb7aea172d27b53f24137a322287ce2d2a724f187176218925811bba64da007
+1b0878a449bb580199b45d26383110ab1b8692d50fefb22fe92de4ff5e2dbfbe
+c645949ffa3802d32c4ead1954919d745beb485bbfc96fe20b1aecb9221b0840
+864c0d7ea36983b2ede98ac3f509eef2cca0adb1b57163920303f6b4d9d376d2
+b30324fba50c2fecda03d73b3b634cf9a7df24d5fb6837c6326d4f07abbc6029
+c0727024f543241624346d4b1a887f4f45bbf111b0e471a61ce9c82eaaf7a359
+f843804da4e1d6df6b8327fc3dd599284e193159122f3ae8b7ca936102368482
+6b81c90e1a4f7bc10c2f5a146eb8506b4c076e191a611b4e0ef772c16659e893
+6b4989170739b3ec3b6408fb8a1f92e1c16357b2075da987ae20d525e65b36df
+b982625fd52ace45fe052114f8caa91af82d49f7937ab5e80ee8f1ac6905c29b
+83639d67fa12ec1b33dbb02e0daa618b3e8f7eb00256b8f81f5ef703d0525020
+1811bf3e10c3b67f5e3db6ecbb835eae16bc811bf970f30e742b6bba4f94a55f
+6377e45e41c89a27943f8451b5585409c08944303dedc0128480f44309125678
+dd23058c36d39326da0c098075ec634dd4689e8accf5556630c4026851ebef2f
+e813f5285ec00380e9683ecd559f8621cd27baea3d091db4e7a7a62bb0d99059
+c3c3e985a4625b1d6f0e2660dc3261b73255ce50263a2b0dac20dc3497eb050f
+4a4ff042d58f36dc8748cd14d1b4cafbfce597f17533464ac83c982465e36ba3
+d965a91afbf7ef8ff62790cbae184e7666543830e50280c6dfdba981c1ac4c92
+f918a438389d9ed23aa38f15e122b77fda0c4583958061ec1dc3ca22c4bf9613
+040aa1a1eb87968b77e60f7fcf3a3fe814f98a4572b021d83fe5d2fc33125d06
+0487ed1797394042f8915e16371a0f65f27c15baddef3ede4a639ba9b94a25ef
+dbcf219f5d446645681f23c82dcf5ae540c9e29cbc9f8c5658bf008710de4341
+f108b28b281e80fea2f73a02e6de10374055e8c2f27d9e40fa4a60fd45fe056c
+94ed82f97b7ab3e9434b1333ce4afed4ffb64ead8926eab686797edf6acc33d9
+6f97f4dc62d536dbf962277a021af4a4bc2d6250bed2fd3499b4676e78a60891
+8f94e71265582a5654ec51408a1f10950df0056f40482391932bf7a4e0c7da64
+ca8f722ce9a94d330a83eecdb4936aa7a41b4b815430da6e75a87356617299fe
+391cda0828f8317b2a49a42910ed0c07a67c0560aee025c26e12057149a9e19b
+4b1432662902a6a8886371bdb1769a477927f42908716eaba4a70909cb589a6e
+9894f3be491e5f0c62256bdcdb605a111b42d33cd18650f2bd152691a47c3b34
+22030d3a41b5cb1adfba2dabc9702b3527057141a20200311c92024577f76660
+f250469afe54fbbf206f34bc63877972fd74e632bb9d454582a64f33f779d6b8
+186da73ea50f3551f438a9d8e091dd3ad81b279b31ec5a043f306bc870b530cd
+ce9cb6e97766b5dcbb421528a7569e99d8ced61a0d5112d51fff4bc7a3e0cb9c
+6f149c05b31ed21ba7631a4b57e2664cd6aee885d09771b7c56791519d02b31b
+df1af2564754f3a447db04703e3ac6e1a02bdcd254d1092793b2a493192584f5
+6b64d83862e883d43ed9793e145e8bd70306eb2232be3d6300be2bd526f118ec
+e85ef420654ff7dd140b30da37a2b25d73de3db1ede7b4d5656def7eac9587b6
+1486a3b707e0910f20c30569e703ef6aa872500def92149bff1678b48d10bcb2
+19d059d6f152c1aeffa23ee64f84986e67918baa1af0ead20d46dccc474a7b1f
+95104180209f7a308438f59d8397a22543dfa8a51e94264603cd6c7a89a32364
+68cd684518d7622309f054b3cb5986d39ba13a5f1a57ecca35a31dd7f5ae9bc4
+dd4bb675441707b2c721169c445df2aa78be2d5243504f64a036ef3054b342cf
+4c
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR5
+%!PS-AdobeFont-1.1: CMR5 1.00B
+%%CreationDate: 1992 Feb 19 19:55:02
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR5) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 169 /Phi put
+dup 170 /Psi put
+dup 174 /arrowup put
+dup 175 /arrowdown put
+dup 177 /exclamdown put
+dup 178 /questiondown put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 188 /germandbls put
+dup 190 /oe put
+dup 193 /OE put
+dup 195 /suppress put
+dup 43 /plus put
+dup 49 /one put
+readonly def
+/FontBBox{-341 -250 1304 965}readonly def
+/UniqueXX 5000788 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306457c7e62c1d269f306bd3402e266de
+fc3b5e7d8a8d2f5bf0fe6ddd40d07391df4fad4a6018dce29a2b8f692b29f202
+3a7c0e66de8ed85c14f1f8492167357f51a7e84cc5d92e0fee4a71813d2ffb26
+445026f89b4787516ecd1afc78f8bd19e91e9ccc9402e8c36d2449c1ff850a8a
+f61165aac3fe931332dd28e261b91b05edd18f44ea7d58a8f35fe88493b64aad
+6bfac3a0136215fc2f4ca8e91d70c5010e6f4013e6d63b44f6fb00afdbd7cdb4
+5ec5b1d9736f45cefc8a0124b815987cebd81bbe0d44dedb2d5ef37923b3d551
+abb6a1cefca7868fc7bf3814ef7d7b6b1ae6e869cb77aa29e3d90b12b0dc3ff6
+ec945922b5899bbf2f12e92731486d2ef1230c528bf8d7e0ae09ad7632a38966
+5963de49d1ef3d65bc483e4a577b927c940f5e121169ba52f6576c85793e5fd7
+7f5863c488e55bdefd5d8b2514795533aabbc12e7f51816c7e1484f1c441aa9a
+66a5dc77158e79cd6692d299b95e8058b35e771a6972d2b5eb1cd6d2bb8e835d
+361a6eac0c90c906aea1cd75c4412a1339dc1439f93e59917311bf20af4f2bc8
+bba5a4626f75f28a47d4595c37f4019df480d9385975159142618e22e964f019
+d88125210e2ef21d65baf500adf802297b24eebbf4e93c617a613f856bd0d45f
+e17a9480980ef83950bdb8ebf208c895ebc4a7132f0765b7c19a332ebbf8a3c9
+ab65063a42e19ca9d43dec3de7aba46b9a5d24fb93d615c0a1726ab7e31c378e
+ab77150858535b91362ab0e2b968dee1c53aa5b2c9238a0101c8cfb01373d08f
+52239f322b3471cd68ad14cdba2ed6a538144bcac6f7305333f7c16e03198444
+f0383a1ff8aa78248d6d06328116d2e91c120f84259eed33be934353d9022af5
+fba4492ac1c24f555c1005677d93ade147b9a96fb08fd0c266c8a789b454d888
+905084c826ae1e0f812d14eab6899d3fa6751f25c361ad2c29b9b9add3b1c6f6
+ca9d5e1cc42a2095b90d747affeec50e572bb702cc540c8d9c7021b8cae1de38
+cc765d4af5bc219007c0c4c7c6d2f3da5b36450f3c5a02dce15626e604c1d036
+91c5ddeb747531f4d43c47851e4e777c6209359d74c883e00979362272c67fa5
+76a863f05e9caff0a2705136fa17c6b1e20314eabc0e314e63fe3b26b982ed98
+716281eb63d101c9db577dad8ca2f3770392d7cde2e9e1c552a0fc6e60293369
+2e4ac4b151b9c1022958bd8a425e50fecc1ccd7db332cbe7d05132e343be5482
+5fb99abd25eda69d4cd9f157250f1c84556b68da25788b1d3e9c54875161c415
+7d986dfb9ef299e41ebaf014fa9a8b47dafc5f9a442f96662c4e95fa7c72d745
+48690ed4dfa5dd25b7bb60cf2cc6979050618c3bf20b75bfcf97d51cffad8c42
+6b0dc02c33cf84d8cd08674c44645b8aa2c1afcfa1a50ae0666c8b0b82a87ff0
+85f2dbd1559de16de85c49098420e474be071a98dce0bc1e349d17f81060fa53
+058535559681b84c27db3413747dbdc82548a0efe0399daf1ee9488c24f128fe
+f30b80dcb4f7f76340e914e012535d3fb036657350cbdd889838ab5e0283a244
+5d644e3de0e7270e2ddbcdc2aa95ce51833d814a4473e029148b91002cf6addd
+ff3dd002a952858e6365f720fa423cb8d7dc4baff0132fb65f252eaccf14346d
+adcec38c56e1dca38706f9f4a775fb056c6dea1b292e6191d381ff249bdb481f
+5ce64cbf241002b226c092c68b4705d6450c90bcc0549f1679506954a9737526
+2b2af7353e06bd968704f8334deea3d49944793bfe8b0bfc6bd5c88bb96ebdaa
+6590c820d49f4f2db6f19cdb2c2b729f2b95415311c46f183c4e772e7a16fdee
+56f86bab7e87ed8a00b94bc4b7393d8874a8b1e0f167c256867cec47f7cfba10
+f33f5331446365b61a2ee6435d89350d492debb32327cccbb99dc6bfcdf5dc2a
+8b7da92e7f2058d01c019b33d2f18a186f6712a9006b765426a7fa09a042e191
+fff06e73a9834d32cdbfefff106e1baaa9ed047508e50a9977704d2edda4201d
+975cfd7e155ff25ad411ebb94cf0faedcb1e2538fff0c44e4e473c28517107f7
+498b6796b01e4e7d5e537bb76eb0412724944a36b9931561d192bf1cc9b871d3
+9963c813e74f61ce61f84074d7f3b00d5aea7112511649623a4c93f25e76c0ed
+a0524410cf5a855268d50fe9779f2e9e6a32714b12fe1442855a540e5d0974a3
+c5626ddfb86a66e04fb51c653a64d5bb3941d0ab0c5e37c63450e3a50c463d1f
+615bfcfa83f96ec8692001964c89c719ed5fb3c787225e2385c7e6ed54af4f6e
+7efa9b0237b64c57e92797cf614f32a30dfda6720c1194f7592336f7ea60555e
+848fd171fb91dc7afa5af6206f6d05ab406517cb7cd16d05b7b304db81bffbea
+b2669a2c0b4be4b56d6046d27283c0aca185c9521be501e8b1a086cd286a4027
+1127e63a557305234ab71730359dcae31dba9582fa4fbe67af9e3a6420e90ff8
+1d84664d8c342be98983e3a1b7869dcba1a8b9476315beb49626adbee02ed722
+ab3e4c2f6ccd00583d02615b56bca96b1e75f0118de6e6ac1bb0e275730edb9e
+29af345d00b435540879098e24b287ea9453a02e551ebc11d86e54d2d8a5c27e
+8d5e50faf48769c082d8979173214a75783a66dec8a279db20d94506a1b07db7
+cd1aa93920dfa72298a8e98bd30a7c6f4dd2eb7da4b5d8f030cccef2116f0f2f
+2465a3b0f4e00e55d46cc30b6090dd9546f75225b48cd0cd6e12d20c2c5d6785
+880b5929836b990b182a6c7c6e7df709f09a15798ed673fa3b029dbda2d3e6dd
+eeac65ce5bfdfba0d5234f0880b8fb7cca1a803ebabffec9a82e16242a9e114c
+fc52a8afbb4743be70aa5b9f327be7d4a1b101b536fc4a165e6e177563be7353
+35a934d2bd55f113fc44c1ea20c4b47e83ec4ac0ae648b0c09afc647a02f2897
+370e38143b81ead9ff5f52ed4de23cf6a23cc524ac74399e363a9580a8b8f350
+7924c172f1147b1ee7f5f3c255713c777ae4a7b6e400bef2c0485f2bdb8baf85
+6f7491f9f0c75b58322f06fdbcfb4a0c882fee35fce3ddccef29fbf827401dcf
+815aca4513c6daf46c43ef4a472df623e1288137e60655d14143ae9a2bdd373e
+ef9b4ebcfeddabf558cc65146078b2d4a9287b450de1b22bc83a6845649551e5
+998fa5f07af8d84a9b6697cbf4abae9186f7a352de9e6e2cef48ce7f8e3e6268
+1d55a34e08e73cc0cbc9bdb6c4b259ee0aafee02bbc2cb05d7920eb68057063b
+b0ecb9edea05c43c8d418e759dfa2e21373706ba52b73da92c3c1e179ac8b6bd
+74fd3b2c725cec0601bcc0bd7c4e1b68dfaf85255b8577569aa1586d8ed3630a
+8d32a3a2f869c2b048259c429a542722c2bfba4be07d196f1cc30ed85ec8f50c
+e84fe832ca0deabe55665c524e23d5f8de3645b6e2a8d2eb7e0d10bba63371d8
+3054fc614d7e095c7902adacec50396125a3d9418337a39a35ca81d8a0f7df71
+a1727e04dc871f37c3a24f937ae22b905783a4d9c4feef46f7b0407f9c3dea03
+7b4febede55843c565d2154f0dc10d5e9d22260afba44f3bd9c83b14cba57b94
+1169159e07ea43267b550edc9361c0d83b31e400ac7566403b01a1adb207ae29
+ad699e58893514e44fdd8b65af3b339b3fa4b388c69e09676caf74393ab36a14
+372d2d8b4b8a3b9c9cc7101f8b234861389d8f45427f43c063dad3952bf7a780
+fdb2ccb183741290fd7f8eb271f7695a2ea23a9cb161ad253b853084e62069dd
+1bc1951c8f2221c168cbdc8cabcdddb84e1b3dbd74201e11d7a235c58cfed1ac
+1738c297fe162312024e898f9609aafa64d145c8653d569459b4ffc8e8fba863
+ec91285be7c0fb63739efdbd379ee406b69d797d35c8c71b393c9ba9222de920
+5fbd273a6c79a3581c8828a0e6aa5090f1680a948cc17632419ec19e91c97e7f
+4dcfaaa953b99c7ffb679f49aa59299cb17c3216327295097bfe97e7a1e9df9f
+16312f29ce51f443f4e138a6e2eb6dcc1828c50ad752aa1567b020b80ca1fc3a
+0bec4b30b06b55307b2a19236f182ffd4175d8ba9bdf2102a435d4e3590e2405
+5b7715f572a838eea62f02ce837d3813f392c9faeae8165a0c7d3c121a8e9ed0
+eaade32a83a07eca609de8f2252d80473ebfce54fa05e41463d0308b73a62f2d
+251eb871c183f595e36c8d0f64426c92a2fd2eee53acef8d1ac8f872c17759e0
+8cb87edfe01f0282f87ffe150f65bacd661c0b73c7ca1226dabbaf2d9d2a4906
+b35b54199c8cd1dec6cdedeed61f9c9fca879d05b50ffba78cc513c7bc982fc4
+e2e913e1420323d6675246cc0c1f2f8114d9bd06159ed188ab54ac6dce1315b7
+8d050195c8655882fe7b4b0957913f1731bcb14c07b3c6138e25808c0c6462c7
+1f23d3112407156d7fff7fdf7912838eb9430bc72880c004181da4967a506885
+24548a057cbc64fe877aa3b354edbca0d15d1c66dbdc84563ee0b2cba30180c8
+bbfb28354044b2d973d4dd83e8cb5f51548064a0a5dbbe58138ee97b0498dc11
+13f292b855570fa4a3b639e784a2804646e8c786b6dbb5ecfabec220462d1200
+b9d7a24a2bfa253210b45ba4cd543b9039a5105b8024faef5243944b82640dd2
+5791494bc92658026318923866a1f4982f83e4cf62e0b70c2f336c2211d9ced1
+e2a2d03ca366fb489aaefeddb3ab04060a5a4e3ec0eef758066e31fc99bd142a
+78c748f68c76f88a5d4775907c01b5486b57c4b01bd17bb6f645ecfc7f0031f3
+dfb705114471034062ab11456748ec873c694d7e36c233a712150c9505031f80
+2f1718bfb6a439962e88d1b6311f28c451b231015f2c862a942c6a35895e370f
+1322921f208822d5dace4d740a09b34d291c93af493f51472faac74f059c961f
+3a8f4009028d51cd69ebcc8013d4078c3c4cbb7a3fdaa8a260feb72b75d2c020
+7a9bd181f10953675ae47ee33b29106ba56645c506255cc836d7c1fce4b93967
+1ffaa77c9b611b8b584db36b0518b1a627b7c2466974be5dce907ba6862ace84
+3df4d4280ce91773c55891a6afb096c5c01f2774ddf0618cf30d53e9981f94e4
+929d8b6f4c2b66dff328c7e146b8f5b0072bb844f64d2d33a5d1b9fee76eba47
+bf376dbf2c02ace2e4f68f0a8a34ac31b09a34ff20695c40e1c2a5356a91ac3d
+ec849091f6c7a9d8b1f79dbed3bea6f7c40ce7892cb575652bb3007401389576
+51a2830e947b5d2debcdbf436304aa31aa54a334ac7ef407e2ce03c99995c02e
+44a9b9a21b761fe66d3c0905d8d66fe681f12e7c7dbce1bc9d1e80f9116ff65c
+f41c18575815a4faf52298f3f6761faea8759ffcec9d2428cb8bf95e6d21adaa
+9115164d348d0ed643b4221a57252084b96623bb309ef73ef59c7b3630aac05a
+f533f01cfd316f57e89411c56a633097c884795a9b92dd211e54c5d20a4c43a8
+a8df1ec6a2a58eef6bbfe6fde11e5d578e85b74cc6de498c98ba54c35e6614cb
+7e098d7231652834bfe61a60b9850f4df176d39e3fe50eff10bce6c2b1582d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMCSC10
+%!PS-AdobeFont-1.1: CMCSC10 1.0
+%%CreationDate: 1991 Aug 18 17:46:49
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMCSC10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMCSC10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 169 /Phi put
+dup 170 /Psi put
+dup 174 /arrowup put
+dup 175 /arrowdown put
+dup 177 /exclamdown put
+dup 178 /questiondown put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 188 /germandbls put
+dup 190 /oe put
+dup 193 /OE put
+dup 195 /suppress put
+dup 45 /hyphen put
+dup 67 /C put
+dup 70 /F put
+dup 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 80 /P put
+dup 85 /U put
+dup 88 /X put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+readonly def
+/FontBBox{14 -250 1077 750}readonly def
+/UniqueXX 5000772 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd800bcb325468c79ffacb9cd3037a112066957
+7889d67fff57549064b985d67ede2fb03272083723541051ebe936eff01a4ab3
+cd845d565dfdf25d9ddd2792db17f52f894bea484480f06c832140fdd6c3af0e
+fef0584c6b78b5e2bbb9a752f10581fd1c48cb498a822afb18cddebba34695b9
+b418010368fdfb7bf758d50f3af03360b81c776325c33c9c81130b1e1be840cf
+68c71ffd091dccc0df7b507fe8953dc3836af0da08ff9ff3e9cf7288d9eb8baf
+ffac546a0fd987ae8e0bcf7b759f4408e13524f478de5896d816cb0ad2904271
+cbec82a5ca50f0598502b434ecd94531b4a65181b5b3afcb650904b15157737a
+a4386f1a7f1252caf2adbd5c8162bf3b065c01ca471d520c884ebbe1b29f9549
+134e285dea2fe158c15a08a744cdda00bb6c62158262e24702803d9e1dc1d3a3
+1383085631154b077fc20488ee3aa03f47ed2766644330b94133f2f9389b99b8
+96d3707d1c5bb227fd3bbdf3a6ff572bf07164107c7a1c0710a5c7cfb67282f9
+c238100fa138b75c553d7cbef17e2292a320d3d86a6210e6e3a1e590b10dac6e
+177094d5dd163db623d7b344478752f6f3d7d5b3fa92e6bc72dc6fc343d2f946
+9153e3d14c5a6d6b1d9ca52947b789cb4cf6196a02973aff0b097333f8d615c0
+a1726ab7e31c378eab77150faa28cce535afe3ae5798402ca51cbd18dedc2c43
+5281d0781351df30f4d11761579676449ae4a47a10f677cdd31ca9120fc2606a
+9025d3cc09d58856a9bbfb17669f706ff8c7efe37a3656c9b20609cccb58b309
+0595ca5666833f2bbf884aac1cd632fce69b4e0ea2e0a25b9c4d471f0e322e09
+4cefda321359fdbe0a82656d3ecaeb68b7e0c7e733d85066ed7474c22b67169a
+1bf1bdf7dfd0ce0aaeef78ee393ce6ea65edc1fdcdf3f744f714005d8221a156
+4e7693cb88644982738e9d29195722ce795f1455debe0343201aaccd7389ba86
+dc8bac195620e04e611d8bcb9b4c12dd116ad42c442075f4ccf8e873a4a06b65
+b45058f1a02070829ee91d9bbf104e56a3a4df64d5fb69aa709aa2050ec067c3
+b6657bb5c7847a66748361a466587a9e03d6ccfb3621d0abdc0f653a073ebfc3
+3fc403b84fa1c4afa5d8aa590ce2b3d10e615305f8ed250493e4db120a5cdb3e
+b7aa00615408f13483a345f07f64ff79f98462dd120d6f27be1c45e9264c2b12
+c399cde96d361e5eaa5af6e218fef1c0e54c24e291e90fe3e073aa764320b4ff
+dfc9073775339d40999a087a8e59afe5efe051b709ae2e783417f7400c753618
+a37e25cc37aa9d297b9d88c80423ce2cacd4ed6f6c87ceb81be240c488e2d37f
+d98393ee6201b24759f70d79bc210801964ec4d19c661e5f937c5ae18af2ac72
+45ccd91e9336a586eff7e541aec238310f374a84f8cc3a02ee8b3657ed26283d
+08d29f1d8dd8c3af29b631e2ee056e2fd7695c6b936174fc1b6b7c0abe17ef47
+ab855a12842761c0d8cbdf35d2e4cd3c2c039a2d49498b5d3b0dd808a9dfdb29
+d06ea621d5045a4ddff3d8c39ba704f7a69eef626f2c310f8f2ad623dfdaad1e
+22c413fe647df8b6050e22ff0fda634e601282d828bd1fe6aef549aa0c58bcd5
+4b6643e08291f4ada8e406b953694a12c210d0caba08cc9934f58334287c262f
+a1028cad0192c89a6875a98a409c459b568899ee2f54c7ac9fc1cce12b21c617
+a05a84ff6994b6dc634423ec090d92976ffc586b072066298121b343c8e3df66
+1250139ebf439ca2ec661be6fa63c8c0c334327e453b2aedaf2af24b5c75e4cc
+d12d36e95d35461660dfd130be00d054b93cd0c7feede3f7681ab238de44473b
+28de6e20cbee361e14639a7fa2e50970a6893495984aa7a4466f2980be608572
+938b4b2e7a99e95af77ab346e9694c962f611ef77d035002cef66d298577a613
+98539ecd3bc204c7133539da8cafedb14d0fd3b7f517612d98d9ab92512c23d1
+3e8ab7d42206a2bc7b09069bb68f6a58793133a117b669dac68a8bbcf6ff19f4
+28d91adeb1176218445b0d2e084fe7016c0a37d5f25118d2de5e6167ea1331b3
+3399e30e6de0e4c8ccc57c40e38793ababa52dfc57ca13ac0c579e9bd8f724da
+b9001290e11ab1c0eb578185da55c49f8f1c7903cc0f76e86ae75d492c0165d4
+ee11507ffc979f668bc373104398923feea034408dba02b19a6eb2827e4b4b63
+4d6186d1244fc4d5b93170e977008acc87ad6cf2c3db79c5ad6ba6ca4e3e7911
+aa5ddd70b272e2e34d982fb5b6cf94840af7c47d306fbe4b9060407f56dabdc4
+229723fba234ba5cd95ace8848249dd715725ef4d7bef894b15058209f2d6aa0
+5a3c2ee2311aecfab0d5bbd22aad0938fd8b8330648cb1c324322f65aa5c0705
+4fade0717d808fe10bcfbc577791691b9e168088043f827f0d09ba5b67d4c7cf
+d1b1e1f67bc5365adc2acbe24cb693015f75b57e0623e8107dd3b4b664ad0f65
+187346449ede6429ac6055396bc1157e5d76a1ae3b4b4598f1decebc47e36863
+f86f4878d1a78e5176e75da9d63819abcc050dd41f9cffe0bc9794f9bcdae3e6
+d244d073617f4c469e232f29f29d3422f0a2848452df9575fd80bea54b83a5d3
+a0afc3473f5500e993f185949d9a699b619a95194a7bcd6932f80252a695d808
+6647e54593121bdb072f4669c4721f3229e50aef74ae04b0c22c6665a7835b09
+62be663f21408c1b2a09cb20c6160ed92661443949deca6cbff27c6e8cb511e9
+4e82ea15ecf39088594b01b8ef92999656accf17ca5be237d15fe27564b33be8
+2a98b7ebb9cf13090e973cccf86fd7f5cc5f6e5ba6a848c46205f66f3cb8eea3
+81af779d974aab36f4025b42a340851c7588a6e967750db0e3344a1c72308d0d
+cc846fadbc413c239d363f52c0393b7fcb512262b2e612bfdc2d1928ff59a48f
+f80d7bf47a7a279a84c43b5960d77abfcfa3168b52a62ad179df49d1eb0281dc
+ce67426e91be59a7b437d113f60c9ed0bc4102ccc5b3c04097a06a95bdc5b392
+e3c08dcce3125a82a3da25d9b66c04aaa93bd464a0fb2130e44518a1f11a223e
+de266b2627c754c2c3ea7d62a37177c1435a13434675a6065e047d00e27b8e0f
+2db64ebd183f33376bfe26a2d169fc0b9aefb5c96c3ccb717021677025a3a004
+591a710de6f87cc933a2ae10313430b36dc79d11c0cb0a2522ed6c3d74194a92
+0dfd00c465a0bc2879adf2b201e70f3cb9116402cd21c18775588b9367546c14
+08ece55fe21d794af206a1fae1f982aee5bab50eff96f94e1b32b6007cc80c07
+e21dc39736cfc6bf3adf0cf1074ae542aa1b6a594e66d12a26d0fc03ee85185b
+b17a051aab1cc0477e3cc15364cfbf9c017986c6befe1a82461df8b2480ff39a
+82851ef8d35ec1d7cf9138c2c0a8ad2ffab1b4129b80b88d4d2a1c8d165193b2
+7912d7c7e89637bdfd829b73557ff23046cdfc415de71f9ab1e6ca9576540117
+99a249397b0a21002c8d9a9014cd27483f47123b1646fa49eed0c4a93f3b54aa
+91ce84445df2c4f8d68730469e365e71d01b457ac15080b6a4b991496c4f6dab
+53deae341bd0231f18f7b4e138e37f6b05296e7272a0885a799f7b4460b5c68d
+d7f7f84cb7a2b1cd7a80003246808c049d357d9da6826cf6e1390fc733c04510
+b46d7b81cac3130d0aa06db7cc541dd241bec7f2b23edad2fbd871cc3523d1cc
+eb6e85132115f810cb9ee5c9ebb0822550c137a8174802f7908eb53bbce85ba2
+bb25d14ddaec0ff2a0d596a6dc174e7350c93975cb51f1b8d82142b8974377ad
+4a5cf501c2a9b52497e18cf6c17ef76c4d0f9dd3e9c4c6c70a85be3fa567122a
+31ad6d0f4686143ab72ff67316e69f27a73dfc22fc665e73125560f689988c30
+cc6aeed6c71961f84b806ac39deb25a3342055f506a60b287593e94caf9368e4
+eb452c90719e080d8515b82ed4257e1c4786f708c39be8386f56360a43053cfe
+c7b5db9090c45966ffd007577f57d7abb5068f58fa02f995f4889772375a4b05
+ece9cf4b11c572babcba656f94b14ab1ec8980e0e59690f5f63272773ff6b2b4
+f51ea9ff1dbd9b98bbe3bb547c2a52c28d4a78da513f7c3629b06c6b5bb163b6
+84cd57df0002a013c8195508b028a3fead30bc954d139e387765f009b5a895f5
+e911b9a800f13277430a5b06d4357d1a04b494dd5777a9ef70c334c05031f08a
+5b367fbe65bd656eefe9691642c5a8d0fe4bfab30f8d5d54246c8fd12692d40c
+3f52b5f8cd2d288d16c1eac4576170842bca720cafcc2ed56d79a2613461ac32
+5af4449a8167a861fc01d69533216b400dc794588bdee6d2e51498a50281fdd1
+afd1d941ee847e8d5948b5a12f9057a5f94cd7ef58db4000e4493caa5a33448d
+d37dd124f6c99c98f51f32f4301411f0d651096a8392e18bcb3e23febc5d412e
+59a54d7734840d718a49e9da55c51472f5e4fbcb9ec33231bdf98bd3752c4da2
+6a3659bad6e19ee565ea56537accdea8b5177b1295f973b8c63a0956c016a1f2
+3b7a0d0565abab1dc8705e62f434f4c56cac90765ba4a799767a6afa16edcf49
+e5f44394554d4aca3e57f8d434adb76e903df260f81bdbec7c8a707d3bee0d48
+1fb754fdfb0ca0132677e101ce804c611c4f94961867d136e1a035ddb9ad923b
+1a3d0087cfbe891a6bcbf1c03b3f6e0dc0f90062ad4a3e9d97beb4f07cc58164
+9707959922253aad63cd5bd9c2a41960c11b5ff1e2f0667365625d171714d2b3
+6d21b909685f24d294e3d662afe6aff95d3b8880d8639dff53a34363bc475c28
+dc37eea244216b47b7c9e7204e2244b891e942d63c34d7f6f54335ed2608c057
+75075dc128cc52e2e2105eac6e7c9f37ed8e88111af906e7404c36ab347b4132
+84e1008650995d9c9eba95db651f3a803ade9fb968a238f7be7ef134c41800eb
+b158d05e8d04422451ac355220c4c2d99505bf5e3cb208a2dfcd6ef97070c963
+e57f7b95420ffa37a72f319cf9783a8e52f4d78345e3ee20557c5ec726b584fc
+bdd59dd46f9359b986ff482b8040d5654cf28b36acb3718461d7c056d611a97a
+22b82ef0f425b4f2530387ff22431dedae019dafee3427e2d9ccf03a6db9d13c
+7c536d014051fe75cb54010cf6aa4848ec514fe93b87754d1aa982c6e2c24edc
+8d2f4d6e09bb566af0d845258ec658cbe1138cf352ba7737d4bb535f0799f349
+d7d6990dd9b4a57c18f32a4c67a7430ea4c5944d0047ee2d1ac395f09b8fa7f5
+78316e16c42c1ab420a814707af037e9c552e5627db302e9c010c1da7478568e
+76bb5d0319c3830c88f6b650d62acf8fa12bacd98a235232440e9b749e1bbee0
+ac4b995be99325d376f451a8279d8a651e4d3b9bb02e29d69097769dad81a3d2
+c92544b10b1cecebc782a5778f2588c3244d9e5d50bf8db1db14a367ee5d9578
+56a3939fd9c2191b00a2592fdb7ffbc9d793b6debc33e6a3ae13cc9005da9d93
+7faf7fef06d4a57674854a303538844f5d6dd11ffebd725d1ff50121e3ea6640
+1826f07cbe5e5c84e83438c07e9c0ac9d5b6295f7e68cc0b8fa952c7f5e299a4
+bbf06d2b0a4bfd09527746f9e98943d663febf262981add4de6e1cd848fe4816
+dded6967838a7492e917a18df709d54ed301142e3d1db8647a83f0be70974de9
+ed41f6194378eef8a94c6f8f29aa4c6a889e64e0fadfc8b8afb6bd238ff63f77
+3b667aca225fe0d18052affea6c55b054c38ebf1a0efb7ede19505974973b22f
+8683eca35c5742a89b80425ac28939ca2b8ab1910567fe0cfc9a335ce4da37d6
+d06015d231c128cfc8bd38db695c20ad811eecc1737397e312dfe8fd94b3a6ab
+93a3a7ad206f038a950a8df3ad7aad0a5d2e614e706d03a6819c603d579ebc57
+9a837e409f2e1bb2ad8065165a87488d0f1f492f742988db708a691da907c689
+588395bca09a2c26778c7752b772aff6a5013012756f3e739378fa05c532cfab
+de8a5f34acbbc05ff96e96c8a49204f8359af8393bb62424a403acb195be485a
+6e66ba85a582194b766d61a9ad5d2414baae2fdd6f3ebc676fea44f8ea4c1582
+b03a1904eee6064ea486aea8a0da4a77dd2953d176cbf5ddaddaa2c9e5a13eea
+abb07d93df36e926b24ee6e52824c4de14f4350fe2bbd94bd57bf5e56287ea5c
+dbcf6f56674edbf397192f0d24fdbe240eea5aa9a6d7c0190a0c2d5da2b44bd3
+68211535fcd12eda53aea72643768b5569bf10e23c96dad31aac768070337855
+65df67a41161b2ecfd7fb45384167bbf0f14309f904637e127a4344b0f6ddac8
+9a33d99dc4268cc3dee4487cebe70b79abcc5fb96c201202dcf3142bfaef27e7
+579df7e45741e15d1c8207861934b4f7673c3873d7625f066ccf518fb5384282
+6eca5d6aa58248053423ab04e200c37a293b4b3ce301a1fbe903f9567426a9f0
+893b320eee815a5a0979dc3a42d37fe6446cccfc5cd5eee20b8625da67b93275
+0677f8195739d5667343a60b1798164aa014215dc98a62a5284fb825ceab7799
+f2213c4f8db86914adb16e499c77654eb3102790d2ef70c0ecbd3dc5fffdb988
+dda8a877da66293f911b0215e9b336a82616c72b05bada0f8ad0001d28c14494
+ecab2f9232ee00209ccd691c4aa86dd932bc4c4c9f4e217264472baedf3b4d17
+073321dae0a3dd3f24ec8d53c7578dadff1989393b4fbed1d7f9bf82d255f725
+8cc16c5235c652998659f199ff1282025f896a911ec284f8b8d439f14a18a2bc
+2e361421ff5c9c9088b2133dc9841a3eeb855dde2d9387f61cfc056faa08fa62
+e57f77712de88c561000e8fbea4a449545565a17a0fc3986d75bfa75dfe407c2
+a21cfa905b4a11bf7f27fe859f53f2ac4ae19c1eae74fb22d8ebe7cf0bf50ab4
+0592e94d375e4810bc8241976a46745811cb9c2813893a48e5885b3af057e617
+1ba03bccb4afa895cca3fdb805981fa7399312b247f9f576457542c5d49f3b18
+12c4eebd1936d86361d1322533430af7dda8849636a77588a42d6e24a2fa0257
+73bef4195a2faf748f64ab30c34ed34606c0af4a60f2be8e6ea6551dd43e1be2
+85b8ef9c746a9e3e7e76039099bca6d286f2c3d16654f316406744e1edc7fa84
+a87238985804c5b42ba17e6376143ce608dbc4ee0e5c2fafe1425ee685295f1e
+c896a01bfc966f755de0a48788e7ea868d451661e74288cdc2a9be02fe01e74e
+bda62a34fde8b2d08450675b8f29caa3db625a112c6087dc3282482554a4e239
+5df093ef6766e0ffa0aa965b83c3aa1b5b6dccaa437a7c46faf22bc46a41fe1a
+2070562a5b95a6440050b0aaf7d4f650132a0505eaa0175874caaeb3aa3726f0
+de03ae5ee829694653938ed0d979e26835b36bbc1b40c8eb095570263e021535
+e12ccbbb1123e22f4fbc5a85c1de85621bb247bfeb44f9b181f4e69c2a0c1e84
+485ef184f1818f9187eddad0e695d28320ef559b94479a90239f495fcd66f963
+6f2c4a083caa70b9d38905e017e8a83e1c87cb83cb0aaca208f7d02c923887ce
+9e0f945aad4b0ea9f60cf1ccc04c21602d57b60e339b1e9c83a0801d0f30e104
+da22350eba2ac7e26f85f597f43cc3e0edcface9613fe06ca5f65e795d9f5251
+1113a12507808289f5e4bc60b8b60ef2643cc381731cbe0adde6498cbb0e32f5
+20f8f7a0c13131188c1f54cc7385fb0b326314b486cace213ec94a6cbbb901f1
+d8c2286a8d1982f4f649efb788a2a68aa5cdc3d978bf60545fae0184f7fb5c5c
+ec8d1f81c7c6a5d4047723d8b0296c273e4c74d1724c9a0c0ae8dc27cee2fe95
+9a3bef86cad51ca2e88cab7c8c0acce4bf5215112c8d402ab7c89dcb42893889
+2577f68f1b4405a9b123a3f3fae4dba50af73b4ea4c68e15102e208ee7712315
+d7c6a02b67ee5eccd2a58f97066ed544bb4867355c6ef12b133e58af5578c5fe
+798701ee73a3ac5a35c991d8c4afb33297c8dd5543b2c4950444046ff7a4a031
+38ff096803f56dd3f830f52cdb55ea36260baabaecb991defbf3130f3f232f1c
+6f778c58cf4a3f6eae759b1c1a14ba4d748b798a5dcdacca891d6f9bd04d5a85
+7078593736b1089fdea53ccef8b46fb8e756e875a860d2058e652e7b81e92f2a
+d9ca5aa593b9e17530a6cf5ddaf25a8dc5b77f4c4139714311ef16853744a979
+5396900675529e25f9cdace066a1c7e5cd7be122d806bd33e0307025b0df7a3d
+4897b5beb03d1832aff7d022ab4e3120288056a8904a5c3128646958e056a597
+ede7463af51ac5fc5a6391d7d01f9bf8bb738e29522153e9c34a5acb0015ec3f
+11b25ac20f8f193701ef392ae0ac9158a6a76dfe30c581712b5fa55214d36351
+60b327d568f27b432a2db9c01b8e07450ee813038aa2d0ca38bbdc8c1013c279
+fe166a0afed21f5978e76a39f5de0878567eefbfaf9c2304b29e7e36da3e117c
+4c81b35530c0322a5922d934c32831451df62e31c432d3ccb4562d2ac812376d
+efeb5386c4116a54617aaaec01f36d0b138ce11c50f8a837deac694ea38c5aff
+1088958f42b64f6b58f269626b806e349fa1f5987f5d8f2c317f2c378e2dea09
+451157beadbb7e069e2e6d28a0ac2670f05f4a13b6f50cc5f40f5981e0997919
+4a41556621d35dd7ca934dabac5bb673bfba70291f84c6b6b31380437ca6eab4
+71a114caab002620c7fe667d2791c067f79394e69e04b71b468d028249807fdc
+7f33995c004e3cd0f6e304b39cb3dcc681eb115c3deff9a343a81cc3ae0d3cdb
+26f4d522acc777883359c63e38f4d236ee233d08ddbcd96a1b646b96167e7746
+42dfa010a3b8ef609c41d039478d536e4524bf0fbbe9b08ef8edf759ff712863
+401b17e476d299df968c74feee64ba706d6bb7e47100199b7d6e946e9352e391
+1db563533d6a6bde5a3b76d3c65dcf7dde1f7154c34dae3e956c01e2143ab897
+67c47254d9506c3d9b0ce21a52650f2cbd5b5440404f526415a8d27ae3d00844
+c02414f3971efed165211c0d63e0f72c3e74cad2a06928998b59de584a41cc42
+8836879f720905c0c3e6630253a72e0ce3ea8a0020fda2219c0c0d8bb12192ef
+3c3909456e58bd4a5d5909be99234abbd5146808614aa1cc23cc7b766a81b380
+e827b485cff71276fb865c9fff68bd8e25bd50366d7bb44d46ce620764c16be3
+9d048ee9cf7c26d830ef481f630cdd4a398512ccc9d2d4e49108863e2da72f8a
+2bfb9dc3e6ebe7e5f2cd258b70260bd24c354bde67517d8084e87591867f2f6f
+52a59b3bbfca4dbb38a5acb8494804d59c3fcfd7539e85e7a7877c73d3ecb93c
+81cfbde031e3e4b3fbbbbcd32e856c000b1eb24de922399283d498a02aac65c0
+b1c698d9b9b9056c05cc37b3a4926a31e5427d42b82760056be3682200b21de4
+c50d5c14bf94c1ffc30dc15b2cc1102eb61183117af2cc45293d2e87af5c24e6
+d6ae798bf8993e79e208479f97a2c933c2973b8cb62c112bb8193c5903f65113
+d3fd4e883574d88a1f68df660c13e55cfa3a32756057fc5b2738cfea8ad0c02b
+cff4b90faaeeac1b7d640edd08881bc0df628e5eaae2bf17a11ed67b90537078
+db280d78527ac0e878e03093fe6ea555ea46c34bb81b15403fcd67cfeb0be73e
+836e71cbbc833b0d91cefe2972cee927e00ab3ce018293c13379587fb82c12eb
+e29545c6cbc41c91bfd477ff2b8bc643f5a20699ef7e7af9022df8f5b0492694
+dcbc327f359e09acf93880950bfee88b90d74af436f0948e5fdf3955a50357dc
+403c9ef4fd90b5fa914587ec36223c6dac1185da8f5a1feee2ffb7849904697a
+55d7ab6185ec765bf8862b6aadf92ee00d0545f85c40ba87e098fb318fabc67a
+f51d196ce1d5cdfcde796ca2860677440a371cee7bc9c94a9ec7b3693f7c167d
+733a0d10c3188740ff634e0a7eb6bf4cdc2db4178aa09b3b4aa75290ece678ae
+ab202400deec9d5c8bdda579e21203647ddc6947a18aaf65848fccbce49c273f
+e2f17d1423536fa40a2dbf238f51798600b64aa0386492141f9697990d0ed065
+d99ceace464f20585c5fd57779cd4d696a928489d99a1f9789f64972193aba84
+c3bdb097ca397381738b6ca1d8daedad83720c9145ecd8ac5b6be4300283ae34
+c3beb87ef24f29f6000b380395ed3587752be4e20e19b0b1e61b8496f7cdf761
+17332b3769702695c543fd0726e8a28c0b993915173ed56daefea68984602310
+fe6697b9059a241496cf6efd2d7408c0784b57099553d292ddce3f2bea1250f9
+6636c55e50de08c383cac8e5e52902811243172c7e4c6f78bcc729e54f87d9b7
+fd5f67921e6dc6389a37a09c31c3ea21ca5b47e5c707ee2fb9f17aee364a70bb
+4009695cee4c4551e9810ee2b2a720914489d1172011651eb748c0ce22987aa0
+cb8e9133a334454289d5bc5f8d52590c8e4584e054041a781ce5c826ddb14187
+73fb7a64b3f688828b694c9be7f47fbc1592cab0fceb680a4dcc0d1b54ee163d
+20230790d29a935cf985a66813c13d7cc419001325345b8ba68c9b7c8407a2bb
+25adc7c5f42a62ab26ee78bb0af4402a1e06cbab864dde08e79ac1772ee08433
+04f7a2394d9e7d903b1db48067eff19dd96fcc4a5407dd4eca506b442016f680
+7c95ba96da2c87a3f8a4c70c1e446c18af0ec84350f0a7ebd49fb488fcde383e
+634bcccde293c9eb348ebbf6efff23ec4cec13f769db71542c576d8dd330cdb7
+36b9d7eb436d2447611eee6b62dfc7c6b3ca434c5a5fed453d51ba81aa7f4980
+67de7a237693b19d8b36e23bc242dc862ef22f34c696ca98b327e8c240b28235
+f6fabe9e5539f9bc463249144cf1c67b1040e55b79e8982e497b1ffcebbc2113
+345898f5d3ac56e7583982b84b28c6d78c742bd4adbd7f0c514fe053f275e25d
+7b768c9d5823f13bf8028cfd7eab9ead6d5d87fe2209c1d61bda32d35b6e9e61
+27bf035964e6dbcc63b603f3adadabc9a8c47b37515069b912d1cbcdbc20aef2
+8ee83fca7e46881c40325b0621a1dc31ae72a4cfb69b17e8cf408836bde5eecc
+50ca4197cc366ee9cb08449b073c0d9c6851ba821cc4620510d9515381b3b59b
+e463dad015bbad86f28ac00c81845894b11b3c07b9c51ea8a0a3ec2fd152dd42
+ea1e8e4a7957c01f4db0b916dd1f3973425d0268633d3d9620254f42fe6c517d
+d4fb718faaef1707d5dd38d58d01345855eec53fe0d8297b08a14c73acb2571d
+1f302140592e393b109dda069d4ab2de0e861e4c2e3b7087c5d103ce1c7b975c
+9327c2ed95e67b51b8f214b1091ab6c4316357f8b355fa1e595958f6f552899a
+124631597386d45fd754b56045bbb04b4c3d79384f8a6b189df7502679c17b10
+d751f15b757d70efb927448b8203c52c6ec989b2ff75e509e2dab63cc665887d
+6747e2742c5106fa7daf85b83e3df0db27690bd68cbc5f5a0a33455837954b06
+a1fb66e6a954a0f0879b602fa29ce8c55f0642d9cf0de1aeb411cc78c83d6b27
+98d0c31f9e28b149f806b94b1d5d3975f11a546bf2e596ef4af6b85bdadd39a8
+e84d442ff78c548863a36d518d0b2802bfc582bf64f2f43e0a36a792face316a
+98cd089a14f6dd9c5d6ab18dd2f784d2f8cd510b15ded4da549cd9d83804d00d
+6101bd6cbbc6a035c49ee3333aa6985fdbb87d0ea11a033e308ab42f5de48a94
+bb42a177d0301853eb6bab6b7892dcb14479bfe5ae121f46b0e5364ac004ef6d
+ecc0859ac9a9a330b36b2227d92db415b9cccdc1d4303b5fd4567212db1054d6
+20fa29bca8f938df77a4e3f0730b5cf372133016c7442f4cb3bb73343ef30d9d
+4d5aafef3a2b0e52f2d8a14e01af22e615ca44b6665770e89e764c19b2879a10
+4e97ec615ba751ae94f85c19f7aa6a704d2e5f05ba39bba8ddb78780ed8e8080
+d7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 169 /Phi put
+dup 170 /Psi put
+dup 174 /arrowup put
+dup 175 /arrowdown put
+dup 177 /exclamdown put
+dup 178 /questiondown put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 188 /germandbls put
+dup 190 /oe put
+dup 193 /OE put
+dup 195 /visiblespace put
+dup 35 /numbersign put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 55 /seven put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 125 /braceright put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+/UniqueXX 5000832 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306462c563d51ecefaacd079732f12c29
+315e4b9623a5752c6f1d8145869e120d910b2644887cea7e30b15676a92537c2
+9d3aa80dc30082aba94b40990b82fb1a877e805e0c8c48f61e9f2edac05b944e
+e4d8084ec1d5cc517aaeec5b3ea379dd011eeb454cecab3ad2443c887c582789
+72355673e503affe0394fc7db31de364e4f56c24033c7df2265c56445ec63a1d
+5695a6041ea1b94407e1cdb7c5635603a4fd047e6edcaeb2d0da6c9e0e9396d5
+1a4a58e8fdc1578730f992435560a6e2d3e3687703ee2f78f5896389ac8470bc
+806169eb01762e89b6dc9adf857ead656620e2589aae722c37a2ed7a2941c360
+b067ee34d8d5ca3bf68db725614d936bcb207781f4d4ec2ac67b13a5ad161f3f
+059add7b5e3d904831e31c20c04546fae83ca93a35989e65c201756888f727b9
+7e5313c9870ec96e4cec3901ea03a5c744754485e7d169bbc98bf872d0796e18
+9d43b712950c3786257d8be06ab6080b9d9392313298327549a8a41c00a2cea3
+690b4a333e45aa815a64facae1c2b44640860b8b8687afbefdbd5b4a541a7251
+4ee7d3e0752af3e96a88c95d31fa16d34ba2f02fdb0088b165844f02611c734a
+dbcc2037bf741fdea7e8bcdc130c70c33772f777d8bcddf4611db99001ccff14
+d7af2bb05defc3480bdab312a0eff2f375afb4e0df2f803c594b7c93f71ca4af
+861ae1711932fef19bfe2f9b7adb69d68e5a70ea4d1a3d5bd85231b16993f65e
+fb37a0a823f0542f8c2340a073dc1be4a8347f9d3068a6435cd8278b0db1809e
+8af9664c2c989b9f16873c009449b6284b85da4dee11c96a05ba83292f0edbd9
+2cf674aad6ac1a5ff966ffc37e88a66048deed053565b55ef6bdb8c2f2f67832
+f8939a32442ea54f13d003494d6350a2864b427a9126a9c26a031909fe53fa84
+63b80c3ffd536c9a5dd29ceb03148dbc24c0033aee72ddd159f2e8a6fc113f42
+8070eb36ce5a38a72ed5bd94d81ab4daf08ebd42c8e5bc695622e02aecd4004e
+6d4cfe72534ca56291ff5f2f83361bcdb9489a993f663289b6dd492499dd5713
+227210f89370928ada0085e2a0cf8533d9d6b9e25c4b0c39b66511390fc0b20a
+bacd388c9f79757b8ca054cb85dd9e7f9808580663d413cb76361ffa047c98b5
+1e5c5e8fdee7c93199e27c8f4bba32ca4fd67c7a911395e3d8b586d52d2b3ca8
+8cb762b0975708fed306e89964fc0129035410b89655e4742dcc54e72988b174
+bc216cbd42ab7034ba929b8b374e2c2ad75936d6043f207199b37eb590217d52
+4161574be392d3915bfac077e87d699e5eb829c7266acc463a36f52470e6fcb2
+d1bc59b788e2c92f6e89463ce31e2bcbb62d7366fcdafb3c772180b4555fe343
+f37efd23e4d1dddf2f19790462a71064b33f51d0f6b124f1f73632edb3025850
+d061edbc63254b70fe0f289533c1dcac77985541d8c4a9a5643a08e4c10d0c24
+70f8e33cf03fcaad01eebbad4bb9a317d0a2abb8f672d8e9b1ba95ef24a07f24
+bc5ffd340b96106c7041de4144f8401b2f97c43dfa17b4d816bd4f6e91133c25
+4d6623ccbbaac2c19755f3a63b9667dfb8576bc46aa09bed13d651c13560f141
+e0b1a44cfe10d773cfc050e0cdfc618934d8878b97181beb0554cb9092929dec
+b1e5a7df0351ca35f9bf8a37a46fdf835e85fb9f827a56061553ea84f2a7963e
+ad34c04b47defa65c9805672127a9b3859ec3bbd8cb6b15fa2969f79bf38c74b
+9e04c72fa8f403f8de6ae96cf667f137b5ecae92ef9d225982a268d3d9bb9c50
+3ab3754fec9e6a94ac16a0ef107f747c9c05b41fd09e6e3e70cba2515bd93279
+a49fb4c0a6577a87ae81ecea3b9b1e50384c778dcf8ed4c0f31be9766afd1a33
+e7d61ee78977df9ab6eb1c817bbfd2ab9d053cf606324943c96bb12a46d89382
+4ba02f24c76309e2dfe3f3d506d637c092462b8c46ccc43f38e411e020c9deaa
+accdee109b1d0e5baa4fb280e1e0ec92b7536ab2a6bd6cf81e3109753d3032c0
+31dc57138ca688ed9bce94c3ebaecdfb2bfd5722974d7524c8d5cdd137a9e422
+a09c584a9351ae1598328df0fed71777da4ad3ab49176163780c1f2d7b0c76dc
+c63af0bfcce6c4599d75c07631d3ea138f92520ef60311bc276aabb8fb8d4227
+b9515175c90b7655475f6dc382d683b4259aa225c61c85e2a93bd6b69d1598fb
+2749e40486b93240da0bcc765a7559d1b8840a98b5ac06f597b087bf85437881
+9ac9e3aabe5bd2947f06ded0cf4f76f4452edf5a25fc62f4f1454bb6ab116770
+0fc4ba0cbd6f8445e3b6b8b85d68e5501a7db86a76be5bac5df2aebe724455c7
+a52dc895d292cbe9f638ed4590f29ba111f4d0cef1e0160b20ef80472991b180
+d403d108ee3f3b3cf569c6a2a7cc3bbbb1c7983f2db858da91836200a8a87204
+4e9ab811b53c419e549c39c1cf1eae4230df94d90c7205b92b1c520920466be5
+e8aedef3ced2b36a23b467ed2f2267146e4c70b9aa20d42d151a19cc5dac3b7d
+44aa60618c04e9ca2eb97e161995873202e6958c14b783d7c0d5204ad392ae37
+eab782bd42dd73a679a7835bfb47a2b7e85cecec8f9653efc96924bb757a1fe1
+912025c665298909d62d2f40dd02db0a1a7aff50ba58dceccc4c8c9f7307bafc
+d2cc1304190071edbc482e7d2de445855f32b0b21f91d8f0f0269504762d516e
+9b61fc30e5abae47325870aacc0c94143f688b06cc1b526eb2114a5671d81f3a
+6fd79e7254b87d04df73dbf1eaaa7b23924c7af8e394c5572a4db3e44ac8ed77
+2755931ca20fe6f1deeb8752b0c67b4519a566071be7bd099e54b0ec2391e6cb
+693883a25b14bd1d2ae3fe414faf5ca1129efcb95ef72200fdb2c54cb10597d5
+8c090f0bce4c29efe95490ab0baa607877b72326bc8563b4dfaf65c109e7c349
+faa748408f62813729ff5d0fc62e22a0b74343f71b7593b2e84a30756b1f560d
+71c67914f32047e4f7f5b30aa67c5611abb7fb562e9b3da90b503f037993fcc2
+61bbe91edce600206979db772145a1131a32319212ead618443688c2f8ba94d3
+1bda80cb7ca786530b6d8ea2d80e907334a0c7fcd2845ca092531461f4cfe7a8
+6562eafddcc68ea53f98a6e32769f2d16f7bce3bc7bea6f5c48c248525477b18
+cc18cb314476015c2c477b4b48e3a725fcbe2d8bddbb1cc1bdffff4a8efde693
+8124708769e7640ced76264d60cde8b89f5bed12bdd58371d9e7d7bc7f67765c
+9f081b1e7f56664aff65a166a543ce098e5ffc605ad7b56f2e4acca7baf26fd4
+982df71a397f6de1be86d2c2ca83ad3bee5818a63cf32a5697bb8af2d5864a87
+6b1855b8bd13f3270bb64f38ae861233d33dccf27720ff7006fff41a4bda293a
+7d9923719f31cf4a193ab851857ae1503cf28ccd151e67ceeded93b0751516f9
+8f765e94f5ac78357c8a8f51dff49ad7dc4211c22b6c70b90ba0b7fed29f41b2
+ec0da51751564f343873151c4f683404ca0c65f38f7875e8c3a0ca520d7a87cb
+4c77f722f240342d33520917443078aac263248383d8997174bd7cf7a37cbcc7
+aaf8d1af9fbd109bacb5e4f9ba4fa23be7c38eed47beeb2d7f6ce0ed6d015293
+055b790c6d14b0756e252d8a6f819e1e4790af18c69603350ade840f6c6ca6cc
+4248f29a7ead60b7403a824c06f9370fb2929b1d3b0b36a44e73b85848f2c34a
+af746d5ba8fa4fe01ed73160da806cd568bc1552a387eb986182f19147b0c1c7
+5483d7f561bfb65aeea09d947dca897fe0c8193bbfb5a8c2501ee14c7cebee96
+f13634fcd1fede2c7c7b526967540aac39cc1895cff74e93aa11ef9369883c80
+14fb81f02375665ac7bc82b4038a639913c28d0b32349f753009eaae00606f3e
+fcfe78240121258ad7041413e12190c6d190f8f7a1947b38f7c63b392de20f0f
+bcf466535e12fb600bf781e59d53c07fdae79ef89316d5589e550e06360426f6
+4caad857c15b628a63406d642df31af13fef5787c0703d89c83ec1969fa778ee
+81a53d37de319fc0d3f1439a1a4134140d5fa2a47c14db308300c8bf9ba7b50a
+2c2626ad0371d472e58e71628b89a4519952ad971ba12809fe5dabfa9ad7bf63
+fc0e2445feb6fa432ce21fcfedab99810fbb85a12a3190d0def4e0e1ebf1edec
+7b5544f8d4c702f9dc78b67dc8ce7456bf2a50e92025e53157ecd336acf7fda7
+13379b3f9dddfe9f6a2cc90119ef627da03389e0e9ee3171d8bc66be7a6472bb
+07dbaff73e94be37bbb4888825149a389cd897fc85d21d8b2fca7ff1e209384e
+d0c59c4e17f21e85c149761c14dafe7380e4abeecdeb1133116210417679c2c3
+d826218d06efc95d5168257d75c5043efcb64d3cc65b8ccb96f73dbfd9c0d8e9
+c9faa198a1993b7ed1b864128f100155856c54596edf06e91b0aba26f3c251d9
+98f79475b81e8e9e5a2042801f6cd7e5e19139a8ff0afa0d3aa77464c7882e4b
+6d9b626e9bc0ed1945c5ddd4782ada821160a7957a3de4b761474c1e7926e107
+7ec74e70767bf7e2addc6f565c09423023a8fc3289947024a3b3a0159d00c626
+cf0a918d4373e374b3daddcf889ccd6e5002e584d1f87d73c68c1da612e9ba62
+c28df3303040770487a554a97c9b895ce73cf16df78c8d482ee759f31a48e832
+43b6c4cdb875d8ecb85a84002506c93156d3429587cad5f364c4214fb098fa50
+de71914d53f6186cf2949630f379bca430bb650be43d82e006552ec42ce060f6
+00780cf4fa60d1c5fd662aa8528662b9925731b8fa82eb95405c9f662fa4139d
+d47a341796203684c8c5a57855a77d45c05cfea74043036cb0c97f08588fd730
+de31063679fe3b854dd7bdb624393eaa121fcfa795cfb6aa02cd5416625c2e48
+3c3b64e73a27582fad5d9a44b91eb9278df7e6599f2ef51b53afa51e786153b2
+e64f349f8708e7f5cd63d474f0b9438ee58685efca10e090239fb36ff1bb45cc
+5154544acfbf2af392d81a92e2c53771179c066755df1fe1bfb43f8a175b7f6a
+050436685fe20fb8f5f80dd38a8b05f3e72fa15e06017691f205cecdb4b195d2
+5635b9e13ccf1b36b2481e394972711b8e553068cb6155459a8c80018318e802
+485633783645b50fae1b7ce0b722630d7a52aff947555309efa82b6a7da1ea75
+0409d3ad682b57e135310f98cd33aa67f51ed9355444db372a159b226c47add3
+34ca66f9ff20d50df34a80f8454b4a35b35254f9cbf7bc90f356e7c5536c46b8
+5a5ca2677a25882bfb7691440024a8fc60295fd0910e4129fd94d7405dfc0965
+5d5850865df59b437f12b95884a8b4e811f4adef26f5c6c4634c0a03275c0152
+d4a02717a98e2ea0e7870b3baca5333f36f0ab915d9beb4640f38b98621bf144
+736dbcab8c1c85fdc46f22eb973371bdd2e4d63decf5876d175e29f03914ac88
+125bf814511feb8f63f43e728185842a606ae1cb85d5c954d2c2ef7b11a8065c
+f6fda683b3587929c6340d086783d17d4fd80ed322c73a8ef9dcda98acacb0a3
+13c138c8f00d14432c1dfcdb8104c325eba10901f40186c49ece8b78922d46b8
+9190267578959300f50f757b7e5b10d011134d0d2ffff24e8f98e48ea793c613
+7e795d06b630682b72529b37c1cf95ed16074a6d9e7f75a6677a0fcf8d5c646b
+88449908fad1a61eef106593e4a52e5f8e399c6383ca3b40c23c9bf635e31ad0
+ef5280fe2b3a5f1faf46f07718f875cd675a845ae78012e4b202cc553e27ab95
+48d8c57ced63a2ba412db66bccfc1b1fb2fc9dcf6fe80e812ae760e725f2686b
+52804e9884a90d95853ef640507c81b0b8ecedb99733b4f1855641af1509e201
+68361061998c884272dab59f3b8ab6042c38fe651ed3b1b4c4b94a3e3057c8a6
+7a405cd9ffcd19290968224a8edd29ebc238df715cf1e89ec7107b2a34da4683
+ecec399909736f8a8dd52de721370f6360df52325fbd19251c6a6f76e5fc7295
+a377196ffc6916706661a0e95ddc47f6333ba8c817b97a17ab0c8d56431c4b75
+3024173e91cded50c8801744ca239181f33d07004f28b01130e1aa49160eddb8
+6f5a7df8a5b4648f390e5777cefe93c5e92b57fd49a3ea0c04ddfec9b5a66423
+314137024b03f3331b9f29280831e2ef1af5ffcbcc0e591d7c02818ad8fae8c8
+0b01268a78e31f30e7a232baa00daf69e784f59f867051ac463feb921ee7df91
+610f9f518ddb4e68bec0cb34c36e55ff0ec9dd48de7012837d58e32921e70f0c
+ed5e4d7872fce44954df458008b901b225ff00fb56be5352b8a25a9d9f888cda
+85f6d9e573df1e71014fda031af02db27de33cfdcc9ce6efbc76ec5324b67873
+539f684c605427e47f67972ecd48e549cff9c8a14697351654964127ba8e1dc1
+a67cfcff51a5f32313fe3a681223d1c08e7c2b954ed140a807e077188720c2dd
+a6e1ac3ed1086d70583d96ed605d0da6b171f73b360cd7d2592cad934dfd28fc
+1cdde2ca3cee0378539c6af6703ce58c5171c4bbfe441d911da5cbde0579ecc2
+3b69d4737e44f1efca10a6e691b38e9c1c55ca749ea80a4083e2e0a6792a7977
+9b66bf6c535d0a49b5828ce4bddf68c4b30e94017fe685f531e66d5baaa2de23
+c02e1a376c9303eec41748f99b8c1f646241add39463833fa664cd55591007a5
+a50c2ce256b1c7a29393c9ab2ca0f4c0c32d6add986299d4ccfa527e4716a083
+29bcd5ec62e33da743e11f14ec1caecfc8bc327c598c3bbce9d5f433f618a0a6
+e909f88c44b93ddfa63f3fa8871bef73136b4177c36b4a51946baadd22b39604
+fc1fa6acdb6534dcc439e5919cbf69c97534055afcbb4a96a0195ff926150410
+d9ff99461f49f9c053ff07c9b6b2883e2a4426b8da205b90d52d89a36ef66fb0
+81ae8bc73b51c0e3ea21675cf72c90ca998b884d3f0a2cd457c0a6ca48396b90
+3de75fb3a5f812fc71f06b199581cea232d77e6db68ef9a63d175d6db2c8cff1
+7f340ef64357cb7c270507a62e1303ab8733d6eb0f3a00d69f4921e3b9100d2c
+82f58a7747ff62bc8852ca57ba96b1eceb7d2fbc83ed998f50861b8176d4be6a
+f5d3d46493fd15ead53aa34140565dd7498857f811b2e6abf092f988640c2a77
+0d5d5541dc11309547fcdf6b04a951331d4f514cf0289acc08f783fc1c03f3bd
+0f838352df21382d9362f2d1b92a15466e2a20d7398eed506bbe376ab30a86ac
+73008a52a31c6c25ad5c92ad9149d61d3e0cee81b137f7a54cfb19a3858b1498
+a94aed2c499180c8bee5270b75ff63e6d2180b5c351da9c78f0c0ca374080f17
+06f2380af1eafcbe2d7b719e3dcdd5823a47357e0f91a2772715dfd619ad1ba4
+723dda27c9ab82bb6c31b21d8d9b400b99f2c12fd6cf5d9da4c14468d4c7453c
+0393d6b8bc54223e17ed933d4661218a7b061bebe13bb5df158fcf1ad342090c
+dbdf8cd953d64f81a21fb716667800a55ce9e524ebb807f01ea96fe35ca9f8fc
+e5728bdeaf0a6820910c42af1021771899c259bd2a48e59a27d4a5b552a5695b
+bdec0a452a34cd44ea17653e3ce65953aeea8c2ce65de601313170404a30ccca
+39259c83d1d3aa684a1f17b679005983082aaad097a27eedb48666ddd2922ede
+853a2c900ae545de549a4af2cfeeb1e909621f1e95b380d486377ceb22cb29bd
+03570b18048e285035184f9298fb767c371384fe8786bc4b8d81137c539a9934
+ac3cfb14ff85ebfd56701aa74472c55f590ddc85ee2e84cf0d1abccc602ad5e8
+b1eed2be6acfa4775b4dfb6c9190ff94fbe8fa212ae0adacf072641b9eb96d88
+605d0d5f9380708f7d23484474da57c965c03a82f765cfb2a75be1fb188e4e84
+914314ee4b45c41392c0c3fd3330a5117ba3fdc67caa62231f2dccbcf735ebdc
+54c8de776378b9a33ae3743e19988d4af413891cdc4c4d7972e94f0a397a4896
+f47f0e66c96ab24e3fe94fef0bc63fd7451070d4fad1de7f59e445f5f5a320f4
+f7996915b03508bb1011755bcc6477df0cd913879de36a08b8dd01c88bc2ec4c
+8b0febd1983803d99d653c0a0c2847e4e0b3341800fc374dcb10a27b3ed92ab4
+ecf3dfe6bb60d2cad0158112b6e150e69aa5483724e45b51bcdb425ca968fe93
+ad4c3e052a80b7943794ebc46119cdac07918d7f48b51a7e2ba9e2ceda0bd660
+82a22114b144911a4e1e10e64ff3a925e1349ac9d0af1c1f17bdb2e969449000
+7350baba07fe6d3c2d7915fa8d4949da6eb6ee5bfc95fe7e8fa6f5bc71bd96bb
+014281990b7400b94c7038f2b739747656f5efe3cafe4d1975931e68958f623d
+877a4b7502689b1537903b3242c39555276c9e19572e359c377b81f75e389261
+0914c41b6ae6e58591ea489f9fb0f1184448d7f857e615453c8b784ea1fdfd47
+0da3ffe21df5d157afc65b32e4b4044df7c141f179d8e567377e4caf47bd406b
+411e5b536a70095bdd55003b4a88a220fdc874de1a42eefadc644bc10e87b175
+dea3586f41e6618c6d1ca8203170cc06e20bc0040366da9150bdd60dbf60c862
+f7e6580cc3f783f11e344239ccb7cc39248d6320be2cf490af236bafac446cca
+deb5eabfb6bf438c79ce074a2ac2e39210176760f18ea15e90556fc75114701e
+1c6672968f729fa3cde3b34d19847faf4733dd83bd10e8c375fc73f22b760cb7
+f4591405668ec6c1dc2d3d599d6b9c5ba1fc169f35dabcb424ec7632890fb3d8
+15bb5c340a55ea0e948cf34f6731380b2c3f3fd28d8dd9c3fb0d17eb89ec9cbe
+49f6c860274170ae569bdcec0dfb4e2fc017e620e0848556235f596f4cd7b415
+c06eb448c41190315301f42a42f2edd96bbf77573c6bbe06ec5a1ea351be7f0b
+6c8e1e0622a0174723366bc7ace1f919ecbd7ff2a9fb37ea1512a14be060675e
+c3c7d6e90c0e87d5680a49927f75cf8c030a92cec7d36f7f5182136148c30962
+c4bd701dc6e75dcdb1de6592d436d7cf1953cb6588ebed10a497876b269e481f
+3b568ad4c0752f900239e95291285326eaadf68c0548a2f78824c2daac07ed71
+08419a3cf20e1b40be70414988c0b845e6b1bf37e732e42016d550ee9a645c24
+faa6ed4f88db66d8a51d387ff57ecbda5da27d29dcefd5865925350be60adeda
+dc2de98c22510b619831131a872e62297259bd03b122dbb74cfbdab52c54a760
+be45978227f39ae176e22268958c17d2deba7c694e7ff73e0095a00a9414af18
+a04df83fbcfc8d88d683f70b8c48625320eee60f05657aee1225ac252741e5db
+fb7817027017d4d964c23afe8325351401f6f279a219064a6bd4ecf668220e7e
+19b74e7f82cbef0cf24bf362f9616fe1d4bb569bd7116b0d9925707207519540
+50424dae2cc08aff9e68da3e534ad360989be954daed7a0005eb3a511abb4f22
+97b31ab5c9d714b031e5513e9b17e5e9d0bb03556d5864457bf23828452bc11b
+e220dc52de721c4edbba1695544d3286c2faf6acbd5379dca1422efdf6a39b8c
+ce0454d69fe3530d300b26667f605a479286ee717dadc43fbf4f2bae4ddaa46e
+b0c9a20010c3ccea0d6823f5bc21cee5fd2edff131d4ed2afee0c0780e678556
+6f847a40172902a9d1fd61b138ddc05c48ceeb0d8964439fc88e2ef2d47d0a60
+5f4a564cf4f4b285997463968329ab38285310c32d84f119f9b325e96cf9577c
+5ef674578122844921923a82aa260a968b22dc197434e18f19ddcc2b709fb29a
+79cf0b80b1045b6d3e88eebf1c0f568ddf9eea50a221bb0fb9e79d08d2d0b1dc
+a2d82081b1ee9c0285b5ddb4ac2c741198dfada982d716ec1d098e88ea4fdfd2
+5f56df284a22b36f5ccb59b4a0ed0e3ec33fa686f43e2de78d85c98e19751083
+2853bf898af5a5c1ed05acc089ecece680499781e495c493135ff08025783097
+4c60d9ae4cd8464a9cc6f042f9f047c8837fccca706175ab299786060c552a0f
+971c26ff9469e0c06c7f0ee6ccf305bc9829d28fef30b71f294a1464c863c205
+626a55c9498f227415bbc6a8c6deb4637dd252470aba0a4697b7e58b65a4f42e
+855081b3fb3b906b26fe909d5468d9756e1532ffe4c9ace515ff1c773387567b
+a6a480df43119c7bf0504f527e734c339955323dcfff5585c20175eb8c2d8760
+758c423c4febf543fc04ec787cc12b502440e2caa61437a2ef89a2f6ab29f4cb
+64b7195489d188ce0fd11c7a917e8b7ccfe235d55ad4c6a07f1113a568e98be6
+f7236bb68dcebbef686ceb91d3b914407c850acb43b204d9b5ef3007f66bcea0
+5e420ab2915b9eb948a1ce11cb733973c5baf61e538a294b39dedf9d76696f7b
+f6ccbf6aad40c2ba19c0ef840d4c47b8ef881b47e5fed14d242ac0b18ebe7209
+1f527264d0b342b5372dc747064734764a4dc7f29562cd2a08a48220c1fdc6b7
+cc361e27b5630dfbc3ba1b76ed4d026310f2c08253751532b68cda16ed902931
+89bfd8a6b49a7dca0d338049b90487003d0f94f556715b401eb7f7bce3fbdebb
+93a832391d036fb1670833946f399a079b2dbd4460dedf92370d9bc5f70bad64
+0ea1814117e3fcd9d89eaf495feaccf5af133dd914a550321107a06e846b4247
+e5b82fd5dca0976177fad70c78ba8e617370020699002d2b7964aef969941515
+11f21698e771dc0f6a761a89c1cc1658dff4eb129ec9618d8894eba85af2a938
+2bfd48395009063eef7c52785afc827442c637105344792382277a67e3127a52
+d2992a818ee19bb5ced705efdcfb125d77ac25f188766124b7d9e837223fcee8
+12ff5f8739d8d32484af7ed990d46d6d7eb1d1f18fb15d3a66909a734c9b117c
+3e48b571f1ded3c2785eb49e70fb6c7a4d5561c1e62e93fc23d9512ae55084fd
+4f7bbe7c9cabe82eaa0c57465266dae288b17626bdd2a51503200d58a5f0a293
+d446c7da298113658f397d88b29e897147b95251161298fc9ea39703cad05a92
+156f0132f27107234c82d6ad2477499e581028be89c48586f9581ec46dc159e2
+f4c6f479d0d7832a7c97d36b7e3d57c252ebbb87885254b867bfe9efbcecf6d1
+c8b80a52c00809bb7103504cfc7e4a6a989bbc8716bf49a7d0f23a732686c728
+8a6984b3f4ea5353e6f770eec868cdb74f71a1556b99fd74b26f82471942a748
+d6853486c058fdea7492a7da195089e807a691cfaf2b608387d902785781470c
+549fb01b962ac6e287aad8eef25f06ca91bf7a13eb8a78c4dc2552a22248ba6c
+3441f7a754d8529471c617b7e5daea224bd5ec50643ca8c062ac7b2702cbc350
+55e06a39dd65ac7c9730d78843fb1c5069c208cb8639f7b3b682244196aa3d4f
+0ce2f0d98d83094d4c59f5119508ed977f7415b0c471bd7af39eeda762a82e1c
+f5fd1a9a835f1cc03a74736ab8997e946242012bdc573184110c2213aaa3010c
+95027ece0417129708517a4a961cf6c3826777a75427420c09c2d4d1fc4c97c5
+977551b873a55dcec55024c9d83002b9053d534c6c08e7af4191527cffd4d271
+cc4b7f19b35a4396eb7aea90911e3535a2df11a34a170f850082e2c728a72102
+70e24498573e4da489f75859d8cd8dc649a90c4a05b171baf5895c59bd1df3d7
+211ebc183c06d833db85eee9473fcf9c9e0368199acc20507fdae01b126e3ee8
+81ac423f02724e5efb7864e1aaef3e770f5cb33ed35bfb876b91355f42ceb770
+f1c4a92ca9afd0898a63ce98054d98aa31cecb680e55e6cd2ee3b205ad3a9094
+597044344aaf27e1adc0383c93e2ad8d4df7c60469369eb8c419e7a0ac465808
+3796f52d6b39f21106ec40d435c94ce35c1b320e43fa0f9dfa6924425c3fcea8
+c7a0386a7163f0fa9997e8ead27647db4bedb4711813ffd419c2b36bbefd5b66
+7aa489f8246315507eb3a6161389924dd1b575892dc46a16ee7a5ce3898a8655
+296bdb05792a9e0be7caa3ba7fb05157287a57e2839db31a84b5f8c769979fad
+afca50b943646967c3419d37b5f732877335be374425488247bdaff46f0ef064
+0487e2f501be06f60e18ccceffe9768cf24a8113a68a471d196e81dae0cef77b
+29f5fd07bd37468ab82bcec2d6dbec115fcdfdcf539f8d3d26a15575352c7ffc
+8667326021a4e3351ed1d0aa53984316aac3900e8d1753fd8f9ca6dd0bc336d1
+5e25be19e8ad894e510e47fbb7968137bed38bfaee8eeb0294b099d6e7f6f77a
+3897ab0ada53508617c028a8844559678ec8a88f1f48e1a962150eba7e06532b
+cfde2c4257db900780016ccf10ff93582ce7a5749ee86e840725e543e0c85cda
+97502108f4573334d012a769d26990d383b2a3d37e16932330c8b7f13f58eb8e
+3ab5d3f9753cb1401194a5fb34704cae9c0b9c19e12e51388eddd8ae12c22473
+0c62035b1b35e019318c76ccd6326e685985fd2cbb9e27a1fa369a3c670b2cc2
+e39977ca543d85fae8f72192efddbb704831f26f25758fd6a0add798b37eb9d3
+02a712fe026b958d2f37361e192c0d2d2b66b2f8a4de2dbc9a9b42134aed16ad
+a49c6047b7bd469a22bc8d00b6b4e8233a348ced630943636316666e7d502b46
+f009011281682213b6bf9096ce2603368311e135a670aff874b5fcfc95d71505
+689c4ca31418fd86cc0a7b7f2622bd78648ac8fd729133811d5eacd367f1034e
+dfac2362cd2414caa16a1e2015749373db386abb1666fe7ee7e560a75bba7cf7
+22d93b4576e401b2722e28a06ec03dd291b128b23da6c798c82e4f07bbffd5c2
+2720d7176930fb1116f830e928a0d6fd522e66295786924d359a4b71cbddf28a
+7f113af1ab85ff31cbdb5e0bd07ad5b05843700866fa5ecd25f76893a4c361ed
+a33449456891ad416a340be98da885f80c7c11fd8cf01105eabe0b3beddc6ec3
+e99575008543f81aa50757104afcdfc2b8785ab244d03dbd60029f12f3e328bb
+e8d1fa4974d3faf88e65f577a8576eeb7390ad8bc12a1a416d4bf7f5a4edcd74
+6f0a95870bca37a0185c220300d254e9d46a71229fd90adf940fec2271308f97
+dcfe380064ec076f81a1aadb31bc15531f869854a05e742fcb2ad2bb0af02611
+af4c493c648623e8aacd206e627321dd66667cd847b326e054fdb90be4325c36
+dfafbd8dc1ee530fff125da852de661f415996bae9dd1437906a0fda7460ff14
+cb3d6f69e3aa3e2034d37a15854f43be456c00b1c5b849aa47b91254aad5adb1
+040c127ff7df1cf51c6db51eef86c56dd06631b92ffe419beb20c35117ce400c
+9143ee7164485070415a23b63f58f6bfe66f8a77af5b12ccae65c8ae93b07100
+97810e4304ce2a60840746dd8778d8eed42e04fb5ad9d0e716378b21d3822498
+fd106ed75e98b6f1cfef5dcc35189a1a07f187ef7988d7cf24f9f81e837ee613
+85c7083f4e0bd0cd706e20abfde0d57013b2c22f91a4c97214bf4a29adb320a8
+2bc2bb52995edea5a7a201879e1a7482c09503b3562e901ae936ebb1db5c94c7
+7ef0a9cdc36d74bbad647b57775dead0d7fc3ef8d8bcca85e6789a24b56dec75
+950fd10c644b1ae5db4dcbbbc7b13c6fe01b6483aa9bc47035f54cca87d20b8d
+b76ebbf866cf66e4e1dd934bd95404802600406543b87488e0a803fcd2ba5f00
+5cafed9bf00ff0d4856279d9b6cc80e728d3dec663651a0effdb44568e077d2c
+274c623af62b11a66ebf990b51511743b0568bf4648a288d77ec6ef8b64c7fe3
+7174b686a64efd9b7b4b12b055fdca6879511bedc3a0d0d955a6ba82c94626c1
+b71a24853ec27ae924b042118ea30acc91a80a91c5847924919fbcfbe303f11e
+511673bfae711ebef299ced9cd1e020ca8c06f995a1ca89eba389011a59f6356
+64fca8814304632feb4e97324d9ea6fccfc66c265d3c711c30f81342e7bd510b
+9a72bddaf9802ce491562c5b892d338502d70411de317385751355576ba1e49a
+98b51106b08c818adf72dc514e507f308f0648fdb846f7804217da25682af789
+bc3a264f796d43bfa2cc5b36214d757548d89c254a5aa167dc0108c5c0819cf2
+272e33041b3fc682bb79332780524e087f2f206085daf1873e740c9448185259
+eb7264649fad19c9d61406f666376bbc741018fa9edba513c1f27fe23fe8837a
+d6492424c9f22f454a8943fee547dff48a7e36c74739f2f9182592c837dc8988
+c04fd98f86085d01d7f563a0f6c09e6e72376cc1a8b812f145219e06572d9209
+37c36294ebde13774eae4cc88e63776f99f9bef3abfd38d258998c0df9bc85b4
+ee5793c64751f8ea81df9b925ca1a36106bf5a15040ae5cb8691a8edf472dea4
+58981aa4398adfb08837ccd0af4903833be20aff670b62ad16092ac604c54824
+1a1aacd4dfd78c1e7e00ddfb7856ac42a4ec4d3f3a788b6254b1ec8f4e383aaa
+45d650dffb65dca2b40b0ee0466759c4353806fbadad4cf9984f42a3ff5c9d8c
+02caf99525915fc4cdd86744a4d87d710696eeebbc9890315101a382749662aa
+17671ecdf861a1d7fe0791d0a4c1f7fbe0e42a166b437bc6ef3497b897bf3675
+b0d031eac9eec5dfb91b1f237d104a34108699d1d4d1eeceba7884bd6121f739
+fc215171c8f1bc6d47cdedc6fe6f676871921392212eb161c34ae1d0086d178c
+631d1f47a3ad338c44961fe2bd66f247329cf69bb7f94b3f4ffe10a9d0bcf5d5
+9af81f9e43326dd9ad5ee92aff5ba6dd226477d3bf4daf35b47762582317b43f
+92e7f5285ffb699a3797c8bd9195288f24146ded5f6a05f654be531ea979f18b
+b27da13c160ab4528029c278819e3faf6f36cfc65cb9368d1610edad5178f138
+91bbec886b594677326b9986442c12fe7aaae8514487896df4349eb3db6edd59
+8173d3c281853afcdf6879c5c64ca25ac1f056d5471102083c22cc4da069aac4
+86d32805ea3152799f4f41953e8f3fce6b9f504900e482f6b02ee2fe67b913bb
+04fba110ac7a6f198323a7039e48358f4ffe10b28cfb0869d67bc438d7685ac6
+0230b8f79dbf06597536a8c625e1350d958a2ff30558b39228cd6d6e5e1978ca
+9a6212ee74b4a0bf9c60c79003031f775e4f85ecee9c3600ded48cc9a3cb46be
+e6802c31758622b172f187537192613978a7b2b66be38f8d474d09b706cba3fb
+af120c339c602957c9499c626166bf29034b33f124fd059df6432386fd084cb3
+c6599563c1026ade042f8a15838cdb919c8acbace1a1312c0b7bc4513b8bbbbd
+9ad2a3304f7f87e3722d9126c5850b6db6de860b27b2e3a353d53224a9ec0cf1
+92a423bebc8fcb9ad2d71ac75ac53720520d81df308f02c2112bce3c59154c52
+24956e690b8f72b151f345e37d48469353348de845c0fff902952ce4cbaece81
+a4dc0ff73661419e0c102d1397ef5f66781f6eee4f5e185a2a2c478ae3ea737e
+19cd3e482552c2c55d704d6ca9034464b9f498f005edef06b7cca596eb61cbb3
+3fc13edac70b33885d703be13df5941dd4eb17bd41fd2e6e960add8677338133
+5d73095c5eb1576141979a0a4258d0bec764124014b71a6e248efb9424c06ec4
+6c1a555a337b6d936bf62607f41b8507061ee04aefa7e2aac6b028ac57621fa7
+081ad0b5d8c1160fe0dd7db89077ae7711eccc2c112c073bdfdc3d1009b80fb5
+c2ca5d5cd69edc66b44316e31d56e36a26d392dde8636befb97713904341da52
+6ed3e83b574e15a736796be62443804f4b79e92d0e7d38591a73674ec76c175c
+37047a8c6697bb42de702cee6a90dbb4a2c3833e8fdd3ea4b1ce2a6916f0fdc5
+85bd0f85b9a82b241045c63564c14551ff89cb73c6fe8a3e6350fe7cc16ee1c2
+6f682ed83445260bbbfdd438121f2d89fe4d8554006e8179c1a26e2610ba73cb
+584864628293443b519a4e71220536d9123c144ec0b58a890ae1596a20068a74
+5f3a354d5c47363e0ba842b5e547dec05000d62ac07e79a4613b20f0b1668445
+b6c9df9511a93e56e956f4cc45df433c8682c8ad9d81b0b3cec1c01dd940685b
+7c0c474fcafe8971cd41c6c6f6935da16b3a1d4eb2883a00f793a08738384183
+c183d3632db83a1b731561e504e752181d7d1a78849b6620c8c24bc2e7581b68
+4cc76ff7436a14a7b1cf77e766aa109b6a8a95042416a63d5a0ab3f6f4b1e7a4
+178d5039bbb5440faa18d9c999a0d035c2ec919420627aedec225468ca9c9185
+2268bfd77e673697beef6ccf52d3f967898b63eac0a620f6a82fc4ea31838e07
+5465aea18c617a3ca0f3b8bcfad3eddfaa167738740f0bb2c7748147d37b35b7
+efbb70c556ca17b3712c065182e271b7754b42a67a70f897657f994d60927436
+6273283bebeb662a62c0f9364de8f55a01b991f798159098a25c3eb0406175b4
+336aeb705ba94bb17e9aa2d86eb8ee36b3f9ee3e5dad4cc6b313244510e5eb34
+148b741181c041486e3b4ec0adf9675115359186790539a6bfc2698c41b3d31d
+22da4339c234357f5acd33b9c0e2b4474143568b78fbc6f008c9377aa41e1a54
+6f78ce66a3079debf5ddd5bcc32493d9c6e5835e0e748737e87f80c3b84dfb23
+6c065c35aa23972d751d1ff003b833a09efdd5b7e46de0d6e66901b22cccd888
+1a2aa8a9d7beead2b6cc98c6aead295986b64efa4a96c620389f230e3bd845d0
+8c6900dcb1a0ba00de9e2a4993c803f6fb61f59bfba778fd98719cbec8a9a22a
+7382d0b874adf2b721abd1d61909f4f67ceef351c2511dd811a8e9c910411d25
+ab46713a2e24f398422fdc18200c033543e7a0d402c0fbaf296d1e036debfd45
+980ac27ab2d327fcf441dfdd4358d9a128459f8a19c8391448d2a22ece54f46d
+53e570e7a5de9266157028568214113002eb448dca8590699abf91923f2ec09a
+0faa6227b37942ec92743e58536b6203eb21944e13d37998e92da64f818826e4
+c00b671cfff49548fd5e851fc8dff88b7f9f1244598c90cfdce1141157cadd46
+c3fa485538bfb3a2e97fa78a617077108ac435a5e4ace67ca1efc3d9f3ba411a
+25cb71ba29653b8887964708dbfe5364a681396c44faaba358b6c34af4d1906b
+488a35bef23596dcbce35f5e83a3a064453f6dd79319eee0da7518ad7777a01f
+1970abf793a919abdd834db1da15651d9ad4634dac0cecf2db1bf41ec488ab75
+2b8945176a78b52ceb6ba8d02acab0ac22d9b01341792ec3cd4c5188a293983a
+2109c58a1f948e3a720b4d3d96ff597acadba0fce56e3d8fd2db5b1965c037f7
+b203a7508c21761b3029d9f5b9490e2cc4683dc38a63d8fb402bee65af01386d
+e69b2abcbc2ded47fe0497f3c21b9dddbe24dc91225e8186e37e2cb87d9766dd
+8fed285f3d46590fdf1d2a6f11349325a554c66666083be7b16f06a1a8a24549
+e3c05a7d99c5edf3aac2eb39d31818e70f031c35bffd27a3a2f16178b9b4502a
+d3b879c15a097e5a8613fd2a6c3bd70becc709fa958fdae266cae634caa27e25
+f0b9362927b596eb6251c4b3dc1857d19df527619f15f3488795dc0208c300e0
+18568e0f1e443aba9c90d15a90c4b4b0bbcaba1401a4b0059083f8f41beb36e7
+433a23e4f6167a6ca2468338bfe53e8f8344c2b55e94c1d8b393017cff5b9beb
+f8746c6e6b118872a948fdb999f88ed7e0942cdc281fd159aacd85589c2bb96b
+b60727803ce220ff242bfedc4c890ebd973c9ee178c277c25fa77cf833c27084
+f68a558a3acdde3250fd91faa63b7cca25ec6533101bf8cca45af282dfe556c4
+2b4f974db3045bee0c2b798b517f0c2a285af9399080f683c6480ec9774bf9c9
+51499c3238c2aca9ce3daeaf594a679746baf4e5656ef0870b0f972087496978
+05ca1519324b69645a61f17fa3f385f77dbc6cc1ccb8a6c881ffa3d6cb77c13a
+5ced04c7d7bfd4870d84f9fce2f58f67e9c8c523e731511607ef715a9813f6de
+99283cd7d6376847204de1239aea446c7eddac73657468d453725866c5c9abcd
+f321992d3ba28879622c53556f716741ea7bc926ffa550b91839b0481a589b79
+4b2218829ce5962a1b8ab7ad73e12c7de66c9b30e85d0456b1400695d2273989
+679756b93dff9aff0105be03c9b2b2851190e6045335f84d46f29e8a725ba387
+23eb1bccb4487a68e24d0fc6fc9665034686697a7fced293338cc2509709cb30
+0358d339bb4dab04d98d273ef715e146496e3047bcabeb99fb3a44bbf91791f2
+efe9aacf72067152104365c694e0dae4fc2974c3fab69cfb927d38901a05ca36
+528486c0a69629705f6097cec6c849bcc68d78c1cf94e69dfd186b1861803eed
+70c2d276a14df4a43683171cc83f27a6c6c1560b91fc78592d01390b65ff5e45
+9d40af77f7c3a1c0b282bef09ca49df8f9b8c9f3a19b15a069830a2aa385f594
+a6e197730d48660ae2e8321e54b4b828ef5aacb56b28b53ecfb1bf8da4563a8a
+7962f473cca05678bbe037ebe8629a0936ee43991f3a77fc9da8033ebf8b4c3f
+1c1c863354198850285cd52c1628b5e6d948ab224e0f9c08c704c8acd1d12bd0
+145cce5d20a56defeccd7a849be18ca7c0d2678c02e9a82d4392c524de3c62a1
+9dc79ccd6dbb81546ceb91e8b97209089ec53de67107dcce1c4c60b433789d73
+0bb3b4781f69419e7e7040be5852aad27123589cfb1ff23fe3ce39201a33e91e
+4804c0a4d6046c83d8f3404badf105e9195820b8e85b2765d6674a8bdc3befd9
+095bbed2f01e2d5f40c71ed401629f1b090c9580ac7d2c5915c61ffd4d9c6d76
+73109f26f2ca16eb945376bc9ff8581735bb0b011b6a61c0e60990840ef15240
+8199427698bd1daa77f83d1a18c79d1885a305c5b25ead818121576214169f96
+646de09bd7492af5df05abe1fb04eb1bc87f98d278d1703d01396779977a5b93
+17158c800290f5638604d8019b23e877d552f47e01bbb9fd2e090ace714ed617
+dd08370a1f9188ec4d2717f46b398040def212fe5562e203f112db0de6cddac1
+9a2d15b79fe4ada5bc66266fe78d92b669ebf48826811c4d56634b151b31df0e
+761601697b509239e59b661a770c5e01459601ba887b81bbc27660c5985a3fb8
+ca15efa4fddaccf07f743bbac4e573882ebc9d194f6ed9ee373f309cd5813429
+0efa84fa7ace0558bcb18ccfde022b5e3e7ea0d2823bf068cb1e93fa215e330c
+ad30c52365d33a1dcc280a1cff5d443da001261f960d9052ab892f6b14673588
+fe1ba02e2e82d0eefc0d351fc6d4fa225ee82bc7258fc5508edad3fe34d0238d
+a19674f2d83ffce583a7811ed703fd55578999761b7e50f4f5d1742bf93f5211
+0448cecc6d165b4eba7c5e6f889dde46c54e3f65681b54080c8708239fd8fcfc
+da87869217f067335be4527a8828dd10d662a84d6aa975d0c1d89014bb7bb412
+8d574eaeddd29e03a79bdb2c176fee4718fd26179525f745b7d51eb09981fe1c
+efb721823ef0710cf50890b3dce867dfc46d1a2497852b41311a2bb36095e7e0
+e6b14a35bf703cac2b12278bfd19dd60246047c56d73a7a28281c626ba9c2779
+8eeb7a40c910e32b4171bd412a031f998d316c8cd9443570ce4baec3f49f9302
+f794d647af4593154c8f3ec01b94f347c9bde9eadd0395ad1992e45fc154e7de
+1cc952d33b94f5ee3ecbe5af9382820f2dd4024e4a2eba438e0b1e4bd7f21095
+877d2707b446c9ae295bb6e248e7431240bc71b369cf20417b51109f1a9b640d
+c172d228507461f322bc7b37a5362f4ac0344d0483c40db436edb5cfd525e3d5
+00d93b28aa88b3cc0c9fb1a95631bd24175bf34a7637638972b13a233fa21e82
+38b265069c55f20f2b43f4d6bb5627da9a0725f928950fded9289ac5fedda3a6
+8d1a69c8a20285d47e1da1fa098676e6a6c43ea81bd9467f70a01557e70ce45d
+bd7bdf088ab4422f753522903c2b2061501622541822993d4904f92dcda580f8
+441ded720050c3ceb4762510f7370c5a450d38399e00b05d9ab1ab20df08c181
+c376acb933d7645ccd6fe64fd5c2b1614f1481ecf6feac2416e8b1226ae7f24d
+840cf578d2ccf4642f91ff7e16ae3c344d739c481c57082249ab6e9a521afb20
+47d17390ed7d5e9abe930cdec34b5604c41b79ff5fe1fb4520d1a94d920ba65e
+a9e3c2dd422c4db9d34b9e8ea484b809174c6b1937f4fc07ef5f940092c3c220
+7e19c4c0abaa31436c765f4d3fa9caeba30ecdf9feed4918feb89e4c239758d4
+d130e34513016378e7b35a0ed909ed8cbdc61ca149be3054526a49d5b992a191
+15171f38d80adc2eddf0303f1cf83a50933cc4a50456b1ae1a8b4866c5737b68
+72c0b224d61243fe1e2101cbb0c1a5cbf317d930436fe8f1748eb49184f1301e
+960d5063f8f846bb3d14dcf682185da2c0c1e2e9d980dc8cdf2be8849cc5150d
+01d9d4f723847ea744e71eca059a1d493599fb9eba53ee3e01f911a760b88ed2
+1ccbfe702f217aca6d13fc20c89c11d8ce5c51eec39547ce066d6d1dfa5c86eb
+a55acd0f9b08f1f32613117d5bc7dcfc37d787886bac05c1b7c94ddee2b3c8be
+8a0c5591b2de58d54472850bef7507c0786fc5d1b7be3b4977318ce918d3a2e6
+8bef73ede16551cb46034d1b47c45d20553fc8f114a7d638b69de16e0676e17a
+5b730083dd15dad5f20ab9d1bf3f5a05ea1429e1b7a213ec6f02c3a96b432d6e
+e75db9218c68a464954b8cdbf95c02408f7f2db8f4d73b237fc3e5733c5a5fe8
+1717fa529e0bcc80a53edf4b1db68393b9bd52048a148dcc6ce37b16bcbb7fd4
+c360a506a9ee2a1fe11f3aa146caed65de14ab6e10d46235c1295f954bba3f4b
+f20ea700f8a3da05ec76c261a4865a52c5874e06653e252a3f42d2ca1f1c584d
+9c419ddc14e1a56a4603dd0c830438e9d42dd4a4784f7b4be04d5af2d92c3d4f
+ed8d4d02662bdf90a0b3b0f121036538eb1db15a8c91f69668a291afd228eff0
+6ca4b494ccf9110fc451985ad28f1b29c9d5171a9e8629400c2fd10fe386c34e
+ae627eca36e19e5cac3d0b39db54758f687ee28e8d0432d78ef632ad62760445
+557d85fb0ea8b27b85078b4e176a6090a96110c42f78621a107eb149ceb8f1ab
+39a57b416127d6c485fad7b156db077a67eb2904fa43698e9dbd74dc0a3f50f3
+3e5c6023ad491c4d153c8384c5fc3c9a9932e64dbf0be41c5a637dafd3d77af0
+ac0ca5ef02a1550a17a988fe1bc878f9d98b5cb9c7b6286bb86cdf7daa1797c7
+01bf1757c38daa7038738b591b0682a61a9144fb850c8f522daa481c5a1de8e5
+f5c533334f809d6cdb34ab2d5af8873d803d2558b27a4fcff68e5c1faa17e1e0
+26929f9740b3cba69d6a866d9b6294f2427acbb82291b64b267fa9447c367069
+b012fb4761da41a512a65bce826686f36c61328376f09f6415cd4216f92efeb2
+ae1bde75397c955e920042a9464f28709a9b66a99277d75f6566b5b523be67a7
+de2d092e169a0a1b7e26812c3598a870c152dfa149d02da2e6eee05a3e39a3c7
+4a5bb6bd60164da9f188a420fe207b267cacd349ee8d4d0ec66c381d91876340
+3b7ab8a0303843eb0415d28dd2e48f004d8fdfce2f197f4b6b3fb370f5f261e4
+38e215c6ec3b4f92e0b74b713727fd6f6b5aa36ab4e7196d5479b0dd48b1078e
+cd49447a7060abfbed1242d0718ce92a8efc7ef49c33c5a834c49f5bc2024f33
+a6881710460739d444d4ebebd2857f5c035895281c2e488d0ec8ab6b33ba086d
+1f4e2a228d6a3bda808addcd46e05e2fbdc4b4ae01bf4ddb25cb2fed9dbc5f40
+e9879495133a4c6694ba7dccd3afb93c8d879d0c52d0098b4199dc21db43b2be
+f738f4a612d160cd3788aa71c39f249743bfe26b0413e037f455268a4fe63bc4
+f1a608eb4c9ba0fe472951ae183353e406bc3d44bb072532c464b7449491cd6e
+0526169bda992bbb8617457cf3f142d8f42cf50ae8618793c2af659c46bb1365
+419a0b26885a80315bcba8e83933ba9a17e716e013eb6400c41601d650a35bcd
+6e911e1e46d6eb7b388eb760b193025cf57368570e04ba5f970beb287049bcaf
+861bc7811f756bfff18ced38e05a0699da137bdad4ad31bfd5b1d0c6ff583a4c
+799fe072b569012ebc92e016ec73edb72178dd854520112e8992b7f163d04dfb
+02819449315c26ec8b3f76eeb0e1c3d81f516f84da0c7a6d853fc89a3be60de7
+f512a77f7e760063ff24895ada529e6109d24ab5fedad250eb6bb5dbb24a585b
+fb77fff140bc91b3b7ab0c1b1f3058ccae95b40be197b1b4e65cf75d0df601a2
+51b6292db94fe091f0c22083b67cc6d27ee14c18be4ff8924ecf8479c8715c64
+4046909ff44838549884b22aa6037ddb1d3b06cea95814d8efc6d0cd1a3f6f3f
+b5ea08046c6044de991183c49684438aefc0341507e3756a2ed13c5e2352be95
+9e9d7f43a86daedd54cf3c859674e651422d20e91598605831db6e01435d6eb0
+e1563f3fed1dfd0ef5020d882044e5e03dcd6037c08cb929c36b9870e8485d28
+598ed21a4acfcd84ec94de8a550858117228a29d40df7c0b4f94e471e5c612dc
+dd4c8d00cc625ec8cf020f4585d037a884f4a325a43ccd7077c0e01fbab7279b
+0cc18273d37f78f85cf0986ee87920678af8d73e0b486e09cd5991106e5ae21f
+2278c8e9b526d41ccf34bd10e0a3d4d28f768f3d74c91f00156671e2a7706cbc
+31ccbb7d015714af66a6ed1130f921b3ab4f8ed5c75dd2ac081b9712c80f83e8
+ccc980a0e5b7fb468a33d2b60197c07c5f12d4b6d058ba281ae9cae70b7ec26b
+5e67154eb95f480625192ccef0ec8225b9e02ff37850afe36cb296c1639dae46
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 169 /Phi put
+dup 170 /Psi put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 188 /germandbls put
+dup 190 /oe put
+dup 193 /OE put
+dup 195 /suppress put
+dup 34 /quotedblright put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 61 /equal put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /quotedblleft put
+dup 93 /bracketright put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
+dup 124 /emdash put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+/UniqueXX 5000793 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306457c7e62c1d269f306bd3402e266de
+fc3b5e7d8a8d2f5bf0fe6ddd40d07391df4fad4a6018dce29a2b8f692b29f202
+3a7c0e66de8ed85c14f1f8492167357f51a7e84cc5d92e0fee4d81cf7fbc8de5
+2d2e7bb57142033993f9c08c315abade8dbc4a732e84e142d3bee51557910e12
+cd8aa37c459a5e6b7f5269f59078aba3be4641a11ac48d0b625c8325b38ec08e
+4c9e5e7fed976a5650d99d82114f449b9ca14c4ec957702295a39a93ef93f618
+99b8ea06b092c3c1e503e6e436e0a9fa22576c8930ab3dc8c20f5d82b69cddf8
+ff4dacfa9c54bed5a3aa3ea5b129fe96be632843b9b6bc91b615581a985db56b
+1e01ca60ee69ca92cf5c0882ece62edad3e106d835348822400f0b66af658f2a
+e56ed08f8b0010571807009b73ab12a8cf14ca6c71f03c2a48c500f9d62266af
+154a6375ff600d9bac3f05ce34142d6867a79581c533176bb2f3117336671e2e
+44638a97167e2ea9644e31ea16c2ad2990ea33c54001e0c8156e6de8ab6a4d40
+a7137ba275f39589fea2e2db8256adc103d6f9cc038037a47e8fd469c5f98a5e
+3c15bd4ace40d340018b1cff7d1ed8abb0ac57b5b5a2c20a51957b96c453edb7
+dae5affd91a46d938fe0a13363001d844ded4323f1ee6d30012aea19b024a552
+315505535c85dc26bad31e09c50e6512802976d298c4e90d0044c362e6bf3ab3
+62a454ee93de25ce54411090c29e9d75c80ce26a84404bd9de3aee0e3f921ac5
+87f907572b8354a5c3165eea7e8b2ba4e333802132f760b41a900c698eb3d273
+8bea0aaf7aae96a558f08b61aec7c7d65b2889bb7b99800cffee5ba19ac90fce
+11437be1ddfcf0bca5670b543b9644a71c8726d0c1005abdb96f6e0cf7caaa31
+95017ca81519151c2c0b04f81e717c0691b63a76e9b25329ce2625b711cb7bf9
+9d23ec2bb5ec8aefb8c1a3b422ad617b3da4d49685fd44cc21a1fe5e1541163a
+b3e1594601d63c7e98801d7746474377ce93f81404f3570afbd5dbfe77578605
+917ab96963987e6efc2d3f99fa56ecae6422579852567f90cc90e4ef6d6f71d1
+858270205477e221018a375ca83c572b3f972c5181d18643cecb04909d84cf76
+7174b3c0c8ec69bf1e9fdfbc0fc7ed97ec67d878ea4ddac8caa522fdc6932df7
+21b81af837ab56b547d4799241310d6692918fcf8a46189a78d6638aad7cb446
+2d8774ec73d184076595c94c0b4a8233cd34f2d92f6ff94f941dfd589def2ce7
+90d5cb2159b953338c7384cb68c11779120a68bfa20b993d8c0313987eb96a2e
+abfb95b1dbc36b1ad1215113d28118aebe63729475bfe22bd3811d9dde317960
+145d5cffbce5722bb39e1d943da6555f170deb0c7dec19917c98b233ffe5645d
+87394df428b19a14c3335919630a95365dea673e1e1b2af76df3fade59740f88
+71e21c9f3875a0daf8017b6cdf8d99858512e29b9776285d238261a5a7518585
+7fa703f2813c0ca469ea7f75e4ad8df26b43491aef1ec006e31bc6f3e585bad0
+3f4e5bdea4e7c75c5620a24c0a14c6b17d82a491e38f7918c6d6cb4c1282ac48
+c1c5b2e43dc2e20c296746ef654f5c413a0d296d3e8f8437d74942b6b90ffbbb
+ab7153f02c58726cdf816f65239ed0fd1800f497f01575d2db45b5f4a5a6cf06
+fe08aeb334fa3537b5368c09df40880a0375641080acf0494ed2572062de7260
+4c8bb0b588543fe36f39fb9db341259b9aeb50d691c559e22c19033f5e710355
+3c1614dc1f5b5637ff724afc7ca0142ec559d714b3984149240f94c913793a51
+cc31bc924052deff93e91edba8d1f7eee9bad2b5bb8e556d68e1f011cc6b4d45
+1e2c668ef6be0e165d95062b7d5ee39eeb48a113c6256aa6516b864943e7b8a7
+a803a70e020ba96f08f183eb2c6d08064e9fb1a3aa7ce31217180c641c77a2b3
+8ad2a50df2b61b1c27999ef515c57fcce2408ec84964169f1645fda8473286b6
+46e2e682070964ab4dba336037a014679cf86ceb093cf5a2e1330bf2a0b36c50
+9ed5d06c044ac10141d5f750bdcfafdd984d951559d5b8f0a169fffbc2bde395
+97b6c196a1ae0daa5b97cb2ffce88932e7facfbc9164cbfd2bb194b90f370ae4
+3122fd304cc081d417ac2eed8b376681193d02904d0ca4b16673d152e08d6c48
+62bd817143b1115b01c06bdff57feb3993d40ff5864ddc08cbfe81d875f2d571
+e174d03557bb50a8d049fc8a2e6550ea3e420482d2bc5966521b766e113c2e32
+7d4ac3c93f8f0cf61f327cb6a5706a14598f5d2b8034d8c6b7d4ee659231233b
+c3a4b7f5669ec6a74a2270ac7ec48ad43fff34141b4b1e2957a8db922e5a701e
+6cc9a4438907fc692418389d016365e8f92e6563c673225d7da34492ac0f942a
+20266adb03ccb29b909f76097d2b0c82445ae6be8acbd6a0677de82fd5fab2e9
+be36a4736e2f1fb2bce6d06bb1c4e9a99d1e123d4fd678fb7b888409d82f7543
+21a5fef08590a3d64ca233e2c25fc6b611e24601e065e1be7249bd492a842bae
+750a66c452b8b525d12d7cd401fa0efb6530544d48fd3a94dba60f50702826b2
+f11de542584073f0c4a65faf24812e8fd4ab4833f3a14977e525d5bec159ca0b
+a874392e2506812284134722d747d4f942bf0736704d4fe177c74c86fd0cce3a
+c0c2bb9826b83d13778f1994106ac6a162f2366ff7ebf21a577eebc3c1c5f9f6
+01b0e7d5710add69ce1d472ff33df1c63c826270a4e9777c9fd30997a786d3a5
+fb886a4a9c2f39d61bca53bf893f1d8dae7627bf9319214b15780367f76fe437
+9625bb7c298250d306987e59afe897c4ef1384a46301b790b8979398a1450745
+4975e6555da7b6bc58301b68771e52522e630c49769de14ec6961c2edff72da7
+58ae251c77c30544dca121917d46abc1bd85df69d3903dc15cfeeb86ea42b5db
+c77b2bd31e301aff95610813532cce678dce474da5e3ee2b0630b95f7ebd9407
+7337457a321e4abab741c266f8a9d540639815c9929f212f55ec157189d8d380
+38ca8928b0259f1f451c0989549a4c70414342ee72cd036f320a6009c4414713
+14a472c08f10fd6db6e478545c3bcee3a0d88353329ac61bb2f386e03d96448d
+dff1da681529e49f67984e6734fd335d7136750cea65cdf793df739baf8e7b0a
+1f21035d6e7db2fb5d92676b9650b22096f4619f27c1a1bb7ee1123ccff80c74
+3b4a8baa8a7f914a3ab18020570d9c37f090f9665b383e97d22ca604c7a1e790
+6d5cd595292a03e3da0b60b7e2cb60b5d57118f22bc44b348144490660770802
+a7ccc9d579e940d5e45e763b0f90a5a25ffb915f147e991042fbba3ce2a1a0ff
+f1ef8786930c7ef529c128cacadfb6b2394b0dce8ed514000dd7861aa012a809
+c41a8ca63678dfd3d6caebc7511b084918a5a58e7e036ba50c3764f37c31ee3e
+9b8036036c2f5912262bfe35209f0f3653424b4efb6c17265676ff6e3611ca91
+da017487da4be88d0d8f9c9001ac7c36fc4a14e544085fb01bb7d4c85be6792b
+1497be176fd2b8e474e6dfda27bc1b2ae3325ca7ee2b551a20ecac7fd01a9e6f
+bc6ea2ad2860ca9c05009bed6fac9e5d7143eb476812aeace522f2af66370d86
+62804de24a2bc3ac0f905ac0e9045308d0b01206ad0e184750ba5f99d335b1d7
+b26533879cab1b54cde946db2e6304b3c3a508b0ff0377e55b7f1a122dd5d4b4
+4c0474c7bfa08acf89fa159e4ed9dda50a4b3fbc2d72ac673a19c3844e9e0c61
+5d140cfb169d1e24bb097a4e0c45a08a96f88bb90a4272e9c57829137f0d075a
+a78195f559bc6222b2bd557a0658fc8be5a550dddc2f8e9ece5c4f54a37cf3fb
+eb770752cc55ace8ca745ad748f20f1e3114b9aa57f3a26ce112b23bc36cfb20
+acb1a28ebc4995f05c85671cf324a79c1be3ce84fe9fa0966b8a11ac2ec66228
+c63aae4f1cf13b734d9cedc367e575b9764c152a84dcf50104ac77f9000af2e4
+06a386add899eb994c326931011b2971591a0f4e1a26da5ad47565aeeb62675b
+db1abf3a114dc6b8815f009f7949664eaeb79c68b6252659d88dd8f8cea382ef
+7debe0bd848b3558bf14c68ef83e013919b5e9a0beb96e84d855abd13d5d7ebd
+f0916197e6bc5ea5cea28474913c6a6726aff7ecf43dec71ea69b3117f3a6499
+8c670426b2b7e52cb1da7f45ea025a0a5b23497c8c4abc19e3b5bbde55c31e3f
+834cad77409e3ef0591e8d8d88d2579d85cc7a001a5efe9449eef6ddb8af8ae2
+f70b42708f7dda0279e095e1450763b248351d0e3ffd6f7886bc6a39b0d0e52c
+c8f327c27fff6bcd21f7e1bd6f4c67a473d5cba6ba628ac9d79cd3ab9cea5350
+2725995f65b2391170774b72d4822fbc3d4b2b4c240498eb859b4160363d1d4a
+3fdb04715fcbd4ff5166e88551ed435a0ff7395d38e610323d8b210b4eacdd88
+6a57188cbc4e7975346b4bc49215abecbdb025737bf5d71630f286ed1a01e8ce
+7cadfafe0e43606d864613c6bc9509ecc70d0039c789b870c0a19dc58e084e4c
+9972a0eed09a6ad69c6a30ad2dd6cfbcce98ba55ed2d98b5cbbb9a8cc2bc8260
+deeb67be6656ef30c1c3da07f7bc2d084eecc90339ddf68bac00adf4ee02a737
+06368f8de293133ce63037d063f246615b169c2eb3fd2d1abe7b43709fc2f37b
+fd972beb1fa48e76e874903e322c0929444906e41c101f04002da95b24daa0ac
+61bc9888e4cd78a281ae328d41c1dc68f6264744351d209e80c297b1140669d8
+f8c547c192b2329506d606b496e3b2a580147a6716fef04ab2bedd3ab758e92b
+883ec335c8ca724c6174e6a43412358f0513421b489e096c3412a02704d15b98
+9ae5de1af9a46ad1446ac7b7aeae451ef5c9974df95ffd0152f92429c6f21f51
+95005d39f82499d98181bbf67def6a70732f69e7902957218ca0b1c7d42904cd
+c217f20cadcbc10ea74fc631a1f890e474b23a42fb7f5ebc5e79bcadb80d7192
+e1e3d135207696ec609337c3185a3c823153ace0d88c07bbd637e0c7f4ddecac
+7a2428047bad0a4ddb57e2a8a9a16afeb3a55c3eefe1dbe3184533cadda2c6a1
+98368407e4116a91414cd17d58473ed4a18e8c2f569c82583a90dc14486a4042
+35d8df755104d82fdf62817364dad3929987b8beca71e889000cb83fa834ee92
+4f46c7b54f68e8f6fc08ffb1c2ce5e66551b3d7cda00f050c78df61b90720d43
+a11bd523246663c71348a5379772b6e04be29d2320b83165dc0584f94a368c5b
+0dcbd2d40c424a2499f67890e36b1204dd3ebe7798afcf19f4b4787f1e61a246
+3db6f7923968254608b1e34b1c51f21e1470a3429e97be8a8f57acc7496af974
+2540e9bdcf7f1421f1ada1c54f72e9d8ad782047b13a45abba46b2ae281a83ad
+ab8373a39b1c7932f07e771d4419609bfddc4cbd9fda87777f45028ef53e8e6b
+df4efd658c665c0a43a55226a5abf570e1b84ee1273987e21af1462193e65e28
+107f6d3f539abd1be8114db1ac70440ade6dd31e68a8d80f022a57b017f317db
+b45706f1c2a8a694b746cd12311e517cf2349e34fa156814ffb841ff79ff1f17
+8c80555532b10ffeb39a03e554fca6085d7aaa598210855f97ab8daff645d084
+3436ea1eb3aac4be4ba36b1e4b7e4eb5e621f6ab8ded8e41e033e2cedab0e362
+1c79868b25e795190b9900603f7eabc27a822f38e7be70e4b89d3d11bd0f387a
+9369733db3d3a457e4c68ab4be6dd1e2ec473d5f9e95e24add44ddfebe41b18f
+0158826aebe14c8e4681c898588cc5eb6a0d695583bbeb92feda856bad259ee9
+f93aa38cb32056bfd8a2929c293e21066fdfa7c34da3ed835ef5fb4b4da1fc47
+f3fda1a3ed2781f783db6d56e6b9de25733291728a3bcb41dea72e470cfdc0cd
+52020269be5b7e0f69b60e422991f79be86cce8348735b54a894327bc02d39f0
+790390d1b15e8a6c3fc1943ca1aae43dc64f18fa45413418972dacd87cf781bb
+2fe02ee38a09fad1afa97431be0ad24da373d926e29f761aaf63b4956f324243
+6099fde3e537e91d8274e02eb94e59352b75bace0d18fbade80a196b32c9a986
+fc81df11621160270fdcc140bc3c0753d4effe8d6741b2391f068d8649da6587
+f8eb9af6d5bf620ae131ad22852074f73c91479a59a2d013c090a44312d55e54
+3393e7152305971f955396aa2f66af687a7a11fb6361b9cc1f03bf309eb5abe3
+14bcca36828e9b844711cbfeca8bc195cd389cef7fca53cd2d5cceed0ce2c5f6
+adb91061f4487aa5188ec5ec8f1c02b60623d56af48f69776e0bdaf54016b81c
+c305c627bb60af22bf80543e6588c1bd9afda689ef885fbc5aaa5d0e7060102c
+4edb49b6e4b51ee24552fbad9b4970f72000c656827b55f809d4600ec5d7ff3d
+fe4adfef6b6868e9cf2ddc0035c5389669734621e93fb086e7e27c6109366d63
+5a65e969d12233e67e59a760af9af0b4fc5742647bb6042e8da99e8728b868d1
+631f30a0233cda04d5711bb8147fe03182814e264f4bef5022da2f1be1c4deb2
+206ecb94608d32e2291426b7436d5a9e8aefa3eaa0fe888654fc8af7f37cbc41
+02ffcfab8214a221f6b27dcd25f6da7bfac18985f363627cd694cfc57030d828
+669f4f0b5a53de9ce11202febc13d4472b285968abd56c10ea280124d581708d
+045b72b0066f1ff972b540238dd0fafee76754039ee80b400cf7d2479676a596
+bd7d17658bbbf62f9577d93d4f05c557d185bd41d8b892c1906206b37e8b394e
+ba107a3eb36fffc7f2af2197dcb0642ae3bef210cdabc45fca1999583aa8271e
+60e89957205e8a2a3e1be2b53ab26a353ecbcd4d10e10153150aa96682fe5044
+2f0ab54f228e05743b069df9b46920622caa3825626703c55a5c0dfc92893d4c
+9c540ab8ac4176d384c89e7ff4f67a63d563b250b97b210a2c386e3311def3af
+19be76268518b0d2dceddecb52ff5f97808c83ec91e72dfed5fcd4b26ac39c8d
+78089bfc86399b7bcc3fa968da45dc19641cf5d9e14c1058d84828029849a7bf
+13b4808c51f961992af6f4600dc8c5725d2b19342e8f95e7df37ae0a5b96bacb
+713d5a27942369c4f9ee8458bc4bd92d135c627d734ee7665f7fbd6f988fd861
+a98174ee2969240ab00471a90f65de62f58a8b1bcf3e63784fcb169841b64d43
+ef07615e25b3d6f5d3a5957a93a2c97e15fcc06857562cc80d7f56620ec70bc6
+b5a66f2d868efb8d151aaa98ed052239638cdbeccdfcb980178092efecd9bad8
+fd95ee26d96f2792e49a7b164d783d9101e829f00dec7a4e798c65b5546fad25
+d2055379f127a44c38ba408552e384b1107c55e3ede67cadc98701bad85c2efa
+1e1c63f96426c85ff3183bbf047c1ecda2f5bbbedcf046a9ee313813bf290203
+044e22e33bb96da6e689855d29f2a5a8270e2d40105cf43593ad92f5c217727e
+5160f23fa8f58181a48b99c5a86fb14c9f2a3245273575b6e9ba024ad274e48b
+c35bd3ab5d94fdd26cba2d30e9e11ecd1b967d5c54808a2bc4d1238eaba5929d
+b82d1dd4ffa642b1e6fcee3a3e6377191a0330d7439045b2a9f4f61b1d1c2e15
+40b1bd211c3a0e757d88c4e7ad497bf53c060c478b2dab046398fc020e077789
+87a34dc69cd5ab48c4930d74a839511dfcc44d2ac8ec8e862a56a92a95eb0e9d
+ca1f248e417168eeff86f6549c462ee263d4b62d4085cd712a5e58ab7b799f8f
+136804b923d5370f9b021a8b5dd9c4d52d174d13118dc06635f70bc973522b52
+eb6651a0356cd42170a9df62825415d188de8b238c86da58d1c405d080bf4ab3
+3ddb1e37900d7fb788efd4451713aed767354b4e30072e8354ced29ebc76d8be
+a796d91bb0d2e6bba43c2b9735411a1d6d579403e7052b9343c2cbc7633ec76e
+7de60e1f6d2c58b29bc806c8c9f5ff5f79a5e4b305cbde2d594a548b6037d83f
+a505bdf7ae11764ec0e775521b6b8ee50027959b4498ca2b6c49e78f9ae3ff0c
+a4c8a9f979e6770a54f6ffc3d15e22c0f138ae0a74b77d11924acac2f1363442
+78915d5ddaf0c94134abd5c3a710d38603e5b1f70ed950b1b073df0a11818ae2
+965ae7dc8f98e0fb3d006fe66024271efef4cda8e6baeec1897003918778634a
+2acba391711bea9dfabbd4cbf44a254476c90776594933e6eed6aab9a3187084
+fb03e898ea53af331e0f6d7f3874e4bf6818e6d7399490de9493a9fae1baa241
+f461414839c2642b9a5fbe05df5f08b4333d880714410537b7a527f43120a2ff
+426ec7f290bb8acbc0a2dfaee2467dda6b1ae4e9048918b91b713dc0826525b8
+59ad438170fcd9c9108cc0aa3a060c39abea7327f6b7aff79865db52b2f07b31
+88b4fbaa802dd943915dc5bc63213367d88da381c3f3e85613796bd7c0039c23
+70fecbbfc760698648654df0f60e29494dadb059aba30e678c1192f83f62672c
+6fa9c187d5f19d4742352f2d329fb97baa6761086f5b4694bd9bd0e34e16cb23
+bebb736adff375ec332a82b8d5f9bca0ae50f46f4bc1d0157efd8b17fa9293dd
+746b77663cb37b3ad1932e64745fa560e1207711c5e5daedbd28f108f6564df4
+246a17b10cad1d3fd77e604ee8b225ac33c7c633921b1e4bd72078bf89848001
+bd6d3334a434267d771ac54d5c5b3c24692d32d57c1940e87dd5643205becba3
+0639460f9db674779818ed326ecdc403005a6e499c15517dc3914bb8e7044a3a
+b3f292f7198e6b818d3ee3ab50f7169a3bf40e097a3bbe5bbbe046997f5072ac
+530fa59cf1dcb6550e177764cb38943c6f1458535fc65ae18df75e3b5ca0f038
+fab14284a45f1d9415d64d1b5492c325ae7fc94757bc27f77ee87273df99a7b8
+ce7666d617bb21ff9e078976043887cd2e18afbe7ab02fe045021807e6b6bcab
+75a3a1efea0f7573e7cdee4abbd538e2870d3f045c0c7ee153f5ef7c33c924bd
+92b0e183781138bd1e9e732b979daa325801f375a10bc8b36cffc3b024bbcf66
+235b3969487241355460be2aace625eb27572fb0c1a400512e75a45caee491b5
+5480c8beeead089bccc98243b093d56e4ca0b573e50c22e084c2192ee2fbb7f6
+cfb018e5bdeb3e2cf1384752689e910d33e02c88c732bc8201911c68beedcff0
+1d390d5597d66859c44ea2991b876a0ff16878a7f23726423d5baa929aae4714
+f2d699607fe4864b38916248cdca8c80159468b92274d8641c57bcd5322b45cd
+82e6897dc517382ac209f6fc55f088a9933d7962bdf7a5d4f5c259f639ee95f8
+f013f5a329655984719e90dd45909ec93cfe7f9afc970cfe553881bf3daff94d
+5fa6ae46498992955ff107316fd00ba71ad1b8691df8d2e43047b1a1234d2cfc
+cac2fed3a47bae566974144add8b5889cf55ee193e6683c6f181fcd4273580c2
+f8ac20f47f6ac49e1fa483630717838e9c7ea841fb331b498bd7be6afb2304f4
+81eb1463c067584856cd155e8cd452018a68d175b678c217dabcdb986f176210
+5149809c8641749434330e6ab8c4da2764c985c33ad1657075aea362d79b72c0
+df5cdd98bc31a29e8f3e4a81a58ac0b54b2313a6e00254c677d30e3895007994
+8c093643aa7fb80e315b24fe20ecd522add3d5b38501b7b68c2dcf69bed21dfa
+5e286376937baca08b90bbf87660a046d4f83cf1c482a0c884659dca948f7dec
+3fa89bacd30e839a24da3d8b8baf488635672c7f7efaff73f9e1ee59da51700f
+681ba2ef8ffd26ab887478b12e9c1a057e7514fd38784b8840db2120dc28822f
+e4b2a600a1d827cfab42feed9afd3d32ddfe3a28acab237e38641103f032f43a
+aa9569ce31fec9a3ee8904af595f0e0d6b808c03461969183516fe2f902a9b6a
+6d8f76088d3c83317511de71906803088597a62cc782100baf6e8b44bb1eea97
+c340737186c564d0a25a63f8e8e715db508d08ae8cd4a0d08b674a54be455e84
+d004a74b919e17eae56a9e2f58d1ec6ec6e682701c7be85b8821a0dd07005432
+0d6473d0022ffed3e0379bc06771e19c7929bcf7322a020a85dbf7ec1aeed7b5
+fb7e6ef82b1232faadb180a30112b759ca0619d4c3ffbf5155126b5148bbb3fc
+ee2b42631badf367b7ebfb2fc2248e55cd5dfb8bfb2eecf29a32be49da95dc73
+68b057aa758b7a09779417fe4bceceb2f9ab5619f48e4db4e4524e16d30b4b6f
+485e765eebf47ca888813b49f7871bcc2b2c168bbd99b3d37fa961745f56854e
+1615c039f07ac69e9523d9e28fbd2ebe15d674ebce8c578a3479e922014d742c
+cf905fbd09a5521ce7ec0543983315d4b08b640d813ba9c8b5cdc035088bb76c
+c7dc7a6f16e6fb474b6b2b2ff3c59309ac38185adcd5799bb88fd366901f8cec
+9cbe68120ec2416bba9abb00e4fdfc0abe70a6a8527420d018af734332afb397
+d893aeb76eef6e2d424d5b1cfbc273c999c959c337a5f0cd40a9abacfa426822
+8e00370c7daee527dc7e1dcf9af38583e5e73d42ed6e9f86b8d567d7a65c3579
+2c0c9bb28acad1a7715f344d6f79acea7592ef3b2811186883b0f1aff8693c36
+e2bac64518dd6a5e2f326304609c21655e69201865e8731568b4badb8962c5af
+48a7bd251f0580a7d0f62fd305156d6446d76db588592a382d427dc1a421e32c
+0c67e996799c6f96c9ae111d62659202489407dd69e4ed09c4196c4ab589b288
+5eecfa235ffa208b1508d3d419d650b5088aad41f0e7a350bba9e725e5e1f6fb
+5540787fa9159d9a5d8e7d22ea2406d90594954a9c575764147c619dd87cbac1
+d95597d42feed254bdf5c528a961b1052a4eb71d4bc720854ece9f5d17a625ef
+3a59e00d6a2067abbe36d65103280955670c443d024d3b8de72da86a0466a08a
+419012f2949eb5e1244ce286ed540fefbc4a8d45013d6d3a88f0d7f04a2388a6
+367cc374f87f56092e65822abb2938139ccc83a812bab37326c41995e9c52d53
+770b87f6e2d1b949764960f222fd9fd4b06d0dd3ce9ca0f036f38b38b7f00593
+64f19fbfb200d93b47311ed33ef8c18b1b13ded13c7056221d239efddcdaab0d
+1e8029d36cf2586dbd61bcc628f318765a515e9a5f335e6eab11542f7306f1d2
+b13712975801799ee4f7aa9b9b5b0c1e30963d9e38ab2b5acd1c4a682b4065e2
+92d87bdc5525c965efde0968afe335acfa5a3ae79ec345cae09375f0681815eb
+8b4bf481c7a51227304f46501334ffc7fadd5bb61fdab5e8052075560da66912
+589db6e709f0844e9b2b15b60973a8f531b1752eb0ef8ef4fe7475d03f03e567
+29461c23c7fb315da9ea302040f983f00cde55d4ab54a7a31cbeb97e873fa16f
+e5159e2d77521f51ff7865df3ad6fba90cbdcbe38d33e1102c1fdc6cc35d6c35
+b19243528a6614b2ea4c2c4ae3c7e1d20a64896b6aab3311f34695a32157b82a
+18b69d58be8b5c0d096c4f3781eaa3b5de4158ae01cdf3d84bbe7de00db4202f
+ea305134b998cd8a65fdee5b01f903a97d0538d2fd4a2842316ca17163c1fdba
+fbed7477c9c7f6d3e84c840a296fd16acba5606a0072d4ba67ed1b0985a6526f
+bcf64fe4982bb48444671015e26634ff9c2c868d02350f2edebbee9fe2b802a7
+b84c72b2a47e77ac9ff161ba53278fc4f6b39a5c94acaf641dc5657e34a88bbc
+4f2d426657a29b6a699e87c94b23f0175493e12e7f090bf953da76c26317acf2
+c08f93619ad2c12d0322ecca24372214c39c994a147a3493b536b3990759d2c7
+2fcc0e04ef0ec3a99dafe6d30b56944da3ae12b4586b34fe5a810ae2523e907d
+31d61cc00ebcf7f1b4499b48f2fcbbf42b36119b3bed72b3eefb402643e9cbfc
+2caa6d485cafa11b78870dcc465856bddac6a9699eac390c6390c0708550d3c9
+46021c59932710f107aacc6a0362b357ed59c431d74fdb09a26e5f85f875d39e
+641b30ea3001ebcdf0eebb9604d9a8b5d60bf5daf1f2f0c839a3989f19d96a93
+ba770c6bac5fad6921b33778a8e43f436630f00359102b7c10fca1dd50c16402
+0a32eafc9d68e8aca630a1ccbc4eb081de8bd05a382b5bc3b08739c1ed896f8d
+fc6b35f3b07f5e12618629322a7ddde2497a63ab6441c68ba98175fc890c36e6
+4cab01af9ae51f50cfbf5d97f31a5f7aefe309c835d70ee2d09c235e920e822f
+9972ca6f338ac977d84d6c96341978ee4d371ad0632cc909ea18b533a5f8e496
+df6ae33e11e54793a82f7b12770bf54083e85e36086c6910c2cef814731813eb
+2ee069ae426e3c557f2e94fcbe5fd983526c48d0fbc24c654346d94d4aa16725
+ed716bfdb4422f1fdb3913b0986f3903a4cba68ab5e131de063e3ed9accf0b3f
+92c053719334b821677f4317902732e6ff1b21d18a3c944c483d1cb5ed84a27d
+4768eb3457c9fc36f07d72757eacd6a3dc225459e82594cb049b58448b779cb8
+b606c5170ae7947a0af8578c2d3b3e24aeae3526f2c0dc5e50a1b6ec8061f62b
+44665e1abbaaf71580c2798fd30001ba097621b3e2dfe972cbfab7a2de9cbf57
+5b32fb6315df936468e07847fb314c92b6d123f30767dde35eb86407c54086cd
+dfd3e6d0e22af7ea26bbf3a191ba82396628f7994af57f600e4a8f4b65a8672b
+696c9761934ad7fe723411c59a2078fb2200b2d6c88182bd059a2104e7521fc2
+12c9a967e74078279620e3fca6f110fc73c0409d90c9e9edc5e4e0d7a697acbf
+ee2d278099fc4032c88255668b80e51c9daba45ca3a8bd54e926c2cce8910430
+18df986a451eb47d9a567a26f5ce0316d39464d363a777f39769a072017fcab1
+89cf25bde2552ba3960e49d9cee926521c72978648c7dc0bbb56833131a14d86
+f06ce6587e28710d3f91604507882ac596dc0825c2346165046c97e704f68d24
+4721355f06e0a0d5fc74e66d8b63fe81ad3a4a0053cf93fb4f10bf7d8436e129
+8e07b31f3cb9bd0064c574d00f1b5471712f2ddf942869bcdff28e450c4aa2b0
+4eff05a7c40ef13cd09a9b0bb03a10a3e2be57dcd982e6569ea7b68733f9659a
+fe8621815aeca94fcd4d0e29de3bd8d4fc8edd5b40e2e01645d6467927c15631
+4f3434b1cc26201982300b7f40e6b1eb7c00d515ee5816af6ffdb9f481cc440a
+1af4a09b539847e9acf1416c1ffd4d9c6d765d5290a1abf9727a630e4a25bb83
+3a0426f8ee39a8fb25eb46847456eb17d6247f7521bf9f2141c3e74167d0d62f
+3e2fe0a8404449d2252af22ce3c7e2c0955ad99dd8972aa51b9653cd9916b206
+158f15f65d107819eced604087a46121b0a0871c8a1943a53fc85bd3495d7cc2
+fd898aeff66877db0875a1728746bc616dd33bf567f07ccc7da8da3ae5952020
+d69743e4b214cb5bfc938b31c3646d8ce2f06590fc5ed63654f09579bc1bdda0
+d14a72083d214d17008f9bc81c4b122443201f78eb1cd42de2667a5ebdacd3cd
+066e64aa777dbcbae7d6692988f929144e323bbac3bd426d141185e6d7adeb53
+2094b5f9fc91e0b00d78366fcb3a133a34fb946e65c12e95d649e4df2bc0302f
+94ce5409cb89cb2281c177c173aca86387cf823984715526a12ce1a74a294cfc
+d3ebdf6a078a6186429aec4feddba95d9cad2c8081d428411c8eb33b81520005
+bd73caa698232938b8439024991d3c5368cd9aa36860ad9c9df381e52fa1b4c5
+5ba459071d0d8fd16c97f03108d6ecdb46e214311a0abc5fbbeb38d90abf97a7
+a0665d53d8ba035d431c336532384a3693afc59a1ef2abc09192ae966c76a1f6
+af386fe13ab3298c069b8d4547c7e8076640cb5b8f632ead0d1c95776552be64
+f5138931fdd62ed26f7fc287f37e147d55bcd0a636a30b5f03d31b798f3a0755
+5bd18964f2c1df48edf12bacfb2c79de06864dc07370d9d0e063553ce7d59ffe
+75e5029578c31bcae00871d4fa633015a5969dfe4ad340ee5f7fde19fc8b3526
+5c1fcf3c14bc82820c89cfdc4f4b94c8b725b1899dc0046444d08ee38144378a
+0a83a728a961c3bcfb47aa7b16c98b5505c5c7764304dc5bac9a9e43601fed02
+d2a2f5f5061bcc01c1329ed5aa32fa5e5923696d27b470288f42a1f9f2f1ac37
+25f0c309b6b00a6e69021ad0968698d796dd8baf71e6695a039bda22594a2d9f
+557157c88441defbcfb28e8271ba349217148ef562ba975bac64e407ea4b1c81
+2aca72390bf72856e92970251971866a1e0c274d3dc07ce631fd224eaf768754
+e08a87481a5cbb0c32283045205ee5e47a3497ce36de5ae2a58885efb3e9156f
+d67da39f0c593154d64c54d23cd434604431d2cf90c092af9282669723c8c0ee
+3adaf045cbac00861eb1c4d4d11786192e927a55aed0d200e90f6f3f2588f783
+a9aca2b4b1bad9d53024fe95bf1dfe7c9a9fafaf473ea9bf6105a78dda050361
+7a2f2fa3fb92931b70d73e14f4256a7752780eec8705b0ad9dea75e9d4bd53ed
+2afe57caa6280eda99c00c0197a21567cd56927e24ad8959814fc2ffba8b94b6
+f68d0c9e2bc273032e86b155d0dedc4a8e76269aabcd860c573f09871365c322
+3c29b80a31ea4fbad0801b34b1826ca1d9a395bfee37f0a1614cc9bde1391390
+2b56a65e672bde10fb9e198897890ebc2d8cd3866d7178cfbc60fa8a58510d97
+7ba3d125f7b087d80b8f2d8b76284186258d2ce6f46858ab74a425326ae47429
+401b6be9ae560568dc8eab9e6bc5a090ec6bc272db5e4cc2b2794b515c0e1223
+ccf77e426af72141f981ff8d120ca25d77eb7f771e4e07d48f26796f750d0f53
+25abf24f63f41c4e2e3ab70d1d3ce01aca6f7ce2e68f933647cb1551177a76b9
+27cd1c5f539a39510676d4ca277f8f4c2c98169c059e430cf72f5158f30d785a
+d6f7c599cc550a6f09493608fd6a12f2e4455d16375d9df8a8fafeccf5ad17f4
+dcec5bc2e116043b72c18f3f1a60768976caafaf340a2f629ea5de9c9b5557f7
+fb50913da50b8f486b19dac6eef282acf45f81d5cd7da21b88273d8041e30e69
+bf67eb46a4e2e3b53c281aca4fb57c653e832fbf9452daf6105dc3abde925d1a
+d10553eac545be22b46485a7a7a5a2dc9c10acf4309241af9f523caa84ac7c2b
+85f75f1166da6fe28115a922c49f1d608461e5df45e01ece2e951481ba0c0cf2
+693606e7b357a5c62e12afa28e6b0c00860181fa84b01daaf866b8938aa3057e
+41464b8f2887957e2d6dbd0e19c61dec339a39c7e208ba1ccc0cd5656e40e06b
+bd8055636a5826905c999bdbc9f1e8251b5c15ce1a2f7e9d286c52455fd36762
+fa45a3dc819f4a8736e22cd0a91b6b577f2d634f238b714a3d0157e6abd59848
+2d3a5c1324c98148088ad142837e8d909e00a30de80daa146b24fbe9458254af
+76cc7f8a8902fe270cd703a8427d644c62e1da41df1fe713b23f896aafa5fcac
+d49296c5fe6c0d6a51e6d002fefc3f8b0d6a9a7448b32b0d8098e2a60cc89adc
+3b48b15ba524a4461bc7b0f1214f710b60c37a73c47b7657a9feff5f890a132a
+6eb83abc28d3816f76ae309ddce9473eaaed789b93dc45eb55968096bdbd38e4
+e539f44f4353a8a86b6844bd310c9cb6ae62f271c1ba21cf8656b6796c55cbd1
+f44d51925abbc18539ec9a8e03713a56b9808fda4c87bec11ba2f6c9cb45a7f0
+a20154f2fab0996ee76f89c52b01da8a0f33e45ebe72be4644b117d717d20950
+3b0e6271e2fcf073b660dc78c337539c94f7302c9a8bb812eb70fa85bb06f263
+64efa3ee764b2cd44cd9904b073455d972724d5547ceb0a66b262a437a282c0c
+9345484710992f590c9749a695f9955fa0a9d7d7fd4f195bac487b0a87be66be
+a2552820f479cf6514b34a6bfef396e22c16aa2589848c48daff1794f7c92d89
+20930ce4c0fe3e9eab77a53cd4a4ea5d3ef55640f5bfe45138c70f98853e0dbd
+d9c476f55dd8c2214f1da5ac2948adf6a3cce3205add721aadf6b029482c1ca4
+2126c3fb018cdec57b8d882fe2a5c23713bb3b1a076c716a49005f410a364093
+a400300548a5e3afda4977fab034f69eb2899b09fefed8289adc361f849d224a
+af7c93d4956c352247de07f3257fb438c79bf614630db12f0b5455ea56baeb20
+a63b4b32e37e2d399d8d0b48c4f1a66b9f04a6e8b085faa5a05fe029124ff150
+4bfb643a7045618dad701f3ddbfd4cbfce8e5c072e25b19d85e7b9a915d3935b
+e91866ce1ba86787c0815bd0e02897cf0d10877bd42ff19ca16fa3895311c60d
+82d559489ae0648fdb6818114e4be8ed91a2b9f1f216c5588f1631b50ed8492c
+d3ff862605b52641268a3c592c4e1f34d30c52018f7598ef3164a84883924358
+3863e566947b302b51b783dffa47f27afaa0eb201dfa9af4d63effa4108a171f
+3c9aaffab7e9387e4b06840bcd1e4816080cc6f9ddcfde1009b9acea6e6c1695
+ce4c357af5c3b94212010bf0274e04aceea9b4b1a8c60b711b3f6a8c2839ded6
+1b6995867834df0afa49d106da2305a25fbcfcb8efeff5b614fba14014623cc6
+2c69ed71bd85f4ffd82e940e8a72c628a728932d200b353896ef31310ce611e0
+f29e85c012d35b1619223019b71da76961202542081700d7aaa434e10e3e7abc
+96965e4b920358508bc5a61353b64133361b2a69cbbbd8da6db8ac6c20ea4dca
+32a52b2931237f868536e8e50bd30df2fe410a6692080e305eb47a6c10e8d2cc
+1401b6b1325ccfb249c2524b1bc90b0be41ebf075a8819ba4b759d344e49fc5f
+dc30042548436bfa9a26fb2000d113536164d672fba795cdbf3592f0ade19543
+b4de5d8b28cd9f706d104d571bf34b0da24e29addbcb2dba57a105deb061a32b
+e71159468bb09153e908a5ebc7ad16a8bc73867a02a1319e8be9b66cab7f3f78
+08eb5da4bcd5e25907ccaf61f439800040f3a3444ce8ce0eed894ff5d7892d67
+a5a6327029dd603b6bac2bdcdfbf6f7fda80793e93e732c49ce828bb3e73407e
+4a1970637c4317d716b53f98d4a2ed1a7fa86e64641a7be807a426e0e69b1816
+1ff8d53d64ff5c970cc173c0ad76f1a8255bebc582a61511492713f2d404d6d3
+6e12d934c248fcb2c73634f2f7111a5040531e069451089f800cb46f1908434e
+d15763543cfd997e5b9004256e649162af3405cb8310c9ebf6abcc5e4da7dd09
+addb5e7627c4fbd472e7715260650078076972444a488b8dbc34507d71cc6fb4
+f42a548a74c510f34001fa243e69de18199e0100fbac2e5d05fe8e2fa3ad7d5b
+5d317d52ef18f4e83c8e71ef19d08b8dfe604c5a93a62237a611d6241911633b
+0da7a3f433b9f11c3d734360539a7854a44edcf149812c845d7cc648a24f796f
+4c1514a27f897e31d643cc2db30855396c21f171898126328e8036cfcf564e7d
+fd8939994b1b8622226177ffb975f87c3c19d9d8f43d035f610e9b226e1f692d
+02ba7592ba4c67672d5d574da08bacf94545eb86bcc63095f4be482009515560
+1d7174acbc2940c20f6f7203b3e6fa244282f0629c29447d7104671af36c8a37
+a53731709f9906a829d8c4f52e110140db0f29083095621dfd26779847c46809
+c82738dd513813424103bae85f2702b4f2b3fdf084473f17ee6d9a2c605d3118
+d0c61b70b332fa8bd859d0b72536bc77c4f16b47f91905f0a3aac0db5582f927
+60f7d03c8d78e984cff533d6ba19d6d5eefe40356b0766085fe6fb56f969d28a
+4a4a9f8af8a7c891eb8755c85435aa443c181a320ed4a5e887bfd7ba79a32826
+380d29c022740a6048284fddaf1f95b065cd822322765123d072703ae5c350f0
+874e19853d4081c1d69db032277dafd03ada17f304cbe907fc5f83770b4d0b26
+c3e4f9bc6b432d22d3a6ebae439e3ac31871222a348a71e817d81d22d98e462f
+e73b3581ba7e07f331dbed380c70cf06b9affb87aefc5e6c9ad3457ba7259819
+94316b10ef3f9b223520f436eaa23e50285e0c05fb3c6657f66f09573dcf10b8
+24952fb6575a6ae7e669ef339abc446b076a6f91cb06ff80136e0e6760112de8
+83de6b296d4c7e4f153ea4d21863dd6bbf5b9e944d363515fae9234d07abb2bb
+0b42bd262d7de701ac10807455c46cee12d733e4e7c4caaec1f9dc1367c27562
+8382288dd01548d882aee32c5f7c194a3a25d4e5a8e0f918d32d760b43b8b927
+126704ac9bffc17d1f2504db3783f1372cd0f25b16332f68767a1cbe990db124
+a85dcfa4259b180753831608a86112a342cc98eb5e388c13cec21debcfc55216
+377f28e9dfbcb51c6c43d76431ed844bd5b67b73f5630e9ae0bac1775e1b92d8
+018d9d038afb67ed0a62d18eee55d6bbf78b8c6908bd859a65488174c2aa57da
+a5e82dab5bf270328b95bc0d9bd388c56b217e17e81960ba4bd36bc042ca2296
+0595097ebf905118d1956eb5b6276a28f27a64b93f0a29cca6b5deb4bc4b59f8
+767849a850a2910d594daa5b6fa9cdfcdcf3fe0778f99a1215453ba4501e2cf8
+cae4325508381652f3c0858b0f53b2cbce1f64d4662abe49d4380dd63f4098e5
+61e9818e2ccf9ed08446790e5224f4bb027f31917a939a644be3c35c254ebce9
+423686e32cf331f42be89c5504dfb63801aee3d0f518d645abb9d1cd807978d5
+e9e144c4f0cbcee70600baf9d3332de6720472678ea82f57b0d3cdfbcf8bf758
+bb71f9ef3978d0bd35107589ef7a13ce005a4fb37604f4c56db3811672555836
+cda0990d95314d325299b5071afe452788c695230d944c4f567f9d3de23842a7
+70d0be86cf407c611546c2f9a47304078678c4caf4f71152750b670cfa155b96
+0358161937f8cb529d70aa00db6f775100ad12da73e460d8af4e14d6daa2348f
+7a3e46f4e02be8773f581fe1da70fd6f30c35e12ca18859a836be7db6fdecc43
+b406f2063a7a23e461d5c8157ade17ebe6f3f3cc131e8df36fd1c6c6188744be
+15c30f71b4bffffc882f119754da82462e7a61d8cc2d23ab447c1c30ec841d53
+f3eaef19012a3c3f7bea5262475043640f1b069987096626d5274d7366fcf54b
+c022967ccdbf0bbb6c6631ca4251e24eed98ebffccc5e3fd742f4d94cbf3d5c6
+3b84d79d869461fbceea63489f011c38bae3ffdfdf1ffdb50e260c3f6d9d47ae
+928d0f619e2532fdb10fbd29be298482e51454be9920cb3b806f404535f32290
+3c2eab876d3df9da88d6444d3049f01eaa204152fe01cfcb0a793dadee54ee33
+b4cdf7d644d2ba56e7d03fa60c1e64cd53b66fc7ed913b39afbb46d871aa5606
+5b546651b9a19a2753c40296ea8dc7b45b0940d8960367ef73425dc4cf78bb89
+ff1ef81e1ae33d08884fadaf2c2bd29868537c88eb7fd577a24ee612ec65d823
+8e058121fae1f1cb4eb1654a89674459d014a0e7b7ce8d5cbbc7891696a52852
+01c337be0c0ad49d982d7e33d5435c4add97d4a249b5f9caf056b5763ddc41ba
+2a1e5ce099a66f8749c4acf811eef877170d61c2cf0b8db8167e6362464e33e9
+54c5a2ea3c550ddb6c8b9b9a8f2379c6cb22f561bcda479d73acba8b359bb765
+7e6fdbae803024d59eed12bf342546388b5d4967fdd52f5fdcd4c6d2bbd40394
+42376df5a0da242e5bbe671fde138acba0bd04e8392b875656a10ce5177eaa2f
+95b71047d592f1764d476b33614f4c8a5474acbfcf4414724d95dfdf2a4e3a3d
+d83d015d401f050613b616c4d75b3fe7d5df3ada4ef7baf51a97cc262e5d5e35
+979ec4d4b6502ea7eef29ac0019946ceea23ea0f1142cf6f217fb9d630c3bd53
+567c20e7a45bdbf2bbcf52547ddd08a7573050b31f399bd75f3616cd91edd376
+45c9d6010dc4c488807454a4b16fda7e1460d86a9362a83ce261b8b21ab1fc63
+05d468b1215cb879a22b1dff06da089a29858c612fad8d1f6b8f3821cc4f09f0
+258de621040e38eebfdfeb016fe9da34ad4031bdd07b349edd8e45c219993667
+e3250651b8011a404c9c6833bfc1fcab335b1210c169b2ec5a7e6d0b9c185d97
+53544dfa6b3e8a650046fcb168f90d83b4e878cf8900288316c5d15e845fa787
+771b4c5a41f17f69cd9013516c4ba995aadbb9ddefbfab0098f8e716e895d994
+80abf9fdb8fb1f85d0d2e9ee15818260b0ddaba169348ca64e1add334816d534
+5fd49eb688ddc8613da4cc64fb5e0a4807cbd3b8ee873c46cf377b5b0a223c81
+3a8b0169fd0f58d4339f5533fa7ba19bc423c5bd13f8550e94438c0b9c6fea72
+707b102825cd08c1cb830c38e0ebbe0dca4d310beedf92b578ae6478156c0d31
+a9065326e3bcc641a58065e30fb917391cd55a9ffbf0c0cdfba984f6c59b8358
+7b9bea11d29fcff8ed4ef96a877ef1946464495368a0d45ee3732a10e512ff8d
+486b593e9a6acd388829af8239ed13f8b4fe846f86644d23fa26a7cee073a2ef
+449b4e3deffa2bf5ca430218926823958d88d1e9057329dbcb27262b4a8964b1
+08ac25186a2abc29fedec3b30bdbcb44354d77ac656c61a3c3818338f473fefe
+b241bc75e686c376b85ad348c7ec9d16dd520eccd248eec4b5980fce1910a2f1
+049086de426c6133cdaf6f6fb861bd6fd7212f27c872cc39fbe88c9acbb06a1a
+491bd8a30b2106d46841c378e74cc3cb29ed60775ff9fca456fc8691dd538dba
+1fe34123954d13427799c792a857c48338736764074e442366532afc95d9b12c
+9e32ae92f6f4b056da2dc651e3be8726073c0dc34b281ac315596ce1c91b645e
+883430a97290eef1b9f7778829180a2cfcdbfb474714b128fead9ffc5ab94add
+c4430e4dac90d01a5b685f54d18d5f6cd101286d91392c1bb0be70a0c1c46da3
+46b18f775beb6feac8d518484bc230ae3bd37f58e514b6607a33cdbe07df7447
+295d027923dd30f4a6117f9ad519c5e736a412466cb7106438c7d2a4530680d6
+ead3a06fa15c73fab6b6b7d6905e32a2981ebcf4dc7e0d855275da7289c67609
+83251821b924563277e89935a8854c80f8b5618ccbf2ac1f60fbdac38f386283
+ef20c2b1dbc84b187dd0426694cd8de175dbb0df600eecf13b32dd075650054c
+69aabb56cf6a7fdfa0e750ca3d3401de514db1a8081f7c5c1547b95f4f481c84
+4e57afe5a21897d71e56487c7be51ea1a9296d5d593505d59de0b5b5ea59c80e
+cccefeb5a5d4df03156161b537e5931437fccdb77f24659126a0724327ba6396
+6f78abf104c52186918fccf3fbd1e494a4e0023d52b1424320c2afdd08eb719a
+6cde373aba3d3ba15f1061623a3b36b7aebb24170083bdeec1bc9de4a59a6387
+bbcaebc8323406d1f3e1d5ff6d6cb8a6019a4a804054468ebc241ba10665dcf8
+d4834fd87cf94267eef4507800898a26c38c4f4281c0ada706c33b88d56b2490
+28dc3c913bd5f01c9af341f0b8b40f5b9c13254c958cfe94090aa8b93ae05214
+2c4511fea0ef26252a182a3bde392af5a4abae5bc7112afc6503d32bb4f2da0b
+565d1f1edf0ddaba10542a90de4a6431bf8f035f97e44dfd03ba8857ab8edab2
+2e48d3590915304af1588dabe85477c280b31436ed01bd5204afcc3ce56c76cf
+476fdf14dcc80b900baf1cb6c37221ba642632900f2d724ac3f0832625ab2d35
+70d0637ccb15a11d0d91f8ea2a7af67c6f84c779491e2c311e24631cdbd180eb
+52c1a713ed84fed2fe765f0a704792a9215b2dcf60ff5853a40ad37ee22c475e
+29d664ca5b1ffae6deaae153f570100e0a8cb9438586ecbe2c1b4f57dede0e0d
+78b591ffb71b901d744fe9d21050a8b29b7f7ac589c31194b7b395c8bd3542fd
+e83c41b91b0124cc43360c9deb30adbe2bb8f5083ecb113a9181496c2312c44b
+d14c4e7c116eb613842261bd903c34902d8ac733b3b31ae0dc07d98fae9a0a1b
+3a9ff9aa491a76e3f721e9b7077973467b3d37cfca6130a3e2d80eda0e720d58
+23a6f7c2673e31f10db495dd14795d231289417aadde677f5292a653fcac18aa
+1f27bd0977245933e19c9c107b4552efd09fb5c6821160c32b6623f942c2b7a8
+cfccb5a222939778d3f58ac2bb2ae7039c06d0a19d57886d106d46c2fce50482
+7ce644a47a8a7fe867a9996344624b023010cb37a76ffb5ea21bc3630a3ed0e9
+796d0f6ed8c9ec40baf4a55dee1cb795592c7c0f0154d963d558e58bec9c4fb3
+560ae430c857dfef73fc715e742bec348d1cccefab5f5ea1d1b817a17ab1883d
+13d5fd537c66317306104a47a9f83e8e238f434e859eec7fb5069254fe6bd3f5
+868cf454802d5e4fcfecbd11e2c5baef724c7e5932eed68da915b2004ae2c35a
+3cfc8f7a47ec4ca481b8a640a826602f04b8ad23df0f74b461760f4c10556ee1
+23ecf47905194ecfb813b91b80ff6ec8ce4496e74e924d95475d707646790ca6
+35193a46a0270fc0a689dbebaa9f076082fb276516eaab277a15db914bc29648
+dac2f3db278b22f92cbdef648e6700dcb4a506335ab4010bc8ede001df5b6313
+ae5a2d90d8d8fa458944df52a4eacaf24dcd367548521d28fcd5d2587b9be76b
+24eac1ba239663328a1a5cf832c606f64be9413f7b8462bccf33328bae9a47b4
+9382223ee1a4b56b949d45e397d13b9172bfcc45b671ee45c2c015c150af748a
+6bb050c46b70463cdea85b0b06f846d2f8bda2e405ed8402e0804442b1e31a63
+053353889b619a8edc93fa626ca7eecb99266c42c0b28352c4ea10bfdf0e5872
+27a3870722330aab64a86a56b41cadecaa3ad1f8cf7f9f691d3f6af5359b818b
+bcf72f13b53421c804de88a5b183581ae8022559069c5e9c6ce12a2caa125c8a
+b1504e7bcb962db73ae2f004cebfda02e49a1b2a5aab04ab51b175dcd2e182ea
+cee1515d2d1ae203cf60259ed31b482abae23f793ca9133d0c5ee437cff5c5da
+8ede3ea19d8e8c42228fe881c05f06d08ee8fc33aee6a47625493cd36dadede1
+44a4a25e08bcac0dd67f5f6c3120f5fc52912a5a1467ea923291f6f598617808
+f327b835d66e6d0d210052570428c143dbc4ea0f689dae9945be7957111e5852
+3b1dd4e79dc24c43c05a502de3f568e3de1b27601aea4c821a21413bc70569cf
+ec1116a60250114157bdd5823947d83acb2e3e72578a9e944836f85d07fae226
+f9a59a88e27030d50a2f5790967e37be6c39e31f5823a04954143de69f757e64
+07a7afc330504a93bc83d6e54d0527fb2e4bf5819c12b9eee1783bcaad2d4e1b
+7525e58594e4fc846d35503e13f5d69594564df5bf468b7e71911b5ef7a17531
+8b6c5add2cf00d6162a7cfba5c61730c5c6b00f67c1970d6c14f12ebfe842d32
+b148d39e06fc176c4fd21ae44f2aeea1f6e06c0a9d8c06c1dfa627a24bd35ba7
+b68bbeddb25b0014eea33b045a0b85bef344248835b892b25fef5314c790f85c
+db7071ad16dec6eea478b74ae0e90a623eadb709c554296b81d0b0bce579bbe4
+1dc930eda03b24a64a6ff39c4408e804b1bfae1d3d1a2b9fa4dab5976c02a9ed
+6d434efc4798dc9f58f91017dbbac2e254c41c677dceec9ab02def2817f97402
+e39fae235b6a4b61b7c27a3b369fe087c36b61ec7a01ef6454b369cd0dd96d18
+7b5d64ffb977281324649a2709c4d2bc093df009513ca6e4359ba3b9f4650d1d
+7286c472081af8b974740027d934052924347b472cf695013f42f69a20ae5c81
+d7aaee502029438ac138db516e74c054ec5130b11e68f194dd93691868b0824d
+60fa596b1974e58658bd0adac431fe4b343772e22e150f7ff74383d1ce63939e
+3ceb4e09bb0375baa54d06ec53413caa0506710767960cc95d8476a21dfc5dcc
+90e2269bc7f75bcd911ca4c7e399f0824a12187e22681dc9285ec31106716cce
+5a7238966c85589a5e2bfffbe776b8bf8d95531ec492e1da9f70214bf44f71ba
+6bc5334107696bb9debea580485b72a745975c053ef7553eb7b4486c79d80aab
+6cf65f2c72772414b95ffef4685af457a1ff0adf1f684531ae6c4e763cfbb287
+da25a36449cadf682ff07ead8a89245b36ce17541b5f21a760c4410850376f7e
+8fa1478a156759c6b44e66a1c00ac72ef2642765e65f2ec1efbf298ccb0d5ddf
+dfed21fa88a071c2c34a77d3c3fadefce47d3661c8e8b36c3beba8e496732cdc
+3dcd7b9d0cfa758507f4999d5f2fdfeb274db8cfc8ff23a0f3cbb89502c95c7d
+ff5065d3b215c88a3963e983dd0e41706a5b67f1c656893ac25004749e7592d3
+922927f98b13ace09153018d3dffdd209d0eecbaf67c4bb720e6a6412cc9933b
+b902115e63504c5ddb584e9ee5497a3ef0cd4fd95c0397581f39e92308e906e9
+93161c67b29123511a33e958632e76dd2a808f79caf9450dac18965315455327
+d458a7d2ff613e63c307d20381fc268a77f2e8501b226f6e6d9da070af3d14df
+326d92ac549784f644dfa5b0672fde377805fe258bc893d9a5a7b37b7f06b65a
+f73d6510654f5f986bf375dce3860e853ce5263ab132ef586be47a041bd39f21
+0d40d1e885cb9e044b40e45b4892bd1ae35656bf9baee3453c425e7f9c5cdfe0
+2db8f7deee57a6cdd5df3d294e5051be2f4079c250b80d6565a840bfda00b823
+f2137f488dcabcbaa8b6cbd7297bb8bc16c32533f565bdcc397a85f3707c4ff1
+65f3b18c7b5ef03b418367f723f8376a37c63138d8e87efe980cd542dc5c33b7
+ae3a38330ec1cc64929766e53bcc79a95164de800c387c683a33853447f84a19
+e14774d0cbde687c10934bd52db50d03e567676ecfbb0aa3d2d79866a1aeb713
+f3a81aae61729d045d8aeebf59c3813965f78954c1af28a4a91c753397696016
+40f4d76ae81c7b416249d7d4193bcbad0ca072ed9ac6d91ea3cb1b2030a5c09b
+9b33b0879f30a773ae3ca3757bbfabc7b47718b9750f5a36c63a1690b2a6892e
+71888bc1b63b81befb963dd91fee5d59e1d61d318994e8d0b8427956454e7edd
+9b6a7cf240b3dcb45e07969b1625ce5b7f714f008839e9ad37986cd8c81e4e13
+3036f4f975c14308c4f72322536c07d654ae1037a2e353360a680baed67bafa8
+02cb5c50918961e9a6adaa153ff2379ee8497f6e9442193303fe6b8f8db5b333
+b6ae4924d2e34ca404b4ad4f5b97932aec84625a7b4cc44b7ed081d464fd09e5
+c4255564e6127b1220a50ff5c0ba5be3b43df2b04eddc5d75c9303c933bd8a95
+cf183ac9daf98d0a7e767254
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMBX10
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 169 /Phi put
+dup 170 /Psi put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 188 /germandbls put
+dup 190 /oe put
+dup 193 /OE put
+dup 195 /suppress put
+dup 39 /quoteright put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 88 /X put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+/UniqueXX 5000768 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306462c563d51ece66fcc9c831843ecae
+1fefc1a232e2724f7baee428ae03aadb95c3035345c15e9922fe49e1f2cfc980
+237316572dbc57064edac9b0db8913a5e2d45e97e19a91435ccf8adfc835b585
+48e74b291446d689c7f2f8c4325e8356e974ae30c3e2977477baeaa33d141fb7
+80f59351e84bfc88c87b3a4a1d25e168b9d134554f6a581378c7d2d6eca8ac09
+045cc3a5e0ed86f147133f094029e3483bebc81cfde69942cf645ea20d0a2b64
+5140ccc2f9cb4a3d969f4b0a79cd3329b440dfcff5285494406f3dd08d804c86
+df191e57232f6f1f83df6430f214e03fa5412b1e13d83c60c52a698bc9a38159
+19a64162af7b83a9468fae9507c6cb55ea80df8c696dfbc3296c663902d77e89
+a181502627281181ac8624f65be9de5fb32f056cc7dd7cbc7366a91717b5892a
+34ef6b441871c6993da3a81afc9bf70ff3842a21a29c0e49da1ccba37dd6b920
+2702db510b8b1109acf4c27ee8d676bdbd16abe189f34a9b61532eb777457698
+cee0561838eaab2d3939c5093afbb215bac433d1918c739b62566906bb2187f3
+378521fb52e70c18886e1aa15f53a1f8a169528cf2ddd54c203613ff88e619f2
+6c9c50c2c3b8b8c868a88afab1dc8472e7b6f3f992a161723a3c0904865a7c42
+3281601eee91f35222c4a71f343739f102eb43145a47e4fac3bd666e4c114a90
+5950618ecb1bdc29f90f6ebed1d8325fe6b52e14a8870e9b4bb088e585c71b91
+493c12845a101937e3473ac5e9ae24f7c358f06d590d7618e1a1d5834d87621f
+e3f5432b655eebd4ca61a7b00dde0aa740796ce88a43d1c6952f8d2ca63d30b6
+dcbadbb0dadf13150a442714675dbe51ff838f2e47ebe8cd44f1eac6ae5b6ceb
+0b07af03f5d3896ff935a198aa635e337e367e1e128d15e31afe3ffca8245e41
+a3e17011340e49d52fa1e322b435b4f7f2f49ae01f6a319f68d3d786c24be810
+1e1c975a8feb5dd7e4922e00e3a08cacae5a945e1e8f8a20f1fe9534153307aa
+5ac7424759743e08af90b9bcca7447375222a66e2edd1bfd423b1bc50ba0e544
+68ef45c89036a20c01e4a5f27f9fe3e02cab3033c6d87574bab265c69d05af1d
+48b6ada1cd04622b62b82d646cfeeea510fffe46b3992356b9a78216dceda375
+1e3f6670d9ae871731741105c99a03b430ef00e0b34f4fdcae50d7c66f358215
+ed65d1e1de5e9285ee08f55dde7ef0caa04c7fc0ec30277726f6b0b135c2fbc0
+93f5fc2074d4abcadc529a4f94a219c72225fa73a704b1f6179f9e53dc9b70fa
+38ee124f63da20842ad6a82d0a1d6ddce02dcebce2997972483aeb602ffce6a8
+f99f8544aaeb0a266b06263237397fc1ee308a885bc587326d84076bd9bae62b
+4b8cdb039c9eed92f48f8f6fac48efcf82de2d5748268682c89ee036396d83c1
+8f629b101ac250f708fb060a2ad9bb5b9dbd2dc19136341803d519ba27519029
+13669f0b2c6ef7effba5d2b36801b4fba8947d19cb60d2e7e1e46eb10e850f7e
+79b840190f11ad5c9aa04d89fceb76498e346de148496fb271183fe918008e89
+90705950b3cd1f003b36f574f3aa626a6144443b4c1960130618e95d7d2f6b17
+2428c0f11ad91f08aa157f430a7f252fcb0fd513deff24efe5c7ddde74783268
+bc56295d39e6f453a90d89f0520562aacf0eab4bb981919b0a51aac93460a990
+8572968c2409eeaa3109b5354dc089cd3e9d31a9fcf2b00ca134ccc350757b94
+c2f477cfdc3fab4cfd3dddee9bbba6bcc745d8ebd676e5b58106ba273312c34c
+ff2e933ff66cdac2bf359c92af02467f12bb61b832df4562ca2a599f318e7260
+db52dafcbc7425b511cb06ca5fc16526519ab666564eb548ba0e98fe4b940e8a
+e0c7573b605f9fe378b1d0f75998b10a6907636e2b8d1a85b4c4b4b7c3c808b9
+a0d394deb8de95405eccd3a0a341ed546bd303439c87fd6ab8a9e616ac56cfda
+965a749853641357dcbd101a0a4e5fc7b85c89bae275a114845780f572f44568
+38008ef4122a25c8762eb23f6f7b187e5758f03f491491c1d7af87b8e9e5f79f
+e156c211331156b345cac47df8e2e31051460b853455e1cec72900e975fda503
+024871132e31a0b0d645091505b81eb3cb21454dbc18055a1fc099262e8d5cfa
+963360ff896f615242071c250578e363007fb2128ccb83cb7a82344f0231a3f7
+170e1bcb516586160b864f4a31abad57740aaed9833ef053935003c69c8d8410
+7a04c6801a72e46589a28bfe9420cd193c3daed6853c3b35b7af47ae80479837
+045fc17fed69932b6545fa59185a4bb9d6ea2816d69d6fc91e7b41f58ae090c0
+d92b3912319f368bd2167540597ad3cb6c0cc3baf9f5362d42d52c56eddce7d9
+1533c124a9e6d52e4d122a3d5972aacf90899ed3add178b58a5320864ea84119
+dcecd7d19348d598536c95f1b23d0a6501f5a75426742a23f16bc9e9dec709ed
+d7d7fbe6b7dcada1d504ee78be14b246a2959bd01a2ba8161a6784bfb23d48af
+d8680cb2fed16693bdbbf8d083af733afc9c65bc5bfd07f99c8888aebb25b7f2
+ad5da30ecbdb8f18719ef417ba061944c4dc8f7dc87cd9088e89366a8f200583
+f29434ed0411c1417c716bf9eba04d8860df4e8065938651744d5422d399cc47
+bb24acdbdb58e7bea4368ff3a632763c2d6f08df47e7cf4b2ee709a4bb99ffc7
+8ab176e716a84d613433b16809e323edb4f4d9618d8b41e26d7992485109e82f
+c74dcf90ac6bcf6d468685029b246895105c6267439f7a3b8711b49fd737f958
+eef81470f34553ada7ce4722e56dbc0d5e32a5e29c1fdb3cd002beb0e0bf0b8c
+7a18730c672471efcaa8f6c6a7c1c8aa1602393b9d466e29dd393263359a5a29
+8d90474312a5b3438b6b9d378852199336ba6247034bde4bdeb0bb67377c060e
+149788d0474bcf1993d554678d60ab5b0ad481ac1aae0e07746add67e7afe276
+791721f18b5af6d263aef0df6bc066e4767fe0d5a4526c4c7a90484594aea388
+225cd0b4c42a7589ac2e75d55bb50f75fa836b606cc1b2b14023fba09eeccd02
+3ae76d477d564e8b731e609d634a9bd8dfe110969aa25392cb283fbf992b355c
+d4411b816a7f47488439bb0cc0c2ab15b7c4272e0c181d6d6bf0638a0514bbe6
+d8313857caff85e3b62b98cfe0a496e8d6af823f7077aee50f95fe44226a4a4e
+354b856731d2b9ebbd0fc6eb0d7f45dbc695a46c7905c50cca139514b283d7fa
+25f1572b43f357b40d050a6d7bd693d0385c0d6491b7388f8d464f32744878db
+fd18933a2c0a01e2bbe505fad29c5181f4977b8aaf1c101b1500bf982b529683
+2246ec71e08b3031b8c9bfb4fd26225265a8728634e7dee39c0ddd17aa751cd8
+b3ad091409732dbbb8051a10b3572aa95699dad3c4d19f6742c8eec87bfdc001
+9345844ba6b172f67a884717a70322a7cd4c53e3997183b8a8965479265a59c4
+b645998c7aacba37d9681ff018615d53708c25d5e0bf95daad10df510ee3271e
+fdac5cc844ba31392afc966c94f58d9e230e5374106c36db9fe938e183f126ec
+258fa6d7fbfa3ef77856dee9dd00d7f854d5b321c3d385b26cb17c9d7c53cc99
+0d1b55b732084fab244b197d018d48239506cdd40fa824a451c79ad85cde0339
+0ec3f787deb8659b99ad18aeed1d123870a06682d928401059a511c38c7ee783
+0f7ebd2d2c5ae4351c38138526b63d7884e98e44ab7de336e279d26952b05f19
+9ac8f40d0afae20eadef61d4c71b3dbbce15050c5d156bf81aaacce6d5ffda8d
+132310f0c7aff5fb35be2f6052ba92219d80813d5de7cef0ed3d1f8c38c36d31
+13807454420d9e8bfc3471b55a421a80d997c76a9dbb4dc1ecc9b42f63aa55be
+8684e29fe9176feeb1067c854dcdcf7003bcdfac4c7e92660e01b57554c3e9f4
+f33769037e0ee46892909a8a1601c55687b37bacc062274268388e6b6f1a57df
+318100b8a07fb8c3162aa07f33d677e70e8f90a90d9618a76e52ce49127660a8
+c0db6adf8b1eaf1f8c11aa5b28cd91b94df9e398017b3c00dfd04012a3373bea
+f523213b9b77abb8c03cdf747c338bcc4fcdf97d82bd4b7617e371a6b686fda3
+9d1f9f0d185dc7766c47287dab5291878699d1eb7ca23249ac27bee78eff4b14
+5652167db4add10667f0c7e4146282553219db07937b7761e84fc7ccb8056580
+5d5210a82c9efdb51f777cf1bb909dd7b88234b0759b7987f9a9e25698408f52
+5ac12dd0cdc8196f05348d0381e04c114777b87f9236ed11c143eb7056015de7
+eb082c83b960b64008378c2fc0c7f31b6bb0effbe9e47d41a3035af2289dd8fb
+d10ad03b6f523b60a456b52cbab73d8f3d428413b2bc0f977dbce6c6958c2087
+ee3c53d2d9a9ed9f096e70c944612742521dc9dc9db9fc1bf986afb065f73f14
+aeaabe7376c9f175fc297ba5b626000a2cb6eb23f0e3925573c14ab3768042fa
+db3baa0acbce8ea6af698096847e97cb48472e3a71b91a58cf367f94ce3097db
+14aa8fe3a464d008dd939eb77d90a16af90c359c41a29f65852164ced3e5e9b2
+c2c00be30f6c3353e6bf458484115519ba5df85208a447fff7e828d3314ba18f
+771d57f95b5133330d5035bbaa179ebbc7d1a43f8ec110065e2b179ee2a62b52
+722b095ebf79b2ec20525d70947599cebc0d53f193f08daae6e8527c6fc012bd
+b4b45234bb801f8f91bbe5bbadc09ff309551dac8328c28288f093a277e8b9b6
+9edcaea0e277733100cafc7a8fec50fbc0f4333a7e1afb2f063303a40217b38a
+94a63051e235f566936406243c953fa799c971c8650cc628e249b00cab5d2c4b
+baf9ce8bc646f1717f1a7897fffd41e04596f39ddf2c5934d54f9903a79bdb2c
+17673733f5b236a6dd557534d8013e2c133533e756b2f8cf1a237490d82d4273
+90746172d48e79cca60cc958f111de80f5153d6af79e6eab718d72f374539b5d
+49a70932150f73224d73b2ca37065621f75d1de20732b874b4fc1c5f46ccc18e
+485fa827dd503452adcfb271eadd64927d58399ad12686d44fc5ec0b0159f568
+816eb9c34159e5d0a5182ea31e66b5d799b61440bcfaad11a84896d678ed612a
+db8b832e2297d8707ce599a4f5ab8657abcf1873e1675224a81e86569e467212
+7bfb787cc0db65a23a3423e1ffcddf2836104712d62912cf2926ac532a18705d
+514aa2d74368ab3fcea27608bcb01f727bfa89e59a96784aef6bf6074b145238
+e40029d1a3caa45bca3376c58a787f655827789ae8ed2572e1aaaf023b39acdc
+1fccf7e9a3ed5344b257bc0c18dd294d9847c48a40df2840e38ab7a4cd3a4515
+95f84200466b51e3fe77be40590e23bf1c8ffb1627a02be97ee053c536e9d387
+eb9eb681a0ef401ebe53aaae5f690c708c397a489d9eed5f8515ae69a3e94c5f
+f4e7a74207aaf7e561f9218159b2944465e5ddb9f9dffd98b9c24e6daabbb10e
+b5622edcddb6e2a80e49e7ea5daf2ddfd4777ffe3aff0e14e0d07fa6704f0379
+a30a899bf4f1e612f94c9ef7f903be2c7f625209db291b7c18fd22cb5271caa3
+a5576042307e76c15588ac07cea95c6ca480b798568f77273ea8b77978b1a2c1
+322c1ef7d4244aa50f076d1e2c38241c7a15bf52ee66f4a0892624026dabe072
+d06fde627771aaecbf5a79834fca316fd5589da05115df031622d7a07c776334
+12a2ecb5cd3bf795764e14a1c7f2b9154fecc1373851bca5049dffc449a2ada7
+6cc02da8b2341d91d1352afcdbf8bbaff9a749ce39227ddb7c685926478c24e5
+0bf0d545249fb6411cd60b9e0f872d5d28532bed5c792ce35b170bb33cfed2c2
+612ad112a305c7d4668e1689ad6ef734a91e29c3b335da6755009ec423fff466
+126af5e0e1630ad91017fe1beb1a701c3a26ff1cb878727a16566d25d14c927e
+4581b258e0576f490b58249463a4a239c5f042bbb75ce4de4a1b98af03d06e79
+6648126eafb6b651fa44226250d57d081495ccd1f3c2d3fdafa1d09b05baa44b
+2555ade6565a220eeb39ba24edfe75cbae48d12f541db55dd4a66fb97d22ab2c
+9f67b03c27333bce83bc2f99d48f844781fd409afdf2c3f71532367fd5b68c6f
+947fa1a68e951e0b6be528112ab938fa5cdc55bd351237e0600a7dfdf7b899f8
+fad7c0e72bc3de2542164cb803e8e8c5b31edc4d58c8dcb50f193d5e3ee21b89
+0ad90e7f233751320a188086376b10159c25bcba136b874f782ea081e1562b97
+865b88497e314e0429aece9b1f4ed2bfec95f667f3194ad79da5f064ed92b015
+03402f9303ac386cc8fb94626ac62f2e6499c4844a0799b943de5c0107fabb90
+606fa3a41561f334ca35b8619c041165bf06bddf3ed414f1b50b742ab03021ed
+a8d8ec30ecae91795bd641ee3399b758895af89d3ee55742648b70cf56417fdd
+e073fa7955dc43961a02d5b35c2a18b7a2220d4e1c0ecf76a8be86c08f5f7766
+60e9a1099524f30ad7a9cde3ee04374e5ff609d8cc447ba2bca1803f74072511
+4220389840bfd9cf17f58c23f0b3fb2cf1f3f3a7cc97ea317c5d2e79b40d3a86
+1d0a22503db75c99a55d4e3e65d9a7fc2b64e050825e52411268776a87176094
+3958a574d702e434f8228b9043f2d5da380f4c17f8bfdc1ea58e73b2445f5dec
+1d8b9e18e19c993642cce3fdd6aceb7e8881bbce38019f6876024e519fe90d35
+4ebfb1cbee643dc62f53e98c5f04733224aad5c3b94c2395833941d5931656b8
+179aa429feaf22ebae693a4c57fc6c2c4249c59a9385c504ac297f6fb17a9d55
+495f212162dc7df6431a6467bb67685bb09545a20cbe7516a906019f8f03b3ce
+453af20a2c9086e51ff77d78749b99b7535cf021710018da1f07c38633073922
+27489ca92c52d63862e2f2e4105b642796b98a73afe3992573716a2883c21890
+dd46f3c75f7042c4226d26421279dc02d54f6535689aab4d15acd0f8dd57ecdf
+d6586fc836e5f4472f421ab6d639fe051a559afcc260e0bae9936c8e636bdc8d
+e4cd804e49474e3789ac877f7602e29113067ac67e2ba0dcafcbab5071e215ee
+a7f496a6cac792ec59f7342aac1746cf5cddd5e05ec0c5a1e5770c827444aabf
+90a0a8d358e8db5e80ae3ab52e4aae1753dd21de369e97ddb5309d6a1f32c9ce
+61f1a2d99604efaa465fa6903506ddd6cdc8e25bb7f04f60ebf669cc97e21509
+9b212e246a9547f7ba3d15072f5c453124c0f33b0b9e0e0f9f14ec8769170fd4
+4c485158f671b1337ac5443819c91bad547d56fa68619885e83e6cfc2db9a232
+5cedee73928fa6992b3264d53f7a81ff2707353d2d6203c354a451f31a7c1139
+7965ae1544db3dbeb65a3f9e7f9211c5ffd299d138dd8ca75231bd38d6b170f7
+29d97a52d6f4813bb98ef182f9799c0414f9243740a1250fb9698ef9cb56d731
+ed98ccbf618c810918e900eb0521b7d8e4a63ce29ec922c24812eaa129d6c9f8
+ca586a38e836bea36abe6c7bb9a7bb4b65ae376f331cc1208689a522f956a860
+f5f7f70d4cfe71c969ce1dcaca7188ee4f955c016a843517d8d062d225c8ce33
+a43f522bd26daf05e8eb1c73b4c086be8a069c3502691ba05ff77c85facb3566
+079f23fc66acb6737d058ae98f71fa136cd2d59773b94eaeaa94304f16244d94
+6af0fd8c82cdafe8745705ba20d7f596c67d825b1f0174dc0c454603325dbedb
+e114d57d8e4700816a45b0e7ad17685e994a37de16045300b8a1c6088634122f
+806dd406d256d98ccc329398a4bbe33197364327c9e4b26e44bfdb2edab15c79
+471353f9e07e0d658b5f9f908bb74c368e1d7305347bf25732eb6660a5668483
+b749c705c582b41fddda6113d4964582c6521a53b39a577e5cb0cb7f325be2eb
+937820108c6a732014149957ffdbacdc59afee90cd963b35da61c9dbbbac5612
+e1b1c1fb4337ffc4ce7e8e17fcd7397db724859d3757b47662de8fac2e2403e7
+ee356485e74116b4791a8db7081623601bc08f17d8e023d85d38f0fcfaac5676
+5d7ebbf16788d79734511c341cd5486613d5fd4e59c543b63ac2c8a09532deed
+b03b5f0912619cf82c5e3e296f23b9a083b9fd2471acd5a6afabf663c4533931
+4c79a426cb14b52bf08200014711fdf3c557a655f7451825ae576f999384e592
+6ba1f8536f1e0c63652706dd5d73a8d97741fa4d47574c37dff93e213deaa3f0
+6a4b833ce5a8e3fa489f88e56f2946efe475edca2fd08c27d2b51217b4f66347
+ea9cae3f08ff5a796ad22d89449c9c04ea91525642bde40b8104dfe908ad0dbc
+dfe4671906572011c0470c3a495d7137df43df8dc55970db646cde634b1c640c
+1096fee33fb2a3818b5bf95cf328be5bc101042038dd56faba8b937b851bc47c
+f1bbcf7bd7bc791de3c3b48be30c6b8af99e945905aa725338e14fc1e3aecf50
+861854ceb562bf70122ef4295d900937cc546aad4703086f8190a66b5a24f7c5
+a0bbd1f929211381f763a39dff3641b48aeb002732f7af1c39db09ccdc610c8b
+2572efbbccc9938d96bc28c454a4d02d6fc258fd744776b76a7bf9ec9a44c29e
+d6c0d6491f82db3c4b5ea359fc89acedc291dc964e74bdb86b64643f9ad303f6
+c7b831b270c45161d69c736d191f913415fdcaa5dd3eeb3936ca1211544d8a01
+bd99d7660dd75ebfd1bcd5482b3401d6e8d7d85ca66fced4e17005f894b7e489
+bb9ab7c307d17f3a7e155f914ff3b134aaad6d65f7adb74cc79975030a030ae9
+32c1682207d1996e6eab37607cf587b8723bd23c8748a04cd75489c714766b8a
+423afedd21151883c1edc28b76e6c2706b0f044ff05c975f0c058029c31773e6
+acc019d2d076ccdc46b1a9aa3705720ef00cb9fd07f866d6674ae3dc63b28b60
+325b34db3f19439e0e21fc5a021bd4d62e1176dfbf536c319114989f6d26e239
+9a5cee8dcf9aaec5b31c6af8460d11f6020e907fdcbd4ec63f668b1f3536a775
+90d1e4cc23ba0e2b5a5e5d62a21556500e527de0b6c2bd5638135db941051cda
+b1e6ed7c4ddc2922f57094e7b57171bb1987db1cd7d69f9090e6a1fc14d64cab
+263854fc56092022a10511b2d3d79333feb612ff9a6840e8fe1ce134cc125ad9
+8a51d735638e4f7e06e33a63502b6608d456ae88b0d39136e8ae5c1178359333
+52fb50b1f397136d92a2f4b3aeed44afb69bccad64c2d4fa303ca31a22346f1a
+539d4f7b90ab5b01e7fde533e38b81af79136e8b371616146e75e26e584350c1
+748e3130201dad4d7e3121562ccd4a2d73e30c5dd2fb6264b4801ef3283ff291
+0a850e3007178f4da54da1f2951bbf631f0f6b77e2e7231e553b2495aadb3eb2
+4fdeb7f7c57262aaeb2091ca383f5f9f6db49a0811d20d061a584b7478561dc6
+e4b00428659f0cc04e7d107a24b5451877a77f141a418fe6f0cea192d0f93c00
+6649b08ff09dfea0cb4f5be91a7b97e8e36b3976bf267ad54ff48b27b73103c3
+612813b8f11f6b38fd22da93d9bd9745a2a41f172eb92c1626208bbb0444f04b
+cb00c1d72e326cfe2d8e9463e5e1faeb76fe70870597bff6d79cee88cf2c963b
+be9f125fbbfeb7841f247a6f648f4e32f28f7f3b9fdb7ca9fd87641de85ac2c4
+2a46d1e5a15af58b756182f1f98f48dc905902f77886116db8eb4a3d8930d39f
+70faf693ec3e07a5ab98e14437bdaa08647983acdc2d4ad68b6ae548e0446a9e
+b1e5fb2f4156c82a72229b25a3724085bcb41c821e19cb879f97ccfe8be5d323
+f3a485b6bed5aa9939088812fce1af6b9e3efb683c2304e205dce249f6720630
+70b6bbd53bf6d0ba87e21b5697865e370c0c999d46b46d26f5ea11e51e88bd98
+e191e1d3aaaa663a5b50ce98dc03f1e284b612868e3ecf17b064a9d4ba80b1cf
+42b0b9aa763f2f6d80eae505847b7f8337cbdd78d33bba256234be7fb7e6821c
+e700baece687bf9e2ab7e27f20c9275f5490e0b091726abf49f7795f63760dde
+7aac48cd93c38d9e5e774cbf04850775f8f5065c4f43f249704c31ed0773d1cd
+d58427391bc0a0900fedad6be24726709dd6f821a07bcd30a77b855d2304e774
+7ea22a23b7582e16d8819df678933813c0aacb06e6bb572dc7d7f0634d538b6e
+b646c28429a13165f690878f7493ffa2db8fd76fbe62f05e6b68998a8f8e56fa
+2fc4b2f12e18cc11e40bdbffb3a0cb90dc2f11803edff8ac15b7515e02688893
+ef87ace44afc73fc63b6c85e6ec90daa488f52c1dd45ec3f47e0a4fb20ac7ef2
+923b824621470916ddc5bf4ac327bc445ba03c6309aa43e7a68939d200ae794c
+bc2247e363e33cb30467ddb366576319bfaf8ed29cc41954a36173cac27bc15e
+449fbcb2b3485e4e686dbb60641da58c8657d370663e4edec8579015bddeb93a
+72519f61a90479965b9c0239768103f8cce40f4346a9956d26dd222ec5b37b8d
+1aa6ee2837cd2e36718b3cd756e8fb5722b9b500cb37854b06cc9f15c19eb32c
+6811997cdf05b8ba236b799c64f738661d6e6c4224a76d45714b07f5877561b1
+cc05905d0c44a349cbb61c21ddeb4720f4f65f6dfba03c22295ca37513b980da
+05ce8a8e74e3b2487dc3165226c26611f2d62d2a380056c19a3854d90ba3774c
+0bce4edcfa0e64afba38faafe4bdad20fb4398bac5a67c144bc65d5f0f219061
+189753c2f36830d1ef92d790d9ecfa039e3eb2b8842ef91c250041ba683a4c78
+b9287d1200d2e6d41173c6b8eee76f2009b25bd65e4d30a7ae73a9c9a3886c57
+d17b49c28526edeacb72311b5047cbd72dcdaac17a51d7f1103ad444a1d3dd13
+79b16051109484f4c34c5623068556a1d6e3091bdee05633230cde9568f5c8a9
+41337f94a7917df671e0c96a1bb3877656a22ff739e6643ceacb9b1260f6477b
+ec440a532af52cfa07b8810f88911d4b5b3bdc1897affeeaff70f19f94ad4c4f
+0f82bfe165af475ee5e919a464f70d8eab7acd848f872e98c86f0c1abb956891
+9f952a8017434a965e78d5bb72a050d375a3d4f5f0d4a1fee02da8ce6cb7cee5
+4fdd9841748dae00f95c8dc070eac13094d7d6dc752bc4df3ccd910597c97b80
+7f1d868349db8eebc665e075b4ac1a9587921fb16384ae5b285533ac6b2af0e6
+2b090ceea98355644c9d30df3c80c7f000c84918dac53f8d21b0c579143fd404
+61c5d9ad0f1eb037f55243bdacd9a304060ff6a1a4fb2c2035284b669905a3ca
+7c2d9b015ef5bb2e71345c5cedb58319e2ef9fdaa4c9bb20bf03a7d53fd91b28
+9bc3a06dffa20768cacee3e358d232d13341aecedc4adb0d50bb8f7baed66470
+1d4dd0c3fdcadeb650ebcede2401c41f289ba3387b0f011f12eabff6348b9399
+9f962d9f6944feb5589c154cd16b767cdabafef716aeebae8f8a0937853b86a0
+736739dc20b201008d8ce07ad9b9ae2d7c557388e7b6615ba39a9c4d75505748
+dcb64b5e22615d483f2c03778f02803e8df3b87a1729334c47cc14d17280a46e
+cad415c85bc1c769abfe41ee68f56c9b44290bf1496668da6901c90333f888ce
+1fd2774afd3db45e361bf838d282ff676df60528e3b4693fafaeb9689d6ea6a2
+bca83fc673228dc5ec6d88c16a6af3b31ed0127a34f40df16e3e4164239e7fdb
+2513bae465836c2ba4fd6cd871bd8f5b363f4d3c62d2a39d82e7ec270fdd905b
+d4914a642af55072b6482ecfad46492411d61b6829363654128638db9ab44987
+d343a5e17c1002039a870fff6c0672a59f0e59d9127a27933bdaf1f9eb038f76
+13688d0c49b91b18a4d63134df98292df6d13bfe82485d214b3995196cf7a706
+70ed764e03c7fa68d040c04e6210260f4cfdf79a041234b0304b3824c72b3a1d
+bba01c9edc7521fd82dc785e6622fea163edcff1c2d357ebeff846dde80dbd3d
+4339601a5c157461895c37f446ea1dea9c7bdb65c67f602c5b302521d52257f4
+db9b4efcffa534fc4fee6a9704bdf26dc7ec39be2d2d9479054d887742b38621
+29b198d5ab84773597c7701c28198c3abc3f53f46b5a27b9c17e4d7c7cb6c5ed
+9b9ef1af551ede97af137422a5b834ec99a07da02c867828ef5b0450cc688a6b
+8764ff92360473eab6c4564b951e06cf6fa33c0dca676b62a029ba4ef8d97b46
+77f45ceedf176a312dd0994ada1a806820b36417441ffaee96eb62ecdb0e6cb2
+de831571e27de32494dffb8e3539558258b78fdbc1183aae9e6e49524b447b4f
+51c7bed86ee6707668b9772784ad7dc14af29d8ebe84618eb320709eae0cd1a4
+fe434750eae92ffc4dcd85bd2eaed73337662ba053fa029d334c87982278ef80
+63dd5350c20f315d42e4017add9166ff7cd9359b2b55b596daa2507df32f4521
+4f720a6aaddf5d229ae316d0683db3c4821a7b9cda7ac6b230ed655a3862b852
+2e58ffeda54b6cb2d06f8286a7f9570d568b9c44361d9691bcbd2d4c0f859280
+80c4186be5fa14526fe1716e20ca67b3f3c8da4707af5dc311a74c96c9837f2c
+8592a0dcc2bf273aa61d8db546159075d1f4058271728cce73ec7bd10cff55d3
+0b6aab12ce3927a0d9c3c2deb6ecf84f6b239c88f819248210af4cd363c6b720
+b20cf0adc4fa7aa60b34a04dbf468503c0cf7c76b4e622ed75b45c950b8138cd
+f1307179f1c202a82784bee7c28e706873089956741559b417e7bbe6673844aa
+353dcef435224b64c06ad6df8ec37ca9eedc054147e21f49817332d56c8d04f0
+cd8442f89c73fcb771ea4e49fd871fb95204800180fb3239bba4b5bcf5278648
+86cc9c433b222f9198c07c149acad9d39c320766ba958de315b8167a335425e7
+e5b4cf909196d3030d074bfe931dd9b7c8d11f075112a8da53806e03e13df3b3
+15231e78ca596f002aea9fda425759b0f3f95ec693adc17e3db46bb0c6fcf97c
+c14ea3ac5c707fd61423f2bc6408d58e27fb3e44828872aa3bb949c4a51ea1fb
+e933910c7522469da1fccb2ac2528b0836d14b97fdaf1ed28f457188fafffecd
+314561d256ff18fecb91c21b4ec952ca06f2813bc27bd32f9f48b5e04d40bbea
+c5a8cee19af5d74b965099626c88f4eebc21e960e7c944c7344549cd98465eb5
+fc5d2f2046598075cdfc5c774a4b0dc9546e4c44b0d30be8b3531429f531d30d
+dc02fde05eb0eacefa803868e771f518e1a7d5839c43dba853583dad51db7973
+a546e3ab0541ae11e674ceac76677e129e5fe4e0f72450d8e00b0acbeaa72cbf
+3a822fdce50f2fd04a8203c8859cdaa0c5c8840351c3e991ccdea53c84213c44
+0d18448a55d2394da89a4b5003f6f66c2a465afc259960486f036603abf070f2
+bd1812158ec22505e18fc4a78717337319e90d6e33b0e6528d8b311e7bc340bf
+8099b0a43f22af5db396582421c7da7e6f2f2624ba3ba248fb19d188a00c01c6
+0cda09421454f719f21521e7cc53d770a13ba119d754952dc997d86c68e5e755
+31ffa5f8244583229c9b66916ad2ce7ae32f8b538c2db8d94f04297cd2591443
+075432564dd0cb4644e401a7b0635235359eaaee0196d59cc039dd0367e3d602
+f22faebbfd66de8e4aac29699e1885e1587e769438dd17d390b265b67ae28994
+8eaa6255cabb8e7ce4b84678f672bf60559be580c7f9e99cccf727fce47d2653
+6408b6805615da6ac5a334387a9dc47b4be924aea43204ac416866c26a65f503
+a922821afa1f95ed3416cc283050735ed522b0676eedf56a69e9b60ed38c4da5
+4d9998a8d9d3f881952dab1d6fca5f8d538995c67a57a1d9e2a81cab97597746
+df11eb6ce64dd23217bc33a7085f0645d3d60499487869ff76fb187e63ec6b4f
+f7e93a97ed4d373e0150387e19ffd7d3b7331253ac822a67ee58a5aa855275fb
+35ce3a97a0f9df46cf69d5e52f0807c0e16695ec9d2add4fa52996409acba1f6
+fc0094cff7acb2aebe17a058e0a6f06c284786468a3f1f248aa9e53c8d7cd14f
+7fd98b52be4cba2ca0e0d8a82690211003de5bb702508eb00d0bbcb736c7f0fb
+e6aef6922a233ec1087c5e539704c853edc9939f1126e02156435796ee8982e6
+491d81f140a929a7fb248c2fc56362177d322946138bc57036590b5b5de53d03
+5bc05d7a1a6f3122805e3a5ca009eee0c16b4dcab2027472f5b03141c8cbbb22
+cdc0a5696d94802026504b47e8537f02d052dd308095f78ce534ac8dd7ca6724
+6499fda873647991d0f85bd8c2c3a9100a84ec8fa0ca4e1d1cc42b3d6080dbf7
+ec1afce506911c0d4d663a5ef8a903e1d4e1237ace91ba05ca9d4a2b66a5f022
+6f28842c612beedc2fb1a2f6c70ed1011141783b56f6a22450d1d6f6ddca8132
+d60fd9bc6ed0ed3e5294ef4a4b83268d61c0d9fe3e364a6f77ebf1f2ce6ef82d
+f522dd1b87212d78d89502e2290e07e3794051c4322fd501fd9a5280ac77c0ec
+0a695446aba899918159647141b71b9014f2ec12f12c33f8546368f46f597da3
+ea3f2877a1e660153bf3f5d7dde8968a4911c5944a277eeff0578c4a6a101dc0
+c4102bfa7dec65942f6ac4a862da16d886f921a4b4d3f139c7f06c503a21044e
+ef7554120dcf6f911ae2ccb60f9e75ddcd0021bbb8719f3e88c0bfb2d58ebe24
+f36361454469751abe5275dc25ea0e11f3609386324c07d88d953ebe0c56c7dd
+69c09e4d6e73ea5d01319e38ab2aadf4f9ac47f80540642eaadf0c1e92a2e441
+716b8a7bff1d99404e9e3609e318407f63fda905a755d646bf61313139992b51
+f0e61174b53a3610d1b1d31b83843e4c2f4aabde3758ab2efd77c45de1b76b2a
+2c72a87b1488f968328d0243810d5502988094dc1f3f37f87868287c0cb6ac22
+3c17f745cb1d50b93f93a5b51f724ba713b925cafe8494e690e2eaa75a2f3dea
+ec0857a7bf9693fb537b1d67b5ab3a53797158cfc1f0e2b0ab5535a30f7f0262
+df26daccd51443d1193a7626333a66e196cad7555fecb552499c6995c10572d8
+0c807f1511f4300e638a68dbcd92fd8f371811e82fc863935939b9694dc5b70e
+f4e0e83b51d9ac408c40a9630293d0147ca326fe70f2d609036b0dd9a4f72ae8
+30fe24b869825852292f0f43efc7d8f138bf245f5df363679ffaa066e11c3e74
+f097a9ac079b04e0c285eea78c8b61a19c7438af675bd837bc32c6471e557b2d
+edcfdbf0495bf5e74010dbbce77033aaac215481b163806ba4f48c17353330f2
+557dfc8fcf21b02820c1d00a6de3705dfd5abe5ec1139a0405f6b76e9d544ea8
+4577d83d26836b63c6137d56daa81018e70b2a12d6b1edd372bb7dede112dba1
+7d365e94250114425fa497c181dfc953c16238d4bc93bbe5b6d25646220cc0ed
+c9690b136fb8a638eab53eb5e290c76d1aa49e778c71c730cc8f1f08884d5af7
+f13a756162d03929d7988435102017a0bb844dd78cc6952b1ac84d204590f832
+05bf7f4dee7057cd4dbbc676bb528adf963b11044e019eb0c77dd220741d402a
+593106f0ea121b6f0e151dd7c4344141fb74eab37f6a4e7477a2551f9089a4c8
+fc6ff41d9fd9f978d45ecb8ef580cbec6b0e2468daef472a88ac2b2ea2beddab
+a77247bf8bffa2322b6c2d5a9ffa2072642acc1ceeef0a4530ed3cfa1a900aec
+41488a8c30351c35637ac23220f94efcfe38bfd6da1a22e9d9a0a90c0f58c97a
+710e4e7dd6a55e872cdfffb7c939eb4541590e7c7178e22fe9910fcbdf8347e4
+8488d43837398b2c470d4075e0a33eace48b890f96aad01073ef516c0a27a3ae
+574f94e4acaaa4580c32cf451640a8416ee284e74e215a94bb5707ae3f3e8950
+199ec165ea60bebf4f858f839ecc6ed7074a0f9d0236c7242bcc2434517b14c7
+cd430a443bb16be8177b8a94e361d82530924e28ae5d10352887907877e52d00
+c019333a22ac8da474b8adec5e5d2cea874be509d61d9e413e115ceb0f09a72f
+7b9cf51310036b680ce6bad1a99abe79e55d6bc57015ccb998a8ddf8c3b321fb
+40e227e054e7c17159d815cbe1df4b91c571318fbd9c4b76761b447aade67c6c
+f2ce26507446d3b1b6022089f429ed2e7b0236816ad61b9483c3be08d21428b1
+7ec3fe91e7f9123b2eeb10c971037a0bb4c37a24c7dd2ca70345ad8bd02fe4c5
+770f8759fde8fe278a5668628f8198e192cae06c78ebc23c4b80591dea01123c
+b20eb6003d8cec739d3c4e6d7d3d734966a5fbc5118186a645fe7460048b813d
+31e26d5e88273e512bffd77e20817b4b095042e869edf3abe6dca93082576fc8
+ca4364edd62f439f4a9213751794949c038d59957bbb9afdd6fcff0e1f2ab557
+3781f53fe0fc2c82a5ed4123195224c1b590b7a8693d58787b09f1b25affbca5
+35873d6ba9ba7c7480abc2ecbd5bbd4ccd0fb8c44d07ee2a34f321e0861f030b
+d2eee72f7c2ebcd9fffdb181133b6d8e92563f606df54996cbcbd6fce1b22dab
+adee2ded06d1a887efca19407da2bee156039fdc1511e1883287e1846eca6dcf
+e11320631b271377cdf82bda7e65351f72159bc2937af2df6fb305bcb439bc8a
+efb58c17aacc9fa5a370e740dc2760a3be5e88defc48e183c88cb313a7255c36
+b0a2b814d711deef9b50c295573ee0e69ca4178bfc009c563ab7a2d43f3d7fc9
+3b034fcb47ee652369d347df93c750703962f48be5ed144e3e51f53781c3bea0
+0b90ed93ba7cc2c3aa5805f6111c8dfbd34d1e0d2a06f88c73ff3c00b3e5483a
+84bcf2a7acab810ed0c7f65e61e39b6b5fb23cdba978816ae09e4bcd631b9870
+7f569c3244d0965e6118537d361016c8435f17cfb198433470fc83dcc89b1c5a
+1d6f15b759778e7ef8774e1171a99e1d2687385523548bc792ea6ca97312a1bd
+944f49cf96928ab0c54b4354bd94bd2b4aa244bd0dc0586b4bfdac3e21072ca0
+e88b80280170a7a1113dcf9e8553621d234a55451078c897879d13fa44900d98
+a1935306cada9c38fce4f41e1e13e632e2504577f8d6bd711aa258022cde15a7
+deae41bcdb2d50a86b20f2d33c0d4936553aa2afaf1cd0a28d0d2ce42916ea38
+9f5b425fb0baeb4c9d483617cf990f42eb7e9c27235978bfad66cb3ffe3931cf
+1986be909a7de5f46dacb4571330354ec2337beb06f47d1a142794a689b33e19
+ecdca0f03b366b6328c71f215b54152fd3c752fa65f6aaa1316ae1a1f1993f09
+2352e6bb34d53e3bb80950a86904d0fa478e5c276035e2a11bf02b59fe23b7cf
+2204155357938dc5e4a23a6d80935ff8fe0890ff43bef3ea35c364c8c5883029
+e29ef737da1dac8f6701ac3663440e57b6f29e637bd79ea8f7933e03b735a401
+0b4fb5edff9dcff09ef7bfa6172c7af84a340c05d33e1f7ff48b7197661b744b
+d865a41485a14be88e12ad79b44a936f732b3e0d2178a878360ea9559ebbb0ad
+517e07e263113479491626d6e1e1eb6d86f1c326091659a6a7c79d576a97285e
+7105d91eb59a5eaaeecfb83268122c9a17bbde7ba39ab028b708ec154736f9ae
+7824b16d352a450dc8d5e15a36cc76c91e4a2a135091cbdda40a5b48231c7037
+ca297b907320d7d83192a1fa56ce75eeb15a977f2b99b8c716248ba42d482197
+4b90aa508a47fae1e0eab47dd7ae0d8b7f5dc35664f336c7abf88eeac3dcd917
+c021ec57f455fe4845ff2843611951238aceb64d2461a009667f4828d2f24711
+a1c2495857d17d81431b15a568806621f421217b3a3aa60f7c96e0b8eef4140d
+954d81de9f78fdc3dba282ff27d3406fdec4300c8b00bffae39708b5079faa69
+17b93df6eac2bb53a1672ff27a6c743df0c96f3d57fb9973a4cda754381ddc59
+0e464f8e85aeb7227b1b81b2df374a058b59e727a731e2cbb0245128698f9412
+07f109085f3664935525de508c6da64e30ed6c2c4894c9e69d92584d69d01b9e
+acc524650a5925c060591f0d3ab0bb22633c38c2232686d9de69e7a9a5834f9f
+475f4a60c134a1f20c431da7cc95dd2872cddaf9a0c1bcb1f1daa1f7dff69c4a
+789b26cc24a9d4bd3fae8ec8469b7a5d4692681c4d3109842d999c4e7bdb0bc3
+17170f0cdd506b61e81766615b1690750928b9ba86ed9af1a57a349bd2e380b7
+0016531b7ca729135c17ff110a829260fbb356f99256786cbc3f7a393e24795b
+9feb35af7585f72a6099990ff6235e0e606f89072154f8ffc1ca6acd72afe97f
+a1740da2249e61a3d5fe30e394fa509994bc7b9e33bbf0ce38b4ad0cc5e02e0b
+bc01d0b505cb178b00b1031411982405c9c7fbb5f2d9344348c13cd594d065d7
+14786264c5c438accd53b84f789bd9ee2daee418a90091dfc0b98e7aab5f3fb8
+aeec475790d7e355ce583330ceeba72329ef7758b98624df0e83ec291d7c9c58
+941ec00896ce3bbd47722dcb479d1d4467ffe3dc2b1327ddc64cc41d612225f3
+f61d7118b2ce419a26f682483244ea4210bcf9a6b0d46897c7854304b9d94c49
+e7e917bb0fa45ead5550374055e9e3085ec0fb3133e87cb0301e7d8ab01b85c4
+5dfedc361651a4a0a3f1b42a4c681a04ee46a7dd311a3faab9d253969632b228
+737f573fdf22a158f22e82b0230f709da9e75a72f833a6472b2ae10a13fcf00a
+4d48089ac279f0e6f01e1ca5381213accd2d8f43b289062ec7838aee64602c74
+20f7b71161a0c5afffecb84887ab3f7a426eae1df2007792456317717061bdf1
+23ad1e0d65d0bb97b744cffafac5981422d889765d5a46229500b12c0b826d31
+e8ebdc5543dd0ddb9309fe16d5c3cdd3db6cdbc06e2b971daa8f34565c7b0f6b
+31b08bc125ce44610f087f13e6f3767f9a8306a061b8631d0b7120167b95743c
+ce6d307b3f8525ae3167792dd69fafa236cd9374e1151bc074334f6c5a0bc9b4
+80afbabf0b0b710838d7416303d4c149fdde6dbf0f0d293abf16d4574ee6307f
+f8b620dfa0b8746b6098719c71ba774cef576a25da7761c1dfaf0d0ce9215e98
+b9db210632e93dd0d773e5cd3e903bc41330ec3752706225f631565fe0e25871
+a3c7a83ca11a18efb173f2335b22f9367bccfb0b76f733043ceb1dc91db1e5a5
+0002676dea6b16de98fb43865a2e70b9e8bf4792d14fa074686be4d8793ecea0
+c351b3e918d64613e7180930b047d567b5a3759d118f282daf2615096ae0db90
+097cae47fc7ace6199bfbe52387e4e75a332a0b71e833739edcdebb46023e5d9
+1e78345664c030900595195500974c11faad2ae9de96cfa21edf8829e4ffff14
+de9b7be72aef5f074563e14fae0f83b1bce639770728dc7f18748e3d9a70862e
+f50a4d6ea2b173e27f0036a3fa7104e742e490682767c795a7ba7ce50b876c68
+af7952740b1511202d7e47a59ab14bc2bb5fe2047de5a75b973511620e4ebc65
+e96c8d108b0872a93dfbc19ce2b4c273408f519c193584fe374637c34dab6fd2
+010026f2b9729deddf0b8d6e440d5bdbc6de14396dd39b0de7937e1246b94324
+71b833e35036423183ec6d79f001871dcbc63197503a88a5d3010e54350f11e9
+cbe06b68c731ce92e4951ca6a294a910cee596b369b033376ac552b7802b8483
+b66dc05a139e97ad2dc248a2249247721c40c70a9c791d10f3de90f19fc9f70e
+aaf98a760fed0b37bfb2bac3a4e84f167e74ed4732d8b826d5b29039f6ed7652
+98a5ff45a5fe9ae219c6794f3f9a01afbdc0a05e042ae95b8043270b3c779986
+8b060bab56dfaff29540c0cf7fc579d0163194b49a27e7f1751f07500ae8604f
+06e873ccc9a5f4eca9ee42120efb3e6f128a35ad7749c656d34c58406c77dc0d
+c076c9fffd4790b24f33c2e97f771f789db99ed0c06e17051c804638fefa4be4
+b984c8e4e344766bd945c3198f534273eb8d90c7636dd178b7b0281cd97e8b70
+93f37eacda458979bd53b39fbaa3141d1351b3d37ddeebe82453342e78a6ecbd
+57e43183d2abc7053a1b1675c8b10d1531d1871fb1ddd0abc651a004340a3c14
+50ca9f02d5c93c00fa12e43da0b6c74d3befa5b21585f6822daacd7ed88bef98
+636fb30d9954b937da37674702a8939a9706ac1cf67861771786b63c1aced556
+6784ad48e6671b04fc45e282451632ad04c96dafe347ca78ecc6c377853bfd10
+7e7c83dd3a3d33780ab2c070a91211e3cf296eaaa773688d55e27ae98c785709
+29cf44f8bf2d82e30d0ffe459d75f3bdd536913e611700927d38ad315438f7dc
+c97640a3c97347a29793ce8f90bde46f201be4f5f448e13130d96e85a9349f3a
+51bbc3a22f2d69580e1afdf348db9db29dbfe4ca546106ef9a73cf8d9c6d76b2
+67635cc4696c66fd09cd196c2774e40910f81fa92ac3e8f64ac5f674bb857f3a
+287944de465724aa2e500c224e6fcb4a3b7731e9cd14a019111da516cba39883
+9488f12a54d15ab85a69899a4552af1214fe6c0c45e5ec214c846b6afe8479db
+cb19b6ef998dccf8c79412b5be34f01d1ac15f151153cf778d6dc24e98f172ab
+834538ef65a040f5f810ff4564973ad19d880bd310a6388af0eb9040eccdff3f
+c50a6eae86d02880acd8135aa324a4061d2c9a6446b1ab31e35cb2374eacfb40
+da5dcd4a8ba43457d4a90f51a66e19a17c22a9159f9fb680bca92c7a82e1554e
+e4bff125bfe1bf19bb8c8921017e68760bc2e19435cdddc725aea8ce974dfd18
+864fde56862cc705a78689a4b8503f5b579337f3c53b4511606f49fa913f34fd
+c1159f9828d35b31c7763a843fa1170342e9ad8001dd08ba024fbc872451b5da
+d59bd19be63f15b26607e46c9b79eafc2e3fe12c706c4e7fbd0daa167cadb2e5
+875930677acd432b3445b4b5283e663731e724fae67e7a54dfc12117727d296a
+d4c4e854bcba2887e5d2809a5a79b9c66fb5034a8d9d74399c465f34a1110b60
+eb66deb9a123f599b4f0eb1b9de5aeacb78d9ac7c8f4df8e7fda0c167dd50f7e
+816371329f41901c7a70b979ce9d6ab0f9f3b74739b944aaa679e5115c01a15c
+b1263489405f695dbc811bdb5907fda66220c4e1c039b47ff16eaec9cfac90f5
+b148
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTI12
+%!PS-AdobeFont-1.1: CMTI12 1.0
+%%CreationDate: 1991 Aug 18 21:06:53
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 169 /Phi put
+dup 170 /Psi put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 188 /germandbls put
+dup 190 /oe put
+dup 193 /OE put
+dup 195 /suppress put
+dup 65 /A put
+dup 67 /C put
+dup 76 /L put
+dup 78 /N put
+dup 83 /S put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 121 /y put
+readonly def
+/FontBBox{-36 -251 1103 750}readonly def
+/UniqueXX 5000829 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f
+a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e
+fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65
+66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee
+ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7
+695aba81f0260cd5248b9e649cd803271dc8bb1656323089e9e2bb50f2b95088
+87d31dc36e555668d9578b338402f8c259f6813b0b71e6cbd95e19c20ced8495
+2559e47577e612a4d94de3c1b4c6c41a6a3fa9e2313457242de74c7e4c0d722b
+3e224d18baa726369542682e9459b951b2ac638494880c42be4e2175a3c067e5
+945bfc1a05d3de8c3e8ab97f80ab6000e1f78fc258b85d3c84b038d7d0f5be85
+0d43fe03e26cdfbb41c36d14cb552e8447ca678efea1d275e85503123a2263b1
+4077587683de69a8f5a88d666172668411d0d0fed3e037ee468627207505dbb3
+59cfdc5d7f526fca5416d741073284f5dd2471e09f5916f4bff1a90eea4d1283
+7731f6a36e5ea695f4efc3bf5669b7f60ab606df5819149c0c8a4817f06dc172
+0543467645daeffe4457293e0c0407c4ec7857558d0452de2ac773f141783edf
+81b30215ae8d2d062aeb3cb69eb0d62bf04780997c9c027a22896f456b784378
+7f2ccdd4804375321e7946d3d254521249a4d28a360f4d3163912a688c16e807
+15d0440bd27bb78fcbc89bc28028aab2f594f8b641e45b9c599180b69663eef0
+03465a2425aa4f8b29dade493002fb335b23eb145108ef3ab828755d3753ea8d
+f0683265497b1cb5cb484c13f7a4e003fa6ab3ed5e24fcc6125cee4e33936122
+3cc907af3c64e5aaad882c356e673e6ca2509a71920e99549d8797e9aea189f7
+fe18bbf718017cd2e32b4652acf12f16e785462980f5895afc917ea83e9c3eab
+6297f1de23785f79172538b39984ab261f14ee296a42cca3159e63fb30583af1
+911646257a99b4162635fb79e25404242cccc3bf224d4c279e731333107ab2cb
+2598dc582dd185669c1fad35d2be0428389a4b175db159508c08a77e842fd400
+bbbff7b121da1cbe3bde781ea5214575981e6d8cd3b76b2f22f260122ec744a1
+fdc7d97d8a3c7a91c97b8fb4dbd0a2f06002b7281e3f03289553db4651e11a09
+b1b3c3032ae372c1c4a1cbe258f17f85b083f9e690e7e5bf9fef22c66738f0b1
+0af9bac62f070f2ebe655185df4617199039b4277916236f900e032a7315b269
+9ed92bb05ed5607e44a4ccc40886ea1d5151a03b91dde7bbebb495ec760ec984
+88d308297f5824f10743f16dc73c6b0a06ff6708a90072a06503d63a2134bf1a
+dd7091aa9456bd14178f62201d222e40d0395c1544ea576ca49ea08827b38d17
+a9b238dddbb51517530caef57a539813af8ac920808d6270cfd4533e35528343
+520a6f7a61edcb4b7c5192f3f912bca484cd6c25abdaa2d87c332b9a52676ceb
+e2decae47c0d1234b63d1f0240cfa9934e1ab0020ed1fa58a8e6c45d8b9e0da5
+b6abcb5e4b218cb38a29fd797b6e0b649da379927bb487ec9cb8ebab9b16df32
+f1553aeb87644f31346b5d86f2ecb4d5ad53c25cca43306ee6dd323641c5b217
+a5c20bfe4e385d9cbee610c631954808c37a4bd858915615207ca2c6d5817eaf
+a099613bf44a700d659866c12bf78f94cb0e7a2655e59a8c268c8d9edb62b293
+e3461225d6ffe216d93f20e012a1190d039f0d47c8bcb38908b6c146a2f7f807
+6a62ebfe1e8cfa01f4d70084bd0eb1707b5be619dfad1abb8eb6e90e1137fd8a
+5ed78db52be7b6a0fd43cdb10b31a6cff68d3b6a139ded9d8bd0d53cceee44a8
+bb6bc1e8177cff511cc1a8318d4b73912337d557ba1dc2d4e2bec8b3256289db
+ab15b02137ee29555f0335b761afb5749f8f10e928ed48976ba600c896d05805
+5bd1eaf13fce2ae63a46ddbfac8b8ad6a9a6fb3089c0853236339560c299fd14
+4f8c138653d27d75c5dd7c6ccc6790b6eb900f43aaaf9dca4d1ec96fb89ffe6f
+4249f4757b411bb35cea1992b34faa72e79e093a1935bb92957a41f2a6db3ff1
+6607229d7be3eabe7ab6bb765ccc344c8d596e210f7829cba4b76f3490e561df
+92745bd424877041afaf389df1ace8bee9e7e7c8616074dbba8e0990a706c7a5
+9eaf4a545c3c506cd09992d46871ac7d5ef419a9f53b9fae0df0678a4c4ba3ff
+0e535d6eaec97b0fef1adf08ea0623ed92b1f5475676f732966f6d58d9a77e88
+ec277bdc6e7145522845cf65aef3aa565f23aecde32a61a6ae6f61923c036e8b
+548d461b48a5bbc037e7962513b6ecb5d803f4d1b5203e18edeba0c080a51003
+cb43b6c7908b8923994158dbe24d93859768d98ed301e48433ec9820051ec013
+4b16a485d583d23b7904539fc3b1d101acf2c2fa455285f53f7908748db2ba73
+b038f8dd0875a635df0542682caf175cca6cadd7885a5f06368b6ca9078d16bc
+db798c4355190088c8d7cfac9393c748d352d723cf5c2d30bfb9457fbc413e10
+aeae883e53f40bc677af951b7fafe6f608d609a3e8112eb544a2dd76320be0f4
+87217e054822fc09c542d201ec4e62e0be2b6e269bc4964f00e9c7a1d8c31809
+9e7207a4de8426ed893f4a673ca7f07214d1270e4c81efb85ac573867e0a6876
+94497d3950e426fbe51b1c5b7930ea448def60079983845948e8e53347a0294a
+d990a624e5f6f2e64aaf57dcecd677ec890afa2157c663874152941d90ebb079
+8ba44cfd26989738fa1a9acb304d59905a162c6e0c932b719ac753e2117ef2e2
+9ae73a8d608effa4bf39c22a933e4dbc903d161b7161ccf414b08efdf7851dd8
+9e424fd5e88dabb9111e3ed4479196ab8d3ada3ed474e69193ea576799b4d982
+bfe4254c60da3476cc8ccc3fc718fc4b99576e2348395ff3cc317da7e9108161
+980dd0cb747f362865034c00fbd4811b8161e8ae0593d45865cd3f5f2d44607f
+60cb02f9c5ebf9a62aafc14bcd36ba9bd25ab7fb077aa05d36c875d6bf06baf1
+0687cb95450cf5417d2bd3c133ed5a00b1a2d8097b5640ee22cfdff3ecbb718b
+32174be298875cbd9da849df610d46db69e60f23b7084ec37045502f19632540
+6a0d37636ad8a088cfd33b258b566d0be0f27c713aecc0d8275ccabc1884b03b
+700b973dac8aee87452e88b9700cdf030f568af45a0ffd3a144be189b1fe86a6
+369e35dfb8190912e51d73a3580af645806a91e8e4efff8ec7f0ed6c2a569261
+6861f8b12d7d583d7c35e137bf25b330747383d4a5f55d7ce7380aade77bca85
+d996ae4aeff5dc636cac65cc1ae1d5c139712e4ede8ecf35bff8c980c5c0bcfb
+213f020e420e7a0191e0080f2f59bf111a1748f70c32242f0d9ca7c4e002bae3
+756da33543487a749f363e92a3d4f11f4bf4f0b9863639035e2e4e49bcaa2c6c
+5ff633b87f7c77d415400d86497409d82e26e883c0c91814d2a9095d60c95bd1
+1f1f58ff21e64d08fb21a58c08e3963c5936878998a574599adf95c12a8ce5bf
+9a072ef6cdf7fccf7c6053d8159191d4f3a09a73e5effa034b505472bee5c862
+1352d9b7f6fa060503e07e1ad996165a6b0dc573e71b88bc17342ae0824074ba
+e2921f9aa8a5f0ca1c9fd785e1b08abd7fcf46d2c56fd1f3a8c399e23b128610
+1d6c19682589ce2daf484968ae2bca3b2064dd264470438e33ea07b2e2030564
+8af74048d646874b116a9d485c6a41a951d3b55d3b341e317a6dbc27d5c464bf
+2f9a685a4c6dbb9180107138349f958a40dd799f6d681f2c72ecbf83ac92531a
+71268cea3b92fa34f26238bac31965184cbe3ee00dcd7ffd1fbd0ed18072b91e
+c0f9096347abd4b95e4c35f0370818c23cf0aafd98fbce3c49d8d03547c98d09
+82d8c9fd7fc53e54b2e9b5a47269293f9700d045f480d9849468241e350d9924
+0757503c6624c164a3eaa3dc54475903dcfe0abe5d00bc3d0655d88126b4488c
+9a3260aca7cc814d5f5230ca9107710c50f003eae366953af77f38346b9c71f9
+2b91d3baab4cda053a10f8e070427744fdccb4a6cbd7601df5f45cc601c4af28
+d870d36fd3afc6c1e6f8856d6b2b401d62a02517b164b5bcd4cf63858ea65333
+8b03ea44f09a3256281e62187e86dec5d75ad5e5a3beccfeff26541624dd01d4
+78d5104bcc23e733701f3ca8b2aae39c65e64149efe0a09ee4ae02eb41031eeb
+0e23e1606d8b3151365e7f08a52d1a09a9affd7628c35332117791410efe4791
+1f1ed63a0707391dad36a72ed6d9f8b58a98a79a51d948bce9cc55ede944f9fe
+ebf061bf687119c98e59a0fd23afbb1cfb870da44aee8efd229bd0c6ef3d039e
+03252abde081fdc7d760c1abd566339b5e19b81f415bd88ea0a8322248d232d6
+b5126df21c00963166c570a342f2d5e3ff0c969b0bf57281e3ac601b2c5c1002
+36e53295302ce3e8641b4136ef31e88c21f2ed77c021fcb9616c0a4213d956c7
+ab6941b0eac61ad0ed4ddc694785f72545ee9efcf4f091d011659d759b2b29d3
+49668d79619c441692ca0f03e5d8e5ce7c086e5bb0e8db2c2f0a8635987f7c87
+02f7730f5720285e2e5aaa5253385a48b4e6c6b142852a07261f750f527729d2
+f92fddc011092115d3d1f280078133e067e9ac29fa5bd0688048ae6f723df0f3
+e38027a740e319a0d64fb833775f6fb0697aeed149fe462ce3f909bfbaf5fe9a
+7d38c6aabd3078eb6e9fecc69b6934386b3e7ea315943036f07720299e85799f
+25ace990c58c17b5e62b1372e11eceb4f153a71f9d6c123653eaf5c6d9661478
+264718c44b93ac82ac0b73a2f32239a735c10981904cbb6c349c2b6d3c2a2942
+7ac9e140886623789ccc365ef1caf6dd9a96bba3920bb5d7c1ce18bb9d7bc8ce
+0563c038c0913b3105f2afad2721797f939474c16c33fef3100112a7efac1774
+f23b85fe82af1745cfef34ee9b2afe5e3a5ee768d19478638f80f6e90420dba9
+2cb3082354b3887453fb6c4ef86f739fa8fed56977ddc067cd94bd027a36f892
+d208dd3f118c094dd71a2c2c67861fdb746fae8fa41790b93769743d65f9cee6
+35ce7ee00ea3853ce3aa25341d141b97b9ee31e044f7753225e43024ccc194e4
+8349a0ff2eb9220b98b750b6024ef0673efed13c3fad27c0701786f1b7440655
+7a0f05b22464f1afdb5fd59caaceaa098b7881d92629b11febaf95e8494e69cd
+2e60d26238c9c0534c1cc05ae7e12030aa2e53e498eb5b47d41b45fa4bfa2e91
+dfcb335adb4acbb861ae579eca8659dcc31baacae4a332e80267dd0fd91b963f
+578e21295dca7f4f6330f86460d87537c4e401044d24a0c76b3721843ddeccf0
+6ee15ac1ddfe239e9bd8b0a1a838729da3791ce92b41901968259e8ff030fdf9
+971693d37bebb480b8b7f7ea81e313e95df03e94ae483f3507291cc736137f84
+7c5c0c423948c583d913d5d249ecdb1874e641040235ea511b89b90b3d700088
+d697b578cd89730b8bdebbc21cc4c8c5e044f4aeba2c145e74094b9925e83752
+edf79a79c1776187ab0b42077a88a7b59e5b21d05cf8d31d8da5b5a9902b3402
+7bc628646cbcc18ad30e76839fa5a7ba5a75a6e73aa7475bca333ab0eec68f53
+fd2fa7baa28074db89eb261f9adbf561fdb326f6bf77d44aa4c2ccc25b73e319
+1e621c512781b5436199c0acfd7ac8a7023130552f301adec2e4a0dc73c49b5c
+d3b119d03fc6ef76a9dcf0e749e8efc4a1240f4a5dd35bf3b8a77a41d9c47193
+c96a67f11339bfbbe6069bbd6ccc8f8afc0de2cf9f94a60089cc72dc556a598f
+e44ecb22fd78fbc900ce4099ce1ec20e8abace8114cdb8a0240d1ff42c6ddd4d
+dab6fcd5058268d5a8d2d9fba8b5485a7ebc10648cf712caf209efce9306bec0
+77b57bf67ed6d4d18ccfe7d7fdd15ca47ab5fdc506c447db04244a92129cdb10
+d3770c5a08f63e446f506f85e38094b8f088a87b6eeadaf831344c95e3b38adb
+02aa02ef65e688da5a819d73b2d697f5ec6a34dc6de272a7d0e16e71eae27364
+dea3177ee1bcccff81e8b5e0d274027f0a24612aa82f0bbd2f713c43899cbcad
+58354404de3097e237299cb4de86751a1747cccf4b3c354140328e9dbe0d7f7b
+0d0bfaa505286a55e7a45d03bef89d747afaaf3c84ea3c46188d8cf9bf0323a6
+85299854d822f683b3eedfc44dec49467496219631230bb2c66cff705671816c
+4d13d52a38f7f8fc636fe8c8c80bdf0f4517a438301ed08eccac599480b6137d
+1fb1964731fd14fb4cd40e2e10728bfca62f0752407ea293c49bd17698e4507d
+96ab0191f3364453947b7cb464b29f4cb1dbcf1066f39da867f6077cb23b66d7
+ac2f31604d8b96cb5f4576db4c5ef95d52b40d06ad325476e9c326c034946e1c
+2ce65c6667a1ff655f3151618904d9d0493d8f74dfab338db35e509d4c5b32f9
+11de48ec4326e3959167059e2baa1826925f78324f604378bf631c75476cdede
+6e975f438b27f0effce8f542a9dbe5b1b1511bbe8d80109cb22e399aab501af1
+3a3eae51001933e9fa12b1d771572e4927bcfa035337250b0dc53890d46d7d8e
+d6f6bd735c17bc3864e925abfc33b1b8bed8c54fa62981c9c1934d81446e422b
+b6123ed0fa750a1ed72f97ac7d0f954e4a9e259960f08e54fcbee6ab0a01f4da
+26ac3bbb7b7a860c62160aaa7cb04349d0bb94ad62689a538166198adad9a1c9
+800eb0c120d188984ad7bdefee1b9a1f9f44f6d0d3c4e3646a26cf20a742ac9a
+8eae1242a8e864612cde4675c85957d4f9044bd00e874d630a20bc3eaa20100c
+c4aba4a36384099c1aaf47724abb25b7686381051ea3ab87cf66b7b45f959658
+8a1b66c0945bc5614e3693b69c64930e5f90acb54e9ee5caa63011e96432301a
+466f1537a56eb31d088077b0a64902bc3174ca6cd25d9dc6e048d95eeb780ec6
+6f4d88281f12e9ec5c0e92d5a9ffc44c72303ade2dc708bddebd1aac8c880c6d
+9269e84b8da5eb9795e2b9bd6521d8052f5be6e9b7fa86940ea11e21388f1de0
+919f661ca56911ad9f4b8482c0d6107a788422de5ac7962c8f84a16bae35a227
+d390c3e1f197bfa0c0b6fa364df471881ce6198abbeb5d4b52a86a49e2331e5b
+12aed0a157dd5e69b011ae4511f92afd8fee03feb818645a1db89c586e09628c
+9674bec731b661211df57e0af4a4040375d1c15d5be8526afd1b60a3a093a980
+3ad8e7a596a57080895fb8bb2d67c1190efa2f501780933268d96fa6ba7f6665
+2e87ed7673dbc51bb71f70dca7a317a18f7f8199194587962a65485900864c73
+cd3596ad7cbbfc795de1102d3e11f920d99b0a21cff5f3a2d78ad712e9bda0bb
+a0d60a2b029d45fce2ec214a1b127f2cdf2b2fd540a8cecfff42ef469973f051
+4b81b41c5d11d486948bbbe9c7e9246c0cb51a0ccfc02f48c1a5f6ee82435242
+e11ee796b9dcaeb0cb847df223ecc3d2c8e35ff5ddc5e4221dcd9f8080ca8405
+1c01ae616c30a1b78f93dd6d78aacc5dac1c4b6417ac833690298378450b180f
+d1709784e544495fb8904cebfbc556107f5abff5a75b9dc0151867f698e4360d
+bb1fa5df56b35ed4ba463cdddf18f9f70534aa6da07b6a8939aba3b59a0e9378
+ff0e00b61d7234e1304cd2a7a15b47c74f4abbfe2590fd8908f989af705a2a3b
+a756b4abdd850e63c45bc98552051909a8e0911bb946b588c6bc00c09bb61173
+fbfd9d5b1cae26f5835ccc4c25ce03fb27b37eeaf25627c400822f28f0172d0b
+2bcfa42428be13dfbf029e505f8090fe8e1d1092febf3866830b28fbcf22f959
+0d740bf775a1cb38732a36e6744d3a51214fd2d4f61db55034a63f0d4ed1cd9c
+38ca4a3b0a16a8ca1824d896358d5e9cd20946d8ccf072bc2e7b9b302f8cb065
+901742ea48c70a3b08acf197c9a7ea491fb86e429b7230e90df8def4c1a21b54
+6e768925cec8ccb7fe123e5bb8c9f13b45b09167afc116f7e1ff918bb74c4320
+1b190ded1e6291ca69235450fb3ff9cf45fd0ce77c6e7db37089cb5fda6ebf25
+56c5230d65834248e2878a57f7bb1a7e0fb1fa76d83c493ee29e73299fa980fb
+6c3ad9ff6115f1d379707243bc77c5d57c79867d1ca64d7176e0f1623abea757
+9f95599e850457b107bd9acefd3293735af8e97fcad38a4db383969f856cbd12
+fc70a1dbad0bed1c82671fb35ebe6d59dd715f6f5f27ceb7aff76aca1adbf8af
+aa212a8bba67dd939da78d7128f240c2ffc654cd45a91f0cd61180c6e8675ef0
+7368574b5a64e7c45af0cc83525b70476d9841468d1cf2f2299eb44fe908b1e9
+d849d4e06c7a12a59995284e0e2f1f7a1ddc3272d231b1d917ff22afad867ee1
+e2ac6da863e6b84f0f1b4697baf7eeaa5362eb6a19a658bcaa7161f88338849f
+0fd07250fca31329fdfc2a26c6494be1af344548e37e46ca3f38fc959766132b
+e256c62a6dd6319bbca0fd944b0b211356fed5662c558e8d403a3c13d8c824b2
+f69d3d1e0b148b1bccab898cd13cdc2837ec05856424dc9f3ca6aae967f6034a
+ade7f470900f2f06976df2081c77d71be0d8091990d6f970226a1ea7c167d8c8
+5ab97b23184ae50d08d6a18bc5e96ca51eec22667ff72bd9b24dc73c6b8ac430
+43b3ca0f269a41e2dfa22a14d2e000fc80229ef57a031ab69293ab279bf3664e
+e7de35878cf6a75ba42992809b738bbcef40faffb8e9d9306938dc2e41cae3e5
+15a24ad3d30132f0f60e791efde9597a084aa33eae6a716a3ee4708511becd74
+1475cbeb633a9ad094969e6098111cc1f01eca9d3ed12382c15e30a1eb55616f
+f5c48c747a14f2e47d0bccce1e91b1f7aad72bf4abad451194dde6b2468dfb7b
+442e434e8cdee1b3e4ff20447058ca387dcaae65fbe2a0409fe46cc5dde24117
+2d2f16f85873af9d2b3b2b3facb8648a5279290e99b6efa7e2b6f1be10a686e9
+195a0763f643e12e8b89361d763daaeaa28e77623d4fcbd0ef3ea9cd80f771d1
+2f495bc78f2defef18a23e9d130158cc85df6de0c80020c319f6d544ec032abf
+7110f72c3e5d15fbfa19eda5603dac07f9a61907ff1614db2ae6a44433b3350d
+72312e61eadb2b1238700193412329f6ea8060a81e1eef5084cdc28d7b31d1d4
+a179e13b41846bb4ed23a94d725d97d2c23e0363eb9141ea786f49555329af0c
+f91137b4621be5ae60cb23e6c78a59f9f16cd51115237d76adaeb27b3eb77d67
+0cd699bcc6433ec004bc5223bbe62adc99c27a15a40e2b3dd82926e6eea008f8
+0dca770df50cf0ac068ff7cb3d1d71652f2aa36ddf33fb17a7290b991a50245f
+247d1a732113d97b063a8b920dcd906b8982b507a39d009a832cf44215cf7228
+bf4db8b1d9154f78ced72963322c7b520daf9d77ddca77299b9bbe66ccccbe89
+3f11a17b29f67a61e6d1e14ef43226c1d86909fdd98ce12e4b5841ff78c813bc
+3566a16f969a7d698be04482fecd150d6049fd85db84658cf79b62787d8ac6c8
+71a218fa69905402dc717d7d5633b4a3b15e9bc4d1d8e7be9bd7c5f76531d24f
+cac335674ff34be71e35bcb64955a80bfe58e06e35583d204ca6c1fdd2efc42e
+8f6a13b13d671e1393d3183057793f3aecddbf49dbf2281fed3263c3bfe7a95e
+b752ada9dca8ee7c1ff4f6e18b9b927fbf62d3fc9c3b35c7073f1ff70c4eb457
+8f5f27da721b90afd8cd6dfd7ca9ea71201424e37dcd5ea294afe2ad5f094b76
+e12ef260b3c54d75f32ab6ec5caafac5dce9c7e874d86eb9d815baff0febf598
+b474590b613ee1a61bf18ec8ab7edd00bde2dd85ba995670a9b1b34ec5d40d2c
+37adcc813ff67eb14e5603d939e060688ab12c7cf7b4c6eaa05a07433bd2fec5
+86ee765462788d88dc9e41eda90e0dedb83942a5fa9a28cec6b693c6a2fb48a0
+9d8be8558d8b1ce20b22e7fc766f1bc5fd6a6e44e0c1c7ee4090ecaec359229d
+3cf7e748077548836fd65bd05869ef42ea1e445b23c4fc9ab9665ad7ba2d640e
+82bec8a4c62c89899666f0344df49cd741e7959e652312863f59f61a3781ddf7
+208fb1a57f5b22859e87190ae8546f1b83eb636a4aa7f29c42987905c9199e87
+606952dd4b9f07b9c02a01e771fc0be4b71649962b2abb753c06e43f4ef8ca04
+599855a04ebadeaba3d31c76d064cc279c057317c17a0032b29ae21c977bdc9a
+5bfe5943287aa1a908169e1337c85ee9112ebb8f3482aba36ccfd02a67bab331
+cb505815bf94c64485f59d0fb4e276e520d92dd3ad7ac01dff492b0209e63b4e
+68886ffe605f3a4e06e9512378ad057050ee09ccc804960e6079c9b482c7590d
+ef3a36cddc4ed5f8889d04a4393e886805eca46b997e5d55c63074a16ed4a39f
+b0e8d517dfe492e40c1966f3a208bbca7418a4a0b55a87931c3483bba7c2f863
+707e0249d9d86a904b7262d13c04b8021f95f97bfc932dacee5a94a2da2db3ad
+29b97a6ba17343682fed416e12a47efd40f34c1f92999c1948ee3135fa535301
+809f59c1cd555cb40523ae7f296964a8a880d3512cf82db18f6649e63a7912e4
+3abb2098d480f12e9684c39eb47f75251990ac06f26419f67f6748b61b3bee65
+b7268bf601d4aa7419a423d7351d71e678a6e17a9bb3a306c13634f219907e26
+aa93286272b2fecd45de23bdf0a8f7559e25bc65d7c444db5f742b0df3b06464
+1342f2a96e323952ac90ca9a1c2b6f3ef2c09823a3d81dcc0e51bfe2f78254f0
+01a17693326ae77420c38a0da51b0b0edd8e20bad7b4d93732e3488fc5c4683b
+3afa493c2ce54de74832259c3e46204e46e3302988c3394e7dd3c379fe007513
+576aa17fc5872030c7fc6e866d7e97d9fed8f6c4238a19328e4a08baa8c9c78f
+91809a9bbf4e376d841a19c807f675505462a34f750f466bceff5fe3cf75aca2
+86ae37f22ab7d483c792da94955ee6ebdbfa6c48da582f4e1def04641abdeb81
+bb076fdc5d9e060019677fc31488c8c10115f27a2d7646c02a599d59fc9486b9
+e1960bc112fb9a884dc67dfbf45b0f629f45b30e10156f65c54b151016532232
+e5de61fbd2180361fe1a8fbbbd7dca5ead0cf03075d687df39419f65b1dc63d2
+d3e9839650bd9404dabb470d675f1320b7e4c8e9db172d083e46dcbe05adeb7c
+0895f9d9bf52adcbb4281a3d2638be50b2f761c5b9ee2efe767cbec358cef0b8
+512db9816bb4e07621653f3b1587349cc0031cef76e92fe7c8c9b2ca6f06c0c5
+8b95165fb482c96ff82deecc30d96769c48ee1b585013c24ababc6ab17f3e9f4
+bc6770bb88ec261fbc704fbd3bc52fb7b3016c5c782afa51e49a4c0d6b144dbe
+aa3b9b0bf05af3526fc941abb032d3ce29a90d81dc9a7239e066cb9f597f7fd2
+463743353177a4d2696b99bf6d6b29486a0dd6a5f4b827000cfb6d2fd34001fc
+9a7f92b698a7ba282ca0d2f47caff62599e202c02d2890e8e820f5397630c026
+673ccd9293e08fb1c9e24329722340ffc41c82cbdb19b07d637a54b5c313e9b3
+5ebfd57666f0f2d7e11fcbfd84ea7fe1b248ce8b60fb5d2c21b40aebcaef839e
+3a88aaa519edd86280eecaa16162e4787f6861862a2021da57e9ed20bcf5507d
+73241a36b858b5e3dc8d64a5daeb9161c9abcd73a508cd307beae51809f3057e
+7670d8c7ef2abd2045520204064ae7b1d326b52a440fe97d734020ad0f4820fe
+64cf6e247a021add26c598891cb9ac316d922e5d54ae672d8309546703a59a31
+4991ff5ce08e00e4c6b17dbba6a452aa036e4eb64744fb673b6d9fdb1a543cde
+b914ec7d8f255c11e90fe901e2219ea92be10e044ea2b2189cf2c589b1a1eaf1
+db7c7129c225d12959341847a62adde30203a4e4d7f2b2027030bf21ebea2ab8
+c9d1a4988c35d96bc18ca887b1ceddd2fd6de3e93021f4235ff435e436e75fff
+8fa35874e3ff6e3c3693a35a50e4dea40e53509efd4063ba5823757d4f5e2ce8
+e8e7974dc7bd6ab815ec1d7e9a4d3d5538e44e77817cfeb706950813fae5f91f
+84a25f7da66ed629d8b6a5b557a9bedc5c8ab9d83ac14bd069f70fb7c160d9a0
+b1a805a0a89ce51ef09d986067e8fc6384ca098efcab789844c6623e9d0aac6e
+2694c4cce7a8c220cc8fe355b38ed6b3e258ac607f4c977302836a346e30e946
+2de689357a5a81cb15d2c34c0c1560b62ff167ac5a6e0280e9683ecd02495874
+1adc4234ee01510c48134b3fb763c9d5940b22882d38553983c0574d29119f6c
+4d5a172ad21ccd5a21e3e3f8b18040523e99ef7b7a86439ca6ac702af9f934b2
+13f77f56d1c0c7d3ea21f0440db3825a0c1cc9965037698532d87a5d4c18c91c
+640bbcc9fb3a5d5410aa03e70883cb65c9d51c172645fddc9d931f07bc4ac69c
+1f69b7dd8427fb6a92ec1dd2bfad4a69e2188506cc4dfe50f1e99338a1fb4cb3
+a79e94b26acd8d394214cc47415a6dd95c841194190125d8c29d8b5054396087
+b908a978ba762c6cd94c2a80673c11d04cd6cd07a5d6c5b785e18169d65caf96
+5f54b28271e497dd1fbf65374993828387a0c72266c6f28c2d54b80c650f69ba
+ffd286ef97754b09c0a23aa2836451ea93466eab5f5a212a2056a48abf9b6771
+1bd518bdedd3760dcf55bba7ae6063ba3e3cab603adf401c79d0bbd05db7764b
+e9d74888249d5f292968cda45313b2c30317c69485da78123f14585122c2c361
+563aff703a718e2ef855cee794cecabb51c1375f9a536228ca434c86c2e4112e
+3fa35468e4683eadef55b44037ed68e971a25442d0fda1dfb2f38f8b76c81412
+13443c4fc59806ccb6b7d06e73322fd0d3486e3f646c434ba218468c412cafba
+0f90462df2826e1143ceba6c9eaa0de87a0e44f0dbcbd39328687507caca3579
+78e501cf79a75da6d07f300aab96cad4a70671dcd7634c20985d90f7d2ecd122
+852d67e9ff9d795cefcf466c5ccfdae17a7d8b455f9213c387ced3025739443b
+b266d2590da20801e5ba5bbd13086b37ca672616ad04b1447b26f86a69d167be
+003426587e8eded2cdd50efe02b2429a3704e83d1795a450c5ee688cc7e58906
+a779755ca61baafd24b490c1d5e54fddb5742fff6bcfe51fa0679597de6dcdc9
+275b884c4cc0fb73f36e31e2cd11b419b010460155e35b83630a22c442f11b55
+a724ab38571e413f2601b6d934ce5c6480d90c88bb2676c44c87c92158efc69c
+b808dc718128af2b437fd5200a866dbc5ed294e2427b468e24dcca50f4cb967e
+e36330547076291515cf378196912766aead91c7d70bd310ac630e74877d9e01
+d158df0ad71400838c2b32b37a1c18eecc36ad6db4e4bacff0fa379d886914af
+48fc1fc05b4e354f494eb025a24a920d9d8fcbc46111d383e0e9ead4b0c919de
+9a05c9b338bc499c0926c982833bfb0c3c4556698ea7362346e73e78c8d4f64f
+77eda8a757d187133571f377b41bd6016b67f2848687ed8f43d12edb2179574e
+4ea99324e72751b78ea156d765124b0e3da72341f05537695e1cd2f0f0d76239
+5d73e5b9c62d54c4f4ac47062856ea888cedbabc4471e8869baff905f988fbdc
+30634362ff0f868c453420a711e69d34fcde238618473fbbd01c25ea560953c6
+ba3db4250a35916d3e32e6c803a129d190cc5c8e4e9c84c89a77b1e3c3925cc0
+b0763aeb168d30201d95d3ae857f7fa6796ac065637ab8b21015b4d31a01d83d
+f79de6fdd8892f4971eebc7691a795a0d74dcc36006a59b44ce89b5863f4e5b9
+29e3779fad19b9e8167978d436d8b216f207bafd8aa257e433f9e55df82b08b4
+a81b8904cf7c8a4853f7477112e4a3d558b7608ce8fe31c8a71930f4bf4a195a
+131494ed43f9aeefa5c84de701232eb5493338b3f0b253f321536bc2643f1fc8
+41008bcb6cc3cc75d5c19b95d1a354aec3a1c6c72bc65fafe0cf14dbc7edadb8
+130e06bd1a2086eead99d219a443b9ed9e85cba8ea974b36467d60deff885591
+59725d84eabe382e84fc9004b3858445fe6ad8c21e986c94e7da642c5bbc8129
+c2d49d5eab29bb835adb88c31603ec1d570dbd63f0776fe53de8cd10ae7fd758
+41c26b3cf17885078842e594152c71f6395d866b388ca93047dee54b710399a2
+ab7c7f9cfc352942ae6a12beb6061cff9ad75e2aecbf25097fd8f65c1ebdeb71
+6e43aeafad8ee20dea378d2d2cd4b00ab63568d477eae80959abbf6535c96f46
+1c3744ae03b54a0bdcab4cbce7d0ac7d70a9cc343499edfbc8c8474135482cfa
+9d775bed585049216f9de14dc0e38185d61af4335ec77883299639224f52d419
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR12
+%!PS-AdobeFont-1.1: CMR12 1.0
+%%CreationDate: 1991 Aug 20 16:38:05
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 169 /Phi put
+dup 170 /Psi put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 188 /germandbls put
+dup 190 /oe put
+dup 193 /OE put
+dup 195 /suppress put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 53 /five put
+dup 56 /eight put
+dup 65 /A put
+dup 67 /C put
+dup 72 /H put
+dup 76 /L put
+dup 77 /M put
+dup 82 /R put
+dup 83 /S put
+dup 85 /U put
+dup 97 /a put
+dup 98 /b put
+dup 100 /d put
+dup 101 /e put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 117 /u put
+readonly def
+/FontBBox{-34 -251 988 750}readonly def
+/UniqueXX 5000794 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204a520640fd7c4d05e35ea5486f
+a43d0e970787203855daccb1ed0b16325828b13b7c767a1a58c87902f0546ea5
+404440fa6526975783c2d7a9572b8e5d5176bac598b8960609f49016aebf3763
+89c1adfe6a1ffc0c53b3acd9d168ec3a278fd4f1d9b085dc2df701346c9d0887
+3d230a161692b42a45bb5da343b4edd839dd60685a59aaa49fc65cd8e2ad2a9c
+5cab953495172a1a9f40d5f38e922443a519dd96f667201a408bd1d89e35f4ab
+98e2f68c3366efc14b5afe1018d9c845d808d4f8e07ea8168518a171ab4d6e21
+70eeac099eb7ef46eb9781384da1fac3b3133bb718bc80082eaea88759745188
+f266b31d0c7e791d633f16ed94e05517a32163e74cbd96dc5db066f2a5313d6d
+7f09465608cb404613e0f058073af000e5bdfafbbf9da0c0d5c02a3447f2cdc1
+f56481901e34265c26d331ac3f85bdcbc7c51ef9eddf2b9c189c5253f8e74282
+d6f053d7d183ae17ea175e5ebc401e67d21a9fea139cbbf3bb1358c713a75843
+b39a69aa2b1a7b975f53ff22d1dc3bdf7acd17afa1da21568310c68241b31d3d
+03bf404bd30baf9cc19c75b958bce7155f03cb0cfe2cae0327aad4b603284a51
+7c26de75b8c6f6aaa9debe4aec08ca4b646d787800acdb445bb55d10cbc2237b
+ffab58a0399b8e1a4709eee6012432005487a6979cabfd75caeaa480f411a990
+8b6d3a2e7e6937783279ac9a51ac69390985d83828feeec2ea288a657e0f79e6
+8ac3451a6bb1c8989c512da066d6dc771548f2da3b78d01c03e2f8f20dbe256a
+ecfe723afaf1bd728b86f31fefb6a4cbbca356f80b837c9a5acb8f511a576a6b
+8ca0a701eba732630025a8438d137831678929805a6e8caae351ddbc9a5be60e
+c8290b795df0ddbceaf0159ab4e7756d967bfc714db64bf3d52d3fd48d2bf9fe
+81eddc7b93896bcd6fa404838ccf381a4212d4676f6e2718ac78146855e9b41f
+a60ff2e5678aca199ac8fcc7aae05b4a426737d2b76817b4a8eafc44c9157bd0
+dc09654583381125063c13cb6d384f562b58832ba16fdb62676cf75321620437
+2572a5c9bda7de4ca36253102e41eef93169921b9e692ce0941a071079d1492e
+1c3f16579fd8fd4385f83c2e76017b58f874d9fdb551f7054dd39c3c570e2a5b
+fedcb669ae17ea671a99187de542c8985d817fa78aa1e80b43e300aeec3a7aed
+53f8bdfec1857d899680e863efcbd1ccdbd7a8471b0e1fc2be55e75476ae335b
+733a1e959420918c2927f30ff1e76b9a2d2cc4f110c88765d4f773c28fb9a8e9
+3343e044fd038287ea387aafc874fb20173ffa90253c78475699d7dd5a4a78e9
+51324dcee3c4411b48b385497e146ceaab2b4c5c4dcf25eb4781b8afdb19df15
+e5076f781d8b9b067be59d2500303d0932d5e5c5947164382237522677ecda55
+eafe55e2763093e8169c5146aaf34b8d80dc0e5053b0690e9182a2245a5125a7
+b8edd5d2d8a3db0563a6ddd04b2de077e083805db377ec2dfbb7e8de8645db4d
+063cd95c1f378da0f810e5501b5027db0202de00a4b7963cdbefb7138221ac8f
+9d93bb9e6a2a13f3298141adda3673ec9d75fd4f77dc2b8f383a57f6522ea0b1
+9b990da31a5bd1fa628a1e6b3faba9d1877f32be82f4bd5cc3712a9659dd2408
+3ae018c98b5cae961c35a8dbff00a520e258dd43a1fb95a38f1cc345fa86b120
+8172d6c437d399dacde79e63a4ce754020f20e85603a64cf7efea736b2032b9f
+66e607a5ac67b0572821cf897714c14a7ec8846dfdd1265644f2fadfcf53db11
+00b531a6249b96bdd8b787841ab33eb3825b019c5ebae46101f98b2656c2f54a
+ea50e2c7dbaba9d057d2f40cf34042dbd467b350297025e45a0e6af60378b165
+83ceae55496493cabe3c188edf65f341a9cedf3599f105900363f49c315d015b
+d0a6f1b5d0beda47b5ad3a8f8c20149b9e5aa0d77b4dfa263a514944bbb73471
+3494febb1324331eae5e17e06381654deca9dee0b5ac693da115466cee254681
+a0045c8eb382e1c23c8b966c8a445322a349b4fe80b08d56b8e334830d66d15b
+c6c41a34a5ec07754fa665b207dfc82da3b66287b1041e790ef7cfb4147405f6
+17c59996cbd30a8d2df6061ed6be126efe339d391d448b45a391a065d5d99850
+2bcf5886eab56ff7d44f6ed13b73990324050d2ea2d49afda846d580fedb7fde
+90ffb37fff6de8f8bf44ef1a2f8dc8e6788e9ba6371c0fbefd097001213dcc67
+c00fd14ef5f90361da68fc3f20c1e3507244e67c23b657c185970e31978ebd7c
+efa9d0ebf609aacb40243d4fc6cc9e5daf47ef15b69d8a7e430686d5f5203e9c
+69118e7fe296941053debbec9ffe611e2813428dfda567b1807b4d05f3cc1f5a
+7ab258b4fa78aeb4c664d6e2f3502ff7d82e105cede7500e62aa7b0fbde4aac7
+351a49c556dd7c8f9cd2d8fb9684d6b4c9936cfe9749485fd7ea190240afa5b7
+9fc2ffcfcc25ced6c6a71b1712464ae30cb6e62b889ccd33224d9d8f084cd7ae
+790926c3ce19c9b1e72ee2b13c3bd494a6c20c3fc1e96559b3d2935fcbf42497
+cf837b8e3a9f397ee625096d52b3fb4aca44728458356d5c7ffe39621c14f1f2
+93920c5f9326af76a7811ad7f4f6bd11bd8fd68b5c7b45f6cd7fa13b7b84e90f
+6b9a6bc4bb14c0584d4e6fc28c26b7c23c3704e103759cfd0e91cabac66bbf80
+4756456794505bb35a9bcda5ce6f2f8aa995c71a499054ff7102a4c5323dfeb5
+cdcb0b45f06cfe82d15583ea7340537e2487eb9560f0ed5a9d1839fee985946a
+3833c2692e54064796e6dca5dc2b37fb58fe6eeaf23975fa45bf8fc7769d030f
+87cb1d9f4f66036f3704e99302dd5984480606569b7272c383f700c45286d782
+1255a431c8e497d98583e7e07bebcb3aa25d81e20e1da561b200833a3e7d6b39
+5a548b6e667c50ee671f3446f08bf55f6ba5906146df6b63e2a91c6c3e258f3b
+a4d68dff54bf51b630e861402113bfc55a4dbee67b9c9c3c34f29e621db4ea9c
+6609221de5991e05a1aa0ee63447a73cb849b304da2ab4b476fddc16a90c3687
+3aa07e33223f36a21517e9d93a03379d5913f8d85c4c6796a110aa3d08db0fd2
+4119315d4f4d23454394f3cef0c0fc30cacfb5a564e8e3fd9f9d264e0ef58560
+67de398d372e2ee683885b084cfe54af8365dc2315f112e161bec5520044f85d
+1b9f727cc214fffb5a4cb48f523040cc74e3cc3b7cc79d355b23e94f2ff6426c
+ad37ff3dc768c905b691e88e3b2ace54945260313f9bce1cf5c13e9dd4f9c360
+3bd81d1e51e23700495e39d0280aaa72f0ab7a81cdaa2c226b047132043ea91c
+b11590b81dc8e5a46ea686b1efac2decd0e004241328ed60a90ef7ac49f34a8a
+d08c92332e1ed82c8d3d99c81e2920887ecff22712836ed30552d8b8fa946356
+6ae11530ad7acb9a14996bdbb2e2195f9107af439d8ab0d08039ea0a870a9fde
+c22b999cddb72a848f8deca8f7c430071090b21927dfd7aadc587e2f016180b9
+50122e723cf076eb3671c2e69eba8f3af728a52ce437ed35ec1a98c9b41dc200
+2de33251203128224e1e5757293a7a1962e685aff263a2a860cc1c6f8a936254
+ac80a4e53388a7ffb85d822c771542e3745e8369ccc1cc5174f5b0159fa9969e
+f3392a7c94296c7bcd83abb466aa33ca117fee9f93c30758a364c1eef5fbd2fd
+4ce9f33999033252259c6013c28ff48ec2b94dfdd21ef1c43984900c68edce30
+5a08296212e9aa651eacbde6a100e77a141376e578c34f4948fbdb228639868b
+7845bc5ef5ec5363962040add854f45e2a6fee5a7b7128afac19bd1c569a13a5
+ccd5dc256fe0e29a00fec10d5572fef5d94561504349f07ccb1205fcab0ae115
+85552678cccbcb04688741e77fe712046464026fdda6661c0fe62e4eddf5eb52
+42b3a00a5bc87827657e37d0a8c25215453f45acc585b5ce67bfef4fe5baf44d
+fbf3aea54486e04b29302c23856e35dd5db3986eb46c9a4f508e9fb4fa47e987
+bc0610f163af286944faded1faa1cf0ea8ddb602bc36b63fae8fddd06b23834c
+3e4c7552cc9d869b6483478bfa9e3897a0c422393ccbc6623453a120ed7ce8ae
+483e70093c1485840a54f0a7bf035848c6c12a76e7770a12c275e9cf297ba6dc
+64f020ac43d93acf275934649fd3d6fe46c7465ee5e7effe96af8edfd6314823
+1184a930303ce3df392f0dfdae0c36f3b13741d01148c5a821a4446dea2ebdda
+f23138566319ce28c6138beaca558fe21cab7fa29c599d570178078ef4998d92
+50b348d35c5dfa523fa37dfc79599cd010f154e03f3bcd12356cd2b93d5d10df
+77a9f17438d524e8b2c21b5f5ee4802f14809e94a3d53d9325f362a39e4ed93c
+78cc94944e208c800a4bfbc3722fd247f173635fc7e2a845f320ba883e5f47ce
+d77997030b247c5005acfa3df7a077c9f6c0a8b13f98452373d04fb2414d22c6
+f1602e9a3f6b7e341a545d2c1480f10b4743d08e55b377f9d60c4a44906fac07
+4bfd3d5a794f1092b3aabde0efaf93c41603a0883c1b381fa9dafb759a33a854
+0580ae753e6dded77fed0d12df9e5321aa9337c57132d19d8bf678fdd4e40a58
+2743c6a6880b763899251ba9cb49f1e200f9150426dabeb5f4453708e971fa66
+8ce53534f016a5ed6c77763b05c884a891e3e96bca9561c2ab6a1e070b4a4a57
+0ce5f02d556fb68e4e970326937f7ec31c821b9f058ccd04374e13cbd2d55363
+810fb027636264485e11fa78bb3c7d88bf19406b78bd971e9374cb3f7a9f1195
+efe4e4a9c63d01d7a9c75b5c37e622398f1fe57df65397955d0393d2c1a5f55c
+e04e1ea4bc95c09a7bb4dddd92384511fb46eb938776ac31cec47842d5521cb4
+99bfa8f4212595fc3a39684722a33617e01d32c9280a59851223f93f0ec2af4a
+615312d7e953f9dd5597f35668e79f9498f0a419afea25b675e8c4ecc4ff00e7
+fa5b918d79b2e434ad1cff7944146479d9e5725deffe074fa91ca6e819f09c35
+f2046ac9b0315da37025df15c810147c39803110cfe24bba0eafedc60939437f
+8a7a5e676b410706cf4a6bd9de1c82af05014ff9d8e1237b30d9d17440746766
+7f54f548faab7f145bc510910a1c488ade1c7d88315c5aba69ebe45b7628148f
+772c7d040c83c951c2f103379b3777d0bbdebcf25d73bb26b9fde3df3b316dad
+24316134fb8ef0263c66de3610f5a0c7ec1fb9aa249b03f6ab7520330b2093a0
+d1f41c54d38cedd92877d3af0c294b17b5b539ad491148f263d352ee0489a108
+8f2916f2cbaabe817551d011dcd89518b42c48afcd066b67fcf561dd6ad065eb
+4e32e1ddb45490a832491a84f474a95dcace8201968bb7f8f33f3dae05a15106
+22f58fcf2e9c07823a7db037bb3439f809336f73606b5c5fbdbef1ff345e289b
+9ef652d27a01019a1387cff17cd267a3d89ca64cfc80c9e39ed84aaaab69e4a0
+e8ffe51a782a11811c083b4f1e14557f2ea03e01d3517b03abe872db1af15586
+117a0482a87b95cfa1669d12e4d0bf69365b722a8de20da08b94519898c63cd9
+fcaecdd67481563341727584e0f03682b252161610c62fcb93a8e0f1b5ea3a85
+20d31ce5315c7d5c3eaee3fa7a17a7c7e3b12f2de3197bd0e2df73a64e422853
+ae6fc655a9cd7df1b3c1c8bf18b3a74a4a9bb08a34c1500f90a31f0be535b492
+173faba2be99695be70ce2bf1edb451a56283319e2e17510e91de0e54e64c5fb
+51b8c724f6af2b985acf0f1a711d54524b63490185c2a45d1c6f0424e0ace086
+af6e11960513eb1e7a6838f48b96f9713650a53b59e164fab8b94701a81aad68
+3bc40b9632f4c827f6cff40eba9d9882819bccc6b57dfbc5d4fae229ad4db5ea
+7228b441410534d2c842ffb59307eca0e6f79ecc42a202e5b1337dde9c0be0c2
+ae4f4d90cc61bf04b7e78e382b8b4b52a35eb89ed02e2068c0e7789b87180e61
+92895db9d0c921782178167529d39895a13f3efb2a89be9704e9f28381333abc
+5965959b52d44360ce99197256e0f083c73c4eba4f3a9a07b2cb5edf4fbcf10f
+1574027c5c647a0fee3935b2bb8b45ec25ca4398a1f8d7a019548588dff6b56f
+7eea99f52986bfc92df25c92c2e2c7e3affbe68a60cbca0fd8dd64c1d02fbd33
+af1fc9528019f80288560a4d8b0c4274ac87ff62596ea4e2d5cf19282784d872
+7b69120b1b731c29159a95aba37a77df1d83a8c68767cbf6688693288b0c9272
+7e586359d65e8fe8f3abd82209b3e42f691ccc34a810f45bbc7aa3034bac17a0
+513b7a4084bb986521bf619b664898e49364b59ea034720719fd5d23ec809b78
+ab07f90a8242c20bba5d3cca60ff4179cb0025fe8812db3cdbb6e6b6045836f1
+4e1fc6546cf32146e9eaf1775c231b17b663a4282b8b1c45c1434ed955fbec9a
+df7f05226c1bbd613a43207656244db53f157c6733bc6ef1cee44c1e83b0180e
+5d6ec3ba79d47fc1f4f40a4229611222ac47541fed2f39748b1a256ce0ee925d
+97831b9fd7acda36e3252a0d714533fe280cc03493c3a0cd0195308b1cdd3c89
+2d1f934133cef756b9c881521d5eea17d27d91debedf662b22a994e7fdc28148
+caf7610f80e3b32d1ffeee3478d98093a196d6d13b380b659a109d0e70374ff3
+446c92d4fa64ee339a310e830202245aee96bc1b3b80f6df672f2fde63347945
+b32d6ea9acc36421c463c474b7c191a3aa3bfb9eaa21497bf0fd73de9a9e8e10
+70ca004d52a730e289c9f21cdd0190aedf969518b5bfb1e7ae6edec6948a0f4b
+6b4d5b61bc4dc9735c6f3901422fe4091645b7402315fa853d8b255804f6e504
+6b7faa7201879741ea04d1bfcd00f77fefb9c0b850bd0fb97d4dba618237ab26
+6e99088a30a84fe4e82449f78d2f2923ccc61d8abfdcb948bf42732dcb26d0fe
+1bb97c1e00ec34f62214ab50cfc603e45634dad1ae565136babe8ab3c0825d82
+cbbf2f281bf94b6be3b249fef8ab3baf4ba8630d8d8025b535590d8162d9cf84
+7f998f572b5aed1273667e7a1005232499fa0be53b798b73cfaee483621c70f3
+48f75e5d338507010094dc21731bd5a5079cf479675c3878e1aa1b6820934d6e
+0942c6e2dc9b99dad62130b192c9e272be8ebf540f14d1b59bbe64de9263f1dc
+51e00ce5644cf49a8351e068c5e42da1b5064e92c460f07c420cf0ae4b4d8e73
+1d3f192ebdc873a5658c855ed119ab178d97f816c2e94d6934dc975f298bfcef
+11dd90b42d11d24622e0f1d749af90974ba0e00d3d7c6e8e3acc363143ee2865
+b481419779d93536562730af35d74afc2eacd94191e83f9920b9a2a19a44a568
+4caa91822b34a37db2a415d22ed843e864cc6c08e784a9b7e2ce0cbe240bf228
+e2f17d7b03d3a3730bab846e22920c8904ac375cdb9155afcd631a5570f2096a
+33064711d30aad01ea7a76ef41632771af5aff8e84387fa94bce1e823a8ef3ae
+1913e95cc5d941e2fa1b6b1425ca3a5a607c0af590964b73bbc90aa148c5a2c9
+5b430b00fa6319ba2c64ef20c37f92c8b8cd0c0a4aea96cc97e266d29c6bb672
+ffccfc4029e400fd4ad0d9907bbbcdc27797fd7c474f133d9718f3f0c4d014cb
+a1451d201c4532cf6f00abc10e48a835ea37ff05463b9b2d87e341b5699b5fe3
+59ca930f9433d2742216115de0c7d2de0f1bf98a012d67db26eb1e9d6edc53d5
+64068cfb9e7e7ea14bdb7cce6cbbe42a1b9d8fe9f87bb2a2ceeed2103ae52c07
+5ed2cc2479f3c41db0185ee83f45aa60d4614cdd76e7c3a4f119f6bf3343e485
+b74e6e233b8b61d46d6ece485de41af8440ba721737a9b21fb5b936c5dc45c58
+00ef778e77c84c778b2cffd0575d3850ead740a53593e887069debc46ab3cb63
+873e698d44511acee99f87a1645dd4c081a38ba948e46b347244fcb7d47e17a8
+c3d8278d85ee23ebfc69f2e39a6633d5f803b5266b42f716587e8c14930d93f5
+dea961a295bb8a4ab9ffe2492f77a98d12532e7dc304000ce09f24cf6c15734f
+39fc6085e2113ab935988797b331c610b5a39a64b1fbd3841355fddc801ac0c2
+1c5e963d421ea4e63d9a131c180fa3acab0f06df97f6526c13b98fb3a4bfc4b5
+a580683fe20c0498bf1454a1666cf86cba695b5eec01fa296534d86bd97e35bd
+8295b00c85103d1eae7dad90aeb0c23d03ad09635f133befd5384817e3607930
+82c20b95f2689206d2110dbea287d40bf20d23915e899d3d20ef57c693087f61
+c29fcdc848d2d09a67010da4bc5c8e21d784e7cfa19b1cacad8518778c6f653d
+3c90b9533f5db21461705b28272daa97a15ba54beb842cdbee69e93f60fd8b3a
+255dc5b7ff6fdf7eb5573c8b4d1b7afda82db98dcd626b789a1766eca1e31558
+d6a86a44446bd75f71df35e99e8017ce52aac1b0fb1bd3bba3e6c49c8c27530c
+68f0bcb4e391b70d00feb94c12ed4a3c77dba2c07877a827bc1bb5c25627729b
+9636e5ecebdb527662cc0f65ddd6766ffef5519d32de5c70ec437ded11f5f626
+535db23f16492691a4f348d5b7d9dc50c423ecd973220950363b4fd34652c12d
+8b13363a476768fd58c7819b3cb2a1309c4de6e6d8c2f0f92565e2f3a8825a03
+7513d6736c8905fec0053f66ae98960fc2f3aa9c68d38ae7c7f6817f5ec1ffab
+1d5728ef85cefbb18f4a3ea19ff9af7755ffd8cf748623f0148d38b69d826e6e
+1942b7d4874a2af7389a0ae1f23ce1b6081bfd162a2d828f2f717434d09cf32c
+c2c184cb31ede0c7805a00e0108bbe33a4bbf935dc68801efb73cce4332afc89
+f86e4449e521e08e9315571563df23f28a48a758ec7733c5fd37ffd00861620d
+3d5f23f7bcc77e6cfab2026a7c26bf5589ea169e2949bbf3964bc83fc487685e
+2e39ed2d2384d80b2aba2220d9f9244e89ed4450f4dd2dbaba9b71428a0a63c2
+97ac7690310e970f9ce8756f5a2d3e829062186b9bce2c5aa489e61afa6a8c31
+27a7ae9bc1d3fcccbc24e496fb215a0f06faf32ae421a46a2b776d01f58fd29d
+90005438a1fb285c8c28d8ddca40e5399c59fdf38f09f2f767ef1b7c452a93f9
+afc2346def9a18767b25bf253776919b75dc1b5746c71e9a42c77cca33f0ab4c
+46353ad5f474082d21d2d5c8370a7315ec0d75bf8c1169aca39b2e59c8b6350e
+ee78ad210c99e2f190d1f58a08786fef3b2c7a01f5f6849e01522609f7b9021a
+35841a8519c7ac8309def188928f0ac1c6c13f19319b35260e8766c1f1270fff
+ca7ddc8f4eb279fe29602e446f031917d8e5c813f12f83fb6dfd53dc39971783
+cedde14546532bbe4aa0c61aa5300d7a17b3992a25b0486012dc4b51278be72b
+b8e5cf456dbb0f491ab23988b1e8b48475e4ba7bfb18b7ad0fc302994c36b9ec
+7d34bd5b63ccaf968fefe29d435900641adc19ab54f9b7fc9054860cdd669493
+b5a6f8ded816514467e24f86c38d72201c632fdcdbe72cf6f6949ff093b61d12
+61926c8beb1e3346a1de1a4739e0ef42ec88176dd730ce21c2531f643e81a2c8
+b35b0758dd77311fadb70e1ac76b6462d9a71ba68e6ceb7651391ba00893f2b9
+c92f385d745379535b90fb76e1d54922a929657bfefc0a60bf5c53a1d254b7df
+24e79f2572e4cd9c2506ef0d72b8f63da13b0677c23c6e8e0aa59890b2f70532
+21f8d092fe2070a475299c9556685310a5b812b3476510802a9efdad58126c15
+fc4453fa916ea3b429e24e0f50712b6b02e259ebb5a245672264ea0264acf251
+6162d2f0f0fe547dacaa7bef8d9895719da6187482b3b15a02c641d7964b2965
+d3961799b09d0704e854070b8f6f1c76777f377a2557ff8f9890154216aec47a
+713a0c4008dbf4577183712a2afbd4276a76c52a507537c7c16eaad269c4dcc8
+5ef0a60b85ae75357f0b19542c7202ce7f31ea974db1eab6369b948e92a2dfd1
+5f9c17ec672935a4e2901e78176d591995edc1a24860cb6c03fcafbda5f0b2ac
+3b56d817dab6d9a1fdc764059bf395dc1088cb7d353599e0f2c1d58fe0cdfb4c
+c09a440afdfc0af7c2cd7758c15cd03ea04b8010afc6674de316e509b146dfa4
+9fba80f0c2ef3de1a64c3ea10de7ff1cf2ca04795ba2aa6ae89dea5f039ca612
+f4d1a8d4182b3737d61c2ddaf9dd679a453591fba54044d31aac9d963b0c09d0
+9f69150a615e4ba878575138511a63e4f061159b7947537d266c627864dadd07
+634a0d4b4f3502df5b03f99ee2e3c96959475a8b0f7bb7bd7264a678308326d4
+abcffd47b5c11f1981f6999a9849a03d35bdb8fd4cbb30f330e3b3d0a8d7cab8
+3146747e6e469345c3752916472571640973d42fd619f848835058189534c42b
+5ee79ce9ea424c7c2091624d47b14a760706bd1915fbfdd401f96fbd3697e854
+6138830f6fbd4e4ebdc2a2f8857827c0e5327654ad87dcce86b663686d7f0b23
+6de59c3e2a9af3b8ea071e49026414ba1567a60334376ec3cee6f06b66120c50
+cc4e133031d9649d1e087b264985931762b21fca7f6a66d9e12d0586d48ca678
+7e38acf6a15193e6456fbfd62b14914205c5a964bdef4431c509f60d98a1180f
+359b5deabb63eb9c0b452944ee0492de97cfe62c18c5ffc1a67ce042a6397f50
+b066b4e4840ec747f02f2601eaf500951bd8c34cb23fa480c5d6d72092d43969
+ef9e5d8a8e6943d45c0e140acbfa0c1b1c37c4aaedeef20416a65e53645df9d0
+3c5b56ea4efab9f8d14c0326512f7a8c9088e0d03b99edc6186382611f0a4cc5
+7120572fcbc91d5186c32d39d0c0750177cfa2abcac28e3394cefca479207843
+f3af2d31f583d8e64a58f10deae87445031a93bcd59232eb1aba43a2a948318b
+40d6663c9ea8ec04d14fc34973bf61dfaeda824e8cff7e5fb397fea8fc103220
+dee8a3f9466333f1d6dc000c5c25bfa306028fc3ec34ae577055de0cf89be617
+cca2380aca6020f704aa672322c658b54da624ab46c9f8c55bff4d25eec285cc
+2b9e639be42478c7f97380d60c0cf9e5bd3170abfee2dd34df29afce382361f7
+1a5148a522bd2ddaed44f232465771ead7f2a7e1d1432eedaeff693f922c912b
+dbca01916a77a3bf0ddcf145f9a67c806e71c81b21c368ba6ebf9543ac1981de
+60f71399f6d345923de2fcb5104365fb9021bc0e8953443f46a573609b231ca7
+e58257d4b643f39157303356711e621421143ca13b17c184a70e737015af65a5
+1271196d84e1e0b108d0c349c0e7cc8587faf6ce04a5290c0104ba8ceee781ea
+ba46375bf013abef99ce5b47bde4e8a9e421a4e0f6dfc71fe8b752f71707ba43
+df86290e0ae0a6b6fdf05160350e58ee8d80ddd4c6380b25c5ce3cf4a29a2c93
+ad67f8cfa29fea871328ccf68afb3c8e6826f3aaea3218efe1621e4ee3893950
+503b7ab22458e3d6db656ef29a5614e6a21227beba10e4ac95921218e1b6fe5d
+37eb85f8046ba35f12f71dab8983d5fa5db4feff518416f902cc434a9b532f5d
+3213f0ba4640b0afb32d0a52722c2d0c328402305648d175d00397a6693fee3e
+4a969d56efee0204911e511dadc41c3986e2a290a5d018981bb89f8519558ba6
+a340040c1c5ad3fb5f71e8aa43bb1220b536dce26838d06d0cc2d8011e06b40d
+976aaf63ea1d6fc3bbb35797f90ac9074437525cfb94378f10e1e7a62511aa1c
+5b314595be16ae78fff7cd3aa70c4b7c8390aa71aeb547a166ec938b4725c60a
+96dbd2192d179af3fac2d2ed398b9efa93a6e5966e572e6742f648a26a50aca0
+ecd17b406682f6d830dab7cb2721564bd703cbdd03fdc44d4f01c44a5ac2ed7a
+2b873dfafc56a2cf41b982e8691148cf9c32b2ce2fb0e0c5be6e2db51bbbcab5
+9585ae96a9948c016f100ee3f20cf744897cfcb00857d7c028c6a303444947ee
+14d4e4c311b0e125529585820ab9718c477fd3a01e079eb2a10798944f6be0e0
+7d113773b42f7a812e86eef02055b55f1affcfb4c9c962730274a691222564b9
+890eea0009bc53b815929a8c895076d2666b1ad6803a74cabd0cd1df3bc55b21
+b3805f8f0829b594fa88e925c77e5e710d34d6b8bff552336d6de4a2c12bf0ae
+c7ac247e52541466be1b3d82877b011088feff7673a9cc6e7d22c96734ca37a0
+a236a148f9d78600efb9621c08ec69b374be1e1a155694181eab8fc328576bf8
+c06ae6ac5da0451982b28c85296de7abbd86d9051518886fb1bcf7208d695e6d
+4bf3416d4d06eff21aae74e0fbc6b5b7765adf553b652252b4b31363beae30c7
+45bb6308aaa836893298b23c4813bc48042edc9e34bd0e9edffc3e5855af4a10
+5ea54645e8276afe950437031fde8ab5b2c628beb9d7923fdd4fe19f060df0f4
+b94c78148ed3a239b56d300eda01e049228ffc80fa71e426e2c7222b16da7376
+a519e514d340e5c8766ae8bdd044646bfb5e1ce795d1a766d6b34ef32427292e
+56b2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR17
+%!PS-AdobeFont-1.1: CMR17 1.0
+%%CreationDate: 1991 Aug 20 16:38:24
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR17) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR17 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /Gamma put
+dup 162 /Delta put
+dup 163 /Theta put
+dup 164 /Lambda put
+dup 169 /Phi put
+dup 170 /Psi put
+dup 174 /ff put
+dup 175 /fi put
+dup 176 /fl put
+dup 177 /ffi put
+dup 178 /ffl put
+dup 179 /dotlessi put
+dup 180 /dotlessj put
+dup 181 /grave put
+dup 182 /acute put
+dup 183 /caron put
+dup 184 /breve put
+dup 185 /macron put
+dup 188 /germandbls put
+dup 190 /oe put
+dup 193 /OE put
+dup 195 /suppress put
+dup 46 /period put
+dup 48 /zero put
+dup 50 /two put
+dup 51 /three put
+dup 68 /D put
+dup 85 /U put
+dup 97 /a put
+dup 99 /c put
+dup 101 /e put
+dup 102 /f put
+dup 105 /i put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+readonly def
+/FontBBox{-33 -250 945 749}readonly def
+/UniqueXX 5000795 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be356c29c3aec91ef17f5d31183b1e489f1fa
+559a6693fbdd04d4f7e99886d8cb7cca13d4aa9ceb34a708af22e69ccef0e504
+c3997075243585edf60b6447c8d01cffb04b6e3ddbaa7da5891286861322a795
+e9d990fd56af2f5c2b35801a0b07874e4ac3170481d232e150443253c92a8b05
+513d4a4154a99d91f629ccd30376500f5d16aaa9b203bad6350e4b19424c0e33
+75f2949bc1927a6f6221252f8a96618e646aa1b0810753c98becc26b37837775
+24bca72b818d314074c1c91f4e1f4148d3d703d12d179ee6970bd55d04aa9a9d
+97f63f2c7dbd129ec2ed3ba5f8080270ea5854ea165dbcc061e2f47f1aaf0997
+2ac9a689a2a9620b91b53f6b5092884372f5f7afca495f331138d85a97c5bb83
+d8072dc88010fc89108b60bc06d4f93c722e8908d7ce3c1ea3c70e9e65edd769
+7db17ce0e012ad37d4030f33d30a73fd655b7a2e572f3378ac933dd75082f2f1
+68702be19bc60cef6bd5f0ada180d21408c04b7f7db9b6dbaefe09e809a80ddf
+a5366d10930d3e68ca53e4721ff525853f4c784f2c2c3aa0129a34d9df00debc
+ae4037e4c0fbdce3989f35964b4c07e7817b805bfe8c15f0c0ebf226cff606b6
+2954f0f42dff8c214a6537ab666d25389c44db7b5866440bbfc137712bcdcc89
+c68cd1adfd85648b1ed29bfb45a564b02172137feef782d604e0d7e1f1737c96
+719cca9e4b9dfdc87e5999b886a15ac572183df8607ecfab5eeafed9f2798b3b
+db56dc26f8b6f000eb0ecf24341c969953e317cb01bf72bf002c07632b5195a2
+8995c0b23034671dd2ff7f0334745a5d09646bb6027b54034f376bea19419a61
+757e497a619513e955d2550a1e22208ff446f974f02c629d4eec9342cac41e24
+3eda835485be27f1d1a6f2be3ac82262b74d067752a8dc602ec14c9f3007faa7
+c3db96201a742d9df127da560c6d8562103d07478718f7ceb6cf2247fbdefd09
+808a98017cdffc586a723f3b9eef5b0536a2aca182cb6bc6f0568d9b4d506c85
+473549ffa1a6d8b9567846f417e8b7c420c9f9ee65a8bbb3054f73fe4f463c3d
+5adde214af4748fa0dd2320f2c8ac5f05e43a7d03b573c2fe8ed7307ba3330ed
+f5fe79aa92a533d285c1897b0b4f03eeda82c0c0167dca4e7395adccca2d26b5
+bf10d2066f69eaf385850f4777c81229d9ba323acaa9df7f8113acfbaf31ef98
+1b23d51e7b1bc32172d7be3af8a17fad1d9d83526c098a411261084508443fdc
+0bcfdbb350f502205b37a1000ba32ee3f9f735e8457cec0cb4d25053767186f0
+855bf5773d01e0502a1a4b961495ed52d5631f8faa0c6e0b7b37e88a38ee9a2c
+25147c363979235b59d0ee00cf3e03362d5ded251030abd3cbc6c33fcc1c9b96
+b96eac27b5be42ac2f58648cf8123ab86588f9c26ea6393db64f7e709f651715
+6ed7e55c0400761d847082a2fe71dfb829c92728698f95c0172b396c5a24d355
+93cda220f741ffd532d3ea29823a05f3a53885757c4378efd2d7919f40052da0
+74ea9d9b06a652b459e50e76e7295ade2fb1c168dde4a490710a9b73751599a9
+4df7e2d378d6dd0d7893b93ba8eae381b2c2453c911a94e84c1798d3d83928a5
+13ef99207d661b47e335410ac1eb7f09028b4c0d2ec0f9f3a10f80b6babe6aee
+9dbf24cad7384093c9d01b945ad39b1b0410254930fe0f2320a92c5f4032c1a3
+e0bb9d464b65d37282c397b4cf412e21c16dabc4be7b7ef83c48680247346573
+6678e2b53bc0384db254c979eab98352532a682c65b6ea42b5dcb39ebd27d803
+5c73fb8c8288293db2494c7715bccec3ce01944412efc59f119bbb24cd25f376
+2036f3feefa065e51a924ae6237a37ee47b87b3207ae2adac92d236569ddefcd
+6f303a315468cb011f123e10fe10c4f77aebbfdb55f7f6ed7e5942e4db758242
+32b9e49fdd57482c60f8b69937621a667a94c29867670aacfabb5ad9afca917a
+6e350bfa625472d1852375d79b12eab5b6af67b04db0257a6ca730303b0dea7e
+dafca2d5a63e3a8f406d87e53b06efc2d4630e008bf5625ced6865260dbc3cc3
+100bbd0b105ecc0c8edbc61e56599af3c414fd20f1f4b44ec0cabe3c8a488e40
+871bd49fe0d9c55a75ab7edde67653205414f5df5f97a99ef8581842ecd92727
+03dd2cc5ed9df22c37e2f33b475dffdcced428ea058ee4292644fec15f322248
+da4097adaf19d53dd5002ba23432bba0b164b4e960af63efde8000acb0ef71ad
+a5e5b13b83bef2091cd59eba186b424aec4e4f754b9e4d01f99a80021c2b6a94
+12925a411fe5b5224ed4d9d5260b94c06e0687aaa5626f8739a39d0e74372aff
+5543e993691203185328eea2eb1776a3bf451e4fe61ef4b5c0d44cf91809f088
+931a4709d5c1559f8c2441d327f88c8c80a35427ef98f3e0eacd182637ed1f90
+b3cb40af6f3362e703e69be66ab16092defc7051066347dc75ff93f3473b949a
+022513b86a624e5356b9aa414fffd1b29957a44ea3a0be2705a21199eb4b81b7
+3d693c320fb7285e52fa43d10f11d027f1d8f918779695fad4dc891871ec0d7c
+9b43d1be0c972d80dec63496242ca1f4166af20a7af4826f48b532d21523b65a
+fa89b051dcead1d5a0b96c33e8ea87acea8443f54955f70fc3c31890b4710e26
+8582f1cc5da5d8e7acd64bb2b5326fa325d06e2a0a9af52acf3c2a13fbf438dd
+31120a45940847bb3d08c56cdf5fc9d2c3d428e264c7f6e2f81514a9b6668bb9
+ccb41ce9088539a1f970f72cebd7c646978f86acb94cfcc94e574fbf672747ed
+59bc1b8066243626673eedddf00a5cf4e42367cd0994a38d1d89976a294f124e
+9fda99d07cf06f24b21ace96b78678dfacde5d30000e3bcdd32fa01615c8420b
+bebb11242a27f144b7b6edbadb1d4b06838c6dc163953974dd10629c71540614
+52a116efc3c8a7c6f7eb887b7f0e2b38610b4c7e6893a954ea644c2b42889a07
+f8a3cfe7dd62ea1a3681cef5c534ab8663fde83a69e3a90a5098f7b5fbe8c089
+e51990ec1a4b8189324d9e1290e67113ea6677885bb8035082bf63ad2843af26
+9cea58e3be338178e0949cd6d630d4d5c1bf5b287d932b823e3c46e056afece3
+4c7ac5f3a926aec88181af97152a172aa4c2014d159f8f668ec1af8fa0394beb
+cc03667460c512d83216c31ae6961221f65ed482832aa691f26be14601886a12
+8bdf6e70ca3fb20d7ad1630df787f851292801b9c4397eb804e5c7249c47b1f3
+08ed548bb2b001ba74982dac36548bacbb83aabb7d7fd7800a8ecbd8d5c3de13
+b13ebc57d57767710d45e6295881c995bef2f28c37f83e89fe52db81abd574f0
+ce3afbc5c35c2e198af16eef564824113d2d1b26dee529836b518d50f3b14924
+fb4432457567f3f720f8a936626a83146410fc830a7093ee653bcff0b99a3519
+204495f9b35c0e2af4ebb142fb7cccdb192659793d458eed7314f6d8931e02c6
+c3cb1cabac9b137e5b5c1ca0ebe7e1d9142b3efe142542d6f22471b9e748804a
+d7e44ab109df413b0bd95001062a628fe1421bd550387f1b325d9a35d65927e3
+189d1cc0b95c761320f837f8ecce87a433c88b25019ff74d951beff36a8e013a
+9007eef8fe056a34180cbdc9ff402fb7018fd5d40db1cc0df6c09e50287691c2
+1c2c2fa577c8ebbf9940a1e44a674c8c4a809157d1d9eeedce23668db1ff55c1
+89268c977b6119336f68c4d460afe6cf3c2c344f04b51da606f00eac6125e3e4
+0808401948bf92e5291358ee0453f00e1d4c4c64cc4b0f2daf54c76f64bb3d92
+f0902bc65e1010c9afbb7be1f28a227b7bdf1e5ae1a0ed37c04ea3e18b3dbe82
+ac3df952cf52d8deee9b17cdd0be600af39f62fe0b2d272c0de9e43f95820a5d
+83f88818ab7745674d09c301cf6a895a760e6b73b939a0c4e9ee02c3ea3b8b18
+8c073f6f85cb517fcb80d79c7b5a867fe2ec65b484cee0ddc961c91979b16ffa
+11e4233261ced063bfbc5165d4839625ffdae8a7b1bd100b280445bba153a54c
+275a5f4b9cbb520a6cd501449d13889e10f5dc2c94050ec3f289c9867ec4d6dd
+032bcf7f4e293446153affd629c5077aba94870a22e5e04e77e178515a860bc6
+77896d272f5b1704466fad027e51762333614ef159405cd2cdc675d6e159c6bc
+990dd35859b86d13cf4302739a688358c9cf07a2534a9e0cc4c4970dc3ef4a9e
+4679d56a2ba444caea41faaae63b3a406d946638c969524cae0b8c5b246e40df
+2e4137402b7aa72bf1c3eb9974efe64aad9c2fbc0fbfb95bf34d49d39f501008
+6cb624e8b0855d3b918ed5063a9aaa1fc30a8a6aa5baac971703ac4fd4ffd189
+0db03e137b913897a22352e237c5076b993543d6e64ca43d2078343a9491eae1
+b44af5a47e8220f5c6018ee8e3dfd1ab45ae4cea5d7aaf8bfb91c1b8ce88dc99
+baa3bf4bc4b86318e6719cbfb241b8c114d881ae37f9fa12b98b6c1fbc12b531
+116b7db80d0c0445676730279d99cbfe75a22bca8a0264f4397c45a952431f70
+66710572f1f295c220d0b8fa68dcf10c7b68e4789b752774228eab55ec1b47b6
+d7c12fccb77d2b31102c275d14228b36fbdd538b0d50e6cdbd78ccd4bacd5b91
+a7a61a0e38a0e2c53c79381daeb3025d89a978488ccadfd1724b4d8fedc2c6e3
+301c98e20ad7dbfec44f5c08c4c80997837d1ada0ce7589eefc1bed4bc061a81
+11fb70ea847553b5d4a39440d7a83589c67072e6567f95e0d3ca07d74362a060
+5a6d1f3140a1e39b0dbac80ff0f409f66ee784cf24482b07a965c80f88943a38
+9ec89b79164e0e23d13577a4bbfb03537b5e5ff05363d28fd1a4d81d4b6f33c2
+8845e7c2dc9e79e76145fc33453d636581ed0b7b82a80aef1490de9bbd053628
+7b70142f339736468a7d5459fa78f7fbd1be01e7362373d4467902109e67d7af
+2e540fd2bfc74460d862e39576aa07f822a1999befaaf2942e511d747f9b4385
+7fecec1647c4769e059187f0b9574cd494e888b66fdebfeb261a002dc3fe5395
+b01384edd70d6012579095e4ec055b05b91e21fee0bac0b439eb3aaacfc8d201
+209a662ef36a4ff68eb4122095476d53fb3911e00b2f6296263315845f0d156d
+9617abd3a5c6d4b2c80bd1f00298f020d833a88d5ef84a53cdd1db9c5df2f80e
+f35dcbde1e7aabd716fb25cb40b3f341ee77534a96f29765b5e20846978b28fd
+1b0965a4a7ed96ec2daa66e05cfb4a063e5efe3c9660e752ea83ca97f57ee52e
+148e8a836a34c01029ca7ee1b253ab8d74768256ce0a9a0f4afa055f53827714
+c596cacec28b294ecdb1e022786ba92f5db086963b29301e454eb190d4e81375
+2e44a46028cf1b7082b480685cd71472928558eb48b6aa8676bd28b3cdbcccb6
+e21a8c9b8327bc57bb85146ebf84d1d7f565140eda22728610d785a165721928
+14143d71aa12b934b29dbe308fe549f715e59ede9b6b6837f2cf059ba52215a5
+f93cca8faea393af1147a255f9f66651eb732c52c39ed12f683a1154eb8d743b
+a9494c49f58dac403acc1a04a9b388df0f41ad8328fc9dcd77ad584fad293d4f
+33e85dcdd3439fe4fc587fe79090261b3c1c694b6027f657f129b4a035cd2b59
+9888db1856e8080fad3da9c207521157b084aca625d0757f4e36d36ed892625f
+d98ccba43debd9ae46237a10160f0429992f72f1a9fb0acec54f97ce3a2fd974
+97621dcf3612a69f2b2b86345cc93f8b691b2c32df7954f34a47be33d7f42390
+d5fe48edd43e06f3067c45fe7da208c62b2b733a195d738acb12c90ca6f82c1b
+5d89745a989c4d40a0275a5b4da780bfae857e7a4c142abf8d275cbe22ed9162
+fa7949719e9920d39e76b13549fa2c75fcfb2eeb69c6a6821bfdf2b44f2962fd
+bd8f1194684137e6516d6eb70d2fb28370b4aa1c6cd4de4cb457021b16c2a664
+b6a9db18e535af56c980dc7b9bc155d7520d2782dcec91584ee9f73a7f0cc05d
+2d0719de9e7fbbee9594e1bfa5a2c112f1d3ec00c85cb7247bebacfcccc637a4
+b1dc2dc212e5aa4da8465292b227f0274c02d19ceba6b1322b538e92e27c0013
+3b3ced04913843a57ba30fdce73dc377d4e8699bbae38acbe2ecc01954953b1b
+761d8f101da2e18b6d071f2e9177697b69e8535b6a7b51154b23f91c678c08cc
+939e0c0d32a945cbc39a4c61cc280d3d4b1f2af30683a45650208c2927d17a8e
+787913804c3cce9f0dfb191f1b87a0744b99ae4940b483fd1980ee84a996a9b4
+9e357c6b0049fd35b46a81fb6e923f212ac34ef10911b6f37fb500ff9a22a528
+e03fbb7585506e5934420c3a951fe4fd5052a697227499348f20f59afaf7a91d
+7af5cbf43080329dffbd3a2718bce4d56b765589abc4c1f967845a4f3642e65c
+aa5e103556e84c387283ebf94689871c05accfd3f74fee5a2300e3709ef5bad2
+c7b57bcef80fd893b9304f84abc5eba4c2792c99418366ea8f8e55de1f9e8145
+74a8cd47187561e37b09e0aa072ac97b8486e11aba5fecbda4b19c64c12df963
+f81297380e00d6477e1768bd19e8737f2222ef37ae71af62501a711a1ad409c9
+98607a29afde6e0318093d7ecca3a8be09ae74bdff21a240db7463e8141095ba
+573099f597a14a884e1a095fda207e326eac76fdacb8bbff0463c69e67ab65a3
+f916e0881ff9af7e391afedcaaa99c3a453144a9296d892975b1f0bacf37dab7
+dd41dc8ad3be8dfbbd3df8080ae71ecc22fc1a2bf9d5caed2622bfc31e10d366
+1ad605ae6e8f62e8e60914c094818c6b363e6563eab9f55f8a2518a6932fdadf
+b55fd656f8563cd130e1b7372907f56790e45e4e8f27493ea91e645f4bd8c78b
+19953a74637aee3652e6d074ff15ed2a87b1170effba58bd3db8ede5413db133
+7a527ef502cee4d4f2282c0aeeff703df914cc7a1bec3ee0dfc1996d75b09af3
+f89dd8891bc40828dbf73c1e5d44ca6633d5568936999ada17f490b99916e625
+bfb4d3796901cccefd5e460d4464b271185c10d9f1d9ea24293a61ce2c75eb5f
+152c8c5d63dd31ca2df0deb2a519fad16e713f4d88e70563e08b054ce9bed8a4
+cdfba0ad67685866ec001abd9f5d6ee67057e6b3df8e9607c4966812dad20566
+15be9d98f9383ae69beee0e87bfded35e3c6c209231b7ca900c8ed0c1d58e642
+c0a26977117fc763f11731dd0ca0f292d51b6787fd11ea3d220ab3db228c4216
+8d1af298b81e5f122b1b204352068881ca1f94bf9e13a716a18176e03813f1d8
+2255638fe16fbe4e018877c016a522ad3db6773628e4f3330d5ba5cad9da5031
+b44a0c7f677cdaac53eb27676ebf31b6c99743e19966d7d1a89ef6175486aeca
+e7cfbc4ef0284e97e3a8ea49a514acda9c1eea4493e664b8fc4923981fd481b8
+ba7b73640d82ccc3cd3fd6d4b33eb8fec92d320c67064db1d3c20232630ac366
+d2103efdb492f895d886ee1d8197b305927a7870b608dd65045e49c478be2581
+2fc8d9965c52ec648a18799e937b93709d81bb62bba92bb6003b8287f916c190
+0dc99c3c6bc6128e87e8813bd0ad9693ceb2acc4941dcf278333e4bf1de5e1fa
+d0acc06ed68c3478c74e620c8eb3dcb78e232da24ec0eb4024f44d7e6759df89
+9d35f3d672cf08debb7af91f34ccb88bb1bcd4d63e81dca4c404261516992f82
+e1a892592e08b9da4c4e78273394b0c4458a37b1317ef701176f42cfb369892b
+92687232c0e939ea3c7884f9bcb982240f76151808529fd594a1e595169c64b6
+1c67b6100e3c9381e49d8b1078ba68be73e727aa167e124244268f439c2f5f88
+e9c0614ccca2bfce86f20fb60f85624c621820294e5f78684584bae6b6fe8ac5
+0ecab929afbe0057d25871c3ac9b9c9ca25ac2a3710825bfc4a0e926b3d9f6ba
+75922419fa5899fc2aed6ab4b8e84de4bb52c633fa81b52a724dd8ad879953d5
+f0c0b29490f365fdcdeca14791ea238f7bb83c6c8659ccff8c0291b95c6c0b36
+848781c486411afaedf13cf5b9a740f4c24d884904e1a71f7c1eb1e4d9022634
+e0cb26095d454d145760dc97847e88b303c7532c8bce9d3e72c5c7e3f153e350
+c45cd5bd00c816edde3462c7ccff54d5901879d0c06315da2c47fb8ee76acc6c
+48cb21439ba23435e45b6f600d32372c0bc30b26241ced6bc035534f7803a4ac
+f8f404eca7a84b26a45a35cfe9588ce7042ca3f2f05d3eacaceda2d282511998
+ac40fd0dbf023e4d9035032b9edc8388082e32669ec7dc74229acf07bdc6dc27
+4bfcfbfa1cf982f787effb45df15e283870ad10656da4e68638463bff4aa8faa
+dd5e87173ae4962bc538ca5922d6bda0fd4594bfea66e2aa0abe0ef82da90012
+59105fff699177488101ac6bb051fe9fb38ccac3873bf76eb20b93bb9a3445c9
+eb1c8150e1225770f86d87854fb6486e236be7b535e20137f8b25c25ceb59146
+407d5357388f6b94fdc024ea23b0b0b677cf57b57020a060ba222a0d6d7f2cab
+aaad057924549932b648c78b33e03fdaa3227da1a153f32d4df469fcc29ef5e0
+157b50ff8df7a037e4c99aae2048c46721fa66dbd0d530084f02d574f992f79b
+d4095ec023a74c841f9b073bc6c135ec1854a67d815cda2dff27f621a121bf3b
+ed95b08a37d34c0a8f1ec85739e0f219f5eda7095546020c4532fe1c610ddef2
+fbe39e06ad6fda0011920c3de9463fd27854e2306012e15b9501bca85fa5022a
+78b25c0eb4a160471275f4a9bb27030f40e427d8fecc0dd529643692f32b4934
+a706541f3dcd81d1c4c973a5da54ca4a549849fb7c56b704b4c59a093405fefa
+1355e9490cb366b0e6e92510b54cca406fa95930960a2b6596af18017f3db638
+a0c819323117883cdda599c051d027e519b9c0a15b3cf458eff5d2979c2d5311
+1c973fbb2139ba7b62b2230d42336b13a707a0ca4217408b037d0ec691a52f4e
+c6d71ea7df24e1e756f6f36d7f1dfd2b4fc14c259ea18da458686874956b83bc
+ae8529e19ab867a0230cab9729b5fcdf4297f49fc97dbc69213077111d0e4b5a
+241059a94b194db42129811302545c977fb839081707e82b87a1bf4e11f8f8f6
+0cc909c83d7b96cf9ddfd2056f90333e2ff39d8c3aea0e3ad9f1de1f596c55d7
+622f008ca310099509770a4900107cdae5837fa6a39bbdd52714cd6fcae2106e
+72ecbeb4c6ecb8e42206cfbf63900218a729584480370e53196e3c35107e28b2
+6bbd425448f646a5c2728d655f2ece4f4feecf9c8a5968eb01b17bda6d06d284
+9730a66161d403043d69a43f91597d6ae428ec972452e927a71c5e59f76e43ab
+8e81738130f2df4bab64a39aab526cbe3d86cdc695dfa095e1e19021dc1d65ca
+568ef2b2051bf795d0dbc42b2848fce0cdcdc9871df01c3920d9bab270ad7860
+d8843b8f5192d9e10e1c1eb247b0a02f1c3dca584011b54fac7b2097b8508811
+238f321d5c4af9d268f816fb4989eb7d0cba9598d07fe768330a0378fb8749ee
+bade65732cdb7bb4eb3768afdf53736cf28e06b071073cd68b1d4a7d34755476
+e2c012d4dc67b8b5260ce07a3287da114600d8d3c6cc1a8111d2831f274c6a89
+15b9d7f3ed879ae3b835b21f3ea8896794d781733cb84d84b6a3468658accf4a
+d0c122e0e882ab45003a197bc328a8d1a7834725a13939f976179f2b4ed36718
+c4c32c05c7d20c7a843348737fa70d8971f8e65b9fa5354e0eee1e515d6e9d40
+e703f9eac14408fa6232dec6519f3290c9cdd78e2f98da95b5d1651727fea0ab
+fb9d80b8eaca1c890d0ea15233b104f788cc8c2c636a44ab3ea3e7bbf24657ce
+e7770b277e6685cb51b763a7eb95228d4572dfea69b864f176f83612fb7bb3a5
+960a51dd35e7f53d035dec3640c9aef631c07b54cf87c0500626326e4ad9520c
+bb96be976786c16b0019e86fc44fa9f927c0791257ff34b27e2ec6f7c2c8b2a0
+c4d4c9abbdd8d6135122f7c8b9e9d7bbfb3e6460274c1a8ea8654a5e453226c1
+e9637bff069f0ba98bb5de6fe968fa15342ca2f2bd859118a63b42d804a01564
+6448cfebaf84fed21959d6eb2a3c5a120b7595b0fe39fb3c1a53a9feb21b2a37
+8b308f4a9dd03a5175dfd7371ead27938d7742791ea4c420f92de9ead9122912
+1b5d0500f132763e7bfe357e296be83b972b1faff4e1ef17997a7896
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+TeXDict begin 39158280 55380996 1000 8000 8000 (ida_guide.dvi)
+ at start /Fa 139[684 684 4[684 8[684 684 2[684 19[684 8[684
+1[684 66[{}9 1328.35 /CMTT12 rf /Fb 167[922 88[{}1 1106.96
+/MSAM10 rf /Fc 135[540 2[569 398 404 401 1[569 512 569
+853 284 2[284 1[512 313 455 569 455 1[512 97[{}17 996.264
+/CMSL9 rf /Fd 222[284 33[{}1 996.264 /CMR9 rf /Fe 150[296
+105[{}1 664.176 /CMMI6 rf /Ff 134[465 2[458 30[888 8[747
+1[640 1[514 2[733 9[470 33[538 27[{}9 885.568 /CMMI8
+rf /Fg 143[784 4[470 107[{}2 885.568 /CMSY8 rf /Fh 134[497
+1[680 497 523 366 371 367 497 523 470 523 784 261 497
+1[261 523 470 288 418 523 418 523 470 9[966 2[680 523
+692 3[705 862 588 3[705 3[718 2[705 3[732 1[261 9[470
+2[261 314 261 732 1[366 366 38[784 1[{}43 885.568 /CMR8
+rf /Fi 205[406 406 49[{}2 664.176 /CMR6 rf /Fj 207[244
+47[600{}2 553.48 /CMSY5 rf /Fk 146[680 109[{}1 553.48
+/CMMI5 rf /Fl 141[1107 1107 1107 23[1599 7[1168 46[876
+876 12[815 815 661 661 6[646 646 8[{}13 1106.96 /CMEX10
+rf /Fm 138[523 334 418 411 406 456 437 547 786 280 471
+366 313 3[420 461 396 1[480 12[523 5[701 844 15[454 1[263
+59[{}22 774.872 /CMMI7 rf /Fn 135[465 2[489 346 351 2[489
+441 489 727 3[251 7[441 9[892 3[489 643 4[796 15[680
+8[441 441 441 441 441 4[680 1[346 346 40[{}23 774.872
+/CMR7 rf /Fo 207[255 47[692{}2 774.872 /CMSY7 rf /Fp
+133[515 543 633 792 537 634 400 519 499 494 557 1[664
+972 330 576 456 381 638 528 542 515 576 479 475 585 461
+8[1045 1[756 647 679 841 1[711 844 889 1074 753 1[614
+487 1[870 712 2[791 1[830 588 1[861 553 861 307 307 27[660
+2[633 9[550 2[492 2[708 11[{}53 1106.96 /CMMI10 rf /Fq
+147[581 2[581 6[581 98[{}3 1106.96 /CMITT10 rf /Fr 133[453
+537 1[736 509 594 368 453 467 509 566 566 622 905 283
+1[339 339 566 509 339 509 566 509 509 566 3[339 1[339
+4[823 2[622 2[751 849 823 993 2[581 427 823 2[751 836
+792 1[823 16[566 1[339 396 1[849 4[849 25[622 679 11[{}46
+1106.96 /CMTI10 rf /Fs 135[492 7[922 4[553 307 2[553
+553 47[0 4[1107 16[1107 6[861 3[861 861 2[861 1[553 11[553
+861 307 861{}18 1106.96 /CMSY10 rf /Ft 133[664 789 789
+1079 789 830 581 589 610 1[830 747 830 1245 415 2[415
+830 747 457 682 830 664 830 726 12[1039 830 1115 1[1021
+1122 1[1418 898 1[772 557 1[1175 939 981 1145 1079 1[1128
+8[747 747 747 747 747 747 747 747 747 1[415 498 3[581
+581 27[830 12[{}52 1328.35 /CMBX12 rf /Fu 133[797 946
+946 1[946 996 697 707 732 1[996 897 996 1494 498 946
+1[498 996 897 548 818 996 797 996 872 10[1354 1378 1247
+996 1338 1[1225 1347 1402 1701 1077 2[668 1402 1410 1[1177
+1374 1295 1275 1354 7[897 897 1[897 897 897 897 897 897
+2[498 598 5[498 26[996 12[{}53 1594.02 /CMBX12 rf /Fv
+206[377 5[569 43[{}2 553.48 /CMR5 rf /Fw 139[1004 1[1055
+1[1435 7[1435 2[1178 3[1256 29[1865 9[1291 1291 1291
+1291 1291 1291 1291 1291 1291 49[{}16 2295.84 /CMBX12
+rf /Fx 137[679 679 654 507 667 1[617 704 679 827 568
+704 1[335 679 710 593 617 691 654 642 679 8[901 2[901
+4[821 1[901 1095 756 2[449 2[789 2[870 21[418 45[{}30
+1106.96 /CMCSC10 rf /Fy 130[581 1[581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 1[581 1[581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 581 581 581
+581 581 581 581 581 581 581 581 581 581 581 2[581 581
+581 581 3[581 1[581 581 581 581 581 581 581 581 581 581
+581 581 581 581 1[581 581 1[581 35[{}80 1106.96 /CMTT10
+rf /Fz 133[1377 1635 1635 1[1635 1721 1205 1222 1265
+1[1721 1549 1721 2582 861 2[861 1721 1549 947 1414 1721
+1377 1721 1506 10[2340 2381 2155 1721 2311 1[2117 2327
+2423 2939 1862 2[1154 1[2435 1948 2034 2375 2238 2203
+2340 65[{}40 2754.12 /CMBX12 rf /FA 131[1107 553 492
+584 584 799 584 615 430 437 434 584 615 553 615 922 307
+584 338 307 615 553 338 492 615 492 615 553 3[307 553
+307 676 830 1[1138 830 830 799 615 815 861 753 861 830
+1015 692 861 569 400 830 869 723 753 846 799 784 830
+3[861 1[307 307 553 553 553 553 553 553 553 553 553 553
+553 307 369 307 861 553 430 430 307 4[553 11[553 7[922
+615 615 646 9[922 1[{}85 1106.96 /CMR10 rf /FB 132[636
+566 672 672 919 672 707 495 502 524 1[707 636 707 1061
+354 672 389 354 707 636 389 583 707 566 707 619 3[354
+1[354 2[962 1[962 979 886 707 955 1[870 956 996 1208
+766 2[483 996 1001 801 836 976 919 906 962 7[636 636
+636 636 636 636 636 636 636 636 1[354 424 5[354 26[707
+12[{}62 1106.96 /CMBX10 rf /FC 134[631 1[863 598 697
+432 1[548 1[664 664 731 1063 332 2[399 1[598 399 598
+664 598 598 664 13[731 4[966 1[815 8[930 1[966 52[731
+12[{}25 1328.35 /CMTI12 rf /FD 138[723 1[513 506 1[723
+1[723 1084 361 2[361 723 2[578 723 1[723 650 11[975 1[723
+957 4[1192 813 3[975 4[939 1[975 8[650 2[650 2[650 650
+650 1[361 434 45[{}28 1328.35 /CMR12 rf /FE 150[578 4[1194
+2[1173 97[{}3 1912.83 /CMCSC10 rf /FF 137[927 977 677
+687 677 2[877 977 1477 3[478 2[527 777 1[777 1[877 11[1326
+16[1352 16[877 877 1[877 1[478 46[{}19 1912.83 /CMR17
+rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 8000dpi
+TeXDict begin
+%%PaperSize: A4
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop Black Black Black Black 14472 16051 a FF(User)579
+b(Do)50 b(cumen)-50 b(tation)579 b(for)f FE(id)-43 b(a)579
+b FF(v2.3.0)17257 20922 y FD(Alan)434 b(C.)g(Hindmarsh)f(and)g(Radu)h
+(Serban)16542 22471 y FC(Center)463 b(for)i(Applie)-66
+b(d)464 b(Scienti\257c)d(Computing)16374 24021 y(L)-66
+b(awr)g(enc)g(e)463 b(Livermor)-66 b(e)463 b(National)h(L)-66
+b(ab)g(or)g(atory)25020 27180 y FD(April)433 b(2005)22816
+75432 y(UCRL-SM-208112)p Black Black eop
+%%Page: 2 2
+2 1 bop Black Black Black Black 19852 14944 a FB(DISCLAIMER)0
+17379 y FA(This)432 b(do)31 b(cumen)-31 b(t)433 b(w)-31
+b(as)432 b(prepared)e(as)i(an)g(accoun)-31 b(t)433 b(of)f(w)-31
+b(ork)432 b(sp)31 b(onsored)431 b(b)-31 b(y)432 b(an)f(agency)i(of)f
+(the)g(United)g(States)0 18708 y(Go)-31 b(v)g(ernmen)g(t.)467
+b(Neither)290 b(the)g(United)g(States)g(Go)-31 b(v)g(ernmen)g(t)290
+b(nor)f(the)h(Univ)-31 b(ersit)g(y)291 b(of)f(California)i(nor)d(an)-31
+b(y)290 b(of)g(their)0 20036 y(emplo)-31 b(y)g(ees,)423
+b(mak)-31 b(es)411 b(an)-31 b(y)412 b(w)-31 b(arran)g(t)g(y)-92
+b(,)423 b(express)409 b(or)i(implied,)423 b(or)410 b(assumes)h(an)-31
+b(y)411 b(legal)h(liabilit)-31 b(y)415 b(or)410 b(resp)31
+b(onsibilit)-31 b(y)0 21364 y(for)496 b(the)g(accuracy)-92
+b(,)529 b(completeness,)g(or)495 b(usefulness)h(of)g(an)-31
+b(y)497 b(information,)531 b(apparatus,)e(pro)31 b(duct,)528
+b(or)496 b(pro)31 b(cess)0 22693 y(disclosed,)409 b(or)400
+b(represen)-31 b(ts)399 b(that)i(its)f(use)g(w)-31 b(ould)401
+b(not)g(infringe)g(priv)-61 b(ately)402 b(o)-31 b(wned)401
+b(righ)-31 b(ts.)586 b(Reference)399 b(herein)h(to)0
+24021 y(an)-31 b(y)454 b(sp)31 b(eci\257c)452 b(commercial)k(pro)31
+b(duct,)474 b(pro)31 b(cess,)473 b(or)453 b(service)g(b)-31
+b(y)453 b(trade)h(name,)475 b(trademark,)g(man)-31 b(ufacturer,)476
+b(or)0 25349 y(otherwise,)329 b(do)31 b(es)318 b(not)g(necessarily)g
+(constitute)i(or)d(imply)j(its)e(endorsemen)-31 b(t,)329
+b(recommendation,)i(or)318 b(fa)-31 b(v)g(oring)320 b(b)-31
+b(y)0 26678 y(the)414 b(United)h(States)g(Go)-31 b(v)g(ernmen)g(t)415
+b(or)f(the)g(Univ)-31 b(ersit)g(y)416 b(of)e(California.)630
+b(The)414 b(views)h(and)f(opinions)h(of)f(authors)0 28006
+y(expressed)439 b(herein)h(do)h(not)g(necessarily)f(state)h(or)f
+(re\260ect)h(those)f(of)h(the)f(United)i(States)f(Go)-31
+b(v)g(ernmen)g(t)441 b(or)g(the)0 29334 y(Univ)-31 b(ersit)g(y)371
+b(of)e(California,)k(and)d(shall)g(not)g(b)31 b(e)368
+b(used)h(for)g(adv)-31 b(ertising)371 b(or)e(pro)31 b(duct)369
+b(endorsemen)-31 b(t)370 b(purp)31 b(oses.)1660 33319
+y(This)399 b(researc)-31 b(h)398 b(w)-31 b(as)399 b(supp)31
+b(orted)398 b(under)f(the)i(auspices)f(of)h(the)g(U.S.)g(Departmen)-31
+b(t)399 b(of)g(Energy)g(b)-31 b(y)399 b(the)f(Uni-)0
+34648 y(v)-31 b(ersit)g(y)346 b(of)g(California,)354
+b(La)-31 b(wrence)346 b(Liv)-31 b(ermore)346 b(National)i(Lab)31
+b(oratory)346 b(under)f(con)-31 b(tract)347 b(No.)485
+b(W-7405-Eng-48.)p Black Black 9377 81545 a(Appro)-31
+b(v)g(ed)370 b(for)g(public)f(release;)h(further)f(dissemination)i
+(unlimited)p Black Black eop
+%%Page: 3 3
+3 2 bop Black Black 4000 15899 a Fz(Con)-86 b(ten)g(ts)4000
+22901 y FB(List)424 b(of)h(T)-106 b(ables)39792 b(v)4000
+25475 y(List)424 b(of)h(Figures)38523 b(vii)4000 28048
+y(1)1024 b(In)-35 b(tro)35 b(duction)38687 b(1)5660 29460
+y FA(1.1)1133 b(Changes)370 b(from)g(previous)g(v)-31
+b(ersions)587 b(.)554 b(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 2094 w(1)p Black 5660 30872 a(1.2)1133 b(Reading)371
+b(this)e(User)g(Guide)490 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
+(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)f(.)p Black 2094 w(2)p Black 4000
+33445 a FB(2)1024 b(ID)-35 b(A)425 b(Installation)f(Pro)35
+b(cedure)30409 b(3)5660 34857 y FA(2.1)1133 b(Installation)373
+b(steps)694 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 2094 w(3)p Black
+5660 36269 a(2.2)1133 b(Con\257guration)372 b(options)1044
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+f(.)p Black 2094 w(4)p Black 5660 37680 a(2.3)1133 b(Con\257guration)
+372 b(examples)1013 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)f(.)p Black 2094 w(8)p Black 4000 40254
+a FB(3)1024 b(Mathematical)424 b(Considerations)29355
+b(9)4000 42828 y(4)1024 b(Co)35 b(de)427 b(Organization)34587
+b(13)5660 44239 y FA(4.1)1133 b(SUNDIALS)369 b(organization)437
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)
+p Black 1540 w(13)p Black 5660 45651 a(4.2)1133 b(ID)-31
+b(A)369 b(organization)606 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540
+w(13)p Black 4000 48225 a FB(5)1024 b(Using)426 b(ID)-35
+b(A)39077 b(17)5660 49636 y FA(5.1)1133 b(Data)370 b(t)-31
+b(yp)31 b(es)1092 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540
+w(17)p Black 5660 51048 a(5.2)1133 b(Header)370 b(\257les)765
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(18)p Black
+5660 52459 a(5.3)1133 b(A)370 b(sk)-31 b(eleton)370 b(of)g(the)f
+(user's)g(main)h(program)779 b(.)554 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(18)p Black 5660 53871 a(5.4)1133 b(User-callable)371
+b(functions)607 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)f(.)p Black 1540 w(20)p Black 8206 55283
+a(5.4.1)1270 b(ID)-31 b(A)369 b(initialization)374 b(and)369
+b(deallo)31 b(cation)373 b(functions)1055 b(.)554 b(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black
+1540 w(20)p Black 8206 56694 a(5.4.2)1270 b(Linear)369
+b(solv)-31 b(er)370 b(sp)31 b(eci\257cation)370 b(functions)1037
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(21)p Black
+8206 58106 a(5.4.3)1270 b(Initial)371 b(condition)g(calculation)i
+(function)646 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(23)p
+Black 8206 59517 a(5.4.4)1270 b(ID)-31 b(A)369 b(solv)-31
+b(er)369 b(function)1084 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)f(.)p Black 1540 w(24)p Black 8206 60929
+a(5.4.5)1270 b(Optional)371 b(input)f(functions)364 b(.)554
+b(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black
+1540 w(25)p Black 8206 62340 a(5.4.6)1270 b(In)-31 b(terp)31
+b(olated)370 b(output)h(function)1013 b(.)554 b(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 1540 w(37)p Black 8206 63752 a(5.4.7)1270
+b(Optional)371 b(output)f(functions)549 b(.)554 b(.)g(.)g(.)g(.)f(.)h
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)f(.)p Black 1540 w(37)p Black 8206 65163
+a(5.4.8)1270 b(ID)-31 b(A)369 b(reinitialization)k(function)291
+b(.)554 b(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black
+1540 w(48)p Black 5660 66575 a(5.5)1133 b(User-supplied)369
+b(functions)1093 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)f(.)p Black 1540 w(49)p Black 8206 67986
+a(5.5.1)1270 b(Residual)370 b(function)410 b(.)554 b(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540
+w(49)p Black 8206 69398 a(5.5.2)1270 b(Error)368 b(w)-31
+b(eigh)g(t)372 b(function)1022 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)f(.)p Black 1540 w(50)p Black 8206 70809
+a(5.5.3)1270 b(Jacobian)370 b(information)j(\(direct)d(metho)31
+b(d)370 b(with)g(dense)f(Jacobian\))1096 b(.)554 b(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)f(.)p Black 1540 w(50)p Black 8206 72221 a(5.5.4)1270
+b(Jacobian)370 b(information)j(\(direct)d(metho)31 b(d)370
+b(with)g(banded)f(Jacobian\))1103 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)f
+(.)p Black 1540 w(51)p Black 8206 73632 a(5.5.5)1270
+b(Jacobian)370 b(information)j(\(SPGMR)c(matrix-v)-31
+b(ector)371 b(pro)31 b(duct\))334 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)f(.)p Black 1540 w(53)p Black 8206 75044
+a(5.5.6)1270 b(Preconditioning)372 b(\(SPGMR)d(linear)h(system)f
+(solution\))508 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)f(.)p Black 1540 w(53)p Black 8206 76455 a(5.5.7)1270
+b(Preconditioning)372 b(\(SPGMR)d(Jacobian)i(data\))851
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)f(.)p Black 1540 w(54)p Black 5660 77867 a(5.6)1133
+b(A)370 b(parallel)h(band-blo)31 b(c)-31 b(k-diagonal)373
+b(preconditioner)d(mo)31 b(dule)951 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(55)p
+Black Black 27539 81188 a(iii)p Black eop
+%%Page: 4 4
+4 3 bop Black Black 0 6974 a FB(6)1024 b(Description)426
+b(of)f(the)g(NVECTOR)g(mo)35 b(dule)23559 b(61)1660 8302
+y FA(6.1)1133 b(The)370 b(NVECTOR)p 12235 8302 333 45
+v 400 w(SERIAL)f(implemen)-31 b(tation)672 b(.)554 b(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
+(.)p Black 1540 w(65)p Black 1660 9631 a(6.2)1133 b(The)370
+b(NVECTOR)p 12235 9631 V 400 w(P)-92 b(ARALLEL)369 b(implemen)-31
+b(tation)534 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(67)p
+Black 1660 10959 a(6.3)1133 b(NVECTOR)371 b(functions)f(used)f(b)-31
+b(y)369 b(ID)-31 b(A)655 b(.)554 b(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)
+p Black 1540 w(69)p Black 0 13394 a FB(7)1024 b(Pro)-35
+b(viding)425 b(Alternate)h(Linear)e(Solv)-35 b(er)425
+b(Mo)35 b(dules)20894 b(71)0 15830 y(8)1024 b(Generic)425
+b(Linear)g(Solv)-35 b(ers)425 b(in)f(SUNDIALS)23917 b(75)1660
+17158 y FA(8.1)1133 b(The)370 b(DENSE)f(mo)31 b(dule)730
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 1540 w(75)p Black 4206 18486 a(8.1.1)1270
+b(T)-31 b(yp)31 b(e)369 b Fy(DenseMat)518 b FA(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(75)p Black 4206 19815 a(8.1.2)1270 b(Accessor)368
+b(Macros)867 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)f(.)p Black 1540 w(76)p Black 4206 21143 a(8.1.3)1270
+b(F)-92 b(unctions)747 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(76)p
+Black 4206 22471 a(8.1.4)1270 b(Small)371 b(Dense)d(Matrix)i(F)-92
+b(unctions)1061 b(.)554 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(76)p Black 1660 23800 a(8.2)1133 b(The)370
+b(BAND)f(mo)31 b(dule)376 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(78)p
+Black 4206 25128 a(8.2.1)1270 b(T)-31 b(yp)31 b(e)369
+b Fy(BandMat)1099 b FA(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
+(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(78)p Black 4206
+26456 a(8.2.2)1270 b(Accessor)368 b(Macros)867 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(78)p Black 4206 27785 a(8.2.3)1270 b(F)-92
+b(unctions)747 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540 w(80)p Black
+1660 29113 a(8.3)1133 b(The)370 b(SPGMR)e(mo)31 b(dule)461
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)f(.)p Black 1540 w(80)p Black 0 31548 a FB(9)1024
+b(ID)-35 b(A)425 b(Constan)-35 b(ts)36709 b(83)1660 32877
+y FA(9.1)1133 b(ID)-31 b(A)369 b(input)h(constan)-31
+b(ts)810 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)f(.)p Black 1540 w(83)p Black 1660 34205
+a(9.2)1133 b(ID)-31 b(A)369 b(output)i(constan)-31 b(ts)994
+b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+f(.)p Black 1540 w(83)p Black 0 36640 a FB(Bibliograph)-35
+b(y)39586 b(87)0 39076 y(Index)43575 b(89)p Black 23554
+81188 a FA(iv)p Black eop
+%%Page: 5 5
+5 4 bop Black Black 4000 15830 a Fz(List)1032 b(of)h(T)-258
+b(ables)5660 22693 y FA(2.1)1133 b(SUNDIALS)369 b(libraries)h(and)f
+(header)g(\257les)600 b(.)554 b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 2094 w(5)p Black 5660 25128 a(5.1)1133 b(Optional)372
+b(inputs)d(for)h Fx(id)-25 b(a)p FA(,)369 b Fx(id)-25
+b(adense)p FA(,)371 b Fx(id)-25 b(aband)p FA(,)369 b(and)h
+Fx(id)-25 b(aspgmr)780 b FA(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)f(.)p Black 1540 w(26)p Black 5660 26456 a(5.2)1133
+b(Optional)372 b(outputs)e(from)g Fx(id)-25 b(a)p FA(,)369
+b Fx(id)-25 b(adense)p FA(,)371 b Fx(id)-25 b(aband)p
+FA(,)369 b(and)h Fx(id)-25 b(aspgmr)903 b FA(.)554 b(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)f(.)p Black 1540 w(38)p Black 5660 28892
+a(6.1)1133 b(Description)370 b(of)g(the)f(NVECTOR)i(op)31
+b(erations)895 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540
+w(63)p Black 5660 30220 a(6.2)1133 b(List)370 b(of)g(v)-31
+b(ector)370 b(functions)g(usage)f(b)-31 b(y)370 b Fx(id)-25
+b(a)369 b FA(co)31 b(de)369 b(mo)31 b(dules)620 b(.)554
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f
+(.)p Black 1540 w(70)p Black Black 27708 81188 a(v)p
+Black eop
+%%Page: 6 6
+6 5 bop Black Black Black Black eop
+%%Page: 7 7
+7 6 bop Black Black 4000 15830 a Fz(List)1032 b(of)h(Figures)5660
+22693 y FA(4.1)1133 b(Organization)372 b(of)e(the)f(SUNDIALS)g(suite)
+336 b(.)554 b(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black
+1540 w(14)p Black 5660 24021 a(4.2)1133 b(Ov)-31 b(erall)371
+b(structure)e(diagram)h(of)g(the)g Fx(id)-25 b(a)369
+b FA(pac)-31 b(k)-61 b(age)860 b(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p
+Black 1540 w(15)p Black 5660 26456 a(8.1)1133 b(Diagram)371
+b(of)f(the)f(storage)h(for)g(a)f(matrix)i(of)e(t)-31
+b(yp)31 b(e)370 b Fy(BandMat)640 b FA(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)p Black 1540
+w(79)p Black Black 27400 81188 a(vii)p Black eop
+%%Page: 8 8
+8 7 bop Black Black Black Black eop
+%%Page: 1 9
+1 8 bop Black Black 4000 15364 a Fw(Chapter)861 b(1)4000
+20986 y Fz(In)-86 b(tro)86 b(duction)4000 26830 y Fx(id)-25
+b(a)469 b FA(is)g(part)g(of)h(a)f(soft)-31 b(w)g(are)471
+b(family)g(called)f Fx(sundials)p FA(:)691 b(SUite)470
+b(of)g(Nonlinear)g(and)g(DI\256eren)-31 b(tial/ALgebraic)4000
+28158 y(equation)398 b(Solv)-31 b(ers.)574 b(This)396
+b(suite)h(consists)f(of)g Fx(cv)-25 b(ode)p FA(,)404
+b Fx(kinsol)p FA(,)e(and)396 b Fx(id)-25 b(a)p FA(,)403
+b(and)397 b(v)-61 b(arian)-31 b(ts)397 b(of)f(these)g(with)h(sensi-)
+4000 29486 y(tivit)-31 b(y)372 b(analysis)e(capabilities.)5660
+30902 y(ID)-31 b(A)362 b(is)f(a)h(general)g(purp)31 b(ose)361
+b(solv)-31 b(er)362 b(for)g(the)f(initial)k(v)-61 b(alue)362
+b(problem)g(for)g(systems)f(of)h(di\256eren)-31 b(tial-algebraic)4000
+32231 y(equations)437 b(\(D)-31 b(AEs\).)694 b(The)436
+b(name)h(ID)-31 b(A)436 b(stands)f(for)h(Implicit)i(Di\256eren)-31
+b(tial-Algebraic)439 b(solv)-31 b(er.)694 b(ID)-31 b(A)435
+b(is)h(based)4000 33559 y(on)493 b(D)-31 b(ASPK)492 b([3)q(,)h(4],)524
+b(but)493 b(is)f(written)i(in)f(ANSI-standard)g(C)f(rather)g(than)i(F)
+-92 b(ortran)492 b(77.)863 b(Its)492 b(most)h(notable)4000
+34887 y(feature)499 b(is)f(that,)532 b(in)499 b(the)f(solution)i(of)f
+(the)f(underlying)h(nonlinear)h(system)e(at)h(eac)-31
+b(h)499 b(time)g(step,)531 b(it)499 b(o\256ers)f(a)4000
+36216 y(c)-31 b(hoice)308 b(of)g(Newton/direct)h(metho)31
+b(ds)308 b(or)e(an)i(Inexact)f(Newton/Krylo)-31 b(v)311
+b(\(iterativ)-31 b(e\))310 b(metho)31 b(d.)473 b(Th)-31
+b(us)307 b Fx(id)-25 b(a)307 b FA(shares)4000 37544 y(signi\257can)-31
+b(t)433 b(mo)31 b(dules)432 b(previously)g(written)g(within)h(CASC)e
+(at)h(LLNL)f(to)h(supp)31 b(ort)430 b(the)i(ordinary)f(di\256eren)-31
+b(tial)4000 38872 y(equation)299 b(\(ODE\))f(solv)-31
+b(ers)297 b Fx(cv)-25 b(ode)298 b FA([11)r(,)f(8)q(])g(and)h
+Fx(pv)-25 b(ode)298 b FA([6)q(,)g(7],)313 b(and)297 b(also)h(the)g
+(nonlinear)g(system)g(solv)-31 b(er)297 b Fx(kinsol)4000
+40201 y FA([9)q(].)5660 41617 y(The)378 b(Newton/Krylo)-31
+b(v)381 b(metho)31 b(d)378 b(uses)f(the)h(GMRES)f(\(Generalized)h
+(Minimal)i(RESidual\))f(linear)g(iterativ)-31 b(e)4000
+42945 y(metho)31 b(d)300 b([13)q(],)314 b(and)300 b(requires)e(almost)j
+(no)e(matrix)h(storage)g(for)f(solving)i(the)e(Newton)i(equations)f(as)
+f(compared)h(to)4000 44273 y(direct)393 b(metho)31 b(ds.)564
+b(Ho)-31 b(w)g(ev)g(er,)401 b(the)393 b(GMRES)f(algorithm)k(allo)-31
+b(ws)395 b(for)d(a)i(user-supplied)e(preconditioner)i(matrix,)4000
+45602 y(and)369 b(for)h(most)g(problems)f(preconditioning)j(is)d(essen)
+-31 b(tial)371 b(for)e(an)g(e\261cien)-31 b(t)371 b(solution.)5660
+47017 y(There)549 b(are)g(sev)-31 b(eral)550 b(motiv)-61
+b(ations)552 b(for)d(c)-31 b(ho)31 b(osing)551 b(the)e
+Fx(C)g FA(language)i(for)e Fx(id)-25 b(a)p FA(.)1033
+b(First,)594 b(a)549 b(general)h(mo)-31 b(v)g(e-)4000
+48346 y(men)g(t)397 b(a)-31 b(w)g(a)g(y)398 b(from)e
+Fx(F)-32 b(or)-74 b(tran)394 b FA(and)i(to)-31 b(w)g(ard)398
+b Fx(C)e FA(in)g(scien)-31 b(ti\257c)396 b(computing)i(is)e(apparen)-31
+b(t.)573 b(Second,)404 b(the)396 b(p)31 b(oin)-31 b(ter,)4000
+49674 y(structure,)505 b(and)478 b(dynamic)h(memory)g(allo)31
+b(cation)481 b(features)d(in)g(C)g(are)g(extremely)h(useful)f(in)g
+(soft)-31 b(w)g(are)479 b(of)f(this)4000 51003 y(complexit)-31
+b(y)-92 b(,)511 b(with)481 b(the)f(great)h(v)-61 b(ariet)-31
+b(y)481 b(of)f(metho)31 b(d)481 b(options)g(o\256ered.)825
+b(Finally)-92 b(,)509 b(w)-31 b(e)481 b(prefer)e Fx(C)h
+FA(o)-31 b(v)g(er)480 b Fx(C)49057 50781 y Fv(++)50675
+51003 y FA(for)4000 52331 y Fx(id)-25 b(a)355 b FA(b)31
+b(ecause)356 b(of)g(the)f(wider)h(a)-31 b(v)-61 b(ailabilit)-31
+b(y)360 b(of)c Fx(C)g FA(compilers,)k(the)355 b(p)31
+b(oten)-31 b(tially)359 b(greater)d(e\261ciency)h(of)f
+Fx(C)p FA(,)g(and)g(the)4000 53659 y(greater)370 b(ease)f(of)g(in)-31
+b(terfacing)372 b(the)d(solv)-31 b(er)370 b(to)g(applications)i
+(written)e(in)g(extended)f Fx(F)-32 b(or)-74 b(tran)p
+FA(.)4000 57784 y Fu(1.1)1793 b(Changes)598 b(from)g(previous)i(v)-50
+b(ersions)4000 60593 y Ft(Changes)500 b(in)e(v2.3.0)4000
+62799 y FA(The)381 b(user)f(in)-31 b(terface)382 b(has)e(b)31
+b(een)381 b(further)f(re\257ned.)527 b(Sev)-31 b(eral)381
+b(functions)h(used)e(for)h(setting)h(optional)i(inputs)d(w)-31
+b(ere)4000 64128 y(com)g(bined)392 b(in)-31 b(to)391
+b(a)g(single)g(one.)556 b(Additionally)-92 b(,)400 b(to)391
+b(resolv)-31 b(e)390 b(p)31 b(oten)-31 b(tial)393 b(v)-61
+b(ariable)392 b(scop)31 b(e)389 b(issues,)396 b(all)391
+b(SUNDIALS)4000 65456 y(solv)-31 b(ers)400 b(release)h(user)e(data)i
+(righ)-31 b(t)402 b(after)f(its)f(use.)586 b(The)401
+b(build)g(systems)f(has)g(b)31 b(een)400 b(further)g(impro)-31
+b(v)g(ed)401 b(to)h(mak)-31 b(e)4000 66784 y(it)370 b(more)f(robust.)
+4000 70347 y Ft(Changes)500 b(in)e(v2.2.0)4000 72553
+y FA(The)296 b(ma)61 b(jor)297 b(c)-31 b(hanges)296 b(from)g(the)g
+(previous)g(v)-31 b(ersion)296 b(in)-31 b(v)g(olv)g(e)298
+b(a)e(redesign)g(of)g(the)g(user)e(in)-31 b(terface)297
+b(across)e(the)h(en)-31 b(tire)4000 73882 y Fx(sundials)476
+b FA(suite.)817 b(W)-92 b(e)477 b(ha)-31 b(v)g(e)478
+b(eliminated)i(the)d(mec)-31 b(hanism)479 b(of)f(pro)-31
+b(viding)479 b(optional)h(inputs)d(and)h(extracting)4000
+75210 y(optional)401 b(statistics)e(from)g(the)f(solv)-31
+b(er)399 b(through)g(the)f Fy(iopt)g FA(and)h Fy(ropt)f
+FA(arra)-31 b(ys.)579 b(Instead,)406 b Fx(id)-25 b(a)398
+b FA(no)-31 b(w)399 b(pro)-31 b(vides)399 b(a)4000 76539
+y(set)422 b(of)h(routines)f(\(with)i(pre\257x)e Fy(IDASet)p
+FA(\))h(to)g(c)-31 b(hange)423 b(the)g(default)g(v)-61
+b(alues)423 b(for)f(v)-61 b(arious)422 b(quan)-31 b(tities)425
+b(con)-31 b(trolling)4000 77867 y(the)477 b(solv)-31
+b(er)478 b(and)f(a)g(set)g(of)h(extraction)h(routines)f(\(with)g
+(pre\257x)f Fy(IDAGet)p FA(\))h(to)g(extract)g(statistics)h(after)e
+(return)p Black Black eop
+%%Page: 2 10
+2 9 bop Black 0 2701 a FB(2)40346 b(In)-35 b(tro)35 b(duction)p
+0 3144 48001 45 v Black 0 6974 a FA(from)386 b(the)g(main)g(solv)-31
+b(er)386 b(routine.)542 b(Similarly)-92 b(,)392 b(eac)-31
+b(h)386 b(linear)g(solv)-31 b(er)386 b(mo)31 b(dule)387
+b(pro)-31 b(vides)385 b(its)h(o)-31 b(wn)387 b(set)e(of)h
+Fy(Set)p FA(-)g(and)0 8302 y Fy(Get)p FA(-t)-31 b(yp)31
+b(e)370 b(routines.)493 b(F)-92 b(or)369 b(more)g(details)i(see)d
+Fs(x)p FA(5.4.5)k(and)d Fs(x)p FA(5.4.7.)1660 9631 y(Additionally)-92
+b(,)388 b(the)381 b(in)-31 b(terfaces)382 b(to)f(sev)-31
+b(eral)381 b(user-supplied)f(routines)i(\(suc)-31 b(h)380
+b(as)h(those)g(pro)-31 b(viding)383 b(Jacobians)0 10959
+y(and)428 b(preconditioner)h(information\))j(w)-31 b(ere)427
+b(simpli\257ed)j(b)-31 b(y)428 b(reducing)g(the)g(n)-31
+b(um)g(b)31 b(er)428 b(of)g(argumen)-31 b(ts.)670 b(The)428
+b(same)0 12287 y(information)447 b(that)f(w)-31 b(as)445
+b(previously)g(accessible)g(through)g(suc)-31 b(h)444
+b(argumen)-31 b(ts)445 b(can)g(no)-31 b(w)445 b(b)31
+b(e)444 b(obtained)i(through)0 13616 y Fy(Get)p FA(-t)-31
+b(yp)31 b(e)370 b(functions.)1660 14944 y(Installation)435
+b(of)c Fx(id)-25 b(a)431 b FA(\(and)h(all)h(of)f Fx(sundials)p
+FA(\))e(has)h(b)31 b(een)431 b(completely)j(redesigned)d(and)g(is)g(no)
+-31 b(w)432 b(based)g(on)0 16272 y(con\257gure)369 b(scripts.)0
+19371 y Ft(Changes)500 b(in)e(v2.2.1)0 21414 y FA(The)369
+b(c)-31 b(hanges)370 b(in)g(this)f(minor)h Fx(sundials)e
+FA(release)i(a\256ect)f(only)h(the)g(build)g(system.)0
+25075 y Fu(1.2)1793 b(Reading)597 b(this)i(User)g(Guide)0
+27499 y FA(The)369 b(structure)g(of)h(this)f(do)31 b(cumen)-31
+b(t)371 b(is)e(as)g(follo)-31 b(ws:)p Black 1660 29713
+a Fs(\262)p Black 554 w FA(In)464 b(Chapter)h(2)f(w)-31
+b(e)465 b(b)31 b(egin)465 b(with)g(instructions)g(for)f(the)h
+(installation)j(of)c Fx(id)-25 b(a)p FA(,)488 b(within)466
+b(the)f(structure)e(of)2767 31042 y Fx(sundials)p FA(.)p
+Black 1660 33256 a Fs(\262)p Black 554 w FA(In)328 b(Chapter)g(3,)337
+b(w)-31 b(e)328 b(giv)-31 b(e)330 b(short)d(descriptions)i(of)f(the)g
+(n)-31 b(umerical)329 b(metho)31 b(ds)329 b(implemen)-31
+b(ted)330 b(b)-31 b(y)328 b Fx(id)-25 b(a)328 b FA(for)g(the)2767
+34584 y(solution)371 b(of)f(initial)i(v)-61 b(alue)370
+b(problems)f(for)g(systems)h(of)f(D)-31 b(AEs.)p Black
+1660 36798 a Fs(\262)p Black 554 w FA(The)401 b(follo)-31
+b(wing)404 b(c)-31 b(hapter)402 b(describ)31 b(es)399
+b(the)i(structure)f(of)h(the)g Fx(sundials)e FA(suite)i(of)g(solv)-31
+b(ers)401 b(\()p Fs(x)p FA(4.1\))i(and)e(the)2767 38126
+y(soft)-31 b(w)g(are)371 b(organization)i(of)c(the)h
+Fx(id)-25 b(a)369 b FA(solv)-31 b(er)369 b(\()p Fs(x)p
+FA(4.2\).)p Black 1660 40340 a Fs(\262)p Black 554 w
+FA(In)341 b(Chapter)i(5,)348 b(w)-31 b(e)342 b(giv)-31
+b(e)343 b(an)e(o)-31 b(v)g(erview)344 b(of)e(the)g(usage)f(of)i
+Fx(id)-25 b(a)p FA(,)347 b(as)341 b(w)-31 b(ell)344 b(as)d(a)h
+(complete)h(description)f(of)h(the)2767 41669 y(user)369
+b(in)-31 b(terface)370 b(and)f(of)h(the)g(user-de\257ned)e(routines)h
+(for)g(in)-31 b(tegration)373 b(of)c(IVP)h(D)-31 b(AEs.)p
+Black 1660 43882 a Fs(\262)p Black 554 w FA(Chapter)442
+b(6)e(giv)-31 b(es)442 b(a)f(brief)f(o)-31 b(v)g(erview)442
+b(of)f(the)g(generic)g Fx(nvector)f FA(mo)31 b(dule)442
+b(shared)e(among)i(the)f(v)-61 b(arious)2767 45211 y(comp)31
+b(onen)-31 b(ts)453 b(of)e Fx(sundials)p FA(,)471 b(as)450
+b(w)-31 b(ell)453 b(as)e(details)h(on)f(the)g(t)-31 b(w)g(o)453
+b Fx(nvector)d FA(implemen)-31 b(tations)455 b(pro)-31
+b(vided)2767 46539 y(with)371 b Fx(sundials)p FA(:)492
+b(a)369 b(serial)h(implemen)-31 b(tation)373 b(\()p Fs(x)p
+FA(6.1\))f(and)d(a)g(parallel)i(MPI)e(implemen)-31 b(tation)374
+b(\()p Fs(x)p FA(6.2\).)p Black 1660 48753 a Fs(\262)p
+Black 554 w FA(Chapter)c(8)g(describ)31 b(es)368 b(in)h(detail)i(the)f
+(generic)f(linear)h(solv)-31 b(ers)369 b(shared)g(b)-31
+b(y)369 b(all)i Fx(sundials)d FA(solv)-31 b(ers.)p Black
+1660 50967 a Fs(\262)p Black 554 w FA(Finally)-92 b(,)371
+b(Chapter)f(9)g(lists)g(the)f(constan)-31 b(ts)370 b(used)f(for)g
+(input)h(to)g(and)f(output)i(from)f Fx(id)-25 b(a)p FA(.)1660
+53181 y(Finally)-92 b(,)469 b(the)448 b(reader)f(should)h(b)31
+b(e)447 b(a)-31 b(w)g(are)449 b(of)f(the)g(follo)-31
+b(wing)451 b(notational)g(con)-31 b(v)g(en)g(tions)450
+b(in)e(this)g(user)f(guide:)0 54509 y(program)255 b(listings)h(and)e
+(iden)-31 b(ti\257ers)255 b(\(suc)-31 b(h)254 b(as)g
+Fy(IDAMalloc)p FA(\))i(within)g(textual)g(explanations)h(app)31
+b(ear)254 b(in)h(t)-31 b(yp)31 b(ewriter)0 55838 y(t)-31
+b(yp)31 b(e)379 b(st)-31 b(yle;)385 b(\257elds)378 b(in)h
+Fx(C)f FA(structures)g(\(suc)-31 b(h)379 b(as)f Fr(c)-57
+b(ontent)p FA(\))380 b(app)31 b(ear)378 b(in)h(italics;)386
+b(and)378 b(pac)-31 b(k)-61 b(ages)380 b(or)e(mo)31 b(dules,)382
+b(suc)-31 b(h)0 57166 y(as)409 b Fx(id)-25 b(adense)p
+FA(,)421 b(are)409 b(written)i(in)e(all)i(capitals.)615
+b(In)409 b(the)h(Index,)419 b(page)411 b(n)-31 b(um)g(b)31
+b(ers)409 b(that)h(app)31 b(ear)410 b(in)f(b)31 b(old)410
+b(indicate)0 58494 y(the)369 b(main)i(reference)d(for)h(that)i(en)-31
+b(try)-92 b(.)0 61372 y FB(Ac)-35 b(kno)g(wledgmen)g(ts.)1108
+b FA(W)-92 b(e)455 b(wish)g(to)h(ac)-31 b(kno)g(wledge)459
+b(the)c(con)-31 b(tributions)458 b(to)e(previous)f(v)-31
+b(ersions)455 b(of)h(the)g Fx(id)-25 b(a)0 62700 y FA(co)31
+b(de)369 b(and)h(user)e(guide)i(of)f(Allan)i(G.)e(T)-92
+b(a)-31 b(ylor.)p Black Black eop
+%%Page: 3 11
+3 10 bop Black Black 4000 15276 a Fw(Chapter)861 b(2)4000
+20811 y Fz(ID)-86 b(A)1032 b(Installation)h(Pro)86 b(cedure)4000
+26567 y FA(The)321 b(installation)j(of)d Fx(id)-25 b(a)321
+b FA(is)g(accomplished)h(b)-31 b(y)321 b(installing)i(the)e
+Fx(sundials)f FA(suite)h(as)f(a)h(whole,)332 b(according)322
+b(to)g(the)4000 27895 y(instructions)420 b(that)h(follo)-31
+b(w.)646 b(The)420 b(same)g(pro)31 b(cedure)418 b(applies)j(whether)e
+(or)h(not)g(the)g(do)-31 b(wnloaded)422 b(\257le)d(con)-31
+b(tains)4000 29224 y(solv)g(ers)369 b(other)h(than)g
+Fx(id)-25 b(a)p FA(.)5660 30552 y(Generally)443 b(sp)31
+b(eaking,)461 b(the)443 b(installation)i(pro)31 b(cedure)441
+b(outlined)j(in)e Fs(x)p FA(2.1)h(b)31 b(elo)-31 b(w)443
+b(will)h(w)-31 b(ork)443 b(on)f(commo)31 b(dit)-31 b(y)4000
+31880 y Fx(LINUX)p FA(/)p Fx(UNIX)309 b FA(systems)g(without)j(mo)31
+b(di\257cation.)475 b(Users)308 b(are)i(still)g(encouraged,)323
+b(ho)-31 b(w)g(ev)g(er,)323 b(to)310 b(carefully)g(read)4000
+33209 y(the)419 b(en)-31 b(tire)419 b(c)-31 b(hapter)418
+b(b)31 b(efore)419 b(attempting)i(to)e(install)h(the)f
+Fx(sundials)e FA(suite,)432 b(in)419 b(case)f(non-default)i(c)-31
+b(hoices)419 b(are)4000 34537 y(desired)396 b(for)h(compilers,)405
+b(compilation)400 b(options,)405 b(or)397 b(the)f(lik)-31
+b(e.)577 b(In)396 b(lieu)h(of)g(reading)h(the)f(option)h(list)f(b)31
+b(elo)-31 b(w,)406 b(the)4000 35866 y(user)428 b(ma)-31
+b(y)430 b(in)-31 b(v)g(ok)g(e)431 b(the)e(con\257guration)j(script)d
+(with)h(the)f(help)g(\260ag)h(to)g(view)g(a)f(complete)i(listing)g(of)e
+(a)-31 b(v)-61 b(ailable)4000 37194 y(options,)371 b(whic)-31
+b(h)370 b(ma)-31 b(y)371 b(b)31 b(e)368 b(done)i(b)-31
+b(y)369 b(issuing)p Black Black 5743 39210 a Fy(\045)582
+b(./configure)h(--help)4000 41226 y FA(from)370 b(within)h(the)e
+Fy(sundials)h FA(directory)-92 b(.)5660 42554 y(In)383
+b(the)h(descriptions)f(b)31 b(elo)-31 b(w,)389 b Fr(build)p
+20917 42554 340 45 v 408 w(tr)-57 b(e)g(e)384 b FA(refers)e(to)i(the)f
+(directory)h(under)e(whic)-31 b(h)385 b(the)e(user)f(w)-31
+b(an)g(ts)385 b(to)f(build)4000 43882 y(and/or)272 b(install)h(the)e
+Fx(sundials)g FA(pac)-31 b(k)-61 b(age.)461 b(By)271
+b(default,)293 b(the)271 b Fx(sundials)g FA(libraries)g(and)h(header)f
+(\257les)g(are)g(installed)4000 45211 y(under)311 b(the)g(sub)31
+b(directories)311 b Fr(build)p 18291 45211 V 408 w(tr)-57
+b(e)g(e)p Fy(/lib)312 b FA(and)g Fr(build)p 27460 45211
+V 407 w(tr)-57 b(e)g(e)p Fy(/include)p FA(,)326 b(resp)31
+b(ectiv)-31 b(ely)-92 b(.)473 b(Also,)324 b Fr(sour)-57
+b(c)g(e)p 46983 45211 V 408 w(tr)g(e)g(e)312 b FA(refers)4000
+46539 y(to)373 b(the)f(directory)h(where)e(the)h Fx(sundials)g
+FA(source)f(co)31 b(de)372 b(is)g(lo)31 b(cated.)502
+b(The)373 b(c)-31 b(hosen)372 b Fr(build)p 41638 46539
+V 407 w(tr)-57 b(e)g(e)373 b FA(ma)-31 b(y)373 b(b)31
+b(e)372 b(di\256eren)-31 b(t)4000 47867 y(from)467 b(the)g
+Fr(sour)-57 b(c)g(e)p 11770 47867 V 408 w(tr)g(e)g(e)p
+FA(,)492 b(th)-31 b(us)467 b(allo)-31 b(wing)470 b(for)d(m)-31
+b(ultiple)469 b(installations)h(of)d(the)g Fx(sundials)f
+FA(suite)h(with)h(di\256eren)-31 b(t)4000 49196 y(con\257guration)371
+b(options.)5660 50524 y(Concerning)349 b(the)f(installation)k(pro)31
+b(cedure)346 b(outlined)k(b)31 b(elo)-31 b(w,)353 b(after)348
+b(in)-31 b(v)g(oking)351 b(the)d Fy(tar)f FA(command)j(with)f(the)4000
+51852 y(appropriate)405 b(options,)415 b(the)405 b(con)-31
+b(ten)g(ts)405 b(of)g(the)f Fx(sundials)f FA(arc)-31
+b(hiv)g(e)405 b(\(or)g(the)f Fr(sour)-57 b(c)g(e)p 39507
+51852 V 408 w(tr)g(e)g(e)p FA(\))405 b(will)h(b)31 b(e)404
+b(extracted)h(to)4000 53181 y(a)387 b(directory)f(named)h
+Fy(sundials)p FA(.)545 b(Since)387 b(the)f(name)h(of)g(the)f(extracted)
+h(directory)g(is)f(not)h(v)-31 b(ersion-sp)31 b(eci\257c)387
+b(it)g(is)4000 54509 y(recommended)362 b(that)h(the)f(user)f(refrain)h
+(from)g(extracting)i(the)e(arc)-31 b(hiv)g(e)363 b(to)g(a)f(directory)g
+(con)-31 b(taining)365 b(a)d(previous)4000 55837 y(v)-31
+b(ersion/release)366 b(of)g(the)f Fx(sundials)f FA(suite.)492
+b(If)365 b(the)g(user)f(is)h(only)h(upgrading)h(and)e(the)g(previous)g
+(installation)k(of)4000 57166 y Fx(sundials)f FA(is)h(not)h(needed,)g
+(then)f(the)h(user)e(ma)-31 b(y)370 b(remo)-31 b(v)g(e)370
+b(the)g(previous)f(installation)k(b)-31 b(y)369 b(issuing)p
+Black Black 5743 59182 a Fy(\045)582 b(rm)f(-rf)h(sundials)4000
+61198 y FA(from)370 b(a)f(shell)h(command)h(prompt.)5660
+62526 y(Ev)-31 b(en)291 b(though)g(the)f(installation)k(pro)31
+b(cedure)289 b(giv)-31 b(en)291 b(b)31 b(elo)-31 b(w)291
+b(presupp)31 b(oses)289 b(that)i(the)f(user)f(will)j(use)d(the)h
+(default)4000 63854 y(v)-31 b(ector)339 b(mo)31 b(dules)339
+b(supplied)g(with)h(the)e(distribution,)347 b(using)339
+b(the)g Fx(sundials)e FA(suite)i(with)g(a)g(user-supplied)f(v)-31
+b(ector)4000 65183 y(mo)31 b(dule)370 b(normally)h(will)g(not)f
+(require)f(an)-31 b(y)370 b(c)-31 b(hanges)370 b(to)g(the)f(build)h
+(pro)31 b(cedure.)4000 68801 y Fu(2.1)1793 b(Installation)598
+b(steps)4000 71225 y FA(T)-92 b(o)261 b(install)i(the)e
+Fx(sundials)f FA(suite,)283 b(giv)-31 b(en)263 b(a)e(do)-31
+b(wnloaded)263 b(\257le)e(named)g Fr(sundials)p 36937
+71225 V 407 w(\257le)p Fy(.tar.gz)p FA(,)285 b(issue)260
+b(the)h(follo)-31 b(wing)4000 72553 y(commands)504 b(from)g(a)f(shell)h
+(command)g(prompt,)538 b(while)505 b(within)f(the)g(directory)f(where)g
+Fr(sour)-57 b(c)g(e)p 45546 72553 V 408 w(tr)g(e)g(e)503
+b FA(is)g(to)h(b)31 b(e)4000 73882 y(lo)g(cated.)557
+b(The)391 b(names)g(of)f(installed)j(libraries)d(and)h(header)f
+(\257les)g(are)g(listed)h(in)g(T)-92 b(able)391 b(2.1)h(for)e
+(reference.)555 b(\(F)-92 b(or)4000 75210 y(brevit)-31
+b(y)-92 b(,)511 b(the)482 b(corresp)31 b(onding)482 b
+Fy(.c)g FA(\257les)g(are)g(not)g(listed.\))832 b(Regarding)483
+b(the)f(\257le)g(extension)h(.)p Fr(lib)g FA(app)31 b(earing)483
+b(in)4000 76539 y(T)-92 b(able)369 b(2.1,)h(shared)e(libraries)h
+(generally)g(ha)-31 b(v)g(e)369 b(an)g(extension)g(of)g
+Fy(.so)f FA(and)h(static)g(libraries)g(ha)-31 b(v)g(e)369
+b(an)g(extension)4000 77867 y(of)h Fy(.a)p FA(.)492 b(\(See)370
+b Fr(Options)395 b(for)h(libr)-57 b(ary)397 b(supp)-57
+b(ort)368 b FA(for)h(additional)k(details.\))p Black
+Black eop
+%%Page: 4 12
+4 11 bop Black 0 2701 a FB(4)32067 b(ID)-35 b(A)425 b(Installation)e
+(Pro)35 b(cedure)p 0 3144 48001 45 v Black Black 1353
+6974 a FA(1.)p Black 554 w Fy(gunzip)370 b Fr(sundials)p
+10567 6974 340 45 v 407 w(\257le)p Fy(.tar.gz)p Black
+1353 9140 a FA(2.)p Black 554 w Fy(tar)582 b(-xf)369
+b Fr(sundials)p 11148 9140 V 407 w(\257le)p Fy(.tar)2584
+b FA([creates)370 b Fy(sundials)g FA(directory])p Black
+1353 11306 a(3.)p Black 554 w Fy(cd)g Fr(build)p 6658
+11306 V 407 w(tr)-57 b(e)g(e)p Black 1353 13473 a FA(4.)p
+Black 554 w Fr(p)g(ath)p 4844 13473 V 407 w(to)p 6185
+13473 V 407 w(sour)g(c)g(e)p 9576 13473 V 408 w(tr)g(e)g(e)p
+Fy(/configure)371 b Fr(options)2583 b FA([options)371
+b(can)e(b)31 b(e)369 b(absen)-31 b(t])p Black 1353 15639
+a(5.)p Black 554 w Fy(make)p Black 1353 17805 a FA(6.)p
+Black 554 w Fy(make)582 b(install)p Black 1353 19971
+a FA(7.)p Black 554 w Fy(make)g(examples)p Black 1353
+22138 a FA(8.)p Black 554 w(If)369 b(system)h(storage)g(space)f
+(conserv)-61 b(ation)370 b(is)f(a)h(priorit)-31 b(y)-92
+b(,)371 b(then)e(issue)4511 23466 y Fy(\045)581 b(make)h(clean)2767
+24794 y FA(and/or)4511 26123 y Fy(\045)f(make)h(examples_clean)2767
+27451 y FA(from)370 b(a)g(shell)f(command)i(prompt)f(to)g(remo)-31
+b(v)g(e)370 b(unneeded)f(ob)61 b(ject)371 b(\257les.)0
+31882 y Fu(2.2)1793 b(Con\257guration)598 b(options)0
+34306 y FA(The)476 b(installation)k(pro)31 b(cedure)475
+b(giv)-31 b(en)478 b(ab)31 b(o)-31 b(v)g(e)477 b(will)h(generally)f(w)
+-31 b(ork)477 b(without)h(mo)31 b(di\257cation;)533 b(ho)-31
+b(w)g(ev)g(er,)505 b(if)477 b(the)0 35634 y(system)440
+b(includes)g(m)-31 b(ultiple)442 b Fx(MPI)d FA(implemen)-31
+b(tations,)462 b(then)440 b(certain)h(con\257gure)f(script-related)g
+(options)i(ma)-31 b(y)0 36963 y(b)31 b(e)508 b(used)g(to)h(indicate)h
+(whic)-31 b(h)509 b Fx(MPI)f FA(implemen)-31 b(tation)513
+b(should)508 b(b)31 b(e)508 b(used.)910 b(Also,)544 b(if)509
+b(the)g(user)e(w)-31 b(an)g(ts)510 b(to)f(use)0 38291
+y(non-default)542 b(language)h(compilers,)584 b(then,)g(again,)i(the)
+540 b(necessary)g(shell)h(en)-31 b(vironmen)g(t)542 b(v)-61
+b(ariables)541 b(m)-31 b(ust)541 b(b)31 b(e)0 39620 y(appropriately)398
+b(rede\257ned.)574 b(The)397 b(remainder)g(of)g(this)f(section)i(pro)
+-31 b(vides)397 b(explanations)h(of)f(a)-31 b(v)-61 b(ailable)400
+b(con\257gure)0 40948 y(script)369 b(options.)0 44026
+y Ft(General)499 b(options)p Black Black 0 46069 a Fy(--prefix=PREFIX)
+2214 47817 y FA(Lo)31 b(cation)371 b(for)e(arc)-31 b(hitecture-indep)31
+b(enden)-31 b(t)371 b(\257les.)2214 49564 y(Default:)494
+b Fy(PREFIX=)p Fr(build)p 13022 49564 V 408 w(tr)-57
+b(e)g(e)p Black Black 0 51711 a Fy(--includedir=DIR)2214
+53459 y FA(Alternate)371 b(lo)31 b(cation)371 b(for)e(installation)k
+(of)d(header)f(\257les.)2214 55206 y(Default:)494 b Fy
+(DIR=PREFIX/include)p Black Black 0 57353 a(--libdir=DIR)2214
+59101 y FA(Alternate)371 b(lo)31 b(cation)371 b(for)e(installation)k
+(of)d(libraries.)2214 60848 y(Default:)494 b Fy(DIR=PREFIX/lib)p
+Black Black 0 62995 a(--disable-examples)2214 64743 y
+FA(All)305 b(a)-31 b(v)-61 b(ailable)306 b(example)f(programs)f(are)g
+(automatically)k(built)d(unless)e(this)h(option)i(is)d(giv)-31
+b(en.)472 b(The)304 b(example)2214 66071 y(executables)370
+b(are)f(stored)g(under)g(the)g(follo)-31 b(wing)373 b(sub)31
+b(directories)369 b(of)h(the)f(asso)31 b(ciated)370 b(solv)-31
+b(er:)p Black Black 2214 68416 a Fr(build)p 4573 68416
+V 408 w(tr)-57 b(e)g(e)p FA(/)p Fr(solver)p FA(/)p Fy(examples)p
+15263 68416 349 45 v 420 w(ser)370 b FA(:)492 b(serial)370
+b Fx(C)f FA(examples)p Black Black 2214 70342 a Fr(build)p
+4573 70342 340 45 v 408 w(tr)-57 b(e)g(e)p FA(/)p Fr(solver)p
+FA(/)p Fy(examples)p 15263 70342 349 45 v 420 w(par)370
+b FA(:)492 b(parallel)371 b Fx(C)e FA(examples)i(\()p
+Fx(MPI)p FA(-enabled\))p Black Black 2214 72268 a Fr(build)p
+4573 72268 340 45 v 408 w(tr)-57 b(e)g(e)p FA(/)p Fr(solver)p
+FA(/)p Fy(fcmix)p FA(/)p Fy(examples)p 18721 72268 349
+45 v 422 w(ser)369 b FA(:)493 b(serial)369 b Fx(F)-32
+b(or)-74 b(tran)368 b FA(examples)p Black Black 2214
+74194 a Fr(build)p 4573 74194 340 45 v 408 w(tr)-57 b(e)g(e)p
+FA(/)p Fr(solver)p FA(/)p Fy(fcmix)p FA(/)p Fy(examples)p
+18721 74194 349 45 v 422 w(par)369 b FA(:)493 b(parallel)371
+b Fx(F)-32 b(or)-74 b(tran)367 b FA(examples)j(\()p Fx(MPI)p
+FA(-enabled\))2214 76539 y Fr(Note)p FA(:)479 b(Some)345
+b(of)g(these)f(sub)31 b(directories)343 b(ma)-31 b(y)346
+b(not)e(exist)h(dep)31 b(ending)344 b(up)31 b(on)344
+b(the)h(solv)-31 b(er)344 b(and/or)h(the)f(con\257g-)2214
+77867 y(uration)370 b(options)h(giv)-31 b(en.)p Black
+Black eop
+%%Page: 5 13
+5 12 bop Black 4000 2701 a FB(2.2)425 b(Con\257guration)i(options)33202
+b(5)p 4000 3144 48001 45 v Black Black Black 16443 17644
+a FA(T)-92 b(able)370 b(2.1:)494 b(SUNDIALS)369 b(libraries)h(and)f
+(header)g(\257les)p Black 7811 18463 40378 45 v 7789
+19791 45 1329 v 8475 19393 a FB(Mo)35 b(dule)p 19102
+19791 V 7084 w(Libraries)p 36540 19791 V 12505 w(Header)425
+b(\257les)p 48167 19791 V 7811 19835 40378 45 v 7789
+21164 45 1329 v 8475 20765 a Fx(shared)p 19102 21164
+V 7474 w Fy(libsundials)p 26250 20765 349 45 v 420 w(shared.)p
+Fq(lib)p 36540 21164 45 1329 v 4817 w Fy(sundialstypes.h)p
+48167 21164 V 7789 22492 V 19102 22492 V 36540 22492
+V 37227 22094 a(sundialsmath.h)p 48167 22492 V 7789 23820
+V 19102 23820 V 36540 23820 V 37227 23422 a(sundials)p
+41945 23422 349 45 v 419 w(config.h)p 48167 23820 45
+1329 v 7789 25149 V 19102 25149 V 36540 25149 V 37227
+24750 a(dense.h)p 48167 25149 V 7789 26477 V 19102 26477
+V 36540 26477 V 37227 26079 a(smalldense.h)p 48167 26477
+V 7789 27805 V 19102 27805 V 36540 27805 V 37227 27407
+a(band.h)p 48167 27805 V 7789 29134 V 19102 29134 V 36540
+29134 V 37227 28735 a(spgmr.h)p 48167 29134 V 7789 30462
+V 19102 30462 V 36540 30462 V 37227 30064 a(iterative.h)p
+48167 30462 V 7789 31790 V 19102 31790 V 36540 31790
+V 37227 31392 a(nvector.h)p 48167 31790 V 7811 31835
+40378 45 v 7789 33163 45 1329 v 8475 32765 a Fx(nvector)p
+13202 32765 368 45 v 441 w(serial)p 19102 33163 45 1329
+v 2846 w Fy(libsundials)p 26250 32765 349 45 v 420 w(nvecserial.)p
+Fq(lib)p 36540 33163 45 1329 v 2493 w Fy(nvector)p 41364
+32765 349 45 v 419 w(serial.h)p 48167 33163 45 1329 v
+7789 34491 V 19102 34491 V 19789 34093 a(libsundials)p
+26250 34093 349 45 v 420 w(fnvecserial.a)p 36540 34491
+45 1329 v 48167 34491 V 7811 34536 40378 45 v 7789 35864
+45 1329 v 8475 35466 a Fx(nvector)p 13202 35466 368 45
+v 441 w(p)-74 b(arallel)p 19102 35864 45 1329 v 1330
+w Fy(libsundials)p 26250 35466 349 45 v 420 w(nvecparallel.)p
+Fq(lib)p 36540 35864 45 1329 v 1331 w Fy(nvector)p 41364
+35466 349 45 v 419 w(parallel.h)p 48167 35864 45 1329
+v 7789 37192 V 19102 37192 V 19789 36794 a(libsundials)p
+26250 36794 349 45 v 420 w(fnvecparallel.a)p 36540 37192
+45 1329 v 48167 37192 V 7811 37237 40378 45 v 7789 38565
+45 1329 v 8475 38167 a Fx(cv)-25 b(ode)p 19102 38565
+V 7994 w Fy(libsundials)p 26250 38167 349 45 v 420 w(cvode.)p
+Fq(lib)p 36540 38565 45 1329 v 5398 w Fy(cvode.h)p 48167
+38565 V 7789 39893 V 19102 39893 V 19789 39495 a(libsundials)p
+26250 39495 349 45 v 420 w(fcvode.a)p 36540 39893 45
+1329 v 5979 w(cvdense.h)p 48167 39893 V 7789 41222 V
+19102 41222 V 36540 41222 V 37227 40823 a(cvband.h)p
+48167 41222 V 7789 42550 V 19102 42550 V 36540 42550
+V 37227 42152 a(cvdiag.h)p 48167 42550 V 7789 43878 V
+19102 43878 V 36540 43878 V 37227 43480 a(cvspgmr.h)p
+48167 43878 V 7789 45207 V 19102 45207 V 36540 45207
+V 37227 44808 a(cvbandpre.h)p 48167 45207 V 7789 46535
+V 19102 46535 V 36540 46535 V 37227 46137 a(cvbbdpre.h)p
+48167 46535 V 7811 46579 40378 45 v 7789 47908 45 1329
+v 8475 47509 a Fx(cv)g(odes)p 19102 47908 V 7487 w Fy(libsundials)p
+26250 47509 349 45 v 420 w(cvodes.)p Fq(lib)p 36540 47908
+45 1329 v 4817 w Fy(cvodes.h)p 48167 47908 V 7789 49236
+V 19102 49236 V 36540 49236 V 37227 48838 a(cvodea.h)p
+48167 49236 V 7789 50565 V 19102 50565 V 36540 50565
+V 37227 50166 a(cvdense.h)p 48167 50565 V 7789 51893
+V 19102 51893 V 36540 51893 V 37227 51494 a(cvband.h)p
+48167 51893 V 7789 53221 V 19102 53221 V 36540 53221
+V 37227 52823 a(cvdiag.h)p 48167 53221 V 7789 54550 V
+19102 54550 V 36540 54550 V 37227 54151 a(cvspgmr.h)p
+48167 54550 V 7789 55878 V 19102 55878 V 36540 55878
+V 37227 55479 a(cvbandpre.h)p 48167 55878 V 7789 57206
+V 19102 57206 V 36540 57206 V 37227 56808 a(cvbbdpre.h)p
+48167 57206 V 7811 57251 40378 45 v 7789 58579 45 1329
+v 8475 58180 a Fx(id)g(a)p 19102 58579 V 9634 w Fy(libsundials)p
+26250 58180 349 45 v 420 w(ida.)p Fq(lib)p 36540 58579
+45 1329 v 6560 w Fy(ida.h)p 48167 58579 V 7789 59907
+V 19102 59907 V 36540 59907 V 37227 59509 a(idadense.h)p
+48167 59907 V 7789 61236 V 19102 61236 V 36540 61236
+V 37227 60837 a(idaband.h)p 48167 61236 V 7789 62564
+V 19102 62564 V 36540 62564 V 37227 62165 a(idaspgmr.h)p
+48167 62564 V 7789 63892 V 19102 63892 V 36540 63892
+V 37227 63494 a(idabbdpre.h)p 48167 63892 V 7811 63937
+40378 45 v 7789 65265 45 1329 v 8475 64866 a Fx(kinsol)p
+19102 65265 V 7817 w Fy(libsundials)p 26250 64866 349
+45 v 420 w(kinsol.)p Fq(lib)p 36540 65265 45 1329 v 4817
+w Fy(kinsol.h)p 48167 65265 V 7789 66593 V 19102 66593
+V 19789 66195 a(libsundials)p 26250 66195 349 45 v 420
+w(fkinsol.a)p 36540 66593 45 1329 v 5398 w(kinspgmr.h)p
+48167 66593 V 7789 67922 V 19102 67922 V 36540 67922
+V 37227 67523 a(kinbbdpre.h)p 48167 67922 V 7811 67966
+40378 45 v Black Black Black eop
+%%Page: 6 14
+6 13 bop Black 0 2701 a FB(6)32067 b(ID)-35 b(A)425 b(Installation)e
+(Pro)35 b(cedure)p 0 3144 48001 45 v Black Black Black
+0 6974 a Fy(--disable-)p Fr(solver)2214 8733 y FA(Although)503
+b(eac)-31 b(h)502 b(existing)h(solv)-31 b(er)502 b(mo)31
+b(dule)503 b(is)e(built)i(b)-31 b(y)502 b(default,)536
+b(supp)31 b(ort)501 b(for)h(a)g(giv)-31 b(en)503 b(solv)-31
+b(er)502 b(can)f(b)31 b(e)2214 10061 y(explicitly)396
+b(disabled)e(using)f(this)h(option.)566 b(The)393 b(v)-61
+b(alid)394 b(v)-61 b(alues)393 b(for)h Fr(solver)e FA(are:)540
+b Fy(cvode)p FA(,)400 b Fy(cvodes)p FA(,)h Fy(ida)p FA(,)f(and)2214
+11389 y Fy(kinsol)p FA(.)p Black Black 0 13548 a Fy
+(--with-cppflags=ARG)2214 15307 y FA(Sp)31 b(ecify)310
+b(additional)j Fx(C)d FA(prepro)31 b(cessor)308 b(\260ags)i(\(e.g.,)324
+b Fy(ARG=-I<include)p 32065 15307 349 45 v 420 w(dir>)310
+b FA(if)h(necessary)e(header)g(\257les)h(are)2214 16635
+y(lo)31 b(cated)371 b(in)e(nonstandard)h(lo)31 b(cations\).)p
+Black Black 0 18794 a Fy(--with-cflags=ARG)2214 20553
+y FA(Sp)g(ecify)370 b(additional)i Fx(C)d FA(compilation)k(\260ags.)p
+Black Black 0 22712 a Fy(--with-ldflags=ARG)2214 24471
+y FA(Sp)31 b(ecify)424 b(additional)j(link)-31 b(er)425
+b(\260ags)g(\(e.g.,)439 b Fy(ARG=-L<lib)p 25825 24471
+V 420 w(dir>)425 b FA(if)f(required)g(libraries)g(are)g(lo)31
+b(cated)425 b(in)g(non-)2214 25799 y(standard)369 b(lo)31
+b(cations\).)p Black Black 0 27958 a Fy(--with-libs=ARG)2214
+29717 y FA(Sp)g(ecify)579 b(additional)j(libraries)d(to)h(b)31
+b(e)578 b(used)h(\(e.g.,)633 b Fy(ARG=-l<foo>)580 b FA(to)g(link)g
+(with)g(the)f(library)g(named)2214 31045 y Fy(libfoo.a)370
+b FA(or)f Fy(libfoo.so)p FA(\).)p Black Black 0 33204
+a Fy(--with-precision=ARG)2214 34963 y FA(By)469 b(default,)496
+b Fx(sundials)468 b FA(will)j(de\257ne)d(a)i(real)f(n)-31
+b(um)g(b)31 b(er)469 b(\(in)-31 b(ternally)472 b(referred)467
+b(to)j(as)f Fy(realtype)p FA(\))h(to)g(b)31 b(e)469 b(a)2214
+36291 y(double-precision)421 b(\260oating-p)31 b(oin)-31
+b(t)423 b(n)-31 b(umeric)420 b(data)h(t)-31 b(yp)31 b(e)420
+b(\()p Fy(double)h Fx(C)p FA(-t)-31 b(yp)31 b(e\);)446
+b(ho)-31 b(w)g(ev)g(er,)434 b(this)420 b(option)i(ma)-31
+b(y)2214 37619 y(b)31 b(e)435 b(used)f(to)i(build)g Fx(sundials)f
+FA(with)h Fy(realtype)h FA(alternativ)-31 b(ely)438 b(de\257ned)d(as)g
+(a)h(single-precision)h(\260oating-)2214 38948 y(p)31
+b(oin)-31 b(t)370 b(n)-31 b(umeric)370 b(data)g(t)-31
+b(yp)31 b(e)370 b(\()p Fy(float)g Fx(C)p FA(-t)-31 b(yp)31
+b(e\))371 b(if)e Fy(ARG=single)p FA(,)i(or)e(as)g(a)h
+Fy(long)582 b(double)370 b Fx(C)p FA(-t)-31 b(yp)31 b(e)369
+b(if)2214 40276 y Fy(ARG=extended)p FA(.)2214 42035 y(Default:)494
+b Fy(ARG=double)0 45123 y Ft(Options)500 b(for)e(F)-125
+b(ortran)501 b(supp)42 b(ort)p Black Black 0 47166 a
+Fy(--disable-f77)2214 48925 y FA(Using)469 b(this)h(option)g(will)h
+(disable)e(all)h Fx(F)-32 b(or)-74 b(tran)468 b FA(supp)31
+b(ort.)791 b(The)469 b Fx(f)-25 b(cv)g(ode)p FA(,)495
+b Fx(fkinsol)467 b FA(and)i Fx(fnvector)2214 50253 y
+FA(mo)31 b(dules)370 b(will)h(not)f(b)31 b(e)368 b(built)j(regardless)d
+(of)i(a)-31 b(v)-61 b(ailabilit)-31 b(y)-92 b(.)p Black
+Black 0 52412 a Fy(--with-fflags=ARG)2214 54171 y FA(Sp)31
+b(ecify)370 b(additional)i Fx(F)-32 b(or)-74 b(tran)367
+b FA(compilation)373 b(\260ags.)0 56109 y(The)260 b(con\257guration)i
+(script)e(will)h(attempt)h(to)f(automatically)k(determine)260
+b(the)g(function)i(name)e(mangling)j(sc)-31 b(heme)0
+57437 y(required)344 b(b)-31 b(y)345 b(the)f(sp)31 b(eci\257ed)344
+b Fx(F)-32 b(or)-74 b(tran)343 b FA(compiler,)351 b(but)344
+b(the)h(follo)-31 b(wing)348 b(t)-31 b(w)g(o)346 b(options)g(ma)-31
+b(y)346 b(b)31 b(e)343 b(used)h(to)h(o)-31 b(v)g(erride)0
+58765 y(the)369 b(default)i(b)31 b(eha)-31 b(vior.)p
+Black Black 0 60703 a Fy(--with-f77underscore=ARG)2214
+62461 y FA(This)430 b(option)g(p)31 b(ertains)430 b(to)g(the)f
+Fx(fkinsol)p FA(,)443 b Fx(f)-25 b(cv)g(ode)430 b FA(and)g
+Fx(fnvector)f(F)-32 b(or)-74 b(tran)p FA(-)p Fx(C)428
+b FA(in)-31 b(terface)430 b(mo)31 b(dules)2214 63790
+y(and)460 b(is)h(used)e(to)i(sp)31 b(ecify)461 b(the)f(n)-31
+b(um)g(b)31 b(er)461 b(of)g(underscores)d(to)j(app)31
+b(end)461 b(to)g(function)h(names)e(so)g Fx(F)-32 b(or)-74
+b(tran)2214 65118 y FA(routines)483 b(can)h(prop)31 b(erly)483
+b(link)h(with)g(the)g(asso)31 b(ciated)484 b Fx(sundials)e
+FA(libraries.)835 b(V)-92 b(alid)485 b(v)-61 b(alues)483
+b(for)g Fy(ARG)g FA(are:)2214 66447 y Fy(none)p FA(,)370
+b Fy(one)f FA(and)h Fy(two)p FA(.)2214 68205 y(Default:)494
+b Fy(ARG=one)p Black Black 0 70364 a(--with-f77case=ARG)2214
+72123 y FA(Use)342 b(this)h(option)h(to)f(sp)31 b(ecify)342
+b(whether)h(the)f(external)i(names)e(of)h(the)g Fx(fkinsol)p
+FA(,)j Fx(f)-25 b(cv)g(ode)343 b FA(and)g Fx(fnvector)2214
+73451 y(F)-32 b(or)-74 b(tran)p FA(-)p Fx(C)497 b FA(in)-31
+b(terface)500 b(functions)f(should)g(b)31 b(e)498 b(lo)-31
+b(w)g(ercase)500 b(or)f(upp)31 b(ercase)497 b(so)i Fx(F)-32
+b(or)-74 b(tran)497 b FA(routines)i(can)2214 74780 y(prop)31
+b(erly)522 b(link)g(with)h(the)f(asso)31 b(ciated)523
+b Fx(sundials)e FA(libraries.)951 b(V)-92 b(alid)523
+b(v)-61 b(alues)522 b(for)g Fy(ARG)g FA(are:)797 b Fy(lower)523
+b FA(and)2214 76108 y Fy(upper)p FA(.)2214 77867 y(Default:)494
+b Fy(ARG=lower)p Black Black eop
+%%Page: 7 15
+7 14 bop Black 4000 2701 a FB(2.2)425 b(Con\257guration)i(options)33202
+b(7)p 4000 3144 48001 45 v Black 4000 6974 a Ft(Options)500
+b(for)e(MPI)f(supp)42 b(ort)4000 9205 y FA(The)369 b(follo)-31
+b(wing)373 b(con\257guration)f(options)e(are)f(only)h(applicable)i(to)e
+(the)f(parallel)i Fx(sundials)d FA(pac)-31 b(k)-61 b(ages:)p
+Black Black 4000 11357 a Fy(--disable-mpi)6214 13330
+y FA(Using)370 b(this)f(option)i(will)g(completely)h(disable)e
+Fx(MPI)e FA(supp)31 b(ort.)p Black Black 4000 15703 a
+Fy(--with-mpicc=ARG)p Black Black 4000 18076 a(--with-mpif77=ARG)6214
+20049 y FA(By)349 b(default,)355 b(the)349 b(con\257guration)i(utilit)
+-31 b(y)352 b(script)d(will)i(use)d(the)h Fx(MPI)g FA(compiler)h
+(scripts)e(named)i Fy(mpicc)g FA(and)6214 21377 y Fy(mpif77)324
+b FA(to)f(compile)i(the)e(parallelized)j Fx(sundials)c
+FA(subroutines;)339 b(ho)-31 b(w)g(ev)g(er,)334 b(for)323
+b(reasons)f(of)i(compatibilit)-31 b(y)-92 b(,)6214 22705
+y(di\256eren)-31 b(t)412 b(executable)h(names)f(ma)-31
+b(y)413 b(b)31 b(e)412 b(sp)31 b(eci\257ed)411 b(via)i(the)f(ab)31
+b(o)-31 b(v)g(e)413 b(options.)622 b(Also,)424 b Fy(ARG=no)412
+b FA(can)g(b)31 b(e)411 b(used)6214 24034 y(to)394 b(disable)g(the)g
+(use)e(of)i Fx(MPI)f FA(compiler)h(scripts,)400 b(th)-31
+b(us)393 b(causing)h(the)g(serial)f Fx(C)h FA(and)f Fx(F)-32
+b(or)-74 b(tran)392 b FA(compilers)6214 25362 y(to)370
+b(b)31 b(e)369 b(used)f(to)i(compile)h(the)e(parallelized)j
+Fx(sundials)c FA(functions)i(and)g(examples.)p Black
+Black 4000 27735 a Fy(--with-mpi-root=MPIDIR)6214 29708
+y FA(This)496 b(option)i(ma)-31 b(y)497 b(b)31 b(e)495
+b(used)g(to)i(sp)31 b(ecify)496 b(whic)-31 b(h)497 b
+Fx(MPI)e FA(implemen)-31 b(tation)500 b(should)c(b)31
+b(e)495 b(used.)872 b(The)496 b Fx(sun-)6214 31036 y(dials)430
+b FA(con\257guration)i(script)f(will)h(automatically)j(c)-31
+b(hec)g(k)431 b(under)f(the)h(sub)31 b(directories)430
+b Fy(MPIDIR/include)6214 32365 y FA(and)510 b Fy(MPIDIR/lib)h
+FA(for)e(the)h(necessary)f(header)g(\257les)g(and)h(libraries.)914
+b(The)510 b(sub)31 b(directory)510 b Fy(MPIDIR/bin)6214
+33693 y FA(will)558 b(also)f(b)31 b(e)555 b(searc)-31
+b(hed)556 b(for)g(the)g Fx(C)g FA(and)g Fx(F)-32 b(or)-74
+b(tran)555 b(MPI)g FA(compiler)i(scripts,)603 b(unless)556
+b(the)g(user)f(uses)6214 35021 y Fy(--with-mpicc=no)371
+b FA(or)e Fy(--with-mpif77=no)p FA(.)p Black Black 4000
+37394 a Fy(--with-mpi-incdir=INCDIR)p Black Black 4000
+39767 a(--with-mpi-libdir=LIBDIR)p Black Black 4000 42140
+a(--with-mpi-libs=LIBS)6214 44113 y FA(These)491 b(options)h(ma)-31
+b(y)493 b(b)31 b(e)490 b(used)h(if)g(the)h(user)e(w)-31
+b(ould)492 b(prefer)e(not)i(to)g(use)f(a)g(preexisting)h
+Fx(MPI)f FA(compiler)6214 45442 y(script,)331 b(but)322
+b(instead)g(w)-31 b(ould)322 b(rather)g(use)e(a)i(serial)f(complier)i
+(and)e(pro)-31 b(vide)322 b(the)g(\260ags)g(necessary)e(to)i(compile)
+6214 46770 y(the)369 b Fx(MPI)p FA(-a)-31 b(w)g(are)370
+b(subroutines)g(in)f Fx(sundials)p FA(.)6214 48743 y(Often)427
+b(an)g Fx(MPI)f FA(implemen)-31 b(tation)431 b(will)d(ha)-31
+b(v)g(e)428 b(unique)f(library)g(names)g(and)g(so)g(it)g(ma)-31
+b(y)428 b(b)31 b(e)426 b(necessary)g(to)6214 50071 y(sp)31
+b(ecify)369 b(the)h(appropriate)g(libraries)g(to)g(use)e(\(e.g.,)k
+Fy(LIBS=-lmpich)p FA(\).)6214 52044 y(Default:)494 b
+Fy(INCDIR=MPIDIR/include)p FA(,)372 b Fy(LIBDIR=MPIDIR/lib)g
+FA(and)d Fy(LIBS=-lmpi)p Black Black 4000 54417 a(--with-mpi-flags=ARG)
+6214 56390 y FA(Sp)31 b(ecify)370 b(additional)i Fx(MPI)p
+FA(-sp)31 b(eci\257c)368 b(\260ags.)4000 60025 y Ft(Options)500
+b(for)e(library)i(supp)42 b(ort)4000 62256 y FA(By)485
+b(default,)517 b(only)486 b(static)h(libraries)f(are)f(built,)516
+b(but)485 b(the)h(follo)-31 b(wing)489 b(option)e(ma)-31
+b(y)487 b(b)31 b(e)485 b(used)f(to)i(build)g(shared)4000
+63584 y(libraries)370 b(on)f(supp)31 b(orted)369 b(platforms.)p
+Black Black 4000 65736 a Fy(--enable-shared)6214 67709
+y FA(Using)g(this)h(particular)g(option)h(will)f(result)f(in)h(b)31
+b(oth)369 b(static)h(and)g(shared)e(v)-31 b(ersions)369
+b(of)g(the)h(a)-31 b(v)-61 b(ailable)371 b Fx(sun-)6214
+69037 y(dials)304 b FA(libraries)h(b)31 b(eing)305 b(built)g(if)g(the)g
+(system)g(supp)31 b(orts)303 b(shared)h(libraries.)472
+b(T)-92 b(o)305 b(build)g(only)g(shared)f(libraries)6214
+70365 y(also)370 b(sp)31 b(ecify)369 b Fy(--disable-static)p
+FA(.)6214 72338 y Fr(Note)p FA(:)740 b(The)494 b Fx(f)-25
+b(cv)g(ode)494 b FA(and)f Fx(fkinsol)f FA(libraries)h(can)h(only)g(b)31
+b(e)493 b(built)h(as)f(static)i(libraries)f(b)31 b(ecause)492
+b(they)6214 73667 y(con)-31 b(tain)415 b(references)d(to)i(externally)h
+(de\257ned)e(sym)-31 b(b)31 b(ols,)425 b(namely)415 b(user-supplied)e
+Fx(F)-32 b(or)-74 b(tran)411 b FA(subroutines.)6214 74995
+y(Although)471 b(the)f Fx(F)-32 b(or)-74 b(tran)467 b
+FA(in)-31 b(terfaces)470 b(to)g(the)g(serial)g(and)f(parallel)i
+(implemen)-31 b(tations)473 b(of)d(the)f(supplied)6214
+76323 y Fx(nvector)353 b FA(mo)31 b(dule)353 b(do)g(not)h(con)-31
+b(tain)355 b(an)-31 b(y)353 b(unresolv)-61 b(able)353
+b(external)h(sym)-31 b(b)31 b(ols,)358 b(the)353 b(libraries)g(are)f
+(still)j(built)6214 77652 y(as)369 b(static)i(libraries)e(for)g(the)h
+(purp)31 b(ose)368 b(of)i(consistency)-92 b(.)p Black
+Black eop
+%%Page: 8 16
+8 15 bop Black 0 2701 a FB(8)32067 b(ID)-35 b(A)425 b(Installation)e
+(Pro)35 b(cedure)p 0 3144 48001 45 v Black 0 6974 a Ft(Options)500
+b(for)e(cross-compilation)0 9017 y FA(If)340 b(the)h
+Fx(sundials)f FA(suite)h(will)i(b)31 b(e)340 b(cross-compiled)h
+(\(meaning)i(the)e(build)h(pro)31 b(cedure)339 b(will)k(not)e(b)31
+b(e)340 b(completed)j(on)0 10345 y(the)353 b(actual)h(destination)g
+(system,)j(but)352 b(rather)g(on)h(an)f(alternate)j(system)d(with)i(a)e
+(di\256eren)-31 b(t)353 b(arc)-31 b(hitecture\))354 b(then)0
+11674 y(the)369 b(follo)-31 b(wing)373 b(t)-31 b(w)g(o)371
+b(options)g(should)e(b)31 b(e)369 b(used:)p Black Black
+0 13624 a Fy(--build=BUILD)2214 15395 y FA(This)515 b(particular)h
+(option)g(is)e(used)g(to)h(sp)31 b(ecify)515 b(the)g(canonical)h
+(system/platform)i(name)d(for)f(the)h(build)2214 16723
+y(system.)p Black Black 0 18894 a Fy(--host=HOST)2214
+20665 y FA(If)352 b(cross-compiling,)358 b(then)352 b(the)h(user)e(m)
+-31 b(ust)353 b(use)e(this)i(option)h(to)f(sp)31 b(ecify)352
+b(the)h(canonical)h(system/platform)2214 21994 y(name)370
+b(for)f(the)h(destination)h(system.)0 25092 y Ft(En)-42
+b(vironmen)g(t)500 b(v)-83 b(ariables)0 27136 y FA(The)433
+b(follo)-31 b(wing)437 b(en)-31 b(vironmen)g(t)435 b(v)-61
+b(ariables)434 b(can)f(b)31 b(e)433 b(lo)31 b(cally)435
+b(\(re\)de\257ned)f(for)f(use)f(during)i(the)f(con\257guration)i(of)0
+28464 y Fx(sundials)p FA(.)492 b(See)369 b(the)g(next)h(section)g(for)f
+(illustrations)j(of)d(these.)p Black Black 0 30414 a
+Fy(CC)p Black Black 0 32585 a(F77)2214 34356 y FA(Since)473
+b(the)g(con\257guration)i(script)e(uses)f(the)i(\257rst)e
+Fx(C)h FA(and)g Fx(F)-32 b(or)-74 b(tran)471 b FA(compilers)j(found)g
+(in)f(the)g(curren)-31 b(t)2214 35684 y(executable)267
+b(searc)-31 b(h)265 b(path,)288 b(then)266 b(eac)-31
+b(h)266 b(relev)-61 b(an)-31 b(t)266 b(shell)g(v)-61
+b(ariable)267 b(\()p Fy(CC)f FA(and)g Fy(F77)p FA(\))g(m)-31
+b(ust)267 b(b)31 b(e)265 b(lo)31 b(cally)268 b(\(re\)de\257ned)2214
+37013 y(in)535 b(order)f(to)h(use)f(a)g(di\256eren)-31
+b(t)535 b(compiler.)990 b(F)-92 b(or)534 b(example,)577
+b(to)536 b(use)d Fy(xcc)i FA(\(executable)i(name)e(of)g(c)-31
+b(hosen)2214 38341 y(compiler\))371 b(as)e(the)g Fx(C)h
+FA(language)h(compiler,)g(use)d Fy(CC=xcc)i FA(in)g(the)f(con\257gure)h
+(step.)p Black Black 0 40512 a Fy(CFLAGS)p Black Black
+0 42683 a(FFLAGS)2214 44455 y FA(Use)f(these)g(en)-31
+b(vironmen)g(t)371 b(v)-61 b(ariables)370 b(to)g(o)-31
+b(v)g(erride)369 b(the)h(default)g Fx(C)g FA(and)f Fx(F)-32
+b(or)-74 b(tran)368 b FA(compilation)k(\260ags.)0 48115
+y Fu(2.3)1793 b(Con\257guration)598 b(examples)0 50540
+y FA(The)369 b(follo)-31 b(wing)373 b(examples)d(are)g(mean)-31
+b(t)370 b(to)g(help)g(demonstrate)g(prop)31 b(er)368
+b(usage)i(of)g(the)f(con\257gure)g(options:)p Black Black
+0 52975 a Fy(\045)581 b(configure)i(CC=gcc)f(F77=g77)g
+(--with-cflags=-g3)i(--with-fflags=-g3)f(\\)6974 54303
+y(--with-mpicc=/usr/apps/mpich/1.2.4/bin/mpicc)k(\\)6974
+55632 y(--with-mpif77=/usr/apps/mpich/1.2.4/bin/mpif77)0
+58067 y FA(The)354 b(ab)31 b(o)-31 b(v)g(e)354 b(example)h(builds)f
+Fx(sundials)f FA(using)g Fy(gcc)h FA(as)f(the)h(serial)g
+Fx(C)f FA(compiler,)359 b Fy(g77)353 b FA(as)h(the)g(serial)f
+Fx(F)-32 b(or)-74 b(tran)0 59395 y FA(compiler,)347 b
+Fy(mpicc)339 b FA(as)g(the)h(parallel)g Fx(C)f FA(compiler,)347
+b Fy(mpif77)340 b FA(as)f(the)g(parallel)i Fx(F)-32 b(or)-74
+b(tran)337 b FA(compiler,)347 b(and)339 b(app)31 b(ends)0
+60724 y(the)369 b Fy(-g3)h FA(compilaton)i(\260ag)e(to)g(the)f(list)i
+(of)e(default)i(\260ags.)p Black Black 0 63159 a Fy(\045)581
+b(configure)i(CC=gcc)f(--disable-examples)i(--with-mpicc=no)f(\\)6974
+64488 y(--with-mpi-root=/usr/apps/mpich/1.2.4)j(\\)6974
+65816 y(--with-mpi-libs=-lmpich)0 68251 y FA(This)372
+b(example)i(again)f(builds)g Fx(sundials)e FA(using)h
+Fy(gcc)g FA(as)g(the)h(serial)f Fx(C)g FA(compiler,)i(but)f(the)f
+Fy(--with-mpicc=no)0 69580 y FA(option)527 b(explicitly)h(disables)e
+(the)g(use)f(of)h(the)g(corresp)31 b(onding)526 b Fx(MPI)e
+FA(compiler)j(script.)962 b(In)525 b(addition,)567 b(since)0
+70908 y(the)464 b Fy(--with-mpi-root)h FA(option)g(is)e(giv)-31
+b(en,)488 b(the)464 b(compilation)j(\260ags)c Fy
+(-I/usr/apps/mpich/1.2.4/include)0 72236 y FA(and)331
+b Fy(-L/usr/apps/mpich/1.2.4/lib)j FA(are)d(passed)f(to)h
+Fy(gcc)g FA(when)f(compiling)k(the)c Fx(MPI)p FA(-enabled)h(functions.)
+0 73565 y(The)405 b Fy(--disable-examples)i FA(option)f(disables)g(the)
+f(examples)g(\(whic)-31 b(h)406 b(means)f(a)g Fx(F)-32
+b(or)-74 b(tran)404 b FA(compiler)h(is)g(not)0 74893
+y(required\).)487 b(The)354 b Fy(--with-mpi-libs)h FA(option)h(is)d
+(still)i(needed)e(so)g(that)i(the)e(con\257gure)h(script)f(can)h(c)-31
+b(hec)g(k)354 b(if)g Fy(gcc)0 76221 y FA(can)369 b(link)i(with)f(the)f
+(appropriate)i Fx(MPI)d FA(library)i(as)f Fy(-lmpi)h
+FA(is)f(the)h(in)-31 b(ternal)370 b(default.)p Black
+Black eop
+%%Page: 9 17
+9 16 bop Black Black 4000 15276 a Fw(Chapter)861 b(3)4000
+20811 y Fz(Mathematical)1033 b(Considerations)4000 26567
+y FA(ID)-31 b(A)369 b(solv)-31 b(es)369 b(the)h(initial-v)-61
+b(alue)372 b(problem)e(for)g(a)f(D)-31 b(AE)370 b(system)f(of)h(the)f
+(general)h(form)18022 28965 y Fp(F)154 b FA(\()p Fp(t;)184
+b(y)40 b(;)184 b(y)21866 28508 y Fo(0)22177 28965 y FA(\))308
+b(=)f(0)184 b Fp(;)1293 b(y)40 b FA(\()p Fp(t)27833 29131
+y Fn(0)28330 28965 y FA(\))307 b(=)h Fp(y)30779 29131
+y Fn(0)31460 28965 y Fp(;)554 b(y)32904 28508 y Fo(0)33214
+28965 y FA(\()p Fp(t)34044 29131 y Fn(0)34541 28965 y
+FA(\))308 b(=)f Fp(y)37030 28508 y Fo(0)36990 29238 y
+Fn(0)37671 28965 y Fp(;)11747 b FA(\(3.1\))4000 31363
+y(where)286 b Fp(y)40 b FA(,)303 b Fp(y)8894 30961 y
+Fo(0)9204 31363 y FA(,)h(and)287 b Fp(F)440 b FA(are)286
+b(v)-31 b(ectors)288 b(in)f FB(R)20644 30877 y Fm(N)21484
+31363 y FA(,)303 b Fp(t)287 b FA(is)f(the)h(indep)31
+b(enden)-31 b(t)288 b(v)-61 b(ariable,)304 b Fp(y)36804
+30961 y Fo(0)37422 31363 y FA(=)j Fp(dy)40 b(=dt)p FA(,)304
+b(and)287 b(initial)i(conditions)4000 32691 y Fp(y)40
+b FA(\()p Fp(t)5413 32857 y Fn(0)5909 32691 y FA(\))308
+b(=)g Fp(y)8359 32857 y Fn(0)8855 32691 y FA(,)369 b
+Fp(y)10114 32289 y Fo(0)10424 32691 y FA(\()p Fp(t)11254
+32857 y Fn(0)11751 32691 y FA(\))308 b(=)g Fp(y)14241
+32289 y Fo(0)14201 32966 y Fn(0)15066 32691 y FA(are)369
+b(giv)-31 b(en.)494 b(\(Often)370 b Fp(t)f FA(is)g(time,)i(but)e(it)h
+(certainly)h(need)e(not)h(b)31 b(e.\))5660 34019 y(Prior)414
+b(to)g(in)-31 b(tegrating)417 b(a)d(D)-31 b(AE)413 b(initial-v)-61
+b(alue)417 b(problem,)426 b(an)414 b(imp)31 b(ortan)-31
+b(t)415 b(requiremen)-31 b(t)415 b(is)e(that)i(the)e(pair)h(of)4000
+35348 y(v)-31 b(ectors)490 b Fp(y)8424 35514 y Fn(0)9409
+35348 y FA(and)g Fp(y)12265 34946 y Fo(0)12225 35622
+y Fn(0)13210 35348 y FA(are)f(b)31 b(oth)490 b(initialized)i(to)f
+(satisfy)f(the)f(D)-31 b(AE)490 b(residual)g Fp(F)154
+b FA(\()p Fp(t)39046 35514 y Fn(0)39542 35348 y Fp(;)184
+b(y)40576 35514 y Fn(0)41073 35348 y Fp(;)g(y)42147 34946
+y Fo(0)42107 35622 y Fn(0)42605 35348 y FA(\))508 b(=)f(0.)854
+b(F)-92 b(or)488 b(a)i(class)4000 36676 y(of)d(problems)f(that)i
+(includes)e(so-called)i(semi-explicit)h(index-one)e(systems,)516
+b(ID)-31 b(A)485 b(pro)-31 b(vides)487 b(a)g(routine)g(that)4000
+38004 y(computes)344 b(consisten)-31 b(t)344 b(initial)h(conditions)g
+(from)f(a)f(user's)f(initial)j(guess)e([4)q(].)484 b(F)-92
+b(or)342 b(this,)349 b(the)343 b(user)f(m)-31 b(ust)344
+b(iden)-31 b(tify)4000 39333 y(sub-v)g(ectors)537 b(of)g
+Fp(y)576 b FA(\(not)538 b(necessarily)f(con)-31 b(tiguous\),)581
+b(denoted)538 b Fp(y)32114 39499 y Fm(d)33166 39333 y
+FA(and)f Fp(y)36029 39499 y Fm(a)36564 39333 y FA(,)579
+b(whic)-31 b(h)538 b(are)e(its)h(di\256eren)-31 b(tial)539
+b(and)4000 40661 y(algebraic)467 b(parts,)491 b(resp)31
+b(ectiv)-31 b(ely)-92 b(,)491 b(suc)-31 b(h)465 b(that)i
+Fp(F)619 b FA(dep)31 b(ends)465 b(on)h Fp(y)31425 40259
+y Fo(0)31385 40975 y Fm(d)32366 40661 y FA(but)g(not)h(on)f(an)-31
+b(y)466 b(comp)31 b(onen)-31 b(ts)467 b(of)f Fp(y)48509
+40259 y Fo(0)48469 40935 y Fm(a)49005 40661 y FA(.)782
+b(The)4000 41989 y(assumption)299 b(that)f(the)g(system)g(is)f(\\index)
+h(one")g(means)g(that)h(for)e(a)h(giv)-31 b(en)298 b
+Fp(t)f FA(and)h Fp(y)38816 42155 y Fm(d)39332 41989 y
+FA(,)312 b(the)297 b(system)h Fp(F)154 b FA(\()p Fp(t;)184
+b(y)40 b(;)184 b(y)49229 41588 y Fo(0)49540 41989 y FA(\))308
+b(=)g(0)4000 43318 y(de\257nes)345 b Fp(y)8154 43484
+y Fm(a)9035 43318 y FA(uniquely)-92 b(.)485 b(In)346
+b(this)g(case,)k(a)c(solv)-31 b(er)346 b(within)i(ID)-31
+b(A)345 b(computes)h Fp(y)35258 43484 y Fm(a)36139 43318
+y FA(and)g Fp(y)38851 42916 y Fo(0)38811 43631 y Fm(d)39672
+43318 y FA(at)h Fp(t)307 b FA(=)g Fp(t)43277 43484 y
+Fn(0)43774 43318 y FA(,)350 b(giv)-31 b(en)347 b Fp(y)47841
+43484 y Fm(d)48703 43318 y FA(and)f(an)4000 44646 y(initial)325
+b(guess)d(for)g Fp(y)12197 44812 y Fm(a)12732 44646 y
+FA(.)477 b(A)322 b(second)h(a)-31 b(v)-61 b(ailable)324
+b(option)g(with)g(this)f(solv)-31 b(er)322 b(also)h(computes)h(all)f
+(of)g Fp(y)40 b FA(\()p Fp(t)44950 44812 y Fn(0)45446
+44646 y FA(\))323 b(giv)-31 b(en)323 b Fp(y)49625 44244
+y Fo(0)49935 44646 y FA(\()p Fp(t)50765 44812 y Fn(0)51262
+44646 y FA(\);)4000 45974 y(this)442 b(is)f(in)-31 b(tended)443
+b(mainly)g(for)f(quasi-steady-state)i(problems,)461 b(where)441
+b Fp(y)35637 45573 y Fo(0)35947 45974 y FA(\()p Fp(t)36777
+46140 y Fn(0)37274 45974 y FA(\))428 b(=)g(0)442 b(is)g(giv)-31
+b(en.)711 b(In)441 b(b)31 b(oth)442 b(cases,)4000 47303
+y(ID)-31 b(A)436 b(solv)-31 b(es)438 b(the)f(system)g
+Fp(F)154 b FA(\()p Fp(t)17107 47469 y Fn(0)17604 47303
+y Fp(;)184 b(y)18638 47469 y Fn(0)19135 47303 y Fp(;)g(y)20209
+46901 y Fo(0)20169 47578 y Fn(0)20666 47303 y FA(\))421
+b(=)f(0)438 b(for)f(the)g(unkno)-31 b(wn)438 b(comp)31
+b(onen)-31 b(ts)438 b(of)f Fp(y)40361 47469 y Fn(0)41294
+47303 y FA(and)h Fp(y)44098 46901 y Fo(0)44058 47578
+y Fn(0)44554 47303 y FA(,)454 b(using)437 b(Newton)4000
+48631 y(iteration)426 b(augmen)-31 b(ted)426 b(with)f(a)g(line)f(searc)
+-31 b(h)424 b(global)i(strategy)-92 b(.)658 b(In)424
+b(doing)h(this,)438 b(it)425 b(mak)-31 b(es)425 b(use)e(of)i(the)f
+(existing)4000 49959 y(mac)-31 b(hinery)413 b(that)h(is)e(to)h(b)31
+b(e)412 b(used)f(for)h(solving)i(the)f(linear)g(systems)f(during)g(the)
+h(in)-31 b(tegration,)426 b(in)412 b(com)-31 b(bination)4000
+51288 y(with)322 b(certain)g(tric)-31 b(ks)321 b(in)-31
+b(v)g(olving)325 b(the)c(step)g(size)f(\(whic)-31 b(h)323
+b(is)e(set)g(arti\257cially)j(for)d(this)g(calculation\).)480
+b(F)-92 b(or)320 b(problems)4000 52616 y(that)407 b(do)f(not)h(fall)g
+(in)-31 b(to)407 b(either)f(of)g(these)g(categories,)417
+b(the)406 b(user)e(is)i(resp)31 b(onsible)406 b(for)g(passing)g
+(consisten)-31 b(t)407 b(v)-61 b(alues)4000 53945 y(or)369
+b(risk)g(failure)h(in)g(the)f(n)-31 b(umerical)371 b(in)-31
+b(tegration.)5660 55273 y(The)575 b(in)-31 b(tegration)577
+b(metho)31 b(d)575 b(in)g(ID)-31 b(A)573 b(is)h(v)-61
+b(ariable-order,)627 b(v)-61 b(ariable-co)31 b(e\261cien)-31
+b(t)577 b(BDF,)d(in)g(\257xed-leading-)4000 56601 y(co)31
+b(e\261cien)-31 b(t)529 b(form)f([1)q(].)968 b(The)528
+b(metho)31 b(d)528 b(order)f(ranges)h(from)g(1)g(to)g(5,)568
+b(with)528 b(the)g(BDF)f(of)h(order)f Fp(q)567 b FA(giv)-31
+b(en)529 b(b)-31 b(y)4000 57930 y(the)369 b(m)-31 b(ultistep)372
+b(form)-31 b(ula)23496 58700 y Fm(q)22913 59084 y Fl(X)22995
+61442 y Fm(i)p Fn(=0)24696 60136 y Fp(\256)25404 60302
+y Fm(n;i)26583 60136 y Fp(y)27126 60302 y Fm(n)p Fo(\241)p
+Fm(i)29041 60136 y FA(=)307 b Fp(h)30847 60302 y Fm(n)31450
+60136 y Fp(y)32033 59679 y Fo(0)31993 60410 y Fm(n)32780
+60136 y Fp(;)16638 b FA(\(3.2\))4000 63137 y(where)427
+b Fp(y)7802 63303 y Fm(n)8832 63137 y FA(and)g Fp(y)11625
+62735 y Fo(0)11585 63411 y Fm(n)12615 63137 y FA(are)g(the)h(computed)g
+(appro)-31 b(ximations)431 b(to)d Fp(y)40 b FA(\()p Fp(t)32350
+63303 y Fm(n)32953 63137 y FA(\))427 b(and)h Fp(y)36604
+62735 y Fo(0)36914 63137 y FA(\()p Fp(t)37744 63303 y
+Fm(n)38347 63137 y FA(\),)442 b(resp)31 b(ectiv)-31 b(ely)-92
+b(,)444 b(and)427 b(the)h(step)4000 64465 y(size)345
+b(is)f Fp(h)7799 64631 y Fm(n)8709 64465 y FA(=)308 b
+Fp(t)10278 64631 y Fm(n)11077 64465 y Fs(\241)197 b Fp(t)12535
+64631 y Fm(n)p Fo(\241)p Fn(1)14271 64465 y FA(.)484
+b(The)345 b(co)31 b(e\261cien)-31 b(ts)346 b Fp(\256)23599
+64631 y Fm(n;i)25123 64465 y FA(are)e(uniquely)i(determined)g(b)-31
+b(y)345 b(the)g(order)f Fp(q)40 b FA(,)350 b(and)345
+b(the)g(history)4000 65794 y(of)391 b(the)g(step)f(sizes.)557
+b(The)391 b(application)i(of)f(the)e(BDF)g(\(3.2\))j(to)e(the)g(D)-31
+b(AE)391 b(system)g(\(3.1\))i(results)d(in)h(a)g(nonlinear)4000
+67122 y(algebraic)371 b(system)e(to)h(b)31 b(e)369 b(solv)-31
+b(ed)370 b(at)g(eac)-31 b(h)370 b(step:)17496 70455 y
+Fp(G)p FA(\()p Fp(y)19339 70621 y Fm(n)19942 70455 y
+FA(\))308 b Fs(\264)f Fp(F)22898 68562 y Fl(\303)23775
+70455 y Fp(t)24175 70621 y Fm(n)24777 70455 y Fp(;)369
+b(y)25996 70621 y Fm(n)26599 70455 y Fp(;)g(h)27913 69998
+y Fo(\241)p Fn(1)27913 70728 y Fm(n)29869 69019 y(q)29286
+69403 y Fl(X)29368 71761 y Fm(i)p Fn(=0)31069 70455 y
+Fp(\256)31777 70621 y Fm(n;i)32956 70455 y Fp(y)33499
+70621 y Fm(n)p Fo(\241)p Fm(i)35106 68562 y Fl(!)36290
+70455 y FA(=)308 b(0)184 b Fp(:)11222 b FA(\(3.3\))4000
+73882 y(Regardless)414 b(of)g(the)g(metho)31 b(d)415
+b(options,)427 b(the)414 b(solution)i(of)e(the)h(nonlinear)g(system)f
+(\(3.3\))i(is)e(accomplished)i(with)4000 75210 y(some)449
+b(form)h(of)g(Newton)g(iteration.)735 b(This)449 b(leads)h(to)g(a)f
+(linear)h(system)f(for)g(eac)-31 b(h)450 b(Newton)h(correction,)470
+b(of)450 b(the)4000 76539 y(form)19881 77867 y Fp(J)106
+b FA([)p Fp(y)21451 78067 y Fm(n)p Fn(\()p Fm(m)p Fn(+1\))24899
+77867 y Fs(\241)246 b Fp(y)26549 78067 y Fm(n)p Fn(\()p
+Fm(m)p Fn(\))28628 77867 y FA(])308 b(=)g Fs(\241)p Fp(G)p
+FA(\()p Fp(y)33116 78067 y Fm(n)p Fn(\()p Fm(m)p Fn(\))35196
+77867 y FA(\))184 b Fp(;)13608 b FA(\(3.4\))p Black Black
+eop
+%%Page: 10 18
+10 17 bop Black 0 2701 a FB(10)30377 b(Mathematical)424
+b(Considerations)p 0 3144 48001 45 v Black 0 6974 a FA(where)316
+b Fp(y)3691 7174 y Fm(n)p Fn(\()p Fm(m)p Fn(\))6087 6974
+y FA(is)g(the)g Fp(m)p FA(-th)g(appro)-31 b(ximation)320
+b(to)d Fp(y)20875 7140 y Fm(n)21477 6974 y FA(.)475 b(Here)316
+b Fp(J)422 b FA(is)316 b(some)h(appro)-31 b(ximation)320
+b(to)c(the)h(system)f(Jacobian)18199 10093 y Fp(J)413
+b FA(=)20528 9344 y Fp(@)61 b(G)p 20528 9838 1520 45
+v 20672 10852 a(@)g(y)22488 10093 y FA(=)23789 9344 y
+Fp(@)g(F)p 23789 9838 1515 45 v 23931 10852 a(@)g(y)25682
+10093 y FA(+)246 b Fp(\256)27648 9344 y(@)61 b(F)p 27634
+9838 1543 45 v 27634 10852 a(@)g(y)28866 10533 y Fo(0)29494
+10093 y Fp(;)15924 b FA(\(3.5\))0 13106 y(where)438 b
+Fp(\256)428 b FA(=)423 b Fp(\256)6398 13272 y Fm(n;)p
+Fn(0)7705 13106 y Fp(=h)8896 13272 y Fm(n)9499 13106
+y FA(.)701 b(The)439 b(scalar)g Fp(\256)k FA(c)-31 b(hanges)439
+b(whenev)-31 b(er)439 b(the)g(step)g(size)f(or)h(metho)31
+b(d)440 b(order)e(c)-31 b(hanges.)702 b(The)0 14434 y(linear)370
+b(systems)f(are)g(solv)-31 b(ed)370 b(b)-31 b(y)370 b(one)f(of)h(three)
+f(metho)31 b(ds:)p Black 1660 16640 a Fs(\262)p Black
+554 w FA(direct)370 b(dense)e(solv)-31 b(e)370 b(\(serial)h(v)-31
+b(ersion)369 b(only\),)p Black 1660 18850 a Fs(\262)p
+Black 554 w FA(direct)h(banded)f(solv)-31 b(e)370 b(\(serial)g(v)-31
+b(ersion)370 b(only\),)h(or)p Black 1660 21060 a Fs(\262)p
+Black 554 w FA(SPGMR)e(=)g(Scaled)h(Preconditioned)h(GMRES,)e(with)h
+(restarts)f(allo)-31 b(w)g(ed.)0 23267 y(F)-92 b(or)448
+b(the)i(SPGMR)e(case,)469 b(preconditioning)452 b(is)d(allo)-31
+b(w)g(ed)452 b(only)e(on)f(the)h(left,)32469 22865 y
+Fn(1)33436 23267 y FA(so)f(that)h(GMRES)f(is)g(applied)h(to)0
+24595 y(systems)369 b(\()p Fp(P)5403 24193 y Fo(\241)p
+Fn(1)6591 24595 y Fp(J)106 b FA(\)\242)p Fp(y)349 b FA(=)307
+b Fs(\241)p Fp(P)12449 24193 y Fo(\241)p Fn(1)13637 24595
+y Fp(G)p FA(.)1660 25923 y(In)318 b(the)g(pro)31 b(cess)316
+b(of)i(con)-31 b(trolling)321 b(errors)316 b(at)j(v)-61
+b(arious)318 b(lev)-31 b(els,)329 b Fx(id)-25 b(a)317
+b FA(uses)g(a)h(w)-31 b(eigh)g(ted)320 b(ro)31 b(ot-mean-square)319
+b(norm,)0 27252 y(denoted)373 b Fs(k)249 b(\242)f(k)6095
+27418 y Fn(WRMS)8971 27252 y FA(,)373 b(for)g(all)g(error-lik)-31
+b(e)373 b(quan)-31 b(tities.)505 b(The)372 b(w)-31 b(eigh)g(ts)375
+b(used)c(are)h(based)h(on)f(the)h(curren)-31 b(t)372
+b(solution)0 28580 y(and)d(on)h(the)f(relativ)-31 b(e)371
+b(and)f(absolute)g(tolerances)g(input)g(b)-31 b(y)370
+b(the)f(user,)g(namely)17760 31006 y Fp(W)18805 31172
+y Fm(i)19482 31006 y FA(=)307 b Fx(r)-74 b(tol)246 b
+Fs(\242)h(j)p Fp(y)24819 31172 y Fm(i)25187 31006 y Fs(j)g
+FA(+)f Fx(a)-74 b(tol)29379 31172 y Fm(i)29932 31006
+y Fp(:)15486 b FA(\(3.6\))0 33431 y(Because)460 b Fp(W)5370
+33597 y Fm(i)6198 33431 y FA(represen)-31 b(ts)459 b(a)h(tolerance)h
+(in)f(the)g(comp)31 b(onen)-31 b(t)461 b Fp(y)27016 33597
+y Fm(i)27385 33431 y FA(,)482 b(a)460 b(v)-31 b(ector)461
+b(whose)f(norm)g(is)g(1)g(is)f(regarded)h(as)0 34760
+y(\\small.")495 b(F)-92 b(or)368 b(brevit)-31 b(y)-92
+b(,)371 b(w)-31 b(e)370 b(will)g(usually)h(drop)e(the)g(subscript)g
+(WRMS)f(on)i(norms)f(in)g(what)h(follo)-31 b(ws.)1660
+36088 y(In)343 b(the)g(case)g(of)g(a)g(direct)g(linear)h(solv)-31
+b(er)343 b(\(dense)g(or)g(banded\),)349 b(the)343 b(nonlinear)h
+(iteration)i(\(3.4\))f(is)d(a)i(Mo)31 b(di\257ed)0 37416
+y(Newton)479 b(iteration,)506 b(in)478 b(that)g(the)g(Jacobian)g
+Fp(J)584 b FA(is)477 b(\257xed)g(\(and)h(usually)g(out)g(of)f(date\),)
+506 b(with)479 b(a)e(co)31 b(e\261cien)-31 b(t)589 b(\271)-663
+b Fp(\256)0 38745 y FA(in)452 b(place)g(of)f Fp(\256)456
+b FA(in)451 b Fp(J)106 b FA(.)740 b(When)450 b(using)i(SPGMR)f(as)g
+(the)h(linear)g(solv)-31 b(er,)472 b(the)452 b(iteration)i(is)d(an)g
+(Inexact)h(Newton)0 40073 y(iteration,)333 b(using)320
+b(the)g(curren)-31 b(t)320 b(Jacobian)h(\(through)h(matrix-free)f(pro)
+31 b(ducts)320 b Fp(J)106 b(v)40 b FA(\),)330 b(in)320
+b(whic)-31 b(h)321 b(the)g(linear)f(residual)0 41401
+y Fp(J)106 b FA(\242)p Fp(y)289 b FA(+)248 b Fp(G)373
+b FA(is)g(nonzero)h(but)f(con)-31 b(trolled.)506 b(The)373
+b(Jacobian)i(matrix)f Fp(J)479 b FA(\(direct)374 b(cases\))f(or)g
+(preconditioner)h(matrix)0 42730 y Fp(P)522 b FA(\(SPGMR)369
+b(case\))h(is)f(up)31 b(dated)370 b(when:)p Black 1660
+44936 a Fs(\262)p Black 554 w FA(starting)h(the)e(problem,)p
+Black 1660 47146 a Fs(\262)p Black 554 w FA(the)h(v)-61
+b(alue)480 b(\271)-664 b Fp(\256)374 b FA(at)c(the)f(last)h(up)31
+b(date)370 b(is)f(suc)-31 b(h)369 b(that)h Fp(\256)t(=)110
+b FA(\271)-663 b Fp(\256)313 b(<)307 b FA(3)p Fp(=)p
+FA(5)370 b(or)f Fp(\256)t(=)110 b FA(\271)-663 b Fp(\256)313
+b(>)307 b FA(5)p Fp(=)p FA(3,)371 b(or)p Black 1660 49356
+a Fs(\262)p Black 554 w FA(a)f(non-fatal)h(con)-31 b(v)g(ergence)371
+b(failure)f(o)31 b(ccurred)368 b(with)i(an)g(out-of-date)h
+Fp(J)476 b FA(or)369 b Fp(P)154 b FA(.)0 51562 y(The)453
+b(ab)31 b(o)-31 b(v)g(e)454 b(strategy)g(balances)f(the)g(high)h(cost)f
+(of)g(frequen)-31 b(t)454 b(matrix)g(ev)-61 b(aluations)455
+b(and)e(prepro)31 b(cessing)452 b(with)0 52890 y(the)443
+b(slo)-31 b(w)445 b(con)-31 b(v)g(ergence)444 b(due)f(to)h(infrequen)
+-31 b(t)444 b(up)31 b(dates.)715 b(T)-92 b(o)444 b(reduce)e(storage)i
+(costs)g(on)f(an)h(up)31 b(date,)462 b(Jacobian)0 54219
+y(information)372 b(is)d(alw)-31 b(a)g(ys)372 b(reev)-61
+b(aluated)370 b(from)f(scratc)-31 b(h.)1660 55547 y(The)364
+b(stopping)g(test)g(for)f(the)h(Newton)g(iteration)i(in)d(ID)-31
+b(A)363 b(ensures)f(that)i(the)f(iteration)j(error)c
+Fp(y)42339 55713 y Fm(n)43175 55547 y Fs(\241)234 b Fp(y)44813
+55747 y Fm(n)p Fn(\()p Fm(m)p Fn(\))47256 55547 y FA(is)0
+56875 y(small)350 b(relativ)-31 b(e)350 b(to)g Fp(y)387
+b FA(itself.)487 b(F)-92 b(or)348 b(this,)354 b(w)-31
+b(e)349 b(estimate)h(the)f(linear)g(con)-31 b(v)g(ergence)350
+b(rate)f(at)g(all)h(iterations)g Fp(m)308 b(>)f FA(1)349
+b(as)19897 60284 y Fp(R)315 b FA(=)22222 58723 y Fl(\265)23169
+59535 y Fp(\261)23661 59701 y Fm(m)p 23169 60030 1333
+45 v 23341 61044 a Fp(\261)23833 61210 y Fn(1)24635 58723
+y Fl(\266)26222 58655 y Fv(1)p 25583 58778 1656 38 v
+25583 59220 a Fk(m)p Fj(\241)p Fv(1)27796 60284 y Fp(;)0
+63313 y FA(where)350 b(the)h Fp(\261)5562 63479 y Fm(m)6711
+63313 y FA(=)307 b Fp(y)8422 63513 y Fm(n)p Fn(\()p Fm(m)p
+Fn(\))10711 63313 y Fs(\241)208 b Fp(y)12323 63513 y
+Fm(n)p Fn(\()p Fm(m)p Fo(\241)p Fn(1\))15887 63313 y
+FA(is)350 b(the)h(correction)g(at)h(iteration)h Fp(m)307
+b FA(=)g(1)p Fp(;)184 b FA(2)p Fp(;)g(:)g(:)g(:)6 b FA(.)486
+b(The)351 b(Newton)h(iteration)h(is)0 64641 y(halted)370
+b(if)g Fp(R)316 b(>)307 b FA(0)p Fp(:)p FA(9.)494 b(The)369
+b(con)-31 b(v)g(ergence)371 b(test)e(at)h(the)g Fp(m)p
+FA(-th)f(iteration)i(is)e(then)20441 67067 y Fp(S)64
+b Fs(k)p Fp(\261)22229 67233 y Fm(m)23070 67067 y Fs(k)308
+b Fp(<)f FA(0)p Fp(:)p FA(33)184 b Fp(;)18169 b FA(\(3.7\))0
+69492 y(where)478 b Fp(S)554 b FA(=)490 b Fp(R)9 b(=)p
+FA(\()p Fp(R)327 b Fs(\241)319 b FA(1\))479 b(whenev)-31
+b(er)479 b Fp(m)490 b(>)g FA(1)479 b(and)g Fp(R)497 b
+Fs(\267)490 b FA(0)p Fp(:)p FA(9.)823 b(The)478 b(user)g(has)h(the)g
+(option)h(of)f(c)-31 b(hanging)481 b(the)0 70821 y(constan)-31
+b(t)458 b(in)f(the)g(con)-31 b(v)g(ergence)458 b(test)f(from)g(its)g
+(default)h(v)-61 b(alue)457 b(of)g(0)p Fp(:)p FA(33.)757
+b(The)457 b(quan)-31 b(tit)g(y)459 b Fp(S)520 b FA(is)457
+b(set)g(to)g Fp(S)517 b FA(=)453 b(20)0 72149 y(initially)326
+b(and)d(whenev)-31 b(er)322 b Fp(J)429 b FA(or)322 b
+Fp(P)476 b FA(is)322 b(up)31 b(dated,)333 b(and)323 b(it)g(is)f(reset)g
+(to)h Fp(S)371 b FA(=)308 b(100)323 b(on)g(a)g(step)f(with)i
+Fp(\256)312 b Fs(6)p FA(=)417 b(\271)-663 b Fp(\256)t
+FA(.)477 b(Note)324 b(that)0 73477 y(at)302 b Fp(m)308
+b FA(=)f(1,)316 b(the)301 b(con)-31 b(v)g(ergence)303
+b(test)e(\(3.7\))j(uses)d(an)g(old)h(v)-61 b(alue)302
+b(for)g Fp(S)64 b FA(.)469 b(Therefore,)316 b(at)302
+b(the)f(\257rst)g(Newton)i(iteration,)0 74806 y(w)-31
+b(e)383 b(mak)-31 b(e)384 b(an)e(additional)k(test)c(and)h(stop)g(the)g
+(iteration)h(if)f Fs(k)p Fp(\261)26591 74972 y Fn(1)27088
+74806 y Fs(k)330 b Fp(<)g FA(0)p Fp(:)p FA(33)256 b Fs(\242)g
+FA(10)33053 74404 y Fo(\241)p Fn(4)34624 74806 y FA(\(since)383
+b(suc)-31 b(h)382 b(a)h Fp(\261)41718 74972 y Fn(1)42596
+74806 y FA(is)g(probably)p Black 0 75787 19200 45 v 1232
+76503 a Fi(1)1694 76815 y Fh(Left)348 b(preconditioning)i(is)f
+(required)g(to)g(mak)-26 b(e)349 b(the)g(norm)g(of)g(the)f(linear)i
+(residual)g(in)f(the)g(Newton)f(iteration)i(meaningful;)368
+b(in)0 77867 y(general,)315 b Fg(k)p Ff(J)83 b Fh(\242)p
+Ff(y)242 b Fh(+)209 b Ff(G)p Fg(k)314 b Fh(is)g(meaningless,)i(since)e
+(the)g(w)-26 b(eigh)g(ts)314 b(used)f(in)h(the)f(WRMS-norm)g(corresp)26
+b(ond)314 b(to)g Ff(y)32 b Fh(.)p Black Black Black eop
+%%Page: 11 19
+11 18 bop Black 50727 2701 a FB(11)p 4000 3144 48001
+45 v Black 4000 6974 a FA(just)443 b(noise)g(and)g(therefore)f(not)i
+(appropriate)g(for)f(use)f(in)h(ev)-61 b(aluating)445
+b Fp(R)9 b FA(\).)712 b(W)-92 b(e)442 b(allo)-31 b(w)445
+b(only)f(a)f(small)h(n)-31 b(um)g(b)31 b(er)4000 8302
+y(\(default)437 b(v)-61 b(alue)436 b(4\))g(of)g(Newton)h(iterations.)
+693 b(If)435 b(con)-31 b(v)g(ergence)436 b(fails)g(with)h
+Fp(J)541 b FA(or)435 b Fp(P)589 b FA(curren)-31 b(t,)452
+b(w)-31 b(e)436 b(are)f(forced)g(to)4000 9631 y(reduce)341
+b(the)h(step)f(size)h Fp(h)14383 9797 y Fm(n)14985 9631
+y FA(,)347 b(and)342 b(w)-31 b(e)342 b(replace)g Fp(h)23731
+9797 y Fm(n)24675 9631 y FA(b)-31 b(y)342 b Fp(h)26823
+9797 y Fm(n)27425 9631 y Fp(=)p FA(4.)484 b(The)342 b(in)-31
+b(tegration)345 b(is)c(halted)i(after)f(a)g(preset)f(n)-31
+b(um)g(b)31 b(er)4000 10959 y(\(default)377 b(v)-61 b(alue)375
+b(10\))i(of)e(con)-31 b(v)g(ergence)376 b(failures.)511
+b(Both)376 b(the)f(maxim)-31 b(um)377 b(allo)-31 b(w)g(able)379
+b(Newton)d(iterations)h(and)f(the)4000 12287 y(maxim)-31
+b(um)372 b(nonlinear)e(con)-31 b(v)g(ergence)370 b(failures)g(can)g(b)
+31 b(e)368 b(c)-31 b(hanged)370 b(b)-31 b(y)370 b(the)f(user)f(from)i
+(their)g(default)g(v)-61 b(alues.)5660 13616 y(When)336
+b(SPGMR)f(is)h(used)g(to)h(solv)-31 b(e)337 b(the)f(linear)h(system,)
+343 b(to)337 b(minimize)h(the)e(e\256ect)g(of)h(linear)g(iteration)h
+(errors)4000 14944 y(on)408 b(the)g(nonlinear)g(and)g(lo)31
+b(cal)409 b(in)-31 b(tegration)411 b(error)406 b(con)-31
+b(trols,)419 b(w)-31 b(e)408 b(require)f(the)h(preconditioned)h(linear)
+f(residual)4000 16272 y(to)375 b(b)31 b(e)374 b(small)i(relativ)-31
+b(e)376 b(to)f(the)f(allo)-31 b(w)g(ed)377 b(error)d(in)g(the)h(Newton)
+h(iteration,)i(i.e.,)f Fs(k)p Fp(P)39271 15871 y Fo(\241)p
+Fn(1)40460 16272 y FA(\()p Fp(J)106 b(x)250 b FA(+)f
+Fp(G)p FA(\))p Fs(k)317 b Fp(<)f FA(0)p Fp(:)p FA(05)252
+b Fs(\242)e FA(0)p Fp(:)p FA(33.)4000 17601 y(The)369
+b(safet)-31 b(y)371 b(factor)f(0)p Fp(:)p FA(05)h(can)e(b)31
+b(e)369 b(c)-31 b(hanged)370 b(b)-31 b(y)370 b(the)f(user.)5660
+18929 y(In)433 b(the)h(direct)f(linear)h(solv)-31 b(er)434
+b(cases,)449 b(the)433 b(Jacobian)i Fp(J)539 b FA(de\257ned)433
+b(in)h(\(3.5\))h(can)e(b)31 b(e)433 b(either)h(supplied)f(b)-31
+b(y)434 b(the)4000 20257 y(user)481 b(or)i(ha)-31 b(v)g(e)483
+b(ID)-31 b(A)482 b(compute)i(one)e(in)-31 b(ternally)485
+b(b)-31 b(y)483 b(di\256erence)f(quotien)-31 b(ts.)834
+b(In)482 b(the)h(latter)h(case,)511 b(w)-31 b(e)483 b(use)f(the)4000
+21586 y(appro)-31 b(ximation)14566 24000 y Fp(J)15180
+24166 y Fm(ij)16267 24000 y FA(=)307 b([)p Fp(F)18454
+24166 y Fm(i)18823 24000 y FA(\()p Fp(t;)184 b(y)287
+b FA(+)246 b Fp(\276)22714 24166 y Fm(j)23180 24000 y
+Fp(e)23695 24166 y Fm(j)24161 24000 y Fp(;)184 b(y)25235
+23543 y Fo(0)25792 24000 y FA(+)246 b Fp(\256)t(\276)28244
+24166 y Fm(j)28711 24000 y Fp(e)29226 24166 y Fm(j)29692
+24000 y FA(\))h Fs(\241)f Fp(F)32188 24166 y Fm(i)32556
+24000 y FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)35534 23543
+y Fo(0)35846 24000 y FA(\)])p Fp(=\276)37769 24166 y
+Fm(j)38421 24000 y Fp(;)554 b FA(with)18213 25921 y Fp(\276)18846
+26087 y Fm(j)19620 25921 y FA(=)20788 24930 y Fs(p)p
+21711 24930 877 45 v 21711 25921 a Fp(U)305 b FA(max)25016
+25025 y Fl(\251)25662 25921 y Fs(j)p Fp(y)26512 26087
+y Fm(j)26979 25921 y Fs(j)p Fp(;)184 b Fs(j)p Fp(hy)29305
+25464 y Fo(0)29265 26195 y Fm(j)29733 25921 y Fs(j)p
+Fp(;)g(W)31576 26087 y Fm(j)32044 25025 y Fl(\252)32874
+25921 y FA(sign)q(\()p Fp(hy)36438 25464 y Fo(0)36398
+26195 y Fm(j)36864 25921 y FA(\))g Fp(;)4000 28336 y
+FA(where)303 b Fp(U)423 b FA(is)303 b(the)g(unit)h(roundo\256,)317
+b Fp(h)302 b FA(is)h(the)g(curren)-31 b(t)303 b(step)g(size,)317
+b(and)303 b Fp(W)33498 28502 y Fm(j)34268 28336 y FA(is)f(the)i(error)e
+(w)-31 b(eigh)g(t)305 b(for)e(the)g(comp)31 b(onen)-31
+b(t)4000 29664 y Fp(y)4543 29830 y Fm(j)5494 29664 y
+FA(de\257ned)485 b(b)-31 b(y)486 b(\(3.6\).)843 b(In)485
+b(the)g(SPGMR)g(case,)514 b(if)486 b(a)g(routine)g(for)f
+Fp(J)106 b(v)525 b FA(is)485 b(not)h(supplied,)515 b(suc)-31
+b(h)485 b(pro)31 b(ducts)485 b(are)4000 30992 y(appro)-31
+b(ximated)372 b(b)-31 b(y)17228 32321 y Fp(J)106 b(v)347
+b FA(=)307 b([)p Fp(F)154 b FA(\()p Fp(t;)184 b(y)287
+b FA(+)246 b Fp(\276)40 b(v)g(;)184 b(y)26755 31864 y
+Fo(0)27310 32321 y FA(+)246 b Fp(\256)t(\276)40 b(v)g
+FA(\))246 b Fs(\241)f Fp(F)154 b FA(\()p Fp(t;)184 b(y)40
+b(;)184 b(y)36005 31864 y Fo(0)36317 32321 y FA(\)])p
+Fp(=\276)225 b(;)4000 34301 y FA(where)296 b(the)h(incremen)-31
+b(t)297 b Fp(\276)335 b FA(is)296 b(1)p Fp(=)p Fs(k)p
+Fp(v)40 b Fs(k)p FA(.)19131 33899 y Fn(2)20097 34301
+y FA(As)296 b(an)h(option,)313 b(the)296 b(user)g(can)g(sp)31
+b(ecify)296 b(a)h(constan)-31 b(t)298 b(factor)f(that)h(is)e(inserted)
+4000 35629 y(in)-31 b(to)371 b(this)e(expression)g(for)g
+Fp(\276)40 b FA(.)5660 36957 y(During)397 b(the)f(course)g(of)h(in)-31
+b(tegrating)400 b(the)c(system,)404 b(ID)-31 b(A)396
+b(computes)i(an)e(estimate)j(of)d(the)h(lo)31 b(cal)398
+b(truncation)4000 38286 y(error,)369 b(L)-92 b(TE,)370
+b(at)f(the)h Fp(n)p FA(-th)g(time)g(step,)g(and)f(requires)g(this)g(to)
+h(satisfy)g(the)g(inequalit)-31 b(y)23672 40700 y Fs(k)p
+FA(L)-92 b(TE)q Fs(k)26931 40866 y Fn(WRMS)30114 40700
+y Fs(\267)307 b FA(1)184 b Fp(:)4000 43115 y FA(Asymptotically)-92
+b(,)581 b(L)-92 b(TE)535 b(v)-61 b(aries)535 b(as)g Fp(h)20278
+42713 y Fm(q)28 b Fn(+1)22422 43115 y FA(at)536 b(step)f(size)g
+Fp(h)g FA(and)g(order)g Fp(q)40 b FA(,)576 b(as)535 b(do)31
+b(es)535 b(the)g(predictor-corrector)4000 44443 y(di\256erence)369
+b(\242)9876 44609 y Fm(n)10786 44443 y Fs(\264)308 b
+Fp(y)12498 44609 y Fm(n)13346 44443 y Fs(\241)246 b Fp(y)14996
+44643 y Fm(n)p Fn(\(0\))16731 44443 y FA(.)493 b(Th)-31
+b(us)369 b(there)g(is)g(a)h(constan)-31 b(t)370 b Fp(C)449
+b FA(suc)-31 b(h)368 b(that)22074 46990 y(L)-92 b(TE)308
+b(=)f Fp(C)79 b FA(\242)27494 47156 y Fm(n)28344 46990
+y FA(+)246 b Fp(O)31 b FA(\()p Fp(h)31394 46533 y Fm(q)d
+Fn(+2)33004 46990 y FA(\))184 b Fp(;)4000 49404 y FA(and)378
+b(so)g(the)g(norm)g(of)g(L)-92 b(TE)378 b(is)g(estimated)h(as)f
+Fs(j)p Fp(C)79 b Fs(j)253 b(\242)f(k)p FA(\242)27463
+49570 y Fm(n)28067 49404 y Fs(k)p FA(.)519 b(In)377 b(addition,)382
+b(ID)-31 b(A)378 b(requires)f(that)i(the)f(error)f(in)h(the)4000
+50733 y(asso)31 b(ciated)327 b(p)31 b(olynomial)329 b(in)-31
+b(terp)31 b(olan)-31 b(t)328 b(o)-31 b(v)g(er)327 b(the)f(curren)-31
+b(t)326 b(step)f(b)31 b(e)326 b(b)31 b(ounded)326 b(b)-31
+b(y)326 b(1)g(in)g(norm.)479 b(The)326 b(leading)h(term)4000
+52061 y(of)356 b(the)g(norm)g(of)g(this)g(error)f(is)g(b)31
+b(ounded)356 b(b)-31 b(y)23494 51781 y(\271)23244 52061
+y Fp(C)79 b Fs(k)p FA(\242)25589 52227 y Fm(n)26193 52061
+y Fs(k)356 b FA(for)f(another)i(constan)-31 b(t)37533
+51781 y(\271)37282 52061 y Fp(C)79 b FA(.)488 b(Th)-31
+b(us)356 b(the)g(lo)31 b(cal)357 b(error)d(test)j(in)4000
+53389 y(ID)-31 b(A)369 b(is)22416 54718 y(max)q Fs(fj)p
+Fp(C)79 b Fs(j)p Fp(;)27258 54438 y FA(\271)27004 54718
+y Fp(C)j Fs(gk)p FA(\242)29905 54884 y Fm(n)30509 54718
+y Fs(k)308 b(\267)g FA(1)184 b Fp(:)16142 b FA(\(3.8\))4000
+56698 y(A)403 b(user)f(option)j(is)e(a)-31 b(v)-61 b(ailable)406
+b(b)-31 b(y)403 b(whic)-31 b(h)404 b(the)f(algebraic)i(comp)31
+b(onen)-31 b(ts)404 b(of)g(the)f(error)f(v)-31 b(ector)404
+b(are)f(omitted)i(from)4000 58026 y(the)369 b(test)h(\(3.8\),)i(if)e
+(these)f(ha)-31 b(v)g(e)370 b(b)31 b(een)368 b(so)i(iden)-31
+b(ti\257ed.)5660 59354 y(In)345 b(ID)-31 b(A,)345 b(the)h(lo)31
+b(cal)346 b(error)e(test)i(is)f(tigh)-31 b(tly)348 b(coupled)e(with)g
+(the)g(logic)g(for)g(selecting)g(the)f(step)h(size)f(and)g(order.)4000
+60683 y(First,)319 b(there)307 b(is)f(an)h(initial)i(phase)e(that)h(is)
+e(treated)i(sp)31 b(ecially;)329 b(for)307 b(the)f(\257rst)g(few)i
+(steps,)319 b(the)307 b(step)f(size)h(is)f(doubled)4000
+62011 y(and)442 b(the)g(order)f(raised)h(\(from)h(its)f(initial)i(v)-61
+b(alue)442 b(of)h(1\))f(on)g(ev)-31 b(ery)442 b(step,)460
+b(un)-31 b(til)444 b(\(a\))f(the)f(lo)31 b(cal)443 b(error)d(test)j
+(\(3.8\))4000 63339 y(fails,)356 b(\(b\))c(the)e(order)h(is)f(reduced)g
+(\(b)-31 b(y)352 b(the)f(rules)f(giv)-31 b(en)352 b(b)31
+b(elo)-31 b(w\),)356 b(or)351 b(\(c\))g(the)g(order)f(reac)-31
+b(hes)351 b(5)g(\(the)g(maxim)-31 b(um\).)4000 64668
+y(F)-92 b(or)428 b(step)h(and)h(order)e(selection)j(on)e(the)g(general)
+h(step,)445 b(ID)-31 b(A)429 b(uses)f(a)h(di\256eren)-31
+b(t)429 b(set)h(of)f(lo)31 b(cal)431 b(error)d(estimates,)4000
+65996 y(based)421 b(on)g(the)h(asymptotic)h(b)31 b(eha)-31
+b(vior)422 b(of)g(the)f(lo)31 b(cal)423 b(error)d(in)h(the)g(case)g(of)
+h(\257xed)f(step)g(sizes.)648 b(A)-31 b(t)421 b(eac)-31
+b(h)422 b(of)g(the)4000 67324 y(orders)389 b Fp(q)7888
+66923 y Fo(0)8588 67324 y FA(equal)i(to)f Fp(q)40 b FA(,)395
+b Fp(q)300 b Fs(\241)260 b FA(1)390 b(\(if)h Fp(q)382
+b(>)341 b FA(1\),)397 b Fp(q)299 b Fs(\241)260 b FA(2)390
+b(\(if)h Fp(q)382 b(>)342 b FA(2\),)396 b(or)390 b Fp(q)299
+b FA(+)260 b(1)390 b(\(if)h Fp(q)382 b(<)342 b FA(5\),)396
+b(there)390 b(are)f(constan)-31 b(ts)391 b Fp(C)79 b
+FA(\()p Fp(q)51258 66923 y Fo(0)51570 67324 y FA(\))4000
+68653 y(suc)-31 b(h)369 b(that)h(the)g(norm)f(of)h(the)f(lo)31
+b(cal)371 b(truncation)g(error)d(at)i(order)e Fp(q)32389
+68251 y Fo(0)33069 68653 y FA(satis\257es)18292 71067
+y(L)-92 b(TE)q(\()p Fp(q)21409 70610 y Fo(0)21719 71067
+y FA(\))308 b(=)g Fp(C)79 b FA(\()p Fp(q)25460 70610
+y Fo(0)25771 71067 y FA(\))p Fs(k)p Fp(\301)p FA(\()p
+Fp(q)28378 70610 y Fo(0)28936 71067 y FA(+)246 b(1\))p
+Fs(k)h FA(+)f Fp(O)31 b FA(\()p Fp(h)34876 70610 y Fm(q)35310
+70276 y Fj(0)35609 70610 y Fn(+2)36785 71067 y FA(\))184
+b Fp(;)4000 73482 y FA(where)356 b Fp(\301)p FA(\()p
+Fp(k)35 b FA(\))357 b(is)g(a)g(mo)31 b(di\257ed)357 b(divided)h
+(di\256erence)e(of)h(order)f Fp(k)391 b FA(that)358 b(is)f(retained)g
+(b)-31 b(y)357 b(ID)-31 b(A)356 b(\(and)h(b)31 b(eha)-31
+b(v)g(es)357 b(asymp-)4000 74810 y(totically)469 b(as)d
+Fp(h)10526 74408 y Fm(k)11070 74810 y FA(\).)783 b(Th)-31
+b(us)465 b(the)h(lo)31 b(cal)467 b(truncation)h(errors)c(are)h
+(estimated)j(as)e(EL)-92 b(TE\()p Fp(q)41378 74408 y
+Fo(0)41689 74810 y FA(\))469 b(=)f Fp(C)79 b FA(\()p
+Fp(q)45751 74408 y Fo(0)46063 74810 y FA(\))p Fs(k)p
+Fp(\301)p FA(\()p Fp(q)48670 74408 y Fo(0)49291 74810
+y FA(+)311 b(1\))p Fs(k)p Black 4000 75787 19200 45 v
+5232 76503 a Fi(2)5694 76815 y Fh(All)289 b(v)-26 b(ectors)289
+b Ff(v)321 b Fh(o)26 b(ccurring)290 b(here)f(ha)-26 b(v)g(e)289
+b(b)26 b(een)289 b(divided)f(b)-26 b(y)289 b(the)g(w)-26
+b(eigh)g(ts)289 b Ff(W)32036 76950 y Fe(i)32676 76815
+y Fh(and)g(then)f(scaled)j(so)e(as)h(to)f(ha)-26 b(v)g(e)289
+b Ff(L)45522 76938 y Fi(2)46272 76815 y Fh(norm)g(equal)h(to)4000
+77867 y(1.)419 b(Th)-26 b(us,)313 b(in)h(fact)g Ff(\276)292
+b Fh(=)262 b(1)p Ff(=)p Fg(k)p Ff(v)32 b Fg(k)14943 78091
+y Fn(WRMS)18081 77867 y Fh(=)19074 77117 y Fg(p)p 19858
+77117 842 40 v 750 x Ff(N)94 b Fh(.)p Black Black Black
+eop
+%%Page: 12 20
+12 19 bop Black 0 2701 a FB(12)30377 b(Mathematical)424
+b(Considerations)p 0 3144 48001 45 v Black 0 6974 a FA(to)473
+b(select)g(step)g(sizes.)802 b(But)473 b(the)g(c)-31
+b(hoice)473 b(of)g(order)f(in)h(ID)-31 b(A)472 b(is)h(based)f(on)h(the)
+g(requiremen)-31 b(t)473 b(that)h(the)e(scaled)0 8302
+y(deriv)-61 b(ativ)-31 b(e)480 b(norms,)507 b Fs(k)p
+Fp(h)10152 7900 y Fm(k)10697 8302 y Fp(y)11280 7900 y
+Fn(\()p Fm(k)19 b Fn(\))12516 8302 y Fs(k)p FA(,)507
+b(are)478 b(monotonically)483 b(decreasing)d(with)g Fp(k)35
+b FA(,)506 b(for)479 b Fp(k)514 b FA(near)478 b Fp(q)40
+b FA(.)822 b(These)478 b(norms)h(are)0 9631 y(again)371
+b(estimated)g(using)e(the)h Fp(\301)p FA(\()p Fp(k)35
+b FA(\),)370 b(and)f(in)h(fact)13495 12224 y Fs(k)p Fp(h)14686
+11766 y Fm(q)15120 11432 y Fj(0)15419 11766 y Fn(+1)16595
+12224 y Fp(y)17178 11766 y Fn(\()p Fm(q)17958 11432 y
+Fj(0)18257 11766 y Fn(+1\))19779 12224 y Fs(k)308 b(\274)f
+Fp(T)154 b FA(\()p Fp(q)23573 11766 y Fo(0)23884 12224
+y FA(\))308 b Fs(\264)f FA(\()p Fp(q)26754 11766 y Fo(0)27311
+12224 y FA(+)246 b(1\)EL)-92 b(TE)r(\()p Fp(q)33272 11766
+y Fo(0)33583 12224 y FA(\))184 b Fp(:)0 14659 y FA(The)331
+b(step/order)f(selection)i(b)31 b(egins)330 b(with)i(a)e(test)h(for)g
+(monotonicit)-31 b(y)334 b(that)e(is)e(made)h(ev)-31
+b(en)331 b Fr(b)-57 b(efor)g(e)331 b FA(the)g(lo)31 b(cal)332
+b(error)0 15987 y(test)412 b(is)g(p)31 b(erformed.)620
+b(Namely)-92 b(,)425 b(the)412 b(order)f(is)h(reset)f(to)i
+Fp(q)24208 15586 y Fo(0)24897 15987 y FA(=)378 b Fp(q)314
+b Fs(\241)275 b FA(1)412 b(if)g(\(a\))h Fp(q)419 b FA(=)378
+b(2)412 b(and)g Fp(T)154 b FA(\(1\))380 b Fs(\267)f Fp(T)154
+b FA(\(2\))p Fp(=)p FA(2,)424 b(or)412 b(\(b\))0 17316
+y Fp(q)515 b(>)475 b FA(2)470 b(and)g(max)r Fs(f)p Fp(T)154
+b FA(\()p Fp(q)353 b Fs(\241)313 b FA(1\))p Fp(;)184
+b(T)154 b FA(\()p Fp(q)355 b Fs(\241)313 b FA(2\))p Fs(g)477
+b(\267)e Fp(T)154 b FA(\()p Fp(q)40 b FA(\);)521 b(otherwise)471
+b Fp(q)28151 16914 y Fo(0)28936 17316 y FA(=)476 b Fp(q)40
+b FA(.)794 b(Next)470 b(the)h(lo)31 b(cal)471 b(error)e(test)h(\(3.8\))
+i(is)0 18644 y(p)31 b(erformed,)431 b(and)419 b(if)g(it)h(fails,)432
+b(the)419 b(step)g(is)g(redone)f(at)h(order)f Fp(q)430
+b Fs(\303)390 b Fp(q)29202 18242 y Fo(0)29931 18644 y
+FA(and)419 b(a)g(new)g(step)f(size)h Fp(h)40607 18242
+y Fo(0)40917 18644 y FA(.)641 b(The)419 b(latter)h(is)0
+19972 y(based)369 b(on)g(the)h Fp(h)7163 19571 y Fm(q)28
+b Fn(+1)9141 19972 y FA(asymptotic)372 b(b)31 b(eha)-31
+b(vior)370 b(of)g(EL)-92 b(TE)q(\()p Fp(q)40 b FA(\),)370
+b(and,)g(with)g(safet)-31 b(y)371 b(factors,)f(is)f(giv)-31
+b(en)371 b(b)-31 b(y)15505 22408 y Fp(\264)347 b FA(=)307
+b Fp(h)18208 21951 y Fo(0)18518 22408 y Fp(=h)h FA(=)g(0)p
+Fp(:)p FA(9)p Fp(=)p FA([2)184 b(EL)-92 b(TE)t(\()p Fp(q)40
+b FA(\)])28806 21951 y Fn(1)p Fm(=)p Fn(\()p Fm(q)28
+b Fn(+1\))32188 22408 y Fp(:)0 24843 y FA(The)373 b(v)-61
+b(alue)374 b(of)f Fp(\264)412 b FA(is)373 b(adjusted)g(so)g(that)h(0)p
+Fp(:)p FA(25)316 b Fs(\267)e Fp(\264)353 b Fs(\267)313
+b FA(0)p Fp(:)p FA(9)375 b(b)31 b(efore)372 b(setting)j
+Fp(h)313 b Fs(\303)h Fp(h)34017 24441 y Fo(0)34641 24843
+y FA(=)f Fp(\264)40 b(h)p FA(.)503 b(If)373 b(the)g(lo)31
+b(cal)375 b(error)c(test)0 26171 y(fails)398 b(a)g(second)f(time,)406
+b(ID)-31 b(A)396 b(uses)h Fp(\264)c FA(=)354 b(0)p Fp(:)p
+FA(25,)407 b(and)397 b(on)h(the)f(third)g(and)h(subsequen)-31
+b(t)397 b(failures)h(it)g(uses)e Fp(q)e FA(=)354 b(1)398
+b(and)0 27500 y Fp(\264)347 b FA(=)307 b(0)p Fp(:)p FA(25.)495
+b(After)369 b(10)h(failures,)g(ID)-31 b(A)369 b(returns)f(with)j(a)e
+(giv)-31 b(e-up)371 b(message.)1660 28828 y(As)345 b(so)31
+b(on)346 b(as)f(the)h(lo)31 b(cal)347 b(error)d(test)i(has)f(passed,)
+350 b(the)c(step)f(and)g(order)g(for)h(the)f(next)h(step)f(ma)-31
+b(y)347 b(b)31 b(e)345 b(adjusted.)0 30156 y(No)466 b(suc)-31
+b(h)465 b(c)-31 b(hange)466 b(is)f(made)h(if)g Fp(q)14099
+29755 y Fo(0)14877 30156 y FA(=)i Fp(q)350 b Fs(\241)310
+b FA(1)466 b(from)g(the)f(prior)g(test,)491 b(if)465
+b Fp(q)508 b FA(=)468 b(5,)490 b(or)465 b(if)h Fp(q)505
+b FA(w)-31 b(as)466 b(increased)f(on)h(the)0 31485 y(previous)338
+b(step.)482 b(Otherwise,)344 b(if)338 b(the)g(last)g
+Fp(q)222 b FA(+)182 b(1)339 b(steps)e(w)-31 b(ere)337
+b(tak)-31 b(en)339 b(at)f(a)g(constan)-31 b(t)339 b(order)d
+Fp(q)348 b(<)307 b FA(5)338 b(and)g(a)f(constan)-31 b(t)0
+32813 y(step)399 b(size,)407 b(ID)-31 b(A)399 b(considers)f(raising)j
+(the)e(order)f(to)i Fp(q)306 b FA(+)266 b(1.)583 b(The)399
+b(logic)i(is)e(as)h(follo)-31 b(ws:)554 b(\(a\))401 b(If)e
+Fp(q)e FA(=)358 b(1,)407 b(then)399 b(reset)0 34141 y
+Fp(q)347 b FA(=)308 b(2)369 b(if)h Fp(T)154 b FA(\(2\))309
+b Fp(<)e(T)154 b FA(\(1\))p Fp(=)p FA(2.)495 b(\(b\))369
+b(If)g Fp(q)348 b(>)307 b FA(1)370 b(then)p Black 1660
+36355 a Fs(\262)p Black 554 w FA(reset)f Fp(q)347 b Fs(\303)308
+b Fp(q)286 b Fs(\241)246 b FA(1)369 b(if)h Fp(T)154 b
+FA(\()p Fp(q)286 b Fs(\241)246 b FA(1\))308 b Fs(\267)g
+FA(min)q Fs(f)p Fp(T)154 b FA(\()p Fp(q)40 b FA(\))p
+Fp(;)184 b(T)154 b FA(\()p Fp(q)288 b FA(+)245 b(1\))p
+Fs(g)p FA(;)p Black 1660 38569 a Fs(\262)p Black 554
+w FA(else)369 b(reset)g Fp(q)347 b Fs(\303)308 b Fp(q)286
+b FA(+)246 b(1)369 b(if)h Fp(T)154 b FA(\()p Fp(q)286
+b FA(+)246 b(1\))308 b Fp(<)g(T)154 b FA(\()p Fp(q)40
+b FA(\);)p Black 1660 40783 a Fs(\262)p Black 554 w FA(lea)-31
+b(v)g(e)371 b Fp(q)409 b FA(unc)-31 b(hanged)370 b(otherwise)g([then)g
+Fp(T)154 b FA(\()p Fp(q)286 b Fs(\241)246 b FA(1\))308
+b Fp(>)g(T)154 b FA(\()p Fp(q)40 b FA(\))308 b Fs(\267)f
+Fp(T)154 b FA(\()p Fp(q)286 b FA(+)246 b(1\)].)0 42997
+y(In)369 b(an)-31 b(y)370 b(case,)f(the)h(new)f(step)g(size)g
+Fp(h)15385 42595 y Fo(0)16065 42997 y FA(is)g(set)g(m)-31
+b(uc)g(h)370 b(as)f(b)31 b(efore:)15935 45432 y Fp(\264)347
+b FA(=)307 b Fp(h)18638 44975 y Fo(0)18949 45432 y Fp(=h)h
+FA(=)f(1)p Fp(=)p FA([2)184 b(EL)-92 b(TE)s(\()p Fp(q)40
+b FA(\)])28375 44975 y Fn(1)p Fm(=)p Fn(\()p Fm(q)28
+b Fn(+1\))31757 45432 y Fp(:)0 47868 y FA(The)458 b(v)-61
+b(alue)458 b(of)h Fp(\264)497 b FA(is)457 b(adjusted)i(suc)-31
+b(h)457 b(that)i(\(a\))g(if)g Fp(\264)494 b(>)455 b FA(2,)481
+b Fp(\264)497 b FA(is)458 b(reset)f(to)h(2;)503 b(\(b\))459
+b(if)f Fp(\264)495 b Fs(\267)455 b FA(1,)481 b Fp(\264)497
+b FA(is)457 b(restricted)h(to)0 49196 y(0)p Fp(:)p FA(5)396
+b Fs(\267)f Fp(\264)434 b Fs(\267)395 b FA(0)p Fp(:)p
+FA(9;)449 b(and)422 b(\(c\))g(if)g(1)395 b Fp(<)g(\264)434
+b(<)395 b FA(2)422 b(w)-31 b(e)422 b(use)f Fp(\264)434
+b FA(=)394 b(1.)650 b(Finally)423 b Fp(h)e FA(is)h(reset)f(to)h
+Fp(h)36128 48794 y Fo(0)36833 49196 y FA(=)395 b Fp(\264)40
+b(h)p FA(.)649 b(Th)-31 b(us)421 b(w)-31 b(e)422 b(do)g(not)0
+50524 y(increase)369 b(the)h(step)f(size)g(unless)f(it)i(can)g(b)31
+b(e)368 b(doubled.)494 b(See)369 b([1)q(])g(for)g(details.)1660
+51853 y(ID)-31 b(A)357 b(p)31 b(ermits)358 b(the)g(user)e(to)i(imp)31
+b(ose)358 b(optional)i(inequalit)-31 b(y)361 b(constrain)-31
+b(ts)358 b(on)g(individual)i(comp)31 b(onen)-31 b(ts)359
+b(of)f(the)0 53181 y(solution)449 b(v)-31 b(ector)449
+b Fp(y)40 b FA(.)727 b(An)-31 b(y)448 b(of)g(the)g(follo)-31
+b(wing)451 b(four)c(constrain)-31 b(ts)449 b(can)f(b)31
+b(e)447 b(imp)31 b(osed:)650 b Fp(y)37081 53347 y Fm(i)37887
+53181 y Fp(>)438 b FA(0,)468 b Fp(y)41057 53347 y Fm(i)41864
+53181 y Fp(<)438 b FA(0,)468 b Fp(y)45034 53347 y Fm(i)45840
+53181 y Fs(\270)438 b FA(0,)0 54509 y(or)400 b Fp(y)1930
+54675 y Fm(i)2659 54509 y Fs(\267)359 b FA(0.)588 b(The)400
+b(constrain)-31 b(t)403 b(satisfaction)g(is)d(tested)h(after)g(a)g
+(successful)f(nonlinear)i(system)f(solution.)589 b(If)400
+b(an)-31 b(y)0 55838 y(constrain)g(t)412 b(fails,)423
+b(w)-31 b(e)411 b(declare)h(a)f(con)-31 b(v)g(ergence)411
+b(failure)h(of)f(the)g(Newton)i(iteration)g(and)e(reduce)f(the)h(step)f
+(size.)0 57166 y(Rather)333 b(than)h(cutting)h(the)e(step)g(size)g(b)
+-31 b(y)333 b(some)h(arbitrary)f(factor,)342 b(ID)-31
+b(A)333 b(estimates)h(a)g(new)f(step)g(size)g Fp(h)43943
+56764 y Fo(0)44586 57166 y FA(using)h(a)0 58494 y(linear)321
+b(appro)-31 b(ximation)323 b(of)d(the)g(comp)31 b(onen)-31
+b(ts)321 b(in)f Fp(y)359 b FA(that)321 b(failed)g(the)f(constrain)-31
+b(t)322 b(test)e(\(including)i(a)e(safet)-31 b(y)321
+b(factor)0 59823 y(of)374 b(0)p Fp(:)p FA(9)g(to)g(co)-31
+b(v)g(er)373 b(the)h(strict)f(inequalit)-31 b(y)376 b(case\).)505
+b(These)372 b(additional)377 b(constrain)-31 b(ts)374
+b(are)f(also)h(imp)31 b(osed)373 b(during)h(the)0 61151
+y(calculation)e(of)e(consisten)-31 b(t)370 b(initial)i(conditions.)1660
+62480 y(Normally)-92 b(,)545 b(ID)-31 b(A)508 b(tak)-31
+b(es)509 b(steps)e(un)-31 b(til)509 b(a)g(user-de\257ned)d(output)j(v)
+-61 b(alue)509 b Fp(t)538 b FA(=)h Fp(t)34970 62646 y
+Fn(out)36809 62480 y FA(is)507 b(o)-31 b(v)g(ertak)g(en,)545
+b(and)509 b(then)0 63808 y(computes)425 b Fp(y)40 b FA(\()p
+Fp(t)6394 63974 y Fn(out)7725 63808 y FA(\))425 b(b)-31
+b(y)424 b(in)-31 b(terp)31 b(olation.)662 b(Ho)-31 b(w)g(ev)g(er,)440
+b(a)424 b(\\one)h(step")g(mo)31 b(de)425 b(option)h(is)e(a)-31
+b(v)-61 b(ailable,)441 b(where)424 b(con)-31 b(trol)0
+65136 y(returns)362 b(to)i(the)g(calling)h(program)f(after)g(eac)-31
+b(h)364 b(step.)490 b(There)363 b(are)g(also)h(options)h(to)f(force)f
+(ID)-31 b(A)363 b(not)h(to)g(in)-31 b(tegrate)0 66465
+y(past)370 b(a)f(giv)-31 b(en)370 b(stopping)h(p)31 b(oin)-31
+b(t)370 b Fp(t)308 b FA(=)f Fp(t)15879 66631 y Fn(stop)17561
+66465 y FA(.)p Black Black eop
+%%Page: 13 21
+13 20 bop Black Black 4000 15288 a Fw(Chapter)861 b(4)4000
+20834 y Fz(Co)86 b(de)1033 b(Organization)4000 27266
+y Fu(4.1)1793 b(SUNDIALS)599 b(organization)4000 29711
+y FA(The)485 b(family)h(of)f(solv)-31 b(ers)485 b(referred)e(to)i(as)f
+Fx(sundials)f FA(consists)i(of)g(the)g(solv)-31 b(ers)484
+b Fx(cv)-25 b(ode)485 b FA(\(for)g(ODE)f(systems\),)4000
+31040 y Fx(kinsol)400 b FA(\(for)i(nonlinear)h(algebraic)g(systems\),)
+410 b(and)402 b Fx(id)-25 b(a)401 b FA(\(for)h(di\256eren)-31
+b(tial-algebraic)405 b(systems\).)590 b(In)401 b(addition,)4000
+32368 y(v)-61 b(arian)-31 b(ts)517 b(of)g(these)f(whic)-31
+b(h)517 b(also)g(do)f(sensitivit)-31 b(y)519 b(analysis)e(calculations)
+i(are)d(a)-31 b(v)-61 b(ailable)519 b(or)d(in)g(dev)-31
+b(elopmen)g(t.)4000 33696 y Fx(cv)-25 b(odes)p FA(,)460
+b(an)442 b(extension)g(of)g Fx(cv)-25 b(ode)442 b FA(that)g(pro)-31
+b(vides)442 b(b)31 b(oth)441 b(forw)-31 b(ard)443 b(and)e(adjoin)-31
+b(t)443 b(sensitivit)-31 b(y)444 b(capabilities)g(is)4000
+35025 y(a)-31 b(v)-61 b(ailable,)372 b(while)f Fx(id)-25
+b(as)369 b FA(is)g(curren)-31 b(tly)369 b(in)h(dev)-31
+b(elopmen)g(t.)5660 36365 y(The)256 b(v)-61 b(arious)256
+b(solv)-31 b(ers)256 b(of)g(this)g(family)i(share)d(man)-31
+b(y)257 b(sub)31 b(ordinate)256 b(mo)31 b(dules.)456
+b(F)-92 b(or)255 b(this)h(reason,)279 b(it)256 b(is)g(organized)4000
+37693 y(as)396 b(a)h(family)-92 b(,)406 b(with)397 b(a)g(directory)g
+(structure)f(that)i(exploits)g(that)f(sharing)g(\(see)f(Fig.)575
+b(4.1\).)h(The)397 b(follo)-31 b(wing)400 b(is)d(a)4000
+39021 y(list)370 b(of)g(the)f(solv)-31 b(er)370 b(pac)-31
+b(k)-61 b(ages)370 b(presen)-31 b(tly)369 b(a)-31 b(v)-61
+b(ailable:)p Black 5660 41270 a Fs(\262)p Black 554 w
+Fx(cv)-25 b(ode)p FA(,)371 b(a)e(solv)-31 b(er)370 b(for)f(sti\256)g
+(and)h(nonsti\256)g(ODEs)e Fp(dy)40 b(=dt)308 b FA(=)f
+Fp(f)119 b FA(\()p Fp(t;)184 b(y)40 b FA(\);)p Black
+5660 43529 a Fs(\262)p Black 554 w Fx(cv)-25 b(odes)p
+FA(,)392 b(a)387 b(solv)-31 b(er)387 b(for)f(sti\256)h(and)g
+(nonsti\256)g(ODEs)f Fp(dy)40 b(=dt)336 b FA(=)g Fp(f)119
+b FA(\()p Fp(t;)184 b(y)40 b(;)184 b(p)p FA(\))389 b(with)f(sensitivit)
+-31 b(y)388 b(analysis)g(capa-)6767 44858 y(bilities;)p
+Black 5660 47117 a Fs(\262)p Black 554 w Fx(kinsol)p
+FA(,)368 b(a)i(solv)-31 b(er)369 b(for)h(nonlinear)g(algebraic)h
+(systems)e Fp(F)154 b FA(\()p Fp(u)p FA(\))308 b(=)f(0;)p
+Black 5660 49377 a Fs(\262)p Black 554 w Fx(id)-25 b(a)p
+FA(,)370 b(a)f(solv)-31 b(er)370 b(for)f(di\256eren)-31
+b(tial-algebraic)373 b(systems)c Fp(F)154 b FA(\()p Fp(t;)184
+b(y)40 b(;)184 b(y)33053 48975 y Fo(0)33364 49377 y FA(\))308
+b(=)g(0.)4000 53099 y Fu(4.2)1793 b(ID)-50 b(A)598 b(organization)4000
+55544 y FA(The)372 b Fx(id)-25 b(a)373 b FA(pac)-31 b(k)-61
+b(age)373 b(is)f(written)i(in)e(the)h(ANSI)f Fx(C)g FA(language.)504
+b(The)373 b(follo)-31 b(wing)376 b(summarizes)c(the)h(basic)f
+(structure)4000 56873 y(of)e(the)f(pac)-31 b(k)-61 b(age,)371
+b(although)g(kno)-31 b(wledge)372 b(of)d(this)h(structure)f(is)g(not)h
+(necessary)e(for)h(its)h(use.)5660 58213 y(The)506 b(o)-31
+b(v)g(erall)508 b(organization)h(of)d(the)g Fx(id)-25
+b(a)505 b FA(pac)-31 b(k)-61 b(age)507 b(is)f(sho)-31
+b(wn)506 b(in)g(Figure)f(4.2.)903 b(The)506 b(cen)-31
+b(tral)507 b(in)-31 b(tegration)4000 59541 y(mo)31 b(dule,)417
+b(implemen)-31 b(ted)409 b(in)d(the)h(\257les)f Fy(ida.h)h
+FA(and)g Fy(ida.c)p FA(,)416 b(deals)407 b(with)h(the)e(ev)-61
+b(aluation)409 b(of)e(in)-31 b(tegration)409 b(co)31
+b(e\261-)4000 60869 y(cien)-31 b(ts,)424 b(the)412 b(Newton)i
+(iteration)g(pro)31 b(cess,)422 b(estimation)415 b(of)e(lo)31
+b(cal)413 b(error,)422 b(selection)414 b(of)f(stepsize)f(and)g(order,)
+423 b(and)4000 62198 y(in)-31 b(terp)31 b(olation)324
+b(to)d(user)f(output)h(p)31 b(oin)-31 b(ts,)332 b(among)322
+b(other)f(issues.)476 b(Although)322 b(this)f(mo)31 b(dule)322
+b(con)-31 b(tains)322 b(logic)g(for)f(the)4000 63526
+y(basic)366 b(Newton)g(iteration)h(algorithm,)j(it)c(has)f(no)g(kno)-31
+b(wledge)367 b(of)f(the)f(metho)31 b(d)367 b(b)31 b(eing)365
+b(used)g(to)h(solv)-31 b(e)366 b(the)f(linear)4000 64854
+y(systems)401 b(that)h(arise.)587 b(F)-92 b(or)400 b(an)-31
+b(y)402 b(giv)-31 b(en)402 b(user)e(problem,)410 b(one)401
+b(of)g(the)g(linear)h(system)f(mo)31 b(dules)401 b(is)g(sp)31
+b(eci\257ed,)409 b(and)4000 66183 y(is)369 b(then)h(in)-31
+b(v)g(ok)g(ed)371 b(as)e(needed)g(during)g(the)g(in)-31
+b(tegration.)5660 67523 y(A)g(t)370 b(presen)-31 b(t,)370
+b(the)f(pac)-31 b(k)-61 b(age)371 b(includes)e(the)g(follo)-31
+b(wing)373 b(three)c Fx(id)-25 b(a)369 b FA(linear)h(system)g(mo)31
+b(dules:)p Black 5660 69771 a Fs(\262)p Black 554 w Fx(id)-25
+b(adense)p FA(:)494 b(LU)369 b(factorization)j(and)e(bac)-31
+b(ksolving)372 b(with)e(dense)f(matrices;)p Black 5660
+72031 a Fs(\262)p Black 554 w Fx(id)-25 b(aband)p FA(:)493
+b(LU)369 b(factorization)k(and)c(bac)-31 b(ksolving)372
+b(with)e(banded)g(matrices;)p Black 5660 74290 a Fs(\262)p
+Black 554 w Fx(id)-25 b(aspgmr)p FA(:)492 b(scaled)370
+b(preconditioned)g(GMRES)f(metho)31 b(d.)4000 76539 y(This)451
+b(set)g(of)g(linear)h(solv)-31 b(er)451 b(mo)31 b(dules)451
+b(is)g(in)-31 b(tended)452 b(to)g(b)31 b(e)450 b(expanded)h(in)g(the)g
+(future)g(as)g(new)g(algorithms)i(are)4000 77867 y(dev)-31
+b(elop)31 b(ed.)p Black Black eop
+%%Page: 14 22
+14 21 bop Black 0 2701 a FB(14)36248 b(Co)35 b(de)426
+b(Organization)p 0 3144 48001 45 v Black Black 0 33745
+a @beginspecial 0 @llx 0 @lly 804 @urx 301 @ury 4320
+ at rwi @setspecial
+%%BeginDocument: sunorg1.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: sunorg.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Wed Aug 20 14:17:18 2003
+%%For: radu at tux111.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 804 301
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.988 0.953 0.549 srgb} bind def
+/col33 {0.631 0.816 0.922 srgb} bind def
+/col34 {0.553 0.922 0.553 srgb} bind def
+/col35 {0.855 0.855 0.855 srgb} bind def
+
+end
+save
+newpath 0 301 moveto 0 0 lineto 804 0 lineto 804 301 lineto closepath clip newpath
+-3.2 303.1 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 10800 3900 m
+ 10800 4350 l gs col8 s gr 
+% Polyline
+n 180 1938 m 75 1938 75 2231 105 arcto 4 {pop} repeat
+  75 2336 1245 2336 105 arcto 4 {pop} repeat
+  1350 2336 1350 2043 105 arcto 4 {pop} repeat
+  1350 1938 180 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+285 2212 m
+gs 1 -1 sc (CVDIAG) col8 sh gr
+% Polyline
+n 1530 1938 m 1425 1938 1425 2231 105 arcto 4 {pop} repeat
+  1425 2336 2595 2336 105 arcto 4 {pop} repeat
+  2700 2336 2700 2043 105 arcto 4 {pop} repeat
+  2700 1938 1530 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+1537 2212 m
+gs 1 -1 sc (CVDENSE) col8 sh gr
+% Polyline
+n 2880 1938 m 2775 1938 2775 2231 105 arcto 4 {pop} repeat
+  2775 2336 3945 2336 105 arcto 4 {pop} repeat
+  4050 2336 4050 2043 105 arcto 4 {pop} repeat
+  4050 1938 2880 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+2955 2212 m
+gs 1 -1 sc (CVBAND) col8 sh gr
+% Polyline
+n 4230 1938 m 4125 1938 4125 2231 105 arcto 4 {pop} repeat
+  4125 2336 5295 2336 105 arcto 4 {pop} repeat
+  5400 2336 5400 2043 105 arcto 4 {pop} repeat
+  5400 1938 4230 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+4222 2212 m
+gs 1 -1 sc (CVSPGMR) col8 sh gr
+% Polyline
+n 6030 1938 m 5925 1938 5925 2231 105 arcto 4 {pop} repeat
+  5925 2336 7095 2336 105 arcto 4 {pop} repeat
+  7200 2336 7200 2043 105 arcto 4 {pop} repeat
+  7200 1938 6030 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+5985 2212 m
+gs 1 -1 sc (IDADENSE) col8 sh gr
+% Polyline
+n 7380 1938 m 7275 1938 7275 2231 105 arcto 4 {pop} repeat
+  7275 2336 8445 2336 105 arcto 4 {pop} repeat
+  8550 2336 8550 2043 105 arcto 4 {pop} repeat
+  8550 1938 7380 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+7402 2212 m
+gs 1 -1 sc (IDABAND) col8 sh gr
+% Polyline
+n 8730 1938 m 8625 1938 8625 2231 105 arcto 4 {pop} repeat
+  8625 2336 9795 2336 105 arcto 4 {pop} repeat
+  9900 2336 9900 2043 105 arcto 4 {pop} repeat
+  9900 1938 8730 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+8670 2212 m
+gs 1 -1 sc (IDASPGMR) col8 sh gr
+% Polyline
+n 7380 963 m 7275 963 7275 1256 105 arcto 4 {pop} repeat
+  7275 1361 8445 1361 105 arcto 4 {pop} repeat
+  8550 1361 8550 1068 105 arcto 4 {pop} repeat
+  8550 963 7380 963 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+7710 1237 m
+gs 1 -1 sc (IDA) col8 sh gr
+% Polyline
+n 11280 963 m 11175 963 11175 1256 105 arcto 4 {pop} repeat
+  11175 1361 12345 1361 105 arcto 4 {pop} repeat
+  12450 1361 12450 1068 105 arcto 4 {pop} repeat
+  12450 963 11280 963 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+11392 1237 m
+gs 1 -1 sc (KINSOL) col8 sh gr
+% Polyline
+n 11280 1938 m 11175 1938 11175 2231 105 arcto 4 {pop} repeat
+  11175 2336 12345 2336 105 arcto 4 {pop} repeat
+  12450 2336 12450 2043 105 arcto 4 {pop} repeat
+  12450 1938 11280 1938 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+11220 2212 m
+gs 1 -1 sc (KINSPGMR) col8 sh gr
+% Polyline
+n 1230 963 m 1125 963 1125 1256 105 arcto 4 {pop} repeat
+  1125 1361 2295 1361 105 arcto 4 {pop} repeat
+  2400 1361 2400 1068 105 arcto 4 {pop} repeat
+  2400 963 1230 963 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+1372 1237 m
+gs 1 -1 sc (CVODE) col8 sh gr
+% Polyline
+n 3180 963 m 3075 963 3075 1256 105 arcto 4 {pop} repeat
+  3075 1361 4245 1361 105 arcto 4 {pop} repeat
+  4350 1361 4350 1068 105 arcto 4 {pop} repeat
+  4350 963 3180 963 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+3255 1237 m
+gs 1 -1 sc (CVODES) col8 sh gr
+% Polyline
+n 5580 63 m 5475 63 5475 356 105 arcto 4 {pop} repeat
+  5475 461 6645 461 105 arcto 4 {pop} repeat
+  6750 461 6750 168 105 arcto 4 {pop} repeat
+  6750 63 5580 63 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+5565 337 m
+gs 1 -1 sc (SUNDIALS) col8 sh gr
+% Polyline
+n 3300 3514 m 4575 3514 l 4575 3911 l 3300 3911 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+3562 3787 m
+gs 1 -1 sc (DENSE) col8 sh gr
+% Polyline
+n 7725 3525 m 9000 3525 l 9000 4275 l 7725 4275 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+7972 3825 m
+gs 1 -1 sc (SPGMR) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+7830 4125 m
+gs 1 -1 sc (ITERATIVE) col8 sh gr
+% Polyline
+n 5475 3514 m 6750 3514 l 6750 3911 l 5475 3911 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+5805 3787 m
+gs 1 -1 sc (BAND) col8 sh gr
+% Polyline
+n 10200 3514 m 11475 3514 l 11475 3911 l 10200 3911 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+10380 3780 m
+gs 1 -1 sc (NVECTOR) col8 sh gr
+% Polyline
+n 8325 4644 m 10800 4644 l 10800 5030 l 8325 5030 l
+ cp gs col35 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+8715 4882 m
+gs 1 -1 sc (NVECTOR_SERIAL) col8 sh gr
+% Polyline
+n 10950 4644 m 13425 4644 l 13425 5030 l 10950 5030 l
+ cp gs col35 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+11182 4882 m
+gs 1 -1 sc (NVECTOR_PARALLEL) col8 sh gr
+% Polyline
+n 2025 2325 m 2025 2775 l 6600 2775 l
+ 6600 2325 l gs col8 s gr 
+% Polyline
+n 3375 2325 m 3375 2925 l 7950 2925 l
+ 7950 2325 l gs col8 s gr 
+% Polyline
+n 4725 2325 m 4725 3150 l 11850 3150 l
+ 11850 2325 l gs col8 s gr 
+% Polyline
+n 9300 2325 m
+ 9300 3150 l gs col8 s gr 
+% Polyline
+n 1725 1350 m 1725 1575 l 3675 1575 l
+ 3675 1350 l gs col8 s gr 
+% Polyline
+gs  clippath
+4680 1965 m 4770 1965 l 4770 1808 l 4725 1928 l 4680 1808 l cp
+705 1965 m 795 1965 l 795 1808 l 750 1928 l 705 1808 l cp
+eoclip
+n 750 1950 m 750 1725 l 4725 1725 l
+ 4725 1950 l gs col8 s gr gr
+
+% arrowhead
+n 705 1808 m 750 1928 l 795 1808 l 705 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 4680 1808 m 4725 1928 l 4770 1808 l 4680 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+3930 3540 m 4020 3540 l 4020 3383 l 3975 3503 l 3930 3383 l cp
+eoclip
+n 3975 2775 m
+ 3975 3525 l gs col8 s gr gr
+
+% arrowhead
+n 3930 3383 m 3975 3503 l 4020 3383 l 3930 3383 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6030 3540 m 6120 3540 l 6120 3383 l 6075 3503 l 6030 3383 l cp
+eoclip
+n 6075 2925 m
+ 6075 3525 l gs col8 s gr gr
+
+% arrowhead
+n 6030 3383 m 6075 3503 l 6120 3383 l 6030 3383 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8280 3540 m 8370 3540 l 8370 3383 l 8325 3503 l 8280 3383 l cp
+eoclip
+n 8325 3150 m
+ 8325 3525 l gs col8 s gr gr
+
+% arrowhead
+n 8280 3383 m 8325 3503 l 8370 3383 l 8280 3383 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+11805 1965 m 11895 1965 l 11895 1808 l 11850 1928 l 11805 1808 l cp
+eoclip
+n 11850 1350 m
+ 11850 1950 l gs col8 s gr gr
+
+% arrowhead
+n 11805 1808 m 11850 1928 l 11895 1808 l 11805 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+11805 990 m 11895 990 l 11895 833 l 11850 953 l 11805 833 l cp
+1680 990 m 1770 990 l 1770 833 l 1725 953 l 1680 833 l cp
+eoclip
+n 1725 975 m 1725 675 l 11850 675 l
+ 11850 975 l gs col8 s gr gr
+
+% arrowhead
+n 1680 833 m 1725 953 l 1770 833 l 1680 833 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 11805 833 m 11850 953 l 11895 833 l 11805 833 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+9255 1965 m 9345 1965 l 9345 1808 l 9300 1928 l 9255 1808 l cp
+6555 1965 m 6645 1965 l 6645 1808 l 6600 1928 l 6555 1808 l cp
+eoclip
+n 6600 1950 m 6600 1725 l 9300 1725 l
+ 9300 1950 l gs col8 s gr gr
+
+% arrowhead
+n 6555 1808 m 6600 1928 l 6645 1808 l 6555 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 9255 1808 m 9300 1928 l 9345 1808 l 9255 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 7950 1350 m
+ 7950 1725 l gs col8 s gr 
+% Polyline
+gs  clippath
+3630 990 m 3720 990 l 3720 833 l 3675 953 l 3630 833 l cp
+eoclip
+n 3675 675 m
+ 3675 975 l gs col8 s gr gr
+
+% arrowhead
+n 3630 833 m 3675 953 l 3720 833 l 3630 833 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+7905 990 m 7995 990 l 7995 833 l 7950 953 l 7905 833 l cp
+eoclip
+n 7950 675 m
+ 7950 975 l gs col8 s gr gr
+
+% arrowhead
+n 7905 833 m 7950 953 l 7995 833 l 7905 833 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+12030 4665 m 12120 4665 l 12120 4508 l 12075 4628 l 12030 4508 l cp
+9480 4665 m 9570 4665 l 9570 4508 l 9525 4628 l 9480 4508 l cp
+eoclip
+n 9525 4650 m 9525 4350 l 12075 4350 l
+ 12075 4650 l gs col8 s gr gr
+
+% arrowhead
+n 9480 4508 m 9525 4628 l 9570 4508 l 9480 4508 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 12030 4508 m 12075 4628 l 12120 4508 l 12030 4508 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 6075 450 m
+ 6075 675 l gs col8 s gr 
+% Polyline
+gs  clippath
+1980 1965 m 2070 1965 l 2070 1808 l 2025 1928 l 1980 1808 l cp
+eoclip
+n 2025 1725 m
+ 2025 1950 l gs col8 s gr gr
+
+% arrowhead
+n 1980 1808 m 2025 1928 l 2070 1808 l 1980 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+3330 1965 m 3420 1965 l 3420 1808 l 3375 1928 l 3330 1808 l cp
+eoclip
+n 3375 1725 m
+ 3375 1950 l gs col8 s gr gr
+
+% arrowhead
+n 3330 1808 m 3375 1928 l 3420 1808 l 3330 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+7905 1965 m 7995 1965 l 7995 1808 l 7950 1928 l 7905 1808 l cp
+eoclip
+n 7950 1725 m
+ 7950 1950 l gs col8 s gr gr
+
+% arrowhead
+n 7905 1808 m 7950 1928 l 7995 1808 l 7905 1808 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 2775 1575 m
+ 2775 1725 l gs col8 s gr 
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial 19361 36180 a Fh(\(a\))314 b(High-lev)-26
+b(el)314 b(diagram)0 63101 y @beginspecial 0 @llx 0 @lly
+768 @urx 390 @ury 4320 @rwi @setspecial
+%%BeginDocument: sunorg2.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: sunorg2.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Fri Jul 23 08:13:08 2004
+%%For: radu at tux111.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 768 390
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.592 0.776 0.882 srgb} bind def
+/col33 {0.949 0.914 0.525 srgb} bind def
+/col34 {0.816 0.816 0.816 srgb} bind def
+/col35 {0.961 0.941 0.765 srgb} bind def
+
+end
+save
+newpath 0 390 moveto 0 0 lineto 768 0 lineto 768 390 lineto closepath clip newpath
+-79.7 424.3 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 4200 4050 m 5100 4050 l 5100 4350 l 4200 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 5400 m 5100 5400 l 5100 5700 l 4200 5700 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 5400 m 9675 5400 l 9675 5700 l 8775 5700 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 2100 4050 m 3000 4050 l 3000 4350 l 2100 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 4050 m 7200 4050 l 7200 4350 l 6300 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 4050 m 9675 4050 l 9675 4350 l 8775 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 4050 m 11775 4050 l 11775 4350 l 10875 4350 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 2250 m 9825 2250 l 9825 2550 l 8775 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 2250 m 11925 2250 l 11925 2550 l 10875 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 2250 m 7350 2250 l 7350 2550 l 6300 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 2250 m 5250 2250 l 5250 2550 l 4200 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 2100 2250 m 3150 2250 l 3150 2550 l 2100 2550 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 5850 m 5700 5850 l 5700 6150 l 4200 6150 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 6300 m 5700 6300 l 5700 6600 l 4200 6600 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 4200 6750 m 4800 6750 l 4800 7050 l 4200 7050 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 6750 m 6900 6750 l 6900 7050 l 6300 7050 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 6300 m 7800 6300 l 7800 6600 l 6300 6600 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 5850 m 7800 5850 l 7800 6150 l 6300 6150 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 5850 m 10275 5850 l 10275 6150 l 8775 6150 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 6300 m 10275 6300 l 10275 6600 l 8775 6600 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8775 6750 m 9375 6750 l 9375 7050 l 8775 7050 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 6750 m 11475 6750 l 11475 7050 l 10875 7050 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 6300 m 12375 6300 l 12375 6600 l 10875 6600 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10875 5850 m 12375 5850 l 12375 6150 l 10875 6150 l
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 1350 1650 m 2250 1650 l 2250 1950 l 1350 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 3450 1650 m 4350 1650 l 4350 1950 l 3450 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 5550 1650 m 6450 1650 l 6450 1950 l 5550 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 8025 1650 m 8925 1650 l 8925 1950 l 8025 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 10125 1650 m 11025 1650 l 11025 1950 l 10125 1950 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 6300 600 m 7500 600 l 7500 900 l 6300 900 l
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 11625 1650 m 12825 1650 l 12825 1950 l 11625 1950 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+% Polyline
+n 12900 1650 m 14100 1650 l 14100 1950 l 12900 1950 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Courier ff 180.00 scf sf
+2250 3270 m
+gs 1 -1 sc (nvector.h) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 3480 m
+gs 1 -1 sc (dense.h) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 3690 m
+gs 1 -1 sc (spgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 3900 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 2850 m
+gs 1 -1 sc (sundialstypes.h) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 3060 m
+gs 1 -1 sc (sundialsmath.h) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 3480 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 5205 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 5430 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 5430 m
+gs 1 -1 sc (...) col0 sh gr
+% Polyline
+gs  clippath
+4215 4252 m 4215 4147 l 4026 4147 l 4176 4200 l 4026 4252 l cp
+eoclip
+n 3900 4200 m
+ 4200 4200 l gs col8 s gr gr
+
+% arrowhead
+n 4026 4252 m 4176 4200 l 4026 4147 l 4026 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 5602 m 4215 5497 l 4026 5497 l 4176 5550 l 4026 5602 l cp
+eoclip
+n 3900 5550 m
+ 4200 5550 l gs col8 s gr gr
+
+% arrowhead
+n 4026 5602 m 4176 5550 l 4026 5497 l 4026 5602 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 5602 m 8790 5497 l 8601 5497 l 8751 5550 l 8601 5602 l cp
+eoclip
+n 8475 5550 m
+ 8775 5550 l gs col8 s gr gr
+
+% arrowhead
+n 8601 5602 m 8751 5550 l 8601 5497 l 8601 5602 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 1800 1950 m
+ 1800 4200 l gs col8 s gr 
+% Polyline
+n 6000 1950 m
+ 6000 6900 l gs col8 s gr 
+% Polyline
+n 3900 1950 m
+ 3900 6900 l gs col8 s gr 
+% Polyline
+n 8475 1950 m
+ 8475 6900 l gs col8 s gr 
+% Polyline
+n 10575 1950 m
+ 10575 6900 l gs col8 s gr 
+% Polyline
+gs  clippath
+6315 6952 m 6315 6847 l 6126 6847 l 6276 6900 l 6126 6952 l cp
+eoclip
+n 6000 6900 m
+ 6300 6900 l gs col8 s gr gr
+
+% arrowhead
+n 6126 6952 m 6276 6900 l 6126 6847 l 6126 6952 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6315 6502 m 6315 6397 l 6126 6397 l 6276 6450 l 6126 6502 l cp
+eoclip
+n 6000 6450 m
+ 6300 6450 l gs col8 s gr gr
+
+% arrowhead
+n 6126 6502 m 6276 6450 l 6126 6397 l 6126 6502 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6315 6052 m 6315 5947 l 6126 5947 l 6276 6000 l 6126 6052 l cp
+eoclip
+n 6000 6000 m
+ 6300 6000 l gs col8 s gr gr
+
+% arrowhead
+n 6126 6052 m 6276 6000 l 6126 5947 l 6126 6052 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6315 4252 m 6315 4147 l 6126 4147 l 6276 4200 l 6126 4252 l cp
+eoclip
+n 6000 4200 m
+ 6300 4200 l gs col8 s gr gr
+
+% arrowhead
+n 6126 4252 m 6276 4200 l 6126 4147 l 6126 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6315 2452 m 6315 2347 l 6126 2347 l 6276 2400 l 6126 2452 l cp
+eoclip
+n 6000 2400 m
+ 6300 2400 l gs col8 s gr gr
+
+% arrowhead
+n 6126 2452 m 6276 2400 l 6126 2347 l 6126 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 6952 m 4215 6847 l 4026 6847 l 4176 6900 l 4026 6952 l cp
+eoclip
+n 3900 6900 m
+ 4200 6900 l gs col8 s gr gr
+
+% arrowhead
+n 4026 6952 m 4176 6900 l 4026 6847 l 4026 6952 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 6502 m 4215 6397 l 4026 6397 l 4176 6450 l 4026 6502 l cp
+eoclip
+n 3900 6450 m
+ 4200 6450 l gs col8 s gr gr
+
+% arrowhead
+n 4026 6502 m 4176 6450 l 4026 6397 l 4026 6502 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 6052 m 4215 5947 l 4026 5947 l 4176 6000 l 4026 6052 l cp
+eoclip
+n 3900 6000 m
+ 4200 6000 l gs col8 s gr gr
+
+% arrowhead
+n 4026 6052 m 4176 6000 l 4026 5947 l 4026 6052 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4215 2452 m 4215 2347 l 4026 2347 l 4176 2400 l 4026 2452 l cp
+eoclip
+n 3900 2400 m
+ 4200 2400 l gs col8 s gr gr
+
+% arrowhead
+n 4026 2452 m 4176 2400 l 4026 2347 l 4026 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+2115 2452 m 2115 2347 l 1926 2347 l 2076 2400 l 1926 2452 l cp
+eoclip
+n 1800 2400 m
+ 2100 2400 l gs col8 s gr gr
+
+% arrowhead
+n 1926 2452 m 2076 2400 l 1926 2347 l 1926 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+2115 4252 m 2115 4147 l 1926 4147 l 2076 4200 l 1926 4252 l cp
+eoclip
+n 1800 4200 m
+ 2100 4200 l gs col8 s gr gr
+
+% arrowhead
+n 1926 4252 m 2076 4200 l 1926 4147 l 1926 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+1747 1665 m 1852 1665 l 1852 1476 l 1800 1626 l 1747 1476 l cp
+eoclip
+n 1800 1350 m
+ 1800 1650 l gs col8 s gr gr
+
+% arrowhead
+n 1747 1476 m 1800 1626 l 1852 1476 l 1747 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+3847 1665 m 3952 1665 l 3952 1476 l 3900 1626 l 3847 1476 l cp
+eoclip
+n 3900 1350 m
+ 3900 1650 l gs col8 s gr gr
+
+% arrowhead
+n 3847 1476 m 3900 1626 l 3952 1476 l 3847 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+5947 1665 m 6052 1665 l 6052 1476 l 6000 1626 l 5947 1476 l cp
+eoclip
+n 6000 1350 m
+ 6000 1650 l gs col8 s gr gr
+
+% arrowhead
+n 5947 1476 m 6000 1626 l 6052 1476 l 5947 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6922 1365 m 7027 1365 l 7027 1176 l 6975 1326 l 6922 1176 l cp
+eoclip
+n 6975 900 m
+ 6975 1350 l gs col8 s gr gr
+
+% arrowhead
+n 6922 1176 m 6975 1326 l 7027 1176 l 6922 1176 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8422 1665 m 8527 1665 l 8527 1476 l 8475 1626 l 8422 1476 l cp
+eoclip
+n 8475 1350 m
+ 8475 1650 l gs col8 s gr gr
+
+% arrowhead
+n 8422 1476 m 8475 1626 l 8527 1476 l 8422 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10522 1665 m 10627 1665 l 10627 1476 l 10575 1626 l 10522 1476 l cp
+eoclip
+n 10575 1350 m
+ 10575 1650 l gs col8 s gr gr
+
+% arrowhead
+n 10522 1476 m 10575 1626 l 10627 1476 l 10522 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+12172 1665 m 12277 1665 l 12277 1476 l 12225 1626 l 12172 1476 l cp
+eoclip
+n 12225 1350 m
+ 12225 1650 l gs col8 s gr gr
+
+% arrowhead
+n 12172 1476 m 12225 1626 l 12277 1476 l 12172 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+13447 1665 m 13552 1665 l 13552 1476 l 13500 1626 l 13447 1476 l cp
+eoclip
+n 13500 1350 m
+ 13500 1650 l gs col8 s gr gr
+
+% arrowhead
+n 13447 1476 m 13500 1626 l 13552 1476 l 13447 1476 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 2452 m 10890 2347 l 10701 2347 l 10851 2400 l 10701 2452 l cp
+eoclip
+n 10575 2400 m
+ 10875 2400 l gs col8 s gr gr
+
+% arrowhead
+n 10701 2452 m 10851 2400 l 10701 2347 l 10701 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 2452 m 8790 2347 l 8601 2347 l 8751 2400 l 8601 2452 l cp
+eoclip
+n 8475 2400 m
+ 8775 2400 l gs col8 s gr gr
+
+% arrowhead
+n 8601 2452 m 8751 2400 l 8601 2347 l 8601 2452 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 4252 m 8790 4147 l 8601 4147 l 8751 4200 l 8601 4252 l cp
+eoclip
+n 8475 4200 m
+ 8775 4200 l gs col8 s gr gr
+
+% arrowhead
+n 8601 4252 m 8751 4200 l 8601 4147 l 8601 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 6052 m 8790 5947 l 8601 5947 l 8751 6000 l 8601 6052 l cp
+eoclip
+n 8475 6000 m
+ 8775 6000 l gs col8 s gr gr
+
+% arrowhead
+n 8601 6052 m 8751 6000 l 8601 5947 l 8601 6052 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 6502 m 8790 6397 l 8601 6397 l 8751 6450 l 8601 6502 l cp
+eoclip
+n 8475 6450 m
+ 8775 6450 l gs col8 s gr gr
+
+% arrowhead
+n 8601 6502 m 8751 6450 l 8601 6397 l 8601 6502 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8790 6952 m 8790 6847 l 8601 6847 l 8751 6900 l 8601 6952 l cp
+eoclip
+n 8475 6900 m
+ 8775 6900 l gs col8 s gr gr
+
+% arrowhead
+n 8601 6952 m 8751 6900 l 8601 6847 l 8601 6952 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 6952 m 10890 6847 l 10701 6847 l 10851 6900 l 10701 6952 l cp
+eoclip
+n 10575 6900 m
+ 10875 6900 l gs col8 s gr gr
+
+% arrowhead
+n 10701 6952 m 10851 6900 l 10701 6847 l 10701 6952 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 6502 m 10890 6397 l 10701 6397 l 10851 6450 l 10701 6502 l cp
+eoclip
+n 10575 6450 m
+ 10875 6450 l gs col8 s gr gr
+
+% arrowhead
+n 10701 6502 m 10851 6450 l 10701 6397 l 10701 6502 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 6052 m 10890 5947 l 10701 5947 l 10851 6000 l 10701 6052 l cp
+eoclip
+n 10575 6000 m
+ 10875 6000 l gs col8 s gr gr
+
+% arrowhead
+n 10701 6052 m 10851 6000 l 10701 5947 l 10701 6052 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+10890 4252 m 10890 4147 l 10701 4147 l 10851 4200 l 10701 4252 l cp
+eoclip
+n 10575 4200 m
+ 10875 4200 l gs col8 s gr gr
+
+% arrowhead
+n 10701 4252 m 10851 4200 l 10701 4147 l 10701 4252 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 1800 1350 m
+ 13500 1350 l gs col8 s gr 
+/Courier ff 180.00 scf sf
+4500 3060 m
+gs 1 -1 sc (cvdense.h) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 3270 m
+gs 1 -1 sc (cvspgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 2850 m
+gs 1 -1 sc (cvodes.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 3060 m
+gs 1 -1 sc (cvodea.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 3270 m
+gs 1 -1 sc (cvdense.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 3480 m
+gs 1 -1 sc (cvspgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 3690 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 4650 m
+gs 1 -1 sc (cvode.c) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 4860 m
+gs 1 -1 sc (cvdense.c) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 5070 m
+gs 1 -1 sc (cvspgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 4650 m
+gs 1 -1 sc (cvodes.c) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 4860 m
+gs 1 -1 sc (cvodea.c) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 5070 m
+gs 1 -1 sc (cvdense.c) col0 sh gr
+/Courier ff 180.00 scf sf
+6600 5280 m
+gs 1 -1 sc (cvspgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 2850 m
+gs 1 -1 sc (kinsol.h) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 3060 m
+gs 1 -1 sc (kinspgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 3270 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 2850 m
+gs 1 -1 sc (ida.h) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 3060 m
+gs 1 -1 sc (idadense.h) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 3270 m
+gs 1 -1 sc (idaspgmr.h) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 3480 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 4650 m
+gs 1 -1 sc (kinsol.c) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 4860 m
+gs 1 -1 sc (kinspgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 4650 m
+gs 1 -1 sc (ida.c) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 4860 m
+gs 1 -1 sc (idadense.c) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 5070 m
+gs 1 -1 sc (idaspgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+11175 5280 m
+gs 1 -1 sc (...) col0 sh gr
+/Courier ff 180.00 scf sf
+4500 2850 m
+gs 1 -1 sc (cvode.h) col0 sh gr
+/Courier ff 180.00 scf sf
+7125 1200 m
+gs 1 -1 sc (configure) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 4860 m
+gs 1 -1 sc (nvector.c) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 5070 m
+gs 1 -1 sc (dense.c) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 5280 m
+gs 1 -1 sc (spgmr.c) col0 sh gr
+/Courier ff 180.00 scf sf
+2250 4650 m
+gs 1 -1 sc (sundialsmath.c) col0 sh gr
+/Courier ff 180.00 scf sf
+9075 5070 m
+gs 1 -1 sc (...) col0 sh gr
+/Times-Bold ff 210.00 scf sf
+4350 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4350 5625 m
+gs 1 -1 sc (fcmix) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8925 5625 m
+gs 1 -1 sc (fcmix) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4342 6975 m
+gs 1 -1 sc (doc) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4297 6525 m
+gs 1 -1 sc (examples_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4312 6075 m
+gs 1 -1 sc (examples_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6412 6075 m
+gs 1 -1 sc (examples_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6397 6525 m
+gs 1 -1 sc (examples_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6442 6975 m
+gs 1 -1 sc (doc) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8917 6975 m
+gs 1 -1 sc (doc) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8872 6525 m
+gs 1 -1 sc (examples_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8887 6075 m
+gs 1 -1 sc (examples_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8925 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+11025 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6450 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+2250 4275 m
+gs 1 -1 sc (source) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+11062 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8962 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6487 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+4387 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+2287 2475 m
+gs 1 -1 sc (include) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+1492 1875 m
+gs 1 -1 sc (shared) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+3630 1875 m
+gs 1 -1 sc (cvode) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+5685 1875 m
+gs 1 -1 sc (cvodes) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+8190 1875 m
+gs 1 -1 sc (kinsol) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+10440 1875 m
+gs 1 -1 sc (ida) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+11805 1875 m
+gs 1 -1 sc (nvec_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+13065 1875 m
+gs 1 -1 sc (nvec_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+6525 825 m
+gs 1 -1 sc (sundials) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+10987 6075 m
+gs 1 -1 sc (examples_ser) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+10972 6525 m
+gs 1 -1 sc (examples_par) col8 sh gr
+/Times-Bold ff 210.00 scf sf
+11017 6975 m
+gs 1 -1 sc (doc) col8 sh gr
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial 19259 65536 a(\(b\))f(Directory)h(structure)p
+Black 12086 68851 a FA(Figure)369 b(4.1:)494 b(Organization)372
+b(of)e(the)f(SUNDIALS)g(suite)p Black Black Black Black
+eop
+%%Page: 15 23
+15 22 bop Black 4000 2701 a FB(4.2)425 b(ID)-35 b(A)424
+b(organization)35013 b(15)p 4000 3144 48001 45 v Black
+Black 4000 30012 a @beginspecial 0 @llx 0 @lly 660 @urx
+332 @ury 4320 @rwi @setspecial
+%%BeginDocument: idaorg.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: idaorg.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Mon Apr  5 12:16:42 2004
+%%For: radu at tux111.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 660 332
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.961 0.925 0.525 srgb} bind def
+/col33 {0.604 0.788 0.894 srgb} bind def
+/col34 {0.525 0.894 0.525 srgb} bind def
+/col35 {0.827 0.827 0.827 srgb} bind def
+/col36 {0.973 0.953 0.776 srgb} bind def
+/col37 {0.529 0.529 0.529 srgb} bind def
+
+end
+save
+newpath 0 332 moveto 0 0 lineto 660 0 lineto 660 332 lineto closepath clip newpath
+1.3 343.5 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 2700 4425 m
+ 2700 4875 l gs col8 s gr 
+% Polyline
+n 6300 1650 m
+ 6300 2025 l gs col8 s gr 
+% Polyline
+gs  clippath
+6270 1215 m 6330 1215 l 6330 1048 l 6300 1168 l 6270 1048 l cp
+eoclip
+n 6300 675 m
+ 6300 1200 l gs col36 1.00 shd ef gr gs col37 s gr gr
+
+% arrowhead
+n 6270 1048 m 6300 1168 l 6330 1048 l 6270 1048 l  cp gs col37 1.00 shd ef gr  col37 s
+% Polyline
+n 3255 1200 m 3150 1200 3150 1545 105 arcto 4 {pop} repeat
+  3150 1650 4395 1650 105 arcto 4 {pop} repeat
+  4500 1650 4500 1305 105 arcto 4 {pop} repeat
+  4500 1200 3255 1200 105 arcto 4 {pop} repeat
+ cp gs col36 1.00 shd ef gr gs col37 s gr 
+/Times-Bold ff 180.00 scf sf
+3502 1492 m
+gs 1 -1 sc (CVODE) col37 sh gr
+% Polyline
+n 7425 3975 m 8775 3975 l 8775 4725 l 7425 4725 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+7710 4275 m
+gs 1 -1 sc (SPGMR) col8 sh gr
+/Times-Bold ff 180.00 scf sf
+7567 4575 m
+gs 1 -1 sc (ITERATIVE) col8 sh gr
+% Polyline
+n 5625 3975 m 6975 3975 l 6975 4425 l 5625 4425 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+5992 4275 m
+gs 1 -1 sc (BAND) col8 sh gr
+% Polyline
+n 3825 3969 m 5175 3969 l 5175 4430 l 3825 4430 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+4125 4275 m
+gs 1 -1 sc (DENSE) col8 sh gr
+% Polyline
+n 2848 5254 m 5252 5254 l 5252 5695 l 2848 5695 l
+ cp gs col35 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+3073 5518 m
+gs 1 -1 sc (NVECTOR_PARALLEL) col8 sh gr
+% Polyline
+n 2025 3975 m 3375 3975 l 3375 4425 l 2025 4425 l
+ cp gs col34 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 180.00 scf sf
+2242 4267 m
+gs 1 -1 sc (NVECTOR) col8 sh gr
+% Polyline
+n 3930 2400 m 3825 2400 3825 2745 105 arcto 4 {pop} repeat
+  3825 2850 5070 2850 105 arcto 4 {pop} repeat
+  5175 2850 5175 2505 105 arcto 4 {pop} repeat
+  5175 2400 3930 2400 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+3922 2700 m
+gs 1 -1 sc (IDADENSE) col8 sh gr
+% Polyline
+n 5730 2400 m 5625 2400 5625 2745 105 arcto 4 {pop} repeat
+  5625 2850 6870 2850 105 arcto 4 {pop} repeat
+  6975 2850 6975 2505 105 arcto 4 {pop} repeat
+  6975 2400 5730 2400 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+5790 2700 m
+gs 1 -1 sc (IDABAND) col8 sh gr
+% Polyline
+n 7530 2400 m 7425 2400 7425 2745 105 arcto 4 {pop} repeat
+  7425 2850 8670 2850 105 arcto 4 {pop} repeat
+  8775 2850 8775 2505 105 arcto 4 {pop} repeat
+  8775 2400 7530 2400 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+7507 2700 m
+gs 1 -1 sc (IDASPGMR) col8 sh gr
+% Polyline
+n 9405 3222 m 9300 3222 9300 3573 105 arcto 4 {pop} repeat
+  9300 3678 10845 3678 105 arcto 4 {pop} repeat
+  10950 3678 10950 3327 105 arcto 4 {pop} repeat
+  10950 3222 9405 3222 105 arcto 4 {pop} repeat
+ cp gs col33 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+9465 3525 m
+gs 1 -1 sc (IDABBDPRE) col8 sh gr
+% Polyline
+gs  clippath
+8070 3990 m 8130 3990 l 8130 3823 l 8100 3943 l 8070 3823 l cp
+eoclip
+n 8100 2850 m
+ 8100 3975 l gs col8 s gr gr
+
+% arrowhead
+n 8070 3823 m 8100 3943 l 8130 3823 l 8070 3823 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6270 3990 m 6330 3990 l 6330 3823 l 6300 3943 l 6270 3823 l cp
+eoclip
+n 6300 2850 m
+ 6300 3975 l gs col8 s gr gr
+
+% arrowhead
+n 6270 3823 m 6300 3943 l 6330 3823 l 6270 3823 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+4470 3990 m 4530 3990 l 4530 3823 l 4500 3943 l 4470 3823 l cp
+eoclip
+n 4500 2850 m
+ 4500 3975 l gs col8 s gr gr
+
+% arrowhead
+n 4470 3823 m 4500 3943 l 4530 3823 l 4470 3823 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+6270 2415 m 6330 2415 l 6330 2248 l 6300 2368 l 6270 2248 l cp
+eoclip
+n 6300 2025 m
+ 6300 2400 l gs col8 s gr gr
+
+% arrowhead
+n 6270 2248 m 6300 2368 l 6330 2248 l 6270 2248 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+n 225 5247 m 2625 5247 l 2625 5703 l 225 5703 l
+ cp gs col35 1.00 shd ef gr gs col8 s gr 
+% Polyline
+gs  clippath
+3945 5265 m 4005 5265 l 4005 5098 l 3975 5218 l 3945 5098 l cp
+1395 5265 m 1455 5265 l 1455 5098 l 1425 5218 l 1395 5098 l cp
+eoclip
+n 1425 5250 m 1425 4875 l 3975 4875 l
+ 3975 5250 l gs col8 s gr gr
+
+% arrowhead
+n 1395 5098 m 1425 5218 l 1455 5098 l 1395 5098 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 3945 5098 m 3975 5218 l 4005 5098 l 3945 5098 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8070 2415 m 8130 2415 l 8130 2248 l 8100 2368 l 8070 2248 l cp
+4470 2415 m 4530 2415 l 4530 2248 l 4500 2368 l 4470 2248 l cp
+eoclip
+n 4500 2400 m 4500 2025 l 8100 2025 l
+ 8100 2400 l gs col8 s gr gr
+
+% arrowhead
+n 4470 2248 m 4500 2368 l 4530 2248 l 4470 2248 l  cp gs col8 1.00 shd ef gr  col8 s
+% arrowhead
+n 8070 2248 m 8100 2368 l 8130 2248 l 8070 2248 l  cp gs col8 1.00 shd ef gr  col8 s
+% Polyline
+gs  clippath
+8085 3420 m 8085 3480 l 8252 3480 l 8132 3450 l 8252 3420 l cp
+eoclip
+n 9300 3450 m
+ 8100 3450 l gs col8 s gr gr
+
+% arrowhead
+n 8252 3420 m 8132 3450 l 8252 3480 l 8252 3420 l  cp gs col8 1.00 shd ef gr  col8 s
+/Times-Bold ff 180.00 scf sf
+577 5520 m
+gs 1 -1 sc (NVECTOR_SERIAL) col8 sh gr
+% Polyline
+n 5730 225 m 5625 225 5625 570 105 arcto 4 {pop} repeat
+  5625 675 6870 675 105 arcto 4 {pop} repeat
+  6975 675 6975 330 105 arcto 4 {pop} repeat
+  6975 225 5730 225 105 arcto 4 {pop} repeat
+ cp gs col36 1.00 shd ef gr gs col37 s gr 
+/Times-Bold ff 180.00 scf sf
+5827 517 m
+gs 1 -1 sc (SUNDIALS) col37 sh gr
+% Polyline
+n 5730 1200 m 5625 1200 5625 1545 105 arcto 4 {pop} repeat
+  5625 1650 6870 1650 105 arcto 4 {pop} repeat
+  6975 1650 6975 1305 105 arcto 4 {pop} repeat
+  6975 1200 5730 1200 105 arcto 4 {pop} repeat
+ cp gs col32 1.00 shd ef gr gs col8 s gr 
+/Times-Bold ff 210.00 scf sf
+6097 1500 m
+gs 1 -1 sc (IDA) col8 sh gr
+% Polyline
+gs  clippath
+645 1215 m 705 1215 l 705 1048 l 675 1168 l 645 1048 l cp
+eoclip
+n 5625 450 m 675 450 l
+ 675 1200 l gs col37 s gr gr
+
+% arrowhead
+n 645 1048 m 675 1168 l 705 1048 l 645 1048 l  cp gs col37 1.00 shd ef gr  col37 s
+% Polyline
+gs  clippath
+2220 1215 m 2280 1215 l 2280 1048 l 2250 1168 l 2220 1048 l cp
+eoclip
+n 2250 450 m
+ 2250 1200 l gs col37 s gr gr
+
+% arrowhead
+n 2220 1048 m 2250 1168 l 2280 1048 l 2220 1048 l  cp gs col37 1.00 shd ef gr  col37 s
+% Polyline
+gs  clippath
+3795 1215 m 3855 1215 l 3855 1048 l 3825 1168 l 3795 1048 l cp
+eoclip
+n 3825 450 m
+ 3825 1200 l gs col37 s gr gr
+
+% arrowhead
+n 3795 1048 m 3825 1168 l 3855 1048 l 3795 1048 l  cp gs col37 1.00 shd ef gr  col37 s
+% Polyline
+n 1680 1200 m 1575 1200 1575 1545 105 arcto 4 {pop} repeat
+  1575 1650 2820 1650 105 arcto 4 {pop} repeat
+  2925 1650 2925 1305 105 arcto 4 {pop} repeat
+  2925 1200 1680 1200 105 arcto 4 {pop} repeat
+ cp gs col36 1.00 shd ef gr gs col37 s gr 
+% Polyline
+n 105 1200 m 0 1200 0 1545 105 arcto 4 {pop} repeat
+  0 1650 1245 1650 105 arcto 4 {pop} repeat
+  1350 1650 1350 1305 105 arcto 4 {pop} repeat
+  1350 1200 105 1200 105 arcto 4 {pop} repeat
+ cp gs col36 1.00 shd ef gr gs col37 s gr 
+/Times-Bold ff 180.00 scf sf
+1890 1492 m
+gs 1 -1 sc (KINSOL) col37 sh gr
+/Times-Bold ff 180.00 scf sf
+300 1500 m
+gs 1 -1 sc (CVODES) col37 sh gr
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial 2435 x FA(Figure)347 b(4.2:)482 b(Ov)-31
+b(erall)348 b(structure)f(diagram)h(of)g(the)f Fx(id)-25
+b(a)346 b FA(pac)-31 b(k)-61 b(age.)487 b(Mo)31 b(dules)346
+b(sp)31 b(eci\257c)347 b(to)g Fx(id)-25 b(a)347 b FA(are)f
+(distinguished)4000 33776 y(b)-31 b(y)369 b(rounded)g(b)31
+b(o)-31 b(xes,)370 b(while)h(generic)e(solv)-31 b(er)370
+b(and)f(auxiliary)i(mo)31 b(dules)370 b(are)f(in)h(square)f(b)31
+b(o)-31 b(xes.)p Black 5660 37547 a(In)445 b(the)h(case)f(of)g(the)h
+(direct)f Fx(id)-25 b(adense)446 b FA(and)g Fx(id)-25
+b(aband)445 b FA(metho)31 b(ds,)465 b(the)446 b(pac)-31
+b(k)-61 b(age)446 b(includes)g(an)f(algorithm)4000 38875
+y(for)425 b(the)g(appro)-31 b(ximation)428 b(of)d(the)g(Jacobian)h(b)
+-31 b(y)425 b(di\256erence)f(quotien)-31 b(ts,)441 b(but)425
+b(the)g(user)f(also)h(has)g(the)g(option)h(of)4000 40203
+y(supplying)388 b(the)f(Jacobian)i(\(or)e(an)h(appro)-31
+b(ximation)391 b(to)c(it\))i(directly)-92 b(.)547 b(In)386
+b(the)i(case)f(of)g(the)h(iterativ)-31 b(e)389 b Fx(id)-25
+b(aspgmr)4000 41532 y FA(metho)31 b(d,)534 b(the)500
+b(pac)-31 b(k)-61 b(age)500 b(includes)g(an)g(algorithm)j(for)d(the)f
+(appro)-31 b(ximation)504 b(b)-31 b(y)500 b(di\256erence)f(quotien)-31
+b(ts)501 b(of)g(the)4000 42860 y(pro)31 b(duct)409 b(b)31
+b(et)-31 b(w)g(een)411 b(the)e(Jacobian)i(matrix)g(and)f(a)f(v)-31
+b(ector)410 b(of)g(appropriate)h(length.)614 b(Again,)421
+b(the)410 b(user)e(has)i(the)4000 44189 y(option)347
+b(of)f(pro)-31 b(viding)347 b(a)f(routine)g(for)g(this)g(op)31
+b(eration.)486 b(In)345 b(the)g(case)h(of)g Fx(id)-25
+b(aspgmr)p FA(,)349 b(the)d(preconditioning)i(m)-31 b(ust)4000
+45517 y(b)31 b(e)295 b(supplied)h(b)-31 b(y)296 b(the)g(user)f(in)g(t)
+-31 b(w)g(o)298 b(phases:)455 b(setup)296 b(\(prepro)31
+b(cessing)295 b(of)h(Jacobian)i(data\))f(and)f(solv)-31
+b(e.)469 b(While)296 b(there)4000 46845 y(is)277 b(no)h(default)g(c)-31
+b(hoice)278 b(of)g(preconditioner)h(analogous)g(to)f(the)g
+(di\256erence)e(quotien)-31 b(t)280 b(appro)-31 b(ximation)281
+b(in)c(the)h(direct)4000 48174 y(case,)461 b(the)442
+b(references)f([2)q(]-[5)q(],)461 b(together)444 b(with)f(the)f
+(example)i(and)e(demonstration)i(programs)f(included)g(with)4000
+49502 y Fx(id)-25 b(a)p FA(,)370 b(o\256er)e(considerable)i(assistance)
+g(in)g(building)g(preconditioners.)5660 50948 y(Eac)-31
+b(h)447 b Fx(id)-25 b(a)446 b FA(linear)g(solv)-31 b(er)446
+b(mo)31 b(dule)447 b(consists)f(of)g(\257v)-31 b(e)446
+b(routines,)466 b(dev)-31 b(oted)447 b(to)g(\(1\))g(memory)f(allo)31
+b(cation)450 b(and)4000 52276 y(initialization,)575 b(\(2\))532
+b(setup)d(of)h(the)g(matrix)i(data)f(in)-31 b(v)g(olv)g(ed,)573
+b(\(3\))531 b(solution)g(of)f(the)g(system,)571 b(\(4\))531
+b(monitoring)4000 53604 y(p)31 b(erformance,)446 b(and)431
+b(\(5\))g(freeing)g(of)f(memory)-92 b(.)677 b(The)430
+b(setup)g(and)h(solution)h(phases)d(are)h(separate)h(b)31
+b(ecause)430 b(the)4000 54933 y(ev)-61 b(aluation)528
+b(of)e(Jacobians)g(and)g(preconditioners)g(is)f(done)h(only)g(p)31
+b(erio)g(dically)528 b(during)d(the)h(in)-31 b(tegration,)568
+b(as)4000 56261 y(required)486 b(to)i(ac)-31 b(hiev)g(e)488
+b(con)-31 b(v)g(ergence.)846 b(The)487 b(call)h(list)f(within)i(the)e
+(cen)-31 b(tral)488 b Fx(id)-25 b(a)486 b FA(mo)31 b(dule)488
+b(to)f(eac)-31 b(h)487 b(of)h(the)f(\257v)-31 b(e)4000
+57589 y(asso)31 b(ciated)379 b(functions)g(is)e(\257xed,)j(th)-31
+b(us)378 b(allo)-31 b(wing)381 b(the)d(cen)-31 b(tral)379
+b(mo)31 b(dule)378 b(to)h(b)31 b(e)377 b(completely)j(indep)31
+b(enden)-31 b(t)378 b(of)h(the)4000 58918 y(linear)370
+b(system)f(metho)31 b(d.)5660 60364 y(These)382 b(mo)31
+b(dules)383 b(are)f(also)g(decomp)31 b(osed)383 b(in)f(another)h(w)-31
+b(a)g(y)-92 b(.)532 b(Eac)-31 b(h)383 b(of)f(the)g(mo)31
+b(dules)383 b Fx(id)-25 b(adense)p FA(,)386 b Fx(id)-25
+b(aband)p FA(,)4000 61692 y(and)385 b Fx(id)-25 b(aspgmr)384
+b FA(is)h(a)g(set)g(of)g(in)-31 b(terface)386 b(routines)f(built)h(on)f
+(top)h(of)f(a)h(generic)f(solv)-31 b(er)385 b(mo)31 b(dule,)390
+b(named)c Fx(dense)p FA(,)4000 63020 y Fx(band)p FA(,)568
+b(and)529 b Fx(spgmr)p FA(,)567 b(resp)31 b(ectiv)-31
+b(ely)-92 b(.)970 b(The)528 b(in)-31 b(terfaces)529 b(deal)g(with)h
+(the)e(use)g(of)g(these)g(metho)31 b(ds)529 b(in)f(the)h
+Fx(id)-25 b(a)4000 64349 y FA(con)-31 b(text,)474 b(whereas)451
+b(the)h(generic)g(solv)-31 b(er)451 b(is)h(indep)31 b(enden)-31
+b(t)452 b(of)g(the)f(con)-31 b(text.)741 b(While)452
+b(the)f(generic)h(solv)-31 b(ers)451 b(here)4000 65677
+y(w)-31 b(ere)430 b(generated)g(with)h Fx(sundials)e
+FA(in)h(mind,)446 b(our)429 b(in)-31 b(ten)g(tion)432
+b(is)e(that)h(they)f(b)31 b(e)429 b(usable)h(in)g(other)g(applications)
+4000 67005 y(as)406 b(general-purp)31 b(ose)406 b(solv)-31
+b(ers.)604 b(This)406 b(separation)i(also)f(allo)-31
+b(ws)408 b(for)e(an)-31 b(y)407 b(generic)g(solv)-31
+b(er)406 b(to)h(b)31 b(e)406 b(replaced)g(b)-31 b(y)407
+b(an)4000 68334 y(impro)-31 b(v)g(ed)371 b(v)-31 b(ersion,)370
+b(with)g(no)g(necessit)-31 b(y)369 b(to)h(revise)f(the)g
+Fx(id)-25 b(a)370 b FA(pac)-31 b(k)-61 b(age)370 b(elsewhere.)5660
+69779 y Fx(id)-25 b(a)418 b FA(also)g(pro)-31 b(vides)417
+b(a)h(preconditioner)h(mo)31 b(dule,)430 b Fx(id)-25
+b(abbdpre)p FA(,)431 b(that)418 b(w)-31 b(orks)418 b(in)g(conjunction)h
+(with)f Fx(nvec-)4000 71108 y(tor)p 6098 71108 368 45
+v 440 w(p)-74 b(arallel)299 b FA(and)g(generates)g(a)f(preconditioner)i
+(that)f(is)f(a)h(blo)31 b(c)-31 b(k-diagonal)302 b(matrix)e(with)f(eac)
+-31 b(h)299 b(blo)31 b(c)-31 b(k)299 b(b)31 b(eing)4000
+72436 y(a)369 b(band)h(matrix.)5660 73882 y(All)349 b(state)g
+(information)i(used)c(b)-31 b(y)348 b Fx(id)-25 b(a)348
+b FA(to)h(solv)-31 b(e)349 b(a)f(giv)-31 b(en)349 b(problem)g(is)f(sa)
+-31 b(v)g(ed)348 b(in)g(a)h(structure,)j(and)c(a)g(p)31
+b(oin)-31 b(ter)4000 75210 y(to)368 b(that)g(structure)e(is)h(returned)
+f(to)i(the)f(user.)491 b(There)367 b(is)g(no)g(global)i(data)f(in)f
+(the)g Fx(id)-25 b(a)367 b FA(pac)-31 b(k)-61 b(age,)369
+b(and)e(so)g(in)g(this)4000 76539 y(resp)31 b(ect)313
+b(it)i(is)f(reen)-31 b(tran)g(t.)475 b(State)316 b(information)h(sp)31
+b(eci\257c)313 b(to)i(the)f(linear)h(solv)-31 b(er)315
+b(is)f(sa)-31 b(v)g(ed)315 b(in)f(a)g(separate)h(structure,)4000
+77867 y(a)419 b(p)31 b(oin)-31 b(ter)420 b(to)g(whic)-31
+b(h)420 b(resides)f(in)g(the)g Fx(id)-25 b(a)419 b FA(memory)i
+(structure.)642 b(The)419 b(reen)-31 b(trancy)419 b(of)h
+Fx(id)-25 b(a)419 b FA(w)-31 b(as)420 b(motiv)-61 b(ated)422
+b(b)-31 b(y)p Black Black eop
+%%Page: 16 24
+16 23 bop Black 0 2701 a FB(16)36248 b(Co)35 b(de)426
+b(Organization)p 0 3144 48001 45 v Black 0 6974 a FA(the)i(situation)i
+(where)e(t)-31 b(w)g(o)430 b(or)d(more)h(problems)h(are)e(solv)-31
+b(ed)429 b(b)-31 b(y)428 b(in)-31 b(termixed)430 b(calls)e(to)h(the)f
+(pac)-31 b(k)-61 b(age)429 b(from)g(one)0 8302 y(user)368
+b(program.)p Black Black eop
+%%Page: 17 25
+17 24 bop Black Black 4000 15276 a Fw(Chapter)861 b(5)4000
+20811 y Fz(Using)1033 b(ID)-86 b(A)4000 26567 y FA(This)410
+b(c)-31 b(hapter)411 b(is)e(concerned)h(with)h(the)f(use)f(of)i
+Fx(id)-25 b(a)409 b FA(for)h(the)g(in)-31 b(tegration)413
+b(of)d(D)-31 b(AEs.)615 b(The)410 b(follo)-31 b(wing)413
+b(sections)4000 27895 y(treat)461 b(the)f(header)f(\257les,)483
+b(the)460 b(la)-31 b(y)g(out)462 b(of)f(the)f(user's)f(main)i(program,)
+484 b(description)460 b(of)h(the)f Fx(id)-25 b(a)459
+b FA(user-callable)4000 29224 y(functions,)479 b(and)455
+b(description)i(of)f(user-supplied)f(functions.)753 b(The)455
+b(listings)j(of)e(the)f(sample)i(programs)f(in)g(the)4000
+30552 y(companion)e(do)31 b(cumen)-31 b(t)453 b([10)r(])f(ma)-31
+b(y)454 b(also)f(b)31 b(e)451 b(helpful.)742 b(Those)453
+b(co)31 b(des)452 b(ma)-31 b(y)453 b(b)31 b(e)451 b(used)h(as)g
+(templates)i(\(with)g(the)4000 31880 y(remo)-31 b(v)-61
+b(al)370 b(of)g(some)g(lines)f(in)-31 b(v)g(olv)g(ed)372
+b(in)d(testing\),)j(and)d(are)g(included)h(in)g(the)f
+Fx(id)-25 b(a)369 b FA(pac)-31 b(k)-61 b(age.)5660 33209
+y(The)428 b(user)e(should)i(b)31 b(e)427 b(a)-31 b(w)g(are)428
+b(that)h(not)f(all)h(linear)f(solv)-31 b(er)428 b(mo)31
+b(dules)428 b(are)f(compatible)j(with)e(all)h Fx(nvector)4000
+34537 y FA(implemen)-31 b(tations.)461 b(F)-92 b(or)260
+b(example,)284 b Fx(nvector)p 23895 34537 368 45 v 441
+w(p)-74 b(arallel)262 b FA(is)f(not)g(compatible)j(with)e(the)f(direct)
+g(dense)g(or)g(direct)4000 35866 y(band)424 b(linear)h(solv)-31
+b(ers,)438 b(since)424 b(these)g(linear)h(solv)-31 b(er)425
+b(mo)31 b(dules)424 b(need)g(to)h(form)f(the)h(complete)g(system)g
+(Jacobian.)4000 37194 y(The)353 b Fx(id)-25 b(adense)354
+b FA(and)f Fx(id)-25 b(aband)354 b FA(mo)31 b(dules)353
+b(can)h(only)g(b)31 b(e)352 b(used)h(with)h Fx(nvector)p
+38251 37194 V 441 w(serial)p FA(.)486 b(The)354 b(preconditioner)4000
+38522 y(mo)31 b(dule)370 b Fx(id)-25 b(abbdpre)370 b
+FA(can)f(only)i(b)31 b(e)368 b(used)h(with)h Fx(nvector)p
+29572 38522 V 441 w(p)-74 b(arallel)p FA(.)5660 39851
+y Fx(id)-25 b(a)272 b FA(uses)f(v)-61 b(arious)272 b(constan)-31
+b(ts)273 b(for)e(b)31 b(oth)273 b(input)f(and)g(output.)461
+b(These)272 b(are)f(de\257ned)h(as)f(needed)h(in)g(this)g(c)-31
+b(hapter,)4000 41179 y(but)369 b(for)h(con)-31 b(v)g(enience)370
+b(are)f(also)h(listed)g(separately)h(in)e(Chapter)h(9.)4000
+44801 y Fu(5.1)1793 b(Data)598 b(t)-50 b(yp)50 b(es)4000
+47226 y FA(The)312 b Fy(sundialstypes.h)h FA(\257le)e(con)-31
+b(tains)313 b(the)f(de\257nition)h(of)f(the)f(t)-31 b(yp)31
+b(e)312 b Fy(realtype)p FA(,)324 b(whic)-31 b(h)312 b(is)g(used)e(b)-31
+b(y)312 b(the)f Fx(sundi-)4000 48554 y(als)375 b FA(solv)-31
+b(ers)375 b(for)h(all)g(\260oating-p)31 b(oin)-31 b(t)379
+b(data.)513 b(The)375 b(t)-31 b(yp)31 b(e)376 b Fy(realtype)g
+FA(can)g(b)31 b(e)375 b Fy(float)p FA(,)j Fy(double)p
+FA(,)g(or)d Fy(long)582 b(double)p FA(,)4000 49883 y(with)300
+b(the)g(default)h(b)31 b(eing)299 b Fy(double)p FA(.)470
+b(The)300 b(user)e(can)h(c)-31 b(hange)301 b(the)e(precision)h(of)f
+(the)h Fx(sundials)e FA(solv)-31 b(ers)300 b(arithmetic)4000
+51211 y(at)370 b(the)f(con\257guration)j(stage)e(\(see)f
+Fs(x)p FA(2.2\).)5660 52539 y(Additionally)-92 b(,)296
+b(based)272 b(on)h(the)f(curren)-31 b(t)272 b(precision,)292
+b Fy(sundialstypes.h)275 b FA(de\257nes)c Fy(BIG)p 41372
+52539 349 45 v 419 w(REAL)i FA(to)g(b)31 b(e)271 b(the)i(largest)4000
+53868 y(v)-61 b(alue)290 b(represen)-31 b(table)290 b(as)g(a)g
+Fy(realtype)p FA(,)307 b Fy(SMALL)p 23807 53868 V 419
+w(REAL)290 b FA(to)g(b)31 b(e)290 b(the)g(smallest)h(v)-61
+b(alue)290 b(represen)-31 b(table)290 b(as)f(a)h Fy(realtype)p
+FA(,)4000 55196 y(and)369 b Fy(UNIT)p 8546 55196 V 419
+w(ROUNDOFF)i FA(to)f(b)31 b(e)368 b(the)i(di\256erence)e(b)31
+b(et)-31 b(w)g(een)370 b(1)p Fp(:)p FA(0)h(and)e(the)h(minim)-31
+b(um)371 b Fy(realtype)g FA(greater)e(than)h(1)p Fp(:)p
+FA(0.)5660 56524 y(Within)382 b Fx(sundials)p FA(,)g(real)f(constan)-31
+b(ts)381 b(are)f(set)g(b)-31 b(y)381 b(w)-31 b(a)g(y)381
+b(of)g(a)g(macro)g(called)g Fy(RCONST)p FA(.)h(It)e(is)g(this)h(macro)g
+(that)4000 57853 y(needs)392 b(the)h(abilit)-31 b(y)396
+b(to)d(branc)-31 b(h)393 b(on)g(the)g(de\257nition)h
+Fy(realtype)p FA(.)565 b(In)392 b(ANSI)h Fx(C)p FA(,)g(a)g
+(\260oating-p)31 b(oin)-31 b(t)396 b(constan)-31 b(t)395
+b(with)4000 59181 y(no)353 b(su\261x)g(is)f(stored)h(as)f(a)h
+Fy(double)p FA(.)488 b(Placing)355 b(the)e(su\261x)f(\\F")h(at)h(the)f
+(end)f(of)h(a)g(\260oating)i(p)31 b(oin)-31 b(t)354 b(constan)-31
+b(t)354 b(mak)-31 b(es)4000 60510 y(it)370 b(a)f Fy(float)p
+FA(,)i(whereas)e(using)g(the)h(su\261x)f(\\L")h(mak)-31
+b(es)370 b(it)g(a)f Fy(long)582 b(double)p FA(.)493 b(F)-92
+b(or)369 b(example,)p Black Black 4000 62546 a Fy(#define)582
+b(A)f(1.0)4000 63875 y(#define)h(B)f(1.0F)4000 65203
+y(#define)h(C)f(1.0L)4000 67240 y FA(de\257nes)463 b
+Fy(A)g FA(to)h(b)31 b(e)463 b(a)h Fy(double)g FA(constan)-31
+b(t)464 b(equal)h(to)f(1)p Fp(:)p FA(0,)489 b Fy(B)463
+b FA(to)h(b)31 b(e)463 b(a)g Fy(float)h FA(constan)-31
+b(t)465 b(equal)f(to)h(1)p Fp(:)p FA(0,)488 b(and)464
+b Fy(C)f FA(to)4000 68568 y(b)31 b(e)450 b(a)h Fy(long)582
+b(double)451 b FA(constan)-31 b(t)452 b(equal)g(to)f(1)p
+Fp(:)p FA(0.)739 b(The)450 b(macro)i(call)g Fy(RCONST\(1.0\))g
+FA(automatically)j(expands)c(to)4000 69897 y Fy(1.0)401
+b FA(if)h Fy(realtype)f FA(is)g Fy(double)p FA(,)410
+b(to)402 b Fy(1.0F)f FA(if)h Fy(realtype)f FA(is)g Fy(float)p
+FA(,)410 b(or)401 b(to)h Fy(1.0L)f FA(if)g Fy(realtype)h
+FA(is)f Fy(long)582 b(double)p FA(.)4000 71225 y Fx(sundials)368
+b FA(uses)g(the)i Fy(RCONST)g FA(macro)g(in)-31 b(ternally)371
+b(to)f(declare)g(all)g(of)g(its)f(\260oating-p)31 b(oin)-31
+b(t)373 b(constan)-31 b(ts.)5660 72553 y(A)423 b(user)f(program)i(whic)
+-31 b(h)424 b(uses)d(the)j(t)-31 b(yp)31 b(e)423 b Fy(realtype)h
+FA(and)f(the)g Fy(RCONST)g FA(macro)h(to)g(handle)f(\260oating-p)31
+b(oin)-31 b(t)4000 73882 y(constan)g(ts)443 b(is)e(precision-indep)31
+b(enden)-31 b(t)442 b(except)g(for)g(an)-31 b(y)442 b(calls)g(to)g
+(precision-sp)31 b(eci\257c)442 b(standard)g(math)g(library)4000
+75210 y(functions.)736 b(\(Our)450 b(example)h(programs)g(use)e(b)31
+b(oth)451 b Fy(realtype)g FA(and)f Fy(RCONST)p FA(.\))h(Users)e(can,)
+471 b(ho)-31 b(w)g(ev)g(er,)472 b(use)450 b(the)4000
+76539 y(t)-31 b(yp)31 b(e)318 b Fy(double)p FA(,)328
+b Fy(float)p FA(,)h(or)317 b Fy(long)581 b(double)318
+b FA(in)f(their)h(co)31 b(de)317 b(\(assuming)h(the)f(t)-31
+b(yp)31 b(edef)318 b(for)f Fy(realtype)h FA(matc)-31
+b(hes)318 b(this)4000 77867 y(c)-31 b(hoice\).)488 b(Th)-31
+b(us,)356 b(a)351 b(previously)h(existing)h(piece)f(of)g(ANSI)f
+Fx(C)g FA(co)31 b(de)352 b(can)f(use)g Fx(sundials)f
+FA(without)k(mo)31 b(difying)354 b(the)p Black Black
+eop
+%%Page: 18 26
+18 25 bop Black 0 2701 a FB(18)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black 0 6974 a FA(co)31 b(de)454
+b(to)g(use)f Fy(realtype)p FA(,)476 b(so)453 b(long)i(as)f(the)g
+Fx(sundials)e FA(libraries)i(use)f(the)h(correct)f(precision)h(\(for)h
+(details)f(see)0 8302 y Fs(x)p FA(2.2\).)0 11935 y Fu(5.2)1793
+b(Header)598 b(\257les)0 14360 y FA(The)352 b(calling)i(program)f(m)-31
+b(ust)353 b(include)f(sev)-31 b(eral)353 b(header)e(\257les)h(so)g
+(that)h(v)-61 b(arious)352 b(macros)h(and)f(data)h(t)-31
+b(yp)31 b(es)352 b(can)g(b)31 b(e)0 15688 y(used.)492
+b(The)369 b(header)g(\257le)h(that)g(is)f(alw)-31 b(a)g(ys)372
+b(required)c(is:)p Black 1660 17773 a Fs(\262)p Black
+554 w Fy(ida.h)p FA(,)551 b(the)514 b(header)f(\257le)h(for)g
+Fx(id)-25 b(a)p FA(,)550 b(whic)-31 b(h)515 b(de\257nes)e(the)h(sev)-31
+b(eral)514 b(t)-31 b(yp)31 b(es)513 b(and)h(v)-61 b(arious)514
+b(constan)-31 b(ts,)552 b(and)2767 19102 y(includes)370
+b(function)h(protot)-31 b(yp)31 b(es.)0 21187 y(Note)442
+b(that)h Fy(ida.h)e FA(includes)h Fy(sundialstypes.h)p
+FA(,)461 b(whic)-31 b(h)443 b(de\257nes)d(the)h(t)-31
+b(yp)31 b(es)442 b Fy(realtype)g FA(and)f Fy(booleantype)0
+22515 y FA(and)369 b(the)h(constan)-31 b(ts)370 b Fy(FALSE)g
+FA(and)f Fy(TRUE)p FA(.)1660 23843 y(The)484 b(calling)i(program)f(m)
+-31 b(ust)484 b(also)g(include)h(an)f Fx(nvector)f FA(implemen)-31
+b(tation)488 b(header)c(\257le)g(\(see)f(Chapter)0 25172
+y(6)473 b(for)f(details\).)804 b(F)-92 b(or)471 b(the)i(t)-31
+b(w)g(o)474 b Fx(nvector)e FA(implemen)-31 b(tations)476
+b(that)e(are)e(included)h(in)f(the)h Fx(id)-25 b(a)472
+b FA(pac)-31 b(k)-61 b(age,)500 b(the)0 26500 y(corresp)31
+b(onding)369 b(header)g(\257les)g(are:)p Black 1660 28585
+a Fs(\262)p Black 554 w Fy(nvector)p 6904 28585 349 45
+v 420 w(serial.h)p FA(,)i(whic)-31 b(h)370 b(de\257nes)e(the)i(serial)f
+(implemen)-31 b(tation)374 b Fx(nvector)p 36817 28585
+368 45 v 440 w(serial)p FA(;)p Black 1660 30735 a Fs(\262)p
+Black 554 w Fy(nvector)p 6904 30735 349 45 v 420 w(parallel.h)p
+FA(,)d(whic)-31 b(h)370 b(de\257nes)e(the)i(parallel)h(MPI)e(implemen)
+-31 b(tation,)374 b Fx(nvector)p 41863 30735 368 45 v
+440 w(p)-74 b(arallel)p FA(.)0 32820 y(Note)515 b(that)h(b)31
+b(oth)515 b(these)f(\257les)g(include)h(in)g(turn)f(the)h(header)f
+(\257le)h Fy(nvector.h)g FA(whic)-31 b(h)516 b(de\257nes)d(the)i
+(abstract)0 34148 y Fy(N)p 651 34148 349 45 v 419 w(Vector)369
+b FA(t)-31 b(yp)31 b(e.)1660 35477 y(Finally)-92 b(,)525
+b(a)492 b(linear)h(solv)-31 b(er)493 b(mo)31 b(dule)493
+b(header)e(\257le)i(is)f(required.)861 b(The)492 b(header)g(\257les)g
+(corresp)31 b(onding)492 b(to)h(the)0 36805 y(v)-61 b(arious)369
+b(linear)h(solv)-31 b(er)370 b(options)g(in)g Fx(id)-25
+b(a)369 b FA(are:)p Black 1660 38890 a Fs(\262)p Black
+554 w Fy(idadense.h)p FA(,)523 b(whic)-31 b(h)492 b(is)e(used)g(with)i
+(the)f(dense)f(direct)g(linear)i(solv)-31 b(er)491 b(in)g(the)f(con)-31
+b(text)493 b(of)e Fx(id)-25 b(a)p FA(.)856 b(This)2767
+40219 y(in)411 b(turn)g(includes)g(a)g(header)f(\257le)h(\()p
+Fy(dense.h)p FA(\))i(whic)-31 b(h)411 b(de\257nes)f(the)h
+Fy(DenseMat)h FA(t)-31 b(yp)31 b(e)411 b(and)g(corresp)31
+b(onding)2767 41547 y(accessor)369 b(macros;)p Black
+1660 43697 a Fs(\262)p Black 554 w Fy(idaband.h)p FA(,)330
+b(whic)-31 b(h)319 b(is)f(used)f(with)i(the)f(band)h(direct)f(linear)g
+(solv)-31 b(er)319 b(in)f(the)g(con)-31 b(text)320 b(of)e
+Fx(id)-25 b(a)p FA(.)476 b(This)318 b(in)g(turn)2767
+45025 y(includes)470 b(a)f(header)g(\257le)g(\()p Fy(band.h)p
+FA(\))h(whic)-31 b(h)470 b(de\257nes)f(the)g Fy(BandMat)h
+FA(t)-31 b(yp)31 b(e)469 b(and)g(corresp)31 b(onding)469
+b(accessor)2767 46353 y(macros;)p Black 1660 48503 a
+Fs(\262)p Black 554 w Fy(idaspgmr.h)p FA(,)386 b(whic)-31
+b(h)382 b(is)f(used)g(with)h(the)g(Krylo)-31 b(v)382
+b(solv)-31 b(er)381 b Fx(spgmr)f FA(in)i(the)f(con)-31
+b(text)383 b(of)f Fx(id)-25 b(a)p FA(.)528 b(This)382
+b(in)f(turn)2767 49831 y(includes)443 b(a)f(header)g(\257le)g(\()p
+Fy(iterative.h)p FA(\))j(whic)-31 b(h)443 b(en)-31 b(umerates)442
+b(the)h(kind)f(of)h(preconditioning)h(and)f(the)2767
+51159 y(c)-31 b(hoices)370 b(for)f(the)h(Gram-Sc)-31
+b(hmidt)371 b(pro)31 b(cess.)0 54792 y Fu(5.3)1793 b(A)598
+b(sk)-50 b(eleton)599 b(of)f(the)g(user's)i(main)e(program)0
+57217 y FA(The)522 b(follo)-31 b(wing)525 b(is)d(a)g(sk)-31
+b(eleton)523 b(of)g(the)f(user's)e(main)j(program)g(\(or)f(calling)i
+(program\))f(for)f(the)g(in)-31 b(tegration)0 58545 y(of)473
+b(a)f(D)-31 b(AE)473 b(IVP)-92 b(.)472 b(Some)h(steps)f(are)g(indep)31
+b(enden)-31 b(t)473 b(of)g(the)g Fx(nvector)f FA(implemen)-31
+b(tation)476 b(used;)524 b(where)472 b(this)h(is)0 59874
+y(not)434 b(the)f(case,)450 b(usage)433 b(sp)31 b(eci\257cations)434
+b(are)f(giv)-31 b(en)434 b(for)g(the)f(t)-31 b(w)g(o)435
+b(implemen)-31 b(tations)437 b(pro)-31 b(vided)434 b(with)g
+Fx(id)-25 b(a)p FA(:)620 b(steps)0 61202 y(mark)-31 b(ed)499
+b(with)h([)p FB(P)p FA(])g(corresp)31 b(ond)498 b(to)h
+Fx(nvector)p 20681 61202 368 45 v 441 w(p)-74 b(arallel)p
+FA(,)533 b(while)500 b(steps)e(mark)-31 b(ed)500 b(with)g([)p
+FB(S)p FA(])f(corresp)31 b(ond)498 b(to)0 62530 y Fx(nvector)p
+4727 62530 V 441 w(serial)p FA(.)p Black 553 64616 a(1.)p
+Black 493 w FB([P])424 b(Initialize)f(MPI)1906 66497
+y FA(Call)526 b Fy(MPI)p 6211 66497 349 45 v 418 w(Init\(&argc,)583
+b(&argv\);)601 b FA(to)525 b(initialize)h(MPI)d(if)h(used)f(b)-31
+b(y)523 b(the)h(user's)e(program,)564 b(aside)523 b(from)1906
+67826 y(the)402 b(in)-31 b(ternal)402 b(use)e(in)i Fx(nvector)p
+15964 67826 368 45 v 440 w(p)-74 b(arallel)p FA(.)590
+b(Here)400 b Fy(argc)h FA(and)h Fy(argv)f FA(are)g(the)g(command)i
+(line)e(argumen)-31 b(t)1906 69154 y(coun)g(ter)370 b(and)g(arra)-31
+b(y)369 b(receiv)-31 b(ed)370 b(b)-31 b(y)369 b Fy(main)p
+FA(.)p Black 553 71447 a(2.)p Black 493 w FB(Set)426
+b(problem)f(dimensions)1906 73328 y FA([)p FB(S)p FA(])371
+b(Set)e Fy(N)p FA(,)h(the)f(problem)h(size)f Fp(N)121
+b FA(.)1906 75210 y([)p FB(P)p FA(])394 b(Set)f Fy(Nlocal)p
+FA(,)400 b(the)393 b(lo)31 b(cal)395 b(v)-31 b(ector)393
+b(length)i(\(the)e(sub-v)-31 b(ector)393 b(length)h(for)f(this)h(pro)31
+b(cessor\);)404 b Fy(N)p FA(,)393 b(the)h(global)1906
+76539 y(v)-31 b(ector)375 b(length)g(\(the)f(problem)h(size)f
+Fp(N)121 b FA(,)375 b(and)f(the)g(sum)f(of)i(all)g(the)f(v)-61
+b(alues)374 b(of)g Fy(Nlocal)p FA(\);)j(and)d(the)g(activ)-31
+b(e)376 b(set)1906 77867 y(of)370 b(pro)31 b(cessors.)p
+Black Black eop
+%%Page: 19 27
+19 26 bop Black 4000 2701 a FB(5.3)425 b(A)g(sk)-35 b(eleton)425
+b(of)g(the)g(user's)g(main)f(program)23238 b(19)p 4000
+3144 48001 45 v Black Black 4553 6974 a FA(3.)p Black
+493 w FB(Set)426 b(v)-35 b(ector)424 b(of)h(initial)e(v)-71
+b(alues)5906 8856 y FA(T)-92 b(o)336 b(set)f(the)g(v)-31
+b(ectors)336 b Fy(y0)f FA(and)g Fy(yp0)h FA(to)f(initial)j(v)-61
+b(alues)335 b(for)h Fp(y)374 b FA(and)335 b Fp(y)33512
+8454 y Fo(0)33822 8856 y FA(,)342 b(use)335 b(functions)h(de\257ned)f
+(b)-31 b(y)335 b(a)h(particular)5906 10184 y Fx(nvector)276
+b FA(implemen)-31 b(tation.)465 b(F)-92 b(or)274 b(the)i(t)-31
+b(w)g(o)277 b Fx(nvector)e FA(implemen)-31 b(tations)279
+b(pro)-31 b(vided,)295 b(if)276 b(a)f Fy(realtype)h FA(arra)-31
+b(y)5906 11512 y Fy(ydata)370 b FA(already)g(exists,)g(con)-31
+b(taining)372 b(the)e(initial)i(v)-61 b(alues)369 b(of)h
+Fp(y)40 b FA(,)369 b(mak)-31 b(e)370 b(the)f(call:)5906
+13394 y([)p FB(S)p FA(])i Fy(y0)581 b(=)g(NV)p 11735
+13394 349 45 v 419 w(Make)p 14478 13394 V 419 w(Serial\(N,)i(ydata\);)
+5906 15276 y FA([)p FB(P)p FA(])371 b Fy(y0)581 b(=)g(NV)p
+11898 15276 V 419 w(Make)p 14641 15276 V 419 w(Parallel\(comm,)i
+(Nlocal,)g(N,)e(ydata\);)5906 17158 y FA(Otherwise,)370
+b(mak)-31 b(e)371 b(the)e(call:)5906 19040 y([)p FB(S)p
+FA(])i Fy(y0)581 b(=)g(NV)p 11735 19040 V 419 w(New)p
+13897 19040 V 419 w(Serial\(N\);)5906 20922 y FA([)p
+FB(P)p FA(])371 b Fy(y0)581 b(=)g(NV)p 11898 20922 V
+419 w(New)p 14060 20922 V 419 w(Parallel\(comm,)i(Nlocal,)f(N\);)5906
+22803 y FA(and)370 b(load)g(initial)i(v)-61 b(alues)369
+b(in)-31 b(to)371 b(the)f(structure)e(de\257ned)h(b)-31
+b(y:)5906 24685 y([)p FB(S)p FA(])371 b Fy(NV)p 8830
+24685 V 418 w(DATA)p 11572 24685 V 419 w(S\(y0\))5906
+26567 y FA([)p FB(P)p FA(])g Fy(NV)p 8993 26567 V 418
+w(DATA)p 11735 26567 V 419 w(P\(y0\))5906 28449 y FA(Here)540
+b Fy(comm)h FA(is)f(the)h(MPI)e(comm)-31 b(unicator,)587
+b(set)540 b(in)g(one)h(of)g(t)-31 b(w)g(o)542 b(w)-31
+b(a)g(ys:)836 b(If)540 b(a)g(prop)31 b(er)540 b(subset)f(of)i(activ)-31
+b(e)5906 29777 y(pro)31 b(cessors)374 b(is)g(to)h(b)31
+b(e)375 b(used,)g Fy(comm)g FA(m)-31 b(ust)376 b(b)31
+b(e)374 b(set)g(b)-31 b(y)375 b(suitable)h(MPI)e(calls.)510
+b(Otherwise,)377 b(to)e(sp)31 b(ecify)375 b(that)h(all)5906
+31106 y(pro)31 b(cessors)368 b(are)h(to)h(b)31 b(e)369
+b(used,)g Fy(comm)g FA(m)-31 b(ust)370 b(b)31 b(e)369
+b Fy(MPI)p 27488 31106 V 419 w(COMM)p 30231 31106 V 419
+w(WORLD)p FA(.)5906 32987 y(The)h(initial)i(conditions)f(for)e
+Fp(y)18952 32586 y Fo(0)19631 32987 y FA(are)g(set)g(similarly)-92
+b(.)p Black 4553 35382 a(4.)p Black 493 w FB(Create)426
+b Fx(id)-25 b(a)425 b FB(ob)71 b(ject)5906 37264 y FA(Call)428
+b Fy(ida)p 10113 37264 V 419 w(mem)582 b(=)f(IDACreate\(\);)457
+b FA(to)427 b(create)f(the)h Fx(id)-25 b(a)426 b FA(memory)i(blo)31
+b(c)-31 b(k.)665 b Fy(IDACreate)427 b FA(returns)e(a)i(p)31
+b(oin)-31 b(ter)5906 38592 y(to)370 b(the)g Fx(id)-25
+b(a)369 b FA(memory)h(structure.)492 b(See)369 b Fs(x)p
+FA(5.4.1)j(for)d(details.)p Black 4553 40987 a(5.)p Black
+493 w FB(Allo)35 b(cate)425 b(in)-35 b(ternal)425 b(memory)5906
+42869 y FA(Call)360 b Fy(IDAMalloc\(...\);)j FA(to)c(pro)-31
+b(vide)358 b(required)f(problem)h(sp)31 b(eci\257cations,)362
+b(allo)31 b(cate)360 b(in)-31 b(ternal)359 b(memory)g(for)5906
+44197 y Fx(id)-25 b(a)p FA(,)306 b(and)289 b(initialize)j
+Fx(id)-25 b(a)p FA(.)466 b Fy(IDAMalloc)290 b FA(returns)e(an)i(error)e
+(\260ag)h(to)h(indicate)h(success)c(or)i(an)h(illegal)h(argumen)-31
+b(t)5906 45525 y(v)-61 b(alue.)494 b(See)369 b Fs(x)p
+FA(5.4.1)i(for)e(details.)p Black 4553 47920 a(6.)p Black
+493 w FB(Set)426 b(optional)e(inputs)5906 49802 y FA(Call)358
+b Fy(IDASet*)e FA(functions)h(to)f(c)-31 b(hange)357
+b(from)f(their)g(default)h(v)-61 b(alues)356 b(an)-31
+b(y)356 b(optional)j(inputs)d(that)g(con)-31 b(trol)358
+b(the)5906 51130 y(b)31 b(eha)-31 b(vior)371 b(of)e Fx(id)-25
+b(a)p FA(.)493 b(See)369 b Fs(x)p FA(5.4.5)i(for)e(details.)p
+Black 4553 53525 a(7.)p Black 493 w FB(A)-35 b(ttac)g(h)424
+b(linear)h(solv)-35 b(er)425 b(mo)35 b(dule)5906 55407
+y FA(Initialize)372 b(the)d(linear)h(solv)-31 b(er)370
+b(mo)31 b(dule)370 b(with)h(one)e(of)h(the)f(follo)-31
+b(wing)373 b(calls)d(\(for)g(details)g(see)f Fs(x)p FA(5.4.2\):)5906
+57289 y([)p FB(S)p FA(])i Fy(flag)581 b(=)h(IDADense\(...\);)5906
+59170 y FA([)p FB(S)p FA(])371 b Fy(flag)581 b(=)h(IDABand\(...\);)5906
+61052 y(flag)g(=)f(IDASpgmr\(...\);)p Black 4553 63447
+a FA(8.)p Black 493 w FB(Set)426 b(linear)e(solv)-35
+b(er)425 b(optional)f(inputs)5906 65329 y FA(Call)295
+b Fy(IDA*Set*)e FA(functions)g(from)g(the)g(selected)g(linear)g(solv)
+-31 b(er)293 b(mo)31 b(dule)293 b(to)g(c)-31 b(hange)293
+b(optional)i(inputs)e(sp)31 b(eci\257c)5906 66657 y(to)370
+b(that)h(linear)f(solv)-31 b(er.)493 b(See)369 b Fs(x)p
+FA(5.4.5)i(for)e(details.)p Black 4553 69052 a(9.)p Black
+493 w FB(Correct)426 b(initial)d(v)-71 b(alues)5906 70934
+y FA(Optionally)-92 b(,)373 b(call)d Fy(IDACalcIC)g FA(to)g(correct)f
+(the)h(initial)i(v)-61 b(alues)369 b Fy(y0)g FA(and)h
+Fy(yp0)p FA(.)p Black 4000 73328 a(10.)p Black 493 w
+FB(Adv)-71 b(ance)426 b(solution)f(in)f(time)5906 75210
+y FA(F)-92 b(or)588 b(eac)-31 b(h)589 b(p)31 b(oin)-31
+b(t)589 b(at)g(whic)-31 b(h)590 b(output)f(is)g(desired,)643
+b(call)589 b Fy(flag)582 b(=)f(IDASolve\(ida)p 41770
+75210 V 420 w(mem,)h(tout,)g(&tret,)5906 76539 y(yret,)g(ypret,)g
+(itask\);)540 b FA(Set)483 b Fy(itask)g FA(to)g(sp)31
+b(ecify)483 b(the)g(return)f(mo)31 b(de.)833 b(The)482
+b(v)-31 b(ector)484 b Fy(yret)f FA(\(whic)-31 b(h)484
+b(can)5906 77867 y(b)31 b(e)360 b(the)h(same)f(as)h(the)f(v)-31
+b(ector)361 b Fy(y0)g FA(ab)31 b(o)-31 b(v)g(e\))362
+b(will)g(con)-31 b(tain)362 b Fp(y)40 b FA(\()p Fp(t)p
+FA(\),)363 b(while)e(the)g(v)-31 b(ector)361 b Fy(ypret)g
+FA(will)h(con)-31 b(tain)362 b Fp(y)50122 77465 y Fo(0)50432
+77867 y FA(\()p Fp(t)p FA(\).)p Black Black eop
+%%Page: 20 28
+20 27 bop Black 0 2701 a FB(20)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black 1906 6974 a FA(See)369
+b Fs(x)p FA(5.4.4)j(for)d(details.)p Black 0 9331 a(11.)p
+Black 493 w FB(Get)425 b(optional)g(outputs)1906 11213
+y FA(Call)371 b Fy(IDA*Get*)g FA(functions)f(to)g(obtain)h(optional)g
+(output.)494 b(See)369 b Fs(x)p FA(5.4.7)j(for)d(details.)p
+Black 0 13570 a(12.)p Black 493 w FB(Deallo)35 b(cate)425
+b(memory)h(for)f(solution)g(v)-35 b(ector)1906 15452
+y FA(Up)31 b(on)275 b(completion)h(of)f(the)f(in)-31
+b(tegration,)297 b(deallo)31 b(cate)277 b(memory)e(for)f(the)g(v)-31
+b(ectors)275 b Fy(yret)f FA(and)h Fy(ypret)f FA(b)-31
+b(y)275 b(calling)1906 16780 y(the)370 b(destructor)f(function)i
+(de\257ned)d(b)-31 b(y)370 b(the)f Fx(nvector)g FA(implemen)-31
+b(tation:)1906 18662 y([)p FB(S)p FA(])371 b Fy(NV)p
+4830 18662 349 45 v 418 w(Destroy)p 9315 18662 V 420
+w(Serial\(yret\);)1906 20544 y FA([)p FB(P)p FA(])g Fy(NV)p
+4993 20544 V 418 w(Destroy)p 9478 20544 V 420 w(Parallel\(yret\);)1906
+22426 y FA(and)f(similarly)h(for)e Fy(ypret)p FA(.)p
+Black 0 24783 a(13.)p Black 493 w FB(F)-106 b(ree)426
+b(solv)-35 b(er)425 b(memory)1906 26664 y Fy(IDAFree\(ida)p
+8367 26664 V 420 w(mem\);)370 b FA(to)g(free)f(the)g(memory)i(allo)31
+b(cated)371 b(for)e Fx(id)-25 b(a)p FA(.)p Black 0 29022
+a(14.)p Black 493 w FB([P])424 b(Finalize)g(MPI)1906
+30903 y FA(Call)371 b Fy(MPI)p 6056 30903 V 419 w(Finalize\(\);)g
+FA(to)f(terminate)h(MPI.)0 34650 y Fu(5.4)1793 b(User-callable)599
+b(functions)0 37105 y FA(This)480 b(section)g(describ)31
+b(es)478 b(the)i Fx(id)-25 b(a)479 b FA(functions)h(that)h(are)e
+(called)i(b)-31 b(y)479 b(the)h(user)e(to)i(set)g(up)f(and)g(solv)-31
+b(e)480 b(a)g(D)-31 b(AE.)0 38433 y(Some)510 b(of)g(these)g(are)f
+(required.)913 b(Ho)-31 b(w)g(ev)g(er,)547 b(starting)511
+b(with)f Fs(x)p FA(5.4.5,)548 b(the)509 b(functions)i(listed)f(in)-31
+b(v)g(olv)g(e)512 b(optional)0 39762 y(inputs/outputs)402
+b(or)d(restarting,)409 b(and)400 b(those)h(paragraphs)f(can)g(b)31
+b(e)399 b(skipp)31 b(ed)400 b(for)g(a)g(casual)h(use)e(of)h
+Fx(id)-25 b(a)p FA(.)585 b(In)399 b(an)-31 b(y)0 41090
+y(case,)370 b(refer)e(to)i Fs(x)p FA(5.3)g(for)g(the)f(correct)g(order)
+g(of)g(these)g(calls.)0 44275 y Ft(5.4.1)1495 b(ID)-42
+b(A)499 b(initialization)i(and)e(deallo)42 b(cation)500
+b(functions)0 46348 y FA(The)420 b(follo)-31 b(wing)423
+b(three)c(functions)i(m)-31 b(ust)420 b(b)31 b(e)419
+b(called)i(in)e(the)h(order)f(listed.)644 b(The)420 b(last)h(one)e(is)h
+(to)g(b)31 b(e)419 b(called)i(only)0 47677 y(after)395
+b(the)g(D)-31 b(AE)394 b(solution)j(is)d(complete,)403
+b(as)394 b(it)i(frees)d(the)i Fx(id)-25 b(a)395 b FA(memory)g(blo)31
+b(c)-31 b(k)395 b(created)g(and)g(allo)31 b(cated)397
+b(b)-31 b(y)395 b(the)0 49005 y(\257rst)369 b(t)-31 b(w)g(o)371
+b(calls.)p 0 50960 5984 45 v 0 52301 45 1341 v 376 51969
+a Fy(IDACreate)p 5939 52301 V 0 52345 5984 45 v Black
+0 53713 a FA(Call)p Black 4848 w Fy(ida)p 8627 53713
+349 45 v 419 w(mem)581 b(=)h(IDACreate\(\);)p Black 0
+55517 a FA(Description)p Black 1286 w(The)369 b(function)i
+Fy(IDACreate)f FA(instan)-31 b(tiates)372 b(an)e Fx(id)-25
+b(a)369 b FA(solv)-31 b(er)369 b(ob)61 b(ject.)p Black
+0 57320 a(Argumen)-31 b(ts)p Black 1517 w Fy(IDACreate)370
+b FA(has)f(no)h(argumen)-31 b(ts.)p Black 0 59124 a(Return)369
+b(v)-61 b(alue)p Black 554 w(If)346 b(successful,)k Fy(IDACreate)e
+FA(returns)d(a)h(p)31 b(oin)-31 b(ter)347 b(to)g(the)f(newly)h(created)
+g Fx(id)-25 b(a)346 b FA(memory)h(blo)31 b(c)-31 b(k)347
+b(\(of)6814 60452 y(t)-31 b(yp)31 b(e)329 b Fy(void)582
+b(*)p FA(\).)480 b(If)328 b(an)h(error)f(o)31 b(ccurred,)336
+b Fy(IDACreate)330 b FA(prin)-31 b(ts)329 b(an)g(error)e(message)j(to)f
+Fy(stderr)h FA(and)6814 61781 y(returns)368 b Fy(NULL)p
+FA(.)p 0 64152 5984 45 v 0 65492 45 1341 v 376 65160
+a Fy(IDAMalloc)p 5939 65492 V 0 65536 5984 45 v Black
+0 66905 a FA(Call)p Black 4848 w Fy(flag)582 b(=)f(IDAMalloc\(ida)p
+18505 66905 349 45 v 420 w(mem,)h(res,)g(t0,)f(y0,)h(yp0,)g(itol,)g
+(reltol,)g(abstol\);)p Black 0 68709 a FA(Description)p
+Black 1286 w(The)420 b(function)h Fy(IDAMalloc)f FA(pro)-31
+b(vides)420 b(required)f(problem)h(and)g(solution)h(sp)31
+b(eci\257cations,)434 b(allo-)6814 70037 y(cates)370
+b(in)-31 b(ternal)370 b(memory)-92 b(,)371 b(and)e(initializes)j
+Fx(id)-25 b(a)p FA(.)p Black 0 71841 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fy(ida)p 8627 71841 V 419 w(mem)p
+Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k)370 b(returned)f(b)-31
+b(y)369 b Fy(IDACreate)p FA(.)p Black 6814 73407 a Fy(res)p
+Black 2716 w FA(\()p Fy(IDAResFn)p FA(\))384 b(is)f(the)f
+Fx(C)h FA(function)h(whic)-31 b(h)383 b(computes)g Fp(F)536
+b FA(in)383 b(the)f(D)-31 b(AE.)384 b(This)e(function)11273
+74735 y(has)296 b(the)h(form)g Fy(res\(t,)582 b(yy,)g(yp,)g(resval,)g
+(res)p 32732 74735 V 419 w(data\))297 b FA(\(for)g(full)h(details)g
+(see)e Fs(x)p FA(5.5\).)p Black 6814 76301 a Fy(t0)p
+Black 3297 w FA(\()p Fy(realtype)p FA(\))371 b(is)e(the)g(initial)j(v)
+-61 b(alue)370 b(of)g Fp(t)p FA(.)p Black 6814 77867
+a Fy(y0)p Black 3297 w FA(\()p Fy(N)p 12354 77867 V 419
+w(Vector)p FA(\))g(is)f(the)h(initial)i(v)-61 b(alue)369
+b(of)h Fp(y)40 b FA(.)p Black Black eop
+%%Page: 21 29
+21 28 bop Black 4000 2701 a FB(5.4)425 b(User-callable)g(functions)
+32020 b(21)p 4000 3144 48001 45 v Black Black 10814 6974
+a Fy(yp0)p Black 2716 w FA(\()p Fy(N)p 16354 6974 349
+45 v 419 w(Vector)p FA(\))370 b(is)f(the)h(initial)i(v)-61
+b(alue)369 b(of)h Fp(y)31910 6572 y Fo(0)32220 6974 y
+FA(.)p Black 10814 8459 a Fy(itol)p Black 2135 w FA(\()p
+Fy(int)p FA(\))537 b(is)e(one)h(of)g Fy(IDA)p 25128 8459
+V 419 w(SS)p FA(,)g Fy(IDA)p 29295 8459 V 419 w(SV)p
+FA(,)g(or)f Fy(IDA)p 34984 8459 V 419 w(WF)p FA(,)h(where)g
+Fy(itol)p FA(=)p Fy(IDA)p 45704 8459 V 419 w(SS)f FA(indicates)15273
+9788 y(scalar)246 b(relativ)-31 b(e)248 b(error)d(tolerance)j(and)e
+(scalar)h(absolute)g(error)f(tolerance,)272 b(while)247
+b Fy(itol)p FA(=)p Fy(IDA)p 53925 9788 V 420 w(SV)15273
+11116 y FA(indicates)407 b(scalar)f(relativ)-31 b(e)408
+b(error)c(tolerance)k(and)e(v)-31 b(ector)406 b(absolute)h(error)e
+(tolerance.)15273 12444 y(The)342 b(latter)g(c)-31 b(hoice)343
+b(is)e(imp)31 b(ortan)-31 b(t)344 b(when)e(the)g(absolute)h(error)d
+(tolerance)j(needs)e(to)h(b)31 b(e)15273 13773 y(di\256eren)-31
+b(t)474 b(for)h(eac)-31 b(h)475 b(comp)31 b(onen)-31
+b(t)476 b(of)f(the)f(D)-31 b(AE.)475 b(If)g Fy(itol)p
+FA(=)p Fy(IDA)p 42674 13773 V 419 w(WF)p FA(,)g(the)g(argumen)-31
+b(ts)15273 15101 y Fy(reltol)393 b FA(and)g Fy(abstol)g
+FA(are)f(ignored)h(and)g(the)f(user)g(is)g(exp)31 b(ected)393
+b(to)g(pro)-31 b(vide)393 b(a)g(func-)15273 16429 y(tion)399
+b(to)f(ev)-61 b(aluate)400 b(the)e(error)e(w)-31 b(eigh)g(t)400
+b(v)-31 b(ector)399 b Fp(W)552 b FA(from)398 b(\(3.6\).)581
+b(See)397 b Fy(IDASetEwtFn)j FA(in)15273 17758 y Fs(x)p
+FA(5.4.5.)p Black 10814 19243 a Fy(reltol)p Black 973
+w FA(\()p Fy(realtype)p FA(\))371 b(is)e(the)g(relativ)-31
+b(e)371 b(error)e(tolerance.)p Black 10814 20729 a Fy(abstol)p
+Black 973 w FA(\()p Fy(void)582 b(*)p FA(\))260 b(is)f(a)g(p)31
+b(oin)-31 b(ter)260 b(to)g(the)f(absolute)i(error)d(tolerance.)457
+b(If)259 b Fy(itol)p FA(=)p Fy(IDA)p 46435 20729 V 419
+w(SS)p FA(,)h Fy(abstol)15273 22057 y FA(m)-31 b(ust)355
+b(b)31 b(e)354 b(a)g(p)31 b(oin)-31 b(ter)355 b(to)g(a)g
+Fy(realtype)g FA(v)-61 b(ariable.)489 b(If)354 b Fy(itol)p
+FA(=)p Fy(IDA)p 42120 22057 V 419 w(SV)p FA(,)h Fy(abstol)g
+FA(m)-31 b(ust)355 b(b)31 b(e)15273 23385 y(an)369 b
+Fy(N)p 17461 23385 V 419 w(Vector)h FA(v)-61 b(ariable.)p
+Black 4000 25092 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(\260ag)h Fy(flag)f FA(\(of)i(t)-31
+b(yp)31 b(e)369 b Fy(int)p FA(\))h(will)h(b)31 b(e)369
+b(one)g(of)h(the)f(follo)-31 b(wing:)p Black 10814 26799
+a Fy(IDA)p 12627 26799 V 419 w(SUCCESS)p Black 1554 w
+FA(The)369 b(call)i(to)f Fy(IDAMalloc)g FA(w)-31 b(as)370
+b(successful.)p Black 10814 28285 a Fy(IDA)p 12627 28285
+V 419 w(MEM)p 14789 28285 V 419 w(NULL)p Black 1135 w
+FA(The)383 b Fx(id)-25 b(a)383 b FA(memory)h(blo)31 b(c)-31
+b(k)384 b(w)-31 b(as)384 b(not)g(initialized)i(through)e(a)f(previous)h
+(call)g(to)18597 29613 y Fy(IDACreate)p FA(.)p Black
+10814 31098 a Fy(IDA)p 12627 31098 V 419 w(MEM)p 14789
+31098 V 419 w(FAIL)p Black 1135 w FA(A)369 b(memory)h(allo)31
+b(cation)373 b(request)c(has)g(failed.)p Black 10814
+32584 a Fy(IDA)p 12627 32584 V 419 w(ILL)p 14789 32584
+V 419 w(INPUT)p Black 554 w FA(An)g(input)h(argumen)-31
+b(t)371 b(to)f Fy(IDAMalloc)g FA(has)f(an)g(illegal)j(v)-61
+b(alue.)p Black 4000 34291 a(Notes)p Black 4072 w(If)426
+b(an)g(error)g(o)31 b(ccurred,)440 b Fy(IDAMalloc)427
+b FA(also)g(prin)-31 b(ts)426 b(an)h(error)e(message)i(to)g(the)f
+(\257le)h(sp)31 b(eci\257ed)426 b(b)-31 b(y)10814 35619
+y(the)369 b(optional)j(input)e Fy(errfp)p FA(.)10814
+37326 y(The)277 b(tolerance)h(v)-61 b(alues)277 b(in)g
+Fy(reltol)g FA(and)g Fy(abstol)h FA(ma)-31 b(y)278 b(b)31
+b(e)276 b(c)-31 b(hanged)278 b(b)31 b(et)-31 b(w)g(een)278
+b(calls)f(to)h Fy(IDASolve)10814 38654 y FA(\(see)369
+b Fy(IDASetTolerances)i FA(in)f Fs(x)p FA(5.4.5\).)11942
+41200 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1429
+b FA(It)300 b(is)h(the)g(user's)e(resp)31 b(onsibilit)-31
+b(y)302 b(to)g(pro)-31 b(vide)301 b(compatible)i Fy(itol)e
+FA(and)g Fy(abstol)g FA(argumen)-31 b(ts.)p 4000 43669
+4821 45 v 4000 45010 45 1341 v 4376 44678 a Fy(IDAFree)p
+8776 45010 V 4000 45054 4821 45 v Black 4000 46406 a
+FA(Call)p Black 4848 w Fy(IDAFree\(ida)p 17275 46406
+349 45 v 420 w(mem\);)p Black 4000 48113 a FA(Description)p
+Black 1286 w(The)369 b(function)i Fy(IDAFree)f FA(frees)e(the)i(p)31
+b(oin)-31 b(ter)370 b(allo)31 b(cated)371 b(b)-31 b(y)370
+b(a)f(previous)h(call)g(to)g Fy(IDAMalloc)p FA(.)p Black
+4000 49820 a(Argumen)-31 b(ts)p Black 1517 w(The)369
+b(argumen)-31 b(t)371 b(is)e(the)h(p)31 b(oin)-31 b(ter)370
+b(to)f(the)h Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k)370 b(\(of)h(t)-31 b(yp)31 b(e)369 b Fy(void)582
+b(*)p FA(\).)p Black 4000 51527 a(Return)369 b(v)-61
+b(alue)p Black 554 w(The)369 b(function)i Fy(IDAFree)f
+FA(has)f(no)h(return)e(v)-61 b(alue.)4000 54570 y Ft(5.4.2)1495
+b(Linear)499 b(solv)-42 b(er)500 b(sp)42 b(eci\257cation)500
+b(functions)4000 56613 y FA(As)380 b(previously)h(explained,)j(Newton)e
+(iteration)g(requires)d(the)i(solution)g(of)g(linear)g(systems)f(of)g
+(the)h(form)f(\(3.4\).)4000 57942 y(There)587 b(are)g(three)g
+Fx(id)-25 b(a)587 b FA(linear)h(solv)-31 b(ers)587 b(curren)-31
+b(tly)588 b(a)-31 b(v)-61 b(ailable)589 b(for)f(this)f(task:)930
+b Fx(id)-25 b(adense)p FA(,)642 b Fx(id)-25 b(aband)p
+FA(,)643 b(and)4000 59270 y Fx(id)-25 b(aspgmr)p FA(.)881
+b(The)499 b(\257rst)g(t)-31 b(w)g(o)501 b(are)e(direct)g(solv)-31
+b(ers)499 b(and)g(deriv)-31 b(e)500 b(their)f(name)h(from)f(the)h(t)-31
+b(yp)31 b(e)499 b(of)h(appro)-31 b(xima-)4000 60598 y(tion)413
+b(used)f(for)g(the)g(Jacobian)i Fp(J)485 b FA(=)379 b
+Fp(@)61 b(F)92 b(=@)61 b(y)315 b FA(+)274 b Fp(c)24712
+60764 y Fm(j)25179 60598 y Fp(@)61 b(F)92 b(=@)61 b(y)28417
+60197 y Fo(0)28728 60598 y FA(.)621 b Fx(id)-25 b(adense)413
+b FA(and)f Fx(id)-25 b(aband)412 b FA(w)-31 b(ork)413
+b(with)g(dense)f(and)4000 61927 y(banded)447 b(appro)-31
+b(ximations)450 b(to)d Fp(J)106 b FA(,)467 b(resp)31
+b(ectiv)-31 b(ely)-92 b(.)726 b(The)447 b(third)g Fx(id)-25
+b(a)447 b FA(linear)g(solv)-31 b(er,)467 b Fx(id)-25
+b(aspgmr)p FA(,)466 b(is)447 b(an)g(iterativ)-31 b(e)4000
+63255 y(solv)g(er.)493 b(The)370 b Fx(spgmr)e FA(in)h(the)g(name)h
+(indicates)h(that)f(it)g(uses)e(a)i(scaled)f(preconditioned)i(GMRES)e
+(metho)31 b(d.)5660 64583 y(T)-92 b(o)328 b(sp)31 b(ecify)327
+b(an)g Fx(id)-25 b(a)326 b FA(linear)i(solv)-31 b(er,)336
+b(after)327 b(the)g(call)h(to)g Fy(IDACreate)g FA(but)f(b)31
+b(efore)326 b(an)-31 b(y)328 b(calls)f(to)h Fy(IDASolve)p
+FA(,)337 b(the)4000 65912 y(user's)344 b(program)h(m)-31
+b(ust)345 b(call)h(one)e(of)h(the)g(functions)h Fy(IDADense)p
+FA(,)351 b Fy(IDABand)p FA(,)f Fy(IDASpgmr)p FA(,)h(as)345
+b(do)31 b(cumen)-31 b(ted)345 b(b)31 b(elo)-31 b(w.)4000
+67240 y(The)366 b(\257rst)g(argumen)-31 b(t)367 b(passed)e(to)i(these)f
+(functions)h(is)f(the)g Fx(id)-25 b(a)366 b FA(memory)h(p)31
+b(oin)-31 b(ter)367 b(returned)e(b)-31 b(y)366 b Fy(IDACreate)p
+FA(.)493 b(A)4000 68568 y(call)373 b(to)g(one)f(of)g(these)g(functions)
+h(links)g(the)f(main)h Fx(id)-25 b(a)372 b FA(in)-31
+b(tegrator)374 b(to)f(a)f(linear)g(solv)-31 b(er)373
+b(and)f(allo)-31 b(ws)374 b(the)e(user)f(to)4000 69897
+y(sp)31 b(ecify)342 b(parameters)g(whic)-31 b(h)343 b(are)f(sp)31
+b(eci\257c)341 b(to)i(a)f(particular)h(solv)-31 b(er,)349
+b(suc)-31 b(h)341 b(as)h(the)g(bandwidths)h(in)g(the)f
+Fx(id)-25 b(aband)4000 71225 y FA(case.)815 b(The)477
+b(use)f(of)h(eac)-31 b(h)477 b(of)h(the)f(linear)g(solv)-31
+b(ers)477 b(in)-31 b(v)g(olv)g(es)478 b(certain)g(constan)-31
+b(ts)478 b(and)f(p)31 b(ossibly)477 b(some)g(macros,)4000
+72553 y(that)415 b(are)g(lik)-31 b(ely)416 b(to)f(b)31
+b(e)413 b(needed)h(in)h(the)f(user)f(co)31 b(de.)628
+b(These)414 b(are)g(a)-31 b(v)-61 b(ailable)417 b(in)e(the)f(corresp)31
+b(onding)415 b(header)f(\257le)4000 73882 y(asso)31 b(ciated)370
+b(with)h(the)e(linear)h(solv)-31 b(er,)370 b(as)f(sp)31
+b(eci\257ed)369 b(b)31 b(elo)-31 b(w.)5660 75210 y(In)472
+b(eac)-31 b(h)472 b(case)g(the)h(linear)f(solv)-31 b(er)473
+b(mo)31 b(dule)473 b(used)e(b)-31 b(y)472 b Fx(id)-25
+b(a)472 b FA(is)g(actually)j(built)e(on)f(top)h(of)f(a)h(generic)f
+(linear)4000 76539 y(system)380 b(solv)-31 b(er,)384
+b(whic)-31 b(h)381 b(ma)-31 b(y)381 b(b)31 b(e)379 b(of)i(in)-31
+b(terest)380 b(in)h(itself.)526 b(These)380 b(generic)g(solv)-31
+b(ers,)383 b(denoted)e Fx(dense)p FA(,)i Fx(band)p FA(,)h(and)4000
+77867 y Fx(spgmr)p FA(,)368 b(are)h(describ)31 b(ed)369
+b(separately)h(in)g(Chapter)f(8.)p Black Black eop
+%%Page: 22 30
+22 29 bop Black 0 2701 a FB(22)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black 0 5965 5402 45 v 0 7306
+45 1341 v 376 6974 a Fy(IDADense)p 5358 7306 V 0 7350
+5402 45 v Black 0 8702 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDADense\(ida)p 17924 8702 349 45 v 420 w(mem,)h(N\);)p
+Black 0 10449 a FA(Description)p Black 1286 w(The)369
+b(function)i Fy(IDADense)f FA(selects)f(the)h Fx(id)-25
+b(adense)370 b FA(linear)g(solv)-31 b(er.)6814 12195
+y(The)369 b(user's)g(main)h(function)h(m)-31 b(ust)369
+b(include)h(the)g Fy(idadense.h)g FA(header)f(\257le.)p
+Black 0 13941 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fy(ida)p 8627 13941 V 419 w(mem)p Black 554 w FA(\()p
+Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 6814 15466 a Fy(N)p Black 3878 w FA(\()p
+Fy(long)582 b(int)p FA(\))370 b(problem)g(dimension.)p
+Black 0 17213 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+6814 18959 a Fy(IDADENSE)p 11532 18959 V 420 w(SUCCESS)p
+Black 1554 w FA(The)g Fx(id)-25 b(adense)370 b FA(initialization)k(w)
+-31 b(as)370 b(successful.)p Black 6814 20484 a Fy(IDADENSE)p
+11532 20484 V 420 w(MEM)p 13695 20484 V 418 w(NULL)p
+Black 1136 w FA(The)f Fy(ida)p 21591 20484 V 419 w(mem)g
+FA(p)31 b(oin)-31 b(ter)370 b(is)f Fy(NULL)p FA(.)p Black
+6814 22009 a Fy(IDADENSE)p 11532 22009 V 420 w(ILL)p
+13695 22009 V 418 w(INPUT)p Black 555 w FA(The)353 b
+Fx(id)-25 b(adense)353 b FA(solv)-31 b(er)353 b(is)g(not)g(compatible)i
+(with)f(the)f(curren)-31 b(t)352 b Fx(nvec-)17503 23337
+y(tor)368 b FA(mo)31 b(dule.)p Black 6814 24862 a Fy(IDADENSE)p
+11532 24862 V 420 w(MEM)p 13695 24862 V 418 w(FAIL)p
+Black 1136 w FA(A)369 b(memory)h(allo)31 b(cation)373
+b(request)368 b(failed.)p Black 0 26609 a(Notes)p Black
+4072 w(The)361 b Fx(id)-25 b(adense)361 b FA(linear)h(solv)-31
+b(er)361 b(ma)-31 b(y)362 b(not)g(b)31 b(e)360 b(compatible)j(with)f(a)
+f(particular)i(implemen)-31 b(tation)6814 27937 y(of)388
+b(the)f Fx(nvector)g FA(mo)31 b(dule.)548 b(Of)387 b(the)h(t)-31
+b(w)g(o)389 b Fx(nvector)e FA(mo)31 b(dules)388 b(pro)-31
+b(vided)388 b(b)-31 b(y)387 b Fx(sundials)p FA(,)392
+b(only)6814 29265 y Fx(nvector)p 11541 29265 368 45 v
+441 w(serial)368 b FA(is)h(compatible,)k(while)d Fx(nvector)p
+30346 29265 V 441 w(p)-74 b(arallel)370 b FA(is)f(not.)p
+0 31513 4821 45 v 0 32854 45 1341 v 376 32521 a Fy(IDABand)p
+4776 32854 V 0 32898 4821 45 v Black 0 34250 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDABand\(ida)p 17343 34250
+349 45 v 420 w(mem,)h(N,)f(mupper,)h(mlower\);)p Black
+0 35996 a FA(Description)p Black 1286 w(The)369 b(function)i
+Fy(IDABand)f FA(selects)f(the)h Fx(id)-25 b(aband)369
+b FA(linear)h(solv)-31 b(er.)6814 37743 y(The)369 b(user's)g(main)h
+(function)h(m)-31 b(ust)369 b(include)h(the)g Fy(idaband.h)g
+FA(header)f(\257le.)p Black 0 39489 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fy(ida)p 8627 39489 V 419 w(mem)p
+Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814 41014 a
+Fy(N)p Black 3878 w FA(\()p Fy(long)582 b(int)p FA(\))370
+b(problem)g(dimension.)p Black 6814 42539 a Fy(mupper)p
+Black 973 w FA(\()p Fy(long)582 b(int)p FA(\))291 b(upp)31
+b(er)289 b(half-bandwidth)k(of)e(the)g(problem)f(Jacobian)i(\(or)f(of)g
+(the)f(appro)-31 b(x-)11273 43867 y(imation)372 b(of)d(it\).)p
+Black 6814 45392 a Fy(mlower)p Black 973 w FA(\()p Fy(long)582
+b(int)p FA(\))319 b(lo)-31 b(w)g(er)319 b(half-bandwidth)i(of)d(the)g
+(problem)h(Jacobian)g(\(or)f(of)h(the)f(appro)-31 b(x-)11273
+46721 y(imation)372 b(of)d(it\).)p Black 0 48467 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 6814 50213 a Fy(IDABAND)p
+10951 50213 V 419 w(SUCCESS)p Black 1555 w FA(The)g Fx(id)-25
+b(aband)369 b FA(initialization)374 b(w)-31 b(as)370
+b(successful.)p Black 6814 51738 a Fy(IDABAND)p 10951
+51738 V 419 w(MEM)p 13113 51738 V 419 w(NULL)p Black
+1136 w FA(The)f Fy(ida)p 21010 51738 V 419 w(mem)g FA(p)31
+b(oin)-31 b(ter)370 b(is)f Fy(NULL)p FA(.)p Black 6814
+53263 a Fy(IDABAND)p 10951 53263 V 419 w(ILL)p 13113
+53263 V 419 w(INPUT)p Black 555 w FA(The)285 b Fx(id)-25
+b(aband)286 b FA(solv)-31 b(er)286 b(is)f(not)h(compatible)i(with)f
+(the)f(curren)-31 b(t)285 b Fx(nvector)16922 54592 y
+FA(mo)31 b(dule,)563 b(or)523 b(one)g(of)h(the)f(Jacobian)i
+(half-bandwidths)g(is)e(outside)h(its)16922 55920 y(v)-61
+b(alid)370 b(range)f(\(0)184 b Fp(:)g(:)g(:)373 b Fy(N)p
+Fs(\241)p FA(1\).)p Black 6814 57445 a Fy(IDABAND)p 10951
+57445 V 419 w(MEM)p 13113 57445 V 419 w(FAIL)p Black
+1136 w FA(A)c(memory)h(allo)31 b(cation)372 b(request)d(failed.)p
+Black 0 59191 a(Notes)p Black 4072 w(The)539 b Fx(id)-25
+b(aband)539 b FA(linear)g(solv)-31 b(er)540 b(ma)-31
+b(y)540 b(not)f(b)31 b(e)538 b(compatible)k(with)e(a)f(particular)h
+(implemen)-31 b(ta-)6814 60520 y(tion)400 b(of)f(the)g
+Fx(nvector)f FA(mo)31 b(dule.)582 b(Of)398 b(the)h(t)-31
+b(w)g(o)401 b Fx(nvector)d FA(mo)31 b(dules)399 b(pro)-31
+b(vided)399 b(b)-31 b(y)399 b Fx(sundials)p FA(,)6814
+61848 y(only)515 b Fx(nvector)p 14115 61848 368 45 v
+441 w(serial)e FA(is)h(compatible,)553 b(while)515 b
+Fx(nvector)p 33535 61848 V 440 w(p)-74 b(arallel)515
+b FA(is)f(not.)928 b(The)514 b(half-)6814 63176 y(bandwidths)386
+b(are)e(to)i(b)31 b(e)384 b(set)g(so)h(that)h(the)f(nonzero)g(lo)31
+b(cations)386 b(\()p Fp(i;)184 b(j)63 b FA(\))387 b(in)e(the)g(banded)g
+(\(appro)-31 b(xi-)6814 64505 y(mate\))371 b(Jacobian)g(satisfy)f
+Fs(\241)p Fy(mlower)g Fs(\267)307 b Fp(j)i Fs(\241)246
+b Fp(i)308 b Fs(\267)369 b Fy(mupper)p FA(.)p 0 66864
+5402 45 v 0 68451 45 1587 v 376 67873 a Fy(IDASpgmr)p
+5358 68451 V 0 68495 5402 45 v Black 0 69774 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDASpgmr\(ida)p 17924
+69774 349 45 v 420 w(mem,)h(maxl\);)p Black 0 71521 a
+FA(Description)p Black 1286 w(The)369 b(function)i Fy(IDASpgmr)f
+FA(selects)f(the)h Fx(id)-25 b(aspgmr)368 b FA(linear)i(solv)-31
+b(er.)6814 73267 y(The)369 b(user's)g(main)h(function)h(m)-31
+b(ust)369 b(include)h(the)g Fy(idaspgmr.h)g FA(header)f(\257le.)p
+Black 0 75014 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fy(ida)p 8627 75014 V 419 w(mem)p Black 554 w FA(\()p
+Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 6814 76539 a Fy(maxl)p Black 2135 w FA(\()p
+Fy(int)p FA(\))350 b(maxim)-31 b(um)351 b(dimension)f(of)f(the)f(Krylo)
+-31 b(v)350 b(subspace)e(to)h(b)31 b(e)348 b(used.)486
+b(P)-31 b(ass)348 b(0)h(to)g(use)11273 77867 y(the)369
+b(default)i(v)-61 b(alue)369 b Fy(IDA)p 21572 77867 V
+419 w(SPGMR)p 24896 77867 V 420 w(MAXL)p FA(=)308 b(5.)p
+Black Black eop
+%%Page: 23 31
+23 30 bop Black 4000 2701 a FB(5.4)425 b(User-callable)g(functions)
+32020 b(23)p 4000 3144 48001 45 v Black Black 4000 6974
+a FA(Return)369 b(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+10814 8813 a Fy(IDASPGMR)p 15532 8813 349 45 v 420 w(SUCCESS)p
+Black 973 w FA(The)g Fx(id)-25 b(aspgmr)368 b FA(initialization)374
+b(w)-31 b(as)370 b(successful.)p Black 10814 10397 a
+Fy(IDASPGMR)p 15532 10397 V 420 w(MEM)p 17695 10397 V
+418 w(NULL)p Black 555 w FA(The)f Fy(ida)p 25010 10397
+V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370 b(is)f Fy(NULL)p
+FA(.)p Black 10814 11981 a Fy(IDASPGMR)p 15532 11981
+V 420 w(MEM)p 17695 11981 V 418 w(FAIL)p Black 555 w
+FA(A)g(memory)h(allo)31 b(cation)372 b(request)d(failed.)4000
+15260 y Ft(5.4.3)1495 b(Initial)499 b(condition)h(calculation)g
+(function)4000 17366 y Fy(IDACalcIC)366 b FA(calculates)i(corrected)d
+(initial)j(conditions)f(for)e(the)h(D)-31 b(AE)365 b(system)h(for)f(a)h
+(class)f(of)h(index-one)g(prob-)4000 18695 y(lems)373
+b(of)f(semi-implicit)k(form.)502 b(It)372 b(uses)f(Newton)i(iteration)i
+(com)-31 b(bined)373 b(with)h(a)e(linesearc)-31 b(h)373
+b(algorithm.)504 b(Calling)4000 20023 y Fy(IDACalcIC)305
+b FA(is)e(optional.)473 b(It)304 b(is)f(only)i(necessary)d(when)i(the)g
+(initial)i(conditions)f(do)f(not)g(solv)-31 b(e)305 b(the)e(giv)-31
+b(en)305 b(system;)4000 21351 y(i.e.,)371 b(if)f Fy(y0)f
+FA(and)g Fy(yp0)h FA(are)f(kno)-31 b(wn)370 b(to)g(satisfy)g
+Fp(F)154 b FA(\()p Fp(t)24760 21517 y Fn(0)25257 21351
+y Fp(;)184 b(y)26291 21517 y Fn(0)26788 21351 y Fp(;)g(y)27862
+20950 y Fo(0)27822 21626 y Fn(0)28319 21351 y FA(\))308
+b(=)g(0,)370 b(then)f(a)h(call)g(to)g Fy(IDACalcIC)g
+FA(is)f Fr(not)g FA(necessary)-92 b(.)5660 22714 y(A)365
+b(call)g(to)g Fy(IDACalcIC)h FA(m)-31 b(ust)365 b(b)31
+b(e)363 b(preceded)h(b)-31 b(y)364 b(successful)g(calls)h(to)g
+Fy(IDACreate)h FA(and)e Fy(IDAMalloc)p FA(,)j(and)e(b)-31
+b(y)4000 24042 y(a)456 b(successful)f(call)j(to)e(the)h(linear)f
+(system)g(solv)-31 b(er)457 b(sp)31 b(eci\257cation)457
+b(function.)754 b(The)457 b(call)g(to)f Fy(IDACalcIC)h
+FA(should)4000 25370 y(precede)368 b(the)i(call\(s\))h(to)f
+Fy(IDASolve)g FA(for)f(the)h(giv)-31 b(en)370 b(problem.)p
+4000 27532 5984 45 v 4000 28872 45 1341 v 4376 28540
+a Fy(IDACalcIC)p 9939 28872 V 4000 28916 5984 45 v Black
+4000 30303 a FA(Call)p Black 4848 w Fy(flag)582 b(=)f(IDACalcIC\(ida)p
+22505 30303 349 45 v 420 w(mem,)h(t0,)g(y0,)f(yp0,)h(icopt,)g(tout1\);)
+p Black 4000 32142 a FA(Description)p Black 1286 w(The)369
+b(function)i Fy(IDACalcIC)f FA(corrects)f(the)g(initial)j(v)-61
+b(alues)370 b Fy(y0)f FA(and)g Fy(yp0)h FA(at)g(time)g
+Fy(t0)p FA(.)p Black 4000 33981 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fy(ida)p 12627 33981 V 419 w(mem)p
+Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814 35565 a
+Fy(t0)p Black 3297 w FA(\()p Fy(realtype)p FA(\))371
+b(is)e(the)g(initial)j(v)-61 b(alue)370 b(of)g Fp(t)p
+FA(.)p Black 10814 37149 a Fy(y0)p Black 3297 w FA(\()p
+Fy(N)p 16354 37149 V 419 w(Vector)p FA(\))g(is)f(the)h(initial)i(v)-61
+b(alue)369 b(of)h Fp(y)40 b FA(.)p Black 10814 38732
+a Fy(yp0)p Black 2716 w FA(\()p Fy(N)p 16354 38732 V
+419 w(Vector)p FA(\))370 b(is)f(the)h(initial)i(v)-61
+b(alue)369 b(of)h Fp(y)31910 38331 y Fo(0)32220 38732
+y FA(.)p Black 10814 40316 a Fy(icopt)p Black 1554 w
+FA(\()p Fy(int)p FA(\))g(is)f(the)h(option)h(of)e(ID)-31
+b(A)g(CalcIC)371 b(to)f(b)31 b(e)369 b(used.)15273 41900
+y Fy(icopt)p FA(=)p Fy(IDA)p 20852 41900 V 419 w(YA)p
+22433 41900 V 419 w(YDP)p 24595 41900 V 419 w(INIT)259
+b FA(directs)f Fy(IDACalcIC)i FA(to)f(compute)h(the)f(algebraic)h(comp)
+31 b(o-)15273 43228 y(nen)-31 b(ts)268 b(of)h Fp(y)308
+b FA(and)269 b(di\256eren)-31 b(tial)270 b(comp)31 b(onen)-31
+b(ts)270 b(of)f Fp(y)35336 42826 y Fo(0)35646 43228 y
+FA(,)289 b(giv)-31 b(en)270 b(the)e(di\256eren)-31 b(tial)271
+b(comp)31 b(onen)-31 b(ts)15273 44557 y(of)388 b Fp(y)40
+b FA(.)548 b(This)388 b(option)i(requires)d(that)i(the)f
+Fy(N)p 33174 44557 V 418 w(Vector)h(id)f FA(w)-31 b(as)388
+b(set)g(through)g Fy(IDASetId)p FA(,)15273 45885 y(sp)31
+b(ecifying)370 b(the)f(di\256eren)-31 b(tial)371 b(and)f(algebraic)h
+(comp)31 b(onen)-31 b(ts.)15273 47469 y Fy(icopt)p FA(=)p
+Fy(IDA)p 20852 47469 V 419 w(Y)p 21852 47469 V 419 w(INIT)303
+b FA(directs)g Fy(IDACalcIC)g FA(to)h(compute)g(all)g(comp)31
+b(onen)-31 b(ts)304 b(of)f Fp(y)40 b FA(,)316 b(giv)-31
+b(en)15273 48797 y Fp(y)15856 48395 y Fo(0)16166 48797
+y FA(.)492 b Fy(id)370 b FA(is)f(not)h(required.)p Black
+10814 50381 a Fy(tout1)p Black 1554 w FA(\()p Fy(realtype)p
+FA(\))356 b(is)e(the)g(\257rst)g(v)-61 b(alue)354 b(of)h
+Fp(t)e FA(at)i(whic)-31 b(h)355 b(a)g(solution)h(will)f(b)31
+b(e)354 b(requested)g(\(from)15273 51709 y Fy(IDASolve)p
+FA(\).)547 b(This)387 b(v)-61 b(alue)387 b(is)g(needed)f(here)g(to)i
+(determine)f(the)g(direction)h(of)f(in)-31 b(tegra-)15273
+53037 y(tion)370 b(and)g(rough)f(scale)h(in)f(the)h(indep)31
+b(enden)-31 b(t)369 b(v)-61 b(ariable)370 b Fp(t)p FA(.)p
+Black 4000 54877 a(Return)f(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(will)h(b)31 b(e)369
+b(one)g(of)h(the)f(follo)-31 b(wing:)p Black 10814 56971
+a Fy(IDA)p 12627 56971 V 419 w(SUCCESS)p Black 5041 w(IDASolve)370
+b FA(succeeded.)p Black 10814 58555 a Fy(IDA)p 12627
+58555 V 419 w(MEM)p 14789 58555 V 419 w(NULL)p Black
+4622 w FA(The)f(argumen)-31 b(t)371 b Fy(ida)p 31126
+58555 V 419 w(mem)e FA(w)-31 b(as)370 b Fy(NULL)p FA(.)p
+Black 10814 60139 a Fy(IDA)p 12627 60139 V 419 w(NO)p
+14208 60139 V 419 w(MALLOC)p Black 4041 w FA(The)f(allo)31
+b(cation)373 b(function)d Fy(IDAMalloc)h FA(has)e(not)h(b)31
+b(een)368 b(called.)p Black 10814 61723 a Fy(IDA)p 12627
+61723 V 419 w(ILL)p 14789 61723 V 419 w(INPUT)p Black
+4041 w FA(One)h(of)g(the)h(input)g(argumen)-31 b(ts)370
+b(w)-31 b(as)370 b(illegal.)p Black 10814 63306 a Fy(IDA)p
+12627 63306 V 419 w(LSETUP)p 16532 63306 V 419 w(FAIL)p
+Black 2879 w FA(The)488 b(linear)h(solv)-31 b(er's)488
+b(setup)g(function)i(failed)f(in)g(an)f(unreco)-31 b(v)g(erable)22084
+64635 y(manner.)p Black 10814 66218 a Fy(IDA)p 12627
+66218 V 419 w(LINIT)p 15951 66218 V 419 w(FAIL)p Black
+3460 w FA(The)369 b(linear)h(solv)-31 b(er's)370 b(initialization)k
+(function)d(failed.)p Black 10814 67802 a Fy(IDA)p 12627
+67802 V 419 w(LSOLVE)p 16532 67802 V 419 w(FAIL)p Black
+2879 w FA(The)519 b(linear)g(solv)-31 b(er's)520 b(solv)-31
+b(e)519 b(function)i(failed)f(in)f(an)g(unreco)-31 b(v)g(erable)22084
+69131 y(manner.)p Black 10814 70714 a Fy(IDA)p 12627
+70714 V 419 w(BAD)p 14789 70714 V 419 w(EWT)p Black 5203
+w FA(Some)497 b(comp)31 b(onen)-31 b(t)498 b(of)f(the)f(error)g(w)-31
+b(eigh)g(t)498 b(v)-31 b(ector)497 b(is)f(zero)h(\(illegal\),)22084
+72043 y(either)369 b(for)h(the)f(input)h(v)-61 b(alue)370
+b(of)f Fy(y0)h FA(or)f(a)g(corrected)g(v)-61 b(alue.)p
+Black 10814 73626 a Fy(IDA)p 12627 73626 V 419 w(FIRST)p
+15951 73626 V 419 w(RES)p 18113 73626 V 419 w(FAIL)p
+Black 1298 w FA(The)429 b(user's)e(residual)i(function)h(returned)d(a)i
+(reco)-31 b(v)g(erable)430 b(error)d(\260ag)22084 74955
+y(on)369 b(the)h(\257rst)e(call,)j(but)f Fy(IDACalcIC)g
+FA(w)-31 b(as)370 b(unable)g(to)g(reco)-31 b(v)g(er.)p
+Black 10814 76539 a Fy(IDA)p 12627 76539 V 419 w(RES)p
+14789 76539 V 419 w(FAIL)p Black 4622 w FA(The)481 b(user's)f(residual)
+h(function)h(returned)e(a)i(nonreco)-31 b(v)g(erable)482
+b(error)22084 77867 y(\260ag.)p Black Black eop
+%%Page: 24 32
+24 31 bop Black 0 2701 a FB(24)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black Black 6814 6974 a Fy(IDA)p
+8627 6974 349 45 v 419 w(NO)p 10208 6974 V 419 w(RECOVERY)p
+Black 2879 w FA(The)256 b(user's)f(residual)h(function,)281
+b(or)256 b(the)g(linear)h(solv)-31 b(er's)256 b(setup)g(or)g(solv)-31
+b(e)18084 8302 y(function)304 b(had)g(a)f(reco)-31 b(v)g(erable)305
+b(error,)316 b(but)303 b Fy(IDACalcIC)h FA(w)-31 b(as)304
+b(unable)g(to)18084 9631 y(reco)-31 b(v)g(er.)p Black
+6814 11192 a Fy(IDA)p 8627 11192 V 419 w(CONSTR)p 12532
+11192 V 419 w(FAIL)p Black 2879 w(IDACalcIC)288 b FA(w)-31
+b(as)288 b(unable)g(to)g(\257nd)f(a)h(solution)h(satisfying)g(the)e
+(inequal-)18084 12520 y(it)-31 b(y)370 b(constrain)-31
+b(ts.)p Black 6814 14082 a Fy(IDA)p 8627 14082 V 419
+w(LINESEARCH)p 14856 14082 V 420 w(FAIL)p Black 554 w
+FA(The)413 b(linesearc)-31 b(h)413 b(algorithm)i(failed)f(to)g(\257nd)e
+(a)h(solution)h(with)g(a)f(step)18084 15410 y(larger)369
+b(than)h Fy(steptol)g FA(in)g(w)-31 b(eigh)g(ted)371
+b(RMS)e(norm.)p Black 6814 16971 a Fy(IDA)p 8627 16971
+V 419 w(CONV)p 11370 16971 V 419 w(FAIL)p Black 4041
+w(IDACalcIC)356 b FA(failed)h(to)f(get)h(con)-31 b(v)g(ergence)356
+b(of)g(the)g(Newton)g(iterations.)p Black 0 18999 a(Notes)p
+Black 4072 w(All)544 b(failure)h(return)d(v)-61 b(alues)544
+b(are)f(negativ)-31 b(e)545 b(and)f(therefore)f(a)h(test)g
+Fy(flag)f Fp(<)598 b FA(0)544 b(will)h(trap)f(all)6814
+20327 y Fy(IDACalcIC)370 b FA(failures.)6814 22122 y(Note)480
+b(that)g Fy(IDACalcIC)g FA(is)f(t)-31 b(ypically)482
+b(called)e(b)31 b(efore)479 b(the)g(\257rst)g(call)h(to)g
+Fy(IDASolve)g FA(and)f(after)6814 23450 y Fy(IDAMalloc)420
+b FA(to)g(compute)g(consisten)-31 b(t)420 b(initial)i(conditions)f(for)
+e(the)g(D)-31 b(AE)419 b(problem.)643 b(Ho)-31 b(w)g(ev)g(er,)6814
+24779 y(it)370 b(can)f(b)31 b(e)369 b(also)h(called)h(at)e(an)-31
+b(y)370 b(other)g(further)f(time)h(to)g(correct)f(a)h(pair)f(\()p
+Fp(y)40 b(;)184 b(y)39736 24377 y Fo(0)40047 24779 y
+FA(\).)0 27939 y Ft(5.4.4)1495 b(ID)-42 b(A)499 b(solv)-42
+b(er)500 b(function)0 30004 y FA(This)370 b(is)f(the)g(cen)-31
+b(tral)370 b(step)f(in)h(the)f(solution)i(pro)31 b(cess)368
+b(-)h(the)h(call)g(to)g(p)31 b(erform)369 b(the)g(in)-31
+b(tegration)373 b(of)c(the)h(D)-31 b(AE.)p 0 31935 5402
+45 v 0 33275 45 1341 v 376 32943 a Fy(IDASolve)p 5358
+33275 V 0 33319 5402 45 v Black 0 34683 a FA(Call)p Black
+4848 w Fy(flag)582 b(=)f(IDASolve\(ida)p 17924 34683
+349 45 v 420 w(mem,)h(tout,)g(tret,)g(yret,)g(ypret,)g(itask\);)p
+Black 0 36478 a FA(Description)p Black 1286 w(The)369
+b(function)i Fy(IDASolve)f FA(in)-31 b(tegrates)371 b(the)e(D)-31
+b(AE)370 b(o)-31 b(v)g(er)370 b(an)f(in)-31 b(terv)-61
+b(al)370 b(in)g Fp(t)p FA(.)p Black 0 38272 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 8627 38272 V 419 w(mem)p
+Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814 39834 a
+Fy(tout)p Black 2135 w FA(\()p Fy(realtype)p FA(\))371
+b(the)e(next)h(time)g(at)g(whic)-31 b(h)371 b(a)e(computed)h(solution)h
+(is)e(desired.)p Black 6814 41395 a Fy(tret)p Black 2135
+w FA(\()p Fy(realtype)583 b(*)p FA(\))369 b(the)h(time)g(reac)-31
+b(hed)369 b(b)-31 b(y)370 b(the)f(solv)-31 b(er.)p Black
+6814 42957 a Fy(yret)p Black 2135 w FA(\()p Fy(N)p 12354
+42957 V 419 w(Vector)p FA(\))370 b(the)g(computed)g(solution)h(v)-31
+b(ector)370 b Fp(y)40 b FA(.)p Black 6814 44518 a Fy(ypret)p
+Black 1554 w FA(\()p Fy(N)p 12354 44518 V 419 w(Vector)p
+FA(\))370 b(the)g(computed)g(solution)h(v)-31 b(ector)370
+b Fp(y)32095 44116 y Fo(0)32405 44518 y FA(.)p Black
+6814 46079 a Fy(itask)p Black 1554 w FA(\()p Fy(int)p
+FA(\))518 b(a)f(\260ag)g(indicating)j(the)d(job)g(of)h(the)f(solv)-31
+b(er)517 b(for)g(the)g(next)g(user)f(step.)936 b(The)11273
+47408 y Fy(IDA)p 13086 47408 V 419 w(NORMAL)342 b FA(task)g(is)f(to)h
+(ha)-31 b(v)g(e)342 b(the)g(solv)-31 b(er)342 b(tak)-31
+b(e)342 b(in)-31 b(ternal)343 b(steps)e(un)-31 b(til)342
+b(it)h(has)e(reac)-31 b(hed)11273 48736 y(or)428 b(just)g(passed)g(the)
+h(user)e(sp)31 b(eci\257ed)428 b Fy(tout)h FA(parameter.)671
+b(The)429 b(solv)-31 b(er)428 b(then)h(in)-31 b(terp)31
+b(o-)11273 50065 y(lates)461 b(in)f(order)f(to)i(return)e(appro)-31
+b(ximate)462 b(v)-61 b(alues)460 b(of)h Fp(y)40 b FA(\()p
+Fy(tout)p FA(\))460 b(and)g Fp(y)41526 49663 y Fo(0)41836
+50065 y FA(\()p Fy(tout)p FA(\).)767 b(The)11273 51393
+y Fy(IDA)p 13086 51393 V 419 w(ONE)p 15248 51393 V 419
+w(STEP)310 b FA(option)i(tells)f(the)g(solv)-31 b(er)310
+b(to)i(just)e(tak)-31 b(e)311 b(one)g(in)-31 b(ternal)312
+b(step)e(and)g(return)11273 52721 y(the)395 b(solution)j(at)e(the)g(p)
+31 b(oin)-31 b(t)396 b(reac)-31 b(hed)396 b(b)-31 b(y)396
+b(that)g(step.)572 b(The)395 b Fy(IDA)p 38661 52721 V
+419 w(NORMAL)p 42566 52721 V 420 w(TSTOP)h FA(and)11273
+54050 y Fy(IDA)p 13086 54050 V 419 w(ONE)p 15248 54050
+V 419 w(STEP)p 17991 54050 V 419 w(TSTOP)512 b FA(mo)31
+b(des)513 b(are)f(similar)i(to)f Fy(IDA)p 34401 54050
+V 419 w(NORMAL)g FA(and)f Fy(IDA)p 42857 54050 V 419
+w(ONE)p 45019 54050 V 419 w(STEP)p FA(,)11273 55378 y(resp)31
+b(ectiv)-31 b(ely)-92 b(,)330 b(except)319 b(that)h(the)f(in)-31
+b(tegration)322 b(nev)-31 b(er)318 b(pro)31 b(ceeds)318
+b(past)h(the)g(v)-61 b(alue)319 b Fy(tstop)11273 56706
+y FA(\(sp)31 b(eci\257ed)369 b(through)h(the)f(function)i
+Fy(IDASetStopTime)p FA(\).)p Black 0 58501 a(Return)e(v)-61
+b(alue)p Black 554 w(On)260 b(return,)282 b Fy(IDASolve)262
+b FA(returns)d(v)-31 b(ectors)261 b Fy(yret)g FA(and)g
+Fy(ypret)g FA(and)g(a)g(corresp)31 b(onding)260 b(indep)31
+b(enden)-31 b(t)6814 59829 y(v)-61 b(ariable)440 b(v)-61
+b(alue)440 b Fp(t)424 b FA(=)p Fy(*tret)p FA(,)458 b(suc)-31
+b(h)439 b(that)h(\()p Fy(yret)p FA(,)458 b Fy(ypret)p
+FA(\))441 b(are)e(the)g(computed)i(v)-61 b(alues)439
+b(of)h(\()p Fp(y)40 b FA(\()p Fp(t)p FA(\),)6814 61157
+y Fp(y)7397 60756 y Fo(0)7707 61157 y FA(\()p Fp(t)p
+FA(\)\).)6814 62952 y(In)464 b Fy(NORMAL)h FA(mo)31 b(de)465
+b(with)h(no)f(errors,)487 b Fy(*tret)465 b FA(will)i(b)31
+b(e)464 b(equal)h(to)h Fy(tout)e FA(and)h Fy(yret)g FA(=)g
+Fp(y)40 b FA(\()p Fy(tout)p FA(\),)6814 64280 y Fy(ypret)370
+b FA(=)f Fp(y)11902 63879 y Fo(0)12212 64280 y FA(\()p
+Fy(tout)p FA(\).)6814 66075 y(The)g(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(will)h(b)31 b(e)369 b(one)g(of)h(the)f(follo)-31
+b(wing:)p Black 6814 67869 a Fy(IDA)p 8627 67869 V 419
+w(SUCCESS)p Black 3716 w(IDASolve)370 b FA(succeeded.)p
+Black 6814 69431 a Fy(IDA)p 8627 69431 V 419 w(TSTOP)p
+11951 69431 V 419 w(RETURN)p Black 973 w(IDASolve)332
+b FA(succeeded)e(b)-31 b(y)331 b(reac)-31 b(hing)331
+b(the)h(stop)f(p)31 b(oin)-31 b(t)332 b(sp)31 b(eci\257ed)330
+b(through)16759 70759 y(the)369 b(optional)j(input)e(function)h
+Fy(IDASetStopTime)g FA(\(see)e Fs(x)p FA(5.4.5\).)p Black
+6814 72320 a Fy(IDA)p 8627 72320 V 419 w(MEM)p 10789
+72320 V 419 w(NULL)p Black 3297 w FA(The)g Fy(ida)p 20847
+72320 V 419 w(mem)h FA(argumen)-31 b(t)370 b(w)-31 b(as)370
+b Fy(NULL)p FA(.)p Black 6814 73882 a Fy(IDA)p 8627 73882
+V 419 w(ILL)p 10789 73882 V 419 w(INPUT)p Black 2716
+w FA(One)446 b(of)i(the)f(inputs)g(to)g Fy(IDASolve)h
+FA(is)f(illegal.)728 b(This)447 b(includes)g(the)g(sit-)16759
+75210 y(uation)498 b(when)e(a)h(comp)31 b(onen)-31 b(t)498
+b(of)f(the)f(error)g(w)-31 b(eigh)g(t)498 b(v)-31 b(ectors)497
+b(b)31 b(ecomes)16759 76539 y(negativ)-31 b(e)408 b(during)e(in)-31
+b(ternal)407 b(time-stepping.)604 b(The)406 b Fy(IDA)p
+40456 76539 V 419 w(ILL)p 42618 76539 V 419 w(INPUT)g
+FA(\260ag)16759 77867 y(will)522 b(also)f(b)31 b(e)520
+b(returned)f(if)i(the)f(linear)h(solv)-31 b(er)521 b(function)h
+(initialization)p Black Black eop
+%%Page: 25 33
+25 32 bop Black 4000 2701 a FB(5.4)425 b(User-callable)g(functions)
+32020 b(25)p 4000 3144 48001 45 v Black 20759 6974 a
+FA(\(called)386 b(b)-31 b(y)384 b(the)g(user)f(after)i(calling)h
+Fy(IDACreate)p FA(\))g(failed)f(to)g(set)f(the)g(lin-)20759
+8302 y(ear)c(solv)-31 b(er-sp)31 b(eci\257c)381 b Fy(lsolve)g
+FA(\257eld)g(in)f Fy(ida)p 39017 8302 349 45 v 419 w(mem)p
+FA(.)527 b(In)380 b(an)-31 b(y)381 b(case,)j(the)d(user)20759
+9631 y(should)369 b(see)g(the)g(prin)-31 b(ted)370 b(error)e(message)i
+(for)f(more)h(details.)p Black 10814 11205 a Fy(IDA)p
+12627 11205 V 419 w(TOO)p 14789 11205 V 419 w(MUCH)p
+17532 11205 V 419 w(WORK)p Black 554 w FA(The)405 b(solv)-31
+b(er)406 b(to)31 b(ok)406 b Fy(mxstep)g FA(in)-31 b(ternal)407
+b(steps)e(but)g(could)h(not)g(reac)-31 b(h)405 b(tout.)20759
+12534 y(The)369 b(default)i(v)-61 b(alue)370 b(for)f
+Fy(mxstep)h FA(is)f Fy(MXSTEP)p 39834 12534 V 419 w(DEFAULT)582
+b(=)g(500)p FA(.)p Black 10814 14109 a Fy(IDA)p 12627
+14109 V 419 w(TOO)p 14789 14109 V 419 w(MUCH)p 17532
+14109 V 419 w(ACC)p Black 1135 w FA(The)394 b(solv)-31
+b(er)393 b(could)i(not)f(satisfy)g(the)g(accuracy)g(demanded)g(b)-31
+b(y)394 b(the)g(user)20759 15437 y(for)369 b(some)h(in)-31
+b(ternal)370 b(step.)p Black 10814 17012 a Fy(IDA)p 12627
+17012 V 419 w(ERR)p 14789 17012 V 419 w(FAIL)p Black
+3297 w FA(Error)323 b(test)h(failures)h(o)31 b(ccurred)323
+b(to)31 b(o)325 b(man)-31 b(y)325 b(times)f(\()p Fy(MXNEF)583
+b(=)e(10)p FA(\))325 b(during)20759 18340 y(one)369 b(in)-31
+b(ternal)371 b(time)f(step)f(or)g(o)31 b(ccurred)369
+b(with)h Fs(j)p Fp(h)p Fs(j)308 b FA(=)g Fp(h)43516 18506
+y Fm(min)45217 18340 y FA(.)p Black 10814 19915 a Fy(IDA)p
+12627 19915 V 419 w(CONV)p 15370 19915 V 419 w(FAIL)p
+Black 2716 w FA(Con)-31 b(v)g(ergence)327 b(test)e(failures)h(o)31
+b(ccurred)325 b(to)31 b(o)326 b(man)-31 b(y)326 b(times)h(\()p
+Fy(MXNCF)582 b(=)f(10)p FA(\))20759 21244 y(during)369
+b(one)h(in)-31 b(ternal)370 b(time)h(step)e(or)g(o)31
+b(ccurred)368 b(with)j Fs(j)p Fp(h)p Fs(j)308 b FA(=)f
+Fp(h)47024 21410 y Fm(min)48725 21244 y FA(.)p Black
+10814 22819 a Fy(IDA)p 12627 22819 V 419 w(LINIT)p 15951
+22819 V 419 w(FAIL)p Black 2135 w FA(The)369 b(linear)h(solv)-31
+b(er's)370 b(initialization)k(function)d(failed.)p Black
+10814 24393 a Fy(IDA)p 12627 24393 V 419 w(LSETUP)p 16532
+24393 V 419 w(FAIL)p Black 1554 w FA(The)308 b(linear)g(solv)-31
+b(er's)309 b(setup)e(function)i(failed)g(in)f(an)g(unreco)-31
+b(v)g(erable)309 b(man-)20759 25722 y(ner.)p Black 10814
+27297 a Fy(IDA)p 12627 27297 V 419 w(LSOLVE)p 16532 27297
+V 419 w(FAIL)p Black 1554 w FA(The)335 b(linear)h(solv)-31
+b(er's)336 b(solv)-31 b(e)335 b(function)i(failed)f(in)g(an)f(unreco)
+-31 b(v)g(erable)336 b(man-)20759 28625 y(ner.)p Black
+10814 30200 a Fy(IDA)p 12627 30200 V 419 w(CONSTR)p 16532
+30200 V 419 w(FAIL)p Black 1554 w FA(The)424 b(inequalit)-31
+b(y)426 b(constrain)-31 b(ts)425 b(w)-31 b(ere)423 b(violated)j(and)e
+(the)g(solv)-31 b(er)424 b(w)-31 b(as)424 b(un-)20759
+31528 y(able)370 b(to)g(reco)-31 b(v)g(er.)p Black 10814
+33103 a Fy(IDA)p 12627 33103 V 419 w(REP)p 14789 33103
+V 419 w(RES)p 16951 33103 V 419 w(ERR)p Black 1716 w
+FA(The)539 b(user's)g(residual)g(function)i(rep)31 b(eatedly)540
+b(returned)e(a)i(reco)-31 b(v)g(erable)20759 34432 y(error)368
+b(\260ag,)i(but)g(the)f(solv)-31 b(er)370 b(w)-31 b(as)370
+b(unable)g(to)f(reco)-31 b(v)g(er.)p Black 10814 36006
+a Fy(IDA)p 12627 36006 V 419 w(RES)p 14789 36006 V 419
+w(FAIL)p Black 3297 w FA(The)333 b(user's)f(residual)h(function)h
+(returned)e(a)h(nonreco)-31 b(v)g(erable)334 b(error)e(\260ag.)p
+Black 4000 37828 a(Notes)p Black 4072 w(The)343 b(v)-31
+b(ector)343 b Fy(yret)g FA(can)g(o)31 b(ccup)-31 b(y)343
+b(the)g(same)g(space)f(as)h(the)g Fy(y0)f FA(v)-31 b(ector)344
+b(of)f(initial)i(conditions)g(that)10814 39156 y(w)-31
+b(as)412 b(passed)f(to)h Fy(IDAMalloc)p FA(,)423 b(while)413
+b(the)e(v)-31 b(ector)413 b Fy(ypret)e FA(can)h(o)31
+b(ccup)-31 b(y)412 b(the)f(same)h(space)f(as)h(the)10814
+40485 y Fy(yp0)p FA(.)10814 42306 y(In)327 b(the)h Fy(IDA)p
+15834 42306 V 418 w(ONE)p 17995 42306 V 419 w(STEP)g
+FA(mo)31 b(de,)337 b Fy(tout)328 b FA(is)f(used)g(on)h(the)f(\257rst)g
+(call)i(only)-92 b(,)337 b(to)328 b(get)g(the)g(direction)h(and)10814
+43634 y(rough)369 b(scale)h(of)g(the)f(indep)31 b(enden)-31
+b(t)370 b(v)-61 b(ariable.)10814 45456 y(All)544 b(failure)h(return)d
+(v)-61 b(alues)544 b(are)f(negativ)-31 b(e)545 b(and)f(therefore)f(a)h
+(test)g Fy(flag)f Fp(<)598 b FA(0)544 b(will)h(trap)f(all)10814
+46784 y Fy(IDASolve)370 b FA(failures.)4000 50017 y Ft(5.4.5)1495
+b(Optional)500 b(input)f(functions)4000 52107 y Fx(id)-25
+b(a)332 b FA(pro)-31 b(vides)333 b(an)g(extensiv)-31
+b(e)333 b(list)h(of)f(functions)g(that)h(can)f(b)31 b(e)332
+b(used)f(to)j(c)-31 b(hange)333 b(v)-61 b(arious)333
+b(optional)i(input)e(param-)4000 53435 y(eters)316 b(that)h(con)-31
+b(trol)317 b(the)g(b)31 b(eha)-31 b(vior)317 b(of)f(the)h
+Fx(id)-25 b(a)316 b FA(solv)-31 b(er)316 b(from)h(their)f(default)i(v)
+-61 b(alues.)475 b(T)-92 b(able)317 b(5.1)g(lists)g(all)g(optional)4000
+54763 y(input)403 b(functions)h(in)f Fx(id)-25 b(a)402
+b FA(whic)-31 b(h)403 b(are)g(then)g(describ)31 b(ed)401
+b(in)i(detail)h(in)f(the)g(remainder)f(of)h(this)g(section.)594
+b(F)-92 b(or)402 b(the)4000 56092 y(most)370 b(casual)g(use)f(of)g
+Fx(id)-25 b(a)p FA(,)370 b(the)f(reader)g(can)g(skip)h(to)g
+Fs(x)p FA(5.5.)5660 57445 y(W)-92 b(e)302 b(note)h(that,)317
+b(on)302 b(error)g(return,)315 b(all)303 b(these)f(functions)i(also)f
+(prin)-31 b(t)302 b(an)h(error)e(message)h(to)h Fy(stderr)g
+FA(\(or)g(to)g(the)4000 58774 y(\257le)353 b(p)31 b(oin)-31
+b(ted)354 b(to)f(b)-31 b(y)353 b Fy(errfp)g FA(if)h(already)f(sp)31
+b(eci\257ed\).)487 b(W)-92 b(e)352 b(also)i(note)f(that)h(all)g(error)e
+(return)g(v)-61 b(alues)353 b(are)f(negativ)-31 b(e,)4000
+60102 y(so)369 b(a)h(test)f Fy(flag)h Fp(<)307 b FA(0)370
+b(will)h(catc)-31 b(h)370 b(an)-31 b(y)370 b(error.)4000
+63113 y FB(Main)424 b(solv)-35 b(er)425 b(optional)g(input)g(functions)
+4000 65203 y FA(The)364 b(calls)h(listed)g(here)e(can)i(b)31
+b(e)363 b(executed)i(in)f(an)-31 b(y)365 b(order.)490
+b(Ho)-31 b(w)g(ev)g(er,)367 b(if)e Fy(IDASetErrFile)g
+FA(is)f(to)h(b)31 b(e)364 b(called,)j(that)4000 66531
+y(call)j(should)g(b)31 b(e)369 b(\257rst,)g(in)g(order)g(to)h(tak)-31
+b(e)370 b(e\256ect)f(for)h(an)-31 b(y)370 b(later)f(error)g(message.)p
+4000 68559 8308 45 v 4000 69899 45 1341 v 4376 69567
+a Fy(IDASetErrFile)p 12263 69899 V 4000 69943 8308 45
+v Black 4000 71321 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDASetErrFile\(ida)p 24829 71321 349 45 v 421 w(mem,)h(errfp\);)p
+Black 4000 73142 a FA(Description)p Black 1286 w(The)410
+b(function)h Fy(IDASetErrFile)h FA(sp)31 b(eci\257es)409
+b(the)h(p)31 b(oin)-31 b(ter)411 b(to)g(the)f(\257le)g(where)g(all)h
+Fx(id)-25 b(a)410 b FA(messages)10814 74471 y(should)369
+b(b)31 b(e)369 b(directed.)p Black 4000 76292 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 12627 76292 V 419
+w(mem)p Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369
+b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814 77867
+a Fy(errfp)p Black 1554 w FA(\()p Fy(FILE)582 b(*)p FA(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(output)g(\257le.)p
+Black Black eop
+%%Page: 26 34
+26 33 bop Black 0 2701 a FB(26)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black Black Black 6507 18134
+a FA(T)-92 b(able)370 b(5.1:)494 b(Optional)372 b(inputs)d(for)g
+Fx(id)-25 b(a)p FA(,)370 b Fx(id)-25 b(adense)p FA(,)370
+b Fx(id)-25 b(aband)p FA(,)370 b(and)g Fx(id)-25 b(aspgmr)p
+Black 0 19168 50115 45 v -22 20496 45 1329 v 664 20098
+a FB(Optional)425 b(input)p 21840 20496 V 13640 w(F)-106
+b(unction)425 b(name)p 38279 20496 V 8176 w(Default)p
+50092 20496 V 0 20541 50115 45 v -22 21869 45 1329 v
+20451 21471 a(ID)-35 b(A)425 b(main)f(solv)-35 b(er)p
+50092 21869 V 0 21913 50115 45 v -22 23242 45 1329 v
+664 22843 a FA(P)k(oin)g(ter)371 b(to)f(an)f(error)g(\257le)p
+21840 23242 V 10950 w Fy(IDASetErrFile)p 38279 23242
+V 8885 w(stderr)p 50092 23242 V -22 24570 V 664 24172
+a FA(Data)h(for)f(residual)h(function)p 21840 24570 V
+9322 w Fy(IDASetRdata)p 38279 24570 V 10047 w(NULL)p
+50092 24570 V -22 25898 V 664 25500 a FA(Maxim)-31 b(um)371
+b(order)e(for)g(BDF)f(metho)31 b(d)p 21840 25898 V 5635
+w Fy(IDASetMaxOrd)p 38279 25898 V 9466 w FA(5)p 50092
+25898 V -22 27227 V 664 26828 a(Maxim)-31 b(um)371 b(no.)493
+b(of)370 b(in)-31 b(ternal)371 b(steps)d(b)31 b(efore)369
+b Fp(t)19747 26994 y Fn(out)p 21840 27227 V 22527 26828
+a Fy(IDASetMaxNumSteps)p 38279 27227 V 6561 w FA(500)p
+50092 27227 V -22 28555 V 664 28157 a(Initial)i(step)e(size)p
+21840 28555 V 14502 w Fy(IDASetInitStep)p 38279 28555
+V 8304 w FA(estimated)p 50092 28555 V -22 29883 V 664
+29485 a(Maxim)-31 b(um)371 b(absolute)g(step)e(size)p
+21840 29883 V 8161 w Fy(IDASetMaxStep)p 38279 29883 V
+8885 w Fs(1)p 50092 29883 V -22 31212 V 664 30813 a FA(V)-92
+b(alue)370 b(of)g Fp(t)5400 30979 y Fm(stop)p 21840 31212
+V 22527 30813 a Fy(IDASetStopTime)p 38279 31212 V 8304
+w Fs(1)p 50092 31212 V -22 32540 V 664 32142 a FA(Maxim)-31
+b(um)371 b(no.)493 b(of)370 b(error)e(test)i(failures)p
+21840 32540 V 5019 w Fy(IDASetMaxErrTestFails)p 38279
+32540 V 4237 w FA(10)p 50092 32540 V -22 33868 V 664
+33470 a(Maxim)-31 b(um)371 b(no.)493 b(of)370 b(nonlinear)g(iterations)
+p 21840 33868 V 3957 w Fy(IDASetMaxNonlinIters)p 38279
+33868 V 4818 w FA(4)p 50092 33868 V -22 35197 V 664 34798
+a(Maxim)-31 b(um)371 b(no.)493 b(of)370 b(con)-31 b(v)g(ergence)370
+b(failures)p 21840 35197 V 3771 w Fy(IDASetMaxConvFails)p
+38279 35197 V 5980 w FA(10)p 50092 35197 V -22 36525
+V 664 36127 a(Maxim)-31 b(um)371 b(no.)493 b(of)370 b(error)e(test)i
+(failures)p 21840 36525 V 5019 w Fy(IDASetMaxErrTestFails)p
+38279 36525 V 4237 w FA(7)p 50092 36525 V -22 37854 V
+664 37455 a(Co)31 b(e\256.)493 b(in)370 b(the)f(nonlinear)h(con)-31
+b(v)g(ergence)370 b(test)p 21840 37854 V 2572 w Fy
+(IDASetNonlinConvCoef)p 38279 37854 V 4818 w FA(0.33)p
+50092 37854 V -22 39182 V 664 38783 a(Suppress)e(alg.)494
+b(v)-61 b(ars.)492 b(from)369 b(error)g(test)p 21840
+39182 V 5154 w Fy(IDASetSuppressAlg)p 38279 39182 V 6561
+w(FALSE)p 50092 39182 V -22 40510 V 664 40112 a FA(V)-92
+b(ariable)371 b(t)-31 b(yp)31 b(es)369 b(\(di\256eren)-31
+b(tial/algebraic\))p 21840 40510 V 3680 w Fy(IDASetId)p
+38279 40510 V 11790 w(NULL)p 50092 40510 V -22 41839
+V 664 41440 a FA(Inequalit)g(y)371 b(constrain)-31 b(ts)371
+b(on)e(solution)p 21840 41839 V 5639 w Fy(IDASetConstraints)p
+38279 41839 V 6561 w(NULL)p 50092 41839 V -22 43167 V
+664 42768 a FA(In)-31 b(tegration)372 b(tolerances)p
+21840 43167 V 11335 w Fy(IDASetTolerances)p 38279 43167
+V 7142 w FA(none)p 50092 43167 V 0 43211 50115 45 v -22
+44540 45 1329 v 15790 44141 a FB(ID)-35 b(A)424 b(initial)f(conditions)
+i(calculation)p 50092 44540 V 0 44584 50115 45 v -22
+45912 45 1329 v 664 45514 a FA(Co)31 b(e\256.)493 b(in)370
+b(the)f(nonlinear)h(con)-31 b(v)g(ergence)370 b(test)p
+21840 45912 V 2572 w Fy(IDASetNonlinConvCoefIC)p 38279
+45912 V 3656 w FA(0.0033)p 50092 45912 V -22 47241 V
+664 46842 a(Maxim)-31 b(um)371 b(no.)493 b(of)370 b(steps)p
+21840 47241 V 10965 w Fy(IDASetMaxNumStepsIC)p 38279
+47241 V 5399 w FA(5)p 50092 47241 V -22 48569 V 664 48170
+a(Maxim)-31 b(um)371 b(no.)493 b(of)370 b(Jacobian/precond.)495
+b(ev)-61 b(als.)p 21840 48569 V 1329 w Fy(IDASetMaxNumJacsIC)p
+38279 48569 V 5980 w FA(4)p 50092 48569 V -22 49897 V
+664 49499 a(Maxim)-31 b(um)371 b(no.)493 b(of)370 b(Newton)h
+(iterations)p 21840 49897 V 4728 w Fy(IDASetMaxNumItersIC)p
+38279 49897 V 5399 w FA(10)p 50092 49897 V -22 51226
+V 664 50827 a(T)-92 b(urn)369 b(o\256)g(linesearc)-31
+b(h)p 21840 51226 V 12842 w Fy(IDASetLineSearchOffIC)p
+38279 51226 V 4237 w(FALSE)p 50092 51226 V -22 52554
+V 664 52155 a FA(Lo)g(w)g(er)370 b(b)31 b(ound)369 b(on)h(Newton)g
+(step)p 21840 52554 V 7571 w Fy(IDASetStepToleranceIC)p
+38279 52554 V 4237 w FA(\(2)p Fp(=)p FA(3\)uround)p 50092
+52554 V 0 52598 50115 45 v -22 53927 45 1329 v 18075
+53528 a FB(ID)-35 b(ADENSE)426 b(linear)e(solv)-35 b(er)p
+50092 53927 V 0 53971 50115 45 v -22 55299 45 1329 v
+664 54901 a FA(Dense)368 b(Jacobian)j(function)g(and)e(data)p
+21840 55299 V 5346 w Fy(IDADenseSetJacFn)p 38279 55299
+V 7142 w FA(in)-31 b(ternal)371 b(DQ,)e(NULL)p 50092
+55299 V 0 55344 50115 45 v -22 56672 45 1329 v 18331
+56273 a FB(ID)-35 b(ABAND)425 b(linear)f(solv)-35 b(er)p
+50092 56672 V 0 56716 50115 45 v -22 58044 45 1329 v
+664 57646 a FA(Band)370 b(Jacobian)g(function)h(and)e(data)p
+21840 58044 V 5660 w Fy(IDABandSetJacFn)p 38279 58044
+V 7723 w FA(in)-31 b(ternal)371 b(DQ,)e(NULL)p 50092
+58044 V 0 58089 50115 45 v -22 59417 45 1329 v 17880
+59019 a FB(ID)-35 b(ASPGMR)425 b(linear)g(solv)-35 b(er)p
+50092 59417 V 0 59461 50115 45 v -22 60790 45 1329 v
+664 60391 a FA(Preconditioner)371 b(functions)f(and)g(data)p
+21840 60790 V 5324 w Fy(IDASpgmrSetPreconditioner)p 38279
+60790 V 1913 w FA(NULL,)g(NULL,)f(NULL)p 50092 60790
+V -22 62118 V 664 61720 a(Jacobian)i(times)f(v)-31 b(ector)370
+b(function)h(and)e(data)p 21840 62118 V 2314 w Fy
+(IDASpgmrSetJacTimesVecFn)p 38279 62118 V 2494 w FA(in)-31
+b(ternal)371 b(DQ,)e(NULL)p 50092 62118 V -22 63446 V
+664 63048 a(T)-31 b(yp)31 b(e)370 b(of)g(Gram-Sc)-31
+b(hmidt)370 b(orthogonalization)p 21840 63446 V 1837
+w Fy(IDASpgmrSetGSType)p 38279 63446 V 6561 w FA(classical)h(GS)p
+50092 63446 V -22 64775 V 664 64376 a(Maxim)-31 b(um)371
+b(no.)493 b(of)370 b(restarts)p 21840 64775 V 9729 w
+Fy(IDASpgmrSetMaxRestarts)p 38279 64775 V 3656 w FA(5)p
+50092 64775 V -22 66103 V 664 65705 a(F)-92 b(actor)370
+b(in)f(linear)h(con)-31 b(v)g(ergence)370 b(test)p 21840
+66103 V 6120 w Fy(IDASpgmrSetEpsLin)p 38279 66103 V 6561
+w FA(0.05)p 50092 66103 V -22 67432 V 664 67033 a(F)-92
+b(actor)370 b(in)f(DQ)g(incremen)-31 b(t)370 b(calculation)p
+21840 67432 V 4671 w Fy(IDASpgmrSetIncrementFactor)p
+38279 67432 V 1332 w FA(1.0)p 50092 67432 V 0 67476 50115
+45 v Black Black Black eop
+%%Page: 27 35
+27 34 bop Black 4000 2701 a FB(5.4)425 b(User-callable)g(functions)
+32020 b(27)p 4000 3144 48001 45 v Black Black 4000 6974
+a FA(Return)369 b(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+10814 8744 a Fy(IDA)p 12627 8744 349 45 v 419 w(SUCCESS)p
+Black 973 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 10814 10292 a
+Fy(IDA)p 12627 10292 V 419 w(MEM)p 14789 10292 V 419
+w(NULL)p Black 554 w FA(The)f Fy(ida)p 22104 10292 V
+419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)p Black 4000 12062 a(Notes)p Black 4072 w(The)f(default)i(v)-61
+b(alue)370 b(for)f Fy(errfp)h FA(is)f Fy(stderr)p FA(.)10814
+13831 y(P)-31 b(assing)398 b(a)e(v)-61 b(alue)397 b Fy(NULL)g
+FA(disables)g(all)h(future)e(error)g(message)h(output)g(\(except)h(for)
+e(the)h(case)g(in)10814 15160 y(whic)-31 b(h)370 b(the)g
+Fx(id)-25 b(a)369 b FA(memory)h(p)31 b(oin)-31 b(ter)370
+b(is)f Fy(NULL)p FA(\).)11942 17768 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+
+
+ at endspecial Fd(!)1520 b FA(If)392 b Fy(IDASetErrFile)h
+FA(is)f(to)h(b)31 b(e)391 b(called,)399 b(it)393 b(should)f(b)31
+b(e)392 b(called)h(b)31 b(efore)391 b(an)-31 b(y)393
+b(other)f(optional)10814 19096 y(input)370 b(functions,)h(in)e(order)g
+(to)h(tak)-31 b(e)370 b(e\256ect)f(for)g(an)-31 b(y)370
+b(later)g(error)e(message.)p 4000 21364 7146 45 v 4000
+22704 45 1341 v 4376 22372 a Fy(IDASetRdata)p 11101 22704
+V 4000 22748 7146 45 v Black 4000 24101 a FA(Call)p Black
+4848 w Fy(flag)582 b(=)f(IDASetRdata\(ida)p 23667 24101
+349 45 v 421 w(mem,)g(res)p 28736 24101 V 419 w(data\);)p
+Black 4000 25870 a FA(Description)p Black 1286 w(The)402
+b(function)h Fy(IDASetRdata)g FA(sp)31 b(eci\257es)401
+b(the)h(user)f(data)i(blo)31 b(c)-31 b(k)403 b Fy(res)p
+40242 25870 V 419 w(data)f FA(and)g(attac)-31 b(hes)403
+b(it)g(to)10814 27199 y(the)369 b(main)i Fx(id)-25 b(a)369
+b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 4000 28968
+a(Argumen)g(ts)p Black Black 1517 w Fy(ida)p 12627 28968
+V 419 w(mem)p Black 1135 w FA(\()p Fy(void)582 b(*)p
+FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25
+b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814
+30517 a Fy(res)p 12627 30517 V 419 w(data)p Black 554
+w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f(user)f(data.)p Black 4000 32286
+a(Return)h(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370
+b Fy(int)p FA(\))g(is)f(one)g(of)p Black 10814 34056
+a Fy(IDA)p 12627 34056 V 419 w(SUCCESS)p Black 973 w
+FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31 b(een)368
+b(successfully)i(set.)p Black 10814 35604 a Fy(IDA)p
+12627 35604 V 419 w(MEM)p 14789 35604 V 419 w(NULL)p
+Black 554 w FA(The)f Fy(ida)p 22104 35604 V 419 w(mem)h
+FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p FA(.)p Black
+4000 37374 a(Notes)p Black 4072 w(If)344 b Fy(res)p 13709
+37374 V 419 w(data)h FA(is)f(not)i(sp)31 b(eci\257ed,)349
+b(a)c Fy(NULL)g FA(p)31 b(oin)-31 b(ter)345 b(is)g(passed)f(to)h(all)h
+(user)d(functions)j(that)g(ha)-31 b(v)g(e)345 b(it)10814
+38702 y(as)369 b(an)h(argumen)-31 b(t.)p 4000 40970 7727
+45 v 4000 42311 45 1341 v 4376 41978 a Fy(IDASetMaxOrd)p
+11682 42311 V 4000 42355 7727 45 v Black 4000 43707 a
+FA(Call)p Black 4848 w Fy(flag)582 b(=)f(IDASetMaxOrd\(ida)p
+24248 43707 349 45 v 421 w(mem,)h(maxord\);)p Black 4000
+45477 a FA(Description)p Black 1286 w(The)590 b(function)h
+Fy(IDASetMaxOrd)g FA(sp)31 b(eci\257es)589 b(the)h(maxim)-31
+b(um)593 b(order)c(of)h(the)g(linear)h(m)-31 b(ultistep)10814
+46805 y(metho)31 b(d.)p Black 4000 48575 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 12627 48575 V 419
+w(mem)p Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369
+b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814 50123
+a Fy(maxord)p Black 973 w FA(\()p Fy(int)p FA(\))370
+b(v)-61 b(alue)370 b(of)g(the)f(maxim)-31 b(um)372 b(metho)31
+b(d)370 b(order.)p Black 4000 51893 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 10814 53662 a Fy(IDA)p
+12627 53662 V 419 w(SUCCESS)p Black 1554 w FA(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 10814 55211 a Fy(IDA)p 12627 55211 V 419 w(MEM)p
+14789 55211 V 419 w(NULL)p Black 1135 w FA(The)g Fy(ida)p
+22685 55211 V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)370
+b(is)f Fy(NULL)p FA(.)p Black 10814 56759 a Fy(IDA)p
+12627 56759 V 419 w(ILL)p 14789 56759 V 419 w(INPUT)p
+Black 554 w FA(The)516 b(sp)31 b(eci\257ed)514 b(v)-61
+b(alue)516 b Fy(maxord)g FA(is)f(negativ)-31 b(e,)555
+b(or)515 b(larger)h(than)g(its)g(previous)18597 58087
+y(v)-61 b(alue.)p Black 4000 59857 a(Notes)p Black 4072
+w(The)337 b(default)h(v)-61 b(alue)337 b(is)f(5.)483
+b(Since)336 b Fy(maxord)i FA(a\256ects)e(the)h(memory)h(requiremen)-31
+b(ts)337 b(for)f(the)h(in)-31 b(ternal)10814 61185 y
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k,)371
+b(its)e(v)-61 b(alue)370 b(can)g(not)f(b)31 b(e)369 b(increased)g(past)
+h(its)f(previous)h(v)-61 b(alue.)p 4000 63453 10633 45
+v 4000 65039 45 1587 v 4376 64461 a Fy(IDASetMaxNumSteps)p
+14588 65039 V 4000 65083 10633 45 v Black 4000 66363
+a FA(Call)p Black 4848 w Fy(flag)582 b(=)f(IDASetMaxNumSteps\(ida)p
+27153 66363 349 45 v 422 w(mem,)g(mxsteps\);)p Black
+4000 68133 a FA(Description)p Black 1286 w(The)314 b(function)h
+Fy(IDASetMaxNumSteps)i FA(sp)31 b(eci\257es)313 b(the)h(maxim)-31
+b(um)317 b(n)-31 b(um)g(b)31 b(er)314 b(of)g(steps)f(to)i(b)31
+b(e)314 b(tak)-31 b(en)10814 69461 y(b)g(y)369 b(the)h(solv)-31
+b(er)369 b(in)h(its)g(attempt)h(to)f(reac)-31 b(h)369
+b(the)g(next)h(output)h(time.)p Black 4000 71231 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 12627 71231 V 419
+w(mem)p Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369
+b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814 72779
+a Fy(mxsteps)p Black 554 w FA(\()p Fy(long)583 b(int)p
+FA(\))370 b(maxim)-31 b(um)371 b(allo)-31 b(w)g(ed)372
+b(n)-31 b(um)g(b)31 b(er)370 b(of)f(steps.)p Black 4000
+74549 a(Return)g(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370
+b Fy(int)p FA(\))g(is)f(one)g(of)p Black 10814 76319
+a Fy(IDA)p 12627 76319 V 419 w(SUCCESS)p Black 1554 w
+FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31 b(een)369
+b(successfully)g(set.)p Black 10814 77867 a Fy(IDA)p
+12627 77867 V 419 w(MEM)p 14789 77867 V 419 w(NULL)p
+Black 1135 w FA(The)g Fy(ida)p 22685 77867 V 419 w(mem)h
+FA(p)31 b(oin)-31 b(ter)370 b(is)f Fy(NULL)p FA(.)p Black
+Black eop
+%%Page: 28 36
+28 35 bop Black 0 2701 a FB(28)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black Black 6814 6974 a Fy(IDA)p
+8627 6974 349 45 v 419 w(ILL)p 10789 6974 V 419 w(INPUT)p
+Black 554 w(mxsteps)370 b FA(is)f(non-p)31 b(ositiv)-31
+b(e.)p Black 0 8766 a(Notes)p Black 4072 w(P)g(assing)370
+b Fy(mxsteps)p FA(=)309 b(0)369 b(results)g(in)g Fx(id)-25
+b(a)370 b FA(using)f(the)h(default)g(v)-61 b(alue)370
+b(\(500\).)p 0 11213 8889 45 v 0 12799 45 1587 v 376
+12221 a Fy(IDASetInitStep)p 8845 12799 V 0 12843 8889
+45 v Black 0 14133 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDASetInitStep\(ida)p 21410 14133 349 45 v 421
+w(mem,)h(hin\);)p Black 0 15925 a FA(Description)p Black
+1286 w(The)369 b(function)i Fy(IDASetInitStep)g FA(sp)31
+b(eci\257es)368 b(the)i(initial)i(step)d(size.)p Black
+0 17718 a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p
+8627 17718 V 419 w(mem)p Black 554 w FA(\()p Fy(void)582
+b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p
+Black 6814 19278 a Fy(hin)p Black 2716 w FA(\()p Fy(realtype)p
+FA(\))371 b(v)-61 b(alue)370 b(of)f(the)h(initial)i(step)d(size.)p
+Black 0 21070 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+6814 22862 a Fy(IDA)p 8627 22862 V 419 w(SUCCESS)p Black
+973 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 6814 24422 a
+Fy(IDA)p 8627 24422 V 419 w(MEM)p 10789 24422 V 419 w(NULL)p
+Black 554 w FA(The)f Fy(ida)p 18104 24422 V 419 w(mem)h
+FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p FA(.)p Black
+0 26214 a(Notes)p Black 4072 w(By)424 b(default,)439
+b Fx(id)-25 b(a)423 b FA(estimates)i(the)f(initial)i(step)e(as)f(the)h
+(solution)i(of)e Fs(k)p Fp(hy)38047 25812 y Fo(0)38357
+26214 y Fs(k)38910 26380 y Fn(WRMS)42184 26214 y FA(=)398
+b(1)p Fp(=)p FA(2,)439 b(with)6814 27542 y(an)369 b(added)h
+(restriction)g(that)g Fs(j)p Fp(h)p Fs(j)309 b(\267)e
+Fp(:)p FA(001)p Fs(j)p Fy(tout)584 b(-)e(t0)p Fs(j)p
+FA(.)p 0 29989 8308 45 v 0 31576 45 1587 v 376 30998
+a Fy(IDASetMaxStep)p 8263 31576 V 0 31620 8308 45 v Black
+0 32910 a FA(Call)p Black 4848 w Fy(flag)g(=)f(IDASetMaxStep\(ida)p
+20829 32910 349 45 v 421 w(mem,)h(hmax\);)p Black 0 34702
+a FA(Description)p Black 1286 w(The)369 b(function)i
+Fy(IDASetMaxStep)g FA(sp)31 b(eci\257es)368 b(the)i(maxim)-31
+b(um)372 b(absolute)e(v)-61 b(alue)370 b(of)f(the)h(step)f(size.)p
+Black 0 36494 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fy(ida)p 8627 36494 V 419 w(mem)p Black 554 w FA(\()p
+Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 6814 38054 a Fy(hmax)p Black 2135 w FA(\()p
+Fy(realtype)p FA(\))371 b(maxim)-31 b(um)372 b(absolute)e(v)-61
+b(alue)370 b(of)g(the)f(step)g(size.)p Black 0 39846
+a(Return)g(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370
+b Fy(int)p FA(\))g(is)f(one)g(of)p Black 6814 41638 a
+Fy(IDA)p 8627 41638 V 419 w(SUCCESS)p Black 1554 w FA(The)g(optional)j
+(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 6814 43199 a Fy(IDA)p 8627 43199 V 419 w(MEM)p
+10789 43199 V 419 w(NULL)p Black 1135 w FA(The)g Fy(ida)p
+18685 43199 V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)370
+b(is)f Fy(NULL)p FA(.)p Black 6814 44759 a Fy(IDA)p 8627
+44759 V 419 w(ILL)p 10789 44759 V 419 w(INPUT)p Black
+554 w FA(Either)275 b Fy(hmax)g FA(is)g(not)g(p)31 b(ositiv)-31
+b(e)277 b(or)d(it)i(is)e(smaller)i(than)f(the)g(minim)-31
+b(um)277 b(allo)-31 b(w)g(able)14597 46087 y(step.)p
+Black 0 47879 a(Notes)p Black 4072 w(P)g(ass)369 b Fy(hmax)p
+FA(=)308 b(0)370 b(to)g(obtain)h(the)e(default)i(v)-61
+b(alue)369 b Fs(1)p FA(.)p 0 50214 8889 45 v 0 51801
+45 1587 v 376 51223 a Fy(IDASetStopTime)p 8845 51801
+V 0 51845 8889 45 v Black 0 53135 a FA(Call)p Black 4848
+w Fy(flag)582 b(=)f(IDASetStopTime\(ida)p 21410 53135
+349 45 v 421 w(mem,)h(tstop\);)p Black 0 54927 a FA(Description)p
+Black 1286 w(The)426 b(function)h Fy(IDASetStopTime)g
+FA(sp)31 b(eci\257es)425 b(the)g(v)-61 b(alue)426 b(of)g(the)g(indep)31
+b(enden)-31 b(t)426 b(v)-61 b(ariable)426 b Fp(t)f FA(past)6814
+56255 y(whic)-31 b(h)370 b(the)g(solution)h(is)e(not)h(to)g(pro)31
+b(ceed.)p Black 0 58047 a(Argumen)-31 b(ts)p Black Black
+1517 w Fy(ida)p 8627 58047 V 419 w(mem)p Black 554 w
+FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31
+b(c)-31 b(k.)p Black 6814 59608 a Fy(tstop)p Black 1554
+w FA(\()p Fy(realtype)p FA(\))329 b(v)-61 b(alue)329
+b(of)f(the)g(indep)31 b(enden)-31 b(t)328 b(v)-61 b(ariable)329
+b(past)f(whic)-31 b(h)329 b(the)f(solution)h(should)11273
+60936 y(not)370 b(pro)31 b(ceed.)p Black 0 62728 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370
+b Fy(int)p FA(\))g(is)f(one)g(of)p Black 6814 64520 a
+Fy(IDA)p 8627 64520 V 419 w(SUCCESS)p Black 973 w FA(The)g(optional)j
+(v)-61 b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 66080 a Fy(IDA)p 8627 66080 V 419 w(MEM)p
+10789 66080 V 419 w(NULL)p Black 554 w FA(The)f Fy(ida)p
+18104 66080 V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369
+b(is)h Fy(NULL)p FA(.)p Black 0 67872 a(Notes)p Black
+4072 w(The)f(default,)i(if)f(this)g(routine)g(is)f(not)h(called,)h(is)e
+(that)h(no)g(stop)f(time)i(is)e(imp)31 b(osed.)p 0 70207
+12957 45 v 0 71548 45 1341 v 376 71216 a Fy(IDASetMaxErrTestFails)p
+12913 71548 V 0 71592 12957 45 v Black 0 72954 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDASetMaxErrTestFails\(ida)p
+25477 72954 349 45 v 422 w(mem,)h(maxnef\);)p Black 0
+74746 a FA(Description)p Black 1286 w(The)463 b(function)i
+Fy(IDASetMaxErrTestFails)h FA(sp)31 b(eci\257es)463 b(the)g(maxim)-31
+b(um)466 b(n)-31 b(um)g(b)31 b(er)463 b(of)h(error)e(test)6814
+76075 y(failures)370 b(in)f(attempting)k(one)c(step.)p
+Black 0 77867 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fy(ida)p 8627 77867 V 419 w(mem)p Black 554 w FA(\()p
+Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black Black eop
+%%Page: 29 37
+29 36 bop Black 4000 2701 a FB(5.4)425 b(User-callable)g(functions)
+32020 b(29)p 4000 3144 48001 45 v Black Black 10814 6974
+a Fy(maxnef)p Black 973 w FA(\()p Fy(int)p FA(\))370
+b(maxim)-31 b(um)372 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(error)e(test)i
+(failures)f(allo)-31 b(w)g(ed)372 b(on)e(one)f(step.)p
+Black 4000 8971 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+10814 10967 a Fy(IDA)p 12627 10967 349 45 v 419 w(SUCCESS)p
+Black 973 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 10814 12630 a
+Fy(IDA)p 12627 12630 V 419 w(MEM)p 14789 12630 V 419
+w(NULL)p Black 554 w FA(The)f Fy(ida)p 22104 12630 V
+419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)p Black 4000 14626 a(Notes)p Black 4072 w(The)f(default)i(v)-61
+b(alue)370 b(is)f(7.)p 4000 17606 12376 45 v 4000 18947
+45 1341 v 4376 18615 a Fy(IDASetMaxNonlinIters)p 16331
+18947 V 4000 18991 12376 45 v Black 4000 20456 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDASetMaxNonlinIters\(ida)p
+28896 20456 349 45 v 422 w(mem,)h(maxcor\);)p Black 4000
+22453 a FA(Description)p Black 1286 w(The)549 b(function)i
+Fy(IDASetMaxNonlinIters)h FA(sp)31 b(eci\257es)548 b(the)i(maxim)-31
+b(um)552 b(n)-31 b(um)g(b)31 b(er)549 b(of)h(nonlinear)10814
+23781 y(solv)-31 b(er)370 b(iterations)h(at)f(one)f(step.)p
+Black 4000 25778 a(Argumen)-31 b(ts)p Black Black 1517
+w Fy(ida)p 12627 25778 V 419 w(mem)p Black 554 w FA(\()p
+Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 10814 27440 a Fy(maxcor)p Black 973 w FA(\()p
+Fy(int)p FA(\))370 b(maxim)-31 b(um)372 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(nonlinear)g(solv)-31 b(er)370 b(iterations)h(allo)-31
+b(w)g(ed)372 b(on)d(one)h(step.)p Black 4000 29437 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 10814 31434 a Fy(IDA)p
+12627 31434 V 419 w(SUCCESS)p Black 973 w FA(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 33096 a Fy(IDA)p 12627 33096 V 419 w(MEM)p
+14789 33096 V 419 w(NULL)p Black 554 w FA(The)f Fy(ida)p
+22104 33096 V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369
+b(is)h Fy(NULL)p FA(.)p Black 4000 35093 a(Notes)p Black
+4072 w(The)f(default)i(v)-61 b(alue)370 b(is)f(3.)p 4000
+38073 11214 45 v 4000 39413 45 1341 v 4376 39081 a Fy
+(IDASetMaxConvFails)p 15169 39413 V 4000 39457 11214
+45 v Black 4000 40922 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDASetMaxConvFails\(ida)p 27734 40922 349 45 v
+422 w(mem,)g(maxncf\);)p Black 4000 42919 a FA(Description)p
+Black 1286 w(The)309 b(function)h Fy(IDASetMaxConvFails)i
+FA(sp)31 b(eci\257es)308 b(the)h(maxim)-31 b(um)311 b(n)-31
+b(um)g(b)31 b(er)309 b(of)g(nonlinear)h(solv)-31 b(er)10814
+44248 y(con)g(v)g(ergence)370 b(failures)g(at)g(one)f(step.)p
+Black 4000 46244 a(Argumen)-31 b(ts)p Black Black 1517
+w Fy(ida)p 12627 46244 V 419 w(mem)p Black 554 w FA(\()p
+Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 10814 47907 a Fy(maxncf)p Black 973 w FA(\()p
+Fy(int)p FA(\))298 b(maxim)-31 b(um)299 b(n)-31 b(um)g(b)31
+b(er)297 b(of)g(allo)-31 b(w)g(able)301 b(nonlinear)d(solv)-31
+b(er)297 b(con)-31 b(v)g(ergence)298 b(failures)g(on)15273
+49235 y(one)369 b(step.)p Black 4000 51232 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 10814 53228 a Fy(IDA)p
+12627 53228 V 419 w(SUCCESS)p Black 973 w FA(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 10814 54891 a Fy(IDA)p 12627 54891 V 419 w(MEM)p
+14789 54891 V 419 w(NULL)p Black 554 w FA(The)f Fy(ida)p
+22104 54891 V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369
+b(is)h Fy(NULL)p FA(.)p Black 4000 56888 a(Notes)p Black
+4072 w(The)f(default)i(v)-61 b(alue)370 b(is)f(10.)p
+4000 59868 12376 45 v 4000 61208 45 1341 v 4376 60876
+a Fy(IDASetNonlinConvCoef)p 16331 61208 V 4000 61252
+12376 45 v Black 4000 62717 a FA(Call)p Black 4848 w
+Fy(flag)582 b(=)f(IDASetNonlinConvCoef\(ida)p 28896 62717
+349 45 v 422 w(mem,)h(nlscoef\);)p Black 4000 64714 a
+FA(Description)p Black 1286 w(The)365 b(function)i Fy
+(IDASetNonlinConvCoef)g FA(sp)31 b(eci\257es)365 b(the)g(safet)-31
+b(y)366 b(factor)g(in)f(the)g(nonlinear)i(con-)10814
+66042 y(v)-31 b(ergence)369 b(test;)h(see)f(Chapter)h(3,)g(Eq.)493
+b(\(3.7\).)p Black 4000 68039 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fy(ida)p 12627 68039 V 419 w(mem)p Black
+554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31
+b(c)-31 b(k.)p Black 10814 69701 a Fy(nlscoef)p Black
+554 w FA(\()p Fy(realtype)p FA(\))372 b(co)31 b(e\261cien)-31
+b(t)370 b(in)g(nonlinear)g(con)-31 b(v)g(ergence)370
+b(test.)p Black 4000 71698 a(Return)f(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 10814 73695 a Fy(IDA)p 12627 73695 V 419 w(SUCCESS)p
+Black 973 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 10814 75357 a
+Fy(IDA)p 12627 75357 V 419 w(MEM)p 14789 75357 V 419
+w(NULL)p Black 554 w FA(The)f Fy(ida)p 22104 75357 V
+419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)p Black 4000 77354 a(Notes)p Black 4072 w(The)f(default)i(v)-61
+b(alue)370 b(is)f(0)p Fp(:)p FA(33.)p Black Black eop
+%%Page: 30 38
+30 37 bop Black 0 2701 a FB(30)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black 0 5965 10633 45 v 0 7552
+45 1587 v 376 6974 a Fy(IDASetSuppressAlg)p 10588 7552
+V 0 7596 10633 45 v Black 0 8880 a FA(Call)p Black 4848
+w Fy(flag)582 b(=)f(IDASetSuppressAlg\(ida)p 23153 8880
+349 45 v 422 w(mem,)g(suppressalg\);)p Black 0 10659
+a FA(Description)p Black 1286 w(The)317 b(function)g
+Fy(IDASetSuppressAlg)i FA(indicates)f(whether)e(or)h(not)g(to)g
+(suppress)e(algebraic)j(v)-61 b(ari-)6814 11987 y(ables)370
+b(in)f(the)g(lo)31 b(cal)371 b(error)d(test.)p Black
+0 13766 a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p
+8627 13766 V 419 w(mem)p Black 3041 w FA(\()p Fy(void)582
+b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fx(id)-25 b(a)369 b FA(memory)i(blo)31 b(c)-31 b(k.)p
+Black 6814 15320 a Fy(suppresslag)p Black 555 w FA(\()p
+Fy(booleantype)p FA(\))305 b(indicates)f(whether)e(to)h(suppress)e(\()p
+Fy(TRUE)p FA(\))i(or)g(not)g(\()p Fy(FALSE)p FA(\))h(the)13760
+16648 y(algebraic)371 b(v)-61 b(ariables)370 b(in)f(the)h(lo)31
+b(cal)370 b(error)e(test.)p Black 0 18427 a(Return)h(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 6814 20206 a Fy(IDA)p 8627
+20206 V 419 w(SUCCESS)p Black 973 w FA(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 21760 a Fy(IDA)p 8627 21760 V 419 w(MEM)p
+10789 21760 V 419 w(NULL)p Black 554 w FA(The)f Fy(ida)p
+18104 21760 V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369
+b(is)h Fy(NULL)p FA(.)p Black 0 23539 a(Notes)p Black
+4072 w(The)f(default)i(v)-61 b(alue)370 b(is)f Fy(FALSE)p
+FA(.)6814 25318 y(If)337 b Fy(suppresslag)p FA(=)p Fy(TRUE)j
+FA(is)e(selected,)345 b(then)338 b(the)g Fy(id)g FA(v)-31
+b(ector)338 b(m)-31 b(ust)338 b(b)31 b(e)338 b(set)f(\(through)i
+Fy(IDASetId)p FA(\))6814 26646 y(to)370 b(sp)31 b(ecify)369
+b(the)h(algebraic)h(comp)31 b(onen)-31 b(ts.)p 0 28940
+5402 45 v 0 30281 45 1341 v 376 29949 a Fy(IDASetId)p
+5358 30281 V 0 30325 5402 45 v Black 0 31681 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDASetId\(ida)p 17924
+31681 349 45 v 420 w(mem,)h(id\);)p Black 0 33460 a FA(Description)p
+Black 1286 w(The)369 b(function)i Fy(IDASetId)f FA(sp)31
+b(eci\257es)369 b(algebraic/di\256eren)-31 b(tial)373
+b(comp)31 b(onen)-31 b(ts)370 b(in)g(the)f Fp(y)409 b
+FA(v)-31 b(ector.)p Black 0 35239 a(Argumen)g(ts)p Black
+Black 1517 w Fy(ida)p 8627 35239 V 419 w(mem)p Black
+554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31
+b(c)-31 b(k.)p Black 6814 36793 a Fy(id)p Black 3297
+w FA(\()p Fy(N)p 12354 36793 V 419 w(Vector)p FA(\))309
+b(state)g(v)-31 b(ector.)473 b(A)308 b(v)-61 b(alue)308
+b(of)h(1)p Fp(:)p FA(0)g(indicates)g(a)f(di\256eren)-31
+b(tial)310 b(v)-61 b(ariable,)322 b(while)11273 38121
+y(0)p Fp(:)p FA(0)370 b(indicates)h(an)e(algebraic)i(v)-61
+b(ariable.)p Black 0 39900 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 6814 41679 a Fy(IDA)p 8627 41679 V 419 w(SUCCESS)p
+Black 973 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 6814 43233 a
+Fy(IDA)p 8627 43233 V 419 w(MEM)p 10789 43233 V 419 w(NULL)p
+Black 554 w FA(The)f Fy(ida)p 18104 43233 V 419 w(mem)h
+FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p FA(.)p Black
+0 45012 a(Notes)p Black 4072 w(The)328 b(v)-31 b(ector)329
+b Fy(id)f FA(is)f(required)h(if)g(the)g(algebraic)i(v)-61
+b(ariables)328 b(are)g(to)h(b)31 b(e)327 b(suppressed)f(from)i(the)g
+(lo)31 b(cal)6814 46340 y(error)497 b(test)i(\(see)f
+Fy(IDASetSuppressAlg)p FA(\))j(or)d(if)h Fy(IDACalcIC)g
+FA(is)f(to)h(b)31 b(e)497 b(called)j(with)f Fy(icopt)g
+FA(=)6814 47669 y Fy(IDA)p 8627 47669 V 419 w(YA)p 10208
+47669 V 419 w(YDP)p 12370 47669 V 418 w(INIT)370 b FA(\(see)f
+Fs(x)p FA(5.4.3\).)p 0 50074 10633 45 v 0 51415 45 1341
+v 376 51083 a Fy(IDASetConstraints)p 10588 51415 V 0
+51459 10633 45 v Black 0 52815 a FA(Call)p Black 4848
+w Fy(flag)582 b(=)f(IDASetConstraints\(ida)p 23153 52815
+349 45 v 422 w(mem,)g(constraints\);)p Black 0 54594
+a FA(Description)p Black 1286 w(The)315 b(function)h
+Fy(IDASetConstraints)h FA(sp)31 b(eci\257es)314 b(a)h(v)-31
+b(ector)315 b(de\257ning)g(inequalit)-31 b(y)318 b(constrain)-31
+b(ts)316 b(for)6814 55923 y(eac)-31 b(h)370 b(comp)31
+b(onen)-31 b(t)370 b(of)g(the)g(solution)h(v)-31 b(ector)370
+b Fp(y)40 b FA(.)p Black 0 57702 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fy(ida)p 8627 57702 V 419 w(mem)p
+Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814 59256 a
+Fy(constraints)p Black 555 w FA(\()p Fy(N)p 14841 59256
+V 419 w(Vector)p FA(\))371 b(v)-31 b(ector)369 b(of)h(constrain)-31
+b(t)371 b(\260ags.)493 b(If)369 b Fy(constraints[i])i
+FA(is)p Black 11375 61035 a(0)p Fp(:)p FA(0)p Black 555
+w(then)e(no)h(constrain)-31 b(t)370 b(is)g(imp)31 b(osed)369
+b(on)h Fp(y)30143 61201 y Fm(i)30511 61035 y FA(.)p Black
+11375 62588 a(1)p Fp(:)p FA(0)p Black 555 w(then)f Fp(y)16407
+62754 y Fm(i)17144 62588 y FA(will)i(b)31 b(e)369 b(constrained)h(to)g
+(b)31 b(e)369 b Fp(y)30058 62754 y Fm(i)30733 62588 y
+Fs(\270)308 b FA(0)p Fp(:)p FA(0.)p Black 10514 64142
+a Fs(\241)p FA(1)p Fp(:)p FA(0)p Black 555 w(then)369
+b Fp(y)16407 64308 y Fm(i)17144 64142 y FA(will)i(b)31
+b(e)369 b(constrained)h(to)g(b)31 b(e)369 b Fp(y)30058
+64308 y Fm(i)30733 64142 y Fs(\267)308 b FA(0)p Fp(:)p
+FA(0.)p Black 11375 65696 a(2)p Fp(:)p FA(0)p Black 555
+w(then)369 b Fp(y)16407 65862 y Fm(i)17144 65696 y FA(will)i(b)31
+b(e)369 b(constrained)h(to)g(b)31 b(e)369 b Fp(y)30058
+65862 y Fm(i)30733 65696 y Fp(>)308 b FA(0)p Fp(:)p FA(0.)p
+Black 10514 67249 a Fs(\241)p FA(2)p Fp(:)p FA(0)p Black
+555 w(then)369 b Fp(y)16407 67415 y Fm(i)17144 67249
+y FA(will)i(b)31 b(e)369 b(constrained)h(to)g(b)31 b(e)369
+b Fp(y)30058 67415 y Fm(i)30733 67249 y Fp(<)308 b FA(0)p
+Fp(:)p FA(0.)p Black 0 69254 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 6814 71033 a Fy(IDA)p 8627 71033 V 419 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfuly)f(set.)p Black 6814 72587 a Fy(IDA)p
+8627 72587 V 419 w(MEM)p 10789 72587 V 419 w(NULL)p Black
+1135 w FA(The)h Fy(ida)p 18685 72587 V 419 w(mem)h FA(p)31
+b(oin)-31 b(ter)370 b(is)f Fy(NULL)p FA(.)p Black 6814
+74140 a Fy(IDA)p 8627 74140 V 419 w(ILL)p 10789 74140
+V 419 w(INPUT)p Black 554 w FA(The)g(constrain)-31 b(ts)371
+b(v)-31 b(ector)370 b(con)-31 b(tains)370 b(illegal)i(v)-61
+b(alues.)p Black 0 75919 a(Notes)p Black 4072 w(The)410
+b(presence)f(of)h(a)g(non-)p Fy(NULL)h FA(constrain)-31
+b(ts)411 b(v)-31 b(ector)411 b(that)g(is)f(not)g(0)p
+Fp(:)p FA(0)i(in)e(all)h(comp)31 b(onen)-31 b(ts)411
+b(will)6814 77248 y(cause)369 b(constrain)-31 b(t)371
+b(c)-31 b(hec)g(king)370 b(to)g(b)31 b(e)369 b(p)31 b(erformed.)p
+Black Black eop
+%%Page: 31 39
+31 38 bop Black 4000 2701 a FB(5.4)425 b(User-callable)g(functions)
+32020 b(31)p 4000 3144 48001 45 v Black 4000 5965 10052
+45 v 4000 7306 45 1341 v 4376 6974 a Fy(IDASetTolerances)p
+14007 7306 V 4000 7350 10052 45 v Black 4000 8836 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDASetTolerances\(ida)p
+26572 8836 349 45 v 421 w(mem,)h(itol,)g(reltol,)g(abstol\);)p
+Black 4000 10875 a FA(Description)p Black 1286 w(The)369
+b(function)i Fy(IDASetTolerances)g FA(resets)e(the)g(in)-31
+b(tegration)372 b(tolerances.)p Black 4000 12914 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 12627 12914 V 419
+w(mem)p Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369
+b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814 14598
+a Fy(itol)p Black 2135 w FA(\()p Fy(int)p FA(\))415 b(is)g(either)f
+Fy(IDA)p 24447 14598 V 419 w(SS)h FA(or)f Fy(IDA)p 29587
+14598 V 419 w(SV)p FA(,)h(where)f Fy(itol)p FA(=)p Fy(IDA)p
+40064 14598 V 419 w(SS)h FA(indicates)h(scalar)e(rela-)15273
+15927 y(tiv)-31 b(e)401 b(error)f(tolerance)i(and)e(scalar)h(absolute)h
+(error)e(tolerance,)410 b(while)401 b Fy(itol)p FA(=)p
+Fy(IDA)p 50488 15927 V 420 w(SV)15273 17255 y FA(indicates)407
+b(scalar)f(relativ)-31 b(e)408 b(error)c(tolerance)k(and)e(v)-31
+b(ector)406 b(absolute)h(error)e(tolerance.)15273 18583
+y(The)342 b(latter)g(c)-31 b(hoice)343 b(is)e(imp)31
+b(ortan)-31 b(t)344 b(when)e(the)g(absolute)h(error)d(tolerance)j
+(needs)e(to)h(b)31 b(e)15273 19912 y(di\256eren)-31 b(t)369
+b(for)g(eac)-31 b(h)370 b(comp)31 b(onen)-31 b(t)371
+b(of)f(the)f(D)-31 b(AE.)p Black 10814 21595 a Fy(reltol)p
+Black 973 w FA(\()p Fy(realtype)p FA(\))371 b(is)e(the)g(relativ)-31
+b(e)371 b(error)e(tolerance.)p Black 10814 23279 a Fy(abstol)p
+Black 973 w FA(\()p Fy(void)582 b(*)p FA(\))260 b(is)f(a)g(p)31
+b(oin)-31 b(ter)260 b(to)g(the)f(absolute)i(error)d(tolerance.)457
+b(If)259 b Fy(itol)p FA(=)p Fy(IDA)p 46435 23279 V 419
+w(SS)p FA(,)h Fy(abstol)15273 24607 y FA(m)-31 b(ust)355
+b(b)31 b(e)354 b(a)g(p)31 b(oin)-31 b(ter)355 b(to)g(a)g
+Fy(realtype)g FA(v)-61 b(ariable.)489 b(If)354 b Fy(itol)p
+FA(=)p Fy(IDA)p 42120 24607 V 419 w(SV)p FA(,)h Fy(abstol)g
+FA(m)-31 b(ust)355 b(b)31 b(e)15273 25936 y(an)369 b
+Fy(N)p 17461 25936 V 419 w(Vector)h FA(v)-61 b(ariable.)p
+Black 4000 27975 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 10814 30014 a Fy(IDA)p 12627 30014 V 419 w(SUCCESS)p
+Black 1554 w FA(The)g(tolerances)h(ha)-31 b(v)g(e)371
+b(b)31 b(een)368 b(successfully)h(set.)p Black 10814
+31698 a Fy(IDA)p 12627 31698 V 419 w(MEM)p 14789 31698
+V 419 w(NULL)p Black 1135 w FA(The)g Fy(ida)p 22685 31698
+V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)370 b(is)f Fy(NULL)p
+FA(.)p Black 10814 33382 a Fy(IDA)p 12627 33382 V 419
+w(ILL)p 14789 33382 V 419 w(INPUT)p Black 554 w FA(An)g(input)h
+(argumen)-31 b(t)371 b(has)e(an)g(illegal)j(v)-61 b(alue.)p
+Black 4000 35421 a(Notes)p Black 4072 w(The)353 b(in)-31
+b(tegration)355 b(tolerances)e(are)f(initially)k(sp)31
+b(eci\257ed)352 b(in)h(the)f(call)i(to)f Fy(IDAMalloc)g
+FA(\(see)g Fs(x)p FA(5.4.1\).)10814 36749 y(This)493
+b(function)h(call)g(to)g Fy(IDASetTolerances)h FA(is)e(needed)f(only)i
+(if)f(the)g(tolerances)h(are)e(b)31 b(eing)10814 38077
+y(c)-31 b(hanged)370 b(from)g(their)f(v)-61 b(alues)370
+b(b)31 b(et)-31 b(w)g(een)370 b(successiv)-31 b(e)368
+b(calls)j(to)e Fy(IDASolve)p FA(.)11942 40894 y @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1429 b FA(It)300 b(is)h(the)g(user's)e
+(resp)31 b(onsibilit)-31 b(y)302 b(to)g(pro)-31 b(vide)301
+b(compatible)i Fy(itol)e FA(and)g Fy(abstol)g FA(argumen)-31
+b(ts.)11942 43915 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial
+Fd(!)1497 b FA(It)370 b(is)f(illegal)j(to)e(call)g Fy(IDASetTolerances)
+h FA(b)31 b(efore)369 b(a)h(call)g(to)g Fy(IDAMalloc)p
+FA(.)p 4000 47285 7146 45 v 4000 48625 45 1341 v 4376
+48293 a Fy(IDASetEwtFn)p 11101 48625 V 4000 48669 7146
+45 v Black 4000 50156 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDASetEwtFn\(ida)p 23667 50156 349 45 v 421 w(mem,)g(efun,)h
+(edata\);)p Black 4000 52195 a FA(Description)p Black
+1286 w(The)310 b(function)h Fy(IDASetEwtFn)f FA(sp)31
+b(eci\257es)309 b(the)h(user-de\257ned)e(function)j(to)f(b)31
+b(e)309 b(used)g(in)h(computing)10814 53523 y(the)369
+b(error)g(w)-31 b(eigh)g(t)371 b(v)-31 b(ector)370 b
+Fp(W)523 b FA(in)370 b(\(3.6\).)p Black 4000 55562 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 12627 55562 V 419
+w(mem)p Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369
+b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814 57246
+a Fy(efun)p Black 2135 w FA(\()p Fy(IDAEwtFn)p FA(\))371
+b(is)e(the)g Fx(C)h FA(function)g(whic)-31 b(h)370 b(de\257nes)f(the)g
+Fy(ewt)h FA(v)-31 b(ector)370 b(\(see)f Fs(x)p FA(5.5.2\).)p
+Black 10814 58930 a Fy(edata)p Black 1554 w FA(\()p Fy(void)582
+b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(user)e(data)i(passed)
+f(to)h Fy(efun)f FA(ev)-31 b(ery)370 b(time)g(it)g(is)f(called.)p
+Black 4000 60969 a(Return)g(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+10814 63008 a Fy(IDA)p 12627 63008 V 419 w(SUCCESS)p
+Black 973 w FA(The)g(function)i Fy(efun)e FA(and)h(data)g(p)31
+b(oin)-31 b(ter)370 b Fy(edata)g FA(ha)-31 b(v)g(e)370
+b(b)31 b(een)369 b(successfully)g(set.)p Black 10814
+64692 a Fy(IDA)p 12627 64692 V 419 w(MEM)p 14789 64692
+V 419 w(NULL)p Black 554 w FA(The)g Fy(ida)p 22104 64692
+V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)p Black 4000 66731 a(Notes)p Black 4072 w(This)g(function)g(can)g
+(b)31 b(e)368 b(called)j(b)31 b(et)-31 b(w)g(een)370
+b(successiv)-31 b(e)369 b(calls)h(to)g Fy(IDASolve)p
+FA(.)10814 68770 y(If)f(not)h(needed,)f(pass)g Fy(NULL)h
+FA(for)f Fy(edata)p FA(.)11942 71586 y @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1497 b FA(It)370 b(is)f(illegal)j(to)e
+(call)g Fy(IDASetEwtFn)h FA(b)31 b(efore)369 b(a)g(call)h(to)g
+Fy(IDAMalloc)p FA(.)4000 75574 y FB(Linear)424 b(solv)-35
+b(er)425 b(optional)g(input)g(functions)4000 77867 y
+FA(The)369 b(linear)h(solv)-31 b(er)370 b(mo)31 b(dules)370
+b(allo)-31 b(w)371 b(for)f(v)-61 b(arious)369 b(optional)j(inputs,)e
+(whic)-31 b(h)370 b(are)f(describ)31 b(ed)368 b(here.)p
+Black Black eop
+%%Page: 32 40
+32 39 bop Black 0 2701 a FB(32)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black 0 6974 a(Dense)559 b(Linear)f(solv)-35
+b(er.)1107 b FA(The)486 b Fx(id)-25 b(adense)486 b FA(solv)-31
+b(er)486 b(needs)e(a)i(function)h(to)f(compute)g(a)g(dense)f(appro)-31
+b(xima-)0 8302 y(tion)455 b(to)g(the)f(Jacobian)i(matrix)f
+Fp(J)106 b FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)17885
+7900 y Fo(0)18197 8302 y FA(\).)747 b(This)455 b(function)g(m)-31
+b(ust)455 b(b)31 b(e)453 b(of)h(t)-31 b(yp)31 b(e)455
+b Fy(IDADenseJacFn)p FA(.)749 b(The)454 b(user)0 9631
+y(can)507 b(supply)h(his/her)f(o)-31 b(wn)508 b(dense)e(Jacobian)j
+(function,)543 b(or)507 b(use)g(the)g(default)i(di\256erence)d(quotien)
+-31 b(t)509 b(function)0 10959 y Fy(IDADenseDQJac)346
+b FA(that)f(comes)g(with)g(the)g Fx(id)-25 b(adense)345
+b FA(solv)-31 b(er.)484 b(T)-92 b(o)345 b(sp)31 b(ecify)344
+b(a)h(user-supplied)f(Jacobian)h(function)0 12287 y Fy(djac)375
+b FA(and)g(asso)31 b(ciated)375 b(user)f(data)h Fy(jac)p
+16823 12287 349 45 v 419 w(data)p FA(,)i Fx(id)-25 b(adense)375
+b FA(pro)-31 b(vides)375 b(the)g(function)h Fy(IDADenseSetJacFn)p
+FA(.)511 b(The)0 13616 y Fx(id)-25 b(adense)328 b FA(solv)-31
+b(er)329 b(passes)e(the)h(p)31 b(oin)-31 b(ter)328 b
+Fy(jac)p 18974 13616 V 419 w(data)g FA(to)h(its)f(dense)f(Jacobian)i
+(function.)480 b(This)328 b(allo)-31 b(ws)330 b(the)e(user)f(to)0
+14944 y(create)403 b(an)h(arbitrary)f(structure)g(with)h(relev)-61
+b(an)-31 b(t)404 b(problem)g(data)g(and)f(access)g(it)h(during)f(the)h
+(execution)g(of)g(the)0 16272 y(user-supplied)409 b(Jacobian)i
+(function,)421 b(without)412 b(using)d(global)j(data)f(in)e(the)h
+(program.)614 b(The)409 b(p)31 b(oin)-31 b(ter)411 b
+Fy(jac)p 45327 16272 V 418 w(data)0 17601 y FA(ma)-31
+b(y)370 b(b)31 b(e)369 b(iden)-31 b(tical)372 b(to)e
+Fy(f)p 10368 17601 V 418 w(data)p FA(,)g(if)g(the)f(latter)i(w)-31
+b(as)370 b(sp)31 b(eci\257ed)369 b(through)g Fy(IDASetFdata)p
+FA(.)p 0 19377 10052 45 v 0 20717 45 1341 v 376 20385
+a Fy(IDADenseSetJacFn)p 10007 20717 V 0 20761 10052 45
+v Black 0 22114 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDADenseSetJacFn\(ida)p 22572 22114 349 45 v 421
+w(mem,)h(djac,)g(jac)p 31129 22114 V 419 w(data\);)p
+Black 0 23777 a FA(Description)p Black 1286 w(The)334
+b(function)i Fy(IDADenseSetJacFn)g FA(sp)31 b(eci\257es)333
+b(the)h(dense)f(Jacobian)j(appro)-31 b(ximation)337 b(function)6814
+25106 y(to)370 b(b)31 b(e)369 b(used)f(and)i(the)f(p)31
+b(oin)-31 b(ter)370 b(to)g(user)e(data.)p Black 0 26769
+a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p 8627
+26769 V 419 w(mem)p Black 1135 w FA(\()p Fy(void)582
+b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p
+Black 6814 28211 a Fy(djac)p Black 2716 w FA(\()p Fy(IDADenseJacFn)p
+FA(\))372 b(user-de\257ned)c(dense)g(Jacobian)j(appro)-31
+b(ximation)373 b(function.)p Black 6814 29654 a Fy(jac)p
+8627 29654 V 419 w(data)p Black 554 w FA(\()p Fy(void)582
+b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(user-de\257ned)
+f(data)j(structure.)p Black 0 31317 a(Return)e(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 6814 32981 a Fy(IDADENSE)p
+11532 32981 V 420 w(SUCCESS)p Black 1554 w FA(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)368 b(successfully)i(set.)p
+Black 6814 34423 a Fy(IDADENSE)p 11532 34423 V 420 w(MEM)p
+13695 34423 V 418 w(NULL)p Black 1136 w FA(The)f Fy(ida)p
+21591 34423 V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370
+b(is)f Fy(NULL)p FA(.)p Black 6814 35865 a Fy(IDADENSE)p
+11532 35865 V 420 w(LMEM)p 14276 35865 V 419 w(NULL)p
+Black 554 w FA(The)g Fx(id)-25 b(adense)370 b FA(linear)g(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 0 37528 a(Notes)p Black 4072 w(By)415 b(default,)429
+b Fx(id)-25 b(adense)416 b FA(uses)e(the)h(di\256erence)g(quotien)-31
+b(t)417 b(function)f Fy(IDADenseDQJac)p FA(.)633 b(If)414
+b Fy(NULL)6814 38857 y FA(is)369 b(passed)g(to)h Fy(djac)p
+FA(,)g(this)f(default)i(function)g(is)e(used.)6814 40520
+y(The)g(function)i(t)-31 b(yp)31 b(e)370 b Fy(IDADenseJacFn)h
+FA(is)e(describ)31 b(ed)368 b(in)h Fs(x)p FA(5.5.3.)0
+43705 y FB(Band)412 b(Linear)g(solv)-35 b(er.)1107 b
+FA(The)359 b Fx(id)-25 b(aband)359 b FA(solv)-31 b(er)359
+b(needs)f(a)h(function)h(to)g(compute)f(a)g(banded)g(appro)-31
+b(ximation)0 45033 y(to)283 b(the)f(Jacobian)i(matrix)g
+Fp(J)106 b FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)14838
+44632 y Fo(0)15150 45033 y FA(\).)464 b(This)282 b(function)i(m)-31
+b(ust)283 b(b)31 b(e)281 b(of)i(t)-31 b(yp)31 b(e)283
+b Fy(IDABandJacFn)p FA(.)465 b(The)282 b(user)f(can)i(supply)0
+46362 y(his/her)298 b(o)-31 b(wn)299 b(banded)f(Jacobian)i(appro)-31
+b(ximation)302 b(function,)314 b(or)298 b(use)g(the)g(default)i
+(di\256erence)d(quotien)-31 b(t)300 b(function)0 47690
+y Fy(IDABandDQJac)422 b FA(that)g(comes)f(with)g(the)g
+Fx(id)-25 b(aband)421 b FA(solv)-31 b(er.)647 b(T)-92
+b(o)421 b(sp)31 b(ecify)421 b(a)f(user-supplied)g(Jacobian)i(function)0
+49019 y Fy(bjac)450 b FA(and)h(asso)31 b(ciated)451 b(user)e(data)j
+Fy(jac)p 17202 49019 V 418 w(data)p FA(,)472 b Fx(id)-25
+b(aband)450 b FA(pro)-31 b(vides)450 b(the)h(function)g
+Fy(IDABandSetJacFn)p FA(.)738 b(The)0 50347 y Fx(id)-25
+b(aband)404 b FA(solv)-31 b(er)405 b(passes)e(the)i(p)31
+b(oin)-31 b(ter)405 b Fy(jac)p 18936 50347 V 419 w(data)f
+FA(to)h(its)g(banded)f(Jacobian)i(appro)-31 b(ximation)408
+b(function.)599 b(This)0 51675 y(allo)-31 b(ws)354 b(the)e(user)f(to)i
+(create)f(an)g(arbitrary)h(structure)e(with)i(relev)-61
+b(an)-31 b(t)353 b(problem)g(data)g(and)f(access)g(it)g(during)h(the)0
+53004 y(execution)444 b(of)g(the)f(user-supplied)g(Jacobian)h
+(function,)464 b(without)445 b(using)e(global)j(data)e(in)f(the)h
+(program.)715 b(The)0 54332 y(p)31 b(oin)-31 b(ter)367
+b Fy(jac)p 5626 54332 V 419 w(data)f FA(ma)-31 b(y)368
+b(b)31 b(e)366 b(iden)-31 b(tical)368 b(to)f Fy(f)p 19021
+54332 V 419 w(data)p FA(,)g(if)g(the)f(latter)i(w)-31
+b(as)367 b(sp)31 b(eci\257ed)366 b(through)g Fy(IDAodeSetFdata)p
+FA(.)p 0 56108 9470 45 v 0 57449 45 1341 v 376 57117
+a Fy(IDABandSetJacFn)p 9426 57449 V 0 57493 9470 45 v
+Black 0 58845 a FA(Call)p Black 4848 w Fy(flag)582 b(=)f
+(IDABandSetJacFn\(ida)p 21991 58845 349 45 v 421 w(mem,)h(bjac,)g(jac)p
+30548 58845 V 419 w(data\);)p Black 0 60509 a FA(Description)p
+Black 1286 w(The)300 b(function)h Fy(IDABandSetJacFn)h
+FA(sp)31 b(eci\257es)299 b(the)h(banded)g(Jacobian)h(appro)-31
+b(ximation)303 b(function)6814 61837 y(to)370 b(b)31
+b(e)369 b(used)f(and)i(the)f(p)31 b(oin)-31 b(ter)370
+b(to)g(user)e(data.)p Black 0 63500 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fy(ida)p 8627 63500 V 419 w(mem)p
+Black 1135 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814 64943 a
+Fy(bjac)p Black 2716 w FA(\()p Fy(IDABandJacFn)p FA(\))372
+b(user-de\257ned)c(banded)h(Jacobian)i(appro)-31 b(ximation)373
+b(function.)p Black 6814 66385 a Fy(jac)p 8627 66385
+V 419 w(data)p Black 554 w FA(\()p Fy(void)582 b(*)p
+FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f(user-de\257ned)f
+(data)j(structure.)p Black 0 68048 a(Return)e(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 6814 69712 a Fy(IDABAND)p 10951 69712 V 419 w(SUCCESS)p
+Black 1555 w FA(The)g(optional)j(v)-61 b(alue)369 b(has)h(b)31
+b(een)368 b(successfully)h(set.)p Black 6814 71154 a
+Fy(IDABAND)p 10951 71154 V 419 w(MEM)p 13113 71154 V
+419 w(NULL)p Black 1136 w FA(The)g Fy(ida)p 21010 71154
+V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370 b(is)f Fy(NULL)p
+FA(.)p Black 6814 72596 a Fy(IDABAND)p 10951 72596 V
+419 w(LMEM)p 13694 72596 V 419 w(NULL)p Black 555 w FA(The)g
+Fx(id)-25 b(aband)369 b FA(linear)h(solv)-31 b(er)370
+b(has)f(not)h(b)31 b(een)368 b(initialized.)p Black 0
+74260 a(Notes)p Black 4072 w(By)403 b(default,)414 b
+Fx(id)-25 b(aband)403 b FA(uses)g(the)g(di\256erence)g(quotien)-31
+b(t)405 b(function)g Fy(IDABandDQJac)p FA(.)596 b(If)403
+b Fy(NULL)h FA(is)6814 75588 y(passed)369 b(to)h Fy(bjac)p
+FA(,)g(this)f(default)i(function)f(is)g(used.)6814 77252
+y(The)f(function)i(t)-31 b(yp)31 b(e)370 b Fy(IDABandJacFn)g
+FA(is)g(describ)31 b(ed)368 b(in)h Fs(x)p FA(5.5.4.)p
+Black Black eop
+%%Page: 33 41
+33 40 bop Black 4000 2701 a FB(5.4)425 b(User-callable)g(functions)
+32020 b(33)p 4000 3144 48001 45 v Black 4000 6974 a(SPGMR)520
+b(Linear)f(solv)-35 b(er.)1107 b FA(If)452 b(preconditioning)i(is)e(to)
+h(b)31 b(e)451 b(done)h(within)i(the)e Fx(spgmr)f FA(metho)31
+b(d,)473 b(then)453 b(the)4000 8302 y(user)542 b(m)-31
+b(ust)544 b(supply)f(a)h(preconditioner)g(solv)-31 b(e)544
+b(function,)588 b Fy(psolve)p FA(,)g(and)544 b(sp)31
+b(ecify)543 b(its)g(name)h(through)g(a)g(call)4000 9631
+y(to)449 b Fy(IDASpgmrSetPreconditioner)p FA(.)734 b(The)449
+b(ev)-61 b(aluation)450 b(and)f(prepro)31 b(cessing)448
+b(of)h(an)-31 b(y)449 b(Jacobian-related)i(data)4000
+10959 y(needed)481 b(b)-31 b(y)482 b(the)f(user's)g(preconditioner)h
+(solv)-31 b(e)483 b(function)f(is)g(done)f(in)h(the)g(optional)i
+(user-supplied)c(function)4000 12287 y Fy(psetup)p FA(.)490
+b(Both)360 b(of)g(these)g(functions)g(are)g(fully)g(sp)31
+b(eci\257ed)359 b(in)h Fs(x)p FA(5.5.)491 b(If)359 b(used,)i(the)f
+Fy(psetup)g FA(function)h(should)f(also)4000 13616 y(b)31
+b(e)444 b(sp)31 b(eci\257ed)445 b(in)g(the)g(call)h(to)g
+Fy(IDASpgmrSetPreconditioner)p FA(.)723 b(Optionally)-92
+b(,)467 b(the)445 b Fx(id)-25 b(aspgmr)443 b FA(solv)-31
+b(er)446 b(passes)4000 14944 y(the)368 b(p)31 b(oin)-31
+b(ter)368 b(it)h(receiv)-31 b(es)367 b(through)h Fy
+(IDASpgmrSetPreconditioner)k FA(to)c(the)g(preconditioner)h(setup)e
+(and)h(solv)-31 b(e)4000 16272 y(functions.)459 b(This)266
+b(allo)-31 b(ws)268 b(the)e(user)e(to)j(create)f(an)g(arbitrary)g
+(structure)f(with)i(relev)-61 b(an)-31 b(t)266 b(problem)h(data)f(and)g
+(access)4000 17601 y(it)293 b(during)f(the)g(execution)h(of)g(the)f
+(user-supplied)f(preconditioner)j(functions)f(without)h(using)e(global)
+i(data)f(in)g(the)4000 18929 y(program.)564 b(The)393
+b(p)31 b(oin)-31 b(ter)393 b Fy(prec)p 17467 18929 349
+45 v 419 w(data)g FA(ma)-31 b(y)394 b(b)31 b(e)393 b(iden)-31
+b(tical)395 b(to)e Fy(res)p 32157 18929 V 419 w(data)p
+FA(,)399 b(if)394 b(the)f(latter)g(w)-31 b(as)394 b(sp)31
+b(eci\257ed)392 b(through)4000 20257 y Fy(IDASetRdata)p
+FA(.)5660 21627 y(The)373 b Fx(id)-25 b(aspgmr)371 b
+FA(solv)-31 b(er)373 b(requires)e(a)i(function)g(to)g(compute)h(an)e
+(appro)-31 b(ximation)376 b(to)d(the)g(pro)31 b(duct)372
+b(b)31 b(et)-31 b(w)g(een)4000 22955 y(the)357 b(Jacobian)h(matrix)f
+Fp(J)106 b FA(\()p Fp(t;)184 b(y)40 b FA(\))358 b(and)f(a)f(v)-31
+b(ector)358 b Fp(v)40 b FA(.)487 b(The)357 b(user)e(can)i(supply)f
+(his/her)g(o)-31 b(wn)358 b(Jacobian)g(times)f(v)-31
+b(ector)4000 24284 y(appro)g(ximation)341 b(function,)346
+b(or)338 b(use)f(the)h(di\256erence)f(quotien)-31 b(t)340
+b(function)f Fy(IDASpgmrDQJtimes)h FA(that)f(comes)f(with)4000
+25612 y(the)385 b Fx(id)-25 b(aspgmr)383 b FA(solv)-31
+b(er.)538 b(A)385 b(user-de\257ned)e(Jacobian-v)-31 b(ector)387
+b(function)e(m)-31 b(ust)385 b(b)31 b(e)384 b(of)h(t)-31
+b(yp)31 b(e)385 b Fy(IDASpgmrJtimesFn)4000 26940 y FA(and)266
+b(can)h(b)31 b(e)265 b(sp)31 b(eci\257ed)266 b(through)h(a)f(call)i(to)
+f Fy(IDASpgmrSetJacTimesVecFn)i FA(\(see)d Fs(x)p FA(5.5)i(for)e(sp)31
+b(eci\257cation)267 b(details\).)4000 28269 y(As)505
+b(with)i(the)f(preconditioner)h(user)e(data)h(structure)g
+Fy(p)p 28610 28269 V 418 w(data)p FA(,)541 b(the)506
+b(user)e(can)i(also)h(sp)31 b(ecify)506 b(in)-31 b(t)506
+b(the)g(call)h(to)4000 29597 y Fy(IDASpgmrSetJacFn)p
+FA(,)588 b(a)542 b(p)31 b(oin)-31 b(ter)543 b(to)g(a)g(user-de\257ned)e
+(data)i(structure,)585 b Fy(jac)p 38007 29597 V 419 w(data)p
+FA(,)h(whic)-31 b(h)543 b(the)g Fx(id)-25 b(aspgmr)4000
+30925 y FA(solv)-31 b(er)525 b(passes)e(to)i(the)f(Jacobian)h(times)g
+(v)-31 b(ector)525 b(function)h Fy(jtimes)f FA(eac)-31
+b(h)524 b(time)h(it)g(is)f(called.)959 b(The)524 b(p)31
+b(oin)-31 b(ter)4000 32254 y Fy(jac)p 5813 32254 V 419
+w(data)369 b FA(ma)-31 b(y)371 b(b)31 b(e)369 b(iden)-31
+b(tical)371 b(to)f Fy(P)p 19223 32254 V 419 w(data)f
+FA(and/or)h Fy(f)p 26609 32254 V 419 w(data)p FA(.)p
+4000 34453 15282 45 v 4000 36039 45 1587 v 4376 35461
+a Fy(IDASpgmrSetPreconditioner)p 19237 36039 V 4000 36083
+15282 45 v Black 4000 37404 a FA(Call)p Black 4848 w
+Fy(flag)582 b(=)f(IDASpgmrSetPrecSolveFn\(ida)p 30058
+37404 349 45 v 422 w(mem,)h(psolve,)g(psetup,)g(p)p 43265
+37404 V 419 w(data\);)p Black 4000 39257 a FA(Description)p
+Black 1286 w(The)361 b(function)i Fy(IDASpgmrSet)f FA(sp)31
+b(eci\257es)360 b(the)h(preconditioner)i(setup)d(and)i(solv)-31
+b(e)362 b(functions)g(and)10814 40586 y(the)369 b(p)31
+b(oin)-31 b(ter)370 b(to)g(user)e(data.)p Black 4000
+42439 a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p
+12627 42439 V 419 w(mem)p Black 554 w FA(\()p Fy(void)582
+b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p
+Black 10814 44030 a Fy(psolve)p Black 973 w FA(\()p Fy
+(IDASpgmrPrecSolveFn)p FA(\))373 b(user-de\257ned)368
+b(preconditioner)i(solv)-31 b(e)370 b(function.)p Black
+10814 45621 a Fy(psetup)p Black 973 w FA(\()p Fy(IDASpgmrPrecSetupFn)p
+FA(\))j(user-de\257ned)368 b(preconditioner)i(setup)f(function.)p
+Black 10814 47212 a Fy(p)p 11465 47212 V 419 w(data)p
+Black 1135 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f(user-de\257ned)f(data)i(structure.)p
+Black 4000 49065 a(Return)f(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+10814 50918 a Fy(IDASPGMR)p 15532 50918 V 420 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 10814 52509 a
+Fy(IDASPGMR)p 15532 52509 V 420 w(MEM)p 17695 52509 V
+418 w(NULL)p Black 1136 w FA(The)f Fy(ida)p 25591 52509
+V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370 b(is)f Fy(NULL)p
+FA(.)p Black 10814 54100 a Fy(IDASPGMR)p 15532 54100
+V 420 w(LMEM)p 18276 54100 V 419 w(NULL)p Black 554 w
+FA(The)g Fx(id)-25 b(aspgmr)368 b FA(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 55954 a(Notes)p Black 4072 w(The)459 b(function)h(t)-31
+b(yp)31 b(e)458 b Fy(IDASpgmrPrecSolveFn)j FA(is)e(describ)31
+b(ed)457 b(in)i Fs(x)p FA(5.5.6.)763 b(The)458 b(function)i(t)-31
+b(yp)31 b(e)10814 57282 y Fy(IDASpgmrPrecSetupFn)372
+b FA(is)d(describ)31 b(ed)368 b(in)i Fs(x)p FA(5.5.7.)p
+4000 59810 14701 45 v 4000 61397 45 1587 v 4376 60819
+a Fy(IDASpgmrSetJacTimesVecFn)p 18656 61397 V 4000 61441
+14701 45 v Black 4000 62762 a FA(Call)p Black 4848 w
+Fy(flag)582 b(=)f(IDASpgmrSetJacTimesVecFn\(ida)p 31220
+62762 349 45 v 423 w(mem,)g(jtimes,)i(jac)p 40941 62762
+V 418 w(data\);)p Black 4000 64615 a FA(Description)p
+Black 1286 w(The)498 b(function)i Fy(IDASpgmrSetJacTimesFn)h
+FA(sp)31 b(eci\257es)497 b(the)h(Jacobian-v)-31 b(ector)501
+b(function)e(to)g(b)31 b(e)10814 65943 y(used)369 b(and)g(the)g(p)31
+b(oin)-31 b(ter)370 b(to)g(user)e(data.)p Black 4000
+67797 a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p
+12627 67797 V 419 w(mem)p Black 1135 w FA(\()p Fy(void)582
+b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p
+Black 10814 69388 a Fy(jtimes)p Black 1554 w FA(\()p
+Fy(IDASpgmrJacTimesVecFn)p FA(\))373 b(user-de\257ned)368
+b(Jacobian-v)-31 b(ector)372 b(pro)31 b(duct)369 b(function.)p
+Black 10814 70978 a Fy(jac)p 12627 70978 V 419 w(data)p
+Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f(user-de\257ned)f(data)j(structure.)p
+Black 4000 72832 a(Return)e(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+10814 74685 a Fy(IDASPGMR)p 15532 74685 V 420 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfully)i(set.)p Black 10814 76276 a
+Fy(IDASPGMR)p 15532 76276 V 420 w(MEM)p 17695 76276 V
+418 w(NULL)p Black 1136 w FA(The)f Fy(ida)p 25591 76276
+V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370 b(is)f Fy(NULL)p
+FA(.)p Black 10814 77867 a Fy(IDASPGMR)p 15532 77867
+V 420 w(LMEM)p 18276 77867 V 419 w(NULL)p Black 554 w
+FA(The)g Fx(id)-25 b(aspgmr)368 b FA(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black Black eop
+%%Page: 34 42
+34 41 bop Black 0 2701 a FB(34)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black Black 0 6974 a FA(Notes)p
+Black 4072 w(By)485 b(default,)515 b Fx(id)-25 b(aspgmr)483
+b FA(uses)h(the)h(di\256erence)f(quotien)-31 b(t)486
+b(function)g Fy(IDASpgmrDQJtimes)p FA(.)841 b(If)6814
+8302 y Fy(NULL)370 b FA(is)f(passed)f(to)i Fy(jtimes)p
+FA(,)h(this)e(default)i(function)f(is)g(used.)6814 10011
+y(The)f(function)i(t)-31 b(yp)31 b(e)370 b Fy(IDASpgmrJacTimesVecFn)i
+FA(is)d(describ)31 b(ed)368 b(in)i Fs(x)p FA(5.5.5.)p
+0 12226 10633 45 v 0 13813 45 1587 v 376 13235 a Fy(IDASpgmrSetGSType)p
+10588 13813 V 0 13857 10633 45 v Black 0 15137 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDASpgmrSetGSType\(ida)p
+23153 15137 349 45 v 422 w(mem,)g(gstype\);)p Black 0
+16845 a FA(Description)p Black 1286 w(The)290 b(function)h
+Fy(IDASpgmrSetGSType)h FA(sp)31 b(eci\257es)288 b(the)i(Gram-Sc)-31
+b(hmidt)291 b(orthogonalization)k(to)290 b(b)31 b(e)6814
+18174 y(used.)489 b(This)361 b(m)-31 b(ust)361 b(b)31
+b(e)360 b(one)h(of)g(the)g(en)-31 b(umeration)363 b(constan)-31
+b(ts)362 b Fy(MODIFIED)p 37662 18174 V 419 w(GS)f FA(or)f
+Fy(CLASSICAL)p 46180 18174 V 420 w(GS)p FA(.)6814 19502
+y(These)434 b(corresp)31 b(ond)433 b(to)h(using)g(mo)31
+b(di\257ed)435 b(Gram-Sc)-31 b(hmidt)435 b(and)f(classical)h(Gram-Sc)
+-31 b(hmidt,)452 b(re-)6814 20831 y(sp)31 b(ectiv)-31
+b(ely)-92 b(.)p Black 0 22539 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fy(ida)p 8627 22539 V 419 w(mem)p Black
+554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31
+b(c)-31 b(k.)p Black 6814 24027 a Fy(gstype)p Black 973
+w FA(\()p Fy(int)p FA(\))370 b(t)-31 b(yp)31 b(e)370
+b(of)g(Gram-Sc)-31 b(hmidt)370 b(orthogonalization.)p
+Black 0 25736 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+6814 27445 a Fy(IDASPGMR)p 11532 27445 V 420 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfuly)h(set.)p Black 6814 28932 a Fy(IDASPGMR)p
+11532 28932 V 420 w(MEM)p 13695 28932 V 418 w(NULL)p
+Black 1136 w FA(The)g Fy(ida)p 21591 28932 V 419 w(mem)g
+FA(p)31 b(oin)-31 b(ter)370 b(is)f Fy(NULL)p FA(.)p Black
+6814 30420 a Fy(IDASPGMR)p 11532 30420 V 420 w(LMEM)p
+14276 30420 V 419 w(NULL)p Black 554 w FA(The)g Fx(id)-25
+b(aspgmr)368 b FA(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)p Black 6814 31907 a Fy(IDASPGMR)p
+11532 31907 V 420 w(ILL)p 13695 31907 V 418 w(INPUT)p
+Black 555 w FA(The)355 b(Gram-Sc)-31 b(hmidt)356 b(orthogonalization)
+361 b(t)-31 b(yp)31 b(e)355 b Fy(gstype)h FA(is)f(not)g(v)-61
+b(alid.)p Black 0 33616 a(Notes)p Black 4072 w(The)369
+b(default)i(v)-61 b(alue)370 b(is)f Fy(MODIFIED)p 21501
+33616 V 419 w(GS)p FA(.)p 0 35831 13539 45 v 0 37418
+45 1587 v 376 36840 a Fy(IDASpgmrSetMaxRestarts)p 13494
+37418 V 0 37462 13539 45 v Black 0 38741 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDASpgmrSetMaxRestarts\(ida)p
+26058 38741 349 45 v 422 w(mem,)h(maxrs\);)p Black 0
+40450 a FA(Description)p Black 1286 w(The)344 b(function)h
+Fy(IDASpgmrSetMaxRestarts)i FA(sp)31 b(eci\257es)343
+b(the)h(maxim)-31 b(um)346 b(n)-31 b(um)g(b)31 b(er)344
+b(of)g(restarts)f(to)6814 41779 y(b)31 b(e)369 b(used)f(in)i(the)f
+(GMRES)g(algorithm.)p Black 0 43487 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fy(ida)p 8627 43487 V 419 w(mem)p
+Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814 44975 a
+Fy(maxrs)p Black 1554 w FA(\()p Fy(int)p FA(\))370 b(maxim)-31
+b(um)372 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(restarts.)p
+Black 0 46684 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+6814 48393 a Fy(IDASPGMR)p 11532 48393 V 420 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfuly)h(set.)p Black 6814 49880 a Fy(IDASPGMR)p
+11532 49880 V 420 w(MEM)p 13695 49880 V 418 w(NULL)p
+Black 1136 w FA(The)g Fy(ida)p 21591 49880 V 419 w(mem)g
+FA(p)31 b(oin)-31 b(ter)370 b(is)f Fy(NULL)p FA(.)p Black
+6814 51368 a Fy(IDASPGMR)p 11532 51368 V 420 w(LMEM)p
+14276 51368 V 419 w(NULL)p Black 554 w FA(The)g Fx(id)-25
+b(aspgmr)368 b FA(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)p Black 6814 52855 a Fy(IDASPGMR)p
+11532 52855 V 420 w(ILL)p 13695 52855 V 418 w(INPUT)p
+Black 555 w FA(The)h Fy(maxrs)h FA(argumen)-31 b(t)370
+b(is)g(negativ)-31 b(e.)p Black 0 54564 a(Notes)p Black
+4072 w(The)369 b(default)i(v)-61 b(alue)370 b(is)f(5.)493
+b(P)-31 b(ass)369 b Fy(maxrs)h FA(=)307 b(0)370 b(to)g(sp)31
+b(ecify)369 b(no)g(restarts.)p 0 56779 10633 45 v 0 58366
+45 1587 v 376 57788 a Fy(IDASpgmrSetEpsLin)p 10588 58366
+V 0 58410 10633 45 v Black 0 59689 a FA(Call)p Black
+4848 w Fy(flag)582 b(=)f(IDASpgmrSetEpsLin\(ida)p 23153
+59689 349 45 v 422 w(mem,)g(eplifac\);)p Black 0 61398
+a FA(Description)p Black 1286 w(The)413 b(function)i
+Fy(IDASpgmrSetEpsLin)g FA(sp)31 b(eci\257es)413 b(the)g(factor)h(b)-31
+b(y)413 b(whic)-31 b(h)415 b(the)e(GMRES)f(con)-31 b(v)g(er-)6814
+62727 y(gence)369 b(test)h(constan)-31 b(t)371 b(is)e(reduced)f(from)i
+(the)f(Newton)i(iteration)g(test)f(constan)-31 b(t.)494
+b(\(See)370 b Fs(x)p FA(3\).)p Black 0 64436 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 8627 64436 V 419 w(mem)p
+Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814 65923 a
+Fy(eplifac)p Black 554 w FA(\()p Fy(realtype)p FA(\))p
+Black 0 67632 a(Return)369 b(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+6814 69341 a Fy(IDASPGMR)p 11532 69341 V 420 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfuly)h(set.)p Black 6814 70828 a Fy(IDASPGMR)p
+11532 70828 V 420 w(MEM)p 13695 70828 V 418 w(NULL)p
+Black 1136 w FA(The)g Fy(ida)p 21591 70828 V 419 w(mem)g
+FA(p)31 b(oin)-31 b(ter)370 b(is)f Fy(NULL)p FA(.)p Black
+6814 72316 a Fy(IDASPGMR)p 11532 72316 V 420 w(LMEM)p
+14276 72316 V 419 w(NULL)p Black 554 w FA(The)g Fx(id)-25
+b(aspgmr)368 b FA(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)p Black 6814 73803 a Fy(IDASPGMR)p
+11532 73803 V 420 w(ILL)p 13695 73803 V 418 w(INPUT)p
+Black 555 w FA(The)h(factor)h Fy(eplifac)g FA(is)f(negativ)-31
+b(e.)p Black 0 75512 a(Notes)p Black 4072 w(The)369 b(default)i(v)-61
+b(alue)370 b(is)f(0)p Fp(:)p FA(05.)6814 77221 y(P)-31
+b(assing)370 b(a)g(v)-61 b(alue)369 b Fy(eplifac)p FA(=)309
+b(0)p Fp(:)p FA(0)370 b(also)g(indicates)h(using)e(the)h(default)g(v)
+-61 b(alue.)p Black Black eop
+%%Page: 35 43
+35 42 bop Black 4000 2701 a FB(5.4)425 b(User-callable)g(functions)
+32020 b(35)p 4000 3144 48001 45 v Black 4000 5965 15863
+45 v 4000 7552 45 1587 v 4376 6974 a Fy(IDASpgmrSetIncrementFactor)p
+19818 7552 V 4000 7596 15863 45 v Black 4000 8876 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDASpgmrSetIncrementFactor\(ida)p
+32382 8876 349 45 v 423 w(mem,)h(dqincfac\);)p Black
+4000 10613 a FA(Description)p Black 1286 w(The)370 b(function)i
+Fy(IDASpgmrSetIncrementFactor)i FA(sp)31 b(eci\257es)369
+b(a)h(factor)h(in)g(the)f(incremen)-31 b(ts)371 b(to)g
+Fp(y)10814 11941 y FA(used)i(in)i(the)f(di\256erence)g(quotien)-31
+b(t)376 b(appro)-31 b(ximations)378 b(to)c(the)h(Jacobian-v)-31
+b(ector)376 b(pro)31 b(ducts.)508 b(\(See)10814 13269
+y Fs(x)p FA(3\).)p Black 4000 15006 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fy(ida)p 12627 15006 V 419 w(mem)p
+Black 1298 w FA(\()p Fy(void)582 b(*)p FA(\))369 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)g Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814 16522 a
+Fy(dqincfac)p Black 555 w FA(\()p Fy(realtype)p FA(\))371
+b(di\256erence)d(quotien)-31 b(t)372 b(incremen)-31 b(t)370
+b(factor.)p Black 4000 18259 a(Return)f(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 10814 19996 a Fy(IDASPGMR)p 15532 19996 V 420 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfuly)h(set.)p Black 10814 21511 a
+Fy(IDASPGMR)p 15532 21511 V 420 w(MEM)p 17695 21511 V
+418 w(NULL)p Black 1136 w FA(The)g Fy(ida)p 25591 21511
+V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370 b(is)f Fy(NULL)p
+FA(.)p Black 10814 23027 a Fy(IDASPGMR)p 15532 23027
+V 420 w(LMEM)p 18276 23027 V 419 w(NULL)p Black 554 w
+FA(The)g Fx(id)-25 b(aspgmr)368 b FA(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 10814 24543 a Fy(IDASPGMR)p 15532 24543 V 420 w(ILL)p
+17695 24543 V 418 w(INPUT)p Black 555 w FA(The)h(incremen)-31
+b(t)370 b(factor)g(w)-31 b(as)370 b(non-p)31 b(ositiv)-31
+b(e.)p Black 4000 26279 a(Notes)p Black 4072 w(The)369
+b(default)i(v)-61 b(alue)370 b(is)f Fy(dqincfac)h FA(=)307
+b(1)p Fp(:)p FA(0.)4000 29527 y FB(Initial)423 b(condition)i
+(calculation)e(optional)i(input)g(functions)4000 31571
+y FA(The)347 b(follo)-31 b(wing)351 b(functions)d(can)f(b)31
+b(e)346 b(called)i(to)g(set)f(optional)i(inputs)f(to)f(con)-31
+b(trol)349 b(the)e(initial)i(conditions)g(calcula-)4000
+32899 y(tions.)p 4000 34738 13539 45 v 4000 36079 45
+1341 v 4376 35747 a Fy(IDASetNonlinConvCoefIC)p 17494
+36079 V 4000 36123 13539 45 v Black 4000 37475 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDASetNonlinConvCoefIC\(ida)p
+30058 37475 349 45 v 422 w(mem,)h(epiccon\);)p Black
+4000 39212 a FA(Description)p Black 1286 w(The)341 b(function)i
+Fy(IDASetNonlinConvCoefIC)i FA(sp)31 b(eci\257es)340
+b(the)i(p)31 b(ositiv)-31 b(e)342 b(constan)-31 b(t)343
+b(in)f(the)f(Newton)10814 40541 y(iteration)371 b(con)-31
+b(v)g(ergence)370 b(test)g(within)h(the)e(initial)j(condition)g
+(calculation.)p Black 4000 42278 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fy(ida)p 12627 42278 V 419 w(mem)p
+Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814 43793 a
+Fy(epiccon)p Black 554 w FA(\()p Fy(realtype)p FA(\))372
+b(co)31 b(e\261cien)-31 b(t)370 b(in)g(the)f(Newton)i(con)-31
+b(v)g(ergence)370 b(test.)p Black 4000 45530 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 10814 47267 a Fy(IDA)p
+12627 47267 V 419 w(SUCCESS)p Black 1554 w FA(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfuly)f(set.)p
+Black 10814 48783 a Fy(IDA)p 12627 48783 V 419 w(MEM)p
+14789 48783 V 419 w(NULL)p Black 1135 w FA(The)h Fy(ida)p
+22685 48783 V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)370
+b(is)f Fy(NULL)p FA(.)p Black 10814 50298 a Fy(IDA)p
+12627 50298 V 419 w(ILL)p 14789 50298 V 419 w(INPUT)p
+Black 554 w FA(The)g Fy(epiccon)h FA(factor)h(is)e(negativ)-31
+b(e)371 b(\(illegal\).)p Black 4000 52035 a(Notes)p Black
+4072 w(The)e(default)i(v)-61 b(alue)370 b(is)f(0)p Fp(:)p
+FA(01)248 b Fs(\242)e FA(0)p Fp(:)p FA(33.)10814 53772
+y(This)443 b(test)g(uses)f(a)h(w)-31 b(eigh)g(ted)445
+b(RMS)e(norm)g(\(with)h(w)-31 b(eigh)g(ts)445 b(de\257ned)d(b)-31
+b(y)444 b(the)f(tolerances\).)715 b(F)-92 b(or)10814
+55101 y(new)350 b(initial)i(v)-61 b(alue)350 b(v)-31
+b(ectors)349 b Fp(y)389 b FA(and)350 b Fp(y)26476 54699
+y Fo(0)27135 55101 y FA(to)g(b)31 b(e)349 b(accepted,)355
+b(the)349 b(norm)h(of)g Fp(J)41519 54699 y Fo(\241)p
+Fn(1)42708 55101 y Fp(F)154 b FA(\()p Fp(t)44404 55267
+y Fn(0)44900 55101 y Fp(;)184 b(y)40 b(;)184 b(y)47048
+54699 y Fo(0)47360 55101 y FA(\))349 b(m)-31 b(ust)350
+b(b)31 b(e)10814 56429 y Fs(\267)369 b Fy(epiccon)p FA(,)h(where)f
+Fp(J)476 b FA(is)369 b(the)g(system)h(Jacobian.)p 4000
+58668 11795 45 v 4000 60255 45 1587 v 4376 59677 a Fy
+(IDASetMaxNumStepsIC)p 15750 60255 V 4000 60299 11795
+45 v Black 4000 61579 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDASetMaxNumStepsIC\(ida)p 28315 61579 349 45 v
+422 w(mem,)h(maxnh\);)p Black 4000 63316 a FA(Description)p
+Black 1286 w(The)388 b(function)h Fy(IDASetMaxNumStepsIC)h
+FA(sp)31 b(eci\257es)387 b(the)h(maxim)-31 b(um)391 b(n)-31
+b(um)g(b)31 b(er)388 b(of)g(steps)f(allo)-31 b(w)g(ed)10814
+64644 y(when)268 b Fy(icopt)p FA(=)p Fy(IDA)p 19182 64644
+V 420 w(YA)p 20764 64644 V 419 w(YDP)p 22926 64644 V
+419 w(INIT)g FA(in)h Fy(IDACalcIC)p FA(,)h(where)e Fp(h)f
+FA(app)31 b(ears)268 b(in)h(the)f(system)h(Jacobian,)10814
+65972 y Fp(J)414 b FA(=)307 b Fp(@)61 b(F)92 b(=@)61
+b(y)287 b FA(+)246 b(\(1)p Fp(=h)p FA(\))p Fp(@)61 b(F)92
+b(=@)61 b(y)23444 65571 y Fo(0)23756 65972 y FA(.)p Black
+4000 67709 a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p
+12627 67709 V 419 w(mem)p Black 554 w FA(\()p Fy(void)582
+b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p
+Black 10814 69225 a Fy(maxnh)p Black 1554 w FA(\()p Fy(int)p
+FA(\))370 b(maxim)-31 b(um)372 b(allo)-31 b(w)g(ed)372
+b(n)-31 b(um)g(b)31 b(er)369 b(of)h(v)-61 b(alues)369
+b(for)g Fp(h)p FA(.)p Black 4000 70962 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 10814 72699 a Fy(IDA)p
+12627 72699 V 419 w(SUCCESS)p Black 1554 w FA(The)g(optional)j(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfuly)f(set.)p
+Black 10814 74214 a Fy(IDA)p 12627 74214 V 419 w(MEM)p
+14789 74214 V 419 w(NULL)p Black 1135 w FA(The)h Fy(ida)p
+22685 74214 V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)370
+b(is)f Fy(NULL)p FA(.)p Black 10814 75730 a Fy(IDA)p
+12627 75730 V 419 w(ILL)p 14789 75730 V 419 w(INPUT)p
+Black 554 w(maxnh)h FA(is)f(non-p)31 b(ositiv)-31 b(e.)p
+Black 4000 77467 a(Notes)p Black 4072 w(The)369 b(default)i(v)-61
+b(alue)370 b(is)f(5.)p Black Black eop
+%%Page: 36 44
+36 43 bop Black 0 2701 a FB(36)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black 0 5965 11214 45 v 0 7306
+45 1341 v 376 6974 a Fy(IDASetMaxNumJacsIC)p 11169 7306
+V 0 7350 11214 45 v Black 0 8705 a FA(Call)p Black 4848
+w Fy(flag)582 b(=)f(IDASetMaxNumJacsIC\(ida)p 23734 8705
+349 45 v 422 w(mem,)g(maxnj\);)p Black 0 10481 a FA(Description)p
+Black 1286 w(The)276 b(function)h Fy(IDASetMaxNumJacsIC)h
+FA(sp)31 b(eci\257es)275 b(the)h(maxim)-31 b(um)278 b(n)-31
+b(um)g(b)31 b(er)276 b(of)g(the)g(appro)-31 b(ximate)6814
+11809 y(Jacobian)343 b(or)f(preconditioner)g(ev)-61 b(aluations)344
+b(allo)-31 b(w)g(ed)344 b(when)e(the)g(Newton)h(iteration)h(app)31
+b(ears)341 b(to)6814 13138 y(b)31 b(e)369 b(slo)-31 b(wly)371
+b(con)-31 b(v)g(erging.)p Black 0 14914 a(Argumen)g(ts)p
+Black Black 1517 w Fy(ida)p 8627 14914 V 419 w(mem)p
+Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814 16466 a
+Fy(maxnj)p Black 1554 w FA(\()p Fy(int)p FA(\))370 b(maxim)-31
+b(um)372 b(allo)-31 b(w)g(ed)372 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(Jacobian)g(or)g(preconditioner)g(ev)-61
+b(aluations.)p Black 0 18243 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 6814 20019 a Fy(IDA)p 8627 20019 V 419 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfuly)f(set.)p Black 6814 21571 a Fy(IDA)p
+8627 21571 V 419 w(MEM)p 10789 21571 V 419 w(NULL)p Black
+1135 w FA(The)h Fy(ida)p 18685 21571 V 419 w(mem)h FA(p)31
+b(oin)-31 b(ter)370 b(is)f Fy(NULL)p FA(.)p Black 6814
+23124 a Fy(IDA)p 8627 23124 V 419 w(ILL)p 10789 23124
+V 419 w(INPUT)p Black 554 w(maxnj)h FA(is)f(non-p)31
+b(ositiv)-31 b(e.)p Black 0 24900 a(Notes)p Black 4072
+w(The)369 b(default)i(v)-61 b(alue)370 b(is)f(4.)p 0
+27185 11795 45 v 0 28526 45 1341 v 376 28194 a Fy(IDASetMaxNumItersIC)p
+11750 28526 V 0 28570 11795 45 v Black 0 29925 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDASetMaxNumItersIC\(ida)p
+24315 29925 349 45 v 422 w(mem,)h(maxnit\);)p Black 0
+31701 a FA(Description)p Black 1286 w(The)351 b(function)i
+Fy(IDASetMaxNumItersIC)h FA(sp)31 b(eci\257es)350 b(the)i(maxim)-31
+b(um)353 b(n)-31 b(um)g(b)31 b(er)352 b(of)f(Newton)i(itera-)6814
+33029 y(tions)370 b(allo)-31 b(w)g(ed)372 b(in)d(an)-31
+b(y)370 b(one)g(attempt)h(to)f(solv)-31 b(e)370 b(the)f(initial)j
+(conditions)f(calculation)i(problem.)p Black 0 34806
+a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p 8627
+34806 V 419 w(mem)p Black 554 w FA(\()p Fy(void)582 b(*)p
+FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25
+b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814
+36358 a Fy(maxnit)p Black 973 w FA(\()p Fy(int)p FA(\))370
+b(maxim)-31 b(um)372 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(Newton)h
+(iterations.)p Black 0 38134 a(Return)e(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 6814 39911 a Fy(IDA)p 8627 39911 V 419 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfuly)f(set.)p Black 6814 41463 a Fy(IDA)p
+8627 41463 V 419 w(MEM)p 10789 41463 V 419 w(NULL)p Black
+1135 w FA(The)h Fy(ida)p 18685 41463 V 419 w(mem)h FA(p)31
+b(oin)-31 b(ter)370 b(is)f Fy(NULL)p FA(.)p Black 6814
+43015 a Fy(IDA)p 8627 43015 V 419 w(ILL)p 10789 43015
+V 419 w(INPUT)p Black 554 w(maxnit)h FA(is)f(non-p)31
+b(ositiv)-31 b(e.)p Black 0 44792 a(Notes)p Black 4072
+w(The)369 b(default)i(v)-61 b(alue)370 b(is)f(10.)p 0
+47077 12957 45 v 0 48417 45 1341 v 376 48085 a Fy
+(IDASetLineSearchOffIC)p 12913 48417 V 0 48461 12957
+45 v Black 0 49816 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDASetLineSearchOffIC\(ida)p 25477 49816 349 45
+v 422 w(mem,)h(lsoff\);)p Black 0 51593 a FA(Description)p
+Black 1286 w(The)478 b(function)h Fy(IDASetLineSearchOffIC)i
+FA(sp)31 b(eci\257es)477 b(whether)h(to)g(turn)g(on)g(or)f(o\256)h(the)
+g(line-)6814 52921 y(searc)-31 b(h)369 b(algorithm.)p
+Black 0 54697 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fy(ida)p 8627 54697 V 419 w(mem)p Black 554 w FA(\()p
+Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 6814 56250 a Fy(lsoff)p Black 1554 w FA(\()p
+Fy(booleantype)p FA(\))356 b(a)e(\260ag)g(to)g(turn)g(o\256)g(\()p
+Fy(TRUE)p FA(\))h(or)e(k)-31 b(eep)354 b(\()p Fy(FALSE)p
+FA(\))h(the)f(linesearc)-31 b(h)354 b(algo-)11273 57578
+y(rithm.)p Black 0 59354 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 6814 61131 a Fy(IDA)p 8627 61131 V 419 w(SUCCESS)p
+Black 973 w FA(The)g(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)368 b(successfuly)h(set.)p Black 6814 62683 a Fy(IDA)p
+8627 62683 V 419 w(MEM)p 10789 62683 V 419 w(NULL)p Black
+554 w FA(The)g Fy(ida)p 18104 62683 V 419 w(mem)h FA(p)31
+b(oin)-31 b(ter)369 b(is)h Fy(NULL)p FA(.)p Black 0 64459
+a(Notes)p Black 4072 w(The)f(default)i(v)-61 b(alue)370
+b(is)f Fy(FALSE)p FA(.)p 0 66744 12957 45 v 0 68331 45
+1587 v 376 67753 a Fy(IDASetStepToleranceIC)p 12913 68331
+V 0 68375 12957 45 v Black 0 69657 a FA(Call)p Black
+4848 w Fy(flag)582 b(=)f(IDASetStepToleranceIC\(ida)p
+25477 69657 349 45 v 422 w(mem,)h(steptol\);)p Black
+0 71434 a FA(Description)p Black 1286 w(The)292 b(function)h
+Fy(IDASetStepToleranceIC)i FA(sp)31 b(eci\257es)291 b(a)h(p)31
+b(ositiv)-31 b(e)293 b(lo)-31 b(w)g(er)293 b(b)31 b(ound)292
+b(on)g(the)g(Newton)6814 72762 y(step.)p Black 0 74538
+a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p 8627
+74538 V 419 w(mem)p Black 554 w FA(\()p Fy(void)582 b(*)p
+FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25
+b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814
+76091 a Fy(steptol)p Black 554 w FA(\()p Fy(int)p FA(\))371
+b(Newton)g(step)e(tolerance.)p Black 0 77867 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black Black eop
+%%Page: 37 45
+37 44 bop Black 4000 2701 a FB(5.4)425 b(User-callable)g(functions)
+32020 b(37)p 4000 3144 48001 45 v Black Black 10814 6974
+a Fy(IDA)p 12627 6974 349 45 v 419 w(SUCCESS)p Black
+1554 w FA(The)369 b(optional)j(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfuly)f(set.)p Black 10814 8540 a Fy(IDA)p
+12627 8540 V 419 w(MEM)p 14789 8540 V 419 w(NULL)p Black
+1135 w FA(The)h Fy(ida)p 22685 8540 V 419 w(mem)h FA(p)31
+b(oin)-31 b(ter)370 b(is)f Fy(NULL)p FA(.)p Black 10814
+10106 a Fy(IDA)p 12627 10106 V 419 w(ILL)p 14789 10106
+V 419 w(INPUT)p Black 554 w FA(The)g Fy(steptol)h FA(tolerance)h(is)e
+(negativ)-31 b(e)371 b(\(illegal\).)p Black 4000 11911
+a(Notes)p Black 4072 w(The)e(default)i(v)-61 b(alue)370
+b(is)f(\(unit)h(roundo\256)86 b(\))28097 11509 y Fn(2)p
+Fm(=)p Fn(3)29489 11911 y FA(.)4000 15497 y Ft(5.4.6)1495
+b(In)-42 b(terp)42 b(olated)500 b(output)f(function)4000
+17571 y FA(An)325 b(optional)j(function)f Fy(IDAGetSolution)g
+FA(is)e(a)-31 b(v)-61 b(ailable)328 b(to)f(obtain)g(additional)h
+(output)f(v)-61 b(alues.)478 b(This)325 b(function)4000
+18900 y(m)-31 b(ust)353 b(b)31 b(e)351 b(called)i(after)g(a)f
+(successful)f(return)h(from)g Fy(IDASolve)h FA(and)f(pro)-31
+b(vides)353 b(in)-31 b(terp)31 b(olated)354 b(v)-61 b(alues)352
+b(of)h Fp(y)391 b FA(and)352 b Fp(y)51690 18498 y Fo(0)4000
+20228 y FA(for)369 b(an)-31 b(y)370 b(v)-61 b(alue)370
+b(of)g Fp(t)e FA(in)i(the)f(last)h(in)-31 b(ternal)371
+b(step)e(tak)-31 b(en)370 b(b)-31 b(y)370 b Fx(id)-25
+b(a)p FA(.)5660 21573 y(The)370 b(call)g(to)g(the)g Fy(IDAGetSolution)h
+FA(function)f(has)f(the)h(follo)-31 b(wing)373 b(form:)p
+4000 23529 8889 45 v 4000 24870 45 1341 v 4376 24538
+a Fy(IDAGetSolution)p 12845 24870 V 4000 24914 8889 45
+v Black 4000 26283 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDAGetSolution\(ida)p 25410 26283 349 45 v 421
+w(mem,)h(t,)f(yret,)h(ypret\);)p Black 4000 28087 a FA(Description)p
+Black 1286 w(The)426 b(function)i Fy(IDAGetSolution)g
+FA(computes)f(the)g(in)-31 b(terp)31 b(olated)428 b(v)-61
+b(alues)426 b(of)h Fp(y)465 b FA(and)427 b Fp(y)47791
+27685 y Fo(0)48527 28087 y FA(for)f(an)-31 b(y)10814
+29415 y(v)-61 b(alue)342 b(of)f Fp(t)g FA(in)h(the)f(last)h(in)-31
+b(ternal)343 b(step)e(tak)-31 b(en)343 b(b)-31 b(y)341
+b Fx(id)-25 b(a)p FA(.)484 b(The)341 b(v)-61 b(alue)342
+b(of)g Fp(t)e FA(m)-31 b(ust)342 b(satisfy)h Fp(t)47772
+29581 y Fm(n)48564 29415 y Fs(\241)190 b Fp(h)50253 29581
+y Fm(u)51139 29415 y Fs(\267)10814 30744 y Fp(t)307 b
+Fs(\267)h Fp(t)13090 30910 y Fm(n)13692 30744 y FA(,)356
+b(where)c Fp(t)17939 30910 y Fm(n)18893 30744 y FA(denotes)h(the)f
+(curren)-31 b(t)352 b(in)-31 b(ternal)353 b(time)h(reac)-31
+b(hed,)356 b(and)c Fp(h)42280 30910 y Fm(u)43211 30744
+y FA(is)g(the)g(last)h(in)-31 b(ternal)10814 32072 y(step)369
+b(size)g(used)g(successfully)-92 b(.)p Black 4000 33876
+a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p 12627
+33876 V 419 w(mem)p Black 554 w FA(\()p Fy(void)582 b(*)p
+FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25
+b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814
+35443 a Fy(t)p Black 3878 w FA(\()p Fy(realtype)p FA(\))p
+Black 10814 37009 a Fy(yret)p Black 2135 w FA(\()p Fy(N)p
+16354 37009 V 419 w(Vector)p FA(\))370 b(v)-31 b(ector)370
+b(con)-31 b(taining)372 b(the)e(in)-31 b(terp)31 b(olated)371
+b Fp(y)40 b FA(\()p Fp(t)p FA(\).)p Black 10814 38575
+a Fy(ypret)p Black 1554 w FA(\()p Fy(N)p 16354 38575
+V 419 w(Vector)p FA(\))370 b(v)-31 b(ector)370 b(con)-31
+b(taining)372 b(the)e(in)-31 b(terp)31 b(olated)371 b
+Fp(y)38398 38173 y Fo(0)38708 38575 y FA(\()p Fp(t)p
+FA(\).)p Black 4000 40379 a(Return)e(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 10814 42183 a Fy(IDA)p 12627 42183 V 419 w(SUCCESS)p
+Black 973 w(IDAGetSolution)i FA(succeeded.)p Black 10814
+43750 a Fy(IDA)p 12627 43750 V 419 w(MEM)p 14789 43750
+V 419 w(NULL)p Black 554 w FA(The)e Fy(ida)p 22104 43750
+V 419 w(mem)h FA(argumen)-31 b(t)370 b(w)-31 b(as)370
+b Fy(NULL)p FA(.)p Black 10814 45316 a Fy(IDA)p 12627
+45316 V 419 w(BAD)p 14789 45316 V 419 w(T)p Black 2297
+w(t)f FA(is)g(not)h(in)f(the)h(in)-31 b(terv)-61 b(al)370
+b([)p Fp(t)29952 45482 y Fm(n)30801 45316 y Fs(\241)246
+b Fp(h)32546 45482 y Fm(u)33125 45316 y Fp(;)184 b(t)34016
+45482 y Fm(n)34619 45316 y FA(].)p Black 4000 47120 a(Notes)p
+Black 4072 w(It)487 b(is)f(only)i(legal)g(to)f(call)h(the)f(function)h
+Fy(IDAGetSolution)g FA(after)g(a)e(successful)g(return)g(from)10814
+48449 y Fy(IDASolve)p FA(.)494 b(See)369 b Fy(IDAGetCurrentTime)i
+FA(and)f Fy(IDAGetLastStep)h FA(for)e(access)g(to)g Fp(t)45855
+48615 y Fm(n)46827 48449 y FA(and)g Fp(h)49617 48615
+y Fm(u)50196 48449 y FA(.)4000 51635 y Ft(5.4.7)1495
+b(Optional)500 b(output)f(functions)4000 53709 y Fx(id)-25
+b(a)282 b FA(pro)-31 b(vides)283 b(an)g(extensiv)-31
+b(e)283 b(list)h(of)f(functions)g(that)h(can)f(b)31 b(e)282
+b(used)f(to)j(obtain)g(solv)-31 b(er)283 b(p)31 b(erformance)282
+b(information.)4000 55037 y(T)-92 b(able)259 b(5.2)g(lists)f(all)i
+(optional)g(output)f(functions)g(in)f Fx(id)-25 b(a)p
+FA(,)281 b(whic)-31 b(h)259 b(are)e(then)h(describ)31
+b(ed)257 b(in)i(detail)g(in)f(the)h(remainder)4000 56366
+y(of)370 b(this)f(section.)4000 59331 y FB(Main)424 b(solv)-35
+b(er)425 b(optional)g(output)h(functions)4000 61405 y
+Fx(id)-25 b(a)344 b FA(pro)-31 b(vides)345 b(sev)-31
+b(eral)345 b(user-callable)h(functions)g(that)g(can)f(b)31
+b(e)344 b(used)g(to)h(obtain)h(di\256eren)-31 b(t)345
+b(quan)-31 b(tities)347 b(that)f(ma)-31 b(y)4000 62733
+y(b)31 b(e)263 b(of)i(in)-31 b(terest)265 b(to)f(the)h(user,)284
+b(suc)-31 b(h)264 b(as)g(solv)-31 b(er)264 b(w)-31 b(orkspace)265
+b(requiremen)-31 b(ts,)286 b(solv)-31 b(er)264 b(p)31
+b(erformance)264 b(statistics,)287 b(as)264 b(w)-31 b(ell)4000
+64062 y(as)313 b(additional)j(data)e(from)f(the)g Fx(id)-25
+b(a)313 b FA(memory)h(blo)31 b(c)-31 b(k)314 b(\(a)f(suggested)h
+(tolerance)g(scaling)g(factor,)326 b(the)313 b(error)f(w)-31
+b(eigh)g(t)4000 65390 y(v)g(ector,)446 b(and)429 b(the)h(v)-31
+b(ector)430 b(of)g(estimated)h(lo)31 b(cal)431 b(errors\).)673
+b(Also)430 b(pro)-31 b(vided)430 b(are)f(functions)i(to)f(extract)g
+(statistics)4000 66718 y(related)478 b(to)h(the)f(p)31
+b(erformance)477 b(of)i(the)e Fx(id)-25 b(a)478 b FA(nonlinear)h(solv)
+-31 b(er)478 b(b)31 b(eing)478 b(used.)817 b(As)477 b(a)h(con)-31
+b(v)g(enience,)507 b(additional)4000 68047 y(extraction)447
+b(functions)f(pro)-31 b(vide)446 b(the)g(optional)i(outputs)e(in)f
+(groups.)721 b(These)445 b(optional)j(output)f(functions)f(are)4000
+69375 y(describ)31 b(ed)368 b(next.)p 4000 71332 9470
+45 v 4000 72918 45 1587 v 4376 72340 a Fy(IDAGetWorkSpace)p
+13426 72918 V 4000 72962 9470 45 v Black 4000 74258 a
+FA(Call)p Black 4848 w Fy(flag)582 b(=)f(IDAGetWorkSpace\(ida)p
+25991 74258 349 45 v 421 w(mem,)h(&lenrw,)g(&leniw\);)p
+Black 4000 76063 a FA(Description)p Black 1286 w(The)369
+b(function)i Fy(IDAGetWorkSpace)g FA(returns)d(the)i
+Fx(id)-25 b(a)369 b FA(real)g(and)h(in)-31 b(teger)370
+b(w)-31 b(orkspace)370 b(sizes.)p Black 4000 77867 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 12627 77867 V 419
+w(mem)p Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369
+b FA(memory)h(blo)31 b(c)-31 b(k.)p Black Black eop
+%%Page: 38 46
+38 45 bop Black 0 2701 a FB(38)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black Black Black 5708 17514
+a FA(T)-92 b(able)370 b(5.2:)494 b(Optional)371 b(outputs)f(from)g
+Fx(id)-25 b(a)p FA(,)370 b Fx(id)-25 b(adense)p FA(,)370
+b Fx(id)-25 b(aband)p FA(,)370 b(and)f Fx(id)-25 b(aspgmr)p
+Black 785 18548 46431 45 v 763 19877 45 1329 v 1449 19478
+a FB(Optional)424 b(output)p 29593 19877 V 19831 w(F)-106
+b(unction)425 b(name)p 47193 19877 V 785 19921 46431
+45 v 763 21249 45 1329 v 19394 20851 a(ID)-35 b(A)425
+b(main)e(solv)-35 b(er)p 47193 21249 V 785 21293 46431
+45 v 763 22622 45 1329 v 1449 22223 a FA(Size)369 b(of)h
+Fx(id)-25 b(a)369 b FA(real)h(and)f(in)-31 b(teger)370
+b(w)-31 b(orkspace)p 29593 22622 V 10347 w Fy(IDAGetWorkSpace)p
+47193 22622 V 763 23950 V 1449 23552 a FA(Cum)g(ulativ)g(e)372
+b(n)-31 b(um)g(b)31 b(er)370 b(of)f(in)-31 b(ternal)371
+b(steps)p 29593 23950 V 11100 w Fy(IDAGetNumSteps)p 47193
+23950 V 763 25278 V 1449 24880 a FA(No.)493 b(of)370
+b(calls)g(to)g(residual)f(function)p 29593 25278 V 13473
+w Fy(IDAGetNumResEvals)p 47193 25278 V 763 26607 V 1449
+26208 a FA(No.)493 b(of)370 b(calls)g(to)g(linear)g(solv)-31
+b(er)369 b(setup)g(function)p 29593 26607 V 8421 w Fy
+(IDAGetNumLinSolvSetups)p 47193 26607 V 763 27935 V 1449
+27537 a FA(No.)493 b(of)370 b(lo)31 b(cal)370 b(error)e(test)i
+(failures)g(that)g(ha)-31 b(v)g(e)370 b(o)31 b(ccurred)p
+29593 27935 V 4938 w Fy(IDAGetNumErrTestFails)p 47193
+27935 V 763 29264 V 1449 28865 a FA(Order)368 b(used)g(during)i(the)f
+(last)h(step)p 29593 29264 V 13613 w Fy(IDAGetLastOrder)p
+47193 29264 V 763 30592 V 1449 30193 a FA(Order)e(to)i(b)31
+b(e)369 b(attempted)i(on)e(the)h(next)f(step)p 29593
+30592 V 9508 w Fy(IDAGetCurrentOrder)p 47193 30592 V
+763 31920 V 1449 31522 a FA(Order)f(reductions)h(due)g(to)h(stabilit)
+-31 b(y)372 b(limit)g(detection)p 29593 31920 V 5441
+w Fy(IDAGetNumStabLimOrderReds)p 47193 31920 V 763 33249
+V 1449 32850 a FA(Actual)e(initial)i(step)d(size)g(used)p
+29593 33249 V 15436 w Fy(IDAGetActualInitStep)p 47193
+33249 V 763 34577 V 1449 34178 a FA(Step)g(size)g(used)g(for)g(the)h
+(last)g(step)p 29593 34577 V 14012 w Fy(IDAGetLastStep)p
+47193 34577 V 763 35905 V 1449 35507 a FA(Step)f(size)g(to)h(b)31
+b(e)369 b(attempted)i(on)f(the)f(next)h(step)p 29593
+35905 V 8093 w Fy(IDAGetCurrentStep)p 47193 35905 V 763
+37234 V 1449 36835 a FA(Curren)-31 b(t)369 b(in)-31 b(ternal)371
+b(time)f(reac)-31 b(hed)369 b(b)-31 b(y)370 b(the)f(solv)-31
+b(er)p 29593 37234 V 7808 w Fy(IDAGetCurrentTime)p 47193
+37234 V 763 38562 V 1449 38163 a FA(Suggested)370 b(factor)g(for)f
+(tolerance)i(scaling)p 29593 38562 V 10791 w Fy(IDAGetTolScaleFactor)p
+47193 38562 V 763 39890 V 1449 39492 a FA(Error)d(w)-31
+b(eigh)g(t)372 b(v)-31 b(ector)370 b(for)f(state)h(v)-61
+b(ariables)p 29593 39890 V 10397 w Fy(IDAGetErrWeights)p
+47193 39890 V 763 41219 V 1449 40820 a FA(No.)493 b(of)370
+b(nonlinear)g(solv)-31 b(er)370 b(iterations)p 29593
+41219 V 12821 w Fy(IDAGetNumNonlinSolvIters)p 47193 41219
+V 763 42547 V 1449 42149 a FA(No.)493 b(of)370 b(nonlinear)g(con)-31
+b(v)g(ergence)370 b(failures)p 29593 42547 V 10920 w
+Fy(IDAGetNumNonlinSolvConvFails)p 47193 42547 V 785 42591
+46431 45 v 763 43920 45 1329 v 17018 43521 a FB(ID)-35
+b(ADENSE)426 b(linear)e(solv)-35 b(er)p 47193 43920 V
+785 43964 46431 45 v 763 45292 45 1329 v 1449 44894 a
+FA(Size)369 b(of)h Fx(id)-25 b(adense)370 b FA(real)f(and)h(in)-31
+b(teger)370 b(w)-31 b(orkspace)p 29593 45292 V 7235 w
+Fy(IDADenseGetWorkSpace)p 47193 45292 V 763 46621 V 1449
+46222 a FA(No.)493 b(of)370 b(Jacobian)g(ev)-61 b(aluations)p
+29593 46621 V 15374 w Fy(IDADenseGetNumJacEvals)p 47193
+46621 V 763 47949 V 1449 47551 a FA(No.)493 b(of)370
+b(residual)f(calls)h(for)g(\257nite)g(di\256.)492 b(Jacobian)371
+b(ev)-61 b(als.)p 29593 47949 V 4653 w Fy(IDADenseGetNumResEvals)p
+47193 47949 V 763 49277 V 1449 48879 a FA(Last)369 b(return)g(from)h(a)
+f Fx(id)-25 b(adense)370 b FA(function)p 29593 49277
+V 10295 w Fy(IDADenseGetLastFlag)p 47193 49277 V 785
+49322 46431 45 v 763 50650 45 1329 v 17274 50251 a FB(ID)-35
+b(ABAND)425 b(linear)f(solv)-35 b(er)p 47193 50650 V
+785 50694 46431 45 v 763 52023 45 1329 v 1449 51624 a
+FA(Size)369 b(of)h Fx(id)-25 b(aband)369 b FA(real)h(and)f(in)-31
+b(teger)370 b(w)-31 b(orkspace)p 29593 52023 V 7656 w
+Fy(IDABandGetWorkSpace)p 47193 52023 V 763 53351 V 1449
+52952 a FA(No.)493 b(of)370 b(Jacobian)g(ev)-61 b(aluations)p
+29593 53351 V 15374 w Fy(IDABandGetNumJacEvals)p 47193
+53351 V 763 54679 V 1449 54281 a FA(No.)493 b(of)370
+b(residual)f(calls)h(for)g(\257nite)g(di\256.)492 b(Jacobian)371
+b(ev)-61 b(als.)p 29593 54679 V 4653 w Fy(IDABandGetNumResEvals)p
+47193 54679 V 763 56008 V 1449 55609 a FA(Last)369 b(return)g(from)h(a)
+f Fx(id)-25 b(aband)369 b FA(function)p 29593 56008 V
+10716 w Fy(IDABandGetLastFlag)p 47193 56008 V 785 56052
+46431 45 v 763 57380 45 1329 v 16823 56982 a FB(ID)-35
+b(ASPGMR)425 b(linear)f(solv)-35 b(er)p 47193 57380 V
+785 57425 46431 45 v 763 58753 45 1329 v 1449 58354 a
+FA(Size)369 b(of)h Fx(id)-25 b(aspgmr)368 b FA(real)i(and)f(in)-31
+b(teger)370 b(w)-31 b(orkspace)p 29593 58753 V 7020 w
+Fy(IDASpgmrGetWorkSpace)p 47193 58753 V 763 60081 V 1449
+59683 a FA(No.)493 b(of)370 b(linear)g(iterations)p 29593
+60081 V 17750 w Fy(IDASpgmrGetNumLinIters)p 47193 60081
+V 763 61410 V 1449 61011 a FA(No.)493 b(of)370 b(linear)g(con)-31
+b(v)g(ergence)370 b(failures)p 29593 61410 V 12703 w
+Fy(IDASpgmrGetNumConvFails)p 47193 61410 V 763 62738
+V 1449 62339 a FA(No.)493 b(of)370 b(preconditioner)g(ev)-61
+b(aluations)p 29593 62738 V 12677 w Fy(IDASpgmrGetNumPrecEvals)p
+47193 62738 V 763 64066 V 1449 63668 a FA(No.)493 b(of)370
+b(preconditioner)g(solv)-31 b(es)p 29593 64066 V 15283
+w Fy(IDASpgmrGetNumPrecSolves)p 47193 64066 V 763 65395
+V 1449 64996 a FA(No.)493 b(of)370 b(Jacobian-v)-31 b(ector)371
+b(pro)31 b(duct)370 b(ev)-61 b(aluations)p 29593 65395
+V 7895 w Fy(IDASpgmrGetNumJtimesEvals)p 47193 65395 V
+763 66723 V 1449 66325 a FA(No.)493 b(of)370 b(residual)f(calls)h(for)g
+(\257nite)g(di\256.)492 b(Jacobian-v)-31 b(ector)372
+b(ev)-61 b(als.)p 29593 66723 V 1329 w Fy(IDASpgmrGetNumResEvals)p
+47193 66723 V 763 68051 V 1449 67653 a FA(Last)369 b(return)g(from)h(a)
+f Fx(id)-25 b(aspgmr)368 b FA(function)p 29593 68051
+V 10080 w Fy(IDASpgmrGetLastFlag)p 47193 68051 V 785
+68096 46431 45 v Black Black Black eop
+%%Page: 39 47
+39 46 bop Black 4000 2701 a FB(5.4)425 b(User-callable)g(functions)
+32020 b(39)p 4000 3144 48001 45 v Black Black 10814 6974
+a Fy(lenrw)p Black 1554 w FA(\()p Fy(long)582 b(int)p
+FA(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(real)f(v)-61
+b(alues)370 b(in)f(the)g Fx(id)-25 b(a)370 b FA(w)-31
+b(orkspace.)p Black 10814 8545 a Fy(leniw)p Black 1554
+w FA(\()p Fy(long)582 b(int)p FA(\))370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(in)-31 b(teger)370 b(v)-61 b(alues)369
+b(in)h(the)f Fx(id)-25 b(a)369 b FA(w)-31 b(orkspace.)p
+Black 4000 10360 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 10814 12175 a Fy(IDA)p 12627 12175 349 45 v 419
+w(SUCCESS)p Black 973 w FA(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfuly)g(set.)p
+Black 10814 13746 a Fy(IDA)p 12627 13746 V 419 w(MEM)p
+14789 13746 V 419 w(NULL)p Black 554 w FA(The)g Fy(ida)p
+22104 13746 V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369
+b(is)h Fy(NULL)p FA(.)p Black 4000 15561 a(Notes)p Black
+4072 w(In)397 b(terms)h(of)g(the)g(problem)g(size)g Fp(N)518
+b FA(and)398 b(maxim)-31 b(um)400 b(metho)31 b(d)399
+b(order)e Fy(maxord)p FA(,)406 b(the)398 b(actual)h(size)10814
+16889 y(of)370 b(the)f(real)h(w)-31 b(orkspace)370 b(giv)-31
+b(en)370 b(in)g Fy(realtype)g FA(w)-31 b(ords)369 b(is:)p
+Black 12142 19190 a Fs(\262)p Black 554 w FA(Base)g(v)-61
+b(alue:)494 b Fy(lenrw)369 b FA(=)308 b(55)247 b(+)f(\()p
+Fp(m)g FA(+)g(6\))p Fp(N)p Black 12142 21005 a Fs(\262)p
+Black 554 w FA(With)370 b Fy(itol)582 b(=)f(IDA)p 21990
+21005 V 419 w(SV)p FA(:)370 b Fy(lenrw)f FA(=)g Fy(lenrw)h
+FA(+)p Fp(N)p Black 12142 22819 a Fs(\262)p Black 554
+w FA(With)g(constrain)-31 b(t)371 b(c)-31 b(hec)g(king)370
+b(\(see)f Fy(IDASetConstraints)p FA(\):)496 b Fy(lenrw)370
+b FA(=)f Fy(lenrw)g FA(+)p Fp(N)p Black 12142 24634 a
+Fs(\262)p Black 554 w FA(With)h Fy(id)f FA(sp)31 b(eci\257ed)369
+b(\(see)g Fy(IDASetId)p FA(\):)494 b Fy(lenrw)370 b FA(=)f
+Fy(lenrw)h FA(+)p Fp(N)10814 26935 y FA(Here)f Fp(m)307
+b FA(=)h Fp(max)p FA(\(3)p Fp(;)p Fy(maxord)p FA(\).)10814
+28750 y(The)337 b(size)h(of)f(the)h(in)-31 b(teger)338
+b(w)-31 b(orkspace)338 b(\(without)i(distinction)g(b)31
+b(et)-31 b(w)g(een)338 b Fy(int)f FA(and)h Fy(long)581
+b(int)p FA(\))338 b(is:)p Black 12142 31051 a Fs(\262)p
+Black 554 w FA(Base)369 b(v)-61 b(alue:)494 b Fy(leniw)369
+b FA(=)308 b(38)247 b(+)f(\()p Fp(m)g FA(+)g(6\))p Fp(N)p
+Black 12142 32865 a Fs(\262)p Black 554 w FA(With)370
+b Fy(itol)582 b(=)f(IDA)p 21990 32865 V 419 w(SV)p FA(:)370
+b Fy(leniw)f FA(=)g Fy(leniw)h FA(+)p Fp(N)p Black 12142
+34680 a Fs(\262)p Black 554 w FA(With)g(constrain)-31
+b(t)371 b(c)-31 b(hec)g(king:)494 b Fy(lenrw)370 b FA(=)e
+Fy(lenrw)i FA(+)p Fp(N)p Black 12142 36495 a Fs(\262)p
+Black 554 w FA(With)g Fy(id)f FA(sp)31 b(eci\257ed:)492
+b Fy(lenrw)370 b FA(=)f Fy(lenrw)h FA(+)p Fp(N)10814
+38796 y FA(F)-92 b(or)450 b(the)h(default)h(v)-61 b(alue)451
+b(of)g Fy(maxord)p FA(,)473 b(the)451 b(base)f(v)-61
+b(alues)451 b(are)g Fy(lenrw)g FA(=)443 b(55)301 b(+)g(11)p
+Fp(N)572 b FA(and)451 b Fy(leniw)10814 40124 y FA(=)307
+b(38)247 b(+)f(11)p Fp(N)p 4000 42530 8889 45 v 4000
+44117 45 1587 v 4376 43539 a Fy(IDAGetNumSteps)p 12845
+44117 V 4000 44161 8889 45 v Black 4000 45462 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDAGetNumSteps\(ida)p
+25410 45462 349 45 v 421 w(mem,)h(&nsteps\);)p Black
+4000 47277 a FA(Description)p Black 1286 w(The)360 b(function)h
+Fy(IDAGetNumSteps)g FA(returns)d(the)i(cum)-31 b(ulativ)g(e)362
+b(n)-31 b(um)g(b)31 b(er)360 b(of)g(in)-31 b(ternal)361
+b(steps)e(tak)-31 b(en)10814 48605 y(b)g(y)369 b(the)h(solv)-31
+b(er)369 b(\(total)j(so)d(far\).)p Black 4000 50420 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 12627 50420 V 419
+w(mem)p Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369
+b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814 51991
+a Fy(nsteps)p Black 973 w FA(\()p Fy(long)582 b(int)p
+FA(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(steps)f(tak)-31
+b(en)370 b(b)-31 b(y)369 b Fx(id)-25 b(a)p FA(.)p Black
+4000 53806 a(Return)369 b(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+10814 55621 a Fy(IDA)p 12627 55621 V 419 w(SUCCESS)p
+Black 973 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)g(set.)p Black 10814
+57192 a Fy(IDA)p 12627 57192 V 419 w(MEM)p 14789 57192
+V 419 w(NULL)p Black 554 w FA(The)g Fy(ida)p 22104 57192
+V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)p 4000 59598 10633 45 v 4000 60939 45 1341 v 4376
+60607 a Fy(IDAGetNumResEvals)p 14588 60939 V 4000 60983
+10633 45 v Black 4000 62357 a FA(Call)p Black 4848 w
+Fy(flag)582 b(=)f(IDAGetNumResEvals\(ida)p 27153 62357
+349 45 v 422 w(mem,)g(&nrevals\);)p Black 4000 64172
+a FA(Description)p Black 1286 w(The)435 b(function)i
+Fy(IDAGetNumResEvals)h FA(returns)c(the)h(n)-31 b(um)g(b)31
+b(er)436 b(of)f(calls)i(to)f(the)f(user's)f(residual)10814
+65500 y(ev)-61 b(aluation)372 b(function.)p Black 4000
+67315 a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p
+12627 67315 V 419 w(mem)p Black 554 w FA(\()p Fy(void)582
+b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p
+Black 10814 68886 a Fy(nrevals)p Black 554 w FA(\()p
+Fy(long)583 b(int)p FA(\))370 b(n)-31 b(um)g(b)31 b(er)369
+b(of)h(calls)g(to)g(the)f(user's)f Fy(res)i FA(function.)p
+Black 4000 70701 a(Return)f(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+10814 72515 a Fy(IDA)p 12627 72515 V 419 w(SUCCESS)p
+Black 973 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)g(set.)p Black 10814
+74087 a Fy(IDA)p 12627 74087 V 419 w(MEM)p 14789 74087
+V 419 w(NULL)p Black 554 w FA(The)g Fy(ida)p 22104 74087
+V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)p Black 4000 75902 a(Notes)p Black 4072 w(The)j
+Fy(nrevals)g FA(v)-61 b(alue)373 b(returned)e(b)-31 b(y)373
+b Fy(IDAGetNumResEvals)i FA(do)31 b(es)372 b(not)h(accoun)-31
+b(t)373 b(for)g(calls)g(made)10814 77230 y(to)d Fy(res)f
+FA(from)h(a)g(linear)g(solv)-31 b(er)369 b(or)g(preconditioner)i(mo)31
+b(dule.)p Black Black eop
+%%Page: 40 48
+40 47 bop Black 0 2701 a FB(40)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black 0 5965 13539 45 v 0 7552
+45 1587 v 376 6974 a Fy(IDAGetNumLinSolvSetups)p 13494
+7552 V 0 7596 13539 45 v Black 0 8990 a FA(Call)p Black
+4848 w Fy(flag)582 b(=)f(IDAGetNumLinSolvSetups\(ida)p
+26058 8990 349 45 v 422 w(mem,)h(&nlinsetups\);)p Black
+0 10990 a FA(Description)p Black 1286 w(The)338 b(function)i
+Fy(IDAGetNumLinSolvSetups)h FA(returns)d(the)g(cum)-31
+b(ulativ)g(e)341 b(n)-31 b(um)g(b)31 b(er)338 b(of)h(calls)g(made)6814
+12318 y(to)370 b(the)f(linear)h(solv)-31 b(er's)370 b(setup)f(function)
+i(\(total)h(so)d(far\).)p Black 0 14318 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 8627 14318 V 419 w(mem)p
+Black 2460 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814 15982 a
+Fy(nlinsetups)p Black 555 w FA(\()p Fy(long)582 b(int)p
+FA(\))370 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(calls)g(made)g(to)g(the)f
+(linear)h(solv)-31 b(er)370 b(setup)f(function.)p Black
+0 17982 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+6814 19982 a Fy(IDA)p 8627 19982 V 419 w(SUCCESS)p Black
+973 w FA(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfuly)g(set.)p Black 6814 21646 a Fy(IDA)p
+8627 21646 V 419 w(MEM)p 10789 21646 V 419 w(NULL)p Black
+554 w FA(The)g Fy(ida)p 18104 21646 V 419 w(mem)h FA(p)31
+b(oin)-31 b(ter)369 b(is)h Fy(NULL)p FA(.)p 0 24636 12957
+45 v 0 25976 45 1341 v 376 25644 a Fy(IDAGetNumErrTestFails)p
+12913 25976 V 0 26020 12957 45 v Black 0 27487 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDAGetNumErrTestFails\(ida)p
+25477 27487 349 45 v 422 w(mem,)h(&netfails\);)p Black
+0 29487 a FA(Description)p Black 1286 w(The)413 b(function)h
+Fy(IDAGetNumErrTestFails)i FA(returns)411 b(the)i(cum)-31
+b(ulativ)g(e)416 b(n)-31 b(um)g(b)31 b(er)412 b(of)i(lo)31
+b(cal)414 b(error)6814 30815 y(test)370 b(failures)f(that)i(ha)-31
+b(v)g(e)370 b(o)31 b(ccurred)368 b(\(total)k(so)d(far\).)p
+Black 0 32815 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fy(ida)p 8627 32815 V 419 w(mem)p Black 1298 w FA(\()p
+Fy(void)582 b(*)p FA(\))369 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)g Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 6814 34479 a Fy(netfails)p Black 555 w FA(\()p
+Fy(long)582 b(int)p FA(\))370 b(n)-31 b(um)g(b)31 b(er)369
+b(of)h(error)e(test)h(failures.)p Black 0 36479 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 6814 38479 a Fy(IDA)p 8627
+38479 V 419 w(SUCCESS)p Black 973 w FA(The)g(optional)j(output)e(v)-61
+b(alue)370 b(has)f(b)31 b(een)369 b(successfuly)g(set.)p
+Black 6814 40143 a Fy(IDA)p 8627 40143 V 419 w(MEM)p
+10789 40143 V 419 w(NULL)p Black 554 w FA(The)g Fy(ida)p
+18104 40143 V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369
+b(is)h Fy(NULL)p FA(.)p 0 43133 9470 45 v 0 44474 45
+1341 v 376 44141 a Fy(IDAGetLastOrder)p 9426 44474 V
+0 44518 9470 45 v Black 0 45984 a FA(Call)p Black 4848
+w Fy(flag)582 b(=)f(IDAGetLastOrder\(ida)p 21991 45984
+349 45 v 421 w(mem,)h(&qlast\);)p Black 0 47984 a FA(Description)p
+Black 1286 w(The)332 b(function)i Fy(IDAGetLastOrder)g
+FA(returns)d(the)h(in)-31 b(tegration)335 b(metho)31
+b(d)333 b(order)f(used)f(during)i(the)6814 49312 y(last)370
+b(in)-31 b(ternal)371 b(step.)p Black 0 51312 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 8627 51312 V 419 w(mem)p
+Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814 52976 a
+Fy(qlast)p Black 1554 w FA(\()p Fy(int)p FA(\))370 b(metho)31
+b(d)370 b(order)f(used)f(on)i(the)f(last)h(in)-31 b(ternal)371
+b(step.)p Black 0 54976 a(Return)e(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 6814 56976 a Fy(IDA)p 8627 56976 V 419 w(SUCCESS)p
+Black 973 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)g(set.)p Black 6814
+58640 a Fy(IDA)p 8627 58640 V 419 w(MEM)p 10789 58640
+V 419 w(NULL)p Black 554 w FA(The)g Fy(ida)p 18104 58640
+V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)p 0 61630 11214 45 v 0 62971 45 1341 v 376 62639
+a Fy(IDAGetCurrentOrder)p 11169 62971 V 0 63015 11214
+45 v Black 0 64481 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDAGetCurrentOrder\(ida)p 23734 64481 349 45 v
+422 w(mem,)g(&qcur\);)p Black 0 66481 a FA(Description)p
+Black 1286 w(The)413 b(function)i Fy(IDAGetCurrentOrder)h
+FA(returns)c(the)i(in)-31 b(tegration)416 b(metho)31
+b(d)414 b(order)f(to)h(b)31 b(e)412 b(used)6814 67810
+y(on)369 b(the)h(next)g(in)-31 b(ternal)370 b(step.)p
+Black 0 69809 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fy(ida)p 8627 69809 V 419 w(mem)p Black 554 w FA(\()p
+Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 6814 71473 a Fy(qcur)p Black 2135 w FA(\()p
+Fy(int)p FA(\))370 b(metho)31 b(d)370 b(order)f(to)h(b)31
+b(e)368 b(used)h(on)g(the)h(next)g(in)-31 b(ternal)370
+b(step.)p Black 0 73473 a(Return)f(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 6814 75473 a Fy(IDA)p 8627 75473 V 419 w(SUCCESS)p
+Black 973 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)g(set.)p Black 6814
+77137 a Fy(IDA)p 8627 77137 V 419 w(MEM)p 10789 77137
+V 419 w(NULL)p Black 554 w FA(The)g Fy(ida)p 18104 77137
+V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)p Black Black eop
+%%Page: 41 49
+41 48 bop Black 4000 2701 a FB(5.4)425 b(User-callable)g(functions)
+32020 b(41)p 4000 3144 48001 45 v Black 4000 5965 8889
+45 v 4000 7552 45 1587 v 4376 6974 a Fy(IDAGetLastStep)p
+12845 7552 V 4000 7596 8889 45 v Black 4000 8894 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDAGetLastStep\(ida)p
+25410 8894 349 45 v 421 w(mem,)h(&hlast\);)p Black 4000
+10702 a FA(Description)p Black 1286 w(The)405 b(function)g
+Fy(IDAGetLastStep)i FA(returns)c(the)i(in)-31 b(tegration)407
+b(step)d(size)g(tak)-31 b(en)406 b(on)f(the)f(last)i(in-)10814
+12030 y(ternal)370 b(step.)p Black 4000 13838 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 12627 13838 V 419
+w(mem)p Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369
+b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814 15406
+a Fy(hlast)p Black 1554 w FA(\()p Fy(realtype)p FA(\))371
+b(step)e(size)g(tak)-31 b(en)370 b(on)g(the)f(last)h(in)-31
+b(ternal)371 b(step.)p Black 4000 17214 a(Return)e(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 10814 19021 a Fy(IDA)p
+12627 19021 V 419 w(SUCCESS)p Black 973 w FA(The)g(optional)j(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfuly)g(set.)p
+Black 10814 20589 a Fy(IDA)p 12627 20589 V 419 w(MEM)p
+14789 20589 V 419 w(NULL)p Black 554 w FA(The)g Fy(ida)p
+22104 20589 V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369
+b(is)h Fy(NULL)p FA(.)p 4000 22973 10633 45 v 4000 24560
+45 1587 v 4376 23982 a Fy(IDAGetCurrentStep)p 14588 24560
+V 4000 24604 10633 45 v Black 4000 25902 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDAGetCurrentStep\(ida)p
+27153 25902 349 45 v 422 w(mem,)g(&hcur\);)p Black 4000
+27710 a FA(Description)p Black 1286 w(The)438 b(function)h
+Fy(IDAGetCurrentStep)h FA(returns)c(the)i(in)-31 b(tegration)440
+b(step)e(size)f(to)i(b)31 b(e)437 b(attempted)10814 29038
+y(on)369 b(the)h(next)g(in)-31 b(ternal)370 b(step.)p
+Black 4000 30846 a(Argumen)-31 b(ts)p Black Black 1517
+w Fy(ida)p 12627 30846 V 419 w(mem)p Black 554 w FA(\()p
+Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 10814 32414 a Fy(hcur)p Black 2135 w FA(\()p
+Fy(realtype)p FA(\))371 b(step)e(size)g(to)h(b)31 b(e)369
+b(attempted)i(on)e(the)h(next)g(in)-31 b(ternal)370 b(step.)p
+Black 4000 34222 a(Return)f(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+10814 36029 a Fy(IDA)p 12627 36029 V 419 w(SUCCESS)p
+Black 973 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)g(set.)p Black 10814
+37598 a Fy(IDA)p 12627 37598 V 419 w(MEM)p 14789 37598
+V 419 w(NULL)p Black 554 w FA(The)g Fy(ida)p 22104 37598
+V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)p 4000 39982 12376 45 v 4000 41568 45 1587 v 4376
+40990 a Fy(IDAGetActualInitStep)p 16331 41568 V 4000
+41612 12376 45 v Black 4000 42910 a FA(Call)p Black 4848
+w Fy(flag)582 b(=)f(IDAGetActualInitStep\(ida)p 28896
+42910 349 45 v 422 w(mem,)h(&hinused\);)p Black 4000
+44718 a FA(Description)p Black 1286 w(The)482 b(function)h
+Fy(IDAGetActualInitStep)h FA(returns)c(the)i(v)-61 b(alue)482
+b(of)g(the)g(in)-31 b(tegration)485 b(step)c(size)10814
+46046 y(used)369 b(on)g(the)g(\257rst)g(step.)p Black
+4000 47854 a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p
+12627 47854 V 419 w(mem)p Black 554 w FA(\()p Fy(void)582
+b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p
+Black 10814 49422 a Fy(hinused)p Black 554 w FA(\()p
+Fy(realtype)p FA(\))372 b(actual)f(v)-61 b(alue)369 b(of)h(initial)i
+(step)d(size.)p Black 4000 51230 a(Return)g(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 10814 53038 a Fy(IDA)p 12627 53038 V 419 w(SUCCESS)p
+Black 973 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)g(set.)p Black 10814
+54606 a Fy(IDA)p 12627 54606 V 419 w(MEM)p 14789 54606
+V 419 w(NULL)p Black 554 w FA(The)g Fy(ida)p 22104 54606
+V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)p Black 4000 56413 a(Notes)p Black 4072 w(Ev)-31
+b(en)369 b(if)g(the)g(v)-61 b(alue)369 b(of)f(the)h(initial)i(in)-31
+b(tegration)372 b(step)c(size)g(w)-31 b(as)369 b(sp)31
+b(eci\257ed)368 b(b)-31 b(y)369 b(the)g(user)e(through)10814
+57742 y(a)k(call)h(to)f Fy(IDASetInitStep)p FA(,)j(this)d(v)-61
+b(alue)371 b(migh)-31 b(t)373 b(ha)-31 b(v)g(e)371 b(b)31
+b(een)370 b(c)-31 b(hanged)372 b(b)-31 b(y)371 b Fx(id)-25
+b(a)371 b FA(to)g(ensure)f(that)10814 59070 y(the)332
+b(step)f(size)h(is)f(within)i(the)f(prescrib)31 b(ed)330
+b(b)31 b(ounds)331 b(\()p Fp(h)33572 59236 y Fn(min)35402
+59070 y Fs(\267)308 b Fp(h)37209 59236 y Fn(0)38013 59070
+y Fs(\267)f Fp(h)39819 59236 y Fn(max)41508 59070 y FA(\),)340
+b(or)331 b(to)h(meet)h(the)e(lo)31 b(cal)10814 60399
+y(error)368 b(test.)p 4000 62783 10633 45 v 4000 64123
+45 1341 v 4376 63791 a Fy(IDAGetCurrentTime)p 14588 64123
+V 4000 64167 10633 45 v Black 4000 65538 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDAGetCurrentTime\(ida)p
+27153 65538 349 45 v 422 w(mem,)g(&tcur\);)p Black 4000
+67346 a FA(Description)p Black 1286 w(The)472 b(function)h
+Fy(IDAGetCurrentTime)h FA(returns)d(the)h(curren)-31
+b(t)471 b(in)-31 b(ternal)473 b(time)g(reac)-31 b(hed)472
+b(b)-31 b(y)472 b(the)10814 68674 y(solv)-31 b(er.)p
+Black 4000 70482 a(Argumen)g(ts)p Black Black 1517 w
+Fy(ida)p 12627 70482 V 419 w(mem)p Black 554 w FA(\()p
+Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 10814 72050 a Fy(tcur)p Black 2135 w FA(\()p
+Fy(realtype)p FA(\))371 b(curren)-31 b(t)369 b(in)-31
+b(ternal)370 b(time)h(reac)-31 b(hed.)p Black 4000 73858
+a(Return)369 b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370
+b Fy(int)p FA(\))g(is)f(one)g(of)p Black 10814 75665
+a Fy(IDA)p 12627 75665 V 419 w(SUCCESS)p Black 973 w
+FA(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfuly)g(set.)p Black 10814 77233 a
+Fy(IDA)p 12627 77233 V 419 w(MEM)p 14789 77233 V 419
+w(NULL)p Black 554 w FA(The)g Fy(ida)p 22104 77233 V
+419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)p Black Black eop
+%%Page: 42 50
+42 49 bop Black 0 2701 a FB(42)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black 0 5965 12376 45 v 0 7306
+45 1341 v 376 6974 a Fy(IDAGetTolScaleFactor)p 12331
+7306 V 0 7350 12376 45 v Black 0 8751 a FA(Call)p Black
+4848 w Fy(flag)582 b(=)f(IDAGetTolScaleFactor\(ida)p
+24896 8751 349 45 v 422 w(mem,)h(&tolsfac\);)p Black
+0 10620 a FA(Description)p Black 1286 w(The)403 b(function)i
+Fy(IDAGetTolScaleFactor)h FA(returns)c(a)h(suggested)h(factor)g(b)-31
+b(y)403 b(whic)-31 b(h)404 b(the)g(user's)6814 11948
+y(tolerances)513 b(should)g(b)31 b(e)511 b(scaled)i(when)f(to)31
+b(o)514 b(m)-31 b(uc)g(h)513 b(accuracy)f(has)h(b)31
+b(een)511 b(requested)h(for)g(some)6814 13276 y(in)-31
+b(ternal)371 b(step.)p Black 0 15145 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fy(ida)p 8627 15145 V 419 w(mem)p
+Black 716 w FA(\()p Fy(void)583 b(*)p FA(\))369 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)g Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814 16743 a
+Fy(tolsfac)p Black 554 w FA(\()p Fy(realtype)p FA(\))372
+b(suggested)d(scaling)i(factor)f(for)f(user)f(tolerances.)p
+Black 0 18612 a(Return)h(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+6814 20480 a Fy(IDA)p 8627 20480 V 419 w(SUCCESS)p Black
+973 w FA(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfuly)g(set.)p Black 6814 22079 a Fy(IDA)p
+8627 22079 V 419 w(MEM)p 10789 22079 V 419 w(NULL)p Black
+554 w FA(The)g Fy(ida)p 18104 22079 V 419 w(mem)h FA(p)31
+b(oin)-31 b(ter)369 b(is)h Fy(NULL)p FA(.)p 0 24655 10052
+45 v 0 26241 45 1587 v 376 25663 a Fy(IDAGetErrWeights)p
+10007 26241 V 0 26285 10052 45 v Black 0 27614 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDAGetErrWeights\(ida)p
+22572 27614 349 45 v 421 w(mem,)h(eweight\);)p Black
+0 29482 a FA(Description)p Black 1286 w(The)528 b(function)i
+Fy(IDAGetErrWeights)h FA(returns)c(the)h(solution)i(error)e(w)-31
+b(eigh)g(ts)530 b(at)f(the)f(curren)-31 b(t)6814 30811
+y(time.)494 b(These)369 b(are)g(the)g(recipro)31 b(cals)370
+b(of)f(the)h Fp(W)26453 30977 y Fm(i)27191 30811 y FA(of)g(\(3.6\).)p
+Black 0 32679 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fy(ida)p 8627 32679 V 419 w(mem)p Black 716 w FA(\()p
+Fy(void)583 b(*)p FA(\))369 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)g Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 6814 34278 a Fy(eweight)p Black 554 w FA(\()p
+Fy(N)p 12516 34278 V 420 w(Vector)p FA(\))370 b(solution)h(error)d(w)
+-31 b(eigh)g(ts)371 b(at)f(the)f(curren)-31 b(t)369 b(time.)p
+Black 0 36146 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+6814 38015 a Fy(IDA)p 8627 38015 V 419 w(SUCCESS)p Black
+973 w FA(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfuly)g(set.)p Black 6814 39613 a Fy(IDA)p
+8627 39613 V 419 w(MEM)p 10789 39613 V 419 w(NULL)p Black
+554 w FA(The)g Fy(ida)p 18104 39613 V 419 w(mem)h FA(p)31
+b(oin)-31 b(ter)369 b(is)h Fy(NULL)p FA(.)p Black 0 42259
+a(Notes)p Black 5200 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial
+Fd(!)1497 b FA(The)370 b(user)e(m)-31 b(ust)370 b(allo)31
+b(cate)371 b(space)e(for)h Fy(eweight)p FA(.)p 0 45091
+12957 45 v 0 46677 45 1587 v 376 46099 a Fy(IDAGetIntegratorStats)p
+12913 46677 V 0 46721 12957 45 v Black 0 48211 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDAGetIntegratorStats\()s(ida)p
+25480 48211 349 45 v 419 w(mem,)h(&nsteps,)g(&nrevals,)h(&nlinsetups,)
+23667 49539 y(&netfails,)g(&qlast,)f(&qcur,)g(&hinused,)23667
+50868 y(&hlast,)g(&hcur,)h(&tcur\);)p Black 0 52686 a
+FA(Description)p Black 1286 w(The)278 b(function)i Fy
+(IDAGetIntegratorStats)h FA(returns)c(the)i Fx(id)-25
+b(a)278 b FA(in)-31 b(tegrator)280 b(statistics)g(as)e(a)g(group.)p
+Black 0 54554 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fy(ida)p 8627 54554 V 419 w(mem)p Black 2460 w FA(\()p
+Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 6814 56153 a Fy(nsteps)p Black 2879 w FA(\()p
+Fy(long)582 b(int)p FA(\))370 b(cum)-31 b(ulativ)g(e)372
+b(n)-31 b(um)g(b)31 b(er)369 b(of)h(steps)f(tak)-31 b(en)370
+b(b)-31 b(y)370 b Fx(id)-25 b(a)p FA(.)p Black 6814 57751
+a Fy(nrevals)p Black 2298 w FA(\()p Fy(long)582 b(int)p
+FA(\))370 b(cum)-31 b(ulativ)g(e)372 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(calls)g(to)g(the)f(user's)g Fy(res)g
+FA(function.)p Black 6814 59350 a Fy(nlinsetups)p Black
+555 w FA(\()p Fy(long)582 b(int)p FA(\))423 b(cum)-31
+b(ulativ)g(e)426 b(n)-31 b(um)g(b)31 b(er)422 b(of)h(calls)h(made)f(to)
+g(the)g(linear)g(solv)-31 b(er)423 b(setup)13179 60678
+y(function.)p Black 6814 62277 a Fy(netfails)p Black
+1717 w FA(\()p Fy(long)582 b(int)p FA(\))370 b(cum)-31
+b(ulativ)g(e)372 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(error)e(test)i
+(failures.)p Black 6814 63875 a Fy(qlast)p Black 3460
+w FA(\()p Fy(int)p FA(\))g(metho)31 b(d)370 b(order)f(used)g(on)g(the)g
+(last)i(in)-31 b(ternal)370 b(step.)p Black 6814 65473
+a Fy(qcur)p Black 4041 w FA(\()p Fy(int)p FA(\))g(metho)31
+b(d)370 b(order)f(to)h(b)31 b(e)369 b(used)f(on)i(the)f(next)h(in)-31
+b(ternal)370 b(step.)p Black 6814 67072 a Fy(hinused)p
+Black 2298 w FA(\()p Fy(realtype)p FA(\))h(actual)g(v)-61
+b(alue)370 b(of)f(initial)j(step)d(size.)p Black 6814
+68670 a Fy(hlast)p Black 3460 w FA(\()p Fy(realtype)p
+FA(\))i(step)e(size)g(tak)-31 b(en)371 b(on)e(the)h(last)g(in)-31
+b(ternal)370 b(step.)p Black 6814 70269 a Fy(hcur)p Black
+4041 w FA(\()p Fy(realtype)p FA(\))h(step)e(size)g(to)h(b)31
+b(e)369 b(attempted)i(on)f(the)f(next)h(in)-31 b(ternal)370
+b(step.)p Black 6814 71867 a Fy(tcur)p Black 4041 w FA(\()p
+Fy(realtype)p FA(\))h(curren)-31 b(t)369 b(in)-31 b(ternal)371
+b(time)f(reac)-31 b(hed.)p Black 0 73736 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370
+b Fy(int)p FA(\))g(is)f(one)g(of)p Black 6814 75604 a
+Fy(IDA)p 8627 75604 V 419 w(SUCCESS)p Black 973 w FA(the)g(optional)j
+(output)e(v)-61 b(alues)370 b(ha)-31 b(v)g(e)370 b(b)31
+b(een)369 b(successfuly)f(set.)p Black 6814 77203 a Fy(IDA)p
+8627 77203 V 419 w(MEM)p 10789 77203 V 419 w(NULL)p Black
+554 w FA(the)h Fy(ida)p 17735 77203 V 419 w(mem)h FA(p)31
+b(oin)-31 b(ter)369 b(is)h Fy(NULL)p FA(.)p Black Black
+eop
+%%Page: 43 51
+43 50 bop Black 4000 2701 a FB(5.4)425 b(User-callable)g(functions)
+32020 b(43)p 4000 3144 48001 45 v Black 4000 5965 14701
+45 v 4000 7306 45 1341 v 4376 6974 a Fy(IDAGetNumNonlinSolvIters)p
+18656 7306 V 4000 7350 14701 45 v Black 4000 8702 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDAGetNumNonlinSolvIters\(ida)p
+31220 8702 349 45 v 423 w(mem,)g(&nniters\);)p Black
+4000 10470 a FA(Description)p Black 1286 w(The)259 b(function)h
+Fy(IDAGetNumNonlinSolvIters)i FA(returns)257 b(the)i(cum)-31
+b(ulativ)g(e)262 b(n)-31 b(um)g(b)31 b(er)258 b(of)i(nonlinear)10814
+11798 y(\(functional)372 b(or)d(Newton\))i(iterations)g(p)31
+b(erformed.)p Black 4000 13565 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fy(ida)p 12627 13565 V 419 w(mem)p Black
+716 w FA(\()p Fy(void)583 b(*)p FA(\))369 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)g Fx(id)-25 b(a)369 b FA(memory)h(blo)31
+b(c)-31 b(k.)p Black 10814 15111 a Fy(nniters)p Black
+554 w FA(\()p Fy(long)583 b(int)p FA(\))370 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(nonlinear)g(iterations)h(p)31 b(erformed.)p
+Black 4000 16879 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 10814 18646 a Fy(IDA)p 12627 18646 V 419 w(SUCCESS)p
+Black 973 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)g(set.)p Black 10814
+20192 a Fy(IDA)p 12627 20192 V 419 w(MEM)p 14789 20192
+V 419 w(NULL)p Black 554 w FA(The)g Fy(ida)p 22104 20192
+V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)p 4000 22458 17025 45 v 4000 23798 45 1341 v 4376
+23466 a Fy(IDAGetNumNonlinSolvConvFails)p 20981 23798
+V 4000 23842 17025 45 v Black 4000 25195 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDAGetNumNonlinSolvConvFails\(ida)p
+33544 25195 349 45 v 423 w(mem,)h(&nncfails\);)p Black
+4000 26962 a FA(Description)p Black 1286 w(The)261 b(function)h
+Fy(IDAGetNumNonlinSolvConvFails)i FA(returns)c(the)h(cum)-31
+b(ulativ)g(e)263 b(n)-31 b(um)g(b)31 b(er)261 b(of)g(non-)10814
+28290 y(linear)370 b(con)-31 b(v)g(ergence)370 b(failures)g(that)g(ha)
+-31 b(v)g(e)370 b(o)31 b(ccurred.)p Black 4000 30058
+a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p 12627
+30058 V 419 w(mem)p Black 1298 w FA(\()p Fy(void)582
+b(*)p FA(\))369 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)g
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p
+Black 10814 31604 a Fy(nncfails)p Black 555 w FA(\()p
+Fy(long)582 b(int)p FA(\))370 b(n)-31 b(um)g(b)31 b(er)369
+b(of)h(nonlinear)g(con)-31 b(v)g(ergence)370 b(failures.)p
+Black 4000 33371 a(Return)f(v)-61 b(alue)p Black 554
+w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+10814 35139 a Fy(IDA)p 12627 35139 V 419 w(SUCCESS)p
+Black 973 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)g(set.)p Black 10814
+36685 a Fy(IDA)p 12627 36685 V 419 w(MEM)p 14789 36685
+V 419 w(NULL)p Black 554 w FA(The)g Fy(ida)p 22104 36685
+V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)p 4000 38950 12957 45 v 4000 40291 45 1341 v 4376
+39959 a Fy(IDAGetNonlinSolvStats)p 16913 40291 V 4000
+40335 12957 45 v Black 4000 41687 a FA(Call)p Black 4848
+w Fy(flag)582 b(=)f(IDAGetNonlinSolvStats\(ida)p 29477
+41687 349 45 v 422 w(mem,)h(&nniters,)g(&nncfails\);)p
+Black 4000 43454 a FA(Description)p Black 1286 w(The)336
+b(function)i Fy(IDAGetNonlinSolvStats)h FA(returns)d(the)g
+Fx(id)-25 b(a)336 b FA(nonlinear)i(solv)-31 b(er)336
+b(statistics)i(as)f(a)10814 44783 y(group.)p Black 4000
+46550 a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p
+12627 46550 V 419 w(mem)p Black 1298 w FA(\()p Fy(void)582
+b(*)p FA(\))369 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)g
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p
+Black 10814 48096 a Fy(nniters)p Black 1136 w FA(\()p
+Fy(long)582 b(int)p FA(\))370 b(cum)-31 b(ulativ)g(e)372
+b(n)-31 b(um)g(b)31 b(er)369 b(of)h(nonlinear)g(iterations)h(p)31
+b(erformed.)p Black 10814 49642 a Fy(nncfails)p Black
+555 w FA(\()p Fy(long)582 b(int)p FA(\))370 b(cum)-31
+b(ulativ)g(e)372 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(nonlinear)g(con)
+-31 b(v)g(ergence)370 b(failures.)p Black 4000 51410
+a(Return)f(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370
+b Fy(int)p FA(\))g(is)f(one)g(of)p Black 10814 53177
+a Fy(IDA)p 12627 53177 V 419 w(SUCCESS)p Black 973 w
+FA(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfuly)g(set.)p Black 10814 54723 a
+Fy(IDA)p 12627 54723 V 419 w(MEM)p 14789 54723 V 419
+w(NULL)p Black 554 w FA(The)g Fy(ida)p 22104 54723 V
+419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)4000 57997 y FB(Linear)424 b(solv)-35 b(er)425 b(optional)g
+(output)h(functions)4000 60040 y FA(F)-92 b(or)418 b(eac)-31
+b(h)419 b(of)g(the)f(linear)h(system)g(solv)-31 b(er)419
+b(mo)31 b(dules,)432 b(there)418 b(are)g(v)-61 b(arious)419
+b(optional)i(outputs)e(that)h(describ)31 b(e)418 b(the)4000
+61369 y(p)31 b(erformance)369 b(of)h(the)g(mo)31 b(dule.)493
+b(The)370 b(functions)g(a)-31 b(v)-61 b(ailable)372 b(to)e(access)e
+(these)h(are)g(describ)31 b(ed)369 b(b)31 b(elo)-31 b(w.)4000
+64243 y FB(Dense)457 b(Linear)e(solv)-35 b(er.)1107 b
+FA(The)396 b(follo)-31 b(wing)400 b(optional)f(outputs)d(are)g(a)-31
+b(v)-61 b(ailable)399 b(from)d(the)h Fx(id)-25 b(adense)396
+b FA(mo)31 b(dule:)4000 65571 y(w)-31 b(orkspace)457
+b(requiremen)-31 b(ts,)478 b(n)-31 b(um)g(b)31 b(er)456
+b(of)g(calls)h(to)f(the)g(Jacobian)h(routine,)479 b(n)-31
+b(um)g(b)31 b(er)456 b(of)g(calls)h(to)f(the)g(residual)4000
+66899 y(routine)432 b(for)g(\257nite-di\256erence)f(Jacobian)i(appro)
+-31 b(ximation,)451 b(and)432 b(last)g(return)f(v)-61
+b(alue)432 b(from)g(a)g Fx(id)-25 b(adense)432 b FA(func-)4000
+68228 y(tion.)p 4000 70093 12376 45 v 4000 71680 45 1587
+v 4376 71102 a Fy(IDADenseGetWorkSpace)p 16331 71680
+V 4000 71724 12376 45 v Black 4000 73004 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDADenseGetWorkSpace\(ida)p
+28896 73004 349 45 v 422 w(mem,)h(&lenrwD,)g(&leniwD\);)p
+Black 4000 74771 a FA(Description)p Black 1286 w(The)405
+b(function)h Fy(IDADenseGetWorkSpace)h FA(returns)d(the)h(sizes)f(of)h
+(the)g Fx(id)-25 b(adense)406 b FA(real)f(and)g(in-)10814
+76099 y(teger)369 b(w)-31 b(orkspaces.)p Black 4000 77867
+a(Argumen)g(ts)p Black Black 1517 w Fy(ida)p 12627 77867
+V 419 w(mem)p Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369
+b FA(memory)h(blo)31 b(c)-31 b(k.)p Black Black eop
+%%Page: 44 52
+44 51 bop Black 0 2701 a FB(44)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black Black 6814 6974 a Fy(lenrwD)p
+Black 973 w FA(\()p Fy(long)582 b(int)p FA(\))370 b(the)f(n)-31
+b(um)g(b)31 b(er)370 b(of)f(real)h(v)-61 b(alues)369
+b(in)g(the)h Fx(id)-25 b(adense)370 b FA(w)-31 b(orkspace.)p
+Black 6814 8536 a Fy(leniwD)p Black 973 w FA(\()p Fy(long)582
+b(int)p FA(\))370 b(the)f(n)-31 b(um)g(b)31 b(er)370
+b(of)f(in)-31 b(teger)370 b(v)-61 b(alues)370 b(in)f(the)h
+Fx(id)-25 b(adense)369 b FA(w)-31 b(orkspace.)p Black
+0 10331 a(Return)369 b(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+6814 12126 a Fy(IDA)p 8627 12126 349 45 v 419 w(SUCCESS)p
+Black 973 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)g(set.)p Black 6814
+13688 a Fy(IDA)p 8627 13688 V 419 w(MEM)p 10789 13688
+V 419 w(NULL)p Black 554 w FA(The)g Fy(ida)p 18104 13688
+V 419 w(mem)h FA(p)31 b(oin)-31 b(ter)369 b(is)h Fy(NULL)p
+FA(.)p Black 6814 15250 a Fy(IDA)p 8627 15250 V 419 w(MEM)p
+10789 15250 V 419 w(NULL)p Black 554 w FA(The)f Fx(id)-25
+b(adense)370 b FA(linear)g(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)p Black 0 17045 a(Notes)p Black
+4072 w(In)326 b(terms)g(of)h(the)g(problem)g(size)f Fp(N)121
+b FA(,)335 b(the)327 b(actual)h(size)e(of)h(the)f(real)h(w)-31
+b(orkspace)327 b(is)g(2)p Fp(N)42528 16644 y Fn(2)43351
+17045 y Fy(realtype)6814 18374 y FA(w)-31 b(ords.)6814
+20169 y(In)382 b(terms)h(of)h(the)f(problem)g(size)g
+Fp(N)121 b FA(,)387 b(the)c(actual)h(size)f(of)h(the)f(in)-31
+b(teger)384 b(w)-31 b(orkspace)383 b(is)g Fp(N)504 b
+FA(in)-31 b(teger)6814 21497 y(w)g(ords.)p 0 23842 13539
+45 v 0 25183 45 1341 v 376 24851 a Fy(IDADenseGetNumJacEvals)p
+13494 25183 V 0 25227 13539 45 v Black 0 26591 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDADenseGetNumJacEvals\(ida)p
+26058 26591 349 45 v 422 w(mem,)h(&njevalsD\);)p Black
+0 28387 a FA(Description)p Black 1286 w(The)311 b(function)h
+Fy(IDADenseGetNumJacEvals)h FA(returns)d(the)h(cum)-31
+b(ulativ)g(e)313 b(n)-31 b(um)g(b)31 b(er)311 b(of)g(calls)g(to)h(the)
+6814 29715 y(dense)369 b(Jacobian)h(appro)-31 b(ximation)373
+b(function.)p Black 0 31510 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fy(ida)p 8627 31510 V 419 w(mem)p Black
+1298 w FA(\()p Fy(void)582 b(*)p FA(\))369 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)g Fx(id)-25 b(a)369 b FA(memory)h(blo)31
+b(c)-31 b(k.)p Black 6814 33072 a Fy(njevalsD)p Black
+555 w FA(\()p Fy(long)582 b(int)p FA(\))358 b(the)g(cum)-31
+b(ulativ)g(e)361 b(n)-31 b(um)g(b)31 b(er)357 b(of)h(calls)h(to)f(the)g
+(Jacobian)h(function)g(\(total)12017 34401 y(so)369 b(far\).)p
+Black 0 36196 a(Return)g(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+6814 37991 a Fy(IDADENSE)p 11532 37991 V 420 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)f(set.)p Black 6814
+39553 a Fy(IDADENSE)p 11532 39553 V 420 w(MEM)p 13695
+39553 V 418 w(NULL)p Black 1136 w FA(The)h Fy(ida)p 21591
+39553 V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370 b(is)f
+Fy(NULL)p FA(.)p Black 6814 41115 a Fy(IDADENSE)p 11532
+41115 V 420 w(LMEM)p 14276 41115 V 419 w(NULL)p Black
+554 w FA(The)g Fx(id)-25 b(adense)370 b FA(linear)g(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+0 43460 13539 45 v 0 44801 45 1341 v 376 44469 a Fy
+(IDADenseGetNumResEvals)p 13494 44801 V 0 44845 13539
+45 v Black 0 46209 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDADenseGetNumResEvals\(ida)p 26058 46209 349 45
+v 422 w(mem,)h(&nrevalsD\);)p Black 0 48004 a FA(Description)p
+Black 1286 w(The)311 b(function)h Fy(IDADenseGetNumResEvals)h
+FA(returns)d(the)h(cum)-31 b(ulativ)g(e)313 b(n)-31 b(um)g(b)31
+b(er)311 b(of)g(calls)g(to)h(the)6814 49333 y(user)368
+b(residual)i(function)g(due)f(to)h(the)g(\257nite)g(di\256erence)e
+(dense)h(Jacobian)h(appro)-31 b(ximation.)p Black 0 51128
+a(Argumen)g(ts)p Black Black 1517 w Fy(ida)p 8627 51128
+V 419 w(mem)p Black 1298 w FA(\()p Fy(void)582 b(*)p
+FA(\))369 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)g Fx(id)-25
+b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814
+52690 a Fy(nrevalsD)p Black 555 w FA(\()p Fy(long)582
+b(int)p FA(\))370 b(the)f(cum)-31 b(ulativ)g(e)372 b(n)-31
+b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)g(user)e(residual)h
+(function.)p Black 0 54485 a(Return)g(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 6814 56281 a Fy(IDADENSE)p 11532 56281 V 420 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)f(set.)p Black 6814
+57842 a Fy(IDADENSE)p 11532 57842 V 420 w(MEM)p 13695
+57842 V 418 w(NULL)p Black 1136 w FA(The)h Fy(ida)p 21591
+57842 V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370 b(is)f
+Fy(NULL)p FA(.)p Black 6814 59404 a Fy(IDADENSE)p 11532
+59404 V 420 w(LMEM)p 14276 59404 V 419 w(NULL)p Black
+554 w FA(The)g Fx(id)-25 b(adense)370 b FA(linear)g(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 0 61200 a(Notes)p Black 4072 w(The)333 b(v)-61
+b(alue)334 b Fy(nrevalsD)g FA(is)f(incremen)-31 b(ted)335
+b(only)f(if)g(the)f(default)i Fy(IDADenseDQJac)g FA(di\256erence)d
+(quo-)6814 62528 y(tien)-31 b(t)371 b(function)f(is)f(used.)p
+0 64873 11795 45 v 0 66460 45 1587 v 376 65881 a Fy
+(IDADenseGetLastFlag)p 11750 66460 V 0 66504 11795 45
+v Black 0 67795 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDADenseGetLastFlag\(ida)p 24315 67795 349 45 v
+422 w(mem,)h(&flag\);)p Black 0 69591 a FA(Description)p
+Black 1286 w(The)384 b(function)g Fy(IDADenseGetLastFlag)i
+FA(returns)c(the)i(last)g(return)f(v)-61 b(alue)384 b(from)g(an)f
+Fx(id)-25 b(adense)6814 70919 y FA(routine.)p Black 0
+72714 a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p
+8627 72714 V 419 w(mem)p Black 554 w FA(\()p Fy(void)582
+b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p
+Black 6814 74276 a Fy(flag)p Black 2135 w FA(\()p Fy(int)p
+FA(\))370 b(the)g(v)-61 b(alue)369 b(of)h(the)f(last)h(return)f(\260ag)
+h(from)g(an)f Fx(id)-25 b(adense)370 b FA(function.)p
+Black 0 76072 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+6814 77867 a Fy(IDADENSE)p 11532 77867 V 420 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+Black eop
+%%Page: 45 53
+45 52 bop Black 4000 2701 a FB(5.4)425 b(User-callable)g(functions)
+32020 b(45)p 4000 3144 48001 45 v Black Black 10814 6974
+a Fy(IDADENSE)p 15532 6974 349 45 v 420 w(MEM)p 17695
+6974 V 418 w(NULL)p Black 1136 w FA(The)369 b Fy(ida)p
+25591 6974 V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370
+b(is)f Fy(NULL)p FA(.)p Black 10814 8529 a Fy(IDADENSE)p
+15532 8529 V 420 w(LMEM)p 18276 8529 V 419 w(NULL)p Black
+554 w FA(The)g Fx(id)-25 b(adense)370 b FA(linear)g(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 10311 a(Notes)p Black 4072 w(If)258 b(the)h
+Fx(id)-25 b(adense)260 b FA(setup)e(function)j(failed)f(\()p
+Fy(IDASolve)g FA(returned)e Fy(IDA)p 40138 10311 V 419
+w(LSETUP)p 44043 10311 V 419 w(FAIL)p FA(\),)i(the)f(v)-61
+b(alue)10814 11639 y Fy(flag)502 b FA(is)g(equal)g(to)h(the)f(column)h
+(index)f(\(n)-31 b(um)g(b)31 b(ered)502 b(from)g(one\))h(at)f(whic)-31
+b(h)503 b(a)f(zero)f(diagonal)10814 12968 y(elemen)-31
+b(t)371 b(w)-31 b(as)369 b(encoun)-31 b(tered)370 b(during)f(the)h(LU)f
+(factorization)k(of)c(the)h(dense)e(Jacobian)j(matrix.)4000
+16279 y FB(Band)540 b(Linear)g(solv)-35 b(er.)1107 b
+FA(The)470 b(follo)-31 b(wing)474 b(optional)e(outputs)f(are)e(a)-31
+b(v)-61 b(ailable)473 b(from)d(the)g Fx(id)-25 b(aband)470
+b FA(mo)31 b(dule:)4000 17607 y(w)-31 b(orkspace)457
+b(requiremen)-31 b(ts,)478 b(n)-31 b(um)g(b)31 b(er)456
+b(of)g(calls)h(to)f(the)g(Jacobian)h(routine,)479 b(n)-31
+b(um)g(b)31 b(er)456 b(of)g(calls)h(to)f(the)g(residual)4000
+18935 y(routine)275 b(for)f(\257nite-di\256erence)g(Jacobian)i(appro)
+-31 b(ximation,)297 b(and)275 b(last)g(return)e(v)-61
+b(alue)275 b(from)f(a)g Fx(id)-25 b(aband)275 b FA(function.)p
+4000 20833 11795 45 v 4000 22419 45 1587 v 4376 21841
+a Fy(IDABandGetWorkSpace)p 15750 22419 V 4000 22463 11795
+45 v Black 4000 23748 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDABandGetWorkSpace\(ida)p 28315 23748 349 45 v
+422 w(mem,)h(&lenrwB,)g(&leniwB\);)p Black 4000 25530
+a FA(Description)p Black 1286 w(The)314 b(function)h
+Fy(IDABandGetWorkSpace)i FA(returns)312 b(the)i(sizes)g(of)g(the)g
+Fx(id)-25 b(aband)314 b FA(real)g(and)g(in)-31 b(teger)10814
+26859 y(w)g(orkspaces.)p Black 4000 28640 a(Argumen)g(ts)p
+Black Black 1517 w Fy(ida)p 12627 28640 V 419 w(mem)p
+Black 554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814 30196 a
+Fy(lenrwB)p Black 973 w FA(\()p Fy(long)582 b(int)p FA(\))370
+b(the)f(n)-31 b(um)g(b)31 b(er)370 b(of)f(real)h(v)-61
+b(alues)369 b(in)g(the)h Fx(id)-25 b(aband)369 b FA(w)-31
+b(orkspace.)p Black 10814 31751 a Fy(leniwB)p Black 973
+w FA(\()p Fy(long)582 b(int)p FA(\))370 b(the)f(n)-31
+b(um)g(b)31 b(er)370 b(of)f(in)-31 b(teger)370 b(v)-61
+b(alues)370 b(in)f(the)h Fx(id)-25 b(aband)369 b FA(w)-31
+b(orkspace.)p Black 4000 33533 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 10814 35314 a Fy(IDABAND)p 14951 35314 V 419 w(SUCCESS)p
+Black 1555 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)f(set.)p Black 10814
+36869 a Fy(IDABAND)p 14951 36869 V 419 w(MEM)p 17113
+36869 V 419 w(NULL)p Black 1136 w FA(The)h Fy(ida)p 25010
+36869 V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370 b(is)f
+Fy(NULL)p FA(.)p Black 10814 38425 a Fy(IDABAND)p 14951
+38425 V 419 w(LMEM)p 17694 38425 V 419 w(NULL)p Black
+555 w FA(The)g Fx(id)-25 b(aband)369 b FA(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 4000 40206 a(Notes)p Black 4072 w(In)397 b(terms)g(of)h(the)g
+(problem)g(size)f Fp(N)519 b FA(and)397 b(Jacobian)i(half-bandwidths,)
+408 b(the)397 b(actual)i(size)f(of)g(the)10814 41535
+y(real)369 b(w)-31 b(orkspace)371 b(is)e Fp(N)305 b FA(\(2)370
+b Fy(mupper)p FA(+3)g Fy(mlower)g FA(+2\))g Fy(realtype)g
+FA(w)-31 b(ords.)10814 43317 y(In)382 b(terms)h(of)h(the)f(problem)g
+(size)g Fp(N)121 b FA(,)387 b(the)c(actual)h(size)f(of)h(the)f(in)-31
+b(teger)384 b(w)-31 b(orkspace)383 b(is)g Fp(N)504 b
+FA(in)-31 b(teger)10814 44645 y(w)g(ords.)p 4000 46948
+12957 45 v 4000 48288 45 1341 v 4376 47956 a Fy(IDABandGetNumJacEvals)p
+16913 48288 V 4000 48332 12957 45 v Black 4000 49690
+a FA(Call)p Black 4848 w Fy(flag)582 b(=)f(IDABandGetNumJacEvals\(ida)p
+29477 49690 349 45 v 422 w(mem,)h(&njevalsB\);)p Black
+4000 51472 a FA(Description)p Black 1286 w(The)369 b(function)h
+Fy(IDABandGetNumJacEvals)i FA(returns)367 b(the)i(cum)-31
+b(ulativ)g(e)372 b(n)-31 b(um)g(b)31 b(er)368 b(of)i(calls)f(to)h(the)
+10814 52800 y(banded)f(Jacobian)i(appro)-31 b(ximation)373
+b(function.)p Black 4000 54582 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fy(ida)p 12627 54582 V 419 w(mem)p Black
+1298 w FA(\()p Fy(void)582 b(*)p FA(\))369 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)g Fx(id)-25 b(a)369 b FA(memory)h(blo)31
+b(c)-31 b(k.)p Black 10814 56137 a Fy(njevalsB)p Black
+555 w FA(\()p Fy(long)582 b(int)p FA(\))370 b(the)f(cum)-31
+b(ulativ)g(e)372 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)g
+(Jacobian)g(function.)p Black 4000 57919 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 10814 59701 a Fy(IDABAND)p
+14951 59701 V 419 w(SUCCESS)p Black 1555 w FA(The)g(optional)j(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfuly)f(set.)p
+Black 10814 61256 a Fy(IDABAND)p 14951 61256 V 419 w(MEM)p
+17113 61256 V 419 w(NULL)p Black 1136 w FA(The)h Fy(ida)p
+25010 61256 V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370
+b(is)f Fy(NULL)p FA(.)p Black 10814 62811 a Fy(IDABAND)p
+14951 62811 V 419 w(LMEM)p 17694 62811 V 419 w(NULL)p
+Black 555 w FA(The)g Fx(id)-25 b(aband)369 b FA(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+4000 65114 12957 45 v 4000 66454 45 1341 v 4376 66122
+a Fy(IDABandGetNumResEvals)p 16913 66454 V 4000 66498
+12957 45 v Black 4000 67856 a FA(Call)p Black 4848 w
+Fy(flag)582 b(=)f(IDABandGetNumResEvals\(ida)p 29477
+67856 349 45 v 422 w(mem,)h(&nrevalsB\);)p Black 4000
+69638 a FA(Description)p Black 1286 w(The)369 b(function)h
+Fy(IDABandGetNumResEvals)i FA(returns)367 b(the)i(cum)-31
+b(ulativ)g(e)372 b(n)-31 b(um)g(b)31 b(er)368 b(of)i(calls)f(to)h(the)
+10814 70966 y(user)e(residual)i(function)g(due)f(to)h(the)g(\257nite)g
+(di\256erence)e(banded)i(Jacobian)g(appro)-31 b(ximation.)p
+Black 4000 72748 a(Argumen)g(ts)p Black Black 1517 w
+Fy(ida)p 12627 72748 V 419 w(mem)p Black 1298 w FA(\()p
+Fy(void)582 b(*)p FA(\))369 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)g Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 10814 74303 a Fy(nrevalsB)p Black 555 w
+FA(\()p Fy(long)582 b(int)p FA(\))370 b(the)f(cum)-31
+b(ulativ)g(e)372 b(n)-31 b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)g
+(user)e(residual)h(function.)p Black 4000 76085 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 10814 77867 a Fy(IDA)p
+12627 77867 V 419 w(SUCCESS)p Black 3879 w FA(The)g(optional)j(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfuly)f(set.)p
+Black Black eop
+%%Page: 46 54
+46 53 bop Black 0 2701 a FB(46)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black Black 6814 6974 a Fy(IDABAND)p
+10951 6974 349 45 v 419 w(MEM)p 13113 6974 V 419 w(NULL)p
+Black 1136 w FA(The)369 b Fy(ida)p 21010 6974 V 419 w(mem)g
+FA(p)31 b(oin)-31 b(ter)370 b(is)f Fy(NULL)p FA(.)p Black
+6814 8536 a Fy(IDABAND)p 10951 8536 V 419 w(LMEM)p 13694
+8536 V 419 w(NULL)p Black 555 w FA(The)g Fx(id)-25 b(aband)369
+b FA(linear)h(solv)-31 b(er)370 b(has)f(not)h(b)31 b(een)368
+b(initialized.)p Black 0 10332 a(Notes)p Black 4072 w(The)386
+b(v)-61 b(alue)387 b Fy(nrevalsB)g FA(is)f(incremen)-31
+b(ted)387 b(only)g(if)f(the)h(default)g Fy(IDABandDQJac)h
+FA(di\256erence)d(quo-)6814 11661 y(tien)-31 b(t)371
+b(function)f(is)f(used.)p 0 14009 11214 45 v 0 15595
+45 1587 v 376 15017 a Fy(IDABandGetLastFlag)p 11169 15595
+V 0 15639 11214 45 v Black 0 16932 a FA(Call)p Black
+4848 w Fy(flag)582 b(=)f(IDABandGetLastFlag\(ida)p 23734
+16932 349 45 v 422 w(mem,)g(&flag\);)p Black 0 18728
+a FA(Description)p Black 1286 w(The)484 b(function)h
+Fy(IDABandGetLastFlag)h FA(returns)c(the)i(last)g(return)f(v)-61
+b(alue)484 b(from)g(an)g Fx(id)-25 b(aband)6814 20056
+y FA(routine.)p Black 0 21853 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fy(ida)p 8627 21853 V 419 w(mem)p Black
+554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31
+b(c)-31 b(k.)p Black 6814 23415 a Fy(flag)p Black 2135
+w FA(\()p Fy(int)p FA(\))370 b(the)g(v)-61 b(alue)369
+b(of)h(the)f(last)h(return)f(\260ag)h(from)g(an)f Fx(id)-25
+b(aband)369 b FA(function.)p Black 0 25211 a(Return)g(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 6814 27008 a Fy(IDABAND)p
+10951 27008 V 419 w(SUCCESS)p Black 1555 w FA(The)g(optional)j(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfully)g(set.)p
+Black 6814 28570 a Fy(IDABAND)p 10951 28570 V 419 w(MEM)p
+13113 28570 V 419 w(NULL)p Black 1136 w FA(The)g Fy(ida)p
+21010 28570 V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370
+b(is)f Fy(NULL)p FA(.)p Black 6814 30132 a Fy(IDABAND)p
+10951 30132 V 419 w(LMEM)p 13694 30132 V 419 w(NULL)p
+Black 555 w FA(The)g Fx(id)-25 b(aband)369 b FA(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 0 31928 a(Notes)p Black 4072 w(If)301 b(the)g Fx(id)-25
+b(aband)300 b FA(setup)h(function)h(failed)h(\()p Fy(IDASolve)f
+FA(returned)e Fy(IDA)p 36054 31928 V 419 w(LSETUP)p 39959
+31928 V 419 w(FAIL)p FA(\),)i(the)f(v)-61 b(alue)6814
+33257 y Fy(flag)502 b FA(is)g(equal)g(to)h(the)f(column)h(index)f(\(n)
+-31 b(um)g(b)31 b(ered)502 b(from)g(one\))h(at)f(whic)-31
+b(h)503 b(a)f(zero)f(diagonal)6814 34585 y(elemen)-31
+b(t)356 b(w)-31 b(as)355 b(encoun)-31 b(tered)356 b(during)f(the)g(LU)f
+(factorization)k(of)e(the)f(banded)g(Jacobian)h(matrix.)0
+37942 y FB(SPGMR)430 b(Linear)g(solv)-35 b(er.)1107 b
+FA(The)374 b(follo)-31 b(wing)377 b(optional)g(outputs)d(are)g(a)-31
+b(v)-61 b(ailable)376 b(from)f(the)f Fx(id)-25 b(aspgmr)372
+b FA(mo)31 b(d-)0 39270 y(ule:)765 b(w)-31 b(orkspace)506
+b(requiremen)-31 b(ts,)539 b(n)-31 b(um)g(b)31 b(er)505
+b(of)h(linear)g(iterations,)541 b(n)-31 b(um)g(b)31 b(er)505
+b(of)h(linear)g(con)-31 b(v)g(ergence)506 b(failures,)0
+40598 y(n)-31 b(um)g(b)31 b(er)476 b(of)h(calls)g(to)g(the)f
+(preconditioner)h(setup)f(and)h(solv)-31 b(e)477 b(routines,)503
+b(n)-31 b(um)g(b)31 b(er)476 b(of)h(calls)g(to)g(the)f(Jacobian-)0
+41927 y(v)-31 b(ector)401 b(pro)31 b(duct)400 b(routine,)408
+b(n)-31 b(um)g(b)31 b(er)400 b(of)h(calls)f(to)h(the)f(residual)g
+(routine)h(for)f(\257nite-di\256erence)g(Jacobian-v)-31
+b(ector)0 43255 y(pro)31 b(duct)369 b(appro)-31 b(ximation,)374
+b(and)369 b(last)h(return)f(v)-61 b(alue)369 b(from)h(an)f
+Fx(id)-25 b(aspgmr)368 b FA(function.)p 0 45191 12376
+45 v 0 46777 45 1587 v 376 46199 a Fy(IDASpgmrGetWorkSpace)p
+12331 46777 V 0 46821 12376 45 v Black 0 48113 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDASpgmrGetWorkSpace\(ida)p
+24896 48113 349 45 v 422 w(mem,)h(&lenrwSG,)g(&leniwSG\);)p
+Black 0 49910 a FA(Description)p Black 1286 w(The)442
+b(function)i Fy(IDASpgmrGetWorkSpace)h FA(returns)c(the)h(global)i
+(sizes)e(of)g(the)h Fx(id)-25 b(aspgmr)440 b FA(real)6814
+51238 y(and)369 b(in)-31 b(teger)371 b(w)-31 b(orkspaces.)p
+Black 0 53034 a(Argumen)g(ts)p Black Black 1517 w Fy(ida)p
+8627 53034 V 419 w(mem)p Black 716 w FA(\()p Fy(void)583
+b(*)p FA(\))369 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)g
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p
+Black 6814 54597 a Fy(lenrwSG)p Black 554 w FA(\()p Fy(long)583
+b(int)p FA(\))370 b(global)h(n)-31 b(um)g(b)31 b(er)369
+b(of)h(real)f(v)-61 b(alues)370 b(in)f(the)h Fx(id)-25
+b(aspgmr)368 b FA(w)-31 b(orkspace.)p Black 6814 56159
+a Fy(leniwSG)p Black 554 w FA(\()p Fy(long)583 b(int)p
+FA(\))370 b(global)h(n)-31 b(um)g(b)31 b(er)369 b(of)h(in)-31
+b(teger)370 b(v)-61 b(alues)369 b(in)h(the)f Fx(id)-25
+b(aspgmr)368 b FA(w)-31 b(orkspace.)p Black 0 57955 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370
+b Fy(int)p FA(\))g(is)f(one)g(of)p Black 6814 59752 a
+Fy(IDASPGMR)p 11532 59752 V 420 w(SUCCESS)p Black 1554
+w FA(The)g(optional)j(output)e(v)-61 b(alue)370 b(has)f(b)31
+b(een)369 b(successfuly)f(set.)p Black 6814 61314 a Fy(IDASPGMR)p
+11532 61314 V 420 w(MEM)p 13695 61314 V 418 w(NULL)p
+Black 1136 w FA(The)h Fy(ida)p 21591 61314 V 419 w(mem)g
+FA(p)31 b(oin)-31 b(ter)370 b(is)f Fy(NULL)p FA(.)p Black
+6814 62876 a Fy(IDASPGMR)p 11532 62876 V 420 w(LMEM)p
+14276 62876 V 419 w(NULL)p Black 554 w FA(The)g Fx(id)-25
+b(aspgmr)368 b FA(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)p Black 0 64672 a(Notes)p Black
+4072 w(In)402 b(terms)h(of)g(the)g(problem)g(size)g Fp(N)523
+b FA(and)403 b(maxim)-31 b(um)405 b(subspace)d(size)h
+Fy(maxl)p FA(,)412 b(the)402 b(actual)j(size)d(of)6814
+66001 y(the)369 b(real)h(w)-31 b(orkspace)370 b(is)f
+Fp(N)e Fs(\244)247 b FA(\()369 b Fy(maxl)h FA(+5\)+)g
+Fy(maxl)f Fs(\244)p FA(\()h Fy(maxl)g FA(+4\))247 b(+)f(1)369
+b Fy(realtype)h FA(w)-31 b(ords.)p 0 68461 13539 45 v
+0 70047 45 1587 v 376 69469 a Fy(IDASpgmrGetNumLinIters)p
+13494 70047 V 0 70091 13539 45 v Black 0 71384 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDASpgmrGetNumLinIters\(ida)p
+26058 71384 349 45 v 422 w(mem,)h(&nliters\);)p Black
+0 73180 a FA(Description)p Black 1286 w(The)332 b(function)g
+Fy(IDASpgmrGetNumLinIters)j FA(returns)330 b(the)i(cum)-31
+b(ulativ)g(e)334 b(n)-31 b(um)g(b)31 b(er)331 b(of)h(linear)g(iter-)
+6814 74508 y(ations.)p Black 0 76305 a(Argumen)-31 b(ts)p
+Black Black 1517 w Fy(ida)p 8627 76305 V 419 w(mem)p
+Black 716 w FA(\()p Fy(void)583 b(*)p FA(\))369 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)g Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814 77867 a
+Fy(nliters)p Black 554 w FA(\()p Fy(long)583 b(int)p
+FA(\))370 b(the)f(curren)-31 b(t)369 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(linear)g(iterations.)p Black Black eop
+%%Page: 47 55
+47 54 bop Black 4000 2701 a FB(5.4)425 b(User-callable)g(functions)
+32020 b(47)p 4000 3144 48001 45 v Black Black 4000 6974
+a FA(Return)369 b(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+10814 8735 a Fy(IDASPGMR)p 15532 8735 349 45 v 420 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)f(set.)p Black 10814
+10275 a Fy(IDASPGMR)p 15532 10275 V 420 w(MEM)p 17695
+10275 V 418 w(NULL)p Black 1136 w FA(The)h Fy(ida)p 25591
+10275 V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370 b(is)f
+Fy(NULL)p FA(.)p Black 10814 11815 a Fy(IDASPGMR)p 15532
+11815 V 420 w(LMEM)p 18276 11815 V 419 w(NULL)p Black
+554 w FA(The)g Fx(id)-25 b(aspgmr)368 b FA(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+4000 14075 14120 45 v 4000 15662 45 1587 v 4376 15084
+a Fy(IDASpgmrGetNumConvFails)p 18075 15662 V 4000 15706
+14120 45 v Black 4000 16985 a FA(Call)p Black 4848 w
+Fy(flag)582 b(=)f(IDASpgmrGetNumConvFails\(ida)p 30639
+16985 349 45 v 422 w(mem,)h(&nlcfails\);)p Black 4000
+18747 a FA(Description)p Black 1286 w(The)554 b(function)i
+Fy(IDASpgmrGetNumConvFails)h FA(returns)d(the)g(cum)-31
+b(ulativ)g(e)557 b(n)-31 b(um)g(b)31 b(er)554 b(of)h(linear)10814
+20075 y(con)-31 b(v)g(ergence)370 b(failures.)p Black
+4000 21836 a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p
+12627 21836 V 419 w(mem)p Black 1298 w FA(\()p Fy(void)582
+b(*)p FA(\))369 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)g
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p
+Black 10814 23376 a Fy(nlcfails)p Black 555 w FA(\()p
+Fy(long)582 b(int)p FA(\))370 b(the)f(curren)-31 b(t)369
+b(n)-31 b(um)g(b)31 b(er)369 b(of)h(linear)g(con)-31
+b(v)g(ergence)370 b(failures.)p Black 4000 25137 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 10814 26899 a Fy(IDASPGMR)p
+15532 26899 V 420 w(SUCCESS)p Black 1554 w FA(The)g(optional)j(output)e
+(v)-61 b(alue)370 b(has)f(b)31 b(een)369 b(successfuly)f(set.)p
+Black 10814 28439 a Fy(IDASPGMR)p 15532 28439 V 420 w(MEM)p
+17695 28439 V 418 w(NULL)p Black 1136 w FA(The)h Fy(ida)p
+25591 28439 V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370
+b(is)f Fy(NULL)p FA(.)p Black 10814 29978 a Fy(IDASPGMR)p
+15532 29978 V 420 w(LMEM)p 18276 29978 V 419 w(NULL)p
+Black 554 w FA(The)g Fx(id)-25 b(aspgmr)368 b FA(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+4000 32239 14120 45 v 4000 33825 45 1587 v 4376 33247
+a Fy(IDASpgmrGetNumPrecEvals)p 18075 33825 V 4000 33869
+14120 45 v Black 4000 35149 a FA(Call)p Black 4848 w
+Fy(flag)582 b(=)f(IDASpgmrGetNumPrecEvals\(ida)p 30639
+35149 349 45 v 422 w(mem,)h(&npevals\);)p Black 4000
+36910 a FA(Description)p Black 1286 w(The)331 b(function)i
+Fy(IDASpgmrGetNumPrecEvals)i FA(returns)330 b(the)h(cum)-31
+b(ulativ)g(e)335 b(n)-31 b(um)g(b)31 b(er)331 b(of)h(precondi-)10814
+38239 y(tioner)370 b(ev)-61 b(aluations,)372 b(i.e.,)f(the)e(n)-31
+b(um)g(b)31 b(er)369 b(of)h(calls)g(made)g(to)g Fy(psetup)g
+FA(with)g Fy(jok=FALSE)p FA(.)p Black 4000 40000 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 12627 40000 V 419
+w(mem)p Black 716 w FA(\()p Fy(void)583 b(*)p FA(\))369
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)g Fx(id)-25 b(a)369
+b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814 41540
+a Fy(npevals)p Black 554 w FA(\()p Fy(long)583 b(int)p
+FA(\))370 b(the)f(cum)-31 b(ulativ)g(e)372 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(calls)g(to)g Fy(psetup)p FA(.)p Black
+4000 43301 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+10814 45062 a Fy(IDASPGMR)p 15532 45062 V 420 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)f(set.)p Black 10814
+46602 a Fy(IDASPGMR)p 15532 46602 V 420 w(MEM)p 17695
+46602 V 418 w(NULL)p Black 1136 w FA(The)h Fy(ida)p 25591
+46602 V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370 b(is)f
+Fy(NULL)p FA(.)p Black 10814 48142 a Fy(IDASPGMR)p 15532
+48142 V 420 w(LMEM)p 18276 48142 V 419 w(NULL)p Black
+554 w FA(The)g Fx(id)-25 b(aspgmr)368 b FA(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+4000 50402 14701 45 v 4000 51989 45 1587 v 4376 51411
+a Fy(IDASpgmrGetNumPrecSolves)p 18656 51989 V 4000 52033
+14701 45 v Black 4000 53313 a FA(Call)p Black 4848 w
+Fy(flag)582 b(=)f(IDASpgmrGetNumPrecSolves\(ida)p 31220
+53313 349 45 v 423 w(mem,)g(&npsolves\);)p Black 4000
+55074 a FA(Description)p Black 1286 w(The)558 b(function)i
+Fy(IDASpgmrGetNumPrecSolves)h FA(returns)c(the)h(cum)-31
+b(ulativ)g(e)561 b(n)-31 b(um)g(b)31 b(er)558 b(of)h(calls)10814
+56402 y(made)370 b(to)g(the)f(preconditioner)i(solv)-31
+b(e)370 b(function,)h Fy(psolve)p FA(.)p Black 4000 58163
+a(Argumen)-31 b(ts)p Black Black 1517 w Fy(ida)p 12627
+58163 V 419 w(mem)p Black 1298 w FA(\()p Fy(void)582
+b(*)p FA(\))369 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)g
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p
+Black 10814 59703 a Fy(npsolves)p Black 555 w FA(\()p
+Fy(long)582 b(int)p FA(\))370 b(the)f(cum)-31 b(ulativ)g(e)372
+b(n)-31 b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g Fy(psolve)p
+FA(.)p Black 4000 61465 a(Return)f(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 10814 63226 a Fy(IDASPGMR)p 15532 63226 V 420 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)f(set.)p Black 10814
+64766 a Fy(IDASPGMR)p 15532 64766 V 420 w(MEM)p 17695
+64766 V 418 w(NULL)p Black 1136 w FA(The)h Fy(ida)p 25591
+64766 V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370 b(is)f
+Fy(NULL)p FA(.)p Black 10814 66306 a Fy(IDASPGMR)p 15532
+66306 V 420 w(LMEM)p 18276 66306 V 419 w(NULL)p Black
+554 w FA(The)g Fx(id)-25 b(aspgmr)368 b FA(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+4000 68566 15282 45 v 4000 70152 45 1587 v 4376 69574
+a Fy(IDASpgmrGetNumJtimesEvals)p 19237 70152 V 4000 70196
+15282 45 v Black 4000 71476 a FA(Call)p Black 4848 w
+Fy(flag)582 b(=)f(IDASpgmrGetNumJtimesEvals\(ida)p 31801
+71476 349 45 v 423 w(mem,)g(&njvevals\);)p Black 4000
+73237 a FA(Description)p Black 1286 w(The)486 b(function)g
+Fy(IDASpgmrGetNumJtimesEvals)j FA(returns)c(the)g(cum)-31
+b(ulativ)g(e)489 b(n)-31 b(um)g(b)31 b(er)485 b(of)h(calls)10814
+74566 y(made)370 b(to)g(the)f(Jacobian-v)-31 b(ector)372
+b(function,)f Fy(jtimes)p FA(.)p Black 4000 76327 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 12627 76327 V 419
+w(mem)p Black 1298 w FA(\()p Fy(void)582 b(*)p FA(\))369
+b(p)31 b(oin)-31 b(ter)370 b(to)g(the)g Fx(id)-25 b(a)369
+b FA(memory)h(blo)31 b(c)-31 b(k.)p Black 10814 77867
+a Fy(njvevals)p Black 555 w FA(\()p Fy(long)582 b(int)p
+FA(\))370 b(the)f(cum)-31 b(ulativ)g(e)372 b(n)-31 b(um)g(b)31
+b(er)369 b(of)h(calls)g(to)g Fy(jtimes)p FA(.)p Black
+Black eop
+%%Page: 48 56
+48 55 bop Black 0 2701 a FB(48)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black Black 0 6974 a FA(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370
+b Fy(int)p FA(\))g(is)f(one)g(of)p Black 6814 8748 a
+Fy(IDASPGMR)p 11532 8748 349 45 v 420 w(SUCCESS)p Black
+1554 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)f(set.)p Black 6814
+10300 a Fy(IDASPGMR)p 11532 10300 V 420 w(MEM)p 13695
+10300 V 418 w(NULL)p Black 1136 w FA(The)h Fy(ida)p 21591
+10300 V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370 b(is)f
+Fy(NULL)p FA(.)p Black 6814 11851 a Fy(IDASPGMR)p 11532
+11851 V 420 w(LMEM)p 14276 11851 V 419 w(NULL)p Black
+554 w FA(The)g Fx(id)-25 b(aspgmr)368 b FA(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+0 14130 13539 45 v 0 15717 45 1587 v 376 15139 a Fy
+(IDASpgmrGetNumResEvals)p 13494 15717 V 0 15761 13539
+45 v Black 0 17042 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDASpgmrGetNumResEvals\(ida)p 26058 17042 349 45
+v 422 w(mem,)h(&nrevalsSG\);)p Black 0 18816 a FA(Description)p
+Black 1286 w(The)311 b(function)h Fy(IDASpgmrGetNumResEvals)h
+FA(returns)d(the)h(cum)-31 b(ulativ)g(e)313 b(n)-31 b(um)g(b)31
+b(er)311 b(of)g(calls)g(to)h(the)6814 20145 y(user)368
+b(residual)i(function)g(for)g(\257nite)f(di\256erence)g(Jacobian-v)-31
+b(ector)372 b(pro)31 b(duct)369 b(appro)-31 b(ximation.)p
+Black 0 21919 a(Argumen)g(ts)p Black Black 1517 w Fy(ida)p
+8627 21919 V 419 w(mem)p Black 1879 w FA(\()p Fy(void)582
+b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f
+Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31 b(k.)p
+Black 6814 23471 a Fy(nrevalsSG)p Black 555 w FA(\()p
+Fy(long)582 b(int)p FA(\))370 b(the)f(cum)-31 b(ulativ)g(e)372
+b(n)-31 b(um)g(b)31 b(er)370 b(of)f(calls)h(to)g(the)g(user)e(residual)
+h(function.)p Black 0 25245 a(Return)g(v)-61 b(alue)p
+Black 554 w(The)369 b(return)g(v)-61 b(alue)370 b Fy(flag)f
+FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p
+Black 6814 27019 a Fy(IDA)p 8627 27019 V 419 w(SUCCESS)p
+Black 4460 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfuly)f(set.)p Black 6814
+28571 a Fy(IDASPGMR)p 11532 28571 V 420 w(MEM)p 13695
+28571 V 418 w(NULL)p Black 1136 w FA(The)h Fy(ida)p 21591
+28571 V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370 b(is)f
+Fy(NULL)p FA(.)p Black 6814 30122 a Fy(IDASPGMR)p 11532
+30122 V 420 w(LMEM)p 14276 30122 V 419 w(NULL)p Black
+554 w FA(The)g Fx(id)-25 b(aspgmr)368 b FA(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 0 31896 a(Notes)p Black 4072 w(The)346 b(v)-61
+b(alue)347 b Fy(nrevalsSG)g FA(is)g(incremen)-31 b(ted)347
+b(only)g(if)g(the)f(default)i Fy(IDASpgmrDQJtimes)g FA(di\256erence)
+6814 33225 y(quotien)-31 b(t)371 b(function)g(is)e(used.)p
+0 35504 11795 45 v 0 37090 45 1587 v 376 36512 a Fy
+(IDASpgmrGetLastFlag)p 11750 37090 V 0 37134 11795 45
+v Black 0 38416 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDASpgmrGetLastFlag\(ida)p 24315 38416 349 45 v
+422 w(mem,)h(&flag\);)p Black 0 40190 a FA(Description)p
+Black 1286 w(The)362 b(function)h Fy(IDASpgmrGetLastFlag)i
+FA(returns)360 b(the)i(last)h(return)e(v)-61 b(alue)362
+b(from)h(an)f Fx(id)-25 b(aspgmr)6814 41519 y FA(routine.)p
+Black 0 43293 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fy(ida)p 8627 43293 V 419 w(mem)p Black 554 w FA(\()p
+Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 6814 44844 a Fy(flag)p Black 2135 w FA(\()p
+Fy(int)p FA(\))370 b(the)g(v)-61 b(alue)369 b(of)h(the)f(last)h(return)
+f(\260ag)h(from)g(an)f Fx(id)-25 b(aspgmr)368 b FA(function.)p
+Black 0 46619 a(Return)h(v)-61 b(alue)p Black 554 w(The)369
+b(return)g(v)-61 b(alue)370 b Fy(flag)f FA(\(of)h(t)-31
+b(yp)31 b(e)370 b Fy(int)p FA(\))g(is)f(one)g(of)p Black
+6814 48393 a Fy(IDASPGMR)p 11532 48393 V 420 w(SUCCESS)p
+Black 1554 w FA(The)g(optional)j(output)e(v)-61 b(alue)370
+b(has)f(b)31 b(een)369 b(successfully)g(set.)p Black
+6814 49944 a Fy(IDASPGMR)p 11532 49944 V 420 w(MEM)p
+13695 49944 V 418 w(NULL)p Black 1136 w FA(The)g Fy(ida)p
+21591 49944 V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370
+b(is)f Fy(NULL)p FA(.)p Black 6814 51496 a Fy(IDASPGMR)p
+11532 51496 V 420 w(LMEM)p 14276 51496 V 419 w(NULL)p
+Black 554 w FA(The)g Fx(id)-25 b(aspgmr)368 b FA(linear)i(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)p
+Black 0 53270 a(Notes)p Black 4072 w(If)453 b(the)g Fx(id)-25
+b(aspgmr)451 b FA(setup)i(function)h(failed)h(\()p Fy(IDASolve)f
+FA(returned)e Fy(IDA)p 37906 53270 V 419 w(LSETUP)p 41811
+53270 V 419 w(FAIL)p FA(\),)i Fy(flag)6814 54599 y FA(con)-31
+b(tains)371 b(the)e(return)g(v)-61 b(alue)369 b(of)h(the)f
+(preconditioner)i(setup)e(function)i Fy(psetup)p FA(.)6814
+56373 y(If)480 b(the)g Fx(id)-25 b(aspgmr)479 b FA(solv)-31
+b(e)481 b(function)h(failed)g(\()p Fy(IDASolve)f FA(returned)f
+Fy(IDA)p 37879 56373 V 419 w(LSETUP)p 41784 56373 V 419
+w(FAIL)p FA(\),)h Fy(flag)6814 57701 y FA(con)-31 b(tains)351
+b(the)f(error)f(return)g(\260ag)h(from)h Fy(SpgmrSolve)g
+FA(and)f(will)h(b)31 b(e)349 b(one)h(of:)484 b Fy(SPGMR)p
+42276 57701 V 419 w(CONV)p 45019 57701 V 419 w(FAIL)p
+FA(,)6814 59030 y(indicating)557 b(a)d(failure)h(to)g(con)-31
+b(v)g(erge;)648 b Fy(SPGMR)p 26494 59030 V 419 w(QRFACT)p
+30399 59030 V 419 w(FAIL)p FA(,)555 b(indicating)i(a)d(singular)h
+(matrix)6814 60358 y(found)381 b(during)g(the)h(QR)e(factorization;)391
+b Fy(SPGMR)p 27156 60358 V 419 w(PSOLVE)p 31061 60358
+V 419 w(FAIL)p 33804 60358 V 419 w(REC)p FA(,)382 b(indicating)h(that)f
+(the)f(pre-)6814 61686 y(conditioner)329 b(solv)-31 b(e)328
+b(function)g Fy(psolve)g FA(failed)h(reco)-31 b(v)g(erably;)343
+b Fy(SPGMR)p 35377 61686 V 419 w(MEM)p 37539 61686 V
+419 w(NULL)p FA(,)328 b(indicating)i(that)6814 63015
+y(the)369 b Fx(spgmr)f FA(memory)j(is)e Fy(NULL)p FA(;)h
+Fy(SPGMR)p 23783 63015 V 419 w(ATIMES)p 27688 63015 V
+420 w(FAIL)p FA(,)g(indicating)i(a)d(failure)h(in)g(the)f(Jacobian)6814
+64343 y(times)407 b(v)-31 b(ector)408 b(function;)427
+b Fy(SPGMR)p 20845 64343 V 419 w(PSOLVE)p 24750 64343
+V 419 w(FAIL)p 27493 64343 V 419 w(UNREC)p FA(,)408 b(indicating)h
+(that)f(the)f(preconditioner)6814 65671 y(solv)-31 b(e)336
+b(function)h Fy(psolve)g FA(failed)f(unreco)-31 b(v)g(erably;)349
+b Fy(SPGMR)p 30904 65671 V 419 w(GS)p 32485 65671 V 419
+w(FAIL)p FA(,)336 b(indicating)i(a)e(failure)h(in)f(the)6814
+67000 y(Gram-Sc)-31 b(hmidt)497 b(pro)31 b(cedure;)558
+b(or)496 b Fy(SPGMR)p 24519 67000 V 419 w(QRSOL)p 27843
+67000 V 419 w(FAIL)p FA(,)h(indicating)h(that)f(the)f(matrix)h
+Fp(R)503 b FA(w)-31 b(as)6814 68328 y(found)370 b(to)g(b)31
+b(e)368 b(singular)i(during)g(the)f(QR)g(solv)-31 b(e)370
+b(phase.)0 71836 y Ft(5.4.8)1495 b(ID)-42 b(A)499 b(reinitialization)i
+(function)0 73882 y FA(The)307 b(function)h Fy(IDAReInit)g
+FA(reinitializes)i(the)d(main)h Fx(id)-25 b(a)307 b FA(solv)-31
+b(er)307 b(for)g(the)g(solution)i(of)e(a)g(problem,)321
+b(where)307 b(a)g(prior)0 75210 y(call)396 b(to)f Fy(IDAMalloc)g
+FA(has)f(b)31 b(een)394 b(made.)569 b(The)394 b(new)h(problem)g(m)-31
+b(ust)395 b(ha)-31 b(v)g(e)395 b(the)g(same)g(size)f(as)g(the)h
+(previous)f(one.)0 76539 y Fy(IDAReInit)381 b FA(p)31
+b(erforms)379 b(the)i(same)f(input)h(c)-31 b(hec)g(king)381
+b(and)f(initializations)385 b(that)c Fy(IDAMalloc)g FA(do)31
+b(es,)383 b(but)d(do)31 b(es)380 b(no)0 77867 y(memory)370
+b(allo)31 b(cation,)373 b(assuming)d(that)h(the)e(existing)i(in)-31
+b(ternal)371 b(memory)f(is)f(su\261cien)-31 b(t)370 b(for)f(the)h(new)f
+(problem.)p Black Black eop
+%%Page: 49 57
+49 56 bop Black 4000 2701 a FB(5.5)425 b(User-supplied)h(functions)
+31554 b(49)p 4000 3144 48001 45 v Black 5660 6974 a FA(The)450
+b(use)e(of)i Fy(IDAReInit)g FA(requires)e(that)i(the)f(maxim)-31
+b(um)452 b(metho)31 b(d)450 b(order,)469 b Fy(maxord)p
+FA(,)h(is)449 b(no)g(larger)g(for)h(the)4000 8302 y(new)445
+b(problem)h(than)g(for)f(the)g(problem)h(sp)31 b(eci\257ed)445
+b(in)g(the)g(last)h(call)h(to)e Fy(IDAMalloc)p FA(.)722
+b(In)444 b(addition,)467 b(the)445 b(same)4000 9631 y
+Fx(nvector)369 b FA(mo)31 b(dule)370 b(set)f(for)h(the)f(previous)g
+(problem)h(will)h(b)31 b(e)369 b(reused)f(for)h(the)h(new)f(problem.)
+5660 11024 y(If)258 b(there)g(are)g(c)-31 b(hanges)259
+b(to)f(the)h(linear)g(solv)-31 b(er)258 b(sp)31 b(eci\257cations,)282
+b(mak)-31 b(e)259 b(the)f(appropriate)i Fy(Set)e FA(calls,)282
+b(as)258 b(describ)31 b(ed)4000 12352 y(in)369 b Fs(x)p
+FA(5.4.2.)p 4000 14629 5984 45 v 4000 15970 45 1341 v
+4376 15637 a Fy(IDAReInit)p 9939 15970 V 4000 16014 5984
+45 v Black 4000 17431 a FA(Call)p Black 4848 w Fy(flag)582
+b(=)f(IDAReInit\(ida)p 22505 17431 349 45 v 420 w(mem,)h(res,)g(t0,)f
+(y0,)h(yp0,)g(itol,)g(reltol,)g(abstol\);)p Black 4000
+19331 a FA(Description)p Black 1286 w(The)282 b(function)h
+Fy(IDAReInit)g FA(pro)-31 b(vides)282 b(required)f(problem)i(sp)31
+b(eci\257cations)282 b(and)g(reinitializes)i Fx(id)-25
+b(a)p FA(.)p Black 4000 21232 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fy(ida)p 12627 21232 V 419 w(mem)p Black
+554 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31
+b(c)-31 b(k.)p Black 10814 22846 a Fy(res)p Black 2716
+w FA(\()p Fy(IDAResFn)p FA(\))327 b(is)f(the)f Fx(C)h
+FA(function)g(whic)-31 b(h)327 b(computes)f Fp(F)154
+b FA(.)478 b(This)325 b(function)i(has)f(the)f(form)15273
+24175 y Fy(f\(t,)582 b(y,)f(yp,)h(r,)f(res)p 25803 24175
+V 419 w(data\))370 b FA(\(for)f(full)i(details)f(see)f
+Fs(x)p FA(5.5\).)p Black 10814 25789 a Fy(t0)p Black
+3297 w FA(\()p Fy(realtype)p FA(\))i(is)e(the)g(initial)j(v)-61
+b(alue)370 b(of)g Fp(t)p FA(.)p Black 10814 27404 a Fy(y0)p
+Black 3297 w FA(\()p Fy(N)p 16354 27404 V 419 w(Vector)p
+FA(\))g(is)f(the)h(initial)i(v)-61 b(alue)369 b(of)h
+Fp(y)40 b FA(.)p Black 10814 29018 a Fy(yp0)p Black 2716
+w FA(\()p Fy(N)p 16354 29018 V 419 w(Vector)p FA(\))370
+b(is)f(the)h(initial)i(v)-61 b(alue)369 b(of)h Fp(y)31910
+28616 y Fo(0)32220 29018 y FA(.)p Black 10814 30632 a
+Fy(itol)p Black 2135 w FA(\()p Fy(int)p FA(\))525 b(is)f(one)g(of)h
+Fy(IDA)p 25082 30632 V 419 w(SS)p FA(,)f Fy(IDA)p 29237
+30632 V 419 w(SV)p FA(,)h(or)f Fy(IDA)p 34904 30632 V
+419 w(WF)p FA(,)g(where)g Fy(IDA)p 42415 30632 V 419
+w(SS)g FA(indicates)h(scalar)15273 31961 y(relativ)-31
+b(e)553 b(error)e(tolerance)i(and)f(scalar)g(absolute)h(error)e
+(tolerance,)599 b(while)553 b Fy(IDA)p 50489 31961 V
+419 w(SV)15273 33289 y FA(indicates)407 b(scalar)f(relativ)-31
+b(e)408 b(error)c(tolerance)k(and)e(v)-31 b(ector)406
+b(absolute)h(error)e(tolerance.)15273 34618 y(The)476
+b(latter)h(c)-31 b(hoice)477 b(is)f(imp)31 b(ortan)-31
+b(t)479 b(when)d(the)g(absolute)h(error)e(tolerance)j(needs)d(to)15273
+35946 y(b)31 b(e)327 b(di\256eren)-31 b(t)328 b(for)g(eac)-31
+b(h)329 b(comp)31 b(onen)-31 b(t)329 b(of)f(the)g(D)-31
+b(AE.)329 b(If)f Fy(itol)p FA(=)p Fy(IDA)p 42967 35946
+V 419 w(WF)p FA(,)h(the)f(argumen)-31 b(ts)15273 37274
+y Fy(reltol)275 b FA(and)f Fy(abstol)h FA(are)f(ignored)h(and)f(the)h
+(user)e(is)h(exp)31 b(ected)274 b(to)h(pro)-31 b(vide)275
+b(a)f(function)15273 38603 y(to)302 b(ev)-61 b(aluate)303
+b(the)e(error)g(w)-31 b(eigh)g(t)303 b(v)-31 b(ector)303
+b Fp(W)455 b FA(from)302 b(\(3.6\).)472 b(See)302 b Fy(IDASetEwtFn)g
+FA(in)g Fs(x)p FA(5.4.5.)p Black 10814 40217 a Fy(reltol)p
+Black 973 w FA(\()p Fy(realtype)p FA(\))371 b(is)e(the)g(relativ)-31
+b(e)371 b(error)e(tolerance.)p Black 10814 41832 a Fy(abstol)p
+Black 973 w FA(\()p Fy(void)582 b(*)p FA(\))260 b(is)f(a)g(p)31
+b(oin)-31 b(ter)260 b(to)g(the)f(absolute)i(error)d(tolerance.)457
+b(If)259 b Fy(itol)p FA(=)p Fy(IDA)p 46435 41832 V 419
+w(SS)p FA(,)h Fy(abstol)15273 43160 y FA(m)-31 b(ust)355
+b(b)31 b(e)354 b(a)g(p)31 b(oin)-31 b(ter)355 b(to)g(a)g
+Fy(realtype)g FA(v)-61 b(ariable.)489 b(If)354 b Fy(itol)p
+FA(=)p Fy(IDA)p 42120 43160 V 419 w(SV)p FA(,)h Fy(abstol)g
+FA(m)-31 b(ust)355 b(b)31 b(e)15273 44488 y(an)369 b
+Fy(N)p 17461 44488 V 419 w(Vector)h FA(v)-61 b(ariable.)p
+Black 4000 46389 a(Return)369 b(v)-61 b(alue)p Black
+554 w(The)369 b(return)g(\260ag)h Fy(flag)f FA(\(of)i(t)-31
+b(yp)31 b(e)369 b Fy(int)p FA(\))h(will)h(b)31 b(e)369
+b(one)g(of)h(the)f(follo)-31 b(wing:)p Black 10814 48289
+a Fy(IDA)p 12627 48289 V 419 w(SUCCESS)p Black 1554 w
+FA(The)369 b(call)i(to)f Fy(IDAReInit)g FA(w)-31 b(as)370
+b(successful.)p Black 10814 49904 a Fy(IDA)p 12627 49904
+V 419 w(MEM)p 14789 49904 V 419 w(NULL)p Black 1135 w
+FA(The)383 b Fx(id)-25 b(a)383 b FA(memory)h(blo)31 b(c)-31
+b(k)384 b(w)-31 b(as)384 b(not)g(initialized)i(through)e(a)f(previous)h
+(call)g(to)18597 51232 y Fy(IDACreate)p FA(.)p Black
+10814 52847 a Fy(IDA)p 12627 52847 V 419 w(NO)p 14208
+52847 V 419 w(MALLOC)p Black 554 w FA(Memory)341 b(space)g(for)g(the)g
+Fx(id)-25 b(a)341 b FA(memory)h(blo)31 b(c)-31 b(k)341
+b(w)-31 b(as)342 b(not)g(allo)31 b(cated)343 b(through)f(a)18597
+54175 y(previous)369 b(call)i(to)f Fy(IDAMalloc)p FA(.)p
+Black 10814 55790 a Fy(IDA)p 12627 55790 V 419 w(ILL)p
+14789 55790 V 419 w(INPUT)p Black 554 w FA(An)f(input)h(argumen)-31
+b(t)371 b(to)f Fy(IDAReInit)g FA(has)f(an)g(illegal)j(v)-61
+b(alue.)p Black 4000 57690 a(Notes)p Black 4072 w(If)426
+b(an)g(error)g(o)31 b(ccurred,)440 b Fy(IDAReInit)427
+b FA(also)g(prin)-31 b(ts)426 b(an)h(error)e(message)i(to)g(the)f
+(\257le)h(sp)31 b(eci\257ed)426 b(b)-31 b(y)10814 59018
+y(the)369 b(optional)j(input)e Fy(errfp)p FA(.)11942
+61727 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1429
+b FA(It)300 b(is)h(the)g(user's)e(resp)31 b(onsibilit)-31
+b(y)302 b(to)g(pro)-31 b(vide)301 b(compatible)i Fy(itol)e
+FA(and)g Fy(abstol)g FA(argumen)-31 b(ts.)4000 65731
+y Fu(5.5)1793 b(User-supplied)600 b(functions)4000 68276
+y FA(The)389 b(user-supplied)g(functions)h(consist)g(of)g(one)f
+(function)i(de\257ning)f(the)f(D)-31 b(AE)390 b(residual,)395
+b(\(optionally\))e(a)d(func-)4000 69604 y(tion)457 b(that)h(pro)-31
+b(vides)456 b(the)g(error)f(w)-31 b(eigh)g(t)459 b(v)-31
+b(ector,)479 b(\(optionally\))460 b(a)c(function)i(that)f(pro)-31
+b(vides)456 b(Jacobian)i(related)4000 70933 y(information)282
+b(for)d(the)g(linear)h(solv)-31 b(er)280 b(\(if)g(Newton)g(iteration)i
+(is)d(c)-31 b(hosen\),)298 b(and)279 b(\(optionally\))284
+b(one)279 b(or)g(t)-31 b(w)g(o)281 b(functions)4000 72261
+y(that)370 b(de\257ne)f(the)h(preconditioner)g(for)f(use)g(in)g(the)h
+Fx(spgmr)e FA(algorithm.)4000 75703 y Ft(5.5.1)1495 b(Residual)499
+b(function)4000 77867 y FA(The)369 b(user)g(m)-31 b(ust)369
+b(pro)-31 b(vide)370 b(a)g(function)g(of)g(t)-31 b(yp)31
+b(e)370 b Fy(IDAResFn)g FA(de\257ned)f(as)g(follo)-31
+b(ws:)p Black Black eop
+%%Page: 50 58
+50 57 bop Black 0 2701 a FB(50)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black 0 5965 5402 45 v 0 7306
+45 1341 v 376 6974 a Fy(IDAResFn)p 5358 7306 V 0 7350
+5402 45 v Black 0 8702 a FA(De\257nition)p Black 2034
+w Fy(typedef)582 b(int)g(\(*IDAResFn\)\()r(realtype)g(tt,)f(N)p
+28967 8702 349 45 v 419 w(Vector)h(yy,)g(N)p 36360 8702
+V 418 w(Vector)g(yp,)20762 10031 y(N)p 21413 10031 V
+418 w(Vector)g(rr,)g(void)g(*res)p 33454 10031 V 419
+w(data\);)p Black 0 11672 a FA(Purp)31 b(ose)p Black
+2884 w(This)332 b(function)g(computes)h(the)e(problem)h(residual)g(for)
+f(giv)-31 b(en)333 b(v)-61 b(alues)331 b(of)h(the)g(indep)31
+b(enden)-31 b(t)332 b(v)-61 b(ari-)6814 13001 y(able)370
+b Fp(t)p FA(,)f(state)h(v)-31 b(ector)370 b Fp(y)40 b
+FA(,)369 b(and)g(deriv)-61 b(ativ)-31 b(e)371 b Fp(y)25334
+12599 y Fo(0)25644 13001 y FA(.)p Black 0 14693 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(tt)p Black 3878 w FA(is)369
+b(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370 b(of)g(the)f(indep)31
+b(enden)-31 b(t)370 b(v)-61 b(ariable.)p Black 6814 16163
+a Fy(yy)p Black 3878 w FA(is)369 b(the)g(curren)-31 b(t)369
+b(v)-61 b(alue)370 b(of)g(the)f(dep)31 b(enden)-31 b(t)369
+b(v)-61 b(ariable)371 b(v)-31 b(ector,)370 b Fp(y)40
+b FA(\()p Fp(t)p FA(\).)p Black 6814 17634 a Fy(yp)p
+Black 3878 w FA(is)369 b(the)g(curren)-31 b(t)369 b(v)-61
+b(alue)370 b(of)g Fp(y)23427 17232 y Fo(0)23737 17634
+y FA(\()p Fp(t)p FA(\).)p Black 6814 19105 a Fy(rr)p
+Black 3878 w FA(is)f(the)g(output)i(v)-31 b(ector)370
+b Fp(F)154 b FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)25670
+18703 y Fo(0)25981 19105 y FA(\).)p Black 6814 20575
+a Fy(res)p 8627 20575 V 419 w(data)p Black 554 w FA(is)422
+b(a)g(p)31 b(oin)-31 b(ter)423 b(to)f(user)f(data)i(-)f(the)g(same)h
+(as)f(the)g Fy(res)p 35003 20575 V 419 w(data)g FA(parameter)h(passed)e
+(to)11854 21904 y Fy(IDASetRdata)p FA(.)p Black 0 23596
+a(Return)369 b(v)-61 b(alue)p Black 554 w(An)425 b Fy(IDAResFn)i
+FA(function)f(t)-31 b(yp)31 b(e)426 b(should)g(return)f(a)g(v)-61
+b(alue)426 b(of)g(0)g(if)g(successful,)439 b(a)425 b(p)31
+b(ositiv)-31 b(e)427 b(v)-61 b(alue)6814 24924 y(if)435
+b(a)g(reco)-31 b(v)g(erable)435 b(error)e(o)31 b(ccured)434
+b(\(e.g.)690 b Fy(yy)435 b FA(has)f(an)h(illegal)i(v)-61
+b(alue\),)452 b(or)434 b(a)h(negativ)-31 b(e)437 b(v)-61
+b(alue)435 b(if)g(a)6814 26253 y(nonreco)-31 b(v)g(erable)371
+b(error)d(o)31 b(ccured.)6814 27945 y(In)398 b(the)h(latter)h(case,)407
+b(the)399 b(in)-31 b(tegrator)401 b(halts.)582 b(If)399
+b(a)g(reco)-31 b(v)g(erable)400 b(error)e(o)31 b(ccured,)406
+b(the)399 b(in)-31 b(tegrator)6814 29273 y(will)371 b(attempt)g(to)f
+(correct)f(and)h(retry)-92 b(.)p Black 0 30965 a(Notes)p
+Black 4072 w(Allo)31 b(cation)372 b(of)e(memory)g(for)f
+Fy(yp)h FA(is)f(handled)h(within)h Fx(id)-25 b(a)p FA(.)0
+33996 y Ft(5.5.2)1495 b(Error)500 b(w)-42 b(eigh)g(t)499
+b(function)0 36039 y FA(As)347 b(an)h(alternativ)-31
+b(e)351 b(to)d(pro)-31 b(viding)349 b(the)f(relativ)-31
+b(e)350 b(and)d(absolute)i(tolerances,)354 b(the)348
+b(user)e(ma)-31 b(y)349 b(pro)-31 b(vide)348 b(a)g(function)0
+37367 y(of)h(t)-31 b(yp)31 b(e)348 b Fy(IDAEwtFn)h FA(to)g(compute)g(a)
+f(v)-31 b(ector)349 b Fy(ewt)f FA(con)-31 b(taining)351
+b(the)e(w)-31 b(eigh)g(ts)349 b(in)g(the)f(WRMS)f(norm)h
+Fs(k)h Fp(v)40 b Fs(k)43957 37533 y Fn(WRMS)47139 37367
+y FA(=)0 37843 y Fl(q)p 1107 37843 8413 45 v 1379 x FA(\(1)p
+Fp(=)-61 b(N)121 b FA(\))4206 38392 y Fl(P)5376 38666
+y Fm(N)5376 39554 y Fn(1)6401 39222 y Fp(W)7446 39388
+y Fm(i)8061 39222 y Fs(\242)246 b Fp(v)9151 39388 y Fm(i)9519
+39222 y FA(.)493 b(The)369 b(function)i(t)-31 b(yp)31
+b(e)369 b Fy(IDAEwtFn)h FA(is)g(de\257ned)e(as)i(follo)-31
+b(ws:)p 0 41427 5402 45 v 0 42768 45 1341 v 376 42436
+a Fy(IDAEwtFn)p 5358 42768 V 0 42812 5402 45 v Black
+0 44164 a FA(De\257nition)p Black 2034 w Fy(typedef)582
+b(int)g(\(*IDAEwtFn\)\(N)p 21411 44164 349 45 v 420 w(Vector)g(y,)g(N)p
+28224 44164 V 418 w(Vector)g(ewt,)g(void)g(*e)p 39684
+44164 V 418 w(data\);)p Black 0 45856 a FA(Purp)31 b(ose)p
+Black 2884 w(This)370 b(function)g(computes)g(the)g(WRMS)e(error)g(w)
+-31 b(eigh)g(ts)371 b(for)e(the)h(v)-31 b(ector)370 b
+Fp(y)40 b FA(.)p Black 0 47549 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fy(y)p Black 3297 w FA(is)369 b(the)g(v)-61
+b(alue)370 b(of)g(the)f(v)-31 b(ector)370 b(for)f(whic)-31
+b(h)370 b(the)g(WRMS)e(norm)h(m)-31 b(ust)370 b(b)31
+b(e)369 b(computed.)p Black 6814 49019 a Fy(ewt)p Black
+2135 w FA(is)g(the)g(output)i(v)-31 b(ector)369 b(con)-31
+b(taining)373 b(the)c(error)f(w)-31 b(eigh)g(ts.)p Black
+6814 50490 a Fy(e)p 7465 50490 V 419 w(data)p Black 554
+w FA(is)535 b(a)g(p)31 b(oin)-31 b(ter)536 b(to)g(user)f(data)h(|)f
+(the)h(same)f(as)g(the)h Fy(e)p 34663 50490 V 419 w(data)f
+FA(parameter)h(passed)f(to)10692 51818 y Fy(IDASetEwtFn)p
+FA(.)p Black 0 53510 a(Return)369 b(v)-61 b(alue)p Black
+554 w(An)416 b Fy(IDAEwtFn)i FA(function)g(t)-31 b(yp)31
+b(e)417 b(m)-31 b(ust)417 b(return)f(0)g(if)h(it)h(successfuly)e(set)g
+(the)h(error)e(w)-31 b(eigh)g(ts)419 b(and)6814 54839
+y Fs(\241)p FA(1)369 b(otherwise.)494 b(In)369 b(case)g(of)g(failure,)i
+(a)f(message)f(is)g(prin)-31 b(ted)370 b(and)f(the)h(in)-31
+b(tegration)372 b(stops.)p Black 0 56531 a(Notes)p Black
+4072 w(Allo)31 b(cation)372 b(of)e(memory)g(for)f Fy(ewt)h
+FA(is)f(handled)h(within)h Fx(id)-25 b(a)p FA(.)7942
+59000 y @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1635
+b FA(The)507 b(error)f(w)-31 b(eigh)g(t)509 b(v)-31 b(ector)507
+b(m)-31 b(ust)508 b(ha)-31 b(v)g(e)507 b(all)h(comp)31
+b(onen)-31 b(ts)508 b(p)31 b(ositiv)-31 b(e.)907 b(It)507
+b(is)g(the)g(user's)6814 60328 y(resp)31 b(onsiblit)-31
+b(y)370 b(to)g(p)31 b(erform)369 b(this)h(test)f(and)h(return)e
+Fs(\241)p FA(1)i(if)g(it)g(is)f(not)h(satis\257ed.)0
+63359 y Ft(5.5.3)1495 b(Jacobian)500 b(information)g(\(direct)f(metho)
+42 b(d)499 b(with)g(dense)f(Jacobian\))0 65402 y FA(If)421
+b(the)g(direct)g(linear)h(solv)-31 b(er)421 b(with)h(dense)e(treatmen)
+-31 b(t)423 b(of)e(the)g(Jacobian)i(is)e(used)f(\(i.e.)649
+b Fy(IDADense)422 b FA(is)e(called)j(in)0 66731 y(Step)369
+b(7)h(of)g Fs(x)p FA(5.3\),)h(the)e(user)g(ma)-31 b(y)370
+b(pro)-31 b(vide)370 b(a)f(function)i(of)f(t)-31 b(yp)31
+b(e)369 b Fy(IDADenseJacFn)i FA(de\257ned)e(b)-31 b(y)p
+0 68643 8308 45 v 0 69984 45 1341 v 376 69652 a Fy(IDADenseJacFn)p
+8263 69984 V 0 70028 8308 45 v Black 0 71380 a FA(De\257nition)p
+Black 2034 w Fy(typedef)582 b(int)g(\(*IDADenseJacFn\)\()r(long)g(int)g
+(Neq,)f(realtype)i(tt,)23667 72708 y(N)p 24318 72708
+349 45 v 419 w(Vector)f(yy,)g(N)p 31711 72708 V 418 w(Vector)g(yp,)g(N)
+p 39103 72708 V 418 w(Vector)g(rr,)23667 74037 y(realtype)h(c)p
+29549 74037 V 418 w(j,)f(void)f(*jac)p 36940 74037 V
+419 w(data,)23667 75365 y(DenseMat)i(Jac,)23667 76694
+y(N)p 24318 76694 V 419 w(Vector)f(tmp1,)g(N)p 32873
+76694 V 418 w(Vector)g(tmp2,)23667 78022 y(N)p 24318
+78022 V 419 w(Vector)g(tmp3\);)p Black Black eop
+%%Page: 51 59
+51 58 bop Black 4000 2701 a FB(5.5)425 b(User-supplied)h(functions)
+31554 b(51)p 4000 3144 48001 45 v Black Black 4000 6974
+a FA(Purp)31 b(ose)p Black 2884 w(This)422 b(function)h(computes)f(the)
+g(dense)f(Jacobian)i(\(or)f(an)f(appro)-31 b(ximation)426
+b(to)c(it\))h(of)f(the)g(D)-31 b(AE)10814 8302 y(system.)p
+Black 4000 10261 a(Argumen)g(ts)p Black Black 1517 w
+Fy(Neq)p Black 3297 w FA(is)369 b(the)g(problem)h(size)f(\(n)-31
+b(um)g(b)31 b(er)370 b(of)g(equations\).)p Black 10814
+11904 a Fy(tt)p Black 3878 w FA(is)f(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)g(the)f(indep)31 b(enden)-31
+b(t)370 b(v)-61 b(ariable)370 b Fp(t)p FA(.)p Black 10814
+13547 a Fy(yy)p Black 3878 w FA(is)f(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)g(the)f(dep)31 b(enden)-31
+b(t)369 b(v)-61 b(ariable)371 b(v)-31 b(ector,)370 b
+Fp(y)40 b FA(\()p Fp(t)p FA(\).)p Black 10814 15191 a
+Fy(yp)p Black 3878 w FA(is)369 b(the)g(curren)-31 b(t)369
+b(v)-61 b(alue)370 b(of)g Fp(y)27427 14789 y Fo(0)27737
+15191 y FA(\()p Fp(t)p FA(\).)p Black 10814 16834 a Fy(rr)p
+Black 3878 w FA(is)f(the)g(curren)-31 b(t)369 b(v)-61
+b(alue)370 b(of)g(the)f(v)-31 b(ector)370 b Fp(F)154
+b FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)35918 16432 y
+Fo(0)36229 16834 y FA(\).)p Black 10814 18478 a Fy(c)p
+11465 18478 349 45 v 419 w(j)p Black 3459 w FA(is)348
+b(the)h(scalar)g(in)g(the)g(system)g(Jacobian,)354 b(prop)31
+b(ortional)351 b(to)e(the)g(in)-31 b(v)g(erse)349 b(of)g(the)g(step)
+15854 19806 y(size.)p Black 10814 21449 a Fy(jac)p 12627
+21449 V 419 w(data)p Black 554 w FA(is)422 b(a)g(p)31
+b(oin)-31 b(ter)423 b(to)f(user)f(data)i(-)f(the)g(same)h(as)f(the)g
+Fy(jac)p 39003 21449 V 419 w(data)g FA(parameter)h(passed)e(to)15854
+22778 y Fy(IDADenseSetJacData)p FA(.)p Black 10814 24421
+a Fy(Jac)p Black 3297 w FA(is)369 b(the)g(output)i(Jacobian)g(matrix.)p
+Black 10814 26064 a Fy(tmp1)p Black Black 10814 27708
+a(tmp2)p Black Black 10814 29351 a(tmp3)p Black 2716
+w FA(are)d(p)31 b(oin)-31 b(ters)369 b(to)g(memory)g(allo)31
+b(cated)371 b(for)e(v)-61 b(ariables)369 b(of)g(t)-31
+b(yp)31 b(e)369 b Fy(N)p 42970 29351 V 418 w(Vector)g
+FA(whic)-31 b(h)370 b(can)15854 30680 y(b)31 b(e)369
+b(used)f(b)-31 b(y)370 b Fy(IDADenseJacFn)h FA(as)e(temp)31
+b(orary)370 b(storage)g(or)f(w)-31 b(ork)370 b(space.)p
+Black 4000 32638 a(Return)f(v)-61 b(alue)p Black 554
+w(An)445 b Fy(IDADenseJacFn)h FA(function)g(t)-31 b(yp)31
+b(e)445 b(should)g(return)f(0)h(if)h(successful,)463
+b(a)445 b(p)31 b(ositiv)-31 b(e)446 b(v)-61 b(alue)445
+b(if)h(a)10814 33966 y(reco)-31 b(v)g(erable)370 b(error)e(o)31
+b(ccured,)369 b(or)g(a)h(negativ)-31 b(e)371 b(v)-61
+b(alue)370 b(if)g(a)f(nonreco)-31 b(v)g(erable)371 b(error)d(o)31
+b(ccured.)10814 35925 y(In)505 b(the)h(case)f(of)i(a)f(reco)-31
+b(v)g(erable)506 b(eror)f(return,)540 b(the)506 b(in)-31
+b(tegrator)507 b(will)h(attempt)f(to)g(reco)-31 b(v)g(er)506
+b(b)-31 b(y)10814 37253 y(reducing)369 b(the)h(stepsize,)f(and)h(hence)
+f(c)-31 b(hanging)371 b Fp(\256)i FA(in)d(\(3.5\).)p
+Black 4000 39211 a(Notes)p Black 4072 w(A)401 b(user-supplied)g(dense)g
+(Jacobian)i(function)g(m)-31 b(ust)402 b(load)h(the)e
+Fy(Neq)h Fs(\243)f Fy(Neq)h FA(dense)f(matrix)i Fy(Jac)10814
+40540 y FA(with)501 b(an)e(appro)-31 b(ximation)503 b(to)e(the)e
+(Jacobian)i(matrix)g Fp(J)606 b FA(at)500 b(the)g(p)31
+b(oin)-31 b(t)501 b(\()p Fy(tt)p FA(,)533 b Fy(yy)p FA(,)f
+Fy(yp)p FA(\).)884 b(Only)10814 41868 y(nonzero)459 b(elemen)-31
+b(ts)461 b(need)e(to)h(b)31 b(e)458 b(loaded)j(in)-31
+b(to)461 b Fy(Jac)e FA(b)31 b(ecause)459 b Fy(Jac)g FA(is)h(set)f(to)h
+(the)f(zero)g(matrix)10814 43197 y(b)31 b(efore)287 b(the)g(call)i(to)f
+(the)f(Jacobian)i(function.)466 b(The)288 b(t)-31 b(yp)31
+b(e)288 b(of)f Fy(Jac)h FA(is)f Fy(DenseMat)h FA(\(describ)31
+b(ed)287 b(b)31 b(elo)-31 b(w)10814 44525 y(and)369 b(in)h
+Fs(x)p FA(8.1\).)10814 46483 y(The)271 b(accessor)f(macros)i
+Fy(DENSE)p 23789 46483 V 419 w(ELEM)f FA(and)g Fy(DENSE)p
+31762 46483 V 419 w(COL)g FA(allo)-31 b(w)274 b(the)d(user)e(to)j(read)
+f(and)g(write)g(dense)10814 47812 y(matrix)416 b(elemen)-31
+b(ts)415 b(without)i(making)f(explicit)g(references)e(to)h(the)f
+(underlying)i(represen)-31 b(tation)10814 49140 y(of)469
+b(the)f Fy(DenseMat)h FA(t)-31 b(yp)31 b(e.)790 b Fy(DENSE)p
+25489 49140 V 419 w(ELEM\(Jac,)583 b(i,)e(j\))469 b FA(references)d
+(the)j(\()p Fy(i)p FA(,)494 b Fy(j)p FA(\)-th)469 b(elemen)-31
+b(t)469 b(of)10814 50468 y(the)362 b(dense)f(matrix)j
+Fy(Jac)e FA(\()p Fy(i)p FA(,)i Fy(j)p FA(=)308 b(0)184
+b Fp(:)g(:)g(:)365 b Fy(Neq)p Fs(\241)p FA(1\).)491 b(This)362
+b(macro)h(is)f(for)g(use)f(in)h(small)h(problems)g(in)10814
+51797 y(whic)-31 b(h)395 b(e\261ciency)g(of)f(access)g(is)g(not)g(a)h
+(ma)61 b(jor)395 b(concern.)567 b(Th)-31 b(us,)401 b(in)394
+b(terms)g(of)g(indices)h Fp(m)e FA(and)i Fp(n)10814 53125
+y FA(running)387 b(from)g(1)h(to)f Fy(Neq)p FA(,)392
+b(the)387 b(Jacobian)i(elemen)-31 b(t)388 b Fp(J)33633
+53291 y Fm(m;n)35670 53125 y FA(can)f(b)31 b(e)387 b(loaded)h(with)g
+(the)f(statemen)-31 b(t)10814 54453 y Fy(DENSE)p 13789
+54453 V 419 w(ELEM\(Jac,)583 b(m-1,)e(n-1\))h(=)485 b
+Fp(J)27441 54619 y Fm(m;n)29092 54453 y FA(.)839 b(Alternativ)-31
+b(ely)-92 b(,)517 b Fy(DENSE)p 40279 54453 V 419 w(COL\(Jac,)583
+b(j\))485 b FA(returns)f(a)10814 55782 y(p)31 b(oin)-31
+b(ter)394 b(to)g(the)g(storage)g(for)g(the)f Fy(j)p FA(th)h(column)h
+(of)f Fy(Jac)f FA(\()p Fy(j)p FA(=)349 b(0)184 b Fp(:)g(:)g(:)396
+b Fy(Neq)p Fs(\241)p FA(1\),)401 b(and)394 b(the)g(elemen)-31
+b(ts)10814 57110 y(of)392 b(the)g Fy(j)p FA(-th)h(column)g(are)e(then)h
+(accessed)g(via)g(ordinary)h(arra)-31 b(y)392 b(indexing.)562
+b(Th)-31 b(us)392 b Fp(J)46768 57276 y Fm(m;n)48810 57110
+y FA(can)g(b)31 b(e)10814 58438 y(loaded)287 b(with)f(the)g(statemen)
+-31 b(ts)287 b Fy(col)p 25803 58438 V 419 w(n)581 b(=)h(DENSE)p
+31452 58438 V 419 w(COL\(Jac,)g(n-1\);)314 b(col)p 42063
+58438 V 419 w(n[m-1])582 b(=)285 b Fp(J)47960 58604 y
+Fm(m;n)49611 58438 y FA(.)465 b(F)-92 b(or)10814 59767
+y(large)458 b(problems,)479 b(it)458 b(is)f(more)g(e\261cien)-31
+b(t)459 b(to)e(use)g Fy(DENSE)p 34620 59767 V 419 w(COL)g
+FA(than)h(to)f(use)g Fy(DENSE)p 46256 59767 V 419 w(ELEM)p
+FA(.)h(Note)10814 61095 y(that)370 b(b)31 b(oth)370 b(of)g(these)f
+(macros)g(n)-31 b(um)g(b)31 b(er)370 b(ro)-31 b(ws)369
+b(and)g(columns)h(starting)h(from)f(0,)g(not)g(1.)10814
+63054 y(The)478 b Fy(DenseMat)h FA(t)-31 b(yp)31 b(e)478
+b(and)g(the)g(accessor)f(macros)h Fy(DENSE)p 36411 63054
+V 419 w(ELEM)g FA(and)g Fy(DENSE)p 44798 63054 V 419
+w(COL)g FA(are)g(do)31 b(cu-)10814 64382 y(men)-31 b(ted)370
+b(in)g Fs(x)p FA(8.1.)10814 66340 y(If)358 b(the)g(user's)f
+Fy(IDADenseJacFn)j FA(function)f(uses)e(di\256erence)h(quotien)-31
+b(t)360 b(appro)-31 b(ximations,)364 b(it)359 b(ma)-31
+b(y)10814 67669 y(need)412 b(to)h(access)f(quan)-31 b(tities)415
+b(not)e(in)g(the)f(call)i(list.)623 b(These)412 b(include)h(the)g
+(curren)-31 b(t)412 b(stepsize,)424 b(the)10814 68997
+y(error)471 b(w)-31 b(eigh)g(ts,)501 b(etc.)803 b(T)-92
+b(o)473 b(obtain)h(these,)499 b(use)472 b(the)h Fy(IDAGet*)g
+FA(functions)h(describ)31 b(ed)471 b(in)i Fs(x)p FA(5.4.7.)10814
+70325 y(The)369 b(unit)h(roundo\256)f(can)h(b)31 b(e)369
+b(accessed)f(as)h Fy(UNIT)p 31494 70325 V 419 w(ROUNDOFF)i
+FA(de\257ned)d(in)i Fy(sundialstypes.h)p FA(.)4000 74321
+y Ft(5.5.4)1495 b(Jacobian)500 b(information)g(\(direct)f(metho)42
+b(d)499 b(with)g(banded)g(Jacobian\))4000 76539 y FA(If)406
+b(the)h(direct)g(linear)g(solv)-31 b(er)407 b(with)g(banded)g(treatmen)
+-31 b(t)409 b(of)e(the)f(Jacobian)i(is)f(used)e(\(i.e.)606
+b Fy(IDABand)407 b FA(is)g(called)h(in)4000 77867 y(Step)369
+b(7)h(of)g Fs(x)p FA(5.3\),)h(the)e(user)g(ma)-31 b(y)370
+b(pro)-31 b(vide)370 b(a)f(function)i(of)f(t)-31 b(yp)31
+b(e)369 b Fy(IDABandJacFn)i FA(de\257ned)e(as)g(follo)-31
+b(ws:)p Black Black eop
+%%Page: 52 60
+52 59 bop Black 0 2701 a FB(52)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black 0 5965 7727 45 v 0 7306
+45 1341 v 376 6974 a Fy(IDABandJacFn)p 7682 7306 V 0
+7350 7727 45 v Black 0 8705 a FA(De\257nition)p Black
+2034 w Fy(typedef)582 b(int)g(\(*IDABandJacFn\)\()r(long)g(int)f(Neq,)h
+(long)g(int)g(mupper,)23086 10034 y(long)g(int)f(mlower,)i(realtype)f
+(tt,)23086 11362 y(N)p 23737 11362 349 45 v 419 w(Vector)g(yy,)f(N)p
+31129 11362 V 419 w(Vector)h(yp,)g(N)p 38522 11362 V
+418 w(Vector)g(rr,)23086 12690 y(realtype)g(c)p 28967
+12690 V 419 w(j,)g(void)f(*jac)p 36359 12690 V 419 w(data,)23086
+14019 y(BandMat)h(Jac,)23086 15347 y(N)p 23737 15347
+V 419 w(Vector)g(tmp1,)g(N)p 32292 15347 V 418 w(Vector)g(tmp2,)23086
+16676 y(N)p 23737 16676 V 419 w(Vector)g(tmp3\);)p Black
+0 18464 a FA(Purp)31 b(ose)p Black 2884 w(This)370 b(function)g
+(computes)g(the)g(banded)f(Jacobian)i(\(or)e(a)h(banded)f(appro)-31
+b(ximation)373 b(to)d(it\).)p Black 0 20242 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(Neq)p Black 3297 w FA(is)369
+b(the)g(problem)h(size.)p Black 6814 21794 a Fy(mlower)p
+Black Black 6814 23347 a(mupper)p Black 1554 w FA(are)f(the)g(lo)-31
+b(w)g(er)371 b(and)e(upp)31 b(er)368 b(half)j(bandwidth)f(of)g(the)g
+(Jacobian.)p Black 6814 24900 a Fy(tt)p Black 3878 w
+FA(is)f(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370 b(of)g(the)f(indep)
+31 b(enden)-31 b(t)370 b(v)-61 b(ariable.)p Black 6814
+26453 a Fy(yy)p Black 3878 w FA(is)369 b(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)g(the)f(dep)31 b(enden)-31
+b(t)369 b(v)-61 b(ariable)371 b(v)-31 b(ector,)370 b
+Fp(y)40 b FA(\()p Fp(t)p FA(\).)p Black 6814 28006 a
+Fy(yp)p Black 3878 w FA(is)369 b(the)g(curren)-31 b(t)369
+b(v)-61 b(alue)370 b(of)g Fp(y)23427 27604 y Fo(0)23737
+28006 y FA(\()p Fp(t)p FA(\).)p Black 6814 29559 a Fy(rr)p
+Black 3878 w FA(is)f(the)g(curren)-31 b(t)369 b(v)-61
+b(alue)370 b(of)g(the)f(v)-31 b(ector)370 b Fp(F)154
+b FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)31918 29157 y
+Fo(0)32229 29559 y FA(\).)p Black 6814 31112 a Fy(c)p
+7465 31112 V 419 w(j)p Black 3459 w FA(is)348 b(the)h(scalar)g(in)g
+(the)g(system)g(Jacobian,)354 b(prop)31 b(ortional)351
+b(to)e(the)g(in)-31 b(v)g(erse)349 b(of)g(the)g(step)11854
+32440 y(size.)p Black 6814 33993 a Fy(jac)p 8627 33993
+V 419 w(data)p Black 554 w FA(is)422 b(a)g(p)31 b(oin)-31
+b(ter)423 b(to)f(user)f(data)i(-)f(the)g(same)h(as)f(the)g
+Fy(jac)p 35003 33993 V 419 w(data)g FA(parameter)h(passed)e(to)11854
+35322 y Fy(IDABandSetJacData)p FA(.)p Black 6814 36874
+a Fy(Jac)p Black 3297 w FA(is)369 b(the)g(output)i(Jacobian)g(matrix.)p
+Black 6814 38427 a Fy(tmp1)p Black Black 6814 39980 a(tmp2)p
+Black Black 6814 41533 a(tmp3)p Black 2716 w FA(are)d(p)31
+b(oin)-31 b(ters)369 b(to)g(memory)g(allo)31 b(cated)371
+b(for)e(v)-61 b(ariables)369 b(of)g(t)-31 b(yp)31 b(e)369
+b Fy(N)p 38970 41533 V 418 w(Vector)g FA(whic)-31 b(h)370
+b(can)11854 42862 y(b)31 b(e)369 b(used)f(b)-31 b(y)370
+b Fy(IDABandJacFn)g FA(as)f(temp)31 b(orary)370 b(storage)h(or)e(w)-31
+b(ork)370 b(space.)p Black 0 44639 a(Return)f(v)-61 b(alue)p
+Black 554 w(A)535 b Fy(IDABandJacFn)h FA(function)h(t)-31
+b(yp)31 b(e)535 b(should)g(return)g(0)g(if)h(successful,)576
+b(a)535 b(p)31 b(ositiv)-31 b(e)537 b(v)-61 b(alue)535
+b(if)h(a)6814 45967 y(reco)-31 b(v)g(erable)370 b(error)e(o)31
+b(ccured,)369 b(or)g(a)h(negativ)-31 b(e)371 b(v)-61
+b(alue)370 b(if)g(a)f(nonreco)-31 b(v)g(erable)371 b(error)d(o)31
+b(ccured.)6814 47745 y(In)505 b(the)h(case)f(of)i(a)f(reco)-31
+b(v)g(erable)506 b(eror)f(return,)540 b(the)506 b(in)-31
+b(tegrator)507 b(will)h(attempt)f(to)g(reco)-31 b(v)g(er)506
+b(b)-31 b(y)6814 49073 y(reducing)369 b(the)h(stepsize,)f(and)h(hence)f
+(c)-31 b(hanging)371 b Fp(\256)i FA(in)d(\(3.5\).)p Black
+0 50851 a(Notes)p Black 4072 w(A)588 b(user-supplied)f(band)i(Jacobian)
+g(function)h(m)-31 b(ust)589 b(load)g(the)f(band)h(matrix)g
+Fy(Jac)g FA(of)f(t)-31 b(yp)31 b(e)6814 52179 y Fy(BandMat)380
+b FA(with)h(the)f(elemen)-31 b(ts)381 b(of)f(the)g(Jacobian)h
+Fp(J)106 b FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)31771
+51777 y Fo(0)32083 52179 y FA(\))380 b(at)h(the)f(p)31
+b(oin)-31 b(t)380 b(\()p Fy(tt)p FA(,)k Fy(yy)p FA(,)f
+Fy(yp)p FA(\).)524 b(Only)6814 53507 y(nonzero)375 b(elemen)-31
+b(ts)376 b(need)f(to)h(b)31 b(e)374 b(loaded)i(in)-31
+b(to)377 b Fy(Jac)e FA(b)31 b(ecause)375 b Fy(Jac)g FA(is)g(preset)f
+(to)i(zero)f(b)31 b(efore)375 b(the)6814 54836 y(call)370
+b(to)g(the)g(Jacobian)h(function.)6814 56613 y(The)340
+b(accessor)f(macros)h Fy(BAND)p 19414 56613 V 419 w(ELEM)p
+FA(,)g Fy(BAND)p 25128 56613 V 419 w(COL)p FA(,)h(and)e
+Fy(BAND)p 32384 56613 V 419 w(COL)p 34546 56613 V 419
+w(ELEM)h FA(allo)-31 b(w)342 b(the)e(user)f(to)h(read)6814
+57942 y(and)365 b(write)g(band)g(matrix)h(elemen)-31
+b(ts)365 b(without)i(making)g(sp)31 b(eci\257c)364 b(references)f(to)i
+(the)g(underlying)6814 59270 y(represen)-31 b(tation)446
+b(of)g(the)g Fy(BandMat)g FA(t)-31 b(yp)31 b(e.)721 b
+Fy(BAND)p 27504 59270 V 419 w(ELEM\(Jac,)583 b(i,)e(j\))445
+b FA(references)f(the)i(\()p Fy(i)p FA(,)465 b Fy(j)p
+FA(\)th)6814 60598 y(elemen)-31 b(t)502 b(of)e(the)h(band)f(matrix)i
+Fy(Jac)p FA(,)534 b(coun)-31 b(ting)502 b(from)f(0.)886
+b(This)501 b(macro)g(is)f(for)g(use)g(in)g(small)6814
+61927 y(problems)295 b(in)f(whic)-31 b(h)296 b(e\261ciency)f(of)g
+(access)f(is)g(not)h(a)g(ma)61 b(jor)296 b(concern.)468
+b(Th)-31 b(us,)310 b(in)294 b(terms)h(of)f(indices)6814
+63255 y Fp(m)403 b FA(and)g Fp(n)h FA(running)f(from)h(1)f(to)h
+Fy(Neq)g FA(with)g(\()p Fp(m;)184 b(n)p FA(\))406 b(within)e(the)g
+(band)f(de\257ned)g(b)-31 b(y)404 b Fy(mupper)g FA(and)6814
+64583 y Fy(mlower)p FA(,)310 b(the)293 b(Jacobian)i(elemen)-31
+b(t)295 b Fp(J)21927 64749 y Fm(m;n)23871 64583 y FA(can)f(b)31
+b(e)292 b(loaded)j(with)g(the)e(statemen)-31 b(t)296
+b Fy(BAND)p 42421 64583 V 419 w(ELEM\(Jac,)6814 65912
+y(m-1,)582 b(n-1\))f(=)405 b Fp(J)14225 66078 y Fm(m;n)15876
+65912 y FA(.)599 b(The)405 b(elemen)-31 b(ts)406 b(within)h(the)e(band)
+g(are)g(those)g(with)h Fy(-mupper)f Fs(\267)g Fy(m-n)g
+Fs(\267)6814 67240 y Fy(mlower)p FA(.)627 b(Alternativ)-31
+b(ely)-92 b(,)429 b Fy(BAND)p 20606 67240 V 419 w(COL\(Jac,)582
+b(j\))414 b FA(returns)f(a)h(p)31 b(oin)-31 b(ter)414
+b(to)h(the)f(diagonal)i(elemen)-31 b(t)6814 68568 y(of)346
+b(the)f Fy(j)p FA(th)g(column)h(of)g Fy(Jac)p FA(,)351
+b(and)345 b(if)g(w)-31 b(e)346 b(assign)f(this)h(address)e(to)i
+Fy(realtype)582 b(*col)p 42378 68568 V 419 w(j)p FA(,)350
+b(then)c(the)6814 69897 y Fy(i)p FA(th)474 b(elemen)-31
+b(t)476 b(of)e(the)g Fy(j)p FA(th)h(column)g(is)e(giv)-31
+b(en)476 b(b)-31 b(y)474 b Fy(BAND)p 30814 69897 V 419
+w(COL)p 32976 69897 V 419 w(ELEM\(col)p 38043 69897 V
+419 w(j,)582 b(i,)f(j\))p FA(,)501 b(coun)-31 b(ting)6814
+71225 y(from)504 b(0.)896 b(Th)-31 b(us)503 b(for)h(\()p
+Fp(m;)184 b(n)p FA(\))505 b(within)g(the)f(band,)538
+b Fp(J)29056 71391 y Fm(m;n)31210 71225 y FA(can)504
+b(b)31 b(e)503 b(loaded)h(b)-31 b(y)504 b(setting)h Fy(col)p
+45908 71225 V 419 w(n)581 b(=)6814 72553 y(BAND)p 9208
+72553 V 419 w(COL\(Jac,)h(n-1\);)511 b(BAND)p 20597 72553
+V 419 w(COL)p 22759 72553 V 418 w(ELEM\(col)p 27825 72553
+V 420 w(n,)582 b(m-1,)f(n-1\))h(=)463 b Fp(J)37388 72719
+y Fm(m;n)39039 72553 y FA(.)773 b(The)463 b(elemen)-31
+b(ts)464 b(of)6814 73882 y(the)426 b Fy(j)p FA(th)f(column)i(can)f
+(also)g(b)31 b(e)425 b(accessed)g(via)h(ordinary)g(arra)-31
+b(y)426 b(indexing,)441 b(but)426 b(this)g(approac)-31
+b(h)6814 75210 y(requires)540 b(kno)-31 b(wledge)544
+b(of)d(the)h(underlying)g(storage)g(for)f(a)h(band)f(matrix)i(of)f(t)
+-31 b(yp)31 b(e)541 b Fy(BandMat)p FA(.)6814 76539 y(The)413
+b(arra)-31 b(y)413 b Fy(col)p 13886 76539 V 419 w(n)f
+FA(can)h(b)31 b(e)412 b(indexed)h(from)g Fs(\241)p Fy(mupper)g
+FA(to)h Fy(mlower)p FA(.)623 b(F)-92 b(or)412 b(large)h(problems,)425
+b(it)413 b(is)6814 77867 y(more)338 b(e\261cien)-31 b(t)340
+b(to)f(use)f(the)g(com)-31 b(bination)342 b(of)d Fy(BAND)p
+28588 77867 V 419 w(COL)f FA(and)g Fy(BAND)p 35533 77867
+V 420 w(COL)p 37696 77867 V 418 w(ELEM)h FA(than)g(to)g(use)f(the)p
+Black Black eop
+%%Page: 53 61
+53 60 bop Black 4000 2701 a FB(5.5)425 b(User-supplied)h(functions)
+31554 b(53)p 4000 3144 48001 45 v Black 10814 6974 a
+Fy(BAND)p 13208 6974 349 45 v 419 w(ELEM)p FA(.)369 b(As)f(in)h(the)f
+(dense)g(case,)h(these)f(macros)g(all)i(n)-31 b(um)g(b)31
+b(er)368 b(ro)-31 b(ws)369 b(and)f(columns)h(starting)10814
+8302 y(from)h(0,)g(not)g(1.)10814 10188 y(The)331 b Fy(BandMat)h
+FA(t)-31 b(yp)31 b(e)331 b(and)g(the)g(accessor)f(macros)h
+Fy(BAND)p 34220 10188 V 419 w(ELEM)p FA(,)h Fy(BAND)p
+39926 10188 V 419 w(COL)p FA(,)g(and)f Fy(BAND)p 47165
+10188 V 419 w(COL)p 49327 10188 V 418 w(ELEM)10814 11516
+y FA(are)369 b(do)31 b(cumen)-31 b(ted)370 b(in)g Fs(x)p
+FA(8.2.)10814 13402 y(If)415 b(the)g(user's)g Fy(IDABandJacFn)h
+FA(function)h(uses)d(di\256erence)h(quotien)-31 b(t)417
+b(appro)-31 b(ximations,)431 b(it)416 b(ma)-31 b(y)10814
+14731 y(need)412 b(to)h(access)f(quan)-31 b(tities)415
+b(not)e(in)g(the)f(call)i(list.)623 b(These)412 b(include)h(the)g
+(curren)-31 b(t)412 b(stepsize,)424 b(the)10814 16059
+y(error)471 b(w)-31 b(eigh)g(ts,)501 b(etc.)803 b(T)-92
+b(o)473 b(obtain)h(these,)499 b(use)472 b(the)h Fy(IDAGet*)g
+FA(functions)h(describ)31 b(ed)471 b(in)i Fs(x)p FA(5.4.7.)10814
+17387 y(The)369 b(unit)h(roundo\256)f(can)h(b)31 b(e)369
+b(accessed)f(as)h Fy(UNIT)p 31494 17387 V 419 w(ROUNDOFF)i
+FA(de\257ned)d(in)i Fy(sundialstypes.h)p FA(.)4000 21190
+y Ft(5.5.5)1495 b(Jacobian)500 b(information)g(\(SPGMR)d(matrix-v)-42
+b(ector)501 b(pro)42 b(duct\))4000 23340 y FA(If)442
+b(an)h(iterativ)-31 b(e)445 b Fx(spgmr)d FA(linear)h(solv)-31
+b(er)443 b(is)g(selected)g(\()p Fy(IDASpgmr)h FA(is)f(called)h(in)f
+(step)f(7)h(of)h Fs(x)p FA(5.3\))g(the)f(user)f(ma)-31
+b(y)4000 24669 y(pro)g(vide)370 b(a)f(function)i(of)f(t)-31
+b(yp)31 b(e)369 b Fy(IDASpgmrJacTimesVecFn)j FA(in)e(the)f(follo)-31
+b(wing)373 b(form:)p 4000 26842 12957 45 v 4000 28428
+45 1587 v 4376 27850 a Fy(IDASpgmrJacTimesVecFn)p 16913
+28428 V 4000 28472 12957 45 v Black 4000 29970 a FA(De\257nition)p
+Black 2034 w Fy(typedef)582 b(int)g(\(*IDASpgmrJacTimesVecFn\)\()s
+(realtype)h(tt,)32316 31299 y(N)p 32967 31299 349 45
+v 419 w(Vector)f(yy,)g(N)p 40360 31299 V 418 w(Vector)g(yp,)g(N)p
+47752 31299 V 418 w(Vector)h(rr,)32316 32627 y(N)p 32967
+32627 V 419 w(Vector)f(v,)g(N)p 39779 32627 V 418 w(Vector)g(Jv,)32316
+33955 y(realtype)h(c)p 38198 33955 V 418 w(j,)f(void)g(*jac)p
+45590 33955 V 419 w(data,)32316 35284 y(N)p 32967 35284
+V 419 w(Vector)g(tmp1,)g(N)p 41522 35284 V 419 w(Vector)g(tmp2\);)p
+Black 4000 37181 a FA(Purp)31 b(ose)p Black 2884 w(This)366
+b(function)g(computes)g(the)g(pro)31 b(duct)365 b(of)h(the)g(problem)g
+(Jacobian)h(and)e(the)h(v)-31 b(ector)366 b Fy(v)f FA(\(or)h(an)10814
+38509 y(appro)-31 b(ximation)373 b(to)d(it\).)p Black
+4000 40395 a(Argumen)-31 b(ts)p Black Black 1517 w Fy(tt)p
+Black 3878 w FA(is)369 b(the)g(curren)-31 b(t)369 b(v)-61
+b(alue)370 b(of)g(the)f(indep)31 b(enden)-31 b(t)370
+b(v)-61 b(ariable.)p Black 10814 42002 a Fy(yy)p Black
+3878 w FA(is)369 b(the)g(curren)-31 b(t)369 b(v)-61 b(alue)370
+b(of)g(the)f(dep)31 b(enden)-31 b(t)369 b(v)-61 b(ariable)371
+b(v)-31 b(ector,)370 b Fp(y)40 b FA(\()p Fp(t)p FA(\).)p
+Black 10814 43609 a Fy(yp)p Black 3878 w FA(is)369 b(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)g Fp(y)27427 43207 y
+Fo(0)27737 43609 y FA(\()p Fp(t)p FA(\).)p Black 10814
+45216 a Fy(rr)p Black 3878 w FA(is)f(the)g(curren)-31
+b(t)369 b(v)-61 b(alue)370 b(of)g(the)f(v)-31 b(ector)370
+b Fp(F)154 b FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)35918
+44814 y Fo(0)36229 45216 y FA(\).)p Black 10814 46823
+a Fy(v)p Black 4459 w FA(is)369 b(the)g(v)-31 b(ector)370
+b(b)-31 b(y)370 b(whic)-31 b(h)370 b(the)f(Jacobian)i(m)-31
+b(ust)370 b(b)31 b(e)369 b(m)-31 b(ultiplied)372 b(to)e(the)f(righ)-31
+b(t.)p Black 10814 48430 a Fy(Jv)p Black 3878 w FA(is)369
+b(the)g(output)i(v)-31 b(ector)370 b(computed.)p Black
+10814 50037 a Fy(c)p 11465 50037 V 419 w(j)p Black 3459
+w FA(is)348 b(the)h(scalar)g(in)g(the)g(system)g(Jacobian,)354
+b(prop)31 b(ortional)351 b(to)e(the)g(in)-31 b(v)g(erse)349
+b(of)g(the)g(step)15854 51366 y(size.)p Black 10814 52973
+a Fy(jac)p 12627 52973 V 419 w(data)p Black 554 w FA(is)422
+b(a)g(p)31 b(oin)-31 b(ter)423 b(to)f(user)f(data)i(-)f(the)g(same)h
+(as)f(the)g Fy(jac)p 39003 52973 V 419 w(data)g FA(parameter)h(passed)e
+(to)15854 54301 y Fy(IDASpgmrSetJacData)p FA(.)p Black
+10814 55908 a Fy(tmp1)p Black Black 10814 57515 a(tmp2)p
+Black 2716 w FA(are)368 b(p)31 b(oin)-31 b(ters)369 b(to)g(memory)g
+(allo)31 b(cated)371 b(for)e(v)-61 b(ariables)369 b(of)g(t)-31
+b(yp)31 b(e)369 b Fy(N)p 42970 57515 V 418 w(Vector)g
+FA(whic)-31 b(h)370 b(can)15854 58844 y(b)31 b(e)369
+b(used)f(b)-31 b(y)370 b Fy(IDASpgmrJacTimesVecFn)i FA(as)d(temp)31
+b(orary)370 b(storage)g(or)f(w)-31 b(ork)370 b(space.)p
+Black 4000 60730 a(Return)f(v)-61 b(alue)p Black 554
+w(The)321 b(v)-61 b(alue)322 b(to)g(b)31 b(e)321 b(returned)g(b)-31
+b(y)321 b(the)h(Jacobian)h(times)f(v)-31 b(ector)322
+b(function)g(should)g(b)31 b(e)321 b(0)g(if)h(success-)10814
+62058 y(ful.)493 b(A)369 b(nonzero)h(v)-61 b(alue)369
+b(indicates)i(that)f(a)g(nonreco)-31 b(v)g(erable)370
+b(error)f(o)31 b(ccurred.)10814 63944 y(If)497 b(the)h(user's)f
+Fy(IDASpgmrJacTimesVecFn)k FA(function)e(uses)e(di\256erence)g(quotien)
+-31 b(t)500 b(appro)-31 b(xima-)10814 65272 y(tions,)518
+b(it)488 b(ma)-31 b(y)488 b(need)f(to)h(access)e(quan)-31
+b(tities)490 b(not)d(in)h(the)f(call)h(list.)848 b(These)486
+b(include)i(the)f(cur-)10814 66601 y(ren)-31 b(t)541
+b(stepsize,)585 b(the)541 b(error)g(w)-31 b(eigh)g(ts,)586
+b(etc.)1009 b(T)-92 b(o)542 b(obtain)h(these,)585 b(use)540
+b(the)i Fy(IDAGet*)g FA(functions)10814 67929 y(describ)31
+b(ed)414 b(in)i Fs(x)p FA(5.4.7.)634 b(The)415 b(unit)h(roundo\256)g
+(can)f(b)31 b(e)415 b(accessed)g(as)g Fy(UNIT)p 41805
+67929 V 419 w(ROUNDOFF)h FA(de\257ned)g(in)10814 69257
+y Fy(sundialstypes.h)p FA(.)4000 73060 y Ft(5.5.6)1495
+b(Preconditioning)501 b(\(SPGMR)c(linear)i(system)g(solution\))4000
+75210 y FA(If)539 b(preconditioning)j(is)d(used,)582
+b(then)540 b(the)f(user)g(m)-31 b(ust)540 b(pro)-31 b(vide)540
+b(a)f Fx(C)h FA(function)g(to)h(solv)-31 b(e)540 b(the)f(linear)i
+(system)4000 76539 y Fp(P)154 b(z)470 b FA(=)423 b Fp(r)469
+b FA(where)438 b Fp(P)592 b FA(ma)-31 b(y)439 b(b)31
+b(e)438 b(either)g(a)h(left)g(or)f(a)h(righ)-31 b(t)439
+b(preconditioner)g(matrix.)701 b(This)439 b(function)h(m)-31
+b(ust)439 b(b)31 b(e)437 b(of)4000 77867 y(t)-31 b(yp)31
+b(e)370 b Fy(IDASpgmrPrecSolveFn)p FA(,)i(de\257ned)d(as)g(follo)-31
+b(ws:)p Black Black eop
+%%Page: 54 62
+54 61 bop Black 0 2701 a FB(54)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black 0 5965 11795 45 v 0 7552
+45 1587 v 376 6974 a Fy(IDASpgmrPrecSolveFn)p 11750 7552
+V 0 7596 11795 45 v Black 0 9040 a FA(De\257nition)p
+Black 2034 w Fy(typedef)582 b(int)g(\(*IDASpgmrPrecSolveFn\)\()s
+(realtype)h(tt,)27154 10368 y(N)p 27805 10368 349 45
+v 419 w(Vector)f(yy,)f(N)p 35197 10368 V 419 w(Vector)h(yp,)g(N)p
+42590 10368 V 418 w(Vector)g(rr,)27154 11696 y(N)p 27805
+11696 V 419 w(Vector)g(rvec,)g(N)p 36360 11696 V 418
+w(Vector)g(zvec,)27154 13025 y(realtype)h(c)p 33036 13025
+V 418 w(j,)f(realtype)g(delta,)27154 14353 y(void)g(*prec)p
+33035 14353 V 419 w(data,)g(N)p 37522 14353 V 419 w(Vector)g(tmp\);)p
+Black 0 16080 a FA(Purp)31 b(ose)p Black 2884 w(This)370
+b(function)g(solv)-31 b(es)370 b(the)f(preconditioning)j(system)d
+Fp(P)154 b(z)356 b FA(=)307 b Fp(r)31 b FA(.)p Black
+0 17857 a(Argumen)-31 b(ts)p Black Black 1517 w Fy(tt)p
+Black 4459 w FA(is)369 b(the)h(curren)-31 b(t)368 b(v)-61
+b(alue)370 b(of)g(the)f(indep)31 b(enden)-31 b(t)370
+b(v)-61 b(ariable.)p Black 6814 19410 a Fy(yy)p Black
+4459 w FA(is)369 b(the)h(curren)-31 b(t)368 b(v)-61 b(alue)370
+b(of)g(the)f(dep)31 b(enden)-31 b(t)369 b(v)-61 b(ariable)371
+b(v)-31 b(ector,)370 b Fp(y)40 b FA(\()p Fp(t)p FA(\).)p
+Black 6814 20963 a Fy(yp)p Black 4459 w FA(is)369 b(the)h(curren)-31
+b(t)368 b(v)-61 b(alue)370 b(of)g Fp(y)24008 20561 y
+Fo(0)24318 20963 y FA(\()p Fp(t)p FA(\).)p Black 6814
+22515 a Fy(rr)p Black 4459 w FA(is)f(the)h(curren)-31
+b(t)368 b(v)-61 b(alue)370 b(of)g(the)f(v)-31 b(ector)370
+b Fp(F)154 b FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)32499
+22114 y Fo(0)32810 22515 y FA(\).)p Black 6814 24068
+a Fy(rvec)p Black 3297 w FA(is)369 b(the)h(righ)-31 b(t-hand)370
+b(side)f(v)-31 b(ector)370 b(of)g(the)f(linear)h(system.)p
+Black 6814 25621 a Fy(zvec)p Black 3297 w FA(is)f(the)h(output)g(v)-31
+b(ector)370 b(computed.)p Black 6814 27173 a Fy(c)p 7465
+27173 V 419 w(j)p Black 4040 w FA(is)303 b(the)h(scalar)f(in)h(the)f
+(system)g(Jacobian,)319 b(prop)31 b(ortional)305 b(to)f(the)f(in)-31
+b(v)g(erse)304 b(of)f(the)h(step)12435 28502 y(size.)p
+Black 6814 30055 a Fy(delta)p Black 2716 w FA(is)258
+b(an)g(input)g(tolerance)h(to)g(b)31 b(e)257 b(used)g(if)h(an)g
+(iterativ)-31 b(e)260 b(metho)31 b(d)259 b(is)e(emplo)-31
+b(y)g(ed)260 b(in)e(the)g(so-)12435 31383 y(lution.)474
+b(In)306 b(that)j(case,)320 b(the)307 b(residual)h(v)-31
+b(ector)308 b Fp(R)9 b(es)307 b FA(=)g Fp(r)153 b Fs(\241)122
+b Fp(P)154 b(z)355 b FA(of)308 b(the)f(system)g(should)12435
+32711 y(b)31 b(e)409 b(made)h(less)f(than)h Fy(delta)g
+FA(in)f(w)-31 b(eigh)g(ted)412 b Fp(l)31308 32877 y Fn(2)32214
+32711 y FA(norm,)420 b(i.e.,)37606 31792 y Fl(p)p 38713
+31792 8052 45 v 89 x(P)39881 33043 y Fm(i)40250 32711
+y FA(\()p Fp(R)9 b(es)42564 32877 y Fm(i)43178 32711
+y Fs(\242)247 b Fp(ew)30 b(t)45469 32877 y Fm(i)45838
+32711 y FA(\))46268 32391 y Fn(2)47139 32711 y Fp(<)12435
+34040 y(del)22 b(ta)p FA(.)493 b(T)-92 b(o)370 b(obtain)h(the)e
+Fy(N)p 23294 34040 349 45 v 419 w(Vector)h(ewt)p FA(,)f(call)i
+Fy(IDAGetErrWeights)g FA(\(see)e Fs(x)p FA(5.4.7\).)p
+Black 6814 35592 a Fy(prec)p 9208 35592 V 419 w(data)p
+Black 554 w FA(is)339 b(a)g(p)31 b(oin)-31 b(ter)340
+b(to)f(user)f(data)i(-)f(the)g(same)h(as)e(the)i Fy(prec)p
+35252 35592 V 419 w(data)f FA(parameter)h(passed)e(to)12435
+36921 y(the)369 b(function)i Fy(IDASpgmrSetPrecData)p
+FA(.)p Black 6814 38473 a Fy(tmp)p Black 3878 w FA(is)306
+b(a)f(p)31 b(oin)-31 b(ter)307 b(to)f(memory)h(allo)31
+b(cated)308 b(for)d(a)h(v)-61 b(ariable)307 b(of)f(t)-31
+b(yp)31 b(e)306 b Fy(N)p 39095 38473 V 419 w(Vector)g
+FA(whic)-31 b(h)307 b(can)12435 39802 y(b)31 b(e)369
+b(used)f(for)i(w)-31 b(ork)370 b(space.)p Black 0 41579
+a(Return)f(v)-61 b(alue)p Black 554 w(The)520 b(v)-61
+b(alue)520 b(to)h(b)31 b(e)519 b(returned)g(b)-31 b(y)520
+b(the)g(preconditioner)g(solv)-31 b(e)521 b(function)g(is)f(a)g(\260ag)
+g(indicating)6814 42907 y(whether)252 b(it)h(w)-31 b(as)253
+b(successful.)453 b(This)253 b(v)-61 b(alue)252 b(should)h(b)31
+b(e)252 b(0)g(if)h(successful,)275 b(p)31 b(ositiv)-31
+b(e)254 b(for)e(a)h(reco)-31 b(v)g(erable)6814 44236
+y(error)398 b(\(in)i(whic)-31 b(h)400 b(case)f(the)h(step)f(will)i(b)31
+b(e)399 b(retried\),)407 b(negativ)-31 b(e)402 b(for)d(an)h(unreco)-31
+b(v)g(erable)400 b(error)e(\(in)6814 45564 y(whic)-31
+b(h)370 b(case)f(the)h(in)-31 b(tegration)372 b(is)d(halted\).)0
+48679 y Ft(5.5.7)1495 b(Preconditioning)501 b(\(SPGMR)c(Jacobian)i
+(data\))0 50727 y FA(If)432 b(the)g(user's)g(preconditioner)h(requires)
+e(that)j(an)-31 b(y)433 b(Jacobian)g(related)g(data)h(b)31
+b(e)431 b(ev)-61 b(aluated)434 b(or)e(prepro)31 b(cessed,)0
+52056 y(then)370 b(this)h(needs)f(to)h(b)31 b(e)370 b(done)g(in)h(a)f
+(user-supplied)g Fx(C)g FA(function)i(of)f(t)-31 b(yp)31
+b(e)370 b Fy(IDASpgmrPrecSetupFn)p FA(,)k(de\257ned)c(as)0
+53384 y(follo)-31 b(ws:)p 0 55269 11795 45 v 0 56855
+45 1587 v 376 56277 a Fy(IDASpgmrPrecSetupFn)p 11750
+56855 V 0 56899 11795 45 v Black 0 58343 a FA(De\257nition)p
+Black 2034 w Fy(typedef)582 b(int)g(\(*IDASpgmrPrecSetupFn\)\()s
+(realtype)h(tt,)27154 59672 y(N)p 27805 59672 349 45
+v 419 w(Vector)f(yy,)f(N)p 35197 59672 V 419 w(Vector)h(yp,)g(N)p
+42590 59672 V 418 w(Vector)g(rr,)27154 61000 y(realtype)h(c)p
+33036 61000 V 418 w(j,)f(void)f(*prec)p 41008 61000 V
+419 w(data,)27154 62328 y(N)p 27805 62328 V 419 w(Vector)h(tmp1,)g(N)p
+36360 62328 V 418 w(Vector)g(tmp2,)27154 63657 y(N)p
+27805 63657 V 419 w(Vector)g(tmp3\);)p Black 0 65445
+a FA(Purp)31 b(ose)p Black 2884 w(This)337 b(function)h(ev)-61
+b(aluates)338 b(and/or)g(prepro)31 b(cesses)335 b(Jacobian)j(related)g
+(data)g(needed)e(b)-31 b(y)337 b(the)g(pre-)6814 66773
+y(conditioner.)p Black 0 68550 a(Argumen)-31 b(ts)p Black
+1517 w(The)369 b(argumen)-31 b(ts)371 b(of)e(an)h Fy
+(IDASpgmrPrecSetupFn)i FA(are)d(as)g(follo)-31 b(ws:)p
+Black 6814 70328 a Fy(tt)p Black 4459 w FA(is)369 b(the)h(curren)-31
+b(t)368 b(v)-61 b(alue)370 b(of)g(the)f(indep)31 b(enden)-31
+b(t)370 b(v)-61 b(ariable.)p Black 6814 71880 a Fy(yy)p
+Black 4459 w FA(is)369 b(the)h(curren)-31 b(t)368 b(v)-61
+b(alue)370 b(of)g(the)f(dep)31 b(enden)-31 b(t)369 b(v)-61
+b(ariable)371 b(v)-31 b(ector,)370 b Fp(y)40 b FA(\()p
+Fp(t)p FA(\).)p Black 6814 73433 a Fy(yp)p Black 4459
+w FA(is)369 b(the)h(curren)-31 b(t)368 b(v)-61 b(alue)370
+b(of)g Fp(y)24008 73031 y Fo(0)24318 73433 y FA(\()p
+Fp(t)p FA(\).)p Black 6814 74986 a Fy(rr)p Black 4459
+w FA(is)f(the)h(curren)-31 b(t)368 b(v)-61 b(alue)370
+b(of)g(the)f(v)-31 b(ector)370 b Fp(F)154 b FA(\()p Fp(t;)184
+b(y)40 b(;)184 b(y)32499 74584 y Fo(0)32810 74986 y FA(\).)p
+Black 6814 76539 a Fy(c)p 7465 76539 V 419 w(j)p Black
+4040 w FA(is)303 b(the)h(scalar)f(in)h(the)f(system)g(Jacobian,)319
+b(prop)31 b(ortional)305 b(to)f(the)f(in)-31 b(v)g(erse)304
+b(of)f(the)h(step)12435 77867 y(size.)p Black Black eop
+%%Page: 55 63
+55 62 bop Black 4000 2701 a FB(5.6)425 b(A)g(parallel)e(band-blo)35
+b(c)-35 b(k-diagonal)426 b(preconditioner)h(mo)35 b(dule)14578
+b(55)p 4000 3144 48001 45 v Black Black 10814 6974 a
+Fy(prec)p 13208 6974 349 45 v 419 w(data)p Black 554
+w FA(is)370 b(a)g(p)31 b(oin)-31 b(ter)370 b(to)h(user)d(data,)k(the)e
+(same)g(as)f(the)h Fy(prec)p 39159 6974 V 419 w(data)g
+FA(parameter)h(passed)e(to)16435 8302 y Fy(IDASpgmrSetPrecData)p
+FA(.)p Black 10814 9949 a Fy(tmp1)p Black Black 10814
+11596 a(tmp2)p Black Black 10814 13243 a(tmp3)p Black
+3297 w FA(are)315 b(p)31 b(oin)-31 b(ters)316 b(to)h(memory)f(allo)31
+b(cated)318 b(for)e(v)-61 b(ariables)316 b(of)g(t)-31
+b(yp)31 b(e)316 b Fy(N)p 43075 13243 V 419 w(Vector)g
+FA(whic)-31 b(h)317 b(can)16435 14571 y(b)31 b(e)369
+b(used)f(b)-31 b(y)370 b Fy(IDASpgmrPrecSetupFn)i FA(as)d(temp)31
+b(orary)370 b(storage)g(or)f(w)-31 b(ork)370 b(space.)p
+Black 4000 16537 a(Return)f(v)-61 b(alue)p Black 554
+w(The)501 b(v)-61 b(alue)501 b(to)h(b)31 b(e)500 b(returned)g(b)-31
+b(y)501 b(the)g(preconditioner)h(setup)f(function)h(is)f(a)g(\260ag)g
+(indicating)10814 17865 y(whether)252 b(it)h(w)-31 b(as)253
+b(successful.)453 b(This)253 b(v)-61 b(alue)252 b(should)h(b)31
+b(e)252 b(0)g(if)h(successful,)275 b(p)31 b(ositiv)-31
+b(e)254 b(for)e(a)h(reco)-31 b(v)g(erable)10814 19193
+y(error)398 b(\(in)i(whic)-31 b(h)400 b(case)f(the)h(step)f(will)i(b)31
+b(e)399 b(retried\),)407 b(negativ)-31 b(e)402 b(for)d(an)h(unreco)-31
+b(v)g(erable)400 b(error)e(\(in)10814 20522 y(whic)-31
+b(h)370 b(case)f(the)h(in)-31 b(tegration)372 b(is)d(halted\).)p
+Black 4000 22487 a(Notes)p Black 4072 w(The)292 b(op)31
+b(erations)294 b(p)31 b(erformed)291 b(b)-31 b(y)293
+b(this)f(function)i(migh)-31 b(t)294 b(include)f(forming)g(a)g(crude)e
+(appro)-31 b(ximate)10814 23816 y(Jacobian,)371 b(and)f(p)31
+b(erforming)370 b(an)f(LU)g(factorization)k(on)c(the)h(resulting)g
+(appro)-31 b(ximation.)10814 25781 y(Eac)g(h)399 b(call)g(to)f(the)g
+(preconditioner)h(setup)f(function)h(is)f(preceded)f(b)-31
+b(y)398 b(a)g(call)h(to)g(the)f Fy(IDAResFn)10814 27109
+y FA(user)422 b(function)j(with)g(the)f(same)g(\()p Fy(tt)p
+FA(,)438 b Fy(yy)p FA(,)g Fy(yp)p FA(\))424 b(argumen)-31
+b(ts.)657 b(Th)-31 b(us)423 b(the)h(preconditioner)h(setup)10814
+28438 y(function)337 b(can)e(use)g(an)-31 b(y)336 b(auxiliary)h(data)f
+(that)h(is)e(computed)h(and)g(sa)-31 b(v)g(ed)336 b(during)f(the)g(ev)
+-61 b(aluation)10814 29766 y(of)370 b(the)f(D)-31 b(AE)370
+b(residual.)10814 31732 y(This)285 b(function)h(is)f(not)g(called)h(in)
+f(adv)-61 b(ance)285 b(of)g(ev)-31 b(ery)285 b(call)h(to)f(the)g
+(preconditioner)h(solv)-31 b(e)286 b(function,)10814
+33060 y(but)491 b(rather)g(is)g(called)i(only)f(as)f(often)h(as)f
+(needed)g(to)h(ac)-31 b(hiev)g(e)492 b(con)-31 b(v)g(ergence)493
+b(in)e(the)g(Newton)10814 34388 y(iteration.)10814 36354
+y(If)358 b(the)g(user's)e Fy(IDASpgmrPrecSetupFn)361
+b FA(function)e(uses)e(di\256erence)g(quotien)-31 b(t)360
+b(appro)-31 b(ximations,)10814 37682 y(it)307 b(ma)-31
+b(y)308 b(need)f(to)g(access)f(quan)-31 b(tities)309
+b(not)e(in)g(the)g(call)h(list.)473 b(These)306 b(include)h(the)g
+(curren)-31 b(t)306 b(stepsize,)10814 39011 y(the)335
+b(error)f(w)-31 b(eigh)g(ts,)344 b(etc.)482 b(T)-92 b(o)335
+b(obtain)i(these,)342 b(use)335 b(the)g Fy(IDAGet*)h
+FA(functions)g(describ)31 b(ed)334 b(in)h Fs(x)p FA(5.4.7.)10814
+40339 y(The)369 b(unit)h(roundo\256)f(can)h(b)31 b(e)369
+b(accessed)f(as)h Fy(UNIT)p 31494 40339 V 419 w(ROUNDOFF)i
+FA(de\257ned)d(in)i Fy(sundialstypes.h)p FA(.)4000 44515
+y Fu(5.6)1793 b(A)598 b(parallel)g(band-blo)50 b(c)-50
+b(k-diagonal)598 b(preconditioner)i(mo)50 b(dule)4000
+47120 y FA(A)267 b(principal)i(reason)e(for)g(using)g(a)h(parallel)h(D)
+-31 b(AE)267 b(solv)-31 b(er)268 b(suc)-31 b(h)267 b(as)g
+Fx(id)-25 b(a)267 b FA(lies)g(in)h(the)f(solution)i(of)f(partial)h
+(di\256eren)-31 b(tial)4000 48449 y(equations)439 b(\(PDEs\).)696
+b(Moreo)-31 b(v)g(er,)455 b(the)437 b(use)g(of)g(a)g(Krylo)-31
+b(v)438 b(iterativ)-31 b(e)440 b(metho)31 b(d)437 b(for)g(the)h
+(solution)g(of)g(man)-31 b(y)438 b(suc)-31 b(h)4000 49777
+y(problems)334 b(is)f(motiv)-61 b(ated)336 b(b)-31 b(y)334
+b(the)g(nature)f(of)h(the)g(underlying)h(linear)f(system)g(of)g
+(equations)h(\(3.4\))g(that)g(m)-31 b(ust)334 b(b)31
+b(e)4000 51106 y(solv)-31 b(ed)354 b(at)g(eac)-31 b(h)354
+b(time)g(step.)488 b(The)353 b(linear)h(algebraic)h(system)f(is)f
+(large,)358 b(sparse,)e(and)d(structured.)487 b(Ho)-31
+b(w)g(ev)g(er,)359 b(if)354 b(a)4000 52434 y(Krylo)-31
+b(v)402 b(iterativ)-31 b(e)403 b(metho)31 b(d)402 b(is)f(to)g(b)31
+b(e)401 b(e\256ectiv)-31 b(e)402 b(in)f(this)g(setting,)411
+b(then)401 b(a)g(non)-31 b(trivial)404 b(preconditioner)e(needs)e(to)
+4000 53762 y(b)31 b(e)363 b(used.)491 b(Otherwise,)365
+b(the)g(rate)f(of)g(con)-31 b(v)g(ergence)365 b(of)f(the)g(Krylo)-31
+b(v)365 b(iterativ)-31 b(e)366 b(metho)31 b(d)365 b(is)f(usually)h
+(unacceptably)4000 55091 y(slo)-31 b(w.)494 b(Unfortunately)-92
+b(,)372 b(an)d(e\256ectiv)-31 b(e)370 b(preconditioner)h(tends)e(to)h
+(b)31 b(e)368 b(problem-sp)31 b(eci\257c.)5660 56516
+y(Ho)-31 b(w)g(ev)g(er,)352 b(w)-31 b(e)345 b(ha)-31
+b(v)g(e)346 b(dev)-31 b(elop)31 b(ed)346 b(one)f(t)-31
+b(yp)31 b(e)345 b(of)g(preconditioner)h(that)g(treats)f(a)g(rather)g
+(broad)g(class)f(of)i(PDE-)4000 57844 y(based)484 b(problems.)840
+b(It)484 b(has)h(b)31 b(een)484 b(successfully)g(used)g(for)h(sev)-31
+b(eral)485 b(realistic,)515 b(large-scale)486 b(problems)f([12)r(])g
+(and)4000 59173 y(is)514 b(included)h(in)g(a)g(soft)-31
+b(w)g(are)516 b(mo)31 b(dule)515 b(within)h(the)f Fx(id)-25
+b(a)514 b FA(pac)-31 b(k)-61 b(age.)930 b(This)515 b(mo)31
+b(dule)515 b(w)-31 b(orks)515 b(with)g(the)g(parallel)4000
+60501 y(v)-31 b(ector)508 b(mo)31 b(dule)509 b Fx(nvector)p
+16233 60501 368 45 v 441 w(p)-74 b(arallel)508 b FA(and)g(generates)g
+(a)g(preconditioner)h(that)f(is)g(a)g(blo)31 b(c)-31
+b(k-diagonal)511 b(ma-)4000 61829 y(trix)451 b(with)g(eac)-31
+b(h)451 b(blo)31 b(c)-31 b(k)451 b(b)31 b(eing)450 b(a)h(band)f
+(matrix.)737 b(The)451 b(blo)31 b(c)-31 b(ks)450 b(need)g(not)h(ha)-31
+b(v)g(e)451 b(the)g(same)f(n)-31 b(um)g(b)31 b(er)450
+b(of)h(sup)31 b(er-)4000 63158 y(and)480 b(sub-diagonals)h(and)f(these)
+f(n)-31 b(um)g(b)31 b(ers)479 b(ma)-31 b(y)481 b(v)-61
+b(ary)479 b(from)i(blo)31 b(c)-31 b(k)480 b(to)g(blo)31
+b(c)-31 b(k.)825 b(This)480 b(Band-Blo)31 b(c)-31 b(k-Diagonal)4000
+64486 y(Preconditioner)371 b(mo)31 b(dule)370 b(is)f(called)h
+Fx(id)-25 b(abbdpre)p FA(.)5660 65912 y(One)385 b(w)-31
+b(a)g(y)386 b(to)f(en)-31 b(vision)386 b(these)f(preconditioners)g(is)g
+(to)g(think)h(of)f(the)g(domain)h(of)f(the)g(computational)k(PDE)4000
+67240 y(problem)442 b(as)f(b)31 b(eing)442 b(sub)31 b(divided)442
+b(in)-31 b(to)443 b Fp(M)562 b FA(non-o)-31 b(v)g(erlapping)444
+b(sub-domains.)710 b(Eac)-31 b(h)442 b(of)g(these)g(sub-domains)g(is)
+4000 68568 y(then)492 b(assigned)h(to)g(one)f(of)h(the)f
+Fp(M)613 b FA(pro)31 b(cessors)491 b(to)i(b)31 b(e)491
+b(used)h(to)h(solv)-31 b(e)493 b(the)f(D)-31 b(AE)492
+b(system.)862 b(The)493 b(basic)f(idea)4000 69897 y(is)470
+b(to)g(isolate)i(the)e(preconditioning)j(so)c(that)i(it)g(is)f(lo)31
+b(cal)471 b(to)g(eac)-31 b(h)470 b(pro)31 b(cessor,)494
+b(and)470 b(also)h(to)g(use)e(a)h(\(p)31 b(ossibly)4000
+71225 y(c)-31 b(heap)31 b(er\))463 b(appro)-31 b(ximate)466
+b(residual)d(function.)775 b(This)463 b(requires)f(the)h(de\257nition)i
+(of)e(a)g(new)g(function)i Fp(G)p FA(\()p Fp(t;)184 b(y)40
+b(;)184 b(y)51258 70823 y Fo(0)51570 71225 y FA(\))4000
+72553 y(whic)-31 b(h)477 b(appro)-31 b(ximates)478 b(the)e(function)i
+Fp(F)154 b FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)24516
+72152 y Fo(0)24827 72553 y FA(\))476 b(in)h(the)f(de\257nition)h(of)g
+(the)f(D)-31 b(AE)476 b(system)h(\(3.1\).)815 b(Ho)-31
+b(w)g(ev)g(er,)4000 73882 y(the)387 b(user)e(ma)-31 b(y)388
+b(set)e Fp(G)337 b FA(=)f Fp(F)154 b FA(.)543 b(Corresp)31
+b(onding)388 b(to)f(the)f(domain)i(decomp)31 b(osition,)394
+b(there)386 b(is)h(a)f(decomp)31 b(osition)389 b(of)4000
+75210 y(the)451 b(solution)i(v)-31 b(ector)452 b Fp(y)490
+b FA(in)-31 b(to)452 b Fp(M)572 b FA(disjoin)-31 b(t)452
+b(blo)31 b(c)-31 b(ks)452 b Fp(y)26675 75376 y Fm(m)27516
+75210 y FA(,)471 b(and)451 b(a)h(decomp)31 b(osition)453
+b(of)f Fp(G)f FA(in)-31 b(to)452 b(blo)31 b(c)-31 b(ks)452
+b Fp(G)48208 75376 y Fm(m)49049 75210 y FA(.)738 b(The)4000
+76539 y(blo)31 b(c)-31 b(k)388 b Fp(G)7809 76705 y Fm(m)9037
+76539 y FA(dep)31 b(ends)386 b(on)i Fp(y)15434 76705
+y Fm(m)16661 76539 y FA(and)f(also)h(on)g(comp)31 b(onen)-31
+b(ts)388 b(of)g Fp(y)30559 76705 y Fm(m)31345 76483 y
+Fj(0)32086 76539 y FA(asso)31 b(ciated)388 b(with)g(neigh)-31
+b(b)31 b(oring)389 b(sub-domains)4000 77867 y(\(so-called)316
+b(ghost-cell)f(data\).)476 b(Let)390 b(\271)-629 b Fp(y)19576
+78033 y Fm(m)20730 77867 y FA(denote)315 b Fp(y)24785
+78033 y Fm(m)25939 77867 y FA(augmen)-31 b(ted)316 b(with)f(those)f
+(other)g(comp)31 b(onen)-31 b(ts)315 b(on)f(whic)-31
+b(h)315 b Fp(G)51159 78033 y Fm(m)p Black Black eop
+%%Page: 56 64
+56 63 bop Black 0 2701 a FB(56)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black 0 6974 a FA(dep)31 b(ends.)492
+b(Then)369 b(w)-31 b(e)370 b(ha)-31 b(v)g(e)12803 9349
+y Fp(G)p FA(\()p Fp(t;)184 b(y)40 b FA(\))309 b(=)e([)p
+Fp(G)18661 9515 y Fn(1)19159 9349 y FA(\()p Fp(t;)261
+b FA(\271)-630 b Fp(y)21023 9515 y Fn(1)21520 9349 y
+FA(\))p Fp(;)184 b(G)23311 9515 y Fn(2)23810 9349 y FA(\()p
+Fp(t;)261 b FA(\271)-630 b Fp(y)25674 9515 y Fn(2)26171
+9349 y FA(\))p Fp(;)184 b(:)g(:)g(:)k(;)c(G)29930 9515
+y Fm(M)30914 9349 y FA(\()p Fp(t;)262 b FA(\271)-631
+b Fp(y)32778 9515 y Fm(M)33762 9349 y FA(\)])34499 8892
+y Fm(T)45725 9349 y FA(\(5.1\))0 11725 y(and)369 b(eac)-31
+b(h)370 b(of)g(the)f(blo)31 b(c)-31 b(ks)370 b Fp(G)12038
+11891 y Fm(m)12879 11725 y FA(\()p Fp(t;)261 b FA(\271)-630
+b Fp(y)14743 11891 y Fm(m)15585 11725 y FA(\))369 b(is)h(uncoupled)f
+(from)h(the)g(others.)1660 13053 y(The)g(preconditioner)g(asso)31
+b(ciated)371 b(with)f(this)g(decomp)31 b(osition)371
+b(has)e(the)h(form)17937 15428 y Fp(P)461 b FA(=)308
+b Fp(diag)40 b FA([)p Fp(P)23406 15594 y Fn(1)23903 15428
+y Fp(;)184 b(P)25105 15594 y Fn(2)25602 15428 y Fp(;)g(:)g(:)g(:)k(;)c
+(P)28772 15594 y Fm(M)29755 15428 y FA(])15663 b(\(5.2\))0
+17804 y(where)16507 19132 y Fp(P)17218 19298 y Fm(m)18366
+19132 y Fs(\274)308 b Fp(@)61 b(G)21054 19298 y Fm(m)21895
+19132 y Fp(=@)g(y)23640 19298 y Fm(m)24727 19132 y FA(+)246
+b Fp(\256)t(@)61 b(G)28065 19298 y Fm(m)28907 19132 y
+Fp(=@)g(y)30692 18675 y Fo(0)30652 19406 y Fm(m)45725
+19132 y FA(\(5.3\))0 21088 y(This)336 b(matrix)h(is)f(tak)-31
+b(en)336 b(to)h(b)31 b(e)335 b(banded,)343 b(with)337
+b(upp)31 b(er)334 b(and)i(lo)-31 b(w)g(er)337 b(half-bandwidths)h
+Fy(mudq)e FA(and)g Fy(mldq)g FA(de\257ned)f(as)0 22417
+y(the)394 b(n)-31 b(um)g(b)31 b(er)394 b(of)g(non-zero)g(diagonals)j
+(ab)31 b(o)-31 b(v)g(e)395 b(and)f(b)31 b(elo)-31 b(w)395
+b(the)f(main)h(diagonal,)403 b(resp)31 b(ectiv)-31 b(ely)-92
+b(.)567 b(The)394 b(di\256erence)0 23745 y(quotien)-31
+b(t)337 b(appro)-31 b(ximation)339 b(is)334 b(computed)i(using)g
+Fy(mudq)f FA(+)g Fy(mldq)g FA(+2)g(ev)-61 b(aluations)337
+b(of)e Fp(G)36773 23911 y Fm(m)37615 23745 y FA(,)342
+b(but)335 b(only)h(a)f(matrix)h(of)0 25074 y(bandwidth)371
+b Fy(mukeep)f FA(+)f Fy(mlkeep)h FA(+1)f(is)g(retained.)1660
+26402 y(Neither)k(pair)f(of)h(parameters)g(need)e(b)31
+b(e)372 b(the)g(true)g(half-bandwidths)j(of)e(the)f(Jacobians)h(of)g
+(the)f(lo)31 b(cal)374 b(blo)31 b(c)-31 b(k)0 27730 y(of)379
+b Fp(G)p FA(,)j(if)e(smaller)f(v)-61 b(alues)379 b(pro)-31
+b(vide)380 b(a)f(more)g(e\261cien)-31 b(t)380 b(preconditioner.)523
+b(Suc)-31 b(h)379 b(an)g(e\261ciency)h(gain)g(ma)-31
+b(y)380 b(o)31 b(ccur)378 b(if)0 29059 y(the)414 b(couplings)i(in)e
+(the)g(D)-31 b(AE)415 b(system)f(outside)h(a)f(certain)h(bandwidth)h
+(are)d(considerably)j(w)-31 b(eak)g(er)415 b(than)f(those)0
+30387 y(within)f(the)e(band.)618 b(Reducing)412 b Fy(mukeep)g
+FA(and)f Fy(mlkeep)h FA(while)g(k)-31 b(eeping)412 b
+Fy(mudq)g FA(and)f Fy(mldq)g FA(at)h(their)f(true)g(v)-61
+b(alues,)0 31715 y(discards)409 b(the)g(elemen)-31 b(ts)410
+b(outside)h(the)e(narro)-31 b(w)g(er)410 b(band.)613
+b(Reducing)409 b(b)31 b(oth)410 b(pairs)f(has)g(the)h(additional)i
+(e\256ect)d(of)0 33044 y(lumping)491 b(the)e(outer)g(Jacobian)i(elemen)
+-31 b(ts)490 b(in)-31 b(to)490 b(the)g(computed)g(elemen)-31
+b(ts)490 b(within)g(the)g(band,)519 b(and)490 b(requires)0
+34372 y(more)369 b(caution)i(and)f(exp)31 b(erimen)-31
+b(tation.)1660 35700 y(The)370 b(solution)h(of)f(the)f(complete)i
+(linear)f(system)22276 38076 y Fp(P)154 b(x)307 b FA(=)g
+Fp(b)20001 b FA(\(5.4\))0 40451 y(reduces)368 b(to)i(solving)h(eac)-31
+b(h)369 b(of)h(the)g(equations)21092 42826 y Fp(P)21803
+42992 y Fm(m)22643 42826 y Fp(x)23276 42992 y Fm(m)24424
+42826 y FA(=)308 b Fp(b)26068 42992 y Fm(m)45725 42826
+y FA(\(5.5\))0 45202 y(and)369 b(this)h(is)f(done)h(b)-31
+b(y)369 b(banded)g(LU)g(factorization)k(of)d Fp(P)23773
+45368 y Fm(m)24982 45202 y FA(follo)-31 b(w)g(ed)372
+b(b)-31 b(y)370 b(a)f(banded)h(bac)-31 b(ksolv)g(e.)1660
+46530 y(Similar)312 b(blo)31 b(c)-31 b(k-diagonal)314
+b(preconditioners)d(could)g(b)31 b(e)309 b(considered)h(with)h
+(di\256eren)-31 b(t)310 b(treatmen)-31 b(t)312 b(of)f(the)f(blo)31
+b(c)-31 b(ks)0 47858 y Fp(P)711 48024 y Fm(m)1552 47858
+y FA(.)882 b(F)-92 b(or)499 b(example,)534 b(incomplete)501
+b(LU)e(factorization)k(or)c(an)h(iterativ)-31 b(e)501
+b(metho)31 b(d)501 b(could)f(b)31 b(e)498 b(used)h(instead)h(of)0
+49187 y(banded)369 b(LU)g(factorization.)1660 50515 y(The)438
+b Fx(id)-25 b(abbdpre)438 b FA(mo)31 b(dule)439 b(calls)f(t)-31
+b(w)g(o)440 b(user-pro)-31 b(vided)437 b(functions)i(to)f(construct)g
+Fp(P)154 b FA(:)628 b(a)438 b(required)f(function)0 51843
+y Fy(Gres)296 b FA(\(of)h(t)-31 b(yp)31 b(e)297 b Fy(IDABBDLocalFn)p
+FA(\))h(whic)-31 b(h)297 b(appro)-31 b(ximates)298 b(the)e(residual)g
+(function)i Fp(G)p FA(\()p Fp(t;)184 b(y)40 b FA(\))309
+b Fs(\274)e Fp(F)154 b FA(\()p Fp(t;)184 b(y)40 b FA(\))297
+b(and)f(whic)-31 b(h)0 53172 y(is)264 b(computed)i(lo)31
+b(cally)-92 b(,)288 b(and)265 b(an)g(optional)i(function)f
+Fy(Gcomm)f FA(\(of)g(t)-31 b(yp)31 b(e)265 b Fy(IDABBDCommFn)p
+FA(\))i(whic)-31 b(h)265 b(p)31 b(erforms)264 b(all)i(in)-31
+b(ter-)0 54500 y(pro)31 b(cess)370 b(comm)-31 b(unication)375
+b(necessary)c(to)h(ev)-61 b(aluate)372 b(the)g(appro)-31
+b(ximate)374 b(residual)e Fp(G)p FA(.)499 b(These)371
+b(are)g(in)h(addition)h(to)0 55828 y(the)446 b(user-supplied)g
+(residual)g(function)h Fy(res)p FA(.)723 b(Both)447 b(functions)g(tak)
+-31 b(e)447 b(as)f(input)g(the)h(same)f(p)31 b(oin)-31
+b(ter)447 b Fy(res)p 45327 55828 349 45 v 418 w(data)0
+57157 y FA(as)404 b(passed)g(b)-31 b(y)404 b(the)h(user)e(to)i
+Fy(IDASetRdata)h FA(and)e(passed)g(to)h(the)g(user's)e(function)j
+Fy(res)p FA(,)413 b(and)405 b(neither)f(function)0 58485
+y(has)430 b(a)h(return)f(v)-61 b(alue.)677 b(The)431
+b(user)f(is)g(resp)31 b(onsible)430 b(for)h(pro)-31 b(viding)432
+b(space)f(\(presumably)g(within)h Fy(res)p 43140 58485
+V 419 w(data)p FA(\))g(for)0 59814 y(comp)31 b(onen)-31
+b(ts)370 b(of)e Fy(yy)h FA(and)f Fy(yp)h FA(that)g(are)f(comm)-31
+b(unicated)371 b(b)-31 b(y)369 b Fy(Gcomm)g FA(from)f(the)h(other)g
+(pro)31 b(cessors,)367 b(and)h(that)i(are)0 61142 y(then)f(used)g(b)-31
+b(y)369 b Fy(Gres)p FA(,)h(whic)-31 b(h)371 b(is)e(not)h(exp)31
+b(ected)369 b(to)h(do)f(an)-31 b(y)370 b(comm)-31 b(unication.)p
+0 63000 8308 45 v 0 64341 45 1341 v 376 64009 a Fy(IDABBDLocalFn)p
+8263 64341 V 0 64385 8308 45 v Black 0 65737 a FA(De\257nition)p
+Black 2034 w Fy(typedef)582 b(void)g(\(*IDABBDLocalFn\)\()r(long)g(int)
+g(Nlocal,)g(realtype)g(tt,)24248 67066 y(N)p 24899 67066
+349 45 v 419 w(Vector)g(yy,)g(N)p 32292 67066 V 418 w(Vector)g(yp,)g(N)
+p 39684 67066 V 418 w(Vector)g(gval,)24248 68394 y(void)g(*res)p
+29548 68394 V 419 w(data\);)p Black 0 70166 a FA(Purp)31
+b(ose)p Black 2884 w(This)423 b(function)g(computes)g
+Fp(G)p FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)22610 69764
+y Fo(0)22922 70166 y FA(\).)652 b(It)423 b(loads)g(the)f(v)-31
+b(ector)423 b Fy(gval)g FA(as)f(a)h(function)g(of)g Fy(tt)p
+FA(,)436 b Fy(yy)p FA(,)6814 71495 y(and)369 b Fy(yp)p
+FA(.)p Black 0 73254 a(Argumen)-31 b(ts)p Black Black
+1517 w Fy(Nlocal)p Black 1554 w FA(is)369 b(the)g(lo)31
+b(cal)371 b(v)-31 b(ector)370 b(length.)p Black 6814
+74791 a Fy(tt)p Black 3878 w FA(is)f(the)g(v)-61 b(alue)370
+b(of)g(the)f(indep)31 b(enden)-31 b(t)370 b(v)-61 b(ariable.)p
+Black 6814 76329 a Fy(yy)p Black 3878 w FA(is)369 b(the)g(dep)31
+b(enden)-31 b(t)370 b(v)-61 b(ariable.)p Black 6814 77867
+a Fy(yp)p Black 3878 w FA(is)369 b(the)g(deriv)-61 b(ativ)-31
+b(e)371 b(of)f(the)f(dep)31 b(enden)-31 b(t)370 b(v)-61
+b(ariable.)p Black Black eop
+%%Page: 57 65
+57 64 bop Black 4000 2701 a FB(5.6)425 b(A)g(parallel)e(band-blo)35
+b(c)-35 b(k-diagonal)426 b(preconditioner)h(mo)35 b(dule)14578
+b(57)p 4000 3144 48001 45 v Black Black 10814 6974 a
+Fy(gval)p Black 2716 w FA(is)369 b(the)g(output)i(v)-31
+b(ector.)p Black 10814 8438 a Fy(res)p 12627 8438 349
+45 v 419 w(data)p Black 554 w FA(is)422 b(a)g(p)31 b(oin)-31
+b(ter)423 b(to)f(user)f(data)i(-)f(the)g(same)h(as)f(the)g
+Fy(res)p 39003 8438 V 419 w(data)g FA(parameter)h(passed)e(to)15854
+9766 y Fy(IDASetRdata)p FA(.)p Black 4000 11451 a(Return)369
+b(v)-61 b(alue)p Black 554 w(An)369 b Fy(IDABBDLocalFn)i
+FA(function)g(t)-31 b(yp)31 b(e)369 b(do)31 b(es)369
+b(not)h(ha)-31 b(v)g(e)370 b(a)g(return)e(v)-61 b(alue.)p
+Black 4000 13137 a(Notes)p Black 4072 w(This)406 b(function)g(assumes)f
+(that)i(all)g(in)-31 b(ter-pro)31 b(cessor)404 b(comm)-31
+b(unication)410 b(of)405 b(data)i(needed)e(to)h(cal-)10814
+14465 y(culate)370 b Fy(gval)g FA(has)f(already)h(b)31
+b(een)369 b(done,)h(and)f(this)h(data)g(is)f(accessible)h(within)h
+Fy(res)p 46411 14465 V 419 w(data)p FA(.)10814 16151
+y(The)e(case)g(where)g Fp(G)h FA(is)f(mathematically)374
+b(iden)-31 b(tical)371 b(to)f Fp(F)523 b FA(is)369 b(allo)-31
+b(w)g(ed.)p 4000 18345 7727 45 v 4000 19686 45 1341 v
+4376 19354 a Fy(IDABBDCommFn)p 11682 19686 V 4000 19730
+7727 45 v Black 4000 21082 a FA(De\257nition)p Black
+2034 w Fy(typedef)582 b(void)g(\(*IDABBDCommFn\)\()r(long)g(int)g
+(Nlocal,)g(realtype)g(tt,)27667 22411 y(N)p 28318 22411
+349 45 v 419 w(Vector)g(yy,)g(N)p 35711 22411 V 418 w(Vector)g(yp,)g
+(void)f(*res)p 47751 22411 V 419 w(data\);)p Black 4000
+24046 a FA(Purp)31 b(ose)p Black 2884 w(This)309 b(function)h(p)31
+b(erforms)309 b(all)h(in)-31 b(ter-pro)31 b(cessor)308
+b(comm)-31 b(unications)312 b(necessary)c(for)h(the)g(execution)10814
+25374 y(of)370 b(the)f Fy(Gres)h FA(function)g(ab)31
+b(o)-31 b(v)g(e,)371 b(using)f(the)f(input)h(v)-31 b(ectors)370
+b Fy(yy)f FA(and)g Fy(yp)p FA(.)p Black 4000 27059 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(Nlocal)p Black 1554 w FA(is)369
+b(the)g(lo)31 b(cal)371 b(v)-31 b(ector)370 b(length.)p
+Black 10814 28523 a Fy(tt)p Black 3878 w FA(is)f(the)g(v)-61
+b(alue)370 b(of)g(the)f(indep)31 b(enden)-31 b(t)370
+b(v)-61 b(ariable.)p Black 10814 29987 a Fy(yy)p Black
+3878 w FA(is)369 b(the)g(dep)31 b(enden)-31 b(t)370 b(v)-61
+b(ariable.)p Black 10814 31451 a Fy(yp)p Black 3878 w
+FA(is)369 b(the)g(deriv)-61 b(ativ)-31 b(e)371 b(of)f(the)f(dep)31
+b(enden)-31 b(t)370 b(v)-61 b(ariable.)p Black 10814
+32915 a Fy(res)p 12627 32915 V 419 w(data)p Black 554
+w FA(is)422 b(a)g(p)31 b(oin)-31 b(ter)423 b(to)f(user)f(data)i(-)f
+(the)g(same)h(as)f(the)g Fy(res)p 39003 32915 V 419 w(data)g
+FA(parameter)h(passed)e(to)15854 34244 y Fy(IDASetRdata)p
+FA(.)p Black 4000 35929 a(Return)369 b(v)-61 b(alue)p
+Black 554 w(An)369 b Fy(IDABBDCommFn)i FA(function)g(t)-31
+b(yp)31 b(e)369 b(do)31 b(es)369 b(not)h(ha)-31 b(v)g(e)370
+b(a)g(return)e(v)-61 b(alue.)p Black 4000 37614 a(Notes)p
+Black 4072 w(The)439 b Fy(Gcomm)h FA(function)h(is)e(exp)31
+b(ected)439 b(to)h(sa)-31 b(v)g(e)440 b(comm)-31 b(unicated)442
+b(data)f(in)e(space)g(de\257ned)g(within)10814 38943
+y(the)369 b(structure)g Fy(res)p 19281 38943 V 419 w(data)p
+FA(.)10814 40628 y(Eac)-31 b(h)328 b(call)g(to)g(the)g
+Fy(Gcomm)f FA(function)i(is)e(preceded)f(b)-31 b(y)328
+b(a)f(call)i(to)f(the)f(residual)h(function)g Fy(res)g
+FA(with)10814 41956 y(the)358 b(same)g(\()p Fy(tt)p FA(,)k
+Fy(yy)p FA(,)e Fy(yp)p FA(\))f(argumen)-31 b(ts.)490
+b(Th)-31 b(us)358 b Fy(Gcomm)h FA(can)f(omit)h(an)-31
+b(y)359 b(comm)-31 b(unications)361 b(done)e(b)-31 b(y)10814
+43285 y Fy(res)424 b FA(if)g(relev)-61 b(an)-31 b(t)424
+b(to)h(the)f(ev)-61 b(aluation)426 b(of)e Fy(Gres)p FA(.)656
+b(If)424 b(all)h(necessary)d(com)-31 b(unication)427
+b(w)-31 b(as)425 b(done)f(in)10814 44613 y Fy(res)p FA(,)370
+b(then)f Fy(Gcomm)h FA(=)f Fy(NULL)h FA(can)f(b)31 b(e)369
+b(passed)f(in)i(the)f(call)i(to)f Fy(IDABBDPrecAlloc)h
+FA(\(see)e(b)31 b(elo)-31 b(w\).)5660 46341 y(Besides)422
+b(the)g(header)g(\257les)g(required)g(for)g(the)g(in)-31
+b(tegration)425 b(of)e(the)f(D)-31 b(AE)422 b(problem)h(\(see)f
+Fs(x)p FA(5.2\),)437 b(to)423 b(use)f(the)4000 47670
+y Fx(id)-25 b(abbdpre)314 b FA(mo)31 b(dule,)325 b(the)314
+b(main)g(program)g(m)-31 b(ust)313 b(include)h(the)f(header)g(\257le)g
+Fy(idabbdpre.h)i FA(whic)-31 b(h)314 b(declares)f(the)4000
+48998 y(needed)369 b(function)h(protot)-31 b(yp)31 b(es.)5660
+50326 y(The)428 b(follo)-31 b(wing)431 b(is)d(a)f(summary)i(of)f(the)f
+(usage)h(of)g(this)g(mo)31 b(dule)428 b(and)g(describ)31
+b(es)426 b(the)i(sequence)f(of)h(calls)h(in)4000 51655
+y(the)326 b(user)e(main)j(program.)479 b(Steps)325 b(that)i(are)e(unc)
+-31 b(hanged)327 b(from)f(the)g(user)e(main)j(program)f(presen)-31
+b(ted)325 b(in)h Fs(x)p FA(5.3)h(are)4000 52983 y(gra)-31
+b(y)g(ed-out.)p Black 4553 54854 a(1.)p Black 0.5 0.5 0.5
+TeXcolorrgb 493 w FB(Initialize)423 b(MPI)p Black Black
+4553 57093 a FA(2.)p Black 0.5 0.5 0.5 TeXcolorrgb 493
+w FB(Set)j(problem)f(dimensions)p Black Black 4553 59331
+a FA(3.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w FB(Set)h(v)-35
+b(ector)424 b(of)h(initial)e(v)-71 b(alues)p Black Black
+4553 61570 a FA(4.)p Black 0.5 0.5 0.5 TeXcolorrgb 493
+w FB(Create)426 b Fx(id)-25 b(a)425 b FB(ob)71 b(ject)p
+Black Black 4553 63809 a FA(5.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w FB(Set)426 b(optional)e(inputs)p Black Black 4553
+66048 a FA(6.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w FB(Allo)35
+b(cate)425 b(in)-35 b(ternal)425 b(memory)p Black Black
+4553 68287 a FA(7.)p Black 493 w FB(Initialize)e(the)i
+Fx(id)-25 b(abbdpre)426 b FB(preconditioner)g(mo)35 b(dule)5906
+70169 y FA(Sp)c(ecify)370 b(the)f(upp)31 b(er)369 b(and)g(lo)-31
+b(w)g(er)371 b(bandwidths)f Fy(mudq)p FA(,)g Fy(mldq)g
+FA(and)f Fy(mukeep)p FA(,)i Fy(mlkeep)e FA(and)h(call)5906
+72050 y Fy(bbd)p 7719 72050 V 419 w(data)582 b(=)f(IDABBDPrecAlloc\()s
+(ida)p 23248 72050 V 419 w(mem,)g(Nlocal,)i(mudq,)e(mldq,)21435
+73379 y(mukeep,)h(mlkeep,)g(dq)p 31965 73379 V 419 w(rel)p
+34127 73379 V 419 w(yy,)f(Gres,)h(Gcomm\);)5906 75210
+y FA(to)394 b(allo)31 b(cate)394 b(memory)g(for)e(and)h(initialize)i(a)
+e(data)g(structure)f Fy(bbd)p 34175 75210 V 419 w(data)h
+FA(to)g(b)31 b(e)391 b(passed)h(to)h(the)g Fx(id)-25
+b(aspgmr)5906 76539 y FA(linear)390 b(solv)-31 b(er.)551
+b(The)389 b(last)g(t)-31 b(w)g(o)391 b(argumen)-31 b(ts)389
+b(of)h Fy(IDABBDPrecAlloc)g FA(are)f(the)f(t)-31 b(w)g(o)391
+b(user-supplied)d(functions)5906 77867 y(describ)31 b(ed)369
+b(ab)31 b(o)-31 b(v)g(e.)p Black Black eop
+%%Page: 58 66
+58 65 bop Black 0 2701 a FB(58)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black Black 553 6974 a FA(8.)p
+Black 493 w FB(A)g(ttac)g(h)424 b(the)h Fx(id)-25 b(aspgmr)424
+b FB(linear)g(solv)-35 b(er)1906 8856 y Fy(flag)582 b(=)f
+(IDABBDSpgmr\(ida)p 14759 8856 349 45 v 421 w(mem,)h(maxl,)g(bbd)p
+23316 8856 V 419 w(data\);)1906 10738 y FA(The)371 b(function)h
+Fy(IDABBDSpgmr)f FA(is)g(a)f(wrapp)31 b(er)370 b(around)h(the)f
+Fx(id)-25 b(aspgmr)369 b FA(sp)31 b(eci\257cation)372
+b(function)g Fy(IDASpgmr)1906 12066 y FA(and)e(p)31 b(erforms)369
+b(the)g(follo)-31 b(wing)373 b(actions:)p Black 3788
+14472 a Fs(\262)p Black 1 w FA(A)-31 b(ttac)g(hes)370
+b(the)g Fx(id)-25 b(aspgmr)368 b FA(linear)i(solv)-31
+b(er)370 b(to)g(the)f(main)h Fx(id)-25 b(a)370 b FA(solv)-31
+b(er)369 b(memory;)p Black 3788 16325 a Fs(\262)p Black
+1 w FA(Sets)g(the)g(preconditioner)i(data)f(structure)f(for)g
+Fx(id)-25 b(abbdpre)p FA(;)p Black 3788 18178 a Fs(\262)p
+Black 1 w FA(Sets)369 b(the)g(preconditioner)i(setup)e(function)h(for)g
+Fx(id)-25 b(abbdpre)p FA(;)p Black 3788 20031 a Fs(\262)p
+Black 1 w FA(Sets)369 b(the)g(preconditioner)i(solv)-31
+b(e)370 b(function)g(for)g Fx(id)-25 b(abbdpre)p FA(;)p
+Black 553 22438 a(9.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w FB(Set)426 b(linear)e(solv)-35 b(er)425 b(optional)f(inputs)p
+Black 1906 24320 a FA(Note)279 b(that)g(the)g(user)d(should)j(not)f(o)
+-31 b(v)g(erwrite)280 b(the)e(preconditioner)h(data,)298
+b(setup)278 b(function,)298 b(or)278 b(solv)-31 b(e)278
+b(function)1906 25648 y(through)370 b(calls)g(to)g Fx(id)-25
+b(aspgmr)368 b FA(optional)k(input)e(functions.)p Black
+0 28054 a(10.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w FB(Adv)-71
+b(ance)426 b(solution)f(in)f(time)p Black Black 0 30461
+a FA(11.)p Black 0.5 0.5 0.5 TeXcolorrgb 493 w FB(Deallo)35
+b(cate)425 b(memory)h(for)f(solution)g(v)-35 b(ector)p
+Black Black 0 32867 a FA(12.)p Black 493 w FB(F)-106
+b(ree)426 b(the)f Fx(id)-25 b(abbdpre)425 b FB(data)f(structure)1906
+34749 y Fy(IDABBDPrecFree\(bbd)p 12434 34749 V 422 w(data\);)p
+Black 0 37155 a FA(13.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w FB(F)-106 b(ree)426 b(solv)-35 b(er)425 b(memory)p
+Black Black 0 39562 a FA(14.)p Black 0.5 0.5 0.5 TeXcolorrgb
+493 w FB(Finalize)f(MPI)p Black 0 41899 a FA(The)249
+b(three)g(user-callable)h(functions)g(that)g(initialize,)276
+b(attac)-31 b(h,)276 b(and)249 b(deallo)31 b(cate)251
+b(the)e Fx(id)-25 b(abbdpre)250 b FA(preconditioner)0
+43227 y(mo)31 b(dule)370 b(\(steps)f(7,)h(8,)g(and)g(12)g(ab)31
+b(o)-31 b(v)g(e\))370 b(are)f(describ)31 b(ed)369 b(next.)p
+0 45425 9470 45 v 0 46765 45 1341 v 376 46433 a Fy(IDABBDPrecAlloc)p
+9426 46765 V 0 46809 9470 45 v Black 0 48203 a FA(Call)p
+Black 4848 w Fy(bbd)p 8627 48203 349 45 v 419 w(data)582
+b(=)f(IDABBDPrecAlloc\()r(ida)p 24155 48203 V 419 w(mem,)h(Nlocal,)g
+(mudq,)g(mldq,)22342 49531 y(mukeep,)g(mlkeep,)h(dq)p
+32873 49531 V 418 w(rel)p 35034 49531 V 419 w(yy,)f(Gres,)g(Gcomm\);)p
+Black 0 51333 a FA(Description)p Black 1286 w(The)419
+b(function)i Fy(IDABBDPrecAlloc)g FA(initializes)h(and)d(allo)31
+b(cates)421 b(memory)g(for)e(the)g Fx(id)-25 b(abbdpre)6814
+52662 y FA(preconditioner.)p Black 0 54515 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(ida)p 8627 54515 V 419 w(mem)p
+Black 1553 w FA(\()p Fy(void)583 b(*)p FA(\))369 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)g Fx(id)-25 b(a)369 b
+FA(memory)h(blo)31 b(c)-31 b(k.)p Black 6814 56105 a
+Fy(Nlocal)p Black 1972 w FA(\()p Fy(long)583 b(int)p
+FA(\))369 b(lo)31 b(cal)371 b(v)-31 b(ector)370 b(dimension.)p
+Black 6814 57696 a Fy(mudq)p Black 3134 w FA(\()p Fy(long)583
+b(int)p FA(\))548 b(upp)31 b(er)546 b(half-bandwidth)k(to)e(b)31
+b(e)546 b(used)h(in)h(the)f(di\256erence-quotien)-31
+b(t)12272 59024 y(Jacobian)371 b(appro)-31 b(ximation.)p
+Black 6814 60615 a Fy(mldq)p Black 3134 w FA(\()p Fy(long)583
+b(int)p FA(\))352 b(lo)-31 b(w)g(er)353 b(half-bandwidth)h(to)e(b)31
+b(e)351 b(used)g(in)h(the)f(di\256erence-quotien)-31
+b(t)354 b(Ja-)12272 61943 y(cobian)371 b(appro)-31 b(ximation.)p
+Black 6814 63534 a Fy(mukeep)p Black 1972 w FA(\()p Fy(long)583
+b(int)p FA(\))335 b(upp)31 b(er)333 b(half-bandwidth)k(of)e(the)f
+(retained)h(banded)g(appro)-31 b(ximate)337 b(Ja-)12272
+64862 y(cobian)371 b(blo)31 b(c)-31 b(k.)p Black 6814
+66453 a Fy(mlkeep)p Black 1972 w FA(\()p Fy(long)583
+b(int)p FA(\))369 b(lo)-31 b(w)g(er)370 b(half-bandwidth)i(of)d(the)g
+(retained)h(banded)f(appro)-31 b(ximate)372 b(Ja-)12272
+67782 y(cobian)f(blo)31 b(c)-31 b(k.)p Black 6814 69372
+a Fy(dq)p 8046 69372 V 419 w(rel)p 10208 69372 V 419
+w(yy)p Black 553 w FA(\()p Fy(realtype)p FA(\))433 b(the)f(relativ)-31
+b(e)432 b(incremen)-31 b(t)432 b(in)g(comp)31 b(onen)-31
+b(ts)432 b(of)f Fy(y)g FA(used)g(in)g(the)g(di\256er-)12272
+70701 y(ence)345 b(quotien)-31 b(t)347 b(appro)-31 b(ximations.)488
+b(The)345 b(default)i(is)e Fy(dq)p 35561 70701 V 418
+w(rel)p 37722 70701 V 419 w(yy)p FA(=)40402 69757 y Fs(p)p
+41324 69757 6369 45 v 944 x FA(unit)370 b(roundo\256)q(,)12272
+72029 y(whic)-31 b(h)370 b(can)g(b)31 b(e)369 b(sp)31
+b(eci\257ed)368 b(b)-31 b(y)370 b(passing)f Fy(dq)p 30096
+72029 349 45 v 419 w(rel)p 32258 72029 V 419 w(yy)p FA(=)308
+b(0)p Fp(:)p FA(0.)p Black 6814 73620 a Fy(Gres)p Black
+3134 w FA(\()p Fy(IDABBDLocalFn)p FA(\))504 b(the)c Fx(C)h
+FA(function)g(whic)-31 b(h)502 b(computes)f(the)g(lo)31
+b(cal)502 b(residual)f(ap-)12272 74948 y(pro)-31 b(ximation)373
+b Fp(G)p FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)22335 74546
+y Fo(0)22647 74948 y FA(\).)p Black 6814 76539 a Fy(Gcomm)p
+Black 2553 w FA(\()p Fy(IDABBDCommFn)p FA(\))410 b(the)d(optional)j
+Fx(C)c FA(function)j(whic)-31 b(h)408 b(p)31 b(erforms)406
+b(all)i(in)-31 b(ter-pro)31 b(cess)12272 77867 y(comm)-31
+b(unication)373 b(required)c(for)g(the)h(computation)i(of)e
+Fp(G)p FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)39499 77465
+y Fo(0)39811 77867 y FA(\).)p Black Black eop
+%%Page: 59 67
+59 66 bop Black 4000 2701 a FB(5.6)425 b(A)g(parallel)e(band-blo)35
+b(c)-35 b(k-diagonal)426 b(preconditioner)h(mo)35 b(dule)14578
+b(59)p 4000 3144 48001 45 v Black Black 4000 6974 a FA(Return)369
+b(v)-61 b(alue)p Black 554 w(If)489 b(successful,)519
+b Fy(IDABBDPrecAlloc)491 b FA(returns)d(a)i(p)31 b(oin)-31
+b(ter)490 b(to)g(the)f(newly)i(created)e Fx(id)-25 b(abbdpre)10814
+8302 y FA(memory)306 b(blo)31 b(c)-31 b(k)306 b(\(of)h(t)-31
+b(yp)31 b(e)305 b Fy(void)582 b(*)p FA(\).)472 b(If)305
+b(an)h(error)e(o)31 b(ccurred,)317 b Fy(IDABBDPrecAlloc)308
+b FA(returns)c Fy(NULL)p FA(.)p Black 4000 10094 a(Notes)p
+Black 4072 w(If)394 b(one)h(of)h(the)f(half-bandwidths)i
+Fy(mudq)e FA(or)g Fy(mldq)g FA(to)g(b)31 b(e)394 b(used)h(in)g(the)g
+(di\256erence-quotien)-31 b(t)396 b(cal-)10814 11423
+y(culation)351 b(of)f(the)g(appro)-31 b(ximate)352 b(Jacobian)f(is)e
+(negativ)-31 b(e)351 b(or)f(exceeds)e(the)i(v)-61 b(alue)350
+b Fy(Nlocal)p Fs(\241)p FA(1,)355 b(it)350 b(is)10814
+12751 y(replaced)369 b(b)-31 b(y)370 b(0)f(or)g Fy(Nlocal)p
+Fs(\241)p FA(1)i(accordingly)-92 b(.)10814 14543 y(The)533
+b(half-bandwidths)i Fy(mudq)e FA(and)f Fy(mldq)h FA(need)f(not)i(b)31
+b(e)532 b(the)g(true)h(half-bandwidths)i(of)e(the)10814
+15871 y(Jacobian)328 b(of)f(the)g(lo)31 b(cal)328 b(blo)31
+b(c)-31 b(k)327 b(of)g Fp(G)p FA(,)336 b(when)326 b(smaller)i(v)-61
+b(alues)326 b(ma)-31 b(y)328 b(pro)-31 b(vide)327 b(a)g(greater)g
+(e\261ciency)-92 b(.)10814 17664 y(Also,)502 b(the)474
+b(half-bandwidths)j Fy(mukeep)e FA(and)f Fy(mlkeep)h
+FA(of)g(the)g(retained)g(banded)f(appro)-31 b(ximate)10814
+18992 y(Jacobian)320 b(blo)31 b(c)-31 b(k)320 b(ma)-31
+b(y)320 b(b)31 b(e)318 b(ev)-31 b(en)319 b(smaller,)330
+b(to)320 b(reduce)e(storage)h(and)g(computation)j(costs)d(further.)
+10814 20784 y(F)-92 b(or)368 b(all)j(four)e(half-bandwidths,)j(the)e(v)
+-61 b(alues)369 b(need)g(not)h(b)31 b(e)368 b(the)i(same)f(on)h(ev)-31
+b(ery)369 b(pro)31 b(cessor.)p 4000 23119 7146 45 v 4000
+24706 45 1587 v 4376 24128 a Fy(IDABBDSpgmr)p 11101 24706
+V 4000 24750 7146 45 v Black 4000 26040 a FA(Call)p Black
+4848 w Fy(flag)582 b(=)f(IDABBDSpgmr\(ida)p 23667 26040
+349 45 v 421 w(mem,)g(maxl,)h(bbd)p 32223 26040 V 419
+w(data\);)p Black 4000 27832 a FA(Description)p Black
+1286 w(The)401 b(function)i Fy(IDABBDSpgmr)f FA(links)g(the)f
+Fx(id)-25 b(abbdpre)402 b FA(data)g(to)f(the)h Fx(id)-25
+b(aspgmr)400 b FA(linear)h(solv)-31 b(er)10814 29160
+y(and)369 b(attac)-31 b(hes)371 b(the)f(latter)g(to)g(the)f
+Fx(id)-25 b(a)370 b FA(memory)g(blo)31 b(c)-31 b(k.)p
+Black 4000 30952 a(Argumen)g(ts)p Black Black 1517 w
+Fy(ida)p 12627 30952 V 419 w(mem)p Black 1135 w FA(\()p
+Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31 b(ter)370
+b(to)g(the)f Fx(id)-25 b(a)369 b FA(memory)h(blo)31 b(c)-31
+b(k.)p Black 10814 32513 a Fy(maxl)p Black 2716 w FA(\()p
+Fy(int)p FA(\))447 b(maxim)-31 b(um)449 b(dimension)e(of)g(the)f(Krylo)
+-31 b(v)448 b(subspace)d(to)i(b)31 b(e)446 b(used.)722
+b(P)-31 b(ass)447 b(0)f(to)15854 33841 y(use)368 b(the)i(default)h(v)
+-61 b(alue)369 b Fy(IDASPGMR)p 30971 33841 V 420 w(MAXL)p
+FA(=)308 b(5.)p Black 10814 35401 a Fy(bbd)p 12627 35401
+V 419 w(data)p Black 554 w FA(\()p Fy(void)582 b(*)p
+FA(\))370 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25
+b(abbdpre)370 b FA(data)g(structure.)p Black 4000 37193
+a(Return)f(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370
+b Fy(int)p FA(\))g(is)f(one)g(of)p Black 10814 38985
+a Fy(IDASPGMR)p 15532 38985 V 420 w(SUCCESS)p Black 1554
+w FA(The)g Fx(id)-25 b(aspgmr)368 b FA(initialization)374
+b(w)-31 b(as)370 b(successful.)p Black 10814 40546 a
+Fy(IDASPGMR)p 15532 40546 V 420 w(MEM)p 17695 40546 V
+418 w(NULL)p Black 1136 w FA(The)f Fy(ida)p 25591 40546
+V 419 w(mem)g FA(p)31 b(oin)-31 b(ter)370 b(is)f Fy(NULL)p
+FA(.)p Black 10814 42106 a Fy(IDASPGMR)p 15532 42106
+V 420 w(MEM)p 17695 42106 V 418 w(FAIL)p Black 1136 w
+FA(A)g(memory)h(allo)31 b(cation)373 b(request)368 b(failed.)p
+Black 10814 43666 a Fy(IDA)p 12627 43666 V 419 w(PDATA)p
+15951 43666 V 419 w(NULL)p Black 2879 w FA(The)h Fx(id)-25
+b(abbdpre)370 b FA(preconditioner)g(has)f(not)h(b)31
+b(een)369 b(initialized.)p 4000 46001 8889 45 v 4000
+47342 45 1341 v 4376 47010 a Fy(IDABBDPrecFree)p 12845
+47342 V 4000 47386 8889 45 v Black 4000 48748 a FA(Call)p
+Black 4848 w Fy(IDABBDPrecFree\(bbd)p 21342 48748 349
+45 v 421 w(data\);)p Black 4000 50541 a FA(Description)p
+Black 1286 w(The)g(function)i Fy(IDABBDPrecFree)g FA(frees)d(the)i(p)31
+b(oin)-31 b(ter)370 b(allo)31 b(cated)371 b(b)-31 b(y)370
+b Fy(IDABBDPrecAlloc)p FA(.)p Black 4000 52333 a(Argumen)-31
+b(ts)p Black 1517 w(The)273 b(only)g(argumen)-31 b(t)275
+b(of)e Fy(IDABBDPrecFree)h FA(is)f(the)g(p)31 b(oin)-31
+b(ter)273 b(to)g(the)g Fx(id)-25 b(abbdpre)274 b FA(data)f(structure)
+10814 53661 y(\(of)370 b(t)-31 b(yp)31 b(e)370 b Fy(void)582
+b(*)p FA(\).)p Black 4000 55453 a(Return)369 b(v)-61
+b(alue)p Black 554 w(The)369 b(function)i Fy(IDABBDPrecFree)g
+FA(has)e(no)h(return)e(v)-61 b(alue.)4000 57192 y(The)548
+b Fx(id)-25 b(abbdpre)548 b FA(mo)31 b(dule)548 b(also)g(pro)-31
+b(vides)548 b(a)f(reinitialization)552 b(function)d(to)f(allo)-31
+b(w)550 b(solving)f(a)e(sequence)g(of)4000 58520 y(problems)498
+b(of)g(the)g(same)g(size)g(with)h Fx(id)-25 b(aspgmr)p
+FA(/)p Fx(id)g(abbdpre)p FA(,)530 b(pro)-31 b(vided)499
+b(there)e(is)h(no)g(c)-31 b(hange)498 b(in)g Fy(local)p
+50762 58520 V 419 w(N)p FA(,)4000 59849 y Fy(mukeep)p
+FA(,)412 b(or)402 b Fy(mlkeep)p FA(.)592 b(After)402
+b(solving)i(one)e(problem,)412 b(and)403 b(after)f(calling)j
+Fy(IDAReInit)e FA(to)g(re-initialize)i Fx(id)-25 b(a)402
+b FA(for)4000 61177 y(a)465 b(subsequen)-31 b(t)464 b(problem,)489
+b(a)464 b(call)i(to)f Fy(IDABBDPrecReInit)h FA(can)f(b)31
+b(e)463 b(made)i(to)g(c)-31 b(hange)465 b(an)-31 b(y)465
+b(of)g(the)g(follo)-31 b(wing:)4000 62505 y(the)464 b(half-bandwidths)i
+Fy(mudq)e FA(and)g Fy(mldq)g FA(used)e(in)i(the)g(di\256erence-quotien)
+-31 b(t)466 b(Jacobian)f(appro)-31 b(ximations,)491 b(the)4000
+63834 y(relativ)-31 b(e)371 b(incremen)-31 b(t)370 b
+Fy(dq)p 14309 63834 V 419 w(rel)p 16471 63834 V 419 w(yy)p
+FA(,)f(or)g(one)h(of)g(the)f(user-supplied)g(functions)h
+Fy(Gres)g FA(and)f Fy(Gcomm)p FA(.)p 4000 65758 10052
+45 v 4000 67099 45 1341 v 4376 66767 a Fy(IDABBDPrecReInit)p
+14007 67099 V 4000 67143 10052 45 v Black 4000 68506
+a FA(Call)p Black 4848 w Fy(flag)582 b(=)f(IDABBDPrecReInit\(bbd)p
+26572 68506 349 45 v 421 w(data,)h(mudq,)g(mldq,)g(dq)p
+38616 68506 V 419 w(rel)p 40778 68506 V 419 w(yy,)f(Gres,)h(Gcomm\);)p
+Black 4000 70298 a FA(Description)p Black 1286 w(The)369
+b(function)i Fy(IDABBDPrecReInit)g FA(reinitializes)h(the)d
+Fx(id)-25 b(abbdpre)370 b FA(preconditioner.)p Black
+4000 72090 a(Argumen)-31 b(ts)p Black Black 1517 w Fy(bbd)p
+12627 72090 V 419 w(data)p Black 972 w FA(\()p Fy(void)583
+b(*)p FA(\))369 b(p)31 b(oin)-31 b(ter)370 b(to)g(the)g
+Fx(id)-25 b(abbdpre)369 b FA(data)i(structure.)p Black
+10814 73650 a Fy(mudq)p Black 3134 w FA(\()p Fy(long)583
+b(int)p FA(\))548 b(upp)31 b(er)546 b(half-bandwidth)k(to)e(b)31
+b(e)546 b(used)h(in)h(the)f(di\256erence-quotien)-31
+b(t)16272 74978 y(Jacobian)371 b(appro)-31 b(ximation.)p
+Black 10814 76539 a Fy(mldq)p Black 3134 w FA(\()p Fy(long)583
+b(int)p FA(\))352 b(lo)-31 b(w)g(er)353 b(half-bandwidth)h(to)e(b)31
+b(e)351 b(used)g(in)h(the)f(di\256erence-quotien)-31
+b(t)354 b(Ja-)16272 77867 y(cobian)371 b(appro)-31 b(ximation.)p
+Black Black eop
+%%Page: 60 68
+60 67 bop Black 0 2701 a FB(60)40739 b(Using)425 b(ID)-35
+b(A)p 0 3144 48001 45 v Black Black 6814 6974 a Fy(dq)p
+8046 6974 349 45 v 419 w(rel)p 10208 6974 V 419 w(yy)p
+Black 553 w FA(\()p Fy(realtype)p FA(\))433 b(the)f(relativ)-31
+b(e)432 b(incremen)-31 b(t)432 b(in)g(comp)31 b(onen)-31
+b(ts)432 b(of)f Fy(y)g FA(used)g(in)g(the)g(di\256er-)12272
+8302 y(ence)291 b(quotien)-31 b(t)292 b(appro)-31 b(ximations.)470
+b(The)291 b(default)h(is)e Fy(dq)p 35270 8302 V 419 w(rel)p
+37432 8302 V 419 w(yy)g FA(=)40402 7359 y Fs(p)p 41324
+7359 6369 45 v 943 x FA(unit)370 b(roundo\256)q(,)12272
+9631 y(whic)-31 b(h)370 b(can)g(b)31 b(e)369 b(sp)31
+b(eci\257ed)368 b(b)-31 b(y)370 b(passing)f Fy(dq)p 30096
+9631 349 45 v 419 w(rel)p 32258 9631 V 419 w(yy)g FA(=)308
+b(0)p Fp(:)p FA(0.)p Black 6814 11180 a Fy(Gres)p Black
+3134 w FA(\()p Fy(IDABBDLocalFn)p FA(\))504 b(the)c Fx(C)h
+FA(function)g(whic)-31 b(h)502 b(computes)f(the)g(lo)31
+b(cal)502 b(residual)f(ap-)12272 12509 y(pro)-31 b(ximation)373
+b Fp(G)p FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)22335 12107
+y Fo(0)22647 12509 y FA(\).)p Black 6814 14058 a Fy(Gcomm)p
+Black 2553 w FA(\()p Fy(IDABBDCommFn)p FA(\))410 b(the)d(optional)j
+Fx(C)c FA(function)j(whic)-31 b(h)408 b(p)31 b(erforms)406
+b(all)i(in)-31 b(ter-pro)31 b(cess)12272 15387 y(comm)-31
+b(unication)373 b(required)c(for)g(the)h(computation)i(of)e
+Fp(G)p FA(\()p Fp(t;)184 b(y)40 b(;)184 b(y)39499 14985
+y Fo(0)39811 15387 y FA(\).)p Black 0 17158 a(Return)369
+b(v)-61 b(alue)p Black 554 w(The)369 b(return)g(v)-61
+b(alue)370 b(of)f Fy(IDABBDPrecReInit)j FA(is)d(alw)-31
+b(a)g(ys)371 b Fy(IDA)p 32734 17158 V 419 w(SUCCESS)p
+FA(.)p Black 0 18929 a(Notes)p Black 4072 w(If)312 b(one)g(of)h(the)f
+(half-bandwidths)j Fy(mudq)e FA(or)e Fy(mldq)i FA(is)f(negativ)-31
+b(e)314 b(or)e(exceeds)g(the)h(v)-61 b(alue)312 b Fy(Nlocal)p
+Fs(\241)p FA(1,)6814 20257 y(it)370 b(is)f(replaced)g(b)-31
+b(y)370 b(0)f(or)g Fy(Nlocal)p Fs(\241)p FA(1,)i(accordingly)-92
+b(.)0 21986 y(The)369 b(follo)-31 b(wing)373 b(t)-31
+b(w)g(o)371 b(optional)h(output)e(functions)h(are)e(a)-31
+b(v)-61 b(ailable)372 b(for)d(use)f(with)j(the)e Fx(id)-25
+b(abbdpre)370 b FA(mo)31 b(dule:)p 0 23855 13539 45 v
+0 25441 45 1587 v 376 24863 a Fy(IDABBDPrecGetWorkSpace)p
+13494 25441 V 0 25485 13539 45 v Black 0 26765 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDABBDPrecGetWorkSpace\(bbd)p
+26058 26765 349 45 v 422 w(data,)h(&lenrwBBDP,)h(&leniwBBDP\);)p
+Black 0 28536 a FA(Description)p Black 1286 w(The)336
+b(function)g Fy(IDABBDPrecGetWorkSpace)j FA(returns)334
+b(the)i(lo)31 b(cal)337 b(sizes)e(of)h(the)f Fx(id)-25
+b(abbdpre)336 b FA(real)6814 29864 y(and)369 b(in)-31
+b(teger)371 b(w)-31 b(orkspaces.)p Black 0 31635 a(Argumen)g(ts)p
+Black Black 1517 w Fy(bbd)p 8627 31635 V 419 w(data)p
+Black 1298 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31
+b(oin)-31 b(ter)370 b(to)g(the)f Fx(id)-25 b(abbdpre)370
+b FA(data)g(structure.)p Black 6814 33185 a Fy(lenrwBBDP)p
+Black 555 w FA(\()p Fy(long)582 b(int)p FA(\))370 b(lo)31
+b(cal)371 b(n)-31 b(um)g(b)31 b(er)369 b(of)g(real)h(v)-61
+b(alues)369 b(in)h(the)f Fx(id)-25 b(abbdpre)370 b FA(w)-31
+b(orkspace.)p Black 6814 34735 a Fy(leniwBBDP)p Black
+555 w FA(\()p Fy(long)582 b(int)p FA(\))370 b(lo)31 b(cal)371
+b(n)-31 b(um)g(b)31 b(er)369 b(of)g(in)-31 b(teger)371
+b(v)-61 b(alues)369 b(in)g(the)h Fx(id)-25 b(abbdpre)370
+b FA(w)-31 b(orkspace.)p Black 0 36506 a(Return)369 b(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 6814 38277 a Fy(IDA)p 8627
+38277 V 419 w(SUCCESS)p Black 2135 w FA(The)h(optional)h(output)g(v)-61
+b(alue)369 b(has)g(b)31 b(een)369 b(successfuly)g(set.)p
+Black 6814 39827 a Fy(IDA)p 8627 39827 V 419 w(PDATA)p
+11951 39827 V 419 w(NULL)p Black 554 w FA(The)h Fx(id)-25
+b(abbdpre)369 b FA(preconditioner)i(has)e(not)h(b)31
+b(een)368 b(initialized.)p Black 0 41598 a(Notes)p Black
+4072 w(In)307 b(terms)g(of)g(the)g(lo)31 b(cal)309 b(v)-31
+b(ector)308 b(dimension)g Fp(N)26074 41764 y Fm(l)26414
+41598 y FA(,)320 b(the)307 b(actual)i(size)e(of)h(the)f(real)g(w)-31
+b(orkspace)308 b(is)f Fp(N)46491 41764 y Fm(l)47016 41598
+y FA(\(2)6814 42926 y Fy(mlkeep)427 b FA(+)g Fy(mukeep)g
+FA(+)g Fy(smu)f FA(+2\))i Fy(realtype)g FA(w)-31 b(ords,)441
+b(where)427 b Fy(smu)g FA(=)f(min)q(\()p Fp(N)40168 43092
+y Fm(l)40793 42926 y Fs(\241)284 b FA(1)p Fp(;)428 b
+Fy(mukeep)f FA(+)6814 44255 y Fy(mlkeep)p FA(\).)6814
+46026 y(The)369 b(actual)i(size)e(of)h(the)f(in)-31 b(teger)371
+b(w)-31 b(orkspace)370 b(is)f Fp(N)28637 46192 y Fm(l)29346
+46026 y FA(in)-31 b(teger)370 b(w)-31 b(ords.)p 0 48295
+14701 45 v 0 49635 45 1341 v 376 49303 a Fy(IDABBDPrecGetNumGfnEvals)p
+14656 49635 V 0 49679 14701 45 v Black 0 51032 a FA(Call)p
+Black 4848 w Fy(flag)582 b(=)f(IDABBDPrecGetNumGfnEvals\(bbd)p
+27220 51032 349 45 v 423 w(data,)g(&ngevalsBBDP\);)p
+Black 0 52803 a FA(Description)p Black 1286 w(The)387
+b(function)h Fy(IDABBDPrecGetNumGfnEvals)i FA(returns)c(the)h(cum)-31
+b(ulativ)g(e)389 b(n)-31 b(um)g(b)31 b(er)387 b(of)g(calls)h(to)6814
+54131 y(the)262 b(user)f Fy(Gres)h FA(function)h(due)f(to)h(the)f
+(\257nite)g(di\256erence)g(appro)-31 b(ximation)265 b(of)e(the)f
+(Jacobian)h(blo)31 b(c)-31 b(ks)6814 55460 y(used)369
+b(within)h Fx(id)-25 b(abbdpre)p FA('s)370 b(preconditioner)h(setup)e
+(function.)p Black 0 57231 a(Argumen)-31 b(ts)p Black
+Black 1517 w Fy(bbd)p 8627 57231 V 419 w(data)p Black
+2460 w FA(\()p Fy(void)582 b(*)p FA(\))370 b(p)31 b(oin)-31
+b(ter)370 b(to)g(the)f Fx(id)-25 b(abbdpre)370 b FA(data)h(structure.)p
+Black 6814 58780 a Fy(ngevalsBBDP)p Black 555 w FA(\()p
+Fy(long)582 b(int)p FA(\))370 b(the)g(cum)-31 b(ulativ)g(e)372
+b(n)-31 b(um)g(b)31 b(er)369 b(of)h(calls)g(to)g(the)f(user)f
+Fy(Gres)i FA(function.)p Black 0 60552 a(Return)f(v)-61
+b(alue)p Black 554 w(The)369 b(return)g(v)-61 b(alue)370
+b Fy(flag)f FA(\(of)h(t)-31 b(yp)31 b(e)370 b Fy(int)p
+FA(\))g(is)f(one)g(of)p Black 6814 62323 a Fy(IDA)p 8627
+62323 V 419 w(SUCCESS)p Black 2135 w FA(The)h(optional)h(output)g(v)-61
+b(alue)369 b(has)g(b)31 b(een)369 b(successfuly)g(set.)p
+Black 6814 63872 a Fy(IDA)p 8627 63872 V 419 w(PDATA)p
+11951 63872 V 419 w(NULL)p Black 554 w FA(The)h Fx(id)-25
+b(abbdpre)369 b FA(preconditioner)i(has)e(not)h(b)31
+b(een)368 b(initialized.)1660 65601 y(The)422 b(costs)g(asso)31
+b(ciated)423 b(with)g Fx(id)-25 b(abbdpre)422 b FA(also)h(include)g
+Fy(nlinsetups)g FA(LU)e(factorizations,)439 b Fy(nlinsetups)0
+66929 y FA(calls)332 b(to)g Fy(Gcomm)p FA(,)339 b(and)331
+b Fy(npsolves)h FA(banded)f(bac)-31 b(ksolv)g(e)333 b(calls,)340
+b(where)331 b Fy(nlinsetups)h FA(and)f Fy(npsolves)h
+FA(are)f(optional)0 68258 y Fx(id)-25 b(a)369 b FA(outputs)h(\(see)f
+Fs(x)p FA(5.4.7\).)p Black Black eop
+%%Page: 61 69
+61 68 bop Black Black 4000 15287 a Fw(Chapter)861 b(6)4000
+20832 y Fz(Description)1033 b(of)g(the)g(NVECTOR)4000
+24153 y(mo)86 b(dule)4000 29920 y FA(The)288 b Fx(sundials)f
+FA(solv)-31 b(ers)288 b(are)f(written)i(in)f(a)g(data-indep)31
+b(enden)-31 b(t)290 b(manner.)466 b(They)288 b(all)h(op)31
+b(erate)288 b(on)g(generic)g(v)-31 b(ectors)4000 31248
+y(\(of)356 b(t)-31 b(yp)31 b(e)355 b Fy(N)p 8804 31248
+349 45 v 419 w(Vector)p FA(\))h(through)g(a)f(set)g(of)g(op)31
+b(erations)356 b(de\257ned)f(b)-31 b(y)355 b(the)g(particular)h
+Fx(nvector)f FA(implemen)-31 b(tation.)4000 32576 y(Users)498
+b(can)i(pro)-31 b(vide)500 b(their)f(o)-31 b(wn)501 b(sp)31
+b(eci\257c)498 b(implemen)-31 b(tation)504 b(of)c(the)f
+Fx(nvector)h FA(mo)31 b(dule)500 b(or)f(use)g(one)g(of)h(t)-31
+b(w)g(o)4000 33905 y(pro)g(vided)370 b(within)h Fx(sundials)p
+FA(,)e(a)g(serial)h(and)f(an)h(MPI)e(parallel)j(implemen)-31
+b(tations.)5660 35244 y(The)469 b(generic)h Fy(N)p 12541
+35244 V 418 w(Vector)g FA(t)-31 b(yp)31 b(e)469 b(is)g(a)g(p)31
+b(oin)-31 b(ter)469 b(to)h(a)f(structure)f(that)i(has)f(an)g(implemen)
+-31 b(tation-dep)31 b(enden)-31 b(t)4000 36572 y Fr(c)-57
+b(ontent)350 b FA(\257eld)f(con)-31 b(taining)352 b(the)d(description)h
+(and)g(actual)h(data)f(of)f(the)h(v)-31 b(ector,)354
+b(and)c(an)f Fr(ops)f FA(\257eld)h(p)31 b(oin)-31 b(ting)352
+b(to)e(a)4000 37900 y(structure)369 b(with)h(generic)f(v)-31
+b(ector)370 b(op)31 b(erations.)494 b(The)370 b(t)-31
+b(yp)31 b(e)369 b Fy(N)p 29585 37900 V 419 w(Vector)h
+FA(is)f(de\257ned)g(as)p Black Black 4000 40156 a Fy(typedef)582
+b(struct)g(_generic_N_Vector)i(*N_Vector;)4000 42813
+y(struct)e(_generic_N_Vector)i({)6325 44141 y(void)d(*content;)6325
+45470 y(struct)h(_generic_N_Vector_Ops)i(*ops;)4000 46798
+y(};)4000 49044 y FA(The)p 6424 49044 V 867 w Fy(generic)p
+10910 49044 V 419 w(N)p 11910 49044 V 419 w(Vector)p
+15815 49044 V 419 w(Ops)449 b FA(structure)e(is)h(essen)-31
+b(tially)451 b(a)d(list)h(of)g(p)31 b(oin)-31 b(ters)448
+b(to)h(the)g(v)-61 b(arious)448 b(actual)i(v)-31 b(ector)4000
+50372 y(op)31 b(erations,)371 b(and)e(is)g(de\257ned)g(as)p
+Black Black 4000 52628 a Fy(struct)582 b(_generic_N_Vector_Ops)i({)5162
+53957 y(N_Vector)2326 b(\(*nvclone\)\(N_Vector\);)5162
+55285 y(N_Vector)g(\(*nvcloneempty\)\(N_Vector\);)5162
+56613 y(void)4650 b(\(*nvdestroy\)\(N_Vector\);)5162
+57942 y(void)g(\(*nvspace\)\(N_Vector,)584 b(long)e(int)g(*,)f(long)h
+(int)f(*\);)5162 59270 y(realtype*)1745 b
+(\(*nvgetarraypointer\)\(N_Vector\);)5162 60598 y(void)4650
+b(\(*nvsetarraypointer\)\(realtype)586 b(*,)581 b(N_Vector\);)5162
+61927 y(void)4650 b(\(*nvlinearsum\)\(realtype,)585 b(N_Vector,)d
+(realtype,)h(N_Vector,)f(N_Vector\);)5162 63255 y(void)4650
+b(\(*nvconst\)\(realtype,)584 b(N_Vector\);)5162 64583
+y(void)4650 b(\(*nvprod\)\(N_Vector,)584 b(N_Vector,)f(N_Vector\);)5162
+65912 y(void)4650 b(\(*nvdiv\)\(N_Vector,)584 b(N_Vector,)e
+(N_Vector\);)5162 67240 y(void)4650 b(\(*nvscale\)\(realtype,)584
+b(N_Vector,)f(N_Vector\);)5162 68568 y(void)4650 b
+(\(*nvabs\)\(N_Vector,)584 b(N_Vector\);)5162 69897 y(void)4650
+b(\(*nvinv\)\(N_Vector,)584 b(N_Vector\);)5162 71225
+y(void)4650 b(\(*nvaddconst\)\(N_Vector,)585 b(realtype,)d(N_Vector\);)
+5162 72553 y(realtype)2326 b(\(*nvdotprod\)\(N_Vector,)585
+b(N_Vector\);)5162 73882 y(realtype)2326 b(\(*nvmaxnorm\)\(N_Vector\);)
+5162 75210 y(realtype)g(\(*nvwrmsnorm\)\(N_Vector,)585
+b(N_Vector\);)5162 76539 y(realtype)2326 b
+(\(*nvwrmsnormmask\)\(N_Vector,)585 b(N_Vector,)e(N_Vector\);)5162
+77867 y(realtype)2326 b(\(*nvmin\)\(N_Vector\);)p Black
+Black eop
+%%Page: 62 70
+62 69 bop Black 0 2701 a FB(62)25219 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black 1162 6974 a Fy(realtype)2326 b(\(*nvwl2norm\)\(N_Vector,)585
+b(N_Vector\);)1162 8302 y(realtype)2326 b(\(*nvl1norm\)\(N_Vector\);)
+1162 9631 y(void)4650 b(\(*nvcompare\)\(realtype,)585
+b(N_Vector,)d(N_Vector\);)1162 10959 y(booleantype)h
+(\(*nvinvtest\)\(N_Vector,)i(N_Vector\);)1162 12287 y(booleantype)e
+(\(*nvconstrmask\)\(N_Vector,)i(N_Vector,)d(N_Vector\);)1162
+13616 y(realtype)2326 b(\(*nvminquotient\)\(N_Vector,)585
+b(N_Vector\);)0 14944 y(};)1660 17158 y FA(The)569 b(generic)f
+Fx(nvector)g FA(mo)31 b(dule)569 b(also)f(de\257nes)g(and)g(implemen)
+-31 b(ts)570 b(the)e(v)-31 b(ector)569 b(op)31 b(erations)569
+b(acting)h(on)0 18486 y Fy(N)p 651 18486 349 45 v 419
+w(Vector)p FA(.)473 b(These)310 b(routines)h(are)f(nothing)i(but)e
+(wrapp)31 b(ers)310 b(for)g(the)g(v)-31 b(ector)311 b(op)31
+b(erations)312 b(de\257ned)e(b)-31 b(y)310 b(a)h(particular)0
+19815 y Fx(nvector)400 b FA(implemen)-31 b(tation,)412
+b(whic)-31 b(h)401 b(are)f(accessed)f(through)i(the)f
+Fr(ops)f FA(\257eld)h(of)h(the)f Fy(N)p 37234 19815 V
+418 w(Vector)h FA(structure.)584 b(T)-92 b(o)0 21143
+y(illustrate)301 b(this)f(p)31 b(oin)-31 b(t)301 b(w)-31
+b(e)299 b(sho)-31 b(w)300 b(b)31 b(elo)-31 b(w)301 b(the)e(implemen)-31
+b(tation)304 b(of)c(a)g(t)-31 b(ypical)301 b(v)-31 b(ector)300
+b(op)31 b(eration)301 b(from)f(the)g(generic)0 22471
+y Fx(nvector)369 b FA(mo)31 b(dule,)371 b(namely)f Fy(N)p
+13730 22471 V 419 w(VScale)p FA(,)g(whic)-31 b(h)370
+b(p)31 b(erforms)369 b(the)h(scaling)g(of)g(a)f(v)-31
+b(ector)370 b Fy(x)f FA(b)-31 b(y)370 b(a)f(scalar)h
+Fy(c)p FA(:)p Black Black 0 24685 a Fy(void)582 b(N_VScale\(realtype)h
+(c,)f(N_Vector)g(x,)g(N_Vector)g(z\))0 26014 y({)1743
+27342 y(z->ops->nvscale\(c,)i(x,)e(z\);)0 28670 y(})0
+30884 y FA(T)-92 b(able)370 b(6.1)g(con)-31 b(tains)370
+b(a)f(complete)h(list)g(of)f(all)h(v)-31 b(ector)370
+b(op)31 b(erations)369 b(de\257ned)g(b)-31 b(y)369 b(the)g(generic)g
+Fx(nvector)f FA(mo)31 b(dule.)1660 32213 y(Finally)-92
+b(,)339 b(note)330 b(that)g(the)f(generic)g Fx(nvector)g
+FA(mo)31 b(dule)330 b(de\257nes)f(the)g(functions)h Fy(N)p
+35660 32213 V 418 w(VCloneVectorArray)i FA(and)0 33541
+y Fy(N)p 651 33541 V 419 w(VCloneEmptyVectorArray)p FA(.)480
+b(Both)324 b(functions)g(create)f(\(b)-31 b(y)323 b(cloning\))i(an)e
+(arra)-31 b(y)324 b(of)f Fy(count)g FA(v)-61 b(ariables)324
+b(of)f(t)-31 b(yp)31 b(e)0 34869 y Fy(N)p 651 34869 V
+419 w(Vector)p FA(,)370 b(eac)-31 b(h)370 b(of)f(the)h(same)f(t)-31
+b(yp)31 b(e)370 b(as)f(an)h(existing)g Fy(N)p 23728 34869
+V 419 w(Vector)p FA(.)493 b(Their)370 b(protot)-31 b(yp)31
+b(es)370 b(are)p Black Black 0 37083 a Fy(N_Vector)582
+b(*N_VCloneVectorArray\(int)j(count,)d(N_Vector)g(w\);)0
+38412 y(N_Vector)g(*N_VCloneEmptyVectorArray\(int)k(count,)c(N_Vector)g
+(w\);)0 40625 y FA(and)361 b(their)f(de\257nitions)i(are)e(based)g(on)h
+(the)f(implemen)-31 b(tation-sp)31 b(eci\257c)364 b Fy(N)p
+30861 40625 V 419 w(VClone)d FA(and)f Fy(N)p 37851 40625
+V 419 w(VCloneEmpty)i FA(op)31 b(era-)0 41954 y(tions,)272
+b(resp)31 b(ectiv)-31 b(ely)-92 b(.)452 b(An)247 b(arra)-31
+b(y)246 b(of)h(v)-61 b(ariables)247 b(of)f(t)-31 b(yp)31
+b(e)247 b Fy(N)p 23481 41954 V 419 w(Vector)g FA(can)f(b)31
+b(e)246 b(destro)-31 b(y)g(ed)246 b(b)-31 b(y)247 b(calling)h
+Fy(N)p 41137 41954 V 419 w(VDestroyVectorArray)p FA(,)0
+43282 y(whose)370 b(protot)-31 b(yp)31 b(e)370 b(is)p
+Black Black 0 45496 a Fy(void)582 b(N_VDestroyVectorArray\(N_Vector)j
+(*vs,)d(int)g(count\);)0 47710 y FA(and)369 b(whose)h(de\257nition)h
+(is)e(based)g(on)g(the)h(implemen)-31 b(tation-sp)31
+b(eci\257c)373 b Fy(N)p 30379 47710 V 419 w(VDestroy)d
+FA(op)31 b(eration.)1660 49038 y(A)370 b(particular)g(implemen)-31
+b(tation)374 b(of)369 b(the)h Fx(nvector)f FA(mo)31 b(dule)370
+b(m)-31 b(ust:)p Black 1660 51252 a Fs(\262)p Black 554
+w FA(Sp)31 b(ecify)370 b(the)f Fr(c)-57 b(ontent)370
+b FA(\257eld)g(of)f Fy(N)p 16704 51252 V 419 w(Vector)p
+FA(.)p Black 1660 53466 a Fs(\262)p Black 554 w FA(De\257ne)455
+b(and)h(implemen)-31 b(t)459 b(the)d(v)-31 b(ector)456
+b(op)31 b(erations.)754 b(Note)456 b(that)h(the)f(names)g(of)h(these)e
+(routines)h(should)2767 54795 y(b)31 b(e)404 b(unique)h(to)h(that)f
+(implemen)-31 b(tation)409 b(in)c(order)f(to)h(p)31 b(ermit)405
+b(using)g(more)g(than)g(one)f Fx(nvector)h FA(mo)31 b(dule)2767
+56123 y(\(eac)-31 b(h)371 b(with)f(di\256eren)-31 b(t)369
+b Fy(N)p 13230 56123 V 419 w(Vector)h FA(in)-31 b(ternal)371
+b(data)f(represen)-31 b(tations\))370 b(in)g(the)f(same)h(co)31
+b(de.)p Black 1660 58337 a Fs(\262)p Black 554 w FA(De\257ne)389
+b(and)h(implemen)-31 b(t)392 b(user-callable)f(constructor)f(and)f
+(destructor)h(routines)g(to)g(create)g(and)f(free)h(an)2767
+59665 y Fy(N)p 3418 59665 V 419 w(Vector)370 b FA(with)g(the)g(new)f
+Fr(c)-57 b(ontent)370 b FA(\257eld)f(and)h(with)g Fr(ops)e
+FA(p)31 b(oin)-31 b(ting)372 b(to)e(the)f(new)g(v)-31
+b(ector)370 b(op)31 b(erations.)p Black 1660 61879 a
+Fs(\262)p Black 554 w FA(Optionally)-92 b(,)337 b(de\257ne)325
+b(and)g(implemen)-31 b(t)327 b(additional)h(user-callable)e(routines)g
+(acting)g(on)f(the)g(newly)h(de\257ned)2767 63207 y Fy(N)p
+3418 63207 V 419 w(Vector)370 b FA(\(e.g.,)h(a)f(routine)g(to)g(prin)
+-31 b(t)369 b(the)h(con)-31 b(ten)g(t)371 b(for)e(debugging)i(purp)31
+b(oses\).)p Black 1660 65421 a Fs(\262)p Black 554 w
+FA(Optionally)-92 b(,)412 b(pro)-31 b(vide)401 b(accessor)f(macros)h
+(as)f(needed)g(for)g(that)i(particular)g(implemen)-31
+b(tation)404 b(to)e(b)31 b(e)399 b(used)2767 66750 y(to)370
+b(access)f(di\256eren)-31 b(t)369 b(parts)h(in)f(the)g
+Fr(c)-57 b(ontent)370 b FA(\257eld)g(of)f(the)h(newly)g(de\257ned)f
+Fy(N)p 34871 66750 V 418 w(Vector)p FA(.)p Black Black
+eop
+%%Page: 63 71
+63 70 bop Black 50727 2701 a FB(63)p 4000 3144 48001
+45 v Black Black 15299 6974 a FA(T)-92 b(able)370 b(6.1:)494
+b(Description)370 b(of)g(the)f(NVECTOR)i(op)31 b(erations)p
+Black 4000 8451 46657 45 v 3978 9779 45 1329 v 4664 9381
+a FB(Name)p 15604 9779 V 8367 w(Usage)426 b(and)f(Description)p
+50635 9779 V 4000 9824 46657 45 v 4000 10045 V 3978 11373
+45 1329 v 15604 11373 V 50635 11373 V 3978 12702 V 4664
+12303 a Fy(N)p 5315 12303 349 45 v 419 w(VClone)p 15604
+12702 45 1329 v 7140 w(v)582 b(=)f(N)p 19266 12303 349
+45 v 419 w(VClone\(w\);)p 50635 12702 45 1329 v 3978
+16687 45 3986 v 15604 16687 V 16290 13632 a FA(Creates)382
+b(a)g(new)g Fy(N)p 24183 13632 349 45 v 419 w(Vector)g
+FA(of)g(the)g(same)g(t)-31 b(yp)31 b(e)382 b(as)f(an)h(existing)h(v)-31
+b(ector)383 b Fy(w)e FA(and)16290 14960 y(sets)478 b(the)g
+Fr(ops)f FA(\257eld.)819 b(It)478 b(do)31 b(es)478 b(not)h(cop)-31
+b(y)479 b(the)f(v)-31 b(ector,)506 b(but)478 b(rather)g(allo)31
+b(cates)16290 16288 y(storage)371 b(for)e(the)g(new)h(v)-31
+b(ector.)p 50635 16687 45 3986 v 3978 18015 45 1329 v
+15604 18015 V 50635 18015 V 3978 19344 V 4664 18945 a
+Fy(N)p 5315 18945 349 45 v 419 w(VCloneEmpty)p 15604
+19344 45 1329 v 4235 w(v)582 b(=)f(N)p 19266 18945 349
+45 v 419 w(VCloneEmpty\(w\);)p 50635 19344 45 1329 v
+3978 22000 45 2657 v 15604 22000 V 16290 20273 a FA(Creates)382
+b(a)g(new)g Fy(N)p 24183 20273 349 45 v 419 w(Vector)g
+FA(of)g(the)g(same)g(t)-31 b(yp)31 b(e)382 b(as)f(an)h(existing)h(v)-31
+b(ector)383 b Fy(w)e FA(and)16290 21602 y(sets)369 b(the)h
+Fr(ops)e FA(\257eld.)493 b(It)369 b(do)31 b(es)369 b(not)h(allo)31
+b(cate)371 b(storage)f(for)g(the)f(data)h(arra)-31 b(y)-92
+b(.)p 50635 22000 45 2657 v 3978 23329 45 1329 v 15604
+23329 V 50635 23329 V 3978 24657 V 4664 24258 a Fy(N)p
+5315 24258 349 45 v 419 w(VDestroy)p 15604 24657 45 1329
+v 5978 w(N)p 16941 24258 349 45 v 419 w(VDestroy\(v\);)p
+50635 24657 45 1329 v 3978 27314 45 2657 v 15604 27314
+V 16290 25587 a FA(Destro)-31 b(ys)448 b(the)f Fy(N)p
+23555 25587 349 45 v 419 w(Vector)h(v)f FA(and)h(frees)e(memory)j(allo)
+31 b(cated)450 b(for)d(its)h(in)-31 b(ternal)16290 26915
+y(data.)p 50635 27314 45 2657 v 3978 28642 45 1329 v
+15604 28642 V 50635 28642 V 3978 29970 V 4664 29572 a
+Fy(N)p 5315 29572 349 45 v 419 w(VSpace)p 15604 29970
+45 1329 v 7140 w(N)p 16941 29572 349 45 v 419 w(VSpace\(nvSpec,)583
+b(&lrw,)f(&liw\);)p 50635 29970 45 1329 v 3978 32627
+45 2657 v 15604 32627 V 16290 30900 a FA(Returns)275
+b(storage)i(requiremen)-31 b(ts)276 b(for)f(one)h Fy(N)p
+34818 30900 349 45 v 419 w(Vector)p FA(.)462 b Fy(lrw)276
+b FA(con)-31 b(tains)277 b(the)f(n)-31 b(um-)16290 32229
+y(b)31 b(er)369 b(of)g(realt)-31 b(yp)31 b(e)371 b(w)-31
+b(ords)369 b(and)g Fy(liw)h FA(con)-31 b(tains)371 b(the)e(n)-31
+b(um)g(b)31 b(er)369 b(of)h(in)-31 b(teger)370 b(w)-31
+b(ords.)p 50635 32627 45 2657 v 3978 33955 45 1329 v
+15604 33955 V 50635 33955 V 3978 35284 V 4664 34885 a
+Fy(N)p 5315 34885 349 45 v 419 w(VGetArrayPointer)p 15604
+35284 45 1329 v 1330 w(vdata)582 b(=)g(N)p 21591 34885
+349 45 v 418 w(VGetArrayPointer\(v\);)p 50635 35284 45
+1329 v 3978 41925 45 6642 v 15604 41925 V 16290 36214
+a FA(Returns)290 b(a)g(p)31 b(oin)-31 b(ter)291 b(to)g(a)f
+Fy(realtype)h FA(arra)-31 b(y)291 b(from)f(the)g Fy(N)p
+39887 36214 349 45 v 419 w(Vector)h(v)p FA(.)466 b(Note)291
+b(that)16290 37542 y(this)383 b(assumes)f(that)h(the)g(in)-31
+b(ternal)383 b(data)h(in)e Fy(N)p 35663 37542 V 418 w(Vector)h
+FA(is)f(a)h(con)-31 b(tiguous)384 b(arra)-31 b(y)16290
+38870 y(of)352 b Fy(realtype)p FA(.)487 b(This)351 b(routine)g(is)g
+(only)g(used)f(in)h(the)g(solv)-31 b(er-sp)31 b(eci\257c)350
+b(in)-31 b(terfaces)16290 40199 y(to)350 b(the)f(dense)f(and)i(banded)f
+(linear)g(solv)-31 b(ers,)354 b(as)348 b(w)-31 b(ell)351
+b(as)e(the)g(in)-31 b(terfaces)349 b(to)h(the)16290 41527
+y(banded)370 b(preconditioners)g(pro)-31 b(vided)370
+b(with)g Fx(sundials)p FA(.)p 50635 41925 45 6642 v 3978
+43254 45 1329 v 15604 43254 V 50635 43254 V 3978 44582
+V 4664 44184 a Fy(N)p 5315 44184 349 45 v 419 w(VSetArrayPointer)p
+15604 44582 45 1329 v 1330 w(N)p 16941 44184 349 45 v
+419 w(VSetArrayPointer\(vdata,)585 b(v\);)p 50635 44582
+45 1329 v 3978 49896 45 5314 v 15604 49896 V 16290 45512
+a FA(Ov)-31 b(erwrites)419 b(the)e(data)i(in)f(an)g Fy(N)p
+30049 45512 349 45 v 419 w(Vector)g FA(with)h(a)f(giv)-31
+b(en)419 b(arra)-31 b(y)418 b(of)g Fy(realtype)p FA(.)16290
+46840 y(Note)460 b(that)h(this)e(assumes)g(that)h(the)f(in)-31
+b(ternal)460 b(data)h(in)e Fy(N)p 41454 46840 V 418 w(Vector)h
+FA(is)f(a)g(con-)16290 48169 y(tiguous)374 b(arra)-31
+b(y)373 b(of)g Fy(realtype)p FA(.)504 b(This)373 b(routine)h(is)e(only)
+i(used)e(in)h(the)f(in)-31 b(terfaces)16290 49497 y(to)370
+b(the)g(dense)e(linear)i(solv)-31 b(er.)p 50635 49896
+45 5314 v 3978 51224 45 1329 v 15604 51224 V 50635 51224
+V 3978 52552 V 4664 52154 a Fy(N)p 5315 52154 349 45
+v 419 w(VLinearSum)p 15604 52552 45 1329 v 4816 w(N)p
+16941 52154 349 45 v 419 w(VLinearSum\(a,)583 b(x,)f(b,)f(y,)g(z\);)p
+50635 52552 45 1329 v 3978 55209 45 2657 v 15604 55209
+V 16290 53482 a FA(P)-31 b(erforms)397 b(the)f(op)31
+b(eration)398 b Fp(z)j FA(=)352 b Fp(ax)264 b FA(+)g
+Fp(by)40 b FA(,)403 b(where)396 b Fp(a)g FA(and)g Fp(b)g
+FA(are)g(scalars)g(and)h Fp(x)16290 54811 y FA(and)370
+b Fp(y)408 b FA(are)369 b(of)h(t)-31 b(yp)31 b(e)370
+b Fy(N)p 25645 54811 349 45 v 418 w(Vector)p FA(:)494
+b Fp(z)30795 54977 y Fm(i)31470 54811 y FA(=)308 b Fp(ax)33857
+54977 y Fm(i)34471 54811 y FA(+)246 b Fp(by)36596 54977
+y Fm(i)36965 54811 y Fp(;)430 b(i)308 b FA(=)g(0)p Fp(;)184
+b(:)g(:)g(:)k(;)c(n)248 b Fs(\241)e FA(1.)p 50635 55209
+45 2657 v 3978 56537 45 1329 v 15604 56537 V 50635 56537
+V 3978 57866 V 4664 57467 a Fy(N)p 5315 57467 349 45
+v 419 w(VConst)p 15604 57866 45 1329 v 7140 w(N)p 16941
+57467 349 45 v 419 w(VConst\(c,)583 b(z\);)p 50635 57866
+45 1329 v 3978 59194 V 15604 59194 V 16290 58796 a FA(Sets)370
+b(all)g(comp)31 b(onen)-31 b(ts)370 b(of)g(the)g Fy(N)p
+30084 58796 349 45 v 418 w(Vector)g(z)f FA(to)h Fy(c)p
+FA(:)493 b Fp(z)38487 58962 y Fm(i)39163 58796 y FA(=)307
+b Fp(c;)431 b(i)308 b FA(=)f(0)p Fp(;)184 b(:)g(:)g(:)189
+b(;)184 b(n)247 b Fs(\241)f FA(1.)p 50635 59194 45 1329
+v 3978 60522 V 15604 60522 V 50635 60522 V 3978 61851
+V 4664 61452 a Fy(N)p 5315 61452 349 45 v 419 w(VProd)p
+15604 61851 45 1329 v 7721 w(N)p 16941 61452 349 45 v
+419 w(VProd\(x,)582 b(y,)g(z\);)p 50635 61851 45 1329
+v 3978 64507 45 2657 v 15604 64507 V 16290 62781 a FA(Sets)280
+b(the)f Fy(N)p 21011 62781 349 45 v 419 w(Vector)h(z)f
+FA(to)h(b)31 b(e)279 b(the)g(comp)31 b(onen)-31 b(t-wise)282
+b(pro)31 b(duct)279 b(of)h(the)f Fy(N)p 46157 62781 V
+419 w(Vector)16290 64109 y FA(inputs)370 b Fy(x)f FA(and)h
+Fy(y)p FA(:)492 b Fp(z)24677 64275 y Fm(i)25353 64109
+y FA(=)307 b Fp(x)27154 64275 y Fm(i)27523 64109 y Fp(y)28066
+64275 y Fm(i)28434 64109 y Fp(;)431 b(i)308 b FA(=)f(0)p
+Fp(;)184 b(:)g(:)g(:)189 b(;)184 b(n)247 b Fs(\241)f
+FA(1.)p 50635 64507 45 2657 v 3978 65836 45 1329 v 15604
+65836 V 50635 65836 V 3978 67164 V 4664 66766 a Fy(N)p
+5315 66766 349 45 v 419 w(VDiv)p 15604 67164 45 1329
+v 8302 w(N)p 16941 66766 349 45 v 419 w(VDiv\(x,)582
+b(y,)g(z\);)p 50635 67164 45 1329 v 3978 72478 45 5314
+v 15604 72478 V 16290 68094 a FA(Sets)417 b(the)f Fy(N)p
+21285 68094 349 45 v 419 w(Vector)h(z)f FA(to)h(b)31
+b(e)415 b(the)i(comp)31 b(onen)-31 b(t-wise)418 b(ratio)g(of)f(the)f
+Fy(N)p 46157 68094 V 419 w(Vector)16290 69422 y FA(inputs)350
+b Fy(x)f FA(and)g Fy(y)p FA(:)483 b Fp(z)24607 69588
+y Fm(i)25282 69422 y FA(=)308 b Fp(x)27084 69588 y Fm(i)27452
+69422 y Fp(=y)28548 69588 y Fm(i)28917 69422 y Fp(;)390
+b(i)308 b FA(=)g(0)p Fp(;)184 b(:)g(:)g(:)k(;)c(n)207
+b Fs(\241)f FA(1.)486 b(The)349 b Fp(y)40566 69588 y
+Fm(i)41283 69422 y FA(ma)-31 b(y)351 b(not)e(b)31 b(e)349
+b(tested)16290 70751 y(for)393 b(0)h(v)-61 b(alues.)564
+b(It)392 b(should)i(only)g(b)31 b(e)392 b(called)i(with)g(an)f
+Fy(x)g FA(that)h(is)f(guaran)-31 b(teed)395 b(to)16290
+72079 y(ha)-31 b(v)g(e)371 b(all)f(nonzero)g(comp)31
+b(onen)-31 b(ts.)p 50635 72478 45 5314 v 4000 72522 46657
+45 v 3978 73850 45 1329 v 39553 73452 a Fc(con)j(tin)g(ued)341
+b(on)g(next)h(page)p 50635 73850 V 4000 73894 46657 45
+v Black Black eop
+%%Page: 64 72
+64 71 bop Black 0 2701 a FB(64)25219 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black 0 5911 46657 45 v -22 7240 45 1329 v 664 6841
+a Fc(con)-28 b(tin)g(ued)341 b(from)g(last)h(page)p 46635
+7240 V 0 7284 46657 45 v -22 8612 45 1329 v 664 8214
+a FB(Name)p 11604 8612 V 8367 w(Usage)426 b(and)f(Description)p
+46635 8612 V 0 8656 46657 45 v 0 8878 V -22 10206 45
+1329 v 11604 10206 V 46635 10206 V -22 11535 V 664 11136
+a Fy(N)p 1315 11136 349 45 v 419 w(VScale)p 11604 11535
+45 1329 v 7140 w(N)p 12941 11136 349 45 v 419 w(VScale\(c,)583
+b(x,)e(z\);)p 46635 11535 45 1329 v -22 14191 45 2657
+v 11604 14191 V 12290 12464 a FA(Scales)527 b(the)f Fy(N)p
+18427 12464 349 45 v 418 w(Vector)h(x)f FA(b)-31 b(y)526
+b(the)g(scalar)g Fy(c)g FA(and)g(returns)f(the)h(result)g(in)g
+Fy(z)p FA(:)12290 13793 y Fp(z)12805 13959 y Fm(i)13481
+13793 y FA(=)308 b Fp(cx)15762 13959 y Fm(i)16130 13793
+y Fp(;)431 b(i)308 b FA(=)f(0)p Fp(;)184 b(:)g(:)g(:)189
+b(;)184 b(n)247 b Fs(\241)f FA(1.)p 46635 14191 45 2657
+v -22 15520 45 1329 v 11604 15520 V 46635 15520 V -22
+16848 V 664 16449 a Fy(N)p 1315 16449 349 45 v 419 w(VAbs)p
+11604 16848 45 1329 v 8302 w(N)p 12941 16449 349 45 v
+419 w(VAbs\(x,)582 b(y\);)p 46635 16848 45 1329 v -22
+19505 45 2657 v 11604 19505 V 12290 17778 a FA(Sets)458
+b(the)f(comp)31 b(onen)-31 b(ts)459 b(of)f(the)g Fy(N)p
+26894 17778 349 45 v 418 w(Vector)g(y)g FA(to)g(b)31
+b(e)457 b(the)h(absolute)g(v)-61 b(alues)458 b(of)12290
+19106 y(the)370 b(comp)31 b(onen)-31 b(ts)370 b(of)g(the)g
+Fy(N)p 24110 19106 V 418 w(Vector)g(x)p FA(:)493 b Fp(y)30238
+19272 y Fm(i)30913 19106 y FA(=)308 b Fs(j)p Fp(x)33022
+19272 y Fm(i)33390 19106 y Fs(j)p Fp(;)432 b(i)308 b
+FA(=)f(0)p Fp(;)184 b(:)g(:)g(:)189 b(;)184 b(n)247 b
+Fs(\241)f FA(1.)p 46635 19505 45 2657 v -22 20833 45
+1329 v 11604 20833 V 46635 20833 V -22 22161 V 664 21763
+a Fy(N)p 1315 21763 349 45 v 419 w(VInv)p 11604 22161
+45 1329 v 8302 w(N)p 12941 21763 349 45 v 419 w(VInv\(x,)582
+b(z\);)p 46635 22161 45 1329 v -22 27475 45 5314 v 11604
+27475 V 12290 23091 a FA(Sets)370 b(the)h(comp)31 b(onen)-31
+b(ts)371 b(of)f(the)h Fy(N)p 26457 23091 349 45 v 418
+w(Vector)g(z)f FA(to)g(b)31 b(e)370 b(the)g(in)-31 b(v)g(erses)370
+b(of)g(the)h(com-)12290 24420 y(p)31 b(onen)-31 b(ts)361
+b(of)f(the)g Fy(N)p 20207 24420 V 419 w(Vector)h(x)p
+FA(:)488 b Fp(z)26294 24586 y Fm(i)26969 24420 y FA(=)308
+b(1)p Fp(:)p FA(0)p Fp(=x)30737 24586 y Fm(i)31107 24420
+y Fp(;)412 b(i)308 b FA(=)g(0)p Fp(;)184 b(:)g(:)g(:)k(;)c(n)229
+b Fs(\241)e FA(1.)490 b(This)361 b(routine)12290 25748
+y(ma)-31 b(y)449 b(not)f(c)-31 b(hec)g(k)448 b(for)f(division)i(b)-31
+b(y)448 b(0.)727 b(It)447 b(should)h(b)31 b(e)447 b(called)h(only)g
+(with)h(an)e Fy(x)12290 27076 y FA(whic)-31 b(h)371 b(is)e(guaran)-31
+b(teed)370 b(to)g(ha)-31 b(v)g(e)370 b(all)h(nonzero)e(comp)31
+b(onen)-31 b(ts.)p 46635 27475 45 5314 v -22 28803 45
+1329 v 11604 28803 V 46635 28803 V -22 30131 V 664 29733
+a Fy(N)p 1315 29733 349 45 v 419 w(VAddConst)p 11604
+30131 45 1329 v 5397 w(N)p 12941 29733 349 45 v 419 w(VAddConst\(x,)583
+b(b,)e(z\);)p 46635 30131 45 1329 v -22 32788 45 2657
+v 11604 32788 V 12290 31061 a FA(Adds)358 b(the)g(scalar)g
+Fy(b)g FA(to)h(all)g(comp)31 b(onen)-31 b(ts)359 b(of)f
+Fy(x)g FA(and)g(returns)f(the)h(result)g(in)g(the)12290
+32390 y Fy(N)p 12941 32390 349 45 v 419 w(Vector)370
+b(z)p FA(:)493 b Fp(z)19042 32556 y Fm(i)19717 32390
+y FA(=)308 b Fp(x)21519 32556 y Fm(i)22133 32390 y FA(+)246
+b Fp(b;)431 b(i)308 b FA(=)f(0)p Fp(;)184 b(:)g(:)g(:)189
+b(;)184 b(n)247 b Fs(\241)f FA(1.)p 46635 32788 45 2657
+v -22 34117 45 1329 v 11604 34117 V 46635 34117 V -22
+35445 V 664 35046 a Fy(N)p 1315 35046 349 45 v 419 w(VDotProd)p
+11604 35445 45 1329 v 5978 w(d)582 b(=)f(N)p 15266 35046
+349 45 v 419 w(VDotProd\(x,)h(y\);)p 46635 35445 45 1329
+v -22 38102 45 2657 v 11604 38102 V 12290 36375 a FA(Returns)607
+b(the)g(v)-61 b(alue)607 b(of)h(the)f(ordinary)g(dot)h(pro)31
+b(duct)607 b(of)g Fy(x)g FA(and)h Fy(y)p FA(:)968 b Fp(d)704
+b FA(=)12290 36873 y Fl(P)13459 37146 y Fm(n)p Fo(\241)p
+Fn(1)13459 38035 y Fm(i)p Fn(=0)15379 37703 y Fp(x)16012
+37869 y Fm(i)16380 37703 y Fp(y)16923 37869 y Fm(i)17292
+37703 y FA(.)p 46635 38102 V -22 39430 45 1329 v 11604
+39430 V 46635 39430 V -22 40758 V 664 40360 a Fy(N)p
+1315 40360 349 45 v 419 w(VMaxNorm)p 11604 40758 45 1329
+v 5978 w(m)582 b(=)f(N)p 15266 40360 349 45 v 419 w(VMaxNorm\(x\);)p
+46635 40758 45 1329 v -22 42087 V 11604 42087 V 12290
+41688 a FA(Returns)369 b(the)g(maxim)-31 b(um)372 b(norm)e(of)f(the)h
+Fy(N)p 30281 41688 349 45 v 418 w(Vector)g(x)p FA(:)493
+b Fp(m)307 b FA(=)h(max)40374 41854 y Fm(i)40927 41688
+y Fs(j)p Fp(x)41867 41854 y Fm(i)42236 41688 y Fs(j)p
+FA(.)p 46635 42087 45 1329 v -22 43415 V 11604 43415
+V 46635 43415 V -22 44743 V 664 44345 a Fy(N)p 1315 44345
+349 45 v 419 w(VWrmsNorm)p 11604 44743 45 1329 v 5397
+w(m)582 b(=)f(N)p 15266 44345 349 45 v 419 w(VWrmsNorm\(x,)i(w\))p
+46635 44743 45 1329 v -22 48700 45 3957 v 11604 48700
+V 12290 45673 a FA(Returns)386 b(the)g(w)-31 b(eigh)g(ted)388
+b(ro)31 b(ot-mean-square)388 b(norm)e(of)h(the)f Fy(N)p
+38652 45673 349 45 v 418 w(Vector)h(x)f FA(with)12290
+47698 y(w)-31 b(eigh)g(t)372 b(v)-31 b(ector)370 b Fy(w)p
+FA(:)492 b Fp(m)308 b FA(=)22948 46088 y Fl(r)p 24055
+46088 9149 45 v 382 x(\263)24716 46868 y(P)25885 47142
+y Fm(n)p Fo(\241)p Fn(1)25885 48030 y Fm(i)p Fn(=0)27620
+47698 y FA(\()p Fp(x)28683 47864 y Fm(i)29052 47698 y
+Fp(w)29844 47864 y Fm(i)30213 47698 y FA(\))30643 47379
+y Fn(2)31140 46470 y Fl(\264)31986 47698 y Fp(=n)q FA(.)p
+46635 48700 45 3957 v -22 50028 45 1329 v 11604 50028
+V 46635 50028 V -22 51357 V 664 50958 a Fy(N)p 1315 50958
+349 45 v 419 w(VWrmsNormMask)p 11604 51357 45 1329 v
+3073 w(m)582 b(=)f(N)p 15266 50958 349 45 v 419 w(VWrmsNormMask\(x,)i
+(w,)f(id\);)p 46635 51357 45 1329 v -22 55342 45 3986
+v 11604 55342 V 12290 52287 a FA(Returns)383 b(the)g(w)-31
+b(eigh)g(ted)385 b(ro)31 b(ot)384 b(mean)f(square)g(norm)g(of)h(the)f
+Fy(N)p 38658 52287 349 45 v 419 w(Vector)g(x)g FA(with)12290
+53615 y(w)-31 b(eigh)g(t)482 b(v)-31 b(ector)480 b Fy(w)f
+FA(built)h(using)g(only)g(the)f(elemen)-31 b(ts)481 b(of)e
+Fy(x)g FA(corresp)31 b(onding)480 b(to)12290 54943 y(nonzero)370
+b(elemen)-31 b(ts)370 b(of)g(the)f Fy(N)p 24758 54943
+V 419 w(Vector)h(id)p FA(:)p 46635 55342 45 3986 v -22
+58043 45 2702 v 11604 58043 V 12290 57041 a Fp(m)308
+b FA(=)14738 55430 y Fl(r)p 15845 55430 13249 45 v 382
+x(\263)16506 56211 y(P)17675 56484 y Fm(n)p Fo(\241)p
+Fn(1)17675 57373 y Fm(i)p Fn(=0)19411 57041 y FA(\()p
+Fp(x)20474 57207 y Fm(i)20842 57041 y Fp(w)21634 57207
+y Fm(i)22003 57041 y FA(sign)q(\()p Fp(id)25303 57207
+y Fm(i)25672 57041 y FA(\)\))26532 56721 y Fn(2)27030
+55812 y Fl(\264)27876 57041 y Fp(=n)p FA(.)p 46635 58043
+45 2702 v -22 59371 45 1329 v 11604 59371 V 46635 59371
+V -22 60700 V 664 60301 a Fy(N)p 1315 60301 349 45 v
+419 w(VMin)p 11604 60700 45 1329 v 8302 w(m)582 b(=)f(N)p
+15266 60301 349 45 v 419 w(VMin\(x\);)p 46635 60700 45
+1329 v -22 62028 V 11604 62028 V 12290 61629 a FA(Returns)369
+b(the)g(smallest)i(elemen)-31 b(t)371 b(of)e(the)h Fy(N)p
+30567 61629 349 45 v 418 w(Vector)g(x)p FA(:)493 b Fp(m)307
+b FA(=)h(min)40445 61795 y Fm(i)40998 61629 y Fp(x)41631
+61795 y Fm(i)41999 61629 y FA(.)p 46635 62028 45 1329
+v -22 63356 V 11604 63356 V 46635 63356 V -22 64685 V
+664 64286 a Fy(N)p 1315 64286 349 45 v 419 w(VWL2Norm)p
+11604 64685 45 1329 v 5978 w(m)582 b(=)f(N)p 15266 64286
+349 45 v 419 w(VWL2Norm\(x,)h(w\);)p 46635 64685 45 1329
+v -22 67977 45 3293 v 11604 67977 V 12290 65614 a FA(Returns)279
+b(the)g(w)-31 b(eigh)g(ted)281 b(Euclidean)f Fp(`)28235
+65780 y Fn(2)29011 65614 y FA(norm)f(of)g(the)g Fy(N)p
+35451 65614 349 45 v 419 w(Vector)g(x)g FA(with)h(w)-31
+b(eigh)g(t)12290 67393 y(v)g(ector)370 b Fy(w)p FA(:)493
+b Fp(m)307 b FA(=)19443 66029 y Fl(q)p 20550 66029 6424
+45 v 533 x(P)21718 66836 y Fm(n)p Fo(\241)p Fn(1)21718
+67725 y Fm(i)p Fn(=0)23454 67393 y FA(\()p Fp(x)24517
+67559 y Fm(i)24886 67393 y Fp(w)25678 67559 y Fm(i)26047
+67393 y FA(\))26477 67073 y Fn(2)26974 67393 y FA(.)p
+46635 67977 45 3293 v -22 69306 45 1329 v 11604 69306
+V 46635 69306 V -22 70634 V 664 70235 a Fy(N)p 1315 70235
+349 45 v 419 w(VL1Norm)p 11604 70634 45 1329 v 6559 w(m)582
+b(=)f(N)p 15266 70235 349 45 v 419 w(VL1Norm\(x\);)p
+46635 70634 45 1329 v -22 72088 45 1455 v 11604 72088
+V 12290 71690 a FA(Returns)369 b(the)g Fp(`)18864 71856
+y Fn(1)19730 71690 y FA(norm)h(of)f(the)h Fy(N)p 26442
+71690 349 45 v 418 w(Vector)g(x)p FA(:)493 b Fp(m)307
+b FA(=)34475 70860 y Fl(P)35643 71133 y Fm(n)p Fo(\241)p
+Fn(1)35643 72022 y Fm(i)p Fn(=0)37563 71690 y Fs(j)p
+Fp(x)38503 71856 y Fm(i)38872 71690 y Fs(j)p FA(.)p 46635
+72088 45 1455 v 0 72133 46657 45 v -22 73461 45 1329
+v 35553 73062 a Fc(con)-28 b(tin)g(ued)341 b(on)g(next)h(page)p
+46635 73461 V 0 73505 46657 45 v Black Black eop
+%%Page: 65 73
+65 72 bop Black 4000 2701 a FB(6.1)425 b(The)g(NVECTOR)p
+15238 2701 382 45 v 459 w(SERIAL)f(implemen)-35 b(tation)21292
+b(65)p 4000 3144 48001 45 v Black 4000 5911 46657 45
+v 3978 7240 45 1329 v 4664 6841 a Fc(con)-28 b(tin)g(ued)341
+b(from)g(last)h(page)p 50635 7240 V 4000 7284 46657 45
+v 3978 8612 45 1329 v 4664 8214 a FB(Name)p 15604 8612
+V 8367 w(Usage)426 b(and)f(Description)p 50635 8612 V
+4000 8656 46657 45 v 4000 8878 V 3978 10206 45 1329 v
+15604 10206 V 50635 10206 V 3978 11535 V 4664 11136 a
+Fy(N)p 5315 11136 349 45 v 419 w(VCompare)p 15604 11535
+45 1329 v 5978 w(N)p 16941 11136 349 45 v 419 w(VCompare\(c,)583
+b(x,)e(z\);)p 50635 11535 45 1329 v 3978 14191 45 2657
+v 15604 14191 V 16290 12464 a FA(Compares)253 b(the)f(comp)31
+b(onen)-31 b(ts)253 b(of)f(the)g Fy(N)p 32697 12464 349
+45 v 418 w(Vector)h(x)e FA(to)i(the)f(scalar)g Fy(c)f
+FA(and)h(returns)16290 13793 y(an)370 b Fy(N)p 18479
+13793 V 419 w(Vector)f(z)h FA(suc)-31 b(h)368 b(that:)494
+b Fp(z)29474 13959 y Fm(i)30150 13793 y FA(=)308 b(1)p
+Fp(:)p FA(0)370 b(if)g Fs(j)p Fp(x)35057 13959 y Fm(i)35425
+13793 y Fs(j)308 b(\270)g Fp(c)369 b FA(and)g Fp(z)40724
+13959 y Fm(i)41400 13793 y FA(=)307 b(0)p Fp(:)p FA(0)371
+b(otherwise.)p 50635 14191 45 2657 v 3978 15520 45 1329
+v 15604 15520 V 50635 15520 V 3978 16848 V 4664 16449
+a Fy(N)p 5315 16449 349 45 v 419 w(VInvTest)p 15604 16848
+45 1329 v 5978 w(t)582 b(=)f(N)p 19266 16449 349 45 v
+419 w(VInvTest\(x,)h(z\);)p 50635 16848 45 1329 v 3978
+23490 45 6642 v 15604 23490 V 16290 17778 a FA(Sets)596
+b(the)g(comp)31 b(onen)-31 b(ts)596 b(of)h(the)e Fy(N)p
+31584 17778 349 45 v 419 w(Vector)h(z)g FA(to)g(b)31
+b(e)595 b(the)h(in)-31 b(v)g(erses)595 b(of)h(the)16290
+19106 y(comp)31 b(onen)-31 b(ts)585 b(of)e(the)g Fy(N)p
+26844 19106 V 419 w(Vector)g(x)p FA(,)637 b(with)584
+b(prior)f(testing)h(for)f(zero)g(v)-61 b(alues:)16290
+20434 y Fp(z)16805 20600 y Fm(i)17636 20434 y FA(=)463
+b(1)p Fp(:)p FA(0)p Fp(=x)21559 20600 y Fm(i)21929 20434
+y Fp(;)493 b(i)463 b FA(=)f(0)p Fp(;)184 b(:)g(:)g(:)189
+b(;)184 b(n)309 b Fs(\241)f FA(1.)772 b(This)463 b(routine)g(returns)e
+Fy(TRUE)h FA(if)h(all)h(com-)16290 21763 y(p)31 b(onen)-31
+b(ts)333 b(of)g Fy(x)f FA(are)g(nonzero)g(\(successful)g(in)-31
+b(v)g(ersion\))334 b(and)e(returns)f Fy(FALSE)i FA(oth-)16290
+23091 y(erwise.)p 50635 23490 45 6642 v 3978 24818 45
+1329 v 15604 24818 V 50635 24818 V 3978 26146 V 4664
+25748 a Fy(N)p 5315 25748 349 45 v 419 w(VConstrMask)p
+15604 26146 45 1329 v 4235 w(t)582 b(=)f(N)p 19266 25748
+349 45 v 419 w(VConstrMask\(c,)i(x,)e(m\);)p 50635 26146
+45 1329 v 3978 34117 45 7971 v 15604 34117 V 16290 27076
+a FA(P)-31 b(erforms)477 b(the)g(follo)-31 b(wing)481
+b(constrain)-31 b(t)478 b(tests:)707 b Fp(x)37081 27242
+y Fm(i)37936 27076 y Fp(>)487 b FA(0)477 b(if)g Fp(c)41915
+27242 y Fm(i)42770 27076 y FA(=)486 b(2,)505 b Fp(x)46115
+27242 y Fm(i)46969 27076 y Fs(\270)487 b FA(0)477 b(if)16290
+28405 y Fp(c)16769 28571 y Fm(i)17542 28405 y FA(=)403
+b(1,)442 b Fp(x)20741 28571 y Fm(i)21513 28405 y Fs(\267)403
+b FA(0)427 b(if)g Fp(c)25308 28571 y Fm(i)26080 28405
+y FA(=)404 b Fs(\241)p FA(1,)442 b Fp(x)30141 28571 y
+Fm(i)30912 28405 y Fp(<)404 b FA(0)427 b(if)g Fp(c)34708
+28571 y Fm(i)35480 28405 y FA(=)404 b Fs(\241)p FA(2.)665
+b(There)427 b(is)g(no)g(constrain)-31 b(t)16290 29733
+y(on)424 b Fp(x)18515 29899 y Fm(i)19307 29733 y FA(if)g
+Fp(c)20855 29899 y Fm(i)21622 29733 y FA(=)398 b(0.)657
+b(This)424 b(routine)g(returns)f Fy(FALSE)h FA(if)g(an)-31
+b(y)425 b(elemen)-31 b(t)425 b(failed)g(the)16290 31061
+y(constrain)-31 b(t)418 b(test,)429 b Fy(TRUE)417 b FA(if)g(all)g
+(passed.)634 b(It)416 b(also)h(sets)f(a)h(mask)g(v)-31
+b(ector)417 b Fy(m)p FA(,)428 b(with)16290 32390 y(elemen)-31
+b(ts)423 b(equal)g(to)f(1)p Fp(:)p FA(0)h(where)e(the)h(constrain)-31
+b(t)423 b(test)f(failed,)436 b(and)422 b(0)p Fp(:)p FA(0)h(where)16290
+33718 y(the)370 b(test)f(passed.)493 b(This)369 b(routine)h(is)f(used)g
+(only)h(for)f(constrain)-31 b(t)371 b(c)-31 b(hec)g(king.)p
+50635 34117 V 3978 35445 45 1329 v 15604 35445 V 50635
+35445 V 3978 36773 V 4664 36375 a Fy(N)p 5315 36375 349
+45 v 419 w(VMinQuotient)p 15604 36773 45 1329 v 3654
+w(minq)582 b(=)g(N)p 21010 36375 349 45 v 418 w(VMinQuotient\(num,)i
+(denom\);)p 50635 36773 45 1329 v 3978 42087 45 5314
+v 15604 42087 V 16290 37703 a FA(This)367 b(routine)g(returns)e(the)i
+(minim)-31 b(um)368 b(of)f(the)g(quotien)-31 b(ts)368
+b(obtained)g(b)-31 b(y)366 b(term-)16290 39031 y(wise)294
+b(dividing)h Fy(num)24560 39197 y Fm(i)25221 39031 y
+FA(b)-31 b(y)293 b Fy(denom)29587 39197 y Fm(i)29957
+39031 y FA(.)467 b(A)292 b(zero)h(elemen)-31 b(t)294
+b(in)g Fy(denom)f FA(will)i(b)31 b(e)292 b(skipp)31 b(ed.)16290
+40360 y(If)348 b(no)g(suc)-31 b(h)348 b(quotien)-31 b(ts)350
+b(are)d(found,)354 b(then)348 b(the)g(large)h(v)-61 b(alue)348
+b Fy(BIG)p 43097 40360 349 45 v 419 w(REAL)g FA(\(de\257ned)16290
+41688 y(in)370 b(the)f(header)g(\257le)h Fy(sundialstypes.h)p
+FA(\))h(is)f(returned.)p 50635 42087 45 5314 v 3978 43415
+45 1329 v 15604 43415 V 50635 43415 V 4000 43459 46657
+45 v 4000 48339 a Fu(6.1)1793 b(The)598 b(NVECTOR)p 21012
+48339 538 45 v 646 w(SERIAL)g(implemen)-50 b(tation)4000
+50897 y FA(The)531 b(serial)g(implemen)-31 b(tation)535
+b(of)d(the)f Fx(nvector)f FA(mo)31 b(dule)532 b(pro)-31
+b(vided)532 b(with)g Fx(sundials)p FA(,)570 b Fx(nvector)p
+47952 50897 368 45 v 441 w(serial)p FA(,)4000 52225 y(de\257nes)351
+b(the)g Fr(c)-57 b(ontent)352 b FA(\257eld)g(of)g Fy(N)p
+17639 52225 349 45 v 418 w(Vector)g FA(to)g(b)31 b(e)351
+b(a)h(structure)f(con)-31 b(taining)354 b(the)d(length)i(of)f(the)f(v)
+-31 b(ector,)356 b(a)c(p)31 b(oin)-31 b(ter)4000 53554
+y(to)249 b(the)g(b)31 b(eginning)250 b(of)f(a)f(con)-31
+b(tiguous)251 b(data)f(arra)-31 b(y)-92 b(,)273 b(and)249
+b(a)f(b)31 b(o)g(olean)250 b(\260ag)f Fr(own)p 35513
+53554 340 45 v 407 w(data)e FA(whic)-31 b(h)250 b(sp)31
+b(eci\257es)247 b(the)i(o)-31 b(wnership)4000 54882 y(of)370
+b Fr(data)p FA(.)p Black Black 4000 57382 a Fy(struct)582
+b(_N_VectorContent_Serial)j({)5162 58711 y(long)d(int)g(length;)5162
+60039 y(booleantype)h(own_data;)5162 61367 y(realtype)g(*data;)4000
+62696 y(};)4000 65124 y FA(The)438 b(follo)-31 b(wing)441
+b(\257v)-31 b(e)438 b(macros)g(are)g(pro)-31 b(vided)438
+b(to)h(access)e(the)h(con)-31 b(ten)g(t)440 b(of)e(an)g
+Fx(nvector)p 41956 65124 368 45 v 440 w(serial)g FA(v)-31
+b(ector.)699 b(The)4000 66453 y(su\261x)p 6997 66453
+349 45 v 788 w Fy(S)369 b FA(in)g(the)h(names)f(denotes)h(serial)f(v)
+-31 b(ersion.)p Black 5660 68881 a Fs(\262)p Black 554
+w Fy(NV)p 7999 68881 V 419 w(CONTENT)p 12485 68881 V
+420 w(S)6767 70796 y FA(This)370 b(routine)g(giv)-31
+b(es)370 b(access)f(to)h(the)f(con)-31 b(ten)g(ts)371
+b(of)e(the)h(serial)f(v)-31 b(ector)370 b Fy(N)p 36768
+70796 V 419 w(Vector)p FA(.)6767 72710 y(The)332 b(assignmen)-31
+b(t)333 b Fy(v)p 15319 72710 V 419 w(cont)e FA(=)h Fy(NV)p
+20748 72710 V 418 w(CONTENT)p 25233 72710 V 420 w(S\(v\))g
+FA(sets)f Fy(v)p 31017 72710 V 418 w(cont)h FA(to)g(b)31
+b(e)331 b(a)h(p)31 b(oin)-31 b(ter)332 b(to)g(the)g(serial)g
+Fy(N)p 48165 72710 V 418 w(Vector)6767 74038 y FA(con)-31
+b(ten)g(t)371 b(structure.)6767 75953 y(Implemen)-31
+b(tation:)6767 77867 y Fy(#define)583 b(NV_CONTENT_S\(v\))g(\()e
+(\(N_VectorContent_Serial\)\(v->content\))587 b(\))p
+Black Black eop
+%%Page: 66 74
+66 73 bop Black 0 2701 a FB(66)25219 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black Black 1660 6974 a Fs(\262)p Black 554 w Fy(NV)p
+3999 6974 349 45 v 419 w(OWN)p 6161 6974 V 419 w(DATA)p
+8904 6974 V 419 w(S)p FA(,)370 b Fy(NV)p 11743 6974 V
+418 w(DATA)p 14485 6974 V 419 w(S)p FA(,)g Fy(NV)p 17324
+6974 V 419 w(LENGTH)p 21229 6974 V 419 w(S)2767 8651
+y FA(These)f(macros)h(giv)-31 b(e)370 b(individual)i(access)d(to)h(the)
+f(parts)g(of)h(the)f(con)-31 b(ten)g(t)371 b(of)f(a)f(serial)h
+Fy(N)p 39410 8651 V 419 w(Vector)p FA(.)2767 10327 y(The)443
+b(assignmen)-31 b(t)445 b Fy(v)p 11542 10327 V 418 w(data)582
+b(=)f(NV)p 17190 10327 V 419 w(DATA)p 19933 10327 V 419
+w(S\(v\))443 b FA(sets)g Fy(v)p 25939 10327 V 418 w(data)g
+FA(to)h(b)31 b(e)442 b(a)h(p)31 b(oin)-31 b(ter)444 b(to)f(the)g
+(\257rst)f(comp)31 b(onen)-31 b(t)2767 11656 y(of)391
+b(the)e(data)i(for)f(the)g Fy(N)p 12810 11656 V 418 w(Vector)h(v)p
+FA(.)554 b(The)389 b(assignmen)-31 b(t)392 b Fy(NV)p
+27726 11656 V 419 w(DATA)p 30469 11656 V 419 w(S\(v\))581
+b(=)h(v)p 35537 11656 V 418 w(data)390 b FA(sets)f(the)h(comp)31
+b(onen)-31 b(t)2767 12984 y(arra)g(y)370 b(of)g Fy(v)f
+FA(to)h(b)31 b(e)368 b Fy(v)p 11385 12984 V 419 w(data)i
+FA(b)-31 b(y)369 b(storing)h(the)g(p)31 b(oin)-31 b(ter)370
+b Fy(v)p 26038 12984 V 418 w(data)p FA(.)2767 14661 y(The)308
+b(assignmen)-31 b(t)309 b Fy(v)p 11271 14661 V 418 w(len)582
+b(=)f(NV)p 16338 14661 V 419 w(LENGTH)p 20243 14661 V
+419 w(S\(v\))308 b FA(sets)e Fy(v)p 25977 14661 V 419
+w(len)h FA(to)h(b)31 b(e)307 b(the)g(length)i(of)e Fy(v)p
+FA(.)472 b(On)307 b(the)h(other)f(hand,)2767 15989 y(the)370
+b(call)g Fy(NV)p 7935 15989 V 419 w(LENGTH)p 11840 15989
+V 419 w(S\(v\))582 b(=)f(len)p 18070 15989 V 419 w(v)369
+b FA(sets)g(the)h(length)g(of)g Fy(v)f FA(to)h(b)31 b(e)368
+b Fy(len)p 33706 15989 V 419 w(v)p FA(.)2767 17666 y(Implemen)-31
+b(tation:)2767 19342 y Fy(#define)583 b(NV_OWN_DATA_S\(v\))g(\()e
+(NV_CONTENT_S\(v\)->own_data)k(\))2767 21019 y(#define)e
+(NV_DATA_S\(v\))g(\()e(NV_CONTENT_S\(v\)->data)j(\))2767
+22696 y(#define)f(NV_LENGTH_S\(v\))g(\()e(NV_CONTENT_S\(v\)->length)k
+(\))p Black 1660 24721 a Fs(\262)p Black 554 w Fy(NV)p
+3999 24721 V 419 w(Ith)p 6161 24721 V 419 w(S)2767 26397
+y FA(This)370 b(macro)g(giv)-31 b(es)370 b(access)f(to)h(the)f
+(individual)j(comp)31 b(onen)-31 b(ts)370 b(of)g(the)f(data)i(arra)-31
+b(y)369 b(of)h(an)f Fy(N)p 41187 26397 V 419 w(Vector)p
+FA(.)2767 28074 y(The)420 b(assignmen)-31 b(t)421 b Fy(r)582
+b(=)f(NV)p 14401 28074 V 419 w(Ith)p 16563 28074 V 419
+w(S\(v,i\))420 b FA(sets)f Fy(r)g FA(to)h(b)31 b(e)419
+b(the)h(v)-61 b(alue)420 b(of)g(the)g Fy(i)p FA(-th)g(comp)31
+b(onen)-31 b(t)421 b(of)f Fy(v)p FA(.)644 b(The)2767
+29402 y(assignmen)-31 b(t)371 b Fy(NV)p 9700 29402 V
+419 w(Ith)p 11862 29402 V 419 w(S\(v,i\))582 b(=)f(r)369
+b FA(sets)g(the)g(v)-61 b(alue)370 b(of)g(the)f Fy(i)p
+FA(-th)h(comp)31 b(onen)-31 b(t)371 b(of)e Fy(v)h FA(to)f(b)31
+b(e)369 b Fy(r)p FA(.)2767 31079 y(Here)g Fp(i)g FA(ranges)h(from)f(0)h
+(to)g Fp(n)246 b Fs(\241)g FA(1)370 b(for)f(a)g(v)-31
+b(ector)370 b(of)g(length)g Fp(n)p FA(.)2767 32756 y(Implemen)-31
+b(tation:)2767 34432 y Fy(#define)583 b(NV_Ith_S\(v,i\))g(\()e
+(NV_DATA_S\(v\)[i])i(\))0 36268 y FA(The)342 b Fx(nvector)p
+6975 36268 368 45 v 441 w(serial)f FA(mo)31 b(dule)343
+b(de\257nes)e(serial)i(implemen)-31 b(tations)345 b(of)e(all)g(v)-31
+b(ector)343 b(op)31 b(erations)343 b(listed)g(in)f(T)-92
+b(able)0 37597 y(6.1)370 b(and)g(pro)-31 b(vides)369
+b(the)h(follo)-31 b(wing)373 b(user-callable)d(routines:)p
+Black 1660 39433 a Fs(\262)p Black 554 w Fy(N)p 3418
+39433 349 45 v 419 w(VNew)p 6161 39433 V 419 w(Serial)2767
+41110 y FA(This)448 b(function)g(creates)f(and)g(allo)31
+b(cates)449 b(memory)f(for)f(a)g(serial)g Fy(N)p 31152
+41110 V 419 w(Vector)p FA(.)726 b(Its)447 b(only)g(argumen)-31
+b(t)449 b(is)e(the)2767 42438 y(v)-31 b(ector)370 b(length.)2767
+44115 y Fy(N_Vector)583 b(N_VNew_Serial\(long)h(int)d(vec_length\);)p
+Black 1660 46140 a Fs(\262)p Black 554 w Fy(N)p 3418
+46140 V 419 w(VNewEmpty)p 9066 46140 V 420 w(Serial)2767
+47816 y FA(This)370 b(function)h(creates)e(a)g(new)h(serial)f
+Fy(N)p 20078 47816 V 419 w(Vector)h FA(with)g(an)f(empt)-31
+b(y)371 b(\()p Fy(NULL)p FA(\))f(data)h(arra)-31 b(y)-92
+b(.)2767 49493 y Fy(N_Vector)583 b(N_VNewEmpty_Serial\(long)h(int)e
+(vec_length\);)p Black 1660 51518 a Fs(\262)p Black 554
+w Fy(N)p 3418 51518 V 419 w(VMake)p 6742 51518 V 419
+w(Serial)2767 53195 y FA(This)370 b(function)h(creates)e(and)g(allo)31
+b(cates)371 b(memory)g(for)e(a)g(serial)h(v)-31 b(ector)370
+b(with)g(user-pro)-31 b(vided)369 b(data)i(arra)-31 b(y)-92
+b(.)2767 54871 y Fy(N_Vector)583 b(N_VMake_Serial\(long)h(int)d
+(vec_length,)i(realtype)f(*v_data\);)p Black 1660 56896
+a Fs(\262)p Black 554 w Fy(N)p 3418 56896 V 419 w(VNewVectorArray)p
+12552 56896 V 421 w(Serial)2767 58573 y FA(This)370 b(function)h
+(creates)e(an)g(arra)-31 b(y)370 b(of)f Fy(count)h FA(serial)g(v)-31
+b(ectors.)2767 60250 y Fy(N_Vector)583 b
+(*N_VNewVectorArray_Serial\(int)i(count,)d(long)g(int)g(vec_length\);)p
+Black 1660 62275 a Fs(\262)p Black 554 w Fy(N)p 3418
+62275 V 419 w(VNewVectorArrayEmpty)p 15457 62275 V 421
+w(Serial)2767 63951 y FA(This)369 b(function)g(creates)f(an)g(arra)-31
+b(y)369 b(of)f Fy(count)h FA(serial)f(v)-31 b(ectors,)369
+b(eac)-31 b(h)369 b(with)g(an)f(empt)-31 b(y)370 b(\()p
+Fy(NULL)p FA(\))f(data)g(arra)-31 b(y)-92 b(.)2767 65628
+y Fy(N_Vector)583 b(*N_VNewVectorArrayEmpty_Serial\(int)j(count,)c
+(long)g(int)f(vec_length\);)p Black 1660 67653 a Fs(\262)p
+Black 554 w Fy(N)p 3418 67653 V 419 w(VDestroyVectorArray)p
+14876 67653 V 421 w(Serial)2767 69330 y FA(This)305 b(function)g(frees)
+e(memory)i(allo)31 b(cated)307 b(for)d(the)g(arra)-31
+b(y)305 b(of)f Fy(count)h FA(v)-61 b(ariables)304 b(of)h(t)-31
+b(yp)31 b(e)304 b Fy(N)p 40352 69330 V 419 w(Vector)h
+FA(created)2767 70658 y(with)371 b Fy(N)p 5940 70658
+V 418 w(VNewVectorArray)p 15073 70658 V 421 w(Serial)f
+FA(or)f(with)h Fy(N)p 23808 70658 V 419 w(VNewVectorArrayEmpty)p
+35847 70658 V 421 w(Serial)p FA(.)2767 72335 y Fy(void)582
+b(N_VDestroyVectorArray_Serial\(N_Vector)587 b(*vs,)582
+b(int)f(count\);)p Black 1660 74360 a Fs(\262)p Black
+554 w Fy(N)p 3418 74360 V 419 w(VPrint)p 7323 74360 V
+419 w(Serial)2767 76036 y FA(This)370 b(function)h(prin)-31
+b(ts)369 b(the)g(con)-31 b(ten)g(t)371 b(of)f(a)f(serial)h(v)-31
+b(ector)370 b(to)g Fy(stdout)p FA(.)2767 77713 y Fy(void)582
+b(N_VPrint_Serial\(N_Vector)j(v\);)p Black Black eop
+%%Page: 67 75
+67 74 bop Black 4000 2701 a FB(6.2)425 b(The)g(NVECTOR)p
+15238 2701 382 45 v 459 w(P)-106 b(ARALLEL)424 b(implemen)-35
+b(tation)19224 b(67)p 4000 3144 48001 45 v Black 4000
+6974 a(Notes)p Black 5660 9180 a Fs(\262)p Black 554
+w FA(When)438 b(lo)31 b(oping)440 b(o)-31 b(v)g(er)438
+b(the)g(comp)31 b(onen)-31 b(ts)439 b(of)g(an)f Fy(N)p
+28203 9180 349 45 v 419 w(Vector)g(v)p FA(,)456 b(it)438
+b(is)g(more)h(e\261cien)-31 b(t)439 b(to)g(\257rst)e(obtain)j(the)6767
+10508 y(comp)31 b(onen)-31 b(t)317 b(arra)-31 b(y)315
+b(via)h Fy(v)p 17624 10508 V 419 w(data)582 b(=)f(NV)p
+23273 10508 V 419 w(DATA)p 26016 10508 V 419 w(S\(v\))315
+b FA(and)g(then)g(access)g Fy(v)p 37438 10508 V 418 w(data[i])h
+FA(within)h(the)e(lo)31 b(op)316 b(than)6767 11836 y(it)370
+b(is)f(to)h(use)f Fy(NV)p 13485 11836 V 419 w(Ith)p 15647
+11836 V 419 w(S\(v,i\))g FA(within)i(the)f(lo)31 b(op.)p
+Black 5660 14823 a Fs(\262)p Black 1682 w @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1422 b FA(The)294 b Fx(nvector)p
+16528 14823 368 45 v 441 w(serial)f FA(constructor)i(functions)f
+Fy(N)p 31689 14823 349 45 v 419 w(VNewEmpty)p 37337 14823
+V 420 w(Serial)p FA(,)310 b Fy(N)p 42441 14823 V 418
+w(VMake)p 45764 14823 V 420 w(Serial)p FA(,)g(and)6767
+16152 y Fy(N)p 7418 16152 V 419 w(VNewVectorArrayEmpty)p
+19457 16152 V 421 w(Serial)247 b FA(set)f(the)h(\257eld)f
+Fr(own)p 31197 16152 340 45 v 407 w(data)f FA(=)h Fy(FALSE)p
+FA(.)h(The)g(functions)g Fy(N)p 45866 16152 349 45 v
+419 w(VDestroy)p 50933 16152 V 419 w(Serial)6767 17480
+y FA(and)j Fy(N)p 9451 17480 V 418 w(VDestroyVectorArray)p
+20908 17480 V 421 w(Serial)g FA(will)h(not)e(attempt)i(to)f(free)e(the)
+i(p)31 b(oin)-31 b(ter)249 b Fr(data)f FA(for)h(an)-31
+b(y)250 b Fy(N)p 48165 17480 V 418 w(Vector)6767 18808
+y FA(with)328 b Fr(own)p 11238 18808 340 45 v 407 w(data)d
+FA(set)i(to)g Fy(FALSE)p FA(.)g(In)f(suc)-31 b(h)326
+b(a)h(case,)335 b(it)327 b(is)f(the)h(user's)e(resp)31
+b(onsibilit)-31 b(y)328 b(to)g(deallo)31 b(cate)328 b(the)f
+Fr(data)6767 20137 y FA(p)31 b(oin)-31 b(ter.)p Black
+5660 23124 a Fs(\262)p Black 1682 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+
+
+ at endspecial Fd(!)1506 b FA(T)-92 b(o)377 b(maximize)j(e\261ciency)-92
+b(,)380 b(v)-31 b(ector)378 b(op)31 b(erations)378 b(in)g(the)f
+Fx(nvector)p 37943 23124 368 45 v 441 w(serial)f FA(implemen)-31
+b(tation)382 b(that)6767 24452 y(ha)-31 b(v)g(e)470 b(more)g(than)f
+(one)g Fy(N)p 17752 24452 349 45 v 419 w(Vector)h FA(argumen)-31
+b(t)470 b(do)f(not)h(c)-31 b(hec)g(k)469 b(for)g(consisten)-31
+b(t)470 b(in)-31 b(ternal)471 b(represen)-31 b(tation)6767
+25780 y(of)472 b(these)f(v)-31 b(ectors.)800 b(It)471
+b(is)g(the)h(user's)e(resp)31 b(onsibilit)-31 b(y)473
+b(to)f(ensure)e(that)j(suc)-31 b(h)470 b(routines)i(are)f(called)i
+(with)6767 27109 y Fy(N)p 7418 27109 V 419 w(Vector)370
+b FA(argumen)-31 b(ts)370 b(that)h(w)-31 b(ere)369 b(all)h(created)g
+(with)g(the)g(same)f(in)-31 b(ternal)371 b(represen)-31
+b(tations.)4000 30768 y Fu(6.2)1793 b(The)598 b(NVECTOR)p
+21012 30768 538 45 v 646 w(P)-149 b(ARALLEL)598 b(implemen)-50
+b(tation)4000 33192 y FA(The)278 b(parallel)h(implemen)-31
+b(tation)281 b(of)d(the)f Fx(nvector)h FA(mo)31 b(dule)278
+b(pro)-31 b(vided)278 b(with)g Fx(sundials)p FA(,)296
+b Fx(nvector)p 46435 33192 368 45 v 440 w(p)-74 b(arallel)p
+FA(,)4000 34521 y(de\257nes)345 b(the)i Fr(c)-57 b(ontent)347
+b FA(\257eld)f(of)h Fy(N)p 17613 34521 349 45 v 418 w(Vector)g
+FA(to)g(b)31 b(e)345 b(a)i(structure)e(con)-31 b(taining)349
+b(the)e(global)h(and)e(lo)31 b(cal)348 b(lengths)f(of)g(the)4000
+35849 y(v)-31 b(ector,)479 b(a)457 b(p)31 b(oin)-31 b(ter)457
+b(to)g(the)f(b)31 b(eginning)458 b(of)f(a)f(con)-31 b(tiguous)459
+b(lo)31 b(cal)457 b(data)h(arra)-31 b(y)-92 b(,)479 b(an)456
+b Fx(MPI)g FA(comm)-31 b(unicator,)481 b(an)457 b(a)4000
+37177 y(b)31 b(o)g(olean)370 b(\260ag)g Fr(own)p 12203
+37177 340 45 v 407 w(data)e FA(indicating)k(o)-31 b(wnership)370
+b(of)g(the)f(data)i(arra)-31 b(y)369 b Fr(data)p FA(.)p
+Black Black 4000 39383 a Fy(struct)582 b(_N_VectorContent_Parallel)j({)
+5162 40711 y(long)d(int)g(local_length;)5162 42040 y(long)g(int)g
+(global_length;)5162 43368 y(booleantype)h(own_data;)5162
+44696 y(realtype)g(*data;)5162 46025 y(MPI_Comm)g(comm;)4000
+47353 y(};)4000 49559 y FA(The)314 b(follo)-31 b(wing)318
+b(sev)-31 b(en)314 b(macros)g(are)g(pro)-31 b(vided)315
+b(to)g(access)f(the)g(con)-31 b(ten)g(t)316 b(of)e(a)h
+Fx(nvector)p 40786 49559 368 45 v 440 w(p)-74 b(arallel)315
+b FA(v)-31 b(ector.)476 b(The)4000 50887 y(su\261x)p
+6997 50887 349 45 v 788 w Fy(P)369 b FA(in)g(the)h(names)f(denotes)h
+(parallel)h(v)-31 b(ersion.)p Black 5660 53093 a Fs(\262)p
+Black 554 w Fy(NV)p 7999 53093 V 419 w(CONTENT)p 12485
+53093 V 420 w(P)6767 54862 y FA(This)370 b(macro)g(giv)-31
+b(es)370 b(access)f(to)h(the)f(con)-31 b(ten)g(ts)371
+b(of)e(the)h(parallel)h(v)-31 b(ector)370 b Fy(N)p 37316
+54862 V 418 w(Vector)p FA(.)6767 56631 y(The)355 b(assignmen)-31
+b(t)357 b Fy(v)p 15366 56631 V 419 w(cont)581 b(=)h(NV)p
+21015 56631 V 418 w(CONTENT)p 25500 56631 V 420 w(P\(v\))355
+b FA(sets)f Fy(v)p 31330 56631 V 419 w(cont)h FA(to)h(b)31
+b(e)354 b(a)h(p)31 b(oin)-31 b(ter)356 b(to)f(the)g Fy(N)p
+45780 56631 V 419 w(Vector)h FA(con-)6767 57960 y(ten)-31
+b(t)371 b(structure)d(of)i(t)-31 b(yp)31 b(e)370 b Fy(struct)p
+21710 57960 V 1000 w(N)p 22710 57960 V 419 w(VectorParallelContent)p
+FA(.)6767 59729 y(Implemen)-31 b(tation:)6767 61498 y
+Fy(#define)583 b(NV_CONTENT_P\(v\))g(\()e
+(\(N_VectorContent_Parallel\)\(v->content\))587 b(\))p
+Black 5660 63708 a Fs(\262)p Black 554 w Fy(NV)p 7999
+63708 V 419 w(OWN)p 10161 63708 V 419 w(DATA)p 12904
+63708 V 419 w(P)p FA(,)370 b Fy(NV)p 15743 63708 V 418
+w(DATA)p 18485 63708 V 419 w(P)p FA(,)g Fy(NV)p 21324
+63708 V 419 w(LOCLENGTH)p 26972 63708 V 420 w(P)p FA(,)f
+Fy(NV)p 29811 63708 V 419 w(GLOBLENGTH)p 36040 63708
+V 420 w(P)6767 65477 y FA(These)g(macros)h(giv)-31 b(e)370
+b(individual)i(access)d(to)h(the)f(parts)g(of)h(the)f(con)-31
+b(ten)g(t)371 b(of)f(a)f(parallel)i Fy(N)p 44449 65477
+V 419 w(Vector)p FA(.)6767 67246 y(The)341 b(assignmen)-31
+b(t)342 b Fy(v)p 15337 67246 V 418 w(data)582 b(=)f(NV)p
+20985 67246 V 419 w(DATA)p 23728 67246 V 419 w(P\(v\))340
+b FA(sets)g Fy(v)p 29528 67246 V 419 w(data)g FA(to)h(b)31
+b(e)340 b(a)g(p)31 b(oin)-31 b(ter)341 b(to)g(the)f(\257rst)g(comp)31
+b(onen)-31 b(t)341 b(of)6767 68574 y(the)276 b(lo)31
+b(cal)276 b(data)h(for)e(the)g Fy(N)p 17590 68574 V 419
+w(Vector)g(v)p FA(.)461 b(The)276 b(assignmen)-31 b(t)276
+b Fy(NV)p 32069 68574 V 419 w(DATA)p 34812 68574 V 419
+w(P\(v\))582 b(=)f(v)p 39880 68574 V 419 w(data)275 b
+FA(sets)g(the)g(comp)31 b(onen)-31 b(t)6767 69903 y(arra)g(y)370
+b(of)g Fy(v)f FA(to)h(b)31 b(e)368 b Fy(v)p 15385 69903
+V 419 w(data)i FA(b)-31 b(y)369 b(storing)h(the)g(p)31
+b(oin)-31 b(ter)370 b Fy(v)p 30038 69903 V 418 w(data)p
+FA(.)6767 71672 y(The)407 b(assignmen)-31 b(t)408 b Fy(v)p
+15469 71672 V 419 w(llen)581 b(=)h(NV)p 21118 71672 V
+418 w(LOCLENGTH)p 26765 71672 V 420 w(P\(v\))407 b FA(sets)f
+Fy(v)p 32699 71672 V 418 w(llen)h FA(to)g(b)31 b(e)406
+b(the)h(length)g(of)g(the)g(lo)31 b(cal)407 b(part)6767
+73000 y(of)370 b Fy(v)p FA(.)493 b(The)369 b(call)i Fy(NV)p
+14946 73000 V 418 w(LENGTH)p 18850 73000 V 420 w(P\(v\))581
+b(=)h(llen)p 25662 73000 V 419 w(v)369 b FA(sets)g(the)g(lo)31
+b(cal)371 b(length)f(of)g Fy(v)f FA(to)h(b)31 b(e)369
+b Fy(llen)p 44493 73000 V 419 w(v)p FA(.)6767 74769 y(The)517
+b(assignmen)-31 b(t)518 b Fy(v)p 15689 74769 V 419 w(glen)582
+b(=)f(NV)p 21338 74769 V 419 w(GLOBLENGTH)p 27567 74769
+V 420 w(P\(v\))516 b FA(sets)h Fy(v)p 33721 74769 V 418
+w(glen)g FA(to)g(b)31 b(e)516 b(the)h(global)i(length)f(of)f(the)6767
+76098 y(v)-31 b(ector)370 b Fy(v)p FA(.)493 b(The)369
+b(call)i Fy(NV)p 17009 76098 V 419 w(GLOBLENGTH)p 23238
+76098 V 419 w(P\(v\))582 b(=)g(glen)p 30050 76098 V 419
+w(v)369 b FA(sets)f(the)i(global)h(length)g(of)e Fy(v)g
+FA(to)h(b)31 b(e)369 b Fy(glen)p 49526 76098 V 419 w(v)p
+FA(.)6767 77867 y(Implemen)-31 b(tation:)p Black Black
+eop
+%%Page: 68 76
+68 75 bop Black 0 2701 a FB(68)25219 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black 2767 6974 a Fy(#define)583 b(NV_OWN_DATA_P\(v\))1745
+b(\()582 b(NV_CONTENT_P\(v\)->own_data)j(\))2767 8698
+y(#define)e(NV_DATA_P\(v\))4069 b(\()582 b(NV_CONTENT_P\(v\)->data)i
+(\))2767 10421 y(#define)f(NV_LOCLENGTH_P\(v\))1164 b(\()582
+b(NV_CONTENT_P\(v\)->local_length)j(\))2767 12145 y(#define)e
+(NV_GLOBLENGTH_P\(v\))g(\()f(NV_CONTENT_P\(v\)->global_length)j(\))p
+Black 1660 14264 a Fs(\262)p Black 554 w Fy(NV)p 3999
+14264 349 45 v 419 w(COMM)p 6742 14264 V 419 w(P)2767
+15988 y FA(This)393 b(macro)h(pro)-31 b(vides)392 b(access)h(to)g(the)g
+Fx(MPI)e FA(comm)-31 b(unicator)396 b(used)c(b)-31 b(y)393
+b(the)f Fx(nvector)p 40443 15988 368 45 v 441 w(p)-74
+b(arallel)394 b FA(v)-31 b(ec-)2767 17316 y(tors.)2767
+19040 y(Implemen)g(tation:)2767 20763 y Fy(#define)583
+b(NV_COMM_P\(v\))g(\()e(NV_CONTENT_P\(v\)->comm)j(\))p
+Black 1660 22882 a Fs(\262)p Black 554 w Fy(NV)p 3999
+22882 349 45 v 419 w(Ith)p 6161 22882 V 419 w(P)2767
+24606 y FA(This)370 b(macro)g(giv)-31 b(es)370 b(access)f(to)h(the)f
+(individual)j(comp)31 b(onen)-31 b(ts)370 b(of)g(the)f(lo)31
+b(cal)371 b(data)f(arra)-31 b(y)370 b(of)g(an)f Fy(N)p
+43801 24606 V 419 w(Vector)p FA(.)2767 26330 y(The)g(assignmen)-31
+b(t)371 b Fy(r)581 b(=)g(NV)p 14299 26330 V 419 w(Ith)p
+16461 26330 V 419 w(P\(v,i\))369 b FA(sets)f Fy(r)h FA(to)g(b)31
+b(e)368 b(the)h(v)-61 b(alue)369 b(of)g(the)g Fy(i)p
+FA(-th)g(comp)31 b(onen)-31 b(t)370 b(of)f(the)g(lo)31
+b(cal)2767 27658 y(part)456 b(of)f Fy(v)p FA(.)750 b(The)455
+b(assignmen)-31 b(t)457 b Fy(NV)p 17619 27658 V 418 w(Ith)p
+19780 27658 V 419 w(P\(v,i\))582 b(=)g(r)455 b FA(sets)f(the)h(v)-61
+b(alue)456 b(of)f(the)g Fy(i)p FA(-th)h(comp)31 b(onen)-31
+b(t)456 b(of)g(the)2767 28987 y(lo)31 b(cal)371 b(part)f(of)f
+Fy(v)g FA(to)h(b)31 b(e)369 b Fy(r)p FA(.)2767 30710
+y(Here)g Fp(i)g FA(ranges)h(from)f(0)h(to)g Fp(n)246
+b Fs(\241)g FA(1,)370 b(where)f Fp(n)g FA(is)h(the)f(lo)31
+b(cal)371 b(length.)2767 32434 y(Implemen)-31 b(tation:)2767
+34158 y Fy(#define)583 b(NV_Ith_P\(v,i\))g(\()e(NV_DATA_P\(v\)[i])i(\))
+0 36182 y FA(The)384 b Fx(nvector)p 7017 36182 368 45
+v 441 w(p)-74 b(arallel)384 b FA(mo)31 b(dule)385 b(de\257nes)e
+(parallel)j(implemen)-31 b(tations)387 b(of)e(all)g(v)-31
+b(ector)384 b(op)31 b(erations)385 b(listed)g(in)0 37510
+y(T)-92 b(able)370 b(6.1)h(and)e(pro)-31 b(vides)370
+b(the)f(follo)-31 b(wing)373 b(user-callable)d(routines:)p
+Black 1660 39534 a Fs(\262)p Black 554 w Fy(N)p 3418
+39534 349 45 v 419 w(VNew)p 6161 39534 V 419 w(Parallel)2767
+41258 y FA(This)g(function)h(creates)e(and)g(allo)31
+b(cates)371 b(memory)g(for)e(a)g(parallel)i(v)-31 b(ector.)p
+Black Black 2767 43851 a Fy(N_Vector)583 b(N_VNew_Parallel\(MPI_Comm)h
+(comm,)17296 45180 y(long)e(int)f(local_length,)17296
+46508 y(long)h(int)f(global_length\);)p Black 1660 49102
+a Fs(\262)p Black 554 w Fy(N)p 3418 49102 V 419 w(VNewEmpty)p
+9066 49102 V 420 w(Parallel)2767 50825 y FA(This)370
+b(function)h(creates)e(a)g(new)h(parallel)g Fy(N)p 21117
+50825 V 419 w(Vector)g FA(with)g(an)g(empt)-31 b(y)370
+b(\()p Fy(NULL)p FA(\))h(data)f(arra)-31 b(y)-92 b(.)p
+Black Black 2767 53419 a Fy(N_Vector)583 b
+(N_VNewEmpty_Parallel\(MPI_Comm)i(comm,)20202 54747 y(long)d(int)f
+(local_length,)20202 56076 y(long)h(int)f(global_length\);)p
+Black 1660 58669 a Fs(\262)p Black 554 w Fy(N)p 3418
+58669 V 419 w(VMake)p 6742 58669 V 419 w(Parallel)2767
+60393 y FA(This)305 b(function)g(creates)e(and)h(allo)31
+b(cates)306 b(memory)f(for)f(a)g(parallel)h(v)-31 b(ector)305
+b(with)g(user-pro)-31 b(vided)303 b(data)i(arra)-31 b(y)-92
+b(.)p Black Black 2767 62986 a Fy(N_Vector)583 b
+(N_VMake_Parallel\(MPI_Comm)i(comm,)17877 64314 y(long)d(int)g
+(local_length,)17877 65643 y(long)g(int)g(global_length,)17877
+66971 y(realtype)h(*v_data\);)p Black 1660 69565 a Fs(\262)p
+Black 554 w Fy(N)p 3418 69565 V 419 w(VNewVectorArray)p
+12552 69565 V 421 w(Parallel)2767 71288 y FA(This)370
+b(function)h(creates)e(an)g(arra)-31 b(y)370 b(of)f Fy(count)h
+FA(parallel)h(v)-31 b(ectors.)p Black Black 2767 73882
+a Fy(N_Vector)583 b(*N_VNewVectorArray_Parallel\(int)j(count,)24270
+75210 y(MPI_Comm)c(comm,)24270 76539 y(long)g(int)f(local_length,)24270
+77867 y(long)h(int)f(global_length\);)p Black Black eop
+%%Page: 69 77
+69 76 bop Black 4000 2701 a FB(6.3)425 b(NVECTOR)g(functions)g(used)h
+(b)-35 b(y)424 b(ID)-35 b(A)25174 b(69)p 4000 3144 48001
+45 v Black Black 5660 6974 a Fs(\262)p Black 554 w Fy(N)p
+7418 6974 349 45 v 419 w(VNewVectorArrayEmpty)p 19457
+6974 V 421 w(Parallel)6767 8735 y FA(This)299 b(function)g(creates)e
+(an)i(arra)-31 b(y)298 b(of)g Fy(count)g FA(parallel)i(v)-31
+b(ectors,)313 b(eac)-31 b(h)298 b(with)h(an)f(empt)-31
+b(y)299 b(\()p Fy(NULL)p FA(\))g(data)g(arra)-31 b(y)-92
+b(.)p Black Black 6767 11554 a Fy(N_Vector)583 b
+(*N_VNewVectorArrayEmpty_Parallel\(int)j(count,)31176
+12882 y(MPI_Comm)c(comm,)31176 14210 y(long)f(int)h(local_length,)31176
+15539 y(long)f(int)h(global_length\);)p Black 5660 18357
+a Fs(\262)p Black 554 w Fy(N)p 7418 18357 V 419 w(VDestroyVectorArray)p
+18876 18357 V 421 w(Parallel)6767 20118 y FA(This)305
+b(function)g(frees)e(memory)i(allo)31 b(cated)307 b(for)d(the)g(arra)
+-31 b(y)305 b(of)f Fy(count)h FA(v)-61 b(ariables)304
+b(of)h(t)-31 b(yp)31 b(e)304 b Fy(N)p 44352 20118 V 419
+w(Vector)h FA(created)6767 21447 y(with)371 b Fy(N)p
+9940 21447 V 418 w(VNewVectorArray)p 19073 21447 V 421
+w(Parallel)f FA(or)f(with)i Fy(N)p 28971 21447 V 418
+w(VNewVectorArrayEmpty)p 41009 21447 V 422 w(Parallel)p
+FA(.)6767 23208 y Fy(void)582 b
+(N_VDestroyVectorArray_Parallel\(N_Vector)587 b(*vs,)582
+b(int)f(count\);)p Black 5660 25402 a Fs(\262)p Black
+554 w Fy(N)p 7418 25402 V 419 w(VPrint)p 11323 25402
+V 419 w(Parallel)6767 27163 y FA(This)370 b(function)h(prin)-31
+b(ts)369 b(the)g(con)-31 b(ten)g(t)371 b(of)f(a)f(parallel)i(v)-31
+b(ector)370 b(to)g(stdout.)6767 28925 y Fy(void)582 b
+(N_VPrint_Parallel\(N_Vector)j(v\);)4000 31793 y FB(Notes)p
+Black 5660 33968 a Fs(\262)p Black 554 w FA(When)438
+b(lo)31 b(oping)440 b(o)-31 b(v)g(er)438 b(the)g(comp)31
+b(onen)-31 b(ts)439 b(of)g(an)f Fy(N)p 28203 33968 V
+419 w(Vector)g(v)p FA(,)456 b(it)438 b(is)g(more)h(e\261cien)-31
+b(t)439 b(to)g(\257rst)e(obtain)j(the)6767 35296 y(lo)31
+b(cal)314 b(comp)31 b(onen)-31 b(t)314 b(arra)-31 b(y)312
+b(via)i Fy(v)p 20173 35296 V 418 w(data)582 b(=)f(NV)p
+25821 35296 V 419 w(DATA)p 28564 35296 V 419 w(P\(v\))312
+b FA(and)h(then)f(access)g Fy(v)p 39975 35296 V 419 w(data[i])h
+FA(within)g(the)g(lo)31 b(op)6767 36624 y(than)370 b(it)g(is)f(to)h
+(use)f Fy(NV)p 16068 36624 V 419 w(Ith)p 18230 36624
+V 419 w(P\(v,i\))g FA(within)i(the)f(lo)31 b(op.)p Black
+5660 39595 a Fs(\262)p Black 1682 w @beginspecial @setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+
+
+ at endspecial Fd(!)1375 b FA(The)246 b Fx(nvector)p 16433
+39595 368 45 v 441 w(p)-74 b(arallel)247 b FA(constructor)g(functions)g
+Fy(N)p 32969 39595 349 45 v 419 w(VNewEmpty)p 38617 39595
+V 419 w(Parallel)p FA(,)273 b Fy(N)p 44845 39595 V 418
+w(VMake)p 48168 39595 V 419 w(Parallel)p FA(,)6767 40924
+y(and)247 b Fy(N)p 9448 40924 V 418 w(VNewVectorArrayEmpty)p
+21486 40924 V 422 w(Parallel)g FA(set)f(the)h(\257eld)f
+Fr(own)p 34389 40924 340 45 v 407 w(data)f FA(=)h Fy(FALSE)p
+FA(.)h(The)g(functions)g Fy(N)p 49058 40924 349 45 v
+418 w(VDestroy)p 54124 40924 V 420 w(Parallel)6767 42252
+y FA(and)574 b Fy(N)p 9775 42252 V 419 w(VDestroyVectorArray)p
+21233 42252 V 421 w(Parallel)h FA(will)g(not)g(attempt)h(to)e(free)f
+(the)h(p)31 b(oin)-31 b(ter)575 b Fr(data)d FA(for)i(an)-31
+b(y)6767 43580 y Fy(N)p 7418 43580 V 419 w(Vector)292
+b FA(with)g Fr(own)p 15980 43580 340 45 v 407 w(data)e
+FA(set)h(to)h Fy(FALSE)p FA(.)g(In)e(suc)-31 b(h)291
+b(a)g(case,)308 b(it)291 b(is)g(the)h(user's)e(resp)31
+b(onsibilit)-31 b(y)293 b(to)e(deallo)31 b(cate)6767
+44909 y(the)370 b Fr(data)e FA(p)31 b(oin)-31 b(ter.)p
+Black 5660 47880 a Fs(\262)p Black 1682 w @beginspecial
+ at setspecial
+ tx at Dict begin STP newpath 0.8 SLW 0. setgray  /Lineto /lineto load
+def false pop .5 22.94966 19.87512 0 -90 mul 1.28471 -3.8 Triangle
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. 1. 0. setrgbcolor gsave fill grestore stroke grestore
+gsave 1. 1. 0. setrgbcolor fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke  grestore end
+ 
+ at endspecial Fd(!)1602 b FA(T)-92 b(o)474
+b(maximize)h(e\261ciency)-92 b(,)500 b(v)-31 b(ector)474
+b(op)31 b(erations)475 b(in)e(the)h Fx(nvector)p 38736
+47880 368 45 v 440 w(p)-74 b(arallel)475 b FA(implemen)-31
+b(tation)6767 49208 y(that)278 b(ha)-31 b(v)g(e)278 b(more)f(than)h
+(one)f Fy(N)p 19290 49208 349 45 v 418 w(Vector)h FA(argumen)-31
+b(t)278 b(do)f(not)g(c)-31 b(hec)g(k)278 b(for)e(consisten)-31
+b(t)278 b(in)-31 b(ternal)279 b(represen)-31 b(tation)6767
+50537 y(of)458 b(these)e(v)-31 b(ectors.)756 b(It)457
+b(is)g(the)g(user's)f(resp)31 b(onsabilit)-31 b(y)458
+b(to)g(ensure)d(that)j(suc)-31 b(h)457 b(routines)g(are)g(called)h
+(with)6767 51865 y Fy(N)p 7418 51865 V 419 w(Vector)370
+b FA(argumen)-31 b(ts)370 b(that)h(w)-31 b(ere)369 b(all)h(created)g
+(with)g(the)g(same)f(in)-31 b(ternal)371 b(represen)-31
+b(tations.)4000 55517 y Fu(6.3)1793 b(NVECTOR)598 b(functions)h(used)f
+(b)-50 b(y)599 b(ID)-50 b(A)4000 57942 y FA(In)407 b(T)-92
+b(able)408 b(6.2)g(b)31 b(elo)-31 b(w,)419 b(w)-31 b(e)407
+b(list)i(the)e(v)-31 b(ector)408 b(functions)g(in)g(the)f
+Fx(nvector)g FA(mo)31 b(dule)409 b(used)d(b)-31 b(y)408
+b(the)f Fx(id)-25 b(a)407 b FA(pac)-31 b(k)-61 b(age.)4000
+59270 y(The)489 b(table)h(also)g(sho)-31 b(ws,)520 b(for)489
+b(eac)-31 b(h)490 b(function,)521 b(whic)-31 b(h)489
+b(of)h(the)f(co)31 b(de)489 b(mo)31 b(dules)490 b(uses)e(the)h
+(function.)854 b(The)489 b Fx(id)-25 b(a)4000 60598 y
+FA(column)363 b(sho)-31 b(ws)362 b(function)h(usage)e(within)j(the)e
+(main)g(in)-31 b(tegrator)364 b(mo)31 b(dule,)364 b(while)f(the)f
+(remaining)h(four)f(columns)4000 61927 y(sho)-31 b(w)393
+b(function)g(usage)f(within)i(eac)-31 b(h)392 b(of)h(the)f(three)g
+Fx(id)-25 b(a)392 b FA(linear)g(solv)-31 b(ers)392 b(and)h(the)f
+Fx(id)-25 b(abbdpre)393 b FA(preconditioner)4000 63255
+y(mo)31 b(dule.)5660 64583 y(There)345 b(is)g(one)h(subtlet)-31
+b(y)346 b(in)g(the)f Fx(id)-25 b(aspgmr)344 b FA(column)i(hidden)g(b)
+-31 b(y)345 b(the)g(table.)486 b(The)346 b Fy(N)p 41602
+64583 V 418 w(VDotProd)g FA(function)h(is)4000 65912
+y(called)357 b(b)31 b(oth)356 b(within)h(the)f(implemen)-31
+b(tation)360 b(\257le)355 b Fy(idaspgmr.c)i FA(for)f(the)g
+Fx(id)-25 b(aspgmr)354 b FA(solv)-31 b(er)356 b(and)g(within)h(the)f
+(im-)4000 67240 y(plemen)-31 b(tation)271 b(\257les)d
+Fy(spgmr.c)g FA(and)g Fy(iterative.c)h FA(for)f(the)g(generic)g
+Fx(spgmr)e FA(solv)-31 b(er)269 b(up)31 b(on)267 b(whic)-31
+b(h)269 b(the)f Fx(id)-25 b(aspgmr)4000 68568 y FA(solv)-31
+b(er)319 b(is)g(implemen)-31 b(ted.)478 b(Also,)330 b(although)321
+b Fy(N)p 23098 68568 V 419 w(VDiv)e FA(and)g Fy(N)p 28843
+68568 V 418 w(VProd)h FA(are)e(not)i(called)g(within)g(the)g(implemen)
+-31 b(tation)4000 69897 y(\257le)370 b Fy(idaspgmr.c)p
+FA(,)h(they)f(are)f(called)i(within)g(the)f(implemen)-31
+b(tation)373 b(\257le)d Fy(spgmr.c)g FA(and)g(so)g(are)f(required)g(b)
+-31 b(y)370 b(the)4000 71225 y Fx(id)-25 b(aspgmr)366
+b FA(solv)-31 b(er)368 b(mo)31 b(dule.)493 b(This)368
+b(issue)f(do)31 b(es)367 b(not)i(arise)e(for)h(the)f(other)h(t)-31
+b(w)g(o)369 b Fx(id)-25 b(a)368 b FA(linear)g(solv)-31
+b(ers)367 b(b)31 b(ecause)368 b(the)4000 72553 y(generic)443
+b Fx(dense)g FA(and)g Fx(band)g FA(solv)-31 b(ers)443
+b(\(used)g(in)g(the)g(implemen)-31 b(tation)447 b(of)c
+Fx(id)-25 b(adense)444 b FA(and)f Fx(id)-25 b(aband)p
+FA(\))443 b(do)g(not)4000 73882 y(mak)-31 b(e)370 b(calls)g(to)g(an)-31
+b(y)370 b(v)-31 b(ector)370 b(functions.)5660 75210 y(F)-92
+b(our)246 b(of)h(the)f(functions)h(listed)g(in)g(T)-92
+b(able)247 b(6.1,)272 b Fy(N)p 25277 75210 V 419 w(VWL2Norm)p
+FA(,)g Fy(N)p 31504 75210 V 419 w(VL1Norm)p FA(,)g Fy(N)p
+37150 75210 V 419 w(VCloneEmpty)p FA(,)g(and)247 b Fy(N)p
+47150 75210 V 418 w(VInvTest)4000 76539 y FA(are)458
+b Fr(not)h FA(used)e(b)-31 b(y)459 b Fx(id)-25 b(a)p
+FA(.)761 b(Therefore)458 b(a)h(user-supplied)f Fx(nvector)h
+FA(mo)31 b(dule)459 b(for)g Fx(id)-25 b(a)458 b FA(could)h(omit)i
+(these)d(three)4000 77867 y(functions.)p Black Black
+eop
+%%Page: 70 78
+70 77 bop Black 0 2701 a FB(70)25219 b(Description)426
+b(of)e(the)h(NVECTOR)h(mo)35 b(dule)p 0 3144 48001 45
+v Black Black Black 9009 24764 a FA(T)-92 b(able)370
+b(6.2:)494 b(List)370 b(of)g(v)-31 b(ector)369 b(functions)i(usage)e(b)
+-31 b(y)370 b Fx(id)-25 b(a)369 b FA(co)31 b(de)369 b(mo)31
+b(dules)p Black 12560 25799 22881 45 v 12538 31754 45
+5956 v 24164 31754 V 25596 31356 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 25596 31356 a Fx(id)-25
+b(a)27276 31356 y
+ currentpoint grestore moveto
+ 27276 31356 a 26415 31754 45 5956 v
+27847 31356 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 27847 31356 a Fx(id)g(adense)32639 31356
+y
+ currentpoint grestore moveto
+ 32639 31356 a 28666 31754 45 5956 v 30098 31356 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 30098
+31356 a Fx(id)g(aband)34469 31356 y
+ currentpoint grestore moveto
+ 34469 31356 a 30916
+31754 45 5956 v 32348 31356 a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 32348 31356 a Fx(id)g(aspgmr)37356
+31356 y
+ currentpoint grestore moveto
+ 37356 31356 a 33167 31754 45 5956 v 34599 31356
+a
+ gsave currentpoint currentpoint translate 90 neg rotate neg exch neg
+exch translate
+ 34599 31356 a Fx(id)g(abbdpre)40156 31356 y
+ currentpoint grestore moveto
+ 40156 31356
+a 35418 31754 45 5956 v 12560 31798 22881 45 v 12560
+32020 V 12538 33348 45 1329 v 19035 32950 a Fy(N)p 19686
+32950 349 45 v 419 w(VClone)p 24164 33348 45 1329 v 1329
+w Fb(X)p 26415 33348 V 28666 33348 V 30916 33348 V 5831
+w(X)p 33167 33348 V 1329 w(X)p 35418 33348 V 12560 33392
+22881 45 v 12538 34721 45 1329 v 17873 34322 a Fy(N)p
+18524 34322 349 45 v 419 w(VDestroy)p 24164 34721 45
+1329 v 1329 w Fb(X)p 26415 34721 V 28666 34721 V 30916
+34721 V 5831 w(X)p 33167 34721 V 1329 w(X)p 35418 34721
+V 12560 34765 22881 45 v 12538 36093 45 1329 v 19035
+35695 a Fy(N)p 19686 35695 349 45 v 419 w(VSpace)p 24164
+36093 45 1329 v 1329 w Fb(X)p 26415 36093 V 28666 36093
+V 30916 36093 V 33167 36093 V 35418 36093 V 12560 36138
+22881 45 v 12538 37466 45 1329 v 13224 37068 a Fy(N)p
+13875 37068 349 45 v 419 w(VGetArrayPointer)p 24164 37466
+45 1329 v 26415 37466 V 3581 w Fb(X)p 28666 37466 V 1329
+w(X)p 30916 37466 V 33167 37466 V 3580 w(X)p 35418 37466
+V 12560 37510 22881 45 v 12538 38839 45 1329 v 13224
+38440 a Fy(N)p 13875 38440 349 45 v 419 w(VSetArrayPointer)p
+24164 38839 45 1329 v 26415 38839 V 3581 w Fb(X)p 28666
+38839 V 30916 38839 V 33167 38839 V 35418 38839 V 12560
+38883 22881 45 v 12538 40211 45 1329 v 16711 39813 a
+Fy(N)p 17362 39813 349 45 v 418 w(VLinearSum)p 24164
+40211 45 1329 v 1330 w Fb(X)p 26415 40211 V 1329 w(X)p
+28666 40211 V 30916 40211 V 3580 w(X)p 33167 40211 V
+35418 40211 V 12560 40256 22881 45 v 12538 41584 45 1329
+v 19035 41185 a Fy(N)p 19686 41185 349 45 v 419 w(VConst)p
+24164 41584 45 1329 v 1329 w Fb(X)p 26415 41584 V 28666
+41584 V 30916 41584 V 5831 w(X)p 33167 41584 V 35418
+41584 V 12560 41628 22881 45 v 12538 42957 45 1329 v
+19617 42558 a Fy(N)p 20268 42558 349 45 v 418 w(VProd)p
+24164 42957 45 1329 v 1329 w Fb(X)p 26415 42957 V 28666
+42957 V 30916 42957 V 5831 w(X)p 33167 42957 V 35418
+42957 V 12560 43001 22881 45 v 12538 44329 45 1329 v
+20198 43931 a Fy(N)p 20849 43931 349 45 v 418 w(VDiv)p
+24164 44329 45 1329 v 1329 w Fb(X)p 26415 44329 V 28666
+44329 V 30916 44329 V 5831 w(X)p 33167 44329 V 35418
+44329 V 12560 44374 22881 45 v 12538 45702 45 1329 v
+19035 45303 a Fy(N)p 19686 45303 349 45 v 419 w(VScale)p
+24164 45702 45 1329 v 1329 w Fb(X)p 26415 45702 V 1329
+w(X)p 28666 45702 V 1329 w(X)p 30916 45702 V 1329 w(X)p
+33167 45702 V 1329 w(X)p 35418 45702 V 12560 45746 22881
+45 v 12538 47075 45 1329 v 20198 46676 a Fy(N)p 20849
+46676 349 45 v 418 w(VAbs)p 24164 47075 45 1329 v 1329
+w Fb(X)p 26415 47075 V 28666 47075 V 30916 47075 V 33167
+47075 V 35418 47075 V 12560 47119 22881 45 v 12538 48447
+45 1329 v 20198 48049 a Fy(N)p 20849 48049 349 45 v 418
+w(VInv)p 24164 48447 45 1329 v 1329 w Fb(X)p 26415 48447
+V 28666 48447 V 30916 48447 V 33167 48447 V 35418 48447
+V 12560 48491 22881 45 v 12538 49820 45 1329 v 17292
+49421 a Fy(N)p 17943 49421 349 45 v 419 w(VAddConst)p
+24164 49820 45 1329 v 1329 w Fb(X)p 26415 49820 V 28666
+49820 V 30916 49820 V 33167 49820 V 35418 49820 V 12560
+49864 22881 45 v 12538 51192 45 1329 v 17873 50794 a
+Fy(N)p 18524 50794 349 45 v 419 w(VDotProd)p 24164 51192
+45 1329 v 26415 51192 V 28666 51192 V 30916 51192 V 8082
+w Fb(X)p 33167 51192 V 35418 51192 V 12560 51237 22881
+45 v 12538 52565 45 1329 v 17873 52167 a Fy(N)p 18524
+52167 349 45 v 419 w(VMaxNorm)p 24164 52565 45 1329 v
+1329 w Fb(X)p 26415 52565 V 28666 52565 V 30916 52565
+V 33167 52565 V 35418 52565 V 12560 52609 22881 45 v
+12538 53938 45 1329 v 17292 53539 a Fy(N)p 17943 53539
+349 45 v 419 w(VWrmsNorm)p 24164 53938 45 1329 v 1329
+w Fb(X)p 26415 53938 V 28666 53938 V 30916 53938 V 33167
+53938 V 35418 53938 V 12560 53982 22881 45 v 12538 55310
+45 1329 v 20198 54912 a Fy(N)p 20849 54912 349 45 v 418
+w(VMin)p 24164 55310 45 1329 v 1329 w Fb(X)p 26415 55310
+V 28666 55310 V 30916 55310 V 33167 55310 V 35418 55310
+V 12560 55355 22881 45 v 12538 56683 45 1329 v 15549
+56284 a Fy(N)p 16200 56284 349 45 v 418 w(VMinQuotient)p
+24164 56683 45 1329 v 1330 w Fb(X)p 26415 56683 V 28666
+56683 V 30916 56683 V 33167 56683 V 35418 56683 V 12560
+56727 22881 45 v 12538 58056 45 1329 v 16130 57657 a
+Fy(N)p 16781 57657 349 45 v 418 w(VConstrMask)p 24164
+58056 45 1329 v 1330 w Fb(X)p 26415 58056 V 28666 58056
+V 30916 58056 V 33167 58056 V 35418 58056 V 12560 58100
+22881 45 v 12538 59428 45 1329 v 14967 59030 a Fy(N)p
+15618 59030 349 45 v 419 w(VWrmsNormMask)p 24164 59428
+45 1329 v 1330 w Fb(X)p 26415 59428 V 28666 59428 V 30916
+59428 V 33167 59428 V 35418 59428 V 12560 59472 22881
+45 v 12538 60801 45 1329 v 17873 60402 a Fy(N)p 18524
+60402 349 45 v 419 w(VCompare)p 24164 60801 45 1329 v
+1329 w Fb(X)p 26415 60801 V 28666 60801 V 30916 60801
+V 33167 60801 V 35418 60801 V 12560 60845 22881 45 v
+Black Black Black eop
+%%Page: 71 79
+71 78 bop Black Black 4000 15276 a Fw(Chapter)861 b(7)4000
+20811 y Fz(Pro)-86 b(viding)1033 b(Alternate)g(Linear)g(Solv)-86
+b(er)4000 24132 y(Mo)86 b(dules)4000 29888 y FA(The)409
+b(cen)-31 b(tral)410 b Fx(id)-25 b(a)409 b FA(mo)31 b(dule)409
+b(in)-31 b(terfaces)410 b(with)g(the)f(linear)h(solv)-31
+b(er)409 b(mo)31 b(dule)410 b(to)f(b)31 b(e)408 b(used)h(b)-31
+b(y)409 b(w)-31 b(a)g(y)410 b(of)f(calls)h(to)g(\257v)-31
+b(e)4000 31216 y(routines.)940 b(These)517 b(are)h(denoted)h(here)e(b)
+-31 b(y)519 b Fy(linit)p FA(,)556 b Fy(lsetup)p FA(,)g
+Fy(lsolve)p FA(,)h Fy(lperf)p FA(,)f(and)518 b Fy(lfree)p
+FA(.)940 b(Brie\260y)-92 b(,)556 b(their)4000 32545 y(purp)31
+b(oses)368 b(are)h(as)g(follo)-31 b(ws:)p Black 5660
+34755 a Fs(\262)p Black 554 w Fy(linit)p FA(:)494 b(initialize)372
+b(and)d(allo)31 b(cate)372 b(memory)e(sp)31 b(eci\257c)369
+b(to)h(the)f(linear)h(solv)-31 b(er;)p Black 5660 36968
+a Fs(\262)p Black 554 w Fy(lsetup)p FA(:)494 b(ev)-61
+b(aluate)370 b(and)g(prepro)31 b(cess)367 b(the)j(Jacobian)g(or)f
+(preconditioner;)p Black 5660 39180 a Fs(\262)p Black
+554 w Fy(lsolve)p FA(:)494 b(solv)-31 b(e)370 b(the)f(linear)h(system;)
+p Black 5660 41392 a Fs(\262)p Black 554 w Fy(lperf)p
+FA(:)494 b(monitor)371 b(p)31 b(erformance)369 b(and)g(issue)g(w)-31
+b(arnings;)p Black 5660 43605 a Fs(\262)p Black 554 w
+Fy(lfree)p FA(:)494 b(free)368 b(the)i(linear)g(solv)-31
+b(er)369 b(memory)-92 b(.)4000 45815 y(A)407 b(linear)h(solv)-31
+b(er)408 b(mo)31 b(dule)408 b(m)-31 b(ust)407 b(also)h(pro)-31
+b(vide)408 b(a)g(user-callable)g(sp)31 b(eci\257cation)409
+b(routine)e(\(lik)-31 b(e)409 b(those)f(describ)31 b(ed)4000
+47144 y(in)326 b Fs(x)p FA(5.4.2\))i(whic)-31 b(h)326
+b(will)i(attac)-31 b(h)327 b(the)f(ab)31 b(o)-31 b(v)g(e)326
+b(\257v)-31 b(e)326 b(routines)g(to)g(the)g(main)h Fx(id)-25
+b(a)325 b FA(memory)i(blo)31 b(c)-31 b(k.)479 b(The)325
+b(return)g(v)-61 b(alue)4000 48472 y(of)361 b(the)g(sp)31
+b(eci\257cation)362 b(routine)g(should)f(b)31 b(e:)488
+b Fy(SUCCESS)362 b FA(=)e(0)h(if)g(the)g(routine)h(w)-31
+b(as)361 b(successful,)i Fy(LMEM)p 45816 48472 349 45
+v 419 w(FAIL)e FA(=)f(-1)h(if)4000 49800 y(a)369 b(memory)i(allo)31
+b(cation)372 b(failed,)f(or)e Fy(LIN)p 20732 49800 V
+419 w(ILL)p 22894 49800 V 419 w(INPUT)h FA(=)f(-2)g(if)h(some)g(input)f
+(w)-31 b(as)370 b(illegal.)5660 51129 y(These)397 b(\257v)-31
+b(e)396 b(routines,)404 b(whic)-31 b(h)397 b(in)-31 b(terface)398
+b(b)31 b(et)-31 b(w)g(een)397 b Fx(id)-25 b(a)396 b FA(and)h(the)f
+(linear)h(solv)-31 b(er)397 b(mo)31 b(dule,)404 b(necessarily)397
+b(ha)-31 b(v)g(e)4000 52457 y(\257xed)337 b(call)g(sequences.)481
+b(Th)-31 b(us)337 b(a)g(user)e(wishing)j(to)g(implemen)-31
+b(t)338 b(another)g(linear)f(solv)-31 b(er)337 b(within)h(the)f
+Fx(id)-25 b(a)337 b FA(pac)-31 b(k)-61 b(age)4000 53785
+y(m)-31 b(ust)349 b(adhere)f(to)h(this)g(set)f(of)h(in)-31
+b(terfaces.)486 b(The)349 b(follo)-31 b(wing)352 b(is)c(a)h(complete)h
+(description)f(of)g(the)f(call)i(list)f(for)f(eac)-31
+b(h)4000 55114 y(of)359 b(these)g(routines.)490 b(Note)360
+b(that)g(the)f(call)h(list)g(of)f(eac)-31 b(h)360 b(routine)f(includes)
+g(a)h(p)31 b(oin)-31 b(ter)359 b(to)h(the)f(main)h Fx(id)-25
+b(a)359 b FA(memory)4000 56442 y(blo)31 b(c)-31 b(k,)342
+b(b)-31 b(y)333 b(whic)-31 b(h)333 b(the)g(routine)h(can)f(access)f(v)
+-61 b(arious)333 b(data)h(related)f(to)h(the)f Fx(id)-25
+b(a)333 b FA(solution.)482 b(The)333 b(con)-31 b(ten)g(ts)334
+b(of)f(this)4000 57771 y(memory)370 b(blo)31 b(c)-31
+b(k)370 b(are)f(giv)-31 b(en)371 b(in)e(the)h(\257le)f
+Fy(ida.h)h FA(\(but)g(not)g(repro)31 b(duced)368 b(here,)h(for)g(the)h
+(sak)-31 b(e)369 b(of)h(space\).)4000 60647 y FB(Initialization)423
+b(routine.)1107 b FA(The)370 b(t)-31 b(yp)31 b(e)370
+b(de\257nition)g(of)g Fy(linit)g FA(is)p 4000 62515 3659
+45 v 4000 63856 45 1341 v 4376 63524 a Fy(linit)p 7614
+63856 V 4000 63900 3659 45 v Black 4000 65252 a FA(De\257nition)p
+Black 2034 w Fy(int)582 b(\(*linit\)\(IDAMem)h(IDA)p
+24250 65252 349 45 v 419 w(mem\);)p Black 4000 67023
+a FA(Purp)31 b(ose)p Black 2884 w(The)347 b(purp)31 b(ose)347
+b(of)g Fy(linit)h FA(is)f(to)h(complete)h(initializations)j(for)347
+b(a)h(sp)31 b(eci\257c)347 b(linear)h(solv)-31 b(er,)352
+b(suc)-31 b(h)347 b(as)10814 68351 y(coun)-31 b(ters)369
+b(and)h(statistics.)p Black 4000 70121 a(Argumen)-31
+b(ts)p Black Black 1517 w Fy(IDA)p 12627 70121 V 419
+w(mem)p Black 554 w FA(is)369 b(the)g Fx(id)-25 b(a)369
+b FA(memory)i(p)31 b(oin)-31 b(ter)370 b(of)f(t)-31 b(yp)31
+b(e)370 b Fy(IDAMem)p FA(.)p Black 4000 71892 a(Return)f(v)-61
+b(alue)p Black 554 w(An)298 b Fy(linit)h FA(function)h(should)e(return)
+g(0)g(if)h(it)g(has)f(successfully)g(initialized)k(the)c
+Fx(id)-25 b(a)298 b FA(linear)h(solv)-31 b(er)10814 73220
+y(and)369 b(a)h(negativ)-31 b(e)371 b(v)-61 b(alue)370
+b(otherwise.)p Black 4000 74990 a(Notes)p Black 4072
+w(If)297 b(an)g(error)e(do)31 b(es)297 b(o)31 b(ccur,)311
+b(an)297 b(appropriate)h(message)f(should)h(b)31 b(e)296
+b(sen)-31 b(t)297 b(to)g Fy(IDA)p 43370 74990 V 419 w(mem->ida)p
+48437 74990 V 420 w(errfp)p FA(.)4000 77867 y FB(Setup)426
+b(routine.)1107 b FA(The)370 b(t)-31 b(yp)31 b(e)369
+b(de\257nition)i(of)f Fy(lsetup)g FA(is)p Black Black
+eop
+%%Page: 72 80
+72 79 bop Black 0 2701 a FB(72)22553 b(Pro)-35 b(viding)425
+b(Alternate)h(Linear)e(Solv)-35 b(er)425 b(Mo)35 b(dules)p
+0 3144 48001 45 v Black 0 5965 4240 45 v 0 7552 45 1587
+v 376 6974 a Fy(lsetup)p 4195 7552 V 0 7596 4240 45 v
+Black 0 9086 a FA(De\257nition)p Black 2034 w Fy(int)582
+b(\(*lsetup\)\()q(IDAMem)g(IDA)p 20831 9086 349 45 v
+419 w(mem,)g(N)p 24737 9086 V 418 w(Vector)g(yyp,)g(N)p
+32710 9086 V 419 w(Vector)g(ypp,)14950 10414 y(N)p 15601
+10414 V 419 w(Vector)g(resp,)14950 11743 y(N)p 15601
+11743 V 419 w(Vector)g(vtemp1,)g(N)p 25318 11743 V 418
+w(Vector)g(vtemp2,)h(N)p 35035 11743 V 418 w(Vector)f(vtemp3\);)p
+Black 0 13562 a FA(Purp)31 b(ose)p Black 2884 w(The)429
+b(job)h(of)g Fy(lsetup)f FA(is)g(to)h(prepare)f(the)g(linear)h(solv)-31
+b(er)430 b(for)f(subsequen)-31 b(t)429 b(calls)h(to)g
+Fy(lsolve)p FA(.)673 b(It)6814 14890 y(ma)-31 b(y)370
+b(re-compute)g(Jacobian-related)i(data)e(if)g(it)g(deems)f(necessary)
+-92 b(.)p Black 0 16760 a(Argumen)-31 b(ts)p Black Black
+1517 w Fy(IDA)p 8627 16760 V 419 w(mem)p Black 554 w
+FA(is)369 b(the)g Fx(id)-25 b(a)369 b FA(memory)i(p)31
+b(oin)-31 b(ter)370 b(of)f(t)-31 b(yp)31 b(e)370 b Fy(IDAMem)p
+FA(.)p Black 6814 18359 a Fy(yyp)p Black 2716 w FA(is)f(the)g
+(predicted)h Fp(y)408 b FA(v)-31 b(ector)370 b(for)f(the)h(curren)-31
+b(t)369 b Fx(id)-25 b(a)369 b FA(in)-31 b(ternal)370
+b(step.)p Black 6814 19958 a Fy(ypp)p Black 2716 w FA(is)f(the)g
+(predicted)h Fp(y)19737 19556 y Fo(0)20416 19958 y FA(v)-31
+b(ector)370 b(for)f(the)g(curren)-31 b(t)369 b Fx(id)-25
+b(a)369 b FA(in)-31 b(ternal)371 b(step.)p Black 6814
+21557 a Fy(resp)p Black 2135 w FA(is)e(the)g(v)-61 b(alue)370
+b(of)g(the)f(residual)h(function)g(at)g Fy(yyp)g FA(and)f
+Fy(ypp)p FA(,)h(i.e.)493 b Fp(F)154 b FA(\()p Fp(t)40424
+21723 y Fm(n)41027 21557 y Fp(;)184 b(y)42061 21723 y
+Fm(pr)24 b(ed)43889 21557 y Fp(;)184 b(y)44963 21155
+y Fo(0)44923 21870 y Fm(pr)24 b(ed)46751 21557 y FA(\).)p
+Black 6814 23156 a Fy(vtemp1)p Black Black 6814 24755
+a(vtemp2)p Black Black 6814 26354 a(vtemp3)p Black 973
+w FA(are)369 b(temp)31 b(orary)370 b(v)-61 b(ariables)370
+b(of)f(t)-31 b(yp)31 b(e)370 b Fy(N)p 27532 26354 V 419
+w(Vector)f FA(pro)-31 b(vided)370 b(for)g(use)e(b)-31
+b(y)370 b Fy(lsetup)p FA(.)p Black 0 28224 a(Return)f(v)-61
+b(alue)p Black 554 w(The)456 b Fy(lsetup)h FA(routine)h(should)e
+(return)g Fy(0)g FA(if)h(successful,)478 b(a)456 b(p)31
+b(ositiv)-31 b(e)458 b(v)-61 b(alue)457 b(for)f(a)h(reco)-31
+b(v)g(erable)6814 29552 y(error,)369 b(and)g(a)g(negativ)-31
+b(e)372 b(v)-61 b(alue)369 b(for)h(an)f(unreco)-31 b(v)g(erable)370
+b(error.)0 32691 y FB(Solv)-35 b(e)425 b(routine.)1108
+b FA(The)369 b(t)-31 b(yp)31 b(e)370 b(de\257nition)g(of)g
+Fy(lsolve)g FA(is)p 0 34821 4240 45 v 0 36161 45 1341
+v 376 35829 a Fy(lsolve)p 4195 36161 V 0 36205 4240 45
+v Black 0 37607 a FA(De\257nition)p Black 2034 w Fy(int)582
+b(\(*lsolve\)\()q(IDAMem)g(IDA)p 20831 37607 349 45 v
+419 w(mem,)g(N)p 24737 37607 V 418 w(Vector)g(b,)g(N)p
+31548 37607 V 418 w(Vector)g(weight,)14950 38935 y(N)p
+15601 38935 V 419 w(Vector)g(ycur,)g(N)p 24156 38935
+V 418 w(Vector)g(ypcur,)g(N)p 33291 38935 V 419 w(Vector)g(rescur\);)p
+Black 0 40755 a FA(Purp)31 b(ose)p Black 2884 w(The)329
+b(routine)g Fy(lsolve)g FA(m)-31 b(ust)330 b(solv)-31
+b(e)329 b(the)g(linear)g(equation)i Fp(M)121 b(x)307
+b FA(=)g Fp(b)p FA(,)337 b(where)329 b Fp(M)449 b FA(is)328
+b(some)h(appro)-31 b(x-)6814 42083 y(imation)372 b(to)e
+Fp(J)414 b FA(=)307 b Fp(dF)92 b(=dy)286 b FA(+)246 b
+Fp(c)19346 42249 y Fm(j)19813 42083 y Fp(dF)92 b(=dy)22905
+41681 y Fo(0)23585 42083 y FA(and)369 b(the)g(righ)-31
+b(t-hand)371 b(side)e(v)-31 b(ector)370 b Fp(b)f FA(is)g(input.)p
+Black 0 43953 a(Argumen)-31 b(ts)p Black Black 1517 w
+Fy(IDA)p 8627 43953 V 419 w(mem)p Black 554 w FA(is)369
+b(the)g Fx(id)-25 b(a)369 b FA(memory)i(p)31 b(oin)-31
+b(ter)370 b(of)f(t)-31 b(yp)31 b(e)370 b Fy(IDAMem)p
+FA(.)p Black 6814 45552 a Fy(b)p Black 3878 w FA(is)391
+b(the)h(righ)-31 b(t-hand)393 b(side)f(v)-31 b(ector)392
+b Fp(b)p FA(.)560 b(The)392 b(solution)h(is)f(to)g(b)31
+b(e)391 b(returned)g(in)h(the)g(v)-31 b(ector)11273 46880
+y Fy(b)p FA(.)p Black 6814 48479 a Fy(weight)p Black
+973 w FA(is)393 b(a)g(v)-31 b(ector)394 b(that)h(con)-31
+b(tains)395 b(the)e(error)f(w)-31 b(eigh)g(ts.)567 b(These)393
+b(are)g(the)g(recipro)31 b(cals)394 b(of)g(the)11273
+49807 y Fp(W)12318 49973 y Fm(i)13056 49807 y FA(of)369
+b(\(3.6\).)p Black 6814 51406 a Fy(ycur)p Black 2135
+w FA(is)g(a)g(v)-31 b(ector)370 b(that)h(con)-31 b(tains)370
+b(the)g(solv)-31 b(er's)370 b(curren)-31 b(t)368 b(appro)-31
+b(ximation)373 b(to)d Fp(y)40 b FA(\()p Fp(t)43167 51572
+y Fm(n)43769 51406 y FA(\).)p Black 6814 53005 a Fy(ypcur)p
+Black 1554 w FA(is)369 b(a)g(v)-31 b(ector)370 b(that)h(con)-31
+b(tains)370 b(the)g(solv)-31 b(er's)370 b(curren)-31
+b(t)368 b(appro)-31 b(ximation)373 b(to)d Fp(y)42337
+52604 y Fo(0)42647 53005 y FA(\()p Fp(t)43477 53171 y
+Fm(n)44080 53005 y FA(\).)p Black 6814 54604 a Fy(rescur)p
+Black 973 w FA(is)f(a)g(v)-31 b(ector)370 b(that)h(con)-31
+b(tains)370 b Fp(F)154 b FA(\()p Fp(t)25068 54770 y Fm(n)25671
+54604 y Fp(;)184 b(y)26705 54770 y Fm(cur)28115 54604
+y Fp(;)g(y)29189 54203 y Fo(0)29149 54878 y Fm(cur)30559
+54604 y FA(\).)p Black 0 56474 a(Return)369 b(v)-61 b(alue)p
+Black 554 w Fy(lsolve)468 b FA(returns)f(a)g(p)31 b(ositiv)-31
+b(e)469 b(v)-61 b(alue)468 b(for)g(a)f(reco)-31 b(v)g(erable)469
+b(error)d(and)i(a)g(negativ)-31 b(e)469 b(v)-61 b(alue)468
+b(for)g(an)6814 57802 y(unreco)-31 b(v)g(erable)370 b(error.)492
+b(Success)368 b(is)h(indicated)i(b)-31 b(y)369 b(a)h
+Fy(0)f FA(return)f(v)-61 b(alue.)0 60941 y FB(P)-35 b(erformance)426
+b(monitoring)f(routine.)1108 b FA(The)370 b(t)-31 b(yp)31
+b(e)369 b(de\257nition)i(of)f Fy(lperf)g FA(is)p 0 63071
+3659 45 v 0 64658 45 1587 v 376 64080 a Fy(lperf)p 3614
+64658 V 0 64702 3659 45 v Black 0 66192 a FA(De\257nition)p
+Black 2034 w Fy(int)582 b(\(*lperf\)\(IDAMem)h(IDA)p
+20250 66192 349 45 v 419 w(mem,)f(int)f(perftask\);)p
+Black 0 68062 a FA(Purp)31 b(ose)p Black 2884 w(The)369
+b(routine)h Fy(lperf)g FA(is)f(to)h(monitor)h(the)e(p)31
+b(erformance)370 b(of)g(the)f(linear)h(solv)-31 b(er.)p
+Black 0 69931 a(Argumen)g(ts)p Black Black 1517 w Fy(IDA)p
+8627 69931 V 419 w(mem)p Black 554 w FA(is)369 b(the)g
+Fx(id)-25 b(a)369 b FA(memory)i(p)31 b(oin)-31 b(ter)370
+b(of)f(t)-31 b(yp)31 b(e)370 b Fy(IDAMem)p FA(.)p Black
+6814 71530 a Fy(perftask)p Black 555 w FA(is)331 b(a)h(task)g(\260ag.)
+481 b Fy(perftask)332 b FA(=)g(0)g(means)f(initialize)k(needed)c(coun)
+-31 b(ters.)481 b Fy(perftask)332 b FA(=)11273 72859
+y(1)369 b(means)h(ev)-61 b(aluate)370 b(p)31 b(erformance)370
+b(and)f(issue)g(w)-31 b(arnings)370 b(if)g(needed.)p
+Black 0 74728 a(Return)f(v)-61 b(alue)p Black 554 w(The)369
+b Fy(lperf)h FA(return)f(v)-61 b(alue)369 b(is)g(ignored.)0
+77867 y FB(Memory)426 b(deallo)35 b(cation)425 b(routine.)1107
+b FA(The)370 b(t)-31 b(yp)31 b(e)370 b(de\257nition)g(of)g
+Fy(lfree)g FA(is)p Black Black eop
+%%Page: 73 81
+73 80 bop Black 50727 2701 a FB(73)p 4000 3144 48001
+45 v Black 4000 5965 3659 45 v 4000 7306 45 1341 v 4376
+6974 a Fy(lfree)p 7614 7306 V 4000 7350 3659 45 v Black
+4000 8702 a FA(De\257nition)p Black 2034 w Fy(void)582
+b(\(*lfree\)\(IDAMem)h(IDA)p 24831 8702 349 45 v 419
+w(mem\);)p Black 4000 10473 a FA(Purp)31 b(ose)p Black
+2884 w(The)369 b(routine)h Fy(lfree)g FA(should)g(free)e(up)h(an)-31
+b(y)370 b(memory)g(allo)31 b(cated)372 b(b)-31 b(y)369
+b(the)h(linear)g(solv)-31 b(er.)p Black 4000 12244 a(Argumen)g(ts)p
+Black 1517 w(The)369 b(argumen)-31 b(t)371 b Fy(IDa)p
+19856 12244 V 419 w(mem)e FA(is)g(the)h Fx(id)-25 b(a)369
+b FA(memory)h(p)31 b(oin)-31 b(ter)370 b(of)g(t)-31 b(yp)31
+b(e)369 b Fy(IDAMem)p FA(.)p Black 4000 14016 a(Return)g(v)-61
+b(alue)p Black 554 w(This)370 b(routine)f(has)h(no)f(return)g(v)-61
+b(alue.)p Black 4000 15787 a(Notes)p Black 4072 w(This)396
+b(routine)h(is)f(called)h(once)f(a)g(problem)h(has)f(b)31
+b(een)395 b(completed)i(and)g(the)f(linear)g(solv)-31
+b(er)397 b(is)f(no)10814 17115 y(longer)370 b(needed.)p
+Black Black eop
+%%Page: 74 82
+74 81 bop Black Black Black Black eop
+%%Page: 75 83
+75 82 bop Black Black 4000 15276 a Fw(Chapter)861 b(8)4000
+20811 y Fz(Generic)1033 b(Linear)g(Solv)-86 b(ers)1033
+b(in)4000 24132 y(SUNDIALS)4000 29888 y FA(In)420 b(this)i(section,)435
+b(w)-31 b(e)422 b(describ)31 b(e)420 b(three)g(generic)i(linear)f(solv)
+-31 b(er)422 b(co)31 b(de)421 b(mo)31 b(dules)421 b(that)i(are)d
+(included)i(in)f Fx(id)-25 b(a)p FA(,)435 b(but)4000
+31216 y(whic)-31 b(h)411 b(are)f(of)g(p)31 b(oten)-31
+b(tial)413 b(use)c(as)h(generic)g(pac)-31 b(k)-61 b(ages)411
+b(in)f(themselv)-31 b(es,)421 b(either)411 b(in)f(conjunction)i(with)f
+(the)f(use)f(of)4000 32545 y Fx(id)-25 b(a)369 b FA(or)g(separately)-92
+b(.)494 b(These)369 b(mo)31 b(dules)369 b(are:)p Black
+5660 34716 a Fs(\262)p Black 554 w FA(The)401 b Fx(dense)g
+FA(matrix)h(pac)-31 b(k)-61 b(age,)410 b(whic)-31 b(h)402
+b(includes)f(the)f(matrix)i(t)-31 b(yp)31 b(e)401 b Fy(DenseMat)p
+FA(,)410 b(macros)401 b(and)g(functions)6767 36044 y(for)370
+b Fy(DenseMat)g FA(matrices,)g(and)g(functions)g(for)f(small)i(dense)d
+(matrices)j(treated)e(as)h(simple)g(arra)-31 b(y)369
+b(t)-31 b(yp)31 b(es.)p Black 5660 38237 a Fs(\262)p
+Black 554 w FA(The)346 b Fx(band)f FA(matrix)i(pac)-31
+b(k)-61 b(age,)352 b(whic)-31 b(h)346 b(includes)g(the)f(matrix)i(t)-31
+b(yp)31 b(e)346 b Fy(BandMat)p FA(,)351 b(macros)346
+b(and)f(functions)i(for)6767 39565 y Fy(BandMat)370 b
+FA(matrices,)h(and)e(functions)i(for)e(small)h(band)g(matrices)g
+(treated)g(as)f(simple)h(arra)-31 b(y)370 b(t)-31 b(yp)31
+b(es.)p Black 5660 41758 a Fs(\262)p Black 554 w FA(The)370
+b Fx(spgmr)e FA(pac)-31 b(k)-61 b(age,)371 b(whic)-31
+b(h)370 b(includes)f(a)h(solv)-31 b(er)369 b(for)h(the)f(scaled)h
+(preconditioned)g(GMRES)f(metho)31 b(d.)5660 43930 y(F)-92
+b(or)457 b(the)h(sak)-31 b(e)457 b(of)h(space,)480 b(the)458
+b(functions)g(for)f Fy(DenseMat)i FA(and)e Fy(BandMat)i
+FA(matrices)f(and)g(the)f(functions)i(in)4000 45258 y
+Fx(spgmr)372 b FA(are)h(only)i(summarized)f(brie\260y)-92
+b(,)374 b(since)g(they)f(are)h(less)f(lik)-31 b(ely)375
+b(to)f(b)31 b(e)373 b(of)h(direct)f(use)g(in)h(connection)h(with)4000
+46586 y Fx(id)-25 b(a)p FA(.)482 b(The)336 b(functions)h(for)g(small)g
+(dense)f(matrices)h(are)f(fully)i(describ)31 b(ed,)342
+b(b)31 b(ecause)336 b(w)-31 b(e)337 b(exp)31 b(ect)336
+b(that)i(they)e(will)i(b)31 b(e)4000 47915 y(useful)303
+b(in)g(the)g(implemen)-31 b(tation)307 b(of)c(preconditioners)h(used)e
+(with)i(the)f(com)-31 b(bination)306 b(of)d Fx(id)-25
+b(a)303 b FA(and)g(the)g Fx(id)-25 b(aspgmr)4000 49243
+y FA(solv)-31 b(er.)4000 52895 y Fu(8.1)1793 b(The)598
+b(DENSE)h(mo)50 b(dule)4000 55540 y Ft(8.1.1)1495 b(T)-42
+b(yp)42 b(e)498 b Fa(DenseMat)4000 57584 y FA(The)369
+b(t)-31 b(yp)31 b(e)370 b Fy(DenseMat)g FA(is)f(de\257ned)g(to)h(b)31
+b(e)369 b(a)g(p)31 b(oin)-31 b(ter)370 b(to)g(a)g(structure)e(with)j(a)
+e(size)g(and)h(a)f(data)i(\257eld:)p Black Black 4000
+59755 a Fy(typedef)582 b(struct)g({)5162 61084 y(long)g(int)g(size;)
+5162 62412 y(realtype)1164 b(**data;)4000 63740 y(})581
+b(*DenseMat;)4000 65912 y FA(The)498 b Fr(size)g FA(\257eld)h
+(indicates)g(the)f(n)-31 b(um)g(b)31 b(er)499 b(of)f(columns)h(\(whic)
+-31 b(h)500 b(is)e(the)g(same)h(as)f(the)g(n)-31 b(um)g(b)31
+b(er)498 b(of)h(ro)-31 b(ws\))499 b(of)g(a)4000 67240
+y(dense)i(matrix,)537 b(while)503 b(the)f Fr(data)f FA(\257eld)h(is)f
+(a)h(t)-31 b(w)g(o)504 b(dimensional)g(arra)-31 b(y)502
+b(used)f(for)h(comp)31 b(onen)-31 b(t)503 b(storage.)892
+b(The)4000 68568 y(elemen)-31 b(ts)354 b(of)f(a)f(dense)g(matrix)i(are)
+f(stored)f(column)-31 b(wise)354 b(\(i.e)g(columns)g(are)e(stored)g
+(one)h(on)g(top)g(of)g(the)g(other)g(in)4000 69897 y(memory\).)479
+b(If)322 b Fy(A)h FA(is)f(of)h(t)-31 b(yp)31 b(e)323
+b Fy(DenseMat)p FA(,)334 b(then)323 b(the)g(\()p Fy(i)p
+FA(,)p Fy(j)p FA(\)-th)h(elemen)-31 b(t)324 b(of)f Fy(A)g
+FA(\(with)h(0)308 b Fs(\267)323 b Fy(i)p FA(,)332 b Fy(j)323
+b Fs(\267)f Fy(size)p Fs(\241)p FA(1\))i(is)f(giv)-31
+b(en)4000 71225 y(b)g(y)432 b(the)g(expression)f Fy(\(A->data\)[j][i])i
+FA(or)f(b)-31 b(y)432 b(the)f(expression)h Fy(\(A->data\)[0][j*size+i])
+p FA(.)683 b(The)431 b(macros)4000 72553 y(b)31 b(elo)-31
+b(w)359 b(allo)-31 b(w)361 b(a)d(user)f(to)i(e\261cien)-31
+b(tly)360 b(access)e(individual)i(matrix)g(elemen)-31
+b(ts)359 b(without)h(writing)g(out)f(explicit)h(data)4000
+73882 y(structure)498 b(references)f(and)i(without)h(kno)-31
+b(wing)501 b(to)31 b(o)499 b(m)-31 b(uc)g(h)499 b(ab)31
+b(out)500 b(the)e(underlying)i(elemen)-31 b(t)499 b(storage.)882
+b(The)4000 75210 y(only)432 b(storage)g(assumption)h(needed)e(is)g
+(that)h(elemen)-31 b(ts)432 b(are)f(stored)g(column)-31
+b(wise)433 b(and)f(that)g(a)g(p)31 b(oin)-31 b(ter)432
+b(to)g(the)4000 76539 y Fy(j)p FA(-th)389 b(column)g(of)g(elemen)-31
+b(ts)390 b(can)e(b)31 b(e)388 b(obtained)i(via)g(the)e
+Fy(DENSE)p 30981 76539 349 45 v 420 w(COL)g FA(macro.)551
+b(Users)388 b(should)g(use)g(these)g(macros)4000 77867
+y(whenev)-31 b(er)369 b(p)31 b(ossible.)p Black Black
+eop
+%%Page: 76 84
+76 83 bop Black 0 2701 a FB(76)25577 b(Generic)425 b(Linear)g(Solv)-35
+b(ers)425 b(in)f(SUNDIALS)p 0 3144 48001 45 v Black 0
+6974 a Ft(8.1.2)1495 b(Accessor)501 b(Macros)0 9069 y
+FA(The)277 b(follo)-31 b(wing)280 b(t)-31 b(w)g(o)278
+b(macros)f(are)f(de\257ned)g(b)-31 b(y)277 b(the)g Fx(dense)g
+FA(mo)31 b(dule)277 b(to)g(pro)-31 b(vide)278 b(access)d(to)j(data)f
+(in)g(the)g Fy(DenseMat)0 10398 y FA(t)-31 b(yp)31 b(e:)p
+Black 1660 12696 a Fs(\262)p Black 554 w Fy(DENSE)p 5742
+12696 349 45 v 420 w(ELEM)2767 14523 y FA(Usage)370 b(:)493
+b Fy(DENSE)p 9777 14523 V 419 w(ELEM\(A,i,j\))583 b(=)e(a)p
+18913 14523 V 418 w(ij;)370 b FA(or)f Fy(a)p 23381 14523
+V 419 w(ij)581 b(=)g(DENSE)p 29610 14523 V 419 w(ELEM\(A,i,j\);)2767
+16350 y(DENSE)p 5742 16350 V 420 w(ELEM)369 b FA(references)f(the)h(\()
+p Fy(i)p FA(,)p Fy(j)p FA(\)-th)j(elemen)-31 b(t)370
+b(of)g(the)f Fp(N)e Fs(\243)246 b Fp(N)491 b Fy(DenseMat)370
+b(A)p FA(,)f(0)308 b Fs(\267)369 b Fy(i)p FA(,)h Fy(j)f
+Fs(\267)307 b Fp(N)368 b Fs(\241)246 b FA(1.)p Black
+1660 18676 a Fs(\262)p Black 554 w Fy(DENSE)p 5742 18676
+V 420 w(COL)2767 20503 y FA(Usage)370 b(:)493 b Fy(col)p
+8615 20503 V 419 w(j)581 b(=)g(DENSE)p 14263 20503 V
+419 w(COL\(A,j\);)2767 22331 y(DENSE)p 5742 22331 V 420
+w(COL)417 b FA(references)f(the)h Fy(j)p FA(-th)h(column)g(of)g(the)g
+Fp(N)399 b Fs(\243)278 b Fp(N)538 b Fy(DenseMat)418 b(A)p
+FA(,)g(0)388 b Fs(\267)417 b Fy(j)g Fs(\267)388 b Fp(N)399
+b Fs(\241)278 b FA(1.)637 b(The)417 b(t)-31 b(yp)31 b(e)2767
+23659 y(of)404 b(the)e(expression)h Fy(DENSE)p 14345
+23659 V 419 w(COL\(A,j\))h FA(is)e Fy(realtype)583 b(*)402
+b FA(.)593 b(After)403 b(the)g(assignmen)-31 b(t)404
+b(in)f(the)g(usage)g(ab)31 b(o)-31 b(v)g(e,)2767 24987
+y Fy(col)p 4580 24987 V 419 w(j)467 b FA(ma)-31 b(y)468
+b(b)31 b(e)466 b(treated)i(as)e(an)h(arra)-31 b(y)467
+b(indexed)h(from)f(0)g(to)g Fp(N)433 b Fs(\241)311 b
+FA(1.)785 b(The)467 b(\()p Fy(i)p FA(,)492 b Fy(j)p FA(\)-th)468
+b(elemen)-31 b(t)468 b(of)f Fy(A)g FA(is)2767 26316 y(referenced)369
+b(b)-31 b(y)369 b Fy(col)p 11382 26316 V 419 w(j[i])p
+FA(.)0 30505 y Ft(8.1.3)1495 b(F)-125 b(unctions)0 32600
+y FA(The)377 b(follo)-31 b(wing)381 b(functions)d(for)g
+Fy(DenseMat)g FA(matrices)g(are)f(a)-31 b(v)-61 b(ailable)379
+b(in)f(the)f Fx(dense)h FA(pac)-31 b(k)-61 b(age.)518
+b(F)-92 b(or)376 b(full)i(details,)0 33928 y(see)369
+b(the)g(header)g(\257le)g Fy(dense.h)p FA(.)p Black 1660
+36226 a Fs(\262)p Black 554 w Fy(DenseAllocMat)p FA(:)495
+b(allo)31 b(cation)372 b(of)e(a)g Fy(DenseMat)g FA(matrix;)p
+Black 1660 38553 a Fs(\262)p Black 554 w Fy(DenseAllocPiv)p
+FA(:)495 b(allo)31 b(cation)372 b(of)e(a)g(piv)-31 b(ot)370
+b(arra)-31 b(y)370 b(for)f(use)g(with)h Fy(DenseFactor)p
+FA(/)p Fy(DenseBacksolve)p FA(;)p Black 1660 40879 a
+Fs(\262)p Black 554 w Fy(DenseFactor)p FA(:)495 b(LU)369
+b(factorization)j(with)f(partial)g(piv)-31 b(oting;)p
+Black 1660 43205 a Fs(\262)p Black 554 w Fy(DenseBacksolve)p
+FA(:)495 b(solution)371 b(of)f Fp(Ax)307 b FA(=)g Fp(b)370
+b FA(using)f(LU)g(factorization;)p Black 1660 45531 a
+Fs(\262)p Black 554 w Fy(DenseZero)p FA(:)494 b(load)371
+b(a)e(matrix)i(with)f(zeros;)p Black 1660 47857 a Fs(\262)p
+Black 554 w Fy(DenseCopy)p FA(:)494 b(cop)-31 b(y)370
+b(one)g(matrix)g(to)g(another;)p Black 1660 50183 a Fs(\262)p
+Black 554 w Fy(DenseScale)p FA(:)494 b(scale)370 b(a)f(matrix)i(b)-31
+b(y)370 b(a)f(scalar;)p Black 1660 52509 a Fs(\262)p
+Black 554 w Fy(DenseAddI)p FA(:)i(incremen)-31 b(t)370
+b(a)g(matrix)h(b)-31 b(y)369 b(the)g(iden)-31 b(tit)g(y)372
+b(matrix;)p Black 1660 54835 a Fs(\262)p Black 554 w
+Fy(DenseFreeMat)p FA(:)495 b(free)368 b(memory)j(for)e(a)g
+Fy(DenseMat)i FA(matrix;)p Black 1660 57161 a Fs(\262)p
+Black 554 w Fy(DenseFreePiv)p FA(:)495 b(free)368 b(memory)j(for)e(a)g
+(piv)-31 b(ot)371 b(arra)-31 b(y;)p Black 1660 59487
+a Fs(\262)p Black 554 w Fy(DensePrint)p FA(:)494 b(prin)-31
+b(t)370 b(a)g Fy(DenseMat)g FA(matrix)g(to)g(standard)g(output.)0
+63676 y Ft(8.1.4)1495 b(Small)500 b(Dense)e(Matrix)h(F)-125
+b(unctions)0 65772 y FA(The)369 b(follo)-31 b(wing)373
+b(functions)d(for)g(small)g(dense)f(matrices)h(are)f(a)-31
+b(v)-61 b(ailable)372 b(in)d(the)h Fx(dense)f FA(pac)-31
+b(k)-61 b(age:)p Black 1660 68070 a Fs(\262)p Black 554
+w Fy(denalloc)2767 69897 y(denalloc\(n\))403 b FA(allo)31
+b(cates)404 b(storage)e(for)g(an)g Fy(n)f FA(b)-31 b(y)402
+b Fy(n)g FA(dense)e(matrix.)592 b(It)401 b(returns)g(a)g(p)31
+b(oin)-31 b(ter)403 b(to)f(the)g(newly)2767 71225 y(allo)31
+b(cated)528 b(storage)d(if)h(successful.)959 b(If)524
+b(the)h(memory)h(request)f(cannot)h(b)31 b(e)524 b(satis\257ed,)565
+b(then)525 b Fy(denalloc)2767 72553 y FA(returns)344
+b Fy(NULL)p FA(.)h(The)g(underlying)g(t)-31 b(yp)31 b(e)345
+b(of)g(the)f(dense)g(matrix)i(returned)d(is)i Fy(realtype**)p
+FA(.)485 b(If)345 b(w)-31 b(e)344 b(allo)31 b(cate)2767
+73882 y(a)538 b(dense)e(matrix)j Fy(realtype**)582 b(a)537
+b FA(b)-31 b(y)537 b Fy(a)582 b(=)f(denalloc\(n\))p FA(,)g(then)537
+b Fy(a[j][i])h FA(references)e(the)h(\()p Fy(i)p FA(,)p
+Fy(j)p FA(\)-th)2767 75210 y(elemen)-31 b(t)341 b(of)f(the)g(matrix)h
+Fy(a)p FA(,)k(0)308 b Fs(\267)340 b Fy(i)p FA(,)345 b
+Fy(j)340 b Fs(\267)f Fy(n)p Fs(\241)p FA(1,)346 b(and)340
+b Fy(a[j])g FA(is)f(a)h(p)31 b(oin)-31 b(ter)340 b(to)g(the)f(\257rst)g
+(elemen)-31 b(t)341 b(in)f(the)f Fy(j)p FA(-th)2767 76539
+y(column)420 b(of)g Fy(a)p FA(.)641 b(The)419 b(lo)31
+b(cation)421 b Fy(a[0])e FA(con)-31 b(tains)420 b(a)f(p)31
+b(oin)-31 b(ter)420 b(to)f Fy(n)30073 76137 y Fn(2)30989
+76539 y FA(con)-31 b(tiguous)420 b(lo)31 b(cations)421
+b(whic)-31 b(h)420 b(con)-31 b(tain)2767 77867 y(the)370
+b(elemen)-31 b(ts)370 b(of)g Fy(a)p FA(.)p Black Black
+eop
+%%Page: 77 85
+77 84 bop Black 4000 2701 a FB(8.1)425 b(The)g(DENSE)g(mo)35
+b(dule)33216 b(77)p 4000 3144 48001 45 v Black Black
+5660 6974 a Fs(\262)p Black 554 w Fy(denallocpiv)6767
+8970 y(denallocpiv\(n\))413 b FA(allo)31 b(cates)413
+b(an)e(arra)-31 b(y)411 b(of)h Fy(n)f FA(in)-31 b(tegers.)618
+b(It)411 b(returns)f(a)h(p)31 b(oin)-31 b(ter)411 b(to)h(the)f(\257rst)
+f(elemen)-31 b(t)413 b(in)6767 10299 y(the)370 b(arra)-31
+b(y)369 b(if)h(successful.)492 b(It)369 b(returns)f Fy(NULL)i
+FA(if)g(the)f(memory)h(request)f(could)h(not)g(b)31 b(e)369
+b(satis\257ed.)p Black 5660 12963 a Fs(\262)p Black 554
+w Fy(gefa)6767 14960 y(gefa\(a,n,p\))414 b FA(factors)f(the)g
+Fy(n)f FA(b)-31 b(y)412 b Fy(n)h FA(dense)e(matrix)j
+Fy(a)p FA(.)622 b(It)412 b(o)-31 b(v)g(erwrites)414 b(the)e(elemen)-31
+b(ts)414 b(of)e Fy(a)h FA(with)g(its)g(LU)6767 16288
+y(factors)370 b(and)g(k)-31 b(eeps)369 b(trac)-31 b(k)370
+b(of)f(the)h(piv)-31 b(ot)371 b(ro)-31 b(ws)369 b(c)-31
+b(hosen)369 b(in)h(the)f(piv)-31 b(ot)371 b(arra)-31
+b(y)370 b Fy(p)p FA(.)6767 18285 y(A)475 b(successful)f(LU)h
+(factorization)j(lea)-31 b(v)g(es)476 b(the)f(matrix)i
+Fy(a)d FA(and)h(the)g(piv)-31 b(ot)477 b(arra)-31 b(y)475
+b Fy(p)g FA(with)h(the)f(follo)-31 b(wing)6767 19613
+y(information:)p Black 7788 22278 a(1.)p Black 555 w
+Fy(p[k])303 b FA(con)-31 b(tains)304 b(the)e(ro)-31 b(w)303
+b(n)-31 b(um)g(b)31 b(er)303 b(of)g(the)g(piv)-31 b(ot)304
+b(elemen)-31 b(t)304 b(c)-31 b(hosen)302 b(at)i(the)e(b)31
+b(eginning)304 b(of)f(elimination)9203 23606 y(step)369
+b Fy(k)p FA(,)g Fy(k)h FA(=)307 b(0)p Fp(;)184 b FA(1)p
+Fp(;)g(:::;)p Fy(n)p Fs(\241)p FA(1.)p Black 7788 25603
+a(2.)p Black 555 w(If)500 b(the)h(unique)g(LU)g(factorization)j(of)d
+Fy(a)g FA(is)f(giv)-31 b(en)502 b(b)-31 b(y)501 b Fp(P)154
+b(a)526 b FA(=)h Fp(LU)121 b FA(,)534 b(where)500 b Fp(P)654
+b FA(is)501 b(a)g(p)31 b(erm)-31 b(utation)9203 26931
+y(matrix,)465 b Fp(L)444 b FA(is)g(a)g(lo)-31 b(w)g(er)445
+b(triangular)h(matrix)g(with)f(all)h(1's)e(on)g(the)h(diagonal,)466
+b(and)444 b Fp(U)564 b FA(is)444 b(an)h(upp)31 b(er)9203
+28259 y(triangular)331 b(matrix,)339 b(then)329 b(the)h(upp)31
+b(er)328 b(triangular)j(part)e(of)h Fy(a)f FA(\(including)i(its)f
+(diagonal\))i(con)-31 b(tains)330 b Fp(U)9203 29588 y
+FA(and)369 b(the)h(strictly)g(lo)-31 b(w)g(er)370 b(triangular)h(part)f
+(of)g Fy(a)f FA(con)-31 b(tains)370 b(the)g(m)-31 b(ultipliers,)372
+b Fp(I)332 b Fs(\241)246 b Fp(L)p FA(.)9203 31250 y Fy(gefa)331
+b FA(returns)f(0)h(if)g(successful.)480 b(Otherwise)331
+b(it)g(encoun)-31 b(tered)332 b(a)f(zero)g(diagonal)i(elemen)-31
+b(t)332 b(during)g(the)9203 32579 y(factorization.)581
+b(In)397 b(this)h(case)f(it)h(returns)f(the)g(column)i(index)f(\(n)-31
+b(um)g(b)31 b(ered)398 b(from)g(one\))g(at)h(whic)-31
+b(h)398 b(it)9203 33907 y(encoun)-31 b(tered)369 b(the)h(zero.)p
+Black 5660 36572 a Fs(\262)p Black 554 w Fy(gesl)6767
+38568 y(gesl\(a,n,p,b\))510 b FA(solv)-31 b(es)507 b(the)h
+Fy(n)f FA(b)-31 b(y)508 b Fy(n)f FA(linear)h(system)g
+Fp(ax)538 b FA(=)f Fp(b)p FA(.)908 b(It)507 b(assumes)g(that)h
+Fy(a)g FA(has)f(b)31 b(een)507 b(LU-)6767 39896 y(factored)354
+b(and)f(the)g(piv)-31 b(ot)354 b(arra)-31 b(y)353 b Fy(p)g
+FA(has)f(b)31 b(een)352 b(set)h(b)-31 b(y)353 b(a)f(successful)g(call)i
+(to)g Fy(gefa\(a,n,p\))p FA(.)488 b(The)353 b(solution)6767
+41225 y Fp(x)369 b FA(is)g(written)i(in)-31 b(to)370
+b(the)g Fy(b)f FA(arra)-31 b(y)-92 b(.)p Black 5660 43889
+a Fs(\262)p Black 554 w Fy(denzero)6767 45886 y(denzero\(a,n\))371
+b FA(sets)e(all)h(the)g(elemen)-31 b(ts)370 b(of)g(the)f
+Fy(n)g FA(b)-31 b(y)370 b Fy(n)f FA(dense)f(matrix)j
+Fy(a)e FA(to)h(b)31 b(e)369 b(0)p Fp(:)p FA(0;)p Black
+5660 48551 a Fs(\262)p Black 554 w Fy(dencopy)6767 50547
+y(dencopy\(a,b,n\))i FA(copies)f(the)f Fy(n)h FA(b)-31
+b(y)369 b Fy(n)g FA(dense)g(matrix)h Fy(a)g FA(in)-31
+b(to)370 b(the)g Fy(n)f FA(b)-31 b(y)369 b Fy(n)g FA(dense)g(matrix)i
+Fy(b)p FA(;)p Black 5660 53212 a Fs(\262)p Black 554
+w Fy(denscale)6767 55208 y(denscale\(c,a,n\))h FA(scales)d(ev)-31
+b(ery)369 b(elemen)-31 b(t)371 b(in)e(the)h Fy(n)f FA(b)-31
+b(y)369 b Fy(n)g FA(dense)g(matrix)h Fy(a)g FA(b)-31
+b(y)369 b Fy(c)p FA(;)p Black 5660 57873 a Fs(\262)p
+Black 554 w Fy(denaddI)6767 59870 y(denaddI\(a,n\))i
+FA(incremen)-31 b(ts)370 b(the)f Fy(n)h FA(b)-31 b(y)369
+b Fy(n)g FA(dense)g(matrix)h Fy(a)f FA(b)-31 b(y)370
+b(the)f(iden)-31 b(tit)g(y)372 b(matrix;)p Black 5660
+62534 a Fs(\262)p Black 554 w Fy(denfreepiv)6767 64531
+y(denfreepiv\(p\))f FA(frees)e(the)g(piv)-31 b(ot)371
+b(arra)-31 b(y)370 b Fy(p)f FA(allo)31 b(cated)371 b(b)-31
+b(y)370 b Fy(denallocpiv)p FA(;)p Black 5660 67196 a
+Fs(\262)p Black 554 w Fy(denfree)6767 69192 y(denfree\(a\))h
+FA(frees)d(the)i(dense)e(matrix)j Fy(a)e FA(allo)31 b(cated)372
+b(b)-31 b(y)369 b Fy(denalloc)p FA(;)p Black 5660 71857
+a Fs(\262)p Black 554 w Fy(denprint)6767 73853 y(denprint\(a,n\))481
+b FA(prin)-31 b(ts)479 b(the)g Fy(n)f FA(b)-31 b(y)479
+b Fy(n)g FA(dense)f(matrix)i Fy(a)f FA(to)h(standard)f(output)h(as)e
+(it)i(w)-31 b(ould)480 b(normally)6767 75182 y(app)31
+b(ear)380 b(on)f(pap)31 b(er.)522 b(It)379 b(is)h(in)-31
+b(tended)380 b(as)f(a)g(debugging)i(to)31 b(ol)381 b(with)f(small)h(v)
+-61 b(alues)379 b(of)h Fy(n)p FA(.)522 b(The)380 b(elemen)-31
+b(ts)380 b(are)6767 76510 y(prin)-31 b(ted)370 b(using)g(the)f
+Fy(\045g)g FA(option.)495 b(A)369 b(blank)h(line)g(is)f(prin)-31
+b(ted)370 b(b)31 b(efore)369 b(and)g(after)h(the)f(matrix.)p
+Black Black eop
+%%Page: 78 86
+78 85 bop Black 0 2701 a FB(78)25577 b(Generic)425 b(Linear)g(Solv)-35
+b(ers)425 b(in)f(SUNDIALS)p 0 3144 48001 45 v Black 0
+6974 a Fu(8.2)1793 b(The)598 b(BAND)h(mo)50 b(dule)0
+9646 y Ft(8.2.1)1495 b(T)-42 b(yp)42 b(e)498 b Fa(BandMat)0
+11716 y FA(The)373 b(t)-31 b(yp)31 b(e)373 b Fy(BandMat)h
+FA(is)e(the)h(t)-31 b(yp)31 b(e)374 b(of)f(a)g(large)h(band)e(matrix)j
+(A)e(\(p)31 b(ossibly)373 b(distributed\).)505 b(It)373
+b(is)f(de\257ned)h(to)g(b)31 b(e)373 b(a)0 13045 y(p)31
+b(oin)-31 b(ter)370 b(to)g(a)f(structure)g(de\257ned)g(b)-31
+b(y:)p Black Black 0 15316 a Fy(typedef)582 b(struct)g({)1162
+16644 y(long)g(int)g(size;)1162 17973 y(long)g(int)g(mu,)f(ml,)h(smu;)
+1162 19301 y(realtype)h(**data;)0 20629 y(})e(*BandMat;)0
+22886 y FA(The)369 b(\257elds)g(in)h(the)f(ab)31 b(o)-31
+b(v)g(e)371 b(structure)d(are:)p Black 1660 25143 a Fs(\262)p
+Black 554 w Fr(size)h FA(is)g(the)h(n)-31 b(um)g(b)31
+b(er)369 b(of)h(columns)g(\(whic)-31 b(h)370 b(is)f(the)h(same)f(as)h
+(the)f(n)-31 b(um)g(b)31 b(er)369 b(of)h(ro)-31 b(ws\);)p
+Black 1660 27414 a Fs(\262)p Black 554 w Fr(mu)370 b
+FA(is)f(the)g(upp)31 b(er)368 b(half-bandwidth,)373 b(0)308
+b Fs(\267)369 b Fr(mu)g Fs(\267)g Fr(size)p Fs(\241)p
+FA(1;)p Black 1660 29685 a Fs(\262)p Black 554 w Fr(ml)h
+FA(is)f(the)g(lo)-31 b(w)g(er)371 b(half-bandwidth,)h(0)308
+b Fs(\267)369 b Fr(ml)g Fs(\267)g Fr(size)p Fs(\241)p
+FA(1;)p Black 1660 31957 a Fs(\262)p Black 554 w Fr(smu)300
+b FA(is)f(the)h(storage)h(upp)31 b(er)298 b(half-bandwidth,)317
+b Fr(mu)300 b Fs(\267)f Fr(smu)g Fs(\267)h Fr(size)p
+Fs(\241)p FA(1.)469 b(The)300 b Fy(BandFactor)h FA(routine)f(writes)
+2767 33285 y(the)412 b(LU)f(factors)h(in)-31 b(to)413
+b(the)f(storage)g(for)g(A.)g(The)g(upp)31 b(er)410 b(triangular)j
+(factor)g(U,)f(ho)-31 b(w)g(ev)g(er,)423 b(ma)-31 b(y)413
+b(ha)-31 b(v)g(e)413 b(an)2767 34613 y(upp)31 b(er)315
+b(half-bandwidth)k(as)c(big)i(as)f(min)q(\()p Fr(size)p
+Fs(\241)p FA(1,)p Fr(mu)p FA(+)p Fr(ml)p FA(\))h(b)31
+b(ecause)316 b(of)g(partial)i(piv)-31 b(oting.)477 b(The)316
+b Fr(smu)g FA(\257eld)2767 35942 y(holds)370 b(the)f(upp)31
+b(er)369 b(half-bandwidth)j(allo)31 b(cated)371 b(for)e(A.)p
+Black 1660 38213 a Fs(\262)p Black 554 w Fr(data)402
+b FA(is)g(a)h(t)-31 b(w)g(o)404 b(dimensional)h(arra)-31
+b(y)402 b(used)g(for)h(comp)31 b(onen)-31 b(t)404 b(storage.)593
+b(The)403 b(elemen)-31 b(ts)403 b(of)g(a)g(band)f(matrix)2767
+39541 y(of)461 b(t)-31 b(yp)31 b(e)461 b Fy(BandMat)h
+FA(are)e(stored)g(column)-31 b(wise)463 b(\(i.e.)768
+b(columns)461 b(are)f(stored)g(one)h(on)g(top)g(of)g(the)g(other)g(in)
+2767 40870 y(memory\).)495 b(Only)369 b(elemen)-31 b(ts)370
+b(within)h(the)f(sp)31 b(eci\257ed)369 b(half-bandwidths)i(are)e
+(stored.)2767 42669 y(If)g(w)-31 b(e)370 b(n)-31 b(um)g(b)31
+b(er)369 b(ro)-31 b(ws)370 b(and)f(columns)h(in)g(the)f(band)g(matrix)i
+(starting)g(from)e(0,)h(then)p Black 4013 44941 a FB({)p
+Black 554 w Fr(data[0])469 b FA(is)i(a)f(p)31 b(oin)-31
+b(ter)471 b(to)g(\()p Fr(smu)p FA(+)p Fr(ml)p FA(+1\)*)p
+Fr(size)h FA(con)-31 b(tiguous)472 b(lo)31 b(cations)472
+b(whic)-31 b(h)471 b(hold)g(the)g(elemen)-31 b(ts)5203
+46269 y(within)371 b(the)e(band)g(of)h(A)p Black 4013
+48069 a FB({)p Black 554 w Fr(data[j])412 b FA(is)g(a)h(p)31
+b(oin)-31 b(ter)413 b(to)f(the)h(upp)31 b(ermost)412
+b(elemen)-31 b(t)414 b(within)f(the)g(band)f(in)h(the)f(j-th)h(column.)
+622 b(This)5203 49397 y(p)31 b(oin)-31 b(ter)521 b(ma)-31
+b(y)523 b(b)31 b(e)520 b(treated)i(as)f(an)g(arra)-31
+b(y)522 b(indexed)f(from)h Fr(smu)p Fs(\241)p Fr(mu)f
+FA(\(to)h(access)e(the)i(upp)31 b(ermost)5203 50725 y(elemen)-31
+b(t)458 b(within)h(the)f(band)f(in)h(the)g(j-th)f(column\))i(to)f
+Fr(smu)p FA(+)p Fr(ml)f FA(\(to)i(access)e(the)g(lo)-31
+b(w)g(est)459 b(elemen)-31 b(t)5203 52054 y(within)401
+b(the)f(band)g(in)f(the)h(j-th)g(column\).)586 b(Indices)399
+b(from)h(0)g(to)g Fr(smu)p Fs(\241)p Fr(mu)p Fs(\241)p
+FA(1)g(giv)-31 b(e)401 b(access)e(to)h(extra)5203 53382
+y(storage)370 b(elemen)-31 b(ts)370 b(required)f(b)-31
+b(y)369 b Fy(BandFactor)p FA(.)p Black 4013 55182 a FB({)p
+Black 554 w Fr(data[j][i-j+smu])i FA(is)e(the)g(\()p
+Fp(i;)184 b(j)63 b FA(\)-th)372 b(elemen)-31 b(t,)371
+b Fp(j)63 b Fs(\241)p Fr(mu)370 b Fs(\267)307 b Fp(i)h
+Fs(\267)g Fp(j)63 b FA(+)p Fr(ml)p FA(.)1660 57453 y(The)345
+b(macros)g(b)31 b(elo)-31 b(w)345 b(allo)-31 b(w)347
+b(a)d(user)f(to)i(access)f(individual)j(matrix)e(elemen)-31
+b(ts)346 b(without)g(writing)g(out)f(explicit)0 58781
+y(data)313 b(structure)e(references)f(and)h(without)j(kno)-31
+b(wing)313 b(to)31 b(o)313 b(m)-31 b(uc)g(h)312 b(ab)31
+b(out)312 b(the)g(underlying)g(elemen)-31 b(t)313 b(storage.)475
+b(The)0 60110 y(only)373 b(storage)f(assumption)h(needed)f(is)f(that)i
+(elemen)-31 b(ts)373 b(are)f(stored)f(column)-31 b(wise)374
+b(and)e(that)h(a)f(p)31 b(oin)-31 b(ter)372 b(in)-31
+b(to)374 b(the)0 61438 y Fy(j)p FA(-th)423 b(column)h(of)f(elemen)-31
+b(ts)424 b(can)e(b)31 b(e)422 b(obtained)j(via)e(the)g
+Fy(BAND)p 26708 61438 349 45 v 419 w(COL)g FA(macro.)654
+b(Users)421 b(should)i(use)f(these)g(macros)0 62766 y(whenev)-31
+b(er)369 b(p)31 b(ossible.)1660 64109 y(See)369 b(Figure)g(8.1)i(for)e
+(a)h(diagram)h(of)e(the)h Fy(BandMat)g FA(t)-31 b(yp)31
+b(e.)0 67284 y Ft(8.2.2)1495 b(Accessor)501 b(Macros)0
+69354 y FA(The)292 b(follo)-31 b(wing)295 b(three)d(macros)g(are)g
+(de\257ned)f(b)-31 b(y)292 b(the)g Fx(band)g FA(mo)31
+b(dule)293 b(to)f(pro)-31 b(vide)293 b(access)e(to)i(data)g(in)f(the)g
+Fy(BandMat)0 70682 y FA(t)-31 b(yp)31 b(e:)p Black 1660
+72939 a Fs(\262)p Black 554 w Fy(BAND)p 5161 72939 V
+419 w(ELEM)2767 74739 y FA(Usage)370 b(:)493 b Fy(BAND)p
+9196 74739 V 419 w(ELEM\(A,i,j\))582 b(=)g(a)p 18332
+74739 V 418 w(ij;)370 b FA(or)f Fy(a)p 22800 74739 V
+418 w(ij)582 b(=)f(BAND)p 28448 74739 V 419 w(ELEM\(A,i,j\);)2767
+76539 y(BAND)p 5161 76539 V 419 w(ELEM)290 b FA(references)e(the)h(\()p
+Fy(i)p FA(,)p Fy(j)p FA(\)-th)i(elemen)-31 b(t)290 b(of)g(the)f
+Fp(N)207 b Fs(\243)86 b Fp(N)410 b FA(band)289 b(matrix)h
+Fy(A)p FA(,)g(where)f(0)308 b Fs(\267)289 b Fy(i)p FA(,)305
+b Fy(j)289 b Fs(\267)308 b Fp(N)206 b Fs(\241)86 b FA(1.)2767
+77867 y(The)370 b(lo)31 b(cation)371 b(\()p Fy(i)p FA(,)p
+Fy(j)p FA(\))g(should)f(further)e(satisfy)j Fy(j)p Fs(\241)p
+Fy(\(A->mu\))f Fs(\267)f Fy(i)g Fs(\267)g Fy(j)p FA(+)p
+Fy(\(A->ml\))p FA(.)p Black Black eop
+%%Page: 79 87
+79 86 bop Black 4000 2701 a FB(8.2)425 b(The)g(BAND)f(mo)35
+b(dule)33728 b(79)p 4000 3144 48001 45 v Black Black
+10000 58597 a @beginspecial 0 @llx 0 @lly 470 @urx 538
+ at ury 3240 @rwi @setspecial
+%%BeginDocument: bandmat.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: bandmat.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Thu May 23 14:49:16 2002
+%%For: radu at tux29.llnl.gov (Radu Serban)
+%%BoundingBox: 0 0 470 538
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.565 0.565 0.565 srgb} bind def
+/col33 {0.000 0.000 0.000 srgb} bind def
+
+end
+save
+newpath 0 538 moveto 0 0 lineto 470 0 lineto 470 538 lineto closepath clip newpath
+-98.0 559.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Times-Roman /Times-Roman-iso isovec ReEncode
+ /DrawEllipse {
+	/endangle exch def
+	/startangle exch def
+	/yrad exch def
+	/xrad exch def
+	/y exch def
+	/x exch def
+	/savematrix mtrx currentmatrix def
+	x y tr xrad yrad sc 0 0 1 startangle endangle arc
+	closepath
+	savematrix setmatrix
+	} def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+7.500 slw
+% Ellipse
+n 7800 3150 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 3300 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 3450 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 7650 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 7800 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 7800 7950 30 30 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 5250 2775 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 5250 2325 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 5250 3675 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 3000 2700 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 2550 1500 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 5250 4125 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Ellipse
+n 5250 5025 38 38 0 360 DrawEllipse gs col32 1.00 shd ef gr gs col0 s gr
+
+% Polyline
+n 1650 3900 m 3450 3900 l 3450 2100 l 1650 2100 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 2100 m 5550 2100 l 5550 2550 l 4950 2550 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 2550 m 5550 2550 l 5550 3000 l 4950 3000 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 3000 m 5550 3000 l 5550 3450 l 4950 3450 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 3450 m 5550 3450 l 5550 3900 l 4950 3900 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 3900 m 5550 3900 l 5550 4350 l 4950 4350 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 4350 m 5550 4350 l 5550 4800 l 4950 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 4800 m 5550 4800 l 5550 5250 l 4950 5250 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+2520 2115 m 2580 2115 l 2580 1963 l 2550 2083 l 2520 1963 l cp
+eoclip
+n 2550 1500 m
+ 2550 2100 l gs col0 s gr gr
+
+% arrowhead
+n 2520 1963 m 2550 2083 l 2580 1963 l  col0 s
+% Polyline
+gs  clippath
+7215 1905 m 7215 1845 l 7063 1845 l 7183 1875 l 7063 1905 l cp
+eoclip
+n 5250 2775 m 5700 2775 l 5700 1875 l
+ 7200 1875 l gs col0 s gr gr
+
+% arrowhead
+n 7063 1905 m 7183 1875 l 7063 1845 l  col0 s
+% Polyline
+gs  clippath
+5070 2115 m 5130 2115 l 5130 1963 l 5100 2083 l 5070 1963 l cp
+eoclip
+n 3000 2700 m 3600 2700 l 3600 1875 l 5100 1875 l
+ 5100 2100 l gs col0 s gr gr
+
+% arrowhead
+n 5070 1963 m 5100 2083 l 5130 1963 l  col0 s
+% Polyline
+gs  clippath
+7215 705 m 7215 645 l 7063 645 l 7183 675 l 7063 705 l cp
+eoclip
+n 5250 2325 m 5250 675 l
+ 7200 675 l gs col0 s gr gr
+
+% arrowhead
+n 7063 705 m 7183 675 l 7063 645 l  col0 s
+% Polyline
+gs  clippath
+7215 3705 m 7215 3645 l 7063 3645 l 7183 3675 l 7063 3705 l cp
+eoclip
+n 5250 3675 m
+ 7200 3675 l gs col0 s gr gr
+
+% arrowhead
+n 7063 3705 m 7183 3675 l 7063 3645 l  col0 s
+% Polyline
+gs  clippath
+7215 8205 m 7215 8145 l 7063 8145 l 7183 8175 l 7063 8205 l cp
+eoclip
+n 5250 5025 m 5250 8175 l
+ 7200 8175 l gs col0 s gr gr
+
+% arrowhead
+n 7063 8205 m 7183 8175 l 7063 8145 l  col0 s
+% Polyline
+gs  clippath
+8970 615 m 9030 615 l 9030 463 l 9000 583 l 8970 463 l cp
+eoclip
+n 9000 375 m
+ 9000 600 l gs col0 s gr gr
+
+% arrowhead
+n 8970 463 m 9000 583 l 9030 463 l  col0 s
+% Polyline
+gs  clippath
+9030 1035 m 8970 1035 l 8970 1187 l 9000 1067 l 9030 1187 l cp
+eoclip
+n 9000 1275 m
+ 9000 1050 l gs col0 s gr gr
+
+% arrowhead
+n 9030 1187 m 9000 1067 l 8970 1187 l  col0 s
+% Polyline
+gs  clippath
+8970 1815 m 9030 1815 l 9030 1663 l 9000 1783 l 8970 1663 l cp
+eoclip
+n 9000 1575 m
+ 9000 1800 l gs col0 s gr gr
+
+% arrowhead
+n 8970 1663 m 9000 1783 l 9030 1663 l  col0 s
+% Polyline
+n 8550 600 m
+ 9450 600 l gs col0 s gr 
+% Polyline
+n 8550 1050 m
+ 9450 1050 l gs col0 s gr 
+% Polyline
+n 8550 1800 m
+ 9450 1800 l gs col0 s gr 
+% Polyline
+n 8400 3600 m 8400 3000 l 7200 3000 l 7200 3600 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1650 m 8400 1500 l 7200 1500 l 7200 1650 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1800 m 8400 1650 l 7200 1650 l 7200 1800 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1500 m 8400 1350 l 7200 1350 l 7200 1500 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 2550 m 8400 2400 l 7200 2400 l 7200 2550 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 2700 m 8400 2550 l 7200 2550 l 7200 2700 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 2850 m 8400 2700 l 7200 2700 l 7200 2850 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 3000 m 8400 2850 l 7200 2850 l 7200 3000 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 4425 m 8400 4050 l 7200 4050 l 7200 4425 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 4800 m 8400 4425 l 7200 4425 l 7200 4800 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 5175 m 8400 4800 l 7200 4800 l 7200 5175 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 5550 m 8400 5175 l 7200 5175 l 7200 5550 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 7050 m 8400 6900 l 7200 6900 l 7200 7050 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 7200 m 8400 7050 l 7200 7050 l 7200 7200 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 7350 m 8400 7200 l 7200 7200 l 7200 7350 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 7500 m 8400 7350 l 7200 7350 l 7200 7500 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 8700 m 8400 8550 l 7200 8550 l 7200 8700 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 8850 m 8400 8700 l 7200 8700 l 7200 8850 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 9000 m 8400 8850 l 7200 8850 l 7200 9000 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 9150 m 8400 9000 l 7200 9000 l 7200 9150 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 9300 m 8400 9150 l 7200 9150 l 7200 9300 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+7215 6405 m 7215 6345 l 7063 6345 l 7183 6375 l 7063 6405 l cp
+eoclip
+n 5250 4125 m 5700 4125 l 5700 6375 l
+ 7200 6375 l gs col0 s gr gr
+
+% arrowhead
+n 7063 6405 m 7183 6375 l 7063 6345 l  col0 s
+% Polyline
+n 8400 6900 m 8400 6750 l 7200 6750 l 7200 6900 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 6300 m 8400 5925 l 7200 5925 l 7200 6300 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 8100 m 8400 7500 l 7200 7500 l 7200 8100 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 2400 m 8400 2250 l 7200 2250 l 7200 2400 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1350 m 8400 1200 l 7200 1200 l 7200 1350 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 1200 m 8400 1050 l 7200 1050 l 7200 1200 l
+ cp gs col0 s gr 
+% Polyline
+n 7200 1950 m 8400 1950 l 8400 2100 l 7200 2100 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 2100 m 8400 2100 l 8400 2250 l 7200 2250 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 1800 m 8400 1800 l 8400 1950 l 7200 1950 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 600 m 8400 600 l 8400 750 l 7200 750 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 750 m 8400 750 l 8400 900 l 7200 900 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 900 m 8400 900 l 8400 1050 l 7200 1050 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 3600 m 8400 3600 l 8400 3750 l 7200 3750 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 3750 m 8400 3750 l 8400 3900 l 7200 3900 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 3900 m 8400 3900 l 8400 4050 l 7200 4050 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 8400 5925 m 8400 5550 l 7200 5550 l 7200 5925 l
+ cp gs col0 s gr 
+% Polyline
+n 7200 6600 m 8400 6600 l 8400 6750 l 7200 6750 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 6450 m 8400 6450 l 8400 6600 l 7200 6600 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 6300 m 8400 6300 l 8400 6450 l 7200 6450 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 8100 m 8400 8100 l 8400 8250 l 7200 8250 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 8250 m 8400 8250 l 8400 8400 l 7200 8400 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+% Polyline
+n 7200 8400 m 8400 8400 l 8400 8550 l 7200 8550 l
+ cp gs col32 0.50 shd ef gr gs col0 s gr 
+/Times-Roman-iso ff 180.00 scf sf
+1875 1125 m
+gs 1 -1 sc (A \(type BandMat\)) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+1950 2400 m
+gs 1 -1 sc (size) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+2850 2400 m
+gs 1 -1 sc (data) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+2025 2775 m
+gs 1 -1 sc (N) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+1800 3300 m
+gs 1 -1 sc (mu) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+2400 3300 m
+gs 1 -1 sc (ml) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+3000 3300 m
+gs 1 -1 sc (smu) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 2400 m
+gs 1 -1 sc (data[0]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 2850 m
+gs 1 -1 sc (data[1]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 3750 m
+gs 1 -1 sc (data[j]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 4200 m
+gs 1 -1 sc (data[j+1]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+4125 5100 m
+gs 1 -1 sc (data[N-1]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+5850 4275 m
+gs 1 -1 sc (data[j][smu-mu]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+5850 5400 m
+gs 1 -1 sc (data[j][smu]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+5850 6150 m
+gs 1 -1 sc (data[j][smu+ml]) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+8700 1500 m
+gs 1 -1 sc (mu+ml+1) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+8700 900 m
+gs 1 -1 sc (smu-mu) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+7350 4650 m
+gs 1 -1 sc (A\(j-mu-1,j\)) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+7425 4275 m
+gs 1 -1 sc (A\(j-mu,j\)) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+7650 5400 m
+gs 1 -1 sc (A\(j,j\)) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+7500 6150 m
+gs 1 -1 sc (A\(j+ml,j\)) col0 sh gr
+% Ellipse
+n 7800 5100 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 5025 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 4950 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 5850 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 5775 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 7800 5700 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 4650 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 4575 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 4500 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 3300 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 3225 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 5250 3150 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Polyline
+n 2250 2850 m 2250 2550 l 1950 2550 l 1950 2850 l
+ cp gs col-1 s gr 
+% Polyline
+n 2100 3750 m 2100 3450 l 1800 3450 l 1800 3750 l
+ cp gs col-1 s gr 
+% Polyline
+n 2700 3750 m 2700 3450 l 2400 3450 l 2400 3750 l
+ cp gs col-1 s gr 
+% Polyline
+n 3300 3750 m 3300 3450 l 3000 3450 l 3000 3750 l
+ cp gs col-1 s gr 
+% Polyline
+n 2700 1650 m 2700 1350 l 2400 1350 l 2400 1650 l
+ cp gs col-1 s gr 
+% Polyline
+n 3150 2850 m 3150 2550 l 2850 2550 l 2850 2850 l
+ cp gs col-1 s gr 
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial 4000 61033 a FA(Figure)536 b(8.1:)829 b(Diagram)538
+b(of)f(the)g(storage)h(for)e(a)h(band)g(matrix)h(of)f(t)-31
+b(yp)31 b(e)537 b Fy(BandMat)p FA(.)996 b(Here)536 b
+Fy(A)g FA(is)h(an)g Fp(N)478 b Fs(\243)358 b Fp(N)4000
+62361 y FA(band)415 b(matrix)i(of)f(t)-31 b(yp)31 b(e)416
+b Fy(BandMat)g FA(with)g(upp)31 b(er)414 b(and)i(lo)-31
+b(w)g(er)416 b(half-bandwidths)i Fy(mu)d FA(and)h Fy(ml)p
+FA(,)427 b(resp)31 b(ectiv)-31 b(ely)-92 b(.)632 b(The)4000
+63689 y(ro)-31 b(ws)487 b(and)h(columns)f(of)h Fy(A)f
+FA(are)g(n)-31 b(um)g(b)31 b(ered)487 b(from)g(0)h(to)f
+Fp(N)446 b Fs(\241)325 b FA(1)487 b(and)g(the)g(\()p
+Fp(i;)184 b(j)63 b FA(\)-th)490 b(elemen)-31 b(t)489
+b(of)e Fy(A)g FA(is)g(denoted)4000 65018 y Fy(A\(i,j\))p
+FA(.)744 b(The)453 b(grey)-31 b(ed)454 b(out)f(areas)g(of)g(the)g
+(underlying)h(comp)31 b(onen)-31 b(t)455 b(storage)e(are)g(used)f(b)-31
+b(y)453 b(the)h Fy(BandFactor)4000 66346 y FA(and)369
+b Fy(BandBacksolve)i FA(routines.)p Black Black Black
+eop
+%%Page: 80 88
+80 87 bop Black 0 2701 a FB(80)25577 b(Generic)425 b(Linear)g(Solv)-35
+b(ers)425 b(in)f(SUNDIALS)p 0 3144 48001 45 v Black Black
+1660 6974 a Fs(\262)p Black 554 w Fy(BAND)p 5161 6974
+349 45 v 419 w(COL)2767 8757 y FA(Usage)370 b(:)493 b
+Fy(col)p 8615 8757 V 419 w(j)581 b(=)g(BAND)p 13682 8757
+V 419 w(COL\(A,j\);)2767 10540 y(BAND)p 5161 10540 V
+419 w(COL)328 b FA(references)e(the)h(diagonal)j(elemen)-31
+b(t)329 b(of)f(the)g Fy(j)p FA(-th)f(column)i(of)f(the)f
+Fp(N)284 b Fs(\243)162 b Fp(N)448 b FA(band)327 b(matrix)i
+Fy(A)p FA(,)f(0)308 b Fs(\267)2767 11868 y Fy(j)392 b
+Fs(\267)345 b Fp(N)382 b Fs(\241)261 b FA(1.)560 b(The)392
+b(t)-31 b(yp)31 b(e)392 b(of)g(the)g(expression)g Fy(BAND)p
+24534 11868 V 419 w(COL\(A,j\))g FA(is)g Fy(realtype)582
+b(*)p FA(.)560 b(The)392 b(p)31 b(oin)-31 b(ter)392 b(returned)2767
+13197 y(b)-31 b(y)475 b(the)h(call)g Fy(BAND)p 10952
+13197 V 419 w(COL\(A,j\))f FA(can)g(b)31 b(e)475 b(treated)g(as)g(an)g
+(arra)-31 b(y)475 b(whic)-31 b(h)476 b(is)f(indexed)g(from)g
+Fs(\241)p Fy(\(A->mu\))h FA(to)2767 14525 y Fy(\(A->ml\))p
+FA(.)p Black 1660 16763 a Fs(\262)p Black 554 w Fy(BAND)p
+5161 16763 V 419 w(COL)p 7323 16763 V 419 w(ELEM)2767
+18546 y FA(Usage)370 b(:)493 b Fy(BAND)p 9196 18546 V
+419 w(COL)p 11358 18546 V 419 w(ELEM\(col)p 16425 18546
+V 419 w(j,i,j\))582 b(=)g(a)p 22656 18546 V 418 w(ij;)370
+b FA(or)f Fy(a)p 27124 18546 V 418 w(ij)582 b(=)f(BAND)p
+32772 18546 V 419 w(COL)p 34934 18546 V 419 w(ELEM\(col)p
+40001 18546 V 419 w(j,i,j\);)2767 20329 y FA(This)553
+b(macro)g(references)d(the)i(\()p Fy(i)p FA(,)p Fy(j)p
+FA(\)-th)j(en)-31 b(try)552 b(of)g(the)h(band)f(matrix)h
+Fy(A)f FA(when)g(used)g(in)g(conjunction)2767 21658 y(with)466
+b Fy(BAND)p 7778 21658 V 419 w(COL)e FA(to)h(reference)e(the)i
+Fy(j)p FA(-th)f(column)h(through)g Fy(col)p 31049 21658
+V 419 w(j)p FA(.)778 b(The)464 b(index)h(\()p Fy(i)p
+FA(,)p Fy(j)p FA(\))g(should)g(satisfy)2767 22986 y Fy(j)p
+Fs(\241)p Fy(\(A->mu\))371 b Fs(\267)e Fy(i)g Fs(\267)g
+Fy(j)p FA(+)p Fy(\(A->ml\))p FA(.)0 27014 y Ft(8.2.3)1495
+b(F)-125 b(unctions)0 29068 y FA(The)323 b(follo)-31
+b(wing)326 b(functions)d(for)g Fy(BandMat)g FA(matrices)g(are)g(a)-31
+b(v)-61 b(ailable)325 b(in)d(the)h Fx(band)f FA(pac)-31
+b(k)-61 b(age.)479 b(F)-92 b(or)321 b(full)j(details,)333
+b(see)0 30397 y(the)369 b(header)g(\257le)h Fy(band.h)p
+FA(.)p Black 1660 32629 a Fs(\262)p Black 554 w Fy(BandAllocMat)p
+FA(:)495 b(allo)31 b(cation)372 b(of)e(a)f Fy(BandMat)h
+FA(matrix;)p Black 1660 34867 a Fs(\262)p Black 554 w
+Fy(BandAllocPiv)p FA(:)495 b(allo)31 b(cation)372 b(of)e(a)f(piv)-31
+b(ot)371 b(arra)-31 b(y)370 b(for)f(use)g(with)h Fy(BandFactor)p
+FA(/)p Fy(BandBacksolve)p FA(;)p Black 1660 37104 a Fs(\262)p
+Black 554 w Fy(BandFactor)p FA(:)494 b(LU)369 b(factorization)k(with)d
+(partial)h(piv)-31 b(oting;)p Black 1660 39342 a Fs(\262)p
+Black 554 w Fy(BandBacksolve)p FA(:)495 b(solution)371
+b(of)f Fp(Ax)307 b FA(=)g Fp(b)369 b FA(using)h(LU)f(factorization;)p
+Black 1660 41580 a Fs(\262)p Black 554 w Fy(BandZero)p
+FA(:)494 b(load)370 b(a)g(matrix)h(with)f(zeros;)p Black
+1660 43818 a Fs(\262)p Black 554 w Fy(BandCopy)p FA(:)494
+b(cop)-31 b(y)370 b(one)f(matrix)i(to)f(another;)p Black
+1660 46056 a Fs(\262)p Black 554 w Fy(BandScale)p FA(:)494
+b(scale)370 b(a)f(matrix)i(b)-31 b(y)369 b(a)h(scalar;)p
+Black 1660 48294 a Fs(\262)p Black 554 w Fy(BandAddI)p
+FA(:)h(incremen)-31 b(t)370 b(a)g(matrix)g(b)-31 b(y)370
+b(the)f(iden)-31 b(tit)g(y)372 b(matrix;)p Black 1660
+50532 a Fs(\262)p Black 554 w Fy(BandFreeMat)p FA(:)495
+b(free)368 b(memory)i(for)g(a)f Fy(BandMat)h FA(matrix;)p
+Black 1660 52770 a Fs(\262)p Black 554 w Fy(BandFreePiv)p
+FA(:)495 b(free)368 b(memory)i(for)g(a)f(piv)-31 b(ot)371
+b(arra)-31 b(y;)p Black 1660 55007 a Fs(\262)p Black
+554 w Fy(BandPrint)p FA(:)494 b(prin)-31 b(t)370 b(a)f
+Fy(BandMat)h FA(matrix)h(to)f(standard)g(output.)0 59597
+y Fu(8.3)1793 b(The)598 b(SPGMR)f(mo)50 b(dule)0 62033
+y FA(The)445 b Fx(spgmr)f FA(pac)-31 b(k)-61 b(age,)465
+b(in)445 b(the)g(\257les)g Fy(spgmr.h)g FA(and)g Fy(spgmr.c)p
+FA(,)465 b(includes)445 b(an)g(implemen)-31 b(tation)449
+b(of)c(the)g(scaled)0 63362 y(preconditioned)293 b(GMRES)e(metho)31
+b(d.)467 b(A)292 b(separate)f(co)31 b(de)292 b(mo)31
+b(dule,)308 b Fy(iterative.h)293 b FA(and)e Fy(iterative.c)p
+FA(,)309 b(con)-31 b(tains)0 64690 y(auxiliary)424 b(functions)f(that)h
+(supp)31 b(ort)421 b Fx(spgmr)p FA(,)435 b(and)422 b(also)h(other)f
+(Krylo)-31 b(v)423 b(solv)-31 b(ers)422 b(to)h(b)31 b(e)421
+b(added)i(later.)652 b(F)-92 b(or)421 b(full)0 66018
+y(details,)371 b(including)g(usage)e(instructions,)i(see)e(the)g
+(\257les)g Fy(spgmr.h)h FA(and)g Fy(iterative.h)p FA(.)0
+68927 y FB(F)-106 b(unctions.)1107 b FA(The)370 b(follo)-31
+b(wing)372 b(functions)f(are)e(a)-31 b(v)-61 b(ailable)372
+b(in)d(the)g Fx(spgmr)f FA(pac)-31 b(k)-61 b(age:)p Black
+1660 71159 a Fs(\262)p Black 554 w Fy(SpgmrMalloc)p FA(:)495
+b(allo)31 b(cation)372 b(of)e(memory)g(for)f Fy(SpgmrSolve)p
+FA(;)p Black 1660 73397 a Fs(\262)p Black 554 w Fy(SpgmrSolve)p
+FA(:)494 b(solution)371 b(of)f Fp(Ax)307 b FA(=)h Fp(b)369
+b FA(b)-31 b(y)369 b(the)h Fx(spgmr)e FA(metho)31 b(d;)p
+Black 1660 75635 a Fs(\262)p Black 554 w Fy(SpgmrFree)p
+FA(:)494 b(free)369 b(memory)h(allo)31 b(cated)372 b(b)-31
+b(y)369 b Fy(SpgmrMalloc)p FA(.)0 77867 y(The)g(follo)-31
+b(wing)373 b(functions)d(are)g(a)-31 b(v)-61 b(ailable)371
+b(in)f(the)f(supp)31 b(ort)369 b(pac)-31 b(k)-61 b(age)370
+b Fy(iterative.h)h FA(and)e Fy(iterative.c)p FA(:)p Black
+Black eop
+%%Page: 81 89
+81 88 bop Black 4000 2701 a FB(8.3)425 b(The)g(SPGMR)f(mo)35
+b(dule)32827 b(81)p 4000 3144 48001 45 v Black Black
+5660 6974 a Fs(\262)p Black 554 w Fy(ModifiedGS)p FA(:)371
+b(p)31 b(erforms)369 b(mo)31 b(di\257ed)370 b(Gram-Sc)-31
+b(hmidt)371 b(pro)31 b(cedure;)p Black 5660 9188 a Fs(\262)p
+Black 554 w Fy(ClassicalGS)p FA(:)372 b(p)31 b(erforms)368
+b(classical)j(Gram-Sc)-31 b(hmidt)371 b(pro)31 b(cedure;)p
+Black 5660 11402 a Fs(\262)p Black 554 w Fy(QRfact)p
+FA(:)494 b(p)31 b(erforms)368 b(QR)h(factorization)k(of)d(Hessen)-31
+b(b)31 b(erg)368 b(matrix;)p Black 5660 13616 a Fs(\262)p
+Black 554 w Fy(QRsol)p FA(:)494 b(solv)-31 b(es)369 b(a)h(least)g
+(squares)e(problem)i(with)h(a)e(Hessen)-31 b(b)31 b(erg)369
+b(matrix)h(factored)g(b)-31 b(y)370 b Fy(QRfact)p FA(.)p
+Black Black eop
+%%Page: 82 90
+82 89 bop Black Black Black Black eop
+%%Page: 83 91
+83 90 bop Black Black 4000 15276 a Fw(Chapter)861 b(9)4000
+20811 y Fz(ID)-86 b(A)1032 b(Constan)-86 b(ts)4000 26567
+y FA(Belo)-31 b(w)467 b(w)-31 b(e)465 b(list)h(all)g(input)g(and)f
+(output)h(constan)-31 b(ts)466 b(used)e(b)-31 b(y)466
+b(the)f(main)h(solv)-31 b(er)465 b(and)h(linear)f(solv)-31
+b(er)466 b(mo)31 b(dules,)4000 27895 y(together)370 b(with)h(their)e(n)
+-31 b(umerical)371 b(v)-61 b(alues)369 b(and)h(a)f(short)g(description)
+h(of)g(their)g(meaning.)4000 31556 y Fu(9.1)1793 b(ID)-50
+b(A)598 b(input)h(constan)-50 b(ts)4000 33981 y Fx(id)-25
+b(a)424 b FB(main)g(solv)-35 b(er)425 b(mo)35 b(dule)5156
+35821 y Fy(IDA)p 6969 35821 349 45 v 419 w(SS)10883 b
+FA(1)1329 b(Scalar)370 b(relativ)-31 b(e)370 b(tolerance,)h(scalar)f
+(absolute)h(tolerance.)5156 37150 y Fy(IDA)p 6969 37150
+V 419 w(SV)10883 b FA(2)1329 b(Scalar)370 b(relativ)-31
+b(e)370 b(tolerance,)h(v)-31 b(ector)370 b(absolute)h(tolerance.)5156
+38478 y Fy(IDA)p 6969 38478 V 419 w(NORMAL)8559 b FA(1)1329
+b(Solv)-31 b(er)370 b(returns)e(at)i(sp)31 b(eci\257ed)368
+b(output)j(time.)5156 39806 y Fy(IDA)p 6969 39806 V 419
+w(ONE)p 9131 39806 V 419 w(STEP)7559 b FA(2)1329 b(Solv)-31
+b(er)370 b(returns)e(after)h(eac)-31 b(h)370 b(successful)f(step.)5156
+41135 y Fy(IDA)p 6969 41135 V 419 w(NORMAL)p 10874 41135
+V 419 w(TSTOP)5235 b FA(3)1329 b(Solv)-31 b(er)370 b(returns)f(at)h(sp)
+31 b(eci\257ed)369 b(output)i(time,)g(but)f(do)31 b(es)369
+b(not)i(pro)31 b(ceed)21245 42463 y(past)369 b(the)h(sp)31
+b(eci\257ed)368 b(stopping)j(time.)5156 43791 y Fy(IDA)p
+6969 43791 V 419 w(ONE)p 9131 43791 V 419 w(STEP)p 11874
+43791 V 419 w(TSTOP)4235 b FA(4)1329 b(Solv)-31 b(er)312
+b(returns)e(after)i(eac)-31 b(h)311 b(successful)g(step,)323
+b(but)312 b(do)31 b(es)311 b(not)h(pro)31 b(ceed)21245
+45120 y(past)369 b(the)h(sp)31 b(eci\257ed)368 b(stopping)j(time.)5156
+46448 y Fy(IDA)p 6969 46448 V 419 w(YA)p 8550 46448 V
+419 w(YDP)p 10712 46448 V 419 w(INIT)5978 b FA(1)1329
+b(Compute)370 b Fp(y)26584 46614 y Fm(a)27489 46448 y
+FA(and)f Fp(y)30224 46046 y Fo(0)30184 46761 y Fm(d)30700
+46448 y FA(,)g(giv)-31 b(en)371 b Fp(y)34810 46614 y
+Fm(d)35326 46448 y FA(.)5156 47776 y Fy(IDA)p 6969 47776
+V 419 w(Y)p 7969 47776 V 419 w(INIT)8721 b FA(2)1329
+b(Compute)370 b Fp(y)40 b FA(,)369 b(giv)-31 b(en)371
+b Fp(y)30774 47375 y Fo(0)31084 47776 y FA(.)4000 50414
+y FB(Iterativ)-35 b(e)424 b(linear)h(solv)-35 b(er)424
+b(mo)35 b(dule)5156 52255 y Fy(PREC)p 7550 52255 V 419
+w(NONE)9140 b FA(0)1329 b(No)369 b(preconditioning)5156
+53583 y Fy(PREC)p 7550 53583 V 419 w(LEFT)9140 b FA(1)1329
+b(Preconditioning)372 b(on)d(the)h(left.)5156 54911 y
+Fy(MODIFIED)p 9874 54911 V 420 w(GS)7977 b FA(1)1329
+b(Use)368 b(mo)31 b(di\257ed)371 b(Gram-Sc)-31 b(hmidt)370
+b(pro)31 b(cedure.)5156 56240 y Fy(CLASSICAL)p 10455
+56240 V 420 w(GS)7396 b FA(2)1329 b(Use)368 b(classical)j(Gram-Sc)-31
+b(hmidt)371 b(pro)31 b(cedure.)4000 61209 y Fu(9.2)1793
+b(ID)-50 b(A)598 b(output)h(constan)-50 b(ts)4000 63634
+y Fx(id)-25 b(a)424 b FB(main)g(solv)-35 b(er)425 b(mo)35
+b(dule)5156 65475 y Fy(IDA)p 6969 65475 V 419 w(SUCCESS)8347
+b FA(0)1329 b(Successful)368 b(function)j(return.)5156
+66803 y Fy(IDA)p 6969 66803 V 419 w(TSTOP)p 10293 66803
+V 419 w(RETURN)5604 b FA(1)1329 b Fy(IDASolve)353 b FA(succeeded)f(b)
+-31 b(y)353 b(reac)-31 b(hing)354 b(the)e(sp)31 b(eci\257ed)353
+b(stopping)g(p)31 b(oin)-31 b(t.)5156 68131 y Fy(IDA)p
+6969 68131 V 419 w(MEM)p 9131 68131 V 419 w(NULL)7559
+b FA(-1)1329 b(The)369 b Fy(ida)p 25702 68131 V 419 w(mem)g
+FA(argumen)-31 b(t)371 b(w)-31 b(as)370 b Fy(NULL)p FA(.)5156
+69460 y Fy(IDA)p 6969 69460 V 419 w(ILL)p 9131 69460
+V 419 w(INPUT)6978 b FA(-2)1329 b(One)369 b(of)g(the)h(function)g
+(inputs)g(is)f(illegal.)5156 70788 y Fy(IDA)p 6969 70788
+V 419 w(NO)p 8550 70788 V 419 w(MALLOC)6978 b FA(-3)1329
+b(The)369 b Fx(id)-25 b(a)369 b FA(memory)h(w)-31 b(as)370
+b(not)g(allo)31 b(cated)372 b(b)-31 b(y)369 b(a)h(call)g(to)g
+Fy(IDAMalloc)p FA(.)5156 72116 y Fy(IDA)p 6969 72116
+V 419 w(TOO)p 9131 72116 V 419 w(MUCH)p 11874 72116 V
+419 w(WORK)4816 b FA(-4)1329 b(The)532 b(solv)-31 b(er)533
+b(to)31 b(ok)534 b Fy(mxstep)g FA(in)-31 b(ternal)534
+b(steps)e(but)h(could)g(not)g(reac)-31 b(h)21614 73445
+y(tout.)p Black Black eop
+%%Page: 84 92
+84 91 bop Black 0 2701 a FB(84)38369 b(ID)-35 b(A)425
+b(Constan)-35 b(ts)p 0 3144 48001 45 v Black 664 6797
+a Fy(IDA)p 2477 6797 349 45 v 419 w(TOO)p 4639 6797 V
+419 w(MUCH)p 7382 6797 V 419 w(ACC)5950 b FA(-5)1329
+b(The)480 b(solv)-31 b(er)480 b(could)g(not)h(satisfy)f(the)g(accuracy)
+g(demanded)h(b)-31 b(y)479 b(the)17675 8125 y(user)368
+b(for)h(some)h(in)-31 b(ternal)371 b(step.)664 9453 y
+Fy(IDA)p 2477 9453 V 419 w(ERR)p 4639 9453 V 419 w(FAIL)8112
+b FA(-6)1329 b(Error)253 b(test)h(failures)h(o)31 b(ccurred)253
+b(to)31 b(o)254 b(man)-31 b(y)255 b(times)g(during)f(one)g(in)-31
+b(ternal)17675 10782 y(time)371 b(step)e(or)g(minim)-31
+b(um)371 b(step)e(size)g(w)-31 b(as)370 b(reac)-31 b(hed.)664
+12110 y Fy(IDA)p 2477 12110 V 419 w(CONV)p 5220 12110
+V 419 w(FAIL)7531 b FA(-7)1329 b(Con)-31 b(v)g(ergence)321
+b(test)f(failures)f(o)31 b(ccurred)319 b(to)31 b(o)320
+b(man)-31 b(y)321 b(times)f(during)f(one)17675 13438
+y(in)-31 b(ternal)371 b(time)f(step)f(or)g(minim)-31
+b(um)372 b(step)d(size)g(w)-31 b(as)370 b(reac)-31 b(hed.)664
+14767 y Fy(IDA)p 2477 14767 V 419 w(LINIT)p 5801 14767
+V 419 w(FAIL)6950 b FA(-8)1329 b(The)370 b(linear)f(solv)-31
+b(er's)370 b(initialization)k(function)d(failed.)664
+16095 y Fy(IDA)p 2477 16095 V 419 w(LSETUP)p 6382 16095
+V 419 w(FAIL)6369 b FA(-9)1329 b(The)455 b(linear)g(solv)-31
+b(er's)454 b(setup)g(function)i(failed)g(in)e(an)h(unreco)-31
+b(v)g(erable)17675 17424 y(manner.)664 18752 y Fy(IDA)p
+2477 18752 V 419 w(LSOLVE)p 6382 18752 V 419 w(FAIL)5816
+b FA(-10)1329 b(The)485 b(linear)h(solv)-31 b(er's)486
+b(solv)-31 b(e)485 b(function)i(failed)f(in)f(an)h(unreco)-31
+b(v)g(erable)17675 20080 y(manner.)664 21409 y Fy(IDA)p
+2477 21409 V 419 w(RES)p 4639 21409 V 419 w(FAIL)7559
+b FA(-11)1329 b(The)309 b(user-pro)-31 b(vided)309 b(residual)g
+(function)h(failed)g(in)f(an)g(unreco)-31 b(v)g(erable)17675
+22737 y(manner.)664 24065 y Fy(IDA)p 2477 24065 V 419
+w(CONSTR)p 6382 24065 V 419 w(FAIL)5816 b FA(-12)1329
+b(The)477 b(inequalit)-31 b(y)480 b(constrain)-31 b(ts)478
+b(w)-31 b(ere)477 b(violated)i(and)f(the)f(solv)-31 b(er)477
+b(w)-31 b(as)17675 25394 y(unable)370 b(to)g(reco)-31
+b(v)g(er.)664 26722 y Fy(IDA)p 2477 26722 V 419 w(REP)p
+4639 26722 V 419 w(RES)p 6801 26722 V 419 w(FAIL)5397
+b FA(-13)1329 b(The)352 b(user-pro)-31 b(vided)352 b(residual)g
+(function)h(rep)31 b(eatedly)352 b(returned)f(a)h(re-)17675
+28050 y(co)-31 b(v)g(erable)371 b(error)d(\260ag,)i(but)g(the)f(solv)
+-31 b(er)370 b(w)-31 b(as)370 b(unable)f(to)h(reco)-31
+b(v)g(er.)664 29379 y Fy(IDA)p 2477 29379 V 419 w(MEM)p
+4639 29379 V 419 w(FAIL)7559 b FA(-14)1329 b(A)369 b(memory)h(allo)31
+b(cation)373 b(failed.)664 30707 y Fy(IDA)p 2477 30707
+V 419 w(BAD)p 4639 30707 V 419 w(T)9302 b FA(-15)1329
+b(The)370 b(time)g Fp(t)f FA(s)f(outside)i(the)g(last)g(step)f(tak)-31
+b(en.)664 32035 y Fy(IDA)p 2477 32035 V 419 w(BAD)p 4639
+32035 V 419 w(EWT)8140 b FA(-16)1329 b(Zero)370 b(v)-61
+b(alue)369 b(of)h(some)f(error)g(w)-31 b(eigh)g(t)371
+b(comp)31 b(onen)-31 b(t.)664 33364 y Fy(IDA)p 2477 33364
+V 419 w(FIRST)p 5801 33364 V 419 w(RES)p 7963 33364 V
+419 w(FAIL)4235 b FA(-17)1329 b(The)384 b(user-pro)-31
+b(vided)383 b(residual)h(function)g(failed)h(reco)-31
+b(v)g(erably)385 b(on)e(the)17675 34692 y(\257rst)369
+b(call.)664 36020 y Fy(IDA)p 2477 36020 V 419 w(LINESEARCH)p
+8706 36020 V 420 w(FAIL)3491 b FA(-18)1329 b(The)370
+b(line)f(searc)-31 b(h)369 b(failed.)664 37349 y Fy(IDA)p
+2477 37349 V 419 w(NO)p 4058 37349 V 419 w(RECOVERY)5816
+b FA(-19)1329 b(The)453 b(residual)g(function,)475 b(linear)453
+b(solv)-31 b(er)453 b(setup)f(function,)476 b(or)452
+b(linear)17675 38677 y(solv)-31 b(er)323 b(solv)-31 b(e)324
+b(function)g(had)f(a)g(reco)-31 b(v)g(erable)324 b(failure,)334
+b(but)323 b Fy(IDACalcIC)17675 40006 y FA(could)370 b(not)g(reco)-31
+b(v)g(er.)664 41334 y Fy(IDA)p 2477 41334 V 419 w(PDATA)p
+5801 41334 V 419 w(NULL)6397 b FA(-20)1329 b(The)370
+b(preconditioner)g(mo)31 b(dule)370 b(has)f(not)h(b)31
+b(een)369 b(initialized.)0 43971 y Fx(id)-25 b(adense)425
+b FB(linear)g(solv)-35 b(er)424 b(mo)35 b(dule)1156 45812
+y Fy(IDADENSE)p 5874 45812 V 420 w(SUCCESS)5441 b FA(0)1329
+b(Successful)368 b(function)j(return.)1156 47140 y Fy(IDADENSE)p
+5874 47140 V 420 w(MEM)p 8037 47140 V 419 w(NULL)4653
+b FA(-1)1329 b(The)369 b Fy(ida)p 21702 47140 V 419 w(mem)g
+FA(argumen)-31 b(t)371 b(w)-31 b(as)370 b Fy(NULL)p FA(.)1156
+48469 y Fy(IDADENSE)p 5874 48469 V 420 w(LMEM)p 8618
+48469 V 419 w(NULL)4072 b FA(-2)1329 b(The)369 b Fx(id)-25
+b(adense)370 b FA(linear)g(solv)-31 b(er)369 b(has)h(not)f(b)31
+b(een)369 b(initialized.)1156 49797 y Fy(IDADENSE)p 5874
+49797 V 420 w(ILL)p 8037 49797 V 419 w(INPUT)4072 b FA(-3)1329
+b(The)258 b Fx(id)-25 b(adense)259 b FA(solv)-31 b(er)258
+b(is)g(not)h(compatible)h(with)g(the)e(curren)-31 b(t)258
+b Fx(nvec-)17614 51125 y(tor)368 b FA(mo)31 b(dule.)1156
+52454 y Fy(IDADENSE)p 5874 52454 V 420 w(MEM)p 8037 52454
+V 419 w(FAIL)4653 b FA(-4)1329 b(A)369 b(memory)h(allo)31
+b(cation)373 b(request)368 b(failed.)0 55091 y Fx(id)-25
+b(aband)425 b FB(linear)f(solv)-35 b(er)425 b(mo)35 b(dule)1156
+56932 y Fy(IDABAND)p 5293 56932 V 420 w(SUCCESS)6022
+b FA(0)1329 b(Successful)368 b(function)j(return.)1156
+58260 y Fy(IDABAND)p 5293 58260 V 420 w(MEM)p 7456 58260
+V 418 w(NULL)5235 b FA(-1)1329 b(The)369 b Fy(ida)p 21702
+58260 V 419 w(mem)g FA(argumen)-31 b(t)371 b(w)-31 b(as)370
+b Fy(NULL)p FA(.)1156 59589 y Fy(IDABAND)p 5293 59589
+V 420 w(LMEM)p 8037 59589 V 419 w(NULL)4653 b FA(-2)1329
+b(The)369 b Fx(id)-25 b(aband)369 b FA(linear)h(solv)-31
+b(er)370 b(has)f(not)h(b)31 b(een)368 b(initialized.)1156
+60917 y Fy(IDABAND)p 5293 60917 V 420 w(ILL)p 7456 60917
+V 418 w(INPUT)4654 b FA(-3)1329 b(The)305 b Fx(id)-25
+b(aband)304 b FA(solv)-31 b(er)306 b(is)e(not)i(compatible)h(with)f
+(the)f(curren)-31 b(t)305 b Fx(nvec-)17614 62245 y(tor)368
+b FA(mo)31 b(dule.)1156 63574 y Fy(IDABAND)p 5293 63574
+V 420 w(MEM)p 7456 63574 V 418 w(FAIL)5235 b FA(-4)1329
+b(A)369 b(memory)h(allo)31 b(cation)373 b(request)368
+b(failed.)0 66211 y Fx(id)-25 b(aspgmr)423 b FB(linear)i(solv)-35
+b(er)425 b(mo)35 b(dule)1156 68052 y Fy(IDASPGMR)p 5874
+68052 V 420 w(SUCCESS)5441 b FA(0)1329 b(Successful)368
+b(function)j(return.)1156 69380 y Fy(IDASPGMR)p 5874
+69380 V 420 w(MEM)p 8037 69380 V 419 w(NULL)4653 b FA(-1)1329
+b(The)369 b Fy(ida)p 21702 69380 V 419 w(mem)g FA(argumen)-31
+b(t)371 b(w)-31 b(as)370 b Fy(NULL)p FA(.)1156 70709
+y Fy(IDASPGMR)p 5874 70709 V 420 w(LMEM)p 8618 70709
+V 419 w(NULL)4072 b FA(-2)1329 b(The)369 b Fx(id)-25
+b(aspgmr)368 b FA(linear)i(solv)-31 b(er)370 b(has)f(not)h(b)31
+b(een)368 b(initialized.)1156 72037 y Fy(IDASPGMR)p 5874
+72037 V 420 w(ILL)p 8037 72037 V 419 w(INPUT)4072 b FA(-3)1329
+b(The)644 b Fx(id)-25 b(aspgmr)643 b FA(solv)-31 b(er)645
+b(is)f(not)i(compatible)g(with)g(the)f(curren)-31 b(t)17614
+73365 y Fx(nvector)369 b FA(mo)31 b(dule.)p Black Black
+eop
+%%Page: 85 93
+85 92 bop Black 4000 2701 a FB(9.2)425 b(ID)-35 b(A)424
+b(output)i(constan)-35 b(ts)32499 b(85)p 4000 3144 48001
+45 v Black 4664 6963 a Fy(IDASPGMR)p 9382 6963 349 45
+v 420 w(MEM)p 11545 6963 V 419 w(FAIL)4653 b FA(-4)1329
+b(A)369 b(memory)h(allo)31 b(cation)373 b(request)368
+b(failed.)4000 10431 y Fx(spgmr)423 b FB(generic)j(linear)e(solv)-35
+b(er)425 b(mo)35 b(dule)5156 12486 y Fy(SPGMR)p 8131
+12486 V 419 w(SUCCESS)7185 b FA(0)1329 b(Con)-31 b(v)g(erged.)5156
+13815 y Fy(SPGMR)p 8131 13815 V 419 w(RES)p 10293 13815
+V 419 w(REDUCED)5023 b FA(1)1329 b(No)369 b(con)-31 b(v)g(ergence,)371
+b(but)e(the)h(residual)f(norm)h(w)-31 b(as)370 b(reduced.)5156
+15143 y Fy(SPGMR)p 8131 15143 V 419 w(CONV)p 10874 15143
+V 419 w(FAIL)6185 b FA(2)1329 b(F)-92 b(ailure)369 b(to)h(con)-31
+b(v)g(erge.)5156 16471 y Fy(SPGMR)p 8131 16471 V 419
+w(QRFACT)p 12036 16471 V 420 w(FAIL)5022 b FA(3)1329
+b(A)369 b(singular)h(matrix)h(w)-31 b(as)369 b(found)h(during)g(the)f
+(QR)g(factorization.)5156 17800 y Fy(SPGMR)p 8131 17800
+V 419 w(PSOLVE)p 12036 17800 V 420 w(FAIL)p 14780 17800
+V 419 w(REC)2860 b FA(4)1329 b(The)369 b(preconditioner)h(solv)-31
+b(e)370 b(function)h(failed)g(reco)-31 b(v)g(erably)-92
+b(.)5156 19128 y Fy(SPGMR)p 8131 19128 V 419 w(MEM)p
+10293 19128 V 419 w(NULL)6397 b FA(-1)1329 b(The)369
+b Fx(spgmr)f FA(memory)i(is)f Fy(NULL)5156 20457 y(SPGMR)p
+8131 20457 V 419 w(ATIMES)p 12036 20457 V 420 w(FAIL)4653
+b FA(-2)1329 b(The)369 b(Jacobian)i(tims)f(v)-31 b(ector)370
+b(function)g(failed.)5156 21785 y Fy(SPGMR)p 8131 21785
+V 419 w(PSOLVE)p 12036 21785 V 420 w(FAIL)p 14780 21785
+V 419 w(UNREC)1329 b FA(-3)g(The)369 b(preconditioner)h(solv)-31
+b(e)370 b(function)h(failed)g(unreco)-31 b(v)g(erably)-92
+b(.)5156 23113 y Fy(SPGMR)p 8131 23113 V 419 w(GS)p 9712
+23113 V 419 w(FAIL)6978 b FA(-4)1329 b(F)-92 b(ailure)369
+b(in)g(the)h(Gram-Sc)-31 b(hmidt)371 b(pro)31 b(cedure.)5156
+24442 y Fy(SPGMR)p 8131 24442 V 419 w(QRSOL)p 11455 24442
+V 419 w(FAIL)5235 b FA(-5)1329 b(The)411 b(matrix)i Fp(R)419
+b FA(w)-31 b(as)413 b(found)e(to)i(b)31 b(e)411 b(singular)h(during)g
+(the)f(QR)g(solv)-31 b(e)21614 25770 y(phase.)p Black
+Black eop
+%%Page: 86 94
+86 93 bop Black Black Black Black eop
+%%Page: 87 95
+87 94 bop Black Black 4000 15830 a Fz(Bibliograph)-86
+b(y)p Black 4553 21734 a FA([1])p Black 555 w(K.)325
+b(E.)h(Brenan,)333 b(S.)325 b(L.)g(Campb)31 b(ell,)336
+b(and)325 b(L.)g(R.)f(P)-31 b(etzold.)421 b Fr(Numeric)-57
+b(al)356 b(Solution)f(of)h(Initial-V)-85 b(alue)355 b(Pr)-57
+b(oblems)6275 23062 y(in)397 b(Di\256er)-57 b(ential-A)-28
+b(lgebr)-57 b(aic)398 b(Equations)p FA(.)491 b(SIAM,)369
+b(Philadelphia,)k(P)-31 b(a,)370 b(1996.)p Black 4553
+25276 a([2])p Black 555 w(P)-92 b(.)409 b(N.)g(Bro)-31
+b(wn)409 b(and)g(A.)g(C.)g(Hindmarsh.)609 b(Reduced)408
+b(Storage)h(Matrix)g(Metho)31 b(ds)409 b(in)f(Sti\256)h(ODE)f(Systems.)
+6275 26604 y Fr(J.)397 b(Appl.)f(Math.)f(&)h(Comp.)p
+FA(,)370 b(31:49{91,)j(1989.)p Black 4553 28818 a([3])p
+Black 555 w(P)-92 b(.)416 b(N.)g(Bro)-31 b(wn,)428 b(A.)415
+b(C.)h(Hindmarsh,)428 b(and)416 b(L.)f(R.)g(P)-31 b(etzold.)631
+b(Using)416 b(Krylo)-31 b(v)416 b(Metho)31 b(ds)415 b(in)g(the)h
+(Solution)h(of)6275 30147 y(Large-Scale)371 b(Di\256eren)-31
+b(tial-Algebraic)372 b(Systems.)491 b Fr(SIAM)396 b(J.)h(Sci.)g
+(Comput.)p FA(,)370 b(15:1467{1488,)375 b(1994.)p Black
+4553 32361 a([4])p Black 555 w(P)-92 b(.)335 b(N.)f(Bro)-31
+b(wn,)342 b(A.)335 b(C.)f(Hindmarsh,)342 b(and)334 b(L.)g(R.)h(P)-31
+b(etzold.)435 b(Consisten)-31 b(t)336 b(Initial)g(Condition)g
+(Calculation)i(for)6275 33689 y(Di\256eren)-31 b(tial-Algebraic)373
+b(Systems.)491 b Fr(SIAM)396 b(J.)g(Sci.)i(Comput.)p
+FA(,)370 b(19:1495{1512,)375 b(1998.)p Black 4553 35903
+a([5])p Black 555 w(G.)390 b(D.)g(Byrne.)553 b(Pragmatic)392
+b(Exp)31 b(erimen)-31 b(ts)391 b(with)g(Krylo)-31 b(v)391
+b(Metho)31 b(ds)389 b(in)h(the)g(Sti\256)h(ODE)e(Setting.)555
+b(In)389 b(J.R.)6275 37231 y(Cash)382 b(and)g(I.)f(Gladw)-31
+b(ell,)387 b(editors,)f Fr(Computational)407 b(Or)-57
+b(dinary)407 b(Di\256er)-57 b(ential)409 b(Equations)p
+FA(,)384 b(pages)e(323{356,)6275 38560 y(Oxford,)370
+b(1992.)i(Oxford)d(Univ)-31 b(ersit)g(y)371 b(Press.)p
+Black 4553 40774 a([6])p Black 555 w(G.)500 b(D.)g(Byrne)f(and)h(A.)g
+(C.)h(Hindmarsh.)881 b(User)498 b(Do)31 b(cumen)-31 b(tation)503
+b(for)d(PV)-31 b(ODE,)500 b(An)g(ODE)f(Solv)-31 b(er)501
+b(for)6275 42102 y(P)-31 b(arallel)372 b(Computers.)492
+b(T)-92 b(ec)-31 b(hnical)371 b(Rep)31 b(ort)369 b(UCRL-ID-130884,)j
+(LLNL,)d(Ma)-31 b(y)370 b(1998.)p Black 4553 44316 a([7])p
+Black 555 w(G.)384 b(D.)f(Byrne)g(and)h(A.)g(C.)g(Hindmarsh.)534
+b(PV)-31 b(ODE,)385 b(An)e(ODE)g(Solv)-31 b(er)384 b(for)g(P)-31
+b(arallel)385 b(Computers.)535 b Fr(Intl.)409 b(J.)6275
+45644 y(High)397 b(Perf.)g(Comput.)f(Apps.)p FA(,)369
+b(13\(4\):254{365,)375 b(1999.)p Black 4553 47858 a([8])p
+Black 555 w(S.)380 b(D.)f(Cohen)g(and)h(A.)f(C.)h(Hindmarsh.)521
+b(CV)-31 b(ODE)q(,)382 b(a)d(Sti\256/Nonsti\256)i(ODE)e(Solv)-31
+b(er)380 b(in)f(C.)521 b Fr(Computers)404 b(in)6275 49186
+y(Physics)p FA(,)370 b(10\(2\):138{143,)376 b(1996.)p
+Black 4553 51400 a([9])p Black 555 w(A.)493 b(M.)g(Collier,)525
+b(A.)493 b(C.)h(Hindmarsh,)524 b(R.)493 b(Serban,)523
+b(and)493 b(C.S.)h(W)-92 b(o)31 b(o)g(dw)-31 b(ard.)859
+b(User)492 b(Do)31 b(cumen)-31 b(tation)495 b(for)6275
+52729 y(KINSOL)369 b(v2.2.0.)494 b(T)-92 b(ec)-31 b(hnical)371
+b(Rep)31 b(ort)369 b(UCRL-SM-208116,)j(LLNL,)e(2004.)p
+Black 4000 54943 a([10])p Black 555 w(A.)352 b(C.)g(Hindmarsh)g(and)f
+(R.)g(Serban.)462 b(Example)353 b(Programs)f(for)f(ID)-31
+b(A)351 b(v2.2.0.)464 b(T)-92 b(ec)-31 b(hnical)353 b(Rep)31
+b(ort)351 b(UCRL-)6275 56271 y(SM-208113,)372 b(LLNL,)e(2004.)p
+Black 4000 58485 a([11])p Black 555 w(A.)424 b(C.)f(Hindmarsh)g(and)g
+(R.)g(Serban.)650 b(User)422 b(Do)31 b(cumen)-31 b(tation)425
+b(for)e(CV)-31 b(ODE)423 b(v2.2.0.)653 b(T)-92 b(ec)-31
+b(hnical)424 b(Rep)31 b(ort)6275 59813 y(UCRL-SM-208108,)373
+b(LLNL,)c(2004.)p Black 4000 62027 a([12])p Black 555
+w(A.)397 b(C.)g(Hindmarsh)g(and)f(A.)h(G.)f(T)-92 b(a)-31
+b(ylor.)969 b(PV)-31 b(ODE)397 b(and)f(KINSOL:)h(P)-31
+b(arallel)398 b(Soft)-31 b(w)g(are)398 b(for)e(Di\256eren)-31
+b(tial)6275 63356 y(and)370 b(Nonlinear)h(Systems.)491
+b(T)-92 b(ec)-31 b(hnical)371 b(Rep)31 b(ort)369 b(UCRL-ID-129739,)j
+(LLNL,)d(F)-92 b(ebruary)368 b(1998.)p Black 4000 65569
+a([13])p Black 555 w(Y.)398 b(Saad)g(and)f(M.)g(H.)h(Sc)-31
+b(h)g(ultz.)575 b(GMRES:)397 b(A)g(Generalized)h(Minimal)h(Residual)e
+(Algorithm)j(for)d(Solving)6275 66898 y(Nonsymmetric)371
+b(Linear)f(Systems.)491 b Fr(SIAM)396 b(J.)h(Sci.)g(Stat.)f(Comp.)p
+FA(,)370 b(7:856{869,)k(1986.)p Black Black eop
+%%Page: 88 96
+88 95 bop Black Black Black Black eop
+%%Page: 89 97
+89 96 bop Black Black Black 4000 13314 a Fz(Index)p Black
+4000 18849 a Fx(band)369 b FA(generic)h(linear)g(solv)-31
+b(er)6214 20180 y(functions,)371 b(80)6214 21511 y(macros,)f(78{80)6214
+22843 y(t)-31 b(yp)31 b(e)370 b Fy(BandMat)p FA(,)g(78)4000
+24174 y Fy(BAND)p 6394 24174 349 45 v 419 w(COL)p FA(,)g(52,)g
+FB(80)4000 25505 y Fy(BAND)p 6394 25505 V 419 w(COL)p
+8556 25505 V 419 w(ELEM)p FA(,)g(52,)g FB(80)4000 26836
+y Fy(BAND)p 6394 26836 V 419 w(ELEM)p FA(,)g(52,)h FB(78)4000
+28167 y Fy(BandMat)p FA(,)g(18,)f(52,)g FB(78)4000 29499
+y Fy(BIG)p 5813 29499 V 419 w(REAL)p FA(,)g(17,)g(65)4000
+31984 y Fy(CLASSICAL)p 9299 31984 V 420 w(GS)p FA(,)g
+FB(34)4000 34469 y Fy(denaddI)p FA(,)h FB(77)4000 35800
+y Fy(denalloc)p FA(,)g FB(76)4000 37131 y Fy(denallocpiv)p
+FA(,)g FB(77)4000 38463 y Fy(dencopy)p FA(,)g FB(77)4000
+39794 y Fy(denfree)p FA(,)g FB(77)4000 41125 y Fy(denfreepiv)p
+FA(,)g FB(77)4000 42456 y Fy(denprint)p FA(,)g FB(77)4000
+43787 y Fy(denscale)p FA(,)g FB(77)4000 45119 y Fx(dense)f
+FA(generic)f(linear)h(solv)-31 b(er)6214 46450 y(functions)7321
+47781 y(large)370 b(matrix,)h(76)7321 49112 y(small)f(matrix,)i(76{77)
+6214 50443 y(macros,)e(76)6214 51774 y(t)-31 b(yp)31
+b(e)370 b Fy(DenseMat)p FA(,)g(75)4000 53106 y Fy(DENSE)p
+6975 53106 V 419 w(COL)p FA(,)g(51,)h FB(76)4000 54437
+y Fy(DENSE)p 6975 54437 V 419 w(ELEM)p FA(,)f(51,)h FB(76)4000
+55768 y Fy(DenseMat)p FA(,)g(18,)f(51,)h FB(75)4000 57099
+y Fy(denzero)p FA(,)g FB(77)4000 59584 y Fy(e)p 4651
+59584 V 419 w(data)p FA(,)f(50)4000 60916 y(error)e(message,)i(25)4000
+63401 y Fy(gefa)p FA(,)g FB(77)4000 64732 y FA(generic)f(linear)h(solv)
+-31 b(ers)6214 66063 y Fx(band)p FA(,)370 b(78)6214 67395
+y Fx(dense)p FA(,)g(75)6214 68726 y Fx(spgmr)p FA(,)e(80)6214
+70057 y(use)h(in)g Fx(id)-25 b(a)p FA(,)370 b(15)4000
+71388 y Fy(gesl)p FA(,)g FB(77)4000 72719 y FA(GMRES)f(metho)31
+b(d,)370 b(34,)h(80)4000 74050 y(Gram-Sc)-31 b(hmidt)371
+b(pro)31 b(cedure,)368 b(34)4000 76536 y(half-bandwidths,)k(22,)f
+(51{53,)g(58)4000 77867 y(header)e(\257les,)h(18,)g(57)p
+Black Black 28553 18849 a Fx(id)-25 b(a)30767 20191 y
+FA(motiv)-61 b(ation)373 b(for)c(writing)i(in)f(C,)g(1)30767
+21533 y(pac)-31 b(k)-61 b(age)371 b(structure,)e(13)28553
+22875 y Fx(id)-25 b(a)370 b FA(linear)g(solv)-31 b(ers)30767
+24217 y(built)371 b(on)e(generic)h(solv)-31 b(ers,)369
+b(21)30767 25559 y(header)g(\257les,)h(18)30767 26901
+y Fx(id)-25 b(aband)p FA(,)370 b(22)30767 28243 y Fx(id)-25
+b(adense)p FA(,)371 b(21)30767 29585 y Fx(id)-25 b(aspgmr)p
+FA(,)369 b(22)30767 30926 y(implemen)-31 b(tation)374
+b(details,)d(15)30767 32268 y(list)f(of,)h(13)30767 33610
+y Fx(nvector)f FA(compatibilit)-31 b(y)-92 b(,)374 b(17)30767
+34952 y(selecting)d(one,)f(21)28553 36294 y Fy(ida.h)p
+FA(,)h(18)28553 37636 y Fy(IDA)p 30366 37636 V 419 w(BAD)p
+32528 37636 V 419 w(EWT)p FA(,)f(23)28553 38978 y Fy(IDA)p
+30366 38978 V 419 w(BAD)p 32528 38978 V 419 w(T)p FA(,)g(37)28553
+40320 y Fy(IDA)p 30366 40320 V 419 w(CONSTR)p 34271 40320
+V 420 w(FAIL)p FA(,)g(24,)g(25)28553 41662 y Fy(IDA)p
+30366 41662 V 419 w(CONV)p 33109 41662 V 419 w(FAIL)p
+FA(,)g(24,)h(25)28553 43004 y Fy(IDA)p 30366 43004 V
+419 w(ERR)p 32528 43004 V 419 w(FAIL)p FA(,)f(25)28553
+44346 y Fy(IDA)p 30366 44346 V 419 w(FIRST)p 33690 44346
+V 420 w(RES)p 35853 44346 V 418 w(FAIL)p FA(,)g(23)28553
+45688 y Fy(IDA)p 30366 45688 V 419 w(ILL)p 32528 45688
+V 419 w(INPUT)p FA(,)e(21,)g(23,)g(24,)g(27,)g(28,)h(30,)f(31,)g
+(35{37,)32981 47016 y(49)28553 48358 y Fy(IDA)p 30366
+48358 V 419 w(LINESEARCH)p 36595 48358 V 420 w(FAIL)p
+FA(,)i(24)28553 49700 y Fy(IDA)p 30366 49700 V 419 w(LINIT)p
+33690 49700 V 420 w(FAIL)p FA(,)g(23,)g(25)28553 51042
+y Fy(IDA)p 30366 51042 V 419 w(LSETUP)p 34271 51042 V
+420 w(FAIL)p FA(,)g(23,)g(25)28553 52384 y Fy(IDA)p 30366
+52384 V 419 w(LSOLVE)p 34271 52384 V 420 w(FAIL)p FA(,)g(23,)g(25)28553
+53726 y Fy(IDA)p 30366 53726 V 419 w(MEM)p 32528 53726
+V 419 w(FAIL)p FA(,)g(21)28553 55068 y Fy(IDA)p 30366
+55068 V 419 w(MEM)p 32528 55068 V 419 w(NULL)p FA(,)482
+b(21,)510 b(23,)g(24,)f(27{31,)j(35{37,)f(39{44,)32981
+56396 y(49)28553 57738 y Fy(IDA)p 30366 57738 V 419 w(NO)p
+31947 57738 V 419 w(MALLOC)p FA(,)370 b(23,)h(49)28553
+59080 y Fy(IDA)p 30366 59080 V 419 w(NO)p 31947 59080
+V 419 w(RECOVERY)p FA(,)g(24)28553 60422 y Fy(IDA)p 30366
+60422 V 419 w(NORMAL)p FA(,)g(24)28553 61764 y Fy(IDA)p
+30366 61764 V 419 w(NORMAL)p 34271 61764 V 420 w(TSTOP)p
+FA(,)f(24)28553 63106 y Fy(IDA)p 30366 63106 V 419 w(ONE)p
+32528 63106 V 419 w(STEP)p FA(,)g(24)28553 64448 y Fy(IDA)p
+30366 64448 V 419 w(ONE)p 32528 64448 V 419 w(STEP)p
+35271 64448 V 419 w(TSTOP)p FA(,)g(24)28553 65789 y Fy(IDA)p
+30366 65789 V 419 w(PDATA)p 33690 65789 V 420 w(NULL)p
+FA(,)g(59,)g(60)28553 67131 y Fy(IDA)p 30366 67131 V
+419 w(REP)p 32528 67131 V 419 w(RES)p 34690 67131 V 419
+w(ERR)p FA(,)g(25)28553 68473 y Fy(IDA)p 30366 68473
+V 419 w(RES)p 32528 68473 V 419 w(FAIL)p FA(,)g(23,)h(25)28553
+69815 y Fy(IDA)p 30366 69815 V 419 w(SS)p FA(,)f(21,)h
+FB(31)p FA(,)f(49)28553 71157 y Fy(IDA)p 30366 71157
+V 419 w(SUCCESS)p FA(,)h(21,)f(23,)h(24,)f(27{31,)i(35{37,)g(49,)e(60)
+28553 72499 y Fy(IDA)p 30366 72499 V 419 w(SV)p FA(,)g(21,)h
+FB(31)p FA(,)f(49)28553 73841 y Fy(IDA)p 30366 73841
+V 419 w(TOO)p 32528 73841 V 419 w(MUCH)p 35271 73841
+V 419 w(ACC)p FA(,)g(25)28553 75183 y Fy(IDA)p 30366
+75183 V 419 w(TOO)p 32528 75183 V 419 w(MUCH)p 35271
+75183 V 419 w(WORK)p FA(,)g(25)28553 76525 y Fy(IDA)p
+30366 76525 V 419 w(TSTOP)p 33690 76525 V 420 w(RETURN)p
+FA(,)g(24)28553 77867 y Fy(IDA)p 30366 77867 V 419 w(WF)p
+FA(,)g FB(21)p FA(,)h(49)p Black Black eop
+%%Page: 90 98
+90 97 bop Black 0 2701 a FB(90)42474 b(INDEX)p 0 3144
+48001 45 v Black 0 6974 a Fy(IDA)p 1813 6974 349 45 v
+419 w(Y)p 2813 6974 V 418 w(INIT)p FA(,)371 b FB(23)0
+8311 y Fy(IDA)p 1813 8311 V 419 w(YA)p 3394 8311 V 419
+w(YDP)p 5556 8311 V 418 w(INIT)p FA(,)g FB(23)0 9649
+y Fx(id)-25 b(aband)369 b FA(linear)h(solv)-31 b(er)2214
+10987 y(Jacobian)371 b(appro)-31 b(ximation)372 b(used)d(b)-31
+b(y)-92 b(,)370 b(32)2214 12324 y Fx(nvector)f FA(compatibilit)-31
+b(y)-92 b(,)374 b(22)2214 13662 y(optional)e(input,)e(32)2214
+14999 y(optional)i(output,)f(45{46)2214 16337 y(selection)f(of,)h(22)0
+17675 y Fx(id)-25 b(aband)369 b FA(linear)h(solv)-31
+b(er)2214 19012 y(memory)370 b(requiremen)-31 b(ts,)370
+b(45)0 20350 y Fy(IDABand)p FA(,)h(19,)f(21,)g FB(22)p
+FA(,)h(51)0 21688 y Fy(idaband.h)p FA(,)g(18)0 23025
+y Fy(IDABAND)p 4137 23025 V 419 w(ILL)p 6299 23025 V
+419 w(INPUT)p FA(,)g(22)0 24363 y Fy(IDABAND)p 4137 24363
+V 419 w(LMEM)p 6880 24363 V 419 w(NULL)p FA(,)g(32,)f(45,)g(46)0
+25700 y Fy(IDABAND)p 4137 25700 V 419 w(MEM)p 6299 25700
+V 419 w(FAIL)p FA(,)g(22)0 27038 y Fy(IDABAND)p 4137
+27038 V 419 w(MEM)p 6299 27038 V 419 w(NULL)p FA(,)g(22,)h(32,)f(45,)h
+(46)0 28376 y Fy(IDABAND)p 4137 28376 V 419 w(SUCCESS)p
+FA(,)g(22,)f(32,)h(46)0 29713 y Fy(IDABandDQJac)p FA(,)g(32)0
+31051 y Fy(IDABandGetLastFlag)p FA(,)h FB(46)0 32388
+y Fy(IDABandGetNumJacEvals)p FA(,)h FB(45)0 33726 y Fy
+(IDABandGetNumResEvals)p FA(,)g FB(45)0 35064 y Fy(IDABandGetWorkSpace)
+p FA(,)f FB(45)0 36401 y Fy(IDABandJacFn)p FA(,)f FB(51)0
+37739 y Fy(IDABandSetJacFn)p FA(,)h FB(32)0 39076 y Fx(id)-25
+b(abbdpre)370 b FA(preconditioner)2214 40414 y(description,)g(55{56)
+2214 41752 y(optional)i(output,)f(60)2214 43089 y(usage,)f(57{58)2214
+44427 y(user-callable)g(functions,)h(58{60)2214 45764
+y(user-supplied)e(functions,)h(56{57)0 47102 y Fy(IDABBDPrecAlloc)p
+FA(,)i FB(58)0 48440 y Fy(IDABBDPrecFree)p FA(,)g FB(59)0
+49777 y Fy(IDABBDPrecGetNumGfnEvals)p FA(,)h FB(60)0
+51115 y Fy(IDABBDPrecGetWorkSpace)p FA(,)g FB(60)0 52452
+y Fy(IDABBDPrecReInit)p FA(,)f FB(59)0 53790 y Fy(IDABBDSpgmr)p
+FA(,)f(58,)g FB(59)0 55128 y Fy(IDACalcIC)p FA(,)g FB(23)0
+56465 y Fy(IDACreate)p FA(,)g FB(20)0 57803 y Fx(id)-25
+b(adense)370 b FA(linear)g(solv)-31 b(er)2214 59140 y(Jacobian)371
+b(appro)-31 b(ximation)372 b(used)d(b)-31 b(y)-92 b(,)370
+b(32)2214 60478 y Fx(nvector)f FA(compatibilit)-31 b(y)-92
+b(,)374 b(21)2214 61816 y(optional)e(input,)e(32)2214
+63153 y(optional)i(output,)f(43{45)2214 64491 y(selection)f(of,)h(21)0
+65828 y Fx(id)-25 b(adense)370 b FA(linear)g(solv)-31
+b(er)2214 67166 y(memory)370 b(requiremen)-31 b(ts,)370
+b(44)0 68504 y Fy(IDADense)p FA(,)h(19,)f(21,)h FB(22)p
+FA(,)f(50)0 69841 y Fy(idadense.h)p FA(,)h(18)0 71179
+y Fy(IDADENSE)p 4718 71179 V 420 w(ILL)p 6881 71179 V
+418 w(INPUT)p FA(,)g(22)0 72516 y Fy(IDADENSE)p 4718
+72516 V 420 w(LMEM)p 7462 72516 V 419 w(NULL)p FA(,)f(32,)g(44,)h(45)0
+73854 y Fy(IDADENSE)p 4718 73854 V 420 w(MEM)p 6881 73854
+V 418 w(FAIL)p FA(,)g(22)0 75192 y Fy(IDADENSE)p 4718
+75192 V 420 w(MEM)p 6881 75192 V 418 w(NULL)p FA(,)g(22,)f(32,)g(44,)h
+(45)0 76529 y Fy(IDADENSE)p 4718 76529 V 420 w(SUCCESS)p
+FA(,)f(22,)h(32,)f(44)0 77867 y Fy(IDADenseDQJac)p FA(,)h(32)p
+Black Black 24553 6974 a Fy(IDADenseGetLastFlag)p FA(,)i
+FB(44)24553 8311 y Fy(IDADenseGetNumJacEvals)p FA(,)g
+FB(44)24553 9649 y Fy(IDADenseGetNumResEvals)p FA(,)g
+FB(44)24553 10987 y Fy(IDADenseGetWorkSpace)p FA(,)g
+FB(43)24553 12324 y Fy(IDADenseJacFn)p FA(,)f FB(50)24553
+13662 y Fy(IDADenseSetJacFn)p FA(,)g FB(32)24553 14999
+y Fy(IDAEwtFn)p FA(,)f FB(50)24553 16337 y Fy(IDAFree)p
+FA(,)g(20,)f FB(21)24553 17675 y Fy(IDAGetActualInitStep)p
+FA(,)j FB(41)24553 19012 y Fy(IDAGetCurrentOrder)p FA(,)g
+FB(40)24553 20350 y Fy(IDAGetCurrentStep)p FA(,)f FB(41)24553
+21688 y Fy(IDAGetCurrentTime)p FA(,)g FB(41)24553 23025
+y Fy(IDAGetErrWeights)p FA(,)g FB(42)24553 24363 y Fy
+(IDAGetIntegratorStats)p FA(,)h FB(42)24553 25700 y Fy(IDAGetLastOrder)
+p FA(,)f FB(40)24553 27038 y Fy(IDAGetLastStep)p FA(,)g
+FB(41)24553 28376 y Fy(IDAGetNonlinSolvStats)p FA(,)h
+FB(43)24553 29713 y Fy(IDAGetNumErrTestFails)p FA(,)g
+FB(40)24553 31051 y Fy(IDAGetNumLinSolvSetups)p FA(,)g
+FB(40)24553 32388 y Fy(IDAGetNumNonlinSolvConvFails)p
+FA(,)h FB(43)24553 33726 y Fy(IDAGetNumNonlinSolvIters)p
+FA(,)g FB(43)24553 35064 y Fy(IDAGetNumResEvals)p FA(,)e
+FB(39)24553 36401 y Fy(IDAGetNumSteps)p FA(,)g FB(39)24553
+37739 y Fy(IDAGetSolution)p FA(,)g FB(37)24553 39076
+y Fy(IDAGetTolScaleFactor)p FA(,)h FB(42)24553 40414
+y Fy(IDAGetWorkSpace)p FA(,)f FB(37)24553 41752 y Fy(IDAMalloc)p
+FA(,)f FB(20)p FA(,)g(48)24553 43089 y Fy(IDAReInit)p
+FA(,)g FB(48)24553 44427 y Fy(IDAResFn)p FA(,)g(20,)g(49,)f
+FB(49)24553 45764 y Fy(IDASetConstraints)p FA(,)i FB(30)24553
+47102 y Fy(IDASetErrFile)p FA(,)g FB(25)24553 48440 y
+Fy(IDASetEwtFn)p FA(,)g FB(31)24553 49777 y Fy(IDASetId)p
+FA(,)f FB(30)24553 51115 y Fy(IDASetInitStep)p FA(,)h
+FB(28)24553 52452 y Fy(IDASetLineSearchOffIC)p FA(,)h
+FB(36)24553 53790 y Fy(IDASetMaxConvFails)p FA(,)g FB(29)24553
+55128 y Fy(IDASetMaxErrTestFails)p FA(,)g FB(28)24553
+56465 y Fy(IDASetMaxNonlinIters)p FA(,)g FB(29)24553
+57803 y Fy(IDASetMaxNumItersIC)p FA(,)g FB(36)24553 59140
+y Fy(IDASetMaxNumJacsIC)p FA(,)g FB(36)24553 60478 y
+Fy(IDASetMaxNumSteps)p FA(,)f FB(27)24553 61816 y Fy
+(IDASetMaxNumStepsIC)p FA(,)h FB(35)24553 63153 y Fy(IDASetMaxOrd)p
+FA(,)f FB(27)24553 64491 y Fy(IDASetMaxStep)p FA(,)g
+FB(28)24553 65828 y Fy(IDASetNonlinConvCoef)p FA(,)h
+FB(29)24553 67166 y Fy(IDASetNonlinConvCoefIC)p FA(,)g
+FB(35)24553 68504 y Fy(IDASetRdata)p FA(,)f FB(27)24553
+69841 y Fy(IDASetStepToleranceIC)p FA(,)h FB(36)24553
+71179 y Fy(IDASetStopTime)p FA(,)f FB(28)24553 72516
+y Fy(IDASetSuppressAlg)p FA(,)g FB(30)24553 73854 y Fy
+(IDASetTolerances)p FA(,)g FB(31)24553 75192 y Fy(IDASolve)p
+FA(,)f(19,)g FB(24)24553 76529 y Fx(id)-25 b(aspgmr)369
+b FA(linear)h(solv)-31 b(er)26767 77867 y(Jacobian)371
+b(appro)-31 b(ximation)373 b(used)c(b)-31 b(y)-92 b(,)369
+b(33)p Black Black eop
+%%Page: 91 99
+91 98 bop Black 4000 2701 a FB(INDEX)42474 b(91)p 4000
+3144 48001 45 v Black 6214 6974 a FA(optional)372 b(input,)e(33{35)6214
+8313 y(optional)i(output,)f(46{48)6214 9653 y(preconditioner)f(setup)f
+(function,)i(33,)g(54)6214 10992 y(preconditioner)f(solv)-31
+b(e)370 b(function,)h(33,)g(53)6214 12332 y(selection)f(of,)h(22)4000
+13671 y Fx(id)-25 b(aspgmr)368 b FA(linear)i(solv)-31
+b(er)6214 15010 y(memory)370 b(requiremen)-31 b(ts,)370
+b(46)4000 16350 y Fy(IDASpgmr)p FA(,)h(19,)f(21,)h FB(22)4000
+17689 y Fy(idaspgmr.h)p FA(,)g(18)4000 19029 y Fy(IDASPGMR)p
+8718 19029 349 45 v 420 w(ILL)p 10881 19029 V 418 w(INPUT)p
+FA(,)g(34,)f(35)4000 20368 y Fy(IDASPGMR)p 8718 20368
+V 420 w(LMEM)p 11462 20368 V 419 w(NULL)p FA(,)g(33{35,)i(46{48)4000
+21707 y Fy(IDASPGMR)p 8718 21707 V 420 w(MEM)p 10881
+21707 V 418 w(FAIL)p FA(,)f(23,)f(59)4000 23047 y Fy(IDASPGMR)p
+8718 23047 V 420 w(MEM)p 10881 23047 V 418 w(NULL)p FA(,)h(23,)f
+(33{35,)i(46{48,)g(59)4000 24386 y Fy(IDASPGMR)p 8718
+24386 V 420 w(SUCCESS)p FA(,)e(23,)h(33{35,)g(48,)g(59)4000
+25726 y Fy(IDASpgmrDQJtimes)p FA(,)h(33)4000 27065 y
+Fy(IDASpgmrGetLastFlag)p FA(,)g FB(48)4000 28405 y Fy
+(IDASpgmrGetNumConvFails)p FA(,)h FB(47)4000 29744 y
+Fy(IDASpgmrGetNumJtimesEvals)p FA(,)g FB(47)4000 31083
+y Fy(IDASpgmrGetNumLinIters)p FA(,)g FB(46)4000 32423
+y Fy(IDASpgmrGetNumPrecEvals)p FA(,)g FB(47)4000 33762
+y Fy(IDASpgmrGetNumPrecSolves)p FA(,)g FB(47)4000 35102
+y Fy(IDASpgmrGetNumResEvals)p FA(,)g FB(48)4000 36441
+y Fy(IDASpgmrGetWorkSpace)p FA(,)f FB(46)4000 37780 y
+Fy(IDASpgmrJacTimesVecFn)p FA(,)h FB(53)4000 39120 y
+Fy(IDASpgmrPrecSetupFn)p FA(,)f FB(54)4000 40459 y Fy
+(IDASpgmrPrecSolveFn)p FA(,)g FB(53)4000 41799 y Fy(IDASpgmrSet)p
+FA(,)f FB(33)4000 43138 y Fy(IDASpgmrSetEpsLin)p FA(,)h
+FB(34)4000 44478 y Fy(IDASpgmrSetGSType)p FA(,)g FB(34)4000
+45817 y Fy(IDASpgmrSetIncrementFactor)p FA(,)h FB(35)4000
+47156 y Fy(IDASpgmrSetJacTimesFn)p FA(,)g FB(33)4000
+48496 y Fy(IDASpgmrSetMaxRestarts)p FA(,)g FB(34)4000
+49835 y Fy(itask)p FA(,)d(24)4000 51175 y Fy(itol)p FA(,)g(21,)h
+FB(31)4000 53805 y FA(Jacobian)g(appro)-31 b(ximation)373
+b(function)6214 55145 y(band)7321 56484 y(di\256erence)c(quotien)-31
+b(t,)371 b(32)7321 57824 y(user-supplied,)e(32,)h(51{53)6214
+59163 y(dense)7321 60502 y(di\256erence)f(quotien)-31
+b(t,)371 b(32)7321 61842 y(user-supplied,)e(32,)h(50{51)6214
+63181 y(Jacobian)h(times)f(v)-31 b(ector)7321 64521 y(di\256erence)369
+b(quotien)-31 b(t,)371 b(33)7321 65860 y(user-supplied,)e(33,)h(53)4000
+68491 y Fy(maxl)p FA(,)g(22,)h(59)4000 69830 y Fy(maxord)p
+FA(,)f(49)4000 71170 y(memory)g(requiremen)-31 b(ts)6214
+72509 y Fx(id)-25 b(a)369 b FA(solv)-31 b(er,)370 b(39)6214
+73849 y Fx(id)-25 b(aband)369 b FA(linear)h(solv)-31
+b(er,)370 b(45)6214 75188 y Fx(id)-25 b(abbdpre)370 b
+FA(preconditioner,)h(60)6214 76527 y Fx(id)-25 b(adense)370
+b FA(linear)g(solv)-31 b(er,)370 b(44)6214 77867 y Fx(id)-25
+b(aspgmr)368 b FA(linear)i(solv)-31 b(er,)370 b(46)p
+Black Black 28553 6974 a Fy(MODIFIED)p 33271 6974 V 420
+w(GS)p FA(,)g FB(34)28553 9351 y Fy(N)p 29204 9351 V
+419 w(VCloneEmptyVectorArray)p FA(,)j FB(62)28553 10680
+y Fy(N)p 29204 10680 V 419 w(VCloneVectorArray)p FA(,)f
+FB(62)28553 12008 y Fy(N)p 29204 12008 V 419 w(VDestroyVectorArray)p
+FA(,)g FB(62)28553 13336 y Fy(N)p 29204 13336 V 419 w
+(VDestroyVectorArray)p 40662 13336 V 421 w(Parallel)p
+FA(,)f FB(69)28553 14665 y Fy(N)p 29204 14665 V 419 w
+(VDestroyVectorArray)p 40662 14665 V 421 w(Serial)p FA(,)g
+FB(66)28553 15993 y Fy(N)p 29204 15993 V 419 w(Vector)p
+FA(,)f(18,)h(61,)f FB(61)28553 17321 y Fy(N)p 29204 17321
+V 419 w(VMake)p 32528 17321 V 419 w(Parallel)p FA(,)h
+FB(68)28553 18650 y Fy(N)p 29204 18650 V 419 w(VMake)p
+32528 18650 V 419 w(Serial)p FA(,)g FB(66)28553 19978
+y Fy(N)p 29204 19978 V 419 w(VNew)p 31947 19978 V 419
+w(Parallel)p FA(,)g FB(68)28553 21306 y Fy(N)p 29204
+21306 V 419 w(VNew)p 31947 21306 V 419 w(Serial)p FA(,)f
+FB(66)28553 22635 y Fy(N)p 29204 22635 V 419 w(VNewEmpty)p
+34852 22635 V 420 w(Parallel)p FA(,)g FB(68)28553 23963
+y Fy(N)p 29204 23963 V 419 w(VNewEmpty)p 34852 23963
+V 420 w(Serial)p FA(,)g FB(66)28553 25291 y Fy(N)p 29204
+25291 V 419 w(VNewVectorArray)p 38338 25291 V 421 w(Parallel)p
+FA(,)g FB(68)28553 26620 y Fy(N)p 29204 26620 V 419 w(VNewVectorArray)p
+38338 26620 V 421 w(Serial)p FA(,)g FB(66)28553 27948
+y Fy(N)p 29204 27948 V 419 w(VNewVectorArrayEmpty)p 41243
+27948 V 421 w(Parallel)p FA(,)h FB(69)28553 29277 y Fy(N)p
+29204 29277 V 419 w(VNewVectorArrayEmpty)p 41243 29277
+V 421 w(Serial)p FA(,)g FB(66)28553 30605 y Fy(N)p 29204
+30605 V 419 w(VPrint)p 33109 30605 V 419 w(Parallel)p
+FA(,)g FB(69)28553 31933 y Fy(N)p 29204 31933 V 419 w(VPrint)p
+33109 31933 V 419 w(Serial)p FA(,)g FB(66)28553 33262
+y FA(norm)30767 34590 y(w)-31 b(eigh)g(ted)372 b(ro)31
+b(ot-mean-square,)371 b(10)28553 35918 y Fy(NV)p 29785
+35918 V 419 w(COMM)p 32528 35918 V 419 w(P)p FA(,)f FB(68)28553
+37247 y Fy(NV)p 29785 37247 V 419 w(CONTENT)p 34271 37247
+V 420 w(P)p FA(,)f FB(67)28553 38575 y Fy(NV)p 29785
+38575 V 419 w(CONTENT)p 34271 38575 V 420 w(S)p FA(,)g
+FB(65)28553 39903 y Fy(NV)p 29785 39903 V 419 w(DATA)p
+32528 39903 V 419 w(P)p FA(,)h FB(67)28553 41232 y Fy(NV)p
+29785 41232 V 419 w(DATA)p 32528 41232 V 419 w(S)p FA(,)g
+FB(66)28553 42560 y Fy(NV)p 29785 42560 V 419 w(GLOBLENGTH)p
+36014 42560 V 420 w(P)p FA(,)g FB(67)28553 43888 y Fy(NV)p
+29785 43888 V 419 w(Ith)p 31947 43888 V 419 w(P)p FA(,)g
+FB(68)28553 45217 y Fy(NV)p 29785 45217 V 419 w(Ith)p
+31947 45217 V 419 w(S)p FA(,)g FB(66)28553 46545 y Fy(NV)p
+29785 46545 V 419 w(LENGTH)p 33690 46545 V 420 w(S)p
+FA(,)f FB(66)28553 47873 y Fy(NV)p 29785 47873 V 419
+w(LOCLENGTH)p 35433 47873 V 420 w(P)p FA(,)h FB(67)28553
+49202 y Fy(NV)p 29785 49202 V 419 w(OWN)p 31947 49202
+V 419 w(DATA)p 34690 49202 V 419 w(P)p FA(,)g FB(67)28553
+50530 y Fy(NV)p 29785 50530 V 419 w(OWN)p 31947 50530
+V 419 w(DATA)p 34690 50530 V 419 w(S)p FA(,)g FB(66)28553
+51858 y Fy(NVECTOR)h FA(mo)31 b(dule,)370 b(61)28553
+53187 y Fy(nvector.h)p FA(,)h(18)28553 54515 y Fy(nvector)p
+32690 54515 V 420 w(parallel.h)p FA(,)g(18)28553 55844
+y Fy(nvector)p 32690 55844 V 420 w(serial.h)p FA(,)g(18)28553
+58221 y(optional)h(input)30767 59549 y(band)e(linear)g(solv)-31
+b(er,)370 b(32)30767 60878 y(dense)f(linear)h(solv)-31
+b(er,)370 b(32)30767 62206 y(initial)i(condition)g(calculation,)g
+(35{37)30767 63534 y(iterativ)-31 b(e)372 b(linear)e(solv)-31
+b(er,)370 b(33{35)30767 64863 y(solv)-31 b(er,)371 b(25{31)28553
+66191 y(optional)h(output)30767 67519 y(band)e(linear)g(solv)-31
+b(er,)370 b(45{46)30767 68848 y(band-blo)31 b(c)-31 b(k-diagonal)374
+b(preconditioner,)d(60)30767 70176 y(dense)e(linear)h(solv)-31
+b(er,)370 b(43{45)30767 71504 y(in)-31 b(terp)31 b(olated)372
+b(solution,)f(37)30767 72833 y(iterativ)-31 b(e)372 b(linear)e(solv)-31
+b(er,)370 b(46{48)30767 74161 y(solv)-31 b(er,)371 b(37{43)28553
+76539 y(p)31 b(ortabilit)-31 b(y)-92 b(,)373 b(17)28553
+77867 y(preconditioning)p Black Black eop
+%%Page: 92 100
+92 99 bop Black 0 2701 a FB(92)42474 b(INDEX)p 0 3144
+48001 45 v Black 2214 6974 a FA(advice)370 b(on,)g(15)2214
+8302 y(band-blo)31 b(c)-31 b(k)370 b(diagonal,)j(55)2214
+9631 y(setup)c(and)g(solv)-31 b(e)370 b(phases,)g(15)2214
+10959 y(user-supplied,)f(33,)h(53,)h(54)0 13394 y Fy(RCONST)p
+FA(,)f(17)0 14723 y Fy(realtype)p FA(,)h FB(17)0 16051
+y FA(reinitialization,)j(48)0 17379 y Fy(res)p 1813 17379
+349 45 v 419 w(data)p FA(,)c(27,)g(50,)h(57)0 18708 y(residual)f
+(function,)h(49)0 21143 y Fy(SMALL)p 2975 21143 V 419
+w(REAL)p FA(,)f(17)0 22471 y Fx(spgmr)e FA(generic)h(linear)h(solv)-31
+b(er)2214 23800 y(description)370 b(of,)g(80)2214 25128
+y(functions,)h(80)2214 26456 y(supp)31 b(ort)369 b(functions,)h(80{81)0
+27785 y(step)f(size)g(b)31 b(ounds,)369 b(28)0 29113
+y Fy(sundialstypes.h)p FA(,)j FB(17)p FA(,)e(18)0 31548
+y(tolerances,)h(10,)f(21,)g(31,)h(50)0 33984 y Fy(UNIT)p
+2394 33984 V 419 w(ROUNDOFF)p FA(,)g(17)0 35312 y(User)d(main)j
+(program)2214 36640 y Fx(id)-25 b(a)369 b FA(usage,)h(18)2214
+37969 y Fx(id)-25 b(abbdpre)370 b FA(usage,)g(57)p Black
+Black Black Black eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/Win32/WinCVODE/sundials/ida/examples_ser/Makefile b/Win32/WinCVODE/sundials/ida/examples_ser/Makefile
new file mode 100644
index 0000000..c7d6f63
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/examples_ser/Makefile
@@ -0,0 +1,66 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:41:33 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/ida/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for IDA serial examples
+#
+# ida/examples_ser/Makefile.  Generated from Makefile.in by configure.
+# -----------------------------------------------------------------
+
+SHELL = /bin/bash
+
+srcdir       = .
+builddir     = .
+top_builddir = ../../
+prefix       = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials
+exec_prefix  = ${prefix}
+includedir   = ${prefix}/include
+libdir       = ${exec_prefix}/lib
+
+
+
+CPP      = /usr/bin/cc -E
+CPPFLAGS = 
+CC       = /usr/bin/cc
+CFLAGS   = -g -O2
+LDFLAGS  = 
+LIBS     = -lm 
+
+COMPILER_PREFIX = 
+LINKER_PREFIX   = 
+
+SUNDIALS_INC_DIR = $(includedir)
+SUNDIALS_LIB_DIR = $(libdir)
+SUNDIALS_LIBS    = -lsundials_ida -lsundials_nvecserial -lsundials_shared
+
+EXEC_FILES = irobx iheatsb iheatsk iwebsb
+
+all: $(EXEC_FILES)
+
+irobx: $(srcdir)/irobx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/irobx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/irobx $(builddir)/irobx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+iheatsb: $(srcdir)/iheatsb.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/iheatsb.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/iheatsb $(builddir)/iheatsb.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+iheatsk: $(srcdir)/iheatsk.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/iheatsk.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/iheatsk $(builddir)/iheatsk.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+iwebsb: $(srcdir)/iwebsb.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/iwebsb.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/iwebsb $(builddir)/iwebsb.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+
+clean:
+	rm -rf .libs
+	rm -f *.lo
+	rm -f *.o
+
+uninstall: clean
+	rm -f $(EXEC_FILES)
diff --git a/Win32/WinCVODE/sundials/ida/examples_ser/Makefile.in b/Win32/WinCVODE/sundials/ida/examples_ser/Makefile.in
new file mode 100644
index 0000000..61f33c1
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/examples_ser/Makefile.in
@@ -0,0 +1,66 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:41:33 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/ida/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for IDA serial examples
+#
+# @configure_input@
+# -----------------------------------------------------------------
+
+SHELL = @SHELL@
+
+srcdir       = @srcdir@
+builddir     = @builddir@
+top_builddir = @top_builddir@
+prefix       = @prefix@
+exec_prefix  = @exec_prefix@
+includedir   = @includedir@
+libdir       = @libdir@
+
+ at LIBTOOL_CMD@
+
+CPP      = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CC       = @CC@
+CFLAGS   = @CFLAGS@
+LDFLAGS  = @LDFLAGS@
+LIBS     = @LIBS@
+
+COMPILER_PREFIX = @COMPILER_PREFIX@
+LINKER_PREFIX   = @LINKER_PREFIX@
+
+SUNDIALS_INC_DIR = $(includedir)
+SUNDIALS_LIB_DIR = $(libdir)
+SUNDIALS_LIBS    = -lsundials_ida -lsundials_nvecserial -lsundials_shared
+
+EXEC_FILES = irobx iheatsb iheatsk iwebsb
+
+all: $(EXEC_FILES)
+
+irobx: $(srcdir)/irobx.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/irobx.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/irobx $(builddir)/irobx.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+iheatsb: $(srcdir)/iheatsb.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/iheatsb.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/iheatsb $(builddir)/iheatsb.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+iheatsk: $(srcdir)/iheatsk.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/iheatsk.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/iheatsk $(builddir)/iheatsk.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+iwebsb: $(srcdir)/iwebsb.c
+	$(COMPILER_PREFIX) $(CC) $(CPPFLAGS) -I$(SUNDIALS_INC_DIR) $(CFLAGS) -c $(srcdir)/iwebsb.c
+	$(LINKER_PREFIX) $(CC) -o $(builddir)/iwebsb $(builddir)/iwebsb.o $(LDFLAGS) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(LIBS) 
+
+clean:
+	rm -rf .libs
+	rm -f *.lo
+	rm -f *.o
+
+uninstall: clean
+	rm -f $(EXEC_FILES)
diff --git a/Win32/WinCVODE/sundials/ida/examples_ser/README b/Win32/WinCVODE/sundials/ida/examples_ser/README
new file mode 100644
index 0000000..34baea2
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/examples_ser/README
@@ -0,0 +1,17 @@
+List of serial IDA examples
+
+  irobx   : 3-species Robertson kinetics system
+  iheatsb : 2-D heat equation, banded Jacobian
+  iheatsk : 2-D heat equation, diagonal preconditioner
+  iwebsb  : 2-D food web system, banded Jacobian
+
+Sample results:
+
+  SUNDIALS was built with the following options:
+
+  ./configure CC=gcc F77=g77
+
+  System Architecture: IA-32
+  Processor Type: Intel Pentium 4 Xeon DP (i686)
+  Operating System: Red Hat Enterprise Linux WS 3
+  C/Fortran Compilers: gcc/g77 v3.2.3-39 (Red Hat)
diff --git a/Win32/WinCVODE/sundials/ida/examples_ser/iheatsb.c b/Win32/WinCVODE/sundials/ida/examples_ser/iheatsb.c
new file mode 100644
index 0000000..82243bf
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/examples_ser/iheatsb.c
@@ -0,0 +1,404 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:41:33 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Allan Taylor, Alan Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Example problem for IDA/IDAS: 2D heat equation, serial, banded.
+ *
+ * This example solves a discretized 2D heat equation problem.
+ * This version uses the band solver IDABand, and IDACalcIC.
+ *
+ * The DAE system solved is a spatial discretization of the PDE
+ *          du/dt = d^2u/dx^2 + d^2u/dy^2
+ * on the unit square. The boundary condition is u = 0 on all edges.
+ * Initial conditions are given by u = 16 x (1 - x) y (1 - y).
+ * The PDE is treated with central differences on a uniform M x M
+ * grid. The values of u at the interior points satisfy ODEs, and
+ * equations u = 0 at the boundaries are appended, to form a DAE
+ * system of size N = M^2. Here M = 10.
+ *
+ * The system is solved with IDA/IDAS using the banded linear system
+ * solver, half-bandwidths equal to M, and default
+ * difference-quotient Jacobian. For purposes of illustration,
+ * IDACalcIC is called to compute correct values at the boundary,
+ * given incorrect values as input initial guesses. The constraints
+ * u >= 0 are posed for all components. Output is taken at
+ * t = 0, .01, .02, .04, ..., 10.24. (Output at t = 0 is for
+ * IDACalcIC cost statistics only.)
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "sundialstypes.h"
+#include "sundialsmath.h"
+#include "nvector_serial.h"
+#include "ida.h"
+#include "idaband.h"
+
+/* Problem Constants */
+
+#define NOUT  11
+#define MGRID 10
+#define NEQ   MGRID*MGRID
+#define ZERO  RCONST(0.0)
+#define ONE   RCONST(1.0)
+#define TWO   RCONST(2.0)
+#define BVAL  RCONST(0.1)
+
+/* Type: UserData */
+
+typedef struct {
+  long int mm;
+  realtype dx;
+  realtype coeff;
+} *UserData;
+
+/* Prototypes of functions called by IDA */
+
+int heatres(realtype tres, N_Vector uu, N_Vector up, N_Vector resval, void *rdata);
+
+/* Prototypes of private functions */
+
+static void PrintHeader(realtype rtol, realtype atol);
+static void PrintOutput(void *mem, realtype t, N_Vector u);
+static int SetInitialProfile(UserData data, N_Vector uu, N_Vector up, 
+                             N_Vector id, N_Vector res);
+
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/*
+ *--------------------------------------------------------------------
+ * MAIN PROGRAM
+ *--------------------------------------------------------------------
+ */
+
+int main(void)
+{
+  void *mem;
+  UserData data;
+  N_Vector uu, up, constraints, id, res;
+  int ier, iout;
+  long int mu, ml, netf, ncfn;
+  realtype rtol, atol, t0, t1, tout, tret;
+  
+  mem = NULL;
+  data = NULL;
+  uu = up = constraints = id = res = NULL;
+
+  /* Create vectors uu, up, res, constraints, id. */
+  uu = N_VNew_Serial(NEQ);
+  if(check_flag((void *)uu, "N_VNew_Serial", 0)) return(1);
+  up = N_VNew_Serial(NEQ);
+  if(check_flag((void *)up, "N_VNew_Serial", 0)) return(1);
+  res = N_VNew_Serial(NEQ);
+  if(check_flag((void *)res, "N_VNew_Serial", 0)) return(1);
+  constraints = N_VNew_Serial(NEQ);
+  if(check_flag((void *)constraints, "N_VNew_Serial", 0)) return(1);
+  id = N_VNew_Serial(NEQ);
+  if(check_flag((void *)id, "N_VNew_Serial", 0)) return(1);
+
+  /* Create and load problem data block. */
+  data = (UserData) malloc(sizeof *data);
+  if(check_flag((void *)data, "malloc", 2)) return(1);
+  data->mm = MGRID;
+  data->dx = ONE/(MGRID - ONE);
+  data->coeff = ONE/( (data->dx) * (data->dx) );
+
+  /* Initialize uu, up, id. */
+  SetInitialProfile(data, uu, up, id, res);
+
+  /* Set constraints to all 1's for nonnegative solution values. */
+  N_VConst(ONE, constraints);
+
+  /* Set remaining input parameters. */
+  t0   = ZERO;
+  t1   = RCONST(0.01);
+  rtol = ZERO;
+  atol = RCONST(1.0e-3);
+
+  /* Call IDACreate and IDAMalloc to initialize solution */
+  mem = IDACreate();
+  if(check_flag((void *)mem, "IDACreate", 0)) return(1);
+
+  ier = IDASetRdata(mem, data);
+  if(check_flag(&ier, "IDASetRdata", 1)) return(1);
+
+  ier = IDASetId(mem, id);
+  if(check_flag(&ier, "IDASetId", 1)) return(1);
+
+  ier = IDASetConstraints(mem, constraints);
+  if(check_flag(&ier, "IDASetConstraints", 1)) return(1);
+  N_VDestroy_Serial(constraints);
+
+  ier = IDAMalloc(mem, heatres, t0, uu, up, IDA_SS, rtol, &atol);
+  if(check_flag(&ier, "IDAMalloc", 1)) return(1);
+
+  /* Call IDABand to specify the linear solver. */
+  mu = MGRID; ml = MGRID;
+  ier = IDABand(mem, NEQ, mu, ml);
+  if(check_flag(&ier, "IDABand", 1)) return(1);
+ 
+  /* Call IDACalcIC to correct the initial values. */
+  
+  ier = IDACalcIC(mem, t0, uu, up, IDA_YA_YDP_INIT, t1);
+  if(check_flag(&ier, "IDACalcIC", 1)) return(1);
+
+  /* Print output heading. */
+  PrintHeader(rtol, atol);
+  
+  PrintOutput(mem, t0, uu);
+
+
+  /* Loop over output times, call IDASolve, and print results. */
+  
+  for (tout = t1, iout = 1; iout <= NOUT; iout++, tout *= TWO) {
+    
+    ier = IDASolve(mem, tout, &tret, uu, up, IDA_NORMAL);
+    if(check_flag(&ier, "IDASolve", 1)) return(1);
+
+    PrintOutput(mem, tret, uu);
+  
+  }
+  
+  /* Print remaining counters and free memory. */
+  ier = IDAGetNumErrTestFails(mem, &netf);
+  check_flag(&ier, "IDAGetNumErrTestFails", 1);
+  ier = IDAGetNumNonlinSolvConvFails(mem, &ncfn);
+  check_flag(&ier, "IDAGetNumNonlinSolvConvFails", 1);
+  printf("\n netf = %ld,   ncfn = %ld \n", netf, ncfn);
+
+  IDAFree(mem);
+  N_VDestroy_Serial(uu);
+  N_VDestroy_Serial(up);
+  N_VDestroy_Serial(id);
+  N_VDestroy_Serial(res);
+  free(data);
+
+  return(0);
+}
+
+/*
+ *--------------------------------------------------------------------
+ * FUNCTIONS CALLED BY KINSOL
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * heatres: heat equation system residual function                       
+ * This uses 5-point central differencing on the interior points, and    
+ * includes algebraic equations for the boundary values.                 
+ * So for each interior point, the residual component has the form       
+ *    res_i = u'_i - (central difference)_i                              
+ * while for each boundary point, it is res_i = u_i.                     
+ */
+
+int heatres(realtype tres, N_Vector uu, N_Vector up, N_Vector resval, 
+            void *rdata)
+{
+  long int mm, i, j, offset, loc;
+  realtype *uv, *upv, *resv, coeff;
+  UserData data;
+  
+  uv = NV_DATA_S(uu); upv = NV_DATA_S(up); resv = NV_DATA_S(resval);
+
+  data = (UserData)rdata;
+  mm = data->mm;
+  coeff = data->coeff;
+  
+  /* Initialize resval to uu, to take care of boundary equations. */
+  N_VScale(ONE, uu, resval);
+  
+  /* Loop over interior points; set res = up - (central difference). */
+  for (j = 1; j < mm-1; j++) {
+    offset = mm*j;
+    for (i = 1; i < mm-1; i++) {
+      loc = offset + i;
+      resv[loc] = upv[loc] - coeff * 
+	  (uv[loc-1] + uv[loc+1] + uv[loc-mm] + uv[loc+mm] - RCONST(4.0)*uv[loc]);
+    }
+  }
+  
+  return(0);
+
+}
+
+/*
+ *--------------------------------------------------------------------
+ * PRIVATE FUNCTIONS
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * SetInitialProfile: routine to initialize u, up, and id vectors.       
+ */
+
+static int SetInitialProfile(UserData data, N_Vector uu, N_Vector up, 
+                             N_Vector id, N_Vector res)
+{
+  realtype xfact, yfact, *udata, *updata, *iddata;
+  long int mm, mm1, i, j, offset, loc;
+  
+  mm = data->mm;
+  mm1 = mm - 1;
+  
+  udata = NV_DATA_S(uu);
+  updata = NV_DATA_S(up);
+  iddata = NV_DATA_S(id);
+
+  /* Initialize id to 1's. */
+  N_VConst(ONE, id);
+
+  /* Initialize uu on all grid points. */ 
+  for (j = 0; j < mm; j++) {
+    yfact = data->dx * j;
+    offset = mm*j;
+    for (i = 0;i < mm; i++) {
+      xfact = data->dx * i;
+      loc = offset + i;
+      udata[loc] = RCONST(16.0) * xfact * (ONE - xfact) * yfact * (ONE - yfact);
+    }
+  }
+  
+  /* Initialize up vector to 0. */
+  N_VConst(ZERO, up);
+
+  /* heatres sets res to negative of ODE RHS values at interior points. */
+  heatres(ZERO, uu, up, res, data);
+  
+  /* Copy -res into up to get correct interior initial up values. */
+  N_VScale(-ONE, res, up);
+
+  /* Finally, set values of u, up, and id at boundary points. */
+  for (j = 0; j < mm; j++) {
+    offset = mm*j;
+    for (i = 0;i < mm; i++) {
+      loc = offset + i;
+      if (j == 0 || j == mm1 || i == 0 || i == mm1 ) {
+        udata[loc] = BVAL; updata[loc] = ZERO; iddata[loc] = ZERO; }
+    }
+  }
+  
+  return(0);
+
+}
+
+/* 
+ * Print first lines of output (problem description)
+ */
+
+static void PrintHeader(realtype rtol, realtype atol)
+{
+  printf("iheatsb: Heat equation, serial example problem for IDA \n");
+  printf("         Discretized heat equation on 2D unit square. \n");
+  printf("         Zero boundary conditions,");
+  printf(" polynomial initial conditions.\n");
+  printf("         Mesh dimensions: %d x %d", MGRID, MGRID);
+  printf("        Total system size: %d\n\n", NEQ);
+#if defined(SUNDIALS_EXTENDED_PRECISION) 
+  printf("Tolerance parameters:  rtol = %Lg   atol = %Lg\n", rtol, atol);
+#elif defined(SUNDIALS_DOUBLE_PRECISION) 
+  printf("Tolerance parameters:  rtol = %lg   atol = %lg\n", rtol, atol);
+#else
+  printf("Tolerance parameters:  rtol = %g   atol = %g\n", rtol, atol);
+#endif
+  printf("Constraints set to force all solution components >= 0. \n");
+  printf("Linear solver: IDABAND, banded direct solver \n");
+  printf("       difference quotient Jacobian, half-bandwidths = %d \n",MGRID);
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("IDACalcIC called with input boundary values = %Lg \n",BVAL);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("IDACalcIC called with input boundary values = %lg \n",BVAL);
+#else
+  printf("IDACalcIC called with input boundary values = %g \n",BVAL);
+#endif
+  /* Print output table heading and initial line of table. */
+  printf("\n   Output Summary (umax = max-norm of solution) \n\n");
+  printf("  time       umax     k  nst  nni  nje   nre   nreB     h      \n" );
+  printf(" .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . \n");
+}
+
+/*
+ * Print Output
+ */
+
+static void PrintOutput(void *mem, realtype t, N_Vector uu)
+{
+  int ier;
+  realtype umax, hused;
+  long int nst, nni, nje, nre, nreB;
+  int kused;
+
+  umax = N_VMaxNorm(uu);
+  
+  ier = IDAGetLastOrder(mem, &kused);
+  check_flag(&ier, "IDAGetLastOrder", 1);
+  ier = IDAGetNumSteps(mem, &nst);
+  check_flag(&ier, "IDAGetNumSteps", 1);
+  ier = IDAGetNumNonlinSolvIters(mem, &nni);
+  check_flag(&ier, "IDAGetNumNonlinSolvIters", 1);
+  ier = IDAGetNumResEvals(mem, &nre);
+  check_flag(&ier, "IDAGetNumResEvals", 1);
+  ier = IDAGetLastStep(mem, &hused);
+  check_flag(&ier, "IDAGetLastStep", 1);
+  ier = IDABandGetNumJacEvals(mem, &nje);
+  check_flag(&ier, "IDABandGetNumJacEvals", 1);
+  ier = IDABandGetNumResEvals(mem, &nreB);
+  check_flag(&ier, "IDABandGetNumResEvals", 1);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION) 
+  printf(" %5.2Lf %13.5Le  %d  %3ld  %3ld  %3ld  %4ld  %4ld  %9.2Le \n",
+         t, umax, kused, nst, nni, nje, nre, nreB, hused);
+#elif defined(SUNDIALS_DOUBLE_PRECISION) 
+  printf(" %5.2f %13.5le  %d  %3ld  %3ld  %3ld  %4ld  %4ld  %9.2le \n",
+         t, umax, kused, nst, nni, nje, nre, nreB, hused);
+#else
+  printf(" %5.2f %13.5e  %d  %3ld  %3ld  %3ld  %4ld  %4ld  %9.2e \n",
+         t, umax, kused, nst, nni, nje, nre, nreB, hused);
+#endif
+
+}
+
+/* 
+ * Check function return value...
+ *   opt == 0 means SUNDIALS function allocates memory so check if
+ *            returned NULL pointer
+ *   opt == 1 means SUNDIALS function returns a flag so check if
+ *            flag >= 0
+ *   opt == 2 means function allocates memory so check if returned
+ *            NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, 
+            "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n", 
+            funcname);
+    return(1);
+  } else if (opt == 1) {
+    /* Check if flag < 0 */
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, 
+              "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n", 
+              funcname, *errflag);
+      return(1); 
+    }
+  } else if (opt == 2 && flagvalue == NULL) {
+    /* Check if function returned NULL pointer - no memory allocated */
+    fprintf(stderr, 
+            "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n", 
+            funcname);
+    return(1);
+  }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/ida/examples_ser/iheatsb.out b/Win32/WinCVODE/sundials/ida/examples_ser/iheatsb.out
new file mode 100644
index 0000000..ec36545
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/examples_ser/iheatsb.out
@@ -0,0 +1,29 @@
+iheatsb: Heat equation, serial example problem for IDA 
+         Discretized heat equation on 2D unit square. 
+         Zero boundary conditions, polynomial initial conditions.
+         Mesh dimensions: 10 x 10        Total system size: 100
+
+Tolerance parameters:  rtol = 0   atol = 0.001
+Constraints set to force all solution components >= 0. 
+Linear solver: IDABAND, banded direct solver 
+       difference quotient Jacobian, half-bandwidths = 10 
+IDACalcIC called with input boundary values = 0.1 
+
+   Output Summary (umax = max-norm of solution) 
+
+  time       umax     k  nst  nni  nje   nre   nreB     h      
+ .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
+  0.00   9.75461e-01  0    0    3    2     5    42   1.00e-05 
+  0.01   8.24602e-01  2   13   20    9    22   189   2.56e-03 
+  0.02   6.88908e-01  2   15   23   10    25   210   5.12e-03 
+  0.04   4.71178e-01  3   19   28   10    30   210   5.12e-03 
+  0.08   2.16305e-01  3   23   33   10    35   210   1.02e-02 
+  0.16   4.53754e-02  4   29   41   11    43   231   2.05e-02 
+  0.32   1.78933e-03  4   36   50   12    52   252   4.10e-02 
+  0.64   1.27055e-20  1   41   59   14    61   294   1.64e-01 
+  1.28   2.59193e-33  1   43   61   16    63   336   6.55e-01 
+  2.56   8.36114e-36  1   44   62   17    64   357   1.31e+00 
+  5.12   1.50863e-37  1   45   63   18    65   378   2.62e+00 
+ 10.24   1.77347e-39  1   46   64   19    66   399   5.24e+00 
+
+ netf = 0,   ncfn = 0 
diff --git a/Win32/WinCVODE/sundials/ida/examples_ser/iheatsk.c b/Win32/WinCVODE/sundials/ida/examples_ser/iheatsk.c
new file mode 100644
index 0000000..e15c89e
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/examples_ser/iheatsk.c
@@ -0,0 +1,546 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:41:33 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Allan Taylor, Alan Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Example problem for IDA/IDAS: 2D heat equation, serial, GMRES.
+ *
+ * This example solves a discretized 2D heat equation problem.
+ * This version uses the Krylov solver IDASpgmr.
+ *
+ * The DAE system solved is a spatial discretization of the PDE
+ *          du/dt = d^2u/dx^2 + d^2u/dy^2
+ * on the unit square. The boundary condition is u = 0 on all edges.
+ * Initial conditions are given by u = 16 x (1 - x) y (1 - y). The
+ * PDE is treated with central differences on a uniform M x M grid.
+ * The values of u at the interior points satisfy ODEs, and
+ * equations u = 0 at the boundaries are appended, to form a DAE
+ * system of size N = M^2. Here M = 10.
+ *
+ * The system is solved with IDA/IDAS using the Krylov linear solver
+ * IDASPGMR. The preconditioner uses the diagonal elements of the
+ * Jacobian only. Routines for preconditioning, required by
+ * IDASPGMR, are supplied here. The constraints u >= 0 are posed
+ * for all components. Output is taken at t = 0, .01, .02, .04,
+ * ..., 10.24. Two cases are run -- with the Gram-Schmidt type
+ * being Modified in the first case, and Classical in the second.
+ * The second run uses IDAReInit and IDAReInitSpgmr.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "sundialstypes.h"
+#include "nvector_serial.h"
+#include "ida.h"
+#include "idaspgmr.h"
+
+/* Problem Constants */
+
+#define NOUT  11
+#define MGRID 10
+#define NEQ   MGRID*MGRID
+#define ZERO  RCONST(0.0)
+#define ONE   RCONST(1.0)
+#define TWO   RCONST(2.0)
+#define FOUR  RCONST(4.0)
+
+/* User data type */
+
+typedef struct {  
+  long int mm;  /* number of grid points */
+  realtype dx;
+  realtype coeff;
+  N_Vector pp;  /* vector of prec. diag. elements */
+} *UserData;
+
+/* Prototypes for functions called by IDA */
+
+int resHeat(realtype tres, N_Vector uu, N_Vector up,
+            N_Vector resval, void *rdata);
+
+int PsetupHeat(realtype tt, 
+               N_Vector uu, N_Vector up, N_Vector rr, 
+               realtype c_j, void *prec_data, 
+               N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+int PsolveHeat(realtype tt, 
+               N_Vector uu, N_Vector up, N_Vector rr, 
+               N_Vector rvec, N_Vector zvec, 
+               realtype c_j, realtype delta, void *prec_data, 
+               N_Vector tmp);
+
+/* Prototypes for private functions */
+
+static int SetInitialProfile(UserData data, N_Vector uu, N_Vector up, 
+                             N_Vector res);
+static void PrintHeader(realtype rtol, realtype atol);
+static void PrintOutput(void *mem, realtype t, N_Vector uu);
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/*
+ *--------------------------------------------------------------------
+ * MAIN PROGRAM
+ *--------------------------------------------------------------------
+ */
+
+int main()
+{
+  void *mem;
+  UserData data;
+  N_Vector uu, up, constraints, res;
+  int ier, iout;
+  realtype rtol, atol, t0, t1, tout, tret;
+  long int netf, ncfn, ncfl;
+
+  mem = NULL;
+  data = NULL;
+  uu = up = constraints = res = NULL;
+
+  /* Allocate N-vectors and the user data structure. */
+
+  uu = N_VNew_Serial(NEQ);
+  if(check_flag((void *)uu, "N_VNew_Serial", 0)) return(1);
+
+  up = N_VNew_Serial(NEQ);
+  if(check_flag((void *)up, "N_VNew_Serial", 0)) return(1);
+
+  res = N_VNew_Serial(NEQ);
+  if(check_flag((void *)res, "N_VNew_Serial", 0)) return(1);
+
+  constraints = N_VNew_Serial(NEQ);
+  if(check_flag((void *)constraints, "N_VNew_Serial", 0)) return(1);
+
+  data = (UserData) malloc(sizeof *data);
+  data->pp = NULL;
+  if(check_flag((void *)data, "malloc", 2)) return(1);
+
+  /* Assign parameters in the user data structure. */
+
+  data->mm  = MGRID;
+  data->dx = ONE/(MGRID-ONE);
+  data->coeff = ONE/(data->dx * data->dx);
+  data->pp = N_VNew_Serial(NEQ);
+  if(check_flag((void *)data->pp, "N_VNew_Serial", 0)) return(1);
+
+  /* Initialize uu, up. */
+
+  SetInitialProfile(data, uu, up, res);
+
+  /* Set constraints to all 1's for nonnegative solution values. */
+
+  N_VConst(ONE, constraints);
+
+  /* Assign various parameters. */
+
+  t0   = ZERO;
+  t1   = RCONST(0.01);
+  rtol = ZERO;
+  atol = RCONST(1.0e-3); 
+
+  /* Call IDACreate and IDAMalloc to initialize solution */
+
+  mem = IDACreate();
+  if(check_flag((void *)mem, "IDACreate", 0)) return(1);
+
+  ier = IDASetRdata(mem, data);
+  if(check_flag(&ier, "IDASetRdata", 1)) return(1);
+
+  ier = IDASetConstraints(mem, constraints);
+  if(check_flag(&ier, "IDASetConstraints", 1)) return(1);
+  N_VDestroy_Serial(constraints);
+
+  ier = IDAMalloc(mem, resHeat, t0, uu, up, IDA_SS, rtol, &atol);
+  if(check_flag(&ier, "IDAMalloc", 1)) return(1);
+
+  /* Call IDASpgmr to specify the linear solver. */
+
+  ier = IDASpgmr(mem, 0);
+  if(check_flag(&ier, "IDASpgmr", 1)) return(1);
+
+  ier = IDASpgmrSetPreconditioner(mem, PsetupHeat, PsolveHeat, data);
+  if(check_flag(&ier, "IDASpgmrSetPreconditioner", 1)) return(1);
+
+  /* Print output heading. */
+  PrintHeader(rtol, atol);
+  
+  /* 
+   * -------------------------------------------------------------------------
+   * CASE I 
+   * -------------------------------------------------------------------------
+   */
+  
+  /* Print case number, output table heading, and initial line of table. */
+
+  printf("\n\nCase 1: gsytpe = MODIFIED_GS\n");
+  printf("\n   Output Summary (umax = max-norm of solution) \n\n");
+  printf("  time     umax       k  nst  nni  nje   nre   nreS     h      npe nps\n" );
+  printf("----------------------------------------------------------------------\n");
+
+  /* Loop over output times, call IDASolve, and print results. */
+
+  for (tout = t1,iout = 1; iout <= NOUT ; iout++, tout *= TWO) {
+    ier = IDASolve(mem, tout, &tret, uu, up, IDA_NORMAL);
+    if(check_flag(&ier, "IDASolve", 1)) return(1);
+    PrintOutput(mem, tret, uu);
+  }
+
+  /* Print remaining counters. */
+
+  ier = IDAGetNumErrTestFails(mem, &netf);
+  check_flag(&ier, "IDAGetNumErrTestFails", 1);
+
+  ier = IDAGetNumNonlinSolvConvFails(mem, &ncfn);
+  check_flag(&ier, "IDAGetNumNonlinSolvConvFails", 1);
+
+  ier = IDASpgmrGetNumConvFails(mem, &ncfl);
+  check_flag(&ier, "IDASpgmrGetNumConvFails", 1);
+
+  printf("\nError test failures            = %ld\n", netf);
+  printf("Nonlinear convergence failures = %ld\n", ncfn);
+  printf("Linear convergence failures    = %ld\n", ncfl);
+
+  /* 
+   * -------------------------------------------------------------------------
+   * CASE II
+   * -------------------------------------------------------------------------
+   */
+  
+  /* Re-initialize uu, up. */
+
+  SetInitialProfile(data, uu, up, res);
+  
+  /* Re-initialize IDA and IDASPGMR */
+
+  ier = IDAReInit(mem, resHeat, t0, uu, up, IDA_SS, rtol, &atol);
+  if(check_flag(&ier, "IDAReInit", 1)) return(1);
+  
+  ier = IDASpgmrSetGSType(mem, CLASSICAL_GS);
+  if(check_flag(&ier, "IDASpgmrSetGSType",1)) return(1); 
+  
+  /* Print case number, output table heading, and initial line of table. */
+
+  printf("\n\nCase 2: gstype = CLASSICAL_GS\n");
+  printf("\n   Output Summary (umax = max-norm of solution) \n\n");
+  printf("  time     umax       k  nst  nni  nje   nre   nreS     h      npe nps\n" );
+  printf("----------------------------------------------------------------------\n");
+
+  /* Loop over output times, call IDASolve, and print results. */
+
+  for (tout = t1,iout = 1; iout <= NOUT ; iout++, tout *= TWO) {
+    ier = IDASolve(mem, tout, &tret, uu, up, IDA_NORMAL);
+    if(check_flag(&ier, "IDASolve", 1)) return(1);
+    PrintOutput(mem, tret, uu);
+  }
+
+  /* Print remaining counters. */
+
+  ier = IDAGetNumErrTestFails(mem, &netf);
+  check_flag(&ier, "IDAGetNumErrTestFails", 1);
+
+  ier = IDAGetNumNonlinSolvConvFails(mem, &ncfn);
+  check_flag(&ier, "IDAGetNumNonlinSolvConvFails", 1);
+
+  ier = IDASpgmrGetNumConvFails(mem, &ncfl);
+  check_flag(&ier, "IDASpgmrGetNumConvFails", 1);
+
+  printf("\nError test failures            = %ld\n", netf);
+  printf("Nonlinear convergence failures = %ld\n", ncfn);
+  printf("Linear convergence failures    = %ld\n", ncfl);
+
+  /* Free Memory */
+
+  IDAFree(mem);
+
+  N_VDestroy_Serial(uu);
+  N_VDestroy_Serial(up);
+  N_VDestroy_Serial(res);
+
+  N_VDestroy_Serial(data->pp);
+  free(data);
+
+  return(0);
+}
+
+/*
+ *--------------------------------------------------------------------
+ * FUNCTIONS CALLED BY IDA
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * resHeat: heat equation system residual function (user-supplied)      
+ * This uses 5-point central differencing on the interior points, and   
+ * includes algebraic equations for the boundary values.                
+ * So for each interior point, the residual component has the form      
+ *    res_i = u'_i - (central difference)_i                             
+ * while for each boundary point, it is res_i = u_i.                     
+ */
+
+int resHeat(realtype tt, 
+            N_Vector uu, N_Vector up, N_Vector rr, 
+            void *res_data)
+{
+  long int i, j, offset, loc, mm;
+  realtype *uu_data, *up_data, *rr_data, coeff, dif1, dif2;
+  UserData data;
+  
+  uu_data = NV_DATA_S(uu); 
+  up_data = NV_DATA_S(up); 
+  rr_data = NV_DATA_S(rr);
+
+  data = (UserData) res_data;
+  
+  coeff = data->coeff;
+  mm    = data->mm;
+  
+  /* Initialize rr to uu, to take care of boundary equations. */
+  N_VScale(ONE, uu, rr);
+  
+  /* Loop over interior points; set res = up - (central difference). */
+  for (j = 1; j < MGRID-1; j++) {
+    offset = mm*j;
+    for (i = 1; i < mm-1; i++) {
+      loc = offset + i;
+      dif1 = uu_data[loc-1]  + uu_data[loc+1]  - TWO * uu_data[loc];
+      dif2 = uu_data[loc-mm] + uu_data[loc+mm] - TWO * uu_data[loc];
+      rr_data[loc]= up_data[loc] - coeff * ( dif1 + dif2 );
+    }
+  }
+
+  return(0);
+}
+
+/*
+ * PsetupHeat: setup for diagonal preconditioner for iheatsk.   
+ *                                                                 
+ * The optional user-supplied functions PsetupHeat and          
+ * PsolveHeat together must define the left preconditoner        
+ * matrix P approximating the system Jacobian matrix               
+ *                   J = dF/du + cj*dF/du'                         
+ * (where the DAE system is F(t,u,u') = 0), and solve the linear   
+ * systems P z = r.   This is done in this case by keeping only    
+ * the diagonal elements of the J matrix above, storing them as    
+ * inverses in a vector pp, when computed in PsetupHeat, for    
+ * subsequent use in PsolveHeat.                                 
+ *                                                                 
+ * In this instance, only cj and data (user data structure, with    
+ * pp etc.) are used from the PsetupdHeat argument list.         
+ */
+  
+int PsetupHeat(realtype tt, 
+               N_Vector uu, N_Vector up, N_Vector rr, 
+               realtype c_j, void *prec_data, 
+               N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  
+  long int i, j, offset, loc, mm;
+  realtype *ppv, pelinv;
+  UserData data;
+  
+  data = (UserData) prec_data;
+  ppv = NV_DATA_S(data->pp);
+  mm = data->mm;
+
+  /* Initialize the entire vector to 1., then set the interior points to the
+     correct value for preconditioning. */
+  N_VConst(ONE,data->pp);
+  
+  /* Compute the inverse of the preconditioner diagonal elements. */
+  pelinv = ONE/(c_j + FOUR*data->coeff); 
+  
+  for (j = 1; j < mm-1; j++) {
+    offset = mm * j;
+    for (i = 1; i < mm-1; i++) {
+      loc = offset + i;
+      ppv[loc] = pelinv;
+    }
+  }
+  
+  return(0);  
+}
+
+/*
+ * PsolveHeat: solve preconditioner linear system.              
+ * This routine multiplies the input vector rvec by the vector pp 
+ * containing the inverse diagonal Jacobian elements (previously  
+ * computed in PrecondHeateq), returning the result in zvec.      
+ */
+
+int PsolveHeat(realtype tt, 
+               N_Vector uu, N_Vector up, N_Vector rr, 
+               N_Vector rvec, N_Vector zvec, 
+               realtype c_j, realtype delta, void *prec_data, 
+               N_Vector tmp)
+{
+  UserData data;
+  data = (UserData) prec_data;
+  N_VProd(data->pp, rvec, zvec);
+  return(0);
+}
+
+/*
+ *--------------------------------------------------------------------
+ * PRIVATE FUNCTIONS
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * SetInitialProfile: routine to initialize u and up vectors.
+ */
+
+static int SetInitialProfile(UserData data, N_Vector uu, N_Vector up, 
+                             N_Vector res)
+{
+  long int mm, mm1, i, j, offset, loc;
+  realtype xfact, yfact, *udata, *updata;
+
+  mm = data->mm;
+
+  udata = NV_DATA_S(uu);
+  updata = NV_DATA_S(up);
+
+  /* Initialize uu on all grid points. */ 
+  mm1 = mm - 1;
+  for (j = 0; j < mm; j++) {
+    yfact = data->dx * j;
+    offset = mm*j;
+    for (i = 0;i < mm; i++) {
+      xfact = data->dx * i;
+      loc = offset + i;
+      udata[loc] = RCONST(16.0) * xfact * (ONE - xfact) * yfact * (ONE - yfact);
+    }
+  }
+  
+  /* Initialize up vector to 0. */
+  N_VConst(ZERO, up);
+
+  /* resHeat sets res to negative of ODE RHS values at interior points. */
+  resHeat(ZERO, uu, up, res, data);
+
+  /* Copy -res into up to get correct interior initial up values. */
+  N_VScale(-ONE, res, up);
+
+  /* Set up at boundary points to zero. */
+  for (j = 0; j < mm; j++) {
+    offset = mm*j;
+    for (i = 0; i < mm; i++) {
+      loc = offset + i;
+      if (j == 0 || j == mm1 || i == 0 || i == mm1 ) updata[loc] = ZERO;
+    }
+  }
+  
+  return(0);
+  }
+
+/*
+ * Print first lines of output (problem description)
+ */
+
+static void PrintHeader(realtype rtol, realtype atol)
+{
+  printf("\niheatsk: Heat equation, serial example problem for IDA \n");
+  printf("         Discretized heat equation on 2D unit square. \n");
+  printf("         Zero boundary conditions,");
+  printf(" polynomial initial conditions.\n");
+  printf("         Mesh dimensions: %d x %d", MGRID, MGRID);
+  printf("        Total system size: %d\n\n", NEQ);
+#if defined(SUNDIALS_EXTENDED_PRECISION) 
+  printf("Tolerance parameters:  rtol = %Lg   atol = %Lg\n", rtol, atol);
+#elif defined(SUNDIALS_DOUBLE_PRECISION) 
+  printf("Tolerance parameters:  rtol = %lg   atol = %lg\n", rtol, atol);
+#else
+  printf("Tolerance parameters:  rtol = %g   atol = %g\n", rtol, atol);
+#endif
+  printf("Constraints set to force all solution components >= 0. \n");
+  printf("Linear solver: IDASPGMR, preconditioner using diagonal elements. \n");
+}
+
+/*
+ * PrintOutput: print max norm of solution and current solver statistics
+ */
+
+static void PrintOutput(void *mem, realtype t, N_Vector uu)
+{
+  realtype hused, umax;
+  long int nst, nni, nje, nre, nreS, nli, npe, nps;
+  int kused, ier;
+  
+  umax = N_VMaxNorm(uu);
+
+  ier = IDAGetLastOrder(mem, &kused);
+  check_flag(&ier, "IDAGetLastOrder", 1);
+  ier = IDAGetNumSteps(mem, &nst);
+  check_flag(&ier, "IDAGetNumSteps", 1);
+  ier = IDAGetNumNonlinSolvIters(mem, &nni);
+  check_flag(&ier, "IDAGetNumNonlinSolvIters", 1);
+  ier = IDAGetNumResEvals(mem, &nre);
+  check_flag(&ier, "IDAGetNumResEvals", 1);
+  ier = IDAGetLastStep(mem, &hused);
+  check_flag(&ier, "IDAGetLastStep", 1);
+  ier = IDASpgmrGetNumJtimesEvals(mem, &nje);
+  check_flag(&ier, "IDASpgmrGetNumJtimesEvals", 1);
+  ier = IDASpgmrGetNumLinIters(mem, &nli);
+  check_flag(&ier, "IDASpgmrGetNumLinIters", 1);
+  ier = IDASpgmrGetNumResEvals(mem, &nreS);
+  check_flag(&ier, "IDASpgmrGetNumResEvals", 1);
+  ier = IDASpgmrGetNumPrecEvals(mem, &npe);
+  check_flag(&ier, "IDASpgmrGetPrecEvals", 1);
+  ier = IDASpgmrGetNumPrecSolves(mem, &nps);
+  check_flag(&ier, "IDASpgmrGetNumPrecSolves", 1);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION) 
+  printf(" %5.2Lf %13.5Le  %d  %3ld  %3ld  %3ld  %4ld  %4ld  %9.2Le  %3ld %3ld\n",
+         t, umax, kused, nst, nni, nje, nre, nreS, hused, npe, nps);
+#elif defined(SUNDIALS_DOUBLE_PRECISION) 
+  printf(" %5.2f %13.5le  %d  %3ld  %3ld  %3ld  %4ld  %4ld  %9.2le  %3ld %3ld\n",
+         t, umax, kused, nst, nni, nje, nre, nreS, hused, npe, nps);
+#else
+  printf(" %5.2f %13.5e  %d  %3ld  %3ld  %3ld  %4ld  %4ld  %9.2e  %3ld %3ld\n",
+         t, umax, kused, nst, nni, nje, nre, nreS, hused, npe, nps);
+#endif
+}
+
+/*
+ * Check function return value...
+ *   opt == 0 means SUNDIALS function allocates memory so check if
+ *            returned NULL pointer
+ *   opt == 1 means SUNDIALS function returns a flag so check if
+ *            flag >= 0
+ *   opt == 2 means function allocates memory so check if returned
+ *            NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, 
+            "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n", 
+            funcname);
+    return(1);
+  } else if (opt == 1) {
+    /* Check if flag < 0 */
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, 
+              "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n", 
+              funcname, *errflag);
+      return(1); 
+    }
+  } else if (opt == 2 && flagvalue == NULL) {
+    /* Check if function returned NULL pointer - no memory allocated */
+    fprintf(stderr, 
+            "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n", 
+            funcname);
+    return(1);
+  }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/ida/examples_ser/iheatsk.out b/Win32/WinCVODE/sundials/ida/examples_ser/iheatsk.out
new file mode 100644
index 0000000..34c0794
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/examples_ser/iheatsk.out
@@ -0,0 +1,55 @@
+
+iheatsk: Heat equation, serial example problem for IDA 
+         Discretized heat equation on 2D unit square. 
+         Zero boundary conditions, polynomial initial conditions.
+         Mesh dimensions: 10 x 10        Total system size: 100
+
+Tolerance parameters:  rtol = 0   atol = 0.001
+Constraints set to force all solution components >= 0. 
+Linear solver: IDASPGMR, preconditioner using diagonal elements. 
+
+
+Case 1: gsytpe = MODIFIED_GS
+
+   Output Summary (umax = max-norm of solution) 
+
+  time     umax       k  nst  nni  nje   nre   nreS     h      npe nps
+----------------------------------------------------------------------
+  0.01   8.24106e-01  2   12   14    7    14     7   2.56e-03    8  21
+  0.02   6.88134e-01  3   15   18   12    18    12   5.12e-03    8  30
+  0.04   4.70711e-01  3   18   24   21    24    21   6.58e-03    9  45
+  0.08   2.16509e-01  3   22   29   30    29    30   1.32e-02    9  59
+  0.16   4.57687e-02  4   28   36   44    36    44   1.32e-02    9  80
+  0.32   2.09938e-03  4   35   44   67    44    67   2.63e-02   10 111
+  0.64   5.54028e-21  1   39   51   77    51    77   1.05e-01   12 128
+  1.28   0.00000e+00  1   41   53   77    53    77   4.21e-01   14 130
+  2.56   0.00000e+00  1   43   55   77    55    77   1.69e+00   16 132
+  5.12   0.00000e+00  1   44   56   77    56    77   3.37e+00   17 133
+ 10.24   0.00000e+00  1   45   57   77    57    77   6.74e+00   18 134
+
+Error test failures            = 1
+Nonlinear convergence failures = 0
+Linear convergence failures    = 0
+
+
+Case 2: gstype = CLASSICAL_GS
+
+   Output Summary (umax = max-norm of solution) 
+
+  time     umax       k  nst  nni  nje   nre   nreS     h      npe nps
+----------------------------------------------------------------------
+  0.01   8.24106e-01  2   12   14    7    14     7   2.56e-03    8  21
+  0.02   6.88134e-01  3   15   18   12    18    12   5.12e-03    8  30
+  0.04   4.70711e-01  3   18   24   21    24    21   6.58e-03    9  45
+  0.08   2.16509e-01  3   22   29   30    29    30   1.32e-02    9  59
+  0.16   4.57687e-02  4   28   36   44    36    44   1.32e-02    9  80
+  0.32   2.09938e-03  4   35   44   67    44    67   2.63e-02   10 111
+  0.64   5.54028e-21  1   39   51   77    51    77   1.05e-01   12 128
+  1.28   0.00000e+00  1   41   53   77    53    77   4.21e-01   14 130
+  2.56   0.00000e+00  1   43   55   77    55    77   1.69e+00   16 132
+  5.12   0.00000e+00  1   44   56   77    56    77   3.37e+00   17 133
+ 10.24   0.00000e+00  1   45   57   77    57    77   6.74e+00   18 134
+
+Error test failures            = 1
+Nonlinear convergence failures = 0
+Linear convergence failures    = 0
diff --git a/Win32/WinCVODE/sundials/ida/examples_ser/irobx.c b/Win32/WinCVODE/sundials/ida/examples_ser/irobx.c
new file mode 100644
index 0000000..7ca5548
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/examples_ser/irobx.c
@@ -0,0 +1,351 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:41:33 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Allan Taylor, Alan Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * This simple example problem for IDA/IDAS, due to Robertson, 
+ * is from chemical kinetics, and consists of the following three 
+ * equations:
+ *
+ *      dy1/dt = -.04*y1 + 1.e4*y2*y3
+ *      dy2/dt = .04*y1 - 1.e4*y2*y3 - 3.e7*y2**2
+ *         0   = y1 + y2 + y3 - 1
+ *
+ * on the interval from t = 0.0 to t = 4.e10, with initial
+ * conditions: y1 = 1, y2 = y3 = 0.
+ *
+ * The problem is solved with IDA/IDAS using IDADENSE for the linear
+ * solver, with a user-supplied Jacobian. Output is printed at
+ * t = .4, 4, 40, ..., 4e10.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <math.h>
+#include "sundialstypes.h"
+#include "sundialsmath.h"
+#include "nvector_serial.h"
+#include "ida.h"
+#include "idadense.h"
+
+/* Problem Constants */
+
+#define NEQ   3
+#define NOUT  12
+
+#define ZERO RCONST(0.0);
+#define ONE  RCONST(1.0);
+
+/* Macro to define dense matrix elements, indexed from 1. */
+
+#define IJth(A,i,j) DENSE_ELEM(A,i-1,j-1)
+
+/* Prototypes of functions called by IDA */
+
+int resrob(realtype tres, N_Vector yy, N_Vector yp, 
+           N_Vector resval, void *rdata);
+
+int jacrob(long int Neq, realtype tt, N_Vector yy, N_Vector yp,
+           N_Vector resvec, realtype cj, void *jdata, DenseMat JJ,
+           N_Vector tempv1, N_Vector tempv2, N_Vector tempv3);
+
+/* Prototypes of private functions */
+static void PrintHeader(realtype rtol, N_Vector avtol, N_Vector y);
+static void PrintOutput(void *mem, realtype t, N_Vector y);
+static void PrintFinalStats(void *mem);
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/*
+ *--------------------------------------------------------------------
+ * MAIN PROGRAM
+ *--------------------------------------------------------------------
+ */
+
+int main(void)
+{
+  void *mem;
+  N_Vector yy, yp, avtol;
+  realtype rtol, *yval, *ypval, *atval;
+  realtype t0, t1, tout, tret;
+  int iout, retval;
+
+  mem = NULL;
+  yy = yp = avtol = NULL;
+  yval = ypval = atval = NULL;
+
+  /* Allocate N-vectors. */
+
+  yy = N_VNew_Serial(NEQ);
+  if(check_flag((void *)yy, "N_VNew_Serial", 0)) return(1);
+  yp = N_VNew_Serial(NEQ);
+  if(check_flag((void *)yp, "N_VNew_Serial", 0)) return(1);
+  avtol = N_VNew_Serial(NEQ);
+  if(check_flag((void *)avtol, "N_VNew_Serial", 0)) return(1);
+
+  /* Create and initialize  y, y', and absolute tolerance vectors. */
+
+  yval  = NV_DATA_S(yy);
+  yval[0] = ONE;
+  yval[1] = ZERO;
+  yval[2] = ZERO;
+
+  ypval = NV_DATA_S(yp);
+  ypval[0]  = RCONST(-0.04);
+  ypval[1]  = RCONST(0.04);
+  ypval[2]  = ZERO;  
+
+  rtol = RCONST(1.0e-4);
+
+  atval = NV_DATA_S(avtol);
+  atval[0] = RCONST(1.0e-6);
+  atval[1] = RCONST(1.0e-10);
+  atval[2] = RCONST(1.0e-6);
+
+  /* Integration limits */
+
+  t0 = ZERO;
+  t1 = RCONST(0.4);
+
+  PrintHeader(rtol, avtol, yy);
+
+  /* Call IDACreate and IDAMalloc to initialize IDA memory */
+
+  mem = IDACreate();
+  if(check_flag((void *)mem, "IDACreate", 0)) return(1);
+  retval = IDAMalloc(mem, resrob, t0, yy, yp, IDA_SV, rtol, avtol);
+  if(check_flag(&retval, "IDAMalloc", 1)) return(1);
+  
+  /* Free avtol */
+  N_VDestroy_Serial(avtol);
+
+  /* Call IDADense and set up the linear solver. */
+
+  retval = IDADense(mem, NEQ);
+  if(check_flag(&retval, "IDADense", 1)) return(1);
+  retval = IDADenseSetJacFn(mem, jacrob, NULL);
+  if(check_flag(&retval, "IDADenseSetJacFn", 1)) return(1);
+
+  /* Loop over tout values and call IDASolve. */
+
+  for (tout = t1, iout = 1; iout <= NOUT ; iout++, tout *= RCONST(10.0)) {
+    retval=IDASolve(mem, tout, &tret, yy, yp, IDA_NORMAL);
+    if(check_flag(&retval, "IDASolve", 1)) return(1);
+    PrintOutput(mem,tret,yy);
+  }
+
+  PrintFinalStats(mem);
+
+  /* Free memory */
+
+  IDAFree(mem);
+  N_VDestroy_Serial(yy);
+  N_VDestroy_Serial(yp);
+
+  return(0);
+  
+}
+
+/*
+ *--------------------------------------------------------------------
+ * FUNCTIONS CALLED BY IDA
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * Define the system residual function. 
+ */
+
+int resrob(realtype tres, N_Vector yy, N_Vector yp, N_Vector rr, void *rdata)
+{
+  realtype *yval, *ypval, *rval;
+
+  yval = NV_DATA_S(yy); 
+  ypval = NV_DATA_S(yp); 
+  rval = NV_DATA_S(rr);
+
+  rval[0]  = RCONST(-0.04)*yval[0] + RCONST(1.0e4)*yval[1]*yval[2];
+  rval[1]  = -rval[0] - RCONST(3.0e7)*yval[1]*yval[1] - ypval[1];
+  rval[0] -=  ypval[0];
+  rval[2]  =  yval[0] + yval[1] + yval[2] - ONE;
+
+  return(0);
+
+}
+
+/*
+ * Define the Jacobian function. 
+ */
+
+int jacrob(long int Neq, realtype tt, N_Vector yy, N_Vector yp,
+           N_Vector resvec, realtype cj, void *jdata, DenseMat JJ,
+           N_Vector tempv1, N_Vector tempv2, N_Vector tempv3)
+{
+
+  realtype *yval;
+  
+  yval = NV_DATA_S(yy);
+
+  IJth(JJ,1,1) = RCONST(-0.04) - cj;
+  IJth(JJ,2,1) = RCONST(0.04);
+  IJth(JJ,3,1) = ONE;
+  IJth(JJ,1,2) = RCONST(1.0e4)*yval[2];
+  IJth(JJ,2,2) = RCONST(-1.0e4)*yval[2] - RCONST(6.0e7)*yval[1] - cj;
+  IJth(JJ,3,2) = ONE;
+  IJth(JJ,1,3) = RCONST(1.0e4)*yval[1];
+  IJth(JJ,2,3) = RCONST(-1.0e4)*yval[1];
+  IJth(JJ,3,3) = ONE;
+
+  return(0);
+
+}
+
+/*
+ *--------------------------------------------------------------------
+ * PRIVATE FUNCTIONS
+ *--------------------------------------------------------------------
+ */
+
+/* 
+ * Print first lines of output (problem description)
+ */
+
+static void PrintHeader(realtype rtol, N_Vector avtol, N_Vector y)
+{
+  realtype *atval, *yval;
+
+  atval  = NV_DATA_S(avtol);
+  yval  = NV_DATA_S(y);
+
+  printf("\nirobx: Robertson kinetics DAE serial example problem for IDA \n");
+  printf("       Three equation chemical kinetics problem. \n\n");
+  printf("Linear solver: IDADENSE, with user-supplied Jacobian.\n");
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("Tolerance parameters:  rtol = %Lg   atol = %Lg %Lg %Lg \n",
+         rtol, atval[0],atval[1],atval[2]);
+  printf("Initial conditions y0 = (%Lg %Lg %Lg)\n",
+         yval[0], yval[1], yval[2]);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("Tolerance parameters:  rtol = %lg   atol = %lg %lg %lg \n",
+         rtol, atval[0],atval[1],atval[2]);
+  printf("Initial conditions y0 = (%lg %lg %lg)\n",
+         yval[0], yval[1], yval[2]);
+#else
+  printf("Tolerance parameters:  rtol = %g   atol = %g %g %g \n",
+         rtol, atval[0],atval[1],atval[2]);
+  printf("Initial conditions y0 = (%g %g %g)\n",
+         yval[0], yval[1], yval[2]);
+#endif
+  printf("Constraints and id not used.\n\n");
+  printf("---------------------------------------------------------------------\n");
+  printf("  t           y1           y2           y3");
+  printf("      | nst  k      h\n");
+  printf("---------------------------------------------------------------------\n");
+
+}
+
+/*
+ * Print Output
+ */
+
+static void PrintOutput(void *mem, realtype t, N_Vector y)
+{
+  realtype *yval;
+  int retval, kused;
+  long int nst;
+  realtype hused;
+
+  yval  = NV_DATA_S(y);
+
+  retval = IDAGetLastOrder(mem, &kused);
+  check_flag(&retval, "IDAGetLastOrder", 1);
+  retval = IDAGetNumSteps(mem, &nst);
+  check_flag(&retval, "IDAGetNumSteps", 1);
+  retval = IDAGetLastStep(mem, &hused);
+  check_flag(&retval, "IDAGetLastStep", 1);
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+  printf("%8.2Le %12.4Le %12.4Le %12.4Le | %3ld  %1d %12.4Le\n", 
+         t, yval[0], yval[1], yval[2], nst, kused, hused);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+  printf("%8.2le %12.4le %12.4le %12.4le | %3ld  %1d %12.4le\n", 
+         t, yval[0], yval[1], yval[2], nst, kused, hused);
+#else
+  printf("%8.2e %12.4e %12.4e %12.4e | %3ld  %1d %12.4e\n", 
+         t, yval[0], yval[1], yval[2], nst, kused, hused);
+#endif
+}
+
+/*
+ * Print final integrator statistics
+ */
+
+static void PrintFinalStats(void *mem)
+{
+  int retval;
+  long int nst, nni, njeD, nre, nreD, netf, ncfn;
+
+  retval = IDAGetNumSteps(mem, &nst);
+  check_flag(&retval, "IDAGetNumSteps", 1);
+  retval = IDAGetNumResEvals(mem, &nre);
+  check_flag(&retval, "IDAGetNumResEvals", 1);
+  retval = IDADenseGetNumJacEvals(mem, &njeD);
+  check_flag(&retval, "IDADenseGetNumJacEvals", 1);
+  retval = IDAGetNumNonlinSolvIters(mem, &nni);
+  check_flag(&retval, "IDAGetNumNonlinSolvIters", 1);
+  retval = IDAGetNumErrTestFails(mem, &netf);
+  check_flag(&retval, "IDAGetNumErrTestFails", 1);
+  retval = IDAGetNumNonlinSolvConvFails(mem, &ncfn);
+  check_flag(&retval, "IDAGetNumNonlinSolvConvFails", 1);
+  retval = IDADenseGetNumResEvals(mem, &nreD);
+  check_flag(&retval, "IDADenseGetNumResEvals", 1);
+
+  printf("\nFinal Run Statistics: \n\n");
+  printf("Number of steps                    = %ld\n", nst);
+  printf("Number of residual evaluations     = %ld\n", nre+nreD);
+  printf("Number of Jacobian evaluations     = %ld\n", njeD);
+  printf("Number of nonlinear iterations     = %ld\n", nni);
+  printf("Number of error test failures      = %ld\n", netf);
+  printf("Number of nonlinear conv. failures = %ld\n", ncfn);
+
+}
+
+/*
+ * Check function return value...
+ *   opt == 0 means SUNDIALS function allocates memory so check if
+ *            returned NULL pointer
+ *   opt == 1 means SUNDIALS function returns a flag so check if
+ *            flag >= 0
+ *   opt == 2 means function allocates memory so check if returned
+ *            NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if (opt == 0 && flagvalue == NULL) {
+    fprintf(stderr, 
+            "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n", 
+            funcname);
+    return(1);
+  } else if (opt == 1) {
+    /* Check if flag < 0 */
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, 
+              "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n", 
+              funcname, *errflag);
+      return(1); 
+    }
+  } else if (opt == 2 && flagvalue == NULL) {
+    /* Check if function returned NULL pointer - no memory allocated */
+    fprintf(stderr, 
+            "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n", 
+            funcname);
+    return(1);
+  }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/ida/examples_ser/irobx.out b/Win32/WinCVODE/sundials/ida/examples_ser/irobx.out
new file mode 100644
index 0000000..5eff144
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/examples_ser/irobx.out
@@ -0,0 +1,33 @@
+
+irobx: Robertson kinetics DAE serial example problem for IDA 
+       Three equation chemical kinetics problem. 
+
+Linear solver: IDADENSE, with user-supplied Jacobian.
+Tolerance parameters:  rtol = 0.0001   atol = 1e-06 1e-10 1e-06 
+Initial conditions y0 = (1 0 0)
+Constraints and id not used.
+
+---------------------------------------------------------------------
+  t           y1           y2           y3      | nst  k      h
+---------------------------------------------------------------------
+4.00e-01   9.8517e-01   3.3864e-05   1.4795e-02 |  77  3   1.1431e-01
+4.00e+00   9.0551e-01   2.2403e-05   9.4470e-02 |  91  4   3.7037e-01
+4.00e+01   7.1582e-01   9.1854e-06   2.8417e-01 | 127  4   2.9630e+00
+4.00e+02   4.5051e-01   3.2227e-06   5.4949e-01 | 177  3   1.2405e+01
+4.00e+03   1.8316e-01   8.9396e-07   8.1684e-01 | 228  3   2.7646e+02
+4.00e+04   3.8985e-02   1.6218e-07   9.6101e-01 | 278  5   2.6140e+03
+4.00e+05   4.9388e-03   1.9852e-08   9.9506e-01 | 324  5   2.7701e+04
+4.00e+06   5.1763e-04   2.0716e-09   9.9948e-01 | 355  4   3.9788e+05
+4.00e+07   5.1907e-05   2.0764e-10   9.9995e-01 | 380  3   6.3661e+06
+4.00e+08   5.8818e-06   2.3527e-11   9.9999e-01 | 394  1   9.1671e+07
+4.00e+09   7.0539e-07   2.8216e-12   1.0000e-00 | 402  1   1.4667e+09
+4.00e+10  -7.3001e-07  -2.9200e-12   1.0000e+00 | 407  1   2.3468e+10
+
+Final Run Statistics: 
+
+Number of steps                    = 407
+Number of residual evaluations     = 557
+Number of Jacobian evaluations     = 65
+Number of nonlinear iterations     = 557
+Number of error test failures      = 6
+Number of nonlinear conv. failures = 0
diff --git a/Win32/WinCVODE/sundials/ida/examples_ser/iwebsb.c b/Win32/WinCVODE/sundials/ida/examples_ser/iwebsb.c
new file mode 100644
index 0000000..dcd19f4
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/examples_ser/iwebsb.c
@@ -0,0 +1,670 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:41:33 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Allan Taylor, Alan Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Example program for IDA: Food web problem.
+ *
+ * This example program (serial version) uses the IDABAND linear 
+ * solver, and IDACalcIC for initial condition calculation.
+ *
+ * The mathematical problem solved in this example is a DAE system
+ * that arises from a system of partial differential equations after
+ * spatial discretization. The PDE system is a food web population
+ * model, with predator-prey interaction and diffusion on the unit
+ * square in two dimensions. The dependent variable vector is:
+ *
+ *         1   2         ns
+ *   c = (c , c ,  ..., c  ) , ns = 2 * np
+ *
+ * and the PDE's are as follows:
+ *
+ *     i             i      i
+ *   dc /dt = d(i)*(c    + c  )  +  R (x,y,c)   (i = 1,...,np)
+ *                   xx     yy       i
+ *
+ *              i      i
+ *   0 = d(i)*(c    + c  )  +  R (x,y,c)   (i = np+1,...,ns)
+ *              xx     yy       i
+ *
+ *   where the reaction terms R are:
+ *
+ *                   i             ns         j
+ *   R  (x,y,c)  =  c  * (b(i)  + sum a(i,j)*c )
+ *    i                           j=1
+ *
+ * The number of species is ns = 2 * np, with the first np being
+ * prey and the last np being predators. The coefficients a(i,j),
+ * b(i), d(i) are:
+ *
+ *  a(i,i) = -AA   (all i)
+ *  a(i,j) = -GG   (i <= np , j >  np)
+ *  a(i,j) =  EE   (i >  np, j <= np)
+ *  all other a(i,j) = 0
+ *  b(i) = BB*(1+ alpha * x*y + beta*sin(4 pi x)*sin(4 pi y)) (i <= np)
+ *  b(i) =-BB*(1+ alpha * x*y + beta*sin(4 pi x)*sin(4 pi y)) (i  > np)
+ *  d(i) = DPREY   (i <= np)
+ *  d(i) = DPRED   (i > np)
+ *
+ * The various scalar parameters required are set using '#define'
+ * statements or directly in routine InitUserData. In this program,
+ * np = 1, ns = 2. The boundary conditions are homogeneous Neumann:
+ * normal derivative = 0.
+ *
+ * A polynomial in x and y is used to set the initial values of the
+ * first np variables (the prey variables) at each x,y location,
+ * while initial values for the remaining (predator) variables are
+ * set to a flat value, which is corrected by IDACalcIC.
+ *
+ * The PDEs are discretized by central differencing on a MX by MY
+ * mesh.
+ *
+ * The DAE system is solved by IDA using the IDABAND linear solver.
+ * Output is printed at t = 0, .001, .01, .1, .4, .7, 1.
+ * -----------------------------------------------------------------
+ * References:
+ * [1] Peter N. Brown and Alan C. Hindmarsh,
+ *     Reduced Storage Matrix Methods in Stiff ODE systems, Journal
+ *     of Applied Mathematics and Computation, Vol. 31 (May 1989),
+ *     pp. 40-91.
+ *
+ * [2] Peter N. Brown, Alan C. Hindmarsh, and Linda R. Petzold,
+ *     Using Krylov Methods in the Solution of Large-Scale
+ *     Differential-Algebraic Systems, SIAM J. Sci. Comput., 15
+ *     (1994), pp. 1467-1488.
+ *
+ * [3] Peter N. Brown, Alan C. Hindmarsh, and Linda R. Petzold,
+ *     Consistent Initial Condition Calculation for Differential-
+ *     Algebraic Systems, SIAM J. Sci. Comput., 19 (1998),
+ *     pp. 1495-1512.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include "sundialstypes.h"   /* Definitions of realtype and booleantype       */
+#include "ida.h"             /* Main header file                              */
+#include "idaband.h"         /* Use IDABAND linear solver                     */
+#include "nvector_serial.h"  /* Definitions of type N_Vector, macro NV_DATA_S */
+#include "smalldense.h"      /* Contains definitions for denalloc routine     */
+
+/* Problem Constants. */
+
+#define NPREY       1              /* No. of prey (= no. of predators). */
+#define NUM_SPECIES 2*NPREY
+
+#define PI          RCONST(3.1415926535898)
+#define FOURPI      (RCONST(4.0)*PI)
+
+#define MX          20             /* MX = number of x mesh points      */
+#define MY          20             /* MY = number of y mesh points      */
+#define NSMX        (NUM_SPECIES * MX)
+#define NEQ         (NUM_SPECIES*MX*MY)
+#define AA          RCONST(1.0)    /* Coefficient in above eqns. for a  */
+#define EE          RCONST(10000.) /* Coefficient in above eqns. for a  */
+#define GG          RCONST(0.5e-6) /* Coefficient in above eqns. for a  */
+#define BB          RCONST(1.0)    /* Coefficient in above eqns. for b  */
+#define DPREY       RCONST(1.0)    /* Coefficient in above eqns. for d  */
+#define DPRED       RCONST(0.05)   /* Coefficient in above eqns. for d  */
+#define ALPHA       RCONST(50.)    /* Coefficient alpha in above eqns.  */
+#define BETA        RCONST(1000.)  /* Coefficient beta in above eqns.   */
+#define AX          RCONST(1.0)    /* Total range of x variable         */
+#define AY          RCONST(1.0)    /* Total range of y variable         */
+#define RTOL        RCONST(1.e-5)  /* Relative tolerance                */
+#define ATOL        RCONST(1.e-5)  /* Absolute tolerance                */
+#define NOUT        6              /* Number of output times            */
+#define TMULT       RCONST(10.0)   /* Multiplier for tout values        */
+#define TADD        RCONST(0.3)    /* Increment for tout values         */
+#define ZERO        RCONST(0.)     
+#define ONE         RCONST(1.0)    
+
+/* 
+ * User-defined vector and accessor macro: IJ_Vptr.
+ * IJ_Vptr is defined in order to express the underlying 3-D structure of 
+ * the dependent variable vector from its underlying 1-D storage (an N_Vector).
+ * IJ_Vptr(vv,i,j) returns a pointer to the location in vv corresponding to 
+ * species index is = 0, x-index ix = i, and y-index jy = j.                
+ */
+
+#define IJ_Vptr(vv,i,j) (&NV_Ith_S(vv, (i)*NUM_SPECIES + (j)*NSMX))
+
+/* Type: UserData.  Contains problem constants, etc. */
+
+typedef struct {
+  long int Neq, ns, np, mx, my;
+  realtype dx, dy, **acoef;
+  realtype cox[NUM_SPECIES], coy[NUM_SPECIES], bcoef[NUM_SPECIES];
+  N_Vector rates;
+} *UserData;
+
+/* Prototypes for functions called by the IDA Solver. */
+
+static int resweb(realtype time, N_Vector cc, N_Vector cp, N_Vector resval, 
+                  void *rdata);
+
+/* Prototypes for private Helper Functions. */
+
+static void InitUserData(UserData webdata);
+static void SetInitialProfiles(N_Vector cc, N_Vector cp, N_Vector id,
+                               UserData webdata);
+static void PrintHeader(long int mu, long int ml, realtype rtol, realtype atol);
+static void PrintOutput(void *mem, N_Vector c, realtype t);
+static void PrintFinalStats(void *mem);
+static void Fweb(realtype tcalc, N_Vector cc, N_Vector crate, UserData webdata);
+static void WebRates(realtype xx, realtype yy, realtype *cxy, realtype *ratesxy, 
+                     UserData webdata);
+static realtype dotprod(long int size, realtype *x1, realtype *x2);
+static int check_flag(void *flagvalue, char *funcname, int opt);
+
+/*
+ *--------------------------------------------------------------------
+ * MAIN PROGRAM
+ *--------------------------------------------------------------------
+ */
+
+int main()
+{ 
+  void *mem;
+  UserData webdata;
+  N_Vector cc, cp, id;
+  int iout, retval;
+  long int mu, ml;
+  realtype rtol, atol, t0, tout, tret;
+
+  mem = NULL;
+  webdata = NULL;
+  cc = cp = id = NULL;
+
+  /* Allocate and initialize user data block webdata. */
+
+  webdata = (UserData) malloc(sizeof *webdata);
+  webdata->rates = N_VNew_Serial(NEQ);
+  webdata->acoef = denalloc(NUM_SPECIES);
+
+  InitUserData(webdata);
+
+  /* Allocate N-vectors and initialize cc, cp, and id. */
+
+  cc  = N_VNew_Serial(NEQ);
+  if(check_flag((void *)cc, "N_VNew_Serial", 0)) return(1);
+
+  cp  = N_VNew_Serial(NEQ);
+  if(check_flag((void *)cp, "N_VNew_Serial", 0)) return(1);
+
+  id  = N_VNew_Serial(NEQ);
+  if(check_flag((void *)id, "N_VNew_Serial", 0)) return(1);
+  
+  SetInitialProfiles(cc, cp, id, webdata);
+  
+  /* Set remaining inputs to IDAMalloc. */
+  
+  t0 = ZERO;
+  rtol = RTOL; 
+  atol = ATOL;
+
+  /* Call IDACreate and IDAMalloc to initialize IDA. */
+  
+  mem = IDACreate();
+  if(check_flag((void *)mem, "IDACreate", 0)) return(1);
+
+  retval = IDASetRdata(mem, webdata);
+  if(check_flag(&retval, "IDASetRdata", 1)) return(1);
+
+  retval = IDASetId(mem, id);
+  if(check_flag(&retval, "IDASetId", 1)) return(1);
+
+  retval = IDAMalloc(mem, resweb, t0, cc, cp, IDA_SS, rtol, &atol);
+  if(check_flag(&retval, "IDAMalloc", 1)) return(1);
+
+  /* Call IDABand to specify the IDA linear solver. */
+
+  mu = ml = NSMX;
+  retval = IDABand(mem, NEQ, mu, ml);
+  if(check_flag(&retval, "IDABand", 1)) return(1);
+
+  /* Call IDACalcIC (with default options) to correct the initial values. */
+
+  tout = RCONST(0.001);
+  retval = IDACalcIC(mem, t0, cc, cp, IDA_YA_YDP_INIT, tout);
+  if(check_flag(&retval, "IDACalcIC", 1)) return(1);
+  
+  /* Print heading, basic parameters, and initial values. */
+
+  PrintHeader(mu, ml, rtol, atol);
+  PrintOutput(mem, cc, ZERO);
+  
+  /* Loop over iout, call IDASolve (normal mode), print selected output. */
+  
+  for (iout = 1; iout <= NOUT; iout++) {
+    
+    retval = IDASolve(mem, tout, &tret, cc, cp, IDA_NORMAL);
+    if(check_flag(&retval, "IDASolve", 1)) return(retval);
+    
+    PrintOutput(mem, cc, tret);
+    
+    if (iout < 3) tout *= TMULT; else tout += TADD;
+    
+  }
+  
+  /* Print final statistics and free memory. */  
+  
+  PrintFinalStats(mem);
+
+  /* Free memory */
+
+  IDAFree(mem);
+
+  N_VDestroy_Serial(cc);
+  N_VDestroy_Serial(cp);
+  N_VDestroy_Serial(id);
+
+
+  denfree(webdata->acoef);
+  N_VDestroy_Serial(webdata->rates);
+  free(webdata);
+
+  return(0);
+}
+
+/* Define lines for readability in later routines */ 
+
+#define acoef  (webdata->acoef)
+#define bcoef  (webdata->bcoef)
+#define cox    (webdata->cox)
+#define coy    (webdata->coy)
+
+/*
+ *--------------------------------------------------------------------
+ * FUNCTIONS CALLED BY IDA
+ *--------------------------------------------------------------------
+ */
+
+/* 
+ * resweb: System residual function for predator-prey system.
+ * This routine calls Fweb to get all the right-hand sides of the
+ * equations, then loads the residual vector accordingly,
+ * using cp in the case of prey species.                 
+ */
+
+static int resweb(realtype tt, N_Vector cc, N_Vector cp, 
+                  N_Vector res,  void *rdata)
+{
+  long int jx, jy, is, yloc, loc, np;
+  realtype *resv, *cpv;
+  UserData webdata;
+  
+  webdata = (UserData)rdata;
+  
+  cpv = NV_DATA_S(cp);
+  resv = NV_DATA_S(res);
+  np = webdata->np;
+  
+  /* Call Fweb to set res to vector of right-hand sides. */
+  Fweb(tt, cc, res, webdata);
+  
+  /* Loop over all grid points, setting residual values appropriately
+     for differential or algebraic components.                        */
+  
+  for (jy = 0; jy < MY; jy++) {
+    yloc = NSMX * jy;
+    for (jx = 0; jx < MX; jx++) {
+      loc = yloc + NUM_SPECIES * jx;
+      for (is = 0; is < NUM_SPECIES; is++) {
+        if (is < np)
+          resv[loc+is] = cpv[loc+is] - resv[loc+is];
+        else
+          resv[loc+is] = -resv[loc+is];
+      }
+    }
+  }
+  
+  return(0);
+  
+}
+
+/*
+ *--------------------------------------------------------------------
+ * PRIVATE FUNCTIONS
+ *--------------------------------------------------------------------
+ */
+
+/*
+ * InitUserData: Load problem constants in webdata (of type UserData).   
+ */
+
+static void InitUserData(UserData webdata)
+{
+  int i, j, np;
+  realtype *a1,*a2, *a3, *a4, dx2, dy2;
+
+  webdata->mx = MX;
+  webdata->my = MY;
+  webdata->ns = NUM_SPECIES;
+  webdata->np = NPREY;
+  webdata->dx = AX/(MX-1);
+  webdata->dy = AY/(MY-1);
+  webdata->Neq= NEQ;
+  
+  /* Set up the coefficients a and b, and others found in the equations. */
+  np = webdata->np;
+  dx2 = (webdata->dx)*(webdata->dx); dy2 = (webdata->dy)*(webdata->dy);
+  
+  for (i = 0; i < np; i++) {
+    a1 = &(acoef[i][np]);
+    a2 = &(acoef[i+np][0]);
+    a3 = &(acoef[i][0]);
+    a4 = &(acoef[i+np][np]);
+    /*  Fill in the portion of acoef in the four quadrants, row by row. */
+    for (j = 0; j < np; j++) {
+      *a1++ =  -GG;
+      *a2++ =   EE;
+      *a3++ = ZERO;
+      *a4++ = ZERO;
+    }
+    
+    /* Reset the diagonal elements of acoef to -AA. */
+    acoef[i][i] = -AA; acoef[i+np][i+np] = -AA;
+    
+    /* Set coefficients for b and diffusion terms. */
+    bcoef[i] = BB; bcoef[i+np] = -BB;
+    cox[i] = DPREY/dx2; cox[i+np] = DPRED/dx2;
+    coy[i] = DPREY/dy2; coy[i+np] = DPRED/dy2;
+  }
+  
+}
+
+/* 
+ * SetInitialProfiles: Set initial conditions in cc, cp, and id.
+ * A polynomial profile is used for the prey cc values, and a constant
+ * (1.0e5) is loaded as the initial guess for the predator cc values.
+ * The id values are set to 1 for the prey and 0 for the predators.
+ * The prey cp values are set according to the given system, and
+ * the predator cp values are set to zero.                               
+ */
+
+static void SetInitialProfiles(N_Vector cc, N_Vector cp, N_Vector id,
+                               UserData webdata)
+{
+  long int loc, yloc, is, jx, jy, np;
+  realtype xx, yy, xyfactor, fac;
+  realtype *ccv, *cpv, *idv;
+  
+  ccv = NV_DATA_S(cc);
+  cpv = NV_DATA_S(cp);
+  idv = NV_DATA_S(id);
+  np = webdata->np;
+  
+  /* Loop over grid, load cc values and id values. */
+  for (jy = 0; jy < MY; jy++) {
+    yy = jy * webdata->dy;
+    yloc = NSMX * jy;
+    for (jx = 0; jx < MX; jx++) {
+      xx = jx * webdata->dx;
+      xyfactor = RCONST(16.0)*xx*(ONE-xx)*yy*(ONE-yy);
+      xyfactor *= xyfactor;
+      loc = yloc + NUM_SPECIES*jx;
+      fac = ONE + ALPHA * xx * yy + BETA * sin(FOURPI*xx) * sin(FOURPI*yy);
+      
+      for (is = 0; is < NUM_SPECIES; is++) {
+        if (is < np) {
+	    ccv[loc+is] = RCONST(10.0) + (realtype)(is+1) * xyfactor;
+          idv[loc+is] = ONE;
+        }
+        else {
+	  ccv[loc+is] = RCONST(1.0e5);
+          idv[loc+is] = ZERO;
+        }
+      }
+    }
+  }
+  
+  /* Set c' for the prey by calling the function Fweb. */
+  Fweb(ZERO, cc, cp, webdata);
+  
+  /* Set c' for predators to 0. */
+  for (jy = 0; jy < MY; jy++) {
+    yloc = NSMX * jy;
+    for (jx = 0; jx < MX; jx++) {
+      loc = yloc + NUM_SPECIES * jx;
+      for (is = np; is < NUM_SPECIES; is++) {
+        cpv[loc+is] = ZERO;
+      }
+    }
+  }
+}
+
+/*
+ * Print first lines of output (problem description)
+ */
+
+static void PrintHeader(long int mu, long int ml, realtype rtol, realtype atol)
+{
+  printf("\niwebsb: Predator-prey DAE serial example problem for IDA \n\n");
+  printf("Number of species ns: %d", NUM_SPECIES);
+  printf("     Mesh dimensions: %d x %d", MX, MY);
+  printf("     System size: %d\n", NEQ);
+#if defined(SUNDIALS_EXTENDED_PRECISION) 
+  printf("Tolerance parameters:  rtol = %Lg   atol = %Lg\n", rtol, atol);
+#elif defined(SUNDIALS_DOUBLE_PRECISION) 
+  printf("Tolerance parameters:  rtol = %lg   atol = %lg\n", rtol, atol);
+#else
+  printf("Tolerance parameters:  rtol = %g   atol = %g\n", rtol, atol);
+#endif
+  printf("Linear solver: IDABAND,  Band parameters mu = %ld, ml = %ld\n",mu,ml);
+  printf("CalcIC called to correct initial predator concentrations.\n\n");
+  printf("-----------------------------------------------------------\n");
+  printf("  t        bottom-left  top-right");
+  printf("    | nst  k      h\n");
+  printf("-----------------------------------------------------------\n\n");
+  
+}
+
+/* 
+ * PrintOutput: Print output values at output time t = tt.
+ * Selected run statistics are printed.  Then values of the concentrations
+ * are printed for the bottom left and top right grid points only.  
+ */
+
+static void PrintOutput(void *mem, N_Vector c, realtype t)
+{
+  int i, kused, flag;
+  long int nst;
+  realtype *c_bl, *c_tr, hused;
+
+  flag = IDAGetLastOrder(mem, &kused);
+  check_flag(&flag, "IDAGetLastOrder", 1);
+  flag = IDAGetNumSteps(mem, &nst);
+  check_flag(&flag, "IDAGetNumSteps", 1);
+  flag = IDAGetLastStep(mem, &hused);
+  check_flag(&flag, "IDAGetLastStep", 1);
+  
+  c_bl = IJ_Vptr(c,0,0);
+  c_tr = IJ_Vptr(c,MX-1,MY-1);
+
+#if defined(SUNDIALS_EXTENDED_PRECISION) 
+  printf("%8.2Le %12.4Le %12.4Le   | %3ld  %1d %12.4Le\n", 
+         t, c_bl[0], c_tr[1], nst, kused, hused);
+  for (i=1;i<NUM_SPECIES;i++)
+    printf("         %12.4Le %12.4Le   |\n",c_bl[i],c_tr[i]);
+#elif defined(SUNDIALS_DOUBLE_PRECISION) 
+  printf("%8.2le %12.4le %12.4le   | %3ld  %1d %12.4le\n", 
+         t, c_bl[0], c_tr[1], nst, kused, hused);
+  for (i=1;i<NUM_SPECIES;i++)
+    printf("         %12.4le %12.4le   |\n",c_bl[i],c_tr[i]);
+#else
+  printf("%8.2e %12.4e %12.4e   | %3ld  %1d %12.4e\n", 
+         t, c_bl[0], c_tr[1], nst, kused, hused);
+  for (i=1;i<NUM_SPECIES;i++)
+    printf("         %12.4e %12.4e   |\n",c_bl[i],c_tr[i]);
+#endif
+
+  printf("\n");
+}
+
+/* 
+ * PrintFinalStats: Print final run data contained in iopt.              
+ */
+
+static void PrintFinalStats(void *mem)
+{ 
+  long int nst, nre, nreB, nni, nje, netf, ncfn;
+  int flag;
+
+  flag = IDAGetNumSteps(mem, &nst);
+  check_flag(&flag, "IDAGetNumSteps", 1);
+  flag = IDAGetNumNonlinSolvIters(mem, &nni);
+  check_flag(&flag, "IDAGetNumNonlinSolvIters", 1);
+  flag = IDAGetNumResEvals(mem, &nre);
+  check_flag(&flag, "IDAGetNumResEvals", 1);
+  flag = IDAGetNumErrTestFails(mem, &netf);
+  check_flag(&flag, "IDAGetNumErrTestFails", 1);
+  flag = IDAGetNumNonlinSolvConvFails(mem, &ncfn);
+  check_flag(&flag, "IDAGetNumNonlinSolvConvFails", 1);
+  flag = IDABandGetNumJacEvals(mem, &nje);
+  check_flag(&flag, "IDABandGetNumJacEvals", 1);
+  flag = IDABandGetNumResEvals(mem, &nreB);
+  check_flag(&flag, "IDABandGetNumResEvals", 1);
+
+  printf("-----------------------------------------------------------\n");
+  printf("Final run statistics: \n\n");
+  printf("Number of steps                    = %ld\n", nst);
+  printf("Number of residual evaluations     = %ld\n", nre+nreB);
+  printf("Number of Jacobian evaluations     = %ld\n", nje);
+  printf("Number of nonlinear iterations     = %ld\n", nni);
+  printf("Number of error test failures      = %ld\n", netf);
+  printf("Number of nonlinear conv. failures = %ld\n", ncfn);
+
+}
+
+/* 
+ * Fweb: Rate function for the food-web problem.                        
+ * This routine computes the right-hand sides of the system equations,   
+ * consisting of the diffusion term and interaction term.                
+ * The interaction term is computed by the function WebRates.            
+ */
+
+static void Fweb(realtype tcalc, N_Vector cc, N_Vector crate,  
+                 UserData webdata)
+{ 
+  long int jx, jy, is, idyu, idyl, idxu, idxl;
+  realtype xx, yy, *cxy, *ratesxy, *cratexy, dcyli, dcyui, dcxli, dcxui;
+  
+  /* Loop over grid points, evaluate interaction vector (length ns),
+     form diffusion difference terms, and load crate.                    */
+  
+  for (jy = 0; jy < MY; jy++) {
+    yy = (webdata->dy) * jy ;
+    idyu = (jy!=MY-1) ? NSMX : -NSMX;
+    idyl = (jy!= 0  ) ? NSMX : -NSMX;
+    
+    for (jx = 0; jx < MX; jx++) {
+      xx = (webdata->dx) * jx;
+      idxu = (jx!= MX-1) ?  NUM_SPECIES : -NUM_SPECIES;
+      idxl = (jx!=  0  ) ?  NUM_SPECIES : -NUM_SPECIES;
+      cxy = IJ_Vptr(cc,jx,jy);
+      ratesxy = IJ_Vptr(webdata->rates,jx,jy);
+      cratexy = IJ_Vptr(crate,jx,jy);
+      
+      /* Get interaction vector at this grid point. */
+      WebRates(xx, yy, cxy, ratesxy, webdata);
+      
+      /* Loop over species, do differencing, load crate segment. */
+      for (is = 0; is < NUM_SPECIES; is++) {
+        
+        /* Differencing in y. */
+        dcyli = *(cxy+is) - *(cxy - idyl + is) ;
+        dcyui = *(cxy + idyu + is) - *(cxy+is);
+        
+        /* Differencing in x. */
+        dcxli = *(cxy+is) - *(cxy - idxl + is);
+        dcxui = *(cxy + idxu +is) - *(cxy+is);
+        
+        /* Compute the crate values at (xx,yy). */
+        cratexy[is] = coy[is] * (dcyui - dcyli) +
+          cox[is] * (dcxui - dcxli) + ratesxy[is];
+        
+      } /* End is loop */
+    } /* End of jx loop */
+  } /* End of jy loop */
+  
+}
+
+/* 
+ * WebRates: Evaluate reaction rates at a given spatial point.
+ * At a given (x,y), evaluate the array of ns reaction terms R.
+ */
+
+static void WebRates(realtype xx, realtype yy, realtype *cxy, realtype *ratesxy,
+                     UserData webdata)
+{
+  int is;
+  realtype fac;
+  
+  for (is = 0; is < NUM_SPECIES; is++)
+    ratesxy[is] = dotprod(NUM_SPECIES, cxy, acoef[is]);
+  
+  fac = ONE + ALPHA*xx*yy + BETA*sin(FOURPI*xx)*sin(FOURPI*yy);
+  
+  for (is = 0; is < NUM_SPECIES; is++)  
+    ratesxy[is] = cxy[is]*( bcoef[is]*fac + ratesxy[is] );
+  
+}
+
+/*
+ * dotprod: dot product routine for realtype arrays, for use by WebRates.    
+ */
+
+static realtype dotprod(long int size, realtype *x1, realtype *x2)
+{
+  long int i;
+  realtype *xx1, *xx2, temp = ZERO;
+  
+  xx1 = x1; xx2 = x2;
+  for (i = 0; i < size; i++) temp += (*xx1++) * (*xx2++);
+  return(temp);
+  
+}
+
+/*
+ * Check function return value...
+ *   opt == 0 means SUNDIALS function allocates memory so check if
+ *            returned NULL pointer
+ *   opt == 1 means SUNDIALS function returns a flag so check if
+ *            flag >= 0
+ *   opt == 2 means function allocates memory so check if returned
+ *            NULL pointer 
+ */
+
+static int check_flag(void *flagvalue, char *funcname, int opt)
+{
+  int *errflag;
+
+  if (opt == 0 && flagvalue == NULL) {
+    /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+    fprintf(stderr, 
+            "\nSUNDIALS_ERROR: %s() failed - returned NULL pointer\n\n", 
+            funcname);
+    return(1);
+  } else if (opt == 1) {
+    /* Check if flag < 0 */
+    errflag = (int *) flagvalue;
+    if (*errflag < 0) {
+      fprintf(stderr, 
+              "\nSUNDIALS_ERROR: %s() failed with flag = %d\n\n", 
+              funcname, *errflag);
+      return(1); 
+    }
+  } else if (opt == 2 && flagvalue == NULL) {
+    /* Check if function returned NULL pointer - no memory allocated */
+    fprintf(stderr, 
+            "\nMEMORY_ERROR: %s() failed - returned NULL pointer\n\n", 
+            funcname);
+    return(1); 
+  }
+
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/ida/examples_ser/iwebsb.out b/Win32/WinCVODE/sundials/ida/examples_ser/iwebsb.out
new file mode 100644
index 0000000..878bb93
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/examples_ser/iwebsb.out
@@ -0,0 +1,42 @@
+
+iwebsb: Predator-prey DAE serial example problem for IDA 
+
+Number of species ns: 2     Mesh dimensions: 20 x 20     System size: 800
+Tolerance parameters:  rtol = 1e-05   atol = 1e-05
+Linear solver: IDABAND,  Band parameters mu = 40, ml = 40
+CalcIC called to correct initial predator concentrations.
+
+-----------------------------------------------------------
+  t        bottom-left  top-right    | nst  k      h
+-----------------------------------------------------------
+
+0.00e+00   1.0000e+01   9.9949e+04   |   0  0   1.6310e-08
+           9.9999e+04   9.9949e+04   |
+
+1.00e-03   1.0318e+01   1.0822e+05   |  32  4   1.0823e-04
+           1.0319e+05   1.0822e+05   |
+
+1.00e-02   1.6189e+02   1.9735e+06   | 135  4   1.7964e-04
+           1.6189e+06   1.9735e+06   |
+
+1.00e-01   2.4019e+02   2.7072e+06   | 231  1   4.4212e-02
+           2.4019e+06   2.7072e+06   |
+
+4.00e-01   2.4019e+02   2.7072e+06   | 233  1   1.7685e-01
+           2.4019e+06   2.7072e+06   |
+
+7.00e-01   2.4019e+02   2.7072e+06   | 234  1   3.5370e-01
+           2.4019e+06   2.7072e+06   |
+
+1.00e+00   2.4019e+02   2.7072e+06   | 235  1   7.0740e-01
+           2.4019e+06   2.7072e+06   |
+
+-----------------------------------------------------------
+Final run statistics: 
+
+Number of steps                    = 235
+Number of residual evaluations     = 3319
+Number of Jacobian evaluations     = 36
+Number of nonlinear iterations     = 401
+Number of error test failures      = 5
+Number of nonlinear conv. failures = 0
diff --git a/Win32/WinCVODE/sundials/ida/include/ida.h b/Win32/WinCVODE/sundials/ida/include/ida.h
new file mode 100644
index 0000000..db7ea18
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/include/ida.h
@@ -0,0 +1,922 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:41:54 $
+ * ----------------------------------------------------------------- 
+ * Programmers: Allan G. Taylor, Alan C. Hindmarsh, and
+ *              Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California  
+ * Produced at the Lawrence Livermore National Laboratory
+ * All rights reserved
+ * For details, see sundials/ida/LICENSE
+ * -----------------------------------------------------------------
+ * This is the header (include) file for the main IDA solver.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _IDA_H
+#define _IDA_H
+
+#ifdef __cplusplus     /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+#include "sundialstypes.h"
+#include "nvector.h"
+
+/*
+ * -----------------------------------------------------------------
+ * IDA is used to solve numerically the initial value problem     
+ * for the differential algebraic equation (DAE) system           
+ *   F(t,y,y') = 0,                                               
+ * given initial conditions                                       
+ *   y(t0) = y0,   y'(t0) = yp0.                                  
+ * Here y and F are vectors of length N.                          
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * ----------------------------------------------------------------
+ * Type : IDAResFn                                                   
+ * ----------------------------------------------------------------
+ * The F function which defines the DAE system   F(t,y,y')=0      
+ * must have type IDAResFn.                                          
+ * Symbols are as follows: 
+ *                  t  <-> t        y <-> yy               
+ *                  y' <-> yp       F <-> rr
+ * A IDAResFn takes as input the independent variable value t,    
+ * the dependent variable vector yy, and the derivative (with     
+ * respect to t) of the yy vector, yp.  It stores the result of   
+ * F(t,y,y') in the vector rr. The yy, yp, and rr arguments are of 
+ * type N_Vector. The res_data parameter is the pointer res_data 
+ * passed by the user to the IDASetRdata routine. This user-supplied 
+ * pointer is passed to the user's res function every time it is called, 
+ * to provide access in res to user data.                                    
+ *                                                                
+ * A IDAResFn res should return a value of 0 if successful, a positive
+ * value if a recoverable error occured (e.g. yy has an illegal value),
+ * or a negative value if a nonrecoverable error occured. In the latter
+ * case, the program halts. If a recoverable error occured, the integrator
+ * will attempt to correct and retry.
+ * ----------------------------------------------------------------
+ */
+
+typedef int (*IDAResFn)(realtype tt, 
+                        N_Vector yy, N_Vector yp, N_Vector rr, 
+                        void *res_data);
+
+
+
+/*
+ * -----------------------------------------------------------------
+ * Type : IDAEwtFn
+ * -----------------------------------------------------------------
+ * A function e, which sets the error weight vector ewt, must have
+ * type IDAEwtFn.
+ * The function e takes as input the current dependent variable y.
+ * It must set the vector of error weights used in the WRMS norm:
+ * 
+ *   ||y||_WRMS = sqrt [ 1/N * sum ( ewt_i * y_i)^2 ]
+ *
+ * Typically, the vector ewt has components:
+ * 
+ *   ewt_i = 1 / (reltol * |y_i| + abstol_i)
+ *
+ * The e_data parameter is the same as that passed by the user
+ * to the IDASetEdata routine.  This user-supplied pointer is
+ * passed to the user's e function every time it is called.
+ * An IDAEwtFn e must return 0 if the error weight vector has been
+ * successfuly set and a non-zero value otherwise.
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*IDAEwtFn)(N_Vector y, N_Vector ewt, void *e_data);
+
+ 
+/*
+ * ----------------------------------------------------------------
+ * Inputs to IDAMalloc, IDAReInit, IDACalcIC, and IDASolve.       
+ * ----------------------------------------------------------------
+ */
+
+/* itol */
+#define IDA_SS 1
+#define IDA_SV 2
+#define IDA_WF 3
+
+/* itask */
+#define IDA_NORMAL         1
+#define IDA_ONE_STEP       2
+#define IDA_NORMAL_TSTOP   3 
+#define IDA_ONE_STEP_TSTOP 4
+
+/* icopt */
+#define IDA_YA_YDP_INIT 1 
+#define IDA_Y_INIT      2
+
+/*
+ * ================================================================
+ *          U S E R - C A L L A B L E   R O U T I N E S           
+ * ================================================================
+ */
+
+/* 
+ * ----------------------------------------------------------------
+ * Function : IDACreate                                           
+ * ----------------------------------------------------------------
+ * IDACreate creates an internal memory block for a problem to    
+ * be solved by IDA.                                              
+ *                                                                
+ * If successful, IDACreate returns a pointer to initialized      
+ * problem memory. This pointer should be passed to IDAMalloc.    
+ * If an initialization error occurs, IDACreate prints an error   
+ * message to standard err and returns NULL.                      
+ *                                                                
+ * ----------------------------------------------------------------
+ */
+
+void *IDACreate(void);
+
+/*
+ * ----------------------------------------------------------------
+ * Integrator optional input specification functions              
+ * ----------------------------------------------------------------
+ * The following functions can be called to set optional inputs   
+ * to values other than the defaults given below:                 
+ *                                                                
+ *                      |                                         
+ * Function             |  Optional input / [ default value ]     
+ *                      |                                          
+ * ---------------------------------------------------------------- 
+ *                      |                                          
+ * IDASetErrFile        | the file pointer for an error file      
+ *                      | where all IDA warning and error         
+ *                      | messages will be written. This parameter
+ *                      | can be stdout (standard output), stderr 
+ *                      | (standard error), a file pointer        
+ *                      | (corresponding to a user error file     
+ *                      | opened for writing) returned by fopen.  
+ *                      | If not called, then all messages will   
+ *                      | be written to standard output.          
+ *                      | [NULL]                                  
+ *                      |                                          
+ * IDASetRdata          | a pointer to user data that will be     
+ *                      | passed to the user's res function every 
+ *                      | time res is called.                     
+ *                      | [NULL]                                  
+ *                      |         
+ * IDASetEwtFn          | user-provide EwtSet function e and 
+ *                      | a pointer to user data that will be
+ *                      | passed to the user's e function every
+ *                      | time e is called.
+ *                      | [NULL]
+ *                      | [NULL]
+ *                      |
+ * IDASetMaxOrd         | maximum lmm order to be used by the     
+ *                      | solver.                                 
+ *                      | [5]                                      
+ *                      |                                          
+ * IDASetMaxNumSteps    | maximum number of internal steps to be  
+ *                      | taken by the solver in its attempt to   
+ *                      | reach tout.                             
+ *                      | [500]                                   
+ *                      |                                          
+ * IDASetInitStep       | initial step size.                      
+ *                      | [estimated by IDA]                       
+ *                      |                                          
+ * IDASetMaxStep        | maximum absolute value of step size     
+ *                      | allowed.                                
+ *                      | [infinity]                              
+ *                      |                                          
+ * IDASetStopTime       | the independent variable value past     
+ *                      | which the solution is not to proceed.   
+ *                      | [infinity]                              
+ *                      |                                          
+ * IDASetNonlinConvCoef | Newton convergence test  constant       
+ *                      | for use during integration.             
+ *                      | [0.33]                                  
+ *                      |                                          
+ * IDASetMaxErrTestFails| Maximum number of error test failures   
+ *                      | in attempting one step.                 
+ *                      | [10]                                    
+ *                      |                                         
+ * IDASetMaxNonlinIters | Maximum number of nonlinear solver      
+ *                      | iterations at one solution.             
+ *                      | [4]                                     
+ *                      |                                         
+ * IDASetMaxConvFails   | Maximum number of allowable conv.       
+ *                      | failures in attempting one step.        
+ *                      | [10]                                    
+ *                      |                                         
+ * IDASetSuppressAlg    | flag to indicate whether or not to      
+ *                      | suppress algebraic variables in the     
+ *                      | local error tests:                      
+ *                      | FALSE = do not suppress;                 
+ *                      | TRUE = do suppress;                     
+ *                      | [FALSE]                                 
+ *                      | NOTE: if suppressed algebraic variables 
+ *                      | is selected, the nvector 'id' must be   
+ *                      | supplied for identification of those    
+ *                      | algebraic components (see IDASetId).    
+ *                      |                                          
+ * IDASetId             | an N_Vector, which states a given       
+ *                      | element to be either algebraic or       
+ *                      | differential.                           
+ *                      | A value of 1.0 indicates a differential 
+ *                      | variable while a 0.0 indicates an       
+ *                      | algebraic variable. 'id' is required    
+ *                      | if optional input SUPPRESSALG is set,   
+ *                      | or if IDACalcIC is to be called with    
+ *                      | icopt = IDA_YA_YDP_INIT.               
+ *                      |                                         
+ * IDASetConstraints    | an N_Vector defining inequality         
+ *                      | constraints for each component of the   
+ *                      | solution vector y. If a given element   
+ *                      | of this vector has values +2 or -2,     
+ *                      | then the corresponding component of y   
+ *                      | will be constrained to be > 0.0 or      
+ *                      | <0.0, respectively, while if it is +1   
+ *                      | or -1, the y component is constrained   
+ *                      | to be >= 0.0 or <= 0.0, respectively.   
+ *                      | If a component of constraints is 0.0,   
+ *                      | then no constraint is imposed on the    
+ *                      | corresponding component of y.           
+ *                      | The presence of a non-NULL constraints  
+ *                      | vector that is not 0.0 (ZERO) in all    
+ *                      | components will cause constraint        
+ *                      | checking to be performed.               
+ *                      |                                         
+ * -----------------------------------------------------------------
+ *                      |
+ * IDASetTolerances     | Changes the integration tolerances
+ *                      | between calls to IDASolve().
+ *                      | [set by IDAMalloc/IDAReInit]
+ *                      |
+ * ---------------------------------------------------------------- 
+ * Return flag:
+ *   IDA_SUCCESS   if successful
+ *   IDA_MEM_NULL  if the ida memory is NULL
+ *   IDA_ILL_INPUT if an argument has an illegal value
+ *
+ * ----------------------------------------------------------------
+ */
+
+int IDASetErrFile(void *ida_mem, FILE *errfp);
+int IDASetRdata(void *ida_mem, void *res_data);
+int IDASetEwtFn(void *ida_mem, IDAEwtFn efun, void *edata);
+int IDASetMaxOrd(void *ida_mem, int maxord);
+int IDASetMaxNumSteps(void *ida_mem, long int mxsteps);
+int IDASetInitStep(void *ida_mem, realtype hin);
+int IDASetMaxStep(void *ida_mem, realtype hmax);
+int IDASetStopTime(void *ida_mem, realtype tstop);
+int IDASetNonlinConvCoef(void *ida_mem, realtype epcon);
+int IDASetMaxErrTestFails(void *ida_mem, int maxnef);
+int IDASetMaxNonlinIters(void *ida_mem, int maxcor);
+int IDASetMaxConvFails(void *ida_mem, int maxncf);
+int IDASetSuppressAlg(void *ida_mem, booleantype suppressalg);
+int IDASetId(void *ida_mem, N_Vector id);
+int IDASetConstraints(void *ida_mem, N_Vector constraints);
+
+int IDASetTolerances(void *ida_mem, int itol, realtype rtol, void *atol);
+
+/*
+ * ----------------------------------------------------------------
+ * Function : IDAMalloc                                           
+ * ----------------------------------------------------------------
+ * IDAMalloc allocates and initializes memory for a problem to    
+ * to be solved by IDA.                                           
+ *                                                                
+ * res     is the residual function F in F(t,y,y') = 0.                     
+ *                                                                
+ * t0      is the initial value of t, the independent variable.   
+ *                                                                
+ * yy0     is the initial condition vector y(t0).                 
+ *                                                                
+ * yp0     is the initial condition vector y'(t0)                 
+ *                                                                
+ * itol    is the type of tolerances to be used.                  
+ *            The legal values are:                               
+ *               SS (scalar relative and absolute  tolerances),   
+ *               SV (scalar relative tolerance and vector         
+ *                   absolute tolerance).                         
+ *                                                                
+ * rtol    is the relative tolerance scalar.         
+ *                                                                
+ * atol    is a pointer (void) to the absolute tolerance scalar or
+ *            an N_Vector tolerance or an IDAEwtFn funciton.                              
+ * (ewt)                                                          
+ *         Both rtol and atol are used to compute the error weight
+ *         vector, ewt. The error test required of a correction   
+ *         delta is that the weighted-RMS norm of delta be less   
+ *         than or equal to 1.0. Other convergence tests use the  
+ *         same norm. The weighting vector used in this norm is   
+ *         ewt. The components of ewt are defined by              
+ *         ewt[i] = 1.0/(rtol*yy[i] + atol[i]). Here, yy is the   
+ *         current approximate solution.  See the routine         
+ *         N_VWrmsNorm for the norm used in this error test.      
+ *                                                                
+ * Note: The tolerance values may be changed in between calls to  
+ *       IDASolve for the same problem. These values refer to     
+ *       (*rtol) and either (*atol), for a scalar absolute        
+ *       tolerance, or the components of atol, for a vector       
+ *       absolute tolerance.                                      
+ *                                                                 
+ *  IDA_SUCCESS if successful
+ *  IDA_MEM_NULL if the ida memory was NULL
+ *  IDA_MEM_FAIL if a memory allocation failed
+ *  IDA_ILL_INPUT f an argument has an illegal value.
+ *                                                                
+ * ----------------------------------------------------------------
+ */
+
+int IDAMalloc(void *ida_mem, IDAResFn res,
+              realtype t0, N_Vector yy0, N_Vector yp0, 
+              int itol, realtype rtol, void *atol);
+
+/*
+ * ----------------------------------------------------------------
+ * Function : IDAReInit                                           
+ * ----------------------------------------------------------------
+ * IDAReInit re-initializes IDA for the solution of a problem,    
+ * where a prior call to IDAMalloc has been made.                 
+ * IDAReInit performs the same input checking and initializations 
+ * that IDAMalloc does.                                           
+ * But it does no memory allocation, assuming that the existing   
+ * internal memory is sufficient for the new problem.             
+ *                                                                
+ * The use of IDAReInit requires that the maximum method order,   
+ * maxord, is no larger for the new problem than for the problem  
+ * specified in the last call to IDAMalloc.  This condition is    
+ * automatically fulfilled if the default value for maxord is     
+ * specified.                                                     
+ *                                                                
+ * Following the call to IDAReInit, a call to the linear solver   
+ * specification routine is necessary if a different linear solver
+ * is chosen, but may not be otherwise.  If the same linear solver
+ * is chosen, and there are no changes in its input parameters,   
+ * then no call to that routine is needed.                        
+ *                                                                
+ * The first argument to IDAReInit is:                            
+ *                                                                
+ * ida_mem = pointer to IDA memory returned by IDACreate.         
+ *                                                                
+ * All the remaining arguments to IDAReInit have names and        
+ * meanings identical to those of IDAMalloc.                      
+ *                                                                
+ * The return value of IDAReInit is equal to SUCCESS = 0 if there 
+ * were no errors; otherwise it is a negative int equal to:       
+ *   IDA_MEM_NULL   indicating ida_mem was NULL, or            
+ *   IDA_NO_MALLOC  indicating that ida_mem was not allocated. 
+ *   IDA_ILL_INPUT  indicating an input argument was illegal   
+ *                  (including an attempt to increase maxord). 
+ * In case of an error return, an error message is also printed.  
+ * ----------------------------------------------------------------
+ */                                                                
+
+int IDAReInit(void *ida_mem, IDAResFn res,
+              realtype t0, N_Vector yy0, N_Vector yp0,
+              int itol, realtype rtol, void *atol);
+ 
+/* ----------------------------------------------------------------
+ * Initial Conditions optional input specification functions      
+ * ----------------------------------------------------------------
+ * The following functions can be called to set optional inputs   
+ * to control the initial conditions calculations.                
+ *                                                                
+ *                        |                                        
+ * Function               |  Optional input / [ default value ]   
+ *                        |                                        
+ * -------------------------------------------------------------- 
+ *                        |                                        
+ * IDASetNonlinConvCoefIC | positive coeficient in the Newton     
+ *                        | convergence test.  This test uses a   
+ *                        | weighted RMS norm (with weights       
+ *                        | defined by the tolerances, as in      
+ *                        | IDASolve).  For new initial value     
+ *                        | vectors y and y' to be accepted, the  
+ *                        | norm of J-inverse F(t0,y,y') is       
+ *                        | required to be less than epiccon,     
+ *                        | where J is the system Jacobian.       
+ *                        | [0.01 * 0.33]                          
+ *                        |                                        
+ * IDASetMaxNumStepsIC    | maximum number of values of h allowed 
+ *                        | when icopt = IDA_YA_YDP_INIT, where  
+ *                        | h appears in the system Jacobian,     
+ *                        | J = dF/dy + (1/h)dF/dy'.              
+ *                        | [5]                                   
+ *                        |                                        
+ * IDASetMaxNumJacsIC     | maximum number of values of the       
+ *                        | approximate Jacobian or preconditioner
+ *                        | allowed, when the Newton iterations   
+ *                        | appear to be slowly converging.       
+ *                        | [4]                                    
+ *                        |                                        
+ * IDASetMaxNumItersIC    | maximum number of Newton iterations   
+ *                        | allowed in any one attempt to solve   
+ *                        | the IC problem.                       
+ *                        | [10]                                  
+ *                        |                                        
+ * IDASetLineSearchOffIC  | a boolean flag to turn off the        
+ *                        | linesearch algorithm.                 
+ *                        | [FALSE]                               
+ *                        |                                        
+ * IDASetStepToleranceIC  | positive lower bound on the norm of   
+ *                        | a Newton step.                        
+ *                        | [(unit roundoff)^(2/3)                
+ *                                                                
+ * ---------------------------------------------------------------- 
+ * Return flag:
+ *   IDA_SUCCESS   if successful
+ *   IDA_MEM_NULL  if the ida memory is NULL
+ *   IDA_ILL_INPUT if an argument has an illegal value
+ *
+ * ----------------------------------------------------------------
+ */
+
+int IDASetNonlinConvCoefIC(void *ida_mem, realtype epiccon);
+int IDASetMaxNumStepsIC(void *ida_mem, int maxnh);
+int IDASetMaxNumJacsIC(void *ida_mem, int maxnj);
+int IDASetMaxNumItersIC(void *ida_mem, int maxnit);
+int IDASetLineSearchOffIC(void *ida_mem, booleantype lsoff);
+int IDASetStepToleranceIC(void *ida_mem, realtype steptol);
+
+/*
+ * ----------------------------------------------------------------
+ * Function : IDACalcIC                                           
+ * ----------------------------------------------------------------
+ * IDACalcIC calculates corrected initial conditions for the DAE  
+ * system for a class of index-one problems of semi-implicit form.
+ * It uses Newton iteration combined with a Linesearch algorithm. 
+ * Calling IDACalcIC is optional. It is only necessary when the   
+ * initial conditions do not solve the given system.  I.e., if    
+ * y0 and yp0 are known to satisfy F(t0, y0, yp0) = 0, then       
+ * a call to IDACalcIC is NOT necessary (for index-one problems). 
+ *                                                                
+ * A call to IDACalcIC must be preceded by a successful call to   
+ * IDAMalloc or IDAReInit for the given DAE problem, and by a     
+ * successful call to the linear system solver specification      
+ * routine.                                                       
+ * In addition, IDACalcIC assumes that the vectors y0, yp0, and   
+ * (if relevant) id and constraints that were set through         
+ * IDASetConstraints remain unaltered since that call.            
+ *                                                                
+ * The call to IDACalcIC should precede the call(s) to IDASolve   
+ * for the given problem.                                         
+ *                                                                
+ * The arguments to IDACalcIC are as follows.  The first three -- 
+ * ida_mem, icopt, tout1 -- are required; the others are optional.
+ * A zero value passed for any optional input specifies that the  
+ * default value is to be used.                                   
+ *                                                                
+ * IDA_mem is the pointer to IDA memory returned by IDACreate.    
+ *                                                                
+ * t0      is the initial value of t, the independent variable.   
+ *                                                                
+ * yy0     is the initial condition vector y(t0).                 
+ *                                                                
+ * yp0     is the initial condition vector y'(t0)                 
+ *                                                                
+ * icopt  is the option of IDACalcIC to be used.                  
+ *        icopt = IDA_YA_YDP_INIT   directs IDACalcIC to compute 
+ *                the algebraic components of y and differential  
+ *                components of y', given the differential        
+ *                components of y.  This option requires that the 
+ *                N_Vector id was set through a call to IDASetId  
+ *                specifying the differential and algebraic       
+ *                components.                                     
+ *        icopt = IDA_Y_INIT   directs IDACalcIC to compute all  
+ *                components of y, given y'.  id is not required. 
+ *                                                                
+ * tout1  is the first value of t at which a soluton will be      
+ *        requested (from IDASolve).  (This is needed here to     
+ *        determine the direction of integration and rough scale  
+ *        in the independent variable t.                          
+ *                                                                
+ *                                                                
+ * IDACalcIC returns an int flag.  Its symbolic values and their  
+ * meanings are as follows.  (The numerical return values are set 
+ * above in this file.)  All unsuccessful returns give a negative 
+ * return value.  If IFACalcIC failed, y0 and yp0 contain         
+ * (possibly) altered values, computed during the attempt.        
+ *                                                                
+ * SUCCESS             IDACalcIC was successful.  The corrected   
+ *                     initial value vectors are in y0 and yp0.    
+ *                                                                
+ * IDA_MEM_NULL        The argument ida_mem was NULL.             
+ *                                                                
+ * IDA_ILL_INPUT       One of the input arguments was illegal.    
+ *                     See printed message.                       
+ *                                                                
+ * IDA_LINIT_FAIL      The linear solver's init routine failed.   
+ *                                                                
+ * IDA_BAD_EWT         Some component of the error weight vector  
+ *                     is zero (illegal), either for the input    
+ *                     value of y0 or a corrected value.          
+ *                                                                
+ * IDA_RES_FAIL        The user's residual routine returned 
+ *                     a non-recoverable error flag.              
+ *                                                                
+ * IDA_FIRST_RES_FAIL  The user's residual routine returned 
+ *                     a recoverable error flag on the first call,
+ *                     but IDACalcIC was unable to recover.       
+ *                                                                
+ * IDA_LSETUP_FAIL     The linear solver's setup routine had a    
+ *                     non-recoverable error.                     
+ *                                                                
+ * IDA_LSOLVE_FAIL     The linear solver's solve routine had a    
+ *                     non-recoverable error.                     
+ *                                                                
+ * IDA_NO_RECOVERY     The user's residual routine, or the linear 
+ *                     solver's setup or solve routine had a      
+ *                     recoverable error, but IDACalcIC was       
+ *                     unable to recover.                         
+ *                                                                
+ * IDA_CONSTR_FAIL     IDACalcIC was unable to find a solution    
+ *                     satisfying the inequality constraints.     
+ *                                                                
+ * IDA_LINESEARCH_FAIL The Linesearch algorithm failed to find a  
+ *                     solution with a step larger than steptol   
+ *                     in weighted RMS norm.                      
+ *                                                                
+ * IDA_CONV_FAIL       IDACalcIC failed to get convergence of the 
+ *                     Newton iterations.                         
+ *                                                                
+ * ----------------------------------------------------------------
+ */
+
+int IDACalcIC (void *ida_mem, realtype t0, N_Vector yy0, N_Vector yp0, 
+               int icopt, realtype tout1); 
+
+/*
+ * ----------------------------------------------------------------
+ * Function : IDASolve                                            
+ * ----------------------------------------------------------------
+ * IDASolve integrates the DAE over an interval in t, the         
+ * independent variable. If itask is NORMAL, then the solver      
+ * integrates from its current internal t value to a point at or  
+ * beyond tout, then interpolates to t = tout and returns y(tret) 
+ * in the user-allocated vector yret. In general, tret = tout.    
+ * If itask is ONE_STEP, then the solver takes one internal step  
+ * of the independent variable and returns in yret the value of y 
+ * at the new internal independent variable value. In this case,  
+ * tout is used only during the first call to IDASolve to         
+ * determine the direction of integration and the rough scale of  
+ * the problem. In either case, the independent variable value    
+ * reached by the solver is placed in (*tret). The user is         
+ * responsible for allocating the memory for this value.          
+ *                                                                
+ * IDA_mem is the pointer (void) to IDA memory returned by        
+ *         IDACreate.                                             
+ *                                                                
+ * tout    is the next independent variable value at which a      
+ *         computed solution is desired.                          
+ *                                                                
+ * *tret   is the actual independent variable value corresponding 
+ *         to the solution vector yret.                           
+ *                                                                
+ * yret    is the computed solution vector.  With no errors,      
+ *         yret = y(tret).                                        
+ *                                                                
+ * ypret   is the derivative of the computed solution at t = tret.
+ *                                                                
+ * Note: yret and ypret may be the same N_Vectors as y0 and yp0   
+ * in the call to IDAMalloc or IDAReInit.                         
+ *                                                                
+ * itask   is NORMAL, NORMAL_TSTOP, ONE_STEP, or ONE_STEP_TSTOP.  
+ *         These modes are described above.                       
+ *                                                                
+ *                                                                
+ * The return values for IDASolve are described below.            
+ * (The numerical return values are defined above in this file.)  
+ * All unsuccessful returns give a negative return value.         
+ *                                                                
+ * IDA_SUCCESS
+ *   IDASolve succeeded.                       
+ *                                                                
+ * IDA_TSTOP_RETURN: 
+ *   IDASolve returns computed results for the independent variable 
+ *   value tstop. That is, tstop was reached.                            
+ *                                                                
+ * IDA_MEM_NULL: 
+ *   The IDA_mem argument was NULL.            
+ *                                                                
+ * IDA_ILL_INPUT: 
+ *   One of the inputs to IDASolve is illegal. This includes the 
+ *   situation when a component of the error weight vectors 
+ *   becomes < 0 during internal stepping. The ILL_INPUT flag          
+ *   will also be returned if the linear solver function IDA
+ *   (called by the user after calling IDACreate) failed to set one 
+ *   of the linear solver-related fields in IDA_mem or if the linear 
+ *   solver's init routine failed. In any case, the user should see 
+ *   the printed error message for more details.                
+ *                                                                
+ * IDA_TOO_MUCH_WORK: 
+ *   The solver took mxstep internal steps but could not reach tout. 
+ *   The default value for mxstep is MXSTEP_DEFAULT = 500.                
+ *                                                                
+ * IDA_TOO_MUCH_ACC: 
+ *   The solver could not satisfy the accuracy demanded by the user 
+ *   for some internal step.   
+ *                                                                
+ * IDA_ERR_FAIL:
+ *   Error test failures occurred too many times (=MXETF = 10) during 
+ *   one internal step.  
+ *                                                                
+ * IDA_CONV_FAIL: 
+ *   Convergence test failures occurred too many times (= MXNCF = 10) 
+ *   during one internal step.                                          
+ *                                                                
+ * IDA_LSETUP_FAIL: 
+ *   The linear solver's setup routine failed  
+ *   in an unrecoverable manner.                    
+ *                                                                
+ * IDA_LSOLVE_FAIL: 
+ *   The linear solver's solve routine failed  
+ *   in an unrecoverable manner.                    
+ *                                                                
+ * IDA_CONSTR_FAIL:
+ *    The inequality constraints were violated, 
+ *    and the solver was unable to recover.         
+ *                                                                
+ * IDA_REP_RES_ERR: 
+ *    The user's residual function repeatedly returned a recoverable 
+ *    error flag, but the solver was unable to recover.                 
+ *                                                                
+ * IDA_RES_FAIL:
+ *    The user's residual function returned a nonrecoverable error 
+ *    flag.
+ *                                                                
+ * ----------------------------------------------------------------
+ */
+
+int IDASolve(void *ida_mem, realtype tout, realtype *tret,
+             N_Vector yret, N_Vector ypret, int itask);
+
+/*
+ * ----------------------------------------------------------------
+ * Function: IDAGetSolution                                       
+ * ----------------------------------------------------------------
+ *                                                                
+ * This routine evaluates y(t) and y'(t) as the value and         
+ * derivative of the interpolating polynomial at the independent  
+ * variable t, and stores the results in the vectors yret and     
+ * ypret.  It uses the current independent variable value, tn,    
+ * and the method order last used, kused. This function is        
+ * called by IDASolve with t = tout, t = tn, or t = tstop.        
+ *                                                                
+ * If kused = 0 (no step has been taken), or if t = tn, then the  
+ * order used here is taken to be 1, giving yret = phi[0],        
+ * ypret = phi[1]/psi[0].                                         
+ *                                                                
+ * The return values are:                                         
+ *   IDA_SUCCESS:  succeess.                                  
+ *   IDA_BAD_T:    t is not in the interval [tn-hu,tn].                   
+ *   IDA_MEM_NULL: The ida_mem argument was NULL.     
+ *                                                                
+ * ----------------------------------------------------------------
+ */
+
+int IDAGetSolution(void *ida_mem, realtype t, 
+                   N_Vector yret, N_Vector ypret);
+
+/* ----------------------------------------------------------------
+ * Integrator optional output extraction functions                
+ * ----------------------------------------------------------------
+ *                                                                
+ * The following functions can be called to get optional outputs  
+ * and statistics related to the main integrator.                 
+ * ---------------------------------------------------------------- 
+ *                                                                
+ * IDAGetWorkSpace returns the IDA real and integer workspace sizes      
+ * IDAGetNumSteps returns the cumulative number of internal       
+ *       steps taken by the solver                                
+ * IDAGetNumRhsEvals returns the number of calls to the user's    
+ *       res function                                             
+ * IDAGetNumLinSolvSetups returns the number of calls made to     
+ *       the linear solver's setup routine                        
+ * IDAGetNumErrTestFails returns the number of local error test   
+ *       failures that have occured                               
+ * IDAGetNumBacktrackOps returns the number of backtrack          
+ *       operations done in the linesearch algorithm in IDACalcIC 
+ * IDAGetLastOrder returns the order used during the last         
+ *       internal step                                            
+ * IDAGetCurentOrder returns the order to be used on the next     
+ *       internal step                                            
+ * IDAGetActualInitStep returns the actual initial step size      
+ *       used by IDA                                              
+ * IDAGetLAstStep returns the step size for the last internal     
+ *       step (if from IDASolve), or the last value of the        
+ *       artificial step size h (if from IDACalcIC)               
+ * IDAGetCurrentStep returns the step size to be attempted on the 
+ *       next internal step                                       
+ * IDAGetCurrentTime returns the current internal time reached    
+ *       by the solver                                            
+ * IDAGetTolScaleFactor returns a suggested factor by which the   
+ *       user's tolerances should be scaled when too much         
+ *       accuracy has been requested for some internal step       
+ * IDAGetErrWeights returns the state error weight vector.        
+ *       The user must allocate space for ewt.                
+ *                                                                
+ * IDAGet* return values:
+ *   IDA_SUCCESS   if succesful
+ *   IDA_MEM_NULL  if the ida memory was NULL
+ *
+ * ----------------------------------------------------------------
+ */
+
+int IDAGetWorkSpace(void *ida_mem, long int *lenrw, long int *leniw);
+int IDAGetNumSteps(void *ida_mem, long int *nsteps);
+int IDAGetNumResEvals(void *ida_mem, long int *nrevals);
+int IDAGetNumLinSolvSetups(void *ida_mem, long int *nlinsetups);
+int IDAGetNumErrTestFails(void *ida_mem, long int *netfails);
+int IDAGetNumBacktrackOps(void *ida_mem, long int *nbacktr);
+int IDAGetLastOrder(void *ida_mem, int *klast);
+int IDAGetCurrentOrder(void *ida_mem, int *kcur);
+int IDAGetActualInitStep(void *ida_mem, realtype *hinused);
+int IDAGetLastStep(void *ida_mem, realtype *hlast);
+int IDAGetCurrentStep(void *ida_mem, realtype *hcur);
+int IDAGetCurrentTime(void *ida_mem, realtype *tcur);
+int IDAGetTolScaleFactor(void *ida_mem, realtype *tolsfact);
+int IDAGetErrWeights(void *ida_mem, N_Vector eweight);
+
+int IDAGetIntegratorStats(void *ida_mem, long int *nsteps, 
+                          long int *nrevals, long int *nlinsetups, 
+                          long int *netfails, int *qlast, int *qcur, 
+                          realtype *hlast, realtype *hcur, 
+                          realtype *tcur);
+
+/*
+ * ----------------------------------------------------------------
+ * Nonlinear solver optional output extraction functions          
+ * ----------------------------------------------------------------
+ *                                                                
+ * The following functions can be called to get optional outputs  
+ * and statistics related to the nonlinear solver.                
+ * -------------------------------------------------------------- 
+ *                                                                
+ * IDAGetNumNonlinSolvIters returns the number of nonlinear       
+ *       solver iterations performed.                             
+ * IDAGetNumNonlinSolvConvFails returns the number of nonlinear   
+ *       convergence failures.                                    
+ *                                                                
+ * ----------------------------------------------------------------
+ */
+
+int IDAGetNumNonlinSolvIters(void *ida_mem, long int *nniters);
+int IDAGetNumNonlinSolvConvFails(void *ida_mem, long int *nncfails);
+
+/*
+ * ----------------------------------------------------------------
+ * As a convenience, the following function provides the          
+ * optional outputs in a group.                                   
+ * ----------------------------------------------------------------
+ */
+
+int IDAGetNonlinSolvStats(void *ida_mem, long int *nniters, 
+                          long int *nncfails);
+
+/*
+ * ----------------------------------------------------------------
+ * Function : IDAFree                                             
+ * ----------------------------------------------------------------
+ * IDAFree frees the problem memory IDA_mem allocated by          
+ * IDAMalloc.  Its only argument is the pointer idamem            
+ * returned by IDAMalloc.                                         
+ * ----------------------------------------------------------------
+ */
+
+void IDAFree(void *ida_mem);
+
+/* 
+ * ----------------------------------------
+ * IDA return flags 
+ * ----------------------------------------
+ */
+
+
+#define IDA_SUCCESS          0
+#define IDA_TSTOP_RETURN     1
+
+#define IDA_MEM_NULL        -1
+#define IDA_ILL_INPUT       -2
+#define IDA_NO_MALLOC       -3
+#define IDA_TOO_MUCH_WORK   -4
+#define IDA_TOO_MUCH_ACC    -5
+#define IDA_ERR_FAIL        -6
+#define IDA_CONV_FAIL       -7
+#define IDA_LINIT_FAIL      -8
+#define IDA_LSETUP_FAIL     -9
+#define IDA_LSOLVE_FAIL     -10
+#define IDA_RES_FAIL        -11
+#define IDA_CONSTR_FAIL     -12
+#define IDA_REP_RES_ERR     -13
+
+#define IDA_MEM_FAIL        -14
+
+#define IDA_BAD_T           -15
+
+#define IDA_BAD_EWT         -16
+#define IDA_FIRST_RES_FAIL  -17
+#define IDA_LINESEARCH_FAIL -18
+#define IDA_NO_RECOVERY     -19
+
+#define IDA_PDATA_NULL      -20
+
+/*
+ * =================================================================
+ *     I N T E R F A C E   T O    L I N E A R   S O L V E R S     
+ * =================================================================
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * int (*ida_linit)(IDAMem IDA_mem);                               
+ * -----------------------------------------------------------------
+ * The purpose of ida_linit is to allocate memory for the          
+ * solver-specific fields in the structure *(idamem->ida_lmem) and 
+ * perform any needed initializations of solver-specific memory,   
+ * such as counters/statistics. An (*ida_linit) should return      
+ * 0 if it has successfully initialized the IDA linear solver and 
+ * a negative value otherwise. If an error does occur, an 
+ * appropriate message should be sent to (idamem->errfp).          
+ * ----------------------------------------------------------------
+ */                                                                 
+
+/*
+ * -----------------------------------------------------------------
+ * int (*ida_lsetup)(IDAMem IDA_mem, N_Vector yyp, N_Vector ypp,   
+ *                  N_Vector resp,                                 
+ *            N_Vector tempv1, N_Vector tempv2, N_Vector tempv3);  
+ * -----------------------------------------------------------------
+ * The job of ida_lsetup is to prepare the linear solver for       
+ * subsequent calls to ida_lsolve. Its parameters are as follows:  
+ *                                                                 
+ * idamem - problem memory pointer of type IDAMem. See the big     
+ *          typedef earlier in this file.                          
+ *                                                                 
+ *                                                                 
+ * yyp   - the predicted y vector for the current IDA internal     
+ *         step.                                                   
+ *                                                                 
+ * ypp   - the predicted y' vector for the current IDA internal    
+ *         step.                                                   
+ *                                                                 
+ * resp  - F(tn, yyp, ypp).                                        
+ *                                                                 
+ * tempv1, tempv2, tempv3 - temporary N_Vectors provided for use   
+ *         by ida_lsetup.                                          
+ *                                                                 
+ * The ida_lsetup routine should return 0 if successful,
+ * a positive value for a recoverable error, and a negative value 
+ * for an unrecoverable error.
+ * -----------------------------------------------------------------
+ */                                                                 
+
+/*
+ * -----------------------------------------------------------------
+ * int (*ida_lsolve)(IDAMem IDA_mem, N_Vector b, N_Vector weight,  
+ *               N_Vector ycur, N_Vector ypcur, N_Vector rescur);  
+ * -----------------------------------------------------------------
+ * ida_lsolve must solve the linear equation P x = b, where        
+ * P is some approximation to the system Jacobian                  
+ *                  J = (dF/dy) + cj (dF/dy')                      
+ * evaluated at (tn,ycur,ypcur) and the RHS vector b is input.     
+ * The N-vector ycur contains the solver's current approximation   
+ * to y(tn), ypcur contains that for y'(tn), and the vector rescur 
+ * contains the N-vector residual F(tn,ycur,ypcur).                
+ * The solution is to be returned in the vector b. 
+ *                                                                 
+ * The ida_lsolve routine should return 0 if successful,
+ * a positive value for a recoverable error, and a negative value 
+ * for an unrecoverable error.
+ * -----------------------------------------------------------------
+ */                                                                 
+
+/*
+ * -----------------------------------------------------------------
+ * int (*ida_lperf)(IDAMem IDA_mem, int perftask);                 
+ * -----------------------------------------------------------------
+ * ida_lperf is called two places in IDA where linear solver       
+ * performance data is required by IDA. For perftask = 0, an       
+ * initialization of performance variables is performed, while for 
+ * perftask = 1, the performance is evaluated.                     
+ * -----------------------------------------------------------------
+ */                                                                 
+
+/*
+ * -----------------------------------------------------------------
+ * int (*ida_lfree)(IDAMem IDA_mem);                               
+ * -----------------------------------------------------------------
+ * ida_lfree should free up any memory allocated by the linear     
+ * solver. This routine is called once a problem has been          
+ * completed and the linear solver is no longer needed.            
+ * -----------------------------------------------------------------
+ */                                                                 
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/ida/include/idaband.h b/Win32/WinCVODE/sundials/ida/include/idaband.h
new file mode 100644
index 0000000..4b35c11
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/include/idaband.h
@@ -0,0 +1,207 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:41:54 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Alan C. Hindmarsh, and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/ida/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the IDA/IDAS band linear solver
+ * module, IDABAND. It interfaces between the band module and the
+ * integrator when a banded linear solver is appropriate.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _IDABAND_H
+#define _IDABAND_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "band.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+ 
+/*
+ * -----------------------------------------------------------------
+ * Type : IDABandJacFn
+ * -----------------------------------------------------------------
+ * A banded Jacobian approximation function bjac must have the    
+ * prototype given below. Its parameters are:                     
+ *                                                                
+ * Neq is the problem size, and length of all vector arguments.   
+ *                                                                
+ * mupper is the upper bandwidth of the banded Jacobian matrix.   
+ *                                                                
+ * mlower is the lower bandwidth of the banded Jacobian matrix.   
+ *                                                                
+ * tt is the current value of the independent variable t.        
+ *                                                                
+ * yy is the current value of the dependent variable vector,     
+ *    namely the predicted value of y(t).                     
+ *                                                                
+ * yp is the current value of the derivative vector y',          
+ *    namely the predicted value of y'(t).                    
+ *                                                                
+ * rr is the residual vector F(tt,yy,yp).                     
+ *                                                                
+ * c_j is the scalar in the system Jacobian, proportional to 1/hh.
+ *                                                                
+ * jac_data  is a pointer to user Jacobian data - the same as the    
+ *    jdata parameter passed to IDABand.                      
+ *                                                                
+ * Jac is the band matrix (of type BandMat) to be loaded by    
+ *     an IDABandJacFn routine with an approximation to the    
+ *     system Jacobian matrix                                  
+ *            J = dF/dy + cj*dF/dy'                             
+ *     at the given point (t,y,y'), where the DAE system is    
+ *     given by F(t,y,y') = 0.  Jac is preset to zero, so only 
+ *     the nonzero elements need to be loaded.  See note below.
+ *                                                                
+ * tmp1, tmp2, tmp3 are pointers to memory allocated for          
+ *     N_Vectors which can be used by an IDABandJacFn routine  
+ *     as temporary storage or work space.                     
+ *                                                                
+ * NOTE: The following are two efficient ways to load Jac:
+ *                                                                
+ * (1) (with macros - no explicit data structure references)      
+ *    for (j=0; j < Neq; j++) {                                   
+ *       col_j = BAND_COL(Jac,j);                                  
+ *       for (i=j-mupper; i <= j+mlower; i++) {                   
+ *         generate J_ij = the (i,j)th Jacobian element           
+ *         BAND_COL_ELEM(col_j,i,j) = J_ij;                       
+ *       }                                                        
+ *     }                                                          
+ *                                                                
+ * (2) (with BAND_COL macro, but without BAND_COL_ELEM macro)     
+ *    for (j=0; j < Neq; j++) {                                   
+ *       col_j = BAND_COL(Jac,j);                                  
+ *       for (k=-mupper; k <= mlower; k++) {                      
+ *         generate J_ij = the (i,j)th Jacobian element, i=j+k    
+ *         col_j[k] = J_ij;                                       
+ *       }                                                        
+ *     }                                                          
+ *                                                                
+ * NOTE: If the user's Jacobian routine needs other quantities,   
+ *       they are accessible as follows: hcur (the current stepsize)
+ *       and ewt (the error weight vector) are accessible through   
+ *       IDAGetCurrentStep and IDAGetErrWeights, respectively (see  
+ *       ida.h). The unit roundoff is available as                  
+ *       UNIT_ROUNDOFF defined in sundialstypes.h                   
+ *                                                                
+ * A third way, using the BAND_ELEM(A,i,j) macro, is much less    
+ * efficient in general.  It is only appropriate for use in small 
+ * problems in which efficiency of access is NOT a major concern. 
+ *                                                                
+ * The IDABandJacFn should return                                 
+ *     0 if successful,                                           
+ *     a positive int if a recoverable error occurred, or         
+ *     a negative int if a nonrecoverable error occurred.         
+ * In the case of a recoverable error return, the integrator will 
+ * attempt to recover by reducing the stepsize (which changes cj).
+ * -----------------------------------------------------------------
+ */
+  
+typedef int (*IDABandJacFn)(long int Neq, long int mupper, 
+                            long int mlower, realtype tt, 
+                            N_Vector yy, N_Vector yp, N_Vector rr, 
+                            realtype c_j, void *jac_data, BandMat Jac, 
+                            N_Vector tmp1, N_Vector tmp2, 
+                            N_Vector tmp3);
+ 
+/*
+ * -----------------------------------------------------------------
+ * Function : IDABand
+ * -----------------------------------------------------------------
+ * A call to the IDABand function links the main integrator       
+ * with the IDABAND linear solver module.                         
+ *                                                                
+ * ida_mem is the pointer to the integrator memory returned by    
+ *         IDACreate.                                                   
+ *                                                                
+ * mupper is the upper bandwidth of the banded Jacobian matrix.   
+ *                                                                
+ * mlower is the lower bandwidth of the banded Jacobian matrix.   
+ *                                                                
+ * The return values of IDABand are:                              
+ *     IDABAND_SUCCESS   = 0  if successful                            
+ *     IDABAND_LMEM_FAIL = -1 if there was a memory allocation failure 
+ *     IDABAND_ILL_INPUT = -2 if the input was illegal or NVECTOR bad. 
+ *                                                                
+ * NOTE: The band linear solver assumes a serial implementation   
+ *       of the NVECTOR package. Therefore, IDABand will first
+ *       test for a compatible N_Vector internal representation
+ *       by checking that the N_VGetArrayPointer function exists.
+ * -----------------------------------------------------------------
+ */
+
+int IDABand(void *ida_mem, long int Neq, long int mupper, long int mlower);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional inputs to the IDABAND linear solver
+ * -----------------------------------------------------------------
+ *                                                                
+ * IDABandSetJacFn specifies the dense Jacobian approximation     
+ *         routine to be used. A user-supplied djac routine must  
+ *         be of type IDABandJacFn.                               
+ *         By default, a difference quotient routine IDABandDQJac,
+ *         supplied with this solver is used.                     
+ *         It also specifies a pointer to user data which is    
+ *         passed to the bjac routine every time it is called.    
+ *                                                                
+ * The return value of IDABandSet* is one of:
+ *    IDABAND_SUCCESS   if successful
+ *    IDABAND_MEM_NULL  if the ida memory was NULL
+ *    IDABAND_LMEM_NULL if the idaband memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int IDABandSetJacFn(void *ida_mem, IDABandJacFn bjac, void *jac_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional outputs from the IDABAND linear solver
+ * -----------------------------------------------------------------
+ *                                                                
+ * IDABandGetWorkSpace returns the real and integer workspace used 
+ *     by IDABAND.                                                   
+ * IDABandGetNumJacEvals returns the number of calls made to the  
+ *     Jacobian evaluation routine bjac.                          
+ * IDABandGetNumResEvals returns the number of calls to the user  
+ *     res routine due to finite difference Jacobian evaluation.  
+ * IDABandGetLastFlag returns the last error flag set by any of
+ *     the IDABAND interface functions.
+ *
+ * The return value of IDABandGet* is one of:
+ *    IDABAND_SUCCESS   if successful
+ *    IDABAND_MEM_NULL  if the ida memory was NULL
+ *    IDABAND_LMEM_NULL if the idaband memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int IDABandGetWorkSpace(void *ida_mem, long int *lenrwB, long int *leniwB);
+int IDABandGetNumJacEvals(void *ida_mem, long int *njevalsB);
+int IDABandGetNumResEvals(void *ida_mem, long int *nrevalsB);
+int IDABandGetLastFlag(void *ida_mem, int *flag);
+
+/* IDABAND return values */
+
+#define IDABAND_SUCCESS    0
+#define IDABAND_MEM_NULL  -1 
+#define IDABAND_LMEM_NULL -2 
+#define IDABAND_ILL_INPUT -3
+#define IDABAND_MEM_FAIL  -4
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/ida/include/idabbdpre.h b/Win32/WinCVODE/sundials/ida/include/idabbdpre.h
new file mode 100644
index 0000000..f98e816
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/include/idabbdpre.h
@@ -0,0 +1,309 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:41:54 $
+ * ----------------------------------------------------------------- 
+ * Programmers: Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California  
+ * Produced at the Lawrence Livermore National Laboratory
+ * All rights reserved
+ * For details, see sundials/ida/LICENSE
+ * -----------------------------------------------------------------
+ * This is the header file for the IDABBDPRE module, for a         
+ * band-block-diagonal preconditioner, i.e. a block-diagonal       
+ * matrix with banded blocks, for use with IDA/IDAS and IDASpgmr.  
+ *                                                                 
+ * Summary:                                                        
+ *                                                                 
+ * These routines provide a preconditioner matrix that is          
+ * block-diagonal with banded blocks.  The blocking corresponds    
+ * to the distribution of the dependent variable vector y among    
+ * the processors.  Each preconditioner block is generated from    
+ * the Jacobian of the local part (on the current processor) of a  
+ * given function G(t,y,y') approximating F(t,y,y').  The blocks   
+ * are generated by a difference quotient scheme on each processor 
+ * independently.  This scheme utilizes an assumed banded          
+ * structure with given half-bandwidths, mudq and mldq.            
+ * However, the banded Jacobian block kept by the scheme has       
+ * half-bandwiths mukeep and mlkeep, which may be smaller.         
+ *                                                                 
+ * The user's calling program should have the following form:      
+ *                                                                 
+ *   #include "idabbdpre.h"                                        
+ *   #include "nvector_parallel.h"                                 
+ *   ...                                                           
+ *   void *p_data;                                                 
+ *   ...                                                           
+ *   y0  = N_VNew_Parallel(...);                           
+ *   yp0 = N_VNew_Parallel(...);                           
+ *   ...                                                           
+ *   ida_mem = IDACreate(...);                                     
+ *   ier = IDAMalloc(...);                                         
+ *   ...                                                           
+ *   p_data = IDABBDPrecAlloc(ida_mem, Nlocal, mudq, mldq,         
+ *                            mukeep, mlkeep, dq_rel_yy, Gres, Gcomm); 
+ *   flag = IDABBDSpgmr(ida_mem, maxl, p_data);                  
+ *   ...                                                           
+ *   ier = IDASolve(...);                                          
+ *   ...                                                           
+ *   IDABBDFree(p_data);                                           
+ *   ...                                                           
+ *   IDAFree(...);                                                 
+ *                                                                 
+ *   N_VDestroy(y0);
+ *   N_VDestroy(yp0);
+ *                                                                 
+ * The user-supplied routines required are:                        
+ *                                                                 
+ *   res  is the function F(t,y,y') defining the DAE system to     
+ *   be solved:  F(t,y,y') = 0.                                    
+ *                                                                 
+ *   Gres  is the function defining a local approximation        
+ *   G(t,y,y') to F, for the purposes of the preconditioner.       
+ *                                                                 
+ *   Gcomm  is the function performing communication needed        
+ *   for Glocal.                                   
+ *                                                                 
+ *                                                                 
+ * Notes:                                                          
+ *                                                                 
+ * 1) This header file is included by the user for the definition  
+ *    of the IBBDPrecData type and for needed function prototypes. 
+ *                                                                 
+ * 2) The IDABBDPrecAlloc call includes half-bandwidths mudq and   
+ *    mldq to be used in the approximate Jacobian.  They need      
+ *    not be the true half-bandwidths of the Jacobian of the       
+ *    local block of G, when smaller values may provide a greater  
+ *    efficiency. Similarly, mukeep and mlkeep, specifying the     
+ *    bandwidth kept for the approximate Jacobian, need not be     
+ *    the true half-bandwidths. Also, mukeep, mlkeep, mudq, and    
+ *    mldq need not be the same on every processor.                
+ *                                                                 
+ * 3) The actual name of the user's res function is passed to      
+ *    IDAMalloc, and the names of the user's Gres and Gcomm      
+ *    functions are passed to IDABBDPrecAlloc.                     
+ *                                                                 
+ * 4) The pointer to the user-defined data block res_data, which   
+ *    is set through IDASetRdata is also available to the user     
+ *    in glocal and gcomm.                                         
+ *                                                                 
+ * 5) Optional outputs specific to this module are available by    
+ *    way of routines listed below. These include work space sizes 
+ *    and the cumulative number of glocal calls.  The costs        
+ *    associated with this module also include nsetups banded LU   
+ *    factorizations, nsetups gcomm calls, and nps banded          
+ *    backsolve calls, where nsetups and nps are integrator        
+ *    optional outputs.                                            
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _IBBDPRE_H
+#define _IBBDPRE_H
+
+#ifdef __cplusplus     /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+#include "nvector.h"
+#include "band.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Type : IDABBDLocalFn                                              
+ *----------------------------------------------------------------*        
+ * The user must supply a function G(t,y,y') which approximates   
+ * the function F for the system F(t,y,y') = 0, and which is      
+ * computed locally (without inter-processor communication).      
+ * (The case where G is mathematically identical to F is allowed.)
+ * The implementation of this function must have type IDABBDLocalFn. 
+ *                                                                
+ * This function takes as input the independent variable value tt,
+ * the current solution vector yy, the current solution           
+ * derivative vector yp, and a pointer to the user-defined data   
+ * block res_data.  It is to compute the local part of G(t,y,y')  
+ * and store it in the vector gval. (Providing memory for yy and  
+ * gval is handled within this preconditioner module.) It is      
+ * expected that this routine will save communicated data in work 
+ * space defined by the user, and made available to the           
+ * preconditioner function for the problem. The res_data          
+ * parameter is the same as that passed by the user to the        
+ * IDAMalloc routine.                                             
+ *                                                                
+ * An IDABBDLocalFn Gres is to return an int, defined in the same   
+ * way as for the residual function: 0 (success), +1 or -1 (fail).
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*IDABBDLocalFn)(long int Nlocal, realtype tt, 
+                             N_Vector yy, N_Vector yp, N_Vector gval, 
+                             void *res_data);
+ 
+/*
+ * -----------------------------------------------------------------
+ * Type : IDABBDCommFn                                               
+ *----------------------------------------------------------------
+ * The user may supply a function of type IDABBDCommFn which        
+ * performs all inter-processor communication necessary to        
+ * evaluate the approximate system function described above.      
+ *                                                                
+ * This function takes as input the solution vectors yy and yp,   
+ * and a pointer to the user-defined data block res_data. The     
+ * res_data parameter is the same as that passed by the user to   
+ * the IDAMalloc routine.                                         
+ *                                                                
+ * The IDABBDCommFn Gcomm is expected to save communicated data in   
+ * space defined with the structure *res_data.                    
+ *                                                                
+ * A IDABBDCommFn Gcomm returns an int value equal to 0 (success),   
+ * > 0 (recoverable error), or < 0 (unrecoverable error).         
+ *                                                                
+ * Each call to the IDABBDCommFn is preceded by a call to the system 
+ * function res with the same vectors yy and yp. Thus the         
+ * IDABBDCommFn gcomm can omit any communications done by res if     
+ * relevant to the evaluation of the local function glocal.       
+ * A NULL communication function can be passed to IDABBDPrecAlloc
+ * if all necessary communication was done by res.
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*IDABBDCommFn)(long int Nlocal, realtype tt, 
+                            N_Vector yy, N_Vector yp, 
+                            void *res_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : IDABBDPrecAlloc                                     
+ *----------------------------------------------------------------
+ * IDABBDPrecAlloc allocates and initializes an IBBDPrecData      
+ * structure to be passed to IDASpgmr (and used by                
+ * IDABBDPrecSetup and IDABBDPrecSol).                            
+ *                                                                
+ * The parameters of IDABBDPrecAlloc are as follows:              
+ *                                                                
+ * ida_mem  is a pointer to the memory blockreturned by IDACreate.
+ *                                                                
+ * Nlocal  is the length of the local block of the vectors yy etc.
+ *         on the current processor.                              
+ *                                                                
+ * mudq, mldq  are the upper and lower half-bandwidths to be used 
+ *         in the computation of the local Jacobian blocks.       
+ *                                                                
+ * mukeep, mlkeep are the upper and lower half-bandwidths to be   
+ *         used in saving the Jacobian elements in the local      
+ *         block of the preconditioner matrix PP.                 
+ *                                                                
+ * dq_rel_yy is an optional input.  It is the relative increment  
+ *         to be used in the difference quotient routine for      
+ *         Jacobian calculation in the preconditioner.  The       
+ *         default is sqrt(unit roundoff), and specified by       
+ *         passing dq_rel_yy = 0.                                 
+ *                                                                
+ * Gres    is the name of the user-supplied function G(t,y,y')  
+ *         that approximates F and whose local Jacobian blocks    
+ *         are to form the preconditioner.                        
+ *                                                                
+ * Gcomm   is the name of the user-defined function that performs 
+ *         necessary inter-processor communication for the        
+ *         execution of glocal.                                   
+ *                                                                
+ * IDABBDPrecAlloc returns the storage allocated (type *void),    
+ * or NULL if the request for storage cannot be satisfied.        
+ * -----------------------------------------------------------------
+ */
+
+void *IDABBDPrecAlloc(void *ida_mem, long int Nlocal, 
+		      long int mudq, long int mldq, 
+		      long int mukeep, long int mlkeep, 
+		      realtype dq_rel_yy, 
+		      IDABBDLocalFn Gres, IDABBDCommFn Gcomm);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : IDABBDSpgmr                                         
+ *----------------------------------------------------------------
+ * IDABBDSpgmr links the IDABBDPRE preconditioner to the IDASPGMR 
+ * linear solver. It performs the following actions:              
+ *  1) Calls the IDASPGMR specification routine and attaches the  
+ *     IDASPGMR linear solver to the IDA solver;                  
+ *  2) Sets the preconditioner data structure for IDASPGMR        
+ *  3) Sets the preconditioner setup routine for IDASPGMR         
+ *  4) Sets the preconditioner solve routine for IDASPGMR         
+ *                                                                
+ * Its first 2 arguments are the same as for IDASpgmr (see        
+ * idaspgmr.h). The last argument is the pointer to the IDABBDPRE 
+ * memory block returned by IDABBDPrecAlloc.                      * 
+ * Note that the user need not call IDASpgmr anymore.             
+ *                                                                
+ * Possible return values are:                                    
+ *    IDASPGMR_SUCCESS    if successful                            
+ *    IDASPGMR_MEM_NULL   if the ida memory was NULL
+ *    IDASPGMR_MEM_FAIL   if there was a memory allocation failure 
+ *    IDASPGMR_ILL_INPUT  if there was illegal input.      
+ *    IDA_PDATA_NULL      if p_data was NULL.
+ * -----------------------------------------------------------------
+ */
+
+int IDABBDSpgmr(void *ida_mem, int maxl, void *bbd_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : IDABBDPrecReInit                                    
+ *----------------------------------------------------------------
+ * IDABBDPrecReInit re-initializes the IDABBDPRE module when      
+ * solving a sequence of problems of the same size with           
+ * IDASPGMR/IDABBDPRE provided there is no change in Nlocal,      
+ * mukeep, or mlkeep.  After solving one problem, and after       
+ * calling IDAReInit to re-initialize the integrator for a        
+ * subsequent problem, call IDABBDPrecReInit.                     
+ * Then call IDAReInitSpgmr or IDASpgmr, if necessary, to         
+ * re-initialize the Spgmr linear solver, depending on changes    
+ * made in its input parameters, before calling IDASolve.         
+ *                                                                
+ * The first argument to IDABBDPrecReInit must be the pointer     
+ * bbd_data that was returned by IDABBDPrecAlloc.  All other        
+ * arguments have the same names and meanings as those of         
+ * IDABBDPrecAlloc.                                               
+ *                                                                
+ * The return value of IDABBDPrecReInit is 0, indicating success. 
+ * -----------------------------------------------------------------
+ */
+
+int IDABBDPrecReInit(void *bbd_data, 
+		     long int mudq, long int mldq,
+		     realtype dq_rel_yy, 
+		     IDABBDLocalFn Gres, IDABBDCommFn Gcomm); 
+
+/*
+ * -----------------------------------------------------------------
+ * Function : IDABBDPrecFree                                      
+ *----------------------------------------------------------------
+ * IDABBDPrecFree frees the memory block bbd_data allocated by the  
+ * call to IDABBDPrecAlloc.                                       
+ * -----------------------------------------------------------------
+ */
+
+void IDABBDPrecFree(void *bbd_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional outputs for IDABBDPRE                                 
+ *----------------------------------------------------------------
+ *                                                                
+ * IDABBDPrecGetWorkSpace returns the real and integer workspace for    
+ *    IBBDPRE.                                                    
+ * IDABBDPrecGetNumGfnEvals returns the number of calls to the    
+ *    uer Gres function.                                        
+ *                                                                
+ * -----------------------------------------------------------------
+ */
+
+int IDABBDPrecGetWorkSpace(void *bbd_data, long int *lenrwBBDP, long int *leniwBBDP);
+int IDABBDPrecGetNumGfnEvals(void *bbd_data, long int *ngevalsBBDP);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/ida/include/idadense.h b/Win32/WinCVODE/sundials/ida/include/idadense.h
new file mode 100644
index 0000000..a5c32d2
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/include/idadense.h
@@ -0,0 +1,196 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:41:54 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/ida/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the IDA/IDAS dense linear solver
+ * module, IDADENSE.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _IDADENSE_H
+#define _IDADENSE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "dense.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Type : IDADenseJacFn
+ * -----------------------------------------------------------------
+ * A dense Jacobian approximation function djac must have the     
+ * prototype given below. Its parameters are:                     
+ *                                                                
+ * Neq is the problem size, and length of all vector arguments.   
+ *                                                                
+ * tt  is the current value of the independent variable t.        
+ *                                                                
+ * yy  is the current value of the dependent variable vector,     
+ *     namely the predicted value of y(t).                     
+ *                                                                
+ * yp  is the current value of the derivative vector y',          
+ *     namely the predicted value of y'(t).                    
+ *                                                                
+ * rr  is the residual vector F(tt,yy,yp).                     
+ *                                                                
+ * c_j is the scalar in the system Jacobian, proportional to 1/hh.
+ *                                                                
+ * jac_data  is a pointer to user Jacobian data - the same as the    
+ *     jdata parameter passed to IDADense.                     
+ *                                                                
+ * Jac is the dense matrix (of type DenseMat) to be loaded by  
+ *     an IDADenseJacFn routine with an approximation to the   
+ *     system Jacobian matrix                                  
+ *            J = dF/dy + c_j*dF/dy'                            
+ *     at the given point (t,y,y'), where the DAE system is    
+ *     given by F(t,y,y') = 0.  Jac is preset to zero, so only 
+ *     the nonzero elements need to be loaded.  See note below.
+ *                                                                
+ * tmp1, tmp2, tmp3 are pointers to memory allocated for          
+ *     N_Vectors which can be used by an IDADenseJacFn routine 
+ *     as temporary storage or work space.                     
+ *                                                                
+ * NOTE: The following are two efficient ways to load Jac:         
+ * (1) (with macros - no explicit data structure references)      
+ *     for (j=0; j < Neq; j++) {                                  
+ *       col_j = DENSE_COL(Jac,j);                                 
+ *       for (i=0; i < Neq; i++) {                                
+ *         generate J_ij = the (i,j)th Jacobian element           
+ *         col_j[i] = J_ij;                                       
+ *       }                                                        
+ *     }                                                          
+ * (2) (without macros - explicit data structure references)      
+ *     for (j=0; j < Neq; j++) {                                  
+ *       col_j = (Jac->data)[j];                                   
+ *       for (i=0; i < Neq; i++) {                                
+ *         generate J_ij = the (i,j)th Jacobian element           
+ *         col_j[i] = J_ij;                                       
+ *       }                                                        
+ *     }                                                          
+ * A third way, using the DENSE_ELEM(A,i,j) macro, is much less   
+ * efficient in general.  It is only appropriate for use in small 
+ * problems in which efficiency of access is NOT a major concern. 
+ *                                                                
+ * NOTE: If the user's Jacobian routine needs other quantities,   
+ *     they are accessible as follows: hcur (the current stepsize)
+ *     and ewt (the error weight vector) are accessible through   
+ *     IDAGetCurrentStep and IDAGetErrWeights, respectively (see  
+ *     ida.h). The unit roundoff is available as                  
+ *     UNIT_ROUNDOFF defined in sundialstypes.h                   
+ *                                                                
+ * The IDADenseJacFn should return                                
+ *     0 if successful,                                           
+ *     a positive int if a recoverable error occurred, or         
+ *     a negative int if a nonrecoverable error occurred.         
+ * In the case of a recoverable error return, the integrator will 
+ * attempt to recover by reducing the stepsize (which changes cj).
+ * -----------------------------------------------------------------
+ */
+  
+typedef int (*IDADenseJacFn)(long int Neq, realtype tt, 
+                             N_Vector yy, N_Vector yp, N_Vector rr,
+                             realtype c_j, void *jac_data, 
+                             DenseMat Jac, 
+                             N_Vector tmp1, N_Vector tmp2, 
+                             N_Vector tmp3);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : IDADense
+ * -----------------------------------------------------------------
+ * A call to the IDADense function links the main integrator      
+ * with the IDADENSE linear solver module.                        
+ *                                                                
+ * ida_mem is the pointer to integrator memory returned by        
+ *     IDACreate.                                                 
+ *                                                                
+ * Neq  is the problem size                                       
+ *                                                                
+ * IDADense returns:                                              
+ *     IDADENSE_SUCCESS   = 0  if successful                              
+ *     IDADENSE_LMEM_FAIL = -1 if there was a memory allocation failure   
+ *     IDADENSE_ILL_INPUT = -2 if NVECTOR found incompatible           
+ *                                                                
+ * NOTE: The dense linear solver assumes a serial implementation  
+ *       of the NVECTOR package. Therefore, IDADense will first
+ *       test for a compatible N_Vector internal representation
+ *       by checking that the functions N_VGetArrayPointer and
+ *       N_VSetArrayPointer exist.
+ * -----------------------------------------------------------------
+ */
+
+int IDADense(void *ida_mem, long int Neq); 
+
+/*
+ * -----------------------------------------------------------------
+ * Optional inputs to the IDADENSE linear solver
+ * -----------------------------------------------------------------
+ * IDADenseSetJacFn specifies the dense Jacobian approximation    
+ *        routine to be used. A user-supplied djac routine must   
+ *        be of type IDADenseJacFn.                               
+ *        By default, a difference quotient routine IDADenseDQJac,
+ *        supplied with this solver is used.                      
+ *        It also specifies a pointer to user data which is   
+ *        passed to the djac routine every time it is called.     
+ *                                                                
+ * The return value of IDADenseSet* is one of:
+ *    IDADENSE_SUCCESS   if successful
+ *    IDADENSE_MEM_NULL  if the ida memory was NULL
+ *    IDaDENSE_LMEM_NULL if the idadense memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int IDADenseSetJacFn(void *ida_mem, IDADenseJacFn djac, void *jac_data);
+ 
+/*
+ * -----------------------------------------------------------------
+ * Optional outputs from the IDADENSE linear solver
+ * -----------------------------------------------------------------
+ * IDADenseGetWorkSpace returns the real and integer workspace used 
+ *     by IDADENSE.                                                  
+ * IDADenseGetNumJacEvals returns the number of calls made to the 
+ *     Jacobian evaluation routine djac.                          
+ * IDADenseGetNumResEvals returns the number of calls to the user 
+ *     res routine due to finite difference Jacobian evaluation.  
+ * IDADenseGetLastFlag returns the last error flag set by any of
+ *     the IDADENSE interface functions.
+ *
+ * The return value of IDADenseGet* is one of:
+ *    IDADENSE_SUCCESS   if successful
+ *    IDADENSE_MEM_NULL  if the ida memory was NULL
+ *    IDaDENSE_LMEM_NULL if the idadense memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int IDADenseGetWorkSpace(void *ida_mem, long int *lenrwD, long int *leniwD);
+int IDADenseGetNumJacEvals(void *ida_mem, long int *njevalsD);
+int IDADenseGetNumResEvals(void *ida_mem, long int *nrevalsD);
+int IDADenseGetLastFlag(void *ida_mem, int *flag);
+
+/* IDADENSE return values */
+
+#define IDADENSE_SUCCESS    0
+#define IDADENSE_MEM_NULL  -1 
+#define IDADENSE_LMEM_NULL -2 
+#define IDADENSE_ILL_INPUT -3
+#define IDADENSE_MEM_FAIL  -4
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/ida/include/idaspgmr.h b/Win32/WinCVODE/sundials/ida/include/idaspgmr.h
new file mode 100644
index 0000000..e9eab06
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/include/idaspgmr.h
@@ -0,0 +1,335 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:41:54 $
+ * ----------------------------------------------------------------- 
+ * Programmers: Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California  
+ * Produced at the Lawrence Livermore National Laboratory
+ * All rights reserved
+ * For details, see sundials/ida/LICENSE
+ * -----------------------------------------------------------------
+ * This is the header file for the Scaled Preconditioned GMRES     
+ * linear solver module, IDASPGMR.                                 
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _IDASPGMR_H
+#define _IDASPGMR_H
+
+#ifdef __cplusplus     /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+#include "sundialstypes.h"
+#include "spgmr.h"
+#include "nvector.h"
+
+/*
+ * -----------------------------------------------------------------
+ *                                                                
+ * Type : IDASpgmrPrecSetupFn                                     
+ *----------------------------------------------------------------
+ * The optional user-supplied functions PrecSetup and PrecSolve   
+ * together must define the left preconditoner matrix P           
+ * approximating the system Jacobian matrix                       
+ *    J = dF/dy + c_j*dF/dy'                                      
+ * (where the DAE system is F(t,y,y') = 0), and solve the linear  
+ * systems P z = r.   PrecSetup is to do any necessary setup      
+ * operations, and PrecSolve is to compute the solution of        
+ * P z = r.                                                       
+ *                                                                
+ * The preconditioner setup function PrecSetup is to evaluate and 
+ * preprocess any Jacobian-related data needed by the             
+ * preconditioner solve function PrecSolve.  This might include   
+ * forming a crude approximate Jacobian, and performing an LU     
+ * factorization on it.  This function will not be called in      
+ * advance of every call to PrecSolve, but instead will be called 
+ * only as often as necessary to achieve convergence within the   
+ * Newton iteration.  If the PrecSolve function needs no          
+ * preparation, the PrecSetup function can be NULL.               
+ *                                                                
+ * Each call to the PrecSetup function is preceded by a call to   
+ * the system function res with the same (t,y,y') arguments.      
+ * Thus the PrecSetup function can use any auxiliary data that is 
+ * computed and saved by the res function and made accessible     
+ * to PrecSetup.                                                  
+ *                                                                
+ * A preconditioner setup function PrecSetup must have the        
+ * prototype given below.  Its parameters are as follows:         
+ *                                                                
+ * tt  is the current value of the independent variable t.        
+ *                                                                
+ * yy  is the current value of the dependent variable vector,     
+ *     namely the predicted value of y(t).                     
+ *                                                                
+ * yp  is the current value of the derivative vector y',          
+ *     namely the predicted value of y'(t).                    
+ *                                                                
+ * rr  is the current value of the residual vector F(t,y,y').     
+ *                                                                
+ * c_j is the scalar in the system Jacobian, proportional to 1/hh.
+ *                                                                
+ * prec_data is a pointer to user preconditioner data - the same as  
+ *     the pdata parameter passed to IDASpgmr.                 
+ *                                                                
+ * tmp1, tmp2, tmp3 are pointers to vectors of type N_Vector      
+ *     which can be used by an IDASpgmrPrecSetupFn routine            
+ *     as temporary storage or work space.                            
+ *                                                                
+ * NOTE: If the user's preconditioner needs other quantities,     
+ *     they are accessible as follows: hcur (the current stepsize)
+ *     and ewt (the error weight vector) are accessible through   
+ *     IDAGetCurrentStep and IDAGetErrWeights, respectively (see  
+ *     ida.h). The unit roundoff is available as                  
+ *     UNIT_ROUNDOFF defined in sundialstypes.h                   
+ *                                                                
+ * The IDASpgmrPrecSetupFn should return                          
+ *     0 if successful,                                           
+ *     a positive int if a recoverable error occurred, or         
+ *     a negative int if a nonrecoverable error occurred.         
+ * In the case of a recoverable error return, the integrator will 
+ * attempt to recover by reducing the stepsize (which changes cj).
+ * -----------------------------------------------------------------
+ */                                                                
+  
+typedef int (*IDASpgmrPrecSetupFn)(realtype tt, 
+                                   N_Vector yy, N_Vector yp, N_Vector rr, 
+                                   realtype c_j, void *prec_data,
+                                   N_Vector tmp1, N_Vector tmp2, 
+                                   N_Vector tmp3);
+
+/*
+ * -----------------------------------------------------------------
+ *                                                                
+ * Type : IDASpgmrPrecSolveFn                                     
+ *----------------------------------------------------------------
+ * The optional user-supplied function PrecSolve must compute a   
+ * solution to the linear system P z = r, where P is the left     
+ * preconditioner defined by the user.  If no preconditioning     
+ * is desired, pass NULL for PrecSolve to IDASpgmr.               
+ *                                                                
+ * A preconditioner solve function PrecSolve must have the        
+ * prototype given below.  Its parameters are as follows:         
+ *                                                                
+ * tt is the current value of the independent variable t.        
+ *                                                                
+ * yy is the current value of the dependent variable vector y.   
+ *                                                                
+ * yp is the current value of the derivative vector y'.          
+ *                                                                
+ * rr is the current value of the residual vector F(t,y,y').     
+ *                                                                
+ * rvec is the input right-hand side vector r.                  
+ *                                                                
+ * zvec is the computed solution vector z.                      
+ *                                                                
+ * c_j is the scalar in the system Jacobian, proportional to 1/hh.
+ *                                                                
+ * delta is an input tolerance for use by PrecSolve if it uses an
+ *     iterative method in its solution.   In that case, the   
+ *     the residual vector r - P z of the system should be     
+ *     made less than delta in weighted L2 norm, i.e.,         
+ *            sqrt [ Sum (Res[i]*ewt[i])^2 ] < delta .            
+ *     Note: the error weight vector ewt can be obtained       
+ *     through a call to the routine IDAGetErrWeights.         
+ *                                                                
+ * prec_data is a pointer to user preconditioner data - the same as  
+ *     the pdata parameter passed to IDASpgmr.                 
+ *                                                                
+ * tmp is an N_Vector which can be used by the PrecSolve         
+ *     routine as temporary storage or work space.                    
+ *                                                                
+ *                                                                
+ * The IDASpgmrPrecSolveFn should return                          
+ *     0 if successful,                                           
+ *     a positive int if a recoverable error occurred, or         
+ *     a negative int if a nonrecoverable error occurred.         
+ * Following a recoverable error, the integrator will attempt to  
+ * recover by updating the preconditioner and/or reducing the     
+ * stepsize.                                                      
+ *                                                                
+ * -----------------------------------------------------------------
+ */
+  
+typedef int (*IDASpgmrPrecSolveFn)(realtype tt, 
+                                   N_Vector yy, N_Vector yp, N_Vector rr, 
+                                   N_Vector rvec, N_Vector zvec,
+                                   realtype c_j, realtype delta, void *prec_data,
+                                   N_Vector tmp);
+
+/*
+ * -----------------------------------------------------------------
+ *                                                                
+ * Type : IDASpgmrJacTimesVecFn                                   
+ *----------------------------------------------------------------
+ * The user-supplied function jtimes is to generate the product   
+ * J*v for given v, where J is the Jacobian matrix                
+ *    J = dF/dy + c_j*dF/dy'                                      
+ *  or an approximation to it, and v is a given vector.           
+ * It should return 0 if successful and a nonzero int otherwise.  
+ *                                                                
+ * A function jtimes must have the prototype given below. Its     
+ * parameters are as follows:                                     
+ *                                                                
+ *   tt   is the current value of the independent variable.       
+ *                                                                
+ *   yy   is the current value of the dependent variable vector,  
+ *        namely the predicted value of y(t).                     
+ *                                                                
+ *   yp   is the current value of the derivative vector y',       
+ *        namely the predicted value of y'(t).                    
+ *                                                                
+ *   rr   is the current value of the residual vector F(t,y,y').  
+ *                                                                
+ *   v    is the N_Vector to be multiplied by J.                  
+ *                                                                
+ *   Jv   is the output N_Vector containing J*v.                  
+ *                                                                
+ *   c_j  is the scalar in the system Jacobian, proportional      
+ *        to 1/hh.                                                
+ *                                                                
+ *   jac_data is a pointer to user Jacobian data, the same as the 
+ *        pointer passed to CVSpgmr.                              
+ *                                                                
+ *   tmp1, tmp2 are two N_Vectors which can be used by Jtimes for 
+ *         work space.                                            
+ *                                                                
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*IDASpgmrJacTimesVecFn)(realtype tt,
+                                     N_Vector yy, N_Vector yp, N_Vector rr,
+                                     N_Vector v, N_Vector Jv, 
+                                     realtype c_j, void *jac_data, 
+                                     N_Vector tmp1, N_Vector tmp2);
+
+/*
+ * -----------------------------------------------------------------
+ *                                                                
+ * Function : IDASpgmr                                            
+ * -----------------------------------------------------------------
+ * A call to the IDASpgmr function links the main integrator with 
+ * the IDASPGMR linear solver module.  Its parameters are as      
+ * follows:                                                       
+ *                                                                
+ * IDA_mem   is the pointer to memory block returned by IDACreate.
+ *                                                                
+ * maxl      is the maximum Krylov subspace dimension, an         
+ *           optional input.  Pass 0 to use the default value,    
+ *           MIN(Neq, 5).  Otherwise pass a positive integer.     
+ *                                                                
+ * The return values of IDASpgmr are:                             
+ *    IDASPGMR_SUCCESS    if successful                            
+ *    IDASPGMR_MEM_NULL   if the ida memory was NULL
+ *    IDASPGMR_MEM_FAIL   if there was a memory allocation failure 
+ *    IDASPGMR_ILL_INPUT  if there was illegal input.              
+ *                                                                
+ * -----------------------------------------------------------------
+ */                                                                
+
+int IDASpgmr(void *ida_mem, int maxl);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional inputs to the IDASPGMR linear solver                  
+ * -----------------------------------------------------------------
+ *                                                                
+ * IDASpgmrSetPreconditioner specifies the PrecSetup and PrecSolve 
+ *           functions, as well as a pointer to user preconditioner 
+ *           data. This pointer is passed to PrecSetup and PrecSolve
+ *           every time these routines are called.
+ *           Default is NULL for al three arguments.
+ * IDASpgmrSetJacTimesVecFn specifies the jtimes function.        
+ *           Default is to use an internal finite difference      
+ *           approximation routine. It also specifies a pointer 
+ *           to user Jacobian data. This pointer is passed to jtimes 
+ *           every time the jtimes routine is called.                              
+ * IDASpgmrSetGSType specifies the type of Gram-Schmidt           
+ *           orthogonalization to be used. This must be one of    
+ *           the two enumeration constants MODIFIED_GS or         
+ *           CLASSICAL_GS defined in iterativ.h. These correspond 
+ *           to using modified Gram-Schmidt and classical         
+ *           Gram-Schmidt, respectively.                          
+ *           Default value is MODIFIED_GS.                        
+ * IDASpgmrSetMaxRestarts specifies the maximum number of restarts
+ *           to be used in the GMRES algorithm.  maxrs must be a  
+ *           non-negative integer.  Pass 0 to specify no restarts.
+ *           Default is 5.                                        
+ * IDASpgmrSetEpsLin specifies the factor in the linear iteration 
+ *           convergence test constant.                           
+ *           Default is 0.05                                      
+ * IDASpgmrSetIncrementFactor specifies a factor in the increments
+ *           to yy used in the difference quotient approximations 
+ *           to matrix-vector products Jv.                        
+ *           Default is 1.0                                       
+ *                                                                
+ * The return value of IDASpgmrSet* is one of:
+ *    IDASPGMR_SUCCESS   if successful
+ *    IDASPGMR_MEM_NULL  if the ida memory was NULL
+ *    IDASPGMR_LMEM_NULL if the idaspgmr memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int IDASpgmrSetPreconditioner(void *ida_mem, IDASpgmrPrecSetupFn pset, 
+                              IDASpgmrPrecSolveFn psolve, void *prec_data);
+int IDASpgmrSetJacTimesVecFn(void *ida_mem, IDASpgmrJacTimesVecFn jtimes,
+                             void *jac_data);
+int IDASpgmrSetGSType(void *ida_mem, int gstype);
+int IDASpgmrSetMaxRestarts(void *ida_mem, int maxrs);
+int IDASpgmrSetEpsLin(void *ida_mem, realtype eplifac);
+int IDASpgmrSetIncrementFactor(void *ida_mem, realtype dqincfac);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional outputs from the IDASPGMR linear solver               
+ *----------------------------------------------------------------
+ *                                                                
+ * IDASpgmrGetWorkSpace returns the real and integer workspace used 
+ *     by IDASPGMR.                                                  
+ * IDASpgmrGetNumPrecEvals returns the number of preconditioner   
+ *     evaluations, i.e. the number of calls made to PrecSetup    
+ *     with jok==FALSE.                                           
+ * IDASpgmrGetNumPrecSolves returns the number of calls made to   
+ *     PrecSolve.                                                 
+ * IDASpgmrGetNumLinIters returns the number of linear iterations.
+ * IDASpgmrGetNumConvFails returns the number of linear           
+ *     convergence failures.                                      
+ * IDASpgmrGetNumJtimesEvals returns the number of calls to jtimes
+ * IDASpgmrGetNumResEvals returns the number of calls to the user 
+ *     res routine due to finite difference Jacobian times vector 
+ *     evaluation.                                                
+ * IDASpgmrGetLastFlag returns the last error flag set by any of
+ *     the IDASPGMR interface functions.
+ *                                                                
+ * The return value of IDASpgmrGet* is one of:
+ *    IDASPGMR_SUCCESS   if successful
+ *    IDASPGMR_MEM_NULL  if the ida memory was NULL
+ *    IDASPGMR_LMEM_NULL if the idaspgmr memory was NULL
+ * -----------------------------------------------------------------
+ */                                                                
+
+int IDASpgmrGetWorkSpace(void *ida_mem, long int *lenrwSG, long int *leniwSG);
+int IDASpgmrGetNumPrecEvals(void *ida_mem, long int *npevals);
+int IDASpgmrGetNumPrecSolves(void *ida_mem, long int *npsolves);
+int IDASpgmrGetNumLinIters(void *ida_mem, long int *nliters);
+int IDASpgmrGetNumConvFails(void *ida_mem, long int *nlcfails);
+int IDASpgmrGetNumJtimesEvals(void *ida_mem, long int *njvevals);
+int IDASpgmrGetNumResEvals(void *ida_mem, long int *nrevalsSG); 
+int IDASpgmrGetLastFlag(void *ida_mem, int *flag);
+
+/* IDASPGMR return values */
+
+#define IDASPGMR_SUCCESS     0
+#define IDASPGMR_MEM_NULL   -1 
+#define IDASPGMR_LMEM_NULL  -2 
+#define IDASPGMR_ILL_INPUT  -3
+#define IDASPGMR_MEM_FAIL   -4
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/ida/source/Makefile b/Win32/WinCVODE/sundials/ida/source/Makefile
new file mode 100644
index 0000000..1e66b9f
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/source/Makefile
@@ -0,0 +1,96 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:42:25 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/ida/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for IDA module
+#
+# ida/source/Makefile.  Generated from Makefile.in by configure.
+# -----------------------------------------------------------------
+
+SHELL = /bin/bash
+
+srcdir       = .
+builddir     = .
+abs_builddir = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials/ida/source
+top_builddir = ../../
+prefix       = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials
+exec_prefix  = ${prefix}
+includedir   = ${prefix}/include
+libdir       = ${exec_prefix}/lib
+
+INSTALL        = /usr/bin/install -c
+INSTALL_LIB    = ${INSTALL}
+INSTALL_HEADER = ${INSTALL} -m 644
+
+LIBTOOL      = $(SHELL) $(top_builddir)/libtool
+LIBTOOL_DEPS = config/ltmain.sh
+
+CPP      = /usr/bin/cc -E
+CPPFLAGS = 
+CC       = /usr/bin/cc
+CFLAGS   = -g -O2
+LDFLAGS  = 
+LIBS     = -lm 
+
+SHARED_INC_DIR   = $(srcdir)/../../shared/include
+IDA_INC_DIR      = $(srcdir)/../include
+
+IDA_LIB       = libsundials_ida.la
+IDA_LIB_FILES = ida.lo idaic.lo idaio.lo idadense.lo idaband.lo idaspgmr.lo idabbdpre.lo
+
+OBJECT_FILES = ida.o idaic.o idaio.o idadense.o idaband.o idaspgmr.o idabbdpre.o
+
+all: update $(IDA_LIB_FILES)
+
+update:
+	${INSTALL_HEADER} ${top_builddir}/config/sundials_config.h ${builddir}
+
+install: update $(IDA_LIB_FILES)
+	$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(IDA_LIB) $(IDA_LIB_FILES) -rpath $(libdir) $(LDFLAGS) $(LIBS) -avoid-version
+	$(LIBTOOL) --mode=install $(INSTALL_LIB) $(IDA_LIB) $(libdir)
+	$(INSTALL_HEADER) $(IDA_INC_DIR)/ida.h $(includedir)
+	$(INSTALL_HEADER) $(IDA_INC_DIR)/idadense.h $(includedir)
+	$(INSTALL_HEADER) $(IDA_INC_DIR)/idaband.h $(includedir)
+	$(INSTALL_HEADER) $(IDA_INC_DIR)/idaspgmr.h $(includedir)
+	$(INSTALL_HEADER) $(IDA_INC_DIR)/idabbdpre.h $(includedir)
+
+clean:
+	$(LIBTOOL) --mode=clean rm -f $(IDA_LIB)
+	rm -f $(IDA_LIB_FILES)
+	rm -f $(OBJECT_FILES)
+	rm -f sundials_config.h
+
+uninstall: clean
+	$(LIBTOOL) --mode=uninstall rm -f $(libdir)/$(IDA_LIB)
+	rm -f $(includedir)/ida.h
+	rm -f $(includedir)/idadense.h
+	rm -f $(includedir)/idaband.h
+	rm -f $(includedir)/idaspgmr.h
+	rm -f $(includedir)/idabbdpre.h
+
+ida.lo: $(srcdir)/ida.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(IDA_INC_DIR) $(CFLAGS) -c $(srcdir)/ida.c
+idaic.lo: $(srcdir)/idaic.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(IDA_INC_DIR) $(CFLAGS) -c $(srcdir)/idaic.c
+idaio.lo: $(srcdir)/idaio.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(IDA_INC_DIR) $(CFLAGS) -c $(srcdir)/idaio.c
+idadense.lo: $(srcdir)/idadense.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(IDA_INC_DIR) $(CFLAGS) -c $(srcdir)/idadense.c
+idaband.lo: $(srcdir)/idaband.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(IDA_INC_DIR) $(CFLAGS) -c $(srcdir)/idaband.c
+idaspgmr.lo: $(srcdir)/idaspgmr.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(IDA_INC_DIR) $(CFLAGS) -c $(srcdir)/idaspgmr.c
+idabbdpre.lo: $(srcdir)/idabbdpre.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(IDA_INC_DIR) $(CFLAGS) -c $(srcdir)/idabbdpre.c
+
+libtool: $(top_builddir)/$(LIBTOOL_DEPS)
+	@cd $(top_builddir) ;                 \
+	 $(SHELL) ./config.status --recheck ; \
+	 cd $(abs_builddir)
diff --git a/Win32/WinCVODE/sundials/ida/source/Makefile.in b/Win32/WinCVODE/sundials/ida/source/Makefile.in
new file mode 100644
index 0000000..7cc1769
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/source/Makefile.in
@@ -0,0 +1,96 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:42:25 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/ida/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for IDA module
+#
+# @configure_input@
+# -----------------------------------------------------------------
+
+SHELL = @SHELL@
+
+srcdir       = @srcdir@
+builddir     = @builddir@
+abs_builddir = @abs_builddir@
+top_builddir = @top_builddir@
+prefix       = @prefix@
+exec_prefix  = @exec_prefix@
+includedir   = @includedir@
+libdir       = @libdir@
+
+INSTALL        = @INSTALL@
+INSTALL_LIB    = @INSTALL_PROGRAM@
+INSTALL_HEADER = @INSTALL_DATA@
+
+LIBTOOL      = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+
+CPP      = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CC       = @CC@
+CFLAGS   = @CFLAGS@
+LDFLAGS  = @LDFLAGS@
+LIBS     = @LIBS@
+
+SHARED_INC_DIR   = $(srcdir)/../../shared/include
+IDA_INC_DIR      = $(srcdir)/../include
+
+IDA_LIB       = libsundials_ida.la
+IDA_LIB_FILES = ida.lo idaic.lo idaio.lo idadense.lo idaband.lo idaspgmr.lo idabbdpre.lo
+
+OBJECT_FILES = ida.o idaic.o idaio.o idadense.o idaband.o idaspgmr.o idabbdpre.o
+
+all: update $(IDA_LIB_FILES)
+
+update:
+	${INSTALL_HEADER} ${top_builddir}/config/sundials_config.h ${builddir}
+
+install: update $(IDA_LIB_FILES)
+	$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(IDA_LIB) $(IDA_LIB_FILES) -rpath $(libdir) $(LDFLAGS) $(LIBS) -avoid-version
+	$(LIBTOOL) --mode=install $(INSTALL_LIB) $(IDA_LIB) $(libdir)
+	$(INSTALL_HEADER) $(IDA_INC_DIR)/ida.h $(includedir)
+	$(INSTALL_HEADER) $(IDA_INC_DIR)/idadense.h $(includedir)
+	$(INSTALL_HEADER) $(IDA_INC_DIR)/idaband.h $(includedir)
+	$(INSTALL_HEADER) $(IDA_INC_DIR)/idaspgmr.h $(includedir)
+	$(INSTALL_HEADER) $(IDA_INC_DIR)/idabbdpre.h $(includedir)
+
+clean:
+	$(LIBTOOL) --mode=clean rm -f $(IDA_LIB)
+	rm -f $(IDA_LIB_FILES)
+	rm -f $(OBJECT_FILES)
+	rm -f sundials_config.h
+
+uninstall: clean
+	$(LIBTOOL) --mode=uninstall rm -f $(libdir)/$(IDA_LIB)
+	rm -f $(includedir)/ida.h
+	rm -f $(includedir)/idadense.h
+	rm -f $(includedir)/idaband.h
+	rm -f $(includedir)/idaspgmr.h
+	rm -f $(includedir)/idabbdpre.h
+
+ida.lo: $(srcdir)/ida.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(IDA_INC_DIR) $(CFLAGS) -c $(srcdir)/ida.c
+idaic.lo: $(srcdir)/idaic.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(IDA_INC_DIR) $(CFLAGS) -c $(srcdir)/idaic.c
+idaio.lo: $(srcdir)/idaio.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(IDA_INC_DIR) $(CFLAGS) -c $(srcdir)/idaio.c
+idadense.lo: $(srcdir)/idadense.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(IDA_INC_DIR) $(CFLAGS) -c $(srcdir)/idadense.c
+idaband.lo: $(srcdir)/idaband.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(IDA_INC_DIR) $(CFLAGS) -c $(srcdir)/idaband.c
+idaspgmr.lo: $(srcdir)/idaspgmr.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(IDA_INC_DIR) $(CFLAGS) -c $(srcdir)/idaspgmr.c
+idabbdpre.lo: $(srcdir)/idabbdpre.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(IDA_INC_DIR) $(CFLAGS) -c $(srcdir)/idabbdpre.c
+
+libtool: $(top_builddir)/$(LIBTOOL_DEPS)
+	@cd $(top_builddir) ;                 \
+	 $(SHELL) ./config.status --recheck ; \
+	 cd $(abs_builddir)
diff --git a/Win32/WinCVODE/sundials/ida/source/ida.c b/Win32/WinCVODE/sundials/ida/source/ida.c
new file mode 100644
index 0000000..d256730
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/source/ida.c
@@ -0,0 +1,2225 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:42:25 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/ida/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the main IDA solver.
+ * It is independent of the linear solver in use.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "ida_impl.h"
+#include "sundialsmath.h"
+
+/*
+ * -----------------------------------------------------------------
+ * private constants
+ * -----------------------------------------------------------------
+ */
+
+#define ZERO       RCONST(0.0)    /* real 0.0    */
+#define HALF       RCONST(0.5)    /* real 0.5    */
+#define QUARTER    RCONST(0.25)   /* real 0.25   */
+#define TWOTHIRDS  RCONST(0.667)  /* real 2/3    */
+#define ONE        RCONST(1.0)    /* real 1.0    */
+#define ONEPT5     RCONST(1.5)    /* real 1.5    */
+#define TWO        RCONST(2.0)    /* real 2.0    */
+#define TEN        RCONST(10.0)   /* real 10.0   */
+#define TWELVE     RCONST(12.0)   /* real 12.0   */
+#define TWENTY     RCONST(20.0)   /* real 20.0   */
+#define HUNDRED    RCONST(100.0)  /* real 100.0  */
+#define PT9        RCONST(0.9)    /* real 0.9    */
+#define PT99       RCONST(0.99)   /* real 0.99   */
+#define PT1        RCONST(0.1)    /* real 0.1    */
+#define PT01       RCONST(0.01)   /* real 0.01   */
+#define PT001      RCONST(0.001)  /* real 0.001  */
+#define PT0001     RCONST(0.0001) /* real 0.0001 */
+
+/*
+ * -----------------------------------------------------------------
+ * default constants
+ * -----------------------------------------------------------------
+ */
+
+#define MXNCF           10  /* max number of convergence failures allowed */
+#define MXNEF           10  /* max number of error test failures allowed  */
+#define MAXNH            5  /* max. number of h tries in IC calc. */
+#define MAXNJ            4  /* max. number of J tries in IC calc. */
+#define MAXNI           10  /* max. Newton iterations in IC calc. */
+#define EPCON RCONST(0.33)  /* Newton convergence test constant */
+
+/*
+ * -----------------------------------------------------------------
+ * routine-specific constants
+ * -----------------------------------------------------------------
+ */
+
+/* IDAStep control constants */
+
+#define PREDICT_AGAIN    20
+
+/* IDANewtonIter constants */
+
+#define MAXIT    4
+#define RATEMAX  RCONST(0.9)
+#define XRATE    RCONST(0.25)        
+
+/* Return values for lower level routines used by IDASolve */
+
+#define IDA_RES_RECVR    +1
+#define IDA_LSETUP_RECVR +2
+#define IDA_LSOLVE_RECVR +3
+
+#define IDA_NCONV_RECVR  +4
+#define IDA_CONSTR_RECVR +5
+#define CONTINUE_STEPS   +99
+
+/* IDACompleteStep constants */
+
+#define UNSET    -1
+#define LOWER     1 
+#define RAISE     2 
+#define MAINTAIN  3
+
+/* IDATestError constants */
+
+#define ERROR_TEST_FAIL +7
+
+/* Macro: loop */
+
+#define loop for(;;)
+
+/*
+ * -----------------------------------------------------------------
+ * private helper function prototypes
+ * -----------------------------------------------------------------
+ */
+
+static booleantype IDACheckNvector(N_Vector tmpl);
+
+static booleantype IDAAllocVectors(IDAMem IDA_mem, N_Vector tmpl, int tol);
+static void IDAFreeVectors(IDAMem IDA_mem);
+
+realtype IDAWrmsNorm(IDAMem IDA_mem, N_Vector x, N_Vector w, 
+                     booleantype mask);
+int IDAInitialSetup(IDAMem IDA_mem);
+
+static int IDAEwtSetSS(N_Vector ycur, N_Vector weight, IDAMem IDA_mem);
+static int IDAEwtSetSV(N_Vector ycur, N_Vector weight, IDAMem IDA_mem);
+
+static int IDAStopTest1(IDAMem IDA_mem, realtype tout,realtype *tret, 
+                        N_Vector yret, N_Vector ypret, int itask);
+static int IDAStopTest2(IDAMem IDA_mem, realtype tout, realtype *tret, 
+                        N_Vector yret, N_Vector ypret, int itask);
+static int IDAHandleFailure(IDAMem IDA_mem, int sflag);
+
+static int IDAStep(IDAMem IDA_mem);
+static void IDASetCoeffs(IDAMem IDA_mem, realtype *ck);
+static int IDAnls(IDAMem IDA_mem);
+static int IDAPredict(IDAMem IDA_mem);
+static int IDANewtonIter(IDAMem IDA_mem);
+static int IDATestError(IDAMem IDA_mem, realtype *ck, realtype *est,
+                        realtype *terk, realtype *terkm1, realtype *erkm1);
+static int IDAHandleNFlag(IDAMem IDA_mem, int nflag, realtype saved_t,
+                          int *ncfPtr, int *nefPtr, realtype *est);
+static int IDACompleteStep(IDAMem IDA_mem, realtype *est, 
+                           realtype *terk, realtype *terkm1, realtype *erkm1);
+
+/*
+ * -----------------------------------------------------------------
+ * user-callable functions
+ * -----------------------------------------------------------------
+ */
+
+/* 
+ * -----------------------------------------------------------------
+ * IDACreate
+ * -----------------------------------------------------------------
+ * IDACreate creates an internal memory block for a problem to 
+ * be solved by IDA.
+ * If successful, IDACreate returns a pointer to the problem memory. 
+ * This pointer should be passed to IDAMalloc.  
+ * If an initialization error occurs, IDACreate prints an error 
+ * message to standard err and returns NULL. 
+ * -----------------------------------------------------------------
+*/
+
+void *IDACreate(void)
+{
+  IDAMem IDA_mem;
+
+  IDA_mem = (IDAMem) malloc(sizeof(struct IDAMemRec));
+  if (IDA_mem == NULL) {
+    fprintf(stderr, MSG_MEM_FAIL);
+    return (NULL);
+  }
+
+  /* Set unit roundoff in IDA_mem */
+  IDA_mem->ida_uround = UNIT_ROUNDOFF;
+
+  /* Set default values for integrator optional inputs */
+  IDA_mem->ida_res         = NULL;
+  IDA_mem->ida_rdata       = NULL;
+  IDA_mem->ida_efun        = NULL;
+  IDA_mem->ida_edata       = NULL;
+  IDA_mem->ida_errfp       = stderr;
+  IDA_mem->ida_maxord      = MAXORD_DEFAULT;
+  IDA_mem->ida_mxstep      = MXSTEP_DEFAULT;
+  IDA_mem->ida_hmax_inv    = HMAX_INV_DEFAULT;
+  IDA_mem->ida_hin         = ZERO;
+  IDA_mem->ida_epcon       = EPCON;
+  IDA_mem->ida_maxnef      = MXNEF;
+  IDA_mem->ida_maxncf      = MXNCF;
+  IDA_mem->ida_maxcor      = MAXIT;
+  IDA_mem->ida_suppressalg = FALSE;
+  IDA_mem->ida_id          = NULL;
+  IDA_mem->ida_constraints = NULL;
+  IDA_mem->ida_constraintsSet = FALSE;
+  IDA_mem->ida_tstopset    = FALSE;
+
+  /* Set default values for IC optional inputs */
+  IDA_mem->ida_epiccon = PT01 * EPCON;
+  IDA_mem->ida_maxnh   = MAXNH;
+  IDA_mem->ida_maxnj   = MAXNJ;
+  IDA_mem->ida_maxnit  = MAXNI;
+  IDA_mem->ida_lsoff   = FALSE;
+  IDA_mem->ida_steptol = RPowerR(IDA_mem->ida_uround, TWOTHIRDS);
+
+  /* Initialize lrw and liw */
+  IDA_mem->ida_lrw = 25 + 5*MXORDP1;
+  IDA_mem->ida_liw = 38;
+
+  /* No mallocs have been done yet */
+  IDA_mem->ida_VatolMallocDone = FALSE;
+  IDA_mem->ida_constraintsMallocDone = FALSE;
+  IDA_mem->ida_idMallocDone = FALSE;
+  IDA_mem->ida_MallocDone = FALSE;
+
+  /* Return pointer to IDA memory block */
+  return((void *)IDA_mem);
+}
+
+/*-----------------------------------------------------------------*/
+
+#define errfp (IDA_mem->ida_errfp)
+#define lrw   (IDA_mem->ida_lrw)
+#define liw   (IDA_mem->ida_liw)
+
+/*-----------------------------------------------------------------*/
+
+/*
+ * -----------------------------------------------------------------
+ * IDAMalloc
+ * -----------------------------------------------------------------
+ * IDAMalloc allocates and initializes memory for a problem. All
+ * problem specification inputs are checked for errors. If any
+ * error occurs during initialization, it is reported to the file
+ * whose file pointer is errfp and an error flag is returned. 
+ * -----------------------------------------------------------------
+ */
+
+int IDAMalloc(void *ida_mem, IDAResFn res,
+              realtype t0, N_Vector yy0, N_Vector yp0, 
+              int itol, realtype rtol, void *atol)
+{
+  IDAMem IDA_mem;
+  booleantype nvectorOK, allocOK, neg_atol;
+  long int lrw1, liw1;
+
+  /* Check ida_mem */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSG_IDAM_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+  
+  /* Check for legal input parameters */
+  
+  if (yy0 == NULL) { 
+    if(errfp!=NULL) fprintf(errfp, MSG_Y0_NULL); 
+    return(IDA_ILL_INPUT); 
+  }
+  
+  if (yp0 == NULL) { 
+    if(errfp!=NULL) fprintf(errfp, MSG_YP0_NULL); 
+    return(IDA_ILL_INPUT); 
+  }
+
+  if ((itol != IDA_SS) && (itol != IDA_SV) && (itol != IDA_WF)) {
+    if(errfp!=NULL) fprintf(errfp, MSG_BAD_ITOL);
+    return(IDA_ILL_INPUT);
+  }
+
+  if (res == NULL) { 
+    if(errfp!=NULL) fprintf(errfp, MSG_RES_NULL); 
+    return(IDA_ILL_INPUT); 
+  }
+
+  /* Test if all required vector operations are implemented */
+  nvectorOK = IDACheckNvector(yy0);
+  if(!nvectorOK) {
+    if(errfp!=NULL) fprintf(errfp, MSG_BAD_NVECTOR);
+    return(IDA_ILL_INPUT);
+  }
+
+  /* Test tolerances */
+
+  if (itol != IDA_WF) {
+
+    if (atol == NULL) { 
+      if(errfp!=NULL) fprintf(errfp, MSG_ATOL_NULL); 
+      return(IDA_ILL_INPUT); 
+    }
+
+    if (rtol < ZERO) { 
+      if(errfp!=NULL) fprintf(errfp, MSG_BAD_RTOL); 
+      return(IDA_ILL_INPUT); 
+    }
+   
+    if (itol == IDA_SS) { 
+      neg_atol = (*((realtype *)atol) < ZERO); 
+    } else { 
+      neg_atol = (N_VMin((N_Vector)atol) < ZERO); 
+    }
+
+    if (neg_atol) { 
+      if(errfp!=NULL) fprintf(errfp, MSG_BAD_ATOL); 
+      return(IDA_ILL_INPUT); 
+    }
+
+  }
+
+  /* Set space requirements for one N_Vector */
+  if (yy0->ops->nvspace != NULL) {
+    N_VSpace(yy0, &lrw1, &liw1);
+  } else {
+    lrw1 = 0;
+    liw1 = 0;
+  }
+  IDA_mem->ida_lrw1 = lrw1;
+  IDA_mem->ida_liw1 = liw1;
+
+  /* Allocate the vectors (using yy0 as a template) */
+  allocOK = IDAAllocVectors(IDA_mem, yy0, itol);
+  if (!allocOK) {
+    if(errfp!=NULL) fprintf(errfp, MSG_MEM_FAIL);
+    return(IDA_MEM_FAIL);
+  }
+ 
+  /* All error checking is complete at this point */
+
+  /* Copy the input parameters into IDA memory block */
+
+  IDA_mem->ida_res = res;
+  IDA_mem->ida_tn  = t0;
+
+  /* Copy tolerances into memory */
+
+  IDA_mem->ida_itol = itol;
+  IDA_mem->ida_rtol = rtol;      
+
+  if (itol == IDA_SS)
+    IDA_mem->ida_Satol = *((realtype *)atol);
+  else if (itol == IDA_SV) 
+    N_VScale(ONE, (N_Vector)atol, IDA_mem->ida_Vatol);
+
+  /* Set the linear solver addresses to NULL */
+  IDA_mem->ida_linit  = NULL;
+  IDA_mem->ida_lsetup = NULL;
+  IDA_mem->ida_lsolve = NULL;
+  IDA_mem->ida_lperf  = NULL;
+  IDA_mem->ida_lfree  = NULL;
+  IDA_mem->ida_lmem   = NULL;
+
+  /* Initialize the phi array */
+  N_VScale(ONE, yy0, IDA_mem->ida_phi[0]);  
+  N_VScale(ONE, yp0, IDA_mem->ida_phi[1]);  
+ 
+  /* Initialize all the counters and other optional output values */
+  IDA_mem->ida_nst     = 0;
+  IDA_mem->ida_nre     = 0;
+  IDA_mem->ida_ncfn    = 0;
+  IDA_mem->ida_netf    = 0;
+  IDA_mem->ida_nni     = 0;
+  IDA_mem->ida_nsetups = 0;
+  
+  IDA_mem->ida_kused = 0;
+  IDA_mem->ida_hused = ZERO;
+  IDA_mem->ida_tolsf = ONE;
+
+  /* Initial setup not done yet */
+  IDA_mem->ida_SetupDone = FALSE;
+
+  /* Problem memory has been successfully allocated */
+  IDA_mem->ida_MallocDone = TRUE;
+  return(IDA_SUCCESS);
+}
+
+#define lrw1 (IDA_mem->ida_lrw1)
+#define liw1 (IDA_mem->ida_liw1)
+
+/*
+ * -----------------------------------------------------------------
+ * IDAReInit
+ * -----------------------------------------------------------------
+ * IDAReInit re-initializes IDA's memory for a problem, assuming
+ * it has already beeen allocated in a prior IDAMalloc call.
+ * All problem specification inputs are checked for errors.
+ * The problem size Neq is assumed to be unchaged since the call
+ * to IDAMalloc, and the maximum order maxord must not be larger.
+ * If any error occurs during reinitialization, it is reported to
+ * the file whose file pointer is errfp.
+ * The return value is IDA_SUCCESS = 0 if no errors occurred, or
+ * a negative value otherwise.
+ * -----------------------------------------------------------------
+ */
+
+int IDAReInit(void *ida_mem, IDAResFn res,
+              realtype t0, N_Vector yy0, N_Vector yp0,
+              int itol, realtype rtol, void *atol)
+{
+  IDAMem IDA_mem;
+  booleantype neg_atol;
+
+  /* Check for legal input parameters */
+  
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSG_IDAM_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  /* Check if problem was malloc'ed */
+  
+  if (IDA_mem->ida_MallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSG_REI_NO_MALLOC);
+    return(IDA_NO_MALLOC);
+  }
+
+  /* Check for legal input parameters */
+  
+  if (yy0 == NULL) { 
+    if(errfp!=NULL) fprintf(errfp, MSG_Y0_NULL); 
+    return(IDA_ILL_INPUT); 
+  }
+  
+  if (yp0 == NULL) { 
+    if(errfp!=NULL) fprintf(errfp, MSG_YP0_NULL); 
+    return(IDA_ILL_INPUT); 
+  }
+
+  if ((itol != IDA_SS) && (itol != IDA_SV) && (itol != IDA_WF)) {
+    if(errfp!=NULL) fprintf(errfp, MSG_BAD_ITOL);
+    return(IDA_ILL_INPUT);
+  }
+
+  if (res == NULL) { 
+    if(errfp!=NULL) fprintf(errfp, MSG_RES_NULL); 
+    return(IDA_ILL_INPUT); 
+  }
+
+  /* Test tolerances */
+
+  if (itol != IDA_WF) {
+
+    if (atol == NULL) { 
+      if(errfp!=NULL) fprintf(errfp, MSG_ATOL_NULL); 
+      return(IDA_ILL_INPUT); 
+    }
+
+    if (rtol < ZERO) {
+      if(errfp!=NULL) fprintf(errfp, MSG_BAD_RTOL); 
+      return(IDA_ILL_INPUT); 
+    }
+   
+    if (itol == IDA_SS) { 
+      neg_atol = (*((realtype *)atol) < ZERO); 
+    } else { 
+      neg_atol = (N_VMin((N_Vector)atol) < ZERO); 
+    }
+    if (neg_atol) { 
+      if(errfp!=NULL) fprintf(errfp, MSG_BAD_ATOL); 
+      return(IDA_ILL_INPUT); 
+    }
+
+  }
+
+  /* Copy the input parameters into IDA memory block */
+  IDA_mem->ida_res = res;
+  IDA_mem->ida_tn  = t0;
+
+  if ( (itol != IDA_SV) && (IDA_mem->ida_VatolMallocDone) ) {
+    N_VDestroy(IDA_mem->ida_Vatol);
+    lrw -= lrw1;
+    liw -= liw1;
+    IDA_mem->ida_VatolMallocDone = FALSE;
+  }
+
+  if ( (itol == IDA_SV) && !(IDA_mem->ida_VatolMallocDone) ) {
+    IDA_mem->ida_Vatol = N_VClone(yy0);
+    lrw += lrw1;
+    liw += liw1;
+    IDA_mem->ida_VatolMallocDone = TRUE;
+  }
+
+  IDA_mem->ida_itol = itol;
+  IDA_mem->ida_rtol = rtol;      
+  if (itol == IDA_SS)
+    IDA_mem->ida_Satol = *((realtype *)atol);
+  else if (itol == IDA_SV)
+    N_VScale(ONE, (N_Vector)atol, IDA_mem->ida_Vatol);
+
+  /* Initialize the phi array */
+  N_VScale(ONE, yy0, IDA_mem->ida_phi[0]);  
+  N_VScale(ONE, yp0, IDA_mem->ida_phi[1]);  
+ 
+  /* Initialize all the counters and other optional output values */
+ 
+  IDA_mem->ida_nst     = 0;
+  IDA_mem->ida_nre     = 0;
+  IDA_mem->ida_ncfn    = 0;
+  IDA_mem->ida_netf    = 0;
+  IDA_mem->ida_nni     = 0;
+  IDA_mem->ida_nsetups = 0;
+  
+  IDA_mem->ida_kused = 0;
+  IDA_mem->ida_hused = ZERO;
+  IDA_mem->ida_tolsf = ONE;
+
+  /* Initial setup not done yet */
+  IDA_mem->ida_SetupDone = FALSE;
+      
+  /* Problem has been successfully re-initialized */
+
+  return(IDA_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * readability constants
+ * -----------------------------------------------------------------
+ */
+
+#define res         (IDA_mem->ida_res)
+#define y0          (IDA_mem->ida_y0)
+#define yp0         (IDA_mem->ida_yp0)
+
+#define itol        (IDA_mem->ida_itol)
+#define rtol        (IDA_mem->ida_rtol)
+#define Satol       (IDA_mem->ida_Satol)
+#define Vatol       (IDA_mem->ida_Vatol)
+#define efun        (IDA_mem->ida_efun)
+#define edata       (IDA_mem->ida_edata)
+
+#define rdata       (IDA_mem->ida_rdata)
+#define maxord      (IDA_mem->ida_maxord)
+#define mxstep      (IDA_mem->ida_mxstep)
+#define hin         (IDA_mem->ida_hin)
+#define hmax_inv    (IDA_mem->ida_hmax_inv)
+#define tstop       (IDA_mem->ida_tstop)
+#define tstopset    (IDA_mem->ida_tstopset)
+#define epcon       (IDA_mem->ida_epcon)
+#define maxnef      (IDA_mem->ida_maxnef)
+#define maxncf      (IDA_mem->ida_maxncf)
+#define maxcor      (IDA_mem->ida_maxcor)
+#define suppressalg (IDA_mem->ida_suppressalg)
+#define id          (IDA_mem->ida_id)
+#define constraints (IDA_mem->ida_constraints)
+
+#define epiccon     (IDA_mem->ida_epiccon)
+#define maxnh       (IDA_mem->ida_maxnh)
+#define maxnj       (IDA_mem->ida_maxnj)
+#define maxnit      (IDA_mem->ida_maxnit)
+#define lsoff       (IDA_mem->ida_lsoff)
+#define steptol     (IDA_mem->ida_steptol)
+
+#define uround      (IDA_mem->ida_uround)  
+#define phi         (IDA_mem->ida_phi) 
+#define ewt         (IDA_mem->ida_ewt)  
+#define yy          (IDA_mem->ida_yy)
+#define yp          (IDA_mem->ida_yp)
+#define delta       (IDA_mem->ida_delta)
+#define mm          (IDA_mem->ida_mm)
+#define ee          (IDA_mem->ida_ee)
+#define savres      (IDA_mem->ida_savres)
+#define tempv1      (IDA_mem->ida_tempv1)
+#define tempv2      (IDA_mem->ida_tempv2) 
+#define kk          (IDA_mem->ida_kk)
+#define hh          (IDA_mem->ida_hh)
+#define h0u         (IDA_mem->ida_h0u)
+#define tn          (IDA_mem->ida_tn)
+#define tretp       (IDA_mem->ida_tretp)
+#define cj          (IDA_mem->ida_cj)
+#define cjold       (IDA_mem->ida_cjold)
+#define cjratio     (IDA_mem->ida_cjratio)
+#define cjlast      (IDA_mem->ida_cjlast)
+#define nbacktr     (IDA_mem->ida_nbacktr)
+#define nst         (IDA_mem->ida_nst)
+#define nre         (IDA_mem->ida_nre)
+#define ncfn        (IDA_mem->ida_ncfn)
+#define netf        (IDA_mem->ida_netf)
+#define nni         (IDA_mem->ida_nni)
+#define nsetups     (IDA_mem->ida_nsetups)
+#define ns          (IDA_mem->ida_ns)
+#define linit       (IDA_mem->ida_linit)
+#define lsetup      (IDA_mem->ida_lsetup)
+#define lsolve      (IDA_mem->ida_lsolve) 
+#define lperf       (IDA_mem->ida_lperf)
+#define lfree       (IDA_mem->ida_lfree) 
+#define lmem        (IDA_mem->ida_lmem) 
+#define knew        (IDA_mem->ida_knew)
+#define kused       (IDA_mem->ida_kused)          
+#define hused       (IDA_mem->ida_hused)         
+#define tolsf       (IDA_mem->ida_tolsf)      
+#define phase       (IDA_mem->ida_phase)
+#define epsNewt     (IDA_mem->ida_epsNewt)
+#define toldel      (IDA_mem->ida_toldel)
+#define ss          (IDA_mem->ida_ss)
+#define rr          (IDA_mem->ida_rr)
+#define psi         (IDA_mem->ida_psi)
+#define alpha       (IDA_mem->ida_alpha)
+#define beta        (IDA_mem->ida_beta)
+#define sigma       (IDA_mem->ida_sigma)
+#define gamma       (IDA_mem->ida_gamma)
+#define setupNonNull (IDA_mem->ida_setupNonNull) 
+#define constraintsSet (IDA_mem->ida_constraintsSet)
+
+/*
+ * -----------------------------------------------------------------
+ * IDASolve
+ * -----------------------------------------------------------------
+ * This routine is the main driver of the IDA package. 
+ *
+ * It integrates over an independent variable interval defined by the user, 
+ * by calling IDAStep to take internal independent variable steps.
+ *
+ * The first time that IDASolve is called for a successfully initialized
+ * problem, it computes a tentative initial step size.
+ *
+ * IDASolve supports four modes, specified by itask:
+ * IDA_NORMAL,  IDA_ONE_STEP,  IDA_NORMAL_TSTOP,  and  IDA_ONE_STEP_TSTOP.
+ * In the IDA_NORMAL and IDA_NORMAL_TSTOP modes, the solver steps until it 
+ * passes tout and then interpolates to obtain y(tout) and yp(tout).
+ * In the IDA_ONE_STEP and IDA_ONE_STEP_TSTOP modes, it takes one internal step
+ * and returns.  In the IDA_NORMAL_TSTOP and IDA_ONE_STEP_TSTOP modes, it also
+ * takes steps so as to reach tstop exactly and never to go past it.
+ *
+ * IDASolve returns integer values corresponding to success and failure as below:
+ *
+ * successful returns: 
+ *
+ * IDA_SUCCESS        
+ * IDA_TSTOP_RETURN   
+ *
+ * failed returns:
+ *
+ * IDA_ILL_INPUT
+ * IDA_TOO_MUCH_WORK
+ * IDA_MEM_NULL
+ * IDA_TOO_MUCH_ACC
+ * IDA_CONV_FAIL
+ * IDA_LSETUP_FAIL
+ * IDA_LSOLVE_FAIL    
+ * IDA_CONSTR_FAIL
+ * IDA_ERR_FAIL   
+ * IDA_REP_RES_ERR
+ * IDA_RES_FAIL
+ * -----------------------------------------------------------------
+ */
+
+int IDASolve(void *ida_mem, realtype tout, realtype *tret,
+             N_Vector yret, N_Vector ypret, int itask)
+{
+  long int nstloc;
+  int sflag, istate, ier;
+  realtype tdist, troundoff, ypnorm, rh, nrm;
+  booleantype istop;
+  int ewtsetOK;
+  IDAMem IDA_mem;
+
+  /* Check for legal inputs in all cases. */
+
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSG_IDA_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  /* Check if problem was malloc'ed */
+  
+  if (IDA_mem->ida_MallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSG_NO_MALLOC);
+    return(IDA_NO_MALLOC);
+  }
+
+  /* Check for legal arguments */
+
+  if (yret == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSG_YRET_NULL);       
+    return(IDA_ILL_INPUT);
+  }
+  yy = yret;  
+
+  if (ypret == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSG_YPRET_NULL);       
+    return(IDA_ILL_INPUT);
+  }
+  yp = ypret;
+  
+  if (tret == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSG_TRET_NULL);
+    return(IDA_ILL_INPUT);
+  }
+  *tret = tretp = tn; /* Set tret now in case of illegal-input return. */
+
+  if ((itask < IDA_NORMAL) || (itask > IDA_ONE_STEP_TSTOP)) {
+    if(errfp!=NULL) fprintf(errfp, MSG_BAD_ITASK);
+    return(IDA_ILL_INPUT);
+  }
+  
+  if ( (itask == IDA_NORMAL_TSTOP) || (itask == IDA_ONE_STEP_TSTOP) ) {
+    if ( tstopset == FALSE ) {
+      if(errfp!=NULL) fprintf(errfp, MSG_NO_TSTOP);
+      return(IDA_ILL_INPUT);
+    }
+    istop = TRUE;
+  } else {
+      istop = FALSE;
+  }
+
+
+  if (nst == 0) {       /* THIS IS THE FIRST CALL */
+
+    /* Check inputs to the IDA for correctness and consistency */
+
+    if (IDA_mem->ida_SetupDone == FALSE) {
+      ier = IDAInitialSetup(IDA_mem);
+      if(ier != IDA_SUCCESS) return(IDA_ILL_INPUT);
+      IDA_mem->ida_SetupDone = TRUE;
+    }
+
+    /* On the first call, check for tout - tn too small,
+       set initial hh,
+       check for approach to tstop, and scale phi[1] by hh. */
+
+    tdist = ABS(tout - tn);
+    troundoff = TWO*uround*(ABS(tn) + ABS(tout));    
+    if (tdist < troundoff) {
+      if(errfp!=NULL) fprintf(errfp, MSG_TOO_CLOSE);
+      return(IDA_ILL_INPUT);
+    }
+
+    hh = hin;
+    if ( (hh != ZERO) && ((tout-tn)*hh < ZERO) ) {
+      if(errfp!=NULL) fprintf(errfp, MSG_BAD_HINIT);
+      return(IDA_ILL_INPUT);
+    }
+
+    if (hh == ZERO) {
+      hh = PT001*tdist;
+      ypnorm = IDAWrmsNorm(IDA_mem, phi[1], ewt, suppressalg);
+      if (ypnorm > HALF/hh) hh = HALF/ypnorm;
+      if(tout < tn) hh = -hh;
+    }
+
+    rh = ABS(hh)*hmax_inv;
+    if (rh > ONE) hh /= rh;
+
+    if(istop) {
+      if ( (tstop - tn)*hh < ZERO) {
+        if(errfp!=NULL) fprintf(errfp, MSG_BAD_TSTOP, tn);
+        return(IDA_ILL_INPUT);
+      }
+      if ( (tn + hh - tstop)*hh > ZERO) hh = tstop - tn;
+    }
+
+    h0u = hh;
+
+    N_VScale(hh, phi[1], phi[1]);
+    kk = 0; kused = 0;  /* set in case of an error return before a step */
+
+    /* Set the convergence test constants epsNewt and toldel */
+
+    epsNewt = epcon;
+    toldel = PT0001 * epsNewt;
+
+  } /* end of first-call block. */
+
+  /* Call lperf function and set nstloc for later performance testing. */
+
+  if (lperf != NULL) lperf(IDA_mem, 0);
+  nstloc = 0;
+
+  /* If not the first call, check for stop conditions. */
+
+  if (nst > 0) {
+    istate = IDAStopTest1(IDA_mem, tout, tret, yret, ypret, itask);
+    if (istate != CONTINUE_STEPS) return(istate);
+  }
+
+  /* Looping point for internal steps. */
+
+  loop {
+   
+    /* Check for too many steps taken. */
+    
+    if (nstloc >= mxstep) {
+      if(errfp!=NULL) fprintf(errfp, MSG_MAX_STEPS, tn);
+      istate = IDA_TOO_MUCH_WORK;
+      *tret = tretp = tn;
+      break; /* Here yy=yret and yp=ypret already have the current solution. */
+    }
+
+    /* Call lperf to generate warnings of poor performance. */
+
+    if (lperf != NULL) lperf(IDA_mem, 1);
+
+    /* Reset and check ewt (if not first call). */
+
+    if (nst > 0) {
+      ewtsetOK = efun(phi[0], ewt, edata);
+      if (ewtsetOK != 0) {
+	if(errfp!=NULL) {
+          if (itol == IDA_WF) fprintf(errfp, MSG_EWT_NOW_FAIL, tn);
+          else fprintf(errfp, MSG_EWT_NOW_BAD, tn);
+	}
+        istate = IDA_ILL_INPUT;
+        ier = IDAGetSolution(IDA_mem, tn, yret, ypret);
+        *tret = tretp = tn;
+        break;
+      }
+    }
+    
+    /* Check for too much accuracy requested. */
+    
+    nrm = IDAWrmsNorm(IDA_mem, phi[0], ewt, suppressalg);
+    tolsf = uround * nrm;
+    if (tolsf > ONE) {
+      tolsf *= TEN;
+      if(errfp!=NULL) fprintf(errfp, MSG_TOO_MUCH_ACC, tn);
+      istate = IDA_TOO_MUCH_ACC;
+      *tret = tretp = tn;
+      if (nst > 0) ier = IDAGetSolution(IDA_mem, tn, yret, ypret);
+      break;
+    }
+
+    /* Call IDAStep to take a step. */
+
+    sflag = IDAStep(IDA_mem);
+
+    /* Process all failed-step cases, and exit loop. */
+   
+    if (sflag != IDA_SUCCESS) {
+      istate = IDAHandleFailure(IDA_mem, sflag);
+      *tret = tretp = tn;
+      ier = IDAGetSolution(IDA_mem, tn, yret, ypret);
+      break;
+    }
+    
+    nstloc++;
+
+    /* After successful step, check for stop conditions; continue or break. */
+
+    istate = IDAStopTest2(IDA_mem, tout, tret, yret, ypret, itask);
+    if (istate != CONTINUE_STEPS) break;
+
+  } /* End of step loop */
+
+  return(istate);    
+}
+
+/* 
+ * -----------------------------------------------------------------
+ * IDAGetSolution
+ * -----------------------------------------------------------------
+ * This routine evaluates y(t) and y'(t) as the value and derivative of 
+ * the interpolating polynomial at the independent variable t, and stores
+ * the results in the vectors yret and ypret.  It uses the current
+ * independent variable value, tn, and the method order last used, kused.
+ * This function is called by IDASolve with t = tout, t = tn, or t = tstop.
+ * 
+ * If kused = 0 (no step has been taken), or if t = tn, then the order used
+ * here is taken to be 1, giving yret = phi[0], ypret = phi[1]/psi[0].
+ * 
+ * The return values are:
+ *   IDA_SUCCESS  if t is legal, or
+ *   IDA_BAD_T    if t is not within the interval of the last step taken.
+ * -----------------------------------------------------------------
+ */
+
+int IDAGetSolution(void *ida_mem, realtype t, N_Vector yret, N_Vector ypret)
+{
+  IDAMem IDA_mem;
+  realtype tfuzz, tp, delt, c, d, gam;
+  int j, kord;
+
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return (IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem; 
+  /* Check t for legality.  Here tn - hused is t_{n-1}. */
+ 
+  tfuzz = HUNDRED * uround * (tn + hh);
+  tp = tn - hused - tfuzz;
+  if ( (t - tp)*hh < ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAG_BAD_T, t, tn-hused, tn);
+    return(IDA_BAD_T);
+  }
+
+  /* Initialize yret = phi[0], ypret = 0, and kord = (kused or 1). */
+
+  N_VScale (ONE, phi[0], yret);
+  N_VConst (ZERO, ypret);
+  kord = kused; 
+  if (kused == 0) kord = 1;
+
+ /* Accumulate multiples of columns phi[j] into yret and ypret. */
+
+  delt = t - tn;
+  c = ONE; d = ZERO;
+  gam = delt/psi[0];
+  for (j=1; j <= kord; j++) {
+    d = d*gam + c/psi[j-1];
+    c = c*gam;
+    gam = (delt + psi[j-1])/psi[j];
+    N_VLinearSum(ONE,  yret, c, phi[j],  yret);
+    N_VLinearSum(ONE, ypret, d, phi[j], ypret);
+  }
+  return(IDA_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDAFree
+ * -----------------------------------------------------------------
+ * This routine frees the problem memory allocated by IDAMalloc
+ * Such memory includes all the vectors allocated by IDAAllocVectors,
+ * and the memory lmem for the linear solver (deallocated by a call
+ * to lfree).
+ * -----------------------------------------------------------------
+ */
+
+void IDAFree(void *ida_mem)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem == NULL) return;
+
+  IDA_mem = (IDAMem) ida_mem;
+  
+  IDAFreeVectors(IDA_mem);
+  if (lfree != NULL) lfree(IDA_mem);
+  free(IDA_mem);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * private helper functions
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * IDACheckNvector
+ * -----------------------------------------------------------------
+ * This routine checks if all required vector operations are present.
+ * If any of them is missing it returns FALSE.
+ * -----------------------------------------------------------------
+ */
+
+static booleantype IDACheckNvector(N_Vector tmpl)
+{
+  if((tmpl->ops->nvclone        == NULL) ||
+     (tmpl->ops->nvdestroy      == NULL) ||
+     (tmpl->ops->nvlinearsum    == NULL) ||
+     (tmpl->ops->nvconst        == NULL) ||
+     (tmpl->ops->nvprod         == NULL) ||
+     (tmpl->ops->nvscale        == NULL) ||
+     (tmpl->ops->nvabs          == NULL) ||
+     (tmpl->ops->nvinv          == NULL) ||
+     (tmpl->ops->nvaddconst     == NULL) ||
+     (tmpl->ops->nvwrmsnorm     == NULL) ||
+     (tmpl->ops->nvmin          == NULL))
+    return(FALSE);
+  else
+    return(TRUE);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDAAllocVectors
+ * -----------------------------------------------------------------
+ * This routine allocates the IDA vectors ewt, tempv1, tempv2, and
+ * phi[0], ..., phi[maxord]. If tol=IDA_SV, it also allocates space 
+ * for Vatol.
+ * If all memory allocations are successful, IDAAllocVectors returns 
+ * TRUE. Otherwise all allocated memory is freed and IDAAllocVectors 
+ * returns FALSE.
+ * This routine also sets the optional outputs lrw and liw, which are
+ * (respectively) the lengths of the real and integer work spaces
+ * allocated here.
+ * -----------------------------------------------------------------
+ */
+
+static booleantype IDAAllocVectors(IDAMem IDA_mem, N_Vector tmpl, int tol)
+{
+  int i, j, maxcol;
+
+  /* Allocate ewt, ee, delta, tempv1, tempv2 */
+  
+  ewt = N_VClone(tmpl);
+  if (ewt == NULL) return(FALSE);
+
+  ee = N_VClone(tmpl);
+  if (ee == NULL) {
+    N_VDestroy(ewt);
+    return(FALSE);
+  }
+  delta = N_VClone(tmpl);
+  if (delta == NULL) {
+    N_VDestroy(ewt);
+    N_VDestroy(ee);
+    return(FALSE);
+  }
+  tempv1 = N_VClone(tmpl);
+  if (tempv1 == NULL) {
+    N_VDestroy(ewt);
+    N_VDestroy(ee);
+    N_VDestroy(delta);
+    return(FALSE);
+  }
+  tempv2= N_VClone(tmpl);
+  if (tempv2 == NULL) {
+    N_VDestroy(ewt);
+    N_VDestroy(ee);
+    N_VDestroy(delta);
+    N_VDestroy(tempv1);
+    return(FALSE);
+  }
+
+  savres = tempv1;
+
+  /* Allocate phi[0] ... phi[maxord].  Make sure phi[2] and phi[3] are
+  allocated (for use as temporary vectors), regardless of maxord.       */
+
+  maxcol = MAX(maxord,3);
+  for (j=0; j <= maxcol; j++) {
+    phi[j] = N_VClone(tmpl);
+    if (phi[j] == NULL) {
+      N_VDestroy(ewt);
+      N_VDestroy(ee);
+      N_VDestroy(delta);
+      N_VDestroy(tempv1);
+      N_VDestroy(tempv2);
+      for (i=0; i < j; i++) N_VDestroy(phi[i]);
+      return(FALSE);
+    }
+  }
+
+  /* Update solver workspace lengths  */
+  lrw += (maxcol + 6)*lrw1;
+  liw += (maxcol + 6)*liw1;
+
+  if (tol == IDA_SV) {
+    Vatol = N_VClone(tmpl);
+    if (Vatol == NULL) {
+      N_VDestroy(ewt);
+      N_VDestroy(ee);
+      N_VDestroy(delta);
+      N_VDestroy(tempv1);
+      N_VDestroy(tempv2);
+      for (i=0; i <= maxcol; i++) N_VDestroy(phi[i]);
+    }
+    lrw += lrw1;
+    liw += liw1;
+    IDA_mem->ida_VatolMallocDone = TRUE;
+  }
+
+  return(TRUE);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDAfreeVectors
+ * -----------------------------------------------------------------
+ * This routine frees the IDA vectors allocated for IDA.
+ * -----------------------------------------------------------------
+ */
+
+static void IDAFreeVectors(IDAMem IDA_mem)
+{
+  int j, maxcol;
+  
+  N_VDestroy(ewt);
+  N_VDestroy(ee);
+  N_VDestroy(delta);
+  N_VDestroy(tempv1);
+  N_VDestroy(tempv2);
+  maxcol = MAX(maxord,3);
+  for(j=0; j <= maxcol; j++) N_VDestroy(phi[j]);
+
+  lrw -= (maxcol + 6)*lrw1;
+  liw -= (maxcol + 6)*liw1;
+
+  if (IDA_mem->ida_VatolMallocDone) {
+    N_VDestroy(Vatol);
+    lrw -= lrw1;
+    liw -= liw1;
+  }
+
+  if (IDA_mem->ida_constraintsMallocDone) {
+    N_VDestroy(constraints);
+    lrw -= lrw1;
+    liw -= liw1;
+  }
+
+  if (IDA_mem->ida_idMallocDone) {
+    N_VDestroy(id);
+    lrw -= lrw1;
+    liw -= liw1;
+  }
+
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDAInitialSetup
+ * -----------------------------------------------------------------
+ * This routine is called by IDASolve once at the first step. It performs
+ * all checks on optional inputs and inputs to IDAMalloc/IDAReInit that
+ * could not be done before.
+ *
+ * If no merror is encountered, IDAInitialSetup returns IDA_SUCCESS. Otherwise,
+ * it returns an error flag and prints a message to errfp.
+ * -----------------------------------------------------------------
+ */
+
+int IDAInitialSetup(IDAMem IDA_mem)
+{
+  booleantype conOK;
+  int ewtsetOK;
+  int ier;
+  
+  /* Test for more vector operations, depending on options */
+
+  if (suppressalg)
+    if (id->ops->nvwrmsnormmask == NULL) {
+      if(errfp!=NULL) fprintf(errfp, MSG_BAD_NVECTOR);
+      return(IDA_ILL_INPUT);
+  }
+
+  /* Test id vector for legality */
+  
+  if(suppressalg && (id==NULL)){ 
+    if(errfp!=NULL) fprintf(errfp, MSG_MISSING_ID); 
+    return(IDA_ILL_INPUT); 
+  }
+
+  /* Load ewt */
+
+  if (itol != IDA_WF) {
+    efun = IDAEwtSet;
+    edata = (void *)IDA_mem;
+  } else {
+    if (efun == NULL) {
+      if (errfp != NULL) fprintf(errfp, MSG_NO_EFUN);
+      return(IDA_ILL_INPUT);
+    }
+  }
+
+  ewtsetOK = efun(phi[0], ewt, edata);
+  if (ewtsetOK != 0) {
+    if(errfp!=NULL) {
+      if (itol == IDA_WF) fprintf(errfp, MSG_FAIL_EWT);
+      else fprintf(errfp, MSG_BAD_EWT);
+    }
+    return(IDA_ILL_INPUT);
+  }
+
+  /* Check to see if y0 satisfies constraints. */
+
+  if (constraintsSet) {
+    conOK = N_VConstrMask (constraints, phi[0], tempv2);
+    if (!conOK) { 
+      if(errfp!=NULL) fprintf(errfp, MSG_Y0_FAIL_CONSTR); 
+      return(IDA_ILL_INPUT); 
+    }
+  }
+
+  /* Check that lsolve exists and call linit function if it exists. */
+
+  if (lsolve == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSG_LSOLVE_NULL);
+    return(IDA_ILL_INPUT);
+  }
+
+  if (linit != NULL) {
+    ier = linit(IDA_mem);
+    if (ier < 0) {
+      if(errfp!=NULL) fprintf(errfp, MSG_LINIT_FAIL);
+      return(IDA_LINIT_FAIL);
+    }
+  }
+
+  return(IDA_SUCCESS);
+
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDAStopTest1
+ * -----------------------------------------------------------------
+ * This routine tests for stop conditions before taking a step.
+ * The tests depend on the value of itask.
+ * The variable tretp is the previously returned value of tret.
+ *
+ * The return values are:
+ * CONTINUE_STEPS       if no stop conditions were found
+ * IDA_SUCCESS          for a normal return to the user
+ * IDA_TSTOP_RETURN     for a tstop-reached return to the user
+ * IDA_ILL_INPUT        for an illegal-input return to the user 
+ *
+ * In the tstop cases, this routine may adjust the stepsize hh to cause
+ * the next step to reach tstop exactly.
+ * -----------------------------------------------------------------
+ */
+
+static int IDAStopTest1(IDAMem IDA_mem, realtype tout, realtype *tret, 
+                        N_Vector yret, N_Vector ypret, int itask)
+{
+
+  int ier;
+  realtype troundoff;
+
+  switch (itask) {
+    
+  case IDA_NORMAL:  
+    /* Test for tout = tretp, and for tn past tout. */
+    if (tout == tretp) {
+      *tret = tretp = tout;
+      return(IDA_SUCCESS);
+    }
+    if ( (tn - tout)*hh >= ZERO) {
+      ier = IDAGetSolution(IDA_mem, tout, yret, ypret);
+      if (ier != IDA_SUCCESS) {
+        if(errfp!=NULL) fprintf(errfp, MSG_BAD_TOUT, tout);
+        return(IDA_ILL_INPUT);
+      }
+      *tret = tretp = tout;
+      return(IDA_SUCCESS);
+    }
+    return(CONTINUE_STEPS);
+    
+  case IDA_ONE_STEP:
+    /* Test for tn past tretp. */
+    if ( (tn - tretp)*hh > ZERO) {
+      ier = IDAGetSolution(IDA_mem, tn, yret, ypret);
+      *tret = tretp = tn;
+      return(IDA_SUCCESS);
+    }
+    return(CONTINUE_STEPS);
+    
+  case IDA_NORMAL_TSTOP:
+    /* Test for tn past tstop, tn = tretp, tn past tout, tn near tstop. */
+    if ( (tn - tstop)*hh > ZERO) {
+      if(errfp!=NULL) fprintf(errfp, MSG_BAD_TSTOP, tn);
+      return(IDA_ILL_INPUT);
+    }
+    if (tout == tretp) {
+      *tret = tretp = tout;
+      return(IDA_SUCCESS);
+    }
+    if ( (tn - tout)*hh >= ZERO) {
+      ier = IDAGetSolution(IDA_mem, tout, yret, ypret);
+      if (ier != IDA_SUCCESS) {
+        if(errfp!=NULL) fprintf(errfp, MSG_BAD_TOUT, tout);
+        return(IDA_ILL_INPUT);
+      }
+      *tret = tretp = tout;
+      return(IDA_SUCCESS);
+    }
+    troundoff = HUNDRED*uround*(ABS(tn) + ABS(hh));
+    if ( ABS(tn - tstop) <= troundoff) {
+      ier = IDAGetSolution(IDA_mem, tstop, yret, ypret);
+      if (ier != IDA_SUCCESS) {
+	  if(errfp!=NULL) fprintf(errfp, MSG_BAD_TSTOP, tn);
+        return(IDA_ILL_INPUT);
+      }
+      *tret = tretp = tstop;
+      return(IDA_TSTOP_RETURN);
+    }
+    if ( (tn + hh - tstop)*hh > ZERO) hh = tstop - tn;
+    return(CONTINUE_STEPS);
+    
+  case IDA_ONE_STEP_TSTOP:
+    /* Test for tn past tstop, tn past tretp, and tn near tstop. */
+    if ( (tn - tstop)*hh > ZERO) {
+      if(errfp!=NULL) fprintf(errfp, MSG_BAD_TSTOP, tn);
+      return(IDA_ILL_INPUT);
+    }
+    if ( (tn - tretp)*hh > ZERO) {
+      ier = IDAGetSolution(IDA_mem, tn, yret, ypret);
+      *tret = tretp = tn;
+      return(IDA_SUCCESS);
+    }
+    troundoff = HUNDRED*uround*(ABS(tn) + ABS(hh));
+    if ( ABS(tn - tstop) <= troundoff) {
+      ier = IDAGetSolution(IDA_mem, tstop, yret, ypret);
+      if (ier != IDA_SUCCESS) {
+        if(errfp!=NULL) fprintf(errfp, MSG_BAD_TSTOP, tn);
+        return(IDA_ILL_INPUT);
+      }
+      *tret = tretp = tstop;
+      return(IDA_TSTOP_RETURN);
+    }
+    if ( (tn + hh - tstop)*hh > ZERO) hh = tstop - tn;
+    return(CONTINUE_STEPS);
+    
+  }
+  return(-99);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDAStopTest2
+ * -----------------------------------------------------------------
+ * This routine tests for stop conditions after taking a step.
+ * The tests depend on the value of itask.
+ *
+ * The return values are:
+ *  CONTINUE_STEPS     if no stop conditions were found
+ *  IDA_SUCCESS        for a normal return to the user
+ *  IDA_TSTOP_RETURN   for a tstop-reached return to the user
+ *
+ * In the two cases with tstop, this routine may reset the stepsize hh
+ * to cause the next step to reach tstop exactly.
+ *
+ * In the two cases with ONE_STEP mode, no interpolation to tn is needed
+ * because yret and ypret already contain the current y and y' values.
+ *
+ * Note: No test is made for an error return from IDAGetSolution here,
+ * because the same test was made prior to the step.
+ * -----------------------------------------------------------------
+ */
+
+static int IDAStopTest2(IDAMem IDA_mem, realtype tout, realtype *tret, 
+                        N_Vector yret, N_Vector ypret, int itask)
+{
+
+  int ier;
+  realtype troundoff;
+
+  switch (itask) {
+
+    case IDA_NORMAL:  
+      /* Test for tn past tout. */
+      if ( (tn - tout)*hh >= ZERO) {
+        ier = IDAGetSolution(IDA_mem, tout, yret, ypret);
+        *tret = tretp = tout;
+        return(IDA_SUCCESS);
+      }
+      return(CONTINUE_STEPS);
+
+    case IDA_ONE_STEP:
+      *tret = tretp = tn;
+      return(IDA_SUCCESS);
+
+    case IDA_NORMAL_TSTOP:
+      /* Test for tn at tstop, for tn past tout, and for tn near tstop. */
+      troundoff = HUNDRED*uround*(ABS(tn) + ABS(hh));
+      if ( ABS(tn - tstop) <= troundoff) {
+        ier = IDAGetSolution(IDA_mem, tstop, yret, ypret);
+        *tret = tretp = tstop;
+        return(IDA_TSTOP_RETURN);
+      }
+      if ( (tn - tout)*hh >= ZERO) {
+        ier = IDAGetSolution(IDA_mem, tout, yret, ypret);
+        *tret = tretp = tout;
+        return(IDA_SUCCESS);
+      }
+      if ( (tn + hh - tstop)*hh > ZERO) hh = tstop - tn;
+      return(CONTINUE_STEPS);
+
+    case IDA_ONE_STEP_TSTOP:
+      /* Test for tn at tstop. */
+      troundoff = HUNDRED*uround*(ABS(tn) + ABS(hh));
+      if ( ABS(tn - tstop) <= troundoff) {
+        ier = IDAGetSolution(IDA_mem, tstop, yret, ypret);
+        *tret = tretp = tstop;
+        return(IDA_TSTOP_RETURN);
+      }
+      if ( (tn + hh - tstop)*hh > ZERO) hh = tstop - tn;
+      *tret = tretp = tn;
+      return(IDA_SUCCESS);
+
+  }
+  return -99;
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDAHandleFailure
+ * -----------------------------------------------------------------
+ * This routine prints error messages for all cases of failure by
+ * IDAStep.  It returns to IDASolve the value that it is to return to
+ * the user.
+ * -----------------------------------------------------------------
+ */
+
+static int IDAHandleFailure(IDAMem IDA_mem, int sflag)
+{
+
+  /* Depending on sflag, print error message and return error flag */
+  switch (sflag) {
+
+    case IDA_ERR_FAIL:  
+      if(errfp!=NULL) fprintf(errfp, MSG_ERR_FAILS, tn, hh);
+      return(IDA_ERR_FAIL);
+
+    case IDA_CONV_FAIL:
+      if(errfp!=NULL) fprintf(errfp, MSG_CONV_FAILS, tn, hh);
+      return(IDA_CONV_FAIL);
+
+    case IDA_LSETUP_FAIL:  
+      if(errfp!=NULL) fprintf(errfp, MSG_SETUP_FAILED, tn);
+      return(IDA_LSETUP_FAIL);
+
+    case IDA_LSOLVE_FAIL: 
+      if(errfp!=NULL) fprintf(errfp, MSG_SOLVE_FAILED, tn);
+      return(IDA_LSOLVE_FAIL);
+
+    case IDA_REP_RES_ERR:
+      if(errfp!=NULL) fprintf(errfp, MSG_REP_RES_ERR, tn);
+      return(IDA_REP_RES_ERR);
+
+    case IDA_RES_FAIL: 
+      if(errfp!=NULL) fprintf(errfp, MSG_RES_NONRECOV, tn);
+      return(IDA_RES_FAIL);
+
+    case IDA_CONSTR_FAIL: 
+      if(errfp!=NULL) fprintf(errfp, MSG_FAILED_CONSTR, tn);
+      return(IDA_CONSTR_FAIL);
+
+  }
+
+  return -99;
+
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDAStep
+ * -----------------------------------------------------------------
+ * This routine performs one internal IDA step, from tn to tn + hh.
+ * It calls other routines to do all the work.
+ *
+ * It solves a system of differential/algebraic equations of the form
+ *       F(t,y,y') = 0, for one step. In IDA, tt is used for t,
+ * yy is used for y, and yp is used for y'. The function F is supplied as 'res'
+ * by the user.
+ *
+ * The methods used are modified divided difference, fixed leading 
+ * coefficient forms of backward differentiation formulas.
+ * The code adjusts the stepsize and order to control the local error per step.
+ *
+ * The main operations done here are as follows:
+ *  * initialize various quantities;
+ *  * setting of multistep method coefficients;
+ *  * solution of the nonlinear system for yy at t = tn + hh;
+ *  * deciding on order reduction and testing the local error;
+ *  * attempting to recover from failure in nonlinear solver or error test;
+ *  * resetting stepsize and order for the next step.
+ *  * updating phi and other state data if successful;
+ *
+ * On a failure in the nonlinear system solution or error test, the
+ * step may be reattempted, depending on the nature of the failure.
+ *
+ * Variables or arrays (all in the IDAMem structure) used in IDAStep are:
+ *
+ * tt -- Independent variable.
+ * yy -- Solution vector at tt.
+ * yp -- Derivative of solution vector after successful stelp.
+ * res -- User-supplied function to evaluate the residual. See the 
+ *        description given in file ida.h .
+ * lsetup -- Routine to prepare for the linear solver call. It may either
+ *        save or recalculate quantities used by lsolve. (Optional)
+ * lsolve -- Routine to solve a linear system. A prior call to lsetup
+ *        may be required. 
+ * hh  -- Appropriate step size for next step.
+ * ewt -- Vector of weights used in all convergence tests.
+ * phi -- Array of divided differences used by IDAStep. This array is composed 
+ *       of  (maxord+1) nvectors (each of size Neq). (maxord+1) is the maximum 
+ *       order for the problem, maxord, plus 1.
+ *
+ *       Return values are:
+ *       IDA_SUCCESS   IDA_RES_FAIL        LSETUP_ERROR_NONRECVR       
+ *                     IDA_LSOLVE_FAIL   IDA_ERR_FAIL            
+ *                     IDA_CONSTR_FAIL               IDA_CONV_FAIL          
+ *                     IDA_REP_RES_ERR            
+ * -----------------------------------------------------------------
+ */
+
+static int IDAStep(IDAMem IDA_mem)
+{
+  realtype saved_t, ck, est;
+  realtype terk, terkm1, erkm1;
+  int ncf, nef, nflag, kflag;
+  
+  saved_t = tn;
+  ncf = nef = 0;
+
+  if(nst == ZERO){
+    kk = 1;
+    kused = 0;
+    hused = ZERO;
+    psi[0] = hh;
+    cj = ONE/hh;
+    phase = 0;
+    ns = 0;
+  }
+  
+  /* Looping point for attempts to take a step */
+
+  loop {  
+    IDASetCoeffs(IDA_mem, &ck);
+    kflag = IDA_SUCCESS;
+
+    nflag = IDAnls(IDA_mem);
+
+    if(nflag == IDA_SUCCESS) 
+      nflag = IDATestError(IDA_mem, &ck, &est, &terk, &terkm1, &erkm1);
+
+    if(nflag != IDA_SUCCESS) 
+      kflag = IDAHandleNFlag(IDA_mem, nflag, saved_t, &ncf, &nef, &est);
+
+    if (kflag == PREDICT_AGAIN) continue;
+    else if(kflag == IDA_SUCCESS) break;
+    else return(kflag);
+  }
+
+  /* Nonlinear system solve and error test were both successful;
+     update data, and consider change of step and/or order       */
+
+  IDACompleteStep(IDA_mem, &est, &terk, &terkm1, &erkm1);
+
+  return(IDA_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDASetCoeffs
+ * -----------------------------------------------------------------
+ *  This routine computes the coefficients relevant to the current step.
+ *  The counter ns counts the number of consecutive steps taken at
+ *  constant stepsize h and order k, up to a maximum of k + 2.
+ *  Then the first ns components of beta will be one, and on a step  
+ *  with ns = k + 2, the coefficients alpha, etc. need not be reset here.
+ *  Also, IDACompleteStep prohibits an order increase until ns = k + 2.
+ * -----------------------------------------------------------------
+ */
+
+static void IDASetCoeffs(IDAMem IDA_mem, realtype *ck)
+{
+  int i;
+  realtype temp1, temp2, alpha0, alphas;
+
+  /* Set coefficients for the current stepsize h */
+
+  if(hh != hused || kk != kused) ns = 0;
+  ns = MIN(ns+1,kused+2);
+  if(kk+1 >= ns){
+    beta[0] = ONE;
+    alpha[0] = ONE;
+    temp1 = hh;
+    gamma[0] = ZERO;
+    sigma[0] = ONE;
+    for(i=1;i<=kk;i++){
+      temp2 = psi[i-1];
+      psi[i-1] = temp1;
+      beta[i] = beta[i-1] * psi[i-1] / temp2;
+      temp1 = temp2 + hh;
+      alpha[i] = hh / temp1;
+      sigma[i] = i * sigma[i-1] * alpha[i]; 
+      gamma[i] = gamma[i-1] + alpha[i-1] / hh;
+   }
+    psi[kk] = temp1;
+  }
+  /* compute alphas, alpha0 */
+  alphas = ZERO;
+  alpha0 = ZERO;
+  for(i=0;i<kk;i++){
+    alphas = alphas - ONE/(i+1);
+    alpha0 = alpha0 - alpha[i];
+  }
+
+  /* compute leading coefficient cj  */
+  cjlast = cj;
+  cj = -alphas/hh;
+  
+  /* compute variable stepsize error coefficient ck */
+
+    *ck = ABS(alpha[kk] + alphas - alpha0);
+    *ck = MAX(*ck, alpha[kk]);
+
+ /* change phi to phi-star  */
+
+  for(i=ns;i<=kk;i++) N_VScale(beta[i], phi[i], phi[i]);
+
+  /* update independent variable */
+
+  tn = tn + hh;
+}
+
+
+/*
+ * -----------------------------------------------------------------
+ * IDAnls
+ * -----------------------------------------------------------------
+ * This routine attempts to solve the nonlinear system using the linear
+ * solver specified. NOTE: this routine uses N_Vector ee as the scratch
+ * vector tempv3 passed to lsetup.
+ *
+ *  Possible return values:
+ *
+ *  IDA_SUCCESS
+ *
+ *  IDA_RES_RECVR       IDA_RES_FAIL
+ *  IDA_LSETUP_RECVR    IDA_LSETUP_FAIL
+ *  IDA_LSOLVE_RECVR    IDA_LSOLVE_FAIL
+ *
+ *  IDA_CONSTR_RECVR
+ *  IDA_NCONV_RECVR
+ * -----------------------------------------------------------------
+ */
+
+static int IDAnls(IDAMem IDA_mem)
+{
+  int retval, ier;
+  booleantype constraintsPassed, callSetup, tryAgain;
+  realtype temp1, temp2, vnorm;
+  N_Vector tempv3;
+
+  callSetup = FALSE;
+
+  /* Initialize if the first time called */
+
+  if(nst == 0){
+    cjold = cj;
+    ss = TWENTY;
+    if(setupNonNull) callSetup = TRUE;
+  }
+
+  mm = tempv2;
+  tempv3 = ee;
+
+
+  /* Decide if lsetup is to be called */
+
+  if(setupNonNull){
+    cjratio = cj / cjold;
+    temp1 = (ONE - XRATE) / (ONE + XRATE);
+    temp2 = ONE/temp1;
+    {if(cjratio < temp1 || cjratio > temp2) callSetup = TRUE;}
+    {if(cj != cjlast) ss=HUNDRED;}
+  }
+
+  /* Begin the main loop. This loop is traversed at most twice. 
+     The second pass only occurs when the first pass had a recoverable
+     failure with old Jacobian data */
+  loop{
+
+
+    /* Compute predicted values for yy and yp, and compute residual there. */
+    ier = IDAPredict(IDA_mem);
+
+    retval = res(tn, yy, yp, delta, rdata);
+    nre++;
+    if(retval < 0) return(IDA_RES_FAIL);
+    if(retval > 0) return(IDA_RES_RECVR);
+
+    /* If indicated, call linear solver setup function and reset parameters. */
+    if(callSetup){
+      nsetups++;
+      retval = lsetup(IDA_mem, yy, yp, delta, tempv1, tempv2, tempv3);
+      cjold = cj;
+      cjratio = ONE;
+      ss = TWENTY;
+      if (retval < 0) return(IDA_LSETUP_FAIL);
+      if (retval > 0) return(IDA_LSETUP_RECVR);
+    }
+
+    /* Call the Newton iteration routine.  */
+
+    retval = IDANewtonIter(IDA_mem);
+
+
+    /* Retry the current step on recoverable failure with old Jacobian data. */
+
+    tryAgain = (retval>0)&&(setupNonNull) &&(!callSetup);
+
+    if(tryAgain){
+      callSetup = TRUE;
+      continue;
+    }
+    else break;
+
+  }  /* end of loop */
+
+  if(retval != IDA_SUCCESS) return(retval);
+
+
+  /* If otherwise successful, check and enforce inequality constraints. */
+
+  if(constraintsSet){  /* Check constraints and get mask vector mm, 
+                          set where constraints failed */
+    constraintsPassed = N_VConstrMask(constraints,yy,mm);
+    if(constraintsPassed) return(IDA_SUCCESS);
+    else {
+      N_VCompare(ONEPT5, constraints, tempv1);  
+      /* a , where a[i] =1. when |c[i]| = 2 ,  c the vector of constraints */
+      N_VProd(tempv1, constraints, tempv1);       /* a * c */
+      N_VDiv(tempv1, ewt, tempv1);                /* a * c * wt */
+      N_VLinearSum(ONE, yy, -PT1, tempv1, tempv1);/* y - 0.1 * a * c * wt */
+      N_VProd(tempv1, mm, tempv1);               /*  v = mm*(y-.1*a*c*wt) */
+      vnorm = IDAWrmsNorm(IDA_mem, tempv1, ewt, FALSE); /*  ||v|| */
+      
+      /* If vector v of constraint corrections is small
+         in norm, correct and accept this step */      
+      if(vnorm <= epsNewt){  
+        N_VLinearSum(ONE, ee, -ONE, tempv1, ee);  /* ee <- ee - v */
+        return(IDA_SUCCESS);
+      }
+      else {
+        /* Constraints not met -- reduce h by computing rr = h'/h */
+        N_VLinearSum(ONE, phi[0], -ONE, yy, tempv1);
+        N_VProd(mm, tempv1, tempv1);
+        rr = PT9*N_VMinQuotient(phi[0], tempv1);
+        rr = MAX(rr,PT1);
+        return(IDA_CONSTR_RECVR);
+      }
+    }
+  }
+  return(IDA_SUCCESS);
+}
+
+
+/*
+ * -----------------------------------------------------------------
+ * IDAPredict
+ * -----------------------------------------------------------------
+ * This routine predicts the new values for vectors yy and yp.
+ * -----------------------------------------------------------------
+ */
+
+static int IDAPredict(IDAMem IDA_mem)
+{
+  int j;
+
+  N_VScale(ONE, phi[0], yy);
+  N_VConst(ZERO, yp);
+  
+  for(j=1; j<=kk; j++) {
+    N_VLinearSum(ONE,      phi[j], ONE, yy, yy);
+    N_VLinearSum(gamma[j], phi[j], ONE, yp, yp);
+  }
+
+  return(IDA_SUCCESS);
+}
+
+
+/*
+ * -----------------------------------------------------------------
+ * IDANewtonIter
+ * -----------------------------------------------------------------
+ * This routine performs the Newton iteration.  
+ * It assumes that delta contains the initial residual vector on entry.
+ * If the iteration succeeds, it returns the value IDA_SUCCESS = 0.
+ * If not, it returns either:
+ *   a positive value (for a recoverable failure), namely one of:
+ *     IDA_RES_RECVR
+ *     IDA_LSOLVE_RECVR
+ *     IDA_NCONV_RECVR
+ * or
+ *   a negative value (for a nonrecoverable failure), namely one of:
+ *     IDA_RES_FAIL
+ *     IDA_LSOLVE_FAIL
+ *
+ *     NOTE: This routine uses N_Vector savres, which is preset to tempv1.
+ * -----------------------------------------------------------------
+ */
+
+static int IDANewtonIter(IDAMem IDA_mem)
+{
+  int mnewt, retval;
+  realtype delnrm, oldnrm, rate;
+
+  /* Initialize counter mnewt and cumulative correction vector ee. */
+  mnewt = 0;
+  N_VConst (ZERO, ee);
+
+  /* Looping point for Newton iteration.  Break out on any error. */
+  loop {
+
+    nni++;
+
+    /* Save a copy of the residual vector in savres. */
+    N_VScale(ONE, delta, savres);
+
+    /* Call the lsolve function to get correction vector delta. */
+    retval = lsolve(IDA_mem, delta, ewt, yy, yp, savres); 
+    if(retval < 0) return(IDA_LSOLVE_FAIL);
+    if(retval > 0) return(IDA_LSOLVE_RECVR);
+
+    /* Apply delta to yy, yp, and ee, and get norm(delta). */
+    N_VLinearSum(ONE, yy, -ONE, delta, yy);
+    N_VLinearSum(ONE, ee, -ONE, delta, ee);
+    N_VLinearSum(ONE, yp, -cj,  delta, yp);
+    delnrm = IDAWrmsNorm(IDA_mem, delta, ewt, FALSE);
+
+    /* Test for convergence, first directly, then with rate estimate. */
+
+    if (mnewt == 0){ 
+       oldnrm = delnrm;
+       if (delnrm <= toldel) return(IDA_SUCCESS);
+    }
+    else {
+      rate = RPowerR( delnrm/oldnrm, ONE/mnewt );
+      if (rate > RATEMAX) return(IDA_NCONV_RECVR); 
+      ss = rate/(ONE - rate);
+    }
+
+    if (ss*delnrm <= epsNewt) return(IDA_SUCCESS);
+
+    /* Not yet converged.  Increment mnewt and test for max allowed. */
+    mnewt++;
+    if (mnewt >= maxcor) {retval = IDA_NCONV_RECVR; break;}
+
+    /* Call res for new residual and check error flag from res. */
+    retval = res(tn, yy, yp, delta, rdata);
+    nre++;
+    if(retval < 0) return(IDA_RES_FAIL);
+    if(retval > 0) return(IDA_RES_RECVR);
+
+    /* Loop for next iteration. */
+
+  } /* end of Newton iteration loop */
+
+  /* All error returns exit here. */
+  return(retval);
+
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDATestError
+ * -----------------------------------------------------------------
+ * This routine estimates errors at orders k, k-1, k-2, decides whether 
+ * or not to reduce order, and performs the local error test. 
+ *
+ * IDATestError returns either  IDA_SUCCESS   or ERROR_TEST_FAIL
+ * -----------------------------------------------------------------
+ */
+
+static int IDATestError(IDAMem IDA_mem, realtype *ck, realtype *est,
+                        realtype *terk, realtype *terkm1, realtype *erkm1)
+{
+  int retval;
+  realtype enorm;
+  realtype terkm2;
+  realtype erk, erkm2;
+
+  /* Compute error for order k. */
+  enorm = IDAWrmsNorm(IDA_mem, ee, ewt, suppressalg);
+  erk = sigma[kk] * enorm;
+  *terk = (kk+1) * erk;
+  *est = erk;
+  knew = kk;
+
+  /* Now compute the errors for orders k-1 and k-2, and decide whether to 
+     reduce the order k to k-1 */
+  
+  if(kk > 1){
+    N_VLinearSum(ONE, phi[kk], ONE, ee, delta);
+    *erkm1 = sigma[kk-1] * IDAWrmsNorm(IDA_mem, delta, ewt, suppressalg);
+    *terkm1 = kk * *erkm1;
+    {
+      if(kk > 2){
+        N_VLinearSum(ONE, phi[kk-1], ONE, delta, delta);
+        erkm2 = sigma[kk-2] * IDAWrmsNorm(IDA_mem, delta, ewt, suppressalg);
+        terkm2 = (kk-1) * erkm2;
+        if(MAX(*terkm1, terkm2) > *terk) goto evaltest;
+      }
+      
+      else if(*terkm1 > (HALF * (*terk))) goto evaltest; /* executed for kk=2 only */
+    }
+    /* end of "kk>2" if/else block */
+    
+    knew = kk-1;
+    *est = *erkm1;
+    
+  } /* end kk>1 if block */ 
+  
+  
+ evaltest:
+  retval = IDA_SUCCESS;
+  
+  if ((*ck * enorm) > ONE) retval = ERROR_TEST_FAIL;
+  return(retval);
+}
+
+
+/*
+ * -----------------------------------------------------------------
+ * IDAHandleNFlag
+ * -----------------------------------------------------------------
+ * This routine handles failures indicated by the input variable nflag. 
+ * Positive values indicate various recoverable failures while negative
+ * values indicate nonrecoverable failures. This routine adjusts the
+ * step size for recoverable failures. 
+ *
+ *  Possible nflag values (input):
+ *
+ *   --convergence failures--
+ *   IDA_RES_RECVR              > 0
+ *   IDA_LSOLVE_RECVR           > 0
+ *   IDA_CONSTR_RECVR           > 0
+ *   IDA_NCONV_RECVR            > 0
+ *   IDA_RES_FAIL               < 0
+ *   IDA_LSOLVE_FAIL            < 0
+ *   IDA_LSETUP_FAIL            < 0
+ *
+ *   --error test failure--
+ *   ERROR_TEST_FAIL            > 0
+ *
+ *  Possible kflag values (output):
+ *
+ *   --recoverable--
+ *   PREDICT_AGAIN
+ *
+ *   --nonrecoverable--
+ *   IDA_CONSTR_FAIL   
+ *   IDA_REP_RES_ERR    
+ *   IDA_ERR_FAIL  
+ *   IDA_CONV_FAIL 
+ *   IDA_RES_FAIL
+ *   IDA_LSETUP_FAIL
+ *   IDA_LSOLVE_FAIL
+ * -----------------------------------------------------------------
+ */
+
+static int IDAHandleNFlag(IDAMem IDA_mem, int nflag, realtype saved_t,
+                          int *ncfPtr, int *nefPtr, realtype *est)
+{
+  int j;
+  int *ncf, *nef;
+  
+  ncf = ncfPtr; nef = nefPtr;
+  phase = 1;
+    
+  /* restore tn, phi, and psi */
+  tn = saved_t;
+  for (j = ns; j <= kk; j++) N_VScale(ONE/beta[j], phi[j], phi[j]);
+  for (j = 1; j <= kk; j++) psi[j-1] = psi[j] - hh;
+  
+  /* NLS FAILURE  */
+
+  if (nflag != ERROR_TEST_FAIL) {
+
+    (*ncf)++; ncfn++;
+
+    /* Nonrecoverable failure */
+    if (nflag < 0) return(nflag);
+
+    /* If there were too many convergence failures */
+    if (*ncf >= maxncf) {
+      if (nflag == IDA_RES_RECVR)    return(IDA_REP_RES_ERR);
+      if (nflag == IDA_CONSTR_RECVR) return(IDA_CONSTR_FAIL);
+      return(IDA_CONV_FAIL);
+    }
+    
+    /* Prepare to predict again */
+    rr = QUARTER;
+    hh *= rr;
+    
+  } 
+
+  /* ERROR TEST FAILURE */
+
+  else { 
+
+    (*nef)++; netf++;
+    
+    /* If there were too many error test failures */
+    if (*nef >= maxnef) return(IDA_ERR_FAIL);
+    
+    /* Prepare to predict again */
+    if (*nef == 1){
+      /* On first error test failure, keep current order or lower order 
+         by one. Compute new stepsize based on differences of the solution. */
+      kk = knew;
+      
+      rr = PT9 * RPowerR( TWO*(*est) + PT0001,(-ONE/(kk+1)) );
+      rr = MAX(QUARTER, MIN(PT9,rr));
+      hh *=rr;  /* adjust step size */
+    } else if (*nef == 2){
+      /* On second error test failure, use current order or decrease order 
+         by one. Reduce stepsize by factor of 1/4. */
+      kk = knew;
+      rr = QUARTER;
+      hh *= rr;
+      
+    } else if (*nef > 2){
+      /* On third and subsequent error test failures, set order to 1 and
+         reduce stepsize h by factor of 1/4. */
+      kk = 1;
+      rr = QUARTER;
+      hh *= rr;
+    }
+
+  } /* end of nflag  if block */
+      
+  if (nst == 0){
+    psi[0] = hh;
+    N_VScale(rr, phi[1], phi[1]);
+  }
+
+  return(PREDICT_AGAIN);
+
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDACompleteStep
+ * -----------------------------------------------------------------
+ * This routine completes a successful step.  It increments nst,
+ * saves the stepsize and order used, makes the final selection of
+ * stepsize and order for the next step, and updates the phi array.
+ * Its return value is IDA_SUCCESS= 0.
+ * -----------------------------------------------------------------
+ */
+
+static int IDACompleteStep(IDAMem IDA_mem, realtype *est, 
+                           realtype *terk, realtype *terkm1, realtype *erkm1)
+{
+  int j, kdiff, action;
+  realtype terkp1, erkp1, temp, hnew;
+
+  nst++;
+  kdiff = kk - kused;
+  kused = kk;
+  hused = hh;
+
+  if ( (knew == kk-1) || (kk == maxord) ) phase = 1;
+
+  /* For the first few steps, until either a step fails, or the order is 
+  reduced, or the order reaches its maximum, we raise the order and double 
+  the stepsize. During these steps, phase = 0. Thereafter, phase = 1, and
+  stepsize and order are set by the usual local error algorithm. 
+
+  Note that, after the first step, the order is not increased, as not all
+  of the neccessary information is available yet.
+  */
+  
+  if (phase == 0) {
+
+    if (nst > 1) {
+      kk++;
+      hnew = TWO * hh;
+      hh = hnew;
+    }
+
+  } else {
+
+    action = UNSET;
+    
+    /* Set action = LOWER/MAINTAIN/RAISE to specify order decision */
+    
+    if (knew == kk-1)   {action = LOWER; goto takeaction;}
+    if (kk == maxord)   {action = MAINTAIN; goto takeaction;}
+    if ( (kk+1 >= ns ) || (kdiff == 1)) {action = MAINTAIN;goto takeaction;}
+    
+    /* Estimate the error at order k+1, unless already decided to
+       reduce order, or already using maximum order, or stepsize has not
+       been constant, or order was just raised. */
+    
+    N_VLinearSum (ONE, ee, -ONE, phi[kk+1], delta);
+    terkp1 = IDAWrmsNorm(IDA_mem, delta, ewt, suppressalg);
+    erkp1= terkp1/(kk+2);
+    
+    /* Choose among orders k-1, k, k+1 using local truncation error norms. */
+    
+    if (kk == 1) {
+      if (terkp1 >= HALF * (*terk)) {action = MAINTAIN; goto takeaction;}
+      else                          {action = RAISE;    goto takeaction;}
+    }
+    else {
+      if (*terkm1 <= MIN(*terk, terkp1)) {action = LOWER;    goto takeaction;}
+      if (terkp1  >= *terk)             {action = MAINTAIN; goto takeaction;}
+      action = RAISE;
+      goto takeaction;
+    }
+    
+  takeaction:
+    
+    /* On change of order, reset kk and the estimated error norm. */
+    
+    if (action == RAISE) { kk++; *est = erkp1;}
+    else if (action == LOWER) { kk--; *est = *erkm1;}
+    
+    /* Compute rr = tentative ratio hnew/hh from error norm.
+       Reduce hh if rr <= 1, double hh if rr >= 2, else leave hh as is.
+       If hh is reduced, hnew/hh is restricted to be between .5 and .9. */
+    
+    hnew = hh;
+    rr = RPowerR( (TWO * (*est) + PT0001) , (-ONE/(kk+1) ) );
+    
+    if (rr >= TWO) {
+      hnew = TWO * hh;
+      if( (temp = ABS(hnew)*hmax_inv) > ONE ) hnew /= temp;
+    }
+    else if (rr <= ONE ) { 
+      rr = MAX(HALF, MIN(PT9,rr));
+      hnew = hh * rr;
+    }
+    
+    hh = hnew;
+    
+  } /* end of phase if block */
+  
+  /* Save ee for possible order increase on next step; update phi array. */
+  
+  if (kused < maxord) N_VScale(ONE, ee, phi[kused+1]);
+  
+  N_VLinearSum(ONE, ee, ONE, phi[kused], phi[kused]);
+  for (j= kused-1; j>=0; j--)
+    N_VLinearSum(ONE, phi[j], ONE, phi[j+1], phi[j]);
+
+  return (IDA_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDAWrmsNorm
+ * -----------------------------------------------------------------
+ *  Returns the WRMS norm of vector x with weights w.
+ *  If mask = TRUE, the weight vector w is masked by id, i.e.,
+ *      nrm = N_VWrmsNormMask(x,w,id);
+ *  Otherwise,
+ *      nrm = N_VWrmsNorm(x,w);
+ * 
+ * mask = FALSE       when the call is made from the nonlinear solver.
+ * mask = suppressalg otherwise.
+ * -----------------------------------------------------------------
+*/
+
+realtype IDAWrmsNorm(IDAMem IDA_mem, N_Vector x, N_Vector w, 
+                     booleantype mask)
+{
+  realtype nrm;
+
+  if (mask) nrm = N_VWrmsNormMask(x, w, id);
+  else      nrm = N_VWrmsNorm(x, w);
+
+  return(nrm);
+}
+
+
+/*=================================================================*/
+/*      Internal EWT function                                      */
+/*=================================================================*/
+
+
+/*  
+ * -----------------------------------------------------------------
+ * IDAEwtSet
+ * -----------------------------------------------------------------
+ * This routine is responsible for loading the error weight vector
+ * ewt, according to itol, as follows:
+ * (1) ewt[i] = 1 / (rtol * ABS(ycur[i]) + atol), i=0,...,Neq-1
+ *     if itol = IDA_SS
+ * (2) ewt[i] = 1 / (rtol * ABS(ycur[i]) + atol[i]), i=0,...,Neq-1
+ *     if itol = IDA_SV
+ *
+ *  IDAEwtSet returns 0 if ewt is successfully set as above to a
+ *  positive vector and -1 otherwise. In the latter case, ewt is
+ *  considered undefined.
+ *
+ * All the real work is done in the routines IDAEwtSetSS, IDAEwtSetSV.
+ * -----------------------------------------------------------------
+ */
+
+int IDAEwtSet(N_Vector ycur, N_Vector weight, void *data)
+{
+  IDAMem IDA_mem;
+  int flag = 0;
+
+  /* data points to IDA_mem here */
+
+  IDA_mem = (IDAMem) data;
+
+  switch(itol) {
+  case IDA_SS: 
+    flag = IDAEwtSetSS(ycur, weight, IDA_mem); 
+    break;
+  case IDA_SV: 
+    flag = IDAEwtSetSV(ycur, weight, IDA_mem); 
+    break;
+  }
+  return(flag);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDAEwtSetSS
+ * -----------------------------------------------------------------
+ * This routine sets ewt as decribed above in the case itol=IDA_SS.
+ * It tests for non-positive components before inverting. IDAEwtSetSS
+ * returns 0 if ewt is successfully set to a positive vector
+ * and -1 otherwise. In the latter case, ewt is considered
+ * undefined.
+ * -----------------------------------------------------------------
+ */
+
+static int IDAEwtSetSS(N_Vector ycur, N_Vector weight, IDAMem IDA_mem)
+{
+  N_VAbs(ycur, tempv1);
+  N_VScale(rtol, tempv1, tempv1);
+  N_VAddConst(tempv1, Satol, tempv1);
+  if (N_VMin(tempv1) <= ZERO) return(-1);
+  N_VInv(tempv1, weight);
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDAEwtSetSV
+ * -----------------------------------------------------------------
+ * This routine sets ewt as decribed above in the case itol=IDA_SV.
+ * It tests for non-positive components before inverting. IDAEwtSetSV
+ * returns 0 if ewt is successfully set to a positive vector
+ * and -1 otherwise. In the latter case, ewt is considered
+ * undefined.
+ * -----------------------------------------------------------------
+ */
+
+static int IDAEwtSetSV(N_Vector ycur, N_Vector weight, IDAMem IDA_mem)
+{
+  N_VAbs(ycur, tempv1);
+  N_VLinearSum(rtol, tempv1, ONE, Vatol, tempv1);
+  if (N_VMin(tempv1) <= ZERO) return(-1);
+  N_VInv(tempv1, weight);
+  return(0);
+}
+
diff --git a/Win32/WinCVODE/sundials/ida/source/ida_impl.h b/Win32/WinCVODE/sundials/ida/source/ida_impl.h
new file mode 100644
index 0000000..4909d78
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/source/ida_impl.h
@@ -0,0 +1,448 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:42:25 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Allan G. Taylor, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/ida/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file (private version) for the main IDA solver.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _IDA_IMPL_H
+#define _IDA_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "ida.h"
+
+#include "sundialstypes.h"
+#include "nvector.h"
+
+/* Prototype of internal ewtSet function */
+
+int IDAEwtSet(N_Vector ycur, N_Vector weight, void *e_data);
+
+/* Basic IDA constants */
+
+#define HMAX_INV_DEFAULT RCONST(0.0) /* hmax_inv default value          */
+#define MAXORD_DEFAULT   5           /* maxord default value            */
+#define MXORDP1          6           /* max. number of N_Vectors in phi */
+#define MXSTEP_DEFAULT   500         /* mxstep default value            */
+
+/******************************************************************
+ * Types : struct IDAMemRec, IDAMem                               *
+ *----------------------------------------------------------------*
+ * The type IDAMem is type pointer to struct IDAMemRec. This      *
+ * structure contains fields to keep track of problem state.      *
+ *                                                                *
+ ******************************************************************/
+
+typedef struct IDAMemRec {
+
+  realtype ida_uround;    /* machine unit roundoff */
+
+  /* Problem Specification Data */
+
+  IDAResFn       ida_res;            /* F(t,y(t),y'(t))=0; the function F  */
+  void          *ida_rdata;          /* user pointer passed to res         */
+
+  int            ida_itol;           /* itol = SS or SV                    */
+  realtype       ida_rtol;           /* relative tolerance                 */
+  realtype       ida_Satol;          /* scalar absolute tolerance          */  
+  N_Vector       ida_Vatol;          /* vector absolute tolerance          */  
+  IDAEwtFn       ida_efun;           /* function to set ewt                */
+  void          *ida_edata;          /* user pointer passed to efun        */
+  
+
+  booleantype    ida_setupNonNull;   /* Does setup do something?           */
+  booleantype    ida_constraintsSet; /* constraints vector present: 
+                                        do constraints calc                */
+  booleantype    ida_suppressalg;    /* true means suppress algebraic vars
+                                        in local error tests               */
+
+  /* Divided differences array and associated minor arrays */
+
+  N_Vector ida_phi[MXORDP1];   /* phi = (maxord+1) arrays of divided differences */
+
+  realtype ida_psi[MXORDP1];   /* differences in t (sums of recent step sizes)   */
+  realtype ida_alpha[MXORDP1]; /* ratios of current stepsize to psi values       */
+  realtype ida_beta[MXORDP1];  /* ratios of current to previous product of psi's */
+  realtype ida_sigma[MXORDP1]; /* product successive alpha values and factorial  */
+  realtype ida_gamma[MXORDP1]; /* sum of reciprocals of psi values               */
+
+  /* N_Vectors */
+
+  N_Vector ida_ewt;         /* error weight vector                           */
+  N_Vector ida_yy;          /* work space for y vector (= user's yret)       */
+  N_Vector ida_yp;          /* work space for y' vector (= user's ypret)     */
+  N_Vector ida_delta;       /* residual vector                               */
+  N_Vector ida_id;          /* bit vector for diff./algebraic components     */
+  N_Vector ida_constraints; /* vector of inequality constraint options       */
+  N_Vector ida_savres;      /* saved residual vector (= tempv1)              */
+  N_Vector ida_ee;          /* accumulated corrections to y                  */
+  N_Vector ida_mm;          /* mask vector in constraints tests (= tempv2)   */
+  N_Vector ida_tempv1;      /* work space vector                             */
+  N_Vector ida_tempv2;      /* work space vector                             */
+  N_Vector ida_ynew;        /* work vector for y in IDACalcIC (= tempv2)     */
+  N_Vector ida_ypnew;       /* work vector for yp in IDACalcIC (= ee)        */
+  N_Vector ida_delnew;      /* work vector for delta in IDACalcIC (= phi[2]) */
+  N_Vector ida_dtemp;       /* work vector in IDACalcIC (= phi[3])           */
+
+  /* Variables for use by IDACalcIC*/
+
+  realtype ida_t0;          /* initial t                                     */
+  N_Vector ida_yy0;         /* initial y vector (user-supplied).             */
+  N_Vector ida_yp0;         /* initial y' vector (user-supplied).            */
+
+  int ida_icopt;            /* IC calculation user option                    */
+  booleantype ida_lsoff;    /* IC calculation linesearch turnoff option      */
+  int ida_maxnh;            /* max. number of h tries in IC calculation      */
+  int ida_maxnj;            /* max. number of J tries in IC calculation      */
+  int ida_maxnit;           /* max. number of Netwon iterations in IC calc.  */
+  int ida_nbacktr;          /* number of IC linesearch backtrack operations  */
+  int ida_sysindex;         /* computed system index (0 or 1)                */
+  realtype ida_epiccon;     /* IC nonlinear convergence test constant        */
+  realtype ida_steptol;     /* minimum Newton step size in IC calculation    */
+  realtype ida_tscale;      /* time scale factor = abs(tout1 - t0)           */
+
+  /* Tstop information */
+
+  booleantype ida_tstopset;
+  realtype ida_tstop;
+
+  /* Step Data */
+
+  int ida_kk;        /* current BDF method order                              */
+  int ida_kused;     /* method order used on last successful step             */
+  int ida_knew;      /* order for next step from order decrease decision      */
+  int ida_phase;     /* flag to trigger step doubling in first few steps      */
+  int ida_ns;        /* counts steps at fixed stepsize and order              */
+
+  realtype ida_hin;      /* initial step                                      */
+  realtype ida_h0u;      /* actual initial stepsize                           */
+  realtype ida_hh;       /* current step size h                               */
+  realtype ida_hused;    /* step size used on last successful step            */
+  realtype ida_rr;       /* rr = hnext / hused                                */
+  realtype ida_tn;       /* current internal value of t                       */
+  realtype ida_tretp;    /* value of tret previously returned by IDASolve     */
+  realtype ida_cj;       /* current value of scalar (-alphas/hh) in Jacobian  */
+  realtype ida_cjlast;   /* cj value saved from last successful step          */
+  realtype ida_cjold;    /* cj value saved from last call to lsetup           */
+  realtype ida_cjratio;  /* ratio of cj values: cj/cjold                      */
+  realtype ida_ss;       /* scalar used in Newton iteration convergence test  */
+  realtype ida_epsNewt;  /* test constant in Newton convergence test          */
+  realtype ida_epcon;    /* coeficient of the Newton covergence test          */
+  realtype ida_toldel;   /* tolerance in direct test on Newton corrections    */
+
+ /* Limits */
+
+  int ida_maxncf;        /* max numer of convergence failures                 */
+  int ida_maxcor;        /* max number of Newton corrections                  */
+  int ida_maxnef;        /* max number of error test failures                 */
+
+  int ida_maxord;        /* max value of method order k:                      */
+  long int ida_mxstep;   /* max number of internal steps for one user call    */
+  realtype ida_hmax_inv; /* inverse of max. step size hmax (default = 0.0)    */
+
+  /* Counters */
+
+  long int ida_nst;      /* number of internal steps taken                    */
+  long int ida_nre;      /* number of function (res) calls                    */
+  long int ida_ncfn;     /* number of corrector convergence failures          */
+  long int ida_netf;     /* number of error test failures                     */
+  long int ida_nni;      /* number of Newton iterations performed             */
+  long int ida_nsetups;  /* number of lsetup calls                            */
+
+  /* Space requirements for IDA */
+
+  long int ida_lrw1;     /* no. of realtype words in 1 N_Vector               */
+  long int ida_liw1;     /* no. of integer words in 1 N_Vector                */
+  long int ida_lrw;      /* number of realtype words in IDA work vectors      */
+  long int ida_liw;      /* no. of integer words in IDA work vectors          */
+
+  realtype ida_tolsf;    /* tolerance scale factor (saved value)              */
+
+  FILE *ida_errfp;       /* IDA error messages are sent to errfp              */
+
+  /* Flags to verify correct calling sequence */
+
+  booleantype ida_SetupDone;     /* set to FALSE by IDAMalloc and IDAReInit   */
+                                 /* set to TRUE by IDACalcIC or IDASolve      */
+
+  booleantype ida_VatolMallocDone;
+  booleantype ida_constraintsMallocDone;
+  booleantype ida_idMallocDone;
+
+  booleantype ida_MallocDone;    /* set to FALSE by IDACreate                 */
+                                 /* set to TRUE by IDAMAlloc                  */
+                                 /* tested by IDAReInit and IDASolve          */
+
+  /* Linear Solver Data */
+
+  /* Linear Solver functions to be called */
+
+  int (*ida_linit)(struct IDAMemRec *idamem);
+
+  int (*ida_lsetup)(struct IDAMemRec *idamem, N_Vector yyp, 
+                    N_Vector ypp, N_Vector resp, 
+                    N_Vector tempv1, N_Vector tempv2, N_Vector tempv3); 
+
+  int (*ida_lsolve)(struct IDAMemRec *idamem, N_Vector b, N_Vector weight,
+                    N_Vector ycur, N_Vector ypcur, N_Vector rescur);
+
+  int (*ida_lperf)(struct IDAMemRec *idamem, int perftask);
+
+  int (*ida_lfree)(struct IDAMemRec *idamem);
+
+  /* Linear Solver specific memory */
+
+  void *ida_lmem;           
+
+  /* Flag to indicate successful ida_linit call */
+
+  booleantype ida_linitOK;
+
+} *IDAMem;
+
+
+/*
+ *----------------------------------------------------------------
+ * IDA Error Messages
+ *----------------------------------------------------------------
+ */
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+
+#define MSG_TIME "at t = %Lg, "
+#define MSG_TIME_H "at t = %Lg and h = %Lg, "
+#define MSG_TIME_INT "t is not between tcur - hu = %Lg and tcur = %Lg.\n\n"
+#define MSG_TIME_TOUT "tout = %Lg"
+
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+
+#define MSG_TIME "at t = %lg, "
+#define MSG_TIME_H "at t = %lg and h = %lg, "
+#define MSG_TIME_INT "t is not between tcur - hu = %lg and tcur = %lg.\n\n"
+#define MSG_TIME_TOUT "tout = %lg"
+
+#else
+
+#define MSG_TIME "at t = %g, "
+#define MSG_TIME_H "at t = %g and h = %g, "
+#define MSG_TIME_INT "t is not between tcur - hu = %g and tcur = %g.\n\n"
+#define MSG_TIME_TOUT "tout = %g"
+
+#endif
+
+/* IDACreate error messages */
+
+#define MSG_IDAMEM_FAIL    "IDACreate-- allocation of ida_mem failed. \n\n"
+
+/* IDAMalloc/IDAReInit error messages */
+
+#define _IDAM_             "IDAMalloc/IDAReInit-- "
+
+#define MSG_IDAM_NO_MEM    _IDAM_ "ida_mem = NULL illegal.\n\n"
+
+#define MSG_Y0_NULL        _IDAM_ "y0 = NULL illegal.\n\n"
+#define MSG_YP0_NULL       _IDAM_ "yp0 = NULL illegal.\n\n"
+
+#define MSG_BAD_ITOL       _IDAM_ "itol has an illegal value.\n"
+
+#define MSG_RES_NULL       _IDAM_ "res = NULL illegal.\n\n"
+
+#define MSG_BAD_RTOL       _IDAM_ "*reltol < 0 illegal.\n\n"
+
+#define MSG_ATOL_NULL      _IDAM_ "abstol = NULL illegal.\n\n"
+
+#define MSG_BAD_ATOL       _IDAM_ "some abstol component < 0.0 illegal.\n\n"
+
+#define MSG_BAD_NVECTOR    _IDAM_ "a required vector operation is not implemented.\n\n"
+
+#define MSG_MEM_FAIL       _IDAM_ "a memory request failed.\n\n"
+
+#define MSG_REI_NO_MALLOC  "IDAReInit-- attempt to call before IDAMalloc. \n\n"
+
+/* IDAInitialSetup error messages -- called from IDACalcIC or IDASolve */
+
+#define _IDAIS_              "Initial setup-- "
+
+#define MSG_MISSING_ID      _IDAIS_ "id = NULL but suppressalg option on.\n\n"
+
+#define MSG_NO_EFUN         _IDAIS_ "itol = IDA_WF but no EwtSet function was provided.\n\n"
+
+#define MSG_FAIL_EWT        _IDAIS_ "The user-provide EwtSet function failed.\n\n"
+
+#define MSG_BAD_EWT         _IDAIS_ "some initial ewt component = 0.0 illegal.\n\n"
+
+#define MSG_Y0_FAIL_CONSTR  _IDAIS_ "y0 fails to satisfy constraints.\n\n"
+
+#define MSG_LSOLVE_NULL     _IDAIS_ "the linear solver's solve routine is NULL.\n\n"
+
+#define MSG_LINIT_FAIL      _IDAIS_ "the linear solver's init routine failed.\n\n"
+
+/* IDASolve error messages */
+
+#define _IDASLV_             "IDASolve-- "
+
+#define MSG_IDA_NO_MEM     _IDASLV_ "ida_mem = NULL illegal.\n\n"
+
+#define MSG_NO_MALLOC      _IDASLV_ "attempt to call before IDAMalloc. \n\n"
+ 
+#define MSG_BAD_HINIT      _IDASLV_ "initial step is not towards tout.\n\n"
+
+#define MSG_BAD_TOUT1      _IDASLV_ "trouble interpolating at " MSG_TIME_TOUT ".\n"
+#define MSG_BAD_TOUT2      "tout too far back in direction of integration.\n\n"
+#define MSG_BAD_TOUT       MSG_BAD_TOUT1 MSG_BAD_TOUT2
+
+#define MSG_BAD_TSTOP      _IDASLV_ MSG_TIME "tstop is behind.\n\n"
+
+#define MSG_MAX_STEPS      _IDASLV_ MSG_TIME "maximum number of steps reached.\n\n"
+
+#define MSG_EWT_NOW_FAIL   _IDASLV_ MSG_TIME "the user-provide EwtSet function failed.\n\n"
+
+#define MSG_EWT_NOW_BAD    _IDASLV_ MSG_TIME "some ewt component has become <= 0.0.\n\n"
+
+#define MSG_TOO_MUCH_ACC   _IDASLV_ MSG_TIME "too much accuracy requested.\n\n"
+
+#define MSG_ERR_FAILS1     "the error test\nfailed repeatedly or with |h| = hmin.\n\n"
+#define MSG_ERR_FAILS      _IDASLV_ MSG_TIME_H MSG_ERR_FAILS1
+
+#define MSG_CONV_FAILS1    "the corrector convergence\nfailed repeatedly.\n\n"
+#define MSG_CONV_FAILS     _IDASLV_ MSG_TIME_H MSG_CONV_FAILS1
+
+#define MSG_SETUP_FAILED1  "the linear solver setup failed unrecoverably.\n\n"
+#define MSG_SETUP_FAILED   _IDASLV_ MSG_TIME MSG_SETUP_FAILED1
+
+#define MSG_SOLVE_FAILED1  "the linear solver solve failed unrecoverably.\n\n"
+#define MSG_SOLVE_FAILED   _IDASLV_ MSG_TIME MSG_SOLVE_FAILED1
+
+#define MSG_TOO_CLOSE      _IDASLV_ "tout too close to t0 to start integration.\n\n"
+
+#define MSG_YRET_NULL      _IDASLV_ "yret = NULL illegal.\n\n"
+#define MSG_YPRET_NULL     _IDASLV_ "ypret = NULL illegal.\n\n"
+#define MSG_TRET_NULL      _IDASLV_ "tret = NULL illegal.\n\n"
+
+#define MSG_BAD_ITASK      _IDASLV_ "itask has an illegal value.\n\n"
+
+#define MSG_NO_TSTOP       _IDASLV_ "tstop not set for this itask. \n\n"
+
+#define MSG_REP_RES_ERR1   "repeated recoverable residual errors.\n\n"
+#define MSG_REP_RES_ERR    _IDASLV_ MSG_TIME MSG_REP_RES_ERR1
+
+#define MSG_RES_NONRECOV1  "the residual function failed unrecoverably. \n\n"
+#define MSG_RES_NONRECOV   _IDASLV_ MSG_TIME MSG_RES_NONRECOV1
+
+#define MSG_FAILED_CONSTR1 "unable to satisfy inequality constraints. \n\n"
+#define MSG_FAILED_CONSTR  _IDASLV_ MSG_TIME MSG_FAILED_CONSTR1
+
+/* IDACalcIC error messages */
+
+#define _IDAIC_            "IDACalcIC-- "
+
+#define MSG_IC_NO_MEM      _IDAIC_ "IDA_mem = NULL illegal.\n\n"
+
+#define MSG_IC_NO_MALLOC   _IDAIC_ "attempt to call before IDAMalloc. \n\n"
+ 
+#define MSG_IC_Y0_NULL     _IDAIC_ "y0 = NULL illegal.\n\n"
+#define MSG_IC_YP0_NULL    _IDAIC_ "yp0 = NULL illegal.\n\n"
+
+#define MSG_IC_BAD_ICOPT   _IDAIC_ "icopt has an illegal value.\n\n"
+
+#define MSG_IC_MISSING_ID  _IDAIC_ "id = NULL conflicts with icopt.\n\n"
+
+#define MSG_IC_BAD_ID      _IDAIC_ "id has illegal values.\n\n"
+
+#define MSG_IC_TOO_CLOSE1  _IDAIC_ "tout1 too close to t0 to attempt "
+#define MSG_IC_TOO_CLOSE2  "initial condition calculation.\n\n"
+#define MSG_IC_TOO_CLOSE   MSG_IC_TOO_CLOSE1 MSG_IC_TOO_CLOSE2
+
+#define MSG_IC_BAD_EWT     _IDAIC_ "some ewt component = 0.0 illegal.\n\n"
+
+#define MSG_IC_RES_NONR1   "the residual function failed unrecoverably. \n\n"
+#define MSG_IC_RES_NONREC  _IDAIC_ MSG_IC_RES_NONR1
+
+#define MSG_IC_RES_FAIL1   "the residual function failed at the first call. \n\n"
+#define MSG_IC_RES_FAIL    _IDAIC_ MSG_IC_RES_FAIL1
+
+#define MSG_IC_SETUP_FAIL1 "the linear solver setup failed unrecoverably.\n\n"
+#define MSG_IC_SETUP_FAIL  _IDAIC_ MSG_IC_SETUP_FAIL1
+
+#define MSG_IC_SOLVE_FAIL1 "the linear solver solve failed unrecoverably.\n\n"
+#define MSG_IC_SOLVE_FAIL  _IDAIC_ MSG_IC_SOLVE_FAIL1
+
+#define MSG_IC_NO_RECOV1   _IDAIC_ "The residual routine or the linear"
+#define MSG_IC_NO_RECOV2   " setup or solve routine had a recoverable"
+#define MSG_IC_NO_RECOV3   " error, but IDACalcIC was unable to recover.\n\n"
+#define MSG_IC_NO_RECOVERY MSG_IC_NO_RECOV1 MSG_IC_NO_RECOV2 MSG_IC_NO_RECOV3
+
+#define MSG_IC_FAIL_CON1   "Unable to satisfy the inequality constraints.\n\n"
+#define MSG_IC_FAIL_CONSTR _IDAIC_ MSG_IC_FAIL_CON1
+
+#define MSG_IC_FAILED_LS1  "the linesearch algorithm failed with too small a step.\n\n"
+#define MSG_IC_FAILED_LINS _IDAIC_ MSG_IC_FAILED_LS1
+
+#define MSG_IC_CONV_FAIL1  "Newton/Linesearch algorithm failed to converge.\n\n"
+#define MSG_IC_CONV_FAILED _IDAIC_ MSG_IC_CONV_FAIL1
+
+/* IDASet* error messages */
+
+#define MSG_IDAS_NO_MEM      "IDASet*-- ida_mem = NULL illegal. \n\n"
+
+#define MSG_IDAS_NEG_MAXORD  "IDASetMaxOrd-- maxord<=0 illegal. \n\n"
+
+#define MSG_IDAS_BAD_MAXORD  "IDASetMaxOrd-- illegal to increase maximum order.\n\n"
+
+#define MSG_IDAS_NEG_MXSTEPS "IDASetMaxNumSteps-- mxsteps < 0 illegal. \n\n"
+
+#define MSG_IDAS_NEG_HMAX    "IDASetMaxStep-- hmax < 0 illegal. \n\n"
+
+#define MSG_IDAS_NEG_EPCON   "IDASetNonlinConvCoef-- epcon < 0.0 illegal. \n\n"
+
+#define MSG_IDAS_BAD_NVECTOR  "IDASetConstraints-- a required vector operation is not implemented.\n\n"
+
+#define MSG_IDAS_BAD_CONSTRAINTS "IDASetConstraints-- illegal values in constraints vector.\n\n"
+
+#define MSG_IDAS_NO_MALLOC   "IDASetTolerances-- Attemp to call before IDAMalloc.\n\n"
+
+#define MSG_IDAS_BAD_ITOL    "IDASetTolerances-- itol has an illegal value.\n\n"
+
+#define MSG_IDAS_BAD_RTOL    "IDASetTolerances-- *rtol < 0 illegal.\n\n"
+
+#define MSG_IDAS_ATOL_NULL   "IDASetTolerances-- atol = NULL illegal.\n\n"
+
+#define MSG_IDAS_BAD_ATOL    "IDASetTolerances-- some atol component < 0.0 illegal.\n\n"
+
+#define MSG_IDAS_BAD_EPICCON "IDASetNonlinConvCoefIC-- epiccon < 0.0 illegal.\n\n"
+
+#define MSG_IDAS_BAD_MAXNH   "IDASetMaxNumStepsIC-- maxnh < 0 illegal.\n\n"
+
+#define MSG_IDAS_BAD_MAXNJ   "IDASetMaxNumJacsIC-- maxnj < 0 illegal.\n\n"
+
+#define MSG_IDAS_BAD_MAXNIT  "IDASetMaxNumItersIC-- maxnit < 0 illegal.\n\n"
+
+#define MSG_IDAS_BAD_STEPTOL "IDASetLineSearchOffIC-- steptol < 0.0 illegal.\n\n"
+
+/* IDAGet* Error Messages */
+
+#define MSG_IDAG_NO_MEM    "IDAGet*-- ida_mem = NULL illegal. \n\n"
+
+#define MSG_IDAG_BAD_T1    "IDAGetSolution-- "
+#define MSG_IDAG_BAD_T     MSG_IDAG_BAD_T1 MSG_TIME MSG_TIME_INT
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/ida/source/idaband.c b/Win32/WinCVODE/sundials/ida/source/idaband.c
new file mode 100644
index 0000000..178f7ca
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/source/idaband.c
@@ -0,0 +1,576 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:42:25 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/ida/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the IDA banded linear
+ * solver module, IDABAND. This module uses standard banded
+ * matrix techniques to solve the linear systems generated by the
+ * (nonlinear) Newton iteration process. The user may either
+ * supply a banded Jacobian routine or use the routine supplied
+ * with this module (IDABandDQJac).
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "ida_impl.h"
+#include "idaband_impl.h"
+
+#include "sundialsmath.h"
+
+/* Constants */
+
+#define ZERO         RCONST(0.0)
+#define ONE          RCONST(1.0)
+#define TWO          RCONST(2.0)
+
+/* IDABAND linit, lsetup, lsolve, and lfree routines */
+ 
+static int IDABandInit(IDAMem IDA_mem);
+
+static int IDABandSetup(IDAMem IDA_mem, N_Vector yyp, N_Vector ypp,
+                        N_Vector rrp, N_Vector tmp1,
+                        N_Vector tmp2, N_Vector tmp3);
+
+static int IDABandSolve(IDAMem IDA_mem, N_Vector b, N_Vector weight,
+                        N_Vector ycur, N_Vector ypcur, N_Vector rrcur);
+
+static int IDABandFree(IDAMem IDA_mem);
+
+static int IDABandDQJac(long int Neq, long int mupper, long int mlower,
+                        realtype tt, N_Vector yy, N_Vector yp, N_Vector rr,
+                        realtype c_j, void *jac_data, BandMat Jac,
+                        N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/* Readability Replacements */
+
+#define res         (IDA_mem->ida_res)
+#define rdata       (IDA_mem->ida_rdata)
+#define uround      (IDA_mem->ida_uround)
+#define tn          (IDA_mem->ida_tn)
+#define hh          (IDA_mem->ida_hh)
+#define cj          (IDA_mem->ida_cj)
+#define cjratio     (IDA_mem->ida_cjratio)
+#define ewt         (IDA_mem->ida_ewt)
+#define constraints (IDA_mem->ida_constraints)
+#define nre         (IDA_mem->ida_nre)
+#define errfp       (IDA_mem->ida_errfp)
+#define iopt        (IDA_mem->ida_iopt)
+#define linit       (IDA_mem->ida_linit)
+#define lsetup      (IDA_mem->ida_lsetup)
+#define lsolve      (IDA_mem->ida_lsolve)
+#define lperf       (IDA_mem->ida_lperf)
+#define lfree       (IDA_mem->ida_lfree)
+#define lmem        (IDA_mem->ida_lmem)
+#define setupNonNull (IDA_mem->ida_setupNonNull)
+#define vec_tmpl     (IDA_mem->ida_tempv1)
+
+#define neq         (idaband_mem->b_neq)
+#define ml          (idaband_mem->b_mlower)
+#define mu          (idaband_mem->b_mupper)
+#define jac         (idaband_mem->b_jac)
+#define JJ          (idaband_mem->b_J)
+#define storage_mu  (idaband_mem->b_storage_mu)
+#define pivots      (idaband_mem->b_pivots)
+#define nje         (idaband_mem->b_nje)
+#define nreB        (idaband_mem->b_nreB)
+#define jacdata     (idaband_mem->b_jdata)
+#define last_flag   (idaband_mem->b_last_flag)
+                  
+/*
+ * -----------------------------------------------------------------
+ * IDABand
+ * -----------------------------------------------------------------
+ * This routine initializes the memory record and sets various function
+ * fields specific to the IDABAND linear solver module.
+ * IDABand first calls the existing lfree routine if this is not NULL.
+ * Then it sets the ida_linit, ida_lsetup, ida_lsolve, ida_lperf, and
+ * ida_lfree fields in (*IDA_mem) to be IDABandInit, IDABandSetup,
+ * IDABandSolve, NULL, and IDABandFree, respectively.
+ * It allocates memory for a structure of type IDABandMemRec and sets
+ * the ida_lmem field in (*IDA_mem) to the address of this structure.
+ * It sets setupNonNull in (*IDA_mem) to TRUE, sets the b_jdata field in
+ * the IDABandMemRec structure to be the input parameter jdata, and sets
+ * the b_jac field to be:
+ *   (1) the input parameter bjac, if bjac != NULL, or
+ *   (2) IDABandDQJac, if bjac == NULL.
+ * Finally, it allocates memory for JJ and pivots.
+ * IDABand returns IDABAND_SUCCESS = 0, IDABAND_LMEM_FAIL = -1,
+ * or IDABAND_ILL_INPUT = -2.
+ *
+ * NOTE: The band linear solver assumes a serial implementation
+ *       of the NVECTOR package. Therefore, IDABand will first 
+ *       test for a compatible N_Vector internal representation by
+ *       checking that the N_VGetArrayPointer function exists
+ * -----------------------------------------------------------------
+ */
+
+int IDABand(void *ida_mem, long int Neq, 
+            long int mupper, long int mlower)
+{
+  IDAMem IDA_mem;
+  IDABandMem idaband_mem;
+  int flag;
+
+  /* Return immediately if ida_mem is NULL. */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGB_MEM_FAIL);
+    return(IDABAND_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  /* Test if the NVECTOR package is compatible with the BAND solver */
+  if(vec_tmpl->ops->nvgetarraypointer == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_BAD_NVECTOR);
+    return(IDABAND_ILL_INPUT);
+  }
+
+  if (lfree != NULL) flag = lfree((IDAMem) ida_mem);
+
+  /* Set five main function fields in ida_mem. */
+  linit  = IDABandInit;
+  lsetup = IDABandSetup;
+  lsolve = IDABandSolve;
+  lperf  = NULL;
+  lfree  = IDABandFree;
+
+  /* Get memory for IDABandMemRec. */
+  idaband_mem = (IDABandMem) malloc(sizeof(IDABandMemRec));
+  if (idaband_mem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_MEM_FAIL);
+    return(IDABAND_MEM_FAIL);
+  }
+
+  /* Set default Jacobian routine and Jacobian data */
+  jac = IDABandDQJac;
+  jacdata = IDA_mem;
+  last_flag = IDABAND_SUCCESS;
+
+  setupNonNull = TRUE;
+
+  /* Store problem size */
+  neq = Neq;
+
+  /* Test mlower and mupper for legality and load in memory. */
+  if ((mlower < 0) || (mupper < 0) || (mlower >= Neq) || (mupper >= Neq)) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_BAD_SIZES);
+    return(IDABAND_ILL_INPUT);
+  }
+  idaband_mem->b_mlower = mlower;
+  idaband_mem->b_mupper = mupper;
+    
+  /* Set extended upper half-bandwidth for JJ (required for pivoting). */
+  storage_mu = MIN(Neq-1, mupper + mlower);
+
+  /* Allocate memory for JJ and pivot array. */
+  JJ = BandAllocMat(Neq, mupper, mlower, storage_mu);
+  if (JJ == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_MEM_FAIL);
+    return(IDABAND_MEM_FAIL);
+  }
+  pivots = BandAllocPiv(Neq);
+  if (pivots == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_MEM_FAIL);
+    BandFreeMat(JJ);
+    return(IDABAND_MEM_FAIL);
+  }  
+  
+  /* Attach linear solver memory to the integrator memory */
+  lmem = idaband_mem;
+
+  return(IDABAND_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDABandSet* and IDABandGet*
+ * -----------------------------------------------------------------
+ */
+
+int IDABandSetJacFn(void *ida_mem, IDABandJacFn bjac, void *jac_data)
+{
+  IDAMem IDA_mem;
+  IDABandMem idaband_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_IDAMEM_NULL);
+    return(IDABAND_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(IDABAND_LMEM_NULL);
+  }
+  idaband_mem = (IDABandMem) lmem;
+
+  jac = bjac;
+  if (bjac != NULL) jacdata = jac_data;
+
+  return(IDABAND_SUCCESS);
+}
+
+int IDABandGetWorkSpace(void *ida_mem, long int *lenrwB, long int *leniwB)
+{
+  IDAMem IDA_mem;
+  IDABandMem idaband_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_IDAMEM_NULL);
+    return(IDABAND_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(IDABAND_LMEM_NULL);
+  }
+  idaband_mem = (IDABandMem) lmem;
+
+  *lenrwB = neq*(storage_mu + ml + 1);
+  *leniwB = neq;
+
+  return(IDABAND_SUCCESS);
+}
+
+int IDABandGetNumJacEvals(void *ida_mem, long int *njevalsB)
+{
+  IDAMem IDA_mem;
+  IDABandMem idaband_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_IDAMEM_NULL);
+    return(IDABAND_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(IDABAND_LMEM_NULL);
+  }
+  idaband_mem = (IDABandMem) lmem;
+
+  *njevalsB = nje;
+
+  return(IDABAND_SUCCESS);
+}
+
+int IDABandGetNumResEvals(void *ida_mem, long int *nrevalsB)
+{
+  IDAMem IDA_mem;
+  IDABandMem idaband_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_IDAMEM_NULL);
+    return(IDABAND_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(IDABAND_LMEM_NULL);
+  }
+  idaband_mem = (IDABandMem) lmem;
+
+  *nrevalsB = nreB;
+
+  return(IDABAND_SUCCESS);
+}
+
+int IDABandGetLastFlag(void *ida_mem, int *flag)
+{
+  IDAMem IDA_mem;
+  IDABandMem idaband_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGB_SETGET_IDAMEM_NULL);
+    return(IDABAND_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGB_SETGET_LMEM_NULL);
+    return(IDABAND_LMEM_NULL);
+  }
+  idaband_mem = (IDABandMem) lmem;
+
+  *flag = last_flag;
+
+  return(IDABAND_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDABAND interface functions
+ * -----------------------------------------------------------------
+ */
+
+/*
+  This routine does remaining initializations specific to the IDABAND
+  linear solver module.  It returns 0.
+*/
+
+static int IDABandInit(IDAMem IDA_mem)
+{
+  IDABandMem idaband_mem;
+
+  idaband_mem = (IDABandMem) lmem;
+
+  /* Initialize nje and nreB */
+  nje  = 0;
+  nreB = 0;
+
+  if (jac == NULL) {
+    jac = IDABandDQJac;
+    jacdata = IDA_mem;
+  }
+
+  last_flag = 0;
+  return(0);
+}
+
+
+/*
+  This routine does the setup operations for the IDABAND linear 
+  solver module.  It calls the Jacobian evaluation routine,
+  updates counters, and calls the band LU factorization routine.
+  The return value is either
+     IDABAND_SUCCESS = 0  if successful,
+     +1  if the jac routine failed recoverably or the
+         LU factorization failed, or
+     -1  if the jac routine failed unrecoverably.
+*/
+
+static int IDABandSetup(IDAMem IDA_mem, N_Vector yyp, N_Vector ypp,
+                        N_Vector rrp, N_Vector tmp1, N_Vector tmp2,
+                        N_Vector tmp3)
+{
+  int retval;
+  long int retfac;
+  IDABandMem idaband_mem;
+  
+  idaband_mem = (IDABandMem) lmem;
+
+  /* Increment nje counter. */
+  nje++;
+
+  /* Zero out JJ; call Jacobian routine jac; return if it failed. */
+  BandZero(JJ);
+  retval = jac(neq, mu, ml, tn, yyp, ypp, rrp, cj,
+               jacdata, JJ, tmp1, tmp2, tmp3);
+  last_flag = retval;
+  if (retval < 0) return(-1);
+  if (retval > 0) return(+1);
+
+  /* Do LU factorization of JJ; return success or fail flag. */
+  retfac = BandFactor(JJ, pivots);
+  
+  if (retfac != 0) {
+    last_flag = 1;
+    return(+1);
+  }
+  last_flag = 0;
+  return(0);
+}
+/*
+  This routine handles the solve operation for the IDABAND linear
+  solver module.  It calls the band backsolve routine, scales the
+  solution vector according to cjratio, then returns IDABAND_SUCCESS = 0.
+*/
+
+static int IDABandSolve(IDAMem IDA_mem, N_Vector b, N_Vector weight,
+                        N_Vector ycur, N_Vector ypcur, N_Vector rrcur)
+{
+  IDABandMem idaband_mem;
+  realtype *bd;
+
+  idaband_mem = (IDABandMem) lmem;
+  
+  bd = N_VGetArrayPointer(b);
+  BandBacksolve(JJ, pivots, bd);
+
+  /* Scale the correction to account for change in cj. */
+  if (cjratio != ONE) N_VScale(TWO/(ONE + cjratio), b, b);
+  
+  last_flag = 0;
+  return(0);
+}
+
+/*
+  This routine frees memory specific to the IDABAND linear solver.
+*/
+
+static int IDABandFree(IDAMem IDA_mem)
+{
+  IDABandMem idaband_mem;
+
+  idaband_mem = (IDABandMem) lmem;
+  
+  BandFreeMat(JJ);
+  BandFreePiv(pivots);
+  free(lmem);
+
+  return(0);
+
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDABAND private routines
+ * -----------------------------------------------------------------
+ */
+
+/*
+  This routine generates a banded difference quotient approximation JJ
+  to the DAE system Jacobian J.  It assumes that a band matrix of type
+  BandMat is stored column-wise, and that elements within each column
+  are contiguous.  The address of the jth column of JJ is obtained via
+  the macros BAND_COL and BAND_COL_ELEM. The columns of the Jacobian are 
+  constructed using mupper + mlower + 1 calls to the res routine, and
+  appropriate differencing.
+  The return value is either IDABAND_SUCCESS = 0, or the nonzero value returned
+  by the res routine, if any.
+*/
+
+static int IDABandDQJac(long int Neq, long int mupper, long int mlower,
+                        realtype tt, N_Vector yy, N_Vector yp, N_Vector rr,
+                        realtype c_j, void *jac_data, BandMat Jac,
+                        N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  realtype inc, inc_inv, yj, ypj, srur, conj, ewtj;
+  realtype *y_data, *yp_data, *ewt_data, *cns_data = NULL;
+  realtype *ytemp_data, *yptemp_data, *rtemp_data, *r_data, *col_j;
+  int group;
+  
+  N_Vector rtemp, ytemp, yptemp;
+  long int i, j, i1, i2, width, ngroups;
+  int retval = IDABAND_SUCCESS;
+
+  IDAMem IDA_mem;
+  IDABandMem idaband_mem;
+
+  /* jac_data points to IDA_mem */
+  IDA_mem = (IDAMem) jac_data;
+  idaband_mem = (IDABandMem) lmem;
+
+  rtemp = tmp1; /* Rename work vector for use as the perturbed residual. */
+
+  ytemp = tmp2; /* Rename work vector for use as a temporary for yy. */
+
+
+  yptemp= tmp3; /* Rename work vector for use as a temporary for yp. */
+
+  /* Obtain pointers to the data for all eight vectors used.  */
+
+  ewt_data = N_VGetArrayPointer(ewt);
+  r_data   = N_VGetArrayPointer(rr);
+  y_data   = N_VGetArrayPointer(yy);
+  yp_data  = N_VGetArrayPointer(yp);
+
+  rtemp_data  = N_VGetArrayPointer(rtemp);
+  ytemp_data  = N_VGetArrayPointer(ytemp);
+  yptemp_data = N_VGetArrayPointer(yptemp);
+
+  if (constraints != NULL) cns_data = N_VGetArrayPointer(constraints);
+
+  /* Initialize ytemp and yptemp. */
+
+  N_VScale(ONE, yy, ytemp);
+  N_VScale(ONE, yp, yptemp);
+
+  /* Compute miscellaneous values for the Jacobian computation. */
+
+  srur = RSqrt(uround);
+  width = mlower + mupper + 1;
+  ngroups = MIN(width, neq);
+
+  /* Loop over column groups. */
+  for (group=1; group <= ngroups; group++) {
+
+    /* Increment all yy[j] and yp[j] for j in this group. */
+
+    for (j=group-1; j<Neq; j+=width) {
+        yj = y_data[j];
+        ypj = yp_data[j];
+        ewtj = ewt_data[j];
+
+        /* Set increment inc to yj based on sqrt(uround)*abs(yj), with
+        adjustments using ypj and ewtj if this is small, and a further
+        adjustment to give it the same sign as hh*ypj. */
+
+        inc = srur*MAX(ABS(yj), MAX( ABS(hh*ypj), ONE/ewtj));
+        if (hh*ypj < ZERO) inc = -inc;
+        inc = (yj + inc) - yj;
+
+        /* Adjust sign(inc) again if yj has an inequality constraint. */
+        if (constraints != NULL) {
+          conj = cns_data[j];
+          if (ABS(conj) == ONE)      {if((yj+inc)*conj <  ZERO) inc = -inc;}
+          else if (ABS(conj) == TWO) {if((yj+inc)*conj <= ZERO) inc = -inc;}
+        }
+
+        /* Increment yj and ypj. */
+
+        ytemp_data[j] += inc;
+        yptemp_data[j] += cj*inc;
+    }
+
+    /* Call res routine with incremented arguments. */
+
+    retval = res(tt, ytemp, yptemp, rtemp, rdata);
+    nreB++;
+    if (retval != IDABAND_SUCCESS) break;
+
+    /* Loop over the indices j in this group again. */
+
+    for (j=group-1; j<Neq; j+=width) {
+
+      /* Reset ytemp and yptemp components that were perturbed. */
+
+      yj = ytemp_data[j]  = y_data[j];
+      ypj = yptemp_data[j] = yp_data[j];
+      col_j = BAND_COL(Jac, j);
+      ewtj = ewt_data[j];
+      
+      
+      /* Set increment inc exactly as above. */
+      
+      inc = srur*MAX(ABS(yj),MAX( ABS(hh*ypj), ONE/ewtj));
+      if (hh*ypj < ZERO) inc = -inc;
+      inc = (yj + inc) - yj;
+      if (constraints != NULL) {
+        conj = cns_data[j];
+        if (ABS(conj) == ONE)      {if((yj+inc)*conj <  ZERO) inc = -inc;}
+        else if (ABS(conj) == TWO) {if((yj+inc)*conj <= ZERO) inc = -inc;}
+      }
+      
+      /* Load the difference quotient Jacobian elements for column j. */
+
+      inc_inv = ONE/inc;
+      i1 = MAX(0, j-mupper);
+      i2 = MIN(j+mlower,neq-1);
+      
+      for (i=i1; i<=i2; i++) 
+            BAND_COL_ELEM(col_j,i,j) = inc_inv*(rtemp_data[i]-r_data[i]);
+    }
+    
+  }
+  
+  return(retval);
+  
+}
diff --git a/Win32/WinCVODE/sundials/ida/source/idaband_impl.h b/Win32/WinCVODE/sundials/ida/source/idaband_impl.h
new file mode 100644
index 0000000..c487362
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/source/idaband_impl.h
@@ -0,0 +1,97 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:42:25 $
+ * ----------------------------------------------------------------- 
+ * Programmers: Alan C. Hindmarsh, and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California  
+ * Produced at the Lawrence Livermore National Laboratory
+ * All rights reserved
+ * For details, see sundials/idas/LICENSE
+ * -----------------------------------------------------------------
+ * This is the header file (private version) for the IDA/IDAS band
+ * linear solver module, IDABAND. It interfaces between the band
+ * module and the integrator when a banded linear solver is
+ * appropriate.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _IDABAND_IMPL_H
+#define _IDABAND_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "idaband.h"
+
+#include "band.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Types : IDABandMemRec, IDABandMem                             
+ * -----------------------------------------------------------------
+ */
+
+typedef struct {
+
+  long int b_neq;           /* Neq = problem size                           */
+
+  IDABandJacFn b_jac;       /* jac = banded Jacobian routine to be called   */
+  
+  BandMat b_J;              /* J = dF/dy + cj*dF/dy', banded approximation. */
+  
+  long int b_mupper;        /* mupper = upper bandwidth of Jacobian matrix. */
+  
+  long int b_mlower;        /* mlower = lower bandwidth of Jacobian matrix. */
+  
+  long int b_storage_mu;    /* storage_mu = upper bandwidth with storage for
+                               factoring = min(Neq-1, mupper+mlower).       */
+  
+  long int *b_pivots;       /* pivots = pivot array for PJ = LU             */
+  
+  long int b_nje;           /* nje = no. of calls to jac                    */
+  
+  long int b_nreB;          /* nreB = no. of calls to res due to 
+                               difference quotient Jacobian evaluation      */
+
+  void *b_jdata;            /* jdata = data structure required by jac.      */
+  
+  int b_last_flag;          /* last error return flag                       */
+
+} IDABandMemRec, *IDABandMem;
+
+/*
+ * -----------------------------------------------------------------
+ * Error Messages 
+ * -----------------------------------------------------------------
+ */
+
+#define _IDABAND_              "IDABand-- "
+
+#define MSGB_IDAMEM_NULL        _IDABAND_ "Integrator memory is NULL.\n\n"
+
+#define MSGB_BAD_SIZES1         _IDABAND_ "illegal bandwidth parameter(s) "
+#define MSGB_BAD_SIZES2         "Must have 0 <=  mlower, mupper <= N-1.\n\n"
+#define MSGB_BAD_SIZES          MSGB_BAD_SIZES1 MSGB_BAD_SIZES2
+
+#define MSGB_MEM_FAIL           _IDABAND_ "a memory request failed.\n\n"
+
+#define MSGB_BAD_NVECTOR        _IDABAND_ "a required vector operation is not implemented.\n\n"
+
+#define MSGB_WRONG_NVEC         _IDABAND_ "incompatible NVECTOR implementation.\n\n"
+
+#define MSGB_SETGET_IDAMEM_NULL "IDABandSet*/IDABandGet*-- integrator memory is NULL. \n\n"
+
+#define MSGB_SETGET_LMEM_NULL   "IDABandSet*/IDABandGet*-- IDABAND memory is NULL. \n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/ida/source/idabbdpre.c b/Win32/WinCVODE/sundials/ida/source/idabbdpre.c
new file mode 100644
index 0000000..4150be8
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/source/idabbdpre.c
@@ -0,0 +1,492 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:42:25 $
+ * ----------------------------------------------------------------- 
+ * Programmers: Alan C. Hindmarsh, and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California  
+ * Produced at the Lawrence Livermore National Laboratory
+ * All rights reserved
+ * For details, see sundials/ida/LICENSE
+ * -----------------------------------------------------------------
+ * This file contains implementations of routines for a            
+ * band-block-diagonal preconditioner, i.e. a block-diagonal       
+ * matrix with banded blocks, for use with IDA and IDASpgmr.       
+ * NOTE: with only one processor in use, a banded matrix results   
+ * rather than a block-diagonal matrix with banded blocks.         
+ * Diagonal blocking occurs at the processor level.                
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "ida_impl.h"
+#include "idabbdpre_impl.h"
+#include "idaspgmr_impl.h"
+
+#include "sundialsmath.h"
+
+
+#define ZERO         RCONST(0.0)
+#define ONE          RCONST(1.0)
+#define TWO          RCONST(2.0)
+
+/* Prototype for difference quotient Jacobian calculation routine */
+
+static int IBBDDQJac(IBBDPrecData pdata, realtype tt, realtype cj,
+                     N_Vector yy, N_Vector yp, N_Vector gref, 
+                     N_Vector ytemp, N_Vector yptemp, N_Vector gtemp);
+
+/* Readability Replacements */
+
+#define errfp    (IDA_mem->ida_errfp)
+#define uround   (IDA_mem->ida_uround)
+#define vec_tmpl (IDA_mem->ida_tempv1)
+
+/*
+ * -----------------------------------------------------------------
+ * User-Callable Functions: malloc, reinit, and free
+ * -----------------------------------------------------------------
+ */
+
+void *IDABBDPrecAlloc(void *ida_mem, long int Nlocal, 
+		      long int mudq, long int mldq, 
+		      long int mukeep, long int mlkeep, 
+		      realtype dq_rel_yy, 
+		      IDABBDLocalFn Gres, IDABBDCommFn Gcomm)
+{
+  IDAMem IDA_mem;
+  IBBDPrecData pdata;
+  N_Vector tempv4;
+  long int muk, mlk, storage_mu;
+
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGBBD_IDAMEM_NULL);
+    return(NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  /* Test if the NVECTOR package is compatible with BLOCK BAND preconditioner */
+  if(vec_tmpl->ops->nvgetarraypointer == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGBBD_BAD_NVECTOR);
+    return(NULL);
+  }
+
+  /* Allocate data memory. */
+  pdata = (IBBDPrecData) malloc(sizeof *pdata);
+  if (pdata == NULL) return(NULL);
+
+  /* Set pointers to glocal and gcomm; load half-bandwidths. */
+  pdata->IDA_mem = IDA_mem;
+  pdata->glocal = Gres;
+  pdata->gcomm = Gcomm;
+  pdata->mudq = MIN( Nlocal-1, MAX(0,mudq) );
+  pdata->mldq = MIN( Nlocal-1, MAX(0,mldq) );
+  muk = MIN( Nlocal-1, MAX(0,mukeep) );
+  mlk = MIN( Nlocal-1, MAX(0,mlkeep) );
+  pdata->mukeep = muk;
+  pdata->mlkeep = mlk;
+
+  /* Set extended upper half-bandwidth for PP (required for pivoting). */
+  storage_mu = MIN(Nlocal-1, muk + mlk);
+
+  /* Allocate memory for preconditioner matrix. */
+  pdata->PP = BandAllocMat(Nlocal, muk, mlk, storage_mu);
+  if (pdata->PP == NULL) { free(pdata); return(NULL); }
+
+  /* Allocate memory for pivots. */
+  pdata->pivots = BandAllocPiv(Nlocal);
+  if (pdata->PP == NULL) {
+    BandFreeMat(pdata->PP);
+    free(pdata);
+    return(NULL);
+  }
+
+  /* Allocate tempv4 for use by IBBDDQJac */
+  tempv4 = N_VClone(vec_tmpl); 
+  if (tempv4 == NULL){
+    BandFreeMat(pdata->PP);
+    BandFreePiv(pdata->pivots);
+    free(pdata);
+    return(NULL);
+  }
+  pdata->tempv4 = tempv4;
+  
+  /* Set rel_yy based on input value dq_rel_yy (0 implies default). */
+  pdata->rel_yy = (dq_rel_yy > ZERO) ? dq_rel_yy : RSqrt(uround); 
+
+  /* Store Nlocal to be used in IDABBDPrecSetup */
+  pdata->n_local = Nlocal;
+  
+  /* Set work space sizes and initialize nge. */
+  pdata->rpwsize = Nlocal*(mlk + storage_mu + 1);
+  pdata->ipwsize = Nlocal;
+  pdata->nge = 0;
+
+  return((void *)pdata);
+}
+
+int IDABBDSpgmr(void *ida_mem, int maxl, void *bbd_data)
+{
+  int flag;
+
+  if ( bbd_data == NULL ) {
+    fprintf(stderr, MSGBBD_NO_PDATA);
+    return(IDA_PDATA_NULL);
+  }
+
+  flag = IDASpgmr(ida_mem, maxl);
+  if(flag != IDASPGMR_SUCCESS) return(flag);
+
+  flag = IDASpgmrSetPreconditioner(ida_mem, IDABBDPrecSetup,
+                                   IDABBDPrecSolve, bbd_data);
+  if(flag != IDASPGMR_SUCCESS) return(flag);
+
+  return(IDASPGMR_SUCCESS);
+}
+
+int IDABBDPrecReInit(void *bbd_data,
+		     long int mudq, long int mldq, 
+		     realtype dq_rel_yy,  
+		     IDABBDLocalFn Gres, IDABBDCommFn Gcomm)
+{
+  IBBDPrecData pdata;
+  IDAMem IDA_mem;
+  long int Nlocal;
+
+  pdata =(IBBDPrecData) bbd_data;
+  IDA_mem = pdata->IDA_mem;
+
+  Nlocal = pdata->n_local;
+
+  /* Set pointers to res_data, glocal, and gcomm; load half-bandwidths. */
+  pdata->mudq = MIN( Nlocal-1, MAX(0,mudq) );
+  pdata->mldq = MIN( Nlocal-1, MAX(0,mldq) );
+  pdata->glocal = Gres;
+  pdata->gcomm = Gcomm;
+
+  /* Set rel_yy based on input value dq_rel_yy (0 implies default). */
+  pdata->rel_yy = (dq_rel_yy > ZERO) ? dq_rel_yy : RSqrt(uround); 
+
+  /* Re-initialize nge */
+  pdata->nge = 0;
+
+  return(0);
+}
+
+
+void IDABBDPrecFree(void *bbd_data)
+{
+  IBBDPrecData pdata;
+  
+  if ( bbd_data != NULL ) {
+    pdata = (IBBDPrecData) bbd_data;
+    BandFreeMat(pdata->PP);
+    BandFreePiv(pdata->pivots);
+    N_VDestroy(pdata->tempv4);
+    free(pdata);
+  }
+}
+
+int IDABBDPrecGetWorkSpace(void *bbd_data, long int *lenrwBBDP, long int *leniwBBDP)
+{
+  IBBDPrecData pdata;
+
+  if ( bbd_data == NULL ) {
+    fprintf(stderr, MSGBBD_PDATA_NULL);
+    return(IDA_PDATA_NULL);
+  } 
+
+  pdata = (IBBDPrecData) bbd_data;
+
+  *lenrwBBDP = pdata->rpwsize;
+  *leniwBBDP = pdata->ipwsize;
+
+  return(IDA_SUCCESS);
+}
+
+int IDABBDPrecGetNumGfnEvals(void *bbd_data, long int *ngevalsBBDP)
+{
+  IBBDPrecData pdata;
+
+  if ( bbd_data == NULL ) {
+    fprintf(stderr, MSGBBD_PDATA_NULL);
+    return(IDA_PDATA_NULL);
+  } 
+
+  pdata = (IBBDPrecData) bbd_data;
+
+  *ngevalsBBDP = pdata->nge;
+
+  return(IDA_SUCCESS);
+}
+
+/* Readability Replacements */
+
+#define Nlocal      (pdata->n_local)
+#define mudq        (pdata->mudq)
+#define mldq        (pdata->mldq)
+#define mukeep      (pdata->mukeep)
+#define mlkeep      (pdata->mlkeep)
+#define glocal      (pdata->glocal)
+#define gcomm       (pdata->gcomm)
+#define pivots      (pdata->pivots)
+#define PP          (pdata->PP)
+#define nge         (pdata->nge)
+#define rel_yy      (pdata->rel_yy)
+
+/*
+ * -----------------------------------------------------------------
+ * Function : IDABBDPrecSetup                                     
+ *----------------------------------------------------------------
+ * IDABBDPrecSetup generates a band-block-diagonal preconditioner 
+ * matrix, where the local block (on this processor) is a band    
+ * matrix.  Each local block is computed by a difference quotient 
+ * scheme via calls to the user-supplied routines glocal, gcomm.  
+ * After generating the block in the band matrix PP, this routine 
+ * does an LU factorization in place in PP.                       
+ *                                                                
+ * The IDABBDPrecSetup parameters used here are as follows:       
+ *                                                                
+ * tt is the current value of the independent variable t.        
+ *                                                                
+ * yy is the current value of the dependent variable vector, 
+ *    namely the predicted value of y(t).                    
+ *                                                                
+ * yp is the current value of the derivative vector y',          
+ *    namely the predicted value of y'(t).                    
+ *                                                                
+ * c_j is the scalar in the system Jacobian, proportional to 1/hh.
+ *                                                                
+ * prec_data is a pointer to user preconditioner data - the same as 
+ *    the p_data parameter passed to IDASpgmr.                
+ *                                                                
+ * tmp1, tmp2, tmp3 are pointers to vectors of type         
+ *    N_Vector, used for temporary storage or work space.            
+ *                                                                  
+ * The arguments Neq, rr, res, uround, and nrePtr are not used.   
+ *                                                                  
+ * Return value:                                                  
+ * The value returned by this IDABBDPrecSetup function is a int   
+ * flag indicating whether it was successful.  This value is      
+ *    0    if successful,                                         
+ *  > 0    for a recoverable error (step will be retried).        
+ *  < 0    for a nonrecoverable error (step fails).               
+ *
+ * -----------------------------------------------------------------
+ */
+
+int IDABBDPrecSetup(realtype tt, 
+		    N_Vector yy, N_Vector yp, N_Vector rr, 
+		    realtype c_j, void *prec_data,
+		    N_Vector tempv1, N_Vector tempv2, N_Vector tempv3)
+{
+  long int retfac;
+  int retval;
+  IBBDPrecData pdata;
+
+  pdata =(IBBDPrecData) prec_data;
+
+  /* Call IBBDDQJac for a new Jacobian calculation and store in PP. */
+  BandZero(PP);
+  retval = IBBDDQJac(pdata, tt, c_j, yy, yp,
+                     tempv1, tempv2, tempv3, pdata->tempv4);
+  if (retval < 0) return(-1);
+  if (retval > 0) return(+1);
+ 
+  /* Do LU factorization of preconditioner block in place (in PP). */
+  retfac = BandFactor(PP, pivots);
+
+  /* Return 0 if the LU was complete, or +1 otherwise. */
+  if (retfac > 0) return(+1);
+  return(0);
+}
+
+
+/*
+ * -----------------------------------------------------------------
+ * Function: IDABBDPrecSolve                                      
+ *----------------------------------------------------------------
+ * The function IDABBDPrecSolve computes a solution to the linear 
+ * system P z = r, where P is the left preconditioner defined by  
+ * the routine IDABBDPrecSetup.                                   
+ *                                                                
+ * The IDABBDPrecSolve parameters used here are as follows:       
+ *                                                                
+ * rvec is the input right-hand side vector r.                  
+ *                                                                
+ * zvec is the computed solution vector z.                      
+ *                                                                
+ * prec_data is a pointer to user preconditioner data - the same as  
+ *     the p_data parameter passed to IDASpgmr.                
+ *                                                                
+ * The arguments tt, yy, yp, rr, c_j, delta, and tmp are NOT used.
+ *                                                                
+ * IDABBDPrecSolve always returns 0, indicating success.          
+ *                                                                
+ * -----------------------------------------------------------------
+ */
+
+int IDABBDPrecSolve(realtype tt, 
+		    N_Vector yy, N_Vector yp, N_Vector rr, 
+		    N_Vector rvec, N_Vector zvec,
+		    realtype c_j, realtype delta, void *prec_data, 
+                    N_Vector tmp)
+{
+  IBBDPrecData pdata;
+  realtype *zd;
+
+  pdata = (IBBDPrecData) prec_data;
+
+  /* Copy rvec to zvec, do the backsolve, and return. */
+  N_VScale(ONE, rvec, zvec);
+
+  zd = N_VGetArrayPointer(zvec);
+
+  BandBacksolve(PP, pivots, zd);
+
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IBBDDQJac
+ * -----------------------------------------------------------------
+ * This routine generates a banded difference quotient approximation to
+ * the local block of the Jacobian of G(t,y,y').  It assumes that a
+ * band matrix of type BandMat is stored column-wise, and that elements
+ * within each column are contiguous.
+ *
+ * All matrix elements are generated as difference quotients, by way
+ * of calls to the user routine glocal.
+ * By virtue of the band structure, the number of these calls is
+ * bandwidth + 1, where bandwidth = mldq + mudq + 1.
+ * But the band matrix kept has bandwidth = mlkeep + mukeep + 1.
+ * This routine also assumes that the local elements of a vector are
+ * stored contiguously.
+ *
+ * Return values are: 0 (success), > 0 (recoverable error),
+ * or < 0 (nonrecoverable error).
+ * -----------------------------------------------------------------
+ */
+
+#define ewt         (IDA_mem->ida_ewt)
+#define res_data    (IDA_mem->ida_rdata)
+#define hh          (IDA_mem->ida_hh)
+#define constraints (IDA_mem->ida_constraints)
+
+static int IBBDDQJac(IBBDPrecData pdata, realtype tt, realtype cj,
+                     N_Vector yy, N_Vector yp, N_Vector gref, 
+                     N_Vector ytemp, N_Vector yptemp, N_Vector gtemp)
+{
+  IDAMem IDA_mem;
+  realtype inc, inc_inv;
+  int  retval;
+  long int group, i, j, width, ngroups, i1, i2;
+  realtype *ydata, *ypdata, *ytempdata, *yptempdata, *grefdata, *gtempdata;
+  realtype *cnsdata = NULL, *ewtdata;
+  realtype *col_j, conj, yj, ypj, ewtj;
+
+  IDA_mem = pdata->IDA_mem;
+
+  /* Initialize ytemp and yptemp. */
+
+  N_VScale(ONE, yy, ytemp);
+  N_VScale(ONE, yp, yptemp);
+
+  /* Obtain pointers as required to the data array of vectors. */
+
+  ydata     = N_VGetArrayPointer(yy);
+  ypdata    = N_VGetArrayPointer(yp);
+  gtempdata = N_VGetArrayPointer(gtemp);
+  ewtdata   = N_VGetArrayPointer(ewt);
+  if (constraints != NULL) 
+    cnsdata = N_VGetArrayPointer(constraints);
+  ytempdata = N_VGetArrayPointer(ytemp);
+  yptempdata= N_VGetArrayPointer(yptemp);
+  grefdata = N_VGetArrayPointer(gref);
+
+  /* Call gcomm and glocal to get base value of G(t,y,y'). */
+
+  if (gcomm != NULL) {
+    retval = gcomm(Nlocal, tt, yy, yp, res_data);
+    if (retval != 0) return(retval);
+  }
+
+  retval = glocal(Nlocal, tt, yy, yp, gref, res_data); 
+  nge++;
+  if (retval != 0) return(retval);
+
+
+  /* Set bandwidth and number of column groups for band differencing. */
+
+  width = mldq + mudq + 1;
+  ngroups = MIN(width, Nlocal);
+
+  /* Loop over groups. */
+  for(group = 1; group <= ngroups; group++) {
+    
+    /* Loop over the components in this group. */
+    for(j = group-1; j < Nlocal; j += width) {
+      yj = ydata[j];
+      ypj = ypdata[j];
+      ewtj = ewtdata[j];
+      
+      /* Set increment inc to yj based on rel_yy*abs(yj), with
+         adjustments using ypj and ewtj if this is small, and a further
+         adjustment to give it the same sign as hh*ypj. */
+      inc = rel_yy*MAX(ABS(yj), MAX( ABS(hh*ypj), ONE/ewtj));
+      if (hh*ypj < ZERO) inc = -inc;
+      inc = (yj + inc) - yj;
+      
+      /* Adjust sign(inc) again if yj has an inequality constraint. */
+      if (constraints != NULL) {
+        conj = cnsdata[j];
+        if (ABS(conj) == ONE)      {if ((yj+inc)*conj <  ZERO) inc = -inc;}
+        else if (ABS(conj) == TWO) {if ((yj+inc)*conj <= ZERO) inc = -inc;}
+      }
+
+      /* Increment yj and ypj. */
+      ytempdata[j] += inc;
+      yptempdata[j] += cj*inc;
+      
+    }
+
+    /* Evaluate G with incremented y and yp arguments. */
+
+    retval = glocal(Nlocal, tt, ytemp, yptemp, gtemp, res_data); 
+    nge++;
+    if (retval != 0) return(retval);
+
+    /* Loop over components of the group again; restore ytemp and yptemp. */
+    for(j = group-1; j < Nlocal; j += width) {
+      yj  = ytempdata[j]  = ydata[j];
+      ypj = yptempdata[j] = ypdata[j];
+      ewtj = ewtdata[j];
+
+      /* Set increment inc as before .*/
+      inc = rel_yy*MAX(ABS(yj), MAX( ABS(hh*ypj), ONE/ewtj));
+      if (hh*ypj < ZERO) inc = -inc;
+      inc = (yj + inc) - yj;
+      if (constraints != NULL) {
+        conj = cnsdata[j];
+        if (ABS(conj) == ONE)      {if ((yj+inc)*conj <  ZERO) inc = -inc;}
+        else if (ABS(conj) == TWO) {if ((yj+inc)*conj <= ZERO) inc = -inc;}
+      }
+
+      /* Form difference quotients and load into PP. */
+      inc_inv = ONE/inc;
+      col_j = BAND_COL(PP,j);
+      i1 = MAX(0, j-mukeep);
+      i2 = MIN(j+mlkeep, Nlocal-1);
+      for(i = i1; i <= i2; i++) BAND_COL_ELEM(col_j,i,j) =
+                                  inc_inv * (gtempdata[i] - grefdata[i]);
+    }
+  }
+  
+  return(0);
+}
diff --git a/Win32/WinCVODE/sundials/ida/source/idabbdpre_impl.h b/Win32/WinCVODE/sundials/ida/source/idabbdpre_impl.h
new file mode 100644
index 0000000..3de3643
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/source/idabbdpre_impl.h
@@ -0,0 +1,103 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:42:25 $
+ * ----------------------------------------------------------------- 
+ * Programmers: Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California  
+ * Produced at the Lawrence Livermore National Laboratory
+ * All rights reserved
+ * For details, see sundials/ida/LICENSE
+ * -----------------------------------------------------------------
+ * This is the header file (private version) for the IDABBDPRE
+ * module, for a band-block-diagonal preconditioner, i.e. a
+ * block-diagonal matrix with banded blocks, for use with IDA/IDAS
+ * and IDASpgmr.  
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _IBBDPRE_IMPL_H
+#define _IBBDPRE_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "idabbdpre.h"
+
+#include "band.h"
+#include "iterative.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Prototypes of IDABBDPrecSetup and IDABBDPrecSolve 
+ * -----------------------------------------------------------------
+ */
+
+int IDABBDPrecSetup(realtype tt, 
+		    N_Vector yy, N_Vector yp, N_Vector rr, 
+		    realtype c_j, void *prec_data,
+		    N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+ 
+int IDABBDPrecSolve(realtype tt, 
+		    N_Vector yy, N_Vector yp, N_Vector rr, 
+		    N_Vector rvec, N_Vector zvec,
+		    realtype c_j, realtype delta, void *prec_data, 
+                    N_Vector tmp);
+
+/*
+ * -----------------------------------------------------------------
+ * Definition of IBBDPrecData 
+ * -----------------------------------------------------------------
+ */
+
+typedef struct {
+
+  /* passed by user to IDABBDPrecAlloc, used by 
+     IDABBDPrecSetup/IDABBDPrecSolve functions: */
+  long int mudq, mldq, mukeep, mlkeep;
+  realtype rel_yy;
+  IDABBDLocalFn glocal;
+  IDABBDCommFn gcomm;
+
+ /* allocated for use by IDABBDPrecSetup */
+  N_Vector tempv4;
+
+  /* set by IDABBDPrecon and used by IDABBDPrecSolve: */
+  BandMat PP;
+  long int *pivots;
+
+  /* set by IDABBDPrecAlloc and used by IDABBDPrecSetup */
+  long int n_local;
+
+  /* available for optional output: */
+  long int rpwsize;
+  long int ipwsize;
+  long int nge;
+
+  /* Pointer to ida_mem */
+  IDAMem IDA_mem;
+
+} *IBBDPrecData;
+
+/*
+ * -----------------------------------------------------------------
+ * Error Messages
+ * -----------------------------------------------------------------
+ */
+
+#define MSGBBD_IDAMEM_NULL  "IBBDPrecAlloc-- integrator memory is NULL.\n\n"
+#define MSGBBD_BAD_NVECTOR  "IBBDPrecAlloc-- a required vector operation is not implemented.\n\n"
+#define MSGBBD_WRONG_NVEC   "IBBDPrecAlloc-- incompatible NVECTOR implementation.\n\n"
+#define MSGBBD_PDATA_NULL   "IBBDPrecGet*-- BBDPrecData is NULL. \n\n"
+
+#define MSGBBD_NO_PDATA     "IBBDSpgmr-- BBDPrecData is NULL. \n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/ida/source/idadense.c b/Win32/WinCVODE/sundials/ida/source/idadense.c
new file mode 100644
index 0000000..a2137f1
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/source/idadense.c
@@ -0,0 +1,513 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:42:25 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/ida/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the IDA dense linear
+ * solver module, IDADENSE.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "ida_impl.h"
+#include "idadense_impl.h"
+
+#include "sundialsmath.h"
+
+/* Constants */
+
+#define ZERO         RCONST(0.0)
+#define ONE          RCONST(1.0)
+#define TWO          RCONST(2.0)
+
+/* IDADENSE linit, lsetup, lsolve, and lfree routines */
+ 
+static int IDADenseInit(IDAMem IDA_mem);
+
+static int IDADenseSetup(IDAMem IDA_mem, N_Vector yyp, N_Vector ypp,
+                         N_Vector rrp, N_Vector tmp1,
+                         N_Vector tmp2, N_Vector tmp3);
+
+static int IDADenseSolve(IDAMem IDA_mem, N_Vector b, N_Vector weight,
+                         N_Vector ycur, N_Vector ypcur, N_Vector rrcur);
+
+static int IDADenseFree(IDAMem IDA_mem);
+
+static int IDADenseDQJac(long int Neq, realtype tt, N_Vector yy, N_Vector yp,
+                         N_Vector rr, realtype c_j, void *jac_data, DenseMat Jac,
+                         N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/* Readability Replacements */
+
+#define res          (IDA_mem->ida_res)
+#define rdata        (IDA_mem->ida_rdata)
+#define uround       (IDA_mem->ida_uround)
+#define tn           (IDA_mem->ida_tn)
+#define hh           (IDA_mem->ida_hh)
+#define cj           (IDA_mem->ida_cj)
+#define cjratio      (IDA_mem->ida_cjratio)
+#define ewt          (IDA_mem->ida_ewt)
+#define constraints  (IDA_mem->ida_constraints)
+#define nre          (IDA_mem->ida_nre)
+#define errfp        (IDA_mem->ida_errfp)
+#define iopt         (IDA_mem->ida_iopt)
+#define linit        (IDA_mem->ida_linit)
+#define lsetup       (IDA_mem->ida_lsetup)
+#define lsolve       (IDA_mem->ida_lsolve)
+#define lperf        (IDA_mem->ida_lperf)
+#define lfree        (IDA_mem->ida_lfree)
+#define lmem         (IDA_mem->ida_lmem)
+#define setupNonNull (IDA_mem->ida_setupNonNull)
+#define vec_tmpl     (IDA_mem->ida_tempv1)
+
+#define neq          (idadense_mem->d_neq)
+#define jac          (idadense_mem->d_jac)
+#define JJ           (idadense_mem->d_J)
+#define pivots       (idadense_mem->d_pivots)
+#define nje          (idadense_mem->d_nje)
+#define nreD         (idadense_mem->d_nreD)
+#define jacdata      (idadense_mem->d_jdata)
+#define last_flag    (idadense_mem->d_last_flag)
+                  
+/*
+ * -----------------------------------------------------------------
+ * IDADense
+ * -----------------------------------------------------------------
+ * This routine initializes the memory record and sets various function
+ * fields specific to the IDADENSE linear solver module.  
+ * IDADense first calls the existing lfree routine if this is not NULL.
+ * Then it sets the ida_linit, ida_lsetup, ida_lsolve, ida_lperf, and
+ * ida_lfree fields in (*IDA_mem) to be IDADenseInit, IDADenseSetup,
+ * IDADenseSolve, NULL, and IDADenseFree, respectively.
+ * It allocates memory for a structure of type IDADenseMemRec and sets
+ * the ida_lmem field in (*IDA_mem) to the address of this structure.
+ * It sets setupNonNull in (*IDA_mem) to TRUE, sets the d_jdata field
+ * in the IDADenseMemRec structure to be the input parameter jdata,
+ * and sets the d_jac field to be:
+ *   (1) the input parameter djac, if djac != NULL, or                
+ *   (2) IDADenseDQJac, if djac == NULL.                             
+ * Finally, it allocates memory for JJ and pivots.
+ * The return value is IDADENSE_SUCCESS = 0, IDADENSE_LMEM_FAIL = -1,
+ * or IDADENSE_ILL_INPUT = -2.
+ *
+ * NOTE: The dense linear solver assumes a serial implementation
+ *       of the NVECTOR package. Therefore, IDADense will first 
+ *       test for a compatible N_Vector internal
+ *       representation by checking that the functions N_VGetArrayPointer
+ *       and N_VSetArrayPointer exist.
+ * -----------------------------------------------------------------
+ */
+
+int IDADense(void *ida_mem, long int Neq)
+{
+  IDAMem IDA_mem;
+  IDADenseMem idadense_mem;
+  int flag;
+
+  /* Return immediately if ida_mem is NULL. */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGD_IDAMEM_NULL);
+    return(IDADENSE_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  /* Test if the NVECTOR package is compatible with the DENSE solver */
+  if(vec_tmpl->ops->nvgetarraypointer == NULL ||
+     vec_tmpl->ops->nvsetarraypointer == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGD_BAD_NVECTOR);
+    return(IDADENSE_ILL_INPUT);
+  }
+
+  if (lfree != NULL) flag = lfree(IDA_mem);
+
+  /* Set five main function fields in IDA_mem. */
+  linit  = IDADenseInit;
+  lsetup = IDADenseSetup;
+  lsolve = IDADenseSolve;
+  lperf  = NULL;
+  lfree  = IDADenseFree;
+
+  /* Get memory for IDADenseMemRec. */
+  idadense_mem = (IDADenseMem) malloc(sizeof(IDADenseMemRec));
+  if (idadense_mem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGD_MEM_FAIL);
+    return(IDADENSE_MEM_FAIL);
+  }
+
+  /* Set default Jacobian routine and Jacobian data */
+  jac = IDADenseDQJac;
+  jacdata = IDA_mem;
+  last_flag = IDADENSE_SUCCESS;
+
+  setupNonNull = TRUE;
+
+  /* Store problem size */
+  neq = Neq;
+
+  /* Allocate memory for JJ and pivot array. */
+  JJ = DenseAllocMat(Neq);
+  if (JJ == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGD_MEM_FAIL);
+    return(IDADENSE_MEM_FAIL);
+  }
+  pivots = DenseAllocPiv(Neq);
+  if (pivots == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGD_MEM_FAIL);
+    DenseFreeMat(JJ);
+    return(IDADENSE_MEM_FAIL);
+  }
+
+  /* Attach linear solver memory to the integrator memory */
+  lmem = idadense_mem;
+
+  return(IDADENSE_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDADenseSet* and IDADenseGet*
+ * -----------------------------------------------------------------
+ */
+
+int IDADenseSetJacFn(void *ida_mem, IDADenseJacFn djac, void *jac_data)
+{
+  IDAMem IDA_mem;
+  IDADenseMem idadense_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGD_SETGET_IDAMEM_NULL);
+    return(IDADENSE_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGD_SETGET_LMEM_NULL);
+    return(IDADENSE_LMEM_NULL);
+  }
+  idadense_mem = (IDADenseMem) lmem;
+
+  jac = djac;
+  if (djac != NULL) jacdata = jac_data;
+
+  return(IDADENSE_SUCCESS);
+}
+
+int IDADenseGetWorkSpace(void *ida_mem, long int *lenrwD, long int *leniwD)
+{
+  IDAMem IDA_mem;
+  IDADenseMem idadense_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGD_SETGET_IDAMEM_NULL);
+    return(IDADENSE_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGD_SETGET_LMEM_NULL);
+    return(IDADENSE_LMEM_NULL);
+  }
+  idadense_mem = (IDADenseMem) lmem;
+
+  *lenrwD = neq*neq;
+  *leniwD = neq;
+ 
+  return(IDADENSE_SUCCESS);
+}
+
+int IDADenseGetNumJacEvals(void *ida_mem, long int *njevalsD)
+{
+  IDAMem IDA_mem;
+  IDADenseMem idadense_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGD_SETGET_IDAMEM_NULL);
+    return(IDADENSE_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGD_SETGET_LMEM_NULL);
+    return(IDADENSE_LMEM_NULL);
+  }
+  idadense_mem = (IDADenseMem) lmem;
+
+  *njevalsD = nje;
+
+  return(IDADENSE_SUCCESS);
+}
+
+int IDADenseGetNumResEvals(void *ida_mem, long int *nrevalsD)
+{
+  IDAMem IDA_mem;
+  IDADenseMem idadense_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGD_SETGET_IDAMEM_NULL);
+    return(IDADENSE_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGD_SETGET_LMEM_NULL);
+    return(IDADENSE_LMEM_NULL);
+  }
+  idadense_mem = (IDADenseMem) lmem;
+
+  *nrevalsD = nreD;
+
+  return(IDADENSE_SUCCESS);
+}
+
+int IDADenseGetLastFlag(void *ida_mem, int *flag)
+{
+  IDAMem IDA_mem;
+  IDADenseMem idadense_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGD_SETGET_IDAMEM_NULL);
+    return(IDADENSE_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGD_SETGET_LMEM_NULL);
+    return(IDADENSE_LMEM_NULL);
+  }
+  idadense_mem = (IDADenseMem) lmem;
+
+  *flag = last_flag;
+
+  return(IDADENSE_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDADENSE interface functions
+ * -----------------------------------------------------------------
+ */
+
+/*
+  This routine does remaining initializations specific to the IDADENSE
+  linear solver module.  It returns 0.
+*/
+
+static int IDADenseInit(IDAMem IDA_mem)
+{
+  IDADenseMem idadense_mem;
+  
+  idadense_mem = (IDADenseMem) lmem;
+
+   
+  nje  = 0;
+  nreD = 0;
+
+  if (jac == NULL) {
+    jac = IDADenseDQJac;
+    jacdata = IDA_mem;
+  }
+  
+  last_flag = 0;
+  return(0);
+}
+
+/*
+  This routine does the setup operations for the IDADENSE linear 
+  solver module.  It calls the Jacobian evaluation routine,
+  updates counters, and calls the dense LU factorization routine.
+  The return value is either
+     IDADENSE_SUCCESS = 0  if successful,
+     +1  if the jac routine failed recoverably or the
+         LU factorization failed, or
+     -1  if the jac routine failed unrecoverably.
+*/
+
+static int IDADenseSetup(IDAMem IDA_mem, N_Vector yyp, N_Vector ypp,
+                         N_Vector rrp, N_Vector tmp1, N_Vector tmp2,
+                         N_Vector tmp3)
+{
+  int retval;
+  long int retfac;
+  IDADenseMem idadense_mem;
+  
+  idadense_mem = (IDADenseMem) lmem;
+
+  /* Increment nje counter. */
+  nje++;
+
+  /* Zero out JJ; call Jacobian routine jac; return if it failed. */
+  DenseZero(JJ);
+  retval = jac(neq, tn, yyp, ypp, rrp, cj, jacdata, JJ, 
+               tmp1, tmp2, tmp3);
+  last_flag = retval;
+  if (retval < 0) return(-1);
+  if (retval > 0) return(+1);
+
+  /* Do LU factorization of JJ; return success or fail flag. */
+  retfac = DenseFactor(JJ, pivots);
+
+  if (retfac != 0) {
+    last_flag = 1;
+    return(+1);
+  }
+  last_flag = 0;
+  return(0);
+}
+
+/*
+  This routine handles the solve operation for the IDADENSE linear
+  solver module.  It calls the dense backsolve routine, scales the
+  solution vector according to cjratio, then returns IDADENSE_SUCCESS = 0.
+*/
+
+static int IDADenseSolve(IDAMem IDA_mem, N_Vector b, N_Vector weight,
+                         N_Vector ycur, N_Vector ypcur, N_Vector rrcur)
+{
+  IDADenseMem idadense_mem;
+  realtype *bd;
+  
+  idadense_mem = (IDADenseMem) lmem;
+  
+  bd = N_VGetArrayPointer(b);
+
+  DenseBacksolve(JJ, pivots, bd);
+
+  /* Scale the correction to account for change in cj. */
+  if (cjratio != ONE) N_VScale(TWO/(ONE + cjratio), b, b);
+
+  last_flag = 0;
+  return(0);
+}
+
+/*
+  This routine frees memory specific to the IDADENSE linear solver.
+*/
+
+static int IDADenseFree(IDAMem IDA_mem)
+{
+  IDADenseMem idadense_mem;
+
+  idadense_mem = (IDADenseMem) lmem;
+  
+  DenseFreeMat(JJ);
+  DenseFreePiv(pivots);
+  free(lmem);
+
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDADENSE private routines
+ * -----------------------------------------------------------------
+ */
+
+/*
+  This routine generates a dense difference quotient approximation Jac to
+  the DAE system Jacobian J.  It assumes that a dense matrix of type
+  DenseMat is stored column-wise, and that elements within each column
+  are contiguous.  The address of the jth column of Jac is obtained via
+  the macro DENSE_COL and this pointer is associated with an N_Vector
+  using the N_VGetArrayPointer/N_VSetArrayPointer functions. 
+  The jth column of the Jacobian is constructed using a call to the res 
+  routine, and a call to N_VLinearSum.
+  The return value is either IDADENSE_SUCCESS = 0, or the nonzero value returned
+  by the res routine, if any.
+*/
+
+static int IDADenseDQJac(long int Neq, realtype tt, N_Vector yy, N_Vector yp,
+                         N_Vector rr, realtype c_j, void *jac_data, DenseMat Jac,
+                         N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)
+{
+  realtype inc, inc_inv, yj, ypj, srur, conj;
+  realtype *tmp2_data, *y_data, *yp_data, *ewt_data, *cns_data = NULL;
+  N_Vector rtemp, jthCol;
+  long int j;
+  int retval=0;
+
+  IDAMem IDA_mem;
+  IDADenseMem idadense_mem;
+
+  /* jac_data points to IDA_mem */
+  IDA_mem = (IDAMem) jac_data;
+  idadense_mem = (IDADenseMem) lmem;
+
+  /* Save pointer to the array in tmp2 */
+  tmp2_data = N_VGetArrayPointer(tmp2);
+
+  /* Rename work vectors for readibility */
+  rtemp  = tmp1;
+  jthCol = tmp2;
+
+  /* Obtain pointers to the data for ewt, yy, yp. */
+  ewt_data = N_VGetArrayPointer(ewt);
+  y_data   = N_VGetArrayPointer(yy);
+  yp_data  = N_VGetArrayPointer(yp);
+  if(constraints!=NULL) cns_data = N_VGetArrayPointer(constraints);
+
+  srur = RSqrt(uround);
+
+  for (j=0; j < Neq; j++) {
+
+    /* Generate the jth col of J(tt,yy,yp) as delta(F)/delta(y_j). */
+
+    /* Set data address of jthCol, and save y_j and yp_j values. */
+    N_VSetArrayPointer(DENSE_COL(Jac,j), jthCol);
+    yj = y_data[j];
+    ypj = yp_data[j];
+
+    /* Set increment inc to y_j based on sqrt(uround)*abs(y_j), with
+    adjustments using yp_j and ewt_j if this is small, and a further
+    adjustment to give it the same sign as hh*yp_j. */
+
+    inc = srur*MAX(ABS(yj),MAX( ABS(hh*ypj), ONE/ewt_data[j]));
+    if (hh*ypj < ZERO) inc = -inc;
+    inc = (yj + inc) - yj;
+
+    /* Adjust sign(inc) again if y_j has an inequality constraint. */
+    if (constraints != NULL) {
+      conj = cns_data[j];
+      if (ABS(conj) == ONE)      {if((yj+inc)*conj <  ZERO) inc = -inc;}
+      else if (ABS(conj) == TWO) {if((yj+inc)*conj <= ZERO) inc = -inc;}
+    }
+
+    /* Increment y_j and yp_j, call res, and break on error return. */
+    y_data[j] += inc;
+    yp_data[j] += c_j*inc;
+
+    retval = res(tt, yy, yp, rtemp, rdata);
+    nreD++;
+    if (retval != IDADENSE_SUCCESS) break;
+
+    /* Construct difference quotient in jthCol */
+    inc_inv = ONE/inc;
+    N_VLinearSum(inc_inv, rtemp, -inc_inv, rr, jthCol);
+
+    DENSE_COL(Jac,j) = N_VGetArrayPointer(jthCol);
+
+    /*  reset y_j, yp_j */     
+    y_data[j] = yj;
+    yp_data[j] = ypj;
+  }
+
+  /* Restore original array pointer in tmp2 */
+  N_VSetArrayPointer(tmp2_data, tmp2);
+
+  return(retval);
+
+}
diff --git a/Win32/WinCVODE/sundials/ida/source/idadense_impl.h b/Win32/WinCVODE/sundials/ida/source/idadense_impl.h
new file mode 100644
index 0000000..3b3fbde
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/source/idadense_impl.h
@@ -0,0 +1,82 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:42:25 $
+ * ----------------------------------------------------------------- 
+ * Programmers: Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California  
+ * Produced at the Lawrence Livermore National Laboratory
+ * All rights reserved
+ * For details, see sundials/idas/LICENSE
+ * -----------------------------------------------------------------
+ * This is the header file (private version) for the IDA/IDAS dense
+ * linear solver module, IDADENSE.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _IDADENSE_IMPL_H
+#define _IDADENSE_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "idadense.h"
+
+#include "dense.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Types : IDADenseMemRec, IDADenseMem                             
+ * -----------------------------------------------------------------
+ */
+
+typedef struct {
+
+  long int d_neq;        /* Neq = problem dimension              */
+
+  IDADenseJacFn d_jac;   /* jac = Jacobian routine to be called  */
+  
+  DenseMat d_J;          /* J = dF/dy + cj*dF/dy'                */
+  
+  long int *d_pivots;    /* pivots = pivot array for PJ = LU     */
+  
+  long int d_nje;        /* nje = no. of calls to jac            */
+  
+  long int d_nreD;       /* nreD = no. of calls to res due to 
+                            diff. quotient Jacobian evaluation   */
+
+  void *d_jdata;         /* jdata is passed to jac               */
+
+  int d_last_flag;       /* last error return flag               */
+
+} IDADenseMemRec, *IDADenseMem;
+
+/*
+ * -----------------------------------------------------------------
+ * Error Messages
+ * -----------------------------------------------------------------
+ */
+
+#define MSGD_IDAMEM_NULL        "IDADense-- integrator memory is NULL.\n\n"
+
+#define MSGD_MEM_FAIL           "IDADense-- a memory request failed.\n\n"
+
+#define MSGD_BAD_NVECTOR        "IDADense-- a required vector operation is not implemented.\n\n"
+
+#define MSGD_WRONG_NVEC         "IDADense-- incompatible NVECTOR implementation.\n\n"
+
+#define MSGD_SETGET_IDAMEM_NULL "IDADenseSet*/IDADenseGet*-- integrator memory is NULL. \n\n"
+
+#define MSGD_SETGET_LMEM_NULL   "IDADenseSet*/IDADenseGet*-- IDADENSE memory is NULL. \n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/ida/source/idaic.c b/Win32/WinCVODE/sundials/ida/source/idaic.c
new file mode 100644
index 0000000..30326d5
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/source/idaic.c
@@ -0,0 +1,727 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:42:25 $
+ * ----------------------------------------------------------------- 
+ * Programmers: Alan C. Hindmarsh, and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California  
+ * Produced at the Lawrence Livermore National Laboratory
+ * All rights reserved
+ * For details, see sundials/ida/LICENSE
+ * -----------------------------------------------------------------
+ * This is the implementation file for the IC calculation for IDA.
+ * It is independent of the linear solver in use.                  
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "ida_impl.h"
+#include "sundialsmath.h"
+
+/* Macro: loop */
+#define loop for(;;)
+
+/*
+ * =================================================================
+ * IDA Constants 
+ * =================================================================
+ */
+
+/* Private Constants */
+
+#define ZERO       RCONST(0.0)    /* real 0.0    */
+#define HALF       RCONST(0.5)    /* real 0.5    */
+#define ONE        RCONST(1.0)    /* real 1.0    */
+#define TWO        RCONST(2.0)    /* real 2.0    */
+#define PT99       RCONST(0.99)   /* real 0.99   */
+#define PT1        RCONST(0.1)    /* real 0.1    */
+#define PT001      RCONST(0.001)  /* real 0.001  */
+
+/* IDACalcIC control constants */
+
+#define ICRATEMAX  RCONST(0.9)    /* max. Newton conv. rate */
+#define ALPHALS    RCONST(0.0001) /* alpha in linesearch conv. test */
+
+/* Return values for lower level routines used by IDACalcIC */
+
+#define IC_FAIL_RECOV       1
+#define IC_CONSTR_FAILED    2
+#define IC_LINESRCH_FAILED  3
+#define IC_CONV_FAIL        4  
+#define IC_SLOW_CONVRG      5
+
+/*
+ * =================================================================
+ * Private Helper Functions Prototypes
+ * =================================================================
+ */
+
+extern int IDAInitialSetup(IDAMem IDA_mem);
+extern realtype IDAWrmsNorm(IDAMem IDA_mem, N_Vector x, N_Vector w, 
+                            booleantype mask);
+
+static int IDAnlsIC (IDAMem IDA_mem);
+static int IDANewtonIC (IDAMem IDA_mem);
+static int IDALineSrch (IDAMem IDA_mem, realtype *delnorm, realtype *fnorm);
+static int IDAfnorm (IDAMem IDA_mem, realtype *fnorm);
+static int IDANewyyp (IDAMem IDA_mem, realtype lambda);
+static int IDANewy (IDAMem IDA_mem);
+static int IDAICFailFlag (IDAMem IDA_mem, int retval);
+
+/*
+ * =================================================================
+ * Readibility Constants
+ * =================================================================
+ */
+
+#define errfp    (IDA_mem->ida_errfp)
+#define rdata    (IDA_mem->ida_rdata)
+#define res      (IDA_mem->ida_res)
+#define efun     (IDA_mem->ida_efun)
+#define edata    (IDA_mem->ida_edata)
+#define uround   (IDA_mem->ida_uround)  
+#define phi      (IDA_mem->ida_phi) 
+#define ewt      (IDA_mem->ida_ewt)  
+#define delta    (IDA_mem->ida_delta)
+#define ee       (IDA_mem->ida_ee)
+#define savres   (IDA_mem->ida_savres)
+#define tempv2   (IDA_mem->ida_tempv2) 
+#define hh       (IDA_mem->ida_hh)
+#define tn       (IDA_mem->ida_tn)
+#define cj       (IDA_mem->ida_cj)
+#define cjratio  (IDA_mem->ida_cjratio)
+#define nbacktr  (IDA_mem->ida_nbacktr)
+#define nre      (IDA_mem->ida_nre)
+#define ncfn     (IDA_mem->ida_ncfn)
+#define nni      (IDA_mem->ida_nni)
+#define nsetups  (IDA_mem->ida_nsetups)
+#define ns       (IDA_mem->ida_ns)
+#define lsetup   (IDA_mem->ida_lsetup)
+#define lsolve   (IDA_mem->ida_lsolve) 
+#define hused    (IDA_mem->ida_hused)         
+#define epsNewt  (IDA_mem->ida_epsNewt)
+#define id       (IDA_mem->ida_id)
+#define setupNonNull   (IDA_mem->ida_setupNonNull) 
+#define suppressalg    (IDA_mem->ida_suppressalg)
+#define constraints    (IDA_mem->ida_constraints)
+#define constraintsSet (IDA_mem->ida_constraintsSet)
+
+#define epiccon  (IDA_mem->ida_epiccon)
+#define maxnh    (IDA_mem->ida_maxnh)
+#define maxnj    (IDA_mem->ida_maxnj)
+#define maxnit   (IDA_mem->ida_maxnit)
+#define lsoff    (IDA_mem->ida_lsoff)
+#define steptol  (IDA_mem->ida_steptol)
+
+/*
+ * =================================================================
+ * EXPORTED FUNCTIONS IMPLEMENTATION
+ * =================================================================
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * IDACalcIC
+ * -----------------------------------------------------------------
+ * IDACalcIC computes consistent initial conditions, given the 
+ * user's initial guess for unknown components of yy0 and/or yp0.
+ *
+ * The return value is IDA_SUCCESS = 0 if no error occurred.
+ *
+ * The error return values (fully described in ida.h) are:
+ *   IDA_MEM_NULL        ida_mem is NULL
+ *   IDA_NO_MALLOC       ida_mem was not allocated
+ *   IDA_ILL_INPUT       bad value for icopt, tout1, or id
+ *   IDA_LINIT_FAIL      the linear solver linit routine failed
+ *   IDA_BAD_EWT         zero value of some component of ewt
+ *   IDA_RES_FAIL        res had a non-recoverable error
+ *   IDA_FIRST_RES_FAIL  res failed recoverably on the first call
+ *   IDA_LSETUP_FAIL     lsetup had a non-recoverable error
+ *   IDA_LSOLVE_FAIL     lsolve had a non-recoverable error
+ *   IDA_NO_RECOVERY     res, lsetup, or lsolve had a recoverable
+ *                       error, but IDACalcIC could not recover
+ *   IDA_CONSTR_FAIL     the inequality constraints could not be met
+ *   IDA_LINESEARCH_FAIL the linesearch failed (on steptol test)
+ *   IDA_CONV_FAIL       the Newton iterations failed to converge
+ * -----------------------------------------------------------------
+ */
+
+int IDACalcIC (void *ida_mem, realtype t0, N_Vector yy0, N_Vector yp0, 
+               int icopt, realtype tout1)
+{
+  int ewtsetOK;
+  int ier, nwt, nh, mxnh, icret, retval=0;
+  realtype tdist, troundoff, minid, hic, ypnorm;
+  IDAMem IDA_mem;
+
+  /* Check if IDA memory exists */
+
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSG_IC_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  /* Check if problem was malloc'ed */
+  
+  if (IDA_mem->ida_MallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IC_NO_MALLOC);
+    return(IDA_NO_MALLOC);
+  }
+
+  /* Check inputs to IDA for correctness and consistency */
+
+  ier = IDAInitialSetup(IDA_mem);
+  if (ier != IDA_SUCCESS) return(IDA_ILL_INPUT);
+  IDA_mem->ida_SetupDone = TRUE;
+
+  /* Check legality of input arguments, and set IDA memory copies. */
+
+  IDA_mem->ida_t0 = t0;
+
+  if (yy0 == NULL) { 
+    if(errfp!=NULL) fprintf(errfp, MSG_IC_Y0_NULL); 
+    return(IDA_ILL_INPUT); 
+  }
+  IDA_mem->ida_yy0 = yy0;
+
+  if (yp0 == NULL) { 
+    if(errfp!=NULL) fprintf(errfp, MSG_IC_YP0_NULL); 
+    return(IDA_ILL_INPUT); 
+  }
+  IDA_mem->ida_yp0 = yp0;
+
+  if (icopt < IDA_YA_YDP_INIT || icopt > IDA_Y_INIT) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IC_BAD_ICOPT);
+    return(IDA_ILL_INPUT);
+  }
+  IDA_mem->ida_icopt = icopt;
+
+  if (icopt == IDA_YA_YDP_INIT && (id == NULL)) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IC_MISSING_ID);
+    return(IDA_ILL_INPUT);
+  }
+
+  tdist = ABS(tout1 - tn);
+  troundoff = TWO*uround*(ABS(tn) + ABS(tout1));    
+  if (tdist < troundoff) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IC_TOO_CLOSE);
+    return(IDA_ILL_INPUT);
+  }
+
+  /* For use in the IDA_YA_YP_INIT case, set sysindex and tscale. */
+
+  IDA_mem->ida_sysindex = 1;
+  IDA_mem->ida_tscale   = tdist;
+  if (icopt == IDA_YA_YDP_INIT) {
+    minid = N_VMin(id);
+    if (minid < ZERO) {
+      if(errfp!=NULL) fprintf(errfp, MSG_IC_BAD_ID);
+      return(IDA_ILL_INPUT);
+    }
+    if (minid > HALF) IDA_mem->ida_sysindex = 0;
+  }
+
+  /* Set the test constant in the Newton convergence test */
+
+  IDA_mem->ida_epsNewt = epiccon;
+
+  /* Initializations: 
+     cjratio = 1 (for use in direct linear solvers); 
+     set nbacktr = 0; */
+
+  cjratio = ONE;
+  nbacktr = 0;
+
+  /* Set hic, hh, cj, and mxnh. */
+  hic = PT001*tdist;
+  ypnorm = IDAWrmsNorm(IDA_mem, yp0, ewt, suppressalg);
+  if (ypnorm > HALF/hic) hic = HALF/ypnorm;
+  if( tout1 < tn) hic = -hic;
+  hh = hic;
+  if (icopt == IDA_YA_YDP_INIT) {
+    cj = ONE/hic;
+    mxnh = maxnh;
+  }
+  else {
+    cj = ZERO;
+    mxnh = 1;
+  }
+
+  /* Loop over nwt = number of evaluations of ewt vector. */
+
+  for (nwt = 1; nwt <= 2; nwt++) {
+ 
+    /* Loop over nh = number of h values. */
+    for (nh = 1; nh <= mxnh; nh++) {
+
+      /* Call the IC nonlinear solver function. */
+      retval = IDAnlsIC(IDA_mem);
+
+      /* Cut h and loop on recoverable IDA_YA_YDP_INIT failure; else break. */
+      if (retval == IDA_SUCCESS) break;
+      ncfn++;
+      if (retval < 0) break;
+      if (nh == mxnh) break;
+      /* If looping to try again, reset yy0 and yp0 if not converging. */
+      if (retval != IC_SLOW_CONVRG) {
+        N_VScale (ONE, phi[0], yy0);
+        N_VScale (ONE, phi[1], yp0);
+      }
+      hic *= PT1;
+      cj = ONE/hic;
+      hh = hic;
+    }   /* End of nh loop */
+
+    /* Break on failure; else reset ewt, save yy0, yp0 in phi, and loop. */
+    if (retval != IDA_SUCCESS) break;
+    ewtsetOK = efun(yy0, ewt, edata);
+    if (ewtsetOK != 0) { 
+      retval = IDA_BAD_EWT; 
+      break; 
+    }
+    N_VScale (ONE, yy0, phi[0]);
+    N_VScale (ONE, yp0, phi[1]);
+
+  }   /* End of nwt loop */
+
+
+  /* Load the optional outputs. */
+  if (icopt == IDA_YA_YDP_INIT)   hused = hic;
+
+  /* On any failure, print message and return proper flag. */
+  if (retval != IDA_SUCCESS) {
+    icret = IDAICFailFlag(IDA_mem, retval);
+    return(icret);
+  }
+
+  /* Otherwise return success flag. */
+
+  IDA_mem->ida_tn = t0;
+
+  return(IDA_SUCCESS);
+
+}
+
+/*
+ * =================================================================
+ * PRIVATE FUNCTIONS IMPLEMENTATION
+ * =================================================================
+ */
+
+#define t0       (IDA_mem->ida_t0)
+#define yy0      (IDA_mem->ida_yy0)
+#define yp0      (IDA_mem->ida_yp0)
+
+#define icopt    (IDA_mem->ida_icopt)
+#define sysindex (IDA_mem->ida_sysindex)
+#define tscale   (IDA_mem->ida_tscale)
+#define ynew     (IDA_mem->ida_ynew)
+#define ypnew    (IDA_mem->ida_ypnew)
+#define delnew   (IDA_mem->ida_delnew)
+#define dtemp    (IDA_mem->ida_dtemp)
+
+/*
+ * -----------------------------------------------------------------
+ * IDAnlsIC
+ * -----------------------------------------------------------------
+ * IDAnlsIC solves a nonlinear system for consistent initial 
+ * conditions.  It calls IDANewtonIC to do most of the work.
+ *
+ * The return value is IDA_SUCCESS = 0 if no error occurred.
+ * The error return values (positive) considered recoverable are:
+ *  IC_FAIL_RECOV      if res, lsetup, or lsolve failed recoverably
+ *  IC_CONSTR_FAILED   if the constraints could not be met
+ *  IC_LINESRCH_FAILED if the linesearch failed (on steptol test)
+ *  IC_CONV_FAIL       if the Newton iterations failed to converge
+ *  IC_SLOW_CONVRG     if the iterations are converging slowly
+ *                     (failed the convergence test, but showed
+ *                     norm reduction or convergence rate < 1)
+ * The error return values (negative) considered non-recoverable are:
+ *  IDA_RES_FAIL       if res had a non-recoverable error
+ *  IDA_FIRST_RES_FAIL if res failed recoverably on the first call
+ *  IDA_LSETUP_FAIL    if lsetup had a non-recoverable error
+ *  IDA_LSOLVE_FAIL    if lsolve had a non-recoverable error
+ * -----------------------------------------------------------------
+ */
+
+static int IDAnlsIC (IDAMem IDA_mem)
+{
+  int retval, nj;
+  N_Vector tv1, tv2, tv3;
+
+  tv1 = ee;
+  tv2 = tempv2;
+  tv3 = phi[2];
+
+  retval = res(t0, yy0, yp0, delta, rdata);
+  nre++;
+  if(retval < 0) return(IDA_RES_FAIL);
+  if(retval > 0) return(IDA_FIRST_RES_FAIL);
+
+  N_VScale (ONE, delta, savres);
+
+  /* Loop over nj = number of linear solve Jacobian setups. */
+
+  for (nj = 1; nj <= maxnj; nj++) {
+
+    /* If there is a setup routine, call it. */
+    if (setupNonNull) {
+      nsetups++;
+      retval = lsetup(IDA_mem, yy0, yp0, delta, tv1, tv2, tv3);
+      if(retval < 0) return(IDA_LSETUP_FAIL);
+      if(retval > 0) return(IC_FAIL_RECOV);
+    }
+
+    /* Call the Newton iteration routine, and return if successful.  */
+    retval = IDANewtonIC(IDA_mem);
+    if (retval == IDA_SUCCESS) return(IDA_SUCCESS);
+
+    /* If converging slowly and lsetup is nontrivial, retry. */
+    if (retval == IC_SLOW_CONVRG && setupNonNull) {
+      N_VScale (ONE, savres, delta);
+      continue;
+    } else {
+      return(retval);
+    }
+
+  }   /* End of nj loop */
+
+  /* No convergence after maxnj tries; return with retval=IC_SLOW_CONVRG */
+  return(retval);
+
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDANewtonIC
+ * -----------------------------------------------------------------
+ * IDANewtonIC performs the Newton iteration to solve for consistent
+ * initial conditions.  It calls IDALineSrch within each iteration.
+ * On return, savres contains the current residual vector.
+ *
+ * The return value is IDA_SUCCESS = 0 if no error occurred.
+ * The error return values (positive) considered recoverable are:
+ *  IC_FAIL_RECOV      if res or lsolve failed recoverably
+ *  IC_CONSTR_FAILED   if the constraints could not be met
+ *  IC_LINESRCH_FAILED if the linesearch failed (on steptol test)
+ *  IC_CONV_FAIL       if the Newton iterations failed to converge
+ *  IC_SLOW_CONVRG     if the iterations appear to be converging slowly.
+ *                     They failed the convergence test, but showed 
+ *                     an overall norm reduction (by a factor of < 0.1)
+ *                     or a convergence rate <= ICRATEMAX).
+ * The error return values (negative) considered non-recoverable are:
+ *  IDA_RES_FAIL   if res had a non-recoverable error
+ *  IDA_LSOLVE_FAIL      if lsolve had a non-recoverable error
+ * -----------------------------------------------------------------
+ */
+
+static int IDANewtonIC (IDAMem IDA_mem)
+{
+  int retval, mnewt;
+  realtype delnorm, fnorm, fnorm0, oldfnrm, rate;
+
+  /* Set pointer for vector delnew */
+  delnew = phi[2];
+
+  /* Call the linear solve function to get the Newton step, delta. */
+  retval = lsolve(IDA_mem, delta, ewt, yy0, yp0, savres);
+  if(retval < 0) return(IDA_LSOLVE_FAIL);
+  if(retval > 0) return(IC_FAIL_RECOV);
+
+  /* Compute the norm of the step; return now if this is small. */
+  fnorm = IDAWrmsNorm(IDA_mem, delta, ewt, FALSE);
+  if (sysindex == 0) fnorm *= tscale*ABS(cj);
+  if (fnorm <= epsNewt) return(IDA_SUCCESS);
+  fnorm0 = fnorm;
+
+  /* Newton iteration loop */
+
+  for (mnewt = 0; mnewt < maxnit; mnewt++) {
+
+    nni++;
+    delnorm = fnorm;
+    oldfnrm = fnorm;
+
+    /* Call the Linesearch function and return if it failed. */
+    retval = IDALineSrch(IDA_mem, &delnorm, &fnorm);
+    if (retval != IDA_SUCCESS) return(retval);
+
+    /* Set the observed convergence rate and test for convergence. */
+    rate = fnorm/oldfnrm;
+    if (fnorm <= epsNewt) return(IDA_SUCCESS);
+
+    /* If not converged, copy new step vector, and loop. */
+    N_VScale(ONE, delnew, delta);
+
+  }   /* End of Newton iteration loop */
+
+  /* Return either IC_SLOW_CONVRG or recoverable fail flag. */
+  if (rate <= ICRATEMAX || fnorm < PT1*fnorm0) return(IC_SLOW_CONVRG);
+  return(IC_CONV_FAIL);
+
+}
+
+
+/*
+ * -----------------------------------------------------------------
+ * IDALineSrch
+ * -----------------------------------------------------------------
+ * IDALineSrch performs the Linesearch algorithm with the 
+ * calculation of consistent initial conditions.
+ *
+ * On entry, yy0 and yp0 are the current values of y and y', the 
+ * Newton step is delta, the current residual vector F is savres,
+ * delnorm is WRMS-norm(delta), and fnorm is the norm of the vector
+ * J-inverse F.
+ *
+ * On a successful return, yy0, yp0, and savres have been updated, 
+ * delnew contains the current value of J-inverse F, and fnorm is
+ * WRMS-norm(delnew).
+ *
+ * The return value is IDA_SUCCESS = 0 if no error occurred.
+ * The error return values (positive) considered recoverable are:
+ *  IC_FAIL_RECOV      if res or lsolve failed recoverably
+ *  IC_CONSTR_FAILED   if the constraints could not be met
+ *  IC_LINESRCH_FAILED if the linesearch failed (on steptol test)
+ * The error return values (negative) considered non-recoverable are:
+ *  IDA_RES_FAIL   if res had a non-recoverable error
+ *  IDA_LSOLVE_FAIL      if lsolve had a non-recoverable error
+ * -----------------------------------------------------------------
+ */
+
+static int IDALineSrch (IDAMem IDA_mem, realtype *delnorm, realtype *fnorm)
+{
+  booleantype conOK;
+  int retval;
+  realtype f1norm, fnormp, f1normp, ratio, lambda, minlam, slpi;
+  N_Vector mc;
+
+  /* Initialize work space pointers, f1norm, ratio.
+     (Use of mc in constraint check does not conflict with ypnew.) */
+  mc = ee;
+  dtemp = phi[3];
+  ynew = tempv2;
+  ypnew = ee;
+  f1norm = (*fnorm)*(*fnorm)*HALF;
+  ratio = ONE;
+
+  /* If there are constraints, check and reduce step if necessary. */
+  if (constraintsSet) {
+
+    /* Update y and check constraints. */
+    IDANewy(IDA_mem);
+    conOK = N_VConstrMask (constraints, ynew, mc);
+
+    if (!conOK) {
+      /* Not satisfied.  Compute scaled step to satisfy constraints. */
+      N_VProd (mc, delta, dtemp);
+      ratio = PT99*N_VMinQuotient (yy0, dtemp);
+      (*delnorm) *= ratio;
+      if ((*delnorm) <= steptol) return(IC_CONSTR_FAILED);
+      N_VScale (ratio, delta, delta);
+    }
+
+  } /* End of constraints check */
+
+  slpi = -TWO*f1norm*ratio;
+  minlam = steptol/(*delnorm);
+  lambda = ONE;
+
+  /* In IDA_Y_INIT case, set ypnew = yp0 (fixed) for linesearch. */
+  if (icopt == IDA_Y_INIT) N_VScale (ONE, yp0, ypnew);
+
+  /* Loop on linesearch variable lambda. */
+
+  loop {
+
+    /* Get new (y,y') = (ynew,ypnew) and norm of new function value. */
+    IDANewyyp(IDA_mem, lambda);
+    retval = IDAfnorm(IDA_mem, &fnormp);
+    if (retval != IDA_SUCCESS) return(retval);
+
+    /* If lsoff option is on, break out. */
+    if (lsoff) break;
+
+    /* Do alpha-condition test. */
+    f1normp = fnormp*fnormp*HALF;
+    if (f1normp <= f1norm + ALPHALS*slpi*lambda) break;
+    if (lambda < minlam) return(IC_LINESRCH_FAILED);
+    lambda /= TWO;
+    nbacktr++;
+
+  }  /* End of breakout linesearch loop */
+
+  /* Update yy0, yp0, and fnorm, then return. */
+  N_VScale (ONE, ynew,  yy0);
+  if (icopt == IDA_YA_YDP_INIT) N_VScale (ONE, ypnew, yp0);
+  *fnorm = fnormp;
+  return(IDA_SUCCESS);
+
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDAfnorm
+ * -----------------------------------------------------------------
+ * IDAfnorm computes the norm of the current function value, by
+ * evaluating the DAE residual function, calling the linear 
+ * system solver, and computing a WRMS-norm.
+ *
+ * On return, savres contains the current residual vector F, and
+ * delnew contains J-inverse F.
+ *
+ * The return value is IDA_SUCCESS = 0 if no error occurred, or
+ *  IC_FAIL_RECOV    if res or lsolve failed recoverably, or
+ *  IDA_RES_FAIL if res had a non-recoverable error, or
+ *  IDA_LSOLVE_FAIL    if lsolve had a non-recoverable error.
+ * -----------------------------------------------------------------
+ */
+
+static int IDAfnorm (IDAMem IDA_mem, realtype *fnorm)
+{
+
+  int retval;
+
+  /* Get residual vector F, return if failed, and save F in savres. */
+  retval = res(t0, ynew, ypnew, delnew, rdata);
+  nre++;
+  if(retval < 0) return(IDA_RES_FAIL);
+  if(retval > 0) return(IC_FAIL_RECOV);
+
+  N_VScale (ONE, delnew, savres);
+
+  /* Call the linear solve function to get J-inverse F; return if failed. */
+  retval = lsolve(IDA_mem, delnew, ewt, ynew, ypnew, savres);
+  if(retval < 0) return(IDA_LSOLVE_FAIL);
+  if(retval > 0) return(IC_FAIL_RECOV);
+
+  /* Compute the WRMS-norm; rescale if index = 0. */
+  *fnorm = IDAWrmsNorm(IDA_mem, delnew, ewt, FALSE);
+  if (sysindex == 0) (*fnorm) *= tscale*ABS(cj);
+
+  return(IDA_SUCCESS);
+
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDANewyyp
+ * -----------------------------------------------------------------
+ * IDANewyyp updates the vectors ynew and ypnew from yy0 and yp0,
+ * using the current step vector lambda*delta, in a manner
+ * depending on icopt and the input id vector.
+ *
+ * The return value is always IDA_SUCCESS = 0.
+ * -----------------------------------------------------------------
+ */
+
+static int IDANewyyp (IDAMem IDA_mem, realtype lambda)
+{
+  
+  /* IDA_YA_YDP_INIT case: ynew  = yy0 - lambda*delta    where id_i = 0
+                           ypnew = yp0 - cj*lambda*delta where id_i = 1. */
+  if (icopt == IDA_YA_YDP_INIT) {
+    N_VProd (id, delta, dtemp);
+    N_VLinearSum (ONE, yp0, -cj*lambda, dtemp, ypnew);
+    N_VLinearSum (ONE, delta, -ONE, dtemp, dtemp);
+    N_VLinearSum (ONE, yy0, -lambda, dtemp, ynew);
+    return(IDA_SUCCESS);
+  }
+
+  /* IDA_Y_INIT case: ynew = yy0 - lambda*delta. (ypnew = yp0 preset.) */
+  N_VLinearSum (ONE, yy0, -lambda, delta, ynew);
+  return(IDA_SUCCESS);
+
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDANewy
+ * -----------------------------------------------------------------
+ * IDANewy updates the vector ynew from yy0,
+ * using the current step vector delta, in a manner
+ * depending on icopt and the input id vector.
+ *
+ * The return value is always IDA_SUCCESS = 0.
+ * -----------------------------------------------------------------
+ */
+
+static int IDANewy (IDAMem IDA_mem)
+{
+  
+  /* IDA_YA_YDP_INIT case: ynew = yy0 - delta    where id_i = 0. */
+  if (icopt == IDA_YA_YDP_INIT) {
+    N_VProd (id, delta, dtemp);
+    N_VLinearSum (ONE, delta, -ONE, dtemp, dtemp);
+    N_VLinearSum (ONE, yy0, -ONE, dtemp, ynew);
+    return(IDA_SUCCESS);
+  }
+
+  /* IDA_Y_INIT case: ynew = yy0 - delta. */
+  N_VLinearSum (ONE, yy0, -ONE, delta, ynew);
+  return(IDA_SUCCESS);
+
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDAICFailFlag
+ * -----------------------------------------------------------------
+ * IDAICFailFlag prints a message and sets the IDACalcIC return
+ * value appropriate to the flag retval returned by IDAnlsIC.
+ * -----------------------------------------------------------------
+ */
+
+static int IDAICFailFlag (IDAMem IDA_mem, int retval)
+{
+
+  /* Depending on retval, print error message and return error flag. */
+  switch (retval) {
+
+    case IDA_RES_FAIL:
+      if(errfp!=NULL) fprintf(errfp, MSG_IC_RES_NONREC);
+      return(IDA_RES_FAIL);
+
+    case IDA_FIRST_RES_FAIL:
+      if(errfp!=NULL) fprintf(errfp, MSG_IC_RES_FAIL);
+      return(IDA_FIRST_RES_FAIL);
+
+    case IDA_LSETUP_FAIL:
+      if(errfp!=NULL) fprintf(errfp, MSG_IC_SETUP_FAIL);
+      return(IDA_LSETUP_FAIL);
+
+    case IDA_LSOLVE_FAIL:  
+      if(errfp!=NULL) fprintf(errfp, MSG_IC_SOLVE_FAIL);
+      return(IDA_LSOLVE_FAIL);
+
+    case IC_FAIL_RECOV:
+      if(errfp!=NULL) fprintf(errfp, MSG_IC_NO_RECOVERY);
+      return(IDA_NO_RECOVERY);
+
+    case IC_CONSTR_FAILED: 
+      if(errfp!=NULL) fprintf(errfp, MSG_IC_FAIL_CONSTR);
+      return(IDA_CONSTR_FAIL);
+
+    case IC_LINESRCH_FAILED:  
+      if(errfp!=NULL) fprintf(errfp, MSG_IC_FAILED_LINS);
+      return(IDA_LINESEARCH_FAIL);
+
+    case IC_CONV_FAIL:
+      if(errfp!=NULL) fprintf(errfp, MSG_IC_CONV_FAILED);
+      return(IDA_CONV_FAIL);
+
+    case IC_SLOW_CONVRG: 
+      if(errfp!=NULL) fprintf(errfp, MSG_IC_CONV_FAILED);
+      return(IDA_CONV_FAIL);
+
+    case IDA_BAD_EWT:
+      if(errfp!=NULL) fprintf(errfp, MSG_IC_BAD_EWT);
+      return(IDA_BAD_EWT);
+
+  }
+  return -99;
+}
+
diff --git a/Win32/WinCVODE/sundials/ida/source/idaio.c b/Win32/WinCVODE/sundials/ida/source/idaio.c
new file mode 100644
index 0000000..f21dca0
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/source/idaio.c
@@ -0,0 +1,1000 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:42:25 $
+ * ----------------------------------------------------------------- 
+ * Programmers: Alan C. Hindmarsh, and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California  
+ * Produced at the Lawrence Livermore National Laboratory
+ * All rights reserved
+ * For details, see sundials/ida/LICENSE
+ * -----------------------------------------------------------------
+ * This is the implementation file for the optional inputs and     
+ * outputs for the IDA solver.                                    
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "ida_impl.h"
+
+#define ZERO    RCONST(0.0)
+#define HALF    RCONST(0.5)
+#define ONE     RCONST(1.0)
+#define TWOPT5  RCONST(2.5)
+
+#define lrw  (IDA_mem->ida_lrw)
+#define liw  (IDA_mem->ida_liw)
+#define lrw1 (IDA_mem->ida_lrw1)
+#define liw1 (IDA_mem->ida_liw1)
+
+/* 
+ * =================================================================
+ * IDA optional input functions
+ * =================================================================
+ */
+
+int IDASetErrFile(void *ida_mem, FILE *errfp)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  IDA_mem->ida_errfp = errfp;
+
+  return(IDA_SUCCESS);
+}
+
+#define errfp (IDA_mem->ida_errfp)
+
+/*-----------------------------------------------------------------*/
+
+int IDASetRdata(void *ida_mem, void *res_data)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  IDA_mem->ida_rdata = res_data;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetMaxOrd(void *ida_mem, int maxord)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (maxord <= 0) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_NEG_MAXORD);
+    return(IDA_ILL_INPUT);
+  }
+
+  if (maxord > IDA_mem->ida_maxord) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_BAD_MAXORD);
+    return(IDA_ILL_INPUT);
+  }  
+
+  IDA_mem->ida_maxord = maxord;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetMaxNumSteps(void *ida_mem, long int mxsteps)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (mxsteps < 0) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_NEG_MXSTEPS);
+    return(IDA_ILL_INPUT);
+  }
+
+  /* Passing 0 sets the default */
+  if (mxsteps == 0)
+    IDA_mem->ida_mxstep = MXSTEP_DEFAULT;
+  else
+    IDA_mem->ida_mxstep = mxsteps;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetInitStep(void *ida_mem, realtype hin)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  IDA_mem->ida_hin = hin;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetMaxStep(void *ida_mem, realtype hmax)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (hmax < 0) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_NEG_HMAX);
+    return(IDA_ILL_INPUT);
+  }
+
+  /* Passing 0 sets hmax = infinity */
+  if (hmax == ZERO) {
+    IDA_mem->ida_hmax_inv = HMAX_INV_DEFAULT;
+    return(IDA_SUCCESS);
+  }
+
+  IDA_mem->ida_hmax_inv = ONE/hmax;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetStopTime(void *ida_mem, realtype tstop)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  IDA_mem->ida_tstop = tstop;
+  IDA_mem->ida_tstopset = TRUE;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetNonlinConvCoef(void *ida_mem, realtype epcon)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (epcon < ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_NEG_EPCON);
+    return(IDA_ILL_INPUT);
+  }
+
+  IDA_mem->ida_epcon = epcon;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetMaxErrTestFails(void *ida_mem, int maxnef)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return (IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  IDA_mem->ida_maxnef = maxnef;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetMaxConvFails(void *ida_mem, int maxncf)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return (IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  IDA_mem->ida_maxncf = maxncf;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetMaxNonlinIters(void *ida_mem, int maxcor)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return (IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  IDA_mem->ida_maxcor = maxcor;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetSuppressAlg(void *ida_mem, booleantype suppressalg)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  IDA_mem->ida_suppressalg = suppressalg;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetId(void *ida_mem, N_Vector id)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (id == NULL) {
+    if (IDA_mem->ida_idMallocDone) {
+      N_VDestroy(IDA_mem->ida_id);
+      lrw -= lrw1;
+      liw -= liw1;
+    }
+    IDA_mem->ida_idMallocDone = FALSE;    
+    return(IDA_SUCCESS);
+  }
+
+  if ( !(IDA_mem->ida_idMallocDone) ) {
+    IDA_mem->ida_id = N_VClone(id);
+    lrw += lrw1;
+    liw += liw1;
+    IDA_mem->ida_idMallocDone = TRUE;
+  }
+
+  /* Load the id vector */
+
+  N_VScale(ONE, id, IDA_mem->ida_id);
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetConstraints(void *ida_mem, N_Vector constraints)
+{
+  IDAMem IDA_mem;
+  realtype temptest;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (constraints == NULL) {
+    if (IDA_mem->ida_constraintsMallocDone) {
+      N_VDestroy(IDA_mem->ida_constraints);
+      lrw -= lrw1;
+      liw -= liw1;
+    }
+    IDA_mem->ida_constraintsMallocDone = FALSE;
+    IDA_mem->ida_constraintsSet = FALSE;
+    return(IDA_SUCCESS);
+  }
+
+  /* Test if required vector ops. are defined */
+
+  if (constraints->ops->nvdiv         == NULL ||
+      constraints->ops->nvmaxnorm     == NULL ||
+      constraints->ops->nvcompare     == NULL ||
+      constraints->ops->nvconstrmask  == NULL ||
+      constraints->ops->nvminquotient == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_BAD_NVECTOR);
+    return(IDA_ILL_INPUT);
+  }
+
+  /*  Check the constraints vector */
+
+  temptest = N_VMaxNorm(constraints);
+  if((temptest > TWOPT5) || (temptest < HALF)){ 
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_BAD_CONSTRAINTS); 
+    return(IDA_ILL_INPUT); 
+  }
+
+  if ( !(IDA_mem->ida_constraintsMallocDone) ) {
+    IDA_mem->ida_constraints = N_VClone(constraints);
+    lrw += lrw1;
+    liw += liw1;
+    IDA_mem->ida_constraintsMallocDone = TRUE;
+  }
+
+  /* Load the constraints vector */
+
+  N_VScale(ONE, constraints, IDA_mem->ida_constraints);
+
+  IDA_mem->ida_constraintsSet = TRUE;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetTolerances(void *ida_mem, 
+                     int itol, realtype rtol, void *atol)
+{
+  IDAMem IDA_mem;
+  booleantype neg_atol;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  /* Check if ida_mem was allocated */
+
+  if (IDA_mem->ida_MallocDone == FALSE) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_NO_MALLOC);
+    return(IDA_NO_MALLOC);
+  }
+
+  /* Check inputs */
+
+  if ((itol != IDA_SS) && (itol != IDA_SV)) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_BAD_ITOL);
+    return(IDA_ILL_INPUT);
+  }
+
+  if (atol == NULL) { 
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_ATOL_NULL); 
+    return(IDA_ILL_INPUT); 
+  }
+
+  if (rtol < ZERO) { 
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_BAD_RTOL); 
+    return(IDA_ILL_INPUT); 
+  }
+
+    
+  if (itol == IDA_SS) { 
+    neg_atol = (*((realtype *)atol) < ZERO); 
+  } else { 
+    neg_atol = (N_VMin((N_Vector)atol) < ZERO); 
+  }
+
+  if (neg_atol) { 
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_BAD_ATOL); 
+    return(IDA_ILL_INPUT); 
+  }
+
+  /* Copy tolerances into memory */
+
+  if ( (itol != IDA_SV) && (IDA_mem->ida_VatolMallocDone) ) {
+    N_VDestroy(IDA_mem->ida_Vatol);
+    lrw -= lrw1;
+    liw -= liw1;
+    IDA_mem->ida_VatolMallocDone = FALSE;
+  }
+
+  if ( (itol == IDA_SV) && !(IDA_mem->ida_VatolMallocDone) ) {
+    IDA_mem->ida_Vatol = N_VClone(IDA_mem->ida_ewt);
+    lrw += lrw1;
+    liw += liw1;
+    IDA_mem->ida_VatolMallocDone = TRUE;
+  }
+
+  IDA_mem->ida_itol = itol;
+  IDA_mem->ida_rtol = rtol;      
+  if (itol == IDA_SS)
+    IDA_mem->ida_Satol = *((realtype *)atol);
+  else 
+    N_VScale(ONE, (N_Vector)atol, IDA_mem->ida_Vatol);
+
+  IDA_mem->ida_efun = IDAEwtSet;
+  IDA_mem->ida_edata = ida_mem;
+
+  return(IDA_SUCCESS);
+}
+
+/* 
+ * IDASetEwtFn
+ *
+ * Specifies the user-provide EwtSet function and data pointer for e
+ */
+
+int IDASetEwtFn(void *ida_mem, IDAEwtFn efun, void *edata)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  if ( IDA_mem->ida_VatolMallocDone ) {
+    N_VDestroy(IDA_mem->ida_Vatol);
+    lrw -= lrw1;
+    liw -= liw1;
+    IDA_mem->ida_VatolMallocDone = FALSE;
+  }
+
+  IDA_mem->ida_itol = IDA_WF;
+  IDA_mem->ida_efun = efun;
+  IDA_mem->ida_edata = edata;
+
+  return(IDA_SUCCESS);
+}
+
+
+/* 
+ * =================================================================
+ * IDA IC optional input functions
+ * =================================================================
+ */
+
+int IDASetNonlinConvCoefIC(void *ida_mem, realtype epiccon)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (epiccon < ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_BAD_EPICCON);
+    return(IDA_ILL_INPUT);
+  }
+
+  IDA_mem->ida_epiccon = epiccon;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetMaxNumStepsIC(void *ida_mem, int maxnh)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (maxnh < 0) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_BAD_MAXNH);
+    return(IDA_ILL_INPUT);
+  }
+
+  IDA_mem->ida_maxnh = maxnh;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetMaxNumJacsIC(void *ida_mem, int maxnj)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+   if (maxnj < 0) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_BAD_MAXNJ);
+    return(IDA_ILL_INPUT);
+  } 
+
+  IDA_mem->ida_maxnj = maxnj;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetMaxNumItersIC(void *ida_mem, int maxnit)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (maxnit < 0) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_BAD_MAXNIT);
+    return(IDA_ILL_INPUT);
+  }
+
+  IDA_mem->ida_maxnit = maxnit;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetLineSearchOffIC(void *ida_mem, booleantype lsoff)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  IDA_mem->ida_lsoff = lsoff;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDASetStepToleranceIC(void *ida_mem, realtype steptol)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAS_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (steptol < ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSG_IDAS_BAD_STEPTOL);
+    return(IDA_ILL_INPUT);
+  }
+
+  IDA_mem->ida_steptol = steptol;
+
+  return(IDA_SUCCESS);
+}
+
+/* 
+ * =================================================================
+ * Readability constants
+ * =================================================================
+ */
+
+#define ewt         (IDA_mem->ida_ewt)
+#define kk          (IDA_mem->ida_kk)
+#define hh          (IDA_mem->ida_hh)
+#define h0u         (IDA_mem->ida_h0u)
+#define tn          (IDA_mem->ida_tn)
+#define nbacktr     (IDA_mem->ida_nbacktr)
+#define nst         (IDA_mem->ida_nst)
+#define nre         (IDA_mem->ida_nre)
+#define ncfn        (IDA_mem->ida_ncfn)
+#define netf        (IDA_mem->ida_netf)
+#define nni         (IDA_mem->ida_nni)
+#define nsetups     (IDA_mem->ida_nsetups)
+#define lrw         (IDA_mem->ida_lrw)
+#define liw         (IDA_mem->ida_liw)
+#define kused       (IDA_mem->ida_kused)          
+#define hused       (IDA_mem->ida_hused)         
+#define tolsf       (IDA_mem->ida_tolsf) 
+
+/* 
+ * =================================================================
+ * IDA optional input functions
+ * =================================================================
+ */
+
+int IDAGetNumSteps(void *ida_mem, long int *nsteps)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *nsteps = nst;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetNumResEvals(void *ida_mem, long int *nrevals)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *nrevals = nre;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetNumLinSolvSetups(void *ida_mem, long int *nlinsetups)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *nlinsetups = nsetups;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetNumErrTestFails(void *ida_mem, long int *netfails)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *netfails = netf;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetNumBacktrackOps(void *ida_mem, long int *nbacktracks)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *nbacktracks = nbacktr;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetLastOrder(void *ida_mem, int *klast)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *klast = kused;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetCurrentOrder(void *ida_mem, int *kcur)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *kcur = kk;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetActualInitStep(void *ida_mem, realtype *hinused)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *hinused = h0u;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetLastStep(void *ida_mem, realtype *hlast)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *hlast = hused;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetCurrentStep(void *ida_mem, realtype *hcur)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *hcur = hh;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetCurrentTime(void *ida_mem, realtype *tcur)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *tcur = tn;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetTolScaleFactor(void *ida_mem, realtype *tolsfact)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *tolsfact = tolsf;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetErrWeights(void *ida_mem, N_Vector eweight)
+{
+  IDAMem IDA_mem;
+  
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return (IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem; 
+
+  N_VScale(ONE, ewt, eweight);
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetWorkSpace(void *ida_mem, long int *lenrw, long int *leniw)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *leniw = liw;
+  *lenrw = lrw;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetIntegratorStats(void *ida_mem, long int *nsteps, long int *nrevals, 
+                          long int *nlinsetups, long int *netfails,
+                          int *klast, int *kcur, realtype *hlast, 
+                          realtype *hcur, realtype *tcur)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *nsteps     = nst;
+  *nrevals    = nre;
+  *nlinsetups = nsetups;
+  *netfails   = netf;
+  *klast      = kused;
+  *kcur       = kk;
+  *hlast      = hused;
+  *hcur       = hh;  
+  *tcur       = tn;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetNumNonlinSolvIters(void *ida_mem, long int *nniters)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *nniters = nni;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetNumNonlinSolvConvFails(void *ida_mem, long int *nncfails)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *nncfails = ncfn;
+
+  return(IDA_SUCCESS);
+}
+
+/*-----------------------------------------------------------------*/
+
+int IDAGetNonlinSolvStats(void *ida_mem, long int *nniters, long int *nncfails)
+{
+  IDAMem IDA_mem;
+
+  if (ida_mem==NULL) {
+    fprintf(stderr, MSG_IDAG_NO_MEM);
+    return(IDA_MEM_NULL);
+  }
+
+  IDA_mem = (IDAMem) ida_mem;
+
+  *nniters  = nni;
+  *nncfails = ncfn;
+
+  return(IDA_SUCCESS);
+}
+
diff --git a/Win32/WinCVODE/sundials/ida/source/idaspgmr.c b/Win32/WinCVODE/sundials/ida/source/idaspgmr.c
new file mode 100644
index 0000000..0065a4a
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/source/idaspgmr.c
@@ -0,0 +1,893 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:42:25 $
+ * ----------------------------------------------------------------- 
+ * Programmers: Alan C. Hindmarsh, and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California  
+ * Produced at the Lawrence Livermore National Laboratory
+ * All rights reserved
+ * For details, see sundials/ida/LICENSE
+ * -----------------------------------------------------------------
+ * This is the implementation file for the IDA Scaled              
+ * Preconditioned GMRES linear solver module, IDASPGMR.            
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "ida_impl.h"
+#include "idaspgmr_impl.h"
+
+#include "sundialsmath.h"
+
+/* Constants */
+
+#define ZERO         RCONST(0.0)
+#define ONE          RCONST(1.0)
+#define PT9          RCONST(0.9)
+#define PT05         RCONST(0.05)
+
+#define IDA_SPGMR_MAXL    5
+#define IDA_SPGMR_MAXRS   5
+
+/* IDASPGMR linit, lsetup, lsolve, lperf, and lfree routines */
+
+static int IDASpgmrInit(IDAMem IDA_mem);
+
+static int IDASpgmrSetup(IDAMem IDA_mem, 
+                         N_Vector yy_p, N_Vector yp_p, N_Vector rr_p, 
+                         N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+static int IDASpgmrSolve(IDAMem IDA_mem, N_Vector bb, N_Vector weight,
+                         N_Vector yy_now, N_Vector yp_now, N_Vector rr_now);
+
+static int IDASpgmrPerf(IDAMem IDA_mem, int perftask);
+
+static int IDASpgmrFree(IDAMem IDA_mem);
+
+/* IDASPGMR Atimes and PSolve routines called by generic SPGMR solver */
+
+static int IDASpgmrAtimes(void *ida_mem, N_Vector v, N_Vector z);
+
+static int IDASpgmrPSolve(void *ida_mem, N_Vector r, N_Vector z, int lr);
+
+/* Difference quotient approximation for Jac times vector */
+
+static int IDASpgmrDQJtimes(realtype tt,
+                            N_Vector yy, N_Vector yp, N_Vector rr,
+                            N_Vector v, N_Vector Jv, 
+                            realtype c_j, void *jac_data, 
+                            N_Vector work1, N_Vector work2);
+
+/* Readability Replacements */
+
+#define lrw1    (IDA_mem->ida_lrw1)
+#define liw1    (IDA_mem->ida_liw1)
+#define nst     (IDA_mem->ida_nst)
+#define tn      (IDA_mem->ida_tn)
+#define cj      (IDA_mem->ida_cj)
+#define epsNewt (IDA_mem->ida_epsNewt)
+#define nre     (IDA_mem->ida_nre)
+#define res     (IDA_mem->ida_res)
+#define rdata   (IDA_mem->ida_rdata)
+#define ewt     (IDA_mem->ida_ewt)
+#define errfp   (IDA_mem->ida_errfp)
+#define iopt    (IDA_mem->ida_iopt)
+#define linit   (IDA_mem->ida_linit)
+#define lsetup  (IDA_mem->ida_lsetup)
+#define lsolve  (IDA_mem->ida_lsolve)
+#define lperf   (IDA_mem->ida_lperf)
+#define lfree   (IDA_mem->ida_lfree)
+#define lmem    (IDA_mem->ida_lmem)
+#define nni     (IDA_mem->ida_nni)
+#define ncfn    (IDA_mem->ida_ncfn)
+#define setupNonNull (IDA_mem->ida_setupNonNull)
+#define vec_tmpl     (IDA_mem->ida_tempv1)
+
+#define sqrtN   (idaspgmr_mem->g_sqrtN)
+#define epslin  (idaspgmr_mem->g_epslin)
+#define ytemp   (idaspgmr_mem->g_ytemp)
+#define yptemp  (idaspgmr_mem->g_yptemp)
+#define xx      (idaspgmr_mem->g_xx)
+#define ycur    (idaspgmr_mem->g_ycur)
+#define ypcur   (idaspgmr_mem->g_ypcur)
+#define rcur    (idaspgmr_mem->g_rcur)
+#define resflag (idaspgmr_mem->g_resflag)
+#define npe     (idaspgmr_mem->g_npe)
+#define nli     (idaspgmr_mem->g_nli)
+#define nps     (idaspgmr_mem->g_nps)
+#define ncfl    (idaspgmr_mem->g_ncfl)
+#define nst0    (idaspgmr_mem->g_nst0)
+#define nni0    (idaspgmr_mem->g_nni0)
+#define nli0    (idaspgmr_mem->g_nli0)
+#define ncfn0   (idaspgmr_mem->g_ncfn0)
+#define ncfl0   (idaspgmr_mem->g_ncfl0)
+#define nwarn   (idaspgmr_mem->g_nwarn)
+#define njtimes (idaspgmr_mem->g_njtimes)
+#define nreSG   (idaspgmr_mem->g_nreSG)
+
+#define spgmr_mem (idaspgmr_mem->g_spgmr_mem)
+#define last_flag (idaspgmr_mem->g_last_flag)
+
+/*
+ * -----------------------------------------------------------------
+ * IDASpgmr
+ * -----------------------------------------------------------------
+ *
+ * This routine initializes the memory record and sets various function
+ * fields specific to the IDASPGMR linear solver module.  
+ *
+ * IDASpgmr first calls the existing lfree routine if this is not NULL.
+ * It then sets the ida_linit, ida_lsetup, ida_lsolve, ida_lperf, and
+ * ida_lfree fields in (*IDA_mem) to be IDASpgmrInit, IDASpgmrSetup,
+ * IDASpgmrSolve, IDASpgmrPerf, and IDASpgmrFree, respectively.
+ * It allocates memory for a structure of type IDASpgmrMemRec and sets
+ * the ida_lmem field in (*IDA_mem) to the address of this structure.
+ * It sets setupNonNull in (*IDA_mem).  It then sets the following
+ * fields in the IDASpgmrMemRec structure:
+ *   g_gstype   = gstype
+ *   g_maxl     = MIN(Neq,IDA_SPGMR_MAXL) if maxl <= 0,  else MIN(Neq,maxl)
+ *   g_maxrs    = 0 if maxrs < 0,  MIN(5,Neq/g_maxl) if maxrs = 0, and
+ *                MIN(maxrs,Neq/g_maxl) if maxrs > 0.
+ *   g_eplifac  = 0.05 if eplifac = 0.0,  else eplifac
+ *   g_dqincfac = 1.0 if dqincfac = 0.0,  else dqincfac
+ *   g_pdata    = NULL
+ *   g_pset     = NULL
+ *   g_psolve   = NULL
+ *   g_jtimes   = NULL
+ *   g_jdata    = NULL
+ * Finally, IDASpgmr allocates memory for ytemp, yptemp, and xx, and
+ * calls SpgmrMalloc to allocate memory for the Spgmr solver.
+ *
+ * The return value of IDASpgmr is:
+ *   IDASPGMR_SUCCESS       = 0  if successful
+ *   IDASPGMR_MEM_FAIL     = -1 if IDA_mem is NULL or a memory allocation failed
+ *   IDASPGMR_ILL_INPUT = -2 if the gstype argument is illegal.
+ *
+ * -----------------------------------------------------------------
+ */
+
+int IDASpgmr(void *ida_mem, int maxl)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+  int flag, maxl1;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  /* Check if N_VDotProd is present */
+  if(vec_tmpl->ops->nvdotprod == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_BAD_NVECTOR);
+    return(IDASPGMR_ILL_INPUT);
+  }
+
+  if (lfree != NULL) flag = lfree((IDAMem) ida_mem);
+
+  /* Set five main function fields in ida_mem */
+  linit  = IDASpgmrInit;
+  lsetup = IDASpgmrSetup;
+  lsolve = IDASpgmrSolve;
+  lperf  = IDASpgmrPerf;
+  lfree  = IDASpgmrFree;
+
+  /* Get memory for IDASpgmrMemRec */
+  idaspgmr_mem = (IDASpgmrMem) malloc(sizeof(IDASpgmrMemRec));
+  if (idaspgmr_mem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_MEM_FAIL);
+    return(IDASPGMR_MEM_FAIL);
+  }
+
+  /* Set SPGMR parameters that were passed in call sequence */
+  maxl1 = (maxl <= 0) ? IDA_SPGMR_MAXL : maxl;
+  idaspgmr_mem->g_maxl     = maxl1;
+
+  /* Set default values for the rest of the Spgmr parameters */
+  idaspgmr_mem->g_gstype   = MODIFIED_GS;
+  idaspgmr_mem->g_maxrs    = IDA_SPGMR_MAXRS;
+  idaspgmr_mem->g_eplifac  = PT05;
+  idaspgmr_mem->g_dqincfac = ONE;
+  idaspgmr_mem->g_pset     = NULL;
+  idaspgmr_mem->g_psolve   = NULL;
+  idaspgmr_mem->g_pdata    = NULL;
+  idaspgmr_mem->g_jtimes   = IDASpgmrDQJtimes;
+  idaspgmr_mem->g_jdata    = ida_mem;
+  idaspgmr_mem->g_last_flag  = IDASPGMR_SUCCESS;
+
+  /* Set setupNonNull to FALSE */
+  setupNonNull = FALSE;
+
+  /* Allocate memory for ytemp, yptemp, and xx */
+  ytemp = N_VClone(vec_tmpl);
+  if (ytemp == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_MEM_FAIL);
+    return(IDASPGMR_MEM_FAIL);
+  }
+  yptemp = N_VClone(vec_tmpl);
+  if (yptemp == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_MEM_FAIL);
+    N_VDestroy(ytemp);
+    return(IDASPGMR_MEM_FAIL);
+  }
+  xx = N_VClone(vec_tmpl);
+  if (xx == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_MEM_FAIL);
+    N_VDestroy(ytemp);
+    N_VDestroy(yptemp);
+    return(IDASPGMR_MEM_FAIL);
+  }
+
+  /* Compute sqrtN from a dot product */
+  N_VConst(ONE, ytemp);
+  sqrtN = RSqrt( N_VDotProd(ytemp, ytemp) );
+
+  /* Call SpgmrMalloc to allocate workspace for Spgmr */
+  spgmr_mem = SpgmrMalloc(maxl1, vec_tmpl);
+  if (spgmr_mem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_MEM_FAIL);
+    N_VDestroy(ytemp);
+    N_VDestroy(yptemp);
+    N_VDestroy(xx);
+    return(IDASPGMR_MEM_FAIL);
+  }
+
+  /* Attach linear solver memory to the integrator memory */
+  lmem = idaspgmr_mem;
+
+  return(IDASPGMR_SUCCESS);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDASpgmrSet* and IDASpgmrGet*
+ * -----------------------------------------------------------------
+ */
+
+int IDASpgmrSetGSType(void *ida_mem, int gstype)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(IDASPGMR_LMEM_NULL);
+  }
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  /* Check for legal gstype */
+  if ((gstype != MODIFIED_GS) && (gstype != CLASSICAL_GS)) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_BAD_GSTYPE);
+    return(IDASPGMR_ILL_INPUT);
+  }
+
+  idaspgmr_mem->g_gstype = gstype;
+
+  return(IDASPGMR_SUCCESS);
+}
+
+int IDASpgmrSetMaxRestarts(void *ida_mem, int maxrs)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(IDASPGMR_LMEM_NULL);
+  }
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  /* Check for legal maxrs */
+  if (maxrs < 0) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_IDAS_NEG_MAXRS);
+    return(IDASPGMR_ILL_INPUT);
+  }
+
+  idaspgmr_mem->g_maxrs = maxrs;
+
+  return(IDASPGMR_SUCCESS);
+}
+
+int IDASpgmrSetEpsLin(void *ida_mem, realtype eplifac)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(IDASPGMR_LMEM_NULL);
+  }
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  /* Check for legal maxrs */
+  if (eplifac < ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_IDAS_NEG_EPLIFAC);
+    return(IDASPGMR_ILL_INPUT);
+  }
+
+  if (eplifac == 0)
+    idaspgmr_mem->g_eplifac = PT05;
+  else
+    idaspgmr_mem->g_eplifac = eplifac;
+
+  return(IDASPGMR_SUCCESS);
+}
+
+int IDASpgmrSetIncrementFactor(void *ida_mem, realtype dqincfac)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(IDASPGMR_LMEM_NULL);
+  }
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  /* Check for legal maxrs */
+  if (dqincfac <= ZERO) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_IDAS_NEG_DQINCFAC);
+    return(IDASPGMR_ILL_INPUT);
+  }
+
+  idaspgmr_mem->g_dqincfac = dqincfac;
+
+  return(IDASPGMR_SUCCESS);
+}
+
+int IDASpgmrSetPreconditioner(void *ida_mem, IDASpgmrPrecSetupFn pset,
+                              IDASpgmrPrecSolveFn psolve, void *prec_data)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(IDASPGMR_LMEM_NULL);
+  }
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  idaspgmr_mem->g_pset = pset;
+  idaspgmr_mem->g_psolve = psolve;
+  if (psolve != NULL) idaspgmr_mem->g_pdata = prec_data;
+
+  return(IDASPGMR_SUCCESS);
+}
+
+int IDASpgmrSetJacTimesVecFn(void *ida_mem, IDASpgmrJacTimesVecFn jtimes
+                             , void *jac_data)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(IDASPGMR_LMEM_NULL);
+  }
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  idaspgmr_mem->g_jtimes = jtimes;
+  if (jtimes != NULL) idaspgmr_mem->g_jdata = jac_data;
+
+  return(IDASPGMR_SUCCESS);
+}
+
+int IDASpgmrGetWorkSpace(void *ida_mem, long int *lenrwSG, long int *leniwSG)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+  int maxl;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(IDASPGMR_LMEM_NULL);
+  }
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  maxl = idaspgmr_mem->g_maxl;
+  *lenrwSG = lrw1*(maxl + 6) + maxl*(maxl + 4) + 1;
+  *leniwSG = liw1*(maxl + 6);
+
+  return(IDASPGMR_SUCCESS);
+}
+
+int IDASpgmrGetNumPrecEvals(void *ida_mem, long int *npevals)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(IDASPGMR_LMEM_NULL);
+  }
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  *npevals = npe;
+
+  return(IDASPGMR_SUCCESS);
+}
+
+int IDASpgmrGetNumPrecSolves(void *ida_mem, long int *npsolves)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(IDASPGMR_LMEM_NULL);
+  }
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  *npsolves = nps;
+
+  return(IDASPGMR_SUCCESS);
+}
+
+int IDASpgmrGetNumLinIters(void *ida_mem, long int *nliters)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(IDASPGMR_LMEM_NULL);
+  }
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  *nliters = nli;
+
+  return(IDASPGMR_SUCCESS);
+}
+
+int IDASpgmrGetNumConvFails(void *ida_mem, long int *nlcfails)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(IDASPGMR_LMEM_NULL);
+  }
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  *nlcfails = ncfl;
+
+  return(IDASPGMR_SUCCESS);
+}
+
+int IDASpgmrGetNumJtimesEvals(void *ida_mem, long int *njvevals)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(IDASPGMR_LMEM_NULL);
+  }
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  *njvevals = njtimes;
+
+  return(IDASPGMR_SUCCESS);
+}
+
+int IDASpgmrGetNumResEvals(void *ida_mem, long int *nrevalsSG)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(IDASPGMR_LMEM_NULL);
+  }
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  *nrevalsSG = nreSG;
+
+  return(IDASPGMR_SUCCESS);
+}
+
+int IDASpgmrGetLastFlag(void *ida_mem, int *flag)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+
+  /* Return immediately if ida_mem is NULL */
+  if (ida_mem == NULL) {
+    fprintf(stderr, MSGS_SETGET_IDAMEM_NULL);
+    return(IDASPGMR_MEM_NULL);
+  }
+  IDA_mem = (IDAMem) ida_mem;
+
+  if (lmem == NULL) {
+    if(errfp!=NULL) fprintf(errfp, MSGS_SETGET_LMEM_NULL);
+    return(IDASPGMR_LMEM_NULL);
+  }
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  *flag = last_flag;
+
+  return(IDASPGMR_SUCCESS);
+}
+
+
+/*
+ * -----------------------------------------------------------------
+ * IDASPGMR interface routines
+ * -----------------------------------------------------------------
+ */
+
+/* Additional readability Replacements */
+
+#define gstype   (idaspgmr_mem->g_gstype)
+#define maxl     (idaspgmr_mem->g_maxl)
+#define maxrs    (idaspgmr_mem->g_maxrs)
+#define eplifac  (idaspgmr_mem->g_eplifac)
+#define dqincfac (idaspgmr_mem->g_dqincfac)
+#define psolve   (idaspgmr_mem->g_psolve)
+#define pset     (idaspgmr_mem->g_pset)
+#define pdata    (idaspgmr_mem->g_pdata)
+#define jtimes   (idaspgmr_mem->g_jtimes)
+#define jdata    (idaspgmr_mem->g_jdata)
+
+static int IDASpgmrInit(IDAMem IDA_mem)
+{
+  IDASpgmrMem idaspgmr_mem;
+
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  /* Initialize counters */
+  npe = nli = nps = ncfl = 0;
+  njtimes = nreSG = 0;
+
+  /* Set setupNonNull to TRUE iff there is preconditioning with setup */
+  setupNonNull = (psolve != NULL) && (pset != NULL);
+
+  /* If jtimes is NULL at this time, set it to DQ */
+  if (jtimes == NULL) {
+    jtimes = IDASpgmrDQJtimes;
+    jdata = IDA_mem;
+  }
+
+  last_flag = IDASPGMR_SUCCESS;
+  return(0);
+}
+
+static int IDASpgmrSetup(IDAMem IDA_mem, 
+                         N_Vector yy_p, N_Vector yp_p, N_Vector rr_p, 
+                         N_Vector tmp1, N_Vector tmp2,
+                         N_Vector tmp3)
+{
+  int retval;
+  IDASpgmrMem idaspgmr_mem;
+
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  /* Call user setup routine pset and update counter npe. */
+  retval = pset(tn, yy_p, yp_p, rr_p, cj, pdata,
+                tmp1, tmp2, tmp3);
+  npe++;
+
+  last_flag = retval;
+  /* Return flag showing success or failure of pset. */
+  if (retval < 0) return(-1);
+  if (retval > 0) return(+1);
+  return(0);
+}
+
+
+/*
+ * The x-scaling and b-scaling arrays are both equal to weight.
+ *  
+ * We set the initial guess, x = 0, then call SpgmrSolve.  
+ * We copy the solution x into b, and update the counters nli, nps, ncfl.
+ * If SpgmrSolve returned nli_inc = 0 (hence x = 0), we take the SPGMR
+ * vtemp vector (= P_inverse F) as the correction vector instead.
+ *  Finally, we set the return value according to the success of SpgmrSolve.
+ */
+
+static int IDASpgmrSolve(IDAMem IDA_mem, N_Vector bb, N_Vector weight,
+                         N_Vector yy_now, N_Vector yp_now, N_Vector rr_now)
+{
+  IDASpgmrMem idaspgmr_mem;
+  int pretype, nli_inc, nps_inc, retval;
+  realtype res_norm;
+
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+
+  /* Set SpgmrSolve convergence test constant epslin, in terms of the
+    Newton convergence test constant epsNewt and safety factors.  The factor 
+    sqrt(Neq) assures that the GMRES convergence test is applied to the
+    WRMS norm of the residual vector, rather than the weighted L2 norm. */
+  epslin = sqrtN*eplifac*epsNewt;
+
+  /* Set vectors ycur, ypcur, and rcur for use by the Atimes and Psolve */
+  ycur = yy_now;
+  ypcur = yp_now;
+  rcur = rr_now;
+
+  /* Set SpgmrSolve inputs pretype and initial guess xx = 0. */  
+  pretype = (psolve == NULL) ? PREC_NONE : PREC_LEFT;
+  N_VConst(ZERO, xx);
+  
+  /* Call SpgmrSolve and copy xx to bb. */
+  retval = SpgmrSolve(spgmr_mem, IDA_mem, xx, bb, pretype, gstype, epslin,
+                      maxrs, IDA_mem, weight, weight, IDASpgmrAtimes,
+                      IDASpgmrPSolve, &res_norm, &nli_inc, &nps_inc);
+  last_flag = retval;
+  if (nli_inc == 0) N_VScale(ONE, SPGMR_VTEMP(spgmr_mem), bb);
+  else N_VScale(ONE, xx, bb);
+  
+  /* Increment counters nli, nps, and return if successful. */
+  nli += nli_inc;
+  nps += nps_inc;
+
+  if (retval == 0) return(0);
+
+  /* If not successful, increment ncfl and return appropriate flag. */
+  ncfl++;
+
+  if (retval > 0)   return(+1);
+  if (retval != -2) return(-1);
+  if (resflag > 0)  return(+1);
+  return(-1);
+
+}
+
+/*
+ * This routine handles performance monitoring specific to the IDASPGMR
+ * linear solver.  When perftask = 0, it saves values of various counters.
+ * When perftask = 1, it examines difference quotients in these counters,
+ * and depending on their values, it prints up to three warning messages.
+ * Messages are printed up to a maximum of 10 times.
+ */
+
+static int IDASpgmrPerf(IDAMem IDA_mem, int perftask)
+{
+  IDASpgmrMem idaspgmr_mem;
+  realtype avdim, rcfn, rcfl;
+  long int nstd, nnid;
+  booleantype lavd, lcfn, lcfl;
+
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  if (perftask == 0) {
+    nst0 = nst;  nni0 = nni;  nli0 = nli;
+    ncfn0 = ncfn;  ncfl0 = ncfl;  
+    nwarn = 0;
+    return(0);
+  }
+
+  nstd = nst - nst0;  nnid = nni - nni0;
+  if (nstd == 0 || nnid == 0) return(0);
+  avdim = (nli - nli0)/( (realtype) nnid);
+  rcfn = (ncfn - ncfn0)/( (realtype) nstd);
+  rcfl = (ncfl - ncfl0)/( (realtype) nnid);
+  lavd = (avdim > ( (realtype) maxl ) );
+  lcfn = (rcfn > PT9);
+  lcfl = (rcfl > PT9);
+  if (!(lavd || lcfn || lcfl)) return(0);
+  nwarn++;
+  if (nwarn > 10) return(1);
+  if (lavd) if(errfp!=NULL) fprintf(errfp, MSGS_AVD_WARN, tn, avdim);
+  if (lcfn) if(errfp!=NULL) fprintf(errfp, MSGS_CFN_WARN, tn, rcfn);
+  if (lcfl) if(errfp!=NULL) fprintf(errfp, MSGS_CFL_WARN, tn, rcfl);
+
+  return(0);
+}
+
+static int IDASpgmrFree(IDAMem IDA_mem)
+{
+  IDASpgmrMem idaspgmr_mem;
+
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+  
+  N_VDestroy(ytemp);
+  N_VDestroy(xx);
+  SpgmrFree(spgmr_mem);
+  free(lmem);
+
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * IDASPGMR private functions
+ * -----------------------------------------------------------------
+ */
+
+
+/*
+ * This routine generates the matrix-vector product z = Jv, where
+ * J is the system Jacobian, by calling either the user provided
+ * routine or the internal DQ routine.
+ */
+
+static int IDASpgmrAtimes(void *ida_mem, N_Vector v, N_Vector z)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+  int jtflag;
+
+  IDA_mem = (IDAMem) ida_mem;
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  jtflag = jtimes(tn, ycur, ypcur, rcur, v, z, cj, jdata, ytemp, yptemp);
+  njtimes++;
+
+  return(jtflag);
+}
+
+/*
+ * This routine interfaces between the generic SpgmrSolve routine and
+ * the user's psolve routine.  It passes to psolve all required state 
+ * information from ida_mem.  Its return value is the same as that
+ * returned by psolve.  Note that the generic SPGMR solver guarantees
+ * that IDASpgmrPSolve will not be called in the case psolve = NULL.
+ */
+
+static int IDASpgmrPSolve(void *ida_mem, N_Vector r, N_Vector z, int lr)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+  int retval;
+
+  IDA_mem = (IDAMem) ida_mem;
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  retval = psolve(tn, ycur, ypcur, rcur, r, z, cj, epslin, pdata, ytemp);
+
+  /* This call is counted in nps within the IDASpgmrSolve routine */
+
+  return(retval);
+
+}
+
+/*
+ * This routine generates the matrix-vector product z = Jv, where
+ * J is the system Jacobian, by using a difference quotient approximation.
+ * The approximation is 
+ *      Jv = [F(t,y1,yp1) - F(t,y,yp)]/sigma,  where
+ *        y1 = y + sigma*v,  yp1 = yp + cj*sigma*v,
+ *        sigma = sqrt(Neq)*dqincfac.
+ * The return value from the call to res is saved in order to set the
+ * return flag from IDASpgmrSolve.
+ */
+
+static int IDASpgmrDQJtimes(realtype tt,
+                            N_Vector yy, N_Vector yp, N_Vector rr,
+                            N_Vector v, N_Vector Jv, 
+                            realtype c_j, void *jac_data, 
+                            N_Vector tmp1, N_Vector tmp2)
+{
+  IDAMem IDA_mem;
+  IDASpgmrMem idaspgmr_mem;
+  N_Vector y_tmp, yp_tmp;
+  realtype sig, siginv;
+  int ires;
+
+  /* jac_data is ida_mem */
+  IDA_mem = (IDAMem) jac_data;
+  idaspgmr_mem = (IDASpgmrMem) lmem;
+
+  sig = sqrtN*dqincfac;
+
+  /* Rename tmp1 and tmp2 for readibility */
+  y_tmp  = tmp1;
+  yp_tmp = tmp2;
+
+  /* Set y_tmp = yy + sig*v, yp_tmp = yp + cj*sig*v. */
+  N_VLinearSum(sig, v, ONE, yy, ytemp);
+  N_VLinearSum(c_j*sig, v, ONE, yp, yptemp);
+
+  /* Call res for Jv = F(t, y_tmp, yp_tmp), and return if it failed. */
+  ires = res(tt, y_tmp, yp_tmp, Jv, rdata); 
+  nreSG++;
+  resflag = ires;
+  if (ires != 0) return(ires);
+
+  /* Set Jv to [Jv - rr]/sig and return. */
+  siginv = ONE/sig;
+  N_VLinearSum(siginv, Jv, -siginv, rr, Jv);
+
+  return(0);
+
+}
diff --git a/Win32/WinCVODE/sundials/ida/source/idaspgmr_impl.h b/Win32/WinCVODE/sundials/ida/source/idaspgmr_impl.h
new file mode 100644
index 0000000..258c937
--- /dev/null
+++ b/Win32/WinCVODE/sundials/ida/source/idaspgmr_impl.h
@@ -0,0 +1,175 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:42:25 $
+ * ----------------------------------------------------------------- 
+ * Programmers: Alan C. Hindmarsh and Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/idas/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file (private version) for the Scaled
+ * Preconditioned GMRES linear solver module, IDASPGMR.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _IDASPGMR_IMPL_H
+#define _IDASPGMR_IMPL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "idaspgmr.h"
+
+#include "spgmr.h"
+#include "iterative.h"
+#include "sundialstypes.h"
+#include "nvector.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Types : IDASpgmrMemRec, IDASpgmrMem                             
+ * -----------------------------------------------------------------
+ */
+
+typedef struct {
+
+  int  g_gstype;       /* type of Gram-Schmidt orthogonalization       */
+  realtype g_sqrtN;    /* sqrt(N)                                      */
+  int  g_maxl;         /* maxl = maximum dimension of the Krylov space */
+  int  g_maxrs;        /* maxrs = max. number of GMRES restarts        */
+  realtype g_eplifac;  /* eplifac = linear convergence factor          */
+  realtype g_dqincfac; /* dqincfac = optional increment factor in Jv   */
+  realtype g_epslin;   /* SpgrmSolve tolerance parameter               */
+
+  int g_resflag;       /* flag from last res call                      */
+  long int g_npe;      /* npe = total number of precond calls          */   
+  long int g_nli;      /* nli = total number of linear iterations      */
+  long int g_nps;      /* nps = total number of psolve calls           */
+  long int g_ncfl;     /* ncfl = total number of convergence failures  */
+  long int g_nreSG;    /* nreSG = total number of calls to res         */    
+  long int g_njtimes;  /* njtimes = total number of calls to jtimes    */
+
+  long int g_nst0;     /* nst0 = saved nst (for performance monitor)   */   
+  long int g_nni0;     /* nni0 = saved nni (for performance monitor)   */   
+  long int g_nli0;     /* nli0 = saved nli (for performance monitor)   */   
+  long int g_ncfn0;    /* ncfn0 = saved ncfn (for performance monitor) */   
+  long int g_ncfl0;    /* ncfl0 = saved ncfl (for performance monitor) */   
+  long int g_nwarn;    /* nwarn = no. of warnings (for perf. monitor)  */   
+
+  N_Vector g_ytemp;    /* temp vector used by IDAAtimesDQ              */ 
+  N_Vector g_yptemp;   /* temp vector used by IDAAtimesDQ              */ 
+  N_Vector g_xx;       /* temp vector used by IDASpgmrSolve            */
+  N_Vector g_ycur;     /* current y vector in Newton iteration         */
+  N_Vector g_ypcur;    /* current yp vector in Newton iteration        */
+  N_Vector g_rcur;     /* rcur = F(tn, ycur, ypcur)                    */
+
+  IDASpgmrPrecSetupFn g_pset;     /* pset = user-supplied routine      */
+                                  /* to compute a preconditioner       */
+
+  IDASpgmrPrecSolveFn g_psolve;   /* psolve = user-supplied routine to */
+                                  /* solve preconditioner linear system*/
+
+  void *g_pdata;                  /* pdata passed to psolve and precond*/
+  SpgmrMem g_spgmr_mem;           /* spgmr_mem is memory used by the   */
+                                  /* generic Spgmr solver              */
+
+  IDASpgmrJacTimesVecFn g_jtimes; /* Jacobian*vector routine           */ 
+  void *g_jdata;                  /* data passed to Jtimes             */
+
+  int g_last_flag;                /* last error return flag            */
+
+} IDASpgmrMemRec, *IDASpgmrMem;
+
+
+/*
+ * -----------------------------------------------------------------
+ * Error and Warning Messages
+ * -----------------------------------------------------------------
+ */
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+
+#define MSGS_TIME "at t = %Lg, "
+
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+
+#define MSGS_TIME "at t = %lg, "
+
+#else
+
+#define MSGS_TIME "at t = %g, "
+
+#endif
+
+
+/* Error Messages */
+
+#define MSGS_IDAMEM_NULL        "IDASpgmr-- integrator memory is NULL.\n\n"
+
+#define MSGS_MEM_FAIL           "IDASpgmr-- a memory request failed.\n\n"
+
+#define MSGS_BAD_NVECTOR        "IDASpgmr-- a required vector operation is not implemented.\n\n"
+
+#define MSGS_SETGET_IDAMEM_NULL "IDASpgmrSet*/IDASpgmrGet*-- integrator memory is NULL. \n\n"
+
+#define MSGS_SETGET_LMEM_NULL   "IDASpgmrSet*/IDASpgmrGet*-- IDASPGMR memory is NULL. \n\n"
+
+#define MSGS_BAD_GSTYPE         "IDASpgmrSetGSType-- gstype has an illegal value.\n"
+
+#define MSGS_IDAS_NEG_MAXRS     "IDASpgmrSetMaxRestarts-- maxrs < 0 illegal. \n\n"
+
+#define MSGS_IDAS_NEG_EPLIFAC   "IDASpgmrSetEpsLin-- eplifac < 0.0 illegal. \n\n"
+
+#define MSGS_IDAS_NEG_DQINCFAC  "IDASpgmrSetIncrementFactor-- dqincfac < 0.0 illegal. \n\n"
+
+/* Warning Messages */
+
+#define MSGS_WARN1      "Warning. Poor iterative algorithm performance\n"
+#define MSGS_WARN       "IDASpgmrPerf-- " MSGS_TIME MSGS_WARN1 
+
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+
+#define MSGS_AVD_WARN1  "Average number of linear iterations is %Le.\n\n"
+#define MSGS_AVD_WARN   MSGS_WARN MSGS_AVD_WARN1
+
+#define MSGS_CFN_WARN1  "Nonlinear convergence failure rate is %Le.\n\n"
+#define MSGS_CFN_WARN   MSGS_WARN MSGS_CFN_WARN1
+
+#define MSGS_CFL_WARN1  "Linear convergence failure rate is %Le.\n\n"
+#define MSGS_CFL_WARN   MSGS_WARN MSGS_CFL_WARN1
+
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+
+#define MSGS_AVD_WARN1  "Average number of linear iterations is %le.\n\n"
+#define MSGS_AVD_WARN   MSGS_WARN MSGS_AVD_WARN1
+
+#define MSGS_CFN_WARN1  "Nonlinear convergence failure rate is %le.\n\n"
+#define MSGS_CFN_WARN   MSGS_WARN MSGS_CFN_WARN1
+
+#define MSGS_CFL_WARN1  "Linear convergence failure rate is %le.\n\n"
+#define MSGS_CFL_WARN   MSGS_WARN MSGS_CFL_WARN1
+
+#else
+
+#define MSGS_AVD_WARN1  "Average number of linear iterations is %e.\n\n"
+#define MSGS_AVD_WARN   MSGS_WARN MSGS_AVD_WARN1
+
+#define MSGS_CFN_WARN1  "Nonlinear convergence failure rate is %e.\n\n"
+#define MSGS_CFN_WARN   MSGS_WARN MSGS_CFN_WARN1
+
+#define MSGS_CFL_WARN1  "Linear convergence failure rate is %e.\n\n"
+#define MSGS_CFL_WARN   MSGS_WARN MSGS_CFL_WARN1
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/libtool b/Win32/WinCVODE/sundials/libtool
new file mode 100755
index 0000000..c3a1534
--- /dev/null
+++ b/Win32/WinCVODE/sundials/libtool
@@ -0,0 +1,5556 @@
+#! /bin/bash
+
+# libtool - Provide generalized library-building support services.
+# Generated automatically by  (GNU  3.0.5.001)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# 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.
+
+# A sed that does not truncate output.
+SED="/usr/bin/sed"
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="/usr/bin/sed -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host Andrew-PC:
+
+# Shell to use when invoking shell scripts.
+SHELL="/bin/bash"
+
+# Whether or not to build shared libraries.
+build_libtool_libs=no
+
+# Whether or not to build static libraries.
+build_old_libs=yes
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=yes
+
+# Whether or not to optimize for fast installation.
+fast_install=needless
+
+# The host system.
+host_alias=
+host=i686-pc-cygwin
+
+# An echo program that does not interpret backslashes.
+echo="echo"
+
+# The archiver.
+AR="ar"
+AR_FLAGS="cru"
+
+# The default C compiler.
+CC="/usr/bin/cc"
+
+# Is the compiler the GNU C compiler?
+with_gcc=yes
+
+# The linker used to build libraries.
+LD="/usr/i686-pc-cygwin/bin/ld.exe"
+
+# Whether we need hard or soft links.
+LN_S="ln -s"
+
+# A BSD-compatible nm program.
+NM="/usr/bin/nm -B"
+
+# A symbol stripping program
+STRIP=strip
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=file
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="dlltool"
+
+# Used on cygwin: object dumper.
+OBJDUMP="objdump"
+
+# Used on cygwin: assembler.
+AS="as"
+
+# The name of the directory that contains temporary libtool files.
+objdir=.libs
+
+# How to create reloadable object files.
+reload_flag=" -r"
+reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
+
+# How to pass a linker flag through the compiler.
+wl="-Wl,"
+
+# Object file suffix (normally "o").
+objext="o"
+
+# Old archive suffix (normally "a").
+libext="a"
+
+# Executable file suffix (normally "").
+exeext=""
+
+# Additional compiler flags for building library objects.
+pic_flag=" -DDLL_EXPORT"
+pic_mode=default
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o="yes"
+
+# Can we write directly to a .lo ?
+compiler_o_lo="yes"
+
+# Must we lock files when doing compilation ?
+need_locks="no"
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=no
+
+# Do we need a version for libraries?
+need_version=no
+
+# Whether dlopen is supported.
+dlopen_support=unknown
+
+# Whether dlopen of programs is supported.
+dlopen_self=unknown
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=unknown
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag="-static"
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=" -fno-builtin"
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec="\${wl}--export-dynamic"
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=""
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=""
+
+# Library versioning type.
+version_type=windows
+
+# Format of library name prefix.
+libname_spec="lib\$name"
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec="\$libname.dll.a"
+
+# The coded name of the library, if different from the real name.
+soname_spec="\`echo \${libname} | sed -e s/^lib/cyg/\`\`echo \${release} | sed -e s/[.]/-/g\`\${versuffix}.dll"
+
+# Commands used to build and install an old-style archive.
+RANLIB="ranlib"
+old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib"
+old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib"
+old_postuninstall_cmds=""
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=""
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds="\$DLLTOOL --as=\$AS --dllname \$soname --def \$output_objdir/\$soname-def --output-lib \$output_objdir/\$newlib"
+
+# Commands used to build and install a shared archive.
+archive_cmds=""
+archive_expsym_cmds="if test \\\"x\\\`sed 1q \$export_symbols\\\`\\\" = xEXPORTS; then
+	cp \$export_symbols \$output_objdir/\$soname-def;
+      else
+	echo EXPORTS > \$output_objdir/\$soname-def;
+	_lt_hint=1;
+	cat \$export_symbols | while read symbol; do
+	 set dummy \\\$symbol;
+	 case \\\$# in
+	   2) echo \\\"   \\\$2 @ \\\$_lt_hint ; \\\" >> \$output_objdir/\$soname-def;;
+	   4) echo \\\"   \\\$2 \\\$3 \\\$4 ; \\\" >> \$output_objdir/\$soname-def; _lt_hint=\\\`expr \\\$_lt_hint - 1\\\`;;
+	   *) echo \\\"     \\\$2 @ \\\$_lt_hint \\\$3 ; \\\" >> \$output_objdir/\$soname-def;;
+	 esac;
+	 _lt_hint=\\\`expr 1 + \\\$_lt_hint\\\`;
+	done;
+      fi~
+      
+      \$CC -Wl,--base-file,\$output_objdir/\$soname-base  -Wl,-e,__cygwin_dll_entry at 12 -o \$output_objdir/\$soname \$libobjs \$deplibs \$compiler_flags~
+      \$DLLTOOL --as=\$AS --dllname \$soname --exclude-symbols DllMain at 12,_cygwin_dll_entry at 12,_cygwin_noncygwin_dll_entry at 12,DllMainCRTStartup at 12,DllEntryPoint at 12 --def \$output_objdir/\$soname-def --base-file \$output_objdir/\$soname-base --output-exp \$output_objdir/\$soname-exp~
+      \$CC -Wl,--base-file,\$output_objdir/\$soname-base \$output_objdir/\$soname-exp  -Wl,-e,__cygwin_dll_entry at 12 -o \$output_objdir/\$soname \$libobjs \$deplibs \$compiler_flags~
+      \$DLLTOOL --as=\$AS --dllname \$soname --exclude-symbols DllMain at 12,_cygwin_dll_entry at 12,_cygwin_noncygwin_dll_entry at 12,DllMainCRTStartup at 12,DllEntryPoint at 12 --def \$output_objdir/\$soname-def --base-file \$output_objdir/\$soname-base --output-exp \$output_objdir/\$soname-exp --output-lib \$output_objdir/\$libname.dll.a~
+      \$CC \$output_objdir/\$soname-exp  -Wl,-e,__cygwin_dll_entry at 12 -o \$output_objdir/\$soname \$libobjs \$deplibs \$compiler_flags"
+postinstall_cmds="dlpath=\\\`bash 2>&1 -c '. \$dir/\${file}i;echo \\\$dlname'\\\`~
+      dldir=\$destdir/\\\`dirname \\\$dlpath\\\`~
+      test -d \\\$dldir || mkdir -p \\\$dldir~
+      \$install_prog .libs/\$dlname \\\$dldir/\$dlname"
+postuninstall_cmds="dldll=\\\`bash 2>&1 -c '. \$file; echo \\\$dlname'\\\`~
+      dlpath=\$dir/\\\$dldll~
+       \$rm \\\$dlpath"
+
+# Commands to strip libraries.
+old_striplib="strip --strip-debug"
+striplib="strip --strip-unneeded"
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method="file_magic file format pei*-i386(.*architecture: i386)?"
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd="\$OBJDUMP -f"
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag="unsupported"
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=""
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=""
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=""
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe="sed -n -e 's/^.*[ 	]\\([ABCDGISTW][ABCDGISTW]*\\)[ 	][ 	]*\\(_\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'"
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern char \\1;/p'"
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (lt_ptr) \\&\\2},/p'"
+
+# This is the shared library runtime path variable.
+runpath_var=LD_RUN_PATH
+
+# This is the shared library path variable.
+shlibpath_var=PATH
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=unknown
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=immediate
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=no
+
+# Flag to hardcode $libdir into a binary during linking.
+# This must work even if $libdir does not exist.
+hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=""
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=no
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=no
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=unsupported
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="PATH PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=unknown
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+
+# Fix the shell variable $srcfile for the compiler.
+fix_srcfile_path=""
+
+# Set to yes if exported symbols are required.
+always_export_symbols=yes
+
+# The commands to list exported symbols.
+export_symbols_cmds="
+      \$DLLTOOL --export-all --exclude-symbols DllMain at 12,_cygwin_dll_entry at 12,_cygwin_noncygwin_dll_entry at 12,DllMainCRTStartup at 12,DllEntryPoint at 12 --output-def \$output_objdir/\$soname-def \$libobjs \$convenience~
+      sed -e \\\"1,/EXPORTS/d\\\" -e \\\"s/ @ [0-9]*//\\\" -e \\\"s/ *;.*\$//\\\" < \$output_objdir/\$soname-def > \$export_symbols"
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds="test -f \$output_objdir/impgen.c || \\\\
+      sed -e \\\"/^# \\\\/\\\\* impgen\\\\.c starts here \\\\*\\\\//,/^# \\\\/\\\\* impgen.c ends here \\\\*\\\\// { s/^# //;s/^# *\$//; p; }\\\" -e d < \$0 > \$output_objdir/impgen.c~
+      test -f \$output_objdir/impgen.exe || (cd \$output_objdir && \\\\
+      if test \\\"x\$HOST_CC\\\" != \\\"x\\\" ; then \$HOST_CC -o impgen impgen.c ; \\\\
+      else \$CC -o impgen impgen.c ; fi)~
+      \$output_objdir/impgen \$dir/\$soroot > \$output_objdir/\$soname-def"
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+
+# Symbols that must always be exported.
+include_expsyms=""
+
+# ### END LIBTOOL CONFIG
+
+      # This is a source program that is used to create dlls on Windows
+      # Don't remove nor modify the starting and closing comments
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+	# This is a source program that is used to create import libraries
+	# on Windows for dlls which lack them. Don't remove nor modify the
+	# starting and closing comments
+# /* impgen.c starts here */
+# /*   Copyright (C) 1999-2000 Free Software Foundation, Inc.
+#
+#  This file is part of GNU libtool.
+#
+#  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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#  */
+#
+# #include <stdio.h>		/* for printf() */
+# #include <unistd.h>		/* for open(), lseek(), read() */
+# #include <fcntl.h>		/* for O_RDONLY, O_BINARY */
+# #include <string.h>		/* for strdup() */
+#
+# /* O_BINARY isn't required (or even defined sometimes) under Unix */
+# #ifndef O_BINARY
+# #define O_BINARY 0
+# #endif
+#
+# static unsigned int
+# pe_get16 (fd, offset)
+#      int fd;
+#      int offset;
+# {
+#   unsigned char b[2];
+#   lseek (fd, offset, SEEK_SET);
+#   read (fd, b, 2);
+#   return b[0] + (b[1]<<8);
+# }
+#
+# static unsigned int
+# pe_get32 (fd, offset)
+#     int fd;
+#     int offset;
+# {
+#   unsigned char b[4];
+#   lseek (fd, offset, SEEK_SET);
+#   read (fd, b, 4);
+#   return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+# }
+#
+# static unsigned int
+# pe_as32 (ptr)
+#      void *ptr;
+# {
+#   unsigned char *b = ptr;
+#   return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+# }
+#
+# int
+# main (argc, argv)
+#     int argc;
+#     char *argv[];
+# {
+#     int dll;
+#     unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
+#     unsigned long export_rva, export_size, nsections, secptr, expptr;
+#     unsigned long name_rvas, nexp;
+#     unsigned char *expdata, *erva;
+#     char *filename, *dll_name;
+#
+#     filename = argv[1];
+#
+#     dll = open(filename, O_RDONLY|O_BINARY);
+#     if (dll < 1)
+# 	return 1;
+#
+#     dll_name = filename;
+#
+#     for (i=0; filename[i]; i++)
+# 	if (filename[i] == '/' || filename[i] == '\\'  || filename[i] == ':')
+# 	    dll_name = filename + i +1;
+#
+#     pe_header_offset = pe_get32 (dll, 0x3c);
+#     opthdr_ofs = pe_header_offset + 4 + 20;
+#     num_entries = pe_get32 (dll, opthdr_ofs + 92);
+#
+#     if (num_entries < 1) /* no exports */
+# 	return 1;
+#
+#     export_rva = pe_get32 (dll, opthdr_ofs + 96);
+#     export_size = pe_get32 (dll, opthdr_ofs + 100);
+#     nsections = pe_get16 (dll, pe_header_offset + 4 +2);
+#     secptr = (pe_header_offset + 4 + 20 +
+# 	      pe_get16 (dll, pe_header_offset + 4 + 16));
+#
+#     expptr = 0;
+#     for (i = 0; i < nsections; i++)
+#     {
+# 	char sname[8];
+# 	unsigned long secptr1 = secptr + 40 * i;
+# 	unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
+# 	unsigned long vsize = pe_get32 (dll, secptr1 + 16);
+# 	unsigned long fptr = pe_get32 (dll, secptr1 + 20);
+# 	lseek(dll, secptr1, SEEK_SET);
+# 	read(dll, sname, 8);
+# 	if (vaddr <= export_rva && vaddr+vsize > export_rva)
+# 	{
+# 	    expptr = fptr + (export_rva - vaddr);
+# 	    if (export_rva + export_size > vaddr + vsize)
+# 		export_size = vsize - (export_rva - vaddr);
+# 	    break;
+# 	}
+#     }
+#
+#     expdata = (unsigned char*)malloc(export_size);
+#     lseek (dll, expptr, SEEK_SET);
+#     read (dll, expdata, export_size);
+#     erva = expdata - export_rva;
+#
+#     nexp = pe_as32 (expdata+24);
+#     name_rvas = pe_as32 (expdata+32);
+#
+#     printf ("EXPORTS\n");
+#     for (i = 0; i<nexp; i++)
+#     {
+# 	unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
+# 	printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
+#     }
+#
+#     return 0;
+# }
+# /* impgen.c ends here */
+
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# 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.
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell, and then maybe $echo will work.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The name of this program.
+progname=`$echo "$0" | ${SED} 's%^.*/%%'`
+modename="$progname"
+
+# Constants.
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.4.3
+TIMESTAMP=" (1.922.2.110 2002/10/23 01:39:54)"
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII                                                         
+case `echo A|od -x` in                                                         
+ *[Cc]1*) # EBCDIC based system                                                
+  SP2NL="tr '\100' '\n'"                                                       
+  NL2SP="tr '\r\n' '\100\100'"                                                 
+  ;;                                                                           
+ *) # Assume ASCII based system                                                
+  SP2NL="tr '\040' '\012'"                                                     
+  NL2SP="tr '\015\012' '\040\040'"                                             
+  ;;                                                                           
+esac                                                                           
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+: ${IFS=" 	"}
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  echo "$modename: not configured to build any kind of library" 1>&2
+  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit 1
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+# Parse our command line options once, thoroughly.
+while test $# -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    exit 0
+    ;;
+
+  --config)
+    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
+    exit 0
+    ;;
+
+  --debug)
+    echo "$progname: enabling shell trace mode"
+    set -x
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      echo "enable static libraries"
+    else
+      echo "disable static libraries"
+    fi
+    exit 0
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --preserve-dup-deps) duplicate_deps="yes" ;;
+
+  --quiet | --silent)
+    show=:
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+fi
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    case $nonopt in
+    *cc | *++ | gcc* | *-gcc* | xlc*)
+      mode=link
+      for arg
+      do
+	case $arg in
+	-c)
+	   mode=compile
+	   break
+	   ;;
+	esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+	if test -n "$nonopt"; then
+	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+	else
+	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+	fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    prev=
+    lastarg=
+    srcfile="$nonopt"
+    suppress_output=
+
+    user_target=no
+    for arg
+    do
+      case $prev in
+      "") ;;
+      xcompiler)
+	# Aesthetically quote the previous argument.
+	prev=
+	lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+
+	case $arg in
+	# Double-quote args containing other shell metacharacters.
+	# Many Bourne shells cannot handle close brackets correctly
+	# in scan sets, so we specify it separately.
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+
+	# Add the previous argument to base_compile.
+	if test -z "$base_compile"; then
+	  base_compile="$lastarg"
+	else
+	  base_compile="$base_compile $lastarg"
+	fi
+	continue
+	;;
+      esac
+
+      # Accept any command-line options.
+      case $arg in
+      -o)
+	if test "$user_target" != "no"; then
+	  $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+	  exit 1
+	fi
+	user_target=next
+	;;
+
+      -static)
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+	lastarg=
+	save_ifs="$IFS"; IFS=','
+	for arg in $args; do
+	  IFS="$save_ifs"
+
+	  # Double-quote args containing other shell metacharacters.
+	  # Many Bourne shells cannot handle close brackets correctly
+	  # in scan sets, so we specify it separately.
+	  case $arg in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    arg="\"$arg\""
+	    ;;
+	  esac
+	  lastarg="$lastarg $arg"
+	done
+	IFS="$save_ifs"
+	lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+	# Add the arguments to base_compile.
+	if test -z "$base_compile"; then
+	  base_compile="$lastarg"
+	else
+	  base_compile="$base_compile $lastarg"
+	fi
+	continue
+	;;
+      esac
+
+      case $user_target in
+      next)
+	# The next one is the -o target name
+	user_target=yes
+	continue
+	;;
+      yes)
+	# We got the output file
+	user_target=set
+	libobj="$arg"
+	continue
+	;;
+      esac
+
+      # Accept the current argument as the source file.
+      lastarg="$srcfile"
+      srcfile="$arg"
+
+      # Aesthetically quote the previous argument.
+
+      # Backslashify any backslashes, double quotes, and dollar signs.
+      # These are the only characters that are still specially
+      # interpreted inside of double-quoted scrings.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      case $lastarg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	lastarg="\"$lastarg\""
+	;;
+      esac
+
+      # Add the previous argument to base_compile.
+      if test -z "$base_compile"; then
+	base_compile="$lastarg"
+      else
+	base_compile="$base_compile $lastarg"
+      fi
+    done
+
+    case $user_target in
+    set)
+      ;;
+    no)
+      # Get the name of the library object.
+      libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    *)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit 1
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSfmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit 1
+      ;;
+    esac
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $libobj"
+    else
+      removelist="$libobj"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit 1" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit 1" 1 2 15
+    else
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$0" "$lockfile" 2>/dev/null; do
+	$show "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit 1
+      fi
+      echo $srcfile > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	# All platforms use -DPIC, to notify preprocessed assembler code.
+	command="$base_compile $srcfile $pic_flag -DPIC"
+      else
+	# Don't build PIC code
+	command="$base_compile $srcfile"
+      fi
+      if test "$build_old_libs" = yes; then
+	lo_libobj="$libobj"
+	dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
+	if test "X$dir" = "X$libobj"; then
+	  dir="$objdir"
+	else
+	  dir="$dir/$objdir"
+	fi
+	libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
+
+	if test -d "$dir"; then
+	  $show "$rm $libobj"
+	  $run $rm $libobj
+	else
+	  $show "$mkdir $dir"
+	  $run $mkdir $dir
+	  status=$?
+	  if test $status -ne 0 && test ! -d $dir; then
+	    exit $status
+	  fi
+	fi
+      fi
+      if test "$compiler_o_lo" = yes; then
+	output_obj="$libobj"
+	command="$command -o $output_obj"
+      elif test "$compiler_c_o" = yes; then
+	output_obj="$obj"
+	command="$command -o $output_obj"
+      fi
+
+      $run $rm "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	test -n "$output_obj" && $run $rm $removelist
+	exit 1
+      fi
+
+      if test "$need_locks" = warn &&
+	 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
+	echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit 1
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test x"$output_obj" != x"$libobj"; then
+	$show "$mv $output_obj $libobj"
+	if $run $mv $output_obj $libobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # If we have no pic_flag, then copy the object into place and finish.
+      if (test -z "$pic_flag" || test "$pic_mode" != default) &&
+	 test "$build_old_libs" = yes; then
+	# Rename the .lo from within objdir to obj
+	if test -f $obj; then
+	  $show $rm $obj
+	  $run $rm $obj
+	fi
+
+	$show "$mv $libobj $obj"
+	if $run $mv $libobj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+
+	xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+	if test "X$xdir" = "X$obj"; then
+	  xdir="."
+	else
+	  xdir="$xdir"
+	fi
+	baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"`
+	libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
+	# Now arrange that obj and lo_libobj become the same file
+	$show "(cd $xdir && $LN_S $baseobj $libobj)"
+	if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
+	  # Unlock the critical section if it was locked
+	  if test "$need_locks" != no; then
+	    $run $rm "$lockfile"
+	  fi
+	  exit 0
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Allow error messages only from the first compilation.
+      suppress_output=' >/dev/null 2>&1'
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $srcfile"
+      else
+	# All platforms use -DPIC, to notify preprocessed assembler code.
+	command="$base_compile $srcfile $pic_flag -DPIC"
+      fi
+      if test "$compiler_c_o" = yes; then
+	command="$command -o $obj"
+	output_obj="$obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	$run $rm $removelist
+	exit 1
+      fi
+
+      if test "$need_locks" = warn &&
+	 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
+	echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit 1
+      fi
+
+      # Just move the object if needed
+      if test x"$output_obj" != x"$obj"; then
+	$show "$mv $output_obj $obj"
+	if $run $mv $output_obj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Create an invalid libtool object if no PIC, so that we do not
+      # accidentally link it into a program.
+      if test "$build_libtool_libs" != yes; then
+	$show "echo timestamp > $libobj"
+	$run eval "echo timestamp > \$libobj" || exit $?
+      else
+	# Move the .lo from within objdir
+	$show "$mv $libobj $lo_libobj"
+	if $run $mv $libobj $lo_libobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+    fi
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit 0
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invokation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static)
+	if test "X$arg" = "X-all-static"; then
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	else
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	fi
+	build_libtool_libs=no
+	build_old_libs=yes
+	prefer_static_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test $# -gt 0; do
+      arg="$1"
+      shift
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+	;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  compile_command="$compile_command @OUTPUT@"
+	  finalize_command="$finalize_command @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    compile_command="$compile_command @SYMFILE@"
+	    finalize_command="$finalize_command @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      dlfiles="$dlfiles $arg"
+	    else
+	      dlprefiles="$dlprefiles $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  if test ! -f "$arg"; then
+	    $echo "$modename: symbol file \`$arg' does not exist"
+	    exit 1
+	  fi
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    $echo "$modename: only absolute run-paths are allowed" 1>&2
+	    exit 1
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) rpath="$rpath $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) xrpath="$xrpath $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	xcompiler)
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
+	  prev=
+	  compile_command="$compile_command $wl$qarg"
+	  finalize_command="$finalize_command $wl$qarg"
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n $prev
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+	continue
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  $echo "$modename: more than one -exported-symbols argument is not allowed"
+	  exit 1
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | no/*-*-nonstopux*)
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  if test -z "$absdir"; then
+	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+	    exit 1
+	  fi
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "*) ;;
+	*)
+	  deplibs="$deplibs -L$dir"
+	  lib_search_path="$lib_search_path $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-pw32* | *-*-beos*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-mingw* | *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  esac
+	 elif test "X$arg" = "X-lc_r"; then
+	  case $host in
+	 *-*-openbsd* | *-*-freebsd*)
+	    # Do not include libc_r directly, use -pthread flag.
+	    continue
+	    ;;
+	  esac
+	fi
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # in order for the loader to find any dlls it needs.
+	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  $echo "$modename: only absolute run-paths are allowed" 1>&2
+	  exit 1
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) xrpath="$xrpath $dir" ;;
+	esac
+	continue
+	;;
+
+      -static)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Wl,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $wl$flag"
+	  linker_flags="$linker_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+
+      *.lo | *.$objext)
+	# A library or standard object.
+	if test "$prev" = dlfiles; then
+	  # This file was specified with -dlopen.
+	  if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+	    dlfiles="$dlfiles $arg"
+	    prev=
+	    continue
+	  else
+	    # If libtool objects are unsupported, then we need to preload.
+	    prev=dlprefiles
+	  fi
+	fi
+
+	if test "$prev" = dlprefiles; then
+	  # Preload the old-style object.
+	  dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
+	  prev=
+	else
+	  case $arg in
+	  *.lo) libobjs="$libobjs $arg" ;;
+	  *) objs="$objs $arg" ;;
+	  esac
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	deplibs="$deplibs $arg"
+	old_deplibs="$old_deplibs $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  dlfiles="$dlfiles $arg"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  dlprefiles="$dlprefiles $arg"
+	  prev=
+	else
+	  deplibs="$deplibs $arg"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d $output_objdir; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      status=$?
+      if test $status -ne 0 && test ! -d $output_objdir; then
+	exit $status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if test "X$duplicate_deps" = "Xyes" ; then
+	case "$libs " in
+	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	esac
+      fi
+      libs="$libs $deplib"
+    done
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+	passes="conv link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+	    exit 1
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+    for pass in $passes; do
+      if test $linkmode = prog; then
+	# Determine which files to process
+	case $pass in
+	dlopen)
+	  libs="$dlfiles"
+	  save_deplibs="$deplibs" # Collect dlpreopened libraries
+	  deplibs=
+	  ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	esac
+      fi
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-l*)
+	  if test $linkmode = oldlib && test $linkmode = obj; then
+	    $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
+	    continue
+	  fi
+	  if test $pass = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+	    # Search the libtool library
+	    lib="$searchdir/lib${name}.la"
+	    if test -f "$lib"; then
+	      found=yes
+	      break
+	    fi
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  fi
+	  ;; # -l
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test $pass = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  prog)
+	    if test $pass = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test $pass = scan; then
+	      deplibs="$deplib $deplibs"
+	      newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    ;;
+	  *)
+	    $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test $pass = link; then
+	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) xrpath="$xrpath $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la) lib="$deplib" ;;
+	*.$libext)
+	  if test $pass = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    if test "$deplibs_check_method" != pass_all; then
+	      echo
+	      echo "*** Warning: Trying to link with static lib archive $deplib."
+	      echo "*** I have the capability to make that library automatically link in when"
+	      echo "*** you link to this library.  But I can only do this if you have a"
+	      echo "*** shared version of the library, which you do not appear to have"
+	      echo "*** because the file extensions .$libext of this argument makes me believe"
+	      echo "*** that it is just a static archive that I should not used here."
+	    else
+	      echo
+	      echo "*** Warning: Linking the shared library $output against the"
+	      echo "*** static library $deplib is not portable!"
+	      deplibs="$deplib $deplibs"
+	    fi
+	    continue
+	    ;;
+	  prog)
+	    if test $pass != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	    # If there is no dlopen support or we're linking statically,
+	    # we need to preload.
+	    newdlprefiles="$newdlprefiles $deplib"
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    newdlfiles="$newdlfiles $deplib"
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+	if test $found = yes || test -f "$lib"; then :
+	else
+	  $echo "$modename: cannot find the library \`$lib'" 1>&2
+	  exit 1
+	fi
+
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  exit 1
+	fi
+
+	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$ladir" = "X$lib" && ladir="."
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variable installed.
+	installed=yes
+
+	# Read the .la file
+	case $lib in
+	*/* | *\\*) . $lib ;;
+	*) . ./$lib ;;
+	esac
+
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test $linkmode = oldlib && test $linkmode = obj; }; then
+	   # Add dl[pre]opened files of deplib
+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	fi
+
+	if test $pass = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	      exit 1
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    convenience="$convenience $ladir/$objdir/$old_library"
+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+              if test "X$duplicate_deps" = "Xyes" ; then
+	        case "$tmp_libs " in
+	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	        esac
+              fi
+	      tmp_libs="$tmp_libs $deplib"
+	    done
+	  elif test $linkmode != prog && test $linkmode != lib; then
+	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
+	    exit 1
+	  fi
+	  continue
+	fi # $pass = conv
+
+	# Get the name of the library we link against.
+	linklib=
+	for l in $old_library $library_names; do
+	  linklib="$l"
+	done
+	if test -z "$linklib"; then
+	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	  exit 1
+	fi
+
+	# This library was specified with -dlopen.
+	if test $pass = dlopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+	    exit 1
+	  fi
+	  if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.
+	    dlprefiles="$dlprefiles $lib"
+	  else
+	    newdlfiles="$newdlfiles $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$libdir"
+	    absdir="$libdir"
+	  fi
+	else
+	  dir="$ladir/$objdir"
+	  absdir="$abs_ladir/$objdir"
+	  # Remove this search path later
+	  notinst_path="$notinst_path $abs_ladir"
+	fi # $installed = yes
+	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+	# This library was specified with -dlpreopen.
+	if test $pass = dlpreopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+	    exit 1
+	  fi
+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
+	  # are required to link).
+	  if test -n "$old_library"; then
+	    newdlprefiles="$newdlprefiles $dir/$old_library"
+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
+	  elif test -n "$dlname"; then
+	    newdlprefiles="$newdlprefiles $dir/$dlname"
+	  else
+	    newdlprefiles="$newdlprefiles $dir/$linklib"
+	  fi
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test $linkmode = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs"
+	  fi
+	  continue
+	fi
+
+	if test $linkmode = prog && test $pass != link; then
+	  newlib_search_path="$newlib_search_path $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test $linkalldeplibs = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	link_static=no # Whether the deplib will be linked statically
+	if test -n "$library_names" &&
+	   { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	  # Link against this shared library
+
+	  if test "$linkmode,$pass" = "prog,link" ||
+	   { test $linkmode = lib && test $hardcode_into_libs = yes; }; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	    if test $linkmode = prog; then
+	      # We need to hardcode the library path
+	      if test -n "$shlibpath_var"; then
+		# Make sure the rpath contains only unique directories.
+		case "$temp_rpath " in
+		*" $dir "*) ;;
+		*" $absdir "*) ;;
+		*) temp_rpath="$temp_rpath $dir" ;;
+		esac
+	      fi
+	    fi
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+
+	  if test "$installed" = no; then
+	    notinst_deplibs="$notinst_deplibs $lib"
+	    need_relink=yes
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    realname="$2"
+	    shift; shift
+	    libname=`eval \\$echo \"$libname_spec\"`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin*)
+		major=`expr $current - $age`
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    soname=`echo $soroot | ${SED} -e 's/^.*\///'`
+	    newlib="libimp-`echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      $show "extracting exported symbol list from \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      eval cmds=\"$extract_expsyms_cmds\"
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      $show "generating import library for \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      eval cmds=\"$old_archive_from_expsyms_cmds\"
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n $old_archive_from_expsyms_cmds
+
+	  if test $linkmode = prog || test "$mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      $echo "$modename: configuration error: unsupported hardcode properties"
+	      exit 1
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test $linkmode = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes && \
+		 test "$hardcode_minus_L" != yes && \
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test $linkmode = prog || test "$mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    fi
+
+	    if test $linkmode = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test $linkmode = prog; then
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+
+	  # Try to link the static library
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    echo
+	    echo "*** Warning: This system can not link to static lib archive $lib."
+	    echo "*** I have the capability to make that library automatically link in when"
+	    echo "*** you link to this library.  But I can only do this if you have a"
+	    echo "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      echo "*** But as you try to build a module library, libtool will still create "
+	      echo "*** a static module, that should work as long as the dlopening application"
+	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		echo
+		echo "*** However, this would only work if libtool was able to extract symbol"
+		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		echo "*** not find such a program.  So, this module is probably useless."
+		echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    convenience="$convenience $dir/$old_library"
+	    old_convenience="$old_convenience $dir/$old_library"
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test $linkmode = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
+	       test $link_static = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) xrpath="$xrpath $temp_xrpath";;
+		   esac;;
+	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  newlib_search_path="$newlib_search_path $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done
+
+	  if test $link_all_deplibs != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+		test "X$dir" = "X$deplib" && dir="."
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if grep "^installed=no" $deplib > /dev/null; then
+		  path="-L$absdir/$objdir"
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  if test -z "$libdir"; then
+		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		    exit 1
+		  fi
+		  if test "$absdir" != "$libdir"; then
+		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+		  fi
+		  path="-L$absdir"
+		fi
+		;;
+	      *) continue ;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$deplibs $path" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      if test $pass = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test $pass != dlopen; then
+	test $pass != scan && dependency_libs="$newdependency_libs"
+	if test $pass != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) lib_search_path="$lib_search_path $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    *)
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      esac
+	      ;;
+	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      if test "$pass" = "conv" &&
+       { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then
+	libs="$deplibs" # reset libs
+	deplibs=
+      fi
+    done # for pass
+    if test $linkmode = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	if test "$module" = no; then
+	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  eval libname=\"$libname_spec\"
+	else
+	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+	  exit 1
+	else
+	  echo
+	  echo "*** Warning: Linking the shared library $output against the non-libtool"
+	  echo "*** objects $objs is not portable!"
+	  libobjs="$libobjs $objs"
+	fi
+      fi
+
+      if test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test $# -gt 2; then
+	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  libext=al
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	if test -n "$vinfo"; then
+	  $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
+	fi
+
+	if test -n "$release"; then
+	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+	fi
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	IFS="$save_ifs"
+
+	if test -n "$8"; then
+	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+
+	current="$2"
+	revision="$3"
+	age="$4"
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	case $revision in
+	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	case $age in
+	0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	if test $age -gt $current; then
+	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit 1
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  minor_current=`expr $current + 1`
+	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current";
+	  ;;
+
+	irix | nonstopux)
+	  major=`expr $current - $age + 1`
+
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring="$verstring_prefix$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test $loop != 0; do
+	    iface=`expr $revision - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring_prefix$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux)
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  major=.`expr $current - $age`
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test $loop != 0; do
+	    iface=`expr $current - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  verstring="$verstring:${current}.0"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  major=`expr $current - $age`
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  verstring="0.0"
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=""
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+      fi
+
+      if test "$mode" != relink; then
+	# Remove our outputs.
+	$show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
+	$run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      for path in $notinst_path; do
+	lib_search_path=`echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
+	deplibs=`echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
+	dependency_libs=`echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+      done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  temp_xrpath="$temp_xrpath -R$libdir"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+	if test $hardcode_into_libs != yes || test $build_old_libs = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) dlfiles="$dlfiles $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) dlprefiles="$dlprefiles $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    deplibs="$deplibs -framework System"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd*)
+	    # Do not include libc due to us having libc/libc_r.
+	    ;;
+	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test $build_libtool_need_lc = "yes"; then
+	      deplibs="$deplibs -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behaviour.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $rm conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $rm conftest
+	  $CC -o conftest conftest.c $deplibs
+	  if test $? -eq 0 ; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	      # If $name is empty we are operating on a -L argument.
+	      if test -n "$name" && test "$name" != "0"; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		set dummy $deplib_matches
+		deplib_match=$2
+		if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		  newdeplibs="$newdeplibs $i"
+		else
+		  droppeddeps=yes
+		  echo
+		  echo "*** Warning: dynamic linker does not accept needed library $i."
+		  echo "*** I have the capability to make that library automatically link in when"
+		  echo "*** you link to this library.  But I can only do this if you have a"
+		  echo "*** shared version of the library, which I believe you do not have"
+		  echo "*** because a test_compile did reveal that the linker did not use it for"
+		  echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  else
+	    # Error occured in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	     # If $name is empty we are operating on a -L argument.
+	      if test -n "$name" && test "$name" != "0"; then
+		$rm conftest
+		$CC -o conftest conftest.c $i
+		# Did it work?
+		if test $? -eq 0 ; then
+		  ldd_output=`ldd conftest`
+		  libname=`eval \\$echo \"$libname_spec\"`
+		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		  set dummy $deplib_matches
+		  deplib_match=$2
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    newdeplibs="$newdeplibs $i"
+		  else
+		    droppeddeps=yes
+		    echo
+		    echo "*** Warning: dynamic linker does not accept needed library $i."
+		    echo "*** I have the capability to make that library automatically link in when"
+		    echo "*** you link to this library.  But I can only do this if you have a"
+		    echo "*** shared version of the library, which you do not appear to have"
+		    echo "*** because a test_compile did reveal that the linker did not use this one"
+		    echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		  fi
+		else
+		  droppeddeps=yes
+		  echo
+		  echo "*** Warning!  Library $i is needed by this library but I was not able to"
+		  echo "***  make it link in!  You will probably need to install it or some"
+		  echo "*** library that it depends on before this library will be fully"
+		  echo "*** functional.  Installing it before continuing would be even better."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method
+	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      libname=`eval \\$echo \"$libname_spec\"`
+	      for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		    potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		    for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null \
+			 | grep " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+			 | ${SED} 10q \
+			 | egrep "$file_magic_regex" > /dev/null; then
+			newdeplibs="$newdeplibs $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		    done
+	      done
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		echo
+		echo "*** Warning: linker path does not have real file for library $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  echo "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  echo "*** with $libname and none of the candidates passed a file format test"
+		  echo "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      libname=`eval \\$echo \"$libname_spec\"`
+	      for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		for potent_lib in $potential_libs; do
+		  potlib="$potent_lib" # see symlink-check below in file_magic test
+		  if eval echo \"$potent_lib\" 2>/dev/null \
+		      | ${SED} 10q \
+		      | egrep "$match_pattern_regex" > /dev/null; then
+		    newdeplibs="$newdeplibs $a_deplib"
+		    a_deplib=""
+		    break 2
+		  fi
+		done
+	      done
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		echo
+		echo "*** Warning: linker path does not have real file for library $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  echo "*** with $libname and none of the candidates passed a file format test"
+		  echo "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+	       -e 's/ -[LR][^ ]*//g' -e 's/[ 	]//g' |
+	     grep . >/dev/null; then
+	    echo
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	  fi
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library is the System framework
+	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    echo
+	    echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    echo "*** dependencies of module $libname.  Therefore, libtool will create"
+	    echo "*** a static module, that should work as long as the dlopening"
+	    echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      echo
+	      echo "*** However, this would only work if libtool was able to extract symbol"
+	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      echo "*** not find such a program.  So, this module is probably useless."
+	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    echo "*** The inter-library dependencies that have been dropped here will be"
+	    echo "*** automatically added whenever a program is linked with this library"
+	    echo "*** or is declared to -dlopen it."
+
+	    if test $allow_undefined = no; then
+	      echo
+	      echo "*** Since this library must not contain undefined symbols,"
+	      echo "*** because either the platform does not support them or"
+	      echo "*** it was explicitly requested with -no-undefined,"
+	      echo "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	if test $hardcode_into_libs = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		dep_rpath="$dep_rpath $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      rpath="$rpath$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	realname="$2"
+	shift; shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	test -z "$dlname" && dlname=$soname
+
+	lib="$output_objdir/$realname"
+	for link
+	do
+	  linknames="$linknames $link"
+	done
+
+	# Ensure that we have .o objects for linkers which dislike .lo
+	# (e.g. aix) in case we are running --disable-static
+	for obj in $libobjs; do
+	  xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+	  if test "X$xdir" = "X$obj"; then
+	    xdir="."
+	  else
+	    xdir="$xdir"
+	  fi
+	  baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+	  oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+	  if test ! -f $xdir/$oldobj; then
+	    $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
+	    $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
+	  fi
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    eval cmds=\"$export_symbols_cmds\"
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      $show "$cmd"
+	      $run eval "$cmd" || exit $?
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex"; then
+	      $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+	      $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+	fi
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    $show "${rm}r $gentop"
+	    $run ${rm}r "$gentop"
+	    $show "mkdir $gentop"
+	    $run mkdir "$gentop"
+	    status=$?
+	    if test $status -ne 0 && test ! -d "$gentop"; then
+	      exit $status
+	    fi
+	    generated="$generated $gentop"
+
+	    for xlib in $convenience; do
+	      # Extract the objects.
+	      case $xlib in
+	      [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	      *) xabs=`pwd`"/$xlib" ;;
+	      esac
+	      xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	      xdir="$gentop/$xlib"
+
+	      $show "${rm}r $xdir"
+	      $run ${rm}r "$xdir"
+	      $show "mkdir $xdir"
+	      $run mkdir "$xdir"
+	      status=$?
+	      if test $status -ne 0 && test ! -d "$xdir"; then
+		exit $status
+	      fi
+	      $show "(cd $xdir && $AR x $xabs)"
+	      $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+	      libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+	    done
+	  fi
+	fi
+
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  linker_flags="$linker_flags $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	  eval cmds=\"$archive_expsym_cmds\"
+	else
+	  save_deplibs="$deplibs"
+	  for conv in $convenience; do
+	    tmp_deplibs=
+	    for test_deplib in $deplibs; do
+	      if test "$test_deplib" != "$conv"; then
+		tmp_deplibs="$tmp_deplibs $test_deplib"
+	      fi
+	    done
+	    deplibs="$tmp_deplibs"
+	  done
+	  eval cmds=\"$archive_cmds\"
+	  deplibs="$save_deplibs"
+	fi
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+	  exit 0
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+	if test -n "$objs$old_deplibs"; then
+	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+	  exit 1
+	fi
+	libobj="$output"
+	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+	else
+	  gentop="$output_objdir/${obj}x"
+	  $show "${rm}r $gentop"
+	  $run ${rm}r "$gentop"
+	  $show "mkdir $gentop"
+	  $run mkdir "$gentop"
+	  status=$?
+	  if test $status -ne 0 && test ! -d "$gentop"; then
+	    exit $status
+	  fi
+	  generated="$generated $gentop"
+
+	  for xlib in $convenience; do
+	    # Extract the objects.
+	    case $xlib in
+	    [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	    *) xabs=`pwd`"/$xlib" ;;
+	    esac
+	    xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	    xdir="$gentop/$xlib"
+
+	    $show "${rm}r $xdir"
+	    $run ${rm}r "$xdir"
+	    $show "mkdir $xdir"
+	    $run mkdir "$xdir"
+	    status=$?
+	    if test $status -ne 0 && test ! -d "$xdir"; then
+	      exit $status
+	    fi
+	    $show "(cd $xdir && $AR x $xabs)"
+	    $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+	    reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+	  done
+	fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      eval cmds=\"$reload_cmds\"
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	exit 0
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	$show "echo timestamp > $libobj"
+	$run eval "echo timestamp > $libobj" || exit $?
+	exit 0
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	eval cmds=\"$reload_cmds\"
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+      else
+	# Just create a symlink.
+	$show $rm $libobj
+	$run $rm $libobj
+	xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
+	if test "X$xdir" = "X$libobj"; then
+	  xdir="."
+	else
+	  xdir="$xdir"
+	fi
+	baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
+	oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+	$show "(cd $xdir && $LN_S $oldobj $baseobj)"
+	$run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
+      fi
+
+      if test -n "$gentop"; then
+	$show "${rm}r $gentop"
+	$run ${rm}r $gentop
+      fi
+
+      exit 0
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) output=`echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+	   test "$dlopen_self_static" = unknown; then
+	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+	fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	case $host in
+	*darwin*)
+	  # Don't allow lazy linking, it breaks C++ global constructors
+	  compile_command="$compile_command ${wl}-bind_at_load"
+	  finalize_command="$finalize_command ${wl}-bind_at_load"
+	  ;;
+	esac
+	;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	  dlsyms="${outputname}S.c"
+	else
+	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+	fi
+      fi
+
+      if test -n "$dlsyms"; then
+	case $dlsyms in
+	"") ;;
+	*.c)
+	  # Discover the nlist of each of the dlfiles.
+	  nlist="$output_objdir/${outputname}.nm"
+
+	  $show "$rm $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Parse the name list into a source file.
+	  $show "creating $output_objdir/$dlsyms"
+
+	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+	  if test "$dlself" = yes; then
+	    $show "generating symbol list for \`$output'"
+
+	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+	    # Add our own program objects to the symbol list.
+	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	    for arg in $progfiles; do
+	      $show "extracting global C symbols from \`$arg'"
+	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	    done
+
+	    if test -n "$exclude_expsyms"; then
+	      $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    if test -n "$export_symbols_regex"; then
+	      $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    # Prepare the list of exported symbols
+	    if test -z "$export_symbols"; then
+	      export_symbols="$output_objdir/$output.exp"
+	      $run $rm $export_symbols
+	      $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	    else
+	      $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
+	      $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
+	      $run eval 'mv "$nlist"T "$nlist"'
+	    fi
+	  fi
+
+	  for arg in $dlprefiles; do
+	    $show "extracting global C symbols from \`$arg'"
+	    name=`echo "$arg" | ${SED} -e 's%^.*/%%'`
+	    $run eval 'echo ": $name " >> "$nlist"'
+	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -z "$run"; then
+	    # Make sure we have at least an empty file.
+	    test -f "$nlist" || : > "$nlist"
+
+	    if test -n "$exclude_expsyms"; then
+	      egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	      $mv "$nlist"T "$nlist"
+	    fi
+
+	    # Try sorting and uniquifying the output.
+	    if grep -v "^: " < "$nlist" |
+		if sort -k 3 </dev/null >/dev/null 2>&1; then
+		  sort -k 3
+		else
+		  sort +2
+		fi |
+		uniq > "$nlist"S; then
+	      :
+	    else
+	      grep -v "^: " < "$nlist" > "$nlist"S
+	    fi
+
+	    if test -f "$nlist"S; then
+	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+	    else
+	      echo '/* NONE */' >> "$output_objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	  fi
+
+	  pic_flag_for_symtable=
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
+	    esac;;
+	  *-*-hpux*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DPIC";;
+	    esac
+	  esac
+
+	  # Now compile the dynamic symbol file.
+	  $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+	  $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+	  # Clean up the generated files.
+	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Transform the symbol file into the correct name.
+	  compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  ;;
+	*)
+	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+	  exit 1
+	  ;;
+	esac
+      else
+	# We keep going just in case the user didn't refer to
+	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+	# really was required.
+
+	# Nullify the symbol file.
+	compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+	finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test $need_relink = no || test "$build_libtool_libs" != yes; then
+	# Replace the output file specification.
+	compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	$show "$link_command"
+	$run eval "$link_command"
+	status=$?
+
+	# Delete the generated files.
+	if test -n "$dlsyms"; then
+	  $show "$rm $output_objdir/${outputname}S.${objext}"
+	  $run $rm "$output_objdir/${outputname}S.${objext}"
+	fi
+
+	exit $status
+      fi
+
+      if test -n "$shlibpath_var"; then
+	# We should set the shlibpath_var
+	rpath=
+	for dir in $temp_rpath; do
+	  case $dir in
+	  [\\/]* | [A-Za-z]:[\\/]*)
+	    # Absolute path.
+	    rpath="$rpath$dir:"
+	    ;;
+	  *)
+	    # Relative path: add a thisdir entry.
+	    rpath="$rpath\$thisdir/$dir:"
+	    ;;
+	  esac
+	done
+	temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$run $rm $output
+	# Link the executable and exit
+	$show "$link_command"
+	$run eval "$link_command" || exit $?
+	exit 0
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
+	case $0 in
+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
+	*) qecho="$SHELL `pwd`/$0 --fallback-echo";;
+	esac
+	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) output=`echo $output|${SED} 's,.exe$,,'` ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*) exeext=.exe ;;
+	  *) exeext= ;;
+	esac
+	$rm $output
+	trap "$rm $output; exit 1" 1 2 15
+
+	$echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+	$echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+	  echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$echo \"\$relink_command_output\" >&2
+	$rm \"\$progdir/\$file\"
+	exit 1
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+	else
+	  echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 ${SED}
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	# fixup the dll searchpath if we need to.
+	if test -n "$dllsearchpath"; then
+	  $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+	case $host in
+	# win32 systems need to use the prog path for dll
+	# lookup to work
+	*-*-cygwin* | *-*-pw32*)
+	  $echo >> $output "\
+      exec \$progdir/\$program \${1+\"\$@\"}
+"
+	  ;;
+
+	# Backslashes separate directories on plain windows
+	*-*-mingw | *-*-os2*)
+	  $echo >> $output "\
+      exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $echo >> $output "\
+      # Export the path to the program.
+      PATH=\"\$progdir:\$PATH\"
+      export PATH
+
+      exec \$program \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit 1
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+	chmod +x $output
+      fi
+      exit 0
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	$show "${rm}r $gentop"
+	$run ${rm}r "$gentop"
+	$show "mkdir $gentop"
+	$run mkdir "$gentop"
+	status=$?
+	if test $status -ne 0 && test ! -d "$gentop"; then
+	  exit $status
+	fi
+	generated="$generated $gentop"
+
+	# Add in members from convenience archives.
+	for xlib in $addlibs; do
+	  # Extract the objects.
+	  case $xlib in
+	  [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	  *) xabs=`pwd`"/$xlib" ;;
+	  esac
+	  xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	  xdir="$gentop/$xlib"
+
+	  $show "${rm}r $xdir"
+	  $run ${rm}r "$xdir"
+	  $show "mkdir $xdir"
+	  $run mkdir "$xdir"
+	  status=$?
+	  if test $status -ne 0 && test ! -d "$xdir"; then
+	    exit $status
+	  fi
+	  $show "(cd $xdir && $AR x $xabs)"
+	  $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+	  oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
+	done
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+	eval cmds=\"$old_archive_from_new_cmds\"
+      else
+	# Ensure that we have .o objects in place in case we decided
+	# not to build a shared library, and have fallen back to building
+	# static libs even though --disable-static was passed!
+	for oldobj in $oldobjs; do
+	  if test ! -f $oldobj; then
+	    xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
+	    if test "X$xdir" = "X$oldobj"; then
+	      xdir="."
+	    else
+	      xdir="$xdir"
+	    fi
+	    baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
+	    obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
+	    $show "(cd $xdir && ${LN_S} $obj $baseobj)"
+	    $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
+	  fi
+	done
+
+	eval cmds=\"$old_archive_cmds\"
+      fi
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args)"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		if test -z "$libdir"; then
+		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		  exit 1
+		fi
+		newdependency_libs="$newdependency_libs $libdir/$name"
+		;;
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit 1
+	      fi
+	      newdlfiles="$newdlfiles $libdir/$name"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit 1
+	      fi
+	      newdlprefiles="$newdlprefiles $libdir/$name"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $rm $output
+	  # place dlname in correct position for cygwin
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	  esac
+	  $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test $need_relink = yes; then
+	    $echo >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit 0
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg="$nonopt"
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+	files="$files $dest"
+	dest="$arg"
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) prev="-f" ;;
+      -g) prev="-g" ;;
+      -m) prev="-m" ;;
+      -o) prev="-o" ;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*) ;;
+
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  prev=
+	else
+	  dest="$arg"
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	$echo "$modename: no file or destination specified" 1>&2
+      else
+	$echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test $# -gt 2; then
+	$echo "$modename: \`$dest' is not a directory" 1>&2
+	$echo "$help" 1>&2
+	exit 1
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	staticlibs="$staticlibs $file"
+	;;
+
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+
+	library_names=
+	old_library=
+	relink_command=
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  esac
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+	test "X$dir" = "X$file/" && dir=
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  $echo "$modename: warning: relinking \`$file'" 1>&2
+	  $show "$relink_command"
+	  if $run eval "$relink_command"; then :
+	  else
+	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+	    continue
+	  fi
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names
+	if test -n "$2"; then
+	  realname="$2"
+	  shift
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  $show "$install_prog $dir/$srcname $destdir/$realname"
+	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+	  if test -n "$stripme" && test -n "$striplib"; then
+	    $show "$striplib $destdir/$realname"
+	    $run eval "$striplib $destdir/$realname" || exit $?
+	  fi
+
+	  if test $# -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    for linkname
+	    do
+	      if test "$linkname" != "$realname"; then
+		$show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+		$run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+	      fi
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  eval cmds=\"$postinstall_cmds\"
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+	fi
+
+	# Install the pseudo-library for information purposes.
+	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	instname="$dir/$name"i
+	$show "$install_prog $instname $destdir/$name"
+	$run eval "$install_prog $instname $destdir/$name" || exit $?
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	if test -n "$destfile"; then
+	  $show "$install_prog $file $destfile"
+	  $run eval "$install_prog $file $destfile" || exit $?
+	fi
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+	  $show "$install_prog $staticobj $staticdest"
+	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+	fi
+	exit 0
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin*|*mingw*)
+	    wrapper=`echo $file | ${SED} -e 's,.exe$,,'`
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if (${SED} -e '4q' $wrapper | egrep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $wrapper ;;
+	  *) . ./$wrapper ;;
+	  esac
+
+	  # Check the variables that should have been set.
+	  if test -z "$notinst_deplibs"; then
+	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+	    exit 1
+	  fi
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      # If there is no directory component, then add one.
+	      case $lib in
+	      */* | *\\*) . $lib ;;
+	      *) . ./$lib ;;
+	      esac
+	    fi
+	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $wrapper ;;
+	  *) . ./$wrapper ;;
+	  esac
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    if test "$finalize" = yes && test -z "$run"; then
+	      tmpdir="/tmp"
+	      test -n "$TMPDIR" && tmpdir="$TMPDIR"
+	      tmpdir="$tmpdir/libtool-$$"
+	      if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
+	      else
+		$echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+		continue
+	      fi
+	      file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	      outputname="$tmpdir/$file"
+	      # Replace the output file specification.
+	      relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+	      $show "$relink_command"
+	      if $run eval "$relink_command"; then :
+	      else
+		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+		${rm}r "$tmpdir"
+		continue
+	      fi
+	      file="$outputname"
+	    else
+	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
+	    fi
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyways
+	case $install_prog,$host in
+	/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    destfile=`echo $destfile | ${SED} -e 's,.exe$,,'`
+	    ;;
+	  esac
+	  ;;
+	esac
+	$show "$install_prog$stripme $file $destfile"
+	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+	test -n "$outputname" && ${rm}r "$tmpdir"
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$striplib"; then
+	$show "$old_striplib $oldlib"
+	$run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      eval cmds=\"$old_postinstall_cmds\"
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $0 --finish$current_libdirs'
+    else
+      exit 0
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+	libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  eval cmds=\"$finish_cmds\"
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+	  done
+	  IFS="$save_ifs"
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = ":" && exit 0
+
+    echo "----------------------------------------------------------------------"
+    echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      echo "   $libdir"
+    done
+    echo
+    echo "If you ever happen to want to link against installed libraries"
+    echo "in a given directory, LIBDIR, you must either use libtool, and"
+    echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    echo
+    echo "See any operating system documentation about shared libraries for"
+    echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    echo "----------------------------------------------------------------------"
+    exit 0
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit 1
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+	$echo "$modename: \`$file' is not a file" 1>&2
+	$echo "$help" 1>&2
+	exit 1
+      fi
+
+      dir=
+      case $file in
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit 1
+	fi
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+	  exit 1
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+	;;
+
+      *)
+	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved enviroment variables
+      if test "${save_LC_ALL+set}" = set; then
+	LC_ALL="$save_LC_ALL"; export LC_ALL
+      fi
+      if test "${save_LANG+set}" = set; then
+	LANG="$save_LANG"; export LANG
+      fi
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+	$echo "export $shlibpath_var"
+      fi
+      $echo "$cmd$args"
+      exit 0
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    rmdirs=
+
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+	dir=.
+	objdir="$objdir"
+      else
+	objdir="$dir/$objdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test $mode = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test $mode = clean; then
+	case " $rmdirs " in
+	  *" $objdir "*) ;;
+	  *) rmdirs="$rmdirs $objdir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+	|| (test -h "$file") >/dev/null 2>&1 \
+	|| test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  . $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    rmfiles="$rmfiles $objdir/$n"
+	  done
+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+	  test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+	  if test $mode = uninstall; then
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      eval cmds=\"$postuninstall_cmds\"
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test $? != 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      eval cmds=\"$old_postuninstall_cmds\"
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test $? != 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	  fi
+	fi
+	;;
+
+      *.lo)
+	if test "$build_old_libs" = yes; then
+	  oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
+	  rmfiles="$rmfiles $dir/$oldobj"
+	fi
+	;;
+
+      *)
+	# Do a test to see if this is a libtool program.
+	if test $mode = clean &&
+	   (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  relink_command=
+	  . $dir/$file
+
+	  rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	  if test "$fast_install" = yes && test -n "$relink_command"; then
+	    rmfiles="$rmfiles $objdir/lt-$name"
+	  fi
+	fi
+	;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	$show "rmdir $dir"
+	$run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit 1
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit 1
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit 1
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE."
+  exit 0
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+		    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+		    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+		    specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+  ;;
+esac
+
+echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit 0
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/Win32/WinCVODE/sundials/nvec_ser/Makefile b/Win32/WinCVODE/sundials/nvec_ser/Makefile
new file mode 100644
index 0000000..5323841
--- /dev/null
+++ b/Win32/WinCVODE/sundials/nvec_ser/Makefile
@@ -0,0 +1,101 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:45:31 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/shared/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for serial NVECTOR module
+#
+# nvec_ser/Makefile.  Generated from Makefile.in by configure.
+# -----------------------------------------------------------------
+
+SHELL = /bin/bash
+
+srcdir       = .
+builddir     = .
+abs_builddir = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials/nvec_ser
+top_builddir = ../
+prefix       = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials
+exec_prefix  = ${prefix}
+includedir   = ${prefix}/include
+libdir       = ${exec_prefix}/lib
+
+INSTALL        = /usr/bin/install -c
+INSTALL_LIB    = ${INSTALL}
+INSTALL_HEADER = ${INSTALL} -m 644
+
+LIBTOOL      = $(SHELL) $(top_builddir)/libtool
+LIBTOOL_DEPS = config/ltmain.sh
+
+CPP      = /usr/bin/cc -E
+CPPFLAGS = 
+CC       = /usr/bin/cc
+CFLAGS   = -g -O2
+LIBS     = -lm 
+
+FCMIX_ENABLED = yes
+
+SHARED_INC_DIR         = $(srcdir)/../shared/include
+NVECTOR_SERIAL_INC_DIR = $(srcdir)
+
+NVECTOR_SERIAL_LIB       = libsundials_nvecserial.la
+NVECTOR_SERIAL_LIB_FILES = nvector_serial.lo
+
+FNVECTOR_SERIAL_LIB       = libsundials_fnvecserial.la
+FNVECTOR_SERIAL_LIB_FILES = fnvector_serial.lo
+
+all: update $(NVECTOR_SERIAL_LIB_FILES) $(FNVECTOR_SERIAL_LIB_FILES)
+
+update:
+	${INSTALL_HEADER} ${top_builddir}/config/sundials_config.h ${builddir}
+
+install: update $(NVECTOR_SERIAL_LIB_FILES) $(FNVECTOR_SERIAL_LIB_FILES)
+	$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(NVECTOR_SERIAL_LIB) $(NVECTOR_SERIAL_LIB_FILES) -rpath $(libdir) $(LIBS) -avoid-version
+	$(LIBTOOL) --mode=install $(INSTALL_LIB) $(NVECTOR_SERIAL_LIB) $(libdir)
+	$(INSTALL_HEADER) $(NVECTOR_SERIAL_INC_DIR)/nvector_serial.h $(includedir)
+	@if test "X${FCMIX_ENABLED}" = "Xyes"; then                                                                                                               \
+	   echo "${LIBTOOL} --mode=link ${CC} ${CFLAGS} -o ${FNVECTOR_SERIAL_LIB} ${FNVECTOR_SERIAL_LIB_FILES} -rpath ${libdir} ${LIBS} -static -avoid-version" ; \
+	   ${LIBTOOL} --mode=link ${CC} ${CFLAGS} -o ${FNVECTOR_SERIAL_LIB} ${FNVECTOR_SERIAL_LIB_FILES} -rpath ${libdir} ${LIBS} -static -avoid-version ;        \
+	   echo "${LIBTOOL} --mode=install ${INSTALL_LIB} ${FNVECTOR_SERIAL_LIB} ${libdir}" ;                                                                     \
+	   ${LIBTOOL} --mode=install ${INSTALL_LIB} ${FNVECTOR_SERIAL_LIB} ${libdir} ;                                                                            \
+	 fi
+
+clean:
+	$(LIBTOOL) --mode=clean rm -f $(NVECTOR_SERIAL_LIB)
+	rm -f $(NVECTOR_SERIAL_LIB_FILES)
+	rm -f nvector_serial.o
+	@if test "X${FCMIX_ENABLED}" = "Xyes"; then                      \
+	   echo "${LIBTOOL} --mode=clean rm -f ${FNVECTOR_SERIAL_LIB}" ; \
+	   ${LIBTOOL} --mode=clean rm -f ${FNVECTOR_SERIAL_LIB} ;        \
+	   echo "rm -f ${FNVECTOR_SERIAL_LIB_FILES}" ;                   \
+	   rm -f ${FNVECTOR_SERIAL_LIB_FILES} ;                          \
+	   echo "rm -f fnvector_serial.o" ;                              \
+	   rm -f fnvector_serial.o ;                                     \
+	 fi
+	rm -f sundials_config.h
+
+uninstall: clean
+	$(LIBTOOL) --mode=uninstall rm -f $(libdir)/$(NVECTOR_SERIAL_LIB)
+	rm -f $(includedir)/nvector_serial.h
+	@if test "X${FCMIX_ENABLED}" = "Xyes"; then                                    \
+	   echo "${LIBTOOL} --mode=uninstall rm -f ${libdir}/${FNVECTOR_SERIAL_LIB}" ; \
+	   ${LIBTOOL} --mode=uninstall rm -f ${libdir}/${FNVECTOR_SERIAL_LIB} ;        \
+	 fi
+
+nvector_serial.lo: $(srcdir)/nvector_serial.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(NVECTOR_SERIAL_INC_DIR) $(CFLAGS) -c $(srcdir)/nvector_serial.c
+fnvector_serial.lo: $(srcdir)/fnvector_serial.c
+	@if test "X${FCMIX_ENABLED}" = "Xyes"; then                                                                                                          \
+	   echo "${LIBTOOL} --mode=compile ${CC} ${CPPFLAGS} -I. -I${SHARED_INC_DIR} -I${NVECTOR_SERIAL_INC_DIR} ${CFLAGS} -c ${srcdir}/fnvector_serial.c" ; \
+	   ${LIBTOOL} --mode=compile ${CC} ${CPPFLAGS} -I. -I${SHARED_INC_DIR} -I${NVECTOR_SERIAL_INC_DIR} ${CFLAGS} -c ${srcdir}/fnvector_serial.c ;        \
+	 fi
+
+libtool: $(top_builddir)/$(LIBTOOL_DEPS)
+	@cd $(top_builddir) ;                 \
+	 $(SHELL) ./config.status --recheck ; \
+	 cd $(abs_builddir)
diff --git a/Win32/WinCVODE/sundials/nvec_ser/Makefile.in b/Win32/WinCVODE/sundials/nvec_ser/Makefile.in
new file mode 100644
index 0000000..9dfa8f5
--- /dev/null
+++ b/Win32/WinCVODE/sundials/nvec_ser/Makefile.in
@@ -0,0 +1,101 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:45:31 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/shared/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for serial NVECTOR module
+#
+# @configure_input@
+# -----------------------------------------------------------------
+
+SHELL = @SHELL@
+
+srcdir       = @srcdir@
+builddir     = @builddir@
+abs_builddir = @abs_builddir@
+top_builddir = @top_builddir@
+prefix       = @prefix@
+exec_prefix  = @exec_prefix@
+includedir   = @includedir@
+libdir       = @libdir@
+
+INSTALL        = @INSTALL@
+INSTALL_LIB    = @INSTALL_PROGRAM@
+INSTALL_HEADER = @INSTALL_DATA@
+
+LIBTOOL      = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+
+CPP      = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CC       = @CC@
+CFLAGS   = @CFLAGS@
+LIBS     = @LIBS@
+
+FCMIX_ENABLED = @FCMIX_ENABLED@
+
+SHARED_INC_DIR         = $(srcdir)/../shared/include
+NVECTOR_SERIAL_INC_DIR = $(srcdir)
+
+NVECTOR_SERIAL_LIB       = libsundials_nvecserial.la
+NVECTOR_SERIAL_LIB_FILES = nvector_serial.lo
+
+FNVECTOR_SERIAL_LIB       = libsundials_fnvecserial.la
+FNVECTOR_SERIAL_LIB_FILES = fnvector_serial.lo
+
+all: update $(NVECTOR_SERIAL_LIB_FILES) $(FNVECTOR_SERIAL_LIB_FILES)
+
+update:
+	${INSTALL_HEADER} ${top_builddir}/config/sundials_config.h ${builddir}
+
+install: update $(NVECTOR_SERIAL_LIB_FILES) $(FNVECTOR_SERIAL_LIB_FILES)
+	$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(NVECTOR_SERIAL_LIB) $(NVECTOR_SERIAL_LIB_FILES) -rpath $(libdir) $(LIBS) -avoid-version
+	$(LIBTOOL) --mode=install $(INSTALL_LIB) $(NVECTOR_SERIAL_LIB) $(libdir)
+	$(INSTALL_HEADER) $(NVECTOR_SERIAL_INC_DIR)/nvector_serial.h $(includedir)
+	@if test "X${FCMIX_ENABLED}" = "Xyes"; then                                                                                                               \
+	   echo "${LIBTOOL} --mode=link ${CC} ${CFLAGS} -o ${FNVECTOR_SERIAL_LIB} ${FNVECTOR_SERIAL_LIB_FILES} -rpath ${libdir} ${LIBS} -static -avoid-version" ; \
+	   ${LIBTOOL} --mode=link ${CC} ${CFLAGS} -o ${FNVECTOR_SERIAL_LIB} ${FNVECTOR_SERIAL_LIB_FILES} -rpath ${libdir} ${LIBS} -static -avoid-version ;        \
+	   echo "${LIBTOOL} --mode=install ${INSTALL_LIB} ${FNVECTOR_SERIAL_LIB} ${libdir}" ;                                                                     \
+	   ${LIBTOOL} --mode=install ${INSTALL_LIB} ${FNVECTOR_SERIAL_LIB} ${libdir} ;                                                                            \
+	 fi
+
+clean:
+	$(LIBTOOL) --mode=clean rm -f $(NVECTOR_SERIAL_LIB)
+	rm -f $(NVECTOR_SERIAL_LIB_FILES)
+	rm -f nvector_serial.o
+	@if test "X${FCMIX_ENABLED}" = "Xyes"; then                      \
+	   echo "${LIBTOOL} --mode=clean rm -f ${FNVECTOR_SERIAL_LIB}" ; \
+	   ${LIBTOOL} --mode=clean rm -f ${FNVECTOR_SERIAL_LIB} ;        \
+	   echo "rm -f ${FNVECTOR_SERIAL_LIB_FILES}" ;                   \
+	   rm -f ${FNVECTOR_SERIAL_LIB_FILES} ;                          \
+	   echo "rm -f fnvector_serial.o" ;                              \
+	   rm -f fnvector_serial.o ;                                     \
+	 fi
+	rm -f sundials_config.h
+
+uninstall: clean
+	$(LIBTOOL) --mode=uninstall rm -f $(libdir)/$(NVECTOR_SERIAL_LIB)
+	rm -f $(includedir)/nvector_serial.h
+	@if test "X${FCMIX_ENABLED}" = "Xyes"; then                                    \
+	   echo "${LIBTOOL} --mode=uninstall rm -f ${libdir}/${FNVECTOR_SERIAL_LIB}" ; \
+	   ${LIBTOOL} --mode=uninstall rm -f ${libdir}/${FNVECTOR_SERIAL_LIB} ;        \
+	 fi
+
+nvector_serial.lo: $(srcdir)/nvector_serial.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) -I$(NVECTOR_SERIAL_INC_DIR) $(CFLAGS) -c $(srcdir)/nvector_serial.c
+fnvector_serial.lo: $(srcdir)/fnvector_serial.c
+	@if test "X${FCMIX_ENABLED}" = "Xyes"; then                                                                                                          \
+	   echo "${LIBTOOL} --mode=compile ${CC} ${CPPFLAGS} -I. -I${SHARED_INC_DIR} -I${NVECTOR_SERIAL_INC_DIR} ${CFLAGS} -c ${srcdir}/fnvector_serial.c" ; \
+	   ${LIBTOOL} --mode=compile ${CC} ${CPPFLAGS} -I. -I${SHARED_INC_DIR} -I${NVECTOR_SERIAL_INC_DIR} ${CFLAGS} -c ${srcdir}/fnvector_serial.c ;        \
+	 fi
+
+libtool: $(top_builddir)/$(LIBTOOL_DEPS)
+	@cd $(top_builddir) ;                 \
+	 $(SHELL) ./config.status --recheck ; \
+	 cd $(abs_builddir)
diff --git a/Win32/WinCVODE/sundials/nvec_ser/README b/Win32/WinCVODE/sundials/nvec_ser/README
new file mode 100644
index 0000000..097485a
--- /dev/null
+++ b/Win32/WinCVODE/sundials/nvec_ser/README
@@ -0,0 +1,103 @@
+                     NVECTOR_SERIAL
+                Release 2.1.1, May 2005
+
+Serial implementation of the NVECTOR module for SUNDIALS. 
+
+NVECTOR_SERIAL defines the content field of N_Vector to be a structure 
+containing the length of the vector, a pointer to the beginning of a 
+contiguous data array, and a boolean flag indicating ownership of the 
+data array.
+
+NVECTOR_SERIAL defines five macros to provide access to the content of 
+a serial N_Vector, several constructors for variables of type N_Vector,
+a constructor for an array of variables of type N_Vector, and destructors
+for N_Vector and N_Vector array.
+
+NVECTOR_SERIAL provides implementations for all vector operations defined
+by the generic NVECTOR module in the table of operations.
+
+A. Documentation
+----------------
+
+The serial NVECTOR implementation is fully described in the user documentation 
+for any of the SUNDIALS solvers [1,2,3,4]. PostScript and PDF files for the user
+guide for a particular solver are available in the solver's directory.
+
+B. Installation
+---------------
+
+For basic installation instructions see /sundials/INSTALL. 
+For complete installation instructions see any of the user guides.
+
+C. References
+-------------
+
+[1] A. C. Hindmarsh and R. Serban, "User Documentation for CVODE v2.2.0," 
+    LLLNL technical report UCRL-MA-208108, November 2004.
+
+[2] A. C. Hindmarsh and R. Serban, "User Documentation for CVODES v2.1.0," 
+    LLNL technical report UCRL-MA-208111, November 2004.
+
+[3] A. C. Hindmarsh and R. Serban, "User Documentation for IDA v2.2.0," 
+    LLNL technical report UCRL-MA-208112, November 2004.
+
+[4] A. M. Collier, A. C. Hindmarsh, R. Serban,and C. S. Woodward, "User 
+    Documentation for KINSOL v2.2.0," LLNL technical report UCRL-MA-208116, 
+    November 2004.
+
+D. Releases
+-----------
+
+v. 2.1.0 - May. 2005
+v. 2.1.0 - Apr. 2005
+v. 2.0.2 - Mar. 2005
+v. 2.0.1 - Jan. 2005
+v. 2.0   - Dec. 2004
+v. 1.0   - Jul. 2002 (first SUNDIALS release)
+
+
+E. Revision History
+-------------------
+
+v. 2.1.0 (Apr. 2005) ---> v. 2.1.1 (May.2005)
+----------------------------------------------
+
+- Changes to data structures
+   - added N_VCloneEmpty to global vector operations table
+
+v. 2.0.2 (Mar. 2005) ---> v. 2.1.0 (Apr. 2005)
+----------------------------------------------
+
+- none
+
+v. 2.0.1 (Jan. 2005) ---> v. 2.0.2 (Mar. 2005)
+----------------------------------------------
+
+- Changes related to the build system
+   - fixed autoconf-related bug to allow configuration with the PGI Fortran compiler
+   - modified to use customized detection of the Fortran name mangling scheme 
+     (autoconf's AC_F77_WRAPPERS routine is problematic on some platforms)
+   - added --with-mpi-flags as a configure option to allow user to specify
+     MPI-specific flags
+   - updated Makefiles for Fortran examples to avoid C++ compiler errors (now use
+     CC and MPICC to link)
+
+v. 2.0 (Dec. 2004) ---> v. 2.0.1 (Jan. 2005)
+--------------------------------------------
+
+- Changes related to the build system
+   - changed order of compiler directives in header files to avoid compilation
+     errors when using a C++ compiler.
+
+
+v. 1.0 (Jul. 2002) ---> v. 2.0 (Dec. 2004)
+------------------------------------------
+
+- Revised to correspond to new generic NVECTOR module
+  (see sundials/shared/README).
+- Extended the list of user-callable functions provided by NVECTOR_SERIAL
+  outside the table of vector operations.
+- Revised the F/C interface to use underscore flags for name mapping
+  and to use precision flag from configure.
+- Revised F/C routine NVECTOR names for uniformity.
+
diff --git a/Win32/WinCVODE/sundials/nvec_ser/fnvector_serial.c b/Win32/WinCVODE/sundials/nvec_ser/fnvector_serial.c
new file mode 100644
index 0000000..1fd2e11
--- /dev/null
+++ b/Win32/WinCVODE/sundials/nvec_ser/fnvector_serial.c
@@ -0,0 +1,42 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:45:31 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This file (companion of nvector_serial.h) contains the
+ * implementation needed for the Fortran initialization of serial
+ * vector operations.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "fnvector_serial.h"
+#include "nvector_serial.h"
+#include "sundialstypes.h"
+
+/* Define global variable F2C_vec */
+N_Vector F2C_vec;
+
+/* Fortran callable interfaces */
+
+void FNV_INITS(long int *neq, int *ier)
+{
+ F2C_vec = N_VNew_Serial(*neq);
+
+ *ier = (F2C_vec == NULL) ? -1 : 0 ;
+}
+
+void FNV_FREES(void)
+{
+  N_VDestroy_Serial(F2C_vec);
+}
+
diff --git a/Win32/WinCVODE/sundials/nvec_ser/fnvector_serial.h b/Win32/WinCVODE/sundials/nvec_ser/fnvector_serial.h
new file mode 100644
index 0000000..fd3e1fc
--- /dev/null
+++ b/Win32/WinCVODE/sundials/nvec_ser/fnvector_serial.h
@@ -0,0 +1,78 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:45:31 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Radu Serban and Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This file (companion of nvector_serial.h) contains the
+ * definitions needed for the initialization of serial
+ * vector operations in Fortran.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _FNVECTOR_SERIAL_H
+#define _FNVECTOR_SERIAL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+  
+#ifndef _SUNDIALS_CONFIG_H
+#define _SUNDIALS_CONFIG_H
+#include "sundials_config.h"
+#endif
+
+#if defined(F77_FUNC)
+
+#define FNV_INITS F77_FUNC(fnvinits, FNVINITS)
+#define FNV_FREES F77_FUNC(fnvfrees, FNVFREES)
+
+#elif defined(SUNDIALS_UNDERSCORE_NONE) && defined(SUNDIALS_CASE_LOWER)
+
+#define FNV_INITS fnvinits
+#define FNV_FREES fnvfrees
+
+#elif defined(SUNDIALS_UNDERSCORE_NONE) && defined(SUNDIALS_CASE_UPPER)
+
+#define FNV_INITS FNVINITS
+#define FNV_FREES FNVFREES
+
+#elif defined(SUNDIALS_UNDERSCORE_ONE) && defined(SUNDIALS_CASE_LOWER)
+
+#define FNV_INITS fnvinits_
+#define FNV_FREES fnvfrees_
+
+#elif defined(SUNDIALS_UNDERSCORE_ONE) && defined(SUNDIALS_CASE_UPPER)
+
+#define FNV_INITS FNVINITS_
+#define FNV_FREES FNVFREES_
+
+#elif defined(SUNDIALS_UNDERSCORE_TWO) && defined(SUNDIALS_CASE_LOWER)
+
+#define FNV_INITS fnvinits__
+#define FNV_FREES fnvfrees__
+
+#elif defined(SUNDIALS_UNDERSCORE_TWO) && defined(SUNDIALS_CASE_UPPER)
+
+#define FNV_INITS FNVINITS__
+#define FNV_FREES FNVFREES__
+
+#endif
+
+/* Prototypes of exported funcions */
+
+void FNV_INITS(long int *neq, int *ier);
+void FNV_FREES(void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/nvec_ser/nvector_serial.c b/Win32/WinCVODE/sundials/nvec_ser/nvector_serial.c
new file mode 100644
index 0000000..c8b9fda
--- /dev/null
+++ b/Win32/WinCVODE/sundials/nvec_ser/nvector_serial.c
@@ -0,0 +1,928 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.2 $
+ * $Date: 2006/04/11 13:10:45 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh, Radu Serban,
+ *                and Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for a serial implementation
+ * of the NVECTOR package.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "nvector_serial.h"
+#include "sundialsmath.h"
+#include "sundialstypes.h"
+
+#define ZERO   RCONST(0.0)
+#define HALF   RCONST(0.5)
+#define ONE    RCONST(1.0)
+#define ONEPT5 RCONST(1.5)
+
+/* Private function prototypes */
+/* z=x */
+static void VCopy_Serial(N_Vector x, N_Vector z);
+/* z=x+y */
+static void VSum_Serial(N_Vector x, N_Vector y, N_Vector z);
+/* z=x-y */
+static void VDiff_Serial(N_Vector x, N_Vector y, N_Vector z);
+/* z=-x */
+static void VNeg_Serial(N_Vector x, N_Vector z);
+/* z=c(x+y) */
+static void VScaleSum_Serial(realtype c, N_Vector x, N_Vector y, N_Vector z);
+/* z=c(x-y) */
+static void VScaleDiff_Serial(realtype c, N_Vector x, N_Vector y, N_Vector z); 
+/* z=ax+y */
+static void VLin1_Serial(realtype a, N_Vector x, N_Vector y, N_Vector z);
+/* z=ax-y */
+static void VLin2_Serial(realtype a, N_Vector x, N_Vector y, N_Vector z);
+/* y <- ax+y */
+static void Vaxpy_Serial(realtype a, N_Vector x, N_Vector y);
+/* x <- ax */
+static void VScaleBy_Serial(realtype a, N_Vector x);
+
+/*
+ * -----------------------------------------------------------------
+ * exported functions
+ * -----------------------------------------------------------------
+ */
+
+/* ----------------------------------------------------------------------------
+ * Function to create a new empty serial vector 
+ */
+
+N_Vector N_VNewEmpty_Serial(long int length)
+{
+  N_Vector v;
+  N_Vector_Ops ops;
+  N_VectorContent_Serial content;
+
+  /* Create vector */
+  v = (N_Vector) malloc(sizeof *v);
+  if (v == NULL) return(NULL);
+  
+  /* Create vector operation structure */
+  ops = (N_Vector_Ops) malloc(sizeof(struct _generic_N_Vector_Ops));
+  if (ops == NULL) {free(v);return(NULL);}
+
+  ops->nvclone           = N_VClone_Serial;
+  ops->nvcloneempty      = N_VCloneEmpty_Serial;
+  ops->nvdestroy         = N_VDestroy_Serial;
+  ops->nvspace           = N_VSpace_Serial;
+  ops->nvgetarraypointer = N_VGetArrayPointer_Serial;
+  ops->nvsetarraypointer = N_VSetArrayPointer_Serial;
+  ops->nvlinearsum       = N_VLinearSum_Serial;
+  ops->nvconst           = N_VConst_Serial;
+  ops->nvprod            = N_VProd_Serial;
+  ops->nvdiv             = N_VDiv_Serial;
+  ops->nvscale           = N_VScale_Serial;
+  ops->nvabs             = N_VAbs_Serial;
+  ops->nvinv             = N_VInv_Serial;
+  ops->nvaddconst        = N_VAddConst_Serial;
+  ops->nvdotprod         = N_VDotProd_Serial;
+  ops->nvmaxnorm         = N_VMaxNorm_Serial;
+  ops->nvwrmsnormmask    = N_VWrmsNormMask_Serial;
+  ops->nvwrmsnorm        = N_VWrmsNorm_Serial;
+  ops->nvmin             = N_VMin_Serial;
+  ops->nvwl2norm         = N_VWL2Norm_Serial;
+  ops->nvl1norm          = N_VL1Norm_Serial;
+  ops->nvcompare         = N_VCompare_Serial;
+  ops->nvinvtest         = N_VInvTest_Serial;
+  ops->nvconstrmask      = N_VConstrMask_Serial;
+  ops->nvminquotient     = N_VMinQuotient_Serial;
+
+  /* Create content */
+  content = (N_VectorContent_Serial) malloc(sizeof(struct _N_VectorContent_Serial));
+  if (content == NULL) {free(ops);free(v);return(NULL);}
+
+  content->length = length;
+  content->own_data = FALSE;
+  content->data = NULL;
+
+  /* Attach content and ops */
+  v->content = content;
+  v->ops = ops;
+
+  return(v);
+}
+
+/* ----------------------------------------------------------------------------
+ * Function to create a new serial vector 
+ */
+
+N_Vector N_VNew_Serial(long int length)
+{
+  N_Vector v;
+  realtype *data;
+
+  v = N_VNewEmpty_Serial(length);
+  if (v == NULL) return(NULL);
+
+  /* Create data */
+  if (length > 0) {
+
+    /* Allocate memory */
+    data = (realtype *) malloc(length * sizeof(realtype));
+    if(data == NULL) {N_VDestroy_Serial(v);return(NULL);}
+
+    /* Attach data */
+    NV_OWN_DATA_S(v) = TRUE;
+    NV_DATA_S(v) = data;
+
+  }
+
+  return(v);
+}
+
+/* ----------------------------------------------------------------------------
+ * Function to create a serial N_Vector with user data component 
+ */
+
+N_Vector N_VMake_Serial(long int length, realtype *v_data)
+{
+  N_Vector v;
+
+  v = N_VNewEmpty_Serial(length);
+  if (v == NULL) return(NULL);
+
+  if (length > 0) {
+    /* Attach data */
+    NV_OWN_DATA_S(v) = FALSE;
+    NV_DATA_S(v) = v_data;
+  }
+
+  return(v);
+}
+
+/* ----------------------------------------------------------------------------
+ * Function to create an array of new serial vectors. 
+ */
+
+N_Vector *N_VNewVectorArray_Serial(int count, long int length)
+{
+  N_Vector *vs;
+  int j;
+
+  if (count <= 0) return(NULL);
+
+  vs = (N_Vector *) malloc(count * sizeof(N_Vector));
+  if(vs == NULL) return(NULL);
+
+  for (j=0; j<count; j++) {
+    vs[j] = N_VNew_Serial(length);
+    if (vs[j] == NULL) {
+      N_VDestroyVectorArray_Serial(vs, j-1);
+      return(NULL);
+    }
+  }
+
+  return(vs);
+}
+
+/* ----------------------------------------------------------------------------
+ * Function to create an array of new serial vectors with NULL data array. 
+ */
+
+N_Vector *N_VNewVectorArrayEmpty_Serial(int count, long int length)
+{
+  N_Vector *vs;
+  int j;
+
+  if (count <= 0) return(NULL);
+
+  vs = (N_Vector *) malloc(count * sizeof(N_Vector));
+  if(vs == NULL) return(NULL);
+
+  for (j=0; j<count; j++) {
+    vs[j] = N_VNewEmpty_Serial(length);
+    if (vs[j] == NULL) {
+      N_VDestroyVectorArray_Serial(vs, j-1);
+      return(NULL);
+    }
+  }
+
+  return(vs);
+}
+
+/* ----------------------------------------------------------------------------
+ * Function to free an array created with N_VNewVectorArray_Serial
+ */
+
+void N_VDestroyVectorArray_Serial(N_Vector *vs, int count)
+{
+  int j;
+
+  for (j = 0; j < count; j++) N_VDestroy_Serial(vs[j]);
+
+  free(vs);
+}
+
+/* ----------------------------------------------------------------------------
+ * Function to print the a serial vector 
+ */
+ 
+void N_VPrint_Serial(N_Vector x)
+{
+  long int i, N;
+  realtype *xd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+
+  for (i=0; i < N; i++) {
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+    printf("%11.8Lg\n", *xd++);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+    printf("%11.8lg\n", *xd++);
+#else
+    printf("%11.8g\n", *xd++);
+#endif
+  }
+  printf("\n");
+}
+
+/*
+ * -----------------------------------------------------------------
+ * implementation of vector operations
+ * -----------------------------------------------------------------
+ */
+
+N_Vector N_VCloneEmpty_Serial(N_Vector w)
+{
+  N_Vector v;
+  N_Vector_Ops ops;
+  N_VectorContent_Serial content;
+
+  v = NULL;
+  ops = NULL;
+  content = NULL;
+
+  if (w == NULL) return(NULL);
+
+  /* Create vector */
+  v = (N_Vector) malloc(sizeof *v);
+  if (v == NULL) return(NULL);
+
+  /* Create vector operation structure */
+  ops = (N_Vector_Ops) malloc(sizeof(struct _generic_N_Vector_Ops));
+  if (ops == NULL) { free(v); return(NULL); }
+  
+  ops->nvclone           = w->ops->nvclone;
+  ops->nvcloneempty      = w->ops->nvcloneempty;
+  ops->nvdestroy         = w->ops->nvdestroy;
+  ops->nvspace           = w->ops->nvspace;
+  ops->nvgetarraypointer = w->ops->nvgetarraypointer;
+  ops->nvsetarraypointer = w->ops->nvsetarraypointer;
+  ops->nvlinearsum       = w->ops->nvlinearsum;
+  ops->nvconst           = w->ops->nvconst;  
+  ops->nvprod            = w->ops->nvprod;   
+  ops->nvdiv             = w->ops->nvdiv;
+  ops->nvscale           = w->ops->nvscale; 
+  ops->nvabs             = w->ops->nvabs;
+  ops->nvinv             = w->ops->nvinv;
+  ops->nvaddconst        = w->ops->nvaddconst;
+  ops->nvdotprod         = w->ops->nvdotprod;
+  ops->nvmaxnorm         = w->ops->nvmaxnorm;
+  ops->nvwrmsnormmask    = w->ops->nvwrmsnormmask;
+  ops->nvwrmsnorm        = w->ops->nvwrmsnorm;
+  ops->nvmin             = w->ops->nvmin;
+  ops->nvwl2norm         = w->ops->nvwl2norm;
+  ops->nvl1norm          = w->ops->nvl1norm;
+  ops->nvcompare         = w->ops->nvcompare;    
+  ops->nvinvtest         = w->ops->nvinvtest;
+  ops->nvconstrmask      = w->ops->nvconstrmask;
+  ops->nvminquotient     = w->ops->nvminquotient;
+
+  /* Create content */
+  content = (N_VectorContent_Serial) malloc(sizeof(struct _N_VectorContent_Serial));
+  if (content == NULL) { free(ops); free(v); return(NULL); }
+
+  content->length   = NV_LENGTH_S(w);
+  content->own_data = FALSE;
+  content->data     = NULL;
+
+  /* Attach content and ops */
+  v->content = content;
+  v->ops     = ops;
+
+  return(v);
+}
+
+N_Vector N_VClone_Serial(N_Vector w)
+{
+  N_Vector v;
+  realtype *data;
+  long int length;
+
+  v = N_VCloneEmpty_Serial(w);
+  if (v == NULL) return(NULL);
+
+  length = NV_LENGTH_S(w);
+
+  /* Create data */
+  if (length > 0) {
+
+    /* Allocate memory */
+    data = (realtype *) malloc(length * sizeof(realtype));
+    if(data == NULL) {N_VDestroy_Serial(v);return(NULL);}
+
+    /* Attach data */
+    NV_OWN_DATA_S(v) = TRUE;
+    NV_DATA_S(v) = data;
+
+  }
+
+  return(v);
+}
+
+void N_VDestroy_Serial(N_Vector v)
+{
+  if (NV_OWN_DATA_S(v) == TRUE)
+    free(NV_DATA_S(v));
+  free(v->content);
+  free(v->ops);
+  free(v);
+}
+
+void N_VSpace_Serial(N_Vector v, long int *lrw, long int *liw)
+{
+  *lrw = NV_LENGTH_S(v);
+  *liw = 1;
+}
+
+realtype *N_VGetArrayPointer_Serial(N_Vector v)
+{
+  realtype *v_data;
+
+  v_data = NV_DATA_S(v);
+
+  return(v_data);
+}
+
+void N_VSetArrayPointer_Serial(realtype *v_data, N_Vector v)
+{
+  if (NV_LENGTH_S(v) > 0) NV_DATA_S(v) = v_data;
+}
+
+void N_VLinearSum_Serial(realtype a, N_Vector x, realtype b, N_Vector y, N_Vector z)
+{
+  long int i, N;
+  realtype c, *xd, *yd, *zd;
+  N_Vector v1, v2;
+  booleantype test;
+
+  if ((b == ONE) && (z == y)) {    /* BLAS usage: axpy y <- ax+y */
+    Vaxpy_Serial(a,x,y);
+    return;
+  }
+
+  if ((a == ONE) && (z == x)) {    /* BLAS usage: axpy x <- by+x */
+    Vaxpy_Serial(b,y,x);
+    return;
+  }
+
+  /* Case: a == b == 1.0 */
+
+  if ((a == ONE) && (b == ONE)) {
+    VSum_Serial(x, y, z);
+    return;
+  }
+
+  /* Cases: (1) a == 1.0, b = -1.0, (2) a == -1.0, b == 1.0 */
+
+  if ((test = ((a == ONE) && (b == -ONE))) || ((a == -ONE) && (b == ONE))) {
+    v1 = test ? y : x;
+    v2 = test ? x : y;
+    VDiff_Serial(v2, v1, z);
+    return;
+  }
+
+  /* Cases: (1) a == 1.0, b == other or 0.0, (2) a == other or 0.0, b == 1.0 */
+  /* if a or b is 0.0, then user should have called N_VScale */
+
+  if ((test = (a == ONE)) || (b == ONE)) {
+    c = test ? b : a;
+    v1 = test ? y : x;
+    v2 = test ? x : y;
+    VLin1_Serial(c, v1, v2, z);
+    return;
+  }
+
+  /* Cases: (1) a == -1.0, b != 1.0, (2) a != 1.0, b == -1.0 */
+
+  if ((test = (a == -ONE)) || (b == -ONE)) {
+    c = test ? b : a;
+    v1 = test ? y : x;
+    v2 = test ? x : y;
+    VLin2_Serial(c, v1, v2, z);
+    return;
+  }
+
+  /* Case: a == b */
+  /* catches case both a and b are 0.0 - user should have called N_VConst */
+
+  if (a == b) {
+    VScaleSum_Serial(a, x, y, z);
+    return;
+  }
+
+  /* Case: a == -b */
+
+  if (a == -b) {
+    VScaleDiff_Serial(a, x, y, z);
+    return;
+  }
+
+  /* Do all cases not handled above:
+     (1) a == other, b == 0.0 - user should have called N_VScale
+     (2) a == 0.0, b == other - user should have called N_VScale
+     (3) a,b == other, a !=b, a != -b */
+  
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  yd = NV_DATA_S(y);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++) 
+    *zd++ = a * (*xd++) + b * (*yd++);
+}
+
+void N_VConst_Serial(realtype c, N_Vector z)
+{
+  long int i, N;
+  realtype *zd;
+
+  N  = NV_LENGTH_S(z);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++) 
+    *zd++ = c;
+}
+
+void N_VProd_Serial(N_Vector x, N_Vector y, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *yd, *zd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  yd = NV_DATA_S(y);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++)
+    *zd++ = (*xd++) * (*yd++);
+}
+
+void N_VDiv_Serial(N_Vector x, N_Vector y, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *yd, *zd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  yd = NV_DATA_S(y);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++)
+    *zd++ = (*xd++) / (*yd++);
+}
+
+void N_VScale_Serial(realtype c, N_Vector x, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *zd;
+
+  if (z == x) {       /* BLAS usage: scale x <- cx */
+    VScaleBy_Serial(c, x);
+    return;
+  }
+
+  if (c == ONE) {
+    VCopy_Serial(x, z);
+  } else if (c == -ONE) {
+    VNeg_Serial(x, z);
+  } else {
+    N  = NV_LENGTH_S(x);
+    xd = NV_DATA_S(x);
+    zd = NV_DATA_S(z);
+    for (i=0; i < N; i++) 
+      *zd++ = c * (*xd++);
+  }
+}
+
+void N_VAbs_Serial(N_Vector x, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *zd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++, xd++, zd++)
+    *zd = ABS(*xd);
+}
+
+void N_VInv_Serial(N_Vector x, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *zd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++)
+    *zd++ = ONE / (*xd++);
+}
+
+void N_VAddConst_Serial(N_Vector x, realtype b, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *zd;
+  
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++) 
+    *zd++ = (*xd++) + b; 
+}
+
+realtype N_VDotProd_Serial(N_Vector x, N_Vector y)
+{
+  long int i, N;
+  realtype sum = ZERO, *xd, *yd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  yd = NV_DATA_S(y);
+
+  for (i=0; i < N; i++)
+    sum += (*xd++) * (*yd++);
+  
+  return(sum);
+}
+
+realtype N_VMaxNorm_Serial(N_Vector x)
+{
+  long int i, N;
+  realtype max = ZERO, *xd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+
+  for (i=0; i < N; i++, xd++) {
+    if (ABS(*xd) > max) max = ABS(*xd);
+  }
+   
+  return(max);
+}
+
+realtype N_VWrmsNorm_Serial(N_Vector x, N_Vector w)
+{
+  long int i, N;
+  realtype sum = ZERO, prodi, *xd, *wd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  wd = NV_DATA_S(w);
+
+  for (i=0; i < N; i++) {
+    prodi = (*xd++) * (*wd++);
+    sum += prodi * prodi;
+  }
+
+  return(RSqrt(sum / N));
+}
+
+realtype N_VWrmsNormMask_Serial(N_Vector x, N_Vector w, N_Vector id)
+{
+  long int i, N;
+  realtype sum = ZERO, prodi, *xd, *wd, *idd;
+
+  N  = NV_LENGTH_S(x);
+  xd  = NV_DATA_S(x);
+  wd  = NV_DATA_S(w);
+  idd = NV_DATA_S(id);
+
+  for (i=0; i < N; i++) {
+    if (idd[i] > ZERO) {
+      prodi = xd[i] * wd[i];
+      sum += prodi * prodi;
+    }
+  }
+
+  return(RSqrt(sum / N));
+}
+
+realtype N_VMin_Serial(N_Vector x)
+{
+  long int i, N;
+  realtype min, *xd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+
+  min = xd[0];
+
+  xd++;
+  for (i=1; i < N; i++, xd++) {
+    if ((*xd) < min) min = *xd;
+  }
+
+  return(min);
+}
+
+realtype N_VWL2Norm_Serial(N_Vector x, N_Vector w)
+{
+  long int i, N;
+  realtype sum = ZERO, prodi, *xd, *wd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  wd = NV_DATA_S(w);
+
+  for (i=0; i < N; i++) {
+    prodi = (*xd++) * (*wd++);
+    sum += prodi * prodi;
+  }
+
+  return(RSqrt(sum));
+}
+
+realtype N_VL1Norm_Serial(N_Vector x)
+{
+  long int i, N;
+  realtype sum = ZERO, *xd;
+  
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  
+  for (i=0; i<N; i++)  
+    sum += ABS(xd[i]);
+
+  return(sum);
+}
+
+void N_VOneMask_Serial(N_Vector x)
+{
+  long int i, N;
+  realtype *xd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+
+  for (i=0; i<N; i++,xd++) {
+    if (*xd != ZERO) *xd = ONE;
+  }
+}
+
+void N_VCompare_Serial(realtype c, N_Vector x, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *zd;
+  
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++, xd++, zd++) {
+    *zd = (ABS(*xd) >= c) ? ONE : ZERO;
+  }
+}
+
+booleantype N_VInvTest_Serial(N_Vector x, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *zd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++) {
+    if (*xd == ZERO) return(FALSE);
+    *zd++ = ONE / (*xd++);
+  }
+
+  return(TRUE);
+}
+
+booleantype N_VConstrMask_Serial(N_Vector c, N_Vector x, N_Vector m)
+{
+  long int i, N;
+  booleantype test;
+  realtype *cd, *xd, *md;
+  
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  cd = NV_DATA_S(c);
+  md = NV_DATA_S(m);
+
+  test = TRUE;
+
+  for (i=0; i<N; i++, cd++, xd++, md++) {
+    *md = ZERO;
+    if (*cd == ZERO) continue;
+    if (*cd > ONEPT5 || (*cd) < -ONEPT5) {
+      if ( (*xd)*(*cd) <= ZERO) {test = FALSE; *md = ONE; }
+      continue;
+    }
+    if ( (*cd) > HALF || (*cd) < -HALF) {
+      if ( (*xd)*(*cd) < ZERO ) {test = FALSE; *md = ONE; }
+    }
+  }
+  return(test);
+}
+
+realtype N_VMinQuotient_Serial(N_Vector num, N_Vector denom)
+{
+  booleantype notEvenOnce;
+  long int i, N;
+  realtype *nd, *dd, min;
+
+  nd = dd = NULL;
+
+  N  = NV_LENGTH_S(num);
+  nd = NV_DATA_S(num);
+  dd = NV_DATA_S(denom);
+
+  notEvenOnce = TRUE;
+  min = BIG_REAL;
+
+  for (i = 0; i < N; i++, nd++, dd++) {
+    if (*dd == ZERO) continue;
+    else {
+      if (!notEvenOnce) min = MIN(min, (*nd) / (*dd));
+      else {
+	min = (*nd) / (*dd);
+        notEvenOnce = FALSE;
+      }
+    }
+  }
+
+  return(min);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * private functions
+ * -----------------------------------------------------------------
+ */
+
+static void VCopy_Serial(N_Vector x, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *zd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++)
+    *zd++ = *xd++; 
+}
+
+static void VSum_Serial(N_Vector x, N_Vector y, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *yd, *zd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  yd = NV_DATA_S(y);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++)
+    *zd++ = (*xd++) + (*yd++);
+}
+
+static void VDiff_Serial(N_Vector x, N_Vector y, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *yd, *zd;
+ 
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  yd = NV_DATA_S(y);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++)
+    *zd++ = (*xd++) - (*yd++);
+}
+
+static void VNeg_Serial(N_Vector x, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *zd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  zd = NV_DATA_S(z);
+  
+  for (i=0; i < N; i++)
+    *zd++ = -(*xd++);
+}
+
+static void VScaleSum_Serial(realtype c, N_Vector x, N_Vector y, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *yd, *zd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  yd = NV_DATA_S(y);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++)
+    *zd++ = c * ((*xd++) + (*yd++));
+}
+
+static void VScaleDiff_Serial(realtype c, N_Vector x, N_Vector y, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *yd, *zd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  yd = NV_DATA_S(y);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++)
+    *zd++ = c * ((*xd++) - (*yd++));
+}
+
+static void VLin1_Serial(realtype a, N_Vector x, N_Vector y, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *yd, *zd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  yd = NV_DATA_S(y);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++)
+    *zd++ = a * (*xd++) + (*yd++);
+}
+
+static void VLin2_Serial(realtype a, N_Vector x, N_Vector y, N_Vector z)
+{
+  long int i, N;
+  realtype *xd, *yd, *zd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  yd = NV_DATA_S(y);
+  zd = NV_DATA_S(z);
+
+  for (i=0; i < N; i++)
+    *zd++ = a * (*xd++) - (*yd++);
+}
+
+static void Vaxpy_Serial(realtype a, N_Vector x, N_Vector y)
+{
+  long int i, N;
+  realtype *xd, *yd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+  yd = NV_DATA_S(y);
+
+  if (a == ONE) {
+    for (i=0; i < N; i++)
+      *yd++ += (*xd++);
+    return;
+  }
+
+  if (a == -ONE) {
+    for (i=0; i < N; i++)
+      *yd++ -= (*xd++);
+    return;
+  }    
+
+  for (i=0; i < N; i++)
+    *yd++ += a * (*xd++);
+}
+
+static void VScaleBy_Serial(realtype a, N_Vector x)
+{
+  long int i, N;
+  realtype *xd;
+
+  N  = NV_LENGTH_S(x);
+  xd = NV_DATA_S(x);
+
+  for (i=0; i < N; i++)
+    *xd++ *= a;
+}
diff --git a/Win32/WinCVODE/sundials/nvec_ser/nvector_serial.h b/Win32/WinCVODE/sundials/nvec_ser/nvector_serial.h
new file mode 100644
index 0000000..4b5905c
--- /dev/null
+++ b/Win32/WinCVODE/sundials/nvec_ser/nvector_serial.h
@@ -0,0 +1,267 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.4 $
+ * $Date: 2006/04/11 13:10:45 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh, Radu Serban,
+ *                and Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the serial implementation of the
+ * NVECTOR module.
+ *
+ * Part I contains declarations specific to the serial
+ * implementation of the supplied NVECTOR module.
+ *
+ * Part II defines accessor macros that allow the user to
+ * efficiently use the type N_Vector without making explicit
+ * references to the underlying data structure.
+ *
+ * Part III contains the prototype for the constructor N_VNew_Serial
+ * as well as implementation-specific prototypes for various useful
+ * vector operations.
+ *
+ * Notes:
+ *
+ *   - The definition of the generic N_Vector structure can be found
+ *     in the header file shared/include/nvector.h.
+ *
+ *   - The definition of the type realtype can be found in the
+ *     header file shared/include/sundialstypes.h, and it may be
+ *     changed (at the configuration stage) according to the user's
+ *     needs. The sundialstypes.h file also contains the definition
+ *     for the type booleantype.
+ *
+ *   - N_Vector arguments to arithmetic vector operations need not
+ *     be distinct. For example, the following call:
+ *
+ *       N_VLinearSum_Serial(a,x,b,y,y);
+ *
+ *     (which stores the result of the operation a*x+b*y in y)
+ *     is legal.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _NVECTOR_SERIAL_H
+#define _NVECTOR_SERIAL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "nvector.h"
+#include "sundialstypes.h"
+#include "WinCVODE.h"
+/*
+ * -----------------------------------------------------------------
+ * PART I: SERIAL implementation of N_Vector
+ * -----------------------------------------------------------------
+ */
+
+/* serial implementation of the N_Vector 'content' structure
+   contains the length of the vector, a pointer to an array
+   of realtype components, and a flag indicating ownership of
+   the data */
+
+struct _N_VectorContent_Serial {
+  long int length;
+  booleantype own_data;
+  realtype *data;
+};
+
+typedef struct _N_VectorContent_Serial *N_VectorContent_Serial;
+
+/*
+ * -----------------------------------------------------------------
+ * PART II: macros NV_CONTENT_S, NV_DATA_S, NV_OWN_DATA_S,
+ *          NV_LENGTH_S, and NV_Ith_S
+ * -----------------------------------------------------------------
+ * In the descriptions below, the following user declarations
+ * are assumed:
+ *
+ * N_Vector v;
+ * long int i;
+ *
+ * (1) NV_CONTENT_S
+ *
+ *     This routines gives access to the contents of the serial
+ *     vector N_Vector.
+ *
+ *     The assignment v_cont = NV_CONTENT_S(v) sets v_cont to be
+ *     a pointer to the serial N_Vector content structure.
+ *
+ * (2) NV_DATA_S NV_OWN_DATA_S and NV_LENGTH_S
+ *
+ *     These routines give access to the individual parts of
+ *     the content structure of a serial N_Vector.
+ *
+ *     The assignment v_data = NV_DATA_S(v) sets v_data to be
+ *     a pointer to the first component of v. The assignment
+ *     NV_DATA_S(v) = data_V sets the component array of v to
+ *     be data_v by storing the pointer data_v.
+ *
+ *     The assignment v_len = NV_LENGTH_S(v) sets v_len to be
+ *     the length of v. The call NV_LENGTH_S(v) = len_v sets
+ *     the length of v to be len_v.
+ *
+ * (3) NV_Ith_S
+ *
+ *     In the following description, the components of an
+ *     N_Vector are numbered 0..n-1, where n is the length of v.
+ *
+ *     The assignment r = NV_Ith_S(v,i) sets r to be the value of
+ *     the ith component of v. The assignment NV_Ith_S(v,i) = r
+ *     sets the value of the ith component of v to be r.
+ *
+ * Note: When looping over the components of an N_Vector v, it is
+ * more efficient to first obtain the component array via
+ * v_data = NV_DATA_S(v) and then access v_data[i] within the
+ * loop than it is to use NV_Ith_S(v,i) within the loop.
+ * -----------------------------------------------------------------
+ */
+
+#define NV_CONTENT_S(v)  ( (N_VectorContent_Serial)(v->content) )
+
+#define NV_LENGTH_S(v)   ( NV_CONTENT_S(v)->length )
+
+#define NV_OWN_DATA_S(v) ( NV_CONTENT_S(v)->own_data )
+
+#define NV_DATA_S(v)     ( NV_CONTENT_S(v)->data )
+
+#define NV_Ith_S(v,i)    ( NV_DATA_S(v)[i] )
+
+/*
+ * -----------------------------------------------------------------
+ * PART III: functions exported by nvector_serial
+ * 
+ * CONSTRUCTORS:
+ *    N_VNew_Serial
+ *    N_VNewEmpty_Serial
+ *    N_VClone_Serial
+ *    N_VCloneEmpty_Serial
+ *    N_VMake_Serial
+ *    N_VNewVectorArray_Serial
+ *    N_VNewVectorArrayEmpty_Serial
+ * DESTRUCTORS:
+ *    N_VDestroy_Serial
+ *    N_VDestroyVectorArray_Serial
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * Function : N_VNew_Serial
+ * -----------------------------------------------------------------
+ * This function creates and allocates memory for a serial vector.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API N_Vector N_VNew_Serial(long int vec_length);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : N_VNewEmpty_Serial
+ * -----------------------------------------------------------------
+ * This function creates a new serial N_Vector with an empty (NULL)
+ * data array.
+ * -----------------------------------------------------------------
+ */
+
+N_Vector N_VNewEmpty_Serial(long int vec_length);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : N_VMake_Serial
+ * -----------------------------------------------------------------
+ * This function creates and allocates memory for a serial vector
+ * with a user-supplied data array.
+ * -----------------------------------------------------------------
+ */
+
+N_Vector N_VMake_Serial(long int vec_length, realtype *v_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : N_VNewVectorArray_Serial
+ * -----------------------------------------------------------------
+ * This function creates an array of 'count' serial vectors. This
+ * array of N_Vectors can be freed using N_VDestroyVectorArray
+ * (defined by the generic NVECTOR module).
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API N_Vector *N_VNewVectorArray_Serial(int count, long int vec_length);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : N_VNewVectorArrayEmpty_Serial
+ * -----------------------------------------------------------------
+ * This function creates an array of 'count' serial vectors each
+ * with an empty (NULL) data array.
+ * -----------------------------------------------------------------
+ */
+
+N_Vector *N_VNewVectorArrayEmpty_Serial(int count, long int vec_length);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : N_VDestroyVectorArray_Serial
+ * -----------------------------------------------------------------
+ * This function frees an array of N_Vector created with 
+ * N_VNewVectorArray_Serial.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API void N_VDestroyVectorArray_Serial(N_Vector *vs, int count);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : N_VPrint_Serial
+ * -----------------------------------------------------------------
+ * This function prints the content of a serial vector to stdout.
+ * -----------------------------------------------------------------
+ */
+
+void N_VPrint_Serial(N_Vector v);
+
+/*
+ * -----------------------------------------------------------------
+ * serial implementations of various useful vector operations
+ * -----------------------------------------------------------------
+ */
+
+N_Vector N_VCloneEmpty_Serial(N_Vector w);
+N_Vector N_VClone_Serial(N_Vector w);
+WINCVODE_API void N_VDestroy_Serial(N_Vector v);
+void N_VSpace_Serial(N_Vector v, long int *lrw, long int *liw);
+realtype *N_VGetArrayPointer_Serial(N_Vector v);
+void N_VSetArrayPointer_Serial(realtype *v_data, N_Vector v);
+void N_VLinearSum_Serial(realtype a, N_Vector x, realtype b, N_Vector y, N_Vector z);
+void N_VConst_Serial(realtype c, N_Vector z);
+void N_VProd_Serial(N_Vector x, N_Vector y, N_Vector z);
+void N_VDiv_Serial(N_Vector x, N_Vector y, N_Vector z);
+void N_VScale_Serial(realtype c, N_Vector x, N_Vector z);
+void N_VAbs_Serial(N_Vector x, N_Vector z);
+void N_VInv_Serial(N_Vector x, N_Vector z);
+void N_VAddConst_Serial(N_Vector x, realtype b, N_Vector z);
+realtype N_VDotProd_Serial(N_Vector x, N_Vector y);
+realtype N_VMaxNorm_Serial(N_Vector x);
+realtype N_VWrmsNorm_Serial(N_Vector x, N_Vector w);
+realtype N_VWrmsNormMask_Serial(N_Vector x, N_Vector w, N_Vector id);
+realtype N_VMin_Serial(N_Vector x);
+realtype N_VWL2Norm_Serial(N_Vector x, N_Vector w);
+realtype N_VL1Norm_Serial(N_Vector x);
+void N_VCompare_Serial(realtype c, N_Vector x, N_Vector z);
+booleantype N_VInvTest_Serial(N_Vector x, N_Vector z);
+booleantype N_VConstrMask_Serial(N_Vector c, N_Vector x, N_Vector m);
+realtype N_VMinQuotient_Serial(N_Vector num, N_Vector denom);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/shared/LICENSE b/Win32/WinCVODE/sundials/shared/LICENSE
new file mode 100644
index 0000000..16b5fcc
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/LICENSE
@@ -0,0 +1,63 @@
+Copyright (c) 2002, The Regents of the University of California. 
+Produced at the Lawrence Livermore National Laboratory.
+Written by S.D. Cohen, A.C. Hindmarsh, R. Serban, 
+           D. Shumaker, and A.G. Taylor.
+UCRL-CODE-155951    (CVODE)
+UCRL-CODE-155950    (CVODES)
+UCRL-CODE-155952    (IDA)
+UCRL-CODE-155953    (KINSOL)
+All rights reserved. 
+
+This file is part of SUNDIALS.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the disclaimer below.
+
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the disclaimer (as noted below)
+in the documentation and/or other materials provided with the
+distribution.
+
+3. Neither the name of the UC/LLNL nor the names of its contributors
+may be used to endorse or promote products derived from this software
+without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+REGENTS OF THE UNIVERSITY OF CALIFORNIA, THE U.S. DEPARTMENT OF ENERGY
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Additional BSD Notice
+---------------------
+1. This notice is required to be provided under our contract with
+the U.S. Department of Energy (DOE). This work was produced at the
+University of California, Lawrence Livermore National Laboratory
+under Contract No. W-7405-ENG-48 with the DOE.
+
+2. Neither the United States Government nor the University of
+California nor any of their employees, makes any warranty, express
+or implied, or assumes any liability or responsibility for the
+accuracy, completeness, or usefulness of any information, apparatus,
+product, or process disclosed, or represents that its use would not
+infringe privately-owned rights.
+
+3. Also, reference herein to any specific commercial products,
+process, or services by trade name, trademark, manufacturer or
+otherwise does not necessarily constitute or imply its endorsement,
+recommendation, or favoring by the United States Government or the
+University of California. The views and opinions of authors expressed
+herein do not necessarily state or reflect those of the United States
+Government or the University of California, and shall not be used for
+advertising or product endorsement purposes.
diff --git a/Win32/WinCVODE/sundials/shared/README b/Win32/WinCVODE/sundials/shared/README
new file mode 100644
index 0000000..7c51dcf
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/README
@@ -0,0 +1,143 @@
+                           SUNDIALS 
+                        Shared Module
+                   Release 2.1.1, May 2005
+
+
+The family of solvers referred to as SUNDIALS consists of solvers CVODE 
+(for ODE systems), CVODES (ODE with sensitivity analysis capabilities),
+IDA (for differential-algebraic systems), and KINSOL (for nonlinear 
+algebraic systems), 
+
+The various solvers of this family share many subordinate modules contained
+in this module:
+- generic NVECTOR module
+- generic linear solver modules (band, dense, smalldense, spgmr)
+- definitions of SUNDIALS types (realtype, booleantype)
+- common math functions (RpowerI, RPowerR, RSqrt, RAbs,...)
+
+A. Documentation
+----------------
+All shared submodules are fully described in the user documentation for any of 
+the SUNDIALS solvers [1,2,3,4]. PostScript and PDF files for the uer guide for 
+a particular solver are available in the solver's directory.
+
+B. Installation
+---------------
+
+For basic installation instructions see the file /sundials/INSTALL. 
+For complete installation instructions see any of the user guides.
+
+C. References
+-------------
+
+[1] A. C. Hindmarsh and R. Serban, "User Documentation for CVODE v2.2.0," 
+    LLLNL technical report UCRL-MA-208108, November 2004.
+
+[2] A. C. Hindmarsh and R. Serban, "User Documentation for CVODES v2.1.0," 
+    LLNL technical report UCRL-MA-208111, November 2004.
+
+[3] A. C. Hindmarsh and R. Serban, "User Documentation for IDA v2.2.0," 
+    LLNL technical report UCRL-MA-208112, November 2004.
+
+[4] A. M. Collier, A. C. Hindmarsh, R. Serban,and C. S. Woodward, "User 
+    Documentation for KINSOL v2.2.0," LLNL technical report UCRL-MA-208116, 
+    November 2004.
+
+
+D. Releases
+-----------
+
+v. 2.1.1 - May. 2005
+v. 2.1.0 - Apr. 2005
+v. 2.0.2 - Mar. 2005
+v. 2.0.1 - Jan. 2005
+v. 2.0   - Dec. 2004
+v. 1.0   - Jul. 2002 (first SUNDIALS release)
+v. 0.0   - Mar. 2002
+
+
+E. Revision History
+-------------------
+
+v. 2.1.0 (Apr. 2005) ---> v. 2.1.1 (May.2005)
+----------------------------------------------
+
+- Changes to data structures
+   - added N_VCloneEmpty to global vector operations table
+
+v. 2.0.2 (Mar. 2005) ---> v. 2.1.0 (Apr. 2005)
+----------------------------------------------
+
+- none
+
+v. 2.0.1 (Jan. 2005) ---> v. 2.0.2 (Mar. 2005)
+----------------------------------------------
+
+- Changes related to the build system
+   - fixed autoconf-related bug to allow configuration with the PGI Fortran compiler
+   - modified to use customized detection of the Fortran name mangling scheme 
+     (autoconf's AC_F77_WRAPPERS routine is problematic on some platforms)
+   - added --with-mpi-flags as a configure option to allow user to specify
+     MPI-specific flags
+   - updated Makefiles for Fortran examples to avoid C++ compiler errors (now use
+     CC and MPICC to link)
+
+v. 2.0 (Dec. 2004) ---> v. 2.0.1 (Jan. 2005)
+--------------------------------------------
+
+- Changes related to the build system
+   - changed order of compiler directives in header files to avoid compilation
+     errors when using a C++ compiler.
+
+v. 1.0 (Jul. 2002) ---> v. 2.0 (Dec. 2004)
+------------------------------------------
+
+- Changes to the generic NVECTOR module
+   - removed machEnv, redefined table of vector operations (now contained
+     in the N_Vector structure itself).
+   - all SUNDIALS functions create new N_Vector variables through cloning, using
+     an N_Vector passed by the user as a template.
+   - a particular NVECTOR implementation is supposed to provide user-callable 
+     constructor and destructor functions.
+   - removed from structure of vector operations the following functions:
+     N_VNew, N_VNew_S, N_VFree, N_VFree_S, N_VMake, N_VDispose, N_VGetData,
+     N_VSetData, N_VConstrProdPos, and N_VOneMask.
+   - added in structure of vector operations the following functions:
+     N_VClone, N_VDestroy, N_VSpace, N_VGetArrayPointer, N_VSetArrayPointer,
+     and N_VWrmsNormMask.
+   - Note that nvec_ser and nvec_par are now separate modules outside the 
+     shared SUNDIALS module.
+
+- Changes to the generic linear solvers
+   - in SPGMR, added a dummy N_Vector argument to be used as a template
+     for cloning.
+   - in SPGMR, removed N (problem dimension) from argument list of SpgmrMalloc.
+   - iterative.{c,h} replace iterativ.{c,h}
+   - modified constant names in iterative.h (preconditioner types are prefixed
+     with 'PREC_').
+   - changed numerical values for MODIFIED_GS (from 0 to 1) and CLASSICAL_GS
+     (from 1 to 2).
+
+- Changes to sundialsmath submodule
+   - replaced internal routine for estimation of unit roundoff with definition
+     of unit roundoff from float.h
+   - modified functions to call appropriate math routines given the precision 
+     level specified by the user.
+
+- Changes to sundialstypes submodule
+   - removed type 'integertype'.
+   - added definitions for 'BIG_REAL', 'SMALL_REAL', and 'UNIT_ROUNDOFF' using
+     values from float.h based on the precision.
+   - changed definition of macro RCONST to depend on precision.
+
+v 0.0 (Mar. 2002) ---> v. 1.0 (Jul. 2002)
+-----------------------------------------
+
+20020321  Defined and implemented generic NVECTOR module, and separate serial/
+          parallel NVECTOR modules, including serial/parallel F/C interfaces.
+          Modified dense and band backsolve routines to take real* type for
+          RHS and solution vector.
+20020329  Named the DenseMat, BandMat, and SpgmrMemRec structures.
+20020626  Changed type names to realtype, integertype, booleantype.
+          Renamed llnltypes and llnlmath files.
+
diff --git a/Win32/WinCVODE/sundials/shared/include/band.h b/Win32/WinCVODE/sundials/shared/include/band.h
new file mode 100644
index 0000000..1dbf98d
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/include/band.h
@@ -0,0 +1,606 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:47:33 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for a generic BAND linear solver
+ * package. There are two sets of band solver routines listed in
+ * this file: one set uses type BandMat defined below and the
+ * other set uses the type realtype ** for band matrix arguments.
+ * The two sets of band solver routines make it easy to work
+ * with two types of band matrices:
+ *
+ * (1) The BandMat type is intended for use with large
+ *     band matrices whose elements/columns may be stored in
+ *     non-contiguous memory locations or even distributed across
+ *     different process memory spaces. This type may be modified
+ *     to include such distribution information. If this is done,
+ *     then all the routines that use BandMat must be modified to
+ *     reflect the new data structure.
+ *
+ * (2) The set of routines that use realtype ** (and NOT the
+ *     BandMat type) is intended for use with small matrices
+ *     which can easily be allocated within a contiguous block of
+ *     memory for a single process.
+ *
+ * Routines that work with the type BandMat begin with "Band".
+ * The BandAllocMat function allocates a band matrix for use in
+ * the other matrix routines listed in this file. Matrix storage
+ * details are given in the documentation for the type BandMat.
+ * The BandAllocPiv function allocates memory for pivot
+ * information. The storage allocated by BandAllocMat and
+ * BandAllocPiv is deallocated by the routines BandFreeMat and
+ * BandFreePiv, respectively. The BandFactor and BandBacksolve
+ * routines perform the actual solution of a band linear system.
+ *
+ * Routines that work with realtype ** begin with "band" (except
+ * for the factor and solve routines which are called gbfa and
+ * gbsl, respectively). The underlying matrix storage is
+ * described in the documentation for bandalloc.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _BAND_H
+#define _BAND_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Type: BandMat
+ * -----------------------------------------------------------------
+ * The type BandMat is the type of a large (possibly distributed)
+ * band matrix. It is defined to be a pointer to a structure
+ * with the following fields:
+ *
+ * size is the number of columns (== number of rows)
+ *
+ * mu   is the upper bandwidth, 0 <= mu <= size-1
+ *
+ * ml   is the lower bandwidth, 0 <= ml <= size-1
+ *
+ * smu  is the storage upper bandwidth, mu <= smu <= size-1.
+ *      The BandFactor routine writes the LU factors
+ *      into the storage for A. The upper triangular factor U,
+ *      however, may have an upper bandwidth as big as
+ *      MIN(size-1,mu+ml) because of partial pivoting. The smu
+ *      field holds the upper bandwidth allocated for A.
+ *
+ * data is a two dimensional array used for component storage.
+ *      The elements of a band matrix of type BandMat are
+ *      stored columnwise (i.e. columns are stored one on top
+ *      of the other in memory). Only elements within the
+ *      specified bandwidths are stored.
+ *
+ * If we number rows and columns in the band matrix starting
+ * from 0, then
+ *
+ * data[0] is a pointer to (smu+ml+1)*size contiguous locations
+ *         which hold the elements within the band of A
+ *
+ * data[j] is a pointer to the uppermost element within the band
+ *         in the jth column. This pointer may be treated as
+ *         an array indexed from smu-mu (to access the
+ *         uppermost element within the band in the jth
+ *         column) to smu+ml (to access the lowest element
+ *         within the band in the jth column). (Indices from 0
+ *         to smu-mu-1 give access to extra storage elements
+ *         required by BandFactor.)
+ *
+ * data[j][i-j+smu] is the (i,j)th element, j-mu <= i <= j+ml.
+ *
+ * The macros below allow a user to access individual matrix
+ * elements without writing out explicit data structure
+ * references and without knowing too much about the underlying
+ * element storage. The only storage assumption needed is that
+ * elements are stored columnwise and that a pointer into the jth
+ * column of elements can be obtained via the BAND_COL macro. The
+ * BAND_COL_ELEM macro selects an element from a column which has
+ * already been isolated via BAND_COL. BAND_COL_ELEM allows the
+ * user to avoid the translation from the matrix location (i,j)
+ * to the index in the array returned by BAND_COL at which the
+ * (i,j)th element is stored. See the documentation for BAND_COL
+ * and BAND_COL_ELEM for usage details. Users should use these
+ * macros whenever possible.
+ * -----------------------------------------------------------------
+ */
+
+typedef struct _BandMat {
+  long int size;
+  long int mu, ml, smu;
+  realtype **data;
+} *BandMat;
+
+/* BandMat accessor macros */
+
+/*
+ * -----------------------------------------------------------------
+ * Macro : BAND_ELEM
+ * -----------------------------------------------------------------
+ * Usage : BAND_ELEM(A,i,j) = a_ij;  OR
+ *         a_ij = BAND_ELEM(A,i,j);
+ * -----------------------------------------------------------------
+ * BAND_ELEM(A,i,j) references the (i,j)th element of the
+ * N by N band matrix A, where 0 <= i,j <= N-1. The location
+ * (i,j) should further satisfy j-(A->mu) <= i <= j+(A->ml).
+ * -----------------------------------------------------------------
+ */
+
+#define BAND_ELEM(A,i,j) ((A->data)[j][i-j+(A->smu)])
+
+/*
+ * -----------------------------------------------------------------
+ * Macro : BAND_COL
+ * -----------------------------------------------------------------
+ * Usage : col_j = BAND_COL(A,j);
+ * -----------------------------------------------------------------
+ * BAND_COL(A,j) references the diagonal element of the jth
+ * column of the N by N band matrix A, 0 <= j <= N-1. The type of
+ * the expression BAND_COL(A,j) is realtype *. The pointer
+ * returned by the call BAND_COL(A,j) can be treated as an array
+ * which is indexed from -(A->mu) to (A->ml).
+ * -----------------------------------------------------------------
+ */
+
+#define BAND_COL(A,j) (((A->data)[j])+(A->smu))
+
+/*
+ * -----------------------------------------------------------------
+ * Macro : BAND_COL_ELEM
+ * -----------------------------------------------------------------
+ * Usage : col_j = BAND_COL(A,j);
+ *         BAND_COL_ELEM(col_j,i,j) = a_ij;  OR
+ *         a_ij = BAND_COL_ELEM(col_j,i,j);
+ * -----------------------------------------------------------------
+ * This macro references the (i,j)th entry of the band matrix A
+ * when used in conjunction with BAND_COL as shown above. The
+ * index (i,j) should satisfy j-(A->mu) <= i <= j+(A->ml).
+ * -----------------------------------------------------------------
+ */
+
+#define BAND_COL_ELEM(col_j,i,j) (col_j[i-j])
+
+/* Functions that use the BandMat representation for a band matrix */
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandAllocMat
+ * -----------------------------------------------------------------
+ * Usage : A = BandAllocMat(N, mu, ml, smu);
+ *         if (A == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * BandAllocMat allocates memory for an N by N band matrix with
+ * upper bandwidth mu, lower bandwidth ml, and storage upper
+ * bandwidth smu. Pass smu as follows depending on whether A will
+ * be factored by BandFactor:
+ *
+ * (1) Pass smu = mu if A will not be factored.
+ *
+ * (2) Pass smu = MIN(N-1,mu+ml) if A will be factored.
+ *
+ * BandAllocMat returns the storage allocated (type BandMat) or
+ * NULL if the request for matrix storage cannot be satisfied.
+ * See the documentation for the type BandMat for matrix storage
+ * details.
+ * -----------------------------------------------------------------
+ */
+
+BandMat BandAllocMat(long int N, long int mu, long int ml, 
+                     long int smu);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandAllocPiv
+ * -----------------------------------------------------------------
+ * Usage : p = BandAllocPiv(N);
+ *         if (p == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * BandAllocPiv allocates memory for pivot information to be
+ * filled in by the BandFactor routine during the factorization
+ * of an N by N band matrix. The underlying type for pivot
+ * information is an array of N integers and this routine returns
+ * the pointer to the memory it allocates. If the request for
+ * pivot storage cannot be satisfied, BandAllocPiv returns NULL.
+ * -----------------------------------------------------------------
+ */
+
+long int *BandAllocPiv(long int N);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandFactor
+ * -----------------------------------------------------------------
+ * Usage : ier = BandFactor(A, p);
+ *         if (ier != 0) ... A is singular
+ * -----------------------------------------------------------------
+ * BandFactor performs the LU factorization of the N by N band
+ * matrix A. This is done using standard Gaussian elimination
+ * with partial pivoting.
+ *
+ * A successful LU factorization leaves the "matrix" A and the
+ * pivot array p with the following information:
+ *
+ * (1) p[k] contains the row number of the pivot element chosen
+ *     at the beginning of elimination step k, k=0, 1, ..., N-1.
+ *
+ * (2) If the unique LU factorization of A is given by PA = LU,
+ *     where P is a permutation matrix, L is a lower triangular
+ *     matrix with all 1's on the diagonal, and U is an upper
+ *     triangular matrix, then the upper triangular part of A
+ *     (including its diagonal) contains U and the strictly lower
+ *     triangular part of A contains the multipliers, I-L.
+ *
+ * BandFactor returns 0 if successful. Otherwise it encountered
+ * a zero diagonal element during the factorization. In this case
+ * it returns the column index (numbered from one) at which
+ * it encountered the zero.
+ *
+ * Important Note: A must be allocated to accommodate the increase
+ * in upper bandwidth that occurs during factorization. If
+ * mathematically, A is a band matrix with upper bandwidth mu and
+ * lower bandwidth ml, then the upper triangular factor U can
+ * have upper bandwidth as big as smu = MIN(n-1,mu+ml). The lower
+ * triangular factor L has lower bandwidth ml. Allocate A with
+ * call A = BandAllocMat(N,mu,ml,smu), where mu, ml, and smu are
+ * as defined above. The user does not have to zero the "extra"
+ * storage allocated for the purpose of factorization. This will
+ * handled by the BandFactor routine.
+ * -----------------------------------------------------------------
+ */
+
+long int BandFactor(BandMat A, long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandBacksolve
+ * -----------------------------------------------------------------
+ * Usage : BandBacksolve(A, p, b);
+ * -----------------------------------------------------------------
+ * BandBacksolve solves the N-dimensional system A x = b using
+ * the LU factorization in A and the pivot information in p
+ * computed in BandFactor. The solution x is returned in b. This
+ * routine cannot fail if the corresponding call to BandFactor
+ * did not fail.
+ * -----------------------------------------------------------------
+ */
+
+void BandBacksolve(BandMat A, long int *p, realtype *b);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandZero
+ * -----------------------------------------------------------------
+ * Usage : BandZero(A);
+ * -----------------------------------------------------------------
+ * A(i,j) <- 0.0,    j-(A->mu) <= i <= j+(A->ml).
+ * -----------------------------------------------------------------
+ */
+
+void BandZero(BandMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandCopy
+ * -----------------------------------------------------------------
+ * Usage : BandCopy(A, B, copymu, copyml);
+ * -----------------------------------------------------------------
+ * BandCopy copies the submatrix with upper and lower bandwidths
+ * copymu, copyml of the N by N band matrix A into the N by N
+ * band matrix B.
+ * -----------------------------------------------------------------
+ */
+
+void BandCopy(BandMat A, BandMat B, long int copymu, long int copyml);
+
+/*
+ * -----------------------------------------------------------------
+ * Function: BandScale
+ * -----------------------------------------------------------------
+ * Usage : BandScale(c, A);
+ * -----------------------------------------------------------------
+ * A(i,j) <- c*A(i,j),   j-(A->mu) <= i <= j+(A->ml).
+ * -----------------------------------------------------------------
+ */
+
+void BandScale(realtype c, BandMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandAddI
+ * -----------------------------------------------------------------
+ * Usage : BandAddI(A);
+ * -----------------------------------------------------------------
+ * A(j,j) <- A(j,j)+1.0,   0 <= j <= (A->size)-1.
+ * -----------------------------------------------------------------
+ */
+
+void BandAddI(BandMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandFreeMat
+ * -----------------------------------------------------------------
+ * Usage : BandFreeMat(A);
+ * -----------------------------------------------------------------
+ * BandFreeMat frees the memory allocated by BandAllocMat for
+ * the band matrix A.
+ * -----------------------------------------------------------------
+ */
+
+void BandFreeMat(BandMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandFreePiv
+ * -----------------------------------------------------------------
+ * Usage : BandFreePiv(p);
+ * -----------------------------------------------------------------
+ * BandFreePiv frees the memory allocated by BandAllocPiv for
+ * the pivot information array p.
+ * -----------------------------------------------------------------
+ */
+
+void BandFreePiv(long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandPrint
+ * -----------------------------------------------------------------
+ * Usage : BandPrint(A);
+ * -----------------------------------------------------------------
+ * This routine prints the N by N band matrix A (upper and lower
+ * bandwidths A->mu and A->ml, respectively) to standard output
+ * as it would normally appear on paper. It is intended as a
+ * debugging tool with small values of N. The elements are
+ * printed using the %g/lg/Lg option. A blank line is printed
+ * before and after the matrix.
+ * -----------------------------------------------------------------
+ */
+
+void BandPrint(BandMat A);
+
+/* Functions that use the realtype ** representation for a band matrix */
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandalloc
+ * -----------------------------------------------------------------
+ * Usage : realtype **a;
+ *         a = bandalloc(n, smu, ml);
+ *         if (a == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * bandalloc(n, smu, ml) allocates storage for an n by n band
+ * matrix A with storage upper bandwidth smu and lower bandwidth
+ * ml. It returns a pointer to the newly allocated storage if
+ * successful. If the memory request cannot be satisfied, then
+ * bandalloc returns NULL. If, mathematically, A has upper and
+ * lower bandwidths mu and ml, respectively, then the value
+ * passed to bandalloc for smu may need to be greater than mu.
+ * The gbfa routine writes the LU factors into the storage (named
+ * "a" in the above usage documentation) for A (thus destroying
+ * the original elements of A). The upper triangular factor U,
+ * however, may have a larger upper bandwidth than the upper
+ * bandwidth mu of A. Thus some "extra" storage for A must be
+ * allocated if A is to be factored by gbfa. Pass smu as follows:
+ *
+ * (1) Pass smu = mu if A will not be factored.
+ *
+ * (2) Pass smu = MIN(n-1,mu+ml) if A will be factored.
+ *
+ * The underlying type of the band matrix returned is realtype**.
+ * If we allocate a band matrix A in realtype **a by
+ * a = bandalloc(n,smu,ml), then a[0] is a pointer to
+ * n * (smu + ml + 1) contiguous storage locations and a[j] is a
+ * pointer to the uppermost element in the storage for the jth
+ * column. The expression a[j][i-j+smu] references the (i,j)th
+ * element of A, where 0 <= i,j <= n-1 and j-mu <= i <= j+ml.
+ * (The elements a[j][0], a[j][1], ..., a[j][smu-mu-1] are used
+ * by gbfa and gbsl.)
+ * -----------------------------------------------------------------
+ */
+
+realtype **bandalloc(long int n, long int smu, long int ml);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandallocpiv
+ * -----------------------------------------------------------------
+ * Usage : long int *pivot;
+ *         pivot = bandallocpiv(n);
+ *         if (pivot == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * bandallocpiv(n) allocates an array of n integers. It returns a
+ * pointer to the first element in the array if successful. It
+ * returns NULL if the memory request could not be satisfied.
+ * -----------------------------------------------------------------
+ */
+
+long int *bandallocpiv(long int n);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : gbfa
+ * -----------------------------------------------------------------
+ * Usage : long int ier;
+ *         ier = gbfa(a,n,mu,ml,smu,p);
+ *         if (ier > 0) ... zero element encountered during
+ *                          the factorization
+ * -----------------------------------------------------------------
+ * gbfa(a,n,mu,ml,smu,p) factors the n by n band matrix A (upper
+ * and lower bandwidths mu and ml, storage upper bandwidth smu)
+ * stored in "a". It overwrites the elements of A with the LU
+ * factors and it keeps track of the pivot rows chosen in the
+ * pivot array p.
+ *
+ * A successful LU factorization leaves a and pivot array p with
+ * the following information:
+ *
+ * (1) p[k] contains the row number of the pivot element chosen
+ *     at the beginning of elimination step k, k=0, 1, ..., n-1.
+ *
+ * (2) If the unique LU factorization of A is given by PA = LU,
+ *     where P is a permutation matrix, L is a lower triangular
+ *     matrix with all 1's on the diagonal, and U is an upper
+ *     triangular matrix, then the upper triangular part of A
+ *     (including its diagonal) contains U and the strictly lower
+ *     triangular part of A contains the multipliers, I-L.
+ *
+ * gbfa returns 0 if successful. Otherwise it encountered a zero
+ * diagonal element during the factorization. In this case it
+ * returns the column index (numbered from one) at which it
+ * encountered the zero.
+ *
+ * IMPORTANT NOTE: Suppose A is a band matrix with upper
+ * bandwidth mu and lower bandwidth ml, then the upper triangular
+ * factor U can have upper bandwidth as big as MIN(n-1,mu+ml)
+ * because of partial pivoting. The lower triangular factor L has
+ * lower bandwidth ml. Thus, if A is to be factored and
+ * backsolved using gbfa and gbsl, then it should be allocated
+ * as a = bandalloc(n,smu,ml), where smu = MIN(n-1,mu+ml). The
+ * call to gbfa is ier = gbfa(a,n,mu,ml,smu,p). The corresponding
+ * call to gbsl is gbsl(a,n,smu,ml,p,b). The user does not need
+ * to zero the "extra" storage allocated for the purpose of
+ * factorization. This is handled by the gbfa routine. If A is
+ * not going to be factored and backsolved, then it can be
+ * allocated as a = bandalloc(n,smu,ml). In either case, all
+ * routines in this section use the parameter name smu for a
+ * parameter which must be the "storage upper bandwidth" which
+ * was passed to bandalloc.
+ * -----------------------------------------------------------------
+ */
+
+long int gbfa(realtype **a, long int n, long int mu, long int ml, 
+              long int smu, long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : gbsl
+ * -----------------------------------------------------------------
+ * Usage : realtype *b;
+ *         ier = gbfa(a,n,mu,ml,smu,p);
+ *         if (ier == 0) gbsl(a,n,smu,ml,p,b);
+ * -----------------------------------------------------------------
+ * gbsl(a,n,smu,ml,p,b) solves the n by n linear system
+ * Ax = b, where A is band matrix stored in "a" with storage
+ * upper bandwidth smu and lower bandwidth ml. It assumes that A
+ * has been LU factored and the pivot array p has been set by a
+ * successful call gbfa(a,n,mu,ml,smu,p). The solution x is
+ * written into the b array.
+ * -----------------------------------------------------------------
+ */
+
+void gbsl(realtype **a, long int n, long int smu, 
+          long int ml, long int *p, realtype *b);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandzero
+ * -----------------------------------------------------------------
+ * Usage : bandzero(a,n,mu,ml,smu);
+ * -----------------------------------------------------------------
+ * a(i,j) <- 0.0,   0 <= i,j <= n-1, j-mu <= i <= j+ml.
+ * -----------------------------------------------------------------
+ */
+
+void bandzero(realtype **a, long int n, long int mu, 
+              long int ml, long int smu);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandcopy
+ * -----------------------------------------------------------------
+ * Usage : bandcopy(a,b,n,a_smu,b_smu,copymu,copyml);
+ * -----------------------------------------------------------------
+ * b(i,j) <- a(i,j), 0 <= i,j <= n-1, j-copymu <= i <= j+copyml.
+ * -----------------------------------------------------------------
+ */
+
+void bandcopy(realtype **a, realtype **b, long int n, 
+              long int a_smu, long int b_smu,
+              long int copymu, long int copyml);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandscale
+ * -----------------------------------------------------------------
+ * Usage : bandscale(c,a,n,mu,ml);
+ * -----------------------------------------------------------------
+ * a(i,j) <- c*a(i,j),   0 <= i,j <= n-1, j-mu <= i <= j+ml.
+ * -----------------------------------------------------------------
+ */
+
+void bandscale(realtype c, realtype **a, long int n, 
+               long int mu, long int ml, long int smu);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandaddI
+ * -----------------------------------------------------------------
+ * Usage : bandaddI(a,n,smu);
+ * -----------------------------------------------------------------
+ * a(j,j) <- a(j,j)+1.0,   0 <= j <= n-1.
+ * -----------------------------------------------------------------
+ */
+
+void bandaddI(realtype **a, long int n, long int smu);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandfreepiv
+ * -----------------------------------------------------------------
+ * Usage : bandfreepiv(p);
+ * -----------------------------------------------------------------
+ * bandfreepiv(p) frees the pivot array p allocated by
+ * bandallocpiv.
+ * -----------------------------------------------------------------
+ */
+
+void bandfreepiv(long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandfree
+ * -----------------------------------------------------------------
+ * Usage : bandfree(a);
+ * -----------------------------------------------------------------
+ * bandfree(a) frees the band matrix a allocated by bandalloc.
+ * -----------------------------------------------------------------
+ */
+
+void bandfree(realtype **a);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandprint
+ * -----------------------------------------------------------------
+ * Usage : bandprint(a,n,mu,ml,smu);
+ * -----------------------------------------------------------------
+ * bandprint(a,n,mu,ml,smu) prints the n by n band matrix stored
+ * in a (with upper bandwidth mu and lower bandwidth ml) to
+ * standard output as it would normally appear on paper. It is
+ * intended as a debugging tool with small values of n. The
+ * elements are printed using the %g/lg/Lg option. A blank line
+ * is printed before and after the matrix.
+ * -----------------------------------------------------------------
+ */
+
+void bandprint(realtype **a, long int n, long int mu, long int ml, 
+               long int smu);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/shared/include/dense.h b/Win32/WinCVODE/sundials/shared/include/dense.h
new file mode 100644
index 0000000..a3c78ec
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/include/dense.h
@@ -0,0 +1,293 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:47:33 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for a generic DENSE linear solver
+ * package.  The routines listed in this file all use type
+ * DenseMat, defined below, for matrices.  These routines in turn
+ * call routines in the smalldense.h/smalldense.c module, which
+ * use the type realtype** for matrices.  This separation allows
+ * for possible modifications in which matrices of type DenseMat
+ * may not be stored contiguously, while small matrices can still
+ * be treated with the routines in smalldense.
+ *
+ * Routines that work with the type DenseMat begin with "Dense".
+ * The DenseAllocMat function allocates a dense matrix for use in
+ * the other DenseMat routines listed in this file. Matrix
+ * storage details are given in the documentation for the type
+ * DenseMat. The DenseAllocPiv function allocates memory for
+ * pivot information. The storage allocated by DenseAllocMat and
+ * DenseAllocPiv is deallocated by the routines DenseFreeMat and
+ * DenseFreePiv, respectively. The DenseFactor and DenseBacksolve
+ * routines perform the actual solution of a dense linear system.
+ *
+ * Routines that work with realtype** begin with "den" (except for
+ * the factor and solve routines which are called gefa and gesl,
+ * respectively). The underlying matrix storage is described in
+ * the documentation for denalloc in smalldense.h
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _DENSE_H
+#define _DENSE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+#include "smalldense.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Type : DenseMat
+ * -----------------------------------------------------------------
+ * The type DenseMat is defined to be a pointer to a structure
+ * with a size and a data field. The size field indicates the
+ * number of columns (== number of rows) of a dense matrix, while
+ * the data field is a two dimensional array used for component
+ * storage. The elements of a dense matrix are stored columnwise
+ * (i.e columns are stored one on top of the other in memory). If
+ * A is of type DenseMat, then the (i,j)th element of A (with
+ * 0 <= i,j <= size-1) is given by the expression (A->data)[j][i]
+ * or by the expression (A->data)[0][j*n+i]. The macros below
+ * allow a user to access efficiently individual matrix
+ * elements without writing out explicit data structure
+ * references and without knowing too much about the underlying
+ * element storage. The only storage assumption needed is that
+ * elements are stored columnwise and that a pointer to the jth
+ * column of elements can be obtained via the DENSE_COL macro.
+ * Users should use these macros whenever possible.
+ * -----------------------------------------------------------------
+ */
+
+typedef struct _DenseMat {
+  long int size;
+  realtype **data;
+} *DenseMat;
+
+/* DenseMat accessor macros */
+
+/*
+ * -----------------------------------------------------------------
+ * Macro : DENSE_ELEM
+ * -----------------------------------------------------------------
+ * Usage : DENSE_ELEM(A,i,j) = a_ij;  OR
+ *         a_ij = DENSE_ELEM(A,i,j);
+ * -----------------------------------------------------------------
+ * DENSE_ELEM(A,i,j) references the (i,j)th element of the N by N
+ * DenseMat A, 0 <= i,j <= N-1.
+ * -----------------------------------------------------------------
+ */
+
+#define DENSE_ELEM(A,i,j) ((A->data)[j][i])
+
+/*
+ * -----------------------------------------------------------------
+ * Macro : DENSE_COL
+ * -----------------------------------------------------------------
+ * Usage : col_j = DENSE_COL(A,j);
+ * -----------------------------------------------------------------
+ * DENSE_COL(A,j) references the jth column of the N by N
+ * DenseMat A, 0 <= j <= N-1. The type of the expression
+ * DENSE_COL(A,j) is realtype *. After the assignment in the usage
+ * above, col_j may be treated as an array indexed from 0 to N-1.
+ * The (i,j)th element of A is referenced by col_j[i].
+ * -----------------------------------------------------------------
+ */
+
+#define DENSE_COL(A,j) ((A->data)[j])
+
+/* Functions that use the DenseMat representation for a dense matrix */
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseAllocMat
+ * -----------------------------------------------------------------
+ * Usage : A = DenseAllocMat(N);
+ *         if (A == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * DenseAllocMat allocates memory for an N by N dense matrix and
+ * returns the storage allocated (type DenseMat). DenseAllocMat
+ * returns NULL if the request for matrix storage cannot be
+ * satisfied. See the above documentation for the type DenseMat
+ * for matrix storage details.
+ * -----------------------------------------------------------------
+ */
+
+DenseMat DenseAllocMat(long int N);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseAllocPiv
+ * -----------------------------------------------------------------
+ * Usage : p = DenseAllocPiv(N);
+ *         if (p == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * DenseAllocPiv allocates memory for pivot information to be
+ * filled in by the DenseFactor routine during the factorization
+ * of an N by N dense matrix. The underlying type for pivot
+ * information is an array of N integers and this routine returns
+ * the pointer to the memory it allocates. If the request for
+ * pivot storage cannot be satisfied, DenseAllocPiv returns NULL.
+ * -----------------------------------------------------------------
+ */
+
+long int *DenseAllocPiv(long int N);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseFactor
+ * -----------------------------------------------------------------
+ * Usage : ier = DenseFactor(A, p);
+ *         if (ier != 0) ... A is singular
+ * -----------------------------------------------------------------
+ * DenseFactor performs the LU factorization of the N by N dense
+ * matrix A. This is done using standard Gaussian elimination
+ * with partial pivoting.
+ *
+ * A successful LU factorization leaves the matrix A and the
+ * pivot array p with the following information:
+ *
+ * (1) p[k] contains the row number of the pivot element chosen
+ *     at the beginning of elimination step k, k=0, 1, ..., N-1.
+ *
+ * (2) If the unique LU factorization of A is given by PA = LU,
+ *     where P is a permutation matrix, L is a lower triangular
+ *     matrix with all 1's on the diagonal, and U is an upper
+ *     triangular matrix, then the upper triangular part of A
+ *     (including its diagonal) contains U and the strictly lower
+ *     triangular part of A contains the multipliers, I-L.
+ *
+ * DenseFactor returns 0 if successful. Otherwise it encountered
+ * a zero diagonal element during the factorization. In this case
+ * it returns the column index (numbered from one) at which
+ * it encountered the zero.
+ * -----------------------------------------------------------------
+ */
+
+long int DenseFactor(DenseMat A, long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseBacksolve
+ * -----------------------------------------------------------------
+ * Usage : DenseBacksolve(A, p, b);
+ * -----------------------------------------------------------------
+ * DenseBacksolve solves the N-dimensional system A x = b using
+ * the LU factorization in A and the pivot information in p
+ * computed in DenseFactor. The solution x is returned in b. This
+ * routine cannot fail if the corresponding call to DenseFactor
+ * did not fail.
+ * -----------------------------------------------------------------
+ */
+
+void DenseBacksolve(DenseMat A, long int *p, realtype *b);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseZero
+ * -----------------------------------------------------------------
+ * Usage : DenseZero(A);
+ * -----------------------------------------------------------------
+ * DenseZero sets all the elements of the N by N matrix A to 0.0.
+ * -----------------------------------------------------------------
+ */
+
+void DenseZero(DenseMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseCopy
+ * -----------------------------------------------------------------
+ * Usage : DenseCopy(A, B);
+ * -----------------------------------------------------------------
+ * DenseCopy copies the contents of the N by N matrix A into the
+ * N by N matrix B.
+ * -----------------------------------------------------------------
+ */
+
+void DenseCopy(DenseMat A, DenseMat B);
+
+/*
+ * -----------------------------------------------------------------
+ * Function: DenseScale
+ * -----------------------------------------------------------------
+ * Usage : DenseScale(c, A);
+ * -----------------------------------------------------------------
+ * DenseScale scales the elements of the N by N matrix A by the
+ * constant c and stores the result back in A.
+ * -----------------------------------------------------------------
+ */
+
+void DenseScale(realtype c, DenseMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseAddI
+ * -----------------------------------------------------------------
+ * Usage : DenseAddI(A);
+ * -----------------------------------------------------------------
+ * DenseAddI adds the identity matrix to A and stores the result
+ * back in A.
+ * -----------------------------------------------------------------
+ */
+
+void DenseAddI(DenseMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseFreeMat
+ * -----------------------------------------------------------------
+ * Usage : DenseFreeMat(A);
+ * -----------------------------------------------------------------
+ * DenseFreeMat frees the memory allocated by DenseAllocMat for
+ * the N by N matrix A.
+ * -----------------------------------------------------------------
+ */
+
+void DenseFreeMat(DenseMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseFreePiv
+ * -----------------------------------------------------------------
+ * Usage : DenseFreePiv(p);
+ * -----------------------------------------------------------------
+ * DenseFreePiv frees the memory allocated by DenseAllocPiv for
+ * the pivot information array p.
+ * -----------------------------------------------------------------
+ */
+
+void DenseFreePiv(long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DensePrint
+ * -----------------------------------------------------------------
+ * Usage : DensePrint(A);
+ * -----------------------------------------------------------------
+ * This routine prints the N by N dense matrix A to standard
+ * output as it would normally appear on paper. It is intended
+ * as a debugging tool with small values of N. The elements are
+ * printed using the %g/lg/Lg option. A blank line is printed
+ * before and after the matrix.
+ * -----------------------------------------------------------------
+ */
+
+void DensePrint(DenseMat A);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/shared/include/iterative.h b/Win32/WinCVODE/sundials/shared/include/iterative.h
new file mode 100644
index 0000000..62268d3
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/include/iterative.h
@@ -0,0 +1,242 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:47:33 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen and Alan C. Hindmarsh @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This header file contains declarations intended for use by
+ * generic iterative solvers of Ax = b. The enumeration gives
+ * symbolic names for the type  of preconditioning to be used.
+ * The function type declarations give the prototypes for the
+ * functions to be called within an iterative linear solver, that
+ * are responsible for
+ *    multiplying A by a given vector v (ATimesFn), and
+ *    solving the preconditioner equation Pz = r (PSolveFn).
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _ITERATIVE_H
+#define _ITERATIVE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+#include "nvector.h"
+
+/*
+ * -----------------------------------------------------------------
+ * enum : types of preconditioning                                
+ * -----------------------------------------------------------------
+ * PREC_NONE  : The iterative linear solver should not use             
+ *              preconditioning.                                       
+ *                                                                
+ * PREC_LEFT  : The iterative linear solver uses preconditioning on    
+ *              the left only.                                         
+ *                                                                
+ * PREC_RIGHT : The iterative linear solver uses preconditioning on    
+ *              the right only.                                        
+ *                                                                
+ * PREC_BOTH  : The iterative linear solver uses preconditioning on    
+ *              both the left and the right.                           
+ * -----------------------------------------------------------------
+ */
+
+enum { PREC_NONE, PREC_LEFT, PREC_RIGHT, PREC_BOTH };
+
+/*
+ * -----------------------------------------------------------------
+ * enum : types of Gram-Schmidt routines                          
+ * -----------------------------------------------------------------
+ * MODIFIED_GS  : The iterative solver uses the modified          
+ *                Gram-Schmidt routine ModifiedGS listed in this  
+ *                file.                                           
+ *                                                                
+ * CLASSICAL_GS : The iterative solver uses the classical         
+ *                Gram-Schmidt routine ClassicalGS listed in this 
+ *                file.                                           
+ * -----------------------------------------------------------------
+ */
+
+enum { MODIFIED_GS = 1, CLASSICAL_GS = 2 };
+
+/*
+ * -----------------------------------------------------------------
+ * Type: ATimesFn                                                 
+ * -----------------------------------------------------------------
+ * An ATimesFn multiplies Av and stores the result in z. The      
+ * caller is responsible for allocating memory for the z vector.  
+ * The parameter A_data is a pointer to any information about A   
+ * which the function needs in order to do its job. The vector v  
+ * is unchanged. An ATimesFn returns 0 if successful and a        
+ * non-zero value if unsuccessful.                                
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*ATimesFn)(void *A_data, N_Vector v, N_Vector z);
+
+/*
+ * -----------------------------------------------------------------
+ * Type: PSolveFn                                                 
+ * -----------------------------------------------------------------
+ * A PSolveFn solves the preconditioner equation Pz = r for the   
+ * vector z. The caller is responsible for allocating memory for  
+ * the z vector. The parameter P_data is a pointer to any         
+ * information about P which the function needs in order to do    
+ * its job. The parameter lr is input, and indicates whether P    
+ * is to be taken as the left preconditioner or the right         
+ * preconditioner: lr = 1 for left and lr = 2 for right.          
+ * If preconditioning is on one side only, lr can be ignored.     
+ * The vector r is unchanged.                                     
+ * A PSolveFn returns 0 if successful and a non-zero value if     
+ * unsuccessful.  On a failure, a negative return value indicates 
+ * an unrecoverable condition, while a positive value indicates   
+ * a recoverable one, in which the calling routine may reattempt  
+ * the solution after updating preconditioner data.               
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*PSolveFn)(void *P_data, N_Vector r, N_Vector z, int lr);
+
+/*
+ * -----------------------------------------------------------------
+ * Function: ModifiedGS                                           
+ * -----------------------------------------------------------------
+ * ModifiedGS performs a modified Gram-Schmidt orthogonalization  
+ * of the N_Vector v[k] against the p unit N_Vectors at           
+ * v[k-1], v[k-2], ..., v[k-p].                                   
+ *                                                                
+ * v is an array of (k+1) N_Vectors v[i], i=0, 1, ..., k.         
+ * v[k-1], v[k-2], ..., v[k-p] are assumed to have L2-norm        
+ * equal to 1.                                                    
+ *                                                                
+ * h is the output k by k Hessenberg matrix of inner products.    
+ * This matrix must be allocated row-wise so that the (i,j)th     
+ * entry is h[i][j]. The inner products (v[i],v[k]),              
+ * i=i0, i0+1, ..., k-1, are stored at h[i][k-1]. Here            
+ * i0=MAX(0,k-p).                                                 
+ *                                                                
+ * k is the index of the vector in the v array that needs to be   
+ * orthogonalized against previous vectors in the v array.        
+ *                                                                
+ * p is the number of previous vectors in the v array against     
+ * which v[k] is to be orthogonalized.                            
+ *                                                                
+ * new_vk_norm is a pointer to memory allocated by the caller to  
+ * hold the Euclidean norm of the orthogonalized vector v[k].     
+ *                                                                
+ * If (k-p) < 0, then ModifiedGS uses p=k. The orthogonalized     
+ * v[k] is NOT normalized and is stored over the old v[k]. Once   
+ * the orthogonalization has been performed, the Euclidean norm   
+ * of v[k] is stored in (*new_vk_norm).                           
+ *                                                                
+ * ModifiedGS returns 0 to indicate success. It cannot fail.      
+ * -----------------------------------------------------------------
+ */                                                                
+
+int ModifiedGS(N_Vector *v, realtype **h, int k, int p, 
+               realtype *new_vk_norm);
+
+/*
+ * -----------------------------------------------------------------
+ * Function: ClassicalGS                                          
+ * -----------------------------------------------------------------
+ * ClassicalGS performs a classical Gram-Schmidt                  
+ * orthogonalization of the N_Vector v[k] against the p unit      
+ * N_Vectors at v[k-1], v[k-2], ..., v[k-p]. The parameters v, h, 
+ * k, p, and new_vk_norm are as described in the documentation    
+ * for ModifiedGS.                                                
+ *                                                                
+ * temp is an N_Vector which can be used as workspace by the      
+ * ClassicalGS routine.                                           
+ *                                                                
+ * s is a length k array of realtype which can be used as         
+ * workspace by the ClassicalGS routine.                          
+ *
+ * ClassicalGS returns 0 to indicate success. It cannot fail.     
+ * -----------------------------------------------------------------
+ */
+
+int ClassicalGS(N_Vector *v, realtype **h, int k, int p, 
+                realtype *new_vk_norm, N_Vector temp, realtype *s);
+
+/*
+ * -----------------------------------------------------------------
+ * Function: QRfact                                               
+ * -----------------------------------------------------------------
+ * QRfact performs a QR factorization of the Hessenberg matrix H. 
+ *                                                                
+ * n is the problem size; the matrix H is (n+1) by n.             
+ *                                                                
+ * h is the (n+1) by n Hessenberg matrix H to be factored. It is  
+ * stored row-wise.                                               
+ *                                                                
+ * q is an array of length 2*n containing the Givens rotations    
+ * computed by this function. A Givens rotation has the form:     
+ * | c  -s |                                                      
+ * | s   c |.                                                     
+ * The components of the Givens rotations are stored in q as      
+ * (c, s, c, s, ..., c, s).                                       
+ *                                                                
+ * job is a control flag. If job==0, then a new QR factorization  
+ * is performed. If job!=0, then it is assumed that the first     
+ * n-1 columns of h have already been factored and only the last  
+ * column needs to be updated.                                    
+ *                                                                
+ * QRfact returns 0 if successful. If a zero is encountered on    
+ * the diagonal of the triangular factor R, then QRfact returns   
+ * the equation number of the zero entry, where the equations are 
+ * numbered from 1, not 0. If QRsol is subsequently called in     
+ * this situation, it will return an error because it could not   
+ * divide by the zero diagonal entry.                             
+ * -----------------------------------------------------------------
+ */                                                                
+
+int QRfact(int n, realtype **h, realtype *q, int job);
+
+/*                                                                
+ * -----------------------------------------------------------------
+ * Function: QRsol                                                
+ * -----------------------------------------------------------------
+ * QRsol solves the linear least squares problem                  
+ *                                                                
+ * min (b - H*x, b - H*x), x in R^n,                              
+ *                                                                
+ * where H is a Hessenberg matrix, and b is in R^(n+1).           
+ * It uses the QR factors of H computed by QRfact.                
+ *                                                                
+ * n is the problem size; the matrix H is (n+1) by n.             
+ *                                                                
+ * h is a matrix (computed by QRfact) containing the upper        
+ * triangular factor R of the original Hessenberg matrix H.       
+ *                                                                
+ * q is an array of length 2*n (computed by QRfact) containing    
+ * the Givens rotations used to factor H.                         
+ *                                                                
+ * b is the (n+1)-vector appearing in the least squares problem   
+ * above.                                                         
+ *                                                                
+ * On return, b contains the solution x of the least squares      
+ * problem, if QRsol was successful.                              
+ *                                                                
+ * QRsol returns a 0 if successful.  Otherwise, a zero was        
+ * encountered on the diagonal of the triangular factor R.        
+ * In this case, QRsol returns the equation number (numbered      
+ * from 1, not 0) of the zero entry.                              
+ * -----------------------------------------------------------------
+ */                                                                
+
+int QRsol(int n, realtype **h, realtype *q, realtype *b);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/shared/include/nvector.h b/Win32/WinCVODE/sundials/shared/include/nvector.h
new file mode 100644
index 0000000..650db5f
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/include/nvector.h
@@ -0,0 +1,373 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:47:33 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Radu Serban and Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for a generic NVECTOR package.
+ * It defines the N_Vector structure (_generic_N_Vector) which
+ * contains the following fields:
+ *   - an implementation-dependent 'content' field which contains
+ *     the description and actual data of the vector
+ *   - an 'ops' filed which contains a structure listing operations
+ *     acting on such vectors
+ *
+ * Part I of this file contains type declarations for the
+ * _generic_N_Vector and _generic_N_Vector_Ops structures, as well
+ * as references to pointers to such structures (N_Vector).
+ *
+ * Part II of this file contains the prototypes for the vector
+ * functions which operate on N_Vector.
+ *
+ * At a minimum, a particular implementation of an NVECTOR must
+ * do the following:
+ *  - specify the 'content' field of N_Vector,
+ *  - implement the operations on those N_Vectors,
+ *  - provide a constructor routine for new vectors
+ *
+ * Additionally, an NVECTOR implementation may provide the following:
+ *  - macros to access the underlying N_Vector data
+ *  - a constructor for an array of N_Vectors
+ *  - a constructor for an empty N_Vector (i.e., a new N_Vector with
+ *    a NULL data pointer).
+ *  - a routine to print the content of an N_Vector
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _NVECTOR_H
+#define _NVECTOR_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Generic definition of N_Vector
+ * -----------------------------------------------------------------
+ */
+
+/* Forward reference for pointer to N_Vector_Ops object */
+typedef struct _generic_N_Vector_Ops *N_Vector_Ops;
+
+/* Forward reference for pointer to N_Vector object */
+typedef struct _generic_N_Vector *N_Vector;
+
+/* Define array of N_Vectors */
+typedef N_Vector *N_Vector_S;
+
+/* Structure containing function pointers to vector operations  */  
+struct _generic_N_Vector_Ops {
+  N_Vector    (*nvclone)(N_Vector);
+  N_Vector    (*nvcloneempty)(N_Vector);
+  void        (*nvdestroy)(N_Vector);
+  void        (*nvspace)(N_Vector, long int *, long int *);
+  realtype*   (*nvgetarraypointer)(N_Vector);
+  void        (*nvsetarraypointer)(realtype *, N_Vector);
+  void        (*nvlinearsum)(realtype, N_Vector, realtype, N_Vector, N_Vector); 
+  void        (*nvconst)(realtype, N_Vector);
+  void        (*nvprod)(N_Vector, N_Vector, N_Vector);
+  void        (*nvdiv)(N_Vector, N_Vector, N_Vector);
+  void        (*nvscale)(realtype, N_Vector, N_Vector);
+  void        (*nvabs)(N_Vector, N_Vector);
+  void        (*nvinv)(N_Vector, N_Vector);
+  void        (*nvaddconst)(N_Vector, realtype, N_Vector);
+  realtype    (*nvdotprod)(N_Vector, N_Vector);
+  realtype    (*nvmaxnorm)(N_Vector);
+  realtype    (*nvwrmsnorm)(N_Vector, N_Vector);
+  realtype    (*nvwrmsnormmask)(N_Vector, N_Vector, N_Vector);
+  realtype    (*nvmin)(N_Vector);
+  realtype    (*nvwl2norm)(N_Vector, N_Vector);
+  realtype    (*nvl1norm)(N_Vector);
+  void        (*nvcompare)(realtype, N_Vector, N_Vector);
+  booleantype (*nvinvtest)(N_Vector, N_Vector);
+  booleantype (*nvconstrmask)(N_Vector, N_Vector, N_Vector);
+  realtype    (*nvminquotient)(N_Vector, N_Vector);
+};
+  
+/*
+ * -----------------------------------------------------------------
+ * A vector is a structure with an implementation-dependent
+ * 'content' field, and a pointer to a structure of vector
+ * operations corresponding to that implementation.
+ * -----------------------------------------------------------------
+ */
+
+struct _generic_N_Vector {
+  void *content;
+  struct _generic_N_Vector_Ops *ops;
+};
+  
+/*
+ * -----------------------------------------------------------------
+ * Functions exported by NVECTOR module
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * N_VClone
+ *   Creates a new vector of the same type as an existing vector.
+ *   It does not copy the vector, but rather allocates storage for
+ *   the new vector.
+ *
+ * N_VCloneEmpty
+ *   Creates a new vector of the same type as an existing vector,
+ *   but does not allocate storage.
+ *
+ * N_VDestroy
+ *   Destroys a vector created with N_VClone.
+ *
+ * N_VSpace
+ *   Returns space requirements for one N_Vector (type 'realtype' in
+ *   lrw and type 'long int' in liw).
+ *
+ * N_VGetArrayPointer
+ *   Returns a pointer to the data component of the given N_Vector.
+ *   NOTE: This function assumes that the internal data is stored
+ *   as a contiguous 'realtype' array. This routine is only used in
+ *   the solver-specific interfaces to the dense and banded linear
+ *   solvers, as well as the interfaces to  the banded preconditioners
+ *   distributed with SUNDIALS.
+ *   
+ * N_VSetArrayPointer
+ *   Overwrites the data field in the given N_Vector with a user-supplied
+ *   array of type 'realtype'.
+ *   NOTE: This function assumes that the internal data is stored
+ *   as a contiguous 'realtype' array. This routine is only used in
+ *   the interfaces to the dense linear solver.
+ *
+ * N_VLinearSum
+ *   Performs the operation z = a*x + b*y
+ *
+ * N_VConst
+ *   Performs the operation z[i] = c for i = 0, 1, ..., N-1
+ *
+ * N_VProd
+ *   Performs the operation z[i] = x[i]*y[i] for i = 0, 1, ..., N-1
+ *
+ * N_VDiv
+ *   Performs the operation z[i] = x[i]/y[i] for i = 0, 1, ..., N-1
+ *
+ * N_VScale
+ *   Performs the operation z = c*x
+ *
+ * N_VAbs
+ *   Performs the operation z[i] = |x[i]| for i = 0, 1, ..., N-1
+ *
+ * N_VInv
+ *   Performs the operation z[i] = 1/x[i] for i = 0, 1, ..., N-1
+ *   This routine does not check for division by 0. It should be
+ *   called only with an N_Vector x which is guaranteed to have
+ *   all non-zero components.
+ *
+ * N_VAddConst
+ *   Performs the operation z[i] = x[i] + b   for i = 0, 1, ..., N-1
+ *
+ * N_VDotProd
+ *   Returns the dot product of two vectors:
+ *         sum (i = 0 to N-1) {x[i]*y[i]}
+ *
+ * N_VMaxNorm
+ *   Returns the maximum norm of x:
+ *         max (i = 0 to N-1) ABS(x[i])
+ *
+ * N_VWrmsNorm
+ *   Returns the weighted root mean square norm of x with weight 
+ *   vector w:
+ *         sqrt [(sum (i = 0 to N-1) {(x[i]*w[i])^2})/N]
+ *
+ * N_VWrmsNormMask
+ *   Returns the weighted root mean square norm of x with weight
+ *   vector w, masked by the elements of id:
+ *         sqrt [(sum (i = 0 to N-1) {(x[i]*w[i]*msk[i])^2})/N]
+ *   where msk[i] = 1.0 if id[i] > 0 and
+ *         msk[i] = 0.0 if id[i] < 0
+ *
+ * N_VMin
+ *   Returns the smallest element of x:
+ *         min (i = 0 to N-1) x[i]
+ *
+ * N_VWL2Norm
+ *   Returns the weighted Euclidean L2 norm of x with weight 
+ *   vector w:
+ *         sqrt [(sum (i = 0 to N-1) {(x[i]*w[i])^2})]
+ *
+ * N_VL1Norm
+ *   Returns the L1 norm of x:
+ *         sum (i = 0 to N-1) {ABS(x[i])}
+ *
+ * N_VCompare
+ *   Performs the operation
+ *          z[i] = 1.0 if ABS(x[i]) >= c   i = 0, 1, ..., N-1
+ *                 0.0 otherwise
+ *
+ * N_VInvTest
+ *   Performs the operation z[i] = 1/x[i] with a test for 
+ *   x[i] == 0.0 before inverting x[i].
+ *   This routine returns TRUE if all components of x are non-zero 
+ *   (successful inversion) and returns FALSE otherwise.
+ *
+ * N_VConstrMask
+ *   Performs the operation : 
+ *       m[i] = 1.0 if constraint test fails for x[i]
+ *       m[i] = 0.0 if constraint test passes for x[i]
+ *   where the constraint tests are as follows:
+ *      If c[i] = +2.0, then x[i] must be >  0.0.
+ *      If c[i] = +1.0, then x[i] must be >= 0.0.
+ *      If c[i] = -1.0, then x[i] must be <= 0.0.
+ *      If c[i] = -2.0, then x[i] must be <  0.0.
+ *   This routine returns a boolean FALSE if any element failed
+ *   the constraint test, TRUE if all passed. It also sets a
+ *   mask vector m, with elements equal to 1.0 where the
+ *   corresponding constraint test failed, and equal to 0.0
+ *   where the constraint test passed.
+ *   This routine is specialized in that it is used only for
+ *   constraint checking.
+ *
+ * N_VMinQuotient
+ *   Performs the operation : 
+ *       minq  = min ( num[i]/denom[i]) over all i such that   
+ *       denom[i] != 0.
+ *   This routine returns the minimum of the quotients obtained
+ *   by term-wise dividing num[i] by denom[i]. A zero element
+ *   in denom will be skipped. If no such quotients are found,
+ *   then the large value BIG_REAL is returned.
+ *
+ * -----------------------------------------------------------------
+ *
+ * The following table lists the vector functions used by
+ * different modules in SUNDIALS. The symbols in the table
+ * have the following meaning:
+ * S    -  called by the solver;
+ * D    -  called by the dense linear solver module
+ * B    -  called by the band linear solver module
+ * Di   -  called by the diagonal linear solver module
+ * I    -  called by the iterative linear solver module
+ * BP   -  called by the band preconditioner module
+ * BBDP -  called by the band-block diagonal preconditioner module
+ * F    -  called by the Fortran-to-C interface
+ *
+ *                  ------------------------------------------------
+ *                                         MODULES
+ * NVECTOR          ------------------------------------------------
+ * FUNCTIONS          CVODE/CVODES          IDA             KINSOL
+ * -----------------------------------------------------------------
+ * N_VClone           S Di I                S I BBDP        S I BBDP
+ * -----------------------------------------------------------------
+ * N_VCloneEmpty
+ * -----------------------------------------------------------------
+ * N_VDestroy         S Di I                S I BBDP        S I BBDP
+ * -----------------------------------------------------------------
+ * N_VSpace           S                     S               S
+ * -----------------------------------------------------------------
+ * N_VGetArrayPointer D B BP BBDP F         D B BBDP        BBDP F
+ * -----------------------------------------------------------------
+ * N_VSetArrayPointer D F                   D               F
+ * -----------------------------------------------------------------
+ * N_VLinearSum       S D Di I              S D I           S I
+ * -----------------------------------------------------------------
+ * N_VConst           S I                   S I             I
+ * -----------------------------------------------------------------
+ * N_VProd            S Di I                S I             S I
+ * -----------------------------------------------------------------
+ * N_VDiv             S Di I                S I             S I
+ * -----------------------------------------------------------------
+ * N_VScale           S D B Di I BP BBDP    S D B I BBDP    S I BBDP
+ * -----------------------------------------------------------------
+ * N_VAbs             S                     S               S
+ * -----------------------------------------------------------------
+ * N_VInv             S Di                  S               S
+ * -----------------------------------------------------------------
+ * N_VAddConst        S Di                  S
+ * -----------------------------------------------------------------
+ * N_VDotProd         I                     I               I
+ * -----------------------------------------------------------------
+ * N_VMaxNorm         S                     S               S
+ * -----------------------------------------------------------------
+ * N_VWrmsNorm        S D B I BP BBDP       S
+ * -----------------------------------------------------------------
+ * N_VWrmsNormMask                          S
+ * -----------------------------------------------------------------
+ * N_VMin             S                     S               S
+ * -----------------------------------------------------------------
+ * N_VWL2Norm                                               S I
+ * -----------------------------------------------------------------
+ * N_VL1Norm                                                I
+ * -----------------------------------------------------------------
+ * N_VCompare         Di                    S
+ * -----------------------------------------------------------------
+ * N_VInvTest         Di
+ * -----------------------------------------------------------------
+ * N_VConstrMask                            S               S
+ * -----------------------------------------------------------------
+ * N_VMinQuotient                           S               S
+ * -----------------------------------------------------------------
+ */
+
+N_Vector N_VClone(N_Vector w);
+N_Vector N_VCloneEmpty(N_Vector w);
+void N_VDestroy(N_Vector v);
+void N_VSpace(N_Vector v, long int *lrw, long int *liw);
+realtype *N_VGetArrayPointer(N_Vector v);
+void N_VSetArrayPointer(realtype *v_data, N_Vector v);
+void N_VLinearSum(realtype a, N_Vector x, realtype b, N_Vector y, N_Vector z);
+void N_VConst(realtype c, N_Vector z);
+void N_VProd(N_Vector x, N_Vector y, N_Vector z);
+void N_VDiv(N_Vector x, N_Vector y, N_Vector z);
+void N_VScale(realtype c, N_Vector x, N_Vector z);
+void N_VAbs(N_Vector x, N_Vector z);
+void N_VInv(N_Vector x, N_Vector z);
+void N_VAddConst(N_Vector x, realtype b, N_Vector z);
+realtype N_VDotProd(N_Vector x, N_Vector y);
+realtype N_VMaxNorm(N_Vector x);
+realtype N_VWrmsNorm(N_Vector x, N_Vector w);
+realtype N_VWrmsNormMask(N_Vector x, N_Vector w, N_Vector id);
+realtype N_VMin(N_Vector x);
+realtype N_VWL2Norm(N_Vector x, N_Vector w);
+realtype N_VL1Norm(N_Vector x);
+void N_VCompare(realtype c, N_Vector x, N_Vector z);
+booleantype N_VInvTest(N_Vector x, N_Vector z);
+booleantype N_VConstrMask(N_Vector c, N_Vector x, N_Vector m);
+realtype N_VMinQuotient(N_Vector num, N_Vector denom);
+
+/*
+ * -----------------------------------------------------------------
+ * Additional functions exported by NVECTOR module
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * N_VCloneEmptyVectorArray
+ *   Creates (by cloning 'w') an array of 'count' empty N_Vectors 
+ *
+ * N_VCloneVectorArray
+ *   Creates (by cloning 'w') an array of 'count' N_Vectors 
+ *
+ * N_VDestroyVectorArray
+ *   Frees memory for an array of 'count' N_Vectors that was
+ *   created by a call to N_VCloneVectorArray
+ *
+ * These functions are used by the SPGMR iterative linear solver 
+ * module and by the CVODES and IDAS solvers.
+ * -----------------------------------------------------------------
+ */
+
+N_Vector *N_VCloneEmptyVectorArray(int count, N_Vector w);
+N_Vector *N_VCloneVectorArray(int count, N_Vector w);
+void N_VDestroyVectorArray(N_Vector *vs, int count);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/shared/include/smalldense.h b/Win32/WinCVODE/sundials/shared/include/smalldense.h
new file mode 100644
index 0000000..01015f0
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/include/smalldense.h
@@ -0,0 +1,221 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:47:33 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen and Alan C. Hindmarsh @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for a generic DENSE linear solver
+ * package, intended for small dense matrices.  These routines
+ * use the type realtype** for dense matrix arguments.
+ *
+ * These routines begin with "den" (except for the factor and
+ * solve routines which are called gefa and gesl, respectively).
+ * The underlying matrix storage is described in the
+ * documentation for denalloc.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _SMALLDENSE_H
+#define _SMALLDENSE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denalloc
+ * -----------------------------------------------------------------
+ * Usage : realtype **a;
+ *         a = denalloc(n);
+ *         if (a == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * denalloc(n) allocates storage for an n by n dense matrix. It
+ * returns a pointer to the newly allocated storage if
+ * successful. If the memory request cannot be satisfied, then
+ * denalloc returns NULL. The underlying type of the dense matrix
+ * returned is realtype **. If we allocate a dense matrix
+ * realtype **a by a = denalloc(n), then a[j][i] references the
+ * (i,j)th element of the matrix a, 0 <= i,j <= n-1, and a[j] is
+ * a pointer to the first element in the jth column of a.
+ * The location a[0] contains a pointer to n^2 contiguous
+ * locations which contain the elements of a.
+ * -----------------------------------------------------------------
+ */
+
+realtype **denalloc(long int n);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denallocpiv
+ * -----------------------------------------------------------------
+ * Usage : long int *pivot;
+ *         pivot = denallocpiv(n);
+ *         if (pivot == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * denallocpiv(n) allocates an array of n long int. It returns
+ * a pointer to the first element in the array if successful.
+ * It returns NULL if the memory request could not be satisfied.
+ * -----------------------------------------------------------------
+ */
+
+long int *denallocpiv(long int n);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : gefa
+ * -----------------------------------------------------------------
+ * Usage : long int ier;
+ *         ier = gefa(a,n,p);
+ *         if (ier > 0) ... zero element encountered during
+ *                          the factorization
+ * -----------------------------------------------------------------
+ * gefa(a,n,p) factors the n by n dense matrix a. It overwrites
+ * the elements of a with its LU factors and keeps track of the
+ * pivot rows chosen in the pivot array p.
+ *
+ * A successful LU factorization leaves the matrix a and the
+ * pivot array p with the following information:
+ *
+ * (1) p[k] contains the row number of the pivot element chosen
+ *     at the beginning of elimination step k, k=0, 1, ..., n-1.
+ *
+ * (2) If the unique LU factorization of a is given by Pa = LU,
+ *     where P is a permutation matrix, L is a lower triangular
+ *     matrix with all 1's on the diagonal, and U is an upper
+ *     triangular matrix, then the upper triangular part of a
+ *     (including its diagonal) contains U and the strictly lower
+ *     triangular part of a contains the multipliers, I-L.
+ *
+ * gefa returns 0 if successful. Otherwise it encountered a zero
+ * diagonal element during the factorization. In this case it
+ * returns the column index (numbered from one) at which it
+ * encountered the zero.
+ * -----------------------------------------------------------------
+ */
+
+long int gefa(realtype **a, long int n, long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : gesl
+ * -----------------------------------------------------------------
+ * Usage : realtype *b;
+ *         ier = gefa(a,n,p);
+ *         if (ier == 0) gesl(a,n,p,b);
+ * -----------------------------------------------------------------
+ * gesl(a,n,p,b) solves the n by n linear system ax = b. It
+ * assumes that a has been LU factored and the pivot array p has
+ * been set by a successful call to gefa(a,n,p). The solution x
+ * is written into the b array.
+ * -----------------------------------------------------------------
+ */
+
+void gesl(realtype **a, long int n, long int *p, realtype *b);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denzero
+ * -----------------------------------------------------------------
+ * Usage : denzero(a,n);
+ * -----------------------------------------------------------------
+ * denzero(a,n) sets all the elements of the n by n dense matrix
+ * a to be 0.0.
+ * -----------------------------------------------------------------
+ */
+
+void denzero(realtype **a, long int n);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : dencopy
+ * -----------------------------------------------------------------
+ * Usage : dencopy(a,b,n);
+ * -----------------------------------------------------------------
+ * dencopy(a,b,n) copies the n by n dense matrix a into the
+ * n by n dense matrix b.
+ * -----------------------------------------------------------------
+ */
+
+void dencopy(realtype **a, realtype **b, long int n);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denscale
+ * -----------------------------------------------------------------
+ * Usage : denscale(c,a,n);
+ * -----------------------------------------------------------------
+ * denscale(c,a,n) scales every element in the n by n dense
+ * matrix a by c.
+ * -----------------------------------------------------------------
+ */
+
+void denscale(realtype c, realtype **a, long int n);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denaddI
+ * -----------------------------------------------------------------
+ * Usage : denaddI(a,n);
+ * -----------------------------------------------------------------
+ * denaddI(a,n) increments the n by n dense matrix a by the
+ * identity matrix.
+ * -----------------------------------------------------------------
+ */
+
+void denaddI(realtype **a, long int n);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denfreepiv
+ * -----------------------------------------------------------------
+ * Usage : denfreepiv(p);
+ * -----------------------------------------------------------------
+ * denfreepiv(p) frees the pivot array p allocated by
+ * denallocpiv.
+ * -----------------------------------------------------------------
+ */
+
+void denfreepiv(long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denfree
+ * -----------------------------------------------------------------
+ * Usage : denfree(a);
+ * -----------------------------------------------------------------
+ * denfree(a) frees the dense matrix a allocated by denalloc.
+ * -----------------------------------------------------------------
+ */
+
+void denfree(realtype **a);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denprint
+ * -----------------------------------------------------------------
+ * Usage : denprint(a,n);
+ * -----------------------------------------------------------------
+ * denprint(a,n) prints the n by n dense matrix a to standard
+ * output as it would normally appear on paper. It is intended as
+ * a debugging tool with small values of n. The elements are
+ * printed using the %g/lg/Lg option. A blank line is printed
+ * before and after the matrix.
+ * -----------------------------------------------------------------
+ */
+
+void denprint(realtype **a, long int n);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/shared/include/spgmr.h b/Win32/WinCVODE/sundials/shared/include/spgmr.h
new file mode 100644
index 0000000..94f03ab
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/include/spgmr.h
@@ -0,0 +1,295 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:47:33 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the implementation of SPGMR Krylov
+ * iterative linear solver.  The SPGMR algorithm is based on the
+ * Scaled Preconditioned GMRES (Generalized Minimal Residual)
+ * method.
+ *
+ * The SPGMR algorithm solves a linear system A x = b.
+ * Preconditioning is allowed on the left, right, or both.
+ * Scaling is allowed on both sides, and restarts are also allowed.
+ * We denote the preconditioner and scaling matrices as follows:
+ *   P1 = left preconditioner
+ *   P2 = right preconditioner
+ *   S1 = diagonal matrix of scale factors for P1-inverse b
+ *   S2 = diagonal matrix of scale factors for P2 x
+ * The matrices A, P1, and P2 are not required explicitly; only
+ * routines that provide A, P1-inverse, and P2-inverse as
+ * operators are required.
+ *
+ * In this notation, SPGMR applies the underlying GMRES method to
+ * the equivalent transformed system
+ *   Abar xbar = bbar , where
+ *   Abar = S1 (P1-inverse) A (P2-inverse) (S2-inverse) ,
+ *   bbar = S1 (P1-inverse) b , and   xbar = S2 P2 x .
+ *
+ * The scaling matrices must be chosen so that vectors S1
+ * P1-inverse b and S2 P2 x have dimensionless components.
+ * If preconditioning is done on the left only (P2 = I), by a
+ * matrix P, then S2 must be a scaling for x, while S1 is a
+ * scaling for P-inverse b, and so may also be taken as a scaling
+ * for x.  Similarly, if preconditioning is done on the right only
+ * (P1 = I, P2 = P), then S1 must be a scaling for b, while S2 is
+ * a scaling for P x, and may also be taken as a scaling for b.
+ *
+ * The stopping test for the SPGMR iterations is on the L2 norm of
+ * the scaled preconditioned residual:
+ *      || bbar - Abar xbar ||_2  <  delta
+ * with an input test constant delta.
+ *
+ * The usage of this SPGMR solver involves supplying two routines
+ * and making three calls.  The user-supplied routines are
+ *    atimes (A_data, x, y) to compute y = A x, given x,
+ * and
+ *    psolve (P_data, x, y, lr)
+ *                to solve P1 x = y or P2 x = y for x, given y.
+ * The three user calls are:
+ *    mem  = SpgmrMalloc(lmax, vec_tmpl);
+ *           to initialize memory,
+ *    flag = SpgmrSolve(mem,A_data,x,b,...,
+ *                      P_data,s1,s2,atimes,psolve,...);
+ *           to solve the system, and
+ *    SpgmrFree(mem);
+ *           to free the memory created by SpgmrMalloc.
+ * Complete details for specifying atimes and psolve and for the
+ * usage calls are given in the paragraphs below and in iterative.h.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _SPGMR_H
+#define _SPGMR_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+#include "iterative.h"
+#include "nvector.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Types: SpgmrMemRec, SpgmrMem
+ * -----------------------------------------------------------------
+ * SpgmrMem is a pointer to an SpgmrMemRec which contains
+ * the memory needed by SpgmrSolve. The SpgmrMalloc routine
+ * returns a pointer of type SpgmrMem which should then be passed
+ * in subsequent calls to SpgmrSolve. The SpgmrFree routine frees
+ * the memory allocated by SpgmrMalloc.
+ *
+ * l_max is the maximum Krylov dimension that SpgmrSolve will be
+ * permitted to use.
+ *
+ * V is the array of Krylov basis vectors v_1, ..., v_(l_max+1),
+ * stored in V[0], ..., V[l_max], where l_max is the second
+ * parameter to SpgmrMalloc. Each v_i is a vector of type
+ * N_Vector.
+ *
+ * Hes is the (l_max+1) x l_max Hessenberg matrix. It is stored
+ * row-wise so that the (i,j)th element is given by Hes[i][j].
+ *
+ * givens is a length 2*l_max array which represents the
+ * Givens rotation matrices that arise in the algorithm. The
+ * Givens rotation matrices F_0, F_1, ..., F_j, where F_i is
+ *
+ *             1
+ *               1
+ *                 c_i  -s_i      <--- row i
+ *                 s_i   c_i
+ *                           1
+ *                             1
+ *
+ * are represented in the givens vector as
+ * givens[0]=c_0, givens[1]=s_0, givens[2]=c_1, givens[3]=s_1,
+ * ..., givens[2j]=c_j, givens[2j+1]=s_j.
+ *
+ * xcor is a vector (type N_Vector) which holds the scaled,
+ * preconditioned correction to the initial guess.
+ *
+ * yg is a length (l_max+1) array of realtype used to hold "short"
+ * vectors (e.g. y and g).
+ *
+ * vtemp is a vector (type N_Vector) used as temporary vector
+ * storage during calculations.
+ * -----------------------------------------------------------------
+ */
+  
+typedef struct _SpgmrMemRec {
+
+  int l_max;
+
+  N_Vector *V;
+  realtype **Hes;
+  realtype *givens;
+  N_Vector xcor;
+  realtype *yg;
+  N_Vector vtemp;
+
+} SpgmrMemRec, *SpgmrMem;
+
+/*
+ * -----------------------------------------------------------------
+ * Function : SpgmrMalloc
+ * -----------------------------------------------------------------
+ * SpgmrMalloc allocates the memory used by SpgmrSolve. It
+ * returns a pointer of type SpgmrMem which the user of the
+ * SPGMR package should pass to SpgmrSolve. The parameter l_max
+ * is the maximum Krylov dimension that SpgmrSolve will be
+ * permitted to use. The parameter vec_tmpl is a pointer to an
+ * N_Vector used as a template to create new vectors by duplication.
+ * This routine returns NULL if there is a memory request failure.
+ * -----------------------------------------------------------------
+ */
+
+SpgmrMem SpgmrMalloc(int l_max, N_Vector vec_tmpl);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : SpgmrSolve
+ * -----------------------------------------------------------------
+ * SpgmrSolve solves the linear system Ax = b using the SPGMR
+ * method. The return values are given by the symbolic constants
+ * below. The first SpgmrSolve parameter is a pointer to memory
+ * allocated by a prior call to SpgmrMalloc.
+ *
+ * mem is the pointer returned by SpgmrMalloc to the structure
+ * containing the memory needed by SpgmrSolve.
+ *
+ * A_data is a pointer to information about the coefficient
+ * matrix A. This pointer is passed to the user-supplied function
+ * atimes.
+ *
+ * x is the initial guess x_0 upon entry and the solution
+ * N_Vector upon exit with return value SPGMR_SUCCESS or
+ * SPGMR_RES_REDUCED. For all other return values, the output x
+ * is undefined.
+ *
+ * b is the right hand side N_Vector. It is undisturbed by this
+ * function.
+ *
+ * pretype is the type of preconditioning to be used. Its
+ * legal possible values are enumerated in iterativ.h. These
+ * values are PREC_NONE=0, PREC_LEFT=1, PREC_RIGHT=2, and
+ * PREC_BOTH=3.
+ *
+ * gstype is the type of Gram-Schmidt orthogonalization to be
+ * used. Its legal values are enumerated in iterativ.h. These
+ * values are MODIFIED_GS=0 and CLASSICAL_GS=1.
+ *
+ * delta is the tolerance on the L2 norm of the scaled,
+ * preconditioned residual. On return with value SPGMR_SUCCESS,
+ * this residual satisfies || s1 P1_inv (b - Ax) ||_2 <= delta.
+ *
+ * max_restarts is the maximum number of times the algorithm is
+ * allowed to restart.
+ *
+ * P_data is a pointer to preconditioner information. This
+ * pointer is passed to the user-supplied function psolve.
+ *
+ * s1 is an N_Vector of positive scale factors for P1-inv b, where
+ * P1 is the left preconditioner. (Not tested for positivity.)
+ * Pass NULL if no scaling on P1-inv b is required.
+ *
+ * s2 is an N_Vector of positive scale factors for P2 x, where
+ * P2 is the right preconditioner. (Not tested for positivity.)
+ * Pass NULL if no scaling on P2 x is required.
+ *
+ * atimes is the user-supplied function which performs the
+ * operation of multiplying A by a given vector. Its description
+ * is given in iterative.h.
+ *
+ * psolve is the user-supplied function which solves a
+ * preconditioner system Pz = r, where P is P1 or P2. Its full
+ * description is  given in iterativ.h. The psolve function will
+ * not be called if pretype is NONE; in that case, the user
+ * should pass NULL for psolve.
+ *
+ * res_norm is a pointer to the L2 norm of the scaled,
+ * preconditioned residual. On return with value SPGMR_SUCCESS or
+ * SPGMR_RES_REDUCED, (*res_norm) contains the value
+ * || s1 P1_inv (b - Ax) ||_2 for the computed solution x.
+ * For all other return values, (*res_norm) is undefined. The
+ * caller is responsible for allocating the memory (*res_norm)
+ * to be filled in by SpgmrSolve.
+ *
+ * nli is a pointer to the number of linear iterations done in
+ * the execution of SpgmrSolve. The caller is responsible for
+ * allocating the memory (*nli) to be filled in by SpgmrSolve.
+ *
+ * nps is a pointer to the number of calls made to psolve during
+ * the execution of SpgmrSolve. The caller is responsible for
+ * allocating the memory (*nps) to be filled in by SpgmrSolve.
+ *
+ * Note: Repeated calls can be made to SpgmrSolve with varying
+ * input arguments. If, however, the problem size N or the
+ * maximum Krylov dimension l_max changes, then a call to
+ * SpgmrMalloc must be made to obtain new memory for SpgmrSolve
+ * to use.
+ * -----------------------------------------------------------------
+ */                                                                
+     
+int SpgmrSolve(SpgmrMem mem, void *A_data, N_Vector x, N_Vector b,
+               int pretype, int gstype, realtype delta, 
+               int max_restarts, void *P_data, N_Vector s1, 
+               N_Vector s2, ATimesFn atimes, PSolveFn psolve, 
+               realtype *res_norm, int *nli, int *nps);
+
+
+/* Return values for SpgmrSolve */
+
+#define SPGMR_SUCCESS            0  /* Converged                     */
+#define SPGMR_RES_REDUCED        1  /* Did not converge, but reduced
+                                       norm of residual              */
+#define SPGMR_CONV_FAIL          2  /* Failed to converge            */
+#define SPGMR_QRFACT_FAIL        3  /* QRfact found singular matrix  */
+#define SPGMR_PSOLVE_FAIL_REC    4  /* psolve failed recoverably     */
+#define SPGMR_MEM_NULL          -1  /* mem argument is NULL          */
+#define SPGMR_ATIMES_FAIL       -2  /* atimes returned failure flag  */
+#define SPGMR_PSOLVE_FAIL_UNREC -3  /* psolve failed unrecoverably   */
+#define SPGMR_GS_FAIL           -4  /* Gram-Schmidt routine         
+                                       returned failure flag         */
+#define SPGMR_QRSOL_FAIL        -5  /* QRsol found singular R        */
+
+/*
+ * -----------------------------------------------------------------
+ * Function : SpgmrFree
+ * -----------------------------------------------------------------
+ * SpgmrMalloc frees the memory allocated by SpgmrMalloc. It is
+ * illegal to use the pointer mem after a call to SpgmrFree.
+ * -----------------------------------------------------------------
+ */                                                                
+
+void SpgmrFree(SpgmrMem mem);
+
+/*
+ * -----------------------------------------------------------------
+ * Macro: SPGMR_VTEMP
+ * -----------------------------------------------------------------
+ * This macro provides access to the work vector vtemp in the
+ * memory block of the SPGMR module.  The argument mem is the
+ * memory pointer returned by SpgmrMalloc, of type SpgmrMem,
+ * and the macro value is of type N_Vector.
+ * On a return from SpgmrSolve with *nli = 0, this vector
+ * contains the scaled preconditioned initial residual,
+ * s1 * P1_inverse * (b - A x_0).
+ * -----------------------------------------------------------------
+ */
+
+#define SPGMR_VTEMP(mem) (mem->vtemp)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/shared/include/sundialsmath.h b/Win32/WinCVODE/sundials/shared/include/sundialsmath.h
new file mode 100644
index 0000000..43734d1
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/include/sundialsmath.h
@@ -0,0 +1,129 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:47:33 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for a simple C-language math library. The
+ * routines listed here work with the type realtype as defined in
+ * the header file shared/include/sundialstypes.h.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _SUNDIALSMATH_H
+#define _SUNDIALSMATH_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Macros : MIN and MAX
+ * -----------------------------------------------------------------
+ * MIN(A,B) returns the minimum of A and B
+ *
+ * MAX(A,B) returns the maximum of A and B
+ * -----------------------------------------------------------------
+ */
+
+#ifndef MIN
+#define MIN(A, B) ((A) < (B) ? (A) : (B))
+#endif
+
+#ifndef MAX
+#define MAX(A, B) ((A) > (B) ? (A) : (B))
+#endif
+
+#ifndef ABS
+#define ABS RAbs
+#endif
+
+#ifndef SQR
+#define SQR RPower2
+#endif
+
+/*
+ * -----------------------------------------------------------------
+ * Function : RPowerI
+ * -----------------------------------------------------------------
+ * Usage : int exponent;
+ *         realtype base, ans;
+ *         ans = RPowerI(base,exponent);
+ * -----------------------------------------------------------------
+ * RPowerI returns the value of base^exponent, where base is of type
+ * realtype and exponent is of type int.
+ * -----------------------------------------------------------------
+ */
+
+realtype RPowerI(realtype base, int exponent);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : RPowerR
+ * -----------------------------------------------------------------
+ * Usage : realtype base, exponent, ans;
+ *         ans = RPowerR(base,exponent);
+ * -----------------------------------------------------------------
+ * RPowerR returns the value of base^exponent, where both base and
+ * exponent are of type realtype. If base < ZERO, then RPowerR
+ * returns ZERO.
+ * -----------------------------------------------------------------
+ */
+
+realtype RPowerR(realtype base, realtype exponent);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : RSqrt
+ * -----------------------------------------------------------------
+ * Usage : realtype sqrt_x;
+ *         sqrt_x = RSqrt(x);
+ * -----------------------------------------------------------------
+ * RSqrt(x) returns the square root of x. If x < ZERO, then RSqrt
+ * returns ZERO.
+ * -----------------------------------------------------------------
+ */
+
+realtype RSqrt(realtype x);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : RAbs (a.k.a. ABS)
+ * -----------------------------------------------------------------
+ * Usage : realtype abs_x;
+ *         abs_x = RAbs(x);
+ * -----------------------------------------------------------------
+ * RAbs(x) returns the absolute value of x.
+ * -----------------------------------------------------------------
+ */
+
+realtype RAbs(realtype x);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : RPower2 (a.k.a. SQR)
+ * -----------------------------------------------------------------
+ * Usage : realtype sqr_x;
+ *         sqr_x = RPower2(x);
+ * -----------------------------------------------------------------
+ * RPower2(x) returns x^2.
+ * -----------------------------------------------------------------
+ */
+
+realtype RPower2(realtype x);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/shared/include/sundialstypes.h b/Win32/WinCVODE/sundials/shared/include/sundialstypes.h
new file mode 100644
index 0000000..c217e35
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/include/sundialstypes.h
@@ -0,0 +1,114 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:47:33 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott Cohen, Alan Hindmarsh, Radu Serban, and
+ *                Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ *------------------------------------------------------------------
+ * This header file exports two types: realtype and booleantype,
+ * as well as the constants TRUE and FALSE.
+ *
+ * Users should include the header file sundialstypes.h in every
+ * program file and use the exported name realtype instead of
+ * float, double or long double.
+ *
+ * The constants SUNDIALS_SINGLE_PRECISION, SUNDIALS_DOUBLE_PRECISION
+ * and SUNDIALS_LONG_DOUBLE_PRECISION indicate the underlying data
+ * type of realtype. It is set at the configuration stage.
+ *
+ * The legal types for realtype are float, double and long double.
+ *
+ * The macro RCONST gives the user a convenient way to define
+ * real-valued constants. To use the constant 1.0, for example,
+ * the user should write the following:
+ *
+ *   #define ONE RCONST(1.0)
+ *
+ * If realtype is defined as a double, then RCONST(1.0) expands
+ * to 1.0. If realtype is defined as a float, then RCONST(1.0)
+ * expands to 1.0F. If realtype is defined as a long double,
+ * then RCONST(1.0) expands to 1.0L. There is never a need to
+ * explicitly cast 1.0 to (realtype).
+ *------------------------------------------------------------------
+ */
+  
+#ifndef _SUNDIALSTYPES_H
+#define _SUNDIALSTYPES_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#ifndef _SUNDIALS_CONFIG_H
+#define _SUNDIALS_CONFIG_H
+#include "sundials_config.h"
+#endif
+
+#include <float.h>
+  
+#if defined(SUNDIALS_SINGLE_PRECISION)
+
+typedef float realtype;
+#define RCONST(x) x##F
+#define BIG_REAL FLT_MAX
+#define SMALL_REAL FLT_MIN
+#define UNIT_ROUNDOFF FLT_EPSILON
+
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+
+typedef double realtype;
+#define RCONST(x) x
+#define BIG_REAL DBL_MAX
+#define SMALL_REAL DBL_MIN
+#define UNIT_ROUNDOFF DBL_EPSILON
+
+#elif defined(SUNDIALS_EXTENDED_PRECISION)
+
+typedef long double realtype;
+#define RCONST(x) x##L
+#define BIG_REAL LDBL_MAX
+#define SMALL_REAL LDBL_MIN
+#define UNIT_ROUNDOFF LDBL_EPSILON
+
+#endif
+
+/*
+ *------------------------------------------------------------------
+ * Type : booleantype
+ *------------------------------------------------------------------
+ * Constants : FALSE and TRUE
+ *------------------------------------------------------------------
+ * ANSI C does not have a built-in boolean data type. Below is the
+ * definition for a new type called booleantype. The advantage of
+ * using the name booleantype (instead of int) is an increase in
+ * code readability. It also allows the programmer to make a
+ * distinction between int and boolean data. Variables of type
+ * booleantype are intended to have only the two values FALSE and
+ * TRUE which are defined below to be equal to 0 and 1,
+ * respectively.
+ *------------------------------------------------------------------
+ */
+
+#ifndef booleantype
+#define booleantype int
+#endif
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/WinCVODE/sundials/shared/source/Makefile b/Win32/WinCVODE/sundials/shared/source/Makefile
new file mode 100644
index 0000000..d741697
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/source/Makefile
@@ -0,0 +1,107 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:48:52 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/shared/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for SHARED module
+#
+# shared/source/Makefile.  Generated from Makefile.in by configure.
+# -----------------------------------------------------------------
+
+SHELL = /bin/bash
+
+srcdir       = .
+builddir     = .
+abs_builddir = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials/shared/source
+top_builddir = ../../
+prefix       = /cygdrive/h/SFORGE_CVS/SBML_odeSolver/Win32/WinCVODE/sundials
+exec_prefix  = ${prefix}
+includedir   = ${prefix}/include
+libdir       = ${exec_prefix}/lib
+
+INSTALL        = /usr/bin/install -c
+INSTALL_LIB    = ${INSTALL}
+INSTALL_HEADER = ${INSTALL} -m 644
+
+LIBTOOL      = $(SHELL) $(top_builddir)/libtool
+LIBTOOL_DEPS = config/ltmain.sh
+
+CPP      = /usr/bin/cc -E
+CPPFLAGS = 
+CC       = /usr/bin/cc
+CFLAGS   = -g -O2
+LIBS     = -lm 
+
+SHARED_INC_DIR   = $(srcdir)/../include
+
+SHARED_LIB       = libsundials_shared.la
+SHARED_LIB_FILES = band.lo dense.lo iterative.lo sundialsmath.lo nvector.lo smalldense.lo spgmr.lo
+
+OBJECT_FILES = band.o dense.o iterative.o sundialsmath.o nvector.o smalldense.o spgmr.o
+
+all: update $(SHARED_LIB_FILES)
+
+update:
+	${INSTALL_HEADER} ${top_builddir}/config/sundials_config.h ${builddir}
+
+install: update $(SHARED_LIB_FILES)
+	$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(SHARED_LIB) $(SHARED_LIB_FILES) -rpath $(libdir) $(LIBS) -avoid-version
+	$(LIBTOOL) --mode=install $(INSTALL_LIB) $(SHARED_LIB) $(libdir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/band.h $(includedir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/dense.h $(includedir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/iterative.h $(includedir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/sundialsmath.h $(includedir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/sundialstypes.h $(includedir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/nvector.h $(includedir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/smalldense.h $(includedir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/spgmr.h $(includedir)
+	$(INSTALL_HEADER) $(builddir)/sundials_config.h $(includedir)
+
+clean:
+	$(LIBTOOL) --mode=clean rm -f $(SHARED_LIB)
+	rm -f $(SHARED_LIB_FILES)
+	rm -f $(OBJECT_FILES)
+	rm -f sundials_config.h
+
+uninstall: clean
+	$(LIBTOOL) --mode=uninstall rm -f $(libdir)/$(SHARED_LIB)
+	rm -f $(includedir)/band.h
+	rm -f $(includedir)/dense.h
+	rm -f $(includedir)/iterative.h
+	rm -f $(includedir)/sundialsmath.h
+	rm -f $(includedir)/sundialstypes.h
+	rm -f $(includedir)/nvector.h
+	rm -f $(includedir)/smalldense.h
+	rm -f $(includedir)/spgmr.h
+	@if test -f ${includedir}/sundials_config.h ; then \
+	   echo "rm -f $(includedir)/sundials_config.h" ;  \
+	   rm -f $(includedir)/sundials_config.h ;         \
+	 fi
+
+band.lo: $(srcdir)/band.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/band.c
+dense.lo: $(srcdir)/dense.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/dense.c
+iterative.lo: $(srcdir)/iterative.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/iterative.c
+sundialsmath.lo: $(srcdir)/sundialsmath.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/sundialsmath.c
+sundialstypes.lo: $(srcdir)/sundialstypes.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/sundialstypes.c
+nvector.lo: $(srcdir)/nvector.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/nvector.c
+smalldense.lo: $(srcdir)/smalldense.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/smalldense.c
+spgmr.lo: $(srcdir)/spgmr.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/spgmr.c
+
+libtool: $(top_builddir)/$(LIBTOOL_DEPS)
+	@cd $(top_builddir) ;                 \
+	 $(SHELL) ./config.status --recheck ; \
+	 cd $(abs_builddir)
diff --git a/Win32/WinCVODE/sundials/shared/source/Makefile.in b/Win32/WinCVODE/sundials/shared/source/Makefile.in
new file mode 100644
index 0000000..f8dfd97
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/source/Makefile.in
@@ -0,0 +1,107 @@
+# -----------------------------------------------------------------
+# $Revision: 1.1 $
+# $Date: 2005/10/27 13:48:52 $
+# -----------------------------------------------------------------
+# Programmer(s): Radu Serban and Aaron Collier @ LLNL
+# -----------------------------------------------------------------
+# Copyright (c) 2002, The Regents of the University of California.
+# Produced at the Lawrence Livermore National Laboratory.
+# All rights reserved.
+# For details, see sundials/shared/LICENSE.
+# -----------------------------------------------------------------
+# Makefile for SHARED module
+#
+# @configure_input@
+# -----------------------------------------------------------------
+
+SHELL = @SHELL@
+
+srcdir       = @srcdir@
+builddir     = @builddir@
+abs_builddir = @abs_builddir@
+top_builddir = @top_builddir@
+prefix       = @prefix@
+exec_prefix  = @exec_prefix@
+includedir   = @includedir@
+libdir       = @libdir@
+
+INSTALL        = @INSTALL@
+INSTALL_LIB    = @INSTALL_PROGRAM@
+INSTALL_HEADER = @INSTALL_DATA@
+
+LIBTOOL      = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+
+CPP      = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CC       = @CC@
+CFLAGS   = @CFLAGS@
+LIBS     = @LIBS@
+
+SHARED_INC_DIR   = $(srcdir)/../include
+
+SHARED_LIB       = libsundials_shared.la
+SHARED_LIB_FILES = band.lo dense.lo iterative.lo sundialsmath.lo nvector.lo smalldense.lo spgmr.lo
+
+OBJECT_FILES = band.o dense.o iterative.o sundialsmath.o nvector.o smalldense.o spgmr.o
+
+all: update $(SHARED_LIB_FILES)
+
+update:
+	${INSTALL_HEADER} ${top_builddir}/config/sundials_config.h ${builddir}
+
+install: update $(SHARED_LIB_FILES)
+	$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(SHARED_LIB) $(SHARED_LIB_FILES) -rpath $(libdir) $(LIBS) -avoid-version
+	$(LIBTOOL) --mode=install $(INSTALL_LIB) $(SHARED_LIB) $(libdir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/band.h $(includedir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/dense.h $(includedir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/iterative.h $(includedir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/sundialsmath.h $(includedir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/sundialstypes.h $(includedir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/nvector.h $(includedir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/smalldense.h $(includedir)
+	$(INSTALL_HEADER) $(SHARED_INC_DIR)/spgmr.h $(includedir)
+	$(INSTALL_HEADER) $(builddir)/sundials_config.h $(includedir)
+
+clean:
+	$(LIBTOOL) --mode=clean rm -f $(SHARED_LIB)
+	rm -f $(SHARED_LIB_FILES)
+	rm -f $(OBJECT_FILES)
+	rm -f sundials_config.h
+
+uninstall: clean
+	$(LIBTOOL) --mode=uninstall rm -f $(libdir)/$(SHARED_LIB)
+	rm -f $(includedir)/band.h
+	rm -f $(includedir)/dense.h
+	rm -f $(includedir)/iterative.h
+	rm -f $(includedir)/sundialsmath.h
+	rm -f $(includedir)/sundialstypes.h
+	rm -f $(includedir)/nvector.h
+	rm -f $(includedir)/smalldense.h
+	rm -f $(includedir)/spgmr.h
+	@if test -f ${includedir}/sundials_config.h ; then \
+	   echo "rm -f $(includedir)/sundials_config.h" ;  \
+	   rm -f $(includedir)/sundials_config.h ;         \
+	 fi
+
+band.lo: $(srcdir)/band.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/band.c
+dense.lo: $(srcdir)/dense.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/dense.c
+iterative.lo: $(srcdir)/iterative.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/iterative.c
+sundialsmath.lo: $(srcdir)/sundialsmath.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/sundialsmath.c
+sundialstypes.lo: $(srcdir)/sundialstypes.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/sundialstypes.c
+nvector.lo: $(srcdir)/nvector.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/nvector.c
+smalldense.lo: $(srcdir)/smalldense.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/smalldense.c
+spgmr.lo: $(srcdir)/spgmr.c
+	$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) -I. -I$(SHARED_INC_DIR) $(CFLAGS) -c $(srcdir)/spgmr.c
+
+libtool: $(top_builddir)/$(LIBTOOL_DEPS)
+	@cd $(top_builddir) ;                 \
+	 $(SHELL) ./config.status --recheck ; \
+	 cd $(abs_builddir)
diff --git a/Win32/WinCVODE/sundials/shared/source/band.c b/Win32/WinCVODE/sundials/shared/source/band.c
new file mode 100644
index 0000000..872b47a
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/source/band.c
@@ -0,0 +1,365 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:48:52 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for a generic BAND linear
+ * solver package.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "band.h"
+#include "sundialsmath.h"
+#include "sundialstypes.h"
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+
+#define ROW(i,j,smu) (i-j+smu)
+
+/* Implementation */
+
+BandMat BandAllocMat(long int N, long int mu, long int ml, long int smu)
+{
+  BandMat A;
+
+  if (N <= 0) return(NULL);
+  
+  A = (BandMat) malloc(sizeof *A);
+  if (A == NULL) return (NULL);
+
+  A->data = bandalloc(N, smu, ml);
+  if (A->data == NULL) {
+    free(A);
+    return(NULL);
+  }
+  
+  A->size = N;
+  A->mu = mu;
+  A->ml = ml;
+  A->smu = smu;
+
+  return(A);
+}
+
+long int *BandAllocPiv(long int N)
+{
+  if (N <= 0) return(NULL);
+  
+  return((long int *) malloc(N * sizeof(long int)));
+}
+
+long int BandFactor(BandMat A, long int *p)
+{
+  return(gbfa(A->data, A->size, A->mu, A->ml, A->smu, p));
+}
+
+void BandBacksolve(BandMat A, long int *p, realtype *b)
+{
+  gbsl(A->data, A->size, A->smu, A->ml, p, b);
+}
+
+void BandZero(BandMat A)
+{
+  bandzero(A->data, A->size, A->mu, A->ml, A->smu);
+}
+
+void BandCopy(BandMat A, BandMat B, long int copymu, 
+              long int copyml)
+{
+  bandcopy(A->data, B->data, A->size, A->smu, B->smu, copymu, copyml);
+}
+
+void BandScale(realtype c, BandMat A)
+{
+  bandscale(c, A->data, A->size, A->mu, A->ml, A->smu);
+}
+
+void BandAddI(BandMat A)
+{
+  bandaddI(A->data, A->size, A->smu);
+}
+
+void BandFreeMat(BandMat A)
+{
+  bandfree(A->data);
+  free(A);
+}
+
+void BandFreePiv(long int *p)
+{ 
+  free(p);
+}
+
+void BandPrint(BandMat A)
+{
+  bandprint(A->data, A->size, A->mu, A->ml, A->smu);
+}
+
+realtype **bandalloc(long int n, long int smu, long int ml)
+{
+  realtype **a;
+  long int j, colSize;
+
+  if (n <= 0) return(NULL);
+
+  a = (realtype **) malloc(n * sizeof(realtype *));
+  if (a == NULL) return(NULL);
+
+  colSize = smu + ml + 1;
+  a[0] = (realtype *) malloc(n * colSize * sizeof(realtype));
+  if (a[0] == NULL) {
+    free(a);
+    return(NULL);
+  }
+
+  for (j=1; j < n; j++) a[j] = a[0] + j * colSize;
+
+  return(a);
+}
+
+long int *bandallocpiv(long int n)
+{
+  if (n <= 0) return(NULL);
+
+  return((long int *) malloc(n * sizeof(long int)));
+}
+
+long int gbfa(realtype **a, long int n, long int mu, long int ml, 
+              long int smu, long int *p)
+{
+  long int c, r, num_rows;
+  long int i, j, k, l, storage_l, storage_k, last_col_k, last_row_k;
+  realtype *a_c, *col_k, *diag_k, *sub_diag_k, *col_j, *kptr, *jptr;
+  realtype max, temp, mult, a_kj;
+  booleantype swap;
+
+  /* zero out the first smu - mu rows of the rectangular array a */
+
+  num_rows = smu - mu;
+  if (num_rows > 0) {
+    for (c=0; c < n; c++) {
+      a_c = a[c];
+      for (r=0; r < num_rows; r++) {
+	a_c[r] = ZERO;
+      }
+    }
+  }
+
+  /* k = elimination step number */
+
+  for (k=0; k < n-1; k++, p++) {
+    
+    col_k     = a[k];
+    diag_k    = col_k + smu;
+    sub_diag_k = diag_k + 1;
+    last_row_k = MIN(n-1,k+ml);
+
+    /* find l = pivot row number */
+
+    l=k;
+    max = ABS(*diag_k);
+    for (i=k+1, kptr=sub_diag_k; i <= last_row_k; i++, kptr++) { 
+      if (ABS(*kptr) > max) {
+	l=i;
+	max = ABS(*kptr);
+      }
+    }
+    storage_l = ROW(l, k, smu);
+    *p = l;
+    
+    /* check for zero pivot element */
+
+    if (col_k[storage_l] == ZERO) return(k+1);
+    
+    /* swap a(l,k) and a(k,k) if necessary */
+    
+    if ( (swap = (l != k) )) {
+      temp = col_k[storage_l];
+      col_k[storage_l] = *diag_k;
+      *diag_k = temp;
+    }
+
+    /* Scale the elements below the diagonal in         */
+    /* column k by -1.0 / a(k,k). After the above swap, */
+    /* a(k,k) holds the pivot element. This scaling     */
+    /* stores the pivot row multipliers -a(i,k)/a(k,k)  */
+    /* in a(i,k), i=k+1, ..., MIN(n-1,k+ml).            */
+    
+    mult = -ONE / (*diag_k);
+    for (i=k+1, kptr = sub_diag_k; i <= last_row_k; i++, kptr++)
+      (*kptr) *= mult;
+
+    /* row_i = row_i - [a(i,k)/a(k,k)] row_k, i=k+1, ..., MIN(n-1,k+ml) */
+    /* row k is the pivot row after swapping with row l.                */
+    /* The computation is done one column at a time,                    */
+    /* column j=k+1, ..., MIN(k+smu,n-1).                               */
+    
+    last_col_k = MIN(k+smu,n-1);
+    for (j=k+1; j <= last_col_k; j++) {
+      
+      col_j = a[j];
+      storage_l = ROW(l,j,smu); 
+      storage_k = ROW(k,j,smu); 
+      a_kj = col_j[storage_l];
+
+      /* Swap the elements a(k,j) and a(k,l) if l!=k. */
+      
+      if (swap) {
+	col_j[storage_l] = col_j[storage_k];
+	col_j[storage_k] = a_kj;
+      }
+
+      /* a(i,j) = a(i,j) - [a(i,k)/a(k,k)]*a(k,j) */
+      /* a_kj = a(k,j), *kptr = - a(i,k)/a(k,k), *jptr = a(i,j) */
+
+      if (a_kj != ZERO) {
+	for (i=k+1, kptr=sub_diag_k, jptr=col_j+ROW(k+1,j,smu);
+	     i <= last_row_k;
+	     i++, kptr++, jptr++)
+	  (*jptr) += a_kj * (*kptr);
+      }
+    }    
+  }
+  
+  /* set the last pivot row to be n-1 and check for a zero pivot */
+
+  *p = n-1; 
+  if (a[n-1][smu] == ZERO) return(n);
+
+  /* return 0 to indicate success */
+
+  return(0);
+}
+
+void gbsl(realtype **a, long int n, long int smu, long int ml, 
+          long int *p, realtype *b)
+{
+  long int k, l, i, first_row_k, last_row_k;
+  realtype mult, *diag_k;
+  
+  /* Solve Ly = Pb, store solution y in b */
+  
+  for (k=0; k < n-1; k++) {
+    l = p[k];
+    mult = b[l];
+    if (l != k) {
+      b[l] = b[k];
+      b[k] = mult;
+    }
+    diag_k = a[k]+smu;
+    last_row_k = MIN(n-1,k+ml);
+    for (i=k+1; i <= last_row_k; i++)
+      b[i] += mult * diag_k[i-k];
+  }
+  
+  /* Solve Ux = y, store solution x in b */
+  
+  for (k=n-1; k >= 0; k--) {
+    diag_k = a[k]+smu;
+    first_row_k = MAX(0,k-smu);
+    b[k] /= (*diag_k);
+    mult = -b[k];
+    for (i=first_row_k; i <= k-1; i++)
+      b[i] += mult*diag_k[i-k];
+  }
+}
+
+void bandzero(realtype **a, long int n, long int mu, long int ml, 
+              long int smu)
+{
+  long int i, j, colSize;
+  realtype *col_j;
+
+  colSize = mu + ml + 1;
+  for (j=0; j < n; j++) {
+    col_j = a[j]+smu-mu;
+    for (i=0; i < colSize; i++)
+      col_j[i] = ZERO;
+  }
+}
+
+void bandcopy(realtype **a, realtype **b, long int n, long int a_smu, 
+              long int b_smu, long int copymu, long int copyml)
+{
+  long int i, j, copySize;
+  realtype *a_col_j, *b_col_j;
+
+  copySize = copymu + copyml + 1;
+ 
+  for (j=0; j < n; j++) {
+    a_col_j = a[j]+a_smu-copymu;
+    b_col_j = b[j]+b_smu-copymu;
+    for (i=0; i < copySize; i++)
+      b_col_j[i] = a_col_j[i];
+  }
+}
+
+void bandscale(realtype c, realtype **a, long int n, long int mu, 
+               long int ml, long int smu)
+{
+  long int i, j, colSize;
+  realtype *col_j;
+
+  colSize = mu + ml + 1;
+
+  for(j=0; j < n; j++) {
+    col_j = a[j]+smu-mu;
+    for (i=0; i < colSize; i++)
+      col_j[i] *= c;
+  }
+}
+
+void bandaddI(realtype **a, long int n, long int smu)
+{
+  long int j;
+ 
+  for(j=0; j < n; j++)
+    a[j][smu] += ONE;
+}
+
+void bandfreepiv(long int *p)
+{
+  free(p);
+}
+
+void bandfree(realtype **a)
+{
+  free(a[0]);
+  free(a);
+}
+
+void bandprint(realtype **a, long int n, long int mu, long int ml, 
+               long int smu)
+{
+  long int i, j, start, finish;
+ 
+  printf("\n");
+  for (i=0; i < n; i++) {
+    start = MAX(0,i-ml);
+    finish = MIN(n-1,i+mu);
+    for (j=0; j < start; j++) printf("%10s","");
+    for (j=start; j <= finish; j++) {
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+      printf("%10Lg", a[j][i-j+smu]);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+      printf("%10lg", a[j][i-j+smu]);
+#else
+      printf("%10g", a[j][i-j+smu]);
+#endif
+    }
+    printf("\n");
+  }
+  printf("\n");
+}
diff --git a/Win32/WinCVODE/sundials/shared/source/dense.c b/Win32/WinCVODE/sundials/shared/source/dense.c
new file mode 100644
index 0000000..8cbb7b9
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/source/dense.c
@@ -0,0 +1,103 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:48:52 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for a generic DENSE linear
+ * solver package.
+ * -----------------------------------------------------------------
+ */ 
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "dense.h"
+#include "smalldense.h"
+#include "sundialsmath.h"
+#include "sundialstypes.h"
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+
+/* Implementation */
+
+DenseMat DenseAllocMat(long int N)
+{
+  DenseMat A;
+
+  if (N <= 0) return(NULL);
+
+  A = (DenseMat) malloc(sizeof *A);
+  if (A==NULL) return (NULL);
+  
+  A->data = denalloc(N);
+  if (A->data == NULL) {
+    free(A);
+    return(NULL);
+  }
+
+  A->size = N;
+
+  return(A);
+}
+
+long int *DenseAllocPiv(long int N)
+{
+  if (N <= 0) return(NULL);
+
+  return((long int *) malloc(N * sizeof(long int)));
+}
+
+long int DenseFactor(DenseMat A, long int *p)
+{
+  return(gefa(A->data, A->size, p));
+}
+
+void DenseBacksolve(DenseMat A, long int *p, realtype *b)
+{
+  gesl(A->data, A->size, p, b);
+}
+
+void DenseZero(DenseMat A)
+{
+  denzero(A->data, A->size);
+}
+
+void DenseCopy(DenseMat A, DenseMat B)
+{
+  dencopy(A->data, B->data, A->size);
+}
+
+void DenseScale(realtype c, DenseMat A)
+{
+  denscale(c, A->data, A->size);
+}
+
+void DenseAddI(DenseMat A)
+{
+  denaddI(A->data, A->size);
+}
+
+void DenseFreeMat(DenseMat A)
+{
+  denfree(A->data);
+  free(A);
+}
+
+void DenseFreePiv(long int *p)
+{  
+  free(p);
+}
+
+void DensePrint(DenseMat A)
+{
+  denprint(A->data, A->size);
+}
diff --git a/Win32/WinCVODE/sundials/shared/source/iterative.c b/Win32/WinCVODE/sundials/shared/source/iterative.c
new file mode 100644
index 0000000..c821d91
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/source/iterative.c
@@ -0,0 +1,290 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:48:52 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the iterative.h header
+ * file. It contains the implementation of functions that may be
+ * useful for many different iterative solvers of A x = b.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+
+#include "iterative.h"
+#include "nvector.h"
+#include "sundialsmath.h"
+#include "sundialstypes.h"
+
+#define FACTOR RCONST(1000.0)
+#define ZERO   RCONST(0.0)
+#define ONE    RCONST(1.0)
+
+/*
+ * -----------------------------------------------------------------
+ * Function : ModifiedGS
+ * -----------------------------------------------------------------
+ * This implementation of ModifiedGS is a slight modification of a
+ * previous modified Gram-Schmidt routine (called mgs) written by
+ * Milo Dorr.
+ * -----------------------------------------------------------------
+ */
+ 
+int ModifiedGS(N_Vector *v, realtype **h, int k, int p, 
+               realtype *new_vk_norm)
+{
+  int  i, k_minus_1, i0;
+  realtype new_norm_2, new_product, vk_norm, temp;
+  
+  vk_norm = RSqrt(N_VDotProd(v[k],v[k]));
+  k_minus_1 = k - 1;
+  i0 = MAX(k-p, 0);
+  
+  /* Perform modified Gram-Schmidt */
+  
+  for (i=i0; i < k; i++) {
+    h[i][k_minus_1] = N_VDotProd(v[i], v[k]);
+    N_VLinearSum(ONE, v[k], -h[i][k_minus_1], v[i], v[k]);
+  }
+
+  /* Compute the norm of the new vector at v[k] */
+
+  *new_vk_norm = RSqrt(N_VDotProd(v[k], v[k]));
+
+  /* If the norm of the new vector at v[k] is less than
+     FACTOR (== 1000) times unit roundoff times the norm of the
+     input vector v[k], then the vector will be reorthogonalized
+     in order to ensure that nonorthogonality is not being masked
+     by a very small vector length. */
+
+  temp = FACTOR * vk_norm;
+  if ((temp + (*new_vk_norm)) != temp) return(0);
+  
+  new_norm_2 = ZERO;
+
+  for (i=i0; i < k; i++) {
+    new_product = N_VDotProd(v[i], v[k]);
+    temp = FACTOR * h[i][k_minus_1];
+    if ((temp + new_product) == temp) continue;
+    h[i][k_minus_1] += new_product;
+    N_VLinearSum(ONE, v[k],-new_product, v[i], v[k]);
+    new_norm_2 += SQR(new_product);
+  }
+
+  if (new_norm_2 != ZERO) {
+    new_product = SQR(*new_vk_norm) - new_norm_2;
+    *new_vk_norm = (new_product > ZERO) ? RSqrt(new_product) : ZERO;
+  }
+
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * Function : ClassicalGS
+ * -----------------------------------------------------------------
+ * This implementation of ClassicalGS was contributed by Homer Walker
+ * and Peter Brown.
+ * -----------------------------------------------------------------
+ */
+
+int ClassicalGS(N_Vector *v, realtype **h, int k, int p, 
+                realtype *new_vk_norm, N_Vector temp, realtype *s)
+{
+  int  i, k_minus_1, i0;
+  realtype vk_norm;
+
+  k_minus_1 = k - 1;
+  
+  /* Perform Classical Gram-Schmidt */
+
+  vk_norm = RSqrt(N_VDotProd(v[k], v[k]));
+
+  i0 = MAX(k-p, 0);
+  for (i=i0; i < k; i++) {
+    h[i][k_minus_1] = N_VDotProd(v[i], v[k]);
+  }
+
+  for (i=i0; i < k; i++) {
+    N_VLinearSum(ONE, v[k], -h[i][k_minus_1], v[i], v[k]);
+  }
+
+  /* Compute the norm of the new vector at v[k] */
+
+  *new_vk_norm = RSqrt(N_VDotProd(v[k], v[k]));
+
+  /* Reorthogonalize if necessary */
+
+  if ((FACTOR * (*new_vk_norm)) < vk_norm) {
+
+    for (i=i0; i < k; i++) {
+      s[i] = N_VDotProd(v[i], v[k]);
+    }
+
+    if (i0 < k) {
+      N_VScale(s[i0], v[i0], temp);
+      h[i0][k_minus_1] += s[i0];
+    }
+    for (i=i0+1; i < k; i++) {
+      N_VLinearSum(s[i], v[i], ONE, temp, temp);
+      h[i][k_minus_1] += s[i];
+    }
+    N_VLinearSum(ONE, v[k], -ONE, temp, v[k]);
+
+    *new_vk_norm = RSqrt(N_VDotProd(v[k],v[k]));
+  }
+
+  return(0);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * Function : QRfact
+ * -----------------------------------------------------------------
+ * This implementation of QRfact is a slight modification of a
+ * previous routine (called qrfact) written by Milo Dorr.
+ * -----------------------------------------------------------------
+ */
+
+int QRfact(int n, realtype **h, realtype *q, int job)
+{
+  realtype c, s, temp1, temp2, temp3;
+  int i, j, k, q_ptr, n_minus_1, code=0;
+
+  switch (job) {
+  case 0:
+
+    /* Compute a new factorization of H */
+
+    code = 0;
+    for (k=0; k < n; k++) {
+      
+      /* Multiply column k by the previous k-1 Givens rotations */
+
+      for (j=0; j < k-1; j++) {
+	i = 2*j;
+	temp1 = h[j][k];
+	temp2 = h[j+1][k];
+	c = q[i];
+	s = q[i+1];
+	h[j][k] = c*temp1 - s*temp2;
+	h[j+1][k] = s*temp1 + c*temp2;
+      }
+      
+      /* Compute the Givens rotation components c and s */
+
+      q_ptr = 2*k;
+      temp1 = h[k][k];
+      temp2 = h[k+1][k];
+      if( temp2 == ZERO) {
+	c = ONE;
+	s = ZERO;
+      } else if (ABS(temp2) >= ABS(temp1)) {
+	temp3 = temp1/temp2;
+	s = -ONE/RSqrt(ONE+SQR(temp3));
+	c = -s*temp3;
+      } else {
+	temp3 = temp2/temp1;
+	c = ONE/RSqrt(ONE+SQR(temp3));
+	s = -c*temp3;
+      }
+      q[q_ptr] = c;
+      q[q_ptr+1] = s;
+      if( (h[k][k] = c*temp1 - s*temp2) == ZERO) code = k+1;
+    }
+    break;
+
+  default:
+
+    /* Update the factored H to which a new column has been added */
+
+    n_minus_1 = n - 1;
+    code = 0;
+    
+    /* Multiply the new column by the previous n-1 Givens rotations */
+
+    for (k=0; k < n_minus_1; k++) {
+      i = 2*k;
+      temp1 = h[k][n_minus_1];
+      temp2 = h[k+1][n_minus_1];
+      c = q[i];
+      s = q[i+1];
+      h[k][n_minus_1] = c*temp1 - s*temp2;
+      h[k+1][n_minus_1] = s*temp1 + c*temp2;
+    }
+    
+    /* Compute new Givens rotation and multiply it times the last two
+       entries in the new column of H.  Note that the second entry of 
+       this product will be 0, so it is not necessary to compute it. */
+
+    temp1 = h[n_minus_1][n_minus_1];
+    temp2 = h[n][n_minus_1];
+    if (temp2 == ZERO) {
+      c = ONE;
+      s = ZERO;
+    } else if (ABS(temp2) >= ABS(temp1)) {
+      temp3 = temp1/temp2;
+      s = -ONE/RSqrt(ONE+SQR(temp3));
+      c = -s*temp3;
+    } else {
+      temp3 = temp2/temp1;
+      c = ONE/RSqrt(ONE+SQR(temp3));
+      s = -c*temp3;
+    }
+    q_ptr = 2*n_minus_1;
+    q[q_ptr] = c;
+    q[q_ptr+1] = s;
+    if ((h[n_minus_1][n_minus_1] = c*temp1 - s*temp2) == ZERO)
+      code = n;
+  }
+  
+  return (code);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * Function : QRsol
+ * -----------------------------------------------------------------
+ * This implementation of QRsol is a slight modification of a
+ * previous routine (called qrsol) written by Milo Dorr.
+ * -----------------------------------------------------------------
+ */
+
+int QRsol(int n, realtype **h, realtype *q, realtype *b)
+{
+  realtype c, s, temp1, temp2;
+  int i, k, q_ptr, code=0;
+
+  /* Compute Q*b */
+  
+  for (k=0; k < n; k++) {
+    q_ptr = 2*k;
+    c = q[q_ptr];
+    s = q[q_ptr+1];
+    temp1 = b[k];
+    temp2 = b[k+1];
+    b[k] = c*temp1 - s*temp2;
+    b[k+1] = s*temp1 + c*temp2;
+  }
+
+  /* Solve  R*x = Q*b */
+
+  for (k=n-1; k >= 0; k--) {
+    if (h[k][k] == ZERO) {
+      code = k + 1;
+      break;
+    }
+    b[k] /= h[k][k];
+    for (i=0; i < k; i++) b[i] -= b[k]*h[i][k];
+  }
+  
+  return (code);
+}
diff --git a/Win32/WinCVODE/sundials/shared/source/nvector.c b/Win32/WinCVODE/sundials/shared/source/nvector.c
new file mode 100644
index 0000000..ca10985
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/source/nvector.c
@@ -0,0 +1,238 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:48:52 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Radu Serban and Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for a generic NVECTOR package.
+ * It contains the implementation of the N_Vector kernels listed
+ * in nvector.h.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdlib.h>
+
+#include "nvector.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Functions in the 'ops' structure
+ * -----------------------------------------------------------------
+ */
+
+N_Vector N_VClone(N_Vector w)
+{
+  N_Vector v;
+  v = w->ops->nvclone(w);
+  return(v);
+}
+
+N_Vector N_VCloneEmpty(N_Vector w)
+{
+  return(w->ops->nvcloneempty(w));
+}
+
+void N_VDestroy(N_Vector v)
+{
+  v->ops->nvdestroy(v);
+}
+
+void N_VSpace(N_Vector v, long int *lrw, long int *liw)
+{
+  v->ops->nvspace(v, lrw, liw);
+}
+
+realtype *N_VGetArrayPointer(N_Vector v)
+{
+  realtype *data;
+  data = v->ops->nvgetarraypointer(v);
+  return(data);
+}
+
+void N_VSetArrayPointer(realtype *v_data, N_Vector v)
+{
+  v->ops->nvsetarraypointer(v_data, v);
+}
+
+void N_VLinearSum(realtype a, N_Vector x, realtype b, N_Vector y, N_Vector z)
+{
+  z->ops->nvlinearsum(a, x, b, y, z);
+}
+
+void N_VConst(realtype c, N_Vector z)
+{
+  z->ops->nvconst(c, z);
+}
+
+void N_VProd(N_Vector x, N_Vector y, N_Vector z)
+{
+  z->ops->nvprod(x, y, z);
+}
+
+void N_VDiv(N_Vector x, N_Vector y, N_Vector z)
+{
+  z->ops->nvdiv(x, y, z);
+}
+
+void N_VScale(realtype c, N_Vector x, N_Vector z) 
+{
+  z->ops->nvscale(c, x, z);
+}
+
+void N_VAbs(N_Vector x, N_Vector z)
+{
+  z->ops->nvabs(x, z);
+}
+
+void N_VInv(N_Vector x, N_Vector z)
+{
+  z->ops->nvinv(x, z);
+}
+
+void N_VAddConst(N_Vector x, realtype b, N_Vector z)
+{
+  z->ops->nvaddconst(x, b, z);
+}
+
+realtype N_VDotProd(N_Vector x, N_Vector y)
+{
+  realtype prod;
+  prod = y->ops->nvdotprod(x, y);
+  return(prod);
+}
+
+realtype N_VMaxNorm(N_Vector x)
+{
+  realtype norm;
+  norm = x->ops->nvmaxnorm(x);
+  return(norm);
+}
+
+realtype N_VWrmsNorm(N_Vector x, N_Vector w)
+{
+  realtype norm;
+  norm = x->ops->nvwrmsnorm(x, w);
+  return(norm);
+}
+
+realtype N_VWrmsNormMask(N_Vector x, N_Vector w, N_Vector id)
+{
+  realtype norm;
+  norm = x->ops->nvwrmsnormmask(x, w, id);
+  return(norm);
+}
+
+realtype N_VMin(N_Vector x)
+{
+  realtype minval;
+  minval = x->ops->nvmin(x);
+  return(minval);
+}
+
+realtype N_VWL2Norm(N_Vector x, N_Vector w)
+{
+  realtype norm;
+  norm = x->ops->nvwl2norm(x, w);
+  return(norm);
+}
+
+realtype N_VL1Norm(N_Vector x)
+{
+  realtype norm;
+  norm = x->ops->nvl1norm(x);
+  return(norm);
+}
+
+void N_VCompare(realtype c, N_Vector x, N_Vector z)
+{
+  z->ops->nvcompare(c, x, z);
+}
+
+booleantype N_VInvTest(N_Vector x, N_Vector z)
+{
+  booleantype flag;
+  flag = z->ops->nvinvtest(x, z);
+  return(flag);
+}
+
+booleantype N_VConstrMask(N_Vector c, N_Vector x, N_Vector m)
+{
+  booleantype flag;
+  flag = x->ops->nvconstrmask(c, x, m);
+  return(flag);
+}
+
+realtype N_VMinQuotient(N_Vector num, N_Vector denom)
+{
+  realtype quotient;
+  quotient = num->ops->nvminquotient(num, denom);
+  return(quotient);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * Additional functions exported by the generic NVECTOR:
+ *   N_VCloneEmptyVectorArray
+ *   N_VCloneVectorArray
+ *   N_VDestroyVectorArray
+ * -----------------------------------------------------------------
+ */
+
+N_Vector *N_VCloneEmptyVectorArray(int count, N_Vector w)
+{
+  N_Vector *vs;
+  int j;
+
+  vs = NULL;
+
+  if (count <= 0) return(NULL);
+
+  vs = (N_Vector *) malloc(count * sizeof(N_Vector));
+  if(vs == NULL) return(NULL);
+
+  for (j = 0; j < count; j++) {
+    vs[j] = N_VCloneEmpty(w);
+    if (vs[j] == NULL) {
+      N_VDestroyVectorArray(vs, j-1);
+      return(NULL);
+    }
+  }
+
+  return(vs);
+}
+
+N_Vector *N_VCloneVectorArray(int count, N_Vector w)
+{
+  N_Vector *vs;
+  int j;
+
+  if (count <= 0) return(NULL);
+
+  vs = (N_Vector *) malloc(count * sizeof(N_Vector));
+  if(vs == NULL) return(NULL);
+
+  for (j=0; j<count; j++) {
+    vs[j] = N_VClone(w);
+    if (vs[j] == NULL) {
+      N_VDestroyVectorArray(vs, j-1);
+      return(NULL);
+    }
+  }
+  
+  return(vs);
+}
+
+void N_VDestroyVectorArray(N_Vector *vs, int count)
+{
+  int j;
+
+  for (j = 0; j < count; j++) N_VDestroy(vs[j]);
+
+  free(vs);
+}
diff --git a/Win32/WinCVODE/sundials/shared/source/smalldense.c b/Win32/WinCVODE/sundials/shared/source/smalldense.c
new file mode 100644
index 0000000..6384045
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/source/smalldense.c
@@ -0,0 +1,242 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:48:52 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen and Alan C. Hindmarsh @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for a generic DENSE linear
+ * solver package, intended for small dense matrices.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "smalldense.h"
+#include "sundialsmath.h"
+#include "sundialstypes.h"
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+
+/* Implementation */
+
+realtype **denalloc(long int n)
+{
+  long int j;
+  realtype **a;
+
+  if (n <= 0) return(NULL);
+
+  a = (realtype **) malloc(n * sizeof(realtype *));
+  if (a == NULL) return(NULL);
+
+  a[0] = (realtype *) malloc(n * n * sizeof(realtype));
+  if (a[0] == NULL) {
+    free(a);
+    return(NULL);
+  }
+
+  for (j=1; j < n; j++) a[j] = a[0] + j * n;
+
+  return(a);
+}
+
+long int *denallocpiv(long int n)
+{
+  if (n <= 0) return(NULL);
+
+  return((long int *) malloc(n * sizeof(long int)));
+}
+
+long int gefa(realtype **a, long int n, long int *p)
+{
+  long int i, j, k, l;
+  realtype *col_j, *col_k, *diag_k;
+  realtype temp, mult, a_kj;
+  booleantype swap;
+
+  /* k = elimination step number */
+
+  for (k=0; k < n-1; k++, p++) {
+
+    col_k     = a[k];
+    diag_k    = col_k + k;
+
+    /* find l = pivot row number */
+
+    l=k;
+    for (i=k+1; i < n; i++)
+      if (ABS(col_k[i]) > ABS(col_k[l])) l=i;
+    *p = l;
+
+    /* check for zero pivot element */
+
+    if (col_k[l] == ZERO) return(k+1);
+    
+    /* swap a(l,k) and a(k,k) if necessary */
+    
+    if ( (swap = (l != k) )) {
+      temp = col_k[l];
+      col_k[l] = *diag_k;
+      *diag_k = temp;
+    }
+
+    /* Scale the elements below the diagonal in         */
+    /* column k by -1.0 / a(k,k). After the above swap, */
+    /* a(k,k) holds the pivot element. This scaling     */
+    /* stores the pivot row multipliers -a(i,k)/a(k,k)  */
+    /* in a(i,k), i=k+1, ..., n-1.                      */
+
+    mult = -ONE / (*diag_k);
+    for(i=k+1; i < n; i++)
+      col_k[i] *= mult;
+
+    /* row_i = row_i - [a(i,k)/a(k,k)] row_k, i=k+1, ..., n-1 */
+    /* row k is the pivot row after swapping with row l.      */
+    /* The computation is done one column at a time,          */
+    /* column j=k+1, ..., n-1.                                */
+
+    for (j=k+1; j < n; j++) {
+
+      col_j = a[j];
+      a_kj = col_j[l];
+
+      /* Swap the elements a(k,j) and a(k,l) if l!=k. */
+
+      if (swap) {
+	col_j[l] = col_j[k];
+	col_j[k] = a_kj;
+      }
+
+      /* a(i,j) = a(i,j) - [a(i,k)/a(k,k)]*a(k,j)  */
+      /* a_kj = a(k,j), col_k[i] = - a(i,k)/a(k,k) */
+
+      if (a_kj != ZERO) {
+	for (i=k+1; i < n; i++)
+	  col_j[i] += a_kj * col_k[i];
+      }
+    }
+  }
+
+  /* set the last pivot row to be n-1 and check for a zero pivot */
+
+  *p = n-1;
+  if (a[n-1][n-1] == ZERO) return(n);
+
+  /* return 0 to indicate success */
+
+  return(0);
+}
+
+void gesl(realtype **a, long int n, long int *p, realtype *b)
+{
+  long int k, l, i;
+  realtype mult, *col_k;
+
+  /* Solve Ly = Pb, store solution y in b */
+
+  for (k=0; k < n-1; k++) {
+    l = p[k];
+    mult = b[l];
+    if (l != k) {
+      b[l] = b[k];
+      b[k] = mult;
+    }
+    col_k = a[k];
+    for (i=k+1; i < n; i++)
+      b[i] += mult*col_k[i];
+  }
+  
+  /* Solve Ux = y, store solution x in b */
+  
+  for (k=n-1; k >= 0; k--) {
+    col_k = a[k];
+    b[k] /= col_k[k];
+    mult = -b[k];
+    for (i=0; i < k; i++)
+      b[i] += mult*col_k[i];
+  }
+}
+
+void denzero(realtype **a, long int n)
+{
+  long int i, j;
+  realtype *col_j;
+
+  for (j=0; j < n; j++) {
+    col_j = a[j];
+    for (i=0; i < n; i++)
+      col_j[i] =  ZERO;
+  }
+}
+
+void dencopy(realtype **a, realtype **b, long int n)
+{
+  long int i, j;
+  realtype *a_col_j, *b_col_j;
+
+  for (j=0; j < n; j++) {
+    a_col_j = a[j];
+    b_col_j = b[j];
+    for (i=0; i < n; i++)
+      b_col_j[i] = a_col_j[i];
+  }
+
+}
+
+void denscale(realtype c, realtype **a, long int n)
+{
+  long int i, j;
+  realtype *col_j;
+
+  for (j=0; j < n; j++) {
+    col_j = a[j];
+    for (i=0; i < n; i++)
+      col_j[i] *= c;
+  }
+}
+
+void denaddI(realtype **a, long int n)
+{
+  long int i;
+  
+  for (i=0; i < n; i++) a[i][i] += ONE;
+}
+
+void denfreepiv(long int *p)
+{
+  free(p);
+}
+
+void denfree(realtype **a)
+{
+  free(a[0]);
+  free(a);
+}
+
+void denprint(realtype **a, long int n)
+{
+  long int i, j;
+
+  printf("\n");
+  for (i=0; i < n; i++) {
+    for (j=0; j < n; j++) {
+#if defined(SUNDIALS_EXTENDED_PRECISION)
+      printf("%10Lg", a[j][i]);
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+      printf("%10lg", a[j][i]);
+#else
+      printf("%10g", a[j][i]);
+#endif
+    }
+    printf("\n");
+  }
+  printf("\n");
+}
diff --git a/Win32/WinCVODE/sundials/shared/source/spgmr.c b/Win32/WinCVODE/sundials/shared/source/spgmr.c
new file mode 100644
index 0000000..993a81b
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/source/spgmr.c
@@ -0,0 +1,441 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:48:52 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for the scaled preconditioned
+ * GMRES (SPGMR) iterative linear solver.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "iterative.h"
+#include "nvector.h"
+#include "spgmr.h"
+#include "sundialsmath.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * private constants
+ * -----------------------------------------------------------------
+ */
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+
+/*
+ * -----------------------------------------------------------------
+ * Function : SpgmrMalloc
+ * -----------------------------------------------------------------
+ */
+
+SpgmrMem SpgmrMalloc(int l_max, N_Vector vec_tmpl)
+{
+  SpgmrMem mem;
+  N_Vector *V, xcor, vtemp;
+  realtype **Hes, *givens, *yg;
+  int k, i;
+ 
+  /* Check the input parameters. */
+
+  if (l_max <= 0) return(NULL);
+
+  /* Get memory for the Krylov basis vectors V[0], ..., V[l_max]. */
+
+  V = N_VCloneVectorArray(l_max+1, vec_tmpl);
+  if (V == NULL) return(NULL);
+
+  /* Get memory for the Hessenberg matrix Hes. */
+
+  Hes = (realtype **) malloc((l_max+1)*sizeof(realtype *)); 
+  if (Hes == NULL) {
+    N_VDestroyVectorArray(V, l_max+1);
+    return(NULL);
+  }
+
+  for (k = 0; k <= l_max; k++) {
+    Hes[k] = (realtype *) malloc(l_max*sizeof(realtype));
+    if (Hes[k] == NULL) {
+      for (i = 0; i < k; i++) free(Hes[i]);
+      N_VDestroyVectorArray(V, l_max+1);
+      return(NULL);
+    }
+  }
+  
+  /* Get memory for Givens rotation components. */
+  
+  givens = (realtype *) malloc(2*l_max*sizeof(realtype));
+  if (givens == NULL) {
+    for (i = 0; i <= l_max; i++) free(Hes[i]);
+    N_VDestroyVectorArray(V, l_max+1);
+    return(NULL);
+  }
+
+  /* Get memory to hold the correction to z_tilde. */
+
+  xcor = N_VClone(vec_tmpl);
+  if (xcor == NULL) {
+    free(givens);
+    for (i = 0; i <= l_max; i++) free(Hes[i]);
+    N_VDestroyVectorArray(V, l_max+1);
+    return(NULL);
+  }
+
+  /* Get memory to hold SPGMR y and g vectors. */
+
+  yg = (realtype *) malloc((l_max+1)*sizeof(realtype));
+  if (yg == NULL) {
+    N_VDestroy(xcor);
+    free(givens);
+    for (i = 0; i <= l_max; i++) free(Hes[i]);
+    N_VDestroyVectorArray(V, l_max+1);
+    return(NULL);
+  }
+
+  /* Get an array to hold a temporary vector. */
+
+  vtemp = N_VClone(vec_tmpl);
+  if (vtemp == NULL) {
+    free(yg);
+    N_VDestroy(xcor);
+    free(givens);
+    for (i = 0; i <= l_max; i++) free(Hes[i]);
+    N_VDestroyVectorArray(V, l_max+1);
+    return(NULL);
+  }
+
+  /* Get memory for an SpgmrMemRec containing SPGMR matrices and vectors. */
+
+  mem = (SpgmrMem) malloc(sizeof(SpgmrMemRec));
+  if (mem == NULL) {
+    N_VDestroy(vtemp);
+    free(yg);
+    N_VDestroy(xcor);
+    free(givens);
+    for (i = 0; i <= l_max; i++) free(Hes[i]);
+    N_VDestroyVectorArray(V, l_max+1);
+    return(NULL); 
+  }
+
+  /* Set the fields of mem. */
+
+  mem->l_max = l_max;
+  mem->V = V;
+  mem->Hes = Hes;
+  mem->givens = givens;
+  mem->xcor = xcor;
+  mem->yg = yg;
+  mem->vtemp = vtemp;
+
+  /* Return the pointer to SPGMR memory. */
+
+  return(mem);
+}
+
+/*
+ * -----------------------------------------------------------------
+ * Function : SpgmrSolve
+ * -----------------------------------------------------------------
+ */
+
+int SpgmrSolve(SpgmrMem mem, void *A_data, N_Vector x, N_Vector b,
+               int pretype, int gstype, realtype delta, int max_restarts,
+               void *P_data, N_Vector s1, N_Vector s2, ATimesFn atimes,
+               PSolveFn psolve, realtype *res_norm, int *nli, int *nps)
+{
+  N_Vector *V, xcor, vtemp;
+  realtype **Hes, *givens, *yg;
+  realtype beta, rotation_product, r_norm, s_product, rho;
+  booleantype preOnLeft, preOnRight, scale2, scale1, converged;
+  int i, j, k, l, l_plus_1, l_max, krydim, ier, ntries;
+
+  if (mem == NULL) return(SPGMR_MEM_NULL);
+
+  /* Initialize some variables */
+
+  l_plus_1 = 0;
+  krydim = 0;
+
+  /* Make local copies of mem variables. */
+
+  l_max  = mem->l_max;
+  V      = mem->V;
+  Hes    = mem->Hes;
+  givens = mem->givens;
+  xcor   = mem->xcor;
+  yg     = mem->yg;
+  vtemp  = mem->vtemp;
+
+  *nli = *nps = 0;    /* Initialize counters */
+  converged = FALSE;  /* Initialize converged flag */
+
+  if (max_restarts < 0) max_restarts = 0;
+
+  if ((pretype != PREC_LEFT) && (pretype != PREC_RIGHT) && (pretype != PREC_BOTH))
+    pretype = PREC_NONE;
+  
+  preOnLeft  = ((pretype == PREC_LEFT) || (pretype == PREC_BOTH));
+  preOnRight = ((pretype == PREC_RIGHT) || (pretype == PREC_BOTH));
+  scale1 = (s1 != NULL);
+  scale2 = (s2 != NULL);
+
+  /* Set vtemp and V[0] to initial (unscaled) residual r_0 = b - A*x_0. */
+
+  if (N_VDotProd(x, x) == ZERO) {
+    N_VScale(ONE, b, vtemp);
+  } else {
+    if (atimes(A_data, x, vtemp) != 0)
+      return(SPGMR_ATIMES_FAIL);
+    N_VLinearSum(ONE, b, -ONE, vtemp, vtemp);
+  }
+  N_VScale(ONE, vtemp, V[0]);
+
+  /* Apply left preconditioner and left scaling to V[0] = r_0. */
+  
+  if (preOnLeft) {
+    ier = psolve(P_data, V[0], vtemp, PREC_LEFT);
+    (*nps)++;
+    if (ier != 0)
+      return((ier < 0) ? SPGMR_PSOLVE_FAIL_UNREC : SPGMR_PSOLVE_FAIL_REC);
+  } else {
+    N_VScale(ONE, V[0], vtemp);
+  }
+  
+  if (scale1) {
+    N_VProd(s1, vtemp, V[0]);   
+  } else {
+    N_VScale(ONE, vtemp, V[0]);
+  }
+
+  /* Set r_norm = beta to L2 norm of V[0] = s1 P1_inv r_0, and
+     return if small.  */
+
+  *res_norm = r_norm = beta = RSqrt(N_VDotProd(V[0], V[0])); 
+  if (r_norm <= delta)
+    return(SPGMR_SUCCESS);
+
+  /* Set xcor = 0. */
+
+  N_VConst(ZERO, xcor);
+
+
+  /* Begin outer iterations: up to (max_restarts + 1) attempts. */
+  
+  for (ntries = 0; ntries <= max_restarts; ntries++) {
+    
+    /* Initialize the Hessenberg matrix Hes and Givens rotation
+       product.  Normalize the initial vector V[0].             */
+    
+    for (i = 0; i <= l_max; i++)
+      for (j = 0; j < l_max; j++)
+        Hes[i][j] = ZERO;
+    
+    rotation_product = ONE;
+    
+    N_VScale(ONE/r_norm, V[0], V[0]);
+    
+    /* Inner loop: generate Krylov sequence and Arnoldi basis. */
+    
+    for (l = 0; l < l_max; l++) {
+      
+      (*nli)++;
+      
+      krydim = l_plus_1 = l + 1;
+      
+      /* Generate A-tilde V[l], where A-tilde = s1 P1_inv A P2_inv s2_inv. */
+      
+      /* Apply right scaling: vtemp = s2_inv V[l]. */
+
+      if (scale2) N_VDiv(V[l], s2, vtemp);
+      else N_VScale(ONE, V[l], vtemp);
+      
+      /* Apply right preconditioner: vtemp = P2_inv s2_inv V[l]. */ 
+
+      if (preOnRight) {
+        N_VScale(ONE, vtemp, V[l_plus_1]);
+        ier = psolve(P_data, V[l_plus_1], vtemp, PREC_RIGHT);
+        (*nps)++;
+        if (ier != 0)
+          return((ier < 0) ? SPGMR_PSOLVE_FAIL_UNREC : SPGMR_PSOLVE_FAIL_REC);
+      }
+      
+      /* Apply A: V[l+1] = A P2_inv s2_inv V[l]. */
+
+      if (atimes(A_data, vtemp, V[l_plus_1] ) != 0)
+        return(SPGMR_ATIMES_FAIL);
+      
+      /* Apply left preconditioning: vtemp = P1_inv A P2_inv s2_inv V[l]. */
+
+      if (preOnLeft) {
+        ier = psolve(P_data, V[l_plus_1], vtemp, PREC_LEFT);
+        (*nps)++;
+        if (ier != 0)
+          return((ier < 0) ? SPGMR_PSOLVE_FAIL_UNREC : SPGMR_PSOLVE_FAIL_REC);
+      } else {
+        N_VScale(ONE, V[l_plus_1], vtemp);
+      }
+      
+      /* Apply left scaling: V[l+1] = s1 P1_inv A P2_inv s2_inv V[l]. */
+
+      if (scale1) {
+        N_VProd(s1, vtemp, V[l_plus_1]);
+      } else {
+        N_VScale(ONE, vtemp, V[l_plus_1]);
+      }
+      
+      /*  Orthogonalize V[l+1] against previous V[i]: V[l+1] = w_tilde. */
+      
+      if (gstype == CLASSICAL_GS) {
+        if (ClassicalGS(V, Hes, l_plus_1, l_max, &(Hes[l_plus_1][l]),
+                        vtemp, yg) != 0)
+          return(SPGMR_GS_FAIL);
+      } else {
+        if (ModifiedGS(V, Hes, l_plus_1, l_max, &(Hes[l_plus_1][l])) != 0) 
+          return(SPGMR_GS_FAIL);
+      }
+      
+      /*  Update the QR factorization of Hes. */
+      
+      if(QRfact(krydim, Hes, givens, l) != 0 )
+        return(SPGMR_QRFACT_FAIL);
+      
+      /*  Update residual norm estimate; break if convergence test passes. */
+      
+      rotation_product *= givens[2*l+1];
+      *res_norm = rho = ABS(rotation_product*r_norm);
+      
+      if (rho <= delta) { converged = TRUE; break; }
+      
+      /* Normalize V[l+1] with norm value from the Gram-Schmidt routine. */
+
+      N_VScale(ONE/Hes[l_plus_1][l], V[l_plus_1], V[l_plus_1]);
+    }
+    
+    /* Inner loop is done.  Compute the new correction vector xcor. */
+    
+    /* Construct g, then solve for y. */
+
+    yg[0] = r_norm;
+    for (i = 1; i <= krydim; i++) yg[i]=ZERO;
+    if (QRsol(krydim, Hes, givens, yg) != 0)
+      return(SPGMR_QRSOL_FAIL);
+    
+    /* Add correction vector V_l y to xcor. */
+
+    for (k = 0; k < krydim; k++)
+      N_VLinearSum(yg[k], V[k], ONE, xcor, xcor);
+    
+    /* If converged, construct the final solution vector x and return. */
+
+    if (converged) {
+      
+      /* Apply right scaling and right precond.: vtemp = P2_inv s2_inv xcor. */
+      
+      if (scale2) N_VDiv(xcor, s2, xcor);
+      if (preOnRight) {
+        ier = psolve(P_data, xcor, vtemp, PREC_RIGHT);
+        (*nps)++;
+        if (ier != 0)
+          return((ier < 0) ? SPGMR_PSOLVE_FAIL_UNREC : SPGMR_PSOLVE_FAIL_REC);
+      } else {
+        N_VScale(ONE, xcor, vtemp);
+      }
+      
+      /* Add vtemp to initial x to get final solution x, and return */
+
+      N_VLinearSum(ONE, x, ONE, vtemp, x);
+      
+      return(SPGMR_SUCCESS);
+    }
+    
+    /* Not yet converged; if allowed, prepare for restart. */
+    
+    if (ntries == max_restarts) break;
+    
+    /* Construct last column of Q in yg. */
+
+    s_product = ONE;
+    for (i = krydim; i > 0; i--) {
+      yg[i] = s_product*givens[2*i-2];
+      s_product *= givens[2*i-1];
+    }
+    yg[0] = s_product;
+    
+    /* Scale r_norm and yg. */
+    r_norm *= s_product;
+    for (i = 0; i <= krydim; i++)
+      yg[i] *= r_norm;
+    r_norm = ABS(r_norm);
+    
+    /* Multiply yg by V_(krydim+1) to get last residual vector; restart. */
+    N_VScale(yg[0], V[0], V[0]);
+    for (k = 1; k <= krydim; k++)
+      N_VLinearSum(yg[k], V[k], ONE, V[0], V[0]);
+    
+  }
+  
+  /* Failed to converge, even after allowed restarts.
+     If the residual norm was reduced below its initial value, compute
+     and return x anyway.  Otherwise return failure flag. */
+
+  if (rho < beta) {
+    
+    /* Apply right scaling and right precond.: vtemp = P2_inv s2_inv xcor. */
+    
+    if (scale2) N_VDiv(xcor, s2, xcor);
+    if (preOnRight) {
+      ier = psolve(P_data, xcor, vtemp, PREC_RIGHT);
+      (*nps)++;
+      if (ier != 0)
+        return((ier < 0) ? SPGMR_PSOLVE_FAIL_UNREC : SPGMR_PSOLVE_FAIL_REC);
+      } else {
+      N_VScale(ONE, xcor, vtemp);
+    }
+
+    /* Add vtemp to initial x to get final solution x, and return. */
+
+    N_VLinearSum(ONE, x, ONE, vtemp, x);
+    
+    return(SPGMR_RES_REDUCED);
+  }
+
+  return(SPGMR_CONV_FAIL); 
+}
+
+/*
+ * -----------------------------------------------------------------
+ * Function : SpgmrFree
+ * -----------------------------------------------------------------
+ */
+
+void SpgmrFree(SpgmrMem mem)
+{
+  int i, l_max;
+  realtype **Hes;
+  
+  if (mem == NULL) return;
+
+  l_max = mem->l_max;
+  Hes = mem->Hes;
+
+  N_VDestroyVectorArray(mem->V, l_max+1);
+  for (i = 0; i <= l_max; i++) free(Hes[i]);
+  free(Hes);
+  free(mem->givens);
+  N_VDestroy(mem->xcor);
+  free(mem->yg);
+  N_VDestroy(mem->vtemp);
+
+  free(mem);
+}
diff --git a/Win32/WinCVODE/sundials/shared/source/sundialsmath.c b/Win32/WinCVODE/sundials/shared/source/sundialsmath.c
new file mode 100644
index 0000000..ba0e8d9
--- /dev/null
+++ b/Win32/WinCVODE/sundials/shared/source/sundialsmath.c
@@ -0,0 +1,88 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2005/10/27 13:48:52 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the implementation file for a simple C-language math
+ * library.
+ * -----------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include "sundialsmath.h"
+#include "sundialstypes.h"
+
+#define ZERO RCONST(0.0)
+#define ONE  RCONST(1.0)
+#define TWO  RCONST(2.0)
+
+realtype RPowerI(realtype base, int exponent)
+{
+  int i, expt;
+  realtype prod;
+
+  prod = ONE;
+  expt = abs(exponent);
+  for(i = 1; i <= expt; i++) prod *= base;
+  if (exponent < 0) prod = ONE/prod;
+  return(prod);
+}
+
+realtype RPowerR(realtype base, realtype exponent)
+{
+  if (base <= ZERO) return(ZERO);
+
+#if defined(SUNDIALS_USE_GENERIC_MATH)
+  return((realtype) pow((double) base, (double) exponent));
+#elif defined(SUNDIALS_SINGLE_PRECISION)
+  return(powf(base, exponent));
+#elif defined(SUNDIALS_EXTENDED_PRECISION)
+  return(powl(base, exponent));
+#endif
+}
+
+realtype RSqrt(realtype x)
+{
+  if (x <= ZERO) return(ZERO);
+
+#if defined(SUNDIALS_USE_GENERIC_MATH)
+  return((realtype) sqrt((double) x));
+#elif defined(SUNDIALS_SINGLE_PRECISION)
+  return(sqrtf(x));
+#elif defined(SUNDIALS_EXTENDED_PRECISION)
+  return(sqrtl(x));
+#endif
+}
+
+realtype RAbs(realtype x)
+{
+#if defined(SUNDIALS_USE_GENERIC_MATH)
+  return((realtype) fabs((double) x));
+#elif defined(SUNDIALS_SINGLE_PRECISION)
+  return(fabsf(x));
+#elif defined(SUNDIALS_EXTENDED_PRECISION)
+  return(fabsl(x));
+#endif
+}
+
+realtype RPower2(realtype x)
+{
+#if defined(SUNDIALS_USE_GENERIC_MATH)
+  return((realtype) pow((double) x, 2.0));
+#elif defined(SUNDIALS_SINGLE_PRECISION)
+  return(powf(x, TWO));
+#elif defined(SUNDIALS_EXTENDED_PRECISION)
+  return(powl(x, TWO));
+#endif
+}
diff --git a/Win32/bin/.cvsignore b/Win32/bin/.cvsignore
new file mode 100644
index 0000000..f2c4ee5
--- /dev/null
+++ b/Win32/bin/.cvsignore
@@ -0,0 +1 @@
+*.*
diff --git a/Win32/bin/tcc/include/_mingw.h b/Win32/bin/tcc/include/_mingw.h
new file mode 100644
index 0000000..9029920
--- /dev/null
+++ b/Win32/bin/tcc/include/_mingw.h
@@ -0,0 +1,51 @@
+/*
+ * _mingw.h
+ *
+ *  This file is for TCC-PE and not part of the Mingw32 package.
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __MINGW_H
+#define __MINGW_H
+
+#define __int64 long long
+#define __int32 long
+#define __int16 short
+#define __int8  char
+#define __cdecl         __attribute__((__cdecl__))
+#define __stdcall       __attribute__((__stdcall__))
+#define __declspec(x)   __attribute__((x))
+
+#define __MINGW32_VERSION 2.0
+#define __MINGW32_MAJOR_VERSION 2
+#define __MINGW32_MINOR_VERSION 0
+
+#define __MSVCRT__
+#define __MINGW_IMPORT  extern
+#define _CRTIMP
+#define __CRT_INLINE    extern __inline__
+
+#define _WIN32
+#define WIN32
+
+#ifndef _WINT_T
+#define _WINT_T
+typedef unsigned int wint_t;
+#endif
+
+/* for winapi */
+#define NONAMELESSUNION
+#define DECLSPEC_NORETURN
+#define WIN32_LEAN_AND_MEAN
+
+#endif /* __MINGW_H */
diff --git a/Win32/bin/tcc/include/assert.h b/Win32/bin/tcc/include/assert.h
new file mode 100644
index 0000000..603ee3b
--- /dev/null
+++ b/Win32/bin/tcc/include/assert.h
@@ -0,0 +1,71 @@
+/* 
+ * assert.h
+ *
+ * Define the assert macro for debug output.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef _ASSERT_H_
+#define	_ASSERT_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#ifndef RC_INVOKED
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+#ifdef NDEBUG
+
+/*
+ * If not debugging, assert does nothing.
+ */
+#define assert(x)	((void)0)
+
+#else /* debugging enabled */
+
+/*
+ * CRTDLL nicely supplies a function which does the actual output and
+ * call to abort.
+ */
+void	_assert (const char*, const char*, int)
+#ifdef	__GNUC__
+	__attribute__ ((noreturn))
+#endif
+	;
+
+/*
+ * Definition of the assert macro.
+ */
+#define assert(e)       ((e) ? (void)0 : _assert(#e, __FILE__, __LINE__))
+#endif	/* NDEBUG */
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif /* Not RC_INVOKED */
+
+#endif /* Not _ASSERT_H_ */
+
diff --git a/Win32/bin/tcc/include/conio.h b/Win32/bin/tcc/include/conio.h
new file mode 100644
index 0000000..4f249d9
--- /dev/null
+++ b/Win32/bin/tcc/include/conio.h
@@ -0,0 +1,159 @@
+/* A conio implementation for Mingw/Dev-C++.
+ *
+ * Written by:
+ * Hongli Lai <hongli at telekabel.nl>
+ * tkorrovi <tkorrovi at altavista.net> on 2002/02/26. 
+ * Andrew Westcott <ajwestco at users.sourceforge.net>
+ *
+ * Offered for use in the public domain without any warranty.
+ */
+
+#ifndef _CONIO_H_
+#define _CONIO_H_
+
+
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define BLINK 0
+
+typedef enum
+{
+    BLACK,
+    BLUE,
+    GREEN,
+    CYAN,
+    RED,
+    MAGENTA,
+    BROWN,
+    LIGHTGRAY,
+    DARKGRAY,
+    LIGHTBLUE,
+    LIGHTGREEN,
+    LIGHTCYAN,
+    LIGHTRED,
+    LIGHTMAGENTA,
+    YELLOW,
+    WHITE
+} COLORS;
+
+
+#define cgets	_cgets
+#define cprintf	_cprintf
+#define cputs	_cputs
+#define cscanf	_cscanf
+#define ScreenClear clrscr
+
+/* blinkvideo */
+
+void clreol (void);
+void clrscr (void);
+
+int _conio_gettext (int left, int top, int right, int bottom,
+                    char *str);
+/* _conio_kbhit */
+
+void delline (void);
+
+/* gettextinfo */
+void gotoxy(int x, int y);
+/*
+highvideo
+insline
+intensevideo
+lowvideo
+movetext
+normvideo
+*/
+
+void puttext (int left, int top, int right, int bottom, char *str);
+
+// Screen Variables
+
+/* ScreenCols
+ScreenGetChar
+ScreenGetCursor
+ScreenMode
+ScreenPutChar
+ScreenPutString
+ScreenRetrieve
+ScreenRows
+ScreenSetCursor
+ScreenUpdate
+ScreenUpdateLine
+ScreenVisualBell
+_set_screen_lines */
+
+void _setcursortype (int type);
+
+void textattr (int _attr);
+
+void textbackground (int color);
+
+void textcolor (int color);
+
+/* textmode */
+
+int wherex (void);
+
+int wherey (void);
+
+/* window */
+
+
+
+/*  The code below was part of Mingw's conio.h  */
+/*
+ * conio.h
+ *
+ * Low level console I/O functions. Pretty please try to use the ANSI
+ * standard ones if you are writing new code.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+char*	_cgets (char*);
+int	_cprintf (const char*, ...);
+int	_cputs (const char*);
+int	_cscanf (char*, ...);
+
+int	_getch (void);
+int	_getche (void);
+int	_kbhit (void);
+int	_putch (int);
+int	_ungetch (int);
+
+
+int	getch (void);
+int	getche (void);
+int	kbhit (void);
+int	putch (int);
+int	ungetch (int);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CONIO_H_ */
diff --git a/Win32/bin/tcc/include/ctype.h b/Win32/bin/tcc/include/ctype.h
new file mode 100644
index 0000000..e17f617
--- /dev/null
+++ b/Win32/bin/tcc/include/ctype.h
@@ -0,0 +1,232 @@
+/* 
+ * ctype.h
+ *
+ * Functions for testing character types and converting characters.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef _CTYPE_H_
+#define _CTYPE_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#define	__need_wchar_t
+#define	__need_wint_t
+#ifndef RC_INVOKED
+#include <stddef.h>
+#endif	/* Not RC_INVOKED */
+
+
+/*
+ * The following flags are used to tell iswctype and _isctype what character
+ * types you are looking for.
+ */
+#define	_UPPER		0x0001
+#define	_LOWER		0x0002
+#define	_DIGIT		0x0004
+#define	_SPACE		0x0008 /* HT  LF  VT  FF  CR  SP */
+#define	_PUNCT		0x0010
+#define	_CONTROL	0x0020
+#define	_BLANK		0x0040 /* this is SP only, not SP and HT as in C99  */
+#define	_HEX		0x0080
+#define	_LEADBYTE	0x8000
+
+#define	_ALPHA		0x0103
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int	isalnum(int);
+int	isalpha(int);
+int	iscntrl(int);
+int	isdigit(int);
+int	isgraph(int);
+int	islower(int);
+int	isprint(int);
+int	ispunct(int);
+int	isspace(int);
+int	isupper(int);
+int	isxdigit(int);
+
+#ifndef __STRICT_ANSI__
+int	_isctype (int, int);
+#endif
+
+/* These are the ANSI versions, with correct checking of argument */
+int	tolower(int);
+int	toupper(int);
+
+/*
+ * NOTE: The above are not old name type wrappers, but functions exported
+ * explicitly by MSVCRT/CRTDLL. However, underscored versions are also
+ * exported.
+ */
+#ifndef	__STRICT_ANSI__
+/*
+ *  These are the cheap non-std versions: The return values are undefined
+ *  if the argument is not ASCII char or is not of appropriate case
+ */ 
+int	_tolower(int);
+int	_toupper(int);
+#endif
+
+/* Also defined in stdlib.h */
+#ifndef MB_CUR_MAX
+# ifdef __MSVCRT__
+#  define MB_CUR_MAX __mb_cur_max
+   __MINGW_IMPORT int __mb_cur_max;
+# else /* not __MSVCRT */
+#  define MB_CUR_MAX __mb_cur_max_dll
+   __MINGW_IMPORT int __mb_cur_max_dll;
+# endif /* not __MSVCRT */
+#endif  /* MB_CUR_MAX */
+
+__MINGW_IMPORT unsigned short _ctype[];
+#ifdef __MSVCRT__
+__MINGW_IMPORT unsigned short* _pctype;
+#else /* CRTDLL */
+__MINGW_IMPORT unsigned short* _pctype_dll;
+#define  _pctype _pctype_dll
+#endif
+
+/*
+ * Use inlines here rather than macros, because macros will upset 
+ * C++ usage (eg, ::isalnum), and so usually get undefined
+ *
+ * According to standard for SB chars, these function are defined only
+ * for input values representable by unsigned char or EOF.
+ * Thus, there is no range test.
+ * This reproduces behaviour of MSVCRT.dll lib implemention for SB chars.
+ *
+ * If no MB char support is needed, these can be simplified even
+ * more by command line define -DMB_CUR_MAX=1.  The compiler will then
+ * optimise away the constant condition.			
+ */
+
+
+#if ! (defined (__NO_CTYPE_INLINES) || defined (__STRICT_ANSI__ ))
+/* use  simple lookup if SB locale, else  _isctype()  */
+#define __ISCTYPE(c, mask)  (MB_CUR_MAX == 1 ? (_pctype[c] & mask) : _isctype(c, mask))
+extern __inline__ int isalnum(int c) {return __ISCTYPE(c, (_ALPHA|_DIGIT));}
+extern __inline__ int isalpha(int c) {return __ISCTYPE(c, _ALPHA);}
+extern __inline__ int iscntrl(int c) {return __ISCTYPE(c, _CONTROL);}
+extern __inline__ int isdigit(int c) {return __ISCTYPE(c, _DIGIT);}
+extern __inline__ int isgraph(int c) {return __ISCTYPE(c, (_PUNCT|_ALPHA|_DIGIT));}
+extern __inline__ int islower(int c) {return __ISCTYPE(c, _LOWER);}
+extern __inline__ int isprint(int c) {return __ISCTYPE(c, (_BLANK|_PUNCT|_ALPHA|_DIGIT));}
+extern __inline__ int ispunct(int c) {return __ISCTYPE(c, _PUNCT);}
+extern __inline__ int isspace(int c) {return __ISCTYPE(c, _SPACE);}
+extern __inline__ int isupper(int c) {return __ISCTYPE(c, _UPPER);}
+extern __inline__ int isxdigit(int c) {return __ISCTYPE(c, _HEX);}
+
+/* these reproduce behaviour of lib underscored versions  */
+extern __inline__ int _tolower(int c) {return ( c -'A'+'a');}
+extern __inline__ int _toupper(int c) {return ( c -'a'+'A');}
+
+/* TODO? Is it worth inlining ANSI tolower, toupper? Probably only
+   if we only want C-locale. */
+
+#endif /* _NO_CTYPE_INLINES */
+
+/* Wide character equivalents */
+
+#ifndef WEOF
+#define	WEOF	(wchar_t)(0xFFFF)
+#endif
+
+#ifndef _WCTYPE_T_DEFINED
+typedef wchar_t wctype_t;
+#define _WCTYPE_T_DEFINED
+#endif
+
+int	iswalnum(wint_t);
+int	iswalpha(wint_t);
+int	iswascii(wint_t);
+int	iswcntrl(wint_t);
+int	iswctype(wint_t, wctype_t);
+int	is_wctype(wint_t, wctype_t);	/* Obsolete! */
+int	iswdigit(wint_t);
+int	iswgraph(wint_t);
+int	iswlower(wint_t);
+int	iswprint(wint_t);
+int	iswpunct(wint_t);
+int	iswspace(wint_t);
+int	iswupper(wint_t);
+int	iswxdigit(wint_t);
+
+wchar_t	towlower(wchar_t);
+wchar_t	towupper(wchar_t);
+
+int	isleadbyte (int);
+
+/* Also in wctype.h */
+#if ! (defined(__NO_CTYPE_INLINES) || defined(__WCTYPE_INLINES_DEFINED))
+#define __WCTYPE_INLINES_DEFINED
+extern __inline__ int iswalnum(wint_t wc) {return (iswctype(wc,_ALPHA|_DIGIT));}
+extern __inline__ int iswalpha(wint_t wc) {return (iswctype(wc,_ALPHA));}
+extern __inline__ int iswascii(wint_t wc) {return (((unsigned)wc & 0x7F) ==0);}
+extern __inline__ int iswcntrl(wint_t wc) {return (iswctype(wc,_CONTROL));}
+extern __inline__ int iswdigit(wint_t wc) {return (iswctype(wc,_DIGIT));}
+extern __inline__ int iswgraph(wint_t wc) {return (iswctype(wc,_PUNCT|_ALPHA|_DIGIT));}
+extern __inline__ int iswlower(wint_t wc) {return (iswctype(wc,_LOWER));}
+extern __inline__ int iswprint(wint_t wc) {return (iswctype(wc,_BLANK|_PUNCT|_ALPHA|_DIGIT));}
+extern __inline__ int iswpunct(wint_t wc) {return (iswctype(wc,_PUNCT));}
+extern __inline__ int iswspace(wint_t wc) {return (iswctype(wc,_SPACE));}
+extern __inline__ int iswupper(wint_t wc) {return (iswctype(wc,_UPPER));}
+extern __inline__ int iswxdigit(wint_t wc) {return (iswctype(wc,_HEX));}
+extern __inline__ int isleadbyte(int c) {return (_pctype[(unsigned char)(c)] & _LEADBYTE);}
+#endif /* !(defined(__NO_CTYPE_INLINES) || defined(__WCTYPE_INLINES_DEFINED)) */
+
+#ifndef	__STRICT_ANSI__
+int	__isascii (int);
+int	__toascii (int);
+int	__iscsymf (int);	/* Valid first character in C symbol */
+int	__iscsym (int);		/* Valid character in C symbol (after first) */
+
+#ifndef __NO_CTYPE_INLINES
+extern __inline__ int __isascii(int c) {return (((unsigned)c & ~0x7F) == 0);} 
+extern __inline__ int __toascii(int c) {return (c & 0x7F);}
+extern __inline__ int __iscsymf(int c) {return (isalpha(c) || (c == '_'));}
+extern __inline__ int __iscsym(int c)  {return  (isalnum(c) || (c == '_'));}
+#endif /* __NO_CTYPE_INLINES */
+
+#ifndef	_NO_OLDNAMES
+int	isascii (int);
+int	toascii (int);
+int	iscsymf (int);
+int	iscsym (int);
+#endif	/* Not _NO_OLDNAMES */
+
+#endif	/* Not __STRICT_ANSI__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _CTYPE_H_ */
+
diff --git a/Win32/bin/tcc/include/dir.h b/Win32/bin/tcc/include/dir.h
new file mode 100644
index 0000000..638e08b
--- /dev/null
+++ b/Win32/bin/tcc/include/dir.h
@@ -0,0 +1,26 @@
+/* 
+ * dir.h
+ *
+ * This file OBSOLESCENT and only provided for backward compatibility.
+ * Please use io.h instead.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *             Mumit Khan <khan at xraylith.wisc.edu>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#include <io.h>
+
diff --git a/Win32/bin/tcc/include/direct.h b/Win32/bin/tcc/include/direct.h
new file mode 100644
index 0000000..6e9f10d
--- /dev/null
+++ b/Win32/bin/tcc/include/direct.h
@@ -0,0 +1,95 @@
+/*
+ * direct.h
+ *
+ * Functions for manipulating paths and directories (included from io.h)
+ * plus functions for setting the current drive.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef __STRICT_ANSI__
+
+#ifndef	_DIRECT_H_
+#define	_DIRECT_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#define __need_wchar_t
+#ifndef RC_INVOKED
+#include <stddef.h>
+#endif	/* Not RC_INVOKED */
+
+#include <io.h>
+
+#ifndef RC_INVOKED
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+#ifndef _DISKFREE_T_DEFINED
+/* needed by _getdiskfree (also in dos.h) */
+struct _diskfree_t {
+	unsigned total_clusters;
+	unsigned avail_clusters;
+	unsigned sectors_per_cluster;
+	unsigned bytes_per_sector;
+};
+#define _DISKFREE_T_DEFINED
+#endif  
+
+/*
+ * You really shouldn't be using these. Use the Win32 API functions instead.
+ * However, it does make it easier to port older code.
+ */
+int	_getdrive (void);
+unsigned long _getdrives(void);
+int	_chdrive (int);
+char*	_getdcwd (int, char*, int);
+unsigned _getdiskfree (unsigned, struct _diskfree_t *);
+
+#ifndef	_NO_OLDNAMES
+# define diskfree_t _diskfree_t
+#endif
+
+#ifndef _WDIRECT_DEFINED
+/* wide character versions. Also in wchar.h */
+#ifdef __MSVCRT__ 
+int _wchdir(const wchar_t*);
+wchar_t* _wgetcwd(wchar_t*, int);
+wchar_t* _wgetdcwd(int, wchar_t*, int);
+int _wmkdir(const wchar_t*);
+int _wrmdir(const wchar_t*);
+#endif	/* __MSVCRT__ */
+#define _WDIRECT_DEFINED
+#endif
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _DIRECT_H_ */
+
+#endif	/* Not __STRICT_ANSI__ */
+
diff --git a/Win32/bin/tcc/include/dirent.h b/Win32/bin/tcc/include/dirent.h
new file mode 100644
index 0000000..1c43fd9
--- /dev/null
+++ b/Win32/bin/tcc/include/dirent.h
@@ -0,0 +1,96 @@
+/*
+ * DIRENT.H (formerly DIRLIB.H)
+ *
+ * by M. J. Weinstein   Released to public domain 1-Jan-89
+ *
+ * Because I have heard that this feature (opendir, readdir, closedir)
+ * it so useful for programmers coming from UNIX or attempting to port
+ * UNIX code, and because it is reasonably light weight, I have included
+ * it in the Mingw32 package. I have also added an implementation of
+ * rewinddir, seekdir and telldir.
+ *   - Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  This code is distributed in the hope that is will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includeds but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef	__STRICT_ANSI__
+
+#ifndef _DIRENT_H_
+#define _DIRENT_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#include <io.h>
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct dirent
+{
+	long		d_ino;		/* Always zero. */
+	unsigned short	d_reclen;	/* Always zero. */
+	unsigned short	d_namlen;	/* Length of name in d_name. */
+	char*		d_name;		/* File name. */
+	/* NOTE: The name in the dirent structure points to the name in the
+	 *       finddata_t structure in the DIR. */
+};
+
+/*
+ * This is an internal data structure. Good programmers will not use it
+ * except as an argument to one of the functions below.
+ */
+typedef struct
+{
+	/* disk transfer area for this dir */
+	struct _finddata_t	dd_dta;
+
+	/* dirent struct to return from dir (NOTE: this makes this thread
+	 * safe as long as only one thread uses a particular DIR struct at
+	 * a time) */
+	struct dirent		dd_dir;
+
+	/* _findnext handle */
+	long			dd_handle;
+
+	/*
+         * Status of search:
+	 *   0 = not started yet (next entry to read is first entry)
+	 *  -1 = off the end
+	 *   positive = 0 based index of next entry
+	 */
+	short			dd_stat;
+
+	/* given path for dir with search pattern (struct is extended) */
+	char			dd_name[1];
+} DIR;
+
+
+DIR*		opendir (const char*);
+struct dirent*	readdir (DIR*);
+int		closedir (DIR*);
+void		rewinddir (DIR*);
+long		telldir (DIR*);
+void		seekdir (DIR*, long);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _DIRENT_H_ */
+
+#endif	/* Not __STRICT_ANSI__ */
+
diff --git a/Win32/bin/tcc/include/dos.h b/Win32/bin/tcc/include/dos.h
new file mode 100644
index 0000000..ae2432c
--- /dev/null
+++ b/Win32/bin/tcc/include/dos.h
@@ -0,0 +1,110 @@
+/*
+ * dos.h
+ *
+ * DOS-specific functions and structures.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by J.J. van der Heijden <J.J.vanderHeijden at student.utwente.nl>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef	__STRICT_ANSI__
+
+#ifndef	_DOS_H_
+#define	_DOS_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#define __need_wchar_t
+#ifndef RC_INVOKED
+#include <stddef.h>
+#endif	/* Not RC_INVOKED */
+
+/* For DOS file attributes */
+#include <io.h>
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef __MSVCRT__ /* these are in CRTDLL, but not MSVCRT */
+#ifndef __DECLSPEC_SUPPORTED
+extern unsigned int *__imp__basemajor_dll;
+extern unsigned int *__imp__baseminor_dll;
+extern unsigned int *__imp__baseversion_dll;
+extern unsigned int *__imp__osmajor_dll;
+extern unsigned int *__imp__osminor_dll;
+extern unsigned int *__imp__osmode_dll;
+
+#define _basemajor (*__imp__basemajor_dll)
+#define _baseminor (*__imp__baseminor_dll)
+#define _baseversion (*__imp__baseversion_dll)
+#define _osmajor (*__imp__osmajor_dll)
+#define _osminor (*__imp__osminor_dll)
+#define _osmode (*__imp__osmode_dll)
+
+#else /* __DECLSPEC_SUPPORTED */
+
+__MINGW_IMPORT unsigned int _basemajor_dll;
+__MINGW_IMPORT unsigned int _baseminor_dll;
+__MINGW_IMPORT unsigned int _baseversion_dll;
+__MINGW_IMPORT unsigned int _osmajor_dll;
+__MINGW_IMPORT unsigned int _osminor_dll;
+__MINGW_IMPORT unsigned int _osmode_dll;
+
+#define _basemajor _basemajor_dll
+#define _baseminor _baseminor_dll
+#define _baseversion _baseversion_dll
+#define _osmajor _osmajor_dll
+#define _osminor _osminor_dll
+#define _osmode _osmode_dll
+
+#endif /* __DECLSPEC_SUPPORTED */
+#endif /* ! __MSVCRT__ */
+
+#ifndef _DISKFREE_T_DEFINED
+/* needed by _getdiskfree (also in direct.h) */
+struct _diskfree_t {
+	unsigned total_clusters;
+	unsigned avail_clusters;
+	unsigned sectors_per_cluster;
+	unsigned bytes_per_sector;
+};
+#define _DISKFREE_T_DEFINED
+#endif  
+
+unsigned _getdiskfree (unsigned, struct _diskfree_t *);
+
+#ifndef	_NO_OLDNAMES
+# define diskfree_t _diskfree_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _DOS_H_ */
+
+#endif	/* Not __STRICT_ANSI__ */
+
diff --git a/Win32/bin/tcc/include/errno.h b/Win32/bin/tcc/include/errno.h
new file mode 100644
index 0000000..8e4c4cb
--- /dev/null
+++ b/Win32/bin/tcc/include/errno.h
@@ -0,0 +1,117 @@
+/* 
+ * errno.h
+ *
+ * Error numbers and access to error reporting.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef _ERRNO_H_
+#define	_ERRNO_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * Error numbers.
+ * TODO: Can't be sure of some of these assignments, I guessed from the
+ * names given by strerror and the defines in the Cygnus errno.h. A lot
+ * of the names from the Cygnus errno.h are not represented, and a few
+ * of the descriptions returned by strerror do not obviously match
+ * their error naming.
+ */
+#define EPERM		1	/* Operation not permitted */
+#define	ENOFILE		2	/* No such file or directory */
+#define	ENOENT		2
+#define	ESRCH		3	/* No such process */
+#define	EINTR		4	/* Interrupted function call */
+#define	EIO		5	/* Input/output error */
+#define	ENXIO		6	/* No such device or address */
+#define	E2BIG		7	/* Arg list too long */
+#define	ENOEXEC		8	/* Exec format error */
+#define	EBADF		9	/* Bad file descriptor */
+#define	ECHILD		10	/* No child processes */
+#define	EAGAIN		11	/* Resource temporarily unavailable */
+#define	ENOMEM		12	/* Not enough space */
+#define	EACCES		13	/* Permission denied */
+#define	EFAULT		14	/* Bad address */
+/* 15 - Unknown Error */
+#define	EBUSY		16	/* strerror reports "Resource device" */
+#define	EEXIST		17	/* File exists */
+#define	EXDEV		18	/* Improper link (cross-device link?) */
+#define	ENODEV		19	/* No such device */
+#define	ENOTDIR		20	/* Not a directory */
+#define	EISDIR		21	/* Is a directory */
+#define	EINVAL		22	/* Invalid argument */
+#define	ENFILE		23	/* Too many open files in system */
+#define	EMFILE		24	/* Too many open files */
+#define	ENOTTY		25	/* Inappropriate I/O control operation */
+/* 26 - Unknown Error */
+#define	EFBIG		27	/* File too large */
+#define	ENOSPC		28	/* No space left on device */
+#define	ESPIPE		29	/* Invalid seek (seek on a pipe?) */
+#define	EROFS		30	/* Read-only file system */
+#define	EMLINK		31	/* Too many links */
+#define	EPIPE		32	/* Broken pipe */
+#define	EDOM		33	/* Domain error (math functions) */
+#define	ERANGE		34	/* Result too large (possibly too small) */
+/* 35 - Unknown Error */
+#define	EDEADLOCK	36	/* Resource deadlock avoided (non-Cyg) */
+#define	EDEADLK		36
+/* 37 - Unknown Error */
+#define	ENAMETOOLONG	38	/* Filename too long (91 in Cyg?) */
+#define	ENOLCK		39	/* No locks available (46 in Cyg?) */
+#define	ENOSYS		40	/* Function not implemented (88 in Cyg?) */
+#define	ENOTEMPTY	41	/* Directory not empty (90 in Cyg?) */
+#define	EILSEQ		42	/* Illegal byte sequence */
+
+/*
+ * NOTE: ENAMETOOLONG and ENOTEMPTY conflict with definitions in the
+ *       sockets.h header provided with windows32api-0.1.2.
+ *       You should go and put an #if 0 ... #endif around the whole block
+ *       of errors (look at the comment above them).
+ */
+
+#ifndef	RC_INVOKED
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/*
+ * Definitions of errno. For _doserrno, sys_nerr and * sys_errlist, see
+ * stdlib.h.
+ */
+#ifdef _UWIN
+#undef errno
+extern int errno;
+#else
+int*	_errno(void);
+#define	errno		(*_errno())
+#endif
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _ERRNO_H_ */
diff --git a/Win32/bin/tcc/include/excpt.h b/Win32/bin/tcc/include/excpt.h
new file mode 100644
index 0000000..a9596ab
--- /dev/null
+++ b/Win32/bin/tcc/include/excpt.h
@@ -0,0 +1,20 @@
+#ifndef _EXCPT_H
+#define _EXCPT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+/* FIXME: This will make some code compile. The programs will most
+   likely crash when an exception is raised, but at least they will
+   compile. */
+#ifdef __GNUC__
+#define __try
+#define __except(x) if (0) /* don't execute handler */
+#define __finally
+
+#define _try __try
+#define _except __except
+#define _finally __finally
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/fcntl.h b/Win32/bin/tcc/include/fcntl.h
new file mode 100644
index 0000000..95d6af4
--- /dev/null
+++ b/Win32/bin/tcc/include/fcntl.h
@@ -0,0 +1,135 @@
+/*
+ * fcntl.h
+ *
+ * Access constants for _open. Note that the permissions constants are
+ * in sys/stat.h (ick).
+ *
+ * This code is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef __STRICT_ANSI__
+
+#ifndef _FCNTL_H_
+#define _FCNTL_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * It appears that fcntl.h should include io.h for compatibility...
+ */
+#include <io.h>
+
+/* Specifiy one of these flags to define the access mode. */
+#define	_O_RDONLY	0
+#define _O_WRONLY	1
+#define _O_RDWR		2
+
+/* Mask for access mode bits in the _open flags. */
+#define _O_ACCMODE	(_O_RDONLY|_O_WRONLY|_O_RDWR)
+
+#define	_O_APPEND	0x0008	/* Writes will add to the end of the file. */
+
+#define	_O_RANDOM	0x0010
+#define	_O_SEQUENTIAL	0x0020
+#define	_O_TEMPORARY	0x0040	/* Make the file dissappear after closing.
+				 * WARNING: Even if not created by _open! */
+#define	_O_NOINHERIT	0x0080
+
+#define	_O_CREAT	0x0100	/* Create the file if it does not exist. */
+#define	_O_TRUNC	0x0200	/* Truncate the file if it does exist. */
+#define	_O_EXCL		0x0400	/* Open only if the file does not exist. */
+
+/* NOTE: Text is the default even if the given _O_TEXT bit is not on. */
+#define	_O_TEXT		0x4000	/* CR-LF in file becomes LF in memory. */
+#define	_O_BINARY	0x8000	/* Input and output is not translated. */
+#define	_O_RAW		_O_BINARY
+
+#ifndef	_NO_OLDNAMES
+
+/* POSIX/Non-ANSI names for increased portability */
+#define	O_RDONLY	_O_RDONLY
+#define O_WRONLY	_O_WRONLY
+#define O_RDWR		_O_RDWR
+#define O_ACCMODE	_O_ACCMODE
+#define	O_APPEND	_O_APPEND
+#define	O_CREAT		_O_CREAT
+#define	O_TRUNC		_O_TRUNC
+#define	O_EXCL		_O_EXCL
+#define	O_TEXT		_O_TEXT
+#define	O_BINARY	_O_BINARY
+#define	O_TEMPORARY	_O_TEMPORARY
+#define O_NOINHERIT	_O_NOINHERIT
+#define O_SEQENTIAL	_O_SEQUENTIAL
+#define	O_RANDOM	_O_RANDOM
+
+#endif	/* Not _NO_OLDNAMES */
+
+
+#ifndef RC_INVOKED
+
+/*
+ * This variable determines the default file mode.
+ * TODO: Which flags work?
+ */
+#ifndef __DECLSPEC_SUPPORTED
+
+#ifdef __MSVCRT__
+extern unsigned int* __imp__fmode;
+#define	_fmode	(*__imp__fmode)
+#else
+/* CRTDLL */
+extern unsigned int* __imp__fmode_dll;
+#define	_fmode	(*__imp__fmode_dll)
+#endif
+
+#else /* __DECLSPEC_SUPPORTED */
+
+#ifdef __MSVCRT__
+__MINGW_IMPORT unsigned int _fmode;
+#else /* ! __MSVCRT__ */
+__MINGW_IMPORT unsigned int _fmode_dll;
+#define	_fmode	_fmode_dll
+#endif /* ! __MSVCRT__ */
+
+#endif /* __DECLSPEC_SUPPORTED */
+
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+int	_setmode (int, int);
+
+#ifndef	_NO_OLDNAMES
+int	setmode (int, int);
+#endif	/* Not _NO_OLDNAMES */
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _FCNTL_H_ */
+
+#endif	/* Not __STRICT_ANSI__ */
+
diff --git a/Win32/bin/tcc/include/fenv.h b/Win32/bin/tcc/include/fenv.h
new file mode 100644
index 0000000..c25b4b4
--- /dev/null
+++ b/Win32/bin/tcc/include/fenv.h
@@ -0,0 +1,85 @@
+#ifndef _FENV_H
+#define _FENV_H
+
+/*
+  For now, support only for the basic abstraction of flags that are
+  either set or clear. fexcept_t could be  structure that holds more info
+  about the fp environment.
+*/
+typedef unsigned short fexcept_t;
+
+/* This 28-byte struct represents the entire floating point
+   environment as stored by fnstenv or fstenv */
+typedef struct
+{
+  unsigned short __control_word;
+  unsigned short __unused0;
+  unsigned short __status_word;
+  unsigned short __unused1;
+  unsigned short __tag_word;
+  unsigned short __unused2;  
+  unsigned int	 __ip_offset;    /* instruction pointer offset */
+  unsigned short __ip_selector;  
+  unsigned short __opcode;
+  unsigned int	 __data_offset;
+  unsigned short __data_selector;  
+  unsigned short __unused3;
+} fenv_t;
+
+
+/* FPU status word exception flags */
+#define FE_INVALID	0x01
+#define FE_DENORMAL	0x02
+#define FE_DIVBYZERO	0x04
+#define FE_OVERFLOW	0x08
+#define FE_UNDERFLOW	0x10
+#define FE_INEXACT	0x20
+#define FE_ALL_EXCEPT (FE_INVALID | FE_DENORMAL | FE_DIVBYZERO \
+		       | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
+
+/* FPU control word rounding flags */
+#define FE_TONEAREST	0x0000
+#define FE_DOWNWARD	0x0400
+#define FE_UPWARD	0x0800
+#define FE_TOWARDZERO	0x0c00
+
+
+/* The default floating point environment */
+#define FE_DFL_ENV ((const fenv_t *)-1)
+
+
+#ifndef RC_INVOKED
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*TODO: Some of these could be inlined */
+/* 7.6.2 Exception */
+
+extern int feclearexcept (int);
+extern int fegetexceptflag (fexcept_t * flagp, int excepts);
+extern int feraiseexcept (int excepts );
+extern int fesetexceptflag (const fexcept_t *, int);
+extern int fetestexcept (int excepts);
+
+
+/* 7.6.3 Rounding */
+
+extern int fegetround (void);
+extern int fesetround (int mode);
+
+
+/* 7.6.4 Environment */
+
+extern int fegetenv (fenv_t * envp);
+extern int fesetenv (const fenv_t * );
+extern int feupdateenv (const fenv_t *);
+extern int feholdexcept (fenv_t *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif	/* Not RC_INVOKED */
+
+#endif /* ndef _FENV_H */
diff --git a/Win32/bin/tcc/include/float.h b/Win32/bin/tcc/include/float.h
new file mode 100644
index 0000000..ee363e0
--- /dev/null
+++ b/Win32/bin/tcc/include/float.h
@@ -0,0 +1,224 @@
+/* 
+ * float.h
+ *
+ * Constants related to floating point arithmetic.
+ *
+ * Also included here are some non-ANSI bits for accessing the floating
+ * point controller.
+ *
+ * NOTE: GCC provides float.h, and it is probably more accurate than this,
+ *       but it doesn't include the non-standard stuff for accessing the
+ *       fp controller. (TODO: Move those bits elsewhere?) Thus it is
+ *       probably not a good idea to use the GCC supplied version instead
+ *       of this header.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef _FLOAT_H_
+#define _FLOAT_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#define FLT_ROUNDS	1
+#define FLT_GUARD	1
+#define FLT_NORMALIZE	1
+
+/*
+ * The characteristics of float.
+ */
+
+/* The radix for floating point representation. */
+#define FLT_RADIX	2
+
+/* Decimal digits of precision. */
+#define FLT_DIG		6
+
+/* Smallest number such that 1+x != 1 */
+#define FLT_EPSILON	1.19209290e-07F
+
+/* The number of base FLT_RADIX digits in the mantissa. */
+#define FLT_MANT_DIG	24
+
+/* The maximum floating point number. */
+#define FLT_MAX		3.40282347e+38F
+
+/* Maximum n such that FLT_RADIX^n - 1 is representable. */
+#define FLT_MAX_EXP	128
+
+/* Maximum n such that 10^n is representable. */
+#define FLT_MAX_10_EXP	38
+
+/* Minimum normalized floating-point number. */
+#define FLT_MIN		1.17549435e-38F
+
+/* Minimum n such that FLT_RADIX^n is a normalized number. */
+#define FLT_MIN_EXP	(-125)
+
+/* Minimum n such that 10^n is a normalized number. */
+#define FLT_MIN_10_EXP	(-37)
+
+
+/*
+ * The characteristics of double.
+ */
+#define DBL_DIG		15
+#define DBL_EPSILON	1.1102230246251568e-16
+#define DBL_MANT_DIG	53
+#define DBL_MAX		1.7976931348623157e+308
+#define DBL_MAX_EXP	1024
+#define DBL_MAX_10_EXP	308
+#define DBL_MIN		2.2250738585072014e-308
+#define DBL_MIN_EXP	(-1021)
+#define DBL_MIN_10_EXP	(-307)
+
+
+/*
+ * The characteristics of long double.
+ * NOTE: long double is the same as double.
+ */
+#define LDBL_DIG	15
+#define LDBL_EPSILON	1.1102230246251568e-16L
+#define LDBL_MANT_DIG	53
+#define LDBL_MAX	1.7976931348623157e+308L
+#define LDBL_MAX_EXP	1024
+#define LDBL_MAX_10_EXP	308
+#define LDBL_MIN	2.2250738585072014e-308L
+#define LDBL_MIN_EXP	(-1021)
+#define LDBL_MIN_10_EXP	(-307)
+
+
+/*
+ * Functions and definitions for controlling the FPU.
+ */
+#ifndef	__STRICT_ANSI__
+
+/* TODO: These constants are only valid for x86 machines */
+
+/* Control word masks for unMask */
+#define	_MCW_EM		0x0008001F	/* Error masks */
+#define	_MCW_IC		0x00040000	/* Infinity */
+#define	_MCW_RC		0x00000300	/* Rounding */
+#define	_MCW_PC		0x00030000	/* Precision */
+
+/* Control word values for unNew (use with related unMask above) */
+#define	_EM_INVALID	0x00000010
+#define	_EM_DENORMAL	0x00080000
+#define	_EM_ZERODIVIDE	0x00000008
+#define	_EM_OVERFLOW	0x00000004
+#define	_EM_UNDERFLOW	0x00000002
+#define	_EM_INEXACT	0x00000001
+#define	_IC_AFFINE	0x00040000
+#define	_IC_PROJECTIVE	0x00000000
+#define	_RC_CHOP	0x00000300
+#define	_RC_UP		0x00000200
+#define	_RC_DOWN	0x00000100
+#define	_RC_NEAR	0x00000000
+#define	_PC_24		0x00020000
+#define	_PC_53		0x00010000
+#define	_PC_64		0x00000000
+
+/* These are also defined in Mingw math.h, needed to work around
+   GCC build issues.  */
+/* Return values for fpclass. */
+#ifndef __MINGW_FPCLASS_DEFINED
+#define __MINGW_FPCLASS_DEFINED 1
+#define	_FPCLASS_SNAN	0x0001	/* Signaling "Not a Number" */
+#define	_FPCLASS_QNAN	0x0002	/* Quiet "Not a Number" */
+#define	_FPCLASS_NINF	0x0004	/* Negative Infinity */
+#define	_FPCLASS_NN	0x0008	/* Negative Normal */
+#define	_FPCLASS_ND	0x0010	/* Negative Denormal */
+#define	_FPCLASS_NZ	0x0020	/* Negative Zero */
+#define	_FPCLASS_PZ	0x0040	/* Positive Zero */
+#define	_FPCLASS_PD	0x0080	/* Positive Denormal */
+#define	_FPCLASS_PN	0x0100	/* Positive Normal */
+#define	_FPCLASS_PINF	0x0200	/* Positive Infinity */
+#endif /* __MINGW_FPCLASS_DEFINED */
+
+/* invalid subconditions (_SW_INVALID also set) */
+#define _SW_UNEMULATED		0x0040  /* unemulated instruction */
+#define _SW_SQRTNEG		0x0080  /* square root of a neg number */
+#define _SW_STACKOVERFLOW	0x0200  /* FP stack overflow */
+#define _SW_STACKUNDERFLOW	0x0400  /* FP stack underflow */
+
+/*  Floating point error signals and return codes */
+#define _FPE_INVALID		0x81
+#define _FPE_DENORMAL		0x82
+#define _FPE_ZERODIVIDE		0x83
+#define _FPE_OVERFLOW		0x84
+#define _FPE_UNDERFLOW		0x85
+#define _FPE_INEXACT		0x86
+#define _FPE_UNEMULATED		0x87
+#define _FPE_SQRTNEG		0x88
+#define _FPE_STACKOVERFLOW	0x8a
+#define _FPE_STACKUNDERFLOW	0x8b
+#define _FPE_EXPLICITGEN	0x8c    /* raise( SIGFPE ); */
+
+#ifndef RC_INVOKED
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/* Set the FPU control word as cw = (cw & ~unMask) | (unNew & unMask),
+ * i.e. change the bits in unMask to have the values they have in unNew,
+ * leaving other bits unchanged. */
+unsigned int	_controlfp (unsigned int unNew, unsigned int unMask);
+unsigned int	_control87 (unsigned int unNew, unsigned int unMask);
+
+
+unsigned int	_clearfp (void);	/* Clear the FPU status word */
+unsigned int	_statusfp (void);	/* Report the FPU status word */
+#define		_clear87	_clearfp
+#define		_status87	_statusfp
+
+void		_fpreset (void);	/* Reset the FPU */
+void		fpreset (void);
+
+/* Global 'variable' for the current floating point error code. */
+int *	__fpecode(void);
+#define	_fpecode	(*(__fpecode()))
+
+/*
+ * IEEE recommended functions
+ */
+
+double	_chgsign	(double);
+double	_copysign	(double, double);
+double	_logb		(double);
+double	_nextafter	(double, double);
+double	_scalb		(double, long);
+
+int	_finite		(double);
+int	_fpclass	(double);
+int	_isnan		(double);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not __STRICT_ANSI__ */
+
+#endif /* _FLOAT_H_ */
+
diff --git a/Win32/bin/tcc/include/inttypes.h b/Win32/bin/tcc/include/inttypes.h
new file mode 100644
index 0000000..f6e0bd1
--- /dev/null
+++ b/Win32/bin/tcc/include/inttypes.h
@@ -0,0 +1,275 @@
+/* 7.8 Format conversion of integer types <inttypes.h> */
+
+#ifndef _INTTYPES_H
+#define _INTTYPES_H
+
+#include <stdint.h>
+#define __need_wchar_t
+#include <stddef.h>
+
+#ifdef	__cplusplus
+extern	"C"	{
+#endif
+
+typedef struct {
+	intmax_t quot;
+	intmax_t rem;
+	} imaxdiv_t;
+
+#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS)
+
+/* 7.8.1 Macros for format specifiers
+ * 
+ * MS runtime does not yet understand C9x standard "ll"
+ * length specifier. It appears to treat "ll" as "l".
+ * The non-standard I64 length specifier causes warning in GCC,
+ * but understood by MS runtime functions.
+ */
+
+/* fprintf macros for signed types */
+#define PRId8 "d"
+#define PRId16 "d"
+#define PRId32 "d"
+#define PRId64 "I64d"
+
+#define PRIdLEAST8 "d"
+#define PRIdLEAST16 "d"
+#define PRIdLEAST32 "d"
+#define PRIdLEAST64 "I64d"
+
+#define PRIdFAST8 "d"
+#define PRIdFAST16 "d"
+#define PRIdFAST32 "d"
+#define PRIdFAST64 "I64d"
+
+#define PRIdMAX "I64d"
+#define PRIdPTR "d"
+
+#define PRIi8 "i"
+#define PRIi16 "i"
+#define PRIi32 "i"
+#define PRIi64 "I64i"
+
+#define PRIiLEAST8 "i"
+#define PRIiLEAST16 "i"
+#define PRIiLEAST32 "i"
+#define PRIiLEAST64 "I64i"
+
+#define PRIiFAST8 "i"
+#define PRIiFAST16 "i"
+#define PRIiFAST32 "i"
+#define PRIiFAST64 "I64i"
+
+#define PRIiMAX "I64i"
+#define PRIiPTR "i"
+
+#define PRIo8 "o"
+#define PRIo16 "o"
+#define PRIo32 "o"
+#define PRIo64 "I64o"
+
+#define PRIoLEAST8 "o"
+#define PRIoLEAST16 "o"
+#define PRIoLEAST32 "o"
+#define PRIoLEAST64 "I64o"
+
+#define PRIoFAST8 "o"
+#define PRIoFAST16 "o"
+#define PRIoFAST32 "o"
+#define PRIoFAST64 "I64o"
+
+#define PRIoMAX "I64o"
+
+#define PRIoPTR "o"
+
+/* fprintf macros for unsigned types */
+#define PRIu8 "u"
+#define PRIu16 "u"
+#define PRIu32 "u"
+#define PRIu64 "I64u"
+
+
+#define PRIuLEAST8 "u"
+#define PRIuLEAST16 "u"
+#define PRIuLEAST32 "u"
+#define PRIuLEAST64 "I64u"
+
+#define PRIuFAST8 "u"
+#define PRIuFAST16 "u"
+#define PRIuFAST32 "u"
+#define PRIuFAST64 "I64u"
+
+#define PRIuMAX "I64u"
+#define PRIuPTR "u"
+
+#define PRIx8 "x"
+#define PRIx16 "x"
+#define PRIx32 "x"
+#define PRIx64 "I64x"
+
+#define PRIxLEAST8 "x"
+#define PRIxLEAST16 "x"
+#define PRIxLEAST32 "x"
+#define PRIxLEAST64 "I64x"
+
+#define PRIxFAST8 "x"
+#define PRIxFAST16 "x"
+#define PRIxFAST32 "x"
+#define PRIxFAST64 "I64x"
+
+#define PRIxMAX "I64x"
+#define PRIxPTR "x"
+
+#define PRIX8 "X"
+#define PRIX16 "X"
+#define PRIX32 "X"
+#define PRIX64 "I64X"
+
+#define PRIXLEAST8 "X"
+#define PRIXLEAST16 "X"
+#define PRIXLEAST32 "X"
+#define PRIXLEAST64 "I64X"
+
+#define PRIXFAST8 "X"
+#define PRIXFAST16 "X"
+#define PRIXFAST32 "X"
+#define PRIXFAST64 "I64X"
+
+#define PRIXMAX "I64X"
+#define PRIXPTR "X"
+
+/*
+ *   fscanf macros for signed int types
+ *   NOTE: if 32-bit int is used for int_fast8_t and int_fast16_t
+ *   (see stdint.h, 7.18.1.3), FAST8 and FAST16 should have
+ *   no length identifiers
+ */
+
+#define SCNd16 "hd"
+#define SCNd32 "d"
+#define SCNd64 "I64d"
+
+#define SCNdLEAST16 "hd"
+#define SCNdLEAST32 "d"
+#define SCNdLEAST64 "I64d"
+
+#define SCNdFAST16 "hd"
+#define SCNdFAST32 "d"
+#define SCNdFAST64 "I64d"
+
+#define SCNdMAX "I64d"
+#define SCNdPTR "d"
+
+#define SCNi16 "hi"
+#define SCNi32 "i"
+#define SCNi64 "I64i"
+
+#define SCNiLEAST16 "hi"
+#define SCNiLEAST32 "i"
+#define SCNiLEAST64 "I64i"
+
+#define SCNiFAST16 "hi"
+#define SCNiFAST32 "i"
+#define SCNiFAST64 "I64i"
+
+#define SCNiMAX "I64i"
+#define SCNiPTR "i"
+
+#define SCNo16 "ho"
+#define SCNo32 "o"
+#define SCNo64 "I64o"
+
+#define SCNoLEAST16 "ho"
+#define SCNoLEAST32 "o"
+#define SCNoLEAST64 "I64o"
+
+#define SCNoFAST16 "ho"
+#define SCNoFAST32 "o"
+#define SCNoFAST64 "I64o"
+
+#define SCNoMAX "I64o"
+#define SCNoPTR "o"
+
+#define SCNx16 "hx"
+#define SCNx32 "x"
+#define SCNx64 "I64x"
+
+#define SCNxLEAST16 "hx"
+#define SCNxLEAST32 "x"
+#define SCNxLEAST64 "I64x"
+
+#define SCNxFAST16 "hx"
+#define SCNxFAST32 "x"
+#define SCNxFAST64 "I64x"
+
+#define SCNxMAX "I64x"
+#define SCNxPTR "x"
+
+
+/* fscanf macros for unsigned int types */
+
+#define SCNu16 "hu"
+#define SCNu32 "u"
+#define SCNu64 "I64u"
+
+#define SCNuLEAST16 "hu"
+#define SCNuLEAST32 "u"
+#define SCNuLEAST64 "I64u"
+
+#define SCNuFAST16 "hu"
+#define SCNuFAST32 "u"
+#define SCNuFAST64 "I64u"
+
+#define SCNuMAX "I64u"
+#define SCNuPTR "u"
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+/*
+ * no length modifier for char types prior to C9x
+ * MS runtime  scanf appears to treat "hh" as "h" 
+ */
+
+/* signed char */
+#define SCNd8 "hhd"
+#define SCNdLEAST8 "hhd"
+#define SCNdFAST8 "hhd"
+
+#define SCNi8 "hhi"
+#define SCNiLEAST8 "hhi"
+#define SCNiFAST8 "hhi"
+
+#define SCNo8 "hho"
+#define SCNoLEAST8 "hho"
+#define SCNoFAST8 "hho"
+
+#define SCNx8 "hhx"
+#define SCNxLEAST8 "hhx"
+#define SCNxFAST8 "hhx"
+
+/* unsigned char */
+#define SCNu8 "hhu"
+#define SCNuLEAST8 "hhu"
+#define SCNuFAST8 "hhu"
+#endif /* __STDC_VERSION__ >= 199901 */
+
+#endif	/* !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) */
+
+extern inline intmax_t	imaxabs (intmax_t j)
+	{return	(j >= 0 ? j : -j);}
+imaxdiv_t imaxdiv (intmax_t numer, intmax_t denom);
+
+/* 7.8.2 Conversion functions for greatest-width integer types */
+
+intmax_t   strtoimax (const char* __restrict__ nptr, char** __restrict__ endptr, int base);
+uintmax_t  strtoumax (const char* __restrict__ nptr, char** __restrict__ endptr, int base);
+
+intmax_t wcstoimax (const wchar_t* __restrict__ nptr, wchar_t** __restrict__ endptr,
+	   int base);
+uintmax_t wcstoumax (const wchar_t* __restrict__ nptr, wchar_t** __restrict__ endptr,
+	   int base);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif /* ndef _INTTYPES_H */
diff --git a/Win32/bin/tcc/include/io.h b/Win32/bin/tcc/include/io.h
new file mode 100644
index 0000000..54e7a0e
--- /dev/null
+++ b/Win32/bin/tcc/include/io.h
@@ -0,0 +1,296 @@
+/* 
+ * io.h
+ *
+ * System level I/O functions and types.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef	__STRICT_ANSI__
+
+#ifndef	_IO_H_
+#define	_IO_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/* We need the definition of FILE anyway... */
+#include <stdio.h>
+
+/* MSVC's io.h contains the stuff from dir.h, so I will too.
+ * NOTE: This also defines off_t, the file offset type, through
+ *       an inclusion of sys/types.h */
+#ifndef __STRICT_ANSI__
+
+#include <sys/types.h>	/* To get time_t. */
+
+/*
+ * Attributes of files as returned by _findfirst et al.
+ */
+#define	_A_NORMAL	0x00000000
+#define	_A_RDONLY	0x00000001
+#define	_A_HIDDEN	0x00000002
+#define	_A_SYSTEM	0x00000004
+#define	_A_VOLID	0x00000008
+#define	_A_SUBDIR	0x00000010
+#define	_A_ARCH		0x00000020
+
+
+#ifndef RC_INVOKED
+
+#ifndef	_FSIZE_T_DEFINED
+typedef	unsigned long	_fsize_t;
+#define _FSIZE_T_DEFINED
+#endif
+
+/*
+ * The following structure is filled in by _findfirst or _findnext when
+ * they succeed in finding a match.
+ */
+struct _finddata_t
+{
+	unsigned	attrib;		/* Attributes, see constants above. */
+	time_t		time_create;
+	time_t		time_access;	/* always midnight local time */
+	time_t		time_write;
+	_fsize_t	size;
+	char		name[FILENAME_MAX];	/* may include spaces. */
+};
+
+struct _finddatai64_t {
+    unsigned    attrib;
+    time_t      time_create;
+    time_t      time_access;
+    time_t      time_write;
+    __int64     size;
+    char        name[FILENAME_MAX];
+};
+
+
+#ifndef _WFINDDATA_T_DEFINED
+struct _wfinddata_t {
+    	unsigned	attrib;
+    	time_t		time_create;	/* -1 for FAT file systems */
+    	time_t		time_access;	/* -1 for FAT file systems */
+    	time_t		time_write;
+    	_fsize_t	size;
+    	wchar_t		name[FILENAME_MAX];	/* may include spaces. */
+};
+struct _wfinddatai64_t {
+    unsigned    attrib;
+    time_t      time_create;
+    time_t      time_access;
+    time_t      time_write;
+    __int64     size;
+    wchar_t     name[FILENAME_MAX];
+};
+
+#define _WFINDDATA_T_DEFINED
+#endif
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/*
+ * Functions for searching for files. _findfirst returns -1 if no match
+ * is found. Otherwise it returns a handle to be used in _findnext and
+ * _findclose calls. _findnext also returns -1 if no match could be found,
+ * and 0 if a match was found. Call _findclose when you are finished.
+ */
+int	_findfirst (const char*, struct _finddata_t*);
+int	_findnext (int, struct _finddata_t*);
+int	_findclose (int);
+
+int	_chdir (const char*);
+char*	_getcwd (char*, int);
+int	_mkdir (const char*);
+char*	_mktemp (char*);
+int	_rmdir (const char*);
+
+
+#ifdef __MSVCRT__
+__int64  _filelengthi64(int);
+long _findfirsti64(const char*, struct _finddatai64_t*);
+int _findnexti64(long, struct _finddatai64_t*);
+__int64  _lseeki64(int, __int64, int);
+__int64  _telli64(int);
+#endif /* __MSVCRT__ */
+
+
+#ifndef _NO_OLDNAMES
+
+#ifndef _UWIN
+int	chdir (const char*);
+char*	getcwd (char*, int);
+int	mkdir (const char*);
+char*	mktemp (char*);
+int	rmdir (const char*);
+#endif /* _UWIN */
+
+#endif /* Not _NO_OLDNAMES */
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not __STRICT_ANSI__ */
+
+/* TODO: Maximum number of open handles has not been tested, I just set
+ * it the same as FOPEN_MAX. */
+#define	HANDLE_MAX	FOPEN_MAX
+
+
+/* Some defines for _access nAccessMode (MS doesn't define them, but
+ * it doesn't seem to hurt to add them). */
+#define	F_OK	0	/* Check for file existence */
+#define	X_OK	1	/* Check for execute permission. */
+#define	W_OK	2	/* Check for write permission */
+#define	R_OK	4	/* Check for read permission */
+
+#ifndef RC_INVOKED
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+int		_access (const char*, int);
+int		_chsize (int, long);
+int		_close (int);
+int		_commit(int);
+
+/* NOTE: The only significant bit in unPermissions appears to be bit 7 (0x80),
+ *       the "owner write permission" bit (on FAT). */
+int		_creat (const char*, unsigned);
+
+int		_dup (int);
+int		_dup2 (int, int);
+long		_filelength (int);
+int		_fileno (FILE*);
+long		_get_osfhandle (int);
+int		_isatty (int);
+
+/* In a very odd turn of events this function is excluded from those
+ * files which define _STREAM_COMPAT. This is required in order to
+ * build GNU libio because of a conflict with _eof in streambuf.h
+ * line 107. Actually I might just be able to change the name of
+ * the enum member in streambuf.h... we'll see. TODO */
+#ifndef	_STREAM_COMPAT
+int		_eof (int);
+#endif
+
+/* LK_... locking commands defined in sys/locking.h. */
+int		_locking (int, int, long);
+
+long		_lseek (int, long, int);
+
+/* Optional third argument is unsigned unPermissions. */
+int		_open (const char*, int, ...);
+
+int		_open_osfhandle (long, int);
+int		_pipe (int *, unsigned int, int);
+int		_read (int, void*, unsigned int);
+
+/* SH_... flags for nShFlags defined in share.h
+ * Optional fourth argument is unsigned unPermissions */
+int		_sopen (const char*, int, int, ...);
+
+long		_tell (int);
+/* Should umask be in sys/stat.h and/or sys/types.h instead? */
+int		_umask (int);
+int		_unlink (const char*);
+int		_write (int, const void*, unsigned int);
+
+/* Wide character versions. Also declared in wchar.h. */
+/* Not in crtdll.dll */
+#if !defined (_WIO_DEFINED)
+#if defined (__MSVCRT__)
+int 		_waccess(const wchar_t*, int);
+int 		_wchmod(const wchar_t*, int);
+int 		_wcreat(const wchar_t*, int);
+long 		_wfindfirst(wchar_t*, struct _wfinddata_t*);
+int 		_wfindnext(long, struct _wfinddata_t *);
+int 		_wunlink(const wchar_t*);
+int 		_wopen(const wchar_t*, int, ...);
+int 		_wsopen(const wchar_t*, int, int, ...);
+wchar_t * 	_wmktemp(wchar_t*);
+long  _wfindfirsti64(const wchar_t*, struct _wfinddatai64_t*);
+int  _wfindnexti64(long, struct _wfinddatai64_t*);
+#endif /* defined (__MSVCRT__) */
+#define _WIO_DEFINED
+#endif /* _WIO_DEFINED */
+
+#ifndef	_NO_OLDNAMES
+/*
+ * Non-underscored versions of non-ANSI functions to improve portability.
+ * These functions live in libmoldname.a.
+ */
+
+#ifndef _UWIN
+int		access (const char*, int);
+int		chsize (int, long );
+int		close (int);
+int		creat (const char*, int);
+int		dup (int);
+int		dup2 (int, int);
+int		eof (int);
+long		filelength (int);
+int		fileno (FILE*);
+int		isatty (int);
+long		lseek (int, long, int);
+int		open (const char*, int, ...);
+int		read (int, void*, unsigned int);
+int		sopen (const char*, int, int, ...);
+long		tell (int);
+int		umask (int);
+int		unlink (const char*);
+int		write (int, const void*, unsigned int);
+#endif /* _UWIN */
+
+/* Wide character versions. Also declared in wchar.h. */
+/* Where do these live? Not in libmoldname.a nor in libmsvcrt.a */
+#if 0
+int 		waccess(const wchar_t *, int);
+int 		wchmod(const wchar_t *, int);
+int 		wcreat(const wchar_t *, int);
+long 		wfindfirst(wchar_t *, struct _wfinddata_t *);
+int 		wfindnext(long, struct _wfinddata_t *);
+int 		wunlink(const wchar_t *);
+int 		wrename(const wchar_t *, const wchar_t *);
+int 		wopen(const wchar_t *, int, ...);
+int 		wsopen(const wchar_t *, int, int, ...);
+wchar_t * 	wmktemp(wchar_t *);
+#endif
+
+#endif	/* Not _NO_OLDNAMES */
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* _IO_H_ not defined */
+
+#endif	/* Not strict ANSI */
+
diff --git a/Win32/bin/tcc/include/limits.h b/Win32/bin/tcc/include/limits.h
new file mode 100644
index 0000000..277ad0d
--- /dev/null
+++ b/Win32/bin/tcc/include/limits.h
@@ -0,0 +1,115 @@
+/* 
+ * limits.h
+ *
+ * Defines constants for the sizes of integral types.
+ *
+ * NOTE: GCC should supply a version of this header and it should be safe to
+ *       use that version instead of this one (maybe safer).
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef _LIMITS_H_
+#define _LIMITS_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * File system limits
+ *
+ * TODO: NAME_MAX and OPEN_MAX are file system limits or not? Are they the
+ *       same as FILENAME_MAX and FOPEN_MAX from stdio.h?
+ * NOTE: Apparently the actual size of PATH_MAX is 260, but a space is
+ *       required for the NUL. TODO: Test?
+ */
+#define PATH_MAX	(259)
+
+/*
+ * Characteristics of the char data type.
+ *
+ * TODO: Is MB_LEN_MAX correct?
+ */
+#define CHAR_BIT	8
+#define MB_LEN_MAX	2
+
+#define SCHAR_MIN	(-128)
+#define SCHAR_MAX	127
+
+#define UCHAR_MAX	255
+
+/* TODO: Is this safe? I think it might just be testing the preprocessor,
+ *       not the compiler itself... */
+#if	('\x80' < 0)
+#define CHAR_MIN	SCHAR_MIN
+#define CHAR_MAX	SCHAR_MAX
+#else
+#define CHAR_MIN	0
+#define CHAR_MAX	UCHAR_MAX
+#endif
+
+/*
+ * Maximum and minimum values for ints.
+ */
+#define INT_MAX		2147483647
+#define INT_MIN		(-INT_MAX-1)
+
+#define UINT_MAX	0xffffffff
+
+/*
+ * Maximum and minimum values for shorts.
+ */
+#define SHRT_MAX	32767
+#define SHRT_MIN	(-SHRT_MAX-1)
+
+#define USHRT_MAX	0xffff
+
+/*
+ * Maximum and minimum values for longs and unsigned longs.
+ *
+ * TODO: This is not correct for Alphas, which have 64 bit longs.
+ */
+#define LONG_MAX	2147483647L
+
+#define LONG_MIN	(-LONG_MAX-1)
+
+#define ULONG_MAX	0xffffffffUL
+
+
+/*
+ * The GNU C compiler also allows 'long long int'
+ */
+#if	!defined(__STRICT_ANSI__) && defined(__GNUC__)
+
+#define LONG_LONG_MAX	9223372036854775807LL
+#define LONG_LONG_MIN	(-LONG_LONG_MAX-1)
+
+#define ULONG_LONG_MAX	(2ULL * LONG_LONG_MAX + 1)
+
+/* ISO C9x macro names */
+#define LLONG_MAX LONG_LONG_MAX
+#define LLONG_MIN LONG_LONG_MIN
+#define ULLONG_MAX ULONG_LONG_MAX
+
+#endif /* Not Strict ANSI and GNU C compiler */
+
+
+#endif /* not _LIMITS_H_ */
diff --git a/Win32/bin/tcc/include/locale.h b/Win32/bin/tcc/include/locale.h
new file mode 100644
index 0000000..fa21337
--- /dev/null
+++ b/Win32/bin/tcc/include/locale.h
@@ -0,0 +1,100 @@
+/* 
+ * locale.h
+ *
+ * Functions and types for localization (ie. changing the appearance of
+ * output based on the standards of a certain country).
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef	_LOCALE_H_
+#define	_LOCALE_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * NOTE: I have tried to test this, but I am limited by my knowledge of
+ *       locale issues. The structure does not bomb if you look at the
+ *       values, and 'decimal_point' even seems to be correct. But the
+ *       rest of the values are, by default, not particularly useful
+ *       (read meaningless and not related to the international settings
+ *       of the system).
+ */
+
+#define	LC_ALL		0
+#define LC_COLLATE	1
+#define LC_CTYPE	2
+#define	LC_MONETARY	3
+#define	LC_NUMERIC	4
+#define	LC_TIME		5
+#define	LC_MIN		LC_ALL
+#define	LC_MAX		LC_TIME
+
+#ifndef RC_INVOKED
+
+/*
+ * The structure returned by 'localeconv'.
+ */
+struct lconv
+{
+	char*	decimal_point;
+	char*	thousands_sep;
+	char*	grouping;
+	char*	int_curr_symbol;
+	char*	currency_symbol;
+	char*	mon_decimal_point;
+	char*	mon_thousands_sep;
+	char*	mon_grouping;
+	char*	positive_sign;
+	char*	negative_sign;
+	char	int_frac_digits;
+	char	frac_digits;
+	char	p_cs_precedes;
+	char	p_sep_by_space;
+	char	n_cs_precedes;
+	char	n_sep_by_space;
+	char	p_sign_posn;
+	char	n_sign_posn;
+};
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+char*		setlocale (int, const char*);
+struct lconv*	localeconv (void);
+
+#ifndef _WLOCALE_DEFINED  /* also declared in wchar.h */
+# define __need_wchar_t
+# include <stddef.h>
+  wchar_t* 	_wsetlocale(int, const wchar_t*);
+# define _WLOCALE_DEFINED
+#endif /* ndef _WLOCALE_DEFINED */
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _LOCALE_H_ */
+
diff --git a/Win32/bin/tcc/include/malloc.h b/Win32/bin/tcc/include/malloc.h
new file mode 100644
index 0000000..364ed6c
--- /dev/null
+++ b/Win32/bin/tcc/include/malloc.h
@@ -0,0 +1,87 @@
+/*
+ * malloc.h
+ *
+ * Support for programs which want to use malloc.h to get memory management
+ * functions. Unless you absolutely need some of these functions and they are
+ * not in the ANSI headers you should use the ANSI standard header files
+ * instead.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef	__STRICT_ANSI__
+
+#ifndef _MALLOC_H_
+#define _MALLOC_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#include <stdlib.h>
+
+#ifndef RC_INVOKED
+
+/*
+ * The structure used to walk through the heap with _heapwalk.
+ */
+typedef	struct _heapinfo
+{
+	int*	_pentry;
+	size_t	_size;
+	int	_useflag;
+} _HEAPINFO;
+
+/* Values for _heapinfo.useflag */
+#define _USEDENTRY 0
+#define _FREEENTRY 1
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+/*
+   The _heap* memory allocation functions are supported on NT
+   but not W9x. On latter, they always set errno to ENOSYS.
+*/
+int	_heapwalk (_HEAPINFO*);
+
+#ifndef	_NO_OLDNAMES
+int	heapwalk (_HEAPINFO*);
+#endif	/* Not _NO_OLDNAMES */
+
+int	_heapchk (void);	/* Verify heap integrety. */
+int	_heapmin (void);	/* Return unused heap to the OS. */
+int	_heapset (unsigned int);
+
+size_t	_msize (void*);
+size_t	_get_sbh_threshold (void); 
+int	_set_sbh_threshold (size_t);
+void *	_expand (void*, size_t); 
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* RC_INVOKED */
+
+#endif /* Not _MALLOC_H_ */
+
+#endif /* Not __STRICT_ANSI__ */
+
diff --git a/Win32/bin/tcc/include/math.h b/Win32/bin/tcc/include/math.h
new file mode 100644
index 0000000..7239e01
--- /dev/null
+++ b/Win32/bin/tcc/include/math.h
@@ -0,0 +1,438 @@
+/* 
+ * math.h
+ *
+ * Mathematical functions.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef _MATH_H_
+#define _MATH_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * Types for the _exception structure.
+ */
+
+#define	_DOMAIN		1	/* domain error in argument */
+#define	_SING		2	/* singularity */
+#define	_OVERFLOW	3	/* range overflow */
+#define	_UNDERFLOW	4	/* range underflow */
+#define	_TLOSS		5	/* total loss of precision */
+#define	_PLOSS		6	/* partial loss of precision */
+
+/*
+ * Exception types with non-ANSI names for compatibility.
+ */
+
+#ifndef	__STRICT_ANSI__
+#ifndef	_NO_OLDNAMES
+
+#define	DOMAIN		_DOMAIN
+#define	SING		_SING
+#define	OVERFLOW	_OVERFLOW
+#define	UNDERFLOW	_UNDERFLOW
+#define	TLOSS		_TLOSS
+#define	PLOSS		_PLOSS
+
+#endif	/* Not _NO_OLDNAMES */
+#endif	/* Not __STRICT_ANSI__ */
+
+
+/* These are also defined in Mingw float.h; needed here as well to work 
+   around GCC build issues.  */
+#ifndef	__STRICT_ANSI__
+#ifndef __MINGW_FPCLASS_DEFINED
+#define __MINGW_FPCLASS_DEFINED 1
+/* IEEE 754 classication */
+#define	_FPCLASS_SNAN	0x0001	/* Signaling "Not a Number" */
+#define	_FPCLASS_QNAN	0x0002	/* Quiet "Not a Number" */
+#define	_FPCLASS_NINF	0x0004	/* Negative Infinity */
+#define	_FPCLASS_NN	0x0008	/* Negative Normal */
+#define	_FPCLASS_ND	0x0010	/* Negative Denormal */
+#define	_FPCLASS_NZ	0x0020	/* Negative Zero */
+#define	_FPCLASS_PZ	0x0040	/* Positive Zero */
+#define	_FPCLASS_PD	0x0080	/* Positive Denormal */
+#define	_FPCLASS_PN	0x0100	/* Positive Normal */
+#define	_FPCLASS_PINF	0x0200	/* Positive Infinity */
+#endif /* __MINGW_FPCLASS_DEFINED */
+#endif	/* Not __STRICT_ANSI__ */
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * HUGE_VAL is returned by strtod when the value would overflow the
+ * representation of 'double'. There are other uses as well.
+ *
+ * __imp__HUGE is a pointer to the actual variable _HUGE in
+ * MSVCRT.DLL. If we used _HUGE directly we would get a pointer
+ * to a thunk function.
+ *
+ * NOTE: The CRTDLL version uses _HUGE_dll instead.
+ */
+
+#ifndef __DECLSPEC_SUPPORTED
+
+#ifdef __MSVCRT__
+extern double*	__imp__HUGE;
+#define	HUGE_VAL	(*__imp__HUGE)
+#else
+/* CRTDLL */
+extern double*	__imp__HUGE_dll;
+#define	HUGE_VAL	(*__imp__HUGE_dll)
+#endif
+
+#else /* __DECLSPEC_SUPPORTED */
+
+#ifdef __MSVCRT__
+__MINGW_IMPORT double	_HUGE;
+#define	HUGE_VAL	_HUGE
+#else
+/* CRTDLL */
+__MINGW_IMPORT double	_HUGE_dll;
+#define	HUGE_VAL	_HUGE_dll
+#endif
+
+#endif /* __DECLSPEC_SUPPORTED */
+
+struct _exception
+{
+	int	type;
+	char	*name;
+	double	arg1;
+	double	arg2;
+	double	retval;
+};
+
+
+double	sin (double);
+double	cos (double);
+double	tan (double);
+double	sinh (double);
+double	cosh (double);
+double	tanh (double);
+double	asin (double);
+double	acos (double);
+double	atan (double);
+double	atan2 (double, double);
+double	exp (double);
+double	log (double);
+double	log10 (double);
+double	pow (double, double);
+double	sqrt (double);
+double	ceil (double);
+double	floor (double);
+double	fabs (double);
+double	ldexp (double, int);
+double	frexp (double, int*);
+double	modf (double, double*);
+double	fmod (double, double);
+
+
+#ifndef	__STRICT_ANSI__
+
+/* Complex number (for cabs) */
+struct _complex
+{
+	double	x;	/* Real part */
+	double	y;	/* Imaginary part */
+};
+
+double	_cabs (struct _complex);
+double	_hypot (double, double);
+double	_j0 (double);
+double	_j1 (double);
+double	_jn (int, double);
+double	_y0 (double);
+double	_y1 (double);
+double	_yn (int, double);
+int	_matherr (struct _exception *);
+
+/* These are also declared in Mingw float.h; needed here as well to work 
+   around GCC build issues.  */
+/* BEGIN FLOAT.H COPY */
+/*
+ * IEEE recommended functions
+ */
+
+double	_chgsign	(double);
+double	_copysign	(double, double);
+double	_logb		(double);
+double	_nextafter	(double, double);
+double	_scalb		(double, long);
+
+int	_finite		(double);
+int	_fpclass	(double);
+int	_isnan		(double);
+
+/* END FLOAT.H COPY */
+
+#if !defined (_NO_OLDNAMES)  \
+   || (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L )
+
+/*
+ * Non-underscored versions of non-ANSI functions. These reside in
+ * liboldnames.a. They are now also ISO C99 standand names.
+ * Provided for extra portability.
+ */
+
+double cabs (struct _complex);
+double hypot (double, double);
+double j0 (double);
+double j1 (double);
+double jn (int, double);
+double y0 (double);
+double y1 (double);
+double yn (int, double);
+
+#endif	/* Not _NO_OLDNAMES */
+
+#endif	/* Not __STRICT_ANSI__ */
+
+#ifdef __cplusplus
+}
+#endif
+#endif	/* Not RC_INVOKED */
+
+
+#ifndef __NO_ISOCEXT
+
+#define INFINITY HUGE_VAL
+#define NAN (0.0F/0.0F)
+
+/*
+   Return values for fpclassify.
+   These are based on Intel x87 fpu condition codes
+   in the high byte of status word and differ from
+   the return values for MS IEEE 754 extension _fpclass()
+*/
+#define FP_NAN		0x0100
+#define FP_NORMAL	0x0400
+#define FP_INFINITE	(FP_NAN | FP_NORMAL)
+#define FP_ZERO		0x4000
+#define FP_SUBNORMAL	(FP_NORMAL | FP_ZERO)
+/* 0x0200 is signbit mask */
+
+#ifndef RC_INVOKED
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double nan(const char *tagp);
+float nanf(const char *tagp);
+
+#ifndef __STRICT_ANSI__
+#define nan() nan("")
+#define nanf() nanf("")
+#endif
+
+
+/*
+  We can't inline float, because we want to ensure truncation
+  to semantic type before classification.  If we extend to long
+  double, we will also need to make double extern only.
+  (A normal long double value might become subnormal when 
+  converted to double, and zero when converted to float.)
+*/
+extern __inline__ int __fpclassify (double x){
+  unsigned short sw;
+  __asm__ ("fxam; fstsw %%ax;" : "=a" (sw): "t" (x));
+  return sw & (FP_NAN | FP_NORMAL | FP_ZERO );
+}
+
+extern int __fpclassifyf (float);
+
+#define fpclassify(x) ((sizeof(x) == sizeof(float)) ? __fpclassifyf(x) \
+		       :  __fpclassify(x))
+
+/* We don't need to worry about trucation here:
+   A NaN stays a NaN. */
+
+extern __inline__ int __isnan (double _x)
+{
+  unsigned short sw;
+  __asm__ ("fxam;"
+	   "fstsw %%ax": "=a" (sw) : "t" (_x));
+  return (sw & (FP_NAN | FP_NORMAL | FP_INFINITE | FP_ZERO | FP_SUBNORMAL))
+    == FP_NAN;
+}
+
+extern __inline__ int __isnanf (float _x)
+{
+  unsigned short sw;
+  __asm__ ("fxam;"
+	    "fstsw %%ax": "=a" (sw) : "t" (_x));
+  return (sw & (FP_NAN | FP_NORMAL | FP_INFINITE | FP_ZERO | FP_SUBNORMAL))
+    == FP_NAN;
+}
+
+#define isnan(x) ((sizeof(x) == sizeof(float)) ? __isnanf(x) \
+		       :  __isnan(x))
+
+
+#define isfinite(x) ((fpclassify(x) & FP_NAN) == 0)
+#define isinf(x) (fpclassify(x) == FP_INFINITE)
+#define isnormal(x) (fpclassify(x) == FP_NORMAL)
+
+
+extern __inline__ int __signbit (double x) {
+  unsigned short stw;
+  __asm__ ( "fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
+  return stw & 0x0200;
+}
+
+extern  __inline__ int __signbitf (float x) {
+  unsigned short stw;
+  __asm__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
+  return stw & 0x0200;
+}
+
+#define signbit(x) ((sizeof(x) == sizeof(float)) ? __signbitf(x) \
+		    : __signbit(x))
+/* 
+ *  With these functions, comparisons involving quiet NaNs set the FP
+ *  condition code to "unordered".  The IEEE floating-point spec
+ *  dictates that the result of floating-point comparisons should be
+ *  false whenever a NaN is involved, with the exception of the !=, 
+ *  which always returns true.
+ */
+
+#if __GNUC__ >= 3
+
+#define isgreater(x, y) __builtin_isgreater(x, y)
+#define isgreaterequal(x, y) __builtin_isgreaterequal(x, y)
+#define isless(x, y) __builtin_isless(x, y)
+#define islessequal(x, y) __builtin_islessequal(x, y)
+#define islessgreater(x, y) __builtin_islessgreater(x, y)
+#define isunordered(x, y) __builtin_isunordered(x, y)
+
+#else
+/*  helper  */
+extern  __inline__ int __fp_unordered_compare (double x,  double y){
+  unsigned short retval;
+  __asm__ ("fucom %%st(1);"
+	   "fnstsw;": "=a" (retval) : "t" (x), "u" (y));
+  return retval;
+}
+
+#define isgreater(x, y) ((__fp_unordered_compare(x, y) \
+			   & 0x4500) == 0)
+#define isless(x, y) ((__fp_unordered_compare (y, x) \
+                       & 0x4500) == 0)
+#define isgreaterequal(x, y) ((__fp_unordered_compare (x, y) \
+                               & FP_INFINITE) == 0)
+#define islessequal(x, y) ((__fp_unordered_compare(y, x) \
+			    & FP_INFINITE) == 0)
+#define islessgreater(x, y) ((__fp_unordered_compare(x, y) \
+			      & FP_SUBNORMAL) == 0)
+#define isunordered(x, y) ((__fp_unordered_compare(x, y) \
+			    & 0x4500) == 0x4500)
+
+#endif
+
+/* round, using fpu control word settings */
+extern  __inline__ double rint (double x)
+{
+  double retval;
+  __asm__ ("frndint;": "=t" (retval) : "0" (x));
+  return retval;
+}
+
+extern  __inline__ float rintf (float x)
+{
+  float retval;
+  __asm__ ("frndint;" : "=t" (retval) : "0" (x) );
+  return retval;
+}
+
+/* round away from zero, regardless of fpu control word settings */
+extern double round (double);
+extern float roundf (float);
+
+/* round towards zero, regardless of fpu control word settings */
+extern double trunc (double);
+extern float truncf (float);
+
+
+/* fmax and fmin.
+   NaN arguments are treated as missing data: if one argument is a NaN and the other numeric, then the
+   these functions choose the numeric value.
+*/
+
+extern double fmax  (double, double);
+extern double fmin (double, double);
+extern float fmaxf (float, float);
+float fminf (float, float);
+
+/* return x * y + z as a ternary op */ 
+extern double fma (double, double, double);
+extern float fmaf (float, float, float);
+
+/* one lonely transcendental */
+extern double log2 (double _x);
+extern float log2f (float _x);
+
+/* The underscored versions are in MSVCRT.dll.
+   The stubs for these are in libmingwex.a */
+
+double copysign (double, double);
+float copysignf (float, float);
+double logb (double);
+float logbf (float);
+double nextafter (double, double);
+float nextafterf (float, float);
+double scalb (double, long);
+float scalbf (float, long);
+
+#if !defined (__STRICT_ANSI__)  /* inline using non-ANSI functions */
+extern  __inline__ double copysign (double x, double y)
+	{ return _copysign(x, y); }
+extern  __inline__ float copysignf (float x, float y)
+	{ return  _copysign(x, y); } 
+extern  __inline__ double logb (double x)
+	{ return _logb(x); }
+extern  __inline__ float logbf (float x)
+	{ return  _logb(x); }
+extern  __inline__ double nextafter(double x, double y)
+	{ return _nextafter(x, y); }
+extern  __inline__ float nextafterf(float x, float y)
+	{ return _nextafter(x, y); }
+extern  __inline__ double scalb (double x, long i)
+	{ return _scalb (x, i); }
+extern  __inline__ float scalbf (float x, long i)
+	{ return _scalb(x, i); }
+#endif /* (__STRICT_ANSI__)  */
+
+#ifdef __cplusplus
+}
+#endif
+#endif	/* Not RC_INVOKED */
+
+#endif /* __NO_ISOCEXT */
+
+#endif	/* Not _MATH_H_ */
+
diff --git a/Win32/bin/tcc/include/mem.h b/Win32/bin/tcc/include/mem.h
new file mode 100644
index 0000000..fcad7c9
--- /dev/null
+++ b/Win32/bin/tcc/include/mem.h
@@ -0,0 +1,8 @@
+/*
+ * This file is part of the Mingw32 package.
+ *
+ * mem.h maps to string.h
+ */
+#ifndef	__STRICT_ANSI__
+#include <string.h>
+#endif
diff --git a/Win32/bin/tcc/include/memory.h b/Win32/bin/tcc/include/memory.h
new file mode 100644
index 0000000..d0ed8ad
--- /dev/null
+++ b/Win32/bin/tcc/include/memory.h
@@ -0,0 +1,9 @@
+/*
+ * This file is part of the Mingw32 package.
+ *
+ * memory.h maps to the standard string.h header.
+ */
+#ifndef	__STRICT_ANSI__
+#include	<string.h>
+#endif
+
diff --git a/Win32/bin/tcc/include/process.h b/Win32/bin/tcc/include/process.h
new file mode 100644
index 0000000..2818192
--- /dev/null
+++ b/Win32/bin/tcc/include/process.h
@@ -0,0 +1,158 @@
+/* 
+ * process.h
+ *
+ * Function calls for spawning child processes.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef	__STRICT_ANSI__
+
+#ifndef	_PROCESS_H_
+#define	_PROCESS_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/* Includes a definition of _pid_t and pid_t */
+#include <sys/types.h>
+
+/*
+ * Constants for cwait actions.
+ * Obsolete for Win32.
+ */
+#define	_WAIT_CHILD		0
+#define	_WAIT_GRANDCHILD	1
+
+#ifndef	_NO_OLDNAMES
+#define	WAIT_CHILD		_WAIT_CHILD
+#define	WAIT_GRANDCHILD		_WAIT_GRANDCHILD
+#endif	/* Not _NO_OLDNAMES */
+
+/*
+ * Mode constants for spawn functions.
+ */
+#define	_P_WAIT		0
+#define	_P_NOWAIT	1
+#define	_P_OVERLAY	2
+#define	_OLD_P_OVERLAY	_P_OVERLAY
+#define	_P_NOWAITO	3
+#define	_P_DETACH	4
+
+#ifndef	_NO_OLDNAMES
+#define	P_WAIT		_P_WAIT
+#define	P_NOWAIT	_P_NOWAIT
+#define	P_OVERLAY	_P_OVERLAY
+#define	OLD_P_OVERLAY	_OLD_P_OVERLAY
+#define	P_NOWAITO	_P_NOWAITO
+#define	P_DETACH	_P_DETACH
+#endif	/* Not _NO_OLDNAMES */
+
+
+#ifndef RC_INVOKED
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+void	_cexit(void);
+void	_c_exit(void);
+
+int	_cwait (int*, _pid_t, int);
+
+_pid_t	_getpid(void);
+
+int	_execl		(const char*, const char*, ...);
+int	_execle		(const char*, const char*, ...);
+int	_execlp		(const char*, const char*, ...);
+int	_execlpe	(const char*, const char*, ...);
+int	_execv		(const char*, char* const*);
+int	_execve		(const char*, char* const*, char* const*);
+int	_execvp		(const char*, char* const*);
+int	_execvpe	(const char*, char* const*, char* const*);
+
+int	_spawnl		(int, const char*, const char*, ...);
+int	_spawnle	(int, const char*, const char*, ...);
+int	_spawnlp	(int, const char*, const char*, ...);
+int	_spawnlpe	(int, const char*, const char*, ...);
+int	_spawnv		(int, const char*, char* const*);
+int	_spawnve	(int, const char*, char* const*, char* const*);
+int	_spawnvp	(int, const char*, char* const*);
+int	_spawnvpe	(int, const char*, char* const*, char* const*);
+
+/*
+ * The functions _beginthreadex and _endthreadex are not provided by CRTDLL.
+ * They are provided by MSVCRT.
+ *
+ * NOTE: Apparently _endthread calls CloseHandle on the handle of the thread,
+ * making for race conditions if you are not careful. Basically you have to
+ * make sure that no-one is going to do *anything* with the thread handle
+ * after the thread calls _endthread or returns from the thread function.
+ *
+ * NOTE: No old names for these functions. Use the underscore.
+ */
+unsigned long
+	_beginthread	(void (*)(void *), unsigned, void*);
+void	_endthread	(void);
+
+#ifdef	__MSVCRT__
+unsigned long
+	_beginthreadex	(void *, unsigned, unsigned (__stdcall *) (void *), 
+			 void*, unsigned, unsigned*);
+void	_endthreadex	(unsigned);
+#endif
+
+
+#ifndef	_NO_OLDNAMES
+/*
+ * Functions without the leading underscore, for portability. These functions
+ * live in liboldnames.a.
+ */
+int	cwait (int*, pid_t, int);
+pid_t	getpid (void);
+int	execl (const char*, const char*, ...);
+int	execle (const char*, const char*, ...);
+int	execlp (const char*, const char*, ...);
+int	execlpe (const char*, const char*, ...);
+int	execv (const char*, char* const*);
+int	execve (const char*, char* const*, char* const*);
+int	execvp (const char*, char* const*);
+int	execvpe (const char*, char* const*, char* const*);
+int	spawnl (int, const char*, const char*, ...);
+int	spawnle (int, const char*, const char*, ...);
+int	spawnlp (int, const char*, const char*, ...);
+int	spawnlpe (int, const char*, const char*, ...);
+int	spawnv (int, const char*, char* const*);
+int	spawnve (int, const char*, char* const*, char* const*);
+int	spawnvp (int, const char*, char* const*);
+int	spawnvpe (int, const char*, char* const*, char* const*);
+#endif	/* Not _NO_OLDNAMES */
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* _PROCESS_H_ not defined */
+
+#endif	/* Not __STRICT_ANSI__ */
+
diff --git a/Win32/bin/tcc/include/sbml/SBMLTypes.h b/Win32/bin/tcc/include/sbml/SBMLTypes.h
new file mode 100644
index 0000000..f570f71
--- /dev/null
+++ b/Win32/bin/tcc/include/sbml/SBMLTypes.h
@@ -0,0 +1,12 @@
+/** this is special placeholder header for the tcc compilation of functions for
+     dynamic compilation by tcc within SOSlib only */
+
+#ifndef SBMLTypes_h
+#define SBMLTypes_h
+
+typedef struct SBMLDocument SBMLDocument_t;
+typedef struct Model Model_t;
+typedef struct ASTNode ASTNode_t ;
+typedef struct List List_t ;
+
+#endif  /* SBMLTypes_h */
diff --git a/Win32/bin/tcc/include/sbmlsolver/band.h b/Win32/bin/tcc/include/sbmlsolver/band.h
new file mode 100644
index 0000000..b8735c8
--- /dev/null
+++ b/Win32/bin/tcc/include/sbmlsolver/band.h
@@ -0,0 +1,606 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.3 $
+ * $Date: 2006/04/11 13:10:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for a generic BAND linear solver
+ * package. There are two sets of band solver routines listed in
+ * this file: one set uses type BandMat defined below and the
+ * other set uses the type realtype ** for band matrix arguments.
+ * The two sets of band solver routines make it easy to work
+ * with two types of band matrices:
+ *
+ * (1) The BandMat type is intended for use with large
+ *     band matrices whose elements/columns may be stored in
+ *     non-contiguous memory locations or even distributed across
+ *     different process memory spaces. This type may be modified
+ *     to include such distribution information. If this is done,
+ *     then all the routines that use BandMat must be modified to
+ *     reflect the new data structure.
+ *
+ * (2) The set of routines that use realtype ** (and NOT the
+ *     BandMat type) is intended for use with small matrices
+ *     which can easily be allocated within a contiguous block of
+ *     memory for a single process.
+ *
+ * Routines that work with the type BandMat begin with "Band".
+ * The BandAllocMat function allocates a band matrix for use in
+ * the other matrix routines listed in this file. Matrix storage
+ * details are given in the documentation for the type BandMat.
+ * The BandAllocPiv function allocates memory for pivot
+ * information. The storage allocated by BandAllocMat and
+ * BandAllocPiv is deallocated by the routines BandFreeMat and
+ * BandFreePiv, respectively. The BandFactor and BandBacksolve
+ * routines perform the actual solution of a band linear system.
+ *
+ * Routines that work with realtype ** begin with "band" (except
+ * for the factor and solve routines which are called gbfa and
+ * gbsl, respectively). The underlying matrix storage is
+ * described in the documentation for bandalloc.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _BAND_H
+#define _BAND_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Type: BandMat
+ * -----------------------------------------------------------------
+ * The type BandMat is the type of a large (possibly distributed)
+ * band matrix. It is defined to be a pointer to a structure
+ * with the following fields:
+ *
+ * size is the number of columns (== number of rows)
+ *
+ * mu   is the upper bandwidth, 0 <= mu <= size-1
+ *
+ * ml   is the lower bandwidth, 0 <= ml <= size-1
+ *
+ * smu  is the storage upper bandwidth, mu <= smu <= size-1.
+ *      The BandFactor routine writes the LU factors
+ *      into the storage for A. The upper triangular factor U,
+ *      however, may have an upper bandwidth as big as
+ *      MIN(size-1,mu+ml) because of partial pivoting. The smu
+ *      field holds the upper bandwidth allocated for A.
+ *
+ * data is a two dimensional array used for component storage.
+ *      The elements of a band matrix of type BandMat are
+ *      stored columnwise (i.e. columns are stored one on top
+ *      of the other in memory). Only elements within the
+ *      specified bandwidths are stored.
+ *
+ * If we number rows and columns in the band matrix starting
+ * from 0, then
+ *
+ * data[0] is a pointer to (smu+ml+1)*size contiguous locations
+ *         which hold the elements within the band of A
+ *
+ * data[j] is a pointer to the uppermost element within the band
+ *         in the jth column. This pointer may be treated as
+ *         an array indexed from smu-mu (to access the
+ *         uppermost element within the band in the jth
+ *         column) to smu+ml (to access the lowest element
+ *         within the band in the jth column). (Indices from 0
+ *         to smu-mu-1 give access to extra storage elements
+ *         required by BandFactor.)
+ *
+ * data[j][i-j+smu] is the (i,j)th element, j-mu <= i <= j+ml.
+ *
+ * The macros below allow a user to access individual matrix
+ * elements without writing out explicit data structure
+ * references and without knowing too much about the underlying
+ * element storage. The only storage assumption needed is that
+ * elements are stored columnwise and that a pointer into the jth
+ * column of elements can be obtained via the BAND_COL macro. The
+ * BAND_COL_ELEM macro selects an element from a column which has
+ * already been isolated via BAND_COL. BAND_COL_ELEM allows the
+ * user to avoid the translation from the matrix location (i,j)
+ * to the index in the array returned by BAND_COL at which the
+ * (i,j)th element is stored. See the documentation for BAND_COL
+ * and BAND_COL_ELEM for usage details. Users should use these
+ * macros whenever possible.
+ * -----------------------------------------------------------------
+ */
+
+typedef struct _BandMat {
+  long int size;
+  long int mu, ml, smu;
+  realtype **data;
+} *BandMat;
+
+/* BandMat accessor macros */
+
+/*
+ * -----------------------------------------------------------------
+ * Macro : BAND_ELEM
+ * -----------------------------------------------------------------
+ * Usage : BAND_ELEM(A,i,j) = a_ij;  OR
+ *         a_ij = BAND_ELEM(A,i,j);
+ * -----------------------------------------------------------------
+ * BAND_ELEM(A,i,j) references the (i,j)th element of the
+ * N by N band matrix A, where 0 <= i,j <= N-1. The location
+ * (i,j) should further satisfy j-(A->mu) <= i <= j+(A->ml).
+ * -----------------------------------------------------------------
+ */
+
+#define BAND_ELEM(A,i,j) ((A->data)[j][i-j+(A->smu)])
+
+/*
+ * -----------------------------------------------------------------
+ * Macro : BAND_COL
+ * -----------------------------------------------------------------
+ * Usage : col_j = BAND_COL(A,j);
+ * -----------------------------------------------------------------
+ * BAND_COL(A,j) references the diagonal element of the jth
+ * column of the N by N band matrix A, 0 <= j <= N-1. The type of
+ * the expression BAND_COL(A,j) is realtype *. The pointer
+ * returned by the call BAND_COL(A,j) can be treated as an array
+ * which is indexed from -(A->mu) to (A->ml).
+ * -----------------------------------------------------------------
+ */
+
+#define BAND_COL(A,j) (((A->data)[j])+(A->smu))
+
+/*
+ * -----------------------------------------------------------------
+ * Macro : BAND_COL_ELEM
+ * -----------------------------------------------------------------
+ * Usage : col_j = BAND_COL(A,j);
+ *         BAND_COL_ELEM(col_j,i,j) = a_ij;  OR
+ *         a_ij = BAND_COL_ELEM(col_j,i,j);
+ * -----------------------------------------------------------------
+ * This macro references the (i,j)th entry of the band matrix A
+ * when used in conjunction with BAND_COL as shown above. The
+ * index (i,j) should satisfy j-(A->mu) <= i <= j+(A->ml).
+ * -----------------------------------------------------------------
+ */
+
+#define BAND_COL_ELEM(col_j,i,j) (col_j[i-j])
+
+/* Functions that use the BandMat representation for a band matrix */
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandAllocMat
+ * -----------------------------------------------------------------
+ * Usage : A = BandAllocMat(N, mu, ml, smu);
+ *         if (A == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * BandAllocMat allocates memory for an N by N band matrix with
+ * upper bandwidth mu, lower bandwidth ml, and storage upper
+ * bandwidth smu. Pass smu as follows depending on whether A will
+ * be factored by BandFactor:
+ *
+ * (1) Pass smu = mu if A will not be factored.
+ *
+ * (2) Pass smu = MIN(N-1,mu+ml) if A will be factored.
+ *
+ * BandAllocMat returns the storage allocated (type BandMat) or
+ * NULL if the request for matrix storage cannot be satisfied.
+ * See the documentation for the type BandMat for matrix storage
+ * details.
+ * -----------------------------------------------------------------
+ */
+
+BandMat BandAllocMat(long int N, long int mu, long int ml, 
+                     long int smu);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandAllocPiv
+ * -----------------------------------------------------------------
+ * Usage : p = BandAllocPiv(N);
+ *         if (p == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * BandAllocPiv allocates memory for pivot information to be
+ * filled in by the BandFactor routine during the factorization
+ * of an N by N band matrix. The underlying type for pivot
+ * information is an array of N integers and this routine returns
+ * the pointer to the memory it allocates. If the request for
+ * pivot storage cannot be satisfied, BandAllocPiv returns NULL.
+ * -----------------------------------------------------------------
+ */
+
+long int *BandAllocPiv(long int N);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandFactor
+ * -----------------------------------------------------------------
+ * Usage : ier = BandFactor(A, p);
+ *         if (ier != 0) ... A is singular
+ * -----------------------------------------------------------------
+ * BandFactor performs the LU factorization of the N by N band
+ * matrix A. This is done using standard Gaussian elimination
+ * with partial pivoting.
+ *
+ * A successful LU factorization leaves the "matrix" A and the
+ * pivot array p with the following information:
+ *
+ * (1) p[k] contains the row number of the pivot element chosen
+ *     at the beginning of elimination step k, k=0, 1, ..., N-1.
+ *
+ * (2) If the unique LU factorization of A is given by PA = LU,
+ *     where P is a permutation matrix, L is a lower triangular
+ *     matrix with all 1's on the diagonal, and U is an upper
+ *     triangular matrix, then the upper triangular part of A
+ *     (including its diagonal) contains U and the strictly lower
+ *     triangular part of A contains the multipliers, I-L.
+ *
+ * BandFactor returns 0 if successful. Otherwise it encountered
+ * a zero diagonal element during the factorization. In this case
+ * it returns the column index (numbered from one) at which
+ * it encountered the zero.
+ *
+ * Important Note: A must be allocated to accommodate the increase
+ * in upper bandwidth that occurs during factorization. If
+ * mathematically, A is a band matrix with upper bandwidth mu and
+ * lower bandwidth ml, then the upper triangular factor U can
+ * have upper bandwidth as big as smu = MIN(n-1,mu+ml). The lower
+ * triangular factor L has lower bandwidth ml. Allocate A with
+ * call A = BandAllocMat(N,mu,ml,smu), where mu, ml, and smu are
+ * as defined above. The user does not have to zero the "extra"
+ * storage allocated for the purpose of factorization. This will
+ * handled by the BandFactor routine.
+ * -----------------------------------------------------------------
+ */
+
+long int BandFactor(BandMat A, long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandBacksolve
+ * -----------------------------------------------------------------
+ * Usage : BandBacksolve(A, p, b);
+ * -----------------------------------------------------------------
+ * BandBacksolve solves the N-dimensional system A x = b using
+ * the LU factorization in A and the pivot information in p
+ * computed in BandFactor. The solution x is returned in b. This
+ * routine cannot fail if the corresponding call to BandFactor
+ * did not fail.
+ * -----------------------------------------------------------------
+ */
+
+void BandBacksolve(BandMat A, long int *p, realtype *b);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandZero
+ * -----------------------------------------------------------------
+ * Usage : BandZero(A);
+ * -----------------------------------------------------------------
+ * A(i,j) <- 0.0,    j-(A->mu) <= i <= j+(A->ml).
+ * -----------------------------------------------------------------
+ */
+
+void BandZero(BandMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandCopy
+ * -----------------------------------------------------------------
+ * Usage : BandCopy(A, B, copymu, copyml);
+ * -----------------------------------------------------------------
+ * BandCopy copies the submatrix with upper and lower bandwidths
+ * copymu, copyml of the N by N band matrix A into the N by N
+ * band matrix B.
+ * -----------------------------------------------------------------
+ */
+
+void BandCopy(BandMat A, BandMat B, long int copymu, long int copyml);
+
+/*
+ * -----------------------------------------------------------------
+ * Function: BandScale
+ * -----------------------------------------------------------------
+ * Usage : BandScale(c, A);
+ * -----------------------------------------------------------------
+ * A(i,j) <- c*A(i,j),   j-(A->mu) <= i <= j+(A->ml).
+ * -----------------------------------------------------------------
+ */
+
+void BandScale(realtype c, BandMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandAddI
+ * -----------------------------------------------------------------
+ * Usage : BandAddI(A);
+ * -----------------------------------------------------------------
+ * A(j,j) <- A(j,j)+1.0,   0 <= j <= (A->size)-1.
+ * -----------------------------------------------------------------
+ */
+
+void BandAddI(BandMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandFreeMat
+ * -----------------------------------------------------------------
+ * Usage : BandFreeMat(A);
+ * -----------------------------------------------------------------
+ * BandFreeMat frees the memory allocated by BandAllocMat for
+ * the band matrix A.
+ * -----------------------------------------------------------------
+ */
+
+void BandFreeMat(BandMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandFreePiv
+ * -----------------------------------------------------------------
+ * Usage : BandFreePiv(p);
+ * -----------------------------------------------------------------
+ * BandFreePiv frees the memory allocated by BandAllocPiv for
+ * the pivot information array p.
+ * -----------------------------------------------------------------
+ */
+
+void BandFreePiv(long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : BandPrint
+ * -----------------------------------------------------------------
+ * Usage : BandPrint(A);
+ * -----------------------------------------------------------------
+ * This routine prints the N by N band matrix A (upper and lower
+ * bandwidths A->mu and A->ml, respectively) to standard output
+ * as it would normally appear on paper. It is intended as a
+ * debugging tool with small values of N. The elements are
+ * printed using the %g/lg/Lg option. A blank line is printed
+ * before and after the matrix.
+ * -----------------------------------------------------------------
+ */
+
+void BandPrint(BandMat A);
+
+/* Functions that use the realtype ** representation for a band matrix */
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandalloc
+ * -----------------------------------------------------------------
+ * Usage : realtype **a;
+ *         a = bandalloc(n, smu, ml);
+ *         if (a == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * bandalloc(n, smu, ml) allocates storage for an n by n band
+ * matrix A with storage upper bandwidth smu and lower bandwidth
+ * ml. It returns a pointer to the newly allocated storage if
+ * successful. If the memory request cannot be satisfied, then
+ * bandalloc returns NULL. If, mathematically, A has upper and
+ * lower bandwidths mu and ml, respectively, then the value
+ * passed to bandalloc for smu may need to be greater than mu.
+ * The gbfa routine writes the LU factors into the storage (named
+ * "a" in the above usage documentation) for A (thus destroying
+ * the original elements of A). The upper triangular factor U,
+ * however, may have a larger upper bandwidth than the upper
+ * bandwidth mu of A. Thus some "extra" storage for A must be
+ * allocated if A is to be factored by gbfa. Pass smu as follows:
+ *
+ * (1) Pass smu = mu if A will not be factored.
+ *
+ * (2) Pass smu = MIN(n-1,mu+ml) if A will be factored.
+ *
+ * The underlying type of the band matrix returned is realtype**.
+ * If we allocate a band matrix A in realtype **a by
+ * a = bandalloc(n,smu,ml), then a[0] is a pointer to
+ * n * (smu + ml + 1) contiguous storage locations and a[j] is a
+ * pointer to the uppermost element in the storage for the jth
+ * column. The expression a[j][i-j+smu] references the (i,j)th
+ * element of A, where 0 <= i,j <= n-1 and j-mu <= i <= j+ml.
+ * (The elements a[j][0], a[j][1], ..., a[j][smu-mu-1] are used
+ * by gbfa and gbsl.)
+ * -----------------------------------------------------------------
+ */
+
+realtype **bandalloc(long int n, long int smu, long int ml);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandallocpiv
+ * -----------------------------------------------------------------
+ * Usage : long int *pivot;
+ *         pivot = bandallocpiv(n);
+ *         if (pivot == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * bandallocpiv(n) allocates an array of n integers. It returns a
+ * pointer to the first element in the array if successful. It
+ * returns NULL if the memory request could not be satisfied.
+ * -----------------------------------------------------------------
+ */
+
+long int *bandallocpiv(long int n);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : gbfa
+ * -----------------------------------------------------------------
+ * Usage : long int ier;
+ *         ier = gbfa(a,n,mu,ml,smu,p);
+ *         if (ier > 0) ... zero element encountered during
+ *                          the factorization
+ * -----------------------------------------------------------------
+ * gbfa(a,n,mu,ml,smu,p) factors the n by n band matrix A (upper
+ * and lower bandwidths mu and ml, storage upper bandwidth smu)
+ * stored in "a". It overwrites the elements of A with the LU
+ * factors and it keeps track of the pivot rows chosen in the
+ * pivot array p.
+ *
+ * A successful LU factorization leaves a and pivot array p with
+ * the following information:
+ *
+ * (1) p[k] contains the row number of the pivot element chosen
+ *     at the beginning of elimination step k, k=0, 1, ..., n-1.
+ *
+ * (2) If the unique LU factorization of A is given by PA = LU,
+ *     where P is a permutation matrix, L is a lower triangular
+ *     matrix with all 1's on the diagonal, and U is an upper
+ *     triangular matrix, then the upper triangular part of A
+ *     (including its diagonal) contains U and the strictly lower
+ *     triangular part of A contains the multipliers, I-L.
+ *
+ * gbfa returns 0 if successful. Otherwise it encountered a zero
+ * diagonal element during the factorization. In this case it
+ * returns the column index (numbered from one) at which it
+ * encountered the zero.
+ *
+ * IMPORTANT NOTE: Suppose A is a band matrix with upper
+ * bandwidth mu and lower bandwidth ml, then the upper triangular
+ * factor U can have upper bandwidth as big as MIN(n-1,mu+ml)
+ * because of partial pivoting. The lower triangular factor L has
+ * lower bandwidth ml. Thus, if A is to be factored and
+ * backsolved using gbfa and gbsl, then it should be allocated
+ * as a = bandalloc(n,smu,ml), where smu = MIN(n-1,mu+ml). The
+ * call to gbfa is ier = gbfa(a,n,mu,ml,smu,p). The corresponding
+ * call to gbsl is gbsl(a,n,smu,ml,p,b). The user does not need
+ * to zero the "extra" storage allocated for the purpose of
+ * factorization. This is handled by the gbfa routine. If A is
+ * not going to be factored and backsolved, then it can be
+ * allocated as a = bandalloc(n,smu,ml). In either case, all
+ * routines in this section use the parameter name smu for a
+ * parameter which must be the "storage upper bandwidth" which
+ * was passed to bandalloc.
+ * -----------------------------------------------------------------
+ */
+
+long int gbfa(realtype **a, long int n, long int mu, long int ml, 
+              long int smu, long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : gbsl
+ * -----------------------------------------------------------------
+ * Usage : realtype *b;
+ *         ier = gbfa(a,n,mu,ml,smu,p);
+ *         if (ier == 0) gbsl(a,n,smu,ml,p,b);
+ * -----------------------------------------------------------------
+ * gbsl(a,n,smu,ml,p,b) solves the n by n linear system
+ * Ax = b, where A is band matrix stored in "a" with storage
+ * upper bandwidth smu and lower bandwidth ml. It assumes that A
+ * has been LU factored and the pivot array p has been set by a
+ * successful call gbfa(a,n,mu,ml,smu,p). The solution x is
+ * written into the b array.
+ * -----------------------------------------------------------------
+ */
+
+void gbsl(realtype **a, long int n, long int smu, 
+          long int ml, long int *p, realtype *b);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandzero
+ * -----------------------------------------------------------------
+ * Usage : bandzero(a,n,mu,ml,smu);
+ * -----------------------------------------------------------------
+ * a(i,j) <- 0.0,   0 <= i,j <= n-1, j-mu <= i <= j+ml.
+ * -----------------------------------------------------------------
+ */
+
+void bandzero(realtype **a, long int n, long int mu, 
+              long int ml, long int smu);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandcopy
+ * -----------------------------------------------------------------
+ * Usage : bandcopy(a,b,n,a_smu,b_smu,copymu,copyml);
+ * -----------------------------------------------------------------
+ * b(i,j) <- a(i,j), 0 <= i,j <= n-1, j-copymu <= i <= j+copyml.
+ * -----------------------------------------------------------------
+ */
+
+void bandcopy(realtype **a, realtype **b, long int n, 
+              long int a_smu, long int b_smu,
+              long int copymu, long int copyml);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandscale
+ * -----------------------------------------------------------------
+ * Usage : bandscale(c,a,n,mu,ml);
+ * -----------------------------------------------------------------
+ * a(i,j) <- c*a(i,j),   0 <= i,j <= n-1, j-mu <= i <= j+ml.
+ * -----------------------------------------------------------------
+ */
+
+void bandscale(realtype c, realtype **a, long int n, 
+               long int mu, long int ml, long int smu);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandaddI
+ * -----------------------------------------------------------------
+ * Usage : bandaddI(a,n,smu);
+ * -----------------------------------------------------------------
+ * a(j,j) <- a(j,j)+1.0,   0 <= j <= n-1.
+ * -----------------------------------------------------------------
+ */
+
+void bandaddI(realtype **a, long int n, long int smu);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandfreepiv
+ * -----------------------------------------------------------------
+ * Usage : bandfreepiv(p);
+ * -----------------------------------------------------------------
+ * bandfreepiv(p) frees the pivot array p allocated by
+ * bandallocpiv.
+ * -----------------------------------------------------------------
+ */
+
+void bandfreepiv(long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandfree
+ * -----------------------------------------------------------------
+ * Usage : bandfree(a);
+ * -----------------------------------------------------------------
+ * bandfree(a) frees the band matrix a allocated by bandalloc.
+ * -----------------------------------------------------------------
+ */
+
+void bandfree(realtype **a);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : bandprint
+ * -----------------------------------------------------------------
+ * Usage : bandprint(a,n,mu,ml,smu);
+ * -----------------------------------------------------------------
+ * bandprint(a,n,mu,ml,smu) prints the n by n band matrix stored
+ * in a (with upper bandwidth mu and lower bandwidth ml) to
+ * standard output as it would normally appear on paper. It is
+ * intended as a debugging tool with small values of n. The
+ * elements are printed using the %g/lg/Lg option. A blank line
+ * is printed before and after the matrix.
+ * -----------------------------------------------------------------
+ */
+
+void bandprint(realtype **a, long int n, long int mu, long int ml, 
+               long int smu);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/sbmlsolver/cvdense.h b/Win32/bin/tcc/include/sbmlsolver/cvdense.h
new file mode 100644
index 0000000..1ccda80
--- /dev/null
+++ b/Win32/bin/tcc/include/sbmlsolver/cvdense.h
@@ -0,0 +1,191 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2006/03/17 17:43:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the CVODE/CVODES dense linear
+ * solver, CVDENSE.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVDENSE_H
+#define _CVDENSE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "dense.h"
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * CVDENSE solver constants
+ * -----------------------------------------------------------------
+ * CVD_MSBJ : maximum number of steps between dense Jacobian
+ *            evaluations
+ *
+ * CVD_DGMAX : maximum change in gamma between dense Jacobian
+ *             evaluations
+ * -----------------------------------------------------------------
+ */
+
+#define CVD_MSBJ  50
+#define CVD_DGMAX RCONST(0.2)
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVDenseJacFn
+ * -----------------------------------------------------------------
+ * A dense Jacobian approximation function Jac must have the
+ * prototype given below. Its parameters are:
+ *
+ * N is the problem size.
+ *
+ * J is the dense matrix (of type DenseMat) that will be loaded
+ * by a CVDenseJacFn with an approximation to the Jacobian matrix
+ * J = (df_i/dy_j) at the point (t,y).
+ * J is preset to zero, so only the nonzero elements need to be
+ * loaded. Two efficient ways to load J are:
+ *
+ * (1) (with macros - no explicit data structure references)
+ *     for (j=0; j < n; j++) {
+ *       col_j = DENSE_COL(J,j);
+ *       for (i=0; i < n; i++) {
+ *         generate J_ij = the (i,j)th Jacobian element
+ *         col_j[i] = J_ij;
+ *       }
+ *     }
+ *
+ * (2) (without macros - explicit data structure references)
+ *     for (j=0; j < n; j++) {
+ *       col_j = (J->data)[j];
+ *       for (i=0; i < n; i++) {
+ *         generate J_ij = the (i,j)th Jacobian element
+ *         col_j[i] = J_ij;
+ *       }
+ *     }
+ *
+ * The DENSE_ELEM(A,i,j) macro is appropriate for use in small
+ * problems in which efficiency of access is NOT a major concern.
+ *
+ * t is the current value of the independent variable.
+ *
+ * y is the current value of the dependent variable vector,
+ *   namely the predicted value of y(t).
+ *
+ * fy is the vector f(t,y).
+ *
+ * jac_data is a pointer to user data - the same as the jac_data
+ *          parameter passed to CVDense.
+ *
+ * NOTE: If the user's Jacobian routine needs other quantities,
+ *       they are accessible as follows: hcur (the current stepsize)
+ *       and ewt (the error weight vector) are accessible through
+ *       CVodeGetCurrentStep and CVodeGetErrWeights, respectively
+ *       (see cvode.h). The unit roundoff is available as
+ *       UNIT_ROUNDOFF defined in sundialstypes.h.
+ *
+ * tmp1, tmp2, and tmp3 are pointers to memory allocated for
+ * vectors of length N which can be used by a CVDenseJacFn
+ * as temporary storage or work space.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVDenseJacFn)(long int N, DenseMat J, realtype t,
+                             N_Vector y, N_Vector fy, void *jac_data,
+                             N_Vector tmp1, N_Vector tmp2, N_Vector tmp3);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVDense
+ * -----------------------------------------------------------------
+ * A call to the CVDense function links the main integrator with
+ * the CVDENSE linear solver.
+ *
+ * cvode_mem is the pointer to the integrator memory returned by
+ *           CVodeCreate.
+ *
+ * N is the size of the ODE system.
+ *
+ * The return value of CVDense is one of:
+ *    CVDENSE_SUCCESS   if successful
+ *    CVDENSE_MEM_NULL  if the cvode memory was NULL
+ *    CVDENSE_MEM_FAIL  if there was a memory allocation failure
+ *    CVDENSE_ILL_INPUT if a required vector operation is missing
+ * -----------------------------------------------------------------
+ */
+
+int CVDense(void *cvode_mem, long int N);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional inputs to the CVDENSE linear solver
+ * -----------------------------------------------------------------
+ *
+ * CVDenseSetJacFn specifies the dense Jacobian approximation
+ *                 routine to be used. A user-supplied djac routine
+ *                 must be of type CVDenseJacFn. By default, a
+ *                 difference quotient routine CVDenseDQJac, supplied
+ *                 with this solver is used.                     
+ *                 It also specifies a pointer to user data which is
+ *                 passed to the djac routine every time it is called.
+ *
+ * The return value of CVDenseSet* is one of:
+ *    CVDENSE_SUCCESS   if successful
+ *    CVDENSE_MEM_NULL  if the cvode memory was NULL
+ *    CVDENSE_LMEM_NULL if the cvdense memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVDenseSetJacFn(void *cvode_mem, CVDenseJacFn djac, void *jac_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Optional outputs from the CVDENSE linear solver
+ * -----------------------------------------------------------------
+ *
+ * CVDenseGetWorkSpace returns the real and integer workspace used
+ *                     by CVDENSE.
+ * CVDenseGetNumJacEvals returns the number of calls made to the
+ *                       Jacobian evaluation routine djac.
+ * CVDenseGetNumRhsEvals returns the number of calls to the user
+ *                       f routine due to finite difference Jacobian
+ *                       evaluation.
+ * CVDenseGetLastFlag returns the last error flag set by any of
+ *                    the CVDENSE interface functions.
+ *
+ * The return value of CVDenseGet* is one of:
+ *    CVDENSE_SUCCESS   if successful
+ *    CVDENSE_MEM_NULL  if the cvode memory was NULL
+ *    CVDENSE_LMEM_NULL if the cvdense memory was NULL
+ * -----------------------------------------------------------------
+ */
+
+int CVDenseGetWorkSpace(void *cvode_mem, long int *lenrwD, long int *leniwD);
+int CVDenseGetNumJacEvals(void *cvode_mem, long int *njevalsD);
+int CVDenseGetNumRhsEvals(void *cvode_mem, long int *nfevalsD);
+int CVDenseGetLastFlag(void *cvode_mem, int *flag);
+
+/* CVDENSE return values */
+
+#define CVDENSE_SUCCESS    0
+#define CVDENSE_MEM_NULL  -1
+#define CVDENSE_LMEM_NULL -2
+#define CVDENSE_ILL_INPUT -3
+#define CVDENSE_MEM_FAIL  -4
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/sbmlsolver/cvode.h b/Win32/bin/tcc/include/sbmlsolver/cvode.h
new file mode 100644
index 0000000..35bb7ee
--- /dev/null
+++ b/Win32/bin/tcc/include/sbmlsolver/cvode.h
@@ -0,0 +1,872 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.1 $
+ * $Date: 2006/03/17 17:43:27 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh, Radu Serban
+ *                and Dan Shumaker @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/cvode/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the interface file for the main CVODE integrator.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _CVODE_H
+#define _CVODE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "nvector.h"
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * CVODE is used to solve numerically the ordinary initial value
+ * problem:
+ *
+ *                 y' = f(t,y),
+ *                 y(t0) = y0,
+ *
+ * where t0, y0 in R^N, and f: R x R^N -> R^N are given.
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * Enumerations for inputs to CVodeCreate, CVodeMalloc,
+ * CVodeReInit, and CVode.
+ * -----------------------------------------------------------------
+ * Symbolic constants for the lmm, iter, and itol input
+ * parameters to CVodeMalloc and CVodeReInit, as well as the
+ * input parameter itask to CVode, are given below.
+ *
+ * lmm:   The user of the CVODE package specifies whether to use the
+ *        CV_ADAMS (Adams-Moulton) or CV_BDF (Backward Differentiation
+ *        Formula) linear multistep method. The BDF method is
+ *        recommended for stiff problems, and the CV_ADAMS method is
+ *        recommended for nonstiff problems.
+ *
+ * iter:  At each internal time step, a nonlinear equation must
+ *        be solved. The user can specify either CV_FUNCTIONAL
+ *        iteration, which does not require linear algebra, or a
+ *        CV_NEWTON iteration, which requires the solution of linear
+ *        systems. In the CV_NEWTON case, the user also specifies a
+ *        CVODE linear solver. CV_NEWTON is recommended in case of
+ *        stiff problems.
+ *
+ * itol:  This parameter specifies the relative and absolute
+ *        tolerance types to be used. The CV_SS tolerance type means
+ *        a scalar relative and absolute tolerance. The CV_SV
+ *        tolerance type means a scalar relative tolerance and a
+ *        vector absolute tolerance (a potentially different
+ *        absolute tolerance for each vector component). The CV_WF
+ *        tolerance type means that the user provides a function
+ *        (of type CVEwtFn) to set the error weight vector.
+ *
+ * itask: The itask input parameter to CVode indicates the job
+ *        of the solver for the next user step. The CV_NORMAL
+ *        itask is to have the solver take internal steps until
+ *        it has reached or just passed the user specified tout
+ *        parameter. The solver then interpolates in order to
+ *        return an approximate value of y(tout). The CV_ONE_STEP
+ *        option tells the solver to just take one internal step
+ *        and return the solution at the point reached by that
+ *        step. The CV_NORMAL_TSTOP and CV_ONE_STEP_TSTOP modes are
+ *        similar to CV_NORMAL and CV_ONE_STEP, respectively, except
+ *        that the integration never proceeds past the value
+ *        tstop (specified through the routine CVodeSetStopTime).
+ * -----------------------------------------------------------------
+ */
+
+/* lmm */
+#define CV_ADAMS 1
+#define CV_BDF   2
+
+/* iter */
+#define CV_FUNCTIONAL 1
+#define CV_NEWTON     2
+
+/* itol */
+#define CV_SS 1
+#define CV_SV 2
+#define CV_WF 3
+
+/* itask */
+#define CV_NORMAL         1
+#define CV_ONE_STEP       2
+#define CV_NORMAL_TSTOP   3
+#define CV_ONE_STEP_TSTOP 4
+
+/*
+ * =================================================================
+ *              F U N C T I O N   T Y P E S
+ * =================================================================
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVRhsFn
+ * -----------------------------------------------------------------
+ * The f function which defines the right hand side of the ODE
+ * system y' = f(t,y) must have type CVRhsFn.
+ * f takes as input the independent variable value t, and the
+ * dependent variable vector y.  It stores the result of f(t,y)
+ * in the vector ydot.  The y and ydot arguments are of type
+ * N_Vector.
+ * (Allocation of memory for ydot is handled within CVODE)
+ * The f_data parameter is the same as the f_data
+ * parameter set by the user through the CVodeSetFdata routine.
+ * This user-supplied pointer is passed to the user's f function
+ * every time it is called.
+ * A CVRhsFn f does not have a return value.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVRhsFn)(realtype t, N_Vector y,
+                        N_Vector ydot, void *f_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVRootFn
+ * -----------------------------------------------------------------
+ * A function g, which defines a set of functions g_i(t,y) whose
+ * roots are sought during the integration, must have type CVRootFn.
+ * The function g takes as input the independent variable value
+ * t, and the dependent variable vector y.  It stores the nrtfn
+ * values g_i(t,y) in the realtype array gout.
+ * (Allocation of memory for gout is handled within CVODE.)
+ * The g_data parameter is the same as that passed by the user
+ * to the CVodeSetGdata routine.  This user-supplied pointer is
+ * passed to the user's g function every time it is called.
+ * A CVRootFn g does not have a return value.
+ * -----------------------------------------------------------------
+ */
+
+typedef void (*CVRootFn)(realtype t, N_Vector y, realtype *gout,
+                         void *g_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Type : CVEwtFn
+ * -----------------------------------------------------------------
+ * A function e, which sets the error weight vector ewt, must have
+ * type CVEwtFn.
+ * The function e takes as input the current dependent variable y.
+ * It must set the vector of error weights used in the WRMS norm:
+ * 
+ *   ||y||_WRMS = sqrt [ 1/N * sum ( ewt_i * y_i)^2 ]
+ *
+ * Typically, the vector ewt has components:
+ * 
+ *   ewt_i = 1 / (reltol * |y_i| + abstol_i)
+ *
+ * The e_data parameter is the same as that passed by the user
+ * to the CVodeSetEdata routine.  This user-supplied pointer is
+ * passed to the user's e function every time it is called.
+ * A CVEwtFn e must return 0 if the error weight vector has been
+ * successfuly set and a non-zero value otherwise.
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*CVEwtFn)(N_Vector y, N_Vector ewt, void *e_data);
+
+/*
+ * =================================================================
+ *          U S E R - C A L L A B L E   R O U T I N E S
+ * =================================================================
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeCreate
+ * -----------------------------------------------------------------
+ * CVodeCreate creates an internal memory block for a problem to
+ * be solved by CVODE.
+ *
+ * lmm   is the type of linear multistep method to be used.
+ *       The legal values are CV_ADAMS and CV_BDF (see previous
+ *       description).
+ *
+ * iter  is the type of iteration used to solve the nonlinear
+ *       system that arises during each internal time step.
+ *       The legal values are CV_FUNCTIONAL and CV_NEWTON.
+ *
+ * If successful, CVodeCreate returns a pointer to initialized
+ * problem memory. This pointer should be passed to CVodeMalloc.
+ * If an initialization error occurs, CVodeCreate prints an error
+ * message to standard err and returns NULL.
+ * -----------------------------------------------------------------
+ */
+
+void *CVodeCreate(int lmm, int iter);
+
+/*
+ * -----------------------------------------------------------------
+ * Integrator optional input specification functions
+ * -----------------------------------------------------------------
+ * The following functions can be called to set optional inputs
+ * to values other than the defaults given below:
+ *
+ * Function                |  Optional input / [ default value ]
+ * -----------------------------------------------------------------
+ *                         |
+ * CVodeSetErrFile         | the file pointer for an error file
+ *                         | where all CVODE warning and error
+ *                         | messages will be written. This parameter
+ *                         | can be stdout (standard output), stderr
+ *                         | (standard error), a file pointer
+ *                         | (corresponding to a user error file
+ *                         | opened for writing) returned by fopen.
+ *                         | If not called, then all messages will
+ *                         | be written to standard output.
+ *                         | [stderr]
+ *                         |
+ * CVodeSetFdata           | a pointer to user data that will be
+ *                         | passed to the user's f function every
+ *                         | time f is called.
+ *                         | [NULL]
+ *                         |
+ * CVodeSetEwtFn           | user-provide EwtSet function e and 
+ *                         | a pointer to user data that will be
+ *                         | passed to the user's e function every
+ *                         | time e is called.
+ *                         | [NULL]
+ *                         | [NULL]
+ *                         |
+ * CVodeSetMaxOrd          | maximum lmm order to be used by the
+ *                         | solver.
+ *                         | [12 for Adams , 5 for BDF]
+ *                         |
+ * CVodeSetMaxNumSteps     | maximum number of internal steps to be
+ *                         | taken by the solver in its attempt to
+ *                         | reach tout.
+ *                         | [500]
+ *                         |
+ * CVodeSetMaxHnilWarns    | maximum number of warning messages
+ *                         | issued by the solver that t+h==t on the
+ *                         | next internal step. A value of -1 means
+ *                         | no such messages are issued.
+ *                         | [10]
+ *                         |
+ * CVodeSetStabLimDet      | flag to turn on/off stability limit
+ *                         | detection (TRUE = on, FALSE = off).
+ *                         | When BDF is used and order is 3 or
+ *                         | greater, CVsldet is called to detect
+ *                         | stability limit.  If limit is detected,
+ *                         | the order is reduced.
+ *                         | [FALSE]
+ *                         |
+ * CVodeSetInitStep        | initial step size.
+ *                         | [estimated by CVODE]
+ *                         |
+ * CVodeSetMinStep         | minimum absolute value of step size
+ *                         | allowed.
+ *                         | [0.0]
+ *                         |
+ * CVodeSetMaxStep         | maximum absolute value of step size
+ *                         | allowed.
+ *                         | [infinity]
+ *                         |
+ * CVodeSetStopTime        | the independent variable value past
+ *                         | which the solution is not to proceed.
+ *                         | [infinity]
+ *                         |
+ * CVodeSetMaxErrTestFails | Maximum number of error test failures
+ *                         | in attempting one step.
+ *                         | [7]
+ *                         |
+ * CVodeSetMaxNonlinIters  | Maximum number of nonlinear solver
+ *                         | iterations at one solution.
+ *                         | [3]
+ *                         |
+ * CVodeSetMaxConvFails    | Maximum number of convergence failures
+ *                         | allowed in attempting one step.
+ *                         | [10]
+ *                         |
+ * CVodeSetNonlinConvCoef  | Coefficient in the nonlinear
+ *                         | convergence test.
+ *                         | [0.1]
+ *                         |
+ * -----------------------------------------------------------------
+ *                         |
+ * CVodeSetIterType        | Changes the current nonlinear iteration
+ *                         | type.
+ *                         | [set by CVodecreate]
+ *                         |
+ * CVodeSetTolerances      | Changes the integration tolerances
+ *                         | between calls to CVode().
+ *                         | [set by CVodeMalloc/CVodeReInit]
+ *                         |
+ * -----------------------------------------------------------------
+ * Return flag:
+ *   CV_SUCCESS   if successful
+ *   CV_MEM_NULL  if the cvode memory is NULL
+ *   CV_ILL_INPUT if an argument has an illegal value
+ * -----------------------------------------------------------------
+ */
+
+int CVodeSetErrFile(void *cvode_mem, FILE *errfp);
+int CVodeSetFdata(void *cvode_mem, void *f_data);
+int CVodeSetEwtFn(void *cvode_mem, CVEwtFn efun, void *e_data);
+int CVodeSetMaxOrd(void *cvode_mem, int maxord);
+int CVodeSetMaxNumSteps(void *cvode_mem, long int mxsteps);
+int CVodeSetMaxHnilWarns(void *cvode_mem, int mxhnil);
+int CVodeSetStabLimDet(void *cvode_mem, booleantype stldet);
+int CVodeSetInitStep(void *cvode_mem, realtype hin);
+int CVodeSetMinStep(void *cvode_mem, realtype hmin);
+int CVodeSetMaxStep(void *cvode_mem, realtype hmax);
+int CVodeSetStopTime(void *cvode_mem, realtype tstop);
+int CVodeSetMaxErrTestFails(void *cvode_mem, int maxnef);
+int CVodeSetMaxNonlinIters(void *cvode_mem, int maxcor);
+int CVodeSetMaxConvFails(void *cvode_mem, int maxncf);
+int CVodeSetNonlinConvCoef(void *cvode_mem, realtype nlscoef);
+
+int CVodeSetIterType(void *cvode_mem, int iter);
+int CVodeSetTolerances(void *cvode_mem,
+                       int itol, realtype reltol, void *abstol);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeMalloc
+ * -----------------------------------------------------------------
+ * CVodeMalloc allocates and initializes memory for a problem to
+ * to be solved by CVODE.
+ *
+ * cvode_mem is pointer to CVODE memory returned by CVodeCreate.
+ *
+ * f       is the name of the C function defining the right-hand
+ *         side function in y' = f(t,y).
+ *
+ * t0      is the initial value of t.
+ *
+ * y0      is the initial condition vector y(t0).
+ *
+ * itol    is the type of tolerances to be used.
+ *         The legal values are:
+ *            CV_SS (scalar relative and absolute tolerances),
+ *            CV_SV (scalar relative tolerance and vector
+ *                absolute tolerance).
+ *            CV_WF (indicates that the user will provide a
+ *                function to evaluate the error weights.
+ *                In this case, reltol and abstol are ignored.)
+ *
+ * reltol  is the relative tolerance scalar.
+ *
+ * abstol  is a pointer to the absolute tolerance scalar or
+ *         an N_Vector of absolute tolerances.
+ *
+ * The parameters itol, reltol, and abstol define a vector of
+ * error weights, ewt, with components
+ *   ewt[i] = 1/(reltol*abs(y[i]) + abstol)   (if itol = CV_SS), or
+ *   ewt[i] = 1/(reltol*abs(y[i]) + abstol[i])   (if itol = CV_SV).
+ * This vector is used in all error and convergence tests, which
+ * use a weighted RMS norm on all error-like vectors v:
+ *    WRMSnorm(v) = sqrt( (1/N) sum(i=1..N) (v[i]*ewt[i])^2 ),
+ * where N is the problem dimension.
+ *
+ * Return flag:
+ *  CV_SUCCESS if successful
+ *  CV_MEM_NULL if the cvode memory was NULL
+ *  CV_MEM_FAIL if a memory allocation failed
+ *  CV_ILL_INPUT f an argument has an illegal value.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeMalloc(void *cvode_mem, CVRhsFn f, realtype t0, N_Vector y0,
+                int itol, realtype reltol, void *abstol);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeReInit
+ * -----------------------------------------------------------------
+ * CVodeReInit re-initializes CVode for the solution of a problem,
+ * where a prior call to CVodeMalloc has been made with the same
+ * problem size N. CVodeReInit performs the same input checking
+ * and initializations that CVodeMalloc does.
+ * But it does no memory allocation, assuming that the existing
+ * internal memory is sufficient for the new problem.
+ *
+ * The use of CVodeReInit requires that the maximum method order,
+ * maxord, is no larger for the new problem than for the problem
+ * specified in the last call to CVodeMalloc.  This condition is
+ * automatically fulfilled if the multistep method parameter lmm
+ * is unchanged (or changed from CV_ADAMS to CV_BDF) and the default
+ * value for maxord is specified.
+ *
+ * All of the arguments to CVodeReInit have names and meanings
+ * identical to those of CVodeMalloc.
+ *
+ * The return value of CVodeReInit is equal to CV_SUCCESS = 0 if
+ * there were no errors; otherwise it is a negative int equal to:
+ *   CV_MEM_NULL      indicating cvode_mem was NULL (i.e.,
+ *                    CVodeCreate has not been called).
+ *   CV_NO_MALLOC     indicating that cvode_mem has not been
+ *                    allocated (i.e., CVodeMalloc has not been
+ *                    called).
+ *   CV_ILL_INPUT     indicating an input argument was illegal
+ *                    (including an attempt to increase maxord).
+ * In case of an error return, an error message is also printed.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeReInit(void *cvode_mem, CVRhsFn f, realtype t0, N_Vector y0,
+                int itol, realtype reltol, void *abstol);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeRootInit
+ * -----------------------------------------------------------------
+ * CVodeRootInit initializes a rootfinding problem to be solved
+ * during the integration of the ODE system.  It must be called
+ * after CVodeCreate, and before CVode.  The arguments are:
+ *
+ * cvode_mem = pointer to CVODE memory returned by CVodeCreate.
+ *
+ * nrtfn     = number of functions g_i, an int >= 0.
+ *
+ * g         = name of user-supplied function, of type CVRootFn,
+ *             defining the functions g_i whose roots are sought.
+ * g_data    = a pointer to user data that will be passed to the 
+ *             user's g function every time g is called.
+ *
+ * If a new problem is to be solved with a call to CVodeReInit,
+ * where the new problem has no root functions but the prior one
+ * did, then call CVodeRootInit with nrtfn = 0.
+ *
+ * The return value of CVodeRootInit is CV_SUCCESS = 0 if there were
+ * no errors; otherwise it is a negative int equal to:
+ *   CV_MEM_NULL     indicating cvode_mem was NULL, or
+ *   CV_MEM_FAIL     indicating a memory allocation failed.
+ *                    (including an attempt to increase maxord).
+ *   CV_RTFUNC_NULL  indicating nrtfn > 0 but g = NULL.
+ * In case of an error return, an error message is also printed.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeRootInit(void *cvode_mem, int nrtfn, CVRootFn g, void *g_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVode
+ * -----------------------------------------------------------------
+ * CVode integrates the ODE over an interval in t.
+ * If itask is CV_NORMAL, then the solver integrates from its
+ * current internal t value to a point at or beyond tout, then
+ * interpolates to t = tout and returns y(tout) in the user-
+ * allocated vector yout. If itask is CV_ONE_STEP, then the solver
+ * takes one internal time step and returns in yout the value of
+ * y at the new internal time. In this case, tout is used only
+ * during the first call to CVode to determine the direction of
+ * integration and the rough scale of the t variable. In either
+ * case, the time reached by the solver is placed in (*tret). The
+ * user is responsible for allocating the memory for this value.
+ *
+ * cvode_mem is the pointer to CVODE memory returned by
+ *           CVodeCreate.
+ *
+ * tout  is the next time at which a computed solution is desired.
+ *
+ * yout  is the computed solution vector. In CV_NORMAL mode with no
+ *       errors and no roots found, yout=y(tout).
+ *
+ * tret  is a pointer to a real location. CVode sets (*tret) to
+ *       the time reached by the solver and returns
+ *       yout=y(*tret).
+ *
+ * itask is CV_NORMAL, CV_ONE_STEP, CV_NORMAL_TSTOP, or CV_ONE_STEP_TSTOP.
+ *       These four modes are described above.
+ *
+ * Here is a brief description of each return value:
+ *
+ * CV_SUCCESS:      CVode succeeded and no roots were found.
+ *
+ * CV_ROOT_RETURN:  CVode succeeded, and found one or more roots.
+ *                  If nrtfn > 1, call CVodeGetRootInfo to see
+ *                  which g_i were found to have a root at (*tret).
+ *
+ * CV_TSTOP_RETURN: CVode succeeded and returned at tstop.
+ *
+ * CV_MEM_NULL:     The cvode_mem argument was NULL.
+ *
+ * CV_NO_MALLOC:    cvode_mem was not allocated.
+ *
+ * CV_ILL_INPUT:    One of the inputs to CVode is illegal. This
+ *                  includes the situation when a component of the
+ *                  error weight vectors becomes < 0 during
+ *                  internal time-stepping.  It also includes the
+ *                  situation where a root of one of the root
+ *                  functions was found both at t0 and very near t0.
+ *                  The ILL_INPUT flag will also be returned if the
+ *                  linear solver routine CV--- (called by the user
+ *                  after calling CVodeCreate) failed to set one of
+ *                  the linear solver-related fields in cvode_mem or
+ *                  if the linear solver's init routine failed. In
+ *                  any case, the user should see the printed
+ *                  error message for more details.
+ *
+ * CV_TOO_MUCH_WORK: The solver took mxstep internal steps but
+ *                  could not reach tout. The default value for
+ *                  mxstep is MXSTEP_DEFAULT = 500.
+ *
+ * CV_TOO_MUCH_ACC: The solver could not satisfy the accuracy
+ *                  demanded by the user for some internal step.
+ *
+ * CV_ERR_FAILURE:  Error test failures occurred too many times
+ *                  (= MXNEF = 7) during one internal time step or
+ *                  occurred with |h| = hmin.
+ *
+ * CV_CONV_FAILURE: Convergence test failures occurred too many
+ *                  times (= MXNCF = 10) during one internal time
+ *                  step or occurred with |h| = hmin.
+ *
+ * CV_LSETUP_FAIL:  The linear solver's setup routine failed in an
+ *                  unrecoverable manner.
+ *
+ * CV_LSOLVE_FAIL:  The linear solver's solve routine failed in an
+ *                  unrecoverable manner.
+ * -----------------------------------------------------------------
+ */
+
+int CVode(void *cvode_mem, realtype tout, N_Vector yout,
+          realtype *tret, int itask);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeGetDky
+ * -----------------------------------------------------------------
+ * CVodeGetDky computes the kth derivative of the y function at
+ * time t, where tn-hu <= t <= tn, tn denotes the current
+ * internal time reached, and hu is the last internal step size
+ * successfully used by the solver. The user may request
+ * k=0, 1, ..., qu, where qu is the order last used. The
+ * derivative vector is returned in dky. This vector must be
+ * allocated by the caller. It is only legal to call this
+ * function after a successful return from CVode.
+ *
+ * cvode_mem is the pointer to CVODE memory returned by
+ *           CVodeCreate.
+ *
+ * t   is the time at which the kth derivative of y is evaluated.
+ *     The legal range for t is [tn-hu,tn] as described above.
+ *
+ * k   is the order of the derivative of y to be computed. The
+ *     legal range for k is [0,qu] as described above.
+ *
+ * dky is the output derivative vector [((d/dy)^k)y](t).
+ *
+ * The return value for CVodeGetDky is one of:
+ *
+ *   CV_SUCCESS:  CVodeGetDky succeeded.
+ *
+ *   CV_BAD_K:    k is not in the range 0, 1, ..., qu.
+ *
+ *   CV_BAD_T:    t is not in the interval [tn-hu,tn].
+ *
+ *   CV_BAD_DKY:  The dky argument was NULL.
+ *
+ *   CV_MEM_NULL: The cvode_mem argument was NULL.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetDky(void *cvode_mem, realtype t, int k, N_Vector dky);
+
+/*
+ * -----------------------------------------------------------------
+ * Integrator optional output extraction functions
+ * -----------------------------------------------------------------
+ * The following functions can be called to get optional outputs
+ * and statistics related to the main integrator.
+ * -----------------------------------------------------------------
+ * CVodeGetWorkSpace returns the CVODE real and integer workspaces
+ * CVodeGetNumSteps returns the cumulative number of internal
+ *                  steps taken by the solver
+ * CVodeGetNumRhsEvals returns the number of calls to the user's
+ *                     f function
+ * CVodeGetNumLinSolvSetups returns the number of calls made to
+ *                          the linear solver's setup routine
+ * CVodeGetNumErrTestFails returns the number of local error test
+ *                         failures that have occured
+ * CVodeGetLastOrder returns the order used during the last
+ *                   internal step
+ * CVodeGetCurrentOrder returns the order to be used on the next
+ *                      internal step
+ * CVodeGetNumStabLimOrderReds returns the number of order
+ *                             reductions due to stability limit
+ *                             detection
+ * CVodeGetActualInitStep returns the actual initial step size
+ *                        used by CVODE
+ * CVodeGetLastStep returns the step size for the last internal
+ *                  step
+ * CVodeGetCurrentStep returns the step size to be attempted on
+ *                     the next internal step
+ * CVodeGetCurrentTime returns the current internal time reached
+ *                     by the solver
+ * CVodeGetTolScaleFactor returns a suggested factor by which the
+ *                        user's tolerances should be scaled when
+ *                        too much accuracy has been requested for
+ *                        some internal step
+ * CVodeGetErrWeights returns the state error weight vector.
+ *                    The user must allocate space for ewt.
+ * CVodeGetEstLocalErrors returns the vector of estimated local
+ *                        errors. The user must allocate space
+ *                        for ele.
+ * CVodeGetNumGEvals returns the number of calls to the user's
+ *                   g function (for rootfinding)
+ * CVodeGetRootInfo returns the indices for which g_i was found to 
+ *                  have a root. The user must allocate space for 
+ *                  rootsfound. For i = 0 ... nrtfn-1, 
+ *                  rootsfound[i] = 1 if g_i has a root, and = 0 if not.
+ *
+ * CVodeGet* return values:
+ *   CV_SUCCESS   if succesful
+ *   CV_MEM_NULL  if the cvode memory was NULL
+ *   CV_NO_SLDET  if stability limit was not turned on
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetWorkSpace(void *cvode_mem, long int *lenrw, long int *leniw);
+int CVodeGetNumSteps(void *cvode_mem, long int *nsteps);
+int CVodeGetNumRhsEvals(void *cvode_mem, long int *nfevals);
+int CVodeGetNumLinSolvSetups(void *cvode_mem, long int *nlinsetups);
+int CVodeGetNumErrTestFails(void *cvode_mem, long int *netfails);
+int CVodeGetLastOrder(void *cvode_mem, int *qlast);
+int CVodeGetCurrentOrder(void *cvode_mem, int *qcur);
+int CVodeGetNumStabLimOrderReds(void *cvode_mem, long int *nslred);
+int CVodeGetActualInitStep(void *cvode_mem, realtype *hinused);
+int CVodeGetLastStep(void *cvode_mem, realtype *hlast);
+int CVodeGetCurrentStep(void *cvode_mem, realtype *hcur);
+int CVodeGetCurrentTime(void *cvode_mem, realtype *tcur);
+int CVodeGetTolScaleFactor(void *cvode_mem, realtype *tolsfac);
+int CVodeGetErrWeights(void *cvode_mem, N_Vector eweight);
+int CVodeGetEstLocalErrors(void *cvode_mem, N_Vector ele);
+int CVodeGetNumGEvals(void *cvode_mem, long int *ngevals);
+int CVodeGetRootInfo(void *cvode_mem, int *rootsfound);
+
+/*
+ * -----------------------------------------------------------------
+ * As a convenience, the following functions provides the
+ * optional outputs in one group.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetIntegratorStats(void *cvode_mem, long int *nsteps,
+                            long int *nfevals, long int *nlinsetups,
+                            long int *netfails, int *qlast,
+                            int *qcur, realtype *hinused, realtype *hlast,
+                            realtype *hcur, realtype *tcur);
+
+/*
+ * -----------------------------------------------------------------
+ * Nonlinear solver optional output extraction functions
+ * -----------------------------------------------------------------
+ * The following functions can be called to get optional outputs
+ * and statistics related to the nonlinear solver.
+ * -----------------------------------------------------------------
+ * CVodeGetNumNonlinSolvIters returns the number of nonlinear
+ *                            solver iterations performed.
+ * CVodeGetNumNonlinSolvConvFails returns the number of nonlinear
+ *                                convergence failures.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetNumNonlinSolvIters(void *cvode_mem, long int *nniters);
+int CVodeGetNumNonlinSolvConvFails(void *cvode_mem, long int *nncfails);
+
+/*
+ * -----------------------------------------------------------------
+ * As a convenience, the following function provides the
+ * optional outputs in a group.
+ * -----------------------------------------------------------------
+ */
+
+int CVodeGetNonlinSolvStats(void *cvode_mem, long int *nniters,
+                            long int *nncfails);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : CVodeFree
+ * -----------------------------------------------------------------
+ * CVodeFree frees the problem memory cvode_mem allocated by
+ * CVodeCreate and CVodeMalloc.  Its only argument is the pointer
+ * cvode_mem returned by CVodeCreate.
+ * -----------------------------------------------------------------
+ */
+
+void CVodeFree(void *cvode_mem);
+
+/*
+ * ----------------------------------------
+ * CVODE return flags
+ * ----------------------------------------
+ */
+
+#define CV_SUCCESS        0
+#define CV_TSTOP_RETURN   1
+#define CV_ROOT_RETURN    2
+
+#define CV_MEM_NULL      -1
+#define CV_ILL_INPUT     -2
+#define CV_NO_MALLOC     -3
+#define CV_TOO_MUCH_WORK -4
+#define CV_TOO_MUCH_ACC  -5
+#define CV_ERR_FAILURE   -6
+#define CV_CONV_FAILURE  -7
+#define CV_LINIT_FAIL    -8
+#define CV_LSETUP_FAIL   -9
+#define CV_LSOLVE_FAIL   -10
+
+#define CV_MEM_FAIL      -11
+
+#define CV_RTFUNC_NULL   -12
+
+#define CV_NO_SLDET      -13
+#define CV_BAD_K         -14
+#define CV_BAD_T         -15
+#define CV_BAD_DKY       -16
+
+#define CV_PDATA_NULL    -17
+
+/*
+ * =================================================================
+ *     I N T E R F A C E   T O    L I N E A R   S O L V E R S
+ * =================================================================
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * Communication between CVODE and a CVODE Linear Solver
+ * -----------------------------------------------------------------
+ * convfail (input to cv_lsetup)
+ *
+ * CV_NO_FAILURES : Either this is the first cv_setup call for this
+ *                  step, or the local error test failed on the
+ *                  previous attempt at this step (but the Newton
+ *                  iteration converged).
+ *
+ * CV_FAIL_BAD_J  : This value is passed to cv_lsetup if
+ *
+ *                  (a) The previous Newton corrector iteration
+ *                      did not converge and the linear solver's
+ *                      setup routine indicated that its Jacobian-
+ *                      related data is not current
+ *                                   or
+ *                  (b) During the previous Newton corrector
+ *                      iteration, the linear solver's solve routine
+ *                      failed in a recoverable manner and the
+ *                      linear solver's setup routine indicated that
+ *                      its Jacobian-related data is not current.
+ *
+ * CV_FAIL_OTHER  : During the current internal step try, the
+ *                  previous Newton iteration failed to converge
+ *                  even though the linear solver was using current
+ *                  Jacobian-related data.
+ * -----------------------------------------------------------------
+ */
+
+/* Constants for convfail (input to cv_lsetup) */
+
+#define CV_NO_FAILURES 0
+#define CV_FAIL_BAD_J  1
+#define CV_FAIL_OTHER  2
+
+/*
+ * -----------------------------------------------------------------
+ * int (*cv_linit)(CVodeMem cv_mem);
+ * -----------------------------------------------------------------
+ * The purpose of cv_linit is to complete initializations for a
+ * specific linear solver, such as counters and statistics.
+ * An LInitFn should return 0 if it has successfully initialized the
+ * CVODE linear solver and a negative value otherwise.
+ * If an error does occur, an appropriate message should be sent to
+ * (cv_mem->errfp)
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * int (*cv_lsetup)(CVodeMem cv_mem, int convfail, N_Vector ypred,
+ *                 N_Vector fpred, booleantype *jcurPtr,
+ *                 N_Vector vtemp1, N_Vector vtemp2,
+ *                 N_Vector vtemp3);
+ * -----------------------------------------------------------------
+ * The job of cv_lsetup is to prepare the linear solver for
+ * subsequent calls to cv_lsolve. It may recompute Jacobian-
+ * related data is it deems necessary. Its parameters are as
+ * follows:
+ *
+ * cv_mem - problem memory pointer of type CVodeMem. See the big
+ *          typedef earlier in this file.
+ *
+ * convfail - a flag to indicate any problem that occurred during
+ *            the solution of the nonlinear equation on the
+ *            current time step for which the linear solver is
+ *            being used. This flag can be used to help decide
+ *            whether the Jacobian data kept by a CVODE linear
+ *            solver needs to be updated or not.
+ *            Its possible values have been documented above.
+ *
+ * ypred - the predicted y vector for the current CVODE internal
+ *         step.
+ *
+ * fpred - f(tn, ypred).
+ *
+ * jcurPtr - a pointer to a boolean to be filled in by cv_lsetup.
+ *           The function should set *jcurPtr=TRUE if its Jacobian
+ *           data is current after the call and should set
+ *           *jcurPtr=FALSE if its Jacobian data is not current.
+ *           Note: If cv_lsetup calls for re-evaluation of
+ *           Jacobian data (based on convfail and CVODE state
+ *           data), it should return *jcurPtr=TRUE always;
+ *           otherwise an infinite loop can result.
+ *
+ * vtemp1 - temporary N_Vector provided for use by cv_lsetup.
+ *
+ * vtemp3 - temporary N_Vector provided for use by cv_lsetup.
+ *
+ * vtemp3 - temporary N_Vector provided for use by cv_lsetup.
+ *
+ * The cv_lsetup routine should return 0 if successful, a positive
+ * value for a recoverable error, and a negative value for an
+ * unrecoverable error.
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * int (*cv_lsolve)(CVodeMem cv_mem, N_Vector b, N_Vector weight,
+ *                  N_Vector ycur, N_Vector fcur);
+ * -----------------------------------------------------------------
+ * cv_lsolve must solve the linear equation P x = b, where
+ * P is some approximation to (I - gamma J), J = (df/dy)(tn,ycur)
+ * and the RHS vector b is input. The N-vector ycur contains
+ * the solver's current approximation to y(tn) and the vector
+ * fcur contains the N_Vector f(tn,ycur). The solution is to be
+ * returned in the vector b. cv_lsolve returns a positive value
+ * for a recoverable error and a negative value for an
+ * unrecoverable error. Success is indicated by a 0 return value.
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * void (*cv_lfree)(CVodeMem cv_mem);
+ * -----------------------------------------------------------------
+ * cv_lfree should free up any memory allocated by the linear
+ * solver. This routine is called once a problem has been
+ * completed and the linear solver is no longer needed.
+ * -----------------------------------------------------------------
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/sbmlsolver/dense.h b/Win32/bin/tcc/include/sbmlsolver/dense.h
new file mode 100644
index 0000000..5dac4e1
--- /dev/null
+++ b/Win32/bin/tcc/include/sbmlsolver/dense.h
@@ -0,0 +1,293 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.3 $
+ * $Date: 2006/04/11 13:10:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for a generic DENSE linear solver
+ * package.  The routines listed in this file all use type
+ * DenseMat, defined below, for matrices.  These routines in turn
+ * call routines in the smalldense.h/smalldense.c module, which
+ * use the type realtype** for matrices.  This separation allows
+ * for possible modifications in which matrices of type DenseMat
+ * may not be stored contiguously, while small matrices can still
+ * be treated with the routines in smalldense.
+ *
+ * Routines that work with the type DenseMat begin with "Dense".
+ * The DenseAllocMat function allocates a dense matrix for use in
+ * the other DenseMat routines listed in this file. Matrix
+ * storage details are given in the documentation for the type
+ * DenseMat. The DenseAllocPiv function allocates memory for
+ * pivot information. The storage allocated by DenseAllocMat and
+ * DenseAllocPiv is deallocated by the routines DenseFreeMat and
+ * DenseFreePiv, respectively. The DenseFactor and DenseBacksolve
+ * routines perform the actual solution of a dense linear system.
+ *
+ * Routines that work with realtype** begin with "den" (except for
+ * the factor and solve routines which are called gefa and gesl,
+ * respectively). The underlying matrix storage is described in
+ * the documentation for denalloc in smalldense.h
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _DENSE_H
+#define _DENSE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+#include "smalldense.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Type : DenseMat
+ * -----------------------------------------------------------------
+ * The type DenseMat is defined to be a pointer to a structure
+ * with a size and a data field. The size field indicates the
+ * number of columns (== number of rows) of a dense matrix, while
+ * the data field is a two dimensional array used for component
+ * storage. The elements of a dense matrix are stored columnwise
+ * (i.e columns are stored one on top of the other in memory). If
+ * A is of type DenseMat, then the (i,j)th element of A (with
+ * 0 <= i,j <= size-1) is given by the expression (A->data)[j][i]
+ * or by the expression (A->data)[0][j*n+i]. The macros below
+ * allow a user to access efficiently individual matrix
+ * elements without writing out explicit data structure
+ * references and without knowing too much about the underlying
+ * element storage. The only storage assumption needed is that
+ * elements are stored columnwise and that a pointer to the jth
+ * column of elements can be obtained via the DENSE_COL macro.
+ * Users should use these macros whenever possible.
+ * -----------------------------------------------------------------
+ */
+
+typedef struct _DenseMat {
+  long int size;
+  realtype **data;
+} *DenseMat;
+
+/* DenseMat accessor macros */
+
+/*
+ * -----------------------------------------------------------------
+ * Macro : DENSE_ELEM
+ * -----------------------------------------------------------------
+ * Usage : DENSE_ELEM(A,i,j) = a_ij;  OR
+ *         a_ij = DENSE_ELEM(A,i,j);
+ * -----------------------------------------------------------------
+ * DENSE_ELEM(A,i,j) references the (i,j)th element of the N by N
+ * DenseMat A, 0 <= i,j <= N-1.
+ * -----------------------------------------------------------------
+ */
+
+#define DENSE_ELEM(A,i,j) ((A->data)[j][i])
+
+/*
+ * -----------------------------------------------------------------
+ * Macro : DENSE_COL
+ * -----------------------------------------------------------------
+ * Usage : col_j = DENSE_COL(A,j);
+ * -----------------------------------------------------------------
+ * DENSE_COL(A,j) references the jth column of the N by N
+ * DenseMat A, 0 <= j <= N-1. The type of the expression
+ * DENSE_COL(A,j) is realtype *. After the assignment in the usage
+ * above, col_j may be treated as an array indexed from 0 to N-1.
+ * The (i,j)th element of A is referenced by col_j[i].
+ * -----------------------------------------------------------------
+ */
+
+#define DENSE_COL(A,j) ((A->data)[j])
+
+/* Functions that use the DenseMat representation for a dense matrix */
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseAllocMat
+ * -----------------------------------------------------------------
+ * Usage : A = DenseAllocMat(N);
+ *         if (A == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * DenseAllocMat allocates memory for an N by N dense matrix and
+ * returns the storage allocated (type DenseMat). DenseAllocMat
+ * returns NULL if the request for matrix storage cannot be
+ * satisfied. See the above documentation for the type DenseMat
+ * for matrix storage details.
+ * -----------------------------------------------------------------
+ */
+
+DenseMat DenseAllocMat(long int N);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseAllocPiv
+ * -----------------------------------------------------------------
+ * Usage : p = DenseAllocPiv(N);
+ *         if (p == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * DenseAllocPiv allocates memory for pivot information to be
+ * filled in by the DenseFactor routine during the factorization
+ * of an N by N dense matrix. The underlying type for pivot
+ * information is an array of N integers and this routine returns
+ * the pointer to the memory it allocates. If the request for
+ * pivot storage cannot be satisfied, DenseAllocPiv returns NULL.
+ * -----------------------------------------------------------------
+ */
+
+long int *DenseAllocPiv(long int N);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseFactor
+ * -----------------------------------------------------------------
+ * Usage : ier = DenseFactor(A, p);
+ *         if (ier != 0) ... A is singular
+ * -----------------------------------------------------------------
+ * DenseFactor performs the LU factorization of the N by N dense
+ * matrix A. This is done using standard Gaussian elimination
+ * with partial pivoting.
+ *
+ * A successful LU factorization leaves the matrix A and the
+ * pivot array p with the following information:
+ *
+ * (1) p[k] contains the row number of the pivot element chosen
+ *     at the beginning of elimination step k, k=0, 1, ..., N-1.
+ *
+ * (2) If the unique LU factorization of A is given by PA = LU,
+ *     where P is a permutation matrix, L is a lower triangular
+ *     matrix with all 1's on the diagonal, and U is an upper
+ *     triangular matrix, then the upper triangular part of A
+ *     (including its diagonal) contains U and the strictly lower
+ *     triangular part of A contains the multipliers, I-L.
+ *
+ * DenseFactor returns 0 if successful. Otherwise it encountered
+ * a zero diagonal element during the factorization. In this case
+ * it returns the column index (numbered from one) at which
+ * it encountered the zero.
+ * -----------------------------------------------------------------
+ */
+
+long int DenseFactor(DenseMat A, long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseBacksolve
+ * -----------------------------------------------------------------
+ * Usage : DenseBacksolve(A, p, b);
+ * -----------------------------------------------------------------
+ * DenseBacksolve solves the N-dimensional system A x = b using
+ * the LU factorization in A and the pivot information in p
+ * computed in DenseFactor. The solution x is returned in b. This
+ * routine cannot fail if the corresponding call to DenseFactor
+ * did not fail.
+ * -----------------------------------------------------------------
+ */
+
+void DenseBacksolve(DenseMat A, long int *p, realtype *b);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseZero
+ * -----------------------------------------------------------------
+ * Usage : DenseZero(A);
+ * -----------------------------------------------------------------
+ * DenseZero sets all the elements of the N by N matrix A to 0.0.
+ * -----------------------------------------------------------------
+ */
+
+void DenseZero(DenseMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseCopy
+ * -----------------------------------------------------------------
+ * Usage : DenseCopy(A, B);
+ * -----------------------------------------------------------------
+ * DenseCopy copies the contents of the N by N matrix A into the
+ * N by N matrix B.
+ * -----------------------------------------------------------------
+ */
+
+void DenseCopy(DenseMat A, DenseMat B);
+
+/*
+ * -----------------------------------------------------------------
+ * Function: DenseScale
+ * -----------------------------------------------------------------
+ * Usage : DenseScale(c, A);
+ * -----------------------------------------------------------------
+ * DenseScale scales the elements of the N by N matrix A by the
+ * constant c and stores the result back in A.
+ * -----------------------------------------------------------------
+ */
+
+void DenseScale(realtype c, DenseMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseAddI
+ * -----------------------------------------------------------------
+ * Usage : DenseAddI(A);
+ * -----------------------------------------------------------------
+ * DenseAddI adds the identity matrix to A and stores the result
+ * back in A.
+ * -----------------------------------------------------------------
+ */
+
+void DenseAddI(DenseMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseFreeMat
+ * -----------------------------------------------------------------
+ * Usage : DenseFreeMat(A);
+ * -----------------------------------------------------------------
+ * DenseFreeMat frees the memory allocated by DenseAllocMat for
+ * the N by N matrix A.
+ * -----------------------------------------------------------------
+ */
+
+void DenseFreeMat(DenseMat A);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DenseFreePiv
+ * -----------------------------------------------------------------
+ * Usage : DenseFreePiv(p);
+ * -----------------------------------------------------------------
+ * DenseFreePiv frees the memory allocated by DenseAllocPiv for
+ * the pivot information array p.
+ * -----------------------------------------------------------------
+ */
+
+void DenseFreePiv(long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : DensePrint
+ * -----------------------------------------------------------------
+ * Usage : DensePrint(A);
+ * -----------------------------------------------------------------
+ * This routine prints the N by N dense matrix A to standard
+ * output as it would normally appear on paper. It is intended
+ * as a debugging tool with small values of N. The elements are
+ * printed using the %g/lg/Lg option. A blank line is printed
+ * before and after the matrix.
+ * -----------------------------------------------------------------
+ */
+
+void DensePrint(DenseMat A);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/sbmlsolver/fnvector_serial.h b/Win32/bin/tcc/include/sbmlsolver/fnvector_serial.h
new file mode 100644
index 0000000..19d62bc
--- /dev/null
+++ b/Win32/bin/tcc/include/sbmlsolver/fnvector_serial.h
@@ -0,0 +1,78 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.3 $
+ * $Date: 2006/04/11 13:10:45 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Radu Serban and Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This file (companion of nvector_serial.h) contains the
+ * definitions needed for the initialization of serial
+ * vector operations in Fortran.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _FNVECTOR_SERIAL_H
+#define _FNVECTOR_SERIAL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+  
+#ifndef _SUNDIALS_CONFIG_H
+#define _SUNDIALS_CONFIG_H
+#include "sundials_config.h"
+#endif
+
+#if defined(F77_FUNC)
+
+#define FNV_INITS F77_FUNC(fnvinits, FNVINITS)
+#define FNV_FREES F77_FUNC(fnvfrees, FNVFREES)
+
+#elif defined(SUNDIALS_UNDERSCORE_NONE) && defined(SUNDIALS_CASE_LOWER)
+
+#define FNV_INITS fnvinits
+#define FNV_FREES fnvfrees
+
+#elif defined(SUNDIALS_UNDERSCORE_NONE) && defined(SUNDIALS_CASE_UPPER)
+
+#define FNV_INITS FNVINITS
+#define FNV_FREES FNVFREES
+
+#elif defined(SUNDIALS_UNDERSCORE_ONE) && defined(SUNDIALS_CASE_LOWER)
+
+#define FNV_INITS fnvinits_
+#define FNV_FREES fnvfrees_
+
+#elif defined(SUNDIALS_UNDERSCORE_ONE) && defined(SUNDIALS_CASE_UPPER)
+
+#define FNV_INITS FNVINITS_
+#define FNV_FREES FNVFREES_
+
+#elif defined(SUNDIALS_UNDERSCORE_TWO) && defined(SUNDIALS_CASE_LOWER)
+
+#define FNV_INITS fnvinits__
+#define FNV_FREES fnvfrees__
+
+#elif defined(SUNDIALS_UNDERSCORE_TWO) && defined(SUNDIALS_CASE_UPPER)
+
+#define FNV_INITS FNVINITS__
+#define FNV_FREES FNVFREES__
+
+#endif
+
+/* Prototypes of exported funcions */
+
+void FNV_INITS(long int *neq, int *ier);
+void FNV_FREES(void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/sbmlsolver/iterative.h b/Win32/bin/tcc/include/sbmlsolver/iterative.h
new file mode 100644
index 0000000..7dfacc5
--- /dev/null
+++ b/Win32/bin/tcc/include/sbmlsolver/iterative.h
@@ -0,0 +1,242 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.3 $
+ * $Date: 2006/04/11 13:10:45 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen and Alan C. Hindmarsh @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This header file contains declarations intended for use by
+ * generic iterative solvers of Ax = b. The enumeration gives
+ * symbolic names for the type  of preconditioning to be used.
+ * The function type declarations give the prototypes for the
+ * functions to be called within an iterative linear solver, that
+ * are responsible for
+ *    multiplying A by a given vector v (ATimesFn), and
+ *    solving the preconditioner equation Pz = r (PSolveFn).
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _ITERATIVE_H
+#define _ITERATIVE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+#include "nvector.h"
+
+/*
+ * -----------------------------------------------------------------
+ * enum : types of preconditioning                                
+ * -----------------------------------------------------------------
+ * PREC_NONE  : The iterative linear solver should not use             
+ *              preconditioning.                                       
+ *                                                                
+ * PREC_LEFT  : The iterative linear solver uses preconditioning on    
+ *              the left only.                                         
+ *                                                                
+ * PREC_RIGHT : The iterative linear solver uses preconditioning on    
+ *              the right only.                                        
+ *                                                                
+ * PREC_BOTH  : The iterative linear solver uses preconditioning on    
+ *              both the left and the right.                           
+ * -----------------------------------------------------------------
+ */
+
+enum { PREC_NONE, PREC_LEFT, PREC_RIGHT, PREC_BOTH };
+
+/*
+ * -----------------------------------------------------------------
+ * enum : types of Gram-Schmidt routines                          
+ * -----------------------------------------------------------------
+ * MODIFIED_GS  : The iterative solver uses the modified          
+ *                Gram-Schmidt routine ModifiedGS listed in this  
+ *                file.                                           
+ *                                                                
+ * CLASSICAL_GS : The iterative solver uses the classical         
+ *                Gram-Schmidt routine ClassicalGS listed in this 
+ *                file.                                           
+ * -----------------------------------------------------------------
+ */
+
+enum { MODIFIED_GS = 1, CLASSICAL_GS = 2 };
+
+/*
+ * -----------------------------------------------------------------
+ * Type: ATimesFn                                                 
+ * -----------------------------------------------------------------
+ * An ATimesFn multiplies Av and stores the result in z. The      
+ * caller is responsible for allocating memory for the z vector.  
+ * The parameter A_data is a pointer to any information about A   
+ * which the function needs in order to do its job. The vector v  
+ * is unchanged. An ATimesFn returns 0 if successful and a        
+ * non-zero value if unsuccessful.                                
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*ATimesFn)(void *A_data, N_Vector v, N_Vector z);
+
+/*
+ * -----------------------------------------------------------------
+ * Type: PSolveFn                                                 
+ * -----------------------------------------------------------------
+ * A PSolveFn solves the preconditioner equation Pz = r for the   
+ * vector z. The caller is responsible for allocating memory for  
+ * the z vector. The parameter P_data is a pointer to any         
+ * information about P which the function needs in order to do    
+ * its job. The parameter lr is input, and indicates whether P    
+ * is to be taken as the left preconditioner or the right         
+ * preconditioner: lr = 1 for left and lr = 2 for right.          
+ * If preconditioning is on one side only, lr can be ignored.     
+ * The vector r is unchanged.                                     
+ * A PSolveFn returns 0 if successful and a non-zero value if     
+ * unsuccessful.  On a failure, a negative return value indicates 
+ * an unrecoverable condition, while a positive value indicates   
+ * a recoverable one, in which the calling routine may reattempt  
+ * the solution after updating preconditioner data.               
+ * -----------------------------------------------------------------
+ */
+
+typedef int (*PSolveFn)(void *P_data, N_Vector r, N_Vector z, int lr);
+
+/*
+ * -----------------------------------------------------------------
+ * Function: ModifiedGS                                           
+ * -----------------------------------------------------------------
+ * ModifiedGS performs a modified Gram-Schmidt orthogonalization  
+ * of the N_Vector v[k] against the p unit N_Vectors at           
+ * v[k-1], v[k-2], ..., v[k-p].                                   
+ *                                                                
+ * v is an array of (k+1) N_Vectors v[i], i=0, 1, ..., k.         
+ * v[k-1], v[k-2], ..., v[k-p] are assumed to have L2-norm        
+ * equal to 1.                                                    
+ *                                                                
+ * h is the output k by k Hessenberg matrix of inner products.    
+ * This matrix must be allocated row-wise so that the (i,j)th     
+ * entry is h[i][j]. The inner products (v[i],v[k]),              
+ * i=i0, i0+1, ..., k-1, are stored at h[i][k-1]. Here            
+ * i0=MAX(0,k-p).                                                 
+ *                                                                
+ * k is the index of the vector in the v array that needs to be   
+ * orthogonalized against previous vectors in the v array.        
+ *                                                                
+ * p is the number of previous vectors in the v array against     
+ * which v[k] is to be orthogonalized.                            
+ *                                                                
+ * new_vk_norm is a pointer to memory allocated by the caller to  
+ * hold the Euclidean norm of the orthogonalized vector v[k].     
+ *                                                                
+ * If (k-p) < 0, then ModifiedGS uses p=k. The orthogonalized     
+ * v[k] is NOT normalized and is stored over the old v[k]. Once   
+ * the orthogonalization has been performed, the Euclidean norm   
+ * of v[k] is stored in (*new_vk_norm).                           
+ *                                                                
+ * ModifiedGS returns 0 to indicate success. It cannot fail.      
+ * -----------------------------------------------------------------
+ */                                                                
+
+int ModifiedGS(N_Vector *v, realtype **h, int k, int p, 
+               realtype *new_vk_norm);
+
+/*
+ * -----------------------------------------------------------------
+ * Function: ClassicalGS                                          
+ * -----------------------------------------------------------------
+ * ClassicalGS performs a classical Gram-Schmidt                  
+ * orthogonalization of the N_Vector v[k] against the p unit      
+ * N_Vectors at v[k-1], v[k-2], ..., v[k-p]. The parameters v, h, 
+ * k, p, and new_vk_norm are as described in the documentation    
+ * for ModifiedGS.                                                
+ *                                                                
+ * temp is an N_Vector which can be used as workspace by the      
+ * ClassicalGS routine.                                           
+ *                                                                
+ * s is a length k array of realtype which can be used as         
+ * workspace by the ClassicalGS routine.                          
+ *
+ * ClassicalGS returns 0 to indicate success. It cannot fail.     
+ * -----------------------------------------------------------------
+ */
+
+int ClassicalGS(N_Vector *v, realtype **h, int k, int p, 
+                realtype *new_vk_norm, N_Vector temp, realtype *s);
+
+/*
+ * -----------------------------------------------------------------
+ * Function: QRfact                                               
+ * -----------------------------------------------------------------
+ * QRfact performs a QR factorization of the Hessenberg matrix H. 
+ *                                                                
+ * n is the problem size; the matrix H is (n+1) by n.             
+ *                                                                
+ * h is the (n+1) by n Hessenberg matrix H to be factored. It is  
+ * stored row-wise.                                               
+ *                                                                
+ * q is an array of length 2*n containing the Givens rotations    
+ * computed by this function. A Givens rotation has the form:     
+ * | c  -s |                                                      
+ * | s   c |.                                                     
+ * The components of the Givens rotations are stored in q as      
+ * (c, s, c, s, ..., c, s).                                       
+ *                                                                
+ * job is a control flag. If job==0, then a new QR factorization  
+ * is performed. If job!=0, then it is assumed that the first     
+ * n-1 columns of h have already been factored and only the last  
+ * column needs to be updated.                                    
+ *                                                                
+ * QRfact returns 0 if successful. If a zero is encountered on    
+ * the diagonal of the triangular factor R, then QRfact returns   
+ * the equation number of the zero entry, where the equations are 
+ * numbered from 1, not 0. If QRsol is subsequently called in     
+ * this situation, it will return an error because it could not   
+ * divide by the zero diagonal entry.                             
+ * -----------------------------------------------------------------
+ */                                                                
+
+int QRfact(int n, realtype **h, realtype *q, int job);
+
+/*                                                                
+ * -----------------------------------------------------------------
+ * Function: QRsol                                                
+ * -----------------------------------------------------------------
+ * QRsol solves the linear least squares problem                  
+ *                                                                
+ * min (b - H*x, b - H*x), x in R^n,                              
+ *                                                                
+ * where H is a Hessenberg matrix, and b is in R^(n+1).           
+ * It uses the QR factors of H computed by QRfact.                
+ *                                                                
+ * n is the problem size; the matrix H is (n+1) by n.             
+ *                                                                
+ * h is a matrix (computed by QRfact) containing the upper        
+ * triangular factor R of the original Hessenberg matrix H.       
+ *                                                                
+ * q is an array of length 2*n (computed by QRfact) containing    
+ * the Givens rotations used to factor H.                         
+ *                                                                
+ * b is the (n+1)-vector appearing in the least squares problem   
+ * above.                                                         
+ *                                                                
+ * On return, b contains the solution x of the least squares      
+ * problem, if QRsol was successful.                              
+ *                                                                
+ * QRsol returns a 0 if successful.  Otherwise, a zero was        
+ * encountered on the diagonal of the triangular factor R.        
+ * In this case, QRsol returns the equation number (numbered      
+ * from 1, not 0) of the zero entry.                              
+ * -----------------------------------------------------------------
+ */                                                                
+
+int QRsol(int n, realtype **h, realtype *q, realtype *b);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/sbmlsolver/nvector.h b/Win32/bin/tcc/include/sbmlsolver/nvector.h
new file mode 100644
index 0000000..108b1fb
--- /dev/null
+++ b/Win32/bin/tcc/include/sbmlsolver/nvector.h
@@ -0,0 +1,373 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.3 $
+ * $Date: 2006/04/11 13:10:45 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Radu Serban and Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for a generic NVECTOR package.
+ * It defines the N_Vector structure (_generic_N_Vector) which
+ * contains the following fields:
+ *   - an implementation-dependent 'content' field which contains
+ *     the description and actual data of the vector
+ *   - an 'ops' filed which contains a structure listing operations
+ *     acting on such vectors
+ *
+ * Part I of this file contains type declarations for the
+ * _generic_N_Vector and _generic_N_Vector_Ops structures, as well
+ * as references to pointers to such structures (N_Vector).
+ *
+ * Part II of this file contains the prototypes for the vector
+ * functions which operate on N_Vector.
+ *
+ * At a minimum, a particular implementation of an NVECTOR must
+ * do the following:
+ *  - specify the 'content' field of N_Vector,
+ *  - implement the operations on those N_Vectors,
+ *  - provide a constructor routine for new vectors
+ *
+ * Additionally, an NVECTOR implementation may provide the following:
+ *  - macros to access the underlying N_Vector data
+ *  - a constructor for an array of N_Vectors
+ *  - a constructor for an empty N_Vector (i.e., a new N_Vector with
+ *    a NULL data pointer).
+ *  - a routine to print the content of an N_Vector
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _NVECTOR_H
+#define _NVECTOR_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Generic definition of N_Vector
+ * -----------------------------------------------------------------
+ */
+
+/* Forward reference for pointer to N_Vector_Ops object */
+typedef struct _generic_N_Vector_Ops *N_Vector_Ops;
+
+/* Forward reference for pointer to N_Vector object */
+typedef struct _generic_N_Vector *N_Vector;
+
+/* Define array of N_Vectors */
+typedef N_Vector *N_Vector_S;
+
+/* Structure containing function pointers to vector operations  */  
+struct _generic_N_Vector_Ops {
+  N_Vector    (*nvclone)(N_Vector);
+  N_Vector    (*nvcloneempty)(N_Vector);
+  void        (*nvdestroy)(N_Vector);
+  void        (*nvspace)(N_Vector, long int *, long int *);
+  realtype*   (*nvgetarraypointer)(N_Vector);
+  void        (*nvsetarraypointer)(realtype *, N_Vector);
+  void        (*nvlinearsum)(realtype, N_Vector, realtype, N_Vector, N_Vector); 
+  void        (*nvconst)(realtype, N_Vector);
+  void        (*nvprod)(N_Vector, N_Vector, N_Vector);
+  void        (*nvdiv)(N_Vector, N_Vector, N_Vector);
+  void        (*nvscale)(realtype, N_Vector, N_Vector);
+  void        (*nvabs)(N_Vector, N_Vector);
+  void        (*nvinv)(N_Vector, N_Vector);
+  void        (*nvaddconst)(N_Vector, realtype, N_Vector);
+  realtype    (*nvdotprod)(N_Vector, N_Vector);
+  realtype    (*nvmaxnorm)(N_Vector);
+  realtype    (*nvwrmsnorm)(N_Vector, N_Vector);
+  realtype    (*nvwrmsnormmask)(N_Vector, N_Vector, N_Vector);
+  realtype    (*nvmin)(N_Vector);
+  realtype    (*nvwl2norm)(N_Vector, N_Vector);
+  realtype    (*nvl1norm)(N_Vector);
+  void        (*nvcompare)(realtype, N_Vector, N_Vector);
+  booleantype (*nvinvtest)(N_Vector, N_Vector);
+  booleantype (*nvconstrmask)(N_Vector, N_Vector, N_Vector);
+  realtype    (*nvminquotient)(N_Vector, N_Vector);
+};
+  
+/*
+ * -----------------------------------------------------------------
+ * A vector is a structure with an implementation-dependent
+ * 'content' field, and a pointer to a structure of vector
+ * operations corresponding to that implementation.
+ * -----------------------------------------------------------------
+ */
+
+struct _generic_N_Vector {
+  void *content;
+  struct _generic_N_Vector_Ops *ops;
+};
+  
+/*
+ * -----------------------------------------------------------------
+ * Functions exported by NVECTOR module
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * N_VClone
+ *   Creates a new vector of the same type as an existing vector.
+ *   It does not copy the vector, but rather allocates storage for
+ *   the new vector.
+ *
+ * N_VCloneEmpty
+ *   Creates a new vector of the same type as an existing vector,
+ *   but does not allocate storage.
+ *
+ * N_VDestroy
+ *   Destroys a vector created with N_VClone.
+ *
+ * N_VSpace
+ *   Returns space requirements for one N_Vector (type 'realtype' in
+ *   lrw and type 'long int' in liw).
+ *
+ * N_VGetArrayPointer
+ *   Returns a pointer to the data component of the given N_Vector.
+ *   NOTE: This function assumes that the internal data is stored
+ *   as a contiguous 'realtype' array. This routine is only used in
+ *   the solver-specific interfaces to the dense and banded linear
+ *   solvers, as well as the interfaces to  the banded preconditioners
+ *   distributed with SUNDIALS.
+ *   
+ * N_VSetArrayPointer
+ *   Overwrites the data field in the given N_Vector with a user-supplied
+ *   array of type 'realtype'.
+ *   NOTE: This function assumes that the internal data is stored
+ *   as a contiguous 'realtype' array. This routine is only used in
+ *   the interfaces to the dense linear solver.
+ *
+ * N_VLinearSum
+ *   Performs the operation z = a*x + b*y
+ *
+ * N_VConst
+ *   Performs the operation z[i] = c for i = 0, 1, ..., N-1
+ *
+ * N_VProd
+ *   Performs the operation z[i] = x[i]*y[i] for i = 0, 1, ..., N-1
+ *
+ * N_VDiv
+ *   Performs the operation z[i] = x[i]/y[i] for i = 0, 1, ..., N-1
+ *
+ * N_VScale
+ *   Performs the operation z = c*x
+ *
+ * N_VAbs
+ *   Performs the operation z[i] = |x[i]| for i = 0, 1, ..., N-1
+ *
+ * N_VInv
+ *   Performs the operation z[i] = 1/x[i] for i = 0, 1, ..., N-1
+ *   This routine does not check for division by 0. It should be
+ *   called only with an N_Vector x which is guaranteed to have
+ *   all non-zero components.
+ *
+ * N_VAddConst
+ *   Performs the operation z[i] = x[i] + b   for i = 0, 1, ..., N-1
+ *
+ * N_VDotProd
+ *   Returns the dot product of two vectors:
+ *         sum (i = 0 to N-1) {x[i]*y[i]}
+ *
+ * N_VMaxNorm
+ *   Returns the maximum norm of x:
+ *         max (i = 0 to N-1) ABS(x[i])
+ *
+ * N_VWrmsNorm
+ *   Returns the weighted root mean square norm of x with weight 
+ *   vector w:
+ *         sqrt [(sum (i = 0 to N-1) {(x[i]*w[i])^2})/N]
+ *
+ * N_VWrmsNormMask
+ *   Returns the weighted root mean square norm of x with weight
+ *   vector w, masked by the elements of id:
+ *         sqrt [(sum (i = 0 to N-1) {(x[i]*w[i]*msk[i])^2})/N]
+ *   where msk[i] = 1.0 if id[i] > 0 and
+ *         msk[i] = 0.0 if id[i] < 0
+ *
+ * N_VMin
+ *   Returns the smallest element of x:
+ *         min (i = 0 to N-1) x[i]
+ *
+ * N_VWL2Norm
+ *   Returns the weighted Euclidean L2 norm of x with weight 
+ *   vector w:
+ *         sqrt [(sum (i = 0 to N-1) {(x[i]*w[i])^2})]
+ *
+ * N_VL1Norm
+ *   Returns the L1 norm of x:
+ *         sum (i = 0 to N-1) {ABS(x[i])}
+ *
+ * N_VCompare
+ *   Performs the operation
+ *          z[i] = 1.0 if ABS(x[i]) >= c   i = 0, 1, ..., N-1
+ *                 0.0 otherwise
+ *
+ * N_VInvTest
+ *   Performs the operation z[i] = 1/x[i] with a test for 
+ *   x[i] == 0.0 before inverting x[i].
+ *   This routine returns TRUE if all components of x are non-zero 
+ *   (successful inversion) and returns FALSE otherwise.
+ *
+ * N_VConstrMask
+ *   Performs the operation : 
+ *       m[i] = 1.0 if constraint test fails for x[i]
+ *       m[i] = 0.0 if constraint test passes for x[i]
+ *   where the constraint tests are as follows:
+ *      If c[i] = +2.0, then x[i] must be >  0.0.
+ *      If c[i] = +1.0, then x[i] must be >= 0.0.
+ *      If c[i] = -1.0, then x[i] must be <= 0.0.
+ *      If c[i] = -2.0, then x[i] must be <  0.0.
+ *   This routine returns a boolean FALSE if any element failed
+ *   the constraint test, TRUE if all passed. It also sets a
+ *   mask vector m, with elements equal to 1.0 where the
+ *   corresponding constraint test failed, and equal to 0.0
+ *   where the constraint test passed.
+ *   This routine is specialized in that it is used only for
+ *   constraint checking.
+ *
+ * N_VMinQuotient
+ *   Performs the operation : 
+ *       minq  = min ( num[i]/denom[i]) over all i such that   
+ *       denom[i] != 0.
+ *   This routine returns the minimum of the quotients obtained
+ *   by term-wise dividing num[i] by denom[i]. A zero element
+ *   in denom will be skipped. If no such quotients are found,
+ *   then the large value BIG_REAL is returned.
+ *
+ * -----------------------------------------------------------------
+ *
+ * The following table lists the vector functions used by
+ * different modules in SUNDIALS. The symbols in the table
+ * have the following meaning:
+ * S    -  called by the solver;
+ * D    -  called by the dense linear solver module
+ * B    -  called by the band linear solver module
+ * Di   -  called by the diagonal linear solver module
+ * I    -  called by the iterative linear solver module
+ * BP   -  called by the band preconditioner module
+ * BBDP -  called by the band-block diagonal preconditioner module
+ * F    -  called by the Fortran-to-C interface
+ *
+ *                  ------------------------------------------------
+ *                                         MODULES
+ * NVECTOR          ------------------------------------------------
+ * FUNCTIONS          CVODE/CVODES          IDA             KINSOL
+ * -----------------------------------------------------------------
+ * N_VClone           S Di I                S I BBDP        S I BBDP
+ * -----------------------------------------------------------------
+ * N_VCloneEmpty
+ * -----------------------------------------------------------------
+ * N_VDestroy         S Di I                S I BBDP        S I BBDP
+ * -----------------------------------------------------------------
+ * N_VSpace           S                     S               S
+ * -----------------------------------------------------------------
+ * N_VGetArrayPointer D B BP BBDP F         D B BBDP        BBDP F
+ * -----------------------------------------------------------------
+ * N_VSetArrayPointer D F                   D               F
+ * -----------------------------------------------------------------
+ * N_VLinearSum       S D Di I              S D I           S I
+ * -----------------------------------------------------------------
+ * N_VConst           S I                   S I             I
+ * -----------------------------------------------------------------
+ * N_VProd            S Di I                S I             S I
+ * -----------------------------------------------------------------
+ * N_VDiv             S Di I                S I             S I
+ * -----------------------------------------------------------------
+ * N_VScale           S D B Di I BP BBDP    S D B I BBDP    S I BBDP
+ * -----------------------------------------------------------------
+ * N_VAbs             S                     S               S
+ * -----------------------------------------------------------------
+ * N_VInv             S Di                  S               S
+ * -----------------------------------------------------------------
+ * N_VAddConst        S Di                  S
+ * -----------------------------------------------------------------
+ * N_VDotProd         I                     I               I
+ * -----------------------------------------------------------------
+ * N_VMaxNorm         S                     S               S
+ * -----------------------------------------------------------------
+ * N_VWrmsNorm        S D B I BP BBDP       S
+ * -----------------------------------------------------------------
+ * N_VWrmsNormMask                          S
+ * -----------------------------------------------------------------
+ * N_VMin             S                     S               S
+ * -----------------------------------------------------------------
+ * N_VWL2Norm                                               S I
+ * -----------------------------------------------------------------
+ * N_VL1Norm                                                I
+ * -----------------------------------------------------------------
+ * N_VCompare         Di                    S
+ * -----------------------------------------------------------------
+ * N_VInvTest         Di
+ * -----------------------------------------------------------------
+ * N_VConstrMask                            S               S
+ * -----------------------------------------------------------------
+ * N_VMinQuotient                           S               S
+ * -----------------------------------------------------------------
+ */
+
+N_Vector N_VClone(N_Vector w);
+N_Vector N_VCloneEmpty(N_Vector w);
+void N_VDestroy(N_Vector v);
+void N_VSpace(N_Vector v, long int *lrw, long int *liw);
+realtype *N_VGetArrayPointer(N_Vector v);
+void N_VSetArrayPointer(realtype *v_data, N_Vector v);
+void N_VLinearSum(realtype a, N_Vector x, realtype b, N_Vector y, N_Vector z);
+void N_VConst(realtype c, N_Vector z);
+void N_VProd(N_Vector x, N_Vector y, N_Vector z);
+void N_VDiv(N_Vector x, N_Vector y, N_Vector z);
+void N_VScale(realtype c, N_Vector x, N_Vector z);
+void N_VAbs(N_Vector x, N_Vector z);
+void N_VInv(N_Vector x, N_Vector z);
+void N_VAddConst(N_Vector x, realtype b, N_Vector z);
+realtype N_VDotProd(N_Vector x, N_Vector y);
+realtype N_VMaxNorm(N_Vector x);
+realtype N_VWrmsNorm(N_Vector x, N_Vector w);
+realtype N_VWrmsNormMask(N_Vector x, N_Vector w, N_Vector id);
+realtype N_VMin(N_Vector x);
+realtype N_VWL2Norm(N_Vector x, N_Vector w);
+realtype N_VL1Norm(N_Vector x);
+void N_VCompare(realtype c, N_Vector x, N_Vector z);
+booleantype N_VInvTest(N_Vector x, N_Vector z);
+booleantype N_VConstrMask(N_Vector c, N_Vector x, N_Vector m);
+realtype N_VMinQuotient(N_Vector num, N_Vector denom);
+
+/*
+ * -----------------------------------------------------------------
+ * Additional functions exported by NVECTOR module
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * N_VCloneEmptyVectorArray
+ *   Creates (by cloning 'w') an array of 'count' empty N_Vectors 
+ *
+ * N_VCloneVectorArray
+ *   Creates (by cloning 'w') an array of 'count' N_Vectors 
+ *
+ * N_VDestroyVectorArray
+ *   Frees memory for an array of 'count' N_Vectors that was
+ *   created by a call to N_VCloneVectorArray
+ *
+ * These functions are used by the SPGMR iterative linear solver 
+ * module and by the CVODES and IDAS solvers.
+ * -----------------------------------------------------------------
+ */
+
+N_Vector *N_VCloneEmptyVectorArray(int count, N_Vector w);
+N_Vector *N_VCloneVectorArray(int count, N_Vector w);
+void N_VDestroyVectorArray(N_Vector *vs, int count);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/sbmlsolver/nvector_serial.h b/Win32/bin/tcc/include/sbmlsolver/nvector_serial.h
new file mode 100644
index 0000000..fcf4c31
--- /dev/null
+++ b/Win32/bin/tcc/include/sbmlsolver/nvector_serial.h
@@ -0,0 +1,267 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.3 $
+ * $Date: 2006/04/11 13:10:45 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh, Radu Serban,
+ *                and Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the serial implementation of the
+ * NVECTOR module.
+ *
+ * Part I contains declarations specific to the serial
+ * implementation of the supplied NVECTOR module.
+ *
+ * Part II defines accessor macros that allow the user to
+ * efficiently use the type N_Vector without making explicit
+ * references to the underlying data structure.
+ *
+ * Part III contains the prototype for the constructor N_VNew_Serial
+ * as well as implementation-specific prototypes for various useful
+ * vector operations.
+ *
+ * Notes:
+ *
+ *   - The definition of the generic N_Vector structure can be found
+ *     in the header file shared/include/nvector.h.
+ *
+ *   - The definition of the type realtype can be found in the
+ *     header file shared/include/sundialstypes.h, and it may be
+ *     changed (at the configuration stage) according to the user's
+ *     needs. The sundialstypes.h file also contains the definition
+ *     for the type booleantype.
+ *
+ *   - N_Vector arguments to arithmetic vector operations need not
+ *     be distinct. For example, the following call:
+ *
+ *       N_VLinearSum_Serial(a,x,b,y,y);
+ *
+ *     (which stores the result of the operation a*x+b*y in y)
+ *     is legal.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _NVECTOR_SERIAL_H
+#define _NVECTOR_SERIAL_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "nvector.h"
+#include "sundialstypes.h"
+#include "WinCVODE.h"
+/*
+ * -----------------------------------------------------------------
+ * PART I: SERIAL implementation of N_Vector
+ * -----------------------------------------------------------------
+ */
+
+/* serial implementation of the N_Vector 'content' structure
+   contains the length of the vector, a pointer to an array
+   of realtype components, and a flag indicating ownership of
+   the data */
+
+struct _N_VectorContent_Serial {
+  long int length;
+  booleantype own_data;
+  realtype *data;
+};
+
+typedef struct _N_VectorContent_Serial *N_VectorContent_Serial;
+
+/*
+ * -----------------------------------------------------------------
+ * PART II: macros NV_CONTENT_S, NV_DATA_S, NV_OWN_DATA_S,
+ *          NV_LENGTH_S, and NV_Ith_S
+ * -----------------------------------------------------------------
+ * In the descriptions below, the following user declarations
+ * are assumed:
+ *
+ * N_Vector v;
+ * long int i;
+ *
+ * (1) NV_CONTENT_S
+ *
+ *     This routines gives access to the contents of the serial
+ *     vector N_Vector.
+ *
+ *     The assignment v_cont = NV_CONTENT_S(v) sets v_cont to be
+ *     a pointer to the serial N_Vector content structure.
+ *
+ * (2) NV_DATA_S NV_OWN_DATA_S and NV_LENGTH_S
+ *
+ *     These routines give access to the individual parts of
+ *     the content structure of a serial N_Vector.
+ *
+ *     The assignment v_data = NV_DATA_S(v) sets v_data to be
+ *     a pointer to the first component of v. The assignment
+ *     NV_DATA_S(v) = data_V sets the component array of v to
+ *     be data_v by storing the pointer data_v.
+ *
+ *     The assignment v_len = NV_LENGTH_S(v) sets v_len to be
+ *     the length of v. The call NV_LENGTH_S(v) = len_v sets
+ *     the length of v to be len_v.
+ *
+ * (3) NV_Ith_S
+ *
+ *     In the following description, the components of an
+ *     N_Vector are numbered 0..n-1, where n is the length of v.
+ *
+ *     The assignment r = NV_Ith_S(v,i) sets r to be the value of
+ *     the ith component of v. The assignment NV_Ith_S(v,i) = r
+ *     sets the value of the ith component of v to be r.
+ *
+ * Note: When looping over the components of an N_Vector v, it is
+ * more efficient to first obtain the component array via
+ * v_data = NV_DATA_S(v) and then access v_data[i] within the
+ * loop than it is to use NV_Ith_S(v,i) within the loop.
+ * -----------------------------------------------------------------
+ */
+
+#define NV_CONTENT_S(v)  ( (N_VectorContent_Serial)(v->content) )
+
+#define NV_LENGTH_S(v)   ( NV_CONTENT_S(v)->length )
+
+#define NV_OWN_DATA_S(v) ( NV_CONTENT_S(v)->own_data )
+
+#define NV_DATA_S(v)     ( NV_CONTENT_S(v)->data )
+
+#define NV_Ith_S(v,i)    ( NV_DATA_S(v)[i] )
+
+/*
+ * -----------------------------------------------------------------
+ * PART III: functions exported by nvector_serial
+ * 
+ * CONSTRUCTORS:
+ *    N_VNew_Serial
+ *    N_VNewEmpty_Serial
+ *    N_VClone_Serial
+ *    N_VCloneEmpty_Serial
+ *    N_VMake_Serial
+ *    N_VNewVectorArray_Serial
+ *    N_VNewVectorArrayEmpty_Serial
+ * DESTRUCTORS:
+ *    N_VDestroy_Serial
+ *    N_VDestroyVectorArray_Serial
+ * -----------------------------------------------------------------
+ */
+
+/*
+ * -----------------------------------------------------------------
+ * Function : N_VNew_Serial
+ * -----------------------------------------------------------------
+ * This function creates and allocates memory for a serial vector.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API N_Vector N_VNew_Serial(long int vec_length);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : N_VNewEmpty_Serial
+ * -----------------------------------------------------------------
+ * This function creates a new serial N_Vector with an empty (NULL)
+ * data array.
+ * -----------------------------------------------------------------
+ */
+
+N_Vector N_VNewEmpty_Serial(long int vec_length);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : N_VMake_Serial
+ * -----------------------------------------------------------------
+ * This function creates and allocates memory for a serial vector
+ * with a user-supplied data array.
+ * -----------------------------------------------------------------
+ */
+
+N_Vector N_VMake_Serial(long int vec_length, realtype *v_data);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : N_VNewVectorArray_Serial
+ * -----------------------------------------------------------------
+ * This function creates an array of 'count' serial vectors. This
+ * array of N_Vectors can be freed using N_VDestroyVectorArray
+ * (defined by the generic NVECTOR module).
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API N_Vector *N_VNewVectorArray_Serial(int count, long int vec_length);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : N_VNewVectorArrayEmpty_Serial
+ * -----------------------------------------------------------------
+ * This function creates an array of 'count' serial vectors each
+ * with an empty (NULL) data array.
+ * -----------------------------------------------------------------
+ */
+
+N_Vector *N_VNewVectorArrayEmpty_Serial(int count, long int vec_length);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : N_VDestroyVectorArray_Serial
+ * -----------------------------------------------------------------
+ * This function frees an array of N_Vector created with 
+ * N_VNewVectorArray_Serial.
+ * -----------------------------------------------------------------
+ */
+
+WINCVODE_API void N_VDestroyVectorArray_Serial(N_Vector *vs, int count);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : N_VPrint_Serial
+ * -----------------------------------------------------------------
+ * This function prints the content of a serial vector to stdout.
+ * -----------------------------------------------------------------
+ */
+
+void N_VPrint_Serial(N_Vector v);
+
+/*
+ * -----------------------------------------------------------------
+ * serial implementations of various useful vector operations
+ * -----------------------------------------------------------------
+ */
+
+N_Vector N_VCloneEmpty_Serial(N_Vector w);
+N_Vector N_VClone_Serial(N_Vector w);
+WINCVODE_API void N_VDestroy_Serial(N_Vector v);
+void N_VSpace_Serial(N_Vector v, long int *lrw, long int *liw);
+realtype *N_VGetArrayPointer_Serial(N_Vector v);
+void N_VSetArrayPointer_Serial(realtype *v_data, N_Vector v);
+void N_VLinearSum_Serial(realtype a, N_Vector x, realtype b, N_Vector y, N_Vector z);
+void N_VConst_Serial(realtype c, N_Vector z);
+void N_VProd_Serial(N_Vector x, N_Vector y, N_Vector z);
+void N_VDiv_Serial(N_Vector x, N_Vector y, N_Vector z);
+void N_VScale_Serial(realtype c, N_Vector x, N_Vector z);
+void N_VAbs_Serial(N_Vector x, N_Vector z);
+void N_VInv_Serial(N_Vector x, N_Vector z);
+void N_VAddConst_Serial(N_Vector x, realtype b, N_Vector z);
+realtype N_VDotProd_Serial(N_Vector x, N_Vector y);
+realtype N_VMaxNorm_Serial(N_Vector x);
+realtype N_VWrmsNorm_Serial(N_Vector x, N_Vector w);
+realtype N_VWrmsNormMask_Serial(N_Vector x, N_Vector w, N_Vector id);
+realtype N_VMin_Serial(N_Vector x);
+realtype N_VWL2Norm_Serial(N_Vector x, N_Vector w);
+realtype N_VL1Norm_Serial(N_Vector x);
+void N_VCompare_Serial(realtype c, N_Vector x, N_Vector z);
+booleantype N_VInvTest_Serial(N_Vector x, N_Vector z);
+booleantype N_VConstrMask_Serial(N_Vector c, N_Vector x, N_Vector m);
+realtype N_VMinQuotient_Serial(N_Vector num, N_Vector denom);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/sbmlsolver/smalldense.h b/Win32/bin/tcc/include/sbmlsolver/smalldense.h
new file mode 100644
index 0000000..ed9a5ba
--- /dev/null
+++ b/Win32/bin/tcc/include/sbmlsolver/smalldense.h
@@ -0,0 +1,221 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.3 $
+ * $Date: 2006/04/11 13:10:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen and Alan C. Hindmarsh @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for a generic DENSE linear solver
+ * package, intended for small dense matrices.  These routines
+ * use the type realtype** for dense matrix arguments.
+ *
+ * These routines begin with "den" (except for the factor and
+ * solve routines which are called gefa and gesl, respectively).
+ * The underlying matrix storage is described in the
+ * documentation for denalloc.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _SMALLDENSE_H
+#define _SMALLDENSE_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denalloc
+ * -----------------------------------------------------------------
+ * Usage : realtype **a;
+ *         a = denalloc(n);
+ *         if (a == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * denalloc(n) allocates storage for an n by n dense matrix. It
+ * returns a pointer to the newly allocated storage if
+ * successful. If the memory request cannot be satisfied, then
+ * denalloc returns NULL. The underlying type of the dense matrix
+ * returned is realtype **. If we allocate a dense matrix
+ * realtype **a by a = denalloc(n), then a[j][i] references the
+ * (i,j)th element of the matrix a, 0 <= i,j <= n-1, and a[j] is
+ * a pointer to the first element in the jth column of a.
+ * The location a[0] contains a pointer to n^2 contiguous
+ * locations which contain the elements of a.
+ * -----------------------------------------------------------------
+ */
+
+realtype **denalloc(long int n);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denallocpiv
+ * -----------------------------------------------------------------
+ * Usage : long int *pivot;
+ *         pivot = denallocpiv(n);
+ *         if (pivot == NULL) ... memory request failed
+ * -----------------------------------------------------------------
+ * denallocpiv(n) allocates an array of n long int. It returns
+ * a pointer to the first element in the array if successful.
+ * It returns NULL if the memory request could not be satisfied.
+ * -----------------------------------------------------------------
+ */
+
+long int *denallocpiv(long int n);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : gefa
+ * -----------------------------------------------------------------
+ * Usage : long int ier;
+ *         ier = gefa(a,n,p);
+ *         if (ier > 0) ... zero element encountered during
+ *                          the factorization
+ * -----------------------------------------------------------------
+ * gefa(a,n,p) factors the n by n dense matrix a. It overwrites
+ * the elements of a with its LU factors and keeps track of the
+ * pivot rows chosen in the pivot array p.
+ *
+ * A successful LU factorization leaves the matrix a and the
+ * pivot array p with the following information:
+ *
+ * (1) p[k] contains the row number of the pivot element chosen
+ *     at the beginning of elimination step k, k=0, 1, ..., n-1.
+ *
+ * (2) If the unique LU factorization of a is given by Pa = LU,
+ *     where P is a permutation matrix, L is a lower triangular
+ *     matrix with all 1's on the diagonal, and U is an upper
+ *     triangular matrix, then the upper triangular part of a
+ *     (including its diagonal) contains U and the strictly lower
+ *     triangular part of a contains the multipliers, I-L.
+ *
+ * gefa returns 0 if successful. Otherwise it encountered a zero
+ * diagonal element during the factorization. In this case it
+ * returns the column index (numbered from one) at which it
+ * encountered the zero.
+ * -----------------------------------------------------------------
+ */
+
+long int gefa(realtype **a, long int n, long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : gesl
+ * -----------------------------------------------------------------
+ * Usage : realtype *b;
+ *         ier = gefa(a,n,p);
+ *         if (ier == 0) gesl(a,n,p,b);
+ * -----------------------------------------------------------------
+ * gesl(a,n,p,b) solves the n by n linear system ax = b. It
+ * assumes that a has been LU factored and the pivot array p has
+ * been set by a successful call to gefa(a,n,p). The solution x
+ * is written into the b array.
+ * -----------------------------------------------------------------
+ */
+
+void gesl(realtype **a, long int n, long int *p, realtype *b);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denzero
+ * -----------------------------------------------------------------
+ * Usage : denzero(a,n);
+ * -----------------------------------------------------------------
+ * denzero(a,n) sets all the elements of the n by n dense matrix
+ * a to be 0.0.
+ * -----------------------------------------------------------------
+ */
+
+void denzero(realtype **a, long int n);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : dencopy
+ * -----------------------------------------------------------------
+ * Usage : dencopy(a,b,n);
+ * -----------------------------------------------------------------
+ * dencopy(a,b,n) copies the n by n dense matrix a into the
+ * n by n dense matrix b.
+ * -----------------------------------------------------------------
+ */
+
+void dencopy(realtype **a, realtype **b, long int n);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denscale
+ * -----------------------------------------------------------------
+ * Usage : denscale(c,a,n);
+ * -----------------------------------------------------------------
+ * denscale(c,a,n) scales every element in the n by n dense
+ * matrix a by c.
+ * -----------------------------------------------------------------
+ */
+
+void denscale(realtype c, realtype **a, long int n);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denaddI
+ * -----------------------------------------------------------------
+ * Usage : denaddI(a,n);
+ * -----------------------------------------------------------------
+ * denaddI(a,n) increments the n by n dense matrix a by the
+ * identity matrix.
+ * -----------------------------------------------------------------
+ */
+
+void denaddI(realtype **a, long int n);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denfreepiv
+ * -----------------------------------------------------------------
+ * Usage : denfreepiv(p);
+ * -----------------------------------------------------------------
+ * denfreepiv(p) frees the pivot array p allocated by
+ * denallocpiv.
+ * -----------------------------------------------------------------
+ */
+
+void denfreepiv(long int *p);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denfree
+ * -----------------------------------------------------------------
+ * Usage : denfree(a);
+ * -----------------------------------------------------------------
+ * denfree(a) frees the dense matrix a allocated by denalloc.
+ * -----------------------------------------------------------------
+ */
+
+void denfree(realtype **a);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : denprint
+ * -----------------------------------------------------------------
+ * Usage : denprint(a,n);
+ * -----------------------------------------------------------------
+ * denprint(a,n) prints the n by n dense matrix a to standard
+ * output as it would normally appear on paper. It is intended as
+ * a debugging tool with small values of n. The elements are
+ * printed using the %g/lg/Lg option. A blank line is printed
+ * before and after the matrix.
+ * -----------------------------------------------------------------
+ */
+
+void denprint(realtype **a, long int n);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/sbmlsolver/spgmr.h b/Win32/bin/tcc/include/sbmlsolver/spgmr.h
new file mode 100644
index 0000000..4c20112
--- /dev/null
+++ b/Win32/bin/tcc/include/sbmlsolver/spgmr.h
@@ -0,0 +1,295 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.3 $
+ * $Date: 2006/04/11 13:10:45 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Radu Serban @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for the implementation of SPGMR Krylov
+ * iterative linear solver.  The SPGMR algorithm is based on the
+ * Scaled Preconditioned GMRES (Generalized Minimal Residual)
+ * method.
+ *
+ * The SPGMR algorithm solves a linear system A x = b.
+ * Preconditioning is allowed on the left, right, or both.
+ * Scaling is allowed on both sides, and restarts are also allowed.
+ * We denote the preconditioner and scaling matrices as follows:
+ *   P1 = left preconditioner
+ *   P2 = right preconditioner
+ *   S1 = diagonal matrix of scale factors for P1-inverse b
+ *   S2 = diagonal matrix of scale factors for P2 x
+ * The matrices A, P1, and P2 are not required explicitly; only
+ * routines that provide A, P1-inverse, and P2-inverse as
+ * operators are required.
+ *
+ * In this notation, SPGMR applies the underlying GMRES method to
+ * the equivalent transformed system
+ *   Abar xbar = bbar , where
+ *   Abar = S1 (P1-inverse) A (P2-inverse) (S2-inverse) ,
+ *   bbar = S1 (P1-inverse) b , and   xbar = S2 P2 x .
+ *
+ * The scaling matrices must be chosen so that vectors S1
+ * P1-inverse b and S2 P2 x have dimensionless components.
+ * If preconditioning is done on the left only (P2 = I), by a
+ * matrix P, then S2 must be a scaling for x, while S1 is a
+ * scaling for P-inverse b, and so may also be taken as a scaling
+ * for x.  Similarly, if preconditioning is done on the right only
+ * (P1 = I, P2 = P), then S1 must be a scaling for b, while S2 is
+ * a scaling for P x, and may also be taken as a scaling for b.
+ *
+ * The stopping test for the SPGMR iterations is on the L2 norm of
+ * the scaled preconditioned residual:
+ *      || bbar - Abar xbar ||_2  <  delta
+ * with an input test constant delta.
+ *
+ * The usage of this SPGMR solver involves supplying two routines
+ * and making three calls.  The user-supplied routines are
+ *    atimes (A_data, x, y) to compute y = A x, given x,
+ * and
+ *    psolve (P_data, x, y, lr)
+ *                to solve P1 x = y or P2 x = y for x, given y.
+ * The three user calls are:
+ *    mem  = SpgmrMalloc(lmax, vec_tmpl);
+ *           to initialize memory,
+ *    flag = SpgmrSolve(mem,A_data,x,b,...,
+ *                      P_data,s1,s2,atimes,psolve,...);
+ *           to solve the system, and
+ *    SpgmrFree(mem);
+ *           to free the memory created by SpgmrMalloc.
+ * Complete details for specifying atimes and psolve and for the
+ * usage calls are given in the paragraphs below and in iterative.h.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _SPGMR_H
+#define _SPGMR_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+#include "iterative.h"
+#include "nvector.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Types: SpgmrMemRec, SpgmrMem
+ * -----------------------------------------------------------------
+ * SpgmrMem is a pointer to an SpgmrMemRec which contains
+ * the memory needed by SpgmrSolve. The SpgmrMalloc routine
+ * returns a pointer of type SpgmrMem which should then be passed
+ * in subsequent calls to SpgmrSolve. The SpgmrFree routine frees
+ * the memory allocated by SpgmrMalloc.
+ *
+ * l_max is the maximum Krylov dimension that SpgmrSolve will be
+ * permitted to use.
+ *
+ * V is the array of Krylov basis vectors v_1, ..., v_(l_max+1),
+ * stored in V[0], ..., V[l_max], where l_max is the second
+ * parameter to SpgmrMalloc. Each v_i is a vector of type
+ * N_Vector.
+ *
+ * Hes is the (l_max+1) x l_max Hessenberg matrix. It is stored
+ * row-wise so that the (i,j)th element is given by Hes[i][j].
+ *
+ * givens is a length 2*l_max array which represents the
+ * Givens rotation matrices that arise in the algorithm. The
+ * Givens rotation matrices F_0, F_1, ..., F_j, where F_i is
+ *
+ *             1
+ *               1
+ *                 c_i  -s_i      <--- row i
+ *                 s_i   c_i
+ *                           1
+ *                             1
+ *
+ * are represented in the givens vector as
+ * givens[0]=c_0, givens[1]=s_0, givens[2]=c_1, givens[3]=s_1,
+ * ..., givens[2j]=c_j, givens[2j+1]=s_j.
+ *
+ * xcor is a vector (type N_Vector) which holds the scaled,
+ * preconditioned correction to the initial guess.
+ *
+ * yg is a length (l_max+1) array of realtype used to hold "short"
+ * vectors (e.g. y and g).
+ *
+ * vtemp is a vector (type N_Vector) used as temporary vector
+ * storage during calculations.
+ * -----------------------------------------------------------------
+ */
+  
+typedef struct _SpgmrMemRec {
+
+  int l_max;
+
+  N_Vector *V;
+  realtype **Hes;
+  realtype *givens;
+  N_Vector xcor;
+  realtype *yg;
+  N_Vector vtemp;
+
+} SpgmrMemRec, *SpgmrMem;
+
+/*
+ * -----------------------------------------------------------------
+ * Function : SpgmrMalloc
+ * -----------------------------------------------------------------
+ * SpgmrMalloc allocates the memory used by SpgmrSolve. It
+ * returns a pointer of type SpgmrMem which the user of the
+ * SPGMR package should pass to SpgmrSolve. The parameter l_max
+ * is the maximum Krylov dimension that SpgmrSolve will be
+ * permitted to use. The parameter vec_tmpl is a pointer to an
+ * N_Vector used as a template to create new vectors by duplication.
+ * This routine returns NULL if there is a memory request failure.
+ * -----------------------------------------------------------------
+ */
+
+SpgmrMem SpgmrMalloc(int l_max, N_Vector vec_tmpl);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : SpgmrSolve
+ * -----------------------------------------------------------------
+ * SpgmrSolve solves the linear system Ax = b using the SPGMR
+ * method. The return values are given by the symbolic constants
+ * below. The first SpgmrSolve parameter is a pointer to memory
+ * allocated by a prior call to SpgmrMalloc.
+ *
+ * mem is the pointer returned by SpgmrMalloc to the structure
+ * containing the memory needed by SpgmrSolve.
+ *
+ * A_data is a pointer to information about the coefficient
+ * matrix A. This pointer is passed to the user-supplied function
+ * atimes.
+ *
+ * x is the initial guess x_0 upon entry and the solution
+ * N_Vector upon exit with return value SPGMR_SUCCESS or
+ * SPGMR_RES_REDUCED. For all other return values, the output x
+ * is undefined.
+ *
+ * b is the right hand side N_Vector. It is undisturbed by this
+ * function.
+ *
+ * pretype is the type of preconditioning to be used. Its
+ * legal possible values are enumerated in iterativ.h. These
+ * values are PREC_NONE=0, PREC_LEFT=1, PREC_RIGHT=2, and
+ * PREC_BOTH=3.
+ *
+ * gstype is the type of Gram-Schmidt orthogonalization to be
+ * used. Its legal values are enumerated in iterativ.h. These
+ * values are MODIFIED_GS=0 and CLASSICAL_GS=1.
+ *
+ * delta is the tolerance on the L2 norm of the scaled,
+ * preconditioned residual. On return with value SPGMR_SUCCESS,
+ * this residual satisfies || s1 P1_inv (b - Ax) ||_2 <= delta.
+ *
+ * max_restarts is the maximum number of times the algorithm is
+ * allowed to restart.
+ *
+ * P_data is a pointer to preconditioner information. This
+ * pointer is passed to the user-supplied function psolve.
+ *
+ * s1 is an N_Vector of positive scale factors for P1-inv b, where
+ * P1 is the left preconditioner. (Not tested for positivity.)
+ * Pass NULL if no scaling on P1-inv b is required.
+ *
+ * s2 is an N_Vector of positive scale factors for P2 x, where
+ * P2 is the right preconditioner. (Not tested for positivity.)
+ * Pass NULL if no scaling on P2 x is required.
+ *
+ * atimes is the user-supplied function which performs the
+ * operation of multiplying A by a given vector. Its description
+ * is given in iterative.h.
+ *
+ * psolve is the user-supplied function which solves a
+ * preconditioner system Pz = r, where P is P1 or P2. Its full
+ * description is  given in iterativ.h. The psolve function will
+ * not be called if pretype is NONE; in that case, the user
+ * should pass NULL for psolve.
+ *
+ * res_norm is a pointer to the L2 norm of the scaled,
+ * preconditioned residual. On return with value SPGMR_SUCCESS or
+ * SPGMR_RES_REDUCED, (*res_norm) contains the value
+ * || s1 P1_inv (b - Ax) ||_2 for the computed solution x.
+ * For all other return values, (*res_norm) is undefined. The
+ * caller is responsible for allocating the memory (*res_norm)
+ * to be filled in by SpgmrSolve.
+ *
+ * nli is a pointer to the number of linear iterations done in
+ * the execution of SpgmrSolve. The caller is responsible for
+ * allocating the memory (*nli) to be filled in by SpgmrSolve.
+ *
+ * nps is a pointer to the number of calls made to psolve during
+ * the execution of SpgmrSolve. The caller is responsible for
+ * allocating the memory (*nps) to be filled in by SpgmrSolve.
+ *
+ * Note: Repeated calls can be made to SpgmrSolve with varying
+ * input arguments. If, however, the problem size N or the
+ * maximum Krylov dimension l_max changes, then a call to
+ * SpgmrMalloc must be made to obtain new memory for SpgmrSolve
+ * to use.
+ * -----------------------------------------------------------------
+ */                                                                
+     
+int SpgmrSolve(SpgmrMem mem, void *A_data, N_Vector x, N_Vector b,
+               int pretype, int gstype, realtype delta, 
+               int max_restarts, void *P_data, N_Vector s1, 
+               N_Vector s2, ATimesFn atimes, PSolveFn psolve, 
+               realtype *res_norm, int *nli, int *nps);
+
+
+/* Return values for SpgmrSolve */
+
+#define SPGMR_SUCCESS            0  /* Converged                     */
+#define SPGMR_RES_REDUCED        1  /* Did not converge, but reduced
+                                       norm of residual              */
+#define SPGMR_CONV_FAIL          2  /* Failed to converge            */
+#define SPGMR_QRFACT_FAIL        3  /* QRfact found singular matrix  */
+#define SPGMR_PSOLVE_FAIL_REC    4  /* psolve failed recoverably     */
+#define SPGMR_MEM_NULL          -1  /* mem argument is NULL          */
+#define SPGMR_ATIMES_FAIL       -2  /* atimes returned failure flag  */
+#define SPGMR_PSOLVE_FAIL_UNREC -3  /* psolve failed unrecoverably   */
+#define SPGMR_GS_FAIL           -4  /* Gram-Schmidt routine         
+                                       returned failure flag         */
+#define SPGMR_QRSOL_FAIL        -5  /* QRsol found singular R        */
+
+/*
+ * -----------------------------------------------------------------
+ * Function : SpgmrFree
+ * -----------------------------------------------------------------
+ * SpgmrMalloc frees the memory allocated by SpgmrMalloc. It is
+ * illegal to use the pointer mem after a call to SpgmrFree.
+ * -----------------------------------------------------------------
+ */                                                                
+
+void SpgmrFree(SpgmrMem mem);
+
+/*
+ * -----------------------------------------------------------------
+ * Macro: SPGMR_VTEMP
+ * -----------------------------------------------------------------
+ * This macro provides access to the work vector vtemp in the
+ * memory block of the SPGMR module.  The argument mem is the
+ * memory pointer returned by SpgmrMalloc, of type SpgmrMem,
+ * and the macro value is of type N_Vector.
+ * On a return from SpgmrSolve with *nli = 0, this vector
+ * contains the scaled preconditioned initial residual,
+ * s1 * P1_inverse * (b - A x_0).
+ * -----------------------------------------------------------------
+ */
+
+#define SPGMR_VTEMP(mem) (mem->vtemp)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/sbmlsolver/sundials_config.h b/Win32/bin/tcc/include/sbmlsolver/sundials_config.h
new file mode 100644
index 0000000..1ea3777
--- /dev/null
+++ b/Win32/bin/tcc/include/sbmlsolver/sundials_config.h
@@ -0,0 +1,33 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.3 $
+ * $Date: 2006/04/11 13:10:45 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2005, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ *------------------------------------------------------------------
+ * SUNDIALS configuration header file
+ *------------------------------------------------------------------
+ */
+
+/* Define SUNDIALS version number */
+#define SUNDIALS_PACKAGE_VERSION "2.1.1"
+
+/* FCMIX: Define Fortran name-mangling macro */
+
+
+/* FCMIX: Define case of function names */
+
+
+/* FCMIX: Define number of underscores to append to function names */
+
+
+/* Define precision of SUNDIALS data type 'realtype' */
+#define SUNDIALS_DOUBLE_PRECISION 1
+
+/* Use generic math functions */
+#define SUNDIALS_USE_GENERIC_MATH 1
diff --git a/Win32/bin/tcc/include/sbmlsolver/sundialsmath.h b/Win32/bin/tcc/include/sbmlsolver/sundialsmath.h
new file mode 100644
index 0000000..1f8d44c
--- /dev/null
+++ b/Win32/bin/tcc/include/sbmlsolver/sundialsmath.h
@@ -0,0 +1,129 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.3 $
+ * $Date: 2006/04/11 13:10:45 $
+ * -----------------------------------------------------------------
+ * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
+ *                Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ * -----------------------------------------------------------------
+ * This is the header file for a simple C-language math library. The
+ * routines listed here work with the type realtype as defined in
+ * the header file shared/include/sundialstypes.h.
+ * -----------------------------------------------------------------
+ */
+
+#ifndef _SUNDIALSMATH_H
+#define _SUNDIALSMATH_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#include "sundialstypes.h"
+
+/*
+ * -----------------------------------------------------------------
+ * Macros : MIN and MAX
+ * -----------------------------------------------------------------
+ * MIN(A,B) returns the minimum of A and B
+ *
+ * MAX(A,B) returns the maximum of A and B
+ * -----------------------------------------------------------------
+ */
+
+#ifndef MIN
+#define MIN(A, B) ((A) < (B) ? (A) : (B))
+#endif
+
+#ifndef MAX
+#define MAX(A, B) ((A) > (B) ? (A) : (B))
+#endif
+
+#ifndef ABS
+#define ABS RAbs
+#endif
+
+#ifndef SQR
+#define SQR RPower2
+#endif
+
+/*
+ * -----------------------------------------------------------------
+ * Function : RPowerI
+ * -----------------------------------------------------------------
+ * Usage : int exponent;
+ *         realtype base, ans;
+ *         ans = RPowerI(base,exponent);
+ * -----------------------------------------------------------------
+ * RPowerI returns the value of base^exponent, where base is of type
+ * realtype and exponent is of type int.
+ * -----------------------------------------------------------------
+ */
+
+realtype RPowerI(realtype base, int exponent);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : RPowerR
+ * -----------------------------------------------------------------
+ * Usage : realtype base, exponent, ans;
+ *         ans = RPowerR(base,exponent);
+ * -----------------------------------------------------------------
+ * RPowerR returns the value of base^exponent, where both base and
+ * exponent are of type realtype. If base < ZERO, then RPowerR
+ * returns ZERO.
+ * -----------------------------------------------------------------
+ */
+
+realtype RPowerR(realtype base, realtype exponent);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : RSqrt
+ * -----------------------------------------------------------------
+ * Usage : realtype sqrt_x;
+ *         sqrt_x = RSqrt(x);
+ * -----------------------------------------------------------------
+ * RSqrt(x) returns the square root of x. If x < ZERO, then RSqrt
+ * returns ZERO.
+ * -----------------------------------------------------------------
+ */
+
+realtype RSqrt(realtype x);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : RAbs (a.k.a. ABS)
+ * -----------------------------------------------------------------
+ * Usage : realtype abs_x;
+ *         abs_x = RAbs(x);
+ * -----------------------------------------------------------------
+ * RAbs(x) returns the absolute value of x.
+ * -----------------------------------------------------------------
+ */
+
+realtype RAbs(realtype x);
+
+/*
+ * -----------------------------------------------------------------
+ * Function : RPower2 (a.k.a. SQR)
+ * -----------------------------------------------------------------
+ * Usage : realtype sqr_x;
+ *         sqr_x = RPower2(x);
+ * -----------------------------------------------------------------
+ * RPower2(x) returns x^2.
+ * -----------------------------------------------------------------
+ */
+
+realtype RPower2(realtype x);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/sbmlsolver/sundialstypes.h b/Win32/bin/tcc/include/sbmlsolver/sundialstypes.h
new file mode 100644
index 0000000..077f786
--- /dev/null
+++ b/Win32/bin/tcc/include/sbmlsolver/sundialstypes.h
@@ -0,0 +1,114 @@
+/*
+ * -----------------------------------------------------------------
+ * $Revision: 1.3 $
+ * $Date: 2006/04/11 13:10:45 $
+ * ----------------------------------------------------------------- 
+ * Programmer(s): Scott Cohen, Alan Hindmarsh, Radu Serban, and
+ *                Aaron Collier @ LLNL
+ * -----------------------------------------------------------------
+ * Copyright (c) 2002, The Regents of the University of California.
+ * Produced at the Lawrence Livermore National Laboratory.
+ * All rights reserved.
+ * For details, see sundials/shared/LICENSE.
+ *------------------------------------------------------------------
+ * This header file exports two types: realtype and booleantype,
+ * as well as the constants TRUE and FALSE.
+ *
+ * Users should include the header file sundialstypes.h in every
+ * program file and use the exported name realtype instead of
+ * float, double or long double.
+ *
+ * The constants SUNDIALS_SINGLE_PRECISION, SUNDIALS_DOUBLE_PRECISION
+ * and SUNDIALS_LONG_DOUBLE_PRECISION indicate the underlying data
+ * type of realtype. It is set at the configuration stage.
+ *
+ * The legal types for realtype are float, double and long double.
+ *
+ * The macro RCONST gives the user a convenient way to define
+ * real-valued constants. To use the constant 1.0, for example,
+ * the user should write the following:
+ *
+ *   #define ONE RCONST(1.0)
+ *
+ * If realtype is defined as a double, then RCONST(1.0) expands
+ * to 1.0. If realtype is defined as a float, then RCONST(1.0)
+ * expands to 1.0F. If realtype is defined as a long double,
+ * then RCONST(1.0) expands to 1.0L. There is never a need to
+ * explicitly cast 1.0 to (realtype).
+ *------------------------------------------------------------------
+ */
+  
+#ifndef _SUNDIALSTYPES_H
+#define _SUNDIALSTYPES_H
+
+#ifdef __cplusplus  /* wrapper to enable C++ usage */
+extern "C" {
+#endif
+
+#ifndef _SUNDIALS_CONFIG_H
+#define _SUNDIALS_CONFIG_H
+#include "sundials_config.h"
+#endif
+
+#include <float.h>
+  
+#if defined(SUNDIALS_SINGLE_PRECISION)
+
+typedef float realtype;
+#define RCONST(x) x##F
+#define BIG_REAL FLT_MAX
+#define SMALL_REAL FLT_MIN
+#define UNIT_ROUNDOFF FLT_EPSILON
+
+#elif defined(SUNDIALS_DOUBLE_PRECISION)
+
+typedef double realtype;
+#define RCONST(x) x
+#define BIG_REAL DBL_MAX
+#define SMALL_REAL DBL_MIN
+#define UNIT_ROUNDOFF DBL_EPSILON
+
+#elif defined(SUNDIALS_EXTENDED_PRECISION)
+
+typedef long double realtype;
+#define RCONST(x) x##L
+#define BIG_REAL LDBL_MAX
+#define SMALL_REAL LDBL_MIN
+#define UNIT_ROUNDOFF LDBL_EPSILON
+
+#endif
+
+/*
+ *------------------------------------------------------------------
+ * Type : booleantype
+ *------------------------------------------------------------------
+ * Constants : FALSE and TRUE
+ *------------------------------------------------------------------
+ * ANSI C does not have a built-in boolean data type. Below is the
+ * definition for a new type called booleantype. The advantage of
+ * using the name booleantype (instead of int) is an increase in
+ * code readability. It also allows the programmer to make a
+ * distinction between int and boolean data. Variables of type
+ * booleantype are intended to have only the two values FALSE and
+ * TRUE which are defined below to be equal to 0 and 1,
+ * respectively.
+ *------------------------------------------------------------------
+ */
+
+#ifndef booleantype
+#define booleantype int
+#endif
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/setjmp.h b/Win32/bin/tcc/include/setjmp.h
new file mode 100644
index 0000000..3c2bc84
--- /dev/null
+++ b/Win32/bin/tcc/include/setjmp.h
@@ -0,0 +1,72 @@
+/* 
+ * setjmp.h
+ *
+ * Declarations supporting setjmp and longjump, a method for avoiding
+ * the normal function call return sequence. (Bleah!)
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef _SETJMP_H_
+#define _SETJMP_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * The buffer used by setjmp to store the information used by longjmp
+ * to perform it's evil goto-like work. The size of this buffer was
+ * determined through experimentation; it's contents are a mystery.
+ * NOTE: This was determined on an i386 (actually a Pentium). The
+ *       contents could be different on an Alpha or something else.
+ */
+#define _JBLEN 16
+#define _JBTYPE int
+typedef _JBTYPE jmp_buf[_JBLEN];
+
+/*
+ * The function provided by CRTDLL which appears to do the actual work
+ * of setjmp.
+ */
+int	_setjmp (jmp_buf);
+
+#define	setjmp(x)	_setjmp(x)
+
+/*
+ * Return to the last setjmp call and act as if setjmp had returned
+ * nVal (which had better be non-zero!).
+ */
+void	longjmp (jmp_buf, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _SETJMP_H_ */
+
diff --git a/Win32/bin/tcc/include/share.h b/Win32/bin/tcc/include/share.h
new file mode 100644
index 0000000..3c8d89e
--- /dev/null
+++ b/Win32/bin/tcc/include/share.h
@@ -0,0 +1,44 @@
+/*
+ * share.h
+ *
+ * Constants for file sharing functions.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef	__STRICT_ANSI__
+
+#ifndef	_SHARE_H_
+#define	_SHARE_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#define SH_COMPAT	0x00	/* Compatibility */
+#define	SH_DENYRW	0x10	/* Deny read/write */
+#define	SH_DENYWR	0x20	/* Deny write */
+#define	SH_DENYRD	0x30	/* Deny read */
+#define	SH_DENYNO	0x40	/* Deny nothing */
+
+#endif	/* Not _SHARE_H_ */
+
+#endif	/* Not __STRICT_ANSI__ */
+
diff --git a/Win32/bin/tcc/include/signal.h b/Win32/bin/tcc/include/signal.h
new file mode 100644
index 0000000..314932a
--- /dev/null
+++ b/Win32/bin/tcc/include/signal.h
@@ -0,0 +1,111 @@
+/* 
+ * signal.h
+ *
+ * A way to set handlers for exceptional conditions (also known as signals).
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef	_SIGNAL_H_
+#define	_SIGNAL_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * The actual signal values. Using other values with signal
+ * produces a SIG_ERR return value.
+ *
+ * NOTE: SIGINT is produced when the user presses Ctrl-C.
+ *       SIGILL has not been tested.
+ *       SIGFPE doesn't seem to work?
+ *       SIGSEGV does not catch writing to a NULL pointer (that shuts down
+ *               your app; can you say "segmentation violation core dump"?).
+ *       SIGTERM comes from what kind of termination request exactly?
+ *       SIGBREAK is indeed produced by pressing Ctrl-Break.
+ *       SIGABRT is produced by calling abort.
+ * TODO: The above results may be related to not installing an appropriate
+ *       structured exception handling frame. Results may be better if I ever
+ *       manage to get the SEH stuff down.
+ */
+#define	SIGINT		2	/* Interactive attention */
+#define	SIGILL		4	/* Illegal instruction */
+#define	SIGFPE		8	/* Floating point error */
+#define	SIGSEGV		11	/* Segmentation violation */
+#define	SIGTERM		15	/* Termination request */
+#define SIGBREAK	21	/* Control-break */
+#define	SIGABRT		22	/* Abnormal termination (abort) */
+
+#define NSIG 23     /* maximum signal number + 1 */
+
+#ifndef	RC_INVOKED
+
+#ifndef _SIG_ATOMIC_T_DEFINED
+typedef int sig_atomic_t;
+#define _SIG_ATOMIC_T_DEFINED
+#endif
+
+/*
+ * The prototypes (below) are the easy part. The hard part is figuring
+ * out what signals are available and what numbers they are assigned
+ * along with appropriate values of SIG_DFL and SIG_IGN.
+ */
+
+/*
+ * A pointer to a signal handler function. A signal handler takes a
+ * single int, which is the signal it handles.
+ */
+typedef	void (*__p_sig_fn_t)(int);
+
+/*
+ * These are special values of signal handler pointers which are
+ * used to send a signal to the default handler (SIG_DFL), ignore
+ * the signal (SIG_IGN), or indicate an error return (SIG_ERR).
+ */
+#define	SIG_DFL	((__p_sig_fn_t) 0)
+#define	SIG_IGN	((__p_sig_fn_t) 1)
+#define	SIG_ERR ((__p_sig_fn_t) -1)
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/*
+ * Call signal to set the signal handler for signal sig to the
+ * function pointed to by handler. Returns a pointer to the
+ * previous handler, or SIG_ERR if an error occurs. Initially
+ * unhandled signals defined above will return SIG_DFL.
+ */
+__p_sig_fn_t	signal(int, __p_sig_fn_t);
+
+/*
+ * Raise the signal indicated by sig. Returns non-zero on success.
+ */
+int	raise (int);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _SIGNAL_H_ */
+
diff --git a/Win32/bin/tcc/include/stdarg.h b/Win32/bin/tcc/include/stdarg.h
new file mode 100644
index 0000000..d562d6d
--- /dev/null
+++ b/Win32/bin/tcc/include/stdarg.h
@@ -0,0 +1,15 @@
+#ifndef _STDARG_H
+#define _STDARG_H
+
+typedef char *va_list;
+
+/* only correct for i386 */
+#define va_start(ap,last) ap = ((char *)&(last)) + ((sizeof(last)+3)&~3)
+#define va_arg(ap,type) (ap += (sizeof(type)+3)&~3, *(type *)(ap - ((sizeof(type)+3)&~3)))
+#define va_end(ap)
+
+/* fix a buggy dependency on GCC in libio.h */
+typedef va_list __gnuc_va_list;
+#define _VA_LIST_DEFINED
+
+#endif
diff --git a/Win32/bin/tcc/include/stdbool.h b/Win32/bin/tcc/include/stdbool.h
new file mode 100644
index 0000000..6ed13a6
--- /dev/null
+++ b/Win32/bin/tcc/include/stdbool.h
@@ -0,0 +1,10 @@
+#ifndef _STDBOOL_H
+#define _STDBOOL_H
+
+/* ISOC99 boolean */
+
+#define bool	_Bool
+#define true	1
+#define false	0
+
+#endif /* _STDBOOL_H */
diff --git a/Win32/bin/tcc/include/stddef.h b/Win32/bin/tcc/include/stddef.h
new file mode 100644
index 0000000..89bd7b0
--- /dev/null
+++ b/Win32/bin/tcc/include/stddef.h
@@ -0,0 +1,21 @@
+#ifndef _STDDEF_H
+#define _STDDEF_H
+
+#define NULL ((void *)0)
+typedef __SIZE_TYPE__ size_t;
+typedef __WCHAR_TYPE__ wchar_t;
+typedef __PTRDIFF_TYPE__ ptrdiff_t;
+#define offsetof(type, field) ((size_t) &((type *)0)->field)
+
+/* need to do that because of glibc 2.1 bug (should have a way to test
+   presence of 'long long' without __GNUC__, or TCC should define
+   __GNUC__ ? */
+#if !defined(__int8_t_defined) && !defined(__dietlibc__)
+#define __int8_t_defined
+typedef	char int8_t;
+typedef	short int int16_t;
+typedef	int int32_t;
+typedef long long int int64_t;
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/stdint.h b/Win32/bin/tcc/include/stdint.h
new file mode 100644
index 0000000..ed3bfbf
--- /dev/null
+++ b/Win32/bin/tcc/include/stdint.h
@@ -0,0 +1,184 @@
+/* ISO C9x  7.18  Integer types <stdint.h>
+ * Based on ISO/IEC SC22/WG14 9899 Committee draft (SC22 N2794)
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  Contributor: Danny Smith <danny_r_smith_2001 at yahoo.co.nz>
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ *  Date: 2000-12-02
+ */
+
+
+#ifndef _STDINT_H
+#define _STDINT_H
+
+/* 7.18.1.1  Exact-width integer types */
+typedef signed char int8_t;
+typedef unsigned char   uint8_t;
+typedef short  int16_t;
+typedef unsigned short  uint16_t;
+typedef int  int32_t;
+typedef unsigned   uint32_t;
+typedef long long  int64_t;
+typedef unsigned long long   uint64_t;
+
+/* 7.18.1.2  Minimum-width integer types */
+typedef signed char int_least8_t;
+typedef unsigned char   uint_least8_t;
+typedef short  int_least16_t;
+typedef unsigned short  uint_least16_t;
+typedef int  int_least32_t;
+typedef unsigned   uint_least32_t;
+typedef long long  int_least64_t;
+typedef unsigned long long   uint_least64_t;
+
+/*  7.18.1.3  Fastest minimum-width integer types 
+ *  Not actually guaranteed to be fastest for all purposes
+ *  Here we use the exact-width types for 8 and 16-bit ints. 
+ */
+typedef char int_fast8_t;
+typedef unsigned char uint_fast8_t;
+typedef short  int_fast16_t;
+typedef unsigned short  uint_fast16_t;
+typedef int  int_fast32_t;
+typedef unsigned  int  uint_fast32_t;
+typedef long long  int_fast64_t;
+typedef unsigned long long   uint_fast64_t;
+
+/* 7.18.1.4  Integer types capable of holding object pointers */
+typedef int intptr_t;
+typedef unsigned uintptr_t;
+
+/* 7.18.1.5  Greatest-width integer types */
+typedef long long  intmax_t;
+typedef unsigned long long   uintmax_t;
+
+/* 7.18.2  Limits of specified-width integer types */
+#if !defined ( __cplusplus) || defined (__STDC_LIMIT_MACROS)
+
+/* 7.18.2.1  Limits of exact-width integer types */
+#define INT8_MIN (-128) 
+#define INT16_MIN (-32768)
+#define INT32_MIN (-2147483647 - 1)
+#define INT64_MIN  (-9223372036854775807LL - 1)
+
+#define INT8_MAX 127
+#define INT16_MAX 32767
+#define INT32_MAX 2147483647
+#define INT64_MAX 9223372036854775807LL
+
+#define UINT8_MAX 0xff /* 255U */
+#define UINT16_MAX 0xffff /* 65535U */
+#define UINT32_MAX 0xffffffff  /* 4294967295U */
+#define UINT64_MAX 0xffffffffffffffffULL /* 18446744073709551615ULL */
+
+/* 7.18.2.2  Limits of minimum-width integer types */
+#define INT_LEAST8_MIN INT8_MIN
+#define INT_LEAST16_MIN INT16_MIN
+#define INT_LEAST32_MIN INT32_MIN
+#define INT_LEAST64_MIN INT64_MIN
+
+#define INT_LEAST8_MAX INT8_MAX
+#define INT_LEAST16_MAX INT16_MAX
+#define INT_LEAST32_MAX INT32_MAX
+#define INT_LEAST64_MAX INT64_MAX
+
+#define UINT_LEAST8_MAX UINT8_MAX
+#define UINT_LEAST16_MAX UINT16_MAX
+#define UINT_LEAST32_MAX UINT32_MAX
+#define UINT_LEAST64_MAX UINT64_MAX
+
+/* 7.18.2.3  Limits of fastest minimum-width integer types */
+#define INT_FAST8_MIN INT8_MIN
+#define INT_FAST16_MIN INT16_MIN
+#define INT_FAST32_MIN INT32_MIN
+#define INT_FAST64_MIN INT64_MIN
+
+#define INT_FAST8_MAX INT8_MAX
+#define INT_FAST16_MAX INT16_MAX
+#define INT_FAST32_MAX INT32_MAX
+#define INT_FAST64_MAX INT64_MAX
+
+#define UINT_FAST8_MAX UINT8_MAX
+#define UINT_FAST16_MAX UINT16_MAX
+#define UINT_FAST32_MAX UINT32_MAX
+#define UINT_FAST64_MAX UINT64_MAX
+
+/* 7.18.2.4  Limits of integer types capable of holding
+    object pointers */ 
+#define INTPTR_MIN INT32_MIN
+#define INTPTR_MAX INT32_MAX
+#define UINTPTR_MAX UINT32_MAX
+
+/* 7.18.2.5  Limits of greatest-width integer types */
+#define INTMAX_MIN INT64_MIN
+#define INTMAX_MAX INT64_MAX
+#define UINTMAX_MAX UINT64_MAX
+
+/* 7.18.3  Limits of other integer types */
+#define PTRDIFF_MIN INT32_MIN
+#define PTRDIFF_MAX INT32_MAX
+
+#define SIG_ATOMIC_MIN INT32_MIN
+#define SIG_ATOMIC_MAX INT32_MAX
+
+#define SIZE_MAX UINT32_MAX
+
+#ifndef WCHAR_MIN  /* also in wchar.h */ 
+#define WCHAR_MIN 0
+#define WCHAR_MAX ((wchar_t)-1) /* UINT16_MAX */
+#endif
+
+/*
+ * wint_t is unsigned int in __MINGW32__,
+ * but unsigned short in MS runtime
+ */
+#define WINT_MIN 0
+#define WINT_MAX UINT32_MAX
+
+#endif /* !defined ( __cplusplus) || defined __STDC_LIMIT_MACROS */
+
+
+/* 7.18.4  Macros for integer constants */
+#if !defined ( __cplusplus) || defined (__STDC_CONSTANT_MACROS)
+
+/* 7.18.4.1  Macros for minimum-width integer constants
+
+    Accoding to Douglas Gwyn <gwyn at arl.mil>:
+	"This spec was changed in ISO/IEC 9899:1999 TC1; in ISO/IEC
+	9899:1999 as initially published, the expansion was required
+	to be an integer constant of precisely matching type, which
+	is impossible to accomplish for the shorter types on most
+	platforms, because C99 provides no standard way to designate
+	an integer constant with width less than that of type int.
+	TC1 changed this to require just an integer constant
+	*expression* with *promoted* type."
+
+	The trick used here is from Clive D W Feather.
+*/
+
+#define INT8_C(val) (INT_LEAST8_MAX-INT_LEAST8_MAX+(val))
+#define INT16_C(val) (INT_LEAST16_MAX-INT_LEAST16_MAX+(val))
+#define INT32_C(val) (INT_LEAST32_MAX-INT_LEAST32_MAX+(val))
+#define INT64_C(val) (INT_LEAST64_MAX-INT_LEAST64_MAX+(val))
+
+#define UINT8_C(val) (UINT_LEAST8_MAX-UINT_LEAST8_MAX+(val))
+#define UINT16_C(val) (UINT_LEAST16_MAX-UINT_LEAST16_MAX+(val))
+#define UINT32_C(val) (UINT_LEAST32_MAX-UINT_LEAST32_MAX+(val))
+#define UINT64_C(val) (UINT_LEAST64_MAX-UINT_LEAST64_MAX+(val))
+
+/* 7.18.4.2  Macros for greatest-width integer constants */
+#define INTMAX_C(val) (INTMAX_MAX-INTMAX_MAX+(val))
+#define UINTMAX_C(val) (UINTMAX_MAX-UINTMAX_MAX+(val))
+
+#endif  /* !defined ( __cplusplus) || defined __STDC_CONSTANT_MACROS */
+
+#endif
diff --git a/Win32/bin/tcc/include/stdio.h b/Win32/bin/tcc/include/stdio.h
new file mode 100644
index 0000000..42c831a
--- /dev/null
+++ b/Win32/bin/tcc/include/stdio.h
@@ -0,0 +1,413 @@
+/*
+ * stdio.h
+ *
+ * Definitions of types and prototypes of functions for standard input and
+ * output.
+ *
+ * NOTE: The file manipulation functions provided by Microsoft seem to
+ * work with either slash (/) or backslash (\) as the path separator.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef _STDIO_H_
+#define	_STDIO_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#define __need_size_t
+#define __need_NULL
+#define __need_wchar_t
+#define	__need_wint_t
+#ifndef RC_INVOKED
+#include <stddef.h>
+#endif	/* Not RC_INVOKED */
+
+
+/* Flags for the iobuf structure  */
+#define	_IOREAD	1
+#define	_IOWRT	2
+#define	_IORW	0x0080 /* opened as "r+w" */
+
+
+/*
+ * The three standard file pointers provided by the run time library.
+ * NOTE: These will go to the bit-bucket silently in GUI applications!
+ */
+#define	STDIN_FILENO	0
+#define	STDOUT_FILENO	1
+#define	STDERR_FILENO	2
+
+/* Returned by various functions on end of file condition or error. */
+#define	EOF	(-1)
+
+/*
+ * The maximum length of a file name. You should use GetVolumeInformation
+ * instead of this constant. But hey, this works.
+ *
+ * NOTE: This is used in the structure _finddata_t (see io.h) so changing it
+ *       is probably not a good idea.
+ */
+#define	FILENAME_MAX	(260)
+
+/*
+ * The maximum number of files that may be open at once. I have set this to
+ * a conservative number. The actual value may be higher.
+ */
+#define FOPEN_MAX	(20)
+
+/* After creating this many names, tmpnam and tmpfile return NULL */
+#define TMP_MAX	32767
+/*
+ * Tmpnam, tmpfile and, sometimes, _tempnam try to create
+ * temp files in the root directory of the current drive
+ * (not in pwd, as suggested by some older MS doc's).
+ * Redefining these macros does not effect the CRT functions.
+ */
+#define _P_tmpdir   "\\"
+#define _wP_tmpdir  L"\\"
+
+/*
+ * The maximum size of name (including NUL) that will be put in the user
+ * supplied buffer caName for tmpnam.
+ * Inferred from the size of the static buffer returned by tmpnam
+ * when passed a NULL argument. May actually be smaller.
+ */
+#define L_tmpnam (16)
+
+#define _IOFBF		0x0000
+#define _IOLBF		0x0040
+#define _IONBF		0x0004
+
+/*
+ * The buffer size as used by setbuf such that it is equivalent to
+ * (void) setvbuf(fileSetBuffer, caBuffer, _IOFBF, BUFSIZ).
+ */
+#define	BUFSIZ	512
+
+/* Constants for nOrigin indicating the position relative to which fseek
+ * sets the file position. Enclosed in ifdefs because io.h could also
+ * define them. (Though not anymore since io.h includes this file now.) */
+#ifndef	SEEK_SET
+#define SEEK_SET	(0)
+#endif
+
+#ifndef	SEEK_CUR
+#define	SEEK_CUR	(1)
+#endif
+
+#ifndef	SEEK_END
+#define SEEK_END	(2)
+#endif
+
+
+#ifndef	RC_INVOKED
+
+/*
+ * I used to include stdarg.h at this point, in order to allow for the
+ * functions later on in the file which use va_list. That conflicts with
+ * using stdio.h and varargs.h in the same file, so I do the typedef myself.
+ */
+#ifndef	_VA_LIST
+#define _VA_LIST
+#if defined __GNUC__ && __GNUC__ >= 3
+typedef __builtin_va_list va_list;
+#else
+typedef char* va_list;
+#endif
+#endif
+/*
+ * The structure underlying the FILE type.
+ *
+ * I still believe that nobody in their right mind should make use of the
+ * internals of this structure. Provided by Pedro A. Aranda Gutiirrez
+ * <paag at tid.es>.
+ */
+#ifndef _FILE_DEFINED
+#define	_FILE_DEFINED
+typedef struct _iobuf
+{
+	char*	_ptr;
+	int	_cnt;
+	char*	_base;
+	int	_flag;
+	int	_file;
+	int	_charbuf;
+	int	_bufsiz;
+	char*	_tmpfname;
+} FILE;
+#endif	/* Not _FILE_DEFINED */
+
+
+/*
+ * The standard file handles
+ */
+#ifndef __DECLSPEC_SUPPORTED
+
+extern FILE (*__imp__iob)[];	/* A pointer to an array of FILE */
+
+#define _iob	(*__imp__iob)	/* An array of FILE */
+
+#else /* __DECLSPEC_SUPPORTED */
+
+__MINGW_IMPORT FILE _iob[];	/* An array of FILE imported from DLL. */
+
+#endif /* __DECLSPEC_SUPPORTED */
+
+#define stdin	(&_iob[STDIN_FILENO])
+#define stdout	(&_iob[STDOUT_FILENO])
+#define stderr	(&_iob[STDERR_FILENO])
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * File Operations
+ */
+FILE*	fopen (const char*, const char*);
+FILE*	freopen (const char*, const char*, FILE*);
+int	fflush (FILE*);
+int	fclose (FILE*);
+/* MS puts remove & rename (but not wide versions) in io.h  also */
+int	remove (const char*);
+int	rename (const char*, const char*);
+FILE*	tmpfile (void);
+char*	tmpnam (char*);
+char*	_tempnam (const char*, const char*);
+
+#ifndef	NO_OLDNAMES
+char*	tempnam (const char*, const char*);
+#endif
+
+int	setvbuf (FILE*, char*, int, size_t);
+
+void	setbuf (FILE*, char*);
+
+/*
+ * Formatted Output
+ */
+
+int	fprintf (FILE*, const char*, ...);
+int	printf (const char*, ...);
+int	sprintf (char*, const char*, ...);
+int	_snprintf (char*, size_t, const char*, ...);
+int	vfprintf (FILE*, const char*, va_list);
+int	vprintf (const char*, va_list);
+int	vsprintf (char*, const char*, va_list);
+int	_vsnprintf (char*, size_t, const char*, va_list);
+
+#ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
+int snprintf(char* s, size_t n, const char*  format, ...);
+extern inline int vsnprintf (char* s, size_t n, const char* format,
+			   va_list arg)
+  { return _vsnprintf ( s, n, format, arg); }
+#endif
+
+/*
+ * Formatted Input
+ */
+
+int	fscanf (FILE*, const char*, ...);
+int	scanf (const char*, ...);
+int	sscanf (const char*, const char*, ...);
+/*
+ * Character Input and Output Functions
+ */
+
+int	fgetc (FILE*);
+char*	fgets (char*, int, FILE*);
+int	fputc (int, FILE*);
+int	fputs (const char*, FILE*);
+int	getc (FILE*);
+int	getchar (void);
+char*	gets (char*);
+int	putc (int, FILE*);
+int	putchar (int);
+int	puts (const char*);
+int	ungetc (int, FILE*);
+
+/*
+ * Direct Input and Output Functions
+ */
+
+size_t	fread (void*, size_t, size_t, FILE*);
+size_t	fwrite (const void*, size_t, size_t, FILE*);
+
+/*
+ * File Positioning Functions
+ */
+
+int	fseek (FILE*, long, int);
+long	ftell (FILE*);
+void	rewind (FILE*);
+
+#ifdef __USE_MINGW_FSEEK  /* These are in libmingwex.a */
+/*
+ * Workaround for limitations on win9x where a file contents are
+ * not zero'd out if you seek past the end and then write.
+ */
+
+int __mingw_fseek (FILE *, long, int);
+int __mingw_fwrite (const void*, size_t, size_t, FILE*);
+#define fseek(fp, offset, whence)  __mingw_fseek(fp, offset, whence)
+#define fwrite(buffer, size, count, fp)  __mingw_fwrite(buffer, size, count, fp)
+#endif /* __USE_MINGW_FSEEK */
+
+
+/*
+ * An opaque data type used for storing file positions... The contents of
+ * this type are unknown, but we (the compiler) need to know the size
+ * because the programmer using fgetpos and fsetpos will be setting aside
+ * storage for fpos_t structres. Actually I tested using a byte array and
+ * it is fairly evident that the fpos_t type is a long (in CRTDLL.DLL).
+ * Perhaps an unsigned long? TODO? It's definitely a 64-bit number in
+ * MSVCRT however, and for now `long long' will do.
+ */
+#ifdef __MSVCRT__
+typedef long long fpos_t;
+#else
+typedef long	fpos_t;
+#endif
+
+int	fgetpos	(FILE*, fpos_t*);
+int	fsetpos (FILE*, const fpos_t*);
+
+/*
+ * Error Functions
+ */
+
+void	clearerr (FILE*);
+int	feof (FILE*);
+int	ferror (FILE*);
+void	perror (const char*);
+
+
+#ifndef __STRICT_ANSI__
+/*
+ * Pipes
+ */
+FILE*	_popen (const char*, const char*);
+int	_pclose (FILE*);
+
+#ifndef NO_OLDNAMES
+FILE*	popen (const char*, const char*);
+int	pclose (FILE*);
+#endif
+
+/*
+ * Other Non ANSI functions
+ */
+int	_flushall (void);
+int	_fgetchar (void);
+int	_fputchar (int);
+FILE*	_fdopen (int, const char*);
+int	_fileno (FILE*);
+
+#ifndef _NO_OLDNAMES
+int	fgetchar (void);
+int	fputchar (int);
+FILE*	fdopen (int, const char*);
+int	fileno (FILE*);
+#endif	/* Not _NO_OLDNAMES */
+
+#endif	/* Not __STRICT_ANSI__ */
+
+/* Wide  versions */
+
+#ifndef _WSTDIO_DEFINED
+/*  also in wchar.h - keep in sync */
+int	fwprintf (FILE*, const wchar_t*, ...);
+int	wprintf (const wchar_t*, ...);
+int	swprintf (wchar_t*, const wchar_t*, ...);
+int	_snwprintf (wchar_t*, size_t, const wchar_t*, ...);
+int	vfwprintf (FILE*, const wchar_t*, va_list);
+int	vwprintf (const wchar_t*, va_list);
+int	vswprintf (wchar_t*, const wchar_t*, va_list);
+int	_vsnwprintf (wchar_t*, size_t, const wchar_t*, va_list);
+int	fwscanf (FILE*, const wchar_t*, ...);
+int	wscanf (const wchar_t*, ...);
+int	swscanf (const wchar_t*, const wchar_t*, ...);
+wint_t	fgetwc (FILE*);
+wint_t	fputwc (wchar_t, FILE*);
+wint_t	ungetwc (wchar_t, FILE*);
+#ifdef __MSVCRT__ 
+wchar_t* fgetws (wchar_t*, int, FILE*);
+int	fputws (const wchar_t*, FILE*);
+wint_t	getwc (FILE*);
+wint_t	getwchar (void);
+wchar_t* _getws (wchar_t*);
+wint_t	putwc (wint_t, FILE*);
+int	_putws (const wchar_t*);
+wint_t	putwchar (wint_t);
+FILE*	_wfopen (const wchar_t*, const wchar_t*);
+FILE*	_wfreopen (const wchar_t*, const wchar_t*, FILE*);
+FILE*	_wfsopen (const wchar_t*, const wchar_t*, int);
+wchar_t* _wtmpnam (wchar_t*);
+wchar_t* _wtempnam (const wchar_t*, const wchar_t*);
+int	_wrename (const wchar_t*, const wchar_t*);
+int	_wremove (const wchar_t*);
+void	_wperror (const wchar_t*);
+FILE*	_wpopen (const wchar_t*, const wchar_t*);
+#endif	/* __MSVCRT__ */
+
+#ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
+int snwprintf(wchar_t* s, size_t n, const wchar_t*  format, ...);
+extern inline int vsnwprintf (wchar_t* s, size_t n, const wchar_t* format,
+			   va_list arg)
+  { return _vsnwprintf ( s, n, format, arg); }
+#endif
+
+#define _WSTDIO_DEFINED
+#endif /* _WSTDIO_DEFINED */
+
+#ifndef __STRICT_ANSI__
+#ifdef __MSVCRT__
+#ifndef NO_OLDNAMES
+FILE*	wpopen (const wchar_t*, const wchar_t*);
+#endif /* not NO_OLDNAMES */
+#endif /* MSVCRT runtime */
+
+/*
+ * Other Non ANSI wide functions
+ */
+wint_t	_fgetwchar (void);
+wint_t	_fputwchar (wint_t);
+int	_getw (FILE*);
+int	_putw (int, FILE*);
+
+#ifndef _NO_OLDNAMES
+wint_t	fgetwchar (void);
+wint_t	fputwchar (wint_t);
+int	getw (FILE*);
+int	putw (int, FILE*);
+#endif	/* Not _NO_OLDNAMES */
+
+#endif /* __STRICT_ANSI */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif /* _STDIO_H_ */
diff --git a/Win32/bin/tcc/include/stdlib.h b/Win32/bin/tcc/include/stdlib.h
new file mode 100644
index 0000000..b5d5026
--- /dev/null
+++ b/Win32/bin/tcc/include/stdlib.h
@@ -0,0 +1,482 @@
+/*
+ * stdlib.h
+ *
+ * Definitions for common types, variables, and functions.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef _STDLIB_H_
+#define _STDLIB_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+
+#define __need_size_t
+#define __need_wchar_t
+#define __need_NULL
+#ifndef RC_INVOKED
+#include <stddef.h>
+#endif /* RC_INVOKED */
+
+/*
+ * RAND_MAX is the maximum value that may be returned by rand.
+ * The minimum is zero.
+ */
+#define	RAND_MAX	0x7FFF
+
+/*
+ * These values may be used as exit status codes.
+ */
+#define	EXIT_SUCCESS	0
+#define	EXIT_FAILURE	1
+
+/*
+ * Definitions for path name functions.
+ * NOTE: All of these values have simply been chosen to be conservatively high.
+ *       Remember that with long file names we can no longer depend on
+ *       extensions being short.
+ */
+#ifndef __STRICT_ANSI__
+
+#ifndef MAX_PATH
+#define	MAX_PATH	(260)
+#endif
+
+#define	_MAX_PATH	MAX_PATH
+#define	_MAX_DRIVE	(3)
+#define	_MAX_DIR	256
+#define	_MAX_FNAME	256
+#define	_MAX_EXT	256
+
+#endif	/* Not __STRICT_ANSI__ */
+
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * This seems like a convenient place to declare these variables, which
+ * give programs using WinMain (or main for that matter) access to main-ish
+ * argc and argv. environ is a pointer to a table of environment variables.
+ * NOTE: Strings in _argv and environ are ANSI strings.
+ */
+extern int	_argc;
+extern char**	_argv;
+
+/* imports from runtime dll of the above variables */
+#ifdef __MSVCRT__
+
+extern int*     __p___argc(void);
+extern char***   __p___argv(void);
+extern wchar_t***   __p___wargv(void);
+
+#define __argc (*__p___argc())
+#define __argv (*__p___argv())
+#define __wargv (*__p___wargv())
+
+#else /* !MSVCRT */
+
+#ifndef __DECLSPEC_SUPPORTED
+
+extern int*    __imp___argc_dll;
+extern char***  __imp___argv_dll;
+#define __argc (*__imp___argc_dll)
+#define __argv (*__imp___argv_dll)
+
+#else /* __DECLSPEC_SUPPORTED */
+
+__MINGW_IMPORT int    __argc_dll;
+__MINGW_IMPORT char**  __argv_dll;
+#define __argc __argc_dll
+#define __argv __argv_dll
+
+#endif /* __DECLSPEC_SUPPORTED */
+
+#endif /* __MSVCRT */
+
+/*
+ * Also defined in ctype.h.
+ */
+
+#ifndef MB_CUR_MAX
+# ifdef __MSVCRT__
+#  define MB_CUR_MAX __mb_cur_max
+   __MINGW_IMPORT int __mb_cur_max;
+# else /* not __MSVCRT */
+#  define MB_CUR_MAX __mb_cur_max_dll
+   __MINGW_IMPORT int __mb_cur_max_dll;
+# endif /* not __MSVCRT */
+#endif  /* MB_CUR_MAX */
+
+/* 
+ * MS likes to declare errno in stdlib.h as well. 
+ */
+
+#ifdef _UWIN
+#undef errno
+extern int errno;
+#else
+int*	_errno(void);
+#define	errno		(*_errno())
+#endif
+int*	__doserrno(void);
+#define	_doserrno	(*__doserrno())
+
+/*
+ * Use environ from the DLL, not as a global. 
+ */
+
+#ifdef __MSVCRT__
+  extern char *** __p__environ(void);
+  extern wchar_t *** __p__wenviron(void);
+# define _environ (*__p__environ())
+# define _wenviron (*__p__wenviron())
+#else /* ! __MSVCRT__ */
+# ifndef __DECLSPEC_SUPPORTED
+    extern char *** __imp__environ_dll;
+#   define _environ (*__imp__environ_dll)
+# else /* __DECLSPEC_SUPPORTED */
+    __MINGW_IMPORT char ** _environ_dll;
+#   define _environ _environ_dll
+# endif /* __DECLSPEC_SUPPORTED */
+#endif /* ! __MSVCRT__ */
+
+#define environ _environ
+
+#ifdef	__MSVCRT__
+/* One of the MSVCRTxx libraries */
+
+#ifndef __DECLSPEC_SUPPORTED
+  extern int*	__imp__sys_nerr;
+# define	sys_nerr	(*__imp__sys_nerr)
+#else /* __DECLSPEC_SUPPORTED */
+  __MINGW_IMPORT int	_sys_nerr;
+# ifndef _UWIN
+#   define	sys_nerr	_sys_nerr
+# endif /* _UWIN */
+#endif /* __DECLSPEC_SUPPORTED */
+
+#else /* ! __MSVCRT__ */
+
+/* CRTDLL run time library */
+
+#ifndef __DECLSPEC_SUPPORTED
+  extern int*	__imp__sys_nerr_dll;
+# define sys_nerr	(*__imp__sys_nerr_dll)
+#else /* __DECLSPEC_SUPPORTED */
+  __MINGW_IMPORT int	_sys_nerr_dll;
+# define sys_nerr	_sys_nerr_dll
+#endif /* __DECLSPEC_SUPPORTED */
+
+#endif /* ! __MSVCRT__ */
+
+#ifndef __DECLSPEC_SUPPORTED
+extern char***	__imp__sys_errlist;
+#define	sys_errlist	(*__imp__sys_errlist)
+#else /* __DECLSPEC_SUPPORTED */
+__MINGW_IMPORT char*	_sys_errlist[];
+#ifndef _UWIN
+#define	sys_errlist	_sys_errlist
+#endif /* _UWIN */
+#endif /* __DECLSPEC_SUPPORTED */
+
+/*
+ * OS version and such constants.
+ */
+#ifndef __STRICT_ANSI__
+
+#ifdef	__MSVCRT__
+/* msvcrtxx.dll */
+
+extern unsigned int*	__p__osver(void);
+extern unsigned int*	__p__winver(void);
+extern unsigned int*	__p__winmajor(void);
+extern unsigned int*	__p__winminor(void);
+
+#define _osver		(*__p__osver())
+#define _winver		(*__p__winver())
+#define _winmajor	(*__p__winmajor())
+#define _winminor	(*__p__winminor())
+
+#else
+/* Not msvcrtxx.dll, thus crtdll.dll */
+
+#ifndef __DECLSPEC_SUPPORTED
+
+extern unsigned int*	_imp___osver_dll;
+extern unsigned int*	_imp___winver_dll;
+extern unsigned int*	_imp___winmajor_dll;
+extern unsigned int*	_imp___winminor_dll;
+
+#define _osver		(*_imp___osver_dll)
+#define _winver		(*_imp___winver_dll)
+#define _winmajor	(*_imp___winmajor_dll)
+#define _winminor	(*_imp___winminor_dll)
+
+#else /* __DECLSPEC_SUPPORTED */
+
+__MINGW_IMPORT unsigned int	_osver_dll;
+__MINGW_IMPORT unsigned int	_winver_dll;
+__MINGW_IMPORT unsigned int	_winmajor_dll;
+__MINGW_IMPORT unsigned int	_winminor_dll;
+
+#define _osver		_osver_dll
+#define _winver		_winver_dll
+#define _winmajor	_winmajor_dll
+#define _winminor	_winminor_dll
+
+#endif /* __DECLSPEC_SUPPORTED */
+
+#endif
+
+#if defined  __MSVCRT__
+/* although the _pgmptr is exported as DATA,
+ * be safe and use the access function __p__pgmptr() to get it. */
+char**  __p__pgmptr(void);
+#define _pgmptr     (*__p__pgmptr())
+wchar_t**  __p__wpgmptr(void);
+#define _wpgmptr    (*__p__wpgmptr())
+#else /* ! __MSVCRT__ */
+# ifndef __DECLSPEC_SUPPORTED
+  extern char** __imp__pgmptr_dll;
+# define _pgmptr (*__imp__pgmptr_dll)
+# else /* __DECLSPEC_SUPPORTED */
+ __MINGW_IMPORT char* _pgmptr_dll;
+# define _pgmptr _pgmptr_dll
+# endif /* __DECLSPEC_SUPPORTED */
+/* no wide version in CRTDLL */
+#endif /* __MSVCRT__ */
+
+#endif /* Not __STRICT_ANSI__ */
+
+#ifdef	__GNUC__
+#define	_ATTRIB_NORETURN	__attribute__ ((noreturn))
+#else	/* Not __GNUC__ */
+#define	_ATTRIB_NORETURN
+#endif	/* __GNUC__ */
+
+double	atof	(const char*);
+int	atoi	(const char*);
+long	atol	(const char*);
+int	_wtoi (const wchar_t *);
+long _wtol (const wchar_t *);
+
+double	strtod	(const char*, char**);
+#if !defined __NO_ISOCEXT  /* extern stubs in static libmingwex.a */
+extern __inline__ float strtof (const char *nptr, char **endptr)
+  { return (strtod (nptr, endptr));}
+#endif /* __NO_ISOCEXT */
+
+long	strtol	(const char*, char**, int);
+unsigned long	strtoul	(const char*, char**, int);
+
+#ifndef _WSTDLIB_DEFINED
+/*  also declared in wchar.h */
+double	wcstod	(const wchar_t*, wchar_t**);
+#if !defined __NO_ISOCEXT /* extern stub in static libmingwex.a */
+extern __inline__ float wcstof( const wchar_t *nptr, wchar_t **endptr)
+{  return (wcstod(nptr, endptr)); }
+#endif /* __NO_ISOCEXT */
+
+long	wcstol	(const wchar_t*, wchar_t**, int);
+unsigned long	wcstoul (const wchar_t*, wchar_t**, int);
+#define _WSTDLIB_DEFINED
+#endif
+
+size_t	wcstombs	(char*, const wchar_t*, size_t);
+int	wctomb		(char*, wchar_t);
+
+int	mblen		(const char*, size_t);
+size_t	mbstowcs	(wchar_t*, const char*, size_t);
+int	mbtowc		(wchar_t*, const char*, size_t);
+
+int	rand	(void);
+void	srand	(unsigned int);
+
+void*	calloc	(size_t, size_t);
+void*	malloc	(size_t);
+void*	realloc	(void*, size_t);
+void	free	(void*);
+
+void	abort	(void) _ATTRIB_NORETURN;
+void	exit	(int) _ATTRIB_NORETURN;
+int	atexit	(void (*)(void));
+
+int	system	(const char*);
+char*	getenv	(const char*);
+
+void*	bsearch	(const void*, const void*, size_t, size_t, 
+                 int (*)(const void*, const void*));
+void	qsort	(const void*, size_t, size_t,
+                 int (*)(const void*, const void*));
+
+int	abs	(int);
+long	labs	(long);
+
+/*
+ * div_t and ldiv_t are structures used to return the results of div and
+ * ldiv.
+ *
+ * NOTE: div and ldiv appear not to work correctly unless
+ *       -fno-pcc-struct-return is specified. This is included in the
+ *       mingw32 specs file.
+ */
+typedef struct { int quot, rem; } div_t;
+typedef struct { long quot, rem; } ldiv_t;
+
+div_t	div	(int, int);
+ldiv_t	ldiv	(long, long);
+
+#ifndef	__STRICT_ANSI__
+
+/*
+ * NOTE: Officially the three following functions are obsolete. The Win32 API
+ *       functions SetErrorMode, Beep and Sleep are their replacements.
+ */
+void	_beep (unsigned int, unsigned int);
+void	_seterrormode (int);
+void	_sleep (unsigned long);
+
+void	_exit	(int) _ATTRIB_NORETURN;
+#if !defined __NO_ISOCEXT /* extern stub in static libmingwex.a */
+/* C99 function name */
+void _Exit(int) _ATTRIB_NORETURN; /* Declare to get noreturn attribute.  */
+extern __inline__ void _Exit(int status)
+	{  _exit(status); }
+#endif
+/* _onexit is MS extension. Use atexit for portability.  */
+typedef  int (* _onexit_t)(void); 
+_onexit_t _onexit( _onexit_t );
+
+int	_putenv	(const char*);
+void	_searchenv (const char*, const char*, char*);
+
+
+char*	_ecvt (double, int, int*, int*);
+char*	_fcvt (double, int, int*, int*);
+char*	_gcvt (double, int, char*);
+
+void	_makepath (char*, const char*, const char*, const char*, const char*);
+void	_splitpath (const char*, char*, char*, char*, char*);
+char*	_fullpath (char*, const char*, size_t);
+
+
+char*	_itoa (int, char*, int);
+char*	_ltoa (long, char*, int);
+char*   _ultoa(unsigned long, char*, int);
+wchar_t*  _itow (int, wchar_t*, int);
+wchar_t*  _ltow (long, wchar_t*, int);
+wchar_t*  _ultow (unsigned long, wchar_t*, int);
+
+#ifdef __MSVCRT__
+__int64	_atoi64(const char *);
+char*	_i64toa(__int64, char *, int);
+char*	_ui64toa(unsigned __int64, char *, int);
+__int64	_wtoi64(const wchar_t *);
+wchar_t* _i64tow(__int64, wchar_t *, int);
+wchar_t* _ui64tow(unsigned __int64, wchar_t *, int);
+
+wchar_t* _wgetenv(const wchar_t*);
+int	 _wputenv(const wchar_t*);
+void	_wsearchenv(const wchar_t*, const wchar_t*, wchar_t*);
+void    _wmakepath(wchar_t*, const wchar_t*, const wchar_t*, const wchar_t*, const wchar_t*);
+void	_wsplitpath (const wchar_t*, wchar_t*, wchar_t*, wchar_t*, wchar_t*);
+wchar_t*    _wfullpath (wchar_t*, const wchar_t*, size_t);
+#endif
+
+#ifndef	_NO_OLDNAMES
+
+int	putenv (const char*);
+void	searchenv (const char*, const char*, char*);
+
+char*	itoa (int, char*, int);
+char*	ltoa (long, char*, int);
+
+#ifndef _UWIN
+char*	ecvt (double, int, int*, int*);
+char*	fcvt (double, int, int*, int*);
+char*	gcvt (double, int, char*);
+#endif /* _UWIN */
+#endif	/* Not _NO_OLDNAMES */
+
+#endif	/* Not __STRICT_ANSI__ */
+
+/* C99 names */
+
+#if !defined __NO_ISOCEXT /* externs in static libmingwex.a */
+
+typedef struct { long long quot, rem; } lldiv_t;
+
+lldiv_t	lldiv (long long, long long);
+
+extern __inline__ long long llabs(long long _j)
+  {return (_j >= 0 ? _j : -_j);}
+
+long long strtoll (const char* __restrict__, char** __restrict, int);
+unsigned long long strtoull (const char* __restrict__, char** __restrict__, int);
+
+#if defined (__MSVCRT__) /* these are stubs for MS _i64 versions */ 
+long long atoll (const char *);
+
+#if !defined (__STRICT_ANSI__)
+long long wtoll(const wchar_t *);
+char* lltoa(long long, char *, int);
+char* ulltoa(unsigned long long , char *, int);
+wchar_t* lltow(long long, wchar_t *, int);
+wchar_t* ulltow(unsigned long long, wchar_t *, int);
+
+  /* inline using non-ansi functions */
+extern __inline__ long long atoll (const char * _c)
+	{ return _atoi64 (_c); }
+extern __inline__ char* lltoa(long long _n, char * _c, int _i)
+	{ return _i64toa (_n, _c, _i); }
+extern __inline__ char* ulltoa(unsigned long long _n, char * _c, int _i)
+	{ return _ui64toa (_n, _c, _i); }
+extern __inline__ long long wtoll(const wchar_t * _w)
+ 	{ return _wtoi64 (_w); }
+extern __inline__ wchar_t* lltow(long long _n, wchar_t * _w, int _i)
+	{ return _i64tow (_n, _w, _i); } 
+extern __inline__ wchar_t* ulltow(unsigned long long _n, wchar_t * _w, int _i)
+	{ return _ui64tow (_n, _w, _i); } 
+#endif /* (__STRICT_ANSI__)  */
+
+#endif /* __MSVCRT__ */
+
+#endif /* !__NO_ISOCEXT */
+
+/*
+ * Undefine the no return attribute used in some function definitions
+ */
+#undef	_ATTRIB_NORETURN
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _STDLIB_H_ */
+
diff --git a/Win32/bin/tcc/include/string.h b/Win32/bin/tcc/include/string.h
new file mode 100644
index 0000000..e6918bd
--- /dev/null
+++ b/Win32/bin/tcc/include/string.h
@@ -0,0 +1,206 @@
+/*
+ * string.h
+ *
+ * Definitions for memory and string functions.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef _STRING_H_
+#define	_STRING_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * Define size_t, wchar_t and NULL
+ */
+#define __need_size_t
+#define __need_wchar_t
+#define	__need_NULL
+#ifndef RC_INVOKED
+#include <stddef.h>
+#endif	/* Not RC_INVOKED */
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Prototypes of the ANSI Standard C library string functions.
+ */
+void*	memchr (const void*, int, size_t);
+int 	memcmp (const void*, const void*, size_t);
+void* 	memcpy (void*, const void*, size_t);
+void*	memmove (void*, const void*, size_t);
+void*	memset (void*, int, size_t);
+char*	strcat (char*, const char*);
+char*	strchr (const char*, int);
+int	strcmp (const char*, const char*);
+int	strcoll (const char*, const char*);	/* Compare using locale */
+char*	strcpy (char*, const char*);
+size_t	strcspn (const char*, const char*);
+char*	strerror (int); /* NOTE: NOT an old name wrapper. */
+char*	_strerror (const char *);
+size_t	strlen (const char*);
+char*	strncat (char*, const char*, size_t);
+int	strncmp (const char*, const char*, size_t);
+char*	strncpy (char*, const char*, size_t);
+char*	strpbrk (const char*, const char*);
+char*	strrchr (const char*, int);
+size_t	strspn (const char*, const char*);
+char*	strstr (const char*, const char*);
+char*	strtok (char*, const char*);
+size_t	strxfrm (char*, const char*, size_t);
+
+#ifndef __STRICT_ANSI__
+/*
+ * Extra non-ANSI functions provided by the CRTDLL library
+ */
+void*	_memccpy (void*, const void*, int, size_t);
+int 	_memicmp (const void*, const void*, size_t);
+char* 	_strdup (const char*);
+int	_strcmpi (const char*, const char*);
+int	_stricmp (const char*, const char*);
+int	_stricoll (const char*, const char*);
+char*	_strlwr (char*);
+int	_strnicmp (const char*, const char*, size_t);
+char*	_strnset (char*, int, size_t);
+char*	_strrev (char*);
+char*	_strset (char*, int);
+char*	_strupr (char*);
+void	_swab (const char*, char*, size_t);
+
+/*
+ * Multi-byte character functions
+ */
+unsigned char*	_mbschr (unsigned char*, unsigned char*);
+unsigned char*	_mbsncat (unsigned char*, const unsigned char*, size_t);
+unsigned char*	_mbstok (unsigned char*, unsigned char*);
+
+#ifdef __MSVCRT__
+int  _strncoll(const char*, const char*, size_t);
+int  _strnicoll(const char*, const char*, size_t);
+#endif
+
+#endif	/* Not __STRICT_ANSI__ */
+
+/*
+ * Unicode versions of the standard calls.
+ */
+wchar_t* wcscat (wchar_t*, const wchar_t*);
+wchar_t* wcschr (const wchar_t*, wchar_t);
+int	wcscmp (const wchar_t*, const wchar_t*);
+int	wcscoll (const wchar_t*, const wchar_t*);
+wchar_t* wcscpy (wchar_t*, const wchar_t*);
+size_t	wcscspn (const wchar_t*, const wchar_t*);
+/* Note: No wcserror in CRTDLL. */
+size_t	wcslen (const wchar_t*);
+wchar_t* wcsncat (wchar_t*, const wchar_t*, size_t);
+int	wcsncmp(const wchar_t*, const wchar_t*, size_t);
+wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t);
+wchar_t* wcspbrk(const wchar_t*, const wchar_t*);
+wchar_t* wcsrchr(const wchar_t*, wchar_t);
+size_t	wcsspn(const wchar_t*, const wchar_t*);
+wchar_t* wcsstr(const wchar_t*, const wchar_t*);
+wchar_t* wcstok(wchar_t*, const wchar_t*);
+size_t	wcsxfrm(wchar_t*, const wchar_t*, size_t);
+
+#ifndef	__STRICT_ANSI__
+/*
+ * Unicode versions of non-ANSI functions provided by CRTDLL.
+ */
+
+/* NOTE: _wcscmpi not provided by CRTDLL, this define is for portability */
+#define		_wcscmpi	_wcsicmp
+
+wchar_t* _wcsdup (wchar_t*);
+int	_wcsicmp (const wchar_t*, const wchar_t*);
+int	_wcsicoll (const wchar_t*, const wchar_t*);
+wchar_t* _wcslwr (wchar_t*);
+int	_wcsnicmp (const wchar_t*, const wchar_t*, size_t);
+wchar_t* _wcsnset (wchar_t*, wchar_t, size_t);
+wchar_t* _wcsrev (wchar_t*);
+wchar_t* _wcsset (wchar_t*, wchar_t);
+wchar_t* _wcsupr (wchar_t*);
+
+#ifdef __MSVCRT__
+int  _wcsncoll(const wchar_t*, const wchar_t*, size_t);
+int  _wcsnicoll(const wchar_t*, const wchar_t*, size_t);
+#endif
+
+
+#endif	/* Not __STRICT_ANSI__ */
+
+
+#ifndef	__STRICT_ANSI__
+#ifndef	_NO_OLDNAMES
+
+/*
+ * Non-underscored versions of non-ANSI functions. They live in liboldnames.a
+ * and provide a little extra portability. Also a few extra UNIX-isms like
+ * strcasecmp.
+ */
+
+void*	memccpy (void*, const void*, int, size_t);
+int	memicmp (const void*, const void*, size_t);
+char*	strdup (const char*);
+int	strcmpi (const char*, const char*);
+int	stricmp (const char*, const char*);
+int	strcasecmp (const char*, const char*);
+int	stricoll (const char*, const char*);
+char*	strlwr (char*);
+int	strnicmp (const char*, const char*, size_t);
+int	strncasecmp (const char*, const char*, size_t);
+char*	strnset (char*, int, size_t);
+char*	strrev (char*);
+char*	strset (char*, int);
+char*	strupr (char*);
+#ifndef _UWIN
+void	swab (const char*, char*, size_t);
+#endif /* _UWIN */
+
+/* NOTE: There is no _wcscmpi, but this is for compatibility. */
+int	wcscmpi	(const wchar_t*, const wchar_t*);
+wchar_t* wcsdup (wchar_t*);
+int	wcsicmp (const wchar_t*, const wchar_t*);
+int	wcsicoll (const wchar_t*, const wchar_t*);
+wchar_t* wcslwr (wchar_t*);
+int	wcsnicmp (const wchar_t*, const wchar_t*, size_t);
+wchar_t* wcsnset (wchar_t*, wchar_t, size_t);
+wchar_t* wcsrev (wchar_t*);
+wchar_t* wcsset (wchar_t*, wchar_t);
+wchar_t* wcsupr (wchar_t*);
+
+#endif	/* Not _NO_OLDNAMES */
+#endif	/* Not strict ANSI */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _STRING_H_ */
+
diff --git a/Win32/bin/tcc/include/tchar.h b/Win32/bin/tcc/include/tchar.h
new file mode 100644
index 0000000..d5d33d5
--- /dev/null
+++ b/Win32/bin/tcc/include/tchar.h
@@ -0,0 +1,367 @@
+/* 
+ * tchar.h
+ *
+ * Unicode mapping layer for the standard C library. By including this
+ * file and using the 't' names for string functions
+ * (eg. _tprintf) you can make code which can be easily adapted to both
+ * Unicode and non-unicode environments. In a unicode enabled compile define
+ * _UNICODE before including tchar.h, otherwise the standard non-unicode
+ * library functions will be used.
+ *
+ * Note that you still need to include string.h or stdlib.h etc. to define
+ * the appropriate functions. Also note that there are several defines
+ * included for non-ANSI functions which are commonly available (but using
+ * the convention of prepending an underscore to non-ANSI library function
+ * names).
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef	_TCHAR_H_
+#define _TCHAR_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * NOTE: This tests _UNICODE, which is different from the UNICODE define
+ *       used to differentiate Win32 API calls.
+ */
+#ifdef	_UNICODE
+
+
+/*
+ * Use TCHAR instead of char or wchar_t. It will be appropriately translated
+ * if _UNICODE is correctly defined (or not).
+ */
+#ifndef _TCHAR_DEFINED
+#ifndef RC_INVOKED
+typedef	wchar_t	TCHAR;
+typedef wchar_t _TCHAR;
+#endif	/* Not RC_INVOKED */
+#define _TCHAR_DEFINED
+#endif
+
+
+/*
+ * __TEXT is a private macro whose specific use is to force the expansion of a
+ * macro passed as an argument to the macros _T or _TEXT.  DO NOT use this
+ * macro within your programs.  It's name and function could change without
+ * notice.
+ */
+#define	__TEXT(x)	L##x
+
+/*  for porting from other Windows compilers */
+#if 0  // no  wide startup module
+#define _tmain      wmain
+#define _tWinMain   wWinMain
+#define _tenviron   _wenviron
+#define __targv     __wargv
+#endif
+
+/*
+ * Unicode functions
+ */
+#define	_tprintf	wprintf
+#define	_ftprintf	fwprintf
+#define	_stprintf	swprintf
+#define	_sntprintf	_snwprintf
+#define	_vtprintf	vwprintf
+#define	_vftprintf	vfwprintf
+#define _vstprintf	vswprintf
+#define	_vsntprintf	_vsnwprintf
+#define	_tscanf		wscanf
+#define	_ftscanf	fwscanf
+#define	_stscanf	swscanf
+#define	_fgettc		fgetwc
+#define	_fgettchar	_fgetwchar
+#define	_fgetts		fgetws
+#define	_fputtc		fputwc
+#define	_fputtchar	_fputwchar
+#define	_fputts		fputws
+#define	_gettc		getwc
+#define	_getts		getws
+#define	_puttc		putwc
+#define	_putts		putws
+#define	_ungettc	ungetwc
+#define	_tcstod		wcstod
+#define	_tcstol		wcstol
+#define _tcstoul	wcstoul
+#define	_itot		_itow
+#define	_ltot		_ltow
+#define	_ultot		_ultow
+#define	_ttoi		_wtoi
+#define	_ttol		_wtol
+#define	_tcscat		wcscat
+#define _tcschr		wcschr
+#define _tcscmp		wcscmp
+#define _tcscpy		wcscpy
+#define _tcscspn	wcscspn
+#define	_tcslen		wcslen
+#define	_tcsncat	wcsncat
+#define	_tcsncmp	wcsncmp
+#define	_tcsncpy	wcsncpy
+#define	_tcspbrk	wcspbrk
+#define	_tcsrchr	wcsrchr
+#define _tcsspn		wcsspn
+#define	_tcsstr		wcsstr
+#define _tcstok		wcstok
+#define	_tcsdup		_wcsdup
+#define	_tcsicmp	_wcsicmp
+#define	_tcsnicmp	_wcsnicmp
+#define	_tcsnset	_wcsnset
+#define	_tcsrev		_wcsrev
+#define _tcsset		_wcsset
+#define	_tcslwr		_wcslwr
+#define	_tcsupr		_wcsupr
+#define	_tcsxfrm	wcsxfrm
+#define	_tcscoll	wcscoll
+#define	_tcsicoll	_wcsicoll
+#define	_istalpha	iswalpha
+#define	_istupper	iswupper
+#define	_istlower	iswlower
+#define	_istdigit	iswdigit
+#define	_istxdigit	iswxdigit
+#define	_istspace	iswspace
+#define	_istpunct	iswpunct
+#define	_istalnum	iswalnum
+#define	_istprint	iswprint
+#define	_istgraph	iswgraph
+#define	_istcntrl	iswcntrl
+#define	_istascii	iswascii
+#define _totupper	towupper
+#define	_totlower	towlower
+#define _tcsftime	wcsftime
+/* Macro functions */ 
+#define _tcsdec     _wcsdec
+#define _tcsinc     _wcsinc
+#define _tcsnbcnt   _wcsncnt
+#define _tcsnccnt   _wcsncnt
+#define _tcsnextc   _wcsnextc
+#define _tcsninc    _wcsninc
+#define _tcsspnp    _wcsspnp
+#define _wcsdec(_wcs1, _wcs2) ((_wcs1)>=(_wcs2) ? NULL : (_wcs2)-1)
+#define _wcsinc(_wcs)  ((_wcs)+1)
+#define _wcsnextc(_wcs) ((unsigned int) *(_wcs))
+#define _wcsninc(_wcs, _inc) (((_wcs)+(_inc)))
+#define _wcsncnt(_wcs, _cnt) ((wcslen(_wcs)>_cnt) ? _count : wcslen(_wcs))
+#define _wcsspnp(_wcs1, _wcs2) ((*((_wcs1)+wcsspn(_wcs1,_wcs2))) ? ((_wcs1)+wcsspn(_wcs1,_wcs2)) : NULL)
+
+#if 1  // defined __MSVCRT__
+/*
+ *   These wide functions not in crtdll.dll.
+ *   Define macros anyway so that _wfoo rather than _tfoo is undefined
+ */
+#define _ttoi64     _wtoi64
+#define _i64tot     _i64tow
+#define _ui64tot    _ui64tow
+#define	_tasctime	_wasctime
+#define	_tctime		_wctime
+#define	_tstrdate	_wstrdate
+#define	_tstrtime	_wstrtime
+#define	_tutime		_wutime
+#define _tcsnccoll  _wcsncoll
+#define _tcsncoll   _wcsncoll
+#define _tcsncicoll _wcsnicoll
+#define _tcsnicoll  _wcsnicoll
+#define _taccess    _waccess
+#define _tchmod     _wchmod
+#define _tcreat     _wcreat
+#define _tfindfirst _wfindfirst
+#define _tfindnext  _wfindnext
+#define _tfopen     _wfopen
+#define _tgetenv    _wgetenv
+#define _tmktemp    _wmktemp
+#define _topen      _wopen
+#define _tremove    _wremove
+#define _trename    _wrename
+#define _tsopen     _wsopen
+#define _tsetlocale _wsetlocale
+#define _tunlink    _wunlink
+#define _tfinddata_t    _wfinddata_t
+#define _tfindfirsti64  _wfindfirsti64
+#define _tfindnexti64   _wfindnexti64
+#define _tfinddatai64_t _wfinddatai64_t
+#endif  /* __MSVCRT__ */
+
+#else	/* Not _UNICODE */
+
+/*
+ * TCHAR, the type you should use instead of char.
+ */
+#ifndef _TCHAR_DEFINED
+#ifndef RC_INVOKED
+typedef char	TCHAR;
+typedef char	_TCHAR;
+#endif
+#define _TCHAR_DEFINED
+#endif
+
+/*
+ * __TEXT is a private macro whose specific use is to force the expansion of a
+ * macro passed as an argument to the macros _T or _TEXT.  DO NOT use this
+ * macro within your programs.  It's name and function could change without
+ * notice.
+ */
+#define	__TEXT(x)	x
+
+/*  for porting from other Windows compilers */
+#define _tmain      main
+#define _tWinMain   WinMain
+#define _tenviron  _environ
+#define __targv     __argv
+
+/*
+ * Non-unicode (standard) functions
+ */
+
+#define	_tprintf	printf
+#define _ftprintf	fprintf
+#define	_stprintf	sprintf
+#define	_sntprintf	_snprintf
+#define	_vtprintf	vprintf
+#define	_vftprintf	vfprintf
+#define _vstprintf	vsprintf
+#define	_vsntprintf	_vsnprintf
+#define	_tscanf		scanf
+#define	_ftscanf	fscanf
+#define	_stscanf	sscanf
+#define	_fgettc		fgetc
+#define	_fgettchar	_fgetchar
+#define	_fgetts		fgets
+#define	_fputtc		fputc
+#define	_fputtchar	_fputchar
+#define	_fputts		fputs
+#define	_tfopen		fopen
+#define	_tgetenv	getenv
+#define	_gettc		getc
+#define	_getts		gets
+#define	_puttc		putc
+#define	_putts		puts
+#define	_ungettc	ungetc
+#define	_tcstod		strtod
+#define	_tcstol		strtol
+#define _tcstoul	strtoul
+#define	_itot		_itoa
+#define	_ltot		_ltoa
+#define	_ultot		_ultoa
+#define	_ttoi		atoi
+#define	_ttol		atol
+#define	_tcscat		strcat
+#define _tcschr		strchr
+#define _tcscmp		strcmp
+#define _tcscpy		strcpy
+#define _tcscspn	strcspn
+#define	_tcslen		strlen
+#define	_tcsncat	strncat
+#define	_tcsncmp	strncmp
+#define	_tcsncpy	strncpy
+#define	_tcspbrk	strpbrk
+#define	_tcsrchr	strrchr
+#define _tcsspn		strspn
+#define	_tcsstr		strstr
+#define _tcstok		strtok
+#define	_tcsdup		_strdup
+#define	_tcsicmp	_stricmp
+#define	_tcsnicmp	_strnicmp
+#define	_tcsnset	_strnset
+#define	_tcsrev		_strrev
+#define _tcsset		_strset
+#define	_tcslwr		_strlwr
+#define	_tcsupr		_strupr
+#define	_tcsxfrm	strxfrm
+#define	_tcscoll	strcoll
+#define	_tcsicoll	_stricoll
+#define	_istalpha	isalpha
+#define	_istupper	isupper
+#define	_istlower	islower
+#define	_istdigit	isdigit
+#define	_istxdigit	isxdigit
+#define	_istspace	isspace
+#define	_istpunct	ispunct
+#define	_istalnum	isalnum
+#define	_istprint	isprint
+#define	_istgraph	isgraph
+#define	_istcntrl	iscntrl
+#define	_istascii	isascii
+#define _totupper	toupper
+#define	_totlower	tolower
+#define	_tasctime	asctime
+#define	_tctime		ctime
+#define	_tstrdate	_strdate
+#define	_tstrtime	_strtime
+#define	_tutime		_utime
+#define _tcsftime	strftime
+/* Macro functions */ 
+#define _tcsdec     _strdec
+#define _tcsinc     _strinc
+#define _tcsnbcnt   _strncnt
+#define _tcsnccnt   _strncnt
+#define _tcsnextc   _strnextc
+#define _tcsninc    _strninc
+#define _tcsspnp    _strspnp
+#define _strdec(_str1, _str2) ((_str1)>=(_str2) ? NULL : (_str2)-1)
+#define _strinc(_str)  ((_str)+1)
+#define _strnextc(_str) ((unsigned int) *(_str))
+#define _strninc(_str, _inc) (((_str)+(_inc)))
+#define _strncnt(_str, _cnt) ((strlen(_str)>_cnt) ? _count : strlen(_str))
+#define _strspnp(_str1, _str2) ((*((_str1)+strspn(_str1,_str2))) ? ((_str1)+strspn(_str1,_str2)) : NULL)
+
+#define _tchmod     _chmod
+#define _tcreat     _creat
+#define _tfindfirst _findfirst
+#define _tfindnext  _findnext
+#define _tmktemp    _mktemp
+#define _topen      _open
+#define _taccess    _access
+#define _tremove    remove
+#define _trename    rename
+#define _tsopen     _sopen
+#define _tsetlocale setlocale
+#define _tunlink    _unlink
+#define _tfinddata_t    _finddata_t
+
+
+#if 1  // defined __MSVCRT__
+/* Not in crtdll.dll. Define macros anyway? */
+#define _ttoi64     _atoi64
+#define _i64tot     _i64toa
+#define _ui64tot    _ui64toa
+#define _tcsnccoll  _strncoll
+#define _tcsncoll   _strncoll
+#define _tcsncicoll _strnicoll
+#define _tcsnicoll  _strnicoll
+#define _tfindfirsti64  _findfirsti64
+#define _tfindnexti64   _findnexti64
+#define _tfinddatai64_t _finddatai64_t
+#endif  /* __MSVCRT__ */
+
+#endif	/* Not _UNICODE */
+
+/*
+ * UNICODE a constant string when _UNICODE is defined else returns the string
+ * unmodified.  Also defined in w32api/winnt.h.
+ */
+#define _TEXT(x)	__TEXT(x)
+#define	_T(x)		__TEXT(x)
+
+#endif	/* Not _TCHAR_H_ */
+
diff --git a/Win32/bin/tcc/include/time.h b/Win32/bin/tcc/include/time.h
new file mode 100644
index 0000000..0879137
--- /dev/null
+++ b/Win32/bin/tcc/include/time.h
@@ -0,0 +1,219 @@
+/* 
+ * time.h
+ *
+ * Date and time functions and types.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin at bird.fu.is.saga-u.ac.jp>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef	_TIME_H_
+#define	_TIME_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#define __need_wchar_t
+#define __need_size_t
+#ifndef RC_INVOKED
+#include <stddef.h>
+#endif	/* Not RC_INVOKED */
+
+/*
+ * Need a definition of time_t.
+ */
+#include <sys/types.h>
+
+/*
+ * Number of clock ticks per second. A clock tick is the unit by which
+ * processor time is measured and is returned by 'clock'.
+ */
+#define	CLOCKS_PER_SEC	((clock_t)1000)
+#define	CLK_TCK		CLOCKS_PER_SEC
+
+
+#ifndef RC_INVOKED
+
+/*
+ * A type for storing the current time and date. This is the number of
+ * seconds since midnight Jan 1, 1970.
+ * NOTE: Normally this is defined by the above include of sys/types.h
+ */
+#ifndef _TIME_T_DEFINED
+typedef	long	time_t;
+#define _TIME_T_DEFINED
+#endif
+
+/*
+ * A type for measuring processor time (in clock ticks).
+ */
+#ifndef _CLOCK_T_DEFINED
+typedef	long	clock_t;
+#define _CLOCK_T_DEFINED
+#endif
+
+
+/*
+ * A structure for storing all kinds of useful information about the
+ * current (or another) time.
+ */
+struct tm
+{
+	int	tm_sec;		/* Seconds: 0-59 (K&R says 0-61?) */
+	int	tm_min;		/* Minutes: 0-59 */
+	int	tm_hour;	/* Hours since midnight: 0-23 */
+	int	tm_mday;	/* Day of the month: 1-31 */
+	int	tm_mon;		/* Months *since* january: 0-11 */
+	int	tm_year;	/* Years since 1900 */
+	int	tm_wday;	/* Days since Sunday (0-6) */
+	int	tm_yday;	/* Days since Jan. 1: 0-365 */
+	int	tm_isdst;	/* +1 Daylight Savings Time, 0 No DST,
+				 * -1 don't know */
+};
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+clock_t	clock (void);
+time_t	time (time_t*);
+double	difftime (time_t, time_t);
+time_t	mktime (struct tm*);
+
+/*
+ * These functions write to and return pointers to static buffers that may
+ * be overwritten by other function calls. Yikes!
+ *
+ * NOTE: localtime, and perhaps the others of the four functions grouped
+ * below may return NULL if their argument is not 'acceptable'. Also note
+ * that calling asctime with a NULL pointer will produce an Invalid Page
+ * Fault and crap out your program. Guess how I know. Hint: stat called on
+ * a directory gives 'invalid' times in st_atime etc...
+ */
+char*		asctime (const struct tm*);
+char*		ctime (const time_t*);
+struct tm*	gmtime (const time_t*);
+struct tm*	localtime (const time_t*);
+
+
+size_t	strftime (char*, size_t, const char*, const struct tm*);
+
+size_t	wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*);
+
+#ifndef __STRICT_ANSI__
+extern void	_tzset (void);
+
+#ifndef _NO_OLDNAMES
+extern void	tzset (void);
+#endif
+
+size_t	strftime(char*, size_t, const char*, const struct tm*);
+char*	_strdate(char*);
+char*	_strtime(char*);
+
+#endif	/* Not __STRICT_ANSI__ */
+
+/*
+ * _daylight: non zero if daylight savings time is used.
+ * _timezone: difference in seconds between GMT and local time.
+ * _tzname: standard/daylight savings time zone names (an array with two
+ *          elements).
+ */
+#ifdef __MSVCRT__
+
+/* These are for compatibility with pre-VC 5.0 suppied MSVCRT. */
+extern int*	__p__daylight (void);
+extern long*	__p__timezone (void);
+extern char**	__p__tzname (void);
+
+__MINGW_IMPORT int	_daylight;
+__MINGW_IMPORT long	_timezone;
+__MINGW_IMPORT char 	*_tzname[2];
+
+#else /* not __MSVCRT (ie. crtdll) */
+
+#ifndef __DECLSPEC_SUPPORTED
+
+extern int*	__imp__daylight_dll;
+extern long*	__imp__timezone_dll;
+extern char**	__imp__tzname;
+
+#define _daylight	(*__imp__daylight_dll)
+#define _timezone	(*__imp__timezone_dll)
+#define _tzname		(__imp__tzname)
+
+#else /* __DECLSPEC_SUPPORTED */
+
+__MINGW_IMPORT int	_daylight_dll;
+__MINGW_IMPORT long	_timezone_dll;
+__MINGW_IMPORT char*	_tzname[2];
+
+#define _daylight	_daylight_dll
+#define _timezone	_timezone_dll
+
+#endif /* __DECLSPEC_SUPPORTED */
+
+#endif /* not __MSVCRT__ */
+
+#ifndef _NO_OLDNAMES
+
+#ifdef __MSVCRT__
+
+/* These go in the oldnames import library for MSVCRT. */
+__MINGW_IMPORT int	daylight;
+__MINGW_IMPORT long	timezone;
+__MINGW_IMPORT char 	*tzname[2];
+
+#ifndef _WTIME_DEFINED
+
+/* wide function prototypes, also declared in wchar.h */
+
+wchar_t *	_wasctime(const struct tm*);
+wchar_t *	_wctime(const time_t*);
+wchar_t*	_wstrdate(wchar_t*);
+wchar_t*	_wstrtime(wchar_t*);
+
+#define _WTIME_DEFINED
+#endif /* _WTIME_DEFINED */ 
+
+
+#else /* not __MSVCRT__ */
+
+/* CRTDLL is royally messed up when it comes to these macros.
+   TODO: import and alias these via oldnames import library instead 
+   of macros.  */
+
+#define daylight        _daylight
+/* NOTE: timezone not defined because it would conflict with sys/timeb.h.
+   Also, tzname used to a be macro, but now it's in moldname. */
+__MINGW_IMPORT char 	*tzname[2];
+
+#endif /* not __MSVCRT__ */
+
+#endif	/* Not _NO_OLDNAMES */
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _TIME_H_ */
+
diff --git a/Win32/bin/tcc/include/unistd.h b/Win32/bin/tcc/include/unistd.h
new file mode 100644
index 0000000..65ce389
--- /dev/null
+++ b/Win32/bin/tcc/include/unistd.h
@@ -0,0 +1,10 @@
+/*
+ * This file is part of the Mingw32 package.
+ *
+ * unistd.h maps (roughly) to io.h
+ */
+
+#ifndef __STRICT_ANSI__
+#include <io.h>
+#endif
+
diff --git a/Win32/bin/tcc/include/values.h b/Win32/bin/tcc/include/values.h
new file mode 100644
index 0000000..a279b92
--- /dev/null
+++ b/Win32/bin/tcc/include/values.h
@@ -0,0 +1,4 @@
+/*
+ * TODO: Nothing here yet. Should provide UNIX compatibility constants
+ * comparible to those in limits.h and float.h.
+ */
diff --git a/Win32/bin/tcc/include/varargs.h b/Win32/bin/tcc/include/varargs.h
new file mode 100644
index 0000000..daee29e
--- /dev/null
+++ b/Win32/bin/tcc/include/varargs.h
@@ -0,0 +1,11 @@
+#ifndef _VARARGS_H
+#define _VARARGS_H
+
+#include <stdarg.h>
+
+#define va_dcl
+#define va_alist __va_alist
+#undef va_start
+#define va_start(ap) ap = __builtin_varargs_start
+
+#endif
diff --git a/Win32/bin/tcc/include/wchar.h b/Win32/bin/tcc/include/wchar.h
new file mode 100644
index 0000000..d458653
--- /dev/null
+++ b/Win32/bin/tcc/include/wchar.h
@@ -0,0 +1,318 @@
+/*
+ * wchar.h
+ *
+ * Defines of all functions for supporting wide characters. Actually it
+ * just includes all those headers, which is not a good thing to do from a
+ * processing time point of view, but it does mean that everything will be
+ * in sync.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Revision: 1.1 $
+ * $Author: afinney $
+ * $Date: 2006/03/09 17:23:48 $
+ *
+ */
+
+#ifndef	_WCHAR_H_
+#define	_WCHAR_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <sys/types.h>
+
+#define __need_size_t
+#define __need_wint_t
+#define __need_wchar_t
+#ifndef RC_INVOKED
+#include <stddef.h>
+#endif /* Not RC_INVOKED */
+
+#define WCHAR_MIN	0
+#define WCHAR_MAX	((wchar_t)-1)
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus 
+extern "C" {
+#endif
+
+#ifndef	__STRICT_ANSI__
+
+#ifndef	_FSIZE_T_DEFINED
+typedef	unsigned long	_fsize_t;
+#define _FSIZE_T_DEFINED
+#endif
+
+#ifndef _WFINDDATA_T_DEFINED
+struct _wfinddata_t {
+    	unsigned	attrib;
+    	time_t		time_create;	/* -1 for FAT file systems */
+    	time_t		time_access;	/* -1 for FAT file systems */
+    	time_t		time_write;
+    	_fsize_t	size;
+    	wchar_t		name[FILENAME_MAX];	/* may include spaces. */
+};
+struct _wfinddatai64_t {
+    unsigned    attrib;
+    time_t      time_create;
+    time_t      time_access;
+    time_t      time_write;
+    __int64     size;
+    wchar_t     name[FILENAME_MAX];
+};
+#define _WFINDDATA_T_DEFINED
+#endif
+
+/* Wide character versions. Also defined in io.h. */
+/* CHECK: I believe these only exist in MSVCRT, and not in CRTDLL. Also
+   applies to other wide character versions? */
+#if !defined (_WIO_DEFINED)
+#if defined (__MSVCRT__)
+int	 _waccess (const wchar_t*, int);
+int	_wchmod (const wchar_t*, int);
+int	_wcreat (const wchar_t*, int);
+long	_wfindfirst (wchar_t*, struct _wfinddata_t *);
+int	_wfindnext (long, struct _wfinddata_t *);
+int	_wunlink (const wchar_t*);
+int	_wopen (const wchar_t*, int, ...);
+int	_wsopen (const wchar_t*, int, int, ...);
+wchar_t* _wmktemp (wchar_t*);
+long	_wfindfirsti64 (const wchar_t*, struct _wfinddatai64_t*);
+int 	_wfindnexti64 (long, struct _wfinddatai64_t*);
+#endif /* defined (__MSVCRT__) */
+#define _WIO_DEFINED
+#endif /* _WIO_DEFINED */
+
+#ifndef _WSTDIO_DEFINED
+/* also in stdio.h - keep in sync */
+int	fwprintf (FILE*, const wchar_t*, ...);
+int	wprintf (const wchar_t*, ...);
+int	swprintf (wchar_t*, const wchar_t*, ...);
+int	_snwprintf (wchar_t*, size_t, const wchar_t*, ...);
+int	vfwprintf (FILE*, const wchar_t*, va_list);
+int	vwprintf (const wchar_t*, va_list);
+int	vswprintf (wchar_t*, const wchar_t*, va_list);
+int	_vsnwprintf (wchar_t*, size_t, const wchar_t*, va_list);
+int	fwscanf (FILE*, const wchar_t*, ...);
+int	wscanf (const wchar_t*, ...);
+int	swscanf (const wchar_t*, const wchar_t*, ...);
+wint_t	fgetwc (FILE*);
+wint_t	fputwc (wchar_t, FILE*);
+wint_t	ungetwc (wchar_t, FILE*);
+
+#ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
+int snwprintf(wchar_t* s, size_t n, const wchar_t*  format, ...);
+extern inline int vsnwprintf (wchar_t* s, size_t n, const wchar_t* format,
+			   va_list arg)
+  { return _vsnwprintf ( s, n, format, arg); }
+#endif
+
+#ifdef __MSVCRT__ 
+wchar_t* fgetws (wchar_t*, int, FILE*);
+int	fputws (const wchar_t*, FILE*);
+wint_t	getwc (FILE*);
+wint_t  getwchar (void);
+wchar_t* _getws (wchar_t*);
+wint_t	putwc (wint_t, FILE*);
+int	_putws (const wchar_t*);
+wint_t	putwchar (wint_t);
+
+FILE*	_wfopen (const wchar_t*, const wchar_t*);
+FILE*	_wfreopen (const wchar_t*, const wchar_t*, FILE*);
+FILE*   _wfsopen (const wchar_t*, const wchar_t*, int);
+wchar_t* _wtmpnam (wchar_t*);
+wchar_t* _wtempnam (const wchar_t*, const wchar_t*);
+int 	_wrename (const wchar_t*, const wchar_t*);
+int	_wremove (const wchar_t*)
+
+FILE*	  _wpopen (const wchar_t*, const wchar_t*)
+void	  _wperror (const wchar_t*);
+#endif	/* __MSVCRT__ */
+#define _WSTDIO_DEFINED
+#endif /* _WSTDIO_DEFINED */
+
+#ifndef _WDIRECT_DEFINED
+/* Also in direct.h */
+#ifdef __MSVCRT__ 
+int	  _wchdir (const wchar_t*);
+wchar_t*  _wgetcwd (wchar_t*, int);
+wchar_t*  _wgetdcwd (int, wchar_t*, int);
+int	  _wmkdir (const wchar_t*);
+int	  _wrmdir (const wchar_t*);
+#endif	/* __MSVCRT__ */
+#define _WDIRECT_DEFINED
+#endif /* _WDIRECT_DEFINED */
+
+#ifndef _STAT_DEFINED
+/*
+ * The structure manipulated and returned by stat and fstat.
+ *
+ * NOTE: If called on a directory the values in the time fields are not only
+ * invalid, they will cause localtime et. al. to return NULL. And calling
+ * asctime with a NULL pointer causes an Invalid Page Fault. So watch it!
+ */
+struct _stat
+{
+	_dev_t	st_dev;		/* Equivalent to drive number 0=A 1=B ... */
+	_ino_t	st_ino;		/* Always zero ? */
+	_mode_t	st_mode;	/* See above constants */
+	short	st_nlink;	/* Number of links. */
+	short	st_uid;		/* User: Maybe significant on NT ? */
+	short	st_gid;		/* Group: Ditto */
+	_dev_t	st_rdev;	/* Seems useless (not even filled in) */
+	_off_t	st_size;	/* File size in bytes */
+	time_t	st_atime;	/* Accessed date (always 00:00 hrs local
+				 * on FAT) */
+	time_t	st_mtime;	/* Modified time */
+	time_t	st_ctime;	/* Creation time */
+};
+
+struct stat
+{
+	_dev_t	st_dev;		/* Equivalent to drive number 0=A 1=B ... */
+	_ino_t	st_ino;		/* Always zero ? */
+	_mode_t	st_mode;	/* See above constants */
+	short	st_nlink;	/* Number of links. */
+	short	st_uid;		/* User: Maybe significant on NT ? */
+	short	st_gid;		/* Group: Ditto */
+	_dev_t	st_rdev;	/* Seems useless (not even filled in) */
+	_off_t	st_size;	/* File size in bytes */
+	time_t	st_atime;	/* Accessed date (always 00:00 hrs local
+				 * on FAT) */
+	time_t	st_mtime;	/* Modified time */
+	time_t	st_ctime;	/* Creation time */
+};
+#if defined (__MSVCRT__)
+struct _stati64 {
+    _dev_t st_dev;
+    _ino_t st_ino;
+    unsigned short st_mode;
+    short st_nlink;
+    short st_uid;
+    short st_gid;
+    _dev_t st_rdev;
+    __int64 st_size;
+    time_t st_atime;
+    time_t st_mtime;
+    time_t st_ctime;
+    };
+#endif  /* __MSVCRT__ */
+#define _STAT_DEFINED
+#endif /* _STAT_DEFINED */
+
+#if !defined ( _WSTAT_DEFINED)
+/* also declared in sys/stat.h */
+#if defined __MSVCRT__
+int	_wstat (const wchar_t*, struct _stat*);
+int	_wstati64 (const wchar_t*, struct _stati64*);
+#endif  /* __MSVCRT__ */
+#define _WSTAT_DEFINED
+#endif /* ! _WSTAT_DEFIND  */
+
+#ifndef _WTIME_DEFINED
+#ifdef __MSVCRT__
+/* wide function prototypes, also declared in time.h */
+wchar_t*	_wasctime (const struct tm*);
+wchar_t*	_wctime (const time_t*);
+wchar_t*	_wstrdate (wchar_t*);
+wchar_t*	_wstrtime (wchar_t*);
+#endif /* __MSVCRT__ */
+size_t		wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*);
+#define _WTIME_DEFINED
+#endif /* _WTIME_DEFINED */ 
+
+#ifndef _WLOCALE_DEFINED  /* also declared in locale.h */
+wchar_t* _wsetlocale (int, const wchar_t*);
+#define _WLOCALE_DEFINED
+#endif
+
+#ifndef _WSTDLIB_DEFINED /* also declared in stdlib.h */
+long	wcstol	(const wchar_t*, wchar_t**, int);
+unsigned long	wcstoul (const wchar_t*, wchar_t**, int);
+double	wcstod	(const wchar_t*, wchar_t**);
+#if !defined __NO_ISOCEXT /* extern stub in static libmingwex.a */
+extern __inline__ float wcstof( const wchar_t *nptr, wchar_t **endptr)
+{  return (wcstod(nptr, endptr)); }
+#endif /* __NO_ISOCEXT */
+#define  _WSTDLIB_DEFINED
+#endif
+
+
+#ifndef	_NO_OLDNAMES
+
+/* Wide character versions. Also declared in io.h. */
+/* CHECK: Are these in the oldnames???  NO! */
+#if (0)
+int		waccess (const wchar_t *, int);
+int		wchmod (const wchar_t *, int);
+int		wcreat (const wchar_t *, int);
+long		wfindfirst (wchar_t *, struct _wfinddata_t *);
+int		wfindnext (long, struct _wfinddata_t *);
+int		wunlink (const wchar_t *);
+int		wrename (const wchar_t *, const wchar_t *);
+int		wremove (const wchar_t *);
+int		wopen (const wchar_t *, int, ...);
+int		wsopen (const wchar_t *, int, int, ...);
+wchar_t*	wmktemp (wchar_t *);
+#endif
+#endif /* _NO_OLDNAMES */
+
+#endif /* not __STRICT_ANSI__ */
+
+/* These are resolved by -lmsvcp60 */
+/* If you don't have msvcp60.dll in your windows system directory, you can
+   easily obtain it with a search from your favorite search engine. */
+typedef int mbstate_t;
+typedef wchar_t _Wint_t;
+
+wint_t  btowc(int);
+size_t  mbrlen(const char *, size_t, mbstate_t *);
+size_t  mbrtowc(wchar_t *, const char *, size_t, mbstate_t *);
+size_t  mbsrtowcs(wchar_t *, const char **, size_t, mbstate_t *);
+
+size_t  wcrtomb(char *, wchar_t, mbstate_t *);
+size_t  wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *);
+int  	wctob(wint_t);
+
+#ifndef __NO_ISOCEXT /* these need static lib libmingwex.a */
+extern inline int fwide(FILE* stream, int mode) {return -1;} /* limited to byte orientation */ 
+extern inline int mbsinit(const mbstate_t* ps) {return 1;}
+wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n);
+wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n);
+int wmemcmp(const wchar_t* s1, const wchar_t * s2, size_t n);
+wchar_t* wmemcpy(wchar_t* __restrict__ s1, const wchar_t* __restrict__ s2,
+		 size_t n);
+wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n);
+long long wcstoll(const wchar_t* __restrict__ nptr,
+		  wchar_t** __restrict__ endptr, int base);
+unsigned long long wcstoull(const wchar_t* __restrict__ nptr,
+			    wchar_t ** __restrict__ endptr, int base);
+
+#endif /* __NO_ISOCEXT */
+
+
+#ifdef __cplusplus
+}	/* end of extern "C" */
+#endif
+
+#endif /* Not RC_INVOKED */
+
+#endif /* not _WCHAR_H_ */
+
diff --git a/Win32/bin/tcc/include/wctype.h b/Win32/bin/tcc/include/wctype.h
new file mode 100644
index 0000000..291a5d1
--- /dev/null
+++ b/Win32/bin/tcc/include/wctype.h
@@ -0,0 +1,127 @@
+/* 
+ * wctype.h
+ *
+ * Functions for testing wide character types and converting characters.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Mumit Khan <khan at xraylith.wisc.edu>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef _WCTYPE_H_
+#define _WCTYPE_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#define	__need_wchar_t
+#define	__need_wint_t
+#ifndef RC_INVOKED
+#include <stddef.h>
+#endif	/* Not RC_INVOKED */
+
+/*
+ * The following flags are used to tell iswctype and _isctype what character
+ * types you are looking for.
+ */
+#define	_UPPER		0x0001
+#define	_LOWER		0x0002
+#define	_DIGIT		0x0004
+#define	_SPACE		0x0008
+#define	_PUNCT		0x0010
+#define	_CONTROL	0x0020
+#define	_BLANK		0x0040
+#define	_HEX		0x0080
+#define	_LEADBYTE	0x8000
+
+#define	_ALPHA		0x0103
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef WEOF
+#define	WEOF	(wchar_t)(0xFFFF)
+#endif
+
+#ifndef _WCTYPE_T_DEFINED
+typedef wchar_t wctype_t;
+#define _WCTYPE_T_DEFINED
+#endif
+
+/* Wide character equivalents - also in ctype.h */
+int	iswalnum(wint_t);
+int	iswalpha(wint_t);
+int	iswascii(wint_t);
+int	iswcntrl(wint_t);
+int	iswctype(wint_t, wctype_t);
+int	is_wctype(wint_t, wctype_t);	/* Obsolete! */
+int	iswdigit(wint_t);
+int	iswgraph(wint_t);
+int	iswlower(wint_t);
+int	iswprint(wint_t);
+int	iswpunct(wint_t);
+int	iswspace(wint_t);
+int	iswupper(wint_t);
+int	iswxdigit(wint_t);
+
+wchar_t	towlower(wchar_t);
+wchar_t	towupper(wchar_t);
+
+int	isleadbyte (int);
+
+/* Also in ctype.h */
+
+__MINGW_IMPORT unsigned short _ctype[];
+#ifdef __MSVCRT__
+__MINGW_IMPORT unsigned short* _pctype;
+#else
+__MINGW_IMPORT unsigned short* _pctype_dll;
+#define  _pctype _pctype_dll
+#endif
+
+#if !(defined(__NO_CTYPE_INLINES) || defined(__WCTYPE_INLINES_DEFINED))
+#define __WCTYPE_INLINES_DEFINED
+extern inline int iswalnum(wint_t wc) {return (iswctype(wc,_ALPHA|_DIGIT));}
+extern inline int iswalpha(wint_t wc) {return (iswctype(wc,_ALPHA));}
+extern inline int iswascii(wint_t wc) {return (((unsigned)wc & 0x7F) ==0);}
+extern inline int iswcntrl(wint_t wc) {return (iswctype(wc,_CONTROL));}
+extern inline int iswdigit(wint_t wc) {return (iswctype(wc,_DIGIT));}
+extern inline int iswgraph(wint_t wc) {return (iswctype(wc,_PUNCT|_ALPHA|_DIGIT));}
+extern inline int iswlower(wint_t wc) {return (iswctype(wc,_LOWER));}
+extern inline int iswprint(wint_t wc) {return (iswctype(wc,_BLANK|_PUNCT|_ALPHA|_DIGIT));}
+extern inline int iswpunct(wint_t wc) {return (iswctype(wc,_PUNCT));}
+extern inline int iswspace(wint_t wc) {return (iswctype(wc,_SPACE));}
+extern inline int iswupper(wint_t wc) {return (iswctype(wc,_UPPER));}
+extern inline int iswxdigit(wint_t wc) {return (iswctype(wc,_HEX));}
+extern inline int isleadbyte(int c) {return (_pctype[(unsigned char)(c)] & _LEADBYTE);}
+#endif /* !(defined(__NO_CTYPE_INLINES) || defined(__WCTYPE_INLINES_DEFINED)) */
+
+
+typedef wchar_t wctrans_t;
+wint_t 		towctrans(wint_t, wctrans_t);
+wctrans_t	wctrans(const char*);
+wctype_t	wctype(const char*);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _WCTYPE_H_ */
+
diff --git a/Win32/bin/tcc/include/winapi/basetsd.h b/Win32/bin/tcc/include/winapi/basetsd.h
new file mode 100644
index 0000000..1b18f9f
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/basetsd.h
@@ -0,0 +1,119 @@
+#ifndef _BASETSD_H
+#define _BASETSD_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __GNUC__
+#ifndef __int64
+#define __int64 long long
+#endif
+#endif
+
+#if defined(_WIN64)
+#define __int3264   __int64
+#define ADDRESS_TAG_BIT 0x40000000000UI64
+#else /*  !_WIN64 */
+#define __int3264   __int32
+#define ADDRESS_TAG_BIT 0x80000000UL
+#define HandleToUlong( h ) ((ULONG)(ULONG_PTR)(h) )
+#define HandleToLong( h ) ((LONG)(LONG_PTR) (h) )
+#define LongToHandle( h) ((HANDLE)(LONG_PTR) (h))
+#define PtrToUlong( p ) ((ULONG)(ULONG_PTR) (p) )
+#define PtrToLong( p ) ((LONG)(LONG_PTR) (p) )
+#define PtrToUint( p ) ((UINT)(UINT_PTR) (p) )
+#define PtrToInt( p ) ((INT)(INT_PTR) (p) )
+#define PtrToUshort( p ) ((unsigned short)(ULONG_PTR)(p) )
+#define PtrToShort( p ) ((short)(LONG_PTR)(p) )
+#define IntToPtr( i )    ((VOID*)(INT_PTR)((int)i))
+#define UIntToPtr( ui )  ((VOID*)(UINT_PTR)((unsigned int)ui))
+#define LongToPtr( l )   ((VOID*)(LONG_PTR)((long)l))
+#define ULongToPtr( ul )  ((VOID*)(ULONG_PTR)((unsigned long)ul))
+#endif /* !_WIN64 */
+
+#define UlongToPtr(ul) ULongToPtr(ul)
+#define UintToPtr(ui) UIntToPtr(ui)
+#define MAXUINT_PTR  (~((UINT_PTR)0))
+#define MAXINT_PTR   ((INT_PTR)(MAXUINT_PTR >> 1))
+#define MININT_PTR   (~MAXINT_PTR)
+#define MAXULONG_PTR (~((ULONG_PTR)0))
+#define MAXLONG_PTR  ((LONG_PTR)(MAXULONG_PTR >> 1))
+#define MINLONG_PTR  (~MAXLONG_PTR)
+#define MAXUHALF_PTR ((UHALF_PTR)~0)
+#define MAXHALF_PTR  ((HALF_PTR)(MAXUHALF_PTR >> 1))
+#define MINHALF_PTR  (~MAXHALF_PTR)
+
+#ifndef RC_INVOKED
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef int LONG32, *PLONG32;
+#ifndef XFree86Server
+typedef int INT32, *PINT32;
+#endif /* ndef XFree86Server */
+typedef unsigned int ULONG32, *PULONG32;
+typedef unsigned int DWORD32, *PDWORD32;
+typedef unsigned int UINT32, *PUINT32;
+
+#if defined(_WIN64)
+typedef __int64 INT_PTR, *PINT_PTR;
+typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
+typedef __int64 LONG_PTR, *PLONG_PTR;
+typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
+typedef unsigned __int64 HANDLE_PTR;
+typedef unsigned int UHALF_PTR, *PUHALF_PTR;
+typedef int HALF_PTR, *PHALF_PTR;
+
+#if 0 /* TODO when WIN64 is here */
+inline unsigned long HandleToUlong(const void* h )
+    { return((unsigned long) h ); }
+inline long HandleToLong( const void* h )
+    { return((long) h ); }
+inline void* LongToHandle( const long h )
+    { return((void*) (INT_PTR) h ); }
+inline unsigned long PtrToUlong( const void* p)
+    { return((unsigned long) p ); }
+inline unsigned int PtrToUint( const void* p )
+    { return((unsigned int) p ); }
+inline unsigned short PtrToUshort( const void* p )
+    { return((unsigned short) p ); }
+inline long PtrToLong( const void* p )
+    { return((long) p ); }
+inline int PtrToInt( const void* p )
+    { return((int) p ); }
+inline short PtrToShort( const void* p )
+    { return((short) p ); }
+inline void* IntToPtr( const int i )
+    { return( (void*)(INT_PTR)i ); }
+inline void* UIntToPtr(const unsigned int ui)
+    { return( (void*)(UINT_PTR)ui ); }
+inline void* LongToPtr( const long l )
+    { return( (void*)(LONG_PTR)l ); }
+inline void* ULongToPtr( const unsigned long ul )
+    { return( (void*)(ULONG_PTR)ul ); }
+#endif /* 0_ */
+
+#else /*  !_WIN64 */
+typedef  int INT_PTR, *PINT_PTR;
+typedef  unsigned int UINT_PTR, *PUINT_PTR;
+typedef  long LONG_PTR, *PLONG_PTR;
+typedef  unsigned long ULONG_PTR, *PULONG_PTR;
+typedef unsigned short UHALF_PTR, *PUHALF_PTR;
+typedef short HALF_PTR, *PHALF_PTR;
+typedef unsigned long HANDLE_PTR;
+#endif /* !_WIN64 */
+
+typedef ULONG_PTR SIZE_T, *PSIZE_T;
+typedef LONG_PTR SSIZE_T, *PSSIZE_T;
+typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
+typedef __int64 LONG64, *PLONG64;
+typedef __int64 INT64,  *PINT64;
+typedef unsigned __int64 ULONG64, *PULONG64;
+typedef unsigned __int64 DWORD64, *PDWORD64;
+typedef unsigned __int64 UINT64,  *PUINT64;
+#ifdef __cplusplus
+}
+#endif
+#endif /* !RC_INVOKED */
+
+#endif /* _BASETSD_H */
diff --git a/Win32/bin/tcc/include/winapi/basetyps.h b/Win32/bin/tcc/include/winapi/basetyps.h
new file mode 100644
index 0000000..4d36bc9
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/basetyps.h
@@ -0,0 +1,144 @@
+#ifndef _BASETYPS_H
+#define _BASETYPS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __OBJC__
+#ifdef __cplusplus
+#define EXTERN_C extern "C"
+#else
+#define EXTERN_C extern
+#endif  /* __cplusplus */ 
+#define STDMETHODCALLTYPE	__stdcall
+#define STDMETHODVCALLTYPE	__cdecl
+#define STDAPICALLTYPE	__stdcall
+#define STDAPIVCALLTYPE	__cdecl
+#define STDAPI	EXTERN_C HRESULT STDAPICALLTYPE
+#define STDAPI_(t)	EXTERN_C t STDAPICALLTYPE
+#define STDMETHODIMP	HRESULT STDMETHODCALLTYPE
+#define STDMETHODIMP_(t)	t STDMETHODCALLTYPE
+#define STDAPIV	EXTERN_C HRESULT STDAPIVCALLTYPE
+#define STDAPIV_(t)	EXTERN_C t STDAPIVCALLTYPE
+#define STDMETHODIMPV	HRESULT STDMETHODVCALLTYPE
+#define STDMETHODIMPV_(t)	t STDMETHODVCALLTYPE
+#define interface	struct
+#if defined(__cplusplus) && !defined(CINTERFACE)
+#define STDMETHOD(m)	virtual HRESULT STDMETHODCALLTYPE m
+#define STDMETHOD_(t,m)	virtual t STDMETHODCALLTYPE m
+#define PURE	=0
+#define THIS_
+#define THIS	void
+/*
+ __attribute__((com_interface)) is obsolete in __GNUC__ >= 3
+ g++ vtables are now COM-compatible by default
+*/
+#if defined(__GNUC__) &&  __GNUC__ < 3 && !defined(NOCOMATTRIBUTE)
+#define DECLARE_INTERFACE(i) interface __attribute__((com_interface)) i
+#define DECLARE_INTERFACE_(i,b) interface __attribute__((com_interface)) i : public b
+#else
+#define DECLARE_INTERFACE(i) interface i
+#define DECLARE_INTERFACE_(i,b) interface i : public b
+#endif
+#else
+#define STDMETHOD(m)	HRESULT(STDMETHODCALLTYPE *m)
+#define STDMETHOD_(t,m)	t(STDMETHODCALLTYPE *m)
+#define PURE
+#define THIS_	INTERFACE *,
+#define THIS	INTERFACE *
+#ifndef CONST_VTABLE
+#define CONST_VTABLE
+#endif
+#define DECLARE_INTERFACE(i) \
+typedef interface i { CONST_VTABLE struct i##Vtbl *lpVtbl; } i; \
+typedef CONST_VTABLE struct i##Vtbl i##Vtbl; \
+CONST_VTABLE struct i##Vtbl
+#define DECLARE_INTERFACE_(i,b) DECLARE_INTERFACE(i)
+#endif
+#define BEGIN_INTERFACE
+#define END_INTERFACE
+
+#define FWD_DECL(i) typedef interface i i
+#if defined(__cplusplus) && !defined(CINTERFACE)
+#define IENUM_THIS(T)
+#define IENUM_THIS_(T)
+#else
+#define IENUM_THIS(T) T*
+#define IENUM_THIS_(T) T*,
+#endif
+#define DECLARE_ENUMERATOR_(I,T) \
+DECLARE_INTERFACE_(I,IUnknown) \
+{ \
+	STDMETHOD(QueryInterface)(IENUM_THIS_(I) REFIID,PVOID*) PURE; \
+	STDMETHOD_(ULONG,AddRef)(IENUM_THIS(I)) PURE; \
+	STDMETHOD_(ULONG,Release)(IENUM_THIS(I)) PURE; \
+	STDMETHOD(Next)(IENUM_THIS_(I) ULONG,T*,ULONG*) PURE; \
+	STDMETHOD(Skip)(IENUM_THIS_(I) ULONG) PURE; \
+	STDMETHOD(Reset)(IENUM_THIS(I)) PURE; \
+	STDMETHOD(Clone)(IENUM_THIS_(I) I**) PURE; \
+}
+#define DECLARE_ENUMERATOR(T) DECLARE_ENUMERATOR_(IEnum##T,T)
+
+#endif /* __OBJC__ */
+
+#ifndef _GUID_DEFINED /* also defined in winnt.h */
+#define _GUID_DEFINED
+typedef struct _GUID
+{
+    unsigned long Data1;
+    unsigned short Data2;
+    unsigned short Data3;
+    unsigned char Data4[8];
+} GUID,*REFGUID,*LPGUID;
+#endif /* _GUID_DEFINED */
+#ifndef UUID_DEFINED
+#define UUID_DEFINED
+typedef GUID UUID;
+#endif /* UUID_DEFINED */
+typedef GUID IID;
+typedef GUID CLSID;
+typedef CLSID *LPCLSID;
+typedef IID *LPIID;
+typedef IID *REFIID;
+typedef CLSID *REFCLSID;
+typedef GUID FMTID;
+typedef FMTID *REFFMTID;
+typedef unsigned long error_status_t;
+#define uuid_t UUID
+typedef unsigned long PROPID;
+
+#ifndef _REFGUID_DEFINED
+#if defined (__cplusplus) && !defined (CINTERFACE)
+#define REFGUID const GUID&
+#define REFIID const IID&
+#define REFCLSID const CLSID&
+#else
+#define REFGUID const GUID* const
+#define REFIID const IID* const
+#define REFCLSID const CLSID* const
+#endif
+#define _REFGUID_DEFINED
+#define _REFGIID_DEFINED
+#define _REFCLSID_DEFINED
+#endif
+#ifndef GUID_SECTION
+#define GUID_SECTION ".text"
+#endif
+#ifdef __GNUC__
+#define GUID_SECT __attribute__ ((section (GUID_SECTION)))
+#else
+#define GUID_SECT
+#endif
+#if !defined(INITGUID) || (defined(INITGUID) && defined(__cplusplus))
+#define GUID_EXT EXTERN_C
+#else
+#define GUID_EXT
+#endif
+#ifdef INITGUID
+#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
+#define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
+#else
+#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n
+#define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
+#endif
+#endif
diff --git a/Win32/bin/tcc/include/winapi/winbase.h b/Win32/bin/tcc/include/winapi/winbase.h
new file mode 100644
index 0000000..edd1776
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/winbase.h
@@ -0,0 +1,1852 @@
+#ifndef _WINBASE_H
+#define _WINBASE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define WINBASEAPI DECLSPEC_IMPORT
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SP_SERIALCOMM 1
+#define PST_UNSPECIFIED	0
+#define PST_RS232	1
+#define PST_PARALLELPORT	2
+#define PST_RS422	3
+#define PST_RS423	4
+#define PST_RS449	5
+#define PST_MODEM	6
+#define PST_FAX	0x21
+#define PST_SCANNER	0x22
+#define PST_NETWORK_BRIDGE	0x100
+#define PST_LAT	0x101
+#define PST_TCPIP_TELNET	0x102
+#define PST_X25	0x103
+#define BAUD_075	1
+#define BAUD_110	2
+#define BAUD_134_5	4
+#define BAUD_150	8
+#define BAUD_300	16
+#define BAUD_600	32
+#define BAUD_1200	64
+#define BAUD_1800	128
+#define BAUD_2400	256
+#define BAUD_4800	512
+#define BAUD_7200	1024
+#define BAUD_9600	2048
+#define BAUD_14400	4096
+#define BAUD_19200	8192
+#define BAUD_38400	16384
+#define BAUD_56K	32768
+#define BAUD_128K	65536
+#define BAUD_115200	131072
+#define BAUD_57600	262144
+#define BAUD_USER	0x10000000
+#define PCF_DTRDSR	1
+#define PCF_RTSCTS	2
+#define PCF_RLSD	4
+#define PCF_PARITY_CHECK	8
+#define PCF_XONXOFF	16
+#define PCF_SETXCHAR	32
+#define PCF_TOTALTIMEOUTS	64
+#define PCF_INTTIMEOUTS	128
+#define PCF_SPECIALCHARS	256
+#define PCF_16BITMODE	512
+#define SP_PARITY	1
+#define SP_BAUD	2
+#define SP_DATABITS	4
+#define SP_STOPBITS	8
+#define SP_HANDSHAKING	16
+#define SP_PARITY_CHECK	32
+#define SP_RLSD	64
+#define DATABITS_5	1
+#define DATABITS_6	2
+#define DATABITS_7	4
+#define DATABITS_8	8
+#define DATABITS_16	16
+#define DATABITS_16X	32
+#define STOPBITS_10	1
+#define STOPBITS_15	2
+#define STOPBITS_20	4
+#define PARITY_NONE	256
+#define PARITY_ODD	512
+#define PARITY_EVEN	1024
+#define PARITY_MARK	2048
+#define PARITY_SPACE	4096
+#define EXCEPTION_DEBUG_EVENT	1
+#define CREATE_THREAD_DEBUG_EVENT	2
+#define CREATE_PROCESS_DEBUG_EVENT	3
+#define EXIT_THREAD_DEBUG_EVENT	4
+#define EXIT_PROCESS_DEBUG_EVENT	5
+#define LOAD_DLL_DEBUG_EVENT	6
+#define UNLOAD_DLL_DEBUG_EVENT	7
+#define OUTPUT_DEBUG_STRING_EVENT	8
+#define RIP_EVENT	9
+#define HFILE_ERROR ((HFILE)-1)
+#define FILE_BEGIN	0
+#define FILE_CURRENT	1
+#define FILE_END	2
+#define INVALID_SET_FILE_POINTER	((DWORD)-1)
+#define OF_READ 0
+#define OF_READWRITE	2
+#define OF_WRITE	1
+#define OF_SHARE_COMPAT	0
+#define OF_SHARE_DENY_NONE	64
+#define OF_SHARE_DENY_READ	48
+#define OF_SHARE_DENY_WRITE	32
+#define OF_SHARE_EXCLUSIVE	16
+#define OF_CANCEL	2048
+#define OF_CREATE	4096
+#define OF_DELETE	512
+#define OF_EXIST	16384
+#define OF_PARSE	256
+#define OF_PROMPT	8192
+#define OF_REOPEN	32768
+#define OF_VERIFY	1024
+#define NMPWAIT_NOWAIT	1
+#define NMPWAIT_WAIT_FOREVER	(-1)
+#define NMPWAIT_USE_DEFAULT_WAIT	0
+#define CE_BREAK	16
+#define CE_DNS	2048
+#define CE_FRAME	8
+#define CE_IOE	1024
+#define CE_MODE	32768
+#define CE_OOP	4096
+#define CE_OVERRUN	2
+#define CE_PTO	512
+#define CE_RXOVER	1
+#define CE_RXPARITY	4
+#define CE_TXFULL	256
+#define PROGRESS_CONTINUE	0
+#define PROGRESS_CANCEL	1
+#define PROGRESS_STOP	2
+#define PROGRESS_QUIET	3
+#define CALLBACK_CHUNK_FINISHED	0
+#define CALLBACK_STREAM_SWITCH	1
+#define COPY_FILE_FAIL_IF_EXISTS	1
+#define COPY_FILE_RESTARTABLE	2
+#define OFS_MAXPATHNAME 128
+#define DUPLICATE_CLOSE_SOURCE  1
+#define DUPLICATE_SAME_ACCESS   2
+#define FILE_MAP_ALL_ACCESS     0xf001f
+#define FILE_MAP_READ   4
+#define FILE_MAP_WRITE  2
+#define FILE_MAP_COPY   1
+#define MUTEX_ALL_ACCESS	0x1f0001
+#define MUTEX_MODIFY_STATE	1
+#define SEMAPHORE_ALL_ACCESS	0x1f0003
+#define SEMAPHORE_MODIFY_STATE	2
+#define EVENT_ALL_ACCESS	0x1f0003
+#define EVENT_MODIFY_STATE	2
+#define PIPE_ACCESS_DUPLEX      3
+#define PIPE_ACCESS_INBOUND     1
+#define PIPE_ACCESS_OUTBOUND    2
+#define PIPE_TYPE_BYTE	0
+#define PIPE_TYPE_MESSAGE	4
+#define PIPE_READMODE_BYTE	0
+#define PIPE_READMODE_MESSAGE	2
+#define PIPE_WAIT	0
+#define PIPE_NOWAIT	1
+#define PIPE_CLIENT_END 0
+#define PIPE_SERVER_END 1
+#define PIPE_UNLIMITED_INSTANCES 255
+#define CREATE_DEFAULT_ERROR_MODE	67108864
+#define DEBUG_PROCESS	1
+#define DEBUG_ONLY_THIS_PROCESS	2
+#define CREATE_SUSPENDED	4
+#define DETACHED_PROCESS	8
+#define CREATE_NEW_CONSOLE	16
+#define NORMAL_PRIORITY_CLASS	32
+#define IDLE_PRIORITY_CLASS	64
+#define HIGH_PRIORITY_CLASS	128
+#define REALTIME_PRIORITY_CLASS	256
+#define CREATE_NEW_PROCESS_GROUP	512
+#define CREATE_UNICODE_ENVIRONMENT	1024
+#define CREATE_SEPARATE_WOW_VDM	2048
+#define CREATE_SHARED_WOW_VDM 4096
+#define CREATE_FORCEDOS 8192
+#define CREATE_NO_WINDOW 0x8000000
+#define CONSOLE_TEXTMODE_BUFFER 1
+#define CREATE_NEW	1
+#define CREATE_ALWAYS	2
+#define OPEN_EXISTING	3
+#define OPEN_ALWAYS	4
+#define TRUNCATE_EXISTING	5
+#define FILE_FLAG_WRITE_THROUGH	0x80000000
+#define FILE_FLAG_OVERLAPPED	1073741824
+#define FILE_FLAG_NO_BUFFERING	536870912
+#define FILE_FLAG_RANDOM_ACCESS	268435456
+#define FILE_FLAG_SEQUENTIAL_SCAN	134217728
+#define FILE_FLAG_DELETE_ON_CLOSE	67108864
+#define FILE_FLAG_BACKUP_SEMANTICS	33554432
+#define FILE_FLAG_POSIX_SEMANTICS	16777216
+#define FILE_FLAG_OPEN_REPARSE_POINT	2097152
+#define FILE_FLAG_OPEN_NO_RECALL	1048576
+#define CLRDTR 6
+#define CLRRTS 4
+#define SETDTR 5
+#define SETRTS 3
+#define SETXOFF 1
+#define SETXON 2
+#define SETBREAK 8
+#define CLRBREAK 9
+#define STILL_ACTIVE 0x103
+#define FIND_FIRST_EX_CASE_SENSITIVE 1
+#define SCS_32BIT_BINARY 0
+#define SCS_DOS_BINARY 1
+#define SCS_OS216_BINARY 5
+#define SCS_PIF_BINARY 3
+#define SCS_POSIX_BINARY 4
+#define SCS_WOW_BINARY 2
+#define MAX_COMPUTERNAME_LENGTH 15
+#define HW_PROFILE_GUIDLEN	39
+#define MAX_PROFILE_LEN	80
+#define DOCKINFO_UNDOCKED	1
+#define DOCKINFO_DOCKED	2
+#define DOCKINFO_USER_SUPPLIED	4
+#define DOCKINFO_USER_UNDOCKED	(DOCKINFO_USER_SUPPLIED|DOCKINFO_UNDOCKED)
+#define DOCKINFO_USER_DOCKED	(DOCKINFO_USER_SUPPLIED|DOCKINFO_DOCKED)
+#define DRIVE_REMOVABLE 2
+#define DRIVE_FIXED 3
+#define DRIVE_REMOTE 4
+#define DRIVE_CDROM 5
+#define DRIVE_RAMDISK 6
+#define DRIVE_UNKNOWN 0
+#define DRIVE_NO_ROOT_DIR 1
+#define FILE_TYPE_UNKNOWN 0
+#define FILE_TYPE_DISK 1
+#define FILE_TYPE_CHAR 2
+#define FILE_TYPE_PIPE 3
+#define FILE_TYPE_REMOTE 0x8000
+#define HANDLE_FLAG_INHERIT 1
+#define HANDLE_FLAG_PROTECT_FROM_CLOSE 2
+#define STD_INPUT_HANDLE (DWORD)(0xfffffff6)
+#define STD_OUTPUT_HANDLE (DWORD)(0xfffffff5)
+#define STD_ERROR_HANDLE (DWORD)(0xfffffff4)
+#define INVALID_HANDLE_VALUE (HANDLE)(-1)
+#define GET_TAPE_MEDIA_INFORMATION 0
+#define GET_TAPE_DRIVE_INFORMATION 1
+#define SET_TAPE_MEDIA_INFORMATION 0
+#define SET_TAPE_DRIVE_INFORMATION 1
+#define THREAD_PRIORITY_ABOVE_NORMAL 1
+#define THREAD_PRIORITY_BELOW_NORMAL (-1)
+#define THREAD_PRIORITY_HIGHEST 2
+#define THREAD_PRIORITY_IDLE (-15)
+#define THREAD_PRIORITY_LOWEST (-2)
+#define THREAD_PRIORITY_NORMAL 0
+#define THREAD_PRIORITY_TIME_CRITICAL 15
+#define THREAD_PRIORITY_ERROR_RETURN 2147483647
+#define TIME_ZONE_ID_UNKNOWN 0
+#define TIME_ZONE_ID_STANDARD 1
+#define TIME_ZONE_ID_DAYLIGHT 2
+#define TIME_ZONE_ID_INVALID 0xFFFFFFFF
+#define FS_CASE_IS_PRESERVED 2
+#define FS_CASE_SENSITIVE 1
+#define FS_UNICODE_STORED_ON_DISK 4
+#define FS_PERSISTENT_ACLS 8
+#define FS_FILE_COMPRESSION 16
+#define FS_VOL_IS_COMPRESSED 32768
+#define GMEM_FIXED 0
+#define GMEM_MOVEABLE 2
+#define GMEM_MODIFY 128
+#define GPTR 64
+#define GHND 66
+#define GMEM_DDESHARE 8192
+#define GMEM_DISCARDABLE 256
+#define GMEM_LOWER 4096
+#define GMEM_NOCOMPACT 16
+#define GMEM_NODISCARD 32
+#define GMEM_NOT_BANKED 4096
+#define GMEM_NOTIFY 16384
+#define GMEM_SHARE 8192
+#define GMEM_ZEROINIT 64
+#define GMEM_DISCARDED 16384
+#define GMEM_INVALID_HANDLE 32768
+#define GMEM_LOCKCOUNT 255
+#define STATUS_WAIT_0 0
+#define STATUS_ABANDONED_WAIT_0 0x80
+#define STATUS_USER_APC 0xC0
+#define STATUS_TIMEOUT 0x102
+#define STATUS_PENDING 0x103
+#define STATUS_SEGMENT_NOTIFICATION 0x40000005
+#define STATUS_GUARD_PAGE_VIOLATION 0x80000001
+#define STATUS_DATATYPE_MISALIGNMENT 0x80000002
+#define STATUS_BREAKPOINT 0x80000003
+#define STATUS_SINGLE_STEP 0x80000004
+#define STATUS_ACCESS_VIOLATION 0xC0000005
+#define STATUS_IN_PAGE_ERROR 0xC0000006
+#define STATUS_INVALID_HANDLE 0xC0000008L
+#define STATUS_NO_MEMORY 0xC0000017
+#define STATUS_ILLEGAL_INSTRUCTION 0xC000001D
+#define STATUS_NONCONTINUABLE_EXCEPTION 0xC0000025
+#define STATUS_INVALID_DISPOSITION 0xC0000026
+#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C
+#define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D
+#define STATUS_FLOAT_DIVIDE_BY_ZERO 0xC000008E
+#define STATUS_FLOAT_INEXACT_RESULT 0xC000008F
+#define STATUS_FLOAT_INVALID_OPERATION 0xC0000090
+#define STATUS_FLOAT_OVERFLOW 0xC0000091
+#define STATUS_FLOAT_STACK_CHECK 0xC0000092
+#define STATUS_FLOAT_UNDERFLOW 0xC0000093
+#define STATUS_INTEGER_DIVIDE_BY_ZERO 0xC0000094
+#define STATUS_INTEGER_OVERFLOW 0xC0000095
+#define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096
+#define STATUS_STACK_OVERFLOW 0xC00000FD
+#define STATUS_CONTROL_C_EXIT 0xC000013A
+#define EXCEPTION_ACCESS_VIOLATION	STATUS_ACCESS_VIOLATION
+#define EXCEPTION_DATATYPE_MISALIGNMENT	STATUS_DATATYPE_MISALIGNMENT
+#define EXCEPTION_BREAKPOINT	STATUS_BREAKPOINT
+#define EXCEPTION_SINGLE_STEP	STATUS_SINGLE_STEP
+#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED	STATUS_ARRAY_BOUNDS_EXCEEDED
+#define EXCEPTION_FLT_DENORMAL_OPERAND	STATUS_FLOAT_DENORMAL_OPERAND
+#define EXCEPTION_FLT_DIVIDE_BY_ZERO	STATUS_FLOAT_DIVIDE_BY_ZERO
+#define EXCEPTION_FLT_INEXACT_RESULT	STATUS_FLOAT_INEXACT_RESULT
+#define EXCEPTION_FLT_INVALID_OPERATION	STATUS_FLOAT_INVALID_OPERATION
+#define EXCEPTION_FLT_OVERFLOW	STATUS_FLOAT_OVERFLOW
+#define EXCEPTION_FLT_STACK_CHECK	STATUS_FLOAT_STACK_CHECK
+#define EXCEPTION_FLT_UNDERFLOW	STATUS_FLOAT_UNDERFLOW
+#define EXCEPTION_INT_DIVIDE_BY_ZERO	STATUS_INTEGER_DIVIDE_BY_ZERO
+#define EXCEPTION_INT_OVERFLOW	STATUS_INTEGER_OVERFLOW
+#define EXCEPTION_PRIV_INSTRUCTION	STATUS_PRIVILEGED_INSTRUCTION
+#define EXCEPTION_IN_PAGE_ERROR	STATUS_IN_PAGE_ERROR
+#define EXCEPTION_ILLEGAL_INSTRUCTION	STATUS_ILLEGAL_INSTRUCTION
+#define EXCEPTION_NONCONTINUABLE_EXCEPTION	STATUS_NONCONTINUABLE_EXCEPTION
+#define EXCEPTION_STACK_OVERFLOW	STATUS_STACK_OVERFLOW
+#define EXCEPTION_INVALID_DISPOSITION	STATUS_INVALID_DISPOSITION
+#define EXCEPTION_GUARD_PAGE	STATUS_GUARD_PAGE_VIOLATION
+#define EXCEPTION_INVALID_HANDLE	STATUS_INVALID_HANDLE
+#define CONTROL_C_EXIT	STATUS_CONTROL_C_EXIT
+#define PROCESS_HEAP_REGION 1
+#define PROCESS_HEAP_UNCOMMITTED_RANGE 2
+#define PROCESS_HEAP_ENTRY_BUSY 4
+#define PROCESS_HEAP_ENTRY_MOVEABLE 16
+#define PROCESS_HEAP_ENTRY_DDESHARE 32
+#define DONT_RESOLVE_DLL_REFERENCES 1
+#define LOAD_LIBRARY_AS_DATAFILE 2
+#define LOAD_WITH_ALTERED_SEARCH_PATH 8
+#define LMEM_FIXED 0
+#define LMEM_MOVEABLE 2
+#define LMEM_NONZEROLHND 2
+#define LMEM_NONZEROLPTR 0
+#define LMEM_DISCARDABLE 3840
+#define LMEM_NOCOMPACT 16
+#define LMEM_NODISCARD 32
+#define LMEM_ZEROINIT 64
+#define LMEM_DISCARDED 16384
+#define LMEM_MODIFY 128
+#define LMEM_INVALID_HANDLE 32768
+#define LMEM_LOCKCOUNT 255
+#define LPTR 64
+#define LHND 66
+#define NONZEROLHND 2
+#define NONZEROLPTR 0
+#define LOCKFILE_FAIL_IMMEDIATELY 1
+#define LOCKFILE_EXCLUSIVE_LOCK 2
+#define LOGON32_PROVIDER_DEFAULT	0
+#define LOGON32_PROVIDER_WINNT35	1
+#define LOGON32_LOGON_INTERACTIVE	2
+#define LOGON32_LOGON_BATCH	4
+#define LOGON32_LOGON_SERVICE	5
+#define MOVEFILE_REPLACE_EXISTING 1
+#define MOVEFILE_COPY_ALLOWED 2
+#define MOVEFILE_DELAY_UNTIL_REBOOT 4
+#define MOVEFILE_WRITE_THROUGH 8
+#define MAXIMUM_WAIT_OBJECTS 64
+#define MAXIMUM_SUSPEND_COUNT 0x7F
+#define WAIT_OBJECT_0 0
+#define WAIT_ABANDONED_0 128
+#define WAIT_TIMEOUT 0x102
+#define WAIT_IO_COMPLETION 0xC0
+#define WAIT_ABANDONED 128
+#define WAIT_FAILED 0xFFFFFFFF
+#define PURGE_TXABORT 1
+#define PURGE_RXABORT 2
+#define PURGE_TXCLEAR 4
+#define PURGE_RXCLEAR 8
+#define EVENTLOG_FORWARDS_READ 4
+#define EVENTLOG_BACKWARDS_READ 8
+#define EVENTLOG_SEEK_READ 2
+#define EVENTLOG_SEQUENTIAL_READ 1
+#define EVENTLOG_ERROR_TYPE 1
+#define EVENTLOG_WARNING_TYPE 2
+#define EVENTLOG_INFORMATION_TYPE 4
+#define EVENTLOG_AUDIT_SUCCESS 8
+#define EVENTLOG_AUDIT_FAILURE 16
+#define FORMAT_MESSAGE_ALLOCATE_BUFFER 256
+#define FORMAT_MESSAGE_IGNORE_INSERTS 512
+#define FORMAT_MESSAGE_FROM_STRING 1024
+#define FORMAT_MESSAGE_FROM_HMODULE 2048
+#define FORMAT_MESSAGE_FROM_SYSTEM 4096
+#define FORMAT_MESSAGE_ARGUMENT_ARRAY 8192
+#define FORMAT_MESSAGE_MAX_WIDTH_MASK 255
+#define EV_BREAK 64
+#define EV_CTS 8
+#define EV_DSR 16
+#define EV_ERR 128
+#define EV_EVENT1 2048
+#define EV_EVENT2 4096
+#define EV_PERR 512
+#define EV_RING 256
+#define EV_RLSD 32
+#define EV_RX80FULL 1024
+#define EV_RXCHAR 1
+#define EV_RXFLAG 2
+#define EV_TXEMPTY 4
+#define SEM_FAILCRITICALERRORS 1
+#define SEM_NOALIGNMENTFAULTEXCEPT 4
+#define SEM_NOGPFAULTERRORBOX 2
+#define SEM_NOOPENFILEERRORBOX 32768
+#define SLE_ERROR 1
+#define SLE_MINORERROR 2
+#define SLE_WARNING 3
+#define SHUTDOWN_NORETRY 1
+#define EXCEPTION_EXECUTE_HANDLER 1
+#define EXCEPTION_CONTINUE_EXECUTION (-1)
+#define EXCEPTION_CONTINUE_SEARCH 0
+#define MAXINTATOM 0xC000
+#define INVALID_ATOM ((ATOM)0)
+#define IGNORE	0
+#define INFINITE	0xFFFFFFFF
+#define NOPARITY	0
+#define ODDPARITY	1
+#define EVENPARITY	2
+#define MARKPARITY	3
+#define SPACEPARITY	4
+#define ONESTOPBIT	0
+#define ONE5STOPBITS	1
+#define TWOSTOPBITS	2
+#define CBR_110	110
+#define CBR_300	300
+#define CBR_600	600
+#define CBR_1200	1200
+#define CBR_2400	2400
+#define CBR_4800	4800
+#define CBR_9600	9600
+#define CBR_14400	14400
+#define CBR_19200	19200
+#define CBR_38400	38400
+#define CBR_56000	56000
+#define CBR_57600	57600
+#define CBR_115200	115200
+#define CBR_128000	128000
+#define CBR_256000	256000
+#define BACKUP_INVALID	0
+#define BACKUP_DATA 1
+#define BACKUP_EA_DATA 2
+#define BACKUP_SECURITY_DATA 3
+#define BACKUP_ALTERNATE_DATA 4
+#define BACKUP_LINK 5
+#define BACKUP_PROPERTY_DATA 6
+#define BACKUP_OBJECT_ID 7
+#define BACKUP_REPARSE_DATA 8
+#define BACKUP_SPARSE_BLOCK 9
+#define STREAM_NORMAL_ATTRIBUTE 0
+#define STREAM_MODIFIED_WHEN_READ 1
+#define STREAM_CONTAINS_SECURITY 2
+#define STREAM_CONTAINS_PROPERTIES 4
+#define STARTF_USESHOWWINDOW 1
+#define STARTF_USESIZE 2
+#define STARTF_USEPOSITION 4
+#define STARTF_USECOUNTCHARS 8
+#define STARTF_USEFILLATTRIBUTE 16
+#define STARTF_RUNFULLSCREEN 32
+#define STARTF_FORCEONFEEDBACK 64
+#define STARTF_FORCEOFFFEEDBACK 128
+#define STARTF_USESTDHANDLES 256
+#define STARTF_USEHOTKEY 512
+#define TC_NORMAL 0
+#define TC_HARDERR 1
+#define TC_GP_TRAP 2
+#define TC_SIGNAL 3
+#define AC_LINE_OFFLINE 0
+#define AC_LINE_ONLINE 1
+#define AC_LINE_BACKUP_POWER 2
+#define AC_LINE_UNKNOWN 255
+#define BATTERY_FLAG_HIGH 1
+#define BATTERY_FLAG_LOW 2
+#define BATTERY_FLAG_CRITICAL 4
+#define BATTERY_FLAG_CHARGING 8
+#define BATTERY_FLAG_NO_BATTERY 128
+#define BATTERY_FLAG_UNKNOWN 255
+#define BATTERY_PERCENTAGE_UNKNOWN 255
+#define BATTERY_LIFE_UNKNOWN 0xFFFFFFFF
+#define DDD_RAW_TARGET_PATH 1
+#define DDD_REMOVE_DEFINITION 2
+#define DDD_EXACT_MATCH_ON_REMOVE 4
+#define HINSTANCE_ERROR 32
+#define MS_CTS_ON 16
+#define MS_DSR_ON 32
+#define MS_RING_ON 64
+#define MS_RLSD_ON 128
+#define PROFILE_USER 0x10000000
+#define PROFILE_KERNEL 0x20000000
+#define PROFILE_SERVER 0x40000000
+#define DTR_CONTROL_DISABLE 0
+#define DTR_CONTROL_ENABLE 1
+#define DTR_CONTROL_HANDSHAKE 2
+#define RTS_CONTROL_DISABLE 0
+#define RTS_CONTROL_ENABLE 1
+#define RTS_CONTROL_HANDSHAKE 2
+#define RTS_CONTROL_TOGGLE 3
+#define SECURITY_ANONYMOUS (SecurityAnonymous<<16)
+#define SECURITY_IDENTIFICATION (SecurityIdentification<<16)
+#define SECURITY_IMPERSONATION (SecurityImpersonation<<16)
+#define SECURITY_DELEGATION (SecurityDelegation<<16)
+#define SECURITY_CONTEXT_TRACKING 0x40000
+#define SECURITY_EFFECTIVE_ONLY 0x80000
+#define SECURITY_SQOS_PRESENT 0x100000
+#define SECURITY_VALID_SQOS_FLAGS 0x1F0000
+#define INVALID_FILE_SIZE 0xFFFFFFFF
+#define TLS_OUT_OF_INDEXES (DWORD)0xFFFFFFFF
+
+#ifndef RC_INVOKED
+typedef struct _FILETIME {
+	DWORD dwLowDateTime;
+	DWORD dwHighDateTime;
+} FILETIME,*PFILETIME,*LPFILETIME;
+typedef struct _BY_HANDLE_FILE_INFORMATION {
+	DWORD	dwFileAttributes;
+	FILETIME	ftCreationTime;
+	FILETIME	ftLastAccessTime;
+	FILETIME	ftLastWriteTime;
+	DWORD	dwVolumeSerialNumber;
+	DWORD	nFileSizeHigh;
+	DWORD	nFileSizeLow;
+	DWORD	nNumberOfLinks;
+	DWORD	nFileIndexHigh;
+	DWORD	nFileIndexLow;
+} BY_HANDLE_FILE_INFORMATION,*LPBY_HANDLE_FILE_INFORMATION;
+typedef struct _DCB {
+	DWORD DCBlength;
+	DWORD BaudRate;
+	DWORD fBinary:1;
+	DWORD fParity:1;
+	DWORD fOutxCtsFlow:1;
+	DWORD fOutxDsrFlow:1;
+	DWORD fDtrControl:2;
+	DWORD fDsrSensitivity:1;
+	DWORD fTXContinueOnXoff:1;
+	DWORD fOutX:1;
+	DWORD fInX:1;
+	DWORD fErrorChar:1;
+	DWORD fNull:1;
+	DWORD fRtsControl:2;
+	DWORD fAbortOnError:1;
+	DWORD fDummy2:17;
+	WORD wReserved;
+	WORD XonLim;
+	WORD XoffLim;
+	BYTE ByteSize;
+	BYTE Parity;
+	BYTE StopBits;
+	char XonChar;
+	char XoffChar;
+	char ErrorChar;
+	char EofChar;
+	char EvtChar;
+	WORD wReserved1;
+} DCB,*LPDCB;
+typedef struct _COMM_CONFIG {
+	DWORD dwSize;
+	WORD  wVersion;
+	WORD  wReserved;
+	DCB   dcb;
+	DWORD dwProviderSubType;
+	DWORD dwProviderOffset;
+	DWORD dwProviderSize;
+	WCHAR wcProviderData[1];
+} COMMCONFIG,*LPCOMMCONFIG;
+typedef struct _COMMPROP {
+	WORD	wPacketLength;
+	WORD	wPacketVersion;
+	DWORD	dwServiceMask;
+	DWORD	dwReserved1;
+	DWORD	dwMaxTxQueue;
+	DWORD	dwMaxRxQueue;
+	DWORD	dwMaxBaud;
+	DWORD	dwProvSubType;
+	DWORD	dwProvCapabilities;
+	DWORD	dwSettableParams;
+	DWORD	dwSettableBaud;
+	WORD	wSettableData;
+	WORD	wSettableStopParity;
+	DWORD	dwCurrentTxQueue;
+	DWORD	dwCurrentRxQueue;
+	DWORD	dwProvSpec1;
+	DWORD	dwProvSpec2;
+	WCHAR	wcProvChar[1];
+} COMMPROP,*LPCOMMPROP;
+typedef struct _COMMTIMEOUTS {
+	DWORD ReadIntervalTimeout;
+	DWORD ReadTotalTimeoutMultiplier;
+	DWORD ReadTotalTimeoutConstant;
+	DWORD WriteTotalTimeoutMultiplier;
+	DWORD WriteTotalTimeoutConstant;
+} COMMTIMEOUTS,*LPCOMMTIMEOUTS;
+typedef struct _COMSTAT {
+	DWORD fCtsHold:1;
+	DWORD fDsrHold:1;
+	DWORD fRlsdHold:1;
+	DWORD fXoffHold:1;
+	DWORD fXoffSent:1;
+	DWORD fEof:1;
+	DWORD fTxim:1;
+	DWORD fReserved:25;
+	DWORD cbInQue;
+	DWORD cbOutQue;
+} COMSTAT,*LPCOMSTAT;
+typedef DWORD (WINAPI *LPTHREAD_START_ROUTINE)(LPVOID);
+typedef struct _CREATE_PROCESS_DEBUG_INFO {
+	HANDLE hFile;
+	HANDLE hProcess;
+	HANDLE hThread;
+	LPVOID lpBaseOfImage;
+	DWORD dwDebugInfoFileOffset;
+	DWORD nDebugInfoSize;
+	LPVOID lpThreadLocalBase;
+	LPTHREAD_START_ROUTINE lpStartAddress;
+	LPVOID lpImageName;
+	WORD fUnicode;
+} CREATE_PROCESS_DEBUG_INFO,*LPCREATE_PROCESS_DEBUG_INFO;
+typedef struct _CREATE_THREAD_DEBUG_INFO {
+	HANDLE hThread;
+	LPVOID lpThreadLocalBase;
+	LPTHREAD_START_ROUTINE lpStartAddress;
+} CREATE_THREAD_DEBUG_INFO,*LPCREATE_THREAD_DEBUG_INFO;
+typedef struct _EXCEPTION_DEBUG_INFO {
+	EXCEPTION_RECORD ExceptionRecord;
+	DWORD dwFirstChance;
+} EXCEPTION_DEBUG_INFO,*LPEXCEPTION_DEBUG_INFO;
+typedef struct _EXIT_THREAD_DEBUG_INFO {
+	DWORD dwExitCode;
+} EXIT_THREAD_DEBUG_INFO,*LPEXIT_THREAD_DEBUG_INFO;
+typedef struct _EXIT_PROCESS_DEBUG_INFO {
+	DWORD dwExitCode;
+} EXIT_PROCESS_DEBUG_INFO,*LPEXIT_PROCESS_DEBUG_INFO;
+typedef struct _LOAD_DLL_DEBUG_INFO {
+	HANDLE hFile;
+	LPVOID lpBaseOfDll;
+	DWORD dwDebugInfoFileOffset;
+	DWORD nDebugInfoSize;
+	LPVOID lpImageName;
+	WORD fUnicode;
+} LOAD_DLL_DEBUG_INFO,*LPLOAD_DLL_DEBUG_INFO;
+typedef struct _UNLOAD_DLL_DEBUG_INFO {
+	LPVOID lpBaseOfDll;
+} UNLOAD_DLL_DEBUG_INFO,*LPUNLOAD_DLL_DEBUG_INFO;
+typedef struct _OUTPUT_DEBUG_STRING_INFO {
+	LPSTR lpDebugStringData;
+	WORD fUnicode;
+	WORD nDebugStringLength;
+} OUTPUT_DEBUG_STRING_INFO,*LPOUTPUT_DEBUG_STRING_INFO;
+typedef struct _RIP_INFO {
+	DWORD dwError;
+	DWORD dwType;
+} RIP_INFO,*LPRIP_INFO;
+typedef struct _DEBUG_EVENT {
+	DWORD dwDebugEventCode;
+	DWORD dwProcessId;
+	DWORD dwThreadId;
+	union {
+		EXCEPTION_DEBUG_INFO Exception;
+		CREATE_THREAD_DEBUG_INFO CreateThread;
+		CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
+		EXIT_THREAD_DEBUG_INFO ExitThread;
+		EXIT_PROCESS_DEBUG_INFO ExitProcess;
+		LOAD_DLL_DEBUG_INFO LoadDll;
+		UNLOAD_DLL_DEBUG_INFO UnloadDll;
+		OUTPUT_DEBUG_STRING_INFO DebugString;
+		RIP_INFO RipInfo;
+	} u;
+} DEBUG_EVENT,*LPDEBUG_EVENT;
+typedef struct _OVERLAPPED {
+	DWORD Internal;
+	DWORD InternalHigh;
+	DWORD Offset;
+	DWORD OffsetHigh;
+	HANDLE hEvent;
+} OVERLAPPED,*POVERLAPPED,*LPOVERLAPPED;
+typedef struct _STARTUPINFOA {
+	DWORD	cb;
+	LPSTR	lpReserved;
+	LPSTR	lpDesktop;
+	LPSTR	lpTitle;
+	DWORD	dwX;
+	DWORD	dwY;
+	DWORD	dwXSize;
+	DWORD	dwYSize;
+	DWORD	dwXCountChars;
+	DWORD	dwYCountChars;
+	DWORD	dwFillAttribute;
+	DWORD	dwFlags;
+	WORD	wShowWindow;
+	WORD	cbReserved2;
+	PBYTE	lpReserved2;
+	HANDLE	hStdInput;
+	HANDLE	hStdOutput;
+	HANDLE	hStdError;
+} STARTUPINFOA,*LPSTARTUPINFOA;
+typedef struct _STARTUPINFOW {
+	DWORD	cb;
+	LPWSTR	lpReserved;
+	LPWSTR	lpDesktop;
+	LPWSTR	lpTitle;
+	DWORD	dwX;
+	DWORD	dwY;
+	DWORD	dwXSize;
+	DWORD	dwYSize;
+	DWORD	dwXCountChars;
+	DWORD	dwYCountChars;
+	DWORD	dwFillAttribute;
+	DWORD	dwFlags;
+	WORD	wShowWindow;
+	WORD	cbReserved2;
+	PBYTE	lpReserved2;
+	HANDLE	hStdInput;
+	HANDLE	hStdOutput;
+	HANDLE	hStdError;
+} STARTUPINFOW,*LPSTARTUPINFOW;
+typedef struct _PROCESS_INFORMATION {
+	HANDLE hProcess;
+	HANDLE hThread;
+	DWORD dwProcessId;
+	DWORD dwThreadId;
+} PROCESS_INFORMATION,*LPPROCESS_INFORMATION;
+typedef struct _CRITICAL_SECTION_DEBUG {
+	WORD Type;
+	WORD CreatorBackTraceIndex;
+	struct _CRITICAL_SECTION *CriticalSection;
+	LIST_ENTRY ProcessLocksList;
+	DWORD EntryCount;
+	DWORD ContentionCount;
+	DWORD Spare [2];
+} CRITICAL_SECTION_DEBUG,*PCRITICAL_SECTION_DEBUG;
+typedef struct _CRITICAL_SECTION {
+	PCRITICAL_SECTION_DEBUG DebugInfo;
+	LONG LockCount;
+	LONG RecursionCount;
+	HANDLE OwningThread;
+	HANDLE LockSemaphore;
+	DWORD SpinCount;
+} CRITICAL_SECTION,*PCRITICAL_SECTION,*LPCRITICAL_SECTION;
+typedef struct _SYSTEMTIME {
+	WORD wYear;
+	WORD wMonth;
+	WORD wDayOfWeek;
+	WORD wDay;
+	WORD wHour;
+	WORD wMinute;
+	WORD wSecond;
+	WORD wMilliseconds;
+} SYSTEMTIME,*LPSYSTEMTIME;
+typedef struct _WIN32_FILE_ATTRIBUTE_DATA {
+	DWORD	dwFileAttributes;
+	FILETIME	ftCreationTime;
+	FILETIME	ftLastAccessTime;
+	FILETIME	ftLastWriteTime;
+	DWORD	nFileSizeHigh;
+	DWORD	nFileSizeLow;
+} WIN32_FILE_ATTRIBUTE_DATA,*LPWIN32_FILE_ATTRIBUTE_DATA;
+typedef struct _WIN32_FIND_DATAA {
+	DWORD dwFileAttributes;
+	FILETIME ftCreationTime;
+	FILETIME ftLastAccessTime;
+	FILETIME ftLastWriteTime;
+	DWORD nFileSizeHigh;
+	DWORD nFileSizeLow;
+	DWORD dwReserved0;
+	DWORD dwReserved1;
+	CHAR cFileName[MAX_PATH];
+	CHAR cAlternateFileName[14];
+} WIN32_FIND_DATAA,*LPWIN32_FIND_DATAA;
+typedef struct _WIN32_FIND_DATAW {
+	DWORD dwFileAttributes;
+	FILETIME ftCreationTime;
+	FILETIME ftLastAccessTime;
+	FILETIME ftLastWriteTime;
+	DWORD nFileSizeHigh;
+	DWORD nFileSizeLow;
+	DWORD dwReserved0;
+	DWORD dwReserved1;
+	WCHAR cFileName[MAX_PATH];
+	WCHAR cAlternateFileName[14];
+} WIN32_FIND_DATAW,*LPWIN32_FIND_DATAW;
+typedef struct _WIN32_STREAM_ID {
+	DWORD dwStreamId;
+	DWORD dwStreamAttributes;
+	LARGE_INTEGER Size;
+	DWORD dwStreamNameSize;
+	WCHAR cStreamName[ANYSIZE_ARRAY];
+} WIN32_STREAM_ID;
+typedef enum _FINDEX_INFO_LEVELS {
+	FindExInfoStandard,
+	FindExInfoMaxInfoLevel
+} FINDEX_INFO_LEVELS;
+typedef enum _FINDEX_SEARCH_OPS {
+	FindExSearchNameMatch,
+	FindExSearchLimitToDirectories,
+	FindExSearchLimitToDevices,
+	FindExSearchMaxSearchOp
+} FINDEX_SEARCH_OPS;
+typedef enum _ACL_INFORMATION_CLASS {
+	AclRevisionInformation=1,
+	AclSizeInformation
+} ACL_INFORMATION_CLASS;
+typedef struct tagHW_PROFILE_INFOA {
+	DWORD dwDockInfo;
+	CHAR szHwProfileGuid[HW_PROFILE_GUIDLEN];
+	CHAR szHwProfileName[MAX_PROFILE_LEN];
+} HW_PROFILE_INFOA,*LPHW_PROFILE_INFOA;
+typedef struct tagHW_PROFILE_INFOW {
+	DWORD dwDockInfo;
+	WCHAR szHwProfileGuid[HW_PROFILE_GUIDLEN];
+	WCHAR szHwProfileName[MAX_PROFILE_LEN];
+} HW_PROFILE_INFOW,*LPHW_PROFILE_INFOW;
+typedef enum _GET_FILEEX_INFO_LEVELS {
+	GetFileExInfoStandard,
+	GetFileExMaxInfoLevel
+} GET_FILEEX_INFO_LEVELS;
+typedef struct _SYSTEM_INFO {
+	_ANONYMOUS_UNION union {
+		DWORD dwOemId;
+		_ANONYMOUS_STRUCT struct {
+			WORD wProcessorArchitecture;
+			WORD wReserved;
+		} DUMMYSTRUCTNAME;
+	} DUMMYUNIONNAME;
+	DWORD dwPageSize;
+	PVOID lpMinimumApplicationAddress;
+	PVOID lpMaximumApplicationAddress;
+	DWORD dwActiveProcessorMask;
+	DWORD dwNumberOfProcessors;
+	DWORD dwProcessorType;
+	DWORD dwAllocationGranularity;
+	WORD wProcessorLevel;
+	WORD wProcessorRevision;
+} SYSTEM_INFO,*LPSYSTEM_INFO;
+typedef struct _SYSTEM_POWER_STATUS {
+	BYTE ACLineStatus;
+	BYTE BatteryFlag;
+	BYTE BatteryLifePercent;
+	BYTE Reserved1;
+	DWORD BatteryLifeTime;
+	DWORD BatteryFullLifeTime;
+} SYSTEM_POWER_STATUS,*LPSYSTEM_POWER_STATUS;
+typedef struct _TIME_ZONE_INFORMATION {
+	LONG Bias;
+	WCHAR StandardName[32];
+	SYSTEMTIME StandardDate;
+	LONG StandardBias;
+	WCHAR DaylightName[32];
+	SYSTEMTIME DaylightDate;
+	LONG DaylightBias;
+} TIME_ZONE_INFORMATION,*LPTIME_ZONE_INFORMATION;
+typedef struct _MEMORYSTATUS {
+	DWORD dwLength;
+	DWORD dwMemoryLoad;
+	DWORD dwTotalPhys;
+	DWORD dwAvailPhys;
+	DWORD dwTotalPageFile;
+	DWORD dwAvailPageFile;
+	DWORD dwTotalVirtual;
+	DWORD dwAvailVirtual;
+} MEMORYSTATUS,*LPMEMORYSTATUS;
+typedef struct _LDT_ENTRY {
+	WORD LimitLow;
+	WORD BaseLow;
+	union {
+		struct {
+			BYTE BaseMid;
+			BYTE Flags1;
+			BYTE Flags2;
+			BYTE BaseHi;
+		} Bytes;
+		struct {
+			DWORD BaseMid:8;
+			DWORD Type:5;
+			DWORD Dpl:2;
+			DWORD Pres:1;
+			DWORD LimitHi:4;
+			DWORD Sys:1;
+			DWORD Reserved_0:1;
+			DWORD Default_Big:1;
+			DWORD Granularity:1;
+			DWORD BaseHi:8;
+		} Bits;
+	} HighWord;
+} LDT_ENTRY,*PLDT_ENTRY,*LPLDT_ENTRY;
+typedef struct _PROCESS_HEAP_ENTRY {
+	PVOID lpData;
+	DWORD cbData;
+	BYTE cbOverhead;
+	BYTE iRegionIndex;
+	WORD wFlags;
+	_ANONYMOUS_UNION union {
+		struct {
+			HANDLE hMem;
+			DWORD dwReserved[3];
+		} Block;
+		struct {
+			DWORD dwCommittedSize;
+			DWORD dwUnCommittedSize;
+			LPVOID lpFirstBlock;
+			LPVOID lpLastBlock;
+		} Region;
+	} DUMMYUNIONNAME;
+} PROCESS_HEAP_ENTRY,*LPPROCESS_HEAP_ENTRY;
+typedef struct _OFSTRUCT {
+	BYTE cBytes;
+	BYTE fFixedDisk;
+	WORD nErrCode;
+	WORD Reserved1;
+	WORD Reserved2;
+	CHAR szPathName[OFS_MAXPATHNAME];
+} OFSTRUCT,*LPOFSTRUCT,*POFSTRUCT;
+typedef struct _WIN_CERTIFICATE {
+      DWORD dwLength;
+      WORD wRevision;
+      WORD wCertificateType;
+      BYTE bCertificate[1];
+} WIN_CERTIFICATE, *LPWIN_CERTIFICATE;
+
+typedef DWORD(WINAPI *LPPROGRESS_ROUTINE)(LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,DWORD,DWORD,HANDLE,HANDLE,LPVOID);
+typedef void(WINAPI *LPFIBER_START_ROUTINE)(PVOID);
+typedef BOOL(CALLBACK *ENUMRESLANGPROC)(HMODULE,LPCTSTR,LPCTSTR,WORD,LONG);
+typedef BOOL(CALLBACK *ENUMRESNAMEPROC)(HMODULE,LPCTSTR,LPTSTR,LONG);
+typedef BOOL(CALLBACK *ENUMRESTYPEPROC)(HMODULE,LPTSTR,LONG);
+typedef void(CALLBACK *LPOVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPOVERLAPPED);
+typedef LONG(CALLBACK *PTOP_LEVEL_EXCEPTION_FILTER)(LPEXCEPTION_POINTERS);
+typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
+typedef void(APIENTRY *PAPCFUNC)(DWORD);
+typedef void(CALLBACK *PTIMERAPCROUTINE)(PVOID,DWORD,DWORD);
+#define MAKEINTATOM(i) (LPTSTR)((DWORD)((WORD)(i)))
+/* Functions */
+#ifndef UNDER_CE
+int APIENTRY WinMain(HINSTANCE,HINSTANCE,LPSTR,int);
+#else
+int APIENTRY WinMain(HINSTANCE,HINSTANCE,LPWSTR,int);
+#endif
+int APIENTRY wWinMain(HINSTANCE,HINSTANCE,LPWSTR,int);
+long WINAPI _hread(HFILE,LPVOID,long);
+long WINAPI _hwrite(HFILE,LPCSTR,long);
+HFILE WINAPI _lclose(HFILE);
+HFILE WINAPI _lcreat(LPCSTR,int);
+LONG WINAPI _llseek(HFILE,LONG,int);
+HFILE WINAPI _lopen(LPCSTR,int);
+UINT WINAPI _lread(HFILE,LPVOID,UINT);
+UINT WINAPI _lwrite(HFILE,LPCSTR,UINT);
+#define AbnormalTermination() FALSE
+BOOL WINAPI AccessCheck(PSECURITY_DESCRIPTOR,HANDLE,DWORD,PGENERIC_MAPPING,PPRIVILEGE_SET,PDWORD,PDWORD,PBOOL);
+BOOL WINAPI AccessCheckAndAuditAlarmA(LPCSTR,LPVOID,LPSTR,LPSTR,PSECURITY_DESCRIPTOR,DWORD,PGENERIC_MAPPING,BOOL,PDWORD,PBOOL,PBOOL);
+BOOL WINAPI AccessCheckAndAuditAlarmW(LPCWSTR,LPVOID,LPWSTR,LPWSTR,PSECURITY_DESCRIPTOR,DWORD,PGENERIC_MAPPING,BOOL,PDWORD,PBOOL,PBOOL);
+BOOL WINAPI AddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
+BOOL WINAPI AddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
+BOOL WINAPI AddAce(PACL,DWORD,DWORD,PVOID,DWORD);
+ATOM WINAPI AddAtomA(LPCSTR);
+ATOM WINAPI AddAtomW(LPCWSTR);
+BOOL WINAPI AddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
+BOOL WINAPI AdjustTokenGroups(HANDLE,BOOL,PTOKEN_GROUPS,DWORD,PTOKEN_GROUPS,PDWORD);
+BOOL WINAPI AdjustTokenPrivileges(HANDLE,BOOL,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
+BOOL WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID*);
+BOOL WINAPI AllocateLocallyUniqueId(PLUID);
+BOOL WINAPI AreAllAccessesGranted(DWORD,DWORD);
+BOOL WINAPI AreAnyAccessesGranted(DWORD,DWORD);
+BOOL WINAPI AreFileApisANSI(void);
+BOOL WINAPI BackupEventLogA(HANDLE,LPCSTR);
+BOOL WINAPI BackupEventLogW(HANDLE,LPCWSTR);
+BOOL WINAPI BackupRead(HANDLE,PBYTE,DWORD,PDWORD,BOOL,BOOL,PVOID);
+BOOL WINAPI BackupSeek(HANDLE,DWORD,DWORD,PDWORD,PDWORD,PVOID);
+BOOL WINAPI BackupWrite(HANDLE,PBYTE,DWORD,PDWORD,BOOL,BOOL,PVOID);
+BOOL WINAPI Beep(DWORD,DWORD);
+HANDLE WINAPI BeginUpdateResourceA(LPCSTR,BOOL);
+HANDLE WINAPI BeginUpdateResourceW(LPCWSTR,BOOL);
+BOOL WINAPI BuildCommDCBA(LPCSTR,LPDCB);
+BOOL WINAPI BuildCommDCBW(LPCWSTR,LPDCB);
+BOOL WINAPI BuildCommDCBAndTimeoutsA(LPCSTR,LPDCB,LPCOMMTIMEOUTS);
+BOOL WINAPI BuildCommDCBAndTimeoutsW(LPCWSTR,LPDCB,LPCOMMTIMEOUTS);
+BOOL WINAPI CallNamedPipeA(LPCSTR,PVOID,DWORD,PVOID,DWORD,PDWORD,DWORD);
+BOOL WINAPI CallNamedPipeW(LPCWSTR,PVOID,DWORD,PVOID,DWORD,PDWORD,DWORD);
+BOOL WINAPI CancelIo(HANDLE);
+BOOL WINAPI CancelWaitableTimer(HANDLE);
+BOOL WINAPI ClearCommBreak(HANDLE);
+BOOL WINAPI ClearCommError(HANDLE,PDWORD,LPCOMSTAT);
+BOOL WINAPI ClearEventLogA(HANDLE,LPCSTR);
+BOOL WINAPI ClearEventLogW(HANDLE,LPCWSTR);
+BOOL WINAPI CloseEventLog(HANDLE);
+BOOL WINAPI CloseHandle(HANDLE);
+BOOL WINAPI CommConfigDialogA(LPCSTR,HWND,LPCOMMCONFIG);
+BOOL WINAPI CommConfigDialogW(LPCWSTR,HWND,LPCOMMCONFIG);
+LONG WINAPI CompareFileTime(CONST FILETIME*,CONST FILETIME*);
+BOOL WINAPI ConnectNamedPipe(HANDLE,LPOVERLAPPED);
+BOOL WINAPI ContinueDebugEvent(DWORD,DWORD,DWORD);
+PVOID WINAPI ConvertThreadToFiber(PVOID);
+BOOL WINAPI CopyFileA(LPCSTR,LPCSTR,BOOL);
+BOOL WINAPI CopyFileW(LPCWSTR,LPCWSTR,BOOL);
+BOOL WINAPI CopyFileExA(LPCSTR,LPCSTR,LPPROGRESS_ROUTINE,LPVOID,LPBOOL,DWORD);
+BOOL WINAPI CopyFileExW(LPCWSTR,LPCWSTR,LPPROGRESS_ROUTINE,LPVOID,LPBOOL,DWORD);
+#define RtlMoveMemory memmove
+#define RtlCopyMemory memcpy
+#define RtlFillMemory(d,l,f) memset((d), (f), (l))
+#define RtlZeroMemory(d,l) RtlFillMemory((d),(l),0)
+#define MoveMemory RtlMoveMemory
+#define CopyMemory RtlCopyMemory
+#define FillMemory RtlFillMemory
+#define ZeroMemory RtlZeroMemory
+BOOL WINAPI CopySid(DWORD,PSID,PSID);
+BOOL WINAPI CreateDirectoryA(LPCSTR,LPSECURITY_ATTRIBUTES);
+BOOL WINAPI CreateDirectoryW(LPCWSTR,LPSECURITY_ATTRIBUTES);
+BOOL WINAPI CreateDirectoryExA(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES);
+BOOL WINAPI CreateDirectoryExW(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES);
+HANDLE WINAPI CreateEventA(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCSTR);
+HANDLE WINAPI CreateEventW(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCWSTR);
+LPVOID WINAPI CreateFiber(DWORD,LPFIBER_START_ROUTINE,LPVOID);
+HANDLE WINAPI CreateFileA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE);
+HANDLE WINAPI CreateFileW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE);
+HANDLE WINAPI CreateFileMappingA(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCSTR);
+HANDLE WINAPI CreateFileMappingW(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCWSTR);
+HANDLE WINAPI CreateHardLinkA(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES);
+HANDLE WINAPI CreateHardLinkW(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES);
+HANDLE WINAPI CreateIoCompletionPort(HANDLE,HANDLE,DWORD,DWORD);
+HANDLE WINAPI CreateMailslotA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+HANDLE WINAPI CreateMailslotW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+HANDLE WINAPI CreateMutexA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
+HANDLE WINAPI CreateMutexW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
+HANDLE WINAPI CreateNamedPipeA(LPCSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+HANDLE WINAPI CreateNamedPipeW(LPCWSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+BOOL WINAPI CreatePipe(PHANDLE,PHANDLE,LPSECURITY_ATTRIBUTES,DWORD);
+BOOL WINAPI CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOL,HANDLE,PGENERIC_MAPPING);
+BOOL WINAPI CreateProcessA(LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION);
+BOOL WINAPI CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
+BOOL WINAPI CreateProcessAsUserA(HANDLE,LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION);
+BOOL WINAPI CreateProcessAsUserW(HANDLE,LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
+HANDLE WINAPI CreateRemoteThread(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
+HANDLE WINAPI CreateSemaphoreA(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCSTR);
+HANDLE WINAPI CreateSemaphoreW(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCWSTR);
+DWORD WINAPI CreateTapePartition(HANDLE,DWORD,DWORD,DWORD);
+HANDLE WINAPI CreateThread(LPSECURITY_ATTRIBUTES,DWORD,LPTHREAD_START_ROUTINE,PVOID,DWORD,PDWORD);
+HANDLE WINAPI CreateWaitableTimerA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
+HANDLE WINAPI CreateWaitableTimerW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
+BOOL WINAPI DebugActiveProcess(DWORD);
+void WINAPI DebugBreak(void);
+BOOL WINAPI DefineDosDeviceA(DWORD,LPCSTR,LPCSTR);
+BOOL WINAPI DefineDosDeviceW(DWORD,LPCWSTR,LPCWSTR);
+#define DefineHandleTable(w) ((w),TRUE)
+BOOL WINAPI DeleteAce(PACL,DWORD);
+ATOM WINAPI DeleteAtom(ATOM);
+void WINAPI DeleteCriticalSection(PCRITICAL_SECTION);
+void WINAPI DeleteFiber(PVOID);
+BOOL WINAPI DeleteFileA(LPCSTR);
+BOOL WINAPI DeleteFileW(LPCWSTR);
+BOOL WINAPI DeregisterEventSource(HANDLE);
+BOOL WINAPI DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*);
+BOOL WINAPI DeviceIoControl(HANDLE,DWORD,PVOID,DWORD,PVOID,DWORD,PDWORD,POVERLAPPED);
+BOOL WINAPI DisableThreadLibraryCalls(HMODULE);
+BOOL WINAPI DisconnectNamedPipe(HANDLE);
+BOOL WINAPI DosDateTimeToFileTime(WORD,WORD,LPFILETIME);
+BOOL WINAPI DuplicateHandle(HANDLE,HANDLE,HANDLE,PHANDLE,DWORD,BOOL,DWORD);
+BOOL WINAPI DuplicateToken(HANDLE,SECURITY_IMPERSONATION_LEVEL,PHANDLE);
+BOOL WINAPI DuplicateTokenEx(HANDLE,DWORD,LPSECURITY_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
+BOOL WINAPI EndUpdateResourceA(HANDLE,BOOL);
+BOOL WINAPI EndUpdateResourceW(HANDLE,BOOL);
+void WINAPI EnterCriticalSection(LPCRITICAL_SECTION);
+BOOL WINAPI EnumResourceLanguagesA(HINSTANCE,LPCSTR,LPCSTR,ENUMRESLANGPROC,LONG);
+BOOL WINAPI EnumResourceLanguagesW(HINSTANCE,LPCWSTR,LPCWSTR,ENUMRESLANGPROC,LONG);
+BOOL WINAPI EnumResourceNamesA(HINSTANCE,LPCSTR,ENUMRESNAMEPROC,LONG);
+BOOL WINAPI EnumResourceNamesW(HINSTANCE,LPCWSTR,ENUMRESNAMEPROC,LONG);
+BOOL WINAPI EnumResourceTypesA(HINSTANCE,ENUMRESTYPEPROC,LONG);
+BOOL WINAPI EnumResourceTypesW(HINSTANCE,ENUMRESTYPEPROC,LONG);
+BOOL WINAPI EqualPrefixSid(PSID,PSID);
+BOOL WINAPI EqualSid(PSID,PSID);
+DWORD WINAPI EraseTape(HANDLE,DWORD,BOOL);
+BOOL WINAPI EscapeCommFunction(HANDLE,DWORD);
+DECLSPEC_NORETURN void WINAPI ExitProcess(UINT);
+DECLSPEC_NORETURN void WINAPI ExitThread(DWORD);
+DWORD WINAPI ExpandEnvironmentStringsA(LPCSTR,LPSTR,DWORD);
+DWORD WINAPI ExpandEnvironmentStringsW(LPCWSTR,LPWSTR,DWORD);
+void WINAPI FatalAppExitA(UINT,LPCSTR);
+void WINAPI FatalAppExitW(UINT,LPCWSTR);
+void WINAPI FatalExit(int);
+BOOL WINAPI FileTimeToDosDateTime(CONST FILETIME *,LPWORD,LPWORD);
+BOOL WINAPI FileTimeToLocalFileTime(FILETIME *,LPFILETIME);
+BOOL WINAPI FileTimeToSystemTime(CONST FILETIME *,LPSYSTEMTIME);
+ATOM WINAPI FindAtomA(LPCSTR);
+ATOM WINAPI FindAtomW(LPCWSTR);
+BOOL WINAPI FindClose(HANDLE);
+BOOL WINAPI FindCloseChangeNotification(HANDLE);
+HANDLE WINAPI FindFirstChangeNotificationA(LPCSTR,BOOL,DWORD);
+HANDLE WINAPI FindFirstChangeNotificationW(LPCWSTR,BOOL,DWORD);
+HANDLE WINAPI FindFirstFileA(LPCSTR,LPWIN32_FIND_DATAA);
+HANDLE WINAPI FindFirstFileW(LPCWSTR,LPWIN32_FIND_DATAW);
+HANDLE WINAPI FindFirstFileExA(LPCSTR,FINDEX_INFO_LEVELS,PVOID,FINDEX_SEARCH_OPS,PVOID,DWORD);
+HANDLE WINAPI FindFirstFileExW(LPCWSTR,FINDEX_INFO_LEVELS,PVOID,FINDEX_SEARCH_OPS,PVOID,DWORD);
+BOOL WINAPI FindFirstFreeAce(PACL,PVOID*);
+BOOL WINAPI FindNextChangeNotification(HANDLE);
+BOOL WINAPI FindNextFileA(HANDLE,LPWIN32_FIND_DATAA);
+BOOL WINAPI FindNextFileW(HANDLE,LPWIN32_FIND_DATAW);
+HRSRC WINAPI FindResourceA(HMODULE,LPCSTR,LPCSTR);
+HRSRC WINAPI FindResourceW(HINSTANCE,LPCWSTR,LPCWSTR);
+HRSRC WINAPI FindResourceExA(HINSTANCE,LPCSTR,LPCSTR,WORD);
+HRSRC WINAPI FindResourceExW(HINSTANCE,LPCWSTR,LPCWSTR,WORD);
+BOOL WINAPI FlushFileBuffers(HANDLE);
+BOOL WINAPI FlushInstructionCache(HANDLE,PCVOID,DWORD);
+BOOL WINAPI FlushViewOfFile(PCVOID,DWORD);
+DWORD WINAPI FormatMessageA(DWORD,PCVOID,DWORD,DWORD,LPSTR,DWORD,va_list*);
+DWORD WINAPI FormatMessageW(DWORD,PCVOID,DWORD,DWORD,LPWSTR,DWORD,va_list*);
+BOOL WINAPI FreeEnvironmentStringsA(LPSTR);
+BOOL WINAPI FreeEnvironmentStringsW(LPWSTR);
+BOOL WINAPI FreeLibrary(HMODULE);
+DECLSPEC_NORETURN void WINAPI FreeLibraryAndExitThread(HMODULE,DWORD);
+#define FreeModule(m) FreeLibrary(m)
+#define FreeProcInstance(p) (void)(p)
+#ifndef XFree86Server
+BOOL WINAPI FreeResource(HGLOBAL);
+#endif /* ndef XFree86Server */
+PVOID WINAPI FreeSid(PSID);
+BOOL WINAPI GetAce(PACL,DWORD,PVOID);
+BOOL WINAPI GetAclInformation(PACL,PVOID,DWORD,ACL_INFORMATION_CLASS);
+UINT WINAPI GetAtomNameA(ATOM,LPSTR,int);
+UINT WINAPI GetAtomNameW(ATOM,LPWSTR,int);
+BOOL WINAPI GetBinaryTypeA(LPCSTR,PDWORD);
+BOOL WINAPI GetBinaryTypeW(LPCWSTR,PDWORD);
+LPSTR WINAPI GetCommandLineA(VOID);
+LPWSTR WINAPI GetCommandLineW(VOID);
+BOOL WINAPI GetCommConfig(HANDLE,LPCOMMCONFIG,PDWORD);
+BOOL WINAPI GetCommMask(HANDLE,PDWORD);
+BOOL WINAPI GetCommModemStatus(HANDLE,PDWORD);
+BOOL WINAPI GetCommProperties(HANDLE,LPCOMMPROP);
+BOOL WINAPI GetCommState(HANDLE,LPDCB);
+BOOL WINAPI GetCommTimeouts(HANDLE,LPCOMMTIMEOUTS);
+DWORD WINAPI GetCompressedFileSizeA(LPCSTR,PDWORD);
+DWORD WINAPI GetCompressedFileSizeW(LPCWSTR,PDWORD);
+BOOL WINAPI GetComputerNameA(LPSTR,PDWORD);
+BOOL WINAPI GetComputerNameW(LPWSTR,PDWORD);
+DWORD WINAPI GetCurrentDirectoryA(DWORD,LPSTR);
+DWORD WINAPI GetCurrentDirectoryW(DWORD,LPWSTR);
+BOOL WINAPI GetCurrentHwProfileA(LPHW_PROFILE_INFOA);
+BOOL WINAPI GetCurrentHwProfileW(LPHW_PROFILE_INFOW);
+HANDLE WINAPI GetCurrentProcess(void);
+DWORD WINAPI GetCurrentProcessId(void);
+HANDLE WINAPI GetCurrentThread(void);
+DWORD WINAPI GetCurrentThreadId(void);
+#define GetCurrentTime GetTickCount
+BOOL WINAPI GetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,PDWORD);
+BOOL WINAPI GetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,PDWORD);
+BOOL WINAPI GetDiskFreeSpaceA(LPCSTR,PDWORD,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI GetDiskFreeSpaceW(LPCWSTR,PDWORD,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI GetDiskFreeSpaceExA(LPCSTR,PULARGE_INTEGER,PULARGE_INTEGER,PULARGE_INTEGER);
+BOOL WINAPI GetDiskFreeSpaceExW(LPCWSTR,PULARGE_INTEGER,PULARGE_INTEGER,PULARGE_INTEGER);
+UINT WINAPI GetDriveTypeA(LPCSTR);
+UINT WINAPI GetDriveTypeW(LPCWSTR);
+LPSTR WINAPI GetEnvironmentStrings(void);
+LPSTR WINAPI GetEnvironmentStringsA(void);
+LPWSTR WINAPI GetEnvironmentStringsW(void);
+DWORD WINAPI GetEnvironmentVariableA(LPCSTR,LPSTR,DWORD);
+DWORD WINAPI GetEnvironmentVariableW(LPCWSTR,LPWSTR,DWORD);
+BOOL WINAPI GetExitCodeProcess(HANDLE,PDWORD);
+BOOL WINAPI GetExitCodeThread(HANDLE,PDWORD);
+DWORD WINAPI GetFileAttributesA(LPCSTR);
+DWORD WINAPI GetFileAttributesW(LPCWSTR);
+BOOL WINAPI GetFileAttributesExA(LPCSTR,GET_FILEEX_INFO_LEVELS,PVOID);
+BOOL WINAPI GetFileAttributesExW(LPCWSTR,GET_FILEEX_INFO_LEVELS,PVOID);
+BOOL WINAPI GetFileInformationByHandle(HANDLE,LPBY_HANDLE_FILE_INFORMATION);
+BOOL WINAPI GetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+BOOL WINAPI GetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+DWORD WINAPI GetFileSize(HANDLE,PDWORD);
+BOOL WINAPI GetFileTime(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME);
+DWORD WINAPI GetFileType(HANDLE);
+#define GetFreeSpace(w) (0x100000L)
+DWORD WINAPI GetFullPathNameA(LPCSTR,DWORD,LPSTR,LPSTR*);
+DWORD WINAPI GetFullPathNameW(LPCWSTR,DWORD,LPWSTR,LPWSTR*);
+BOOL WINAPI GetHandleInformation(HANDLE,PDWORD);
+BOOL WINAPI GetKernelObjectSecurity(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+DWORD WINAPI GetLengthSid(PSID);
+void WINAPI GetLocalTime(LPSYSTEMTIME);
+DWORD WINAPI GetLogicalDrives(void);
+DWORD WINAPI GetLogicalDriveStringsA(DWORD,LPSTR);
+DWORD WINAPI GetLogicalDriveStringsW(DWORD,LPWSTR);
+DWORD WINAPI GetLongPathNameA(LPCSTR,LPSTR,DWORD);
+DWORD WINAPI GetLongPathNameW(LPCWSTR,LPWSTR,DWORD);
+BOOL WINAPI GetMailslotInfo(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD);
+DWORD WINAPI GetModuleFileNameA(HINSTANCE,LPSTR,DWORD);
+DWORD WINAPI GetModuleFileNameW(HINSTANCE,LPWSTR,DWORD);
+HMODULE WINAPI GetModuleHandleA(LPCSTR);
+HMODULE WINAPI GetModuleHandleW(LPCWSTR);
+BOOL WINAPI GetNamedPipeHandleStateA(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD,LPSTR,DWORD);
+BOOL WINAPI GetNamedPipeHandleStateW(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD,LPWSTR,DWORD);
+BOOL WINAPI GetNamedPipeInfo(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI GetNumberOfEventLogRecords(HANDLE,PDWORD);
+BOOL WINAPI GetOldestEventLogRecord(HANDLE,PDWORD);
+BOOL WINAPI GetOverlappedResult(HANDLE,LPOVERLAPPED,PDWORD,BOOL);
+DWORD WINAPI GetPriorityClass(HANDLE);
+BOOL WINAPI GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+UINT WINAPI GetPrivateProfileIntA(LPCSTR,LPCSTR,INT,LPCSTR);
+UINT WINAPI GetPrivateProfileIntW(LPCWSTR,LPCWSTR,INT,LPCWSTR);
+DWORD WINAPI GetPrivateProfileSectionA(LPCSTR,LPSTR,DWORD,LPCSTR);
+DWORD WINAPI GetPrivateProfileSectionW(LPCWSTR,LPWSTR,DWORD,LPCWSTR);
+DWORD WINAPI GetPrivateProfileSectionNamesA(LPSTR,DWORD,LPCSTR);
+DWORD WINAPI GetPrivateProfileSectionNamesW(LPWSTR,DWORD,LPCWSTR);
+DWORD WINAPI GetPrivateProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPSTR,DWORD,LPCSTR);
+DWORD WINAPI GetPrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD,LPCWSTR);
+BOOL WINAPI GetPrivateProfileStructA(LPCSTR,LPCSTR,PVOID,UINT,LPCSTR);
+BOOL WINAPI GetPrivateProfileStructW(LPCWSTR,LPCWSTR,PVOID,UINT,LPCWSTR);
+FARPROC WINAPI GetProcAddress(HINSTANCE,LPCSTR);
+BOOL WINAPI GetProcessAffinityMask(HANDLE,PDWORD,PDWORD);
+HANDLE WINAPI GetProcessHeap(VOID);
+DWORD WINAPI GetProcessHeaps(DWORD,PHANDLE);
+BOOL WINAPI GetProcessPriorityBoost(HANDLE,PBOOL);
+BOOL WINAPI GetProcessShutdownParameters(PDWORD,PDWORD);
+BOOL WINAPI GetProcessTimes(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME,LPFILETIME);
+DWORD WINAPI GetProcessVersion(DWORD);
+HWINSTA WINAPI GetProcessWindowStation(void);
+BOOL WINAPI GetProcessWorkingSetSize(HANDLE,PDWORD,PDWORD);
+UINT WINAPI GetProfileIntA(LPCSTR,LPCSTR,INT);
+UINT WINAPI GetProfileIntW(LPCWSTR,LPCWSTR,INT);
+DWORD WINAPI GetProfileSectionA(LPCSTR,LPSTR,DWORD);
+DWORD WINAPI GetProfileSectionW(LPCWSTR,LPWSTR,DWORD);
+DWORD WINAPI GetProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPSTR,DWORD);
+DWORD WINAPI GetProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD);
+BOOL WINAPI GetQueuedCompletionStatus(HANDLE,PDWORD,PDWORD,LPOVERLAPPED*,DWORD);
+BOOL WINAPI GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR_CONTROL,PDWORD);
+BOOL WINAPI GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR,LPBOOL,PACL*,LPBOOL);
+BOOL WINAPI GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR,PSID*,LPBOOL);
+DWORD WINAPI GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR);
+BOOL WINAPI GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR,PSID*,LPBOOL);
+BOOL WINAPI GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR,LPBOOL,PACL*,LPBOOL);
+DWORD WINAPI GetShortPathNameA(LPCSTR,LPSTR,DWORD);
+DWORD WINAPI GetShortPathNameW(LPCWSTR,LPWSTR,DWORD);
+PSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority(PSID);
+DWORD WINAPI GetSidLengthRequired(UCHAR);
+PDWORD WINAPI GetSidSubAuthority(PSID,DWORD);
+PUCHAR WINAPI GetSidSubAuthorityCount(PSID);
+VOID WINAPI GetStartupInfoA(LPSTARTUPINFOA);
+VOID WINAPI GetStartupInfoW(LPSTARTUPINFOW);
+HANDLE WINAPI GetStdHandle(DWORD);
+UINT WINAPI GetSystemDirectoryA(LPSTR,UINT);
+UINT WINAPI GetSystemDirectoryW(LPWSTR,UINT);
+VOID WINAPI GetSystemInfo(LPSYSTEM_INFO);
+BOOL WINAPI GetSystemPowerStatus(LPSYSTEM_POWER_STATUS);
+VOID WINAPI GetSystemTime(LPSYSTEMTIME);
+BOOL WINAPI GetSystemTimeAdjustment(PDWORD,PDWORD,PBOOL);
+void WINAPI GetSystemTimeAsFileTime(LPFILETIME);
+DWORD WINAPI GetTapeParameters(HANDLE,DWORD,PDWORD,PVOID);
+DWORD WINAPI GetTapePosition(HANDLE,DWORD,PDWORD,PDWORD,PDWORD);
+DWORD WINAPI GetTapeStatus(HANDLE);
+UINT WINAPI GetTempFileNameA(LPCSTR,LPCSTR,UINT,LPSTR);
+UINT WINAPI GetTempFileNameW(LPCWSTR,LPCWSTR,UINT,LPWSTR);
+DWORD WINAPI GetTempPathA(DWORD,LPSTR);
+DWORD WINAPI GetTempPathW(DWORD,LPWSTR);
+BOOL WINAPI GetThreadContext(HANDLE,LPCONTEXT);
+int WINAPI GetThreadPriority(HANDLE);
+BOOL WINAPI GetThreadPriorityBoost(HANDLE,PBOOL);
+BOOL WINAPI GetThreadSelectorEntry(HANDLE,DWORD,LPLDT_ENTRY);
+BOOL WINAPI GetThreadTimes(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME,LPFILETIME);
+DWORD WINAPI GetTickCount(void);
+DWORD WINAPI GetTimeZoneInformation(LPTIME_ZONE_INFORMATION);
+BOOL WINAPI GetTokenInformation(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,DWORD,PDWORD);
+BOOL WINAPI GetUserNameA (LPSTR,PDWORD);
+BOOL WINAPI GetUserNameW(LPWSTR,PDWORD);
+DWORD WINAPI GetVersion(void);
+BOOL WINAPI GetVersionExA(LPOSVERSIONINFOA);
+BOOL WINAPI GetVersionExW(LPOSVERSIONINFOW);
+BOOL WINAPI GetVolumeInformationA(LPCSTR,LPSTR,DWORD,PDWORD,PDWORD,PDWORD,LPSTR,DWORD);
+BOOL WINAPI GetVolumeInformationW(LPCWSTR,LPWSTR,DWORD,PDWORD,PDWORD,PDWORD,LPWSTR,DWORD);
+UINT WINAPI GetWindowsDirectoryA(LPSTR,UINT);
+UINT WINAPI GetWindowsDirectoryW(LPWSTR,UINT);
+DWORD WINAPI GetWindowThreadProcessId(HWND,PDWORD);
+ATOM WINAPI GlobalAddAtomA(LPCSTR);
+ATOM WINAPI GlobalAddAtomW( LPCWSTR);
+HGLOBAL WINAPI GlobalAlloc(UINT,DWORD);
+UINT WINAPI GlobalCompact(DWORD);
+ATOM WINAPI GlobalDeleteAtom(ATOM);
+HGLOBAL GlobalDiscard(HGLOBAL);
+ATOM WINAPI GlobalFindAtomA(LPCSTR);
+ATOM WINAPI GlobalFindAtomW(LPCWSTR);
+VOID WINAPI GlobalFix(HGLOBAL);
+UINT WINAPI GlobalFlags(HGLOBAL);
+HGLOBAL WINAPI GlobalFree(HGLOBAL);
+UINT WINAPI GlobalGetAtomNameA(ATOM,LPSTR,int);
+UINT WINAPI GlobalGetAtomNameW(ATOM,LPWSTR,int);
+HGLOBAL WINAPI GlobalHandle(PCVOID);
+LPVOID WINAPI GlobalLock(HGLOBAL);
+VOID WINAPI GlobalMemoryStatus(LPMEMORYSTATUS);
+HGLOBAL WINAPI GlobalReAlloc(HGLOBAL,DWORD,UINT);
+DWORD WINAPI GlobalSize(HGLOBAL);
+VOID WINAPI GlobalUnfix(HGLOBAL);
+BOOL WINAPI GlobalUnlock(HGLOBAL);
+BOOL WINAPI GlobalUnWire(HGLOBAL);
+PVOID WINAPI GlobalWire(HGLOBAL);
+#define HasOverlappedIoCompleted(lpOverlapped)  ((lpOverlapped)->Internal != STATUS_PENDING)
+PVOID WINAPI HeapAlloc(HANDLE,DWORD,DWORD);
+UINT WINAPI HeapCompact(HANDLE,DWORD);
+HANDLE WINAPI HeapCreate(DWORD,DWORD,DWORD);
+BOOL WINAPI HeapDestroy(HANDLE);
+BOOL WINAPI HeapFree(HANDLE,DWORD,PVOID);
+BOOL WINAPI HeapLock(HANDLE);
+PVOID WINAPI HeapReAlloc(HANDLE,DWORD,PVOID,DWORD);
+DWORD WINAPI HeapSize(HANDLE,DWORD,PCVOID);
+BOOL WINAPI HeapUnlock(HANDLE);
+BOOL WINAPI HeapValidate(HANDLE,DWORD,PCVOID);
+BOOL WINAPI HeapWalk(HANDLE,LPPROCESS_HEAP_ENTRY);
+BOOL WINAPI ImpersonateLoggedOnUser(HANDLE);
+BOOL WINAPI ImpersonateNamedPipeClient(HANDLE);
+BOOL WINAPI ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
+BOOL WINAPI InitAtomTable(DWORD);
+BOOL WINAPI InitializeAcl(PACL,DWORD,DWORD);
+VOID WINAPI InitializeCriticalSection(LPCRITICAL_SECTION);
+#if (_WIN32_WINNT >= 0x0403) /* Needs NT4, SP3 or later.  */
+BOOL WINAPI InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION,DWORD);
+DWORD WINAPI SetCriticalSectionSpinCount(LPCRITICAL_SECTION,DWORD);
+#endif
+BOOL WINAPI InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
+BOOL WINAPI InitializeSid (PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
+LONG WINAPI InterlockedCompareExchange(LPLONG,LONG,LONG);
+/* PVOID WINAPI InterlockedCompareExchangePointer(PVOID*,PVOID,PVOID); */
+#define InterlockedCompareExchangePointer(d,e,c) \
+    (PVOID)InterlockedCompareExchange((LPLONG)(d),(LONG)(e),(LONG)(c))
+LONG WINAPI InterlockedDecrement(LPLONG);
+LONG WINAPI InterlockedExchange(LPLONG,LONG);
+/* PVOID WINAPI InterlockedExchangePointer(PVOID*,PVOID); */
+#define InterlockedExchangePointer(t,v) \
+    (PVOID)InterlockedExchange((LPLONG)(t),(LONG)(v))
+LONG WINAPI InterlockedExchangeAdd(PLONG,LONG);
+LONG WINAPI InterlockedIncrement(LPLONG);
+BOOL WINAPI IsBadCodePtr(FARPROC);
+BOOL WINAPI IsBadHugeReadPtr(PCVOID,UINT);
+BOOL WINAPI IsBadHugeWritePtr(PVOID,UINT);
+BOOL WINAPI IsBadReadPtr(PCVOID,UINT);
+BOOL WINAPI IsBadStringPtrA(LPCSTR,UINT);
+BOOL WINAPI IsBadStringPtrW(LPCWSTR,UINT);
+BOOL WINAPI IsBadWritePtr(PVOID,UINT);
+BOOL WINAPI IsDebuggerPresent(void);
+BOOL WINAPI IsProcessorFeaturePresent(DWORD);
+BOOL WINAPI IsTextUnicode(PCVOID,int,LPINT);
+BOOL WINAPI IsValidAcl(PACL);
+BOOL WINAPI IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
+BOOL WINAPI IsValidSid(PSID);
+void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION);
+#define LimitEmsPages(n)
+HINSTANCE WINAPI LoadLibraryA(LPCSTR);
+HINSTANCE WINAPI LoadLibraryExA(LPCSTR,HANDLE,DWORD);
+HINSTANCE WINAPI LoadLibraryExW(LPCWSTR,HANDLE,DWORD);
+HINSTANCE WINAPI LoadLibraryW(LPCWSTR);
+DWORD WINAPI LoadModule(LPCSTR,PVOID);
+HGLOBAL WINAPI LoadResource(HINSTANCE,HRSRC);
+HLOCAL WINAPI LocalAlloc(UINT,UINT);
+UINT WINAPI LocalCompact(UINT);
+HLOCAL LocalDiscard(HLOCAL);
+BOOL WINAPI LocalFileTimeToFileTime(CONST FILETIME *,LPFILETIME);
+UINT WINAPI LocalFlags(HLOCAL);
+HLOCAL WINAPI LocalFree(HLOCAL);
+HLOCAL WINAPI LocalHandle(LPCVOID);
+PVOID WINAPI LocalLock(HLOCAL);
+HLOCAL WINAPI LocalReAlloc(HLOCAL,UINT,UINT);
+UINT WINAPI LocalShrink(HLOCAL,UINT);
+UINT WINAPI LocalSize(HLOCAL);
+BOOL WINAPI LocalUnlock(HLOCAL);
+BOOL WINAPI LockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
+BOOL WINAPI LockFileEx(HANDLE,DWORD,DWORD,DWORD,DWORD,LPOVERLAPPED);
+PVOID WINAPI LockResource(HGLOBAL);
+#define LockSegment(w) GlobalFix((HANDLE)(w))
+BOOL WINAPI LogonUserA(LPSTR,LPSTR,LPSTR,DWORD,DWORD,PHANDLE);
+BOOL WINAPI LogonUserW(LPWSTR,LPWSTR,LPWSTR,DWORD,DWORD,PHANDLE);
+BOOL WINAPI LookupAccountNameA(LPCSTR,LPCSTR,PSID,PDWORD,LPSTR,PDWORD,PSID_NAME_USE);
+BOOL WINAPI LookupAccountNameW(LPCWSTR,LPCWSTR,PSID,PDWORD,LPWSTR,PDWORD,PSID_NAME_USE);
+BOOL WINAPI LookupAccountSidA(LPCSTR,PSID,LPSTR,PDWORD,LPSTR,PDWORD,PSID_NAME_USE);
+BOOL WINAPI LookupAccountSidW(LPCWSTR,PSID,LPWSTR,PDWORD,LPWSTR,PDWORD,PSID_NAME_USE);
+BOOL WINAPI LookupPrivilegeDisplayNameA(LPCSTR,LPCSTR,LPSTR,PDWORD,PDWORD);
+BOOL WINAPI LookupPrivilegeDisplayNameW(LPCWSTR,LPCWSTR,LPWSTR,PDWORD,PDWORD);
+BOOL WINAPI LookupPrivilegeNameA(LPCSTR,PLUID,LPSTR,PDWORD);
+BOOL WINAPI LookupPrivilegeNameW(LPCWSTR,PLUID,LPWSTR,PDWORD);
+BOOL WINAPI LookupPrivilegeValueA(LPCSTR,LPCSTR,PLUID);
+BOOL WINAPI LookupPrivilegeValueW(LPCWSTR,LPCWSTR,PLUID);
+LPSTR WINAPI lstrcatA(LPSTR,LPCSTR);
+LPWSTR WINAPI lstrcatW(LPWSTR,LPCWSTR);
+int WINAPI lstrcmpA(LPCSTR,LPCSTR);
+int WINAPI lstrcmpiA(LPCSTR,LPCSTR);
+int WINAPI lstrcmpiW( LPCWSTR,LPCWSTR);
+int WINAPI lstrcmpW(LPCWSTR,LPCWSTR);
+LPSTR WINAPI lstrcpyA(LPSTR,LPCSTR);
+LPSTR WINAPI lstrcpynA(LPSTR,LPCSTR,int);
+LPWSTR WINAPI lstrcpynW(LPWSTR,LPCWSTR,int);
+LPWSTR WINAPI lstrcpyW(LPWSTR,LPCWSTR);
+int WINAPI lstrlenA(LPCSTR);
+int WINAPI lstrlenW(LPCWSTR);
+BOOL WINAPI MakeAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
+#define MakeProcInstance(p,i) (p)
+BOOL WINAPI MakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD);
+VOID WINAPI MapGenericMask(PDWORD,PGENERIC_MAPPING);
+PVOID WINAPI MapViewOfFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
+PVOID WINAPI MapViewOfFileEx(HANDLE,DWORD,DWORD,DWORD,DWORD,PVOID);
+BOOL WINAPI MoveFileA(LPCSTR,LPCSTR);
+BOOL WINAPI MoveFileExA(LPCSTR,LPCSTR,DWORD);
+BOOL WINAPI MoveFileExW(LPCWSTR,LPCWSTR,DWORD);
+BOOL WINAPI MoveFileW(LPCWSTR,LPCWSTR);
+int WINAPI MulDiv(int,int,int);
+BOOL WINAPI NotifyChangeEventLog(HANDLE,HANDLE);
+BOOL WINAPI ObjectCloseAuditAlarmA(LPCSTR,PVOID,BOOL);
+BOOL WINAPI ObjectCloseAuditAlarmW(LPCWSTR,PVOID,BOOL);
+BOOL WINAPI ObjectDeleteAuditAlarmA(LPCSTR,PVOID,BOOL);
+BOOL WINAPI ObjectDeleteAuditAlarmW(LPCWSTR,PVOID,BOOL);
+BOOL WINAPI ObjectOpenAuditAlarmA(LPCSTR,PVOID,LPSTR,LPSTR,PSECURITY_DESCRIPTOR,HANDLE,DWORD,DWORD,PPRIVILEGE_SET,BOOL,BOOL,PBOOL);
+BOOL WINAPI ObjectOpenAuditAlarmW(LPCWSTR,PVOID,LPWSTR,LPWSTR,PSECURITY_DESCRIPTOR,HANDLE,DWORD,DWORD,PPRIVILEGE_SET,BOOL,BOOL,PBOOL);
+BOOL WINAPI ObjectPrivilegeAuditAlarmA(LPCSTR,PVOID,HANDLE,DWORD,PPRIVILEGE_SET,BOOL);
+BOOL WINAPI ObjectPrivilegeAuditAlarmW(LPCWSTR,PVOID,HANDLE,DWORD,PPRIVILEGE_SET,BOOL);
+HANDLE WINAPI OpenBackupEventLogA(LPCSTR,LPCSTR);
+HANDLE WINAPI OpenBackupEventLogW(LPCWSTR,LPCWSTR);
+HANDLE WINAPI OpenEventA(DWORD,BOOL,LPCSTR);
+HANDLE WINAPI OpenEventLogA (LPCSTR,LPCSTR);
+HANDLE WINAPI OpenEventLogW(LPCWSTR,LPCWSTR);
+HANDLE WINAPI OpenEventW(DWORD,BOOL,LPCWSTR);
+HFILE WINAPI OpenFile(LPCSTR,LPOFSTRUCT,UINT);
+HANDLE WINAPI OpenFileMappingA(DWORD,BOOL,LPCSTR);
+HANDLE WINAPI OpenFileMappingW(DWORD,BOOL,LPCWSTR);
+HANDLE WINAPI OpenMutexA(DWORD,BOOL,LPCSTR);
+HANDLE WINAPI OpenMutexW(DWORD,BOOL,LPCWSTR);
+HANDLE WINAPI OpenProcess(DWORD,BOOL,DWORD);
+BOOL WINAPI OpenProcessToken(HANDLE,DWORD,PHANDLE);
+HANDLE WINAPI OpenSemaphoreA(DWORD,BOOL,LPCSTR);
+HANDLE WINAPI OpenSemaphoreW(DWORD,BOOL,LPCWSTR);
+BOOL WINAPI OpenThreadToken(HANDLE,DWORD,BOOL,PHANDLE);
+HANDLE WINAPI OpenWaitableTimerA(DWORD,BOOL,LPCSTR);
+HANDLE WINAPI OpenWaitableTimerW(DWORD,BOOL,LPCWSTR);
+void WINAPI OutputDebugStringA(LPCSTR);
+void WINAPI OutputDebugStringW(LPCWSTR);
+BOOL WINAPI PeekNamedPipe(HANDLE,PVOID,DWORD,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI PostQueuedCompletionStatus(HANDLE,DWORD,DWORD,LPOVERLAPPED);
+DWORD WINAPI PrepareTape(HANDLE,DWORD,BOOL);
+BOOL WINAPI PrivilegeCheck (HANDLE,PPRIVILEGE_SET,PBOOL);
+BOOL WINAPI PrivilegedServiceAuditAlarmA(LPCSTR,LPCSTR,HANDLE,PPRIVILEGE_SET,BOOL);
+BOOL WINAPI PrivilegedServiceAuditAlarmW(LPCWSTR,LPCWSTR,HANDLE,PPRIVILEGE_SET,BOOL);
+BOOL WINAPI PulseEvent(HANDLE);
+BOOL WINAPI PurgeComm(HANDLE,DWORD);
+DWORD WINAPI QueryDosDeviceA(LPCSTR,LPSTR,DWORD);
+DWORD WINAPI QueryDosDeviceW(LPCWSTR,LPWSTR,DWORD);
+BOOL WINAPI QueryPerformanceCounter(PLARGE_INTEGER);
+BOOL WINAPI QueryPerformanceFrequency(PLARGE_INTEGER);
+DWORD WINAPI QueueUserAPC(PAPCFUNC,HANDLE,DWORD);
+void WINAPI RaiseException(DWORD,DWORD,DWORD,const DWORD*);
+BOOL WINAPI ReadDirectoryChangesW(HANDLE,PVOID,DWORD,BOOL,DWORD,PDWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
+BOOL WINAPI ReadEventLogA(HANDLE,DWORD,DWORD,PVOID,DWORD,DWORD *,DWORD *);
+BOOL WINAPI ReadEventLogW(HANDLE,DWORD,DWORD,PVOID,DWORD,DWORD *,DWORD *);
+BOOL WINAPI ReadFile(HANDLE,PVOID,DWORD,PDWORD,LPOVERLAPPED);
+BOOL WINAPI ReadFileEx(HANDLE,PVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
+BOOL WINAPI ReadProcessMemory(HANDLE,PCVOID,PVOID,DWORD,PDWORD);
+HANDLE WINAPI RegisterEventSourceA (LPCSTR,LPCSTR);
+HANDLE WINAPI RegisterEventSourceW(LPCWSTR,LPCWSTR);
+BOOL WINAPI ReleaseMutex(HANDLE);
+BOOL WINAPI ReleaseSemaphore(HANDLE,LONG,LPLONG);
+BOOL WINAPI RemoveDirectoryA(LPCSTR);
+BOOL WINAPI RemoveDirectoryW(LPCWSTR);
+BOOL WINAPI ReportEventA(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWORD,LPCSTR*,PVOID);
+BOOL WINAPI ReportEventW(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWORD,LPCWSTR*,PVOID);
+BOOL WINAPI ResetEvent(HANDLE);
+DWORD WINAPI ResumeThread(HANDLE);
+BOOL WINAPI RevertToSelf(void);
+DWORD WINAPI SearchPathA(LPCSTR,LPCSTR,LPCSTR,DWORD,LPSTR,LPSTR*);
+DWORD WINAPI SearchPathW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPWSTR,LPWSTR*);
+BOOL WINAPI SetAclInformation(PACL,PVOID,DWORD,ACL_INFORMATION_CLASS);
+BOOL WINAPI SetCommBreak(HANDLE);
+BOOL WINAPI SetCommConfig(HANDLE,LPCOMMCONFIG,DWORD);
+BOOL WINAPI SetCommMask(HANDLE,DWORD);
+BOOL WINAPI SetCommState(HANDLE,LPDCB);
+BOOL WINAPI SetCommTimeouts(HANDLE,LPCOMMTIMEOUTS);
+BOOL WINAPI SetComputerNameA(LPCSTR);
+BOOL WINAPI SetComputerNameW(LPCWSTR);
+BOOL WINAPI SetCurrentDirectoryA(LPCSTR);
+BOOL WINAPI SetCurrentDirectoryW(LPCWSTR);
+BOOL WINAPI SetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,DWORD);
+BOOL WINAPI SetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,DWORD);
+BOOL WINAPI SetEndOfFile(HANDLE);
+BOOL WINAPI SetEnvironmentVariableA(LPCSTR,LPCSTR);
+BOOL WINAPI SetEnvironmentVariableW(LPCWSTR,LPCWSTR);
+UINT WINAPI SetErrorMode(UINT);
+BOOL WINAPI SetEvent(HANDLE);
+VOID WINAPI SetFileApisToANSI(void);
+VOID WINAPI SetFileApisToOEM(void);
+BOOL WINAPI SetFileAttributesA(LPCSTR,DWORD);
+BOOL WINAPI SetFileAttributesW(LPCWSTR,DWORD);
+DWORD WINAPI SetFilePointer(HANDLE,LONG,PLONG,DWORD);
+BOOL WINAPI SetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+BOOL WINAPI SetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+BOOL WINAPI SetFileTime(HANDLE,const FILETIME*,const FILETIME*,const FILETIME*);
+UINT WINAPI SetHandleCount(UINT);
+BOOL WINAPI SetHandleInformation(HANDLE,DWORD,DWORD);
+BOOL WINAPI SetKernelObjectSecurity(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+void WINAPI SetLastError(DWORD);
+void WINAPI SetLastErrorEx(DWORD,DWORD);
+BOOL WINAPI SetLocalTime(const SYSTEMTIME*);
+BOOL WINAPI SetMailslotInfo(HANDLE,DWORD);
+BOOL WINAPI SetNamedPipeHandleState(HANDLE,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI SetPriorityClass(HANDLE,DWORD);
+BOOL WINAPI SetPrivateObjectSecurity(SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR *,PGENERIC_MAPPING,HANDLE);
+BOOL WINAPI SetProcessAffinityMask(HANDLE,DWORD);
+BOOL WINAPI SetProcessPriorityBoost(HANDLE,BOOL);
+BOOL WINAPI SetProcessShutdownParameters(DWORD,DWORD);
+BOOL WINAPI SetProcessWorkingSetSize(HANDLE,DWORD,DWORD);
+BOOL WINAPI SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
+BOOL WINAPI SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR,BOOL,PACL,BOOL);
+BOOL WINAPI SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR,PSID,BOOL);
+BOOL WINAPI SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR,PSID,BOOL);
+BOOL WINAPI SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR,BOOL,PACL,BOOL);
+BOOL WINAPI SetStdHandle(DWORD,HANDLE);
+#define SetSwapAreaSize(w) (w)
+BOOL WINAPI SetSystemPowerState(BOOL,BOOL);
+BOOL WINAPI SetSystemTime(const SYSTEMTIME*);
+BOOL WINAPI SetSystemTimeAdjustment(DWORD,BOOL);
+DWORD WINAPI SetTapeParameters(HANDLE,DWORD,PVOID);
+DWORD WINAPI SetTapePosition(HANDLE,DWORD,DWORD,DWORD,DWORD,BOOL);
+DWORD WINAPI SetThreadAffinityMask(HANDLE,DWORD);
+BOOL WINAPI SetThreadContext(HANDLE,const CONTEXT*);
+DWORD WINAPI SetThreadIdealProcessor(HANDLE,DWORD);
+BOOL WINAPI SetThreadPriority(HANDLE,int);
+BOOL WINAPI SetThreadPriorityBoost(HANDLE,BOOL);
+BOOL WINAPI SetThreadToken (PHANDLE,HANDLE);
+BOOL WINAPI SetTimeZoneInformation(const TIME_ZONE_INFORMATION *);
+BOOL WINAPI SetTokenInformation(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,DWORD);
+LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER);
+BOOL WINAPI SetupComm(HANDLE,DWORD,DWORD);
+BOOL WINAPI SetVolumeLabelA(LPCSTR,LPCSTR);
+BOOL WINAPI SetVolumeLabelW(LPCWSTR,LPCWSTR);
+BOOL WINAPI SetWaitableTimer(HANDLE,const LARGE_INTEGER*,LONG,PTIMERAPCROUTINE,PVOID,BOOL);
+BOOL WINAPI SignalObjectAndWait(HANDLE,HANDLE,DWORD,BOOL);
+DWORD WINAPI SizeofResource(HINSTANCE,HRSRC);
+void WINAPI Sleep(DWORD);
+DWORD WINAPI SleepEx(DWORD,BOOL);
+DWORD WINAPI SuspendThread(HANDLE);
+void WINAPI SwitchToFiber(PVOID);
+BOOL WINAPI SwitchToThread(void);
+BOOL WINAPI SystemTimeToFileTime(const SYSTEMTIME*,LPFILETIME);
+BOOL WINAPI SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION,LPSYSTEMTIME,LPSYSTEMTIME);
+BOOL WINAPI TerminateProcess(HANDLE,UINT);
+BOOL WINAPI TerminateThread(HANDLE,DWORD);
+DWORD WINAPI TlsAlloc(VOID);
+BOOL WINAPI TlsFree(DWORD);
+PVOID WINAPI TlsGetValue(DWORD);
+BOOL WINAPI TlsSetValue(DWORD,PVOID);
+BOOL WINAPI TransactNamedPipe(HANDLE,PVOID,DWORD,PVOID,DWORD,PDWORD,LPOVERLAPPED);
+BOOL WINAPI TransmitCommChar(HANDLE,char);
+BOOL WINAPI TryEnterCriticalSection(LPCRITICAL_SECTION);
+LONG WINAPI UnhandledExceptionFilter(LPEXCEPTION_POINTERS);
+BOOL WINAPI UnlockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
+BOOL WINAPI UnlockFileEx(HANDLE,DWORD,DWORD,DWORD,LPOVERLAPPED);
+#define UnlockResource(h) (h)
+#define UnlockSegment(w) GlobalUnfix((HANDLE)(w))
+BOOL WINAPI UnmapViewOfFile(PVOID);
+BOOL WINAPI UpdateResourceA(HANDLE,LPCSTR,LPCSTR,WORD,PVOID,DWORD);
+BOOL WINAPI UpdateResourceW(HANDLE,LPCWSTR,LPCWSTR,WORD,PVOID,DWORD);
+BOOL WINAPI VerifyVersionInfoA(LPOSVERSIONINFOEXA,DWORD,DWORDLONG);
+BOOL WINAPI VerifyVersionInfoW(LPOSVERSIONINFOEXW,DWORD,DWORDLONG);
+PVOID WINAPI VirtualAlloc(PVOID,DWORD,DWORD,DWORD);
+PVOID WINAPI VirtualAllocEx(HANDLE,PVOID,DWORD,DWORD,DWORD);
+BOOL WINAPI VirtualFree(PVOID,DWORD,DWORD);
+BOOL WINAPI VirtualFreeEx(HANDLE,PVOID,DWORD,DWORD);
+BOOL WINAPI VirtualLock(PVOID,DWORD);
+BOOL WINAPI VirtualProtect(PVOID,DWORD,DWORD,PDWORD);
+BOOL WINAPI VirtualProtectEx(HANDLE,PVOID,DWORD,DWORD,PDWORD);
+DWORD WINAPI VirtualQuery(LPCVOID,PMEMORY_BASIC_INFORMATION,DWORD);
+DWORD WINAPI VirtualQueryEx(HANDLE,LPCVOID,PMEMORY_BASIC_INFORMATION,DWORD);
+BOOL WINAPI VirtualUnlock(PVOID,DWORD);
+BOOL WINAPI WaitCommEvent(HANDLE,PDWORD,LPOVERLAPPED);
+BOOL WINAPI WaitForDebugEvent(LPDEBUG_EVENT,DWORD);
+DWORD WINAPI WaitForMultipleObjects(DWORD,const HANDLE*,BOOL,DWORD);
+DWORD WINAPI WaitForMultipleObjectsEx(DWORD,const HANDLE*,BOOL,DWORD,BOOL);
+DWORD WINAPI WaitForSingleObject(HANDLE,DWORD);
+DWORD WINAPI WaitForSingleObjectEx(HANDLE,DWORD,BOOL);
+BOOL WINAPI WaitNamedPipeA(LPCSTR,DWORD);
+BOOL WINAPI WaitNamedPipeW(LPCWSTR,DWORD);
+BOOL WINAPI WinLoadTrustProvider(GUID*);
+BOOL WINAPI WriteFile(HANDLE,PCVOID,DWORD,PDWORD,LPOVERLAPPED);
+BOOL WINAPI WriteFileEx(HANDLE,PCVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
+BOOL WINAPI WritePrivateProfileSectionA(LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI WritePrivateProfileSectionW(LPCWSTR,LPCWSTR,LPCWSTR);
+BOOL WINAPI WritePrivateProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI WritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+BOOL WINAPI WritePrivateProfileStructA(LPCSTR,LPCSTR,PVOID,UINT,LPCSTR);
+BOOL WINAPI WritePrivateProfileStructW(LPCWSTR,LPCWSTR,PVOID,UINT,LPCWSTR);
+BOOL WINAPI WriteProcessMemory(HANDLE,PVOID,PVOID,DWORD,PDWORD);
+BOOL WINAPI WriteProfileSectionA(LPCSTR,LPCSTR);
+BOOL WINAPI WriteProfileSectionW(LPCWSTR,LPCWSTR);
+BOOL WINAPI WriteProfileStringA(LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI WriteProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR);
+DWORD WINAPI WriteTapemark(HANDLE,DWORD,DWORD,BOOL);
+#define Yield()
+
+#ifdef UNICODE
+typedef STARTUPINFOW STARTUPINFO,*LPSTARTUPINFO;
+typedef WIN32_FIND_DATAW WIN32_FIND_DATA,*LPWIN32_FIND_DATA;
+typedef HW_PROFILE_INFOW HW_PROFILE_INFO,*LPHW_PROFILE_INFO;
+#define AccessCheckAndAuditAlarm AccessCheckAndAuditAlarmW
+#define AddAtom AddAtomW
+#define BackupEventLog BackupEventLogW
+#define BeginUpdateResource BeginUpdateResourceW
+#define BuildCommDCB BuildCommDCBW
+#define BuildCommDCBAndTimeouts BuildCommDCBAndTimeoutsW
+#define CallNamedPipe CallNamedPipeW
+#define ClearEventLog ClearEventLogW
+#define CommConfigDialog CommConfigDialogW
+#define CopyFile CopyFileW
+#define CopyFileEx CopyFileExW
+#define CreateDirectory CreateDirectoryW
+#define CreateDirectoryEx CreateDirectoryExW
+#define CreateEvent CreateEventW
+#define CreateFile CreateFileW
+#define CreateFileMapping CreateFileMappingW
+#define CreateHardLink CreateHardLinkW
+#define CreateMailslot CreateMailslotW
+#define CreateMutex CreateMutexW
+#define CreateNamedPipe CreateNamedPipeW
+#define CreateProcess CreateProcessW
+#define CreateProcessAsUser CreateProcessAsUserW
+#define CreateSemaphore CreateSemaphoreW
+#define CreateWaitableTimer CreateWaitableTimerW
+#define DefineDosDevice DefineDosDeviceW
+#define DeleteFile DeleteFileW
+#define EndUpdateResource EndUpdateResourceW
+#define EnumResourceLanguages EnumResourceLanguagesW
+#define EnumResourceNames EnumResourceNamesW
+#define EnumResourceTypes EnumResourceTypesW
+#define ExpandEnvironmentStrings ExpandEnvironmentStringsW
+#define FatalAppExit FatalAppExitW
+#define FindAtom FindAtomW
+#define FindFirstChangeNotification FindFirstChangeNotificationW
+#define FindFirstFile FindFirstFileW
+#define FindFirstFileEx FindFirstFileExW
+#define FindNextFile FindNextFileW
+#define FindResource FindResourceW
+#define FindResourceEx FindResourceExW
+#define FormatMessage FormatMessageW
+#define FreeEnvironmentStrings FreeEnvironmentStringsW
+#define GetAtomName GetAtomNameW
+#define GetBinaryType GetBinaryTypeW
+#define GetCommandLine GetCommandLineW
+#define GetCompressedFileSize GetCompressedFileSizeW
+#define GetComputerName GetComputerNameW
+#define GetCurrentDirectory GetCurrentDirectoryW
+#define GetDefaultCommConfig GetDefaultCommConfigW
+#define GetDiskFreeSpace GetDiskFreeSpaceW
+#define GetDiskFreeSpaceEx GetDiskFreeSpaceExW
+#define GetDriveType GetDriveTypeW
+#define GetEnvironmentStrings GetEnvironmentStringsW
+#define GetEnvironmentVariable GetEnvironmentVariableW
+#define GetFileAttributes GetFileAttributesW
+#define GetFileSecurity GetFileSecurityW
+#define GetFileAttributesEx GetFileAttributesExW
+#define GetFullPathName GetFullPathNameW
+#define GetLogicalDriveStrings GetLogicalDriveStringsW
+#define GetLongPathName GetLongPathNameW
+#define GetModuleFileName GetModuleFileNameW
+#define GetModuleHandle GetModuleHandleW
+#define GetNamedPipeHandleState GetNamedPipeHandleStateW
+#define GetPrivateProfileInt GetPrivateProfileIntW
+#define GetPrivateProfileSection GetPrivateProfileSectionW
+#define GetPrivateProfileSectionNames GetPrivateProfileSectionNamesW
+#define GetPrivateProfileString GetPrivateProfileStringW
+#define GetPrivateProfileStruct GetPrivateProfileStructW
+#define GetProfileInt GetProfileIntW
+#define GetProfileSection GetProfileSectionW
+#define GetProfileString GetProfileStringW
+#define GetShortPathName GetShortPathNameW
+#define GetStartupInfo GetStartupInfoW
+#define GetSystemDirectory GetSystemDirectoryW
+#define GetTempFileName GetTempFileNameW
+#define GetTempPath GetTempPathW
+#define GetUserName GetUserNameW
+#define GetVersionEx GetVersionExW
+#define GetVolumeInformation GetVolumeInformationW
+#define GetWindowsDirectory GetWindowsDirectoryW
+#define GlobalAddAtom GlobalAddAtomW
+#define GlobalFindAtom GlobalFindAtomW
+#define GlobalGetAtomName GlobalGetAtomNameW
+#define IsBadStringPtr IsBadStringPtrW
+#define LoadLibrary LoadLibraryW
+#define LoadLibraryEx LoadLibraryExW
+#define LogonUser LogonUserW
+#define LookupAccountName LookupAccountNameW
+#define LookupAccountSid LookupAccountSidW
+#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameW
+#define LookupPrivilegeName LookupPrivilegeNameW
+#define LookupPrivilegeValue LookupPrivilegeValueW
+#define lstrcat lstrcatW
+#define lstrcmp lstrcmpW
+#define lstrcmpi lstrcmpiW
+#define lstrcpy lstrcpyW
+#define lstrcpyn lstrcpynW
+#define lstrlen lstrlenW
+#define MoveFile MoveFileW
+#define MoveFileEx MoveFileExW
+#define ObjectCloseAuditAlarm ObjectCloseAuditAlarmW
+#define ObjectDeleteAuditAlarm ObjectDeleteAuditAlarmW
+#define ObjectOpenAuditAlarm ObjectOpenAuditAlarmW
+#define ObjectPrivilegeAuditAlarm ObjectPrivilegeAuditAlarmW
+#define OpenBackupEventLog OpenBackupEventLogW
+#define OpenEvent OpenEventW
+#define OpenEventLog OpenEventLogW
+#define OpenFileMapping OpenFileMappingW
+#define OpenMutex OpenMutexW
+#define OpenSemaphore OpenSemaphoreW
+#define OutputDebugString OutputDebugStringW
+#define PrivilegedServiceAuditAlarm PrivilegedServiceAuditAlarmW
+#define QueryDosDevice QueryDosDeviceW
+#define ReadEventLog ReadEventLogW
+#define RegisterEventSource RegisterEventSourceW
+#define RemoveDirectory RemoveDirectoryW
+#define ReportEvent ReportEventW
+#define SearchPath SearchPathW
+#define SetComputerName SetComputerNameW
+#define SetCurrentDirectory SetCurrentDirectoryW
+#define SetDefaultCommConfig SetDefaultCommConfigW
+#define SetEnvironmentVariable SetEnvironmentVariableW
+#define SetFileAttributes SetFileAttributesW
+#define SetFileSecurity SetFileSecurityW
+#define SetVolumeLabel SetVolumeLabelW
+#define UpdateResource UpdateResourceW
+#define VerifyVersionInfo VerifyVersionInfoW
+#define WaitNamedPipe WaitNamedPipeW
+#define WritePrivateProfileSection WritePrivateProfileSectionW
+#define WritePrivateProfileString WritePrivateProfileStringW
+#define WritePrivateProfileStruct WritePrivateProfileStructW
+#define WriteProfileSection WriteProfileSectionW
+#define WriteProfileString WriteProfileStringW
+#else
+typedef STARTUPINFOA STARTUPINFO,*LPSTARTUPINFO;
+typedef WIN32_FIND_DATAA WIN32_FIND_DATA,*LPWIN32_FIND_DATA;
+typedef HW_PROFILE_INFOA HW_PROFILE_INFO,*LPHW_PROFILE_INFO;
+#define AccessCheckAndAuditAlarm AccessCheckAndAuditAlarmA
+#define AddAtom AddAtomA
+#define BackupEventLog BackupEventLogA
+#define BeginUpdateResource BeginUpdateResourceA
+#define BuildCommDCB BuildCommDCBA
+#define BuildCommDCBAndTimeouts BuildCommDCBAndTimeoutsA
+#define CallNamedPipe CallNamedPipeA
+#define ClearEventLog ClearEventLogA
+#define CommConfigDialog CommConfigDialogA
+#define CopyFile CopyFileA
+#define CopyFileEx CopyFileExA
+#define CreateDirectory CreateDirectoryA
+#define CreateDirectoryEx CreateDirectoryExA
+#define CreateEvent CreateEventA
+#define CreateFile CreateFileA
+#define CreateFileMapping CreateFileMappingA
+#define CreateHardLink CreateHardLinkA
+#define CreateMailslot CreateMailslotA
+#define CreateMutex CreateMutexA
+#define CreateNamedPipe CreateNamedPipeA
+#define CreateProcess CreateProcessA
+#define CreateProcessAsUser CreateProcessAsUserA
+#define CreateSemaphore CreateSemaphoreA
+#define CreateWaitableTimer CreateWaitableTimerA
+#define DefineDosDevice DefineDosDeviceA
+#define DeleteFile DeleteFileA
+#define EndUpdateResource EndUpdateResourceA
+#define EnumResourceLanguages EnumResourceLanguagesA
+#define EnumResourceNames EnumResourceNamesA
+#define EnumResourceTypes EnumResourceTypesA
+#define ExpandEnvironmentStrings ExpandEnvironmentStringsA
+#define FatalAppExit FatalAppExitA
+#define FindAtom FindAtomA
+#define FindFirstChangeNotification FindFirstChangeNotificationA
+#define FindFirstFile FindFirstFileA
+#define FindFirstFileEx FindFirstFileExW
+#define FindNextFile FindNextFileA
+#define FindResource FindResourceA
+#define FindResourceEx FindResourceExA
+#define FormatMessage FormatMessageA
+#define FreeEnvironmentStrings FreeEnvironmentStringsA
+#define GetAtomName GetAtomNameA
+#define GetBinaryType GetBinaryTypeA
+#define GetCommandLine GetCommandLineA
+#define GetComputerName GetComputerNameA
+#define GetCompressedFileSize GetCompressedFileSizeA
+#define GetCurrentDirectory GetCurrentDirectoryA
+#define GetDefaultCommConfig GetDefaultCommConfigA
+#define GetDiskFreeSpace GetDiskFreeSpaceA
+#define GetDiskFreeSpaceEx GetDiskFreeSpaceExA
+#define GetDriveType GetDriveTypeA
+#define GetEnvironmentStringsA GetEnvironmentStrings
+#define GetEnvironmentVariable GetEnvironmentVariableA
+#define GetFileAttributes GetFileAttributesA
+#define GetFileSecurity GetFileSecurityA
+#define GetFileAttributesEx GetFileAttributesExA
+#define GetFullPathName GetFullPathNameA
+#define GetLogicalDriveStrings GetLogicalDriveStringsA
+#define GetLongPathName GetLongPathNameA
+#define GetNamedPipeHandleState GetNamedPipeHandleStateA
+#define GetModuleHandle GetModuleHandleA
+#define GetModuleFileName GetModuleFileNameA
+#define GetPrivateProfileInt GetPrivateProfileIntA
+#define GetPrivateProfileSection GetPrivateProfileSectionA
+#define GetPrivateProfileSectionNames GetPrivateProfileSectionNamesA
+#define GetPrivateProfileString GetPrivateProfileStringA
+#define GetPrivateProfileStruct GetPrivateProfileStructA
+#define GetProfileInt GetProfileIntA
+#define GetProfileSection GetProfileSectionA
+#define GetProfileString GetProfileStringA
+#define GetShortPathName GetShortPathNameA
+#define GetStartupInfo GetStartupInfoA
+#define GetSystemDirectory GetSystemDirectoryA
+#define GetTempFileName GetTempFileNameA
+#define GetTempPath GetTempPathA
+#define GetUserName GetUserNameA
+#define GetVersionEx GetVersionExA
+#define GetVolumeInformation GetVolumeInformationA
+#define GetWindowsDirectory GetWindowsDirectoryA
+#define GlobalAddAtom GlobalAddAtomA
+#define GlobalFindAtom GlobalFindAtomA
+#define GlobalGetAtomName GlobalGetAtomNameA
+#define IsBadStringPtr IsBadStringPtrA
+#define LoadLibrary LoadLibraryA
+#define LoadLibraryEx LoadLibraryExA
+#define LogonUser LogonUserA
+#define LookupAccountName LookupAccountNameA
+#define LookupAccountSid LookupAccountSidA
+#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameA
+#define LookupPrivilegeName LookupPrivilegeNameA
+#define LookupPrivilegeValue LookupPrivilegeValueA
+#define lstrcat lstrcatA
+#define lstrcmp lstrcmpA
+#define lstrcmpi lstrcmpiA
+#define lstrcpy lstrcpyA
+#define lstrcpyn lstrcpynA
+#define lstrlen lstrlenA
+#define MoveFile MoveFileA
+#define MoveFileEx MoveFileExA
+#define ObjectCloseAuditAlarm ObjectCloseAuditAlarmA
+#define ObjectDeleteAuditAlarm ObjectDeleteAuditAlarmA
+#define ObjectOpenAuditAlarm ObjectOpenAuditAlarmA
+#define ObjectPrivilegeAuditAlarm ObjectPrivilegeAuditAlarmA
+#define OpenBackupEventLog OpenBackupEventLogA
+#define OpenEvent OpenEventA
+#define OpenEventLog OpenEventLogA
+#define OpenFileMapping OpenFileMappingA
+#define OpenMutex OpenMutexA
+#define OpenSemaphore OpenSemaphoreA
+#define OutputDebugString OutputDebugStringA
+#define PrivilegedServiceAuditAlarm PrivilegedServiceAuditAlarmA
+#define QueryDosDevice QueryDosDeviceA
+#define ReadEventLog ReadEventLogA
+#define RegisterEventSource RegisterEventSourceA
+#define RemoveDirectory RemoveDirectoryA
+#define ReportEvent ReportEventA
+#define SearchPath SearchPathA
+#define SetComputerName SetComputerNameA
+#define SetCurrentDirectory SetCurrentDirectoryA
+#define SetDefaultCommConfig SetDefaultCommConfigA
+#define SetEnvironmentVariable SetEnvironmentVariableA
+#define SetFileAttributes SetFileAttributesA
+#define SetFileSecurity SetFileSecurityA
+#define SetVolumeLabel SetVolumeLabelA
+#define UpdateResource UpdateResourceA
+#define VerifyVersionInfo VerifyVersionInfoA
+#define WaitNamedPipe WaitNamedPipeA
+#define WritePrivateProfileSection WritePrivateProfileSectionA
+#define WritePrivateProfileString WritePrivateProfileStringA
+#define WritePrivateProfileStruct WritePrivateProfileStructA
+#define WriteProfileSection WriteProfileSectionA
+#define WriteProfileString WriteProfileStringA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif /* _WINBASE_H */
diff --git a/Win32/bin/tcc/include/winapi/wincon.h b/Win32/bin/tcc/include/winapi/wincon.h
new file mode 100644
index 0000000..6f6d638
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/wincon.h
@@ -0,0 +1,207 @@
+#ifndef _WINCON_H
+#define _WINCON_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define FOREGROUND_BLUE	1
+#define FOREGROUND_GREEN	2
+#define FOREGROUND_RED	4
+#define FOREGROUND_INTENSITY	8
+#define BACKGROUND_BLUE	16
+#define BACKGROUND_GREEN	32
+#define BACKGROUND_RED	64
+#define BACKGROUND_INTENSITY	128
+#define CTRL_C_EVENT 0
+#define CTRL_BREAK_EVENT 1
+#define CTRL_CLOSE_EVENT 2
+#define CTRL_LOGOFF_EVENT 5
+#define CTRL_SHUTDOWN_EVENT 6
+#define ENABLE_LINE_INPUT 2
+#define ENABLE_ECHO_INPUT 4
+#define ENABLE_PROCESSED_INPUT 1
+#define ENABLE_WINDOW_INPUT 8
+#define ENABLE_MOUSE_INPUT 16
+#define ENABLE_PROCESSED_OUTPUT 1
+#define ENABLE_WRAP_AT_EOL_OUTPUT 2
+#define KEY_EVENT 1
+#define MOUSE_EVENT 2
+#define WINDOW_BUFFER_SIZE_EVENT 4
+#define MENU_EVENT 8
+#define FOCUS_EVENT 16
+#define CAPSLOCK_ON 128
+#define ENHANCED_KEY 256
+#define RIGHT_ALT_PRESSED 1
+#define LEFT_ALT_PRESSED 2
+#define RIGHT_CTRL_PRESSED 4
+#define LEFT_CTRL_PRESSED 8
+#define SHIFT_PRESSED 16
+#define NUMLOCK_ON 32
+#define SCROLLLOCK_ON 64
+#define FROM_LEFT_1ST_BUTTON_PRESSED 1
+#define RIGHTMOST_BUTTON_PRESSED 2
+#define FROM_LEFT_2ND_BUTTON_PRESSED 4
+#define FROM_LEFT_3RD_BUTTON_PRESSED 8
+#define FROM_LEFT_4TH_BUTTON_PRESSED 16
+#define MOUSE_MOVED	1
+#define DOUBLE_CLICK	2
+#define MOUSE_WHEELED	4
+
+typedef struct _CHAR_INFO {
+	union {
+		WCHAR UnicodeChar;
+		CHAR AsciiChar;
+	} Char;
+	WORD Attributes;
+} CHAR_INFO,*PCHAR_INFO;
+typedef struct _SMALL_RECT {
+	SHORT Left;
+	SHORT Top;
+	SHORT Right;
+	SHORT Bottom;
+} SMALL_RECT,*PSMALL_RECT;
+typedef struct _CONSOLE_CURSOR_INFO {
+	DWORD	dwSize;
+	BOOL	bVisible;
+} CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;
+typedef struct _COORD {
+	SHORT X;
+	SHORT Y;
+} COORD;
+typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
+	COORD	dwSize;
+	COORD	dwCursorPosition;
+	WORD	wAttributes;
+	SMALL_RECT srWindow;
+	COORD	dwMaximumWindowSize;
+} CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO;
+typedef BOOL(CALLBACK *PHANDLER_ROUTINE)(DWORD);
+typedef struct _KEY_EVENT_RECORD {
+	BOOL bKeyDown;
+	WORD wRepeatCount;
+	WORD wVirtualKeyCode;
+	WORD wVirtualScanCode;
+	union {
+		WCHAR UnicodeChar;
+		CHAR AsciiChar;
+	} uChar;
+	DWORD dwControlKeyState;
+} 
+#ifdef __GNUC__
+/* gcc's alignment is not what win32 expects */
+ PACKED
+#endif
+KEY_EVENT_RECORD;
+
+typedef struct _MOUSE_EVENT_RECORD {
+	COORD dwMousePosition;
+	DWORD dwButtonState;
+	DWORD dwControlKeyState;
+	DWORD dwEventFlags;
+} MOUSE_EVENT_RECORD;
+typedef struct _WINDOW_BUFFER_SIZE_RECORD {	COORD dwSize; } WINDOW_BUFFER_SIZE_RECORD;
+typedef struct _MENU_EVENT_RECORD {	UINT dwCommandId; } MENU_EVENT_RECORD,*PMENU_EVENT_RECORD;
+typedef struct _FOCUS_EVENT_RECORD { BOOL bSetFocus; } FOCUS_EVENT_RECORD;
+typedef struct _INPUT_RECORD {
+	WORD EventType;
+	union {
+		KEY_EVENT_RECORD KeyEvent;
+		MOUSE_EVENT_RECORD MouseEvent;
+		WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
+		MENU_EVENT_RECORD MenuEvent;
+		FOCUS_EVENT_RECORD FocusEvent;
+	} Event;
+} INPUT_RECORD,*PINPUT_RECORD;
+
+BOOL WINAPI AllocConsole(void);
+HANDLE WINAPI CreateConsoleScreenBuffer(DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,PVOID);
+BOOL WINAPI FillConsoleOutputAttribute(HANDLE,WORD,DWORD,COORD,PDWORD);
+BOOL WINAPI FillConsoleOutputCharacterA(HANDLE,CHAR,DWORD,COORD,PDWORD);
+BOOL WINAPI FillConsoleOutputCharacterW(HANDLE,WCHAR,DWORD,COORD,PDWORD);
+BOOL WINAPI FlushConsoleInputBuffer(HANDLE);
+BOOL WINAPI FreeConsole(void);
+BOOL WINAPI GenerateConsoleCtrlEvent(DWORD,DWORD);
+UINT WINAPI GetConsoleCP(void);
+BOOL WINAPI GetConsoleCursorInfo(HANDLE,PCONSOLE_CURSOR_INFO);
+BOOL WINAPI GetConsoleMode(HANDLE,PDWORD);
+UINT WINAPI GetConsoleOutputCP(void);
+BOOL WINAPI GetConsoleScreenBufferInfo(HANDLE,PCONSOLE_SCREEN_BUFFER_INFO);
+DWORD WINAPI GetConsoleTitleA(LPSTR,DWORD);
+DWORD WINAPI GetConsoleTitleW(LPWSTR,DWORD);
+COORD WINAPI GetLargestConsoleWindowSize(HANDLE);
+BOOL WINAPI GetNumberOfConsoleInputEvents(HANDLE,PDWORD);
+BOOL WINAPI GetNumberOfConsoleMouseButtons(PDWORD);
+BOOL WINAPI PeekConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
+BOOL WINAPI PeekConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
+BOOL WINAPI ReadConsoleA(HANDLE,PVOID,DWORD,PDWORD,PVOID);
+BOOL WINAPI ReadConsoleW(HANDLE,PVOID,DWORD,PDWORD,PVOID);
+BOOL WINAPI ReadConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
+BOOL WINAPI ReadConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
+BOOL WINAPI ReadConsoleOutputAttribute(HANDLE,LPWORD,DWORD,COORD,LPDWORD);
+BOOL WINAPI ReadConsoleOutputCharacterA(HANDLE,LPSTR,DWORD,COORD,PDWORD);
+BOOL WINAPI ReadConsoleOutputCharacterW(HANDLE,LPWSTR,DWORD,COORD,PDWORD);
+BOOL WINAPI ReadConsoleOutputA(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT);
+BOOL WINAPI ReadConsoleOutputW(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT);
+BOOL WINAPI ScrollConsoleScreenBufferA(HANDLE,const SMALL_RECT*,const SMALL_RECT*,COORD,const CHAR_INFO*);
+BOOL WINAPI ScrollConsoleScreenBufferW(HANDLE,const SMALL_RECT*,const SMALL_RECT*,COORD,const CHAR_INFO*);
+BOOL WINAPI SetConsoleActiveScreenBuffer(HANDLE);
+BOOL WINAPI SetConsoleCP(UINT);
+BOOL WINAPI SetConsoleCtrlHandler(PHANDLER_ROUTINE,BOOL);
+BOOL WINAPI SetConsoleCursorInfo(HANDLE,const CONSOLE_CURSOR_INFO*);
+BOOL WINAPI SetConsoleCursorPosition(HANDLE,COORD);
+BOOL WINAPI SetConsoleMode(HANDLE,DWORD);
+BOOL WINAPI SetConsoleOutputCP(UINT);
+BOOL WINAPI SetConsoleScreenBufferSize(HANDLE,COORD);
+BOOL WINAPI SetConsoleTextAttribute(HANDLE,WORD);
+BOOL WINAPI SetConsoleTitleA(LPCSTR);
+BOOL WINAPI SetConsoleTitleW(LPCWSTR);
+BOOL WINAPI SetConsoleWindowInfo(HANDLE,BOOL,const SMALL_RECT*);
+BOOL WINAPI WriteConsoleA(HANDLE,PCVOID,DWORD,PDWORD,PVOID);
+BOOL WINAPI WriteConsoleW(HANDLE,PCVOID,DWORD,PDWORD,PVOID);
+BOOL WINAPI WriteConsoleInputA(HANDLE,const INPUT_RECORD*,DWORD,PDWORD);
+BOOL WINAPI WriteConsoleInputW(HANDLE,const INPUT_RECORD*,DWORD,PDWORD);
+BOOL WINAPI WriteConsoleOutputA(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT);
+BOOL WINAPI WriteConsoleOutputW(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT);
+BOOL WINAPI WriteConsoleOutputAttribute(HANDLE,const WORD*,DWORD,COORD,PDWORD);
+BOOL WINAPI WriteConsoleOutputCharacterA(HANDLE,LPCSTR,DWORD,COORD,PDWORD);
+BOOL WINAPI WriteConsoleOutputCharacterW(HANDLE,LPCWSTR,DWORD,COORD,PDWORD);
+
+#ifdef UNICODE
+#define FillConsoleOutputCharacter FillConsoleOutputCharacterW
+#define GetConsoleTitle GetConsoleTitleW
+#define PeekConsoleInput PeekConsoleInputW
+#define ReadConsole ReadConsoleW
+#define ReadConsoleInput ReadConsoleInputW
+#define ReadConsoleOutput ReadConsoleOutputW
+#define ReadConsoleOutputCharacter ReadConsoleOutputCharacterW
+#define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferW
+#define SetConsoleTitle SetConsoleTitleW
+#define WriteConsole WriteConsoleW
+#define WriteConsoleInput WriteConsoleInputW
+#define WriteConsoleOutput WriteConsoleOutputW
+#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterW
+#else
+#define FillConsoleOutputCharacter FillConsoleOutputCharacterA
+#define GetConsoleTitle GetConsoleTitleA
+#define PeekConsoleInput PeekConsoleInputA
+#define ReadConsole ReadConsoleA
+#define ReadConsoleInput ReadConsoleInputA
+#define ReadConsoleOutput ReadConsoleOutputA
+#define ReadConsoleOutputCharacter ReadConsoleOutputCharacterA
+#define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferA
+#define SetConsoleTitle SetConsoleTitleA
+#define WriteConsole WriteConsoleA
+#define WriteConsoleInput WriteConsoleInputA
+#define WriteConsoleOutput WriteConsoleOutputA
+#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterA
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/Win32/bin/tcc/include/winapi/windef.h b/Win32/bin/tcc/include/winapi/windef.h
new file mode 100644
index 0000000..c5c6426
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/windef.h
@@ -0,0 +1,240 @@
+#ifndef _WINDEF_H
+#define _WINDEF_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef WINVER
+#define WINVER 0x0400
+#endif
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT WINVER
+#endif
+#ifndef WIN32
+#define WIN32
+#endif
+#ifndef _WIN32
+#define _WIN32
+#endif
+#define FAR
+#define far
+#define NEAR
+#define near
+#ifndef CONST
+#define CONST const
+#endif
+#undef MAX_PATH
+#define MAX_PATH 260
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void*)0)
+#endif
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+#ifndef TRUE
+#define TRUE 1
+#endif
+#define IN
+#define OUT
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+
+#ifdef __GNUC__
+#define PACKED __attribute__((packed))
+#ifndef _stdcall
+#define _stdcall __attribute__((stdcall))
+#endif
+#ifndef __stdcall
+#define __stdcall __attribute__((stdcall))
+#endif
+#ifndef _cdecl
+#define _cdecl __attribute__((cdecl))
+#endif
+#ifndef __cdecl
+#define __cdecl __attribute__((cdecl))
+#endif
+#ifndef __declspec
+#define __declspec(e) __attribute__((e))
+#endif
+#ifndef _declspec
+#define _declspec(e) __attribute__((e))
+#endif
+#else
+#define PACKED
+#define _cdecl
+#define __cdecl
+#endif
+
+#undef pascal
+#undef _pascal
+#undef __pascal
+#define pascal __stdcall
+#define _pascal __stdcall
+#define __pascal __stdcall
+#define PASCAL _pascal
+#define CDECL _cdecl
+#define STDCALL __stdcall
+#define WINAPI __stdcall
+#define WINAPIV __cdecl
+#define APIENTRY __stdcall
+#define CALLBACK __stdcall
+#define APIPRIVATE __stdcall
+
+#define DECLSPEC_IMPORT __declspec(dllimport)
+#define DECLSPEC_EXPORT __declspec(dllexport)
+#ifdef __GNUC__
+#define DECLSPEC_NORETURN __declspec(noreturn)
+#define DECLARE_STDCALL_P( type ) __stdcall type
+#elif defined(__WATCOMC__)
+#define DECLSPEC_NORETURN
+#define DECLARE_STDCALL_P( type ) type __stdcall
+#endif /* __GNUC__/__WATCOMC__ */
+#define MAKEWORD(a,b)	((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8)))
+#define MAKELONG(a,b)	((LONG)(((WORD)(a))|(((DWORD)((WORD)(b)))<<16)))
+#define LOWORD(l)	((WORD)((DWORD)(l)))
+#define HIWORD(l)	((WORD)(((DWORD)(l)>>16)&0xFFFF))
+#define LOBYTE(w)	((BYTE)(w))
+#define HIBYTE(w)	((BYTE)(((WORD)(w)>>8)&0xFF))
+
+#ifndef _export
+#define _export
+#endif
+#ifndef __export
+#define __export
+#endif
+
+#ifndef NOMINMAX
+#ifndef max
+#define max(a,b) ((a)>(b)?(a):(b))
+#endif
+#ifndef min
+#define min(a,b) ((a)<(b)?(a):(b))
+#endif
+#endif
+
+#define UNREFERENCED_PARAMETER(P) {(P)=(P);}
+#define UNREFERENCED_LOCAL_VARIABLE(L) {(L)=(L);}
+#define DBG_UNREFERENCED_PARAMETER(P)
+#define DBG_UNREFERENCED_LOCAL_VARIABLE(L)
+
+typedef unsigned long DWORD;
+typedef int WINBOOL,*PWINBOOL,*LPWINBOOL;
+/* FIXME: Is there a good solution to this? */
+#ifndef XFree86Server
+#ifndef __OBJC__
+typedef WINBOOL BOOL;
+#else
+#define BOOL WINBOOL
+#endif
+typedef unsigned char BYTE;
+#endif /* ndef XFree86Server */
+typedef BOOL *PBOOL,*LPBOOL;
+typedef unsigned short WORD;
+typedef float FLOAT;
+typedef FLOAT *PFLOAT;
+typedef BYTE *PBYTE,*LPBYTE;
+typedef int *PINT,*LPINT;
+typedef WORD *PWORD,*LPWORD;
+typedef long *LPLONG;
+typedef DWORD *PDWORD,*LPDWORD;
+typedef void *PVOID,*LPVOID;
+typedef CONST void *PCVOID,*LPCVOID;
+typedef int INT;
+typedef unsigned int UINT,*PUINT,*LPUINT;
+
+#include <winnt.h>
+
+typedef UINT WPARAM;
+typedef LONG LPARAM;
+typedef LONG LRESULT;
+#ifndef _HRESULT_DEFINED
+typedef LONG HRESULT;
+#define _HRESULT_DEFINED
+#endif
+#ifndef XFree86Server
+typedef WORD ATOM;
+#endif /* XFree86Server */
+typedef HANDLE HGLOBAL;
+typedef HANDLE HLOCAL;
+typedef HANDLE GLOBALHANDLE;
+typedef HANDLE LOCALHANDLE;
+typedef void *HGDIOBJ;
+DECLARE_HANDLE(HACCEL);
+DECLARE_HANDLE(HBITMAP);
+DECLARE_HANDLE(HBRUSH);
+DECLARE_HANDLE(HCOLORSPACE);
+DECLARE_HANDLE(HDC);
+DECLARE_HANDLE(HGLRC);
+DECLARE_HANDLE(HDESK);
+DECLARE_HANDLE(HENHMETAFILE);
+DECLARE_HANDLE(HFONT);
+DECLARE_HANDLE(HICON);
+DECLARE_HANDLE(HKEY);
+/* FIXME: How to handle these. SM_CMONITORS etc in winuser.h also. */
+/* #if (WINVER >= 0x0500) */
+DECLARE_HANDLE(HMONITOR);
+#define HMONITOR_DECLARED 1
+DECLARE_HANDLE(HTERMINAL);
+DECLARE_HANDLE(HWINEVENTHOOK);
+/* #endif */
+typedef HKEY *PHKEY;
+DECLARE_HANDLE(HMENU);
+DECLARE_HANDLE(HMETAFILE);
+DECLARE_HANDLE(HINSTANCE);
+typedef HINSTANCE HMODULE;
+DECLARE_HANDLE(HPALETTE);
+DECLARE_HANDLE(HPEN);
+DECLARE_HANDLE(HRGN);
+DECLARE_HANDLE(HRSRC);
+DECLARE_HANDLE(HSTR);
+DECLARE_HANDLE(HTASK);
+DECLARE_HANDLE(HWND);
+DECLARE_HANDLE(HWINSTA);
+DECLARE_HANDLE(HKL);
+typedef int HFILE;
+typedef HICON HCURSOR;
+typedef DWORD COLORREF;
+typedef int (WINAPI *FARPROC)();
+typedef int (WINAPI *NEARPROC)();
+typedef int (WINAPI *PROC)();
+typedef struct tagRECT {
+	LONG left;
+	LONG top;
+	LONG right;
+	LONG bottom;
+} RECT,*PRECT,*LPRECT;
+typedef const RECT *LPCRECT;
+typedef struct tagRECTL {
+	LONG left;
+	LONG top;
+	LONG right;
+	LONG bottom;
+} RECTL,*PRECTL,*LPRECTL;
+typedef const RECTL *LPCRECTL;
+typedef struct tagPOINT {
+	LONG x;
+	LONG y;
+} POINT,POINTL,*PPOINT,*LPPOINT,*PPOINTL,*LPPOINTL;
+typedef struct tagSIZE {
+	LONG cx;
+	LONG cy;
+} SIZE,SIZEL,*PSIZE,*LPSIZE,*PSIZEL,*LPSIZEL;
+typedef struct tagPOINTS {
+	SHORT x;
+	SHORT y;
+} POINTS,*PPOINTS,*LPPOINTS;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/Win32/bin/tcc/include/winapi/windows.h b/Win32/bin/tcc/include/winapi/windows.h
new file mode 100644
index 0000000..faf6e7f
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/windows.h
@@ -0,0 +1,176 @@
+/*
+	windows.h - main header file for the Win32 API
+
+	Written by Anders Norlander <anorland at hem2.passagen.se>
+
+	This file is part of a free library for the Win32 API.
+
+	This library 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.
+
+*/
+#ifndef _WINDOWS_H
+#define _WINDOWS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+/* translate GCC target defines to MS equivalents. Keep this synchronized
+   with winnt.h. */
+#if defined(__i686__) && !defined(_M_IX86)
+#define _M_IX86 600
+#elif defined(__i586__) && !defined(_M_IX86)
+#define _M_IX86 500
+#elif defined(__i486__) && !defined(_M_IX86)
+#define _M_IX86 400
+#elif defined(__i386__) && !defined(_M_IX86)
+#define _M_IX86 300
+#endif
+#if defined(_M_IX86) && !defined(_X86_)
+#define _X86_
+#elif defined(_M_ALPHA) && !defined(_ALPHA_)
+#define _ALPHA_
+#elif defined(_M_PPC) && !defined(_PPC_)
+#define _PPC_
+#elif defined(_M_MRX000) && !defined(_MIPS_)
+#define _MIPS_
+#elif defined(_M_M68K) && !defined(_68K_)
+#define _68K_
+#endif
+
+#ifdef RC_INVOKED
+/* winresrc.h includes the necessary headers */
+#include <winresrc.h>
+#else
+
+#ifdef __GNUC__
+#ifndef NONAMELESSUNION
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) 
+#define _ANONYMOUS_UNION __extension__
+#define _ANONYMOUS_STRUCT __extension__
+#else
+#if defined(__cplusplus)
+#define _ANONYMOUS_UNION __extension__
+#endif /* __cplusplus */
+#endif /* __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) */
+#endif /* NONAMELESSUNION */
+#elif defined(__WATCOMC__)
+#define _ANONYMOUS_UNION
+#define _ANONYMOUS_STRUCT
+#endif /* __GNUC__/__WATCOMC__ */
+
+#ifndef _ANONYMOUS_UNION
+#define _ANONYMOUS_UNION
+#define _UNION_NAME(x) x
+#define DUMMYUNIONNAME	u
+#define DUMMYUNIONNAME2	u2
+#define DUMMYUNIONNAME3	u3
+#define DUMMYUNIONNAME4	u4
+#define DUMMYUNIONNAME5	u5
+#define DUMMYUNIONNAME6	u6
+#define DUMMYUNIONNAME7	u7
+#define DUMMYUNIONNAME8	u8
+#else
+#define _UNION_NAME(x)
+#define DUMMYUNIONNAME
+#define DUMMYUNIONNAME2
+#define DUMMYUNIONNAME3
+#define DUMMYUNIONNAME4
+#define DUMMYUNIONNAME5
+#define DUMMYUNIONNAME6
+#define DUMMYUNIONNAME7
+#define DUMMYUNIONNAME8
+#endif
+#ifndef _ANONYMOUS_STRUCT
+#define _ANONYMOUS_STRUCT
+#define _STRUCT_NAME(x) x
+#define DUMMYSTRUCTNAME	s
+#define DUMMYSTRUCTNAME2 s2
+#define DUMMYSTRUCTNAME3 s3
+#else
+#define _STRUCT_NAME(x)
+#define DUMMYSTRUCTNAME
+#define DUMMYSTRUCTNAME2
+#define DUMMYSTRUCTNAME3
+#endif
+
+#ifndef NO_STRICT
+#ifndef STRICT
+#define STRICT 1
+#endif
+#endif
+
+#include <stdarg.h>
+#include <windef.h>
+#include <wincon.h>
+#include <basetyps.h>
+#include <excpt.h>
+#include <winbase.h>
+#ifndef _WINGDI_H
+#include <wingdi.h>
+#endif
+#ifndef _WINUSER_H
+#include <winuser.h>
+#endif
+#ifndef _WINNLS_H
+#include <winnls.h>
+#endif
+#ifndef _WINVER_H
+#include <winver.h>
+#endif
+#ifndef _WINNETWK_H
+#include <winnetwk.h>
+#endif
+#ifndef _WINREG_H
+#include <winreg.h>
+#endif
+#ifndef _WINSVC_H
+#include <winsvc.h>
+#endif
+
+#ifndef WIN32_LEAN_AND_MEAN
+#include <commdlg.h>
+#include <cderr.h>
+#include <dde.h>
+#include <ddeml.h>
+#include <dlgs.h>
+#include <lzexpand.h>
+#include <mmsystem.h>
+#include <nb30.h>
+#include <rpc.h>
+#include <shellapi.h>
+#include <winperf.h>
+#include <winspool.h>
+#if defined(Win32_Winsock)
+#warning "The  Win32_Winsock macro name is deprecated.\
+    Please use __USE_W32_SOCKETS instead"
+#ifndef __USE_W32_SOCKETS
+#define __USE_W32_SOCKETS
+#endif
+#endif
+#if defined(__USE_W32_SOCKETS) || !(defined(__CYGWIN__) || defined(__MSYS__) || defined(_UWIN))
+#if (_WIN32_WINNT >= 0x0400)
+#include <winsock2.h>
+/*
+ * MS likes to include mswsock.h here as well,
+ * but that can cause undefined symbols if
+ * winsock2.h is included before windows.h
+ */
+#else
+#include <winsock.h>
+#endif /*  (_WIN32_WINNT >= 0x0400) */
+#endif
+#endif /* WIN32_LEAN_AND_MEAN */
+
+#endif /* RC_INVOKED */
+
+#ifdef __OBJC__
+/* FIXME: Not undefining BOOL here causes all BOOLs to be WINBOOL (int),
+   but undefining it causes trouble as well if a file is included after
+   windows.h
+*/
+#undef BOOL
+#endif
+
+#endif
diff --git a/Win32/bin/tcc/include/winapi/winerror.h b/Win32/bin/tcc/include/winapi/winerror.h
new file mode 100644
index 0000000..05d528f
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/winerror.h
@@ -0,0 +1,1054 @@
+#ifndef _WINERROR_H
+#define _WINERROR_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define ERROR_SUCCESS 0L
+#define NO_ERROR 0L
+#define ERROR_INVALID_FUNCTION 1L
+#define ERROR_FILE_NOT_FOUND 2L
+#define ERROR_PATH_NOT_FOUND 3L
+#define ERROR_TOO_MANY_OPEN_FILES 4L
+#define ERROR_ACCESS_DENIED 5L
+#define ERROR_INVALID_HANDLE 6L
+#define ERROR_ARENA_TRASHED 7L
+#define ERROR_NOT_ENOUGH_MEMORY 8L
+#define ERROR_INVALID_BLOCK 9L
+#define ERROR_BAD_ENVIRONMENT 10L
+#define ERROR_BAD_FORMAT 11L
+#define ERROR_INVALID_ACCESS 12L
+#define ERROR_INVALID_DATA 13L
+#define ERROR_OUTOFMEMORY 14L
+#define ERROR_INVALID_DRIVE 15L
+#define ERROR_CURRENT_DIRECTORY 16L
+#define ERROR_NOT_SAME_DEVICE 17L
+#define ERROR_NO_MORE_FILES 18L
+#define ERROR_WRITE_PROTECT 19L
+#define ERROR_BAD_UNIT 20L
+#define ERROR_NOT_READY 21L
+#define ERROR_BAD_COMMAND 22L
+#define ERROR_CRC 23L
+#define ERROR_BAD_LENGTH 24L
+#define ERROR_SEEK 25L
+#define ERROR_NOT_DOS_DISK 26L
+#define ERROR_SECTOR_NOT_FOUND 27L
+#define ERROR_OUT_OF_PAPER 28L
+#define ERROR_WRITE_FAULT 29L
+#define ERROR_READ_FAULT 30L
+#define ERROR_GEN_FAILURE 31L
+#define ERROR_SHARING_VIOLATION 32L
+#define ERROR_LOCK_VIOLATION 33L
+#define ERROR_WRONG_DISK 34L
+#define ERROR_SHARING_BUFFER_EXCEEDED 36L
+#define ERROR_HANDLE_EOF 38L
+#define ERROR_HANDLE_DISK_FULL 39L
+#define ERROR_NOT_SUPPORTED 50L
+#define ERROR_REM_NOT_LIST 51L
+#define ERROR_DUP_NAME 52L
+#define ERROR_BAD_NETPATH 53L
+#define ERROR_NETWORK_BUSY 54L
+#define ERROR_DEV_NOT_EXIST 55L
+#define ERROR_TOO_MANY_CMDS 56L
+#define ERROR_ADAP_HDW_ERR 57L
+#define ERROR_BAD_NET_RESP 58L
+#define ERROR_UNEXP_NET_ERR 59L
+#define ERROR_BAD_REM_ADAP 60L
+#define ERROR_PRINTQ_FULL 61L
+#define ERROR_NO_SPOOL_SPACE 62L
+#define ERROR_PRINT_CANCELLED 63L
+#define ERROR_NETNAME_DELETED 64L
+#define ERROR_NETWORK_ACCESS_DENIED 65L
+#define ERROR_BAD_DEV_TYPE 66L
+#define ERROR_BAD_NET_NAME 67L
+#define ERROR_TOO_MANY_NAMES 68L
+#define ERROR_TOO_MANY_SESS 69L
+#define ERROR_SHARING_PAUSED 70L
+#define ERROR_REQ_NOT_ACCEP 71L
+#define ERROR_REDIR_PAUSED 72L
+#define ERROR_FILE_EXISTS 80L
+#define ERROR_CANNOT_MAKE 82L
+#define ERROR_FAIL_I24 83L
+#define ERROR_OUT_OF_STRUCTURES 84L
+#define ERROR_ALREADY_ASSIGNED 85L
+#define ERROR_INVALID_PASSWORD 86L
+#define ERROR_INVALID_PARAMETER 87L
+#define ERROR_NET_WRITE_FAULT 88L
+#define ERROR_NO_PROC_SLOTS 89L
+#define ERROR_TOO_MANY_SEMAPHORES 100L
+#define ERROR_EXCL_SEM_ALREADY_OWNED 101L
+#define ERROR_SEM_IS_SET 102L
+#define ERROR_TOO_MANY_SEM_REQUESTS 103L
+#define ERROR_INVALID_AT_INTERRUPT_TIME 104L
+#define ERROR_SEM_OWNER_DIED 105L
+#define ERROR_SEM_USER_LIMIT 106L
+#define ERROR_DISK_CHANGE 107L
+#define ERROR_DRIVE_LOCKED 108L
+#define ERROR_BROKEN_PIPE 109L
+#define ERROR_OPEN_FAILED 110L
+#define ERROR_BUFFER_OVERFLOW 111L
+#define ERROR_DISK_FULL 112L
+#define ERROR_NO_MORE_SEARCH_HANDLES 113L
+#define ERROR_INVALID_TARGET_HANDLE 114L
+#define ERROR_INVALID_CATEGORY 117L
+#define ERROR_INVALID_VERIFY_SWITCH 118L
+#define ERROR_BAD_DRIVER_LEVEL 119L
+#define ERROR_CALL_NOT_IMPLEMENTED 120L
+#define ERROR_SEM_TIMEOUT 121L
+#define ERROR_INSUFFICIENT_BUFFER 122L
+#define ERROR_INVALID_NAME 123L
+#define ERROR_INVALID_LEVEL 124L
+#define ERROR_NO_VOLUME_LABEL 125L
+#define ERROR_MOD_NOT_FOUND 126L
+#define ERROR_PROC_NOT_FOUND 127L
+#define ERROR_WAIT_NO_CHILDREN 128L
+#define ERROR_CHILD_NOT_COMPLETE 129L
+#define ERROR_DIRECT_ACCESS_HANDLE 130L
+#define ERROR_NEGATIVE_SEEK 131L
+#define ERROR_SEEK_ON_DEVICE 132L
+#define ERROR_IS_JOIN_TARGET 133L
+#define ERROR_IS_JOINED 134L
+#define ERROR_IS_SUBSTED 135L
+#define ERROR_NOT_JOINED 136L
+#define ERROR_NOT_SUBSTED 137L
+#define ERROR_JOIN_TO_JOIN 138L
+#define ERROR_SUBST_TO_SUBST 139L
+#define ERROR_JOIN_TO_SUBST 140L
+#define ERROR_SUBST_TO_JOIN 141L
+#define ERROR_BUSY_DRIVE 142L
+#define ERROR_SAME_DRIVE 143L
+#define ERROR_DIR_NOT_ROOT 144L
+#define ERROR_DIR_NOT_EMPTY 145L
+#define ERROR_IS_SUBST_PATH 146L
+#define ERROR_IS_JOIN_PATH 147L
+#define ERROR_PATH_BUSY 148L
+#define ERROR_IS_SUBST_TARGET 149L
+#define ERROR_SYSTEM_TRACE 150L
+#define ERROR_INVALID_EVENT_COUNT 151L
+#define ERROR_TOO_MANY_MUXWAITERS 152L
+#define ERROR_INVALID_LIST_FORMAT 153L
+#define ERROR_LABEL_TOO_LONG 154L
+#define ERROR_TOO_MANY_TCBS 155L
+#define ERROR_SIGNAL_REFUSED 156L
+#define ERROR_DISCARDED 157L
+#define ERROR_NOT_LOCKED 158L
+#define ERROR_BAD_THREADID_ADDR 159L
+#define ERROR_BAD_ARGUMENTS 160L
+#define ERROR_BAD_PATHNAME 161L
+#define ERROR_SIGNAL_PENDING 162L
+#define ERROR_MAX_THRDS_REACHED 164L
+#define ERROR_LOCK_FAILED 167L
+#define ERROR_BUSY 170L
+#define ERROR_CANCEL_VIOLATION 173L
+#define ERROR_ATOMIC_LOCKS_NOT_SUPPORTED 174L
+#define ERROR_INVALID_SEGMENT_NUMBER 180L
+#define ERROR_INVALID_ORDINAL 182L
+#define ERROR_ALREADY_EXISTS 183L
+#define ERROR_INVALID_FLAG_NUMBER 186L
+#define ERROR_SEM_NOT_FOUND 187L
+#define ERROR_INVALID_STARTING_CODESEG 188L
+#define ERROR_INVALID_STACKSEG 189L
+#define ERROR_INVALID_MODULETYPE 190L
+#define ERROR_INVALID_EXE_SIGNATURE 191L
+#define ERROR_EXE_MARKED_INVALID 192L
+#define ERROR_BAD_EXE_FORMAT 193L
+#define ERROR_ITERATED_DATA_EXCEEDS_64k 194L
+#define ERROR_INVALID_MINALLOCSIZE 195L
+#define ERROR_DYNLINK_FROM_INVALID_RING 196L
+#define ERROR_IOPL_NOT_ENABLED 197L
+#define ERROR_INVALID_SEGDPL 198L
+#define ERROR_AUTODATASEG_EXCEEDS_64k 199L
+#define ERROR_RING2SEG_MUST_BE_MOVABLE 200L
+#define ERROR_RELOC_CHAIN_XEEDS_SEGLIM 201L
+#define ERROR_INFLOOP_IN_RELOC_CHAIN 202L
+#define ERROR_ENVVAR_NOT_FOUND 203L
+#define ERROR_NO_SIGNAL_SENT 205L
+#define ERROR_FILENAME_EXCED_RANGE 206L
+#define ERROR_RING2_STACK_IN_USE 207L
+#define ERROR_META_EXPANSION_TOO_LONG 208L
+#define ERROR_INVALID_SIGNAL_NUMBER 209L
+#define ERROR_THREAD_1_INACTIVE 210L
+#define ERROR_LOCKED 212L
+#define ERROR_TOO_MANY_MODULES 214L
+#define ERROR_NESTING_NOT_ALLOWED 215L
+#define ERROR_BAD_PIPE 230L
+#define ERROR_PIPE_BUSY 231L
+#define ERROR_NO_DATA 232L
+#define ERROR_PIPE_NOT_CONNECTED 233L
+#define ERROR_MORE_DATA 234L
+#define ERROR_VC_DISCONNECTED 240L
+#define ERROR_INVALID_EA_NAME 254L
+#define ERROR_EA_LIST_INCONSISTENT 255L
+#define ERROR_NO_MORE_ITEMS 259L
+#define ERROR_CANNOT_COPY 266L
+#define ERROR_DIRECTORY 267L
+#define ERROR_EAS_DIDNT_FIT 275L
+#define ERROR_EA_FILE_CORRUPT 276L
+#define ERROR_EA_TABLE_FULL 277L
+#define ERROR_INVALID_EA_HANDLE 278L
+#define ERROR_EAS_NOT_SUPPORTED 282L
+#define ERROR_NOT_OWNER 288L
+#define ERROR_TOO_MANY_POSTS 298L
+#define ERROR_PARTIAL_COPY 299L
+#define ERROR_MR_MID_NOT_FOUND 317L
+#define ERROR_INVALID_ADDRESS 487L
+#define ERROR_ARITHMETIC_OVERFLOW 534L
+#define ERROR_PIPE_CONNECTED 535L
+#define ERROR_PIPE_LISTENING 536L
+#define ERROR_EA_ACCESS_DENIED 994L
+#define ERROR_OPERATION_ABORTED 995L
+#define ERROR_IO_INCOMPLETE 996L
+#define ERROR_IO_PENDING 997L
+#define ERROR_NOACCESS 998L
+#define ERROR_SWAPERROR 999L
+#define ERROR_STACK_OVERFLOW 1001L
+#define ERROR_INVALID_MESSAGE 1002L
+#define ERROR_CAN_NOT_COMPLETE 1003L
+#define ERROR_INVALID_FLAGS 1004L
+#define ERROR_UNRECOGNIZED_VOLUME 1005L
+#define ERROR_FILE_INVALID 1006L
+#define ERROR_FULLSCREEN_MODE 1007L
+#define ERROR_NO_TOKEN 1008L
+#define ERROR_BADDB 1009L
+#define ERROR_BADKEY 1010L
+#define ERROR_CANTOPEN 1011L
+#define ERROR_CANTREAD 1012L
+#define ERROR_CANTWRITE 1013L
+#define ERROR_REGISTRY_RECOVERED 1014L
+#define ERROR_REGISTRY_CORRUPT 1015L
+#define ERROR_REGISTRY_IO_FAILED 1016L
+#define ERROR_NOT_REGISTRY_FILE 1017L
+#define ERROR_KEY_DELETED 1018L
+#define ERROR_NO_LOG_SPACE 1019L
+#define ERROR_KEY_HAS_CHILDREN 1020L
+#define ERROR_CHILD_MUST_BE_VOLATILE 1021L
+#define ERROR_NOTIFY_ENUM_DIR 1022L
+#define ERROR_DEPENDENT_SERVICES_RUNNING 1051L
+#define ERROR_INVALID_SERVICE_CONTROL 1052L
+#define ERROR_SERVICE_REQUEST_TIMEOUT 1053L
+#define ERROR_SERVICE_NO_THREAD 1054L
+#define ERROR_SERVICE_DATABASE_LOCKED 1055L
+#define ERROR_SERVICE_ALREADY_RUNNING 1056L
+#define ERROR_INVALID_SERVICE_ACCOUNT 1057L
+#define ERROR_SERVICE_DISABLED 1058L
+#define ERROR_CIRCULAR_DEPENDENCY 1059L
+#define ERROR_SERVICE_DOES_NOT_EXIST 1060L
+#define ERROR_SERVICE_CANNOT_ACCEPT_CTRL 1061L
+#define ERROR_SERVICE_NOT_ACTIVE 1062L
+#define ERROR_FAILED_SERVICE_CONTROLLER_CONNECT 1063L
+#define ERROR_EXCEPTION_IN_SERVICE 1064L
+#define ERROR_DATABASE_DOES_NOT_EXIST 1065L
+#define ERROR_SERVICE_SPECIFIC_ERROR 1066L
+#define ERROR_PROCESS_ABORTED 1067L
+#define ERROR_SERVICE_DEPENDENCY_FAIL 1068L
+#define ERROR_SERVICE_LOGON_FAILED 1069L
+#define ERROR_SERVICE_START_HANG 1070L
+#define ERROR_INVALID_SERVICE_LOCK 1071L
+#define ERROR_SERVICE_MARKED_FOR_DELETE 1072L
+#define ERROR_SERVICE_EXISTS 1073L
+#define ERROR_ALREADY_RUNNING_LKG 1074L
+#define ERROR_SERVICE_DEPENDENCY_DELETED 1075L
+#define ERROR_BOOT_ALREADY_ACCEPTED 1076L
+#define ERROR_SERVICE_NEVER_STARTED 1077L
+#define ERROR_DUPLICATE_SERVICE_NAME 1078L
+#define ERROR_END_OF_MEDIA 1100L
+#define ERROR_FILEMARK_DETECTED 1101L
+#define ERROR_BEGINNING_OF_MEDIA 1102L
+#define ERROR_SETMARK_DETECTED 1103L
+#define ERROR_NO_DATA_DETECTED 1104L
+#define ERROR_PARTITION_FAILURE 1105L
+#define ERROR_INVALID_BLOCK_LENGTH 1106L
+#define ERROR_DEVICE_NOT_PARTITIONED 1107L
+#define ERROR_UNABLE_TO_LOCK_MEDIA 1108L
+#define ERROR_UNABLE_TO_UNLOAD_MEDIA 1109L
+#define ERROR_MEDIA_CHANGED 1110L
+#define ERROR_BUS_RESET 1111L
+#define ERROR_NO_MEDIA_IN_DRIVE 1112L
+#define ERROR_NO_UNICODE_TRANSLATION 1113L
+#define ERROR_DLL_INIT_FAILED 1114L
+#define ERROR_SHUTDOWN_IN_PROGRESS 1115L
+#define ERROR_NO_SHUTDOWN_IN_PROGRESS 1116L
+#define ERROR_IO_DEVICE 1117L
+#define ERROR_SERIAL_NO_DEVICE 1118L
+#define ERROR_IRQ_BUSY 1119L
+#define ERROR_MORE_WRITES 1120L
+#define ERROR_COUNTER_TIMEOUT 1121L
+#define ERROR_FLOPPY_ID_MARK_NOT_FOUND 1122L
+#define ERROR_FLOPPY_WRONG_CYLINDER 1123L
+#define ERROR_FLOPPY_UNKNOWN_ERROR 1124L
+#define ERROR_FLOPPY_BAD_REGISTERS 1125L
+#define ERROR_DISK_RECALIBRATE_FAILED 1126L
+#define ERROR_DISK_OPERATION_FAILED 1127L
+#define ERROR_DISK_RESET_FAILED 1128L
+#define ERROR_EOM_OVERFLOW 1129L
+#define ERROR_NOT_ENOUGH_SERVER_MEMORY 1130L
+#define ERROR_POSSIBLE_DEADLOCK 1131L
+#define ERROR_MAPPED_ALIGNMENT 1132L
+#define ERROR_SET_POWER_STATE_VETOED 1140L
+#define ERROR_SET_POWER_STATE_FAILED 1141L
+#define ERROR_TOO_MANY_LINKS 1142L
+#define ERROR_OLD_WIN_VERSION 1150L
+#define ERROR_APP_WRONG_OS 1151L
+#define ERROR_SINGLE_INSTANCE_APP 1152L
+#define ERROR_RMODE_APP 1153L
+#define ERROR_INVALID_DLL 1154L
+#define ERROR_NO_ASSOCIATION 1155L
+#define ERROR_DDE_FAIL 1156L
+#define ERROR_DLL_NOT_FOUND 1157L
+#define ERROR_BAD_USERNAME 2202L
+#define ERROR_NOT_CONNECTED 2250L
+#define ERROR_OPEN_FILES 2401L
+#define ERROR_ACTIVE_CONNECTIONS 2402L
+#define ERROR_DEVICE_IN_USE 2404L
+#define ERROR_BAD_DEVICE 1200L
+#define ERROR_CONNECTION_UNAVAIL 1201L
+#define ERROR_DEVICE_ALREADY_REMEMBERED 1202L
+#define ERROR_NO_NET_OR_BAD_PATH 1203L
+#define ERROR_BAD_PROVIDER 1204L
+#define ERROR_CANNOT_OPEN_PROFILE 1205L
+#define ERROR_BAD_PROFILE 1206L
+#define ERROR_NOT_CONTAINER 1207L
+#define ERROR_EXTENDED_ERROR 1208L
+#define ERROR_INVALID_GROUPNAME 1209L
+#define ERROR_INVALID_COMPUTERNAME 1210L
+#define ERROR_INVALID_EVENTNAME 1211L
+#define ERROR_INVALID_DOMAINNAME 1212L
+#define ERROR_INVALID_SERVICENAME 1213L
+#define ERROR_INVALID_NETNAME 1214L
+#define ERROR_INVALID_SHARENAME 1215L
+#define ERROR_INVALID_PASSWORDNAME 1216L
+#define ERROR_INVALID_MESSAGENAME 1217L
+#define ERROR_INVALID_MESSAGEDEST 1218L
+#define ERROR_SESSION_CREDENTIAL_CONFLICT 1219L
+#define ERROR_REMOTE_SESSION_LIMIT_EXCEEDED 1220L
+#define ERROR_DUP_DOMAINNAME 1221L
+#define ERROR_NO_NETWORK 1222L
+#define ERROR_CANCELLED 1223L
+#define ERROR_USER_MAPPED_FILE 1224L
+#define ERROR_CONNECTION_REFUSED 1225L
+#define ERROR_GRACEFUL_DISCONNECT 1226L
+#define ERROR_ADDRESS_ALREADY_ASSOCIATED 1227L
+#define ERROR_ADDRESS_NOT_ASSOCIATED 1228L
+#define ERROR_CONNECTION_INVALID 1229L
+#define ERROR_CONNECTION_ACTIVE 1230L
+#define ERROR_NETWORK_UNREACHABLE 1231L
+#define ERROR_HOST_UNREACHABLE 1232L
+#define ERROR_PROTOCOL_UNREACHABLE 1233L
+#define ERROR_PORT_UNREACHABLE 1234L
+#define ERROR_REQUEST_ABORTED 1235L
+#define ERROR_CONNECTION_ABORTED 1236L
+#define ERROR_RETRY 1237L
+#define ERROR_CONNECTION_COUNT_LIMIT 1238L
+#define ERROR_LOGIN_TIME_RESTRICTION 1239L
+#define ERROR_LOGIN_WKSTA_RESTRICTION 1240L
+#define ERROR_INCORRECT_ADDRESS 1241L
+#define ERROR_ALREADY_REGISTERED 1242L
+#define ERROR_SERVICE_NOT_FOUND 1243L
+#define ERROR_NOT_AUTHENTICATED 1244L
+#define ERROR_NOT_LOGGED_ON 1245L
+#define ERROR_CONTINUE 1246L
+#define ERROR_ALREADY_INITIALIZED 1247L
+#define ERROR_NO_MORE_DEVICES 1248L
+#define ERROR_NOT_ALL_ASSIGNED 1300L
+#define ERROR_SOME_NOT_MAPPED 1301L
+#define ERROR_NO_QUOTAS_FOR_ACCOUNT 1302L
+#define ERROR_LOCAL_USER_SESSION_KEY 1303L
+#define ERROR_NULL_LM_PASSWORD 1304L
+#define ERROR_UNKNOWN_REVISION 1305L
+#define ERROR_REVISION_MISMATCH 1306L
+#define ERROR_INVALID_OWNER 1307L
+#define ERROR_INVALID_PRIMARY_GROUP 1308L
+#define ERROR_NO_IMPERSONATION_TOKEN 1309L
+#define ERROR_CANT_DISABLE_MANDATORY 1310L
+#define ERROR_NO_LOGON_SERVERS 1311L
+#define ERROR_NO_SUCH_LOGON_SESSION 1312L
+#define ERROR_NO_SUCH_PRIVILEGE 1313L
+#define ERROR_PRIVILEGE_NOT_HELD 1314L
+#define ERROR_INVALID_ACCOUNT_NAME 1315L
+#define ERROR_USER_EXISTS 1316L
+#define ERROR_NO_SUCH_USER 1317L
+#define ERROR_GROUP_EXISTS 1318L
+#define ERROR_NO_SUCH_GROUP 1319L
+#define ERROR_MEMBER_IN_GROUP 1320L
+#define ERROR_MEMBER_NOT_IN_GROUP 1321L
+#define ERROR_LAST_ADMIN 1322L
+#define ERROR_WRONG_PASSWORD 1323L
+#define ERROR_ILL_FORMED_PASSWORD 1324L
+#define ERROR_PASSWORD_RESTRICTION 1325L
+#define ERROR_LOGON_FAILURE 1326L
+#define ERROR_ACCOUNT_RESTRICTION 1327L
+#define ERROR_INVALID_LOGON_HOURS 1328L
+#define ERROR_INVALID_WORKSTATION 1329L
+#define ERROR_PASSWORD_EXPIRED 1330L
+#define ERROR_ACCOUNT_DISABLED 1331L
+#define ERROR_NONE_MAPPED 1332L
+#define ERROR_TOO_MANY_LUIDS_REQUESTED 1333L
+#define ERROR_LUIDS_EXHAUSTED 1334L
+#define ERROR_INVALID_SUB_AUTHORITY 1335L
+#define ERROR_INVALID_ACL 1336L
+#define ERROR_INVALID_SID 1337L
+#define ERROR_INVALID_SECURITY_DESCR 1338L
+#define ERROR_BAD_INHERITANCE_ACL 1340L
+#define ERROR_SERVER_DISABLED 1341L
+#define ERROR_SERVER_NOT_DISABLED 1342L
+#define ERROR_INVALID_ID_AUTHORITY 1343L
+#define ERROR_ALLOTTED_SPACE_EXCEEDED 1344L
+#define ERROR_INVALID_GROUP_ATTRIBUTES 1345L
+#define ERROR_BAD_IMPERSONATION_LEVEL 1346L
+#define ERROR_CANT_OPEN_ANONYMOUS 1347L
+#define ERROR_BAD_VALIDATION_CLASS 1348L
+#define ERROR_BAD_TOKEN_TYPE 1349L
+#define ERROR_NO_SECURITY_ON_OBJECT 1350L
+#define ERROR_CANT_ACCESS_DOMAIN_INFO 1351L
+#define ERROR_INVALID_SERVER_STATE 1352L
+#define ERROR_INVALID_DOMAIN_STATE 1353L
+#define ERROR_INVALID_DOMAIN_ROLE 1354L
+#define ERROR_NO_SUCH_DOMAIN 1355L
+#define ERROR_DOMAIN_EXISTS 1356L
+#define ERROR_DOMAIN_LIMIT_EXCEEDED 1357L
+#define ERROR_INTERNAL_DB_CORRUPTION 1358L
+#define ERROR_INTERNAL_ERROR 1359L
+#define ERROR_GENERIC_NOT_MAPPED 1360L
+#define ERROR_BAD_DESCRIPTOR_FORMAT 1361L
+#define ERROR_NOT_LOGON_PROCESS 1362L
+#define ERROR_LOGON_SESSION_EXISTS 1363L
+#define ERROR_NO_SUCH_PACKAGE 1364L
+#define ERROR_BAD_LOGON_SESSION_STATE 1365L
+#define ERROR_LOGON_SESSION_COLLISION 1366L
+#define ERROR_INVALID_LOGON_TYPE 1367L
+#define ERROR_CANNOT_IMPERSONATE 1368L
+#define ERROR_RXACT_INVALID_STATE 1369L
+#define ERROR_RXACT_COMMIT_FAILURE 1370L
+#define ERROR_SPECIAL_ACCOUNT 1371L
+#define ERROR_SPECIAL_GROUP 1372L
+#define ERROR_SPECIAL_USER 1373L
+#define ERROR_MEMBERS_PRIMARY_GROUP 1374L
+#define ERROR_TOKEN_ALREADY_IN_USE 1375L
+#define ERROR_NO_SUCH_ALIAS 1376L
+#define ERROR_MEMBER_NOT_IN_ALIAS 1377L
+#define ERROR_MEMBER_IN_ALIAS 1378L
+#define ERROR_ALIAS_EXISTS 1379L
+#define ERROR_LOGON_NOT_GRANTED 1380L
+#define ERROR_TOO_MANY_SECRETS 1381L
+#define ERROR_SECRET_TOO_LONG 1382L
+#define ERROR_INTERNAL_DB_ERROR 1383L
+#define ERROR_TOO_MANY_CONTEXT_IDS 1384L
+#define ERROR_LOGON_TYPE_NOT_GRANTED 1385L
+#define ERROR_NT_CROSS_ENCRYPTION_REQUIRED 1386L
+#define ERROR_NO_SUCH_MEMBER 1387L
+#define ERROR_INVALID_MEMBER 1388L
+#define ERROR_TOO_MANY_SIDS 1389L
+#define ERROR_LM_CROSS_ENCRYPTION_REQUIRED 1390L
+#define ERROR_NO_INHERITANCE 1391L
+#define ERROR_FILE_CORRUPT 1392L
+#define ERROR_DISK_CORRUPT 1393L
+#define ERROR_NO_USER_SESSION_KEY 1394L
+#define ERROR_LICENSE_QUOTA_EXCEEDED 1395L
+#define ERROR_INVALID_WINDOW_HANDLE 1400L
+#define ERROR_INVALID_MENU_HANDLE 1401L
+#define ERROR_INVALID_CURSOR_HANDLE 1402L
+#define ERROR_INVALID_ACCEL_HANDLE 1403L
+#define ERROR_INVALID_HOOK_HANDLE 1404L
+#define ERROR_INVALID_DWP_HANDLE 1405L
+#define ERROR_TLW_WITH_WSCHILD 1406L
+#define ERROR_CANNOT_FIND_WND_CLASS 1407L
+#define ERROR_WINDOW_OF_OTHER_THREAD 1408L
+#define ERROR_HOTKEY_ALREADY_REGISTERED 1409L
+#define ERROR_CLASS_ALREADY_EXISTS 1410L
+#define ERROR_CLASS_DOES_NOT_EXIST 1411L
+#define ERROR_CLASS_HAS_WINDOWS 1412L
+#define ERROR_INVALID_INDEX 1413L
+#define ERROR_INVALID_ICON_HANDLE 1414L
+#define ERROR_PRIVATE_DIALOG_INDEX 1415L
+#define ERROR_LISTBOX_ID_NOT_FOUND 1416L
+#define ERROR_NO_WILDCARD_CHARACTERS 1417L
+#define ERROR_CLIPBOARD_NOT_OPEN 1418L
+#define ERROR_HOTKEY_NOT_REGISTERED 1419L
+#define ERROR_WINDOW_NOT_DIALOG 1420L
+#define ERROR_CONTROL_ID_NOT_FOUND 1421L
+#define ERROR_INVALID_COMBOBOX_MESSAGE 1422L
+#define ERROR_WINDOW_NOT_COMBOBOX 1423L
+#define ERROR_INVALID_EDIT_HEIGHT 1424L
+#define ERROR_DC_NOT_FOUND 1425L
+#define ERROR_INVALID_HOOK_FILTER 1426L
+#define ERROR_INVALID_FILTER_PROC 1427L
+#define ERROR_HOOK_NEEDS_HMOD 1428L
+#define ERROR_GLOBAL_ONLY_HOOK 1429L
+#define ERROR_JOURNAL_HOOK_SET 1430L
+#define ERROR_HOOK_NOT_INSTALLED 1431L
+#define ERROR_INVALID_LB_MESSAGE 1432L
+#define ERROR_SETCOUNT_ON_BAD_LB 1433L
+#define ERROR_LB_WITHOUT_TABSTOPS 1434L
+#define ERROR_DESTROY_OBJECT_OF_OTHER_THREAD 1435L
+#define ERROR_CHILD_WINDOW_MENU 1436L
+#define ERROR_NO_SYSTEM_MENU 1437L
+#define ERROR_INVALID_MSGBOX_STYLE 1438L
+#define ERROR_INVALID_SPI_VALUE 1439L
+#define ERROR_SCREEN_ALREADY_LOCKED 1440L
+#define ERROR_HWNDS_HAVE_DIFF_PARENT 1441L
+#define ERROR_NOT_CHILD_WINDOW 1442L
+#define ERROR_INVALID_GW_COMMAND 1443L
+#define ERROR_INVALID_THREAD_ID 1444L
+#define ERROR_NON_MDICHILD_WINDOW 1445L
+#define ERROR_POPUP_ALREADY_ACTIVE 1446L
+#define ERROR_NO_SCROLLBARS 1447L
+#define ERROR_INVALID_SCROLLBAR_RANGE 1448L
+#define ERROR_INVALID_SHOWWIN_COMMAND 1449L
+#define ERROR_NO_SYSTEM_RESOURCES 1450L
+#define ERROR_NONPAGED_SYSTEM_RESOURCES 1451L
+#define ERROR_PAGED_SYSTEM_RESOURCES 1452L
+#define ERROR_WORKING_SET_QUOTA 1453L
+#define ERROR_PAGEFILE_QUOTA 1454L
+#define ERROR_COMMITMENT_LIMIT 1455L
+#define ERROR_MENU_ITEM_NOT_FOUND 1456L
+#define ERROR_EVENTLOG_FILE_CORRUPT 1500L
+#define ERROR_EVENTLOG_CANT_START 1501L
+#define ERROR_LOG_FILE_FULL 1502L
+#define ERROR_EVENTLOG_FILE_CHANGED 1503L
+#define RPC_S_INVALID_STRING_BINDING 1700L
+#define RPC_S_WRONG_KIND_OF_BINDING 1701L
+#define RPC_S_INVALID_BINDING 1702L
+#define RPC_S_PROTSEQ_NOT_SUPPORTED 1703L
+#define RPC_S_INVALID_RPC_PROTSEQ 1704L
+#define RPC_S_INVALID_STRING_UUID 1705L
+#define RPC_S_INVALID_ENDPOINT_FORMAT 1706L
+#define RPC_S_INVALID_NET_ADDR 1707L
+#define RPC_S_NO_ENDPOINT_FOUND 1708L
+#define RPC_S_INVALID_TIMEOUT 1709L
+#define RPC_S_OBJECT_NOT_FOUND 1710L
+#define RPC_S_ALREADY_REGISTERED 1711L
+#define RPC_S_TYPE_ALREADY_REGISTERED 1712L
+#define RPC_S_ALREADY_LISTENING 1713L
+#define RPC_S_NO_PROTSEQS_REGISTERED 1714L
+#define RPC_S_NOT_LISTENING 1715L
+#define RPC_S_UNKNOWN_MGR_TYPE 1716L
+#define RPC_S_UNKNOWN_IF 1717L
+#define RPC_S_NO_BINDINGS 1718L
+#define RPC_S_NO_PROTSEQS 1719L
+#define RPC_S_CANT_CREATE_ENDPOINT 1720L
+#define RPC_S_OUT_OF_RESOURCES 1721L
+#define RPC_S_SERVER_UNAVAILABLE 1722L
+#define RPC_S_SERVER_TOO_BUSY 1723L
+#define RPC_S_INVALID_NETWORK_OPTIONS 1724L
+#define RPC_S_NO_CALL_ACTIVE 1725L
+#define RPC_S_CALL_FAILED 1726L
+#define RPC_S_CALL_FAILED_DNE 1727L
+#define RPC_S_PROTOCOL_ERROR 1728L
+#define RPC_S_UNSUPPORTED_TRANS_SYN 1730L
+#define RPC_S_UNSUPPORTED_TYPE 1732L
+#define RPC_S_INVALID_TAG 1733L
+#define RPC_S_INVALID_BOUND 1734L
+#define RPC_S_NO_ENTRY_NAME 1735L
+#define RPC_S_INVALID_NAME_SYNTAX 1736L
+#define RPC_S_UNSUPPORTED_NAME_SYNTAX 1737L
+#define RPC_S_UUID_NO_ADDRESS 1739L
+#define RPC_S_DUPLICATE_ENDPOINT 1740L
+#define RPC_S_UNKNOWN_AUTHN_TYPE 1741L
+#define RPC_S_MAX_CALLS_TOO_SMALL 1742L
+#define RPC_S_STRING_TOO_LONG 1743L
+#define RPC_S_PROTSEQ_NOT_FOUND 1744L
+#define RPC_S_PROCNUM_OUT_OF_RANGE 1745L
+#define RPC_S_BINDING_HAS_NO_AUTH 1746L
+#define RPC_S_UNKNOWN_AUTHN_SERVICE 1747L
+#define RPC_S_UNKNOWN_AUTHN_LEVEL 1748L
+#define RPC_S_INVALID_AUTH_IDENTITY 1749L
+#define RPC_S_UNKNOWN_AUTHZ_SERVICE 1750L
+#define EPT_S_INVALID_ENTRY 1751L
+#define EPT_S_CANT_PERFORM_OP 1752L
+#define EPT_S_NOT_REGISTERED 1753L
+#define RPC_S_NOTHING_TO_EXPORT 1754L
+#define RPC_S_INCOMPLETE_NAME 1755L
+#define RPC_S_INVALID_VERS_OPTION 1756L
+#define RPC_S_NO_MORE_MEMBERS 1757L
+#define RPC_S_NOT_ALL_OBJS_UNEXPORTED 1758L
+#define RPC_S_INTERFACE_NOT_FOUND 1759L
+#define RPC_S_ENTRY_ALREADY_EXISTS 1760L
+#define RPC_S_ENTRY_NOT_FOUND 1761L
+#define RPC_S_NAME_SERVICE_UNAVAILABLE 1762L
+#define RPC_S_INVALID_NAF_ID 1763L
+#define RPC_S_CANNOT_SUPPORT 1764L
+#define RPC_S_NO_CONTEXT_AVAILABLE 1765L
+#define RPC_S_INTERNAL_ERROR 1766L
+#define RPC_S_ZERO_DIVIDE 1767L
+#define RPC_S_ADDRESS_ERROR 1768L
+#define RPC_S_FP_DIV_ZERO 1769L
+#define RPC_S_FP_UNDERFLOW 1770L
+#define RPC_S_FP_OVERFLOW 1771L
+#define RPC_X_NO_MORE_ENTRIES 1772L
+#define RPC_X_SS_CHAR_TRANS_OPEN_FAIL 1773L
+#define RPC_X_SS_CHAR_TRANS_SHORT_FILE 1774L
+#define RPC_X_SS_IN_NULL_CONTEXT 1775L
+#define RPC_X_SS_CONTEXT_DAMAGED 1777L
+#define RPC_X_SS_HANDLES_MISMATCH 1778L
+#define RPC_X_SS_CANNOT_GET_CALL_HANDLE 1779L
+#define RPC_X_NULL_REF_POINTER 1780L
+#define RPC_X_ENUM_VALUE_OUT_OF_RANGE 1781L
+#define RPC_X_BYTE_COUNT_TOO_SMALL 1782L
+#define RPC_X_BAD_STUB_DATA 1783L
+#define ERROR_INVALID_USER_BUFFER 1784L
+#define ERROR_UNRECOGNIZED_MEDIA 1785L
+#define ERROR_NO_TRUST_LSA_SECRET 1786L
+#define ERROR_NO_TRUST_SAM_ACCOUNT 1787L
+#define ERROR_TRUSTED_DOMAIN_FAILURE 1788L
+#define ERROR_TRUSTED_RELATIONSHIP_FAILURE 1789L
+#define ERROR_TRUST_FAILURE 1790L
+#define RPC_S_CALL_IN_PROGRESS 1791L
+#define ERROR_NETLOGON_NOT_STARTED 1792L
+#define ERROR_ACCOUNT_EXPIRED 1793L
+#define ERROR_REDIRECTOR_HAS_OPEN_HANDLES 1794L
+#define ERROR_PRINTER_DRIVER_ALREADY_INSTALLED 1795L
+#define ERROR_UNKNOWN_PORT 1796L
+#define ERROR_UNKNOWN_PRINTER_DRIVER 1797L
+#define ERROR_UNKNOWN_PRINTPROCESSOR 1798L
+#define ERROR_INVALID_SEPARATOR_FILE 1799L
+#define ERROR_INVALID_PRIORITY 1800L
+#define ERROR_INVALID_PRINTER_NAME 1801L
+#define ERROR_PRINTER_ALREADY_EXISTS 1802L
+#define ERROR_INVALID_PRINTER_COMMAND 1803L
+#define ERROR_INVALID_DATATYPE 1804L
+#define ERROR_INVALID_ENVIRONMENT 1805L
+#define RPC_S_NO_MORE_BINDINGS 1806L
+#define ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT 1807L
+#define ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT 1808L
+#define ERROR_NOLOGON_SERVER_TRUST_ACCOUNT 1809L
+#define ERROR_DOMAIN_TRUST_INCONSISTENT 1810L
+#define ERROR_SERVER_HAS_OPEN_HANDLES 1811L
+#define ERROR_RESOURCE_DATA_NOT_FOUND 1812L
+#define ERROR_RESOURCE_TYPE_NOT_FOUND 1813L
+#define ERROR_RESOURCE_NAME_NOT_FOUND 1814L
+#define ERROR_RESOURCE_LANG_NOT_FOUND 1815L
+#define ERROR_NOT_ENOUGH_QUOTA 1816L
+#define RPC_S_NO_INTERFACES 1817L
+#define RPC_S_CALL_CANCELLED 1818L
+#define RPC_S_BINDING_INCOMPLETE 1819L
+#define RPC_S_COMM_FAILURE 1820L
+#define RPC_S_UNSUPPORTED_AUTHN_LEVEL 1821L
+#define RPC_S_NO_PRINC_NAME 1822L
+#define RPC_S_NOT_RPC_ERROR 1823L
+#define RPC_S_UUID_LOCAL_ONLY 1824L
+#define RPC_S_SEC_PKG_ERROR 1825L
+#define RPC_S_NOT_CANCELLED 1826L
+#define RPC_X_INVALID_ES_ACTION 1827L
+#define RPC_X_WRONG_ES_VERSION 1828L
+#define RPC_X_WRONG_STUB_VERSION 1829L
+#define RPC_S_GROUP_MEMBER_NOT_FOUND 1898L
+#define EPT_S_CANT_CREATE 1899L
+#define RPC_S_INVALID_OBJECT 1900L
+#define ERROR_INVALID_TIME 1901L
+#define ERROR_INVALID_FORM_NAME 1902L
+#define ERROR_INVALID_FORM_SIZE 1903L
+#define ERROR_ALREADY_WAITING 1904L
+#define ERROR_PRINTER_DELETED 1905L
+#define ERROR_INVALID_PRINTER_STATE 1906L
+#define ERROR_PASSWORD_MUST_CHANGE 1907L
+#define ERROR_DOMAIN_CONTROLLER_NOT_FOUND 1908L
+#define ERROR_ACCOUNT_LOCKED_OUT 1909L
+#define ERROR_NO_BROWSER_SERVERS_FOUND 6118L
+#define ERROR_INVALID_PIXEL_FORMAT 2000L
+#define ERROR_BAD_DRIVER 2001L
+#define ERROR_INVALID_WINDOW_STYLE 2002L
+#define ERROR_METAFILE_NOT_SUPPORTED 2003L
+#define ERROR_TRANSFORM_NOT_SUPPORTED 2004L
+#define ERROR_CLIPPING_NOT_SUPPORTED 2005L
+#define ERROR_UNKNOWN_PRINT_MONITOR 3000L
+#define ERROR_PRINTER_DRIVER_IN_USE 3001L
+#define ERROR_SPOOL_FILE_NOT_FOUND 3002L
+#define ERROR_SPL_NO_STARTDOC 3003L
+#define ERROR_SPL_NO_ADDJOB 3004L
+#define ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED 3005L
+#define ERROR_PRINT_MONITOR_ALREADY_INSTALLED 3006L
+#define ERROR_WINS_INTERNAL 4000L
+#define ERROR_CAN_NOT_DEL_LOCAL_WINS 4001L
+#define ERROR_STATIC_INIT 4002L
+#define ERROR_INC_BACKUP 4003L
+#define ERROR_FULL_BACKUP 4004L
+#define ERROR_REC_NON_EXISTENT 4005L
+#define ERROR_RPL_NOT_ALLOWED 4006L
+#define SEVERITY_SUCCESS 0
+#define SEVERITY_ERROR 1
+#define FACILITY_WINDOWS 8
+#define FACILITY_STORAGE 3
+#define FACILITY_RPC 1
+#define FACILITY_WIN32 7
+#define FACILITY_CONTROL 10
+#define FACILITY_NULL 0
+#define FACILITY_ITF 4
+#define FACILITY_DISPATCH 2
+#define SUCCEEDED(Status) ((HRESULT)(Status) >= 0)
+#define FAILED(Status) ((HRESULT)(Status)<0)
+#define IS_ERROR(Status) ((unsigned long)(Status) >> 31 == SEVERITY_ERROR)
+#define HRESULT_CODE(r) ((r)&0xFFFF)
+#define SCODE_CODE(c) ((c)&0xFFFF)
+#define HRESULT_FACILITY(r) (((r)>>16)&0x1fff)
+#define SCODE_FACILITY(c) (((c)>>16)&0x1fff)
+#define HRESULT_SEVERITY(r) (((r)>>31)&0x1)
+#define SCODE_SEVERITY(c) (((c)>>31)&0x1)
+#define MAKE_HRESULT(s,f,c) ((HRESULT)(((unsigned long)(s)<<31)|((unsigned long)(f)<<16)|((unsigned long)(c))))
+#define MAKE_SCODE(s,f,c) ((SCODE)(((unsigned long)(s)<<31)|((unsigned long)(f)<<16)|((unsigned long)(c))) )
+#define FACILITY_NT_BIT 0x10000000
+#define HRESULT_FROM_WIN32(x) (x?((HRESULT)(((x)&0x0000FFFF)|(FACILITY_WIN32<<16)|0x80000000)):0)
+#define HRESULT_FROM_NT(x) ((HRESULT)((x)|FACILITY_NT_BIT))
+#define GetScode(hr) ((SCODE) (hr))
+#define ResultFromScode(sc) ((HRESULT) (sc))
+#define PropagateResult(hrPrevious, scBase) ((HRESULT) scBase)
+
+#define NOERROR S_OK
+#define E_UNEXPECTED 0x8000FFFFL
+#define E_NOTIMPL 0x80004001L
+#define E_OUTOFMEMORY 0x8007000EL
+#define E_INVALIDARG 0x80070057L
+#define E_NOINTERFACE 0x80004002L
+#define E_POINTER 0x80004003L
+#define E_HANDLE 0x80070006L
+#define E_ABORT 0x80004004L
+#define E_FAIL 0x80004005L
+#define E_ACCESSDENIED 0x80070005L
+#define E_PENDING 0x8000000AL
+#define CO_E_INIT_TLS 0x80004006L
+#define CO_E_INIT_SHARED_ALLOCATOR 0x80004007L
+#define CO_E_INIT_MEMORY_ALLOCATOR 0x80004008L
+#define CO_E_INIT_CLASS_CACHE 0x80004009L
+#define CO_E_INIT_RPC_CHANNEL 0x8000400AL
+#define CO_E_INIT_TLS_SET_CHANNEL_CONTROL 0x8000400BL
+#define CO_E_INIT_TLS_CHANNEL_CONTROL 0x8000400CL
+#define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR 0x8000400DL
+#define CO_E_INIT_SCM_MUTEX_EXISTS 0x8000400EL
+#define CO_E_INIT_SCM_FILE_MAPPING_EXISTS 0x8000400FL
+#define CO_E_INIT_SCM_MAP_VIEW_OF_FILE 0x80004010L
+#define CO_E_INIT_SCM_EXEC_FAILURE 0x80004011L
+#define CO_E_INIT_ONLY_SINGLE_THREADED 0x80004012L
+#define S_OK (0x00000000L)
+#define S_FALSE (0x00000001L)
+#define OLE_E_FIRST 0x80040000L
+#define OLE_E_LAST 0x800400FFL
+#define OLE_S_FIRST 0x00040000L
+#define OLE_S_LAST 0x000400FFL
+#define OLE_E_OLEVERB 0x80040000L
+#define OLE_E_ADVF 0x80040001L
+#define OLE_E_ENUM_NOMORE 0x80040002L
+#define OLE_E_ADVISENOTSUPPORTED 0x80040003L
+#define OLE_E_NOCONNECTION 0x80040004L
+#define OLE_E_NOTRUNNING 0x80040005L
+#define OLE_E_NOCACHE 0x80040006L
+#define OLE_E_BLANK 0x80040007L
+#define OLE_E_CLASSDIFF 0x80040008L
+#define OLE_E_CANT_GETMONIKER 0x80040009L
+#define OLE_E_CANT_BINDTOSOURCE 0x8004000AL
+#define OLE_E_STATIC 0x8004000BL
+#define OLE_E_PROMPTSAVECANCELLED 0x8004000CL
+#define OLE_E_INVALIDRECT 0x8004000DL
+#define OLE_E_WRONGCOMPOBJ 0x8004000EL
+#define OLE_E_INVALIDHWND 0x8004000FL
+#define OLE_E_NOT_INPLACEACTIVE 0x80040010L
+#define OLE_E_CANTCONVERT 0x80040011L
+#define OLE_E_NOSTORAGE 0x80040012L
+#define DV_E_FORMATETC 0x80040064L
+#define DV_E_DVTARGETDEVICE 0x80040065L
+#define DV_E_STGMEDIUM 0x80040066L
+#define DV_E_STATDATA 0x80040067L
+#define DV_E_LINDEX 0x80040068L
+#define DV_E_TYMED 0x80040069L
+#define DV_E_CLIPFORMAT 0x8004006AL
+#define DV_E_DVASPECT 0x8004006BL
+#define DV_E_DVTARGETDEVICE_SIZE 0x8004006CL
+#define DV_E_NOIVIEWOBJECT 0x8004006DL
+#define DRAGDROP_E_FIRST 0x80040100L
+#define DRAGDROP_E_LAST 0x8004010FL
+#define DRAGDROP_S_FIRST 0x00040100L
+#define DRAGDROP_S_LAST 0x0004010FL
+#define DRAGDROP_E_NOTREGISTERED 0x80040100L
+#define DRAGDROP_E_ALREADYREGISTERED 0x80040101L
+#define DRAGDROP_E_INVALIDHWND 0x80040102L
+#define CLASSFACTORY_E_FIRST 0x80040110L
+#define CLASSFACTORY_E_LAST 0x8004011FL
+#define CLASSFACTORY_S_FIRST 0x00040110L
+#define CLASSFACTORY_S_LAST 0x0004011FL
+#define CLASS_E_NOAGGREGATION 0x80040110L
+#define CLASS_E_CLASSNOTAVAILABLE 0x80040111L
+#define MARSHAL_E_FIRST 0x80040120L
+#define MARSHAL_E_LAST 0x8004012FL
+#define MARSHAL_S_FIRST 0x00040120L
+#define MARSHAL_S_LAST 0x0004012FL
+#define DATA_E_FIRST 0x80040130L
+#define DATA_E_LAST 0x8004013FL
+#define DATA_S_FIRST 0x00040130L
+#define DATA_S_LAST 0x0004013FL
+#define VIEW_E_FIRST 0x80040140L
+#define VIEW_E_LAST 0x8004014FL
+#define VIEW_S_FIRST 0x00040140L
+#define VIEW_S_LAST 0x0004014FL
+#define VIEW_E_DRAW 0x80040140L
+#define REGDB_E_FIRST 0x80040150L
+#define REGDB_E_LAST 0x8004015FL
+#define REGDB_S_FIRST 0x00040150L
+#define REGDB_S_LAST 0x0004015FL
+#define REGDB_E_READREGDB 0x80040150L
+#define REGDB_E_WRITEREGDB 0x80040151L
+#define REGDB_E_KEYMISSING 0x80040152L
+#define REGDB_E_INVALIDVALUE 0x80040153L
+#define REGDB_E_CLASSNOTREG 0x80040154L
+#define REGDB_E_IIDNOTREG 0x80040155L
+#define CACHE_E_FIRST 0x80040170L
+#define CACHE_E_LAST 0x8004017FL
+#define CACHE_S_FIRST 0x00040170L
+#define CACHE_S_LAST 0x0004017FL
+#define CACHE_E_NOCACHE_UPDATED 0x80040170L
+#define OLEOBJ_E_FIRST 0x80040180L
+#define OLEOBJ_E_LAST 0x8004018FL
+#define OLEOBJ_S_FIRST 0x00040180L
+#define OLEOBJ_S_LAST 0x0004018FL
+#define OLEOBJ_E_NOVERBS 0x80040180L
+#define OLEOBJ_E_INVALIDVERB 0x80040181L
+#define CLIENTSITE_E_FIRST 0x80040190L
+#define CLIENTSITE_E_LAST 0x8004019FL
+#define CLIENTSITE_S_FIRST 0x00040190L
+#define CLIENTSITE_S_LAST 0x0004019FL
+#define INPLACE_E_NOTUNDOABLE 0x800401A0L
+#define INPLACE_E_NOTOOLSPACE 0x800401A1L
+#define INPLACE_E_FIRST 0x800401A0L
+#define INPLACE_E_LAST 0x800401AFL
+#define INPLACE_S_FIRST 0x000401A0L
+#define INPLACE_S_LAST 0x000401AFL
+#define ENUM_E_FIRST 0x800401B0L
+#define ENUM_E_LAST 0x800401BFL
+#define ENUM_S_FIRST 0x000401B0L
+#define ENUM_S_LAST 0x000401BFL
+#define CONVERT10_E_FIRST 0x800401C0L
+#define CONVERT10_E_LAST 0x800401CFL
+#define CONVERT10_S_FIRST 0x000401C0L
+#define CONVERT10_S_LAST 0x000401CFL
+#define CONVERT10_E_OLESTREAM_GET 0x800401C0L
+#define CONVERT10_E_OLESTREAM_PUT 0x800401C1L
+#define CONVERT10_E_OLESTREAM_FMT 0x800401C2L
+#define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB 0x800401C3L
+#define CONVERT10_E_STG_FMT 0x800401C4L
+#define CONVERT10_E_STG_NO_STD_STREAM 0x800401C5L
+#define CONVERT10_E_STG_DIB_TO_BITMAP 0x800401C6L
+#define CLIPBRD_E_FIRST 0x800401D0L
+#define CLIPBRD_E_LAST 0x800401DFL
+#define CLIPBRD_S_FIRST 0x000401D0L
+#define CLIPBRD_S_LAST 0x000401DFL
+#define CLIPBRD_E_CANT_OPEN 0x800401D0L
+#define CLIPBRD_E_CANT_EMPTY 0x800401D1L
+#define CLIPBRD_E_CANT_SET 0x800401D2L
+#define CLIPBRD_E_BAD_DATA 0x800401D3L
+#define CLIPBRD_E_CANT_CLOSE 0x800401D4L
+#define MK_E_FIRST 0x800401E0L
+#define MK_E_LAST 0x800401EFL
+#define MK_S_FIRST 0x000401E0L
+#define MK_S_LAST 0x000401EFL
+#define MK_E_CONNECTMANUALLY 0x800401E0L
+#define MK_E_EXCEEDEDDEADLINE 0x800401E1L
+#define MK_E_NEEDGENERIC 0x800401E2L
+#define MK_E_UNAVAILABLE 0x800401E3L
+#define MK_E_SYNTAX 0x800401E4L
+#define MK_E_NOOBJECT 0x800401E5L
+#define MK_E_INVALIDEXTENSION 0x800401E6L
+#define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED 0x800401E7L
+#define MK_E_NOTBINDABLE 0x800401E8L
+#define MK_E_NOTBOUND 0x800401E9L
+#define MK_E_CANTOPENFILE 0x800401EAL
+#define MK_E_MUSTBOTHERUSER 0x800401EBL
+#define MK_E_NOINVERSE 0x800401ECL
+#define MK_E_NOSTORAGE 0x800401EDL
+#define MK_E_NOPREFIX 0x800401EEL
+#define MK_E_ENUMERATION_FAILED 0x800401EFL
+#define CO_E_FIRST 0x800401F0L
+#define CO_E_LAST 0x800401FFL
+#define CO_S_FIRST 0x000401F0L
+#define CO_S_LAST 0x000401FFL
+#define CO_E_NOTINITIALIZED 0x800401F0L
+#define CO_E_ALREADYINITIALIZED 0x800401F1L
+#define CO_E_CANTDETERMINECLASS 0x800401F2L
+#define CO_E_CLASSSTRING 0x800401F3L
+#define CO_E_IIDSTRING 0x800401F4L
+#define CO_E_APPNOTFOUND 0x800401F5L
+#define CO_E_APPSINGLEUSE 0x800401F6L
+#define CO_E_ERRORINAPP 0x800401F7L
+#define CO_E_DLLNOTFOUND 0x800401F8L
+#define CO_E_ERRORINDLL 0x800401F9L
+#define CO_E_WRONGOSFORAPP 0x800401FAL
+#define CO_E_OBJNOTREG 0x800401FBL
+#define CO_E_OBJISREG 0x800401FCL
+#define CO_E_OBJNOTCONNECTED 0x800401FDL
+#define CO_E_APPDIDNTREG 0x800401FEL
+#define CO_E_RELEASED 0x800401FFL
+#define OLE_S_USEREG 0x00040000L
+#define OLE_S_STATIC 0x00040001L
+#define OLE_S_MAC_CLIPFORMAT 0x00040002L
+#define DRAGDROP_S_DROP 0x00040100L
+#define DRAGDROP_S_CANCEL 0x00040101L
+#define DRAGDROP_S_USEDEFAULTCURSORS 0x00040102L
+#define DATA_S_SAMEFORMATETC 0x00040130L
+#define VIEW_S_ALREADY_FROZEN 0x00040140L
+#define CACHE_S_FORMATETC_NOTSUPPORTED 0x00040170L
+#define CACHE_S_SAMECACHE 0x00040171L
+#define CACHE_S_SOMECACHES_NOTUPDATED 0x00040172L
+#define OLEOBJ_S_INVALIDVERB 0x00040180L
+#define OLEOBJ_S_CANNOT_DOVERB_NOW 0x00040181L
+#define OLEOBJ_S_INVALIDHWND 0x00040182L
+#define INPLACE_S_TRUNCATED 0x000401A0L
+#define CONVERT10_S_NO_PRESENTATION 0x000401C0L
+#define MK_S_REDUCED_TO_SELF 0x000401E2L
+#define MK_S_ME 0x000401E4L
+#define MK_S_HIM 0x000401E5L
+#define MK_S_US 0x000401E6L
+#define MK_S_MONIKERALREADYREGISTERED 0x000401E7L
+#define CO_E_CLASS_CREATE_FAILED 0x80080001L
+#define CO_E_SCM_ERROR 0x80080002L
+#define CO_E_SCM_RPC_FAILURE 0x80080003L
+#define CO_E_BAD_PATH 0x80080004L
+#define CO_E_SERVER_EXEC_FAILURE 0x80080005L
+#define CO_E_OBJSRV_RPC_FAILURE 0x80080006L
+#define MK_E_NO_NORMALIZED 0x80080007L
+#define CO_E_SERVER_STOPPING 0x80080008L
+#define MEM_E_INVALID_ROOT 0x80080009L
+#define MEM_E_INVALID_LINK 0x80080010L
+#define MEM_E_INVALID_SIZE 0x80080011L
+#define DISP_E_UNKNOWNINTERFACE 0x80020001L
+#define DISP_E_MEMBERNOTFOUND 0x80020003L
+#define DISP_E_PARAMNOTFOUND 0x80020004L
+#define DISP_E_TYPEMISMATCH 0x80020005L
+#define DISP_E_UNKNOWNNAME 0x80020006L
+#define DISP_E_NONAMEDARGS 0x80020007L
+#define DISP_E_BADVARTYPE 0x80020008L
+#define DISP_E_EXCEPTION 0x80020009L
+#define DISP_E_OVERFLOW 0x8002000AL
+#define DISP_E_BADINDEX 0x8002000BL
+#define DISP_E_UNKNOWNLCID 0x8002000CL
+#define DISP_E_ARRAYISLOCKED 0x8002000DL
+#define DISP_E_BADPARAMCOUNT 0x8002000EL
+#define DISP_E_PARAMNOTOPTIONAL 0x8002000FL
+#define DISP_E_BADCALLEE 0x80020010L
+#define DISP_E_NOTACOLLECTION 0x80020011L
+#define TYPE_E_BUFFERTOOSMALL 0x80028016L
+#define TYPE_E_INVDATAREAD 0x80028018L
+#define TYPE_E_UNSUPFORMAT 0x80028019L
+#define TYPE_E_REGISTRYACCESS 0x8002801CL
+#define TYPE_E_LIBNOTREGISTERED 0x8002801DL
+#define TYPE_E_UNDEFINEDTYPE 0x80028027L
+#define TYPE_E_QUALIFIEDNAMEDISALLOWED 0x80028028L
+#define TYPE_E_INVALIDSTATE 0x80028029L
+#define TYPE_E_WRONGTYPEKIND 0x8002802AL
+#define TYPE_E_ELEMENTNOTFOUND 0x8002802BL
+#define TYPE_E_AMBIGUOUSNAME 0x8002802CL
+#define TYPE_E_NAMECONFLICT 0x8002802DL
+#define TYPE_E_UNKNOWNLCID 0x8002802EL
+#define TYPE_E_DLLFUNCTIONNOTFOUND 0x8002802FL
+#define TYPE_E_BADMODULEKIND 0x800288BDL
+#define TYPE_E_SIZETOOBIG 0x800288C5L
+#define TYPE_E_DUPLICATEID 0x800288C6L
+#define TYPE_E_INVALIDID 0x800288CFL
+#define TYPE_E_TYPEMISMATCH 0x80028CA0L
+#define TYPE_E_OUTOFBOUNDS 0x80028CA1L
+#define TYPE_E_IOERROR 0x80028CA2L
+#define TYPE_E_CANTCREATETMPFILE 0x80028CA3L
+#define TYPE_E_CANTLOADLIBRARY 0x80029C4AL
+#define TYPE_E_INCONSISTENTPROPFUNCS 0x80029C83L
+#define TYPE_E_CIRCULARTYPE 0x80029C84L
+#define STG_E_INVALIDFUNCTION 0x80030001L
+#define STG_E_FILENOTFOUND 0x80030002L
+#define STG_E_PATHNOTFOUND 0x80030003L
+#define STG_E_TOOMANYOPENFILES 0x80030004L
+#define STG_E_ACCESSDENIED 0x80030005L
+#define STG_E_INVALIDHANDLE 0x80030006L
+#define STG_E_INSUFFICIENTMEMORY 0x80030008L
+#define STG_E_INVALIDPOINTER 0x80030009L
+#define STG_E_NOMOREFILES 0x80030012L
+#define STG_E_DISKISWRITEPROTECTED 0x80030013L
+#define STG_E_SEEKERROR 0x80030019L
+#define STG_E_WRITEFAULT 0x8003001DL
+#define STG_E_READFAULT 0x8003001EL
+#define STG_E_SHAREVIOLATION 0x80030020L
+#define STG_E_LOCKVIOLATION 0x80030021L
+#define STG_E_FILEALREADYEXISTS 0x80030050L
+#define STG_E_INVALIDPARAMETER 0x80030057L
+#define STG_E_MEDIUMFULL 0x80030070L
+#define STG_E_ABNORMALAPIEXIT 0x800300FAL
+#define STG_E_INVALIDHEADER 0x800300FBL
+#define STG_E_INVALIDNAME 0x800300FCL
+#define STG_E_UNKNOWN 0x800300FDL
+#define STG_E_UNIMPLEMENTEDFUNCTION 0x800300FEL
+#define STG_E_INVALIDFLAG 0x800300FFL
+#define STG_E_INUSE 0x80030100L
+#define STG_E_NOTCURRENT 0x80030101L
+#define STG_E_REVERTED 0x80030102L
+#define STG_E_CANTSAVE 0x80030103L
+#define STG_E_OLDFORMAT 0x80030104L
+#define STG_E_OLDDLL 0x80030105L
+#define STG_E_SHAREREQUIRED 0x80030106L
+#define STG_E_NOTFILEBASEDSTORAGE 0x80030107L
+#define STG_E_EXTANTMARSHALLINGS 0x80030108L
+#define STG_S_CONVERTED 0x00030200L
+#define RPC_E_CALL_REJECTED 0x80010001L
+#define RPC_E_CALL_CANCELED 0x80010002L
+#define RPC_E_CANTPOST_INSENDCALL 0x80010003L
+#define RPC_E_CANTCALLOUT_INASYNCCALL 0x80010004L
+#define RPC_E_CANTCALLOUT_INEXTERNALCALL 0x80010005L
+#define RPC_E_CONNECTION_TERMINATED 0x80010006L
+#define RPC_E_SERVER_DIED 0x80010007L
+#define RPC_E_CLIENT_DIED 0x80010008L
+#define RPC_E_INVALID_DATAPACKET 0x80010009L
+#define RPC_E_CANTTRANSMIT_CALL 0x8001000AL
+#define RPC_E_CLIENT_CANTMARSHAL_DATA 0x8001000BL
+#define RPC_E_CLIENT_CANTUNMARSHAL_DATA 0x8001000CL
+#define RPC_E_SERVER_CANTMARSHAL_DATA 0x8001000DL
+#define RPC_E_SERVER_CANTUNMARSHAL_DATA 0x8001000EL
+#define RPC_E_INVALID_DATA 0x8001000FL
+#define RPC_E_INVALID_PARAMETER 0x80010010L
+#define RPC_E_CANTCALLOUT_AGAIN 0x80010011L
+#define RPC_E_SERVER_DIED_DNE 0x80010012L
+#define RPC_E_SYS_CALL_FAILED 0x80010100L
+#define RPC_E_OUT_OF_RESOURCES 0x80010101L
+#define RPC_E_ATTEMPTED_MULTITHREAD 0x80010102L
+#define RPC_E_NOT_REGISTERED 0x80010103L
+#define RPC_E_FAULT 0x80010104L
+#define RPC_E_SERVERFAULT 0x80010105L
+#define RPC_E_CHANGED_MODE 0x80010106L
+#define RPC_E_INVALIDMETHOD 0x80010107L
+#define RPC_E_DISCONNECTED 0x80010108L
+#define RPC_E_RETRY 0x80010109L
+#define RPC_E_SERVERCALL_RETRYLATER 0x8001010AL
+#define RPC_E_SERVERCALL_REJECTED 0x8001010BL
+#define RPC_E_INVALID_CALLDATA 0x8001010CL
+#define RPC_E_CANTCALLOUT_ININPUTSYNCCALL 0x8001010DL
+#define RPC_E_WRONG_THREAD 0x8001010EL
+#define RPC_E_THREAD_NOT_INIT 0x8001010FL
+#define RPC_E_UNEXPECTED 0x8001FFFFL
+
+#define NTE_BAD_UID 0x80090001L
+#define NTE_BAD_HASH 0x80090002L
+#define NTE_BAD_KEY 0x80090003L
+#define NTE_BAD_LEN 0x80090004L
+#define NTE_BAD_DATA 0x80090005L
+#define NTE_BAD_SIGNATURE 0x80090006L
+#define NTE_BAD_VER 0x80090007L
+#define NTE_BAD_ALGID 0x80090008L
+#define NTE_BAD_FLAGS 0x80090009L
+#define NTE_BAD_TYPE 0x8009000AL
+#define NTE_BAD_KEY_STATE 0x8009000BL
+#define NTE_BAD_HASH_STATE 0x8009000CL
+#define NTE_NO_KEY 0x8009000DL
+#define NTE_NO_MEMORY 0x8009000EL
+#define NTE_EXISTS 0x8009000FL
+#define NTE_PERM 0x80090010L
+#define NTE_NOT_FOUND 0x80090011L
+#define NTE_DOUBLE_ENCRYPT 0x80090012L
+#define NTE_BAD_PROVIDER 0x80090013L
+#define NTE_BAD_PROV_TYPE 0x80090014L
+#define NTE_BAD_PUBLIC_KEY 0x80090015L
+#define NTE_BAD_KEYSET 0x80090016L
+#define NTE_PROV_TYPE_NOT_DEF 0x80090017L
+#define NTE_PROV_TYPE_ENTRY_BAD 0x80090018L
+#define NTE_KEYSET_NOT_DEF 0x80090019L
+#define NTE_KEYSET_ENTRY_BAD 0x8009001AL
+#define NTE_PROV_TYPE_NO_MATCH 0x8009001BL
+#define NTE_SIGNATURE_FILE_BAD 0x8009001CL
+#define NTE_PROVIDER_DLL_FAIL 0x8009001DL
+#define NTE_PROV_DLL_NOT_FOUND 0x8009001EL
+#define NTE_BAD_KEYSET_PARAM 0x8009001FL
+#define NTE_FAIL 0x80090020L
+#define NTE_SYS_ERR 0x80090021L
+/* #define NTE_TOKEN_KEYSET_STORAGE ??? */
+
+#endif
diff --git a/Win32/bin/tcc/include/winapi/wingdi.h b/Win32/bin/tcc/include/winapi/wingdi.h
new file mode 100644
index 0000000..20e3bbd
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/wingdi.h
@@ -0,0 +1,2843 @@
+#ifndef _WINGDI_H
+#define _WINGDI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define WINGDIAPI
+#define BI_RGB 0
+#define BI_RLE8 1
+#define BI_RLE4 2
+#define BI_BITFIELDS 3
+#define BI_JPEG 4
+#define BI_PNG 5
+#define LF_FACESIZE	32
+#define LF_FULLFACESIZE	64
+#define CA_NEGATIVE	1
+#define CA_LOG_FILTER	2
+#define ILLUMINANT_DEVICE_DEFAULT	0
+#define ILLUMINANT_A	1
+#define ILLUMINANT_B	2
+#define ILLUMINANT_C	3
+#define ILLUMINANT_D50	4
+#define ILLUMINANT_D55	5
+#define ILLUMINANT_D65	6
+#define ILLUMINANT_D75	7
+#define ILLUMINANT_F2	8
+#define ILLUMINANT_MAX_INDEX	ILLUMINANT_F2
+#define ILLUMINANT_TUNGSTEN	ILLUMINANT_A
+#define ILLUMINANT_DAYLIGHT	ILLUMINANT_C
+#define ILLUMINANT_FLUORESCENT	ILLUMINANT_F2
+#define ILLUMINANT_NTSC	ILLUMINANT_C
+#define RGB_GAMMA_MIN	2500
+#define RGB_GAMMA_MAX	65000
+#define REFERENCE_WHITE_MIN	6000
+#define REFERENCE_WHITE_MAX	10000
+#define REFERENCE_BLACK_MIN	0
+#define REFERENCE_BLACK_MAX	4000
+#define COLOR_ADJ_MIN	(-100)
+#define COLOR_ADJ_MAX	100
+#define CCHDEVICENAME 32
+#define CCHFORMNAME 32
+#define DI_COMPAT	4
+#define DI_DEFAULTSIZE	8
+#define DI_IMAGE	2
+#define DI_MASK	1
+#define DI_NORMAL	3
+#define DI_APPBANDING 1
+#define EMR_HEADER	1
+#define EMR_POLYBEZIER 2
+#define EMR_POLYGON	3
+#define EMR_POLYLINE	4
+#define EMR_POLYBEZIERTO	5
+#define EMR_POLYLINETO 6
+#define EMR_POLYPOLYLINE	7
+#define EMR_POLYPOLYGON 8
+#define EMR_SETWINDOWEXTEX	9
+#define EMR_SETWINDOWORGEX	10
+#define EMR_SETVIEWPORTEXTEX 11
+#define EMR_SETVIEWPORTORGEX 12
+#define EMR_SETBRUSHORGEX 13
+#define EMR_EOF 14
+#define EMR_SETPIXELV 15
+#define EMR_SETMAPPERFLAGS 16
+#define EMR_SETMAPMODE 17
+#define EMR_SETBKMODE 18
+#define EMR_SETPOLYFILLMODE 19
+#define EMR_SETROP2 20
+#define EMR_SETSTRETCHBLTMODE 21
+#define EMR_SETTEXTALIGN 22
+#define EMR_SETCOLORADJUSTMENT 23
+#define EMR_SETTEXTCOLOR 24
+#define EMR_SETBKCOLOR 25
+#define EMR_OFFSETCLIPRGN 26
+#define EMR_MOVETOEX 27
+#define EMR_SETMETARGN 28
+#define EMR_EXCLUDECLIPRECT 29
+#define EMR_INTERSECTCLIPRECT 30
+#define EMR_SCALEVIEWPORTEXTEX 31
+#define EMR_SCALEWINDOWEXTEX 32
+#define EMR_SAVEDC 33
+#define EMR_RESTOREDC 34
+#define EMR_SETWORLDTRANSFORM 35
+#define EMR_MODIFYWORLDTRANSFORM 36
+#define EMR_SELECTOBJECT 37
+#define EMR_CREATEPEN 38
+#define EMR_CREATEBRUSHINDIRECT 39
+#define EMR_DELETEOBJECT 40
+#define EMR_ANGLEARC 41
+#define EMR_ELLIPSE  42
+#define EMR_RECTANGLE 43
+#define EMR_ROUNDRECT 44
+#define EMR_ARC 45
+#define EMR_CHORD 46
+#define EMR_PIE 47
+#define EMR_SELECTPALETTE 48
+#define EMR_CREATEPALETTE 49
+#define EMR_SETPALETTEENTRIES 50
+#define EMR_RESIZEPALETTE 51
+#define EMR_REALIZEPALETTE 52
+#define EMR_EXTFLOODFILL 53
+#define EMR_LINETO 54
+#define EMR_ARCTO 55
+#define EMR_POLYDRAW 56
+#define EMR_SETARCDIRECTION 57
+#define EMR_SETMITERLIMIT 58
+#define EMR_BEGINPATH 59
+#define EMR_ENDPATH 60
+#define EMR_CLOSEFIGURE 61
+#define EMR_FILLPATH 62
+#define EMR_STROKEANDFILLPATH 63
+#define EMR_STROKEPATH 64
+#define EMR_FLATTENPATH 65
+#define EMR_WIDENPATH 66
+#define EMR_SELECTCLIPPATH 67
+#define EMR_ABORTPATH 68
+#define EMR_GDICOMMENT 70
+#define EMR_FILLRGN 71
+#define EMR_FRAMERGN 72
+#define EMR_INVERTRGN 73
+#define EMR_PAINTRGN 74
+#define EMR_EXTSELECTCLIPRGN 75
+#define EMR_BITBLT 76
+#define EMR_STRETCHBLT 77
+#define EMR_MASKBLT 78
+#define EMR_PLGBLT 79
+#define EMR_SETDIBITSTODEVICE 80
+#define EMR_STRETCHDIBITS 81
+#define EMR_EXTCREATEFONTINDIRECTW 82
+#define EMR_EXTTEXTOUTA 83
+#define EMR_EXTTEXTOUTW 84
+#define EMR_POLYBEZIER16 85
+#define EMR_POLYGON16 86
+#define EMR_POLYLINE16 87
+#define EMR_POLYBEZIERTO16 88
+#define EMR_POLYLINETO16 89
+#define EMR_POLYPOLYLINE16 90
+#define EMR_POLYPOLYGON16 91
+#define EMR_POLYDRAW16 92
+#define EMR_CREATEMONOBRUSH 93
+#define EMR_CREATEDIBPATTERNBRUSHPT 94
+#define EMR_EXTCREATEPEN 95
+#define EMR_POLYTEXTOUTA 96
+#define EMR_POLYTEXTOUTW 97
+#define EMR_SETICMMODE 98
+#define EMR_CREATECOLORSPACE 99
+#define EMR_SETCOLORSPACE 100
+#define EMR_DELETECOLORSPACE 101
+#define EMR_GLSRECORD 102
+#define EMR_GLSBOUNDEDRECORD 103
+#define EMR_PIXELFORMAT 104
+#define ENHMETA_SIGNATURE 1179469088
+#define EPS_SIGNATURE 0x46535045
+#define META_SETBKCOLOR	0x201
+#define META_SETBKMODE	0x102
+#define META_SETMAPMODE	0x103
+#define META_SETROP2	0x104
+#define META_SETRELABS	0x105
+#define META_SETPOLYFILLMODE	0x106
+#define META_SETSTRETCHBLTMODE	0x107
+#define META_SETTEXTCHAREXTRA	0x108
+#define META_SETTEXTCOLOR	0x209
+#define META_SETTEXTJUSTIFICATION	0x20A
+#define META_SETWINDOWORG	0x20B
+#define META_SETWINDOWEXT	0x20C
+#define META_SETVIEWPORTORG	0x20D
+#define META_SETVIEWPORTEXT	0x20E
+#define META_OFFSETWINDOWORG	0x20F
+#define META_SCALEWINDOWEXT	0x410
+#define META_OFFSETVIEWPORTORG	0x211
+#define META_SCALEVIEWPORTEXT	0x412
+#define META_LINETO	0x213
+#define META_MOVETO	0x214
+#define META_EXCLUDECLIPRECT	0x415
+#define META_INTERSECTCLIPRECT	0x416
+#define META_ARC	0x817
+#define META_ELLIPSE	0x418
+#define META_FLOODFILL	0x419
+#define META_PIE	0x81A
+#define META_RECTANGLE	0x41B
+#define META_ROUNDRECT	0x61C
+#define META_PATBLT	0x61D
+#define META_SAVEDC	0x1E
+#define META_SETPIXEL	0x41F
+#define META_OFFSETCLIPRGN	0x220
+#define META_TEXTOUT	0x521
+#define META_BITBLT	0x922
+#define META_STRETCHBLT	0xB23
+#define META_POLYGON	0x324
+#define META_POLYLINE	0x325
+#define META_ESCAPE	0x626
+#define META_RESTOREDC	0x127
+#define META_FILLREGION	0x228
+#define META_FRAMEREGION	0x429
+#define META_INVERTREGION	0x12A
+#define META_PAINTREGION	0x12B
+#define META_SELECTCLIPREGION	0x12C
+#define META_SELECTOBJECT	0x12D
+#define META_SETTEXTALIGN	0x12E
+#define META_CHORD	0x830
+#define META_SETMAPPERFLAGS	0x231
+#define META_EXTTEXTOUT	0xa32
+#define META_SETDIBTODEV	0xd33
+#define META_SELECTPALETTE	0x234
+#define META_REALIZEPALETTE	0x35
+#define META_ANIMATEPALETTE	0x436
+#define META_SETPALENTRIES	0x37
+#define META_POLYPOLYGON	0x538
+#define META_RESIZEPALETTE	0x139
+#define META_DIBBITBLT	0x940
+#define META_DIBSTRETCHBLT	0xb41
+#define META_DIBCREATEPATTERNBRUSH	0x142
+#define META_STRETCHDIB	0xf43
+#define META_EXTFLOODFILL	0x548
+#define META_DELETEOBJECT	0x1f0
+#define META_CREATEPALETTE	0xf7
+#define META_CREATEPATTERNBRUSH	0x1F9
+#define META_CREATEPENINDIRECT	0x2FA
+#define META_CREATEFONTINDIRECT	0x2FB
+#define META_CREATEBRUSHINDIRECT	0x2FC
+#define META_CREATEREGION	0x6FF
+#define PT_MOVETO	6
+#define PT_LINETO	2
+#define PT_BEZIERTO	4
+#define PT_CLOSEFIGURE 1
+#define ELF_VENDOR_SIZE	4
+#define ELF_VERSION	0
+#define ELF_CULTURE_LATIN	0
+#define PFD_TYPE_RGBA	0
+#define PFD_TYPE_COLORINDEX	1
+#define PFD_MAIN_PLANE	0
+#define PFD_OVERLAY_PLANE	1
+#define PFD_UNDERLAY_PLANE	(-1)
+#define PFD_DOUBLEBUFFER	1
+#define PFD_STEREO	2
+#define PFD_DRAW_TO_WINDOW	4
+#define PFD_DRAW_TO_BITMAP	8
+#define PFD_SUPPORT_GDI	16
+#define PFD_SUPPORT_OPENGL	32
+#define PFD_GENERIC_FORMAT	64
+#define PFD_NEED_PALETTE	128
+#define PFD_NEED_SYSTEM_PALETTE	0x00000100
+#define PFD_SWAP_EXCHANGE	0x00000200
+#define PFD_SWAP_COPY	0x00000400
+#define PFD_GENERIC_ACCELERATED	0x00001000
+#define PFD_DEPTH_DONTCARE	0x20000000
+#define PFD_DOUBLEBUFFER_DONTCARE	0x40000000
+#define PFD_STEREO_DONTCARE	0x80000000
+#define SP_ERROR	(-1)
+#define SP_OUTOFDISK	(-4)
+#define SP_OUTOFMEMORY	(-5)
+#define SP_USERABORT	(-3)
+#define SP_APPABORT	(-2)
+#define BLACKNESS	0x42
+#define NOTSRCERASE	0x1100A6
+#define NOTSRCCOPY	0x330008
+#define SRCERASE	0x440328
+#define DSTINVERT	0x550009
+#define PATINVERT	0x5A0049
+#define SRCINVERT	0x660046
+#define SRCAND	0x8800C6
+#define MERGEPAINT	0xBB0226
+#define MERGECOPY	0xC000CA
+#define SRCCOPY 0xCC0020
+#define SRCPAINT	0xEE0086
+#define PATCOPY	0xF00021
+#define PATPAINT	0xFB0A09
+#define WHITENESS	0xFF0062
+#define R2_BLACK	1
+#define R2_COPYPEN	13
+#define R2_MASKNOTPEN	3
+#define R2_MASKPEN	9
+#define R2_MASKPENNOT	5
+#define R2_MERGENOTPEN	12
+#define R2_MERGEPEN	15
+#define R2_MERGEPENNOT	14
+#define R2_NOP	11
+#define R2_NOT	6
+#define R2_NOTCOPYPEN	4
+#define R2_NOTMASKPEN	8
+#define R2_NOTMERGEPEN	2
+#define R2_NOTXORPEN	10
+#define R2_WHITE	16
+#define R2_XORPEN	7
+#define CM_OUT_OF_GAMUT	255
+#define CM_IN_GAMUT	0
+#define RGN_AND 1
+#define RGN_COPY	5
+#define RGN_DIFF	4
+#define RGN_OR	2
+#define RGN_XOR	3
+#define NULLREGION	1
+#define SIMPLEREGION	2
+#define COMPLEXREGION	3
+#define ERROR 0
+#define CBM_INIT	4
+#define DIB_PAL_COLORS	1
+#define DIB_RGB_COLORS	0
+#define FW_DONTCARE	0
+#define FW_THIN	100
+#define FW_EXTRALIGHT	200
+#define FW_ULTRALIGHT	FW_EXTRALIGHT
+#define FW_LIGHT	300
+#define FW_NORMAL	400
+#define FW_REGULAR	400
+#define FW_MEDIUM	500
+#define FW_SEMIBOLD	600
+#define FW_DEMIBOLD	FW_SEMIBOLD
+#define FW_BOLD	700
+#define FW_EXTRABOLD	800
+#define FW_ULTRABOLD	FW_EXTRABOLD
+#define FW_HEAVY	900
+#define FW_BLACK	FW_HEAVY
+#define ANSI_CHARSET	0
+#define DEFAULT_CHARSET	1
+#define SYMBOL_CHARSET	2
+#define SHIFTJIS_CHARSET	128
+#define HANGEUL_CHARSET	129
+#define HANGUL_CHARSET  129
+#define GB2312_CHARSET	134
+#define CHINESEBIG5_CHARSET	136
+#define GREEK_CHARSET	161
+#define TURKISH_CHARSET	162
+#define HEBREW_CHARSET	177
+#define ARABIC_CHARSET	178
+#define BALTIC_CHARSET	186
+#define RUSSIAN_CHARSET	204
+#define THAI_CHARSET	222
+#define EASTEUROPE_CHARSET	238
+#define OEM_CHARSET	255
+#define JOHAB_CHARSET	130
+#define VIETNAMESE_CHARSET	163
+#define MAC_CHARSET 77
+#define BALTIC_CHARSET 186
+#define JOHAB_CHARSET 130
+#define VIETNAMESE_CHARSET 163
+#define OUT_DEFAULT_PRECIS	0
+#define OUT_STRING_PRECIS	1
+#define OUT_CHARACTER_PRECIS	2
+#define OUT_STROKE_PRECIS	3
+#define OUT_TT_PRECIS	4
+#define OUT_DEVICE_PRECIS	5
+#define OUT_RASTER_PRECIS	6
+#define OUT_TT_ONLY_PRECIS	7
+#define OUT_OUTLINE_PRECIS	8
+#define CLIP_DEFAULT_PRECIS	0
+#define CLIP_CHARACTER_PRECIS	1
+#define CLIP_STROKE_PRECIS	2
+#define CLIP_MASK	15
+#define CLIP_LH_ANGLES	16
+#define CLIP_TT_ALWAYS	32
+#define CLIP_EMBEDDED	128
+#define DEFAULT_QUALITY	0
+#define DRAFT_QUALITY	1
+#define PROOF_QUALITY	2
+#define NONANTIALIASED_QUALITY 3
+#define ANTIALIASED_QUALITY 4
+#define DEFAULT_PITCH	0
+#define FIXED_PITCH	1
+#define VARIABLE_PITCH	2
+#define MONO_FONT 8
+#define FF_DECORATIVE	80
+#define FF_DONTCARE	0
+#define FF_MODERN	48
+#define FF_ROMAN	16
+#define FF_SCRIPT	64
+#define FF_SWISS	32
+#define PANOSE_COUNT 10
+#define PAN_FAMILYTYPE_INDEX 0
+#define PAN_SERIFSTYLE_INDEX 1
+#define PAN_WEIGHT_INDEX 2
+#define PAN_PROPORTION_INDEX 3
+#define PAN_CONTRAST_INDEX 4
+#define PAN_STROKEVARIATION_INDEX 5
+#define PAN_ARMSTYLE_INDEX 6
+#define PAN_LETTERFORM_INDEX 7
+#define PAN_MIDLINE_INDEX 8
+#define PAN_XHEIGHT_INDEX 9
+#define PAN_CULTURE_LATIN 0
+#define PAN_ANY 0
+#define PAN_NO_FIT 1
+#define PAN_FAMILY_TEXT_DISPLAY 2
+#define PAN_FAMILY_SCRIPT 3
+#define PAN_FAMILY_DECORATIVE 4
+#define PAN_FAMILY_PICTORIAL 5
+#define PAN_SERIF_COVE 2
+#define PAN_SERIF_OBTUSE_COVE 3
+#define PAN_SERIF_SQUARE_COVE 4
+#define PAN_SERIF_OBTUSE_SQUARE_COVE 5
+#define PAN_SERIF_SQUARE 6
+#define PAN_SERIF_THIN 7
+#define PAN_SERIF_BONE 8
+#define PAN_SERIF_EXAGGERATED 9
+#define PAN_SERIF_TRIANGLE 10
+#define PAN_SERIF_NORMAL_SANS 11
+#define PAN_SERIF_OBTUSE_SANS 12
+#define PAN_SERIF_PERP_SANS 13
+#define PAN_SERIF_FLARED 14
+#define PAN_SERIF_ROUNDED 15
+#define PAN_WEIGHT_VERY_LIGHT 2
+#define PAN_WEIGHT_LIGHT 3
+#define PAN_WEIGHT_THIN 4
+#define PAN_WEIGHT_BOOK 5
+#define PAN_WEIGHT_MEDIUM 6
+#define PAN_WEIGHT_DEMI 7
+#define PAN_WEIGHT_BOLD 8
+#define PAN_WEIGHT_HEAVY 9
+#define PAN_WEIGHT_BLACK 10
+#define PAN_WEIGHT_NORD 11
+#define PAN_PROP_OLD_STYLE 2
+#define PAN_PROP_MODERN 3
+#define PAN_PROP_EVEN_WIDTH 4
+#define PAN_PROP_EXPANDED 5
+#define PAN_PROP_CONDENSED 6
+#define PAN_PROP_VERY_EXPANDED 7
+#define PAN_PROP_VERY_CONDENSED 8
+#define PAN_PROP_MONOSPACED 9
+#define PAN_CONTRAST_NONE 2
+#define PAN_CONTRAST_VERY_LOW 3
+#define PAN_CONTRAST_LOW 4
+#define PAN_CONTRAST_MEDIUM_LOW 5
+#define PAN_CONTRAST_MEDIUM 6
+#define PAN_CONTRAST_MEDIUM_HIGH 7
+#define PAN_CONTRAST_HIGH 8
+#define PAN_CONTRAST_VERY_HIGH 9
+#define PAN_STROKE_GRADUAL_DIAG 2
+#define PAN_STROKE_GRADUAL_TRAN 3
+#define PAN_STROKE_GRADUAL_VERT 4
+#define PAN_STROKE_GRADUAL_HORZ 5
+#define PAN_STROKE_RAPID_VERT 6
+#define PAN_STROKE_RAPID_HORZ 7
+#define PAN_STROKE_INSTANT_VERT 8
+#define PAN_STRAIGHT_ARMS_HORZ 2
+#define PAN_STRAIGHT_ARMS_WEDGE 3
+#define PAN_STRAIGHT_ARMS_VERT 4
+#define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5
+#define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6
+#define PAN_BENT_ARMS_HORZ 7
+#define PAN_BENT_ARMS_WEDGE 8
+#define PAN_BENT_ARMS_VERT 9
+#define PAN_BENT_ARMS_SINGLE_SERIF 10
+#define PAN_BENT_ARMS_DOUBLE_SERIF 11
+#define PAN_LETT_NORMAL_CONTACT 2
+#define PAN_LETT_NORMAL_WEIGHTED 3
+#define PAN_LETT_NORMAL_BOXED 4
+#define PAN_LETT_NORMAL_FLATTENED 5
+#define PAN_LETT_NORMAL_ROUNDED 6
+#define PAN_LETT_NORMAL_OFF_CENTER 7
+#define PAN_LETT_NORMAL_SQUARE 8
+#define PAN_LETT_OBLIQUE_CONTACT 9
+#define PAN_LETT_OBLIQUE_WEIGHTED 10
+#define PAN_LETT_OBLIQUE_BOXED 11
+#define PAN_LETT_OBLIQUE_FLATTENED 12
+#define PAN_LETT_OBLIQUE_ROUNDED 13
+#define PAN_LETT_OBLIQUE_OFF_CENTER 14
+#define PAN_LETT_OBLIQUE_SQUARE 15
+#define PAN_MIDLINE_STANDARD_TRIMMED 2
+#define PAN_MIDLINE_STANDARD_POINTED 3
+#define PAN_MIDLINE_STANDARD_SERIFED 4
+#define PAN_MIDLINE_HIGH_TRIMMED 5
+#define PAN_MIDLINE_HIGH_POINTED 6
+#define PAN_MIDLINE_HIGH_SERIFED 7
+#define PAN_MIDLINE_CONSTANT_TRIMMED 8
+#define PAN_MIDLINE_CONSTANT_POINTED 9
+#define PAN_MIDLINE_CONSTANT_SERIFED 10
+#define PAN_MIDLINE_LOW_TRIMMED 11
+#define PAN_MIDLINE_LOW_POINTED 12
+#define PAN_MIDLINE_LOW_SERIFED 13
+#define PAN_XHEIGHT_CONSTANT_SMALL 2
+#define PAN_XHEIGHT_CONSTANT_STD 3
+#define PAN_XHEIGHT_CONSTANT_LARGE 4
+#define PAN_XHEIGHT_DUCKING_SMALL 5
+#define PAN_XHEIGHT_DUCKING_STD 6
+#define PAN_XHEIGHT_DUCKING_LARGE 7
+#define FS_LATIN1 1
+#define FS_LATIN2 2
+#define FS_CYRILLIC 4
+#define FS_GREEK 8
+#define FS_TURKISH 16
+#define FS_HEBREW 32
+#define FS_ARABIC 64
+#define FS_BALTIC 128
+#define FS_THAI 0x10000
+#define FS_JISJAPAN 0x20000
+#define FS_CHINESESIMP 0x40000
+#define FS_WANSUNG 0x80000
+#define FS_CHINESETRAD 0x100000
+#define FS_JOHAB 0x200000
+#define FS_SYMBOL 0x80000000
+#define HS_BDIAGONAL	3
+#define HS_CROSS	4
+#define HS_DIAGCROSS	5
+#define HS_FDIAGONAL	2
+#define HS_HORIZONTAL	0
+#define HS_VERTICAL	1
+#define PS_GEOMETRIC	65536
+#define PS_COSMETIC	0
+#define PS_ALTERNATE	8
+#define PS_SOLID	0
+#define PS_DASH	1
+#define PS_DOT	2
+#define PS_DASHDOT	3
+#define PS_DASHDOTDOT	4
+#define PS_NULL	5
+#define PS_USERSTYLE	7
+#define PS_INSIDEFRAME	6
+#define PS_ENDCAP_ROUND	0
+#define PS_ENDCAP_SQUARE	256
+#define PS_ENDCAP_FLAT	512
+#define PS_JOIN_BEVEL	4096
+#define PS_JOIN_MITER	8192
+#define PS_JOIN_ROUND	0
+#define PS_STYLE_MASK	15
+#define PS_ENDCAP_MASK	3840
+#define PS_TYPE_MASK	983040
+#define ALTERNATE	1
+#define WINDING	2
+#define DC_BINNAMES	12
+#define DC_BINS	6
+#define DC_COPIES	18
+#define DC_DRIVER	11
+#define DC_DATATYPE_PRODUCED	21
+#define DC_DUPLEX	7
+#define DC_EMF_COMPLIANT	20
+#define DC_ENUMRESOLUTIONS	13
+#define DC_EXTRA	9
+#define DC_FIELDS	1
+#define DC_FILEDEPENDENCIES	14
+#define DC_MAXEXTENT	5
+#define DC_MINEXTENT	4
+#define DC_ORIENTATION	17
+#define DC_PAPERNAMES	16
+#define DC_PAPERS	2
+#define DC_PAPERSIZE	3
+#define DC_SIZE	8
+#define DC_TRUETYPE	15
+#define DCTT_BITMAP	1
+#define DCTT_DOWNLOAD	2
+#define DCTT_SUBDEV	4
+#define DCTT_DOWNLOAD_OUTLINE 8
+#define DC_VERSION	10
+#define DC_BINADJUST	19
+#define DC_EMF_COMPLIANT	20
+#define DC_DATATYPE_PRODUCED	21
+#define DC_MANUFACTURER	23
+#define DC_MODEL	24
+#define DCBA_FACEUPNONE	0
+#define DCBA_FACEUPCENTER	1
+#define DCBA_FACEUPLEFT	2
+#define DCBA_FACEUPRIGHT	3
+#define DCBA_FACEDOWNNONE	256
+#define DCBA_FACEDOWNCENTER	257
+#define DCBA_FACEDOWNLEFT	258
+#define DCBA_FACEDOWNRIGHT	259
+#define FLOODFILLBORDER 0
+#define FLOODFILLSURFACE 1
+#define ETO_CLIPPED 4
+#define ETO_GLYPH_INDEX 16
+#define ETO_OPAQUE 2
+#define ETO_RTLREADING 128
+#define GDICOMMENT_WINDOWS_METAFILE (-2147483647)
+#define GDICOMMENT_BEGINGROUP 2
+#define GDICOMMENT_ENDGROUP 3
+#define GDICOMMENT_MULTIFORMATS 1073741828
+#define GDICOMMENT_IDENTIFIER 1128875079
+#define AD_COUNTERCLOCKWISE 1
+#define AD_CLOCKWISE 2
+#define RDH_RECTANGLES	1
+#define GCPCLASS_LATIN	1
+#define GCPCLASS_HEBREW	2
+#define GCPCLASS_ARABIC	2
+#define GCPCLASS_NEUTRAL	3
+#define GCPCLASS_LOCALNUMBER	4
+#define GCPCLASS_LATINNUMBER	5
+#define GCPCLASS_LATINNUMERICTERMINATOR	6
+#define GCPCLASS_LATINNUMERICSEPARATOR	7
+#define GCPCLASS_NUMERICSEPARATOR	8
+#define GCPCLASS_PREBOUNDLTR	128
+#define GCPCLASS_PREBOUNDRTL	64
+#define GCPCLASS_POSTBOUNDLTR	32
+#define GCPCLASS_POSTBOUNDRTL	16
+#define GCPGLYPH_LINKBEFORE	0x8000
+#define GCPGLYPH_LINKAFTER	0x4000
+#define DCB_DISABLE 8
+#define DCB_ENABLE 4
+#define DCB_RESET 1
+#define DCB_SET 3
+#define DCB_ACCUMULATE 2
+#define DCB_DIRTY	2
+#define OBJ_BRUSH 2
+#define OBJ_PEN 1
+#define OBJ_PAL 5
+#define OBJ_FONT 6
+#define OBJ_BITMAP 7
+#define OBJ_EXTPEN 11
+#define OBJ_REGION 8
+#define OBJ_DC 3
+#define OBJ_MEMDC 10
+#define OBJ_METAFILE 9
+#define OBJ_METADC 4
+#define OBJ_ENHMETAFILE 13
+#define OBJ_ENHMETADC 12
+#define DRIVERVERSION 0
+#define TECHNOLOGY 2
+#define DT_PLOTTER 0
+#define DT_RASDISPLAY 1
+#define DT_RASPRINTER 2
+#define DT_RASCAMERA 3
+#define DT_CHARSTREAM 4
+#define DT_METAFILE 5
+#define DT_DISPFILE 6
+#define HORZSIZE 4
+#define VERTSIZE 6
+#define HORZRES 8
+#define VERTRES 10
+#define LOGPIXELSX 88
+#define LOGPIXELSY 90
+#define BITSPIXEL 12
+#define PLANES 14
+#define NUMBRUSHES 16
+#define NUMPENS 18
+#define NUMFONTS 22
+#define NUMCOLORS 24
+#define NUMMARKERS 20
+#define ASPECTX 40
+#define ASPECTY 42
+#define ASPECTXY 44
+#define PDEVICESIZE 26
+#define CLIPCAPS 36
+#define SIZEPALETTE 104
+#define NUMRESERVED 106
+#define COLORRES 108
+#define PHYSICALWIDTH 110
+#define PHYSICALHEIGHT 111
+#define PHYSICALOFFSETX 112
+#define PHYSICALOFFSETY 113
+#define SCALINGFACTORX 114
+#define SCALINGFACTORY 115
+#define VREFRESH 116
+#define DESKTOPHORZRES 118
+#define DESKTOPVERTRES 117
+#define BLTALIGNMENT 119
+#define RASTERCAPS 38
+#define RC_BANDING 2
+#define RC_BITBLT 1
+#define RC_BITMAP64 8
+#define RC_DI_BITMAP 128
+#define RC_DIBTODEV 512
+#define RC_FLOODFILL 4096
+#define RC_GDI20_OUTPUT 16
+#define RC_PALETTE 256
+#define RC_SCALING 4
+#define RC_STRETCHBLT 2048
+#define RC_STRETCHDIB 8192
+#define RC_DEVBITS 0x8000
+#define RC_OP_DX_OUTPUT 0x4000
+#define CURVECAPS 28
+#define CC_NONE 0
+#define CC_CIRCLES 1
+#define CC_PIE 2
+#define CC_CHORD 4
+#define CC_ELLIPSES 8
+#define CC_WIDE 16
+#define CC_STYLED 32
+#define CC_WIDESTYLED 64
+#define CC_INTERIORS 128
+#define CC_ROUNDRECT 256
+#define LINECAPS 30
+#define LC_NONE 0
+#define LC_POLYLINE 2
+#define LC_MARKER 4
+#define LC_POLYMARKER 8
+#define LC_WIDE 16
+#define LC_STYLED 32
+#define LC_WIDESTYLED 64
+#define LC_INTERIORS 128
+#define POLYGONALCAPS 32
+#define RC_BANDING 2
+#define RC_BIGFONT 1024
+#define RC_BITBLT 1
+#define RC_BITMAP64 8
+#define RC_DEVBITS 0x8000
+#define RC_DI_BITMAP 128
+#define RC_GDI20_OUTPUT 16
+#define RC_GDI20_STATE 32
+#define RC_NONE 0
+#define RC_OP_DX_OUTPUT 0x4000
+#define RC_PALETTE 256
+#define RC_SAVEBITMAP 64
+#define RC_SCALING 4
+#define PC_NONE 0
+#define PC_POLYGON 1
+#define PC_POLYPOLYGON 256
+#define PC_PATHS 512
+#define PC_RECTANGLE 2
+#define PC_WINDPOLYGON 4
+#define PC_SCANLINE 8
+#define PC_TRAPEZOID 4
+#define PC_WIDE 16
+#define PC_STYLED 32
+#define PC_WIDESTYLED 64
+#define PC_INTERIORS 128
+#define PC_PATHS 512
+#define TEXTCAPS 34
+#define TC_OP_CHARACTER 1
+#define TC_OP_STROKE 2
+#define TC_CP_STROKE 4
+#define TC_CR_90 8
+#define TC_CR_ANY 16
+#define TC_SF_X_YINDEP 32
+#define TC_SA_DOUBLE 64
+#define TC_SA_INTEGER 128
+#define TC_SA_CONTIN 256
+#define TC_EA_DOUBLE 512
+#define TC_IA_ABLE 1024
+#define TC_UA_ABLE 2048
+#define TC_SO_ABLE 4096
+#define TC_RA_ABLE 8192
+#define TC_VA_ABLE 16384
+#define TC_RESERVED 32768
+#define TC_SCROLLBLT 65536
+#define GCP_DBCS 1
+#define GCP_ERROR 0x8000
+#define GCP_CLASSIN 0x80000
+#define GCP_DIACRITIC 256
+#define GCP_DISPLAYZWG 0x400000
+#define GCP_GLYPHSHAPE 16
+#define GCP_JUSTIFY 0x10000
+#define GCP_JUSTIFYIN 0x200000
+#define GCP_KASHIDA 1024
+#define GCP_LIGATE 32
+#define GCP_MAXEXTENT 0x100000
+#define GCP_NEUTRALOVERRIDE 0x2000000
+#define GCP_NUMERICOVERRIDE 0x1000000
+#define GCP_NUMERICSLATIN 0x4000000
+#define GCP_NUMERICSLOCAL 0x8000000
+#define GCP_REORDER 2
+#define GCP_SYMSWAPOFF 0x800000
+#define GCP_USEKERNING 8
+#define FLI_GLYPHS 0x40000
+#define FLI_MASK 0x103b
+#define GGO_METRICS 0
+#define GGO_BITMAP 1
+#define GGO_NATIVE 2
+#define GGO_BEZIER 3
+#define GGO_GRAY2_BITMAP 4
+#define GGO_GRAY4_BITMAP 5
+#define GGO_GRAY8_BITMAP 6
+#define GGO_GLYPH_INDEX 128
+#define GGO_UNHINTED 256
+#define GM_COMPATIBLE 1
+#define GM_ADVANCED 2
+#define MM_ANISOTROPIC 8
+#define MM_HIENGLISH 5
+#define MM_HIMETRIC 3
+#define MM_ISOTROPIC 7
+#define MM_LOENGLISH 4
+#define MM_LOMETRIC 2
+#define MM_TEXT 1
+#define MM_TWIPS 6
+#define MM_MAX_FIXEDSCALE	MM_TWIPS
+#define ABSOLUTE	1
+#define RELATIVE	2
+#define PC_EXPLICIT 2
+#define PC_NOCOLLAPSE 4
+#define PC_RESERVED 1
+#define CLR_NONE 0xffffffff
+#define CLR_INVALID CLR_NONE
+#define CLR_DEFAULT 0xff000000
+#define PT_MOVETO 6
+#define PT_LINETO 2
+#define PT_BEZIERTO 4
+#define PT_CLOSEFIGURE 1
+#define TT_AVAILABLE 1
+#define TT_ENABLED 2
+#define BLACK_BRUSH 4
+#define DKGRAY_BRUSH 3
+#define GRAY_BRUSH 2
+#define HOLLOW_BRUSH 5
+#define LTGRAY_BRUSH 1
+#define NULL_BRUSH 5
+#define WHITE_BRUSH 0
+#define BLACK_PEN 7
+#define NULL_PEN 8
+#define WHITE_PEN 6
+#define ANSI_FIXED_FONT 11
+#define ANSI_VAR_FONT 12
+#define DEVICE_DEFAULT_FONT 14
+#define DEFAULT_GUI_FONT 17
+#define OEM_FIXED_FONT 10
+#define SYSTEM_FONT 13
+#define SYSTEM_FIXED_FONT 16
+#define DEFAULT_PALETTE 15
+#define SYSPAL_NOSTATIC 2
+#define SYSPAL_STATIC 1
+#define SYSPAL_ERROR 0
+#define TA_BASELINE 24
+#define TA_BOTTOM 8
+#define TA_TOP 0
+#define TA_CENTER 6
+#define TA_LEFT 0
+#define TA_RIGHT 2
+#define TA_RTLREADING 256
+#define TA_NOUPDATECP 0
+#define TA_UPDATECP 1
+#define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING)
+#define VTA_BASELINE 24
+#define VTA_CENTER 6
+#define VTA_LEFT TA_BOTTOM
+#define VTA_RIGHT TA_TOP
+#define VTA_BOTTOM TA_RIGHT
+#define VTA_TOP TA_LEFT
+#define MWT_IDENTITY 1
+#define MWT_LEFTMULTIPLY 2
+#define MWT_RIGHTMULTIPLY 3
+#define OPAQUE 2
+#define TRANSPARENT 1
+#define BLACKONWHITE 1
+#define WHITEONBLACK 2
+#define COLORONCOLOR 3
+#define HALFTONE 4
+#define MAXSTRETCHBLTMODE 4
+#define STRETCH_ANDSCANS 1
+#define STRETCH_DELETESCANS 3
+#define STRETCH_HALFTONE 4
+#define STRETCH_ORSCANS 2
+#define TCI_SRCCHARSET 1
+#define TCI_SRCCODEPAGE 2
+#define TCI_SRCFONTSIG 3
+#define ICM_ON 2
+#define ICM_OFF 1
+#define ICM_QUERY 3
+#define NEWFRAME	1
+#define ABORTDOC	2
+#define NEXTBAND	3
+#define SETCOLORTABLE	4
+#define GETCOLORTABLE	5
+#define FLUSHOUTPUT	6
+#define DRAFTMODE	7
+#define QUERYESCSUPPORT	8
+#define SETABORTPROC	9
+#define STARTDOC	10
+#define ENDDOC	11
+#define GETPHYSPAGESIZE	12
+#define GETPRINTINGOFFSET	13
+#define GETSCALINGFACTOR	14
+#define MFCOMMENT	15
+#define GETPENWIDTH	16
+#define SETCOPYCOUNT	17
+#define SELECTPAPERSOURCE	18
+#define DEVICEDATA	19
+#define PASSTHROUGH	19
+#define GETTECHNOLGY	20
+#define GETTECHNOLOGY	20
+#define SETLINECAP	21
+#define SETLINEJOIN	22
+#define SETMITERLIMIT	23
+#define BANDINFO	24
+#define DRAWPATTERNRECT	25
+#define GETVECTORPENSIZE	26
+#define GETVECTORBRUSHSIZE	27
+#define ENABLEDUPLEX	28
+#define GETSETPAPERBINS	29
+#define GETSETPRINTORIENT	30
+#define ENUMPAPERBINS	31
+#define SETDIBSCALING	32
+#define EPSPRINTING	33
+#define ENUMPAPERMETRICS	34
+#define GETSETPAPERMETRICS	35
+#define POSTSCRIPT_DATA	37
+#define POSTSCRIPT_IGNORE	38
+#define MOUSETRAILS	39
+#define GETDEVICEUNITS	42
+#define GETEXTENDEDTEXTMETRICS	256
+#define GETEXTENTTABLE	257
+#define GETPAIRKERNTABLE	258
+#define GETTRACKKERNTABLE	259
+#define EXTTEXTOUT	512
+#define GETFACENAME	513
+#define DOWNLOADFACE	514
+#define ENABLERELATIVEWIDTHS	768
+#define ENABLEPAIRKERNING	769
+#define SETKERNTRACK	770
+#define SETALLJUSTVALUES	771
+#define SETCHARSET	772
+#define STRETCHBLT	2048
+#define GETSETSCREENPARAMS	3072
+#define QUERYDIBSUPPORT	3073
+#define BEGIN_PATH	4096
+#define CLIP_TO_PATH	4097
+#define END_PATH	4098
+#define EXT_DEVICE_CAPS	4099
+#define RESTORE_CTM	4100
+#define SAVE_CTM	4101
+#define SET_ARC_DIRECTION	4102
+#define SET_BACKGROUND_COLOR	4103
+#define SET_POLY_MODE	4104
+#define SET_SCREEN_ANGLE	4105
+#define SET_SPREAD	4106
+#define TRANSFORM_CTM	4107
+#define SET_CLIP_BOX	4108
+#define SET_BOUNDS	4109
+#define SET_MIRROR_MODE	4110
+#define OPENCHANNEL	4110
+#define DOWNLOADHEADER	4111
+#define CLOSECHANNEL	4112
+#define POSTSCRIPT_PASSTHROUGH	4115
+#define ENCAPSULATED_POSTSCRIPT	4116
+#define QDI_SETDIBITS	1
+#define QDI_GETDIBITS	2
+#define QDI_DIBTOSCREEN	4
+#define QDI_STRETCHDIB	8
+#define SP_NOTREPORTED	0x4000
+#define PR_JOBSTATUS	0
+#define ASPECT_FILTERING	1
+#define BS_SOLID	0
+#define BS_NULL	1
+#define BS_HOLLOW	1
+#define BS_HATCHED	2
+#define BS_PATTERN	3
+#define BS_INDEXED	4
+#define BS_DIBPATTERN	5
+#define BS_DIBPATTERNPT	6
+#define BS_PATTERN8X8	7
+#define BS_DIBPATTERN8X8	8
+#define LCS_CALIBRATED_RGB	0
+#define LCS_DEVICE_RGB	1
+#define LCS_DEVICE_CMYK	2
+#define LCS_GM_BUSINESS	1
+#define LCS_GM_GRAPHICS	2
+#define LCS_GM_IMAGES	4
+#define RASTER_FONTTYPE	1
+#define DEVICE_FONTTYPE	2
+#define TRUETYPE_FONTTYPE	4
+#define DMORIENT_PORTRAIT   1
+#define DMORIENT_LANDSCAPE  2
+#define DMPAPER_FIRST	1
+#define DMPAPER_LETTER	1
+#define DMPAPER_LETTERSMALL	2
+#define DMPAPER_TABLOID	3
+#define DMPAPER_LEDGER	4
+#define DMPAPER_LEGAL	5
+#define DMPAPER_STATEMENT	6
+#define DMPAPER_EXECUTIVE	7
+#define DMPAPER_A3	8
+#define DMPAPER_A4	9
+#define DMPAPER_A4SMALL	10
+#define DMPAPER_A5	11
+#define DMPAPER_B4	12
+#define DMPAPER_B5	13
+#define DMPAPER_FOLIO	14
+#define DMPAPER_QUARTO	15
+#define DMPAPER_10X14	16
+#define DMPAPER_11X17	17
+#define DMPAPER_NOTE	18
+#define DMPAPER_ENV_9	19
+#define DMPAPER_ENV_10	20
+#define DMPAPER_ENV_11	21
+#define DMPAPER_ENV_12	22
+#define DMPAPER_ENV_14	23
+#define DMPAPER_CSHEET	24
+#define DMPAPER_DSHEET	25
+#define DMPAPER_ESHEET	26
+#define DMPAPER_ENV_DL	27
+#define DMPAPER_ENV_C5	28
+#define DMPAPER_ENV_C3	29
+#define DMPAPER_ENV_C4	30
+#define DMPAPER_ENV_C6	31
+#define DMPAPER_ENV_C65	32
+#define DMPAPER_ENV_B4	33
+#define DMPAPER_ENV_B5	34
+#define DMPAPER_ENV_B6	35
+#define DMPAPER_ENV_ITALY	36
+#define DMPAPER_ENV_MONARCH	37
+#define DMPAPER_ENV_PERSONAL	38
+#define DMPAPER_FANFOLD_US	39
+#define DMPAPER_FANFOLD_STD_GERMAN	40
+#define DMPAPER_FANFOLD_LGL_GERMAN	41
+#define DMPAPER_ISO_B4	42
+#define DMPAPER_JAPANESE_POSTCARD	43
+#define DMPAPER_9X11	44
+#define DMPAPER_10X11	45
+#define DMPAPER_15X11	46
+#define DMPAPER_ENV_INVITE	47
+#define DMPAPER_RESERVED_48	48
+#define DMPAPER_RESERVED_49	49
+#define DMPAPER_LETTER_EXTRA	50
+#define DMPAPER_LEGAL_EXTRA	51
+#define DMPAPER_TABLOID_EXTRA	52
+#define DMPAPER_A4_EXTRA	53
+#define DMPAPER_LETTER_TRANSVERSE	54
+#define DMPAPER_A4_TRANSVERSE	55
+#define DMPAPER_LETTER_EXTRA_TRANSVERSE	56
+#define DMPAPER_A_PLUS	57
+#define DMPAPER_B_PLUS	58
+#define DMPAPER_LETTER_PLUS	59
+#define DMPAPER_A4_PLUS	60
+#define DMPAPER_A5_TRANSVERSE	61
+#define DMPAPER_B5_TRANSVERSE	62
+#define DMPAPER_A3_EXTRA	63
+#define DMPAPER_A5_EXTRA	64
+#define DMPAPER_B5_EXTRA	65
+#define DMPAPER_A2	66
+#define DMPAPER_A3_TRANSVERSE	67
+#define DMPAPER_A3_EXTRA_TRANSVERSE	68
+#define DMPAPER_LAST	68
+#define DMPAPER_USER	256
+#define DMBIN_FIRST	1
+#define DMBIN_UPPER	1
+#define DMBIN_ONLYONE	1
+#define DMBIN_LOWER	2
+#define DMBIN_MIDDLE	3
+#define DMBIN_MANUAL	4
+#define DMBIN_ENVELOPE	5
+#define DMBIN_ENVMANUAL	6
+#define DMBIN_AUTO	7
+#define DMBIN_TRACTOR	8
+#define DMBIN_SMALLFMT	9
+#define DMBIN_LARGEFMT	10
+#define DMBIN_LARGECAPACITY	11
+#define DMBIN_CASSETTE	14
+#define DMBIN_FORMSOURCE	15
+#define DMBIN_LAST	15
+#define DMBIN_USER	256
+#define DMRES_DRAFT	(-1)
+#define DMRES_LOW	(-2)
+#define DMRES_MEDIUM	(-3)
+#define DMRES_HIGH	(-4)
+#define DMCOLOR_MONOCHROME	1
+#define DMCOLOR_COLOR	2
+#define DMDUP_SIMPLEX	1
+#define DMDUP_VERTICAL	2
+#define DMDUP_HORIZONTAL	3
+#define DMTT_BITMAP	1
+#define DMTT_DOWNLOAD	2
+#define DMTT_SUBDEV	3
+#define DMTT_DOWNLOAD_OUTLINE	4
+#define DMCOLLATE_FALSE	0
+#define DMCOLLATE_TRUE	1
+#define DM_GRAYSCALE	1
+#define DM_INTERLACED	2
+#define DM_UPDATE	1
+#define DM_COPY	2
+#define DM_PROMPT	4
+#define DM_MODIFY	8
+#define DM_IN_BUFFER	DM_MODIFY
+#define DM_IN_PROMPT	DM_PROMPT
+#define DM_OUT_BUFFER	DM_COPY
+#define DM_OUT_DEFAULT	DM_UPDATE
+#define DM_ORIENTATION 1
+#define DM_PAPERSIZE 2
+#define DM_PAPERLENGTH 4
+#define DM_PAPERWIDTH 8
+#define DM_SCALE 16
+#define DM_COPIES 256
+#define DM_DEFAULTSOURCE 512
+#define DM_PRINTQUALITY 1024
+#define DM_COLOR 2048
+#define DM_DUPLEX 4096
+#define DM_YRESOLUTION 8192
+#define DM_TTOPTION 16384
+#define DM_COLLATE 32768
+#define DM_FORMNAME 65536
+#define DM_LOGPIXELS 0x20000
+#define DM_BITSPERPEL 0x40000
+#define DM_PELSWIDTH 0x80000
+#define DM_PELSHEIGHT 0x100000
+#define DM_DISPLAYFLAGS 0x200000
+#define DM_DISPLAYFREQUENCY 0x400000
+#define DM_ICMMETHOD 0x800000
+#define DM_ICMINTENT 0x1000000
+#define DM_MEDIATYPE 0x2000000
+#define DM_DITHERTYPE 0x4000000
+#define DMICMMETHOD_NONE	1
+#define DMICMMETHOD_SYSTEM	2
+#define DMICMMETHOD_DRIVER	3
+#define DMICMMETHOD_DEVICE	4
+#define DMICMMETHOD_USER	256
+#define DMICM_SATURATE	1
+#define DMICM_CONTRAST	2
+#define DMICM_COLORMETRIC	3
+#define DMICM_USER	256
+#define DMMEDIA_STANDARD	1
+#define DMMEDIA_TRANSPARENCY	2
+#define DMMEDIA_GLOSSY	3
+#define DMMEDIA_USER	256
+#define DMDITHER_NONE	1
+#define DMDITHER_COARSE	2
+#define DMDITHER_FINE	3
+#define DMDITHER_LINEART	4
+#define DMDITHER_ERRORDIFFUSION	5
+#define DMDITHER_RESERVED6	6
+#define DMDITHER_RESERVED7	7
+#define DMDITHER_RESERVED8	8
+#define DMDITHER_RESERVED9	9
+#define DMDITHER_GRAYSCALE	10
+#define DMDITHER_USER	256
+#define GDI_ERROR 0xFFFFFFFF
+#define HGDI_ERROR ((HANDLE)GDI_ERROR)
+#define TMPF_FIXED_PITCH 1
+#define TMPF_VECTOR 2
+#define TMPF_TRUETYPE 4
+#define TMPF_DEVICE 8
+#define NTM_ITALIC 1
+#define NTM_BOLD 32
+#define NTM_REGULAR 64
+#define TT_POLYGON_TYPE 24
+#define TT_PRIM_LINE 1
+#define TT_PRIM_QSPLINE 2
+#define FONTMAPPER_MAX 10
+#define ENHMETA_STOCK_OBJECT 0x80000000
+#define WGL_FONT_LINES 0
+#define WGL_FONT_POLYGONS 1
+#define LPD_DOUBLEBUFFER 1
+#define LPD_STEREO 2
+#define LPD_SUPPORT_GDI 16
+#define LPD_SUPPORT_OPENGL 32
+#define LPD_SHARE_DEPTH 64
+#define LPD_SHARE_STENCIL 128
+#define LPD_SHARE_ACCUM 256
+#define LPD_SWAP_EXCHANGE 512
+#define LPD_SWAP_COPY 1024
+#define LPD_TRANSPARENT 4096
+#define LPD_TYPE_RGBA 0
+#define LPD_TYPE_COLORINDEX 1
+#define WGL_SWAP_MAIN_PLANE 1
+#define WGL_SWAP_OVERLAY1 2
+#define WGL_SWAP_OVERLAY2 4
+#define WGL_SWAP_OVERLAY3 8
+#define WGL_SWAP_OVERLAY4 16
+#define WGL_SWAP_OVERLAY5 32
+#define WGL_SWAP_OVERLAY6 64
+#define WGL_SWAP_OVERLAY7 128
+#define WGL_SWAP_OVERLAY8 256
+#define WGL_SWAP_OVERLAY9 512
+#define WGL_SWAP_OVERLAY10 1024
+#define WGL_SWAP_OVERLAY11 2048
+#define WGL_SWAP_OVERLAY12 4096
+#define WGL_SWAP_OVERLAY13 8192
+#define WGL_SWAP_OVERLAY14 16384
+#define WGL_SWAP_OVERLAY15 32768
+#define WGL_SWAP_UNDERLAY1 65536
+#define WGL_SWAP_UNDERLAY2 0x20000
+#define WGL_SWAP_UNDERLAY3 0x40000
+#define WGL_SWAP_UNDERLAY4 0x80000
+#define WGL_SWAP_UNDERLAY5 0x100000
+#define WGL_SWAP_UNDERLAY6 0x200000
+#define WGL_SWAP_UNDERLAY7 0x400000
+#define WGL_SWAP_UNDERLAY8 0x800000
+#define WGL_SWAP_UNDERLAY9 0x1000000
+#define WGL_SWAP_UNDERLAY10 0x2000000
+#define WGL_SWAP_UNDERLAY11 0x4000000
+#define WGL_SWAP_UNDERLAY12 0x8000000
+#define WGL_SWAP_UNDERLAY13 0x10000000
+#define WGL_SWAP_UNDERLAY14 0x20000000
+#define WGL_SWAP_UNDERLAY15 0x40000000
+#define AC_SRC_OVER 0
+#define LAYOUT_RTL 1
+#define LAYOUT_BITMAPORIENTATIONPRESERVED 8
+
+#ifndef RC_INVOKED
+typedef struct _ABC {
+	int abcA;
+	UINT abcB;
+	int abcC;
+} ABC,*LPABC;
+typedef struct _ABCFLOAT {
+	FLOAT abcfA;
+	FLOAT abcfB;
+	FLOAT abcfC;
+} ABCFLOAT,*LPABCFLOAT;
+typedef struct tagBITMAP {
+	LONG	bmType;
+	LONG	bmWidth;
+	LONG	bmHeight;
+	LONG	bmWidthBytes;
+	WORD	bmPlanes;
+	WORD	bmBitsPixel;
+	LPVOID	bmBits;
+} BITMAP,*PBITMAP,*LPBITMAP;
+typedef struct tagBITMAPCOREHEADER {
+	DWORD	bcSize;
+	WORD	bcWidth;
+	WORD	bcHeight;
+	WORD	bcPlanes;
+	WORD	bcBitCount;
+} BITMAPCOREHEADER,*LPBITMAPCOREHEADER,*PBITMAPCOREHEADER;
+#pragma pack(push,1)
+typedef struct tagRGBTRIPLE {
+	BYTE rgbtBlue;
+	BYTE rgbtGreen;
+	BYTE rgbtRed;
+} RGBTRIPLE;
+#pragma pack(pop)
+#pragma pack(push,2)
+typedef struct tagBITMAPFILEHEADER {
+	WORD	bfType;
+	DWORD	bfSize;
+	WORD	bfReserved1;
+	WORD	bfReserved2;
+	DWORD	bfOffBits;
+} BITMAPFILEHEADER,*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;
+#pragma pack(pop)
+typedef struct _BITMAPCOREINFO {
+	BITMAPCOREHEADER	bmciHeader;
+	RGBTRIPLE	bmciColors[1];
+} BITMAPCOREINFO,*LPBITMAPCOREINFO,*PBITMAPCOREINFO;
+typedef struct tagBITMAPINFOHEADER{
+	DWORD	biSize;
+	LONG	biWidth;
+	LONG	biHeight;
+	WORD	biPlanes;
+	WORD	biBitCount;
+	DWORD	biCompression;
+	DWORD	biSizeImage;
+	LONG	biXPelsPerMeter;
+	LONG	biYPelsPerMeter;
+	DWORD	biClrUsed;
+	DWORD	biClrImportant;
+} BITMAPINFOHEADER,*LPBITMAPINFOHEADER,*PBITMAPINFOHEADER;
+typedef struct tagRGBQUAD {
+	BYTE	rgbBlue;
+	BYTE	rgbGreen;
+	BYTE	rgbRed;
+	BYTE	rgbReserved;
+} RGBQUAD;
+typedef struct tagBITMAPINFO {
+	BITMAPINFOHEADER bmiHeader;
+	RGBQUAD bmiColors[1];
+} BITMAPINFO,*LPBITMAPINFO,*PBITMAPINFO;
+typedef long FXPT16DOT16,*LPFXPT16DOT16;
+typedef long FXPT2DOT30,*LPFXPT2DOT30;
+typedef struct tagCIEXYZ {
+	FXPT2DOT30 ciexyzX;
+	FXPT2DOT30 ciexyzY;
+	FXPT2DOT30 ciexyzZ;
+} CIEXYZ,*LPCIEXYZ;
+typedef struct tagCIEXYZTRIPLE {
+	CIEXYZ ciexyzRed;
+	CIEXYZ ciexyzGreen;
+	CIEXYZ ciexyzBlue;
+} CIEXYZTRIPLE,*LPCIEXYZTRIPLE;
+typedef struct {
+	DWORD	bV4Size;
+	LONG	bV4Width;
+	LONG	bV4Height;
+	WORD	bV4Planes;
+	WORD	bV4BitCount;
+	DWORD	bV4V4Compression;
+	DWORD	bV4SizeImage;
+	LONG	bV4XPelsPerMeter;
+	LONG	bV4YPelsPerMeter;
+	DWORD	bV4ClrUsed;
+	DWORD	bV4ClrImportant;
+	DWORD	bV4RedMask;
+	DWORD	bV4GreenMask;
+	DWORD	bV4BlueMask;
+	DWORD	bV4AlphaMask;
+	DWORD	bV4CSType;
+	CIEXYZTRIPLE bV4Endpoints;
+	DWORD	bV4GammaRed;
+	DWORD	bV4GammaGreen;
+	DWORD	bV4GammaBlue;
+} BITMAPV4HEADER,*LPBITMAPV4HEADER,*PBITMAPV4HEADER;
+typedef struct tagFONTSIGNATURE {
+	DWORD	fsUsb[4];
+	DWORD	fsCsb[2];
+} FONTSIGNATURE,*LPFONTSIGNATURE;
+typedef struct {
+	UINT ciCharset;
+	UINT ciACP;
+	FONTSIGNATURE fs;
+} CHARSETINFO,*LPCHARSETINFO;
+typedef struct  tagCOLORADJUSTMENT {
+	WORD	caSize;
+	WORD	caFlags;
+	WORD	caIlluminantIndex;
+	WORD	caRedGamma;
+	WORD	caGreenGamma;
+	WORD	caBlueGamma;
+	WORD	caReferenceBlack;
+	WORD	caReferenceWhite;
+	SHORT	caContrast;
+	SHORT	caBrightness;
+	SHORT	caColorfulness;
+	SHORT	caRedGreenTint;
+} COLORADJUSTMENT,*LPCOLORADJUSTMENT;
+typedef struct _devicemodeA {
+	BYTE dmDeviceName[CCHDEVICENAME];
+	WORD dmSpecVersion;
+	WORD dmDriverVersion;
+	WORD dmSize;
+	WORD dmDriverExtra;
+	DWORD dmFields;
+	short dmOrientation;
+	short dmPaperSize;
+	short dmPaperLength;
+	short dmPaperWidth;
+	short dmScale;
+	short dmCopies;
+	short dmDefaultSource;
+	short dmPrintQuality;
+	short dmColor;
+	short dmDuplex;
+	short dmYResolution;
+	short dmTTOption;
+	short dmCollate;
+	BYTE dmFormName[CCHFORMNAME];
+	WORD dmLogPixels;
+	DWORD dmBitsPerPel;
+	DWORD dmPelsWidth;
+	DWORD dmPelsHeight;
+	DWORD dmDisplayFlags;
+	DWORD dmDisplayFrequency;
+	DWORD dmICMMethod;
+	DWORD dmICMIntent;
+	DWORD dmMediaType;
+	DWORD dmDitherType;
+	DWORD dmICCManufacturer;
+	DWORD dmICCModel;
+} DEVMODEA,*LPDEVMODEA,*PDEVMODEA;
+typedef struct _devicemodeW {
+	WCHAR dmDeviceName[CCHDEVICENAME];
+	WORD dmSpecVersion;
+	WORD dmDriverVersion;
+	WORD dmSize;
+	WORD dmDriverExtra;
+	DWORD dmFields;
+	short dmOrientation;
+	short dmPaperSize;
+	short dmPaperLength;
+	short dmPaperWidth;
+	short dmScale;
+	short dmCopies;
+	short dmDefaultSource;
+	short dmPrintQuality;
+	short dmColor;
+	short dmDuplex;
+	short dmYResolution;
+	short dmTTOption;
+	short dmCollate;
+	WCHAR dmFormName[CCHFORMNAME];
+	WORD dmLogPixels;
+	DWORD dmBitsPerPel;
+	DWORD dmPelsWidth;
+	DWORD dmPelsHeight;
+	DWORD dmDisplayFlags;
+	DWORD dmDisplayFrequency;
+	DWORD dmICMMethod;
+	DWORD dmICMIntent;
+	DWORD dmMediaType;
+	DWORD dmDitherType;
+	DWORD dmICCManufacturer;
+	DWORD dmICCModel;
+} DEVMODEW,*LPDEVMODEW,*PDEVMODEW;
+typedef struct tagDIBSECTION {
+	BITMAP dsBm;
+	BITMAPINFOHEADER dsBmih;
+	DWORD dsBitfields[3];
+	HANDLE dshSection;
+	DWORD dsOffset;
+} DIBSECTION;
+typedef struct _DOCINFOA {
+	int cbSize;
+	LPCTSTR lpszDocName;
+	LPCTSTR lpszOutput;
+	LPCTSTR lpszDatatype;
+	DWORD fwType;
+} DOCINFOA,*LPDOCINFOA;
+typedef struct _DOCINFOW {
+	int cbSize;
+	LPCWSTR lpszDocName;
+	LPCWSTR lpszOutput;
+	LPCWSTR lpszDatatype;
+	DWORD fwType;
+} DOCINFOW,*LPDOCINFOW;
+typedef struct tagEMR {
+	DWORD iType;
+	DWORD nSize;
+} EMR,*PEMR;
+typedef struct tagEMRANGLEARC {
+	EMR emr;
+	POINTL ptlCenter;
+	DWORD nRadius;
+	FLOAT eStartAngle;
+	FLOAT eSweepAngle;
+} EMRANGLEARC,*PEMRANGLEARC;
+typedef struct tagEMRARC {
+	EMR emr;
+	RECTL rclBox;
+	POINTL ptlStart;
+	POINTL ptlEnd;
+} EMRARC,*PEMRARC,EMRARCTO,*PEMRARCTO,EMRCHORD,*PEMRCHORD,EMRPIE,*PEMRPIE;
+typedef struct  _XFORM {
+	FLOAT eM11;
+	FLOAT eM12;
+	FLOAT eM21;
+	FLOAT eM22;
+	FLOAT eDx;
+	FLOAT eDy;
+} XFORM,*LPXFORM;
+typedef struct tagEMRBITBLT {
+	EMR emr;
+	RECTL rclBounds;
+	LONG xDest;
+	LONG yDest;
+	LONG cxDest;
+	LONG cyDest;
+	DWORD dwRop;
+	LONG xSrc;
+	LONG ySrc;
+	XFORM xformSrc;
+	COLORREF crBkColorSrc;
+	DWORD iUsageSrc;
+	DWORD offBmiSrc;
+	DWORD offBitsSrc;
+	DWORD cbBitsSrc;
+} EMRBITBLT,*PEMRBITBLT;
+typedef struct tagLOGBRUSH {
+	UINT lbStyle;
+	COLORREF lbColor;
+	LONG lbHatch;
+} LOGBRUSH,*LPLOGBRUSH;
+typedef LOGBRUSH PATTERN,*PPATTERN,*LPPATTERN;
+typedef struct tagEMRCREATEBRUSHINDIRECT {
+	EMR emr;
+	DWORD ihBrush;
+	LOGBRUSH lb;
+} EMRCREATEBRUSHINDIRECT,*PEMRCREATEBRUSHINDIRECT;
+typedef LONG LCSCSTYPE;
+typedef LONG LCSGAMUTMATCH;
+typedef struct tagLOGCOLORSPACEA {
+	DWORD lcsSignature;
+	DWORD lcsVersion;
+	DWORD lcsSize;
+	LCSCSTYPE lcsCSType;
+	LCSGAMUTMATCH lcsIntent;
+	CIEXYZTRIPLE lcsEndpoints;
+	DWORD lcsGammaRed;
+	DWORD lcsGammaGreen;
+	DWORD lcsGammaBlue;
+	CHAR lcsFilename[MAX_PATH];
+} LOGCOLORSPACEA,*LPLOGCOLORSPACEA;
+typedef struct tagLOGCOLORSPACEW {
+	DWORD lcsSignature;
+	DWORD lcsVersion;
+	DWORD lcsSize;
+	LCSCSTYPE lcsCSType;
+	LCSGAMUTMATCH lcsIntent;
+	CIEXYZTRIPLE lcsEndpoints;
+	DWORD lcsGammaRed;
+	DWORD lcsGammaGreen;
+	DWORD lcsGammaBlue;
+	WCHAR lcsFilename[MAX_PATH];
+} LOGCOLORSPACEW,*LPLOGCOLORSPACEW;
+typedef struct tagEMRCREATECOLORSPACE {
+	EMR emr;
+	DWORD ihCS;
+	LOGCOLORSPACEW lcs;
+} EMRCREATECOLORSPACE,*PEMRCREATECOLORSPACE;
+typedef struct tagEMRCREATEDIBPATTERNBRUSHPT {
+	EMR emr;
+	DWORD ihBrush;
+	DWORD iUsage;
+	DWORD offBmi;
+	DWORD cbBmi;
+	DWORD offBits;
+	DWORD cbBits;
+} EMRCREATEDIBPATTERNBRUSHPT,*PEMRCREATEDIBPATTERNBRUSHPT;
+typedef struct tagEMRCREATEMONOBRUSH {
+	EMR emr;
+	DWORD ihBrush;
+	DWORD iUsage;
+	DWORD offBmi;
+	DWORD cbBmi;
+	DWORD offBits;
+	DWORD cbBits;
+} EMRCREATEMONOBRUSH,*PEMRCREATEMONOBRUSH;
+typedef struct tagPALETTEENTRY {
+	BYTE peRed;
+	BYTE peGreen;
+	BYTE peBlue;
+	BYTE peFlags;
+} PALETTEENTRY,*LPPALETTEENTRY,*PPALETTEENTRY;
+typedef struct tagLOGPALETTE {
+	WORD palVersion;
+	WORD palNumEntries;
+	PALETTEENTRY palPalEntry[1];
+} LOGPALETTE,*NPLOGPALETTE,*PLOGPALETTE,*LPLOGPALETTE;
+typedef struct tagEMRCREATEPALETTE {
+	EMR emr;
+	DWORD ihPal;
+	LOGPALETTE lgpl;
+} EMRCREATEPALETTE,*PEMRCREATEPALETTE;
+typedef struct tagLOGPEN {
+	UINT lopnStyle;
+	POINT lopnWidth;
+	COLORREF lopnColor;
+} LOGPEN,*LPLOGPEN;
+typedef struct tagEMRCREATEPEN {
+	EMR emr;
+	DWORD ihPen;
+	LOGPEN lopn;
+} EMRCREATEPEN,*PEMRCREATEPEN;
+typedef struct tagEMRELLIPSE {
+	EMR emr;
+	RECTL rclBox;
+} EMRELLIPSE,*PEMRELLIPSE,EMRRECTANGLE,*PEMRRECTANGLE;
+typedef struct tagEMREOF {
+	EMR emr;
+	DWORD nPalEntries;
+	DWORD offPalEntries;
+	DWORD nSizeLast;
+} EMREOF,*PEMREOF;
+typedef struct tagEMREXCLUDECLIPRECT {
+	EMR emr;
+	RECTL rclClip;
+} EMREXCLUDECLIPRECT,*PEMREXCLUDECLIPRECT,EMRINTERSECTCLIPRECT,*PEMRINTERSECTCLIPRECT;
+typedef struct tagPANOSE {
+	BYTE bFamilyType;
+	BYTE bSerifStyle;
+	BYTE bWeight;
+	BYTE bProportion;
+	BYTE bContrast;
+	BYTE bStrokeVariation;
+	BYTE bArmStyle;
+	BYTE bLetterform;
+	BYTE bMidline;
+	BYTE bXHeight;
+} PANOSE;
+typedef struct tagLOGFONTA {
+	LONG	lfHeight;
+	LONG	lfWidth;
+	LONG	lfEscapement;
+	LONG	lfOrientation;
+	LONG	lfWeight;
+	BYTE	lfItalic;
+	BYTE	lfUnderline;
+	BYTE	lfStrikeOut;
+	BYTE	lfCharSet;
+	BYTE	lfOutPrecision;
+	BYTE	lfClipPrecision;
+	BYTE	lfQuality;
+	BYTE	lfPitchAndFamily;
+	CHAR	lfFaceName[LF_FACESIZE];
+} LOGFONTA,*PLOGFONTA,*LPLOGFONTA;
+typedef struct tagLOGFONTW {
+	LONG	lfHeight;
+	LONG	lfWidth;
+	LONG	lfEscapement;
+	LONG	lfOrientation;
+	LONG	lfWeight;
+	BYTE	lfItalic;
+	BYTE	lfUnderline;
+	BYTE	lfStrikeOut;
+	BYTE	lfCharSet;
+	BYTE	lfOutPrecision;
+	BYTE	lfClipPrecision;
+	BYTE	lfQuality;
+	BYTE	lfPitchAndFamily;
+	WCHAR	lfFaceName[LF_FACESIZE];
+} LOGFONTW,*PLOGFONTW,*LPLOGFONTW;
+typedef struct tagEXTLOGFONTA {
+	LOGFONTA	elfLogFont;
+	BYTE	elfFullName[LF_FULLFACESIZE];
+	BYTE	elfStyle[LF_FACESIZE];
+	DWORD	elfVersion;
+	DWORD	elfStyleSize;
+	DWORD	elfMatch;
+	DWORD	elfReserved;
+	BYTE	elfVendorId[ELF_VENDOR_SIZE];
+	DWORD	elfCulture;
+	PANOSE	elfPanose;
+} EXTLOGFONTA,*PEXTLOGFONTA,*LPEXTLOGFONTA;
+typedef struct tagEXTLOGFONTW {
+	LOGFONTW	elfLogFont;
+	WCHAR	elfFullName[LF_FULLFACESIZE];
+	WCHAR	elfStyle[LF_FACESIZE];
+	DWORD	elfVersion;
+	DWORD	elfStyleSize;
+	DWORD	elfMatch;
+	DWORD	elfReserved;
+	BYTE	elfVendorId[ELF_VENDOR_SIZE];
+	DWORD	elfCulture;
+	PANOSE	elfPanose;
+} EXTLOGFONTW,*PEXTLOGFONTW,*LPEXTLOGFONTW;
+typedef struct tagEMREXTCREATEFONTINDIRECTW {
+	EMR emr;
+	DWORD ihFont;
+	EXTLOGFONTW elfw;
+} EMREXTCREATEFONTINDIRECTW,*PEMREXTCREATEFONTINDIRECTW;
+typedef struct tagEXTLOGPEN {
+	UINT elpPenStyle;
+	UINT elpWidth;
+	UINT elpBrushStyle;
+	COLORREF elpColor;
+	LONG elpHatch;
+	DWORD elpNumEntries;
+	DWORD elpStyleEntry[1];
+} EXTLOGPEN,*PEXTLOGPEN,*LPEXTLOGPEN;
+typedef struct tagEMREXTCREATEPEN {
+	EMR emr;
+	DWORD ihPen;
+	DWORD offBmi;
+	DWORD cbBmi;
+	DWORD offBits;
+	DWORD cbBits;
+	EXTLOGPEN elp;
+} EMREXTCREATEPEN,*PEMREXTCREATEPEN;
+typedef struct tagEMREXTFLOODFILL {
+	EMR emr;
+	POINTL ptlStart;
+	COLORREF crColor;
+	DWORD iMode;
+} EMREXTFLOODFILL,*PEMREXTFLOODFILL;
+typedef struct tagEMREXTSELECTCLIPRGN {
+	EMR emr;
+	DWORD cbRgnData;
+	DWORD iMode;
+	BYTE RgnData[1];
+} EMREXTSELECTCLIPRGN,*PEMREXTSELECTCLIPRGN;
+typedef struct tagEMRTEXT {
+	POINTL ptlReference;
+	DWORD nChars;
+	DWORD offString;
+	DWORD fOptions;
+	RECTL rcl;
+	DWORD offDx;
+} EMRTEXT,*PEMRTEXT;
+typedef struct tagEMREXTTEXTOUTA {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD iGraphicsMode;
+	FLOAT exScale;
+	FLOAT eyScale;
+	EMRTEXT emrtext;
+} EMREXTTEXTOUTA,*PEMREXTTEXTOUTA,EMREXTTEXTOUTW,*PEMREXTTEXTOUTW;
+typedef struct tagEMRFILLPATH {
+	EMR emr;
+	RECTL rclBounds;
+} EMRFILLPATH,*PEMRFILLPATH,EMRSTROKEANDFILLPATH,*PEMRSTROKEANDFILLPATH,EMRSTROKEPATH,*PEMRSTROKEPATH;
+typedef struct tagEMRFILLRGN {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD cbRgnData;
+	DWORD ihBrush;
+	BYTE RgnData[1];
+} EMRFILLRGN,*PEMRFILLRGN;
+typedef struct tagEMRFORMAT   {
+	DWORD dSignature;
+	DWORD nVersion;
+	DWORD cbData;
+	DWORD offData;
+} EMRFORMAT;
+typedef struct tagEMRFRAMERGN {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD cbRgnData;
+	DWORD ihBrush;
+	SIZEL szlStroke;
+	BYTE RgnData[1];
+} EMRFRAMERGN,*PEMRFRAMERGN;
+typedef struct tagEMRGDICOMMENT {
+	EMR emr;
+	DWORD cbData;
+	BYTE Data[1];
+} EMRGDICOMMENT,*PEMRGDICOMMENT;
+typedef struct tagEMRINVERTRGN {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD cbRgnData;
+	BYTE RgnData[1];
+} EMRINVERTRGN,*PEMRINVERTRGN,EMRPAINTRGN,*PEMRPAINTRGN;
+typedef struct tagEMRLINETO {
+	EMR emr;
+	POINTL ptl;
+} EMRLINETO,*PEMRLINETO,EMRMOVETOEX,*PEMRMOVETOEX;
+typedef struct tagEMRMASKBLT {
+	EMR emr;
+	RECTL rclBounds;
+	LONG xDest;
+	LONG yDest;
+	LONG cxDest;
+	LONG cyDest;
+	DWORD dwRop;
+	LONG xSrc;
+	LONG ySrc;
+	XFORM xformSrc;
+	COLORREF crBkColorSrc;
+	DWORD iUsageSrc;
+	DWORD offBmiSrc;
+	DWORD cbBmiSrc;
+	DWORD offBitsSrc;
+	DWORD cbBitsSrc;
+	LONG xMask;
+	LONG yMask;
+	DWORD iUsageMask;
+	DWORD offBmiMask;
+	DWORD cbBmiMask;
+	DWORD offBitsMask;
+	DWORD cbBitsMask;
+} EMRMASKBLT,*PEMRMASKBLT;
+typedef struct tagEMRMODIFYWORLDTRANSFORM {
+	EMR emr;
+	XFORM xform;
+	DWORD iMode;
+} EMRMODIFYWORLDTRANSFORM,*PEMRMODIFYWORLDTRANSFORM;
+typedef struct tagEMROFFSETCLIPRGN {
+	EMR emr;
+	POINTL ptlOffset;
+} EMROFFSETCLIPRGN,*PEMROFFSETCLIPRGN;
+typedef struct tagEMRPLGBLT {
+	EMR emr;
+	RECTL rclBounds;
+	POINTL aptlDest[3];
+	LONG xSrc;
+	LONG ySrc;
+	LONG cxSrc;
+	LONG cySrc;
+	XFORM xformSrc;
+	COLORREF crBkColorSrc;
+	DWORD iUsageSrc;
+	DWORD offBmiSrc;
+	DWORD cbBmiSrc;
+	DWORD offBitsSrc;
+	DWORD cbBitsSrc;
+	LONG xMask;
+	LONG yMask;
+	DWORD iUsageMask;
+	DWORD offBmiMask;
+	DWORD cbBmiMask;
+	DWORD offBitsMask;
+	DWORD cbBitsMask;
+} EMRPLGBLT,*PEMRPLGBLT;
+typedef struct tagEMRPOLYDRAW {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD cptl;
+	POINTL aptl[1];
+	BYTE abTypes[1];
+} EMRPOLYDRAW,*PEMRPOLYDRAW;
+typedef struct tagEMRPOLYDRAW16 {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD cpts;
+	POINTS apts[1];
+	BYTE abTypes[1];
+} EMRPOLYDRAW16,*PEMRPOLYDRAW16;
+typedef struct tagEMRPOLYLINE {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD cptl;
+	POINTL aptl[1];
+} EMRPOLYLINE,*PEMRPOLYLINE,EMRPOLYBEZIER,*PEMRPOLYBEZIER,EMRPOLYGON,*PEMRPOLYGON,EMRPOLYBEZIERTO,*PEMRPOLYBEZIERTO,EMRPOLYLINETO,*PEMRPOLYLINETO;
+typedef struct tagEMRPOLYLINE16 {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD cpts;
+	POINTL apts[1];
+} EMRPOLYLINE16,*PEMRPOLYLINE16,EMRPOLYBEZIER16,*PEMRPOLYBEZIER16,EMRPOLYGON16,*PEMRPOLYGON16,EMRPOLYBEZIERTO16,*PEMRPOLYBEZIERTO16,EMRPOLYLINETO16,*PEMRPOLYLINETO16;
+typedef struct tagEMRPOLYPOLYLINE {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD nPolys;
+	DWORD cptl;
+	DWORD aPolyCounts[1];
+	POINTL aptl[1];
+} EMRPOLYPOLYLINE,*PEMRPOLYPOLYLINE,EMRPOLYPOLYGON,*PEMRPOLYPOLYGON;
+typedef struct tagEMRPOLYPOLYLINE16 {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD nPolys;
+	DWORD cpts;
+	DWORD aPolyCounts[1];
+	POINTS apts[1];
+} EMRPOLYPOLYLINE16,*PEMRPOLYPOLYLINE16,EMRPOLYPOLYGON16,*PEMRPOLYPOLYGON16;
+typedef struct tagEMRPOLYTEXTOUTA {
+	EMR emr;
+	RECTL rclBounds;
+	DWORD iGraphicsMode;
+	FLOAT exScale;
+	FLOAT eyScale;
+	LONG cStrings;
+	EMRTEXT aemrtext[1];
+} EMRPOLYTEXTOUTA,*PEMRPOLYTEXTOUTA,EMRPOLYTEXTOUTW,*PEMRPOLYTEXTOUTW;
+typedef struct tagEMRRESIZEPALETTE {
+	EMR emr;
+	DWORD ihPal;
+	DWORD cEntries;
+} EMRRESIZEPALETTE,*PEMRRESIZEPALETTE;
+typedef struct tagEMRRESTOREDC {
+	EMR emr;
+	LONG iRelative;
+} EMRRESTOREDC,*PEMRRESTOREDC;
+typedef struct tagEMRROUNDRECT {
+	EMR emr;
+	RECTL rclBox;
+	SIZEL szlCorner;
+} EMRROUNDRECT,*PEMRROUNDRECT;
+typedef struct tagEMRSCALEVIEWPORTEXTEX {
+	EMR emr;
+	LONG xNum;
+	LONG xDenom;
+	LONG yNum;
+	LONG yDenom;
+} EMRSCALEVIEWPORTEXTEX,*PEMRSCALEVIEWPORTEXTEX,EMRSCALEWINDOWEXTEX,*PEMRSCALEWINDOWEXTEX;
+typedef struct tagEMRSELECTCOLORSPACE {
+	EMR emr;
+	DWORD ihCS;
+} EMRSELECTCOLORSPACE,*PEMRSELECTCOLORSPACE,EMRDELETECOLORSPACE,*PEMRDELETECOLORSPACE;
+typedef struct tagEMRSELECTOBJECT {
+	EMR emr;
+	DWORD ihObject;
+} EMRSELECTOBJECT,*PEMRSELECTOBJECT,EMRDELETEOBJECT,*PEMRDELETEOBJECT;
+typedef struct tagEMRSELECTPALETTE {
+	EMR emr;
+	DWORD ihPal;
+} EMRSELECTPALETTE,*PEMRSELECTPALETTE;
+typedef struct tagEMRSETARCDIRECTION {
+	EMR emr;
+	DWORD iArcDirection;
+} EMRSETARCDIRECTION,*PEMRSETARCDIRECTION;
+typedef struct tagEMRSETTEXTCOLOR {
+	EMR emr;
+	COLORREF crColor;
+} EMRSETBKCOLOR,*PEMRSETBKCOLOR,EMRSETTEXTCOLOR,*PEMRSETTEXTCOLOR;
+typedef struct tagEMRSETCOLORADJUSTMENT {
+	EMR emr;
+	COLORADJUSTMENT ColorAdjustment;
+} EMRSETCOLORADJUSTMENT,*PEMRSETCOLORADJUSTMENT;
+typedef struct tagEMRSETDIBITSTODEVICE {
+	EMR emr;
+	RECTL rclBounds;
+	LONG xDest;
+	LONG yDest;
+	LONG xSrc;
+	LONG ySrc;
+	LONG cxSrc;
+	LONG cySrc;
+	DWORD offBmiSrc;
+	DWORD cbBmiSrc;
+	DWORD offBitsSrc;
+	DWORD cbBitsSrc;
+	DWORD iUsageSrc;
+	DWORD iStartScan;
+	DWORD cScans;
+} EMRSETDIBITSTODEVICE,*PEMRSETDIBITSTODEVICE;
+typedef struct tagEMRSETMAPPERFLAGS {
+	EMR emr;
+	DWORD dwFlags;
+} EMRSETMAPPERFLAGS,*PEMRSETMAPPERFLAGS;
+typedef struct tagEMRSETMITERLIMIT {
+	EMR emr;
+	FLOAT eMiterLimit;
+} EMRSETMITERLIMIT,*PEMRSETMITERLIMIT;
+typedef struct tagEMRSETPALETTEENTRIES {
+	EMR emr;
+	DWORD ihPal;
+	DWORD iStart;
+	DWORD cEntries;
+	PALETTEENTRY aPalEntries[1];
+} EMRSETPALETTEENTRIES,*PEMRSETPALETTEENTRIES;
+typedef struct tagEMRSETPIXELV {
+	EMR emr;
+	POINTL ptlPixel;
+	COLORREF crColor;
+} EMRSETPIXELV,*PEMRSETPIXELV;
+typedef struct tagEMRSETVIEWPORTEXTEX {
+	EMR emr;
+	SIZEL szlExtent;
+} EMRSETVIEWPORTEXTEX,*PEMRSETVIEWPORTEXTEX,EMRSETWINDOWEXTEX,*PEMRSETWINDOWEXTEX;
+typedef struct tagEMRSETVIEWPORTORGEX {
+	EMR emr;
+	POINTL ptlOrigin;
+} EMRSETVIEWPORTORGEX,*PEMRSETVIEWPORTORGEX,EMRSETWINDOWORGEX,*PEMRSETWINDOWORGEX,EMRSETBRUSHORGEX,*PEMRSETBRUSHORGEX;
+typedef struct tagEMRSETWORLDTRANSFORM {
+	EMR emr;
+	XFORM xform;
+} EMRSETWORLDTRANSFORM,*PEMRSETWORLDTRANSFORM;
+typedef struct tagEMRSTRETCHBLT {
+	EMR emr;
+	RECTL rclBounds;
+	LONG xDest;
+	LONG yDest;
+	LONG cxDest;
+	LONG cyDest;
+	DWORD dwRop;
+	LONG xSrc;
+	LONG ySrc;
+	XFORM xformSrc;
+	COLORREF crBkColorSrc;
+	DWORD iUsageSrc;
+	DWORD offBmiSrc;
+	DWORD cbBmiSrc;
+	DWORD offBitsSrc;
+	DWORD cbBitsSrc;
+	LONG cxSrc;
+	LONG cySrc;
+} EMRSTRETCHBLT,*PEMRSTRETCHBLT;
+typedef struct tagEMRSTRETCHDIBITS {
+	EMR emr;
+	RECTL rclBounds;
+	LONG xDest;
+	LONG yDest;
+	LONG xSrc;
+	LONG ySrc;
+	LONG cxSrc;
+	LONG cySrc;
+	DWORD offBmiSrc;
+	DWORD cbBmiSrc;
+	DWORD offBitsSrc;
+	DWORD cbBitsSrc;
+	DWORD iUsageSrc;
+	DWORD dwRop;
+	LONG cxDest;
+	LONG cyDest;
+} EMRSTRETCHDIBITS,*PEMRSTRETCHDIBITS;
+typedef struct tagABORTPATH {
+	EMR emr;
+} EMRABORTPATH,*PEMRABORTPATH,EMRBEGINPATH,*PEMRBEGINPATH,EMRENDPATH,*PEMRENDPATH,EMRCLOSEFIGURE,*PEMRCLOSEFIGURE,EMRFLATTENPATH,*PEMRFLATTENPATH,EMRWIDENPATH,*PEMRWIDENPATH,EMRSETMETARGN,*PEMRSETMETARGN,EMRSAVEDC,*PEMRSAVEDC,EMRREALIZEPALETTE,*PEMRREALIZEPALETTE;
+typedef struct tagEMRSELECTCLIPPATH {
+	EMR emr;
+	DWORD iMode;
+} EMRSELECTCLIPPATH,*PEMRSELECTCLIPPATH,EMRSETBKMODE,*PEMRSETBKMODE,EMRSETMAPMODE,*PEMRSETMAPMODE,EMRSETPOLYFILLMODE,*PEMRSETPOLYFILLMODE,EMRSETROP2,*PEMRSETROP2,EMRSETSTRETCHBLTMODE,*PEMRSETSTRETCHBLTMODE,EMRSETTEXTALIGN,*PEMRSETTEXTALIGN,EMRENABLEICM,*PEMRENABLEICM;
+#pragma pack(push,2)
+typedef struct tagMETAHEADER {
+	WORD mtType;
+	WORD mtHeaderSize;
+	WORD mtVersion;
+	DWORD mtSize;
+	WORD mtNoObjects;
+	DWORD mtMaxRecord;
+	WORD mtNoParameters;
+} METAHEADER,*PMETAHEADER,*LPMETAHEADER;
+#pragma pack(pop)
+typedef struct tagENHMETAHEADER {
+	DWORD iType;
+	DWORD nSize;
+	RECTL rclBounds;
+	RECTL rclFrame;
+	DWORD dSignature;
+	DWORD nVersion;
+	DWORD nBytes;
+	DWORD nRecords;
+	WORD nHandles;
+	WORD sReserved;
+	DWORD nDescription;
+	DWORD offDescription;
+	DWORD nPalEntries;
+	SIZEL szlDevice;
+	SIZEL szlMillimeters;
+} ENHMETAHEADER,*LPENHMETAHEADER;
+typedef struct tagMETARECORD {
+	DWORD rdSize;
+	WORD rdFunction;
+	WORD rdParm[1];
+} METARECORD,*PMETARECORD,*LPMETARECORD;
+typedef struct tagENHMETARECORD {
+	DWORD iType;
+	DWORD nSize;
+	DWORD dParm[1];
+} ENHMETARECORD,*LPENHMETARECORD;
+typedef struct tagHANDLETABLE {
+	HGDIOBJ objectHandle[1];
+} HANDLETABLE,*LPHANDLETABLE;
+typedef struct tagTEXTMETRICA {
+	LONG tmHeight;
+	LONG tmAscent;
+	LONG tmDescent;
+	LONG tmInternalLeading;
+	LONG tmExternalLeading;
+	LONG tmAveCharWidth;
+	LONG tmMaxCharWidth;
+	LONG tmWeight;
+	LONG tmOverhang;
+	LONG tmDigitizedAspectX;
+	LONG tmDigitizedAspectY;
+	BYTE tmFirstChar;
+	BYTE tmLastChar;
+	BYTE tmDefaultChar;
+	BYTE tmBreakChar;
+	BYTE tmItalic;
+	BYTE tmUnderlined;
+	BYTE tmStruckOut;
+	BYTE tmPitchAndFamily;
+	BYTE tmCharSet;
+} TEXTMETRICA,*PTEXTMETRICA,*LPTEXTMETRICA;
+typedef struct tagTEXTMETRICW {
+	LONG tmHeight;
+	LONG tmAscent;
+	LONG tmDescent;
+	LONG tmInternalLeading;
+	LONG tmExternalLeading;
+	LONG tmAveCharWidth;
+	LONG tmMaxCharWidth;
+	LONG tmWeight;
+	LONG tmOverhang;
+	LONG tmDigitizedAspectX;
+	LONG tmDigitizedAspectY;
+	WCHAR tmFirstChar;
+	WCHAR tmLastChar;
+	WCHAR tmDefaultChar;
+	WCHAR tmBreakChar;
+	BYTE tmItalic;
+	BYTE tmUnderlined;
+	BYTE tmStruckOut;
+	BYTE tmPitchAndFamily;
+	BYTE tmCharSet;
+} TEXTMETRICW,*PTEXTMETRICW,*LPTEXTMETRICW;
+typedef struct _RGNDATAHEADER {
+	DWORD dwSize;
+	DWORD iType;
+	DWORD nCount;
+	DWORD nRgnSize;
+	RECT rcBound;
+} RGNDATAHEADER;
+typedef struct _RGNDATA {
+	RGNDATAHEADER rdh;
+	char Buffer[1];
+} RGNDATA,*LPRGNDATA;
+/* for GetRandomRgn */
+#define SYSRGN  4
+typedef struct tagGCP_RESULTSA {
+	DWORD lStructSize;
+	LPSTR lpOutString;
+	UINT *lpOrder;
+	INT *lpDx;
+	INT *lpCaretPos;
+	LPSTR lpClass;
+	UINT *lpGlyphs;
+	UINT nGlyphs;
+	UINT nMaxFit;
+} GCP_RESULTSA,*LPGCP_RESULTSA;
+typedef struct tagGCP_RESULTSW {
+	DWORD lStructSize;
+	LPWSTR lpOutString;
+	UINT *lpOrder;
+	INT *lpDx;
+	INT *lpCaretPos;
+	LPWSTR lpClass;
+	UINT *lpGlyphs;
+	UINT nGlyphs;
+	UINT nMaxFit;
+} GCP_RESULTSW,*LPGCP_RESULTSW;
+typedef struct _GLYPHMETRICS {
+	UINT gmBlackBoxX;
+	UINT gmBlackBoxY;
+	POINT gmptGlyphOrigin;
+	short gmCellIncX;
+	short gmCellIncY;
+} GLYPHMETRICS,*LPGLYPHMETRICS;
+typedef struct tagKERNINGPAIR {
+	WORD wFirst;
+	WORD wSecond;
+	int iKernAmount;
+} KERNINGPAIR,*LPKERNINGPAIR;
+typedef struct _FIXED {
+	WORD fract;
+	short value;
+} FIXED;
+typedef struct _MAT2 {
+	FIXED eM11;
+	FIXED eM12;
+	FIXED eM21;
+	FIXED eM22;
+} MAT2,*LPMAT2;
+typedef struct _OUTLINETEXTMETRICA {
+	UINT otmSize;
+	TEXTMETRICA otmTextMetrics;
+	BYTE otmFiller;
+	PANOSE otmPanoseNumber;
+	UINT otmfsSelection;
+	UINT otmfsType;
+	int otmsCharSlopeRise;
+	int otmsCharSlopeRun;
+	int otmItalicAngle;
+	UINT otmEMSquare;
+	int otmAscent;
+	int otmDescent;
+	UINT otmLineGap;
+	UINT otmsCapEmHeight;
+	UINT otmsXHeight;
+	RECT otmrcFontBox;
+	int otmMacAscent;
+	int otmMacDescent;
+	UINT otmMacLineGap;
+	UINT otmusMinimumPPEM;
+	POINT otmptSubscriptSize;
+	POINT otmptSubscriptOffset;
+	POINT otmptSuperscriptSize;
+	POINT otmptSuperscriptOffset;
+	UINT otmsStrikeoutSize;
+	int otmsStrikeoutPosition;
+	int otmsUnderscoreSize;
+	int otmsUnderscorePosition;
+	PSTR otmpFamilyName;
+	PSTR otmpFaceName;
+	PSTR otmpStyleName;
+	PSTR otmpFullName;
+} OUTLINETEXTMETRICA,*POUTLINETEXTMETRICA,*LPOUTLINETEXTMETRICA;
+typedef struct _OUTLINETEXTMETRICW {
+	UINT otmSize;
+	TEXTMETRICW otmTextMetrics;
+	BYTE otmFiller;
+	PANOSE otmPanoseNumber;
+	UINT otmfsSelection;
+	UINT otmfsType;
+	int otmsCharSlopeRise;
+	int otmsCharSlopeRun;
+	int otmItalicAngle;
+	UINT otmEMSquare;
+	int otmAscent;
+	int otmDescent;
+	UINT otmLineGap;
+	UINT otmsCapEmHeight;
+	UINT otmsXHeight;
+	RECT otmrcFontBox;
+	int otmMacAscent;
+	int otmMacDescent;
+	UINT otmMacLineGap;
+	UINT otmusMinimumPPEM;
+	POINT otmptSubscriptSize;
+	POINT otmptSubscriptOffset;
+	POINT otmptSuperscriptSize;
+	POINT otmptSuperscriptOffset;
+	UINT otmsStrikeoutSize;
+	int otmsStrikeoutPosition;
+	int otmsUnderscoreSize;
+	int otmsUnderscorePosition;
+	PSTR otmpFamilyName;
+	PSTR otmpFaceName;
+	PSTR otmpStyleName;
+	PSTR otmpFullName;
+} OUTLINETEXTMETRICW,*POUTLINETEXTMETRICW,*LPOUTLINETEXTMETRICW;
+typedef struct _RASTERIZER_STATUS {
+	short nSize;
+	short wFlags;
+	short nLanguageID;
+} RASTERIZER_STATUS,*LPRASTERIZER_STATUS;
+typedef struct _POLYTEXTA {
+	int x;
+	int y;
+	UINT n;
+	LPCSTR lpstr;
+	UINT uiFlags;
+	RECT rcl;
+	int *pdx;
+} POLYTEXTA;
+typedef struct _POLYTEXTW {
+	int x;
+	int y;
+	UINT n;
+	LPCWSTR lpstr;
+	UINT uiFlags;
+	RECT rcl;
+	int *pdx;
+} POLYTEXTW;
+typedef struct tagPIXELFORMATDESCRIPTOR {
+	WORD nSize;
+	WORD nVersion;
+	DWORD dwFlags;
+	BYTE iPixelType;
+	BYTE cColorBits;
+	BYTE cRedBits;
+	BYTE cRedShift;
+	BYTE cGreenBits;
+	BYTE cGreenShift;
+	BYTE cBlueBits;
+	BYTE cBlueShift;
+	BYTE cAlphaBits;
+	BYTE cAlphaShift;
+	BYTE cAccumBits;
+	BYTE cAccumRedBits;
+	BYTE cAccumGreenBits;
+	BYTE cAccumBlueBits;
+	BYTE cAccumAlphaBits;
+	BYTE cDepthBits;
+	BYTE cStencilBits;
+	BYTE cAuxBuffers;
+	BYTE iLayerType;
+	BYTE bReserved;
+	DWORD dwLayerMask;
+	DWORD dwVisibleMask;
+	DWORD dwDamageMask;
+} PIXELFORMATDESCRIPTOR,*PPIXELFORMATDESCRIPTOR,*LPPIXELFORMATDESCRIPTOR;
+typedef struct tagMETAFILEPICT {
+	LONG mm;
+	LONG xExt;
+	LONG yExt;
+	HMETAFILE hMF;
+} METAFILEPICT,*LPMETAFILEPICT;
+typedef struct tagLOCALESIGNATURE {
+	DWORD lsUsb[4];
+	DWORD lsCsbDefault[2];
+	DWORD lsCsbSupported[2];
+} LOCALESIGNATURE,*PLOCALESIGNATURE,*LPLOCALESIGNATURE;
+typedef LONG LCSTYPE;
+#pragma pack(push,4)
+typedef struct tagNEWTEXTMETRICA {
+	LONG tmHeight;
+	LONG tmAscent;
+	LONG tmDescent;
+	LONG tmInternalLeading;
+	LONG tmExternalLeading;
+	LONG tmAveCharWidth;
+	LONG tmMaxCharWidth;
+	LONG tmWeight;
+	LONG tmOverhang;
+	LONG tmDigitizedAspectX;
+	LONG tmDigitizedAspectY;
+	BYTE tmFirstChar;
+	BYTE tmLastChar;
+	BYTE tmDefaultChar;
+	BYTE tmBreakChar;
+	BYTE tmItalic;
+	BYTE tmUnderlined;
+	BYTE tmStruckOut;
+	BYTE tmPitchAndFamily;
+	BYTE tmCharSet;
+	DWORD ntmFlags;
+	UINT ntmSizeEM;
+	UINT ntmCellHeight;
+	UINT ntmAvgWidth;
+} NEWTEXTMETRICA,*PNEWTEXTMETRICA,*LPNEWTEXTMETRICA;
+typedef struct tagNEWTEXTMETRICW {
+	LONG tmHeight;
+	LONG tmAscent;
+	LONG tmDescent;
+	LONG tmInternalLeading;
+	LONG tmExternalLeading;
+	LONG tmAveCharWidth;
+	LONG tmMaxCharWidth;
+	LONG tmWeight;
+	LONG tmOverhang;
+	LONG tmDigitizedAspectX;
+	LONG tmDigitizedAspectY;
+	WCHAR tmFirstChar;
+	WCHAR tmLastChar;
+	WCHAR tmDefaultChar;
+	WCHAR tmBreakChar;
+	BYTE tmItalic;
+	BYTE tmUnderlined;
+	BYTE tmStruckOut;
+	BYTE tmPitchAndFamily;
+	BYTE tmCharSet;
+	DWORD ntmFlags;
+	UINT ntmSizeEM;
+	UINT ntmCellHeight;
+	UINT ntmAvgWidth;
+} NEWTEXTMETRICW,*PNEWTEXTMETRICW,*LPNEWTEXTMETRICW;
+#pragma pack(pop)
+typedef struct tagNEWTEXTMETRICEXA {
+	NEWTEXTMETRICA ntmTm;
+	FONTSIGNATURE ntmFontSig;
+} NEWTEXTMETRICEXA;
+typedef struct tagNEWTEXTMETRICEXW {
+	NEWTEXTMETRICW ntmTm;
+	FONTSIGNATURE ntmFontSig;
+} NEWTEXTMETRICEXW;
+typedef struct tagPELARRAY {
+	LONG paXCount;
+	LONG paYCount;
+	LONG paXExt;
+	LONG paYExt;
+	BYTE paRGBs;
+} PELARRAY,*PPELARRAY,*LPPELARRAY;
+typedef struct tagENUMLOGFONTA {
+	LOGFONTA elfLogFont;
+	BYTE elfFullName[LF_FULLFACESIZE];
+	BYTE elfStyle[LF_FACESIZE];
+} ENUMLOGFONTA,*LPENUMLOGFONTA;
+typedef struct tagENUMLOGFONTW {
+	LOGFONTW elfLogFont;
+	WCHAR elfFullName[LF_FULLFACESIZE];
+	WCHAR elfStyle[LF_FACESIZE];
+} ENUMLOGFONTW,*LPENUMLOGFONTW;
+typedef struct tagENUMLOGFONTEXA {
+	LOGFONTA elfLogFont;
+	BYTE elfFullName[LF_FULLFACESIZE];
+	BYTE elfStyle[LF_FACESIZE];
+	BYTE elfScript[LF_FACESIZE];
+} ENUMLOGFONTEXA,*LPENUMLOGFONTEXA;
+typedef struct tagENUMLOGFONTEXW {
+	LOGFONTW elfLogFont;
+	WCHAR elfFullName[LF_FULLFACESIZE];
+	BYTE elfStyle[LF_FACESIZE];
+	BYTE elfScript[LF_FACESIZE];
+} ENUMLOGFONTEXW,*LPENUMLOGFONTEXW;
+typedef struct tagPOINTFX {
+	FIXED x;
+	FIXED y;
+} POINTFX,*LPPOINTFX;
+typedef struct tagTTPOLYCURVE {
+	WORD wType;
+	WORD cpfx;
+	POINTFX apfx[1];
+} TTPOLYCURVE,*LPTTPOLYCURVE;
+typedef struct tagTTPOLYGONHEADER {
+	DWORD cb;
+	DWORD dwType;
+	POINTFX pfxStart;
+} TTPOLYGONHEADER,*LPTTPOLYGONHEADER;
+typedef struct _POINTFLOAT {
+	FLOAT x;
+	FLOAT y;
+} POINTFLOAT,*PPOINTFLOAT;
+typedef struct _GLYPHMETRICSFLOAT {
+	FLOAT gmfBlackBoxX;
+	FLOAT gmfBlackBoxY;
+	POINTFLOAT gmfptGlyphOrigin;
+	FLOAT gmfCellIncX;
+	FLOAT gmfCellIncY;
+} GLYPHMETRICSFLOAT,*PGLYPHMETRICSFLOAT,*LPGLYPHMETRICSFLOAT;
+typedef struct tagLAYERPLANEDESCRIPTOR {
+	WORD nSize;
+	WORD nVersion;
+	DWORD dwFlags;
+	BYTE iPixelType;
+	BYTE cColorBits;
+	BYTE cRedBits;
+	BYTE cRedShift;
+	BYTE cGreenBits;
+	BYTE cGreenShift;
+	BYTE cBlueBits;
+	BYTE cBlueShift;
+	BYTE cAlphaBits;
+	BYTE cAlphaShift;
+	BYTE cAccumBits;
+	BYTE cAccumRedBits;
+	BYTE cAccumGreenBits;
+	BYTE cAccumBlueBits;
+	BYTE cAccumAlphaBits;
+	BYTE cDepthBits;
+	BYTE cStencilBits;
+	BYTE cAuxBuffers;
+	BYTE iLayerPlane;
+	BYTE bReserved;
+	COLORREF crTransparent;
+} LAYERPLANEDESCRIPTOR,*PLAYERPLANEDESCRIPTOR,*LPLAYERPLANEDESCRIPTOR;
+typedef struct _BLENDFUNCTION {
+    BYTE BlendOp;
+    BYTE BlendFlags;
+    BYTE SourceConstantAlpha;
+    BYTE AlphaFormat; 
+} BLENDFUNCTION,*PBLENDFUNCTION,*LPBLENDFUNCTION; 
+typedef BOOL (CALLBACK *ABORTPROC)(HDC,int);
+typedef int (CALLBACK *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,int,LPARAM);
+typedef int (CALLBACK *ENHMFENUMPROC)(HDC,HANDLETABLE*,ENHMETARECORD*,int,LPARAM);
+typedef int (CALLBACK *OLDFONTENUMPROCA)(const LOGFONTA*,const TEXTMETRICA*,DWORD,LPARAM);
+typedef int (CALLBACK *OLDFONTENUMPROCW)(const LOGFONTW*,const TEXTMETRICW*,DWORD,LPARAM);
+typedef OLDFONTENUMPROCA FONTENUMPROCA;
+typedef OLDFONTENUMPROCW FONTENUMPROCW;
+typedef int (CALLBACK *ICMENUMPROCA)(LPSTR,LPARAM);
+typedef int (CALLBACK *ICMENUMPROCW)(LPWSTR,LPARAM);
+typedef void (CALLBACK *GOBJENUMPROC)(LPVOID,LPARAM);
+typedef void (CALLBACK *LINEDDAPROC)(int,int,LPARAM);
+typedef UINT (CALLBACK *LPFNDEVMODE)(HWND,HMODULE,LPDEVMODEA,LPSTR,LPSTR,LPDEVMODEA,LPSTR,UINT);
+typedef DWORD (CALLBACK *LPFNDEVCAPS)(LPSTR,LPSTR,UINT,LPSTR,LPDEVMODEA);
+
+
+#define RGB(r,g,b)	((DWORD)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
+#define MAKEPOINTS(l) (*((POINTS*)&(l)))
+#define MAKEROP4(f,b)	(DWORD)((((b)<<8)&0xFF000000)|(f))
+#define PALETTEINDEX(i)	((0x01000000|(COLORREF)(WORD)(i)))
+#define PALETTERGB(r,g,b)	(0x02000000|RGB(r,g,b))
+int WINAPI AbortDoc(HDC);
+BOOL WINAPI AbortPath(HDC);
+int WINAPI AddFontResourceA(LPCSTR);
+int WINAPI AddFontResourceW(LPCWSTR);
+BOOL WINAPI AngleArc(HDC,int,int,DWORD,FLOAT,FLOAT);
+BOOL WINAPI AnimatePalette(HPALETTE,UINT,UINT,const PALETTEENTRY*);
+BOOL WINAPI Arc(HDC,int,int,int,int,int,int,int,int);
+BOOL WINAPI ArcTo(HDC,int,int,int,int,int,int,int,int);
+BOOL WINAPI BeginPath(HDC);
+BOOL WINAPI BitBlt(HDC,int,int,int,int,HDC,int,int,DWORD);
+BOOL WINAPI CancelDC(HDC);
+BOOL WINAPI CheckColorsInGamut(HDC,PVOID,PVOID,DWORD);
+BOOL WINAPI Chord(HDC,int,int,int,int,int,int,int,int);
+int WINAPI ChoosePixelFormat(HDC,CONST PIXELFORMATDESCRIPTOR*);
+HENHMETAFILE WINAPI CloseEnhMetaFile(HDC);
+BOOL WINAPI CloseFigure(HDC);
+HMETAFILE WINAPI CloseMetaFile(HDC);
+BOOL WINAPI ColorMatchToTarget(HDC,HDC,DWORD);
+int WINAPI CombineRgn(HRGN,HRGN,HRGN,int);
+BOOL WINAPI CombineTransform(LPXFORM,const XFORM*,const XFORM*);
+HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE,LPCSTR);
+HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR);
+HMETAFILE WINAPI CopyMetaFileA(HMETAFILE,LPCSTR);
+HMETAFILE WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR);
+HBITMAP WINAPI CreateBitmap(int,int,UINT,UINT,PCVOID);
+HBITMAP WINAPI CreateBitmapIndirect(const BITMAP*);
+HBRUSH WINAPI CreateBrushIndirect(const LOGBRUSH*);
+HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA);
+HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW);
+HBITMAP WINAPI CreateCompatibleBitmap(HDC,int,int);
+HDC WINAPI CreateCompatibleDC(HDC);
+HDC WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
+HDC WINAPI CreateDCW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
+HBITMAP WINAPI CreateDIBitmap(HDC,const BITMAPINFOHEADER*,DWORD,PCVOID,const BITMAPINFO*,UINT);
+HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL,UINT);
+HBRUSH WINAPI CreateDIBPatternBrushPt(PCVOID,UINT);
+HBITMAP WINAPI CreateDIBSection(HDC,const BITMAPINFO*,UINT,void**,HANDLE,DWORD);
+HBITMAP WINAPI CreateDiscardableBitmap(HDC,int,int);
+HRGN WINAPI CreateEllipticRgn(int,int,int,int);
+HRGN WINAPI CreateEllipticRgnIndirect(LPCRECT);
+HDC WINAPI CreateEnhMetaFileA(HDC,LPCSTR,LPCRECT,LPCSTR);
+HDC WINAPI CreateEnhMetaFileW(HDC,LPCWSTR,LPCRECT,LPCWSTR);
+HFONT WINAPI CreateFontA(int,int,int,int,int,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR);
+HFONT WINAPI CreateFontW(int,int,int,int,int,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR);
+HFONT WINAPI CreateFontIndirectA(const LOGFONTA*);
+HFONT WINAPI CreateFontIndirectW(const LOGFONTW*);
+HPALETTE WINAPI CreateHalftonePalette(HDC);
+HBRUSH WINAPI CreateHatchBrush(int,COLORREF);
+HDC WINAPI CreateICA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
+HDC WINAPI CreateICW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
+HDC WINAPI CreateMetaFileA(LPCSTR);
+HDC WINAPI CreateMetaFileW(LPCWSTR);
+HPALETTE WINAPI CreatePalette(const LOGPALETTE*);
+HBRUSH WINAPI CreatePatternBrush(HBITMAP);
+HPEN WINAPI CreatePen(int,int,COLORREF);
+HPEN WINAPI CreatePenIndirect(const LOGPEN*);
+HRGN WINAPI CreatePolygonRgn(const POINT*,int,int);
+HRGN WINAPI CreatePolyPolygonRgn(const POINT*,const INT*,int,int);
+HRGN WINAPI CreateRectRgn(int,int,int,int);
+HRGN WINAPI CreateRectRgnIndirect(LPCRECT);
+HRGN WINAPI CreateRoundRectRgn(int,int,int,int,int,int);
+BOOL WINAPI CreateScalableFontResourceA(DWORD,LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI CreateScalableFontResourceW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR);
+HBRUSH WINAPI CreateSolidBrush(COLORREF);
+BOOL WINAPI DeleteColorSpace(HCOLORSPACE);
+BOOL WINAPI DeleteDC(HDC);
+BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE);
+BOOL WINAPI DeleteMetaFile(HMETAFILE);
+BOOL WINAPI DeleteObject(HGDIOBJ);
+int WINAPI DescribePixelFormat(HDC,int,UINT,LPPIXELFORMATDESCRIPTOR);
+DWORD WINAPI DeviceCapabilitiesA(LPCSTR,LPCSTR,WORD,LPSTR,const DEVMODEA*);
+DWORD WINAPI DeviceCapabilitiesW(LPCWSTR,LPCWSTR,WORD,LPWSTR,const DEVMODEW*);
+BOOL WINAPI DPtoLP(HDC,LPPOINT,int);
+int WINAPI DrawEscape(HDC,int,int,LPCSTR);
+BOOL WINAPI Ellipse(HDC,int,int,int,int);
+int WINAPI EndDoc(HDC);
+int WINAPI EndPage(HDC);
+BOOL WINAPI EndPath(HDC);
+BOOL WINAPI EnumEnhMetaFile(HDC,HENHMETAFILE,ENHMFENUMPROC,PVOID,LPCRECT);
+int WINAPI EnumFontFamiliesA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
+int WINAPI EnumFontFamiliesW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
+int WINAPI EnumFontFamiliesExA(HDC,PLOGFONTA,FONTENUMPROCA,LPARAM,DWORD);
+int WINAPI EnumFontFamiliesExW(HDC,PLOGFONTW,FONTENUMPROCW,LPARAM,DWORD);
+int WINAPI EnumFontsA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
+int WINAPI EnumFontsW(HDC,LPCWSTR,FONTENUMPROCA,LPARAM);
+int WINAPI EnumICMProfilesA(HDC,ICMENUMPROCA,LPARAM);
+int WINAPI EnumICMProfilesW(HDC,ICMENUMPROCW,LPARAM);
+BOOL WINAPI EnumMetaFile(HDC,HMETAFILE,MFENUMPROC,LPARAM);
+int WINAPI EnumObjects(HDC,int,GOBJENUMPROC,LPARAM);
+BOOL WINAPI EqualRgn(HRGN,HRGN);
+int WINAPI Escape(HDC,int,int,LPCSTR,PVOID);
+int WINAPI ExcludeClipRect(HDC,int,int,int,int);
+int WINAPI ExcludeUpdateRgn(HDC,HWND);
+HPEN WINAPI ExtCreatePen(DWORD,DWORD,const LOGBRUSH*,DWORD,const DWORD*);
+HRGN WINAPI ExtCreateRegion(const XFORM*,DWORD,const RGNDATA*);
+int WINAPI ExtEscape(HDC,int,int,LPCSTR,int,LPSTR);
+BOOL WINAPI ExtFloodFill(HDC,int,int,COLORREF,UINT);
+int WINAPI ExtSelectClipRgn(HDC,HRGN,int);
+BOOL WINAPI ExtTextOutA(HDC,int,int,UINT,LPCRECT,LPCSTR,UINT,const INT*);
+BOOL WINAPI ExtTextOutW(HDC,int,int,UINT,LPCRECT,LPCWSTR,UINT,const INT*);
+BOOL WINAPI FillPath(HDC);
+int WINAPI FillRect(HDC,LPCRECT,HBRUSH);
+int WINAPI FillRgn(HDC,HRGN,HBRUSH);
+BOOL WINAPI FixBrushOrgEx(HDC,int,int,LPPOINT);
+BOOL WINAPI FlattenPath(HDC);
+BOOL WINAPI FloodFill(HDC,int,int,COLORREF);
+BOOL WINAPI GdiComment(HDC,UINT,const BYTE*);
+BOOL WINAPI GdiFlush(void);
+DWORD WINAPI GdiGetBatchLimit(void);
+DWORD WINAPI GdiSetBatchLimit(DWORD);
+#define GetCValue(cmyk) ((BYTE)(cmyk))
+#define GetMValue(cmyk) ((BYTE)((cmyk)>> 8))
+#define GetYValue(cmyk) ((BYTE)((cmyk)>>16))
+#define GetKValue(cmyk) ((BYTE)((cmyk)>>24))
+#define CMYK(c,m,y,k) ((COLORREF)((((BYTE)(c)|((WORD)((BYTE)(m))<<8))|(((DWORD)(BYTE)(y))<<16))|(((DWORD)(BYTE)(k))<<24)))
+#define GetRValue(c) ((BYTE)(c))
+#define GetGValue(c) ((BYTE)(((WORD)(c))>>8))
+#define GetBValue(c) ((BYTE)((c)>>16))
+int WINAPI GetArcDirection(HDC);
+BOOL WINAPI GetAspectRatioFilterEx(HDC,LPSIZE);
+LONG WINAPI GetBitmapBits(HBITMAP,LONG,PVOID);
+BOOL WINAPI GetBitmapDimensionEx(HBITMAP,LPSIZE);
+COLORREF WINAPI GetBkColor(HDC);
+int WINAPI GetBkMode(HDC);
+UINT WINAPI GetBoundsRect(HDC,LPRECT,UINT);
+BOOL WINAPI GetBrushOrgEx(HDC,LPPOINT);
+BOOL WINAPI GetCharABCWidthsA(HDC,UINT,UINT,LPABC);
+BOOL WINAPI GetCharABCWidthsW(HDC,UINT,UINT,LPABC);
+BOOL WINAPI GetCharABCWidthsFloatA(HDC,UINT,UINT,LPABCFLOAT);
+BOOL WINAPI GetCharABCWidthsFloatW(HDC,UINT,UINT,LPABCFLOAT);
+DWORD WINAPI GetCharacterPlacementA(HDC,LPCSTR,int,int,LPGCP_RESULTSA,DWORD);
+DWORD WINAPI GetCharacterPlacementW(HDC,LPCWSTR,int,int,LPGCP_RESULTSW,DWORD);
+BOOL WINAPI GetCharWidth32A(HDC,UINT,UINT,LPINT);
+BOOL WINAPI GetCharWidth32W(HDC,UINT,UINT,LPINT);
+BOOL WINAPI GetCharWidthA(HDC,UINT,UINT,LPINT);
+BOOL WINAPI GetCharWidthW(HDC,UINT,UINT,LPINT);
+BOOL WINAPI GetCharWidthFloatA(HDC,UINT,UINT,PFLOAT);
+BOOL WINAPI GetCharWidthFloatW(HDC,UINT,UINT,PFLOAT);
+int WINAPI GetClipBox(HDC,LPRECT);
+int WINAPI GetClipRgn(HDC,HRGN);
+BOOL WINAPI GetColorAdjustment(HDC,LPCOLORADJUSTMENT);
+HANDLE WINAPI GetColorSpace(HDC);
+HGDIOBJ WINAPI GetCurrentObject(HDC,UINT);
+BOOL WINAPI GetCurrentPositionEx(HDC,LPPOINT);
+HCURSOR WINAPI GetCursor(void);
+BOOL WINAPI GetDCOrgEx(HDC,LPPOINT);
+int WINAPI GetDeviceCaps(HDC,int);
+BOOL WINAPI GetDeviceGammaRamp(HDC,PVOID);
+UINT WINAPI GetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
+int WINAPI GetDIBits(HDC,HBITMAP,UINT,UINT,PVOID,LPBITMAPINFO,UINT);
+HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR);
+HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR);
+UINT WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE,UINT,LPSTR);
+UINT WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE,UINT,LPWSTR);
+UINT WINAPI GetEnhMetaFileHeader(HENHMETAFILE,UINT,LPENHMETAHEADER);
+UINT WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE,UINT,LPPALETTEENTRY);
+UINT WINAPI GetEnhMetaFilePixelFormat(HENHMETAFILE,DWORD,PIXELFORMATDESCRIPTOR*);
+DWORD WINAPI GetFontData(HDC,DWORD,DWORD,PVOID,DWORD);
+DWORD WINAPI GetFontLanguageInfo(HDC);
+DWORD WINAPI GetGlyphOutlineA(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,PVOID,const MAT2*);
+DWORD WINAPI GetGlyphOutlineW(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,PVOID,const MAT2*);
+int WINAPI GetGraphicsMode(HDC);
+BOOL WINAPI GetICMProfileA(HDC,DWORD,LPSTR);
+BOOL WINAPI GetICMProfileW(HDC,DWORD,LPWSTR);
+DWORD WINAPI GetKerningPairsA(HDC,DWORD,LPKERNINGPAIR);
+DWORD WINAPI GetKerningPairsW(HDC,DWORD,LPKERNINGPAIR);
+BOOL WINAPI GetLogColorSpaceA(HCOLORSPACE,LPLOGCOLORSPACEA,DWORD);
+BOOL WINAPI GetLogColorSpaceW(HCOLORSPACE,LPLOGCOLORSPACEW,DWORD);
+int WINAPI GetMapMode(HDC);
+HMETAFILE WINAPI GetMetaFileA(LPCSTR);
+HMETAFILE WINAPI GetMetaFileW(LPCWSTR);
+UINT WINAPI GetMetaFileBitsEx(HMETAFILE,UINT,PVOID);
+int WINAPI GetMetaRgn(HDC,HRGN);
+BOOL WINAPI GetMiterLimit(HDC,PFLOAT);
+COLORREF WINAPI GetNearestColor(HDC,COLORREF);
+UINT WINAPI GetNearestPaletteIndex(HPALETTE,COLORREF);
+int WINAPI GetObjectA(HGDIOBJ,int,PVOID);
+int WINAPI GetObjectW(HGDIOBJ,int,PVOID);
+DWORD WINAPI GetObjectType(HGDIOBJ);
+UINT WINAPI GetOutlineTextMetricsA(HDC,UINT,LPOUTLINETEXTMETRICA);
+UINT WINAPI GetOutlineTextMetricsW(HDC,UINT,LPOUTLINETEXTMETRICW);
+UINT WINAPI GetPaletteEntries(HPALETTE,UINT,UINT,LPPALETTEENTRY);
+int WINAPI GetPath(HDC,LPPOINT,PBYTE,int);
+COLORREF WINAPI GetPixel(HDC,int,int);
+int WINAPI GetPixelFormat(HDC);
+int WINAPI GetPolyFillMode(HDC);
+BOOL WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS,UINT);
+int WINAPI GetRandomRgn (HDC,HRGN,INT);
+DWORD WINAPI GetRegionData(HRGN,DWORD,LPRGNDATA);
+int WINAPI GetRgnBox(HRGN,LPRECT);
+int WINAPI GetROP2(HDC);
+HGDIOBJ WINAPI GetStockObject(int);
+int WINAPI GetStretchBltMode(HDC);
+UINT WINAPI GetSystemPaletteEntries(HDC,UINT,UINT,LPPALETTEENTRY);
+UINT WINAPI GetSystemPaletteUse(HDC);
+UINT WINAPI GetTextAlign(HDC);
+int WINAPI GetTextCharacterExtra(HDC);
+int WINAPI GetTextCharset(HDC);
+int WINAPI GetTextCharsetInfo(HDC,LPFONTSIGNATURE,DWORD);
+COLORREF WINAPI GetTextColor(HDC);
+BOOL WINAPI GetTextExtentExPointA(HDC,LPCSTR,int,int,LPINT,LPINT,LPSIZE);
+BOOL WINAPI GetTextExtentExPointW( HDC,LPCWSTR,int,int,LPINT,LPINT,LPSIZE );
+BOOL WINAPI GetTextExtentPointA(HDC,LPCSTR,int,LPSIZE);
+BOOL WINAPI GetTextExtentPointW(HDC,LPCWSTR,int,LPSIZE);
+BOOL WINAPI GetTextExtentPoint32A(HDC,LPCSTR,int,LPSIZE);
+BOOL WINAPI GetTextExtentPoint32W( HDC,LPCWSTR,int,LPSIZE);
+int WINAPI GetTextFaceA(HDC,int,LPSTR);
+int WINAPI GetTextFaceW(HDC,int,LPWSTR);
+BOOL WINAPI GetTextMetricsA(HDC,LPTEXTMETRICA);
+BOOL WINAPI GetTextMetricsW(HDC,LPTEXTMETRICW);
+BOOL WINAPI GetViewportExtEx(HDC,LPSIZE);
+BOOL WINAPI GetViewportOrgEx(HDC,LPPOINT);
+BOOL WINAPI GetWindowExtEx(HDC,LPSIZE);
+BOOL WINAPI GetWindowOrgEx(HDC,LPPOINT);
+UINT WINAPI GetWinMetaFileBits(HENHMETAFILE,UINT,LPBYTE,INT,HDC);
+BOOL WINAPI GetWorldTransform(HDC,LPXFORM);
+int WINAPI IntersectClipRect(HDC,int,int,int,int);
+BOOL WINAPI InvertRgn(HDC,HRGN);
+BOOL WINAPI LineDDA(int,int,int,int,LINEDDAPROC,LPARAM);
+BOOL WINAPI LineTo(HDC,int,int);
+BOOL WINAPI LPtoDP(HDC,LPPOINT,int);
+BOOL WINAPI MaskBlt(HDC,int,int,int,int,HDC,int,int,HBITMAP,int,int,DWORD);
+BOOL WINAPI ModifyWorldTransform(HDC,const XFORM*,DWORD);
+BOOL WINAPI MoveToEx(HDC,int,int,LPPOINT);
+int WINAPI OffsetClipRgn(HDC,int,int);
+int WINAPI OffsetRgn(HRGN,int,int);
+BOOL WINAPI OffsetViewportOrgEx(HDC,int,int,LPPOINT);
+BOOL WINAPI OffsetWindowOrgEx(HDC,int,int,LPPOINT);
+BOOL WINAPI PaintRgn(HDC,HRGN);
+BOOL WINAPI PatBlt(HDC,int,int,int,int,DWORD);
+HRGN WINAPI PathToRegion(HDC);
+BOOL WINAPI Pie(HDC,int,int,int,int,int,int,int,int);
+BOOL WINAPI PlayEnhMetaFile(HDC,HENHMETAFILE,LPCRECT);
+BOOL WINAPI PlayEnhMetaFileRecord(HDC,LPHANDLETABLE,const ENHMETARECORD*,UINT);
+BOOL WINAPI PlayMetaFile(HDC,HMETAFILE);
+BOOL WINAPI PlayMetaFileRecord(HDC,LPHANDLETABLE,LPMETARECORD,UINT);
+BOOL WINAPI PlgBlt(HDC,const POINT*,HDC,int,int,int,int,HBITMAP,int,int);
+BOOL WINAPI PolyBezier(HDC,const POINT*,DWORD);
+BOOL WINAPI PolyBezierTo(HDC,const POINT*,DWORD);
+BOOL WINAPI PolyDraw(HDC,const POINT*,const BYTE*,int);
+BOOL WINAPI Polygon(HDC,const POINT*,int);
+BOOL WINAPI Polyline(HDC,const POINT*,int);
+BOOL WINAPI PolylineTo(HDC,const POINT*,DWORD);
+BOOL WINAPI PolyPolygon(HDC,const POINT*,const INT*,int);
+BOOL WINAPI PolyPolyline(HDC,const POINT*,const DWORD*,DWORD);
+BOOL WINAPI PolyTextOutA(HDC,const POLYTEXTA*,int);
+BOOL WINAPI PolyTextOutW(HDC,const POLYTEXTW*,int);
+BOOL WINAPI PtInRegion(HRGN,int,int);
+BOOL WINAPI PtVisible(HDC,int,int);
+UINT WINAPI RealizePalette(HDC);
+BOOL WINAPI Rectangle(HDC,int,int,int,int);
+BOOL WINAPI RectInRegion(HRGN,LPCRECT);
+BOOL WINAPI RectVisible(HDC,LPCRECT);
+BOOL WINAPI RemoveFontResourceA(LPCSTR);
+BOOL WINAPI RemoveFontResourceW(LPCWSTR);
+HDC WINAPI ResetDCA(HDC,const DEVMODEA*);
+HDC WINAPI ResetDCW(HDC,const DEVMODEW*);
+BOOL WINAPI ResizePalette(HPALETTE,UINT);
+BOOL WINAPI RestoreDC(HDC,int);
+BOOL WINAPI RoundRect(HDC,int,int,int,int,int,int);
+int WINAPI SaveDC(HDC);
+BOOL WINAPI ScaleViewportExtEx(HDC,int,int,int,int,LPSIZE);
+BOOL WINAPI ScaleWindowExtEx(HDC,int,int,int,int,LPSIZE);
+BOOL WINAPI SelectClipPath(HDC,int);
+int WINAPI SelectClipRgn(HDC,HRGN);
+HGDIOBJ WINAPI SelectObject(HDC,HGDIOBJ);
+HPALETTE WINAPI SelectPalette(HDC,HPALETTE,BOOL);
+int WINAPI SetAbortProc(HDC,ABORTPROC);
+int WINAPI SetArcDirection(HDC,int);
+LONG WINAPI SetBitmapBits(HBITMAP,DWORD,PCVOID);
+BOOL WINAPI SetBitmapDimensionEx(HBITMAP,int,int,LPSIZE);
+COLORREF WINAPI SetBkColor(HDC,COLORREF);
+int WINAPI SetBkMode(HDC,int);
+UINT WINAPI SetBoundsRect(HDC,LPCRECT,UINT);
+BOOL WINAPI SetBrushOrgEx(HDC,int,int,LPPOINT);
+BOOL WINAPI SetColorAdjustment(HDC,const COLORADJUSTMENT*);
+BOOL WINAPI SetColorSpace(HDC,HCOLORSPACE);
+BOOL WINAPI SetDeviceGammaRamp(HDC,PVOID);
+UINT WINAPI SetDIBColorTable(HDC,UINT,UINT,const RGBQUAD*);
+int WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,PCVOID,const BITMAPINFO*,UINT);
+int WINAPI SetDIBitsToDevice(HDC,int,int,DWORD,DWORD,int,int,UINT,UINT,PCVOID,const BITMAPINFO*,UINT);
+HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE*);
+int WINAPI SetGraphicsMode(HDC,int);
+int WINAPI SetICMMode(HDC,int);
+BOOL WINAPI SetICMProfileA(HDC,LPSTR);
+BOOL WINAPI SetICMProfileW(HDC,LPWSTR);
+int WINAPI SetMapMode(HDC,int);
+DWORD WINAPI SetMapperFlags(HDC,DWORD);
+HMETAFILE WINAPI SetMetaFileBitsEx(UINT,const BYTE *);
+int WINAPI SetMetaRgn(HDC);
+BOOL WINAPI SetMiterLimit(HDC,FLOAT,PFLOAT);
+UINT WINAPI SetPaletteEntries(HPALETTE,UINT,UINT,const PALETTEENTRY*);
+COLORREF WINAPI SetPixel(HDC,int,int,COLORREF);
+BOOL WINAPI SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR*);
+BOOL WINAPI SetPixelV(HDC,int,int,COLORREF);
+int WINAPI SetPolyFillMode(HDC,int);
+BOOL WINAPI SetRectRgn(HRGN,int,int,int,int);
+int WINAPI SetROP2(HDC,int);
+int WINAPI SetStretchBltMode(HDC,int);
+UINT WINAPI SetSystemPaletteUse(HDC,UINT);
+UINT WINAPI SetTextAlign(HDC,UINT);
+int WINAPI SetTextCharacterExtra(HDC,int);
+COLORREF WINAPI SetTextColor(HDC,COLORREF);
+BOOL WINAPI SetTextJustification(HDC,int,int);
+BOOL WINAPI SetViewportExtEx(HDC,int,int,LPSIZE);
+BOOL WINAPI SetViewportOrgEx(HDC,int,int,LPPOINT);
+BOOL WINAPI SetWindowExtEx(HDC,int,int,LPSIZE);
+BOOL WINAPI SetWindowOrgEx(HDC,int,int,LPPOINT);
+HENHMETAFILE WINAPI SetWinMetaFileBits(UINT,const BYTE*,HDC,const METAFILEPICT*);
+BOOL WINAPI SetWorldTransform(HDC,const XFORM *);
+int WINAPI StartDocA(HDC,const DOCINFOA*);
+int WINAPI StartDocW(HDC,const DOCINFOW*);
+int WINAPI StartPage(HDC);
+BOOL WINAPI StretchBlt(HDC,int,int,int,int,HDC,int,int,int,int,DWORD);
+int WINAPI StretchDIBits(HDC,int,int,int,int,int,int,int,int,const VOID *,const BITMAPINFO *,UINT,DWORD);
+BOOL WINAPI StrokeAndFillPath(HDC);
+BOOL WINAPI StrokePath(HDC);
+BOOL WINAPI SwapBuffers(HDC);
+BOOL WINAPI TextOutA(HDC,int,int,LPCSTR,int);
+BOOL WINAPI TextOutW(HDC,int,int,LPCWSTR,int);
+BOOL WINAPI TranslateCharsetInfo(PDWORD,LPCHARSETINFO,DWORD);
+BOOL WINAPI UnrealizeObject(HGDIOBJ);
+BOOL WINAPI UpdateColors(HDC);
+BOOL WINAPI UpdateICMRegKeyA(DWORD,DWORD,LPSTR,UINT);
+BOOL WINAPI UpdateICMRegKeyW(DWORD,DWORD,LPWSTR,UINT);
+BOOL WINAPI WidenPath(HDC);
+BOOL WINAPI wglCopyContext(HGLRC,HGLRC,UINT);
+HGLRC WINAPI wglCreateContext(HDC);
+HGLRC WINAPI wglCreateLayerContext(HDC,int);
+BOOL WINAPI wglDeleteContext(HGLRC);
+BOOL WINAPI wglDescribeLayerPlane(HDC,int,int,UINT,LPLAYERPLANEDESCRIPTOR);
+HGLRC WINAPI wglGetCurrentContext(void);
+HDC WINAPI wglGetCurrentDC(void);
+int WINAPI wglGetLayerPaletteEntries(HDC,int,int,int,COLORREF*);
+PROC WINAPI wglGetProcAddress(LPCSTR);
+BOOL WINAPI wglMakeCurrent(HDC,HGLRC);
+BOOL WINAPI wglRealizeLayerPalette(HDC,int,BOOL);
+int WINAPI wglSetLayerPaletteEntries(HDC,int,int,int,const COLORREF*);
+BOOL WINAPI wglShareLists(HGLRC,HGLRC);
+BOOL WINAPI wglSwapLayerBuffers(HDC,UINT);
+BOOL WINAPI wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD);
+BOOL WINAPI wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD);
+BOOL WINAPI wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
+BOOL WINAPI wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
+
+#ifdef UNICODE
+typedef WCHAR BCHAR;
+typedef DOCINFOW DOCINFO, *LPDOCINFO;
+typedef LOGFONTW LOGFONT,*PLOGFONT,*LPLOGFONT;
+typedef TEXTMETRICW TEXTMETRIC,*PTEXTMETRIC,*LPTEXTMETRIC;
+#define ICMENUMPROC ICMENUMPROCW
+#define FONTENUMPROC FONTENUMPROCW
+typedef DEVMODEW DEVMODE,*PDEVMODE,*LPDEVMODE;
+typedef EXTLOGFONTW EXTLOGFONT,*PEXTLOGFONT,*LPEXTLOGFONT;
+typedef GCP_RESULTSW GCP_RESULTS,*LPGCP_RESULTS;
+typedef OUTLINETEXTMETRICW OUTLINETEXTMETRIC,*POUTLINETEXTMETRIC,*LPOUTLINETEXTMETRIC;
+typedef POLYTEXTW POLYTEXT;
+typedef LOGCOLORSPACEW LOGCOLORSPACE,*LPLOGCOLORSPACE;
+typedef NEWTEXTMETRICW NEWTEXTMETRIC,*PNEWTEXTMETRIC,*LPNEWTEXTMETRIC;
+typedef NEWTEXTMETRICEXW NEWTEXTMETRICEX;
+typedef ENUMLOGFONTW ENUMLOGFONT,*LPENUMLOGFONT;
+typedef ENUMLOGFONTEXW ENUMLOGFONTEX,*LPENUMLOGFONTEX;
+#define AddFontResource AddFontResourceW
+#define CopyEnhMetaFile CopyEnhMetaFileW
+#define CopyMetaFile CopyMetaFileW
+#define CreateDC CreateDCW
+#define CreateEnhMetaFile CreateEnhMetaFileW
+#define CreateFont CreateFontW
+#define CreateFontIndirect CreateFontIndirectW
+#define CreateIC CreateICW
+#define CreateMetaFile CreateMetaFileW
+#define CreateScalableFontResource CreateScalableFontResourceW
+#define DeviceCapabilities DeviceCapabilitiesW
+#define EnumFontFamilies EnumFontFamiliesW
+#define EnumFontFamiliesEx EnumFontFamiliesExW
+#define EnumFonts EnumFontsW
+#define EnumICMProfiles EnumICMProfilesW
+#define ExtTextOut ExtTextOutW
+#define GetCharABCWidthsFloat GetCharABCWidthsFloatW
+#define GetCharABCWidths GetCharABCWidthsW
+#define GetCharacterPlacement GetCharacterPlacementW
+#define GetCharWidth32 GetCharWidth32W
+#define GetCharWidthFloat GetCharWidthFloatW
+#define GetCharWidth GetCharWidthW
+#define GetEnhMetaFile GetEnhMetaFileW
+#define GetEnhMetaFileDescription GetEnhMetaFileDescriptionW
+#define GetGlyphOutline GetGlyphOutlineW
+#define GetICMProfile GetICMProfileW
+#define GetKerningPairs GetKerningPairsW
+#define GetLogColorSpace GetLogColorSpaceW
+#define GetMetaFile GetMetaFileW
+#define GetObject GetObjectW
+#define GetOutlineTextMetrics GetOutlineTextMetricsW
+#define GetTextExtentPoint GetTextExtentPointW
+#define GetTextExtentExPoint GetTextExtentExPointW
+#define GetTextExtentPoint32 GetTextExtentPoint32W
+#define GetTextFace GetTextFaceW
+#define GetTextMetrics GetTextMetricsW
+#define PolyTextOut PolyTextOutW
+#define RemoveFontResource RemoveFontResourceW
+#define ResetDC ResetDCW
+#define SetICMProfile SetICMProfileW
+#define StartDoc StartDocW
+#define TextOut TextOutW
+#define UpdateICMRegKey UpdateICMRegKeyW
+#define wglUseFontBitmaps wglUseFontBitmapsW
+#define wglUseFontOutlines wglUseFontOutlinesW
+#else
+typedef BYTE BCHAR;
+typedef DOCINFOA DOCINFO, *LPDOCINFO;
+typedef LOGFONTA LOGFONT,*PLOGFONT,*LPLOGFONT;
+typedef TEXTMETRICA TEXTMETRIC,*PTEXTMETRIC,*LPTEXTMETRIC;
+#define ICMENUMPROC ICMENUMPROCA
+#define FONTENUMPROC FONTENUMPROCA
+typedef DEVMODEA DEVMODE,*PDEVMODE,*LPDEVMODE;
+typedef EXTLOGFONTA EXTLOGFONT,*PEXTLOGFONT,*LPEXTLOGFONT;
+typedef GCP_RESULTSA GCP_RESULTS,*LPGCP_RESULTS;
+typedef OUTLINETEXTMETRICA OUTLINETEXTMETRIC,*POUTLINETEXTMETRIC,*LPOUTLINETEXTMETRIC;
+typedef POLYTEXTA POLYTEXT;
+typedef LOGCOLORSPACEA LOGCOLORSPACE,*LPLOGCOLORSPACE;
+typedef NEWTEXTMETRICA NEWTEXTMETRIC,*PNEWTEXTMETRIC,*LPNEWTEXTMETRIC;
+typedef NEWTEXTMETRICEXA NEWTEXTMETRICEX;
+typedef ENUMLOGFONTA ENUMLOGFONT,*LPENUMLOGFONT;
+typedef ENUMLOGFONTEXA ENUMLOGFONTEX,*LPENUMLOGFONTEX;
+#define AddFontResource AddFontResourceA
+#define CopyEnhMetaFile CopyEnhMetaFileA
+#define CopyMetaFile CopyMetaFileA
+#define CreateDC CreateDCA
+#define CreateEnhMetaFile CreateEnhMetaFileA
+#define CreateFont CreateFontA
+#define CreateFontIndirect CreateFontIndirectA
+#define CreateIC CreateICA
+#define CreateMetaFile CreateMetaFileA
+#define CreateScalableFontResource CreateScalableFontResourceA
+#define DeviceCapabilities DeviceCapabilitiesA
+#define EnumFontFamilies EnumFontFamiliesA
+#define EnumFontFamiliesEx EnumFontFamiliesExA
+#define EnumFonts EnumFontsA
+#define EnumICMProfiles EnumICMProfilesA
+#define ExtTextOut ExtTextOutA
+#define GetCharWidthFloat GetCharWidthFloatA
+#define GetCharWidth GetCharWidthA
+#define GetCharacterPlacement GetCharacterPlacementA
+#define GetCharABCWidths GetCharABCWidthsA
+#define GetCharABCWidthsFloat GetCharABCWidthsFloatA
+#define GetCharWidth32 GetCharWidth32A
+#define GetEnhMetaFile GetEnhMetaFileA
+#define GetEnhMetaFileDescription GetEnhMetaFileDescriptionA
+#define GetGlyphOutline GetGlyphOutlineA
+#define GetICMProfile GetICMProfileA
+#define GetKerningPairs GetKerningPairsA
+#define GetLogColorSpace GetLogColorSpaceA
+#define GetMetaFile GetMetaFileA
+#define GetObject GetObjectA
+#define GetOutlineTextMetrics GetOutlineTextMetricsA
+#define GetTextExtentPoint GetTextExtentPointA
+#define GetTextExtentExPoint GetTextExtentExPointA
+#define GetTextExtentPoint32 GetTextExtentPoint32A
+#define GetTextFace GetTextFaceA
+#define GetTextMetrics GetTextMetricsA
+#define PolyTextOut PolyTextOutA
+#define RemoveFontResource RemoveFontResourceA
+#define ResetDC ResetDCA
+#define SetICMProfile SetICMProfileA
+#define StartDoc StartDocA
+#define TextOut TextOutA
+#define UpdateICMRegKey UpdateICMRegKeyA
+#define wglUseFontBitmaps wglUseFontBitmapsA
+#define wglUseFontOutlines wglUseFontOutlinesA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/Win32/bin/tcc/include/winapi/winnetwk.h b/Win32/bin/tcc/include/winapi/winnetwk.h
new file mode 100644
index 0000000..fd25ba3
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/winnetwk.h
@@ -0,0 +1,346 @@
+#ifndef _WINNETWK_H
+#define _WINNETWK_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WNNC_NET_MSNET      0x00010000
+#define WNNC_NET_LANMAN     0x00020000
+#define WNNC_NET_NETWARE    0x00030000
+#define WNNC_NET_VINES      0x00040000
+#define WNNC_NET_10NET      0x00050000
+#define WNNC_NET_LOCUS      0x00060000
+#define WNNC_NET_SUN_PC_NFS 0x00070000
+#define WNNC_NET_LANSTEP    0x00080000
+#define WNNC_NET_9TILES     0x00090000
+#define WNNC_NET_LANTASTIC  0x000A0000
+#define WNNC_NET_AS400      0x000B0000
+#define WNNC_NET_FTP_NFS    0x000C0000
+#define WNNC_NET_PATHWORKS  0x000D0000
+#define WNNC_NET_LIFENET    0x000E0000
+#define WNNC_NET_POWERLAN   0x000F0000
+#define WNNC_NET_BWNFS      0x00100000
+#define WNNC_NET_COGENT     0x00110000
+#define WNNC_NET_FARALLON	0x00120000
+#define WNNC_NET_APPLETALK	0x00130000
+#define WNNC_NET_INTERGRAPH	0x00140000
+#define WNNC_NET_SYMFONET   0x00150000
+#define WNNC_NET_CLEARCASE  0x00160000
+#define WNNC_NET_FRONTIER   0x00170000
+#define WNNC_NET_BMC        0x00180000
+#define WNNC_NET_DCE        0x00190000
+#define WNNC_NET_AVID       0x001A0000
+#define WNNC_NET_DOCUSPACE  0x001B0000
+#define WNNC_NET_MANGOSOFT  0x001C0000
+#define WNNC_NET_SERNET     0x001D0000
+#define WNNC_NET_DECORB     0x00200000
+#define WNNC_NET_PROTSTOR   0x00210000
+#define WNNC_NET_FJ_REDIR   0x00220000
+#define WNNC_NET_DISTINCT   0x00230000
+#define WNNC_NET_TWINS      0x00240000
+#define WNNC_NET_RDR2SAMPLE 0x00250000
+#define WNNC_NET_CSC        0x00260000
+#define WNNC_NET_3IN1       0x00270000
+#define WNNC_NET_EXTENDNET  0x00290000
+#define WNNC_NET_OBJECT_DIRE 0x00300000
+#define WNNC_NET_MASFAX     0x00310000
+#define WNNC_NET_HOB_NFS    0x00320000
+#define WNNC_NET_SHIVA      0x00330000
+#define WNNC_NET_IBMAL      0x00340000
+#define WNNC_CRED_MANAGER   0xFFFF0000
+
+#define RESOURCE_CONNECTED 1
+#define RESOURCE_GLOBALNET 2
+#define RESOURCE_REMEMBERED 3
+#define RESOURCE_RECENT 4
+#define RESOURCE_CONTEXT 5
+#define RESOURCETYPE_ANY 0
+#define RESOURCETYPE_DISK 1
+#define RESOURCETYPE_PRINT 2
+#define RESOURCETYPE_RESERVED 8
+#define RESOURCETYPE_UNKNOWN        0xFFFFFFFF
+#define RESOURCEUSAGE_CONNECTABLE   0x00000001
+#define RESOURCEUSAGE_CONTAINER     0x00000002
+#define RESOURCEUSAGE_NOLOCALDEVICE 0x00000004
+#define RESOURCEUSAGE_SIBLING       0x00000008
+#define RESOURCEUSAGE_ATTACHED      0x00000010
+#define RESOURCEUSAGE_ALL           (RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED)
+#define RESOURCEUSAGE_RESERVED      0x80000000
+#define RESOURCEDISPLAYTYPE_GENERIC 0
+#define RESOURCEDISPLAYTYPE_DOMAIN 1
+#define RESOURCEDISPLAYTYPE_SERVER 2
+#define RESOURCEDISPLAYTYPE_SHARE 3
+#define RESOURCEDISPLAYTYPE_FILE 4
+#define RESOURCEDISPLAYTYPE_GROUP 5
+#define RESOURCEDISPLAYTYPE_NETWORK 6
+#define RESOURCEDISPLAYTYPE_ROOT 7
+#define RESOURCEDISPLAYTYPE_SHAREADMIN 8
+#define RESOURCEDISPLAYTYPE_DIRECTORY 9
+#define RESOURCEDISPLAYTYPE_TREE 10
+#define NETPROPERTY_PERSISTENT 1
+#define CONNECT_UPDATE_PROFILE 1
+#define CONNECT_UPDATE_RECENT 2
+#define CONNECT_TEMPORARY 4
+#define CONNECT_INTERACTIVE 8
+#define CONNECT_PROMPT 16
+#define CONNECT_NEED_DRIVE 32
+#define CONNECT_REFCOUNT 64
+#define CONNECT_REDIRECT 128
+#define CONNECT_LOCALDRIVE 256
+#define CONNECT_CURRENT_MEDIA 512
+#define CONNDLG_RO_PATH 1
+#define CONNDLG_CONN_POINT 2
+#define CONNDLG_USE_MRU 4
+#define CONNDLG_HIDE_BOX 8
+#define CONNDLG_PERSIST 16
+#define CONNDLG_NOT_PERSIST 32
+#define DISC_UPDATE_PROFILE 1
+#define DISC_NO_FORCE 64
+#define WNFMT_MULTILINE 1
+#define WNFMT_ABBREVIATED 2
+#define WNFMT_INENUM 16
+#define WNFMT_CONNECTION 32
+#define WN_SUCCESS NO_ERROR
+#define WN_NO_ERROR NO_ERROR
+#define WN_NOT_SUPPORTED ERROR_NOT_SUPPORTED
+#define WN_CANCEL ERROR_CANCELLED
+#define WN_RETRY ERROR_RETRY
+#define WN_NET_ERROR ERROR_UNEXP_NET_ERR
+#define WN_MORE_DATA ERROR_MORE_DATA
+#define WN_BAD_POINTER ERROR_INVALID_ADDRESS
+#define WN_BAD_VALUE ERROR_INVALID_PARAMETER
+#define WN_BAD_USER ERROR_BAD_USERNAME
+#define WN_BAD_PASSWORD ERROR_INVALID_PASSWORD
+#define WN_ACCESS_DENIED ERROR_ACCESS_DENIED
+#define WN_FUNCTION_BUSY ERROR_BUSY
+#define WN_WINDOWS_ERROR ERROR_UNEXP_NET_ERR
+#define WN_OUT_OF_MEMORY ERROR_NOT_ENOUGH_MEMORY
+#define WN_NO_NETWORK ERROR_NO_NETWORK
+#define WN_EXTENDED_ERROR ERROR_EXTENDED_ERROR
+#define WN_BAD_LEVEL ERROR_INVALID_LEVEL
+#define WN_BAD_HANDLE ERROR_INVALID_HANDLE
+#define WN_NOT_INITIALIZING ERROR_ALREADY_INITIALIZED
+#define WN_NO_MORE_DEVICES ERROR_NO_MORE_DEVICES
+#define WN_NOT_CONNECTED ERROR_NOT_CONNECTED
+#define WN_OPEN_FILES ERROR_OPEN_FILES
+#define WN_DEVICE_IN_USE ERROR_DEVICE_IN_USE
+#define WN_BAD_NETNAME ERROR_BAD_NET_NAME
+#define WN_BAD_LOCALNAME ERROR_BAD_DEVICE
+#define WN_ALREADY_CONNECTED ERROR_ALREADY_ASSIGNED
+#define WN_DEVICE_ERROR ERROR_GEN_FAILURE
+#define WN_CONNECTION_CLOSED ERROR_CONNECTION_UNAVAIL
+#define WN_NO_NET_OR_BAD_PATH ERROR_NO_NET_OR_BAD_PATH
+#define WN_BAD_PROVIDER ERROR_BAD_PROVIDER
+#define WN_CANNOT_OPEN_PROFILE ERROR_CANNOT_OPEN_PROFILE
+#define WN_BAD_PROFILE ERROR_BAD_PROFILE
+#define WN_BAD_DEV_TYPE ERROR_BAD_DEV_TYPE
+#define WN_DEVICE_ALREADY_REMEMBERED ERROR_DEVICE_ALREADY_REMEMBERED
+#define WN_NO_MORE_ENTRIES ERROR_NO_MORE_ITEMS
+#define WN_NOT_CONTAINER ERROR_NOT_CONTAINER
+#define WN_NOT_AUTHENTICATED ERROR_NOT_AUTHENTICATED
+#define WN_NOT_LOGGED_ON ERROR_NOT_LOGGED_ON
+#define WN_NOT_VALIDATED ERROR_NO_LOGON_SERVERS
+#define UNIVERSAL_NAME_INFO_LEVEL 1
+#define REMOTE_NAME_INFO_LEVEL 2
+#define NETINFO_DLL16 1
+#define NETINFO_DISKRED 4
+#define NETINFO_PRINTERRED 8
+#define RP_LOGON 1
+#define RP_INIFILE 2
+#define PP_DISPLAYERRORS 1
+#define WNCON_FORNETCARD 1
+#define WNCON_NOTROUTED 2
+#define WNCON_SLOWLINK 4
+#define WNCON_DYNAMIC 8
+
+#ifndef RC_INVOKED
+typedef struct _NETRESOURCEA {
+	DWORD dwScope;
+	DWORD dwType;
+	DWORD dwDisplayType;
+	DWORD dwUsage;
+	LPSTR lpLocalName;
+	LPSTR lpRemoteName;
+	LPSTR lpComment ;
+	LPSTR lpProvider;
+}NETRESOURCEA,*LPNETRESOURCEA;
+typedef struct _NETRESOURCEW {
+	DWORD dwScope;
+	DWORD dwType;
+	DWORD dwDisplayType;
+	DWORD dwUsage;
+	LPWSTR lpLocalName;
+	LPWSTR lpRemoteName;
+	LPWSTR lpComment ;
+	LPWSTR lpProvider;
+}NETRESOURCEW,*LPNETRESOURCEW;
+typedef struct _CONNECTDLGSTRUCTA{
+	DWORD cbStructure;
+	HWND hwndOwner;
+	LPNETRESOURCEA lpConnRes;
+	DWORD dwFlags;
+	DWORD dwDevNum;
+} CONNECTDLGSTRUCTA,*LPCONNECTDLGSTRUCTA;
+typedef struct _CONNECTDLGSTRUCTW{
+	DWORD cbStructure;
+	HWND hwndOwner;
+	LPNETRESOURCEW lpConnRes;
+	DWORD dwFlags;
+	DWORD dwDevNum;
+} CONNECTDLGSTRUCTW,*LPCONNECTDLGSTRUCTW;
+typedef struct _DISCDLGSTRUCTA{
+	DWORD cbStructure;
+	HWND hwndOwner;
+	LPSTR lpLocalName;
+	LPSTR lpRemoteName;
+	DWORD dwFlags;
+} DISCDLGSTRUCTA,*LPDISCDLGSTRUCTA;
+typedef struct _DISCDLGSTRUCTW{
+	DWORD cbStructure;
+	HWND hwndOwner;
+	LPWSTR lpLocalName;
+	LPWSTR lpRemoteName;
+	DWORD dwFlags;
+} DISCDLGSTRUCTW,*LPDISCDLGSTRUCTW;
+typedef struct _UNIVERSAL_NAME_INFOA { LPSTR lpUniversalName; }UNIVERSAL_NAME_INFOA,*LPUNIVERSAL_NAME_INFOA;
+typedef struct _UNIVERSAL_NAME_INFOW { LPWSTR lpUniversalName; }UNIVERSAL_NAME_INFOW,*LPUNIVERSAL_NAME_INFOW;
+typedef struct _REMOTE_NAME_INFOA {
+	LPSTR lpUniversalName;
+	LPSTR lpConnectionName;
+	LPSTR lpRemainingPath;
+}REMOTE_NAME_INFOA,*LPREMOTE_NAME_INFOA;
+typedef struct _REMOTE_NAME_INFOW {
+	LPWSTR lpUniversalName;
+	LPWSTR lpConnectionName;
+	LPWSTR lpRemainingPath;
+}REMOTE_NAME_INFOW,*LPREMOTE_NAME_INFOW;
+typedef struct _NETINFOSTRUCT{
+	DWORD cbStructure;
+	DWORD dwProviderVersion;
+	DWORD dwStatus;
+	DWORD dwCharacteristics;
+	DWORD dwHandle;
+	WORD wNetType;
+	DWORD dwPrinters;
+	DWORD dwDrives;
+} NETINFOSTRUCT,*LPNETINFOSTRUCT;
+typedef UINT(PASCAL *PFNGETPROFILEPATHA)(LPCSTR,LPSTR,UINT);
+typedef UINT(PASCAL *PFNGETPROFILEPATHW)(LPCWSTR,LPWSTR,UINT);
+typedef UINT(PASCAL *PFNRECONCILEPROFILEA)(LPCSTR,LPCSTR,DWORD);
+typedef UINT(PASCAL *PFNRECONCILEPROFILEW)(LPCWSTR,LPCWSTR,DWORD);
+typedef BOOL(PASCAL *PFNPROCESSPOLICIESA)(HWND,LPCSTR,LPCSTR,LPCSTR,DWORD);
+typedef BOOL(PASCAL *PFNPROCESSPOLICIESW)(HWND,LPCWSTR,LPCWSTR,LPCWSTR,DWORD);
+typedef struct _NETCONNECTINFOSTRUCT{
+	DWORD cbStructure;
+	DWORD dwFlags;
+	DWORD dwSpeed;
+	DWORD dwDelay;
+	DWORD dwOptDataSize;
+} NETCONNECTINFOSTRUCT,*LPNETCONNECTINFOSTRUCT;
+
+DWORD APIENTRY WNetAddConnectionA(LPCSTR,LPCSTR,LPCSTR);
+DWORD APIENTRY WNetAddConnectionW(LPCWSTR,LPCWSTR,LPCWSTR);
+DWORD APIENTRY WNetAddConnection2A(LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD);
+DWORD APIENTRY WNetAddConnection2W(LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD);
+DWORD APIENTRY WNetAddConnection3A(HWND,LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD);
+DWORD APIENTRY WNetAddConnection3W(HWND,LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD);
+DWORD APIENTRY WNetCancelConnectionA(LPCSTR,BOOL);
+DWORD APIENTRY WNetCancelConnectionW(LPCWSTR,BOOL);
+DWORD APIENTRY WNetCancelConnection2A(LPCSTR,DWORD,BOOL);
+DWORD APIENTRY WNetCancelConnection2W(LPCWSTR,DWORD,BOOL);
+DWORD APIENTRY WNetGetConnectionA(LPCSTR,LPSTR,PDWORD);
+DWORD APIENTRY WNetGetConnectionW(LPCWSTR,LPWSTR,PDWORD);
+DWORD APIENTRY WNetUseConnectionA(HWND,LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD,LPSTR,PDWORD,PDWORD);
+DWORD APIENTRY WNetUseConnectionW(HWND,LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD,LPWSTR,PDWORD,PDWORD);
+DWORD APIENTRY WNetSetConnectionA(LPCSTR,DWORD,PVOID);
+DWORD APIENTRY WNetSetConnectionW(LPCWSTR,DWORD,PVOID);
+DWORD APIENTRY WNetConnectionDialog(HWND,DWORD);
+DWORD APIENTRY WNetDisconnectDialog(HWND,DWORD);
+DWORD APIENTRY WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA);
+DWORD APIENTRY WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW);
+DWORD APIENTRY WNetDisconnectDialog1A(LPDISCDLGSTRUCTA);
+DWORD APIENTRY WNetDisconnectDialog1W(LPDISCDLGSTRUCTW);
+DWORD APIENTRY WNetOpenEnumA(DWORD,DWORD,DWORD,LPNETRESOURCEA,LPHANDLE);
+DWORD APIENTRY WNetOpenEnumW(DWORD,DWORD,DWORD,LPNETRESOURCEW,LPHANDLE);
+DWORD APIENTRY WNetEnumResourceA(HANDLE,PDWORD,PVOID,PDWORD);
+DWORD APIENTRY WNetEnumResourceW(HANDLE,PDWORD,PVOID,PDWORD);
+DWORD APIENTRY WNetCloseEnum(HANDLE);
+DWORD APIENTRY WNetGetUniversalNameA(LPCSTR,DWORD,PVOID,PDWORD);
+DWORD APIENTRY WNetGetUniversalNameW(LPCWSTR,DWORD,PVOID,PDWORD);
+DWORD APIENTRY WNetGetUserA(LPCSTR,LPSTR,PDWORD);
+DWORD APIENTRY WNetGetUserW(LPCWSTR,LPWSTR,PDWORD);
+DWORD APIENTRY WNetGetProviderNameA(DWORD,LPSTR,PDWORD);
+DWORD APIENTRY WNetGetProviderNameW(DWORD,LPWSTR,PDWORD);
+DWORD APIENTRY WNetGetNetworkInformationA(LPCSTR,LPNETINFOSTRUCT);
+DWORD APIENTRY WNetGetNetworkInformationW(LPCWSTR,LPNETINFOSTRUCT);
+DWORD APIENTRY WNetGetResourceInformationA(LPNETRESOURCEA,LPVOID,LPDWORD,LPCSTR*);
+DWORD APIENTRY WNetGetResourceInformationW(LPNETRESOURCEA,LPVOID,LPDWORD,LPCWSTR*);
+DWORD APIENTRY WNetGetLastErrorA(PDWORD,LPSTR,DWORD,LPSTR,DWORD);
+DWORD APIENTRY WNetGetLastErrorW(PDWORD,LPWSTR,DWORD,LPWSTR,DWORD);
+DWORD APIENTRY MultinetGetConnectionPerformanceA(LPNETRESOURCEA,LPNETCONNECTINFOSTRUCT);
+DWORD APIENTRY MultinetGetConnectionPerformanceW(LPNETRESOURCEW,LPNETCONNECTINFOSTRUCT);
+#ifdef UNICODE
+#define PFNPROCESSPOLICIES PFNPROCESSPOLICIESW
+#define PFNRECONCILEPROFILE PFNRECONCILEPROFILEW
+#define PFNGETPROFILEPATH PFNGETPROFILEPATHW
+typedef NETRESOURCEW NETRESOURCE,*LPNETRESOURCE;
+typedef CONNECTDLGSTRUCTW CONNECTDLGSTRUCT,*LPCONNECTDLGSTRUCT;
+typedef DISCDLGSTRUCTW DISCDLGSTRUCT,*LPDISCDLGSTRUCT;
+typedef REMOTE_NAME_INFOW REMOTE_NAME_INFO,*LPREMOTE_NAME_INFO;
+typedef UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO,*LPUNIVERSAL_NAME_INFO;
+#define WNetEnumResource WNetEnumResourceW
+#define WNetOpenEnum WNetOpenEnumW
+#define WNetGetResourceInformation WNetGetResourceInformationW
+#define WNetGetUniversalName WNetGetUniversalNameW
+#define WNetSetConnection WNetSetConnectionW
+#define WNetUseConnection WNetUseConnectionW
+#define WNetGetConnection WNetGetConnectionW
+#define WNetCancelConnection2 WNetCancelConnection2W
+#define WNetCancelConnection WNetCancelConnectionW
+#define WNetAddConnection3 WNetAddConnection3W
+#define WNetAddConnection2 WNetAddConnection2W
+#define WNetAddConnection WNetAddConnectionW
+#define WNetConnectionDialog1 WNetConnectionDialog1W
+#define WNetDisconnectDialog1 WNetDisconnectDialog1W
+#define WNetGetNetworkInformation WNetGetNetworkInformationW
+#define WNetGetProviderName WNetGetProviderNameW
+#define WNetGetUser WNetGetUserW
+#define MultinetGetConnectionPerformance MultinetGetConnectionPerformanceW
+#define WNetGetLastError WNetGetLastErrorW
+#else
+#define PFNGETPROFILEPATH PFNGETPROFILEPATHA
+#define PFNRECONCILEPROFILE PFNRECONCILEPROFILEA
+#define PFNPROCESSPOLICIES PFNPROCESSPOLICIESA
+typedef NETRESOURCEA NETRESOURCE,*LPNETRESOURCE;
+typedef CONNECTDLGSTRUCTA CONNECTDLGSTRUCT,*LPCONNECTDLGSTRUCT;
+typedef DISCDLGSTRUCTA DISCDLGSTRUCT,*LPDISCDLGSTRUCT;
+typedef UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO,*LPUNIVERSAL_NAME_INFO;
+typedef REMOTE_NAME_INFOA REMOTE_NAME_INFO,*LPREMOTE_NAME_INFO;
+#define WNetOpenEnum WNetOpenEnumA
+#define WNetEnumResource WNetEnumResourceA
+#define WNetGetResourceInformation WNetGetResourceInformationA
+#define WNetGetUniversalName WNetGetUniversalNameA
+#define WNetConnectionDialog1 WNetConnectionDialog1A
+#define WNetDisconnectDialog1 WNetDisconnectDialog1A
+#define WNetAddConnection2 WNetAddConnection2A
+#define WNetAddConnection3 WNetAddConnection3A
+#define WNetCancelConnection WNetCancelConnectionA
+#define WNetCancelConnection2 WNetCancelConnection2A
+#define WNetGetConnection WNetGetConnectionA
+#define WNetUseConnection WNetUseConnectionA
+#define WNetSetConnection WNetSetConnectionA
+#define WNetAddConnection WNetAddConnectionA
+#define WNetGetUser WNetGetUserA
+#define WNetGetProviderName WNetGetProviderNameA
+#define WNetGetNetworkInformation WNetGetNetworkInformationA
+#define WNetGetLastError WNetGetLastErrorA
+#define MultinetGetConnectionPerformance MultinetGetConnectionPerformanceA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/Win32/bin/tcc/include/winapi/winnls.h b/Win32/bin/tcc/include/winapi/winnls.h
new file mode 100644
index 0000000..e82fceb
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/winnls.h
@@ -0,0 +1,651 @@
+#ifndef _WINNLS_H
+#define _WINNLS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAX_LEADBYTES 	12
+#define MAX_DEFAULTCHAR	2
+#define LOCALE_NOUSEROVERRIDE	0x80000000
+#define LOCALE_USE_CP_ACP	0x40000000
+#define LOCALE_ILANGUAGE	1
+#define LOCALE_SLANGUAGE	2
+#define LOCALE_SENGLANGUAGE	0x1001
+#define LOCALE_SABBREVLANGNAME	3
+#define LOCALE_SNATIVELANGNAME	4
+#define LOCALE_ICOUNTRY	5
+#define LOCALE_SCOUNTRY	6
+#define LOCALE_SENGCOUNTRY	0x1002
+#define LOCALE_SABBREVCTRYNAME	7
+#define LOCALE_SNATIVECTRYNAME	8
+#define LOCALE_IDEFAULTLANGUAGE	9
+#define LOCALE_IDEFAULTCOUNTRY	10
+#define LOCALE_IDEFAULTCODEPAGE	11
+#define LOCALE_IDEFAULTANSICODEPAGE 0x1004
+#define LOCALE_SLIST	12
+#define LOCALE_IMEASURE	13
+#define LOCALE_SDECIMAL	14
+#define LOCALE_STHOUSAND	15
+#define LOCALE_SGROUPING	16
+#define LOCALE_IDIGITS	17
+#define LOCALE_ILZERO	18
+#define LOCALE_INEGNUMBER	0x1010
+#define LOCALE_SNATIVEDIGITS	19
+#define LOCALE_SCURRENCY	20
+#define LOCALE_SINTLSYMBOL	21
+#define LOCALE_SMONDECIMALSEP	22
+#define LOCALE_SMONTHOUSANDSEP	23
+#define LOCALE_SMONGROUPING	24
+#define LOCALE_ICURRDIGITS	25
+#define LOCALE_IINTLCURRDIGITS	26
+#define LOCALE_ICURRENCY	27
+#define LOCALE_INEGCURR	28
+#define LOCALE_SDATE	29
+#define LOCALE_STIME	30
+#define LOCALE_SSHORTDATE	31
+#define LOCALE_SLONGDATE	32
+#define LOCALE_STIMEFORMAT	0x1003
+#define LOCALE_IDATE	33
+#define LOCALE_ILDATE	34
+#define LOCALE_ITIME	35
+#define LOCALE_ITIMEMARKPOSN	0x1005
+#define LOCALE_ICENTURY	36
+#define LOCALE_ITLZERO	37
+#define LOCALE_IDAYLZERO	38
+#define LOCALE_IMONLZERO	39
+#define LOCALE_S1159	40
+#define LOCALE_S2359	41
+#define LOCALE_ICALENDARTYPE	0x1009
+#define LOCALE_IOPTIONALCALENDAR	0x100B
+#define LOCALE_IFIRSTDAYOFWEEK	0x100C
+#define LOCALE_IFIRSTWEEKOFYEAR	0x100D
+#define LOCALE_SDAYNAME1	42
+#define LOCALE_SDAYNAME2	43
+#define LOCALE_SDAYNAME3	44
+#define LOCALE_SDAYNAME4	45
+#define LOCALE_SDAYNAME5	46
+#define LOCALE_SDAYNAME6	47
+#define LOCALE_SDAYNAME7	48
+#define LOCALE_SABBREVDAYNAME1	49
+#define LOCALE_SABBREVDAYNAME2	50
+#define LOCALE_SABBREVDAYNAME3	51
+#define LOCALE_SABBREVDAYNAME4	52
+#define LOCALE_SABBREVDAYNAME5	53
+#define LOCALE_SABBREVDAYNAME6	54
+#define LOCALE_SABBREVDAYNAME7	55
+#define LOCALE_SMONTHNAME1	56
+#define LOCALE_SMONTHNAME2	57
+#define LOCALE_SMONTHNAME3	58
+#define LOCALE_SMONTHNAME4	59
+#define LOCALE_SMONTHNAME5	60
+#define LOCALE_SMONTHNAME6	61
+#define LOCALE_SMONTHNAME7	62
+#define LOCALE_SMONTHNAME8	63
+#define LOCALE_SMONTHNAME9	64
+#define LOCALE_SMONTHNAME10	65
+#define LOCALE_SMONTHNAME11	66
+#define LOCALE_SMONTHNAME12	67
+#define LOCALE_SMONTHNAME13	0x100E
+#define LOCALE_SABBREVMONTHNAME1	68
+#define LOCALE_SABBREVMONTHNAME2	69
+#define LOCALE_SABBREVMONTHNAME3	70
+#define LOCALE_SABBREVMONTHNAME4	71
+#define LOCALE_SABBREVMONTHNAME5	72
+#define LOCALE_SABBREVMONTHNAME6	73
+#define LOCALE_SABBREVMONTHNAME7	74
+#define LOCALE_SABBREVMONTHNAME8	75
+#define LOCALE_SABBREVMONTHNAME9	76
+#define LOCALE_SABBREVMONTHNAME10	77
+#define LOCALE_SABBREVMONTHNAME11	78
+#define LOCALE_SABBREVMONTHNAME12	79
+#define LOCALE_SABBREVMONTHNAME13	0x100F
+#define LOCALE_SPOSITIVESIGN	80
+#define LOCALE_SNEGATIVESIGN	81
+#define LOCALE_IPOSSIGNPOSN	82
+#define LOCALE_INEGSIGNPOSN	83
+#define LOCALE_IPOSSYMPRECEDES	84
+#define LOCALE_IPOSSEPBYSPACE	85
+#define LOCALE_INEGSYMPRECEDES	86
+#define LOCALE_INEGSEPBYSPACE	87
+#define LOCALE_FONTSIGNATURE	88
+#define LOCALE_SISO639LANGNAME 89
+#define LOCALE_SISO3166CTRYNAME 90
+#define LOCALE_SYSTEM_DEFAULT	0x800
+#define LOCALE_USER_DEFAULT	0x400
+#define NORM_IGNORECASE	1
+#define NORM_IGNOREKANATYPE	65536
+#define NORM_IGNORENONSPACE	2
+#define NORM_IGNORESYMBOLS	4
+#define NORM_IGNOREWIDTH	131072
+#define SORT_STRINGSORT	4096
+#define LCMAP_LOWERCASE 0x00000100
+#define LCMAP_UPPERCASE 0x00000200
+#define LCMAP_SORTKEY 0x00000400
+#define LCMAP_BYTEREV 0x00000800
+#define LCMAP_HIRAGANA 0x00100000
+#define LCMAP_KATAKANA 0x00200000
+#define LCMAP_HALFWIDTH 0x00400000
+#define LCMAP_FULLWIDTH 0x00800000
+#define LCMAP_LINGUISTIC_CASING 0x01000000
+#define LCMAP_SIMPLIFIED_CHINESE 0x02000000
+#define LCMAP_TRADITIONAL_CHINESE 0x04000000
+#define ENUM_ALL_CALENDARS (-1)
+#define DATE_SHORTDATE 1
+#define DATE_LONGDATE 2
+#define DATE_USE_ALT_CALENDAR 4
+#define CP_INSTALLED 1
+#define CP_SUPPORTED 2
+#define LCID_INSTALLED 1
+#define LCID_SUPPORTED 2
+#define LCID_ALTERNATE_SORTS 4
+#define MAP_FOLDCZONE 16
+#define MAP_FOLDDIGITS 128
+#define MAP_PRECOMPOSED 32
+#define MAP_COMPOSITE 64
+#define CP_ACP 0
+#define CP_OEMCP 1
+#define CP_MACCP 2
+#define CP_THREAD_ACP 3
+#define CP_SYMBOL 42
+#define CP_UTF7 65000
+#define CP_UTF8 65001
+#define CT_CTYPE1 1
+#define CT_CTYPE2 2
+#define CT_CTYPE3 4
+#define C1_UPPER 1
+#define C1_LOWER 2
+#define C1_DIGIT 4
+#define C1_SPACE 8
+#define C1_PUNCT 16
+#define C1_CNTRL 32
+#define C1_BLANK 64
+#define C1_XDIGIT 128
+#define C1_ALPHA 256
+#define C2_LEFTTORIGHT 1
+#define C2_RIGHTTOLEFT 2
+#define C2_EUROPENUMBER 3
+#define C2_EUROPESEPARATOR 4
+#define C2_EUROPETERMINATOR 5
+#define C2_ARABICNUMBER 6
+#define C2_COMMONSEPARATOR 7
+#define C2_BLOCKSEPARATOR 8
+#define C2_SEGMENTSEPARATOR 9
+#define C2_WHITESPACE 10
+#define C2_OTHERNEUTRAL 11
+#define C2_NOTAPPLICABLE 0
+#define C3_NONSPACING 1
+#define C3_DIACRITIC 2
+#define C3_VOWELMARK 4
+#define C3_SYMBOL 8
+#define C3_KATAKANA 16
+#define C3_HIRAGANA 32
+#define C3_HALFWIDTH 64
+#define C3_FULLWIDTH 128
+#define C3_IDEOGRAPH 256
+#define C3_KASHIDA 512
+#define C3_LEXICAL 1024
+#define C3_ALPHA 32768
+#define C3_NOTAPPLICABLE 0
+#define TIME_NOMINUTESORSECONDS 1
+#define TIME_NOSECONDS 2
+#define TIME_NOTIMEMARKER 4
+#define TIME_FORCE24HOURFORMAT 8
+#define MB_PRECOMPOSED 1
+#define MB_COMPOSITE 2
+#define MB_ERR_INVALID_CHARS 8
+#define MB_USEGLYPHCHARS 4
+#define WC_COMPOSITECHECK 512
+#define WC_DISCARDNS 16
+#define WC_SEPCHARS 32
+#define WC_DEFAULTCHAR 64
+#define CTRY_DEFAULT 0
+#define CTRY_ALBANIA 355
+#define CTRY_ALGERIA 213
+#define CTRY_ARGENTINA 54
+#define CTRY_ARMENIA 374
+#define CTRY_AUSTRALIA 61
+#define CTRY_AUSTRIA 43
+#define CTRY_AZERBAIJAN 994
+#define CTRY_BAHRAIN 973
+#define CTRY_BELARUS 375
+#define CTRY_BELGIUM 32
+#define CTRY_BELIZE 501
+#define CTRY_BOLIVIA 591
+#define CTRY_BRAZIL 55
+#define CTRY_BRUNEI_DARUSSALAM 673
+#define CTRY_BULGARIA 359
+#define CTRY_CANADA 2
+#define CTRY_CARIBBEAN 1
+#define CTRY_CHILE 56
+#define CTRY_COLOMBIA 57
+#define CTRY_COSTA_RICA 506
+#define CTRY_CROATIA 385
+#define CTRY_CZECH 420
+#define CTRY_DENMARK 45
+#define CTRY_DOMINICAN_REPUBLIC 1
+#define CTRY_ECUADOR 593
+#define CTRY_EGYPT 20
+#define CTRY_EL_SALVADOR 503
+#define CTRY_ESTONIA 372
+#define CTRY_FAEROE_ISLANDS 298
+#define CTRY_FINLAND 358
+#define CTRY_FRANCE 33
+#define CTRY_GEORGIA 995
+#define CTRY_GERMANY 49
+#define CTRY_GREECE 30
+#define CTRY_GUATEMALA 502
+#define CTRY_HONDURAS 504
+#define CTRY_HONG_KONG 852
+#define CTRY_HUNGARY 36
+#define CTRY_ICELAND 354
+#define CTRY_INDIA 91
+#define CTRY_INDONESIA 62
+#define CTRY_IRAN 981
+#define CTRY_IRAQ 964
+#define CTRY_IRELAND 353
+#define CTRY_ISRAEL 972
+#define CTRY_ITALY 39
+#define CTRY_JAMAICA 1
+#define CTRY_JAPAN 81
+#define CTRY_JORDAN 962
+#define CTRY_KAZAKSTAN 7
+#define CTRY_KENYA 254
+#define CTRY_KUWAIT 965
+#define CTRY_LATVIA 371
+#define CTRY_LEBANON 961
+#define CTRY_LIBYA 218
+#define CTRY_LIECHTENSTEIN 41
+#define CTRY_LITHUANIA 370
+#define CTRY_LUXEMBOURG 352
+#define CTRY_MACAU 853
+#define CTRY_MACEDONIA 389
+#define CTRY_MALAYSIA 60
+#define CTRY_MEXICO 52
+#define CTRY_MONACO 33
+#define CTRY_MOROCCO 212
+#define CTRY_NETHERLANDS 31
+#define CTRY_NEW_ZEALAND 64
+#define CTRY_NICARAGUA 505
+#define CTRY_NORWAY 47
+#define CTRY_OMAN 968
+#define CTRY_PAKISTAN 92
+#define CTRY_PANAMA 507
+#define CTRY_PARAGUAY 595
+#define CTRY_PERU 51
+#define CTRY_PHILIPPINES 63
+#define CTRY_POLAND 48
+#define CTRY_PORTUGAL 351
+#define CTRY_PRCHINA 86
+#define CTRY_PUERTO_RICO 1
+#define CTRY_QATAR 974
+#define CTRY_ROMANIA 40
+#define CTRY_RUSSIA 7
+#define CTRY_SAUDI_ARABIA 966
+#define CTRY_SERBIA 381
+#define CTRY_SINGAPORE 65
+#define CTRY_SLOVAK 421
+#define CTRY_SLOVENIA 386
+#define CTRY_SOUTH_AFRICA 27
+#define CTRY_SOUTH_KOREA 82
+#define CTRY_SPAIN 34
+#define CTRY_SWEDEN 46
+#define CTRY_SWITZERLAND 41
+#define CTRY_SYRIA 963
+#define CTRY_TAIWAN 886
+#define CTRY_TATARSTAN 7
+#define CTRY_THAILAND 66
+#define CTRY_TRINIDAD_Y_TOBAGO 1
+#define CTRY_TUNISIA 216
+#define CTRY_TURKEY 90
+#define CTRY_UAE 971
+#define CTRY_UKRAINE 380
+#define CTRY_UNITED_KINGDOM 44
+#define CTRY_UNITED_STATES 1
+#define CTRY_URUGUAY 598
+#define CTRY_UZBEKISTAN 7
+#define CTRY_VENEZUELA 58
+#define CTRY_VIET_NAM 84
+#define CTRY_YEMEN 967
+#define CTRY_ZIMBABWE 263
+#define CAL_ICALINTVALUE 1
+#define CAL_SCALNAME 2
+#define CAL_IYEAROFFSETRANGE 3
+#define CAL_SERASTRING 4
+#define CAL_SSHORTDATE 5
+#define CAL_SLONGDATE 6
+#define CAL_SDAYNAME1 7
+#define CAL_SDAYNAME2 8
+#define CAL_SDAYNAME3 9
+#define CAL_SDAYNAME4 10
+#define CAL_SDAYNAME5 11
+#define CAL_SDAYNAME6 12
+#define CAL_SDAYNAME7 13
+#define CAL_SABBREVDAYNAME1 14
+#define CAL_SABBREVDAYNAME2 15
+#define CAL_SABBREVDAYNAME3 16
+#define CAL_SABBREVDAYNAME4 17
+#define CAL_SABBREVDAYNAME5 18
+#define CAL_SABBREVDAYNAME6 19
+#define CAL_SABBREVDAYNAME7 20
+#define CAL_SMONTHNAME1 21
+#define CAL_SMONTHNAME2 22
+#define CAL_SMONTHNAME3 23
+#define CAL_SMONTHNAME4 24
+#define CAL_SMONTHNAME5 25
+#define CAL_SMONTHNAME6 26
+#define CAL_SMONTHNAME7 27
+#define CAL_SMONTHNAME8 28
+#define CAL_SMONTHNAME9 29
+#define CAL_SMONTHNAME10 30
+#define CAL_SMONTHNAME11 31
+#define CAL_SMONTHNAME12 32
+#define CAL_SMONTHNAME13 33
+#define CAL_SABBREVMONTHNAME1 34
+#define CAL_SABBREVMONTHNAME2 35
+#define CAL_SABBREVMONTHNAME3 36
+#define CAL_SABBREVMONTHNAME4 37
+#define CAL_SABBREVMONTHNAME5 38
+#define CAL_SABBREVMONTHNAME6 39
+#define CAL_SABBREVMONTHNAME7 40
+#define CAL_SABBREVMONTHNAME8 41
+#define CAL_SABBREVMONTHNAME9 42
+#define CAL_SABBREVMONTHNAME10 43
+#define CAL_SABBREVMONTHNAME11 44
+#define CAL_SABBREVMONTHNAME12 45
+#define CAL_SABBREVMONTHNAME13 46
+#define CAL_GREGORIAN 1
+#define CAL_GREGORIAN_US 2
+#define CAL_JAPAN 3
+#define CAL_TAIWAN 4
+#define CAL_KOREA 5
+#define CAL_HIJRI 6
+#define CAL_THAI 7
+#define CAL_HEBREW 8
+#define CAL_GREGORIAN_ME_FRENCH 9
+#define CAL_GREGORIAN_ARABIC 10
+#define CAL_GREGORIAN_XLIT_ENGLISH 11
+#define CAL_GREGORIAN_XLIT_FRENCH 12
+#define CSTR_LESS_THAN 1
+#define CSTR_EQUAL 2
+#define CSTR_GREATER_THAN 3
+#define LGRPID_INSTALLED 1
+#define LGRPID_SUPPORTED 2
+#define LGRPID_WESTERN_EUROPE 1
+#define LGRPID_CENTRAL_EUROPE 2
+#define LGRPID_BALTIC 3
+#define LGRPID_GREEK 4
+#define LGRPID_CYRILLIC 5
+#define LGRPID_TURKISH 6
+#define LGRPID_JAPANESE 7
+#define LGRPID_KOREAN 8
+#define LGRPID_TRADITIONAL_CHINESE 9
+#define LGRPID_SIMPLIFIED_CHINESE 10
+#define LGRPID_THAI 11
+#define LGRPID_HEBREW 12
+#define LGRPID_ARABIC 13
+#define LGRPID_VIETNAMESE 14
+#define LGRPID_INDIC 15
+#define LGRPID_GEORGIAN 16
+#define LGRPID_ARMENIAN 17
+
+#if(WINVER >= 0x0500)
+#define LOCALE_SYEARMONTH 0x1006
+#define LOCALE_SENGCURRNAME 0x1007
+#define LOCALE_SNATIVECURRNAME 0x1008
+#define LOCALE_IDEFAULTEBCDICCODEPAGE 0x1012
+#define LOCALE_SSORTNAME 0x1013
+#define LOCALE_IDIGITSUBSTITUTION 0x1014
+#define LOCALE_IPAPERSIZE 0x100A
+#define DATE_YEARMONTH 8
+#define DATE_LTRREADING 16
+#define DATE_RTLREADING 32
+#define MAP_EXPAND_LIGATURES   0x2000
+#define WC_NO_BEST_FIT_CHARS 1024
+#define CAL_SYEARMONTH 47
+#define CAL_ITWODIGITYEARMAX 48
+#define CAL_NOUSEROVERRIDE LOCALE_NOUSEROVERRIDE
+#define CAL_RETURN_NUMBER LOCALE_RETURN_NUMBER
+#define CAL_USE_CP_ACP LOCALE_USE_CP_ACP
+#endif /* WINVER >= 0x0500 */
+#ifndef  _BASETSD_H
+typedef long LONG_PTR;
+#endif 
+
+#ifndef RC_INVOKED
+typedef DWORD LCTYPE;
+typedef DWORD CALTYPE;
+typedef DWORD CALID;
+typedef DWORD LGRPID;
+typedef BOOL (CALLBACK *CALINFO_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *CALINFO_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK* CALINFO_ENUMPROCEXA)(LPSTR, CALID);
+typedef BOOL (CALLBACK* CALINFO_ENUMPROCEXW)(LPWSTR, CALID);
+typedef BOOL (CALLBACK* LANGUAGEGROUP_ENUMPROCA)(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR);
+typedef BOOL (CALLBACK* LANGUAGEGROUP_ENUMPROCW)(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR);
+typedef BOOL (CALLBACK* LANGGROUPLOCALE_ENUMPROCA)(LGRPID, LCID, LPSTR, LONG_PTR);
+typedef BOOL (CALLBACK* LANGGROUPLOCALE_ENUMPROCW)(LGRPID, LCID, LPWSTR, LONG_PTR);
+typedef BOOL (CALLBACK* UILANGUAGE_ENUMPROCW)(LPWSTR, LONG_PTR);
+typedef BOOL (CALLBACK* UILANGUAGE_ENUMPROCA)(LPSTR, LONG_PTR);
+typedef BOOL (CALLBACK *LOCALE_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *LOCALE_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK *CODEPAGE_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *CODEPAGE_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK *DATEFMT_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *DATEFMT_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK* DATEFMT_ENUMPROCEXA)(LPSTR, CALID);
+typedef BOOL (CALLBACK* DATEFMT_ENUMPROCEXW)(LPWSTR, CALID);
+typedef BOOL (CALLBACK *TIMEFMT_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *TIMEFMT_ENUMPROCW)(LPWSTR);
+
+typedef struct _cpinfo {
+	UINT MaxCharSize;
+	BYTE DefaultChar[MAX_DEFAULTCHAR];
+	BYTE LeadByte[MAX_LEADBYTES];
+} CPINFO,*LPCPINFO;
+typedef struct _cpinfoexA {
+    UINT MaxCharSize;
+    BYTE DefaultChar[MAX_DEFAULTCHAR];
+    BYTE LeadByte[MAX_LEADBYTES];
+    WCHAR UnicodeDefaultChar;
+    UINT CodePage;
+    CHAR CodePageName[MAX_PATH];
+} CPINFOEXA, *LPCPINFOEXA;
+typedef struct _cpinfoexW {
+    UINT MaxCharSize;
+    BYTE DefaultChar[MAX_DEFAULTCHAR];
+    BYTE LeadByte[MAX_LEADBYTES];
+    WCHAR UnicodeDefaultChar;
+    UINT CodePage;
+    WCHAR CodePageName[MAX_PATH];
+} CPINFOEXW, *LPCPINFOEXW;
+typedef struct _currencyfmtA {
+	UINT NumDigits;
+	UINT LeadingZero;
+	UINT Grouping;
+	LPSTR lpDecimalSep;
+	LPSTR lpThousandSep;
+	UINT NegativeOrder;
+	UINT PositiveOrder;
+	LPSTR lpCurrencySymbol;
+} CURRENCYFMTA, *LPCURRENCYFMTA;
+typedef struct _currencyfmtW {
+	UINT NumDigits;
+	UINT LeadingZero;
+	UINT Grouping;
+	LPWSTR lpDecimalSep;
+	LPWSTR lpThousandSep;
+	UINT NegativeOrder;
+	UINT PositiveOrder;
+	LPWSTR lpCurrencySymbol;
+} CURRENCYFMTW, *LPCURRENCYFMTW;
+typedef struct _numberfmtA {
+	UINT NumDigits;
+	UINT LeadingZero;
+	UINT Grouping;
+	LPSTR lpDecimalSep;
+	LPSTR lpThousandSep;
+	UINT NegativeOrder;
+} NUMBERFMTA, *LPNUMBERFMTA;
+typedef struct _numberfmtW {
+	UINT NumDigits;
+	UINT LeadingZero;
+	UINT Grouping;
+	LPWSTR lpDecimalSep;
+	LPWSTR lpThousandSep;
+	UINT NegativeOrder;
+} NUMBERFMTW, *LPNUMBERFMTW;
+
+int WINAPI CompareStringA(LCID,DWORD,LPCSTR,int,LPCSTR,int);
+int WINAPI CompareStringW(LCID,DWORD,LPCWSTR,int,LPCWSTR,int);
+LCID WINAPI ConvertDefaultLocale(LCID);
+BOOL WINAPI EnumCalendarInfoA(CALINFO_ENUMPROCA,LCID,CALID,CALTYPE);
+BOOL WINAPI EnumCalendarInfoW(CALINFO_ENUMPROCW,LCID,CALID,CALTYPE);
+BOOL WINAPI EnumDateFormatsA(DATEFMT_ENUMPROCA,LCID,DWORD);
+BOOL WINAPI EnumDateFormatsW(DATEFMT_ENUMPROCW,LCID,DWORD);
+BOOL WINAPI EnumSystemCodePagesA(CODEPAGE_ENUMPROCA,DWORD);
+BOOL WINAPI EnumSystemCodePagesW(CODEPAGE_ENUMPROCW,DWORD);
+BOOL WINAPI EnumSystemLocalesA(LOCALE_ENUMPROCA,DWORD);
+BOOL WINAPI EnumSystemLocalesW(LOCALE_ENUMPROCW,DWORD);
+BOOL WINAPI EnumTimeFormatsA(TIMEFMT_ENUMPROCA,LCID,DWORD);
+BOOL WINAPI EnumTimeFormatsW(TIMEFMT_ENUMPROCW,LCID,DWORD);
+int WINAPI FoldStringA(DWORD,LPCSTR,int,LPSTR,int);
+int WINAPI FoldStringW(DWORD,LPCWSTR,int,LPWSTR,int);
+UINT WINAPI GetACP(void);
+BOOL WINAPI GetCPInfo(UINT,LPCPINFO);
+BOOL WINAPI GetCPInfoExA(UINT,DWORD,LPCPINFOEXA);
+BOOL WINAPI GetCPInfoExW(UINT,DWORD,LPCPINFOEXW);
+int WINAPI GetCurrencyFormatA(LCID,DWORD,LPCSTR,const CURRENCYFMTA*,LPSTR,int);
+int WINAPI GetCurrencyFormatW(LCID,DWORD,LPCWSTR,const CURRENCYFMTW*,LPWSTR,int);
+int WINAPI GetDateFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,int);
+int WINAPI GetDateFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,int);
+int WINAPI GetLocaleInfoA(LCID,LCTYPE,LPSTR,int);
+int WINAPI GetLocaleInfoW(LCID,LCTYPE,LPWSTR,int);
+int WINAPI GetNumberFormatA(LCID,DWORD,LPCSTR,const NUMBERFMTA*,LPSTR,int);
+int WINAPI GetNumberFormatW(LCID,DWORD,LPCWSTR,const NUMBERFMTW*,LPWSTR,int);
+UINT WINAPI GetOEMCP(void);
+BOOL WINAPI GetStringTypeA(LCID,DWORD,LPCSTR,int,LPWORD);
+BOOL WINAPI GetStringTypeW(DWORD,LPCWSTR,int,LPWORD);
+BOOL WINAPI GetStringTypeExA(LCID,DWORD,LPCSTR,int,LPWORD);
+BOOL WINAPI GetStringTypeExW(LCID,DWORD,LPCWSTR,int,LPWORD);
+LANGID WINAPI GetSystemDefaultLangID(void);
+LCID WINAPI GetSystemDefaultLCID(void);
+LCID WINAPI GetThreadLocale(void);
+int WINAPI GetTimeFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,int);
+int WINAPI GetTimeFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,int);
+LANGID WINAPI GetUserDefaultLangID(void);
+LCID WINAPI GetUserDefaultLCID(void);
+BOOL WINAPI IsDBCSLeadByte(BYTE);
+BOOL WINAPI IsDBCSLeadByteEx(UINT,BYTE);
+BOOL WINAPI IsValidCodePage(UINT);
+BOOL WINAPI IsValidLocale(LCID,DWORD);
+int WINAPI LCMapStringA(LCID,DWORD,LPCSTR,int,LPSTR,int);
+int WINAPI LCMapStringW(LCID,DWORD,LPCWSTR,int,LPWSTR,int);
+int WINAPI MultiByteToWideChar(UINT,DWORD,LPCSTR,int,LPWSTR,int);
+BOOL WINAPI SetLocaleInfoA(LCID,LCTYPE,LPCSTR);
+BOOL WINAPI SetLocaleInfoW(LCID,LCTYPE,LPCWSTR);
+BOOL WINAPI SetThreadLocale(LCID);
+int WINAPI WideCharToMultiByte(UINT,DWORD,LPCWSTR,int,LPSTR,int,LPCSTR,LPBOOL);
+#if (WINVER >= 0x0500)
+BOOL WINAPI EnumCalendarInfoExA(CALINFO_ENUMPROCEXA,LCID,CALID,CALTYPE);
+BOOL WINAPI EnumCalendarInfoExW(CALINFO_ENUMPROCEXW,LCID,CALID,CALTYPE);
+BOOL WINAPI EnumDateFormatsExA(DATEFMT_ENUMPROCEXA,LCID,DWORD);
+BOOL WINAPI EnumDateFormatsExW(DATEFMT_ENUMPROCEXW,LCID,DWORD);
+BOOL WINAPI EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA,DWORD,LONG_PTR);
+BOOL WINAPI EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW,DWORD,LONG_PTR);
+BOOL WINAPI EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA,LGRPID,DWORD,LONG_PTR);
+BOOL WINAPI EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW,LGRPID,DWORD,LONG_PTR);
+BOOL WINAPI EnumUILanguagesA(UILANGUAGE_ENUMPROCA,DWORD,LONG_PTR);
+BOOL WINAPI EnumUILanguagesW(UILANGUAGE_ENUMPROCW,DWORD,LONG_PTR);
+LANGID WINAPI GetSystemDefaultUILanguage(void);
+LANGID WINAPI GetUserDefaultUILanguage(void);
+BOOL WINAPI IsValidLanguageGroup(LGRPID,DWORD);
+#endif /* (WINVER >= 0x0500) */
+
+#ifdef UNICODE
+#define CALINFO_ENUMPROC CALINFO_ENUMPROCW
+#define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXW
+#define LOCALE_ENUMPROC LOCALE_ENUMPROCW
+#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCW
+#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCW
+#define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXW
+#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCW
+#define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCW
+#define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCW
+#define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCW
+typedef CPINFOEXW CPINFOEX;
+typedef LPCPINFOEXW LPCPINFOEX;
+typedef CURRENCYFMTW CURRENCYFMT;
+typedef LPCURRENCYFMTW LPCURRENCYFMT;
+typedef NUMBERFMTW NUMBERFMT;
+typedef LPNUMBERFMTW LPNUMBERFMT;
+#define CompareString CompareStringW
+#define EnumCalendarInfo EnumCalendarInfoW
+#define EnumSystemCodePages EnumSystemCodePagesW
+#define EnumSystemLocales EnumSystemLocalesW
+#define EnumTimeFormats EnumTimeFormatsW
+#define FoldString FoldStringW
+#define GetCPInfoEx GetCPInfoExW
+#define GetCurrencyFormat GetCurrencyFormatW
+#define GetDateFormat GetDateFormatW
+#define GetLocaleInfo GetLocaleInfoW
+#define GetNumberFormat GetNumberFormatW
+#define GetStringTypeEx GetStringTypeExW
+#define GetTimeFormat GetTimeFormatW
+#define LCMapString LCMapStringW
+#define SetLocaleInfo SetLocaleInfoW
+#if (WINVER >= 0x0500)
+#define EnumCalendarInfoEx EnumCalendarInfoExW;
+#define EnumDateFormatsEx EnumDateFormatsExW;
+#define EnumSystemLanguageGroups EnumSystemLanguageGroupsW;
+#define EnumLanguageGroupLocales EnumLanguageGroupLocalesW;
+#define EnumUILanguages EnumUILanguagesW;
+#endif /* (WINVER >= 0x0500) */
+#else
+#define CALINFO_ENUMPROC CALINFO_ENUMPROCA
+#define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXA
+#define LOCALE_ENUMPROC LOCALE_ENUMPROCA
+#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCA
+#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCA
+#define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXA
+#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCA
+#define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCA
+#define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCA
+#define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCA
+typedef CPINFOEXA CPINFOEX;
+typedef LPCPINFOEXA LPCPINFOEX;
+typedef CURRENCYFMTA CURRENCYFMT;
+typedef LPCURRENCYFMTA LPCURRENCYFMT;
+typedef NUMBERFMTA NUMBERFMT;
+typedef LPNUMBERFMTA LPNUMBERFMT;
+#define CompareString CompareStringA
+#define EnumCalendarInfo EnumCalendarInfoA
+#define EnumSystemCodePages EnumSystemCodePagesA
+#define EnumSystemLocales EnumSystemLocalesA
+#define EnumTimeFormats EnumTimeFormatsA
+#define FoldString FoldStringA
+#define GetCPInfoEx GetCPInfoExA
+#define GetCurrencyFormat GetCurrencyFormatA
+#define GetDateFormat GetDateFormatA
+#define GetLocaleInfo GetLocaleInfoA
+#define GetNumberFormat GetNumberFormatA
+#define GetStringTypeEx GetStringTypeExA
+#define GetTimeFormat GetTimeFormatA
+#define LCMapString LCMapStringA
+#define SetLocaleInfo SetLocaleInfoA
+#if (WINVER >= 0x0500)
+#define EnumCalendarInfoEx EnumCalendarInfoExA;
+#define EnumDateFormatsEx EnumDateFormatsExA;
+#define EnumSystemLanguageGroups EnumSystemLanguageGroupsA;
+#define EnumLanguageGroupLocales EnumLanguageGroupLocalesA;
+#define EnumUILanguages EnumUILanguagesA;
+#endif /* (WINVER >= 0x0500) */
+#endif /* UNICODE */
+#endif /* RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/Win32/bin/tcc/include/winapi/winnt.h b/Win32/bin/tcc/include/winapi/winnt.h
new file mode 100644
index 0000000..5b7cc75
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/winnt.h
@@ -0,0 +1,2667 @@
+#ifndef _WINNT_H
+#define _WINNT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+/* translate GCC target defines to MS equivalents. Keep this synchronized
+   with windows.h. */
+#if defined(__i686__) && !defined(_M_IX86)
+#define _M_IX86 600
+#elif defined(__i586__) && !defined(_M_IX86)
+#define _M_IX86 500
+#elif defined(__i486__) && !defined(_M_IX86)
+#define _M_IX86 400
+#elif defined(__i386__) && !defined(_M_IX86)
+#define _M_IX86 300
+#endif
+#if defined(_M_IX86) && !defined(_X86_)
+#define _X86_
+#elif defined(_M_ALPHA) && !defined(_ALPHA_)
+#define _ALPHA_
+#elif defined(_M_PPC) && !defined(_PPC_)
+#define _PPC_
+#elif defined(_M_MRX000) && !defined(_MIPS_)
+#define _MIPS_
+#elif defined(_M_M68K) && !defined(_68K_)
+#define _68K_
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winerror.h>
+
+#ifndef RC_INVOKED
+#include <string.h>
+
+/* FIXME: add more architectures. Is there a way to specify this in GCC? */
+#ifdef _X86_
+#define UNALIGNED
+#else
+#define UNALIGNED
+#endif
+
+#ifndef VOID
+#define VOID void
+#endif
+typedef char CHAR;
+typedef short SHORT;
+typedef long LONG;
+typedef CHAR CCHAR;
+typedef unsigned char UCHAR,*PUCHAR;
+typedef unsigned short USHORT,*PUSHORT;
+typedef unsigned long ULONG,*PULONG;
+typedef char *PSZ;
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef _WCHAR_T_
+#define _WCHAR_T_
+#undef __need_wchar_t
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+#endif
+
+typedef wchar_t WCHAR;
+typedef WCHAR *PWCHAR,*LPWCH,*PWCH,*NWPSTR,*LPWSTR,*PWSTR;
+typedef CONST WCHAR *LPCWCH,*PCWCH,*LPCWSTR,*PCWSTR;
+typedef CHAR *PCHAR,*LPCH,*PCH,*NPSTR,*LPSTR,*PSTR;
+typedef CONST CHAR *LPCCH,*PCSTR,*LPCSTR;
+#ifndef _TCHAR_DEFINED
+#define _TCHAR_DEFINED
+#ifdef UNICODE
+/*
+ * NOTE: This tests UNICODE, which is different from the _UNICODE define
+ *       used to differentiate standard C runtime calls.
+ */
+typedef WCHAR TCHAR;
+typedef WCHAR _TCHAR;
+#else
+typedef CHAR TCHAR;
+typedef CHAR _TCHAR;
+#endif
+#endif
+typedef TCHAR TBYTE,*PTCH,*PTBYTE;
+typedef TCHAR *LPTCH,*PTSTR,*LPTSTR,*LP,*PTCHAR;
+typedef const TCHAR *LPCTSTR;
+#ifdef UNICODE
+/*
+ * __TEXT is a private macro whose specific use is to force the expansion of a
+ * macro passed as an argument to the macro TEXT.  DO NOT use this
+ * macro within your programs.  It's name and function could change without
+ * notice.
+ */
+#define __TEXT(q) L##q
+#else
+#define __TEXT(q) q
+#endif
+/*
+ * UNICODE a constant string when UNICODE is defined, else returns the string
+ * unmodified.
+ * The corresponding macros  _TEXT() and _T() for mapping _UNICODE strings
+ * passed to C runtime functions are defined in mingw/tchar.h
+ */
+#define TEXT(q) __TEXT(q)    
+typedef SHORT *PSHORT;
+typedef LONG *PLONG;
+typedef void *HANDLE;
+typedef HANDLE *PHANDLE,*LPHANDLE;
+#ifdef STRICT
+#define DECLARE_HANDLE(n) typedef struct n##__{int i;}*n
+#else
+#define DECLARE_HANDLE(n) typedef HANDLE n
+#endif
+typedef DWORD LCID;
+typedef PDWORD PLCID;
+typedef WORD LANGID;
+#ifdef __GNUC__
+#define _HAVE_INT64
+#define _INTEGRAL_MAX_BITS 64
+#undef __int64
+#define __int64 long long
+#elif defined(__WATCOMC__) && (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64 )
+#define _HAVE_INT64
+#endif /* __GNUC__/__WATCOMC */
+#if defined(_HAVE_INT64) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64)
+typedef __int64 LONGLONG;
+typedef unsigned __int64 DWORDLONG;
+#else
+typedef double LONGLONG,DWORDLONG;
+#endif
+typedef LONGLONG *PLONGLONG;
+typedef DWORDLONG *PDWORDLONG;
+typedef DWORDLONG ULONGLONG,*PULONGLONG;
+typedef LONGLONG USN;
+#ifdef _HAVE_INT64
+#define Int32x32To64(a,b) ((LONGLONG)(a)*(LONGLONG)(b))
+#define UInt32x32To64(a,b) ((DWORDLONG)(a)*(DWORDLONG)(b))
+#define Int64ShllMod32(a,b) ((DWORDLONG)(a)<<(b))
+#define Int64ShraMod32(a,b) ((LONGLONG)(a)>>(b))
+#define Int64ShrlMod32(a,b) ((DWORDLONG)(a)>>(b))
+#endif
+#define ANSI_NULL '\0'
+#define UNICODE_NULL L'\0'
+typedef BYTE BOOLEAN,*PBOOLEAN;
+#endif
+
+#define NTAPI __stdcall
+#include <basetsd.h>
+#define APPLICATION_ERROR_MASK       0x20000000
+#define ERROR_SEVERITY_SUCCESS       0x00000000
+#define ERROR_SEVERITY_INFORMATIONAL 0x40000000
+#define ERROR_SEVERITY_WARNING       0x80000000
+#define ERROR_SEVERITY_ERROR         0xC0000000
+#define COMPRESSION_FORMAT_NONE 0
+#define COMPRESSION_FORMAT_DEFAULT 1
+#define COMPRESSION_FORMAT_LZNT1 2
+#define COMPRESSION_ENGINE_STANDARD 0
+#define COMPRESSION_ENGINE_MAXIMUM 256
+#define ACCESS_ALLOWED_ACE_TYPE	0
+#define ACCESS_DENIED_ACE_TYPE	1
+#define ANYSIZE_ARRAY 1
+#define SYSTEM_AUDIT_ACE_TYPE	2
+#define SYSTEM_ALARM_ACE_TYPE	3
+#define OBJECT_INHERIT_ACE	1
+#define CONTAINER_INHERIT_ACE	2
+#define NO_PROPAGATE_INHERIT_ACE	4
+#define INHERIT_ONLY_ACE	8
+#define VALID_INHERIT_FLAGS	16
+#define SUCCESSFUL_ACCESS_ACE_FLAG	64
+#define FAILED_ACCESS_ACE_FLAG	128
+#define DELETE	0x00010000L
+#define READ_CONTROL	0x20000L
+#define WRITE_DAC	0x40000L
+#define WRITE_OWNER	0x80000L
+#define SYNCHRONIZE	0x100000L
+#define STANDARD_RIGHTS_REQUIRED	0xF0000
+#define STANDARD_RIGHTS_READ	0x20000
+#define STANDARD_RIGHTS_WRITE	0x20000
+#define STANDARD_RIGHTS_EXECUTE	0x20000
+#define STANDARD_RIGHTS_ALL	0x1F0000
+#define SPECIFIC_RIGHTS_ALL	0xFFFF
+#define ACCESS_SYSTEM_SECURITY	0x1000000
+#define MAXIMUM_ALLOWED	0x2000000
+#define GENERIC_READ	0x80000000
+#define GENERIC_WRITE	0x40000000
+#define GENERIC_EXECUTE	0x20000000
+#define GENERIC_ALL	0x10000000
+#define FILE_READ_DATA	1
+#define FILE_LIST_DIRECTORY	1
+#define FILE_WRITE_DATA	2
+#define FILE_ADD_FILE	2
+#define FILE_APPEND_DATA	4
+#define FILE_ADD_SUBDIRECTORY	4
+#define FILE_CREATE_PIPE_INSTANCE	4
+#define FILE_READ_EA	8
+#define FILE_READ_PROPERTIES	8
+#define FILE_WRITE_EA	16
+#define FILE_WRITE_PROPERTIES	16
+#define FILE_EXECUTE	32
+#define FILE_TRAVERSE	32
+#define FILE_DELETE_CHILD	64
+#define FILE_READ_ATTRIBUTES	128
+#define FILE_WRITE_ATTRIBUTES	256
+#define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x1FF)
+#define FILE_GENERIC_READ (STANDARD_RIGHTS_READ|FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA|SYNCHRONIZE)
+#define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE|FILE_WRITE_DATA|FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|FILE_APPEND_DATA|SYNCHRONIZE)
+#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE|FILE_READ_ATTRIBUTES|FILE_EXECUTE|SYNCHRONIZE)
+#define FILE_SHARE_READ	1
+#define FILE_SHARE_WRITE 2
+#define FILE_SHARE_DELETE 4
+#define FILE_ATTRIBUTE_READONLY	1
+#define FILE_ATTRIBUTE_HIDDEN	2
+#define FILE_ATTRIBUTE_SYSTEM	4
+#define FILE_ATTRIBUTE_DIRECTORY	16
+#define FILE_ATTRIBUTE_ARCHIVE	32
+#define FILE_ATTRIBUTE_DEVICE	64
+#define FILE_ATTRIBUTE_NORMAL	128
+#define FILE_ATTRIBUTE_TEMPORARY	256
+#define FILE_ATTRIBUTE_SPARSE_FILE	512
+#define FILE_ATTRIBUTE_REPARSE_POINT	1024
+#define FILE_ATTRIBUTE_COMPRESSED	2048
+#define FILE_ATTRIBUTE_OFFLINE	0x1000
+#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED	0x2000
+#define FILE_ATTRIBUTE_ENCRYPTED	0x4000
+#define INVALID_FILE_ATTRIBUTES	((DWORD)-1)
+#define FILE_NOTIFY_CHANGE_FILE_NAME	1
+#define FILE_NOTIFY_CHANGE_DIR_NAME	2
+#define FILE_NOTIFY_CHANGE_ATTRIBUTES	4
+#define FILE_NOTIFY_CHANGE_SIZE	8
+#define FILE_NOTIFY_CHANGE_LAST_WRITE	16
+#define FILE_NOTIFY_CHANGE_LAST_ACCESS  32
+#define FILE_NOTIFY_CHANGE_CREATION	64
+#define FILE_NOTIFY_CHANGE_SECURITY	256
+#define MAILSLOT_NO_MESSAGE	((DWORD)-1)
+#define MAILSLOT_WAIT_FOREVER	((DWORD)-1)
+#define FILE_CASE_SENSITIVE_SEARCH	1
+#define FILE_CASE_PRESERVED_NAMES	2
+#define FILE_UNICODE_ON_DISK	4
+#define FILE_PERSISTENT_ACLS	8
+#define FILE_FILE_COMPRESSION	16
+#define FILE_VOLUME_QUOTAS      32
+#define FILE_SUPPORTS_SPARSE_FILES      64
+#define FILE_SUPPORTS_REPARSE_POINTS    128
+#define FILE_SUPPORTS_REMOTE_STORAGE    256
+#define FILE_VOLUME_IS_COMPRESSED	0x8000
+#define FILE_SUPPORTS_OBJECT_IDS        0x10000  
+#define FILE_SUPPORTS_ENCRYPTION        0x20000  
+#define FILE_NAMED_STREAMS              0x40000
+#define IO_COMPLETION_MODIFY_STATE	2
+#define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|3)
+#define DUPLICATE_CLOSE_SOURCE	1
+#define DUPLICATE_SAME_ACCESS	2
+#define PROCESS_TERMINATE	1
+#define PROCESS_CREATE_THREAD	2
+#define PROCESS_VM_OPERATION	8
+#define PROCESS_VM_READ	16
+#define PROCESS_VM_WRITE	32
+#define PROCESS_DUP_HANDLE	64
+#define PROCESS_CREATE_PROCESS	128
+#define PROCESS_SET_QUOTA	256
+#define PROCESS_SET_INFORMATION	512
+#define PROCESS_QUERY_INFORMATION	1024
+#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xFFF)
+#define THREAD_TERMINATE	1
+#define THREAD_SUSPEND_RESUME	2
+#define THREAD_GET_CONTEXT	8
+#define THREAD_SET_CONTEXT	16
+#define THREAD_SET_INFORMATION	32
+#define THREAD_QUERY_INFORMATION	64
+#define THREAD_SET_THREAD_TOKEN	128
+#define THREAD_IMPERSONATE	256
+#define THREAD_DIRECT_IMPERSONATION	0x200
+#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF)
+#define EXCEPTION_NONCONTINUABLE	1
+#define EXCEPTION_MAXIMUM_PARAMETERS 15
+/*
+ * To prevent gcc compiler warnings, bracket these defines when initialising
+ * a  SID_IDENTIFIER_AUTHORITY, eg.
+ * SID_IDENTIFIER_AUTHORITY aNullSidAuthority = {SECURITY_NULL_SID_AUTHORITY};
+ */
+#define SECURITY_NULL_SID_AUTHORITY	{0,0,0,0,0,0}
+#define SECURITY_WORLD_SID_AUTHORITY	{0,0,0,0,0,1}
+#define SECURITY_LOCAL_SID_AUTHORITY	{0,0,0,0,0,2}
+#define SECURITY_CREATOR_SID_AUTHORITY	{0,0,0,0,0,3}
+#define SECURITY_NON_UNIQUE_AUTHORITY	{0,0,0,0,0,4}
+#define SECURITY_NT_AUTHORITY	{0,0,0,0,0,5}
+#define SECURITY_NULL_RID	0
+#define SECURITY_WORLD_RID	0
+#define SECURITY_LOCAL_RID	0
+#define SECURITY_CREATOR_OWNER_RID	0
+#define SECURITY_CREATOR_GROUP_RID	1
+#define SECURITY_DIALUP_RID	1
+#define SECURITY_NETWORK_RID	2
+#define SECURITY_BATCH_RID	3
+#define SECURITY_INTERACTIVE_RID	4
+#define SECURITY_LOGON_IDS_RID	5
+#define SECURITY_SERVICE_RID	6
+#define SECURITY_LOCAL_SYSTEM_RID	18
+#define SECURITY_BUILTIN_DOMAIN_RID   32
+#define SECURITY_PRINCIPAL_SELF_RID   10
+#define SID_REVISION 1
+#define DOMAIN_USER_RID_ADMIN 0x1F4L
+#define DOMAIN_USER_RID_GUEST 0x1F5L
+#define DOMAIN_GROUP_RID_ADMINS	0x200L
+#define DOMAIN_GROUP_RID_USERS	0x201L
+#define DOMAIN_ALIAS_RID_ADMINS	0x220L
+#define DOMAIN_ALIAS_RID_USERS	0x221L
+#define DOMAIN_ALIAS_RID_GUESTS	0x222L
+#define DOMAIN_ALIAS_RID_POWER_USERS	0x223L
+#define DOMAIN_ALIAS_RID_ACCOUNT_OPS	0x224L
+#define DOMAIN_ALIAS_RID_SYSTEM_OPS	0x225L
+#define DOMAIN_ALIAS_RID_PRINT_OPS	0x226L
+#define DOMAIN_ALIAS_RID_BACKUP_OPS	0x227L
+#define DOMAIN_ALIAS_RID_REPLICATOR	0x228L
+#define SE_CREATE_TOKEN_NAME	TEXT("SeCreateTokenPrivilege")
+#define SE_ASSIGNPRIMARYTOKEN_NAME	TEXT("SeAssignPrimaryTokenPrivilege")
+#define SE_LOCK_MEMORY_NAME	TEXT("SeLockMemoryPrivilege")
+#define SE_INCREASE_QUOTA_NAME	TEXT("SeIncreaseQuotaPrivilege")
+#define SE_UNSOLICITED_INPUT_NAME	TEXT("SeUnsolicitedInputPrivilege")
+#define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege")
+#define SE_TCB_NAME	TEXT("SeTcbPrivilege")
+#define SE_SECURITY_NAME	TEXT("SeSecurityPrivilege")
+#define SE_TAKE_OWNERSHIP_NAME	TEXT("SeTakeOwnershipPrivilege")
+#define SE_LOAD_DRIVER_NAME	TEXT("SeLoadDriverPrivilege")
+#define SE_SYSTEM_PROFILE_NAME	TEXT("SeSystemProfilePrivilege")
+#define SE_SYSTEMTIME_NAME	TEXT("SeSystemtimePrivilege")
+#define SE_PROF_SINGLE_PROCESS_NAME	TEXT("SeProfileSingleProcessPrivilege")
+#define SE_INC_BASE_PRIORITY_NAME	TEXT("SeIncreaseBasePriorityPrivilege")
+#define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege")
+#define SE_CREATE_PERMANENT_NAME	TEXT("SeCreatePermanentPrivilege")
+#define SE_BACKUP_NAME TEXT("SeBackupPrivilege")
+#define SE_RESTORE_NAME	TEXT("SeRestorePrivilege")
+#define SE_SHUTDOWN_NAME	TEXT("SeShutdownPrivilege")
+#define SE_DEBUG_NAME	TEXT("SeDebugPrivilege")
+#define SE_AUDIT_NAME	TEXT("SeAuditPrivilege")
+#define SE_SYSTEM_ENVIRONMENT_NAME	TEXT("SeSystemEnvironmentPrivilege")
+#define SE_CHANGE_NOTIFY_NAME	TEXT("SeChangeNotifyPrivilege")
+#define SE_REMOTE_SHUTDOWN_NAME	TEXT("SeRemoteShutdownPrivilege")
+#define SE_GROUP_MANDATORY 1
+#define SE_GROUP_ENABLED_BY_DEFAULT 2
+#define SE_GROUP_ENABLED 4
+#define SE_GROUP_OWNER 8
+#define SE_GROUP_USE_FOR_DENY_ONLY 16
+#define SE_GROUP_LOGON_ID 3221225472U
+#define SE_GROUP_RESOURCE 536870912
+#define LANG_NEUTRAL	0x00
+#define LANG_ARABIC 	0x01
+#define LANG_BULGARIAN 	0x02
+#define LANG_CATALAN 	0x03
+#define LANG_CHINESE	0x04
+#define LANG_CZECH	0x05
+#define LANG_DANISH	0x06
+#define LANG_GERMAN	0x07
+#define LANG_GREEK	0x08
+#define LANG_ENGLISH	0x09
+#define LANG_SPANISH	0x0a
+#define LANG_FINNISH	0x0b
+#define LANG_FRENCH	0x0c
+#define LANG_HEBREW	0x0d
+#define LANG_HUNGARIAN	0x0e
+#define LANG_ICELANDIC	0x0f
+#define LANG_ITALIAN	0x10
+#define LANG_JAPANESE	0x11
+#define LANG_KOREAN	0x12
+#define LANG_DUTCH	0x13
+#define LANG_NORWEGIAN	0x14
+#define LANG_POLISH	0x15
+#define LANG_PORTUGUESE	0x16
+#define LANG_ROMANIAN	0x18
+#define LANG_RUSSIAN	0x19
+#define LANG_CROATIAN	0x1a
+#define LANG_SERBIAN	0x1a
+#define LANG_SLOVAK	0x1b
+#define LANG_ALBANIAN	0x1c
+#define LANG_SWEDISH	0x1d
+#define LANG_THAI	0x1e
+#define LANG_TURKISH	0x1f
+#define LANG_URDU	0x20
+#define LANG_INDONESIAN	0x21
+#define LANG_UKRAINIAN	0x22
+#define LANG_BELARUSIAN	0x23
+#define LANG_SLOVENIAN	0x24
+#define LANG_ESTONIAN	0x25
+#define LANG_LATVIAN	0x26
+#define LANG_LITHUANIAN	0x27
+#define LANG_FARSI	0x29
+#define LANG_VIETNAMESE	0x2a
+#define LANG_ARMENIAN	0x2b
+#define LANG_AZERI	0x2c
+#define LANG_BASQUE	0x2d
+#define LANG_MACEDONIAN	0x2f
+#define LANG_AFRIKAANS	0x36
+#define LANG_GEORGIAN	0x37
+#define LANG_FAEROESE	0x38
+#define LANG_HINDI	0x39
+#define LANG_MALAY	0x3e
+#define LANG_KAZAK	0x3f
+#define LANG_SWAHILI	0x41
+#define LANG_UZBEK	0x43
+#define LANG_TATAR	0x44
+#define LANG_BENGALI	0x45
+#define LANG_PUNJABI	0x46
+#define LANG_GUJARATI	0x47
+#define LANG_ORIYA	0x48
+#define LANG_TAMIL	0x49
+#define LANG_TELUGU	0x4a
+#define LANG_KANNADA	0x4b
+#define LANG_MALAYALAM	0x4c
+#define LANG_ASSAMESE	0x4d
+#define LANG_MARATHI	0x4e
+#define LANG_SANSKRIT	0x4f
+#define LANG_KONKANI	0x57
+#define LANG_MANIPURI	0x58
+#define LANG_SINDHI	0x59
+#define LANG_KASHMIRI	0x60
+#define LANG_NEPALI	0x61
+#define SUBLANG_NEUTRAL	0x00
+#define SUBLANG_DEFAULT	0x01
+#define SUBLANG_SYS_DEFAULT	0x02
+#define SUBLANG_ARABIC_SAUDI_ARABIA	0x01
+#define SUBLANG_ARABIC_IRAQ	0x02
+#define SUBLANG_ARABIC_EGYPT	0x03
+#define SUBLANG_ARABIC_LIBYA	0x04
+#define SUBLANG_ARABIC_ALGERIA	0x05
+#define SUBLANG_ARABIC_MOROCCO	0x06
+#define SUBLANG_ARABIC_TUNISIA	0x07
+#define SUBLANG_ARABIC_OMAN	0x08
+#define SUBLANG_ARABIC_YEMEN	0x09
+#define SUBLANG_ARABIC_SYRIA	0x0a
+#define SUBLANG_ARABIC_JORDAN	0x0b
+#define SUBLANG_ARABIC_LEBANON	0x0c
+#define SUBLANG_ARABIC_KUWAIT	0x0d
+#define SUBLANG_ARABIC_UAE	0x0e
+#define SUBLANG_ARABIC_BAHRAIN	0x0f
+#define SUBLANG_ARABIC_QATAR	0x10
+#define SUBLANG_AZERI_CYRILLIC	0x01
+#define SUBLANG_AZERI_LATIN	0x02
+#define SUBLANG_CHINESE_TRADITIONAL	0x01
+#define SUBLANG_CHINESE_SIMPLIFIED	0x02
+#define SUBLANG_CHINESE_HONGKONG	0x03
+#define SUBLANG_CHINESE_SINGAPORE	0x04
+#define SUBLANG_CHINESE_MACAU	0x05
+#define SUBLANG_DUTCH	0x01
+#define SUBLANG_DUTCH_BELGIAN	0x02
+#define SUBLANG_ENGLISH_US	0x01
+#define SUBLANG_ENGLISH_UK	0x02
+#define SUBLANG_ENGLISH_AUS	0x03
+#define SUBLANG_ENGLISH_CAN	0x04
+#define SUBLANG_ENGLISH_NZ	0x05
+#define SUBLANG_ENGLISH_EIRE	0x06
+#define SUBLANG_ENGLISH_SOUTH_AFRICA	0x07
+#define SUBLANG_ENGLISH_JAMAICA	0x08
+#define SUBLANG_ENGLISH_CARIBBEAN	0x09
+#define SUBLANG_ENGLISH_BELIZE	0x0a
+#define SUBLANG_ENGLISH_TRINIDAD	0x0b
+#define SUBLANG_ENGLISH_PHILIPPINES	0x0c
+#define SUBLANG_ENGLISH_ZIMBABWE	0x0d
+#define SUBLANG_FRENCH	0x01
+#define SUBLANG_FRENCH_BELGIAN	0x02
+#define SUBLANG_FRENCH_CANADIAN	0x03
+#define SUBLANG_FRENCH_SWISS	0x04
+#define SUBLANG_FRENCH_LUXEMBOURG	0x05
+#define SUBLANG_FRENCH_MONACO	0x06
+#define SUBLANG_GERMAN	0x01
+#define SUBLANG_GERMAN_SWISS	0x02
+#define SUBLANG_GERMAN_AUSTRIAN	0x03
+#define SUBLANG_GERMAN_LUXEMBOURG	0x04
+#define SUBLANG_GERMAN_LIECHTENSTEIN	0x05
+#define SUBLANG_ITALIAN	0x01
+#define SUBLANG_ITALIAN_SWISS	0x02
+#define SUBLANG_KASHMIRI_INDIA	0x02
+#define SUBLANG_KOREAN	0x01
+#define SUBLANG_LITHUANIAN	0x01
+#define SUBLANG_MALAY_MALAYSIA	0x01
+#define SUBLANG_MALAY_BRUNEI_DARUSSALAM	0x02
+#define SUBLANG_NEPALI_INDIA	0x02
+#define SUBLANG_NORWEGIAN_BOKMAL	0x01
+#define SUBLANG_NORWEGIAN_NYNORSK	0x02
+#define SUBLANG_PORTUGUESE	0x01
+#define SUBLANG_PORTUGUESE_BRAZILIAN	0x02
+#define SUBLANG_SERBIAN_LATIN	0x02
+#define SUBLANG_SERBIAN_CYRILLIC	0x03
+#define SUBLANG_SPANISH	0x01
+#define SUBLANG_SPANISH_MEXICAN	0x02
+#define SUBLANG_SPANISH_MODERN	0x03
+#define SUBLANG_SPANISH_GUATEMALA	0x04
+#define SUBLANG_SPANISH_COSTA_RICA	0x05
+#define SUBLANG_SPANISH_PANAMA	0x06
+#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC	0x07
+#define SUBLANG_SPANISH_VENEZUELA	0x08
+#define SUBLANG_SPANISH_COLOMBIA	0x09
+#define SUBLANG_SPANISH_PERU	0x0a
+#define SUBLANG_SPANISH_ARGENTINA	0x0b
+#define SUBLANG_SPANISH_ECUADOR	0x0c
+#define SUBLANG_SPANISH_CHILE	0x0d
+#define SUBLANG_SPANISH_URUGUAY	0x0e
+#define SUBLANG_SPANISH_PARAGUAY	0x0f
+#define SUBLANG_SPANISH_BOLIVIA	0x10
+#define SUBLANG_SPANISH_EL_SALVADOR	0x11
+#define SUBLANG_SPANISH_HONDURAS	0x12
+#define SUBLANG_SPANISH_NICARAGUA	0x13
+#define SUBLANG_SPANISH_PUERTO_RICO	0x14
+#define SUBLANG_SWEDISH	0x01
+#define SUBLANG_SWEDISH_FINLAND	0x02
+#define SUBLANG_URDU_PAKISTAN	0x01
+#define SUBLANG_URDU_INDIA	0x02
+#define SUBLANG_UZBEK_LATIN	0x01
+#define SUBLANG_UZBEK_CYRILLIC	0x02
+#define NLS_VALID_LOCALE_MASK	1048575
+#define SORT_DEFAULT	0
+#define SORT_JAPANESE_XJIS	0
+#define SORT_JAPANESE_UNICODE	1
+#define SORT_CHINESE_BIG5	0
+#define SORT_CHINESE_PRCP	0
+#define SORT_CHINESE_UNICODE	1
+#define SORT_CHINESE_PRC	2
+#define SORT_CHINESE_BOPOMOFO	3
+#define SORT_KOREAN_KSC	0
+#define SORT_KOREAN_UNICODE	1
+#define SORT_GERMAN_PHONE_BOOK	1
+#define SORT_HUNGARIAN_DEFAULT	0
+#define SORT_HUNGARIAN_TECHNICAL	1
+#define SORT_GEORGIAN_TRADITIONAL	0
+#define SORT_GEORGIAN_MODERN	1
+#define MAKELANGID(p,s)	((((WORD)(s))<<10)|(WORD)(p))
+#define MAKELCID(l,s) ((DWORD)((((DWORD)((WORD)(s)))<<16)|((DWORD)((WORD)(l)))))
+#define PRIMARYLANGID(l)	((WORD)(l)&0x3ff)
+#define SORTIDFROMLCID(l)	((WORD)((((DWORD)(l))&NLS_VALID_LOCALE_MASK)>>16))
+#define SORTVERSIONFROMLCID(l) ((WORD)((((DWORD)(l))>>20)&0xf))
+#define SUBLANGID(l)	((WORD)(l)>>10)
+#define LANGIDFROMLCID(l)	((WORD)(l))
+#define LANG_SYSTEM_DEFAULT	MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT)
+#define LANG_USER_DEFAULT	MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT)
+#define LOCALE_NEUTRAL	MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT)
+#define ACL_REVISION	2
+#define ACL_REVISION_DS 4
+#define ACL_REVISION1 1
+#define ACL_REVISION2 2
+#define ACL_REVISION3 3
+#define ACL_REVISION4 4
+#define MIN_ACL_REVISION 2
+#define MAX_ACL_REVISION 4
+#define MINCHAR	0x80
+#define MAXCHAR	0x7f
+#define MINSHORT	0x8000
+#define MAXSHORT	0x7fff
+#define MINLONG	0x80000000
+#define MAXLONG	0x7fffffff
+#define MAXBYTE	0xff
+#define MAXWORD	0xffff
+#define MAXDWORD	0xffffffff
+#define PROCESSOR_INTEL_386 386
+#define PROCESSOR_INTEL_486 486
+#define PROCESSOR_INTEL_PENTIUM 586
+#define PROCESSOR_MIPS_R4000 4000
+#define PROCESSOR_ALPHA_21064 21064
+#define PROCESSOR_ARCHITECTURE_INTEL 0
+#define PROCESSOR_ARCHITECTURE_MIPS 1
+#define PROCESSOR_ARCHITECTURE_ALPHA 2
+#define PROCESSOR_ARCHITECTURE_PPC 3
+#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
+#define PF_FLOATING_POINT_PRECISION_ERRATA 0
+#define PF_FLOATING_POINT_EMULATED 1
+#define PF_COMPARE_EXCHANGE_DOUBLE 2
+#define PF_MMX_INSTRUCTIONS_AVAILABLE 3
+#define PF_PPC_MOVEMEM_64BIT_OK 4
+#define PF_ALPHA_BYTE_INSTRUCTIONS 5
+#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6
+#define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7
+#define PF_RDTSC_INSTRUCTION_AVAILABLE 8
+#define PF_PAE_ENABLED 9
+#define PAGE_READONLY 2
+#define PAGE_READWRITE 4
+#define PAGE_WRITECOPY 8
+#define FILE_ACTION_ADDED	1
+#define FILE_ACTION_REMOVED	2
+#define FILE_ACTION_MODIFIED	3
+#define FILE_ACTION_RENAMED_OLD_NAME	4
+#define FILE_ACTION_RENAMED_NEW_NAME	5
+#define HEAP_NO_SERIALIZE 1
+#define HEAP_GROWABLE 2
+#define HEAP_GENERATE_EXCEPTIONS 4
+#define HEAP_ZERO_MEMORY 8
+#define HEAP_REALLOC_IN_PLACE_ONLY 16
+#define HEAP_TAIL_CHECKING_ENABLED 32
+#define HEAP_FREE_CHECKING_ENABLED 64
+#define HEAP_DISABLE_COALESCE_ON_FREE 128
+#define HEAP_CREATE_ALIGN_16 0x0000
+#define HEAP_CREATE_ENABLE_TRACING 0x20000
+#define HEAP_MAXIMUM_TAG 0xFFF
+#define HEAP_PSEUDO_TAG_FLAG 0x8000
+#define HEAP_TAG_SHIFT 16
+#define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16)))
+#define KEY_QUERY_VALUE 1
+#define KEY_SET_VALUE 2
+#define KEY_CREATE_SUB_KEY 4
+#define KEY_ENUMERATE_SUB_KEYS 8
+#define KEY_NOTIFY 16
+#define KEY_CREATE_LINK 32
+#define KEY_WRITE 0x20006
+#define KEY_EXECUTE 0x20019
+#define KEY_READ 0x20019
+#define KEY_ALL_ACCESS 0xf003f
+#define REG_WHOLE_HIVE_VOLATILE	1
+#define REG_REFRESH_HIVE	2
+#define REG_NO_LAZY_FLUSH	4
+#define REG_OPTION_RESERVED	0
+#define REG_OPTION_NON_VOLATILE	0
+#define REG_OPTION_VOLATILE	1
+#define REG_OPTION_CREATE_LINK	2
+#define REG_OPTION_BACKUP_RESTORE	4
+#define REG_OPTION_OPEN_LINK	8
+#define REG_LEGAL_OPTION	15
+#define OWNER_SECURITY_INFORMATION 1
+#define GROUP_SECURITY_INFORMATION 2
+#define DACL_SECURITY_INFORMATION 4
+#define SACL_SECURITY_INFORMATION 8
+#define MAXIMUM_PROCESSORS 32
+#define PAGE_EXECUTE 16
+#define PAGE_EXECUTE_READ 32
+#define PAGE_EXECUTE_READWRITE 64
+#define PAGE_GUARD 256
+#define PAGE_NOACCESS 1
+#define PAGE_NOCACHE 512
+#define MEM_COMMIT           0x1000
+#define MEM_RESERVE          0x2000
+#define MEM_DECOMMIT         0x4000
+#define MEM_RELEASE          0x8000
+#define MEM_FREE            0x10000
+#define MEM_PRIVATE         0x20000
+#define MEM_MAPPED          0x40000
+#define MEM_RESET           0x80000
+#define MEM_TOP_DOWN       0x100000
+#define MEM_WRITE_WATCH	   0x200000 /* 98/Me */
+#define MEM_PHYSICAL	   0x400000
+#define MEM_4MB_PAGES    0x80000000
+#define MEM_IMAGE 16777216
+#define SEC_FILE 0x800000
+#define SEC_IMAGE 0x1000000
+#define SEC_VLM 0x2000000
+#define SEC_RESERVE 0x4000000
+#define SEC_COMMIT 0x8000000
+#define SEC_NOCACHE 0x10000000
+#define PAGE_EXECUTE_WRITECOPY 128
+#define SECTION_EXTEND_SIZE 16
+#define SECTION_MAP_READ 4
+#define SECTION_MAP_WRITE 2
+#define SECTION_QUERY 1
+#define SECTION_ALL_ACCESS 0xf001f
+#define MESSAGE_RESOURCE_UNICODE 1
+#define RTL_CRITSECT_TYPE 0
+#define RTL_RESOURCE_TYPE 1
+#define FIELD_OFFSET(t,f) ((LONG)&(((t*)0)->f))
+#define IMAGE_SIZEOF_FILE_HEADER	20
+#define IMAGE_FILE_RELOCS_STRIPPED	1
+#define IMAGE_FILE_EXECUTABLE_IMAGE	2
+#define IMAGE_FILE_LINE_NUMS_STRIPPED	4
+#define IMAGE_FILE_LOCAL_SYMS_STRIPPED	8
+#define IMAGE_FILE_BYTES_REVERSED_LO	128
+#define IMAGE_FILE_32BIT_MACHINE	256
+#define IMAGE_FILE_DEBUG_STRIPPED	512
+#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP	1024
+#define IMAGE_FILE_NET_RUN_FROM_SWAP	2048
+#define IMAGE_FILE_SYSTEM	4096
+#define IMAGE_FILE_DLL	8192
+#define IMAGE_FILE_UP_SYSTEM_ONLY	16384
+#define IMAGE_FILE_BYTES_REVERSED_HI	32768
+#define IMAGE_FILE_MACHINE_UNKNOWN	0
+#define IMAGE_FILE_MACHINE_I386	332
+#define IMAGE_FILE_MACHINE_R3000	354
+#define IMAGE_FILE_MACHINE_R4000	358
+#define IMAGE_FILE_MACHINE_R10000	360
+#define IMAGE_FILE_MACHINE_ALPHA	388
+#define IMAGE_FILE_MACHINE_POWERPC	496
+#define IMAGE_DOS_SIGNATURE 0x5A4D
+#define IMAGE_OS2_SIGNATURE 0x454E
+#define IMAGE_OS2_SIGNATURE_LE 0x454C
+#define IMAGE_VXD_SIGNATURE 0x454C
+#define IMAGE_NT_SIGNATURE 0x00004550
+#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b
+#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
+#define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944
+#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
+#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
+#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
+#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224
+#define IMAGE_SIZEOF_SHORT_NAME 8
+#define IMAGE_SIZEOF_SECTION_HEADER 40
+#define IMAGE_SIZEOF_SYMBOL 18
+#define IMAGE_SIZEOF_AUX_SYMBOL 18
+#define IMAGE_SIZEOF_RELOCATION 10
+#define IMAGE_SIZEOF_BASE_RELOCATION 8
+#define IMAGE_SIZEOF_LINENUMBER 6
+#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
+#define SIZEOF_RFPO_DATA 16
+#define IMAGE_SUBSYSTEM_UNKNOWN	0
+#define IMAGE_SUBSYSTEM_NATIVE	1
+#define IMAGE_SUBSYSTEM_WINDOWS_GUI	2
+#define IMAGE_SUBSYSTEM_WINDOWS_CUI	3
+#define IMAGE_SUBSYSTEM_OS2_CUI	5
+#define IMAGE_SUBSYSTEM_POSIX_CUI	7
+#define IMAGE_FIRST_SECTION(h) ((PIMAGE_SECTION_HEADER) ((DWORD)h+FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader)+((PIMAGE_NT_HEADERS)(h))->FileHeader.SizeOfOptionalHeader))
+#define IMAGE_DIRECTORY_ENTRY_EXPORT	0
+#define IMAGE_DIRECTORY_ENTRY_IMPORT	1
+#define IMAGE_DIRECTORY_ENTRY_RESOURCE	2
+#define IMAGE_DIRECTORY_ENTRY_EXCEPTION	3
+#define IMAGE_DIRECTORY_ENTRY_SECURITY	4
+#define IMAGE_DIRECTORY_ENTRY_BASERELOC	5
+#define IMAGE_DIRECTORY_ENTRY_DEBUG	6
+#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT	7
+#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR	8
+#define IMAGE_DIRECTORY_ENTRY_TLS	9
+#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG	10
+#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT	11
+#define IMAGE_DIRECTORY_ENTRY_IAT	12
+#define IMAGE_SCN_TYPE_NO_PAD 8
+#define IMAGE_SCN_CNT_CODE 32
+#define IMAGE_SCN_CNT_INITIALIZED_DATA 64
+#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 128
+#define IMAGE_SCN_LNK_OTHER 256
+#define IMAGE_SCN_LNK_INFO 512
+#define IMAGE_SCN_LNK_REMOVE 2048
+#define IMAGE_SCN_LNK_COMDAT 4096
+#define IMAGE_SCN_MEM_FARDATA 0x8000
+#define IMAGE_SCN_MEM_PURGEABLE 0x20000
+#define IMAGE_SCN_MEM_16BIT 0x20000
+#define IMAGE_SCN_MEM_LOCKED  0x40000
+#define IMAGE_SCN_MEM_PRELOAD 0x80000
+#define IMAGE_SCN_ALIGN_1BYTES 0x100000
+#define IMAGE_SCN_ALIGN_2BYTES 0x200000
+#define IMAGE_SCN_ALIGN_4BYTES 0x300000
+#define IMAGE_SCN_ALIGN_8BYTES 0x400000
+#define IMAGE_SCN_ALIGN_16BYTES 0x500000
+#define IMAGE_SCN_ALIGN_32BYTES 0x600000
+#define IMAGE_SCN_ALIGN_64BYTES 0x700000
+#define IMAGE_SCN_LNK_NRELOC_OVFL 0x1000000
+#define IMAGE_SCN_MEM_DISCARDABLE 0x2000000
+#define IMAGE_SCN_MEM_NOT_CACHED 0x4000000
+#define IMAGE_SCN_MEM_NOT_PAGED 0x8000000
+#define IMAGE_SCN_MEM_SHARED 0x10000000
+#define IMAGE_SCN_MEM_EXECUTE 0x20000000
+#define IMAGE_SCN_MEM_READ 0x40000000
+#define IMAGE_SCN_MEM_WRITE 0x80000000
+#define IMAGE_SYM_UNDEFINED	0
+#define IMAGE_SYM_ABSOLUTE (-1)
+#define IMAGE_SYM_DEBUG	(-2)
+#define IMAGE_SYM_TYPE_NULL 0
+#define IMAGE_SYM_TYPE_VOID 1
+#define IMAGE_SYM_TYPE_CHAR 2
+#define IMAGE_SYM_TYPE_SHORT 3
+#define IMAGE_SYM_TYPE_INT 4
+#define IMAGE_SYM_TYPE_LONG 5
+#define IMAGE_SYM_TYPE_FLOAT 6
+#define IMAGE_SYM_TYPE_DOUBLE 7
+#define IMAGE_SYM_TYPE_STRUCT 8
+#define IMAGE_SYM_TYPE_UNION 9
+#define IMAGE_SYM_TYPE_ENUM 10
+#define IMAGE_SYM_TYPE_MOE 11
+#define IMAGE_SYM_TYPE_BYTE 12
+#define IMAGE_SYM_TYPE_WORD 13
+#define IMAGE_SYM_TYPE_UINT 14
+#define IMAGE_SYM_TYPE_DWORD 15
+#define IMAGE_SYM_TYPE_PCODE 32768
+#define IMAGE_SYM_DTYPE_NULL 0
+#define IMAGE_SYM_DTYPE_POINTER 1
+#define IMAGE_SYM_DTYPE_FUNCTION 2
+#define IMAGE_SYM_DTYPE_ARRAY 3
+#define IMAGE_SYM_CLASS_END_OF_FUNCTION	(-1)
+#define IMAGE_SYM_CLASS_NULL 0
+#define IMAGE_SYM_CLASS_AUTOMATIC 1
+#define IMAGE_SYM_CLASS_EXTERNAL 2
+#define IMAGE_SYM_CLASS_STATIC 3
+#define IMAGE_SYM_CLASS_REGISTER 4
+#define IMAGE_SYM_CLASS_EXTERNAL_DEF 5
+#define IMAGE_SYM_CLASS_LABEL 6
+#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7
+#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8
+#define IMAGE_SYM_CLASS_ARGUMENT 9
+#define IMAGE_SYM_CLASS_STRUCT_TAG 10
+#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11
+#define IMAGE_SYM_CLASS_UNION_TAG 12
+#define IMAGE_SYM_CLASS_TYPE_DEFINITION 13
+#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14
+#define IMAGE_SYM_CLASS_ENUM_TAG 15
+#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16
+#define IMAGE_SYM_CLASS_REGISTER_PARAM 17
+#define IMAGE_SYM_CLASS_BIT_FIELD 18
+#define IMAGE_SYM_CLASS_FAR_EXTERNAL 68
+#define IMAGE_SYM_CLASS_BLOCK 100
+#define IMAGE_SYM_CLASS_FUNCTION 101
+#define IMAGE_SYM_CLASS_END_OF_STRUCT 102
+#define IMAGE_SYM_CLASS_FILE 103
+#define IMAGE_SYM_CLASS_SECTION 104
+#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105
+#define IMAGE_COMDAT_SELECT_NODUPLICATES 1
+#define IMAGE_COMDAT_SELECT_ANY 2
+#define IMAGE_COMDAT_SELECT_SAME_SIZE 3
+#define IMAGE_COMDAT_SELECT_EXACT_MATCH 4
+#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5
+#define IMAGE_COMDAT_SELECT_LARGEST 6
+#define IMAGE_COMDAT_SELECT_NEWEST 7
+#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1
+#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
+#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
+#define IMAGE_REL_I386_ABSOLUTE 0
+#define IMAGE_REL_I386_DIR16 1
+#define IMAGE_REL_I386_REL16 2
+#define IMAGE_REL_I386_DIR32 6
+#define IMAGE_REL_I386_DIR32NB 7
+#define IMAGE_REL_I386_SEG12 9
+#define IMAGE_REL_I386_SECTION 10
+#define IMAGE_REL_I386_SECREL 11
+#define IMAGE_REL_I386_REL32 20
+#define IMAGE_REL_MIPS_ABSOLUTE 0
+#define IMAGE_REL_MIPS_REFHALF 1
+#define IMAGE_REL_MIPS_REFWORD 2
+#define IMAGE_REL_MIPS_JMPADDR 3
+#define IMAGE_REL_MIPS_REFHI 4
+#define IMAGE_REL_MIPS_REFLO 5
+#define IMAGE_REL_MIPS_GPREL 6
+#define IMAGE_REL_MIPS_LITERAL 7
+#define IMAGE_REL_MIPS_SECTION 10
+#define IMAGE_REL_MIPS_SECREL 11
+#define IMAGE_REL_MIPS_SECRELLO 12
+#define IMAGE_REL_MIPS_SECRELHI 13
+#define IMAGE_REL_MIPS_REFWORDNB 34
+#define IMAGE_REL_MIPS_PAIR 35
+#define IMAGE_REL_ALPHA_ABSOLUTE 0
+#define IMAGE_REL_ALPHA_REFLONG 1
+#define IMAGE_REL_ALPHA_REFQUAD 2
+#define IMAGE_REL_ALPHA_GPREL32 3
+#define IMAGE_REL_ALPHA_LITERAL 4
+#define IMAGE_REL_ALPHA_LITUSE 5
+#define IMAGE_REL_ALPHA_GPDISP 6
+#define IMAGE_REL_ALPHA_BRADDR 7
+#define IMAGE_REL_ALPHA_HINT 8
+#define IMAGE_REL_ALPHA_INLINE_REFLONG 9
+#define IMAGE_REL_ALPHA_REFHI 10
+#define IMAGE_REL_ALPHA_REFLO 11
+#define IMAGE_REL_ALPHA_PAIR 12
+#define IMAGE_REL_ALPHA_MATCH 13
+#define IMAGE_REL_ALPHA_SECTION 14
+#define IMAGE_REL_ALPHA_SECREL 15
+#define IMAGE_REL_ALPHA_REFLONGNB 16
+#define IMAGE_REL_ALPHA_SECRELLO 17
+#define IMAGE_REL_ALPHA_SECRELHI 18
+#define IMAGE_REL_PPC_ABSOLUTE 0
+#define IMAGE_REL_PPC_ADDR64 1
+#define IMAGE_REL_PPC_ADDR32 2
+#define IMAGE_REL_PPC_ADDR24 3
+#define IMAGE_REL_PPC_ADDR16 4
+#define IMAGE_REL_PPC_ADDR14 5
+#define IMAGE_REL_PPC_REL24 6
+#define IMAGE_REL_PPC_REL14 7
+#define IMAGE_REL_PPC_TOCREL16 8
+#define IMAGE_REL_PPC_TOCREL14 9
+#define IMAGE_REL_PPC_ADDR32NB 10
+#define IMAGE_REL_PPC_SECREL 11
+#define IMAGE_REL_PPC_SECTION 12
+#define IMAGE_REL_PPC_IFGLUE 13
+#define IMAGE_REL_PPC_IMGLUE 14
+#define IMAGE_REL_PPC_SECREL16 15
+#define IMAGE_REL_PPC_REFHI 16
+#define IMAGE_REL_PPC_REFLO 17
+#define IMAGE_REL_PPC_PAIR 18
+#define IMAGE_REL_PPC_TYPEMASK 255
+#define IMAGE_REL_PPC_NEG 256
+#define IMAGE_REL_PPC_BRTAKEN 512
+#define IMAGE_REL_PPC_BRNTAKEN 1024
+#define IMAGE_REL_PPC_TOCDEFN 2048
+#define IMAGE_REL_BASED_ABSOLUTE 0
+#define IMAGE_REL_BASED_HIGH 1
+#define IMAGE_REL_BASED_LOW 2
+#define IMAGE_REL_BASED_HIGHLOW 3
+#define IMAGE_REL_BASED_HIGHADJ 4
+#define IMAGE_REL_BASED_MIPS_JMPADDR 5
+#define IMAGE_ARCHIVE_START_SIZE 8
+#define IMAGE_ARCHIVE_START "!<arch>\n"
+#define IMAGE_ARCHIVE_END "`\n"
+#define IMAGE_ARCHIVE_PAD "\n"
+#define IMAGE_ARCHIVE_LINKER_MEMBER "/               "
+#define IMAGE_ARCHIVE_LONGNAMES_MEMBER "//              "
+#define IMAGE_ORDINAL_FLAG 0x80000000
+#define IMAGE_SNAP_BY_ORDINAL(o) ((o&IMAGE_ORDINAL_FLAG)!=0)
+#define IMAGE_ORDINAL(o) (o&0xffff)
+#define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000
+#define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000
+#define IMAGE_DEBUG_TYPE_UNKNOWN 0
+#define IMAGE_DEBUG_TYPE_COFF 1
+#define IMAGE_DEBUG_TYPE_CODEVIEW 2
+#define IMAGE_DEBUG_TYPE_FPO 3
+#define IMAGE_DEBUG_TYPE_MISC 4
+#define IMAGE_DEBUG_TYPE_EXCEPTION 5
+#define IMAGE_DEBUG_TYPE_FIXUP 6
+#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7
+#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8
+#define FRAME_FPO 0
+#define FRAME_TRAP 1
+#define FRAME_TSS 2
+#define FRAME_NONFPO 3
+#define IMAGE_DEBUG_MISC_EXENAME 1
+#define N_BTMASK 0x000F
+#define N_TMASK 0x0030
+#define N_TMASK1 0x00C0
+#define N_TMASK2 0x00F0
+#define N_BTSHFT 4
+#define N_TSHIFT 2
+#define IS_TEXT_UNICODE_ASCII16 1
+#define IS_TEXT_UNICODE_REVERSE_ASCII16 16
+#define IS_TEXT_UNICODE_STATISTICS 2
+#define IS_TEXT_UNICODE_REVERSE_STATISTICS 32
+#define IS_TEXT_UNICODE_CONTROLS 4
+#define IS_TEXT_UNICODE_REVERSE_CONTROLS 64
+#define IS_TEXT_UNICODE_SIGNATURE 8
+#define IS_TEXT_UNICODE_REVERSE_SIGNATURE 128
+#define IS_TEXT_UNICODE_ILLEGAL_CHARS 256
+#define IS_TEXT_UNICODE_ODD_LENGTH 512
+#define IS_TEXT_UNICODE_NULL_BYTES 4096
+#define IS_TEXT_UNICODE_UNICODE_MASK 15
+#define IS_TEXT_UNICODE_REVERSE_MASK 240
+#define IS_TEXT_UNICODE_NOT_UNICODE_MASK 3840
+#define IS_TEXT_UNICODE_NOT_ASCII_MASK 61440
+#define SERVICE_KERNEL_DRIVER 1
+#define SERVICE_FILE_SYSTEM_DRIVER 2
+#define SERVICE_ADAPTER 4
+#define SERVICE_RECOGNIZER_DRIVER 8
+#define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER|SERVICE_FILE_SYSTEM_DRIVER|SERVICE_RECOGNIZER_DRIVER)
+#define SERVICE_WIN32_OWN_PROCESS 16
+#define SERVICE_WIN32_SHARE_PROCESS 32
+#define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS|SERVICE_WIN32_SHARE_PROCESS)
+#define SERVICE_INTERACTIVE_PROCESS 256
+#define SERVICE_TYPE_ALL (SERVICE_WIN32|SERVICE_ADAPTER|SERVICE_DRIVER|SERVICE_INTERACTIVE_PROCESS)
+#define SERVICE_BOOT_START 0
+#define SERVICE_SYSTEM_START 1
+#define SERVICE_AUTO_START 2
+#define SERVICE_DEMAND_START 3
+#define SERVICE_DISABLED 4
+#define SERVICE_ERROR_IGNORE 0
+#define SERVICE_ERROR_NORMAL 1
+#define SERVICE_ERROR_SEVERE 2
+#define SERVICE_ERROR_CRITICAL 3
+#define SE_OWNER_DEFAULTED 1
+#define SE_GROUP_DEFAULTED 2
+#define SE_DACL_PRESENT 4
+#define SE_DACL_DEFAULTED 8
+#define SE_SACL_PRESENT 16
+#define SE_SACL_DEFAULTED 32
+#define SE_DACL_AUTO_INHERIT_REQ 256
+#define SE_SACL_AUTO_INHERIT_REQ 512
+#define SE_DACL_AUTO_INHERITED 1024
+#define SE_SACL_AUTO_INHERITED 2048
+#define SE_DACL_PROTECTED 4096
+#define SE_SACL_PROTECTED 8192
+#define SE_SELF_RELATIVE 0x8000
+#define SECURITY_DESCRIPTOR_MIN_LENGTH 20
+#define SECURITY_DESCRIPTOR_REVISION 1
+#define SECURITY_DESCRIPTOR_REVISION1 1
+#define SE_PRIVILEGE_ENABLED_BY_DEFAULT 1
+#define SE_PRIVILEGE_ENABLED 2
+#define SE_PRIVILEGE_USED_FOR_ACCESS 0x80000000
+#define PRIVILEGE_SET_ALL_NECESSARY 1
+#define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation
+#define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation
+#define SECURITY_DYNAMIC_TRACKING TRUE
+#define SECURITY_STATIC_TRACKING FALSE
+#define TOKEN_SOURCE_LENGTH 8
+#define TOKEN_ADJUST_DEFAULT	128
+#define TOKEN_ADJUST_GROUPS	64
+#define TOKEN_ADJUST_PRIVILEGES	32
+#define TOKEN_ALL_ACCESS	0xf00ff
+#define TOKEN_ASSIGN_PRIMARY	1
+#define TOKEN_DUPLICATE	2
+#define TOKEN_EXECUTE	0x20000
+#define TOKEN_IMPERSONATE	4
+#define TOKEN_QUERY	8
+#define TOKEN_QUERY_SOURCE	16
+#define TOKEN_READ	0x20008
+#define TOKEN_WRITE	0x200e0
+#define DLL_PROCESS_DETACH	0
+#define DLL_PROCESS_ATTACH	1
+#define DLL_THREAD_ATTACH	2
+#define DLL_THREAD_DETACH	3
+#define DBG_CONTINUE 0x10002
+#define DBG_TERMINATE_THREAD 0x40010003
+#define DBG_TERMINATE_PROCESS 0x40010004
+#define DBG_CONTROL_C 0x40010005
+#define DBG_CONTROL_BREAK 0x40010008
+#define DBG_EXCEPTION_NOT_HANDLED 0x80010001
+#define TAPE_ABSOLUTE_POSITION 0
+#define TAPE_LOGICAL_POSITION 1
+#define TAPE_PSEUDO_LOGICAL_POSITION 2
+#define TAPE_REWIND 0
+#define TAPE_ABSOLUTE_BLOCK 1
+#define TAPE_LOGICAL_BLOCK 2
+#define TAPE_PSEUDO_LOGICAL_BLOCK 3
+#define TAPE_SPACE_END_OF_DATA 4
+#define TAPE_SPACE_RELATIVE_BLOCKS 5
+#define TAPE_SPACE_FILEMARKS 6
+#define TAPE_SPACE_SEQUENTIAL_FMKS 7
+#define TAPE_SPACE_SETMARKS 8
+#define TAPE_SPACE_SEQUENTIAL_SMKS 9
+#define TAPE_DRIVE_FIXED 1
+#define TAPE_DRIVE_SELECT 2
+#define TAPE_DRIVE_INITIATOR 4
+#define TAPE_DRIVE_ERASE_SHORT 16
+#define TAPE_DRIVE_ERASE_LONG 32
+#define TAPE_DRIVE_ERASE_BOP_ONLY 64
+#define TAPE_DRIVE_ERASE_IMMEDIATE 128
+#define TAPE_DRIVE_TAPE_CAPACITY 256
+#define TAPE_DRIVE_TAPE_REMAINING 512
+#define TAPE_DRIVE_FIXED_BLOCK 1024
+#define TAPE_DRIVE_VARIABLE_BLOCK 2048
+#define TAPE_DRIVE_WRITE_PROTECT 4096
+#define TAPE_DRIVE_EOT_WZ_SIZE 8192
+#define TAPE_DRIVE_ECC 0x10000
+#define TAPE_DRIVE_COMPRESSION 0x20000
+#define TAPE_DRIVE_PADDING 0x40000
+#define TAPE_DRIVE_REPORT_SMKS 0x80000
+#define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x100000
+#define TAPE_DRIVE_GET_LOGICAL_BLK 0x200000
+#define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x400000
+#define TAPE_DRIVE_EJECT_MEDIA 0x1000000
+#define TAPE_DRIVE_CLEAN_REQUESTS 0x2000000
+#define TAPE_DRIVE_SET_CMP_BOP_ONLY 0x4000000
+#define TAPE_DRIVE_RESERVED_BIT 0x80000000
+#define TAPE_DRIVE_LOAD_UNLOAD 0x80000001
+#define TAPE_DRIVE_TENSION 0x80000002
+#define TAPE_DRIVE_LOCK_UNLOCK 0x80000004
+#define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008
+#define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010
+#define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020
+#define TAPE_DRIVE_TENSION_IMMED 0x80000040
+#define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080
+#define TAPE_DRIVE_SET_ECC 0x80000100
+#define TAPE_DRIVE_SET_COMPRESSION 0x80000200
+#define TAPE_DRIVE_SET_PADDING 0x80000400
+#define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800
+#define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000
+#define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000
+#define TAPE_DRIVE_LOGICAL_BLK 0x80004000
+#define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000
+#define TAPE_DRIVE_END_OF_DATA 0x80010000
+#define TAPE_DRIVE_RELATIVE_BLKS 0x80020000
+#define TAPE_DRIVE_FILEMARKS 0x80040000
+#define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000
+#define TAPE_DRIVE_SETMARKS 0x80100000
+#define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000
+#define TAPE_DRIVE_REVERSE_POSITION 0x80400000
+#define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000
+#define TAPE_DRIVE_WRITE_SETMARKS 0x81000000
+#define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000
+#define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000
+#define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000
+#define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000
+#define TAPE_DRIVE_FORMAT 0xA0000000
+#define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000
+#define TAPE_DRIVE_HIGH_FEATURES 0x80000000
+#define TAPE_FIXED_PARTITIONS	0
+#define TAPE_INITIATOR_PARTITIONS	2
+#define TAPE_SELECT_PARTITIONS	1
+#define TAPE_FILEMARKS	1
+#define TAPE_LONG_FILEMARKS	3
+#define TAPE_SETMARKS	0
+#define TAPE_SHORT_FILEMARKS	2
+#define TAPE_ERASE_LONG 1
+#define TAPE_ERASE_SHORT 0
+#define TAPE_LOAD 0
+#define TAPE_UNLOAD 1
+#define TAPE_TENSION 2
+#define TAPE_LOCK 3
+#define TAPE_UNLOCK 4
+#define TAPE_FORMAT 5
+#define VER_PLATFORM_WIN32s 0
+#define VER_PLATFORM_WIN32_WINDOWS 1
+#define VER_PLATFORM_WIN32_NT 2
+#define VER_NT_WORKSTATION 1
+#define VER_NT_DOMAIN_CONTROLLER 2
+#define VER_NT_SERVER 3
+#define VER_SUITE_SMALLBUSINESS 1
+#define VER_SUITE_ENTERPRISE 2
+#define VER_SUITE_BACKOFFICE 4
+#define VER_SUITE_TERMINAL 16
+#define VER_SUITE_SMALLBUSINESS_RESTRICTED 32
+#define VER_SUITE_DATACENTER 128
+#define VER_SUITE_PERSONAL 512
+#define BTYPE(x) ((x)&N_BTMASK)
+#define ISPTR(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT))
+#define ISFCN(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_FUNCTION<<N_BTSHFT))
+#define ISARY(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_ARRAY<<N_BTSHFT))
+#define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG||(x)==IMAGE_SYM_CLASS_UNION_TAG||(x)==IMAGE_SYM_CLASS_ENUM_TAG)
+#define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK))
+#define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
+#define TLS_MINIMUM_AVAILABLE 64
+#define REPARSE_DATA_BUFFER_HEADER_SIZE   FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)
+#define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE   FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER, GenericReparseBuffer)
+#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE 16384
+#define IO_REPARSE_TAG_RESERVED_ZERO 0
+#define IO_REPARSE_TAG_RESERVED_ONE 1
+#define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_ONE
+#define IsReparseTagMicrosoft(x) ((x)&0x80000000)
+#define IsReparseTagHighLatency(x) ((x)&0x40000000)
+#define IsReparseTagNameSurrogate(x) ((x)&0x20000000)
+#define IO_REPARSE_TAG_VALID_VALUES 0xE000FFFF
+#define IsReparseTagValid(x) (!((x)&~IO_REPARSE_TAG_VALID_VALUES)&&((x)>IO_REPARSE_TAG_RESERVED_RANGE))
+#define IO_REPARSE_TAG_SYMBOLIC_LINK IO_REPARSE_TAG_RESERVED_ZERO
+#define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003
+#ifndef RC_INVOKED
+typedef DWORD ACCESS_MASK, *PACCESS_MASK;
+#ifndef _GUID_DEFINED /* also defined in basetyps.h */
+#define _GUID_DEFINED
+typedef struct _GUID {
+	unsigned long  Data1;
+	unsigned short Data2;
+	unsigned short Data3;
+	unsigned char  Data4[8];
+} GUID, *REFGUID, *LPGUID;
+#define SYSTEM_LUID { QuadPart:999 }
+#endif /* _GUID_DEFINED */
+typedef struct _GENERIC_MAPPING {
+	ACCESS_MASK GenericRead;
+	ACCESS_MASK GenericWrite;
+	ACCESS_MASK GenericExecute;
+	ACCESS_MASK GenericAll;
+} GENERIC_MAPPING, *PGENERIC_MAPPING;
+typedef struct _ACE_HEADER {
+	BYTE AceType;
+	BYTE AceFlags;
+	WORD AceSize;
+} ACE_HEADER;
+typedef struct _ACCESS_ALLOWED_ACE {
+	ACE_HEADER Header;
+	ACCESS_MASK Mask;
+	DWORD SidStart;
+} ACCESS_ALLOWED_ACE;
+typedef struct _ACCESS_DENIED_ACE {
+	ACE_HEADER Header;
+	ACCESS_MASK Mask;
+	DWORD SidStart;
+} ACCESS_DENIED_ACE;
+typedef struct _SYSTEM_AUDIT_ACE {
+	ACE_HEADER Header;
+	ACCESS_MASK Mask;
+	DWORD SidStart;
+} SYSTEM_AUDIT_ACE;
+typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE;
+typedef struct _SYSTEM_ALARM_ACE {
+	ACE_HEADER Header;
+	ACCESS_MASK Mask;
+	DWORD SidStart;
+} SYSTEM_ALARM_ACE,*PSYSTEM_ALARM_ACE;
+typedef struct _ACCESS_ALLOWED_OBJECT_ACE {
+	ACE_HEADER Header;
+	ACCESS_MASK Mask;
+	DWORD Flags;
+	GUID ObjectType;
+	GUID InheritedObjectType;
+	DWORD SidStart;
+} ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE;
+typedef struct _ACCESS_DENIED_OBJECT_ACE {
+	ACE_HEADER Header;
+	ACCESS_MASK Mask;
+	DWORD Flags;
+	GUID ObjectType;
+	GUID InheritedObjectType;
+	DWORD SidStart;
+} ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE;
+typedef struct _SYSTEM_AUDIT_OBJECT_ACE {
+	ACE_HEADER Header;
+	ACCESS_MASK Mask;
+	DWORD Flags;
+	GUID ObjectType;
+	GUID InheritedObjectType;
+	DWORD SidStart;
+} SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE;
+typedef struct _SYSTEM_ALARM_OBJECT_ACE {
+	ACE_HEADER Header;
+	ACCESS_MASK Mask;
+	DWORD Flags;
+	GUID ObjectType;
+	GUID InheritedObjectType;
+	DWORD SidStart;
+} SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE;
+typedef struct _ACL {
+	BYTE AclRevision;
+	BYTE Sbz1;
+	WORD AclSize;
+	WORD AceCount;
+	WORD Sbz2;
+} ACL,*PACL;
+typedef struct _ACL_REVISION_INFORMATION {
+	DWORD AclRevision;
+} ACL_REVISION_INFORMATION;
+typedef struct _ACL_SIZE_INFORMATION {
+	DWORD   AceCount;
+	DWORD   AclBytesInUse;
+	DWORD   AclBytesFree;
+} ACL_SIZE_INFORMATION;
+
+/* FIXME: add more machines */
+#ifdef _X86_
+#define SIZE_OF_80387_REGISTERS	80
+#define CONTEXT_i386	0x10000
+#define CONTEXT_i486	0x10000
+#define CONTEXT_CONTROL	(CONTEXT_i386|0x00000001L)
+#define CONTEXT_INTEGER	(CONTEXT_i386|0x00000002L)
+#define CONTEXT_SEGMENTS	(CONTEXT_i386|0x00000004L)
+#define CONTEXT_FLOATING_POINT	(CONTEXT_i386|0x00000008L)
+#define CONTEXT_DEBUG_REGISTERS	(CONTEXT_i386|0x00000010L)
+#define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L)
+#define CONTEXT_FULL	(CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS)
+#define MAXIMUM_SUPPORTED_EXTENSION  512
+typedef struct _FLOATING_SAVE_AREA {
+	DWORD	ControlWord;
+	DWORD	StatusWord;
+	DWORD	TagWord;
+	DWORD	ErrorOffset;
+	DWORD	ErrorSelector;
+	DWORD	DataOffset;
+	DWORD	DataSelector;
+	BYTE	RegisterArea[80];
+	DWORD	Cr0NpxState;
+} FLOATING_SAVE_AREA;
+typedef struct _CONTEXT {
+	DWORD	ContextFlags;
+	DWORD	Dr0;
+	DWORD	Dr1;
+	DWORD	Dr2;
+	DWORD	Dr3;
+	DWORD	Dr6;
+	DWORD	Dr7;
+	FLOATING_SAVE_AREA FloatSave;
+	DWORD	SegGs;
+	DWORD	SegFs;
+	DWORD	SegEs;
+	DWORD	SegDs;
+	DWORD	Edi;
+	DWORD	Esi;
+	DWORD	Ebx;
+	DWORD	Edx;
+	DWORD	Ecx;
+	DWORD	Eax;
+	DWORD	Ebp;
+	DWORD	Eip;
+	DWORD	SegCs;
+	DWORD	EFlags;
+	DWORD	Esp;
+	DWORD	SegSs;
+	BYTE	ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
+} CONTEXT;
+#elif defined(_PPC_)
+#define CONTEXT_CONTROL	1L
+#define CONTEXT_FLOATING_POINT	2L
+#define CONTEXT_INTEGER	4L
+#define CONTEXT_DEBUG_REGISTERS	8L
+#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER)
+typedef struct {
+	double Fpr0;
+	double Fpr1;
+	double Fpr2;
+	double Fpr3;
+	double Fpr4;
+	double Fpr5;
+	double Fpr6;
+	double Fpr7;
+	double Fpr8;
+	double Fpr9;
+	double Fpr10;
+	double Fpr11;
+	double Fpr12;
+	double Fpr13;
+	double Fpr14;
+	double Fpr15;
+	double Fpr16;
+	double Fpr17;
+	double Fpr18;
+	double Fpr19;
+	double Fpr20;
+	double Fpr21;
+	double Fpr22;
+	double Fpr23;
+	double Fpr24;
+	double Fpr25;
+	double Fpr26;
+	double Fpr27;
+	double Fpr28;
+	double Fpr29;
+	double Fpr30;
+	double Fpr31;
+	double Fpscr;
+	DWORD Gpr0;
+	DWORD Gpr1;
+	DWORD Gpr2;
+	DWORD Gpr3;
+	DWORD Gpr4;
+	DWORD Gpr5;
+	DWORD Gpr6;
+	DWORD Gpr7;
+	DWORD Gpr8;
+	DWORD Gpr9;
+	DWORD Gpr10;
+	DWORD Gpr11;
+	DWORD Gpr12;
+	DWORD Gpr13;
+	DWORD Gpr14;
+	DWORD Gpr15;
+	DWORD Gpr16;
+	DWORD Gpr17;
+	DWORD Gpr18;
+	DWORD Gpr19;
+	DWORD Gpr20;
+	DWORD Gpr21;
+	DWORD Gpr22;
+	DWORD Gpr23;
+	DWORD Gpr24;
+	DWORD Gpr25;
+	DWORD Gpr26;
+	DWORD Gpr27;
+	DWORD Gpr28;
+	DWORD Gpr29;
+	DWORD Gpr30;
+	DWORD Gpr31;
+	DWORD Cr;
+	DWORD Xer;
+	DWORD Msr;
+	DWORD Iar;
+	DWORD Lr;
+	DWORD Ctr;
+	DWORD ContextFlags;
+	DWORD Fill[3];
+	DWORD Dr0;
+	DWORD Dr1;
+	DWORD Dr2;
+	DWORD Dr3;
+	DWORD Dr4;
+	DWORD Dr5;
+	DWORD Dr6;
+	DWORD Dr7;
+} CONTEXT;
+#elif defined(_ALPHA_)
+#define CONTEXT_ALPHA	0x20000
+#define CONTEXT_CONTROL	(CONTEXT_ALPHA|1L)
+#define CONTEXT_FLOATING_POINT	(CONTEXT_ALPHA|2L)
+#define CONTEXT_INTEGER	(CONTEXT_ALPHA|4L)
+#define CONTEXT_FULL	(CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER)
+typedef struct _CONTEXT {
+	ULONGLONG FltF0;
+	ULONGLONG FltF1;
+	ULONGLONG FltF2;
+	ULONGLONG FltF3;
+	ULONGLONG FltF4;
+	ULONGLONG FltF5;
+	ULONGLONG FltF6;
+	ULONGLONG FltF7;
+	ULONGLONG FltF8;
+	ULONGLONG FltF9;
+	ULONGLONG FltF10;
+	ULONGLONG FltF11;
+	ULONGLONG FltF12;
+	ULONGLONG FltF13;
+	ULONGLONG FltF14;
+	ULONGLONG FltF15;
+	ULONGLONG FltF16;
+	ULONGLONG FltF17;
+	ULONGLONG FltF18;
+	ULONGLONG FltF19;
+	ULONGLONG FltF20;
+	ULONGLONG FltF21;
+	ULONGLONG FltF22;
+	ULONGLONG FltF23;
+	ULONGLONG FltF24;
+	ULONGLONG FltF25;
+	ULONGLONG FltF26;
+	ULONGLONG FltF27;
+	ULONGLONG FltF28;
+	ULONGLONG FltF29;
+	ULONGLONG FltF30;
+	ULONGLONG FltF31;
+	ULONGLONG IntV0;
+	ULONGLONG IntT0;
+	ULONGLONG IntT1;
+	ULONGLONG IntT2;
+	ULONGLONG IntT3;
+	ULONGLONG IntT4;
+	ULONGLONG IntT5;
+	ULONGLONG IntT6;
+	ULONGLONG IntT7;
+	ULONGLONG IntS0;
+	ULONGLONG IntS1;
+	ULONGLONG IntS2;
+	ULONGLONG IntS3;
+	ULONGLONG IntS4;
+	ULONGLONG IntS5;
+	ULONGLONG IntFp;
+	ULONGLONG IntA0;
+	ULONGLONG IntA1;
+	ULONGLONG IntA2;
+	ULONGLONG IntA3;
+	ULONGLONG IntA4;
+	ULONGLONG IntA5;
+	ULONGLONG IntT8;
+	ULONGLONG IntT9;
+	ULONGLONG IntT10;
+	ULONGLONG IntT11;
+	ULONGLONG IntRa;
+	ULONGLONG IntT12;
+	ULONGLONG IntAt;
+	ULONGLONG IntGp;
+	ULONGLONG IntSp;
+	ULONGLONG IntZero;
+	ULONGLONG Fpcr;
+	ULONGLONG SoftFpcr;
+	ULONGLONG Fir;
+	DWORD Psr;
+	DWORD ContextFlags;
+	DWORD Fill[4];
+} CONTEXT;
+#elif defined(SHx)
+
+/* These are the debug or break registers on the SH3 */
+typedef struct _DEBUG_REGISTERS {
+	ULONG  BarA;
+	UCHAR  BasrA;
+	UCHAR  BamrA;
+	USHORT BbrA;
+	ULONG  BarB;
+	UCHAR  BasrB;
+	UCHAR  BamrB;
+	USHORT BbrB;
+	ULONG  BdrB;
+	ULONG  BdmrB;
+	USHORT Brcr;
+	USHORT Align;
+} DEBUG_REGISTERS, *PDEBUG_REGISTERS;
+
+/* The following flags control the contents of the CONTEXT structure. */
+
+#define CONTEXT_SH3		0x00000040
+#define CONTEXT_SH4		0x000000c0	/* CONTEXT_SH3 | 0x80 - must contain the SH3 bits */
+
+#ifdef SH3
+#define CONTEXT_CONTROL         (CONTEXT_SH3 | 0x00000001L)
+#define CONTEXT_INTEGER         (CONTEXT_SH3 | 0x00000002L)
+#define CONTEXT_DEBUG_REGISTERS (CONTEXT_SH3 | 0x00000008L)
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS)
+#else	/* SH4 */
+#define CONTEXT_CONTROL         (CONTEXT_SH4 | 0x00000001L)
+#define CONTEXT_INTEGER         (CONTEXT_SH4 | 0x00000002L)
+#define CONTEXT_DEBUG_REGISTERS (CONTEXT_SH4 | 0x00000008L)
+#define CONTEXT_FLOATING_POINT  (CONTEXT_SH4 | 0x00000004L)
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS | CONTEXT_FLOATING_POINT)
+#endif
+
+/* Context Frame */
+
+/*  This frame is used to store a limited processor context into the */
+/* Thread structure for CPUs which have no floating point support. */
+
+typedef struct _CONTEXT {
+	/* The flags values within this flag control the contents of */
+	/* a CONTEXT record. */
+
+	/* If the context record is used as an input parameter, then */
+	/* for each portion of the context record controlled by a flag */
+	/* whose value is set, it is assumed that that portion of the */
+	/* context record contains valid context. If the context record */
+	/* is being used to modify a thread's context, then only that */
+	/* portion of the threads context will be modified. */
+
+	/* If the context record is used as an IN OUT parameter to capture */
+	/* the context of a thread, then only those portions of the thread's */
+	/* context corresponding to set flags will be returned. */
+
+	/* The context record is never used as an OUT only parameter. */
+
+
+	ULONG ContextFlags;
+
+	/* This section is specified/returned if the ContextFlags word contains */
+	/* the flag CONTEXT_INTEGER. */
+
+	/* N.B. The registers RA and R15 are defined in this section, but are */
+	/*  considered part of the control context rather than part of the integer */
+	/*  context. */
+
+	ULONG PR;
+	ULONG MACH;
+	ULONG MACL;
+	ULONG GBR;
+	ULONG R0;
+	ULONG R1;
+	ULONG R2;
+	ULONG R3;
+	ULONG R4;
+	ULONG R5;
+	ULONG R6;
+	ULONG R7;
+	ULONG R8;
+	ULONG R9;
+	ULONG R10;
+	ULONG R11;
+	ULONG R12;
+	ULONG R13;
+	ULONG R14;
+	ULONG R15;
+
+	/* This section is specified/returned if the ContextFlags word contains */
+	/* the flag CONTEXT_CONTROL. */
+
+	/* N.B. The registers r15 and ra are defined in the integer section, */
+	/*   but are considered part of the control context rather than part of */
+	/*   the integer context. */
+
+	ULONG Fir;
+	ULONG Psr;
+
+#if !defined(SH3e) && !defined(SH4)
+	ULONG	OldStuff[2];
+	DEBUG_REGISTERS DebugRegisters;
+#else
+	ULONG	Fpscr;
+	ULONG	Fpul;
+	ULONG	FRegs[16];
+#if defined(SH4)
+	ULONG	xFRegs[16];
+#endif
+#endif
+} CONTEXT;
+
+#elif defined(MIPS)
+
+/* The following flags control the contents of the CONTEXT structure. */
+
+#define CONTEXT_R4000   0x00010000    /* r4000 context */
+
+#define CONTEXT_CONTROL         (CONTEXT_R4000 | 0x00000001L)
+#define CONTEXT_FLOATING_POINT  (CONTEXT_R4000 | 0x00000002L)
+#define CONTEXT_INTEGER         (CONTEXT_R4000 | 0x00000004L)
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+
+/* Context Frame */
+
+/*  N.B. This frame must be exactly a multiple of 16 bytes in length. */
+
+/*  This frame has a several purposes: 1) it is used as an argument to */
+/*  NtContinue, 2) it is used to constuct a call frame for APC delivery, */
+/*  3) it is used to construct a call frame for exception dispatching */
+/*  in user mode, and 4) it is used in the user level thread creation */
+/*  routines. */
+
+/*  The layout of the record conforms to a standard call frame. */
+
+
+typedef struct _CONTEXT {
+
+	/* This section is always present and is used as an argument build */
+	/* area. */
+
+	DWORD Argument[4];
+
+	/* This section is specified/returned if the ContextFlags word contains */
+	/* the flag CONTEXT_FLOATING_POINT. */
+
+	DWORD FltF0;
+	DWORD FltF1;
+	DWORD FltF2;
+	DWORD FltF3;
+	DWORD FltF4;
+	DWORD FltF5;
+	DWORD FltF6;
+	DWORD FltF7;
+	DWORD FltF8;
+	DWORD FltF9;
+	DWORD FltF10;
+	DWORD FltF11;
+	DWORD FltF12;
+	DWORD FltF13;
+	DWORD FltF14;
+	DWORD FltF15;
+	DWORD FltF16;
+	DWORD FltF17;
+	DWORD FltF18;
+	DWORD FltF19;
+	DWORD FltF20;
+	DWORD FltF21;
+	DWORD FltF22;
+	DWORD FltF23;
+	DWORD FltF24;
+	DWORD FltF25;
+	DWORD FltF26;
+	DWORD FltF27;
+	DWORD FltF28;
+	DWORD FltF29;
+	DWORD FltF30;
+	DWORD FltF31;
+
+	/* This section is specified/returned if the ContextFlags word contains */
+	/* the flag CONTEXT_INTEGER. */
+
+	/* N.B. The registers gp, sp, and ra are defined in this section, but are */
+	/*  considered part of the control context rather than part of the integer */
+	/*  context. */
+
+	/* N.B. Register zero is not stored in the frame. */
+
+	DWORD IntZero;
+	DWORD IntAt;
+	DWORD IntV0;
+	DWORD IntV1;
+	DWORD IntA0;
+	DWORD IntA1;
+	DWORD IntA2;
+	DWORD IntA3;
+	DWORD IntT0;
+	DWORD IntT1;
+	DWORD IntT2;
+	DWORD IntT3;
+	DWORD IntT4;
+	DWORD IntT5;
+	DWORD IntT6;
+	DWORD IntT7;
+	DWORD IntS0;
+	DWORD IntS1;
+	DWORD IntS2;
+	DWORD IntS3;
+	DWORD IntS4;
+	DWORD IntS5;
+	DWORD IntS6;
+	DWORD IntS7;
+	DWORD IntT8;
+	DWORD IntT9;
+	DWORD IntK0;
+	DWORD IntK1;
+	DWORD IntGp;
+	DWORD IntSp;
+	DWORD IntS8;
+	DWORD IntRa;
+	DWORD IntLo;
+	DWORD IntHi;
+
+	/* This section is specified/returned if the ContextFlags word contains */
+	/* the flag CONTEXT_FLOATING_POINT. */
+
+	DWORD Fsr;
+
+	/* This section is specified/returned if the ContextFlags word contains */
+	/* the flag CONTEXT_CONTROL. */
+
+	/* N.B. The registers gp, sp, and ra are defined in the integer section, */
+	/*   but are considered part of the control context rather than part of */
+	/*   the integer context. */
+
+	DWORD Fir;
+	DWORD Psr;
+
+	/* The flags values within this flag control the contents of */
+	/* a CONTEXT record. */
+
+	/* If the context record is used as an input parameter, then */
+	/* for each portion of the context record controlled by a flag */
+	/* whose value is set, it is assumed that that portion of the */
+	/* context record contains valid context. If the context record */
+	/* is being used to modify a thread's context, then only that */
+	/* portion of the threads context will be modified. */
+
+	/* If the context record is used as an IN OUT parameter to capture */
+	/* the context of a thread, then only those portions of the thread's */
+	/* context corresponding to set flags will be returned. */
+
+	/* The context record is never used as an OUT only parameter. */
+
+	DWORD ContextFlags;
+
+	DWORD Fill[2];
+
+} CONTEXT;
+#elif defined(ARM)
+
+/* The following flags control the contents of the CONTEXT structure. */
+
+#define CONTEXT_ARM    0x0000040
+#define CONTEXT_CONTROL         (CONTEXT_ARM | 0x00000001L)
+#define CONTEXT_INTEGER         (CONTEXT_ARM | 0x00000002L)
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER)
+
+typedef struct _CONTEXT {
+	/* The flags values within this flag control the contents of
+	   a CONTEXT record.
+	  
+	   If the context record is used as an input parameter, then
+	   for each portion of the context record controlled by a flag
+	   whose value is set, it is assumed that that portion of the
+	   context record contains valid context. If the context record
+	   is being used to modify a thread's context, then only that
+	   portion of the threads context will be modified.
+	  
+	   If the context record is used as an IN OUT parameter to capture
+	   the context of a thread, then only those portions of the thread's
+	   context corresponding to set flags will be returned.
+	  
+	   The context record is never used as an OUT only parameter. */
+
+	ULONG ContextFlags;
+
+	/* This section is specified/returned if the ContextFlags word contains
+	   the flag CONTEXT_INTEGER. */
+	ULONG R0;
+	ULONG R1;
+	ULONG R2;
+	ULONG R3;
+	ULONG R4;
+	ULONG R5;
+	ULONG R6;
+	ULONG R7;
+	ULONG R8;
+	ULONG R9;
+	ULONG R10;
+	ULONG R11;
+	ULONG R12;
+
+	ULONG Sp;
+	ULONG Lr;
+	ULONG Pc;
+	ULONG Psr;
+} CONTEXT;
+
+#else
+#error "undefined processor type"
+#endif
+typedef CONTEXT *PCONTEXT,*LPCONTEXT;
+typedef struct _EXCEPTION_RECORD {
+	DWORD ExceptionCode;
+	DWORD ExceptionFlags;
+	struct _EXCEPTION_RECORD *ExceptionRecord;
+	PVOID ExceptionAddress;
+	DWORD NumberParameters;
+	DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
+} EXCEPTION_RECORD,*PEXCEPTION_RECORD;
+typedef struct _EXCEPTION_POINTERS {
+	PEXCEPTION_RECORD ExceptionRecord;
+	PCONTEXT ContextRecord;
+} EXCEPTION_POINTERS,*PEXCEPTION_POINTERS,*LPEXCEPTION_POINTERS;
+typedef union _LARGE_INTEGER {
+  struct {
+    DWORD LowPart;
+    LONG  HighPart;
+  } u;
+#if ! defined(NONAMELESSUNION) || defined(__cplusplus)
+  _ANONYMOUS_STRUCT struct {
+    DWORD LowPart;
+    LONG  HighPart;
+  };
+#endif /* NONAMELESSUNION */
+  LONGLONG QuadPart;
+} LARGE_INTEGER, *PLARGE_INTEGER;
+typedef union _ULARGE_INTEGER {
+  struct {
+    DWORD LowPart;
+    DWORD HighPart;
+  } u;
+#if ! defined(NONAMELESSUNION) || defined(__cplusplus)
+  _ANONYMOUS_STRUCT struct {
+    DWORD LowPart;
+    DWORD HighPart;
+  };
+#endif /* NONAMELESSUNION */
+  ULONGLONG QuadPart;
+} ULARGE_INTEGER, *PULARGE_INTEGER;
+typedef LARGE_INTEGER LUID,*PLUID;
+#pragma pack(push,4)
+typedef struct _LUID_AND_ATTRIBUTES {
+	LUID   Luid;
+	DWORD  Attributes;
+} LUID_AND_ATTRIBUTES;
+#pragma pack(pop)
+typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
+typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
+typedef struct _PRIVILEGE_SET {
+	DWORD PrivilegeCount;
+	DWORD Control;
+	LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
+} PRIVILEGE_SET,*PPRIVILEGE_SET;
+typedef struct _SECURITY_ATTRIBUTES {
+	DWORD nLength;
+	LPVOID lpSecurityDescriptor;
+	BOOL bInheritHandle;
+} SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES;
+typedef enum _SECURITY_IMPERSONATION_LEVEL {
+	SecurityAnonymous,
+	SecurityIdentification,
+	SecurityImpersonation,
+	SecurityDelegation
+} SECURITY_IMPERSONATION_LEVEL;
+typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE;
+typedef struct _SECURITY_QUALITY_OF_SERVICE {
+	DWORD Length;
+	SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+	SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
+	BOOLEAN EffectiveOnly;
+} SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE;
+typedef PVOID PACCESS_TOKEN;
+typedef struct _SE_IMPERSONATION_STATE {
+	PACCESS_TOKEN Token;
+	BOOLEAN CopyOnOpen;
+	BOOLEAN EffectiveOnly;
+	SECURITY_IMPERSONATION_LEVEL Level;
+} SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE;
+typedef struct _SID_IDENTIFIER_AUTHORITY {
+	BYTE Value[6];
+} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
+typedef PVOID PSID;
+typedef struct _SID {
+   BYTE  Revision;
+   BYTE  SubAuthorityCount;
+   SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+   DWORD SubAuthority[ANYSIZE_ARRAY];
+} SID, *PISID;
+typedef struct _SID_AND_ATTRIBUTES {
+	PSID Sid;
+	DWORD Attributes;
+} SID_AND_ATTRIBUTES;
+typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
+typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
+typedef struct _TOKEN_SOURCE {
+	CHAR SourceName[TOKEN_SOURCE_LENGTH];
+	LUID SourceIdentifier;
+} TOKEN_SOURCE,*PTOKEN_SOURCE;
+typedef struct _TOKEN_CONTROL {
+	LUID TokenId;
+	LUID AuthenticationId;
+	LUID ModifiedId;
+	TOKEN_SOURCE TokenSource;
+} TOKEN_CONTROL,*PTOKEN_CONTROL;
+typedef struct _TOKEN_DEFAULT_DACL {
+	PACL DefaultDacl;
+} TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL;
+typedef struct _TOKEN_GROUPS {
+	DWORD GroupCount;
+	SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
+} TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS;
+typedef struct _TOKEN_OWNER {
+	PSID Owner;
+} TOKEN_OWNER,*PTOKEN_OWNER;
+typedef struct _TOKEN_PRIMARY_GROUP {
+	PSID PrimaryGroup;
+} TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP;
+typedef struct _TOKEN_PRIVILEGES {
+	DWORD PrivilegeCount;
+	LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
+} TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES;
+typedef enum tagTOKEN_TYPE { TokenPrimary=1,TokenImpersonation }TOKEN_TYPE;
+typedef struct _TOKEN_STATISTICS {
+	LUID TokenId;
+	LUID AuthenticationId;
+	LARGE_INTEGER ExpirationTime;
+	TOKEN_TYPE TokenType;
+	SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+	DWORD DynamicCharged;
+	DWORD DynamicAvailable;
+	DWORD GroupCount;
+	DWORD PrivilegeCount;
+	LUID ModifiedId;
+} TOKEN_STATISTICS;
+typedef struct _TOKEN_USER {
+	SID_AND_ATTRIBUTES User;
+} TOKEN_USER, *PTOKEN_USER;
+typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION;
+typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL;
+typedef struct _SECURITY_DESCRIPTOR {
+	BYTE Revision;
+	BYTE Sbz1;
+	SECURITY_DESCRIPTOR_CONTROL Control;
+	PSID Owner;
+	PSID Group;
+	PACL Sacl;
+	PACL Dacl;
+} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
+typedef enum _TOKEN_INFORMATION_CLASS {
+	TokenUser=1,TokenGroups,TokenPrivileges,TokenOwner,
+	TokenPrimaryGroup,TokenDefaultDacl,TokenSource,TokenType,
+	TokenImpersonationLevel,TokenStatistics,TokenRestrictedSids,
+	TokenSessionId
+} TOKEN_INFORMATION_CLASS;
+typedef enum _SID_NAME_USE {
+	SidTypeUser=1,SidTypeGroup,SidTypeDomain,SidTypeAlias,SidTypeWellKnownGroup,
+	SidTypeDeletedAccount,SidTypeInvalid,SidTypeUnknown
+} SID_NAME_USE,*PSID_NAME_USE;
+typedef struct _QUOTA_LIMITS {
+	SIZE_T PagedPoolLimit;
+	SIZE_T NonPagedPoolLimit;
+	SIZE_T MinimumWorkingSetSize;
+	SIZE_T MaximumWorkingSetSize;
+	SIZE_T PagefileLimit;
+	LARGE_INTEGER TimeLimit;
+} QUOTA_LIMITS,*PQUOTA_LIMITS;
+typedef struct _IO_COUNTERS {
+	ULONGLONG  ReadOperationCount;
+	ULONGLONG  WriteOperationCount;
+	ULONGLONG  OtherOperationCount;
+	ULONGLONG ReadTransferCount;
+	ULONGLONG WriteTransferCount;
+	ULONGLONG OtherTransferCount;
+} IO_COUNTERS, *PIO_COUNTERS;
+typedef struct _FILE_NOTIFY_INFORMATION {
+	DWORD NextEntryOffset;
+	DWORD Action;
+	DWORD FileNameLength;
+	WCHAR FileName[1];
+} FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION;
+typedef struct _TAPE_ERASE {
+	DWORD Type;
+	BOOLEAN Immediate;
+} TAPE_ERASE,*PTAPE_ERASE;
+typedef struct _TAPE_GET_DRIVE_PARAMETERS {
+	BOOLEAN ECC;
+	BOOLEAN Compression;
+	BOOLEAN DataPadding;
+	BOOLEAN ReportSetmarks;
+ 	DWORD DefaultBlockSize;
+ 	DWORD MaximumBlockSize;
+ 	DWORD MinimumBlockSize;
+ 	DWORD MaximumPartitionCount;
+ 	DWORD FeaturesLow;
+ 	DWORD FeaturesHigh;
+ 	DWORD EOTWarningZoneSize;
+} TAPE_GET_DRIVE_PARAMETERS,*PTAPE_GET_DRIVE_PARAMETERS;
+typedef struct _TAPE_GET_MEDIA_PARAMETERS {
+	LARGE_INTEGER Capacity;
+	LARGE_INTEGER Remaining;
+	DWORD BlockSize;
+	DWORD PartitionCount;
+	BOOLEAN WriteProtected;
+} TAPE_GET_MEDIA_PARAMETERS,*PTAPE_GET_MEDIA_PARAMETERS;
+typedef struct _TAPE_GET_POSITION {
+	ULONG Type;
+	ULONG Partition;
+	ULONG OffsetLow;
+	ULONG OffsetHigh;
+} TAPE_GET_POSITION,*PTAPE_GET_POSITION;
+typedef struct _TAPE_PREPARE {
+	DWORD Operation;
+	BOOLEAN Immediate;
+} TAPE_PREPARE,*PTAPE_PREPARE;
+typedef struct _TAPE_SET_DRIVE_PARAMETERS {
+	BOOLEAN ECC;
+	BOOLEAN Compression;
+	BOOLEAN DataPadding;
+	BOOLEAN ReportSetmarks;
+	ULONG EOTWarningZoneSize;
+} TAPE_SET_DRIVE_PARAMETERS,*PTAPE_SET_DRIVE_PARAMETERS;
+typedef struct _TAPE_SET_MEDIA_PARAMETERS {
+	ULONG BlockSize;
+} TAPE_SET_MEDIA_PARAMETERS,*PTAPE_SET_MEDIA_PARAMETERS;
+typedef struct _TAPE_SET_POSITION {
+	DWORD Method;
+	DWORD Partition;
+	LARGE_INTEGER Offset;
+	BOOLEAN Immediate;
+} TAPE_SET_POSITION,*PTAPE_SET_POSITION;
+typedef struct _TAPE_WRITE_MARKS {
+	DWORD Type;
+	DWORD Count;
+	BOOLEAN Immediate;
+} TAPE_WRITE_MARKS,*PTAPE_WRITE_MARKS;
+typedef struct _TAPE_CREATE_PARTITION {
+	DWORD Method;
+	DWORD Count;
+	DWORD Size;
+} TAPE_CREATE_PARTITION,*PTAPE_CREATE_PARTITION;
+typedef struct _MEMORY_BASIC_INFORMATION {
+	PVOID BaseAddress;
+	PVOID AllocationBase;
+	DWORD AllocationProtect;
+	DWORD RegionSize;
+	DWORD State;
+	DWORD Protect;
+	DWORD Type;
+} MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION;
+typedef struct _MESSAGE_RESOURCE_ENTRY {
+	WORD Length;
+	WORD Flags;
+	BYTE Text[1];
+} MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY;
+typedef struct _MESSAGE_RESOURCE_BLOCK {
+	DWORD LowId;
+	DWORD HighId;
+	DWORD OffsetToEntries;
+} MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK;
+typedef struct _MESSAGE_RESOURCE_DATA {
+	DWORD NumberOfBlocks;
+	MESSAGE_RESOURCE_BLOCK Blocks[1];
+} MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA;
+typedef struct _LIST_ENTRY {
+	struct _LIST_ENTRY *Flink;
+	struct _LIST_ENTRY *Blink;
+} LIST_ENTRY,*PLIST_ENTRY;
+typedef struct _RTL_CRITICAL_SECTION_DEBUG {
+	WORD Type;
+	WORD CreatorBackTraceIndex;
+	struct _RTL_CRITICAL_SECTION *CriticalSection;
+	LIST_ENTRY ProcessLocksList;
+	DWORD EntryCount;
+	DWORD ContentionCount;
+	DWORD Spare[2];
+} RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG;
+typedef struct _RTL_CRITICAL_SECTION {
+	PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
+	LONG LockCount;
+	LONG RecursionCount;
+	HANDLE OwningThread;
+	HANDLE LockSemaphore;
+	DWORD Reserved;
+} RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION;
+typedef struct _EVENTLOGRECORD {
+	DWORD Length;
+	DWORD Reserved;
+	DWORD RecordNumber;
+	DWORD TimeGenerated;
+	DWORD TimeWritten;
+	DWORD EventID;
+	WORD EventType;
+	WORD NumStrings;
+	WORD EventCategory;
+	WORD ReservedFlags;
+	DWORD ClosingRecordNumber;
+	DWORD StringOffset;
+	DWORD UserSidLength;
+	DWORD UserSidOffset;
+	DWORD DataLength;
+	DWORD DataOffset;
+} EVENTLOGRECORD,*PEVENTLOGRECORD;
+typedef struct _OSVERSIONINFOA {
+	DWORD dwOSVersionInfoSize;
+	DWORD dwMajorVersion;
+	DWORD dwMinorVersion;
+	DWORD dwBuildNumber;
+	DWORD dwPlatformId;
+	CHAR szCSDVersion[128];
+} OSVERSIONINFOA,*POSVERSIONINFOA,*LPOSVERSIONINFOA;
+typedef struct _OSVERSIONINFOW {
+	DWORD dwOSVersionInfoSize;
+	DWORD dwMajorVersion;
+	DWORD dwMinorVersion;
+	DWORD dwBuildNumber;
+	DWORD dwPlatformId;
+	WCHAR szCSDVersion[128];
+} OSVERSIONINFOW,*POSVERSIONINFOW,*LPOSVERSIONINFOW;
+typedef struct _OSVERSIONINFOEXA {
+	DWORD dwOSVersionInfoSize;
+	DWORD dwMajorVersion;
+	DWORD dwMinorVersion;
+	DWORD dwBuildNumber;
+	DWORD dwPlatformId;
+	CHAR szCSDVersion[128];
+	WORD wServicePackMajor;
+	WORD wServicePackMinor;
+	WORD wSuiteMask;
+	BYTE wProductType;
+	BYTE wReserved;
+} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
+typedef struct _OSVERSIONINFOEXW {
+	DWORD dwOSVersionInfoSize;
+	DWORD dwMajorVersion;
+	DWORD dwMinorVersion;
+	DWORD dwBuildNumber;
+	DWORD dwPlatformId;
+	WCHAR szCSDVersion[128];
+	WORD wServicePackMajor;
+	WORD wServicePackMinor;
+	WORD wSuiteMask;
+	BYTE wProductType;
+	BYTE wReserved;
+} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW;
+#pragma pack(push,2)
+typedef struct _IMAGE_VXD_HEADER {
+	WORD e32_magic;
+	BYTE e32_border;
+	BYTE e32_worder;
+	DWORD e32_level;
+	WORD e32_cpu;
+	WORD e32_os;
+	DWORD e32_ver;
+	DWORD e32_mflags;
+	DWORD e32_mpages;
+	DWORD e32_startobj;
+	DWORD e32_eip;
+	DWORD e32_stackobj;
+	DWORD e32_esp;
+	DWORD e32_pagesize;
+	DWORD e32_lastpagesize;
+	DWORD e32_fixupsize;
+	DWORD e32_fixupsum;
+	DWORD e32_ldrsize;
+	DWORD e32_ldrsum;
+	DWORD e32_objtab;
+	DWORD e32_objcnt;
+	DWORD e32_objmap;
+	DWORD e32_itermap;
+	DWORD e32_rsrctab;
+	DWORD e32_rsrccnt;
+	DWORD e32_restab;
+	DWORD e32_enttab;
+	DWORD e32_dirtab;
+	DWORD e32_dircnt;
+	DWORD e32_fpagetab;
+	DWORD e32_frectab;
+	DWORD e32_impmod;
+	DWORD e32_impmodcnt;
+	DWORD e32_impproc;
+	DWORD e32_pagesum;
+	DWORD e32_datapage;
+	DWORD e32_preload;
+	DWORD e32_nrestab;
+	DWORD e32_cbnrestab;
+	DWORD e32_nressum;
+	DWORD e32_autodata;
+	DWORD e32_debuginfo;
+	DWORD e32_debuglen;
+	DWORD e32_instpreload;
+	DWORD e32_instdemand;
+	DWORD e32_heapsize;
+	BYTE e32_res3[12];
+	DWORD e32_winresoff;
+	DWORD e32_winreslen;
+	WORD e32_devid;
+	WORD e32_ddkver;
+} IMAGE_VXD_HEADER,*PIMAGE_VXD_HEADER;
+#pragma pack(pop)
+#pragma pack(push,4)
+typedef struct _IMAGE_FILE_HEADER {
+	WORD Machine;
+	WORD NumberOfSections;
+	DWORD TimeDateStamp;
+	DWORD PointerToSymbolTable;
+	DWORD NumberOfSymbols;
+	WORD SizeOfOptionalHeader;
+	WORD Characteristics;
+} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
+typedef struct _IMAGE_DATA_DIRECTORY {
+	DWORD VirtualAddress;
+	DWORD Size;
+} IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY;
+typedef struct _IMAGE_OPTIONAL_HEADER {
+	WORD Magic;
+	BYTE MajorLinkerVersion;
+	BYTE MinorLinkerVersion;
+	DWORD SizeOfCode;
+	DWORD SizeOfInitializedData;
+	DWORD SizeOfUninitializedData;
+	DWORD AddressOfEntryPoint;
+	DWORD BaseOfCode;
+	DWORD BaseOfData;
+	DWORD ImageBase;
+	DWORD SectionAlignment;
+	DWORD FileAlignment;
+	WORD MajorOperatingSystemVersion;
+	WORD MinorOperatingSystemVersion;
+	WORD MajorImageVersion;
+	WORD MinorImageVersion;
+	WORD MajorSubsystemVersion;
+	WORD MinorSubsystemVersion;
+	DWORD Reserved1;
+	DWORD SizeOfImage;
+	DWORD SizeOfHeaders;
+	DWORD CheckSum;
+	WORD Subsystem;
+	WORD DllCharacteristics;
+	DWORD SizeOfStackReserve;
+	DWORD SizeOfStackCommit;
+	DWORD SizeOfHeapReserve;
+	DWORD SizeOfHeapCommit;
+	DWORD LoaderFlags;
+	DWORD NumberOfRvaAndSizes;
+	IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER,*PIMAGE_OPTIONAL_HEADER;
+typedef struct _IMAGE_ROM_OPTIONAL_HEADER {
+	WORD Magic;
+	BYTE MajorLinkerVersion;
+	BYTE MinorLinkerVersion;
+	DWORD SizeOfCode;
+	DWORD SizeOfInitializedData;
+	DWORD SizeOfUninitializedData;
+	DWORD AddressOfEntryPoint;
+	DWORD BaseOfCode;
+	DWORD BaseOfData;
+	DWORD BaseOfBss;
+	DWORD GprMask;
+	DWORD CprMask[4];
+	DWORD GpValue;
+} IMAGE_ROM_OPTIONAL_HEADER,*PIMAGE_ROM_OPTIONAL_HEADER;
+#pragma pack(pop)
+#pragma pack(push,2)
+typedef struct _IMAGE_DOS_HEADER {
+	WORD e_magic;
+	WORD e_cblp;
+	WORD e_cp;
+	WORD e_crlc;
+	WORD e_cparhdr;
+	WORD e_minalloc;
+	WORD e_maxalloc;
+	WORD e_ss;
+	WORD e_sp;
+	WORD e_csum;
+	WORD e_ip;
+	WORD e_cs;
+	WORD e_lfarlc;
+	WORD e_ovno;
+	WORD e_res[4];
+	WORD e_oemid;
+	WORD e_oeminfo;
+	WORD e_res2[10];
+	LONG e_lfanew;
+} IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
+typedef struct _IMAGE_OS2_HEADER {
+	WORD ne_magic;
+	CHAR ne_ver;
+	CHAR ne_rev;
+	WORD ne_enttab;
+	WORD ne_cbenttab;
+	LONG ne_crc;
+	WORD ne_flags;
+	WORD ne_autodata;
+	WORD ne_heap;
+	WORD ne_stack;
+	LONG ne_csip;
+	LONG ne_sssp;
+	WORD ne_cseg;
+	WORD ne_cmod;
+	WORD ne_cbnrestab;
+	WORD ne_segtab;
+	WORD ne_rsrctab;
+	WORD ne_restab;
+	WORD ne_modtab;
+	WORD ne_imptab;
+	LONG ne_nrestab;
+	WORD ne_cmovent;
+	WORD ne_align;
+	WORD ne_cres;
+	BYTE ne_exetyp;
+	BYTE ne_flagsothers;
+	WORD ne_pretthunks;
+	WORD ne_psegrefbytes;
+	WORD ne_swaparea;
+	WORD ne_expver;
+} IMAGE_OS2_HEADER,*PIMAGE_OS2_HEADER;
+#pragma pack(pop)
+#pragma pack(push,4)
+typedef struct _IMAGE_NT_HEADERS {
+	DWORD Signature;
+	IMAGE_FILE_HEADER FileHeader;
+	IMAGE_OPTIONAL_HEADER OptionalHeader;
+} IMAGE_NT_HEADERS,*PIMAGE_NT_HEADERS;
+typedef struct _IMAGE_ROM_HEADERS {
+	IMAGE_FILE_HEADER FileHeader;
+	IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
+} IMAGE_ROM_HEADERS,*PIMAGE_ROM_HEADERS;
+typedef struct _IMAGE_SECTION_HEADER {
+	BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
+	union {
+		DWORD PhysicalAddress;
+		DWORD VirtualSize;
+	} Misc;
+	DWORD VirtualAddress;
+	DWORD SizeOfRawData;
+	DWORD PointerToRawData;
+	DWORD PointerToRelocations;
+	DWORD PointerToLinenumbers;
+	WORD NumberOfRelocations;
+	WORD NumberOfLinenumbers;
+	DWORD Characteristics;
+} IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
+#pragma pack(pop)
+#pragma pack(push,2)
+typedef struct _IMAGE_SYMBOL {
+	union {
+		BYTE ShortName[8];
+		struct {
+			DWORD Short;
+			DWORD Long;
+		} Name;
+		PBYTE LongName[2];
+	} N;
+	DWORD Value;
+	SHORT SectionNumber;
+	WORD Type;
+	BYTE StorageClass;
+	BYTE NumberOfAuxSymbols;
+} IMAGE_SYMBOL,*PIMAGE_SYMBOL;
+typedef union _IMAGE_AUX_SYMBOL {
+	struct {
+		DWORD TagIndex;
+		union {
+			struct {
+				WORD Linenumber;
+				WORD Size;
+			} LnSz;
+			DWORD TotalSize;
+		} Misc;
+		union {
+			struct {
+				DWORD PointerToLinenumber;
+				DWORD PointerToNextFunction;
+			} Function;
+			struct {
+				WORD Dimension[4];
+			} Array;
+		} FcnAry;
+		WORD TvIndex;
+	} Sym;
+	struct {
+		BYTE Name[IMAGE_SIZEOF_SYMBOL];
+	} File;
+	struct {
+		DWORD Length;
+		WORD NumberOfRelocations;
+		WORD NumberOfLinenumbers;
+		DWORD CheckSum;
+		SHORT Number;
+		BYTE Selection;
+	} Section;
+} IMAGE_AUX_SYMBOL,*PIMAGE_AUX_SYMBOL;
+typedef struct _IMAGE_COFF_SYMBOLS_HEADER {
+	DWORD NumberOfSymbols;
+	DWORD LvaToFirstSymbol;
+	DWORD NumberOfLinenumbers;
+	DWORD LvaToFirstLinenumber;
+	DWORD RvaToFirstByteOfCode;
+	DWORD RvaToLastByteOfCode;
+	DWORD RvaToFirstByteOfData;
+	DWORD RvaToLastByteOfData;
+} IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER;
+typedef struct _IMAGE_RELOCATION {
+	_ANONYMOUS_UNION union {
+		DWORD VirtualAddress;
+		DWORD RelocCount;
+	} DUMMYUNIONNAME;
+	DWORD SymbolTableIndex;
+	WORD Type;
+} IMAGE_RELOCATION,*PIMAGE_RELOCATION;
+#pragma pack(pop)
+#pragma pack(push,4)
+typedef struct _IMAGE_BASE_RELOCATION {
+	DWORD VirtualAddress;
+	DWORD SizeOfBlock;
+} IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION;
+#pragma pack(pop)
+#pragma pack(push,2)
+typedef struct _IMAGE_LINENUMBER {
+	union {
+		DWORD SymbolTableIndex;
+		DWORD VirtualAddress;
+	} Type;
+	WORD Linenumber;
+} IMAGE_LINENUMBER,*PIMAGE_LINENUMBER;
+#pragma pack(pop)
+#pragma pack(push,4)
+typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER {
+	BYTE Name[16];
+	BYTE Date[12];
+	BYTE UserID[6];
+	BYTE GroupID[6];
+	BYTE Mode[8];
+	BYTE Size[10];
+	BYTE EndHeader[2];
+} IMAGE_ARCHIVE_MEMBER_HEADER,*PIMAGE_ARCHIVE_MEMBER_HEADER;
+typedef struct _IMAGE_EXPORT_DIRECTORY {
+	DWORD Characteristics;
+	DWORD TimeDateStamp;
+	WORD MajorVersion;
+	WORD MinorVersion;
+	DWORD Name;
+	DWORD Base;
+	DWORD NumberOfFunctions;
+	DWORD NumberOfNames;
+	PDWORD *AddressOfFunctions;
+	PDWORD *AddressOfNames;
+	PWORD *AddressOfNameOrdinals;
+} IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;
+typedef struct _IMAGE_IMPORT_BY_NAME {
+	WORD Hint;
+	BYTE Name[1];
+} IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME;
+typedef struct _IMAGE_THUNK_DATA {
+	union {
+		PBYTE ForwarderString;
+		PDWORD Function;
+		DWORD Ordinal;
+		PIMAGE_IMPORT_BY_NAME AddressOfData;
+	} u1;
+} IMAGE_THUNK_DATA,*PIMAGE_THUNK_DATA;
+typedef struct _IMAGE_IMPORT_DESCRIPTOR {
+	_ANONYMOUS_UNION union {
+		DWORD Characteristics;
+		PIMAGE_THUNK_DATA OriginalFirstThunk;
+	} DUMMYUNIONNAME;
+	DWORD TimeDateStamp;
+	DWORD ForwarderChain;
+	DWORD Name;
+	PIMAGE_THUNK_DATA FirstThunk;
+} IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR;
+typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR {
+	DWORD TimeDateStamp;
+	WORD OffsetModuleName;
+	WORD NumberOfModuleForwarderRefs;
+} IMAGE_BOUND_IMPORT_DESCRIPTOR,*PIMAGE_BOUND_IMPORT_DESCRIPTOR;
+typedef struct _IMAGE_BOUND_FORWARDER_REF {
+	DWORD TimeDateStamp;
+	WORD OffsetModuleName;
+	WORD Reserved;
+} IMAGE_BOUND_FORWARDER_REF,*PIMAGE_BOUND_FORWARDER_REF;
+typedef void(NTAPI *PIMAGE_TLS_CALLBACK)(PVOID,DWORD,PVOID);
+typedef struct _IMAGE_TLS_DIRECTORY {
+	DWORD StartAddressOfRawData;
+	DWORD EndAddressOfRawData;
+	PDWORD AddressOfIndex;
+	PIMAGE_TLS_CALLBACK *AddressOfCallBacks;
+	DWORD SizeOfZeroFill;
+	DWORD Characteristics;
+} IMAGE_TLS_DIRECTORY,*PIMAGE_TLS_DIRECTORY;
+typedef struct _IMAGE_RESOURCE_DIRECTORY {
+	DWORD Characteristics;
+	DWORD TimeDateStamp;
+	WORD MajorVersion;
+	WORD MinorVersion;
+	WORD NumberOfNamedEntries;
+	WORD NumberOfIdEntries;
+} IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY;
+_ANONYMOUS_STRUCT typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
+	_ANONYMOUS_UNION union {
+		_ANONYMOUS_STRUCT struct {
+			DWORD NameOffset:31;
+			DWORD NameIsString:1;
+		}DUMMYSTRUCTNAME;
+		DWORD Name;
+		WORD Id;
+	} DUMMYUNIONNAME;
+	_ANONYMOUS_UNION union {
+		DWORD OffsetToData;
+		_ANONYMOUS_STRUCT struct {
+			DWORD OffsetToDirectory:31;
+			DWORD DataIsDirectory:1;
+		} DUMMYSTRUCTNAME2;
+	} DUMMYUNIONNAME2;
+} IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY;
+typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING {
+	WORD Length;
+	CHAR NameString[1];
+} IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING;
+typedef struct _IMAGE_RESOURCE_DIR_STRING_U {
+	WORD Length;
+	WCHAR NameString[1];
+} IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U;
+typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
+	DWORD OffsetToData;
+	DWORD Size;
+	DWORD CodePage;
+	DWORD Reserved;
+} IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY;
+typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY {
+	DWORD Characteristics;
+	DWORD TimeDateStamp;
+	WORD MajorVersion;
+	WORD MinorVersion;
+	DWORD GlobalFlagsClear;
+	DWORD GlobalFlagsSet;
+	DWORD CriticalSectionDefaultTimeout;
+	DWORD DeCommitFreeBlockThreshold;
+	DWORD DeCommitTotalFreeThreshold;
+	PVOID LockPrefixTable;
+	DWORD MaximumAllocationSize;
+	DWORD VirtualMemoryThreshold;
+	DWORD ProcessHeapFlags;
+	DWORD Reserved[4];
+} IMAGE_LOAD_CONFIG_DIRECTORY,*PIMAGE_LOAD_CONFIG_DIRECTORY;
+typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY {
+	DWORD BeginAddress;
+	DWORD EndAddress;
+	PVOID ExceptionHandler;
+	PVOID HandlerData;
+	DWORD PrologEndAddress;
+} IMAGE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_RUNTIME_FUNCTION_ENTRY;
+typedef struct _IMAGE_DEBUG_DIRECTORY {
+	DWORD Characteristics;
+	DWORD TimeDateStamp;
+	WORD MajorVersion;
+	WORD MinorVersion;
+	DWORD Type;
+	DWORD SizeOfData;
+	DWORD AddressOfRawData;
+	DWORD PointerToRawData;
+} IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY;
+typedef struct _FPO_DATA {
+	DWORD ulOffStart;
+	DWORD cbProcSize;
+	DWORD cdwLocals;
+	WORD cdwParams;
+	WORD cbProlog:8;
+	WORD cbRegs:3;
+	WORD fHasSEH:1;
+	WORD fUseBP:1;
+	WORD reserved:1;
+	WORD cbFrame:2;
+} FPO_DATA,*PFPO_DATA;
+typedef struct _IMAGE_DEBUG_MISC {
+	DWORD DataType;
+	DWORD Length;
+	BOOLEAN Unicode;
+	BYTE Reserved[3];
+	BYTE Data[1];
+} IMAGE_DEBUG_MISC,*PIMAGE_DEBUG_MISC;
+typedef struct _IMAGE_FUNCTION_ENTRY {
+	DWORD StartingAddress;
+	DWORD EndingAddress;
+	DWORD EndOfPrologue;
+} IMAGE_FUNCTION_ENTRY,*PIMAGE_FUNCTION_ENTRY;
+typedef struct _IMAGE_SEPARATE_DEBUG_HEADER {
+	WORD Signature;
+	WORD Flags;
+	WORD Machine;
+	WORD Characteristics;
+	DWORD TimeDateStamp;
+	DWORD CheckSum;
+	DWORD ImageBase;
+	DWORD SizeOfImage;
+	DWORD NumberOfSections;
+	DWORD ExportedNamesSize;
+	DWORD DebugDirectorySize;
+	DWORD Reserved[3];
+} IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER;
+#pragma pack(pop)
+typedef enum _CM_SERVICE_NODE_TYPE {
+	DriverType=SERVICE_KERNEL_DRIVER,
+	FileSystemType=SERVICE_FILE_SYSTEM_DRIVER,
+	Win32ServiceOwnProcess=SERVICE_WIN32_OWN_PROCESS,
+	Win32ServiceShareProcess=SERVICE_WIN32_SHARE_PROCESS,
+	AdapterType=SERVICE_ADAPTER,
+	RecognizerType=SERVICE_RECOGNIZER_DRIVER
+} SERVICE_NODE_TYPE;
+typedef enum _CM_SERVICE_LOAD_TYPE {
+	BootLoad=SERVICE_BOOT_START,
+	SystemLoad=SERVICE_SYSTEM_START,
+	AutoLoad=SERVICE_AUTO_START,
+	DemandLoad=SERVICE_DEMAND_START,
+	DisableLoad=SERVICE_DISABLED
+} SERVICE_LOAD_TYPE;
+typedef enum _CM_ERROR_CONTROL_TYPE {
+	IgnoreError=SERVICE_ERROR_IGNORE,
+	NormalError=SERVICE_ERROR_NORMAL,
+	SevereError=SERVICE_ERROR_SEVERE,
+	CriticalError=SERVICE_ERROR_CRITICAL
+} SERVICE_ERROR_TYPE;
+typedef struct _NT_TIB {
+	struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
+	PVOID StackBase;
+	PVOID StackLimit;
+	PVOID SubSystemTib;
+	_ANONYMOUS_UNION union {
+		PVOID FiberData;
+		DWORD Version;
+	} DUMMYUNIONNAME;
+	PVOID ArbitraryUserPointer;
+	struct _NT_TIB *Self;
+} NT_TIB,*PNT_TIB;
+typedef struct _REPARSE_DATA_BUFFER {
+	DWORD  ReparseTag;
+	WORD   ReparseDataLength;
+	WORD   Reserved;
+	_ANONYMOUS_UNION union {
+		struct {
+			WORD   SubstituteNameOffset;
+			WORD   SubstituteNameLength;
+			WORD   PrintNameOffset;
+			WORD   PrintNameLength;
+			WCHAR PathBuffer[1];
+		} SymbolicLinkReparseBuffer;
+		struct {
+			WORD   SubstituteNameOffset;
+			WORD   SubstituteNameLength;
+			WORD   PrintNameOffset;
+			WORD   PrintNameLength;
+			WCHAR PathBuffer[1];
+		} MountPointReparseBuffer;
+		struct {
+			BYTE   DataBuffer[1];
+		} GenericReparseBuffer;
+	} DUMMYUNIONNAME;
+} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
+typedef struct _REPARSE_GUID_DATA_BUFFER {
+	DWORD  ReparseTag;
+	WORD   ReparseDataLength;
+	WORD   Reserved;
+	GUID   ReparseGuid;
+	struct {
+		BYTE   DataBuffer[1];
+	} GenericReparseBuffer;
+} REPARSE_GUID_DATA_BUFFER, *PREPARSE_GUID_DATA_BUFFER;
+typedef struct _REPARSE_POINT_INFORMATION {
+	WORD   ReparseDataLength;
+	WORD   UnparsedNameLength;
+} REPARSE_POINT_INFORMATION, *PREPARSE_POINT_INFORMATION;
+
+#ifdef UNICODE
+typedef OSVERSIONINFOW OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO;
+typedef OSVERSIONINFOEXW OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX;
+#else
+typedef OSVERSIONINFOA OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO;
+typedef OSVERSIONINFOEXA OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX;
+#endif
+
+#if defined(__GNUC__)
+
+PVOID GetCurrentFiber(void);
+PVOID GetFiberData(void);
+
+PVOID GetCurrentFiber(void);
+extern __inline__ PVOID GetCurrentFiber(void)
+{
+    void* ret;
+    __asm__ volatile (
+	      "movl	%%fs:0x10,%0"
+	        : "=r" (ret) /* allow use of reg eax,ebx,ecx,edx,esi,edi */
+	        :
+		);
+    return ret;
+}
+
+PVOID GetFiberData(void);
+extern __inline__ PVOID GetFiberData(void)
+{
+    void* ret;
+    __asm__ volatile (
+	      "movl	%%fs:0x10,%0\n"
+	      "movl	(%0),%0"
+	       : "=r" (ret) /* allow use of reg eax,ebx,ecx,edx,esi,edi */
+	       :
+	      );
+    return ret;
+}
+
+#else
+
+extern PVOID GetCurrentFiber(void);
+#pragma aux GetCurrentFiber = \
+        "mov	eax, dword ptr fs:0x10" \
+        value [eax] \
+        modify [eax];
+
+extern PVOID GetFiberData(void);
+#pragma aux GetFiberData = \
+	"mov	eax, dword ptr fs:0x10" \
+	"mov	eax, [eax]" \
+        value [eax] \
+        modify [eax];
+        
+#endif /* __GNUC__ */
+
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
+
diff --git a/Win32/bin/tcc/include/winapi/winreg.h b/Win32/bin/tcc/include/winapi/winreg.h
new file mode 100644
index 0000000..712d055
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/winreg.h
@@ -0,0 +1,159 @@
+#ifndef _WINREG_H
+#define _WINREG_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define HKEY_CLASSES_ROOT	((HKEY)0x80000000)
+#define HKEY_CURRENT_USER	((HKEY)0x80000001)
+#define HKEY_LOCAL_MACHINE	((HKEY)0x80000002)
+#define HKEY_USERS	((HKEY)0x80000003)
+#define HKEY_PERFORMANCE_DATA	((HKEY)0x80000004)
+#define HKEY_CURRENT_CONFIG	((HKEY)0x80000005)
+#define HKEY_DYN_DATA	((HKEY)0x80000006)
+#define REG_OPTION_VOLATILE 1
+#define REG_OPTION_NON_VOLATILE 0
+#define REG_CREATED_NEW_KEY 1
+#define REG_OPENED_EXISTING_KEY 2
+#define REG_NONE 0
+#define REG_SZ 1
+#define REG_EXPAND_SZ 2
+#define REG_BINARY 3
+#define REG_DWORD 4
+#define REG_DWORD_BIG_ENDIAN 5
+#define REG_DWORD_LITTLE_ENDIAN 4
+#define REG_LINK 6
+#define REG_MULTI_SZ 7
+#define REG_RESOURCE_LIST 8
+#define REG_FULL_RESOURCE_DESCRIPTOR 9
+#define REG_RESOURCE_REQUIREMENTS_LIST 10
+#define REG_NOTIFY_CHANGE_NAME 1
+#define REG_NOTIFY_CHANGE_ATTRIBUTES 2
+#define REG_NOTIFY_CHANGE_LAST_SET 4
+#define REG_NOTIFY_CHANGE_SECURITY 8
+
+#ifndef RC_INVOKED
+typedef ACCESS_MASK REGSAM;
+typedef struct value_entA {
+	LPSTR ve_valuename;
+	DWORD ve_valuelen;
+	DWORD ve_valueptr;
+	DWORD ve_type;
+} VALENTA,*PVALENTA;
+typedef struct value_entW {
+	LPWSTR ve_valuename;
+	DWORD ve_valuelen;
+	DWORD ve_valueptr;
+	DWORD ve_type;
+} VALENTW,*PVALENTW;
+BOOL WINAPI AbortSystemShutdownA(LPCSTR);
+BOOL WINAPI AbortSystemShutdownW(LPCWSTR);
+BOOL WINAPI InitiateSystemShutdownA(LPSTR,LPSTR,DWORD,BOOL,BOOL);
+BOOL WINAPI InitiateSystemShutdownW(LPWSTR,LPWSTR,DWORD,BOOL,BOOL);
+LONG WINAPI RegCloseKey(HKEY);
+LONG WINAPI RegConnectRegistryA(LPSTR,HKEY,PHKEY);
+LONG WINAPI RegConnectRegistryW(LPWSTR,HKEY,PHKEY);
+LONG WINAPI RegCreateKeyA(HKEY,LPCSTR,PHKEY);
+LONG WINAPI RegCreateKeyExA(HKEY,LPCSTR,DWORD,LPSTR,DWORD,REGSAM,LPSECURITY_ATTRIBUTES,PHKEY,PDWORD);
+LONG WINAPI RegCreateKeyExW(HKEY,LPCWSTR,DWORD,LPWSTR,DWORD,REGSAM,LPSECURITY_ATTRIBUTES,PHKEY,PDWORD);
+LONG WINAPI RegCreateKeyW(HKEY,LPCWSTR,PHKEY);
+LONG WINAPI RegDeleteKeyA(HKEY,LPCSTR);
+LONG WINAPI RegDeleteKeyW(HKEY,LPCWSTR);
+LONG WINAPI RegDeleteValueA (HKEY,LPCSTR);
+LONG WINAPI RegDeleteValueW(HKEY,LPCWSTR);
+LONG WINAPI RegEnumKeyA (HKEY,DWORD,LPSTR,DWORD);
+LONG WINAPI RegEnumKeyW(HKEY,DWORD,LPWSTR,DWORD);
+LONG WINAPI RegEnumKeyExA(HKEY,DWORD,LPSTR,PDWORD,PDWORD,LPSTR,PDWORD,PFILETIME);
+LONG WINAPI RegEnumKeyExW(HKEY,DWORD,LPWSTR,PDWORD,PDWORD,LPWSTR,PDWORD,PFILETIME);
+LONG WINAPI RegEnumValueA(HKEY,DWORD,LPSTR,PDWORD,PDWORD,PDWORD,LPBYTE,PDWORD);
+LONG WINAPI RegEnumValueW(HKEY,DWORD,LPWSTR,PDWORD,PDWORD,PDWORD,LPBYTE,PDWORD);
+LONG WINAPI RegFlushKey(HKEY);
+LONG WINAPI RegGetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,PDWORD);
+LONG WINAPI RegLoadKeyA(HKEY,LPCSTR,LPCSTR);
+LONG WINAPI RegLoadKeyW(HKEY,LPCWSTR,LPCWSTR);
+LONG WINAPI RegNotifyChangeKeyValue(HKEY,BOOL,DWORD,HANDLE,BOOL);
+LONG WINAPI RegOpenKeyA(HKEY,LPCSTR,PHKEY);
+LONG WINAPI RegOpenKeyExA(HKEY,LPCSTR,DWORD,REGSAM,PHKEY);
+LONG WINAPI RegOpenKeyExW(HKEY,LPCWSTR,DWORD,REGSAM,PHKEY);
+LONG WINAPI RegOpenKeyW(HKEY,LPCWSTR,PHKEY);
+LONG WINAPI RegQueryInfoKeyA(HKEY,LPSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME);
+LONG WINAPI RegQueryInfoKeyW(HKEY,LPWSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME);
+LONG WINAPI RegQueryMultipleValuesA(HKEY,PVALENTA,DWORD,LPSTR,PDWORD);
+LONG WINAPI RegQueryMultipleValuesW(HKEY,PVALENTW,DWORD,LPWSTR,PDWORD);
+LONG WINAPI RegQueryValueA(HKEY,LPCSTR,LPSTR,PLONG);
+LONG WINAPI RegQueryValueExA (HKEY,LPCSTR,PDWORD,PDWORD,LPBYTE,PDWORD);
+LONG WINAPI RegQueryValueExW(HKEY,LPCWSTR,PDWORD,PDWORD,LPBYTE,PDWORD);
+LONG WINAPI RegQueryValueW(HKEY,LPCWSTR,LPWSTR,PLONG);
+LONG WINAPI RegReplaceKeyA(HKEY,LPCSTR,LPCSTR,LPCSTR);
+LONG WINAPI RegReplaceKeyW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR);
+LONG WINAPI RegRestoreKeyA (HKEY,LPCSTR,DWORD);
+LONG WINAPI RegRestoreKeyW(HKEY,LPCWSTR,DWORD);
+LONG WINAPI RegSaveKeyA(HKEY,LPCSTR,LPSECURITY_ATTRIBUTES);
+LONG WINAPI RegSaveKeyW(HKEY,LPCWSTR,LPSECURITY_ATTRIBUTES);
+LONG WINAPI RegSetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+LONG WINAPI RegSetValueA(HKEY,LPCSTR,DWORD,LPCSTR,DWORD);
+LONG WINAPI RegSetValueExA(HKEY,LPCSTR,DWORD,DWORD,const BYTE*,DWORD);
+LONG WINAPI RegSetValueExW(HKEY,LPCWSTR,DWORD,DWORD,const BYTE*,DWORD);
+LONG WINAPI RegSetValueW(HKEY,LPCWSTR,DWORD,LPCWSTR,DWORD);
+LONG WINAPI RegUnLoadKeyA(HKEY,LPCSTR);
+LONG WINAPI RegUnLoadKeyW(HKEY,LPCWSTR);
+
+#ifdef UNICODE
+typedef VALENTW VALENT,*PVALENT;
+#define AbortSystemShutdown AbortSystemShutdownW
+#define InitiateSystemShutdown InitiateSystemShutdownW
+#define RegConnectRegistry RegConnectRegistryW
+#define RegCreateKey RegCreateKeyW
+#define RegCreateKeyEx RegCreateKeyExW
+#define RegDeleteKey RegDeleteKeyW
+#define RegDeleteValue RegDeleteValueW
+#define RegEnumKey RegEnumKeyW
+#define RegEnumKeyEx RegEnumKeyExW
+#define RegEnumValue RegEnumValueW
+#define RegLoadKey RegLoadKeyW
+#define RegOpenKey RegOpenKeyW
+#define RegOpenKeyEx RegOpenKeyExW
+#define RegQueryInfoKey RegQueryInfoKeyW
+#define RegQueryMultipleValues RegQueryMultipleValuesW
+#define RegQueryValue RegQueryValueW
+#define RegQueryValueEx RegQueryValueExW
+#define RegReplaceKey RegReplaceKeyW
+#define RegRestoreKey RegRestoreKeyW
+#define RegSaveKey RegSaveKeyW
+#define RegSetValue RegSetValueW
+#define RegSetValueEx RegSetValueExW
+#define RegUnLoadKey RegUnLoadKeyW
+#else
+typedef VALENTA VALENT,*PVALENT;
+#define AbortSystemShutdown AbortSystemShutdownA
+#define InitiateSystemShutdown InitiateSystemShutdownA
+#define RegConnectRegistry RegConnectRegistryA
+#define RegCreateKey RegCreateKeyA
+#define RegCreateKeyEx RegCreateKeyExA
+#define RegDeleteKey RegDeleteKeyA
+#define RegDeleteValue RegDeleteValueA
+#define RegEnumKey RegEnumKeyA
+#define RegEnumKeyEx RegEnumKeyExA
+#define RegEnumValue RegEnumValueA
+#define RegLoadKey RegLoadKeyA
+#define RegOpenKey RegOpenKeyA
+#define RegOpenKeyEx RegOpenKeyExA
+#define RegQueryInfoKey RegQueryInfoKeyA
+#define RegQueryMultipleValues RegQueryMultipleValuesA
+#define RegQueryValue RegQueryValueA
+#define RegQueryValueEx RegQueryValueExA
+#define RegReplaceKey RegReplaceKeyA
+#define RegRestoreKey RegRestoreKeyA
+#define RegSaveKey RegSaveKeyA
+#define RegSetValue RegSetValueA
+#define RegSetValueEx RegSetValueExA
+#define RegUnLoadKey RegUnLoadKeyA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/Win32/bin/tcc/include/winapi/winsvc.h b/Win32/bin/tcc/include/winapi/winsvc.h
new file mode 100644
index 0000000..e8802ee
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/winsvc.h
@@ -0,0 +1,309 @@
+#ifndef _WINSVC_H
+#define _WINSVC_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define SERVICES_ACTIVE_DATABASEA "ServicesActive"
+#define SERVICES_ACTIVE_DATABASEW L"ServicesActive"
+#define SERVICES_FAILED_DATABASEA "ServicesFailed"
+#define SERVICES_FAILED_DATABASEW L"ServicesFailed"
+#define SC_GROUP_IDENTIFIERA '+'
+#define SC_GROUP_IDENTIFIERW L'+'
+#define SC_MANAGER_ALL_ACCESS	0xf003f
+#define SC_MANAGER_CONNECT	1
+#define SC_MANAGER_CREATE_SERVICE	2
+#define SC_MANAGER_ENUMERATE_SERVICE	4
+#define SC_MANAGER_LOCK	8
+#define SC_MANAGER_QUERY_LOCK_STATUS	16
+#define SC_MANAGER_MODIFY_BOOT_CONFIG	32
+#define SERVICE_NO_CHANGE	(-1)
+#define SERVICE_STOPPED	1
+#define SERVICE_START_PENDING	2
+#define SERVICE_STOP_PENDING	3
+#define SERVICE_RUNNING	4
+#define SERVICE_CONTINUE_PENDING	5
+#define SERVICE_PAUSE_PENDING	6
+#define SERVICE_PAUSED	7
+#define SERVICE_ACCEPT_STOP	1
+#define SERVICE_ACCEPT_PAUSE_CONTINUE	2
+#define SERVICE_ACCEPT_SHUTDOWN 4
+#define SERVICE_ACCEPT_PARAMCHANGE    8
+#define SERVICE_ACCEPT_NETBINDCHANGE  16
+#define SERVICE_ACCEPT_HARDWAREPROFILECHANGE   32
+#define SERVICE_ACCEPT_POWEREVENT              64
+#define SERVICE_ACCEPT_SESSIONCHANGE           128
+#define SERVICE_CONTROL_STOP	1
+#define SERVICE_CONTROL_PAUSE	2
+#define SERVICE_CONTROL_CONTINUE	3
+#define SERVICE_CONTROL_INTERROGATE	4
+#define SERVICE_CONTROL_SHUTDOWN	5
+#define SERVICE_CONTROL_PARAMCHANGE     6
+#define SERVICE_CONTROL_NETBINDADD      7
+#define SERVICE_CONTROL_NETBINDREMOVE   8
+#define SERVICE_CONTROL_NETBINDENABLE   9
+#define SERVICE_CONTROL_NETBINDDISABLE  10
+#define SERVICE_CONTROL_DEVICEEVENT     11
+#define SERVICE_CONTROL_HARDWAREPROFILECHANGE 12
+#define SERVICE_CONTROL_POWEREVENT            13
+#define SERVICE_CONTROL_SESSIONCHANGE         14
+#define SERVICE_ACTIVE 1
+#define SERVICE_INACTIVE 2
+#define SERVICE_STATE_ALL 3
+#define SERVICE_QUERY_CONFIG 1
+#define SERVICE_CHANGE_CONFIG 2
+#define SERVICE_QUERY_STATUS 4
+#define SERVICE_ENUMERATE_DEPENDENTS 8
+#define SERVICE_START 16
+#define SERVICE_STOP 32
+#define SERVICE_PAUSE_CONTINUE 64
+#define SERVICE_INTERROGATE 128
+#define SERVICE_USER_DEFINED_CONTROL 256
+#define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SERVICE_QUERY_CONFIG|SERVICE_CHANGE_CONFIG|SERVICE_QUERY_STATUS|SERVICE_ENUMERATE_DEPENDENTS|SERVICE_START|SERVICE_STOP|SERVICE_PAUSE_CONTINUE|SERVICE_INTERROGATE|SERVICE_USER_DEFINED_CONTROL)
+#define SERVICE_RUNS_IN_SYSTEM_PROCESS 1
+#define SERVICE_CONFIG_DESCRIPTION     1
+#define SERVICE_CONFIG_FAILURE_ACTIONS 2
+
+typedef struct _SERVICE_STATUS {
+	DWORD dwServiceType;
+	DWORD dwCurrentState;
+	DWORD dwControlsAccepted;
+	DWORD dwWin32ExitCode;
+	DWORD dwServiceSpecificExitCode;
+	DWORD dwCheckPoint;
+	DWORD dwWaitHint;
+} SERVICE_STATUS,*LPSERVICE_STATUS;
+typedef struct _SERVICE_STATUS_PROCESS {
+	DWORD dwServiceType;
+	DWORD dwCurrentState;
+	DWORD dwControlsAccepted;
+	DWORD dwWin32ExitCode;
+	DWORD dwServiceSpecificExitCode;
+	DWORD dwCheckPoint;
+	DWORD dwWaitHint;
+	DWORD dwProcessId;
+	DWORD dwServiceFlags;
+} SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS;
+typedef enum _SC_STATUS_TYPE {
+	SC_STATUS_PROCESS_INFO = 0
+} SC_STATUS_TYPE;
+typedef enum _SC_ENUM_TYPE {
+        SC_ENUM_PROCESS_INFO = 0
+} SC_ENUM_TYPE;
+typedef struct _ENUM_SERVICE_STATUSA {
+	LPSTR lpServiceName;
+	LPSTR lpDisplayName;
+	SERVICE_STATUS ServiceStatus;
+} ENUM_SERVICE_STATUSA,*LPENUM_SERVICE_STATUSA;
+typedef struct _ENUM_SERVICE_STATUSW {
+	LPWSTR lpServiceName;
+	LPWSTR lpDisplayName;
+	SERVICE_STATUS ServiceStatus;
+} ENUM_SERVICE_STATUSW,*LPENUM_SERVICE_STATUSW;
+typedef struct _ENUM_SERVICE_STATUS_PROCESSA {
+	LPSTR lpServiceName;
+	LPSTR lpDisplayName;
+	SERVICE_STATUS_PROCESS ServiceStatusProcess;
+} ENUM_SERVICE_STATUS_PROCESSA,*LPENUM_SERVICE_STATUS_PROCESSA;
+typedef struct _ENUM_SERVICE_STATUS_PROCESSW {
+	LPWSTR lpServiceName;
+	LPWSTR lpDisplayName;
+	SERVICE_STATUS_PROCESS ServiceStatusProcess;
+} ENUM_SERVICE_STATUS_PROCESSW,*LPENUM_SERVICE_STATUS_PROCESSW;
+typedef struct _QUERY_SERVICE_CONFIGA {
+	DWORD dwServiceType;
+	DWORD dwStartType;
+	DWORD dwErrorControl;
+	LPSTR lpBinaryPathName;
+	LPSTR lpLoadOrderGroup;
+	DWORD dwTagId;
+	LPSTR lpDependencies;
+	LPSTR lpServiceStartName;
+	LPSTR lpDisplayName;
+} QUERY_SERVICE_CONFIGA,*LPQUERY_SERVICE_CONFIGA;
+typedef struct _QUERY_SERVICE_CONFIGW {
+	DWORD dwServiceType;
+	DWORD dwStartType;
+	DWORD dwErrorControl;
+	LPWSTR lpBinaryPathName;
+	LPWSTR lpLoadOrderGroup;
+	DWORD dwTagId;
+	LPWSTR lpDependencies;
+	LPWSTR lpServiceStartName;
+	LPWSTR lpDisplayName;
+} QUERY_SERVICE_CONFIGW,*LPQUERY_SERVICE_CONFIGW;
+typedef struct _QUERY_SERVICE_LOCK_STATUSA {
+	DWORD fIsLocked;
+	LPSTR lpLockOwner;
+	DWORD dwLockDuration;
+} QUERY_SERVICE_LOCK_STATUSA,*LPQUERY_SERVICE_LOCK_STATUSA;
+typedef struct _QUERY_SERVICE_LOCK_STATUSW {
+	DWORD fIsLocked;
+	LPWSTR lpLockOwner;
+	DWORD dwLockDuration;
+} QUERY_SERVICE_LOCK_STATUSW,*LPQUERY_SERVICE_LOCK_STATUSW;
+typedef void (WINAPI *LPSERVICE_MAIN_FUNCTIONA)(DWORD,LPSTR*);
+typedef void (WINAPI *LPSERVICE_MAIN_FUNCTIONW)(DWORD,LPWSTR*);
+typedef struct _SERVICE_TABLE_ENTRYA {
+	LPSTR lpServiceName;
+	LPSERVICE_MAIN_FUNCTIONA lpServiceProc;
+} SERVICE_TABLE_ENTRYA,*LPSERVICE_TABLE_ENTRYA;
+typedef struct _SERVICE_TABLE_ENTRYW {
+	LPWSTR lpServiceName;
+	LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
+} SERVICE_TABLE_ENTRYW,*LPSERVICE_TABLE_ENTRYW;
+DECLARE_HANDLE(SC_HANDLE);
+typedef SC_HANDLE *LPSC_HANDLE;
+typedef PVOID SC_LOCK;
+typedef DWORD SERVICE_STATUS_HANDLE;
+typedef VOID(WINAPI *LPHANDLER_FUNCTION)(DWORD);
+typedef DWORD (WINAPI *LPHANDLER_FUNCTION_EX)(DWORD,DWORD,LPVOID,LPVOID);
+typedef struct _SERVICE_DESCRIPTIONA {
+	LPSTR lpDescription;
+} SERVICE_DESCRIPTIONA,*LPSERVICE_DESCRIPTIONA;
+typedef struct _SERVICE_DESCRIPTIONW {
+	LPWSTR lpDescription;
+} SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
+typedef enum _SC_ACTION_TYPE {
+        SC_ACTION_NONE          = 0,
+        SC_ACTION_RESTART       = 1,
+        SC_ACTION_REBOOT        = 2,
+        SC_ACTION_RUN_COMMAND   = 3
+} SC_ACTION_TYPE;
+typedef struct _SC_ACTION {
+	SC_ACTION_TYPE	Type;
+	DWORD		Delay;
+} SC_ACTION,*LPSC_ACTION;
+typedef struct _SERVICE_FAILURE_ACTIONSA {
+	DWORD	dwResetPeriod;
+	LPSTR	lpRebootMsg;
+	LPSTR	lpCommand;
+	DWORD	cActions;
+	SC_ACTION * lpsaActions;
+} SERVICE_FAILURE_ACTIONSA,*LPSERVICE_FAILURE_ACTIONSA;
+typedef struct _SERVICE_FAILURE_ACTIONSW {
+	DWORD	dwResetPeriod;
+	LPWSTR	lpRebootMsg;
+	LPWSTR	lpCommand;
+	DWORD	cActions;
+	SC_ACTION * lpsaActions;
+} SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW;
+
+BOOL WINAPI ChangeServiceConfigA(SC_HANDLE,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,LPDWORD,LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI ChangeServiceConfigW(SC_HANDLE,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,LPDWORD,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+BOOL WINAPI ChangeServiceConfig2A(SC_HANDLE,DWORD,LPVOID);
+BOOL WINAPI ChangeServiceConfig2W(SC_HANDLE,DWORD,LPVOID);
+BOOL WINAPI CloseServiceHandle(SC_HANDLE);
+BOOL WINAPI ControlService(SC_HANDLE,DWORD,LPSERVICE_STATUS);
+SC_HANDLE WINAPI CreateServiceA(SC_HANDLE,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,PDWORD,LPCSTR,LPCSTR,LPCSTR);
+SC_HANDLE WINAPI CreateServiceW(SC_HANDLE,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,PDWORD,LPCWSTR,LPCWSTR,LPCWSTR);
+BOOL WINAPI DeleteService(SC_HANDLE);
+BOOL WINAPI EnumDependentServicesA(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSA,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumDependentServicesW(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSW,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumServicesStatusA(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSA,DWORD,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumServicesStatusW(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSW,DWORD,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumServicesStatusExA(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCSTR);
+BOOL WINAPI EnumServicesStatusExW(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCWSTR);
+BOOL WINAPI GetServiceDisplayNameA(SC_HANDLE,LPCSTR,LPSTR,PDWORD);
+BOOL WINAPI GetServiceDisplayNameW(SC_HANDLE,LPCWSTR,LPWSTR,PDWORD);
+BOOL WINAPI GetServiceKeyNameA(SC_HANDLE,LPCSTR,LPSTR,PDWORD);
+BOOL WINAPI GetServiceKeyNameW(SC_HANDLE,LPCWSTR,LPWSTR,PDWORD);
+SC_LOCK WINAPI LockServiceDatabase(SC_HANDLE);
+BOOL WINAPI NotifyBootConfigStatus(BOOL);
+SC_HANDLE WINAPI OpenSCManagerA(LPCSTR,LPCSTR,DWORD);
+SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR,LPCWSTR,DWORD);
+SC_HANDLE WINAPI OpenServiceA(SC_HANDLE,LPCSTR,DWORD);
+SC_HANDLE WINAPI OpenServiceW(SC_HANDLE,LPCWSTR,DWORD);
+BOOL WINAPI QueryServiceConfigA(SC_HANDLE,LPQUERY_SERVICE_CONFIGA,DWORD,PDWORD);
+BOOL WINAPI QueryServiceConfigW(SC_HANDLE,LPQUERY_SERVICE_CONFIGW,DWORD,PDWORD);
+BOOL WINAPI QueryServiceConfig2A(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
+BOOL WINAPI QueryServiceConfig2W(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
+BOOL WINAPI QueryServiceLockStatusA(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSA,DWORD,PDWORD);
+BOOL WINAPI QueryServiceLockStatusW(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSW,DWORD,PDWORD);
+BOOL WINAPI QueryServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
+BOOL WINAPI QueryServiceStatus(SC_HANDLE,LPSERVICE_STATUS);
+BOOL WINAPI QueryServiceStatusEx(SC_HANDLE,SC_STATUS_TYPE,LPBYTE,DWORD,LPDWORD);
+SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerA(LPCSTR,LPHANDLER_FUNCTION);
+SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerW(LPCWSTR,LPHANDLER_FUNCTION);
+SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExA(LPCSTR,LPHANDLER_FUNCTION_EX,LPVOID);
+SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExW(LPCWSTR,LPHANDLER_FUNCTION_EX,LPVOID);
+BOOL WINAPI SetServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+BOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE,LPSERVICE_STATUS);
+BOOL WINAPI StartServiceA(SC_HANDLE,DWORD,LPCSTR*);
+BOOL WINAPI StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA);
+BOOL WINAPI StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW);
+BOOL WINAPI StartServiceW(SC_HANDLE,DWORD,LPCWSTR);
+BOOL WINAPI UnlockServiceDatabase(SC_LOCK);
+
+#ifdef UNICODE
+typedef ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS,*LPENUM_SERVICE_STATUS;
+typedef ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS;
+typedef LPENUM_SERVICE_STATUS_PROCESSW LPENUM_SERVICE_STATUS_PROCESS;
+typedef QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG,*LPQUERY_SERVICE_CONFIG;
+typedef QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS,*LPQUERY_SERVICE_LOCK_STATUS;
+typedef SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY,*LPSERVICE_TABLE_ENTRY;
+typedef LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION;
+typedef SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION;
+typedef LPSERVICE_DESCRIPTIONW LPSERVICE_DESCRIPTION;
+typedef SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS;
+typedef LPSERVICE_FAILURE_ACTIONSW LPSERVICE_FAILURE_ACTIONS;
+#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEW
+#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEW
+#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERW
+#define ChangeServiceConfig ChangeServiceConfigW
+#define ChangeServiceConfig2 ChangeServiceConfig2W
+#define CreateService CreateServiceW
+#define EnumDependentServices EnumDependentServicesW
+#define EnumServicesStatus EnumServicesStatusW
+#define EnumServicesStatusEx  EnumServicesStatusExW
+#define GetServiceDisplayName GetServiceDisplayNameW
+#define GetServiceKeyName GetServiceKeyNameW
+#define OpenSCManager OpenSCManagerW
+#define OpenService OpenServiceW
+#define QueryServiceConfig QueryServiceConfigW
+#define QueryServiceConfig2 QueryServiceConfig2W
+#define QueryServiceLockStatus QueryServiceLockStatusW
+#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerW
+#define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExW
+#define StartService StartServiceW
+#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherW
+#else
+typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS,*LPENUM_SERVICE_STATUS;
+typedef ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS;
+typedef LPENUM_SERVICE_STATUS_PROCESSA LPENUM_SERVICE_STATUS_PROCESS;
+typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG,*LPQUERY_SERVICE_CONFIG;
+typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS,*LPQUERY_SERVICE_LOCK_STATUS;
+typedef SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY,*LPSERVICE_TABLE_ENTRY;
+typedef LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION;
+typedef SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION;
+typedef LPSERVICE_DESCRIPTIONA LPSERVICE_DESCRIPTION;
+typedef SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS;
+typedef LPSERVICE_FAILURE_ACTIONSA LPSERVICE_FAILURE_ACTIONS;
+#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEA
+#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEA
+#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERA
+#define ChangeServiceConfig ChangeServiceConfigA
+#define ChangeServiceConfig2 ChangeServiceConfig2A
+#define CreateService CreateServiceA
+#define EnumDependentServices EnumDependentServicesA
+#define EnumServicesStatus EnumServicesStatusA
+#define EnumServicesStatusEx  EnumServicesStatusExA
+#define GetServiceDisplayName GetServiceDisplayNameA
+#define GetServiceKeyName GetServiceKeyNameA
+#define OpenSCManager OpenSCManagerA
+#define OpenService OpenServiceA
+#define QueryServiceConfig QueryServiceConfigA
+#define QueryServiceConfig2 QueryServiceConfig2A
+#define QueryServiceLockStatus QueryServiceLockStatusA
+#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerA
+#define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExA
+#define StartService StartServiceA
+#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif /* _WINSVC_H */
diff --git a/Win32/bin/tcc/include/winapi/winuser.h b/Win32/bin/tcc/include/winapi/winuser.h
new file mode 100644
index 0000000..b85b9b2
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/winuser.h
@@ -0,0 +1,3472 @@
+#ifndef _WINUSER_H
+#define _WINUSER_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WC_DIALOG MAKEINTATOM(0x8002)
+#define FALT	16
+#define FCONTROL	8
+#define FNOINVERT	2
+#define FSHIFT	4
+#define FVIRTKEY	1
+#define ATF_TIMEOUTON	1
+#define ATF_ONOFFFEEDBACK	2
+#define ATF_AVAILABLE	4 /* May be obsolete. Not in recent MS docs. */
+#define WH_MIN	(-1)
+#define WH_MSGFILTER	(-1)
+#define WH_JOURNALRECORD	0
+#define WH_JOURNALPLAYBACK	1
+#define WH_KEYBOARD	2
+#define WH_GETMESSAGE	3
+#define WH_CALLWNDPROC	4
+#define WH_CBT	5
+#define WH_SYSMSGFILTER	6
+#define WH_MOUSE	7
+#define WH_HARDWARE	8
+#define WH_DEBUG	9
+#define WH_SHELL	10
+#define WH_FOREGROUNDIDLE	11
+#define WH_CALLWNDPROCRET	12
+#define WH_KEYBOARD_LL	13
+#define WH_MOUSE_LL	14
+#define WH_MAX		14
+#define WH_MINHOOK	WH_MIN
+#define WH_MAXHOOK	WH_MAX
+#define HC_ACTION	0
+#define HC_GETNEXT	1
+#define HC_SKIP	2
+#define HC_NOREMOVE	3
+#define HC_NOREM	3
+#define HC_SYSMODALON	4
+#define HC_SYSMODALOFF	5
+#define HCBT_MOVESIZE	0
+#define HCBT_MINMAX	1
+#define HCBT_QS	2
+#define HCBT_CREATEWND	3
+#define HCBT_DESTROYWND	4
+#define HCBT_ACTIVATE	5
+#define HCBT_CLICKSKIPPED	6
+#define HCBT_KEYSKIPPED	7
+#define HCBT_SYSCOMMAND	8
+#define HCBT_SETFOCUS	9
+#define CF_TEXT	1
+#define CF_BITMAP	2
+#define CF_METAFILEPICT	3
+#define CF_SYLK	4
+#define CF_DIF	5
+#define CF_TIFF	6
+#define CF_OEMTEXT	7
+#define CF_DIB	8
+#define CF_PALETTE	9
+#define CF_PENDATA	10
+#define CF_RIFF	11
+#define CF_WAVE	12
+#define CF_UNICODETEXT	13
+#define CF_ENHMETAFILE	14
+#define CF_HDROP	15
+#define CF_LOCALE	16
+#define CF_MAX	17
+#define CF_OWNERDISPLAY	128
+#define CF_DSPTEXT	129
+#define CF_DSPBITMAP	130
+#define CF_DSPMETAFILEPICT	131
+#define CF_DSPENHMETAFILE	142
+#define CF_PRIVATEFIRST	512
+#define CF_PRIVATELAST	767
+#define CF_GDIOBJFIRST	768
+#define CF_GDIOBJLAST	1023
+#define HKL_NEXT	1
+#define HKL_PREV	0
+#define KLF_ACTIVATE	1
+#define KLF_SUBSTITUTE_OK	2
+#define KLF_UNLOADPREVIOUS	4
+#define KLF_REORDER	8
+#define KLF_REPLACELANG	16
+#define KLF_NOTELLSHELL	128
+#define KLF_SETFORPROCESS	256
+#define KL_NAMELENGTH 9
+#define MF_ENABLED	0
+#define MF_GRAYED	1
+#define MF_DISABLED	2
+#define MF_BITMAP	4
+#define MF_CHECKED	8
+#define MF_MENUBARBREAK 32
+#define MF_MENUBREAK	64
+#define MF_OWNERDRAW	256
+#define MF_POPUP	16
+#define MF_SEPARATOR	0x800
+#define MF_STRING	0
+#define MF_UNCHECKED	0
+#define MF_DEFAULT	4096
+#define MF_SYSMENU	0x2000
+#define MF_HELP	0x4000
+#define MF_END	128
+#define MF_RIGHTJUSTIFY	0x4000
+#define MF_MOUSESELECT	0x8000
+#define MF_INSERT 0
+#define MF_CHANGE 128
+#define MF_APPEND 256
+#define MF_DELETE 512
+#define MF_REMOVE 4096
+#define MF_USECHECKBITMAPS 512
+#define MF_UNHILITE 0
+#define MF_HILITE 128
+#define BSF_IGNORECURRENTTASK	2
+#define BSF_QUERY	1
+#define BSF_FLUSHDISK	4
+#define BSF_NOHANG	8
+#define BSF_POSTMESSAGE 16
+#define BSF_FORCEIFHUNG	32
+#define BSF_NOTIMEOUTIFNOTHUNG 64
+#define BSM_ALLCOMPONENTS	0
+#define BSM_APPLICATIONS	8
+#define BSM_ALLDESKTOPS		16
+#define BSM_INSTALLABLEDRIVERS	4
+#define BSM_NETDRIVER	2
+#define BSM_VXDS	1
+#define BROADCAST_QUERY_DENY	1112363332
+#define ENUM_CURRENT_SETTINGS	((DWORD)-1)
+#define ENUM_REGISTRY_SETTINGS	((DWORD)-2)
+#define DM_BITSPERPEL	0x40000
+#define DM_PELSWIDTH	0x80000
+#define DM_PELSHEIGHT	0x100000
+#define DM_DISPLAYFLAGS 0x200000
+#define DM_DISPLAYFREQUENCY 0x400000
+#define CDS_UPDATEREGISTRY	1
+#define CDS_TEST	2
+#define CDS_FULLSCREEN	4 
+#define CDS_GLOBAL	8 
+#define CDS_SET_PRIMARY	16
+#define CDS_RESET	0x40000000 
+#define CDS_SETRECT	0x20000000 
+#define CDS_NORESET	0x10000000 
+#define DISP_CHANGE_SUCCESSFUL	0
+#define DISP_CHANGE_RESTART	1
+#define DISP_CHANGE_BADFLAGS	(-4)
+#define DISP_CHANGE_BADPARAM	(-5)
+#define DISP_CHANGE_FAILED	(-1)
+#define DISP_CHANGE_BADMODE	(-2)
+#define DISP_CHANGE_NOTUPDATED	(-3)
+#define BST_CHECKED	1
+#define BST_INDETERMINATE	2
+#define BST_UNCHECKED	0
+#define BST_FOCUS	8
+#define BST_PUSHED	4
+#define MF_BYCOMMAND	0
+#define MF_BYPOSITION	1024
+#define MF_UNCHECKED	0
+#define MF_HILITE	128
+#define MF_UNHILITE	0
+#define CWP_ALL 0
+#define CWP_SKIPINVISIBLE	1
+#define CWP_SKIPDISABLED	2
+#define CWP_SKIPTRANSPARENT	4
+#define IMAGE_BITMAP	0
+#define IMAGE_ICON	1
+#define IMAGE_CURSOR	2
+#define IMAGE_ENHMETAFILE	3
+#define DF_ALLOWOTHERACCOUNTHOOK	1
+#define DESKTOP_CREATEMENU	4
+#define DESKTOP_CREATEWINDOW	2
+#define DESKTOP_ENUMERATE	64
+#define DESKTOP_HOOKCONTROL	8
+#define DESKTOP_JOURNALPLAYBACK	32
+#define DESKTOP_JOURNALRECORD	16
+#define DESKTOP_READOBJECTS	1
+#define DESKTOP_SWITCHDESKTOP	256
+#define DESKTOP_WRITEOBJECTS	128
+#define CW_USEDEFAULT	0x80000000
+#define WS_BORDER	0x800000
+#define WS_CAPTION	0xc00000
+#define WS_CHILD	0x40000000
+#define WS_CHILDWINDOW	0x40000000
+#define WS_CLIPCHILDREN 0x2000000
+#define WS_CLIPSIBLINGS 0x4000000
+#define WS_DISABLED	0x8000000
+#define WS_DLGFRAME	0x400000
+#define WS_GROUP	0x20000
+#define WS_HSCROLL	0x100000
+#define WS_ICONIC	0x20000000
+#define WS_MAXIMIZE	0x1000000
+#define WS_MAXIMIZEBOX	0x10000
+#define WS_MINIMIZE	0x20000000
+#define WS_MINIMIZEBOX	0x20000
+#define WS_OVERLAPPED	0
+#define WS_OVERLAPPEDWINDOW	0xcf0000
+#define WS_POPUP	0x80000000
+#define WS_POPUPWINDOW	0x80880000
+#define WS_SIZEBOX	0x40000
+#define WS_SYSMENU	0x80000
+#define WS_TABSTOP	0x10000
+#define WS_THICKFRAME	0x40000
+#define WS_TILED	0
+#define WS_TILEDWINDOW	0xcf0000
+#define WS_VISIBLE	0x10000000
+#define WS_VSCROLL	0x200000
+#define MDIS_ALLCHILDSTYLES	1
+#define BS_3STATE	5
+#define BS_AUTO3STATE	6
+#define BS_AUTOCHECKBOX	3
+#define BS_AUTORADIOBUTTON	9
+#define BS_BITMAP	128
+#define BS_BOTTOM	0x800
+#define BS_CENTER	0x300
+#define BS_CHECKBOX	2
+#define BS_DEFPUSHBUTTON	1
+#define BS_GROUPBOX	7
+#define BS_ICON	64
+#define BS_LEFT	256
+#define BS_LEFTTEXT	32
+#define BS_MULTILINE	0x2000
+#define BS_NOTIFY	0x4000
+#define BS_OWNERDRAW	0xb
+#define BS_PUSHBUTTON	0
+#define BS_PUSHLIKE	4096
+#define BS_RADIOBUTTON 4
+#define BS_RIGHT	512
+#define BS_RIGHTBUTTON	32
+#define BS_TEXT	0
+#define BS_TOP	0x400
+#define BS_USERBUTTON	8
+#define BS_VCENTER	0xc00
+#define BS_FLAT	0x8000
+#define CBS_AUTOHSCROLL	64
+#define CBS_DISABLENOSCROLL	0x800
+#define CBS_DROPDOWN	2
+#define CBS_DROPDOWNLIST	3
+#define CBS_HASSTRINGS	512
+#define CBS_LOWERCASE	0x4000
+#define CBS_NOINTEGRALHEIGHT	0x400
+#define CBS_OEMCONVERT	128
+#define CBS_OWNERDRAWFIXED	16
+#define CBS_OWNERDRAWVARIABLE	32
+#define CBS_SIMPLE	1
+#define CBS_SORT	256
+#define CBS_UPPERCASE	0x2000
+#define ES_AUTOHSCROLL	128
+#define ES_AUTOVSCROLL	64
+#define ES_CENTER	1
+#define ES_LEFT	0
+#define ES_LOWERCASE 16
+#define ES_MULTILINE 4
+#define ES_NOHIDESEL 256
+#define ES_NUMBER 0x2000
+#define ES_OEMCONVERT 0x400
+#define ES_PASSWORD 32
+#define ES_READONLY 0x800
+#define ES_RIGHT 2
+#define ES_UPPERCASE 8
+#define ES_WANTRETURN 4096
+#define LBS_DISABLENOSCROLL 4096
+#define LBS_EXTENDEDSEL 0x800
+#define LBS_HASSTRINGS 64
+#define LBS_MULTICOLUMN 512
+#define LBS_MULTIPLESEL 8
+#define LBS_NODATA	0x2000
+#define LBS_NOINTEGRALHEIGHT 256
+#define LBS_NOREDRAW 4
+#define LBS_NOSEL 0x4000
+#define LBS_NOTIFY 1
+#define LBS_OWNERDRAWFIXED 16
+#define LBS_OWNERDRAWVARIABLE 32
+#define LBS_SORT 2
+#define LBS_STANDARD 0xa00003
+#define LBS_USETABSTOPS 128
+#define LBS_WANTKEYBOARDINPUT 0x400
+#define SBS_BOTTOMALIGN 4
+#define SBS_HORZ 0
+#define SBS_LEFTALIGN 2
+#define SBS_RIGHTALIGN 4
+#define SBS_SIZEBOX 8
+#define SBS_SIZEBOXBOTTOMRIGHTALIGN 4
+#define SBS_SIZEBOXTOPLEFTALIGN 2
+#define SBS_SIZEGRIP 16
+#define SBS_TOPALIGN 2
+#define SBS_VERT 1
+#define SS_BITMAP 14
+#define SS_BLACKFRAME 7
+#define SS_BLACKRECT 4
+#define SS_CENTER 1
+#define SS_CENTERIMAGE 512
+#define SS_ENHMETAFILE 15
+#define SS_ETCHEDFRAME 18
+#define SS_ETCHEDHORZ 16
+#define SS_ETCHEDVERT 17
+#define SS_GRAYFRAME 8
+#define SS_GRAYRECT 5
+#define SS_ICON 3
+#define SS_LEFT 0
+#define SS_LEFTNOWORDWRAP 0xc
+#define SS_NOPREFIX 128
+#define SS_NOTIFY 256
+#define SS_OWNERDRAW 0xd
+#define SS_REALSIZEIMAGE 0x800
+#define SS_RIGHT 2
+#define SS_RIGHTJUST 0x400
+#define SS_SIMPLE 11
+#define SS_SUNKEN 4096
+#define SS_WHITEFRAME 9
+#define SS_WHITERECT	6
+#define SS_USERITEM	10
+#define SS_TYPEMASK	0x0000001FL
+#define SS_ENDELLIPSIS	0x00004000L
+#define SS_PATHELLIPSIS	0x00008000L
+#define SS_WORDELLIPSIS	0x0000C000L
+#define SS_ELLIPSISMASK 0x0000C000L
+#define DS_3DLOOK 4
+#define DS_ABSALIGN 1
+#define DS_CENTER 0x800
+#define DS_CENTERMOUSE 4096
+#define DS_CONTEXTHELP 0x2000
+#define DS_CONTROL 0x400
+#define DS_FIXEDSYS 8
+#define DS_LOCALEDIT 32
+#define DS_MODALFRAME 128
+#define DS_NOFAILCREATE 16
+#define DS_NOIDLEMSG	256
+#define DS_SETFONT 64
+#define DS_SETFOREGROUND 512
+#define DS_SYSMODAL 2
+#define WS_EX_ACCEPTFILES 16
+#define WS_EX_APPWINDOW	0x40000
+#define WS_EX_CLIENTEDGE 512
+#define WS_EX_COMPOSITED 0x2000000 /* XP */
+#define WS_EX_CONTEXTHELP 0x400
+#define WS_EX_CONTROLPARENT 0x10000
+#define WS_EX_DLGMODALFRAME 1
+#define WS_EX_LAYERED 0x80000   /* w2k */
+#define WS_EX_LAYOUTRTL 0x400000 /* w98, w2k */
+#define WS_EX_LEFT	0
+#define WS_EX_LEFTSCROLLBAR	0x4000
+#define WS_EX_LTRREADING	0
+#define WS_EX_MDICHILD	64
+#define WS_EX_NOACTIVATE 0x8000000 /* w2k */
+#define WS_EX_NOINHERITLAYOUT 0x100000 /* w2k */
+#define WS_EX_NOPARENTNOTIFY	4
+#define WS_EX_OVERLAPPEDWINDOW	0x300
+#define WS_EX_PALETTEWINDOW	0x188
+#define WS_EX_RIGHT	0x1000
+#define WS_EX_RIGHTSCROLLBAR	0
+#define WS_EX_RTLREADING	0x2000
+#define WS_EX_STATICEDGE	0x20000
+#define WS_EX_TOOLWINDOW	128
+#define WS_EX_TOPMOST	8
+#define WS_EX_TRANSPARENT	32
+#define WS_EX_WINDOWEDGE	256
+#define WINSTA_ACCESSCLIPBOARD	4
+#define WINSTA_ACCESSGLOBALATOMS	32
+#define WINSTA_CREATEDESKTOP	8
+#define WINSTA_ENUMDESKTOPS	1
+#define WINSTA_ENUMERATE	256
+#define WINSTA_EXITWINDOWS	64
+#define WINSTA_READATTRIBUTES	2
+#define WINSTA_READSCREEN	512
+#define WINSTA_WRITEATTRIBUTES	16
+#define DDL_READWRITE	0
+#define DDL_READONLY	1
+#define DDL_HIDDEN	2
+#define DDL_SYSTEM	4
+#define DDL_DIRECTORY	16
+#define DDL_ARCHIVE	32
+#define DDL_POSTMSGS	8192
+#define DDL_DRIVES	16384
+#define DDL_EXCLUSIVE	32768
+#define DC_ACTIVE	1
+#define DC_SMALLCAP	2
+#define DC_ICON	4
+#define DC_TEXT	8
+#define DC_INBUTTON	16
+#define DC_CAPTION	(DC_ICON|DC_TEXT|DC_BUTTONS)
+#define DC_NC	(DC_CAPTION|DC_FRAME)
+#define BDR_RAISEDOUTER	1
+#define BDR_SUNKENOUTER	2
+#define BDR_RAISEDINNER	4
+#define BDR_SUNKENINNER	8
+#define BDR_OUTER	3
+#define BDR_INNER	0xc
+#define BDR_RAISED	5
+#define BDR_SUNKEN	10
+#define EDGE_RAISED	(BDR_RAISEDOUTER|BDR_RAISEDINNER)
+#define EDGE_SUNKEN	(BDR_SUNKENOUTER|BDR_SUNKENINNER)
+#define EDGE_ETCHED	(BDR_SUNKENOUTER|BDR_RAISEDINNER)
+#define EDGE_BUMP	(BDR_RAISEDOUTER|BDR_SUNKENINNER)
+#define BF_LEFT	1
+#define BF_TOP	2
+#define BF_RIGHT	4
+#define BF_BOTTOM	8
+#define BF_TOPLEFT	(BF_TOP|BF_LEFT)
+#define BF_TOPRIGHT	(BF_TOP|BF_RIGHT)
+#define BF_BOTTOMLEFT	(BF_BOTTOM|BF_LEFT)
+#define BF_BOTTOMRIGHT	(BF_BOTTOM|BF_RIGHT)
+#define BF_RECT	(BF_LEFT|BF_TOP|BF_RIGHT|BF_BOTTOM)
+#define BF_DIAGONAL	16
+#define BF_DIAGONAL_ENDTOPRIGHT	(BF_DIAGONAL|BF_TOP|BF_RIGHT)
+#define BF_DIAGONAL_ENDTOPLEFT	(BF_DIAGONAL|BF_TOP|BF_LEFT)
+#define BF_DIAGONAL_ENDBOTTOMLEFT	(BF_DIAGONAL|BF_BOTTOM|BF_LEFT)
+#define BF_DIAGONAL_ENDBOTTOMRIGHT	(BF_DIAGONAL|BF_BOTTOM|BF_RIGHT)
+#define BF_MIDDLE	0x800
+#define BF_SOFT	0x1000
+#define BF_ADJUST	0x2000
+#define BF_FLAT	0x4000
+#define BF_MONO	0x8000
+#define DFC_CAPTION	1
+#define DFC_MENU	2
+#define DFC_SCROLL	3
+#define DFC_BUTTON	4
+#define DFCS_CAPTIONCLOSE	0
+#define DFCS_CAPTIONMIN	1
+#define DFCS_CAPTIONMAX	2
+#define DFCS_CAPTIONRESTORE	3
+#define DFCS_CAPTIONHELP	4
+#define DFCS_MENUARROW	0
+#define DFCS_MENUCHECK	1
+#define DFCS_MENUBULLET	2
+#define DFCS_MENUARROWRIGHT	4
+#define DFCS_SCROLLUP	0
+#define DFCS_SCROLLDOWN	1
+#define DFCS_SCROLLLEFT	2
+#define DFCS_SCROLLRIGHT	3
+#define DFCS_SCROLLCOMBOBOX	5
+#define DFCS_SCROLLSIZEGRIP	8
+#define DFCS_SCROLLSIZEGRIPRIGHT	16
+#define DFCS_BUTTONCHECK	0
+#define DFCS_BUTTONRADIOIMAGE	1
+#define DFCS_BUTTONRADIOMASK	2
+#define DFCS_BUTTONRADIO	4
+#define DFCS_BUTTON3STATE	8
+#define DFCS_BUTTONPUSH	16
+#define DFCS_INACTIVE	256
+#define DFCS_PUSHED	512
+#define DFCS_CHECKED	1024
+#define DFCS_ADJUSTRECT	0x2000
+#define DFCS_FLAT	0x4000
+#define DFCS_MONO	0x8000
+#define DST_COMPLEX	0
+#define DST_TEXT	1
+#define DST_PREFIXTEXT	2
+#define DST_ICON	3
+#define DST_BITMAP	4
+#define DSS_NORMAL	0
+#define DSS_UNION	16
+#define DSS_DISABLED	32
+#define DSS_MONO	128
+#define DSS_RIGHT	0x8000
+#define DT_BOTTOM	8
+#define DT_CALCRECT	1024
+#define DT_CENTER	1
+#define DT_EDITCONTROL	8192
+#define DT_END_ELLIPSIS	32768
+#define DT_PATH_ELLIPSIS	16384
+#define DT_WORD_ELLIPSIS 0x40000
+#define DT_EXPANDTABS	64
+#define DT_EXTERNALLEADING	512
+#define DT_LEFT	0
+#define DT_MODIFYSTRING	65536
+#define DT_NOCLIP	256
+#define DT_NOPREFIX	2048
+#define DT_RIGHT	2
+#define DT_RTLREADING	131072
+#define DT_SINGLELINE	32
+#define DT_TABSTOP	128
+#define DT_TOP	0
+#define DT_VCENTER	4
+#define DT_WORDBREAK	16
+#define DT_INTERNAL	4096
+#define WB_ISDELIMITER	2
+#define WB_LEFT	0
+#define WB_RIGHT	1
+#define SB_HORZ	0
+#define SB_VERT	1
+#define SB_CTL	2
+#define SB_BOTH	3
+#define ESB_DISABLE_BOTH	3
+#define ESB_DISABLE_DOWN	2
+#define ESB_DISABLE_LEFT	1
+#define ESB_DISABLE_LTUP	1
+#define ESB_DISABLE_RIGHT	2
+#define ESB_DISABLE_RTDN	2
+#define ESB_DISABLE_UP	1
+#define ESB_ENABLE_BOTH	0
+#define SB_LINEUP	0
+#define SB_LINEDOWN	1
+#define SB_LINELEFT	0
+#define SB_LINERIGHT	1
+#define SB_PAGEUP	2
+#define SB_PAGEDOWN	3
+#define SB_PAGELEFT	2
+#define SB_PAGERIGHT	3
+#define SB_THUMBPOSITION	4
+#define SB_THUMBTRACK	5
+#define SB_ENDSCROLL	8
+#define SB_LEFT	6
+#define SB_RIGHT	7
+#define SB_BOTTOM	7
+#define SB_TOP	6
+#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i)))
+#define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i)))
+#ifndef XFree86Server
+# define RT_CURSOR MAKEINTRESOURCE(1)
+# define RT_FONT MAKEINTRESOURCE(8)
+#endif /* ndef XFree86Server */
+#define RT_BITMAP MAKEINTRESOURCE(2)
+#define RT_ICON MAKEINTRESOURCE(3)
+#define RT_MENU MAKEINTRESOURCE(4)
+#define RT_DIALOG MAKEINTRESOURCE(5)
+#define RT_STRING MAKEINTRESOURCE(6)
+#define RT_FONTDIR MAKEINTRESOURCE(7)
+#define RT_ACCELERATOR MAKEINTRESOURCE(9)
+#define RT_RCDATA MAKEINTRESOURCE(10)
+#define RT_MESSAGETABLE MAKEINTRESOURCE(11)
+#define DIFFERENCE 11
+#define RT_GROUP_CURSOR MAKEINTRESOURCE((DWORD)RT_CURSOR+DIFFERENCE)
+#define RT_GROUP_ICON MAKEINTRESOURCE((DWORD)RT_ICON+DIFFERENCE)
+#define RT_VERSION MAKEINTRESOURCE(16)
+#define RT_DLGINCLUDE MAKEINTRESOURCE(17)
+#define RT_PLUGPLAY MAKEINTRESOURCE(19)
+#define RT_VXD MAKEINTRESOURCE(20)
+#define RT_ANICURSOR MAKEINTRESOURCE(21)
+#define RT_ANIICON MAKEINTRESOURCE(22)
+#define RT_HTML MAKEINTRESOURCE(23)
+#define EWX_FORCE 4
+#define EWX_LOGOFF 0
+#define EWX_POWEROFF 8
+#define EWX_REBOOT 2
+#define EWX_SHUTDOWN 1
+#define CS_BYTEALIGNCLIENT 4096
+#define CS_BYTEALIGNWINDOW 8192
+#define CS_KEYCVTWINDOW 4
+#define CS_NOKEYCVT 256
+#define CS_CLASSDC 64
+#define CS_DBLCLKS 8
+#define CS_GLOBALCLASS 16384
+#define CS_HREDRAW 2
+#define CS_NOCLOSE 512
+#define CS_OWNDC 32
+#define CS_PARENTDC 128
+#define CS_SAVEBITS 2048
+#define CS_VREDRAW 1
+#define CS_IME 0x10000
+#define GCW_ATOM (-32)
+#define GCL_CBCLSEXTRA (-20)
+#define GCL_CBWNDEXTRA (-18)
+#define GCL_HBRBACKGROUND (-10)
+#define GCL_HCURSOR (-12)
+#define GCL_HICON (-14)
+#define GCL_HICONSM (-34)
+#define GCL_HMODULE (-16)
+#define GCL_MENUNAME (-8)
+#define GCL_STYLE (-26)
+#define GCL_WNDPROC (-24)
+#if 0
+    /* This is supposed to be defined by the program using it not defined
+       in the win32api headers.  I've left it here for documentation purposes.
+    */
+#ifndef IDC_STATIC  /* May be predefined by resource compiler.  */
+#define IDC_STATIC (-1)
+#endif
+#endif
+#define IDC_ARROW MAKEINTRESOURCE(32512)
+#define IDC_IBEAM MAKEINTRESOURCE(32513)
+#define IDC_WAIT MAKEINTRESOURCE(32514)
+#define IDC_CROSS MAKEINTRESOURCE(32515)
+#define IDC_UPARROW MAKEINTRESOURCE(32516)
+#define IDC_SIZENWSE MAKEINTRESOURCE(32642)
+#define IDC_SIZENESW MAKEINTRESOURCE(32643)
+#define IDC_SIZEWE MAKEINTRESOURCE(32644)
+#define IDC_SIZENS MAKEINTRESOURCE(32645)
+#define IDC_SIZEALL MAKEINTRESOURCE(32646)
+#define IDC_NO MAKEINTRESOURCE(32648)
+#define IDC_HAND MAKEINTRESOURCE(32649)
+#define IDC_APPSTARTING MAKEINTRESOURCE(32650)
+#define IDC_HELP MAKEINTRESOURCE(32651)
+#define IDC_ICON MAKEINTRESOURCE(32641)
+#define IDC_SIZE MAKEINTRESOURCE(32640)
+#ifndef RC_INVOKED
+#define IDI_APPLICATION MAKEINTRESOURCE(32512)
+#define IDI_HAND MAKEINTRESOURCE(32513)
+#define IDI_QUESTION MAKEINTRESOURCE(32514)
+#define IDI_EXCLAMATION MAKEINTRESOURCE(32515)
+#define IDI_ASTERISK MAKEINTRESOURCE(32516)
+#define IDI_WINLOGO MAKEINTRESOURCE(32517)
+#else
+#define IDI_APPLICATION 32512
+#define IDI_HAND 32513
+#define IDI_QUESTION 32514
+#define IDI_EXCLAMATION 32515
+#define IDI_ASTERISK 32516
+#define IDI_WINLOGO 32517
+#endif
+#define IDI_WARNING IDI_EXCLAMATION
+#define IDI_ERROR IDI_HAND
+#define IDI_INFORMATION IDI_ASTERISK
+#define MIIM_STATE 1
+#define MIIM_ID 2
+#define MIIM_SUBMENU 4
+#define MIIM_CHECKMARKS 8
+#define MIIM_TYPE 16
+#define MIIM_DATA 32
+#define MIIM_STRING 64
+#define MIIM_BITMAP 128
+#define MIIM_FTYPE 256
+#define MFT_BITMAP 4
+#define MFT_MENUBARBREAK 32
+#define MFT_MENUBREAK 64
+#define MFT_OWNERDRAW 256
+#define MFT_RADIOCHECK 512
+#define MFT_RIGHTJUSTIFY 0x4000
+#define MFT_SEPARATOR 0x800
+#define MFT_RIGHTORDER 0x2000L
+#define MFT_STRING 0
+#define MFS_CHECKED 8
+#define MFS_DEFAULT 4096
+#define MFS_DISABLED 3
+#define MFS_ENABLED 0
+#define MFS_GRAYED 3
+#define MFS_HILITE 128
+#define MFS_UNCHECKED 0
+#define MFS_UNHILITE 0
+#define GW_HWNDNEXT 2
+#define GW_HWNDPREV 3
+#define GW_CHILD 5
+#define GW_HWNDFIRST 0
+#define GW_HWNDLAST 1
+#define GW_OWNER 4
+#define SW_HIDE 0
+#define SW_NORMAL 1
+#define SW_SHOWNORMAL 1
+#define SW_SHOWMINIMIZED 2
+#define SW_MAXIMIZE 3
+#define SW_SHOWMAXIMIZED 3
+#define SW_SHOWNOACTIVATE 4
+#define SW_SHOW 5
+#define SW_MINIMIZE 6
+#define SW_SHOWMINNOACTIVE 7
+#define SW_SHOWNA 8
+#define SW_RESTORE 9
+#define SW_SHOWDEFAULT 10
+#define SW_FORCEMINIMIZE 11
+#define SW_MAX  11
+#define MB_USERICON 128
+#define MB_ICONASTERISK 64
+#define MB_ICONEXCLAMATION 0x30
+#define MB_ICONWARNING 0x30
+#define MB_ICONERROR 16
+#define MB_ICONHAND 16
+#define MB_ICONQUESTION 32
+#define MB_OK 0
+#define MB_ABORTRETRYIGNORE 2
+#define MB_APPLMODAL 0
+#define MB_DEFAULT_DESKTOP_ONLY 0x20000
+#define MB_HELP 0x4000
+#define MB_RIGHT 0x80000
+#define MB_RTLREADING 0x100000
+#define MB_TOPMOST 0x40000
+#define MB_DEFBUTTON1 0
+#define MB_DEFBUTTON2 256
+#define MB_DEFBUTTON3 512
+#define MB_DEFBUTTON4 0x300
+#define MB_ICONINFORMATION 64
+#define MB_ICONSTOP 16
+#define MB_OKCANCEL 1
+#define MB_RETRYCANCEL 5
+#ifdef _WIN32_WINNT
+#if (_WIN32_WINNT >= 0x0400)
+#define MB_SERVICE_NOTIFICATION  0x00200000
+#else
+#define MB_SERVICE_NOTIFICATION  0x00040000
+#endif
+#define MB_SERVICE_NOTIFICATION_NT3X  0x00040000
+#endif
+#define MB_SETFOREGROUND 0x10000
+#define MB_SYSTEMMODAL 4096
+#define MB_TASKMODAL 0x2000
+#define MB_YESNO 4
+#define MB_YESNOCANCEL 3
+#define MB_ICONMASK 240
+#define MB_DEFMASK 3840
+#define MB_MODEMASK 0x00003000
+#define MB_MISCMASK 0x0000C000
+#define MB_NOFOCUS 0x00008000
+#define MB_TYPEMASK 15
+#define MB_TOPMOST 0x40000
+#define IDABORT 3
+#define IDCANCEL 2
+#define IDCLOSE 8
+#define IDHELP 9
+#define IDIGNORE 5
+#define IDNO 7
+#define IDOK 1
+#define IDRETRY 4
+#define IDYES 6
+#define GWL_EXSTYLE (-20)
+#define GWL_STYLE (-16)
+#define GWL_WNDPROC (-4)
+#define GWLP_WNDPROC (-4)
+#define GWL_HINSTANCE (-6)
+#define GWLP_HINSTANCE (-6)
+#define GWL_HWNDPARENT (-8)
+#define GWLP_HWNDPARENT (-8)
+#define GWL_ID (-12)
+#define GWLP_ID (-12)
+#define GWL_USERDATA (-21)
+#define GWLP_USERDATA (-21)
+#define DWL_DLGPROC 4
+#define DWLP_DLGPROC 4
+#define DWL_MSGRESULT 0
+#define DWLP_MSGRESULT 0
+#define DWL_USER 8
+#define DWLP_USER 8
+#define QS_ALLEVENTS 191
+#define QS_ALLINPUT 255
+#define QS_HOTKEY 128
+#define QS_INPUT 7
+#define QS_KEY 1
+#define QS_MOUSE 6
+#define QS_MOUSEBUTTON 4
+#define QS_MOUSEMOVE 2
+#define QS_PAINT 32
+#define QS_POSTMESSAGE 8
+#define QS_SENDMESSAGE 64
+#define QS_TIMER 16
+#define COLOR_3DDKSHADOW 21
+#define COLOR_3DFACE 15
+#define COLOR_3DHILIGHT 20
+#define COLOR_3DHIGHLIGHT 20
+#define COLOR_3DLIGHT 22
+#define COLOR_BTNHILIGHT 20
+#define COLOR_3DSHADOW 16
+#define COLOR_ACTIVEBORDER 10
+#define COLOR_ACTIVECAPTION 2
+#define COLOR_APPWORKSPACE 12
+#define COLOR_BACKGROUND 1
+#define COLOR_DESKTOP 1
+#define COLOR_BTNFACE 15
+#define COLOR_BTNHIGHLIGHT 20
+#define COLOR_BTNSHADOW 16
+#define COLOR_BTNTEXT 18
+#define COLOR_CAPTIONTEXT 9
+#define COLOR_GRAYTEXT 17
+#define COLOR_HIGHLIGHT 13
+#define COLOR_HIGHLIGHTTEXT 14
+#define COLOR_INACTIVEBORDER 11
+#define COLOR_INACTIVECAPTION 3
+#define COLOR_INACTIVECAPTIONTEXT 19
+#define COLOR_INFOBK 24
+#define COLOR_INFOTEXT 23
+#define COLOR_MENU 4
+#define COLOR_MENUTEXT 7
+#define COLOR_SCROLLBAR 0
+#define COLOR_WINDOW 5
+#define COLOR_WINDOWFRAME 6
+#define COLOR_WINDOWTEXT 8
+#define CTLCOLOR_MSGBOX 0
+#define CTLCOLOR_EDIT 1
+#define CTLCOLOR_LISTBOX 2
+#define CTLCOLOR_BTN 3
+#define CTLCOLOR_DLG 4
+#define CTLCOLOR_SCROLLBAR 5
+#define CTLCOLOR_STATIC 6
+#define CTLCOLOR_MAX 7
+#define SM_CXSCREEN 0
+#define SM_CYSCREEN 1
+#define SM_CXVSCROLL 2
+#define SM_CYHSCROLL 3
+#define SM_CYCAPTION 4
+#define SM_CXBORDER 5
+#define SM_CYBORDER 6
+#define SM_CXDLGFRAME 7
+#define SM_CXFIXEDFRAME 7
+#define SM_CYDLGFRAME 8
+#define SM_CYFIXEDFRAME 8
+#define SM_CYVTHUMB 9
+#define SM_CXHTHUMB 10
+#define SM_CXICON 11
+#define SM_CYICON 12
+#define SM_CXCURSOR 13
+#define SM_CYCURSOR 14
+#define SM_CYMENU 15
+#define SM_CXFULLSCREEN 16
+#define SM_CYFULLSCREEN 17
+#define SM_CYKANJIWINDOW 18
+#define SM_MOUSEPRESENT 19
+#define SM_CYVSCROLL 20
+#define SM_CXHSCROLL 21
+#define SM_DEBUG 22
+#define SM_SWAPBUTTON 23
+#define SM_RESERVED1 24
+#define SM_RESERVED2 25
+#define SM_RESERVED3 26
+#define SM_RESERVED4 27
+#define SM_CXMIN 28
+#define SM_CYMIN 29
+#define SM_CXSIZE 30
+#define SM_CYSIZE 31
+#define SM_CXSIZEFRAME 32
+#define SM_CXFRAME 32
+#define SM_CYSIZEFRAME 33
+#define SM_CYFRAME 33
+#define SM_CXMINTRACK 34
+#define SM_CYMINTRACK 35
+#define SM_CXDOUBLECLK 36
+#define SM_CYDOUBLECLK 37
+#define SM_CXICONSPACING 38
+#define SM_CYICONSPACING 39
+#define SM_MENUDROPALIGNMENT 40
+#define SM_PENWINDOWS 41
+#define SM_DBCSENABLED 42
+#define SM_CMOUSEBUTTONS 43
+#define SM_SECURE 44
+#define SM_CXEDGE 45
+#define SM_CYEDGE 46
+#define SM_CXMINSPACING 47
+#define SM_CYMINSPACING 48
+#define SM_CXSMICON 49
+#define SM_CYSMICON 50
+#define SM_CYSMCAPTION 51
+#define SM_CXSMSIZE 52
+#define SM_CYSMSIZE 53
+#define SM_CXMENUSIZE 54
+#define SM_CYMENUSIZE 55
+#define SM_ARRANGE 56
+#define SM_CXMINIMIZED 57
+#define SM_CYMINIMIZED 58
+#define SM_CXMAXTRACK 59
+#define SM_CYMAXTRACK 60
+#define SM_CXMAXIMIZED 61
+#define SM_CYMAXIMIZED 62
+#define SM_NETWORK 63
+#define LR_DEFAULTSIZE 64
+#define SM_CLEANBOOT 67
+#define SM_CXDRAG 68
+#define SM_CYDRAG 69
+#define SM_SHOWSOUNDS 70
+#define SM_CXMENUCHECK 71
+#define SM_CYMENUCHECK 72
+#define SM_SLOWMACHINE 73
+#define SM_MIDEASTENABLED 74
+#define SM_MOUSEWHEELPRESENT 75
+#define SM_XVIRTUALSCREEN 76
+#define SM_YVIRTUALSCREEN 77
+#define SM_CXVIRTUALSCREEN 78
+#define SM_CYVIRTUALSCREEN 79
+#define SM_CMONITORS 80
+#define SM_SAMEDISPLAYFORMAT 81
+#if (_WIN32_WINNT < 0x0400)
+#define SM_CMETRICS 76
+#else
+#define SM_CMETRICS 83
+#endif
+#define ARW_BOTTOMLEFT 0
+#define ARW_BOTTOMRIGHT 1
+#define ARW_HIDE 8
+#define ARW_TOPLEFT 2
+#define ARW_TOPRIGHT 3
+#define ARW_DOWN 4
+#define ARW_LEFT 0
+#define ARW_RIGHT 0
+#define ARW_UP 4
+#define UOI_FLAGS 1
+#define UOI_NAME 2
+#define UOI_TYPE 3
+#define UOI_USER_SID 4
+#define LR_DEFAULTCOLOR 0
+#define LR_MONOCHROME 1
+#define LR_COLOR 2
+#define LR_COPYRETURNORG 4
+#define LR_COPYDELETEORG 8
+#define LR_LOADFROMFILE 16
+#define LR_LOADTRANSPARENT 32
+#define LR_LOADREALSIZE 128
+#define LR_LOADMAP3DCOLORS 4096
+#define LR_CREATEDIBSECTION 8192
+#define LR_COPYFROMRESOURCE 0x4000
+#define LR_SHARED 32768
+#define KEYEVENTF_EXTENDEDKEY 1
+#define KEYEVENTF_KEYUP 2
+#define OBM_BTNCORNERS 32758
+#define OBM_BTSIZE 32761
+#define OBM_CHECK 32760
+#define OBM_CHECKBOXES 32759
+#define OBM_CLOSE 32754
+#define OBM_COMBO 32738
+#define OBM_DNARROW 32752
+#define OBM_DNARROWD 32742
+#define OBM_DNARROWI 32736
+#define OBM_LFARROW 32750
+#define OBM_LFARROWI 32734
+#define OBM_LFARROWD 32740
+#define OBM_MNARROW 32739
+#define OBM_OLD_CLOSE 32767
+#define OBM_OLD_DNARROW 32764
+#define OBM_OLD_LFARROW 32762
+#define OBM_OLD_REDUCE 32757
+#define OBM_OLD_RESTORE 32755
+#define OBM_OLD_RGARROW 32763
+#define OBM_OLD_UPARROW 32765
+#define OBM_OLD_ZOOM 32756
+#define OBM_REDUCE 32749
+#define OBM_REDUCED 32746
+#define OBM_RESTORE 32747
+#define OBM_RESTORED 32744
+#define OBM_RGARROW 32751
+#define OBM_RGARROWD 32741
+#define OBM_RGARROWI 32735
+#define OBM_SIZE 32766
+#define OBM_UPARROW 32753
+#define OBM_UPARROWD 32743
+#define OBM_UPARROWI 32737
+#define OBM_ZOOM 32748
+#define OBM_ZOOMD 32745
+#define OCR_NORMAL 32512
+#define OCR_IBEAM 32513
+#define OCR_WAIT 32514
+#define OCR_CROSS 32515
+#define OCR_UP 32516
+#define OCR_SIZE 32640
+#define OCR_ICON 32641
+#define OCR_SIZENWSE 32642
+#define OCR_SIZENESW 32643
+#define OCR_SIZEWE 32644
+#define OCR_SIZENS 32645
+#define OCR_SIZEALL 32646
+#define OCR_NO 32648
+#define OCR_APPSTARTING 32650
+#define OIC_SAMPLE 32512
+#define OIC_HAND 32513
+#define OIC_QUES 32514
+#define OIC_BANG 32515
+#define OIC_NOTE 32516
+#define OIC_WINLOGO 32517
+#define OIC_WARNING OIC_BANG
+#define OIC_ERROR OIC_HAND
+#define OIC_INFORMATION OIC_NOTE
+#define HELPINFO_MENUITEM 2
+#define HELPINFO_WINDOW 1
+#define MSGF_DIALOGBOX 0
+#define MSGF_MESSAGEBOX 1
+#define MSGF_MENU 2
+#define MSGF_MOVE 3
+#define MSGF_SIZE 4
+#define MSGF_SCROLLBAR 5
+#define MSGF_NEXTWINDOW 6
+#define MSGF_MAINLOOP 8
+#define MSGF_USER 4096
+#define MOUSEEVENTF_MOVE 1
+#define MOUSEEVENTF_LEFTDOWN 2
+#define MOUSEEVENTF_LEFTUP 4
+#define MOUSEEVENTF_RIGHTDOWN 8
+#define MOUSEEVENTF_RIGHTUP 16
+#define MOUSEEVENTF_MIDDLEDOWN 32
+#define MOUSEEVENTF_MIDDLEUP 64
+#define MOUSEEVENTF_WHEEL 0x0800 
+#define MOUSEEVENTF_ABSOLUTE 32768
+#define PM_NOREMOVE 0
+#define PM_REMOVE 1
+#define PM_NOYIELD 2
+#define HWND_BROADCAST  ((HWND)0xffff)
+#define HWND_BOTTOM ((HWND)1)
+#define HWND_NOTOPMOST ((HWND)(-2))
+#define HWND_TOP ((HWND)0)
+#define HWND_TOPMOST ((HWND)(-1))
+#define HWND_DESKTOP (HWND)0
+#define HWND_MESSAGE ((HWND)(-3)) /* w2k */
+#define RDW_ERASE 4
+#define RDW_FRAME 1024
+#define RDW_INTERNALPAINT 2
+#define RDW_INVALIDATE 1
+#define RDW_NOERASE 32
+#define RDW_NOFRAME 2048
+#define RDW_NOINTERNALPAINT 16
+#define RDW_VALIDATE 8
+#define RDW_ERASENOW 512
+#define RDW_UPDATENOW 256
+#define RDW_ALLCHILDREN 128
+#define RDW_NOCHILDREN 64
+#define SMTO_ABORTIFHUNG 2
+#define SMTO_BLOCK 1
+#define SMTO_NORMAL 0
+#define SIF_ALL 23
+#define SIF_PAGE 2
+#define SIF_POS 4
+#define SIF_RANGE 1
+#define SIF_DISABLENOSCROLL 8
+#define SIF_TRACKPOS   16
+#define SWP_DRAWFRAME 32
+#define SWP_FRAMECHANGED 32
+#define SWP_HIDEWINDOW 128
+#define SWP_NOACTIVATE 16
+#define SWP_NOCOPYBITS 256
+#define SWP_NOMOVE 2
+#define SWP_NOSIZE 1
+#define SWP_NOREDRAW 8
+#define SWP_NOZORDER 4
+#define SWP_SHOWWINDOW 64
+#define SWP_NOOWNERZORDER 512
+#define SWP_NOREPOSITION 512
+#define SWP_NOSENDCHANGING 1024
+#define SWP_DEFERERASE 8192
+#define SWP_ASYNCWINDOWPOS  16384
+#define HSHELL_ACTIVATESHELLWINDOW 3
+#define HSHELL_GETMINRECT 5
+#define HSHELL_LANGUAGE 8
+#define HSHELL_REDRAW 6
+#define HSHELL_TASKMAN 7
+#define HSHELL_WINDOWACTIVATED 4
+#define HSHELL_WINDOWCREATED 1
+#define HSHELL_WINDOWDESTROYED 2
+#define SPI_GETACCESSTIMEOUT 60
+#define SPI_GETANIMATION 72
+#define SPI_GETBEEP 1
+#define SPI_GETBORDER 5
+#define SPI_GETDEFAULTINPUTLANG 89
+#define SPI_GETDRAGFULLWINDOWS 38
+#define SPI_GETFASTTASKSWITCH 35
+#define SPI_GETFILTERKEYS 50
+#define SPI_GETFONTSMOOTHING 74
+#define SPI_GETGRIDGRANULARITY 18
+#define SPI_GETHIGHCONTRAST 66
+#define SPI_GETICONMETRICS 45
+#define SPI_GETICONTITLELOGFONT 31
+#define SPI_GETICONTITLEWRAP 25
+#define SPI_GETKEYBOARDDELAY 22
+#define SPI_GETKEYBOARDPREF 68
+#define SPI_GETKEYBOARDSPEED 10
+#define SPI_GETLOWPOWERACTIVE 83
+#define SPI_GETLOWPOWERTIMEOUT 79
+#define SPI_GETMENUDROPALIGNMENT 27
+#define SPI_GETMINIMIZEDMETRICS 43
+#define SPI_GETMOUSE 3
+#define SPI_GETMOUSEKEYS 54
+#define SPI_GETMOUSETRAILS 94
+#define SPI_GETNONCLIENTMETRICS 41
+#define SPI_GETPOWEROFFACTIVE 84
+#define SPI_GETPOWEROFFTIMEOUT 80
+#define SPI_GETSCREENREADER 70
+#define SPI_GETSCREENSAVEACTIVE 16
+#define SPI_GETSCREENSAVETIMEOUT 14
+#define SPI_GETSERIALKEYS 62
+#define SPI_GETSHOWSOUNDS 56
+#define SPI_GETSOUNDSENTRY 64
+#define SPI_GETSTICKYKEYS 58
+#define SPI_GETTOGGLEKEYS 52
+#define SPI_GETWINDOWSEXTENSION 92
+#define SPI_GETWORKAREA 48
+#define SPI_ICONHORIZONTALSPACING 13
+#define SPI_ICONVERTICALSPACING 24
+#define SPI_LANGDRIVER 12
+#define SPI_SCREENSAVERRUNNING 97
+#define SPI_SETACCESSTIMEOUT 61
+#define SPI_SETANIMATION 73
+#define SPI_SETBEEP 2
+#define SPI_SETBORDER 6
+#define SPI_SETDEFAULTINPUTLANG 90
+#define SPI_SETDESKPATTERN 21
+#define SPI_SETDESKWALLPAPER 20
+#define SPI_SETDOUBLECLICKTIME 32
+#define SPI_SETDOUBLECLKHEIGHT 30
+#define SPI_SETDOUBLECLKWIDTH 29
+#define SPI_SETDRAGFULLWINDOWS 37
+#define SPI_SETDRAGHEIGHT 77
+#define SPI_SETDRAGWIDTH 76
+#define SPI_SETFASTTASKSWITCH 36
+#define SPI_SETFILTERKEYS 51
+#define SPI_SETFONTSMOOTHING 75
+#define SPI_SETGRIDGRANULARITY 19
+#define SPI_SETHANDHELD 78
+#define SPI_SETHIGHCONTRAST 67
+#define SPI_SETICONMETRICS 46
+#define SPI_SETICONTITLELOGFONT 34
+#define SPI_SETICONTITLEWRAP 26
+#define SPI_SETKEYBOARDDELAY 23
+#define SPI_SETKEYBOARDPREF 69
+#define SPI_SETKEYBOARDSPEED 11
+#define SPI_SETLANGTOGGLE 91
+#define SPI_SETLOWPOWERACTIVE 85
+#define SPI_SETLOWPOWERTIMEOUT 81
+#define SPI_SETMENUDROPALIGNMENT 28
+#define SPI_SETMINIMIZEDMETRICS 44
+#define SPI_SETMOUSE 4
+#define SPI_SETMOUSEBUTTONSWAP 33
+#define SPI_SETMOUSEKEYS 55
+#define SPI_SETMOUSETRAILS 93
+#define SPI_SETNONCLIENTMETRICS 42
+#define SPI_SETPENWINDOWS 49
+#define SPI_SETPOWEROFFACTIVE 86
+#define SPI_SETPOWEROFFTIMEOUT 82
+#define SPI_SETSCREENREADER 71
+#define SPI_SETSCREENSAVEACTIVE 17
+#define SPI_SETSCREENSAVERRUNNING 97
+#define SPI_SETSCREENSAVETIMEOUT 15
+#define SPI_SETSERIALKEYS 63
+#define SPI_SETSHOWSOUNDS 57
+#define SPI_SETSOUNDSENTRY 65
+#define SPI_SETSTICKYKEYS 59
+#define SPI_SETTOGGLEKEYS 53
+#define SPI_SETWORKAREA 47
+#define SPIF_UPDATEINIFILE 1
+#define SPIF_SENDWININICHANGE 2
+#define SPIF_SENDCHANGE 2
+#define ATF_ONOFFFEEDBACK 2
+#define ATF_TIMEOUTON 1
+#define WM_APP 32768
+#define WM_ACTIVATE 6
+#define WM_ACTIVATEAPP 28
+/* FIXME/CHECK: Are WM_AFX{FIRST,LAST} valid for WINVER < 0x400? */
+#define WM_AFXFIRST 864
+#define WM_AFXLAST 895
+#define WM_ASKCBFORMATNAME 780
+#define WM_CANCELJOURNAL 75
+#define WM_CANCELMODE 31
+#define WM_CAPTURECHANGED 533
+#define WM_CHANGECBCHAIN 781
+#define WM_CHAR 258
+#define WM_CHARTOITEM 47
+#define WM_CHILDACTIVATE 34
+#define WM_CLEAR 771
+#define WM_CLOSE 16
+#define WM_COMMAND 273
+#define WM_COMMNOTIFY 68		/* obsolete */
+#define WM_COMPACTING 65
+#define WM_COMPAREITEM 57
+#define WM_CONTEXTMENU 123
+#define WM_COPY 769
+#define WM_COPYDATA 74
+#define WM_CREATE 1
+#define WM_CTLCOLORBTN 309
+#define WM_CTLCOLORDLG 310
+#define WM_CTLCOLOREDIT 307
+#define WM_CTLCOLORLISTBOX 308
+#define WM_CTLCOLORMSGBOX 306
+#define WM_CTLCOLORSCROLLBAR 311
+#define WM_CTLCOLORSTATIC 312
+#define WM_CUT 768
+#define WM_DEADCHAR 259
+#define WM_DELETEITEM 45
+#define WM_DESTROY 2
+#define WM_DESTROYCLIPBOARD 775
+#define WM_DEVICECHANGE 537
+#define WM_DEVMODECHANGE 27
+#define WM_DISPLAYCHANGE 126
+#define WM_DRAWCLIPBOARD 776
+#define WM_DRAWITEM 43
+#define WM_DROPFILES 563
+#define WM_ENABLE 10
+#define WM_ENDSESSION 22
+#define WM_ENTERIDLE 289
+#define WM_ENTERMENULOOP 529
+#define WM_ENTERSIZEMOVE 561
+#define WM_ERASEBKGND 20
+#define WM_EXITMENULOOP 530
+#define WM_EXITSIZEMOVE 562
+#define WM_FONTCHANGE 29
+#define WM_GETDLGCODE 135
+#define WM_GETFONT 49
+#define WM_GETHOTKEY 51
+#define WM_GETICON 127
+#define WM_GETMINMAXINFO 36
+#define WM_GETTEXT 13
+#define WM_GETTEXTLENGTH 14
+/* FIXME/CHECK: Are WM_HANDHEL{FIRST,LAST} valid for WINVER < 0x400? */
+#define WM_HANDHELDFIRST 856
+#define WM_HANDHELDLAST 863
+#define WM_HELP 83
+#define WM_HOTKEY 786
+#define WM_HSCROLL 276
+#define WM_HSCROLLCLIPBOARD 782
+#define WM_ICONERASEBKGND 39
+#define WM_INITDIALOG 272
+#define WM_INITMENU 278
+#define WM_INITMENUPOPUP 279
+#define WM_INPUTLANGCHANGE 81
+#define WM_INPUTLANGCHANGEREQUEST 80
+#define WM_KEYDOWN 256
+#define WM_KEYUP 257
+#define WM_KILLFOCUS 8
+#define WM_MDIACTIVATE 546
+#define WM_MDICASCADE 551
+#define WM_MDICREATE 544
+#define WM_MDIDESTROY 545
+#define WM_MDIGETACTIVE 553
+#define WM_MDIICONARRANGE 552
+#define WM_MDIMAXIMIZE 549
+#define WM_MDINEXT 548
+#define WM_MDIREFRESHMENU 564
+#define WM_MDIRESTORE 547
+#define WM_MDISETMENU 560
+#define WM_MDITILE 550
+#define WM_MEASUREITEM 44
+#define WM_MENUCHAR 288
+#define WM_MENUSELECT 287
+#define WM_NEXTMENU 531
+#define WM_MOVE 3
+#define WM_MOVING 534
+#define WM_NCACTIVATE 134
+#define WM_NCCALCSIZE 131
+#define WM_NCCREATE 129
+#define WM_NCDESTROY 130
+#define WM_NCHITTEST 132
+#define WM_NCLBUTTONDBLCLK 163
+#define WM_NCLBUTTONDOWN 161
+#define WM_NCLBUTTONUP 162
+#define WM_NCMBUTTONDBLCLK 169
+#define WM_NCMBUTTONDOWN 167
+#define WM_NCMBUTTONUP 168
+#define WM_NCMOUSEMOVE 160
+#define WM_NCPAINT 133
+#define WM_NCRBUTTONDBLCLK 166
+#define WM_NCRBUTTONDOWN 164
+#define WM_NCRBUTTONUP 165
+#define WM_NEXTDLGCTL 40
+#define WM_NEXTMENU 531
+#define WM_NOTIFY 78
+#define WM_NOTIFYFORMAT 85
+#define WM_NULL 0
+#define WM_PAINT 15
+#define WM_PAINTCLIPBOARD 777
+#define WM_PAINTICON 38
+#define WM_PALETTECHANGED 785
+#define WM_PALETTEISCHANGING 784
+#define WM_PARENTNOTIFY 528
+#define WM_PASTE 770
+#define WM_PENWINFIRST 896
+#define WM_PENWINLAST 911
+#define WM_POWER 72
+#define WM_POWERBROADCAST 536
+#define WM_PRINT 791
+#define WM_PRINTCLIENT 792
+#define WM_QUERYDRAGICON 55
+#define WM_QUERYENDSESSION 17
+#define WM_QUERYNEWPALETTE 783
+#define WM_QUERYOPEN 19
+#define WM_QUEUESYNC 35
+#define WM_QUIT 18
+#define WM_RENDERALLFORMATS 774
+#define WM_RENDERFORMAT 773
+#define WM_SETCURSOR 32
+#define WM_SETFOCUS 7
+#define WM_SETFONT 48
+#define WM_SETHOTKEY 50
+#define WM_SETICON 128
+#define WM_SETREDRAW 11
+#define WM_SETTEXT 12
+#define WM_SETTINGCHANGE 26
+#define WM_SHOWWINDOW 24
+#define WM_SIZE 5
+#define WM_SIZECLIPBOARD 779
+#define WM_SIZING 532
+#define WM_SPOOLERSTATUS 42
+#define WM_STYLECHANGED 125
+#define WM_STYLECHANGING 124
+#define WM_SYSCHAR 262
+#define WM_SYSCOLORCHANGE 21
+#define WM_SYSCOMMAND 274
+#define WM_SYSDEADCHAR 263
+#define WM_SYSKEYDOWN 260
+#define WM_SYSKEYUP 261
+#define WM_TCARD 82
+#define WM_TIMECHANGE 30
+#define WM_TIMER 275
+#define WM_UNDO 772
+#define WM_USER 1024
+#define WM_USERCHANGED 84
+#define WM_VKEYTOITEM 46
+#define WM_VSCROLL 277
+#define WM_VSCROLLCLIPBOARD 778
+#define WM_WINDOWPOSCHANGED 71
+#define WM_WINDOWPOSCHANGING 70
+#define WM_WININICHANGE 26
+#define WM_KEYFIRST 256
+#define WM_KEYLAST 264
+#define WM_SYNCPAINT  136
+#define WM_MOUSEACTIVATE 33
+#define WM_MOUSEMOVE 512
+#define WM_LBUTTONDOWN 513
+#define WM_LBUTTONUP 514
+#define WM_LBUTTONDBLCLK 515
+#define WM_RBUTTONDOWN 516
+#define WM_RBUTTONUP 517
+#define WM_RBUTTONDBLCLK 518
+#define WM_MBUTTONDOWN 519
+#define WM_MBUTTONUP 520
+#define WM_MBUTTONDBLCLK 521
+#define WM_MOUSEWHEEL 522
+#define WM_MOUSEFIRST 512
+#define WM_MOUSELAST 522
+#define WM_MOUSEHOVER	0x2A1
+#define WM_MOUSELEAVE	0x2A3
+#if(_WIN32_WINNT >= 0x0400)
+#define WHEEL_DELTA 120
+#define GET_WHEEL_DELTA_WPARAM(wparam) ((short)HIWORD (wparam))
+#endif
+#define BM_CLICK 245
+#define BM_GETCHECK 240
+#define BM_GETIMAGE 246
+#define BM_GETSTATE 242
+#define BM_SETCHECK 241
+#define BM_SETIMAGE 247
+#define BM_SETSTATE 243
+#define BM_SETSTYLE 244
+#define BN_CLICKED 0
+#define BN_DBLCLK 5
+#define BN_DISABLE 4
+#define BN_DOUBLECLICKED 5
+#define BN_HILITE 2
+#define BN_KILLFOCUS 7
+#define BN_PAINT 1
+#define BN_PUSHED 2
+#define BN_SETFOCUS 6
+#define BN_UNHILITE 3
+#define BN_UNPUSHED 3
+#define CB_ADDSTRING 323
+#define CB_DELETESTRING 324
+#define CB_DIR 325
+#define CB_FINDSTRING 332
+#define CB_FINDSTRINGEXACT 344
+#define CB_GETCOUNT 326
+#define CB_GETCURSEL 327
+#define CB_GETDROPPEDCONTROLRECT 338
+#define CB_GETDROPPEDSTATE 343
+#define CB_GETDROPPEDWIDTH 351
+#define CB_GETEDITSEL 320
+#define CB_GETEXTENDEDUI 342
+#define CB_GETHORIZONTALEXTENT 349
+#define CB_GETITEMDATA 336
+#define CB_GETITEMHEIGHT 340
+#define CB_GETLBTEXT 328
+#define CB_GETLBTEXTLEN 329
+#define CB_GETLOCALE 346
+#define CB_GETTOPINDEX 347
+#define CB_INITSTORAGE 353
+#define CB_INSERTSTRING 330
+#define CB_LIMITTEXT 321
+#define CB_RESETCONTENT 331
+#define CB_SELECTSTRING 333
+#define CB_SETCURSEL 334
+#define CB_SETDROPPEDWIDTH 352
+#define CB_SETEDITSEL 322
+#define CB_SETEXTENDEDUI 341
+#define CB_SETHORIZONTALEXTENT 350
+#define CB_SETITEMDATA 337
+#define CB_SETITEMHEIGHT 339
+#define CB_SETLOCALE 345
+#define CB_SETTOPINDEX 348
+#define CB_SHOWDROPDOWN 335
+#define CBN_CLOSEUP 8
+#define CBN_DBLCLK 2
+#define CBN_DROPDOWN 7
+#define CBN_EDITCHANGE 5
+#define CBN_EDITUPDATE 6
+#define CBN_ERRSPACE (-1)
+#define CBN_KILLFOCUS 4
+#define CBN_SELCHANGE 1
+#define CBN_SELENDCANCEL 10
+#define CBN_SELENDOK 9
+#define CBN_SETFOCUS 3
+#define EM_CANUNDO 198
+#define EM_CHARFROMPOS 215
+#define EM_EMPTYUNDOBUFFER 205
+#define EM_FMTLINES 200
+#define EM_GETFIRSTVISIBLELINE 206
+#define EM_GETHANDLE 189
+#define EM_GETLIMITTEXT 213
+#define EM_GETLINE 196
+#define EM_GETLINECOUNT 186
+#define EM_GETMARGINS 212
+#define EM_GETMODIFY 184
+#define EM_GETPASSWORDCHAR 210
+#define EM_GETRECT 178
+#define EM_GETSEL 176
+#define EM_GETTHUMB 190
+#define EM_GETWORDBREAKPROC 209
+#define EM_LIMITTEXT 197
+#define EM_LINEFROMCHAR 201
+#define EM_LINEINDEX 187
+#define EM_LINELENGTH 193
+#define EM_LINESCROLL 182
+#define EM_POSFROMCHAR 214
+#define EM_REPLACESEL 194
+#define EM_SCROLL 181
+#define EM_SCROLLCARET 183
+#define EM_SETHANDLE 188
+#define EM_SETLIMITTEXT 197
+#define EM_SETMARGINS 211
+#define EM_SETMODIFY 185
+#define EM_SETPASSWORDCHAR 204
+#define EM_SETREADONLY 207
+#define EM_SETRECT 179
+#define EM_SETRECTNP 180
+#define EM_SETSEL 177
+#define EM_SETTABSTOPS 203
+#define EM_SETWORDBREAKPROC 208
+#define EM_UNDO 199
+#define EN_CHANGE 768
+#define EN_ERRSPACE 1280
+#define EN_HSCROLL 1537
+#define EN_KILLFOCUS 512
+#define EN_MAXTEXT 1281
+#define EN_SETFOCUS 256
+#define EN_UPDATE 1024
+#define EN_VSCROLL 1538
+#define LB_ADDFILE 406
+#define LB_ADDSTRING 384
+#define LB_DELETESTRING 386
+#define LB_DIR 397
+#define LB_FINDSTRING 399
+#define LB_FINDSTRINGEXACT 418
+#define LB_GETANCHORINDEX 413
+#define LB_GETCARETINDEX 415
+#define LB_GETCOUNT 395
+#define LB_GETCURSEL 392
+#define LB_GETHORIZONTALEXTENT 403
+#define LB_GETITEMDATA 409
+#define LB_GETITEMHEIGHT 417
+#define LB_GETITEMRECT 408
+#define LB_GETLOCALE 422
+#define LB_GETSEL 391
+#define LB_GETSELCOUNT 400
+#define LB_GETSELITEMS 401
+#define LB_GETTEXT 393
+#define LB_GETTEXTLEN 394
+#define LB_GETTOPINDEX 398
+#define LB_INITSTORAGE 424
+#define LB_INSERTSTRING 385
+#define LB_ITEMFROMPOINT 425
+#define LB_RESETCONTENT 388
+#define LB_SELECTSTRING 396
+#define LB_SELITEMRANGE 411
+#define LB_SELITEMRANGEEX 387
+#define LB_SETANCHORINDEX 412
+#define LB_SETCARETINDEX 414
+#define LB_SETCOLUMNWIDTH 405
+#define LB_SETCOUNT 423
+#define LB_SETCURSEL 390
+#define LB_SETHORIZONTALEXTENT 404
+#define LB_SETITEMDATA 410
+#define LB_SETITEMHEIGHT 416
+#define LB_SETLOCALE 421
+#define LB_SETSEL 389
+#define LB_SETTABSTOPS 402
+#define LB_SETTOPINDEX 407
+#define LBN_DBLCLK 2
+#define LBN_ERRSPACE (-2)
+#define LBN_KILLFOCUS 5
+#define LBN_SELCANCEL 3
+#define LBN_SELCHANGE 1
+#define LBN_SETFOCUS 4
+#define SBM_ENABLE_ARROWS 228
+#define SBM_GETPOS 225
+#define SBM_GETRANGE 227
+#define SBM_GETSCROLLINFO 234
+#define SBM_SETPOS 224
+#define SBM_SETRANGE 226
+#define SBM_SETRANGEREDRAW 230
+#define SBM_SETSCROLLINFO 233
+#define STM_GETICON 369
+#define STM_GETIMAGE 371
+#define STM_SETICON 368
+#define STM_SETIMAGE 370
+#define STN_CLICKED 0
+#define STN_DBLCLK 1
+#define STN_DISABLE 3
+#define STN_ENABLE 2
+#define DM_GETDEFID WM_USER
+#define DM_SETDEFID (WM_USER+1)
+#define DM_REPOSITION (WM_USER+2)
+#define PSM_PAGEINFO (WM_USER+100)
+#define PSM_SHEETINFO (WM_USER+101)
+#define PSI_SETACTIVE 1
+#define PSI_KILLACTIVE 2
+#define PSI_APPLY 3
+#define PSI_RESET 4
+#define PSI_HASHELP 5
+#define PSI_HELP 6
+#define PSI_CHANGED 1
+#define PSI_GUISTART 2
+#define PSI_REBOOT 3
+#define PSI_GETSIBLINGS 4
+#define DCX_WINDOW 1
+#define DCX_CACHE 2
+#define DCX_PARENTCLIP 32
+#define DCX_CLIPSIBLINGS 16
+#define DCX_CLIPCHILDREN 8
+#define DCX_NORESETATTRS 4
+#define DCX_LOCKWINDOWUPDATE 0x400
+#define DCX_EXCLUDERGN 64
+#define DCX_INTERSECTRGN 128
+#define DCX_VALIDATE 0x200000
+#define GMDI_GOINTOPOPUPS 2
+#define GMDI_USEDISABLED 1
+#define FKF_AVAILABLE 2
+#define FKF_CLICKON 64
+#define FKF_FILTERKEYSON 1
+#define FKF_HOTKEYACTIVE 4
+#define FKF_HOTKEYSOUND 16
+#define FKF_CONFIRMHOTKEY 8
+#define FKF_INDICATOR 32
+#define HCF_HIGHCONTRASTON 1
+#define HCF_AVAILABLE 2
+#define HCF_HOTKEYACTIVE 4
+#define HCF_CONFIRMHOTKEY 8
+#define HCF_HOTKEYSOUND 16
+#define HCF_INDICATOR 32
+#define HCF_HOTKEYAVAILABLE 64
+#define MKF_AVAILABLE 2
+#define MKF_CONFIRMHOTKEY 8
+#define MKF_HOTKEYACTIVE 4
+#define MKF_HOTKEYSOUND 16
+#define MKF_INDICATOR 32
+#define MKF_MOUSEKEYSON 1
+#define MKF_MODIFIERS 64
+#define MKF_REPLACENUMBERS 128
+#define SERKF_ACTIVE 8 /* May be obsolete. Not in recent MS docs. */
+#define SERKF_AVAILABLE 2
+#define SERKF_INDICATOR 4
+#define SERKF_SERIALKEYSON 1
+#define SSF_AVAILABLE 2
+#define SSF_SOUNDSENTRYON 1
+#define SSTF_BORDER 2
+#define SSTF_CHARS 1
+#define SSTF_DISPLAY 3
+#define SSTF_NONE 0
+#define SSGF_DISPLAY 3
+#define SSGF_NONE 0
+#define SSWF_CUSTOM 4
+#define SSWF_DISPLAY 3
+#define SSWF_NONE 0
+#define SSWF_TITLE 1
+#define SSWF_WINDOW 2
+#define SKF_AUDIBLEFEEDBACK 64
+#define SKF_AVAILABLE 2
+#define SKF_CONFIRMHOTKEY 8
+#define SKF_HOTKEYACTIVE 4
+#define SKF_HOTKEYSOUND 16
+#define SKF_INDICATOR 32
+#define SKF_STICKYKEYSON 1
+#define SKF_TRISTATE 128
+#define SKF_TWOKEYSOFF 256
+#define TKF_AVAILABLE 2
+#define TKF_CONFIRMHOTKEY 8
+#define TKF_HOTKEYACTIVE 4
+#define TKF_HOTKEYSOUND 16
+#define TKF_TOGGLEKEYSON 1
+#define MDITILE_SKIPDISABLED 2
+#define MDITILE_HORIZONTAL 1
+#define MDITILE_VERTICAL 0
+#define VK_LBUTTON	1
+#define VK_RBUTTON	2
+#define VK_CANCEL	3
+#define VK_MBUTTON	4
+#define VK_BACK	8
+#define VK_TAB	9
+#define VK_CLEAR	12
+#define VK_RETURN	13
+#define VK_KANA		15
+#define VK_SHIFT	16
+#define VK_CONTROL	17
+#define VK_MENU	18
+#define VK_PAUSE	19
+#define VK_CAPITAL	20
+#define VK_ESCAPE	0x1B
+#define VK_SPACE	32
+#define VK_PRIOR	33
+#define VK_NEXT	34
+#define VK_END	35
+#define VK_HOME	36
+#define VK_LEFT	37
+#define VK_UP	38
+#define VK_RIGHT	39
+#define VK_DOWN	40
+#define VK_SELECT	41
+#define VK_PRINT	42
+#define VK_EXECUTE	43
+#define VK_SNAPSHOT	44
+#define VK_INSERT	45
+#define VK_DELETE	46
+#define VK_HELP	47
+#define VK_LWIN	0x5B
+#define VK_RWIN	0x5C
+#define VK_APPS	0x5D
+#define VK_NUMPAD0	0x60
+#define VK_NUMPAD1	0x61
+#define VK_NUMPAD2	0x62
+#define VK_NUMPAD3	0x63
+#define VK_NUMPAD4	0x64
+#define VK_NUMPAD5	0x65
+#define VK_NUMPAD6	0x66
+#define VK_NUMPAD7	0x67
+#define VK_NUMPAD8	0x68
+#define VK_NUMPAD9	0x69
+#define VK_MULTIPLY	0x6A
+#define VK_ADD	0x6B
+#define VK_SEPARATOR	0x6C
+#define VK_SUBTRACT	0x6D
+#define VK_DECIMAL	0x6E
+#define VK_DIVIDE	0x6F
+#define VK_F1	0x70
+#define VK_F2	0x71
+#define VK_F3	0x72
+#define VK_F4	0x73
+#define VK_F5	0x74
+#define VK_F6	0x75
+#define VK_F7	0x76
+#define VK_F8	0x77
+#define VK_F9	0x78
+#define VK_F10	0x79
+#define VK_F11	0x7A
+#define VK_F12	0x7B
+#define VK_F13	0x7C
+#define VK_F14	0x7D
+#define VK_F15	0x7E
+#define VK_F16	0x7F
+#define VK_F17	0x80
+#define VK_F18	0x81
+#define VK_F19	0x82
+#define VK_F20	0x83
+#define VK_F21	0x84
+#define VK_F22	0x85
+#define VK_F23	0x86
+#define VK_F24	0x87
+#define VK_NUMLOCK	0x90
+#define VK_SCROLL	0x91
+#define VK_LSHIFT	0xA0
+#define VK_RSHIFT	0xA1
+#define VK_LCONTROL	0xA2
+#define VK_RCONTROL	0xA3
+#define VK_LMENU	0xA4
+#define VK_RMENU	0xA5
+#define VK_PROCESSKEY	0xE5
+#define VK_ATTN	0xF6
+#define VK_CRSEL	0xF7
+#define VK_EXSEL	0xF8
+#define VK_EREOF	0xF9
+#define VK_PLAY	0xFA
+#define VK_ZOOM	0xFB
+#define VK_NONAME	0xFC
+#define VK_PA1	0xFD
+#define VK_OEM_CLEAR	0xFE
+#define TME_HOVER	1
+#define TME_LEAVE	2
+#define TME_QUERY	0x40000000
+#define TME_CANCEL	0x80000000
+#define HOVER_DEFAULT	0xFFFFFFFF
+#define MK_LBUTTON	1
+#define MK_RBUTTON	2
+#define MK_SHIFT	4
+#define MK_CONTROL	8
+#define MK_MBUTTON	16
+#define TPM_CENTERALIGN 4
+#define TPM_LEFTALIGN 0
+#define TPM_RIGHTALIGN 8
+#define TPM_LEFTBUTTON 0
+#define TPM_RIGHTBUTTON 2
+#define TPM_HORIZONTAL 0
+#define TPM_VERTICAL 64
+#define TPM_TOPALIGN 0
+#define TPM_VCENTERALIGN 16
+#define TPM_BOTTOMALIGN 32
+#define TPM_NONOTIFY 128
+#define TPM_RETURNCMD 256
+#define HELP_COMMAND 0x102
+#define HELP_CONTENTS 3
+#define HELP_CONTEXT 1
+#define HELP_CONTEXTPOPUP 8
+#define HELP_FORCEFILE 9
+#define HELP_HELPONHELP 4
+#define HELP_INDEX 3
+#define HELP_KEY 0x101
+#define HELP_MULTIKEY 0x201
+#define HELP_PARTIALKEY 0x105
+#define HELP_QUIT 2
+#define HELP_SETCONTENTS 5
+#define HELP_SETINDEX 5
+#define HELP_CONTEXTMENU 0xa
+#define HELP_FINDER 0xb
+#define HELP_WM_HELP 0xc
+#define HELP_TCARD 0x8000
+#define HELP_TCARD_DATA 16
+#define HELP_TCARD_OTHER_CALLER 0x11
+#define IDH_NO_HELP	28440
+#define IDH_MISSING_CONTEXT	28441
+#define IDH_GENERIC_HELP_BUTTON	28442
+#define IDH_OK	28443
+#define IDH_CANCEL	28444
+#define IDH_HELP	28445
+#define LB_CTLCODE 0
+#define LB_OKAY 0
+#define LB_ERR (-1)
+#define LB_ERRSPACE (-2)
+#define CB_OKAY 0
+#define CB_ERR (-1)
+#define CB_ERRSPACE (-2)
+#define HIDE_WINDOW 0
+#define SHOW_OPENWINDOW 1
+#define SHOW_ICONWINDOW 2
+#define SHOW_FULLSCREEN 3
+#define SHOW_OPENNOACTIVATE 4
+#define SW_PARENTCLOSING 1
+#define SW_OTHERZOOM 2
+#define SW_PARENTOPENING 3
+#define SW_OTHERUNZOOM 4
+#define KF_EXTENDED 256
+#define KF_DLGMODE 2048
+#define KF_MENUMODE 4096
+#define KF_ALTDOWN 8192
+#define KF_REPEAT 16384
+#define KF_UP 32768
+#define WSF_VISIBLE 1
+#define PWR_OK 1
+#define PWR_FAIL (-1)
+#define PWR_SUSPENDREQUEST 1
+#define PWR_SUSPENDRESUME 2
+#define PWR_CRITICALRESUME 3
+#define NFR_ANSI 1
+#define NFR_UNICODE 2
+#define NF_QUERY 3
+#define NF_REQUERY 4
+#define MENULOOP_WINDOW 0
+#define MENULOOP_POPUP 1
+#define WMSZ_LEFT 1
+#define WMSZ_RIGHT 2
+#define WMSZ_TOP 3
+#define WMSZ_TOPLEFT 4
+#define WMSZ_TOPRIGHT 5
+#define WMSZ_BOTTOM 6
+#define WMSZ_BOTTOMLEFT 7
+#define WMSZ_BOTTOMRIGHT 8
+#define HTERROR (-2)
+#define HTTRANSPARENT (-1)
+#define HTNOWHERE 0
+#define HTCLIENT 1
+#define HTCAPTION 2
+#define HTSYSMENU 3
+#define HTGROWBOX 4
+#define HTSIZE 4
+#define HTMENU 5
+#define HTHSCROLL 6
+#define HTVSCROLL 7
+#define HTMINBUTTON 8
+#define HTMAXBUTTON 9
+#define HTREDUCE 8
+#define HTZOOM 9
+#define HTLEFT 10
+#define HTSIZEFIRST 10
+#define HTRIGHT 11
+#define HTTOP 12
+#define HTTOPLEFT 13
+#define HTTOPRIGHT 14
+#define HTBOTTOM 15
+#define HTBOTTOMLEFT 16
+#define HTBOTTOMRIGHT 17
+#define HTSIZELAST 17
+#define HTBORDER 18
+#define HTOBJECT 19
+#define HTCLOSE 20
+#define HTHELP 21
+#define MA_ACTIVATE 1
+#define MA_ACTIVATEANDEAT 2
+#define MA_NOACTIVATE 3
+#define MA_NOACTIVATEANDEAT 4
+#define SIZE_RESTORED 0
+#define SIZE_MINIMIZED 1
+#define SIZE_MAXIMIZED 2
+#define SIZE_MAXSHOW 3
+#define SIZE_MAXHIDE 4
+#define SIZENORMAL 0
+#define SIZEICONIC 1
+#define SIZEFULLSCREEN 2
+#define SIZEZOOMSHOW 3
+#define SIZEZOOMHIDE 4
+#define WVR_ALIGNTOP 16
+#define WVR_ALIGNLEFT 32
+#define WVR_ALIGNBOTTOM 64
+#define WVR_ALIGNRIGHT 128
+#define WVR_HREDRAW 256
+#define WVR_VREDRAW 512
+#define WVR_REDRAW (WVR_HREDRAW|WVR_VREDRAW)
+#define WVR_VALIDRECTS 1024
+#define PRF_CHECKVISIBLE 1
+#define PRF_NONCLIENT 2
+#define PRF_CLIENT 4
+#define PRF_ERASEBKGND 8
+#define PRF_CHILDREN 16
+#define PRF_OWNED 32
+#define IDANI_OPEN 1
+#define IDANI_CLOSE 2
+#define IDANI_CAPTION 3
+#define WPF_RESTORETOMAXIMIZED 2
+#define WPF_SETMINPOSITION 1
+#define ODT_MENU 1
+#define ODT_LISTBOX 2
+#define ODT_COMBOBOX 3
+#define ODT_BUTTON 4
+#define ODT_STATIC 5
+#define ODA_DRAWENTIRE 1
+#define ODA_SELECT 2
+#define ODA_FOCUS 4
+#define ODS_SELECTED 1
+#define ODS_GRAYED 2
+#define ODS_DISABLED 4
+#define ODS_CHECKED 8
+#define ODS_FOCUS 16
+#define ODS_DEFAULT 32
+#define ODS_COMBOBOXEDIT 4096
+#define IDHOT_SNAPWINDOW (-1)
+#define IDHOT_SNAPDESKTOP (-2)
+#define DBWF_LPARAMPOINTER 0x8000
+#define DLGWINDOWEXTRA 30
+#define MNC_IGNORE 0
+#define MNC_CLOSE 1
+#define MNC_EXECUTE 2
+#define MNC_SELECT 3
+#define DOF_EXECUTABLE 0x8001
+#define DOF_DOCUMENT 0x8002
+#define DOF_DIRECTORY 0x8003
+#define DOF_MULTIPLE 0x8004
+#define DOF_PROGMAN 1
+#define DOF_SHELLDATA 2
+#define DO_DROPFILE 0x454C4946
+#define DO_PRINTFILE 0x544E5250
+#define SW_SCROLLCHILDREN 1
+#define SW_INVALIDATE 2
+#define SW_ERASE 4
+#define SC_SIZE 0xF000
+#define SC_MOVE 0xF010
+#define SC_MINIMIZE 0xF020
+#define SC_ICON 0xf020
+#define SC_MAXIMIZE 0xF030
+#define SC_ZOOM 0xF030
+#define SC_NEXTWINDOW 0xF040
+#define SC_PREVWINDOW 0xF050
+#define SC_CLOSE 0xF060
+#define SC_VSCROLL 0xF070
+#define SC_HSCROLL 0xF080
+#define SC_MOUSEMENU 0xF090
+#define SC_KEYMENU 0xF100
+#define SC_ARRANGE 0xF110
+#define SC_RESTORE 0xF120
+#define SC_TASKLIST 0xF130
+#define SC_SCREENSAVE 0xF140
+#define SC_HOTKEY 0xF150
+#define SC_DEFAULT 0xF160
+#define SC_MONITORPOWER 0xF170
+#define SC_CONTEXTHELP 0xF180
+#define SC_SEPARATOR 0xF00F
+#define EC_LEFTMARGIN 1
+#define EC_RIGHTMARGIN 2
+#define EC_USEFONTINFO 0xffff
+#define DC_HASDEFID 0x534B
+#define DLGC_WANTARROWS 1
+#define DLGC_WANTTAB 2
+#define DLGC_WANTALLKEYS 4
+#define DLGC_WANTMESSAGE 4
+#define DLGC_HASSETSEL 8
+#define DLGC_DEFPUSHBUTTON 16
+#define DLGC_UNDEFPUSHBUTTON 32
+#define DLGC_RADIOBUTTON 64
+#define DLGC_WANTCHARS 128
+#define DLGC_STATIC 256
+#define DLGC_BUTTON 0x2000
+#define LB_CTLCODE 0
+#define WA_INACTIVE 0
+#define WA_ACTIVE 1
+#define WA_CLICKACTIVE 2
+#define ICON_SMALL 0
+#define ICON_BIG 1
+#define HBMMENU_CALLBACK ((HBITMAP) -1)
+#define HBMMENU_SYSTEM ((HBITMAP)1)
+#define HBMMENU_MBAR_RESTORE ((HBITMAP)2)
+#define HBMMENU_MBAR_MINIMIZE ((HBITMAP)3)
+#define HBMMENU_MBAR_CLOSE ((HBITMAP)5)
+#define HBMMENU_MBAR_CLOSE_D ((HBITMAP)6)
+#define HBMMENU_MBAR_MINIMIZE_D ((HBITMAP)7)
+#define HBMMENU_POPUP_CLOSE ((HBITMAP)8)
+#define HBMMENU_POPUP_RESTORE ((HBITMAP)9)
+#define HBMMENU_POPUP_MAXIMIZE ((HBITMAP)10)
+#define HBMMENU_POPUP_MINIMIZE ((HBITMAP)11)
+#define MOD_ALT 1
+#define MOD_CONTROL 2
+#define MOD_SHIFT 4
+#define MOD_WIN 8
+#define MOD_IGNORE_ALL_MODIFIER 1024
+#define MOD_ON_KEYUP  2048
+#define MOD_RIGHT 16384
+#define MOD_LEFT 32768
+#define LLKHF_ALTDOWN  0x00000020
+
+#ifndef RC_INVOKED
+typedef BOOL(CALLBACK *DLGPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef VOID(CALLBACK *TIMERPROC)(HWND,UINT,UINT,DWORD);
+typedef BOOL(CALLBACK *GRAYSTRINGPROC)(HDC,LPARAM,int);
+typedef LRESULT(CALLBACK *HOOKPROC)(int,WPARAM,LPARAM);
+typedef BOOL(CALLBACK *PROPENUMPROCA)(HWND,LPCSTR,HANDLE);
+typedef BOOL(CALLBACK *PROPENUMPROCW)(HWND,LPCWSTR,HANDLE);
+typedef BOOL(CALLBACK *PROPENUMPROCEXA)(HWND,LPSTR,HANDLE,DWORD);
+typedef BOOL(CALLBACK *PROPENUMPROCEXW)(HWND,LPWSTR,HANDLE,DWORD);
+typedef int(CALLBACK *EDITWORDBREAKPROCA)(LPSTR,int,int,int);
+typedef int(CALLBACK *EDITWORDBREAKPROCW)(LPWSTR,int,int,int);
+typedef LRESULT(CALLBACK *WNDPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef BOOL(CALLBACK *DRAWSTATEPROC)(HDC,LPARAM,WPARAM,int,int);
+typedef BOOL(CALLBACK *WNDENUMPROC)(HWND,LPARAM);
+typedef BOOL(CALLBACK *ENUMWINDOWSPROC)(HWND,LPARAM);
+typedef BOOL(CALLBACK* MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM);
+typedef BOOL(CALLBACK *NAMEENUMPROCA)(LPSTR,LPARAM);
+typedef BOOL(CALLBACK *NAMEENUMPROCW)(LPWSTR,LPARAM);
+typedef NAMEENUMPROCA DESKTOPENUMPROCA;
+typedef NAMEENUMPROCW DESKTOPENUMPROCW;
+typedef NAMEENUMPROCA WINSTAENUMPROCA;
+typedef NAMEENUMPROCW WINSTAENUMPROCW;
+typedef void(CALLBACK *SENDASYNCPROC)(HWND,UINT,DWORD,LRESULT);
+DECLARE_HANDLE(HHOOK);
+DECLARE_HANDLE(HDWP);
+typedef struct tagACCEL {
+	BYTE fVirt;
+	WORD key;
+	WORD cmd;
+} ACCEL,*LPACCEL;
+typedef struct tagACCESSTIMEOUT {
+	UINT cbSize;
+	DWORD dwFlags;
+	DWORD iTimeOutMSec;
+} ACCESSTIMEOUT, *LPACCESSTIMEOUT;
+typedef struct tagANIMATIONINFO {
+	UINT cbSize;
+	int iMinAnimate;
+} ANIMATIONINFO,*LPANIMATIONINFO;
+typedef struct tagCREATESTRUCTA {
+	LPVOID	lpCreateParams;
+	HINSTANCE	hInstance;
+	HMENU	hMenu;
+	HWND	hwndParent;
+	int	cy;
+	int	cx;
+	int	y;
+	int	x;
+	LONG	style;
+	LPCSTR	lpszName;
+	LPCSTR	lpszClass;
+	DWORD	dwExStyle;
+} CREATESTRUCTA,*LPCREATESTRUCTA;
+typedef struct tagCREATESTRUCTW {
+	LPVOID	lpCreateParams;
+	HINSTANCE	hInstance;
+	HMENU	hMenu;
+	HWND	hwndParent;
+	int	cy;
+	int	cx;
+	int	y;
+	int	x;
+	LONG	style;
+	LPCWSTR	lpszName;
+	LPCWSTR	lpszClass;
+	DWORD	dwExStyle;
+} CREATESTRUCTW,*LPCREATESTRUCTW;
+typedef struct tagCBT_CREATEWNDA {
+	LPCREATESTRUCTA lpcs;
+	HWND	hwndInsertAfter;
+} CBT_CREATEWNDA, *LPCBT_CREATEWNDA;
+typedef struct tagCBT_CREATEWNDW {
+	LPCREATESTRUCTW lpcs;
+	HWND	hwndInsertAfter;
+} CBT_CREATEWNDW, *LPCBT_CREATEWNDW;
+typedef struct tagCBTACTIVATESTRUCT {
+	BOOL fMouse;
+	HWND hWndActive;
+} CBTACTIVATESTRUCT,*LPCBTACTIVATESTRUCT;
+typedef struct tagCLIENTCREATESTRUCT {
+	HANDLE	hWindowMenu;
+	UINT	idFirstChild;
+} CLIENTCREATESTRUCT,*LPCLIENTCREATESTRUCT;
+typedef struct tagCOMPAREITEMSTRUCT {
+	UINT	CtlType;
+	UINT	CtlID;
+	HWND	hwndItem;
+	UINT	itemID1;
+	DWORD	itemData1;
+	UINT	itemID2;
+	DWORD	itemData2;
+	DWORD	dwLocaleId;
+} COMPAREITEMSTRUCT,*LPCOMPAREITEMSTRUCT;
+typedef struct tagCOPYDATASTRUCT {
+	DWORD dwData;
+	DWORD cbData;
+	PVOID lpData;
+} COPYDATASTRUCT,*PCOPYDATASTRUCT;
+typedef struct tagCURSORSHAPE {
+	int xHotSpot;
+	int yHotSpot;
+	int cx;
+	int cy;
+	int cbWidth;
+    BYTE Planes;
+    BYTE BitsPixel;
+} CURSORSHAPE,*LPCURSORSHAPE;
+typedef struct tagCWPRETSTRUCT {
+	LRESULT lResult;
+	LPARAM lParam;
+	WPARAM wParam;
+	DWORD message;
+	HWND hwnd;
+} CWPRETSTRUCT;
+typedef struct tagCWPSTRUCT {
+	LPARAM lParam;
+	WPARAM wParam;
+	UINT message;
+	HWND hwnd;
+} CWPSTRUCT,*PCWPSTRUCT;
+typedef struct tagDEBUGHOOKINFO {
+	DWORD idThread;
+	DWORD idThreadInstaller;
+	LPARAM lParam;
+	WPARAM wParam;
+	int code;
+} DEBUGHOOKINFO,*PDEBUGHOOKINFO,*LPDEBUGHOOKINFO;
+typedef struct tagDELETEITEMSTRUCT {
+	UINT CtlType;
+	UINT CtlID;
+	UINT itemID;
+	HWND hwndItem;
+	UINT itemData;
+} DELETEITEMSTRUCT,*PDELETEITEMSTRUCT,*LPDELETEITEMSTRUCT;
+#pragma pack(push,2)
+typedef struct {
+	DWORD style;
+	DWORD dwExtendedStyle;
+	short x;
+	short y;
+	short cx;
+	short cy;
+	WORD id;
+} DLGITEMTEMPLATE,*LPDLGITEMTEMPLATE;
+typedef struct {
+	DWORD style;
+	DWORD dwExtendedStyle;
+	WORD cdit;
+	short x;
+	short y;
+	short cx;
+	short cy;
+} DLGTEMPLATE,*LPDLGTEMPLATE;
+typedef const DLGTEMPLATE *LPCDLGTEMPLATE;
+#pragma pack(pop)
+typedef struct tagDRAWITEMSTRUCT {
+	UINT CtlType;
+	UINT CtlID;
+	UINT itemID;
+	UINT itemAction;
+	UINT itemState;
+	HWND hwndItem;
+	HDC	hDC;
+	RECT rcItem;
+	DWORD itemData;
+} DRAWITEMSTRUCT,*LPDRAWITEMSTRUCT,*PDRAWITEMSTRUCT;
+typedef struct {
+	UINT cbSize;
+	int iTabLength;
+	int iLeftMargin;
+	int iRightMargin;
+	UINT uiLengthDrawn;
+} DRAWTEXTPARAMS,*LPDRAWTEXTPARAMS;
+typedef struct tagPAINTSTRUCT {
+	HDC	hdc;
+	BOOL fErase;
+	RECT rcPaint;
+	BOOL fRestore;
+	BOOL fIncUpdate;
+	BYTE rgbReserved[32];
+} PAINTSTRUCT,*LPPAINTSTRUCT;
+typedef struct tagMSG {
+	HWND hwnd;
+	UINT message;
+	WPARAM wParam;
+	LPARAM lParam;
+	DWORD time;
+	POINT pt;
+} MSG,*LPMSG,*PMSG;
+typedef struct _ICONINFO {
+	BOOL fIcon;
+	DWORD xHotspot;
+	DWORD yHotspot;
+	HBITMAP hbmMask;
+	HBITMAP hbmColor;
+} ICONINFO,*PICONINFO;
+typedef struct tagNMHDR {
+	HWND hwndFrom;
+	UINT idFrom;
+	UINT code;
+} NMHDR,*LPNMHDR;
+typedef struct _WNDCLASSA {
+	UINT style;
+	WNDPROC lpfnWndProc;
+	int cbClsExtra;
+	int cbWndExtra;
+	HANDLE hInstance;
+	HICON hIcon;
+	HCURSOR hCursor;
+	HBRUSH hbrBackground;
+	LPCSTR lpszMenuName;
+	LPCSTR lpszClassName;
+} WNDCLASSA,*LPWNDCLASSA,*PWNDCLASSA;
+typedef struct _WNDCLASSW {
+	UINT style;
+	WNDPROC lpfnWndProc;
+	int cbClsExtra;
+	int cbWndExtra;
+	HANDLE hInstance;
+	HICON hIcon;
+	HCURSOR hCursor;
+	HBRUSH hbrBackground;
+	LPCWSTR lpszMenuName;
+	LPCWSTR lpszClassName;
+} WNDCLASSW,*LPWNDCLASSW,*PWNDCLASSW;
+typedef struct _WNDCLASSEXA {
+	UINT cbSize;
+	UINT style;
+	WNDPROC lpfnWndProc;
+	int cbClsExtra;
+	int cbWndExtra;
+	HANDLE hInstance;
+	HICON hIcon;
+	HCURSOR hCursor;
+	HBRUSH hbrBackground;
+	LPCSTR lpszMenuName;
+	LPCSTR lpszClassName;
+	HICON hIconSm;
+} WNDCLASSEXA,*LPWNDCLASSEXA,*PWNDCLASSEXA;
+typedef struct _WNDCLASSEXW {
+	UINT cbSize;
+	UINT style;
+	WNDPROC lpfnWndProc;
+	int cbClsExtra;
+	int cbWndExtra;
+	HANDLE hInstance;
+	HICON hIcon;
+	HCURSOR hCursor;
+	HBRUSH hbrBackground;
+	LPCWSTR lpszMenuName;
+	LPCWSTR lpszClassName;
+	HICON hIconSm;
+} WNDCLASSEXW,*LPWNDCLASSEXW,*PWNDCLASSEXW;
+typedef struct tagMENUITEMINFOA {
+	UINT cbSize;
+	UINT fMask;
+	UINT fType;
+	UINT fState;
+	UINT wID;
+	HMENU hSubMenu;
+	HBITMAP hbmpChecked;
+	HBITMAP hbmpUnchecked;
+	DWORD dwItemData;
+	LPSTR dwTypeData;
+	UINT cch;
+#if (_WIN32_WINNT >= 0x0500)
+	HBITMAP hbmpItem;
+#endif
+} MENUITEMINFOA,*LPMENUITEMINFOA;
+typedef const MENUITEMINFOA *LPCMENUITEMINFOA;
+typedef struct tagMENUITEMINFOW {
+	UINT cbSize;
+	UINT fMask;
+	UINT fType;
+	UINT fState;
+	UINT wID;
+	HMENU hSubMenu;
+	HBITMAP hbmpChecked;
+	HBITMAP hbmpUnchecked;
+	DWORD dwItemData;
+	LPWSTR dwTypeData;
+	UINT cch;
+#if (_WIN32_WINNT >= 0x0500)
+	HBITMAP hbmpItem;
+#endif
+} MENUITEMINFOW,*LPMENUITEMINFOW;
+typedef const MENUITEMINFOW *LPCMENUITEMINFOW;
+typedef struct tagSCROLLINFO {
+	UINT cbSize;
+	UINT fMask;
+	int nMin;
+	int nMax;
+	UINT nPage;
+	int nPos;
+	int nTrackPos;
+} SCROLLINFO,*LPSCROLLINFO;
+typedef const SCROLLINFO *LPCSCROLLINFO;
+typedef struct _WINDOWPLACEMENT {
+	UINT length;
+	UINT flags;
+	UINT showCmd;
+	POINT ptMinPosition;
+	POINT ptMaxPosition;
+	RECT rcNormalPosition;
+} WINDOWPLACEMENT,*LPWINDOWPLACEMENT,*PWINDOWPLACEMENT;
+typedef struct {
+	WORD versionNumber;
+	WORD offset;
+} MENUITEMTEMPLATEHEADER;
+typedef struct {
+	WORD mtOption;
+	WORD mtID;
+	WCHAR mtString[1];
+} MENUITEMTEMPLATE;
+typedef void MENUTEMPLATE,MENUTEMPLATEA,MENUTEMPLATEW,*LPMENUTEMPLATEA,*LPMENUTEMPLATEW,*LPMENUTEMPLATE;
+typedef struct tagHELPINFO {
+	UINT cbSize;
+	int iContextType;
+	int iCtrlId;
+	HANDLE hItemHandle;
+	DWORD dwContextId;
+	POINT MousePos;
+} HELPINFO,*LPHELPINFO;
+typedef void(CALLBACK *MSGBOXCALLBACK)(LPHELPINFO);
+typedef struct {
+	UINT cbSize;
+	HWND hwndOwner;
+	HINSTANCE hInstance;
+	LPCSTR lpszText;
+	LPCSTR lpszCaption;
+	DWORD dwStyle;
+	LPCSTR lpszIcon;
+	DWORD dwContextHelpId;
+	MSGBOXCALLBACK lpfnMsgBoxCallback;
+	DWORD dwLanguageId;
+} MSGBOXPARAMSA,*PMSGBOXPARAMSA,*LPMSGBOXPARAMSA;
+typedef struct {
+	UINT cbSize;
+	HWND hwndOwner;
+	HINSTANCE hInstance;
+	LPCWSTR lpszText;
+	LPCWSTR lpszCaption;
+	DWORD dwStyle;
+	LPCWSTR lpszIcon;
+	DWORD dwContextHelpId;
+	MSGBOXCALLBACK lpfnMsgBoxCallback;
+	DWORD dwLanguageId;
+} MSGBOXPARAMSW,*PMSGBOXPARAMSW,*LPMSGBOXPARAMSW;
+typedef struct tagUSEROBJECTFLAGS {
+	BOOL fInherit;
+	BOOL fReserved;
+	DWORD dwFlags;
+} USEROBJECTFLAGS;
+typedef struct tagFILTERKEYS {
+	UINT cbSize;
+	DWORD dwFlags;
+	DWORD iWaitMSec;
+	DWORD iDelayMSec;
+	DWORD iRepeatMSec;
+	DWORD iBounceMSec;
+} FILTERKEYS;
+typedef struct tagHIGHCONTRASTA {
+	UINT cbSize;
+	DWORD dwFlags;
+	LPSTR lpszDefaultScheme;
+} HIGHCONTRASTA,*LPHIGHCONTRASTA;
+typedef struct tagHIGHCONTRASTW {
+	UINT cbSize;
+	DWORD dwFlags;
+	LPWSTR lpszDefaultScheme;
+} HIGHCONTRASTW,*LPHIGHCONTRASTW;
+typedef struct tagICONMETRICSA {
+	UINT cbSize;
+	int iHorzSpacing;
+	int iVertSpacing;
+	int iTitleWrap;
+	LOGFONTA lfFont;
+} ICONMETRICSA,*LPICONMETRICSA;
+typedef struct tagICONMETRICSW {
+	UINT cbSize;
+	int iHorzSpacing;
+	int iVertSpacing;
+	int iTitleWrap;
+	LOGFONTW lfFont;
+} ICONMETRICSW,*LPICONMETRICSW;
+typedef struct tagMINIMIZEDMETRICS {
+	UINT cbSize;
+	int iWidth;
+	int iHorzGap;
+	int iVertGap;
+	int iArrange;
+} MINIMIZEDMETRICS,*LPMINIMIZEDMETRICS;
+typedef struct tagMOUSEKEYS{
+	UINT cbSize;
+	DWORD dwFlags;
+	DWORD iMaxSpeed;
+	DWORD iTimeToMaxSpeed;
+	DWORD iCtrlSpeed;
+	DWORD dwReserved1;
+	DWORD dwReserved2;
+} MOUSEKEYS, *LPMOUSEKEYS;
+typedef struct tagNONCLIENTMETRICSA {
+	UINT cbSize;
+	int iBorderWidth;
+	int iScrollWidth;
+	int iScrollHeight;
+	int iCaptionWidth;
+	int iCaptionHeight;
+	LOGFONTA lfCaptionFont;
+	int iSmCaptionWidth;
+	int iSmCaptionHeight;
+	LOGFONTA lfSmCaptionFont;
+	int iMenuWidth;
+	int iMenuHeight;
+	LOGFONTA lfMenuFont;
+	LOGFONTA lfStatusFont;
+	LOGFONTA lfMessageFont;
+} NONCLIENTMETRICSA,*LPNONCLIENTMETRICSA;
+typedef struct tagNONCLIENTMETRICSW {
+	UINT cbSize;
+	int iBorderWidth;
+	int iScrollWidth;
+	int iScrollHeight;
+	int iCaptionWidth;
+	int iCaptionHeight;
+	LOGFONTW lfCaptionFont;
+	int iSmCaptionWidth;
+	int iSmCaptionHeight;
+	LOGFONTW lfSmCaptionFont;
+	int iMenuWidth;
+	int iMenuHeight;
+	LOGFONTW lfMenuFont;
+	LOGFONTW lfStatusFont;
+	LOGFONTW lfMessageFont;
+} NONCLIENTMETRICSW,*LPNONCLIENTMETRICSW;
+typedef struct tagSERIALKEYSA {
+	UINT cbSize;
+	DWORD dwFlags;
+	LPSTR lpszActivePort;
+	LPSTR lpszPort;
+	UINT iBaudRate;
+	UINT iPortState;
+	UINT iActive;
+} SERIALKEYSA,*LPSERIALKEYSA;
+typedef struct tagSERIALKEYSW {
+	UINT cbSize;
+	DWORD dwFlags;
+	LPWSTR lpszActivePort;
+	LPWSTR lpszPort;
+	UINT iBaudRate;
+	UINT iPortState;
+	UINT iActive;
+} SERIALKEYSW,*LPSERIALKEYSW;
+typedef struct tagSOUNDSENTRYA {
+	UINT cbSize;
+	DWORD dwFlags;
+	DWORD iFSTextEffect;
+	DWORD iFSTextEffectMSec;
+	DWORD iFSTextEffectColorBits;
+	DWORD iFSGrafEffect;
+	DWORD iFSGrafEffectMSec;
+	DWORD iFSGrafEffectColor;
+	DWORD iWindowsEffect;
+	DWORD iWindowsEffectMSec;
+	LPSTR lpszWindowsEffectDLL;
+	DWORD iWindowsEffectOrdinal;
+} SOUNDSENTRYA,*LPSOUNDSENTRYA;
+typedef struct tagSOUNDSENTRYW {
+	UINT cbSize;
+	DWORD dwFlags;
+	DWORD iFSTextEffect;
+	DWORD iFSTextEffectMSec;
+	DWORD iFSTextEffectColorBits;
+	DWORD iFSGrafEffect;
+	DWORD iFSGrafEffectMSec;
+	DWORD iFSGrafEffectColor;
+	DWORD iWindowsEffect;
+	DWORD iWindowsEffectMSec;
+	LPWSTR lpszWindowsEffectDLL;
+	DWORD iWindowsEffectOrdinal;
+} SOUNDSENTRYW,*LPSOUNDSENTRYW;
+typedef struct tagSTICKYKEYS {
+	DWORD cbSize;
+	DWORD dwFlags;
+} STICKYKEYS,*LPSTICKYKEYS;
+typedef struct tagTOGGLEKEYS {
+	DWORD cbSize;
+	DWORD dwFlags;
+} TOGGLEKEYS;
+typedef struct tagTRACKMOUSEEVENT {
+	DWORD cbSize;
+	DWORD dwFlags;
+	HWND  hwndTrack;
+	DWORD dwHoverTime;
+} TRACKMOUSEEVENT,*LPTRACKMOUSEEVENT;
+typedef struct tagTPMPARAMS {
+	UINT cbSize;
+	RECT rcExclude;
+} TPMPARAMS,*LPTPMPARAMS;
+typedef struct tagEVENTMSG {
+	UINT message;
+	UINT paramL;
+	UINT paramH;
+	DWORD time;
+	HWND hwnd;
+} EVENTMSG,*PEVENTMSGMSG,*LPEVENTMSGMSG, *PEVENTMSG, *LPEVENTMSG;
+typedef struct _WINDOWPOS {
+	HWND hwnd;
+	HWND hwndInsertAfter;
+	int x;
+	int y;
+	int cx;
+	int cy;
+	UINT flags;
+} WINDOWPOS,*PWINDOWPOS,*LPWINDOWPOS;
+typedef struct tagMDICREATESTRUCTA {
+	LPCSTR szClass;
+	LPCSTR szTitle;
+	HANDLE hOwner;
+	int x;
+	int y;
+	int cx;
+	int cy;
+	DWORD style;
+	LPARAM lParam;
+} MDICREATESTRUCTA,*LPMDICREATESTRUCTA;
+typedef struct tagMDICREATESTRUCTW {
+	LPCWSTR szClass;
+	LPCWSTR szTitle;
+	HANDLE hOwner;
+	int x;
+	int y;
+	int cx;
+	int cy;
+	DWORD style;
+	LPARAM lParam;
+} MDICREATESTRUCTW,*LPMDICREATESTRUCTW;
+typedef struct tagMINMAXINFO {
+	POINT ptReserved;
+	POINT ptMaxSize;
+	POINT ptMaxPosition;
+	POINT ptMinTrackSize;
+	POINT ptMaxTrackSize;
+} MINMAXINFO,*PMINMAXINFO,*LPMINMAXINFO;
+typedef struct tagMDINEXTMENU {
+	HMENU hmenuIn;
+	HMENU hmenuNext;
+	HWND hwndNext;
+} MDINEXTMENU,*PMDINEXTMENU,*LPMDINEXTMENU;
+typedef struct tagMEASUREITEMSTRUCT {
+	UINT CtlType;
+	UINT CtlID;
+	UINT itemID;
+	UINT itemWidth;
+	UINT itemHeight;
+	DWORD itemData;
+} MEASUREITEMSTRUCT,*PMEASUREITEMSTRUCT,*LPMEASUREITEMSTRUCT;
+typedef struct tagDROPSTRUCT {
+	HWND hwndSource;
+	HWND hwndSink;
+	DWORD wFmt;
+	DWORD dwData;
+	POINT ptDrop;
+	DWORD dwControlData;
+} DROPSTRUCT,*PDROPSTRUCT,*LPDROPSTRUCT;
+typedef DWORD HELPPOLY;
+typedef struct tagMULTIKEYHELPA {
+	DWORD mkSize;
+	CHAR mkKeylist;
+	CHAR szKeyphrase[1];
+} MULTIKEYHELPA,*PMULTIKEYHELPA,*LPMULTIKEYHELPA;
+typedef struct tagMULTIKEYHELPW {
+	DWORD mkSize;
+	WCHAR mkKeylist;
+	WCHAR szKeyphrase[1];
+} MULTIKEYHELPW,*PMULTIKEYHELPW,*LPMULTIKEYHELPW;
+typedef struct tagHELPWININFOA {
+	int wStructSize;
+	int x;
+	int y;
+	int dx;
+	int dy;
+	int wMax;
+	CHAR rgchMember[2];
+} HELPWININFOA,*PHELPWININFOA,*LPHELPWININFOA;
+typedef struct tagHELPWININFOW {
+	int wStructSize;
+	int x;
+	int y;
+	int dx;
+	int dy;
+	int wMax;
+	WCHAR rgchMember[2];
+} HELPWININFOW,*PHELPWININFOW,*LPHELPWININFOW;
+typedef struct tagSTYLESTRUCT {  
+	DWORD styleOld;
+	DWORD styleNew;
+} STYLESTRUCT,*LPSTYLESTRUCT;
+typedef struct tagALTTABINFO {
+	DWORD cbSize;
+	int   cItems;
+	int   cColumns;
+	int   cRows;
+	int   iColFocus;
+	int   iRowFocus;
+	int   cxItem;
+	int   cyItem;
+	POINT ptStart;
+} ALTTABINFO, *PALTTABINFO, *LPALTTABINFO;
+typedef struct tagCOMBOBOXINFO {
+	DWORD cbSize;
+	RECT rcItem;
+	RECT rcButton;
+	DWORD stateButton;
+	HWND hwndCombo;
+	HWND hwndItem;
+	HWND hwndList;
+} COMBOBOXINFO, *PCOMBOBOXINFO, *LPCOMBOBOXINFO;
+typedef struct tagCURSORINFO {
+	DWORD cbSize;
+	DWORD flags;
+	HCURSOR hCursor;
+	POINT ptScreenPos;
+} CURSORINFO,*PCURSORINFO,*LPCURSORINFO;
+typedef struct tagMENUBARINFO {
+	DWORD cbSize;
+	RECT  rcBar;
+	HMENU hMenu;
+	HWND  hwndMenu;
+	BOOL  fBarFocused:1;
+	BOOL  fFocused:1;
+} MENUBARINFO, *PMENUBARINFO;
+typedef struct tagMENUINFO {
+	DWORD cbSize;
+	DWORD fMask;
+	DWORD dwStyle;
+	UINT cyMax;
+	HBRUSH  hbrBack;
+	DWORD   dwContextHelpID;
+	ULONG_PTR dwMenuData;
+} MENUINFO, *LPMENUINFO;
+typedef MENUINFO CONST *LPCMENUINFO; 
+#define CCHILDREN_SCROLLBAR 5
+typedef struct tagSCROLLBARINFO {
+	DWORD cbSize;
+	RECT  rcScrollBar;
+	int   dxyLineButton;
+	int   xyThumbTop;
+	int   xyThumbBottom;
+	int   reserved;
+	DWORD rgstate[CCHILDREN_SCROLLBAR + 1];
+} SCROLLBARINFO, *PSCROLLBARINFO, *LPSCROLLBARINFO;
+#define CCHILDREN_TITLEBAR 5
+typedef struct tagTITLEBARINFO {
+	DWORD cbSize;
+	RECT  rcTitleBar;
+	DWORD rgstate[CCHILDREN_TITLEBAR + 1];
+} TITLEBARINFO, *PTITLEBARINFO, *LPTITLEBARINFO;
+typedef struct tagWINDOWINFO {
+	DWORD cbSize;
+	RECT  rcWindow;
+	RECT  rcClient;
+	DWORD dwStyle;
+	DWORD dwExStyle;
+	DWORD dwWindowStatus;
+	UINT  cxWindowBorders;
+	UINT  cyWindowBorders;
+	ATOM  atomWindowType;
+	WORD  wCreatorVersion;
+} WINDOWINFO, *PWINDOWINFO, *LPWINDOWINFO;
+typedef struct tagLASTINPUTINFO {
+	UINT cbSize;
+	DWORD dwTime;
+} LASTINPUTINFO, * PLASTINPUTINFO;
+typedef struct tagMONITORINFO {
+	DWORD cbSize;
+	RECT rcMonitor;
+	RECT rcWork;
+	DWORD dwFlags;
+} MONITORINFO,*LPMONITORINFO;
+typedef struct tagKBDLLHOOKSTRUCT {
+	DWORD vkCode;
+	DWORD scanCode;
+	DWORD flags;
+	DWORD time;
+	DWORD dwExtraInfo;
+} KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
+
+
+#define AnsiToOem CharToOemA
+#define OemToAnsi OemToCharA
+#define AnsiToOemBuff CharToOemBuffA
+#define OemToAnsiBuff OemToCharBuffA
+#define AnsiUpper CharUpperA
+#define AnsiUpperBuff CharUpperBuffA
+#define AnsiLower CharLowerA
+#define AnsiLowerBuff CharLowerBuffA
+#define AnsiNext CharNextA
+#define AnsiPrev CharPrevA
+#define MAKELPARAM(l,h) ((LPARAM)MAKELONG(l,h))
+#define MAKEWPARAM(l,h) ((WPARAM)MAKELONG(l,h))
+#define MAKELRESULT(l,h) ((LRESULT)MAKELONG(l,h))
+#define POINTSTOPOINT(p,ps) { \
+  (p).x=LOWORD(*(DWORD *)&ps); \
+  (p).y=HIWORD(*(DWORD *)&ps); \
+}
+#define POINTTOPOINTS(p) ((POINTS)MAKELONG((p).x,(p).y))
+
+HKL WINAPI ActivateKeyboardLayout(HKL,UINT);
+BOOL WINAPI AdjustWindowRect(LPRECT,DWORD,BOOL);
+BOOL WINAPI AdjustWindowRectEx(LPRECT,DWORD,BOOL,DWORD);
+BOOL WINAPI AnyPopup(void);
+BOOL WINAPI AppendMenuA(HMENU,UINT,UINT,LPCSTR);
+BOOL WINAPI AppendMenuW(HMENU,UINT,UINT,LPCWSTR);
+UINT WINAPI ArrangeIconicWindows(HWND);
+BOOL WINAPI AttachThreadInput(DWORD,DWORD,BOOL);
+HDWP WINAPI BeginDeferWindowPos(int);
+HDC WINAPI BeginPaint(HWND,LPPAINTSTRUCT);
+BOOL WINAPI BringWindowToTop(HWND);
+long WINAPI BroadcastSystemMessage(DWORD,LPDWORD,UINT,WPARAM,LPARAM);
+BOOL WINAPI CallMsgFilter(PMSG,int);
+LRESULT WINAPI CallNextHookEx(HHOOK,int,WPARAM,LPARAM);
+LRESULT WINAPI CallWindowProcA(WNDPROC,HWND,UINT,WPARAM,LPARAM);
+LRESULT WINAPI CallWindowProcW(WNDPROC,HWND,UINT,WPARAM,LPARAM);
+WORD WINAPI CascadeWindows(HWND,UINT,LPCRECT,UINT,const HWND*);
+BOOL WINAPI ChangeClipboardChain(HWND,HWND);
+LONG WINAPI ChangeDisplaySettingsA(PDEVMODEA,DWORD);
+LONG WINAPI ChangeDisplaySettingsW(PDEVMODEW,DWORD);
+BOOL WINAPI ChangeMenuA(HMENU,UINT,LPCSTR,UINT,UINT);
+BOOL WINAPI ChangeMenuW(HMENU,UINT,LPCWSTR,UINT,UINT);
+LPSTR WINAPI CharLowerA(LPSTR);
+LPWSTR WINAPI CharLowerW(LPWSTR);
+DWORD WINAPI CharLowerBuffA(LPSTR,DWORD);
+DWORD WINAPI CharLowerBuffW(LPWSTR,DWORD);
+LPSTR WINAPI CharNextA(LPCSTR);
+LPWSTR WINAPI CharNextW(LPCWSTR);
+LPSTR WINAPI CharNextExA(WORD,LPCSTR,DWORD);
+LPWSTR WINAPI CharNextExW(WORD,LPCWSTR,DWORD);
+LPSTR WINAPI CharPrevA(LPCSTR,LPCSTR);
+LPWSTR WINAPI CharPrevW(LPCWSTR,LPCWSTR);
+LPSTR WINAPI CharPrevExA(WORD,LPCSTR,LPCSTR,DWORD);
+LPWSTR WINAPI CharPrevExW(WORD,LPCWSTR,LPCWSTR,DWORD);
+BOOL WINAPI CharToOemA(LPCSTR,LPSTR);
+BOOL WINAPI CharToOemW(LPCWSTR,LPSTR);
+BOOL WINAPI CharToOemBuffA(LPCSTR,LPSTR,DWORD);
+BOOL WINAPI CharToOemBuffW(LPCWSTR,LPSTR,DWORD);
+LPSTR WINAPI CharUpperA(LPSTR);
+LPWSTR WINAPI CharUpperW(LPWSTR);
+DWORD WINAPI CharUpperBuffA(LPSTR,DWORD);
+DWORD WINAPI CharUpperBuffW(LPWSTR,DWORD);
+BOOL WINAPI CheckDlgButton(HWND,int,UINT);
+DWORD WINAPI CheckMenuItem(HMENU,UINT,UINT);
+BOOL WINAPI CheckMenuRadioItem(HMENU,UINT,UINT,UINT,UINT);
+BOOL WINAPI CheckRadioButton(HWND,int,int,int);
+HWND WINAPI ChildWindowFromPoint(HWND,POINT);
+HWND WINAPI ChildWindowFromPointEx(HWND,POINT,UINT);
+BOOL WINAPI ClientToScreen(HWND,LPPOINT);
+BOOL WINAPI ClipCursor(LPCRECT);
+BOOL WINAPI CloseClipboard(void);
+BOOL WINAPI CloseDesktop(HDESK);
+BOOL WINAPI CloseWindow(HWND);
+BOOL WINAPI CloseWindowStation(HWINSTA);
+int WINAPI CopyAcceleratorTableA(HACCEL,LPACCEL,int);
+int WINAPI CopyAcceleratorTableW(HACCEL,LPACCEL,int);
+HCURSOR WINAPI CopyCursor(HCURSOR);
+HICON WINAPI CopyIcon(HICON);
+HANDLE WINAPI CopyImage(HANDLE,UINT,int,int,UINT);
+BOOL WINAPI CopyRect(LPRECT,LPCRECT);
+int WINAPI CountClipboardFormats(void);
+HACCEL WINAPI CreateAcceleratorTableA(LPACCEL,int);
+HACCEL WINAPI CreateAcceleratorTableW(LPACCEL,int);
+BOOL WINAPI CreateCaret(HWND,HBITMAP,int,int);
+HCURSOR WINAPI CreateCursor(HINSTANCE,int,int,int,int,PCVOID,PCVOID);
+HDESK WINAPI CreateDesktopA(LPSTR,LPSTR,LPDEVMODEA,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+HDESK WINAPI CreateDesktopW(LPWSTR,LPWSTR,LPDEVMODEW,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+#define CreateDialogA(h,n,w,f) CreateDialogParamA(h,n,w,f,0)
+#define CreateDialogW(h,n,w,f) CreateDialogParamW(h,n,w,f,0)
+#define CreateDialogIndirectA(h,t,w,f) CreateDialogIndirectParamA(h,t,w,f,0)
+#define CreateDialogIndirectW(h,t,w,f) CreateDialogIndirectParamW(h,t,w,f,0)
+HWND WINAPI CreateDialogIndirectParamA(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
+HWND WINAPI CreateDialogIndirectParamW(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
+HWND WINAPI CreateDialogParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
+HWND WINAPI CreateDialogParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
+HICON WINAPI CreateIcon(HINSTANCE,int,int,BYTE,BYTE,const BYTE*,const BYTE*);
+HICON WINAPI CreateIconFromResource(PBYTE,DWORD,BOOL,DWORD);
+HICON WINAPI CreateIconFromResourceEx(PBYTE,DWORD,BOOL,DWORD,int,int,UINT);
+HICON WINAPI CreateIconIndirect(PICONINFO);
+HWND WINAPI CreateMDIWindowA(LPSTR,LPSTR,DWORD,int,int,int,int,HWND,HINSTANCE,LPARAM);
+HWND WINAPI CreateMDIWindowW(LPWSTR,LPWSTR,DWORD,int,int,int,int,HWND,HINSTANCE,LPARAM);
+HMENU WINAPI CreateMenu(void);
+HMENU WINAPI CreatePopupMenu(void);
+#define CreateWindowA(a,b,c,d,e,f,g,h,i,j,k) CreateWindowExA(0,a,b,c,d,e,f,g,h,i,j,k)
+#define CreateWindowW(a,b,c,d,e,f,g,h,i,j,k) CreateWindowExW(0,a,b,c,d,e,f,g,h,i,j,k)
+HWND WINAPI CreateWindowExA(DWORD,LPCSTR,LPCSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID);
+HWND WINAPI CreateWindowExW(DWORD,LPCWSTR,LPCWSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID);
+HWINSTA WINAPI CreateWindowStationA(LPSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+HWINSTA WINAPI CreateWindowStationW(LPWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+LRESULT WINAPI DefDlgProcA(HWND,UINT,WPARAM,LPARAM);
+LRESULT WINAPI DefDlgProcW(HWND,UINT,WPARAM,LPARAM);
+HDWP WINAPI DeferWindowPos(HDWP,HWND,HWND,int,int,int,int,UINT);
+LRESULT WINAPI DefFrameProcA(HWND,HWND,UINT,WPARAM,LPARAM);
+LRESULT WINAPI DefFrameProcW(HWND,HWND,UINT,WPARAM,LPARAM);
+#define DefHookProc(c,p,lp,h) CallNextHookEx((HHOOK)*h,c,p,lp)
+LRESULT WINAPI DefMDIChildProcA(HWND,UINT,WPARAM,LPARAM);
+LRESULT WINAPI DefMDIChildProcW(HWND,UINT,WPARAM,LPARAM);
+LRESULT WINAPI DefWindowProcA(HWND,UINT,WPARAM,LPARAM);
+LRESULT WINAPI DefWindowProcW(HWND,UINT,WPARAM,LPARAM);
+BOOL WINAPI DeleteMenu(HMENU,UINT,UINT);
+BOOL WINAPI DestroyAcceleratorTable(HACCEL);
+BOOL WINAPI DestroyCaret(void);
+BOOL WINAPI DestroyCursor(HCURSOR);
+BOOL WINAPI DestroyIcon(HICON);
+BOOL WINAPI DestroyMenu(HMENU);
+BOOL WINAPI DestroyWindow(HWND);
+#define DialogBoxA(i,t,p,f) DialogBoxParamA(i,t,p,f,0)
+#define DialogBoxW(i,t,p,f) DialogBoxParamW(i,t,p,f,0)
+#define DialogBoxIndirectA(i,t,p,f) DialogBoxIndirectParamA(i,t,p,f,0)
+#define DialogBoxIndirectW(i,t,p,f) DialogBoxIndirectParamW(i,t,p,f,0)
+int WINAPI DialogBoxIndirectParamA(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
+int WINAPI DialogBoxIndirectParamW(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
+int WINAPI DialogBoxParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
+int WINAPI DialogBoxParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
+LONG WINAPI DispatchMessageA(const MSG*);
+LONG WINAPI DispatchMessageW(const MSG*);
+int WINAPI DlgDirListA(HWND,LPSTR,int,int,UINT);
+int WINAPI DlgDirListW(HWND,LPWSTR,int,int,UINT);
+int WINAPI DlgDirListComboBoxA(HWND,LPSTR,int,int,UINT);
+int WINAPI DlgDirListComboBoxW(HWND,LPWSTR,int,int,UINT);
+BOOL WINAPI DlgDirSelectComboBoxExA(HWND,LPSTR,int,int);
+BOOL WINAPI DlgDirSelectComboBoxExW(HWND,LPWSTR,int,int);
+BOOL WINAPI DlgDirSelectExA(HWND,LPSTR,int,int);
+BOOL WINAPI DlgDirSelectExW(HWND,LPWSTR,int,int);
+BOOL WINAPI DragDetect(HWND,POINT);
+DWORD WINAPI DragObject(HWND,HWND,UINT,DWORD,HCURSOR);
+BOOL WINAPI DrawAnimatedRects(HWND,int,LPCRECT,LPCRECT);
+BOOL WINAPI DrawCaption(HWND,HDC,LPCRECT,UINT);
+BOOL WINAPI DrawEdge(HDC,LPRECT,UINT,UINT);
+BOOL WINAPI DrawFocusRect(HDC,LPCRECT);
+BOOL WINAPI DrawFrameControl(HDC,LPRECT,UINT,UINT);
+BOOL WINAPI DrawIcon(HDC,int,int,HICON);
+BOOL WINAPI DrawIconEx(HDC,int,int,HICON,int,int,UINT,HBRUSH,UINT);
+BOOL WINAPI DrawMenuBar(HWND);
+BOOL WINAPI DrawStateA(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,int,int,int,int,UINT);
+BOOL WINAPI DrawStateW(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,int,int,int,int,UINT);
+int WINAPI DrawTextA(HDC,LPCSTR,int,LPRECT,UINT);
+int WINAPI DrawTextW(HDC,LPCWSTR,int,LPRECT,UINT);
+int WINAPI DrawTextExA(HDC,LPSTR,int,LPRECT,UINT,LPDRAWTEXTPARAMS);
+int WINAPI DrawTextExW(HDC,LPWSTR,int,LPRECT,UINT,LPDRAWTEXTPARAMS);
+BOOL WINAPI EmptyClipboard(void);
+BOOL WINAPI EnableMenuItem(HMENU,UINT,UINT);
+BOOL WINAPI EnableScrollBar(HWND,UINT,UINT);
+BOOL WINAPI EnableWindow(HWND,BOOL);
+BOOL WINAPI EndDeferWindowPos(HDWP);
+BOOL WINAPI EndDialog(HWND,int);
+BOOL WINAPI EndMenu(VOID);
+BOOL WINAPI EndPaint(HWND,const PAINTSTRUCT*);
+BOOL WINAPI EnumChildWindows(HWND,ENUMWINDOWSPROC,LPARAM);
+UINT WINAPI EnumClipboardFormats(UINT);
+BOOL WINAPI EnumDesktopsA(HWINSTA,DESKTOPENUMPROCA,LPARAM);
+BOOL WINAPI EnumDesktopsW(HWINSTA,DESKTOPENUMPROCW,LPARAM);
+BOOL WINAPI EnumDesktopWindows(HDESK,ENUMWINDOWSPROC,LPARAM);
+BOOL WINAPI EnumDisplayMonitors(HDC,LPCRECT,MONITORENUMPROC,LPARAM);
+BOOL WINAPI EnumDisplaySettingsA(LPCSTR,DWORD,PDEVMODEA);
+BOOL WINAPI EnumDisplaySettingsW(LPCWSTR,DWORD,PDEVMODEW);
+int WINAPI EnumPropsA(HWND,PROPENUMPROCA);
+int WINAPI EnumPropsW(HWND,PROPENUMPROCW);
+int WINAPI EnumPropsExA(HWND,PROPENUMPROCEXA,LPARAM);
+int WINAPI EnumPropsExW(HWND,PROPENUMPROCEXW,LPARAM);
+#define EnumTaskWindows(h,f,p) EnumThreadWindows((DWORD)h,f,p)
+BOOL WINAPI EnumThreadWindows(DWORD,WNDENUMPROC,LPARAM);
+BOOL WINAPI EnumWindows(WNDENUMPROC,LPARAM);
+BOOL WINAPI EnumWindowStationsA(WINSTAENUMPROCA,LPARAM);
+BOOL WINAPI EnumWindowStationsW(WINSTAENUMPROCW,LPARAM);
+BOOL WINAPI EqualRect(LPCRECT,LPCRECT);
+#define ExitWindows(r,c) ExitWindowsEx(EWX_LOGOFF,0)
+BOOL WINAPI ExitWindowsEx(UINT,DWORD);
+HWND WINAPI FindWindowA(LPCSTR,LPCSTR);
+HWND WINAPI FindWindowExA(HWND,HWND,LPCSTR,LPCSTR);
+HWND WINAPI FindWindowExW(HWND,HWND,LPCWSTR,LPCWSTR);
+HWND WINAPI FindWindowW(LPCWSTR,LPCWSTR);
+BOOL WINAPI FlashWindow(HWND,BOOL);
+int WINAPI FrameRect(HDC,LPCRECT,HBRUSH);
+BOOL WINAPI FrameRgn(HDC,HRGN,HBRUSH,int,int);
+HWND WINAPI GetActiveWindow(void);
+SHORT WINAPI GetAsyncKeyState(int);
+HWND WINAPI GetCapture(void);
+UINT WINAPI GetCaretBlinkTime(void);
+BOOL WINAPI GetCaretPos(LPPOINT);
+BOOL WINAPI GetClassInfoA(HINSTANCE,LPCSTR,PWNDCLASSA);
+BOOL WINAPI GetClassInfoExA(HINSTANCE,LPCSTR,PWNDCLASSEXA);
+BOOL WINAPI GetClassInfoW(HINSTANCE,LPCWSTR,PWNDCLASSW);
+BOOL WINAPI GetClassInfoExW(HINSTANCE,LPCWSTR,PWNDCLASSEXW);
+DWORD WINAPI GetClassLongA(HWND,int);
+DWORD WINAPI GetClassLongW(HWND,int);
+int WINAPI GetClassNameA(HWND,LPSTR,int);
+int WINAPI GetClassNameW(HWND,LPWSTR,int);
+WORD WINAPI GetClassWord(HWND,int);
+BOOL WINAPI GetClientRect(HWND,LPRECT);
+HANDLE WINAPI GetClipboardData(UINT);
+int WINAPI GetClipboardFormatNameA(UINT,LPSTR,int);
+int WINAPI GetClipboardFormatNameW(UINT,LPWSTR,int);
+HWND WINAPI GetClipboardOwner(void);
+HWND WINAPI GetClipboardViewer(void);
+BOOL WINAPI GetClipCursor(LPRECT);
+BOOL WINAPI GetCursorPos(LPPOINT);
+HDC WINAPI GetDC(HWND);
+HDC WINAPI GetDCEx(HWND,HRGN,DWORD);
+HWND WINAPI GetDesktopWindow(void);
+long WINAPI GetDialogBaseUnits(void);
+int WINAPI GetDlgCtrlID(HWND);
+HWND WINAPI GetDlgItem(HWND,int);
+UINT WINAPI GetDlgItemInt(HWND,int,PBOOL,BOOL);
+UINT WINAPI GetDlgItemTextA(HWND,int,LPSTR,int);
+UINT WINAPI GetDlgItemTextW(HWND,int,LPWSTR,int);
+UINT WINAPI GetDoubleClickTime(void);
+HWND WINAPI GetFocus(void);
+HWND WINAPI GetForegroundWindow(void);
+BOOL WINAPI GetIconInfo(HICON,PICONINFO);
+BOOL WINAPI GetInputState(void);
+UINT WINAPI GetKBCodePage(void);
+HKL WINAPI GetKeyboardLayout(DWORD);
+int WINAPI GetKeyboardLayoutList(int,HKL*);
+BOOL WINAPI GetKeyboardLayoutNameA(LPSTR);
+BOOL WINAPI GetKeyboardLayoutNameW(LPWSTR);
+BOOL WINAPI GetKeyboardState(PBYTE);
+int WINAPI GetKeyboardType(int);
+int WINAPI GetKeyNameTextA(LONG,LPSTR,int);
+int WINAPI GetKeyNameTextW(LONG,LPWSTR,int);
+SHORT WINAPI GetKeyState(int);
+HWND WINAPI GetLastActivePopup(HWND);
+DWORD WINAPI GetLastError(void);
+HMENU WINAPI GetMenu(HWND);
+LONG WINAPI GetMenuCheckMarkDimensions(void);
+DWORD WINAPI GetMenuContextHelpId(HMENU);
+UINT WINAPI GetMenuDefaultItem(HMENU,UINT,UINT);
+int WINAPI GetMenuItemCount(HMENU);
+UINT WINAPI GetMenuItemID(HMENU,int);
+BOOL WINAPI GetMenuItemInfoA(HMENU,UINT,BOOL,LPMENUITEMINFOA);
+BOOL WINAPI GetMenuItemInfoW(HMENU,UINT,BOOL,LPMENUITEMINFOW);
+BOOL WINAPI GetMenuItemRect(HWND,HMENU,UINT,LPRECT);
+UINT WINAPI GetMenuState(HMENU,UINT,UINT);
+int WINAPI GetMenuStringA(HMENU,UINT,LPSTR,int,UINT);
+int WINAPI GetMenuStringW(HMENU,UINT,LPWSTR,int,UINT);
+BOOL WINAPI GetMessageA(LPMSG,HWND,UINT,UINT);
+BOOL WINAPI GetMessageW(LPMSG,HWND,UINT,UINT);
+LONG WINAPI GetMessageExtraInfo(void);
+DWORD WINAPI GetMessagePos(void);
+LONG WINAPI GetMessageTime(void);
+HWND WINAPI GetNextDlgGroupItem(HWND,HWND,BOOL);
+HWND WINAPI GetNextDlgTabItem(HWND,HWND,BOOL);
+#define GetNextWindow(h,c) GetWindow(h,c)
+HWND WINAPI GetOpenClipboardWindow(void);
+HWND WINAPI GetParent(HWND);
+int WINAPI GetPriorityClipboardFormat(UINT*,int);
+HANDLE WINAPI GetPropA(HWND,LPCSTR);
+HANDLE WINAPI GetPropW(HWND,LPCWSTR);
+DWORD WINAPI GetQueueStatus(UINT);
+BOOL WINAPI GetScrollInfo(HWND,int,LPSCROLLINFO);
+int WINAPI GetScrollPos(HWND,int);
+BOOL WINAPI GetScrollRange(HWND,int,LPINT,LPINT);
+HMENU WINAPI GetSubMenu(HMENU,int);
+DWORD WINAPI GetSysColor(int);
+HBRUSH WINAPI GetSysColorBrush(int);
+#define GetSysModalWindow() (NULL)
+HMENU WINAPI GetSystemMenu(HWND,BOOL);
+int WINAPI GetSystemMetrics(int);
+DWORD WINAPI GetTabbedTextExtentA(HDC,LPCSTR,int,int,LPINT);
+DWORD WINAPI GetTabbedTextExtentW(HDC,LPCWSTR,int,int,LPINT);
+LONG WINAPI GetWindowLongA(HWND,int);
+LONG WINAPI GetWindowLongW(HWND,int);
+#ifdef _WIN64
+LONG_PTR WINAPI GetWindowLongPtrA(HWND,int);
+LONG_PTR WINAPI GetWindowLongPtrW(HWND,int);
+#else
+#define GetWindowLongPtrA GetWindowLongA
+#define GetWindowLongPtrW GetWindowLongW
+#endif
+HDESK WINAPI GetThreadDesktop(DWORD);
+HWND WINAPI GetTopWindow(HWND);
+BOOL WINAPI GetUpdateRect(HWND,LPRECT,BOOL);
+int WINAPI GetUpdateRgn(HWND,HRGN,BOOL);
+BOOL WINAPI GetUserObjectInformationA(HANDLE,int,PVOID,DWORD,PDWORD);
+BOOL WINAPI GetUserObjectInformationW(HANDLE,int,PVOID,DWORD,PDWORD);
+BOOL WINAPI GetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+HWND WINAPI GetWindow(HWND,UINT);
+DWORD WINAPI GetWindowContextHelpId(HWND);
+HDC WINAPI GetWindowDC(HWND);
+BOOL WINAPI GetWindowExtEx(HDC,LPSIZE);
+BOOL WINAPI GetWindowPlacement(HWND,WINDOWPLACEMENT*);
+BOOL WINAPI GetWindowRect(HWND,LPRECT);
+int WINAPI GetWindowRgn(HWND,HRGN);
+#define GetWindowTask(hWnd) ((HANDLE)GetWindowThreadProcessId(hWnd, NULL))
+int WINAPI GetWindowTextA(HWND,LPSTR,int);
+int WINAPI GetWindowTextLengthA(HWND);
+int WINAPI GetWindowTextLengthW(HWND);
+int WINAPI GetWindowTextW(HWND,LPWSTR,int);
+WORD WINAPI GetWindowWord(HWND,int);
+BOOL WINAPI GetAltTabInfoA(HWND,int,PALTTABINFO,LPSTR,UINT);
+BOOL WINAPI GetAltTabInfoW(HWND,int,PALTTABINFO,LPWSTR,UINT);
+BOOL WINAPI GetComboBoxInfo(HWND,PCOMBOBOXINFO);
+BOOL WINAPI GetCursorInfo(PCURSORINFO);
+BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO);
+DWORD WINAPI GetListBoxInfo(HWND);
+BOOL WINAPI GetMenuBarInfo(HWND,LONG,LONG,PMENUBARINFO);
+BOOL WINAPI GetMenuInfo(HMENU,LPMENUINFO);
+BOOL WINAPI GetScrollBarInfo(HWND,LONG,PSCROLLBARINFO);
+BOOL WINAPI GetTitleBarInfo(HWND,PTITLEBARINFO);
+BOOL WINAPI GetWindowInfo(HWND,PWINDOWINFO);
+BOOL WINAPI GetMonitorInfoA(HMONITOR,LPMONITORINFO);
+BOOL WINAPI GetMonitorInfoW(HMONITOR,LPMONITORINFO);
+UINT WINAPI GetWindowModuleFileNameA(HWND,LPSTR,UINT);
+UINT WINAPI GetWindowModuleFileNameW(HWND,LPWSTR,UINT);
+BOOL WINAPI GrayStringA(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,int,int,int,int,int);
+BOOL WINAPI GrayStringW(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,int,int,int,int,int);
+BOOL WINAPI HideCaret(HWND);
+BOOL WINAPI HiliteMenuItem(HWND,HMENU,UINT,UINT);
+BOOL WINAPI InflateRect(LPRECT,int,int);
+BOOL WINAPI InSendMessage(VOID);
+BOOL WINAPI InsertMenuA(HMENU,UINT,UINT,UINT,LPCSTR);
+BOOL WINAPI InsertMenuW(HMENU,UINT,UINT,UINT,LPCWSTR);
+BOOL WINAPI InsertMenuItemA(HMENU,UINT,BOOL,LPCMENUITEMINFOA);
+BOOL WINAPI InsertMenuItemW(HMENU,UINT,BOOL,LPCMENUITEMINFOW);
+BOOL WINAPI IntersectRect(LPRECT,LPCRECT,LPCRECT);
+BOOL WINAPI InvalidateRect(HWND,LPCRECT,BOOL);
+BOOL WINAPI InvalidateRgn(HWND,HRGN,BOOL);
+BOOL WINAPI InvertRect(HDC,LPCRECT);
+BOOL WINAPI IsCharAlphaA(CHAR ch);
+BOOL WINAPI IsCharAlphaNumericA(CHAR);
+BOOL WINAPI IsCharAlphaNumericW(WCHAR);
+BOOL WINAPI IsCharAlphaW(WCHAR);
+BOOL WINAPI IsCharLowerA(CHAR);
+BOOL WINAPI IsCharLowerW(WCHAR);
+BOOL WINAPI IsCharUpperA(CHAR);
+BOOL WINAPI IsCharUpperW(WCHAR);
+BOOL WINAPI IsChild(HWND,HWND);
+BOOL WINAPI IsClipboardFormatAvailable(UINT);
+BOOL WINAPI IsDialogMessageA(HWND,LPMSG);
+BOOL WINAPI IsDialogMessageW(HWND,LPMSG);
+UINT WINAPI IsDlgButtonChecked(HWND,int);
+BOOL WINAPI IsIconic(HWND);
+BOOL WINAPI IsMenu(HMENU);
+BOOL WINAPI IsRectEmpty(LPCRECT);
+BOOL WINAPI IsWindow(HWND);
+BOOL WINAPI IsWindowEnabled(HWND);
+BOOL WINAPI IsWindowUnicode(HWND);
+BOOL WINAPI IsWindowVisible(HWND);
+BOOL WINAPI IsZoomed(HWND);
+VOID WINAPI keybd_event(BYTE,BYTE,DWORD,DWORD);
+BOOL WINAPI KillTimer(HWND,UINT);
+HACCEL WINAPI LoadAcceleratorsA(HINSTANCE,LPCSTR);
+HACCEL WINAPI LoadAcceleratorsW(HINSTANCE,LPCWSTR);
+HBITMAP WINAPI LoadBitmapA(HINSTANCE,LPCSTR);
+HBITMAP WINAPI LoadBitmapW(HINSTANCE,LPCWSTR);
+HCURSOR WINAPI LoadCursorA(HINSTANCE,LPCSTR);
+HCURSOR WINAPI LoadCursorFromFileA(LPCSTR);
+HCURSOR WINAPI LoadCursorFromFileW(LPCWSTR);
+HCURSOR WINAPI LoadCursorW(HINSTANCE,LPCWSTR);
+HICON WINAPI LoadIconA(HINSTANCE,LPCSTR);
+HICON WINAPI LoadIconW(HINSTANCE,LPCWSTR);
+HANDLE WINAPI LoadImageA(HINSTANCE,LPCSTR,UINT,int,int,UINT);
+HANDLE WINAPI LoadImageW(HINSTANCE,LPCWSTR,UINT,int,int,UINT);
+HKL WINAPI LoadKeyboardLayoutA(LPCSTR,UINT);
+HKL WINAPI LoadKeyboardLayoutW(LPCWSTR,UINT);
+HMENU WINAPI LoadMenuA(HINSTANCE,LPCSTR);
+HMENU WINAPI LoadMenuIndirectA(const MENUTEMPLATE*);
+HMENU WINAPI LoadMenuIndirectW(const MENUTEMPLATE*);
+HMENU WINAPI LoadMenuW(HINSTANCE,LPCWSTR);
+int WINAPI LoadStringA(HINSTANCE,UINT,LPSTR,int);
+int WINAPI LoadStringW(HINSTANCE,UINT,LPWSTR,int);
+BOOL WINAPI LockWindowUpdate(HWND);
+int WINAPI LookupIconIdFromDirectory(PBYTE,BOOL);
+int WINAPI LookupIconIdFromDirectoryEx(PBYTE,BOOL,int,int,UINT);
+BOOL WINAPI MapDialogRect(HWND,LPRECT);
+UINT WINAPI MapVirtualKeyA(UINT,UINT);
+UINT WINAPI MapVirtualKeyExA(UINT,UINT,HKL);
+UINT WINAPI MapVirtualKeyExW(UINT,UINT,HKL);
+UINT WINAPI MapVirtualKeyW(UINT,UINT);
+int WINAPI MapWindowPoints(HWND,HWND,LPPOINT,UINT);
+int WINAPI MenuItemFromPoint(HWND,HMENU,POINT);
+BOOL WINAPI MessageBeep(UINT);
+int WINAPI MessageBoxA(HWND,LPCSTR,LPCSTR,UINT);
+int WINAPI MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT);
+int WINAPI MessageBoxExA(HWND,LPCSTR,LPCSTR,UINT,WORD);
+int WINAPI MessageBoxExW(HWND,LPCWSTR,LPCWSTR,UINT,WORD);
+int WINAPI MessageBoxIndirectA(LPMSGBOXPARAMSA);
+int WINAPI MessageBoxIndirectW(LPMSGBOXPARAMSW);
+BOOL WINAPI ModifyMenuA(HMENU,UINT,UINT,UINT,LPCSTR);
+BOOL WINAPI ModifyMenuW(HMENU,UINT,UINT,UINT,LPCWSTR);
+void WINAPI mouse_event(DWORD,DWORD,DWORD,DWORD,DWORD);
+BOOL WINAPI MoveWindow(HWND,int,int,int,int,BOOL);
+DWORD WINAPI MsgWaitForMultipleObjects(DWORD,LPHANDLE,BOOL,DWORD,DWORD);
+DWORD WINAPI MsgWaitForMultipleObjectsEx(DWORD,LPHANDLE,DWORD,DWORD,DWORD);
+DWORD WINAPI OemKeyScan(WORD);
+BOOL WINAPI OemToCharA(LPCSTR,LPSTR);
+BOOL WINAPI OemToCharBuffA(LPCSTR,LPSTR,DWORD);
+BOOL WINAPI OemToCharBuffW(LPCSTR,LPWSTR,DWORD);
+BOOL WINAPI OemToCharW(LPCSTR,LPWSTR);
+BOOL WINAPI OffsetRect(LPRECT,int,int);
+BOOL WINAPI OpenClipboard(HWND);
+HDESK WINAPI OpenDesktopA(LPSTR,DWORD,BOOL,DWORD);
+HDESK WINAPI OpenDesktopW(LPWSTR,DWORD,BOOL,DWORD);
+BOOL WINAPI OpenIcon(HWND);
+HDESK WINAPI OpenInputDesktop(DWORD,BOOL,DWORD);
+HWINSTA WINAPI OpenWindowStationA(LPSTR,BOOL,DWORD);
+HWINSTA WINAPI OpenWindowStationW(LPWSTR,BOOL,DWORD);
+BOOL WINAPI PaintDesktop(HDC);
+BOOL WINAPI PeekMessageA(LPMSG,HWND,UINT,UINT,UINT);
+BOOL WINAPI PeekMessageW(LPMSG,HWND,UINT,UINT,UINT);
+#define PostAppMessageA(t,m,w,l) PostThreadMessageA((DWORD)t,m,w,l)
+#define PostAppMessageW(t,m,w,l) PostThreadMessageW((DWORD)t,m,w,l)
+BOOL WINAPI PostMessageA(HWND,UINT,WPARAM,LPARAM);
+BOOL WINAPI PostMessageW(HWND,UINT,WPARAM,LPARAM);
+void WINAPI PostQuitMessage(int);
+BOOL WINAPI PostThreadMessageA(DWORD,UINT,WPARAM,LPARAM);
+BOOL WINAPI PostThreadMessageW(DWORD,UINT,WPARAM,LPARAM);
+BOOL WINAPI PtInRect(LPCRECT,POINT);
+BOOL WINAPI RedrawWindow(HWND,LPCRECT,HRGN,UINT);
+ATOM WINAPI RegisterClassA(const WNDCLASSA*);
+ATOM WINAPI RegisterClassW(const WNDCLASSW*);
+ATOM WINAPI RegisterClassExA(const WNDCLASSEXA*);
+ATOM WINAPI RegisterClassExW(const WNDCLASSEXW*);
+UINT WINAPI RegisterClipboardFormatA(LPCSTR);
+UINT WINAPI RegisterClipboardFormatW(LPCWSTR);
+BOOL WINAPI RegisterHotKey(HWND,int,UINT,UINT);
+UINT WINAPI RegisterWindowMessageA(LPCSTR);
+UINT WINAPI RegisterWindowMessageW(LPCWSTR);
+BOOL WINAPI ReleaseCapture(void);
+int WINAPI ReleaseDC(HWND,HDC);
+BOOL WINAPI RemoveMenu(HMENU,UINT,UINT);
+HANDLE WINAPI RemovePropA(HWND,LPCSTR);
+HANDLE WINAPI RemovePropW(HWND,LPCWSTR);
+BOOL WINAPI ReplyMessage(LRESULT);
+BOOL WINAPI ScreenToClient(HWND,LPPOINT);
+BOOL WINAPI ScrollDC(HDC,int,int,LPCRECT,LPCRECT,HRGN,LPRECT);
+BOOL WINAPI ScrollWindow(HWND,int,int,LPCRECT,LPCRECT);
+int WINAPI ScrollWindowEx(HWND,int,int,LPCRECT,LPCRECT,HRGN,LPRECT,UINT);
+LONG WINAPI SendDlgItemMessageA(HWND,int,UINT,WPARAM,LPARAM);
+LONG WINAPI SendDlgItemMessageW(HWND,int,UINT,WPARAM,LPARAM);
+LRESULT WINAPI SendMessageA(HWND,UINT,WPARAM,LPARAM);
+BOOL WINAPI SendMessageCallbackA(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,DWORD);
+BOOL WINAPI SendMessageCallbackW(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,DWORD);
+LRESULT WINAPI SendMessageTimeoutA(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD);
+LRESULT WINAPI SendMessageTimeoutW(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD);
+LRESULT WINAPI SendMessageW(HWND,UINT,WPARAM,LPARAM);
+BOOL WINAPI SendNotifyMessageA(HWND,UINT,WPARAM,LPARAM);
+BOOL WINAPI SendNotifyMessageW(HWND,UINT,WPARAM,LPARAM);
+HWND WINAPI SetActiveWindow(HWND);
+HWND WINAPI SetCapture(HWND hWnd);
+BOOL WINAPI SetCaretBlinkTime(UINT);
+BOOL WINAPI SetCaretPos(int,int);
+DWORD WINAPI SetClassLongA(HWND,int,LONG);
+DWORD WINAPI SetClassLongW(HWND,int,LONG);
+WORD WINAPI SetClassWord(HWND,int,WORD);
+HANDLE WINAPI SetClipboardData(UINT,HANDLE);
+HWND WINAPI SetClipboardViewer(HWND);
+HCURSOR WINAPI SetCursor(HCURSOR);
+BOOL WINAPI SetCursorPos(int,int);
+VOID WINAPI SetDebugErrorLevel(DWORD);
+BOOL WINAPI SetDlgItemInt(HWND,int,UINT,BOOL);
+BOOL WINAPI SetDlgItemTextA(HWND,int,LPCSTR);
+BOOL WINAPI SetDlgItemTextW(HWND,int,LPCWSTR);
+BOOL WINAPI SetDoubleClickTime(UINT);
+HWND WINAPI SetFocus(HWND);
+BOOL WINAPI SetForegroundWindow(HWND);
+BOOL WINAPI SetKeyboardState(PBYTE);
+BOOL WINAPI SetMenu(HWND,HMENU);
+BOOL WINAPI SetMenuContextHelpId(HMENU,DWORD);
+BOOL WINAPI SetMenuDefaultItem(HMENU,UINT,UINT);
+BOOL WINAPI SetMenuInfo(HMENU,LPCMENUINFO);
+BOOL WINAPI SetMenuItemBitmaps(HMENU,UINT,UINT,HBITMAP,HBITMAP);
+BOOL WINAPI SetMenuItemInfoA(HMENU,UINT,BOOL,LPCMENUITEMINFOA);
+BOOL WINAPI SetMenuItemInfoW( HMENU,UINT,BOOL,LPCMENUITEMINFOW);
+LPARAM WINAPI SetMessageExtraInfo(LPARAM);
+BOOL WINAPI SetMessageQueue(int);
+HWND WINAPI SetParent(HWND,HWND);
+BOOL WINAPI SetProcessWindowStation(HWINSTA);
+BOOL WINAPI SetPropA(HWND,LPCSTR,HANDLE);
+BOOL WINAPI SetPropW(HWND,LPCWSTR,HANDLE);
+BOOL WINAPI SetRect(LPRECT,int,int,int,int);
+BOOL WINAPI SetRectEmpty(LPRECT);
+int WINAPI SetScrollInfo(HWND,int,LPCSCROLLINFO,BOOL);
+int WINAPI SetScrollPos(HWND,int,int,BOOL);
+BOOL WINAPI SetScrollRange(HWND,int,int,int,BOOL);
+BOOL WINAPI SetSysColors(int,const INT *,const COLORREF *);
+#define SetSysModalWindow(h) (NULL)
+BOOL WINAPI SetSystemCursor(HCURSOR,DWORD);
+BOOL WINAPI SetThreadDesktop(HDESK);
+UINT WINAPI SetTimer(HWND,UINT,UINT,TIMERPROC);
+BOOL WINAPI SetUserObjectInformationA(HANDLE,int,PVOID,DWORD);
+BOOL WINAPI SetUserObjectInformationW(HANDLE,int,PVOID,DWORD);
+BOOL WINAPI SetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+BOOL WINAPI SetWindowContextHelpId(HWND,DWORD);
+LONG WINAPI SetWindowLongA(HWND,int,LONG);
+LONG WINAPI SetWindowLongW(HWND,int,LONG);
+#ifdef _WIN64
+LONG_PTR WINAPI SetWindowLongPtrA(HWND,int,LONG_PTR);
+LONG_PTR WINAPI SetWindowLongPtrW(HWND,int,LONG_PTR);
+#else 
+#define SetWindowLongPtrA SetWindowLongA
+#define SetWindowLongPtrW SetWindowLongW
+#endif
+BOOL WINAPI SetWindowPlacement(HWND hWnd,const WINDOWPLACEMENT*);
+BOOL WINAPI SetWindowPos(HWND,HWND,int,int,int,int,UINT);
+int WINAPI SetWindowRgn(HWND,HRGN,BOOL);
+HOOKPROC WINAPI SetWindowsHookA(int,HOOKPROC);
+HHOOK WINAPI SetWindowsHookExA(int,HOOKPROC,HINSTANCE,DWORD);
+HHOOK WINAPI SetWindowsHookExW(int,HOOKPROC,HINSTANCE,DWORD);
+BOOL WINAPI SetWindowTextA(HWND,LPCSTR);
+BOOL WINAPI SetWindowTextW(HWND,LPCWSTR);
+WORD WINAPI SetWindowWord(HWND,int,WORD);
+BOOL WINAPI ShowCaret(HWND);
+int WINAPI ShowCursor(BOOL);
+BOOL WINAPI ShowOwnedPopups(HWND,BOOL);
+BOOL WINAPI ShowScrollBar(HWND,int,BOOL);
+BOOL WINAPI ShowWindow(HWND,int);
+BOOL WINAPI ShowWindowAsync(HWND,int);
+BOOL WINAPI SubtractRect(LPRECT,LPCRECT,LPCRECT);
+BOOL WINAPI SwapMouseButton(BOOL);
+BOOL WINAPI SwitchDesktop(HDESK);
+BOOL WINAPI SystemParametersInfoA(UINT,UINT,PVOID,UINT);
+BOOL WINAPI SystemParametersInfoW(UINT,UINT,PVOID,UINT);
+LONG WINAPI TabbedTextOutA(HDC,int,int,LPCSTR,int,int,LPINT,int);
+LONG WINAPI TabbedTextOutW(HDC,int,int,LPCWSTR,int,int,LPINT,int);
+WORD WINAPI TileWindows(HWND,UINT,LPCRECT,UINT,const HWND *);
+int WINAPI ToAscii(UINT,UINT,PBYTE,LPWORD,UINT);
+int WINAPI ToAsciiEx(UINT,UINT,PBYTE,LPWORD,UINT,HKL);
+int WINAPI ToUnicode(UINT,UINT,PBYTE,LPWSTR,int,UINT);
+int WINAPI ToUnicodeEx(UINT,UINT,PBYTE,LPWSTR,int,UINT,HKL);
+BOOL WINAPI TrackMouseEvent(LPTRACKMOUSEEVENT);
+BOOL WINAPI TrackPopupMenu(HMENU,UINT,int,int,int,HWND,LPCRECT);
+BOOL WINAPI TrackPopupMenuEx(HMENU,UINT,int,int,HWND,LPTPMPARAMS);
+int WINAPI TranslateAcceleratorA(HWND,HACCEL,LPMSG);
+int WINAPI TranslateAcceleratorW(HWND,HACCEL,LPMSG);
+BOOL WINAPI TranslateMDISysAccel(HWND,LPMSG);
+BOOL WINAPI TranslateMessage(const MSG*);
+BOOL WINAPI UnhookWindowsHook(int,HOOKPROC);
+BOOL WINAPI UnhookWindowsHookEx(HHOOK);
+BOOL WINAPI UnionRect(LPRECT,LPCRECT,LPCRECT);
+BOOL WINAPI UnloadKeyboardLayout(HKL);
+BOOL WINAPI UnregisterClassA(LPCSTR,HINSTANCE);
+BOOL WINAPI UnregisterClassW(LPCWSTR,HINSTANCE);
+BOOL WINAPI UnregisterHotKey(HWND,int);
+BOOL WINAPI UpdateWindow(HWND);
+BOOL WINAPI ValidateRect(HWND,LPCRECT);
+BOOL WINAPI ValidateRgn(HWND,HRGN);
+SHORT WINAPI VkKeyScanA(CHAR);
+SHORT WINAPI VkKeyScanExA(CHAR,HKL);
+SHORT WINAPI VkKeyScanExW(WCHAR,HKL);
+SHORT WINAPI VkKeyScanW(WCHAR);
+DWORD WINAPI WaitForInputIdle(HANDLE,DWORD);
+BOOL WINAPI WaitMessage(void);
+HWND WINAPI WindowFromDC(HDC hDC);
+HWND WINAPI WindowFromPoint(POINT);
+UINT WINAPI WinExec(LPCSTR,UINT);
+BOOL WINAPI WinHelpA(HWND,LPCSTR,UINT,DWORD);
+BOOL WINAPI WinHelpW(HWND,LPCWSTR,UINT,DWORD);
+int WINAPIV wsprintfA(LPSTR,LPCSTR,...);
+int WINAPIV wsprintfW(LPWSTR,LPCWSTR,...);
+int WINAPI wvsprintfA(LPSTR,LPCSTR,va_list arglist);
+int WINAPI wvsprintfW(LPWSTR,LPCWSTR,va_list arglist);
+
+#ifdef UNICODE
+#define EDITWORDBREAKPROC EDITWORDBREAKPROCW
+#define PROPENUMPROC PROPENUMPROCW
+#define PROPENUMPROCEX PROPENUMPROCEXW
+#define DEKSTOPENUMPROC DEKSTOPENUMPROCW
+#define WINSTAENUMPROC WINSTAENUMPROCW
+#define PROPENUMPROC PROPENUMPROCW
+#define PROPENUMPROCEX PROPENUMPROCEXW
+#define MAKEINTRESOURCE MAKEINTRESOURCEW
+typedef WNDCLASSW WNDCLASS,*LPWNDCLASS,*PWNDCLASS;
+typedef WNDCLASSEXW WNDCLASSEX,*LPWNDCLASSEX,*PWNDCLASSEX;
+typedef MENUITEMINFOW MENUITEMINFO,*LPMENUITEMINFO;
+typedef LPCMENUITEMINFOW LPCMENUITEMINFO;
+typedef MSGBOXPARAMSW MSGBOXPARAMS,*PMSGBOXPARAMS,*LPMSGBOXPARAMS;
+typedef HIGHCONTRASTW HIGHCONTRAST,*LPHIGHCONTRAST;
+typedef ICONMETRICSW ICONMETRICS,*LPICONMETRICS;
+typedef NONCLIENTMETRICSW NONCLIENTMETRICS,*LPNONCLIENTMETRICS;
+typedef SERIALKEYSW SERIALKEYS,*LPSERIALKEYS;
+typedef SOUNDSENTRYW SOUNDSENTRY,*LPSOUNDSENTRY;
+typedef CREATESTRUCTW CREATESTRUCT, *LPCREATESTRUCT;
+typedef CBT_CREATEWNDW CBT_CREATEWND, *LPCBT_CREATEWND;
+typedef MDICREATESTRUCTW MDICREATESTRUCT,*LPMDICREATESTRUCT;
+typedef MULTIKEYHELPW MULTIKEYHELP,*PMULTIKEYHELP,*LPMULTIKEYHELP;
+#define AppendMenu AppendMenuW
+#define CallWindowProc CallWindowProcW
+#define ChangeDisplaySettings ChangeDisplaySettingsW
+#define ChangeMenu ChangeMenuW
+#define CharLower CharLowerW
+#define CharLowerBuff CharLowerBuffW
+#define CharNext CharNextW
+#define CharNextEx CharNextExW
+#define CharPrev CharPrevW
+#define CharPrevEx CharPrevExW
+#define CharToOem CharToOemW
+#define CharToOemBuff CharToOemBuffW
+#define CharUpper CharUpperW
+#define CharUpperBuff CharUpperBuffW
+#define CopyAcceleratorTable CopyAcceleratorTableW
+#define CreateAcceleratorTable CreateAcceleratorTableW
+#define CreateDesktop CreateDesktopW
+#define CreateDialog CreateDialogW
+#define CreateDialogIndirect CreateDialogIndirectW
+#define CreateDialogIndirectParam CreateDialogIndirectParamW
+#define CreateDialogParam CreateDialogParamW
+#define CreateMDIWindow CreateMDIWindowW
+#define CreateWindow CreateWindowW
+#define CreateWindowEx CreateWindowExW
+#define CreateWindowStation CreateWindowStationW
+#define DefDlgProc DefDlgProcW
+#define DefFrameProc DefFrameProcW
+#define DefMDIChildProc DefMDIChildProcW
+#define DefWindowProc DefWindowProcW
+#define DialogBox DialogBoxW
+#define DialogBoxIndirect DialogBoxIndirectW
+#define DialogBoxIndirectParam DialogBoxIndirectParamW
+#define DialogBoxParam DialogBoxParamW
+#define DispatchMessage DispatchMessageW
+#define DlgDirList DlgDirListW
+#define DlgDirListComboBox DlgDirListComboBoxW
+#define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExW
+#define DlgDirSelectEx DlgDirSelectExW
+#define DrawState DrawStateW
+#define DrawText DrawTextW
+#define DrawTextEx DrawTextExW
+#define EnumDesktops EnumDesktopsW
+#define EnumDisplaySettings EnumDisplaySettingsW
+#define EnumProps EnumPropsW
+#define EnumPropsEx EnumPropsExW
+#define EnumWindowStations EnumWindowStationsW
+#define FindWindow FindWindowW
+#define FindWindowEx FindWindowExW
+#define GetClassInfo GetClassInfoW
+#define GetClassInfoEx GetClassInfoExW
+#define GetClassLong GetClassLongW
+#define GetClassName GetClassNameW
+#define GetClipboardFormatName GetClipboardFormatNameW
+#define GetDlgItemText GetDlgItemTextW
+#define GetKeyboardLayoutName GetKeyboardLayoutNameW
+#define GetKeyNameText GetKeyNameTextW
+#define GetMenuItemInfo GetMenuItemInfoW
+#define GetMenuString GetMenuStringW
+#define GetMessage GetMessageW
+#define GetMonitorInfo  GetMonitorInfoW
+#define GetProp GetPropW
+#define GetTabbedTextExtent GetTabbedTextExtentW
+#define GetUserObjectInformation GetUserObjectInformationW
+#define GetWindowLong GetWindowLongW
+#define GetWindowLongPtr GetWindowLongPtrW
+#define GetWindowText GetWindowTextW
+#define GetWindowTextLength GetWindowTextLengthW
+#define GetAltTabInfo GetAltTabInfoW
+#define GetWindowModuleFileName GetWindowModuleFileNameW
+#define GrayString GrayStringW
+#define InsertMenu InsertMenuW
+#define InsertMenuItem InsertMenuItemW
+#define IsCharAlpha IsCharAlphaW
+#define IsCharAlphaNumeric IsCharAlphaNumericW
+#define IsCharLower IsCharLowerW
+#define IsCharUpper IsCharUpperW
+#define IsDialogMessage IsDialogMessageW
+#define LoadAccelerators LoadAcceleratorsW
+#define LoadBitmap LoadBitmapW
+#define LoadCursor LoadCursorW
+#define LoadCursorFromFile LoadCursorFromFileW
+#define LoadIcon LoadIconW
+#define LoadImage LoadImageW
+#define LoadKeyboardLayout LoadKeyboardLayoutW
+#define LoadMenu LoadMenuW
+#define LoadMenuIndirect LoadMenuIndirectW
+#define LoadString LoadStringW
+#define MapVirtualKey MapVirtualKeyW
+#define MapVirtualKeyEx MapVirtualKeyExW
+#define MessageBox MessageBoxW
+#define MessageBoxEx MessageBoxExW
+#define MessageBoxIndirect MessageBoxIndirectW
+#define ModifyMenu ModifyMenuW
+#define OemToChar OemToCharW
+#define OemToCharBuff OemToCharBuffW
+#define OpenDesktop OpenDesktopW
+#define OpenWindowStation OpenWindowStationW
+#define PeekMessage PeekMessageW
+#define PostAppMessage PostAppMessageW
+#define PostMessage PostMessageW
+#define PostThreadMessage PostThreadMessageW
+#define RegisterClass RegisterClassW
+#define RegisterClassEx RegisterClassExW
+#define RegisterClipboardFormat RegisterClipboardFormatW
+#define RegisterWindowMessage RegisterWindowMessageW
+#define RemoveProp RemovePropW
+#define SendDlgItemMessage SendDlgItemMessageW
+#define SendMessage SendMessageW
+#define SendMessageCallback SendMessageCallbackW
+#define SendMessageTimeout SendMessageTimeoutW
+#define SendNotifyMessage SendNotifyMessageW
+#define SetClassLong SetClassLongW
+#define SetDlgItemText SetDlgItemTextW
+#define SetMenuItemInfo SetMenuItemInfoW
+#define SetProp SetPropW
+#define SetUserObjectInformation SetUserObjectInformationW
+#define SetWindowLong SetWindowLongW
+#define SetWindowLongPtr SetWindowLongPtrW
+#define SetWindowsHook SetWindowsHookW
+#define SetWindowsHookEx SetWindowsHookExW
+#define SetWindowText SetWindowTextW
+#define SystemParametersInfo SystemParametersInfoW
+#define TabbedTextOut TabbedTextOutW
+#define TranslateAccelerator TranslateAcceleratorW
+#define UnregisterClass UnregisterClassW
+#define VkKeyScan VkKeyScanW
+#define VkKeyScanEx VkKeyScanExW
+#define WinHelp WinHelpW
+#define wsprintf wsprintfW
+#define wvsprintf wvsprintfW
+#else
+#define EDITWORDBREAKPROC EDITWORDBREAKPROCA
+#define PROPENUMPROC PROPENUMPROCA
+#define PROPENUMPROCEX PROPENUMPROCEXA
+#define DEKSTOPENUMPROC DEKSTOPENUMPROCA
+#define WINSTAENUMPROC WINSTAENUMPROCA
+#define PROPENUMPROC PROPENUMPROCA
+#define PROPENUMPROCEX PROPENUMPROCEXA
+#define MAKEINTRESOURCE MAKEINTRESOURCEA
+typedef WNDCLASSA WNDCLASS,*LPWNDCLASS,*PWNDCLASS;
+typedef WNDCLASSEXA WNDCLASSEX,*LPWNDCLASSEX,*PWNDCLASSEX;
+typedef MENUITEMINFOA MENUITEMINFO,*LPMENUITEMINFO;
+typedef LPCMENUITEMINFOA LPCMENUITEMINFO;
+typedef MSGBOXPARAMSA MSGBOXPARAMS,*PMSGBOXPARAMS,*LPMSGBOXPARAMS;
+typedef HIGHCONTRASTA HIGHCONTRAST,*LPHIGHCONTRAST;
+typedef ICONMETRICSA ICONMETRICS,*LPICONMETRICS;
+typedef NONCLIENTMETRICSA NONCLIENTMETRICS,*LPNONCLIENTMETRICS;
+typedef SERIALKEYSA SERIALKEYS,*LPSERIALKEYS;
+typedef SOUNDSENTRYA SOUNDSENTRY,*LPSOUNDSENTRY;
+typedef CREATESTRUCTA CREATESTRUCT, *LPCREATESTRUCT;
+typedef CBT_CREATEWNDA CBT_CREATEWND, *LPCBT_CREATEWND;
+typedef MDICREATESTRUCTA MDICREATESTRUCT,*LPMDICREATESTRUCT;
+typedef MULTIKEYHELPA MULTIKEYHELP,*PMULTIKEYHELP,*LPMULTIKEYHELP;
+#define AppendMenu AppendMenuA
+#define CallWindowProc CallWindowProcA
+#define ChangeDisplaySettings ChangeDisplaySettingsA
+#define ChangeMenu ChangeMenuA
+#define CharLower CharLowerA
+#define CharLowerBuff CharLowerBuffA
+#define CharNext CharNextA
+#define CharNextEx CharNextExA
+#define CharPrev CharPrevA
+#define CharPrevEx CharPrevExA
+#define CharToOem CharToOemA
+#define CharToOemBuff CharToOemBuffA
+#define CharUpper CharUpperA
+#define CharUpperBuff CharUpperBuffA
+#define CopyAcceleratorTable CopyAcceleratorTableA
+#define CreateAcceleratorTable CreateAcceleratorTableA
+#define CreateDesktop CreateDesktopA
+#define CreateDialog CreateDialogA
+#define CreateDialogIndirect CreateDialogIndirectA
+#define CreateDialogIndirectParam CreateDialogIndirectParamA
+#define CreateDialogParam CreateDialogParamA
+#define CreateMDIWindow CreateMDIWindowA
+#define CreateWindow CreateWindowA
+#define CreateWindowEx CreateWindowExA
+#define CreateWindowStation CreateWindowStationA
+#define DefDlgProc DefDlgProcA
+#define DefFrameProc DefFrameProcA
+#define DefMDIChildProc DefMDIChildProcA
+#define DefWindowProc DefWindowProcA
+#define DialogBox DialogBoxA
+#define DialogBoxIndirect DialogBoxIndirectA
+#define DialogBoxIndirectParam DialogBoxIndirectParamA
+#define DialogBoxParam DialogBoxParamA
+#define DispatchMessage DispatchMessageA
+#define DlgDirList DlgDirListA
+#define DlgDirListComboBox DlgDirListComboBoxA
+#define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExA
+#define DlgDirSelectEx DlgDirSelectExA
+#define DrawState DrawStateA
+#define DrawText DrawTextA
+#define DrawTextEx DrawTextExA
+#define EnumDesktops EnumDesktopsA
+#define EnumDisplaySettings EnumDisplaySettingsA
+#define EnumProps EnumPropsA
+#define EnumPropsEx EnumPropsExA
+#define EnumWindowStations EnumWindowStationsA
+#define FindWindow FindWindowA
+#define FindWindowEx FindWindowExA
+#define GetClassInfo GetClassInfoA
+#define GetClassInfoEx GetClassInfoExA
+#define GetClassLong GetClassLongA
+#define GetClassName GetClassNameA
+#define GetClipboardFormatName GetClipboardFormatNameA
+#define GetDlgItemText GetDlgItemTextA
+#define GetKeyboardLayoutName GetKeyboardLayoutNameA
+#define GetKeyNameText GetKeyNameTextA
+#define GetMenuItemInfo GetMenuItemInfoA
+#define GetMenuString GetMenuStringA
+#define GetMessage GetMessageA
+#define GetMonitorInfo  GetMonitorInfoA
+#define GetProp GetPropA
+#define GetTabbedTextExtent GetTabbedTextExtentA
+#define GetUserObjectInformation GetUserObjectInformationA
+#define GetWindowLong GetWindowLongA
+#define GetWindowLongPtr GetWindowLongPtrA
+#define GetWindowText GetWindowTextA
+#define GetWindowTextLength GetWindowTextLengthA
+#define GetAltTabInfo GetAltTabInfoA
+#define GetWindowModuleFileName GetWindowModuleFileNameA
+#define GrayString GrayStringA
+#define InsertMenu InsertMenuA
+#define InsertMenuItem InsertMenuItemA
+#define IsCharAlpha IsCharAlphaA
+#define IsCharAlphaNumeric IsCharAlphaNumericA
+#define IsCharLower IsCharLowerA
+#define IsCharUpper IsCharUpperA
+#define IsDialogMessage IsDialogMessageA
+#define LoadAccelerators LoadAcceleratorsA
+#define LoadBitmap LoadBitmapA
+#define LoadCursor LoadCursorA
+#define LoadIcon LoadIconA
+#define LoadCursorFromFile LoadCursorFromFileA
+#define LoadImage LoadImageA
+#define LoadKeyboardLayout LoadKeyboardLayoutA
+#define LoadMenu LoadMenuA
+#define LoadMenuIndirect LoadMenuIndirectA
+#define LoadString LoadStringA
+#define MapVirtualKey MapVirtualKeyA
+#define MapVirtualKeyEx MapVirtualKeyExA
+#define MessageBox MessageBoxA
+#define MessageBoxEx MessageBoxExA
+#define MessageBoxIndirect MessageBoxIndirectA
+#define ModifyMenu ModifyMenuA
+#define OemToChar OemToCharA
+#define OemToCharBuff OemToCharBuffA
+#define OpenDesktop OpenDesktopA
+#define OpenWindowStation OpenWindowStationA
+#define PeekMessage PeekMessageA
+#define PostAppMessage PostAppMessageA
+#define PostMessage PostMessageA
+#define PostThreadMessage PostThreadMessageA
+#define RegisterClass RegisterClassA
+#define RegisterClassEx RegisterClassExA
+#define RegisterClipboardFormat RegisterClipboardFormatA
+#define RegisterWindowMessage RegisterWindowMessageA
+#define RemoveProp RemovePropA
+#define SendDlgItemMessage SendDlgItemMessageA
+#define SendMessage SendMessageA
+#define SendMessageCallback SendMessageCallbackA
+#define SendMessageTimeout SendMessageTimeoutA
+#define SendNotifyMessage SendNotifyMessageA
+#define SetClassLong SetClassLongA
+#define SetDlgItemText SetDlgItemTextA
+#define SetMenuItemInfo SetMenuItemInfoA
+#define SetProp SetPropA
+#define SetUserObjectInformation SetUserObjectInformationA
+#define SetWindowLong SetWindowLongA
+#define SetWindowLongPtr SetWindowLongPtrA
+#define SetWindowsHook SetWindowsHookA
+#define SetWindowsHookEx SetWindowsHookExA
+#define SetWindowText SetWindowTextA
+#define SystemParametersInfo SystemParametersInfoA
+#define TabbedTextOut TabbedTextOutA
+#define TranslateAccelerator TranslateAcceleratorA
+#define UnregisterClass UnregisterClassA
+#define VkKeyScan VkKeyScanA
+#define VkKeyScanEx VkKeyScanExA
+#define WinHelp WinHelpA
+#define wsprintf wsprintfA
+#define wvsprintf wvsprintfA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif /* _WINUSER_H */
diff --git a/Win32/bin/tcc/include/winapi/winver.h b/Win32/bin/tcc/include/winapi/winver.h
new file mode 100644
index 0000000..9e26302
--- /dev/null
+++ b/Win32/bin/tcc/include/winapi/winver.h
@@ -0,0 +1,133 @@
+#ifndef _WINVER_H
+#define _WINVER_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define VS_FILE_INFO RT_VERSION
+#define VS_VERSION_INFO 1
+#define VS_USER_DEFINED 100
+#define VS_FFI_SIGNATURE 0xFEEF04BD
+#define VS_FFI_STRUCVERSION 0x10000
+#define VS_FFI_FILEFLAGSMASK 0x3F
+#define VS_FF_DEBUG 1
+#define VS_FF_PRERELEASE 2
+#define VS_FF_PATCHED 4
+#define VS_FF_PRIVATEBUILD 8
+#define VS_FF_INFOINFERRED 16
+#define VS_FF_SPECIALBUILD 32
+#define VOS_UNKNOWN 0
+#define VOS_DOS 0x10000
+#define VOS_OS216 0x20000
+#define VOS_OS232 0x30000
+#define VOS_NT 0x40000
+#define VOS__BASE 0
+#define VOS__WINDOWS16 1
+#define VOS__PM16 2
+#define VOS__PM32 3
+#define VOS__WINDOWS32 4
+#define VOS_DOS_WINDOWS16 0x10001
+#define VOS_DOS_WINDOWS32 0x10004
+#define VOS_OS216_PM16 0x20002
+#define VOS_OS232_PM32 0x30003
+#define VOS_NT_WINDOWS32 0x40004
+#define VFT_UNKNOWN 0
+#define VFT_APP 1
+#define VFT_DLL 2
+#define VFT_DRV 3
+#define VFT_FONT 4
+#define VFT_VXD 5
+#define VFT_STATIC_LIB 7
+#define VFT2_UNKNOWN 0
+#define VFT2_DRV_PRINTER 1
+#define VFT2_DRV_KEYBOARD 2
+#define VFT2_DRV_LANGUAGE 3
+#define VFT2_DRV_DISPLAY 4
+#define VFT2_DRV_MOUSE 5
+#define VFT2_DRV_NETWORK 6
+#define VFT2_DRV_SYSTEM 7
+#define VFT2_DRV_INSTALLABLE 8
+#define VFT2_DRV_SOUND 9
+#define VFT2_DRV_COMM 10
+#define VFT2_DRV_INPUTMETHOD 11
+#define VFT2_FONT_RASTER 1
+#define VFT2_FONT_VECTOR 2
+#define VFT2_FONT_TRUETYPE 3
+#define VFFF_ISSHAREDFILE 1
+#define VFF_CURNEDEST 1
+#define VFF_FILEINUSE 2
+#define VFF_BUFFTOOSMALL 4
+#define VIFF_FORCEINSTALL 1
+#define VIFF_DONTDELETEOLD 2
+#define VIF_TEMPFILE 1
+#define VIF_MISMATCH 2
+#define VIF_SRCOLD 4
+#define VIF_DIFFLANG 8
+#define VIF_DIFFCODEPG 16
+#define VIF_DIFFTYPE 32
+#define VIF_WRITEPROT 64
+#define VIF_FILEINUSE 128
+#define VIF_OUTOFSPACE 256
+#define VIF_ACCESSVIOLATION 512
+#define VIF_SHARINGVIOLATION 1024
+#define VIF_CANNOTCREATE 2048
+#define VIF_CANNOTDELETE 4096
+#define VIF_CANNOTRENAME 8192
+#define VIF_CANNOTDELETECUR 16384
+#define VIF_OUTOFMEMORY 32768
+#define VIF_CANNOTREADSRC  65536
+#define VIF_CANNOTREADDST 0x20000
+#define VIF_BUFFTOOSMALL 0x40000
+#ifndef RC_INVOKED
+typedef struct tagVS_FIXEDFILEINFO {
+	DWORD dwSignature;
+	DWORD dwStrucVersion;
+	DWORD dwFileVersionMS;
+	DWORD dwFileVersionLS;
+	DWORD dwProductVersionMS;
+	DWORD dwProductVersionLS;
+	DWORD dwFileFlagsMask;
+	DWORD dwFileFlags;
+	DWORD dwFileOS;
+	DWORD dwFileType;
+	DWORD dwFileSubtype;
+	DWORD dwFileDateMS;
+	DWORD dwFileDateLS;
+} VS_FIXEDFILEINFO;
+DWORD WINAPI VerFindFileA(DWORD,LPSTR,LPSTR,LPSTR,LPSTR,PUINT,LPSTR,PUINT);
+DWORD WINAPI VerFindFileW(DWORD,LPWSTR,LPWSTR,LPWSTR,LPWSTR,PUINT,LPWSTR,PUINT);
+DWORD WINAPI VerInstallFileA(DWORD,LPSTR,LPSTR,LPSTR,LPSTR,LPSTR,LPSTR,PUINT);
+DWORD WINAPI VerInstallFileW(DWORD,LPWSTR,LPWSTR,LPWSTR,LPWSTR,LPWSTR,LPWSTR,PUINT);
+DWORD WINAPI GetFileVersionInfoSizeA(LPSTR,PDWORD);
+DWORD WINAPI GetFileVersionInfoSizeW(LPWSTR,PDWORD);
+BOOL WINAPI GetFileVersionInfoA(LPSTR,DWORD,DWORD,PVOID);
+BOOL WINAPI GetFileVersionInfoW(LPWSTR,DWORD,DWORD,PVOID);
+DWORD WINAPI VerLanguageNameA(DWORD,LPSTR,DWORD);
+DWORD WINAPI VerLanguageNameW(DWORD,LPWSTR,DWORD);
+BOOL WINAPI VerQueryValueA(PCVOID,LPSTR,PVOID*,PUINT);
+BOOL WINAPI VerQueryValueW(PCVOID,LPWSTR,PVOID*,PUINT);
+#ifdef UNICODE
+#define VerFindFile VerFindFileW
+#define VerQueryValue VerQueryValueW
+#define VerInstallFile VerInstallFileW
+#define GetFileVersionInfoSize GetFileVersionInfoSizeW
+#define GetFileVersionInfo GetFileVersionInfoW
+#define VerLanguageName VerLanguageNameW
+#define VerQueryValue VerQueryValueW
+#else
+#define VerQueryValue VerQueryValueA
+#define VerFindFile VerFindFileA
+#define VerInstallFile VerInstallFileA
+#define GetFileVersionInfoSize GetFileVersionInfoSizeA
+#define GetFileVersionInfo GetFileVersionInfoA
+#define VerLanguageName VerLanguageNameA
+#define VerQueryValue VerQueryValueA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/Win32/bin/tcc/lib/gdi32.def b/Win32/bin/tcc/lib/gdi32.def
new file mode 100644
index 0000000..ffc2df5
--- /dev/null
+++ b/Win32/bin/tcc/lib/gdi32.def
@@ -0,0 +1,337 @@
+LIBRARY gdi32.dll
+
+EXPORTS
+AbortDoc
+AbortPath
+AddFontResourceA
+AddFontResourceW
+AngleArc
+AnimatePalette
+Arc
+ArcTo
+BeginPath
+BitBlt
+ByeByeGDI
+CancelDC
+CheckColorsInGamut
+ChoosePixelFormat
+Chord
+CloseEnhMetaFile
+CloseFigure
+CloseMetaFile
+ColorCorrectPalette
+ColorMatchToTarget
+CombineRgn
+CombineTransform
+CopyEnhMetaFileA
+CopyEnhMetaFileW
+CopyMetaFileA
+CopyMetaFileW
+CreateBitmap
+CreateBitmapIndirect
+CreateBrushIndirect
+CreateColorSpaceA
+CreateColorSpaceW
+CreateCompatibleBitmap
+CreateCompatibleDC
+CreateDCA
+CreateDCW
+CreateDIBPatternBrush
+CreateDIBPatternBrushPt
+CreateDIBSection
+CreateDIBitmap
+CreateDiscardableBitmap
+CreateEllipticRgn
+CreateEllipticRgnIndirect
+CreateEnhMetaFileA
+CreateEnhMetaFileW
+CreateFontA
+CreateFontIndirectA
+CreateFontIndirectW
+CreateFontW
+CreateHalftonePalette
+CreateHatchBrush
+CreateICA
+CreateICW
+CreateMetaFileA
+CreateMetaFileW
+CreatePalette
+CreatePatternBrush
+CreatePen
+CreatePenIndirect
+CreatePolyPolygonRgn
+CreatePolygonRgn
+CreateRectRgn
+CreateRectRgnIndirect
+CreateRoundRectRgn
+CreateScalableFontResourceA
+CreateScalableFontResourceW
+CreateSolidBrush
+DPtoLP
+DeleteColorSpace
+DeleteDC
+DeleteEnhMetaFile
+DeleteMetaFile
+DeleteObject
+DescribePixelFormat
+DeviceCapabilitiesEx
+DeviceCapabilitiesExA
+DeviceCapabilitiesExW
+DrawEscape
+Ellipse
+EnableEUDC
+EndDoc
+EndPage
+EndPath
+EnumEnhMetaFile
+EnumFontFamiliesA
+EnumFontFamiliesExA
+EnumFontFamiliesExW
+EnumFontFamiliesW
+EnumFontsA
+EnumFontsW
+EnumICMProfilesA
+EnumICMProfilesW
+EnumMetaFile
+EnumObjects
+EqualRgn
+Escape
+ExcludeClipRect
+ExtCreatePen
+ExtCreateRegion
+ExtEscape
+ExtFloodFill
+ExtSelectClipRgn
+ExtTextOutA
+ExtTextOutW
+FillPath
+FillRgn
+FixBrushOrgEx
+FlattenPath
+FloodFill
+FrameRgn
+GdiComment
+GdiFlush
+GdiGetBatchLimit
+GdiPlayDCScript
+GdiPlayJournal
+GdiPlayScript
+GdiSetBatchLimit
+GetArcDirection
+GetAspectRatioFilterEx
+GetBitmapBits
+GetBitmapDimensionEx
+GetBkColor
+GetBkMode
+GetBoundsRect
+GetBrushOrgEx
+GetCharABCWidthsA
+GetCharABCWidthsFloatA
+GetCharABCWidthsFloatW
+GetCharABCWidthsW
+GetCharWidth32A
+GetCharWidth32W
+GetCharWidthA
+GetCharWidthFloatA
+GetCharWidthFloatW
+GetCharWidthW
+GetCharacterPlacementA
+GetCharacterPlacementW
+GetClipBox
+GetClipRgn
+GetColorAdjustment
+GetColorSpace
+GetCurrentObject
+GetCurrentPositionEx
+GetDCOrgEx
+GetDIBColorTable
+GetDIBits
+GetDeviceCaps
+GetDeviceGammaRamp
+GetEnhMetaFileA
+GetEnhMetaFileBits
+GetEnhMetaFileDescriptionA
+GetEnhMetaFileDescriptionW
+GetEnhMetaFileHeader
+GetEnhMetaFilePaletteEntries
+GetEnhMetaFileW
+GetFontData
+GetFontLanguageInfo
+GetFontResourceInfo
+GetGlyphOutline
+GetGlyphOutlineA
+GetGlyphOutlineW
+GetGraphicsMode
+GetICMProfileA
+GetICMProfileW
+GetKerningPairs
+GetKerningPairsA
+GetKerningPairsW
+GetLayout
+GetLogColorSpaceA
+GetLogColorSpaceW
+GetMapMode
+GetMetaFileA
+GetMetaFileBitsEx
+GetMetaFileW
+GetMetaRgn
+GetMiterLimit
+GetNearestColor
+GetNearestPaletteIndex
+GetObjectA
+GetObjectType
+GetObjectW
+GetOutlineTextMetricsA
+GetOutlineTextMetricsW
+GetPaletteEntries
+GetPath
+GetPixel
+GetPixelFormat
+GetPolyFillMode
+GetROP2
+GetRandomRgn
+GetRasterizerCaps
+GetRegionData
+GetRgnBox
+GetStockObject
+GetStretchBltMode
+GetSystemPaletteEntries
+GetSystemPaletteUse
+GetTextAlign
+GetTextCharacterExtra
+GetTextCharset
+GetTextCharsetInfo
+GetTextColor
+GetTextExtentExPointA
+GetTextExtentExPointW
+GetTextExtentPoint32A
+GetTextExtentPoint32W
+GetTextExtentPointA
+GetTextExtentPointW
+GetTextFaceA
+GetTextFaceW
+GetTextMetricsA
+GetTextMetricsW
+GetViewportExtEx
+GetViewportOrgEx
+GetWinMetaFileBits
+GetWindowExtEx
+GetWindowOrgEx
+GetWorldTransform
+IntersectClipRect
+InvertRgn
+LPtoDP
+LineDDA
+LineTo
+MaskBlt
+ModifyWorldTransform
+MoveToEx
+OffsetClipRgn
+OffsetRgn
+OffsetViewportOrgEx
+OffsetWindowOrgEx
+PaintRgn
+PatBlt
+PathToRegion
+Pie
+PlayEnhMetaFile
+PlayEnhMetaFileRecord
+PlayMetaFile
+PlayMetaFileRecord
+PlgBlt
+PolyBezier
+PolyBezierTo
+PolyDraw
+PolyPolygon
+PolyPolyline
+PolyTextOutA
+PolyTextOutW
+Polygon
+Polyline
+PolylineTo
+PtInRegion
+PtVisible
+RealizePalette
+RectInRegion
+RectVisible
+Rectangle
+RemoveFontResourceA
+RemoveFontResourceW
+ResetDCA
+ResetDCW
+ResizePalette
+RestoreDC
+RoundRect
+SaveDC
+ScaleViewportExtEx
+ScaleWindowExtEx
+SelectClipPath
+SelectClipRgn
+SelectObject
+SelectPalette
+SetAbortProc
+SetArcDirection
+SetBitmapBits
+SetBitmapDimensionEx
+SetBkColor
+SetBkMode
+SetBoundsRect
+SetBrushOrgEx
+SetColorAdjustment
+SetColorSpace
+SetDIBColorTable
+SetDIBits
+SetDIBitsToDevice
+SetDeviceGammaRamp
+SetEnhMetaFileBits
+SetFontEnumeration
+SetGraphicsMode
+SetICMMode
+SetICMProfileA
+SetICMProfileW
+SetLayout
+SetMagicColors
+SetMapMode
+SetMapperFlags
+SetMetaFileBitsEx
+SetMetaRgn
+SetMiterLimit
+SetObjectOwner
+SetPaletteEntries
+SetPixel
+SetPixelFormat
+SetPixelV
+SetPolyFillMode
+SetROP2
+SetRectRgn
+SetStretchBltMode
+SetSystemPaletteUse
+SetTextAlign
+SetTextCharacterExtra
+SetTextColor
+SetTextJustification
+SetViewportExtEx
+SetViewportOrgEx
+SetWinMetaFileBits
+SetWindowExtEx
+SetWindowOrgEx
+SetWorldTransform
+StartDocA
+StartDocW
+StartPage
+StretchBlt
+StretchDIBits
+StrokeAndFillPath
+StrokePath
+SwapBuffers
+TextOutA
+TextOutW
+TranslateCharsetInfo
+UnrealizeObject
+UpdateColors
+UpdateICMRegKeyA
+UpdateICMRegKeyW
+WidenPath
+gdiPlaySpoolStream
+pfnRealizePalette
+pfnSelectPalette
diff --git a/Win32/bin/tcc/lib/kernel32.def b/Win32/bin/tcc/lib/kernel32.def
new file mode 100644
index 0000000..bfbc039
--- /dev/null
+++ b/Win32/bin/tcc/lib/kernel32.def
@@ -0,0 +1,763 @@
+LIBRARY kernel32.dll
+
+EXPORTS
+AddAtomA
+AddAtomW
+AllocConsole
+AllocLSCallback
+AllocSLCallback
+AreFileApisANSI
+BackupRead
+BackupSeek
+BackupWrite
+Beep
+BeginUpdateResourceA
+BeginUpdateResourceW
+BuildCommDCBA
+BuildCommDCBAndTimeoutsA
+BuildCommDCBAndTimeoutsW
+BuildCommDCBW
+CallNamedPipeA
+CallNamedPipeW
+Callback12
+Callback16
+Callback20
+Callback24
+Callback28
+Callback32
+Callback36
+Callback4
+Callback40
+Callback44
+Callback48
+Callback52
+Callback56
+Callback60
+Callback64
+Callback8
+CancelDeviceWakeupRequest
+CancelIo
+CancelWaitableTimer
+ClearCommBreak
+ClearCommError
+CloseHandle
+CloseProfileUserMapping
+CloseSystemHandle
+CommConfigDialogA
+CommConfigDialogW
+CompareFileTime
+CompareStringA
+CompareStringW
+ConnectNamedPipe
+ContinueDebugEvent
+ConvertDefaultLocale
+ConvertThreadToFiber
+ConvertToGlobalHandle
+CopyFileA
+CopyFileExA
+CopyFileExW
+CopyFileW
+CreateConsoleScreenBuffer
+CreateDirectoryA
+CreateDirectoryExA
+CreateDirectoryExW
+CreateDirectoryW
+CreateEventA
+CreateEventW
+CreateFiber
+CreateFileA
+CreateFileMappingA
+CreateFileMappingW
+CreateFileW
+CreateIoCompletionPort
+CreateKernelThread
+CreateMailslotA
+CreateMailslotW
+CreateMutexA
+CreateMutexW
+CreateNamedPipeA
+CreateNamedPipeW
+CreatePipe
+CreateProcessA
+CreateProcessW
+CreateRemoteThread
+CreateSemaphoreA
+CreateSemaphoreW
+CreateSocketHandle
+CreateTapePartition
+CreateThread
+CreateToolhelp32Snapshot
+CreateWaitableTimerA
+CreateWaitableTimerW
+DebugActiveProcess
+DebugBreak
+DefineDosDeviceA
+DefineDosDeviceW
+DeleteAtom
+DeleteCriticalSection
+DeleteFiber
+DeleteFileA
+DeleteFileW
+DeviceIoControl
+DisableThreadLibraryCalls
+DisconnectNamedPipe
+DosDateTimeToFileTime
+DuplicateHandle
+EndUpdateResourceA
+EndUpdateResourceW
+EnterCriticalSection
+EnumCalendarInfoA
+EnumCalendarInfoExA
+EnumCalendarInfoExW
+EnumCalendarInfoW
+EnumDateFormatsA
+EnumDateFormatsExA
+EnumDateFormatsExW
+EnumDateFormatsW
+EnumLanguageGroupLocalesA
+EnumLanguageGroupLocalesW
+EnumResourceLanguagesA
+EnumResourceLanguagesW
+EnumResourceNamesA
+EnumResourceNamesW
+EnumResourceTypesA
+EnumResourceTypesW
+EnumSystemCodePagesA
+EnumSystemCodePagesW
+EnumSystemGeoID
+EnumSystemLanguageGroupsA
+EnumSystemLanguageGroupsW
+EnumSystemLocalesA
+EnumSystemLocalesW
+EnumTimeFormatsA
+EnumTimeFormatsW
+EnumUILanguagesA
+EnumUILanguagesW
+EraseTape
+EscapeCommFunction
+ExitProcess
+ExitThread
+ExpandEnvironmentStringsA
+ExpandEnvironmentStringsW
+FT_Exit0
+FT_Exit12
+FT_Exit16
+FT_Exit20
+FT_Exit24
+FT_Exit28
+FT_Exit32
+FT_Exit36
+FT_Exit4
+FT_Exit40
+FT_Exit44
+FT_Exit48
+FT_Exit52
+FT_Exit56
+FT_Exit8
+FT_Prolog
+FT_Thunk
+FatalAppExitA
+FatalAppExitW
+FatalExit
+FileTimeToDosDateTime
+FileTimeToLocalFileTime
+FileTimeToSystemTime
+FillConsoleOutputAttribute
+FillConsoleOutputCharacterA
+FillConsoleOutputCharacterW
+FindAtomA
+FindAtomW
+FindClose
+FindCloseChangeNotification
+FindFirstChangeNotificationA
+FindFirstChangeNotificationW
+FindFirstFileA
+FindFirstFileExA
+FindFirstFileExW
+FindFirstFileW
+FindNextChangeNotification
+FindNextFileA
+FindNextFileW
+FindResourceA
+FindResourceExA
+FindResourceExW
+FindResourceW
+FlushConsoleInputBuffer
+FlushFileBuffers
+FlushInstructionCache
+FlushViewOfFile
+FoldStringA
+FoldStringW
+FormatMessageA
+FormatMessageW
+FreeConsole
+FreeEnvironmentStringsA
+FreeEnvironmentStringsW
+FreeLSCallback
+FreeLibrary
+FreeLibraryAndExitThread
+FreeResource
+FreeSLCallback
+GenerateConsoleCtrlEvent
+GetACP
+GetAtomNameA
+GetAtomNameW
+GetBinaryType
+GetBinaryTypeA
+GetBinaryTypeW
+GetCPInfo
+GetCPInfoExA
+GetCPInfoExW
+GetCalendarInfoA
+GetCalendarInfoW
+GetCommConfig
+GetCommMask
+GetCommModemStatus
+GetCommProperties
+GetCommState
+GetCommTimeouts
+GetCommandLineA
+GetCommandLineW
+GetCompressedFileSizeA
+GetCompressedFileSizeW
+GetComputerNameA
+GetComputerNameW
+GetConsoleCP
+GetConsoleCursorInfo
+GetConsoleMode
+GetConsoleOutputCP
+GetConsoleScreenBufferInfo
+GetConsoleTitleA
+GetConsoleTitleW
+GetCurrencyFormatA
+GetCurrencyFormatW
+GetCurrentDirectoryA
+GetCurrentDirectoryW
+GetCurrentProcess
+GetCurrentProcessId
+GetCurrentThread
+GetCurrentThreadId
+GetDateFormatA
+GetDateFormatW
+GetDaylightFlag
+GetDefaultCommConfigA
+GetDefaultCommConfigW
+GetDevicePowerState
+GetDiskFreeSpaceA
+GetDiskFreeSpaceExA
+GetDiskFreeSpaceExW
+GetDiskFreeSpaceW
+GetDriveTypeA
+GetDriveTypeW
+GetEnvironmentStrings
+GetEnvironmentStringsA
+GetEnvironmentStringsW
+GetEnvironmentVariableA
+GetEnvironmentVariableW
+GetErrorMode
+GetExitCodeProcess
+GetExitCodeThread
+GetFileAttributesA
+GetFileAttributesExA
+GetFileAttributesExW
+GetFileAttributesW
+GetFileInformationByHandle
+GetFileSize
+GetFileTime
+GetFileType
+GetFullPathNameA
+GetFullPathNameW
+GetGeoInfoA
+GetGeoInfoW
+GetHandleContext
+GetHandleInformation
+GetLSCallbackTarget
+GetLSCallbackTemplate
+GetLargestConsoleWindowSize
+GetLastError
+GetLocalTime
+GetLocaleInfoA
+GetLocaleInfoW
+GetLogicalDriveStringsA
+GetLogicalDriveStringsW
+GetLogicalDrives
+GetLongPathNameA
+GetLongPathNameW
+GetMailslotInfo
+GetModuleFileNameA
+GetModuleFileNameW
+GetModuleHandleA
+GetModuleHandleW
+GetNamedPipeHandleStateA
+GetNamedPipeHandleStateW
+GetNamedPipeInfo
+GetNumberFormatA
+GetNumberFormatW
+GetNumberOfConsoleInputEvents
+GetNumberOfConsoleMouseButtons
+GetOEMCP
+GetOverlappedResult
+GetPriorityClass
+GetPrivateProfileIntA
+GetPrivateProfileIntW
+GetPrivateProfileSectionA
+GetPrivateProfileSectionNamesA
+GetPrivateProfileSectionNamesW
+GetPrivateProfileSectionW
+GetPrivateProfileStringA
+GetPrivateProfileStringW
+GetPrivateProfileStructA
+GetPrivateProfileStructW
+GetProcAddress
+GetProcessAffinityMask
+GetProcessFlags
+GetProcessHeap
+GetProcessHeaps
+GetProcessPriorityBoost
+GetProcessShutdownParameters
+GetProcessTimes
+GetProcessVersion
+GetProcessWorkingSetSize
+GetProductName
+GetProfileIntA
+GetProfileIntW
+GetProfileSectionA
+GetProfileSectionW
+GetProfileStringA
+GetProfileStringW
+GetQueuedCompletionStatus
+GetSLCallbackTarget
+GetSLCallbackTemplate
+GetShortPathNameA
+GetShortPathNameW
+GetStartupInfoA
+GetStartupInfoW
+GetStdHandle
+GetStringTypeA
+GetStringTypeExA
+GetStringTypeExW
+GetStringTypeW
+GetSystemDefaultLCID
+GetSystemDefaultLangID
+GetSystemDefaultUILanguage
+GetSystemDirectoryA
+GetSystemDirectoryW
+GetSystemInfo
+GetSystemPowerStatus
+GetSystemTime
+GetSystemTimeAdjustment
+GetSystemTimeAsFileTime
+GetTapeParameters
+GetTapePosition
+GetTapeStatus
+GetTempFileNameA
+GetTempFileNameW
+GetTempPathA
+GetTempPathW
+GetThreadContext
+GetThreadLocale
+GetThreadPriority
+GetThreadPriorityBoost
+GetThreadSelectorEntry
+GetThreadTimes
+GetTickCount
+GetTimeFormatA
+GetTimeFormatW
+GetTimeZoneInformation
+GetUserDefaultLCID
+GetUserDefaultLangID
+GetUserDefaultUILanguage
+GetUserGeoID
+GetVersion
+GetVersionExA
+GetVersionExW
+GetVolumeInformationA
+GetVolumeInformationW
+GetWindowsDirectoryA
+GetWindowsDirectoryW
+GetWriteWatch
+GlobalAddAtomA
+GlobalAddAtomW
+GlobalAlloc
+GlobalCompact
+GlobalDeleteAtom
+GlobalFindAtomA
+GlobalFindAtomW
+GlobalFix
+GlobalFlags
+GlobalFree
+GlobalGetAtomNameA
+GlobalGetAtomNameW
+GlobalHandle
+GlobalLock
+GlobalMemoryStatus
+GlobalReAlloc
+GlobalSize
+GlobalUnWire
+GlobalUnfix
+GlobalUnlock
+GlobalWire
+Heap32First
+Heap32ListFirst
+Heap32ListNext
+Heap32Next
+HeapAlloc
+HeapCompact
+HeapCreate
+HeapDestroy
+HeapFree
+HeapLock
+HeapReAlloc
+HeapSetFlags
+HeapSize
+HeapUnlock
+HeapValidate
+HeapWalk
+InitAtomTable
+InitializeCriticalSection
+InitializeCriticalSectionAndSpinCount
+InterlockedCompareExchange
+InterlockedDecrement
+InterlockedExchange
+InterlockedExchangeAdd
+InterlockedIncrement
+InvalidateNLSCache
+IsBadCodePtr
+IsBadHugeReadPtr
+IsBadHugeWritePtr
+IsBadReadPtr
+IsBadStringPtrA
+IsBadStringPtrW
+IsBadWritePtr
+IsDBCSLeadByte
+IsDBCSLeadByteEx
+IsDebuggerPresent
+IsLSCallback
+IsProcessorFeaturePresent
+IsSLCallback
+IsSystemResumeAutomatic
+IsValidCodePage
+IsValidLanguageGroup
+IsValidLocale
+K32Thk1632Epilog
+K32Thk1632Prolog
+K32_NtCreateFile
+K32_RtlNtStatusToDosError
+LCMapStringA
+LCMapStringW
+LeaveCriticalSection
+LoadLibraryA
+LoadLibraryExA
+LoadLibraryExW
+LoadLibraryW
+LoadModule
+LoadResource
+LocalAlloc
+LocalCompact
+LocalFileTimeToFileTime
+LocalFlags
+LocalFree
+LocalHandle
+LocalLock
+LocalReAlloc
+LocalShrink
+LocalSize
+LocalUnlock
+LockFile
+LockFileEx
+LockResource
+MakeCriticalSectionGlobal
+MapHInstLS
+MapHInstLS_PN
+MapHInstSL
+MapHInstSL_PN
+MapHModuleLS
+MapHModuleSL
+MapLS
+MapSL
+MapSLFix
+MapViewOfFile
+MapViewOfFileEx
+Module32First
+Module32Next
+MoveFileA
+MoveFileExA
+MoveFileExW
+MoveFileW
+MulDiv
+MultiByteToWideChar
+NotifyNLSUserCache
+OpenEventA
+OpenEventW
+OpenFile
+OpenFileMappingA
+OpenFileMappingW
+OpenMutexA
+OpenMutexW
+OpenProcess
+OpenProfileUserMapping
+OpenSemaphoreA
+OpenSemaphoreW
+OpenThread
+OpenVxDHandle
+OpenWaitableTimerA
+OpenWaitableTimerW
+OutputDebugStringA
+OutputDebugStringW
+PeekConsoleInputA
+PeekConsoleInputW
+PeekNamedPipe
+PostQueuedCompletionStatus
+PrepareTape
+Process32First
+Process32Next
+PulseEvent
+PurgeComm
+QT_Thunk
+QueryDosDeviceA
+QueryDosDeviceW
+QueryNumberOfEventLogRecords
+QueryOldestEventLogRecord
+QueryPerformanceCounter
+QueryPerformanceFrequency
+QueueUserAPC
+RaiseException
+ReadConsoleA
+ReadConsoleInputA
+ReadConsoleInputW
+ReadConsoleOutputA
+ReadConsoleOutputAttribute
+ReadConsoleOutputCharacterA
+ReadConsoleOutputCharacterW
+ReadConsoleOutputW
+ReadConsoleW
+ReadDirectoryChangesW
+ReadFile
+ReadFileEx
+ReadFileScatter
+ReadProcessMemory
+RegisterServiceProcess
+RegisterSysMsgHandler
+ReinitializeCriticalSection
+ReleaseMutex
+ReleaseSemaphore
+RemoveDirectoryA
+RemoveDirectoryW
+RequestDeviceWakeup
+RequestWakeupLatency
+ResetEvent
+ResetNLSUserInfoCache
+ResetWriteWatch
+ResumeThread
+RtlFillMemory
+RtlMoveMemory
+RtlUnwind
+RtlZeroMemory
+SMapLS
+SMapLS_IP_EBP_12
+SMapLS_IP_EBP_16
+SMapLS_IP_EBP_20
+SMapLS_IP_EBP_24
+SMapLS_IP_EBP_28
+SMapLS_IP_EBP_32
+SMapLS_IP_EBP_36
+SMapLS_IP_EBP_40
+SMapLS_IP_EBP_8
+SUnMapLS
+SUnMapLS_IP_EBP_12
+SUnMapLS_IP_EBP_16
+SUnMapLS_IP_EBP_20
+SUnMapLS_IP_EBP_24
+SUnMapLS_IP_EBP_28
+SUnMapLS_IP_EBP_32
+SUnMapLS_IP_EBP_36
+SUnMapLS_IP_EBP_40
+SUnMapLS_IP_EBP_8
+ScrollConsoleScreenBufferA
+ScrollConsoleScreenBufferW
+SearchPathA
+SearchPathW
+SetCalendarInfoA
+SetCalendarInfoW
+SetCommBreak
+SetCommConfig
+SetCommMask
+SetCommState
+SetCommTimeouts
+SetComputerNameA
+SetComputerNameW
+SetConsoleActiveScreenBuffer
+SetConsoleCP
+SetConsoleCtrlHandler
+SetConsoleCursorInfo
+SetConsoleCursorPosition
+SetConsoleMode
+SetConsoleOutputCP
+SetConsoleScreenBufferSize
+SetConsoleTextAttribute
+SetConsoleTitleA
+SetConsoleTitleW
+SetConsoleWindowInfo
+SetCriticalSectionSpinCount
+SetCurrentDirectoryA
+SetCurrentDirectoryW
+SetDaylightFlag
+SetDefaultCommConfigA
+SetDefaultCommConfigW
+SetEndOfFile
+SetEnvironmentVariableA
+SetEnvironmentVariableW
+SetErrorMode
+SetEvent
+SetFileApisToANSI
+SetFileApisToOEM
+SetFileAttributesA
+SetFileAttributesW
+SetFilePointer
+SetFileTime
+SetHandleContext
+SetHandleCount
+SetHandleInformation
+SetLastError
+SetLocalTime
+SetLocaleInfoA
+SetLocaleInfoW
+SetMailslotInfo
+SetMessageWaitingIndicator
+SetNamedPipeHandleState
+SetPriorityClass
+SetProcessAffinityMask
+SetProcessPriorityBoost
+SetProcessShutdownParameters
+SetProcessWorkingSetSize
+SetStdHandle
+SetSystemPowerState
+SetSystemTime
+SetSystemTimeAdjustment
+SetTapeParameters
+SetTapePosition
+SetThreadAffinityMask
+SetThreadContext
+SetThreadExecutionState
+SetThreadIdealProcessor
+SetThreadLocale
+SetThreadPriority
+SetThreadPriorityBoost
+SetTimeZoneInformation
+SetUnhandledExceptionFilter
+SetUserGeoID
+SetVolumeLabelA
+SetVolumeLabelW
+SetWaitableTimer
+SetupComm
+SignalObjectAndWait
+SignalSysMsgHandlers
+SizeofResource
+Sleep
+SleepEx
+SuspendThread
+SwitchToFiber
+SwitchToThread
+SystemTimeToFileTime
+SystemTimeToTzSpecificLocalTime
+TerminateProcess
+TerminateThread
+Thread32First
+Thread32Next
+ThunkConnect32
+TlsAlloc
+TlsAllocInternal
+TlsFree
+TlsFreeInternal
+TlsGetValue
+TlsSetValue
+Toolhelp32ReadProcessMemory
+TransactNamedPipe
+TransmitCommChar
+TryEnterCriticalSection
+UTRegister
+UTUnRegister
+UnMapLS
+UnMapSLFixArray
+UnhandledExceptionFilter
+UninitializeCriticalSection
+UnlockFile
+UnlockFileEx
+UnmapViewOfFile
+UpdateResourceA
+UpdateResourceW
+VerLanguageNameA
+VerLanguageNameW
+VirtualAlloc
+VirtualAllocEx
+VirtualFree
+VirtualFreeEx
+VirtualLock
+VirtualProtect
+VirtualProtectEx
+VirtualQuery
+VirtualQueryEx
+VirtualUnlock
+WaitCommEvent
+WaitForDebugEvent
+WaitForMultipleObjects
+WaitForMultipleObjectsEx
+WaitForSingleObject
+WaitForSingleObjectEx
+WaitNamedPipeA
+WaitNamedPipeW
+WideCharToMultiByte
+WinExec
+WriteConsoleA
+WriteConsoleInputA
+WriteConsoleInputW
+WriteConsoleOutputA
+WriteConsoleOutputAttribute
+WriteConsoleOutputCharacterA
+WriteConsoleOutputCharacterW
+WriteConsoleOutputW
+WriteConsoleW
+WriteFile
+WriteFileEx
+WriteFileGather
+WritePrivateProfileSectionA
+WritePrivateProfileSectionW
+WritePrivateProfileStringA
+WritePrivateProfileStringW
+WritePrivateProfileStructA
+WritePrivateProfileStructW
+WriteProcessMemory
+WriteProfileSectionA
+WriteProfileSectionW
+WriteProfileStringA
+WriteProfileStringW
+WriteTapemark
+_DebugOut
+_DebugPrintf
+_hread
+_hwrite
+_lclose
+_lcreat
+_llseek
+_lopen
+_lread
+_lwrite
+dprintf
+lstrcat
+lstrcatA
+lstrcatW
+lstrcmp
+lstrcmpA
+lstrcmpW
+lstrcmpi
+lstrcmpiA
+lstrcmpiW
+lstrcpy
+lstrcpyA
+lstrcpyW
+lstrcpyn
+lstrcpynA
+lstrcpynW
+lstrlen
+lstrlenA
+lstrlenW
diff --git a/Win32/bin/tcc/lib/libtcc1.a b/Win32/bin/tcc/lib/libtcc1.a
new file mode 100644
index 0000000..ee55436
Binary files /dev/null and b/Win32/bin/tcc/lib/libtcc1.a differ
diff --git a/Win32/bin/tcc/lib/msvcrt.def b/Win32/bin/tcc/lib/msvcrt.def
new file mode 100644
index 0000000..5bb930a
--- /dev/null
+++ b/Win32/bin/tcc/lib/msvcrt.def
@@ -0,0 +1,782 @@
+LIBRARY msvcrt.dll
+
+EXPORTS
+$I10_OUTPUT
+??0__non_rtti_object@@QAE at ABV0@@Z
+??0__non_rtti_object@@QAE at PBD@Z
+??0bad_cast@@QAE at ABQBD@Z
+??0bad_cast@@QAE at ABV0@@Z
+??0bad_typeid@@QAE at ABV0@@Z
+??0bad_typeid@@QAE at PBD@Z
+??0exception@@QAE at ABQBD@Z
+??0exception@@QAE at ABV0@@Z
+??0exception@@QAE at XZ
+??1__non_rtti_object@@UAE at XZ
+??1bad_cast@@UAE at XZ
+??1bad_typeid@@UAE at XZ
+??1exception@@UAE at XZ
+??1type_info@@UAE at XZ
+??2 at YAPAXI@Z
+??3 at YAXPAX@Z
+??4__non_rtti_object@@QAEAAV0 at ABV0@@Z
+??4bad_cast@@QAEAAV0 at ABV0@@Z
+??4bad_typeid@@QAEAAV0 at ABV0@@Z
+??4exception@@QAEAAV0 at ABV0@@Z
+??8type_info@@QBEHABV0@@Z
+??9type_info@@QBEHABV0@@Z
+??_7__non_rtti_object@@6B@
+??_7bad_cast@@6B@
+??_7bad_typeid@@6B@
+??_7exception@@6B@
+??_E__non_rtti_object@@UAEPAXI at Z
+??_Ebad_cast@@UAEPAXI at Z
+??_Ebad_typeid@@UAEPAXI at Z
+??_Eexception@@UAEPAXI at Z
+??_G__non_rtti_object@@UAEPAXI at Z
+??_Gbad_cast@@UAEPAXI at Z
+??_Gbad_typeid@@UAEPAXI at Z
+??_Gexception@@UAEPAXI at Z
+??_U at YAPAXI@Z
+??_V at YAXPAX@Z
+?_query_new_handler@@YAP6AHI at ZXZ
+?_query_new_mode@@YAHXZ
+?_set_new_handler@@YAP6AHI at ZP6AHI@Z at Z
+?_set_new_mode@@YAHH at Z
+?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0 at Z@Z
+?before at type_info@@QBEHABV1@@Z
+?name at type_info@@QBEPBDXZ
+?raw_name at type_info@@QBEPBDXZ
+?set_new_handler@@YAP6AXXZP6AXXZ at Z
+?set_terminate@@YAP6AXXZP6AXXZ at Z
+?set_unexpected@@YAP6AXXZP6AXXZ at Z
+?terminate@@YAXXZ
+?unexpected@@YAXXZ
+?what at exception@@UBEPBDXZ
+_CIacos
+_CIasin
+_CIatan
+_CIatan2
+_CIcos
+_CIcosh
+_CIexp
+_CIfmod
+_CIlog
+_CIlog10
+_CIpow
+_CIsin
+_CIsinh
+_CIsqrt
+_CItan
+_CItanh
+_CxxThrowException
+_EH_prolog
+_Getdays
+_Getmonths
+_Gettnames
+_HUGE
+_Strftime
+_XcptFilter
+__CxxFrameHandler
+__CxxLongjmpUnwind
+__RTCastToVoid
+__RTDynamicCast
+__RTtypeid
+__STRINGTOLD
+__argc
+__argv
+__badioinfo
+__crtCompareStringA
+__crtGetLocaleInfoW
+__crtLCMapStringA
+__dllonexit
+__doserrno
+__fpecode
+__getmainargs
+__initenv
+__isascii
+__iscsym
+__iscsymf
+__lc_codepage
+__lc_collate_cp
+__lc_handle
+__lconv_init
+__mb_cur_max
+__p___argc
+__p___argv
+__p___initenv
+__p___mb_cur_max
+__p___wargv
+__p___winitenv
+__p__acmdln
+__p__amblksiz
+__p__commode
+__p__daylight
+__p__dstbias
+__p__environ
+__p__fileinfo
+__p__fmode
+__p__iob
+__p__mbcasemap
+__p__mbctype
+__p__osver
+__p__pctype
+__p__pgmptr
+__p__pwctype
+__p__timezone
+__p__tzname
+__p__wcmdln
+__p__wenviron
+__p__winmajor
+__p__winminor
+__p__winver
+__p__wpgmptr
+__pioinfo
+__pxcptinfoptrs
+__set_app_type
+__setlc_active
+__setusermatherr
+__threadhandle
+__threadid
+__toascii
+__unDName
+__unDNameEx
+__unguarded_readlc_active
+__wargv
+__wgetmainargs
+__winitenv
+_abnormal_termination
+_access
+_acmdln
+_adj_fdiv_m16i
+_adj_fdiv_m32
+_adj_fdiv_m32i
+_adj_fdiv_m64
+_adj_fdiv_r
+_adj_fdivr_m16i
+_adj_fdivr_m32
+_adj_fdivr_m32i
+_adj_fdivr_m64
+_adj_fpatan
+_adj_fprem
+_adj_fprem1
+_adj_fptan
+_adjust_fdiv
+_aexit_rtn
+_amsg_exit
+_assert
+_atodbl
+_atoi64
+_atoldbl
+_beep
+_beginthread
+_beginthreadex
+_c_exit
+_cabs
+_callnewh
+_cexit
+_cgets
+_chdir
+_chdrive
+_chgsign
+_chkesp
+_chmod
+_chsize
+_clearfp
+_close
+_commit
+_commode
+_control87
+_controlfp
+_copysign
+_cprintf
+_cputs
+_creat
+_cscanf
+_ctime64
+_ctype
+_cwait
+_daylight
+_dstbias
+_dup
+_dup2
+_ecvt
+_endthread
+_endthreadex
+_environ
+_eof
+_errno
+_except_handler2
+_except_handler3
+_execl
+_execle
+_execlp
+_execlpe
+_execv
+_execve
+_execvp
+_execvpe
+_exit
+_expand
+_fcloseall
+_fcvt
+_fdopen
+_fgetchar
+_fgetwchar
+_filbuf
+_fileinfo
+_filelength
+_filelengthi64
+_fileno
+_findclose
+_findfirst
+_findfirst64
+_findfirsti64
+_findnext
+_findnext64
+_findnexti64
+_finite
+_flsbuf
+_flushall
+_fmode
+_fpclass
+_fpieee_flt
+_fpreset
+_fputchar
+_fputwchar
+_fsopen
+_fstat
+_fstat64
+_fstati64
+_ftime
+_ftime64
+_ftol
+_fullpath
+_futime
+_futime64
+_gcvt
+_get_osfhandle
+_get_sbh_threshold
+_getch
+_getche
+_getcwd
+_getdcwd
+_getdiskfree
+_getdllprocaddr
+_getdrive
+_getdrives
+_getmaxstdio
+_getmbcp
+_getpid
+_getsystime
+_getw
+_getws
+_global_unwind2
+_gmtime64
+_heapadd
+_heapchk
+_heapmin
+_heapset
+_heapused
+_heapwalk
+_hypot
+_i64toa
+_i64tow
+_initterm
+_inp
+_inpd
+_inpw
+_iob
+_isatty
+_isctype
+_ismbbalnum
+_ismbbalpha
+_ismbbgraph
+_ismbbkalnum
+_ismbbkana
+_ismbbkprint
+_ismbbkpunct
+_ismbblead
+_ismbbprint
+_ismbbpunct
+_ismbbtrail
+_ismbcalnum
+_ismbcalpha
+_ismbcdigit
+_ismbcgraph
+_ismbchira
+_ismbckata
+_ismbcl0
+_ismbcl1
+_ismbcl2
+_ismbclegal
+_ismbclower
+_ismbcprint
+_ismbcpunct
+_ismbcspace
+_ismbcsymbol
+_ismbcupper
+_ismbslead
+_ismbstrail
+_isnan
+_itoa
+_itow
+_j0
+_j1
+_jn
+_kbhit
+_lfind
+_loaddll
+_local_unwind2
+_localtime64
+_lock
+_locking
+_logb
+_longjmpex
+_lrotl
+_lrotr
+_lsearch
+_lseek
+_lseeki64
+_ltoa
+_ltow
+_makepath
+_mbbtombc
+_mbbtype
+_mbcasemap
+_mbccpy
+_mbcjistojms
+_mbcjmstojis
+_mbclen
+_mbctohira
+_mbctokata
+_mbctolower
+_mbctombb
+_mbctoupper
+_mbctype
+_mbsbtype
+_mbscat
+_mbschr
+_mbscmp
+_mbscoll
+_mbscpy
+_mbscspn
+_mbsdec
+_mbsdup
+_mbsicmp
+_mbsicoll
+_mbsinc
+_mbslen
+_mbslwr
+_mbsnbcat
+_mbsnbcmp
+_mbsnbcnt
+_mbsnbcoll
+_mbsnbcpy
+_mbsnbicmp
+_mbsnbicoll
+_mbsnbset
+_mbsncat
+_mbsnccnt
+_mbsncmp
+_mbsncoll
+_mbsncpy
+_mbsnextc
+_mbsnicmp
+_mbsnicoll
+_mbsninc
+_mbsnset
+_mbspbrk
+_mbsrchr
+_mbsrev
+_mbsset
+_mbsspn
+_mbsspnp
+_mbsstr
+_mbstok
+_mbstrlen
+_mbsupr
+_memccpy
+_memicmp
+_mkdir
+_mktemp
+_mktime64
+_msize
+_nextafter
+_onexit
+_open
+_open_osfhandle
+_osplatform
+_osver
+_outp
+_outpd
+_outpw
+_pclose
+_pctype
+_pgmptr
+_pipe
+_popen
+_purecall
+_putch
+_putenv
+_putw
+_putws
+_pwctype
+_read
+_rmdir
+_rmtmp
+_rotl
+_rotr
+_safe_fdiv
+_safe_fdivr
+_safe_fprem
+_safe_fprem1
+_scalb
+_searchenv
+_seh_longjmp_unwind
+_set_error_mode
+_set_sbh_threshold
+_seterrormode
+_setjmp
+_setjmp3
+_setmaxstdio
+_setmbcp
+_setmode
+_setsystime
+_sleep
+_snprintf
+_snwprintf
+_sopen
+_spawnl
+_spawnle
+_spawnlp
+_spawnlpe
+_spawnv
+_spawnve
+_spawnvp
+_spawnvpe
+_splitpath
+_stat
+_stat64
+_stati64
+_statusfp
+_strcmpi
+_strdate
+_strdup
+_strerror
+_stricmp
+_stricoll
+_strlwr
+_strncoll
+_strnicmp
+_strnicoll
+_strnset
+_strrev
+_strset
+_strtime
+_strupr
+_swab
+_sys_errlist
+_sys_nerr
+_tell
+_telli64
+_tempnam
+_time64
+_timezone
+_tolower
+_toupper
+_tzname
+_tzset
+_ui64toa
+_ui64tow
+_ultoa
+_ultow
+_umask
+_ungetch
+_unlink
+_unloaddll
+_unlock
+_utime
+_utime64
+_vsnprintf
+_vsnwprintf
+_waccess
+_wasctime
+_wchdir
+_wchmod
+_wcmdln
+_wcreat
+_wcsdup
+_wcsicmp
+_wcsicoll
+_wcslwr
+_wcsncoll
+_wcsnicmp
+_wcsnicoll
+_wcsnset
+_wcsrev
+_wcsset
+_wcsupr
+_wctime
+_wctime64
+_wenviron
+_wexecl
+_wexecle
+_wexeclp
+_wexeclpe
+_wexecv
+_wexecve
+_wexecvp
+_wexecvpe
+_wfdopen
+_wfindfirst
+_wfindfirst64
+_wfindfirsti64
+_wfindnext
+_wfindnext64
+_wfindnexti64
+_wfopen
+_wfreopen
+_wfsopen
+_wfullpath
+_wgetcwd
+_wgetdcwd
+_wgetenv
+_winmajor
+_winminor
+_winver
+_wmakepath
+_wmkdir
+_wmktemp
+_wopen
+_wperror
+_wpgmptr
+_wpopen
+_wputenv
+_wremove
+_wrename
+_write
+_wrmdir
+_wsearchenv
+_wsetlocale
+_wsopen
+_wspawnl
+_wspawnle
+_wspawnlp
+_wspawnlpe
+_wspawnv
+_wspawnve
+_wspawnvp
+_wspawnvpe
+_wsplitpath
+_wstat
+_wstat64
+_wstati64
+_wstrdate
+_wstrtime
+_wsystem
+_wtempnam
+_wtmpnam
+_wtoi
+_wtoi64
+_wtol
+_wunlink
+_wutime
+_wutime64
+_y0
+_y1
+_yn
+abort
+abs
+acos
+asctime
+asin
+atan
+atan2
+atexit
+atof
+atoi
+atol
+bsearch
+calloc
+ceil
+clearerr
+clock
+cos
+cosh
+ctime
+difftime
+div
+exit
+exp
+fabs
+fclose
+feof
+ferror
+fflush
+fgetc
+fgetpos
+fgets
+fgetwc
+fgetws
+floor
+fmod
+fopen
+fprintf
+fputc
+fputs
+fputwc
+fputws
+fread
+free
+freopen
+frexp
+fscanf
+fseek
+fsetpos
+ftell
+fwprintf
+fwrite
+fwscanf
+getc
+getchar
+getenv
+gets
+getwc
+getwchar
+gmtime
+is_wctype
+isalnum
+isalpha
+iscntrl
+isdigit
+isgraph
+isleadbyte
+islower
+isprint
+ispunct
+isspace
+isupper
+iswalnum
+iswalpha
+iswascii
+iswcntrl
+iswctype
+iswdigit
+iswgraph
+iswlower
+iswprint
+iswpunct
+iswspace
+iswupper
+iswxdigit
+isxdigit
+labs
+ldexp
+ldiv
+localeconv
+localtime
+log
+log10
+longjmp
+malloc
+mblen
+mbstowcs
+mbtowc
+memchr
+memcmp
+memcpy
+memmove
+memset
+mktime
+modf
+perror
+pow
+printf
+putc
+putchar
+puts
+putwc
+putwchar
+qsort
+raise
+rand
+realloc
+remove
+rename
+rewind
+scanf
+setbuf
+setlocale
+setvbuf
+signal
+sin
+sinh
+sprintf
+sqrt
+srand
+sscanf
+strcat
+strchr
+strcmp
+strcoll
+strcpy
+strcspn
+strerror
+strftime
+strlen
+strncat
+strncmp
+strncpy
+strpbrk
+strrchr
+strspn
+strstr
+strtod
+strtok
+strtol
+strtoul
+strxfrm
+swprintf
+swscanf
+system
+tan
+tanh
+time
+tmpfile
+tmpnam
+tolower
+toupper
+towlower
+towupper
+ungetc
+ungetwc
+vfprintf
+vfwprintf
+vprintf
+vsprintf
+vswprintf
+vwprintf
+wcscat
+wcschr
+wcscmp
+wcscoll
+wcscpy
+wcscspn
+wcsftime
+wcslen
+wcsncat
+wcsncmp
+wcsncpy
+wcspbrk
+wcsrchr
+wcsspn
+wcsstr
+wcstod
+wcstok
+wcstol
+wcstombs
+wcstoul
+wcsxfrm
+wctomb
+wprintf
+wscanf
diff --git a/Win32/bin/tcc/lib/user32.def b/Win32/bin/tcc/lib/user32.def
new file mode 100644
index 0000000..2f44cf0
--- /dev/null
+++ b/Win32/bin/tcc/lib/user32.def
@@ -0,0 +1,654 @@
+LIBRARY user32.dll
+
+EXPORTS
+ActivateKeyboardLayout
+AdjustWindowRect
+AdjustWindowRectEx
+AlignRects
+AllowSetForegroundWindow
+AnimateWindow
+AnyPopup
+AppendMenuA
+AppendMenuW
+ArrangeIconicWindows
+AttachThreadInput
+BeginDeferWindowPos
+BeginPaint
+BlockInput
+BringWindowToTop
+BroadcastSystemMessage
+BroadcastSystemMessageA
+BroadcastSystemMessageW
+CalcChildScroll
+CallMsgFilter
+CallMsgFilterA
+CallMsgFilterW
+CallNextHookEx
+CallWindowProcA
+CallWindowProcW
+CascadeChildWindows
+CascadeWindows
+ChangeClipboardChain
+ChangeDisplaySettingsA
+ChangeDisplaySettingsExA
+ChangeDisplaySettingsExW
+ChangeDisplaySettingsW
+ChangeMenuA
+ChangeMenuW
+CharLowerA
+CharLowerBuffA
+CharLowerBuffW
+CharLowerW
+CharNextA
+CharNextExA
+CharNextExW
+CharNextW
+CharPrevA
+CharPrevExA
+CharPrevExW
+CharPrevW
+CharToOemA
+CharToOemBuffA
+CharToOemBuffW
+CharToOemW
+CharUpperA
+CharUpperBuffA
+CharUpperBuffW
+CharUpperW
+CheckDlgButton
+CheckMenuItem
+CheckMenuRadioItem
+CheckRadioButton
+ChildWindowFromPoint
+ChildWindowFromPointEx
+ClientThreadConnect
+ClientToScreen
+ClipCursor
+CloseClipboard
+CloseDesktop
+CloseWindow
+CloseWindowStation
+CopyAcceleratorTableA
+CopyAcceleratorTableW
+CopyIcon
+CopyImage
+CopyRect
+CountClipboardFormats
+CreateAcceleratorTableA
+CreateAcceleratorTableW
+CreateCaret
+CreateCursor
+CreateDesktopA
+CreateDesktopW
+CreateDialogIndirectParamA
+CreateDialogIndirectParamW
+CreateDialogParamA
+CreateDialogParamW
+CreateIcon
+CreateIconFromResource
+CreateIconFromResourceEx
+CreateIconIndirect
+CreateMDIWindowA
+CreateMDIWindowW
+CreateMenu
+CreatePopupMenu
+CreateWindowExA
+CreateWindowExW
+CreateWindowStationA
+CreateWindowStationW
+DdeAbandonTransaction
+DdeAccessData
+DdeAddData
+DdeClientTransaction
+DdeCmpStringHandles
+DdeConnect
+DdeConnectList
+DdeCreateDataHandle
+DdeCreateStringHandleA
+DdeCreateStringHandleW
+DdeDisconnect
+DdeDisconnectList
+DdeEnableCallback
+DdeFreeDataHandle
+DdeFreeStringHandle
+DdeGetData
+DdeGetLastError
+DdeImpersonateClient
+DdeInitializeA
+DdeInitializeW
+DdeKeepStringHandle
+DdeNameService
+DdePostAdvise
+DdeQueryConvInfo
+DdeQueryNextServer
+DdeQueryStringA
+DdeQueryStringW
+DdeReconnect
+DdeSetQualityOfService
+DdeSetUserHandle
+DdeUnaccessData
+DdeUninitialize
+DefDlgProcA
+DefDlgProcW
+DefFrameProcA
+DefFrameProcW
+DefMDIChildProcA
+DefMDIChildProcW
+DefWindowProcA
+DefWindowProcW
+DeferWindowPos
+DeleteMenu
+DestroyAcceleratorTable
+DestroyCaret
+DestroyCursor
+DestroyIcon
+DestroyMenu
+DestroyWindow
+DialogBoxIndirectParamA
+DialogBoxIndirectParamW
+DialogBoxParamA
+DialogBoxParamW
+DispatchMessageA
+DispatchMessageW
+DlgDirListA
+DlgDirListComboBoxA
+DlgDirListComboBoxW
+DlgDirListW
+DlgDirSelectComboBoxExA
+DlgDirSelectComboBoxExW
+DlgDirSelectExA
+DlgDirSelectExW
+DragDetect
+DragObject
+DrawAnimatedRects
+DrawCaption
+DrawCaptionTempA
+DrawCaptionTempW
+DrawEdge
+DrawFocusRect
+DrawFrame
+DrawFrameControl
+DrawIcon
+DrawIconEx
+DrawMenuBar
+DrawMenuBarTemp
+DrawStateA
+DrawStateW
+DrawTextA
+DrawTextExA
+DrawTextExW
+DrawTextW
+EditWndProc
+EmptyClipboard
+EnableMenuItem
+EnableScrollBar
+EnableWindow
+EndDeferWindowPos
+EndDialog
+EndMenu
+EndPaint
+EndTask
+EnumChildWindows
+EnumClipboardFormats
+EnumDesktopWindows
+EnumDesktopsA
+EnumDesktopsW
+EnumDisplayDevicesA
+EnumDisplayDevicesW
+EnumDisplayMonitors
+EnumDisplaySettingsA
+EnumDisplaySettingsExA
+EnumDisplaySettingsExW
+EnumDisplaySettingsW
+EnumPropsA
+EnumPropsExA
+EnumPropsExW
+EnumPropsW
+EnumThreadWindows
+EnumWindowStationsA
+EnumWindowStationsW
+EnumWindows
+EqualRect
+ExcludeUpdateRgn
+ExitWindowsEx
+FillRect
+FindWindowA
+FindWindowExA
+FindWindowExW
+FindWindowW
+FlashWindow
+FlashWindowEx
+FrameRect
+FreeDDElParam
+GetActiveWindow
+GetAltTabInfo
+GetAncestor
+GetAsyncKeyState
+GetCapture
+GetCaretBlinkTime
+GetCaretPos
+GetClassInfoA
+GetClassInfoExA
+GetClassInfoExW
+GetClassInfoW
+GetClassLongA
+GetClassLongW
+GetClassNameA
+GetClassNameW
+GetClassWord
+GetClientRect
+GetClipCursor
+GetClipboardData
+GetClipboardFormatNameA
+GetClipboardFormatNameW
+GetClipboardOwner
+GetClipboardSequenceNumber
+GetClipboardViewer
+GetComboBoxInfo
+GetCursor
+GetCursorInfo
+GetCursorPos
+GetDC
+GetDCEx
+GetDesktopWindow
+GetDialogBaseUnits
+GetDlgCtrlID
+GetDlgItem
+GetDlgItemInt
+GetDlgItemTextA
+GetDlgItemTextW
+GetDoubleClickTime
+GetFocus
+GetForegroundWindow
+GetGUIThreadInfo
+GetGuiResources
+GetIconInfo
+GetInputDesktop
+GetInputState
+GetInternalWindowPos
+GetKBCodePage
+GetKeyNameTextA
+GetKeyNameTextW
+GetKeyState
+GetKeyboardLayout
+GetKeyboardLayoutList
+GetKeyboardLayoutNameA
+GetKeyboardLayoutNameW
+GetKeyboardState
+GetKeyboardType
+GetLastActivePopup
+GetListBoxInfo
+GetMenu
+GetMenuBarInfo
+GetMenuCheckMarkDimensions
+GetMenuContextHelpId
+GetMenuDefaultItem
+GetMenuInfo
+GetMenuItemCount
+GetMenuItemID
+GetMenuItemInfoA
+GetMenuItemInfoW
+GetMenuItemRect
+GetMenuState
+GetMenuStringA
+GetMenuStringW
+GetMessageA
+GetMessageExtraInfo
+GetMessagePos
+GetMessageTime
+GetMessageW
+GetMonitorInfoA
+GetMonitorInfoW
+GetMouseMovePoints
+GetMouseMovePointsEx
+GetNextDlgGroupItem
+GetNextDlgTabItem
+GetNextQueueWindow
+GetOpenClipboardWindow
+GetParent
+GetPriorityClipboardFormat
+GetProcessDefaultLayout
+GetProcessWindowStation
+GetPropA
+GetPropW
+GetQueueStatus
+GetScrollBarInfo
+GetScrollInfo
+GetScrollPos
+GetScrollRange
+GetShellWindow
+GetSubMenu
+GetSysColor
+GetSysColorBrush
+GetSystemMenu
+GetSystemMetrics
+GetTabbedTextExtentA
+GetTabbedTextExtentW
+GetThreadDesktop
+GetTitleBarInfo
+GetTopWindow
+GetUpdateRect
+GetUpdateRgn
+GetUserObjectInformationA
+GetUserObjectInformationW
+GetUserObjectSecurity
+GetWindow
+GetWindowContextHelpId
+GetWindowDC
+GetWindowInfo
+GetWindowLongA
+GetWindowLongW
+GetWindowModuleFileNameA
+GetWindowModuleFileNameW
+GetWindowPlacement
+GetWindowRect
+GetWindowRgn
+GetWindowTextA
+GetWindowTextLengthA
+GetWindowTextLengthW
+GetWindowTextW
+GetWindowThreadProcessId
+GetWindowWord
+GrayStringA
+GrayStringW
+HasSystemSleepStarted
+HideCaret
+HiliteMenuItem
+IMPGetIMEA
+IMPGetIMEW
+IMPQueryIMEA
+IMPQueryIMEW
+IMPSetIMEA
+IMPSetIMEW
+ImpersonateDdeClientWindow
+InSendMessage
+InSendMessageEx
+InflateRect
+InitSharedTable
+InitTask
+InsertMenuA
+InsertMenuItemA
+InsertMenuItemW
+InsertMenuW
+InternalGetWindowText
+IntersectRect
+InvalidateRect
+InvalidateRgn
+InvertRect
+IsCharAlphaA
+IsCharAlphaNumericA
+IsCharAlphaNumericW
+IsCharAlphaW
+IsCharLowerA
+IsCharLowerW
+IsCharUpperA
+IsCharUpperW
+IsChild
+IsClipboardFormatAvailable
+IsDialogMessage
+IsDialogMessageA
+IsDialogMessageW
+IsDlgButtonChecked
+IsHungThread
+IsIconic
+IsMenu
+IsRectEmpty
+IsWindow
+IsWindowEnabled
+IsWindowUnicode
+IsWindowVisible
+IsZoomed
+KillTimer
+LoadAcceleratorsA
+LoadAcceleratorsW
+LoadBitmapA
+LoadBitmapW
+LoadCursorA
+LoadCursorFromFileA
+LoadCursorFromFileW
+LoadCursorW
+LoadIconA
+LoadIconW
+LoadImageA
+LoadImageW
+LoadKeyboardLayoutA
+LoadKeyboardLayoutW
+LoadMenuA
+LoadMenuIndirectA
+LoadMenuIndirectW
+LoadMenuW
+LoadStringA
+LoadStringW
+LockSetForegroundWindow
+LockWindowStation
+LockWindowUpdate
+LookupIconIdFromDirectory
+LookupIconIdFromDirectoryEx
+MapDialogRect
+MapVirtualKeyA
+MapVirtualKeyExA
+MapVirtualKeyExW
+MapVirtualKeyW
+MapWindowPoints
+MenuItemFromPoint
+MessageBeep
+MessageBoxA
+MessageBoxExA
+MessageBoxExW
+MessageBoxIndirectA
+MessageBoxIndirectW
+MessageBoxW
+ModifyAccess
+ModifyMenuA
+ModifyMenuW
+MonitorFromPoint
+MonitorFromRect
+MonitorFromWindow
+MoveWindow
+MsgWaitForMultipleObjects
+MsgWaitForMultipleObjectsEx
+NotifyWinEvent
+OemKeyScan
+OemToCharA
+OemToCharBuffA
+OemToCharBuffW
+OemToCharW
+OffsetRect
+OpenClipboard
+OpenDesktopA
+OpenDesktopW
+OpenIcon
+OpenInputDesktop
+OpenWindowStationA
+OpenWindowStationW
+PackDDElParam
+PaintDesktop
+PeekMessageA
+PeekMessageW
+PlaySoundEvent
+PostMessageA
+PostMessageW
+PostQuitMessage
+PostThreadMessageA
+PostThreadMessageW
+PtInRect
+RealChildWindowFromPoint
+RealGetWindowClass
+RedrawWindow
+RegisterClassA
+RegisterClassExA
+RegisterClassExW
+RegisterClassW
+RegisterClipboardFormatA
+RegisterClipboardFormatW
+RegisterDeviceNotificationA
+RegisterDeviceNotificationW
+RegisterHotKey
+RegisterLogonProcess
+RegisterNetworkCapabilities
+RegisterSystemThread
+RegisterTasklist
+RegisterWindowMessageA
+RegisterWindowMessageW
+ReleaseCapture
+ReleaseDC
+RemoveMenu
+RemovePropA
+RemovePropW
+ReplyMessage
+ReuseDDElParam
+ScreenToClient
+ScrollDC
+ScrollWindow
+ScrollWindowEx
+SendDlgItemMessageA
+SendDlgItemMessageW
+SendIMEMessageExA
+SendIMEMessageExW
+SendInput
+SendMessageA
+SendMessageCallbackA
+SendMessageCallbackW
+SendMessageTimeoutA
+SendMessageTimeoutW
+SendMessageW
+SendNotifyMessageA
+SendNotifyMessageW
+SetActiveWindow
+SetCapture
+SetCaretBlinkTime
+SetCaretPos
+SetClassLongA
+SetClassLongW
+SetClassWord
+SetClipboardData
+SetClipboardViewer
+SetCursor
+SetCursorPos
+SetDebugErrorLevel
+SetDeskWallpaper
+SetDesktopBitmap
+SetDlgItemInt
+SetDlgItemTextA
+SetDlgItemTextW
+SetDoubleClickTime
+SetFocus
+SetForegroundWindow
+SetInternalWindowPos
+SetKeyboardState
+SetLastErrorEx
+SetLogonNotifyWindow
+SetMenu
+SetMenuContextHelpId
+SetMenuDefaultItem
+SetMenuInfo
+SetMenuItemBitmaps
+SetMenuItemInfoA
+SetMenuItemInfoW
+SetMessageExtraInfo
+SetMessageQueue
+SetParent
+SetProcessDefaultLayout
+SetProcessWindowStation
+SetPropA
+SetPropW
+SetRect
+SetRectEmpty
+SetScrollInfo
+SetScrollPos
+SetScrollRange
+SetShellWindow
+SetSysColors
+SetSysColorsTemp
+SetSystemCursor
+SetThreadDesktop
+SetTimer
+SetUserObjectInformationA
+SetUserObjectInformationW
+SetUserObjectSecurity
+SetWinEventHook
+SetWindowContextHelpId
+SetWindowFullScreenState
+SetWindowLongA
+SetWindowLongW
+SetWindowPlacement
+SetWindowPos
+SetWindowRgn
+SetWindowTextA
+SetWindowTextW
+SetWindowWord
+SetWindowsHookA
+SetWindowsHookExA
+SetWindowsHookExW
+SetWindowsHookW
+ShowCaret
+ShowCursor
+ShowOwnedPopups
+ShowScrollBar
+ShowWindow
+ShowWindowAsync
+SubtractRect
+SwapMouseButton
+SwitchDesktop
+SwitchToThisWindow
+SysErrorBox
+SystemParametersInfoA
+SystemParametersInfoW
+TabbedTextOutA
+TabbedTextOutW
+TileChildWindows
+TileWindows
+ToAscii
+ToAsciiEx
+ToUnicode
+ToUnicodeEx
+TrackMouseEvent
+TrackPopupMenu
+TrackPopupMenuEx
+TranslateAccelerator
+TranslateAcceleratorA
+TranslateAcceleratorW
+TranslateMDISysAccel
+TranslateMessage
+UnhookWinEvent
+UnhookWindowsHook
+UnhookWindowsHookEx
+UnionRect
+UnloadKeyboardLayout
+UnlockWindowStation
+UnpackDDElParam
+UnregisterClassA
+UnregisterClassW
+UnregisterDeviceNotification
+UnregisterHotKey
+UpdateWindow
+UserClientDllInitialize
+UserIsSystemResumeAutomatic
+UserSetDeviceHoldState
+UserSignalProc
+UserTickleTimer
+ValidateRect
+ValidateRgn
+VkKeyScanA
+VkKeyScanExA
+VkKeyScanExW
+VkKeyScanW
+WINNLSEnableIME
+WINNLSGetEnableStatus
+WINNLSGetIMEHotkey
+WNDPROC_CALLBACK
+WaitForInputIdle
+WaitMessage
+WinHelpA
+WinHelpW
+WinOldAppHackoMatic
+WindowFromDC
+WindowFromPoint
+YieldTask
+_SetProcessDefaultLayout
+keybd_event
+mouse_event
+wsprintfA
+wsprintfW
+wvsprintfA
+wvsprintfW
diff --git a/Win32/bin/tcc/tcc.exe b/Win32/bin/tcc/tcc.exe
new file mode 100755
index 0000000..1c18336
Binary files /dev/null and b/Win32/bin/tcc/tcc.exe differ
diff --git a/Win32/binary/MSVCRT.DLL b/Win32/binary/MSVCRT.DLL
new file mode 100755
index 0000000..b2c7509
Binary files /dev/null and b/Win32/binary/MSVCRT.DLL differ
diff --git a/Win32/binary/libsbml.dll b/Win32/binary/libsbml.dll
new file mode 100755
index 0000000..d524302
Binary files /dev/null and b/Win32/binary/libsbml.dll differ
diff --git a/Win32/binary/msvcp71.dll b/Win32/binary/msvcp71.dll
new file mode 100755
index 0000000..9ed0d17
Binary files /dev/null and b/Win32/binary/msvcp71.dll differ
diff --git a/Win32/binary/msvcr71.dll b/Win32/binary/msvcr71.dll
new file mode 100755
index 0000000..9d9e028
Binary files /dev/null and b/Win32/binary/msvcr71.dll differ
diff --git a/Win32/binary/xerces-c_2_5_0.dll b/Win32/binary/xerces-c_2_5_0.dll
new file mode 100755
index 0000000..3fd4354
Binary files /dev/null and b/Win32/binary/xerces-c_2_5_0.dll differ
diff --git a/bindings/Makefile.am b/bindings/Makefile.am
new file mode 100644
index 0000000..4239d3d
--- /dev/null
+++ b/bindings/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = swig perl
diff --git a/bindings/R/interface.c b/bindings/R/interface.c
new file mode 100644
index 0000000..5f1fd51
--- /dev/null
+++ b/bindings/R/interface.c
@@ -0,0 +1,241 @@
+#include "interface.h"
+/*
+  Last changed Time-stamp: <2005-08-02 00:02:02 raim>
+  $Id: interface.c,v 1.1 2005/10/18 16:45:51 raimc Exp $
+*/
+
+
+void printvs(VarySettings2 *vs);
+
+static void
+printResults(SBMLResults_t *results);
+
+/*Here some testing how to convert an R matrix into an  VarySettings2 struct takes place*/
+
+
+static void cleanupRS(SEXP r)
+{
+  SBMLResults_free((SBMLResults_t *)  EXTPTR_PTR(r));
+}
+
+static void cleanupRSAr(SEXP r)
+{
+  SBMLResultsArray_free((SBMLResultsArray_t *)  EXTPTR_PTR(r));
+}
+
+
+
+/*End Eryk*/
+
+SEXP convertMatrix(timeCourse_t* timecourse)
+{
+  SEXP result,tmp, species, dimnames,names;
+  int nx, ny,i,j;
+
+  nx = timecourse->timepoints;
+  ny = timecourse->num_val;
+  /*tmp = GET_SLOT(result,install("species"));*/
+  /*Copy values to R matrix*/
+  PROTECT(species = allocMatrix(REALSXP,nx ,ny));
+  for(i = 0; i < nx; i++)
+    {
+      for(j = 0; j < ny; j++)
+	{
+	  REAL(species)[i + nx*j] = timecourse->values[i][j];
+	}
+    }
+  /*Setting the names of the variables*/
+  PROTECT(dimnames = allocVector(VECSXP, 2));
+  PROTECT(names = allocVector(STRSXP, timecourse->num_val));
+  for(i =0; i<timecourse->num_val; i++)
+    {
+      SET_STRING_ELT(names, i, mkChar(timecourse->names[i]));
+    }
+  SET_VECTOR_ELT(dimnames, 1, names);
+  setAttrib(species , R_DimNamesSymbol , dimnames);
+  UNPROTECT(3);
+  return(species);
+}
+
+
+/*assembles the SBMLResults object*/
+SEXP convertResult( SBMLResults_t * sbmlresult)
+{
+  int j , i ;
+  SEXP result , tmp, time ,int_m;
+  result = PROTECT(NEW_OBJECT(MAKE_CLASS("SBMLResults"))); 
+  SET_SLOT( result, install("species") , convertMatrix(sbmlresult->species));
+  if( sbmlresult->compartments->num_val != 0)
+    {
+      SET_SLOT(result,install("compartments") , convertMatrix(sbmlresult->compartments));
+    }
+  if(sbmlresult->parameters->num_val != 0)
+    {
+      SET_SLOT(result,install("parameters") , convertMatrix(sbmlresult->parameters));
+    }
+  SET_SLOT(result,install("fluxes") , convertMatrix(sbmlresult->fluxes));
+  
+  
+  time = allocVector(REALSXP,sbmlresult->timepoints);
+  for(i = 0 ; i < sbmlresult->timepoints ;i++)
+    {
+/*      printf("%f\n",sbmlresult->time[i]);*/
+      REAL(time)[i]=sbmlresult->time[i];
+    }
+
+  SET_SLOT(result,install("time"),time);
+  
+  int_m = NEW_INTEGER(1);
+  INTEGER(int_m)[0]=sbmlresult->timepoints;
+  SET_SLOT(result,install("timepoints"),int_m);
+  UNPROTECT(1);
+  return(result);
+}
+
+SEXP convertToResultclasses(SBMLResultsArray_t *rs)
+{
+  SEXP resultlist,result;
+  int i,j;
+  PROTECT(resultlist = allocVector(VECSXP, rs->length));
+  for(i=0; i< rs->length;i++)
+    {
+      result = convertResult(rs->resultsArray[i]);
+      SET_VECTOR_ELT(resultlist, i , result);
+    }
+  UNPROTECT(1);
+  return(resultlist);
+}
+
+
+SEXP SEXPbeCalled(
+		  SEXP vs /*matrix with design points*/
+		  ,SEXP model
+		  ,SEXP time
+		  ,SEXP printstep
+		  )
+{
+  SEXP id, rid, mat, mat_dim;
+  SBMLResultsArray_t * results;
+  int countP = 0, i,j;
+  char *mod;
+  VarySettings2 * vs_c;
+  SEXP resultlist;
+/* 
+  vs_c.charsize    = 250;
+  vs_c.nrdesingpoints = 100;
+  vs_c.nrparams = 20;
+ */
+ 
+ 
+  mod = CHAR(STRING_ELT(model,0));
+  PROTECT(time  = AS_NUMERIC(time)) ; countP++;
+  PROTECT(printstep  = AS_NUMERIC(printstep)) ; countP++;
+  id = GET_SLOT(vs,install("paramid")) ;
+  rid = GET_SLOT(vs,install("reactionid")) ;
+  mat = GET_SLOT(vs,install("parameters")) ;
+  PROTECT(mat_dim  = GET_DIM(mat)); countP++ ;
+
+  vs_c = varySettings2_create(INTEGER_POINTER(mat_dim)[0] , INTEGER_POINTER(mat_dim)[1] , 250 );
+
+  for( i = 0 ; i< LENGTH(id) ; i++ )
+    {
+      strcpy(vs_c->id[i],CHAR(STRING_ELT(id,i)));
+    }
+  for( i = 0 ; i < LENGTH(rid) ; i++ )
+    {
+      strcpy(vs_c->rid[i], CHAR(STRING_ELT(rid,i)));
+    }
+/*  printf("nr rows %i nr columns %i \n",INTEGER_POINTER(mat_dim)[0], INTEGER_POINTER(mat_dim)[1]);*/
+  for( i = 0 ; i < INTEGER_POINTER(mat_dim)[0]; i++ )
+    {
+      for(j = 0; j < INTEGER_POINTER(mat_dim)[1]; j++ )
+	{
+	  vs_c->params[i][j] = NUMERIC_POINTER(mat)[ INTEGER_POINTER(mat_dim)[0] * j + i ];
+	  /*printf(" %f ",vs_c->params[i][j]);*/
+	  
+	}
+      /*printf("\n");*/
+    }
+  
+  results = beCalled(
+			  mod
+			  ,NUMERIC_POINTER(time)[0] 
+			  ,NUMERIC_POINTER(printstep)[0] 
+			  ,vs_c
+			  );
+  /*code to compy the SEXP data into C structures goes here*/
+  if(results==NULL)
+    {
+      printf("failure in beCalled ");
+      UNPROTECT( countP );
+      return(model);
+    };
+  varySettings2_free(vs_c);
+  /*code to free the C structures goes here.*/
+  resultlist = convertToResultclasses(results);
+  SBMLResultsArray_free(results);
+  UNPROTECT( countP );
+  return resultlist;
+}
+
+SBMLResultsArray_t * beCalled(char *model
+			     ,double time /* time to which model is integrated */
+			     ,double printstep /* Number of output steps from 0 to 'Time' ignored if 'Indefinitely'*/
+			     ,VarySettings2 *vs /* structure with desing points */
+			     )
+{
+  int i,errors;
+  SBMLDocument_t *dd;
+  
+  SBMLReader_t *sr;
+  cvodeSettings_t *set;
+  Model_t *m ;
+  SBMLResultsArray_t * results;
+
+  /** initializing options, that are set via commandline
+      arguments in the stand-alone version of the odeSolver.
+      Please see file options.h for possible options.
+      Option handling will be reorganized soon, so that this
+      step will not be needed anymore!! **/
+
+  initializeOptions();
+  Opt.PrintMessage = 1;
+  /* parsing the SBML model with libSBML */
+  sr = SBMLReader_create();
+  dd = SBMLReader_readSBML(sr, model);
+  errors = SBMLDocument_getNumFatals(dd)+SBMLDocument_getNumErrors(dd)+SBMLDocument_getNumWarnings(dd);
+  if (errors > 0)
+    { 
+      SBMLDocument_printWarnings(dd, stdout);
+      SBMLDocument_printErrors  (dd, stdout);
+      SBMLDocument_printFatals  (dd, stdout);
+      SBMLDocument_getFatal(dd, 0);
+      return(0);
+    }
+  SBMLReader_free(sr);  
+  /* Setting SBML ODE Solver integration parameters */
+   /* Setting SBML ODE Solver integration parameters with default values */
+  set = CvodeSettings_createDefaults();
+  /* resetting the values we need */
+  set->Time = time;
+  set->PrintStep = printstep;  
+  set->Error = 1e-18;
+  set->RError = 1e-14;
+  set->Mxstep = 10000;
+  set->SteadyState = 1;
+  /* calling the SBML ODE Solver, and retrieving SBMLResults */
+  results = Model_odeSolverDesing(dd
+				  , set
+				  , vs
+				  );
+  CvodeSettings_free(set);
+  SBMLDocument_free(dd);
+
+  if (results == NULL)
+    {
+      printf("### Parameter variation not succesfull!\n");
+      return(NULL);
+    }
+  return(results);
+}
+
diff --git a/bindings/R/interface.h b/bindings/R/interface.h
new file mode 100644
index 0000000..84d0e9a
--- /dev/null
+++ b/bindings/R/interface.h
@@ -0,0 +1,83 @@
+#include <R.h>
+#include <Rdefines.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <string.h>
+#include <time.h>
+
+
+#include <sbmlsolver/odeSolver.h>
+
+#include <sbmlsolver/sbml.h>
+#include <sbmlsolver/solverError.h>
+#include <sbml/SBMLTypes.h>
+
+/*extensiosn to odeSolver.h*/
+
+/*
+  This structure keeps the desing points for which the model is evaluated
+
+  the parameters are the columns of the matrix 
+  the design points are the rows!!! hence 
+  vs->params[desingpointindex][parameterindex]
+*/
+
+
+typedef struct
+{
+  int nrdesingpoints; /*defines how many design points are set*/
+  int nrparams;
+  char **id; /* array of SBML ID of the species, compartment or parameter to be varied */
+  char **rid; /* SBML Reaction ID, if a local parameter is to be varied */
+  double **params; /* two dimensional array with the parmaters */
+  int charsize; /* maximal length of character string*/
+}VarySettings2;
+
+void VarySettings2_free(VarySettings2 *vs);
+VarySettings2 * varySettings2_create(
+				     int nrdesingpoints
+				     ,int nrparams
+				     ,int charsize
+				     );
+
+
+/*extensions to sbmlResults.h*/
+/*This structure contains the results of the model evaluation*/
+typedef struct{
+  SBMLResults_t ** resultsArray;
+  int length;
+}SBMLResultsArray_t; 
+
+extern SBMLResultsArray_t * Model_odeSolverDesing(SBMLDocument_t *dd
+				    , cvodeSettings_t *settings
+				    , VarySettings2 *vary
+				    );
+
+
+extern SBMLResultsArray_t * SBMLResultsArray_create(int size);
+extern void SBMLResultsArray_free(SBMLResultsArray_t *results);
+
+
+extern SBMLResults_t * Model_odeSolverM(
+					Model_t *m
+					, cvodeSettings_t *set
+					);
+
+
+/*stuff needed for R*/
+
+extern SEXP SEXPbeCalled(SEXP vs
+			 ,SEXP model
+			 ,SEXP time
+			 ,SEXP printstep
+			 );
+
+extern SBMLResultsArray_t * beCalled(char *model
+				     ,double time /* time to which model is integrated */
+				     ,double printstep /* Number of output steps from 0 to 'Time' ignored if 'Indefinitely'*/
+				     ,VarySettings2 *vs /* structure with desing points */
+				     );
+
+
+
diff --git a/bindings/README b/bindings/README
new file mode 100644
index 0000000..775b887
--- /dev/null
+++ b/bindings/README
@@ -0,0 +1,2 @@
+BINDINGS CURRENTLY DO NOT WORK!
+HELP IS APPRECIATED!
diff --git a/bindings/perl/LibODES.i b/bindings/perl/LibODES.i
new file mode 100644
index 0000000..5fe44a7
--- /dev/null
+++ b/bindings/perl/LibODES.i
@@ -0,0 +1,8 @@
+/*
+  Last changed Time-stamp: <2005-03-09 18:08:20 xtof>
+  $Id: LibODES.i,v 1.1 2005/05/30 19:49:13 raimc Exp $
+*/
+
+%module LibODES
+
+%include "../swig/libodes.i"
diff --git a/bindings/perl/Makefile.PL.in b/bindings/perl/Makefile.PL.in
new file mode 100644
index 0000000..7af77ec
--- /dev/null
+++ b/bindings/perl/Makefile.PL.in
@@ -0,0 +1,32 @@
+# Last changed Time-stamp: <2005-05-23 17:42:02 xtof>
+# $Id: Makefile.PL.in,v 1.1 2005/05/30 19:49:13 raimc Exp $
+use ExtUtils::MakeMaker;
+
+my @Xtralib = map{chomp; $_} <DATA>;
+WriteMakefile(MAKEFILE => 'Makefile-perl',
+              NAME     => 'LibODES',
+              LIBS     => [join(' ', @Xtralib)],
+	      dynamic_lib =>
+	      {LDDLFLAGS=> '@SBML_RPATH@ @SBML_LDFLAGS@ @SBML_LIBS@'},
+              INC      => '-I../swig -I../../src -I/usr/local/include @SBML_CPPFLAGS@',
+              MYEXTLIB => '../../src/libODES.a',
+              OBJECT   => 'LibODES_wrap.o',
+              AUTHOR   => 'Christoph Flamm <xtof at tbi.univie.ac.at>',
+              VERSION  => '@PACKAGE_VERSION@',
+);
+
+sub MY::postamble {
+	return <<'MAKE_FRAG';
+LibODES_wrap.c:
+	swig -Wall -perl5 -proxy -I../../src/ @SBML_CPPFLAGS@ LibODES.i
+MAKE_FRAG
+}
+
+__DATA__
+ at CVODE_LDFLAGS@ @CVODE_LIBS@
+ at GRACE_LDFLAGS@ @GRACE_LIBS@
+ at GRAPHVIZ_LDFLAGS@ @GRAPHVIZ_LIBS@
+ at CVODE_LDFLAGS@ @CVODE_LIBS@
+ at SBML_LDFLAGS@ @SBML_LIBS@
+-lxerces-c
+-lm
diff --git a/bindings/perl/Makefile.am b/bindings/perl/Makefile.am
new file mode 100644
index 0000000..d6fb45e
--- /dev/null
+++ b/bindings/perl/Makefile.am
@@ -0,0 +1,16 @@
+# Last changed Time-stamp: <2005-03-09 22:39:10 xtof>
+# $Id: Makefile.am,v 1.1 2005/05/30 19:49:13 raimc Exp $
+SOURCES = LibODES.i Makefile.PL
+EXTRA_DIST = LibODES.i Makefile.PL t/*.t
+LibODES_wrap.c: LibODES.i
+	$(SWIG) -Wall -perl5 -proxy -I../../src/ LibODES.i
+Makefile-perl: Makefile.PL
+	$(PERL) Makefile.PL
+all-local: LibODES_wrap.c Makefile-perl
+	$(MAKE) -f Makefile-perl
+install-exec-local: all-local
+	$(MAKE) -f Makefile-perl install
+check-local: all-local
+	$(MAKE) -f Makefile-perl test
+mostlyclean-local: Makefile-perl
+	$(MAKE) -f Makefile-perl clean
diff --git a/bindings/perl/t/01__LoadModule.t b/bindings/perl/t/01__LoadModule.t
new file mode 100644
index 0000000..89ff269
--- /dev/null
+++ b/bindings/perl/t/01__LoadModule.t
@@ -0,0 +1,5 @@
+# Last changed Time-stamp: <2005-03-09 18:10:07 xtof>
+# $Id: 01__LoadModule.t,v 1.1 2005/05/30 19:49:13 raimc Exp $
+
+use Test::More tests => 1;
+BEGIN { use_ok('LibODES') };
diff --git a/bindings/perl/t/02__Integrate.t b/bindings/perl/t/02__Integrate.t
new file mode 100644
index 0000000..beccc8c
--- /dev/null
+++ b/bindings/perl/t/02__Integrate.t
@@ -0,0 +1,134 @@
+# Last changed Time-stamp: <2005-03-09 18:10:38 xtof>
+# $Id: 02__Integrate.t,v 1.1 2005/05/30 19:49:13 raimc Exp $
+
+use lib "$ENV{HOME}/Perl/L";
+
+use Test::More tests => 1;
+use Data::Dumper;
+use LibODES;
+
+my $time = 1e3;
+my $printstep = 1e2;
+my $model = '../../../Test/MAPK.xml';
+
+LibODES::initializeOptions();
+#LibODES::Options_PrintModel_set(1);
+my $data = LibODES::Model_odeSolver(LibODES::parseModel($model),
+                                    $time, $printstep);
+my $refdata = join '', <DATA>;
+
+#LibODES::CvodeData::filename::set($data, 't/02.out');
+#LibODES::printConcentrationTimeCourse($data);
+
+ok($data, $refdata);
+
+
+__DATA__
+#t MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP 
+##CONCENTRATIONS
+0 90 10 280 10 10 280 10 10 
+10 80.718 19.282 279.662 11.6565 8.68109 279.88 11.1054 9.01507 
+20 71.2642 28.7358 277.411 13.8792 8.71021 280.012 11.8575 8.13013 
+30 61.6227 38.3773 273.234 16.6896 10.0766 280.05 12.4867 7.4635 
+40 51.974 48.026 267.121 20.0773 12.8015 279.667 13.1953 7.13742 
+50 42.6595 57.3405 259.105 23.9659 16.9288 278.551 14.1698 7.27936 
+60 34.1268 65.8732 249.3 28.2199 22.4801 276.391 15.5743 8.03503 
+70 26.824 73.176 237.921 32.6736 29.4052 272.885 17.532 9.58258 
+80 21.0614 78.9386 225.277 37.1633 37.5598 267.755 20.1063 12.1388 
+90 16.9094 83.0906 211.724 41.5522 46.7239 260.755 23.293 15.9518 
+100 14.2049 85.7951 197.611 45.7411 56.6475 251.69 27.0276 21.2823 
+110 12.6573 87.3427 183.237 49.6676 67.0955 240.417 31.2035 28.3799 
+120 11.968 88.032 168.831 53.2969 77.8717 226.844 35.6935 37.4625 
+130 11.8958 88.1042 154.567 56.6109 88.8223 210.931 40.3654 48.7039 
+140 12.2677 87.7323 140.571 59.5997 99.8292 192.682 45.0883 62.2299 
+150 12.9654 87.0346 126.944 62.2558 110.801 172.152 49.7289 78.1193 
+160 13.9086 86.0914 113.765 64.5708 121.664 149.453 54.1386 96.408 
+170 15.0412 84.9588 101.107 66.5326 132.36 124.781 58.1269 117.092 
+180 16.3233 83.6767 89.0358 68.1242 142.84 98.4659 61.4077 140.126 
+190 17.7251 82.2749 77.6162 69.3226 153.061 71.1078 63.4765 165.416 
+200 19.2241 80.7759 66.9154 70.0978 162.987 43.9396 63.2817 192.779 
+210 20.8021 79.1979 57.0041 70.4122 172.584 19.9002 58.2764 221.823 
+220 22.4438 77.5562 47.957 70.222 181.821 5.25343 43.315 251.432 
+230 24.1335 75.8665 39.8504 69.4794 190.67 1.45795 20.4964 278.046 
+240 25.85 74.15 32.756 68.1397 199.104 0.609171 5.43806 293.953 
+250 27.5681 72.4319 26.7278 66.1727 207.1 0.221537 1.9475 297.831 
+260 29.275 70.725 21.7863 63.5801 214.634 0.138369 1.52071 298.341 
+270 30.9687 69.0313 17.9015 60.4146 221.684 0.1216 1.43194 298.446 
+280 32.6494 67.3506 14.9825 56.7904 228.227 0.11353 1.38165 298.505 
+290 34.3176 65.6824 12.8843 52.8745 234.241 0.107289 1.3406 298.552 
+300 35.9736 64.0264 11.4337 48.8584 239.708 0.102085 1.3055 298.592 
+310 37.6176 62.3824 10.4606 44.9243 244.615 0.0977221 1.27548 298.627 
+320 39.2497 60.7503 9.82182 41.2201 248.958 0.094079 1.24999 298.656 
+330 40.8701 59.1299 9.40916 37.8496 252.741 0.0910567 1.22853 298.68 
+340 42.4788 57.5212 9.14793 34.8739 255.978 0.0885723 1.21067 298.701 
+350 44.0759 55.9241 8.99017 32.3189 258.691 0.0865547 1.19603 298.717 
+360 45.6611 54.3389 8.90739 30.1833 260.909 0.0849423 1.18424 298.731 
+370 47.2346 52.7654 8.88425 28.4472 262.669 0.0836814 1.17497 298.741 
+380 48.796 51.204 8.91379 27.0793 264.007 0.0827254 1.16793 298.749 
+390 50.3453 49.6547 8.99405 26.0424 264.964 0.0820342 1.16284 298.755 
+400 51.8823 48.1177 9.12577 25.2979 265.576 0.0815737 1.15947 298.759 
+410 53.4065 46.5935 9.31096 24.809 265.88 0.0813154 1.15762 298.761 
+420 54.9179 45.0821 9.55216 24.5423 265.906 0.0812363 1.15712 298.762 
+430 56.4159 43.5841 9.85204 24.4686 265.679 0.081318 1.15784 298.761 
+440 57.9003 42.0997 10.2134 24.5628 265.224 0.0815462 1.15967 298.759 
+450 59.3705 40.6295 10.639 24.8044 264.557 0.0819105 1.16252 298.756 
+460 60.8262 39.1738 11.1321 25.1758 263.692 0.0824039 1.16634 298.751 
+470 62.2667 37.7333 11.696 25.663 262.641 0.083022 1.1711 298.746 
+480 63.6914 36.3086 12.3343 26.2539 261.412 0.083763 1.17676 298.739 
+490 65.0998 34.9002 13.0515 26.9385 260.01 0.0846272 1.18333 298.732 
+500 66.4912 33.5088 13.852 27.7083 258.44 0.0856169 1.1908 298.724 
+510 67.8647 32.1353 14.7411 28.5555 256.703 0.0867363 1.19921 298.714 
+520 69.2197 30.7803 15.7242 29.4735 254.802 0.0879912 1.20857 298.703 
+530 70.5552 29.4448 16.8075 30.4558 252.737 0.0893889 1.21892 298.692 
+540 71.8702 28.1298 17.997 31.4964 250.507 0.0909384 1.23032 298.679 
+550 73.1638 26.8362 19.2994 32.5892 248.111 0.0926505 1.24281 298.665 
+560 74.4348 25.5652 20.7212 33.7285 245.55 0.0945373 1.25646 298.649 
+570 75.6822 24.3178 22.2692 34.9083 242.822 0.096613 1.27134 298.632 
+580 76.9046 23.0954 23.9499 36.1228 239.927 0.0988933 1.28754 298.614 
+590 78.1008 21.8992 25.7695 37.366 236.864 0.101396 1.30513 298.593 
+600 79.2694 20.7306 27.7341 38.632 233.634 0.104142 1.32421 298.572 
+610 80.4089 19.5911 29.849 39.9151 230.236 0.107154 1.34491 298.548 
+620 81.5178 18.4822 32.119 41.2094 226.672 0.110457 1.36732 298.522 
+630 82.5945 17.4055 34.548 42.5094 222.943 0.11408 1.39158 298.494 
+640 83.6374 16.3626 37.1393 43.8097 219.051 0.118055 1.41783 298.464 
+650 84.6448 15.3552 39.8951 45.1053 215 0.122418 1.44623 298.431 
+660 85.6151 14.3849 42.8164 46.3915 210.792 0.127212 1.47695 298.396 
+670 86.5465 13.4535 45.9035 47.6638 206.433 0.132483 1.51018 298.357 
+680 87.4376 12.5624 49.1553 48.9181 201.927 0.138283 1.54612 298.316 
+690 88.2867 11.7133 52.5699 50.151 197.279 0.144673 1.58501 298.27 
+700 89.0926 10.9074 56.1441 51.359 192.497 0.151721 1.6271 298.221 
+710 89.8539 10.1461 59.8739 52.5393 187.587 0.159506 1.67268 298.168 
+720 90.5697 9.43033 63.7542 53.6893 182.557 0.168119 1.72207 298.11 
+730 91.2393 8.76074 67.7791 54.8069 177.414 0.177662 1.77562 298.047 
+740 91.8623 8.13774 71.942 55.89 172.168 0.188256 1.83374 297.978 
+750 92.4387 7.56133 76.2358 56.9371 166.827 0.200039 1.89687 297.903 
+760 92.9689 7.03114 80.6526 57.9466 161.401 0.213173 1.96554 297.821 
+770 93.4536 6.54635 85.1843 58.9172 155.898 0.227847 2.04032 297.732 
+780 93.8942 6.10577 89.8227 59.8478 150.33 0.244282 2.12188 297.634 
+790 94.2922 5.70777 94.5594 60.737 144.704 0.262741 2.21099 297.526 
+800 94.6496 5.35041 99.386 61.5838 139.03 0.283531 2.30852 297.408 
+810 94.9686 5.03143 104.294 62.3869 133.319 0.307021 2.4155 297.277 
+820 95.2517 4.74834 109.277 63.1451 127.578 0.333652 2.53311 297.133 
+830 95.5015 4.49848 114.325 63.8568 121.818 0.363952 2.66272 296.973 
+840 95.7209 4.27912 119.433 64.5202 116.047 0.398562 2.80594 296.795 
+850 95.9125 4.08751 124.593 65.1334 110.274 0.438255 2.96467 296.597 
+860 96.0791 3.92093 129.799 65.6941 104.507 0.483981 3.14114 296.375 
+870 96.2232 3.77679 135.045 66.1993 98.7556 0.536898 3.33796 296.125 
+880 96.3474 3.65261 140.326 66.646 93.0277 0.598438 3.55824 295.843 
+890 96.4539 3.54612 145.638 67.0301 87.3322 0.670373 3.80564 295.524 
+900 96.5448 3.45522 150.975 67.3471 81.6783 0.754906 4.08452 295.161 
+910 96.622 3.37801 156.333 67.5917 76.0757 0.854787 4.39998 294.745 
+920 96.6872 3.3128 161.708 67.7575 70.5346 0.973465 4.75803 294.269 
+930 96.7419 3.25811 167.097 67.8369 65.0663 1.11527 5.16571 293.719 
+940 96.7873 3.21266 172.496 67.8211 59.6833 1.28564 5.6311 293.083 
+950 96.8247 3.17533 177.901 67.6995 54.3994 1.49144 6.1634 292.345 
+960 96.8548 3.1452 183.31 67.4597 49.2307 1.74126 6.77281 291.486 
+970 96.8785 3.12151 188.718 67.0869 44.1955 2.04585 7.47023 290.484 
+980 96.8963 3.10365 194.121 66.5637 39.3148 2.41849 8.2667 289.315 
+990 96.9088 3.09116 199.517 65.8697 34.6132 2.87545 9.17253 287.952 
+1000 96.9163 3.08369 204.9 64.981 30.1189 3.43619 10.196 286.368 
+##CONCENTRATIONS
+#t MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP 
+
+
+
diff --git a/bindings/swig/Makefile.am b/bindings/swig/Makefile.am
new file mode 100644
index 0000000..da7e6e0
--- /dev/null
+++ b/bindings/swig/Makefile.am
@@ -0,0 +1,2 @@
+SOURCES = libodes.i
+EXTRA_DIST = libodes.i
diff --git a/bindings/swig/libodes.i b/bindings/swig/libodes.i
new file mode 100644
index 0000000..ecdddf1
--- /dev/null
+++ b/bindings/swig/libodes.i
@@ -0,0 +1,42 @@
+/*
+  Last changed Time-stamp: <2005-05-31 16:04:04 raim>
+  $Id: libodes.i,v 1.2 2005/05/31 14:05:46 raimc Exp $
+*/
+
+%module libodes
+
+%{
+#include <sbml/SBMLTypes.h>
+#include <sbml/common/common.h>
+#include "sbmlsolver/cvodedata.h"
+#include "sbmlsolver/sbmlResults.h"
+#include "sbmlsolver/batchIntegrator.h"
+#include "sbmlsolver/drawGraph.h"
+#include "sbmlsolver/odeConstruct.h"
+#include "sbmlsolver/options.h"
+#include "sbmlsolver/sbml.h"
+#include "sbmlsolver/interactive.h"
+#include "sbmlsolver/odeIntegrate.h"
+#include "sbmlsolver/printModel.h"
+#include "sbmlsolver/util.h"
+#include "sbmlsolver/modelSimplify.h"
+#include "sbmlsolver/odeSolver.h"
+#include "sbmlsolver/processAST.h"
+%}
+
+%constant double VERSION = 1.5;
+
+%include sbmlsolver/cvodedata.h
+%include sbmlsolver/sbmlResults.h
+%include sbmlsolver/batchIntegrator.h
+%include sbmlsolver/drawGraph.h
+%include sbmlsolver/odeConstruct.h
+%include sbmlsolver/options.h
+%include sbmlsolver/sbml.h
+%include sbmlsolver/interactive.h
+%include sbmlsolver/odeIntegrate.h
+%include sbmlsolver/printModel.h
+%include sbmlsolver/util.h
+%include sbmlsolver/modelSimplify.h
+%include sbmlsolver/odeSolver.h
+%include sbmlsolver/processAST.h
diff --git a/config/cvode.m4 b/config/cvode.m4
new file mode 100644
index 0000000..106fe3f
--- /dev/null
+++ b/config/cvode.m4
@@ -0,0 +1,100 @@
+dnl $Id: cvode.m4,v 1.1 2005/05/30 19:49:14 raimc Exp $
+
+dnl
+dnl look for CVODE Library headers in some standard set of directories
+dnl
+AC_DEFUN([AC_CVODE_PATH],
+[ AC_MSG_CHECKING([for CVODE Library headers])
+  for ac_dir in              \
+    /usr/local/include       \
+    /usr/local/include/cvode \
+    /usr/local/include/CVODE \
+    /usr/include/cvode       \
+    /usr/include/CVODE       \
+    /usr/local/share/cvode   \
+    /usr/local/share/CVODE   \
+    /opt/cvode               \
+    /opt/CVODE               \
+    ;                        \
+  do
+    if test -r "$ac_dir/cvode.h"; then
+      ac_CVODE_includes="$ac_dir"
+      CVODE_CFLAGS="-I$ac_dir"
+      AC_MSG_RESULT([yes])
+      break
+    fi
+  done
+
+  AC_MSG_CHECKING([for CVODE Library])
+  ac_dir=`echo "$ac_CVODE_includes" | sed s/include/lib/`
+  for ac_extension in a so sl dylib; do
+    if test -r $ac_dir/libcvode.$ac_extension; then
+      CVODE_LDFLAGS="-L$ac_dir"
+      CVODE_LIBS="-lcvode"
+      AC_MSG_RESULT([yes])
+      break
+    fi
+  done
+])
+
+dnl
+dnl Check --with-libcvode[=PREFIX] is specified and libcvode is installed.
+dnl
+AC_DEFUN([CONFIG_LIB_CVODE],
+[ AC_PREREQ(2.57)dnl
+  AC_ARG_WITH([libcvode],
+  AC_HELP_STRING([--with-libcvode=PREFIX],
+                 [Use CVODE Library]),
+              [with_libcvode=$withval],
+              [with_libcvode=yes])
+  dnl set CVODE related variables
+  CVODE_CFLAGS=
+  CVODE_LDFLAGS=
+  CVODE_LIBS=
+  if test "$with_libcvode" = yes; then
+    AC_CVODE_PATH
+  else
+    CVODE_CFLAGS="-I$with_libcvode/include"
+    CVODE_LDFLAGS="-L$with_libcvode/lib"
+    CVODE_LIBS="-lcvode"
+  fi
+  dnl check if CVODE Library is functional
+  AC_MSG_CHECKING([correct functioning of CVODE])
+  AC_LANG_PUSH(C)
+  dnl cach values of some global variables
+  cvode_save_CFLAGS="$CFLAGS"
+  cvode_save_LDFLAGS="$LDFLAGS"
+  cvode_save_LIBS="$LIBS"
+  dnl add CVODE specific stuff to global variables
+  CFLAGS="$CFLAGS $CVODE_CFLAGS"
+  LDFLAGS="$LDFLAGS $CVODE_LDFLAGS"
+  LIBS="$LIBS -lm $CVODE_LIBS"
+  dnl can we link a mini program with cvode?
+  AC_TRY_LINK([#include <cvode.h>  \
+               #include <cvdense.h>\
+               #include <dense.h>],
+    [N_Vector y; y = N_VNew(3, NULL); N_VFree(y);],
+    [cvode_functional=yes],
+    [cvode_functional=no])
+
+  if test "$cvode_functional" = yes; then
+    AC_MSG_RESULT([$cvode_functional])
+  else
+    AC_MSG_RESULT([$cvode_functional:
+                   CFLAGS=$CFLAGS
+                   LDFLAGS=$LDFLAGS
+                   LIBS=$LIBS])
+    AC_MSG_ERROR([Can not link to CVODE Library])
+  fi
+  dnl reset global variables to cached values
+  CFLAGS=$cvode_save_CFLAGS
+  LDFLAGS=$cvode_save_LDFLAGS
+  LIBS=$cvode_save_LIBS
+  AC_LANG_POP(C)
+
+  AC_DEFINE([USE_CVODE], 1, [Define to 1 to use the CVODE Library])
+  AC_SUBST(USE_CVODE, 1)
+  AC_SUBST(CVODE_CFLAGS)
+  AC_SUBST(CVODE_LDFLAGS)
+  AC_SUBST(CVODE_LIBS)
+])
diff --git a/config/grace.m4 b/config/grace.m4
new file mode 100644
index 0000000..989acdc
--- /dev/null
+++ b/config/grace.m4
@@ -0,0 +1,132 @@
+dnl $Id: grace.m4,v 1.6 2010/09/28 13:41:08 raimc Exp $
+
+dnl
+dnl look for GRACE Library headers in some standard set of directories
+dnl
+AC_DEFUN([AC_GRACE_PATH],
+[ AC_MSG_CHECKING([for GRACE Library headers])
+  for ac_dir in                    \
+    /sw/include                    \
+    /usr                           \
+    /usr/include                   \
+    /usr/local/include             \
+    /usr/local/grace/include       \
+    /usr/grace/include	           \
+    /usr/share/grace/include	   \
+    /usr/local/share/grace/include \
+    /opt/grace/include             \
+    ;                              \
+  do
+    if test -r "$ac_dir/grace_np.h"; then
+      ac_GRACE_includes="$ac_dir"
+      GRACE_CPPFLAGS="-I$ac_GRACE_includes"
+      AC_MSG_RESULT([yes])
+      break
+    fi
+  done
+  AC_MSG_CHECKING([for GRACE Library])
+  for ac_dir in                \
+    `echo "$ac_GRACE_includes" \
+    | sed s/include/lib/ `     \
+    `echo "$ac_GRACE_includes" \
+    | sed s/include/lib64/ `   \
+    /usr/local/lib             \
+    ;                          \
+  do
+    for ac_extension in a so sl dylib; do
+      if test -r $ac_dir/libgrace_np.$ac_extension; then
+        GRACE_LDFLAGS="-L$ac_dir"
+        if test "$HOST_TYPE" = darwin; then
+          GRACE_RPATH=
+        else
+          GRACE_RPATH="-Wl,-rpath,$ac_dir"
+        fi
+        GRACE_LIBS="-lgrace_np"
+        AC_MSG_RESULT([yes])
+        break
+      fi
+    done
+  done
+])
+
+dnl
+dnl Check --with-grace[=PREFIX] is specified and grace is installed.
+dnl
+AC_DEFUN([CONFIG_LIB_GRACE],
+[ AC_PREREQ(2.57)dnl
+  AC_ARG_WITH([grace],
+  AC_HELP_STRING([--with-grace=PREFIX],
+                 [Use GRACE Library]),
+              [with_grace=$withval],
+              [with_grace=yes])
+  dnl set GRACE related variables
+  GRACE_CPPFLAGS=
+  GRACE_LDFLAGS=
+  GRACE_RPATH=
+  GRACE_LIBS=
+  if test "$with_grace" = yes; then
+    AC_GRACE_PATH
+  else
+    GRACE_CPPFLAGS="-I$with_grace/include"
+    GRACE_LDFLAGS="-L$with_grace/lib"
+    if test "$HOST_TYPE" = darwin; then
+      GRACE_RPATH=
+    else
+      GRACE_RPATH="-Wl,-rpath,$with_grace"
+    fi
+    GRACE_LIBS="-lgrace_np"
+  fi
+
+  if test "x$with_grace" = xno; then
+    grace_functional = no
+  else
+    dnl check if GRACE Library is functional
+    AC_MSG_CHECKING([correct functioning of GRACE])
+    AC_LANG_PUSH(C)
+    dnl cach values of some global variables
+    grace_save_CPPFLAGS="$CPPFLAGS"
+    grace_save_LDFLAGS="$LDFLAGS"
+    grace_save_LIBS="$LIBS"
+    dnl temporarily add GRACE specific stuff to global variables
+    CPPFLAGS="$CPPFLAGS $GRACE_CPPFLAGS"
+    LDFLAGS="$LDFLAGS $GRACE_LDFLAGS"
+    LIBS="$GRACE_LIBS $LIBS"
+    dnl can we link a mini program with grace?
+    AC_TRY_LINK([#include <grace_np.h>],
+      [GraceOpen(2048); GracePrintf("world xmax %g", 10.0); GraceClose();],
+      [grace_functional=yes],
+      [grace_functional=no])
+
+    if test "$grace_functional" = yes; then
+      AC_MSG_RESULT([$grace_functional])
+    else
+      AC_MSG_RESULT([$grace_functional:
+                     CPPFLAGS=$CPPFLAGS
+                     LDFLAGS=$LDFLAGS
+                     LIBS=$LIBS])
+      AC_MSG_RESULT([Can not link to GRACE Library!])
+      AC_MSG_RESULT([odeSolver will be installed without XMGrace functionality])
+    fi
+    dnl reset global variables to cached values
+    CPPFLAGS=$grace_save_CPPFLAGS
+    LDFLAGS=$grace_save_LDFLAGS
+    LIBS=$grace_save_LIBS
+    AC_LANG_POP(C)
+  fi
+
+  if test "$grace_functional" = yes; then
+    AC_DEFINE([USE_GRACE], 1, [Define to 1 to use the GRACE Library])
+    AC_SUBST(USE_GRACE, 1)
+    AC_SUBST(GRACE_CPPFLAGS)
+    AC_SUBST(GRACE_LDFLAGS)
+    AC_SUBST(GRACE_RPATH)
+    AC_SUBST(GRACE_LIBS)
+  else
+    AC_DEFINE([USE_GRACE], 0, [Define to 1 to use the GRACE Library])
+    AC_SUBST(USE_GRACE, 0)
+    AC_SUBST(GRACE_CPPFLAGS, "")
+    AC_SUBST(GRACE_LDFLAGS, "")
+    AC_SUBST(GRACE_RPATH, "")
+    AC_SUBST(GRACE_LIBS, "")
+  fi
+])
diff --git a/config/graphviz.m4 b/config/graphviz.m4
new file mode 100644
index 0000000..0177724
--- /dev/null
+++ b/config/graphviz.m4
@@ -0,0 +1,153 @@
+dnl $Id: graphviz.m4,v 1.5 2006/11/24 13:38:54 raimc Exp $
+
+dnl
+dnl Check --with-graphviz[=PREFIX] is specified and graphviz is installed.
+dnl
+AC_DEFUN([CONFIG_LIB_GRAPHVIZ],
+[ AC_PREREQ(2.57)dnl
+  AC_ARG_WITH([graphviz],
+  AC_HELP_STRING([--with-graphviz=PREFIX],
+                 [Use GRAPHVIZ Library]),
+              [with_graphviz=$withval],
+              [with_graphviz=yes])
+  dnl set GRAPHVIZ related variables
+  GRAPHVIZ_CPPFLAGS=
+  GRAPHVIZ_LDFLAGS=
+  GRAPHVIZ_RPATH=
+  GRAPHVIZ_LIBS=
+  if test "$with_graphviz" = no
+  then
+    graphviz_functional=no
+  else
+  if test "$with_graphviz" != yes; then
+    AC_MSG_NOTICE(checking for Graphviz Library)
+    dnl Remove needless trailing slashes because it can confuse tests later.
+    with_graphviz=`echo $with_graphviz | sed -e 's,\(.*\)/$,\1,g'`
+
+    dnl check if program dot is in the user-defined graphviz library path
+    AC_PATH_PROG([DOT], [dot], [$with_graphviz/bin/dot],
+                 [no-dot-found], [$with_graphviz/bin])
+  else
+    dnl search for program dot from the graphviz library
+    AC_PATH_PROG([DOT], [dot])
+  fi
+
+  dnl get dot version
+  if test -n "$DOT";
+  then
+    changequote(<<, >>)
+    graphviz_include_path=`echo $DOT | sed -e 's,bin/dot,include/graphviz,'`
+    graphviz_lib_path=`echo $DOT | sed -e 's,bin/dot,lib/graphviz,'`
+    dot_version=`$DOT -V 2>&1 | sed 's/.* \([0-9]*\.[0-9]*\).*/\1/p; d'`
+    dot_major_version=`expr $dot_version : '\([0-9]*\)\.[0-9]*'`
+    dot_minor_version=`expr $dot_version : '[0-9]*\.\([0-9]*\)'`
+    changequote([, ])
+  fi
+
+  AC_MSG_NOTICE([found Graphviz Library Version $dot_version])
+
+  if test $dot_major_version -ge 2;
+  then
+    if test $dot_minor_version -ge 6;
+    then
+      graphviz_old=0
+      graphviz_headers="#include <gvc.h>"
+      graphviz_testprg="GVC_t *gvc;gvc=(GVC_t*)gvContext();gvFreeContext(gvc);"
+      GRAPHVIZ_LIBS="-lgvc"
+    elif test $dot_minor_version -eq 4;
+    then
+      graphviz_old=1
+      graphviz_headers="#include <gvc.h>"
+      graphviz_testprg="GVC_t *gvc;gvc=(GVC_t*)gvContext();gvCleanup(gvc);"
+      GRAPHVIZ_LIBS="-lgvc"
+    elif test $dot_minor_version -lt 4;
+    then
+      graphviz_old=2
+      graphviz_headers="#include <dotneato.h> #include <gvrender.h>"
+      graphviz_testprg="GVC_t *gvc;gvc=gvNEWcontext(NULL,NULL);gvFREEcontext(gvc);"
+      GRAPHVIZ_LIBS="-ldotneato"
+    fi
+  else
+    AC_MSG_RESULT([installed version of graphviz is too old!])
+    AC_MSG_RESULT([disabling graphviz functionality!!!!!!!!!])
+  fi
+
+  if test $dot_major_version -ge 2;
+  then
+    GRAPHVIZ_CPPFLAGS="-I$graphviz_include_path"
+    GRAPHVIZ_LDFLAGS="-L$graphviz_lib_path"
+
+    if test "$HOST_TYPE" = darwin; then
+      GRAPHVIZ_RPATH=
+    else
+      GRAPHVIZ_RPATH="-Wl,-rpath,$graphviz_lib_path"
+    fi
+
+    dnl check if GRAPHVIZ Library is functional
+    AC_MSG_CHECKING([correct functioning of GRAPHVIZ])
+    AC_LANG_PUSH(C)
+
+    dnl cach values of some global variables
+    graphviz_save_CFLAGS="$CFLAGS"
+    graphviz_save_CPPFLAGS="$CPPFLAGS"
+    graphviz_save_LDFLAGS="$LDFLAGS"
+    graphviz_save_LIBS="$LIBS"
+
+    dnl temporarily add GRAPHVIZ specific stuff to global variables
+    CFLAGS="$CFLAGS -Wno-unknown-pragmas"
+    CPPFLAGS="$CPPFLAGS $GRAPHVIZ_CPPFLAGS"
+    LDFLAGS="$LDFLAGS $GRAPHVIZ_LDFLAGS"
+    LIBS="$GRAPHVIZ_LIBS $LIBS"
+
+    dnl can we link a mini program with graphviz?
+    AC_TRY_LINK([$graphviz_headers],
+      [$graphviz_testprg],
+      [graphviz_functional=yes],
+      [graphviz_functional=no])
+
+    if test "$graphviz_functional" = yes; then
+      AC_MSG_RESULT([$graphviz_functional])
+    else
+      AC_MSG_RESULT([$graphviz_functional:
+                     CPPFLAGS=$CPPFLAGS
+                     LDFLAGS=$LDFLAGS
+                     LIBS=$LIBS])
+      AC_MSG_RESULT([Can not link to GRAPHVIZ Library])
+      AC_MSG_RESULT([odeSolver will be installed without Graphviz functionality])
+    fi
+
+    dnl reset global variables to cached values
+    CFLAGS=$graphviz_save_CFLAGS
+    CPPFLAGS=$graphviz_save_CPPFLAGS
+    LDFLAGS=$graphviz_save_LDFLAGS
+    LIBS=$graphviz_save_LIBS
+    AC_LANG_POP(C)
+
+  else
+    $graphviz_functional=no
+  fi
+
+  fi
+
+  if test "$graphviz_functional" = yes; then
+    AC_DEFINE([USE_GRAPHVIZ], 1, [Define to 1 to use the GRAPHVIZ Library])
+    AC_SUBST(USE_GRAPHVIZ, 1)
+    AC_DEFINE_UNQUOTED(GRAPHVIZ_MAJOR_VERSION, $dot_major_version,
+              [Major Version of GRAPHVIZ Library])
+dnl    AC_SUBST(GRAPHVIZ_MAJOR_VERSION,  $dot_major_version)
+    AC_DEFINE_UNQUOTED(GRAPHVIZ_MINOR_VERSION, $dot_minor_version,
+              [Minor Version of GRAPHVIZ Library])
+dnl    AC_SUBST(GRAPHVIZ_MINOR_VERSION, $dot_minor_version)
+    AC_SUBST(GRAPHVIZ_CPPFLAGS)
+    AC_SUBST(GRAPHVIZ_LDFLAGS)
+    AC_SUBST(GRAPHVIZ_RPATH)
+    AC_SUBST(GRAPHVIZ_LIBS)
+  else
+    AC_DEFINE([USE_GRAPHVIZ], 0, [Define to 1 to use the GRAPHVIZ Library])
+    AC_SUBST(USE_GRAPHVIZ, 0)
+    AC_SUBST(GRAPHVIZ_CPPFLAGS, "")
+    AC_SUBST(GRAPHVIZ_LDFLAGS, "")
+    AC_SUBST(GRAPHVIZ_RPATH, "")
+    AC_SUBST(GRAPHVIZ_LIBS, "")
+  fi
+])
diff --git a/config/sbml.m4 b/config/sbml.m4
new file mode 100644
index 0000000..27262e3
--- /dev/null
+++ b/config/sbml.m4
@@ -0,0 +1,212 @@
+dnl $Id: sbml.m4,v 1.16 2010/09/28 13:41:08 raimc Exp $
+
+
+dnl
+dnl look for SBML Library headers in some standard set of directories
+dnl
+AC_DEFUN([AC_SBML_PATH],
+[ AC_MSG_CHECKING([for SBML Library headers])
+  for ac_dir in             \
+    /usr                    \
+    /usr/local              \
+    /usr/local/include      \
+    /usr/include            \
+    /usr/local/share        \
+    /opt                    \
+    ;                       \
+  do
+    if test -r "$ac_dir/include/sbml/SBMLTypes.h"; then
+      ac_SBML_includes="${ac_dir}/include"
+      with_libsbml="$ac_dir"
+      SBML_CPPFLAGS="-I$ac_SBML_includes"
+      AC_MSG_RESULT([yes])
+      break
+    fi
+  done
+
+  AC_MSG_CHECKING([for SBML Library])
+  ac_dir=`echo "$ac_SBML_includes" | sed s/include/lib/`
+  for ac_extension in a so sl dylib; do
+    if test -r $ac_dir/libsbml.$ac_extension; then
+      SBML_LDFLAGS="-L$ac_dir"
+      if test "$HOST_TYPE" = darwin; then
+        SBML_RPATH=
+      else
+        if test "$HOST_TYPE" = aix; then
+          SBML_RPATH="-Wl,-R,$ac_dir"
+        else
+          SBML_RPATH="-Wl,-rpath,$ac_dir"
+        fi
+      fi
+      SBML_LIBS="-lsbml"
+      AC_MSG_RESULT([yes])
+      break
+    elif test -r ${ac_dir}64/libsbml.$ac_extension; then
+      SBML_LDFLAGS="-L${ac_dir}64"
+      if test "$HOST_TYPE" = darwin; then
+        SBML_RPATH=
+      else
+        if test "$HOST_TYPE" = aix; then
+          SBML_RPATH="-Wl,-R,${ac_dir}64"
+        else
+          SBML_RPATH="-Wl,-rpath,${ac_dir}64"
+        fi
+      fi
+      SBML_LIBS="-lsbml"
+      AC_MSG_RESULT([yes])
+      break
+    fi
+  done
+])
+
+dnl
+dnl Check --with-libsbml[=PREFIX] is specified and libsbml is installed.
+dnl
+AC_DEFUN([CONFIG_LIB_SBML],
+[ AC_PREREQ(2.57)dnl
+  AC_ARG_WITH([libsbml],
+  AC_HELP_STRING([--with-libsbml=PREFIX],
+                 [Use SBML Library]),
+              [with_libsbml=$withval],
+              [with_libsbml=yes])
+
+  dnl specify prefix for libxerces-c
+  AC_ARG_WITH([xerces],
+  AC_HELP_STRING([--with-xerces=PREFIX],
+                 [Use Xerces XML Library]),
+  [with_xerces=$withval],
+  [with_xerces=no])
+
+  dnl specify prefix for libexpat
+  AC_ARG_WITH([expat],
+  AC_HELP_STRING([--with-expat=PREFIX],
+                 [Use Expat XML Library]),
+            [with_expat=$withval],
+            [with_expat=no])
+
+  dnl specify prefix for libxml2,
+  dnl libxml2 is default, but path can be added
+  AC_ARG_WITH([libxml2],
+  AC_HELP_STRING([--with-libxml2=PREFIX],
+                 [Use XML2 XML Library]),
+            [with_libxml2=$withval],
+            [with_libxml2=yes])
+
+
+
+  dnl set SBML related variables
+  SBML_CPPFLAGS=
+  SBML_LDFLAGS=
+  SBML_RPATH=
+  SBML_LIBS=
+  if test "$with_libsbml" = yes; then
+    AC_SBML_PATH
+  else
+    SBML_CPPFLAGS="-I$with_libsbml/include"
+    SBML_LDFLAGS="-L$with_libsbml/lib"
+
+    dnl ac_SBML_includes=$with_libsbml
+    if test "$HOST_TYPE" = darwin; then
+      SBML_RPATH=
+    else
+      if test "$HOST_TYPE" = aix; then
+        SBML_RPATH="-Wl,-R,$with_libsbml/lib"
+      else
+        SBML_RPATH="-Wl,-rpath,$with_libsbml/lib"
+      fi
+    fi
+
+    SBML_LIBS="-lsbml"
+  fi
+
+
+  dnl set default with_libxml2 to no
+  dnl if option --with-expat was given
+  if test "$with_expat" != no; then
+     with_libxml2=no
+  fi
+  if test "$with_xerces" != no; then
+     with_libxml2=no
+  fi
+
+  dnl add xerces flags
+  if test "$with_xerces" != no; then
+     if test "$with_xerces" = yes; then
+       SBML_LIBS="$SBML_LIBS -lxerces-c"
+     else
+       SBML_LDFLAGS="$SBML_LDFLAGS -L$with_xerces/lib"
+       SBML_LIBS="$SBML_LIBS -lxerces-c"
+     fi
+  fi
+
+  dnl add expat flags
+  if test "$with_expat" != no; then
+     if test "$with_expat" = yes; then
+      SBML_LIBS="$SBML_LIBS -lexpat"
+     else
+      SBML_LIBS="$SBML_LIBS -lexpat"
+      SBML_LDFLAGS="$SBML_LDFLAGS -L$with_expat/lib"
+     fi
+  fi
+
+  dnl add libxml2 flags
+  if test "$with_libxml2" != no; then
+     if test "$with_libxml2" = yes; then
+      SBML_LIBS="$SBML_LIBS -lxml2"
+     else
+      SBML_LIBS="$SBML_LIBS -lxml2"
+      SBML_LDFLAGS="$SBML_LDFLAGS -L$with_libxml2/lib"
+     fi
+  fi
+
+  dnl check if SBML Library is functional
+  AC_MSG_CHECKING([for correct functioning of SBML])
+  AC_LANG_PUSH([C++])
+  dnl cach values of some global variables
+  sbml_save_CPPFLAGS="$CPPFLAGS"
+  sbml_save_LDFLAGS="$LDFLAGS"
+  sbml_save_LIBS="$LIBS"
+  dnl add SBML specific stuff to global variables
+  CPPFLAGS="$SBML_CPPFLAGS $CPPFLAGS"
+  LDFLAGS="$SBML_RPATH $SBML_LDFLAGS $LDFLAGS"
+  LIBS="$SBML_LIBS $LIBS"
+  dnl can we link a mini program with libsbml?
+  AC_TRY_LINK([#include <sbml/SBMLTypes.h>],
+    [SBMLReader_t *sr; sr = SBMLReader_create(); SBMLReader_free(sr);],
+    [sbml_functional=yes],
+    [sbml_functional=no])
+
+  if test "$sbml_functional" = yes; then
+    AC_MSG_RESULT([$sbml_functional])
+  else
+    AC_MSG_RESULT([$sbml_functional:
+                   CPPFLAGS=$CPPFLAGS
+                   LDFLAGS=$LDFLAGS
+                   LIBS=$LIBS])
+    AC_MSG_ERROR([Can not link to SBML Library:
+		  Please, make sure to use libSBML version >= 3.4.1])
+  fi
+
+  dnl reset global variables to cached values
+  CPPFLAGS=$sbml_save_CPPFLAGS
+  LDFLAGS=$sbml_save_LDFLAGS
+  LIBS=$sbml_save_LIBS
+  AC_LANG_POP([C++])
+
+  dnl add the CPPFLAGS and LDFLAGS for tcc online compilation
+  AC_DEFINE_UNQUOTED([SBML_CPPFLAGS], "${with_libsbml}/include/sbml",
+            [SBML include directories])
+  AC_DEFINE_UNQUOTED([SBML_CPPFLAGS2], "${with_libsbml}/include/sbml",
+            [SBML include directories])
+  AC_DEFINE_UNQUOTED([SBML_LDFLAGS], "${with_libsbml}/lib",
+            [SBML lib directories])
+  AC_DEFINE_UNQUOTED([SBML_LIBS], "sbml",
+            [SBML libs])
+
+  AC_SUBST(SBML_CPPFLAGS)
+  AC_SUBST(SBML_LDFLAGS)
+  AC_SUBST(SBML_RPATH)
+  AC_SUBST(SBML_LIBS)
+
+
+])
diff --git a/config/sundials.m4 b/config/sundials.m4
new file mode 100644
index 0000000..2cc86fc
--- /dev/null
+++ b/config/sundials.m4
@@ -0,0 +1,126 @@
+dnl $Id: sundials.m4,v 1.17 2010/09/28 13:41:08 raimc Exp $
+
+dnl
+dnl look for SUNDIALS Library headers in some standard set of directories
+dnl
+AC_DEFUN([AC_SUNDIALS_PATH],
+[ AC_MSG_CHECKING([for SUNDIALS Library headers])
+  for ac_dir in                 \
+    /usr                        \
+    /usr/local                  \
+    /usr/local/sundials         \
+    /usr/local/include/sundials \
+    /usr/include/sundials       \
+    /usr/local/share/sundials   \
+    /opt/sundials               \
+    ;                           \
+  do
+    if test -r "$ac_dir/include/cvodes/cvodes.h"; then
+      ac_SUNDIALS_path=$ac_dir
+      with_sundials="$ac_dir"
+      SUNDIALS_CPPFLAGS="-I$ac_dir/include"
+      AC_MSG_RESULT([yes])
+      break
+    fi
+  done
+
+  AC_MSG_CHECKING([for SUNDIALS Library])
+  ac_dir=$ac_SUNDIALS_path
+  for ac_extension in a so sl dylib; do
+    if test -r $ac_dir/lib/libsundials_cvodes.$ac_extension; then
+      SUNDIALS_LDFLAGS="-L$ac_dir/lib"
+      SUNDIALS_LIBS="-lsundials_ida -lsundials_kinsol -lsundials_cvodes -lsundials_nvecserial -lm"
+      AC_MSG_RESULT([yes])
+      break
+    elif test -r $ac_dir/lib64/libsundials_cvodes.$ac_extension; then
+      SUNDIALS_LDFLAGS="-L$ac_dir/lib64"
+      SUNDIALS_LIBS="-lsundials_ida -lsundials_kinsol -lsundials_cvodes -lsundials_nvecserial -lm"
+      AC_MSG_RESULT([yes])
+      break
+    fi
+  done
+])
+
+dnl
+dnl Check --with-sundials[=PREFIX] is specified
+dnl and SUNDIALS is installed.
+dnl
+AC_DEFUN([CONFIG_LIB_SUNDIALS],
+[ AC_PREREQ(2.57)dnl
+  AC_ARG_WITH([sundials],
+  AC_HELP_STRING([--with-sundials=PREFIX],
+                 [Use SUNDIALS Library]),
+              [with_sundials=$withval],
+              [with_sundials=yes])
+  dnl set SUNDIALS related variables
+  SUNDIALS_CPPFLAGS=
+  SUNDIALS_LDFLAGS=
+  SUNDIALS_LIBS=
+  if test "$with_sundials" = yes; then
+    AC_SUNDIALS_PATH
+  else
+    SUNDIALS_CPPFLAGS="-I$with_sundials/include"
+    SUNDIALS_LDFLAGS="-L$with_sundials/lib"
+    SUNDIALS_LIBS="-lsundials_ida -lsundials_kinsol -lsundials_cvodes -lsundials_nvecserial -lm"
+  fi
+  dnl check if SUNDIALS Library is functional
+  AC_MSG_CHECKING([correct functioning of SUNDIALS])
+  AC_LANG_PUSH(C)
+  dnl cach values of some global variables
+  sundials_save_CPPFLAGS="$CPPFLAGS"
+  sundials_save_LDFLAGS="$LDFLAGS"
+  sundials_save_LIBS="$LIBS"
+  dnl temporarily add SUNDIALS specific stuff to global variables
+  CPPFLAGS="$CPPFLAGS $SUNDIALS_CPPFLAGS"
+  LDFLAGS="$LDFLAGS $SUNDIALS_LDFLAGS"
+  LIBS="$SUNDIALS_LIBS $LIBS"
+  dnl can we link a mini program with cvodes?
+  AC_TRY_LINK([#include <sundials/sundials_nvector.h>
+#include <nvector/nvector_serial.h>],
+    [N_Vector y; y = N_VNew_Serial(3); N_VDestroy_Serial(y);],
+    [sundials_functional=yes],
+    [sundials_functional=no])
+
+  if test "$sundials_functional" = yes; then
+    AC_MSG_RESULT([$sundials_functional])
+  else
+    AC_MSG_RESULT([$sundials_functional:
+                   CPPFLAGS=$CPPFLAGS
+                   LDFLAGS=$LDFLAGS
+                   LIBS=$LIBS])
+    AC_MSG_ERROR([Can not link to SUNDIALS Library])
+  fi
+  dnl reset global variables to cached values
+  CPPFLAGS=$sundials_save_CPPFLAGS
+  LDFLAGS=$sundials_save_LDFLAGS
+  LIBS=$sundials_save_LIBS
+  AC_LANG_POP(C)
+
+  dnl add the CPPFLAGS and LDFLAGS for tcc online compilation
+  AC_DEFINE_UNQUOTED([SUNDIALS_CPPFLAGS], "${with_sundials}/include",
+            [SUNDIALS include directories])
+  AC_DEFINE_UNQUOTED([SUNDIALS_LDFLAGS], "${with_sundials}/lib",
+            [SUNDIALS lib directories])
+  AC_DEFINE_UNQUOTED([SUNDIALS_LIB1], "sundials_ida",
+            [SUNDIALS libs])
+  AC_DEFINE_UNQUOTED([SUNDIALS_LIB2], "sundials_kinsol",
+            [SUNDIALS libs])
+  AC_DEFINE_UNQUOTED([SUNDIALS_LIB3], "sundials_cvodes",
+            [SUNDIALS libs])
+  AC_DEFINE_UNQUOTED([SUNDIALS_LIB4], "sundials_nvecserial",
+            [SUNDIALS libs])
+  AC_DEFINE_UNQUOTED([SUNDIALS_LIB5], "sundials_shared",
+            [SUNDIALS libs])
+  AC_DEFINE_UNQUOTED([SUNDIALS_LIB6], "m",
+            [SUNDIALS libs])
+  AC_DEFINE([USE_SUNDIALS], 1,
+            [Define to 1 to use the SUNDIALS Library])
+
+  AC_SUBST(USE_SUNDIALS, 1)
+  AC_SUBST(SUNDIALS_LDFLAGS)
+  AC_SUBST(SUNDIALS_LIBS)
+  AC_SUBST(SUNDIALS_CPPFLAGS)
+
+
+
+])
diff --git a/config/tcc.m4 b/config/tcc.m4
new file mode 100644
index 0000000..12b5f26
--- /dev/null
+++ b/config/tcc.m4
@@ -0,0 +1,133 @@
+dnl $Id: tcc.m4,v 1.6 2007/08/20 18:02:12 chfl Exp $
+
+
+dnl
+dnl look for TCC library headers
+dnl
+AC_DEFUN([AC_TCC_PATH],
+[ AC_MSG_CHECKING([for TCC Library headers])
+  for ac_dir in             \
+    /usr/local/include      \
+    /usr/include            \
+    /usr/local/share        \
+    /opt                    \
+    ;                       \
+  do
+    if test -r "$ac_dir/libtcc.h"; then
+      ac_TCC_includes="$ac_dir"
+      with_libtcc="$ac_dir"
+      TCC_CPPFLAGS="-I$ac_TCC_includes"
+      AC_MSG_RESULT([yes])
+      break
+    fi
+  done
+
+  AC_MSG_CHECKING([for TCC Library])
+  ac_dir=`echo "$ac_TCC_includes" | sed s/include/lib/`
+  for ac_extension in a so sl dylib; do
+    if test -r $ac_dir/libtcc.$ac_extension; then
+      TCC_LDFLAGS="-L$ac_dir"
+      if test "$HOST_TYPE" = darwin; then
+        TCC_RPATH=
+      else
+        TCC_RPATH="-Wl,-rpath,$ac_dir"
+      fi
+
+dnl !!! -m32 is required for tcc but in conflict with all others
+      TCC_LIBS="-ldl -ltcc"
+dnl      TCC_LIBS=""
+      AC_MSG_RESULT([yes])
+      break
+    fi
+  done
+])
+
+dnl
+dnl Check --with-libtcc[=PREFIX] is specified and libtcc is installed.
+dnl
+AC_DEFUN([CONFIG_LIB_TCC],
+[ AC_PREREQ(2.57)dnl
+  AC_ARG_WITH([libtcc],
+  AC_HELP_STRING([--with-libtcc=PREFIX],
+                 [Use TCC Library]),
+              [with_libtcc=$withval],
+              [with_libtcc=no])
+
+  dnl set TCC related variables
+  TCC_CPPFLAGS=
+  TCC_LDFLAGS=
+  TCC_RPATH=
+  TCC_LIBS=
+  if test "$with_libtcc" = yes; then
+    AC_TCC_PATH
+  else
+    TCC_CPPFLAGS="-I$with_libtcc/include"
+    TCC_LDFLAGS="-L$with_libtcc/lib"
+    if test "$HOST_TYPE" = darwin; then
+      TCC_RPATH=
+    else
+      TCC_RPATH="-Wl,-rpath,$with_libtcc/lib"
+    fi
+    TCC_LIBS="-ldl -ltcc"
+  fi
+
+dnl !!! -m32 is required for tcc on x86_64 but in conflict with all others
+
+  dnl check if TCC Library is functional
+  AC_MSG_CHECKING([for correct functioning of TCC])
+  AC_LANG_PUSH(C)
+  dnl cach values of some global variables
+  tcc_save_CPPFLAGS="$CPPFLAGS"
+  tcc_save_LDFLAGS="$LDFLAGS"
+  tcc_save_LIBS="$LIBS"
+  dnl add TCC specific stuff to global variables
+  CPPFLAGS="$CPPFLAGS $TCC_CPPFLAGS"
+  LDFLAGS="$LDFLAGS $TCC_RPATH $TCC_LDFLAGS"
+  LIBS=" $TCC_LIBS $LIBS"
+  dnl set headers and test program
+  tcc_headers="#include <libtcc.h>"
+  tcc_testprg="TCCState *s;s = tcc_new();"
+  dnl can we link a mini program with libtcc?
+  AC_TRY_LINK([$tcc_headers],
+     [$tcc_testprg],
+     [tcc_functional=yes],
+     [tcc_functional=no])
+
+  if test "$tcc_functional" = yes; then
+    AC_MSG_RESULT([$tcc_functional])
+  else
+    AC_MSG_RESULT([$tcc_functional:
+                   CPPFLAGS=$CPPFLAGS
+                   LDFLAGS=$LDFLAGS
+                   LIBS=$LIBS])
+    AC_MSG_RESULT([Can not link to TCC Library: online compilation disabled!])
+  fi
+  dnl reset global variables to cached values
+  CPPFLAGS=$tcc_save_CPPFLAGS
+  LDFLAGS=$tcc_save_LDFLAGS
+  LIBS=$tcc_save_LIBS
+  AC_LANG_POP(C)
+  if test "$tcc_functional" = yes; then
+    dnl add the CPPFLAGS and LDFLAGS for tcc online compilation
+    AC_DEFINE_UNQUOTED([TCC_CPPFLAGS], "${with_libtcc}/include",
+              [TCC include directories])
+    AC_DEFINE_UNQUOTED([TCC_LDFLAGS], "${with_libtcc}/lib",
+              [TCC lib directories])
+    AC_DEFINE_UNQUOTED([TCC_LIBS], "tcc",
+              [TCC libs])
+    AC_DEFINE([USE_TCC], 1, [Define to 1 to use the TCC Library])
+    AC_SUBST(USE_TCC, 1)
+    AC_SUBST(TCC_CPPFLAGS)
+    AC_SUBST(TCC_LDFLAGS)
+    AC_SUBST(TCC_RPATH)
+    AC_SUBST(TCC_LIBS)
+  else
+    AC_DEFINE([USE_TCC], 0, [Define to 1 to use the TCC Library])
+    AC_SUBST(USE_TCC, 0)
+    AC_SUBST(TCC_CPPFLAGS, "")
+    AC_SUBST(TCC_LDFLAGS, "")
+    AC_SUBST(TCC_RPATH, "")
+    AC_SUBST(TCC_LIBS, "")
+  fi
+
+])
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..1178f3e
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,252 @@
+dnl ---------------------------------------------------------------------------
+dnl Autoconf initialization.
+dnl
+dnl Bug reports are sent to {raim,xtof}@tbi.univie.ac.at
+dnl ---------------------------------------------------------------------------
+
+if test -f "VERSION.txt"; then
+   m4_define(ODES_VERSION,
+       m4_esyscmd(cat VERSION.txt  | sed 's/\-.*$//' | tr -d '\n\r'))
+fi
+AC_INIT([odeSolver],ODES_VERSION, [{raim,xtof}@tbi.univie.ac.at], [SBML_odeSolver])
+AC_CONFIG_AUX_DIR(build-aux)
+AC_CONFIG_MACRO_DIR(config)
+
+AC_CONFIG_SRCDIR(src/util.c)
+AC_CONFIG_HEADERS(src/config.h)
+
+AM_INIT_AUTOMAKE
+
+AC_CANONICAL_HOST
+
+case $host_os in
+  *linux*)
+    HOST_TYPE="linux"
+    SHAREDLIBEXT="so"
+    ;;
+
+  *solaris*)
+    HOST_TYPE="solaris"
+    SHAREDLIBEXT="so"
+    ;;
+
+  *cygwin*)
+    HOST_TYPE="cygwin"
+    SHAREDLIBEXT="so"
+    ;;
+
+  *mingw*)
+    HOST_TYPE="mingw"
+    SHAREDLIBEXT="dll"
+    ;;
+
+  *aix*)
+    HOST_TYPE="aix"
+    SHAREDLIBEXT="a"
+    ;;
+
+  *darwin*)
+    HOST_TYPE="darwin"
+    SHAREDLIBEXT="dylib"
+    ;;
+esac
+AC_SUBST(HOST_TYPE)
+AC_SUBST(SHAREDLIBEXT)
+AC_DEFINE_UNQUOTED([SHAREDLIBEXT], ".${SHAREDLIBEXT}",
+    			    [shared library extrension])
+
+dnl Adding global compilation parameters
+AC_SEARCH_LIBS([dlopen],[dl])
+
+dnl ---------------------------------------------------------------------------
+dnl Checks for various programs and packages.
+dnl ---------------------------------------------------------------------------
+
+LT_INIT([win32-dll disable-static pic-only])
+AC_PROG_CXX
+AC_PROG_CC
+AM_PROG_CC_C_O # deprecated as of automake 1.14
+AC_PROG_CPP
+AC_PROG_INSTALL
+AC_PROG_MAKE_SET
+
+AC_PATH_PROG([AUTOCONF],[autoconf],[autoconf])
+AC_PATH_PROG([ACLOCAL],[aclocal],[aclocal])
+AC_PATH_PROG([MAKE],[make],[make])
+AC_PATH_PROG([AR],[ar],[ar])
+AC_PATH_PROG([SWIG],[swig],[swig])
+AC_PATH_PROG([PERL],[perl],[perl])
+
+dnl AC_MSG_NOTICE([LIBS=$LIBS])
+
+CONFIG_LIB_SBML
+CONFIG_LIB_SUNDIALS
+dnl CONFIG_LIB_TCC
+CONFIG_LIB_GRACE
+CONFIG_LIB_GRAPHVIZ
+
+dnl add the CFLAGS and LDFLAGS for tcc online compilation
+if test "$prefix" = "NONE"; then
+   ourPrefix=$ac_default_prefix;
+else
+   ourPrefix=$prefix;
+fi
+AC_DEFINE_UNQUOTED([SOSLIB_CPPFLAGS], "${ourPrefix}/include",
+				    [SOSLIB include directories])
+AC_DEFINE_UNQUOTED([SOSLIB_LDFLAGS], "${ourPrefix}/lib",
+				     [SOSLIB lib directories])
+AC_DEFINE_UNQUOTED([SOSLIB_LIBS], "ODES",
+				  [SOSLIB libs])
+
+dnl configure options
+dnl AC_ARG_WITH(bindings, [  --with-bindings  build perl bindings])
+dnl AM_CONDITIONAL(MAKE_BINDINGS, test "$with_bindings" = "yes")
+
+AC_ARG_ENABLE(unittest,
+              [AS_HELP_STRING([--enable-unittest],
+                              [turn on unit tests. [default=no]])],
+              [PKG_CHECK_MODULES([CHECK],[check >= 0.9.8],[enable_unittest=yes],
+                                 [AC_MSG_ERROR([failed to find Check])])],
+              [enable_unittest=no])
+AM_CONDITIONAL([UNITTEST], [test "x$enable_unittest" = "xyes"])
+
+dnl ---------------------------------------------------------------------------
+dnl Checks for libraries.
+dnl ---------------------------------------------------------------------------
+
+AC_LANG([C])
+AC_CHECK_LIB(m, isnan)
+
+dnl ---------------------------------------------------------------------------
+dnl Checks for header files.
+dnl ---------------------------------------------------------------------------
+
+AC_HEADER_STDC
+AC_CHECK_HEADERS(errno.h)
+AC_CHECK_HEADERS(math.h)
+
+dnl ---------------------------------------------------------------------------
+dnl Checks for typedefs, structures, and compiler characteristics.
+dnl ---------------------------------------------------------------------------
+
+AC_C_BIGENDIAN
+AC_C_CONST
+AC_TYPE_SIZE_T
+AC_EXEEXT
+AC_OBJEXT
+
+dnl ---------------------------------------------------------------------------
+dnl Miscellaneous
+dnl ---------------------------------------------------------------------------
+
+dnl ---------------------------------------------------------------------------
+dnl Output
+dnl ---------------------------------------------------------------------------
+
+AC_CONFIG_FILES([Makefile])
+dnl AC_CONFIG_FILES([doc/Makefile])
+dnl AC_CONFIG_FILES([doc/SBML_odeSolver.1])
+AC_CONFIG_FILES([examples/Makefile])
+AC_CONFIG_FILES([odeSolver/Makefile])
+AC_CONFIG_FILES([src/Makefile])
+AC_CONFIG_FILES([src/libODES.pc])
+AC_CONFIG_FILES([tutorial/Makefile])
+AC_CONFIG_FILES([unittest/Makefile])
+dnl AC_CONFIG_FILES([bindings/Makefile])
+dnl AC_CONFIG_FILES([bindings/swig/Makefile])
+dnl AC_CONFIG_FILES([bindings/perl/Makefile])
+dnl AC_CONFIG_FILES([bindings/perl/Makefile.PL])
+
+AC_OUTPUT
+
+dnl ---------------------------------------------------------------------------
+dnl Inform users of settings
+dnl ---------------------------------------------------------------------------
+
+if test "$sbml_functional" != no; then
+  yes_libsbml="yes"
+else
+  yes_libsbml="no"
+fi
+
+if test "$sundials_functional" != no; then
+  yes_libsundials="yes"
+else
+  yes_libsundials="no"
+fi
+
+dnl if test "$tcc_functional" != no; then
+dnl  yes_tcc="yes"
+dnl else
+dnl  yes_tcc="no"
+dnl fi
+
+if test "$grace_functional" != no; then
+  yes_grace="yes"
+else
+  yes_grace="no"
+fi
+
+
+if test "$graphviz_functional" != no; then
+  yes_graphviz="yes"
+else
+  yes_graphviz="no"
+fi
+
+
+echo ""
+echo "Build Settings for ${PACKAGE_TARNAME} v${PACKAGE_VERSION}:"
+echo "----------------------------------"
+echo "  host type            = $HOST_TYPE"
+echo "  shared lib extension = $SHAREDLIBEXT"
+echo "  install dir          = $prefix"
+echo "  CC                   = $CC"
+echo "  CFLAGS               = $CFLAGS"
+echo "  LDFLAGS              = $LDFLAGS"
+echo "  LIBS                 = $LIBS"
+echo "  SBML Library         = $yes_libsbml"
+if test "$yes_libsbml" = yes; then
+  echo "       CPPFLAGS        = $SBML_CPPFLAGS"
+  echo "       LDFLAGS         = $SBML_LDFLAGS"
+  echo "       LIBS            = $SBML_LIBS"
+fi
+echo "  SUNDIALS Library       = $yes_libsundials"
+if test "$yes_libsundials" = yes; then
+  echo "       CPPFLAGS        = $SUNDIALS_CPPFLAGS"
+  echo "       LDFLAGS         = $SUNDIALS_LDFLAGS"
+  echo "       LIBS            = $SUNDIALS_LIBS"
+fi
+dnl echo "  TCC Library       = $yes_tcc"
+dnl if test "$yes_tcc" = yes; then
+dnl   echo "       CPPFLAGS        = $TCC_CPPFLAGS"
+dnl   echo "       LDFLAGS         = $TCC_LDFLAGS"
+dnl   echo "       LIBS            = $TCC_LIBS"
+dnl else
+dnl    echo "TCC online compilation will NOT be installed!"
+dnl fi
+echo "  GRACE                = $yes_grace"
+if test "$yes_grace" = yes; then
+  echo "       CPPFLAGS        = $GRACE_CPPFLAGS"
+  echo "       LDFLAGS         = $GRACE_LDFLAGS"
+  echo "       LIBS            = $GRACE_LIBS"
+else
+   echo "XMGRACE functionality will NOT be installed!"
+fi
+echo "  GRAPHVIZ             = $yes_graphviz"
+if test "$yes_graphviz" = yes; then
+  echo "       CPPFLAGS        = $GRAPHVIZ_CPPFLAGS"
+  echo "       LDFLAGS         = $GRAPHVIZ_LDFLAGS"
+  echo "       LIBS            = $GRAPHVIZ_LIBS"
+else
+   echo "GRAPHVIZ functionality will NOT be installed!"
+fi
+
+echo ""
+echo "NOTE:"
+echo "     SOSlib has the following dependencies:"
+echo "     (*) SUNDIALS suite v2.3.0"
+echo "     (*) libSBML v3.4.1 or later"
+dnl echo "     (*) libxerces-c v2.7.0 or expat v2.0.0"
+dnl echo "     (*) tcc from http://savannah.nongnu.org/projects/tinycc"
+echo ""
diff --git a/cvode_failures.txt b/cvode_failures.txt
new file mode 100644
index 0000000..07dedbf
--- /dev/null
+++ b/cvode_failures.txt
@@ -0,0 +1,50 @@
+Please, consult p. 49 ff. of the CVODE User Guide to learn about 
+the CVode failures.
+Here only some short information, taken from there, and personal 
+experiences with the SBML_odeSolver are given.
+
+0	SUCCESS:
+	CVode completed integration with no errors.
+-1	CVODE_NO_MEM:
+	The cvode_mem argument passed to CVode was null.
+	Should not happen in SBML_odeSolver. 
+-2	ILL_INPUT:
+	One of the inputs to CVode was illegal, including the 
+	situation when one of the error vectors becomes < 0 
+	during CVode's internal time stepping. The printed
+	error message will give specific information.
+	In SBML_odeSolver, this failure occurs when e.g. 
+	the outtime passed with --time is `0'. 
+-3 	TOO_MUCH_WORK:
+	The solver took MXSTEP internal steps but could not
+	reach outtime. MXSTEP is an argument of the iopt
+	input array passed to CVode. 
+	In the SBML_odeSolver it is set to 100000, which is 
+	quite high.
+-4	TOO_MUCH_ACC:
+	The solver could not satisfy the accuracy demanded by 
+	SBML_odeSolver (i.e. can currently not be set by the user)
+	for some internal step. Has so far never occured with the
+	SBML_odeSolver.
+-5	ERR_FAILURE:
+	Error test failures occured too many times during one internal
+	time step or occured with |h| = hmin.
+	Has so far never occured with the SBML_odeSolver.
+-6 	CONV_FAILURE:
+	Convergence test failures occurred too many times 
+	(= MXMCF = 10) during one internal time step or occured with 
+	|h| = hmin. 
+	This can sometimes happen with or without use of the
+	automatically generated Jacobian matrix. For that case
+	the odeSolver tries to integrate again, but now without or
+	with use of the Jacobian matrix, i.e. resetting the option
+	'-j'. 
+	In other cases this error can be avoided if allowing a bigger
+	error tolerance with command line option '--error'; default
+	is 1e-18.
+-7	SETUP_FAILURE:
+	The linear solver's setup routine failed in an unrecoverable 
+	manner. Has so far never occured with the SBML_odeSolver.
+-8	SOLVE_FAILURE:
+        The linear solver's solve routine failed in an unrecoverable
+	manner. Has so far never occured with the SBML_odeSolver.
diff --git a/cvode_statistics.txt b/cvode_statistics.txt
new file mode 100644
index 0000000..be13bd7
--- /dev/null
+++ b/cvode_statistics.txt
@@ -0,0 +1,17 @@
+The SBML_odeSolver prints some statistics from CVode's integration
+procedure after a finished integration. Please consult the 
+CVODE User Guide for more detailed information. Here is some
+short information on the printed statistics, as taken from p. 52 f.
+of the User Guide.
+
+nst	cumulative number of internal steps taken by
+	the solver. 
+nfe	number of calls to the ODE evaluation function `f'
+nsetups	numver of calls to the linear solver's setup routine	
+nje	numver of Jacobian evalutions, i.e. either calls to the 
+	function that evaluates the automatically generated
+	Jacobian matrix expressions or the internal approximation
+	CVDenseDQJac.
+nni 	number of NEWTON iterations performed.
+ncfn	number of nonlinear convergence failures that have occured.
+netf	number of local error test failures that have occured.
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..8619648
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,8 @@
+# $Id: Makefile.am,v 1.1 2005/09/01 14:08:35 chfl Exp $
+info_TEXINFOS = libODES.texinfo
+
+man_MANS = SBML_odeSolver.1
+
+EXTRA_DIST = $(man_MANS)
+
+# End of file
diff --git a/doc/README b/doc/README
new file mode 100644
index 0000000..16aba9f
--- /dev/null
+++ b/doc/README
@@ -0,0 +1,32 @@
+
+
+
+USING THE SOSlib COMMANDLINE APPLICATIONS
+
+The best documentation for both the usage of the command-line application
+odeSolver/SBML_odeSolverApp and of some example applications 
+can be found online at
+http://www.tbi.univie.ac.at/~raim/odeSolver/doc/app.html
+
+The README file in the main directory also gives short instructions.
+
+Running odeSolver -h will give you an overview of input options.
+
+
+
+
+USING SOSlib AS A LIBRARY (API)
+
+You can either run `doxygen SOSlib.doxy' in the main folder, which will
+produce documentation files in this folder.
+
+Alternatively you can access the doxygen documentation online at
+http://www.tbi.univie.ac.at/~raim/odeSolver/doc/api.html
+
+The example applications (folder applications) show how to use
+SOSlib as a library.
+
+The source code of the library (folder src), the main command-line
+application (folder odeSolver) and the example applications (folder
+examples) is well documented. You can also just see there for 
+information. 
diff --git a/doc/SBML_odeSolver.1.in b/doc/SBML_odeSolver.1.in
new file mode 100644
index 0000000..8d6f9ed
--- /dev/null
+++ b/doc/SBML_odeSolver.1.in
@@ -0,0 +1,123 @@
+.\" .ER
+.TH "SBMLodeSolver" "l" "1.6.0" "Christoph Flamm" "libODES"
+
+.SH "NAME"
+SBML_odeSolver \- construct and integrate ODEs from SBML models
+
+.SH "SYNOPSIS"
+\fBSBML_odeSolver\fP MODEL.xml [[\-a] [\-e] [\-f] [\-g] [-h] [\-i] [\-j] [\-k]
+[\-m] [\-n] [\-o] [\-r] [\-s] [\-v] [\-w] [\-x] [\-y]
+[--gvformate=\fIEPS|JPG\fP]
+[--model=\fImodelfile\fP]
+[--mpath=\fImodelpath\fP]]
+
+.SH "DESCRIPTION"
+.I SBML_odeSolver
+The SBML ODE Solver is a programming library, accessible also as a
+simple command-line tool, for (1) constructing a system of ordinary
+differential equations (ODE) from chemical reaction networks and (2)
+numerically integrating the ODEs to obtain the time course of
+concentrations of chemical species and (3) basic visualization of
+model structure and integration results. It is based on SBML, the
+recently developed standard for description of biological reaction
+networks, the SBML library libSBML for parsing SBML and constructing
+the ODE system, and on CVode for numerical integration of the derived
+system of ODEs. Optional data visualization modules allow printing of
+integration results directly to Grace and drawing graphs of the
+reaction network, and a Jacobian interaction graph of the ODE system
+via graphviz graph drawing library.
+
+.SH "VERSION"
+This man page documents version @VERSION@ libODES.
+
+.SH "OPTIONS"
+.TP
+.B \-a, \--all
+Print all available results
+.TP
+.B \-e, \--equations
+Print model and derived ODE system
+.TP
+.B \--error=\fIFLOAT\fP
+Set absolute error tolerance to \fIFLOAT\fP
+.TP
+.B \-f, \--onthefly
+Print results during integration
+.TP
+.B \-g, \--modelgraph
+Draw graph of reaction network
+.TP
+.B \--gvformate=\fIEPS|JPG\fP
+Set output formate to graphviz module
+.TP
+.B \-h, \--help
+Print usage information
+.TP
+.B \-i, \--interactive
+Start interactive mode
+.TP
+.B \-j, \--jacobian
+Toggle use of Jacobian matrix
+.TP
+.B \-k, \--reactions
+Print time course of the reactions
+.TP
+.B \--mxstep=\fIINT\fP
+Set maximum step number to \fIINT\fP
+.TP
+.B \--model=\fIFOO.xml\fP
+Process SBML model \fIFOO.xml\fP
+.TP
+.B \--modelgraph
+Draw a graph of the reaction network
+.TP
+.B \--mpath=\fIPATH\fP
+Set absolute path to SBML model file to \fIPATH\fP
+.TP
+.B \-n, \--event
+Detect and evaluate events
+.TP
+.B \-o, \--printsbml
+Construct the ODEs system and print as SBML
+.TP
+.B \--printstep=\fISTR\fP
+Set parameter for batch integration 0 to value in 50 steps to \fISTR\fP
+.TP
+.B \--printstep=\fIINT\fP
+Set timsteps of output to \fIINT\fP
+.TP
+.B \-r, \--rates
+Print time course of the ODEs
+.TP
+.B \--rerror=\fIFLOAT\fP
+Set relative error tolerance to \fIFLOAT\fP
+.TP
+.B \-s, \--steadyState
+Abort integration at steady state.
+.TP
+.B \--spath=\fIPATH\fP
+Set absolute path to SBML schema files to \fIPATH\fP
+.TP
+.B \--time=\fIFLOAT\fP
+Set integration end time to \fIFLOAT\fP
+.TP
+.B \-v, \--validate
+Validate SBML input file
+.TP
+.B \-w, \--write
+Write results to file or save XMGrace file
+.TP
+.B \-y, \--jacobianTime
+Print time courde of Jacobian matrix
+.TP
+.B \-x, \--xmgrace
+Print results to XMGrace
+
+
+.SH "AUTHORS"
+Rainer Machne and Christoph Flamm.
+
+.SH "BUGS"
+If in doubt our program is right, nature is at fault.
+Comments should be sent to <odes at tbi.univie.ac.at>.
+
diff --git a/doc/libODES.texinfo b/doc/libODES.texinfo
new file mode 100644
index 0000000..b80205a
--- /dev/null
+++ b/doc/libODES.texinfo
@@ -0,0 +1,348 @@
+\input texinfo
+ at c -*-texinfo-*-
+ at c Last changed Time-stamp: <2005-10-26 16:24:17 xtof>
+ at set revision $Id: libODES.texinfo,v 1.4 2005/10/26 14:25:08 chfl Exp $
+ at setfilename libODES.info
+ at settitle libODES
+ at ifclear Version
+ at set Version 1.6.0
+ at end ifclear
+ at iftex
+ at afourpaper
+ at end iftex
+ at ifinfo
+ at setchapternewpage odd
+ at end ifinfo
+ at titlepage
+ at sp 10
+ at title{libODES}
+ at sp
+ at subtitle{A Library for numerically solving ODEs}
+
+ at vskip 0pt plus 1filll
+Copyright @copyright{2005} @author{Rainer Machne and Christoph Flamm}
+ at c @smallexample
+Revision @value{revision}
+ at c @end smallexample
+ at end titlepage
+
+ at node Top, Introduction, (dir), (dir)
+ at comment node-name, next,          previous, up
+
+ at ifinfo
+This file documents the libODES Version @value{Version}
+
+Copyright @copyright{2005} Rainer Machne and Christoph Flamm
+ at end ifinfo
+
+ at menu
+* Introduction::
+* API Reference::
+* Function Index::
+* Variable Index::
+* Datatype Index::
+ at end menu
+
+ at node Introduction, API Reference, Top, Top
+ at chapter Introduction
+
+The core of the libODES is formed by a collection of routines for
+basic algebraic and numerical treatment of systems of ordinary
+differential equations (ODEs). These routines can be accessed through
+stand-alone programs, such as @code{SBML_odeSolver} which should be
+sufficient for most users. For those who wish to develop their own
+programs we provide a library which can be linked to your own code.
+
+This document only describes the library and will be primarily useful
+to programmers. The stand-alone programs are described in separate man
+pages. The latest version of the package including source code and
+html versions of the documentation can be found at
+ at ifclear texi2html
+ at url{http://www.tbi.univie.ac.at/software/odeSolver/}.
+ at end ifclear
+ at ifset texi2html
+ at ifhtml
+the <a href="http://www.tbi.univie.ac.at/software/odeSolver/">
+libODES page</a>.
+ at end ifhtml
+ at end ifset
+This manual documents version @value{Version}.
+
+Please send comments and bug reports to
+ at ifclear texi2html
+ at email{odes@@tbi.univie.ac.at}.
+ at end ifclear
+ at ifset texi2html
+ at ifhtml
+<a href="mailto:raim at tbi.univie.ac.at">
+<Rainer.Machne at tbi.univie.ac.at></a>.
+<a href="mailto:xtof at tbi.univie.ac.at">
+<Christoph.Flamm at tbi.univie.ac.at></a>.
+ at end ifhtml
+ at end ifset
+
+ at node API Reference, Function Index, Introduction, Top
+ at comment  node-name,  next,  previous,  up
+ at chapter API Reference
+
+Information is ordered by include header files of the libSOS.
+
+ at menu
+* ASTIndexNameNode.h::
+* commandLine.h::
+* cvodedata.h::
+* cvodedatatype.h::
+* drawGraph.h::
+* exportdefs.h::
+* integratorInstance.h::
+* integratorSettings.h::
+* interactive.h::
+* modelSimplify.h::
+* odeConstruct.h::
+* odemodeldatatype.h::
+* odeModel.h::
+* odeSolver.h::
+* options.h::
+* printModel.h::
+* processAST.h::
+* sbml.h::
+* sbmlResults.h::
+* solverError.h::
+* util.h::
+* variableIndex.h::
+ at end menu
+
+ at c +-----------------------------+
+ at c | begin of ASTIndexNameNode.h |
+ at node ASTIndexNameNode.h, commandLine.h, , API Reference
+ at section @file{ASTIndexNameNode.h}
+
+Class @code{ASTIndexNameNode} is inherited from the libsbml class
+ at code{ASTNode} and adds the two private fields @code{index} and
+ at code{indexSet} to this class. It is intended to make the name lookup
+fast, since the index relates the name of a species in an AST to its
+concentration (position) in the @code{cvodeResults.values} array.
+
+ at subsection public class methodes
+ at deftypemethod ASTIndexNameNode void ASTIndexNameNode ()
+Default constructor.
+ at end deftypemethod
+
+ at deftypemethod  ASTIndexNameNode {unsigned int} getIndex ()
+Returns value of the object field @code{index}.
+ at end deftypemethod
+
+ at deftypemethod ASTIndexNameNode bool isSetIndex ()
+Returns @code{true} if the object field @code{index} is set,
+ at code{false} otherwise
+ at end deftypemethod
+
+ at subsection private class data
+ at deftypeivar ASTIndexNameNode {unsigned int} index
+Holdes index of species in the concentration array.
+ at end deftypeivar
+ at deftypeivar ASTIndexNameNode int indexSet
+Flag to indicate if object field @code{index} is set.
+ at end deftypeivar
+ at c | end of ASTIndexNameNode.h |
+ at c +---------------------------+
+
+ at c +---------------+
+ at c | commandLine.h |
+ at node commandLine.h, cvodedata.h, ASTIndexNameNode.h, API Reference
+ at section @file{commandLine.h}
+ at c | commandLine.h |
+ at c +---------------+
+
+ at c +-------------+
+ at c | cvodedata.h |
+ at node cvodedata.h, cvodedatatype.h, commandLine.h, API Reference
+ at section @file{cvodedata.h}
+ at deftp {Data type} cvodeData_t {}
+ at example
+struct @{
+ odeModel_t*      @var{model};
+ int              @var{nvalues};
+ double*          @var{value};
+ float            @var{currenttime};
+ double**         @var{sensitivity};
+ cvodeSettings_t* @var{opt};
+ int*             @var{trigger};
+ int              @var{steadystate};
+ cvodeResults_t*  @var{results};
+ int              @var{run}
+@}
+ at end example
+ at var{model} is a pointer to the the model system.  @var{nvalues} is
+the size of array @var{value} holding the values of all variables and
+parameters of the model system.
+ at end deftp
+
+ at deftp {Data type} cvodeResults_t {}
+ at end deftp
+
+ at deftp {Data type} odeModel_t {}
+ at end deftp
+ at c | cvodedata.h |
+ at c +-------------+
+
+ at c +-----------------+
+ at c | cvodedatatype.h |
+ at node cvodedatatype.h, drawGraph.h, cvodedata.h, API Reference
+ at section @file{cvodedatatype.h}
+ at c | cvodedatatype.h |
+ at c +-----------------+
+
+ at c +-------------+
+ at c | drawGraph.h |
+ at node drawGraph.h, exportdefs.h, cvodedatatype.h, API Reference
+ at section @file{drawGraph.h}
+ at c | drawGraph.h |
+ at c +-------------+
+
+ at c +--------------+
+ at c | exportdefs.h |
+ at node exportdefs.h, integratorInstance.h, drawGraph.h, API Reference
+ at section @file{exportdefs.h}
+ at c | exportdefs.h |
+ at c +--------------+
+
+ at c +----------------------+
+ at c | integratorInstance.h |
+ at node integratorInstance.h, integratorSettings.h, exportdefs.h, API Reference
+ at section @file{integratorInstance.h}
+
+ at deftypefun {} {integratorInstance_t*} IntegratorInstance_create (odeModel_t* @var{om}, cvodeSettings_t* @var{opt}) 
+Creates and returns a new @code{integratorInstance} structure. Reads
+initial values from @var{om} (@code{odeModel} structure) and
+integration settings from @var{opt} (@code{cvodeSettings}
+structure). Two internal structures are create @code{cvodeData},
+holding data to perform the integration of the next timstep and
+ at code{cvodeResults}, holding the integration output data for all
+previous timesteps of the integration. In addition the structure
+ at code{cvodeSolver} is initialized.
+ at end deftypefun
+ at c | integratorInstance.h |
+ at c +----------------------+
+
+ at c +----------------------+
+ at c | integratorSettings.h |
+ at node integratorSettings.h, interactive.h, integratorInstance.h, API Reference
+ at section @file{integratorSettings.h}
+ at c | integratorSettings.h |
+ at c +----------------------+
+
+ at c +---------------+
+ at c | interactive.h |
+ at node interactive.h, modelSimplify.h, integratorSettings.h, API Reference
+ at section @file{interactive.h}
+ at c | interactive.h |
+ at c +---------------+
+
+ at c +-----------------+
+ at c | modelSimplify.h |
+ at node modelSimplify.h, odeConstruct.h, interactive.h, API Reference
+ at section @file{modelSimplify.h}
+ at c | modelSimplify.h |
+ at c +-----------------+
+
+ at c +----------------+
+ at c | odeConstruct.h |
+ at node odeConstruct.h, odemodeldatatype.h, modelSimplify.h, API Reference
+ at section @file{odeConstruct.h}
+ at c | odeConstruct.h |
+ at c +----------------+
+
+ at c +--------------------+
+ at c | odemodeldatatype.h |
+ at node odemodeldatatype.h, odeModel.h, odeConstruct.h, API Reference
+ at section @file{odemodeldatatype.h}
+ at c | odemodeldatatype.h |
+ at c +--------------------+
+
+ at c +------------+
+ at c | odeModel.h |
+ at node odeModel.h, odeSolver.h, odemodeldatatype.h, API Reference
+ at section @file{odeModel.h}
+ at c | odeModel.h |
+ at c +------------+
+
+ at c +-------------+
+ at c | odeSolver.h |
+ at node odeSolver.h, options.h, odeModel.h, API Reference
+ at section @file{odeSolver.h}
+ at c | odeSolver.h |
+ at c +-------------+
+
+ at c +-----------+
+ at c | options.h |
+ at node options.h, printModel.h, odeSolver.h, API Reference
+ at section @file{options.h}
+ at c | options.h |
+ at c +-----------+
+
+ at c +--------------+
+ at c | printModel.h |
+ at node printModel.h, processAST.h, options.h, API Reference
+ at section @file{printModel.h}
+ at c | printModel.h |
+ at c +--------------+
+
+ at c +--------------+
+ at c | processAST.h |
+ at node processAST.h, sbml.h, printModel.h, API Reference
+ at section @file{processAST.h}
+ at c | processAST.h |
+ at c +--------------+
+
+ at c +--------+
+ at c | sbml.h |
+ at node sbml.h, sbmlResults.h, processAST.h, API Reference
+ at section @file{sbml.h}
+ at c | sbml.h |
+ at c +--------+
+
+ at c +---------------+
+ at c | sbmlResults.h |
+ at node sbmlResults.h, solverError.h, sbml.h, API Reference
+ at section @file{sbmlResults.h}
+ at c | sbmlResults.h |
+ at c +---------------+
+
+ at c +---------------+
+ at c | solverError.h |
+ at node solverError.h, util.h, sbmlResults.h, API Reference
+ at section @file{solverError.h}
+ at c | solverError.h |
+ at c +---------------+
+
+ at c +--------+
+ at c | util.h |
+ at node util.h, variableIndex.h, solverError.h, API Reference
+ at section @file{util.h}
+ at c | util.h |
+ at c +--------+
+
+ at c +-----------------+
+ at c | variableIndex.h |
+ at node variableIndex.h, , util.h, API Reference
+ at section @file{variableIndex.h}
+ at c | variableIndex.h |
+ at c +-----------------+
+
+ at node Function Index, Variable Index, API Reference, Top
+ at unnumbered Function Index
+ at printindex fn
+
+ at node Variable Index, Datatype Index, Function Index, Top
+ at unnumbered Variable Index
+ at printindex vr
+
+ at node Datatype Index, , Variable Index, Top
+ at unnumbered Datatype Index
+ at printindex tp
+
+ at contents
+ at bye
+
+ at c End of file
diff --git a/doc/os_v1-0.pdf b/doc/os_v1-0.pdf
new file mode 100644
index 0000000..b355645
Binary files /dev/null and b/doc/os_v1-0.pdf differ
diff --git a/doc/os_v1-5.pdf b/doc/os_v1-5.pdf
new file mode 100644
index 0000000..321de61
Binary files /dev/null and b/doc/os_v1-5.pdf differ
diff --git a/examples.doxy b/examples.doxy
new file mode 100644
index 0000000..787b7c8
--- /dev/null
+++ b/examples.doxy
@@ -0,0 +1,1228 @@
+# Doxyfile 1.4.4
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = "SOSlib Example Applications"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         = "1.6.0"
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = doc/examples
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of 
+# source files, where putting all generated files in the same directory would 
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
+# Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# This tag can be used to specify the encoding used in the generated output. 
+# The encoding is not always determined by the language that is chosen, 
+# but also whether or not the output is meant for Windows or non-Windows users. 
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
+# forces the Windows encoding (this is the default for the Windows binary), 
+# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING   = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is 
+# used as the annotated text. Otherwise, the brief description is used as-is. 
+# If left blank, the following values are used ("$name" is automatically 
+# replaced with the name of the entity): "The $name class" "The $name widget" 
+# "The $name file" "is" "provides" "specifies" "contains" 
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
+# inherited members of a class in the documentation of that class as if those 
+# members were ordinary class members. Constructors, destructors and assignment 
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like the Qt-style comments (thus requiring an 
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
+# a new page for each member. If set to NO, the documentation of a member will 
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
+# sources only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
+# only. Doxygen will then generate output that is more tailored for Java. 
+# For instance, namespaces will be presented as packages, qualified scopes 
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = NO
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories 
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# in the documentation. The default is YES.
+
+SHOW_DIRECTORIES       = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
+# doxygen should invoke to get the current version for each file (typically from the 
+# version control system). Doxygen will invoke the program by executing (via 
+# popen()) the command <command> <input-file>, where <command> is the value of 
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
+# provided by doxygen. Whatever the progam writes to standard output 
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  =  ./examples
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
+
+FILE_PATTERNS          = *.c *.cpp *.h
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
+# directories that are symbolic links (a Unix filesystem feature) are excluded 
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories. Note that the wildcards are matched 
+# against the file with absolute path, so to exclude all test directories 
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = 
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
+
+INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = 
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = 
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = YES
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = YES
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = YES
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_WIDTH    = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes 
+# that lay further from the root node will be omitted. Note that setting this 
+# option to 1 or 2 may greatly reduce the computation time needed for large 
+# code bases. Also note that a graph may be further truncated if the graph's 
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 
+# the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, which results in a white background. 
+# Warning: Depending on the platform used, enabling this option may lead to 
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = NO
diff --git a/examples/ASTIndexTest.c b/examples/ASTIndexTest.c
new file mode 100644
index 0000000..726e6a1
--- /dev/null
+++ b/examples/ASTIndexTest.c
@@ -0,0 +1,86 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2005-10-26 17:52:40 raim>
+  $Id: ASTIndexTest.c,v 1.4 2005/10/26 15:53:16 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#include <sbml/math/FormulaParser.h>
+#include <sbml/math/FormulaFormatter.h>
+#include <sbmlsolver/ASTIndexNameNode.h>
+
+int main(void)
+{
+    unsigned int i;
+    char *formula;
+    ASTNode_t *top = SBML_parseFormula("A * B");
+    ASTNode_t *temp = ASTNode_create();
+
+    for (i = 0; i != ASTNode_getNumChildren(top); i++)
+    {
+        ASTNode_t *node = ASTNode_getChild(top, i);
+        ASTNode_t *replacement = ASTNode_createIndexName();
+
+        assert(!ASTNode_isIndexName(node));
+        assert(!ASTNode_isSetIndex(node));
+
+        ASTNode_setName(replacement, ASTNode_getName(node));
+        ASTNode_setIndex(replacement, i);
+        ASTNode_addChild(temp, replacement);
+    }
+
+    ASTNode_swapChildren(temp, top);
+    ASTNode_free(temp);
+
+    for (i = 0; i != ASTNode_getNumChildren(top); i++)
+    {
+        ASTNode_t *node = ASTNode_getChild(top, i);
+        
+        assert(ASTNode_isIndexName(node));
+        assert(ASTNode_isSetIndex(node));
+        printf("index of %s is %u\n", ASTNode_getName(node), ASTNode_getIndex(node));
+    }
+
+    formula = SBML_formulaToString(top);
+    printf("top : %s\n", formula);
+    free(formula);
+
+    ASTNode_free(top);
+
+    return(EXIT_SUCCESS);
+}
diff --git a/examples/ASTgetIndexTest.c b/examples/ASTgetIndexTest.c
new file mode 100644
index 0000000..a6482e2
--- /dev/null
+++ b/examples/ASTgetIndexTest.c
@@ -0,0 +1,121 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-09-24 14:40:15 raim>
+  $Id: ASTgetIndexTest.c,v 1.7 2008/09/24 14:10:36 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbml/math/FormulaParser.h>
+#include <sbml/math/FormulaFormatter.h>
+#include <sbmlsolver/ASTIndexNameNode.h>
+#include <sbmlsolver/processAST.h>
+
+void printIndex(ASTNode_t *f)
+{
+  unsigned int i;
+  if (ASTNode_isSetIndex(f))
+  {
+    printf("index of %s is %u\n", ASTNode_getName(f), ASTNode_getIndex(f));
+  }
+  else
+  {  
+    for (i = 0; i != ASTNode_getNumChildren(f); i++)
+    {
+      printIndex(ASTNode_getChild(f,i));
+    }
+  }  
+}
+
+int main(void)
+{
+    unsigned int i;
+    char *formula;
+    ASTNode_t *old = SBML_parseFormula("(A * B )+ 1/(C+D)^2");
+    ASTNode_t *new;
+    int nvalues = 6;
+	int n;
+    char *names[nvalues];
+    names[0] = "A";
+    names[1] = "x";
+    names[2] = "B";
+    names[3] = "y";
+    names[4] = "C";
+    names[5] = "D";
+
+    /* index the original AST */
+    new = indexAST(old, nvalues, names);
+    /* print by looping through AST */
+    printIndex(new);
+
+
+    formula = SBML_formulaToString(old);
+    printf("old : %s\n", formula);
+    free(formula);
+    formula = SBML_formulaToString(new);
+    printf("new : %s\n", formula);
+    
+    free(formula);
+
+    /* retrieve List of indices */
+    List_t *index = List_create();
+    ASTNode_getIndices(new, index);
+
+    for ( i=0; i<List_size(index); i++ )
+    {
+      int *k;
+      k = List_get(index,i);
+      printf("IDX of %s is %d\n", names[*k], *k);
+      free(k);
+    }
+    List_free(index);
+ 
+    /* retrieve boolean array of indices */
+
+    int *indexBool = ASTNode_getIndexArray(new, nvalues);
+
+    for ( n=0; n<nvalues; n++ )
+    {
+      printf("symbol %s occurs in equation? %s\n",
+	     names[n], indexBool[n] ? "yes" : "no"); 
+    }
+    
+    ASTNode_free(old);
+    ASTNode_free(new);    
+    free(indexBool);
+
+    return(EXIT_SUCCESS);
+}
diff --git a/examples/ChangingIntegratorInstance.c b/examples/ChangingIntegratorInstance.c
new file mode 100644
index 0000000..5245629
--- /dev/null
+++ b/examples/ChangingIntegratorInstance.c
@@ -0,0 +1,158 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-03-10 16:36:58 raim>
+  $Id: ChangingIntegratorInstance.c,v 1.14 2008/03/10 19:24:47 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ *     Rainer Machne
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+
+#include <sbmlsolver/odeModel.h>
+#include <sbmlsolver/integratorInstance.h>
+#include <sbmlsolver/solverError.h>
+
+void DumpState(
+    integratorInstance_t *iia,
+    integratorInstance_t *iib,
+    variableIndex_t *v1, variableIndex_t *v2
+    )
+{
+    printf(
+        " %g %g %g %g %g\n", 
+        IntegratorInstance_getTime(iia),
+        IntegratorInstance_getVariableValue(iia, v1),
+        IntegratorInstance_getVariableValue(iia, v2),
+        IntegratorInstance_getVariableValue(iib, v1),
+        IntegratorInstance_getVariableValue(iib, v2));
+}
+
+int doit(void)
+{
+    int i ;
+    double value;
+    cvodeSettings_t *settings ;
+    variableIndex_t *s1, *s2;
+    integratorInstance_t *integratorInstanceA;
+    integratorInstance_t *integratorInstanceB;
+
+    odeModel_t *model = ODEModel_createFromFile("basic-model1-forward-l2.xml");
+    RETURN_ON_ERRORS_WITH(1);
+
+    s1 = ODEModel_getVariableIndex(model, "S1");
+    s2 = ODEModel_getVariableIndex(model, "S2");
+    RETURN_ON_ERRORS_WITH(1);
+
+    /* Creating settings with default values */
+    settings = CvodeSettings_create();
+
+    
+    /* Setting end time to .1, number of time steps to 1 and NULL
+       instead of an optional predefined time series (double *); due
+       to Indefinitely == 1, Printstep 1 will be ignored and Time =
+       0.1 will be used as timestep for infinite integration */
+    CvodeSettings_setTime(settings, .1, 1);
+
+    /* Setting Cvode Parameters: absolute and relative tolerances and
+       maximal internal step */
+    CvodeSettings_setErrors(settings, 1e-18, 1e-14, 500);
+
+    
+    /* Setting Integration Switches: see documentation or
+       example simpleIntegratorInstance.c for details on
+       the passed values */
+    CvodeSettings_setSwitches(settings, 1, 1, 0, 0, 0, 0, 0);
+
+    /* use compiled model */
+    CvodeSettings_setCompileFunctions(settings, 0);
+
+    /* Generate two independent integrator instances from the same
+       odeModel and cvodeSettings */
+    integratorInstanceA = IntegratorInstance_create(model, settings);
+    RETURN_ON_ERRORS_WITH(1);
+
+    integratorInstanceB = IntegratorInstance_create(model, settings);
+    RETURN_ON_ERRORS_WITH(1);
+
+    DumpState(integratorInstanceA, integratorInstanceB, s1, s2);
+
+    for (i=0; i != 30; i++)
+    {
+
+        /* run integrations A and B */
+        IntegratorInstance_integrateOneStep(integratorInstanceA);
+        RETURN_ON_ERRORS_WITH(1);
+
+        IntegratorInstance_integrateOneStep(integratorInstanceB);
+        RETURN_ON_ERRORS_WITH(1);
+
+	/* While variable s1 from integration A is between 1e-15 and
+	   1e-16, set variables s1 and s2 in integration B to some
+	   value.  This function also takes care of creating and
+	   freeing CVODE solver structures when ODE variables are
+	   changed!
+	*/
+	value = IntegratorInstance_getVariableValue(integratorInstanceA, s1);
+        if ( value < 1.e-15 && value >  1.e-16 )
+        {
+            IntegratorInstance_setVariableValue(integratorInstanceB,
+						s1,1.5e-15);
+            IntegratorInstance_setVariableValue(integratorInstanceB,
+						s2,1.5e-15);
+        }
+
+        DumpState(integratorInstanceA, integratorInstanceB, s1, s2);
+
+    }
+
+    IntegratorInstance_free(integratorInstanceA);
+    IntegratorInstance_free(integratorInstanceB);
+    VariableIndex_free(s1);
+    VariableIndex_free(s2);
+    ODEModel_free(model);
+    CvodeSettings_free(settings);
+
+    return 0;
+}
+
+int main(void)
+{
+    int result = doit();
+    char *errors = SolverError_dumpToString();
+
+    fprintf(stderr, "%s", errors);
+    SolverError_freeDumpString(errors);
+
+    return result;
+}
diff --git a/examples/ChangingParameterIntegrator.c b/examples/ChangingParameterIntegrator.c
new file mode 100644
index 0000000..5b22b65
--- /dev/null
+++ b/examples/ChangingParameterIntegrator.c
@@ -0,0 +1,127 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-03-10 16:37:28 raim>
+  $Id: ChangingParameterIntegrator.c,v 1.8 2008/03/10 19:24:47 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+
+#include <sbmlsolver/integratorInstance.h>
+#include <sbmlsolver/solverError.h>
+
+void DumpState(
+    integratorInstance_t *iia,
+    variableIndex_t *v1, variableIndex_t *v2
+    )
+{
+    printf(
+        " %g %g %g\n", 
+        IntegratorInstance_getTime(iia),
+        IntegratorInstance_getVariableValue(iia, v1),
+        IntegratorInstance_getVariableValue(iia, v2));
+}
+
+int doit(void)
+{
+    int i ;
+    cvodeSettings_t *settings ;
+    variableIndex_t *s1, *s2, *k1;
+    integratorInstance_t *integratorInstanceA;
+    odeModel_t *model = ODEModel_createFromFile("basic.xml");
+    RETURN_ON_ERRORS_WITH(1);
+
+    s1 = ODEModel_getVariableIndex(model, "S1");
+    s2 = ODEModel_getVariableIndex(model, "S2");
+    k1 = ODEModel_getVariableIndex(model, "k_1");
+    RETURN_ON_ERRORS_WITH(1);
+    
+    /* Creating settings with default values */
+    settings = CvodeSettings_create();
+
+    
+    /* Setting end time to .1, number of time steps to 1 and NULL
+       instead of an optional predefined time series (double *); due
+       to Indefinitely == 1, Printstep 1 will be ignored and Time =
+       0.1 will be used as timestep for infinite integration */
+    CvodeSettings_setTime(settings, .1, 1);
+
+    /* Setting Cvode Parameters: absolute and relative tolerances and
+       maximal internal step */
+    CvodeSettings_setErrors(settings, 1e-18, 1e-14, 500);
+
+    
+    /* Setting Integration Switches: see documentation or
+       example simpleIntegratorInstance.c for details on
+       the passed values */
+    CvodeSettings_setSwitches(settings, 1, 1, 0, 0, 0, 0, 0);
+
+    CvodeSettings_setCompileFunctions(settings, 1); /* compile model */
+
+    integratorInstanceA = IntegratorInstance_create(model, settings);
+    RETURN_ON_ERRORS_WITH(1);
+
+    DumpState(integratorInstanceA, s1, s2);
+
+    for (i=0; i != 50; i++)
+    {
+        IntegratorInstance_integrateOneStep(integratorInstanceA);
+        RETURN_ON_ERRORS_WITH(1);
+
+        if (IntegratorInstance_getVariableValue(integratorInstanceA, s1) < 7.5e-16)
+            IntegratorInstance_setVariableValue(integratorInstanceA, k1, 2.0);
+
+        DumpState(integratorInstanceA,  s1, s2);
+
+    }
+
+    IntegratorInstance_free(integratorInstanceA);
+    VariableIndex_free(s1);
+    VariableIndex_free(s2);
+    ODEModel_free(model);
+    CvodeSettings_free(settings);
+
+    return 0;
+}
+
+int main(void)
+{
+    int result = doit();
+    char *errors = SolverError_dumpToString();
+
+    fprintf(stderr, errors);
+    SolverError_freeDumpString(errors);
+
+    return result;
+}
diff --git a/examples/FIMtest.c b/examples/FIMtest.c
new file mode 100644
index 0000000..17f8111
--- /dev/null
+++ b/examples/FIMtest.c
@@ -0,0 +1,220 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2009-02-12 16:19:59 raim>
+  $Id: FIMtest.c,v 1.5 2009/02/12 09:31:12 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Stefan Mueller and James Lu
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/sensSolver.h>
+#include <sbmlsolver/solverError.h>
+
+
+int
+main(void)
+{
+  int i, j, k;
+  int neq, nsens;
+  odeModel_t *om;
+  odeSense_t *os;
+  cvodeSettings_t *set;
+  integratorInstance_t *ii;
+
+  variableIndex_t *p1, *p2, *p3, *vi;
+  double *weights;
+  
+  /* Setting SBML ODE Solver integration parameters  */
+  set = CvodeSettings_create();
+  CvodeSettings_setTime(set, 30, 10);
+  CvodeSettings_setErrors(set, 1e-15, 1e-10, 1e9);
+  CvodeSettings_setMethod(set, 0, 5);
+  /*   CvodeSettings_setStoreResults(set, 0); */
+  CvodeSettings_setJacobian(set, 1);         /* for testing only */
+  CvodeSettings_setCompileFunctions(set, 0); /* for testing only */
+  /* CvodeSettings_dump(set); */
+  CvodeSettings_setFIM(set);                 /* ACTIVATE FIM */
+  
+  /* creating the odeModel */
+  om = ODEModel_createFromFile("MAPK.xml");
+  ii = IntegratorInstance_create(om, set);
+
+  printf("\nFirst try a few integrations without sensitivity\n");
+  IntegratorInstance_dumpNames(ii);
+  printf("\n");
+  for ( i=0; i<2; i++ )
+  {
+    printf("Run #%d:\n", i);
+    IntegratorInstance_integrate(ii);
+/*     IntegratorInstance_dumpData(ii); */
+    IntegratorInstance_printResults(ii, stderr);
+    IntegratorInstance_reset(ii);
+    printf("finished\n\n");
+  }
+
+  /* ACTIVATE SENSITIVITY ANALYSIS */
+
+  CvodeSettings_setSensitivity(set, 1);
+  /* 0: simultaneous 1: staggered, 2: staggered1
+     see CVODES user guide for details */
+  CvodeSettings_setSensMethod(set, 0);
+
+  /* reset integrator to new settings */
+  IntegratorInstance_reset(ii);
+
+  printf("Now Activate Sensitivity\n\n");
+
+  os = IntegratorInstance_getSensitivityModel(ii);
+  nsens = ODESense_getNsens(os);
+  
+  printf("nsens  = %i\n\n", nsens);
+  for ( i=0; i<nsens; i++ ) {
+      vi = ODESense_getSensParamIndexByNum(os, i);
+      printf("%s\n", ODEModel_getVariableName(om, vi) );
+      VariableIndex_free(vi);
+  }
+
+  printf("\n");
+  printf("sensitivities calculated for all constants\n");
+  
+  p1 = ODESense_getSensParamIndexByNum(os, 1);
+  p2 = ODESense_getSensParamIndexByNum(os, 2);
+  p3 = ODESense_getSensParamIndexByNum(os, 3);
+  printf("sensitivities printed for constants %s, %s, %s\n\n",
+	 ODEModel_getVariableName(om, p1),
+	 ODEModel_getVariableName(om, p2),
+	 ODEModel_getVariableName(om, p3));
+
+  /* create non-default weights for computation of FIM */
+  /* weights should be extracted from objective function! */
+
+  neq = ODEModel_getNeq(om);
+  
+  ASSIGN_NEW_MEMORY_BLOCK(weights, neq, double, 0);
+  for ( i=0; i<neq; i++ )
+      weights[i] = 1.;
+  
+  /* set weights (to non-default values) */
+  IntegratorInstance_setFIMweights(ii, weights, neq);
+    
+  /* *** *** *** *** *** *** discrete data *** *** *** *** *** *** *** */
+  CvodeSettings_setDiscreteObservation(set);
+  printf("DISCRETE DATA\n\n");
+
+  i = 0;
+  while ( i < 2 )
+  {
+    printf("Run #%d:\n", i);
+    while( !IntegratorInstance_timeCourseCompleted(ii) )
+    {
+      IntegratorInstance_dumpPSensitivities(ii, p1);
+      IntegratorInstance_dumpPSensitivities(ii, p2);
+      IntegratorInstance_dumpPSensitivities(ii, p3);
+      if ( !IntegratorInstance_integrateOneStep(ii) )
+	break;
+    }    
+    IntegratorInstance_dumpPSensitivities(ii, p1);
+    IntegratorInstance_dumpPSensitivities(ii, p2);
+    IntegratorInstance_dumpPSensitivities(ii, p3);
+
+    fprintf(stderr, "FIM =\n");
+    for ( j=0; j<nsens; j++ )
+    {
+      for ( k=0; k<nsens; k++ )
+	fprintf(stderr, "%g ", IntegratorInstance_getFIM(ii,j,k));
+      fprintf(stderr, "\n");
+    }
+    fprintf(stderr, "\n");
+
+    IntegratorInstance_reset(ii);
+    
+    i++;
+  }
+
+  /* *** *** *** *** *** *** continuous data *** *** *** *** *** *** *** */
+  CvodeSettings_unsetDiscreteObservation(set);
+  printf("CONTINUOUS DATA\n\n");
+
+  i = 0;
+  while ( i < 2 )
+  {
+    printf("Run #%d:\n", i);
+    while( !IntegratorInstance_timeCourseCompleted(ii) )
+    {
+      IntegratorInstance_dumpPSensitivities(ii, p1);
+      IntegratorInstance_dumpPSensitivities(ii, p2);
+      IntegratorInstance_dumpPSensitivities(ii, p3);
+      if ( !IntegratorInstance_integrateOneStep(ii) )
+	break;
+    }    
+    IntegratorInstance_dumpPSensitivities(ii, p1);
+    IntegratorInstance_dumpPSensitivities(ii, p2);
+    IntegratorInstance_dumpPSensitivities(ii, p3);
+
+    /* calculate FIM */
+    IntegratorInstance_CVODEQuad(ii);
+
+    fprintf(stderr, "FIM =\n");
+    for ( j=0; j<nsens; j++ )
+    {
+      for ( k=0; k<nsens; k++ )
+	fprintf(stderr, "%g ", IntegratorInstance_getFIM(ii,j,k));
+      fprintf(stderr, "\n");
+    }
+    fprintf(stderr, "\n");
+
+    IntegratorInstance_reset(ii);
+    
+    i++;
+  }
+
+  fprintf(stderr, "finished\n");
+
+  /*   VariableIndex_free(y); */
+  VariableIndex_free(p1);
+  VariableIndex_free(p2);
+  VariableIndex_free(p3);
+  free(weights);
+  
+  /* now we have the results and can free the inputs */
+  IntegratorInstance_free(ii);
+  CvodeSettings_free(set);
+  ODEModel_free(om);
+
+  return (EXIT_SUCCESS);  
+}
+
+/* End of file */
diff --git a/examples/MAPK.linobjfun b/examples/MAPK.linobjfun
new file mode 100644
index 0000000..3dcbd10
--- /dev/null
+++ b/examples/MAPK.linobjfun
@@ -0,0 +1,8 @@
+MKKK 0
+MKKK_P MKKK_P 
+MKK 0 
+MKK_P 0 
+MKK_PP 0 
+MAPK 0 
+MAPK_P 0 
+MAPK_PP 0 
\ No newline at end of file
diff --git a/examples/MAPK.objfun b/examples/MAPK.objfun
new file mode 100644
index 0000000..dcda796
--- /dev/null
+++ b/examples/MAPK.objfun
@@ -0,0 +1,3 @@
+# Example of a nonlinear objective function used in adjsenstest.c
+1/2* MKKK_P^2  
+
diff --git a/examples/MAPK.xml b/examples/MAPK.xml
new file mode 100644
index 0000000..ac6a908
--- /dev/null
+++ b/examples/MAPK.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns = "http://www.sbml.org/sbml/level1" level = "1" version = "1">
+<!-- This model has been slightly modified for testing purposes 
+     from a model obtained from http://sbml.org/models/.
+     The model has been published in
+     Kholodenko BN. Negative feedback and ultrasensitivity can bring 
+     about oscillations in the mitogen-activated protein kinase cascades. 
+     Eur. J. Biochem. 267: 1583-1588 (2000). -->
+   <model name = "oscillating_MAPK">
+      <listOfCompartments>
+         <compartment name = "uVol" volume = "1"/>
+      </listOfCompartments>
+      <listOfSpecies>
+         <specie name = "MKKK" boundaryCondition = "false" initialAmount = "90" compartment = "uVol"/>
+         <specie name = "MKKK_P" boundaryCondition = "false" initialAmount = "10" compartment = "uVol"/>
+         <specie name = "MKK" boundaryCondition = "false" initialAmount = "280" compartment = "uVol"/>
+         <specie name = "MKK_P" boundaryCondition = "false" initialAmount = "10" compartment = "uVol"/>
+         <specie name = "MKK_PP" boundaryCondition = "false" initialAmount = "10" compartment = "uVol"/>
+         <specie name = "MAPK" boundaryCondition = "false" initialAmount = "280" compartment = "uVol"/>
+         <specie name = "MAPK_P" boundaryCondition = "false" initialAmount = "10" compartment = "uVol"/>
+         <specie name = "MAPK_PP" boundaryCondition = "false" initialAmount = "10" compartment = "uVol"/>
+      </listOfSpecies>
+      <listOfParameters>
+                  <parameter name = "V1" value = "2.5"/>
+                  <parameter name = "Ki" value = "9"/>
+                   <parameter name = "K1" value = "10"/>
+       </listOfParameters>
+       <listOfReactions>
+         <reaction name = "J0" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MKKK" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MKKK_P" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "V1*MKKK/((1+(MAPK_PP/Ki)^n)*(K1+MKKK))">
+                <listOfParameters>
+                     <parameter name = "n" value = "1"/>
+                </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J1" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MKKK_P" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MKKK" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "V2*MKKK_P/(KK2+MKKK_P)">
+               <listOfParameters>
+                  <parameter name = "V2" value = "0.25"/>
+                  <parameter name = "KK2" value = "8"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J2" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MKK" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MKK_P" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "k3*MKKK_P*MKK/(KK3+MKK)">
+               <listOfParameters>
+                  <parameter name = "k3" value = "0.025"/>
+                  <parameter name = "KK3" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J3" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MKK_P" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MKK_PP" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "k4*MKKK_P*MKK_P/(KK4+MKK_P)">
+               <listOfParameters>
+                  <parameter name = "k4" value = "0.025"/>
+                  <parameter name = "KK4" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J4" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MKK_PP" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MKK_P" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "V5*MKK_PP/(KK5+MKK_PP)">
+               <listOfParameters>
+                  <parameter name = "V5" value = "0.75"/>
+                  <parameter name = "KK5" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J5" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MKK_P" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MKK" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "V6*MKK_P/(KK6+MKK_P)">
+               <listOfParameters>
+                  <parameter name = "V6" value = "0.75"/>
+                  <parameter name = "KK6" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J6" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MAPK" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MAPK_P" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "k7*MKK_PP*MAPK/(KK7+MAPK)">
+               <listOfParameters>
+                  <parameter name = "k7" value = "0.025"/>
+                  <parameter name = "KK7" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J7" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MAPK_P" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MAPK_PP" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "k8*MKK_PP*MAPK_P/(KK8+MAPK_P)">
+               <listOfParameters>
+                  <parameter name = "k8" value = "0.025"/>
+                  <parameter name = "KK8" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J8" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MAPK_PP" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MAPK_P" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "V9*MAPK_PP/(KK9+MAPK_PP)">
+               <listOfParameters>
+                  <parameter name = "V9" value = "0.5"/>
+                  <parameter name = "KK9" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J9" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MAPK_P" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MAPK" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "V10*MAPK_P/(KK10+MAPK_P)">
+               <listOfParameters>
+                  <parameter name = "V10" value = "0.5"/>
+                  <parameter name = "KK10" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+      </listOfReactions>
+   </model>
+</sbml>
diff --git a/examples/MAPK_10000pt.dat b/examples/MAPK_10000pt.dat
new file mode 100644
index 0000000..1883439
--- /dev/null
+++ b/examples/MAPK_10000pt.dat
@@ -0,0 +1,10007 @@
+#t MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP 
+##CONCENTRATIONS
+0 90 10 280 10 10 280 10 10 
+0.01 89.9907 10.0093 280.001 10.0014 9.998 280 10.0014 9.999 
+0.02 89.9815 10.0185 280.001 10.0027 9.996 279.999 10.0027 9.998 
+0.03 89.9722 10.0278 280.002 10.0041 9.99401 279.999 10.0041 9.997 
+0.04 89.9629 10.0371 280.002 10.0055 9.99201 279.999 10.0055 9.996 
+0.05 89.9537 10.0463 280.003 10.0069 9.99002 279.998 10.0069 9.995 
+0.06 89.9444 10.0556 280.004 10.0082 9.98802 279.998 10.0082 9.994 
+0.07 89.9351 10.0649 280.004 10.0096 9.98603 279.997 10.0096 9.993 
+0.08 89.9259 10.0741 280.005 10.011 9.98404 279.997 10.011 9.992 
+0.09 89.9166 10.0834 280.006 10.0124 9.98206 279.997 10.0123 9.991 
+0.1 89.9073 10.0927 280.006 10.0138 9.98007 279.996 10.0137 9.99 
+0.11 89.898 10.102 280.007 10.0151 9.97808 279.996 10.0151 9.989 
+0.12 89.8888 10.1112 280.007 10.0165 9.9761 279.996 10.0164 9.988 
+0.13 89.8795 10.1205 280.008 10.0179 9.97412 279.995 10.0178 9.987 
+0.14 89.8702 10.1298 280.009 10.0193 9.97213 279.995 10.0192 9.986 
+0.15 89.861 10.139 280.009 10.0207 9.97015 279.994 10.0205 9.985 
+0.16 89.8517 10.1483 280.01 10.022 9.96818 279.994 10.0219 9.984 
+0.17 89.8424 10.1576 280.01 10.0234 9.9662 279.994 10.0232 9.983 
+0.18 89.8332 10.1668 280.011 10.0248 9.96422 279.993 10.0246 9.982 
+0.19 89.8239 10.1761 280.012 10.0262 9.96225 279.993 10.026 9.981 
+0.2 89.8146 10.1854 280.012 10.0276 9.96027 279.993 10.0273 9.98 
+0.21 89.8054 10.1946 280.013 10.029 9.9583 279.992 10.0287 9.979 
+0.22 89.7961 10.2039 280.013 10.0303 9.95633 279.992 10.03 9.978 
+0.23 89.7868 10.2132 280.014 10.0317 9.95436 279.992 10.0314 9.977 
+0.24 89.7776 10.2224 280.014 10.0331 9.95239 279.991 10.0328 9.976 
+0.25 89.7683 10.2317 280.015 10.0345 9.95043 279.991 10.0341 9.975 
+0.26 89.759 10.241 280.016 10.0359 9.94846 279.991 10.0355 9.974 
+0.27 89.7498 10.2502 280.016 10.0373 9.9465 279.99 10.0368 9.973 
+0.28 89.7405 10.2595 280.017 10.0387 9.94454 279.99 10.0382 9.972 
+0.29 89.7312 10.2688 280.017 10.0401 9.94258 279.989 10.0395 9.971 
+0.3 89.722 10.278 280.018 10.0414 9.94062 279.989 10.0409 9.97 
+0.31 89.7127 10.2873 280.019 10.0428 9.93866 279.989 10.0423 9.969 
+0.32 89.7035 10.2965 280.019 10.0442 9.9367 279.988 10.0436 9.968 
+0.33 89.6942 10.3058 280.02 10.0456 9.93475 279.988 10.045 9.967 
+0.34 89.6849 10.3151 280.02 10.047 9.93279 279.988 10.0463 9.966 
+0.35 89.6757 10.3243 280.021 10.0484 9.93084 279.987 10.0477 9.965 
+0.36 89.6664 10.3336 280.021 10.0498 9.92889 279.987 10.049 9.964 
+0.37 89.6571 10.3429 280.022 10.0512 9.92694 279.987 10.0504 9.963 
+0.38 89.6479 10.3521 280.022 10.0526 9.92499 279.986 10.0517 9.962 
+0.39 89.6386 10.3614 280.023 10.054 9.92304 279.986 10.0531 9.961 
+0.4 89.6293 10.3707 280.024 10.0554 9.9211 279.986 10.0544 9.96 
+0.41 89.6201 10.3799 280.024 10.0568 9.91915 279.985 10.0558 9.959 
+0.42 89.6108 10.3892 280.025 10.0582 9.91721 279.985 10.0571 9.958 
+0.43 89.6015 10.3985 280.025 10.0596 9.91527 279.985 10.0584 9.957 
+0.44 89.5923 10.4077 280.026 10.061 9.91333 279.984 10.0598 9.956 
+0.45 89.583 10.417 280.026 10.0624 9.91139 279.984 10.0611 9.955 
+0.46 89.5737 10.4263 280.027 10.0638 9.90945 279.984 10.0625 9.954 
+0.47 89.5645 10.4355 280.027 10.0652 9.90751 279.983 10.0638 9.953 
+0.48 89.5552 10.4448 280.028 10.0666 9.90558 279.983 10.0652 9.952 
+0.49 89.546 10.454 280.028 10.068 9.90364 279.982 10.0665 9.951 
+0.5 89.5367 10.4633 280.029 10.0694 9.90171 279.982 10.0678 9.95 
+0.51 89.5274 10.4726 280.029 10.0708 9.89978 279.982 10.0692 9.949 
+0.52 89.5182 10.4818 280.03 10.0722 9.89785 279.981 10.0705 9.948 
+0.53 89.5089 10.4911 280.03 10.0736 9.89592 279.981 10.0719 9.94701 
+0.54 89.4996 10.5004 280.031 10.075 9.894 279.981 10.0732 9.94601 
+0.55 89.4904 10.5096 280.032 10.0764 9.89207 279.98 10.0745 9.94501 
+0.56 89.4811 10.5189 280.032 10.0778 9.89015 279.98 10.0759 9.94401 
+0.57 89.4718 10.5282 280.033 10.0792 9.88822 279.98 10.0772 9.94301 
+0.58 89.4626 10.5374 280.033 10.0806 9.8863 279.979 10.0786 9.94201 
+0.59 89.4533 10.5467 280.034 10.082 9.88438 279.979 10.0799 9.94101 
+0.6 89.4441 10.5559 280.034 10.0834 9.88246 279.979 10.0812 9.94001 
+0.61 89.4348 10.5652 280.035 10.0848 9.88055 279.978 10.0826 9.93901 
+0.62 89.4255 10.5745 280.035 10.0862 9.87863 279.978 10.0839 9.93801 
+0.63 89.4163 10.5837 280.036 10.0876 9.87672 279.978 10.0852 9.93701 
+0.64 89.407 10.593 280.036 10.0891 9.8748 279.977 10.0866 9.93601 
+0.65 89.3977 10.6023 280.037 10.0905 9.87289 279.977 10.0879 9.93501 
+0.66 89.3885 10.6115 280.037 10.0919 9.87098 279.977 10.0892 9.93401 
+0.67 89.3792 10.6208 280.038 10.0933 9.86907 279.976 10.0906 9.93301 
+0.68 89.37 10.63 280.038 10.0947 9.86716 279.976 10.0919 9.93201 
+0.69 89.3607 10.6393 280.039 10.0961 9.86526 279.976 10.0932 9.93101 
+0.7 89.3514 10.6486 280.039 10.0975 9.86335 279.975 10.0945 9.93001 
+0.71 89.3422 10.6578 280.04 10.0989 9.86145 279.975 10.0959 9.92901 
+0.72 89.3329 10.6671 280.04 10.1004 9.85955 279.975 10.0972 9.92801 
+0.73 89.3236 10.6764 280.041 10.1018 9.85765 279.974 10.0985 9.92701 
+0.74 89.3144 10.6856 280.041 10.1032 9.85575 279.974 10.0999 9.92601 
+0.75 89.3051 10.6949 280.042 10.1046 9.85385 279.974 10.1012 9.92501 
+0.76 89.2959 10.7041 280.042 10.106 9.85195 279.973 10.1025 9.92401 
+0.77 89.2866 10.7134 280.043 10.1074 9.85006 279.973 10.1038 9.92301 
+0.78 89.2773 10.7227 280.043 10.1089 9.84816 279.973 10.1052 9.92201 
+0.79 89.2681 10.7319 280.043 10.1103 9.84627 279.973 10.1065 9.92101 
+0.8 89.2588 10.7412 280.044 10.1117 9.84438 279.972 10.1078 9.92001 
+0.81 89.2496 10.7504 280.044 10.1131 9.84249 279.972 10.1091 9.91901 
+0.82 89.2403 10.7597 280.045 10.1145 9.8406 279.972 10.1105 9.91801 
+0.83 89.231 10.769 280.045 10.116 9.83871 279.971 10.1118 9.91701 
+0.84 89.2218 10.7782 280.046 10.1174 9.83683 279.971 10.1131 9.91602 
+0.85 89.2125 10.7875 280.046 10.1188 9.83494 279.971 10.1144 9.91502 
+0.86 89.2032 10.7968 280.047 10.1202 9.83306 279.97 10.1157 9.91402 
+0.87 89.194 10.806 280.047 10.1216 9.83118 279.97 10.1171 9.91302 
+0.88 89.1847 10.8153 280.048 10.1231 9.8293 279.97 10.1184 9.91202 
+0.89 89.1755 10.8245 280.048 10.1245 9.82742 279.969 10.1197 9.91102 
+0.9 89.1662 10.8338 280.049 10.1259 9.82554 279.969 10.121 9.91002 
+0.91 89.1569 10.8431 280.049 10.1273 9.82367 279.969 10.1223 9.90902 
+0.92 89.1477 10.8523 280.049 10.1288 9.82179 279.968 10.1236 9.90802 
+0.93 89.1384 10.8616 280.05 10.1302 9.81992 279.968 10.1249 9.90702 
+0.94 89.1292 10.8708 280.05 10.1316 9.81805 279.968 10.1263 9.90602 
+0.95 89.1199 10.8801 280.051 10.133 9.81618 279.967 10.1276 9.90502 
+0.96 89.1106 10.8894 280.051 10.1345 9.81431 279.967 10.1289 9.90402 
+0.97 89.1014 10.8986 280.052 10.1359 9.81244 279.967 10.1302 9.90302 
+0.98 89.0921 10.9079 280.052 10.1373 9.81057 279.966 10.1315 9.90202 
+0.99 89.0829 10.9171 280.053 10.1388 9.80871 279.966 10.1328 9.90102 
+1 89.0736 10.9264 280.053 10.1402 9.80684 279.966 10.1341 9.90002 
+1.01 89.0643 10.9357 280.053 10.1416 9.80498 279.966 10.1354 9.89902 
+1.02 89.0551 10.9449 280.054 10.1431 9.80312 279.965 10.1368 9.89802 
+1.03 89.0458 10.9542 280.054 10.1445 9.80126 279.965 10.1381 9.89702 
+1.04 89.0366 10.9634 280.055 10.1459 9.7994 279.965 10.1394 9.89603 
+1.05 89.0273 10.9727 280.055 10.1474 9.79754 279.964 10.1407 9.89503 
+1.06 89.018 10.982 280.056 10.1488 9.79569 279.964 10.142 9.89403 
+1.07 89.0088 10.9912 280.056 10.1502 9.79383 279.964 10.1433 9.89303 
+1.08 88.9995 11.0005 280.056 10.1517 9.79198 279.963 10.1446 9.89203 
+1.09 88.9903 11.0097 280.057 10.1531 9.79013 279.963 10.1459 9.89103 
+1.1 88.981 11.019 280.057 10.1545 9.78828 279.963 10.1472 9.89003 
+1.11 88.9717 11.0283 280.058 10.156 9.78643 279.962 10.1485 9.88903 
+1.12 88.9625 11.0375 280.058 10.1574 9.78458 279.962 10.1498 9.88803 
+1.13 88.9532 11.0468 280.058 10.1588 9.78274 279.962 10.1511 9.88703 
+1.14 88.944 11.056 280.059 10.1603 9.78089 279.962 10.1524 9.88603 
+1.15 88.9347 11.0653 280.059 10.1617 9.77905 279.961 10.1537 9.88503 
+1.16 88.9255 11.0745 280.06 10.1632 9.77721 279.961 10.155 9.88403 
+1.17 88.9162 11.0838 280.06 10.1646 9.77537 279.961 10.1563 9.88303 
+1.18 88.9069 11.0931 280.06 10.166 9.77353 279.96 10.1576 9.88204 
+1.19 88.8977 11.1023 280.061 10.1675 9.77169 279.96 10.1589 9.88104 
+1.2 88.8884 11.1116 280.061 10.1689 9.76985 279.96 10.1602 9.88004 
+1.21 88.8792 11.1208 280.062 10.1704 9.76802 279.959 10.1615 9.87904 
+1.22 88.8699 11.1301 280.062 10.1718 9.76618 279.959 10.1628 9.87804 
+1.23 88.8606 11.1394 280.062 10.1733 9.76435 279.959 10.1641 9.87704 
+1.24 88.8514 11.1486 280.063 10.1747 9.76252 279.959 10.1654 9.87604 
+1.25 88.8421 11.1579 280.063 10.1761 9.76069 279.958 10.1667 9.87504 
+1.26 88.8329 11.1671 280.064 10.1776 9.75886 279.958 10.168 9.87404 
+1.27 88.8236 11.1764 280.064 10.179 9.75704 279.958 10.1693 9.87304 
+1.28 88.8144 11.1856 280.064 10.1805 9.75521 279.957 10.1706 9.87204 
+1.29 88.8051 11.1949 280.065 10.1819 9.75339 279.957 10.1719 9.87104 
+1.3 88.7958 11.2042 280.065 10.1834 9.75156 279.957 10.1732 9.87005 
+1.31 88.7866 11.2134 280.065 10.1848 9.74974 279.956 10.1745 9.86905 
+1.32 88.7773 11.2227 280.066 10.1863 9.74792 279.956 10.1758 9.86805 
+1.33 88.7681 11.2319 280.066 10.1877 9.7461 279.956 10.1771 9.86705 
+1.34 88.7588 11.2412 280.067 10.1892 9.74428 279.956 10.1783 9.86605 
+1.35 88.7495 11.2505 280.067 10.1906 9.74247 279.955 10.1796 9.86505 
+1.36 88.7403 11.2597 280.067 10.1921 9.74065 279.955 10.1809 9.86405 
+1.37 88.731 11.269 280.068 10.1935 9.73884 279.955 10.1822 9.86305 
+1.38 88.7218 11.2782 280.068 10.195 9.73703 279.954 10.1835 9.86205 
+1.39 88.7125 11.2875 280.068 10.1964 9.73522 279.954 10.1848 9.86105 
+1.4 88.7033 11.2967 280.069 10.1979 9.73341 279.954 10.1861 9.86005 
+1.41 88.694 11.306 280.069 10.1993 9.7316 279.954 10.1874 9.85906 
+1.42 88.6847 11.3153 280.069 10.2008 9.72979 279.953 10.1886 9.85806 
+1.43 88.6755 11.3245 280.07 10.2022 9.72799 279.953 10.1899 9.85706 
+1.44 88.6662 11.3338 280.07 10.2037 9.72619 279.953 10.1912 9.85606 
+1.45 88.657 11.343 280.07 10.2052 9.72438 279.952 10.1925 9.85506 
+1.46 88.6477 11.3523 280.071 10.2066 9.72258 279.952 10.1938 9.85406 
+1.47 88.6385 11.3615 280.071 10.2081 9.72078 279.952 10.1951 9.85306 
+1.48 88.6292 11.3708 280.071 10.2095 9.71898 279.952 10.1963 9.85206 
+1.49 88.6199 11.3801 280.072 10.211 9.71719 279.951 10.1976 9.85106 
+1.5 88.6107 11.3893 280.072 10.2125 9.71539 279.951 10.1989 9.85007 
+1.51 88.6014 11.3986 280.072 10.2139 9.7136 279.951 10.2002 9.84907 
+1.52 88.5922 11.4078 280.073 10.2154 9.71181 279.95 10.2015 9.84807 
+1.53 88.5829 11.4171 280.073 10.2168 9.71001 279.95 10.2027 9.84707 
+1.54 88.5737 11.4263 280.073 10.2183 9.70822 279.95 10.204 9.84607 
+1.55 88.5644 11.4356 280.074 10.2198 9.70643 279.95 10.2053 9.84507 
+1.56 88.5551 11.4449 280.074 10.2212 9.70465 279.949 10.2066 9.84407 
+1.57 88.5459 11.4541 280.074 10.2227 9.70286 279.949 10.2079 9.84307 
+1.58 88.5366 11.4634 280.075 10.2241 9.70108 279.949 10.2091 9.84208 
+1.59 88.5274 11.4726 280.075 10.2256 9.69929 279.949 10.2104 9.84108 
+1.6 88.5181 11.4819 280.075 10.2271 9.69751 279.948 10.2117 9.84008 
+1.61 88.5089 11.4911 280.076 10.2285 9.69573 279.948 10.213 9.83908 
+1.62 88.4996 11.5004 280.076 10.23 9.69395 279.948 10.2142 9.83808 
+1.63 88.4903 11.5097 280.076 10.2315 9.69217 279.947 10.2155 9.83708 
+1.64 88.4811 11.5189 280.077 10.2329 9.6904 279.947 10.2168 9.83608 
+1.65 88.4718 11.5282 280.077 10.2344 9.68862 279.947 10.218 9.83508 
+1.66 88.4626 11.5374 280.077 10.2359 9.68685 279.947 10.2193 9.83409 
+1.67 88.4533 11.5467 280.078 10.2373 9.68508 279.946 10.2206 9.83309 
+1.68 88.4441 11.5559 280.078 10.2388 9.68331 279.946 10.2219 9.83209 
+1.69 88.4348 11.5652 280.078 10.2403 9.68154 279.946 10.2231 9.83109 
+1.7 88.4255 11.5745 280.078 10.2418 9.67977 279.946 10.2244 9.83009 
+1.71 88.4163 11.5837 280.079 10.2432 9.678 279.945 10.2257 9.82909 
+1.72 88.407 11.593 280.079 10.2447 9.67624 279.945 10.2269 9.82809 
+1.73 88.3978 11.6022 280.079 10.2462 9.67447 279.945 10.2282 9.8271 
+1.74 88.3885 11.6115 280.08 10.2476 9.67271 279.944 10.2295 9.8261 
+1.75 88.3793 11.6207 280.08 10.2491 9.67095 279.944 10.2307 9.8251 
+1.76 88.37 11.63 280.08 10.2506 9.66919 279.944 10.232 9.8241 
+1.77 88.3607 11.6393 280.081 10.2521 9.66743 279.944 10.2333 9.8231 
+1.78 88.3515 11.6485 280.081 10.2535 9.66567 279.943 10.2345 9.8221 
+1.79 88.3422 11.6578 280.081 10.255 9.66392 279.943 10.2358 9.8211 
+1.8 88.333 11.667 280.081 10.2565 9.66216 279.943 10.2371 9.82011 
+1.81 88.3237 11.6763 280.082 10.258 9.66041 279.943 10.2383 9.81911 
+1.82 88.3145 11.6855 280.082 10.2594 9.65866 279.942 10.2396 9.81811 
+1.83 88.3052 11.6948 280.082 10.2609 9.65691 279.942 10.2408 9.81711 
+1.84 88.2959 11.7041 280.082 10.2624 9.65516 279.942 10.2421 9.81611 
+1.85 88.2867 11.7133 280.083 10.2639 9.65341 279.942 10.2434 9.81511 
+1.86 88.2774 11.7226 280.083 10.2654 9.65166 279.941 10.2446 9.81412 
+1.87 88.2682 11.7318 280.083 10.2668 9.64992 279.941 10.2459 9.81312 
+1.88 88.2589 11.7411 280.084 10.2683 9.64817 279.941 10.2471 9.81212 
+1.89 88.2497 11.7503 280.084 10.2698 9.64643 279.94 10.2484 9.81112 
+1.9 88.2404 11.7596 280.084 10.2713 9.64469 279.94 10.2497 9.81012 
+1.91 88.2312 11.7688 280.084 10.2728 9.64295 279.94 10.2509 9.80912 
+1.92 88.2219 11.7781 280.085 10.2743 9.64121 279.94 10.2522 9.80813 
+1.93 88.2126 11.7874 280.085 10.2757 9.63948 279.939 10.2534 9.80713 
+1.94 88.2034 11.7966 280.085 10.2772 9.63774 279.939 10.2547 9.80613 
+1.95 88.1941 11.8059 280.085 10.2787 9.63601 279.939 10.2559 9.80513 
+1.96 88.1849 11.8151 280.086 10.2802 9.63427 279.939 10.2572 9.80413 
+1.97 88.1756 11.8244 280.086 10.2817 9.63254 279.938 10.2584 9.80314 
+1.98 88.1664 11.8336 280.086 10.2832 9.63081 279.938 10.2597 9.80214 
+1.99 88.1571 11.8429 280.086 10.2847 9.62908 279.938 10.2609 9.80114 
+2 88.1478 11.8522 280.087 10.2861 9.62736 279.938 10.2622 9.80014 
+2.01 88.1386 11.8614 280.087 10.2876 9.62563 279.937 10.2635 9.79914 
+2.02 88.1293 11.8707 280.087 10.2891 9.62391 279.937 10.2647 9.79814 
+2.03 88.1201 11.8799 280.087 10.2906 9.62218 279.937 10.266 9.79715 
+2.04 88.1108 11.8892 280.087 10.2921 9.62046 279.937 10.2672 9.79615 
+2.05 88.1016 11.8984 280.088 10.2936 9.61874 279.936 10.2685 9.79515 
+2.06 88.0923 11.9077 280.088 10.2951 9.61702 279.936 10.2697 9.79415 
+2.07 88.0831 11.9169 280.088 10.2966 9.6153 279.936 10.2709 9.79315 
+2.08 88.0738 11.9262 280.088 10.2981 9.61359 279.936 10.2722 9.79216 
+2.09 88.0645 11.9355 280.089 10.2996 9.61187 279.935 10.2734 9.79116 
+2.1 88.0553 11.9447 280.089 10.301 9.61016 279.935 10.2747 9.79016 
+2.11 88.046 11.954 280.089 10.3025 9.60845 279.935 10.2759 9.78916 
+2.12 88.0368 11.9632 280.089 10.304 9.60674 279.935 10.2772 9.78816 
+2.13 88.0275 11.9725 280.089 10.3055 9.60503 279.934 10.2784 9.78717 
+2.14 88.0183 11.9817 280.09 10.307 9.60332 279.934 10.2797 9.78617 
+2.15 88.009 11.991 280.09 10.3085 9.60161 279.934 10.2809 9.78517 
+2.16 87.9998 12.0002 280.09 10.31 9.59991 279.934 10.2822 9.78417 
+2.17 87.9905 12.0095 280.09 10.3115 9.5982 279.933 10.2834 9.78318 
+2.18 87.9812 12.0188 280.09 10.313 9.5965 279.933 10.2846 9.78218 
+2.19 87.972 12.028 280.091 10.3145 9.5948 279.933 10.2859 9.78118 
+2.2 87.9627 12.0373 280.091 10.316 9.5931 279.933 10.2871 9.78018 
+2.21 87.9535 12.0465 280.091 10.3175 9.5914 279.932 10.2884 9.77918 
+2.22 87.9442 12.0558 280.091 10.319 9.5897 279.932 10.2896 9.77819 
+2.23 87.935 12.065 280.091 10.3205 9.58801 279.932 10.2908 9.77719 
+2.24 87.9257 12.0743 280.092 10.322 9.58631 279.932 10.2921 9.77619 
+2.25 87.9165 12.0835 280.092 10.3235 9.58462 279.931 10.2933 9.77519 
+2.26 87.9072 12.0928 280.092 10.325 9.58293 279.931 10.2945 9.7742 
+2.27 87.8979 12.1021 280.092 10.3265 9.58124 279.931 10.2958 9.7732 
+2.28 87.8887 12.1113 280.092 10.328 9.57955 279.931 10.297 9.7722 
+2.29 87.8794 12.1206 280.093 10.3295 9.57786 279.931 10.2983 9.7712 
+2.3 87.8702 12.1298 280.093 10.331 9.57617 279.93 10.2995 9.77021 
+2.31 87.8609 12.1391 280.093 10.3325 9.57449 279.93 10.3007 9.76921 
+2.32 87.8517 12.1483 280.093 10.3341 9.5728 279.93 10.302 9.76821 
+2.33 87.8424 12.1576 280.093 10.3356 9.57112 279.93 10.3032 9.76721 
+2.34 87.8331 12.1669 280.093 10.3371 9.56944 279.929 10.3044 9.76622 
+2.35 87.8239 12.1761 280.094 10.3386 9.56776 279.929 10.3057 9.76522 
+2.36 87.8146 12.1854 280.094 10.3401 9.56608 279.929 10.3069 9.76422 
+2.37 87.8054 12.1946 280.094 10.3416 9.56441 279.929 10.3081 9.76322 
+2.38 87.7961 12.2039 280.094 10.3431 9.56273 279.928 10.3093 9.76223 
+2.39 87.7869 12.2131 280.094 10.3446 9.56106 279.928 10.3106 9.76123 
+2.4 87.7776 12.2224 280.094 10.3461 9.55939 279.928 10.3118 9.76023 
+2.41 87.7684 12.2316 280.095 10.3476 9.55771 279.928 10.313 9.75923 
+2.42 87.7591 12.2409 280.095 10.3491 9.55604 279.928 10.3143 9.75824 
+2.43 87.7498 12.2502 280.095 10.3507 9.55438 279.927 10.3155 9.75724 
+2.44 87.7406 12.2594 280.095 10.3522 9.55271 279.927 10.3167 9.75624 
+2.45 87.7313 12.2687 280.095 10.3537 9.55104 279.927 10.3179 9.75524 
+2.46 87.7221 12.2779 280.095 10.3552 9.54938 279.927 10.3192 9.75425 
+2.47 87.7128 12.2872 280.096 10.3567 9.54771 279.926 10.3204 9.75325 
+2.48 87.7036 12.2964 280.096 10.3582 9.54605 279.926 10.3216 9.75225 
+2.49 87.6943 12.3057 280.096 10.3597 9.54439 279.926 10.3228 9.75126 
+2.5 87.6851 12.3149 280.096 10.3613 9.54273 279.926 10.3241 9.75026 
+2.51 87.6758 12.3242 280.096 10.3628 9.54108 279.925 10.3253 9.74926 
+2.52 87.6665 12.3335 280.096 10.3643 9.53942 279.925 10.3265 9.74826 
+2.53 87.6573 12.3427 280.096 10.3658 9.53776 279.925 10.3277 9.74727 
+2.54 87.648 12.352 280.097 10.3673 9.53611 279.925 10.3289 9.74627 
+2.55 87.6388 12.3612 280.097 10.3688 9.53446 279.925 10.3302 9.74527 
+2.56 87.6295 12.3705 280.097 10.3704 9.53281 279.924 10.3314 9.74428 
+2.57 87.6203 12.3797 280.097 10.3719 9.53116 279.924 10.3326 9.74328 
+2.58 87.611 12.389 280.097 10.3734 9.52951 279.924 10.3338 9.74228 
+2.59 87.6018 12.3982 280.097 10.3749 9.52786 279.924 10.335 9.74129 
+2.6 87.5925 12.4075 280.097 10.3764 9.52622 279.923 10.3363 9.74029 
+2.61 87.5832 12.4168 280.097 10.378 9.52457 279.923 10.3375 9.73929 
+2.62 87.574 12.426 280.098 10.3795 9.52293 279.923 10.3387 9.73829 
+2.63 87.5647 12.4353 280.098 10.381 9.52129 279.923 10.3399 9.7373 
+2.64 87.5555 12.4445 280.098 10.3825 9.51965 279.923 10.3411 9.7363 
+2.65 87.5462 12.4538 280.098 10.3841 9.51801 279.922 10.3423 9.7353 
+2.66 87.537 12.463 280.098 10.3856 9.51637 279.922 10.3436 9.73431 
+2.67 87.5277 12.4723 280.098 10.3871 9.51474 279.922 10.3448 9.73331 
+2.68 87.5184 12.4816 280.098 10.3886 9.5131 279.922 10.346 9.73231 
+2.69 87.5092 12.4908 280.098 10.3902 9.51147 279.921 10.3472 9.73132 
+2.7 87.4999 12.5001 280.098 10.3917 9.50984 279.921 10.3484 9.73032 
+2.71 87.4907 12.5093 280.099 10.3932 9.50821 279.921 10.3496 9.72932 
+2.72 87.4814 12.5186 280.099 10.3948 9.50658 279.921 10.3508 9.72833 
+2.73 87.4722 12.5278 280.099 10.3963 9.50495 279.921 10.352 9.72733 
+2.74 87.4629 12.5371 280.099 10.3978 9.50333 279.92 10.3533 9.72633 
+2.75 87.4537 12.5463 280.099 10.3993 9.5017 279.92 10.3545 9.72534 
+2.76 87.4444 12.5556 280.099 10.4009 9.50008 279.92 10.3557 9.72434 
+2.77 87.4351 12.5649 280.099 10.4024 9.49846 279.92 10.3569 9.72334 
+2.78 87.4259 12.5741 280.099 10.4039 9.49683 279.92 10.3581 9.72235 
+2.79 87.4166 12.5834 280.099 10.4055 9.49521 279.919 10.3593 9.72135 
+2.8 87.4074 12.5926 280.099 10.407 9.4936 279.919 10.3605 9.72035 
+2.81 87.3981 12.6019 280.099 10.4085 9.49198 279.919 10.3617 9.71936 
+2.82 87.3889 12.6111 280.1 10.4101 9.49036 279.919 10.3629 9.71836 
+2.83 87.3796 12.6204 280.1 10.4116 9.48875 279.919 10.3641 9.71737 
+2.84 87.3703 12.6297 280.1 10.4131 9.48714 279.918 10.3653 9.71637 
+2.85 87.3611 12.6389 280.1 10.4147 9.48553 279.918 10.3665 9.71537 
+2.86 87.3518 12.6482 280.1 10.4162 9.48392 279.918 10.3677 9.71438 
+2.87 87.3426 12.6574 280.1 10.4178 9.48231 279.918 10.3689 9.71338 
+2.88 87.3333 12.6667 280.1 10.4193 9.4807 279.917 10.3701 9.71238 
+2.89 87.3241 12.6759 280.1 10.4208 9.4791 279.917 10.3713 9.71139 
+2.9 87.3148 12.6852 280.1 10.4224 9.47749 279.917 10.3725 9.71039 
+2.91 87.3056 12.6944 280.1 10.4239 9.47589 279.917 10.3737 9.7094 
+2.92 87.2963 12.7037 280.1 10.4254 9.47429 279.917 10.3749 9.7084 
+2.93 87.287 12.713 280.1 10.427 9.47269 279.916 10.3761 9.7074 
+2.94 87.2778 12.7222 280.1 10.4285 9.47109 279.916 10.3773 9.70641 
+2.95 87.2685 12.7315 280.1 10.4301 9.46949 279.916 10.3785 9.70541 
+2.96 87.2593 12.7407 280.1 10.4316 9.46789 279.916 10.3797 9.70441 
+2.97 87.25 12.75 280.101 10.4332 9.4663 279.916 10.3809 9.70342 
+2.98 87.2408 12.7592 280.101 10.4347 9.4647 279.915 10.3821 9.70242 
+2.99 87.2315 12.7685 280.101 10.4362 9.46311 279.915 10.3833 9.70143 
+3 87.2222 12.7778 280.101 10.4378 9.46152 279.915 10.3845 9.70043 
+3.01 87.213 12.787 280.101 10.4393 9.45993 279.915 10.3857 9.69943 
+3.02 87.2037 12.7963 280.101 10.4409 9.45834 279.915 10.3869 9.69844 
+3.03 87.1945 12.8055 280.101 10.4424 9.45676 279.914 10.3881 9.69744 
+3.04 87.1852 12.8148 280.101 10.444 9.45517 279.914 10.3893 9.69645 
+3.05 87.176 12.824 280.101 10.4455 9.45359 279.914 10.3905 9.69545 
+3.06 87.1667 12.8333 280.101 10.4471 9.452 279.914 10.3917 9.69446 
+3.07 87.1574 12.8426 280.101 10.4486 9.45042 279.914 10.3929 9.69346 
+3.08 87.1482 12.8518 280.101 10.4502 9.44884 279.913 10.3941 9.69246 
+3.09 87.1389 12.8611 280.101 10.4517 9.44726 279.913 10.3953 9.69147 
+3.1 87.1297 12.8703 280.101 10.4533 9.44569 279.913 10.3965 9.69047 
+3.11 87.1204 12.8796 280.101 10.4548 9.44411 279.913 10.3976 9.68948 
+3.12 87.1112 12.8888 280.101 10.4564 9.44254 279.913 10.3988 9.68848 
+3.13 87.1019 12.8981 280.101 10.4579 9.44096 279.912 10.4 9.68749 
+3.14 87.0926 12.9074 280.101 10.4595 9.43939 279.912 10.4012 9.68649 
+3.15 87.0834 12.9166 280.101 10.461 9.43782 279.912 10.4024 9.68549 
+3.16 87.0741 12.9259 280.101 10.4626 9.43625 279.912 10.4036 9.6845 
+3.17 87.0649 12.9351 280.101 10.4641 9.43468 279.912 10.4048 9.6835 
+3.18 87.0556 12.9444 280.101 10.4657 9.43312 279.912 10.406 9.68251 
+3.19 87.0464 12.9536 280.101 10.4672 9.43155 279.911 10.4071 9.68151 
+3.2 87.0371 12.9629 280.101 10.4688 9.42999 279.911 10.4083 9.68052 
+3.21 87.0278 12.9722 280.101 10.4704 9.42843 279.911 10.4095 9.67952 
+3.22 87.0186 12.9814 280.101 10.4719 9.42687 279.911 10.4107 9.67853 
+3.23 87.0093 12.9907 280.101 10.4735 9.42531 279.911 10.4119 9.67753 
+3.24 87.0001 12.9999 280.101 10.475 9.42375 279.91 10.4131 9.67653 
+3.25 86.9908 13.0092 280.101 10.4766 9.42219 279.91 10.4142 9.67554 
+3.26 86.9816 13.0184 280.101 10.4781 9.42064 279.91 10.4154 9.67454 
+3.27 86.9723 13.0277 280.101 10.4797 9.41908 279.91 10.4166 9.67355 
+3.28 86.963 13.037 280.101 10.4813 9.41753 279.91 10.4178 9.67255 
+3.29 86.9538 13.0462 280.101 10.4828 9.41598 279.909 10.419 9.67156 
+3.3 86.9445 13.0555 280.101 10.4844 9.41443 279.909 10.4201 9.67056 
+3.31 86.9353 13.0647 280.101 10.4859 9.41288 279.909 10.4213 9.66957 
+3.32 86.926 13.074 280.101 10.4875 9.41133 279.909 10.4225 9.66857 
+3.33 86.9167 13.0833 280.101 10.4891 9.40979 279.909 10.4237 9.66758 
+3.34 86.9075 13.0925 280.101 10.4906 9.40824 279.909 10.4249 9.66658 
+3.35 86.8982 13.1018 280.101 10.4922 9.4067 279.908 10.426 9.66559 
+3.36 86.889 13.111 280.101 10.4938 9.40516 279.908 10.4272 9.66459 
+3.37 86.8797 13.1203 280.101 10.4953 9.40362 279.908 10.4284 9.6636 
+3.38 86.8705 13.1295 280.101 10.4969 9.40208 279.908 10.4296 9.6626 
+3.39 86.8612 13.1388 280.101 10.4985 9.40054 279.908 10.4307 9.66161 
+3.4 86.8519 13.1481 280.101 10.5 9.399 279.907 10.4319 9.66061 
+3.41 86.8427 13.1573 280.101 10.5016 9.39747 279.907 10.4331 9.65962 
+3.42 86.8334 13.1666 280.101 10.5032 9.39593 279.907 10.4343 9.65862 
+3.43 86.8242 13.1758 280.101 10.5047 9.3944 279.907 10.4354 9.65763 
+3.44 86.8149 13.1851 280.101 10.5063 9.39287 279.907 10.4366 9.65663 
+3.45 86.8056 13.1944 280.101 10.5079 9.39134 279.907 10.4378 9.65564 
+3.46 86.7964 13.2036 280.101 10.5094 9.38981 279.906 10.439 9.65464 
+3.47 86.7871 13.2129 280.101 10.511 9.38829 279.906 10.4401 9.65365 
+3.48 86.7779 13.2221 280.101 10.5126 9.38676 279.906 10.4413 9.65266 
+3.49 86.7686 13.2314 280.101 10.5142 9.38524 279.906 10.4425 9.65166 
+3.5 86.7594 13.2406 280.101 10.5157 9.38371 279.906 10.4436 9.65067 
+3.51 86.7501 13.2499 280.1 10.5173 9.38219 279.906 10.4448 9.64967 
+3.52 86.7408 13.2592 280.1 10.5189 9.38067 279.905 10.446 9.64868 
+3.53 86.7316 13.2684 280.1 10.5205 9.37915 279.905 10.4471 9.64768 
+3.54 86.7223 13.2777 280.1 10.522 9.37764 279.905 10.4483 9.64669 
+3.55 86.7131 13.2869 280.1 10.5236 9.37612 279.905 10.4495 9.64569 
+3.56 86.7038 13.2962 280.1 10.5252 9.37461 279.905 10.4506 9.6447 
+3.57 86.6945 13.3055 280.1 10.5268 9.37309 279.904 10.4518 9.6437 
+3.58 86.6853 13.3147 280.1 10.5283 9.37158 279.904 10.453 9.64271 
+3.59 86.676 13.324 280.1 10.5299 9.37007 279.904 10.4541 9.64172 
+3.6 86.6668 13.3332 280.1 10.5315 9.36856 279.904 10.4553 9.64072 
+3.61 86.6575 13.3425 280.1 10.5331 9.36705 279.904 10.4565 9.63973 
+3.62 86.6482 13.3518 280.1 10.5347 9.36555 279.904 10.4576 9.63873 
+3.63 86.639 13.361 280.1 10.5362 9.36404 279.903 10.4588 9.63774 
+3.64 86.6297 13.3703 280.1 10.5378 9.36254 279.903 10.4599 9.63675 
+3.65 86.6205 13.3795 280.1 10.5394 9.36104 279.903 10.4611 9.63575 
+3.66 86.6112 13.3888 280.099 10.541 9.35954 279.903 10.4623 9.63476 
+3.67 86.602 13.398 280.099 10.5426 9.35804 279.903 10.4634 9.63376 
+3.68 86.5927 13.4073 280.099 10.5441 9.35654 279.903 10.4646 9.63277 
+3.69 86.5834 13.4166 280.099 10.5457 9.35504 279.902 10.4657 9.63177 
+3.7 86.5742 13.4258 280.099 10.5473 9.35355 279.902 10.4669 9.63078 
+3.71 86.5649 13.4351 280.099 10.5489 9.35205 279.902 10.4681 9.62979 
+3.72 86.5557 13.4443 280.099 10.5505 9.35056 279.902 10.4692 9.62879 
+3.73 86.5464 13.4536 280.099 10.5521 9.34907 279.902 10.4704 9.6278 
+3.74 86.5371 13.4629 280.099 10.5536 9.34758 279.902 10.4715 9.62681 
+3.75 86.5279 13.4721 280.099 10.5552 9.34609 279.901 10.4727 9.62581 
+3.76 86.5186 13.4814 280.099 10.5568 9.3446 279.901 10.4738 9.62482 
+3.77 86.5094 13.4906 280.098 10.5584 9.34312 279.901 10.475 9.62382 
+3.78 86.5001 13.4999 280.098 10.56 9.34163 279.901 10.4762 9.62283 
+3.79 86.4908 13.5092 280.098 10.5616 9.34015 279.901 10.4773 9.62184 
+3.8 86.4816 13.5184 280.098 10.5632 9.33867 279.901 10.4785 9.62084 
+3.81 86.4723 13.5277 280.098 10.5648 9.33719 279.901 10.4796 9.61985 
+3.82 86.4631 13.5369 280.098 10.5664 9.33571 279.9 10.4808 9.61886 
+3.83 86.4538 13.5462 280.098 10.5679 9.33423 279.9 10.4819 9.61786 
+3.84 86.4445 13.5555 280.098 10.5695 9.33275 279.9 10.4831 9.61687 
+3.85 86.4353 13.5647 280.098 10.5711 9.33128 279.9 10.4842 9.61588 
+3.86 86.426 13.574 280.097 10.5727 9.3298 279.9 10.4854 9.61488 
+3.87 86.4167 13.5833 280.097 10.5743 9.32833 279.9 10.4865 9.61389 
+3.88 86.4075 13.5925 280.097 10.5759 9.32686 279.899 10.4877 9.61289 
+3.89 86.3982 13.6018 280.097 10.5775 9.32539 279.899 10.4888 9.6119 
+3.9 86.389 13.611 280.097 10.5791 9.32392 279.899 10.49 9.61091 
+3.91 86.3797 13.6203 280.097 10.5807 9.32246 279.899 10.4911 9.60991 
+3.92 86.3704 13.6296 280.097 10.5823 9.32099 279.899 10.4923 9.60892 
+3.93 86.3612 13.6388 280.097 10.5839 9.31953 279.899 10.4934 9.60793 
+3.94 86.3519 13.6481 280.096 10.5855 9.31806 279.899 10.4946 9.60694 
+3.95 86.3427 13.6573 280.096 10.5871 9.3166 279.898 10.4957 9.60594 
+3.96 86.3334 13.6666 280.096 10.5887 9.31514 279.898 10.4968 9.60495 
+3.97 86.3241 13.6759 280.096 10.5903 9.31368 279.898 10.498 9.60396 
+3.98 86.3149 13.6851 280.096 10.5919 9.31222 279.898 10.4991 9.60296 
+3.99 86.3056 13.6944 280.096 10.5935 9.31077 279.898 10.5003 9.60197 
+4 86.2964 13.7036 280.096 10.5951 9.30931 279.898 10.5014 9.60098 
+4.01 86.2871 13.7129 280.095 10.5967 9.30786 279.897 10.5026 9.59998 
+4.02 86.2778 13.7222 280.095 10.5983 9.30641 279.897 10.5037 9.59899 
+4.03 86.2686 13.7314 280.095 10.5999 9.30496 279.897 10.5049 9.598 
+4.04 86.2593 13.7407 280.095 10.6015 9.30351 279.897 10.506 9.59701 
+4.05 86.25 13.75 280.095 10.6031 9.30206 279.897 10.5071 9.59601 
+4.06 86.2408 13.7592 280.095 10.6047 9.30061 279.897 10.5083 9.59502 
+4.07 86.2315 13.7685 280.095 10.6063 9.29917 279.897 10.5094 9.59403 
+4.08 86.2223 13.7777 280.094 10.6079 9.29773 279.896 10.5106 9.59303 
+4.09 86.213 13.787 280.094 10.6095 9.29628 279.896 10.5117 9.59204 
+4.1 86.2037 13.7963 280.094 10.6111 9.29484 279.896 10.5128 9.59105 
+4.11 86.1945 13.8055 280.094 10.6127 9.2934 279.896 10.514 9.59006 
+4.12 86.1852 13.8148 280.094 10.6143 9.29196 279.896 10.5151 9.58906 
+4.13 86.1759 13.8241 280.094 10.6159 9.29053 279.896 10.5162 9.58807 
+4.14 86.1667 13.8333 280.093 10.6176 9.28909 279.896 10.5174 9.58708 
+4.15 86.1574 13.8426 280.093 10.6192 9.28766 279.895 10.5185 9.58609 
+4.16 86.1482 13.8518 280.093 10.6208 9.28622 279.895 10.5196 9.58509 
+4.17 86.1389 13.8611 280.093 10.6224 9.28479 279.895 10.5208 9.5841 
+4.18 86.1296 13.8704 280.093 10.624 9.28336 279.895 10.5219 9.58311 
+4.19 86.1204 13.8796 280.092 10.6256 9.28193 279.895 10.523 9.58212 
+4.2 86.1111 13.8889 280.092 10.6272 9.28051 279.895 10.5242 9.58113 
+4.21 86.1018 13.8982 280.092 10.6288 9.27908 279.895 10.5253 9.58013 
+4.22 86.0926 13.9074 280.092 10.6304 9.27766 279.894 10.5264 9.57914 
+4.23 86.0833 13.9167 280.092 10.6321 9.27623 279.894 10.5276 9.57815 
+4.24 86.0741 13.9259 280.092 10.6337 9.27481 279.894 10.5287 9.57716 
+4.25 86.0648 13.9352 280.091 10.6353 9.27339 279.894 10.5298 9.57616 
+4.26 86.0555 13.9445 280.091 10.6369 9.27197 279.894 10.531 9.57517 
+4.27 86.0463 13.9537 280.091 10.6385 9.27055 279.894 10.5321 9.57418 
+4.28 86.037 13.963 280.091 10.6401 9.26914 279.894 10.5332 9.57319 
+4.29 86.0277 13.9723 280.091 10.6418 9.26772 279.893 10.5344 9.5722 
+4.3 86.0185 13.9815 280.09 10.6434 9.26631 279.893 10.5355 9.5712 
+4.31 86.0092 13.9908 280.09 10.645 9.26489 279.893 10.5366 9.57021 
+4.32 86 14 280.09 10.6466 9.26348 279.893 10.5377 9.56922 
+4.33 85.9907 14.0093 280.09 10.6482 9.26207 279.893 10.5389 9.56823 
+4.34 85.9814 14.0186 280.089 10.6499 9.26066 279.893 10.54 9.56724 
+4.35 85.9722 14.0278 280.089 10.6515 9.25926 279.893 10.5411 9.56625 
+4.36 85.9629 14.0371 280.089 10.6531 9.25785 279.893 10.5422 9.56525 
+4.37 85.9536 14.0464 280.089 10.6547 9.25645 279.892 10.5434 9.56426 
+4.38 85.9444 14.0556 280.089 10.6563 9.25504 279.892 10.5445 9.56327 
+4.39 85.9351 14.0649 280.088 10.658 9.25364 279.892 10.5456 9.56228 
+4.4 85.9258 14.0742 280.088 10.6596 9.25224 279.892 10.5467 9.56129 
+4.41 85.9166 14.0834 280.088 10.6612 9.25084 279.892 10.5479 9.5603 
+4.42 85.9073 14.0927 280.088 10.6628 9.24945 279.892 10.549 9.5593 
+4.43 85.898 14.102 280.087 10.6645 9.24805 279.892 10.5501 9.55831 
+4.44 85.8888 14.1112 280.087 10.6661 9.24666 279.891 10.5512 9.55732 
+4.45 85.8795 14.1205 280.087 10.6677 9.24526 279.891 10.5523 9.55633 
+4.46 85.8703 14.1297 280.087 10.6693 9.24387 279.891 10.5535 9.55534 
+4.47 85.861 14.139 280.087 10.671 9.24248 279.891 10.5546 9.55435 
+4.48 85.8517 14.1483 280.086 10.6726 9.24109 279.891 10.5557 9.55336 
+4.49 85.8425 14.1575 280.086 10.6742 9.2397 279.891 10.5568 9.55237 
+4.5 85.8332 14.1668 280.086 10.6758 9.23832 279.891 10.5579 9.55137 
+4.51 85.8239 14.1761 280.086 10.6775 9.23693 279.891 10.5591 9.55038 
+4.52 85.8147 14.1853 280.085 10.6791 9.23555 279.89 10.5602 9.54939 
+4.53 85.8054 14.1946 280.085 10.6807 9.23416 279.89 10.5613 9.5484 
+4.54 85.7961 14.2039 280.085 10.6824 9.23278 279.89 10.5624 9.54741 
+4.55 85.7869 14.2131 280.085 10.684 9.2314 279.89 10.5635 9.54642 
+4.56 85.7776 14.2224 280.084 10.6856 9.23002 279.89 10.5646 9.54543 
+4.57 85.7683 14.2317 280.084 10.6873 9.22865 279.89 10.5657 9.54444 
+4.58 85.7591 14.2409 280.084 10.6889 9.22727 279.89 10.5669 9.54345 
+4.59 85.7498 14.2502 280.084 10.6905 9.2259 279.89 10.568 9.54246 
+4.6 85.7405 14.2595 280.083 10.6922 9.22452 279.889 10.5691 9.54147 
+4.61 85.7313 14.2687 280.083 10.6938 9.22315 279.889 10.5702 9.54048 
+4.62 85.722 14.278 280.083 10.6954 9.22178 279.889 10.5713 9.53948 
+4.63 85.7127 14.2873 280.083 10.6971 9.22041 279.889 10.5724 9.53849 
+4.64 85.7035 14.2965 280.082 10.6987 9.21904 279.889 10.5735 9.5375 
+4.65 85.6942 14.3058 280.082 10.7003 9.21768 279.889 10.5746 9.53651 
+4.66 85.6849 14.3151 280.082 10.702 9.21631 279.889 10.5758 9.53552 
+4.67 85.6757 14.3243 280.081 10.7036 9.21495 279.889 10.5769 9.53453 
+4.68 85.6664 14.3336 280.081 10.7053 9.21359 279.888 10.578 9.53354 
+4.69 85.6571 14.3429 280.081 10.7069 9.21223 279.888 10.5791 9.53255 
+4.7 85.6479 14.3521 280.081 10.7085 9.21087 279.888 10.5802 9.53156 
+4.71 85.6386 14.3614 280.08 10.7102 9.20951 279.888 10.5813 9.53057 
+4.72 85.6293 14.3707 280.08 10.7118 9.20815 279.888 10.5824 9.52958 
+4.73 85.6201 14.3799 280.08 10.7135 9.2068 279.888 10.5835 9.52859 
+4.74 85.6108 14.3892 280.079 10.7151 9.20544 279.888 10.5846 9.5276 
+4.75 85.6015 14.3985 280.079 10.7168 9.20409 279.888 10.5857 9.52661 
+4.76 85.5923 14.4077 280.079 10.7184 9.20274 279.888 10.5868 9.52562 
+4.77 85.583 14.417 280.079 10.72 9.20139 279.887 10.5879 9.52463 
+4.78 85.5737 14.4263 280.078 10.7217 9.20004 279.887 10.589 9.52364 
+4.79 85.5645 14.4355 280.078 10.7233 9.19869 279.887 10.5901 9.52265 
+4.8 85.5552 14.4448 280.078 10.725 9.19735 279.887 10.5912 9.52166 
+4.81 85.5459 14.4541 280.077 10.7266 9.196 279.887 10.5923 9.52067 
+4.82 85.5367 14.4633 280.077 10.7283 9.19466 279.887 10.5935 9.51968 
+4.83 85.5274 14.4726 280.077 10.7299 9.19332 279.887 10.5946 9.51869 
+4.84 85.5181 14.4819 280.076 10.7316 9.19198 279.887 10.5957 9.5177 
+4.85 85.5089 14.4911 280.076 10.7332 9.19064 279.887 10.5968 9.51671 
+4.86 85.4996 14.5004 280.076 10.7349 9.1893 279.886 10.5979 9.51572 
+4.87 85.4903 14.5097 280.076 10.7365 9.18796 279.886 10.599 9.51473 
+4.88 85.4811 14.5189 280.075 10.7382 9.18663 279.886 10.6001 9.51374 
+4.89 85.4718 14.5282 280.075 10.7398 9.1853 279.886 10.6012 9.51275 
+4.9 85.4625 14.5375 280.075 10.7415 9.18396 279.886 10.6023 9.51176 
+4.91 85.4532 14.5468 280.074 10.7431 9.18263 279.886 10.6033 9.51077 
+4.92 85.444 14.556 280.074 10.7448 9.1813 279.886 10.6044 9.50978 
+4.93 85.4347 14.5653 280.074 10.7464 9.17998 279.886 10.6055 9.5088 
+4.94 85.4254 14.5746 280.073 10.7481 9.17865 279.886 10.6066 9.50781 
+4.95 85.4162 14.5838 280.073 10.7497 9.17732 279.885 10.6077 9.50682 
+4.96 85.4069 14.5931 280.073 10.7514 9.176 279.885 10.6088 9.50583 
+4.97 85.3976 14.6024 280.072 10.753 9.17468 279.885 10.6099 9.50484 
+4.98 85.3884 14.6116 280.072 10.7547 9.17335 279.885 10.611 9.50385 
+4.99 85.3791 14.6209 280.072 10.7563 9.17203 279.885 10.6121 9.50286 
+5 85.3698 14.6302 280.071 10.758 9.17072 279.885 10.6132 9.50187 
+5.01 85.3606 14.6394 280.071 10.7597 9.1694 279.885 10.6143 9.50088 
+5.02 85.3513 14.6487 280.071 10.7613 9.16808 279.885 10.6154 9.49989 
+5.03 85.342 14.658 280.07 10.763 9.16677 279.885 10.6165 9.4989 
+5.04 85.3327 14.6673 280.07 10.7646 9.16545 279.885 10.6176 9.49792 
+5.05 85.3235 14.6765 280.07 10.7663 9.16414 279.884 10.6187 9.49693 
+5.06 85.3142 14.6858 280.069 10.768 9.16283 279.884 10.6198 9.49594 
+5.07 85.3049 14.6951 280.069 10.7696 9.16152 279.884 10.6208 9.49495 
+5.08 85.2957 14.7043 280.069 10.7713 9.16022 279.884 10.6219 9.49396 
+5.09 85.2864 14.7136 280.068 10.7729 9.15891 279.884 10.623 9.49297 
+5.1 85.2771 14.7229 280.068 10.7746 9.1576 279.884 10.6241 9.49198 
+5.11 85.2679 14.7321 280.067 10.7763 9.1563 279.884 10.6252 9.49099 
+5.12 85.2586 14.7414 280.067 10.7779 9.155 279.884 10.6263 9.49001 
+5.13 85.2493 14.7507 280.067 10.7796 9.1537 279.884 10.6274 9.48902 
+5.14 85.24 14.76 280.066 10.7813 9.1524 279.884 10.6285 9.48803 
+5.15 85.2308 14.7692 280.066 10.7829 9.1511 279.883 10.6296 9.48704 
+5.16 85.2215 14.7785 280.066 10.7846 9.1498 279.883 10.6306 9.48605 
+5.17 85.2122 14.7878 280.065 10.7863 9.14851 279.883 10.6317 9.48506 
+5.18 85.203 14.797 280.065 10.7879 9.14721 279.883 10.6328 9.48408 
+5.19 85.1937 14.8063 280.064 10.7896 9.14592 279.883 10.6339 9.48309 
+5.2 85.1844 14.8156 280.064 10.7913 9.14463 279.883 10.635 9.4821 
+5.21 85.1751 14.8249 280.064 10.7929 9.14334 279.883 10.6361 9.48111 
+5.22 85.1659 14.8341 280.063 10.7946 9.14205 279.883 10.6371 9.48012 
+5.23 85.1566 14.8434 280.063 10.7963 9.14076 279.883 10.6382 9.47914 
+5.24 85.1473 14.8527 280.063 10.7979 9.13947 279.883 10.6393 9.47815 
+5.25 85.1381 14.8619 280.062 10.7996 9.13819 279.882 10.6404 9.47716 
+5.26 85.1288 14.8712 280.062 10.8013 9.13691 279.882 10.6415 9.47617 
+5.27 85.1195 14.8805 280.061 10.803 9.13562 279.882 10.6425 9.47518 
+5.28 85.1102 14.8898 280.061 10.8046 9.13434 279.882 10.6436 9.4742 
+5.29 85.101 14.899 280.061 10.8063 9.13306 279.882 10.6447 9.47321 
+5.3 85.0917 14.9083 280.06 10.808 9.13179 279.882 10.6458 9.47222 
+5.31 85.0824 14.9176 280.06 10.8096 9.13051 279.882 10.6469 9.47123 
+5.32 85.0731 14.9269 280.059 10.8113 9.12924 279.882 10.6479 9.47025 
+5.33 85.0639 14.9361 280.059 10.813 9.12796 279.882 10.649 9.46926 
+5.34 85.0546 14.9454 280.059 10.8147 9.12669 279.882 10.6501 9.46827 
+5.35 85.0453 14.9547 280.058 10.8164 9.12542 279.882 10.6512 9.46728 
+5.36 85.0361 14.9639 280.058 10.818 9.12415 279.881 10.6523 9.4663 
+5.37 85.0268 14.9732 280.057 10.8197 9.12288 279.881 10.6533 9.46531 
+5.38 85.0175 14.9825 280.057 10.8214 9.12161 279.881 10.6544 9.46432 
+5.39 85.0082 14.9918 280.057 10.8231 9.12035 279.881 10.6555 9.46333 
+5.4 84.999 15.001 280.056 10.8247 9.11908 279.881 10.6566 9.46235 
+5.41 84.9897 15.0103 280.056 10.8264 9.11782 279.881 10.6576 9.46136 
+5.42 84.9804 15.0196 280.055 10.8281 9.11656 279.881 10.6587 9.46037 
+5.43 84.9711 15.0289 280.055 10.8298 9.1153 279.881 10.6598 9.45939 
+5.44 84.9619 15.0381 280.054 10.8315 9.11404 279.881 10.6608 9.4584 
+5.45 84.9526 15.0474 280.054 10.8331 9.11278 279.881 10.6619 9.45741 
+5.46 84.9433 15.0567 280.054 10.8348 9.11152 279.881 10.663 9.45643 
+5.47 84.934 15.066 280.053 10.8365 9.11027 279.88 10.6641 9.45544 
+5.48 84.9248 15.0752 280.053 10.8382 9.10902 279.88 10.6651 9.45445 
+5.49 84.9155 15.0845 280.052 10.8399 9.10776 279.88 10.6662 9.45347 
+5.5 84.9062 15.0938 280.052 10.8416 9.10651 279.88 10.6673 9.45248 
+5.51 84.8969 15.1031 280.051 10.8433 9.10526 279.88 10.6683 9.45149 
+5.52 84.8877 15.1123 280.051 10.8449 9.10402 279.88 10.6694 9.45051 
+5.53 84.8784 15.1216 280.051 10.8466 9.10277 279.88 10.6705 9.44952 
+5.54 84.8691 15.1309 280.05 10.8483 9.10152 279.88 10.6715 9.44853 
+5.55 84.8598 15.1402 280.05 10.85 9.10028 279.88 10.6726 9.44755 
+5.56 84.8506 15.1494 280.049 10.8517 9.09904 279.88 10.6737 9.44656 
+5.57 84.8413 15.1587 280.049 10.8534 9.0978 279.88 10.6747 9.44557 
+5.58 84.832 15.168 280.048 10.8551 9.09656 279.88 10.6758 9.44459 
+5.59 84.8227 15.1773 280.048 10.8568 9.09532 279.88 10.6769 9.4436 
+5.6 84.8135 15.1865 280.047 10.8584 9.09408 279.879 10.6779 9.44261 
+5.61 84.8042 15.1958 280.047 10.8601 9.09284 279.879 10.679 9.44163 
+5.62 84.7949 15.2051 280.047 10.8618 9.09161 279.879 10.6801 9.44064 
+5.63 84.7856 15.2144 280.046 10.8635 9.09038 279.879 10.6811 9.43966 
+5.64 84.7764 15.2236 280.046 10.8652 9.08914 279.879 10.6822 9.43867 
+5.65 84.7671 15.2329 280.045 10.8669 9.08791 279.879 10.6833 9.43768 
+5.66 84.7578 15.2422 280.045 10.8686 9.08669 279.879 10.6843 9.4367 
+5.67 84.7485 15.2515 280.044 10.8703 9.08546 279.879 10.6854 9.43571 
+5.68 84.7393 15.2607 280.044 10.872 9.08423 279.879 10.6864 9.43473 
+5.69 84.73 15.27 280.043 10.8737 9.08301 279.879 10.6875 9.43374 
+5.7 84.7207 15.2793 280.043 10.8754 9.08178 279.879 10.6886 9.43276 
+5.71 84.7114 15.2886 280.042 10.8771 9.08056 279.879 10.6896 9.43177 
+5.72 84.7022 15.2978 280.042 10.8788 9.07934 279.879 10.6907 9.43078 
+5.73 84.6929 15.3071 280.041 10.8805 9.07812 279.878 10.6917 9.4298 
+5.74 84.6836 15.3164 280.041 10.8822 9.0769 279.878 10.6928 9.42881 
+5.75 84.6743 15.3257 280.04 10.8839 9.07569 279.878 10.6939 9.42783 
+5.76 84.665 15.335 280.04 10.8856 9.07447 279.878 10.6949 9.42684 
+5.77 84.6558 15.3442 280.039 10.8873 9.07326 279.878 10.696 9.42586 
+5.78 84.6465 15.3535 280.039 10.889 9.07204 279.878 10.697 9.42487 
+5.79 84.6372 15.3628 280.038 10.8907 9.07083 279.878 10.6981 9.42389 
+5.8 84.6279 15.3721 280.038 10.8924 9.06962 279.878 10.6991 9.4229 
+5.81 84.6187 15.3813 280.038 10.8941 9.06841 279.878 10.7002 9.42192 
+5.82 84.6094 15.3906 280.037 10.8958 9.06721 279.878 10.7013 9.42093 
+5.83 84.6001 15.3999 280.037 10.8975 9.066 279.878 10.7023 9.41995 
+5.84 84.5908 15.4092 280.036 10.8992 9.06479 279.878 10.7034 9.41896 
+5.85 84.5815 15.4185 280.036 10.9009 9.06359 279.878 10.7044 9.41798 
+5.86 84.5723 15.4277 280.035 10.9026 9.06239 279.878 10.7055 9.41699 
+5.87 84.563 15.437 280.035 10.9043 9.06119 279.877 10.7065 9.41601 
+5.88 84.5537 15.4463 280.034 10.906 9.05999 279.877 10.7076 9.41502 
+5.89 84.5444 15.4556 280.033 10.9077 9.05879 279.877 10.7086 9.41404 
+5.9 84.5351 15.4649 280.033 10.9094 9.0576 279.877 10.7097 9.41305 
+5.91 84.5259 15.4741 280.032 10.9111 9.0564 279.877 10.7107 9.41207 
+5.92 84.5166 15.4834 280.032 10.9128 9.05521 279.877 10.7118 9.41108 
+5.93 84.5073 15.4927 280.031 10.9145 9.05401 279.877 10.7128 9.4101 
+5.94 84.498 15.502 280.031 10.9163 9.05282 279.877 10.7139 9.40911 
+5.95 84.4887 15.5113 280.03 10.918 9.05163 279.877 10.7149 9.40813 
+5.96 84.4795 15.5205 280.03 10.9197 9.05044 279.877 10.716 9.40715 
+5.97 84.4702 15.5298 280.029 10.9214 9.04926 279.877 10.717 9.40616 
+5.98 84.4609 15.5391 280.029 10.9231 9.04807 279.877 10.7181 9.40518 
+5.99 84.4516 15.5484 280.028 10.9248 9.04689 279.877 10.7191 9.40419 
+6 84.4423 15.5577 280.028 10.9265 9.0457 279.877 10.7202 9.40321 
+6.01 84.4331 15.5669 280.027 10.9282 9.04452 279.877 10.7212 9.40222 
+6.02 84.4238 15.5762 280.027 10.9299 9.04334 279.876 10.7223 9.40124 
+6.03 84.4145 15.5855 280.026 10.9317 9.04216 279.876 10.7233 9.40026 
+6.04 84.4052 15.5948 280.026 10.9334 9.04099 279.876 10.7244 9.39927 
+6.05 84.3959 15.6041 280.025 10.9351 9.03981 279.876 10.7254 9.39829 
+6.06 84.3867 15.6133 280.025 10.9368 9.03864 279.876 10.7264 9.39731 
+6.07 84.3774 15.6226 280.024 10.9385 9.03746 279.876 10.7275 9.39632 
+6.08 84.3681 15.6319 280.023 10.9402 9.03629 279.876 10.7285 9.39534 
+6.09 84.3588 15.6412 280.023 10.942 9.03512 279.876 10.7296 9.39435 
+6.1 84.3495 15.6505 280.022 10.9437 9.03395 279.876 10.7306 9.39337 
+6.11 84.3402 15.6598 280.022 10.9454 9.03278 279.876 10.7317 9.39239 
+6.12 84.331 15.669 280.021 10.9471 9.03162 279.876 10.7327 9.3914 
+6.13 84.3217 15.6783 280.021 10.9488 9.03045 279.876 10.7337 9.39042 
+6.14 84.3124 15.6876 280.02 10.9506 9.02929 279.876 10.7348 9.38944 
+6.15 84.3031 15.6969 280.02 10.9523 9.02812 279.876 10.7358 9.38845 
+6.16 84.2938 15.7062 280.019 10.954 9.02696 279.876 10.7369 9.38747 
+6.17 84.2846 15.7154 280.018 10.9557 9.0258 279.876 10.7379 9.38649 
+6.18 84.2753 15.7247 280.018 10.9574 9.02464 279.876 10.7389 9.3855 
+6.19 84.266 15.734 280.017 10.9592 9.02349 279.876 10.74 9.38452 
+6.2 84.2567 15.7433 280.017 10.9609 9.02233 279.875 10.741 9.38354 
+6.21 84.2474 15.7526 280.016 10.9626 9.02118 279.875 10.742 9.38256 
+6.22 84.2381 15.7619 280.016 10.9643 9.02002 279.875 10.7431 9.38157 
+6.23 84.2289 15.7711 280.015 10.9661 9.01887 279.875 10.7441 9.38059 
+6.24 84.2196 15.7804 280.014 10.9678 9.01772 279.875 10.7452 9.37961 
+6.25 84.2103 15.7897 280.014 10.9695 9.01657 279.875 10.7462 9.37862 
+6.26 84.201 15.799 280.013 10.9713 9.01542 279.875 10.7472 9.37764 
+6.27 84.1917 15.8083 280.013 10.973 9.01428 279.875 10.7483 9.37666 
+6.28 84.1824 15.8176 280.012 10.9747 9.01313 279.875 10.7493 9.37568 
+6.29 84.1732 15.8268 280.012 10.9764 9.01199 279.875 10.7503 9.37469 
+6.3 84.1639 15.8361 280.011 10.9782 9.01085 279.875 10.7514 9.37371 
+6.31 84.1546 15.8454 280.01 10.9799 9.00971 279.875 10.7524 9.37273 
+6.32 84.1453 15.8547 280.01 10.9816 9.00857 279.875 10.7534 9.37175 
+6.33 84.136 15.864 280.009 10.9834 9.00743 279.875 10.7545 9.37076 
+6.34 84.1267 15.8733 280.009 10.9851 9.00629 279.875 10.7555 9.36978 
+6.35 84.1174 15.8826 280.008 10.9868 9.00516 279.875 10.7565 9.3688 
+6.36 84.1082 15.8918 280.007 10.9886 9.00402 279.875 10.7575 9.36782 
+6.37 84.0989 15.9011 280.007 10.9903 9.00289 279.875 10.7586 9.36684 
+6.38 84.0896 15.9104 280.006 10.992 9.00176 279.875 10.7596 9.36585 
+6.39 84.0803 15.9197 280.006 10.9938 9.00063 279.874 10.7606 9.36487 
+6.4 84.071 15.929 280.005 10.9955 8.9995 279.874 10.7617 9.36389 
+6.41 84.0617 15.9383 280.004 10.9972 8.99837 279.874 10.7627 9.36291 
+6.42 84.0524 15.9476 280.004 10.999 8.99725 279.874 10.7637 9.36193 
+6.43 84.0432 15.9568 280.003 11.0007 8.99612 279.874 10.7648 9.36095 
+6.44 84.0339 15.9661 280.003 11.0024 8.995 279.874 10.7658 9.35996 
+6.45 84.0246 15.9754 280.002 11.0042 8.99388 279.874 10.7668 9.35898 
+6.46 84.0153 15.9847 280.001 11.0059 8.99276 279.874 10.7678 9.358 
+6.47 84.006 15.994 280.001 11.0077 8.99164 279.874 10.7689 9.35702 
+6.48 83.9967 16.0033 280 11.0094 8.99052 279.874 10.7699 9.35604 
+6.49 83.9874 16.0126 279.999 11.0111 8.9894 279.874 10.7709 9.35506 
+6.5 83.9782 16.0218 279.999 11.0129 8.98829 279.874 10.7719 9.35408 
+6.51 83.9689 16.0311 279.998 11.0146 8.98717 279.874 10.773 9.35309 
+6.52 83.9596 16.0404 279.998 11.0164 8.98606 279.874 10.774 9.35211 
+6.53 83.9503 16.0497 279.997 11.0181 8.98495 279.874 10.775 9.35113 
+6.54 83.941 16.059 279.996 11.0198 8.98384 279.874 10.776 9.35015 
+6.55 83.9317 16.0683 279.996 11.0216 8.98273 279.874 10.777 9.34917 
+6.56 83.9224 16.0776 279.995 11.0233 8.98163 279.874 10.7781 9.34819 
+6.57 83.9131 16.0869 279.994 11.0251 8.98052 279.874 10.7791 9.34721 
+6.58 83.9039 16.0961 279.994 11.0268 8.97942 279.874 10.7801 9.34623 
+6.59 83.8946 16.1054 279.993 11.0286 8.97831 279.874 10.7811 9.34525 
+6.6 83.8853 16.1147 279.992 11.0303 8.97721 279.874 10.7821 9.34427 
+6.61 83.876 16.124 279.992 11.0321 8.97611 279.874 10.7832 9.34329 
+6.62 83.8667 16.1333 279.991 11.0338 8.97501 279.874 10.7842 9.34231 
+6.63 83.8574 16.1426 279.991 11.0356 8.97391 279.873 10.7852 9.34132 
+6.64 83.8481 16.1519 279.99 11.0373 8.97282 279.873 10.7862 9.34034 
+6.65 83.8388 16.1612 279.989 11.0391 8.97172 279.873 10.7872 9.33936 
+6.66 83.8295 16.1705 279.989 11.0408 8.97063 279.873 10.7883 9.33838 
+6.67 83.8203 16.1797 279.988 11.0426 8.96954 279.873 10.7893 9.3374 
+6.68 83.811 16.189 279.987 11.0443 8.96845 279.873 10.7903 9.33642 
+6.69 83.8017 16.1983 279.987 11.0461 8.96736 279.873 10.7913 9.33544 
+6.7 83.7924 16.2076 279.986 11.0478 8.96627 279.873 10.7923 9.33446 
+6.71 83.7831 16.2169 279.985 11.0496 8.96518 279.873 10.7933 9.33348 
+6.72 83.7738 16.2262 279.985 11.0513 8.9641 279.873 10.7944 9.3325 
+6.73 83.7645 16.2355 279.984 11.0531 8.96301 279.873 10.7954 9.33152 
+6.74 83.7552 16.2448 279.983 11.0548 8.96193 279.873 10.7964 9.33054 
+6.75 83.7459 16.2541 279.983 11.0566 8.96085 279.873 10.7974 9.32956 
+6.76 83.7366 16.2634 279.982 11.0583 8.95977 279.873 10.7984 9.32858 
+6.77 83.7274 16.2726 279.981 11.0601 8.95869 279.873 10.7994 9.3276 
+6.78 83.7181 16.2819 279.981 11.0618 8.95761 279.873 10.8004 9.32663 
+6.79 83.7088 16.2912 279.98 11.0636 8.95654 279.873 10.8014 9.32565 
+6.8 83.6995 16.3005 279.979 11.0654 8.95546 279.873 10.8025 9.32467 
+6.81 83.6902 16.3098 279.978 11.0671 8.95439 279.873 10.8035 9.32369 
+6.82 83.6809 16.3191 279.978 11.0689 8.95332 279.873 10.8045 9.32271 
+6.83 83.6716 16.3284 279.977 11.0706 8.95225 279.873 10.8055 9.32173 
+6.84 83.6623 16.3377 279.976 11.0724 8.95118 279.873 10.8065 9.32075 
+6.85 83.653 16.347 279.976 11.0742 8.95011 279.873 10.8075 9.31977 
+6.86 83.6437 16.3563 279.975 11.0759 8.94905 279.873 10.8085 9.31879 
+6.87 83.6344 16.3656 279.974 11.0777 8.94798 279.873 10.8095 9.31781 
+6.88 83.6252 16.3748 279.974 11.0794 8.94692 279.873 10.8105 9.31683 
+6.89 83.6159 16.3841 279.973 11.0812 8.94585 279.873 10.8115 9.31585 
+6.9 83.6066 16.3934 279.972 11.083 8.94479 279.873 10.8125 9.31488 
+6.91 83.5973 16.4027 279.972 11.0847 8.94373 279.873 10.8136 9.3139 
+6.92 83.588 16.412 279.971 11.0865 8.94268 279.873 10.8146 9.31292 
+6.93 83.5787 16.4213 279.97 11.0883 8.94162 279.872 10.8156 9.31194 
+6.94 83.5694 16.4306 279.969 11.09 8.94056 279.872 10.8166 9.31096 
+6.95 83.5601 16.4399 279.969 11.0918 8.93951 279.872 10.8176 9.30998 
+6.96 83.5508 16.4492 279.968 11.0936 8.93846 279.872 10.8186 9.309 
+6.97 83.5415 16.4585 279.967 11.0953 8.93741 279.872 10.8196 9.30803 
+6.98 83.5322 16.4678 279.967 11.0971 8.93636 279.872 10.8206 9.30705 
+6.99 83.5229 16.4771 279.966 11.0989 8.93531 279.872 10.8216 9.30607 
+7 83.5136 16.4864 279.965 11.1006 8.93426 279.872 10.8226 9.30509 
+7.01 83.5043 16.4957 279.964 11.1024 8.93321 279.872 10.8236 9.30411 
+7.02 83.495 16.505 279.964 11.1042 8.93217 279.872 10.8246 9.30314 
+7.03 83.4858 16.5142 279.963 11.1059 8.93112 279.872 10.8256 9.30216 
+7.04 83.4765 16.5235 279.962 11.1077 8.93008 279.872 10.8266 9.30118 
+7.05 83.4672 16.5328 279.961 11.1095 8.92904 279.872 10.8276 9.3002 
+7.06 83.4579 16.5421 279.961 11.1112 8.928 279.872 10.8286 9.29922 
+7.07 83.4486 16.5514 279.96 11.113 8.92697 279.872 10.8296 9.29825 
+7.08 83.4393 16.5607 279.959 11.1148 8.92593 279.872 10.8306 9.29727 
+7.09 83.43 16.57 279.959 11.1166 8.92489 279.872 10.8316 9.29629 
+7.1 83.4207 16.5793 279.958 11.1183 8.92386 279.872 10.8326 9.29531 
+7.11 83.4114 16.5886 279.957 11.1201 8.92283 279.872 10.8336 9.29434 
+7.12 83.4021 16.5979 279.956 11.1219 8.9218 279.872 10.8346 9.29336 
+7.13 83.3928 16.6072 279.956 11.1237 8.92077 279.872 10.8356 9.29238 
+7.14 83.3835 16.6165 279.955 11.1254 8.91974 279.872 10.8366 9.2914 
+7.15 83.3742 16.6258 279.954 11.1272 8.91871 279.872 10.8376 9.29043 
+7.16 83.3649 16.6351 279.953 11.129 8.91769 279.872 10.8386 9.28945 
+7.17 83.3556 16.6444 279.953 11.1308 8.91666 279.872 10.8396 9.28847 
+7.18 83.3463 16.6537 279.952 11.1326 8.91564 279.872 10.8406 9.2875 
+7.19 83.337 16.663 279.951 11.1343 8.91462 279.872 10.8416 9.28652 
+7.2 83.3277 16.6723 279.95 11.1361 8.9136 279.872 10.8426 9.28554 
+7.21 83.3184 16.6816 279.95 11.1379 8.91258 279.872 10.8436 9.28457 
+7.22 83.3091 16.6909 279.949 11.1397 8.91156 279.872 10.8445 9.28359 
+7.23 83.2998 16.7002 279.948 11.1415 8.91054 279.872 10.8455 9.28261 
+7.24 83.2905 16.7095 279.947 11.1432 8.90953 279.872 10.8465 9.28164 
+7.25 83.2812 16.7188 279.946 11.145 8.90851 279.872 10.8475 9.28066 
+7.26 83.2719 16.7281 279.946 11.1468 8.9075 279.872 10.8485 9.27968 
+7.27 83.2626 16.7374 279.945 11.1486 8.90649 279.872 10.8495 9.27871 
+7.28 83.2533 16.7467 279.944 11.1504 8.90548 279.872 10.8505 9.27773 
+7.29 83.244 16.756 279.943 11.1522 8.90447 279.872 10.8515 9.27675 
+7.3 83.2347 16.7653 279.943 11.1539 8.90347 279.872 10.8525 9.27578 
+7.31 83.2254 16.7746 279.942 11.1557 8.90246 279.872 10.8535 9.2748 
+7.32 83.2161 16.7839 279.941 11.1575 8.90146 279.872 10.8545 9.27383 
+7.33 83.2069 16.7931 279.94 11.1593 8.90045 279.872 10.8554 9.27285 
+7.34 83.1976 16.8024 279.939 11.1611 8.89945 279.872 10.8564 9.27187 
+7.35 83.1883 16.8117 279.939 11.1629 8.89845 279.872 10.8574 9.2709 
+7.36 83.179 16.821 279.938 11.1647 8.89745 279.872 10.8584 9.26992 
+7.37 83.1697 16.8303 279.937 11.1665 8.89646 279.872 10.8594 9.26895 
+7.38 83.1604 16.8396 279.936 11.1682 8.89546 279.872 10.8604 9.26797 
+7.39 83.1511 16.8489 279.935 11.17 8.89447 279.872 10.8614 9.267 
+7.4 83.1418 16.8582 279.935 11.1718 8.89347 279.872 10.8624 9.26602 
+7.41 83.1325 16.8675 279.934 11.1736 8.89248 279.872 10.8633 9.26504 
+7.42 83.1232 16.8768 279.933 11.1754 8.89149 279.872 10.8643 9.26407 
+7.43 83.1139 16.8861 279.932 11.1772 8.8905 279.872 10.8653 9.26309 
+7.44 83.1046 16.8954 279.931 11.179 8.88951 279.872 10.8663 9.26212 
+7.45 83.0953 16.9047 279.931 11.1808 8.88853 279.872 10.8673 9.26114 
+7.46 83.086 16.914 279.93 11.1826 8.88754 279.872 10.8683 9.26017 
+7.47 83.0767 16.9233 279.929 11.1844 8.88656 279.872 10.8692 9.25919 
+7.48 83.0673 16.9327 279.928 11.1862 8.88558 279.872 10.8702 9.25822 
+7.49 83.058 16.942 279.927 11.188 8.8846 279.872 10.8712 9.25724 
+7.5 83.0487 16.9513 279.927 11.1898 8.88362 279.872 10.8722 9.25627 
+7.51 83.0394 16.9606 279.926 11.1916 8.88264 279.872 10.8732 9.25529 
+7.52 83.0301 16.9699 279.925 11.1934 8.88166 279.872 10.8742 9.25432 
+7.53 83.0208 16.9792 279.924 11.1952 8.88069 279.872 10.8751 9.25335 
+7.54 83.0115 16.9885 279.923 11.197 8.87971 279.872 10.8761 9.25237 
+7.55 83.0022 16.9978 279.923 11.1988 8.87874 279.872 10.8771 9.2514 
+7.56 82.9929 17.0071 279.922 11.2006 8.87777 279.872 10.8781 9.25042 
+7.57 82.9836 17.0164 279.921 11.2024 8.8768 279.872 10.8791 9.24945 
+7.58 82.9743 17.0257 279.92 11.2042 8.87583 279.871 10.88 9.24847 
+7.59 82.965 17.035 279.919 11.206 8.87486 279.871 10.881 9.2475 
+7.6 82.9557 17.0443 279.918 11.2078 8.87389 279.871 10.882 9.24653 
+7.61 82.9464 17.0536 279.918 11.2096 8.87293 279.871 10.883 9.24555 
+7.62 82.9371 17.0629 279.917 11.2114 8.87197 279.871 10.8839 9.24458 
+7.63 82.9278 17.0722 279.916 11.2132 8.871 279.871 10.8849 9.2436 
+7.64 82.9185 17.0815 279.915 11.215 8.87004 279.871 10.8859 9.24263 
+7.65 82.9092 17.0908 279.914 11.2168 8.86908 279.871 10.8869 9.24166 
+7.66 82.8999 17.1001 279.913 11.2186 8.86812 279.871 10.8878 9.24068 
+7.67 82.8906 17.1094 279.912 11.2204 8.86717 279.871 10.8888 9.23971 
+7.68 82.8813 17.1187 279.912 11.2222 8.86621 279.871 10.8898 9.23874 
+7.69 82.872 17.128 279.911 11.224 8.86526 279.871 10.8908 9.23776 
+7.7 82.8627 17.1373 279.91 11.2258 8.86431 279.871 10.8917 9.23679 
+7.71 82.8534 17.1466 279.909 11.2276 8.86335 279.871 10.8927 9.23582 
+7.72 82.8441 17.1559 279.908 11.2294 8.8624 279.871 10.8937 9.23484 
+7.73 82.8348 17.1652 279.907 11.2312 8.86146 279.871 10.8947 9.23387 
+7.74 82.8255 17.1745 279.906 11.2331 8.86051 279.871 10.8956 9.2329 
+7.75 82.8162 17.1838 279.906 11.2349 8.85956 279.871 10.8966 9.23192 
+7.76 82.8069 17.1931 279.905 11.2367 8.85862 279.871 10.8976 9.23095 
+7.77 82.7975 17.2025 279.904 11.2385 8.85768 279.871 10.8985 9.22998 
+7.78 82.7882 17.2118 279.903 11.2403 8.85673 279.871 10.8995 9.229 
+7.79 82.7789 17.2211 279.902 11.2421 8.85579 279.871 10.9005 9.22803 
+7.8 82.7696 17.2304 279.901 11.2439 8.85485 279.871 10.9015 9.22706 
+7.81 82.7603 17.2397 279.9 11.2457 8.85392 279.871 10.9024 9.22609 
+7.82 82.751 17.249 279.899 11.2476 8.85298 279.871 10.9034 9.22511 
+7.83 82.7417 17.2583 279.899 11.2494 8.85204 279.872 10.9044 9.22414 
+7.84 82.7324 17.2676 279.898 11.2512 8.85111 279.872 10.9053 9.22317 
+7.85 82.7231 17.2769 279.897 11.253 8.85018 279.872 10.9063 9.2222 
+7.86 82.7138 17.2862 279.896 11.2548 8.84925 279.872 10.9073 9.22123 
+7.87 82.7045 17.2955 279.895 11.2566 8.84832 279.872 10.9082 9.22025 
+7.88 82.6952 17.3048 279.894 11.2585 8.84739 279.872 10.9092 9.21928 
+7.89 82.6859 17.3141 279.893 11.2603 8.84646 279.872 10.9102 9.21831 
+7.9 82.6766 17.3234 279.892 11.2621 8.84554 279.872 10.9111 9.21734 
+7.91 82.6672 17.3328 279.891 11.2639 8.84461 279.872 10.9121 9.21637 
+7.92 82.6579 17.3421 279.891 11.2657 8.84369 279.872 10.9131 9.21539 
+7.93 82.6486 17.3514 279.89 11.2676 8.84277 279.872 10.914 9.21442 
+7.94 82.6393 17.3607 279.889 11.2694 8.84185 279.872 10.915 9.21345 
+7.95 82.63 17.37 279.888 11.2712 8.84093 279.872 10.9159 9.21248 
+7.96 82.6207 17.3793 279.887 11.273 8.84001 279.872 10.9169 9.21151 
+7.97 82.6114 17.3886 279.886 11.2748 8.8391 279.872 10.9179 9.21054 
+7.98 82.6021 17.3979 279.885 11.2767 8.83818 279.872 10.9188 9.20956 
+7.99 82.5928 17.4072 279.884 11.2785 8.83727 279.872 10.9198 9.20859 
+8 82.5835 17.4165 279.883 11.2803 8.83636 279.872 10.9208 9.20762 
+8.01 82.5742 17.4258 279.882 11.2821 8.83545 279.872 10.9217 9.20665 
+8.02 82.5648 17.4352 279.882 11.284 8.83454 279.872 10.9227 9.20568 
+8.03 82.5555 17.4445 279.881 11.2858 8.83363 279.872 10.9236 9.20471 
+8.04 82.5462 17.4538 279.88 11.2876 8.83272 279.872 10.9246 9.20374 
+8.05 82.5369 17.4631 279.879 11.2894 8.83182 279.872 10.9256 9.20277 
+8.06 82.5276 17.4724 279.878 11.2913 8.83091 279.872 10.9265 9.2018 
+8.07 82.5183 17.4817 279.877 11.2931 8.83001 279.872 10.9275 9.20083 
+8.08 82.509 17.491 279.876 11.2949 8.82911 279.872 10.9284 9.19986 
+8.09 82.4997 17.5003 279.875 11.2968 8.82821 279.872 10.9294 9.19889 
+8.1 82.4904 17.5096 279.874 11.2986 8.82731 279.872 10.9303 9.19792 
+8.11 82.4811 17.5189 279.873 11.3004 8.82641 279.872 10.9313 9.19695 
+8.12 82.4717 17.5283 279.872 11.3022 8.82552 279.872 10.9323 9.19597 
+8.13 82.4624 17.5376 279.871 11.3041 8.82462 279.872 10.9332 9.195 
+8.14 82.4531 17.5469 279.87 11.3059 8.82373 279.872 10.9342 9.19403 
+8.15 82.4438 17.5562 279.869 11.3077 8.82284 279.872 10.9351 9.19306 
+8.16 82.4345 17.5655 279.868 11.3096 8.82195 279.872 10.9361 9.19209 
+8.17 82.4252 17.5748 279.868 11.3114 8.82106 279.872 10.937 9.19113 
+8.18 82.4159 17.5841 279.867 11.3132 8.82017 279.872 10.938 9.19016 
+8.19 82.4066 17.5934 279.866 11.3151 8.81928 279.872 10.9389 9.18919 
+8.2 82.3972 17.6028 279.865 11.3169 8.8184 279.872 10.9399 9.18822 
+8.21 82.3879 17.6121 279.864 11.3188 8.81751 279.872 10.9409 9.18725 
+8.22 82.3786 17.6214 279.863 11.3206 8.81663 279.872 10.9418 9.18628 
+8.23 82.3693 17.6307 279.862 11.3224 8.81575 279.872 10.9428 9.18531 
+8.24 82.36 17.64 279.861 11.3243 8.81487 279.872 10.9437 9.18434 
+8.25 82.3507 17.6493 279.86 11.3261 8.81399 279.872 10.9447 9.18337 
+8.26 82.3414 17.6586 279.859 11.3279 8.81312 279.872 10.9456 9.1824 
+8.27 82.332 17.668 279.858 11.3298 8.81224 279.872 10.9466 9.18143 
+8.28 82.3227 17.6773 279.857 11.3316 8.81137 279.872 10.9475 9.18046 
+8.29 82.3134 17.6866 279.856 11.3335 8.81049 279.872 10.9485 9.17949 
+8.3 82.3041 17.6959 279.855 11.3353 8.80962 279.872 10.9494 9.17852 
+8.31 82.2948 17.7052 279.854 11.3371 8.80875 279.872 10.9504 9.17756 
+8.32 82.2855 17.7145 279.853 11.339 8.80788 279.872 10.9513 9.17659 
+8.33 82.2762 17.7238 279.852 11.3408 8.80702 279.872 10.9523 9.17562 
+8.34 82.2668 17.7332 279.851 11.3427 8.80615 279.872 10.9532 9.17465 
+8.35 82.2575 17.7425 279.85 11.3445 8.80529 279.872 10.9542 9.17368 
+8.36 82.2482 17.7518 279.849 11.3464 8.80442 279.872 10.9551 9.17271 
+8.37 82.2389 17.7611 279.848 11.3482 8.80356 279.872 10.9561 9.17175 
+8.38 82.2296 17.7704 279.847 11.3501 8.8027 279.872 10.957 9.17078 
+8.39 82.2203 17.7797 279.846 11.3519 8.80184 279.872 10.9579 9.16981 
+8.4 82.2109 17.7891 279.845 11.3538 8.80098 279.872 10.9589 9.16884 
+8.41 82.2016 17.7984 279.844 11.3556 8.80012 279.872 10.9598 9.16787 
+8.42 82.1923 17.8077 279.843 11.3574 8.79927 279.872 10.9608 9.16691 
+8.43 82.183 17.817 279.842 11.3593 8.79842 279.872 10.9617 9.16594 
+8.44 82.1737 17.8263 279.841 11.3611 8.79756 279.872 10.9627 9.16497 
+8.45 82.1644 17.8356 279.84 11.363 8.79671 279.872 10.9636 9.164 
+8.46 82.155 17.845 279.839 11.3648 8.79586 279.872 10.9646 9.16303 
+8.47 82.1457 17.8543 279.838 11.3667 8.79501 279.872 10.9655 9.16207 
+8.48 82.1364 17.8636 279.837 11.3685 8.79417 279.872 10.9664 9.1611 
+8.49 82.1271 17.8729 279.836 11.3704 8.79332 279.872 10.9674 9.16013 
+8.5 82.1178 17.8822 279.835 11.3723 8.79248 279.873 10.9683 9.15917 
+8.51 82.1085 17.8915 279.834 11.3741 8.79163 279.873 10.9693 9.1582 
+8.52 82.0991 17.9009 279.833 11.376 8.79079 279.873 10.9702 9.15723 
+8.53 82.0898 17.9102 279.832 11.3778 8.78995 279.873 10.9711 9.15626 
+8.54 82.0805 17.9195 279.831 11.3797 8.78911 279.873 10.9721 9.1553 
+8.55 82.0712 17.9288 279.83 11.3815 8.78827 279.873 10.973 9.15433 
+8.56 82.0619 17.9381 279.829 11.3834 8.78744 279.873 10.974 9.15336 
+8.57 82.0525 17.9475 279.828 11.3852 8.7866 279.873 10.9749 9.1524 
+8.58 82.0432 17.9568 279.827 11.3871 8.78577 279.873 10.9758 9.15143 
+8.59 82.0339 17.9661 279.826 11.3889 8.78494 279.873 10.9768 9.15046 
+8.6 82.0246 17.9754 279.825 11.3908 8.78411 279.873 10.9777 9.1495 
+8.61 82.0153 17.9847 279.824 11.3927 8.78328 279.873 10.9787 9.14853 
+8.62 82.0059 17.9941 279.823 11.3945 8.78245 279.873 10.9796 9.14757 
+8.63 81.9966 18.0034 279.822 11.3964 8.78162 279.873 10.9805 9.1466 
+8.64 81.9873 18.0127 279.821 11.3982 8.78079 279.873 10.9815 9.14563 
+8.65 81.978 18.022 279.82 11.4001 8.77997 279.873 10.9824 9.14467 
+8.66 81.9687 18.0313 279.819 11.402 8.77915 279.873 10.9833 9.1437 
+8.67 81.9593 18.0407 279.818 11.4038 8.77833 279.873 10.9843 9.14274 
+8.68 81.95 18.05 279.817 11.4057 8.77751 279.873 10.9852 9.14177 
+8.69 81.9407 18.0593 279.816 11.4076 8.77669 279.873 10.9861 9.1408 
+8.7 81.9314 18.0686 279.815 11.4094 8.77587 279.873 10.9871 9.13984 
+8.71 81.9221 18.0779 279.814 11.4113 8.77505 279.873 10.988 9.13887 
+8.72 81.9127 18.0873 279.813 11.4131 8.77424 279.873 10.9889 9.13791 
+8.73 81.9034 18.0966 279.812 11.415 8.77343 279.873 10.9899 9.13694 
+8.74 81.8941 18.1059 279.811 11.4169 8.77261 279.873 10.9908 9.13598 
+8.75 81.8848 18.1152 279.809 11.4187 8.7718 279.873 10.9917 9.13501 
+8.76 81.8754 18.1246 279.808 11.4206 8.77099 279.873 10.9927 9.13405 
+8.77 81.8661 18.1339 279.807 11.4225 8.77019 279.873 10.9936 9.13308 
+8.78 81.8568 18.1432 279.806 11.4243 8.76938 279.873 10.9945 9.13212 
+8.79 81.8475 18.1525 279.805 11.4262 8.76857 279.873 10.9955 9.13115 
+8.8 81.8382 18.1618 279.804 11.4281 8.76777 279.873 10.9964 9.13019 
+8.81 81.8288 18.1712 279.803 11.43 8.76697 279.873 10.9973 9.12922 
+8.82 81.8195 18.1805 279.802 11.4318 8.76617 279.873 10.9983 9.12826 
+8.83 81.8102 18.1898 279.801 11.4337 8.76537 279.874 10.9992 9.12729 
+8.84 81.8009 18.1991 279.8 11.4356 8.76457 279.874 11.0001 9.12633 
+8.85 81.7915 18.2085 279.799 11.4374 8.76377 279.874 11.001 9.12537 
+8.86 81.7822 18.2178 279.798 11.4393 8.76297 279.874 11.002 9.1244 
+8.87 81.7729 18.2271 279.797 11.4412 8.76218 279.874 11.0029 9.12344 
+8.88 81.7636 18.2364 279.796 11.4431 8.76139 279.874 11.0038 9.12247 
+8.89 81.7542 18.2458 279.794 11.4449 8.76059 279.874 11.0048 9.12151 
+8.9 81.7449 18.2551 279.793 11.4468 8.7598 279.874 11.0057 9.12054 
+8.91 81.7356 18.2644 279.792 11.4487 8.75901 279.874 11.0066 9.11958 
+8.92 81.7263 18.2737 279.791 11.4506 8.75823 279.874 11.0075 9.11862 
+8.93 81.7169 18.2831 279.79 11.4524 8.75744 279.874 11.0085 9.11765 
+8.94 81.7076 18.2924 279.789 11.4543 8.75666 279.874 11.0094 9.11669 
+8.95 81.6983 18.3017 279.788 11.4562 8.75587 279.874 11.0103 9.11573 
+8.96 81.689 18.311 279.787 11.4581 8.75509 279.874 11.0112 9.11476 
+8.97 81.6796 18.3204 279.786 11.4599 8.75431 279.874 11.0122 9.1138 
+8.98 81.6703 18.3297 279.785 11.4618 8.75353 279.874 11.0131 9.11284 
+8.99 81.661 18.339 279.784 11.4637 8.75275 279.874 11.014 9.11187 
+9 81.6517 18.3483 279.782 11.4656 8.75197 279.874 11.0149 9.11091 
+9.01 81.6423 18.3577 279.781 11.4675 8.7512 279.874 11.0158 9.10995 
+9.02 81.633 18.367 279.78 11.4694 8.75042 279.874 11.0168 9.10899 
+9.03 81.6237 18.3763 279.779 11.4712 8.74965 279.874 11.0177 9.10802 
+9.04 81.6143 18.3857 279.778 11.4731 8.74888 279.874 11.0186 9.10706 
+9.05 81.605 18.395 279.777 11.475 8.74811 279.874 11.0195 9.1061 
+9.06 81.5957 18.4043 279.776 11.4769 8.74734 279.874 11.0205 9.10513 
+9.07 81.5864 18.4136 279.775 11.4788 8.74657 279.874 11.0214 9.10417 
+9.08 81.577 18.423 279.774 11.4807 8.74581 279.874 11.0223 9.10321 
+9.09 81.5677 18.4323 279.772 11.4825 8.74504 279.875 11.0232 9.10225 
+9.1 81.5584 18.4416 279.771 11.4844 8.74428 279.875 11.0241 9.10129 
+9.11 81.549 18.451 279.77 11.4863 8.74352 279.875 11.0251 9.10032 
+9.12 81.5397 18.4603 279.769 11.4882 8.74275 279.875 11.026 9.09936 
+9.13 81.5304 18.4696 279.768 11.4901 8.742 279.875 11.0269 9.0984 
+9.14 81.5211 18.4789 279.767 11.492 8.74124 279.875 11.0278 9.09744 
+9.15 81.5117 18.4883 279.766 11.4939 8.74048 279.875 11.0287 9.09648 
+9.16 81.5024 18.4976 279.765 11.4958 8.73972 279.875 11.0296 9.09551 
+9.17 81.4931 18.5069 279.763 11.4976 8.73897 279.875 11.0306 9.09455 
+9.18 81.4837 18.5163 279.762 11.4995 8.73822 279.875 11.0315 9.09359 
+9.19 81.4744 18.5256 279.761 11.5014 8.73747 279.875 11.0324 9.09263 
+9.2 81.4651 18.5349 279.76 11.5033 8.73672 279.875 11.0333 9.09167 
+9.21 81.4557 18.5443 279.759 11.5052 8.73597 279.875 11.0342 9.09071 
+9.22 81.4464 18.5536 279.758 11.5071 8.73522 279.875 11.0351 9.08975 
+9.23 81.4371 18.5629 279.757 11.509 8.73447 279.875 11.036 9.08879 
+9.24 81.4278 18.5722 279.755 11.5109 8.73373 279.875 11.037 9.08783 
+9.25 81.4184 18.5816 279.754 11.5128 8.73299 279.875 11.0379 9.08686 
+9.26 81.4091 18.5909 279.753 11.5147 8.73225 279.875 11.0388 9.0859 
+9.27 81.3998 18.6002 279.752 11.5166 8.7315 279.875 11.0397 9.08494 
+9.28 81.3904 18.6096 279.751 11.5185 8.73077 279.875 11.0406 9.08398 
+9.29 81.3811 18.6189 279.75 11.5204 8.73003 279.875 11.0415 9.08302 
+9.3 81.3718 18.6282 279.748 11.5223 8.72929 279.875 11.0424 9.08206 
+9.31 81.3624 18.6376 279.747 11.5242 8.72856 279.876 11.0433 9.0811 
+9.32 81.3531 18.6469 279.746 11.5261 8.72782 279.876 11.0443 9.08014 
+9.33 81.3438 18.6562 279.745 11.528 8.72709 279.876 11.0452 9.07918 
+9.34 81.3344 18.6656 279.744 11.5299 8.72636 279.876 11.0461 9.07822 
+9.35 81.3251 18.6749 279.743 11.5318 8.72563 279.876 11.047 9.07726 
+9.36 81.3158 18.6842 279.741 11.5337 8.7249 279.876 11.0479 9.0763 
+9.37 81.3064 18.6936 279.74 11.5356 8.72417 279.876 11.0488 9.07534 
+9.38 81.2971 18.7029 279.739 11.5375 8.72345 279.876 11.0497 9.07438 
+9.39 81.2878 18.7122 279.738 11.5394 8.72272 279.876 11.0506 9.07342 
+9.4 81.2784 18.7216 279.737 11.5413 8.722 279.876 11.0515 9.07246 
+9.41 81.2691 18.7309 279.736 11.5432 8.72128 279.876 11.0524 9.0715 
+9.42 81.2598 18.7402 279.734 11.5451 8.72056 279.876 11.0534 9.07054 
+9.43 81.2504 18.7496 279.733 11.547 8.71984 279.876 11.0543 9.06959 
+9.44 81.2411 18.7589 279.732 11.5489 8.71912 279.876 11.0552 9.06863 
+9.45 81.2317 18.7683 279.731 11.5508 8.71841 279.876 11.0561 9.06767 
+9.46 81.2224 18.7776 279.73 11.5527 8.71769 279.876 11.057 9.06671 
+9.47 81.2131 18.7869 279.728 11.5546 8.71698 279.876 11.0579 9.06575 
+9.48 81.2037 18.7963 279.727 11.5565 8.71626 279.876 11.0588 9.06479 
+9.49 81.1944 18.8056 279.726 11.5584 8.71555 279.876 11.0597 9.06383 
+9.5 81.1851 18.8149 279.725 11.5603 8.71484 279.877 11.0606 9.06287 
+9.51 81.1757 18.8243 279.724 11.5622 8.71414 279.877 11.0615 9.06192 
+9.52 81.1664 18.8336 279.722 11.5641 8.71343 279.877 11.0624 9.06096 
+9.53 81.1571 18.8429 279.721 11.5661 8.71272 279.877 11.0633 9.06 
+9.54 81.1477 18.8523 279.72 11.568 8.71202 279.877 11.0642 9.05904 
+9.55 81.1384 18.8616 279.719 11.5699 8.71132 279.877 11.0651 9.05808 
+9.56 81.129 18.871 279.718 11.5718 8.71062 279.877 11.066 9.05712 
+9.57 81.1197 18.8803 279.716 11.5737 8.70992 279.877 11.0669 9.05617 
+9.58 81.1104 18.8896 279.715 11.5756 8.70922 279.877 11.0678 9.05521 
+9.59 81.101 18.899 279.714 11.5775 8.70852 279.877 11.0687 9.05425 
+9.6 81.0917 18.9083 279.713 11.5794 8.70782 279.877 11.0696 9.05329 
+9.61 81.0824 18.9176 279.712 11.5814 8.70713 279.877 11.0705 9.05234 
+9.62 81.073 18.927 279.71 11.5833 8.70644 279.877 11.0714 9.05138 
+9.63 81.0637 18.9363 279.709 11.5852 8.70574 279.877 11.0723 9.05042 
+9.64 81.0543 18.9457 279.708 11.5871 8.70505 279.877 11.0732 9.04946 
+9.65 81.045 18.955 279.707 11.589 8.70436 279.877 11.0741 9.04851 
+9.66 81.0357 18.9643 279.705 11.5909 8.70368 279.877 11.075 9.04755 
+9.67 81.0263 18.9737 279.704 11.5929 8.70299 279.877 11.0759 9.04659 
+9.68 81.017 18.983 279.703 11.5948 8.7023 279.878 11.0768 9.04564 
+9.69 81.0076 18.9924 279.702 11.5967 8.70162 279.878 11.0777 9.04468 
+9.7 80.9983 19.0017 279.7 11.5986 8.70094 279.878 11.0786 9.04372 
+9.71 80.989 19.011 279.699 11.6005 8.70026 279.878 11.0795 9.04277 
+9.72 80.9796 19.0204 279.698 11.6025 8.69958 279.878 11.0804 9.04181 
+9.73 80.9703 19.0297 279.697 11.6044 8.6989 279.878 11.0813 9.04085 
+9.74 80.9609 19.0391 279.695 11.6063 8.69822 279.878 11.0822 9.0399 
+9.75 80.9516 19.0484 279.694 11.6082 8.69754 279.878 11.0831 9.03894 
+9.76 80.9423 19.0577 279.693 11.6101 8.69687 279.878 11.084 9.03798 
+9.77 80.9329 19.0671 279.692 11.6121 8.6962 279.878 11.0849 9.03703 
+9.78 80.9236 19.0764 279.69 11.614 8.69553 279.878 11.0858 9.03607 
+9.79 80.9142 19.0858 279.689 11.6159 8.69485 279.878 11.0867 9.03512 
+9.8 80.9049 19.0951 279.688 11.6178 8.69419 279.878 11.0876 9.03416 
+9.81 80.8956 19.1044 279.687 11.6198 8.69352 279.878 11.0885 9.03321 
+9.82 80.8862 19.1138 279.685 11.6217 8.69285 279.878 11.0893 9.03225 
+9.83 80.8769 19.1231 279.684 11.6236 8.69219 279.878 11.0902 9.03129 
+9.84 80.8675 19.1325 279.683 11.6256 8.69152 279.879 11.0911 9.03034 
+9.85 80.8582 19.1418 279.682 11.6275 8.69086 279.879 11.092 9.02938 
+9.86 80.8488 19.1512 279.68 11.6294 8.6902 279.879 11.0929 9.02843 
+9.87 80.8395 19.1605 279.679 11.6313 8.68954 279.879 11.0938 9.02747 
+9.88 80.8302 19.1698 279.678 11.6333 8.68888 279.879 11.0947 9.02652 
+9.89 80.8208 19.1792 279.677 11.6352 8.68822 279.879 11.0956 9.02556 
+9.9 80.8115 19.1885 279.675 11.6371 8.68757 279.879 11.0965 9.02461 
+9.91 80.8021 19.1979 279.674 11.6391 8.68692 279.879 11.0974 9.02366 
+9.92 80.7928 19.2072 279.673 11.641 8.68626 279.879 11.0983 9.0227 
+9.93 80.7834 19.2166 279.671 11.6429 8.68561 279.879 11.0992 9.02175 
+9.94 80.7741 19.2259 279.67 11.6449 8.68496 279.879 11.1 9.02079 
+9.95 80.7647 19.2353 279.669 11.6468 8.68431 279.879 11.1009 9.01984 
+9.96 80.7554 19.2446 279.668 11.6487 8.68366 279.879 11.1018 9.01888 
+9.97 80.7461 19.2539 279.666 11.6507 8.68302 279.879 11.1027 9.01793 
+9.98 80.7367 19.2633 279.665 11.6526 8.68237 279.879 11.1036 9.01698 
+9.99 80.7274 19.2726 279.664 11.6545 8.68173 279.88 11.1045 9.01602 
+10 80.718 19.282 279.662 11.6565 8.68109 279.88 11.1054 9.01507 
+10.01 80.7087 19.2913 279.661 11.6584 8.68045 279.88 11.1063 9.01411 
+10.02 80.6993 19.3007 279.66 11.6603 8.67981 279.88 11.1071 9.01316 
+10.03 80.69 19.31 279.659 11.6623 8.67917 279.88 11.108 9.01221 
+10.04 80.6806 19.3194 279.657 11.6642 8.67853 279.88 11.1089 9.01125 
+10.05 80.6713 19.3287 279.656 11.6662 8.6779 279.88 11.1098 9.0103 
+10.06 80.6619 19.3381 279.655 11.6681 8.67726 279.88 11.1107 9.00935 
+10.07 80.6526 19.3474 279.653 11.67 8.67663 279.88 11.1116 9.00839 
+10.08 80.6432 19.3568 279.652 11.672 8.676 279.88 11.1124 9.00744 
+10.09 80.6339 19.3661 279.651 11.6739 8.67537 279.88 11.1133 9.00649 
+10.1 80.6245 19.3755 279.649 11.6759 8.67474 279.88 11.1142 9.00554 
+10.11 80.6152 19.3848 279.648 11.6778 8.67411 279.88 11.1151 9.00458 
+10.12 80.6059 19.3941 279.647 11.6798 8.67349 279.88 11.116 9.00363 
+10.13 80.5965 19.4035 279.645 11.6817 8.67286 279.88 11.1169 9.00268 
+10.14 80.5872 19.4128 279.644 11.6836 8.67224 279.881 11.1177 9.00173 
+10.15 80.5778 19.4222 279.643 11.6856 8.67162 279.881 11.1186 9.00077 
+10.16 80.5685 19.4315 279.641 11.6875 8.671 279.881 11.1195 8.99982 
+10.17 80.5591 19.4409 279.64 11.6895 8.67038 279.881 11.1204 8.99887 
+10.18 80.5498 19.4502 279.639 11.6914 8.66976 279.881 11.1213 8.99792 
+10.19 80.5404 19.4596 279.637 11.6934 8.66914 279.881 11.1221 8.99696 
+10.2 80.5311 19.4689 279.636 11.6953 8.66853 279.881 11.123 8.99601 
+10.21 80.5217 19.4783 279.635 11.6973 8.66791 279.881 11.1239 8.99506 
+10.22 80.5124 19.4876 279.633 11.6992 8.6673 279.881 11.1248 8.99411 
+10.23 80.503 19.497 279.632 11.7012 8.66669 279.881 11.1257 8.99316 
+10.24 80.4937 19.5063 279.631 11.7031 8.66608 279.881 11.1265 8.99221 
+10.25 80.4843 19.5157 279.629 11.7051 8.66547 279.881 11.1274 8.99126 
+10.26 80.475 19.525 279.628 11.707 8.66487 279.881 11.1283 8.9903 
+10.27 80.4656 19.5344 279.627 11.709 8.66426 279.881 11.1292 8.98935 
+10.28 80.4563 19.5437 279.625 11.7109 8.66366 279.882 11.1301 8.9884 
+10.29 80.4469 19.5531 279.624 11.7129 8.66305 279.882 11.1309 8.98745 
+10.3 80.4376 19.5624 279.623 11.7148 8.66245 279.882 11.1318 8.9865 
+10.31 80.4282 19.5718 279.621 11.7168 8.66185 279.882 11.1327 8.98555 
+10.32 80.4188 19.5812 279.62 11.7187 8.66125 279.882 11.1336 8.9846 
+10.33 80.4095 19.5905 279.619 11.7207 8.66065 279.882 11.1344 8.98365 
+10.34 80.4001 19.5999 279.617 11.7227 8.66006 279.882 11.1353 8.9827 
+10.35 80.3908 19.6092 279.616 11.7246 8.65946 279.882 11.1362 8.98175 
+10.36 80.3814 19.6186 279.615 11.7266 8.65887 279.882 11.1371 8.9808 
+10.37 80.3721 19.6279 279.613 11.7285 8.65828 279.882 11.1379 8.97985 
+10.38 80.3627 19.6373 279.612 11.7305 8.65769 279.882 11.1388 8.9789 
+10.39 80.3534 19.6466 279.61 11.7324 8.6571 279.882 11.1397 8.97795 
+10.4 80.344 19.656 279.609 11.7344 8.65651 279.882 11.1406 8.977 
+10.41 80.3347 19.6653 279.608 11.7364 8.65592 279.883 11.1414 8.97605 
+10.42 80.3253 19.6747 279.606 11.7383 8.65534 279.883 11.1423 8.9751 
+10.43 80.316 19.684 279.605 11.7403 8.65475 279.883 11.1432 8.97415 
+10.44 80.3066 19.6934 279.604 11.7422 8.65417 279.883 11.144 8.9732 
+10.45 80.2973 19.7027 279.602 11.7442 8.65359 279.883 11.1449 8.97225 
+10.46 80.2879 19.7121 279.601 11.7462 8.65301 279.883 11.1458 8.9713 
+10.47 80.2785 19.7215 279.599 11.7481 8.65243 279.883 11.1467 8.97035 
+10.48 80.2692 19.7308 279.598 11.7501 8.65185 279.883 11.1475 8.9694 
+10.49 80.2598 19.7402 279.597 11.7521 8.65127 279.883 11.1484 8.96846 
+10.5 80.2505 19.7495 279.595 11.754 8.6507 279.883 11.1493 8.96751 
+10.51 80.2411 19.7589 279.594 11.756 8.65013 279.883 11.1501 8.96656 
+10.52 80.2318 19.7682 279.592 11.758 8.64955 279.883 11.151 8.96561 
+10.53 80.2224 19.7776 279.591 11.7599 8.64898 279.883 11.1519 8.96466 
+10.54 80.2131 19.7869 279.59 11.7619 8.64841 279.884 11.1527 8.96371 
+10.55 80.2037 19.7963 279.588 11.7639 8.64785 279.884 11.1536 8.96277 
+10.56 80.1943 19.8057 279.587 11.7658 8.64728 279.884 11.1545 8.96182 
+10.57 80.185 19.815 279.585 11.7678 8.64671 279.884 11.1553 8.96087 
+10.58 80.1756 19.8244 279.584 11.7698 8.64615 279.884 11.1562 8.95992 
+10.59 80.1663 19.8337 279.583 11.7717 8.64559 279.884 11.1571 8.95897 
+10.6 80.1569 19.8431 279.581 11.7737 8.64503 279.884 11.1579 8.95803 
+10.61 80.1476 19.8524 279.58 11.7757 8.64447 279.884 11.1588 8.95708 
+10.62 80.1382 19.8618 279.578 11.7776 8.64391 279.884 11.1597 8.95613 
+10.63 80.1288 19.8712 279.577 11.7796 8.64335 279.884 11.1605 8.95518 
+10.64 80.1195 19.8805 279.576 11.7816 8.64279 279.884 11.1614 8.95424 
+10.65 80.1101 19.8899 279.574 11.7836 8.64224 279.884 11.1623 8.95329 
+10.66 80.1008 19.8992 279.573 11.7855 8.64169 279.885 11.1631 8.95234 
+10.67 80.0914 19.9086 279.571 11.7875 8.64113 279.885 11.164 8.95139 
+10.68 80.082 19.918 279.57 11.7895 8.64058 279.885 11.1649 8.95045 
+10.69 80.0727 19.9273 279.569 11.7915 8.64003 279.885 11.1657 8.9495 
+10.7 80.0633 19.9367 279.567 11.7934 8.63949 279.885 11.1666 8.94855 
+10.71 80.054 19.946 279.566 11.7954 8.63894 279.885 11.1674 8.94761 
+10.72 80.0446 19.9554 279.564 11.7974 8.63839 279.885 11.1683 8.94666 
+10.73 80.0352 19.9648 279.563 11.7994 8.63785 279.885 11.1692 8.94572 
+10.74 80.0259 19.9741 279.561 11.8013 8.63731 279.885 11.17 8.94477 
+10.75 80.0165 19.9835 279.56 11.8033 8.63677 279.885 11.1709 8.94382 
+10.76 80.0072 19.9928 279.558 11.8053 8.63623 279.885 11.1718 8.94288 
+10.77 79.9978 20.0022 279.557 11.8073 8.63569 279.885 11.1726 8.94193 
+10.78 79.9884 20.0116 279.556 11.8093 8.63515 279.886 11.1735 8.94099 
+10.79 79.9791 20.0209 279.554 11.8112 8.63462 279.886 11.1743 8.94004 
+10.8 79.9697 20.0303 279.553 11.8132 8.63408 279.886 11.1752 8.93909 
+10.81 79.9604 20.0396 279.551 11.8152 8.63355 279.886 11.1761 8.93815 
+10.82 79.951 20.049 279.55 11.8172 8.63302 279.886 11.1769 8.9372 
+10.83 79.9416 20.0584 279.548 11.8192 8.63249 279.886 11.1778 8.93626 
+10.84 79.9323 20.0677 279.547 11.8212 8.63196 279.886 11.1786 8.93531 
+10.85 79.9229 20.0771 279.545 11.8231 8.63143 279.886 11.1795 8.93437 
+10.86 79.9135 20.0865 279.544 11.8251 8.6309 279.886 11.1803 8.93342 
+10.87 79.9042 20.0958 279.543 11.8271 8.63038 279.886 11.1812 8.93248 
+10.88 79.8948 20.1052 279.541 11.8291 8.62986 279.886 11.1821 8.93153 
+10.89 79.8854 20.1146 279.54 11.8311 8.62933 279.886 11.1829 8.93059 
+10.9 79.8761 20.1239 279.538 11.8331 8.62881 279.887 11.1838 8.92964 
+10.91 79.8667 20.1333 279.537 11.8351 8.62829 279.887 11.1846 8.9287 
+10.92 79.8574 20.1426 279.535 11.8371 8.62777 279.887 11.1855 8.92776 
+10.93 79.848 20.152 279.534 11.839 8.62726 279.887 11.1863 8.92681 
+10.94 79.8386 20.1614 279.532 11.841 8.62674 279.887 11.1872 8.92587 
+10.95 79.8293 20.1707 279.531 11.843 8.62623 279.887 11.1881 8.92492 
+10.96 79.8199 20.1801 279.529 11.845 8.62571 279.887 11.1889 8.92398 
+10.97 79.8105 20.1895 279.528 11.847 8.6252 279.887 11.1898 8.92304 
+10.98 79.8012 20.1988 279.526 11.849 8.62469 279.887 11.1906 8.92209 
+10.99 79.7918 20.2082 279.525 11.851 8.62418 279.887 11.1915 8.92115 
+11 79.7824 20.2176 279.523 11.853 8.62368 279.887 11.1923 8.92021 
+11.01 79.7731 20.2269 279.522 11.855 8.62317 279.888 11.1932 8.91926 
+11.02 79.7637 20.2363 279.52 11.857 8.62267 279.888 11.194 8.91832 
+11.03 79.7543 20.2457 279.519 11.859 8.62216 279.888 11.1949 8.91738 
+11.04 79.745 20.255 279.517 11.861 8.62166 279.888 11.1957 8.91643 
+11.05 79.7356 20.2644 279.516 11.863 8.62116 279.888 11.1966 8.91549 
+11.06 79.7262 20.2738 279.514 11.8649 8.62066 279.888 11.1974 8.91455 
+11.07 79.7169 20.2831 279.513 11.8669 8.62016 279.888 11.1983 8.91361 
+11.08 79.7075 20.2925 279.511 11.8689 8.61967 279.888 11.1991 8.91266 
+11.09 79.6981 20.3019 279.51 11.8709 8.61917 279.888 11.2 8.91172 
+11.1 79.6888 20.3112 279.508 11.8729 8.61868 279.888 11.2008 8.91078 
+11.11 79.6794 20.3206 279.507 11.8749 8.61818 279.888 11.2017 8.90984 
+11.12 79.67 20.33 279.505 11.8769 8.61769 279.889 11.2025 8.90889 
+11.13 79.6607 20.3393 279.504 11.8789 8.6172 279.889 11.2034 8.90795 
+11.14 79.6513 20.3487 279.502 11.8809 8.61671 279.889 11.2042 8.90701 
+11.15 79.6419 20.3581 279.501 11.8829 8.61623 279.889 11.2051 8.90607 
+11.16 79.6326 20.3674 279.499 11.8849 8.61574 279.889 11.2059 8.90513 
+11.17 79.6232 20.3768 279.498 11.8869 8.61526 279.889 11.2068 8.90419 
+11.18 79.6138 20.3862 279.496 11.8889 8.61477 279.889 11.2076 8.90324 
+11.19 79.6044 20.3956 279.495 11.891 8.61429 279.889 11.2085 8.9023 
+11.2 79.5951 20.4049 279.493 11.893 8.61381 279.889 11.2093 8.90136 
+11.21 79.5857 20.4143 279.492 11.895 8.61333 279.889 11.2102 8.90042 
+11.22 79.5763 20.4237 279.49 11.897 8.61285 279.89 11.211 8.89948 
+11.23 79.567 20.433 279.489 11.899 8.61238 279.89 11.2119 8.89854 
+11.24 79.5576 20.4424 279.487 11.901 8.6119 279.89 11.2127 8.8976 
+11.25 79.5482 20.4518 279.486 11.903 8.61143 279.89 11.2135 8.89666 
+11.26 79.5388 20.4612 279.484 11.905 8.61095 279.89 11.2144 8.89572 
+11.27 79.5295 20.4705 279.483 11.907 8.61048 279.89 11.2152 8.89478 
+11.28 79.5201 20.4799 279.481 11.909 8.61001 279.89 11.2161 8.89384 
+11.29 79.5107 20.4893 279.479 11.911 8.60955 279.89 11.2169 8.8929 
+11.3 79.5014 20.4986 279.478 11.913 8.60908 279.89 11.2178 8.89196 
+11.31 79.492 20.508 279.476 11.915 8.60861 279.89 11.2186 8.89102 
+11.32 79.4826 20.5174 279.475 11.9171 8.60815 279.89 11.2195 8.89008 
+11.33 79.4732 20.5268 279.473 11.9191 8.60768 279.891 11.2203 8.88914 
+11.34 79.4639 20.5361 279.472 11.9211 8.60722 279.891 11.2211 8.8882 
+11.35 79.4545 20.5455 279.47 11.9231 8.60676 279.891 11.222 8.88726 
+11.36 79.4451 20.5549 279.469 11.9251 8.6063 279.891 11.2228 8.88632 
+11.37 79.4358 20.5642 279.467 11.9271 8.60585 279.891 11.2237 8.88538 
+11.38 79.4264 20.5736 279.465 11.9291 8.60539 279.891 11.2245 8.88444 
+11.39 79.417 20.583 279.464 11.9311 8.60493 279.891 11.2253 8.8835 
+11.4 79.4076 20.5924 279.462 11.9332 8.60448 279.891 11.2262 8.88256 
+11.41 79.3983 20.6017 279.461 11.9352 8.60403 279.891 11.227 8.88162 
+11.42 79.3889 20.6111 279.459 11.9372 8.60358 279.891 11.2279 8.88068 
+11.43 79.3795 20.6205 279.458 11.9392 8.60313 279.892 11.2287 8.87975 
+11.44 79.3701 20.6299 279.456 11.9412 8.60268 279.892 11.2295 8.87881 
+11.45 79.3608 20.6392 279.455 11.9432 8.60223 279.892 11.2304 8.87787 
+11.46 79.3514 20.6486 279.453 11.9453 8.60179 279.892 11.2312 8.87693 
+11.47 79.342 20.658 279.451 11.9473 8.60134 279.892 11.2321 8.87599 
+11.48 79.3326 20.6674 279.45 11.9493 8.6009 279.892 11.2329 8.87506 
+11.49 79.3233 20.6767 279.448 11.9513 8.60046 279.892 11.2337 8.87412 
+11.5 79.3139 20.6861 279.447 11.9533 8.60002 279.892 11.2346 8.87318 
+11.51 79.3045 20.6955 279.445 11.9554 8.59958 279.892 11.2354 8.87224 
+11.52 79.2951 20.7049 279.443 11.9574 8.59914 279.892 11.2362 8.8713 
+11.53 79.2857 20.7143 279.442 11.9594 8.5987 279.893 11.2371 8.87037 
+11.54 79.2764 20.7236 279.44 11.9614 8.59827 279.893 11.2379 8.86943 
+11.55 79.267 20.733 279.439 11.9635 8.59784 279.893 11.2388 8.86849 
+11.56 79.2576 20.7424 279.437 11.9655 8.5974 279.893 11.2396 8.86756 
+11.57 79.2482 20.7518 279.436 11.9675 8.59697 279.893 11.2404 8.86662 
+11.58 79.2389 20.7611 279.434 11.9695 8.59654 279.893 11.2413 8.86568 
+11.59 79.2295 20.7705 279.432 11.9716 8.59612 279.893 11.2421 8.86475 
+11.6 79.2201 20.7799 279.431 11.9736 8.59569 279.893 11.2429 8.86381 
+11.61 79.2107 20.7893 279.429 11.9756 8.59526 279.893 11.2438 8.86287 
+11.62 79.2013 20.7987 279.428 11.9776 8.59484 279.893 11.2446 8.86194 
+11.63 79.192 20.808 279.426 11.9797 8.59442 279.894 11.2454 8.861 
+11.64 79.1826 20.8174 279.424 11.9817 8.594 279.894 11.2463 8.86006 
+11.65 79.1732 20.8268 279.423 11.9837 8.59358 279.894 11.2471 8.85913 
+11.66 79.1638 20.8362 279.421 11.9858 8.59316 279.894 11.2479 8.85819 
+11.67 79.1544 20.8456 279.419 11.9878 8.59274 279.894 11.2488 8.85726 
+11.68 79.1451 20.8549 279.418 11.9898 8.59232 279.894 11.2496 8.85632 
+11.69 79.1357 20.8643 279.416 11.9919 8.59191 279.894 11.2504 8.85538 
+11.7 79.1263 20.8737 279.415 11.9939 8.5915 279.894 11.2513 8.85445 
+11.71 79.1169 20.8831 279.413 11.9959 8.59108 279.894 11.2521 8.85351 
+11.72 79.1075 20.8925 279.411 11.998 8.59067 279.895 11.2529 8.85258 
+11.73 79.0982 20.9018 279.41 12 8.59026 279.895 11.2537 8.85164 
+11.74 79.0888 20.9112 279.408 12.002 8.58986 279.895 11.2546 8.85071 
+11.75 79.0794 20.9206 279.406 12.0041 8.58945 279.895 11.2554 8.84977 
+11.76 79.07 20.93 279.405 12.0061 8.58904 279.895 11.2562 8.84884 
+11.77 79.0606 20.9394 279.403 12.0081 8.58864 279.895 11.2571 8.8479 
+11.78 79.0513 20.9487 279.402 12.0102 8.58824 279.895 11.2579 8.84697 
+11.79 79.0419 20.9581 279.4 12.0122 8.58784 279.895 11.2587 8.84604 
+11.8 79.0325 20.9675 279.398 12.0142 8.58744 279.895 11.2596 8.8451 
+11.81 79.0231 20.9769 279.397 12.0163 8.58704 279.895 11.2604 8.84417 
+11.82 79.0137 20.9863 279.395 12.0183 8.58664 279.896 11.2612 8.84323 
+11.83 79.0043 20.9957 279.393 12.0204 8.58624 279.896 11.262 8.8423 
+11.84 78.995 21.005 279.392 12.0224 8.58585 279.896 11.2629 8.84137 
+11.85 78.9856 21.0144 279.39 12.0244 8.58546 279.896 11.2637 8.84043 
+11.86 78.9762 21.0238 279.388 12.0265 8.58506 279.896 11.2645 8.8395 
+11.87 78.9668 21.0332 279.387 12.0285 8.58467 279.896 11.2653 8.83857 
+11.88 78.9574 21.0426 279.385 12.0306 8.58428 279.896 11.2662 8.83763 
+11.89 78.948 21.052 279.383 12.0326 8.5839 279.896 11.267 8.8367 
+11.9 78.9386 21.0614 279.382 12.0347 8.58351 279.896 11.2678 8.83577 
+11.91 78.9293 21.0707 279.38 12.0367 8.58312 279.897 11.2686 8.83483 
+11.92 78.9199 21.0801 279.379 12.0388 8.58274 279.897 11.2695 8.8339 
+11.93 78.9105 21.0895 279.377 12.0408 8.58236 279.897 11.2703 8.83297 
+11.94 78.9011 21.0989 279.375 12.0428 8.58198 279.897 11.2711 8.83203 
+11.95 78.8917 21.1083 279.374 12.0449 8.5816 279.897 11.2719 8.8311 
+11.96 78.8823 21.1177 279.372 12.0469 8.58122 279.897 11.2728 8.83017 
+11.97 78.8729 21.1271 279.37 12.049 8.58084 279.897 11.2736 8.82924 
+11.98 78.8636 21.1364 279.368 12.051 8.58047 279.897 11.2744 8.82831 
+11.99 78.8542 21.1458 279.367 12.0531 8.58009 279.897 11.2752 8.82737 
+12 78.8448 21.1552 279.365 12.0551 8.57972 279.898 11.276 8.82644 
+12.01 78.8354 21.1646 279.363 12.0572 8.57935 279.898 11.2769 8.82551 
+12.02 78.826 21.174 279.362 12.0592 8.57898 279.898 11.2777 8.82458 
+12.03 78.8166 21.1834 279.36 12.0613 8.57861 279.898 11.2785 8.82365 
+12.04 78.8072 21.1928 279.358 12.0633 8.57824 279.898 11.2793 8.82272 
+12.05 78.7979 21.2021 279.357 12.0654 8.57787 279.898 11.2802 8.82178 
+12.06 78.7885 21.2115 279.355 12.0674 8.57751 279.898 11.281 8.82085 
+12.07 78.7791 21.2209 279.353 12.0695 8.57715 279.898 11.2818 8.81992 
+12.08 78.7697 21.2303 279.352 12.0715 8.57678 279.898 11.2826 8.81899 
+12.09 78.7603 21.2397 279.35 12.0736 8.57642 279.899 11.2834 8.81806 
+12.1 78.7509 21.2491 279.348 12.0757 8.57606 279.899 11.2843 8.81713 
+12.11 78.7415 21.2585 279.347 12.0777 8.5757 279.899 11.2851 8.8162 
+12.12 78.7321 21.2679 279.345 12.0798 8.57535 279.899 11.2859 8.81527 
+12.13 78.7227 21.2773 279.343 12.0818 8.57499 279.899 11.2867 8.81434 
+12.14 78.7133 21.2867 279.341 12.0839 8.57464 279.899 11.2875 8.81341 
+12.15 78.704 21.296 279.34 12.0859 8.57428 279.899 11.2883 8.81248 
+12.16 78.6946 21.3054 279.338 12.088 8.57393 279.899 11.2892 8.81155 
+12.17 78.6852 21.3148 279.336 12.0901 8.57358 279.899 11.29 8.81062 
+12.18 78.6758 21.3242 279.335 12.0921 8.57323 279.9 11.2908 8.80969 
+12.19 78.6664 21.3336 279.333 12.0942 8.57289 279.9 11.2916 8.80876 
+12.2 78.657 21.343 279.331 12.0962 8.57254 279.9 11.2924 8.80783 
+12.21 78.6476 21.3524 279.33 12.0983 8.5722 279.9 11.2932 8.8069 
+12.22 78.6382 21.3618 279.328 12.1004 8.57185 279.9 11.2941 8.80597 
+12.23 78.6288 21.3712 279.326 12.1024 8.57151 279.9 11.2949 8.80504 
+12.24 78.6194 21.3806 279.324 12.1045 8.57117 279.9 11.2957 8.80411 
+12.25 78.61 21.39 279.323 12.1066 8.57083 279.9 11.2965 8.80319 
+12.26 78.6007 21.3993 279.321 12.1086 8.57049 279.9 11.2973 8.80226 
+12.27 78.5913 21.4087 279.319 12.1107 8.57015 279.901 11.2981 8.80133 
+12.28 78.5819 21.4181 279.317 12.1128 8.56982 279.901 11.2989 8.8004 
+12.29 78.5725 21.4275 279.316 12.1148 8.56948 279.901 11.2998 8.79947 
+12.3 78.5631 21.4369 279.314 12.1169 8.56915 279.901 11.3006 8.79854 
+12.31 78.5537 21.4463 279.312 12.119 8.56882 279.901 11.3014 8.79762 
+12.32 78.5443 21.4557 279.31 12.121 8.56849 279.901 11.3022 8.79669 
+12.33 78.5349 21.4651 279.309 12.1231 8.56816 279.901 11.303 8.79576 
+12.34 78.5255 21.4745 279.307 12.1252 8.56783 279.901 11.3038 8.79483 
+12.35 78.5161 21.4839 279.305 12.1272 8.56751 279.901 11.3046 8.79391 
+12.36 78.5067 21.4933 279.304 12.1293 8.56718 279.902 11.3054 8.79298 
+12.37 78.4973 21.5027 279.302 12.1314 8.56686 279.902 11.3063 8.79205 
+12.38 78.4879 21.5121 279.3 12.1334 8.56654 279.902 11.3071 8.79112 
+12.39 78.4785 21.5215 279.298 12.1355 8.56622 279.902 11.3079 8.7902 
+12.4 78.4691 21.5309 279.297 12.1376 8.5659 279.902 11.3087 8.78927 
+12.41 78.4597 21.5403 279.295 12.1397 8.56558 279.902 11.3095 8.78834 
+12.42 78.4503 21.5497 279.293 12.1417 8.56526 279.902 11.3103 8.78742 
+12.43 78.4409 21.5591 279.291 12.1438 8.56495 279.902 11.3111 8.78649 
+12.44 78.4316 21.5684 279.289 12.1459 8.56463 279.903 11.3119 8.78556 
+12.45 78.4222 21.5778 279.288 12.148 8.56432 279.903 11.3127 8.78464 
+12.46 78.4128 21.5872 279.286 12.15 8.56401 279.903 11.3135 8.78371 
+12.47 78.4034 21.5966 279.284 12.1521 8.5637 279.903 11.3144 8.78279 
+12.48 78.394 21.606 279.282 12.1542 8.56339 279.903 11.3152 8.78186 
+12.49 78.3846 21.6154 279.281 12.1563 8.56308 279.903 11.316 8.78093 
+12.5 78.3752 21.6248 279.279 12.1583 8.56278 279.903 11.3168 8.78001 
+12.51 78.3658 21.6342 279.277 12.1604 8.56247 279.903 11.3176 8.77908 
+12.52 78.3564 21.6436 279.275 12.1625 8.56217 279.903 11.3184 8.77816 
+12.53 78.347 21.653 279.274 12.1646 8.56187 279.904 11.3192 8.77723 
+12.54 78.3376 21.6624 279.272 12.1667 8.56157 279.904 11.32 8.77631 
+12.55 78.3282 21.6718 279.27 12.1687 8.56127 279.904 11.3208 8.77538 
+12.56 78.3188 21.6812 279.268 12.1708 8.56097 279.904 11.3216 8.77446 
+12.57 78.3094 21.6906 279.266 12.1729 8.56067 279.904 11.3224 8.77353 
+12.58 78.3 21.7 279.265 12.175 8.56038 279.904 11.3232 8.77261 
+12.59 78.2906 21.7094 279.263 12.1771 8.56009 279.904 11.324 8.77168 
+12.6 78.2812 21.7188 279.261 12.1791 8.55979 279.904 11.3248 8.77076 
+12.61 78.2718 21.7282 279.259 12.1812 8.5595 279.905 11.3256 8.76983 
+12.62 78.2624 21.7376 279.257 12.1833 8.55921 279.905 11.3264 8.76891 
+12.63 78.253 21.747 279.256 12.1854 8.55892 279.905 11.3272 8.76799 
+12.64 78.2436 21.7564 279.254 12.1875 8.55864 279.905 11.328 8.76706 
+12.65 78.2342 21.7658 279.252 12.1896 8.55835 279.905 11.3289 8.76614 
+12.66 78.2248 21.7752 279.25 12.1917 8.55807 279.905 11.3297 8.76522 
+12.67 78.2154 21.7846 279.248 12.1937 8.55778 279.905 11.3305 8.76429 
+12.68 78.206 21.794 279.247 12.1958 8.5575 279.905 11.3313 8.76337 
+12.69 78.1966 21.8034 279.245 12.1979 8.55722 279.905 11.3321 8.76245 
+12.7 78.1872 21.8128 279.243 12.2 8.55694 279.906 11.3329 8.76152 
+12.71 78.1778 21.8222 279.241 12.2021 8.55666 279.906 11.3337 8.7606 
+12.72 78.1684 21.8316 279.239 12.2042 8.55639 279.906 11.3345 8.75968 
+12.73 78.159 21.841 279.238 12.2063 8.55611 279.906 11.3353 8.75875 
+12.74 78.1496 21.8504 279.236 12.2084 8.55584 279.906 11.3361 8.75783 
+12.75 78.1402 21.8598 279.234 12.2105 8.55557 279.906 11.3369 8.75691 
+12.76 78.1308 21.8692 279.232 12.2126 8.5553 279.906 11.3377 8.75599 
+12.77 78.1213 21.8787 279.23 12.2147 8.55503 279.906 11.3385 8.75506 
+12.78 78.1119 21.8881 279.228 12.2168 8.55476 279.907 11.3393 8.75414 
+12.79 78.1025 21.8975 279.227 12.2188 8.55449 279.907 11.3401 8.75322 
+12.8 78.0931 21.9069 279.225 12.2209 8.55422 279.907 11.3409 8.7523 
+12.81 78.0837 21.9163 279.223 12.223 8.55396 279.907 11.3417 8.75138 
+12.82 78.0743 21.9257 279.221 12.2251 8.5537 279.907 11.3425 8.75046 
+12.83 78.0649 21.9351 279.219 12.2272 8.55344 279.907 11.3433 8.74953 
+12.84 78.0555 21.9445 279.217 12.2293 8.55318 279.907 11.3441 8.74861 
+12.85 78.0461 21.9539 279.216 12.2314 8.55292 279.907 11.3449 8.74769 
+12.86 78.0367 21.9633 279.214 12.2335 8.55266 279.908 11.3457 8.74677 
+12.87 78.0273 21.9727 279.212 12.2356 8.5524 279.908 11.3464 8.74585 
+12.88 78.0179 21.9821 279.21 12.2377 8.55215 279.908 11.3472 8.74493 
+12.89 78.0085 21.9915 279.208 12.2398 8.55189 279.908 11.348 8.74401 
+12.9 77.9991 22.0009 279.206 12.2419 8.55164 279.908 11.3488 8.74309 
+12.91 77.9897 22.0103 279.205 12.244 8.55139 279.908 11.3496 8.74217 
+12.92 77.9803 22.0197 279.203 12.2461 8.55114 279.908 11.3504 8.74125 
+12.93 77.9709 22.0291 279.201 12.2482 8.55089 279.908 11.3512 8.74033 
+12.94 77.9615 22.0385 279.199 12.2503 8.55065 279.909 11.352 8.73941 
+12.95 77.952 22.048 279.197 12.2524 8.5504 279.909 11.3528 8.73849 
+12.96 77.9426 22.0574 279.195 12.2545 8.55016 279.909 11.3536 8.73757 
+12.97 77.9332 22.0668 279.193 12.2566 8.54991 279.909 11.3544 8.73665 
+12.98 77.9238 22.0762 279.192 12.2587 8.54967 279.909 11.3552 8.73573 
+12.99 77.9144 22.0856 279.19 12.2609 8.54943 279.909 11.356 8.73481 
+13 77.905 22.095 279.188 12.263 8.54919 279.909 11.3568 8.73389 
+13.01 77.8956 22.1044 279.186 12.2651 8.54896 279.909 11.3576 8.73297 
+13.02 77.8862 22.1138 279.184 12.2672 8.54872 279.91 11.3584 8.73205 
+13.03 77.8768 22.1232 279.182 12.2693 8.54848 279.91 11.3592 8.73114 
+13.04 77.8674 22.1326 279.18 12.2714 8.54825 279.91 11.36 8.73022 
+13.05 77.858 22.142 279.178 12.2735 8.54802 279.91 11.3607 8.7293 
+13.06 77.8485 22.1515 279.177 12.2756 8.54779 279.91 11.3615 8.72838 
+13.07 77.8391 22.1609 279.175 12.2777 8.54756 279.91 11.3623 8.72746 
+13.08 77.8297 22.1703 279.173 12.2798 8.54733 279.91 11.3631 8.72654 
+13.09 77.8203 22.1797 279.171 12.2819 8.5471 279.91 11.3639 8.72563 
+13.1 77.8109 22.1891 279.169 12.2841 8.54688 279.911 11.3647 8.72471 
+13.11 77.8015 22.1985 279.167 12.2862 8.54665 279.911 11.3655 8.72379 
+13.12 77.7921 22.2079 279.165 12.2883 8.54643 279.911 11.3663 8.72287 
+13.13 77.7827 22.2173 279.163 12.2904 8.54621 279.911 11.3671 8.72196 
+13.14 77.7733 22.2267 279.161 12.2925 8.54599 279.911 11.3679 8.72104 
+13.15 77.7638 22.2362 279.16 12.2946 8.54577 279.911 11.3687 8.72012 
+13.16 77.7544 22.2456 279.158 12.2967 8.54555 279.911 11.3694 8.7192 
+13.17 77.745 22.255 279.156 12.2989 8.54534 279.911 11.3702 8.71829 
+13.18 77.7356 22.2644 279.154 12.301 8.54512 279.912 11.371 8.71737 
+13.19 77.7262 22.2738 279.152 12.3031 8.54491 279.912 11.3718 8.71645 
+13.2 77.7168 22.2832 279.15 12.3052 8.5447 279.912 11.3726 8.71554 
+13.21 77.7074 22.2926 279.148 12.3073 8.54449 279.912 11.3734 8.71462 
+13.22 77.698 22.302 279.146 12.3094 8.54428 279.912 11.3742 8.71371 
+13.23 77.6885 22.3115 279.144 12.3116 8.54407 279.912 11.375 8.71279 
+13.24 77.6791 22.3209 279.142 12.3137 8.54386 279.912 11.3757 8.71187 
+13.25 77.6697 22.3303 279.141 12.3158 8.54366 279.913 11.3765 8.71096 
+13.26 77.6603 22.3397 279.139 12.3179 8.54345 279.913 11.3773 8.71004 
+13.27 77.6509 22.3491 279.137 12.3201 8.54325 279.913 11.3781 8.70913 
+13.28 77.6415 22.3585 279.135 12.3222 8.54305 279.913 11.3789 8.70821 
+13.29 77.6321 22.3679 279.133 12.3243 8.54285 279.913 11.3797 8.7073 
+13.3 77.6226 22.3774 279.131 12.3264 8.54265 279.913 11.3805 8.70638 
+13.31 77.6132 22.3868 279.129 12.3285 8.54245 279.913 11.3812 8.70547 
+13.32 77.6038 22.3962 279.127 12.3307 8.54226 279.913 11.382 8.70455 
+13.33 77.5944 22.4056 279.125 12.3328 8.54206 279.914 11.3828 8.70364 
+13.34 77.585 22.415 279.123 12.3349 8.54187 279.914 11.3836 8.70272 
+13.35 77.5756 22.4244 279.121 12.337 8.54168 279.914 11.3844 8.70181 
+13.36 77.5661 22.4339 279.119 12.3392 8.54149 279.914 11.3852 8.70089 
+13.37 77.5567 22.4433 279.117 12.3413 8.5413 279.914 11.3859 8.69998 
+13.38 77.5473 22.4527 279.115 12.3434 8.54111 279.914 11.3867 8.69907 
+13.39 77.5379 22.4621 279.114 12.3456 8.54092 279.914 11.3875 8.69815 
+13.4 77.5285 22.4715 279.112 12.3477 8.54074 279.914 11.3883 8.69724 
+13.41 77.5191 22.4809 279.11 12.3498 8.54056 279.915 11.3891 8.69633 
+13.42 77.5096 22.4904 279.108 12.3519 8.54037 279.915 11.3899 8.69541 
+13.43 77.5002 22.4998 279.106 12.3541 8.54019 279.915 11.3906 8.6945 
+13.44 77.4908 22.5092 279.104 12.3562 8.54001 279.915 11.3914 8.69359 
+13.45 77.4814 22.5186 279.102 12.3583 8.53983 279.915 11.3922 8.69267 
+13.46 77.472 22.528 279.1 12.3605 8.53966 279.915 11.393 8.69176 
+13.47 77.4625 22.5375 279.098 12.3626 8.53948 279.915 11.3938 8.69085 
+13.48 77.4531 22.5469 279.096 12.3647 8.53931 279.916 11.3945 8.68993 
+13.49 77.4437 22.5563 279.094 12.3669 8.53913 279.916 11.3953 8.68902 
+13.5 77.4343 22.5657 279.092 12.369 8.53896 279.916 11.3961 8.68811 
+13.51 77.4249 22.5751 279.09 12.3711 8.53879 279.916 11.3969 8.6872 
+13.52 77.4154 22.5846 279.088 12.3733 8.53862 279.916 11.3977 8.68629 
+13.53 77.406 22.594 279.086 12.3754 8.53845 279.916 11.3984 8.68537 
+13.54 77.3966 22.6034 279.084 12.3776 8.53829 279.916 11.3992 8.68446 
+13.55 77.3872 22.6128 279.082 12.3797 8.53812 279.916 11.4 8.68355 
+13.56 77.3778 22.6222 279.08 12.3818 8.53796 279.917 11.4008 8.68264 
+13.57 77.3683 22.6317 279.078 12.384 8.5378 279.917 11.4016 8.68173 
+13.58 77.3589 22.6411 279.076 12.3861 8.53763 279.917 11.4023 8.68082 
+13.59 77.3495 22.6505 279.074 12.3883 8.53747 279.917 11.4031 8.67991 
+13.6 77.3401 22.6599 279.072 12.3904 8.53732 279.917 11.4039 8.67899 
+13.61 77.3307 22.6693 279.07 12.3925 8.53716 279.917 11.4047 8.67808 
+13.62 77.3212 22.6788 279.068 12.3947 8.537 279.917 11.4054 8.67717 
+13.63 77.3118 22.6882 279.066 12.3968 8.53685 279.918 11.4062 8.67626 
+13.64 77.3024 22.6976 279.064 12.399 8.5367 279.918 11.407 8.67535 
+13.65 77.293 22.707 279.062 12.4011 8.53654 279.918 11.4078 8.67444 
+13.66 77.2835 22.7165 279.06 12.4032 8.53639 279.918 11.4085 8.67353 
+13.67 77.2741 22.7259 279.058 12.4054 8.53625 279.918 11.4093 8.67262 
+13.68 77.2647 22.7353 279.056 12.4075 8.5361 279.918 11.4101 8.67171 
+13.69 77.2553 22.7447 279.054 12.4097 8.53595 279.918 11.4109 8.6708 
+13.7 77.2458 22.7542 279.052 12.4118 8.53581 279.918 11.4116 8.66989 
+13.71 77.2364 22.7636 279.05 12.414 8.53566 279.919 11.4124 8.66898 
+13.72 77.227 22.773 279.048 12.4161 8.53552 279.919 11.4132 8.66808 
+13.73 77.2176 22.7824 279.046 12.4183 8.53538 279.919 11.414 8.66717 
+13.74 77.2081 22.7919 279.044 12.4204 8.53524 279.919 11.4147 8.66626 
+13.75 77.1987 22.8013 279.042 12.4226 8.5351 279.919 11.4155 8.66535 
+13.76 77.1893 22.8107 279.04 12.4247 8.53496 279.919 11.4163 8.66444 
+13.77 77.1799 22.8201 279.038 12.4269 8.53483 279.919 11.4171 8.66353 
+13.78 77.1704 22.8296 279.036 12.429 8.53469 279.92 11.4178 8.66262 
+13.79 77.161 22.839 279.034 12.4312 8.53456 279.92 11.4186 8.66171 
+13.8 77.1516 22.8484 279.032 12.4333 8.53443 279.92 11.4194 8.66081 
+13.81 77.1422 22.8578 279.03 12.4355 8.5343 279.92 11.4201 8.6599 
+13.82 77.1327 22.8673 279.028 12.4376 8.53417 279.92 11.4209 8.65899 
+13.83 77.1233 22.8767 279.026 12.4398 8.53404 279.92 11.4217 8.65808 
+13.84 77.1139 22.8861 279.024 12.4419 8.53392 279.92 11.4225 8.65718 
+13.85 77.1045 22.8955 279.022 12.4441 8.53379 279.92 11.4232 8.65627 
+13.86 77.095 22.905 279.02 12.4463 8.53367 279.921 11.424 8.65536 
+13.87 77.0856 22.9144 279.018 12.4484 8.53355 279.921 11.4248 8.65445 
+13.88 77.0762 22.9238 279.016 12.4506 8.53343 279.921 11.4255 8.65355 
+13.89 77.0667 22.9333 279.014 12.4527 8.53331 279.921 11.4263 8.65264 
+13.9 77.0573 22.9427 279.012 12.4549 8.53319 279.921 11.4271 8.65173 
+13.91 77.0479 22.9521 279.01 12.457 8.53307 279.921 11.4279 8.65083 
+13.92 77.0385 22.9615 279.008 12.4592 8.53296 279.921 11.4286 8.64992 
+13.93 77.029 22.971 279.006 12.4614 8.53284 279.922 11.4294 8.64902 
+13.94 77.0196 22.9804 279.004 12.4635 8.53273 279.922 11.4302 8.64811 
+13.95 77.0102 22.9898 279.002 12.4657 8.53262 279.922 11.4309 8.6472 
+13.96 77.0007 22.9993 279 12.4678 8.53251 279.922 11.4317 8.6463 
+13.97 76.9913 23.0087 278.998 12.47 8.5324 279.922 11.4325 8.64539 
+13.98 76.9819 23.0181 278.996 12.4722 8.53229 279.922 11.4332 8.64449 
+13.99 76.9724 23.0276 278.993 12.4743 8.53218 279.922 11.434 8.64358 
+14 76.963 23.037 278.991 12.4765 8.53208 279.923 11.4348 8.64268 
+14.01 76.9536 23.0464 278.989 12.4787 8.53198 279.923 11.4355 8.64177 
+14.02 76.9441 23.0559 278.987 12.4808 8.53187 279.923 11.4363 8.64087 
+14.03 76.9347 23.0653 278.985 12.483 8.53177 279.923 11.4371 8.63996 
+14.04 76.9253 23.0747 278.983 12.4852 8.53167 279.923 11.4378 8.63906 
+14.05 76.9159 23.0841 278.981 12.4873 8.53158 279.923 11.4386 8.63815 
+14.06 76.9064 23.0936 278.979 12.4895 8.53148 279.923 11.4394 8.63725 
+14.07 76.897 23.103 278.977 12.4917 8.53138 279.924 11.4401 8.63634 
+14.08 76.8876 23.1124 278.975 12.4938 8.53129 279.924 11.4409 8.63544 
+14.09 76.8781 23.1219 278.973 12.496 8.5312 279.924 11.4417 8.63454 
+14.1 76.8687 23.1313 278.971 12.4982 8.5311 279.924 11.4424 8.63363 
+14.11 76.8593 23.1407 278.969 12.5003 8.53101 279.924 11.4432 8.63273 
+14.12 76.8498 23.1502 278.967 12.5025 8.53093 279.924 11.4439 8.63183 
+14.13 76.8404 23.1596 278.964 12.5047 8.53084 279.924 11.4447 8.63092 
+14.14 76.831 23.169 278.962 12.5068 8.53075 279.925 11.4455 8.63002 
+14.15 76.8215 23.1785 278.96 12.509 8.53067 279.925 11.4462 8.62912 
+14.16 76.8121 23.1879 278.958 12.5112 8.53058 279.925 11.447 8.62821 
+14.17 76.8027 23.1973 278.956 12.5134 8.5305 279.925 11.4478 8.62731 
+14.18 76.7932 23.2068 278.954 12.5155 8.53042 279.925 11.4485 8.62641 
+14.19 76.7838 23.2162 278.952 12.5177 8.53034 279.925 11.4493 8.62551 
+14.2 76.7743 23.2257 278.95 12.5199 8.53026 279.925 11.45 8.6246 
+14.21 76.7649 23.2351 278.948 12.5221 8.53019 279.925 11.4508 8.6237 
+14.22 76.7555 23.2445 278.946 12.5242 8.53011 279.926 11.4516 8.6228 
+14.23 76.746 23.254 278.944 12.5264 8.53004 279.926 11.4523 8.6219 
+14.24 76.7366 23.2634 278.941 12.5286 8.52997 279.926 11.4531 8.621 
+14.25 76.7272 23.2728 278.939 12.5308 8.52989 279.926 11.4539 8.62009 
+14.26 76.7177 23.2823 278.937 12.5329 8.52982 279.926 11.4546 8.61919 
+14.27 76.7083 23.2917 278.935 12.5351 8.52976 279.926 11.4554 8.61829 
+14.28 76.6989 23.3011 278.933 12.5373 8.52969 279.926 11.4561 8.61739 
+14.29 76.6894 23.3106 278.931 12.5395 8.52962 279.927 11.4569 8.61649 
+14.3 76.68 23.32 278.929 12.5417 8.52956 279.927 11.4577 8.61559 
+14.31 76.6705 23.3295 278.927 12.5439 8.52949 279.927 11.4584 8.61469 
+14.32 76.6611 23.3389 278.925 12.546 8.52943 279.927 11.4592 8.61379 
+14.33 76.6517 23.3483 278.922 12.5482 8.52937 279.927 11.4599 8.61289 
+14.34 76.6422 23.3578 278.92 12.5504 8.52931 279.927 11.4607 8.61199 
+14.35 76.6328 23.3672 278.918 12.5526 8.52925 279.927 11.4614 8.61109 
+14.36 76.6233 23.3767 278.916 12.5548 8.5292 279.928 11.4622 8.61019 
+14.37 76.6139 23.3861 278.914 12.557 8.52914 279.928 11.463 8.60929 
+14.38 76.6045 23.3955 278.912 12.5591 8.52909 279.928 11.4637 8.60839 
+14.39 76.595 23.405 278.91 12.5613 8.52904 279.928 11.4645 8.60749 
+14.4 76.5856 23.4144 278.908 12.5635 8.52898 279.928 11.4652 8.60659 
+14.41 76.5762 23.4238 278.905 12.5657 8.52894 279.928 11.466 8.60569 
+14.42 76.5667 23.4333 278.903 12.5679 8.52889 279.928 11.4667 8.60479 
+14.43 76.5573 23.4427 278.901 12.5701 8.52884 279.929 11.4675 8.60389 
+14.44 76.5478 23.4522 278.899 12.5723 8.52879 279.929 11.4683 8.60299 
+14.45 76.5384 23.4616 278.897 12.5745 8.52875 279.929 11.469 8.6021 
+14.46 76.5289 23.4711 278.895 12.5766 8.52871 279.929 11.4698 8.6012 
+14.47 76.5195 23.4805 278.893 12.5788 8.52866 279.929 11.4705 8.6003 
+14.48 76.5101 23.4899 278.89 12.581 8.52862 279.929 11.4713 8.5994 
+14.49 76.5006 23.4994 278.888 12.5832 8.52858 279.929 11.472 8.5985 
+14.5 76.4912 23.5088 278.886 12.5854 8.52855 279.93 11.4728 8.59761 
+14.51 76.4817 23.5183 278.884 12.5876 8.52851 279.93 11.4735 8.59671 
+14.52 76.4723 23.5277 278.882 12.5898 8.52847 279.93 11.4743 8.59581 
+14.53 76.4629 23.5371 278.88 12.592 8.52844 279.93 11.4751 8.59491 
+14.54 76.4534 23.5466 278.877 12.5942 8.52841 279.93 11.4758 8.59402 
+14.55 76.444 23.556 278.875 12.5964 8.52838 279.93 11.4766 8.59312 
+14.56 76.4345 23.5655 278.873 12.5986 8.52835 279.93 11.4773 8.59222 
+14.57 76.4251 23.5749 278.871 12.6008 8.52832 279.931 11.4781 8.59132 
+14.58 76.4156 23.5844 278.869 12.603 8.52829 279.931 11.4788 8.59043 
+14.59 76.4062 23.5938 278.867 12.6052 8.52827 279.931 11.4796 8.58953 
+14.6 76.3967 23.6033 278.864 12.6074 8.52824 279.931 11.4803 8.58864 
+14.61 76.3873 23.6127 278.862 12.6096 8.52822 279.931 11.4811 8.58774 
+14.62 76.3779 23.6221 278.86 12.6118 8.5282 279.931 11.4818 8.58684 
+14.63 76.3684 23.6316 278.858 12.614 8.52818 279.931 11.4826 8.58595 
+14.64 76.359 23.641 278.856 12.6162 8.52816 279.932 11.4833 8.58505 
+14.65 76.3495 23.6505 278.853 12.6184 8.52814 279.932 11.4841 8.58416 
+14.66 76.3401 23.6599 278.851 12.6206 8.52812 279.932 11.4848 8.58326 
+14.67 76.3306 23.6694 278.849 12.6228 8.52811 279.932 11.4856 8.58237 
+14.68 76.3212 23.6788 278.847 12.625 8.52809 279.932 11.4863 8.58147 
+14.69 76.3117 23.6883 278.845 12.6272 8.52808 279.932 11.4871 8.58058 
+14.7 76.3023 23.6977 278.843 12.6294 8.52807 279.932 11.4878 8.57968 
+14.71 76.2928 23.7072 278.84 12.6316 8.52806 279.933 11.4886 8.57879 
+14.72 76.2834 23.7166 278.838 12.6338 8.52805 279.933 11.4893 8.57789 
+14.73 76.2739 23.7261 278.836 12.636 8.52804 279.933 11.4901 8.577 
+14.74 76.2645 23.7355 278.834 12.6382 8.52804 279.933 11.4908 8.5761 
+14.75 76.2551 23.7449 278.832 12.6404 8.52803 279.933 11.4916 8.57521 
+14.76 76.2456 23.7544 278.829 12.6426 8.52803 279.933 11.4923 8.57432 
+14.77 76.2362 23.7638 278.827 12.6448 8.52803 279.933 11.4931 8.57342 
+14.78 76.2267 23.7733 278.825 12.647 8.52803 279.934 11.4938 8.57253 
+14.79 76.2173 23.7827 278.823 12.6492 8.52803 279.934 11.4946 8.57164 
+14.8 76.2078 23.7922 278.821 12.6514 8.52803 279.934 11.4953 8.57074 
+14.81 76.1984 23.8016 278.818 12.6537 8.52804 279.934 11.4961 8.56985 
+14.82 76.1889 23.8111 278.816 12.6559 8.52804 279.934 11.4968 8.56896 
+14.83 76.1795 23.8205 278.814 12.6581 8.52805 279.934 11.4976 8.56806 
+14.84 76.17 23.83 278.812 12.6603 8.52806 279.935 11.4983 8.56717 
+14.85 76.1606 23.8394 278.809 12.6625 8.52806 279.935 11.4991 8.56628 
+14.86 76.1511 23.8489 278.807 12.6647 8.52807 279.935 11.4998 8.56539 
+14.87 76.1417 23.8583 278.805 12.6669 8.52809 279.935 11.5005 8.5645 
+14.88 76.1322 23.8678 278.803 12.6691 8.5281 279.935 11.5013 8.5636 
+14.89 76.1228 23.8772 278.801 12.6714 8.52811 279.935 11.502 8.56271 
+14.9 76.1133 23.8867 278.798 12.6736 8.52813 279.935 11.5028 8.56182 
+14.91 76.1039 23.8961 278.796 12.6758 8.52815 279.936 11.5035 8.56093 
+14.92 76.0944 23.9056 278.794 12.678 8.52816 279.936 11.5043 8.56004 
+14.93 76.085 23.915 278.792 12.6802 8.52818 279.936 11.505 8.55915 
+14.94 76.0755 23.9245 278.789 12.6824 8.52821 279.936 11.5058 8.55826 
+14.95 76.066 23.934 278.787 12.6847 8.52823 279.936 11.5065 8.55736 
+14.96 76.0566 23.9434 278.785 12.6869 8.52825 279.936 11.5072 8.55647 
+14.97 76.0471 23.9529 278.783 12.6891 8.52828 279.936 11.508 8.55558 
+14.98 76.0377 23.9623 278.78 12.6913 8.5283 279.937 11.5087 8.55469 
+14.99 76.0282 23.9718 278.778 12.6935 8.52833 279.937 11.5095 8.5538 
+15 76.0188 23.9812 278.776 12.6958 8.52836 279.937 11.5102 8.55291 
+15.01 76.0093 23.9907 278.774 12.698 8.52839 279.937 11.511 8.55202 
+15.02 75.9999 24.0001 278.771 12.7002 8.52842 279.937 11.5117 8.55113 
+15.03 75.9904 24.0096 278.769 12.7024 8.52845 279.937 11.5124 8.55024 
+15.04 75.981 24.019 278.767 12.7047 8.52849 279.937 11.5132 8.54935 
+15.05 75.9715 24.0285 278.765 12.7069 8.52852 279.938 11.5139 8.54846 
+15.06 75.9621 24.0379 278.762 12.7091 8.52856 279.938 11.5147 8.54758 
+15.07 75.9526 24.0474 278.76 12.7113 8.5286 279.938 11.5154 8.54669 
+15.08 75.9431 24.0569 278.758 12.7136 8.52864 279.938 11.5162 8.5458 
+15.09 75.9337 24.0663 278.756 12.7158 8.52868 279.938 11.5169 8.54491 
+15.1 75.9242 24.0758 278.753 12.718 8.52872 279.938 11.5176 8.54402 
+15.11 75.9148 24.0852 278.751 12.7202 8.52877 279.938 11.5184 8.54313 
+15.12 75.9053 24.0947 278.749 12.7225 8.52881 279.939 11.5191 8.54224 
+15.13 75.8959 24.1041 278.746 12.7247 8.52886 279.939 11.5199 8.54136 
+15.14 75.8864 24.1136 278.744 12.7269 8.52891 279.939 11.5206 8.54047 
+15.15 75.877 24.123 278.742 12.7291 8.52896 279.939 11.5213 8.53958 
+15.16 75.8675 24.1325 278.74 12.7314 8.52901 279.939 11.5221 8.53869 
+15.17 75.858 24.142 278.737 12.7336 8.52906 279.939 11.5228 8.53781 
+15.18 75.8486 24.1514 278.735 12.7358 8.52911 279.94 11.5236 8.53692 
+15.19 75.8391 24.1609 278.733 12.7381 8.52917 279.94 11.5243 8.53603 
+15.2 75.8297 24.1703 278.73 12.7403 8.52922 279.94 11.525 8.53514 
+15.21 75.8202 24.1798 278.728 12.7425 8.52928 279.94 11.5258 8.53426 
+15.22 75.8107 24.1893 278.726 12.7448 8.52934 279.94 11.5265 8.53337 
+15.23 75.8013 24.1987 278.724 12.747 8.5294 279.94 11.5272 8.53249 
+15.24 75.7918 24.2082 278.721 12.7492 8.52946 279.94 11.528 8.5316 
+15.25 75.7824 24.2176 278.719 12.7515 8.52952 279.941 11.5287 8.53071 
+15.26 75.7729 24.2271 278.717 12.7537 8.52958 279.941 11.5295 8.52983 
+15.27 75.7635 24.2365 278.714 12.756 8.52965 279.941 11.5302 8.52894 
+15.28 75.754 24.246 278.712 12.7582 8.52972 279.941 11.5309 8.52806 
+15.29 75.7445 24.2555 278.71 12.7604 8.52978 279.941 11.5317 8.52717 
+15.3 75.7351 24.2649 278.707 12.7627 8.52985 279.941 11.5324 8.52628 
+15.31 75.7256 24.2744 278.705 12.7649 8.52992 279.941 11.5331 8.5254 
+15.32 75.7162 24.2838 278.703 12.7671 8.53 279.942 11.5339 8.52451 
+15.33 75.7067 24.2933 278.701 12.7694 8.53007 279.942 11.5346 8.52363 
+15.34 75.6972 24.3028 278.698 12.7716 8.53014 279.942 11.5353 8.52275 
+15.35 75.6878 24.3122 278.696 12.7739 8.53022 279.942 11.5361 8.52186 
+15.36 75.6783 24.3217 278.694 12.7761 8.5303 279.942 11.5368 8.52098 
+15.37 75.6688 24.3312 278.691 12.7784 8.53037 279.942 11.5375 8.52009 
+15.38 75.6594 24.3406 278.689 12.7806 8.53045 279.943 11.5383 8.51921 
+15.39 75.6499 24.3501 278.687 12.7828 8.53054 279.943 11.539 8.51832 
+15.4 75.6405 24.3595 278.684 12.7851 8.53062 279.943 11.5397 8.51744 
+15.41 75.631 24.369 278.682 12.7873 8.5307 279.943 11.5405 8.51656 
+15.42 75.6215 24.3785 278.68 12.7896 8.53079 279.943 11.5412 8.51567 
+15.43 75.6121 24.3879 278.677 12.7918 8.53087 279.943 11.5419 8.51479 
+15.44 75.6026 24.3974 278.675 12.7941 8.53096 279.943 11.5427 8.51391 
+15.45 75.5931 24.4069 278.673 12.7963 8.53105 279.944 11.5434 8.51302 
+15.46 75.5837 24.4163 278.67 12.7986 8.53114 279.944 11.5441 8.51214 
+15.47 75.5742 24.4258 278.668 12.8008 8.53123 279.944 11.5449 8.51126 
+15.48 75.5648 24.4352 278.666 12.8031 8.53133 279.944 11.5456 8.51038 
+15.49 75.5553 24.4447 278.663 12.8053 8.53142 279.944 11.5463 8.5095 
+15.5 75.5458 24.4542 278.661 12.8076 8.53152 279.944 11.5471 8.50861 
+15.51 75.5364 24.4636 278.659 12.8098 8.53161 279.944 11.5478 8.50773 
+15.52 75.5269 24.4731 278.656 12.8121 8.53171 279.945 11.5485 8.50685 
+15.53 75.5174 24.4826 278.654 12.8143 8.53181 279.945 11.5493 8.50597 
+15.54 75.508 24.492 278.652 12.8166 8.53191 279.945 11.55 8.50509 
+15.55 75.4985 24.5015 278.649 12.8188 8.53202 279.945 11.5507 8.50421 
+15.56 75.489 24.511 278.647 12.8211 8.53212 279.945 11.5515 8.50332 
+15.57 75.4796 24.5204 278.644 12.8233 8.53223 279.945 11.5522 8.50244 
+15.58 75.4701 24.5299 278.642 12.8256 8.53233 279.946 11.5529 8.50156 
+15.59 75.4606 24.5394 278.64 12.8278 8.53244 279.946 11.5536 8.50068 
+15.6 75.4512 24.5488 278.637 12.8301 8.53255 279.946 11.5544 8.4998 
+15.61 75.4417 24.5583 278.635 12.8323 8.53266 279.946 11.5551 8.49892 
+15.62 75.4322 24.5678 278.633 12.8346 8.53277 279.946 11.5558 8.49804 
+15.63 75.4228 24.5772 278.63 12.8369 8.53289 279.946 11.5566 8.49716 
+15.64 75.4133 24.5867 278.628 12.8391 8.533 279.946 11.5573 8.49628 
+15.65 75.4038 24.5962 278.626 12.8414 8.53312 279.947 11.558 8.4954 
+15.66 75.3944 24.6056 278.623 12.8436 8.53323 279.947 11.5588 8.49452 
+15.67 75.3849 24.6151 278.621 12.8459 8.53335 279.947 11.5595 8.49364 
+15.68 75.3754 24.6246 278.618 12.8482 8.53347 279.947 11.5602 8.49276 
+15.69 75.3659 24.6341 278.616 12.8504 8.53359 279.947 11.5609 8.49189 
+15.7 75.3565 24.6435 278.614 12.8527 8.53372 279.947 11.5617 8.49101 
+15.71 75.347 24.653 278.611 12.8549 8.53384 279.947 11.5624 8.49013 
+15.72 75.3375 24.6625 278.609 12.8572 8.53397 279.948 11.5631 8.48925 
+15.73 75.3281 24.6719 278.606 12.8595 8.53409 279.948 11.5638 8.48837 
+15.74 75.3186 24.6814 278.604 12.8617 8.53422 279.948 11.5646 8.48749 
+15.75 75.3091 24.6909 278.602 12.864 8.53435 279.948 11.5653 8.48662 
+15.76 75.2997 24.7003 278.599 12.8663 8.53448 279.948 11.566 8.48574 
+15.77 75.2902 24.7098 278.597 12.8685 8.53461 279.948 11.5667 8.48486 
+15.78 75.2807 24.7193 278.594 12.8708 8.53475 279.949 11.5675 8.48398 
+15.79 75.2712 24.7288 278.592 12.8731 8.53488 279.949 11.5682 8.48311 
+15.8 75.2618 24.7382 278.59 12.8753 8.53502 279.949 11.5689 8.48223 
+15.81 75.2523 24.7477 278.587 12.8776 8.53515 279.949 11.5696 8.48135 
+15.82 75.2428 24.7572 278.585 12.8799 8.53529 279.949 11.5704 8.48048 
+15.83 75.2334 24.7666 278.582 12.8821 8.53543 279.949 11.5711 8.4796 
+15.84 75.2239 24.7761 278.58 12.8844 8.53557 279.949 11.5718 8.47872 
+15.85 75.2144 24.7856 278.578 12.8867 8.53572 279.95 11.5725 8.47785 
+15.86 75.2049 24.7951 278.575 12.8889 8.53586 279.95 11.5733 8.47697 
+15.87 75.1955 24.8045 278.573 12.8912 8.53601 279.95 11.574 8.47609 
+15.88 75.186 24.814 278.57 12.8935 8.53615 279.95 11.5747 8.47522 
+15.89 75.1765 24.8235 278.568 12.8958 8.5363 279.95 11.5754 8.47434 
+15.9 75.167 24.833 278.566 12.898 8.53645 279.95 11.5762 8.47347 
+15.91 75.1576 24.8424 278.563 12.9003 8.5366 279.951 11.5769 8.47259 
+15.92 75.1481 24.8519 278.561 12.9026 8.53675 279.951 11.5776 8.47172 
+15.93 75.1386 24.8614 278.558 12.9049 8.53691 279.951 11.5783 8.47084 
+15.94 75.1291 24.8709 278.556 12.9071 8.53706 279.951 11.5791 8.46997 
+15.95 75.1197 24.8803 278.553 12.9094 8.53722 279.951 11.5798 8.46909 
+15.96 75.1102 24.8898 278.551 12.9117 8.53737 279.951 11.5805 8.46822 
+15.97 75.1007 24.8993 278.549 12.914 8.53753 279.951 11.5812 8.46734 
+15.98 75.0912 24.9088 278.546 12.9162 8.53769 279.952 11.5819 8.46647 
+15.99 75.0818 24.9182 278.544 12.9185 8.53785 279.952 11.5827 8.4656 
+16 75.0723 24.9277 278.541 12.9208 8.53802 279.952 11.5834 8.46472 
+16.01 75.0628 24.9372 278.539 12.9231 8.53818 279.952 11.5841 8.46385 
+16.02 75.0533 24.9467 278.536 12.9254 8.53835 279.952 11.5848 8.46298 
+16.03 75.0439 24.9561 278.534 12.9276 8.53851 279.952 11.5855 8.4621 
+16.04 75.0344 24.9656 278.531 12.9299 8.53868 279.953 11.5863 8.46123 
+16.05 75.0249 24.9751 278.529 12.9322 8.53885 279.953 11.587 8.46036 
+16.06 75.0154 24.9846 278.526 12.9345 8.53902 279.953 11.5877 8.45948 
+16.07 75.006 24.994 278.524 12.9368 8.53919 279.953 11.5884 8.45861 
+16.08 74.9965 25.0035 278.522 12.939 8.53937 279.953 11.5891 8.45774 
+16.09 74.987 25.013 278.519 12.9413 8.53954 279.953 11.5899 8.45687 
+16.1 74.9775 25.0225 278.517 12.9436 8.53972 279.953 11.5906 8.45599 
+16.11 74.968 25.032 278.514 12.9459 8.5399 279.954 11.5913 8.45512 
+16.12 74.9586 25.0414 278.512 12.9482 8.54007 279.954 11.592 8.45425 
+16.13 74.9491 25.0509 278.509 12.9505 8.54026 279.954 11.5927 8.45338 
+16.14 74.9396 25.0604 278.507 12.9528 8.54044 279.954 11.5935 8.45251 
+16.15 74.9301 25.0699 278.504 12.9551 8.54062 279.954 11.5942 8.45164 
+16.16 74.9207 25.0793 278.502 12.9573 8.5408 279.954 11.5949 8.45077 
+16.17 74.9112 25.0888 278.499 12.9596 8.54099 279.954 11.5956 8.4499 
+16.18 74.9017 25.0983 278.497 12.9619 8.54118 279.955 11.5963 8.44902 
+16.19 74.8922 25.1078 278.494 12.9642 8.54136 279.955 11.597 8.44815 
+16.2 74.8827 25.1173 278.492 12.9665 8.54155 279.955 11.5978 8.44728 
+16.21 74.8732 25.1268 278.489 12.9688 8.54174 279.955 11.5985 8.44641 
+16.22 74.8638 25.1362 278.487 12.9711 8.54194 279.955 11.5992 8.44554 
+16.23 74.8543 25.1457 278.484 12.9734 8.54213 279.955 11.5999 8.44467 
+16.24 74.8448 25.1552 278.482 12.9757 8.54232 279.956 11.6006 8.4438 
+16.25 74.8353 25.1647 278.48 12.978 8.54252 279.956 11.6013 8.44294 
+16.26 74.8258 25.1742 278.477 12.9803 8.54272 279.956 11.6021 8.44207 
+16.27 74.8164 25.1836 278.475 12.9825 8.54292 279.956 11.6028 8.4412 
+16.28 74.8069 25.1931 278.472 12.9848 8.54312 279.956 11.6035 8.44033 
+16.29 74.7974 25.2026 278.47 12.9871 8.54332 279.956 11.6042 8.43946 
+16.3 74.7879 25.2121 278.467 12.9894 8.54352 279.956 11.6049 8.43859 
+16.31 74.7784 25.2216 278.465 12.9917 8.54373 279.957 11.6056 8.43772 
+16.32 74.7689 25.2311 278.462 12.994 8.54393 279.957 11.6063 8.43685 
+16.33 74.7595 25.2405 278.46 12.9963 8.54414 279.957 11.6071 8.43599 
+16.34 74.75 25.25 278.457 12.9986 8.54435 279.957 11.6078 8.43512 
+16.35 74.7405 25.2595 278.455 13.0009 8.54456 279.957 11.6085 8.43425 
+16.36 74.731 25.269 278.452 13.0032 8.54477 279.957 11.6092 8.43338 
+16.37 74.7215 25.2785 278.449 13.0055 8.54498 279.958 11.6099 8.43252 
+16.38 74.712 25.288 278.447 13.0078 8.54519 279.958 11.6106 8.43165 
+16.39 74.7026 25.2974 278.444 13.0101 8.54541 279.958 11.6113 8.43078 
+16.4 74.6931 25.3069 278.442 13.0124 8.54562 279.958 11.6121 8.42991 
+16.41 74.6836 25.3164 278.439 13.0147 8.54584 279.958 11.6128 8.42905 
+16.42 74.6741 25.3259 278.437 13.017 8.54606 279.958 11.6135 8.42818 
+16.43 74.6646 25.3354 278.434 13.0193 8.54628 279.958 11.6142 8.42731 
+16.44 74.6551 25.3449 278.432 13.0216 8.5465 279.959 11.6149 8.42645 
+16.45 74.6456 25.3544 278.429 13.024 8.54672 279.959 11.6156 8.42558 
+16.46 74.6362 25.3638 278.427 13.0263 8.54695 279.959 11.6163 8.42472 
+16.47 74.6267 25.3733 278.424 13.0286 8.54717 279.959 11.617 8.42385 
+16.48 74.6172 25.3828 278.422 13.0309 8.5474 279.959 11.6178 8.42299 
+16.49 74.6077 25.3923 278.419 13.0332 8.54763 279.959 11.6185 8.42212 
+16.5 74.5982 25.4018 278.417 13.0355 8.54786 279.96 11.6192 8.42126 
+16.51 74.5887 25.4113 278.414 13.0378 8.54809 279.96 11.6199 8.42039 
+16.52 74.5792 25.4208 278.412 13.0401 8.54832 279.96 11.6206 8.41953 
+16.53 74.5697 25.4303 278.409 13.0424 8.54856 279.96 11.6213 8.41866 
+16.54 74.5603 25.4397 278.406 13.0447 8.54879 279.96 11.622 8.4178 
+16.55 74.5508 25.4492 278.404 13.047 8.54903 279.96 11.6227 8.41693 
+16.56 74.5413 25.4587 278.401 13.0493 8.54926 279.96 11.6234 8.41607 
+16.57 74.5318 25.4682 278.399 13.0517 8.5495 279.961 11.6241 8.4152 
+16.58 74.5223 25.4777 278.396 13.054 8.54974 279.961 11.6249 8.41434 
+16.59 74.5128 25.4872 278.394 13.0563 8.54999 279.961 11.6256 8.41348 
+16.6 74.5033 25.4967 278.391 13.0586 8.55023 279.961 11.6263 8.41261 
+16.61 74.4938 25.5062 278.389 13.0609 8.55047 279.961 11.627 8.41175 
+16.62 74.4843 25.5157 278.386 13.0632 8.55072 279.961 11.6277 8.41089 
+16.63 74.4749 25.5251 278.383 13.0655 8.55097 279.962 11.6284 8.41003 
+16.64 74.4654 25.5346 278.381 13.0679 8.55121 279.962 11.6291 8.40916 
+16.65 74.4559 25.5441 278.378 13.0702 8.55146 279.962 11.6298 8.4083 
+16.66 74.4464 25.5536 278.376 13.0725 8.55171 279.962 11.6305 8.40744 
+16.67 74.4369 25.5631 278.373 13.0748 8.55197 279.962 11.6312 8.40658 
+16.68 74.4274 25.5726 278.371 13.0771 8.55222 279.962 11.6319 8.40571 
+16.69 74.4179 25.5821 278.368 13.0795 8.55247 279.963 11.6326 8.40485 
+16.7 74.4084 25.5916 278.365 13.0818 8.55273 279.963 11.6334 8.40399 
+16.71 74.3989 25.6011 278.363 13.0841 8.55299 279.963 11.6341 8.40313 
+16.72 74.3894 25.6106 278.36 13.0864 8.55325 279.963 11.6348 8.40227 
+16.73 74.3799 25.6201 278.358 13.0887 8.55351 279.963 11.6355 8.40141 
+16.74 74.3704 25.6296 278.355 13.0911 8.55377 279.963 11.6362 8.40055 
+16.75 74.361 25.639 278.353 13.0934 8.55403 279.963 11.6369 8.39969 
+16.76 74.3515 25.6485 278.35 13.0957 8.5543 279.964 11.6376 8.39883 
+16.77 74.342 25.658 278.347 13.098 8.55456 279.964 11.6383 8.39796 
+16.78 74.3325 25.6675 278.345 13.1003 8.55483 279.964 11.639 8.3971 
+16.79 74.323 25.677 278.342 13.1027 8.5551 279.964 11.6397 8.39624 
+16.8 74.3135 25.6865 278.34 13.105 8.55537 279.964 11.6404 8.39538 
+16.81 74.304 25.696 278.337 13.1073 8.55564 279.964 11.6411 8.39453 
+16.82 74.2945 25.7055 278.334 13.1097 8.55591 279.965 11.6418 8.39367 
+16.83 74.285 25.715 278.332 13.112 8.55618 279.965 11.6425 8.39281 
+16.84 74.2755 25.7245 278.329 13.1143 8.55646 279.965 11.6432 8.39195 
+16.85 74.266 25.734 278.327 13.1166 8.55674 279.965 11.6439 8.39109 
+16.86 74.2565 25.7435 278.324 13.119 8.55701 279.965 11.6446 8.39023 
+16.87 74.247 25.753 278.321 13.1213 8.55729 279.965 11.6453 8.38937 
+16.88 74.2375 25.7625 278.319 13.1236 8.55757 279.965 11.646 8.38851 
+16.89 74.228 25.772 278.316 13.126 8.55785 279.966 11.6467 8.38766 
+16.9 74.2185 25.7815 278.314 13.1283 8.55814 279.966 11.6475 8.3868 
+16.91 74.209 25.791 278.311 13.1306 8.55842 279.966 11.6482 8.38594 
+16.92 74.1995 25.8005 278.308 13.133 8.55871 279.966 11.6489 8.38508 
+16.93 74.19 25.81 278.306 13.1353 8.55899 279.966 11.6496 8.38422 
+16.94 74.1805 25.8195 278.303 13.1376 8.55928 279.966 11.6503 8.38337 
+16.95 74.1711 25.8289 278.3 13.14 8.55957 279.967 11.651 8.38251 
+16.96 74.1616 25.8384 278.298 13.1423 8.55986 279.967 11.6517 8.38165 
+16.97 74.1521 25.8479 278.295 13.1446 8.56016 279.967 11.6524 8.3808 
+16.98 74.1426 25.8574 278.293 13.147 8.56045 279.967 11.6531 8.37994 
+16.99 74.1331 25.8669 278.29 13.1493 8.56074 279.967 11.6538 8.37908 
+17 74.1236 25.8764 278.287 13.1516 8.56104 279.967 11.6545 8.37823 
+17.01 74.1141 25.8859 278.285 13.154 8.56134 279.967 11.6552 8.37737 
+17.02 74.1046 25.8954 278.282 13.1563 8.56164 279.968 11.6559 8.37652 
+17.03 74.0951 25.9049 278.279 13.1586 8.56194 279.968 11.6566 8.37566 
+17.04 74.0856 25.9144 278.277 13.161 8.56224 279.968 11.6573 8.3748 
+17.05 74.0761 25.9239 278.274 13.1633 8.56254 279.968 11.658 8.37395 
+17.06 74.0666 25.9334 278.271 13.1657 8.56285 279.968 11.6587 8.37309 
+17.07 74.0571 25.9429 278.269 13.168 8.56315 279.968 11.6594 8.37224 
+17.08 74.0476 25.9524 278.266 13.1704 8.56346 279.969 11.6601 8.37138 
+17.09 74.0381 25.9619 278.264 13.1727 8.56377 279.969 11.6608 8.37053 
+17.1 74.0286 25.9714 278.261 13.175 8.56408 279.969 11.6615 8.36968 
+17.11 74.0191 25.9809 278.258 13.1774 8.56439 279.969 11.6622 8.36882 
+17.12 74.0096 25.9904 278.256 13.1797 8.5647 279.969 11.6629 8.36797 
+17.13 74.0001 25.9999 278.253 13.1821 8.56501 279.969 11.6636 8.36711 
+17.14 73.9906 26.0094 278.25 13.1844 8.56533 279.969 11.6643 8.36626 
+17.15 73.9811 26.0189 278.248 13.1868 8.56565 279.97 11.665 8.36541 
+17.16 73.9716 26.0284 278.245 13.1891 8.56596 279.97 11.6657 8.36455 
+17.17 73.9621 26.0379 278.242 13.1915 8.56628 279.97 11.6664 8.3637 
+17.18 73.9526 26.0474 278.24 13.1938 8.5666 279.97 11.6671 8.36285 
+17.19 73.943 26.057 278.237 13.1961 8.56692 279.97 11.6678 8.36199 
+17.2 73.9335 26.0665 278.234 13.1985 8.56725 279.97 11.6685 8.36114 
+17.21 73.924 26.076 278.232 13.2008 8.56757 279.971 11.6692 8.36029 
+17.22 73.9145 26.0855 278.229 13.2032 8.5679 279.971 11.6699 8.35944 
+17.23 73.905 26.095 278.226 13.2055 8.56822 279.971 11.6706 8.35859 
+17.24 73.8955 26.1045 278.224 13.2079 8.56855 279.971 11.6713 8.35773 
+17.25 73.886 26.114 278.221 13.2103 8.56888 279.971 11.6719 8.35688 
+17.26 73.8765 26.1235 278.218 13.2126 8.56921 279.971 11.6726 8.35603 
+17.27 73.867 26.133 278.215 13.215 8.56955 279.971 11.6733 8.35518 
+17.28 73.8575 26.1425 278.213 13.2173 8.56988 279.972 11.674 8.35433 
+17.29 73.848 26.152 278.21 13.2197 8.57022 279.972 11.6747 8.35348 
+17.3 73.8385 26.1615 278.207 13.222 8.57055 279.972 11.6754 8.35263 
+17.31 73.829 26.171 278.205 13.2244 8.57089 279.972 11.6761 8.35178 
+17.32 73.8195 26.1805 278.202 13.2267 8.57123 279.972 11.6768 8.35093 
+17.33 73.81 26.19 278.199 13.2291 8.57157 279.972 11.6775 8.35008 
+17.34 73.8005 26.1995 278.197 13.2314 8.57191 279.973 11.6782 8.34923 
+17.35 73.791 26.209 278.194 13.2338 8.57225 279.973 11.6789 8.34838 
+17.36 73.7815 26.2185 278.191 13.2362 8.5726 279.973 11.6796 8.34753 
+17.37 73.772 26.228 278.189 13.2385 8.57294 279.973 11.6803 8.34668 
+17.38 73.7625 26.2375 278.186 13.2409 8.57329 279.973 11.681 8.34583 
+17.39 73.7529 26.2471 278.183 13.2432 8.57364 279.973 11.6817 8.34498 
+17.4 73.7434 26.2566 278.18 13.2456 8.57399 279.973 11.6824 8.34413 
+17.41 73.7339 26.2661 278.178 13.248 8.57434 279.974 11.6831 8.34328 
+17.42 73.7244 26.2756 278.175 13.2503 8.57469 279.974 11.6838 8.34243 
+17.43 73.7149 26.2851 278.172 13.2527 8.57505 279.974 11.6845 8.34159 
+17.44 73.7054 26.2946 278.17 13.255 8.5754 279.974 11.6852 8.34074 
+17.45 73.6959 26.3041 278.167 13.2574 8.57576 279.974 11.6858 8.33989 
+17.46 73.6864 26.3136 278.164 13.2598 8.57612 279.974 11.6865 8.33904 
+17.47 73.6769 26.3231 278.161 13.2621 8.57647 279.975 11.6872 8.33819 
+17.48 73.6674 26.3326 278.159 13.2645 8.57684 279.975 11.6879 8.33735 
+17.49 73.6579 26.3421 278.156 13.2669 8.5772 279.975 11.6886 8.3365 
+17.5 73.6484 26.3516 278.153 13.2692 8.57756 279.975 11.6893 8.33565 
+17.51 73.6388 26.3612 278.15 13.2716 8.57792 279.975 11.69 8.33481 
+17.52 73.6293 26.3707 278.148 13.274 8.57829 279.975 11.6907 8.33396 
+17.53 73.6198 26.3802 278.145 13.2763 8.57866 279.976 11.6914 8.33311 
+17.54 73.6103 26.3897 278.142 13.2787 8.57903 279.976 11.6921 8.33227 
+17.55 73.6008 26.3992 278.14 13.2811 8.5794 279.976 11.6928 8.33142 
+17.56 73.5913 26.4087 278.137 13.2834 8.57977 279.976 11.6935 8.33058 
+17.57 73.5818 26.4182 278.134 13.2858 8.58014 279.976 11.6942 8.32973 
+17.58 73.5723 26.4277 278.131 13.2882 8.58051 279.976 11.6948 8.32888 
+17.59 73.5628 26.4372 278.129 13.2906 8.58089 279.976 11.6955 8.32804 
+17.6 73.5532 26.4468 278.126 13.2929 8.58126 279.977 11.6962 8.32719 
+17.61 73.5437 26.4563 278.123 13.2953 8.58164 279.977 11.6969 8.32635 
+17.62 73.5342 26.4658 278.12 13.2977 8.58202 279.977 11.6976 8.3255 
+17.63 73.5247 26.4753 278.118 13.3 8.5824 279.977 11.6983 8.32466 
+17.64 73.5152 26.4848 278.115 13.3024 8.58278 279.977 11.699 8.32382 
+17.65 73.5057 26.4943 278.112 13.3048 8.58317 279.977 11.6997 8.32297 
+17.66 73.4962 26.5038 278.109 13.3072 8.58355 279.978 11.7004 8.32213 
+17.67 73.4867 26.5133 278.107 13.3096 8.58394 279.978 11.7011 8.32128 
+17.68 73.4771 26.5229 278.104 13.3119 8.58432 279.978 11.7017 8.32044 
+17.69 73.4676 26.5324 278.101 13.3143 8.58471 279.978 11.7024 8.3196 
+17.7 73.4581 26.5419 278.098 13.3167 8.5851 279.978 11.7031 8.31875 
+17.71 73.4486 26.5514 278.095 13.3191 8.58549 279.978 11.7038 8.31791 
+17.72 73.4391 26.5609 278.093 13.3214 8.58589 279.978 11.7045 8.31707 
+17.73 73.4296 26.5704 278.09 13.3238 8.58628 279.979 11.7052 8.31623 
+17.74 73.4201 26.5799 278.087 13.3262 8.58668 279.979 11.7059 8.31538 
+17.75 73.4105 26.5895 278.084 13.3286 8.58707 279.979 11.7066 8.31454 
+17.76 73.401 26.599 278.082 13.331 8.58747 279.979 11.7073 8.3137 
+17.77 73.3915 26.6085 278.079 13.3333 8.58787 279.979 11.7079 8.31286 
+17.78 73.382 26.618 278.076 13.3357 8.58827 279.979 11.7086 8.31202 
+17.79 73.3725 26.6275 278.073 13.3381 8.58867 279.98 11.7093 8.31117 
+17.8 73.363 26.637 278.07 13.3405 8.58907 279.98 11.71 8.31033 
+17.81 73.3535 26.6465 278.068 13.3429 8.58948 279.98 11.7107 8.30949 
+17.82 73.3439 26.6561 278.065 13.3453 8.58988 279.98 11.7114 8.30865 
+17.83 73.3344 26.6656 278.062 13.3477 8.59029 279.98 11.7121 8.30781 
+17.84 73.3249 26.6751 278.059 13.35 8.5907 279.98 11.7127 8.30697 
+17.85 73.3154 26.6846 278.056 13.3524 8.59111 279.98 11.7134 8.30613 
+17.86 73.3059 26.6941 278.054 13.3548 8.59152 279.981 11.7141 8.30529 
+17.87 73.2963 26.7037 278.051 13.3572 8.59193 279.981 11.7148 8.30445 
+17.88 73.2868 26.7132 278.048 13.3596 8.59235 279.981 11.7155 8.30361 
+17.89 73.2773 26.7227 278.045 13.362 8.59276 279.981 11.7162 8.30277 
+17.9 73.2678 26.7322 278.042 13.3644 8.59318 279.981 11.7169 8.30193 
+17.91 73.2583 26.7417 278.04 13.3668 8.5936 279.981 11.7176 8.30109 
+17.92 73.2488 26.7512 278.037 13.3691 8.59402 279.982 11.7182 8.30025 
+17.93 73.2392 26.7608 278.034 13.3715 8.59444 279.982 11.7189 8.29941 
+17.94 73.2297 26.7703 278.031 13.3739 8.59486 279.982 11.7196 8.29858 
+17.95 73.2202 26.7798 278.028 13.3763 8.59528 279.982 11.7203 8.29774 
+17.96 73.2107 26.7893 278.026 13.3787 8.59571 279.982 11.721 8.2969 
+17.97 73.2012 26.7988 278.023 13.3811 8.59613 279.982 11.7217 8.29606 
+17.98 73.1916 26.8084 278.02 13.3835 8.59656 279.982 11.7223 8.29522 
+17.99 73.1821 26.8179 278.017 13.3859 8.59699 279.983 11.723 8.29439 
+18 73.1726 26.8274 278.014 13.3883 8.59742 279.983 11.7237 8.29355 
+18.01 73.1631 26.8369 278.011 13.3907 8.59785 279.983 11.7244 8.29271 
+18.02 73.1536 26.8464 278.009 13.3931 8.59828 279.983 11.7251 8.29187 
+18.03 73.144 26.856 278.006 13.3955 8.59871 279.983 11.7258 8.29104 
+18.04 73.1345 26.8655 278.003 13.3979 8.59915 279.983 11.7264 8.2902 
+18.05 73.125 26.875 278 13.4003 8.59959 279.984 11.7271 8.28936 
+18.06 73.1155 26.8845 277.997 13.4027 8.60002 279.984 11.7278 8.28853 
+18.07 73.106 26.894 277.994 13.4051 8.60046 279.984 11.7285 8.28769 
+18.08 73.0964 26.9036 277.992 13.4075 8.6009 279.984 11.7292 8.28686 
+18.09 73.0869 26.9131 277.989 13.4099 8.60135 279.984 11.7299 8.28602 
+18.1 73.0774 26.9226 277.986 13.4123 8.60179 279.984 11.7305 8.28519 
+18.11 73.0679 26.9321 277.983 13.4147 8.60223 279.984 11.7312 8.28435 
+18.12 73.0583 26.9417 277.98 13.4171 8.60268 279.985 11.7319 8.28351 
+18.13 73.0488 26.9512 277.977 13.4195 8.60313 279.985 11.7326 8.28268 
+18.14 73.0393 26.9607 277.975 13.4219 8.60358 279.985 11.7333 8.28185 
+18.15 73.0298 26.9702 277.972 13.4243 8.60403 279.985 11.734 8.28101 
+18.16 73.0202 26.9798 277.969 13.4267 8.60448 279.985 11.7346 8.28018 
+18.17 73.0107 26.9893 277.966 13.4291 8.60493 279.985 11.7353 8.27934 
+18.18 73.0012 26.9988 277.963 13.4315 8.60538 279.985 11.736 8.27851 
+18.19 72.9917 27.0083 277.96 13.4339 8.60584 279.986 11.7367 8.27767 
+18.2 72.9821 27.0179 277.957 13.4363 8.60629 279.986 11.7374 8.27684 
+18.21 72.9726 27.0274 277.955 13.4387 8.60675 279.986 11.738 8.27601 
+18.22 72.9631 27.0369 277.952 13.4411 8.60721 279.986 11.7387 8.27517 
+18.23 72.9536 27.0464 277.949 13.4436 8.60767 279.986 11.7394 8.27434 
+18.24 72.944 27.056 277.946 13.446 8.60813 279.986 11.7401 8.27351 
+18.25 72.9345 27.0655 277.943 13.4484 8.6086 279.987 11.7408 8.27268 
+18.26 72.925 27.075 277.94 13.4508 8.60906 279.987 11.7414 8.27184 
+18.27 72.9155 27.0845 277.937 13.4532 8.60953 279.987 11.7421 8.27101 
+18.28 72.9059 27.0941 277.934 13.4556 8.60999 279.987 11.7428 8.27018 
+18.29 72.8964 27.1036 277.932 13.458 8.61046 279.987 11.7435 8.26935 
+18.3 72.8869 27.1131 277.929 13.4604 8.61093 279.987 11.7442 8.26852 
+18.31 72.8774 27.1226 277.926 13.4629 8.6114 279.987 11.7448 8.26769 
+18.32 72.8678 27.1322 277.923 13.4653 8.61188 279.988 11.7455 8.26685 
+18.33 72.8583 27.1417 277.92 13.4677 8.61235 279.988 11.7462 8.26602 
+18.34 72.8488 27.1512 277.917 13.4701 8.61283 279.988 11.7469 8.26519 
+18.35 72.8392 27.1608 277.914 13.4725 8.6133 279.988 11.7475 8.26436 
+18.36 72.8297 27.1703 277.911 13.4749 8.61378 279.988 11.7482 8.26353 
+18.37 72.8202 27.1798 277.908 13.4773 8.61426 279.988 11.7489 8.2627 
+18.38 72.8107 27.1893 277.905 13.4798 8.61474 279.989 11.7496 8.26187 
+18.39 72.8011 27.1989 277.903 13.4822 8.61522 279.989 11.7503 8.26104 
+18.4 72.7916 27.2084 277.9 13.4846 8.61571 279.989 11.7509 8.26021 
+18.41 72.7821 27.2179 277.897 13.487 8.61619 279.989 11.7516 8.25938 
+18.42 72.7725 27.2275 277.894 13.4894 8.61668 279.989 11.7523 8.25855 
+18.43 72.763 27.237 277.891 13.4919 8.61716 279.989 11.753 8.25773 
+18.44 72.7535 27.2465 277.888 13.4943 8.61765 279.989 11.7536 8.2569 
+18.45 72.744 27.256 277.885 13.4967 8.61814 279.99 11.7543 8.25607 
+18.46 72.7344 27.2656 277.882 13.4991 8.61863 279.99 11.755 8.25524 
+18.47 72.7249 27.2751 277.879 13.5016 8.61913 279.99 11.7557 8.25441 
+18.48 72.7154 27.2846 277.876 13.504 8.61962 279.99 11.7564 8.25358 
+18.49 72.7058 27.2942 277.873 13.5064 8.62011 279.99 11.757 8.25276 
+18.5 72.6963 27.3037 277.871 13.5088 8.62061 279.99 11.7577 8.25193 
+18.51 72.6868 27.3132 277.868 13.5113 8.62111 279.991 11.7584 8.2511 
+18.52 72.6772 27.3228 277.865 13.5137 8.62161 279.991 11.7591 8.25027 
+18.53 72.6677 27.3323 277.862 13.5161 8.62211 279.991 11.7597 8.24945 
+18.54 72.6582 27.3418 277.859 13.5185 8.62261 279.991 11.7604 8.24862 
+18.55 72.6486 27.3514 277.856 13.521 8.62311 279.991 11.7611 8.24779 
+18.56 72.6391 27.3609 277.853 13.5234 8.62362 279.991 11.7618 8.24697 
+18.57 72.6296 27.3704 277.85 13.5258 8.62412 279.991 11.7624 8.24614 
+18.58 72.62 27.38 277.847 13.5282 8.62463 279.992 11.7631 8.24531 
+18.59 72.6105 27.3895 277.844 13.5307 8.62514 279.992 11.7638 8.24449 
+18.6 72.601 27.399 277.841 13.5331 8.62565 279.992 11.7645 8.24366 
+18.61 72.5914 27.4086 277.838 13.5355 8.62616 279.992 11.7651 8.24284 
+18.62 72.5819 27.4181 277.835 13.538 8.62667 279.992 11.7658 8.24201 
+18.63 72.5724 27.4276 277.832 13.5404 8.62719 279.992 11.7665 8.24119 
+18.64 72.5628 27.4372 277.829 13.5428 8.6277 279.992 11.7672 8.24036 
+18.65 72.5533 27.4467 277.827 13.5453 8.62822 279.993 11.7678 8.23954 
+18.66 72.5438 27.4562 277.824 13.5477 8.62874 279.993 11.7685 8.23871 
+18.67 72.5342 27.4658 277.821 13.5501 8.62926 279.993 11.7692 8.23789 
+18.68 72.5247 27.4753 277.818 13.5526 8.62978 279.993 11.7698 8.23707 
+18.69 72.5152 27.4848 277.815 13.555 8.6303 279.993 11.7705 8.23624 
+18.7 72.5056 27.4944 277.812 13.5574 8.63082 279.993 11.7712 8.23542 
+18.71 72.4961 27.5039 277.809 13.5599 8.63135 279.994 11.7719 8.2346 
+18.72 72.4866 27.5134 277.806 13.5623 8.63187 279.994 11.7725 8.23377 
+18.73 72.477 27.523 277.803 13.5648 8.6324 279.994 11.7732 8.23295 
+18.74 72.4675 27.5325 277.8 13.5672 8.63293 279.994 11.7739 8.23213 
+18.75 72.4579 27.5421 277.797 13.5696 8.63346 279.994 11.7746 8.2313 
+18.76 72.4484 27.5516 277.794 13.5721 8.63399 279.994 11.7752 8.23048 
+18.77 72.4389 27.5611 277.791 13.5745 8.63452 279.994 11.7759 8.22966 
+18.78 72.4293 27.5707 277.788 13.577 8.63506 279.995 11.7766 8.22884 
+18.79 72.4198 27.5802 277.785 13.5794 8.63559 279.995 11.7772 8.22802 
+18.8 72.4103 27.5897 277.782 13.5818 8.63613 279.995 11.7779 8.22719 
+18.81 72.4007 27.5993 277.779 13.5843 8.63667 279.995 11.7786 8.22637 
+18.82 72.3912 27.6088 277.776 13.5867 8.63721 279.995 11.7793 8.22555 
+18.83 72.3816 27.6184 277.773 13.5892 8.63775 279.995 11.7799 8.22473 
+18.84 72.3721 27.6279 277.77 13.5916 8.63829 279.995 11.7806 8.22391 
+18.85 72.3626 27.6374 277.767 13.5941 8.63883 279.996 11.7813 8.22309 
+18.86 72.353 27.647 277.764 13.5965 8.63938 279.996 11.7819 8.22227 
+18.87 72.3435 27.6565 277.761 13.599 8.63992 279.996 11.7826 8.22145 
+18.88 72.3339 27.6661 277.758 13.6014 8.64047 279.996 11.7833 8.22063 
+18.89 72.3244 27.6756 277.755 13.6039 8.64102 279.996 11.784 8.21981 
+18.9 72.3149 27.6851 277.752 13.6063 8.64157 279.996 11.7846 8.21899 
+18.91 72.3053 27.6947 277.749 13.6088 8.64212 279.997 11.7853 8.21817 
+18.92 72.2958 27.7042 277.746 13.6112 8.64267 279.997 11.786 8.21735 
+18.93 72.2862 27.7138 277.743 13.6137 8.64323 279.997 11.7866 8.21653 
+18.94 72.2767 27.7233 277.74 13.6161 8.64378 279.997 11.7873 8.21572 
+18.95 72.2672 27.7328 277.737 13.6186 8.64434 279.997 11.788 8.2149 
+18.96 72.2576 27.7424 277.734 13.621 8.6449 279.997 11.7886 8.21408 
+18.97 72.2481 27.7519 277.731 13.6235 8.64545 279.997 11.7893 8.21326 
+18.98 72.2385 27.7615 277.728 13.6259 8.64602 279.998 11.79 8.21244 
+18.99 72.229 27.771 277.725 13.6284 8.64658 279.998 11.7906 8.21163 
+19 72.2195 27.7805 277.722 13.6308 8.64714 279.998 11.7913 8.21081 
+19.01 72.2099 27.7901 277.719 13.6333 8.64771 279.998 11.792 8.20999 
+19.02 72.2004 27.7996 277.716 13.6357 8.64827 279.998 11.7927 8.20917 
+19.03 72.1908 27.8092 277.713 13.6382 8.64884 279.998 11.7933 8.20836 
+19.04 72.1813 27.8187 277.71 13.6406 8.64941 279.998 11.794 8.20754 
+19.05 72.1717 27.8283 277.707 13.6431 8.64998 279.999 11.7947 8.20672 
+19.06 72.1622 27.8378 277.704 13.6456 8.65055 279.999 11.7953 8.20591 
+19.07 72.1527 27.8473 277.701 13.648 8.65112 279.999 11.796 8.20509 
+19.08 72.1431 27.8569 277.698 13.6505 8.65169 279.999 11.7967 8.20428 
+19.09 72.1336 27.8664 277.695 13.6529 8.65227 279.999 11.7973 8.20346 
+19.1 72.124 27.876 277.692 13.6554 8.65285 279.999 11.798 8.20264 
+19.11 72.1145 27.8855 277.689 13.6579 8.65342 280 11.7987 8.20183 
+19.12 72.1049 27.8951 277.686 13.6603 8.654 280 11.7993 8.20101 
+19.13 72.0954 27.9046 277.683 13.6628 8.65458 280 11.8 8.2002 
+19.14 72.0858 27.9142 277.68 13.6652 8.65517 280 11.8007 8.19939 
+19.15 72.0763 27.9237 277.677 13.6677 8.65575 280 11.8013 8.19857 
+19.16 72.0668 27.9332 277.673 13.6702 8.65633 280 11.802 8.19776 
+19.17 72.0572 27.9428 277.67 13.6726 8.65692 280 11.8027 8.19694 
+19.18 72.0477 27.9523 277.667 13.6751 8.65751 280.001 11.8033 8.19613 
+19.19 72.0381 27.9619 277.664 13.6776 8.6581 280.001 11.804 8.19532 
+19.2 72.0286 27.9714 277.661 13.68 8.65869 280.001 11.8047 8.1945 
+19.21 72.019 27.981 277.658 13.6825 8.65928 280.001 11.8053 8.19369 
+19.22 72.0095 27.9905 277.655 13.685 8.65987 280.001 11.806 8.19288 
+19.23 71.9999 28.0001 277.652 13.6874 8.66046 280.001 11.8067 8.19206 
+19.24 71.9904 28.0096 277.649 13.6899 8.66106 280.001 11.8073 8.19125 
+19.25 71.9808 28.0192 277.646 13.6924 8.66166 280.002 11.808 8.19044 
+19.26 71.9713 28.0287 277.643 13.6948 8.66225 280.002 11.8087 8.18963 
+19.27 71.9617 28.0383 277.64 13.6973 8.66285 280.002 11.8093 8.18882 
+19.28 71.9522 28.0478 277.637 13.6998 8.66345 280.002 11.81 8.188 
+19.29 71.9426 28.0574 277.634 13.7023 8.66406 280.002 11.8106 8.18719 
+19.3 71.9331 28.0669 277.631 13.7047 8.66466 280.002 11.8113 8.18638 
+19.31 71.9236 28.0764 277.628 13.7072 8.66526 280.002 11.812 8.18557 
+19.32 71.914 28.086 277.624 13.7097 8.66587 280.003 11.8126 8.18476 
+19.33 71.9045 28.0955 277.621 13.7121 8.66648 280.003 11.8133 8.18395 
+19.34 71.8949 28.1051 277.618 13.7146 8.66709 280.003 11.814 8.18314 
+19.35 71.8854 28.1146 277.615 13.7171 8.6677 280.003 11.8146 8.18233 
+19.36 71.8758 28.1242 277.612 13.7196 8.66831 280.003 11.8153 8.18152 
+19.37 71.8663 28.1337 277.609 13.722 8.66892 280.003 11.816 8.18071 
+19.38 71.8567 28.1433 277.606 13.7245 8.66953 280.003 11.8166 8.1799 
+19.39 71.8472 28.1528 277.603 13.727 8.67015 280.004 11.8173 8.17909 
+19.4 71.8376 28.1624 277.6 13.7295 8.67077 280.004 11.8179 8.17828 
+19.41 71.8281 28.1719 277.597 13.732 8.67138 280.004 11.8186 8.17747 
+19.42 71.8185 28.1815 277.594 13.7344 8.672 280.004 11.8193 8.17666 
+19.43 71.809 28.191 277.59 13.7369 8.67262 280.004 11.8199 8.17586 
+19.44 71.7994 28.2006 277.587 13.7394 8.67325 280.004 11.8206 8.17505 
+19.45 71.7899 28.2101 277.584 13.7419 8.67387 280.004 11.8213 8.17424 
+19.46 71.7803 28.2197 277.581 13.7444 8.67449 280.005 11.8219 8.17343 
+19.47 71.7707 28.2293 277.578 13.7468 8.67512 280.005 11.8226 8.17262 
+19.48 71.7612 28.2388 277.575 13.7493 8.67575 280.005 11.8232 8.17182 
+19.49 71.7516 28.2484 277.572 13.7518 8.67638 280.005 11.8239 8.17101 
+19.5 71.7421 28.2579 277.569 13.7543 8.67701 280.005 11.8246 8.1702 
+19.51 71.7325 28.2675 277.566 13.7568 8.67764 280.005 11.8252 8.1694 
+19.52 71.723 28.277 277.562 13.7593 8.67827 280.006 11.8259 8.16859 
+19.53 71.7134 28.2866 277.559 13.7617 8.6789 280.006 11.8266 8.16778 
+19.54 71.7039 28.2961 277.556 13.7642 8.67954 280.006 11.8272 8.16698 
+19.55 71.6943 28.3057 277.553 13.7667 8.68018 280.006 11.8279 8.16617 
+19.56 71.6848 28.3152 277.55 13.7692 8.68081 280.006 11.8285 8.16537 
+19.57 71.6752 28.3248 277.547 13.7717 8.68145 280.006 11.8292 8.16456 
+19.58 71.6657 28.3343 277.544 13.7742 8.68209 280.006 11.8299 8.16375 
+19.59 71.6561 28.3439 277.541 13.7767 8.68274 280.007 11.8305 8.16295 
+19.6 71.6466 28.3534 277.537 13.7792 8.68338 280.007 11.8312 8.16214 
+19.61 71.637 28.363 277.534 13.7816 8.68402 280.007 11.8318 8.16134 
+19.62 71.6274 28.3726 277.531 13.7841 8.68467 280.007 11.8325 8.16054 
+19.63 71.6179 28.3821 277.528 13.7866 8.68532 280.007 11.8332 8.15973 
+19.64 71.6083 28.3917 277.525 13.7891 8.68597 280.007 11.8338 8.15893 
+19.65 71.5988 28.4012 277.522 13.7916 8.68662 280.007 11.8345 8.15812 
+19.66 71.5892 28.4108 277.519 13.7941 8.68727 280.008 11.8351 8.15732 
+19.67 71.5797 28.4203 277.515 13.7966 8.68792 280.008 11.8358 8.15652 
+19.68 71.5701 28.4299 277.512 13.7991 8.68857 280.008 11.8365 8.15571 
+19.69 71.5606 28.4394 277.509 13.8016 8.68923 280.008 11.8371 8.15491 
+19.7 71.551 28.449 277.506 13.8041 8.68989 280.008 11.8378 8.15411 
+19.71 71.5414 28.4586 277.503 13.8066 8.69054 280.008 11.8384 8.15331 
+19.72 71.5319 28.4681 277.5 13.8091 8.6912 280.008 11.8391 8.1525 
+19.73 71.5223 28.4777 277.497 13.8116 8.69186 280.009 11.8398 8.1517 
+19.74 71.5128 28.4872 277.493 13.8141 8.69253 280.009 11.8404 8.1509 
+19.75 71.5032 28.4968 277.49 13.8166 8.69319 280.009 11.8411 8.1501 
+19.76 71.4937 28.5063 277.487 13.8191 8.69385 280.009 11.8417 8.1493 
+19.77 71.4841 28.5159 277.484 13.8216 8.69452 280.009 11.8424 8.1485 
+19.78 71.4745 28.5255 277.481 13.8241 8.69519 280.009 11.8431 8.14769 
+19.79 71.465 28.535 277.478 13.8266 8.69586 280.009 11.8437 8.14689 
+19.8 71.4554 28.5446 277.474 13.8291 8.69653 280.01 11.8444 8.14609 
+19.81 71.4459 28.5541 277.471 13.8316 8.6972 280.01 11.845 8.14529 
+19.82 71.4363 28.5637 277.468 13.8341 8.69787 280.01 11.8457 8.14449 
+19.83 71.4267 28.5733 277.465 13.8366 8.69854 280.01 11.8463 8.14369 
+19.84 71.4172 28.5828 277.462 13.8391 8.69922 280.01 11.847 8.14289 
+19.85 71.4076 28.5924 277.459 13.8416 8.6999 280.01 11.8477 8.14209 
+19.86 71.3981 28.6019 277.455 13.8441 8.70057 280.01 11.8483 8.14129 
+19.87 71.3885 28.6115 277.452 13.8466 8.70125 280.011 11.849 8.1405 
+19.88 71.3789 28.6211 277.449 13.8491 8.70193 280.011 11.8496 8.1397 
+19.89 71.3694 28.6306 277.446 13.8516 8.70262 280.011 11.8503 8.1389 
+19.9 71.3598 28.6402 277.443 13.8541 8.7033 280.011 11.8509 8.1381 
+19.91 71.3503 28.6497 277.439 13.8566 8.70398 280.011 11.8516 8.1373 
+19.92 71.3407 28.6593 277.436 13.8591 8.70467 280.011 11.8523 8.1365 
+19.93 71.3311 28.6689 277.433 13.8617 8.70536 280.011 11.8529 8.13571 
+19.94 71.3216 28.6784 277.43 13.8642 8.70605 280.012 11.8536 8.13491 
+19.95 71.312 28.688 277.427 13.8667 8.70674 280.012 11.8542 8.13411 
+19.96 71.3025 28.6975 277.423 13.8692 8.70743 280.012 11.8549 8.13331 
+19.97 71.2929 28.7071 277.42 13.8717 8.70812 280.012 11.8555 8.13252 
+19.98 71.2833 28.7167 277.417 13.8742 8.70881 280.012 11.8562 8.13172 
+19.99 71.2738 28.7262 277.414 13.8767 8.70951 280.012 11.8568 8.13092 
+20 71.2642 28.7358 277.411 13.8792 8.71021 280.012 11.8575 8.13013 
+20.01 71.2546 28.7454 277.407 13.8817 8.7109 280.013 11.8582 8.12933 
+20.02 71.2451 28.7549 277.404 13.8843 8.7116 280.013 11.8588 8.12854 
+20.03 71.2355 28.7645 277.401 13.8868 8.7123 280.013 11.8595 8.12774 
+20.04 71.226 28.774 277.398 13.8893 8.71301 280.013 11.8601 8.12694 
+20.05 71.2164 28.7836 277.394 13.8918 8.71371 280.013 11.8608 8.12615 
+20.06 71.2068 28.7932 277.391 13.8943 8.71441 280.013 11.8614 8.12535 
+20.07 71.1973 28.8027 277.388 13.8968 8.71512 280.013 11.8621 8.12456 
+20.08 71.1877 28.8123 277.385 13.8994 8.71583 280.013 11.8627 8.12377 
+20.09 71.1781 28.8219 277.382 13.9019 8.71654 280.014 11.8634 8.12297 
+20.1 71.1686 28.8314 277.378 13.9044 8.71725 280.014 11.864 8.12218 
+20.11 71.159 28.841 277.375 13.9069 8.71796 280.014 11.8647 8.12138 
+20.12 71.1494 28.8506 277.372 13.9094 8.71867 280.014 11.8654 8.12059 
+20.13 71.1399 28.8601 277.369 13.912 8.71938 280.014 11.866 8.1198 
+20.14 71.1303 28.8697 277.365 13.9145 8.7201 280.014 11.8667 8.119 
+20.15 71.1207 28.8793 277.362 13.917 8.72082 280.014 11.8673 8.11821 
+20.16 71.1112 28.8888 277.359 13.9195 8.72153 280.015 11.868 8.11742 
+20.17 71.1016 28.8984 277.356 13.922 8.72225 280.015 11.8686 8.11663 
+20.18 71.092 28.908 277.352 13.9246 8.72298 280.015 11.8693 8.11583 
+20.19 71.0825 28.9175 277.349 13.9271 8.7237 280.015 11.8699 8.11504 
+20.2 71.0729 28.9271 277.346 13.9296 8.72442 280.015 11.8706 8.11425 
+20.21 71.0633 28.9367 277.343 13.9321 8.72515 280.015 11.8712 8.11346 
+20.22 71.0538 28.9462 277.339 13.9347 8.72587 280.015 11.8719 8.11267 
+20.23 71.0442 28.9558 277.336 13.9372 8.7266 280.016 11.8725 8.11188 
+20.24 71.0346 28.9654 277.333 13.9397 8.72733 280.016 11.8732 8.11108 
+20.25 71.0251 28.9749 277.33 13.9423 8.72806 280.016 11.8738 8.11029 
+20.26 71.0155 28.9845 277.326 13.9448 8.72879 280.016 11.8745 8.1095 
+20.27 71.0059 28.9941 277.323 13.9473 8.72952 280.016 11.8752 8.10871 
+20.28 70.9964 29.0036 277.32 13.9498 8.73026 280.016 11.8758 8.10792 
+20.29 70.9868 29.0132 277.317 13.9524 8.73099 280.016 11.8765 8.10713 
+20.3 70.9772 29.0228 277.313 13.9549 8.73173 280.017 11.8771 8.10634 
+20.31 70.9677 29.0323 277.31 13.9574 8.73247 280.017 11.8778 8.10555 
+20.32 70.9581 29.0419 277.307 13.96 8.73321 280.017 11.8784 8.10476 
+20.33 70.9485 29.0515 277.304 13.9625 8.73395 280.017 11.8791 8.10398 
+20.34 70.9389 29.0611 277.3 13.965 8.73469 280.017 11.8797 8.10319 
+20.35 70.9294 29.0706 277.297 13.9676 8.73543 280.017 11.8804 8.1024 
+20.36 70.9198 29.0802 277.294 13.9701 8.73618 280.017 11.881 8.10161 
+20.37 70.9102 29.0898 277.29 13.9726 8.73692 280.018 11.8817 8.10082 
+20.38 70.9007 29.0993 277.287 13.9752 8.73767 280.018 11.8823 8.10003 
+20.39 70.8911 29.1089 277.284 13.9777 8.73842 280.018 11.883 8.09925 
+20.4 70.8815 29.1185 277.281 13.9802 8.73917 280.018 11.8836 8.09846 
+20.41 70.872 29.128 277.277 13.9828 8.73992 280.018 11.8843 8.09767 
+20.42 70.8624 29.1376 277.274 13.9853 8.74067 280.018 11.8849 8.09689 
+20.43 70.8528 29.1472 277.271 13.9879 8.74143 280.018 11.8856 8.0961 
+20.44 70.8432 29.1568 277.267 13.9904 8.74218 280.018 11.8862 8.09531 
+20.45 70.8337 29.1663 277.264 13.9929 8.74294 280.019 11.8869 8.09453 
+20.46 70.8241 29.1759 277.261 13.9955 8.7437 280.019 11.8875 8.09374 
+20.47 70.8145 29.1855 277.258 13.998 8.74446 280.019 11.8882 8.09295 
+20.48 70.805 29.195 277.254 14.0006 8.74522 280.019 11.8888 8.09217 
+20.49 70.7954 29.2046 277.251 14.0031 8.74598 280.019 11.8895 8.09138 
+20.5 70.7858 29.2142 277.248 14.0056 8.74674 280.019 11.8901 8.0906 
+20.51 70.7762 29.2238 277.244 14.0082 8.74751 280.019 11.8908 8.08981 
+20.52 70.7667 29.2333 277.241 14.0107 8.74827 280.02 11.8914 8.08903 
+20.53 70.7571 29.2429 277.238 14.0133 8.74904 280.02 11.8921 8.08824 
+20.54 70.7475 29.2525 277.234 14.0158 8.74981 280.02 11.8927 8.08746 
+20.55 70.7379 29.2621 277.231 14.0184 8.75058 280.02 11.8934 8.08668 
+20.56 70.7284 29.2716 277.228 14.0209 8.75135 280.02 11.894 8.08589 
+20.57 70.7188 29.2812 277.224 14.0235 8.75212 280.02 11.8947 8.08511 
+20.58 70.7092 29.2908 277.221 14.026 8.7529 280.02 11.8953 8.08433 
+20.59 70.6996 29.3004 277.218 14.0286 8.75367 280.02 11.896 8.08354 
+20.6 70.6901 29.3099 277.214 14.0311 8.75445 280.021 11.8966 8.08276 
+20.61 70.6805 29.3195 277.211 14.0337 8.75523 280.021 11.8973 8.08198 
+20.62 70.6709 29.3291 277.208 14.0362 8.75601 280.021 11.8979 8.08119 
+20.63 70.6613 29.3387 277.204 14.0388 8.75679 280.021 11.8986 8.08041 
+20.64 70.6518 29.3482 277.201 14.0413 8.75757 280.021 11.8992 8.07963 
+20.65 70.6422 29.3578 277.198 14.0439 8.75835 280.021 11.8999 8.07885 
+20.66 70.6326 29.3674 277.194 14.0464 8.75914 280.021 11.9005 8.07807 
+20.67 70.623 29.377 277.191 14.049 8.75992 280.022 11.9012 8.07729 
+20.68 70.6135 29.3865 277.188 14.0515 8.76071 280.022 11.9018 8.0765 
+20.69 70.6039 29.3961 277.184 14.0541 8.7615 280.022 11.9024 8.07572 
+20.7 70.5943 29.4057 277.181 14.0566 8.76229 280.022 11.9031 8.07494 
+20.71 70.5847 29.4153 277.178 14.0592 8.76308 280.022 11.9037 8.07416 
+20.72 70.5752 29.4248 277.174 14.0617 8.76388 280.022 11.9044 8.07338 
+20.73 70.5656 29.4344 277.171 14.0643 8.76467 280.022 11.905 8.0726 
+20.74 70.556 29.444 277.168 14.0669 8.76546 280.022 11.9057 8.07182 
+20.75 70.5464 29.4536 277.164 14.0694 8.76626 280.023 11.9063 8.07104 
+20.76 70.5368 29.4632 277.161 14.072 8.76706 280.023 11.907 8.07026 
+20.77 70.5273 29.4727 277.158 14.0745 8.76786 280.023 11.9076 8.06948 
+20.78 70.5177 29.4823 277.154 14.0771 8.76866 280.023 11.9083 8.06871 
+20.79 70.5081 29.4919 277.151 14.0797 8.76946 280.023 11.9089 8.06793 
+20.8 70.4985 29.5015 277.148 14.0822 8.77027 280.023 11.9096 8.06715 
+20.81 70.489 29.511 277.144 14.0848 8.77107 280.023 11.9102 8.06637 
+20.82 70.4794 29.5206 277.141 14.0873 8.77188 280.024 11.9109 8.06559 
+20.83 70.4698 29.5302 277.137 14.0899 8.77268 280.024 11.9115 8.06482 
+20.84 70.4602 29.5398 277.134 14.0925 8.77349 280.024 11.9122 8.06404 
+20.85 70.4506 29.5494 277.131 14.095 8.7743 280.024 11.9128 8.06326 
+20.86 70.4411 29.5589 277.127 14.0976 8.77511 280.024 11.9134 8.06248 
+20.87 70.4315 29.5685 277.124 14.1002 8.77593 280.024 11.9141 8.06171 
+20.88 70.4219 29.5781 277.121 14.1027 8.77674 280.024 11.9147 8.06093 
+20.89 70.4123 29.5877 277.117 14.1053 8.77756 280.024 11.9154 8.06015 
+20.9 70.4027 29.5973 277.114 14.1078 8.77837 280.025 11.916 8.05938 
+20.91 70.3932 29.6068 277.11 14.1104 8.77919 280.025 11.9167 8.0586 
+20.92 70.3836 29.6164 277.107 14.113 8.78001 280.025 11.9173 8.05783 
+20.93 70.374 29.626 277.104 14.1156 8.78083 280.025 11.918 8.05705 
+20.94 70.3644 29.6356 277.1 14.1181 8.78165 280.025 11.9186 8.05628 
+20.95 70.3548 29.6452 277.097 14.1207 8.78248 280.025 11.9193 8.0555 
+20.96 70.3452 29.6548 277.093 14.1233 8.7833 280.025 11.9199 8.05473 
+20.97 70.3357 29.6643 277.09 14.1258 8.78413 280.026 11.9205 8.05395 
+20.98 70.3261 29.6739 277.087 14.1284 8.78496 280.026 11.9212 8.05318 
+20.99 70.3165 29.6835 277.083 14.131 8.78578 280.026 11.9218 8.0524 
+21 70.3069 29.6931 277.08 14.1335 8.78661 280.026 11.9225 8.05163 
+21.01 70.2973 29.7027 277.076 14.1361 8.78745 280.026 11.9231 8.05086 
+21.02 70.2877 29.7123 277.073 14.1387 8.78828 280.026 11.9238 8.05008 
+21.03 70.2782 29.7218 277.07 14.1413 8.78911 280.026 11.9244 8.04931 
+21.04 70.2686 29.7314 277.066 14.1438 8.78995 280.026 11.9251 8.04854 
+21.05 70.259 29.741 277.063 14.1464 8.79079 280.027 11.9257 8.04776 
+21.06 70.2494 29.7506 277.059 14.149 8.79162 280.027 11.9263 8.04699 
+21.07 70.2398 29.7602 277.056 14.1516 8.79246 280.027 11.927 8.04622 
+21.08 70.2302 29.7698 277.053 14.1541 8.7933 280.027 11.9276 8.04545 
+21.09 70.2207 29.7793 277.049 14.1567 8.79415 280.027 11.9283 8.04468 
+21.1 70.2111 29.7889 277.046 14.1593 8.79499 280.027 11.9289 8.0439 
+21.11 70.2015 29.7985 277.042 14.1619 8.79583 280.027 11.9296 8.04313 
+21.12 70.1919 29.8081 277.039 14.1645 8.79668 280.027 11.9302 8.04236 
+21.13 70.1823 29.8177 277.035 14.167 8.79753 280.028 11.9308 8.04159 
+21.14 70.1727 29.8273 277.032 14.1696 8.79838 280.028 11.9315 8.04082 
+21.15 70.1632 29.8368 277.029 14.1722 8.79923 280.028 11.9321 8.04005 
+21.16 70.1536 29.8464 277.025 14.1748 8.80008 280.028 11.9328 8.03928 
+21.17 70.144 29.856 277.022 14.1774 8.80093 280.028 11.9334 8.03851 
+21.18 70.1344 29.8656 277.018 14.18 8.80178 280.028 11.9341 8.03774 
+21.19 70.1248 29.8752 277.015 14.1825 8.80264 280.028 11.9347 8.03697 
+21.2 70.1152 29.8848 277.011 14.1851 8.8035 280.028 11.9353 8.0362 
+21.21 70.1056 29.8944 277.008 14.1877 8.80436 280.029 11.936 8.03543 
+21.22 70.096 29.904 277.004 14.1903 8.80521 280.029 11.9366 8.03467 
+21.23 70.0865 29.9135 277.001 14.1929 8.80608 280.029 11.9373 8.0339 
+21.24 70.0769 29.9231 276.998 14.1955 8.80694 280.029 11.9379 8.03313 
+21.25 70.0673 29.9327 276.994 14.1981 8.8078 280.029 11.9386 8.03236 
+21.26 70.0577 29.9423 276.991 14.2006 8.80867 280.029 11.9392 8.03159 
+21.27 70.0481 29.9519 276.987 14.2032 8.80953 280.029 11.9398 8.03083 
+21.28 70.0385 29.9615 276.984 14.2058 8.8104 280.029 11.9405 8.03006 
+21.29 70.0289 29.9711 276.98 14.2084 8.81127 280.03 11.9411 8.02929 
+21.3 70.0193 29.9807 276.977 14.211 8.81214 280.03 11.9418 8.02852 
+21.31 70.0098 29.9902 276.973 14.2136 8.81301 280.03 11.9424 8.02776 
+21.32 70.0002 29.9998 276.97 14.2162 8.81388 280.03 11.943 8.02699 
+21.33 69.9906 30.0094 276.966 14.2188 8.81476 280.03 11.9437 8.02623 
+21.34 69.981 30.019 276.963 14.2214 8.81563 280.03 11.9443 8.02546 
+21.35 69.9714 30.0286 276.96 14.224 8.81651 280.03 11.945 8.02469 
+21.36 69.9618 30.0382 276.956 14.2266 8.81739 280.03 11.9456 8.02393 
+21.37 69.9522 30.0478 276.953 14.2291 8.81827 280.031 11.9463 8.02316 
+21.38 69.9426 30.0574 276.949 14.2317 8.81915 280.031 11.9469 8.0224 
+21.39 69.933 30.067 276.946 14.2343 8.82003 280.031 11.9475 8.02163 
+21.4 69.9235 30.0765 276.942 14.2369 8.82091 280.031 11.9482 8.02087 
+21.41 69.9139 30.0861 276.939 14.2395 8.8218 280.031 11.9488 8.0201 
+21.42 69.9043 30.0957 276.935 14.2421 8.82269 280.031 11.9495 8.01934 
+21.43 69.8947 30.1053 276.932 14.2447 8.82357 280.031 11.9501 8.01858 
+21.44 69.8851 30.1149 276.928 14.2473 8.82446 280.031 11.9507 8.01781 
+21.45 69.8755 30.1245 276.925 14.2499 8.82535 280.032 11.9514 8.01705 
+21.46 69.8659 30.1341 276.921 14.2525 8.82624 280.032 11.952 8.01629 
+21.47 69.8563 30.1437 276.918 14.2551 8.82714 280.032 11.9527 8.01552 
+21.48 69.8467 30.1533 276.914 14.2577 8.82803 280.032 11.9533 8.01476 
+21.49 69.8371 30.1629 276.911 14.2603 8.82893 280.032 11.9539 8.014 
+21.5 69.8275 30.1725 276.907 14.2629 8.82982 280.032 11.9546 8.01324 
+21.51 69.8179 30.1821 276.904 14.2655 8.83072 280.032 11.9552 8.01248 
+21.52 69.8084 30.1916 276.9 14.2681 8.83162 280.032 11.9559 8.01171 
+21.53 69.7988 30.2012 276.897 14.2707 8.83252 280.033 11.9565 8.01095 
+21.54 69.7892 30.2108 276.893 14.2733 8.83342 280.033 11.9571 8.01019 
+21.55 69.7796 30.2204 276.89 14.2759 8.83433 280.033 11.9578 8.00943 
+21.56 69.77 30.23 276.886 14.2786 8.83523 280.033 11.9584 8.00867 
+21.57 69.7604 30.2396 276.883 14.2812 8.83614 280.033 11.959 8.00791 
+21.58 69.7508 30.2492 276.879 14.2838 8.83705 280.033 11.9597 8.00715 
+21.59 69.7412 30.2588 276.876 14.2864 8.83795 280.033 11.9603 8.00639 
+21.6 69.7316 30.2684 276.872 14.289 8.83886 280.033 11.961 8.00563 
+21.61 69.722 30.278 276.869 14.2916 8.83978 280.034 11.9616 8.00487 
+21.62 69.7124 30.2876 276.865 14.2942 8.84069 280.034 11.9622 8.00411 
+21.63 69.7028 30.2972 276.862 14.2968 8.8416 280.034 11.9629 8.00335 
+21.64 69.6932 30.3068 276.858 14.2994 8.84252 280.034 11.9635 8.00259 
+21.65 69.6836 30.3164 276.855 14.302 8.84344 280.034 11.9642 8.00183 
+21.66 69.674 30.326 276.851 14.3046 8.84435 280.034 11.9648 8.00108 
+21.67 69.6644 30.3356 276.847 14.3073 8.84527 280.034 11.9654 8.00032 
+21.68 69.6548 30.3452 276.844 14.3099 8.84619 280.034 11.9661 7.99956 
+21.69 69.6453 30.3547 276.84 14.3125 8.84712 280.034 11.9667 7.9988 
+21.7 69.6357 30.3643 276.837 14.3151 8.84804 280.035 11.9674 7.99805 
+21.71 69.6261 30.3739 276.833 14.3177 8.84897 280.035 11.968 7.99729 
+21.72 69.6165 30.3835 276.83 14.3203 8.84989 280.035 11.9686 7.99653 
+21.73 69.6069 30.3931 276.826 14.3229 8.85082 280.035 11.9693 7.99577 
+21.74 69.5973 30.4027 276.823 14.3256 8.85175 280.035 11.9699 7.99502 
+21.75 69.5877 30.4123 276.819 14.3282 8.85268 280.035 11.9705 7.99426 
+21.76 69.5781 30.4219 276.816 14.3308 8.85361 280.035 11.9712 7.99351 
+21.77 69.5685 30.4315 276.812 14.3334 8.85454 280.035 11.9718 7.99275 
+21.78 69.5589 30.4411 276.808 14.336 8.85548 280.036 11.9725 7.992 
+21.79 69.5493 30.4507 276.805 14.3386 8.85641 280.036 11.9731 7.99124 
+21.8 69.5397 30.4603 276.801 14.3413 8.85735 280.036 11.9737 7.99049 
+21.81 69.5301 30.4699 276.798 14.3439 8.85829 280.036 11.9744 7.98973 
+21.82 69.5205 30.4795 276.794 14.3465 8.85923 280.036 11.975 7.98898 
+21.83 69.5109 30.4891 276.791 14.3491 8.86017 280.036 11.9756 7.98822 
+21.84 69.5013 30.4987 276.787 14.3518 8.86111 280.036 11.9763 7.98747 
+21.85 69.4917 30.5083 276.784 14.3544 8.86205 280.036 11.9769 7.98671 
+21.86 69.4821 30.5179 276.78 14.357 8.863 280.036 11.9775 7.98596 
+21.87 69.4725 30.5275 276.776 14.3596 8.86395 280.037 11.9782 7.98521 
+21.88 69.4629 30.5371 276.773 14.3622 8.86489 280.037 11.9788 7.98445 
+21.89 69.4533 30.5467 276.769 14.3649 8.86584 280.037 11.9795 7.9837 
+21.9 69.4437 30.5563 276.766 14.3675 8.86679 280.037 11.9801 7.98295 
+21.91 69.4341 30.5659 276.762 14.3701 8.86774 280.037 11.9807 7.9822 
+21.92 69.4245 30.5755 276.759 14.3728 8.8687 280.037 11.9814 7.98144 
+21.93 69.4149 30.5851 276.755 14.3754 8.86965 280.037 11.982 7.98069 
+21.94 69.4053 30.5947 276.751 14.378 8.87061 280.037 11.9826 7.97994 
+21.95 69.3957 30.6043 276.748 14.3806 8.87156 280.038 11.9833 7.97919 
+21.96 69.3861 30.6139 276.744 14.3833 8.87252 280.038 11.9839 7.97844 
+21.97 69.3765 30.6235 276.741 14.3859 8.87348 280.038 11.9845 7.97769 
+21.98 69.3669 30.6331 276.737 14.3885 8.87444 280.038 11.9852 7.97694 
+21.99 69.3573 30.6427 276.733 14.3912 8.8754 280.038 11.9858 7.97619 
+22 69.3477 30.6523 276.73 14.3938 8.87637 280.038 11.9864 7.97544 
+22.01 69.3381 30.6619 276.726 14.3964 8.87733 280.038 11.9871 7.97469 
+22.02 69.3285 30.6715 276.723 14.3991 8.8783 280.038 11.9877 7.97394 
+22.03 69.3189 30.6811 276.719 14.4017 8.87927 280.038 11.9884 7.97319 
+22.04 69.3093 30.6907 276.715 14.4043 8.88024 280.039 11.989 7.97244 
+22.05 69.2997 30.7003 276.712 14.407 8.88121 280.039 11.9896 7.97169 
+22.06 69.2901 30.7099 276.708 14.4096 8.88218 280.039 11.9903 7.97094 
+22.07 69.2805 30.7195 276.705 14.4122 8.88315 280.039 11.9909 7.97019 
+22.08 69.2709 30.7291 276.701 14.4149 8.88413 280.039 11.9915 7.96944 
+22.09 69.2613 30.7387 276.697 14.4175 8.8851 280.039 11.9922 7.9687 
+22.1 69.2517 30.7483 276.694 14.4201 8.88608 280.039 11.9928 7.96795 
+22.11 69.2421 30.7579 276.69 14.4228 8.88706 280.039 11.9934 7.9672 
+22.12 69.2325 30.7675 276.687 14.4254 8.88804 280.039 11.9941 7.96645 
+22.13 69.2229 30.7771 276.683 14.4281 8.88902 280.04 11.9947 7.96571 
+22.14 69.2133 30.7867 276.679 14.4307 8.89 280.04 11.9953 7.96496 
+22.15 69.2037 30.7963 276.676 14.4333 8.89098 280.04 11.996 7.96421 
+22.16 69.194 30.806 276.672 14.436 8.89197 280.04 11.9966 7.96347 
+22.17 69.1844 30.8156 276.668 14.4386 8.89295 280.04 11.9972 7.96272 
+22.18 69.1748 30.8252 276.665 14.4413 8.89394 280.04 11.9979 7.96198 
+22.19 69.1652 30.8348 276.661 14.4439 8.89493 280.04 11.9985 7.96123 
+22.2 69.1556 30.8444 276.658 14.4466 8.89592 280.04 11.9991 7.96049 
+22.21 69.146 30.854 276.654 14.4492 8.89691 280.04 11.9998 7.95974 
+22.22 69.1364 30.8636 276.65 14.4518 8.89791 280.041 12.0004 7.959 
+22.23 69.1268 30.8732 276.647 14.4545 8.8989 280.041 12.001 7.95825 
+22.24 69.1172 30.8828 276.643 14.4571 8.8999 280.041 12.0017 7.95751 
+22.25 69.1076 30.8924 276.639 14.4598 8.90089 280.041 12.0023 7.95676 
+22.26 69.098 30.902 276.636 14.4624 8.90189 280.041 12.0029 7.95602 
+22.27 69.0884 30.9116 276.632 14.4651 8.90289 280.041 12.0036 7.95528 
+22.28 69.0788 30.9212 276.628 14.4677 8.90389 280.041 12.0042 7.95453 
+22.29 69.0692 30.9308 276.625 14.4704 8.90489 280.041 12.0048 7.95379 
+22.3 69.0596 30.9404 276.621 14.473 8.9059 280.041 12.0055 7.95305 
+22.31 69.05 30.95 276.617 14.4757 8.9069 280.042 12.0061 7.9523 
+22.32 69.0404 30.9596 276.614 14.4783 8.90791 280.042 12.0067 7.95156 
+22.33 69.0308 30.9692 276.61 14.481 8.90892 280.042 12.0074 7.95082 
+22.34 69.0211 30.9789 276.606 14.4836 8.90993 280.042 12.008 7.95008 
+22.35 69.0115 30.9885 276.603 14.4863 8.91094 280.042 12.0086 7.94934 
+22.36 69.0019 30.9981 276.599 14.4889 8.91195 280.042 12.0093 7.94859 
+22.37 68.9923 31.0077 276.595 14.4916 8.91296 280.042 12.0099 7.94785 
+22.38 68.9827 31.0173 276.592 14.4942 8.91398 280.042 12.0105 7.94711 
+22.39 68.9731 31.0269 276.588 14.4969 8.91499 280.042 12.0112 7.94637 
+22.4 68.9635 31.0365 276.584 14.4996 8.91601 280.043 12.0118 7.94563 
+22.41 68.9539 31.0461 276.581 14.5022 8.91703 280.043 12.0124 7.94489 
+22.42 68.9443 31.0557 276.577 14.5049 8.91805 280.043 12.0131 7.94415 
+22.43 68.9347 31.0653 276.573 14.5075 8.91907 280.043 12.0137 7.94341 
+22.44 68.9251 31.0749 276.57 14.5102 8.92009 280.043 12.0143 7.94267 
+22.45 68.9154 31.0846 276.566 14.5128 8.92111 280.043 12.015 7.94193 
+22.46 68.9058 31.0942 276.562 14.5155 8.92214 280.043 12.0156 7.9412 
+22.47 68.8962 31.1038 276.559 14.5182 8.92316 280.043 12.0162 7.94046 
+22.48 68.8866 31.1134 276.555 14.5208 8.92419 280.043 12.0169 7.93972 
+22.49 68.877 31.123 276.551 14.5235 8.92522 280.044 12.0175 7.93898 
+22.5 68.8674 31.1326 276.548 14.5261 8.92625 280.044 12.0181 7.93824 
+22.51 68.8578 31.1422 276.544 14.5288 8.92728 280.044 12.0188 7.9375 
+22.52 68.8482 31.1518 276.54 14.5315 8.92832 280.044 12.0194 7.93677 
+22.53 68.8386 31.1614 276.537 14.5341 8.92935 280.044 12.02 7.93603 
+22.54 68.829 31.171 276.533 14.5368 8.93039 280.044 12.0207 7.93529 
+22.55 68.8193 31.1807 276.529 14.5395 8.93142 280.044 12.0213 7.93456 
+22.56 68.8097 31.1903 276.525 14.5421 8.93246 280.044 12.0219 7.93382 
+22.57 68.8001 31.1999 276.522 14.5448 8.9335 280.044 12.0225 7.93308 
+22.58 68.7905 31.2095 276.518 14.5475 8.93454 280.044 12.0232 7.93235 
+22.59 68.7809 31.2191 276.514 14.5501 8.93559 280.045 12.0238 7.93161 
+22.6 68.7713 31.2287 276.511 14.5528 8.93663 280.045 12.0244 7.93088 
+22.61 68.7617 31.2383 276.507 14.5555 8.93767 280.045 12.0251 7.93014 
+22.62 68.7521 31.2479 276.503 14.5581 8.93872 280.045 12.0257 7.92941 
+22.63 68.7425 31.2575 276.499 14.5608 8.93977 280.045 12.0263 7.92867 
+22.64 68.7328 31.2672 276.496 14.5635 8.94082 280.045 12.027 7.92794 
+22.65 68.7232 31.2768 276.492 14.5661 8.94187 280.045 12.0276 7.9272 
+22.66 68.7136 31.2864 276.488 14.5688 8.94292 280.045 12.0282 7.92647 
+22.67 68.704 31.296 276.485 14.5715 8.94397 280.045 12.0289 7.92574 
+22.68 68.6944 31.3056 276.481 14.5741 8.94503 280.046 12.0295 7.925 
+22.69 68.6848 31.3152 276.477 14.5768 8.94608 280.046 12.0301 7.92427 
+22.7 68.6752 31.3248 276.473 14.5795 8.94714 280.046 12.0307 7.92354 
+22.71 68.6655 31.3345 276.47 14.5822 8.9482 280.046 12.0314 7.92281 
+22.72 68.6559 31.3441 276.466 14.5848 8.94926 280.046 12.032 7.92207 
+22.73 68.6463 31.3537 276.462 14.5875 8.95032 280.046 12.0326 7.92134 
+22.74 68.6367 31.3633 276.458 14.5902 8.95138 280.046 12.0333 7.92061 
+22.75 68.6271 31.3729 276.455 14.5929 8.95245 280.046 12.0339 7.91988 
+22.76 68.6175 31.3825 276.451 14.5955 8.95351 280.046 12.0345 7.91915 
+22.77 68.6079 31.3921 276.447 14.5982 8.95458 280.046 12.0352 7.91842 
+22.78 68.5982 31.4018 276.443 14.6009 8.95565 280.047 12.0358 7.91768 
+22.79 68.5886 31.4114 276.44 14.6036 8.95671 280.047 12.0364 7.91695 
+22.8 68.579 31.421 276.436 14.6063 8.95779 280.047 12.037 7.91622 
+22.81 68.5694 31.4306 276.432 14.6089 8.95886 280.047 12.0377 7.91549 
+22.82 68.5598 31.4402 276.428 14.6116 8.95993 280.047 12.0383 7.91476 
+22.83 68.5502 31.4498 276.425 14.6143 8.961 280.047 12.0389 7.91403 
+22.84 68.5405 31.4595 276.421 14.617 8.96208 280.047 12.0396 7.9133 
+22.85 68.5309 31.4691 276.417 14.6197 8.96316 280.047 12.0402 7.91258 
+22.86 68.5213 31.4787 276.413 14.6223 8.96424 280.047 12.0408 7.91185 
+22.87 68.5117 31.4883 276.41 14.625 8.96532 280.047 12.0415 7.91112 
+22.88 68.5021 31.4979 276.406 14.6277 8.9664 280.048 12.0421 7.91039 
+22.89 68.4925 31.5075 276.402 14.6304 8.96748 280.048 12.0427 7.90966 
+22.9 68.4828 31.5172 276.398 14.6331 8.96856 280.048 12.0433 7.90893 
+22.91 68.4732 31.5268 276.395 14.6358 8.96965 280.048 12.044 7.90821 
+22.92 68.4636 31.5364 276.391 14.6385 8.97074 280.048 12.0446 7.90748 
+22.93 68.454 31.546 276.387 14.6411 8.97182 280.048 12.0452 7.90675 
+22.94 68.4444 31.5556 276.383 14.6438 8.97291 280.048 12.0459 7.90603 
+22.95 68.4348 31.5652 276.379 14.6465 8.974 280.048 12.0465 7.9053 
+22.96 68.4251 31.5749 276.376 14.6492 8.97509 280.048 12.0471 7.90457 
+22.97 68.4155 31.5845 276.372 14.6519 8.97619 280.048 12.0477 7.90385 
+22.98 68.4059 31.5941 276.368 14.6546 8.97728 280.049 12.0484 7.90312 
+22.99 68.3963 31.6037 276.364 14.6573 8.97838 280.049 12.049 7.9024 
+23 68.3867 31.6133 276.361 14.66 8.97948 280.049 12.0496 7.90167 
+23.01 68.377 31.623 276.357 14.6627 8.98057 280.049 12.0503 7.90095 
+23.02 68.3674 31.6326 276.353 14.6654 8.98167 280.049 12.0509 7.90022 
+23.03 68.3578 31.6422 276.349 14.6681 8.98278 280.049 12.0515 7.8995 
+23.04 68.3482 31.6518 276.345 14.6707 8.98388 280.049 12.0521 7.89877 
+23.05 68.3386 31.6614 276.342 14.6734 8.98498 280.049 12.0528 7.89805 
+23.06 68.329 31.671 276.338 14.6761 8.98609 280.049 12.0534 7.89732 
+23.07 68.3193 31.6807 276.334 14.6788 8.98719 280.049 12.054 7.8966 
+23.08 68.3097 31.6903 276.33 14.6815 8.9883 280.049 12.0547 7.89588 
+23.09 68.3001 31.6999 276.326 14.6842 8.98941 280.05 12.0553 7.89515 
+23.1 68.2905 31.7095 276.323 14.6869 8.99052 280.05 12.0559 7.89443 
+23.11 68.2808 31.7192 276.319 14.6896 8.99163 280.05 12.0565 7.89371 
+23.12 68.2712 31.7288 276.315 14.6923 8.99275 280.05 12.0572 7.89299 
+23.13 68.2616 31.7384 276.311 14.695 8.99386 280.05 12.0578 7.89227 
+23.14 68.252 31.748 276.307 14.6977 8.99498 280.05 12.0584 7.89154 
+23.15 68.2424 31.7576 276.303 14.7004 8.99609 280.05 12.0591 7.89082 
+23.16 68.2327 31.7673 276.3 14.7031 8.99721 280.05 12.0597 7.8901 
+23.17 68.2231 31.7769 276.296 14.7058 8.99833 280.05 12.0603 7.88938 
+23.18 68.2135 31.7865 276.292 14.7085 8.99945 280.05 12.0609 7.88866 
+23.19 68.2039 31.7961 276.288 14.7112 9.00058 280.05 12.0616 7.88794 
+23.2 68.1943 31.8057 276.284 14.7139 9.0017 280.051 12.0622 7.88722 
+23.21 68.1846 31.8154 276.281 14.7166 9.00283 280.051 12.0628 7.8865 
+23.22 68.175 31.825 276.277 14.7193 9.00395 280.051 12.0634 7.88578 
+23.23 68.1654 31.8346 276.273 14.722 9.00508 280.051 12.0641 7.88506 
+23.24 68.1558 31.8442 276.269 14.7247 9.00621 280.051 12.0647 7.88434 
+23.25 68.1461 31.8539 276.265 14.7274 9.00734 280.051 12.0653 7.88362 
+23.26 68.1365 31.8635 276.261 14.7302 9.00847 280.051 12.066 7.8829 
+23.27 68.1269 31.8731 276.258 14.7329 9.00961 280.051 12.0666 7.88219 
+23.28 68.1173 31.8827 276.254 14.7356 9.01074 280.051 12.0672 7.88147 
+23.29 68.1076 31.8924 276.25 14.7383 9.01188 280.051 12.0678 7.88075 
+23.3 68.098 31.902 276.246 14.741 9.01301 280.052 12.0685 7.88003 
+23.31 68.0884 31.9116 276.242 14.7437 9.01415 280.052 12.0691 7.87931 
+23.32 68.0788 31.9212 276.238 14.7464 9.01529 280.052 12.0697 7.8786 
+23.33 68.0692 31.9308 276.234 14.7491 9.01643 280.052 12.0703 7.87788 
+23.34 68.0595 31.9405 276.231 14.7518 9.01758 280.052 12.071 7.87716 
+23.35 68.0499 31.9501 276.227 14.7545 9.01872 280.052 12.0716 7.87645 
+23.36 68.0403 31.9597 276.223 14.7573 9.01987 280.052 12.0722 7.87573 
+23.37 68.0307 31.9693 276.219 14.76 9.02101 280.052 12.0728 7.87502 
+23.38 68.021 31.979 276.215 14.7627 9.02216 280.052 12.0735 7.8743 
+23.39 68.0114 31.9886 276.211 14.7654 9.02331 280.052 12.0741 7.87359 
+23.4 68.0018 31.9982 276.207 14.7681 9.02446 280.052 12.0747 7.87287 
+23.41 67.9922 32.0078 276.204 14.7708 9.02561 280.052 12.0754 7.87216 
+23.42 67.9825 32.0175 276.2 14.7735 9.02677 280.053 12.076 7.87144 
+23.43 67.9729 32.0271 276.196 14.7763 9.02792 280.053 12.0766 7.87073 
+23.44 67.9633 32.0367 276.192 14.779 9.02908 280.053 12.0772 7.87001 
+23.45 67.9537 32.0463 276.188 14.7817 9.03023 280.053 12.0779 7.8693 
+23.46 67.944 32.056 276.184 14.7844 9.03139 280.053 12.0785 7.86859 
+23.47 67.9344 32.0656 276.18 14.7871 9.03255 280.053 12.0791 7.86787 
+23.48 67.9248 32.0752 276.176 14.7899 9.03371 280.053 12.0797 7.86716 
+23.49 67.9151 32.0849 276.173 14.7926 9.03488 280.053 12.0804 7.86645 
+23.5 67.9055 32.0945 276.169 14.7953 9.03604 280.053 12.081 7.86574 
+23.51 67.8959 32.1041 276.165 14.798 9.03721 280.053 12.0816 7.86502 
+23.52 67.8863 32.1137 276.161 14.8007 9.03837 280.053 12.0822 7.86431 
+23.53 67.8766 32.1234 276.157 14.8035 9.03954 280.054 12.0829 7.8636 
+23.54 67.867 32.133 276.153 14.8062 9.04071 280.054 12.0835 7.86289 
+23.55 67.8574 32.1426 276.149 14.8089 9.04188 280.054 12.0841 7.86218 
+23.56 67.8478 32.1522 276.145 14.8116 9.04305 280.054 12.0847 7.86147 
+23.57 67.8381 32.1619 276.141 14.8144 9.04423 280.054 12.0854 7.86076 
+23.58 67.8285 32.1715 276.138 14.8171 9.0454 280.054 12.086 7.86005 
+23.59 67.8189 32.1811 276.134 14.8198 9.04658 280.054 12.0866 7.85934 
+23.6 67.8092 32.1908 276.13 14.8225 9.04775 280.054 12.0872 7.85863 
+23.61 67.7996 32.2004 276.126 14.8253 9.04893 280.054 12.0879 7.85792 
+23.62 67.79 32.21 276.122 14.828 9.05011 280.054 12.0885 7.85721 
+23.63 67.7804 32.2196 276.118 14.8307 9.05129 280.054 12.0891 7.8565 
+23.64 67.7707 32.2293 276.114 14.8335 9.05248 280.054 12.0897 7.85579 
+23.65 67.7611 32.2389 276.11 14.8362 9.05366 280.055 12.0904 7.85508 
+23.66 67.7515 32.2485 276.106 14.8389 9.05485 280.055 12.091 7.85437 
+23.67 67.7418 32.2582 276.102 14.8416 9.05603 280.055 12.0916 7.85367 
+23.68 67.7322 32.2678 276.098 14.8444 9.05722 280.055 12.0922 7.85296 
+23.69 67.7226 32.2774 276.094 14.8471 9.05841 280.055 12.0929 7.85225 
+23.7 67.7129 32.2871 276.091 14.8498 9.0596 280.055 12.0935 7.85154 
+23.71 67.7033 32.2967 276.087 14.8526 9.06079 280.055 12.0941 7.85084 
+23.72 67.6937 32.3063 276.083 14.8553 9.06199 280.055 12.0947 7.85013 
+23.73 67.6841 32.3159 276.079 14.858 9.06318 280.055 12.0954 7.84942 
+23.74 67.6744 32.3256 276.075 14.8608 9.06438 280.055 12.096 7.84872 
+23.75 67.6648 32.3352 276.071 14.8635 9.06558 280.055 12.0966 7.84801 
+23.76 67.6552 32.3448 276.067 14.8663 9.06677 280.055 12.0972 7.84731 
+23.77 67.6455 32.3545 276.063 14.869 9.06798 280.056 12.0979 7.8466 
+23.78 67.6359 32.3641 276.059 14.8717 9.06918 280.056 12.0985 7.8459 
+23.79 67.6263 32.3737 276.055 14.8745 9.07038 280.056 12.0991 7.84519 
+23.8 67.6166 32.3834 276.051 14.8772 9.07158 280.056 12.0997 7.84449 
+23.81 67.607 32.393 276.047 14.8799 9.07279 280.056 12.1004 7.84378 
+23.82 67.5974 32.4026 276.043 14.8827 9.074 280.056 12.101 7.84308 
+23.83 67.5877 32.4123 276.039 14.8854 9.0752 280.056 12.1016 7.84237 
+23.84 67.5781 32.4219 276.035 14.8882 9.07641 280.056 12.1022 7.84167 
+23.85 67.5685 32.4315 276.031 14.8909 9.07762 280.056 12.1029 7.84097 
+23.86 67.5588 32.4412 276.028 14.8936 9.07884 280.056 12.1035 7.84027 
+23.87 67.5492 32.4508 276.024 14.8964 9.08005 280.056 12.1041 7.83956 
+23.88 67.5396 32.4604 276.02 14.8991 9.08127 280.056 12.1047 7.83886 
+23.89 67.5299 32.4701 276.016 14.9019 9.08248 280.056 12.1054 7.83816 
+23.9 67.5203 32.4797 276.012 14.9046 9.0837 280.057 12.106 7.83746 
+23.91 67.5107 32.4893 276.008 14.9074 9.08492 280.057 12.1066 7.83675 
+23.92 67.501 32.499 276.004 14.9101 9.08614 280.057 12.1072 7.83605 
+23.93 67.4914 32.5086 276 14.9129 9.08736 280.057 12.1079 7.83535 
+23.94 67.4818 32.5182 275.996 14.9156 9.08858 280.057 12.1085 7.83465 
+23.95 67.4721 32.5279 275.992 14.9184 9.08981 280.057 12.1091 7.83395 
+23.96 67.4625 32.5375 275.988 14.9211 9.09103 280.057 12.1097 7.83325 
+23.97 67.4529 32.5471 275.984 14.9239 9.09226 280.057 12.1104 7.83255 
+23.98 67.4432 32.5568 275.98 14.9266 9.09349 280.057 12.111 7.83185 
+23.99 67.4336 32.5664 275.976 14.9294 9.09472 280.057 12.1116 7.83115 
+24 67.424 32.576 275.972 14.9321 9.09595 280.057 12.1122 7.83045 
+24.01 67.4143 32.5857 275.968 14.9349 9.09718 280.057 12.1129 7.82975 
+24.02 67.4047 32.5953 275.964 14.9376 9.09841 280.057 12.1135 7.82906 
+24.03 67.3951 32.6049 275.96 14.9404 9.09965 280.058 12.1141 7.82836 
+24.04 67.3854 32.6146 275.956 14.9431 9.10089 280.058 12.1147 7.82766 
+24.05 67.3758 32.6242 275.952 14.9459 9.10212 280.058 12.1153 7.82696 
+24.06 67.3662 32.6338 275.948 14.9486 9.10336 280.058 12.116 7.82626 
+24.07 67.3565 32.6435 275.944 14.9514 9.1046 280.058 12.1166 7.82557 
+24.08 67.3469 32.6531 275.94 14.9541 9.10584 280.058 12.1172 7.82487 
+24.09 67.3372 32.6628 275.936 14.9569 9.10709 280.058 12.1178 7.82417 
+24.1 67.3276 32.6724 275.932 14.9596 9.10833 280.058 12.1185 7.82348 
+24.11 67.318 32.682 275.928 14.9624 9.10958 280.058 12.1191 7.82278 
+24.12 67.3083 32.6917 275.924 14.9652 9.11082 280.058 12.1197 7.82208 
+24.13 67.2987 32.7013 275.92 14.9679 9.11207 280.058 12.1203 7.82139 
+24.14 67.2891 32.7109 275.916 14.9707 9.11332 280.058 12.121 7.82069 
+24.15 67.2794 32.7206 275.912 14.9734 9.11457 280.058 12.1216 7.82 
+24.16 67.2698 32.7302 275.908 14.9762 9.11582 280.058 12.1222 7.8193 
+24.17 67.2602 32.7398 275.904 14.979 9.11708 280.059 12.1228 7.81861 
+24.18 67.2505 32.7495 275.9 14.9817 9.11833 280.059 12.1234 7.81791 
+24.19 67.2409 32.7591 275.896 14.9845 9.11959 280.059 12.1241 7.81722 
+24.2 67.2312 32.7688 275.892 14.9872 9.12085 280.059 12.1247 7.81653 
+24.21 67.2216 32.7784 275.888 14.99 9.12211 280.059 12.1253 7.81583 
+24.22 67.212 32.788 275.884 14.9928 9.12337 280.059 12.1259 7.81514 
+24.23 67.2023 32.7977 275.88 14.9955 9.12463 280.059 12.1266 7.81445 
+24.24 67.1927 32.8073 275.876 14.9983 9.12589 280.059 12.1272 7.81375 
+24.25 67.183 32.817 275.872 15.0011 9.12716 280.059 12.1278 7.81306 
+24.26 67.1734 32.8266 275.868 15.0038 9.12842 280.059 12.1284 7.81237 
+24.27 67.1638 32.8362 275.864 15.0066 9.12969 280.059 12.1291 7.81168 
+24.28 67.1541 32.8459 275.86 15.0094 9.13096 280.059 12.1297 7.81099 
+24.29 67.1445 32.8555 275.856 15.0121 9.13223 280.059 12.1303 7.81029 
+24.3 67.1349 32.8651 275.852 15.0149 9.1335 280.059 12.1309 7.8096 
+24.31 67.1252 32.8748 275.848 15.0177 9.13477 280.06 12.1315 7.80891 
+24.32 67.1156 32.8844 275.844 15.0204 9.13604 280.06 12.1322 7.80822 
+24.33 67.1059 32.8941 275.839 15.0232 9.13732 280.06 12.1328 7.80753 
+24.34 67.0963 32.9037 275.835 15.026 9.1386 280.06 12.1334 7.80684 
+24.35 67.0867 32.9133 275.831 15.0288 9.13987 280.06 12.134 7.80615 
+24.36 67.077 32.923 275.827 15.0315 9.14115 280.06 12.1347 7.80546 
+24.37 67.0674 32.9326 275.823 15.0343 9.14243 280.06 12.1353 7.80477 
+24.38 67.0577 32.9423 275.819 15.0371 9.14372 280.06 12.1359 7.80408 
+24.39 67.0481 32.9519 275.815 15.0398 9.145 280.06 12.1365 7.8034 
+24.4 67.0385 32.9615 275.811 15.0426 9.14628 280.06 12.1371 7.80271 
+24.41 67.0288 32.9712 275.807 15.0454 9.14757 280.06 12.1378 7.80202 
+24.42 67.0192 32.9808 275.803 15.0482 9.14886 280.06 12.1384 7.80133 
+24.43 67.0095 32.9905 275.799 15.051 9.15014 280.06 12.139 7.80064 
+24.44 66.9999 33.0001 275.795 15.0537 9.15143 280.06 12.1396 7.79996 
+24.45 66.9902 33.0098 275.791 15.0565 9.15273 280.06 12.1403 7.79927 
+24.46 66.9806 33.0194 275.787 15.0593 9.15402 280.061 12.1409 7.79858 
+24.47 66.971 33.029 275.783 15.0621 9.15531 280.061 12.1415 7.7979 
+24.48 66.9613 33.0387 275.779 15.0648 9.15661 280.061 12.1421 7.79721 
+24.49 66.9517 33.0483 275.774 15.0676 9.1579 280.061 12.1427 7.79652 
+24.5 66.942 33.058 275.77 15.0704 9.1592 280.061 12.1434 7.79584 
+24.51 66.9324 33.0676 275.766 15.0732 9.1605 280.061 12.144 7.79515 
+24.52 66.9228 33.0772 275.762 15.076 9.1618 280.061 12.1446 7.79447 
+24.53 66.9131 33.0869 275.758 15.0787 9.1631 280.061 12.1452 7.79378 
+24.54 66.9035 33.0965 275.754 15.0815 9.16441 280.061 12.1459 7.7931 
+24.55 66.8938 33.1062 275.75 15.0843 9.16571 280.061 12.1465 7.79241 
+24.56 66.8842 33.1158 275.746 15.0871 9.16702 280.061 12.1471 7.79173 
+24.57 66.8745 33.1255 275.742 15.0899 9.16832 280.061 12.1477 7.79105 
+24.58 66.8649 33.1351 275.738 15.0927 9.16963 280.061 12.1483 7.79036 
+24.59 66.8553 33.1447 275.734 15.0955 9.17094 280.061 12.149 7.78968 
+24.6 66.8456 33.1544 275.73 15.0982 9.17225 280.061 12.1496 7.789 
+24.61 66.836 33.164 275.725 15.101 9.17357 280.061 12.1502 7.78831 
+24.62 66.8263 33.1737 275.721 15.1038 9.17488 280.062 12.1508 7.78763 
+24.63 66.8167 33.1833 275.717 15.1066 9.1762 280.062 12.1515 7.78695 
+24.64 66.807 33.193 275.713 15.1094 9.17751 280.062 12.1521 7.78627 
+24.65 66.7974 33.2026 275.709 15.1122 9.17883 280.062 12.1527 7.78559 
+24.66 66.7877 33.2123 275.705 15.115 9.18015 280.062 12.1533 7.7849 
+24.67 66.7781 33.2219 275.701 15.1178 9.18147 280.062 12.1539 7.78422 
+24.68 66.7685 33.2315 275.697 15.1206 9.18279 280.062 12.1546 7.78354 
+24.69 66.7588 33.2412 275.693 15.1233 9.18411 280.062 12.1552 7.78286 
+24.7 66.7492 33.2508 275.688 15.1261 9.18544 280.062 12.1558 7.78218 
+24.71 66.7395 33.2605 275.684 15.1289 9.18677 280.062 12.1564 7.7815 
+24.72 66.7299 33.2701 275.68 15.1317 9.18809 280.062 12.157 7.78082 
+24.73 66.7202 33.2798 275.676 15.1345 9.18942 280.062 12.1577 7.78014 
+24.74 66.7106 33.2894 275.672 15.1373 9.19075 280.062 12.1583 7.77946 
+24.75 66.7009 33.2991 275.668 15.1401 9.19208 280.062 12.1589 7.77879 
+24.76 66.6913 33.3087 275.664 15.1429 9.19342 280.062 12.1595 7.77811 
+24.77 66.6816 33.3184 275.66 15.1457 9.19475 280.062 12.1602 7.77743 
+24.78 66.672 33.328 275.655 15.1485 9.19608 280.062 12.1608 7.77675 
+24.79 66.6624 33.3376 275.651 15.1513 9.19742 280.063 12.1614 7.77607 
+24.8 66.6527 33.3473 275.647 15.1541 9.19876 280.063 12.162 7.7754 
+24.81 66.6431 33.3569 275.643 15.1569 9.2001 280.063 12.1626 7.77472 
+24.82 66.6334 33.3666 275.639 15.1597 9.20144 280.063 12.1633 7.77404 
+24.83 66.6238 33.3762 275.635 15.1625 9.20278 280.063 12.1639 7.77337 
+24.84 66.6141 33.3859 275.631 15.1653 9.20413 280.063 12.1645 7.77269 
+24.85 66.6045 33.3955 275.626 15.1681 9.20547 280.063 12.1651 7.77201 
+24.86 66.5948 33.4052 275.622 15.1709 9.20682 280.063 12.1657 7.77134 
+24.87 66.5852 33.4148 275.618 15.1737 9.20816 280.063 12.1664 7.77066 
+24.88 66.5755 33.4245 275.614 15.1765 9.20951 280.063 12.167 7.76999 
+24.89 66.5659 33.4341 275.61 15.1793 9.21086 280.063 12.1676 7.76931 
+24.9 66.5562 33.4438 275.606 15.1821 9.21221 280.063 12.1682 7.76864 
+24.91 66.5466 33.4534 275.602 15.1849 9.21357 280.063 12.1688 7.76796 
+24.92 66.5369 33.4631 275.597 15.1877 9.21492 280.063 12.1695 7.76729 
+24.93 66.5273 33.4727 275.593 15.1905 9.21628 280.063 12.1701 7.76662 
+24.94 66.5176 33.4824 275.589 15.1933 9.21763 280.063 12.1707 7.76594 
+24.95 66.508 33.492 275.585 15.1961 9.21899 280.063 12.1713 7.76527 
+24.96 66.4983 33.5017 275.581 15.199 9.22035 280.063 12.172 7.7646 
+24.97 66.4887 33.5113 275.577 15.2018 9.22171 280.064 12.1726 7.76392 
+24.98 66.4791 33.5209 275.572 15.2046 9.22307 280.064 12.1732 7.76325 
+24.99 66.4694 33.5306 275.568 15.2074 9.22444 280.064 12.1738 7.76258 
+25 66.4598 33.5402 275.564 15.2102 9.2258 280.064 12.1744 7.76191 
+25.01 66.4501 33.5499 275.56 15.213 9.22717 280.064 12.1751 7.76123 
+25.02 66.4405 33.5595 275.556 15.2158 9.22854 280.064 12.1757 7.76056 
+25.03 66.4308 33.5692 275.551 15.2186 9.2299 280.064 12.1763 7.75989 
+25.04 66.4212 33.5788 275.547 15.2214 9.23127 280.064 12.1769 7.75922 
+25.05 66.4115 33.5885 275.543 15.2242 9.23265 280.064 12.1775 7.75855 
+25.06 66.4019 33.5981 275.539 15.2271 9.23402 280.064 12.1782 7.75788 
+25.07 66.3922 33.6078 275.535 15.2299 9.23539 280.064 12.1788 7.75721 
+25.08 66.3826 33.6174 275.531 15.2327 9.23677 280.064 12.1794 7.75654 
+25.09 66.3729 33.6271 275.526 15.2355 9.23815 280.064 12.18 7.75587 
+25.1 66.3633 33.6367 275.522 15.2383 9.23952 280.064 12.1806 7.7552 
+25.11 66.3536 33.6464 275.518 15.2411 9.2409 280.064 12.1813 7.75453 
+25.12 66.344 33.656 275.514 15.244 9.24228 280.064 12.1819 7.75387 
+25.13 66.3343 33.6657 275.51 15.2468 9.24367 280.064 12.1825 7.7532 
+25.14 66.3247 33.6753 275.505 15.2496 9.24505 280.064 12.1831 7.75253 
+25.15 66.315 33.685 275.501 15.2524 9.24644 280.064 12.1837 7.75186 
+25.16 66.3053 33.6947 275.497 15.2552 9.24782 280.064 12.1844 7.75119 
+25.17 66.2957 33.7043 275.493 15.2581 9.24921 280.064 12.185 7.75053 
+25.18 66.286 33.714 275.489 15.2609 9.2506 280.065 12.1856 7.74986 
+25.19 66.2764 33.7236 275.484 15.2637 9.25199 280.065 12.1862 7.74919 
+25.2 66.2667 33.7333 275.48 15.2665 9.25338 280.065 12.1869 7.74853 
+25.21 66.2571 33.7429 275.476 15.2693 9.25477 280.065 12.1875 7.74786 
+25.22 66.2474 33.7526 275.472 15.2722 9.25617 280.065 12.1881 7.7472 
+25.23 66.2378 33.7622 275.467 15.275 9.25756 280.065 12.1887 7.74653 
+25.24 66.2281 33.7719 275.463 15.2778 9.25896 280.065 12.1893 7.74587 
+25.25 66.2185 33.7815 275.459 15.2806 9.26036 280.065 12.19 7.7452 
+25.26 66.2088 33.7912 275.455 15.2835 9.26176 280.065 12.1906 7.74454 
+25.27 66.1992 33.8008 275.451 15.2863 9.26316 280.065 12.1912 7.74387 
+25.28 66.1895 33.8105 275.446 15.2891 9.26456 280.065 12.1918 7.74321 
+25.29 66.1799 33.8201 275.442 15.2919 9.26597 280.065 12.1924 7.74254 
+25.3 66.1702 33.8298 275.438 15.2948 9.26737 280.065 12.1931 7.74188 
+25.31 66.1606 33.8394 275.434 15.2976 9.26878 280.065 12.1937 7.74122 
+25.32 66.1509 33.8491 275.429 15.3004 9.27018 280.065 12.1943 7.74056 
+25.33 66.1413 33.8587 275.425 15.3033 9.27159 280.065 12.1949 7.73989 
+25.34 66.1316 33.8684 275.421 15.3061 9.273 280.065 12.1955 7.73923 
+25.35 66.122 33.878 275.417 15.3089 9.27442 280.065 12.1962 7.73857 
+25.36 66.1123 33.8877 275.412 15.3118 9.27583 280.065 12.1968 7.73791 
+25.37 66.1026 33.8974 275.408 15.3146 9.27724 280.065 12.1974 7.73725 
+25.38 66.093 33.907 275.404 15.3174 9.27866 280.065 12.198 7.73658 
+25.39 66.0833 33.9167 275.4 15.3203 9.28008 280.065 12.1986 7.73592 
+25.4 66.0737 33.9263 275.395 15.3231 9.28149 280.065 12.1993 7.73526 
+25.41 66.064 33.936 275.391 15.3259 9.28291 280.066 12.1999 7.7346 
+25.42 66.0544 33.9456 275.387 15.3288 9.28434 280.066 12.2005 7.73394 
+25.43 66.0447 33.9553 275.383 15.3316 9.28576 280.066 12.2011 7.73328 
+25.44 66.0351 33.9649 275.378 15.3344 9.28718 280.066 12.2017 7.73262 
+25.45 66.0254 33.9746 275.374 15.3373 9.28861 280.066 12.2024 7.73196 
+25.46 66.0158 33.9842 275.37 15.3401 9.29003 280.066 12.203 7.73131 
+25.47 66.0061 33.9939 275.366 15.3429 9.29146 280.066 12.2036 7.73065 
+25.48 65.9964 34.0036 275.361 15.3458 9.29289 280.066 12.2042 7.72999 
+25.49 65.9868 34.0132 275.357 15.3486 9.29432 280.066 12.2048 7.72933 
+25.5 65.9771 34.0229 275.353 15.3515 9.29575 280.066 12.2055 7.72867 
+25.51 65.9675 34.0325 275.349 15.3543 9.29719 280.066 12.2061 7.72802 
+25.52 65.9578 34.0422 275.344 15.3571 9.29862 280.066 12.2067 7.72736 
+25.53 65.9482 34.0518 275.34 15.36 9.30006 280.066 12.2073 7.7267 
+25.54 65.9385 34.0615 275.336 15.3628 9.30149 280.066 12.2079 7.72604 
+25.55 65.9289 34.0711 275.331 15.3657 9.30293 280.066 12.2086 7.72539 
+25.56 65.9192 34.0808 275.327 15.3685 9.30437 280.066 12.2092 7.72473 
+25.57 65.9095 34.0905 275.323 15.3714 9.30581 280.066 12.2098 7.72408 
+25.58 65.8999 34.1001 275.319 15.3742 9.30726 280.066 12.2104 7.72342 
+25.59 65.8902 34.1098 275.314 15.377 9.3087 280.066 12.211 7.72277 
+25.6 65.8806 34.1194 275.31 15.3799 9.31015 280.066 12.2117 7.72211 
+25.61 65.8709 34.1291 275.306 15.3827 9.31159 280.066 12.2123 7.72146 
+25.62 65.8613 34.1387 275.301 15.3856 9.31304 280.066 12.2129 7.7208 
+25.63 65.8516 34.1484 275.297 15.3884 9.31449 280.066 12.2135 7.72015 
+25.64 65.8419 34.1581 275.293 15.3913 9.31594 280.066 12.2141 7.71949 
+25.65 65.8323 34.1677 275.288 15.3941 9.31739 280.066 12.2148 7.71884 
+25.66 65.8226 34.1774 275.284 15.397 9.31885 280.066 12.2154 7.71819 
+25.67 65.813 34.187 275.28 15.3998 9.3203 280.066 12.216 7.71753 
+25.68 65.8033 34.1967 275.276 15.4027 9.32176 280.066 12.2166 7.71688 
+25.69 65.7937 34.2063 275.271 15.4055 9.32321 280.067 12.2172 7.71623 
+25.7 65.784 34.216 275.267 15.4084 9.32467 280.067 12.2179 7.71558 
+25.71 65.7743 34.2257 275.263 15.4112 9.32613 280.067 12.2185 7.71493 
+25.72 65.7647 34.2353 275.258 15.4141 9.32759 280.067 12.2191 7.71427 
+25.73 65.755 34.245 275.254 15.4169 9.32906 280.067 12.2197 7.71362 
+25.74 65.7454 34.2546 275.25 15.4198 9.33052 280.067 12.2203 7.71297 
+25.75 65.7357 34.2643 275.245 15.4227 9.33199 280.067 12.221 7.71232 
+25.76 65.726 34.274 275.241 15.4255 9.33345 280.067 12.2216 7.71167 
+25.77 65.7164 34.2836 275.237 15.4284 9.33492 280.067 12.2222 7.71102 
+25.78 65.7067 34.2933 275.232 15.4312 9.33639 280.067 12.2228 7.71037 
+25.79 65.6971 34.3029 275.228 15.4341 9.33786 280.067 12.2234 7.70972 
+25.8 65.6874 34.3126 275.224 15.4369 9.33933 280.067 12.2241 7.70907 
+25.81 65.6777 34.3223 275.219 15.4398 9.34081 280.067 12.2247 7.70842 
+25.82 65.6681 34.3319 275.215 15.4427 9.34228 280.067 12.2253 7.70778 
+25.83 65.6584 34.3416 275.211 15.4455 9.34376 280.067 12.2259 7.70713 
+25.84 65.6488 34.3512 275.206 15.4484 9.34523 280.067 12.2265 7.70648 
+25.85 65.6391 34.3609 275.202 15.4512 9.34671 280.067 12.2272 7.70583 
+25.86 65.6294 34.3706 275.198 15.4541 9.34819 280.067 12.2278 7.70519 
+25.87 65.6198 34.3802 275.193 15.457 9.34968 280.067 12.2284 7.70454 
+25.88 65.6101 34.3899 275.189 15.4598 9.35116 280.067 12.229 7.70389 
+25.89 65.6005 34.3995 275.185 15.4627 9.35264 280.067 12.2296 7.70324 
+25.9 65.5908 34.4092 275.18 15.4656 9.35413 280.067 12.2303 7.7026 
+25.91 65.5811 34.4189 275.176 15.4684 9.35562 280.067 12.2309 7.70195 
+25.92 65.5715 34.4285 275.172 15.4713 9.3571 280.067 12.2315 7.70131 
+25.93 65.5618 34.4382 275.167 15.4741 9.35859 280.067 12.2321 7.70066 
+25.94 65.5522 34.4478 275.163 15.477 9.36008 280.067 12.2327 7.70002 
+25.95 65.5425 34.4575 275.159 15.4799 9.36158 280.067 12.2334 7.69937 
+25.96 65.5328 34.4672 275.154 15.4827 9.36307 280.067 12.234 7.69873 
+25.97 65.5232 34.4768 275.15 15.4856 9.36456 280.067 12.2346 7.69808 
+25.98 65.5135 34.4865 275.145 15.4885 9.36606 280.067 12.2352 7.69744 
+25.99 65.5039 34.4961 275.141 15.4914 9.36756 280.067 12.2358 7.6968 
+26 65.4942 34.5058 275.137 15.4942 9.36906 280.067 12.2365 7.69615 
+26.01 65.4845 34.5155 275.132 15.4971 9.37056 280.067 12.2371 7.69551 
+26.02 65.4749 34.5251 275.128 15.5 9.37206 280.067 12.2377 7.69487 
+26.03 65.4652 34.5348 275.124 15.5028 9.37356 280.067 12.2383 7.69422 
+26.04 65.4556 34.5444 275.119 15.5057 9.37507 280.067 12.2389 7.69358 
+26.05 65.4459 34.5541 275.115 15.5086 9.37657 280.067 12.2396 7.69294 
+26.06 65.4362 34.5638 275.11 15.5115 9.37808 280.068 12.2402 7.6923 
+26.07 65.4266 34.5734 275.106 15.5143 9.37959 280.068 12.2408 7.69166 
+26.08 65.4169 34.5831 275.102 15.5172 9.3811 280.068 12.2414 7.69102 
+26.09 65.4072 34.5928 275.097 15.5201 9.38261 280.068 12.242 7.69038 
+26.1 65.3976 34.6024 275.093 15.523 9.38412 280.068 12.2427 7.68974 
+26.11 65.3879 34.6121 275.089 15.5258 9.38563 280.068 12.2433 7.68909 
+26.12 65.3783 34.6217 275.084 15.5287 9.38715 280.068 12.2439 7.68846 
+26.13 65.3686 34.6314 275.08 15.5316 9.38867 280.068 12.2445 7.68782 
+26.14 65.3589 34.6411 275.075 15.5345 9.39018 280.068 12.2451 7.68718 
+26.15 65.3493 34.6507 275.071 15.5373 9.3917 280.068 12.2458 7.68654 
+26.16 65.3396 34.6604 275.067 15.5402 9.39322 280.068 12.2464 7.6859 
+26.17 65.3299 34.6701 275.062 15.5431 9.39475 280.068 12.247 7.68526 
+26.18 65.3203 34.6797 275.058 15.546 9.39627 280.068 12.2476 7.68462 
+26.19 65.3106 34.6894 275.053 15.5489 9.39779 280.068 12.2482 7.68398 
+26.2 65.3009 34.6991 275.049 15.5517 9.39932 280.068 12.2489 7.68335 
+26.21 65.2913 34.7087 275.045 15.5546 9.40085 280.068 12.2495 7.68271 
+26.22 65.2816 34.7184 275.04 15.5575 9.40237 280.068 12.2501 7.68207 
+26.23 65.272 34.728 275.036 15.5604 9.4039 280.068 12.2507 7.68144 
+26.24 65.2623 34.7377 275.031 15.5633 9.40544 280.068 12.2513 7.6808 
+26.25 65.2526 34.7474 275.027 15.5662 9.40697 280.068 12.252 7.68016 
+26.26 65.243 34.757 275.022 15.569 9.4085 280.068 12.2526 7.67953 
+26.27 65.2333 34.7667 275.018 15.5719 9.41004 280.068 12.2532 7.67889 
+26.28 65.2236 34.7764 275.014 15.5748 9.41157 280.068 12.2538 7.67826 
+26.29 65.214 34.786 275.009 15.5777 9.41311 280.068 12.2544 7.67762 
+26.3 65.2043 34.7957 275.005 15.5806 9.41465 280.068 12.2551 7.67699 
+26.31 65.1946 34.8054 275 15.5835 9.41619 280.068 12.2557 7.67635 
+26.32 65.185 34.815 274.996 15.5864 9.41773 280.068 12.2563 7.67572 
+26.33 65.1753 34.8247 274.991 15.5893 9.41928 280.068 12.2569 7.67509 
+26.34 65.1656 34.8344 274.987 15.5921 9.42082 280.068 12.2575 7.67445 
+26.35 65.156 34.844 274.983 15.595 9.42237 280.068 12.2582 7.67382 
+26.36 65.1463 34.8537 274.978 15.5979 9.42391 280.068 12.2588 7.67319 
+26.37 65.1366 34.8634 274.974 15.6008 9.42546 280.068 12.2594 7.67256 
+26.38 65.127 34.873 274.969 15.6037 9.42701 280.068 12.26 7.67192 
+26.39 65.1173 34.8827 274.965 15.6066 9.42856 280.068 12.2606 7.67129 
+26.4 65.1076 34.8924 274.96 15.6095 9.43012 280.068 12.2613 7.67066 
+26.41 65.098 34.902 274.956 15.6124 9.43167 280.068 12.2619 7.67003 
+26.42 65.0883 34.9117 274.951 15.6153 9.43323 280.068 12.2625 7.6694 
+26.43 65.0786 34.9214 274.947 15.6182 9.43478 280.068 12.2631 7.66877 
+26.44 65.069 34.931 274.943 15.6211 9.43634 280.068 12.2637 7.66814 
+26.45 65.0593 34.9407 274.938 15.624 9.4379 280.068 12.2644 7.66751 
+26.46 65.0496 34.9504 274.934 15.6269 9.43946 280.068 12.265 7.66688 
+26.47 65.04 34.96 274.929 15.6298 9.44102 280.068 12.2656 7.66625 
+26.48 65.0303 34.9697 274.925 15.6327 9.44259 280.068 12.2662 7.66562 
+26.49 65.0206 34.9794 274.92 15.6356 9.44415 280.068 12.2669 7.66499 
+26.5 65.011 34.989 274.916 15.6385 9.44572 280.068 12.2675 7.66436 
+26.51 65.0013 34.9987 274.911 15.6414 9.44729 280.068 12.2681 7.66373 
+26.52 64.9916 35.0084 274.907 15.6443 9.44885 280.068 12.2687 7.6631 
+26.53 64.982 35.018 274.902 15.6472 9.45042 280.068 12.2693 7.66248 
+26.54 64.9723 35.0277 274.898 15.6501 9.452 280.068 12.27 7.66185 
+26.55 64.9626 35.0374 274.893 15.653 9.45357 280.068 12.2706 7.66122 
+26.56 64.953 35.047 274.889 15.6559 9.45514 280.068 12.2712 7.6606 
+26.57 64.9433 35.0567 274.885 15.6588 9.45672 280.068 12.2718 7.65997 
+26.58 64.9336 35.0664 274.88 15.6617 9.4583 280.068 12.2724 7.65934 
+26.59 64.924 35.076 274.876 15.6646 9.45987 280.068 12.2731 7.65872 
+26.6 64.9143 35.0857 274.871 15.6675 9.46145 280.068 12.2737 7.65809 
+26.61 64.9046 35.0954 274.867 15.6704 9.46303 280.068 12.2743 7.65747 
+26.62 64.895 35.105 274.862 15.6733 9.46462 280.068 12.2749 7.65684 
+26.63 64.8853 35.1147 274.858 15.6762 9.4662 280.068 12.2755 7.65622 
+26.64 64.8756 35.1244 274.853 15.6791 9.46779 280.068 12.2762 7.65559 
+26.65 64.866 35.134 274.849 15.682 9.46937 280.068 12.2768 7.65497 
+26.66 64.8563 35.1437 274.844 15.6849 9.47096 280.068 12.2774 7.65434 
+26.67 64.8466 35.1534 274.84 15.6878 9.47255 280.068 12.278 7.65372 
+26.68 64.837 35.163 274.835 15.6908 9.47414 280.068 12.2786 7.6531 
+26.69 64.8273 35.1727 274.831 15.6937 9.47573 280.068 12.2793 7.65247 
+26.7 64.8176 35.1824 274.826 15.6966 9.47732 280.068 12.2799 7.65185 
+26.71 64.8079 35.1921 274.822 15.6995 9.47892 280.068 12.2805 7.65123 
+26.72 64.7983 35.2017 274.817 15.7024 9.48051 280.068 12.2811 7.65061 
+26.73 64.7886 35.2114 274.813 15.7053 9.48211 280.068 12.2817 7.64999 
+26.74 64.7789 35.2211 274.808 15.7082 9.48371 280.068 12.2824 7.64936 
+26.75 64.7693 35.2307 274.804 15.7111 9.48531 280.068 12.283 7.64874 
+26.76 64.7596 35.2404 274.799 15.7141 9.48691 280.068 12.2836 7.64812 
+26.77 64.7499 35.2501 274.795 15.717 9.48851 280.068 12.2842 7.6475 
+26.78 64.7403 35.2597 274.79 15.7199 9.49012 280.068 12.2848 7.64688 
+26.79 64.7306 35.2694 274.785 15.7228 9.49172 280.068 12.2855 7.64626 
+26.8 64.7209 35.2791 274.781 15.7257 9.49333 280.068 12.2861 7.64564 
+26.81 64.7112 35.2888 274.776 15.7286 9.49493 280.068 12.2867 7.64502 
+26.82 64.7016 35.2984 274.772 15.7316 9.49654 280.068 12.2873 7.6444 
+26.83 64.6919 35.3081 274.767 15.7345 9.49815 280.068 12.288 7.64378 
+26.84 64.6822 35.3178 274.763 15.7374 9.49977 280.068 12.2886 7.64317 
+26.85 64.6726 35.3274 274.758 15.7403 9.50138 280.068 12.2892 7.64255 
+26.86 64.6629 35.3371 274.754 15.7432 9.50299 280.068 12.2898 7.64193 
+26.87 64.6532 35.3468 274.749 15.7462 9.50461 280.068 12.2904 7.64131 
+26.88 64.6436 35.3564 274.745 15.7491 9.50623 280.068 12.2911 7.6407 
+26.89 64.6339 35.3661 274.74 15.752 9.50785 280.068 12.2917 7.64008 
+26.9 64.6242 35.3758 274.736 15.7549 9.50947 280.068 12.2923 7.63946 
+26.91 64.6145 35.3855 274.731 15.7579 9.51109 280.068 12.2929 7.63885 
+26.92 64.6049 35.3951 274.727 15.7608 9.51271 280.068 12.2935 7.63823 
+26.93 64.5952 35.4048 274.722 15.7637 9.51433 280.068 12.2942 7.63761 
+26.94 64.5855 35.4145 274.717 15.7666 9.51596 280.068 12.2948 7.637 
+26.95 64.5759 35.4241 274.713 15.7696 9.51759 280.068 12.2954 7.63638 
+26.96 64.5662 35.4338 274.708 15.7725 9.51921 280.068 12.296 7.63577 
+26.97 64.5565 35.4435 274.704 15.7754 9.52084 280.068 12.2966 7.63515 
+26.98 64.5468 35.4532 274.699 15.7783 9.52247 280.068 12.2973 7.63454 
+26.99 64.5372 35.4628 274.695 15.7813 9.52411 280.068 12.2979 7.63393 
+27 64.5275 35.4725 274.69 15.7842 9.52574 280.068 12.2985 7.63331 
+27.01 64.5178 35.4822 274.686 15.7871 9.52737 280.068 12.2991 7.6327 
+27.02 64.5082 35.4918 274.681 15.7901 9.52901 280.068 12.2998 7.63209 
+27.03 64.4985 35.5015 274.676 15.793 9.53065 280.068 12.3004 7.63147 
+27.04 64.4888 35.5112 274.672 15.7959 9.53229 280.068 12.301 7.63086 
+27.05 64.4791 35.5209 274.667 15.7988 9.53393 280.068 12.3016 7.63025 
+27.06 64.4695 35.5305 274.663 15.8018 9.53557 280.068 12.3022 7.62964 
+27.07 64.4598 35.5402 274.658 15.8047 9.53721 280.068 12.3029 7.62903 
+27.08 64.4501 35.5499 274.653 15.8076 9.53885 280.068 12.3035 7.62841 
+27.09 64.4404 35.5596 274.649 15.8106 9.5405 280.068 12.3041 7.6278 
+27.1 64.4308 35.5692 274.644 15.8135 9.54215 280.068 12.3047 7.62719 
+27.11 64.4211 35.5789 274.64 15.8165 9.54379 280.068 12.3053 7.62658 
+27.12 64.4114 35.5886 274.635 15.8194 9.54544 280.068 12.306 7.62597 
+27.13 64.4018 35.5982 274.631 15.8223 9.54709 280.068 12.3066 7.62536 
+27.14 64.3921 35.6079 274.626 15.8253 9.54875 280.068 12.3072 7.62475 
+27.15 64.3824 35.6176 274.621 15.8282 9.5504 280.068 12.3078 7.62415 
+27.16 64.3727 35.6273 274.617 15.8311 9.55206 280.068 12.3085 7.62354 
+27.17 64.3631 35.6369 274.612 15.8341 9.55371 280.068 12.3091 7.62293 
+27.18 64.3534 35.6466 274.608 15.837 9.55537 280.068 12.3097 7.62232 
+27.19 64.3437 35.6563 274.603 15.84 9.55703 280.068 12.3103 7.62171 
+27.2 64.334 35.666 274.598 15.8429 9.55869 280.068 12.3109 7.62111 
+27.21 64.3244 35.6756 274.594 15.8458 9.56035 280.068 12.3116 7.6205 
+27.22 64.3147 35.6853 274.589 15.8488 9.56201 280.068 12.3122 7.61989 
+27.23 64.305 35.695 274.585 15.8517 9.56368 280.068 12.3128 7.61928 
+27.24 64.2953 35.7047 274.58 15.8547 9.56534 280.068 12.3134 7.61868 
+27.25 64.2857 35.7143 274.575 15.8576 9.56701 280.068 12.314 7.61807 
+27.26 64.276 35.724 274.571 15.8606 9.56868 280.068 12.3147 7.61747 
+27.27 64.2663 35.7337 274.566 15.8635 9.57035 280.068 12.3153 7.61686 
+27.28 64.2566 35.7434 274.562 15.8664 9.57202 280.068 12.3159 7.61626 
+27.29 64.247 35.753 274.557 15.8694 9.57369 280.068 12.3165 7.61565 
+27.3 64.2373 35.7627 274.552 15.8723 9.57537 280.068 12.3172 7.61505 
+27.31 64.2276 35.7724 274.548 15.8753 9.57704 280.068 12.3178 7.61444 
+27.32 64.2179 35.7821 274.543 15.8782 9.57872 280.068 12.3184 7.61384 
+27.33 64.2083 35.7917 274.538 15.8812 9.58039 280.068 12.319 7.61324 
+27.34 64.1986 35.8014 274.534 15.8841 9.58207 280.068 12.3196 7.61263 
+27.35 64.1889 35.8111 274.529 15.8871 9.58375 280.068 12.3203 7.61203 
+27.36 64.1792 35.8208 274.525 15.89 9.58544 280.068 12.3209 7.61143 
+27.37 64.1696 35.8304 274.52 15.893 9.58712 280.068 12.3215 7.61083 
+27.38 64.1599 35.8401 274.515 15.8959 9.5888 280.068 12.3221 7.61022 
+27.39 64.1502 35.8498 274.511 15.8989 9.59049 280.068 12.3228 7.60962 
+27.4 64.1405 35.8595 274.506 15.9018 9.59218 280.068 12.3234 7.60902 
+27.41 64.1309 35.8691 274.501 15.9048 9.59387 280.068 12.324 7.60842 
+27.42 64.1212 35.8788 274.497 15.9078 9.59556 280.068 12.3246 7.60782 
+27.43 64.1115 35.8885 274.492 15.9107 9.59725 280.068 12.3252 7.60722 
+27.44 64.1018 35.8982 274.487 15.9137 9.59894 280.068 12.3259 7.60662 
+27.45 64.0922 35.9078 274.483 15.9166 9.60063 280.067 12.3265 7.60602 
+27.46 64.0825 35.9175 274.478 15.9196 9.60233 280.067 12.3271 7.60542 
+27.47 64.0728 35.9272 274.473 15.9225 9.60402 280.067 12.3277 7.60482 
+27.48 64.0631 35.9369 274.469 15.9255 9.60572 280.067 12.3284 7.60422 
+27.49 64.0535 35.9465 274.464 15.9284 9.60742 280.067 12.329 7.60362 
+27.5 64.0438 35.9562 274.459 15.9314 9.60912 280.067 12.3296 7.60302 
+27.51 64.0341 35.9659 274.455 15.9344 9.61082 280.067 12.3302 7.60243 
+27.52 64.0244 35.9756 274.45 15.9373 9.61253 280.067 12.3308 7.60183 
+27.53 64.0147 35.9853 274.445 15.9403 9.61423 280.067 12.3315 7.60123 
+27.54 64.0051 35.9949 274.441 15.9432 9.61594 280.067 12.3321 7.60063 
+27.55 63.9954 36.0046 274.436 15.9462 9.61765 280.067 12.3327 7.60004 
+27.56 63.9857 36.0143 274.431 15.9492 9.61936 280.067 12.3333 7.59944 
+27.57 63.976 36.024 274.427 15.9521 9.62107 280.067 12.334 7.59884 
+27.58 63.9664 36.0336 274.422 15.9551 9.62278 280.067 12.3346 7.59825 
+27.59 63.9567 36.0433 274.417 15.9581 9.62449 280.067 12.3352 7.59765 
+27.6 63.947 36.053 274.413 15.961 9.6262 280.067 12.3358 7.59706 
+27.61 63.9373 36.0627 274.408 15.964 9.62792 280.067 12.3364 7.59646 
+27.62 63.9277 36.0723 274.403 15.967 9.62964 280.067 12.3371 7.59587 
+27.63 63.918 36.082 274.399 15.9699 9.63135 280.067 12.3377 7.59527 
+27.64 63.9083 36.0917 274.394 15.9729 9.63307 280.067 12.3383 7.59468 
+27.65 63.8986 36.1014 274.389 15.9759 9.63479 280.067 12.3389 7.59409 
+27.66 63.8889 36.1111 274.385 15.9788 9.63652 280.067 12.3396 7.59349 
+27.67 63.8793 36.1207 274.38 15.9818 9.63824 280.067 12.3402 7.5929 
+27.68 63.8696 36.1304 274.375 15.9848 9.63997 280.067 12.3408 7.59231 
+27.69 63.8599 36.1401 274.371 15.9877 9.64169 280.067 12.3414 7.59172 
+27.7 63.8502 36.1498 274.366 15.9907 9.64342 280.067 12.3421 7.59112 
+27.71 63.8406 36.1594 274.361 15.9937 9.64515 280.067 12.3427 7.59053 
+27.72 63.8309 36.1691 274.356 15.9966 9.64688 280.067 12.3433 7.58994 
+27.73 63.8212 36.1788 274.352 15.9996 9.64861 280.067 12.3439 7.58935 
+27.74 63.8115 36.1885 274.347 16.0026 9.65034 280.067 12.3445 7.58876 
+27.75 63.8018 36.1982 274.342 16.0056 9.65208 280.067 12.3452 7.58817 
+27.76 63.7922 36.2078 274.338 16.0085 9.65381 280.067 12.3458 7.58758 
+27.77 63.7825 36.2175 274.333 16.0115 9.65555 280.067 12.3464 7.58699 
+27.78 63.7728 36.2272 274.328 16.0145 9.65729 280.067 12.347 7.5864 
+27.79 63.7631 36.2369 274.324 16.0175 9.65903 280.067 12.3477 7.58581 
+27.8 63.7534 36.2466 274.319 16.0204 9.66077 280.066 12.3483 7.58522 
+27.81 63.7438 36.2562 274.314 16.0234 9.66251 280.066 12.3489 7.58463 
+27.82 63.7341 36.2659 274.309 16.0264 9.66426 280.066 12.3495 7.58404 
+27.83 63.7244 36.2756 274.305 16.0294 9.666 280.066 12.3502 7.58346 
+27.84 63.7147 36.2853 274.3 16.0324 9.66775 280.066 12.3508 7.58287 
+27.85 63.7051 36.2949 274.295 16.0353 9.6695 280.066 12.3514 7.58228 
+27.86 63.6954 36.3046 274.29 16.0383 9.67124 280.066 12.352 7.58169 
+27.87 63.6857 36.3143 274.286 16.0413 9.67299 280.066 12.3527 7.58111 
+27.88 63.676 36.324 274.281 16.0443 9.67475 280.066 12.3533 7.58052 
+27.89 63.6663 36.3337 274.276 16.0473 9.6765 280.066 12.3539 7.57994 
+27.9 63.6567 36.3433 274.272 16.0502 9.67825 280.066 12.3545 7.57935 
+27.91 63.647 36.353 274.267 16.0532 9.68001 280.066 12.3552 7.57876 
+27.92 63.6373 36.3627 274.262 16.0562 9.68177 280.066 12.3558 7.57818 
+27.93 63.6276 36.3724 274.257 16.0592 9.68353 280.066 12.3564 7.57759 
+27.94 63.6179 36.3821 274.253 16.0622 9.68529 280.066 12.357 7.57701 
+27.95 63.6083 36.3917 274.248 16.0652 9.68705 280.066 12.3576 7.57643 
+27.96 63.5986 36.4014 274.243 16.0681 9.68881 280.066 12.3583 7.57584 
+27.97 63.5889 36.4111 274.238 16.0711 9.69057 280.066 12.3589 7.57526 
+27.98 63.5792 36.4208 274.234 16.0741 9.69234 280.066 12.3595 7.57467 
+27.99 63.5695 36.4305 274.229 16.0771 9.69411 280.066 12.3601 7.57409 
+28 63.5599 36.4401 274.224 16.0801 9.69587 280.066 12.3608 7.57351 
+28.01 63.5502 36.4498 274.219 16.0831 9.69764 280.066 12.3614 7.57293 
+28.02 63.5405 36.4595 274.215 16.0861 9.69941 280.066 12.362 7.57235 
+28.03 63.5308 36.4692 274.21 16.0891 9.70119 280.066 12.3626 7.57176 
+28.04 63.5211 36.4789 274.205 16.092 9.70296 280.066 12.3633 7.57118 
+28.05 63.5115 36.4885 274.2 16.095 9.70473 280.066 12.3639 7.5706 
+28.06 63.5018 36.4982 274.195 16.098 9.70651 280.065 12.3645 7.57002 
+28.07 63.4921 36.5079 274.191 16.101 9.70829 280.065 12.3651 7.56944 
+28.08 63.4824 36.5176 274.186 16.104 9.71007 280.065 12.3658 7.56886 
+28.09 63.4727 36.5273 274.181 16.107 9.71185 280.065 12.3664 7.56828 
+28.1 63.463 36.537 274.176 16.11 9.71363 280.065 12.367 7.5677 
+28.11 63.4534 36.5466 274.172 16.113 9.71541 280.065 12.3676 7.56712 
+28.12 63.4437 36.5563 274.167 16.116 9.7172 280.065 12.3683 7.56654 
+28.13 63.434 36.566 274.162 16.119 9.71898 280.065 12.3689 7.56596 
+28.14 63.4243 36.5757 274.157 16.122 9.72077 280.065 12.3695 7.56539 
+28.15 63.4146 36.5854 274.152 16.125 9.72256 280.065 12.3701 7.56481 
+28.16 63.405 36.595 274.148 16.128 9.72435 280.065 12.3708 7.56423 
+28.17 63.3953 36.6047 274.143 16.131 9.72614 280.065 12.3714 7.56365 
+28.18 63.3856 36.6144 274.138 16.134 9.72793 280.065 12.372 7.56308 
+28.19 63.3759 36.6241 274.133 16.137 9.72972 280.065 12.3726 7.5625 
+28.2 63.3662 36.6338 274.129 16.14 9.73152 280.065 12.3733 7.56192 
+28.21 63.3566 36.6434 274.124 16.143 9.73332 280.065 12.3739 7.56135 
+28.22 63.3469 36.6531 274.119 16.146 9.73511 280.065 12.3745 7.56077 
+28.23 63.3372 36.6628 274.114 16.149 9.73691 280.065 12.3751 7.5602 
+28.24 63.3275 36.6725 274.109 16.152 9.73871 280.065 12.3758 7.55962 
+28.25 63.3178 36.6822 274.104 16.155 9.74051 280.065 12.3764 7.55905 
+28.26 63.3081 36.6919 274.1 16.158 9.74232 280.065 12.377 7.55847 
+28.27 63.2985 36.7015 274.095 16.161 9.74412 280.064 12.3776 7.5579 
+28.28 63.2888 36.7112 274.09 16.164 9.74593 280.064 12.3783 7.55733 
+28.29 63.2791 36.7209 274.085 16.167 9.74773 280.064 12.3789 7.55675 
+28.3 63.2694 36.7306 274.08 16.17 9.74954 280.064 12.3795 7.55618 
+28.31 63.2597 36.7403 274.076 16.173 9.75135 280.064 12.3801 7.55561 
+28.32 63.25 36.75 274.071 16.176 9.75316 280.064 12.3808 7.55503 
+28.33 63.2404 36.7596 274.066 16.179 9.75498 280.064 12.3814 7.55446 
+28.34 63.2307 36.7693 274.061 16.182 9.75679 280.064 12.382 7.55389 
+28.35 63.221 36.779 274.056 16.1851 9.75861 280.064 12.3826 7.55332 
+28.36 63.2113 36.7887 274.052 16.1881 9.76042 280.064 12.3833 7.55275 
+28.37 63.2016 36.7984 274.047 16.1911 9.76224 280.064 12.3839 7.55218 
+28.38 63.1919 36.8081 274.042 16.1941 9.76406 280.064 12.3845 7.55161 
+28.39 63.1823 36.8177 274.037 16.1971 9.76588 280.064 12.3852 7.55104 
+28.4 63.1726 36.8274 274.032 16.2001 9.7677 280.064 12.3858 7.55047 
+28.41 63.1629 36.8371 274.027 16.2031 9.76953 280.064 12.3864 7.5499 
+28.42 63.1532 36.8468 274.023 16.2061 9.77135 280.064 12.387 7.54933 
+28.43 63.1435 36.8565 274.018 16.2091 9.77318 280.064 12.3877 7.54876 
+28.44 63.1339 36.8661 274.013 16.2122 9.775 280.064 12.3883 7.54819 
+28.45 63.1242 36.8758 274.008 16.2152 9.77683 280.063 12.3889 7.54762 
+28.46 63.1145 36.8855 274.003 16.2182 9.77866 280.063 12.3895 7.54705 
+28.47 63.1048 36.8952 273.998 16.2212 9.78049 280.063 12.3902 7.54649 
+28.48 63.0951 36.9049 273.993 16.2242 9.78233 280.063 12.3908 7.54592 
+28.49 63.0854 36.9146 273.989 16.2272 9.78416 280.063 12.3914 7.54535 
+28.5 63.0758 36.9242 273.984 16.2303 9.786 280.063 12.392 7.54478 
+28.51 63.0661 36.9339 273.979 16.2333 9.78783 280.063 12.3927 7.54422 
+28.52 63.0564 36.9436 273.974 16.2363 9.78967 280.063 12.3933 7.54365 
+28.53 63.0467 36.9533 273.969 16.2393 9.79151 280.063 12.3939 7.54309 
+28.54 63.037 36.963 273.964 16.2423 9.79335 280.063 12.3945 7.54252 
+28.55 63.0273 36.9727 273.959 16.2454 9.7952 280.063 12.3952 7.54196 
+28.56 63.0176 36.9824 273.955 16.2484 9.79704 280.063 12.3958 7.54139 
+28.57 63.008 36.992 273.95 16.2514 9.79888 280.063 12.3964 7.54083 
+28.58 62.9983 37.0017 273.945 16.2544 9.80073 280.063 12.3971 7.54026 
+28.59 62.9886 37.0114 273.94 16.2574 9.80258 280.063 12.3977 7.5397 
+28.6 62.9789 37.0211 273.935 16.2605 9.80443 280.063 12.3983 7.53914 
+28.61 62.9692 37.0308 273.93 16.2635 9.80628 280.062 12.3989 7.53857 
+28.62 62.9595 37.0405 273.925 16.2665 9.80813 280.062 12.3996 7.53801 
+28.63 62.9499 37.0501 273.92 16.2695 9.80998 280.062 12.4002 7.53745 
+28.64 62.9402 37.0598 273.916 16.2726 9.81184 280.062 12.4008 7.53688 
+28.65 62.9305 37.0695 273.911 16.2756 9.81369 280.062 12.4014 7.53632 
+28.66 62.9208 37.0792 273.906 16.2786 9.81555 280.062 12.4021 7.53576 
+28.67 62.9111 37.0889 273.901 16.2816 9.81741 280.062 12.4027 7.5352 
+28.68 62.9014 37.0986 273.896 16.2847 9.81927 280.062 12.4033 7.53464 
+28.69 62.8918 37.1082 273.891 16.2877 9.82113 280.062 12.404 7.53408 
+28.7 62.8821 37.1179 273.886 16.2907 9.82299 280.062 12.4046 7.53352 
+28.71 62.8724 37.1276 273.881 16.2938 9.82486 280.062 12.4052 7.53296 
+28.72 62.8627 37.1373 273.876 16.2968 9.82672 280.062 12.4058 7.5324 
+28.73 62.853 37.147 273.872 16.2998 9.82859 280.062 12.4065 7.53184 
+28.74 62.8433 37.1567 273.867 16.3029 9.83046 280.062 12.4071 7.53128 
+28.75 62.8336 37.1664 273.862 16.3059 9.83232 280.062 12.4077 7.53072 
+28.76 62.824 37.176 273.857 16.3089 9.8342 280.061 12.4084 7.53016 
+28.77 62.8143 37.1857 273.852 16.312 9.83607 280.061 12.409 7.52961 
+28.78 62.8046 37.1954 273.847 16.315 9.83794 280.061 12.4096 7.52905 
+28.79 62.7949 37.2051 273.842 16.318 9.83982 280.061 12.4102 7.52849 
+28.8 62.7852 37.2148 273.837 16.3211 9.84169 280.061 12.4109 7.52793 
+28.81 62.7755 37.2245 273.832 16.3241 9.84357 280.061 12.4115 7.52738 
+28.82 62.7658 37.2342 273.827 16.3271 9.84545 280.061 12.4121 7.52682 
+28.83 62.7562 37.2438 273.823 16.3302 9.84733 280.061 12.4128 7.52627 
+28.84 62.7465 37.2535 273.818 16.3332 9.84921 280.061 12.4134 7.52571 
+28.85 62.7368 37.2632 273.813 16.3362 9.85109 280.061 12.414 7.52515 
+28.86 62.7271 37.2729 273.808 16.3393 9.85298 280.061 12.4146 7.5246 
+28.87 62.7174 37.2826 273.803 16.3423 9.85486 280.061 12.4153 7.52405 
+28.88 62.7077 37.2923 273.798 16.3454 9.85675 280.061 12.4159 7.52349 
+28.89 62.698 37.302 273.793 16.3484 9.85864 280.061 12.4165 7.52294 
+28.9 62.6884 37.3116 273.788 16.3514 9.86053 280.06 12.4172 7.52238 
+28.91 62.6787 37.3213 273.783 16.3545 9.86242 280.06 12.4178 7.52183 
+28.92 62.669 37.331 273.778 16.3575 9.86431 280.06 12.4184 7.52128 
+28.93 62.6593 37.3407 273.773 16.3606 9.8662 280.06 12.419 7.52072 
+28.94 62.6496 37.3504 273.768 16.3636 9.8681 280.06 12.4197 7.52017 
+28.95 62.6399 37.3601 273.763 16.3667 9.86999 280.06 12.4203 7.51962 
+28.96 62.6302 37.3698 273.758 16.3697 9.87189 280.06 12.4209 7.51907 
+28.97 62.6206 37.3794 273.753 16.3727 9.87379 280.06 12.4216 7.51852 
+28.98 62.6109 37.3891 273.749 16.3758 9.87569 280.06 12.4222 7.51797 
+28.99 62.6012 37.3988 273.744 16.3788 9.87759 280.06 12.4228 7.51741 
+29 62.5915 37.4085 273.739 16.3819 9.8795 280.06 12.4234 7.51686 
+29.01 62.5818 37.4182 273.734 16.3849 9.8814 280.06 12.4241 7.51631 
+29.02 62.5721 37.4279 273.729 16.388 9.88331 280.06 12.4247 7.51576 
+29.03 62.5624 37.4376 273.724 16.391 9.88521 280.059 12.4253 7.51521 
+29.04 62.5528 37.4472 273.719 16.3941 9.88712 280.059 12.426 7.51467 
+29.05 62.5431 37.4569 273.714 16.3971 9.88903 280.059 12.4266 7.51412 
+29.06 62.5334 37.4666 273.709 16.4002 9.89094 280.059 12.4272 7.51357 
+29.07 62.5237 37.4763 273.704 16.4032 9.89286 280.059 12.4278 7.51302 
+29.08 62.514 37.486 273.699 16.4063 9.89477 280.059 12.4285 7.51247 
+29.09 62.5043 37.4957 273.694 16.4093 9.89668 280.059 12.4291 7.51193 
+29.1 62.4946 37.5054 273.689 16.4124 9.8986 280.059 12.4297 7.51138 
+29.11 62.4849 37.5151 273.684 16.4154 9.90052 280.059 12.4304 7.51083 
+29.12 62.4753 37.5247 273.679 16.4185 9.90244 280.059 12.431 7.51028 
+29.13 62.4656 37.5344 273.674 16.4216 9.90436 280.059 12.4316 7.50974 
+29.14 62.4559 37.5441 273.669 16.4246 9.90628 280.059 12.4323 7.50919 
+29.15 62.4462 37.5538 273.664 16.4277 9.9082 280.058 12.4329 7.50865 
+29.16 62.4365 37.5635 273.659 16.4307 9.91013 280.058 12.4335 7.5081 
+29.17 62.4268 37.5732 273.654 16.4338 9.91206 280.058 12.4342 7.50756 
+29.18 62.4171 37.5829 273.649 16.4368 9.91398 280.058 12.4348 7.50701 
+29.19 62.4075 37.5925 273.644 16.4399 9.91591 280.058 12.4354 7.50647 
+29.2 62.3978 37.6022 273.639 16.443 9.91784 280.058 12.436 7.50592 
+29.21 62.3881 37.6119 273.634 16.446 9.91977 280.058 12.4367 7.50538 
+29.22 62.3784 37.6216 273.629 16.4491 9.92171 280.058 12.4373 7.50484 
+29.23 62.3687 37.6313 273.624 16.4521 9.92364 280.058 12.4379 7.5043 
+29.24 62.359 37.641 273.619 16.4552 9.92558 280.058 12.4386 7.50375 
+29.25 62.3493 37.6507 273.614 16.4583 9.92751 280.058 12.4392 7.50321 
+29.26 62.3396 37.6604 273.609 16.4613 9.92945 280.058 12.4398 7.50267 
+29.27 62.33 37.67 273.604 16.4644 9.93139 280.057 12.4405 7.50213 
+29.28 62.3203 37.6797 273.599 16.4674 9.93333 280.057 12.4411 7.50159 
+29.29 62.3106 37.6894 273.594 16.4705 9.93527 280.057 12.4417 7.50105 
+29.3 62.3009 37.6991 273.589 16.4736 9.93722 280.057 12.4424 7.5005 
+29.31 62.2912 37.7088 273.584 16.4766 9.93916 280.057 12.443 7.49996 
+29.32 62.2815 37.7185 273.579 16.4797 9.94111 280.057 12.4436 7.49942 
+29.33 62.2718 37.7282 273.574 16.4828 9.94306 280.057 12.4442 7.49889 
+29.34 62.2621 37.7379 273.569 16.4858 9.94501 280.057 12.4449 7.49835 
+29.35 62.2525 37.7475 273.564 16.4889 9.94696 280.057 12.4455 7.49781 
+29.36 62.2428 37.7572 273.559 16.492 9.94891 280.057 12.4461 7.49727 
+29.37 62.2331 37.7669 273.554 16.495 9.95086 280.056 12.4468 7.49673 
+29.38 62.2234 37.7766 273.549 16.4981 9.95282 280.056 12.4474 7.49619 
+29.39 62.2137 37.7863 273.544 16.5012 9.95477 280.056 12.448 7.49565 
+29.4 62.204 37.796 273.539 16.5043 9.95673 280.056 12.4487 7.49512 
+29.41 62.1943 37.8057 273.534 16.5073 9.95869 280.056 12.4493 7.49458 
+29.42 62.1846 37.8154 273.529 16.5104 9.96065 280.056 12.4499 7.49404 
+29.43 62.1749 37.8251 273.524 16.5135 9.96261 280.056 12.4506 7.49351 
+29.44 62.1653 37.8347 273.519 16.5165 9.96457 280.056 12.4512 7.49297 
+29.45 62.1556 37.8444 273.514 16.5196 9.96654 280.056 12.4518 7.49244 
+29.46 62.1459 37.8541 273.509 16.5227 9.9685 280.056 12.4525 7.4919 
+29.47 62.1362 37.8638 273.504 16.5258 9.97047 280.056 12.4531 7.49137 
+29.48 62.1265 37.8735 273.499 16.5288 9.97244 280.055 12.4537 7.49083 
+29.49 62.1168 37.8832 273.494 16.5319 9.9744 280.055 12.4544 7.4903 
+29.5 62.1071 37.8929 273.489 16.535 9.97638 280.055 12.455 7.48976 
+29.51 62.0974 37.9026 273.484 16.5381 9.97835 280.055 12.4556 7.48923 
+29.52 62.0878 37.9122 273.479 16.5411 9.98032 280.055 12.4563 7.4887 
+29.53 62.0781 37.9219 273.473 16.5442 9.9823 280.055 12.4569 7.48816 
+29.54 62.0684 37.9316 273.468 16.5473 9.98427 280.055 12.4575 7.48763 
+29.55 62.0587 37.9413 273.463 16.5504 9.98625 280.055 12.4582 7.4871 
+29.56 62.049 37.951 273.458 16.5535 9.98823 280.055 12.4588 7.48657 
+29.57 62.0393 37.9607 273.453 16.5565 9.99021 280.055 12.4594 7.48604 
+29.58 62.0296 37.9704 273.448 16.5596 9.99219 280.054 12.4601 7.48551 
+29.59 62.0199 37.9801 273.443 16.5627 9.99417 280.054 12.4607 7.48497 
+29.6 62.0102 37.9898 273.438 16.5658 9.99616 280.054 12.4613 7.48444 
+29.61 62.0006 37.9994 273.433 16.5689 9.99814 280.054 12.462 7.48391 
+29.62 61.9909 38.0091 273.428 16.572 10.0001 280.054 12.4626 7.48338 
+29.63 61.9812 38.0188 273.423 16.575 10.0021 280.054 12.4632 7.48285 
+29.64 61.9715 38.0285 273.418 16.5781 10.0041 280.054 12.4639 7.48232 
+29.65 61.9618 38.0382 273.413 16.5812 10.0061 280.054 12.4645 7.4818 
+29.66 61.9521 38.0479 273.408 16.5843 10.0081 280.054 12.4651 7.48127 
+29.67 61.9424 38.0576 273.403 16.5874 10.0101 280.053 12.4658 7.48074 
+29.68 61.9327 38.0673 273.397 16.5905 10.0121 280.053 12.4664 7.48021 
+29.69 61.923 38.077 273.392 16.5936 10.0141 280.053 12.467 7.47968 
+29.7 61.9134 38.0866 273.387 16.5966 10.0161 280.053 12.4677 7.47916 
+29.71 61.9037 38.0963 273.382 16.5997 10.0181 280.053 12.4683 7.47863 
+29.72 61.894 38.106 273.377 16.6028 10.0201 280.053 12.4689 7.4781 
+29.73 61.8843 38.1157 273.372 16.6059 10.0221 280.053 12.4696 7.47758 
+29.74 61.8746 38.1254 273.367 16.609 10.0241 280.053 12.4702 7.47705 
+29.75 61.8649 38.1351 273.362 16.6121 10.0261 280.053 12.4708 7.47653 
+29.76 61.8552 38.1448 273.357 16.6152 10.0281 280.053 12.4715 7.476 
+29.77 61.8455 38.1545 273.352 16.6183 10.0301 280.052 12.4721 7.47548 
+29.78 61.8358 38.1642 273.347 16.6214 10.0321 280.052 12.4727 7.47495 
+29.79 61.8262 38.1738 273.341 16.6245 10.0341 280.052 12.4734 7.47443 
+29.8 61.8165 38.1835 273.336 16.6276 10.0361 280.052 12.474 7.4739 
+29.81 61.8068 38.1932 273.331 16.6306 10.0381 280.052 12.4746 7.47338 
+29.82 61.7971 38.2029 273.326 16.6337 10.0402 280.052 12.4753 7.47286 
+29.83 61.7874 38.2126 273.321 16.6368 10.0422 280.052 12.4759 7.47233 
+29.84 61.7777 38.2223 273.316 16.6399 10.0442 280.052 12.4766 7.47181 
+29.85 61.768 38.232 273.311 16.643 10.0462 280.052 12.4772 7.47129 
+29.86 61.7583 38.2417 273.306 16.6461 10.0482 280.051 12.4778 7.47077 
+29.87 61.7486 38.2514 273.301 16.6492 10.0502 280.051 12.4785 7.47025 
+29.88 61.739 38.261 273.295 16.6523 10.0523 280.051 12.4791 7.46973 
+29.89 61.7293 38.2707 273.29 16.6554 10.0543 280.051 12.4797 7.4692 
+29.9 61.7196 38.2804 273.285 16.6585 10.0563 280.051 12.4804 7.46868 
+29.91 61.7099 38.2901 273.28 16.6616 10.0583 280.051 12.481 7.46816 
+29.92 61.7002 38.2998 273.275 16.6647 10.0604 280.051 12.4816 7.46764 
+29.93 61.6905 38.3095 273.27 16.6678 10.0624 280.051 12.4823 7.46713 
+29.94 61.6808 38.3192 273.265 16.6709 10.0644 280.05 12.4829 7.46661 
+29.95 61.6711 38.3289 273.26 16.674 10.0665 280.05 12.4835 7.46609 
+29.96 61.6614 38.3386 273.254 16.6771 10.0685 280.05 12.4842 7.46557 
+29.97 61.6517 38.3483 273.249 16.6802 10.0705 280.05 12.4848 7.46505 
+29.98 61.6421 38.3579 273.244 16.6833 10.0726 280.05 12.4855 7.46453 
+29.99 61.6324 38.3676 273.239 16.6865 10.0746 280.05 12.4861 7.46402 
+30 61.6227 38.3773 273.234 16.6896 10.0766 280.05 12.4867 7.4635 
+30.01 61.613 38.387 273.229 16.6927 10.0787 280.05 12.4874 7.46298 
+30.02 61.6033 38.3967 273.224 16.6958 10.0807 280.05 12.488 7.46247 
+30.03 61.5936 38.4064 273.218 16.6989 10.0828 280.049 12.4886 7.46195 
+30.04 61.5839 38.4161 273.213 16.702 10.0848 280.049 12.4893 7.46143 
+30.05 61.5742 38.4258 273.208 16.7051 10.0869 280.049 12.4899 7.46092 
+30.06 61.5645 38.4355 273.203 16.7082 10.0889 280.049 12.4905 7.4604 
+30.07 61.5548 38.4452 273.198 16.7113 10.0909 280.049 12.4912 7.45989 
+30.08 61.5452 38.4548 273.193 16.7144 10.093 280.049 12.4918 7.45938 
+30.09 61.5355 38.4645 273.187 16.7175 10.095 280.049 12.4925 7.45886 
+30.1 61.5258 38.4742 273.182 16.7206 10.0971 280.049 12.4931 7.45835 
+30.11 61.5161 38.4839 273.177 16.7238 10.0992 280.048 12.4937 7.45783 
+30.12 61.5064 38.4936 273.172 16.7269 10.1012 280.048 12.4944 7.45732 
+30.13 61.4967 38.5033 273.167 16.73 10.1033 280.048 12.495 7.45681 
+30.14 61.487 38.513 273.162 16.7331 10.1053 280.048 12.4956 7.4563 
+30.15 61.4773 38.5227 273.156 16.7362 10.1074 280.048 12.4963 7.45578 
+30.16 61.4676 38.5324 273.151 16.7393 10.1094 280.048 12.4969 7.45527 
+30.17 61.458 38.542 273.146 16.7424 10.1115 280.048 12.4976 7.45476 
+30.18 61.4483 38.5517 273.141 16.7456 10.1136 280.048 12.4982 7.45425 
+30.19 61.4386 38.5614 273.136 16.7487 10.1156 280.047 12.4988 7.45374 
+30.2 61.4289 38.5711 273.131 16.7518 10.1177 280.047 12.4995 7.45323 
+30.21 61.4192 38.5808 273.125 16.7549 10.1198 280.047 12.5001 7.45272 
+30.22 61.4095 38.5905 273.12 16.758 10.1218 280.047 12.5007 7.45221 
+30.23 61.3998 38.6002 273.115 16.7611 10.1239 280.047 12.5014 7.4517 
+30.24 61.3901 38.6099 273.11 16.7643 10.126 280.047 12.502 7.45119 
+30.25 61.3804 38.6196 273.105 16.7674 10.128 280.047 12.5027 7.45068 
+30.26 61.3707 38.6293 273.099 16.7705 10.1301 280.047 12.5033 7.45018 
+30.27 61.361 38.639 273.094 16.7736 10.1322 280.046 12.5039 7.44967 
+30.28 61.3514 38.6486 273.089 16.7768 10.1343 280.046 12.5046 7.44916 
+30.29 61.3417 38.6583 273.084 16.7799 10.1363 280.046 12.5052 7.44865 
+30.3 61.332 38.668 273.079 16.783 10.1384 280.046 12.5059 7.44815 
+30.31 61.3223 38.6777 273.073 16.7861 10.1405 280.046 12.5065 7.44764 
+30.32 61.3126 38.6874 273.068 16.7892 10.1426 280.046 12.5071 7.44714 
+30.33 61.3029 38.6971 273.063 16.7924 10.1447 280.046 12.5078 7.44663 
+30.34 61.2932 38.7068 273.058 16.7955 10.1468 280.045 12.5084 7.44612 
+30.35 61.2835 38.7165 273.053 16.7986 10.1488 280.045 12.5091 7.44562 
+30.36 61.2738 38.7262 273.047 16.8017 10.1509 280.045 12.5097 7.44511 
+30.37 61.2641 38.7359 273.042 16.8049 10.153 280.045 12.5103 7.44461 
+30.38 61.2545 38.7455 273.037 16.808 10.1551 280.045 12.511 7.44411 
+30.39 61.2448 38.7552 273.032 16.8111 10.1572 280.045 12.5116 7.4436 
+30.4 61.2351 38.7649 273.026 16.8143 10.1593 280.045 12.5123 7.4431 
+30.41 61.2254 38.7746 273.021 16.8174 10.1614 280.045 12.5129 7.4426 
+30.42 61.2157 38.7843 273.016 16.8205 10.1635 280.044 12.5135 7.44209 
+30.43 61.206 38.794 273.011 16.8237 10.1656 280.044 12.5142 7.44159 
+30.44 61.1963 38.8037 273.006 16.8268 10.1677 280.044 12.5148 7.44109 
+30.45 61.1866 38.8134 273 16.8299 10.1698 280.044 12.5155 7.44059 
+30.46 61.1769 38.8231 272.995 16.833 10.1719 280.044 12.5161 7.44009 
+30.47 61.1672 38.8328 272.99 16.8362 10.174 280.044 12.5167 7.43959 
+30.48 61.1576 38.8424 272.985 16.8393 10.1761 280.044 12.5174 7.43908 
+30.49 61.1479 38.8521 272.979 16.8424 10.1782 280.043 12.518 7.43858 
+30.5 61.1382 38.8618 272.974 16.8456 10.1803 280.043 12.5187 7.43808 
+30.51 61.1285 38.8715 272.969 16.8487 10.1824 280.043 12.5193 7.43759 
+30.52 61.1188 38.8812 272.964 16.8519 10.1845 280.043 12.5199 7.43709 
+30.53 61.1091 38.8909 272.958 16.855 10.1866 280.043 12.5206 7.43659 
+30.54 61.0994 38.9006 272.953 16.8581 10.1887 280.043 12.5212 7.43609 
+30.55 61.0897 38.9103 272.948 16.8613 10.1908 280.043 12.5219 7.43559 
+30.56 61.08 38.92 272.943 16.8644 10.193 280.042 12.5225 7.43509 
+30.57 61.0703 38.9297 272.937 16.8675 10.1951 280.042 12.5231 7.4346 
+30.58 61.0606 38.9394 272.932 16.8707 10.1972 280.042 12.5238 7.4341 
+30.59 61.051 38.949 272.927 16.8738 10.1993 280.042 12.5244 7.4336 
+30.6 61.0413 38.9587 272.922 16.877 10.2014 280.042 12.5251 7.43311 
+30.61 61.0316 38.9684 272.916 16.8801 10.2036 280.042 12.5257 7.43261 
+30.62 61.0219 38.9781 272.911 16.8832 10.2057 280.042 12.5264 7.43211 
+30.63 61.0122 38.9878 272.906 16.8864 10.2078 280.041 12.527 7.43162 
+30.64 61.0025 38.9975 272.901 16.8895 10.2099 280.041 12.5276 7.43112 
+30.65 60.9928 39.0072 272.895 16.8927 10.2121 280.041 12.5283 7.43063 
+30.66 60.9831 39.0169 272.89 16.8958 10.2142 280.041 12.5289 7.43013 
+30.67 60.9734 39.0266 272.885 16.899 10.2163 280.041 12.5296 7.42964 
+30.68 60.9637 39.0363 272.879 16.9021 10.2184 280.041 12.5302 7.42915 
+30.69 60.9541 39.0459 272.874 16.9053 10.2206 280.04 12.5308 7.42865 
+30.7 60.9444 39.0556 272.869 16.9084 10.2227 280.04 12.5315 7.42816 
+30.71 60.9347 39.0653 272.864 16.9115 10.2248 280.04 12.5321 7.42767 
+30.72 60.925 39.075 272.858 16.9147 10.227 280.04 12.5328 7.42718 
+30.73 60.9153 39.0847 272.853 16.9178 10.2291 280.04 12.5334 7.42668 
+30.74 60.9056 39.0944 272.848 16.921 10.2313 280.04 12.5341 7.42619 
+30.75 60.8959 39.1041 272.842 16.9241 10.2334 280.04 12.5347 7.4257 
+30.76 60.8862 39.1138 272.837 16.9273 10.2355 280.039 12.5353 7.42521 
+30.77 60.8765 39.1235 272.832 16.9304 10.2377 280.039 12.536 7.42472 
+30.78 60.8668 39.1332 272.827 16.9336 10.2398 280.039 12.5366 7.42423 
+30.79 60.8571 39.1429 272.821 16.9367 10.242 280.039 12.5373 7.42374 
+30.8 60.8475 39.1525 272.816 16.9399 10.2441 280.039 12.5379 7.42325 
+30.81 60.8378 39.1622 272.811 16.943 10.2463 280.039 12.5386 7.42276 
+30.82 60.8281 39.1719 272.805 16.9462 10.2484 280.039 12.5392 7.42227 
+30.83 60.8184 39.1816 272.8 16.9494 10.2506 280.038 12.5399 7.42178 
+30.84 60.8087 39.1913 272.795 16.9525 10.2527 280.038 12.5405 7.4213 
+30.85 60.799 39.201 272.789 16.9557 10.2549 280.038 12.5411 7.42081 
+30.86 60.7893 39.2107 272.784 16.9588 10.257 280.038 12.5418 7.42032 
+30.87 60.7796 39.2204 272.779 16.962 10.2592 280.038 12.5424 7.41984 
+30.88 60.7699 39.2301 272.774 16.9651 10.2613 280.038 12.5431 7.41935 
+30.89 60.7602 39.2398 272.768 16.9683 10.2635 280.037 12.5437 7.41886 
+30.9 60.7506 39.2494 272.763 16.9714 10.2657 280.037 12.5444 7.41838 
+30.91 60.7409 39.2591 272.758 16.9746 10.2678 280.037 12.545 7.41789 
+30.92 60.7312 39.2688 272.752 16.9778 10.27 280.037 12.5456 7.41741 
+30.93 60.7215 39.2785 272.747 16.9809 10.2722 280.037 12.5463 7.41692 
+30.94 60.7118 39.2882 272.742 16.9841 10.2743 280.037 12.5469 7.41644 
+30.95 60.7021 39.2979 272.736 16.9872 10.2765 280.036 12.5476 7.41595 
+30.96 60.6924 39.3076 272.731 16.9904 10.2787 280.036 12.5482 7.41547 
+30.97 60.6827 39.3173 272.726 16.9936 10.2808 280.036 12.5489 7.41498 
+30.98 60.673 39.327 272.72 16.9967 10.283 280.036 12.5495 7.4145 
+30.99 60.6633 39.3367 272.715 16.9999 10.2852 280.036 12.5502 7.41402 
+31 60.6536 39.3464 272.71 17.0031 10.2873 280.036 12.5508 7.41354 
+31.01 60.644 39.356 272.704 17.0062 10.2895 280.035 12.5515 7.41305 
+31.02 60.6343 39.3657 272.699 17.0094 10.2917 280.035 12.5521 7.41257 
+31.03 60.6246 39.3754 272.694 17.0126 10.2939 280.035 12.5527 7.41209 
+31.04 60.6149 39.3851 272.688 17.0157 10.2961 280.035 12.5534 7.41161 
+31.05 60.6052 39.3948 272.683 17.0189 10.2982 280.035 12.554 7.41113 
+31.06 60.5955 39.4045 272.678 17.0221 10.3004 280.035 12.5547 7.41065 
+31.07 60.5858 39.4142 272.672 17.0252 10.3026 280.034 12.5553 7.41017 
+31.08 60.5761 39.4239 272.667 17.0284 10.3048 280.034 12.556 7.40969 
+31.09 60.5664 39.4336 272.661 17.0316 10.307 280.034 12.5566 7.40921 
+31.1 60.5567 39.4433 272.656 17.0347 10.3092 280.034 12.5573 7.40873 
+31.11 60.5471 39.4529 272.651 17.0379 10.3114 280.034 12.5579 7.40825 
+31.12 60.5374 39.4626 272.645 17.0411 10.3135 280.034 12.5586 7.40778 
+31.13 60.5277 39.4723 272.64 17.0442 10.3157 280.033 12.5592 7.4073 
+31.14 60.518 39.482 272.635 17.0474 10.3179 280.033 12.5599 7.40682 
+31.15 60.5083 39.4917 272.629 17.0506 10.3201 280.033 12.5605 7.40634 
+31.16 60.4986 39.5014 272.624 17.0538 10.3223 280.033 12.5612 7.40587 
+31.17 60.4889 39.5111 272.619 17.0569 10.3245 280.033 12.5618 7.40539 
+31.18 60.4792 39.5208 272.613 17.0601 10.3267 280.033 12.5624 7.40491 
+31.19 60.4695 39.5305 272.608 17.0633 10.3289 280.032 12.5631 7.40444 
+31.2 60.4598 39.5402 272.602 17.0665 10.3311 280.032 12.5637 7.40396 
+31.21 60.4502 39.5498 272.597 17.0696 10.3333 280.032 12.5644 7.40349 
+31.22 60.4405 39.5595 272.592 17.0728 10.3355 280.032 12.565 7.40301 
+31.23 60.4308 39.5692 272.586 17.076 10.3377 280.032 12.5657 7.40254 
+31.24 60.4211 39.5789 272.581 17.0792 10.3399 280.032 12.5663 7.40207 
+31.25 60.4114 39.5886 272.576 17.0823 10.3421 280.031 12.567 7.40159 
+31.26 60.4017 39.5983 272.57 17.0855 10.3444 280.031 12.5676 7.40112 
+31.27 60.392 39.608 272.565 17.0887 10.3466 280.031 12.5683 7.40065 
+31.28 60.3823 39.6177 272.559 17.0919 10.3488 280.031 12.5689 7.40017 
+31.29 60.3726 39.6274 272.554 17.0951 10.351 280.031 12.5696 7.3997 
+31.3 60.3629 39.6371 272.549 17.0982 10.3532 280.031 12.5702 7.39923 
+31.31 60.3533 39.6467 272.543 17.1014 10.3554 280.03 12.5709 7.39876 
+31.32 60.3436 39.6564 272.538 17.1046 10.3576 280.03 12.5715 7.39829 
+31.33 60.3339 39.6661 272.532 17.1078 10.3599 280.03 12.5722 7.39782 
+31.34 60.3242 39.6758 272.527 17.111 10.3621 280.03 12.5728 7.39735 
+31.35 60.3145 39.6855 272.522 17.1142 10.3643 280.03 12.5735 7.39688 
+31.36 60.3048 39.6952 272.516 17.1173 10.3665 280.029 12.5741 7.39641 
+31.37 60.2951 39.7049 272.511 17.1205 10.3688 280.029 12.5748 7.39594 
+31.38 60.2854 39.7146 272.505 17.1237 10.371 280.029 12.5754 7.39547 
+31.39 60.2757 39.7243 272.5 17.1269 10.3732 280.029 12.5761 7.395 
+31.4 60.266 39.734 272.494 17.1301 10.3754 280.029 12.5767 7.39453 
+31.41 60.2564 39.7436 272.489 17.1333 10.3777 280.029 12.5774 7.39406 
+31.42 60.2467 39.7533 272.484 17.1365 10.3799 280.028 12.578 7.3936 
+31.43 60.237 39.763 272.478 17.1396 10.3821 280.028 12.5787 7.39313 
+31.44 60.2273 39.7727 272.473 17.1428 10.3844 280.028 12.5793 7.39266 
+31.45 60.2176 39.7824 272.467 17.146 10.3866 280.028 12.58 7.3922 
+31.46 60.2079 39.7921 272.462 17.1492 10.3888 280.028 12.5806 7.39173 
+31.47 60.1982 39.8018 272.457 17.1524 10.3911 280.027 12.5813 7.39126 
+31.48 60.1885 39.8115 272.451 17.1556 10.3933 280.027 12.5819 7.3908 
+31.49 60.1788 39.8212 272.446 17.1588 10.3956 280.027 12.5826 7.39033 
+31.5 60.1691 39.8309 272.44 17.162 10.3978 280.027 12.5832 7.38987 
+31.51 60.1595 39.8405 272.435 17.1652 10.4 280.027 12.5839 7.38941 
+31.52 60.1498 39.8502 272.429 17.1684 10.4023 280.027 12.5845 7.38894 
+31.53 60.1401 39.8599 272.424 17.1716 10.4045 280.026 12.5852 7.38848 
+31.54 60.1304 39.8696 272.418 17.1748 10.4068 280.026 12.5858 7.38801 
+31.55 60.1207 39.8793 272.413 17.178 10.409 280.026 12.5865 7.38755 
+31.56 60.111 39.889 272.408 17.1812 10.4113 280.026 12.5871 7.38709 
+31.57 60.1013 39.8987 272.402 17.1843 10.4135 280.026 12.5878 7.38663 
+31.58 60.0916 39.9084 272.397 17.1875 10.4158 280.025 12.5884 7.38617 
+31.59 60.0819 39.9181 272.391 17.1907 10.418 280.025 12.5891 7.3857 
+31.6 60.0722 39.9278 272.386 17.1939 10.4203 280.025 12.5897 7.38524 
+31.61 60.0626 39.9374 272.38 17.1971 10.4226 280.025 12.5904 7.38478 
+31.62 60.0529 39.9471 272.375 17.2003 10.4248 280.025 12.591 7.38432 
+31.63 60.0432 39.9568 272.369 17.2035 10.4271 280.024 12.5917 7.38386 
+31.64 60.0335 39.9665 272.364 17.2067 10.4293 280.024 12.5923 7.3834 
+31.65 60.0238 39.9762 272.358 17.2099 10.4316 280.024 12.593 7.38294 
+31.66 60.0141 39.9859 272.353 17.2131 10.4339 280.024 12.5936 7.38248 
+31.67 60.0044 39.9956 272.348 17.2163 10.4361 280.024 12.5943 7.38203 
+31.68 59.9947 40.0053 272.342 17.2195 10.4384 280.023 12.5949 7.38157 
+31.69 59.985 40.015 272.337 17.2228 10.4407 280.023 12.5956 7.38111 
+31.7 59.9754 40.0246 272.331 17.226 10.4429 280.023 12.5963 7.38065 
+31.71 59.9657 40.0343 272.326 17.2292 10.4452 280.023 12.5969 7.3802 
+31.72 59.956 40.044 272.32 17.2324 10.4475 280.023 12.5976 7.37974 
+31.73 59.9463 40.0537 272.315 17.2356 10.4497 280.023 12.5982 7.37928 
+31.74 59.9366 40.0634 272.309 17.2388 10.452 280.022 12.5989 7.37883 
+31.75 59.9269 40.0731 272.304 17.242 10.4543 280.022 12.5995 7.37837 
+31.76 59.9172 40.0828 272.298 17.2452 10.4566 280.022 12.6002 7.37792 
+31.77 59.9075 40.0925 272.293 17.2484 10.4589 280.022 12.6008 7.37746 
+31.78 59.8978 40.1022 272.287 17.2516 10.4611 280.022 12.6015 7.37701 
+31.79 59.8882 40.1118 272.282 17.2548 10.4634 280.021 12.6021 7.37655 
+31.8 59.8785 40.1215 272.276 17.258 10.4657 280.021 12.6028 7.3761 
+31.81 59.8688 40.1312 272.271 17.2612 10.468 280.021 12.6034 7.37565 
+31.82 59.8591 40.1409 272.265 17.2645 10.4703 280.021 12.6041 7.37519 
+31.83 59.8494 40.1506 272.26 17.2677 10.4726 280.021 12.6048 7.37474 
+31.84 59.8397 40.1603 272.254 17.2709 10.4748 280.02 12.6054 7.37429 
+31.85 59.83 40.17 272.249 17.2741 10.4771 280.02 12.6061 7.37384 
+31.86 59.8203 40.1797 272.243 17.2773 10.4794 280.02 12.6067 7.37338 
+31.87 59.8106 40.1894 272.238 17.2805 10.4817 280.02 12.6074 7.37293 
+31.88 59.801 40.199 272.232 17.2837 10.484 280.019 12.608 7.37248 
+31.89 59.7913 40.2087 272.227 17.2869 10.4863 280.019 12.6087 7.37203 
+31.9 59.7816 40.2184 272.221 17.2902 10.4886 280.019 12.6093 7.37158 
+31.91 59.7719 40.2281 272.216 17.2934 10.4909 280.019 12.61 7.37113 
+31.92 59.7622 40.2378 272.21 17.2966 10.4932 280.019 12.6106 7.37068 
+31.93 59.7525 40.2475 272.205 17.2998 10.4955 280.018 12.6113 7.37023 
+31.94 59.7428 40.2572 272.199 17.303 10.4978 280.018 12.612 7.36978 
+31.95 59.7331 40.2669 272.194 17.3062 10.5001 280.018 12.6126 7.36934 
+31.96 59.7234 40.2766 272.188 17.3095 10.5024 280.018 12.6133 7.36889 
+31.97 59.7138 40.2862 272.183 17.3127 10.5047 280.018 12.6139 7.36844 
+31.98 59.7041 40.2959 272.177 17.3159 10.507 280.017 12.6146 7.36799 
+31.99 59.6944 40.3056 272.172 17.3191 10.5093 280.017 12.6152 7.36755 
+32 59.6847 40.3153 272.166 17.3223 10.5117 280.017 12.6159 7.3671 
+32.01 59.675 40.325 272.16 17.3256 10.514 280.017 12.6166 7.36665 
+32.02 59.6653 40.3347 272.155 17.3288 10.5163 280.017 12.6172 7.36621 
+32.03 59.6556 40.3444 272.149 17.332 10.5186 280.016 12.6179 7.36576 
+32.04 59.6459 40.3541 272.144 17.3352 10.5209 280.016 12.6185 7.36532 
+32.05 59.6362 40.3638 272.138 17.3385 10.5232 280.016 12.6192 7.36487 
+32.06 59.6266 40.3734 272.133 17.3417 10.5255 280.016 12.6198 7.36443 
+32.07 59.6169 40.3831 272.127 17.3449 10.5279 280.016 12.6205 7.36398 
+32.08 59.6072 40.3928 272.122 17.3481 10.5302 280.015 12.6212 7.36354 
+32.09 59.5975 40.4025 272.116 17.3514 10.5325 280.015 12.6218 7.3631 
+32.1 59.5878 40.4122 272.111 17.3546 10.5348 280.015 12.6225 7.36265 
+32.11 59.5781 40.4219 272.105 17.3578 10.5372 280.015 12.6231 7.36221 
+32.12 59.5684 40.4316 272.099 17.3611 10.5395 280.014 12.6238 7.36177 
+32.13 59.5587 40.4413 272.094 17.3643 10.5418 280.014 12.6244 7.36133 
+32.14 59.5491 40.4509 272.088 17.3675 10.5441 280.014 12.6251 7.36089 
+32.15 59.5394 40.4606 272.083 17.3707 10.5465 280.014 12.6258 7.36045 
+32.16 59.5297 40.4703 272.077 17.374 10.5488 280.014 12.6264 7.36 
+32.17 59.52 40.48 272.072 17.3772 10.5511 280.013 12.6271 7.35956 
+32.18 59.5103 40.4897 272.066 17.3804 10.5535 280.013 12.6277 7.35912 
+32.19 59.5006 40.4994 272.061 17.3837 10.5558 280.013 12.6284 7.35868 
+32.2 59.4909 40.5091 272.055 17.3869 10.5582 280.013 12.629 7.35825 
+32.21 59.4812 40.5188 272.049 17.3901 10.5605 280.012 12.6297 7.35781 
+32.22 59.4716 40.5284 272.044 17.3934 10.5628 280.012 12.6304 7.35737 
+32.23 59.4619 40.5381 272.038 17.3966 10.5652 280.012 12.631 7.35693 
+32.24 59.4522 40.5478 272.033 17.3998 10.5675 280.012 12.6317 7.35649 
+32.25 59.4425 40.5575 272.027 17.4031 10.5699 280.012 12.6323 7.35606 
+32.26 59.4328 40.5672 272.021 17.4063 10.5722 280.011 12.633 7.35562 
+32.27 59.4231 40.5769 272.016 17.4095 10.5746 280.011 12.6337 7.35518 
+32.28 59.4134 40.5866 272.01 17.4128 10.5769 280.011 12.6343 7.35475 
+32.29 59.4037 40.5963 272.005 17.416 10.5793 280.011 12.635 7.35431 
+32.3 59.3941 40.6059 271.999 17.4193 10.5816 280.01 12.6356 7.35387 
+32.31 59.3844 40.6156 271.994 17.4225 10.584 280.01 12.6363 7.35344 
+32.32 59.3747 40.6253 271.988 17.4257 10.5863 280.01 12.637 7.353 
+32.33 59.365 40.635 271.982 17.429 10.5887 280.01 12.6376 7.35257 
+32.34 59.3553 40.6447 271.977 17.4322 10.591 280.01 12.6383 7.35214 
+32.35 59.3456 40.6544 271.971 17.4355 10.5934 280.009 12.6389 7.3517 
+32.36 59.3359 40.6641 271.966 17.4387 10.5957 280.009 12.6396 7.35127 
+32.37 59.3262 40.6738 271.96 17.4419 10.5981 280.009 12.6403 7.35084 
+32.38 59.3166 40.6834 271.954 17.4452 10.6005 280.009 12.6409 7.3504 
+32.39 59.3069 40.6931 271.949 17.4484 10.6028 280.008 12.6416 7.34997 
+32.4 59.2972 40.7028 271.943 17.4517 10.6052 280.008 12.6423 7.34954 
+32.41 59.2875 40.7125 271.938 17.4549 10.6076 280.008 12.6429 7.34911 
+32.42 59.2778 40.7222 271.932 17.4582 10.6099 280.008 12.6436 7.34868 
+32.43 59.2681 40.7319 271.926 17.4614 10.6123 280.008 12.6442 7.34825 
+32.44 59.2584 40.7416 271.921 17.4647 10.6147 280.007 12.6449 7.34782 
+32.45 59.2488 40.7512 271.915 17.4679 10.617 280.007 12.6456 7.34739 
+32.46 59.2391 40.7609 271.909 17.4712 10.6194 280.007 12.6462 7.34696 
+32.47 59.2294 40.7706 271.904 17.4744 10.6218 280.007 12.6469 7.34653 
+32.48 59.2197 40.7803 271.898 17.4777 10.6242 280.006 12.6475 7.3461 
+32.49 59.21 40.79 271.893 17.4809 10.6265 280.006 12.6482 7.34567 
+32.5 59.2003 40.7997 271.887 17.4841 10.6289 280.006 12.6489 7.34524 
+32.51 59.1906 40.8094 271.881 17.4874 10.6313 280.006 12.6495 7.34481 
+32.52 59.181 40.819 271.876 17.4907 10.6337 280.005 12.6502 7.34439 
+32.53 59.1713 40.8287 271.87 17.4939 10.6361 280.005 12.6509 7.34396 
+32.54 59.1616 40.8384 271.864 17.4972 10.6385 280.005 12.6515 7.34353 
+32.55 59.1519 40.8481 271.859 17.5004 10.6408 280.005 12.6522 7.34311 
+32.56 59.1422 40.8578 271.853 17.5037 10.6432 280.004 12.6528 7.34268 
+32.57 59.1325 40.8675 271.847 17.5069 10.6456 280.004 12.6535 7.34225 
+32.58 59.1228 40.8772 271.842 17.5102 10.648 280.004 12.6542 7.34183 
+32.59 59.1132 40.8868 271.836 17.5134 10.6504 280.004 12.6548 7.3414 
+32.6 59.1035 40.8965 271.831 17.5167 10.6528 280.004 12.6555 7.34098 
+32.61 59.0938 40.9062 271.825 17.5199 10.6552 280.003 12.6562 7.34056 
+32.62 59.0841 40.9159 271.819 17.5232 10.6576 280.003 12.6568 7.34013 
+32.63 59.0744 40.9256 271.814 17.5265 10.66 280.003 12.6575 7.33971 
+32.64 59.0647 40.9353 271.808 17.5297 10.6624 280.003 12.6582 7.33929 
+32.65 59.055 40.945 271.802 17.533 10.6648 280.002 12.6588 7.33886 
+32.66 59.0454 40.9546 271.797 17.5362 10.6672 280.002 12.6595 7.33844 
+32.67 59.0357 40.9643 271.791 17.5395 10.6696 280.002 12.6602 7.33802 
+32.68 59.026 40.974 271.785 17.5427 10.672 280.002 12.6608 7.3376 
+32.69 59.0163 40.9837 271.78 17.546 10.6744 280.001 12.6615 7.33718 
+32.7 59.0066 40.9934 271.774 17.5493 10.6768 280.001 12.6621 7.33676 
+32.71 58.9969 41.0031 271.768 17.5525 10.6792 280.001 12.6628 7.33634 
+32.72 58.9872 41.0128 271.763 17.5558 10.6816 280.001 12.6635 7.33592 
+32.73 58.9776 41.0224 271.757 17.5591 10.684 280 12.6641 7.3355 
+32.74 58.9679 41.0321 271.751 17.5623 10.6864 280 12.6648 7.33508 
+32.75 58.9582 41.0418 271.746 17.5656 10.6888 280 12.6655 7.33466 
+32.76 58.9485 41.0515 271.74 17.5689 10.6913 280 12.6661 7.33424 
+32.77 58.9388 41.0612 271.734 17.5721 10.6937 279.999 12.6668 7.33382 
+32.78 58.9291 41.0709 271.729 17.5754 10.6961 279.999 12.6675 7.3334 
+32.79 58.9195 41.0805 271.723 17.5786 10.6985 279.999 12.6681 7.33299 
+32.8 58.9098 41.0902 271.717 17.5819 10.7009 279.999 12.6688 7.33257 
+32.81 58.9001 41.0999 271.711 17.5852 10.7033 279.998 12.6695 7.33215 
+32.82 58.8904 41.1096 271.706 17.5885 10.7058 279.998 12.6701 7.33174 
+32.83 58.8807 41.1193 271.7 17.5917 10.7082 279.998 12.6708 7.33132 
+32.84 58.871 41.129 271.694 17.595 10.7106 279.998 12.6715 7.33091 
+32.85 58.8613 41.1387 271.689 17.5983 10.713 279.997 12.6721 7.33049 
+32.86 58.8517 41.1483 271.683 17.6015 10.7155 279.997 12.6728 7.33008 
+32.87 58.842 41.158 271.677 17.6048 10.7179 279.997 12.6735 7.32966 
+32.88 58.8323 41.1677 271.672 17.6081 10.7203 279.997 12.6741 7.32925 
+32.89 58.8226 41.1774 271.666 17.6113 10.7228 279.996 12.6748 7.32883 
+32.9 58.8129 41.1871 271.66 17.6146 10.7252 279.996 12.6755 7.32842 
+32.91 58.8032 41.1968 271.654 17.6179 10.7276 279.996 12.6761 7.32801 
+32.92 58.7936 41.2064 271.649 17.6212 10.7301 279.996 12.6768 7.3276 
+32.93 58.7839 41.2161 271.643 17.6244 10.7325 279.995 12.6775 7.32718 
+32.94 58.7742 41.2258 271.637 17.6277 10.7349 279.995 12.6782 7.32677 
+32.95 58.7645 41.2355 271.632 17.631 10.7374 279.995 12.6788 7.32636 
+32.96 58.7548 41.2452 271.626 17.6343 10.7398 279.995 12.6795 7.32595 
+32.97 58.7451 41.2549 271.62 17.6375 10.7423 279.994 12.6802 7.32554 
+32.98 58.7355 41.2645 271.614 17.6408 10.7447 279.994 12.6808 7.32513 
+32.99 58.7258 41.2742 271.609 17.6441 10.7472 279.994 12.6815 7.32472 
+33 58.7161 41.2839 271.603 17.6474 10.7496 279.994 12.6822 7.32431 
+33.01 58.7064 41.2936 271.597 17.6507 10.7521 279.993 12.6828 7.3239 
+33.02 58.6967 41.3033 271.592 17.6539 10.7545 279.993 12.6835 7.32349 
+33.03 58.687 41.313 271.586 17.6572 10.757 279.993 12.6842 7.32308 
+33.04 58.6774 41.3226 271.58 17.6605 10.7594 279.992 12.6848 7.32268 
+33.05 58.6677 41.3323 271.574 17.6638 10.7619 279.992 12.6855 7.32227 
+33.06 58.658 41.342 271.569 17.6671 10.7643 279.992 12.6862 7.32186 
+33.07 58.6483 41.3517 271.563 17.6703 10.7668 279.992 12.6869 7.32145 
+33.08 58.6386 41.3614 271.557 17.6736 10.7692 279.991 12.6875 7.32105 
+33.09 58.6289 41.3711 271.551 17.6769 10.7717 279.991 12.6882 7.32064 
+33.1 58.6193 41.3807 271.546 17.6802 10.7742 279.991 12.6889 7.32024 
+33.11 58.6096 41.3904 271.54 17.6835 10.7766 279.991 12.6895 7.31983 
+33.12 58.5999 41.4001 271.534 17.6868 10.7791 279.99 12.6902 7.31943 
+33.13 58.5902 41.4098 271.528 17.69 10.7815 279.99 12.6909 7.31902 
+33.14 58.5805 41.4195 271.523 17.6933 10.784 279.99 12.6916 7.31862 
+33.15 58.5709 41.4291 271.517 17.6966 10.7865 279.99 12.6922 7.31821 
+33.16 58.5612 41.4388 271.511 17.6999 10.789 279.989 12.6929 7.31781 
+33.17 58.5515 41.4485 271.505 17.7032 10.7914 279.989 12.6936 7.31741 
+33.18 58.5418 41.4582 271.5 17.7065 10.7939 279.989 12.6942 7.317 
+33.19 58.5321 41.4679 271.494 17.7098 10.7964 279.988 12.6949 7.3166 
+33.2 58.5224 41.4776 271.488 17.7131 10.7988 279.988 12.6956 7.3162 
+33.21 58.5128 41.4872 271.482 17.7164 10.8013 279.988 12.6963 7.3158 
+33.22 58.5031 41.4969 271.477 17.7196 10.8038 279.988 12.6969 7.3154 
+33.23 58.4934 41.5066 271.471 17.7229 10.8063 279.987 12.6976 7.315 
+33.24 58.4837 41.5163 271.465 17.7262 10.8088 279.987 12.6983 7.3146 
+33.25 58.474 41.526 271.459 17.7295 10.8112 279.987 12.6989 7.3142 
+33.26 58.4644 41.5356 271.453 17.7328 10.8137 279.987 12.6996 7.3138 
+33.27 58.4547 41.5453 271.448 17.7361 10.8162 279.986 12.7003 7.3134 
+33.28 58.445 41.555 271.442 17.7394 10.8187 279.986 12.701 7.313 
+33.29 58.4353 41.5647 271.436 17.7427 10.8212 279.986 12.7016 7.3126 
+33.3 58.4256 41.5744 271.43 17.746 10.8237 279.985 12.7023 7.3122 
+33.31 58.4159 41.5841 271.425 17.7493 10.8262 279.985 12.703 7.31181 
+33.32 58.4063 41.5937 271.419 17.7526 10.8286 279.985 12.7037 7.31141 
+33.33 58.3966 41.6034 271.413 17.7559 10.8311 279.985 12.7043 7.31101 
+33.34 58.3869 41.6131 271.407 17.7592 10.8336 279.984 12.705 7.31061 
+33.35 58.3772 41.6228 271.401 17.7625 10.8361 279.984 12.7057 7.31022 
+33.36 58.3675 41.6325 271.396 17.7658 10.8386 279.984 12.7064 7.30982 
+33.37 58.3579 41.6421 271.39 17.7691 10.8411 279.984 12.707 7.30943 
+33.38 58.3482 41.6518 271.384 17.7724 10.8436 279.983 12.7077 7.30903 
+33.39 58.3385 41.6615 271.378 17.7757 10.8461 279.983 12.7084 7.30864 
+33.4 58.3288 41.6712 271.372 17.779 10.8486 279.983 12.7091 7.30824 
+33.41 58.3191 41.6809 271.367 17.7823 10.8511 279.982 12.7097 7.30785 
+33.42 58.3095 41.6905 271.361 17.7856 10.8536 279.982 12.7104 7.30746 
+33.43 58.2998 41.7002 271.355 17.7889 10.8561 279.982 12.7111 7.30706 
+33.44 58.2901 41.7099 271.349 17.7922 10.8586 279.982 12.7118 7.30667 
+33.45 58.2804 41.7196 271.343 17.7955 10.8612 279.981 12.7124 7.30628 
+33.46 58.2707 41.7293 271.338 17.7988 10.8637 279.981 12.7131 7.30589 
+33.47 58.2611 41.7389 271.332 17.8021 10.8662 279.981 12.7138 7.30549 
+33.48 58.2514 41.7486 271.326 17.8054 10.8687 279.98 12.7145 7.3051 
+33.49 58.2417 41.7583 271.32 17.8087 10.8712 279.98 12.7151 7.30471 
+33.5 58.232 41.768 271.314 17.812 10.8737 279.98 12.7158 7.30432 
+33.51 58.2223 41.7777 271.308 17.8153 10.8762 279.98 12.7165 7.30393 
+33.52 58.2127 41.7873 271.303 17.8186 10.8788 279.979 12.7172 7.30354 
+33.53 58.203 41.797 271.297 17.8219 10.8813 279.979 12.7178 7.30315 
+33.54 58.1933 41.8067 271.291 17.8253 10.8838 279.979 12.7185 7.30276 
+33.55 58.1836 41.8164 271.285 17.8286 10.8863 279.978 12.7192 7.30238 
+33.56 58.174 41.826 271.279 17.8319 10.8888 279.978 12.7199 7.30199 
+33.57 58.1643 41.8357 271.273 17.8352 10.8914 279.978 12.7205 7.3016 
+33.58 58.1546 41.8454 271.268 17.8385 10.8939 279.978 12.7212 7.30121 
+33.59 58.1449 41.8551 271.262 17.8418 10.8964 279.977 12.7219 7.30083 
+33.6 58.1352 41.8648 271.256 17.8451 10.899 279.977 12.7226 7.30044 
+33.61 58.1256 41.8744 271.25 17.8484 10.9015 279.977 12.7233 7.30005 
+33.62 58.1159 41.8841 271.244 17.8517 10.904 279.976 12.7239 7.29967 
+33.63 58.1062 41.8938 271.238 17.8551 10.9065 279.976 12.7246 7.29928 
+33.64 58.0965 41.9035 271.233 17.8584 10.9091 279.976 12.7253 7.2989 
+33.65 58.0868 41.9132 271.227 17.8617 10.9116 279.976 12.726 7.29851 
+33.66 58.0772 41.9228 271.221 17.865 10.9142 279.975 12.7267 7.29813 
+33.67 58.0675 41.9325 271.215 17.8683 10.9167 279.975 12.7273 7.29774 
+33.68 58.0578 41.9422 271.209 17.8716 10.9192 279.975 12.728 7.29736 
+33.69 58.0481 41.9519 271.203 17.875 10.9218 279.974 12.7287 7.29698 
+33.7 58.0385 41.9615 271.197 17.8783 10.9243 279.974 12.7294 7.29659 
+33.71 58.0288 41.9712 271.192 17.8816 10.9269 279.974 12.73 7.29621 
+33.72 58.0191 41.9809 271.186 17.8849 10.9294 279.973 12.7307 7.29583 
+33.73 58.0094 41.9906 271.18 17.8882 10.932 279.973 12.7314 7.29545 
+33.74 57.9997 42.0003 271.174 17.8916 10.9345 279.973 12.7321 7.29507 
+33.75 57.9901 42.0099 271.168 17.8949 10.9371 279.973 12.7328 7.29469 
+33.76 57.9804 42.0196 271.162 17.8982 10.9396 279.972 12.7334 7.29431 
+33.77 57.9707 42.0293 271.156 17.9015 10.9422 279.972 12.7341 7.29393 
+33.78 57.961 42.039 271.15 17.9048 10.9447 279.972 12.7348 7.29355 
+33.79 57.9514 42.0486 271.145 17.9082 10.9473 279.971 12.7355 7.29317 
+33.8 57.9417 42.0583 271.139 17.9115 10.9498 279.971 12.7362 7.29279 
+33.81 57.932 42.068 271.133 17.9148 10.9524 279.971 12.7369 7.29241 
+33.82 57.9223 42.0777 271.127 17.9181 10.9549 279.97 12.7375 7.29203 
+33.83 57.9127 42.0873 271.121 17.9215 10.9575 279.97 12.7382 7.29165 
+33.84 57.903 42.097 271.115 17.9248 10.9601 279.97 12.7389 7.29128 
+33.85 57.8933 42.1067 271.109 17.9281 10.9626 279.97 12.7396 7.2909 
+33.86 57.8836 42.1164 271.103 17.9314 10.9652 279.969 12.7403 7.29052 
+33.87 57.8739 42.1261 271.097 17.9348 10.9678 279.969 12.7409 7.29015 
+33.88 57.8643 42.1357 271.092 17.9381 10.9703 279.969 12.7416 7.28977 
+33.89 57.8546 42.1454 271.086 17.9414 10.9729 279.968 12.7423 7.2894 
+33.9 57.8449 42.1551 271.08 17.9448 10.9755 279.968 12.743 7.28902 
+33.91 57.8352 42.1648 271.074 17.9481 10.978 279.968 12.7437 7.28865 
+33.92 57.8256 42.1744 271.068 17.9514 10.9806 279.967 12.7444 7.28827 
+33.93 57.8159 42.1841 271.062 17.9547 10.9832 279.967 12.745 7.2879 
+33.94 57.8062 42.1938 271.056 17.9581 10.9858 279.967 12.7457 7.28752 
+33.95 57.7965 42.2035 271.05 17.9614 10.9884 279.966 12.7464 7.28715 
+33.96 57.7869 42.2131 271.044 17.9647 10.9909 279.966 12.7471 7.28678 
+33.97 57.7772 42.2228 271.038 17.9681 10.9935 279.966 12.7478 7.28641 
+33.98 57.7675 42.2325 271.032 17.9714 10.9961 279.966 12.7485 7.28603 
+33.99 57.7578 42.2422 271.027 17.9747 10.9987 279.965 12.7491 7.28566 
+34 57.7482 42.2518 271.021 17.9781 11.0013 279.965 12.7498 7.28529 
+34.01 57.7385 42.2615 271.015 17.9814 11.0038 279.965 12.7505 7.28492 
+34.02 57.7288 42.2712 271.009 17.9848 11.0064 279.964 12.7512 7.28455 
+34.03 57.7191 42.2809 271.003 17.9881 11.009 279.964 12.7519 7.28418 
+34.04 57.7095 42.2905 270.997 17.9914 11.0116 279.964 12.7526 7.28381 
+34.05 57.6998 42.3002 270.991 17.9948 11.0142 279.963 12.7532 7.28344 
+34.06 57.6901 42.3099 270.985 17.9981 11.0168 279.963 12.7539 7.28307 
+34.07 57.6804 42.3196 270.979 18.0014 11.0194 279.963 12.7546 7.28271 
+34.08 57.6708 42.3292 270.973 18.0048 11.022 279.962 12.7553 7.28234 
+34.09 57.6611 42.3389 270.967 18.0081 11.0246 279.962 12.756 7.28197 
+34.1 57.6514 42.3486 270.961 18.0115 11.0272 279.962 12.7567 7.2816 
+34.11 57.6418 42.3582 270.955 18.0148 11.0298 279.961 12.7574 7.28124 
+34.12 57.6321 42.3679 270.949 18.0181 11.0324 279.961 12.758 7.28087 
+34.13 57.6224 42.3776 270.944 18.0215 11.035 279.961 12.7587 7.2805 
+34.14 57.6127 42.3873 270.938 18.0248 11.0376 279.96 12.7594 7.28014 
+34.15 57.6031 42.3969 270.932 18.0282 11.0402 279.96 12.7601 7.27977 
+34.16 57.5934 42.4066 270.926 18.0315 11.0428 279.96 12.7608 7.27941 
+34.17 57.5837 42.4163 270.92 18.0349 11.0454 279.959 12.7615 7.27904 
+34.18 57.574 42.426 270.914 18.0382 11.048 279.959 12.7622 7.27868 
+34.19 57.5644 42.4356 270.908 18.0416 11.0506 279.959 12.7628 7.27832 
+34.2 57.5547 42.4453 270.902 18.0449 11.0532 279.959 12.7635 7.27795 
+34.21 57.545 42.455 270.896 18.0482 11.0559 279.958 12.7642 7.27759 
+34.22 57.5353 42.4647 270.89 18.0516 11.0585 279.958 12.7649 7.27723 
+34.23 57.5257 42.4743 270.884 18.0549 11.0611 279.958 12.7656 7.27686 
+34.24 57.516 42.484 270.878 18.0583 11.0637 279.957 12.7663 7.2765 
+34.25 57.5063 42.4937 270.872 18.0616 11.0663 279.957 12.767 7.27614 
+34.26 57.4967 42.5033 270.866 18.065 11.0689 279.957 12.7677 7.27578 
+34.27 57.487 42.513 270.86 18.0683 11.0716 279.956 12.7683 7.27542 
+34.28 57.4773 42.5227 270.854 18.0717 11.0742 279.956 12.769 7.27506 
+34.29 57.4676 42.5324 270.848 18.075 11.0768 279.956 12.7697 7.2747 
+34.3 57.458 42.542 270.842 18.0784 11.0794 279.955 12.7704 7.27434 
+34.31 57.4483 42.5517 270.836 18.0817 11.0821 279.955 12.7711 7.27398 
+34.32 57.4386 42.5614 270.83 18.0851 11.0847 279.955 12.7718 7.27362 
+34.33 57.429 42.571 270.824 18.0884 11.0873 279.954 12.7725 7.27327 
+34.34 57.4193 42.5807 270.818 18.0918 11.0899 279.954 12.7732 7.27291 
+34.35 57.4096 42.5904 270.812 18.0952 11.0926 279.954 12.7739 7.27255 
+34.36 57.3999 42.6001 270.806 18.0985 11.0952 279.953 12.7746 7.27219 
+34.37 57.3903 42.6097 270.8 18.1019 11.0979 279.953 12.7752 7.27184 
+34.38 57.3806 42.6194 270.794 18.1052 11.1005 279.953 12.7759 7.27148 
+34.39 57.3709 42.6291 270.788 18.1086 11.1031 279.952 12.7766 7.27112 
+34.4 57.3613 42.6387 270.782 18.1119 11.1058 279.952 12.7773 7.27077 
+34.41 57.3516 42.6484 270.776 18.1153 11.1084 279.952 12.778 7.27041 
+34.42 57.3419 42.6581 270.77 18.1187 11.111 279.951 12.7787 7.27006 
+34.43 57.3322 42.6678 270.764 18.122 11.1137 279.951 12.7794 7.26971 
+34.44 57.3226 42.6774 270.758 18.1254 11.1163 279.951 12.7801 7.26935 
+34.45 57.3129 42.6871 270.752 18.1287 11.119 279.95 12.7808 7.269 
+34.46 57.3032 42.6968 270.746 18.1321 11.1216 279.95 12.7815 7.26865 
+34.47 57.2936 42.7064 270.74 18.1355 11.1243 279.95 12.7821 7.26829 
+34.48 57.2839 42.7161 270.734 18.1388 11.1269 279.949 12.7828 7.26794 
+34.49 57.2742 42.7258 270.728 18.1422 11.1296 279.949 12.7835 7.26759 
+34.5 57.2646 42.7354 270.722 18.1455 11.1322 279.949 12.7842 7.26724 
+34.51 57.2549 42.7451 270.716 18.1489 11.1349 279.948 12.7849 7.26689 
+34.52 57.2452 42.7548 270.71 18.1523 11.1375 279.948 12.7856 7.26654 
+34.53 57.2356 42.7644 270.704 18.1556 11.1402 279.948 12.7863 7.26618 
+34.54 57.2259 42.7741 270.698 18.159 11.1429 279.947 12.787 7.26583 
+34.55 57.2162 42.7838 270.692 18.1624 11.1455 279.947 12.7877 7.26549 
+34.56 57.2065 42.7935 270.686 18.1657 11.1482 279.946 12.7884 7.26514 
+34.57 57.1969 42.8031 270.68 18.1691 11.1508 279.946 12.7891 7.26479 
+34.58 57.1872 42.8128 270.674 18.1725 11.1535 279.946 12.7898 7.26444 
+34.59 57.1775 42.8225 270.668 18.1758 11.1562 279.945 12.7905 7.26409 
+34.6 57.1679 42.8321 270.662 18.1792 11.1588 279.945 12.7912 7.26374 
+34.61 57.1582 42.8418 270.656 18.1826 11.1615 279.945 12.7918 7.2634 
+34.62 57.1485 42.8515 270.65 18.1859 11.1642 279.944 12.7925 7.26305 
+34.63 57.1389 42.8611 270.644 18.1893 11.1669 279.944 12.7932 7.2627 
+34.64 57.1292 42.8708 270.638 18.1927 11.1695 279.944 12.7939 7.26236 
+34.65 57.1195 42.8805 270.632 18.1961 11.1722 279.943 12.7946 7.26201 
+34.66 57.1099 42.8901 270.626 18.1994 11.1749 279.943 12.7953 7.26167 
+34.67 57.1002 42.8998 270.62 18.2028 11.1776 279.943 12.796 7.26132 
+34.68 57.0905 42.9095 270.614 18.2062 11.1802 279.942 12.7967 7.26098 
+34.69 57.0809 42.9191 270.608 18.2095 11.1829 279.942 12.7974 7.26063 
+34.7 57.0712 42.9288 270.601 18.2129 11.1856 279.942 12.7981 7.26029 
+34.71 57.0615 42.9385 270.595 18.2163 11.1883 279.941 12.7988 7.25995 
+34.72 57.0519 42.9481 270.589 18.2197 11.191 279.941 12.7995 7.2596 
+34.73 57.0422 42.9578 270.583 18.223 11.1936 279.941 12.8002 7.25926 
+34.74 57.0325 42.9675 270.577 18.2264 11.1963 279.94 12.8009 7.25892 
+34.75 57.0229 42.9771 270.571 18.2298 11.199 279.94 12.8016 7.25858 
+34.76 57.0132 42.9868 270.565 18.2332 11.2017 279.939 12.8023 7.25824 
+34.77 57.0035 42.9965 270.559 18.2366 11.2044 279.939 12.803 7.2579 
+34.78 56.9939 43.0061 270.553 18.2399 11.2071 279.939 12.8037 7.25756 
+34.79 56.9842 43.0158 270.547 18.2433 11.2098 279.938 12.8044 7.25722 
+34.8 56.9745 43.0255 270.541 18.2467 11.2125 279.938 12.8051 7.25688 
+34.81 56.9649 43.0351 270.535 18.2501 11.2152 279.938 12.8058 7.25654 
+34.82 56.9552 43.0448 270.529 18.2534 11.2179 279.937 12.8065 7.2562 
+34.83 56.9455 43.0545 270.523 18.2568 11.2206 279.937 12.8072 7.25586 
+34.84 56.9359 43.0641 270.517 18.2602 11.2233 279.937 12.8079 7.25552 
+34.85 56.9262 43.0738 270.51 18.2636 11.226 279.936 12.8086 7.25519 
+34.86 56.9165 43.0835 270.504 18.267 11.2287 279.936 12.8093 7.25485 
+34.87 56.9069 43.0931 270.498 18.2704 11.2314 279.936 12.81 7.25451 
+34.88 56.8972 43.1028 270.492 18.2737 11.2341 279.935 12.8106 7.25418 
+34.89 56.8875 43.1125 270.486 18.2771 11.2368 279.935 12.8113 7.25384 
+34.9 56.8779 43.1221 270.48 18.2805 11.2395 279.934 12.812 7.2535 
+34.91 56.8682 43.1318 270.474 18.2839 11.2422 279.934 12.8127 7.25317 
+34.92 56.8586 43.1414 270.468 18.2873 11.2449 279.934 12.8134 7.25283 
+34.93 56.8489 43.1511 270.462 18.2907 11.2476 279.933 12.8141 7.2525 
+34.94 56.8392 43.1608 270.456 18.2941 11.2503 279.933 12.8148 7.25217 
+34.95 56.8296 43.1704 270.449 18.2974 11.2531 279.933 12.8155 7.25183 
+34.96 56.8199 43.1801 270.443 18.3008 11.2558 279.932 12.8162 7.2515 
+34.97 56.8102 43.1898 270.437 18.3042 11.2585 279.932 12.8169 7.25117 
+34.98 56.8006 43.1994 270.431 18.3076 11.2612 279.932 12.8176 7.25083 
+34.99 56.7909 43.2091 270.425 18.311 11.2639 279.931 12.8183 7.2505 
+35 56.7812 43.2188 270.419 18.3144 11.2667 279.931 12.819 7.25017 
+35.01 56.7716 43.2284 270.413 18.3178 11.2694 279.93 12.8197 7.24984 
+35.02 56.7619 43.2381 270.407 18.3212 11.2721 279.93 12.8204 7.24951 
+35.03 56.7523 43.2477 270.401 18.3246 11.2748 279.93 12.8211 7.24918 
+35.04 56.7426 43.2574 270.394 18.328 11.2776 279.929 12.8219 7.24885 
+35.05 56.7329 43.2671 270.388 18.3314 11.2803 279.929 12.8226 7.24852 
+35.06 56.7233 43.2767 270.382 18.3348 11.283 279.929 12.8233 7.24819 
+35.07 56.7136 43.2864 270.376 18.3381 11.2857 279.928 12.824 7.24786 
+35.08 56.7039 43.2961 270.37 18.3415 11.2885 279.928 12.8247 7.24753 
+35.09 56.6943 43.3057 270.364 18.3449 11.2912 279.927 12.8254 7.24721 
+35.1 56.6846 43.3154 270.358 18.3483 11.2939 279.927 12.8261 7.24688 
+35.11 56.675 43.325 270.352 18.3517 11.2967 279.927 12.8268 7.24655 
+35.12 56.6653 43.3347 270.345 18.3551 11.2994 279.926 12.8275 7.24622 
+35.13 56.6556 43.3444 270.339 18.3585 11.3022 279.926 12.8282 7.2459 
+35.14 56.646 43.354 270.333 18.3619 11.3049 279.926 12.8289 7.24557 
+35.15 56.6363 43.3637 270.327 18.3653 11.3077 279.925 12.8296 7.24525 
+35.16 56.6266 43.3734 270.321 18.3687 11.3104 279.925 12.8303 7.24492 
+35.17 56.617 43.383 270.315 18.3721 11.3131 279.924 12.831 7.2446 
+35.18 56.6073 43.3927 270.309 18.3755 11.3159 279.924 12.8317 7.24427 
+35.19 56.5977 43.4023 270.302 18.3789 11.3186 279.924 12.8324 7.24395 
+35.2 56.588 43.412 270.296 18.3823 11.3214 279.923 12.8331 7.24363 
+35.21 56.5783 43.4217 270.29 18.3857 11.3241 279.923 12.8338 7.2433 
+35.22 56.5687 43.4313 270.284 18.3891 11.3269 279.923 12.8345 7.24298 
+35.23 56.559 43.441 270.278 18.3925 11.3296 279.922 12.8352 7.24266 
+35.24 56.5494 43.4506 270.272 18.3959 11.3324 279.922 12.8359 7.24234 
+35.25 56.5397 43.4603 270.266 18.3993 11.3352 279.921 12.8366 7.24201 
+35.26 56.53 43.47 270.259 18.4027 11.3379 279.921 12.8373 7.24169 
+35.27 56.5204 43.4796 270.253 18.4062 11.3407 279.921 12.838 7.24137 
+35.28 56.5107 43.4893 270.247 18.4096 11.3434 279.92 12.8387 7.24105 
+35.29 56.5011 43.4989 270.241 18.413 11.3462 279.92 12.8394 7.24073 
+35.3 56.4914 43.5086 270.235 18.4164 11.349 279.919 12.8401 7.24041 
+35.31 56.4818 43.5182 270.228 18.4198 11.3517 279.919 12.8409 7.24009 
+35.32 56.4721 43.5279 270.222 18.4232 11.3545 279.919 12.8416 7.23978 
+35.33 56.4624 43.5376 270.216 18.4266 11.3573 279.918 12.8423 7.23946 
+35.34 56.4528 43.5472 270.21 18.43 11.36 279.918 12.843 7.23914 
+35.35 56.4431 43.5569 270.204 18.4334 11.3628 279.917 12.8437 7.23882 
+35.36 56.4335 43.5665 270.198 18.4368 11.3656 279.917 12.8444 7.23851 
+35.37 56.4238 43.5762 270.191 18.4402 11.3683 279.917 12.8451 7.23819 
+35.38 56.4141 43.5859 270.185 18.4437 11.3711 279.916 12.8458 7.23787 
+35.39 56.4045 43.5955 270.179 18.4471 11.3739 279.916 12.8465 7.23756 
+35.4 56.3948 43.6052 270.173 18.4505 11.3767 279.916 12.8472 7.23724 
+35.41 56.3852 43.6148 270.167 18.4539 11.3794 279.915 12.8479 7.23693 
+35.42 56.3755 43.6245 270.16 18.4573 11.3822 279.915 12.8486 7.23661 
+35.43 56.3659 43.6341 270.154 18.4607 11.385 279.914 12.8493 7.2363 
+35.44 56.3562 43.6438 270.148 18.4641 11.3878 279.914 12.8501 7.23598 
+35.45 56.3465 43.6535 270.142 18.4675 11.3906 279.914 12.8508 7.23567 
+35.46 56.3369 43.6631 270.136 18.471 11.3934 279.913 12.8515 7.23536 
+35.47 56.3272 43.6728 270.129 18.4744 11.3961 279.913 12.8522 7.23505 
+35.48 56.3176 43.6824 270.123 18.4778 11.3989 279.912 12.8529 7.23473 
+35.49 56.3079 43.6921 270.117 18.4812 11.4017 279.912 12.8536 7.23442 
+35.5 56.2983 43.7017 270.111 18.4846 11.4045 279.912 12.8543 7.23411 
+35.51 56.2886 43.7114 270.105 18.4881 11.4073 279.911 12.855 7.2338 
+35.52 56.2789 43.7211 270.098 18.4915 11.4101 279.911 12.8557 7.23349 
+35.53 56.2693 43.7307 270.092 18.4949 11.4129 279.91 12.8564 7.23318 
+35.54 56.2596 43.7404 270.086 18.4983 11.4157 279.91 12.8571 7.23287 
+35.55 56.25 43.75 270.08 18.5017 11.4185 279.91 12.8579 7.23256 
+35.56 56.2403 43.7597 270.074 18.5052 11.4213 279.909 12.8586 7.23225 
+35.57 56.2307 43.7693 270.067 18.5086 11.4241 279.909 12.8593 7.23194 
+35.58 56.221 43.779 270.061 18.512 11.4269 279.908 12.86 7.23163 
+35.59 56.2114 43.7886 270.055 18.5154 11.4297 279.908 12.8607 7.23133 
+35.6 56.2017 43.7983 270.049 18.5188 11.4325 279.908 12.8614 7.23102 
+35.61 56.1921 43.8079 270.042 18.5223 11.4353 279.907 12.8621 7.23071 
+35.62 56.1824 43.8176 270.036 18.5257 11.4381 279.907 12.8628 7.23041 
+35.63 56.1727 43.8273 270.03 18.5291 11.4409 279.906 12.8635 7.2301 
+35.64 56.1631 43.8369 270.024 18.5325 11.4437 279.906 12.8643 7.2298 
+35.65 56.1534 43.8466 270.017 18.536 11.4466 279.906 12.865 7.22949 
+35.66 56.1438 43.8562 270.011 18.5394 11.4494 279.905 12.8657 7.22919 
+35.67 56.1341 43.8659 270.005 18.5428 11.4522 279.905 12.8664 7.22888 
+35.68 56.1245 43.8755 269.999 18.5463 11.455 279.904 12.8671 7.22858 
+35.69 56.1148 43.8852 269.993 18.5497 11.4578 279.904 12.8678 7.22827 
+35.7 56.1052 43.8948 269.986 18.5531 11.4606 279.903 12.8685 7.22797 
+35.71 56.0955 43.9045 269.98 18.5565 11.4635 279.903 12.8693 7.22767 
+35.72 56.0859 43.9141 269.974 18.56 11.4663 279.903 12.87 7.22737 
+35.73 56.0762 43.9238 269.967 18.5634 11.4691 279.902 12.8707 7.22706 
+35.74 56.0666 43.9334 269.961 18.5668 11.4719 279.902 12.8714 7.22676 
+35.75 56.0569 43.9431 269.955 18.5703 11.4747 279.901 12.8721 7.22646 
+35.76 56.0473 43.9527 269.949 18.5737 11.4776 279.901 12.8728 7.22616 
+35.77 56.0376 43.9624 269.942 18.5771 11.4804 279.901 12.8735 7.22586 
+35.78 56.028 43.972 269.936 18.5806 11.4832 279.9 12.8743 7.22556 
+35.79 56.0183 43.9817 269.93 18.584 11.4861 279.9 12.875 7.22526 
+35.8 56.0086 43.9914 269.924 18.5874 11.4889 279.899 12.8757 7.22496 
+35.81 55.999 44.001 269.917 18.5909 11.4917 279.899 12.8764 7.22466 
+35.82 55.9893 44.0107 269.911 18.5943 11.4946 279.899 12.8771 7.22437 
+35.83 55.9797 44.0203 269.905 18.5977 11.4974 279.898 12.8778 7.22407 
+35.84 55.97 44.03 269.899 18.6012 11.5002 279.898 12.8785 7.22377 
+35.85 55.9604 44.0396 269.892 18.6046 11.5031 279.897 12.8793 7.22347 
+35.86 55.9507 44.0493 269.886 18.6081 11.5059 279.897 12.88 7.22318 
+35.87 55.9411 44.0589 269.88 18.6115 11.5088 279.896 12.8807 7.22288 
+35.88 55.9314 44.0686 269.873 18.6149 11.5116 279.896 12.8814 7.22259 
+35.89 55.9218 44.0782 269.867 18.6184 11.5145 279.896 12.8821 7.22229 
+35.9 55.9121 44.0879 269.861 18.6218 11.5173 279.895 12.8828 7.222 
+35.91 55.9025 44.0975 269.855 18.6253 11.5201 279.895 12.8836 7.2217 
+35.92 55.8928 44.1072 269.848 18.6287 11.523 279.894 12.8843 7.22141 
+35.93 55.8832 44.1168 269.842 18.6321 11.5258 279.894 12.885 7.22111 
+35.94 55.8735 44.1265 269.836 18.6356 11.5287 279.893 12.8857 7.22082 
+35.95 55.8639 44.1361 269.829 18.639 11.5316 279.893 12.8864 7.22053 
+35.96 55.8542 44.1458 269.823 18.6425 11.5344 279.893 12.8872 7.22024 
+35.97 55.8446 44.1554 269.817 18.6459 11.5373 279.892 12.8879 7.21994 
+35.98 55.835 44.165 269.811 18.6494 11.5401 279.892 12.8886 7.21965 
+35.99 55.8253 44.1747 269.804 18.6528 11.543 279.891 12.8893 7.21936 
+36 55.8157 44.1843 269.798 18.6562 11.5458 279.891 12.89 7.21907 
+36.01 55.806 44.194 269.792 18.6597 11.5487 279.89 12.8907 7.21878 
+36.02 55.7964 44.2036 269.785 18.6631 11.5516 279.89 12.8915 7.21849 
+36.03 55.7867 44.2133 269.779 18.6666 11.5544 279.89 12.8922 7.2182 
+36.04 55.7771 44.2229 269.773 18.67 11.5573 279.889 12.8929 7.21791 
+36.05 55.7674 44.2326 269.766 18.6735 11.5602 279.889 12.8936 7.21762 
+36.06 55.7578 44.2422 269.76 18.6769 11.563 279.888 12.8943 7.21734 
+36.07 55.7481 44.2519 269.754 18.6804 11.5659 279.888 12.8951 7.21705 
+36.08 55.7385 44.2615 269.747 18.6838 11.5688 279.887 12.8958 7.21676 
+36.09 55.7288 44.2712 269.741 18.6873 11.5716 279.887 12.8965 7.21647 
+36.1 55.7192 44.2808 269.735 18.6907 11.5745 279.887 12.8972 7.21619 
+36.11 55.7095 44.2905 269.728 18.6942 11.5774 279.886 12.898 7.2159 
+36.12 55.6999 44.3001 269.722 18.6976 11.5803 279.886 12.8987 7.21561 
+36.13 55.6902 44.3098 269.716 18.7011 11.5831 279.885 12.8994 7.21533 
+36.14 55.6806 44.3194 269.709 18.7045 11.586 279.885 12.9001 7.21504 
+36.15 55.671 44.329 269.703 18.708 11.5889 279.884 12.9008 7.21476 
+36.16 55.6613 44.3387 269.697 18.7115 11.5918 279.884 12.9016 7.21448 
+36.17 55.6517 44.3483 269.69 18.7149 11.5947 279.884 12.9023 7.21419 
+36.18 55.642 44.358 269.684 18.7184 11.5976 279.883 12.903 7.21391 
+36.19 55.6324 44.3676 269.678 18.7218 11.6004 279.883 12.9037 7.21363 
+36.2 55.6227 44.3773 269.671 18.7253 11.6033 279.882 12.9045 7.21334 
+36.21 55.6131 44.3869 269.665 18.7287 11.6062 279.882 12.9052 7.21306 
+36.22 55.6034 44.3966 269.659 18.7322 11.6091 279.881 12.9059 7.21278 
+36.23 55.5938 44.4062 269.652 18.7356 11.612 279.881 12.9066 7.2125 
+36.24 55.5842 44.4158 269.646 18.7391 11.6149 279.88 12.9073 7.21222 
+36.25 55.5745 44.4255 269.64 18.7426 11.6178 279.88 12.9081 7.21194 
+36.26 55.5649 44.4351 269.633 18.746 11.6207 279.88 12.9088 7.21166 
+36.27 55.5552 44.4448 269.627 18.7495 11.6236 279.879 12.9095 7.21138 
+36.28 55.5456 44.4544 269.621 18.7529 11.6265 279.879 12.9102 7.2111 
+36.29 55.5359 44.4641 269.614 18.7564 11.6294 279.878 12.911 7.21082 
+36.3 55.5263 44.4737 269.608 18.7599 11.6323 279.878 12.9117 7.21054 
+36.31 55.5166 44.4834 269.601 18.7633 11.6352 279.877 12.9124 7.21027 
+36.32 55.507 44.493 269.595 18.7668 11.6381 279.877 12.9131 7.20999 
+36.33 55.4974 44.5026 269.589 18.7703 11.641 279.876 12.9139 7.20971 
+36.34 55.4877 44.5123 269.582 18.7737 11.6439 279.876 12.9146 7.20944 
+36.35 55.4781 44.5219 269.576 18.7772 11.6468 279.876 12.9153 7.20916 
+36.36 55.4684 44.5316 269.57 18.7807 11.6497 279.875 12.916 7.20888 
+36.37 55.4588 44.5412 269.563 18.7841 11.6526 279.875 12.9168 7.20861 
+36.38 55.4492 44.5508 269.557 18.7876 11.6556 279.874 12.9175 7.20833 
+36.39 55.4395 44.5605 269.55 18.7911 11.6585 279.874 12.9182 7.20806 
+36.4 55.4299 44.5701 269.544 18.7945 11.6614 279.873 12.919 7.20778 
+36.41 55.4202 44.5798 269.538 18.798 11.6643 279.873 12.9197 7.20751 
+36.42 55.4106 44.5894 269.531 18.8015 11.6672 279.872 12.9204 7.20724 
+36.43 55.401 44.599 269.525 18.8049 11.6701 279.872 12.9211 7.20697 
+36.44 55.3913 44.6087 269.519 18.8084 11.6731 279.871 12.9219 7.20669 
+36.45 55.3817 44.6183 269.512 18.8119 11.676 279.871 12.9226 7.20642 
+36.46 55.372 44.628 269.506 18.8153 11.6789 279.871 12.9233 7.20615 
+36.47 55.3624 44.6376 269.499 18.8188 11.6818 279.87 12.9241 7.20588 
+36.48 55.3528 44.6472 269.493 18.8223 11.6848 279.87 12.9248 7.20561 
+36.49 55.3431 44.6569 269.487 18.8258 11.6877 279.869 12.9255 7.20534 
+36.5 55.3335 44.6665 269.48 18.8292 11.6906 279.869 12.9262 7.20507 
+36.51 55.3238 44.6762 269.474 18.8327 11.6936 279.868 12.927 7.2048 
+36.52 55.3142 44.6858 269.467 18.8362 11.6965 279.868 12.9277 7.20453 
+36.53 55.3046 44.6954 269.461 18.8396 11.6994 279.867 12.9284 7.20426 
+36.54 55.2949 44.7051 269.455 18.8431 11.7024 279.867 12.9292 7.20399 
+36.55 55.2853 44.7147 269.448 18.8466 11.7053 279.866 12.9299 7.20373 
+36.56 55.2756 44.7244 269.442 18.8501 11.7082 279.866 12.9306 7.20346 
+36.57 55.266 44.734 269.435 18.8535 11.7112 279.865 12.9313 7.20319 
+36.58 55.2564 44.7436 269.429 18.857 11.7141 279.865 12.9321 7.20292 
+36.59 55.2467 44.7533 269.422 18.8605 11.717 279.865 12.9328 7.20266 
+36.6 55.2371 44.7629 269.416 18.864 11.72 279.864 12.9335 7.20239 
+36.61 55.2275 44.7725 269.41 18.8675 11.7229 279.864 12.9343 7.20213 
+36.62 55.2178 44.7822 269.403 18.8709 11.7259 279.863 12.935 7.20186 
+36.63 55.2082 44.7918 269.397 18.8744 11.7288 279.863 12.9357 7.2016 
+36.64 55.1985 44.8015 269.39 18.8779 11.7318 279.862 12.9365 7.20134 
+36.65 55.1889 44.8111 269.384 18.8814 11.7347 279.862 12.9372 7.20107 
+36.66 55.1793 44.8207 269.377 18.8849 11.7377 279.861 12.9379 7.20081 
+36.67 55.1696 44.8304 269.371 18.8883 11.7406 279.861 12.9387 7.20055 
+36.68 55.16 44.84 269.365 18.8918 11.7436 279.86 12.9394 7.20028 
+36.69 55.1504 44.8496 269.358 18.8953 11.7465 279.86 12.9401 7.20002 
+36.7 55.1407 44.8593 269.352 18.8988 11.7495 279.859 12.9409 7.19976 
+36.71 55.1311 44.8689 269.345 18.9023 11.7525 279.859 12.9416 7.1995 
+36.72 55.1215 44.8785 269.339 18.9058 11.7554 279.858 12.9423 7.19924 
+36.73 55.1118 44.8882 269.332 18.9092 11.7584 279.858 12.9431 7.19898 
+36.74 55.1022 44.8978 269.326 18.9127 11.7613 279.857 12.9438 7.19872 
+36.75 55.0926 44.9074 269.319 18.9162 11.7643 279.857 12.9445 7.19846 
+36.76 55.0829 44.9171 269.313 18.9197 11.7673 279.857 12.9453 7.1982 
+36.77 55.0733 44.9267 269.307 18.9232 11.7702 279.856 12.946 7.19794 
+36.78 55.0637 44.9363 269.3 18.9267 11.7732 279.856 12.9467 7.19769 
+36.79 55.054 44.946 269.294 18.9302 11.7762 279.855 12.9475 7.19743 
+36.8 55.0444 44.9556 269.287 18.9337 11.7792 279.855 12.9482 7.19717 
+36.81 55.0348 44.9652 269.281 18.9372 11.7821 279.854 12.9489 7.19691 
+36.82 55.0251 44.9749 269.274 18.9406 11.7851 279.854 12.9497 7.19666 
+36.83 55.0155 44.9845 269.268 18.9441 11.7881 279.853 12.9504 7.1964 
+36.84 55.0059 44.9941 269.261 18.9476 11.7911 279.853 12.9512 7.19615 
+36.85 54.9962 45.0038 269.255 18.9511 11.794 279.852 12.9519 7.19589 
+36.86 54.9866 45.0134 269.248 18.9546 11.797 279.852 12.9526 7.19564 
+36.87 54.977 45.023 269.242 18.9581 11.8 279.851 12.9534 7.19538 
+36.88 54.9673 45.0327 269.235 18.9616 11.803 279.851 12.9541 7.19513 
+36.89 54.9577 45.0423 269.229 18.9651 11.806 279.85 12.9548 7.19488 
+36.9 54.9481 45.0519 269.222 18.9686 11.8089 279.85 12.9556 7.19462 
+36.91 54.9384 45.0616 269.216 18.9721 11.8119 279.849 12.9563 7.19437 
+36.92 54.9288 45.0712 269.21 18.9756 11.8149 279.849 12.957 7.19412 
+36.93 54.9192 45.0808 269.203 18.9791 11.8179 279.848 12.9578 7.19387 
+36.94 54.9095 45.0905 269.197 18.9826 11.8209 279.848 12.9585 7.19362 
+36.95 54.8999 45.1001 269.19 18.9861 11.8239 279.847 12.9593 7.19337 
+36.96 54.8903 45.1097 269.184 18.9896 11.8269 279.847 12.96 7.19311 
+36.97 54.8806 45.1194 269.177 18.9931 11.8299 279.846 12.9607 7.19286 
+36.98 54.871 45.129 269.171 18.9966 11.8329 279.846 12.9615 7.19262 
+36.99 54.8614 45.1386 269.164 19.0001 11.8359 279.845 12.9622 7.19237 
+37 54.8518 45.1482 269.158 19.0036 11.8389 279.845 12.963 7.19212 
+37.01 54.8421 45.1579 269.151 19.0071 11.8419 279.844 12.9637 7.19187 
+37.02 54.8325 45.1675 269.145 19.0106 11.8449 279.844 12.9644 7.19162 
+37.03 54.8229 45.1771 269.138 19.0141 11.8479 279.843 12.9652 7.19137 
+37.04 54.8132 45.1868 269.132 19.0176 11.8509 279.843 12.9659 7.19113 
+37.05 54.8036 45.1964 269.125 19.0211 11.8539 279.842 12.9667 7.19088 
+37.06 54.794 45.206 269.119 19.0246 11.8569 279.842 12.9674 7.19064 
+37.07 54.7844 45.2156 269.112 19.0281 11.8599 279.841 12.9681 7.19039 
+37.08 54.7747 45.2253 269.106 19.0316 11.8629 279.841 12.9689 7.19014 
+37.09 54.7651 45.2349 269.099 19.0351 11.8659 279.84 12.9696 7.1899 
+37.1 54.7555 45.2445 269.092 19.0386 11.8689 279.84 12.9704 7.18966 
+37.11 54.7458 45.2542 269.086 19.0421 11.8719 279.839 12.9711 7.18941 
+37.12 54.7362 45.2638 269.079 19.0456 11.875 279.839 12.9718 7.18917 
+37.13 54.7266 45.2734 269.073 19.0491 11.878 279.838 12.9726 7.18893 
+37.14 54.717 45.283 269.066 19.0526 11.881 279.838 12.9733 7.18868 
+37.15 54.7073 45.2927 269.06 19.0561 11.884 279.837 12.9741 7.18844 
+37.16 54.6977 45.3023 269.053 19.0596 11.887 279.837 12.9748 7.1882 
+37.17 54.6881 45.3119 269.047 19.0631 11.8901 279.836 12.9756 7.18796 
+37.18 54.6785 45.3215 269.04 19.0666 11.8931 279.836 12.9763 7.18772 
+37.19 54.6688 45.3312 269.034 19.0702 11.8961 279.835 12.977 7.18748 
+37.2 54.6592 45.3408 269.027 19.0737 11.8991 279.835 12.9778 7.18724 
+37.21 54.6496 45.3504 269.021 19.0772 11.9022 279.834 12.9785 7.187 
+37.22 54.64 45.36 269.014 19.0807 11.9052 279.834 12.9793 7.18676 
+37.23 54.6303 45.3697 269.008 19.0842 11.9082 279.833 12.98 7.18652 
+37.24 54.6207 45.3793 269.001 19.0877 11.9113 279.833 12.9808 7.18628 
+37.25 54.6111 45.3889 268.994 19.0912 11.9143 279.832 12.9815 7.18604 
+37.26 54.6015 45.3985 268.988 19.0947 11.9173 279.832 12.9823 7.18581 
+37.27 54.5918 45.4082 268.981 19.0983 11.9204 279.831 12.983 7.18557 
+37.28 54.5822 45.4178 268.975 19.1018 11.9234 279.831 12.9838 7.18533 
+37.29 54.5726 45.4274 268.968 19.1053 11.9264 279.83 12.9845 7.1851 
+37.3 54.563 45.437 268.962 19.1088 11.9295 279.83 12.9852 7.18486 
+37.31 54.5534 45.4466 268.955 19.1123 11.9325 279.829 12.986 7.18462 
+37.32 54.5437 45.4563 268.949 19.1158 11.9356 279.829 12.9867 7.18439 
+37.33 54.5341 45.4659 268.942 19.1193 11.9386 279.828 12.9875 7.18416 
+37.34 54.5245 45.4755 268.935 19.1229 11.9417 279.828 12.9882 7.18392 
+37.35 54.5149 45.4851 268.929 19.1264 11.9447 279.827 12.989 7.18369 
+37.36 54.5052 45.4948 268.922 19.1299 11.9478 279.827 12.9897 7.18345 
+37.37 54.4956 45.5044 268.916 19.1334 11.9508 279.826 12.9905 7.18322 
+37.38 54.486 45.514 268.909 19.1369 11.9539 279.826 12.9912 7.18299 
+37.39 54.4764 45.5236 268.903 19.1405 11.9569 279.825 12.992 7.18276 
+37.4 54.4668 45.5332 268.896 19.144 11.96 279.825 12.9927 7.18253 
+37.41 54.4571 45.5429 268.889 19.1475 11.963 279.824 12.9935 7.1823 
+37.42 54.4475 45.5525 268.883 19.151 11.9661 279.824 12.9942 7.18207 
+37.43 54.4379 45.5621 268.876 19.1546 11.9691 279.823 12.995 7.18183 
+37.44 54.4283 45.5717 268.87 19.1581 11.9722 279.823 12.9957 7.18161 
+37.45 54.4187 45.5813 268.863 19.1616 11.9753 279.822 12.9965 7.18138 
+37.46 54.409 45.591 268.857 19.1651 11.9783 279.822 12.9972 7.18115 
+37.47 54.3994 45.6006 268.85 19.1686 11.9814 279.821 12.998 7.18092 
+37.48 54.3898 45.6102 268.843 19.1722 11.9845 279.821 12.9987 7.18069 
+37.49 54.3802 45.6198 268.837 19.1757 11.9875 279.82 12.9995 7.18046 
+37.5 54.3706 45.6294 268.83 19.1792 11.9906 279.82 13.0002 7.18024 
+37.51 54.3609 45.6391 268.824 19.1828 11.9937 279.819 13.001 7.18001 
+37.52 54.3513 45.6487 268.817 19.1863 11.9967 279.819 13.0017 7.17978 
+37.53 54.3417 45.6583 268.81 19.1898 11.9998 279.818 13.0025 7.17956 
+37.54 54.3321 45.6679 268.804 19.1933 12.0029 279.817 13.0032 7.17933 
+37.55 54.3225 45.6775 268.797 19.1969 12.006 279.817 13.004 7.17911 
+37.56 54.3129 45.6871 268.791 19.2004 12.009 279.816 13.0047 7.17888 
+37.57 54.3032 45.6968 268.784 19.2039 12.0121 279.816 13.0055 7.17866 
+37.58 54.2936 45.7064 268.777 19.2075 12.0152 279.815 13.0062 7.17844 
+37.59 54.284 45.716 268.771 19.211 12.0183 279.815 13.007 7.17821 
+37.6 54.2744 45.7256 268.764 19.2145 12.0214 279.814 13.0077 7.17799 
+37.61 54.2648 45.7352 268.758 19.2181 12.0244 279.814 13.0085 7.17777 
+37.62 54.2552 45.7448 268.751 19.2216 12.0275 279.813 13.0092 7.17755 
+37.63 54.2455 45.7545 268.744 19.2251 12.0306 279.813 13.01 7.17732 
+37.64 54.2359 45.7641 268.738 19.2287 12.0337 279.812 13.0107 7.1771 
+37.65 54.2263 45.7737 268.731 19.2322 12.0368 279.812 13.0115 7.17688 
+37.66 54.2167 45.7833 268.724 19.2357 12.0399 279.811 13.0122 7.17666 
+37.67 54.2071 45.7929 268.718 19.2393 12.043 279.811 13.013 7.17644 
+37.68 54.1975 45.8025 268.711 19.2428 12.0461 279.81 13.0138 7.17622 
+37.69 54.1878 45.8122 268.705 19.2463 12.0492 279.809 13.0145 7.17601 
+37.7 54.1782 45.8218 268.698 19.2499 12.0523 279.809 13.0153 7.17579 
+37.71 54.1686 45.8314 268.691 19.2534 12.0553 279.808 13.016 7.17557 
+37.72 54.159 45.841 268.685 19.2569 12.0584 279.808 13.0168 7.17535 
+37.73 54.1494 45.8506 268.678 19.2605 12.0615 279.807 13.0175 7.17513 
+37.74 54.1398 45.8602 268.671 19.264 12.0647 279.807 13.0183 7.17492 
+37.75 54.1302 45.8698 268.665 19.2676 12.0678 279.806 13.019 7.1747 
+37.76 54.1206 45.8794 268.658 19.2711 12.0709 279.806 13.0198 7.17449 
+37.77 54.1109 45.8891 268.651 19.2746 12.074 279.805 13.0206 7.17427 
+37.78 54.1013 45.8987 268.645 19.2782 12.0771 279.805 13.0213 7.17406 
+37.79 54.0917 45.9083 268.638 19.2817 12.0802 279.804 13.0221 7.17384 
+37.8 54.0821 45.9179 268.631 19.2853 12.0833 279.804 13.0228 7.17363 
+37.81 54.0725 45.9275 268.625 19.2888 12.0864 279.803 13.0236 7.17341 
+37.82 54.0629 45.9371 268.618 19.2924 12.0895 279.802 13.0243 7.1732 
+37.83 54.0533 45.9467 268.611 19.2959 12.0926 279.802 13.0251 7.17299 
+37.84 54.0437 45.9563 268.605 19.2994 12.0957 279.801 13.0259 7.17278 
+37.85 54.0341 45.9659 268.598 19.303 12.0989 279.801 13.0266 7.17256 
+37.86 54.0244 45.9756 268.591 19.3065 12.102 279.8 13.0274 7.17235 
+37.87 54.0148 45.9852 268.585 19.3101 12.1051 279.8 13.0281 7.17214 
+37.88 54.0052 45.9948 268.578 19.3136 12.1082 279.799 13.0289 7.17193 
+37.89 53.9956 46.0044 268.571 19.3172 12.1113 279.799 13.0296 7.17172 
+37.9 53.986 46.014 268.565 19.3207 12.1145 279.798 13.0304 7.17151 
+37.91 53.9764 46.0236 268.558 19.3243 12.1176 279.798 13.0312 7.1713 
+37.92 53.9668 46.0332 268.551 19.3278 12.1207 279.797 13.0319 7.17109 
+37.93 53.9572 46.0428 268.545 19.3314 12.1239 279.796 13.0327 7.17089 
+37.94 53.9476 46.0524 268.538 19.3349 12.127 279.796 13.0334 7.17068 
+37.95 53.938 46.062 268.531 19.3385 12.1301 279.795 13.0342 7.17047 
+37.96 53.9284 46.0716 268.525 19.342 12.1332 279.795 13.035 7.17026 
+37.97 53.9187 46.0813 268.518 19.3456 12.1364 279.794 13.0357 7.17006 
+37.98 53.9091 46.0909 268.511 19.3491 12.1395 279.794 13.0365 7.16985 
+37.99 53.8995 46.1005 268.505 19.3527 12.1427 279.793 13.0373 7.16964 
+38 53.8899 46.1101 268.498 19.3562 12.1458 279.793 13.038 7.16944 
+38.01 53.8803 46.1197 268.491 19.3598 12.1489 279.792 13.0388 7.16924 
+38.02 53.8707 46.1293 268.485 19.3633 12.1521 279.791 13.0395 7.16903 
+38.03 53.8611 46.1389 268.478 19.3669 12.1552 279.791 13.0403 7.16883 
+38.04 53.8515 46.1485 268.471 19.3704 12.1584 279.79 13.0411 7.16862 
+38.05 53.8419 46.1581 268.464 19.374 12.1615 279.79 13.0418 7.16842 
+38.06 53.8323 46.1677 268.458 19.3776 12.1646 279.789 13.0426 7.16822 
+38.07 53.8227 46.1773 268.451 19.3811 12.1678 279.789 13.0434 7.16802 
+38.08 53.8131 46.1869 268.444 19.3847 12.1709 279.788 13.0441 7.16781 
+38.09 53.8035 46.1965 268.438 19.3882 12.1741 279.788 13.0449 7.16761 
+38.1 53.7939 46.2061 268.431 19.3918 12.1772 279.787 13.0456 7.16741 
+38.11 53.7843 46.2157 268.424 19.3953 12.1804 279.786 13.0464 7.16721 
+38.12 53.7747 46.2253 268.418 19.3989 12.1836 279.786 13.0472 7.16701 
+38.13 53.7651 46.2349 268.411 19.4025 12.1867 279.785 13.0479 7.16681 
+38.14 53.7555 46.2445 268.404 19.406 12.1899 279.785 13.0487 7.16661 
+38.15 53.7459 46.2541 268.397 19.4096 12.193 279.784 13.0495 7.16641 
+38.16 53.7362 46.2638 268.391 19.4131 12.1962 279.784 13.0502 7.16622 
+38.17 53.7266 46.2734 268.384 19.4167 12.1994 279.783 13.051 7.16602 
+38.18 53.717 46.283 268.377 19.4203 12.2025 279.782 13.0518 7.16582 
+38.19 53.7074 46.2926 268.37 19.4238 12.2057 279.782 13.0525 7.16562 
+38.2 53.6978 46.3022 268.364 19.4274 12.2088 279.781 13.0533 7.16543 
+38.21 53.6882 46.3118 268.357 19.431 12.212 279.781 13.0541 7.16523 
+38.22 53.6786 46.3214 268.35 19.4345 12.2152 279.78 13.0548 7.16504 
+38.23 53.669 46.331 268.344 19.4381 12.2184 279.78 13.0556 7.16484 
+38.24 53.6594 46.3406 268.337 19.4417 12.2215 279.779 13.0564 7.16465 
+38.25 53.6498 46.3502 268.33 19.4452 12.2247 279.778 13.0571 7.16445 
+38.26 53.6402 46.3598 268.323 19.4488 12.2279 279.778 13.0579 7.16426 
+38.27 53.6306 46.3694 268.317 19.4524 12.231 279.777 13.0587 7.16407 
+38.28 53.621 46.379 268.31 19.4559 12.2342 279.777 13.0594 7.16387 
+38.29 53.6114 46.3886 268.303 19.4595 12.2374 279.776 13.0602 7.16368 
+38.3 53.6018 46.3982 268.296 19.4631 12.2406 279.776 13.061 7.16349 
+38.31 53.5922 46.4078 268.29 19.4666 12.2438 279.775 13.0617 7.1633 
+38.32 53.5826 46.4174 268.283 19.4702 12.2469 279.774 13.0625 7.16311 
+38.33 53.573 46.427 268.276 19.4738 12.2501 279.774 13.0633 7.16292 
+38.34 53.5634 46.4366 268.269 19.4773 12.2533 279.773 13.0641 7.16273 
+38.35 53.5538 46.4462 268.263 19.4809 12.2565 279.773 13.0648 7.16254 
+38.36 53.5442 46.4558 268.256 19.4845 12.2597 279.772 13.0656 7.16235 
+38.37 53.5346 46.4654 268.249 19.4881 12.2629 279.771 13.0664 7.16216 
+38.38 53.525 46.475 268.242 19.4916 12.2661 279.771 13.0671 7.16197 
+38.39 53.5154 46.4846 268.236 19.4952 12.2693 279.77 13.0679 7.16178 
+38.4 53.5059 46.4941 268.229 19.4988 12.2725 279.77 13.0687 7.16159 
+38.41 53.4963 46.5037 268.222 19.5024 12.2757 279.769 13.0694 7.16141 
+38.42 53.4867 46.5133 268.215 19.5059 12.2789 279.769 13.0702 7.16122 
+38.43 53.4771 46.5229 268.208 19.5095 12.2821 279.768 13.071 7.16103 
+38.44 53.4675 46.5325 268.202 19.5131 12.2853 279.767 13.0718 7.16085 
+38.45 53.4579 46.5421 268.195 19.5167 12.2885 279.767 13.0725 7.16066 
+38.46 53.4483 46.5517 268.188 19.5202 12.2917 279.766 13.0733 7.16048 
+38.47 53.4387 46.5613 268.181 19.5238 12.2949 279.766 13.0741 7.16029 
+38.48 53.4291 46.5709 268.175 19.5274 12.2981 279.765 13.0749 7.16011 
+38.49 53.4195 46.5805 268.168 19.531 12.3013 279.764 13.0756 7.15993 
+38.5 53.4099 46.5901 268.161 19.5345 12.3045 279.764 13.0764 7.15974 
+38.51 53.4003 46.5997 268.154 19.5381 12.3077 279.763 13.0772 7.15956 
+38.52 53.3907 46.6093 268.147 19.5417 12.3109 279.763 13.078 7.15938 
+38.53 53.3811 46.6189 268.141 19.5453 12.3141 279.762 13.0787 7.1592 
+38.54 53.3715 46.6285 268.134 19.5489 12.3173 279.761 13.0795 7.15902 
+38.55 53.3619 46.6381 268.127 19.5524 12.3205 279.761 13.0803 7.15884 
+38.56 53.3523 46.6477 268.12 19.556 12.3238 279.76 13.081 7.15866 
+38.57 53.3427 46.6573 268.113 19.5596 12.327 279.76 13.0818 7.15848 
+38.58 53.3332 46.6668 268.107 19.5632 12.3302 279.759 13.0826 7.1583 
+38.59 53.3236 46.6764 268.1 19.5668 12.3334 279.759 13.0834 7.15812 
+38.6 53.314 46.686 268.093 19.5704 12.3366 279.758 13.0842 7.15794 
+38.61 53.3044 46.6956 268.086 19.574 12.3399 279.757 13.0849 7.15776 
+38.62 53.2948 46.7052 268.079 19.5775 12.3431 279.757 13.0857 7.15758 
+38.63 53.2852 46.7148 268.073 19.5811 12.3463 279.756 13.0865 7.15741 
+38.64 53.2756 46.7244 268.066 19.5847 12.3495 279.756 13.0873 7.15723 
+38.65 53.266 46.734 268.059 19.5883 12.3528 279.755 13.088 7.15705 
+38.66 53.2564 46.7436 268.052 19.5919 12.356 279.754 13.0888 7.15688 
+38.67 53.2468 46.7532 268.045 19.5955 12.3592 279.754 13.0896 7.1567 
+38.68 53.2372 46.7628 268.038 19.5991 12.3625 279.753 13.0904 7.15653 
+38.69 53.2277 46.7723 268.032 19.6026 12.3657 279.753 13.0911 7.15635 
+38.7 53.2181 46.7819 268.025 19.6062 12.3689 279.752 13.0919 7.15618 
+38.71 53.2085 46.7915 268.018 19.6098 12.3722 279.751 13.0927 7.156 
+38.72 53.1989 46.8011 268.011 19.6134 12.3754 279.751 13.0935 7.15583 
+38.73 53.1893 46.8107 268.004 19.617 12.3786 279.75 13.0943 7.15566 
+38.74 53.1797 46.8203 267.998 19.6206 12.3819 279.749 13.095 7.15549 
+38.75 53.1701 46.8299 267.991 19.6242 12.3851 279.749 13.0958 7.15531 
+38.76 53.1605 46.8395 267.984 19.6278 12.3884 279.748 13.0966 7.15514 
+38.77 53.151 46.849 267.977 19.6314 12.3916 279.748 13.0974 7.15497 
+38.78 53.1414 46.8586 267.97 19.635 12.3949 279.747 13.0982 7.1548 
+38.79 53.1318 46.8682 267.963 19.6386 12.3981 279.746 13.0989 7.15463 
+38.8 53.1222 46.8778 267.956 19.6422 12.4014 279.746 13.0997 7.15446 
+38.81 53.1126 46.8874 267.95 19.6458 12.4046 279.745 13.1005 7.15429 
+38.82 53.103 46.897 267.943 19.6494 12.4079 279.745 13.1013 7.15412 
+38.83 53.0934 46.9066 267.936 19.653 12.4111 279.744 13.1021 7.15396 
+38.84 53.0839 46.9161 267.929 19.6565 12.4144 279.743 13.1028 7.15379 
+38.85 53.0743 46.9257 267.922 19.6601 12.4176 279.743 13.1036 7.15362 
+38.86 53.0647 46.9353 267.915 19.6637 12.4209 279.742 13.1044 7.15345 
+38.87 53.0551 46.9449 267.909 19.6673 12.4242 279.742 13.1052 7.15329 
+38.88 53.0455 46.9545 267.902 19.6709 12.4274 279.741 13.106 7.15312 
+38.89 53.0359 46.9641 267.895 19.6745 12.4307 279.74 13.1068 7.15296 
+38.9 53.0264 46.9736 267.888 19.6781 12.4339 279.74 13.1075 7.15279 
+38.91 53.0168 46.9832 267.881 19.6817 12.4372 279.739 13.1083 7.15263 
+38.92 53.0072 46.9928 267.874 19.6853 12.4405 279.738 13.1091 7.15246 
+38.93 52.9976 47.0024 267.867 19.6889 12.4437 279.738 13.1099 7.1523 
+38.94 52.988 47.012 267.86 19.6925 12.447 279.737 13.1107 7.15213 
+38.95 52.9784 47.0216 267.854 19.6961 12.4503 279.737 13.1115 7.15197 
+38.96 52.9689 47.0311 267.847 19.6998 12.4536 279.736 13.1122 7.15181 
+38.97 52.9593 47.0407 267.84 19.7034 12.4568 279.735 13.113 7.15165 
+38.98 52.9497 47.0503 267.833 19.707 12.4601 279.735 13.1138 7.15149 
+38.99 52.9401 47.0599 267.826 19.7106 12.4634 279.734 13.1146 7.15133 
+39 52.9305 47.0695 267.819 19.7142 12.4667 279.733 13.1154 7.15117 
+39.01 52.921 47.079 267.812 19.7178 12.4699 279.733 13.1162 7.151 
+39.02 52.9114 47.0886 267.805 19.7214 12.4732 279.732 13.117 7.15085 
+39.03 52.9018 47.0982 267.799 19.725 12.4765 279.732 13.1177 7.15069 
+39.04 52.8922 47.1078 267.792 19.7286 12.4798 279.731 13.1185 7.15053 
+39.05 52.8826 47.1174 267.785 19.7322 12.4831 279.73 13.1193 7.15037 
+39.06 52.8731 47.1269 267.778 19.7358 12.4864 279.73 13.1201 7.15021 
+39.07 52.8635 47.1365 267.771 19.7394 12.4896 279.729 13.1209 7.15005 
+39.08 52.8539 47.1461 267.764 19.743 12.4929 279.728 13.1217 7.1499 
+39.09 52.8443 47.1557 267.757 19.7466 12.4962 279.728 13.1225 7.14974 
+39.1 52.8347 47.1653 267.75 19.7502 12.4995 279.727 13.1233 7.14958 
+39.11 52.8252 47.1748 267.743 19.7539 12.5028 279.727 13.1241 7.14943 
+39.12 52.8156 47.1844 267.736 19.7575 12.5061 279.726 13.1248 7.14927 
+39.13 52.806 47.194 267.73 19.7611 12.5094 279.725 13.1256 7.14912 
+39.14 52.7964 47.2036 267.723 19.7647 12.5127 279.725 13.1264 7.14897 
+39.15 52.7869 47.2131 267.716 19.7683 12.516 279.724 13.1272 7.14881 
+39.16 52.7773 47.2227 267.709 19.7719 12.5193 279.723 13.128 7.14866 
+39.17 52.7677 47.2323 267.702 19.7755 12.5226 279.723 13.1288 7.14851 
+39.18 52.7581 47.2419 267.695 19.7792 12.5259 279.722 13.1296 7.14835 
+39.19 52.7486 47.2514 267.688 19.7828 12.5292 279.721 13.1304 7.1482 
+39.2 52.739 47.261 267.681 19.7864 12.5325 279.721 13.1312 7.14805 
+39.21 52.7294 47.2706 267.674 19.79 12.5358 279.72 13.132 7.1479 
+39.22 52.7198 47.2802 267.667 19.7936 12.5391 279.72 13.1327 7.14775 
+39.23 52.7103 47.2897 267.66 19.7972 12.5424 279.719 13.1335 7.1476 
+39.24 52.7007 47.2993 267.653 19.8008 12.5457 279.718 13.1343 7.14745 
+39.25 52.6911 47.3089 267.646 19.8045 12.5491 279.718 13.1351 7.1473 
+39.26 52.6815 47.3185 267.64 19.8081 12.5524 279.717 13.1359 7.14715 
+39.27 52.672 47.328 267.633 19.8117 12.5557 279.716 13.1367 7.147 
+39.28 52.6624 47.3376 267.626 19.8153 12.559 279.716 13.1375 7.14685 
+39.29 52.6528 47.3472 267.619 19.8189 12.5623 279.715 13.1383 7.14671 
+39.3 52.6433 47.3567 267.612 19.8226 12.5656 279.714 13.1391 7.14656 
+39.31 52.6337 47.3663 267.605 19.8262 12.569 279.714 13.1399 7.14641 
+39.32 52.6241 47.3759 267.598 19.8298 12.5723 279.713 13.1407 7.14627 
+39.33 52.6145 47.3855 267.591 19.8334 12.5756 279.712 13.1415 7.14612 
+39.34 52.605 47.395 267.584 19.8371 12.5789 279.712 13.1423 7.14598 
+39.35 52.5954 47.4046 267.577 19.8407 12.5823 279.711 13.1431 7.14583 
+39.36 52.5858 47.4142 267.57 19.8443 12.5856 279.71 13.1438 7.14569 
+39.37 52.5763 47.4237 267.563 19.8479 12.5889 279.71 13.1446 7.14555 
+39.38 52.5667 47.4333 267.556 19.8515 12.5923 279.709 13.1454 7.1454 
+39.39 52.5571 47.4429 267.549 19.8552 12.5956 279.709 13.1462 7.14526 
+39.4 52.5476 47.4524 267.542 19.8588 12.5989 279.708 13.147 7.14512 
+39.41 52.538 47.462 267.535 19.8624 12.6023 279.707 13.1478 7.14498 
+39.42 52.5284 47.4716 267.528 19.8661 12.6056 279.707 13.1486 7.14483 
+39.43 52.5188 47.4812 267.521 19.8697 12.6089 279.706 13.1494 7.14469 
+39.44 52.5093 47.4907 267.514 19.8733 12.6123 279.705 13.1502 7.14455 
+39.45 52.4997 47.5003 267.507 19.8769 12.6156 279.705 13.151 7.14441 
+39.46 52.4901 47.5099 267.5 19.8806 12.619 279.704 13.1518 7.14427 
+39.47 52.4806 47.5194 267.494 19.8842 12.6223 279.703 13.1526 7.14413 
+39.48 52.471 47.529 267.487 19.8878 12.6256 279.703 13.1534 7.144 
+39.49 52.4614 47.5386 267.48 19.8915 12.629 279.702 13.1542 7.14386 
+39.5 52.4519 47.5481 267.473 19.8951 12.6323 279.701 13.155 7.14372 
+39.51 52.4423 47.5577 267.466 19.8987 12.6357 279.701 13.1558 7.14358 
+39.52 52.4327 47.5673 267.459 19.9023 12.639 279.7 13.1566 7.14345 
+39.53 52.4232 47.5768 267.452 19.906 12.6424 279.699 13.1574 7.14331 
+39.54 52.4136 47.5864 267.445 19.9096 12.6457 279.699 13.1582 7.14317 
+39.55 52.4041 47.5959 267.438 19.9132 12.6491 279.698 13.159 7.14304 
+39.56 52.3945 47.6055 267.431 19.9169 12.6525 279.697 13.1598 7.1429 
+39.57 52.3849 47.6151 267.424 19.9205 12.6558 279.697 13.1606 7.14277 
+39.58 52.3754 47.6246 267.417 19.9242 12.6592 279.696 13.1614 7.14263 
+39.59 52.3658 47.6342 267.41 19.9278 12.6625 279.695 13.1622 7.1425 
+39.6 52.3562 47.6438 267.403 19.9314 12.6659 279.695 13.163 7.14237 
+39.61 52.3467 47.6533 267.396 19.9351 12.6693 279.694 13.1638 7.14224 
+39.62 52.3371 47.6629 267.389 19.9387 12.6726 279.693 13.1646 7.1421 
+39.63 52.3276 47.6724 267.382 19.9423 12.676 279.693 13.1654 7.14197 
+39.64 52.318 47.682 267.375 19.946 12.6794 279.692 13.1662 7.14184 
+39.65 52.3084 47.6916 267.368 19.9496 12.6827 279.691 13.167 7.14171 
+39.66 52.2989 47.7011 267.361 19.9532 12.6861 279.691 13.1678 7.14158 
+39.67 52.2893 47.7107 267.354 19.9569 12.6895 279.69 13.1686 7.14145 
+39.68 52.2797 47.7203 267.347 19.9605 12.6928 279.689 13.1694 7.14132 
+39.69 52.2702 47.7298 267.34 19.9642 12.6962 279.689 13.1702 7.14119 
+39.7 52.2606 47.7394 267.333 19.9678 12.6996 279.688 13.171 7.14106 
+39.71 52.2511 47.7489 267.326 19.9715 12.703 279.687 13.1718 7.14093 
+39.72 52.2415 47.7585 267.319 19.9751 12.7063 279.687 13.1726 7.14081 
+39.73 52.232 47.768 267.312 19.9787 12.7097 279.686 13.1734 7.14068 
+39.74 52.2224 47.7776 267.305 19.9824 12.7131 279.685 13.1742 7.14055 
+39.75 52.2128 47.7872 267.297 19.986 12.7165 279.685 13.175 7.14043 
+39.76 52.2033 47.7967 267.29 19.9897 12.7199 279.684 13.1759 7.1403 
+39.77 52.1937 47.8063 267.283 19.9933 12.7233 279.683 13.1767 7.14018 
+39.78 52.1842 47.8158 267.276 19.997 12.7266 279.682 13.1775 7.14005 
+39.79 52.1746 47.8254 267.269 20.0006 12.73 279.682 13.1783 7.13993 
+39.8 52.165 47.835 267.262 20.0042 12.7334 279.681 13.1791 7.1398 
+39.81 52.1555 47.8445 267.255 20.0079 12.7368 279.68 13.1799 7.13968 
+39.82 52.1459 47.8541 267.248 20.0115 12.7402 279.68 13.1807 7.13956 
+39.83 52.1364 47.8636 267.241 20.0152 12.7436 279.679 13.1815 7.13943 
+39.84 52.1268 47.8732 267.234 20.0188 12.747 279.678 13.1823 7.13931 
+39.85 52.1173 47.8827 267.227 20.0225 12.7504 279.678 13.1831 7.13919 
+39.86 52.1077 47.8923 267.22 20.0261 12.7538 279.677 13.1839 7.13907 
+39.87 52.0982 47.9018 267.213 20.0298 12.7572 279.676 13.1847 7.13895 
+39.88 52.0886 47.9114 267.206 20.0334 12.7606 279.676 13.1855 7.13883 
+39.89 52.0791 47.9209 267.199 20.0371 12.764 279.675 13.1863 7.13871 
+39.9 52.0695 47.9305 267.192 20.0407 12.7674 279.674 13.1872 7.13859 
+39.91 52.0599 47.9401 267.185 20.0444 12.7708 279.674 13.188 7.13847 
+39.92 52.0504 47.9496 267.178 20.048 12.7742 279.673 13.1888 7.13835 
+39.93 52.0408 47.9592 267.171 20.0517 12.7776 279.672 13.1896 7.13824 
+39.94 52.0313 47.9687 267.164 20.0554 12.781 279.671 13.1904 7.13812 
+39.95 52.0217 47.9783 267.157 20.059 12.7844 279.671 13.1912 7.138 
+39.96 52.0122 47.9878 267.149 20.0627 12.7879 279.67 13.192 7.13788 
+39.97 52.0026 47.9974 267.142 20.0663 12.7913 279.669 13.1928 7.13777 
+39.98 51.9931 48.0069 267.135 20.07 12.7947 279.669 13.1936 7.13765 
+39.99 51.9835 48.0165 267.128 20.0736 12.7981 279.668 13.1944 7.13754 
+40 51.974 48.026 267.121 20.0773 12.8015 279.667 13.1953 7.13742 
+40.01 51.9644 48.0356 267.114 20.0809 12.8049 279.667 13.1961 7.13731 
+40.02 51.9549 48.0451 267.107 20.0846 12.8084 279.666 13.1969 7.1372 
+40.03 51.9453 48.0547 267.1 20.0883 12.8118 279.665 13.1977 7.13708 
+40.04 51.9358 48.0642 267.093 20.0919 12.8152 279.665 13.1985 7.13697 
+40.05 51.9262 48.0738 267.086 20.0956 12.8186 279.664 13.1993 7.13686 
+40.06 51.9167 48.0833 267.079 20.0992 12.8221 279.663 13.2001 7.13675 
+40.07 51.9071 48.0929 267.072 20.1029 12.8255 279.662 13.201 7.13664 
+40.08 51.8976 48.1024 267.065 20.1065 12.8289 279.662 13.2018 7.13652 
+40.09 51.888 48.112 267.057 20.1102 12.8323 279.661 13.2026 7.13641 
+40.1 51.8785 48.1215 267.05 20.1139 12.8358 279.66 13.2034 7.1363 
+40.11 51.869 48.131 267.043 20.1175 12.8392 279.66 13.2042 7.13619 
+40.12 51.8594 48.1406 267.036 20.1212 12.8426 279.659 13.205 7.13609 
+40.13 51.8499 48.1501 267.029 20.1249 12.8461 279.658 13.2058 7.13598 
+40.14 51.8403 48.1597 267.022 20.1285 12.8495 279.657 13.2067 7.13587 
+40.15 51.8308 48.1692 267.015 20.1322 12.853 279.657 13.2075 7.13576 
+40.16 51.8212 48.1788 267.008 20.1359 12.8564 279.656 13.2083 7.13565 
+40.17 51.8117 48.1883 267.001 20.1395 12.8598 279.655 13.2091 7.13555 
+40.18 51.8021 48.1979 266.994 20.1432 12.8633 279.655 13.2099 7.13544 
+40.19 51.7926 48.2074 266.986 20.1468 12.8667 279.654 13.2107 7.13534 
+40.2 51.7831 48.2169 266.979 20.1505 12.8702 279.653 13.2116 7.13523 
+40.21 51.7735 48.2265 266.972 20.1542 12.8736 279.653 13.2124 7.13513 
+40.22 51.764 48.236 266.965 20.1578 12.8771 279.652 13.2132 7.13502 
+40.23 51.7544 48.2456 266.958 20.1615 12.8805 279.651 13.214 7.13492 
+40.24 51.7449 48.2551 266.951 20.1652 12.884 279.65 13.2148 7.13482 
+40.25 51.7353 48.2647 266.944 20.1689 12.8874 279.65 13.2156 7.13471 
+40.26 51.7258 48.2742 266.937 20.1725 12.8909 279.649 13.2165 7.13461 
+40.27 51.7163 48.2837 266.929 20.1762 12.8943 279.648 13.2173 7.13451 
+40.28 51.7067 48.2933 266.922 20.1799 12.8978 279.647 13.2181 7.13441 
+40.29 51.6972 48.3028 266.915 20.1835 12.9013 279.647 13.2189 7.13431 
+40.3 51.6876 48.3124 266.908 20.1872 12.9047 279.646 13.2197 7.13421 
+40.31 51.6781 48.3219 266.901 20.1909 12.9082 279.645 13.2206 7.13411 
+40.32 51.6686 48.3314 266.894 20.1946 12.9116 279.645 13.2214 7.13401 
+40.33 51.659 48.341 266.887 20.1982 12.9151 279.644 13.2222 7.13391 
+40.34 51.6495 48.3505 266.88 20.2019 12.9186 279.643 13.223 7.13381 
+40.35 51.6399 48.3601 266.872 20.2056 12.922 279.642 13.2238 7.13371 
+40.36 51.6304 48.3696 266.865 20.2092 12.9255 279.642 13.2247 7.13361 
+40.37 51.6209 48.3791 266.858 20.2129 12.929 279.641 13.2255 7.13351 
+40.38 51.6113 48.3887 266.851 20.2166 12.9324 279.64 13.2263 7.13342 
+40.39 51.6018 48.3982 266.844 20.2203 12.9359 279.64 13.2271 7.13332 
+40.4 51.5923 48.4077 266.837 20.2239 12.9394 279.639 13.2279 7.13323 
+40.41 51.5827 48.4173 266.83 20.2276 12.9429 279.638 13.2288 7.13313 
+40.42 51.5732 48.4268 266.822 20.2313 12.9463 279.637 13.2296 7.13304 
+40.43 51.5636 48.4364 266.815 20.235 12.9498 279.637 13.2304 7.13294 
+40.44 51.5541 48.4459 266.808 20.2387 12.9533 279.636 13.2312 7.13285 
+40.45 51.5446 48.4554 266.801 20.2423 12.9568 279.635 13.2321 7.13275 
+40.46 51.535 48.465 266.794 20.246 12.9603 279.634 13.2329 7.13266 
+40.47 51.5255 48.4745 266.787 20.2497 12.9638 279.634 13.2337 7.13257 
+40.48 51.516 48.484 266.779 20.2534 12.9672 279.633 13.2345 7.13248 
+40.49 51.5064 48.4936 266.772 20.2571 12.9707 279.632 13.2354 7.13239 
+40.5 51.4969 48.5031 266.765 20.2607 12.9742 279.632 13.2362 7.13229 
+40.51 51.4874 48.5126 266.758 20.2644 12.9777 279.631 13.237 7.1322 
+40.52 51.4778 48.5222 266.751 20.2681 12.9812 279.63 13.2378 7.13211 
+40.53 51.4683 48.5317 266.744 20.2718 12.9847 279.629 13.2387 7.13202 
+40.54 51.4588 48.5412 266.736 20.2755 12.9882 279.629 13.2395 7.13193 
+40.55 51.4492 48.5508 266.729 20.2792 12.9917 279.628 13.2403 7.13185 
+40.56 51.4397 48.5603 266.722 20.2828 12.9952 279.627 13.2411 7.13176 
+40.57 51.4302 48.5698 266.715 20.2865 12.9987 279.626 13.242 7.13167 
+40.58 51.4206 48.5794 266.708 20.2902 13.0022 279.626 13.2428 7.13158 
+40.59 51.4111 48.5889 266.7 20.2939 13.0057 279.625 13.2436 7.1315 
+40.6 51.4016 48.5984 266.693 20.2976 13.0092 279.624 13.2445 7.13141 
+40.61 51.3921 48.6079 266.686 20.3013 13.0127 279.623 13.2453 7.13132 
+40.62 51.3825 48.6175 266.679 20.305 13.0162 279.623 13.2461 7.13124 
+40.63 51.373 48.627 266.672 20.3086 13.0197 279.622 13.2469 7.13115 
+40.64 51.3635 48.6365 266.664 20.3123 13.0232 279.621 13.2478 7.13107 
+40.65 51.3539 48.6461 266.657 20.316 13.0267 279.62 13.2486 7.13099 
+40.66 51.3444 48.6556 266.65 20.3197 13.0302 279.62 13.2494 7.1309 
+40.67 51.3349 48.6651 266.643 20.3234 13.0337 279.619 13.2503 7.13082 
+40.68 51.3254 48.6746 266.636 20.3271 13.0372 279.618 13.2511 7.13074 
+40.69 51.3158 48.6842 266.628 20.3308 13.0408 279.617 13.2519 7.13065 
+40.7 51.3063 48.6937 266.621 20.3345 13.0443 279.617 13.2528 7.13057 
+40.71 51.2968 48.7032 266.614 20.3382 13.0478 279.616 13.2536 7.13049 
+40.72 51.2873 48.7127 266.607 20.3419 13.0513 279.615 13.2544 7.13041 
+40.73 51.2777 48.7223 266.6 20.3456 13.0548 279.614 13.2552 7.13033 
+40.74 51.2682 48.7318 266.592 20.3492 13.0584 279.614 13.2561 7.13025 
+40.75 51.2587 48.7413 266.585 20.3529 13.0619 279.613 13.2569 7.13017 
+40.76 51.2492 48.7508 266.578 20.3566 13.0654 279.612 13.2577 7.13009 
+40.77 51.2396 48.7604 266.571 20.3603 13.0689 279.611 13.2586 7.13002 
+40.78 51.2301 48.7699 266.564 20.364 13.0725 279.611 13.2594 7.12994 
+40.79 51.2206 48.7794 266.556 20.3677 13.076 279.61 13.2602 7.12986 
+40.8 51.2111 48.7889 266.549 20.3714 13.0795 279.609 13.2611 7.12978 
+40.81 51.2015 48.7985 266.542 20.3751 13.083 279.608 13.2619 7.12971 
+40.82 51.192 48.808 266.535 20.3788 13.0866 279.608 13.2627 7.12963 
+40.83 51.1825 48.8175 266.527 20.3825 13.0901 279.607 13.2636 7.12956 
+40.84 51.173 48.827 266.52 20.3862 13.0937 279.606 13.2644 7.12948 
+40.85 51.1635 48.8365 266.513 20.3899 13.0972 279.605 13.2652 7.12941 
+40.86 51.1539 48.8461 266.506 20.3936 13.1007 279.605 13.2661 7.12933 
+40.87 51.1444 48.8556 266.498 20.3973 13.1043 279.604 13.2669 7.12926 
+40.88 51.1349 48.8651 266.491 20.401 13.1078 279.603 13.2678 7.12919 
+40.89 51.1254 48.8746 266.484 20.4047 13.1114 279.602 13.2686 7.12911 
+40.9 51.1159 48.8841 266.477 20.4084 13.1149 279.602 13.2694 7.12904 
+40.91 51.1063 48.8937 266.469 20.4121 13.1184 279.601 13.2703 7.12897 
+40.92 51.0968 48.9032 266.462 20.4158 13.122 279.6 13.2711 7.1289 
+40.93 51.0873 48.9127 266.455 20.4195 13.1255 279.599 13.2719 7.12883 
+40.94 51.0778 48.9222 266.448 20.4232 13.1291 279.598 13.2728 7.12876 
+40.95 51.0683 48.9317 266.44 20.4269 13.1326 279.598 13.2736 7.12869 
+40.96 51.0587 48.9413 266.433 20.4306 13.1362 279.597 13.2745 7.12862 
+40.97 51.0492 48.9508 266.426 20.4343 13.1397 279.596 13.2753 7.12855 
+40.98 51.0397 48.9603 266.419 20.438 13.1433 279.595 13.2761 7.12848 
+40.99 51.0302 48.9698 266.411 20.4417 13.1469 279.595 13.277 7.12841 
+41 51.0207 48.9793 266.404 20.4455 13.1504 279.594 13.2778 7.12835 
+41.01 51.0112 48.9888 266.397 20.4492 13.154 279.593 13.2786 7.12828 
+41.02 51.0017 48.9983 266.39 20.4529 13.1575 279.592 13.2795 7.12821 
+41.03 50.9921 49.0079 266.382 20.4566 13.1611 279.592 13.2803 7.12815 
+41.04 50.9826 49.0174 266.375 20.4603 13.1647 279.591 13.2812 7.12808 
+41.05 50.9731 49.0269 266.368 20.464 13.1682 279.59 13.282 7.12802 
+41.06 50.9636 49.0364 266.36 20.4677 13.1718 279.589 13.2829 7.12795 
+41.07 50.9541 49.0459 266.353 20.4714 13.1754 279.588 13.2837 7.12789 
+41.08 50.9446 49.0554 266.346 20.4751 13.1789 279.588 13.2845 7.12783 
+41.09 50.9351 49.0649 266.339 20.4788 13.1825 279.587 13.2854 7.12776 
+41.1 50.9255 49.0745 266.331 20.4825 13.1861 279.586 13.2862 7.1277 
+41.11 50.916 49.084 266.324 20.4863 13.1897 279.585 13.2871 7.12764 
+41.12 50.9065 49.0935 266.317 20.49 13.1932 279.585 13.2879 7.12758 
+41.13 50.897 49.103 266.31 20.4937 13.1968 279.584 13.2887 7.12752 
+41.14 50.8875 49.1125 266.302 20.4974 13.2004 279.583 13.2896 7.12746 
+41.15 50.878 49.122 266.295 20.5011 13.204 279.582 13.2904 7.1274 
+41.16 50.8685 49.1315 266.288 20.5048 13.2076 279.581 13.2913 7.12734 
+41.17 50.859 49.141 266.28 20.5085 13.2111 279.581 13.2921 7.12728 
+41.18 50.8495 49.1505 266.273 20.5123 13.2147 279.58 13.293 7.12722 
+41.19 50.84 49.16 266.266 20.516 13.2183 279.579 13.2938 7.12716 
+41.2 50.8304 49.1696 266.258 20.5197 13.2219 279.578 13.2947 7.1271 
+41.21 50.8209 49.1791 266.251 20.5234 13.2255 279.577 13.2955 7.12705 
+41.22 50.8114 49.1886 266.244 20.5271 13.2291 279.577 13.2963 7.12699 
+41.23 50.8019 49.1981 266.237 20.5308 13.2327 279.576 13.2972 7.12693 
+41.24 50.7924 49.2076 266.229 20.5346 13.2363 279.575 13.298 7.12688 
+41.25 50.7829 49.2171 266.222 20.5383 13.2398 279.574 13.2989 7.12682 
+41.26 50.7734 49.2266 266.215 20.542 13.2434 279.573 13.2997 7.12677 
+41.27 50.7639 49.2361 266.207 20.5457 13.247 279.573 13.3006 7.12671 
+41.28 50.7544 49.2456 266.2 20.5494 13.2506 279.572 13.3014 7.12666 
+41.29 50.7449 49.2551 266.193 20.5532 13.2542 279.571 13.3023 7.12661 
+41.3 50.7354 49.2646 266.185 20.5569 13.2578 279.57 13.3031 7.12655 
+41.31 50.7259 49.2741 266.178 20.5606 13.2614 279.57 13.304 7.1265 
+41.32 50.7164 49.2836 266.171 20.5643 13.265 279.569 13.3048 7.12645 
+41.33 50.7069 49.2931 266.163 20.568 13.2686 279.568 13.3057 7.1264 
+41.34 50.6974 49.3026 266.156 20.5718 13.2723 279.567 13.3065 7.12635 
+41.35 50.6879 49.3121 266.149 20.5755 13.2759 279.566 13.3074 7.1263 
+41.36 50.6784 49.3216 266.141 20.5792 13.2795 279.566 13.3082 7.12625 
+41.37 50.6689 49.3311 266.134 20.5829 13.2831 279.565 13.3091 7.1262 
+41.38 50.6594 49.3406 266.127 20.5867 13.2867 279.564 13.3099 7.12615 
+41.39 50.6499 49.3501 266.119 20.5904 13.2903 279.563 13.3108 7.1261 
+41.4 50.6404 49.3596 266.112 20.5941 13.2939 279.562 13.3116 7.12605 
+41.41 50.6309 49.3691 266.105 20.5978 13.2975 279.562 13.3125 7.12601 
+41.42 50.6214 49.3786 266.097 20.6016 13.3012 279.561 13.3133 7.12596 
+41.43 50.6119 49.3881 266.09 20.6053 13.3048 279.56 13.3142 7.12591 
+41.44 50.6024 49.3976 266.083 20.609 13.3084 279.559 13.315 7.12587 
+41.45 50.5929 49.4071 266.075 20.6127 13.312 279.558 13.3159 7.12582 
+41.46 50.5834 49.4166 266.068 20.6165 13.3156 279.557 13.3167 7.12578 
+41.47 50.5739 49.4261 266.061 20.6202 13.3193 279.557 13.3176 7.12573 
+41.48 50.5644 49.4356 266.053 20.6239 13.3229 279.556 13.3184 7.12569 
+41.49 50.5549 49.4451 266.046 20.6277 13.3265 279.555 13.3193 7.12564 
+41.5 50.5454 49.4546 266.038 20.6314 13.3302 279.554 13.3201 7.1256 
+41.51 50.5359 49.4641 266.031 20.6351 13.3338 279.553 13.321 7.12556 
+41.52 50.5264 49.4736 266.024 20.6389 13.3374 279.553 13.3219 7.12552 
+41.53 50.5169 49.4831 266.016 20.6426 13.341 279.552 13.3227 7.12547 
+41.54 50.5074 49.4926 266.009 20.6463 13.3447 279.551 13.3236 7.12543 
+41.55 50.4979 49.5021 266.002 20.6501 13.3483 279.55 13.3244 7.12539 
+41.56 50.4884 49.5116 265.994 20.6538 13.352 279.549 13.3253 7.12535 
+41.57 50.4789 49.5211 265.987 20.6575 13.3556 279.549 13.3261 7.12531 
+41.58 50.4694 49.5306 265.979 20.6613 13.3592 279.548 13.327 7.12527 
+41.59 50.4599 49.5401 265.972 20.665 13.3629 279.547 13.3278 7.12523 
+41.6 50.4504 49.5496 265.965 20.6687 13.3665 279.546 13.3287 7.1252 
+41.61 50.4409 49.5591 265.957 20.6725 13.3702 279.545 13.3296 7.12516 
+41.62 50.4315 49.5685 265.95 20.6762 13.3738 279.544 13.3304 7.12512 
+41.63 50.422 49.578 265.943 20.6799 13.3775 279.544 13.3313 7.12509 
+41.64 50.4125 49.5875 265.935 20.6837 13.3811 279.543 13.3321 7.12505 
+41.65 50.403 49.597 265.928 20.6874 13.3848 279.542 13.333 7.12501 
+41.66 50.3935 49.6065 265.92 20.6912 13.3884 279.541 13.3338 7.12498 
+41.67 50.384 49.616 265.913 20.6949 13.3921 279.54 13.3347 7.12494 
+41.68 50.3745 49.6255 265.906 20.6986 13.3957 279.54 13.3356 7.12491 
+41.69 50.365 49.635 265.898 20.7024 13.3994 279.539 13.3364 7.12487 
+41.7 50.3555 49.6445 265.891 20.7061 13.403 279.538 13.3373 7.12484 
+41.71 50.346 49.654 265.883 20.7099 13.4067 279.537 13.3381 7.12481 
+41.72 50.3366 49.6634 265.876 20.7136 13.4104 279.536 13.339 7.12478 
+41.73 50.3271 49.6729 265.869 20.7173 13.414 279.535 13.3399 7.12474 
+41.74 50.3176 49.6824 265.861 20.7211 13.4177 279.535 13.3407 7.12471 
+41.75 50.3081 49.6919 265.854 20.7248 13.4213 279.534 13.3416 7.12468 
+41.76 50.2986 49.7014 265.846 20.7286 13.425 279.533 13.3424 7.12465 
+41.77 50.2891 49.7109 265.839 20.7323 13.4287 279.532 13.3433 7.12462 
+41.78 50.2796 49.7204 265.832 20.7361 13.4323 279.531 13.3442 7.12459 
+41.79 50.2701 49.7299 265.824 20.7398 13.436 279.53 13.345 7.12456 
+41.8 50.2607 49.7393 265.817 20.7436 13.4397 279.53 13.3459 7.12454 
+41.81 50.2512 49.7488 265.809 20.7473 13.4434 279.529 13.3468 7.12451 
+41.82 50.2417 49.7583 265.802 20.751 13.447 279.528 13.3476 7.12448 
+41.83 50.2322 49.7678 265.794 20.7548 13.4507 279.527 13.3485 7.12445 
+41.84 50.2227 49.7773 265.787 20.7585 13.4544 279.526 13.3493 7.12443 
+41.85 50.2132 49.7868 265.78 20.7623 13.4581 279.525 13.3502 7.1244 
+41.86 50.2038 49.7962 265.772 20.766 13.4617 279.525 13.3511 7.12438 
+41.87 50.1943 49.8057 265.765 20.7698 13.4654 279.524 13.3519 7.12435 
+41.88 50.1848 49.8152 265.757 20.7735 13.4691 279.523 13.3528 7.12433 
+41.89 50.1753 49.8247 265.75 20.7773 13.4728 279.522 13.3537 7.1243 
+41.9 50.1658 49.8342 265.742 20.781 13.4765 279.521 13.3545 7.12428 
+41.91 50.1564 49.8436 265.735 20.7848 13.4802 279.52 13.3554 7.12426 
+41.92 50.1469 49.8531 265.728 20.7885 13.4839 279.519 13.3563 7.12423 
+41.93 50.1374 49.8626 265.72 20.7923 13.4875 279.519 13.3571 7.12421 
+41.94 50.1279 49.8721 265.713 20.796 13.4912 279.518 13.358 7.12419 
+41.95 50.1184 49.8816 265.705 20.7998 13.4949 279.517 13.3589 7.12417 
+41.96 50.109 49.891 265.698 20.8036 13.4986 279.516 13.3597 7.12415 
+41.97 50.0995 49.9005 265.69 20.8073 13.5023 279.515 13.3606 7.12413 
+41.98 50.09 49.91 265.683 20.8111 13.506 279.514 13.3615 7.12411 
+41.99 50.0805 49.9195 265.675 20.8148 13.5097 279.514 13.3623 7.12409 
+42 50.071 49.929 265.668 20.8186 13.5134 279.513 13.3632 7.12407 
+42.01 50.0616 49.9384 265.661 20.8223 13.5171 279.512 13.3641 7.12405 
+42.02 50.0521 49.9479 265.653 20.8261 13.5208 279.511 13.3649 7.12403 
+42.03 50.0426 49.9574 265.646 20.8298 13.5245 279.51 13.3658 7.12402 
+42.04 50.0331 49.9669 265.638 20.8336 13.5282 279.509 13.3667 7.124 
+42.05 50.0237 49.9763 265.631 20.8374 13.5319 279.508 13.3676 7.12398 
+42.06 50.0142 49.9858 265.623 20.8411 13.5356 279.508 13.3684 7.12397 
+42.07 50.0047 49.9953 265.616 20.8449 13.5393 279.507 13.3693 7.12395 
+42.08 49.9952 50.0048 265.608 20.8486 13.5431 279.506 13.3702 7.12394 
+42.09 49.9858 50.0142 265.601 20.8524 13.5468 279.505 13.371 7.12393 
+42.1 49.9763 50.0237 265.593 20.8561 13.5505 279.504 13.3719 7.12391 
+42.11 49.9668 50.0332 265.586 20.8599 13.5542 279.503 13.3728 7.1239 
+42.12 49.9574 50.0426 265.578 20.8637 13.5579 279.502 13.3737 7.12389 
+42.13 49.9479 50.0521 265.571 20.8674 13.5616 279.502 13.3745 7.12387 
+42.14 49.9384 50.0616 265.563 20.8712 13.5654 279.501 13.3754 7.12386 
+42.15 49.9289 50.0711 265.556 20.875 13.5691 279.5 13.3763 7.12385 
+42.16 49.9195 50.0805 265.548 20.8787 13.5728 279.499 13.3772 7.12384 
+42.17 49.91 50.09 265.541 20.8825 13.5765 279.498 13.378 7.12383 
+42.18 49.9005 50.0995 265.534 20.8862 13.5802 279.497 13.3789 7.12382 
+42.19 49.8911 50.1089 265.526 20.89 13.584 279.496 13.3798 7.12381 
+42.2 49.8816 50.1184 265.519 20.8938 13.5877 279.496 13.3807 7.1238 
+42.21 49.8721 50.1279 265.511 20.8975 13.5914 279.495 13.3815 7.12379 
+42.22 49.8627 50.1373 265.504 20.9013 13.5952 279.494 13.3824 7.12379 
+42.23 49.8532 50.1468 265.496 20.9051 13.5989 279.493 13.3833 7.12378 
+42.24 49.8437 50.1563 265.489 20.9088 13.6026 279.492 13.3842 7.12377 
+42.25 49.8343 50.1657 265.481 20.9126 13.6064 279.491 13.385 7.12377 
+42.26 49.8248 50.1752 265.474 20.9164 13.6101 279.49 13.3859 7.12376 
+42.27 49.8153 50.1847 265.466 20.9201 13.6138 279.489 13.3868 7.12376 
+42.28 49.8059 50.1941 265.459 20.9239 13.6176 279.489 13.3877 7.12375 
+42.29 49.7964 50.2036 265.451 20.9277 13.6213 279.488 13.3885 7.12375 
+42.3 49.7869 50.2131 265.443 20.9315 13.6251 279.487 13.3894 7.12374 
+42.31 49.7775 50.2225 265.436 20.9352 13.6288 279.486 13.3903 7.12374 
+42.32 49.768 50.232 265.428 20.939 13.6325 279.485 13.3912 7.12374 
+42.33 49.7585 50.2415 265.421 20.9428 13.6363 279.484 13.3921 7.12373 
+42.34 49.7491 50.2509 265.413 20.9465 13.64 279.483 13.3929 7.12373 
+42.35 49.7396 50.2604 265.406 20.9503 13.6438 279.482 13.3938 7.12373 
+42.36 49.7302 50.2698 265.398 20.9541 13.6475 279.482 13.3947 7.12373 
+42.37 49.7207 50.2793 265.391 20.9579 13.6513 279.481 13.3956 7.12373 
+42.38 49.7112 50.2888 265.383 20.9616 13.655 279.48 13.3964 7.12373 
+42.39 49.7018 50.2982 265.376 20.9654 13.6588 279.479 13.3973 7.12373 
+42.4 49.6923 50.3077 265.368 20.9692 13.6626 279.478 13.3982 7.12373 
+42.41 49.6829 50.3171 265.361 20.9729 13.6663 279.477 13.3991 7.12374 
+42.42 49.6734 50.3266 265.353 20.9767 13.6701 279.476 13.4 7.12374 
+42.43 49.6639 50.3361 265.346 20.9805 13.6738 279.475 13.4009 7.12374 
+42.44 49.6545 50.3455 265.338 20.9843 13.6776 279.475 13.4017 7.12374 
+42.45 49.645 50.355 265.331 20.9881 13.6814 279.474 13.4026 7.12375 
+42.46 49.6356 50.3644 265.323 20.9918 13.6851 279.473 13.4035 7.12375 
+42.47 49.6261 50.3739 265.315 20.9956 13.6889 279.472 13.4044 7.12376 
+42.48 49.6167 50.3833 265.308 20.9994 13.6927 279.471 13.4053 7.12376 
+42.49 49.6072 50.3928 265.3 21.0032 13.6964 279.47 13.4062 7.12377 
+42.5 49.5977 50.4023 265.293 21.0069 13.7002 279.469 13.407 7.12377 
+42.51 49.5883 50.4117 265.285 21.0107 13.704 279.468 13.4079 7.12378 
+42.52 49.5788 50.4212 265.278 21.0145 13.7077 279.467 13.4088 7.12379 
+42.53 49.5694 50.4306 265.27 21.0183 13.7115 279.467 13.4097 7.1238 
+42.54 49.5599 50.4401 265.263 21.0221 13.7153 279.466 13.4106 7.1238 
+42.55 49.5505 50.4495 265.255 21.0258 13.7191 279.465 13.4115 7.12381 
+42.56 49.541 50.459 265.248 21.0296 13.7229 279.464 13.4123 7.12382 
+42.57 49.5316 50.4684 265.24 21.0334 13.7266 279.463 13.4132 7.12383 
+42.58 49.5221 50.4779 265.232 21.0372 13.7304 279.462 13.4141 7.12384 
+42.59 49.5127 50.4873 265.225 21.041 13.7342 279.461 13.415 7.12385 
+42.6 49.5032 50.4968 265.217 21.0448 13.738 279.46 13.4159 7.12386 
+42.61 49.4938 50.5062 265.21 21.0485 13.7418 279.459 13.4168 7.12388 
+42.62 49.4843 50.5157 265.202 21.0523 13.7456 279.458 13.4177 7.12389 
+42.63 49.4749 50.5251 265.195 21.0561 13.7493 279.458 13.4186 7.1239 
+42.64 49.4654 50.5346 265.187 21.0599 13.7531 279.457 13.4194 7.12391 
+42.65 49.456 50.544 265.179 21.0637 13.7569 279.456 13.4203 7.12393 
+42.66 49.4465 50.5535 265.172 21.0675 13.7607 279.455 13.4212 7.12394 
+42.67 49.4371 50.5629 265.164 21.0713 13.7645 279.454 13.4221 7.12396 
+42.68 49.4276 50.5724 265.157 21.0751 13.7683 279.453 13.423 7.12397 
+42.69 49.4182 50.5818 265.149 21.0788 13.7721 279.452 13.4239 7.12399 
+42.7 49.4087 50.5913 265.141 21.0826 13.7759 279.451 13.4248 7.124 
+42.71 49.3993 50.6007 265.134 21.0864 13.7797 279.45 13.4257 7.12402 
+42.72 49.3898 50.6102 265.126 21.0902 13.7835 279.449 13.4266 7.12404 
+42.73 49.3804 50.6196 265.119 21.094 13.7873 279.448 13.4275 7.12406 
+42.74 49.3709 50.6291 265.111 21.0978 13.7911 279.448 13.4284 7.12407 
+42.75 49.3615 50.6385 265.103 21.1016 13.7949 279.447 13.4292 7.12409 
+42.76 49.352 50.648 265.096 21.1054 13.7987 279.446 13.4301 7.12411 
+42.77 49.3426 50.6574 265.088 21.1092 13.8025 279.445 13.431 7.12413 
+42.78 49.3332 50.6668 265.081 21.113 13.8063 279.444 13.4319 7.12415 
+42.79 49.3237 50.6763 265.073 21.1167 13.8102 279.443 13.4328 7.12417 
+42.8 49.3143 50.6857 265.065 21.1205 13.814 279.442 13.4337 7.12419 
+42.81 49.3048 50.6952 265.058 21.1243 13.8178 279.441 13.4346 7.12422 
+42.82 49.2954 50.7046 265.05 21.1281 13.8216 279.44 13.4355 7.12424 
+42.83 49.2859 50.7141 265.043 21.1319 13.8254 279.439 13.4364 7.12426 
+42.84 49.2765 50.7235 265.035 21.1357 13.8292 279.438 13.4373 7.12428 
+42.85 49.2671 50.7329 265.027 21.1395 13.8331 279.438 13.4382 7.12431 
+42.86 49.2576 50.7424 265.02 21.1433 13.8369 279.437 13.4391 7.12433 
+42.87 49.2482 50.7518 265.012 21.1471 13.8407 279.436 13.44 7.12436 
+42.88 49.2387 50.7613 265.005 21.1509 13.8445 279.435 13.4409 7.12438 
+42.89 49.2293 50.7707 264.997 21.1547 13.8484 279.434 13.4418 7.12441 
+42.9 49.2199 50.7801 264.989 21.1585 13.8522 279.433 13.4427 7.12444 
+42.91 49.2104 50.7896 264.982 21.1623 13.856 279.432 13.4436 7.12446 
+42.92 49.201 50.799 264.974 21.1661 13.8598 279.431 13.4445 7.12449 
+42.93 49.1916 50.8084 264.966 21.1699 13.8637 279.43 13.4454 7.12452 
+42.94 49.1821 50.8179 264.959 21.1737 13.8675 279.429 13.4463 7.12455 
+42.95 49.1727 50.8273 264.951 21.1775 13.8713 279.428 13.4471 7.12458 
+42.96 49.1632 50.8368 264.944 21.1813 13.8752 279.427 13.448 7.1246 
+42.97 49.1538 50.8462 264.936 21.1851 13.879 279.426 13.4489 7.12463 
+42.98 49.1444 50.8556 264.928 21.1889 13.8828 279.425 13.4498 7.12466 
+42.99 49.1349 50.8651 264.921 21.1927 13.8867 279.425 13.4507 7.1247 
+43 49.1255 50.8745 264.913 21.1965 13.8905 279.424 13.4516 7.12473 
+43.01 49.1161 50.8839 264.905 21.2003 13.8944 279.423 13.4525 7.12476 
+43.02 49.1066 50.8934 264.898 21.2041 13.8982 279.422 13.4534 7.12479 
+43.03 49.0972 50.9028 264.89 21.2079 13.9021 279.421 13.4543 7.12482 
+43.04 49.0878 50.9122 264.882 21.2117 13.9059 279.42 13.4552 7.12486 
+43.05 49.0784 50.9216 264.875 21.2155 13.9098 279.419 13.4561 7.12489 
+43.06 49.0689 50.9311 264.867 21.2193 13.9136 279.418 13.4571 7.12493 
+43.07 49.0595 50.9405 264.859 21.2231 13.9175 279.417 13.458 7.12496 
+43.08 49.0501 50.9499 264.852 21.2269 13.9213 279.416 13.4589 7.125 
+43.09 49.0406 50.9594 264.844 21.2308 13.9252 279.415 13.4598 7.12503 
+43.1 49.0312 50.9688 264.836 21.2346 13.929 279.414 13.4607 7.12507 
+43.11 49.0218 50.9782 264.829 21.2384 13.9329 279.413 13.4616 7.12511 
+43.12 49.0123 50.9877 264.821 21.2422 13.9367 279.412 13.4625 7.12514 
+43.13 49.0029 50.9971 264.813 21.246 13.9406 279.411 13.4634 7.12518 
+43.14 48.9935 51.0065 264.806 21.2498 13.9445 279.411 13.4643 7.12522 
+43.15 48.9841 51.0159 264.798 21.2536 13.9483 279.41 13.4652 7.12526 
+43.16 48.9746 51.0254 264.79 21.2574 13.9522 279.409 13.4661 7.1253 
+43.17 48.9652 51.0348 264.783 21.2612 13.956 279.408 13.467 7.12534 
+43.18 48.9558 51.0442 264.775 21.265 13.9599 279.407 13.4679 7.12538 
+43.19 48.9464 51.0536 264.767 21.2689 13.9638 279.406 13.4688 7.12542 
+43.2 48.9369 51.0631 264.76 21.2727 13.9677 279.405 13.4697 7.12546 
+43.21 48.9275 51.0725 264.752 21.2765 13.9715 279.404 13.4706 7.1255 
+43.22 48.9181 51.0819 264.744 21.2803 13.9754 279.403 13.4715 7.12555 
+43.23 48.9087 51.0913 264.737 21.2841 13.9793 279.402 13.4724 7.12559 
+43.24 48.8992 51.1008 264.729 21.2879 13.9831 279.401 13.4733 7.12563 
+43.25 48.8898 51.1102 264.721 21.2917 13.987 279.4 13.4742 7.12568 
+43.26 48.8804 51.1196 264.714 21.2955 13.9909 279.399 13.4752 7.12572 
+43.27 48.871 51.129 264.706 21.2994 13.9948 279.398 13.4761 7.12577 
+43.28 48.8616 51.1384 264.698 21.3032 13.9987 279.397 13.477 7.12581 
+43.29 48.8521 51.1479 264.69 21.307 14.0025 279.396 13.4779 7.12586 
+43.3 48.8427 51.1573 264.683 21.3108 14.0064 279.395 13.4788 7.12591 
+43.31 48.8333 51.1667 264.675 21.3146 14.0103 279.394 13.4797 7.12595 
+43.32 48.8239 51.1761 264.667 21.3184 14.0142 279.393 13.4806 7.126 
+43.33 48.8145 51.1855 264.66 21.3223 14.0181 279.392 13.4815 7.12605 
+43.34 48.805 51.195 264.652 21.3261 14.022 279.391 13.4824 7.1261 
+43.35 48.7956 51.2044 264.644 21.3299 14.0259 279.391 13.4833 7.12615 
+43.36 48.7862 51.2138 264.637 21.3337 14.0298 279.39 13.4843 7.1262 
+43.37 48.7768 51.2232 264.629 21.3375 14.0337 279.389 13.4852 7.12625 
+43.38 48.7674 51.2326 264.621 21.3414 14.0375 279.388 13.4861 7.1263 
+43.39 48.758 51.242 264.613 21.3452 14.0414 279.387 13.487 7.12635 
+43.4 48.7485 51.2515 264.606 21.349 14.0453 279.386 13.4879 7.1264 
+43.41 48.7391 51.2609 264.598 21.3528 14.0492 279.385 13.4888 7.12645 
+43.42 48.7297 51.2703 264.59 21.3567 14.0531 279.384 13.4897 7.12651 
+43.43 48.7203 51.2797 264.582 21.3605 14.057 279.383 13.4906 7.12656 
+43.44 48.7109 51.2891 264.575 21.3643 14.0609 279.382 13.4916 7.12661 
+43.45 48.7015 51.2985 264.567 21.3681 14.0649 279.381 13.4925 7.12667 
+43.46 48.6921 51.3079 264.559 21.3719 14.0688 279.38 13.4934 7.12672 
+43.47 48.6827 51.3173 264.552 21.3758 14.0727 279.379 13.4943 7.12678 
+43.48 48.6732 51.3268 264.544 21.3796 14.0766 279.378 13.4952 7.12684 
+43.49 48.6638 51.3362 264.536 21.3834 14.0805 279.377 13.4961 7.12689 
+43.5 48.6544 51.3456 264.528 21.3872 14.0844 279.376 13.4971 7.12695 
+43.51 48.645 51.355 264.521 21.3911 14.0883 279.375 13.498 7.12701 
+43.52 48.6356 51.3644 264.513 21.3949 14.0922 279.374 13.4989 7.12706 
+43.53 48.6262 51.3738 264.505 21.3987 14.0961 279.373 13.4998 7.12712 
+43.54 48.6168 51.3832 264.497 21.4026 14.1001 279.372 13.5007 7.12718 
+43.55 48.6074 51.3926 264.49 21.4064 14.104 279.371 13.5016 7.12724 
+43.56 48.598 51.402 264.482 21.4102 14.1079 279.37 13.5026 7.1273 
+43.57 48.5886 51.4114 264.474 21.414 14.1118 279.369 13.5035 7.12736 
+43.58 48.5792 51.4208 264.466 21.4179 14.1157 279.368 13.5044 7.12742 
+43.59 48.5697 51.4303 264.459 21.4217 14.1197 279.367 13.5053 7.12748 
+43.6 48.5603 51.4397 264.451 21.4255 14.1236 279.366 13.5062 7.12755 
+43.61 48.5509 51.4491 264.443 21.4294 14.1275 279.365 13.5072 7.12761 
+43.62 48.5415 51.4585 264.435 21.4332 14.1315 279.364 13.5081 7.12767 
+43.63 48.5321 51.4679 264.428 21.437 14.1354 279.363 13.509 7.12774 
+43.64 48.5227 51.4773 264.42 21.4409 14.1393 279.362 13.5099 7.1278 
+43.65 48.5133 51.4867 264.412 21.4447 14.1433 279.361 13.5108 7.12787 
+43.66 48.5039 51.4961 264.404 21.4485 14.1472 279.36 13.5118 7.12793 
+43.67 48.4945 51.5055 264.397 21.4524 14.1511 279.359 13.5127 7.128 
+43.68 48.4851 51.5149 264.389 21.4562 14.1551 279.358 13.5136 7.12806 
+43.69 48.4757 51.5243 264.381 21.46 14.159 279.357 13.5145 7.12813 
+43.7 48.4663 51.5337 264.373 21.4639 14.1629 279.356 13.5154 7.1282 
+43.71 48.4569 51.5431 264.365 21.4677 14.1669 279.355 13.5164 7.12826 
+43.72 48.4475 51.5525 264.358 21.4715 14.1708 279.354 13.5173 7.12833 
+43.73 48.4381 51.5619 264.35 21.4754 14.1748 279.353 13.5182 7.1284 
+43.74 48.4287 51.5713 264.342 21.4792 14.1787 279.352 13.5191 7.12847 
+43.75 48.4193 51.5807 264.334 21.4831 14.1827 279.351 13.5201 7.12854 
+43.76 48.4099 51.5901 264.326 21.4869 14.1866 279.35 13.521 7.12861 
+43.77 48.4005 51.5995 264.319 21.4907 14.1906 279.349 13.5219 7.12868 
+43.78 48.3911 51.6089 264.311 21.4946 14.1945 279.348 13.5228 7.12875 
+43.79 48.3817 51.6183 264.303 21.4984 14.1985 279.347 13.5238 7.12883 
+43.8 48.3723 51.6277 264.295 21.5023 14.2024 279.346 13.5247 7.1289 
+43.81 48.3629 51.6371 264.288 21.5061 14.2064 279.345 13.5256 7.12897 
+43.82 48.3535 51.6465 264.28 21.5099 14.2103 279.344 13.5265 7.12904 
+43.83 48.3441 51.6559 264.272 21.5138 14.2143 279.343 13.5275 7.12912 
+43.84 48.3348 51.6652 264.264 21.5176 14.2183 279.342 13.5284 7.12919 
+43.85 48.3254 51.6746 264.256 21.5215 14.2222 279.341 13.5293 7.12927 
+43.86 48.316 51.684 264.249 21.5253 14.2262 279.34 13.5303 7.12934 
+43.87 48.3066 51.6934 264.241 21.5291 14.2301 279.339 13.5312 7.12942 
+43.88 48.2972 51.7028 264.233 21.533 14.2341 279.338 13.5321 7.1295 
+43.89 48.2878 51.7122 264.225 21.5368 14.2381 279.337 13.533 7.12957 
+43.9 48.2784 51.7216 264.217 21.5407 14.2421 279.336 13.534 7.12965 
+43.91 48.269 51.731 264.209 21.5445 14.246 279.335 13.5349 7.12973 
+43.92 48.2596 51.7404 264.202 21.5484 14.25 279.334 13.5358 7.12981 
+43.93 48.2502 51.7498 264.194 21.5522 14.254 279.333 13.5368 7.12989 
+43.94 48.2408 51.7592 264.186 21.5561 14.2579 279.332 13.5377 7.12997 
+43.95 48.2314 51.7686 264.178 21.5599 14.2619 279.331 13.5386 7.13005 
+43.96 48.2221 51.7779 264.17 21.5638 14.2659 279.33 13.5396 7.13013 
+43.97 48.2127 51.7873 264.163 21.5676 14.2699 279.329 13.5405 7.13021 
+43.98 48.2033 51.7967 264.155 21.5715 14.2739 279.328 13.5414 7.13029 
+43.99 48.1939 51.8061 264.147 21.5753 14.2778 279.327 13.5423 7.13037 
+44 48.1845 51.8155 264.139 21.5791 14.2818 279.326 13.5433 7.13046 
+44.01 48.1751 51.8249 264.131 21.583 14.2858 279.325 13.5442 7.13054 
+44.02 48.1657 51.8343 264.123 21.5868 14.2898 279.324 13.5451 7.13062 
+44.03 48.1564 51.8436 264.116 21.5907 14.2938 279.323 13.5461 7.13071 
+44.04 48.147 51.853 264.108 21.5945 14.2978 279.322 13.547 7.13079 
+44.05 48.1376 51.8624 264.1 21.5984 14.3018 279.321 13.548 7.13088 
+44.06 48.1282 51.8718 264.092 21.6023 14.3057 279.32 13.5489 7.13096 
+44.07 48.1188 51.8812 264.084 21.6061 14.3097 279.319 13.5498 7.13105 
+44.08 48.1094 51.8906 264.076 21.61 14.3137 279.318 13.5508 7.13114 
+44.09 48.1001 51.8999 264.068 21.6138 14.3177 279.317 13.5517 7.13123 
+44.1 48.0907 51.9093 264.061 21.6177 14.3217 279.316 13.5526 7.13131 
+44.11 48.0813 51.9187 264.053 21.6215 14.3257 279.315 13.5536 7.1314 
+44.12 48.0719 51.9281 264.045 21.6254 14.3297 279.314 13.5545 7.13149 
+44.13 48.0625 51.9375 264.037 21.6292 14.3337 279.313 13.5554 7.13158 
+44.14 48.0532 51.9468 264.029 21.6331 14.3377 279.312 13.5564 7.13167 
+44.15 48.0438 51.9562 264.021 21.6369 14.3417 279.311 13.5573 7.13176 
+44.16 48.0344 51.9656 264.013 21.6408 14.3457 279.31 13.5583 7.13185 
+44.17 48.025 51.975 264.006 21.6447 14.3497 279.309 13.5592 7.13194 
+44.18 48.0157 51.9843 263.998 21.6485 14.3538 279.308 13.5601 7.13204 
+44.19 48.0063 51.9937 263.99 21.6524 14.3578 279.307 13.5611 7.13213 
+44.2 47.9969 52.0031 263.982 21.6562 14.3618 279.306 13.562 7.13222 
+44.21 47.9875 52.0125 263.974 21.6601 14.3658 279.305 13.5629 7.13232 
+44.22 47.9781 52.0219 263.966 21.6639 14.3698 279.304 13.5639 7.13241 
+44.23 47.9688 52.0312 263.958 21.6678 14.3738 279.303 13.5648 7.13251 
+44.24 47.9594 52.0406 263.95 21.6717 14.3778 279.302 13.5658 7.1326 
+44.25 47.95 52.05 263.943 21.6755 14.3819 279.301 13.5667 7.1327 
+44.26 47.9407 52.0593 263.935 21.6794 14.3859 279.3 13.5677 7.13279 
+44.27 47.9313 52.0687 263.927 21.6832 14.3899 279.299 13.5686 7.13289 
+44.28 47.9219 52.0781 263.919 21.6871 14.3939 279.297 13.5695 7.13299 
+44.29 47.9125 52.0875 263.911 21.691 14.3979 279.296 13.5705 7.13309 
+44.3 47.9032 52.0968 263.903 21.6948 14.402 279.295 13.5714 7.13318 
+44.31 47.8938 52.1062 263.895 21.6987 14.406 279.294 13.5724 7.13328 
+44.32 47.8844 52.1156 263.887 21.7026 14.41 279.293 13.5733 7.13338 
+44.33 47.8751 52.1249 263.88 21.7064 14.4141 279.292 13.5743 7.13348 
+44.34 47.8657 52.1343 263.872 21.7103 14.4181 279.291 13.5752 7.13358 
+44.35 47.8563 52.1437 263.864 21.7142 14.4221 279.29 13.5761 7.13369 
+44.36 47.847 52.153 263.856 21.718 14.4262 279.289 13.5771 7.13379 
+44.37 47.8376 52.1624 263.848 21.7219 14.4302 279.288 13.578 7.13389 
+44.38 47.8282 52.1718 263.84 21.7258 14.4342 279.287 13.579 7.13399 
+44.39 47.8189 52.1811 263.832 21.7296 14.4383 279.286 13.5799 7.1341 
+44.4 47.8095 52.1905 263.824 21.7335 14.4423 279.285 13.5809 7.1342 
+44.41 47.8001 52.1999 263.816 21.7374 14.4464 279.284 13.5818 7.1343 
+44.42 47.7908 52.2092 263.808 21.7412 14.4504 279.283 13.5828 7.13441 
+44.43 47.7814 52.2186 263.8 21.7451 14.4544 279.282 13.5837 7.13451 
+44.44 47.772 52.228 263.793 21.749 14.4585 279.281 13.5847 7.13462 
+44.45 47.7627 52.2373 263.785 21.7528 14.4625 279.28 13.5856 7.13473 
+44.46 47.7533 52.2467 263.777 21.7567 14.4666 279.279 13.5866 7.13483 
+44.47 47.7439 52.2561 263.769 21.7606 14.4706 279.278 13.5875 7.13494 
+44.48 47.7346 52.2654 263.761 21.7644 14.4747 279.276 13.5885 7.13505 
+44.49 47.7252 52.2748 263.753 21.7683 14.4787 279.275 13.5894 7.13516 
+44.5 47.7159 52.2841 263.745 21.7722 14.4828 279.274 13.5904 7.13527 
+44.51 47.7065 52.2935 263.737 21.7761 14.4868 279.273 13.5913 7.13538 
+44.52 47.6971 52.3029 263.729 21.7799 14.4909 279.272 13.5923 7.13549 
+44.53 47.6878 52.3122 263.721 21.7838 14.495 279.271 13.5932 7.1356 
+44.54 47.6784 52.3216 263.713 21.7877 14.499 279.27 13.5942 7.13571 
+44.55 47.6691 52.3309 263.705 21.7916 14.5031 279.269 13.5951 7.13582 
+44.56 47.6597 52.3403 263.697 21.7954 14.5071 279.268 13.5961 7.13593 
+44.57 47.6503 52.3497 263.689 21.7993 14.5112 279.267 13.597 7.13604 
+44.58 47.641 52.359 263.682 21.8032 14.5153 279.266 13.598 7.13616 
+44.59 47.6316 52.3684 263.674 21.8071 14.5193 279.265 13.5989 7.13627 
+44.6 47.6223 52.3777 263.666 21.8109 14.5234 279.264 13.5999 7.13639 
+44.61 47.6129 52.3871 263.658 21.8148 14.5275 279.263 13.6008 7.1365 
+44.62 47.6036 52.3964 263.65 21.8187 14.5315 279.262 13.6018 7.13662 
+44.63 47.5942 52.4058 263.642 21.8226 14.5356 279.261 13.6027 7.13673 
+44.64 47.5849 52.4151 263.634 21.8264 14.5397 279.259 13.6037 7.13685 
+44.65 47.5755 52.4245 263.626 21.8303 14.5438 279.258 13.6046 7.13697 
+44.66 47.5662 52.4338 263.618 21.8342 14.5478 279.257 13.6056 7.13708 
+44.67 47.5568 52.4432 263.61 21.8381 14.5519 279.256 13.6066 7.1372 
+44.68 47.5475 52.4525 263.602 21.842 14.556 279.255 13.6075 7.13732 
+44.69 47.5381 52.4619 263.594 21.8458 14.5601 279.254 13.6085 7.13744 
+44.7 47.5288 52.4712 263.586 21.8497 14.5642 279.253 13.6094 7.13756 
+44.71 47.5194 52.4806 263.578 21.8536 14.5683 279.252 13.6104 7.13768 
+44.72 47.5101 52.4899 263.57 21.8575 14.5723 279.251 13.6113 7.1378 
+44.73 47.5007 52.4993 263.562 21.8614 14.5764 279.25 13.6123 7.13792 
+44.74 47.4914 52.5086 263.554 21.8652 14.5805 279.249 13.6133 7.13804 
+44.75 47.482 52.518 263.546 21.8691 14.5846 279.248 13.6142 7.13817 
+44.76 47.4727 52.5273 263.538 21.873 14.5887 279.247 13.6152 7.13829 
+44.77 47.4633 52.5367 263.53 21.8769 14.5928 279.245 13.6161 7.13841 
+44.78 47.454 52.546 263.522 21.8808 14.5969 279.244 13.6171 7.13854 
+44.79 47.4446 52.5554 263.514 21.8847 14.601 279.243 13.6181 7.13866 
+44.8 47.4353 52.5647 263.506 21.8886 14.6051 279.242 13.619 7.13878 
+44.81 47.4259 52.5741 263.498 21.8924 14.6092 279.241 13.62 7.13891 
+44.82 47.4166 52.5834 263.49 21.8963 14.6133 279.24 13.6209 7.13904 
+44.83 47.4073 52.5927 263.482 21.9002 14.6174 279.239 13.6219 7.13916 
+44.84 47.3979 52.6021 263.474 21.9041 14.6215 279.238 13.6229 7.13929 
+44.85 47.3886 52.6114 263.466 21.908 14.6256 279.237 13.6238 7.13942 
+44.86 47.3792 52.6208 263.458 21.9119 14.6297 279.236 13.6248 7.13955 
+44.87 47.3699 52.6301 263.45 21.9158 14.6338 279.235 13.6257 7.13967 
+44.88 47.3605 52.6395 263.442 21.9197 14.6379 279.233 13.6267 7.1398 
+44.89 47.3512 52.6488 263.434 21.9235 14.642 279.232 13.6277 7.13993 
+44.9 47.3419 52.6581 263.426 21.9274 14.6461 279.231 13.6286 7.14006 
+44.91 47.3325 52.6675 263.418 21.9313 14.6502 279.23 13.6296 7.14019 
+44.92 47.3232 52.6768 263.41 21.9352 14.6543 279.229 13.6306 7.14033 
+44.93 47.3139 52.6861 263.402 21.9391 14.6585 279.228 13.6315 7.14046 
+44.94 47.3045 52.6955 263.394 21.943 14.6626 279.227 13.6325 7.14059 
+44.95 47.2952 52.7048 263.386 21.9469 14.6667 279.226 13.6335 7.14072 
+44.96 47.2858 52.7142 263.378 21.9508 14.6708 279.225 13.6344 7.14086 
+44.97 47.2765 52.7235 263.37 21.9547 14.6749 279.224 13.6354 7.14099 
+44.98 47.2672 52.7328 263.362 21.9586 14.6791 279.223 13.6364 7.14113 
+44.99 47.2578 52.7422 263.354 21.9625 14.6832 279.221 13.6373 7.14126 
+45 47.2485 52.7515 263.346 21.9664 14.6873 279.22 13.6383 7.1414 
+45.01 47.2392 52.7608 263.338 21.9702 14.6914 279.219 13.6393 7.14153 
+45.02 47.2298 52.7702 263.33 21.9741 14.6956 279.218 13.6402 7.14167 
+45.03 47.2205 52.7795 263.322 21.978 14.6997 279.217 13.6412 7.14181 
+45.04 47.2112 52.7888 263.314 21.9819 14.7038 279.216 13.6422 7.14194 
+45.05 47.2018 52.7982 263.306 21.9858 14.708 279.215 13.6431 7.14208 
+45.06 47.1925 52.8075 263.298 21.9897 14.7121 279.214 13.6441 7.14222 
+45.07 47.1832 52.8168 263.29 21.9936 14.7162 279.213 13.6451 7.14236 
+45.08 47.1739 52.8261 263.282 21.9975 14.7204 279.211 13.646 7.1425 
+45.09 47.1645 52.8355 263.274 22.0014 14.7245 279.21 13.647 7.14264 
+45.1 47.1552 52.8448 263.266 22.0053 14.7286 279.209 13.648 7.14278 
+45.11 47.1459 52.8541 263.258 22.0092 14.7328 279.208 13.649 7.14292 
+45.12 47.1365 52.8635 263.25 22.0131 14.7369 279.207 13.6499 7.14307 
+45.13 47.1272 52.8728 263.242 22.017 14.7411 279.206 13.6509 7.14321 
+45.14 47.1179 52.8821 263.234 22.0209 14.7452 279.205 13.6519 7.14335 
+45.15 47.1086 52.8914 263.226 22.0248 14.7494 279.204 13.6528 7.1435 
+45.16 47.0992 52.9008 263.218 22.0287 14.7535 279.203 13.6538 7.14364 
+45.17 47.0899 52.9101 263.21 22.0326 14.7577 279.201 13.6548 7.14379 
+45.18 47.0806 52.9194 263.202 22.0365 14.7618 279.2 13.6558 7.14393 
+45.19 47.0713 52.9287 263.194 22.0404 14.766 279.199 13.6567 7.14408 
+45.2 47.0619 52.9381 263.186 22.0443 14.7701 279.198 13.6577 7.14422 
+45.21 47.0526 52.9474 263.177 22.0482 14.7743 279.197 13.6587 7.14437 
+45.22 47.0433 52.9567 263.169 22.0521 14.7784 279.196 13.6597 7.14452 
+45.23 47.034 52.966 263.161 22.056 14.7826 279.195 13.6606 7.14467 
+45.24 47.0247 52.9753 263.153 22.0599 14.7867 279.194 13.6616 7.14481 
+45.25 47.0153 52.9847 263.145 22.0639 14.7909 279.192 13.6626 7.14496 
+45.26 47.006 52.994 263.137 22.0678 14.7951 279.191 13.6636 7.14511 
+45.27 46.9967 53.0033 263.129 22.0717 14.7992 279.19 13.6645 7.14526 
+45.28 46.9874 53.0126 263.121 22.0756 14.8034 279.189 13.6655 7.14541 
+45.29 46.9781 53.0219 263.113 22.0795 14.8076 279.188 13.6665 7.14556 
+45.3 46.9687 53.0313 263.105 22.0834 14.8117 279.187 13.6675 7.14572 
+45.31 46.9594 53.0406 263.097 22.0873 14.8159 279.186 13.6685 7.14587 
+45.32 46.9501 53.0499 263.089 22.0912 14.8201 279.185 13.6694 7.14602 
+45.33 46.9408 53.0592 263.081 22.0951 14.8242 279.183 13.6704 7.14618 
+45.34 46.9315 53.0685 263.073 22.099 14.8284 279.182 13.6714 7.14633 
+45.35 46.9222 53.0778 263.064 22.1029 14.8326 279.181 13.6724 7.14648 
+45.36 46.9128 53.0872 263.056 22.1068 14.8368 279.18 13.6734 7.14664 
+45.37 46.9035 53.0965 263.048 22.1107 14.841 279.179 13.6743 7.14679 
+45.38 46.8942 53.1058 263.04 22.1147 14.8451 279.178 13.6753 7.14695 
+45.39 46.8849 53.1151 263.032 22.1186 14.8493 279.177 13.6763 7.14711 
+45.4 46.8756 53.1244 263.024 22.1225 14.8535 279.175 13.6773 7.14726 
+45.41 46.8663 53.1337 263.016 22.1264 14.8577 279.174 13.6783 7.14742 
+45.42 46.857 53.143 263.008 22.1303 14.8619 279.173 13.6792 7.14758 
+45.43 46.8477 53.1523 263 22.1342 14.866 279.172 13.6802 7.14774 
+45.44 46.8384 53.1616 262.992 22.1381 14.8702 279.171 13.6812 7.1479 
+45.45 46.829 53.171 262.984 22.142 14.8744 279.17 13.6822 7.14806 
+45.46 46.8197 53.1803 262.975 22.146 14.8786 279.169 13.6832 7.14822 
+45.47 46.8104 53.1896 262.967 22.1499 14.8828 279.167 13.6842 7.14838 
+45.48 46.8011 53.1989 262.959 22.1538 14.887 279.166 13.6851 7.14854 
+45.49 46.7918 53.2082 262.951 22.1577 14.8912 279.165 13.6861 7.1487 
+45.5 46.7825 53.2175 262.943 22.1616 14.8954 279.164 13.6871 7.14887 
+45.51 46.7732 53.2268 262.935 22.1655 14.8996 279.163 13.6881 7.14903 
+45.52 46.7639 53.2361 262.927 22.1695 14.9038 279.162 13.6891 7.14919 
+45.53 46.7546 53.2454 262.919 22.1734 14.908 279.161 13.6901 7.14936 
+45.54 46.7453 53.2547 262.911 22.1773 14.9122 279.159 13.6911 7.14952 
+45.55 46.736 53.264 262.902 22.1812 14.9164 279.158 13.6921 7.14969 
+45.56 46.7267 53.2733 262.894 22.1851 14.9206 279.157 13.693 7.14985 
+45.57 46.7174 53.2826 262.886 22.1891 14.9248 279.156 13.694 7.15002 
+45.58 46.7081 53.2919 262.878 22.193 14.929 279.155 13.695 7.15019 
+45.59 46.6988 53.3012 262.87 22.1969 14.9332 279.154 13.696 7.15035 
+45.6 46.6895 53.3105 262.862 22.2008 14.9374 279.152 13.697 7.15052 
+45.61 46.6802 53.3198 262.854 22.2047 14.9417 279.151 13.698 7.15069 
+45.62 46.6709 53.3291 262.845 22.2087 14.9459 279.15 13.699 7.15086 
+45.63 46.6616 53.3384 262.837 22.2126 14.9501 279.149 13.7 7.15103 
+45.64 46.6523 53.3477 262.829 22.2165 14.9543 279.148 13.701 7.1512 
+45.65 46.643 53.357 262.821 22.2204 14.9585 279.147 13.7019 7.15137 
+45.66 46.6337 53.3663 262.813 22.2243 14.9627 279.146 13.7029 7.15154 
+45.67 46.6244 53.3756 262.805 22.2283 14.967 279.144 13.7039 7.15171 
+45.68 46.6151 53.3849 262.797 22.2322 14.9712 279.143 13.7049 7.15189 
+45.69 46.6058 53.3942 262.788 22.2361 14.9754 279.142 13.7059 7.15206 
+45.7 46.5965 53.4035 262.78 22.24 14.9796 279.141 13.7069 7.15223 
+45.71 46.5872 53.4128 262.772 22.244 14.9839 279.14 13.7079 7.15241 
+45.72 46.5779 53.4221 262.764 22.2479 14.9881 279.139 13.7089 7.15258 
+45.73 46.5686 53.4314 262.756 22.2518 14.9923 279.137 13.7099 7.15276 
+45.74 46.5593 53.4407 262.748 22.2557 14.9965 279.136 13.7109 7.15293 
+45.75 46.55 53.45 262.74 22.2597 15.0008 279.135 13.7119 7.15311 
+45.76 46.5408 53.4592 262.731 22.2636 15.005 279.134 13.7129 7.15328 
+45.77 46.5315 53.4685 262.723 22.2675 15.0092 279.133 13.7139 7.15346 
+45.78 46.5222 53.4778 262.715 22.2715 15.0135 279.132 13.7149 7.15364 
+45.79 46.5129 53.4871 262.707 22.2754 15.0177 279.13 13.7159 7.15382 
+45.8 46.5036 53.4964 262.699 22.2793 15.022 279.129 13.7168 7.154 
+45.81 46.4943 53.5057 262.691 22.2832 15.0262 279.128 13.7178 7.15418 
+45.82 46.485 53.515 262.682 22.2872 15.0304 279.127 13.7188 7.15436 
+45.83 46.4757 53.5243 262.674 22.2911 15.0347 279.126 13.7198 7.15454 
+45.84 46.4664 53.5336 262.666 22.295 15.0389 279.124 13.7208 7.15472 
+45.85 46.4572 53.5428 262.658 22.299 15.0432 279.123 13.7218 7.1549 
+45.86 46.4479 53.5521 262.65 22.3029 15.0474 279.122 13.7228 7.15508 
+45.87 46.4386 53.5614 262.642 22.3068 15.0517 279.121 13.7238 7.15527 
+45.88 46.4293 53.5707 262.633 22.3108 15.0559 279.12 13.7248 7.15545 
+45.89 46.42 53.58 262.625 22.3147 15.0602 279.119 13.7258 7.15563 
+45.9 46.4107 53.5893 262.617 22.3186 15.0644 279.117 13.7268 7.15582 
+45.91 46.4015 53.5985 262.609 22.3226 15.0687 279.116 13.7278 7.156 
+45.92 46.3922 53.6078 262.601 22.3265 15.0729 279.115 13.7288 7.15619 
+45.93 46.3829 53.6171 262.592 22.3304 15.0772 279.114 13.7298 7.15637 
+45.94 46.3736 53.6264 262.584 22.3344 15.0815 279.113 13.7308 7.15656 
+45.95 46.3643 53.6357 262.576 22.3383 15.0857 279.111 13.7318 7.15675 
+45.96 46.3551 53.6449 262.568 22.3422 15.09 279.11 13.7328 7.15694 
+45.97 46.3458 53.6542 262.56 22.3462 15.0942 279.109 13.7338 7.15712 
+45.98 46.3365 53.6635 262.551 22.3501 15.0985 279.108 13.7348 7.15731 
+45.99 46.3272 53.6728 262.543 22.354 15.1028 279.107 13.7358 7.1575 
+46 46.3179 53.6821 262.535 22.358 15.107 279.105 13.7369 7.15769 
+46.01 46.3087 53.6913 262.527 22.3619 15.1113 279.104 13.7379 7.15788 
+46.02 46.2994 53.7006 262.519 22.3659 15.1156 279.103 13.7389 7.15807 
+46.03 46.2901 53.7099 262.51 22.3698 15.1199 279.102 13.7399 7.15826 
+46.04 46.2808 53.7192 262.502 22.3737 15.1241 279.101 13.7409 7.15846 
+46.05 46.2716 53.7284 262.494 22.3777 15.1284 279.099 13.7419 7.15865 
+46.06 46.2623 53.7377 262.486 22.3816 15.1327 279.098 13.7429 7.15884 
+46.07 46.253 53.747 262.477 22.3856 15.137 279.097 13.7439 7.15904 
+46.08 46.2437 53.7563 262.469 22.3895 15.1412 279.096 13.7449 7.15923 
+46.09 46.2345 53.7655 262.461 22.3934 15.1455 279.095 13.7459 7.15943 
+46.1 46.2252 53.7748 262.453 22.3974 15.1498 279.093 13.7469 7.15962 
+46.11 46.2159 53.7841 262.445 22.4013 15.1541 279.092 13.7479 7.15982 
+46.12 46.2067 53.7933 262.436 22.4053 15.1584 279.091 13.7489 7.16001 
+46.13 46.1974 53.8026 262.428 22.4092 15.1627 279.09 13.7499 7.16021 
+46.14 46.1881 53.8119 262.42 22.4132 15.1669 279.089 13.7509 7.16041 
+46.15 46.1789 53.8211 262.412 22.4171 15.1712 279.087 13.7519 7.16061 
+46.16 46.1696 53.8304 262.403 22.421 15.1755 279.086 13.753 7.16081 
+46.17 46.1603 53.8397 262.395 22.425 15.1798 279.085 13.754 7.161 
+46.18 46.1511 53.8489 262.387 22.4289 15.1841 279.084 13.755 7.1612 
+46.19 46.1418 53.8582 262.379 22.4329 15.1884 279.083 13.756 7.16141 
+46.2 46.1325 53.8675 262.37 22.4368 15.1927 279.081 13.757 7.16161 
+46.21 46.1233 53.8767 262.362 22.4408 15.197 279.08 13.758 7.16181 
+46.22 46.114 53.886 262.354 22.4447 15.2013 279.079 13.759 7.16201 
+46.23 46.1047 53.8953 262.346 22.4487 15.2056 279.078 13.76 7.16221 
+46.24 46.0955 53.9045 262.337 22.4526 15.2099 279.077 13.761 7.16242 
+46.25 46.0862 53.9138 262.329 22.4566 15.2142 279.075 13.7621 7.16262 
+46.26 46.0769 53.9231 262.321 22.4605 15.2185 279.074 13.7631 7.16282 
+46.27 46.0677 53.9323 262.313 22.4645 15.2228 279.073 13.7641 7.16303 
+46.28 46.0584 53.9416 262.304 22.4684 15.2271 279.072 13.7651 7.16323 
+46.29 46.0492 53.9508 262.296 22.4724 15.2314 279.07 13.7661 7.16344 
+46.3 46.0399 53.9601 262.288 22.4763 15.2357 279.069 13.7671 7.16365 
+46.31 46.0306 53.9694 262.28 22.4803 15.2401 279.068 13.7681 7.16385 
+46.32 46.0214 53.9786 262.271 22.4842 15.2444 279.067 13.7692 7.16406 
+46.33 46.0121 53.9879 262.263 22.4882 15.2487 279.066 13.7702 7.16427 
+46.34 46.0029 53.9971 262.255 22.4921 15.253 279.064 13.7712 7.16448 
+46.35 45.9936 54.0064 262.247 22.4961 15.2573 279.063 13.7722 7.16469 
+46.36 45.9844 54.0156 262.238 22.5 15.2616 279.062 13.7732 7.1649 
+46.37 45.9751 54.0249 262.23 22.504 15.266 279.061 13.7742 7.16511 
+46.38 45.9658 54.0342 262.222 22.5079 15.2703 279.059 13.7753 7.16532 
+46.39 45.9566 54.0434 262.214 22.5119 15.2746 279.058 13.7763 7.16553 
+46.4 45.9473 54.0527 262.205 22.5158 15.2789 279.057 13.7773 7.16574 
+46.41 45.9381 54.0619 262.197 22.5198 15.2833 279.056 13.7783 7.16595 
+46.42 45.9288 54.0712 262.189 22.5238 15.2876 279.054 13.7793 7.16617 
+46.43 45.9196 54.0804 262.18 22.5277 15.2919 279.053 13.7804 7.16638 
+46.44 45.9103 54.0897 262.172 22.5317 15.2962 279.052 13.7814 7.1666 
+46.45 45.9011 54.0989 262.164 22.5356 15.3006 279.051 13.7824 7.16681 
+46.46 45.8918 54.1082 262.156 22.5396 15.3049 279.05 13.7834 7.16703 
+46.47 45.8826 54.1174 262.147 22.5435 15.3092 279.048 13.7844 7.16724 
+46.48 45.8733 54.1267 262.139 22.5475 15.3136 279.047 13.7855 7.16746 
+46.49 45.8641 54.1359 262.131 22.5515 15.3179 279.046 13.7865 7.16767 
+46.5 45.8548 54.1452 262.122 22.5554 15.3223 279.045 13.7875 7.16789 
+46.51 45.8456 54.1544 262.114 22.5594 15.3266 279.043 13.7885 7.16811 
+46.52 45.8364 54.1636 262.106 22.5633 15.3309 279.042 13.7896 7.16833 
+46.53 45.8271 54.1729 262.097 22.5673 15.3353 279.041 13.7906 7.16855 
+46.54 45.8179 54.1821 262.089 22.5713 15.3396 279.04 13.7916 7.16877 
+46.55 45.8086 54.1914 262.081 22.5752 15.344 279.038 13.7926 7.16899 
+46.56 45.7994 54.2006 262.072 22.5792 15.3483 279.037 13.7937 7.16921 
+46.57 45.7901 54.2099 262.064 22.5831 15.3527 279.036 13.7947 7.16943 
+46.58 45.7809 54.2191 262.056 22.5871 15.357 279.035 13.7957 7.16965 
+46.59 45.7716 54.2284 262.048 22.5911 15.3614 279.033 13.7967 7.16988 
+46.6 45.7624 54.2376 262.039 22.595 15.3657 279.032 13.7978 7.1701 
+46.61 45.7532 54.2468 262.031 22.599 15.3701 279.031 13.7988 7.17032 
+46.62 45.7439 54.2561 262.023 22.603 15.3744 279.03 13.7998 7.17055 
+46.63 45.7347 54.2653 262.014 22.6069 15.3788 279.028 13.8008 7.17077 
+46.64 45.7254 54.2746 262.006 22.6109 15.3832 279.027 13.8019 7.171 
+46.65 45.7162 54.2838 261.998 22.6149 15.3875 279.026 13.8029 7.17122 
+46.66 45.707 54.293 261.989 22.6188 15.3919 279.025 13.8039 7.17145 
+46.67 45.6977 54.3023 261.981 22.6228 15.3962 279.023 13.8049 7.17168 
+46.68 45.6885 54.3115 261.973 22.6268 15.4006 279.022 13.806 7.1719 
+46.69 45.6793 54.3207 261.964 22.6307 15.405 279.021 13.807 7.17213 
+46.7 45.67 54.33 261.956 22.6347 15.4093 279.02 13.808 7.17236 
+46.71 45.6608 54.3392 261.948 22.6387 15.4137 279.018 13.8091 7.17259 
+46.72 45.6516 54.3484 261.939 22.6426 15.4181 279.017 13.8101 7.17282 
+46.73 45.6423 54.3577 261.931 22.6466 15.4224 279.016 13.8111 7.17305 
+46.74 45.6331 54.3669 261.923 22.6506 15.4268 279.015 13.8122 7.17328 
+46.75 45.6239 54.3761 261.914 22.6545 15.4312 279.013 13.8132 7.17351 
+46.76 45.6146 54.3854 261.906 22.6585 15.4356 279.012 13.8142 7.17375 
+46.77 45.6054 54.3946 261.898 22.6625 15.44 279.011 13.8153 7.17398 
+46.78 45.5962 54.4038 261.889 22.6664 15.4443 279.009 13.8163 7.17421 
+46.79 45.5869 54.4131 261.881 22.6704 15.4487 279.008 13.8173 7.17445 
+46.8 45.5777 54.4223 261.873 22.6744 15.4531 279.007 13.8184 7.17468 
+46.81 45.5685 54.4315 261.864 22.6784 15.4575 279.006 13.8194 7.17492 
+46.82 45.5593 54.4407 261.856 22.6823 15.4619 279.004 13.8204 7.17515 
+46.83 45.55 54.45 261.847 22.6863 15.4662 279.003 13.8215 7.17539 
+46.84 45.5408 54.4592 261.839 22.6903 15.4706 279.002 13.8225 7.17562 
+46.85 45.5316 54.4684 261.831 22.6943 15.475 279.001 13.8235 7.17586 
+46.86 45.5224 54.4776 261.822 22.6982 15.4794 278.999 13.8246 7.1761 
+46.87 45.5131 54.4869 261.814 22.7022 15.4838 278.998 13.8256 7.17634 
+46.88 45.5039 54.4961 261.806 22.7062 15.4882 278.997 13.8266 7.17658 
+46.89 45.4947 54.5053 261.797 22.7101 15.4926 278.996 13.8277 7.17682 
+46.9 45.4855 54.5145 261.789 22.7141 15.497 278.994 13.8287 7.17706 
+46.91 45.4762 54.5238 261.781 22.7181 15.5014 278.993 13.8298 7.1773 
+46.92 45.467 54.533 261.772 22.7221 15.5058 278.992 13.8308 7.17754 
+46.93 45.4578 54.5422 261.764 22.7261 15.5102 278.99 13.8318 7.17778 
+46.94 45.4486 54.5514 261.755 22.73 15.5146 278.989 13.8329 7.17802 
+46.95 45.4394 54.5606 261.747 22.734 15.519 278.988 13.8339 7.17826 
+46.96 45.4301 54.5699 261.739 22.738 15.5234 278.987 13.835 7.17851 
+46.97 45.4209 54.5791 261.73 22.742 15.5278 278.985 13.836 7.17875 
+46.98 45.4117 54.5883 261.722 22.7459 15.5322 278.984 13.837 7.179 
+46.99 45.4025 54.5975 261.713 22.7499 15.5366 278.983 13.8381 7.17924 
+47 45.3933 54.6067 261.705 22.7539 15.541 278.981 13.8391 7.17949 
+47.01 45.3841 54.6159 261.697 22.7579 15.5454 278.98 13.8402 7.17973 
+47.02 45.3749 54.6251 261.688 22.7619 15.5499 278.979 13.8412 7.17998 
+47.03 45.3656 54.6344 261.68 22.7658 15.5543 278.978 13.8422 7.18023 
+47.04 45.3564 54.6436 261.671 22.7698 15.5587 278.976 13.8433 7.18047 
+47.05 45.3472 54.6528 261.663 22.7738 15.5631 278.975 13.8443 7.18072 
+47.06 45.338 54.662 261.655 22.7778 15.5675 278.974 13.8454 7.18097 
+47.07 45.3288 54.6712 261.646 22.7818 15.5719 278.972 13.8464 7.18122 
+47.08 45.3196 54.6804 261.638 22.7858 15.5764 278.971 13.8475 7.18147 
+47.09 45.3104 54.6896 261.629 22.7897 15.5808 278.97 13.8485 7.18172 
+47.1 45.3012 54.6988 261.621 22.7937 15.5852 278.968 13.8496 7.18197 
+47.11 45.292 54.708 261.613 22.7977 15.5896 278.967 13.8506 7.18223 
+47.12 45.2827 54.7173 261.604 22.8017 15.5941 278.966 13.8516 7.18248 
+47.13 45.2735 54.7265 261.596 22.8057 15.5985 278.965 13.8527 7.18273 
+47.14 45.2643 54.7357 261.587 22.8097 15.6029 278.963 13.8537 7.18298 
+47.15 45.2551 54.7449 261.579 22.8137 15.6074 278.962 13.8548 7.18324 
+47.16 45.2459 54.7541 261.571 22.8176 15.6118 278.961 13.8558 7.18349 
+47.17 45.2367 54.7633 261.562 22.8216 15.6162 278.959 13.8569 7.18375 
+47.18 45.2275 54.7725 261.554 22.8256 15.6207 278.958 13.8579 7.184 
+47.19 45.2183 54.7817 261.545 22.8296 15.6251 278.957 13.859 7.18426 
+47.2 45.2091 54.7909 261.537 22.8336 15.6295 278.955 13.86 7.18452 
+47.21 45.1999 54.8001 261.528 22.8376 15.634 278.954 13.8611 7.18478 
+47.22 45.1907 54.8093 261.52 22.8416 15.6384 278.953 13.8621 7.18503 
+47.23 45.1815 54.8185 261.512 22.8456 15.6429 278.952 13.8632 7.18529 
+47.24 45.1723 54.8277 261.503 22.8495 15.6473 278.95 13.8642 7.18555 
+47.25 45.1631 54.8369 261.495 22.8535 15.6518 278.949 13.8653 7.18581 
+47.26 45.1539 54.8461 261.486 22.8575 15.6562 278.948 13.8663 7.18607 
+47.27 45.1447 54.8553 261.478 22.8615 15.6607 278.946 13.8674 7.18633 
+47.28 45.1355 54.8645 261.469 22.8655 15.6651 278.945 13.8684 7.18659 
+47.29 45.1263 54.8737 261.461 22.8695 15.6696 278.944 13.8695 7.18686 
+47.3 45.1171 54.8829 261.452 22.8735 15.674 278.942 13.8705 7.18712 
+47.31 45.1079 54.8921 261.444 22.8775 15.6785 278.941 13.8716 7.18738 
+47.32 45.0987 54.9013 261.436 22.8815 15.6829 278.94 13.8726 7.18765 
+47.33 45.0895 54.9105 261.427 22.8855 15.6874 278.938 13.8737 7.18791 
+47.34 45.0803 54.9197 261.419 22.8895 15.6918 278.937 13.8748 7.18818 
+47.35 45.0711 54.9289 261.41 22.8935 15.6963 278.936 13.8758 7.18844 
+47.36 45.0619 54.9381 261.402 22.8975 15.7008 278.934 13.8769 7.18871 
+47.37 45.0528 54.9472 261.393 22.9015 15.7052 278.933 13.8779 7.18897 
+47.38 45.0436 54.9564 261.385 22.9054 15.7097 278.932 13.879 7.18924 
+47.39 45.0344 54.9656 261.376 22.9094 15.7142 278.93 13.88 7.18951 
+47.4 45.0252 54.9748 261.368 22.9134 15.7186 278.929 13.8811 7.18978 
+47.41 45.016 54.984 261.359 22.9174 15.7231 278.928 13.8822 7.19005 
+47.42 45.0068 54.9932 261.351 22.9214 15.7276 278.926 13.8832 7.19032 
+47.43 44.9976 55.0024 261.343 22.9254 15.732 278.925 13.8843 7.19059 
+47.44 44.9884 55.0116 261.334 22.9294 15.7365 278.924 13.8853 7.19086 
+47.45 44.9792 55.0208 261.326 22.9334 15.741 278.922 13.8864 7.19113 
+47.46 44.9701 55.0299 261.317 22.9374 15.7455 278.921 13.8874 7.1914 
+47.47 44.9609 55.0391 261.309 22.9414 15.7499 278.92 13.8885 7.19167 
+47.48 44.9517 55.0483 261.3 22.9454 15.7544 278.918 13.8896 7.19194 
+47.49 44.9425 55.0575 261.292 22.9494 15.7589 278.917 13.8906 7.19222 
+47.5 44.9333 55.0667 261.283 22.9534 15.7634 278.916 13.8917 7.19249 
+47.51 44.9241 55.0759 261.275 22.9574 15.7679 278.914 13.8927 7.19277 
+47.52 44.915 55.085 261.266 22.9614 15.7724 278.913 13.8938 7.19304 
+47.53 44.9058 55.0942 261.258 22.9654 15.7768 278.912 13.8949 7.19332 
+47.54 44.8966 55.1034 261.249 22.9694 15.7813 278.91 13.8959 7.19359 
+47.55 44.8874 55.1126 261.241 22.9734 15.7858 278.909 13.897 7.19387 
+47.56 44.8782 55.1218 261.232 22.9774 15.7903 278.908 13.8981 7.19415 
+47.57 44.8691 55.1309 261.224 22.9814 15.7948 278.906 13.8991 7.19443 
+47.58 44.8599 55.1401 261.215 22.9854 15.7993 278.905 13.9002 7.19471 
+47.59 44.8507 55.1493 261.207 22.9895 15.8038 278.904 13.9013 7.19498 
+47.6 44.8415 55.1585 261.198 22.9935 15.8083 278.902 13.9023 7.19526 
+47.61 44.8323 55.1677 261.19 22.9975 15.8128 278.901 13.9034 7.19554 
+47.62 44.8232 55.1768 261.181 23.0015 15.8173 278.9 13.9045 7.19583 
+47.63 44.814 55.186 261.173 23.0055 15.8218 278.898 13.9055 7.19611 
+47.64 44.8048 55.1952 261.164 23.0095 15.8263 278.897 13.9066 7.19639 
+47.65 44.7956 55.2044 261.156 23.0135 15.8308 278.896 13.9077 7.19667 
+47.66 44.7865 55.2135 261.147 23.0175 15.8353 278.894 13.9087 7.19696 
+47.67 44.7773 55.2227 261.139 23.0215 15.8398 278.893 13.9098 7.19724 
+47.68 44.7681 55.2319 261.13 23.0255 15.8443 278.892 13.9109 7.19752 
+47.69 44.759 55.241 261.122 23.0295 15.8488 278.89 13.9119 7.19781 
+47.7 44.7498 55.2502 261.113 23.0335 15.8533 278.889 13.913 7.19809 
+47.71 44.7406 55.2594 261.105 23.0375 15.8578 278.888 13.9141 7.19838 
+47.72 44.7315 55.2685 261.096 23.0415 15.8624 278.886 13.9151 7.19867 
+47.73 44.7223 55.2777 261.088 23.0456 15.8669 278.885 13.9162 7.19895 
+47.74 44.7131 55.2869 261.079 23.0496 15.8714 278.883 13.9173 7.19924 
+47.75 44.704 55.296 261.071 23.0536 15.8759 278.882 13.9183 7.19953 
+47.76 44.6948 55.3052 261.062 23.0576 15.8804 278.881 13.9194 7.19982 
+47.77 44.6856 55.3144 261.053 23.0616 15.8849 278.879 13.9205 7.20011 
+47.78 44.6765 55.3235 261.045 23.0656 15.8895 278.878 13.9216 7.2004 
+47.79 44.6673 55.3327 261.036 23.0696 15.894 278.877 13.9226 7.20069 
+47.8 44.6581 55.3419 261.028 23.0736 15.8985 278.875 13.9237 7.20098 
+47.81 44.649 55.351 261.019 23.0776 15.903 278.874 13.9248 7.20127 
+47.82 44.6398 55.3602 261.011 23.0817 15.9076 278.873 13.9259 7.20157 
+47.83 44.6306 55.3694 261.002 23.0857 15.9121 278.871 13.9269 7.20186 
+47.84 44.6215 55.3785 260.994 23.0897 15.9166 278.87 13.928 7.20215 
+47.85 44.6123 55.3877 260.985 23.0937 15.9212 278.868 13.9291 7.20245 
+47.86 44.6032 55.3968 260.977 23.0977 15.9257 278.867 13.9301 7.20274 
+47.87 44.594 55.406 260.968 23.1017 15.9302 278.866 13.9312 7.20304 
+47.88 44.5848 55.4152 260.959 23.1057 15.9348 278.864 13.9323 7.20333 
+47.89 44.5757 55.4243 260.951 23.1098 15.9393 278.863 13.9334 7.20363 
+47.9 44.5665 55.4335 260.942 23.1138 15.9438 278.862 13.9345 7.20393 
+47.91 44.5574 55.4426 260.934 23.1178 15.9484 278.86 13.9355 7.20422 
+47.92 44.5482 55.4518 260.925 23.1218 15.9529 278.859 13.9366 7.20452 
+47.93 44.5391 55.4609 260.917 23.1258 15.9575 278.857 13.9377 7.20482 
+47.94 44.5299 55.4701 260.908 23.1298 15.962 278.856 13.9388 7.20512 
+47.95 44.5208 55.4792 260.9 23.1339 15.9666 278.855 13.9398 7.20542 
+47.96 44.5116 55.4884 260.891 23.1379 15.9711 278.853 13.9409 7.20572 
+47.97 44.5025 55.4975 260.882 23.1419 15.9757 278.852 13.942 7.20602 
+47.98 44.4933 55.5067 260.874 23.1459 15.9802 278.851 13.9431 7.20632 
+47.99 44.4842 55.5158 260.865 23.1499 15.9848 278.849 13.9442 7.20663 
+48 44.475 55.525 260.857 23.154 15.9893 278.848 13.9452 7.20693 
+48.01 44.4659 55.5341 260.848 23.158 15.9939 278.846 13.9463 7.20723 
+48.02 44.4567 55.5433 260.84 23.162 15.9984 278.845 13.9474 7.20754 
+48.03 44.4476 55.5524 260.831 23.166 16.003 278.844 13.9485 7.20784 
+48.04 44.4384 55.5616 260.822 23.1701 16.0075 278.842 13.9496 7.20815 
+48.05 44.4293 55.5707 260.814 23.1741 16.0121 278.841 13.9507 7.20845 
+48.06 44.4201 55.5799 260.805 23.1781 16.0167 278.84 13.9517 7.20876 
+48.07 44.411 55.589 260.797 23.1821 16.0212 278.838 13.9528 7.20906 
+48.08 44.4018 55.5982 260.788 23.1861 16.0258 278.837 13.9539 7.20937 
+48.09 44.3927 55.6073 260.779 23.1902 16.0304 278.835 13.955 7.20968 
+48.1 44.3835 55.6165 260.771 23.1942 16.0349 278.834 13.9561 7.20999 
+48.11 44.3744 55.6256 260.762 23.1982 16.0395 278.833 13.9572 7.2103 
+48.12 44.3653 55.6347 260.754 23.2022 16.0441 278.831 13.9583 7.21061 
+48.13 44.3561 55.6439 260.745 23.2063 16.0486 278.83 13.9593 7.21092 
+48.14 44.347 55.653 260.736 23.2103 16.0532 278.828 13.9604 7.21123 
+48.15 44.3378 55.6622 260.728 23.2143 16.0578 278.827 13.9615 7.21154 
+48.16 44.3287 55.6713 260.719 23.2184 16.0624 278.826 13.9626 7.21185 
+48.17 44.3196 55.6804 260.711 23.2224 16.0669 278.824 13.9637 7.21217 
+48.18 44.3104 55.6896 260.702 23.2264 16.0715 278.823 13.9648 7.21248 
+48.19 44.3013 55.6987 260.693 23.2304 16.0761 278.821 13.9659 7.21279 
+48.2 44.2922 55.7078 260.685 23.2345 16.0807 278.82 13.967 7.21311 
+48.21 44.283 55.717 260.676 23.2385 16.0853 278.819 13.968 7.21342 
+48.22 44.2739 55.7261 260.668 23.2425 16.0898 278.817 13.9691 7.21374 
+48.23 44.2648 55.7352 260.659 23.2466 16.0944 278.816 13.9702 7.21405 
+48.24 44.2556 55.7444 260.65 23.2506 16.099 278.814 13.9713 7.21437 
+48.25 44.2465 55.7535 260.642 23.2546 16.1036 278.813 13.9724 7.21469 
+48.26 44.2374 55.7626 260.633 23.2586 16.1082 278.811 13.9735 7.21501 
+48.27 44.2282 55.7718 260.625 23.2627 16.1128 278.81 13.9746 7.21533 
+48.28 44.2191 55.7809 260.616 23.2667 16.1174 278.809 13.9757 7.21564 
+48.29 44.21 55.79 260.607 23.2707 16.122 278.807 13.9768 7.21596 
+48.3 44.2008 55.7992 260.599 23.2748 16.1266 278.806 13.9779 7.21628 
+48.31 44.1917 55.8083 260.59 23.2788 16.1312 278.804 13.979 7.21661 
+48.32 44.1826 55.8174 260.581 23.2828 16.1358 278.803 13.9801 7.21693 
+48.33 44.1735 55.8265 260.573 23.2869 16.1404 278.802 13.9811 7.21725 
+48.34 44.1643 55.8357 260.564 23.2909 16.145 278.8 13.9822 7.21757 
+48.35 44.1552 55.8448 260.555 23.2949 16.1496 278.799 13.9833 7.2179 
+48.36 44.1461 55.8539 260.547 23.299 16.1542 278.797 13.9844 7.21822 
+48.37 44.137 55.863 260.538 23.303 16.1588 278.796 13.9855 7.21854 
+48.38 44.1278 55.8722 260.53 23.307 16.1634 278.795 13.9866 7.21887 
+48.39 44.1187 55.8813 260.521 23.3111 16.168 278.793 13.9877 7.21919 
+48.4 44.1096 55.8904 260.512 23.3151 16.1726 278.792 13.9888 7.21952 
+48.41 44.1005 55.8995 260.504 23.3192 16.1772 278.79 13.9899 7.21985 
+48.42 44.0913 55.9087 260.495 23.3232 16.1818 278.789 13.991 7.22017 
+48.43 44.0822 55.9178 260.486 23.3272 16.1865 278.787 13.9921 7.2205 
+48.44 44.0731 55.9269 260.478 23.3313 16.1911 278.786 13.9932 7.22083 
+48.45 44.064 55.936 260.469 23.3353 16.1957 278.785 13.9943 7.22116 
+48.46 44.0549 55.9451 260.46 23.3393 16.2003 278.783 13.9954 7.22149 
+48.47 44.0458 55.9542 260.452 23.3434 16.2049 278.782 13.9965 7.22182 
+48.48 44.0366 55.9634 260.443 23.3474 16.2096 278.78 13.9976 7.22215 
+48.49 44.0275 55.9725 260.434 23.3515 16.2142 278.779 13.9987 7.22248 
+48.5 44.0184 55.9816 260.426 23.3555 16.2188 278.777 13.9998 7.22281 
+48.51 44.0093 55.9907 260.417 23.3595 16.2234 278.776 14.0009 7.22315 
+48.52 44.0002 55.9998 260.408 23.3636 16.2281 278.775 14.002 7.22348 
+48.53 43.9911 56.0089 260.4 23.3676 16.2327 278.773 14.0031 7.22381 
+48.54 43.982 56.018 260.391 23.3717 16.2373 278.772 14.0042 7.22415 
+48.55 43.9728 56.0272 260.382 23.3757 16.242 278.77 14.0053 7.22448 
+48.56 43.9637 56.0363 260.374 23.3798 16.2466 278.769 14.0064 7.22482 
+48.57 43.9546 56.0454 260.365 23.3838 16.2512 278.767 14.0075 7.22515 
+48.58 43.9455 56.0545 260.356 23.3878 16.2559 278.766 14.0086 7.22549 
+48.59 43.9364 56.0636 260.348 23.3919 16.2605 278.764 14.0097 7.22583 
+48.6 43.9273 56.0727 260.339 23.3959 16.2651 278.763 14.0109 7.22617 
+48.61 43.9182 56.0818 260.33 23.4 16.2698 278.762 14.012 7.22651 
+48.62 43.9091 56.0909 260.322 23.404 16.2744 278.76 14.0131 7.22684 
+48.63 43.9 56.1 260.313 23.4081 16.2791 278.759 14.0142 7.22718 
+48.64 43.8909 56.1091 260.304 23.4121 16.2837 278.757 14.0153 7.22752 
+48.65 43.8818 56.1182 260.295 23.4162 16.2884 278.756 14.0164 7.22787 
+48.66 43.8727 56.1273 260.287 23.4202 16.293 278.754 14.0175 7.22821 
+48.67 43.8636 56.1364 260.278 23.4243 16.2976 278.753 14.0186 7.22855 
+48.68 43.8545 56.1455 260.269 23.4283 16.3023 278.751 14.0197 7.22889 
+48.69 43.8454 56.1546 260.261 23.4323 16.307 278.75 14.0208 7.22923 
+48.7 43.8363 56.1637 260.252 23.4364 16.3116 278.748 14.0219 7.22958 
+48.71 43.8272 56.1728 260.243 23.4404 16.3163 278.747 14.023 7.22992 
+48.72 43.8181 56.1819 260.235 23.4445 16.3209 278.746 14.0241 7.23027 
+48.73 43.809 56.191 260.226 23.4485 16.3256 278.744 14.0253 7.23061 
+48.74 43.7999 56.2001 260.217 23.4526 16.3302 278.743 14.0264 7.23096 
+48.75 43.7908 56.2092 260.208 23.4566 16.3349 278.741 14.0275 7.23131 
+48.76 43.7817 56.2183 260.2 23.4607 16.3396 278.74 14.0286 7.23165 
+48.77 43.7726 56.2274 260.191 23.4647 16.3442 278.738 14.0297 7.232 
+48.78 43.7635 56.2365 260.182 23.4688 16.3489 278.737 14.0308 7.23235 
+48.79 43.7544 56.2456 260.174 23.4728 16.3536 278.735 14.0319 7.2327 
+48.8 43.7453 56.2547 260.165 23.4769 16.3582 278.734 14.033 7.23305 
+48.81 43.7362 56.2638 260.156 23.4809 16.3629 278.732 14.0342 7.2334 
+48.82 43.7271 56.2729 260.147 23.485 16.3676 278.731 14.0353 7.23375 
+48.83 43.718 56.282 260.139 23.4891 16.3722 278.73 14.0364 7.2341 
+48.84 43.7089 56.2911 260.13 23.4931 16.3769 278.728 14.0375 7.23445 
+48.85 43.6998 56.3002 260.121 23.4972 16.3816 278.727 14.0386 7.23481 
+48.86 43.6908 56.3092 260.113 23.5012 16.3863 278.725 14.0397 7.23516 
+48.87 43.6817 56.3183 260.104 23.5053 16.3909 278.724 14.0409 7.23551 
+48.88 43.6726 56.3274 260.095 23.5093 16.3956 278.722 14.042 7.23587 
+48.89 43.6635 56.3365 260.086 23.5134 16.4003 278.721 14.0431 7.23622 
+48.9 43.6544 56.3456 260.078 23.5174 16.405 278.719 14.0442 7.23658 
+48.91 43.6453 56.3547 260.069 23.5215 16.4097 278.718 14.0453 7.23694 
+48.92 43.6362 56.3638 260.06 23.5256 16.4143 278.716 14.0464 7.23729 
+48.93 43.6272 56.3728 260.051 23.5296 16.419 278.715 14.0476 7.23765 
+48.94 43.6181 56.3819 260.043 23.5337 16.4237 278.713 14.0487 7.23801 
+48.95 43.609 56.391 260.034 23.5377 16.4284 278.712 14.0498 7.23837 
+48.96 43.5999 56.4001 260.025 23.5418 16.4331 278.71 14.0509 7.23873 
+48.97 43.5908 56.4092 260.016 23.5458 16.4378 278.709 14.052 7.23909 
+48.98 43.5817 56.4183 260.008 23.5499 16.4425 278.707 14.0532 7.23945 
+48.99 43.5727 56.4273 259.999 23.554 16.4472 278.706 14.0543 7.23981 
+49 43.5636 56.4364 259.99 23.558 16.4519 278.704 14.0554 7.24017 
+49.01 43.5545 56.4455 259.981 23.5621 16.4566 278.703 14.0565 7.24053 
+49.02 43.5454 56.4546 259.973 23.5661 16.4613 278.701 14.0577 7.24089 
+49.03 43.5364 56.4636 259.964 23.5702 16.466 278.7 14.0588 7.24126 
+49.04 43.5273 56.4727 259.955 23.5743 16.4707 278.698 14.0599 7.24162 
+49.05 43.5182 56.4818 259.946 23.5783 16.4754 278.697 14.061 7.24199 
+49.06 43.5091 56.4909 259.938 23.5824 16.4801 278.695 14.0622 7.24235 
+49.07 43.5001 56.4999 259.929 23.5864 16.4848 278.694 14.0633 7.24272 
+49.08 43.491 56.509 259.92 23.5905 16.4895 278.693 14.0644 7.24308 
+49.09 43.4819 56.5181 259.911 23.5946 16.4942 278.691 14.0655 7.24345 
+49.1 43.4728 56.5272 259.902 23.5986 16.4989 278.69 14.0667 7.24382 
+49.11 43.4638 56.5362 259.894 23.6027 16.5036 278.688 14.0678 7.24419 
+49.12 43.4547 56.5453 259.885 23.6068 16.5083 278.687 14.0689 7.24455 
+49.13 43.4456 56.5544 259.876 23.6108 16.5131 278.685 14.07 7.24492 
+49.14 43.4366 56.5634 259.867 23.6149 16.5178 278.684 14.0712 7.24529 
+49.15 43.4275 56.5725 259.859 23.619 16.5225 278.682 14.0723 7.24566 
+49.16 43.4184 56.5816 259.85 23.623 16.5272 278.681 14.0734 7.24604 
+49.17 43.4094 56.5906 259.841 23.6271 16.5319 278.679 14.0745 7.24641 
+49.18 43.4003 56.5997 259.832 23.6312 16.5367 278.678 14.0757 7.24678 
+49.19 43.3912 56.6088 259.823 23.6352 16.5414 278.676 14.0768 7.24715 
+49.2 43.3822 56.6178 259.815 23.6393 16.5461 278.675 14.0779 7.24753 
+49.21 43.3731 56.6269 259.806 23.6434 16.5508 278.673 14.0791 7.2479 
+49.22 43.364 56.636 259.797 23.6474 16.5556 278.672 14.0802 7.24827 
+49.23 43.355 56.645 259.788 23.6515 16.5603 278.67 14.0813 7.24865 
+49.24 43.3459 56.6541 259.779 23.6556 16.565 278.669 14.0825 7.24903 
+49.25 43.3369 56.6631 259.771 23.6596 16.5698 278.667 14.0836 7.2494 
+49.26 43.3278 56.6722 259.762 23.6637 16.5745 278.665 14.0847 7.24978 
+49.27 43.3187 56.6813 259.753 23.6678 16.5792 278.664 14.0859 7.25016 
+49.28 43.3097 56.6903 259.744 23.6718 16.584 278.662 14.087 7.25054 
+49.29 43.3006 56.6994 259.735 23.6759 16.5887 278.661 14.0881 7.25091 
+49.3 43.2916 56.7084 259.727 23.68 16.5934 278.659 14.0893 7.25129 
+49.31 43.2825 56.7175 259.718 23.6841 16.5982 278.658 14.0904 7.25167 
+49.32 43.2735 56.7265 259.709 23.6881 16.6029 278.656 14.0915 7.25206 
+49.33 43.2644 56.7356 259.7 23.6922 16.6077 278.655 14.0927 7.25244 
+49.34 43.2553 56.7447 259.691 23.6963 16.6124 278.653 14.0938 7.25282 
+49.35 43.2463 56.7537 259.682 23.7004 16.6172 278.652 14.0949 7.2532 
+49.36 43.2372 56.7628 259.674 23.7044 16.6219 278.65 14.0961 7.25358 
+49.37 43.2282 56.7718 259.665 23.7085 16.6267 278.649 14.0972 7.25397 
+49.38 43.2191 56.7809 259.656 23.7126 16.6314 278.647 14.0984 7.25435 
+49.39 43.2101 56.7899 259.647 23.7166 16.6362 278.646 14.0995 7.25474 
+49.4 43.201 56.799 259.638 23.7207 16.6409 278.644 14.1006 7.25512 
+49.41 43.192 56.808 259.63 23.7248 16.6457 278.643 14.1018 7.25551 
+49.42 43.1829 56.8171 259.621 23.7289 16.6504 278.641 14.1029 7.2559 
+49.43 43.1739 56.8261 259.612 23.7329 16.6552 278.64 14.1041 7.25628 
+49.44 43.1649 56.8351 259.603 23.737 16.6599 278.638 14.1052 7.25667 
+49.45 43.1558 56.8442 259.594 23.7411 16.6647 278.637 14.1063 7.25706 
+49.46 43.1468 56.8532 259.585 23.7452 16.6695 278.635 14.1075 7.25745 
+49.47 43.1377 56.8623 259.577 23.7493 16.6742 278.634 14.1086 7.25784 
+49.48 43.1287 56.8713 259.568 23.7533 16.679 278.632 14.1098 7.25823 
+49.49 43.1196 56.8804 259.559 23.7574 16.6838 278.63 14.1109 7.25862 
+49.5 43.1106 56.8894 259.55 23.7615 16.6885 278.629 14.112 7.25901 
+49.51 43.1016 56.8984 259.541 23.7656 16.6933 278.627 14.1132 7.2594 
+49.52 43.0925 56.9075 259.532 23.7697 16.6981 278.626 14.1143 7.2598 
+49.53 43.0835 56.9165 259.523 23.7737 16.7028 278.624 14.1155 7.26019 
+49.54 43.0744 56.9256 259.515 23.7778 16.7076 278.623 14.1166 7.26058 
+49.55 43.0654 56.9346 259.506 23.7819 16.7124 278.621 14.1178 7.26098 
+49.56 43.0564 56.9436 259.497 23.786 16.7172 278.62 14.1189 7.26137 
+49.57 43.0473 56.9527 259.488 23.7901 16.7219 278.618 14.1201 7.26177 
+49.58 43.0383 56.9617 259.479 23.7941 16.7267 278.617 14.1212 7.26217 
+49.59 43.0293 56.9707 259.47 23.7982 16.7315 278.615 14.1224 7.26256 
+49.6 43.0202 56.9798 259.461 23.8023 16.7363 278.614 14.1235 7.26296 
+49.61 43.0112 56.9888 259.453 23.8064 16.7411 278.612 14.1247 7.26336 
+49.62 43.0022 56.9978 259.444 23.8105 16.7459 278.61 14.1258 7.26376 
+49.63 42.9931 57.0069 259.435 23.8146 16.7506 278.609 14.1269 7.26416 
+49.64 42.9841 57.0159 259.426 23.8186 16.7554 278.607 14.1281 7.26456 
+49.65 42.9751 57.0249 259.417 23.8227 16.7602 278.606 14.1292 7.26496 
+49.66 42.966 57.034 259.408 23.8268 16.765 278.604 14.1304 7.26536 
+49.67 42.957 57.043 259.399 23.8309 16.7698 278.603 14.1315 7.26576 
+49.68 42.948 57.052 259.39 23.835 16.7746 278.601 14.1327 7.26616 
+49.69 42.9389 57.0611 259.382 23.8391 16.7794 278.6 14.1339 7.26657 
+49.7 42.9299 57.0701 259.373 23.8431 16.7842 278.598 14.135 7.26697 
+49.71 42.9209 57.0791 259.364 23.8472 16.789 278.596 14.1362 7.26737 
+49.72 42.9119 57.0881 259.355 23.8513 16.7938 278.595 14.1373 7.26778 
+49.73 42.9028 57.0972 259.346 23.8554 16.7986 278.593 14.1385 7.26818 
+49.74 42.8938 57.1062 259.337 23.8595 16.8034 278.592 14.1396 7.26859 
+49.75 42.8848 57.1152 259.328 23.8636 16.8082 278.59 14.1408 7.269 
+49.76 42.8758 57.1242 259.319 23.8677 16.813 278.589 14.1419 7.2694 
+49.77 42.8668 57.1332 259.31 23.8718 16.8178 278.587 14.1431 7.26981 
+49.78 42.8577 57.1423 259.302 23.8759 16.8226 278.586 14.1442 7.27022 
+49.79 42.8487 57.1513 259.293 23.8799 16.8274 278.584 14.1454 7.27063 
+49.8 42.8397 57.1603 259.284 23.884 16.8322 278.582 14.1465 7.27104 
+49.81 42.8307 57.1693 259.275 23.8881 16.837 278.581 14.1477 7.27145 
+49.82 42.8217 57.1783 259.266 23.8922 16.8419 278.579 14.1489 7.27186 
+49.83 42.8127 57.1873 259.257 23.8963 16.8467 278.578 14.15 7.27227 
+49.84 42.8036 57.1964 259.248 23.9004 16.8515 278.576 14.1512 7.27268 
+49.85 42.7946 57.2054 259.239 23.9045 16.8563 278.575 14.1523 7.2731 
+49.86 42.7856 57.2144 259.23 23.9086 16.8611 278.573 14.1535 7.27351 
+49.87 42.7766 57.2234 259.221 23.9127 16.8659 278.571 14.1546 7.27392 
+49.88 42.7676 57.2324 259.212 23.9168 16.8708 278.57 14.1558 7.27434 
+49.89 42.7586 57.2414 259.204 23.9209 16.8756 278.568 14.157 7.27475 
+49.9 42.7496 57.2504 259.195 23.9249 16.8804 278.567 14.1581 7.27517 
+49.91 42.7405 57.2595 259.186 23.929 16.8852 278.565 14.1593 7.27559 
+49.92 42.7315 57.2685 259.177 23.9331 16.8901 278.564 14.1604 7.276 
+49.93 42.7225 57.2775 259.168 23.9372 16.8949 278.562 14.1616 7.27642 
+49.94 42.7135 57.2865 259.159 23.9413 16.8997 278.56 14.1628 7.27684 
+49.95 42.7045 57.2955 259.15 23.9454 16.9046 278.559 14.1639 7.27726 
+49.96 42.6955 57.3045 259.141 23.9495 16.9094 278.557 14.1651 7.27768 
+49.97 42.6865 57.3135 259.132 23.9536 16.9142 278.556 14.1663 7.2781 
+49.98 42.6775 57.3225 259.123 23.9577 16.9191 278.554 14.1674 7.27852 
+49.99 42.6685 57.3315 259.114 23.9618 16.9239 278.552 14.1686 7.27894 
+50 42.6595 57.3405 259.105 23.9659 16.9288 278.551 14.1698 7.27936 
+50.01 42.6505 57.3495 259.096 23.97 16.9336 278.549 14.1709 7.27978 
+50.02 42.6415 57.3585 259.087 23.9741 16.9384 278.548 14.1721 7.28021 
+50.03 42.6325 57.3675 259.079 23.9782 16.9433 278.546 14.1733 7.28063 
+50.04 42.6235 57.3765 259.07 23.9823 16.9481 278.545 14.1744 7.28105 
+50.05 42.6145 57.3855 259.061 23.9864 16.953 278.543 14.1756 7.28148 
+50.06 42.6055 57.3945 259.052 23.9905 16.9578 278.541 14.1768 7.28191 
+50.07 42.5965 57.4035 259.043 23.9946 16.9627 278.54 14.1779 7.28233 
+50.08 42.5875 57.4125 259.034 23.9987 16.9675 278.538 14.1791 7.28276 
+50.09 42.5785 57.4215 259.025 24.0028 16.9724 278.537 14.1803 7.28319 
+50.1 42.5695 57.4305 259.016 24.0069 16.9772 278.535 14.1814 7.28361 
+50.11 42.5605 57.4395 259.007 24.011 16.9821 278.533 14.1826 7.28404 
+50.12 42.5515 57.4485 258.998 24.0151 16.9869 278.532 14.1838 7.28447 
+50.13 42.5425 57.4575 258.989 24.0192 16.9918 278.53 14.1849 7.2849 
+50.14 42.5335 57.4665 258.98 24.0233 16.9967 278.529 14.1861 7.28533 
+50.15 42.5245 57.4755 258.971 24.0274 17.0015 278.527 14.1873 7.28576 
+50.16 42.5156 57.4844 258.962 24.0315 17.0064 278.525 14.1884 7.28619 
+50.17 42.5066 57.4934 258.953 24.0356 17.0112 278.524 14.1896 7.28663 
+50.18 42.4976 57.5024 258.944 24.0397 17.0161 278.522 14.1908 7.28706 
+50.19 42.4886 57.5114 258.935 24.0438 17.021 278.521 14.192 7.28749 
+50.2 42.4796 57.5204 258.926 24.0479 17.0258 278.519 14.1931 7.28793 
+50.21 42.4706 57.5294 258.917 24.052 17.0307 278.517 14.1943 7.28836 
+50.22 42.4616 57.5384 258.908 24.0561 17.0356 278.516 14.1955 7.2888 
+50.23 42.4526 57.5474 258.899 24.0602 17.0405 278.514 14.1967 7.28923 
+50.24 42.4437 57.5563 258.89 24.0644 17.0453 278.512 14.1978 7.28967 
+50.25 42.4347 57.5653 258.881 24.0685 17.0502 278.511 14.199 7.29011 
+50.26 42.4257 57.5743 258.872 24.0726 17.0551 278.509 14.2002 7.29055 
+50.27 42.4167 57.5833 258.863 24.0767 17.06 278.508 14.2014 7.29098 
+50.28 42.4077 57.5923 258.854 24.0808 17.0648 278.506 14.2025 7.29142 
+50.29 42.3987 57.6013 258.845 24.0849 17.0697 278.504 14.2037 7.29186 
+50.3 42.3898 57.6102 258.836 24.089 17.0746 278.503 14.2049 7.2923 
+50.31 42.3808 57.6192 258.827 24.0931 17.0795 278.501 14.2061 7.29274 
+50.32 42.3718 57.6282 258.818 24.0972 17.0844 278.5 14.2073 7.29319 
+50.33 42.3628 57.6372 258.809 24.1013 17.0893 278.498 14.2084 7.29363 
+50.34 42.3539 57.6461 258.8 24.1054 17.0941 278.496 14.2096 7.29407 
+50.35 42.3449 57.6551 258.791 24.1095 17.099 278.495 14.2108 7.29451 
+50.36 42.3359 57.6641 258.782 24.1137 17.1039 278.493 14.212 7.29496 
+50.37 42.3269 57.6731 258.773 24.1178 17.1088 278.491 14.2132 7.2954 
+50.38 42.318 57.682 258.764 24.1219 17.1137 278.49 14.2143 7.29585 
+50.39 42.309 57.691 258.755 24.126 17.1186 278.488 14.2155 7.29629 
+50.4 42.3 57.7 258.746 24.1301 17.1235 278.487 14.2167 7.29674 
+50.41 42.291 57.709 258.737 24.1342 17.1284 278.485 14.2179 7.29719 
+50.42 42.2821 57.7179 258.728 24.1383 17.1333 278.483 14.2191 7.29763 
+50.43 42.2731 57.7269 258.719 24.1424 17.1382 278.482 14.2202 7.29808 
+50.44 42.2641 57.7359 258.71 24.1466 17.1431 278.48 14.2214 7.29853 
+50.45 42.2552 57.7448 258.701 24.1507 17.148 278.478 14.2226 7.29898 
+50.46 42.2462 57.7538 258.692 24.1548 17.1529 278.477 14.2238 7.29943 
+50.47 42.2372 57.7628 258.683 24.1589 17.1578 278.475 14.225 7.29988 
+50.48 42.2283 57.7717 258.674 24.163 17.1627 278.473 14.2262 7.30033 
+50.49 42.2193 57.7807 258.665 24.1671 17.1676 278.472 14.2274 7.30079 
+50.5 42.2103 57.7897 258.656 24.1712 17.1726 278.47 14.2285 7.30124 
+50.51 42.2014 57.7986 258.647 24.1754 17.1775 278.469 14.2297 7.30169 
+50.52 42.1924 57.8076 258.638 24.1795 17.1824 278.467 14.2309 7.30215 
+50.53 42.1835 57.8165 258.629 24.1836 17.1873 278.465 14.2321 7.3026 
+50.54 42.1745 57.8255 258.62 24.1877 17.1922 278.464 14.2333 7.30306 
+50.55 42.1655 57.8345 258.611 24.1918 17.1971 278.462 14.2345 7.30351 
+50.56 42.1566 57.8434 258.602 24.1959 17.202 278.46 14.2357 7.30397 
+50.57 42.1476 57.8524 258.593 24.2001 17.207 278.459 14.2369 7.30442 
+50.58 42.1387 57.8613 258.584 24.2042 17.2119 278.457 14.2381 7.30488 
+50.59 42.1297 57.8703 258.575 24.2083 17.2168 278.455 14.2392 7.30534 
+50.6 42.1208 57.8792 258.566 24.2124 17.2217 278.454 14.2404 7.3058 
+50.61 42.1118 57.8882 258.557 24.2165 17.2267 278.452 14.2416 7.30626 
+50.62 42.1029 57.8971 258.548 24.2207 17.2316 278.45 14.2428 7.30672 
+50.63 42.0939 57.9061 258.539 24.2248 17.2365 278.449 14.244 7.30718 
+50.64 42.0849 57.9151 258.53 24.2289 17.2415 278.447 14.2452 7.30764 
+50.65 42.076 57.924 258.521 24.233 17.2464 278.446 14.2464 7.3081 
+50.66 42.067 57.933 258.512 24.2371 17.2513 278.444 14.2476 7.30857 
+50.67 42.0581 57.9419 258.502 24.2413 17.2563 278.442 14.2488 7.30903 
+50.68 42.0491 57.9509 258.493 24.2454 17.2612 278.441 14.25 7.30949 
+50.69 42.0402 57.9598 258.484 24.2495 17.2661 278.439 14.2512 7.30996 
+50.7 42.0313 57.9687 258.475 24.2536 17.2711 278.437 14.2524 7.31042 
+50.71 42.0223 57.9777 258.466 24.2577 17.276 278.436 14.2536 7.31089 
+50.72 42.0134 57.9866 258.457 24.2619 17.281 278.434 14.2548 7.31135 
+50.73 42.0044 57.9956 258.448 24.266 17.2859 278.432 14.256 7.31182 
+50.74 41.9955 58.0045 258.439 24.2701 17.2908 278.431 14.2572 7.31229 
+50.75 41.9865 58.0135 258.43 24.2742 17.2958 278.429 14.2584 7.31276 
+50.76 41.9776 58.0224 258.421 24.2784 17.3007 278.427 14.2595 7.31323 
+50.77 41.9686 58.0314 258.412 24.2825 17.3057 278.426 14.2607 7.31369 
+50.78 41.9597 58.0403 258.403 24.2866 17.3106 278.424 14.2619 7.31416 
+50.79 41.9508 58.0492 258.394 24.2907 17.3156 278.422 14.2631 7.31464 
+50.8 41.9418 58.0582 258.385 24.2949 17.3206 278.421 14.2643 7.31511 
+50.81 41.9329 58.0671 258.375 24.299 17.3255 278.419 14.2655 7.31558 
+50.82 41.9239 58.0761 258.366 24.3031 17.3305 278.417 14.2667 7.31605 
+50.83 41.915 58.085 258.357 24.3073 17.3354 278.416 14.2679 7.31652 
+50.84 41.9061 58.0939 258.348 24.3114 17.3404 278.414 14.2691 7.317 
+50.85 41.8971 58.1029 258.339 24.3155 17.3453 278.412 14.2704 7.31747 
+50.86 41.8882 58.1118 258.33 24.3196 17.3503 278.41 14.2716 7.31795 
+50.87 41.8793 58.1207 258.321 24.3238 17.3553 278.409 14.2728 7.31842 
+50.88 41.8703 58.1297 258.312 24.3279 17.3602 278.407 14.274 7.3189 
+50.89 41.8614 58.1386 258.303 24.332 17.3652 278.405 14.2752 7.31938 
+50.9 41.8525 58.1475 258.294 24.3362 17.3702 278.404 14.2764 7.31985 
+50.91 41.8435 58.1565 258.285 24.3403 17.3751 278.402 14.2776 7.32033 
+50.92 41.8346 58.1654 258.275 24.3444 17.3801 278.4 14.2788 7.32081 
+50.93 41.8257 58.1743 258.266 24.3485 17.3851 278.399 14.28 7.32129 
+50.94 41.8168 58.1832 258.257 24.3527 17.3901 278.397 14.2812 7.32177 
+50.95 41.8078 58.1922 258.248 24.3568 17.395 278.395 14.2824 7.32225 
+50.96 41.7989 58.2011 258.239 24.3609 17.4 278.394 14.2836 7.32273 
+50.97 41.79 58.21 258.23 24.3651 17.405 278.392 14.2848 7.32321 
+50.98 41.7811 58.2189 258.221 24.3692 17.41 278.39 14.286 7.3237 
+50.99 41.7721 58.2279 258.212 24.3733 17.4149 278.389 14.2872 7.32418 
+51 41.7632 58.2368 258.203 24.3775 17.4199 278.387 14.2884 7.32466 
+51.01 41.7543 58.2457 258.193 24.3816 17.4249 278.385 14.2896 7.32515 
+51.02 41.7454 58.2546 258.184 24.3857 17.4299 278.384 14.2909 7.32563 
+51.03 41.7365 58.2635 258.175 24.3899 17.4349 278.382 14.2921 7.32612 
+51.04 41.7275 58.2725 258.166 24.394 17.4399 278.38 14.2933 7.3266 
+51.05 41.7186 58.2814 258.157 24.3981 17.4449 278.378 14.2945 7.32709 
+51.06 41.7097 58.2903 258.148 24.4023 17.4499 278.377 14.2957 7.32758 
+51.07 41.7008 58.2992 258.139 24.4064 17.4548 278.375 14.2969 7.32807 
+51.08 41.6919 58.3081 258.13 24.4106 17.4598 278.373 14.2981 7.32856 
+51.09 41.683 58.317 258.12 24.4147 17.4648 278.372 14.2993 7.32905 
+51.1 41.674 58.326 258.111 24.4188 17.4698 278.37 14.3005 7.32954 
+51.11 41.6651 58.3349 258.102 24.423 17.4748 278.368 14.3018 7.33003 
+51.12 41.6562 58.3438 258.093 24.4271 17.4798 278.367 14.303 7.33052 
+51.13 41.6473 58.3527 258.084 24.4312 17.4848 278.365 14.3042 7.33101 
+51.14 41.6384 58.3616 258.075 24.4354 17.4898 278.363 14.3054 7.3315 
+51.15 41.6295 58.3705 258.066 24.4395 17.4948 278.361 14.3066 7.332 
+51.16 41.6206 58.3794 258.057 24.4437 17.4998 278.36 14.3078 7.33249 
+51.17 41.6117 58.3883 258.047 24.4478 17.5049 278.358 14.3091 7.33298 
+51.18 41.6028 58.3972 258.038 24.4519 17.5099 278.356 14.3103 7.33348 
+51.19 41.5938 58.4062 258.029 24.4561 17.5149 278.355 14.3115 7.33397 
+51.2 41.5849 58.4151 258.02 24.4602 17.5199 278.353 14.3127 7.33447 
+51.21 41.576 58.424 258.011 24.4644 17.5249 278.351 14.3139 7.33497 
+51.22 41.5671 58.4329 258.002 24.4685 17.5299 278.349 14.3151 7.33547 
+51.23 41.5582 58.4418 257.992 24.4726 17.5349 278.348 14.3164 7.33596 
+51.24 41.5493 58.4507 257.983 24.4768 17.5399 278.346 14.3176 7.33646 
+51.25 41.5404 58.4596 257.974 24.4809 17.545 278.344 14.3188 7.33696 
+51.26 41.5315 58.4685 257.965 24.4851 17.55 278.343 14.32 7.33746 
+51.27 41.5226 58.4774 257.956 24.4892 17.555 278.341 14.3212 7.33796 
+51.28 41.5137 58.4863 257.947 24.4933 17.56 278.339 14.3225 7.33846 
+51.29 41.5048 58.4952 257.937 24.4975 17.565 278.337 14.3237 7.33897 
+51.3 41.4959 58.5041 257.928 24.5016 17.5701 278.336 14.3249 7.33947 
+51.31 41.487 58.513 257.919 24.5058 17.5751 278.334 14.3261 7.33997 
+51.32 41.4781 58.5219 257.91 24.5099 17.5801 278.332 14.3274 7.34048 
+51.33 41.4692 58.5308 257.901 24.5141 17.5852 278.33 14.3286 7.34098 
+51.34 41.4603 58.5397 257.892 24.5182 17.5902 278.329 14.3298 7.34149 
+51.35 41.4515 58.5485 257.882 24.5224 17.5952 278.327 14.331 7.34199 
+51.36 41.4426 58.5574 257.873 24.5265 17.6003 278.325 14.3322 7.3425 
+51.37 41.4337 58.5663 257.864 24.5307 17.6053 278.324 14.3335 7.34301 
+51.38 41.4248 58.5752 257.855 24.5348 17.6103 278.322 14.3347 7.34351 
+51.39 41.4159 58.5841 257.846 24.5389 17.6154 278.32 14.3359 7.34402 
+51.4 41.407 58.593 257.837 24.5431 17.6204 278.318 14.3372 7.34453 
+51.41 41.3981 58.6019 257.827 24.5472 17.6254 278.317 14.3384 7.34504 
+51.42 41.3892 58.6108 257.818 24.5514 17.6305 278.315 14.3396 7.34555 
+51.43 41.3803 58.6197 257.809 24.5555 17.6355 278.313 14.3408 7.34606 
+51.44 41.3715 58.6285 257.8 24.5597 17.6406 278.311 14.3421 7.34657 
+51.45 41.3626 58.6374 257.791 24.5638 17.6456 278.31 14.3433 7.34709 
+51.46 41.3537 58.6463 257.781 24.568 17.6507 278.308 14.3445 7.3476 
+51.47 41.3448 58.6552 257.772 24.5721 17.6557 278.306 14.3458 7.34811 
+51.48 41.3359 58.6641 257.763 24.5763 17.6608 278.304 14.347 7.34863 
+51.49 41.327 58.673 257.754 24.5804 17.6658 278.303 14.3482 7.34914 
+51.5 41.3182 58.6818 257.745 24.5846 17.6709 278.301 14.3494 7.34966 
+51.51 41.3093 58.6907 257.735 24.5887 17.6759 278.299 14.3507 7.35017 
+51.52 41.3004 58.6996 257.726 24.5929 17.681 278.297 14.3519 7.35069 
+51.53 41.2915 58.7085 257.717 24.597 17.6861 278.296 14.3531 7.35121 
+51.54 41.2826 58.7174 257.708 24.6012 17.6911 278.294 14.3544 7.35172 
+51.55 41.2738 58.7262 257.698 24.6053 17.6962 278.292 14.3556 7.35224 
+51.56 41.2649 58.7351 257.689 24.6095 17.7012 278.29 14.3568 7.35276 
+51.57 41.256 58.744 257.68 24.6137 17.7063 278.289 14.3581 7.35328 
+51.58 41.2471 58.7529 257.671 24.6178 17.7114 278.287 14.3593 7.3538 
+51.59 41.2383 58.7617 257.662 24.622 17.7164 278.285 14.3605 7.35432 
+51.6 41.2294 58.7706 257.652 24.6261 17.7215 278.283 14.3618 7.35484 
+51.61 41.2205 58.7795 257.643 24.6303 17.7266 278.282 14.363 7.35537 
+51.62 41.2117 58.7883 257.634 24.6344 17.7316 278.28 14.3643 7.35589 
+51.63 41.2028 58.7972 257.625 24.6386 17.7367 278.278 14.3655 7.35641 
+51.64 41.1939 58.8061 257.615 24.6427 17.7418 278.276 14.3667 7.35694 
+51.65 41.1851 58.8149 257.606 24.6469 17.7469 278.275 14.368 7.35746 
+51.66 41.1762 58.8238 257.597 24.651 17.7519 278.273 14.3692 7.35799 
+51.67 41.1673 58.8327 257.588 24.6552 17.757 278.271 14.3704 7.35851 
+51.68 41.1585 58.8415 257.579 24.6594 17.7621 278.269 14.3717 7.35904 
+51.69 41.1496 58.8504 257.569 24.6635 17.7672 278.268 14.3729 7.35957 
+51.7 41.1407 58.8593 257.56 24.6677 17.7723 278.266 14.3742 7.3601 
+51.71 41.1319 58.8681 257.551 24.6718 17.7773 278.264 14.3754 7.36062 
+51.72 41.123 58.877 257.542 24.676 17.7824 278.262 14.3767 7.36115 
+51.73 41.1141 58.8859 257.532 24.6801 17.7875 278.26 14.3779 7.36168 
+51.74 41.1053 58.8947 257.523 24.6843 17.7926 278.259 14.3791 7.36221 
+51.75 41.0964 58.9036 257.514 24.6885 17.7977 278.257 14.3804 7.36275 
+51.76 41.0876 58.9124 257.505 24.6926 17.8028 278.255 14.3816 7.36328 
+51.77 41.0787 58.9213 257.495 24.6968 17.8079 278.253 14.3829 7.36381 
+51.78 41.0699 58.9301 257.486 24.7009 17.813 278.252 14.3841 7.36434 
+51.79 41.061 58.939 257.477 24.7051 17.8181 278.25 14.3854 7.36488 
+51.8 41.0521 58.9479 257.468 24.7093 17.8232 278.248 14.3866 7.36541 
+51.81 41.0433 58.9567 257.458 24.7134 17.8283 278.246 14.3878 7.36595 
+51.82 41.0344 58.9656 257.449 24.7176 17.8334 278.244 14.3891 7.36648 
+51.83 41.0256 58.9744 257.44 24.7218 17.8385 278.243 14.3903 7.36702 
+51.84 41.0167 58.9833 257.431 24.7259 17.8436 278.241 14.3916 7.36756 
+51.85 41.0079 58.9921 257.421 24.7301 17.8487 278.239 14.3928 7.36809 
+51.86 40.999 59.001 257.412 24.7342 17.8538 278.237 14.3941 7.36863 
+51.87 40.9902 59.0098 257.403 24.7384 17.8589 278.236 14.3953 7.36917 
+51.88 40.9813 59.0187 257.393 24.7426 17.864 278.234 14.3966 7.36971 
+51.89 40.9725 59.0275 257.384 24.7467 17.8691 278.232 14.3978 7.37025 
+51.9 40.9636 59.0364 257.375 24.7509 17.8742 278.23 14.3991 7.37079 
+51.91 40.9548 59.0452 257.366 24.7551 17.8793 278.228 14.4003 7.37133 
+51.92 40.946 59.054 257.356 24.7592 17.8844 278.227 14.4016 7.37188 
+51.93 40.9371 59.0629 257.347 24.7634 17.8896 278.225 14.4028 7.37242 
+51.94 40.9283 59.0717 257.338 24.7676 17.8947 278.223 14.4041 7.37296 
+51.95 40.9194 59.0806 257.328 24.7717 17.8998 278.221 14.4053 7.37351 
+51.96 40.9106 59.0894 257.319 24.7759 17.9049 278.219 14.4066 7.37405 
+51.97 40.9017 59.0983 257.31 24.7801 17.91 278.218 14.4078 7.3746 
+51.98 40.8929 59.1071 257.301 24.7842 17.9152 278.216 14.4091 7.37514 
+51.99 40.8841 59.1159 257.291 24.7884 17.9203 278.214 14.4103 7.37569 
+52 40.8752 59.1248 257.282 24.7926 17.9254 278.212 14.4116 7.37624 
+52.01 40.8664 59.1336 257.273 24.7967 17.9305 278.21 14.4129 7.37678 
+52.02 40.8576 59.1424 257.263 24.8009 17.9357 278.209 14.4141 7.37733 
+52.03 40.8487 59.1513 257.254 24.8051 17.9408 278.207 14.4154 7.37788 
+52.04 40.8399 59.1601 257.245 24.8092 17.9459 278.205 14.4166 7.37843 
+52.05 40.8311 59.1689 257.236 24.8134 17.9511 278.203 14.4179 7.37898 
+52.06 40.8222 59.1778 257.226 24.8176 17.9562 278.201 14.4191 7.37953 
+52.07 40.8134 59.1866 257.217 24.8217 17.9613 278.2 14.4204 7.38008 
+52.08 40.8046 59.1954 257.208 24.8259 17.9665 278.198 14.4216 7.38064 
+52.09 40.7957 59.2043 257.198 24.8301 17.9716 278.196 14.4229 7.38119 
+52.1 40.7869 59.2131 257.189 24.8343 17.9767 278.194 14.4242 7.38174 
+52.11 40.7781 59.2219 257.18 24.8384 17.9819 278.192 14.4254 7.3823 
+52.12 40.7693 59.2307 257.17 24.8426 17.987 278.19 14.4267 7.38285 
+52.13 40.7604 59.2396 257.161 24.8468 17.9922 278.189 14.4279 7.38341 
+52.14 40.7516 59.2484 257.152 24.8509 17.9973 278.187 14.4292 7.38397 
+52.15 40.7428 59.2572 257.142 24.8551 18.0025 278.185 14.4305 7.38452 
+52.16 40.734 59.266 257.133 24.8593 18.0076 278.183 14.4317 7.38508 
+52.17 40.7251 59.2749 257.124 24.8635 18.0128 278.181 14.433 7.38564 
+52.18 40.7163 59.2837 257.114 24.8676 18.0179 278.18 14.4343 7.3862 
+52.19 40.7075 59.2925 257.105 24.8718 18.0231 278.178 14.4355 7.38676 
+52.2 40.6987 59.3013 257.096 24.876 18.0282 278.176 14.4368 7.38732 
+52.21 40.6899 59.3101 257.086 24.8802 18.0334 278.174 14.438 7.38788 
+52.22 40.681 59.319 257.077 24.8843 18.0385 278.172 14.4393 7.38844 
+52.23 40.6722 59.3278 257.068 24.8885 18.0437 278.17 14.4406 7.389 
+52.24 40.6634 59.3366 257.058 24.8927 18.0488 278.169 14.4418 7.38956 
+52.25 40.6546 59.3454 257.049 24.8969 18.054 278.167 14.4431 7.39013 
+52.26 40.6458 59.3542 257.04 24.901 18.0592 278.165 14.4444 7.39069 
+52.27 40.637 59.363 257.03 24.9052 18.0643 278.163 14.4456 7.39126 
+52.28 40.6281 59.3719 257.021 24.9094 18.0695 278.161 14.4469 7.39182 
+52.29 40.6193 59.3807 257.012 24.9136 18.0747 278.159 14.4482 7.39239 
+52.3 40.6105 59.3895 257.002 24.9177 18.0798 278.158 14.4494 7.39295 
+52.31 40.6017 59.3983 256.993 24.9219 18.085 278.156 14.4507 7.39352 
+52.32 40.5929 59.4071 256.984 24.9261 18.0902 278.154 14.452 7.39409 
+52.33 40.5841 59.4159 256.974 24.9303 18.0953 278.152 14.4532 7.39466 
+52.34 40.5753 59.4247 256.965 24.9345 18.1005 278.15 14.4545 7.39523 
+52.35 40.5665 59.4335 256.956 24.9386 18.1057 278.148 14.4558 7.3958 
+52.36 40.5577 59.4423 256.946 24.9428 18.1109 278.147 14.4571 7.39637 
+52.37 40.5489 59.4511 256.937 24.947 18.116 278.145 14.4583 7.39694 
+52.38 40.5401 59.4599 256.928 24.9512 18.1212 278.143 14.4596 7.39751 
+52.39 40.5313 59.4687 256.918 24.9554 18.1264 278.141 14.4609 7.39808 
+52.4 40.5225 59.4775 256.909 24.9595 18.1316 278.139 14.4621 7.39866 
+52.41 40.5137 59.4863 256.9 24.9637 18.1368 278.137 14.4634 7.39923 
+52.42 40.5049 59.4951 256.89 24.9679 18.142 278.136 14.4647 7.39981 
+52.43 40.4961 59.5039 256.881 24.9721 18.1471 278.134 14.466 7.40038 
+52.44 40.4873 59.5127 256.871 24.9763 18.1523 278.132 14.4672 7.40096 
+52.45 40.4785 59.5215 256.862 24.9805 18.1575 278.13 14.4685 7.40153 
+52.46 40.4697 59.5303 256.853 24.9846 18.1627 278.128 14.4698 7.40211 
+52.47 40.4609 59.5391 256.843 24.9888 18.1679 278.126 14.4711 7.40269 
+52.48 40.4521 59.5479 256.834 24.993 18.1731 278.124 14.4723 7.40327 
+52.49 40.4433 59.5567 256.825 24.9972 18.1783 278.123 14.4736 7.40384 
+52.5 40.4345 59.5655 256.815 25.0014 18.1835 278.121 14.4749 7.40442 
+52.51 40.4257 59.5743 256.806 25.0056 18.1887 278.119 14.4762 7.405 
+52.52 40.4169 59.5831 256.796 25.0097 18.1939 278.117 14.4775 7.40559 
+52.53 40.4081 59.5919 256.787 25.0139 18.1991 278.115 14.4787 7.40617 
+52.54 40.3993 59.6007 256.778 25.0181 18.2043 278.113 14.48 7.40675 
+52.55 40.3906 59.6094 256.768 25.0223 18.2095 278.111 14.4813 7.40733 
+52.56 40.3818 59.6182 256.759 25.0265 18.2147 278.11 14.4826 7.40792 
+52.57 40.373 59.627 256.749 25.0307 18.2199 278.108 14.4839 7.4085 
+52.58 40.3642 59.6358 256.74 25.0349 18.2251 278.106 14.4851 7.40909 
+52.59 40.3554 59.6446 256.731 25.039 18.2303 278.104 14.4864 7.40967 
+52.6 40.3466 59.6534 256.721 25.0432 18.2355 278.102 14.4877 7.41026 
+52.61 40.3378 59.6622 256.712 25.0474 18.2408 278.1 14.489 7.41084 
+52.62 40.3291 59.6709 256.702 25.0516 18.246 278.098 14.4903 7.41143 
+52.63 40.3203 59.6797 256.693 25.0558 18.2512 278.096 14.4916 7.41202 
+52.64 40.3115 59.6885 256.684 25.06 18.2564 278.095 14.4928 7.41261 
+52.65 40.3027 59.6973 256.674 25.0642 18.2616 278.093 14.4941 7.4132 
+52.66 40.2939 59.7061 256.665 25.0684 18.2668 278.091 14.4954 7.41379 
+52.67 40.2852 59.7148 256.655 25.0726 18.2721 278.089 14.4967 7.41438 
+52.68 40.2764 59.7236 256.646 25.0767 18.2773 278.087 14.498 7.41497 
+52.69 40.2676 59.7324 256.637 25.0809 18.2825 278.085 14.4993 7.41556 
+52.7 40.2588 59.7412 256.627 25.0851 18.2877 278.083 14.5006 7.41615 
+52.71 40.2501 59.7499 256.618 25.0893 18.293 278.081 14.5018 7.41675 
+52.72 40.2413 59.7587 256.608 25.0935 18.2982 278.08 14.5031 7.41734 
+52.73 40.2325 59.7675 256.599 25.0977 18.3034 278.078 14.5044 7.41794 
+52.74 40.2237 59.7763 256.589 25.1019 18.3086 278.076 14.5057 7.41853 
+52.75 40.215 59.785 256.58 25.1061 18.3139 278.074 14.507 7.41913 
+52.76 40.2062 59.7938 256.571 25.1103 18.3191 278.072 14.5083 7.41973 
+52.77 40.1974 59.8026 256.561 25.1145 18.3243 278.07 14.5096 7.42032 
+52.78 40.1887 59.8113 256.552 25.1187 18.3296 278.068 14.5109 7.42092 
+52.79 40.1799 59.8201 256.542 25.1229 18.3348 278.066 14.5122 7.42152 
+52.8 40.1711 59.8289 256.533 25.127 18.3401 278.064 14.5134 7.42212 
+52.81 40.1624 59.8376 256.523 25.1312 18.3453 278.063 14.5147 7.42272 
+52.82 40.1536 59.8464 256.514 25.1354 18.3505 278.061 14.516 7.42332 
+52.83 40.1448 59.8552 256.505 25.1396 18.3558 278.059 14.5173 7.42392 
+52.84 40.1361 59.8639 256.495 25.1438 18.361 278.057 14.5186 7.42452 
+52.85 40.1273 59.8727 256.486 25.148 18.3663 278.055 14.5199 7.42512 
+52.86 40.1186 59.8814 256.476 25.1522 18.3715 278.053 14.5212 7.42573 
+52.87 40.1098 59.8902 256.467 25.1564 18.3768 278.051 14.5225 7.42633 
+52.88 40.101 59.899 256.457 25.1606 18.382 278.049 14.5238 7.42694 
+52.89 40.0923 59.9077 256.448 25.1648 18.3873 278.047 14.5251 7.42754 
+52.9 40.0835 59.9165 256.438 25.169 18.3925 278.045 14.5264 7.42815 
+52.91 40.0748 59.9252 256.429 25.1732 18.3978 278.044 14.5277 7.42875 
+52.92 40.066 59.934 256.42 25.1774 18.4031 278.042 14.529 7.42936 
+52.93 40.0573 59.9427 256.41 25.1816 18.4083 278.04 14.5303 7.42997 
+52.94 40.0485 59.9515 256.401 25.1858 18.4136 278.038 14.5316 7.43058 
+52.95 40.0398 59.9602 256.391 25.19 18.4188 278.036 14.5329 7.43119 
+52.96 40.031 59.969 256.382 25.1942 18.4241 278.034 14.5342 7.4318 
+52.97 40.0223 59.9777 256.372 25.1984 18.4294 278.032 14.5355 7.43241 
+52.98 40.0135 59.9865 256.363 25.2026 18.4346 278.03 14.5368 7.43302 
+52.99 40.0048 59.9952 256.353 25.2068 18.4399 278.028 14.5381 7.43363 
+53 39.996 60.004 256.344 25.211 18.4452 278.026 14.5394 7.43424 
+53.01 39.9873 60.0127 256.334 25.2152 18.4504 278.024 14.5407 7.43486 
+53.02 39.9785 60.0215 256.325 25.2194 18.4557 278.023 14.542 7.43547 
+53.03 39.9698 60.0302 256.315 25.2236 18.461 278.021 14.5433 7.43608 
+53.04 39.961 60.039 256.306 25.2278 18.4662 278.019 14.5446 7.4367 
+53.05 39.9523 60.0477 256.296 25.232 18.4715 278.017 14.5459 7.43731 
+53.06 39.9436 60.0564 256.287 25.2362 18.4768 278.015 14.5472 7.43793 
+53.07 39.9348 60.0652 256.278 25.2404 18.4821 278.013 14.5485 7.43855 
+53.08 39.9261 60.0739 256.268 25.2446 18.4874 278.011 14.5498 7.43917 
+53.09 39.9173 60.0827 256.259 25.2488 18.4926 278.009 14.5511 7.43978 
+53.1 39.9086 60.0914 256.249 25.253 18.4979 278.007 14.5524 7.4404 
+53.11 39.8999 60.1001 256.24 25.2572 18.5032 278.005 14.5537 7.44102 
+53.12 39.8911 60.1089 256.23 25.2614 18.5085 278.003 14.555 7.44164 
+53.13 39.8824 60.1176 256.221 25.2656 18.5138 278.001 14.5563 7.44226 
+53.14 39.8737 60.1263 256.211 25.2698 18.5191 277.999 14.5576 7.44289 
+53.15 39.8649 60.1351 256.202 25.274 18.5243 277.998 14.559 7.44351 
+53.16 39.8562 60.1438 256.192 25.2782 18.5296 277.996 14.5603 7.44413 
+53.17 39.8475 60.1525 256.183 25.2825 18.5349 277.994 14.5616 7.44476 
+53.18 39.8387 60.1613 256.173 25.2867 18.5402 277.992 14.5629 7.44538 
+53.19 39.83 60.17 256.164 25.2909 18.5455 277.99 14.5642 7.446 
+53.2 39.8213 60.1787 256.154 25.2951 18.5508 277.988 14.5655 7.44663 
+53.21 39.8125 60.1875 256.145 25.2993 18.5561 277.986 14.5668 7.44726 
+53.22 39.8038 60.1962 256.135 25.3035 18.5614 277.984 14.5681 7.44788 
+53.23 39.7951 60.2049 256.126 25.3077 18.5667 277.982 14.5694 7.44851 
+53.24 39.7864 60.2136 256.116 25.3119 18.572 277.98 14.5708 7.44914 
+53.25 39.7776 60.2224 256.107 25.3161 18.5773 277.978 14.5721 7.44977 
+53.26 39.7689 60.2311 256.097 25.3203 18.5826 277.976 14.5734 7.4504 
+53.27 39.7602 60.2398 256.088 25.3245 18.5879 277.974 14.5747 7.45103 
+53.28 39.7515 60.2485 256.078 25.3287 18.5932 277.972 14.576 7.45166 
+53.29 39.7428 60.2572 256.068 25.3329 18.5986 277.97 14.5773 7.45229 
+53.3 39.734 60.266 256.059 25.3372 18.6039 277.968 14.5786 7.45292 
+53.31 39.7253 60.2747 256.049 25.3414 18.6092 277.966 14.58 7.45356 
+53.32 39.7166 60.2834 256.04 25.3456 18.6145 277.965 14.5813 7.45419 
+53.33 39.7079 60.2921 256.03 25.3498 18.6198 277.963 14.5826 7.45483 
+53.34 39.6992 60.3008 256.021 25.354 18.6251 277.961 14.5839 7.45546 
+53.35 39.6905 60.3095 256.011 25.3582 18.6304 277.959 14.5852 7.4561 
+53.36 39.6817 60.3183 256.002 25.3624 18.6358 277.957 14.5865 7.45673 
+53.37 39.673 60.327 255.992 25.3666 18.6411 277.955 14.5879 7.45737 
+53.38 39.6643 60.3357 255.983 25.3708 18.6464 277.953 14.5892 7.45801 
+53.39 39.6556 60.3444 255.973 25.3751 18.6517 277.951 14.5905 7.45865 
+53.4 39.6469 60.3531 255.964 25.3793 18.657 277.949 14.5918 7.45928 
+53.41 39.6382 60.3618 255.954 25.3835 18.6624 277.947 14.5931 7.45992 
+53.42 39.6295 60.3705 255.945 25.3877 18.6677 277.945 14.5945 7.46056 
+53.43 39.6208 60.3792 255.935 25.3919 18.673 277.943 14.5958 7.46121 
+53.44 39.6121 60.3879 255.926 25.3961 18.6784 277.941 14.5971 7.46185 
+53.45 39.6034 60.3966 255.916 25.4003 18.6837 277.939 14.5984 7.46249 
+53.46 39.5947 60.4053 255.906 25.4046 18.689 277.937 14.5998 7.46313 
+53.47 39.586 60.414 255.897 25.4088 18.6944 277.935 14.6011 7.46378 
+53.48 39.5773 60.4227 255.887 25.413 18.6997 277.933 14.6024 7.46442 
+53.49 39.5686 60.4314 255.878 25.4172 18.705 277.931 14.6037 7.46507 
+53.5 39.5599 60.4401 255.868 25.4214 18.7104 277.929 14.605 7.46571 
+53.51 39.5512 60.4488 255.859 25.4256 18.7157 277.927 14.6064 7.46636 
+53.52 39.5425 60.4575 255.849 25.4299 18.7211 277.925 14.6077 7.467 
+53.53 39.5338 60.4662 255.84 25.4341 18.7264 277.923 14.609 7.46765 
+53.54 39.5251 60.4749 255.83 25.4383 18.7318 277.921 14.6104 7.4683 
+53.55 39.5164 60.4836 255.82 25.4425 18.7371 277.919 14.6117 7.46895 
+53.56 39.5077 60.4923 255.811 25.4467 18.7424 277.917 14.613 7.4696 
+53.57 39.499 60.501 255.801 25.4509 18.7478 277.915 14.6143 7.47025 
+53.58 39.4903 60.5097 255.792 25.4552 18.7531 277.913 14.6157 7.4709 
+53.59 39.4816 60.5184 255.782 25.4594 18.7585 277.911 14.617 7.47155 
+53.6 39.4729 60.5271 255.773 25.4636 18.7639 277.909 14.6183 7.4722 
+53.61 39.4642 60.5358 255.763 25.4678 18.7692 277.907 14.6197 7.47286 
+53.62 39.4555 60.5445 255.753 25.472 18.7746 277.905 14.621 7.47351 
+53.63 39.4468 60.5532 255.744 25.4763 18.7799 277.904 14.6223 7.47417 
+53.64 39.4382 60.5618 255.734 25.4805 18.7853 277.902 14.6237 7.47482 
+53.65 39.4295 60.5705 255.725 25.4847 18.7906 277.9 14.625 7.47548 
+53.66 39.4208 60.5792 255.715 25.4889 18.796 277.898 14.6263 7.47613 
+53.67 39.4121 60.5879 255.705 25.4931 18.8014 277.896 14.6277 7.47679 
+53.68 39.4034 60.5966 255.696 25.4974 18.8067 277.894 14.629 7.47745 
+53.69 39.3947 60.6053 255.686 25.5016 18.8121 277.892 14.6303 7.47811 
+53.7 39.3861 60.6139 255.677 25.5058 18.8175 277.89 14.6317 7.47877 
+53.71 39.3774 60.6226 255.667 25.51 18.8228 277.888 14.633 7.47943 
+53.72 39.3687 60.6313 255.658 25.5143 18.8282 277.886 14.6343 7.48009 
+53.73 39.36 60.64 255.648 25.5185 18.8336 277.884 14.6357 7.48075 
+53.74 39.3513 60.6487 255.638 25.5227 18.839 277.882 14.637 7.48141 
+53.75 39.3427 60.6573 255.629 25.5269 18.8443 277.88 14.6383 7.48207 
+53.76 39.334 60.666 255.619 25.5312 18.8497 277.878 14.6397 7.48273 
+53.77 39.3253 60.6747 255.61 25.5354 18.8551 277.876 14.641 7.4834 
+53.78 39.3166 60.6834 255.6 25.5396 18.8605 277.874 14.6424 7.48406 
+53.79 39.308 60.692 255.59 25.5438 18.8658 277.872 14.6437 7.48473 
+53.8 39.2993 60.7007 255.581 25.5481 18.8712 277.87 14.645 7.48539 
+53.81 39.2906 60.7094 255.571 25.5523 18.8766 277.868 14.6464 7.48606 
+53.82 39.282 60.718 255.562 25.5565 18.882 277.866 14.6477 7.48673 
+53.83 39.2733 60.7267 255.552 25.5607 18.8874 277.864 14.6491 7.48739 
+53.84 39.2646 60.7354 255.542 25.565 18.8928 277.862 14.6504 7.48806 
+53.85 39.256 60.744 255.533 25.5692 18.8982 277.86 14.6517 7.48873 
+53.86 39.2473 60.7527 255.523 25.5734 18.9035 277.858 14.6531 7.4894 
+53.87 39.2386 60.7614 255.513 25.5776 18.9089 277.856 14.6544 7.49007 
+53.88 39.23 60.77 255.504 25.5819 18.9143 277.853 14.6558 7.49074 
+53.89 39.2213 60.7787 255.494 25.5861 18.9197 277.851 14.6571 7.49142 
+53.9 39.2126 60.7874 255.485 25.5903 18.9251 277.849 14.6585 7.49209 
+53.91 39.204 60.796 255.475 25.5946 18.9305 277.847 14.6598 7.49276 
+53.92 39.1953 60.8047 255.465 25.5988 18.9359 277.845 14.6611 7.49344 
+53.93 39.1867 60.8133 255.456 25.603 18.9413 277.843 14.6625 7.49411 
+53.94 39.178 60.822 255.446 25.6072 18.9467 277.841 14.6638 7.49479 
+53.95 39.1693 60.8307 255.436 25.6115 18.9521 277.839 14.6652 7.49546 
+53.96 39.1607 60.8393 255.427 25.6157 18.9575 277.837 14.6665 7.49614 
+53.97 39.152 60.848 255.417 25.6199 18.9629 277.835 14.6679 7.49682 
+53.98 39.1434 60.8566 255.407 25.6242 18.9683 277.833 14.6692 7.49749 
+53.99 39.1347 60.8653 255.398 25.6284 18.9738 277.831 14.6706 7.49817 
+54 39.1261 60.8739 255.388 25.6326 18.9792 277.829 14.6719 7.49885 
+54.01 39.1174 60.8826 255.379 25.6369 18.9846 277.827 14.6733 7.49953 
+54.02 39.1088 60.8912 255.369 25.6411 18.99 277.825 14.6746 7.50021 
+54.03 39.1001 60.8999 255.359 25.6453 18.9954 277.823 14.676 7.50089 
+54.04 39.0915 60.9085 255.35 25.6496 19.0008 277.821 14.6773 7.50158 
+54.05 39.0828 60.9172 255.34 25.6538 19.0062 277.819 14.6787 7.50226 
+54.06 39.0742 60.9258 255.33 25.658 19.0117 277.817 14.68 7.50294 
+54.07 39.0655 60.9345 255.321 25.6623 19.0171 277.815 14.6814 7.50363 
+54.08 39.0569 60.9431 255.311 25.6665 19.0225 277.813 14.6827 7.50431 
+54.09 39.0482 60.9518 255.301 25.6707 19.0279 277.811 14.6841 7.505 
+54.1 39.0396 60.9604 255.292 25.675 19.0333 277.809 14.6854 7.50568 
+54.11 39.031 60.969 255.282 25.6792 19.0388 277.807 14.6868 7.50637 
+54.12 39.0223 60.9777 255.272 25.6834 19.0442 277.805 14.6882 7.50706 
+54.13 39.0137 60.9863 255.263 25.6877 19.0496 277.803 14.6895 7.50774 
+54.14 39.005 60.995 255.253 25.6919 19.0551 277.801 14.6909 7.50843 
+54.15 38.9964 61.0036 255.243 25.6961 19.0605 277.799 14.6922 7.50912 
+54.16 38.9878 61.0122 255.234 25.7004 19.0659 277.797 14.6936 7.50981 
+54.17 38.9791 61.0209 255.224 25.7046 19.0714 277.795 14.6949 7.5105 
+54.18 38.9705 61.0295 255.214 25.7088 19.0768 277.793 14.6963 7.5112 
+54.19 38.9619 61.0381 255.205 25.7131 19.0822 277.79 14.6977 7.51189 
+54.2 38.9532 61.0468 255.195 25.7173 19.0877 277.788 14.699 7.51258 
+54.21 38.9446 61.0554 255.185 25.7216 19.0931 277.786 14.7004 7.51327 
+54.22 38.936 61.064 255.176 25.7258 19.0986 277.784 14.7017 7.51397 
+54.23 38.9273 61.0727 255.166 25.73 19.104 277.782 14.7031 7.51466 
+54.24 38.9187 61.0813 255.156 25.7343 19.1094 277.78 14.7045 7.51536 
+54.25 38.9101 61.0899 255.147 25.7385 19.1149 277.778 14.7058 7.51606 
+54.26 38.9015 61.0985 255.137 25.7428 19.1203 277.776 14.7072 7.51675 
+54.27 38.8928 61.1072 255.127 25.747 19.1258 277.774 14.7085 7.51745 
+54.28 38.8842 61.1158 255.118 25.7512 19.1312 277.772 14.7099 7.51815 
+54.29 38.8756 61.1244 255.108 25.7555 19.1367 277.77 14.7113 7.51885 
+54.3 38.867 61.133 255.098 25.7597 19.1421 277.768 14.7126 7.51955 
+54.31 38.8583 61.1417 255.088 25.764 19.1476 277.766 14.714 7.52025 
+54.32 38.8497 61.1503 255.079 25.7682 19.1531 277.764 14.7154 7.52095 
+54.33 38.8411 61.1589 255.069 25.7724 19.1585 277.762 14.7167 7.52165 
+54.34 38.8325 61.1675 255.059 25.7767 19.164 277.76 14.7181 7.52235 
+54.35 38.8239 61.1761 255.05 25.7809 19.1694 277.757 14.7195 7.52306 
+54.36 38.8152 61.1848 255.04 25.7852 19.1749 277.755 14.7208 7.52376 
+54.37 38.8066 61.1934 255.03 25.7894 19.1804 277.753 14.7222 7.52446 
+54.38 38.798 61.202 255.021 25.7936 19.1858 277.751 14.7236 7.52517 
+54.39 38.7894 61.2106 255.011 25.7979 19.1913 277.749 14.7249 7.52588 
+54.4 38.7808 61.2192 255.001 25.8021 19.1968 277.747 14.7263 7.52658 
+54.41 38.7722 61.2278 254.991 25.8064 19.2022 277.745 14.7277 7.52729 
+54.42 38.7636 61.2364 254.982 25.8106 19.2077 277.743 14.729 7.528 
+54.43 38.7549 61.2451 254.972 25.8149 19.2132 277.741 14.7304 7.52871 
+54.44 38.7463 61.2537 254.962 25.8191 19.2186 277.739 14.7318 7.52941 
+54.45 38.7377 61.2623 254.953 25.8234 19.2241 277.737 14.7332 7.53012 
+54.46 38.7291 61.2709 254.943 25.8276 19.2296 277.735 14.7345 7.53084 
+54.47 38.7205 61.2795 254.933 25.8318 19.2351 277.733 14.7359 7.53155 
+54.48 38.7119 61.2881 254.923 25.8361 19.2405 277.73 14.7373 7.53226 
+54.49 38.7033 61.2967 254.914 25.8403 19.246 277.728 14.7387 7.53297 
+54.5 38.6947 61.3053 254.904 25.8446 19.2515 277.726 14.74 7.53369 
+54.51 38.6861 61.3139 254.894 25.8488 19.257 277.724 14.7414 7.5344 
+54.52 38.6775 61.3225 254.884 25.8531 19.2625 277.722 14.7428 7.53511 
+54.53 38.6689 61.3311 254.875 25.8573 19.268 277.72 14.7442 7.53583 
+54.54 38.6603 61.3397 254.865 25.8616 19.2734 277.718 14.7455 7.53655 
+54.55 38.6517 61.3483 254.855 25.8658 19.2789 277.716 14.7469 7.53726 
+54.56 38.6431 61.3569 254.846 25.8701 19.2844 277.714 14.7483 7.53798 
+54.57 38.6345 61.3655 254.836 25.8743 19.2899 277.712 14.7497 7.5387 
+54.58 38.6259 61.3741 254.826 25.8786 19.2954 277.71 14.751 7.53942 
+54.59 38.6173 61.3827 254.816 25.8828 19.3009 277.707 14.7524 7.54014 
+54.6 38.6087 61.3913 254.807 25.8871 19.3064 277.705 14.7538 7.54086 
+54.61 38.6001 61.3999 254.797 25.8913 19.3119 277.703 14.7552 7.54158 
+54.62 38.5915 61.4085 254.787 25.8956 19.3174 277.701 14.7566 7.5423 
+54.63 38.583 61.417 254.777 25.8998 19.3229 277.699 14.7579 7.54302 
+54.64 38.5744 61.4256 254.768 25.9041 19.3284 277.697 14.7593 7.54374 
+54.65 38.5658 61.4342 254.758 25.9083 19.3339 277.695 14.7607 7.54447 
+54.66 38.5572 61.4428 254.748 25.9126 19.3394 277.693 14.7621 7.54519 
+54.67 38.5486 61.4514 254.738 25.9168 19.3449 277.691 14.7635 7.54592 
+54.68 38.54 61.46 254.729 25.9211 19.3504 277.689 14.7648 7.54664 
+54.69 38.5314 61.4686 254.719 25.9253 19.3559 277.686 14.7662 7.54737 
+54.7 38.5229 61.4771 254.709 25.9296 19.3614 277.684 14.7676 7.5481 
+54.71 38.5143 61.4857 254.699 25.9338 19.3669 277.682 14.769 7.54883 
+54.72 38.5057 61.4943 254.689 25.9381 19.3725 277.68 14.7704 7.54955 
+54.73 38.4971 61.5029 254.68 25.9423 19.378 277.678 14.7718 7.55028 
+54.74 38.4885 61.5115 254.67 25.9466 19.3835 277.676 14.7732 7.55101 
+54.75 38.48 61.52 254.66 25.9508 19.389 277.674 14.7745 7.55174 
+54.76 38.4714 61.5286 254.65 25.9551 19.3945 277.672 14.7759 7.55248 
+54.77 38.4628 61.5372 254.641 25.9593 19.4 277.669 14.7773 7.55321 
+54.78 38.4542 61.5458 254.631 25.9636 19.4056 277.667 14.7787 7.55394 
+54.79 38.4457 61.5543 254.621 25.9679 19.4111 277.665 14.7801 7.55467 
+54.8 38.4371 61.5629 254.611 25.9721 19.4166 277.663 14.7815 7.55541 
+54.81 38.4285 61.5715 254.601 25.9764 19.4221 277.661 14.7829 7.55614 
+54.82 38.4199 61.5801 254.592 25.9806 19.4277 277.659 14.7843 7.55688 
+54.83 38.4114 61.5886 254.582 25.9849 19.4332 277.657 14.7857 7.55761 
+54.84 38.4028 61.5972 254.572 25.9891 19.4387 277.655 14.787 7.55835 
+54.85 38.3942 61.6058 254.562 25.9934 19.4443 277.652 14.7884 7.55909 
+54.86 38.3857 61.6143 254.553 25.9977 19.4498 277.65 14.7898 7.55983 
+54.87 38.3771 61.6229 254.543 26.0019 19.4553 277.648 14.7912 7.56056 
+54.88 38.3685 61.6315 254.533 26.0062 19.4609 277.646 14.7926 7.5613 
+54.89 38.36 61.64 254.523 26.0104 19.4664 277.644 14.794 7.56204 
+54.9 38.3514 61.6486 254.513 26.0147 19.4719 277.642 14.7954 7.56279 
+54.91 38.3428 61.6572 254.504 26.0189 19.4775 277.64 14.7968 7.56353 
+54.92 38.3343 61.6657 254.494 26.0232 19.483 277.638 14.7982 7.56427 
+54.93 38.3257 61.6743 254.484 26.0275 19.4886 277.635 14.7996 7.56501 
+54.94 38.3172 61.6828 254.474 26.0317 19.4941 277.633 14.801 7.56576 
+54.95 38.3086 61.6914 254.464 26.036 19.4996 277.631 14.8024 7.5665 
+54.96 38.3001 61.6999 254.455 26.0402 19.5052 277.629 14.8038 7.56725 
+54.97 38.2915 61.7085 254.445 26.0445 19.5107 277.627 14.8052 7.56799 
+54.98 38.2829 61.7171 254.435 26.0488 19.5163 277.625 14.8066 7.56874 
+54.99 38.2744 61.7256 254.425 26.053 19.5218 277.623 14.808 7.56949 
+55 38.2658 61.7342 254.415 26.0573 19.5274 277.62 14.8094 7.57023 
+55.01 38.2573 61.7427 254.406 26.0615 19.5329 277.618 14.8108 7.57098 
+55.02 38.2487 61.7513 254.396 26.0658 19.5385 277.616 14.8122 7.57173 
+55.03 38.2402 61.7598 254.386 26.0701 19.5441 277.614 14.8136 7.57248 
+55.04 38.2316 61.7684 254.376 26.0743 19.5496 277.612 14.815 7.57323 
+55.05 38.2231 61.7769 254.366 26.0786 19.5552 277.61 14.8164 7.57398 
+55.06 38.2145 61.7855 254.356 26.0828 19.5607 277.607 14.8178 7.57474 
+55.07 38.206 61.794 254.347 26.0871 19.5663 277.605 14.8192 7.57549 
+55.08 38.1975 61.8025 254.337 26.0914 19.5719 277.603 14.8206 7.57624 
+55.09 38.1889 61.8111 254.327 26.0956 19.5774 277.601 14.822 7.577 
+55.1 38.1804 61.8196 254.317 26.0999 19.583 277.599 14.8234 7.57775 
+55.11 38.1718 61.8282 254.307 26.1042 19.5886 277.597 14.8248 7.57851 
+55.12 38.1633 61.8367 254.297 26.1084 19.5941 277.595 14.8262 7.57926 
+55.13 38.1547 61.8453 254.288 26.1127 19.5997 277.592 14.8276 7.58002 
+55.14 38.1462 61.8538 254.278 26.117 19.6053 277.59 14.829 7.58078 
+55.15 38.1377 61.8623 254.268 26.1212 19.6109 277.588 14.8304 7.58154 
+55.16 38.1291 61.8709 254.258 26.1255 19.6164 277.586 14.8318 7.5823 
+55.17 38.1206 61.8794 254.248 26.1298 19.622 277.584 14.8332 7.58306 
+55.18 38.1121 61.8879 254.238 26.134 19.6276 277.582 14.8346 7.58382 
+55.19 38.1035 61.8965 254.229 26.1383 19.6332 277.579 14.836 7.58458 
+55.2 38.095 61.905 254.219 26.1426 19.6387 277.577 14.8375 7.58534 
+55.21 38.0865 61.9135 254.209 26.1468 19.6443 277.575 14.8389 7.5861 
+55.22 38.0779 61.9221 254.199 26.1511 19.6499 277.573 14.8403 7.58686 
+55.23 38.0694 61.9306 254.189 26.1554 19.6555 277.571 14.8417 7.58763 
+55.24 38.0609 61.9391 254.179 26.1596 19.6611 277.569 14.8431 7.58839 
+55.25 38.0524 61.9476 254.169 26.1639 19.6667 277.566 14.8445 7.58916 
+55.26 38.0438 61.9562 254.16 26.1682 19.6723 277.564 14.8459 7.58992 
+55.27 38.0353 61.9647 254.15 26.1724 19.6778 277.562 14.8473 7.59069 
+55.28 38.0268 61.9732 254.14 26.1767 19.6834 277.56 14.8487 7.59146 
+55.29 38.0183 61.9817 254.13 26.181 19.689 277.558 14.8502 7.59223 
+55.3 38.0097 61.9903 254.12 26.1852 19.6946 277.555 14.8516 7.593 
+55.31 38.0012 61.9988 254.11 26.1895 19.7002 277.553 14.853 7.59377 
+55.32 37.9927 62.0073 254.1 26.1938 19.7058 277.551 14.8544 7.59454 
+55.33 37.9842 62.0158 254.091 26.198 19.7114 277.549 14.8558 7.59531 
+55.34 37.9757 62.0243 254.081 26.2023 19.717 277.547 14.8572 7.59608 
+55.35 37.9671 62.0329 254.071 26.2066 19.7226 277.544 14.8587 7.59685 
+55.36 37.9586 62.0414 254.061 26.2109 19.7282 277.542 14.8601 7.59762 
+55.37 37.9501 62.0499 254.051 26.2151 19.7338 277.54 14.8615 7.5984 
+55.38 37.9416 62.0584 254.041 26.2194 19.7394 277.538 14.8629 7.59917 
+55.39 37.9331 62.0669 254.031 26.2237 19.7451 277.536 14.8643 7.59995 
+55.4 37.9246 62.0754 254.021 26.2279 19.7507 277.534 14.8657 7.60072 
+55.41 37.9161 62.0839 254.012 26.2322 19.7563 277.531 14.8672 7.6015 
+55.42 37.9076 62.0924 254.002 26.2365 19.7619 277.529 14.8686 7.60228 
+55.43 37.899 62.101 253.992 26.2408 19.7675 277.527 14.87 7.60305 
+55.44 37.8905 62.1095 253.982 26.245 19.7731 277.525 14.8714 7.60383 
+55.45 37.882 62.118 253.972 26.2493 19.7787 277.523 14.8728 7.60461 
+55.46 37.8735 62.1265 253.962 26.2536 19.7843 277.52 14.8743 7.60539 
+55.47 37.865 62.135 253.952 26.2579 19.79 277.518 14.8757 7.60617 
+55.48 37.8565 62.1435 253.942 26.2621 19.7956 277.516 14.8771 7.60695 
+55.49 37.848 62.152 253.932 26.2664 19.8012 277.514 14.8785 7.60774 
+55.5 37.8395 62.1605 253.922 26.2707 19.8068 277.512 14.88 7.60852 
+55.51 37.831 62.169 253.913 26.275 19.8125 277.509 14.8814 7.6093 
+55.52 37.8225 62.1775 253.903 26.2792 19.8181 277.507 14.8828 7.61009 
+55.53 37.814 62.186 253.893 26.2835 19.8237 277.505 14.8842 7.61087 
+55.54 37.8055 62.1945 253.883 26.2878 19.8293 277.503 14.8857 7.61166 
+55.55 37.797 62.203 253.873 26.2921 19.835 277.5 14.8871 7.61244 
+55.56 37.7885 62.2115 253.863 26.2963 19.8406 277.498 14.8885 7.61323 
+55.57 37.78 62.22 253.853 26.3006 19.8462 277.496 14.8899 7.61402 
+55.58 37.7715 62.2285 253.843 26.3049 19.8519 277.494 14.8914 7.61481 
+55.59 37.7631 62.2369 253.833 26.3092 19.8575 277.492 14.8928 7.6156 
+55.6 37.7546 62.2454 253.823 26.3134 19.8631 277.489 14.8942 7.61639 
+55.61 37.7461 62.2539 253.813 26.3177 19.8688 277.487 14.8957 7.61718 
+55.62 37.7376 62.2624 253.804 26.322 19.8744 277.485 14.8971 7.61797 
+55.63 37.7291 62.2709 253.794 26.3263 19.8801 277.483 14.8985 7.61876 
+55.64 37.7206 62.2794 253.784 26.3306 19.8857 277.48 14.9 7.61955 
+55.65 37.7121 62.2879 253.774 26.3348 19.8914 277.478 14.9014 7.62035 
+55.66 37.7036 62.2964 253.764 26.3391 19.897 277.476 14.9028 7.62114 
+55.67 37.6952 62.3048 253.754 26.3434 19.9026 277.474 14.9043 7.62194 
+55.68 37.6867 62.3133 253.744 26.3477 19.9083 277.472 14.9057 7.62273 
+55.69 37.6782 62.3218 253.734 26.352 19.9139 277.469 14.9071 7.62353 
+55.7 37.6697 62.3303 253.724 26.3562 19.9196 277.467 14.9086 7.62433 
+55.71 37.6612 62.3388 253.714 26.3605 19.9252 277.465 14.91 7.62512 
+55.72 37.6528 62.3472 253.704 26.3648 19.9309 277.463 14.9114 7.62592 
+55.73 37.6443 62.3557 253.694 26.3691 19.9366 277.46 14.9129 7.62672 
+55.74 37.6358 62.3642 253.684 26.3734 19.9422 277.458 14.9143 7.62752 
+55.75 37.6273 62.3727 253.674 26.3776 19.9479 277.456 14.9157 7.62832 
+55.76 37.6189 62.3811 253.665 26.3819 19.9535 277.454 14.9172 7.62912 
+55.77 37.6104 62.3896 253.655 26.3862 19.9592 277.451 14.9186 7.62992 
+55.78 37.6019 62.3981 253.645 26.3905 19.9649 277.449 14.9201 7.63073 
+55.79 37.5934 62.4066 253.635 26.3948 19.9705 277.447 14.9215 7.63153 
+55.8 37.585 62.415 253.625 26.3991 19.9762 277.445 14.9229 7.63233 
+55.81 37.5765 62.4235 253.615 26.4033 19.9819 277.442 14.9244 7.63314 
+55.82 37.568 62.432 253.605 26.4076 19.9875 277.44 14.9258 7.63394 
+55.83 37.5596 62.4404 253.595 26.4119 19.9932 277.438 14.9273 7.63475 
+55.84 37.5511 62.4489 253.585 26.4162 19.9989 277.436 14.9287 7.63556 
+55.85 37.5426 62.4574 253.575 26.4205 20.0045 277.433 14.9301 7.63637 
+55.86 37.5342 62.4658 253.565 26.4248 20.0102 277.431 14.9316 7.63717 
+55.87 37.5257 62.4743 253.555 26.429 20.0159 277.429 14.933 7.63798 
+55.88 37.5173 62.4827 253.545 26.4333 20.0216 277.427 14.9345 7.63879 
+55.89 37.5088 62.4912 253.535 26.4376 20.0272 277.424 14.9359 7.6396 
+55.9 37.5003 62.4997 253.525 26.4419 20.0329 277.422 14.9374 7.64041 
+55.91 37.4919 62.5081 253.515 26.4462 20.0386 277.42 14.9388 7.64123 
+55.92 37.4834 62.5166 253.505 26.4505 20.0443 277.418 14.9402 7.64204 
+55.93 37.475 62.525 253.495 26.4548 20.05 277.415 14.9417 7.64285 
+55.94 37.4665 62.5335 253.485 26.4591 20.0557 277.413 14.9431 7.64367 
+55.95 37.4581 62.5419 253.475 26.4633 20.0613 277.411 14.9446 7.64448 
+55.96 37.4496 62.5504 253.465 26.4676 20.067 277.409 14.946 7.6453 
+55.97 37.4412 62.5588 253.455 26.4719 20.0727 277.406 14.9475 7.64611 
+55.98 37.4327 62.5673 253.445 26.4762 20.0784 277.404 14.9489 7.64693 
+55.99 37.4243 62.5757 253.435 26.4805 20.0841 277.402 14.9504 7.64775 
+56 37.4158 62.5842 253.425 26.4848 20.0898 277.4 14.9518 7.64857 
+56.01 37.4074 62.5926 253.415 26.4891 20.0955 277.397 14.9533 7.64938 
+56.02 37.3989 62.6011 253.405 26.4934 20.1012 277.395 14.9547 7.6502 
+56.03 37.3905 62.6095 253.395 26.4976 20.1069 277.393 14.9562 7.65102 
+56.04 37.382 62.618 253.385 26.5019 20.1126 277.391 14.9576 7.65185 
+56.05 37.3736 62.6264 253.375 26.5062 20.1183 277.388 14.9591 7.65267 
+56.06 37.3651 62.6349 253.365 26.5105 20.124 277.386 14.9605 7.65349 
+56.07 37.3567 62.6433 253.355 26.5148 20.1297 277.384 14.962 7.65431 
+56.08 37.3483 62.6517 253.345 26.5191 20.1354 277.381 14.9634 7.65514 
+56.09 37.3398 62.6602 253.335 26.5234 20.1411 277.379 14.9649 7.65596 
+56.1 37.3314 62.6686 253.325 26.5277 20.1468 277.377 14.9664 7.65679 
+56.11 37.3229 62.6771 253.315 26.532 20.1525 277.375 14.9678 7.65761 
+56.12 37.3145 62.6855 253.305 26.5363 20.1582 277.372 14.9693 7.65844 
+56.13 37.3061 62.6939 253.295 26.5406 20.164 277.37 14.9707 7.65927 
+56.14 37.2976 62.7024 253.285 26.5448 20.1697 277.368 14.9722 7.6601 
+56.15 37.2892 62.7108 253.275 26.5491 20.1754 277.365 14.9736 7.66093 
+56.16 37.2808 62.7192 253.265 26.5534 20.1811 277.363 14.9751 7.66176 
+56.17 37.2723 62.7277 253.255 26.5577 20.1868 277.361 14.9766 7.66259 
+56.18 37.2639 62.7361 253.245 26.562 20.1925 277.359 14.978 7.66342 
+56.19 37.2555 62.7445 253.235 26.5663 20.1983 277.356 14.9795 7.66425 
+56.2 37.2471 62.7529 253.225 26.5706 20.204 277.354 14.9809 7.66508 
+56.21 37.2386 62.7614 253.215 26.5749 20.2097 277.352 14.9824 7.66591 
+56.22 37.2302 62.7698 253.205 26.5792 20.2154 277.349 14.9839 7.66675 
+56.23 37.2218 62.7782 253.195 26.5835 20.2212 277.347 14.9853 7.66758 
+56.24 37.2134 62.7866 253.185 26.5878 20.2269 277.345 14.9868 7.66842 
+56.25 37.2049 62.7951 253.175 26.5921 20.2326 277.342 14.9882 7.66926 
+56.26 37.1965 62.8035 253.165 26.5964 20.2383 277.34 14.9897 7.67009 
+56.27 37.1881 62.8119 253.155 26.6007 20.2441 277.338 14.9912 7.67093 
+56.28 37.1797 62.8203 253.145 26.605 20.2498 277.336 14.9926 7.67177 
+56.29 37.1713 62.8287 253.135 26.6093 20.2555 277.333 14.9941 7.67261 
+56.3 37.1629 62.8371 253.125 26.6136 20.2613 277.331 14.9956 7.67345 
+56.31 37.1544 62.8456 253.115 26.6179 20.267 277.329 14.997 7.67429 
+56.32 37.146 62.854 253.105 26.6222 20.2728 277.326 14.9985 7.67513 
+56.33 37.1376 62.8624 253.095 26.6265 20.2785 277.324 15 7.67597 
+56.34 37.1292 62.8708 253.085 26.6308 20.2842 277.322 15.0014 7.67681 
+56.35 37.1208 62.8792 253.075 26.635 20.29 277.319 15.0029 7.67766 
+56.36 37.1124 62.8876 253.065 26.6393 20.2957 277.317 15.0044 7.6785 
+56.37 37.104 62.896 253.055 26.6436 20.3015 277.315 15.0058 7.67935 
+56.38 37.0956 62.9044 253.045 26.6479 20.3072 277.313 15.0073 7.68019 
+56.39 37.0872 62.9128 253.035 26.6522 20.313 277.31 15.0088 7.68104 
+56.4 37.0788 62.9212 253.025 26.6565 20.3187 277.308 15.0102 7.68188 
+56.41 37.0703 62.9297 253.015 26.6608 20.3245 277.306 15.0117 7.68273 
+56.42 37.0619 62.9381 253.005 26.6651 20.3302 277.303 15.0132 7.68358 
+56.43 37.0535 62.9465 252.995 26.6694 20.336 277.301 15.0147 7.68443 
+56.44 37.0451 62.9549 252.985 26.6737 20.3417 277.299 15.0161 7.68528 
+56.45 37.0367 62.9633 252.974 26.678 20.3475 277.296 15.0176 7.68613 
+56.46 37.0283 62.9717 252.964 26.6823 20.3533 277.294 15.0191 7.68698 
+56.47 37.0199 62.9801 252.954 26.6866 20.359 277.292 15.0206 7.68783 
+56.48 37.0115 62.9885 252.944 26.6909 20.3648 277.289 15.022 7.68869 
+56.49 37.0032 62.9968 252.934 26.6952 20.3705 277.287 15.0235 7.68954 
+56.5 36.9948 63.0052 252.924 26.6995 20.3763 277.285 15.025 7.69039 
+56.51 36.9864 63.0136 252.914 26.7039 20.3821 277.282 15.0265 7.69125 
+56.52 36.978 63.022 252.904 26.7082 20.3878 277.28 15.0279 7.6921 
+56.53 36.9696 63.0304 252.894 26.7125 20.3936 277.278 15.0294 7.69296 
+56.54 36.9612 63.0388 252.884 26.7168 20.3994 277.275 15.0309 7.69382 
+56.55 36.9528 63.0472 252.874 26.7211 20.4052 277.273 15.0324 7.69467 
+56.56 36.9444 63.0556 252.864 26.7254 20.4109 277.271 15.0339 7.69553 
+56.57 36.936 63.064 252.854 26.7297 20.4167 277.268 15.0353 7.69639 
+56.58 36.9276 63.0724 252.844 26.734 20.4225 277.266 15.0368 7.69725 
+56.59 36.9193 63.0807 252.833 26.7383 20.4283 277.264 15.0383 7.69811 
+56.6 36.9109 63.0891 252.823 26.7426 20.434 277.261 15.0398 7.69897 
+56.61 36.9025 63.0975 252.813 26.7469 20.4398 277.259 15.0413 7.69984 
+56.62 36.8941 63.1059 252.803 26.7512 20.4456 277.257 15.0427 7.7007 
+56.63 36.8857 63.1143 252.793 26.7555 20.4514 277.254 15.0442 7.70156 
+56.64 36.8774 63.1226 252.783 26.7598 20.4572 277.252 15.0457 7.70243 
+56.65 36.869 63.131 252.773 26.7641 20.463 277.25 15.0472 7.70329 
+56.66 36.8606 63.1394 252.763 26.7684 20.4687 277.247 15.0487 7.70416 
+56.67 36.8522 63.1478 252.753 26.7727 20.4745 277.245 15.0502 7.70502 
+56.68 36.8438 63.1562 252.743 26.777 20.4803 277.242 15.0516 7.70589 
+56.69 36.8355 63.1645 252.733 26.7813 20.4861 277.24 15.0531 7.70676 
+56.7 36.8271 63.1729 252.722 26.7856 20.4919 277.238 15.0546 7.70763 
+56.71 36.8187 63.1813 252.712 26.7899 20.4977 277.235 15.0561 7.7085 
+56.72 36.8104 63.1896 252.702 26.7943 20.5035 277.233 15.0576 7.70937 
+56.73 36.802 63.198 252.692 26.7986 20.5093 277.231 15.0591 7.71024 
+56.74 36.7936 63.2064 252.682 26.8029 20.5151 277.228 15.0606 7.71111 
+56.75 36.7853 63.2147 252.672 26.8072 20.5209 277.226 15.062 7.71198 
+56.76 36.7769 63.2231 252.662 26.8115 20.5267 277.224 15.0635 7.71286 
+56.77 36.7685 63.2315 252.652 26.8158 20.5325 277.221 15.065 7.71373 
+56.78 36.7602 63.2398 252.642 26.8201 20.5383 277.219 15.0665 7.7146 
+56.79 36.7518 63.2482 252.631 26.8244 20.5441 277.217 15.068 7.71548 
+56.8 36.7434 63.2566 252.621 26.8287 20.5499 277.214 15.0695 7.71635 
+56.81 36.7351 63.2649 252.611 26.833 20.5557 277.212 15.071 7.71723 
+56.82 36.7267 63.2733 252.601 26.8373 20.5615 277.209 15.0725 7.71811 
+56.83 36.7184 63.2816 252.591 26.8417 20.5673 277.207 15.074 7.71899 
+56.84 36.71 63.29 252.581 26.846 20.5731 277.205 15.0755 7.71987 
+56.85 36.7016 63.2984 252.571 26.8503 20.579 277.202 15.077 7.72074 
+56.86 36.6933 63.3067 252.561 26.8546 20.5848 277.2 15.0785 7.72163 
+56.87 36.6849 63.3151 252.551 26.8589 20.5906 277.198 15.08 7.72251 
+56.88 36.6766 63.3234 252.54 26.8632 20.5964 277.195 15.0815 7.72339 
+56.89 36.6682 63.3318 252.53 26.8675 20.6022 277.193 15.0829 7.72427 
+56.9 36.6599 63.3401 252.52 26.8718 20.6081 277.19 15.0844 7.72515 
+56.91 36.6515 63.3485 252.51 26.8761 20.6139 277.188 15.0859 7.72604 
+56.92 36.6432 63.3568 252.5 26.8805 20.6197 277.186 15.0874 7.72692 
+56.93 36.6348 63.3652 252.49 26.8848 20.6255 277.183 15.0889 7.72781 
+56.94 36.6265 63.3735 252.48 26.8891 20.6314 277.181 15.0904 7.72869 
+56.95 36.6181 63.3819 252.469 26.8934 20.6372 277.178 15.0919 7.72958 
+56.96 36.6098 63.3902 252.459 26.8977 20.643 277.176 15.0934 7.73047 
+56.97 36.6015 63.3985 252.449 26.902 20.6488 277.174 15.0949 7.73136 
+56.98 36.5931 63.4069 252.439 26.9063 20.6547 277.171 15.0964 7.73225 
+56.99 36.5848 63.4152 252.429 26.9107 20.6605 277.169 15.0979 7.73313 
+57 36.5764 63.4236 252.419 26.915 20.6663 277.167 15.0994 7.73403 
+57.01 36.5681 63.4319 252.409 26.9193 20.6722 277.164 15.1009 7.73492 
+57.02 36.5598 63.4402 252.398 26.9236 20.678 277.162 15.1024 7.73581 
+57.03 36.5514 63.4486 252.388 26.9279 20.6839 277.159 15.1039 7.7367 
+57.04 36.5431 63.4569 252.378 26.9322 20.6897 277.157 15.1055 7.73759 
+57.05 36.5348 63.4652 252.368 26.9365 20.6955 277.155 15.107 7.73849 
+57.06 36.5264 63.4736 252.358 26.9409 20.7014 277.152 15.1085 7.73938 
+57.07 36.5181 63.4819 252.348 26.9452 20.7072 277.15 15.11 7.74028 
+57.08 36.5098 63.4902 252.337 26.9495 20.7131 277.147 15.1115 7.74118 
+57.09 36.5014 63.4986 252.327 26.9538 20.7189 277.145 15.113 7.74207 
+57.1 36.4931 63.5069 252.317 26.9581 20.7248 277.143 15.1145 7.74297 
+57.11 36.4848 63.5152 252.307 26.9624 20.7306 277.14 15.116 7.74387 
+57.12 36.4764 63.5236 252.297 26.9668 20.7365 277.138 15.1175 7.74477 
+57.13 36.4681 63.5319 252.287 26.9711 20.7423 277.135 15.119 7.74567 
+57.14 36.4598 63.5402 252.276 26.9754 20.7482 277.133 15.1205 7.74657 
+57.15 36.4515 63.5485 252.266 26.9797 20.754 277.13 15.122 7.74747 
+57.16 36.4432 63.5568 252.256 26.984 20.7599 277.128 15.1235 7.74837 
+57.17 36.4348 63.5652 252.246 26.9884 20.7658 277.126 15.1251 7.74928 
+57.18 36.4265 63.5735 252.236 26.9927 20.7716 277.123 15.1266 7.75018 
+57.19 36.4182 63.5818 252.226 26.997 20.7775 277.121 15.1281 7.75108 
+57.2 36.4099 63.5901 252.215 27.0013 20.7833 277.118 15.1296 7.75199 
+57.21 36.4016 63.5984 252.205 27.0056 20.7892 277.116 15.1311 7.75289 
+57.22 36.3932 63.6068 252.195 27.0099 20.7951 277.114 15.1326 7.7538 
+57.23 36.3849 63.6151 252.185 27.0143 20.8009 277.111 15.1341 7.75471 
+57.24 36.3766 63.6234 252.175 27.0186 20.8068 277.109 15.1356 7.75562 
+57.25 36.3683 63.6317 252.164 27.0229 20.8127 277.106 15.1372 7.75653 
+57.26 36.36 63.64 252.154 27.0272 20.8185 277.104 15.1387 7.75743 
+57.27 36.3517 63.6483 252.144 27.0316 20.8244 277.101 15.1402 7.75835 
+57.28 36.3434 63.6566 252.134 27.0359 20.8303 277.099 15.1417 7.75926 
+57.29 36.3351 63.6649 252.124 27.0402 20.8362 277.097 15.1432 7.76017 
+57.3 36.3268 63.6732 252.113 27.0445 20.842 277.094 15.1447 7.76108 
+57.31 36.3185 63.6815 252.103 27.0488 20.8479 277.092 15.1463 7.76199 
+57.32 36.3102 63.6898 252.093 27.0532 20.8538 277.089 15.1478 7.76291 
+57.33 36.3019 63.6981 252.083 27.0575 20.8597 277.087 15.1493 7.76382 
+57.34 36.2936 63.7064 252.073 27.0618 20.8656 277.084 15.1508 7.76474 
+57.35 36.2853 63.7147 252.062 27.0661 20.8715 277.082 15.1523 7.76565 
+57.36 36.277 63.723 252.052 27.0705 20.8773 277.08 15.1539 7.76657 
+57.37 36.2687 63.7313 252.042 27.0748 20.8832 277.077 15.1554 7.76749 
+57.38 36.2604 63.7396 252.032 27.0791 20.8891 277.075 15.1569 7.76841 
+57.39 36.2521 63.7479 252.022 27.0834 20.895 277.072 15.1584 7.76933 
+57.4 36.2438 63.7562 252.011 27.0878 20.9009 277.07 15.16 7.77025 
+57.41 36.2355 63.7645 252.001 27.0921 20.9068 277.067 15.1615 7.77117 
+57.42 36.2272 63.7728 251.991 27.0964 20.9127 277.065 15.163 7.77209 
+57.43 36.2189 63.7811 251.981 27.1007 20.9186 277.062 15.1645 7.77301 
+57.44 36.2106 63.7894 251.97 27.1051 20.9245 277.06 15.166 7.77393 
+57.45 36.2023 63.7977 251.96 27.1094 20.9304 277.058 15.1676 7.77486 
+57.46 36.194 63.806 251.95 27.1137 20.9363 277.055 15.1691 7.77578 
+57.47 36.1857 63.8143 251.94 27.118 20.9422 277.053 15.1706 7.77671 
+57.48 36.1775 63.8225 251.93 27.1224 20.9481 277.05 15.1722 7.77763 
+57.49 36.1692 63.8308 251.919 27.1267 20.954 277.048 15.1737 7.77856 
+57.5 36.1609 63.8391 251.909 27.131 20.9599 277.045 15.1752 7.77949 
+57.51 36.1526 63.8474 251.899 27.1353 20.9658 277.043 15.1767 7.78041 
+57.52 36.1443 63.8557 251.889 27.1397 20.9717 277.04 15.1783 7.78134 
+57.53 36.136 63.864 251.878 27.144 20.9776 277.038 15.1798 7.78227 
+57.54 36.1278 63.8722 251.868 27.1483 20.9835 277.035 15.1813 7.7832 
+57.55 36.1195 63.8805 251.858 27.1526 20.9894 277.033 15.1829 7.78413 
+57.56 36.1112 63.8888 251.848 27.157 20.9954 277.031 15.1844 7.78506 
+57.57 36.1029 63.8971 251.837 27.1613 21.0013 277.028 15.1859 7.786 
+57.58 36.0947 63.9053 251.827 27.1656 21.0072 277.026 15.1875 7.78693 
+57.59 36.0864 63.9136 251.817 27.17 21.0131 277.023 15.189 7.78786 
+57.6 36.0781 63.9219 251.807 27.1743 21.019 277.021 15.1905 7.7888 
+57.61 36.0698 63.9302 251.796 27.1786 21.0249 277.018 15.1921 7.78973 
+57.62 36.0616 63.9384 251.786 27.183 21.0309 277.016 15.1936 7.79067 
+57.63 36.0533 63.9467 251.776 27.1873 21.0368 277.013 15.1951 7.79161 
+57.64 36.045 63.955 251.766 27.1916 21.0427 277.011 15.1967 7.79254 
+57.65 36.0368 63.9632 251.755 27.1959 21.0486 277.008 15.1982 7.79348 
+57.66 36.0285 63.9715 251.745 27.2003 21.0546 277.006 15.1997 7.79442 
+57.67 36.0202 63.9798 251.735 27.2046 21.0605 277.003 15.2013 7.79536 
+57.68 36.012 63.988 251.725 27.2089 21.0664 277.001 15.2028 7.7963 
+57.69 36.0037 63.9963 251.714 27.2133 21.0724 276.998 15.2044 7.79724 
+57.7 35.9955 64.0045 251.704 27.2176 21.0783 276.996 15.2059 7.79819 
+57.71 35.9872 64.0128 251.694 27.2219 21.0842 276.993 15.2074 7.79913 
+57.72 35.9789 64.0211 251.684 27.2263 21.0902 276.991 15.209 7.80007 
+57.73 35.9707 64.0293 251.673 27.2306 21.0961 276.988 15.2105 7.80102 
+57.74 35.9624 64.0376 251.663 27.2349 21.102 276.986 15.2121 7.80196 
+57.75 35.9542 64.0458 251.653 27.2393 21.108 276.983 15.2136 7.80291 
+57.76 35.9459 64.0541 251.642 27.2436 21.1139 276.981 15.2151 7.80385 
+57.77 35.9377 64.0623 251.632 27.2479 21.1199 276.979 15.2167 7.8048 
+57.78 35.9294 64.0706 251.622 27.2523 21.1258 276.976 15.2182 7.80575 
+57.79 35.9212 64.0788 251.612 27.2566 21.1318 276.974 15.2198 7.8067 
+57.8 35.9129 64.0871 251.601 27.2609 21.1377 276.971 15.2213 7.80765 
+57.81 35.9047 64.0953 251.591 27.2653 21.1437 276.969 15.2229 7.8086 
+57.82 35.8964 64.1036 251.581 27.2696 21.1496 276.966 15.2244 7.80955 
+57.83 35.8882 64.1118 251.571 27.2739 21.1556 276.964 15.2259 7.8105 
+57.84 35.8799 64.1201 251.56 27.2783 21.1615 276.961 15.2275 7.81145 
+57.85 35.8717 64.1283 251.55 27.2826 21.1675 276.959 15.229 7.81241 
+57.86 35.8634 64.1366 251.54 27.2869 21.1734 276.956 15.2306 7.81336 
+57.87 35.8552 64.1448 251.529 27.2913 21.1794 276.954 15.2321 7.81432 
+57.88 35.847 64.153 251.519 27.2956 21.1853 276.951 15.2337 7.81527 
+57.89 35.8387 64.1613 251.509 27.2999 21.1913 276.949 15.2352 7.81623 
+57.9 35.8305 64.1695 251.498 27.3043 21.1973 276.946 15.2368 7.81719 
+57.91 35.8223 64.1777 251.488 27.3086 21.2032 276.944 15.2383 7.81814 
+57.92 35.814 64.186 251.478 27.313 21.2092 276.941 15.2399 7.8191 
+57.93 35.8058 64.1942 251.468 27.3173 21.2151 276.939 15.2414 7.82006 
+57.94 35.7976 64.2024 251.457 27.3216 21.2211 276.936 15.243 7.82102 
+57.95 35.7893 64.2107 251.447 27.326 21.2271 276.933 15.2445 7.82198 
+57.96 35.7811 64.2189 251.437 27.3303 21.2331 276.931 15.2461 7.82294 
+57.97 35.7729 64.2271 251.426 27.3346 21.239 276.928 15.2476 7.82391 
+57.98 35.7646 64.2354 251.416 27.339 21.245 276.926 15.2492 7.82487 
+57.99 35.7564 64.2436 251.406 27.3433 21.251 276.923 15.2508 7.82583 
+58 35.7482 64.2518 251.395 27.3477 21.2569 276.921 15.2523 7.8268 
+58.01 35.74 64.26 251.385 27.352 21.2629 276.918 15.2539 7.82776 
+58.02 35.7317 64.2683 251.375 27.3563 21.2689 276.916 15.2554 7.82873 
+58.03 35.7235 64.2765 251.364 27.3607 21.2749 276.913 15.257 7.82969 
+58.04 35.7153 64.2847 251.354 27.365 21.2809 276.911 15.2585 7.83066 
+58.05 35.7071 64.2929 251.344 27.3694 21.2868 276.908 15.2601 7.83163 
+58.06 35.6988 64.3012 251.333 27.3737 21.2928 276.906 15.2617 7.8326 
+58.07 35.6906 64.3094 251.323 27.378 21.2988 276.903 15.2632 7.83357 
+58.08 35.6824 64.3176 251.313 27.3824 21.3048 276.901 15.2648 7.83454 
+58.09 35.6742 64.3258 251.302 27.3867 21.3108 276.898 15.2663 7.83551 
+58.1 35.666 64.334 251.292 27.3911 21.3168 276.896 15.2679 7.83648 
+58.11 35.6578 64.3422 251.282 27.3954 21.3228 276.893 15.2695 7.83746 
+58.12 35.6496 64.3504 251.271 27.3997 21.3288 276.891 15.271 7.83843 
+58.13 35.6413 64.3587 251.261 27.4041 21.3348 276.888 15.2726 7.8394 
+58.14 35.6331 64.3669 251.251 27.4084 21.3407 276.885 15.2741 7.84038 
+58.15 35.6249 64.3751 251.24 27.4128 21.3467 276.883 15.2757 7.84135 
+58.16 35.6167 64.3833 251.23 27.4171 21.3527 276.88 15.2773 7.84233 
+58.17 35.6085 64.3915 251.22 27.4215 21.3587 276.878 15.2788 7.84331 
+58.18 35.6003 64.3997 251.209 27.4258 21.3647 276.875 15.2804 7.84429 
+58.19 35.5921 64.4079 251.199 27.4301 21.3707 276.873 15.282 7.84527 
+58.2 35.5839 64.4161 251.189 27.4345 21.3767 276.87 15.2835 7.84624 
+58.21 35.5757 64.4243 251.178 27.4388 21.3828 276.868 15.2851 7.84722 
+58.22 35.5675 64.4325 251.168 27.4432 21.3888 276.865 15.2867 7.84821 
+58.23 35.5593 64.4407 251.158 27.4475 21.3948 276.863 15.2882 7.84919 
+58.24 35.5511 64.4489 251.147 27.4519 21.4008 276.86 15.2898 7.85017 
+58.25 35.5429 64.4571 251.137 27.4562 21.4068 276.857 15.2914 7.85115 
+58.26 35.5347 64.4653 251.127 27.4606 21.4128 276.855 15.2929 7.85214 
+58.27 35.5265 64.4735 251.116 27.4649 21.4188 276.852 15.2945 7.85312 
+58.28 35.5183 64.4817 251.106 27.4692 21.4248 276.85 15.2961 7.85411 
+58.29 35.5101 64.4899 251.096 27.4736 21.4308 276.847 15.2976 7.85509 
+58.3 35.5019 64.4981 251.085 27.4779 21.4369 276.845 15.2992 7.85608 
+58.31 35.4937 64.5063 251.075 27.4823 21.4429 276.842 15.3008 7.85707 
+58.32 35.4856 64.5144 251.064 27.4866 21.4489 276.84 15.3024 7.85806 
+58.33 35.4774 64.5226 251.054 27.491 21.4549 276.837 15.3039 7.85905 
+58.34 35.4692 64.5308 251.044 27.4953 21.4609 276.834 15.3055 7.86004 
+58.35 35.461 64.539 251.033 27.4997 21.467 276.832 15.3071 7.86103 
+58.36 35.4528 64.5472 251.023 27.504 21.473 276.829 15.3087 7.86202 
+58.37 35.4446 64.5554 251.013 27.5084 21.479 276.827 15.3102 7.86301 
+58.38 35.4365 64.5635 251.002 27.5127 21.485 276.824 15.3118 7.86401 
+58.39 35.4283 64.5717 250.992 27.5171 21.4911 276.822 15.3134 7.865 
+58.4 35.4201 64.5799 250.981 27.5214 21.4971 276.819 15.315 7.86599 
+58.41 35.4119 64.5881 250.971 27.5258 21.5031 276.816 15.3165 7.86699 
+58.42 35.4037 64.5963 250.961 27.5301 21.5092 276.814 15.3181 7.86799 
+58.43 35.3956 64.6044 250.95 27.5344 21.5152 276.811 15.3197 7.86898 
+58.44 35.3874 64.6126 250.94 27.5388 21.5212 276.809 15.3213 7.86998 
+58.45 35.3792 64.6208 250.93 27.5431 21.5273 276.806 15.3229 7.87098 
+58.46 35.371 64.629 250.919 27.5475 21.5333 276.804 15.3244 7.87198 
+58.47 35.3629 64.6371 250.909 27.5518 21.5394 276.801 15.326 7.87298 
+58.48 35.3547 64.6453 250.898 27.5562 21.5454 276.798 15.3276 7.87398 
+58.49 35.3465 64.6535 250.888 27.5605 21.5515 276.796 15.3292 7.87498 
+58.5 35.3384 64.6616 250.878 27.5649 21.5575 276.793 15.3308 7.87598 
+58.51 35.3302 64.6698 250.867 27.5692 21.5635 276.791 15.3323 7.87699 
+58.52 35.322 64.678 250.857 27.5736 21.5696 276.788 15.3339 7.87799 
+58.53 35.3139 64.6861 250.846 27.5779 21.5756 276.785 15.3355 7.87899 
+58.54 35.3057 64.6943 250.836 27.5823 21.5817 276.783 15.3371 7.88 
+58.55 35.2975 64.7025 250.826 27.5867 21.5877 276.78 15.3387 7.88101 
+58.56 35.2894 64.7106 250.815 27.591 21.5938 276.778 15.3403 7.88201 
+58.57 35.2812 64.7188 250.805 27.5954 21.5999 276.775 15.3418 7.88302 
+58.58 35.2731 64.7269 250.794 27.5997 21.6059 276.773 15.3434 7.88403 
+58.59 35.2649 64.7351 250.784 27.6041 21.612 276.77 15.345 7.88504 
+58.6 35.2567 64.7433 250.774 27.6084 21.618 276.767 15.3466 7.88605 
+58.61 35.2486 64.7514 250.763 27.6128 21.6241 276.765 15.3482 7.88706 
+58.62 35.2404 64.7596 250.753 27.6171 21.6302 276.762 15.3498 7.88807 
+58.63 35.2323 64.7677 250.742 27.6215 21.6362 276.76 15.3514 7.88908 
+58.64 35.2241 64.7759 250.732 27.6258 21.6423 276.757 15.353 7.89009 
+58.65 35.216 64.784 250.721 27.6302 21.6483 276.754 15.3546 7.89111 
+58.66 35.2078 64.7922 250.711 27.6345 21.6544 276.752 15.3561 7.89212 
+58.67 35.1997 64.8003 250.701 27.6389 21.6605 276.749 15.3577 7.89314 
+58.68 35.1915 64.8085 250.69 27.6432 21.6666 276.747 15.3593 7.89415 
+58.69 35.1834 64.8166 250.68 27.6476 21.6726 276.744 15.3609 7.89517 
+58.7 35.1753 64.8247 250.669 27.6519 21.6787 276.741 15.3625 7.89619 
+58.71 35.1671 64.8329 250.659 27.6563 21.6848 276.739 15.3641 7.89721 
+58.72 35.159 64.841 250.648 27.6607 21.6909 276.736 15.3657 7.89822 
+58.73 35.1508 64.8492 250.638 27.665 21.6969 276.733 15.3673 7.89924 
+58.74 35.1427 64.8573 250.628 27.6694 21.703 276.731 15.3689 7.90026 
+58.75 35.1346 64.8654 250.617 27.6737 21.7091 276.728 15.3705 7.90129 
+58.76 35.1264 64.8736 250.607 27.6781 21.7152 276.726 15.3721 7.90231 
+58.77 35.1183 64.8817 250.596 27.6824 21.7213 276.723 15.3737 7.90333 
+58.78 35.1101 64.8899 250.586 27.6868 21.7273 276.72 15.3753 7.90435 
+58.79 35.102 64.898 250.575 27.6912 21.7334 276.718 15.3769 7.90538 
+58.8 35.0939 64.9061 250.565 27.6955 21.7395 276.715 15.3785 7.9064 
+58.81 35.0857 64.9143 250.555 27.6999 21.7456 276.712 15.3801 7.90743 
+58.82 35.0776 64.9224 250.544 27.7042 21.7517 276.71 15.3817 7.90846 
+58.83 35.0695 64.9305 250.534 27.7086 21.7578 276.707 15.3833 7.90948 
+58.84 35.0614 64.9386 250.523 27.7129 21.7639 276.705 15.3849 7.91051 
+58.85 35.0532 64.9468 250.513 27.7173 21.77 276.702 15.3865 7.91154 
+58.86 35.0451 64.9549 250.502 27.7217 21.7761 276.699 15.3881 7.91257 
+58.87 35.037 64.963 250.492 27.726 21.7822 276.697 15.3897 7.9136 
+58.88 35.0289 64.9711 250.481 27.7304 21.7883 276.694 15.3913 7.91463 
+58.89 35.0207 64.9793 250.471 27.7347 21.7944 276.691 15.3929 7.91566 
+58.9 35.0126 64.9874 250.46 27.7391 21.8005 276.689 15.3945 7.9167 
+58.91 35.0045 64.9955 250.45 27.7435 21.8066 276.686 15.3961 7.91773 
+58.92 34.9964 65.0036 250.44 27.7478 21.8127 276.684 15.3977 7.91876 
+58.93 34.9883 65.0117 250.429 27.7522 21.8188 276.681 15.3993 7.9198 
+58.94 34.9802 65.0198 250.419 27.7565 21.8249 276.678 15.4009 7.92084 
+58.95 34.972 65.028 250.408 27.7609 21.831 276.676 15.4025 7.92187 
+58.96 34.9639 65.0361 250.398 27.7653 21.8371 276.673 15.4041 7.92291 
+58.97 34.9558 65.0442 250.387 27.7696 21.8432 276.67 15.4057 7.92395 
+58.98 34.9477 65.0523 250.377 27.774 21.8493 276.668 15.4073 7.92499 
+58.99 34.9396 65.0604 250.366 27.7783 21.8554 276.665 15.409 7.92603 
+59 34.9315 65.0685 250.356 27.7827 21.8615 276.662 15.4106 7.92707 
+59.01 34.9234 65.0766 250.345 27.7871 21.8677 276.66 15.4122 7.92811 
+59.02 34.9153 65.0847 250.335 27.7914 21.8738 276.657 15.4138 7.92915 
+59.03 34.9072 65.0928 250.324 27.7958 21.8799 276.654 15.4154 7.93019 
+59.04 34.8991 65.1009 250.314 27.8001 21.886 276.652 15.417 7.93124 
+59.05 34.891 65.109 250.303 27.8045 21.8921 276.649 15.4186 7.93228 
+59.06 34.8829 65.1171 250.293 27.8089 21.8983 276.646 15.4202 7.93333 
+59.07 34.8748 65.1252 250.282 27.8132 21.9044 276.644 15.4218 7.93437 
+59.08 34.8667 65.1333 250.272 27.8176 21.9105 276.641 15.4235 7.93542 
+59.09 34.8586 65.1414 250.261 27.822 21.9166 276.638 15.4251 7.93647 
+59.1 34.8505 65.1495 250.251 27.8263 21.9228 276.636 15.4267 7.93751 
+59.11 34.8424 65.1576 250.24 27.8307 21.9289 276.633 15.4283 7.93856 
+59.12 34.8343 65.1657 250.23 27.835 21.935 276.63 15.4299 7.93961 
+59.13 34.8262 65.1738 250.219 27.8394 21.9412 276.628 15.4315 7.94066 
+59.14 34.8181 65.1819 250.209 27.8438 21.9473 276.625 15.4332 7.94171 
+59.15 34.81 65.19 250.198 27.8481 21.9534 276.622 15.4348 7.94277 
+59.16 34.8019 65.1981 250.188 27.8525 21.9596 276.62 15.4364 7.94382 
+59.17 34.7938 65.2062 250.177 27.8569 21.9657 276.617 15.438 7.94487 
+59.18 34.7857 65.2143 250.167 27.8612 21.9719 276.614 15.4396 7.94593 
+59.19 34.7777 65.2223 250.156 27.8656 21.978 276.612 15.4412 7.94698 
+59.2 34.7696 65.2304 250.146 27.87 21.9841 276.609 15.4429 7.94804 
+59.21 34.7615 65.2385 250.135 27.8743 21.9903 276.606 15.4445 7.94909 
+59.22 34.7534 65.2466 250.125 27.8787 21.9964 276.604 15.4461 7.95015 
+59.23 34.7453 65.2547 250.114 27.8831 22.0026 276.601 15.4477 7.95121 
+59.24 34.7372 65.2628 250.104 27.8874 22.0087 276.598 15.4494 7.95227 
+59.25 34.7292 65.2708 250.093 27.8918 22.0149 276.596 15.451 7.95333 
+59.26 34.7211 65.2789 250.083 27.8962 22.021 276.593 15.4526 7.95439 
+59.27 34.713 65.287 250.072 27.9005 22.0272 276.59 15.4542 7.95545 
+59.28 34.7049 65.2951 250.062 27.9049 22.0333 276.588 15.4558 7.95651 
+59.29 34.6969 65.3031 250.051 27.9093 22.0395 276.585 15.4575 7.95757 
+59.3 34.6888 65.3112 250.041 27.9136 22.0456 276.582 15.4591 7.95864 
+59.31 34.6807 65.3193 250.03 27.918 22.0518 276.58 15.4607 7.9597 
+59.32 34.6727 65.3273 250.02 27.9224 22.058 276.577 15.4624 7.96077 
+59.33 34.6646 65.3354 250.009 27.9267 22.0641 276.574 15.464 7.96183 
+59.34 34.6565 65.3435 249.999 27.9311 22.0703 276.571 15.4656 7.9629 
+59.35 34.6485 65.3515 249.988 27.9355 22.0764 276.569 15.4672 7.96397 
+59.36 34.6404 65.3596 249.978 27.9398 22.0826 276.566 15.4689 7.96504 
+59.37 34.6323 65.3677 249.967 27.9442 22.0888 276.563 15.4705 7.96611 
+59.38 34.6243 65.3757 249.956 27.9486 22.0949 276.561 15.4721 7.96718 
+59.39 34.6162 65.3838 249.946 27.953 22.1011 276.558 15.4738 7.96825 
+59.4 34.6081 65.3919 249.935 27.9573 22.1073 276.555 15.4754 7.96932 
+59.41 34.6001 65.3999 249.925 27.9617 22.1135 276.553 15.477 7.97039 
+59.42 34.592 65.408 249.914 27.9661 22.1196 276.55 15.4787 7.97146 
+59.43 34.584 65.416 249.904 27.9704 22.1258 276.547 15.4803 7.97254 
+59.44 34.5759 65.4241 249.893 27.9748 22.132 276.544 15.4819 7.97361 
+59.45 34.5679 65.4321 249.883 27.9792 22.1382 276.542 15.4836 7.97469 
+59.46 34.5598 65.4402 249.872 27.9835 22.1443 276.539 15.4852 7.97576 
+59.47 34.5518 65.4482 249.862 27.9879 22.1505 276.536 15.4868 7.97684 
+59.48 34.5437 65.4563 249.851 27.9923 22.1567 276.534 15.4885 7.97792 
+59.49 34.5357 65.4643 249.84 27.9967 22.1629 276.531 15.4901 7.97899 
+59.5 34.5276 65.4724 249.83 28.001 22.1691 276.528 15.4917 7.98007 
+59.51 34.5196 65.4804 249.819 28.0054 22.1753 276.525 15.4934 7.98115 
+59.52 34.5115 65.4885 249.809 28.0098 22.1814 276.523 15.495 7.98223 
+59.53 34.5035 65.4965 249.798 28.0142 22.1876 276.52 15.4966 7.98332 
+59.54 34.4954 65.5046 249.788 28.0185 22.1938 276.517 15.4983 7.9844 
+59.55 34.4874 65.5126 249.777 28.0229 22.2 276.515 15.4999 7.98548 
+59.56 34.4793 65.5207 249.767 28.0273 22.2062 276.512 15.5016 7.98656 
+59.57 34.4713 65.5287 249.756 28.0316 22.2124 276.509 15.5032 7.98765 
+59.58 34.4633 65.5367 249.745 28.036 22.2186 276.506 15.5049 7.98873 
+59.59 34.4552 65.5448 249.735 28.0404 22.2248 276.504 15.5065 7.98982 
+59.6 34.4472 65.5528 249.724 28.0448 22.231 276.501 15.5081 7.99091 
+59.61 34.4392 65.5608 249.714 28.0491 22.2372 276.498 15.5098 7.992 
+59.62 34.4311 65.5689 249.703 28.0535 22.2434 276.495 15.5114 7.99308 
+59.63 34.4231 65.5769 249.693 28.0579 22.2496 276.493 15.5131 7.99417 
+59.64 34.4151 65.5849 249.682 28.0623 22.2558 276.49 15.5147 7.99526 
+59.65 34.407 65.593 249.671 28.0666 22.262 276.487 15.5164 7.99635 
+59.66 34.399 65.601 249.661 28.071 22.2682 276.485 15.518 7.99745 
+59.67 34.391 65.609 249.65 28.0754 22.2744 276.482 15.5196 7.99854 
+59.68 34.383 65.617 249.64 28.0798 22.2806 276.479 15.5213 7.99963 
+59.69 34.3749 65.6251 249.629 28.0841 22.2868 276.476 15.5229 8.00073 
+59.7 34.3669 65.6331 249.618 28.0885 22.293 276.474 15.5246 8.00182 
+59.71 34.3589 65.6411 249.608 28.0929 22.2993 276.471 15.5262 8.00292 
+59.72 34.3509 65.6491 249.597 28.0973 22.3055 276.468 15.5279 8.00401 
+59.73 34.3428 65.6572 249.587 28.1016 22.3117 276.465 15.5295 8.00511 
+59.74 34.3348 65.6652 249.576 28.106 22.3179 276.463 15.5312 8.00621 
+59.75 34.3268 65.6732 249.565 28.1104 22.3241 276.46 15.5328 8.00731 
+59.76 34.3188 65.6812 249.555 28.1148 22.3303 276.457 15.5345 8.0084 
+59.77 34.3108 65.6892 249.544 28.1192 22.3366 276.454 15.5361 8.0095 
+59.78 34.3028 65.6972 249.534 28.1235 22.3428 276.452 15.5378 8.01061 
+59.79 34.2948 65.7052 249.523 28.1279 22.349 276.449 15.5394 8.01171 
+59.8 34.2867 65.7133 249.512 28.1323 22.3552 276.446 15.5411 8.01281 
+59.81 34.2787 65.7213 249.502 28.1367 22.3615 276.443 15.5428 8.01391 
+59.82 34.2707 65.7293 249.491 28.141 22.3677 276.441 15.5444 8.01502 
+59.83 34.2627 65.7373 249.481 28.1454 22.3739 276.438 15.5461 8.01612 
+59.84 34.2547 65.7453 249.47 28.1498 22.3802 276.435 15.5477 8.01723 
+59.85 34.2467 65.7533 249.459 28.1542 22.3864 276.432 15.5494 8.01833 
+59.86 34.2387 65.7613 249.449 28.1586 22.3926 276.43 15.551 8.01944 
+59.87 34.2307 65.7693 249.438 28.1629 22.3989 276.427 15.5527 8.02055 
+59.88 34.2227 65.7773 249.428 28.1673 22.4051 276.424 15.5544 8.02166 
+59.89 34.2147 65.7853 249.417 28.1717 22.4113 276.421 15.556 8.02277 
+59.9 34.2067 65.7933 249.406 28.1761 22.4176 276.418 15.5577 8.02388 
+59.91 34.1987 65.8013 249.396 28.1805 22.4238 276.416 15.5593 8.02499 
+59.92 34.1907 65.8093 249.385 28.1848 22.4301 276.413 15.561 8.0261 
+59.93 34.1827 65.8173 249.374 28.1892 22.4363 276.41 15.5627 8.02722 
+59.94 34.1747 65.8253 249.364 28.1936 22.4426 276.407 15.5643 8.02833 
+59.95 34.1667 65.8333 249.353 28.198 22.4488 276.405 15.566 8.02944 
+59.96 34.1587 65.8413 249.343 28.2024 22.455 276.402 15.5676 8.03056 
+59.97 34.1507 65.8493 249.332 28.2068 22.4613 276.399 15.5693 8.03167 
+59.98 34.1428 65.8572 249.321 28.2111 22.4675 276.396 15.571 8.03279 
+59.99 34.1348 65.8652 249.311 28.2155 22.4738 276.393 15.5726 8.03391 
+60 34.1268 65.8732 249.3 28.2199 22.4801 276.391 15.5743 8.03503 
+60.01 34.1188 65.8812 249.289 28.2243 22.4863 276.388 15.576 8.03615 
+60.02 34.1108 65.8892 249.279 28.2287 22.4926 276.385 15.5776 8.03727 
+60.03 34.1028 65.8972 249.268 28.233 22.4988 276.382 15.5793 8.03839 
+60.04 34.0949 65.9051 249.257 28.2374 22.5051 276.38 15.581 8.03951 
+60.05 34.0869 65.9131 249.247 28.2418 22.5113 276.377 15.5826 8.04063 
+60.06 34.0789 65.9211 249.236 28.2462 22.5176 276.374 15.5843 8.04175 
+60.07 34.0709 65.9291 249.226 28.2506 22.5239 276.371 15.586 8.04288 
+60.08 34.0629 65.9371 249.215 28.255 22.5301 276.368 15.5876 8.044 
+60.09 34.055 65.945 249.204 28.2593 22.5364 276.366 15.5893 8.04513 
+60.1 34.047 65.953 249.194 28.2637 22.5427 276.363 15.591 8.04625 
+60.11 34.039 65.961 249.183 28.2681 22.5489 276.36 15.5926 8.04738 
+60.12 34.031 65.969 249.172 28.2725 22.5552 276.357 15.5943 8.04851 
+60.13 34.0231 65.9769 249.162 28.2769 22.5615 276.354 15.596 8.04964 
+60.14 34.0151 65.9849 249.151 28.2813 22.5678 276.352 15.5977 8.05077 
+60.15 34.0071 65.9929 249.14 28.2857 22.574 276.349 15.5993 8.0519 
+60.16 33.9992 66.0008 249.13 28.29 22.5803 276.346 15.601 8.05303 
+60.17 33.9912 66.0088 249.119 28.2944 22.5866 276.343 15.6027 8.05416 
+60.18 33.9832 66.0168 249.108 28.2988 22.5929 276.34 15.6044 8.05529 
+60.19 33.9753 66.0247 249.098 28.3032 22.5991 276.338 15.606 8.05642 
+60.2 33.9673 66.0327 249.087 28.3076 22.6054 276.335 15.6077 8.05756 
+60.21 33.9594 66.0406 249.076 28.312 22.6117 276.332 15.6094 8.05869 
+60.22 33.9514 66.0486 249.066 28.3164 22.618 276.329 15.6111 8.05983 
+60.23 33.9434 66.0566 249.055 28.3207 22.6243 276.326 15.6127 8.06097 
+60.24 33.9355 66.0645 249.044 28.3251 22.6306 276.323 15.6144 8.0621 
+60.25 33.9275 66.0725 249.034 28.3295 22.6368 276.321 15.6161 8.06324 
+60.26 33.9196 66.0804 249.023 28.3339 22.6431 276.318 15.6178 8.06438 
+60.27 33.9116 66.0884 249.012 28.3383 22.6494 276.315 15.6195 8.06552 
+60.28 33.9037 66.0963 249.002 28.3427 22.6557 276.312 15.6211 8.06666 
+60.29 33.8957 66.1043 248.991 28.3471 22.662 276.309 15.6228 8.0678 
+60.3 33.8878 66.1122 248.98 28.3515 22.6683 276.307 15.6245 8.06894 
+60.31 33.8798 66.1202 248.97 28.3558 22.6746 276.304 15.6262 8.07009 
+60.32 33.8719 66.1281 248.959 28.3602 22.6809 276.301 15.6279 8.07123 
+60.33 33.8639 66.1361 248.948 28.3646 22.6872 276.298 15.6295 8.07237 
+60.34 33.856 66.144 248.937 28.369 22.6935 276.295 15.6312 8.07352 
+60.35 33.8481 66.1519 248.927 28.3734 22.6998 276.292 15.6329 8.07467 
+60.36 33.8401 66.1599 248.916 28.3778 22.7061 276.29 15.6346 8.07581 
+60.37 33.8322 66.1678 248.905 28.3822 22.7124 276.287 15.6363 8.07696 
+60.38 33.8242 66.1758 248.895 28.3866 22.7187 276.284 15.638 8.07811 
+60.39 33.8163 66.1837 248.884 28.391 22.725 276.281 15.6397 8.07926 
+60.4 33.8084 66.1916 248.873 28.3953 22.7313 276.278 15.6413 8.08041 
+60.41 33.8004 66.1996 248.863 28.3997 22.7376 276.275 15.643 8.08156 
+60.42 33.7925 66.2075 248.852 28.4041 22.744 276.273 15.6447 8.08271 
+60.43 33.7846 66.2154 248.841 28.4085 22.7503 276.27 15.6464 8.08386 
+60.44 33.7766 66.2234 248.831 28.4129 22.7566 276.267 15.6481 8.08502 
+60.45 33.7687 66.2313 248.82 28.4173 22.7629 276.264 15.6498 8.08617 
+60.46 33.7608 66.2392 248.809 28.4217 22.7692 276.261 15.6515 8.08732 
+60.47 33.7528 66.2472 248.798 28.4261 22.7755 276.258 15.6532 8.08848 
+60.48 33.7449 66.2551 248.788 28.4305 22.7819 276.256 15.6549 8.08964 
+60.49 33.737 66.263 248.777 28.4349 22.7882 276.253 15.6566 8.09079 
+60.5 33.7291 66.2709 248.766 28.4393 22.7945 276.25 15.6582 8.09195 
+60.51 33.7211 66.2789 248.756 28.4436 22.8008 276.247 15.6599 8.09311 
+60.52 33.7132 66.2868 248.745 28.448 22.8071 276.244 15.6616 8.09427 
+60.53 33.7053 66.2947 248.734 28.4524 22.8135 276.241 15.6633 8.09543 
+60.54 33.6974 66.3026 248.723 28.4568 22.8198 276.238 15.665 8.09659 
+60.55 33.6895 66.3105 248.713 28.4612 22.8261 276.236 15.6667 8.09775 
+60.56 33.6816 66.3184 248.702 28.4656 22.8325 276.233 15.6684 8.09892 
+60.57 33.6736 66.3264 248.691 28.47 22.8388 276.23 15.6701 8.10008 
+60.58 33.6657 66.3343 248.68 28.4744 22.8451 276.227 15.6718 8.10124 
+60.59 33.6578 66.3422 248.67 28.4788 22.8515 276.224 15.6735 8.10241 
+60.6 33.6499 66.3501 248.659 28.4832 22.8578 276.221 15.6752 8.10358 
+60.61 33.642 66.358 248.648 28.4876 22.8641 276.218 15.6769 8.10474 
+60.62 33.6341 66.3659 248.638 28.492 22.8705 276.215 15.6786 8.10591 
+60.63 33.6262 66.3738 248.627 28.4964 22.8768 276.213 15.6803 8.10708 
+60.64 33.6183 66.3817 248.616 28.5008 22.8832 276.21 15.682 8.10825 
+60.65 33.6104 66.3896 248.605 28.5052 22.8895 276.207 15.6837 8.10942 
+60.66 33.6025 66.3975 248.595 28.5096 22.8958 276.204 15.6854 8.11059 
+60.67 33.5946 66.4054 248.584 28.5139 22.9022 276.201 15.6871 8.11176 
+60.68 33.5867 66.4133 248.573 28.5183 22.9085 276.198 15.6888 8.11293 
+60.69 33.5788 66.4212 248.562 28.5227 22.9149 276.195 15.6905 8.11411 
+60.7 33.5709 66.4291 248.552 28.5271 22.9212 276.193 15.6922 8.11528 
+60.71 33.563 66.437 248.541 28.5315 22.9276 276.19 15.6939 8.11645 
+60.72 33.5551 66.4449 248.53 28.5359 22.9339 276.187 15.6956 8.11763 
+60.73 33.5472 66.4528 248.519 28.5403 22.9403 276.184 15.6973 8.11881 
+60.74 33.5393 66.4607 248.509 28.5447 22.9467 276.181 15.699 8.11998 
+60.75 33.5314 66.4686 248.498 28.5491 22.953 276.178 15.7007 8.12116 
+60.76 33.5235 66.4765 248.487 28.5535 22.9594 276.175 15.7025 8.12234 
+60.77 33.5156 66.4844 248.476 28.5579 22.9657 276.172 15.7042 8.12352 
+60.78 33.5077 66.4923 248.466 28.5623 22.9721 276.169 15.7059 8.1247 
+60.79 33.4998 66.5002 248.455 28.5667 22.9785 276.167 15.7076 8.12588 
+60.8 33.4919 66.5081 248.444 28.5711 22.9848 276.164 15.7093 8.12706 
+60.81 33.4841 66.5159 248.433 28.5755 22.9912 276.161 15.711 8.12825 
+60.82 33.4762 66.5238 248.423 28.5799 22.9976 276.158 15.7127 8.12943 
+60.83 33.4683 66.5317 248.412 28.5843 23.0039 276.155 15.7144 8.13061 
+60.84 33.4604 66.5396 248.401 28.5887 23.0103 276.152 15.7161 8.1318 
+60.85 33.4525 66.5475 248.39 28.5931 23.0167 276.149 15.7178 8.13299 
+60.86 33.4447 66.5553 248.379 28.5975 23.023 276.146 15.7196 8.13417 
+60.87 33.4368 66.5632 248.369 28.6019 23.0294 276.143 15.7213 8.13536 
+60.88 33.4289 66.5711 248.358 28.6063 23.0358 276.14 15.723 8.13655 
+60.89 33.421 66.579 248.347 28.6107 23.0422 276.138 15.7247 8.13774 
+60.9 33.4132 66.5868 248.336 28.6151 23.0485 276.135 15.7264 8.13893 
+60.91 33.4053 66.5947 248.326 28.6195 23.0549 276.132 15.7281 8.14012 
+60.92 33.3974 66.6026 248.315 28.6239 23.0613 276.129 15.7299 8.14131 
+60.93 33.3895 66.6105 248.304 28.6283 23.0677 276.126 15.7316 8.1425 
+60.94 33.3817 66.6183 248.293 28.6327 23.0741 276.123 15.7333 8.1437 
+60.95 33.3738 66.6262 248.282 28.6371 23.0804 276.12 15.735 8.14489 
+60.96 33.366 66.634 248.272 28.6415 23.0868 276.117 15.7367 8.14608 
+60.97 33.3581 66.6419 248.261 28.6459 23.0932 276.114 15.7384 8.14728 
+60.98 33.3502 66.6498 248.25 28.6503 23.0996 276.111 15.7402 8.14848 
+60.99 33.3424 66.6576 248.239 28.6547 23.106 276.108 15.7419 8.14967 
+61 33.3345 66.6655 248.229 28.6591 23.1124 276.106 15.7436 8.15087 
+61.01 33.3266 66.6734 248.218 28.6635 23.1188 276.103 15.7453 8.15207 
+61.02 33.3188 66.6812 248.207 28.6679 23.1252 276.1 15.747 8.15327 
+61.03 33.3109 66.6891 248.196 28.6723 23.1316 276.097 15.7488 8.15447 
+61.04 33.3031 66.6969 248.185 28.6767 23.138 276.094 15.7505 8.15567 
+61.05 33.2952 66.7048 248.175 28.6811 23.1444 276.091 15.7522 8.15688 
+61.06 33.2874 66.7126 248.164 28.6855 23.1508 276.088 15.7539 8.15808 
+61.07 33.2795 66.7205 248.153 28.6899 23.1572 276.085 15.7557 8.15928 
+61.08 33.2717 66.7283 248.142 28.6943 23.1636 276.082 15.7574 8.16049 
+61.09 33.2638 66.7362 248.131 28.6987 23.17 276.079 15.7591 8.16169 
+61.1 33.256 66.744 248.121 28.7031 23.1764 276.076 15.7608 8.1629 
+61.11 33.2481 66.7519 248.11 28.7075 23.1828 276.073 15.7626 8.16411 
+61.12 33.2403 66.7597 248.099 28.7119 23.1892 276.07 15.7643 8.16531 
+61.13 33.2324 66.7676 248.088 28.7163 23.1956 276.067 15.766 8.16652 
+61.14 33.2246 66.7754 248.077 28.7207 23.202 276.065 15.7678 8.16773 
+61.15 33.2168 66.7832 248.066 28.7251 23.2084 276.062 15.7695 8.16894 
+61.16 33.2089 66.7911 248.056 28.7295 23.2148 276.059 15.7712 8.17015 
+61.17 33.2011 66.7989 248.045 28.7339 23.2212 276.056 15.7729 8.17136 
+61.18 33.1932 66.8068 248.034 28.7383 23.2277 276.053 15.7747 8.17258 
+61.19 33.1854 66.8146 248.023 28.7427 23.2341 276.05 15.7764 8.17379 
+61.2 33.1776 66.8224 248.012 28.7472 23.2405 276.047 15.7781 8.17501 
+61.21 33.1697 66.8303 248.002 28.7516 23.2469 276.044 15.7799 8.17622 
+61.22 33.1619 66.8381 247.991 28.756 23.2533 276.041 15.7816 8.17744 
+61.23 33.1541 66.8459 247.98 28.7604 23.2598 276.038 15.7833 8.17865 
+61.24 33.1462 66.8538 247.969 28.7648 23.2662 276.035 15.7851 8.17987 
+61.25 33.1384 66.8616 247.958 28.7692 23.2726 276.032 15.7868 8.18109 
+61.26 33.1306 66.8694 247.947 28.7736 23.279 276.029 15.7886 8.18231 
+61.27 33.1228 66.8772 247.937 28.778 23.2855 276.026 15.7903 8.18353 
+61.28 33.1149 66.8851 247.926 28.7824 23.2919 276.023 15.792 8.18475 
+61.29 33.1071 66.8929 247.915 28.7868 23.2983 276.02 15.7938 8.18597 
+61.3 33.0993 66.9007 247.904 28.7912 23.3048 276.017 15.7955 8.18719 
+61.31 33.0915 66.9085 247.893 28.7956 23.3112 276.014 15.7972 8.18842 
+61.32 33.0837 66.9163 247.882 28.8 23.3176 276.011 15.799 8.18964 
+61.33 33.0758 66.9242 247.871 28.8044 23.3241 276.008 15.8007 8.19087 
+61.34 33.068 66.932 247.861 28.8088 23.3305 276.005 15.8025 8.19209 
+61.35 33.0602 66.9398 247.85 28.8132 23.3369 276.002 15.8042 8.19332 
+61.36 33.0524 66.9476 247.839 28.8177 23.3434 276 15.8059 8.19455 
+61.37 33.0446 66.9554 247.828 28.8221 23.3498 275.997 15.8077 8.19577 
+61.38 33.0368 66.9632 247.817 28.8265 23.3563 275.994 15.8094 8.197 
+61.39 33.029 66.971 247.806 28.8309 23.3627 275.991 15.8112 8.19823 
+61.4 33.0212 66.9788 247.796 28.8353 23.3692 275.988 15.8129 8.19946 
+61.41 33.0134 66.9866 247.785 28.8397 23.3756 275.985 15.8147 8.20069 
+61.42 33.0055 66.9945 247.774 28.8441 23.3821 275.982 15.8164 8.20193 
+61.43 32.9977 67.0023 247.763 28.8485 23.3885 275.979 15.8181 8.20316 
+61.44 32.9899 67.0101 247.752 28.8529 23.395 275.976 15.8199 8.20439 
+61.45 32.9821 67.0179 247.741 28.8573 23.4014 275.973 15.8216 8.20563 
+61.46 32.9743 67.0257 247.73 28.8617 23.4079 275.97 15.8234 8.20686 
+61.47 32.9665 67.0335 247.72 28.8662 23.4143 275.967 15.8251 8.2081 
+61.48 32.9587 67.0413 247.709 28.8706 23.4208 275.964 15.8269 8.20934 
+61.49 32.9509 67.0491 247.698 28.875 23.4272 275.961 15.8286 8.21058 
+61.5 32.9431 67.0569 247.687 28.8794 23.4337 275.958 15.8304 8.21181 
+61.51 32.9354 67.0646 247.676 28.8838 23.4402 275.955 15.8321 8.21305 
+61.52 32.9276 67.0724 247.665 28.8882 23.4466 275.952 15.8339 8.21429 
+61.53 32.9198 67.0802 247.654 28.8926 23.4531 275.949 15.8356 8.21554 
+61.54 32.912 67.088 247.643 28.897 23.4596 275.946 15.8374 8.21678 
+61.55 32.9042 67.0958 247.633 28.9014 23.466 275.943 15.8391 8.21802 
+61.56 32.8964 67.1036 247.622 28.9058 23.4725 275.94 15.8409 8.21926 
+61.57 32.8886 67.1114 247.611 28.9103 23.479 275.937 15.8426 8.22051 
+61.58 32.8808 67.1192 247.6 28.9147 23.4854 275.934 15.8444 8.22175 
+61.59 32.873 67.127 247.589 28.9191 23.4919 275.931 15.8462 8.223 
+61.6 32.8653 67.1347 247.578 28.9235 23.4984 275.928 15.8479 8.22425 
+61.61 32.8575 67.1425 247.567 28.9279 23.5049 275.925 15.8497 8.2255 
+61.62 32.8497 67.1503 247.556 28.9323 23.5113 275.922 15.8514 8.22674 
+61.63 32.8419 67.1581 247.545 28.9367 23.5178 275.919 15.8532 8.22799 
+61.64 32.8341 67.1659 247.535 28.9411 23.5243 275.916 15.8549 8.22924 
+61.65 32.8264 67.1736 247.524 28.9456 23.5308 275.913 15.8567 8.2305 
+61.66 32.8186 67.1814 247.513 28.95 23.5372 275.91 15.8585 8.23175 
+61.67 32.8108 67.1892 247.502 28.9544 23.5437 275.907 15.8602 8.233 
+61.68 32.8031 67.1969 247.491 28.9588 23.5502 275.904 15.862 8.23425 
+61.69 32.7953 67.2047 247.48 28.9632 23.5567 275.901 15.8637 8.23551 
+61.7 32.7875 67.2125 247.469 28.9676 23.5632 275.898 15.8655 8.23676 
+61.71 32.7797 67.2203 247.458 28.972 23.5697 275.895 15.8673 8.23802 
+61.72 32.772 67.228 247.447 28.9764 23.5762 275.892 15.869 8.23928 
+61.73 32.7642 67.2358 247.436 28.9809 23.5827 275.889 15.8708 8.24053 
+61.74 32.7564 67.2436 247.426 28.9853 23.5891 275.886 15.8725 8.24179 
+61.75 32.7487 67.2513 247.415 28.9897 23.5956 275.883 15.8743 8.24305 
+61.76 32.7409 67.2591 247.404 28.9941 23.6021 275.88 15.8761 8.24431 
+61.77 32.7332 67.2668 247.393 28.9985 23.6086 275.877 15.8778 8.24557 
+61.78 32.7254 67.2746 247.382 29.0029 23.6151 275.874 15.8796 8.24683 
+61.79 32.7176 67.2824 247.371 29.0074 23.6216 275.871 15.8814 8.2481 
+61.8 32.7099 67.2901 247.36 29.0118 23.6281 275.868 15.8831 8.24936 
+61.81 32.7021 67.2979 247.349 29.0162 23.6346 275.864 15.8849 8.25062 
+61.82 32.6944 67.3056 247.338 29.0206 23.6411 275.861 15.8867 8.25189 
+61.83 32.6866 67.3134 247.327 29.025 23.6476 275.858 15.8884 8.25316 
+61.84 32.6789 67.3211 247.316 29.0294 23.6542 275.855 15.8902 8.25442 
+61.85 32.6711 67.3289 247.305 29.0338 23.6607 275.852 15.892 8.25569 
+61.86 32.6634 67.3366 247.295 29.0383 23.6672 275.849 15.8937 8.25696 
+61.87 32.6556 67.3444 247.284 29.0427 23.6737 275.846 15.8955 8.25823 
+61.88 32.6479 67.3521 247.273 29.0471 23.6802 275.843 15.8973 8.2595 
+61.89 32.6401 67.3599 247.262 29.0515 23.6867 275.84 15.8991 8.26077 
+61.9 32.6324 67.3676 247.251 29.0559 23.6932 275.837 15.9008 8.26204 
+61.91 32.6247 67.3753 247.24 29.0603 23.6997 275.834 15.9026 8.26331 
+61.92 32.6169 67.3831 247.229 29.0648 23.7063 275.831 15.9044 8.26459 
+61.93 32.6092 67.3908 247.218 29.0692 23.7128 275.828 15.9062 8.26586 
+61.94 32.6014 67.3986 247.207 29.0736 23.7193 275.825 15.9079 8.26714 
+61.95 32.5937 67.4063 247.196 29.078 23.7258 275.822 15.9097 8.26841 
+61.96 32.586 67.414 247.185 29.0824 23.7323 275.819 15.9115 8.26969 
+61.97 32.5782 67.4218 247.174 29.0869 23.7389 275.816 15.9133 8.27097 
+61.98 32.5705 67.4295 247.163 29.0913 23.7454 275.813 15.915 8.27224 
+61.99 32.5628 67.4372 247.152 29.0957 23.7519 275.81 15.9168 8.27352 
+62 32.555 67.445 247.141 29.1001 23.7584 275.807 15.9186 8.2748 
+62.01 32.5473 67.4527 247.131 29.1045 23.765 275.804 15.9204 8.27608 
+62.02 32.5396 67.4604 247.12 29.1089 23.7715 275.8 15.9222 8.27737 
+62.03 32.5319 67.4681 247.109 29.1134 23.778 275.797 15.9239 8.27865 
+62.04 32.5241 67.4759 247.098 29.1178 23.7846 275.794 15.9257 8.27993 
+62.05 32.5164 67.4836 247.087 29.1222 23.7911 275.791 15.9275 8.28122 
+62.06 32.5087 67.4913 247.076 29.1266 23.7976 275.788 15.9293 8.2825 
+62.07 32.501 67.499 247.065 29.131 23.8042 275.785 15.9311 8.28379 
+62.08 32.4933 67.5067 247.054 29.1355 23.8107 275.782 15.9328 8.28507 
+62.09 32.4855 67.5145 247.043 29.1399 23.8173 275.779 15.9346 8.28636 
+62.1 32.4778 67.5222 247.032 29.1443 23.8238 275.776 15.9364 8.28765 
+62.11 32.4701 67.5299 247.021 29.1487 23.8303 275.773 15.9382 8.28894 
+62.12 32.4624 67.5376 247.01 29.1531 23.8369 275.77 15.94 8.29023 
+62.13 32.4547 67.5453 246.999 29.1576 23.8434 275.767 15.9418 8.29152 
+62.14 32.447 67.553 246.988 29.162 23.85 275.764 15.9435 8.29281 
+62.15 32.4393 67.5607 246.977 29.1664 23.8565 275.761 15.9453 8.2941 
+62.16 32.4315 67.5685 246.966 29.1708 23.8631 275.757 15.9471 8.2954 
+62.17 32.4238 67.5762 246.955 29.1752 23.8696 275.754 15.9489 8.29669 
+62.18 32.4161 67.5839 246.944 29.1797 23.8762 275.751 15.9507 8.29798 
+62.19 32.4084 67.5916 246.933 29.1841 23.8827 275.748 15.9525 8.29928 
+62.2 32.4007 67.5993 246.922 29.1885 23.8893 275.745 15.9543 8.30058 
+62.21 32.393 67.607 246.911 29.1929 23.8958 275.742 15.9561 8.30187 
+62.22 32.3853 67.6147 246.9 29.1974 23.9024 275.739 15.9579 8.30317 
+62.23 32.3776 67.6224 246.889 29.2018 23.909 275.736 15.9597 8.30447 
+62.24 32.3699 67.6301 246.878 29.2062 23.9155 275.733 15.9614 8.30577 
+62.25 32.3622 67.6378 246.867 29.2106 23.9221 275.73 15.9632 8.30707 
+62.26 32.3545 67.6455 246.856 29.215 23.9286 275.727 15.965 8.30837 
+62.27 32.3468 67.6532 246.845 29.2195 23.9352 275.723 15.9668 8.30968 
+62.28 32.3391 67.6609 246.834 29.2239 23.9418 275.72 15.9686 8.31098 
+62.29 32.3315 67.6685 246.823 29.2283 23.9483 275.717 15.9704 8.31228 
+62.3 32.3238 67.6762 246.812 29.2327 23.9549 275.714 15.9722 8.31359 
+62.31 32.3161 67.6839 246.801 29.2372 23.9615 275.711 15.974 8.31489 
+62.32 32.3084 67.6916 246.79 29.2416 23.9681 275.708 15.9758 8.3162 
+62.33 32.3007 67.6993 246.779 29.246 23.9746 275.705 15.9776 8.31751 
+62.34 32.293 67.707 246.768 29.2504 23.9812 275.702 15.9794 8.31882 
+62.35 32.2853 67.7147 246.757 29.2549 23.9878 275.699 15.9812 8.32013 
+62.36 32.2777 67.7223 246.746 29.2593 23.9944 275.696 15.983 8.32144 
+62.37 32.27 67.73 246.735 29.2637 24.0009 275.692 15.9848 8.32275 
+62.38 32.2623 67.7377 246.724 29.2681 24.0075 275.689 15.9866 8.32406 
+62.39 32.2546 67.7454 246.713 29.2726 24.0141 275.686 15.9884 8.32537 
+62.4 32.2469 67.7531 246.702 29.277 24.0207 275.683 15.9902 8.32668 
+62.41 32.2393 67.7607 246.691 29.2814 24.0273 275.68 15.992 8.328 
+62.42 32.2316 67.7684 246.68 29.2858 24.0338 275.677 15.9938 8.32931 
+62.43 32.2239 67.7761 246.669 29.2903 24.0404 275.674 15.9956 8.33063 
+62.44 32.2162 67.7838 246.658 29.2947 24.047 275.671 15.9974 8.33195 
+62.45 32.2086 67.7914 246.647 29.2991 24.0536 275.668 15.9992 8.33326 
+62.46 32.2009 67.7991 246.636 29.3035 24.0602 275.664 16.001 8.33458 
+62.47 32.1932 67.8068 246.625 29.308 24.0668 275.661 16.0028 8.3359 
+62.48 32.1856 67.8144 246.614 29.3124 24.0734 275.658 16.0046 8.33722 
+62.49 32.1779 67.8221 246.603 29.3168 24.08 275.655 16.0064 8.33854 
+62.5 32.1702 67.8298 246.592 29.3212 24.0866 275.652 16.0082 8.33986 
+62.51 32.1626 67.8374 246.581 29.3257 24.0932 275.649 16.0101 8.34119 
+62.52 32.1549 67.8451 246.57 29.3301 24.0998 275.646 16.0119 8.34251 
+62.53 32.1473 67.8527 246.559 29.3345 24.1064 275.642 16.0137 8.34383 
+62.54 32.1396 67.8604 246.548 29.339 24.113 275.639 16.0155 8.34516 
+62.55 32.1319 67.8681 246.537 29.3434 24.1196 275.636 16.0173 8.34648 
+62.56 32.1243 67.8757 246.526 29.3478 24.1262 275.633 16.0191 8.34781 
+62.57 32.1166 67.8834 246.515 29.3522 24.1328 275.63 16.0209 8.34914 
+62.58 32.109 67.891 246.504 29.3567 24.1394 275.627 16.0227 8.35047 
+62.59 32.1013 67.8987 246.493 29.3611 24.146 275.624 16.0245 8.3518 
+62.6 32.0937 67.9063 246.482 29.3655 24.1526 275.621 16.0263 8.35313 
+62.61 32.086 67.914 246.471 29.3699 24.1592 275.617 16.0282 8.35446 
+62.62 32.0784 67.9216 246.46 29.3744 24.1658 275.614 16.03 8.35579 
+62.63 32.0707 67.9293 246.449 29.3788 24.1724 275.611 16.0318 8.35712 
+62.64 32.0631 67.9369 246.438 29.3832 24.1791 275.608 16.0336 8.35846 
+62.65 32.0555 67.9445 246.427 29.3877 24.1857 275.605 16.0354 8.35979 
+62.66 32.0478 67.9522 246.416 29.3921 24.1923 275.602 16.0372 8.36113 
+62.67 32.0402 67.9598 246.405 29.3965 24.1989 275.598 16.0391 8.36246 
+62.68 32.0325 67.9675 246.394 29.401 24.2055 275.595 16.0409 8.3638 
+62.69 32.0249 67.9751 246.382 29.4054 24.2122 275.592 16.0427 8.36514 
+62.7 32.0173 67.9827 246.371 29.4098 24.2188 275.589 16.0445 8.36647 
+62.71 32.0096 67.9904 246.36 29.4142 24.2254 275.586 16.0463 8.36781 
+62.72 32.002 67.998 246.349 29.4187 24.232 275.583 16.0481 8.36915 
+62.73 31.9944 68.0056 246.338 29.4231 24.2387 275.58 16.05 8.37049 
+62.74 31.9867 68.0133 246.327 29.4275 24.2453 275.576 16.0518 8.37184 
+62.75 31.9791 68.0209 246.316 29.432 24.2519 275.573 16.0536 8.37318 
+62.76 31.9715 68.0285 246.305 29.4364 24.2585 275.57 16.0554 8.37452 
+62.77 31.9638 68.0362 246.294 29.4408 24.2652 275.567 16.0573 8.37587 
+62.78 31.9562 68.0438 246.283 29.4453 24.2718 275.564 16.0591 8.37721 
+62.79 31.9486 68.0514 246.272 29.4497 24.2784 275.561 16.0609 8.37856 
+62.8 31.941 68.059 246.261 29.4541 24.2851 275.557 16.0627 8.37991 
+62.81 31.9334 68.0666 246.25 29.4585 24.2917 275.554 16.0646 8.38125 
+62.82 31.9257 68.0743 246.239 29.463 24.2984 275.551 16.0664 8.3826 
+62.83 31.9181 68.0819 246.228 29.4674 24.305 275.548 16.0682 8.38395 
+62.84 31.9105 68.0895 246.217 29.4718 24.3116 275.545 16.07 8.3853 
+62.85 31.9029 68.0971 246.205 29.4763 24.3183 275.541 16.0719 8.38665 
+62.86 31.8953 68.1047 246.194 29.4807 24.3249 275.538 16.0737 8.388 
+62.87 31.8876 68.1124 246.183 29.4851 24.3316 275.535 16.0755 8.38936 
+62.88 31.88 68.12 246.172 29.4896 24.3382 275.532 16.0773 8.39071 
+62.89 31.8724 68.1276 246.161 29.494 24.3449 275.529 16.0792 8.39207 
+62.9 31.8648 68.1352 246.15 29.4984 24.3515 275.526 16.081 8.39342 
+62.91 31.8572 68.1428 246.139 29.5029 24.3582 275.522 16.0828 8.39478 
+62.92 31.8496 68.1504 246.128 29.5073 24.3648 275.519 16.0847 8.39613 
+62.93 31.842 68.158 246.117 29.5117 24.3715 275.516 16.0865 8.39749 
+62.94 31.8344 68.1656 246.106 29.5162 24.3781 275.513 16.0883 8.39885 
+62.95 31.8268 68.1732 246.095 29.5206 24.3848 275.51 16.0902 8.40021 
+62.96 31.8192 68.1808 246.084 29.525 24.3914 275.506 16.092 8.40157 
+62.97 31.8116 68.1884 246.072 29.5295 24.3981 275.503 16.0938 8.40293 
+62.98 31.804 68.196 246.061 29.5339 24.4048 275.5 16.0957 8.4043 
+62.99 31.7964 68.2036 246.05 29.5383 24.4114 275.497 16.0975 8.40566 
+63 31.7888 68.2112 246.039 29.5428 24.4181 275.494 16.0993 8.40702 
+63.01 31.7812 68.2188 246.028 29.5472 24.4248 275.49 16.1012 8.40839 
+63.02 31.7736 68.2264 246.017 29.5516 24.4314 275.487 16.103 8.40975 
+63.03 31.766 68.234 246.006 29.5561 24.4381 275.484 16.1049 8.41112 
+63.04 31.7584 68.2416 245.995 29.5605 24.4448 275.481 16.1067 8.41249 
+63.05 31.7508 68.2492 245.984 29.5649 24.4514 275.478 16.1085 8.41385 
+63.06 31.7433 68.2567 245.973 29.5694 24.4581 275.474 16.1104 8.41522 
+63.07 31.7357 68.2643 245.961 29.5738 24.4648 275.471 16.1122 8.41659 
+63.08 31.7281 68.2719 245.95 29.5783 24.4715 275.468 16.1141 8.41796 
+63.09 31.7205 68.2795 245.939 29.5827 24.4781 275.465 16.1159 8.41934 
+63.1 31.7129 68.2871 245.928 29.5871 24.4848 275.462 16.1177 8.42071 
+63.11 31.7053 68.2947 245.917 29.5916 24.4915 275.458 16.1196 8.42208 
+63.12 31.6978 68.3022 245.906 29.596 24.4982 275.455 16.1214 8.42346 
+63.13 31.6902 68.3098 245.895 29.6004 24.5048 275.452 16.1233 8.42483 
+63.14 31.6826 68.3174 245.884 29.6049 24.5115 275.449 16.1251 8.42621 
+63.15 31.675 68.325 245.872 29.6093 24.5182 275.445 16.127 8.42758 
+63.16 31.6675 68.3325 245.861 29.6137 24.5249 275.442 16.1288 8.42896 
+63.17 31.6599 68.3401 245.85 29.6182 24.5316 275.439 16.1307 8.43034 
+63.18 31.6523 68.3477 245.839 29.6226 24.5383 275.436 16.1325 8.43172 
+63.19 31.6447 68.3553 245.828 29.6271 24.545 275.433 16.1343 8.4331 
+63.2 31.6372 68.3628 245.817 29.6315 24.5516 275.429 16.1362 8.43448 
+63.21 31.6296 68.3704 245.806 29.6359 24.5583 275.426 16.138 8.43586 
+63.22 31.622 68.378 245.795 29.6404 24.565 275.423 16.1399 8.43724 
+63.23 31.6145 68.3855 245.783 29.6448 24.5717 275.42 16.1417 8.43863 
+63.24 31.6069 68.3931 245.772 29.6492 24.5784 275.416 16.1436 8.44001 
+63.25 31.5993 68.4007 245.761 29.6537 24.5851 275.413 16.1454 8.4414 
+63.26 31.5918 68.4082 245.75 29.6581 24.5918 275.41 16.1473 8.44278 
+63.27 31.5842 68.4158 245.739 29.6626 24.5985 275.407 16.1491 8.44417 
+63.28 31.5767 68.4233 245.728 29.667 24.6052 275.403 16.151 8.44556 
+63.29 31.5691 68.4309 245.717 29.6714 24.6119 275.4 16.1529 8.44695 
+63.3 31.5616 68.4384 245.706 29.6759 24.6186 275.397 16.1547 8.44834 
+63.31 31.554 68.446 245.694 29.6803 24.6253 275.394 16.1566 8.44973 
+63.32 31.5465 68.4535 245.683 29.6847 24.632 275.39 16.1584 8.45112 
+63.33 31.5389 68.4611 245.672 29.6892 24.6387 275.387 16.1603 8.45251 
+63.34 31.5314 68.4686 245.661 29.6936 24.6455 275.384 16.1621 8.4539 
+63.35 31.5238 68.4762 245.65 29.6981 24.6522 275.381 16.164 8.4553 
+63.36 31.5163 68.4837 245.639 29.7025 24.6589 275.377 16.1658 8.45669 
+63.37 31.5087 68.4913 245.627 29.7069 24.6656 275.374 16.1677 8.45809 
+63.38 31.5012 68.4988 245.616 29.7114 24.6723 275.371 16.1696 8.45948 
+63.39 31.4936 68.5064 245.605 29.7158 24.679 275.368 16.1714 8.46088 
+63.4 31.4861 68.5139 245.594 29.7203 24.6857 275.364 16.1733 8.46228 
+63.41 31.4785 68.5215 245.583 29.7247 24.6925 275.361 16.1751 8.46368 
+63.42 31.471 68.529 245.572 29.7291 24.6992 275.358 16.177 8.46508 
+63.43 31.4635 68.5365 245.561 29.7336 24.7059 275.355 16.1789 8.46648 
+63.44 31.4559 68.5441 245.549 29.738 24.7126 275.351 16.1807 8.46788 
+63.45 31.4484 68.5516 245.538 29.7425 24.7193 275.348 16.1826 8.46928 
+63.46 31.4409 68.5591 245.527 29.7469 24.7261 275.345 16.1844 8.47068 
+63.47 31.4333 68.5667 245.516 29.7514 24.7328 275.342 16.1863 8.47209 
+63.48 31.4258 68.5742 245.505 29.7558 24.7395 275.338 16.1882 8.47349 
+63.49 31.4183 68.5817 245.494 29.7602 24.7463 275.335 16.19 8.4749 
+63.5 31.4107 68.5893 245.482 29.7647 24.753 275.332 16.1919 8.4763 
+63.51 31.4032 68.5968 245.471 29.7691 24.7597 275.329 16.1938 8.47771 
+63.52 31.3957 68.6043 245.46 29.7736 24.7665 275.325 16.1956 8.47912 
+63.53 31.3882 68.6118 245.449 29.778 24.7732 275.322 16.1975 8.48053 
+63.54 31.3807 68.6193 245.438 29.7824 24.7799 275.319 16.1994 8.48194 
+63.55 31.3731 68.6269 245.426 29.7869 24.7867 275.315 16.2012 8.48335 
+63.56 31.3656 68.6344 245.415 29.7913 24.7934 275.312 16.2031 8.48476 
+63.57 31.3581 68.6419 245.404 29.7958 24.8001 275.309 16.205 8.48618 
+63.58 31.3506 68.6494 245.393 29.8002 24.8069 275.306 16.2069 8.48759 
+63.59 31.3431 68.6569 245.382 29.8047 24.8136 275.302 16.2087 8.489 
+63.6 31.3356 68.6644 245.371 29.8091 24.8204 275.299 16.2106 8.49042 
+63.61 31.328 68.672 245.359 29.8135 24.8271 275.296 16.2125 8.49183 
+63.62 31.3205 68.6795 245.348 29.818 24.8339 275.292 16.2143 8.49325 
+63.63 31.313 68.687 245.337 29.8224 24.8406 275.289 16.2162 8.49467 
+63.64 31.3055 68.6945 245.326 29.8269 24.8474 275.286 16.2181 8.49609 
+63.65 31.298 68.702 245.315 29.8313 24.8541 275.283 16.22 8.49751 
+63.66 31.2905 68.7095 245.303 29.8358 24.8609 275.279 16.2218 8.49893 
+63.67 31.283 68.717 245.292 29.8402 24.8676 275.276 16.2237 8.50035 
+63.68 31.2755 68.7245 245.281 29.8446 24.8744 275.273 16.2256 8.50177 
+63.69 31.268 68.732 245.27 29.8491 24.8811 275.269 16.2275 8.50319 
+63.7 31.2605 68.7395 245.259 29.8535 24.8879 275.266 16.2293 8.50462 
+63.71 31.253 68.747 245.247 29.858 24.8946 275.263 16.2312 8.50604 
+63.72 31.2455 68.7545 245.236 29.8624 24.9014 275.259 16.2331 8.50747 
+63.73 31.238 68.762 245.225 29.8669 24.9082 275.256 16.235 8.5089 
+63.74 31.2305 68.7695 245.214 29.8713 24.9149 275.253 16.2369 8.51032 
+63.75 31.223 68.777 245.203 29.8758 24.9217 275.25 16.2387 8.51175 
+63.76 31.2155 68.7845 245.191 29.8802 24.9285 275.246 16.2406 8.51318 
+63.77 31.208 68.792 245.18 29.8846 24.9352 275.243 16.2425 8.51461 
+63.78 31.2005 68.7995 245.169 29.8891 24.942 275.24 16.2444 8.51604 
+63.79 31.1931 68.8069 245.158 29.8935 24.9488 275.236 16.2463 8.51747 
+63.8 31.1856 68.8144 245.146 29.898 24.9555 275.233 16.2482 8.5189 
+63.81 31.1781 68.8219 245.135 29.9024 24.9623 275.23 16.25 8.52034 
+63.82 31.1706 68.8294 245.124 29.9069 24.9691 275.226 16.2519 8.52177 
+63.83 31.1631 68.8369 245.113 29.9113 24.9759 275.223 16.2538 8.52321 
+63.84 31.1556 68.8444 245.102 29.9158 24.9826 275.22 16.2557 8.52464 
+63.85 31.1482 68.8518 245.09 29.9202 24.9894 275.216 16.2576 8.52608 
+63.86 31.1407 68.8593 245.079 29.9247 24.9962 275.213 16.2595 8.52752 
+63.87 31.1332 68.8668 245.068 29.9291 25.003 275.21 16.2614 8.52896 
+63.88 31.1257 68.8743 245.057 29.9336 25.0098 275.206 16.2632 8.5304 
+63.89 31.1183 68.8817 245.045 29.938 25.0165 275.203 16.2651 8.53184 
+63.9 31.1108 68.8892 245.034 29.9424 25.0233 275.2 16.267 8.53328 
+63.91 31.1033 68.8967 245.023 29.9469 25.0301 275.196 16.2689 8.53472 
+63.92 31.0958 68.9042 245.012 29.9513 25.0369 275.193 16.2708 8.53616 
+63.93 31.0884 68.9116 245.001 29.9558 25.0437 275.19 16.2727 8.53761 
+63.94 31.0809 68.9191 244.989 29.9602 25.0505 275.186 16.2746 8.53905 
+63.95 31.0734 68.9266 244.978 29.9647 25.0573 275.183 16.2765 8.5405 
+63.96 31.066 68.934 244.967 29.9691 25.0641 275.18 16.2784 8.54194 
+63.97 31.0585 68.9415 244.956 29.9736 25.0708 275.176 16.2803 8.54339 
+63.98 31.0511 68.9489 244.944 29.978 25.0776 275.173 16.2822 8.54484 
+63.99 31.0436 68.9564 244.933 29.9825 25.0844 275.17 16.284 8.54629 
+64 31.0361 68.9639 244.922 29.9869 25.0912 275.166 16.2859 8.54774 
+64.01 31.0287 68.9713 244.911 29.9914 25.098 275.163 16.2878 8.54919 
+64.02 31.0212 68.9788 244.899 29.9958 25.1048 275.16 16.2897 8.55064 
+64.03 31.0138 68.9862 244.888 30.0003 25.1116 275.156 16.2916 8.55209 
+64.04 31.0063 68.9937 244.877 30.0047 25.1184 275.153 16.2935 8.55355 
+64.05 30.9989 69.0011 244.866 30.0092 25.1252 275.15 16.2954 8.555 
+64.06 30.9914 69.0086 244.854 30.0136 25.132 275.146 16.2973 8.55646 
+64.07 30.984 69.016 244.843 30.0181 25.1389 275.143 16.2992 8.55791 
+64.08 30.9765 69.0235 244.832 30.0225 25.1457 275.14 16.3011 8.55937 
+64.09 30.9691 69.0309 244.821 30.027 25.1525 275.136 16.303 8.56083 
+64.1 30.9616 69.0384 244.809 30.0314 25.1593 275.133 16.3049 8.56228 
+64.11 30.9542 69.0458 244.798 30.0359 25.1661 275.129 16.3068 8.56374 
+64.12 30.9468 69.0532 244.787 30.0403 25.1729 275.126 16.3087 8.5652 
+64.13 30.9393 69.0607 244.776 30.0448 25.1797 275.123 16.3106 8.56667 
+64.14 30.9319 69.0681 244.764 30.0492 25.1865 275.119 16.3125 8.56813 
+64.15 30.9244 69.0756 244.753 30.0537 25.1934 275.116 16.3144 8.56959 
+64.16 30.917 69.083 244.742 30.0581 25.2002 275.113 16.3163 8.57105 
+64.17 30.9096 69.0904 244.73 30.0626 25.207 275.109 16.3182 8.57252 
+64.18 30.9021 69.0979 244.719 30.067 25.2138 275.106 16.3202 8.57399 
+64.19 30.8947 69.1053 244.708 30.0715 25.2206 275.102 16.3221 8.57545 
+64.2 30.8873 69.1127 244.697 30.0759 25.2275 275.099 16.324 8.57692 
+64.21 30.8798 69.1202 244.685 30.0804 25.2343 275.096 16.3259 8.57839 
+64.22 30.8724 69.1276 244.674 30.0848 25.2411 275.092 16.3278 8.57986 
+64.23 30.865 69.135 244.663 30.0893 25.248 275.089 16.3297 8.58133 
+64.24 30.8576 69.1424 244.651 30.0937 25.2548 275.086 16.3316 8.5828 
+64.25 30.8501 69.1499 244.64 30.0982 25.2616 275.082 16.3335 8.58427 
+64.26 30.8427 69.1573 244.629 30.1026 25.2684 275.079 16.3354 8.58574 
+64.27 30.8353 69.1647 244.618 30.1071 25.2753 275.075 16.3373 8.58722 
+64.28 30.8279 69.1721 244.606 30.1115 25.2821 275.072 16.3392 8.58869 
+64.29 30.8205 69.1795 244.595 30.116 25.2889 275.069 16.3412 8.59016 
+64.3 30.813 69.187 244.584 30.1204 25.2958 275.065 16.3431 8.59164 
+64.31 30.8056 69.1944 244.572 30.1249 25.3026 275.062 16.345 8.59312 
+64.32 30.7982 69.2018 244.561 30.1293 25.3095 275.059 16.3469 8.5946 
+64.33 30.7908 69.2092 244.55 30.1338 25.3163 275.055 16.3488 8.59607 
+64.34 30.7834 69.2166 244.539 30.1382 25.3232 275.052 16.3507 8.59755 
+64.35 30.776 69.224 244.527 30.1427 25.33 275.048 16.3526 8.59903 
+64.36 30.7686 69.2314 244.516 30.1471 25.3368 275.045 16.3546 8.60052 
+64.37 30.7612 69.2388 244.505 30.1516 25.3437 275.042 16.3565 8.602 
+64.38 30.7538 69.2462 244.493 30.1561 25.3505 275.038 16.3584 8.60348 
+64.39 30.7464 69.2536 244.482 30.1605 25.3574 275.035 16.3603 8.60497 
+64.4 30.739 69.261 244.471 30.165 25.3642 275.031 16.3622 8.60645 
+64.41 30.7316 69.2684 244.459 30.1694 25.3711 275.028 16.3642 8.60794 
+64.42 30.7242 69.2758 244.448 30.1739 25.3779 275.025 16.3661 8.60942 
+64.43 30.7168 69.2832 244.437 30.1783 25.3848 275.021 16.368 8.61091 
+64.44 30.7094 69.2906 244.426 30.1828 25.3917 275.018 16.3699 8.6124 
+64.45 30.702 69.298 244.414 30.1872 25.3985 275.014 16.3718 8.61389 
+64.46 30.6946 69.3054 244.403 30.1917 25.4054 275.011 16.3738 8.61538 
+64.47 30.6872 69.3128 244.392 30.1961 25.4122 275.007 16.3757 8.61687 
+64.48 30.6798 69.3202 244.38 30.2006 25.4191 275.004 16.3776 8.61836 
+64.49 30.6724 69.3276 244.369 30.205 25.426 275.001 16.3795 8.61985 
+64.5 30.665 69.335 244.358 30.2095 25.4328 274.997 16.3815 8.62135 
+64.51 30.6576 69.3424 244.346 30.214 25.4397 274.994 16.3834 8.62284 
+64.52 30.6502 69.3498 244.335 30.2184 25.4466 274.99 16.3853 8.62434 
+64.53 30.6429 69.3571 244.324 30.2229 25.4534 274.987 16.3872 8.62583 
+64.54 30.6355 69.3645 244.312 30.2273 25.4603 274.984 16.3892 8.62733 
+64.55 30.6281 69.3719 244.301 30.2318 25.4672 274.98 16.3911 8.62883 
+64.56 30.6207 69.3793 244.29 30.2362 25.474 274.977 16.393 8.63033 
+64.57 30.6133 69.3867 244.278 30.2407 25.4809 274.973 16.3949 8.63183 
+64.58 30.606 69.394 244.267 30.2451 25.4878 274.97 16.3969 8.63333 
+64.59 30.5986 69.4014 244.256 30.2496 25.4947 274.966 16.3988 8.63483 
+64.6 30.5912 69.4088 244.244 30.2541 25.5015 274.963 16.4007 8.63633 
+64.61 30.5838 69.4162 244.233 30.2585 25.5084 274.959 16.4027 8.63784 
+64.62 30.5765 69.4235 244.222 30.263 25.5153 274.956 16.4046 8.63934 
+64.63 30.5691 69.4309 244.21 30.2674 25.5222 274.953 16.4065 8.64085 
+64.64 30.5617 69.4383 244.199 30.2719 25.5291 274.949 16.4085 8.64235 
+64.65 30.5544 69.4456 244.188 30.2763 25.5359 274.946 16.4104 8.64386 
+64.66 30.547 69.453 244.176 30.2808 25.5428 274.942 16.4123 8.64537 
+64.67 30.5396 69.4604 244.165 30.2852 25.5497 274.939 16.4143 8.64688 
+64.68 30.5323 69.4677 244.154 30.2897 25.5566 274.935 16.4162 8.64839 
+64.69 30.5249 69.4751 244.142 30.2942 25.5635 274.932 16.4181 8.6499 
+64.7 30.5176 69.4824 244.131 30.2986 25.5704 274.929 16.4201 8.65141 
+64.71 30.5102 69.4898 244.12 30.3031 25.5773 274.925 16.422 8.65292 
+64.72 30.5028 69.4972 244.108 30.3075 25.5842 274.922 16.424 8.65443 
+64.73 30.4955 69.5045 244.097 30.312 25.5911 274.918 16.4259 8.65595 
+64.74 30.4881 69.5119 244.086 30.3164 25.598 274.915 16.4278 8.65746 
+64.75 30.4808 69.5192 244.074 30.3209 25.6049 274.911 16.4298 8.65898 
+64.76 30.4734 69.5266 244.063 30.3254 25.6118 274.908 16.4317 8.66049 
+64.77 30.4661 69.5339 244.052 30.3298 25.6187 274.904 16.4337 8.66201 
+64.78 30.4587 69.5413 244.04 30.3343 25.6256 274.901 16.4356 8.66353 
+64.79 30.4514 69.5486 244.029 30.3387 25.6325 274.897 16.4375 8.66505 
+64.8 30.444 69.556 244.017 30.3432 25.6394 274.894 16.4395 8.66657 
+64.81 30.4367 69.5633 244.006 30.3477 25.6463 274.89 16.4414 8.66809 
+64.82 30.4294 69.5706 243.995 30.3521 25.6532 274.887 16.4434 8.66961 
+64.83 30.422 69.578 243.983 30.3566 25.6601 274.884 16.4453 8.67114 
+64.84 30.4147 69.5853 243.972 30.361 25.667 274.88 16.4473 8.67266 
+64.85 30.4073 69.5927 243.961 30.3655 25.6739 274.877 16.4492 8.67418 
+64.86 30.4 69.6 243.949 30.3699 25.6808 274.873 16.4511 8.67571 
+64.87 30.3927 69.6073 243.938 30.3744 25.6877 274.87 16.4531 8.67724 
+64.88 30.3853 69.6147 243.926 30.3789 25.6946 274.866 16.455 8.67876 
+64.89 30.378 69.622 243.915 30.3833 25.7016 274.863 16.457 8.68029 
+64.9 30.3707 69.6293 243.904 30.3878 25.7085 274.859 16.4589 8.68182 
+64.91 30.3633 69.6367 243.892 30.3922 25.7154 274.856 16.4609 8.68335 
+64.92 30.356 69.644 243.881 30.3967 25.7223 274.852 16.4628 8.68488 
+64.93 30.3487 69.6513 243.87 30.4012 25.7292 274.849 16.4648 8.68641 
+64.94 30.3414 69.6586 243.858 30.4056 25.7362 274.845 16.4667 8.68795 
+64.95 30.334 69.666 243.847 30.4101 25.7431 274.842 16.4687 8.68948 
+64.96 30.3267 69.6733 243.835 30.4145 25.75 274.838 16.4706 8.69101 
+64.97 30.3194 69.6806 243.824 30.419 25.7569 274.835 16.4726 8.69255 
+64.98 30.3121 69.6879 243.813 30.4235 25.7639 274.831 16.4745 8.69409 
+64.99 30.3047 69.6953 243.801 30.4279 25.7708 274.828 16.4765 8.69562 
+65 30.2974 69.7026 243.79 30.4324 25.7777 274.824 16.4785 8.69716 
+65.01 30.2901 69.7099 243.778 30.4368 25.7847 274.821 16.4804 8.6987 
+65.02 30.2828 69.7172 243.767 30.4413 25.7916 274.817 16.4824 8.70024 
+65.03 30.2755 69.7245 243.756 30.4458 25.7985 274.814 16.4843 8.70178 
+65.04 30.2682 69.7318 243.744 30.4502 25.8055 274.81 16.4863 8.70332 
+65.05 30.2609 69.7391 243.733 30.4547 25.8124 274.807 16.4882 8.70486 
+65.06 30.2536 69.7464 243.722 30.4591 25.8193 274.803 16.4902 8.70641 
+65.07 30.2462 69.7538 243.71 30.4636 25.8263 274.8 16.4922 8.70795 
+65.08 30.2389 69.7611 243.699 30.4681 25.8332 274.796 16.4941 8.7095 
+65.09 30.2316 69.7684 243.687 30.4725 25.8402 274.793 16.4961 8.71104 
+65.1 30.2243 69.7757 243.676 30.477 25.8471 274.789 16.498 8.71259 
+65.11 30.217 69.783 243.664 30.4815 25.8541 274.786 16.5 8.71414 
+65.12 30.2097 69.7903 243.653 30.4859 25.861 274.782 16.502 8.71569 
+65.13 30.2024 69.7976 243.642 30.4904 25.8679 274.779 16.5039 8.71724 
+65.14 30.1951 69.8049 243.63 30.4948 25.8749 274.775 16.5059 8.71879 
+65.15 30.1878 69.8122 243.619 30.4993 25.8818 274.772 16.5078 8.72034 
+65.16 30.1806 69.8194 243.607 30.5038 25.8888 274.768 16.5098 8.72189 
+65.17 30.1733 69.8267 243.596 30.5082 25.8958 274.765 16.5118 8.72344 
+65.18 30.166 69.834 243.585 30.5127 25.9027 274.761 16.5137 8.725 
+65.19 30.1587 69.8413 243.573 30.5172 25.9097 274.758 16.5157 8.72655 
+65.2 30.1514 69.8486 243.562 30.5216 25.9166 274.754 16.5177 8.72811 
+65.21 30.1441 69.8559 243.55 30.5261 25.9236 274.751 16.5196 8.72967 
+65.22 30.1368 69.8632 243.539 30.5305 25.9305 274.747 16.5216 8.73122 
+65.23 30.1295 69.8705 243.527 30.535 25.9375 274.744 16.5236 8.73278 
+65.24 30.1222 69.8778 243.516 30.5395 25.9445 274.74 16.5255 8.73434 
+65.25 30.115 69.885 243.505 30.5439 25.9514 274.737 16.5275 8.7359 
+65.26 30.1077 69.8923 243.493 30.5484 25.9584 274.733 16.5295 8.73746 
+65.27 30.1004 69.8996 243.482 30.5529 25.9654 274.73 16.5315 8.73903 
+65.28 30.0931 69.9069 243.47 30.5573 25.9723 274.726 16.5334 8.74059 
+65.29 30.0859 69.9141 243.459 30.5618 25.9793 274.722 16.5354 8.74215 
+65.3 30.0786 69.9214 243.447 30.5663 25.9863 274.719 16.5374 8.74372 
+65.31 30.0713 69.9287 243.436 30.5707 25.9932 274.715 16.5393 8.74528 
+65.32 30.064 69.936 243.425 30.5752 26.0002 274.712 16.5413 8.74685 
+65.33 30.0568 69.9432 243.413 30.5796 26.0072 274.708 16.5433 8.74842 
+65.34 30.0495 69.9505 243.402 30.5841 26.0142 274.705 16.5453 8.74999 
+65.35 30.0422 69.9578 243.39 30.5886 26.0211 274.701 16.5472 8.75156 
+65.36 30.035 69.965 243.379 30.593 26.0281 274.698 16.5492 8.75313 
+65.37 30.0277 69.9723 243.367 30.5975 26.0351 274.694 16.5512 8.7547 
+65.38 30.0204 69.9796 243.356 30.602 26.0421 274.691 16.5532 8.75627 
+65.39 30.0132 69.9868 243.345 30.6064 26.0491 274.687 16.5552 8.75784 
+65.4 30.0059 69.9941 243.333 30.6109 26.056 274.683 16.5571 8.75942 
+65.41 29.9987 70.0013 243.322 30.6154 26.063 274.68 16.5591 8.76099 
+65.42 29.9914 70.0086 243.31 30.6198 26.07 274.676 16.5611 8.76257 
+65.43 29.9842 70.0158 243.299 30.6243 26.077 274.673 16.5631 8.76414 
+65.44 29.9769 70.0231 243.287 30.6288 26.084 274.669 16.5651 8.76572 
+65.45 29.9696 70.0304 243.276 30.6332 26.091 274.666 16.567 8.7673 
+65.46 29.9624 70.0376 243.264 30.6377 26.098 274.662 16.569 8.76888 
+65.47 29.9551 70.0449 243.253 30.6422 26.105 274.659 16.571 8.77046 
+65.48 29.9479 70.0521 243.241 30.6466 26.1119 274.655 16.573 8.77204 
+65.49 29.9407 70.0593 243.23 30.6511 26.1189 274.651 16.575 8.77362 
+65.5 29.9334 70.0666 243.219 30.6556 26.1259 274.648 16.577 8.77521 
+65.51 29.9262 70.0738 243.207 30.66 26.1329 274.644 16.5789 8.77679 
+65.52 29.9189 70.0811 243.196 30.6645 26.1399 274.641 16.5809 8.77837 
+65.53 29.9117 70.0883 243.184 30.6689 26.1469 274.637 16.5829 8.77996 
+65.54 29.9044 70.0956 243.173 30.6734 26.1539 274.634 16.5849 8.78155 
+65.55 29.8972 70.1028 243.161 30.6779 26.1609 274.63 16.5869 8.78313 
+65.56 29.89 70.11 243.15 30.6823 26.1679 274.626 16.5889 8.78472 
+65.57 29.8827 70.1173 243.138 30.6868 26.175 274.623 16.5909 8.78631 
+65.58 29.8755 70.1245 243.127 30.6913 26.182 274.619 16.5929 8.7879 
+65.59 29.8683 70.1317 243.115 30.6957 26.189 274.616 16.5948 8.78949 
+65.6 29.861 70.139 243.104 30.7002 26.196 274.612 16.5968 8.79108 
+65.61 29.8538 70.1462 243.092 30.7047 26.203 274.608 16.5988 8.79268 
+65.62 29.8466 70.1534 243.081 30.7092 26.21 274.605 16.6008 8.79427 
+65.63 29.8394 70.1606 243.069 30.7136 26.217 274.601 16.6028 8.79587 
+65.64 29.8321 70.1679 243.058 30.7181 26.224 274.598 16.6048 8.79746 
+65.65 29.8249 70.1751 243.046 30.7226 26.231 274.594 16.6068 8.79906 
+65.66 29.8177 70.1823 243.035 30.727 26.2381 274.591 16.6088 8.80066 
+65.67 29.8105 70.1895 243.023 30.7315 26.2451 274.587 16.6108 8.80225 
+65.68 29.8032 70.1968 243.012 30.736 26.2521 274.583 16.6128 8.80385 
+65.69 29.796 70.204 243 30.7404 26.2591 274.58 16.6148 8.80545 
+65.7 29.7888 70.2112 242.989 30.7449 26.2661 274.576 16.6168 8.80705 
+65.71 29.7816 70.2184 242.977 30.7494 26.2732 274.573 16.6188 8.80866 
+65.72 29.7744 70.2256 242.966 30.7538 26.2802 274.569 16.6208 8.81026 
+65.73 29.7672 70.2328 242.954 30.7583 26.2872 274.565 16.6228 8.81186 
+65.74 29.76 70.24 242.943 30.7628 26.2942 274.562 16.6248 8.81347 
+65.75 29.7527 70.2473 242.931 30.7672 26.3013 274.558 16.6268 8.81507 
+65.76 29.7455 70.2545 242.92 30.7717 26.3083 274.555 16.6288 8.81668 
+65.77 29.7383 70.2617 242.908 30.7762 26.3153 274.551 16.6308 8.81829 
+65.78 29.7311 70.2689 242.897 30.7806 26.3224 274.547 16.6328 8.8199 
+65.79 29.7239 70.2761 242.885 30.7851 26.3294 274.544 16.6348 8.8215 
+65.8 29.7167 70.2833 242.874 30.7896 26.3364 274.54 16.6368 8.82311 
+65.81 29.7095 70.2905 242.862 30.7941 26.3435 274.536 16.6388 8.82473 
+65.82 29.7023 70.2977 242.851 30.7985 26.3505 274.533 16.6408 8.82634 
+65.83 29.6951 70.3049 242.839 30.803 26.3576 274.529 16.6428 8.82795 
+65.84 29.6879 70.3121 242.828 30.8075 26.3646 274.526 16.6448 8.82956 
+65.85 29.6807 70.3193 242.816 30.8119 26.3716 274.522 16.6468 8.83118 
+65.86 29.6735 70.3265 242.805 30.8164 26.3787 274.518 16.6488 8.83279 
+65.87 29.6664 70.3336 242.793 30.8209 26.3857 274.515 16.6508 8.83441 
+65.88 29.6592 70.3408 242.782 30.8253 26.3928 274.511 16.6528 8.83603 
+65.89 29.652 70.348 242.77 30.8298 26.3998 274.508 16.6548 8.83765 
+65.9 29.6448 70.3552 242.759 30.8343 26.4069 274.504 16.6568 8.83927 
+65.91 29.6376 70.3624 242.747 30.8387 26.4139 274.5 16.6588 8.84089 
+65.92 29.6304 70.3696 242.736 30.8432 26.421 274.497 16.6609 8.84251 
+65.93 29.6232 70.3768 242.724 30.8477 26.428 274.493 16.6629 8.84413 
+65.94 29.6161 70.3839 242.713 30.8522 26.4351 274.489 16.6649 8.84575 
+65.95 29.6089 70.3911 242.701 30.8566 26.4421 274.486 16.6669 8.84738 
+65.96 29.6017 70.3983 242.69 30.8611 26.4492 274.482 16.6689 8.849 
+65.97 29.5945 70.4055 242.678 30.8656 26.4563 274.478 16.6709 8.85063 
+65.98 29.5873 70.4127 242.667 30.87 26.4633 274.475 16.6729 8.85225 
+65.99 29.5802 70.4198 242.655 30.8745 26.4704 274.471 16.6749 8.85388 
+66 29.573 70.427 242.644 30.879 26.4774 274.468 16.677 8.85551 
+66.01 29.5658 70.4342 242.632 30.8835 26.4845 274.464 16.679 8.85714 
+66.02 29.5587 70.4413 242.621 30.8879 26.4916 274.46 16.681 8.85877 
+66.03 29.5515 70.4485 242.609 30.8924 26.4986 274.457 16.683 8.8604 
+66.04 29.5443 70.4557 242.597 30.8969 26.5057 274.453 16.685 8.86203 
+66.05 29.5372 70.4628 242.586 30.9013 26.5128 274.449 16.687 8.86366 
+66.06 29.53 70.47 242.574 30.9058 26.5198 274.446 16.6891 8.8653 
+66.07 29.5228 70.4772 242.563 30.9103 26.5269 274.442 16.6911 8.86693 
+66.08 29.5157 70.4843 242.551 30.9148 26.534 274.438 16.6931 8.86857 
+66.09 29.5085 70.4915 242.54 30.9192 26.541 274.435 16.6951 8.8702 
+66.1 29.5013 70.4987 242.528 30.9237 26.5481 274.431 16.6971 8.87184 
+66.11 29.4942 70.5058 242.517 30.9282 26.5552 274.427 16.6992 8.87348 
+66.12 29.487 70.513 242.505 30.9326 26.5623 274.424 16.7012 8.87512 
+66.13 29.4799 70.5201 242.494 30.9371 26.5694 274.42 16.7032 8.87676 
+66.14 29.4727 70.5273 242.482 30.9416 26.5764 274.416 16.7052 8.8784 
+66.15 29.4656 70.5344 242.47 30.9461 26.5835 274.413 16.7073 8.88004 
+66.16 29.4584 70.5416 242.459 30.9505 26.5906 274.409 16.7093 8.88169 
+66.17 29.4513 70.5487 242.447 30.955 26.5977 274.405 16.7113 8.88333 
+66.18 29.4441 70.5559 242.436 30.9595 26.6048 274.402 16.7133 8.88498 
+66.19 29.437 70.563 242.424 30.964 26.6119 274.398 16.7154 8.88662 
+66.2 29.4298 70.5702 242.413 30.9684 26.6189 274.394 16.7174 8.88827 
+66.21 29.4227 70.5773 242.401 30.9729 26.626 274.391 16.7194 8.88992 
+66.22 29.4156 70.5844 242.389 30.9774 26.6331 274.387 16.7214 8.89156 
+66.23 29.4084 70.5916 242.378 30.9818 26.6402 274.383 16.7235 8.89321 
+66.24 29.4013 70.5987 242.366 30.9863 26.6473 274.38 16.7255 8.89486 
+66.25 29.3942 70.6058 242.355 30.9908 26.6544 274.376 16.7275 8.89652 
+66.26 29.387 70.613 242.343 30.9953 26.6615 274.372 16.7296 8.89817 
+66.27 29.3799 70.6201 242.332 30.9997 26.6686 274.369 16.7316 8.89982 
+66.28 29.3728 70.6272 242.32 31.0042 26.6757 274.365 16.7336 8.90147 
+66.29 29.3656 70.6344 242.309 31.0087 26.6828 274.361 16.7357 8.90313 
+66.3 29.3585 70.6415 242.297 31.0132 26.6899 274.358 16.7377 8.90479 
+66.31 29.3514 70.6486 242.285 31.0176 26.697 274.354 16.7397 8.90644 
+66.32 29.3442 70.6558 242.274 31.0221 26.7041 274.35 16.7418 8.9081 
+66.33 29.3371 70.6629 242.262 31.0266 26.7112 274.346 16.7438 8.90976 
+66.34 29.33 70.67 242.251 31.0311 26.7183 274.343 16.7458 8.91142 
+66.35 29.3229 70.6771 242.239 31.0355 26.7254 274.339 16.7479 8.91308 
+66.36 29.3158 70.6842 242.227 31.04 26.7325 274.335 16.7499 8.91474 
+66.37 29.3086 70.6914 242.216 31.0445 26.7396 274.332 16.7519 8.9164 
+66.38 29.3015 70.6985 242.204 31.049 26.7468 274.328 16.754 8.91807 
+66.39 29.2944 70.7056 242.193 31.0534 26.7539 274.324 16.756 8.91973 
+66.4 29.2873 70.7127 242.181 31.0579 26.761 274.321 16.7581 8.9214 
+66.41 29.2802 70.7198 242.17 31.0624 26.7681 274.317 16.7601 8.92306 
+66.42 29.2731 70.7269 242.158 31.0669 26.7752 274.313 16.7621 8.92473 
+66.43 29.266 70.734 242.146 31.0713 26.7823 274.309 16.7642 8.9264 
+66.44 29.2588 70.7412 242.135 31.0758 26.7894 274.306 16.7662 8.92806 
+66.45 29.2517 70.7483 242.123 31.0803 26.7966 274.302 16.7683 8.92973 
+66.46 29.2446 70.7554 242.112 31.0848 26.8037 274.298 16.7703 8.93141 
+66.47 29.2375 70.7625 242.1 31.0892 26.8108 274.295 16.7723 8.93308 
+66.48 29.2304 70.7696 242.088 31.0937 26.8179 274.291 16.7744 8.93475 
+66.49 29.2233 70.7767 242.077 31.0982 26.8251 274.287 16.7764 8.93642 
+66.5 29.2162 70.7838 242.065 31.1027 26.8322 274.283 16.7785 8.9381 
+66.51 29.2091 70.7909 242.054 31.1071 26.8393 274.28 16.7805 8.93977 
+66.52 29.202 70.798 242.042 31.1116 26.8464 274.276 16.7826 8.94145 
+66.53 29.1949 70.8051 242.03 31.1161 26.8536 274.272 16.7846 8.94313 
+66.54 29.1878 70.8122 242.019 31.1206 26.8607 274.269 16.7867 8.9448 
+66.55 29.1808 70.8192 242.007 31.125 26.8678 274.265 16.7887 8.94648 
+66.56 29.1737 70.8263 241.995 31.1295 26.875 274.261 16.7908 8.94816 
+66.57 29.1666 70.8334 241.984 31.134 26.8821 274.257 16.7928 8.94984 
+66.58 29.1595 70.8405 241.972 31.1385 26.8893 274.254 16.7949 8.95153 
+66.59 29.1524 70.8476 241.961 31.143 26.8964 274.25 16.7969 8.95321 
+66.6 29.1453 70.8547 241.949 31.1474 26.9035 274.246 16.799 8.95489 
+66.61 29.1382 70.8618 241.937 31.1519 26.9107 274.242 16.801 8.95658 
+66.62 29.1312 70.8688 241.926 31.1564 26.9178 274.239 16.8031 8.95826 
+66.63 29.1241 70.8759 241.914 31.1609 26.925 274.235 16.8051 8.95995 
+66.64 29.117 70.883 241.903 31.1653 26.9321 274.231 16.8072 8.96164 
+66.65 29.1099 70.8901 241.891 31.1698 26.9393 274.227 16.8092 8.96332 
+66.66 29.1028 70.8972 241.879 31.1743 26.9464 274.224 16.8113 8.96501 
+66.67 29.0958 70.9042 241.868 31.1788 26.9535 274.22 16.8133 8.9667 
+66.68 29.0887 70.9113 241.856 31.1832 26.9607 274.216 16.8154 8.96839 
+66.69 29.0816 70.9184 241.844 31.1877 26.9679 274.212 16.8175 8.97009 
+66.7 29.0746 70.9254 241.833 31.1922 26.975 274.209 16.8195 8.97178 
+66.71 29.0675 70.9325 241.821 31.1967 26.9822 274.205 16.8216 8.97347 
+66.72 29.0604 70.9396 241.81 31.2012 26.9893 274.201 16.8236 8.97517 
+66.73 29.0534 70.9466 241.798 31.2056 26.9965 274.197 16.8257 8.97686 
+66.74 29.0463 70.9537 241.786 31.2101 27.0036 274.194 16.8277 8.97856 
+66.75 29.0392 70.9608 241.775 31.2146 27.0108 274.19 16.8298 8.98026 
+66.76 29.0322 70.9678 241.763 31.2191 27.018 274.186 16.8319 8.98196 
+66.77 29.0251 70.9749 241.751 31.2235 27.0251 274.182 16.8339 8.98366 
+66.78 29.0181 70.9819 241.74 31.228 27.0323 274.179 16.836 8.98536 
+66.79 29.011 70.989 241.728 31.2325 27.0394 274.175 16.8381 8.98706 
+66.8 29.0039 70.9961 241.716 31.237 27.0466 274.171 16.8401 8.98876 
+66.81 28.9969 71.0031 241.705 31.2415 27.0538 274.167 16.8422 8.99046 
+66.82 28.9898 71.0102 241.693 31.2459 27.0609 274.164 16.8442 8.99217 
+66.83 28.9828 71.0172 241.681 31.2504 27.0681 274.16 16.8463 8.99387 
+66.84 28.9757 71.0243 241.67 31.2549 27.0753 274.156 16.8484 8.99558 
+66.85 28.9687 71.0313 241.658 31.2594 27.0825 274.152 16.8504 8.99728 
+66.86 28.9616 71.0384 241.647 31.2639 27.0896 274.148 16.8525 8.99899 
+66.87 28.9546 71.0454 241.635 31.2683 27.0968 274.145 16.8546 9.0007 
+66.88 28.9476 71.0524 241.623 31.2728 27.104 274.141 16.8566 9.00241 
+66.89 28.9405 71.0595 241.612 31.2773 27.1112 274.137 16.8587 9.00412 
+66.9 28.9335 71.0665 241.6 31.2818 27.1183 274.133 16.8608 9.00583 
+66.91 28.9264 71.0736 241.588 31.2862 27.1255 274.13 16.8629 9.00754 
+66.92 28.9194 71.0806 241.577 31.2907 27.1327 274.126 16.8649 9.00926 
+66.93 28.9124 71.0876 241.565 31.2952 27.1399 274.122 16.867 9.01097 
+66.94 28.9053 71.0947 241.553 31.2997 27.1471 274.118 16.8691 9.01269 
+66.95 28.8983 71.1017 241.542 31.3042 27.1542 274.114 16.8711 9.0144 
+66.96 28.8913 71.1087 241.53 31.3086 27.1614 274.111 16.8732 9.01612 
+66.97 28.8842 71.1158 241.518 31.3131 27.1686 274.107 16.8753 9.01784 
+66.98 28.8772 71.1228 241.507 31.3176 27.1758 274.103 16.8774 9.01956 
+66.99 28.8702 71.1298 241.495 31.3221 27.183 274.099 16.8794 9.02128 
+67 28.8632 71.1368 241.483 31.3266 27.1902 274.095 16.8815 9.023 
+67.01 28.8561 71.1439 241.472 31.331 27.1974 274.092 16.8836 9.02472 
+67.02 28.8491 71.1509 241.46 31.3355 27.2046 274.088 16.8857 9.02644 
+67.03 28.8421 71.1579 241.448 31.34 27.2118 274.084 16.8877 9.02817 
+67.04 28.8351 71.1649 241.437 31.3445 27.219 274.08 16.8898 9.02989 
+67.05 28.828 71.172 241.425 31.349 27.2262 274.076 16.8919 9.03162 
+67.06 28.821 71.179 241.413 31.3534 27.2334 274.073 16.894 9.03334 
+67.07 28.814 71.186 241.401 31.3579 27.2406 274.069 16.8961 9.03507 
+67.08 28.807 71.193 241.39 31.3624 27.2478 274.065 16.8981 9.0368 
+67.09 28.8 71.2 241.378 31.3669 27.255 274.061 16.9002 9.03853 
+67.1 28.793 71.207 241.366 31.3714 27.2622 274.057 16.9023 9.04026 
+67.11 28.786 71.214 241.355 31.3759 27.2694 274.054 16.9044 9.04199 
+67.12 28.779 71.221 241.343 31.3803 27.2766 274.05 16.9065 9.04372 
+67.13 28.772 71.228 241.331 31.3848 27.2838 274.046 16.9086 9.04546 
+67.14 28.765 71.235 241.32 31.3893 27.291 274.042 16.9106 9.04719 
+67.15 28.758 71.242 241.308 31.3938 27.2982 274.038 16.9127 9.04893 
+67.16 28.751 71.249 241.296 31.3983 27.3054 274.035 16.9148 9.05066 
+67.17 28.744 71.256 241.285 31.4027 27.3127 274.031 16.9169 9.0524 
+67.18 28.737 71.263 241.273 31.4072 27.3199 274.027 16.919 9.05414 
+67.19 28.73 71.27 241.261 31.4117 27.3271 274.023 16.9211 9.05587 
+67.2 28.723 71.277 241.25 31.4162 27.3343 274.019 16.9232 9.05761 
+67.21 28.716 71.284 241.238 31.4207 27.3415 274.015 16.9252 9.05935 
+67.22 28.709 71.291 241.226 31.4251 27.3487 274.012 16.9273 9.0611 
+67.23 28.702 71.298 241.214 31.4296 27.356 274.008 16.9294 9.06284 
+67.24 28.695 71.305 241.203 31.4341 27.3632 274.004 16.9315 9.06458 
+67.25 28.688 71.312 241.191 31.4386 27.3704 274 16.9336 9.06633 
+67.26 28.681 71.319 241.179 31.4431 27.3776 273.996 16.9357 9.06807 
+67.27 28.674 71.326 241.168 31.4476 27.3849 273.992 16.9378 9.06982 
+67.28 28.6671 71.3329 241.156 31.452 27.3921 273.989 16.9399 9.07157 
+67.29 28.6601 71.3399 241.144 31.4565 27.3993 273.985 16.942 9.07331 
+67.3 28.6531 71.3469 241.132 31.461 27.4065 273.981 16.9441 9.07506 
+67.31 28.6461 71.3539 241.121 31.4655 27.4138 273.977 16.9462 9.07681 
+67.32 28.6391 71.3609 241.109 31.47 27.421 273.973 16.9483 9.07856 
+67.33 28.6322 71.3678 241.097 31.4745 27.4282 273.969 16.9504 9.08032 
+67.34 28.6252 71.3748 241.086 31.4789 27.4355 273.965 16.9524 9.08207 
+67.35 28.6182 71.3818 241.074 31.4834 27.4427 273.962 16.9545 9.08382 
+67.36 28.6112 71.3888 241.062 31.4879 27.45 273.958 16.9566 9.08558 
+67.37 28.6043 71.3957 241.05 31.4924 27.4572 273.954 16.9587 9.08733 
+67.38 28.5973 71.4027 241.039 31.4969 27.4644 273.95 16.9608 9.08909 
+67.39 28.5903 71.4097 241.027 31.5014 27.4717 273.946 16.9629 9.09085 
+67.4 28.5834 71.4166 241.015 31.5058 27.4789 273.942 16.965 9.09261 
+67.41 28.5764 71.4236 241.004 31.5103 27.4862 273.938 16.9671 9.09436 
+67.42 28.5694 71.4306 240.992 31.5148 27.4934 273.935 16.9692 9.09613 
+67.43 28.5625 71.4375 240.98 31.5193 27.5007 273.931 16.9713 9.09789 
+67.44 28.5555 71.4445 240.968 31.5238 27.5079 273.927 16.9734 9.09965 
+67.45 28.5486 71.4514 240.957 31.5283 27.5152 273.923 16.9755 9.10141 
+67.46 28.5416 71.4584 240.945 31.5327 27.5224 273.919 16.9777 9.10318 
+67.47 28.5347 71.4653 240.933 31.5372 27.5297 273.915 16.9798 9.10494 
+67.48 28.5277 71.4723 240.921 31.5417 27.5369 273.911 16.9819 9.10671 
+67.49 28.5207 71.4793 240.91 31.5462 27.5442 273.908 16.984 9.10847 
+67.5 28.5138 71.4862 240.898 31.5507 27.5514 273.904 16.9861 9.11024 
+67.51 28.5068 71.4932 240.886 31.5552 27.5587 273.9 16.9882 9.11201 
+67.52 28.4999 71.5001 240.874 31.5596 27.5659 273.896 16.9903 9.11378 
+67.53 28.493 71.507 240.863 31.5641 27.5732 273.892 16.9924 9.11555 
+67.54 28.486 71.514 240.851 31.5686 27.5805 273.888 16.9945 9.11732 
+67.55 28.4791 71.5209 240.839 31.5731 27.5877 273.884 16.9966 9.1191 
+67.56 28.4721 71.5279 240.827 31.5776 27.595 273.88 16.9987 9.12087 
+67.57 28.4652 71.5348 240.816 31.5821 27.6023 273.877 17.0008 9.12265 
+67.58 28.4582 71.5418 240.804 31.5865 27.6095 273.873 17.0029 9.12442 
+67.59 28.4513 71.5487 240.792 31.591 27.6168 273.869 17.0051 9.1262 
+67.6 28.4444 71.5556 240.78 31.5955 27.6241 273.865 17.0072 9.12798 
+67.61 28.4374 71.5626 240.769 31.6 27.6313 273.861 17.0093 9.12975 
+67.62 28.4305 71.5695 240.757 31.6045 27.6386 273.857 17.0114 9.13153 
+67.63 28.4236 71.5764 240.745 31.609 27.6459 273.853 17.0135 9.13331 
+67.64 28.4166 71.5834 240.733 31.6135 27.6531 273.849 17.0156 9.13509 
+67.65 28.4097 71.5903 240.722 31.6179 27.6604 273.845 17.0177 9.13688 
+67.66 28.4028 71.5972 240.71 31.6224 27.6677 273.841 17.0199 9.13866 
+67.67 28.3959 71.6041 240.698 31.6269 27.675 273.838 17.022 9.14044 
+67.68 28.3889 71.6111 240.686 31.6314 27.6823 273.834 17.0241 9.14223 
+67.69 28.382 71.618 240.675 31.6359 27.6895 273.83 17.0262 9.14402 
+67.7 28.3751 71.6249 240.663 31.6404 27.6968 273.826 17.0283 9.1458 
+67.71 28.3682 71.6318 240.651 31.6449 27.7041 273.822 17.0304 9.14759 
+67.72 28.3613 71.6387 240.639 31.6493 27.7114 273.818 17.0326 9.14938 
+67.73 28.3544 71.6456 240.628 31.6538 27.7187 273.814 17.0347 9.15117 
+67.74 28.3474 71.6526 240.616 31.6583 27.726 273.81 17.0368 9.15296 
+67.75 28.3405 71.6595 240.604 31.6628 27.7332 273.806 17.0389 9.15475 
+67.76 28.3336 71.6664 240.592 31.6673 27.7405 273.802 17.0411 9.15654 
+67.77 28.3267 71.6733 240.58 31.6718 27.7478 273.798 17.0432 9.15834 
+67.78 28.3198 71.6802 240.569 31.6763 27.7551 273.795 17.0453 9.16013 
+67.79 28.3129 71.6871 240.557 31.6807 27.7624 273.791 17.0474 9.16193 
+67.8 28.306 71.694 240.545 31.6852 27.7697 273.787 17.0495 9.16372 
+67.81 28.2991 71.7009 240.533 31.6897 27.777 273.783 17.0517 9.16552 
+67.82 28.2922 71.7078 240.522 31.6942 27.7843 273.779 17.0538 9.16732 
+67.83 28.2853 71.7147 240.51 31.6987 27.7916 273.775 17.0559 9.16912 
+67.84 28.2784 71.7216 240.498 31.7032 27.7989 273.771 17.0581 9.17092 
+67.85 28.2715 71.7285 240.486 31.7077 27.8062 273.767 17.0602 9.17272 
+67.86 28.2646 71.7354 240.474 31.7121 27.8135 273.763 17.0623 9.17452 
+67.87 28.2577 71.7423 240.463 31.7166 27.8208 273.759 17.0644 9.17633 
+67.88 28.2508 71.7492 240.451 31.7211 27.8281 273.755 17.0666 9.17813 
+67.89 28.2439 71.7561 240.439 31.7256 27.8354 273.751 17.0687 9.17994 
+67.9 28.237 71.763 240.427 31.7301 27.8427 273.747 17.0708 9.18174 
+67.91 28.2301 71.7699 240.415 31.7346 27.85 273.743 17.073 9.18355 
+67.92 28.2232 71.7768 240.404 31.7391 27.8573 273.74 17.0751 9.18536 
+67.93 28.2164 71.7836 240.392 31.7436 27.8646 273.736 17.0772 9.18717 
+67.94 28.2095 71.7905 240.38 31.748 27.872 273.732 17.0794 9.18898 
+67.95 28.2026 71.7974 240.368 31.7525 27.8793 273.728 17.0815 9.19079 
+67.96 28.1957 71.8043 240.356 31.757 27.8866 273.724 17.0836 9.1926 
+67.97 28.1888 71.8112 240.345 31.7615 27.8939 273.72 17.0858 9.19441 
+67.98 28.1819 71.8181 240.333 31.766 27.9012 273.716 17.0879 9.19623 
+67.99 28.1751 71.8249 240.321 31.7705 27.9085 273.712 17.09 9.19804 
+68 28.1682 71.8318 240.309 31.775 27.9159 273.708 17.0922 9.19986 
+68.01 28.1613 71.8387 240.297 31.7794 27.9232 273.704 17.0943 9.20167 
+68.02 28.1544 71.8456 240.286 31.7839 27.9305 273.7 17.0964 9.20349 
+68.03 28.1476 71.8524 240.274 31.7884 27.9378 273.696 17.0986 9.20531 
+68.04 28.1407 71.8593 240.262 31.7929 27.9451 273.692 17.1007 9.20713 
+68.05 28.1338 71.8662 240.25 31.7974 27.9525 273.688 17.1029 9.20895 
+68.06 28.127 71.873 240.238 31.8019 27.9598 273.684 17.105 9.21077 
+68.07 28.1201 71.8799 240.226 31.8064 27.9671 273.68 17.1071 9.21259 
+68.08 28.1132 71.8868 240.215 31.8109 27.9745 273.676 17.1093 9.21442 
+68.09 28.1064 71.8936 240.203 31.8154 27.9818 273.672 17.1114 9.21624 
+68.1 28.0995 71.9005 240.191 31.8198 27.9891 273.668 17.1136 9.21807 
+68.11 28.0927 71.9073 240.179 31.8243 27.9965 273.664 17.1157 9.21989 
+68.12 28.0858 71.9142 240.167 31.8288 28.0038 273.66 17.1179 9.22172 
+68.13 28.079 71.921 240.156 31.8333 28.0111 273.656 17.12 9.22355 
+68.14 28.0721 71.9279 240.144 31.8378 28.0185 273.652 17.1221 9.22538 
+68.15 28.0653 71.9347 240.132 31.8423 28.0258 273.648 17.1243 9.22721 
+68.16 28.0584 71.9416 240.12 31.8468 28.0331 273.645 17.1264 9.22904 
+68.17 28.0516 71.9484 240.108 31.8513 28.0405 273.641 17.1286 9.23087 
+68.18 28.0447 71.9553 240.096 31.8557 28.0478 273.637 17.1307 9.2327 
+68.19 28.0379 71.9621 240.085 31.8602 28.0552 273.633 17.1329 9.23454 
+68.2 28.031 71.969 240.073 31.8647 28.0625 273.629 17.135 9.23637 
+68.21 28.0242 71.9758 240.061 31.8692 28.0699 273.625 17.1372 9.23821 
+68.22 28.0173 71.9827 240.049 31.8737 28.0772 273.621 17.1393 9.24004 
+68.23 28.0105 71.9895 240.037 31.8782 28.0846 273.617 17.1415 9.24188 
+68.24 28.0036 71.9964 240.025 31.8827 28.0919 273.613 17.1436 9.24372 
+68.25 27.9968 72.0032 240.014 31.8872 28.0993 273.609 17.1458 9.24556 
+68.26 27.99 72.01 240.002 31.8917 28.1066 273.605 17.1479 9.2474 
+68.27 27.9831 72.0169 239.99 31.8961 28.114 273.601 17.1501 9.24924 
+68.28 27.9763 72.0237 239.978 31.9006 28.1213 273.597 17.1523 9.25109 
+68.29 27.9695 72.0305 239.966 31.9051 28.1287 273.593 17.1544 9.25293 
+68.3 27.9626 72.0374 239.954 31.9096 28.136 273.589 17.1566 9.25477 
+68.31 27.9558 72.0442 239.942 31.9141 28.1434 273.585 17.1587 9.25662 
+68.32 27.949 72.051 239.931 31.9186 28.1508 273.581 17.1609 9.25847 
+68.33 27.9422 72.0578 239.919 31.9231 28.1581 273.577 17.163 9.26031 
+68.34 27.9353 72.0647 239.907 31.9276 28.1655 273.573 17.1652 9.26216 
+68.35 27.9285 72.0715 239.895 31.9321 28.1729 273.569 17.1673 9.26401 
+68.36 27.9217 72.0783 239.883 31.9366 28.1802 273.565 17.1695 9.26586 
+68.37 27.9149 72.0851 239.871 31.941 28.1876 273.561 17.1717 9.26771 
+68.38 27.9081 72.0919 239.86 31.9455 28.195 273.557 17.1738 9.26957 
+68.39 27.9013 72.0987 239.848 31.95 28.2023 273.553 17.176 9.27142 
+68.4 27.8944 72.1056 239.836 31.9545 28.2097 273.549 17.1781 9.27327 
+68.41 27.8876 72.1124 239.824 31.959 28.2171 273.545 17.1803 9.27513 
+68.42 27.8808 72.1192 239.812 31.9635 28.2244 273.541 17.1825 9.27698 
+68.43 27.874 72.126 239.8 31.968 28.2318 273.537 17.1846 9.27884 
+68.44 27.8672 72.1328 239.788 31.9725 28.2392 273.532 17.1868 9.2807 
+68.45 27.8604 72.1396 239.776 31.977 28.2466 273.528 17.189 9.28256 
+68.46 27.8536 72.1464 239.765 31.9815 28.2539 273.524 17.1911 9.28442 
+68.47 27.8468 72.1532 239.753 31.9859 28.2613 273.52 17.1933 9.28628 
+68.48 27.84 72.16 239.741 31.9904 28.2687 273.516 17.1955 9.28814 
+68.49 27.8332 72.1668 239.729 31.9949 28.2761 273.512 17.1976 9.29 
+68.5 27.8264 72.1736 239.717 31.9994 28.2835 273.508 17.1998 9.29187 
+68.51 27.8196 72.1804 239.705 32.0039 28.2909 273.504 17.202 9.29373 
+68.52 27.8128 72.1872 239.693 32.0084 28.2982 273.5 17.2041 9.2956 
+68.53 27.806 72.194 239.681 32.0129 28.3056 273.496 17.2063 9.29747 
+68.54 27.7992 72.2008 239.67 32.0174 28.313 273.492 17.2085 9.29933 
+68.55 27.7924 72.2076 239.658 32.0219 28.3204 273.488 17.2106 9.3012 
+68.56 27.7856 72.2144 239.646 32.0264 28.3278 273.484 17.2128 9.30307 
+68.57 27.7788 72.2212 239.634 32.0308 28.3352 273.48 17.215 9.30494 
+68.58 27.772 72.228 239.622 32.0353 28.3426 273.476 17.2172 9.30681 
+68.59 27.7653 72.2347 239.61 32.0398 28.35 273.472 17.2193 9.30869 
+68.6 27.7585 72.2415 239.598 32.0443 28.3574 273.468 17.2215 9.31056 
+68.61 27.7517 72.2483 239.586 32.0488 28.3648 273.464 17.2237 9.31244 
+68.62 27.7449 72.2551 239.575 32.0533 28.3722 273.46 17.2259 9.31431 
+68.63 27.7381 72.2619 239.563 32.0578 28.3796 273.456 17.228 9.31619 
+68.64 27.7314 72.2686 239.551 32.0623 28.387 273.452 17.2302 9.31807 
+68.65 27.7246 72.2754 239.539 32.0668 28.3944 273.448 17.2324 9.31994 
+68.66 27.7178 72.2822 239.527 32.0713 28.4018 273.444 17.2346 9.32182 
+68.67 27.711 72.289 239.515 32.0758 28.4092 273.44 17.2367 9.3237 
+68.68 27.7043 72.2957 239.503 32.0803 28.4166 273.435 17.2389 9.32559 
+68.69 27.6975 72.3025 239.491 32.0847 28.424 273.431 17.2411 9.32747 
+68.7 27.6907 72.3093 239.479 32.0892 28.4314 273.427 17.2433 9.32935 
+68.71 27.684 72.316 239.467 32.0937 28.4388 273.423 17.2455 9.33124 
+68.72 27.6772 72.3228 239.456 32.0982 28.4462 273.419 17.2476 9.33312 
+68.73 27.6704 72.3296 239.444 32.1027 28.4536 273.415 17.2498 9.33501 
+68.74 27.6637 72.3363 239.432 32.1072 28.461 273.411 17.252 9.33689 
+68.75 27.6569 72.3431 239.42 32.1117 28.4685 273.407 17.2542 9.33878 
+68.76 27.6501 72.3499 239.408 32.1162 28.4759 273.403 17.2564 9.34067 
+68.77 27.6434 72.3566 239.396 32.1207 28.4833 273.399 17.2586 9.34256 
+68.78 27.6366 72.3634 239.384 32.1252 28.4907 273.395 17.2607 9.34445 
+68.79 27.6299 72.3701 239.372 32.1297 28.4981 273.391 17.2629 9.34635 
+68.8 27.6231 72.3769 239.36 32.1342 28.5056 273.387 17.2651 9.34824 
+68.81 27.6164 72.3836 239.348 32.1386 28.513 273.383 17.2673 9.35013 
+68.82 27.6096 72.3904 239.336 32.1431 28.5204 273.378 17.2695 9.35203 
+68.83 27.6029 72.3971 239.325 32.1476 28.5278 273.374 17.2717 9.35392 
+68.84 27.5961 72.4039 239.313 32.1521 28.5353 273.37 17.2739 9.35582 
+68.85 27.5894 72.4106 239.301 32.1566 28.5427 273.366 17.2761 9.35772 
+68.86 27.5826 72.4174 239.289 32.1611 28.5501 273.362 17.2782 9.35962 
+68.87 27.5759 72.4241 239.277 32.1656 28.5575 273.358 17.2804 9.36152 
+68.88 27.5692 72.4308 239.265 32.1701 28.565 273.354 17.2826 9.36342 
+68.89 27.5624 72.4376 239.253 32.1746 28.5724 273.35 17.2848 9.36532 
+68.9 27.5557 72.4443 239.241 32.1791 28.5798 273.346 17.287 9.36722 
+68.91 27.5489 72.4511 239.229 32.1836 28.5873 273.342 17.2892 9.36913 
+68.92 27.5422 72.4578 239.217 32.1881 28.5947 273.338 17.2914 9.37103 
+68.93 27.5355 72.4645 239.205 32.1926 28.6021 273.333 17.2936 9.37294 
+68.94 27.5287 72.4713 239.193 32.1971 28.6096 273.329 17.2958 9.37485 
+68.95 27.522 72.478 239.181 32.2015 28.617 273.325 17.298 9.37675 
+68.96 27.5153 72.4847 239.169 32.206 28.6245 273.321 17.3002 9.37866 
+68.97 27.5086 72.4914 239.158 32.2105 28.6319 273.317 17.3024 9.38057 
+68.98 27.5018 72.4982 239.146 32.215 28.6394 273.313 17.3046 9.38248 
+68.99 27.4951 72.5049 239.134 32.2195 28.6468 273.309 17.3068 9.3844 
+69 27.4884 72.5116 239.122 32.224 28.6542 273.305 17.309 9.38631 
+69.01 27.4817 72.5183 239.11 32.2285 28.6617 273.301 17.3112 9.38822 
+69.02 27.4749 72.5251 239.098 32.233 28.6691 273.296 17.3134 9.39014 
+69.03 27.4682 72.5318 239.086 32.2375 28.6766 273.292 17.3156 9.39205 
+69.04 27.4615 72.5385 239.074 32.242 28.684 273.288 17.3178 9.39397 
+69.05 27.4548 72.5452 239.062 32.2465 28.6915 273.284 17.32 9.39589 
+69.06 27.4481 72.5519 239.05 32.251 28.6989 273.28 17.3222 9.3978 
+69.07 27.4414 72.5586 239.038 32.2555 28.7064 273.276 17.3244 9.39972 
+69.08 27.4347 72.5653 239.026 32.26 28.7139 273.272 17.3266 9.40165 
+69.09 27.428 72.572 239.014 32.2645 28.7213 273.268 17.3288 9.40357 
+69.1 27.4213 72.5787 239.002 32.2689 28.7288 273.264 17.331 9.40549 
+69.11 27.4145 72.5855 238.99 32.2734 28.7362 273.259 17.3332 9.40741 
+69.12 27.4078 72.5922 238.978 32.2779 28.7437 273.255 17.3354 9.40934 
+69.13 27.4011 72.5989 238.966 32.2824 28.7512 273.251 17.3376 9.41126 
+69.14 27.3944 72.6056 238.954 32.2869 28.7586 273.247 17.3398 9.41319 
+69.15 27.3877 72.6123 238.942 32.2914 28.7661 273.243 17.342 9.41512 
+69.16 27.381 72.619 238.931 32.2959 28.7736 273.239 17.3442 9.41705 
+69.17 27.3743 72.6257 238.919 32.3004 28.781 273.235 17.3464 9.41898 
+69.18 27.3677 72.6323 238.907 32.3049 28.7885 273.23 17.3487 9.42091 
+69.19 27.361 72.639 238.895 32.3094 28.796 273.226 17.3509 9.42284 
+69.2 27.3543 72.6457 238.883 32.3139 28.8034 273.222 17.3531 9.42477 
+69.21 27.3476 72.6524 238.871 32.3184 28.8109 273.218 17.3553 9.4267 
+69.22 27.3409 72.6591 238.859 32.3229 28.8184 273.214 17.3575 9.42864 
+69.23 27.3342 72.6658 238.847 32.3274 28.8259 273.21 17.3597 9.43057 
+69.24 27.3275 72.6725 238.835 32.3319 28.8333 273.206 17.3619 9.43251 
+69.25 27.3208 72.6792 238.823 32.3364 28.8408 273.201 17.3641 9.43445 
+69.26 27.3142 72.6858 238.811 32.3409 28.8483 273.197 17.3664 9.43639 
+69.27 27.3075 72.6925 238.799 32.3453 28.8558 273.193 17.3686 9.43832 
+69.28 27.3008 72.6992 238.787 32.3498 28.8632 273.189 17.3708 9.44026 
+69.29 27.2941 72.7059 238.775 32.3543 28.8707 273.185 17.373 9.44221 
+69.3 27.2874 72.7126 238.763 32.3588 28.8782 273.181 17.3752 9.44415 
+69.31 27.2808 72.7192 238.751 32.3633 28.8857 273.176 17.3774 9.44609 
+69.32 27.2741 72.7259 238.739 32.3678 28.8932 273.172 17.3797 9.44804 
+69.33 27.2674 72.7326 238.727 32.3723 28.9007 273.168 17.3819 9.44998 
+69.34 27.2607 72.7393 238.715 32.3768 28.9082 273.164 17.3841 9.45193 
+69.35 27.2541 72.7459 238.703 32.3813 28.9157 273.16 17.3863 9.45387 
+69.36 27.2474 72.7526 238.691 32.3858 28.9231 273.156 17.3885 9.45582 
+69.37 27.2407 72.7593 238.679 32.3903 28.9306 273.151 17.3908 9.45777 
+69.38 27.2341 72.7659 238.667 32.3948 28.9381 273.147 17.393 9.45972 
+69.39 27.2274 72.7726 238.655 32.3993 28.9456 273.143 17.3952 9.46167 
+69.4 27.2208 72.7792 238.643 32.4038 28.9531 273.139 17.3974 9.46363 
+69.41 27.2141 72.7859 238.631 32.4083 28.9606 273.135 17.3996 9.46558 
+69.42 27.2074 72.7926 238.619 32.4128 28.9681 273.131 17.4019 9.46753 
+69.43 27.2008 72.7992 238.607 32.4173 28.9756 273.126 17.4041 9.46949 
+69.44 27.1941 72.8059 238.595 32.4218 28.9831 273.122 17.4063 9.47145 
+69.45 27.1875 72.8125 238.583 32.4263 28.9906 273.118 17.4086 9.4734 
+69.46 27.1808 72.8192 238.571 32.4307 28.9981 273.114 17.4108 9.47536 
+69.47 27.1742 72.8258 238.559 32.4352 29.0056 273.11 17.413 9.47732 
+69.48 27.1675 72.8325 238.547 32.4397 29.0131 273.105 17.4152 9.47928 
+69.49 27.1609 72.8391 238.535 32.4442 29.0206 273.101 17.4175 9.48124 
+69.5 27.1542 72.8458 238.523 32.4487 29.0282 273.097 17.4197 9.4832 
+69.51 27.1476 72.8524 238.511 32.4532 29.0357 273.093 17.4219 9.48517 
+69.52 27.141 72.859 238.499 32.4577 29.0432 273.089 17.4242 9.48713 
+69.53 27.1343 72.8657 238.487 32.4622 29.0507 273.085 17.4264 9.4891 
+69.54 27.1277 72.8723 238.475 32.4667 29.0582 273.08 17.4286 9.49106 
+69.55 27.121 72.879 238.463 32.4712 29.0657 273.076 17.4309 9.49303 
+69.56 27.1144 72.8856 238.451 32.4757 29.0732 273.072 17.4331 9.495 
+69.57 27.1078 72.8922 238.439 32.4802 29.0807 273.068 17.4353 9.49697 
+69.58 27.1011 72.8989 238.427 32.4847 29.0883 273.064 17.4376 9.49894 
+69.59 27.0945 72.9055 238.415 32.4892 29.0958 273.059 17.4398 9.50091 
+69.6 27.0879 72.9121 238.403 32.4937 29.1033 273.055 17.442 9.50288 
+69.61 27.0813 72.9187 238.391 32.4982 29.1108 273.051 17.4443 9.50485 
+69.62 27.0746 72.9254 238.379 32.5027 29.1184 273.047 17.4465 9.50683 
+69.63 27.068 72.932 238.367 32.5072 29.1259 273.042 17.4487 9.5088 
+69.64 27.0614 72.9386 238.355 32.5117 29.1334 273.038 17.451 9.51078 
+69.65 27.0548 72.9452 238.343 32.5162 29.1409 273.034 17.4532 9.51276 
+69.66 27.0481 72.9519 238.331 32.5207 29.1485 273.03 17.4555 9.51473 
+69.67 27.0415 72.9585 238.319 32.5252 29.156 273.026 17.4577 9.51671 
+69.68 27.0349 72.9651 238.307 32.5297 29.1635 273.021 17.4599 9.51869 
+69.69 27.0283 72.9717 238.295 32.5342 29.1711 273.017 17.4622 9.52067 
+69.7 27.0217 72.9783 238.283 32.5386 29.1786 273.013 17.4644 9.52266 
+69.71 27.0151 72.9849 238.271 32.5431 29.1861 273.009 17.4667 9.52464 
+69.72 27.0084 72.9916 238.259 32.5476 29.1937 273.004 17.4689 9.52662 
+69.73 27.0018 72.9982 238.247 32.5521 29.2012 273 17.4711 9.52861 
+69.74 26.9952 73.0048 238.235 32.5566 29.2087 272.996 17.4734 9.53059 
+69.75 26.9886 73.0114 238.223 32.5611 29.2163 272.992 17.4756 9.53258 
+69.76 26.982 73.018 238.211 32.5656 29.2238 272.988 17.4779 9.53457 
+69.77 26.9754 73.0246 238.199 32.5701 29.2314 272.983 17.4801 9.53656 
+69.78 26.9688 73.0312 238.186 32.5746 29.2389 272.979 17.4824 9.53855 
+69.79 26.9622 73.0378 238.174 32.5791 29.2464 272.975 17.4846 9.54054 
+69.8 26.9556 73.0444 238.162 32.5836 29.254 272.971 17.4869 9.54253 
+69.81 26.949 73.051 238.15 32.5881 29.2615 272.966 17.4891 9.54452 
+69.82 26.9424 73.0576 238.138 32.5926 29.2691 272.962 17.4914 9.54652 
+69.83 26.9358 73.0642 238.126 32.5971 29.2766 272.958 17.4936 9.54851 
+69.84 26.9292 73.0708 238.114 32.6016 29.2842 272.954 17.4959 9.55051 
+69.85 26.9226 73.0774 238.102 32.6061 29.2917 272.949 17.4981 9.55251 
+69.86 26.9161 73.0839 238.09 32.6106 29.2993 272.945 17.5004 9.55451 
+69.87 26.9095 73.0905 238.078 32.6151 29.3069 272.941 17.5026 9.5565 
+69.88 26.9029 73.0971 238.066 32.6196 29.3144 272.937 17.5049 9.5585 
+69.89 26.8963 73.1037 238.054 32.6241 29.322 272.932 17.5071 9.56051 
+69.9 26.8897 73.1103 238.042 32.6286 29.3295 272.928 17.5094 9.56251 
+69.91 26.8831 73.1169 238.03 32.6331 29.3371 272.924 17.5116 9.56451 
+69.92 26.8766 73.1234 238.018 32.6376 29.3446 272.92 17.5139 9.56651 
+69.93 26.87 73.13 238.006 32.6421 29.3522 272.915 17.5162 9.56852 
+69.94 26.8634 73.1366 237.994 32.6466 29.3598 272.911 17.5184 9.57053 
+69.95 26.8568 73.1432 237.982 32.6511 29.3673 272.907 17.5207 9.57253 
+69.96 26.8503 73.1497 237.97 32.6556 29.3749 272.903 17.5229 9.57454 
+69.97 26.8437 73.1563 237.957 32.6601 29.3825 272.898 17.5252 9.57655 
+69.98 26.8371 73.1629 237.945 32.6646 29.39 272.894 17.5274 9.57856 
+69.99 26.8305 73.1695 237.933 32.6691 29.3976 272.89 17.5297 9.58057 
+70 26.824 73.176 237.921 32.6736 29.4052 272.885 17.532 9.58258 
+70.01 26.8174 73.1826 237.909 32.6781 29.4127 272.881 17.5342 9.5846 
+70.02 26.8108 73.1892 237.897 32.6825 29.4203 272.877 17.5365 9.58661 
+70.03 26.8043 73.1957 237.885 32.687 29.4279 272.873 17.5388 9.58863 
+70.04 26.7977 73.2023 237.873 32.6915 29.4355 272.868 17.541 9.59064 
+70.05 26.7912 73.2088 237.861 32.696 29.4431 272.864 17.5433 9.59266 
+70.06 26.7846 73.2154 237.849 32.7005 29.4506 272.86 17.5455 9.59468 
+70.07 26.7781 73.2219 237.837 32.705 29.4582 272.855 17.5478 9.5967 
+70.08 26.7715 73.2285 237.825 32.7095 29.4658 272.851 17.5501 9.59872 
+70.09 26.7649 73.2351 237.813 32.714 29.4734 272.847 17.5523 9.60074 
+70.1 26.7584 73.2416 237.801 32.7185 29.481 272.843 17.5546 9.60276 
+70.11 26.7518 73.2482 237.788 32.723 29.4885 272.838 17.5569 9.60478 
+70.12 26.7453 73.2547 237.776 32.7275 29.4961 272.834 17.5591 9.60681 
+70.13 26.7387 73.2613 237.764 32.732 29.5037 272.83 17.5614 9.60883 
+70.14 26.7322 73.2678 237.752 32.7365 29.5113 272.825 17.5637 9.61086 
+70.15 26.7257 73.2743 237.74 32.741 29.5189 272.821 17.566 9.61289 
+70.16 26.7191 73.2809 237.728 32.7455 29.5265 272.817 17.5682 9.61492 
+70.17 26.7126 73.2874 237.716 32.75 29.5341 272.813 17.5705 9.61694 
+70.18 26.706 73.294 237.704 32.7545 29.5417 272.808 17.5728 9.61898 
+70.19 26.6995 73.3005 237.692 32.759 29.5493 272.804 17.575 9.62101 
+70.2 26.693 73.307 237.68 32.7635 29.5569 272.8 17.5773 9.62304 
+70.21 26.6864 73.3136 237.668 32.768 29.5645 272.795 17.5796 9.62507 
+70.22 26.6799 73.3201 237.655 32.7725 29.572 272.791 17.5819 9.62711 
+70.23 26.6734 73.3266 237.643 32.777 29.5796 272.787 17.5841 9.62914 
+70.24 26.6668 73.3332 237.631 32.7815 29.5872 272.782 17.5864 9.63118 
+70.25 26.6603 73.3397 237.619 32.786 29.5948 272.778 17.5887 9.63322 
+70.26 26.6538 73.3462 237.607 32.7905 29.6025 272.774 17.591 9.63525 
+70.27 26.6473 73.3527 237.595 32.795 29.6101 272.769 17.5932 9.63729 
+70.28 26.6407 73.3593 237.583 32.7995 29.6177 272.765 17.5955 9.63933 
+70.29 26.6342 73.3658 237.571 32.804 29.6253 272.761 17.5978 9.64138 
+70.3 26.6277 73.3723 237.559 32.8085 29.6329 272.757 17.6001 9.64342 
+70.31 26.6212 73.3788 237.547 32.813 29.6405 272.752 17.6024 9.64546 
+70.32 26.6147 73.3853 237.534 32.8175 29.6481 272.748 17.6046 9.64751 
+70.33 26.6081 73.3919 237.522 32.822 29.6557 272.744 17.6069 9.64955 
+70.34 26.6016 73.3984 237.51 32.8265 29.6633 272.739 17.6092 9.6516 
+70.35 26.5951 73.4049 237.498 32.831 29.6709 272.735 17.6115 9.65364 
+70.36 26.5886 73.4114 237.486 32.8355 29.6785 272.731 17.6138 9.65569 
+70.37 26.5821 73.4179 237.474 32.84 29.6862 272.726 17.6161 9.65774 
+70.38 26.5756 73.4244 237.462 32.8445 29.6938 272.722 17.6183 9.65979 
+70.39 26.5691 73.4309 237.45 32.849 29.7014 272.718 17.6206 9.66185 
+70.4 26.5626 73.4374 237.438 32.8535 29.709 272.713 17.6229 9.6639 
+70.41 26.5561 73.4439 237.425 32.858 29.7166 272.709 17.6252 9.66595 
+70.42 26.5496 73.4504 237.413 32.8625 29.7243 272.705 17.6275 9.66801 
+70.43 26.5431 73.4569 237.401 32.867 29.7319 272.7 17.6298 9.67006 
+70.44 26.5366 73.4634 237.389 32.8715 29.7395 272.696 17.6321 9.67212 
+70.45 26.5301 73.4699 237.377 32.876 29.7471 272.691 17.6343 9.67418 
+70.46 26.5236 73.4764 237.365 32.8805 29.7548 272.687 17.6366 9.67623 
+70.47 26.5171 73.4829 237.353 32.885 29.7624 272.683 17.6389 9.67829 
+70.48 26.5106 73.4894 237.341 32.8895 29.77 272.678 17.6412 9.68035 
+70.49 26.5041 73.4959 237.328 32.894 29.7777 272.674 17.6435 9.68242 
+70.5 26.4976 73.5024 237.316 32.8985 29.7853 272.67 17.6458 9.68448 
+70.51 26.4911 73.5089 237.304 32.903 29.7929 272.665 17.6481 9.68654 
+70.52 26.4846 73.5154 237.292 32.9075 29.8006 272.661 17.6504 9.68861 
+70.53 26.4782 73.5218 237.28 32.912 29.8082 272.657 17.6527 9.69067 
+70.54 26.4717 73.5283 237.268 32.9165 29.8158 272.652 17.655 9.69274 
+70.55 26.4652 73.5348 237.256 32.921 29.8235 272.648 17.6573 9.69481 
+70.56 26.4587 73.5413 237.243 32.9255 29.8311 272.644 17.6596 9.69688 
+70.57 26.4522 73.5478 237.231 32.93 29.8388 272.639 17.6619 9.69895 
+70.58 26.4458 73.5542 237.219 32.9345 29.8464 272.635 17.6642 9.70102 
+70.59 26.4393 73.5607 237.207 32.939 29.854 272.63 17.6665 9.70309 
+70.6 26.4328 73.5672 237.195 32.9435 29.8617 272.626 17.6688 9.70516 
+70.61 26.4263 73.5737 237.183 32.9479 29.8693 272.622 17.671 9.70724 
+70.62 26.4199 73.5801 237.171 32.9524 29.877 272.617 17.6733 9.70931 
+70.63 26.4134 73.5866 237.158 32.9569 29.8846 272.613 17.6756 9.71139 
+70.64 26.4069 73.5931 237.146 32.9614 29.8923 272.609 17.6779 9.71346 
+70.65 26.4005 73.5995 237.134 32.9659 29.8999 272.604 17.6802 9.71554 
+70.66 26.394 73.606 237.122 32.9704 29.9076 272.6 17.6826 9.71762 
+70.67 26.3875 73.6125 237.11 32.9749 29.9152 272.595 17.6849 9.7197 
+70.68 26.3811 73.6189 237.098 32.9794 29.9229 272.591 17.6872 9.72178 
+70.69 26.3746 73.6254 237.086 32.9839 29.9305 272.587 17.6895 9.72387 
+70.7 26.3682 73.6318 237.073 32.9884 29.9382 272.582 17.6918 9.72595 
+70.71 26.3617 73.6383 237.061 32.9929 29.9459 272.578 17.6941 9.72803 
+70.72 26.3553 73.6447 237.049 32.9974 29.9535 272.574 17.6964 9.73012 
+70.73 26.3488 73.6512 237.037 33.0019 29.9612 272.569 17.6987 9.7322 
+70.74 26.3424 73.6576 237.025 33.0064 29.9688 272.565 17.701 9.73429 
+70.75 26.3359 73.6641 237.013 33.0109 29.9765 272.56 17.7033 9.73638 
+70.76 26.3295 73.6705 237 33.0154 29.9842 272.556 17.7056 9.73847 
+70.77 26.323 73.677 236.988 33.0199 29.9918 272.552 17.7079 9.74056 
+70.78 26.3166 73.6834 236.976 33.0244 29.9995 272.547 17.7102 9.74265 
+70.79 26.3101 73.6899 236.964 33.0289 30.0072 272.543 17.7125 9.74474 
+70.8 26.3037 73.6963 236.952 33.0334 30.0148 272.538 17.7148 9.74684 
+70.81 26.2972 73.7028 236.94 33.0379 30.0225 272.534 17.7172 9.74893 
+70.82 26.2908 73.7092 236.927 33.0424 30.0302 272.53 17.7195 9.75103 
+70.83 26.2844 73.7156 236.915 33.0469 30.0378 272.525 17.7218 9.75312 
+70.84 26.2779 73.7221 236.903 33.0514 30.0455 272.521 17.7241 9.75522 
+70.85 26.2715 73.7285 236.891 33.0559 30.0532 272.516 17.7264 9.75732 
+70.86 26.2651 73.7349 236.879 33.0604 30.0609 272.512 17.7287 9.75942 
+70.87 26.2586 73.7414 236.867 33.0649 30.0686 272.507 17.731 9.76152 
+70.88 26.2522 73.7478 236.854 33.0694 30.0762 272.503 17.7334 9.76362 
+70.89 26.2458 73.7542 236.842 33.0739 30.0839 272.499 17.7357 9.76572 
+70.9 26.2394 73.7606 236.83 33.0784 30.0916 272.494 17.738 9.76783 
+70.91 26.2329 73.7671 236.818 33.0829 30.0993 272.49 17.7403 9.76993 
+70.92 26.2265 73.7735 236.806 33.0874 30.107 272.485 17.7426 9.77204 
+70.93 26.2201 73.7799 236.793 33.0919 30.1146 272.481 17.7449 9.77414 
+70.94 26.2137 73.7863 236.781 33.0964 30.1223 272.476 17.7473 9.77625 
+70.95 26.2072 73.7928 236.769 33.1009 30.13 272.472 17.7496 9.77836 
+70.96 26.2008 73.7992 236.757 33.1054 30.1377 272.468 17.7519 9.78047 
+70.97 26.1944 73.8056 236.745 33.1099 30.1454 272.463 17.7542 9.78258 
+70.98 26.188 73.812 236.732 33.1144 30.1531 272.459 17.7565 9.78469 
+70.99 26.1816 73.8184 236.72 33.1189 30.1608 272.454 17.7589 9.78681 
+71 26.1752 73.8248 236.708 33.1234 30.1685 272.45 17.7612 9.78892 
+71.01 26.1688 73.8312 236.696 33.1279 30.1762 272.445 17.7635 9.79103 
+71.02 26.1624 73.8376 236.684 33.1324 30.1839 272.441 17.7658 9.79315 
+71.03 26.156 73.844 236.672 33.1369 30.1916 272.437 17.7682 9.79527 
+71.04 26.1496 73.8504 236.659 33.1414 30.1993 272.432 17.7705 9.79739 
+71.05 26.1432 73.8568 236.647 33.1459 30.207 272.428 17.7728 9.7995 
+71.06 26.1368 73.8632 236.635 33.1504 30.2147 272.423 17.7751 9.80162 
+71.07 26.1304 73.8696 236.623 33.1549 30.2224 272.419 17.7775 9.80375 
+71.08 26.124 73.876 236.611 33.1594 30.2301 272.414 17.7798 9.80587 
+71.09 26.1176 73.8824 236.598 33.1639 30.2378 272.41 17.7821 9.80799 
+71.1 26.1112 73.8888 236.586 33.1684 30.2455 272.405 17.7845 9.81012 
+71.11 26.1048 73.8952 236.574 33.1729 30.2532 272.401 17.7868 9.81224 
+71.12 26.0984 73.9016 236.562 33.1774 30.2609 272.397 17.7891 9.81437 
+71.13 26.092 73.908 236.549 33.1819 30.2686 272.392 17.7914 9.81649 
+71.14 26.0856 73.9144 236.537 33.1864 30.2763 272.388 17.7938 9.81862 
+71.15 26.0792 73.9208 236.525 33.1909 30.284 272.383 17.7961 9.82075 
+71.16 26.0728 73.9272 236.513 33.1954 30.2917 272.379 17.7984 9.82288 
+71.17 26.0665 73.9335 236.501 33.1999 30.2994 272.374 17.8008 9.82501 
+71.18 26.0601 73.9399 236.488 33.2044 30.3072 272.37 17.8031 9.82715 
+71.19 26.0537 73.9463 236.476 33.2089 30.3149 272.365 17.8054 9.82928 
+71.2 26.0473 73.9527 236.464 33.2134 30.3226 272.361 17.8078 9.83141 
+71.21 26.0409 73.9591 236.452 33.2179 30.3303 272.356 17.8101 9.83355 
+71.22 26.0346 73.9654 236.44 33.2224 30.338 272.352 17.8125 9.83569 
+71.23 26.0282 73.9718 236.427 33.2269 30.3458 272.347 17.8148 9.83782 
+71.24 26.0218 73.9782 236.415 33.2314 30.3535 272.343 17.8171 9.83996 
+71.25 26.0154 73.9846 236.403 33.2359 30.3612 272.338 17.8195 9.8421 
+71.26 26.0091 73.9909 236.391 33.2404 30.3689 272.334 17.8218 9.84424 
+71.27 26.0027 73.9973 236.378 33.2449 30.3767 272.329 17.8241 9.84639 
+71.28 25.9963 74.0037 236.366 33.2494 30.3844 272.325 17.8265 9.84853 
+71.29 25.99 74.01 236.354 33.2539 30.3921 272.321 17.8288 9.85067 
+71.3 25.9836 74.0164 236.342 33.2584 30.3998 272.316 17.8312 9.85282 
+71.31 25.9773 74.0227 236.329 33.2629 30.4076 272.312 17.8335 9.85496 
+71.32 25.9709 74.0291 236.317 33.2674 30.4153 272.307 17.8359 9.85711 
+71.33 25.9645 74.0355 236.305 33.2719 30.423 272.303 17.8382 9.85926 
+71.34 25.9582 74.0418 236.293 33.2764 30.4308 272.298 17.8405 9.86141 
+71.35 25.9518 74.0482 236.281 33.2809 30.4385 272.294 17.8429 9.86356 
+71.36 25.9455 74.0545 236.268 33.2854 30.4462 272.289 17.8452 9.86571 
+71.37 25.9391 74.0609 236.256 33.2899 30.454 272.285 17.8476 9.86786 
+71.38 25.9328 74.0672 236.244 33.2944 30.4617 272.28 17.8499 9.87001 
+71.39 25.9264 74.0736 236.232 33.2989 30.4695 272.276 17.8523 9.87217 
+71.4 25.9201 74.0799 236.219 33.3034 30.4772 272.271 17.8546 9.87432 
+71.41 25.9137 74.0863 236.207 33.3079 30.485 272.267 17.857 9.87648 
+71.42 25.9074 74.0926 236.195 33.3124 30.4927 272.262 17.8593 9.87864 
+71.43 25.901 74.099 236.183 33.3169 30.5004 272.258 17.8617 9.8808 
+71.44 25.8947 74.1053 236.17 33.3214 30.5082 272.253 17.864 9.88295 
+71.45 25.8884 74.1116 236.158 33.3259 30.5159 272.249 17.8664 9.88512 
+71.46 25.882 74.118 236.146 33.3304 30.5237 272.244 17.8687 9.88728 
+71.47 25.8757 74.1243 236.134 33.3349 30.5314 272.239 17.8711 9.88944 
+71.48 25.8694 74.1306 236.121 33.3395 30.5392 272.235 17.8734 9.8916 
+71.49 25.863 74.137 236.109 33.344 30.5469 272.23 17.8758 9.89377 
+71.5 25.8567 74.1433 236.097 33.3485 30.5547 272.226 17.8781 9.89593 
+71.51 25.8504 74.1496 236.085 33.353 30.5624 272.221 17.8805 9.8981 
+71.52 25.844 74.156 236.072 33.3575 30.5702 272.217 17.8828 9.90027 
+71.53 25.8377 74.1623 236.06 33.362 30.578 272.212 17.8852 9.90244 
+71.54 25.8314 74.1686 236.048 33.3665 30.5857 272.208 17.8876 9.90461 
+71.55 25.8251 74.1749 236.036 33.371 30.5935 272.203 17.8899 9.90678 
+71.56 25.8187 74.1813 236.023 33.3755 30.6012 272.199 17.8923 9.90895 
+71.57 25.8124 74.1876 236.011 33.38 30.609 272.194 17.8946 9.91112 
+71.58 25.8061 74.1939 235.999 33.3845 30.6168 272.19 17.897 9.9133 
+71.59 25.7998 74.2002 235.987 33.389 30.6245 272.185 17.8994 9.91547 
+71.6 25.7935 74.2065 235.974 33.3935 30.6323 272.181 17.9017 9.91765 
+71.61 25.7872 74.2128 235.962 33.398 30.6401 272.176 17.9041 9.91982 
+71.62 25.7809 74.2191 235.95 33.4025 30.6478 272.172 17.9064 9.922 
+71.63 25.7745 74.2255 235.937 33.407 30.6556 272.167 17.9088 9.92418 
+71.64 25.7682 74.2318 235.925 33.4115 30.6634 272.162 17.9112 9.92636 
+71.65 25.7619 74.2381 235.913 33.416 30.6712 272.158 17.9135 9.92854 
+71.66 25.7556 74.2444 235.901 33.4205 30.6789 272.153 17.9159 9.93073 
+71.67 25.7493 74.2507 235.888 33.425 30.6867 272.149 17.9183 9.93291 
+71.68 25.743 74.257 235.876 33.4295 30.6945 272.144 17.9206 9.93509 
+71.69 25.7367 74.2633 235.864 33.434 30.7023 272.14 17.923 9.93728 
+71.7 25.7304 74.2696 235.852 33.4385 30.71 272.135 17.9254 9.93947 
+71.71 25.7241 74.2759 235.839 33.443 30.7178 272.131 17.9277 9.94165 
+71.72 25.7178 74.2822 235.827 33.4475 30.7256 272.126 17.9301 9.94384 
+71.73 25.7115 74.2885 235.815 33.452 30.7334 272.122 17.9325 9.94603 
+71.74 25.7052 74.2948 235.802 33.4565 30.7412 272.117 17.9348 9.94822 
+71.75 25.6989 74.3011 235.79 33.461 30.7489 272.112 17.9372 9.95041 
+71.76 25.6927 74.3073 235.778 33.4655 30.7567 272.108 17.9396 9.95261 
+71.77 25.6864 74.3136 235.766 33.47 30.7645 272.103 17.9419 9.9548 
+71.78 25.6801 74.3199 235.753 33.4745 30.7723 272.099 17.9443 9.957 
+71.79 25.6738 74.3262 235.741 33.479 30.7801 272.094 17.9467 9.95919 
+71.8 25.6675 74.3325 235.729 33.4835 30.7879 272.09 17.9491 9.96139 
+71.81 25.6612 74.3388 235.716 33.488 30.7957 272.085 17.9514 9.96359 
+71.82 25.655 74.345 235.704 33.4925 30.8035 272.08 17.9538 9.96579 
+71.83 25.6487 74.3513 235.692 33.497 30.8113 272.076 17.9562 9.96799 
+71.84 25.6424 74.3576 235.679 33.5015 30.819 272.071 17.9586 9.97019 
+71.85 25.6361 74.3639 235.667 33.506 30.8268 272.067 17.9609 9.97239 
+71.86 25.6298 74.3702 235.655 33.5105 30.8346 272.062 17.9633 9.97459 
+71.87 25.6236 74.3764 235.643 33.515 30.8424 272.058 17.9657 9.9768 
+71.88 25.6173 74.3827 235.63 33.5195 30.8502 272.053 17.9681 9.979 
+71.89 25.611 74.389 235.618 33.524 30.858 272.048 17.9704 9.98121 
+71.9 25.6048 74.3952 235.606 33.5285 30.8658 272.044 17.9728 9.98342 
+71.91 25.5985 74.4015 235.593 33.533 30.8736 272.039 17.9752 9.98563 
+71.92 25.5922 74.4078 235.581 33.5375 30.8815 272.035 17.9776 9.98784 
+71.93 25.586 74.414 235.569 33.542 30.8893 272.03 17.98 9.99005 
+71.94 25.5797 74.4203 235.556 33.5465 30.8971 272.025 17.9824 9.99226 
+71.95 25.5735 74.4265 235.544 33.551 30.9049 272.021 17.9847 9.99447 
+71.96 25.5672 74.4328 235.532 33.5555 30.9127 272.016 17.9871 9.99669 
+71.97 25.5609 74.4391 235.52 33.56 30.9205 272.012 17.9895 9.9989 
+71.98 25.5547 74.4453 235.507 33.5645 30.9283 272.007 17.9919 10.0011 
+71.99 25.5484 74.4516 235.495 33.569 30.9361 272.002 17.9943 10.0033 
+72 25.5422 74.4578 235.483 33.5735 30.9439 271.998 17.9967 10.0056 
+72.01 25.5359 74.4641 235.47 33.578 30.9517 271.993 17.999 10.0078 
+72.02 25.5297 74.4703 235.458 33.5825 30.9596 271.989 18.0014 10.01 
+72.03 25.5234 74.4766 235.446 33.587 30.9674 271.984 18.0038 10.0122 
+72.04 25.5172 74.4828 235.433 33.5915 30.9752 271.979 18.0062 10.0144 
+72.05 25.511 74.489 235.421 33.596 30.983 271.975 18.0086 10.0167 
+72.06 25.5047 74.4953 235.409 33.6005 30.9908 271.97 18.011 10.0189 
+72.07 25.4985 74.5015 235.396 33.605 30.9987 271.966 18.0134 10.0211 
+72.08 25.4922 74.5078 235.384 33.6095 31.0065 271.961 18.0158 10.0233 
+72.09 25.486 74.514 235.372 33.614 31.0143 271.956 18.0182 10.0256 
+72.1 25.4798 74.5202 235.359 33.6185 31.0221 271.952 18.0205 10.0278 
+72.11 25.4735 74.5265 235.347 33.623 31.03 271.947 18.0229 10.03 
+72.12 25.4673 74.5327 235.335 33.6275 31.0378 271.942 18.0253 10.0323 
+72.13 25.4611 74.5389 235.322 33.632 31.0456 271.938 18.0277 10.0345 
+72.14 25.4548 74.5452 235.31 33.6365 31.0535 271.933 18.0301 10.0367 
+72.15 25.4486 74.5514 235.298 33.641 31.0613 271.929 18.0325 10.0389 
+72.16 25.4424 74.5576 235.285 33.6455 31.0691 271.924 18.0349 10.0412 
+72.17 25.4362 74.5638 235.273 33.65 31.077 271.919 18.0373 10.0434 
+72.18 25.4299 74.5701 235.261 33.6545 31.0848 271.915 18.0397 10.0457 
+72.19 25.4237 74.5763 235.248 33.659 31.0926 271.91 18.0421 10.0479 
+72.2 25.4175 74.5825 235.236 33.6635 31.1005 271.905 18.0445 10.0501 
+72.21 25.4113 74.5887 235.224 33.668 31.1083 271.901 18.0469 10.0524 
+72.22 25.4051 74.5949 235.211 33.6725 31.1161 271.896 18.0493 10.0546 
+72.23 25.3989 74.6011 235.199 33.677 31.124 271.891 18.0517 10.0569 
+72.24 25.3926 74.6074 235.187 33.6815 31.1318 271.887 18.0541 10.0591 
+72.25 25.3864 74.6136 235.174 33.686 31.1397 271.882 18.0565 10.0613 
+72.26 25.3802 74.6198 235.162 33.6905 31.1475 271.878 18.0589 10.0636 
+72.27 25.374 74.626 235.15 33.695 31.1554 271.873 18.0613 10.0658 
+72.28 25.3678 74.6322 235.137 33.6995 31.1632 271.868 18.0637 10.0681 
+72.29 25.3616 74.6384 235.125 33.704 31.1711 271.864 18.0661 10.0703 
+72.3 25.3554 74.6446 235.113 33.7085 31.1789 271.859 18.0685 10.0726 
+72.31 25.3492 74.6508 235.1 33.713 31.1868 271.854 18.0709 10.0748 
+72.32 25.343 74.657 235.088 33.7175 31.1946 271.85 18.0733 10.0771 
+72.33 25.3368 74.6632 235.075 33.722 31.2025 271.845 18.0757 10.0793 
+72.34 25.3306 74.6694 235.063 33.7265 31.2103 271.84 18.0781 10.0816 
+72.35 25.3244 74.6756 235.051 33.731 31.2182 271.836 18.0806 10.0838 
+72.36 25.3182 74.6818 235.038 33.7355 31.226 271.831 18.083 10.0861 
+72.37 25.312 74.688 235.026 33.74 31.2339 271.826 18.0854 10.0884 
+72.38 25.3058 74.6942 235.014 33.7445 31.2418 271.822 18.0878 10.0906 
+72.39 25.2996 74.7004 235.001 33.749 31.2496 271.817 18.0902 10.0929 
+72.4 25.2935 74.7065 234.989 33.7535 31.2575 271.812 18.0926 10.0951 
+72.41 25.2873 74.7127 234.977 33.758 31.2653 271.808 18.095 10.0974 
+72.42 25.2811 74.7189 234.964 33.7625 31.2732 271.803 18.0974 10.0997 
+72.43 25.2749 74.7251 234.952 33.767 31.2811 271.798 18.0998 10.1019 
+72.44 25.2687 74.7313 234.94 33.7715 31.2889 271.794 18.1022 10.1042 
+72.45 25.2625 74.7375 234.927 33.776 31.2968 271.789 18.1047 10.1065 
+72.46 25.2564 74.7436 234.915 33.7805 31.3047 271.784 18.1071 10.1087 
+72.47 25.2502 74.7498 234.902 33.785 31.3125 271.78 18.1095 10.111 
+72.48 25.244 74.756 234.89 33.7895 31.3204 271.775 18.1119 10.1133 
+72.49 25.2378 74.7622 234.878 33.7941 31.3283 271.77 18.1143 10.1155 
+72.5 25.2317 74.7683 234.865 33.7986 31.3362 271.765 18.1167 10.1178 
+72.51 25.2255 74.7745 234.853 33.8031 31.344 271.761 18.1192 10.1201 
+72.52 25.2193 74.7807 234.841 33.8076 31.3519 271.756 18.1216 10.1223 
+72.53 25.2132 74.7868 234.828 33.8121 31.3598 271.751 18.124 10.1246 
+72.54 25.207 74.793 234.816 33.8166 31.3677 271.747 18.1264 10.1269 
+72.55 25.2008 74.7992 234.803 33.8211 31.3755 271.742 18.1288 10.1292 
+72.56 25.1947 74.8053 234.791 33.8256 31.3834 271.737 18.1313 10.1315 
+72.57 25.1885 74.8115 234.779 33.8301 31.3913 271.733 18.1337 10.1337 
+72.58 25.1824 74.8176 234.766 33.8346 31.3992 271.728 18.1361 10.136 
+72.59 25.1762 74.8238 234.754 33.8391 31.4071 271.723 18.1385 10.1383 
+72.6 25.17 74.83 234.741 33.8436 31.415 271.718 18.1409 10.1406 
+72.61 25.1639 74.8361 234.729 33.8481 31.4229 271.714 18.1434 10.1429 
+72.62 25.1577 74.8423 234.717 33.8526 31.4307 271.709 18.1458 10.1451 
+72.63 25.1516 74.8484 234.704 33.8571 31.4386 271.704 18.1482 10.1474 
+72.64 25.1454 74.8546 234.692 33.8616 31.4465 271.7 18.1506 10.1497 
+72.65 25.1393 74.8607 234.68 33.8661 31.4544 271.695 18.1531 10.152 
+72.66 25.1332 74.8668 234.667 33.8706 31.4623 271.69 18.1555 10.1543 
+72.67 25.127 74.873 234.655 33.8751 31.4702 271.685 18.1579 10.1566 
+72.68 25.1209 74.8791 234.642 33.8796 31.4781 271.681 18.1604 10.1589 
+72.69 25.1147 74.8853 234.63 33.8841 31.486 271.676 18.1628 10.1612 
+72.7 25.1086 74.8914 234.618 33.8886 31.4939 271.671 18.1652 10.1634 
+72.71 25.1024 74.8976 234.605 33.8931 31.5018 271.667 18.1676 10.1657 
+72.72 25.0963 74.9037 234.593 33.8976 31.5097 271.662 18.1701 10.168 
+72.73 25.0902 74.9098 234.58 33.9021 31.5176 271.657 18.1725 10.1703 
+72.74 25.084 74.916 234.568 33.9066 31.5255 271.652 18.1749 10.1726 
+72.75 25.0779 74.9221 234.556 33.9111 31.5334 271.648 18.1774 10.1749 
+72.76 25.0718 74.9282 234.543 33.9156 31.5413 271.643 18.1798 10.1772 
+72.77 25.0657 74.9343 234.531 33.9201 31.5492 271.638 18.1822 10.1795 
+72.78 25.0595 74.9405 234.518 33.9246 31.5571 271.633 18.1847 10.1818 
+72.79 25.0534 74.9466 234.506 33.9291 31.565 271.629 18.1871 10.1841 
+72.8 25.0473 74.9527 234.493 33.9336 31.5729 271.624 18.1895 10.1864 
+72.81 25.0412 74.9588 234.481 33.9381 31.5808 271.619 18.192 10.1887 
+72.82 25.035 74.965 234.469 33.9426 31.5887 271.615 18.1944 10.191 
+72.83 25.0289 74.9711 234.456 33.9471 31.5967 271.61 18.1969 10.1933 
+72.84 25.0228 74.9772 234.444 33.9516 31.6046 271.605 18.1993 10.1957 
+72.85 25.0167 74.9833 234.431 33.9561 31.6125 271.6 18.2017 10.198 
+72.86 25.0106 74.9894 234.419 33.9606 31.6204 271.596 18.2042 10.2003 
+72.87 25.0045 74.9955 234.407 33.9651 31.6283 271.591 18.2066 10.2026 
+72.88 24.9984 75.0016 234.394 33.9696 31.6362 271.586 18.2091 10.2049 
+72.89 24.9923 75.0077 234.382 33.9741 31.6442 271.581 18.2115 10.2072 
+72.9 24.9861 75.0139 234.369 33.9786 31.6521 271.577 18.2139 10.2095 
+72.91 24.98 75.02 234.357 33.9831 31.66 271.572 18.2164 10.2118 
+72.92 24.9739 75.0261 234.344 33.9876 31.6679 271.567 18.2188 10.2142 
+72.93 24.9678 75.0322 234.332 33.9921 31.6758 271.562 18.2213 10.2165 
+72.94 24.9617 75.0383 234.32 33.9966 31.6838 271.557 18.2237 10.2188 
+72.95 24.9556 75.0444 234.307 34.0011 31.6917 271.553 18.2262 10.2211 
+72.96 24.9495 75.0505 234.295 34.0056 31.6996 271.548 18.2286 10.2234 
+72.97 24.9434 75.0566 234.282 34.0101 31.7076 271.543 18.2311 10.2258 
+72.98 24.9373 75.0627 234.27 34.0146 31.7155 271.538 18.2335 10.2281 
+72.99 24.9313 75.0687 234.257 34.0191 31.7234 271.534 18.2359 10.2304 
+73 24.9252 75.0748 234.245 34.0236 31.7314 271.529 18.2384 10.2327 
+73.01 24.9191 75.0809 234.233 34.0281 31.7393 271.524 18.2408 10.235 
+73.02 24.913 75.087 234.22 34.0326 31.7472 271.519 18.2433 10.2374 
+73.03 24.9069 75.0931 234.208 34.0371 31.7552 271.515 18.2457 10.2397 
+73.04 24.9008 75.0992 234.195 34.0416 31.7631 271.51 18.2482 10.242 
+73.05 24.8947 75.1053 234.183 34.0461 31.771 271.505 18.2506 10.2444 
+73.06 24.8887 75.1113 234.17 34.0506 31.779 271.5 18.2531 10.2467 
+73.07 24.8826 75.1174 234.158 34.0551 31.7869 271.495 18.2556 10.249 
+73.08 24.8765 75.1235 234.146 34.0596 31.7949 271.491 18.258 10.2514 
+73.09 24.8704 75.1296 234.133 34.0641 31.8028 271.486 18.2605 10.2537 
+73.1 24.8643 75.1357 234.121 34.0686 31.8107 271.481 18.2629 10.256 
+73.11 24.8583 75.1417 234.108 34.0731 31.8187 271.476 18.2654 10.2584 
+73.12 24.8522 75.1478 234.096 34.0776 31.8266 271.471 18.2678 10.2607 
+73.13 24.8461 75.1539 234.083 34.0821 31.8346 271.467 18.2703 10.263 
+73.14 24.8401 75.1599 234.071 34.0866 31.8425 271.462 18.2727 10.2654 
+73.15 24.834 75.166 234.058 34.0911 31.8505 271.457 18.2752 10.2677 
+73.16 24.8279 75.1721 234.046 34.0956 31.8584 271.452 18.2777 10.2701 
+73.17 24.8219 75.1781 234.034 34.1001 31.8664 271.447 18.2801 10.2724 
+73.18 24.8158 75.1842 234.021 34.1046 31.8743 271.443 18.2826 10.2747 
+73.19 24.8097 75.1903 234.009 34.1091 31.8823 271.438 18.285 10.2771 
+73.2 24.8037 75.1963 233.996 34.1136 31.8903 271.433 18.2875 10.2794 
+73.21 24.7976 75.2024 233.984 34.1181 31.8982 271.428 18.29 10.2818 
+73.22 24.7916 75.2084 233.971 34.1226 31.9062 271.423 18.2924 10.2841 
+73.23 24.7855 75.2145 233.959 34.1271 31.9141 271.419 18.2949 10.2865 
+73.24 24.7795 75.2205 233.946 34.1316 31.9221 271.414 18.2973 10.2888 
+73.25 24.7734 75.2266 233.934 34.1361 31.9301 271.409 18.2998 10.2912 
+73.26 24.7674 75.2326 233.921 34.1406 31.938 271.404 18.3023 10.2935 
+73.27 24.7613 75.2387 233.909 34.1451 31.946 271.399 18.3047 10.2959 
+73.28 24.7553 75.2447 233.896 34.1496 31.9539 271.395 18.3072 10.2982 
+73.29 24.7492 75.2508 233.884 34.1541 31.9619 271.39 18.3097 10.3006 
+73.3 24.7432 75.2568 233.872 34.1586 31.9699 271.385 18.3121 10.303 
+73.31 24.7372 75.2628 233.859 34.1631 31.9779 271.38 18.3146 10.3053 
+73.32 24.7311 75.2689 233.847 34.1676 31.9858 271.375 18.3171 10.3077 
+73.33 24.7251 75.2749 233.834 34.1721 31.9938 271.37 18.3195 10.31 
+73.34 24.719 75.281 233.822 34.1766 32.0018 271.366 18.322 10.3124 
+73.35 24.713 75.287 233.809 34.1811 32.0097 271.361 18.3245 10.3148 
+73.36 24.707 75.293 233.797 34.1856 32.0177 271.356 18.327 10.3171 
+73.37 24.7009 75.2991 233.784 34.1901 32.0257 271.351 18.3294 10.3195 
+73.38 24.6949 75.3051 233.772 34.1946 32.0337 271.346 18.3319 10.3219 
+73.39 24.6889 75.3111 233.759 34.1991 32.0416 271.341 18.3344 10.3242 
+73.4 24.6829 75.3171 233.747 34.2036 32.0496 271.337 18.3368 10.3266 
+73.41 24.6768 75.3232 233.734 34.2081 32.0576 271.332 18.3393 10.329 
+73.42 24.6708 75.3292 233.722 34.2126 32.0656 271.327 18.3418 10.3313 
+73.43 24.6648 75.3352 233.709 34.2171 32.0736 271.322 18.3443 10.3337 
+73.44 24.6588 75.3412 233.697 34.2216 32.0816 271.317 18.3467 10.3361 
+73.45 24.6528 75.3472 233.684 34.2261 32.0895 271.312 18.3492 10.3385 
+73.46 24.6467 75.3533 233.672 34.2306 32.0975 271.307 18.3517 10.3408 
+73.47 24.6407 75.3593 233.659 34.2351 32.1055 271.303 18.3542 10.3432 
+73.48 24.6347 75.3653 233.647 34.2396 32.1135 271.298 18.3567 10.3456 
+73.49 24.6287 75.3713 233.634 34.2441 32.1215 271.293 18.3591 10.348 
+73.5 24.6227 75.3773 233.622 34.2486 32.1295 271.288 18.3616 10.3503 
+73.51 24.6167 75.3833 233.609 34.2531 32.1375 271.283 18.3641 10.3527 
+73.52 24.6107 75.3893 233.597 34.2576 32.1455 271.278 18.3666 10.3551 
+73.53 24.6047 75.3953 233.584 34.2621 32.1535 271.273 18.3691 10.3575 
+73.54 24.5987 75.4013 233.572 34.2666 32.1615 271.269 18.3715 10.3599 
+73.55 24.5927 75.4073 233.559 34.2711 32.1695 271.264 18.374 10.3622 
+73.56 24.5867 75.4133 233.547 34.2756 32.1775 271.259 18.3765 10.3646 
+73.57 24.5807 75.4193 233.534 34.2801 32.1855 271.254 18.379 10.367 
+73.58 24.5747 75.4253 233.522 34.2846 32.1935 271.249 18.3815 10.3694 
+73.59 24.5687 75.4313 233.509 34.2891 32.2015 271.244 18.384 10.3718 
+73.6 24.5627 75.4373 233.497 34.2936 32.2095 271.239 18.3865 10.3742 
+73.61 24.5567 75.4433 233.484 34.2981 32.2175 271.234 18.3889 10.3766 
+73.62 24.5507 75.4493 233.472 34.3026 32.2255 271.23 18.3914 10.379 
+73.63 24.5447 75.4553 233.459 34.3071 32.2335 271.225 18.3939 10.3814 
+73.64 24.5387 75.4613 233.447 34.3116 32.2415 271.22 18.3964 10.3838 
+73.65 24.5327 75.4673 233.434 34.3161 32.2495 271.215 18.3989 10.3861 
+73.66 24.5267 75.4733 233.422 34.3206 32.2575 271.21 18.4014 10.3885 
+73.67 24.5208 75.4792 233.409 34.3251 32.2655 271.205 18.4039 10.3909 
+73.68 24.5148 75.4852 233.397 34.3296 32.2735 271.2 18.4064 10.3933 
+73.69 24.5088 75.4912 233.384 34.3341 32.2815 271.195 18.4089 10.3957 
+73.7 24.5028 75.4972 233.372 34.3386 32.2896 271.191 18.4113 10.3981 
+73.71 24.4969 75.5031 233.359 34.3431 32.2976 271.186 18.4138 10.4005 
+73.72 24.4909 75.5091 233.347 34.3476 32.3056 271.181 18.4163 10.4029 
+73.73 24.4849 75.5151 233.334 34.3521 32.3136 271.176 18.4188 10.4053 
+73.74 24.4789 75.5211 233.322 34.3566 32.3216 271.171 18.4213 10.4078 
+73.75 24.473 75.527 233.309 34.3611 32.3296 271.166 18.4238 10.4102 
+73.76 24.467 75.533 233.297 34.3656 32.3377 271.161 18.4263 10.4126 
+73.77 24.461 75.539 233.284 34.3701 32.3457 271.156 18.4288 10.415 
+73.78 24.4551 75.5449 233.272 34.3746 32.3537 271.151 18.4313 10.4174 
+73.79 24.4491 75.5509 233.259 34.3791 32.3617 271.146 18.4338 10.4198 
+73.8 24.4431 75.5569 233.247 34.3836 32.3698 271.141 18.4363 10.4222 
+73.81 24.4372 75.5628 233.234 34.3881 32.3778 271.137 18.4388 10.4246 
+73.82 24.4312 75.5688 233.222 34.3926 32.3858 271.132 18.4413 10.427 
+73.83 24.4253 75.5747 233.209 34.3971 32.3938 271.127 18.4438 10.4294 
+73.84 24.4193 75.5807 233.197 34.4016 32.4019 271.122 18.4463 10.4319 
+73.85 24.4134 75.5866 233.184 34.4061 32.4099 271.117 18.4488 10.4343 
+73.86 24.4074 75.5926 233.171 34.4106 32.4179 271.112 18.4513 10.4367 
+73.87 24.4015 75.5985 233.159 34.4151 32.426 271.107 18.4538 10.4391 
+73.88 24.3955 75.6045 233.146 34.4196 32.434 271.102 18.4563 10.4415 
+73.89 24.3896 75.6104 233.134 34.4241 32.442 271.097 18.4588 10.444 
+73.9 24.3836 75.6164 233.121 34.4286 32.4501 271.092 18.4613 10.4464 
+73.91 24.3777 75.6223 233.109 34.4331 32.4581 271.087 18.4638 10.4488 
+73.92 24.3717 75.6283 233.096 34.4376 32.4662 271.082 18.4663 10.4512 
+73.93 24.3658 75.6342 233.084 34.4421 32.4742 271.077 18.4688 10.4537 
+73.94 24.3599 75.6401 233.071 34.4466 32.4822 271.073 18.4714 10.4561 
+73.95 24.3539 75.6461 233.059 34.4511 32.4903 271.068 18.4739 10.4585 
+73.96 24.348 75.652 233.046 34.4556 32.4983 271.063 18.4764 10.4609 
+73.97 24.342 75.658 233.034 34.4601 32.5064 271.058 18.4789 10.4634 
+73.98 24.3361 75.6639 233.021 34.4646 32.5144 271.053 18.4814 10.4658 
+73.99 24.3302 75.6698 233.008 34.4691 32.5225 271.048 18.4839 10.4682 
+74 24.3243 75.6757 232.996 34.4736 32.5305 271.043 18.4864 10.4707 
+74.01 24.3183 75.6817 232.983 34.4781 32.5386 271.038 18.4889 10.4731 
+74.02 24.3124 75.6876 232.971 34.4826 32.5466 271.033 18.4914 10.4755 
+74.03 24.3065 75.6935 232.958 34.4871 32.5547 271.028 18.494 10.478 
+74.04 24.3006 75.6994 232.946 34.4916 32.5627 271.023 18.4965 10.4804 
+74.05 24.2946 75.7054 232.933 34.4961 32.5708 271.018 18.499 10.4829 
+74.06 24.2887 75.7113 232.921 34.5006 32.5788 271.013 18.5015 10.4853 
+74.07 24.2828 75.7172 232.908 34.5051 32.5869 271.008 18.504 10.4877 
+74.08 24.2769 75.7231 232.895 34.5096 32.595 271.003 18.5065 10.4902 
+74.09 24.271 75.729 232.883 34.5141 32.603 270.998 18.509 10.4926 
+74.1 24.2651 75.7349 232.87 34.5186 32.6111 270.993 18.5116 10.4951 
+74.11 24.2591 75.7409 232.858 34.5231 32.6191 270.988 18.5141 10.4975 
+74.12 24.2532 75.7468 232.845 34.5276 32.6272 270.983 18.5166 10.5 
+74.13 24.2473 75.7527 232.833 34.5321 32.6353 270.978 18.5191 10.5024 
+74.14 24.2414 75.7586 232.82 34.5366 32.6433 270.974 18.5216 10.5049 
+74.15 24.2355 75.7645 232.808 34.5411 32.6514 270.969 18.5242 10.5073 
+74.16 24.2296 75.7704 232.795 34.5456 32.6595 270.964 18.5267 10.5098 
+74.17 24.2237 75.7763 232.782 34.5501 32.6675 270.959 18.5292 10.5122 
+74.18 24.2178 75.7822 232.77 34.5546 32.6756 270.954 18.5317 10.5147 
+74.19 24.2119 75.7881 232.757 34.5591 32.6837 270.949 18.5342 10.5171 
+74.2 24.206 75.794 232.745 34.5636 32.6918 270.944 18.5368 10.5196 
+74.21 24.2001 75.7999 232.732 34.568 32.6998 270.939 18.5393 10.522 
+74.22 24.1942 75.8058 232.72 34.5725 32.7079 270.934 18.5418 10.5245 
+74.23 24.1883 75.8117 232.707 34.577 32.716 270.929 18.5443 10.527 
+74.24 24.1824 75.8176 232.694 34.5815 32.7241 270.924 18.5469 10.5294 
+74.25 24.1766 75.8234 232.682 34.586 32.7321 270.919 18.5494 10.5319 
+74.26 24.1707 75.8293 232.669 34.5905 32.7402 270.914 18.5519 10.5343 
+74.27 24.1648 75.8352 232.657 34.595 32.7483 270.909 18.5545 10.5368 
+74.28 24.1589 75.8411 232.644 34.5995 32.7564 270.904 18.557 10.5393 
+74.29 24.153 75.847 232.632 34.604 32.7645 270.899 18.5595 10.5417 
+74.3 24.1471 75.8529 232.619 34.6085 32.7725 270.894 18.562 10.5442 
+74.31 24.1413 75.8587 232.606 34.613 32.7806 270.889 18.5646 10.5467 
+74.32 24.1354 75.8646 232.594 34.6175 32.7887 270.884 18.5671 10.5491 
+74.33 24.1295 75.8705 232.581 34.622 32.7968 270.879 18.5696 10.5516 
+74.34 24.1236 75.8764 232.569 34.6265 32.8049 270.874 18.5722 10.5541 
+74.35 24.1178 75.8822 232.556 34.631 32.813 270.869 18.5747 10.5565 
+74.36 24.1119 75.8881 232.543 34.6355 32.8211 270.864 18.5772 10.559 
+74.37 24.106 75.894 232.531 34.64 32.8292 270.859 18.5798 10.5615 
+74.38 24.1002 75.8998 232.518 34.6445 32.8372 270.854 18.5823 10.564 
+74.39 24.0943 75.9057 232.506 34.649 32.8453 270.849 18.5848 10.5664 
+74.4 24.0884 75.9116 232.493 34.6535 32.8534 270.844 18.5874 10.5689 
+74.41 24.0826 75.9174 232.48 34.658 32.8615 270.839 18.5899 10.5714 
+74.42 24.0767 75.9233 232.468 34.6625 32.8696 270.834 18.5925 10.5739 
+74.43 24.0708 75.9292 232.455 34.667 32.8777 270.829 18.595 10.5764 
+74.44 24.065 75.935 232.443 34.6715 32.8858 270.824 18.5975 10.5788 
+74.45 24.0591 75.9409 232.43 34.676 32.8939 270.819 18.6001 10.5813 
+74.46 24.0533 75.9467 232.417 34.6805 32.902 270.814 18.6026 10.5838 
+74.47 24.0474 75.9526 232.405 34.685 32.9101 270.809 18.6052 10.5863 
+74.48 24.0416 75.9584 232.392 34.6895 32.9182 270.804 18.6077 10.5888 
+74.49 24.0357 75.9643 232.38 34.694 32.9263 270.798 18.6102 10.5913 
+74.5 24.0299 75.9701 232.367 34.6985 32.9345 270.793 18.6128 10.5938 
+74.51 24.024 75.976 232.354 34.703 32.9426 270.788 18.6153 10.5963 
+74.52 24.0182 75.9818 232.342 34.7075 32.9507 270.783 18.6179 10.5987 
+74.53 24.0123 75.9877 232.329 34.712 32.9588 270.778 18.6204 10.6012 
+74.54 24.0065 75.9935 232.317 34.7165 32.9669 270.773 18.623 10.6037 
+74.55 24.0007 75.9993 232.304 34.721 32.975 270.768 18.6255 10.6062 
+74.56 23.9948 76.0052 232.291 34.7255 32.9831 270.763 18.6281 10.6087 
+74.57 23.989 76.011 232.279 34.73 32.9912 270.758 18.6306 10.6112 
+74.58 23.9831 76.0169 232.266 34.7345 32.9993 270.753 18.6331 10.6137 
+74.59 23.9773 76.0227 232.254 34.739 33.0075 270.748 18.6357 10.6162 
+74.6 23.9715 76.0285 232.241 34.7435 33.0156 270.743 18.6382 10.6187 
+74.61 23.9657 76.0343 232.228 34.748 33.0237 270.738 18.6408 10.6212 
+74.62 23.9598 76.0402 232.216 34.7525 33.0318 270.733 18.6433 10.6237 
+74.63 23.954 76.046 232.203 34.7569 33.0399 270.728 18.6459 10.6262 
+74.64 23.9482 76.0518 232.19 34.7614 33.0481 270.723 18.6484 10.6287 
+74.65 23.9424 76.0576 232.178 34.7659 33.0562 270.718 18.651 10.6312 
+74.66 23.9365 76.0635 232.165 34.7704 33.0643 270.713 18.6536 10.6337 
+74.67 23.9307 76.0693 232.153 34.7749 33.0724 270.708 18.6561 10.6363 
+74.68 23.9249 76.0751 232.14 34.7794 33.0806 270.703 18.6587 10.6388 
+74.69 23.9191 76.0809 232.127 34.7839 33.0887 270.698 18.6612 10.6413 
+74.7 23.9133 76.0867 232.115 34.7884 33.0968 270.692 18.6638 10.6438 
+74.71 23.9074 76.0926 232.102 34.7929 33.105 270.687 18.6663 10.6463 
+74.72 23.9016 76.0984 232.089 34.7974 33.1131 270.682 18.6689 10.6488 
+74.73 23.8958 76.1042 232.077 34.8019 33.1212 270.677 18.6714 10.6513 
+74.74 23.89 76.11 232.064 34.8064 33.1294 270.672 18.674 10.6538 
+74.75 23.8842 76.1158 232.052 34.8109 33.1375 270.667 18.6766 10.6564 
+74.76 23.8784 76.1216 232.039 34.8154 33.1456 270.662 18.6791 10.6589 
+74.77 23.8726 76.1274 232.026 34.8199 33.1538 270.657 18.6817 10.6614 
+74.78 23.8668 76.1332 232.014 34.8244 33.1619 270.652 18.6842 10.6639 
+74.79 23.861 76.139 232.001 34.8289 33.17 270.647 18.6868 10.6664 
+74.8 23.8552 76.1448 231.988 34.8334 33.1782 270.642 18.6894 10.669 
+74.81 23.8494 76.1506 231.976 34.8379 33.1863 270.637 18.6919 10.6715 
+74.82 23.8436 76.1564 231.963 34.8424 33.1945 270.632 18.6945 10.674 
+74.83 23.8378 76.1622 231.951 34.8469 33.2026 270.626 18.697 10.6765 
+74.84 23.832 76.168 231.938 34.8514 33.2108 270.621 18.6996 10.6791 
+74.85 23.8262 76.1738 231.925 34.8559 33.2189 270.616 18.7022 10.6816 
+74.86 23.8204 76.1796 231.913 34.8604 33.227 270.611 18.7047 10.6841 
+74.87 23.8146 76.1854 231.9 34.8649 33.2352 270.606 18.7073 10.6867 
+74.88 23.8089 76.1911 231.887 34.8694 33.2433 270.601 18.7099 10.6892 
+74.89 23.8031 76.1969 231.875 34.8739 33.2515 270.596 18.7124 10.6917 
+74.9 23.7973 76.2027 231.862 34.8784 33.2597 270.591 18.715 10.6943 
+74.91 23.7915 76.2085 231.849 34.8828 33.2678 270.586 18.7176 10.6968 
+74.92 23.7857 76.2143 231.837 34.8873 33.276 270.581 18.7201 10.6993 
+74.93 23.78 76.22 231.824 34.8918 33.2841 270.575 18.7227 10.7019 
+74.94 23.7742 76.2258 231.811 34.8963 33.2923 270.57 18.7253 10.7044 
+74.95 23.7684 76.2316 231.799 34.9008 33.3004 270.565 18.7279 10.7069 
+74.96 23.7626 76.2374 231.786 34.9053 33.3086 270.56 18.7304 10.7095 
+74.97 23.7569 76.2431 231.773 34.9098 33.3167 270.555 18.733 10.712 
+74.98 23.7511 76.2489 231.761 34.9143 33.3249 270.55 18.7356 10.7146 
+74.99 23.7453 76.2547 231.748 34.9188 33.3331 270.545 18.7381 10.7171 
+75 23.7396 76.2604 231.735 34.9233 33.3412 270.54 18.7407 10.7197 
+75.01 23.7338 76.2662 231.723 34.9278 33.3494 270.535 18.7433 10.7222 
+75.02 23.728 76.272 231.71 34.9323 33.3576 270.529 18.7459 10.7247 
+75.03 23.7223 76.2777 231.697 34.9368 33.3657 270.524 18.7484 10.7273 
+75.04 23.7165 76.2835 231.685 34.9413 33.3739 270.519 18.751 10.7298 
+75.05 23.7108 76.2892 231.672 34.9458 33.3821 270.514 18.7536 10.7324 
+75.06 23.705 76.295 231.659 34.9503 33.3902 270.509 18.7562 10.7349 
+75.07 23.6992 76.3008 231.647 34.9548 33.3984 270.504 18.7588 10.7375 
+75.08 23.6935 76.3065 231.634 34.9593 33.4066 270.499 18.7613 10.7401 
+75.09 23.6877 76.3123 231.621 34.9638 33.4148 270.493 18.7639 10.7426 
+75.1 23.682 76.318 231.609 34.9683 33.4229 270.488 18.7665 10.7452 
+75.11 23.6762 76.3238 231.596 34.9728 33.4311 270.483 18.7691 10.7477 
+75.12 23.6705 76.3295 231.583 34.9773 33.4393 270.478 18.7717 10.7503 
+75.13 23.6647 76.3353 231.571 34.9817 33.4475 270.473 18.7742 10.7528 
+75.14 23.659 76.341 231.558 34.9862 33.4556 270.468 18.7768 10.7554 
+75.15 23.6533 76.3467 231.545 34.9907 33.4638 270.463 18.7794 10.758 
+75.16 23.6475 76.3525 231.533 34.9952 33.472 270.457 18.782 10.7605 
+75.17 23.6418 76.3582 231.52 34.9997 33.4802 270.452 18.7846 10.7631 
+75.18 23.636 76.364 231.507 35.0042 33.4884 270.447 18.7872 10.7657 
+75.19 23.6303 76.3697 231.495 35.0087 33.4966 270.442 18.7898 10.7682 
+75.2 23.6246 76.3754 231.482 35.0132 33.5047 270.437 18.7923 10.7708 
+75.21 23.6188 76.3812 231.469 35.0177 33.5129 270.432 18.7949 10.7734 
+75.22 23.6131 76.3869 231.457 35.0222 33.5211 270.427 18.7975 10.7759 
+75.23 23.6074 76.3926 231.444 35.0267 33.5293 270.421 18.8001 10.7785 
+75.24 23.6017 76.3983 231.431 35.0312 33.5375 270.416 18.8027 10.7811 
+75.25 23.5959 76.4041 231.419 35.0357 33.5457 270.411 18.8053 10.7836 
+75.26 23.5902 76.4098 231.406 35.0402 33.5539 270.406 18.8079 10.7862 
+75.27 23.5845 76.4155 231.393 35.0447 33.5621 270.401 18.8105 10.7888 
+75.28 23.5788 76.4212 231.381 35.0492 33.5703 270.396 18.8131 10.7914 
+75.29 23.573 76.427 231.368 35.0537 33.5785 270.39 18.8156 10.794 
+75.3 23.5673 76.4327 231.355 35.0582 33.5867 270.385 18.8182 10.7965 
+75.31 23.5616 76.4384 231.342 35.0627 33.5949 270.38 18.8208 10.7991 
+75.32 23.5559 76.4441 231.33 35.0671 33.6031 270.375 18.8234 10.8017 
+75.33 23.5502 76.4498 231.317 35.0716 33.6113 270.37 18.826 10.8043 
+75.34 23.5445 76.4555 231.304 35.0761 33.6195 270.365 18.8286 10.8069 
+75.35 23.5388 76.4612 231.292 35.0806 33.6277 270.359 18.8312 10.8094 
+75.36 23.5331 76.4669 231.279 35.0851 33.6359 270.354 18.8338 10.812 
+75.37 23.5274 76.4726 231.266 35.0896 33.6441 270.349 18.8364 10.8146 
+75.38 23.5216 76.4784 231.254 35.0941 33.6523 270.344 18.839 10.8172 
+75.39 23.5159 76.4841 231.241 35.0986 33.6605 270.339 18.8416 10.8198 
+75.4 23.5102 76.4898 231.228 35.1031 33.6687 270.333 18.8442 10.8224 
+75.41 23.5045 76.4955 231.216 35.1076 33.6769 270.328 18.8468 10.825 
+75.42 23.4988 76.5012 231.203 35.1121 33.6851 270.323 18.8494 10.8276 
+75.43 23.4932 76.5068 231.19 35.1166 33.6933 270.318 18.852 10.8302 
+75.44 23.4875 76.5125 231.177 35.1211 33.7015 270.313 18.8546 10.8328 
+75.45 23.4818 76.5182 231.165 35.1256 33.7098 270.307 18.8572 10.8354 
+75.46 23.4761 76.5239 231.152 35.1301 33.718 270.302 18.8598 10.838 
+75.47 23.4704 76.5296 231.139 35.1346 33.7262 270.297 18.8624 10.8406 
+75.48 23.4647 76.5353 231.127 35.139 33.7344 270.292 18.865 10.8432 
+75.49 23.459 76.541 231.114 35.1435 33.7426 270.287 18.8676 10.8458 
+75.5 23.4533 76.5467 231.101 35.148 33.7508 270.281 18.8702 10.8484 
+75.51 23.4476 76.5524 231.088 35.1525 33.7591 270.276 18.8728 10.851 
+75.52 23.442 76.558 231.076 35.157 33.7673 270.271 18.8754 10.8536 
+75.53 23.4363 76.5637 231.063 35.1615 33.7755 270.266 18.8781 10.8562 
+75.54 23.4306 76.5694 231.05 35.166 33.7837 270.261 18.8807 10.8588 
+75.55 23.4249 76.5751 231.038 35.1705 33.792 270.255 18.8833 10.8614 
+75.56 23.4192 76.5808 231.025 35.175 33.8002 270.25 18.8859 10.864 
+75.57 23.4136 76.5864 231.012 35.1795 33.8084 270.245 18.8885 10.8666 
+75.58 23.4079 76.5921 230.999 35.184 33.8166 270.24 18.8911 10.8692 
+75.59 23.4022 76.5978 230.987 35.1885 33.8249 270.234 18.8937 10.8718 
+75.6 23.3966 76.6034 230.974 35.193 33.8331 270.229 18.8963 10.8744 
+75.61 23.3909 76.6091 230.961 35.1975 33.8413 270.224 18.8989 10.8771 
+75.62 23.3852 76.6148 230.948 35.202 33.8496 270.219 18.9015 10.8797 
+75.63 23.3796 76.6204 230.936 35.2064 33.8578 270.214 18.9042 10.8823 
+75.64 23.3739 76.6261 230.923 35.2109 33.866 270.208 18.9068 10.8849 
+75.65 23.3682 76.6318 230.91 35.2154 33.8743 270.203 18.9094 10.8875 
+75.66 23.3626 76.6374 230.898 35.2199 33.8825 270.198 18.912 10.8901 
+75.67 23.3569 76.6431 230.885 35.2244 33.8907 270.193 18.9146 10.8928 
+75.68 23.3513 76.6487 230.872 35.2289 33.899 270.187 18.9172 10.8954 
+75.69 23.3456 76.6544 230.859 35.2334 33.9072 270.182 18.9199 10.898 
+75.7 23.34 76.66 230.847 35.2379 33.9155 270.177 18.9225 10.9006 
+75.71 23.3343 76.6657 230.834 35.2424 33.9237 270.172 18.9251 10.9033 
+75.72 23.3287 76.6713 230.821 35.2469 33.932 270.166 18.9277 10.9059 
+75.73 23.323 76.677 230.808 35.2514 33.9402 270.161 18.9303 10.9085 
+75.74 23.3174 76.6826 230.796 35.2559 33.9485 270.156 18.933 10.9111 
+75.75 23.3117 76.6883 230.783 35.2604 33.9567 270.151 18.9356 10.9138 
+75.76 23.3061 76.6939 230.77 35.2648 33.9649 270.145 18.9382 10.9164 
+75.77 23.3005 76.6995 230.757 35.2693 33.9732 270.14 18.9408 10.919 
+75.78 23.2948 76.7052 230.745 35.2738 33.9814 270.135 18.9434 10.9217 
+75.79 23.2892 76.7108 230.732 35.2783 33.9897 270.13 18.9461 10.9243 
+75.8 23.2835 76.7165 230.719 35.2828 33.998 270.124 18.9487 10.9269 
+75.81 23.2779 76.7221 230.706 35.2873 34.0062 270.119 18.9513 10.9296 
+75.82 23.2723 76.7277 230.694 35.2918 34.0145 270.114 18.9539 10.9322 
+75.83 23.2666 76.7334 230.681 35.2963 34.0227 270.109 18.9566 10.9349 
+75.84 23.261 76.739 230.668 35.3008 34.031 270.103 18.9592 10.9375 
+75.85 23.2554 76.7446 230.655 35.3053 34.0392 270.098 18.9618 10.9401 
+75.86 23.2498 76.7502 230.643 35.3098 34.0475 270.093 18.9645 10.9428 
+75.87 23.2441 76.7559 230.63 35.3143 34.0558 270.087 18.9671 10.9454 
+75.88 23.2385 76.7615 230.617 35.3187 34.064 270.082 18.9697 10.9481 
+75.89 23.2329 76.7671 230.604 35.3232 34.0723 270.077 18.9723 10.9507 
+75.9 23.2273 76.7727 230.592 35.3277 34.0805 270.072 18.975 10.9534 
+75.91 23.2217 76.7783 230.579 35.3322 34.0888 270.066 18.9776 10.956 
+75.92 23.216 76.784 230.566 35.3367 34.0971 270.061 18.9802 10.9587 
+75.93 23.2104 76.7896 230.553 35.3412 34.1053 270.056 18.9829 10.9613 
+75.94 23.2048 76.7952 230.541 35.3457 34.1136 270.051 18.9855 10.964 
+75.95 23.1992 76.8008 230.528 35.3502 34.1219 270.045 18.9881 10.9666 
+75.96 23.1936 76.8064 230.515 35.3547 34.1302 270.04 18.9908 10.9693 
+75.97 23.188 76.812 230.502 35.3592 34.1384 270.035 18.9934 10.9719 
+75.98 23.1824 76.8176 230.49 35.3637 34.1467 270.029 18.996 10.9746 
+75.99 23.1768 76.8232 230.477 35.3681 34.155 270.024 18.9987 10.9772 
+76 23.1712 76.8288 230.464 35.3726 34.1633 270.019 19.0013 10.9799 
+76.01 23.1656 76.8344 230.451 35.3771 34.1715 270.013 19.004 10.9826 
+76.02 23.16 76.84 230.439 35.3816 34.1798 270.008 19.0066 10.9852 
+76.03 23.1544 76.8456 230.426 35.3861 34.1881 270.003 19.0092 10.9879 
+76.04 23.1488 76.8512 230.413 35.3906 34.1964 269.998 19.0119 10.9906 
+76.05 23.1432 76.8568 230.4 35.3951 34.2046 269.992 19.0145 10.9932 
+76.06 23.1376 76.8624 230.387 35.3996 34.2129 269.987 19.0171 10.9959 
+76.07 23.132 76.868 230.375 35.4041 34.2212 269.982 19.0198 10.9986 
+76.08 23.1264 76.8736 230.362 35.4086 34.2295 269.976 19.0224 11.0012 
+76.09 23.1208 76.8792 230.349 35.4131 34.2378 269.971 19.0251 11.0039 
+76.1 23.1152 76.8848 230.336 35.4175 34.2461 269.966 19.0277 11.0066 
+76.11 23.1096 76.8904 230.324 35.422 34.2544 269.96 19.0304 11.0092 
+76.12 23.1041 76.8959 230.311 35.4265 34.2626 269.955 19.033 11.0119 
+76.13 23.0985 76.9015 230.298 35.431 34.2709 269.95 19.0357 11.0146 
+76.14 23.0929 76.9071 230.285 35.4355 34.2792 269.944 19.0383 11.0173 
+76.15 23.0873 76.9127 230.272 35.44 34.2875 269.939 19.0409 11.0199 
+76.16 23.0817 76.9183 230.26 35.4445 34.2958 269.934 19.0436 11.0226 
+76.17 23.0762 76.9238 230.247 35.449 34.3041 269.928 19.0462 11.0253 
+76.18 23.0706 76.9294 230.234 35.4535 34.3124 269.923 19.0489 11.028 
+76.19 23.065 76.935 230.221 35.458 34.3207 269.918 19.0515 11.0307 
+76.2 23.0595 76.9405 230.209 35.4624 34.329 269.912 19.0542 11.0333 
+76.21 23.0539 76.9461 230.196 35.4669 34.3373 269.907 19.0568 11.036 
+76.22 23.0483 76.9517 230.183 35.4714 34.3456 269.902 19.0595 11.0387 
+76.23 23.0428 76.9572 230.17 35.4759 34.3539 269.896 19.0621 11.0414 
+76.24 23.0372 76.9628 230.157 35.4804 34.3622 269.891 19.0648 11.0441 
+76.25 23.0316 76.9684 230.145 35.4849 34.3705 269.886 19.0674 11.0468 
+76.26 23.0261 76.9739 230.132 35.4894 34.3788 269.88 19.0701 11.0495 
+76.27 23.0205 76.9795 230.119 35.4939 34.3871 269.875 19.0728 11.0521 
+76.28 23.015 76.985 230.106 35.4984 34.3954 269.87 19.0754 11.0548 
+76.29 23.0094 76.9906 230.093 35.5029 34.4037 269.864 19.0781 11.0575 
+76.3 23.0038 76.9962 230.081 35.5073 34.412 269.859 19.0807 11.0602 
+76.31 22.9983 77.0017 230.068 35.5118 34.4203 269.854 19.0834 11.0629 
+76.32 22.9927 77.0073 230.055 35.5163 34.4286 269.848 19.086 11.0656 
+76.33 22.9872 77.0128 230.042 35.5208 34.437 269.843 19.0887 11.0683 
+76.34 22.9816 77.0184 230.029 35.5253 34.4453 269.838 19.0913 11.071 
+76.35 22.9761 77.0239 230.017 35.5298 34.4536 269.832 19.094 11.0737 
+76.36 22.9706 77.0294 230.004 35.5343 34.4619 269.827 19.0967 11.0764 
+76.37 22.965 77.035 229.991 35.5388 34.4702 269.822 19.0993 11.0791 
+76.38 22.9595 77.0405 229.978 35.5433 34.4785 269.816 19.102 11.0818 
+76.39 22.9539 77.0461 229.965 35.5477 34.4869 269.811 19.1046 11.0845 
+76.4 22.9484 77.0516 229.953 35.5522 34.4952 269.805 19.1073 11.0872 
+76.41 22.9429 77.0571 229.94 35.5567 34.5035 269.8 19.11 11.0899 
+76.42 22.9373 77.0627 229.927 35.5612 34.5118 269.795 19.1126 11.0926 
+76.43 22.9318 77.0682 229.914 35.5657 34.5201 269.789 19.1153 11.0953 
+76.44 22.9263 77.0737 229.901 35.5702 34.5285 269.784 19.118 11.0981 
+76.45 22.9207 77.0793 229.889 35.5747 34.5368 269.779 19.1206 11.1008 
+76.46 22.9152 77.0848 229.876 35.5792 34.5451 269.773 19.1233 11.1035 
+76.47 22.9097 77.0903 229.863 35.5836 34.5534 269.768 19.126 11.1062 
+76.48 22.9042 77.0958 229.85 35.5881 34.5618 269.762 19.1286 11.1089 
+76.49 22.8986 77.1014 229.837 35.5926 34.5701 269.757 19.1313 11.1116 
+76.5 22.8931 77.1069 229.824 35.5971 34.5784 269.752 19.134 11.1143 
+76.51 22.8876 77.1124 229.812 35.6016 34.5868 269.746 19.1366 11.1171 
+76.52 22.8821 77.1179 229.799 35.6061 34.5951 269.741 19.1393 11.1198 
+76.53 22.8766 77.1234 229.786 35.6106 34.6034 269.736 19.142 11.1225 
+76.54 22.871 77.129 229.773 35.6151 34.6118 269.73 19.1446 11.1252 
+76.55 22.8655 77.1345 229.76 35.6196 34.6201 269.725 19.1473 11.1279 
+76.56 22.86 77.14 229.748 35.624 34.6284 269.719 19.15 11.1307 
+76.57 22.8545 77.1455 229.735 35.6285 34.6368 269.714 19.1527 11.1334 
+76.58 22.849 77.151 229.722 35.633 34.6451 269.709 19.1553 11.1361 
+76.59 22.8435 77.1565 229.709 35.6375 34.6535 269.703 19.158 11.1389 
+76.6 22.838 77.162 229.696 35.642 34.6618 269.698 19.1607 11.1416 
+76.61 22.8325 77.1675 229.683 35.6465 34.6701 269.692 19.1634 11.1443 
+76.62 22.827 77.173 229.671 35.651 34.6785 269.687 19.166 11.147 
+76.63 22.8215 77.1785 229.658 35.6555 34.6868 269.682 19.1687 11.1498 
+76.64 22.816 77.184 229.645 35.6599 34.6952 269.676 19.1714 11.1525 
+76.65 22.8105 77.1895 229.632 35.6644 34.7035 269.671 19.1741 11.1552 
+76.66 22.805 77.195 229.619 35.6689 34.7119 269.665 19.1767 11.158 
+76.67 22.7995 77.2005 229.606 35.6734 34.7202 269.66 19.1794 11.1607 
+76.68 22.794 77.206 229.594 35.6779 34.7286 269.654 19.1821 11.1635 
+76.69 22.7885 77.2115 229.581 35.6824 34.7369 269.649 19.1848 11.1662 
+76.7 22.783 77.217 229.568 35.6869 34.7453 269.644 19.1875 11.1689 
+76.71 22.7775 77.2225 229.555 35.6913 34.7536 269.638 19.1901 11.1717 
+76.72 22.7721 77.2279 229.542 35.6958 34.762 269.633 19.1928 11.1744 
+76.73 22.7666 77.2334 229.529 35.7003 34.7703 269.627 19.1955 11.1772 
+76.74 22.7611 77.2389 229.516 35.7048 34.7787 269.622 19.1982 11.1799 
+76.75 22.7556 77.2444 229.504 35.7093 34.787 269.616 19.2009 11.1827 
+76.76 22.7501 77.2499 229.491 35.7138 34.7954 269.611 19.2036 11.1854 
+76.77 22.7447 77.2553 229.478 35.7183 34.8038 269.606 19.2062 11.1882 
+76.78 22.7392 77.2608 229.465 35.7228 34.8121 269.6 19.2089 11.1909 
+76.79 22.7337 77.2663 229.452 35.7272 34.8205 269.595 19.2116 11.1937 
+76.8 22.7282 77.2718 229.439 35.7317 34.8289 269.589 19.2143 11.1964 
+76.81 22.7228 77.2772 229.427 35.7362 34.8372 269.584 19.217 11.1992 
+76.82 22.7173 77.2827 229.414 35.7407 34.8456 269.578 19.2197 11.2019 
+76.83 22.7118 77.2882 229.401 35.7452 34.854 269.573 19.2224 11.2047 
+76.84 22.7064 77.2936 229.388 35.7497 34.8623 269.568 19.2251 11.2074 
+76.85 22.7009 77.2991 229.375 35.7542 34.8707 269.562 19.2278 11.2102 
+76.86 22.6954 77.3046 229.362 35.7586 34.8791 269.557 19.2304 11.2129 
+76.87 22.69 77.31 229.349 35.7631 34.8874 269.551 19.2331 11.2157 
+76.88 22.6845 77.3155 229.337 35.7676 34.8958 269.546 19.2358 11.2185 
+76.89 22.6791 77.3209 229.324 35.7721 34.9042 269.54 19.2385 11.2212 
+76.9 22.6736 77.3264 229.311 35.7766 34.9125 269.535 19.2412 11.224 
+76.91 22.6682 77.3318 229.298 35.7811 34.9209 269.529 19.2439 11.2268 
+76.92 22.6627 77.3373 229.285 35.7856 34.9293 269.524 19.2466 11.2295 
+76.93 22.6572 77.3428 229.272 35.79 34.9377 269.518 19.2493 11.2323 
+76.94 22.6518 77.3482 229.259 35.7945 34.9461 269.513 19.252 11.2351 
+76.95 22.6464 77.3536 229.247 35.799 34.9544 269.507 19.2547 11.2378 
+76.96 22.6409 77.3591 229.234 35.8035 34.9628 269.502 19.2574 11.2406 
+76.97 22.6355 77.3645 229.221 35.808 34.9712 269.497 19.2601 11.2434 
+76.98 22.63 77.37 229.208 35.8125 34.9796 269.491 19.2628 11.2461 
+76.99 22.6246 77.3754 229.195 35.817 34.988 269.486 19.2655 11.2489 
+77 22.6191 77.3809 229.182 35.8214 34.9963 269.48 19.2682 11.2517 
+77.01 22.6137 77.3863 229.169 35.8259 35.0047 269.475 19.2709 11.2545 
+77.02 22.6083 77.3917 229.156 35.8304 35.0131 269.469 19.2736 11.2573 
+77.03 22.6028 77.3972 229.144 35.8349 35.0215 269.464 19.2763 11.26 
+77.04 22.5974 77.4026 229.131 35.8394 35.0299 269.458 19.279 11.2628 
+77.05 22.592 77.408 229.118 35.8439 35.0383 269.453 19.2817 11.2656 
+77.06 22.5865 77.4135 229.105 35.8483 35.0467 269.447 19.2844 11.2684 
+77.07 22.5811 77.4189 229.092 35.8528 35.0551 269.442 19.2871 11.2712 
+77.08 22.5757 77.4243 229.079 35.8573 35.0635 269.436 19.2898 11.2739 
+77.09 22.5703 77.4297 229.066 35.8618 35.0719 269.431 19.2925 11.2767 
+77.1 22.5648 77.4352 229.053 35.8663 35.0803 269.425 19.2952 11.2795 
+77.11 22.5594 77.4406 229.041 35.8708 35.0887 269.42 19.2979 11.2823 
+77.12 22.554 77.446 229.028 35.8753 35.0971 269.414 19.3006 11.2851 
+77.13 22.5486 77.4514 229.015 35.8797 35.1055 269.409 19.3033 11.2879 
+77.14 22.5432 77.4568 229.002 35.8842 35.1139 269.403 19.306 11.2907 
+77.15 22.5377 77.4623 228.989 35.8887 35.1223 269.398 19.3088 11.2935 
+77.16 22.5323 77.4677 228.976 35.8932 35.1307 269.392 19.3115 11.2963 
+77.17 22.5269 77.4731 228.963 35.8977 35.1391 269.387 19.3142 11.2991 
+77.18 22.5215 77.4785 228.95 35.9022 35.1475 269.381 19.3169 11.3019 
+77.19 22.5161 77.4839 228.937 35.9066 35.1559 269.376 19.3196 11.3047 
+77.2 22.5107 77.4893 228.925 35.9111 35.1643 269.37 19.3223 11.3075 
+77.21 22.5053 77.4947 228.912 35.9156 35.1727 269.365 19.325 11.3103 
+77.22 22.4999 77.5001 228.899 35.9201 35.1811 269.359 19.3277 11.3131 
+77.23 22.4945 77.5055 228.886 35.9246 35.1895 269.354 19.3304 11.3159 
+77.24 22.4891 77.5109 228.873 35.9291 35.1979 269.348 19.3332 11.3187 
+77.25 22.4837 77.5163 228.86 35.9335 35.2063 269.343 19.3359 11.3215 
+77.26 22.4783 77.5217 228.847 35.938 35.2147 269.337 19.3386 11.3243 
+77.27 22.4729 77.5271 228.834 35.9425 35.2232 269.332 19.3413 11.3271 
+77.28 22.4675 77.5325 228.821 35.947 35.2316 269.326 19.344 11.3299 
+77.29 22.4621 77.5379 228.809 35.9515 35.24 269.321 19.3467 11.3327 
+77.3 22.4567 77.5433 228.796 35.956 35.2484 269.315 19.3495 11.3355 
+77.31 22.4513 77.5487 228.783 35.9604 35.2568 269.309 19.3522 11.3383 
+77.32 22.446 77.554 228.77 35.9649 35.2652 269.304 19.3549 11.3411 
+77.33 22.4406 77.5594 228.757 35.9694 35.2737 269.298 19.3576 11.344 
+77.34 22.4352 77.5648 228.744 35.9739 35.2821 269.293 19.3603 11.3468 
+77.35 22.4298 77.5702 228.731 35.9784 35.2905 269.287 19.3631 11.3496 
+77.36 22.4244 77.5756 228.718 35.9828 35.2989 269.282 19.3658 11.3524 
+77.37 22.419 77.581 228.705 35.9873 35.3074 269.276 19.3685 11.3552 
+77.38 22.4137 77.5863 228.692 35.9918 35.3158 269.271 19.3712 11.3581 
+77.39 22.4083 77.5917 228.679 35.9963 35.3242 269.265 19.374 11.3609 
+77.4 22.4029 77.5971 228.667 36.0008 35.3326 269.26 19.3767 11.3637 
+77.41 22.3975 77.6025 228.654 36.0053 35.3411 269.254 19.3794 11.3665 
+77.42 22.3922 77.6078 228.641 36.0097 35.3495 269.249 19.3821 11.3693 
+77.43 22.3868 77.6132 228.628 36.0142 35.3579 269.243 19.3849 11.3722 
+77.44 22.3814 77.6186 228.615 36.0187 35.3664 269.237 19.3876 11.375 
+77.45 22.3761 77.6239 228.602 36.0232 35.3748 269.232 19.3903 11.3778 
+77.46 22.3707 77.6293 228.589 36.0277 35.3832 269.226 19.393 11.3807 
+77.47 22.3653 77.6347 228.576 36.0322 35.3917 269.221 19.3958 11.3835 
+77.48 22.36 77.64 228.563 36.0366 35.4001 269.215 19.3985 11.3863 
+77.49 22.3546 77.6454 228.55 36.0411 35.4085 269.21 19.4012 11.3892 
+77.5 22.3493 77.6507 228.537 36.0456 35.417 269.204 19.404 11.392 
+77.51 22.3439 77.6561 228.525 36.0501 35.4254 269.198 19.4067 11.3948 
+77.52 22.3386 77.6614 228.512 36.0546 35.4339 269.193 19.4094 11.3977 
+77.53 22.3332 77.6668 228.499 36.059 35.4423 269.187 19.4122 11.4005 
+77.54 22.3279 77.6721 228.486 36.0635 35.4507 269.182 19.4149 11.4033 
+77.55 22.3225 77.6775 228.473 36.068 35.4592 269.176 19.4176 11.4062 
+77.56 22.3172 77.6828 228.46 36.0725 35.4676 269.171 19.4204 11.409 
+77.57 22.3118 77.6882 228.447 36.077 35.4761 269.165 19.4231 11.4119 
+77.58 22.3065 77.6935 228.434 36.0814 35.4845 269.159 19.4258 11.4147 
+77.59 22.3011 77.6989 228.421 36.0859 35.493 269.154 19.4286 11.4176 
+77.6 22.2958 77.7042 228.408 36.0904 35.5014 269.148 19.4313 11.4204 
+77.61 22.2904 77.7096 228.395 36.0949 35.5099 269.143 19.434 11.4233 
+77.62 22.2851 77.7149 228.382 36.0994 35.5183 269.137 19.4368 11.4261 
+77.63 22.2798 77.7202 228.369 36.1038 35.5268 269.132 19.4395 11.429 
+77.64 22.2744 77.7256 228.356 36.1083 35.5352 269.126 19.4423 11.4318 
+77.65 22.2691 77.7309 228.343 36.1128 35.5437 269.12 19.445 11.4347 
+77.66 22.2638 77.7362 228.331 36.1173 35.5522 269.115 19.4477 11.4375 
+77.67 22.2584 77.7416 228.318 36.1218 35.5606 269.109 19.4505 11.4404 
+77.68 22.2531 77.7469 228.305 36.1262 35.5691 269.104 19.4532 11.4432 
+77.69 22.2478 77.7522 228.292 36.1307 35.5775 269.098 19.456 11.4461 
+77.7 22.2425 77.7575 228.279 36.1352 35.586 269.092 19.4587 11.4489 
+77.71 22.2371 77.7629 228.266 36.1397 35.5944 269.087 19.4615 11.4518 
+77.72 22.2318 77.7682 228.253 36.1442 35.6029 269.081 19.4642 11.4547 
+77.73 22.2265 77.7735 228.24 36.1486 35.6114 269.076 19.467 11.4575 
+77.74 22.2212 77.7788 228.227 36.1531 35.6198 269.07 19.4697 11.4604 
+77.75 22.2159 77.7841 228.214 36.1576 35.6283 269.064 19.4724 11.4633 
+77.76 22.2106 77.7894 228.201 36.1621 35.6368 269.059 19.4752 11.4661 
+77.77 22.2052 77.7948 228.188 36.1666 35.6452 269.053 19.4779 11.469 
+77.78 22.1999 77.8001 228.175 36.171 35.6537 269.047 19.4807 11.4719 
+77.79 22.1946 77.8054 228.162 36.1755 35.6622 269.042 19.4834 11.4747 
+77.8 22.1893 77.8107 228.149 36.18 35.6707 269.036 19.4862 11.4776 
+77.81 22.184 77.816 228.136 36.1845 35.6791 269.031 19.4889 11.4805 
+77.82 22.1787 77.8213 228.123 36.189 35.6876 269.025 19.4917 11.4833 
+77.83 22.1734 77.8266 228.11 36.1934 35.6961 269.019 19.4944 11.4862 
+77.84 22.1681 77.8319 228.098 36.1979 35.7045 269.014 19.4972 11.4891 
+77.85 22.1628 77.8372 228.085 36.2024 35.713 269.008 19.4999 11.492 
+77.86 22.1575 77.8425 228.072 36.2069 35.7215 269.002 19.5027 11.4948 
+77.87 22.1522 77.8478 228.059 36.2114 35.73 268.997 19.5055 11.4977 
+77.88 22.1469 77.8531 228.046 36.2158 35.7385 268.991 19.5082 11.5006 
+77.89 22.1416 77.8584 228.033 36.2203 35.7469 268.986 19.511 11.5035 
+77.9 22.1363 77.8637 228.02 36.2248 35.7554 268.98 19.5137 11.5064 
+77.91 22.131 77.869 228.007 36.2293 35.7639 268.974 19.5165 11.5093 
+77.92 22.1257 77.8743 227.994 36.2337 35.7724 268.969 19.5192 11.5121 
+77.93 22.1205 77.8795 227.981 36.2382 35.7809 268.963 19.522 11.515 
+77.94 22.1152 77.8848 227.968 36.2427 35.7894 268.957 19.5247 11.5179 
+77.95 22.1099 77.8901 227.955 36.2472 35.7978 268.952 19.5275 11.5208 
+77.96 22.1046 77.8954 227.942 36.2517 35.8063 268.946 19.5303 11.5237 
+77.97 22.0993 77.9007 227.929 36.2561 35.8148 268.94 19.533 11.5266 
+77.98 22.094 77.906 227.916 36.2606 35.8233 268.935 19.5358 11.5295 
+77.99 22.0888 77.9112 227.903 36.2651 35.8318 268.929 19.5386 11.5324 
+78 22.0835 77.9165 227.89 36.2696 35.8403 268.923 19.5413 11.5353 
+78.01 22.0782 77.9218 227.877 36.274 35.8488 268.918 19.5441 11.5382 
+78.02 22.073 77.927 227.864 36.2785 35.8573 268.912 19.5468 11.5411 
+78.03 22.0677 77.9323 227.851 36.283 35.8658 268.906 19.5496 11.544 
+78.04 22.0624 77.9376 227.838 36.2875 35.8743 268.901 19.5524 11.5469 
+78.05 22.0571 77.9429 227.825 36.292 35.8828 268.895 19.5551 11.5498 
+78.06 22.0519 77.9481 227.812 36.2964 35.8913 268.889 19.5579 11.5527 
+78.07 22.0466 77.9534 227.799 36.3009 35.8998 268.884 19.5607 11.5556 
+78.08 22.0414 77.9586 227.786 36.3054 35.9083 268.878 19.5634 11.5585 
+78.09 22.0361 77.9639 227.773 36.3099 35.9168 268.872 19.5662 11.5614 
+78.1 22.0308 77.9692 227.76 36.3143 35.9253 268.867 19.569 11.5643 
+78.11 22.0256 77.9744 227.747 36.3188 35.9338 268.861 19.5717 11.5672 
+78.12 22.0203 77.9797 227.734 36.3233 35.9423 268.855 19.5745 11.5701 
+78.13 22.0151 77.9849 227.721 36.3278 35.9508 268.85 19.5773 11.573 
+78.14 22.0098 77.9902 227.708 36.3322 35.9593 268.844 19.58 11.5759 
+78.15 22.0046 77.9954 227.695 36.3367 35.9678 268.838 19.5828 11.5788 
+78.16 21.9993 78.0007 227.682 36.3412 35.9763 268.833 19.5856 11.5817 
+78.17 21.9941 78.0059 227.669 36.3457 35.9848 268.827 19.5884 11.5847 
+78.18 21.9888 78.0112 227.657 36.3502 35.9933 268.821 19.5911 11.5876 
+78.19 21.9836 78.0164 227.644 36.3546 36.0019 268.816 19.5939 11.5905 
+78.2 21.9783 78.0217 227.631 36.3591 36.0104 268.81 19.5967 11.5934 
+78.21 21.9731 78.0269 227.618 36.3636 36.0189 268.804 19.5995 11.5963 
+78.22 21.9679 78.0321 227.605 36.3681 36.0274 268.799 19.6022 11.5993 
+78.23 21.9626 78.0374 227.592 36.3725 36.0359 268.793 19.605 11.6022 
+78.24 21.9574 78.0426 227.579 36.377 36.0444 268.787 19.6078 11.6051 
+78.25 21.9521 78.0479 227.566 36.3815 36.0529 268.781 19.6106 11.608 
+78.26 21.9469 78.0531 227.553 36.386 36.0615 268.776 19.6133 11.611 
+78.27 21.9417 78.0583 227.54 36.3904 36.07 268.77 19.6161 11.6139 
+78.28 21.9365 78.0635 227.527 36.3949 36.0785 268.764 19.6189 11.6168 
+78.29 21.9312 78.0688 227.514 36.3994 36.087 268.759 19.6217 11.6197 
+78.3 21.926 78.074 227.501 36.4039 36.0956 268.753 19.6245 11.6227 
+78.31 21.9208 78.0792 227.488 36.4083 36.1041 268.747 19.6273 11.6256 
+78.32 21.9156 78.0844 227.475 36.4128 36.1126 268.741 19.63 11.6285 
+78.33 21.9103 78.0897 227.462 36.4173 36.1211 268.736 19.6328 11.6315 
+78.34 21.9051 78.0949 227.449 36.4218 36.1297 268.73 19.6356 11.6344 
+78.35 21.8999 78.1001 227.436 36.4262 36.1382 268.724 19.6384 11.6373 
+78.36 21.8947 78.1053 227.423 36.4307 36.1467 268.719 19.6412 11.6403 
+78.37 21.8895 78.1105 227.41 36.4352 36.1553 268.713 19.644 11.6432 
+78.38 21.8843 78.1157 227.397 36.4397 36.1638 268.707 19.6467 11.6462 
+78.39 21.879 78.121 227.384 36.4441 36.1723 268.701 19.6495 11.6491 
+78.4 21.8738 78.1262 227.371 36.4486 36.1809 268.696 19.6523 11.6521 
+78.41 21.8686 78.1314 227.358 36.4531 36.1894 268.69 19.6551 11.655 
+78.42 21.8634 78.1366 227.345 36.4576 36.1979 268.684 19.6579 11.6579 
+78.43 21.8582 78.1418 227.332 36.462 36.2065 268.678 19.6607 11.6609 
+78.44 21.853 78.147 227.318 36.4665 36.215 268.673 19.6635 11.6638 
+78.45 21.8478 78.1522 227.305 36.471 36.2235 268.667 19.6663 11.6668 
+78.46 21.8426 78.1574 227.292 36.4754 36.2321 268.661 19.669 11.6697 
+78.47 21.8374 78.1626 227.279 36.4799 36.2406 268.655 19.6718 11.6727 
+78.48 21.8322 78.1678 227.266 36.4844 36.2492 268.65 19.6746 11.6756 
+78.49 21.827 78.173 227.253 36.4889 36.2577 268.644 19.6774 11.6786 
+78.5 21.8218 78.1782 227.24 36.4933 36.2663 268.638 19.6802 11.6816 
+78.51 21.8166 78.1834 227.227 36.4978 36.2748 268.632 19.683 11.6845 
+78.52 21.8114 78.1886 227.214 36.5023 36.2834 268.627 19.6858 11.6875 
+78.53 21.8063 78.1937 227.201 36.5068 36.2919 268.621 19.6886 11.6904 
+78.54 21.8011 78.1989 227.188 36.5112 36.3005 268.615 19.6914 11.6934 
+78.55 21.7959 78.2041 227.175 36.5157 36.309 268.609 19.6942 11.6963 
+78.56 21.7907 78.2093 227.162 36.5202 36.3176 268.604 19.697 11.6993 
+78.57 21.7855 78.2145 227.149 36.5247 36.3261 268.598 19.6998 11.7023 
+78.58 21.7803 78.2197 227.136 36.5291 36.3347 268.592 19.7026 11.7052 
+78.59 21.7752 78.2248 227.123 36.5336 36.3432 268.586 19.7054 11.7082 
+78.6 21.77 78.23 227.11 36.5381 36.3518 268.581 19.7082 11.7112 
+78.61 21.7648 78.2352 227.097 36.5425 36.3603 268.575 19.711 11.7141 
+78.62 21.7596 78.2404 227.084 36.547 36.3689 268.569 19.7138 11.7171 
+78.63 21.7545 78.2455 227.071 36.5515 36.3774 268.563 19.7166 11.7201 
+78.64 21.7493 78.2507 227.058 36.556 36.386 268.558 19.7194 11.7231 
+78.65 21.7441 78.2559 227.045 36.5604 36.3946 268.552 19.7222 11.726 
+78.66 21.739 78.261 227.032 36.5649 36.4031 268.546 19.725 11.729 
+78.67 21.7338 78.2662 227.019 36.5694 36.4117 268.54 19.7278 11.732 
+78.68 21.7286 78.2714 227.006 36.5739 36.4203 268.534 19.7306 11.735 
+78.69 21.7235 78.2765 226.993 36.5783 36.4288 268.529 19.7334 11.7379 
+78.7 21.7183 78.2817 226.98 36.5828 36.4374 268.523 19.7362 11.7409 
+78.71 21.7131 78.2869 226.967 36.5873 36.446 268.517 19.739 11.7439 
+78.72 21.708 78.292 226.954 36.5917 36.4545 268.511 19.7418 11.7469 
+78.73 21.7028 78.2972 226.941 36.5962 36.4631 268.506 19.7446 11.7499 
+78.74 21.6977 78.3023 226.928 36.6007 36.4717 268.5 19.7474 11.7528 
+78.75 21.6925 78.3075 226.915 36.6052 36.4802 268.494 19.7503 11.7558 
+78.76 21.6874 78.3126 226.902 36.6096 36.4888 268.488 19.7531 11.7588 
+78.77 21.6822 78.3178 226.889 36.6141 36.4974 268.482 19.7559 11.7618 
+78.78 21.6771 78.3229 226.875 36.6186 36.506 268.477 19.7587 11.7648 
+78.79 21.6719 78.3281 226.862 36.623 36.5145 268.471 19.7615 11.7678 
+78.8 21.6668 78.3332 226.849 36.6275 36.5231 268.465 19.7643 11.7708 
+78.81 21.6616 78.3384 226.836 36.632 36.5317 268.459 19.7671 11.7738 
+78.82 21.6565 78.3435 226.823 36.6364 36.5403 268.453 19.7699 11.7768 
+78.83 21.6514 78.3486 226.81 36.6409 36.5488 268.447 19.7728 11.7798 
+78.84 21.6462 78.3538 226.797 36.6454 36.5574 268.442 19.7756 11.7828 
+78.85 21.6411 78.3589 226.784 36.6499 36.566 268.436 19.7784 11.7858 
+78.86 21.636 78.364 226.771 36.6543 36.5746 268.43 19.7812 11.7888 
+78.87 21.6308 78.3692 226.758 36.6588 36.5832 268.424 19.784 11.7918 
+78.88 21.6257 78.3743 226.745 36.6633 36.5918 268.418 19.7868 11.7948 
+78.89 21.6206 78.3794 226.732 36.6677 36.6003 268.413 19.7896 11.7978 
+78.9 21.6154 78.3846 226.719 36.6722 36.6089 268.407 19.7925 11.8008 
+78.91 21.6103 78.3897 226.706 36.6767 36.6175 268.401 19.7953 11.8038 
+78.92 21.6052 78.3948 226.693 36.6812 36.6261 268.395 19.7981 11.8068 
+78.93 21.6001 78.3999 226.68 36.6856 36.6347 268.389 19.8009 11.8098 
+78.94 21.5949 78.4051 226.667 36.6901 36.6433 268.383 19.8037 11.8128 
+78.95 21.5898 78.4102 226.654 36.6946 36.6519 268.378 19.8066 11.8158 
+78.96 21.5847 78.4153 226.641 36.699 36.6605 268.372 19.8094 11.8188 
+78.97 21.5796 78.4204 226.627 36.7035 36.6691 268.366 19.8122 11.8218 
+78.98 21.5745 78.4255 226.614 36.708 36.6777 268.36 19.815 11.8248 
+78.99 21.5694 78.4306 226.601 36.7124 36.6863 268.354 19.8179 11.8279 
+79 21.5642 78.4358 226.588 36.7169 36.6949 268.348 19.8207 11.8309 
+79.01 21.5591 78.4409 226.575 36.7214 36.7034 268.343 19.8235 11.8339 
+79.02 21.554 78.446 226.562 36.7258 36.712 268.337 19.8263 11.8369 
+79.03 21.5489 78.4511 226.549 36.7303 36.7206 268.331 19.8292 11.8399 
+79.04 21.5438 78.4562 226.536 36.7348 36.7293 268.325 19.832 11.843 
+79.05 21.5387 78.4613 226.523 36.7392 36.7379 268.319 19.8348 11.846 
+79.06 21.5336 78.4664 226.51 36.7437 36.7465 268.313 19.8376 11.849 
+79.07 21.5285 78.4715 226.497 36.7482 36.7551 268.308 19.8405 11.852 
+79.08 21.5234 78.4766 226.484 36.7527 36.7637 268.302 19.8433 11.8551 
+79.09 21.5183 78.4817 226.471 36.7571 36.7723 268.296 19.8461 11.8581 
+79.1 21.5132 78.4868 226.458 36.7616 36.7809 268.29 19.849 11.8611 
+79.11 21.5081 78.4919 226.444 36.7661 36.7895 268.284 19.8518 11.8641 
+79.12 21.503 78.497 226.431 36.7705 36.7981 268.278 19.8546 11.8672 
+79.13 21.4979 78.5021 226.418 36.775 36.8067 268.272 19.8575 11.8702 
+79.14 21.4929 78.5071 226.405 36.7795 36.8153 268.266 19.8603 11.8732 
+79.15 21.4878 78.5122 226.392 36.7839 36.8239 268.261 19.8631 11.8763 
+79.16 21.4827 78.5173 226.379 36.7884 36.8325 268.255 19.866 11.8793 
+79.17 21.4776 78.5224 226.366 36.7929 36.8412 268.249 19.8688 11.8823 
+79.18 21.4725 78.5275 226.353 36.7973 36.8498 268.243 19.8716 11.8854 
+79.19 21.4674 78.5326 226.34 36.8018 36.8584 268.237 19.8745 11.8884 
+79.2 21.4624 78.5376 226.327 36.8063 36.867 268.231 19.8773 11.8915 
+79.21 21.4573 78.5427 226.314 36.8107 36.8756 268.225 19.8801 11.8945 
+79.22 21.4522 78.5478 226.301 36.8152 36.8843 268.219 19.883 11.8976 
+79.23 21.4471 78.5529 226.287 36.8197 36.8929 268.214 19.8858 11.9006 
+79.24 21.4421 78.5579 226.274 36.8241 36.9015 268.208 19.8887 11.9036 
+79.25 21.437 78.563 226.261 36.8286 36.9101 268.202 19.8915 11.9067 
+79.26 21.4319 78.5681 226.248 36.8331 36.9187 268.196 19.8943 11.9097 
+79.27 21.4269 78.5731 226.235 36.8375 36.9274 268.19 19.8972 11.9128 
+79.28 21.4218 78.5782 226.222 36.842 36.936 268.184 19.9 11.9158 
+79.29 21.4167 78.5833 226.209 36.8465 36.9446 268.178 19.9029 11.9189 
+79.3 21.4117 78.5883 226.196 36.8509 36.9532 268.172 19.9057 11.9219 
+79.31 21.4066 78.5934 226.183 36.8554 36.9619 268.166 19.9085 11.925 
+79.32 21.4015 78.5985 226.17 36.8599 36.9705 268.161 19.9114 11.9281 
+79.33 21.3965 78.6035 226.157 36.8643 36.9791 268.155 19.9142 11.9311 
+79.34 21.3914 78.6086 226.143 36.8688 36.9878 268.149 19.9171 11.9342 
+79.35 21.3864 78.6136 226.13 36.8733 36.9964 268.143 19.9199 11.9372 
+79.36 21.3813 78.6187 226.117 36.8777 37.005 268.137 19.9228 11.9403 
+79.37 21.3763 78.6237 226.104 36.8822 37.0137 268.131 19.9256 11.9434 
+79.38 21.3712 78.6288 226.091 36.8867 37.0223 268.125 19.9285 11.9464 
+79.39 21.3662 78.6338 226.078 36.8911 37.031 268.119 19.9313 11.9495 
+79.4 21.3611 78.6389 226.065 36.8956 37.0396 268.113 19.9342 11.9525 
+79.41 21.3561 78.6439 226.052 36.9001 37.0482 268.107 19.937 11.9556 
+79.42 21.351 78.649 226.039 36.9045 37.0569 268.101 19.9399 11.9587 
+79.43 21.346 78.654 226.026 36.909 37.0655 268.096 19.9427 11.9618 
+79.44 21.341 78.659 226.012 36.9134 37.0742 268.09 19.9456 11.9648 
+79.45 21.3359 78.6641 225.999 36.9179 37.0828 268.084 19.9484 11.9679 
+79.46 21.3309 78.6691 225.986 36.9224 37.0914 268.078 19.9513 11.971 
+79.47 21.3258 78.6742 225.973 36.9268 37.1001 268.072 19.9541 11.974 
+79.48 21.3208 78.6792 225.96 36.9313 37.1087 268.066 19.957 11.9771 
+79.49 21.3158 78.6842 225.947 36.9358 37.1174 268.06 19.9598 11.9802 
+79.5 21.3108 78.6892 225.934 36.9402 37.126 268.054 19.9627 11.9833 
+79.51 21.3057 78.6943 225.921 36.9447 37.1347 268.048 19.9656 11.9864 
+79.52 21.3007 78.6993 225.908 36.9492 37.1433 268.042 19.9684 11.9894 
+79.53 21.2957 78.7043 225.894 36.9536 37.152 268.036 19.9713 11.9925 
+79.54 21.2907 78.7093 225.881 36.9581 37.1606 268.03 19.9741 11.9956 
+79.55 21.2856 78.7144 225.868 36.9626 37.1693 268.024 19.977 11.9987 
+79.56 21.2806 78.7194 225.855 36.967 37.1779 268.018 19.9798 12.0018 
+79.57 21.2756 78.7244 225.842 36.9715 37.1866 268.012 19.9827 12.0049 
+79.58 21.2706 78.7294 225.829 36.9759 37.1953 268.006 19.9856 12.0079 
+79.59 21.2656 78.7344 225.816 36.9804 37.2039 268.001 19.9884 12.011 
+79.6 21.2605 78.7395 225.803 36.9849 37.2126 267.995 19.9913 12.0141 
+79.61 21.2555 78.7445 225.789 36.9893 37.2212 267.989 19.9941 12.0172 
+79.62 21.2505 78.7495 225.776 36.9938 37.2299 267.983 19.997 12.0203 
+79.63 21.2455 78.7545 225.763 36.9983 37.2386 267.977 19.9999 12.0234 
+79.64 21.2405 78.7595 225.75 37.0027 37.2472 267.971 20.0027 12.0265 
+79.65 21.2355 78.7645 225.737 37.0072 37.2559 267.965 20.0056 12.0296 
+79.66 21.2305 78.7695 225.724 37.0116 37.2646 267.959 20.0085 12.0327 
+79.67 21.2255 78.7745 225.711 37.0161 37.2732 267.953 20.0113 12.0358 
+79.68 21.2205 78.7795 225.698 37.0206 37.2819 267.947 20.0142 12.0389 
+79.69 21.2155 78.7845 225.684 37.025 37.2906 267.941 20.0171 12.042 
+79.7 21.2105 78.7895 225.671 37.0295 37.2992 267.935 20.0199 12.0451 
+79.71 21.2055 78.7945 225.658 37.034 37.3079 267.929 20.0228 12.0482 
+79.72 21.2005 78.7995 225.645 37.0384 37.3166 267.923 20.0257 12.0513 
+79.73 21.1955 78.8045 225.632 37.0429 37.3252 267.917 20.0285 12.0544 
+79.74 21.1905 78.8095 225.619 37.0473 37.3339 267.911 20.0314 12.0575 
+79.75 21.1855 78.8145 225.606 37.0518 37.3426 267.905 20.0343 12.0606 
+79.76 21.1806 78.8194 225.592 37.0563 37.3513 267.899 20.0372 12.0638 
+79.77 21.1756 78.8244 225.579 37.0607 37.3599 267.893 20.04 12.0669 
+79.78 21.1706 78.8294 225.566 37.0652 37.3686 267.887 20.0429 12.07 
+79.79 21.1656 78.8344 225.553 37.0697 37.3773 267.881 20.0458 12.0731 
+79.8 21.1606 78.8394 225.54 37.0741 37.386 267.875 20.0487 12.0762 
+79.81 21.1556 78.8444 225.527 37.0786 37.3947 267.869 20.0515 12.0793 
+79.82 21.1507 78.8493 225.514 37.083 37.4033 267.863 20.0544 12.0824 
+79.83 21.1457 78.8543 225.5 37.0875 37.412 267.857 20.0573 12.0856 
+79.84 21.1407 78.8593 225.487 37.092 37.4207 267.851 20.0602 12.0887 
+79.85 21.1357 78.8643 225.474 37.0964 37.4294 267.845 20.063 12.0918 
+79.86 21.1308 78.8692 225.461 37.1009 37.4381 267.839 20.0659 12.0949 
+79.87 21.1258 78.8742 225.448 37.1053 37.4468 267.833 20.0688 12.0981 
+79.88 21.1208 78.8792 225.435 37.1098 37.4554 267.827 20.0717 12.1012 
+79.89 21.1159 78.8841 225.422 37.1143 37.4641 267.821 20.0745 12.1043 
+79.9 21.1109 78.8891 225.408 37.1187 37.4728 267.815 20.0774 12.1074 
+79.91 21.1059 78.8941 225.395 37.1232 37.4815 267.809 20.0803 12.1106 
+79.92 21.101 78.899 225.382 37.1276 37.4902 267.803 20.0832 12.1137 
+79.93 21.096 78.904 225.369 37.1321 37.4989 267.797 20.0861 12.1168 
+79.94 21.0911 78.9089 225.356 37.1366 37.5076 267.791 20.089 12.12 
+79.95 21.0861 78.9139 225.343 37.141 37.5163 267.785 20.0918 12.1231 
+79.96 21.0812 78.9188 225.33 37.1455 37.525 267.779 20.0947 12.1262 
+79.97 21.0762 78.9238 225.316 37.1499 37.5337 267.773 20.0976 12.1294 
+79.98 21.0712 78.9288 225.303 37.1544 37.5424 267.767 20.1005 12.1325 
+79.99 21.0663 78.9337 225.29 37.1589 37.5511 267.761 20.1034 12.1356 
+80 21.0614 78.9386 225.277 37.1633 37.5598 267.755 20.1063 12.1388 
+80.01 21.0564 78.9436 225.264 37.1678 37.5685 267.749 20.1091 12.1419 
+80.02 21.0515 78.9485 225.251 37.1722 37.5772 267.743 20.112 12.1451 
+80.03 21.0465 78.9535 225.237 37.1767 37.5859 267.737 20.1149 12.1482 
+80.04 21.0416 78.9584 225.224 37.1812 37.5946 267.731 20.1178 12.1514 
+80.05 21.0366 78.9634 225.211 37.1856 37.6033 267.725 20.1207 12.1545 
+80.06 21.0317 78.9683 225.198 37.1901 37.612 267.719 20.1236 12.1577 
+80.07 21.0268 78.9732 225.185 37.1945 37.6207 267.713 20.1265 12.1608 
+80.08 21.0218 78.9782 225.172 37.199 37.6294 267.707 20.1294 12.164 
+80.09 21.0169 78.9831 225.158 37.2034 37.6381 267.701 20.1323 12.1671 
+80.1 21.012 78.988 225.145 37.2079 37.6468 267.695 20.1352 12.1703 
+80.11 21.007 78.993 225.132 37.2124 37.6555 267.689 20.1381 12.1734 
+80.12 21.0021 78.9979 225.119 37.2168 37.6642 267.682 20.1409 12.1766 
+80.13 20.9972 79.0028 225.106 37.2213 37.673 267.676 20.1438 12.1797 
+80.14 20.9922 79.0078 225.093 37.2257 37.6817 267.67 20.1467 12.1829 
+80.15 20.9873 79.0127 225.079 37.2302 37.6904 267.664 20.1496 12.186 
+80.16 20.9824 79.0176 225.066 37.2347 37.6991 267.658 20.1525 12.1892 
+80.17 20.9775 79.0225 225.053 37.2391 37.7078 267.652 20.1554 12.1924 
+80.18 20.9726 79.0274 225.04 37.2436 37.7165 267.646 20.1583 12.1955 
+80.19 20.9676 79.0324 225.027 37.248 37.7253 267.64 20.1612 12.1987 
+80.2 20.9627 79.0373 225.014 37.2525 37.734 267.634 20.1641 12.2019 
+80.21 20.9578 79.0422 225 37.2569 37.7427 267.628 20.167 12.205 
+80.22 20.9529 79.0471 224.987 37.2614 37.7514 267.622 20.1699 12.2082 
+80.23 20.948 79.052 224.974 37.2659 37.7601 267.616 20.1728 12.2114 
+80.24 20.9431 79.0569 224.961 37.2703 37.7689 267.61 20.1757 12.2145 
+80.25 20.9382 79.0618 224.948 37.2748 37.7776 267.604 20.1786 12.2177 
+80.26 20.9333 79.0667 224.934 37.2792 37.7863 267.598 20.1815 12.2209 
+80.27 20.9284 79.0716 224.921 37.2837 37.795 267.592 20.1844 12.2241 
+80.28 20.9235 79.0765 224.908 37.2881 37.8038 267.585 20.1873 12.2272 
+80.29 20.9186 79.0814 224.895 37.2926 37.8125 267.579 20.1902 12.2304 
+80.3 20.9137 79.0863 224.882 37.297 37.8212 267.573 20.1931 12.2336 
+80.31 20.9088 79.0912 224.869 37.3015 37.83 267.567 20.196 12.2368 
+80.32 20.9039 79.0961 224.855 37.306 37.8387 267.561 20.199 12.24 
+80.33 20.899 79.101 224.842 37.3104 37.8474 267.555 20.2019 12.2431 
+80.34 20.8941 79.1059 224.829 37.3149 37.8562 267.549 20.2048 12.2463 
+80.35 20.8892 79.1108 224.816 37.3193 37.8649 267.543 20.2077 12.2495 
+80.36 20.8843 79.1157 224.803 37.3238 37.8736 267.537 20.2106 12.2527 
+80.37 20.8794 79.1206 224.789 37.3282 37.8824 267.531 20.2135 12.2559 
+80.38 20.8745 79.1255 224.776 37.3327 37.8911 267.525 20.2164 12.2591 
+80.39 20.8696 79.1304 224.763 37.3371 37.8998 267.518 20.2193 12.2623 
+80.4 20.8648 79.1352 224.75 37.3416 37.9086 267.512 20.2222 12.2654 
+80.41 20.8599 79.1401 224.737 37.3461 37.9173 267.506 20.2251 12.2686 
+80.42 20.855 79.145 224.723 37.3505 37.9261 267.5 20.228 12.2718 
+80.43 20.8501 79.1499 224.71 37.355 37.9348 267.494 20.231 12.275 
+80.44 20.8453 79.1547 224.697 37.3594 37.9436 267.488 20.2339 12.2782 
+80.45 20.8404 79.1596 224.684 37.3639 37.9523 267.482 20.2368 12.2814 
+80.46 20.8355 79.1645 224.671 37.3683 37.961 267.476 20.2397 12.2846 
+80.47 20.8306 79.1694 224.657 37.3728 37.9698 267.47 20.2426 12.2878 
+80.48 20.8258 79.1742 224.644 37.3772 37.9785 267.463 20.2455 12.291 
+80.49 20.8209 79.1791 224.631 37.3817 37.9873 267.457 20.2485 12.2942 
+80.5 20.816 79.184 224.618 37.3861 37.996 267.451 20.2514 12.2974 
+80.51 20.8112 79.1888 224.605 37.3906 38.0048 267.445 20.2543 12.3006 
+80.52 20.8063 79.1937 224.591 37.3951 38.0135 267.439 20.2572 12.3038 
+80.53 20.8014 79.1986 224.578 37.3995 38.0223 267.433 20.2601 12.3071 
+80.54 20.7966 79.2034 224.565 37.404 38.0311 267.427 20.263 12.3103 
+80.55 20.7917 79.2083 224.552 37.4084 38.0398 267.421 20.266 12.3135 
+80.56 20.7869 79.2131 224.539 37.4129 38.0486 267.414 20.2689 12.3167 
+80.57 20.782 79.218 224.525 37.4173 38.0573 267.408 20.2718 12.3199 
+80.58 20.7772 79.2228 224.512 37.4218 38.0661 267.402 20.2747 12.3231 
+80.59 20.7723 79.2277 224.499 37.4262 38.0748 267.396 20.2777 12.3263 
+80.6 20.7675 79.2325 224.486 37.4307 38.0836 267.39 20.2806 12.3295 
+80.61 20.7626 79.2374 224.473 37.4351 38.0924 267.384 20.2835 12.3328 
+80.62 20.7578 79.2422 224.459 37.4396 38.1011 267.378 20.2864 12.336 
+80.63 20.7529 79.2471 224.446 37.444 38.1099 267.371 20.2894 12.3392 
+80.64 20.7481 79.2519 224.433 37.4485 38.1186 267.365 20.2923 12.3424 
+80.65 20.7432 79.2568 224.42 37.4529 38.1274 267.359 20.2952 12.3456 
+80.66 20.7384 79.2616 224.406 37.4574 38.1362 267.353 20.2981 12.3489 
+80.67 20.7335 79.2665 224.393 37.4618 38.1449 267.347 20.3011 12.3521 
+80.68 20.7287 79.2713 224.38 37.4663 38.1537 267.341 20.304 12.3553 
+80.69 20.7239 79.2761 224.367 37.4707 38.1625 267.335 20.3069 12.3585 
+80.7 20.719 79.281 224.354 37.4752 38.1713 267.328 20.3098 12.3618 
+80.71 20.7142 79.2858 224.34 37.4796 38.18 267.322 20.3128 12.365 
+80.72 20.7094 79.2906 224.327 37.4841 38.1888 267.316 20.3157 12.3682 
+80.73 20.7045 79.2955 224.314 37.4886 38.1976 267.31 20.3186 12.3715 
+80.74 20.6997 79.3003 224.301 37.493 38.2063 267.304 20.3216 12.3747 
+80.75 20.6949 79.3051 224.287 37.4975 38.2151 267.298 20.3245 12.3779 
+80.76 20.6901 79.3099 224.274 37.5019 38.2239 267.291 20.3274 12.3812 
+80.77 20.6852 79.3148 224.261 37.5064 38.2327 267.285 20.3304 12.3844 
+80.78 20.6804 79.3196 224.248 37.5108 38.2414 267.279 20.3333 12.3877 
+80.79 20.6756 79.3244 224.235 37.5153 38.2502 267.273 20.3362 12.3909 
+80.8 20.6708 79.3292 224.221 37.5197 38.259 267.267 20.3392 12.3941 
+80.81 20.666 79.334 224.208 37.5242 38.2678 267.261 20.3421 12.3974 
+80.82 20.6612 79.3388 224.195 37.5286 38.2766 267.254 20.345 12.4006 
+80.83 20.6563 79.3437 224.182 37.5331 38.2854 267.248 20.348 12.4039 
+80.84 20.6515 79.3485 224.168 37.5375 38.2941 267.242 20.3509 12.4071 
+80.85 20.6467 79.3533 224.155 37.542 38.3029 267.236 20.3539 12.4104 
+80.86 20.6419 79.3581 224.142 37.5464 38.3117 267.23 20.3568 12.4136 
+80.87 20.6371 79.3629 224.129 37.5509 38.3205 267.223 20.3597 12.4169 
+80.88 20.6323 79.3677 224.115 37.5553 38.3293 267.217 20.3627 12.4201 
+80.89 20.6275 79.3725 224.102 37.5598 38.3381 267.211 20.3656 12.4234 
+80.9 20.6227 79.3773 224.089 37.5642 38.3469 267.205 20.3686 12.4266 
+80.91 20.6179 79.3821 224.076 37.5687 38.3556 267.199 20.3715 12.4299 
+80.92 20.6131 79.3869 224.062 37.5731 38.3644 267.192 20.3745 12.4331 
+80.93 20.6083 79.3917 224.049 37.5776 38.3732 267.186 20.3774 12.4364 
+80.94 20.6035 79.3965 224.036 37.582 38.382 267.18 20.3803 12.4397 
+80.95 20.5987 79.4013 224.023 37.5865 38.3908 267.174 20.3833 12.4429 
+80.96 20.5939 79.4061 224.009 37.5909 38.3996 267.168 20.3862 12.4462 
+80.97 20.5891 79.4109 223.996 37.5953 38.4084 267.161 20.3892 12.4495 
+80.98 20.5843 79.4157 223.983 37.5998 38.4172 267.155 20.3921 12.4527 
+80.99 20.5796 79.4204 223.97 37.6042 38.426 267.149 20.3951 12.456 
+81 20.5748 79.4252 223.956 37.6087 38.4348 267.143 20.398 12.4593 
+81.01 20.57 79.43 223.943 37.6131 38.4436 267.137 20.401 12.4625 
+81.02 20.5652 79.4348 223.93 37.6176 38.4524 267.13 20.4039 12.4658 
+81.03 20.5604 79.4396 223.917 37.622 38.4612 267.124 20.4069 12.4691 
+81.04 20.5556 79.4444 223.903 37.6265 38.47 267.118 20.4098 12.4723 
+81.05 20.5509 79.4491 223.89 37.6309 38.4788 267.112 20.4128 12.4756 
+81.06 20.5461 79.4539 223.877 37.6354 38.4876 267.105 20.4157 12.4789 
+81.07 20.5413 79.4587 223.864 37.6398 38.4964 267.099 20.4187 12.4822 
+81.08 20.5365 79.4635 223.85 37.6443 38.5052 267.093 20.4216 12.4854 
+81.09 20.5318 79.4682 223.837 37.6487 38.5141 267.087 20.4246 12.4887 
+81.1 20.527 79.473 223.824 37.6532 38.5229 267.08 20.4275 12.492 
+81.11 20.5222 79.4778 223.811 37.6576 38.5317 267.074 20.4305 12.4953 
+81.12 20.5175 79.4825 223.797 37.6621 38.5405 267.068 20.4334 12.4986 
+81.13 20.5127 79.4873 223.784 37.6665 38.5493 267.062 20.4364 12.5018 
+81.14 20.5079 79.4921 223.771 37.671 38.5581 267.056 20.4394 12.5051 
+81.15 20.5032 79.4968 223.758 37.6754 38.5669 267.049 20.4423 12.5084 
+81.16 20.4984 79.5016 223.744 37.6798 38.5757 267.043 20.4453 12.5117 
+81.17 20.4937 79.5063 223.731 37.6843 38.5846 267.037 20.4482 12.515 
+81.18 20.4889 79.5111 223.718 37.6887 38.5934 267.031 20.4512 12.5183 
+81.19 20.4842 79.5158 223.705 37.6932 38.6022 267.024 20.4541 12.5216 
+81.2 20.4794 79.5206 223.691 37.6976 38.611 267.018 20.4571 12.5249 
+81.21 20.4747 79.5253 223.678 37.7021 38.6198 267.012 20.4601 12.5282 
+81.22 20.4699 79.5301 223.665 37.7065 38.6287 267.006 20.463 12.5315 
+81.23 20.4652 79.5348 223.652 37.711 38.6375 266.999 20.466 12.5348 
+81.24 20.4604 79.5396 223.638 37.7154 38.6463 266.993 20.469 12.5381 
+81.25 20.4557 79.5443 223.625 37.7199 38.6551 266.987 20.4719 12.5414 
+81.26 20.4509 79.5491 223.612 37.7243 38.6639 266.98 20.4749 12.5447 
+81.27 20.4462 79.5538 223.598 37.7287 38.6728 266.974 20.4778 12.548 
+81.28 20.4414 79.5586 223.585 37.7332 38.6816 266.968 20.4808 12.5513 
+81.29 20.4367 79.5633 223.572 37.7376 38.6904 266.962 20.4838 12.5546 
+81.3 20.432 79.568 223.559 37.7421 38.6993 266.955 20.4867 12.5579 
+81.31 20.4272 79.5728 223.545 37.7465 38.7081 266.949 20.4897 12.5612 
+81.32 20.4225 79.5775 223.532 37.751 38.7169 266.943 20.4927 12.5645 
+81.33 20.4178 79.5822 223.519 37.7554 38.7258 266.937 20.4956 12.5678 
+81.34 20.413 79.587 223.506 37.7599 38.7346 266.93 20.4986 12.5711 
+81.35 20.4083 79.5917 223.492 37.7643 38.7434 266.924 20.5016 12.5744 
+81.36 20.4036 79.5964 223.479 37.7687 38.7523 266.918 20.5046 12.5777 
+81.37 20.3989 79.6011 223.466 37.7732 38.7611 266.911 20.5075 12.5811 
+81.38 20.3941 79.6059 223.452 37.7776 38.7699 266.905 20.5105 12.5844 
+81.39 20.3894 79.6106 223.439 37.7821 38.7788 266.899 20.5135 12.5877 
+81.4 20.3847 79.6153 223.426 37.7865 38.7876 266.893 20.5164 12.591 
+81.41 20.38 79.62 223.413 37.791 38.7964 266.886 20.5194 12.5943 
+81.42 20.3753 79.6247 223.399 37.7954 38.8053 266.88 20.5224 12.5977 
+81.43 20.3705 79.6295 223.386 37.7999 38.8141 266.874 20.5254 12.601 
+81.44 20.3658 79.6342 223.373 37.8043 38.823 266.867 20.5283 12.6043 
+81.45 20.3611 79.6389 223.359 37.8087 38.8318 266.861 20.5313 12.6076 
+81.46 20.3564 79.6436 223.346 37.8132 38.8407 266.855 20.5343 12.611 
+81.47 20.3517 79.6483 223.333 37.8176 38.8495 266.848 20.5373 12.6143 
+81.48 20.347 79.653 223.32 37.8221 38.8584 266.842 20.5402 12.6176 
+81.49 20.3423 79.6577 223.306 37.8265 38.8672 266.836 20.5432 12.6209 
+81.5 20.3376 79.6624 223.293 37.831 38.876 266.83 20.5462 12.6243 
+81.51 20.3329 79.6671 223.28 37.8354 38.8849 266.823 20.5492 12.6276 
+81.52 20.3282 79.6718 223.266 37.8398 38.8937 266.817 20.5522 12.6309 
+81.53 20.3235 79.6765 223.253 37.8443 38.9026 266.811 20.5551 12.6343 
+81.54 20.3188 79.6812 223.24 37.8487 38.9115 266.804 20.5581 12.6376 
+81.55 20.3141 79.6859 223.227 37.8532 38.9203 266.798 20.5611 12.641 
+81.56 20.3094 79.6906 223.213 37.8576 38.9292 266.792 20.5641 12.6443 
+81.57 20.3047 79.6953 223.2 37.862 38.938 266.785 20.5671 12.6476 
+81.58 20.3 79.7 223.187 37.8665 38.9469 266.779 20.5701 12.651 
+81.59 20.2953 79.7047 223.173 37.8709 38.9557 266.773 20.573 12.6543 
+81.6 20.2906 79.7094 223.16 37.8754 38.9646 266.766 20.576 12.6577 
+81.61 20.2859 79.7141 223.147 37.8798 38.9734 266.76 20.579 12.661 
+81.62 20.2813 79.7187 223.133 37.8842 38.9823 266.754 20.582 12.6644 
+81.63 20.2766 79.7234 223.12 37.8887 38.9912 266.747 20.585 12.6677 
+81.64 20.2719 79.7281 223.107 37.8931 39 266.741 20.588 12.6711 
+81.65 20.2672 79.7328 223.094 37.8976 39.0089 266.735 20.591 12.6744 
+81.66 20.2625 79.7375 223.08 37.902 39.0178 266.728 20.5939 12.6778 
+81.67 20.2579 79.7421 223.067 37.9065 39.0266 266.722 20.5969 12.6811 
+81.68 20.2532 79.7468 223.054 37.9109 39.0355 266.716 20.5999 12.6845 
+81.69 20.2485 79.7515 223.04 37.9153 39.0444 266.709 20.6029 12.6878 
+81.7 20.2438 79.7562 223.027 37.9198 39.0532 266.703 20.6059 12.6912 
+81.71 20.2392 79.7608 223.014 37.9242 39.0621 266.697 20.6089 12.6945 
+81.72 20.2345 79.7655 223 37.9287 39.071 266.69 20.6119 12.6979 
+81.73 20.2298 79.7702 222.987 37.9331 39.0798 266.684 20.6149 12.7013 
+81.74 20.2252 79.7748 222.974 37.9375 39.0887 266.677 20.6179 12.7046 
+81.75 20.2205 79.7795 222.96 37.942 39.0976 266.671 20.6209 12.708 
+81.76 20.2158 79.7842 222.947 37.9464 39.1065 266.665 20.6239 12.7114 
+81.77 20.2112 79.7888 222.934 37.9508 39.1153 266.658 20.6269 12.7147 
+81.78 20.2065 79.7935 222.921 37.9553 39.1242 266.652 20.6298 12.7181 
+81.79 20.2019 79.7981 222.907 37.9597 39.1331 266.646 20.6328 12.7215 
+81.8 20.1972 79.8028 222.894 37.9642 39.142 266.639 20.6358 12.7248 
+81.81 20.1925 79.8075 222.881 37.9686 39.1508 266.633 20.6388 12.7282 
+81.82 20.1879 79.8121 222.867 37.973 39.1597 266.627 20.6418 12.7316 
+81.83 20.1832 79.8168 222.854 37.9775 39.1686 266.62 20.6448 12.735 
+81.84 20.1786 79.8214 222.841 37.9819 39.1775 266.614 20.6478 12.7383 
+81.85 20.1739 79.8261 222.827 37.9864 39.1864 266.607 20.6508 12.7417 
+81.86 20.1693 79.8307 222.814 37.9908 39.1952 266.601 20.6538 12.7451 
+81.87 20.1647 79.8353 222.801 37.9952 39.2041 266.595 20.6568 12.7485 
+81.88 20.16 79.84 222.787 37.9997 39.213 266.588 20.6598 12.7519 
+81.89 20.1554 79.8446 222.774 38.0041 39.2219 266.582 20.6628 12.7552 
+81.9 20.1507 79.8493 222.761 38.0085 39.2308 266.576 20.6658 12.7586 
+81.91 20.1461 79.8539 222.747 38.013 39.2397 266.569 20.6688 12.762 
+81.92 20.1415 79.8585 222.734 38.0174 39.2486 266.563 20.6719 12.7654 
+81.93 20.1368 79.8632 222.721 38.0219 39.2575 266.556 20.6749 12.7688 
+81.94 20.1322 79.8678 222.707 38.0263 39.2664 266.55 20.6779 12.7722 
+81.95 20.1276 79.8724 222.694 38.0307 39.2752 266.544 20.6809 12.7756 
+81.96 20.1229 79.8771 222.681 38.0352 39.2841 266.537 20.6839 12.779 
+81.97 20.1183 79.8817 222.667 38.0396 39.293 266.531 20.6869 12.7823 
+81.98 20.1137 79.8863 222.654 38.044 39.3019 266.524 20.6899 12.7857 
+81.99 20.1091 79.8909 222.641 38.0485 39.3108 266.518 20.6929 12.7891 
+82 20.1044 79.8956 222.627 38.0529 39.3197 266.512 20.6959 12.7925 
+82.01 20.0998 79.9002 222.614 38.0573 39.3286 266.505 20.6989 12.7959 
+82.02 20.0952 79.9048 222.601 38.0618 39.3375 266.499 20.7019 12.7993 
+82.03 20.0906 79.9094 222.587 38.0662 39.3464 266.492 20.7049 12.8027 
+82.04 20.086 79.914 222.574 38.0707 39.3553 266.486 20.708 12.8061 
+82.05 20.0813 79.9187 222.561 38.0751 39.3642 266.479 20.711 12.8095 
+82.06 20.0767 79.9233 222.547 38.0795 39.3731 266.473 20.714 12.8129 
+82.07 20.0721 79.9279 222.534 38.084 39.382 266.467 20.717 12.8164 
+82.08 20.0675 79.9325 222.521 38.0884 39.3909 266.46 20.72 12.8198 
+82.09 20.0629 79.9371 222.507 38.0928 39.3998 266.454 20.723 12.8232 
+82.1 20.0583 79.9417 222.494 38.0973 39.4087 266.447 20.726 12.8266 
+82.11 20.0537 79.9463 222.481 38.1017 39.4177 266.441 20.7291 12.83 
+82.12 20.0491 79.9509 222.467 38.1061 39.4266 266.435 20.7321 12.8334 
+82.13 20.0445 79.9555 222.454 38.1106 39.4355 266.428 20.7351 12.8368 
+82.14 20.0399 79.9601 222.441 38.115 39.4444 266.422 20.7381 12.8402 
+82.15 20.0353 79.9647 222.427 38.1194 39.4533 266.415 20.7411 12.8436 
+82.16 20.0307 79.9693 222.414 38.1239 39.4622 266.409 20.7441 12.8471 
+82.17 20.0261 79.9739 222.401 38.1283 39.4711 266.402 20.7472 12.8505 
+82.18 20.0215 79.9785 222.387 38.1327 39.48 266.396 20.7502 12.8539 
+82.19 20.0169 79.9831 222.374 38.1372 39.4889 266.389 20.7532 12.8573 
+82.2 20.0123 79.9877 222.361 38.1416 39.4979 266.383 20.7562 12.8608 
+82.21 20.0077 79.9923 222.347 38.146 39.5068 266.377 20.7592 12.8642 
+82.22 20.0031 79.9969 222.334 38.1505 39.5157 266.37 20.7623 12.8676 
+82.23 19.9985 80.0015 222.32 38.1549 39.5246 266.364 20.7653 12.871 
+82.24 19.994 80.006 222.307 38.1593 39.5335 266.357 20.7683 12.8745 
+82.25 19.9894 80.0106 222.294 38.1638 39.5425 266.351 20.7713 12.8779 
+82.26 19.9848 80.0152 222.28 38.1682 39.5514 266.344 20.7744 12.8813 
+82.27 19.9802 80.0198 222.267 38.1726 39.5603 266.338 20.7774 12.8848 
+82.28 19.9756 80.0244 222.254 38.1771 39.5692 266.331 20.7804 12.8882 
+82.29 19.9711 80.0289 222.24 38.1815 39.5782 266.325 20.7834 12.8916 
+82.3 19.9665 80.0335 222.227 38.1859 39.5871 266.318 20.7865 12.8951 
+82.31 19.9619 80.0381 222.214 38.1904 39.596 266.312 20.7895 12.8985 
+82.32 19.9573 80.0427 222.2 38.1948 39.6049 266.306 20.7925 12.9019 
+82.33 19.9528 80.0472 222.187 38.1992 39.6139 266.299 20.7956 12.9054 
+82.34 19.9482 80.0518 222.174 38.2037 39.6228 266.293 20.7986 12.9088 
+82.35 19.9436 80.0564 222.16 38.2081 39.6317 266.286 20.8016 12.9123 
+82.36 19.9391 80.0609 222.147 38.2125 39.6407 266.28 20.8046 12.9157 
+82.37 19.9345 80.0655 222.133 38.217 39.6496 266.273 20.8077 12.9192 
+82.38 19.9299 80.0701 222.12 38.2214 39.6585 266.267 20.8107 12.9226 
+82.39 19.9254 80.0746 222.107 38.2258 39.6675 266.26 20.8137 12.926 
+82.4 19.9208 80.0792 222.093 38.2302 39.6764 266.254 20.8168 12.9295 
+82.41 19.9163 80.0837 222.08 38.2347 39.6853 266.247 20.8198 12.9329 
+82.42 19.9117 80.0883 222.067 38.2391 39.6943 266.241 20.8228 12.9364 
+82.43 19.9071 80.0929 222.053 38.2435 39.7032 266.234 20.8259 12.9399 
+82.44 19.9026 80.0974 222.04 38.248 39.7121 266.228 20.8289 12.9433 
+82.45 19.898 80.102 222.027 38.2524 39.7211 266.221 20.832 12.9468 
+82.46 19.8935 80.1065 222.013 38.2568 39.73 266.215 20.835 12.9502 
+82.47 19.8889 80.1111 222 38.2613 39.739 266.208 20.838 12.9537 
+82.48 19.8844 80.1156 221.986 38.2657 39.7479 266.202 20.8411 12.9571 
+82.49 19.8799 80.1201 221.973 38.2701 39.7569 266.195 20.8441 12.9606 
+82.5 19.8753 80.1247 221.96 38.2745 39.7658 266.189 20.8471 12.9641 
+82.51 19.8708 80.1292 221.946 38.279 39.7747 266.182 20.8502 12.9675 
+82.52 19.8662 80.1338 221.933 38.2834 39.7837 266.176 20.8532 12.971 
+82.53 19.8617 80.1383 221.92 38.2878 39.7926 266.169 20.8563 12.9745 
+82.54 19.8572 80.1428 221.906 38.2923 39.8016 266.163 20.8593 12.9779 
+82.55 19.8526 80.1474 221.893 38.2967 39.8105 266.156 20.8623 12.9814 
+82.56 19.8481 80.1519 221.879 38.3011 39.8195 266.15 20.8654 12.9849 
+82.57 19.8436 80.1564 221.866 38.3055 39.8284 266.143 20.8684 12.9883 
+82.58 19.839 80.161 221.853 38.31 39.8374 266.137 20.8715 12.9918 
+82.59 19.8345 80.1655 221.839 38.3144 39.8463 266.13 20.8745 12.9953 
+82.6 19.83 80.17 221.826 38.3188 39.8553 266.124 20.8776 12.9988 
+82.61 19.8255 80.1745 221.812 38.3233 39.8643 266.117 20.8806 13.0022 
+82.62 19.8209 80.1791 221.799 38.3277 39.8732 266.111 20.8837 13.0057 
+82.63 19.8164 80.1836 221.786 38.3321 39.8822 266.104 20.8867 13.0092 
+82.64 19.8119 80.1881 221.772 38.3365 39.8911 266.098 20.8898 13.0127 
+82.65 19.8074 80.1926 221.759 38.341 39.9001 266.091 20.8928 13.0162 
+82.66 19.8028 80.1972 221.746 38.3454 39.909 266.084 20.8959 13.0197 
+82.67 19.7983 80.2017 221.732 38.3498 39.918 266.078 20.8989 13.0231 
+82.68 19.7938 80.2062 221.719 38.3543 39.927 266.071 20.902 13.0266 
+82.69 19.7893 80.2107 221.705 38.3587 39.9359 266.065 20.905 13.0301 
+82.7 19.7848 80.2152 221.692 38.3631 39.9449 266.058 20.9081 13.0336 
+82.71 19.7803 80.2197 221.679 38.3675 39.9539 266.052 20.9111 13.0371 
+82.72 19.7758 80.2242 221.665 38.372 39.9628 266.045 20.9142 13.0406 
+82.73 19.7713 80.2287 221.652 38.3764 39.9718 266.039 20.9172 13.0441 
+82.74 19.7668 80.2332 221.638 38.3808 39.9808 266.032 20.9203 13.0476 
+82.75 19.7623 80.2377 221.625 38.3852 39.9897 266.026 20.9233 13.0511 
+82.76 19.7578 80.2422 221.612 38.3897 39.9987 266.019 20.9264 13.0546 
+82.77 19.7533 80.2467 221.598 38.3941 40.0077 266.013 20.9294 13.0581 
+82.78 19.7488 80.2512 221.585 38.3985 40.0166 266.006 20.9325 13.0616 
+82.79 19.7443 80.2557 221.571 38.4029 40.0256 265.999 20.9356 13.0651 
+82.8 19.7398 80.2602 221.558 38.4074 40.0346 265.993 20.9386 13.0686 
+82.81 19.7353 80.2647 221.545 38.4118 40.0436 265.986 20.9417 13.0721 
+82.82 19.7308 80.2692 221.531 38.4162 40.0525 265.98 20.9447 13.0756 
+82.83 19.7263 80.2737 221.518 38.4206 40.0615 265.973 20.9478 13.0791 
+82.84 19.7218 80.2782 221.504 38.4251 40.0705 265.967 20.9508 13.0826 
+82.85 19.7173 80.2827 221.491 38.4295 40.0795 265.96 20.9539 13.0861 
+82.86 19.7128 80.2872 221.478 38.4339 40.0884 265.953 20.957 13.0896 
+82.87 19.7084 80.2916 221.464 38.4383 40.0974 265.947 20.96 13.0931 
+82.88 19.7039 80.2961 221.451 38.4428 40.1064 265.94 20.9631 13.0966 
+82.89 19.6994 80.3006 221.437 38.4472 40.1154 265.934 20.9662 13.1001 
+82.9 19.6949 80.3051 221.424 38.4516 40.1244 265.927 20.9692 13.1037 
+82.91 19.6904 80.3096 221.411 38.456 40.1334 265.921 20.9723 13.1072 
+82.92 19.686 80.314 221.397 38.4605 40.1423 265.914 20.9753 13.1107 
+82.93 19.6815 80.3185 221.384 38.4649 40.1513 265.907 20.9784 13.1142 
+82.94 19.677 80.323 221.37 38.4693 40.1603 265.901 20.9815 13.1177 
+82.95 19.6725 80.3275 221.357 38.4737 40.1693 265.894 20.9845 13.1213 
+82.96 19.6681 80.3319 221.344 38.4782 40.1783 265.888 20.9876 13.1248 
+82.97 19.6636 80.3364 221.33 38.4826 40.1873 265.881 20.9907 13.1283 
+82.98 19.6591 80.3409 221.317 38.487 40.1963 265.874 20.9937 13.1318 
+82.99 19.6547 80.3453 221.303 38.4914 40.2053 265.868 20.9968 13.1354 
+83 19.6502 80.3498 221.29 38.4959 40.2142 265.861 20.9999 13.1389 
+83.01 19.6458 80.3542 221.276 38.5003 40.2232 265.855 21.003 13.1424 
+83.02 19.6413 80.3587 221.263 38.5047 40.2322 265.848 21.006 13.146 
+83.03 19.6368 80.3632 221.25 38.5091 40.2412 265.841 21.0091 13.1495 
+83.04 19.6324 80.3676 221.236 38.5135 40.2502 265.835 21.0122 13.153 
+83.05 19.6279 80.3721 221.223 38.518 40.2592 265.828 21.0152 13.1566 
+83.06 19.6235 80.3765 221.209 38.5224 40.2682 265.822 21.0183 13.1601 
+83.07 19.619 80.381 221.196 38.5268 40.2772 265.815 21.0214 13.1636 
+83.08 19.6146 80.3854 221.183 38.5312 40.2862 265.808 21.0245 13.1672 
+83.09 19.6101 80.3899 221.169 38.5356 40.2952 265.802 21.0275 13.1707 
+83.1 19.6057 80.3943 221.156 38.5401 40.3042 265.795 21.0306 13.1743 
+83.11 19.6012 80.3988 221.142 38.5445 40.3132 265.788 21.0337 13.1778 
+83.12 19.5968 80.4032 221.129 38.5489 40.3222 265.782 21.0368 13.1814 
+83.13 19.5924 80.4076 221.115 38.5533 40.3312 265.775 21.0399 13.1849 
+83.14 19.5879 80.4121 221.102 38.5578 40.3402 265.769 21.0429 13.1884 
+83.15 19.5835 80.4165 221.089 38.5622 40.3492 265.762 21.046 13.192 
+83.16 19.579 80.421 221.075 38.5666 40.3582 265.755 21.0491 13.1955 
+83.17 19.5746 80.4254 221.062 38.571 40.3673 265.749 21.0522 13.1991 
+83.18 19.5702 80.4298 221.048 38.5754 40.3763 265.742 21.0552 13.2027 
+83.19 19.5657 80.4343 221.035 38.5799 40.3853 265.735 21.0583 13.2062 
+83.2 19.5613 80.4387 221.021 38.5843 40.3943 265.729 21.0614 13.2098 
+83.21 19.5569 80.4431 221.008 38.5887 40.4033 265.722 21.0645 13.2133 
+83.22 19.5524 80.4476 220.995 38.5931 40.4123 265.716 21.0676 13.2169 
+83.23 19.548 80.452 220.981 38.5975 40.4213 265.709 21.0707 13.2204 
+83.24 19.5436 80.4564 220.968 38.602 40.4303 265.702 21.0737 13.224 
+83.25 19.5392 80.4608 220.954 38.6064 40.4394 265.696 21.0768 13.2276 
+83.26 19.5348 80.4652 220.941 38.6108 40.4484 265.689 21.0799 13.2311 
+83.27 19.5303 80.4697 220.927 38.6152 40.4574 265.682 21.083 13.2347 
+83.28 19.5259 80.4741 220.914 38.6196 40.4664 265.676 21.0861 13.2383 
+83.29 19.5215 80.4785 220.901 38.6241 40.4754 265.669 21.0892 13.2418 
+83.3 19.5171 80.4829 220.887 38.6285 40.4844 265.662 21.0923 13.2454 
+83.31 19.5127 80.4873 220.874 38.6329 40.4935 265.656 21.0954 13.249 
+83.32 19.5083 80.4917 220.86 38.6373 40.5025 265.649 21.0984 13.2525 
+83.33 19.5039 80.4961 220.847 38.6417 40.5115 265.642 21.1015 13.2561 
+83.34 19.4994 80.5006 220.833 38.6461 40.5205 265.636 21.1046 13.2597 
+83.35 19.495 80.505 220.82 38.6506 40.5296 265.629 21.1077 13.2633 
+83.36 19.4906 80.5094 220.806 38.655 40.5386 265.622 21.1108 13.2668 
+83.37 19.4862 80.5138 220.793 38.6594 40.5476 265.616 21.1139 13.2704 
+83.38 19.4818 80.5182 220.78 38.6638 40.5566 265.609 21.117 13.274 
+83.39 19.4774 80.5226 220.766 38.6682 40.5657 265.602 21.1201 13.2776 
+83.4 19.473 80.527 220.753 38.6726 40.5747 265.596 21.1232 13.2812 
+83.41 19.4686 80.5314 220.739 38.6771 40.5837 265.589 21.1263 13.2847 
+83.42 19.4642 80.5358 220.726 38.6815 40.5928 265.582 21.1294 13.2883 
+83.43 19.4598 80.5402 220.712 38.6859 40.6018 265.576 21.1325 13.2919 
+83.44 19.4554 80.5446 220.699 38.6903 40.6108 265.569 21.1356 13.2955 
+83.45 19.4511 80.5489 220.685 38.6947 40.6199 265.562 21.1387 13.2991 
+83.46 19.4467 80.5533 220.672 38.6991 40.6289 265.556 21.1417 13.3027 
+83.47 19.4423 80.5577 220.659 38.7036 40.6379 265.549 21.1448 13.3063 
+83.48 19.4379 80.5621 220.645 38.708 40.647 265.542 21.1479 13.3099 
+83.49 19.4335 80.5665 220.632 38.7124 40.656 265.535 21.151 13.3135 
+83.5 19.4291 80.5709 220.618 38.7168 40.665 265.529 21.1541 13.3171 
+83.51 19.4247 80.5753 220.605 38.7212 40.6741 265.522 21.1572 13.3207 
+83.52 19.4204 80.5796 220.591 38.7256 40.6831 265.515 21.1603 13.3243 
+83.53 19.416 80.584 220.578 38.7301 40.6922 265.509 21.1634 13.3279 
+83.54 19.4116 80.5884 220.564 38.7345 40.7012 265.502 21.1666 13.3315 
+83.55 19.4072 80.5928 220.551 38.7389 40.7102 265.495 21.1697 13.3351 
+83.56 19.4029 80.5971 220.537 38.7433 40.7193 265.489 21.1728 13.3387 
+83.57 19.3985 80.6015 220.524 38.7477 40.7283 265.482 21.1759 13.3423 
+83.58 19.3941 80.6059 220.51 38.7521 40.7374 265.475 21.179 13.3459 
+83.59 19.3898 80.6102 220.497 38.7565 40.7464 265.468 21.1821 13.3495 
+83.6 19.3854 80.6146 220.484 38.761 40.7555 265.462 21.1852 13.3531 
+83.61 19.381 80.619 220.47 38.7654 40.7645 265.455 21.1883 13.3567 
+83.62 19.3767 80.6233 220.457 38.7698 40.7736 265.448 21.1914 13.3603 
+83.63 19.3723 80.6277 220.443 38.7742 40.7826 265.442 21.1945 13.3639 
+83.64 19.3679 80.6321 220.43 38.7786 40.7917 265.435 21.1976 13.3676 
+83.65 19.3636 80.6364 220.416 38.783 40.8007 265.428 21.2007 13.3712 
+83.66 19.3592 80.6408 220.403 38.7874 40.8098 265.421 21.2038 13.3748 
+83.67 19.3549 80.6451 220.389 38.7919 40.8188 265.415 21.2069 13.3784 
+83.68 19.3505 80.6495 220.376 38.7963 40.8279 265.408 21.21 13.382 
+83.69 19.3462 80.6538 220.362 38.8007 40.8369 265.401 21.2132 13.3857 
+83.7 19.3418 80.6582 220.349 38.8051 40.846 265.394 21.2163 13.3893 
+83.71 19.3375 80.6625 220.335 38.8095 40.8551 265.388 21.2194 13.3929 
+83.72 19.3331 80.6669 220.322 38.8139 40.8641 265.381 21.2225 13.3965 
+83.73 19.3288 80.6712 220.308 38.8183 40.8732 265.374 21.2256 13.4002 
+83.74 19.3244 80.6756 220.295 38.8227 40.8822 265.367 21.2287 13.4038 
+83.75 19.3201 80.6799 220.282 38.8272 40.8913 265.361 21.2318 13.4074 
+83.76 19.3157 80.6843 220.268 38.8316 40.9004 265.354 21.235 13.411 
+83.77 19.3114 80.6886 220.255 38.836 40.9094 265.347 21.2381 13.4147 
+83.78 19.3071 80.6929 220.241 38.8404 40.9185 265.341 21.2412 13.4183 
+83.79 19.3027 80.6973 220.228 38.8448 40.9276 265.334 21.2443 13.4219 
+83.8 19.2984 80.7016 220.214 38.8492 40.9366 265.327 21.2474 13.4256 
+83.81 19.2941 80.7059 220.201 38.8536 40.9457 265.32 21.2505 13.4292 
+83.82 19.2897 80.7103 220.187 38.858 40.9548 265.313 21.2537 13.4329 
+83.83 19.2854 80.7146 220.174 38.8624 40.9638 265.307 21.2568 13.4365 
+83.84 19.2811 80.7189 220.16 38.8669 40.9729 265.3 21.2599 13.4401 
+83.85 19.2767 80.7233 220.147 38.8713 40.982 265.293 21.263 13.4438 
+83.86 19.2724 80.7276 220.133 38.8757 40.991 265.286 21.2661 13.4474 
+83.87 19.2681 80.7319 220.12 38.8801 41.0001 265.28 21.2693 13.4511 
+83.88 19.2638 80.7362 220.106 38.8845 41.0092 265.273 21.2724 13.4547 
+83.89 19.2594 80.7406 220.093 38.8889 41.0183 265.266 21.2755 13.4584 
+83.9 19.2551 80.7449 220.079 38.8933 41.0273 265.259 21.2786 13.462 
+83.91 19.2508 80.7492 220.066 38.8977 41.0364 265.253 21.2818 13.4657 
+83.92 19.2465 80.7535 220.052 38.9021 41.0455 265.246 21.2849 13.4693 
+83.93 19.2422 80.7578 220.039 38.9066 41.0546 265.239 21.288 13.473 
+83.94 19.2379 80.7621 220.025 38.911 41.0636 265.232 21.2911 13.4766 
+83.95 19.2336 80.7664 220.012 38.9154 41.0727 265.225 21.2943 13.4803 
+83.96 19.2292 80.7708 219.998 38.9198 41.0818 265.219 21.2974 13.484 
+83.97 19.2249 80.7751 219.985 38.9242 41.0909 265.212 21.3005 13.4876 
+83.98 19.2206 80.7794 219.971 38.9286 41.1 265.205 21.3036 13.4913 
+83.99 19.2163 80.7837 219.958 38.933 41.1091 265.198 21.3068 13.4949 
+84 19.212 80.788 219.944 38.9374 41.1181 265.191 21.3099 13.4986 
+84.01 19.2077 80.7923 219.931 38.9418 41.1272 265.185 21.313 13.5023 
+84.02 19.2034 80.7966 219.917 38.9462 41.1363 265.178 21.3162 13.5059 
+84.03 19.1991 80.8009 219.904 38.9506 41.1454 265.171 21.3193 13.5096 
+84.04 19.1948 80.8052 219.89 38.955 41.1545 265.164 21.3224 13.5133 
+84.05 19.1905 80.8095 219.877 38.9595 41.1636 265.157 21.3256 13.5169 
+84.06 19.1862 80.8138 219.863 38.9639 41.1727 265.151 21.3287 13.5206 
+84.07 19.1819 80.8181 219.85 38.9683 41.1818 265.144 21.3318 13.5243 
+84.08 19.1777 80.8223 219.836 38.9727 41.1909 265.137 21.335 13.528 
+84.09 19.1734 80.8266 219.823 38.9771 41.1999 265.13 21.3381 13.5316 
+84.1 19.1691 80.8309 219.809 38.9815 41.209 265.123 21.3412 13.5353 
+84.11 19.1648 80.8352 219.796 38.9859 41.2181 265.117 21.3444 13.539 
+84.12 19.1605 80.8395 219.782 38.9903 41.2272 265.11 21.3475 13.5427 
+84.13 19.1562 80.8438 219.769 38.9947 41.2363 265.103 21.3506 13.5464 
+84.14 19.1519 80.8481 219.755 38.9991 41.2454 265.096 21.3538 13.55 
+84.15 19.1477 80.8523 219.742 39.0035 41.2545 265.089 21.3569 13.5537 
+84.16 19.1434 80.8566 219.728 39.0079 41.2636 265.083 21.3601 13.5574 
+84.17 19.1391 80.8609 219.715 39.0123 41.2727 265.076 21.3632 13.5611 
+84.18 19.1348 80.8652 219.701 39.0167 41.2818 265.069 21.3663 13.5648 
+84.19 19.1306 80.8694 219.688 39.0211 41.2909 265.062 21.3695 13.5685 
+84.2 19.1263 80.8737 219.674 39.0255 41.3 265.055 21.3726 13.5722 
+84.21 19.122 80.878 219.661 39.03 41.3091 265.048 21.3758 13.5759 
+84.22 19.1178 80.8822 219.647 39.0344 41.3182 265.042 21.3789 13.5796 
+84.23 19.1135 80.8865 219.634 39.0388 41.3273 265.035 21.3821 13.5833 
+84.24 19.1092 80.8908 219.62 39.0432 41.3364 265.028 21.3852 13.5869 
+84.25 19.105 80.895 219.607 39.0476 41.3455 265.021 21.3883 13.5906 
+84.26 19.1007 80.8993 219.593 39.052 41.3547 265.014 21.3915 13.5943 
+84.27 19.0964 80.9036 219.58 39.0564 41.3638 265.007 21.3946 13.598 
+84.28 19.0922 80.9078 219.566 39.0608 41.3729 265 21.3978 13.6017 
+84.29 19.0879 80.9121 219.553 39.0652 41.382 264.994 21.4009 13.6055 
+84.3 19.0837 80.9163 219.539 39.0696 41.3911 264.987 21.4041 13.6092 
+84.31 19.0794 80.9206 219.526 39.074 41.4002 264.98 21.4072 13.6129 
+84.32 19.0752 80.9248 219.512 39.0784 41.4093 264.973 21.4104 13.6166 
+84.33 19.0709 80.9291 219.499 39.0828 41.4184 264.966 21.4135 13.6203 
+84.34 19.0667 80.9333 219.485 39.0872 41.4276 264.959 21.4167 13.624 
+84.35 19.0624 80.9376 219.472 39.0916 41.4367 264.952 21.4198 13.6277 
+84.36 19.0582 80.9418 219.458 39.096 41.4458 264.946 21.423 13.6314 
+84.37 19.0539 80.9461 219.445 39.1004 41.4549 264.939 21.4261 13.6351 
+84.38 19.0497 80.9503 219.431 39.1048 41.464 264.932 21.4293 13.6388 
+84.39 19.0454 80.9546 219.418 39.1092 41.4731 264.925 21.4324 13.6426 
+84.4 19.0412 80.9588 219.404 39.1136 41.4823 264.918 21.4356 13.6463 
+84.41 19.037 80.963 219.391 39.118 41.4914 264.911 21.4387 13.65 
+84.42 19.0327 80.9673 219.377 39.1224 41.5005 264.904 21.4419 13.6537 
+84.43 19.0285 80.9715 219.364 39.1268 41.5096 264.898 21.445 13.6574 
+84.44 19.0242 80.9758 219.35 39.1312 41.5188 264.891 21.4482 13.6612 
+84.45 19.02 80.98 219.336 39.1356 41.5279 264.884 21.4514 13.6649 
+84.46 19.0158 80.9842 219.323 39.14 41.537 264.877 21.4545 13.6686 
+84.47 19.0116 80.9884 219.309 39.1444 41.5461 264.87 21.4577 13.6724 
+84.48 19.0073 80.9927 219.296 39.1488 41.5553 264.863 21.4608 13.6761 
+84.49 19.0031 80.9969 219.282 39.1532 41.5644 264.856 21.464 13.6798 
+84.5 18.9989 81.0011 219.269 39.1576 41.5735 264.849 21.4672 13.6835 
+84.51 18.9947 81.0053 219.255 39.162 41.5827 264.842 21.4703 13.6873 
+84.52 18.9904 81.0096 219.242 39.1664 41.5918 264.836 21.4735 13.691 
+84.53 18.9862 81.0138 219.228 39.1708 41.6009 264.829 21.4766 13.6947 
+84.54 18.982 81.018 219.215 39.1752 41.61 264.822 21.4798 13.6985 
+84.55 18.9778 81.0222 219.201 39.1796 41.6192 264.815 21.483 13.7022 
+84.56 18.9736 81.0264 219.188 39.184 41.6283 264.808 21.4861 13.706 
+84.57 18.9694 81.0306 219.174 39.1884 41.6375 264.801 21.4893 13.7097 
+84.58 18.9651 81.0349 219.161 39.1928 41.6466 264.794 21.4925 13.7135 
+84.59 18.9609 81.0391 219.147 39.1972 41.6557 264.787 21.4956 13.7172 
+84.6 18.9567 81.0433 219.133 39.2016 41.6649 264.78 21.4988 13.7209 
+84.61 18.9525 81.0475 219.12 39.206 41.674 264.773 21.5019 13.7247 
+84.62 18.9483 81.0517 219.106 39.2104 41.6831 264.766 21.5051 13.7284 
+84.63 18.9441 81.0559 219.093 39.2148 41.6923 264.76 21.5083 13.7322 
+84.64 18.9399 81.0601 219.079 39.2192 41.7014 264.753 21.5115 13.7359 
+84.65 18.9357 81.0643 219.066 39.2236 41.7106 264.746 21.5146 13.7397 
+84.66 18.9315 81.0685 219.052 39.228 41.7197 264.739 21.5178 13.7434 
+84.67 18.9273 81.0727 219.039 39.2324 41.7289 264.732 21.521 13.7472 
+84.68 18.9231 81.0769 219.025 39.2368 41.738 264.725 21.5241 13.751 
+84.69 18.9189 81.0811 219.012 39.2412 41.7472 264.718 21.5273 13.7547 
+84.7 18.9147 81.0853 218.998 39.2456 41.7563 264.711 21.5305 13.7585 
+84.71 18.9105 81.0895 218.985 39.25 41.7655 264.704 21.5336 13.7622 
+84.72 18.9063 81.0937 218.971 39.2544 41.7746 264.697 21.5368 13.766 
+84.73 18.9022 81.0978 218.957 39.2588 41.7838 264.69 21.54 13.7698 
+84.74 18.898 81.102 218.944 39.2632 41.7929 264.683 21.5432 13.7735 
+84.75 18.8938 81.1062 218.93 39.2676 41.8021 264.676 21.5463 13.7773 
+84.76 18.8896 81.1104 218.917 39.272 41.8112 264.669 21.5495 13.7811 
+84.77 18.8854 81.1146 218.903 39.2764 41.8204 264.662 21.5527 13.7848 
+84.78 18.8812 81.1188 218.89 39.2808 41.8295 264.656 21.5559 13.7886 
+84.79 18.8771 81.1229 218.876 39.2852 41.8387 264.649 21.559 13.7924 
+84.8 18.8729 81.1271 218.863 39.2896 41.8478 264.642 21.5622 13.7962 
+84.81 18.8687 81.1313 218.849 39.294 41.857 264.635 21.5654 13.7999 
+84.82 18.8645 81.1355 218.835 39.2984 41.8661 264.628 21.5686 13.8037 
+84.83 18.8604 81.1396 218.822 39.3028 41.8753 264.621 21.5718 13.8075 
+84.84 18.8562 81.1438 218.808 39.3072 41.8845 264.614 21.5749 13.8113 
+84.85 18.852 81.148 218.795 39.3116 41.8936 264.607 21.5781 13.815 
+84.86 18.8479 81.1521 218.781 39.316 41.9028 264.6 21.5813 13.8188 
+84.87 18.8437 81.1563 218.768 39.3204 41.9119 264.593 21.5845 13.8226 
+84.88 18.8395 81.1605 218.754 39.3248 41.9211 264.586 21.5877 13.8264 
+84.89 18.8354 81.1646 218.741 39.3292 41.9303 264.579 21.5908 13.8302 
+84.9 18.8312 81.1688 218.727 39.3336 41.9394 264.572 21.594 13.834 
+84.91 18.827 81.173 218.713 39.3379 41.9486 264.565 21.5972 13.8378 
+84.92 18.8229 81.1771 218.7 39.3423 41.9578 264.558 21.6004 13.8415 
+84.93 18.8187 81.1813 218.686 39.3467 41.9669 264.551 21.6036 13.8453 
+84.94 18.8146 81.1854 218.673 39.3511 41.9761 264.544 21.6068 13.8491 
+84.95 18.8104 81.1896 218.659 39.3555 41.9853 264.537 21.61 13.8529 
+84.96 18.8063 81.1937 218.646 39.3599 41.9945 264.53 21.6131 13.8567 
+84.97 18.8021 81.1979 218.632 39.3643 42.0036 264.523 21.6163 13.8605 
+84.98 18.798 81.202 218.618 39.3687 42.0128 264.516 21.6195 13.8643 
+84.99 18.7938 81.2062 218.605 39.3731 42.022 264.509 21.6227 13.8681 
+85 18.7897 81.2103 218.591 39.3775 42.0311 264.502 21.6259 13.8719 
+85.01 18.7855 81.2145 218.578 39.3819 42.0403 264.495 21.6291 13.8757 
+85.02 18.7814 81.2186 218.564 39.3863 42.0495 264.488 21.6323 13.8795 
+85.03 18.7773 81.2227 218.551 39.3907 42.0587 264.481 21.6355 13.8833 
+85.04 18.7731 81.2269 218.537 39.3951 42.0679 264.474 21.6387 13.8871 
+85.05 18.769 81.231 218.524 39.3995 42.077 264.467 21.6418 13.8909 
+85.06 18.7648 81.2352 218.51 39.4038 42.0862 264.46 21.645 13.8948 
+85.07 18.7607 81.2393 218.496 39.4082 42.0954 264.453 21.6482 13.8986 
+85.08 18.7566 81.2434 218.483 39.4126 42.1046 264.446 21.6514 13.9024 
+85.09 18.7524 81.2476 218.469 39.417 42.1138 264.439 21.6546 13.9062 
+85.1 18.7483 81.2517 218.456 39.4214 42.1229 264.432 21.6578 13.91 
+85.11 18.7442 81.2558 218.442 39.4258 42.1321 264.425 21.661 13.9138 
+85.12 18.7401 81.2599 218.429 39.4302 42.1413 264.418 21.6642 13.9176 
+85.13 18.7359 81.2641 218.415 39.4346 42.1505 264.411 21.6674 13.9215 
+85.14 18.7318 81.2682 218.401 39.439 42.1597 264.404 21.6706 13.9253 
+85.15 18.7277 81.2723 218.388 39.4434 42.1689 264.397 21.6738 13.9291 
+85.16 18.7236 81.2764 218.374 39.4478 42.1781 264.39 21.677 13.9329 
+85.17 18.7195 81.2805 218.361 39.4521 42.1872 264.383 21.6802 13.9368 
+85.18 18.7153 81.2847 218.347 39.4565 42.1964 264.376 21.6834 13.9406 
+85.19 18.7112 81.2888 218.333 39.4609 42.2056 264.369 21.6866 13.9444 
+85.2 18.7071 81.2929 218.32 39.4653 42.2148 264.362 21.6898 13.9482 
+85.21 18.703 81.297 218.306 39.4697 42.224 264.355 21.693 13.9521 
+85.22 18.6989 81.3011 218.293 39.4741 42.2332 264.348 21.6962 13.9559 
+85.23 18.6948 81.3052 218.279 39.4785 42.2424 264.341 21.6994 13.9597 
+85.24 18.6907 81.3093 218.266 39.4829 42.2516 264.334 21.7026 13.9636 
+85.25 18.6866 81.3134 218.252 39.4873 42.2608 264.327 21.7058 13.9674 
+85.26 18.6825 81.3175 218.238 39.4917 42.27 264.32 21.709 13.9712 
+85.27 18.6784 81.3216 218.225 39.496 42.2792 264.313 21.7122 13.9751 
+85.28 18.6743 81.3257 218.211 39.5004 42.2884 264.306 21.7154 13.9789 
+85.29 18.6702 81.3298 218.198 39.5048 42.2976 264.299 21.7186 13.9828 
+85.3 18.6661 81.3339 218.184 39.5092 42.3068 264.292 21.7218 13.9866 
+85.31 18.662 81.338 218.17 39.5136 42.316 264.284 21.7251 13.9904 
+85.32 18.6579 81.3421 218.157 39.518 42.3252 264.277 21.7283 13.9943 
+85.33 18.6538 81.3462 218.143 39.5224 42.3344 264.27 21.7315 13.9981 
+85.34 18.6497 81.3503 218.13 39.5268 42.3436 264.263 21.7347 14.002 
+85.35 18.6456 81.3544 218.116 39.5311 42.3528 264.256 21.7379 14.0058 
+85.36 18.6415 81.3585 218.102 39.5355 42.362 264.249 21.7411 14.0097 
+85.37 18.6374 81.3626 218.089 39.5399 42.3712 264.242 21.7443 14.0135 
+85.38 18.6333 81.3667 218.075 39.5443 42.3804 264.235 21.7475 14.0174 
+85.39 18.6292 81.3708 218.062 39.5487 42.3896 264.228 21.7507 14.0213 
+85.4 18.6252 81.3748 218.048 39.5531 42.3988 264.221 21.7539 14.0251 
+85.41 18.6211 81.3789 218.034 39.5575 42.4081 264.214 21.7572 14.029 
+85.42 18.617 81.383 218.021 39.5619 42.4173 264.207 21.7604 14.0328 
+85.43 18.6129 81.3871 218.007 39.5662 42.4265 264.2 21.7636 14.0367 
+85.44 18.6088 81.3912 217.994 39.5706 42.4357 264.193 21.7668 14.0406 
+85.45 18.6048 81.3952 217.98 39.575 42.4449 264.186 21.77 14.0444 
+85.46 18.6007 81.3993 217.966 39.5794 42.4541 264.178 21.7732 14.0483 
+85.47 18.5966 81.4034 217.953 39.5838 42.4633 264.171 21.7765 14.0522 
+85.48 18.5925 81.4075 217.939 39.5882 42.4725 264.164 21.7797 14.056 
+85.49 18.5885 81.4115 217.926 39.5926 42.4818 264.157 21.7829 14.0599 
+85.5 18.5844 81.4156 217.912 39.5969 42.491 264.15 21.7861 14.0638 
+85.51 18.5803 81.4197 217.898 39.6013 42.5002 264.143 21.7893 14.0676 
+85.52 18.5763 81.4237 217.885 39.6057 42.5094 264.136 21.7925 14.0715 
+85.53 18.5722 81.4278 217.871 39.6101 42.5186 264.129 21.7958 14.0754 
+85.54 18.5682 81.4318 217.858 39.6145 42.5279 264.122 21.799 14.0793 
+85.55 18.5641 81.4359 217.844 39.6189 42.5371 264.115 21.8022 14.0831 
+85.56 18.56 81.44 217.83 39.6232 42.5463 264.108 21.8054 14.087 
+85.57 18.556 81.444 217.817 39.6276 42.5555 264.1 21.8087 14.0909 
+85.58 18.5519 81.4481 217.803 39.632 42.5648 264.093 21.8119 14.0948 
+85.59 18.5479 81.4521 217.79 39.6364 42.574 264.086 21.8151 14.0987 
+85.6 18.5438 81.4562 217.776 39.6408 42.5832 264.079 21.8183 14.1025 
+85.61 18.5398 81.4602 217.762 39.6452 42.5924 264.072 21.8216 14.1064 
+85.62 18.5357 81.4643 217.749 39.6495 42.6017 264.065 21.8248 14.1103 
+85.63 18.5317 81.4683 217.735 39.6539 42.6109 264.058 21.828 14.1142 
+85.64 18.5276 81.4724 217.722 39.6583 42.6201 264.051 21.8312 14.1181 
+85.65 18.5236 81.4764 217.708 39.6627 42.6294 264.044 21.8345 14.122 
+85.66 18.5196 81.4804 217.694 39.6671 42.6386 264.036 21.8377 14.1259 
+85.67 18.5155 81.4845 217.681 39.6715 42.6478 264.029 21.8409 14.1298 
+85.68 18.5115 81.4885 217.667 39.6758 42.6571 264.022 21.8441 14.1337 
+85.69 18.5074 81.4926 217.653 39.6802 42.6663 264.015 21.8474 14.1376 
+85.7 18.5034 81.4966 217.64 39.6846 42.6755 264.008 21.8506 14.1415 
+85.71 18.4994 81.5006 217.626 39.689 42.6848 264.001 21.8538 14.1454 
+85.72 18.4953 81.5047 217.613 39.6934 42.694 263.994 21.8571 14.1493 
+85.73 18.4913 81.5087 217.599 39.6977 42.7032 263.987 21.8603 14.1532 
+85.74 18.4873 81.5127 217.585 39.7021 42.7125 263.979 21.8635 14.1571 
+85.75 18.4832 81.5168 217.572 39.7065 42.7217 263.972 21.8668 14.161 
+85.76 18.4792 81.5208 217.558 39.7109 42.731 263.965 21.87 14.1649 
+85.77 18.4752 81.5248 217.545 39.7153 42.7402 263.958 21.8732 14.1688 
+85.78 18.4712 81.5288 217.531 39.7197 42.7494 263.951 21.8765 14.1727 
+85.79 18.4671 81.5329 217.517 39.724 42.7587 263.944 21.8797 14.1766 
+85.8 18.4631 81.5369 217.504 39.7284 42.7679 263.937 21.8829 14.1805 
+85.81 18.4591 81.5409 217.49 39.7328 42.7772 263.929 21.8862 14.1845 
+85.82 18.4551 81.5449 217.476 39.7372 42.7864 263.922 21.8894 14.1884 
+85.83 18.4511 81.5489 217.463 39.7416 42.7957 263.915 21.8927 14.1923 
+85.84 18.4471 81.5529 217.449 39.7459 42.8049 263.908 21.8959 14.1962 
+85.85 18.443 81.557 217.436 39.7503 42.8142 263.901 21.8991 14.2001 
+85.86 18.439 81.561 217.422 39.7547 42.8234 263.894 21.9024 14.2041 
+85.87 18.435 81.565 217.408 39.7591 42.8327 263.886 21.9056 14.208 
+85.88 18.431 81.569 217.395 39.7634 42.8419 263.879 21.9089 14.2119 
+85.89 18.427 81.573 217.381 39.7678 42.8512 263.872 21.9121 14.2158 
+85.9 18.423 81.577 217.367 39.7722 42.8604 263.865 21.9153 14.2198 
+85.91 18.419 81.581 217.354 39.7766 42.8697 263.858 21.9186 14.2237 
+85.92 18.415 81.585 217.34 39.781 42.8789 263.851 21.9218 14.2276 
+85.93 18.411 81.589 217.326 39.7853 42.8882 263.843 21.9251 14.2315 
+85.94 18.407 81.593 217.313 39.7897 42.8974 263.836 21.9283 14.2355 
+85.95 18.403 81.597 217.299 39.7941 42.9067 263.829 21.9316 14.2394 
+85.96 18.399 81.601 217.286 39.7985 42.916 263.822 21.9348 14.2433 
+85.97 18.395 81.605 217.272 39.8028 42.9252 263.815 21.938 14.2473 
+85.98 18.391 81.609 217.258 39.8072 42.9345 263.807 21.9413 14.2512 
+85.99 18.387 81.613 217.245 39.8116 42.9437 263.8 21.9445 14.2552 
+86 18.383 81.617 217.231 39.816 42.953 263.793 21.9478 14.2591 
+86.01 18.3791 81.6209 217.217 39.8204 42.9623 263.786 21.951 14.263 
+86.02 18.3751 81.6249 217.204 39.8247 42.9715 263.779 21.9543 14.267 
+86.03 18.3711 81.6289 217.19 39.8291 42.9808 263.772 21.9575 14.2709 
+86.04 18.3671 81.6329 217.176 39.8335 42.9901 263.764 21.9608 14.2749 
+86.05 18.3631 81.6369 217.163 39.8379 42.9993 263.757 21.964 14.2788 
+86.06 18.3591 81.6409 217.149 39.8422 43.0086 263.75 21.9673 14.2828 
+86.07 18.3552 81.6448 217.136 39.8466 43.0179 263.743 21.9705 14.2867 
+86.08 18.3512 81.6488 217.122 39.851 43.0271 263.736 21.9738 14.2907 
+86.09 18.3472 81.6528 217.108 39.8554 43.0364 263.728 21.9771 14.2946 
+86.1 18.3432 81.6568 217.095 39.8597 43.0457 263.721 21.9803 14.2986 
+86.11 18.3393 81.6607 217.081 39.8641 43.0549 263.714 21.9836 14.3025 
+86.12 18.3353 81.6647 217.067 39.8685 43.0642 263.707 21.9868 14.3065 
+86.13 18.3313 81.6687 217.054 39.8729 43.0735 263.699 21.9901 14.3105 
+86.14 18.3274 81.6726 217.04 39.8772 43.0828 263.692 21.9933 14.3144 
+86.15 18.3234 81.6766 217.026 39.8816 43.092 263.685 21.9966 14.3184 
+86.16 18.3194 81.6806 217.013 39.886 43.1013 263.678 21.9998 14.3224 
+86.17 18.3155 81.6845 216.999 39.8904 43.1106 263.671 22.0031 14.3263 
+86.18 18.3115 81.6885 216.985 39.8947 43.1199 263.663 22.0064 14.3303 
+86.19 18.3075 81.6925 216.972 39.8991 43.1291 263.656 22.0096 14.3343 
+86.2 18.3036 81.6964 216.958 39.9035 43.1384 263.649 22.0129 14.3382 
+86.21 18.2996 81.7004 216.944 39.9079 43.1477 263.642 22.0161 14.3422 
+86.22 18.2957 81.7043 216.931 39.9122 43.157 263.634 22.0194 14.3462 
+86.23 18.2917 81.7083 216.917 39.9166 43.1663 263.627 22.0227 14.3501 
+86.24 18.2878 81.7122 216.903 39.921 43.1755 263.62 22.0259 14.3541 
+86.25 18.2838 81.7162 216.89 39.9253 43.1848 263.613 22.0292 14.3581 
+86.26 18.2799 81.7201 216.876 39.9297 43.1941 263.605 22.0324 14.3621 
+86.27 18.2759 81.7241 216.863 39.9341 43.2034 263.598 22.0357 14.3661 
+86.28 18.272 81.728 216.849 39.9385 43.2127 263.591 22.039 14.37 
+86.29 18.268 81.732 216.835 39.9428 43.222 263.584 22.0422 14.374 
+86.3 18.2641 81.7359 216.822 39.9472 43.2312 263.576 22.0455 14.378 
+86.31 18.2601 81.7399 216.808 39.9516 43.2405 263.569 22.0488 14.382 
+86.32 18.2562 81.7438 216.794 39.9559 43.2498 263.562 22.052 14.386 
+86.33 18.2523 81.7477 216.781 39.9603 43.2591 263.555 22.0553 14.39 
+86.34 18.2483 81.7517 216.767 39.9647 43.2684 263.547 22.0586 14.3939 
+86.35 18.2444 81.7556 216.753 39.9691 43.2777 263.54 22.0618 14.3979 
+86.36 18.2405 81.7595 216.74 39.9734 43.287 263.533 22.0651 14.4019 
+86.37 18.2365 81.7635 216.726 39.9778 43.2963 263.526 22.0684 14.4059 
+86.38 18.2326 81.7674 216.712 39.9822 43.3056 263.518 22.0716 14.4099 
+86.39 18.2287 81.7713 216.699 39.9865 43.3149 263.511 22.0749 14.4139 
+86.4 18.2247 81.7753 216.685 39.9909 43.3242 263.504 22.0782 14.4179 
+86.41 18.2208 81.7792 216.671 39.9953 43.3335 263.497 22.0815 14.4219 
+86.42 18.2169 81.7831 216.658 39.9996 43.3428 263.489 22.0847 14.4259 
+86.43 18.213 81.787 216.644 40.004 43.3521 263.482 22.088 14.4299 
+86.44 18.209 81.791 216.63 40.0084 43.3614 263.475 22.0913 14.4339 
+86.45 18.2051 81.7949 216.617 40.0128 43.3707 263.468 22.0946 14.4379 
+86.46 18.2012 81.7988 216.603 40.0171 43.38 263.46 22.0978 14.4419 
+86.47 18.1973 81.8027 216.589 40.0215 43.3893 263.453 22.1011 14.4459 
+86.48 18.1934 81.8066 216.576 40.0259 43.3986 263.446 22.1044 14.45 
+86.49 18.1895 81.8105 216.562 40.0302 43.4079 263.438 22.1077 14.454 
+86.5 18.1855 81.8145 216.548 40.0346 43.4172 263.431 22.1109 14.458 
+86.51 18.1816 81.8184 216.535 40.039 43.4265 263.424 22.1142 14.462 
+86.52 18.1777 81.8223 216.521 40.0433 43.4358 263.417 22.1175 14.466 
+86.53 18.1738 81.8262 216.507 40.0477 43.4451 263.409 22.1208 14.47 
+86.54 18.1699 81.8301 216.494 40.0521 43.4544 263.402 22.1241 14.474 
+86.55 18.166 81.834 216.48 40.0564 43.4637 263.395 22.1273 14.4781 
+86.56 18.1621 81.8379 216.466 40.0608 43.473 263.387 22.1306 14.4821 
+86.57 18.1582 81.8418 216.453 40.0652 43.4823 263.38 22.1339 14.4861 
+86.58 18.1543 81.8457 216.439 40.0695 43.4916 263.373 22.1372 14.4901 
+86.59 18.1504 81.8496 216.425 40.0739 43.5009 263.365 22.1405 14.4942 
+86.6 18.1465 81.8535 216.411 40.0783 43.5103 263.358 22.1437 14.4982 
+86.61 18.1426 81.8574 216.398 40.0826 43.5196 263.351 22.147 14.5022 
+86.62 18.1387 81.8613 216.384 40.087 43.5289 263.343 22.1503 14.5062 
+86.63 18.1348 81.8652 216.37 40.0914 43.5382 263.336 22.1536 14.5103 
+86.64 18.1309 81.8691 216.357 40.0957 43.5475 263.329 22.1569 14.5143 
+86.65 18.1271 81.8729 216.343 40.1001 43.5568 263.322 22.1602 14.5183 
+86.66 18.1232 81.8768 216.329 40.1045 43.5662 263.314 22.1634 14.5224 
+86.67 18.1193 81.8807 216.316 40.1088 43.5755 263.307 22.1667 14.5264 
+86.68 18.1154 81.8846 216.302 40.1132 43.5848 263.3 22.17 14.5304 
+86.69 18.1115 81.8885 216.288 40.1176 43.5941 263.292 22.1733 14.5345 
+86.7 18.1076 81.8924 216.275 40.1219 43.6034 263.285 22.1766 14.5385 
+86.71 18.1038 81.8962 216.261 40.1263 43.6128 263.278 22.1799 14.5426 
+86.72 18.0999 81.9001 216.247 40.1307 43.6221 263.27 22.1832 14.5466 
+86.73 18.096 81.904 216.234 40.135 43.6314 263.263 22.1865 14.5507 
+86.74 18.0921 81.9079 216.22 40.1394 43.6407 263.256 22.1898 14.5547 
+86.75 18.0882 81.9118 216.206 40.1437 43.6501 263.248 22.1931 14.5587 
+86.76 18.0844 81.9156 216.193 40.1481 43.6594 263.241 22.1963 14.5628 
+86.77 18.0805 81.9195 216.179 40.1525 43.6687 263.234 22.1996 14.5668 
+86.78 18.0766 81.9234 216.165 40.1568 43.678 263.226 22.2029 14.5709 
+86.79 18.0728 81.9272 216.151 40.1612 43.6874 263.219 22.2062 14.575 
+86.8 18.0689 81.9311 216.138 40.1656 43.6967 263.211 22.2095 14.579 
+86.81 18.065 81.935 216.124 40.1699 43.706 263.204 22.2128 14.5831 
+86.82 18.0612 81.9388 216.11 40.1743 43.7154 263.197 22.2161 14.5871 
+86.83 18.0573 81.9427 216.097 40.1787 43.7247 263.189 22.2194 14.5912 
+86.84 18.0535 81.9465 216.083 40.183 43.734 263.182 22.2227 14.5952 
+86.85 18.0496 81.9504 216.069 40.1874 43.7434 263.175 22.226 14.5993 
+86.86 18.0457 81.9543 216.056 40.1917 43.7527 263.167 22.2293 14.6034 
+86.87 18.0419 81.9581 216.042 40.1961 43.762 263.16 22.2326 14.6074 
+86.88 18.038 81.962 216.028 40.2005 43.7714 263.153 22.2359 14.6115 
+86.89 18.0342 81.9658 216.014 40.2048 43.7807 263.145 22.2392 14.6156 
+86.9 18.0303 81.9697 216.001 40.2092 43.79 263.138 22.2425 14.6196 
+86.91 18.0265 81.9735 215.987 40.2135 43.7994 263.13 22.2458 14.6237 
+86.92 18.0226 81.9774 215.973 40.2179 43.8087 263.123 22.2491 14.6278 
+86.93 18.0188 81.9812 215.96 40.2223 43.8181 263.116 22.2524 14.6319 
+86.94 18.0149 81.9851 215.946 40.2266 43.8274 263.108 22.2557 14.6359 
+86.95 18.0111 81.9889 215.932 40.231 43.8367 263.101 22.259 14.64 
+86.96 18.0073 81.9927 215.919 40.2353 43.8461 263.094 22.2623 14.6441 
+86.97 18.0034 81.9966 215.905 40.2397 43.8554 263.086 22.2656 14.6482 
+86.98 17.9996 82.0004 215.891 40.2441 43.8648 263.079 22.2689 14.6523 
+86.99 17.9957 82.0043 215.877 40.2484 43.8741 263.071 22.2722 14.6563 
+87 17.9919 82.0081 215.864 40.2528 43.8835 263.064 22.2755 14.6604 
+87.01 17.9881 82.0119 215.85 40.2571 43.8928 263.057 22.2788 14.6645 
+87.02 17.9842 82.0158 215.836 40.2615 43.9022 263.049 22.2821 14.6686 
+87.03 17.9804 82.0196 215.823 40.2659 43.9115 263.042 22.2855 14.6727 
+87.04 17.9766 82.0234 215.809 40.2702 43.9209 263.034 22.2888 14.6768 
+87.05 17.9728 82.0272 215.795 40.2746 43.9302 263.027 22.2921 14.6809 
+87.06 17.9689 82.0311 215.782 40.2789 43.9396 263.02 22.2954 14.685 
+87.07 17.9651 82.0349 215.768 40.2833 43.9489 263.012 22.2987 14.689 
+87.08 17.9613 82.0387 215.754 40.2877 43.9583 263.005 22.302 14.6931 
+87.09 17.9575 82.0425 215.74 40.292 43.9676 262.997 22.3053 14.6972 
+87.1 17.9536 82.0464 215.727 40.2964 43.977 262.99 22.3086 14.7013 
+87.11 17.9498 82.0502 215.713 40.3007 43.9863 262.983 22.3119 14.7054 
+87.12 17.946 82.054 215.699 40.3051 43.9957 262.975 22.3153 14.7095 
+87.13 17.9422 82.0578 215.686 40.3094 44.005 262.968 22.3186 14.7136 
+87.14 17.9384 82.0616 215.672 40.3138 44.0144 262.96 22.3219 14.7177 
+87.15 17.9346 82.0654 215.658 40.3182 44.0238 262.953 22.3252 14.7219 
+87.16 17.9308 82.0692 215.644 40.3225 44.0331 262.946 22.3285 14.726 
+87.17 17.9269 82.0731 215.631 40.3269 44.0425 262.938 22.3318 14.7301 
+87.18 17.9231 82.0769 215.617 40.3312 44.0518 262.931 22.3351 14.7342 
+87.19 17.9193 82.0807 215.603 40.3356 44.0612 262.923 22.3385 14.7383 
+87.2 17.9155 82.0845 215.59 40.3399 44.0706 262.916 22.3418 14.7424 
+87.21 17.9117 82.0883 215.576 40.3443 44.0799 262.908 22.3451 14.7465 
+87.22 17.9079 82.0921 215.562 40.3486 44.0893 262.901 22.3484 14.7506 
+87.23 17.9041 82.0959 215.548 40.353 44.0987 262.894 22.3517 14.7547 
+87.24 17.9003 82.0997 215.535 40.3574 44.108 262.886 22.3551 14.7589 
+87.25 17.8965 82.1035 215.521 40.3617 44.1174 262.879 22.3584 14.763 
+87.26 17.8927 82.1073 215.507 40.3661 44.1268 262.871 22.3617 14.7671 
+87.27 17.8889 82.1111 215.493 40.3704 44.1361 262.864 22.365 14.7712 
+87.28 17.8851 82.1149 215.48 40.3748 44.1455 262.856 22.3683 14.7754 
+87.29 17.8813 82.1187 215.466 40.3791 44.1549 262.849 22.3717 14.7795 
+87.3 17.8776 82.1224 215.452 40.3835 44.1642 262.841 22.375 14.7836 
+87.31 17.8738 82.1262 215.439 40.3878 44.1736 262.834 22.3783 14.7877 
+87.32 17.87 82.13 215.425 40.3922 44.183 262.827 22.3816 14.7919 
+87.33 17.8662 82.1338 215.411 40.3965 44.1924 262.819 22.385 14.796 
+87.34 17.8624 82.1376 215.397 40.4009 44.2017 262.812 22.3883 14.8001 
+87.35 17.8586 82.1414 215.384 40.4053 44.2111 262.804 22.3916 14.8043 
+87.36 17.8549 82.1451 215.37 40.4096 44.2205 262.797 22.3949 14.8084 
+87.37 17.8511 82.1489 215.356 40.414 44.2299 262.789 22.3983 14.8125 
+87.38 17.8473 82.1527 215.342 40.4183 44.2392 262.782 22.4016 14.8167 
+87.39 17.8435 82.1565 215.329 40.4227 44.2486 262.774 22.4049 14.8208 
+87.4 17.8397 82.1603 215.315 40.427 44.258 262.767 22.4082 14.825 
+87.41 17.836 82.164 215.301 40.4314 44.2674 262.759 22.4116 14.8291 
+87.42 17.8322 82.1678 215.288 40.4357 44.2768 262.752 22.4149 14.8332 
+87.43 17.8284 82.1716 215.274 40.4401 44.2861 262.744 22.4182 14.8374 
+87.44 17.8247 82.1753 215.26 40.4444 44.2955 262.737 22.4216 14.8415 
+87.45 17.8209 82.1791 215.246 40.4488 44.3049 262.729 22.4249 14.8457 
+87.46 17.8171 82.1829 215.233 40.4531 44.3143 262.722 22.4282 14.8498 
+87.47 17.8134 82.1866 215.219 40.4575 44.3237 262.714 22.4316 14.854 
+87.48 17.8096 82.1904 215.205 40.4618 44.3331 262.707 22.4349 14.8581 
+87.49 17.8058 82.1942 215.191 40.4662 44.3424 262.699 22.4382 14.8623 
+87.5 17.8021 82.1979 215.178 40.4705 44.3518 262.692 22.4416 14.8665 
+87.51 17.7983 82.2017 215.164 40.4749 44.3612 262.684 22.4449 14.8706 
+87.52 17.7946 82.2054 215.15 40.4792 44.3706 262.677 22.4482 14.8748 
+87.53 17.7908 82.2092 215.136 40.4836 44.38 262.669 22.4516 14.8789 
+87.54 17.7871 82.2129 215.123 40.4879 44.3894 262.662 22.4549 14.8831 
+87.55 17.7833 82.2167 215.109 40.4923 44.3988 262.654 22.4583 14.8873 
+87.56 17.7796 82.2204 215.095 40.4966 44.4082 262.647 22.4616 14.8914 
+87.57 17.7758 82.2242 215.081 40.501 44.4176 262.639 22.4649 14.8956 
+87.58 17.7721 82.2279 215.068 40.5053 44.427 262.632 22.4683 14.8998 
+87.59 17.7683 82.2317 215.054 40.5097 44.4364 262.624 22.4716 14.9039 
+87.6 17.7646 82.2354 215.04 40.514 44.4458 262.617 22.475 14.9081 
+87.61 17.7608 82.2392 215.026 40.5184 44.4552 262.609 22.4783 14.9123 
+87.62 17.7571 82.2429 215.013 40.5227 44.4645 262.602 22.4816 14.9164 
+87.63 17.7534 82.2466 214.999 40.5271 44.4739 262.594 22.485 14.9206 
+87.64 17.7496 82.2504 214.985 40.5314 44.4833 262.587 22.4883 14.9248 
+87.65 17.7459 82.2541 214.971 40.5358 44.4927 262.579 22.4917 14.929 
+87.66 17.7422 82.2578 214.958 40.5401 44.5021 262.572 22.495 14.9332 
+87.67 17.7384 82.2616 214.944 40.5445 44.5115 262.564 22.4984 14.9373 
+87.68 17.7347 82.2653 214.93 40.5488 44.5209 262.557 22.5017 14.9415 
+87.69 17.731 82.269 214.916 40.5532 44.5304 262.549 22.505 14.9457 
+87.7 17.7272 82.2728 214.903 40.5575 44.5398 262.542 22.5084 14.9499 
+87.71 17.7235 82.2765 214.889 40.5618 44.5492 262.534 22.5117 14.9541 
+87.72 17.7198 82.2802 214.875 40.5662 44.5586 262.527 22.5151 14.9583 
+87.73 17.7161 82.2839 214.861 40.5705 44.568 262.519 22.5184 14.9625 
+87.74 17.7123 82.2877 214.848 40.5749 44.5774 262.512 22.5218 14.9666 
+87.75 17.7086 82.2914 214.834 40.5792 44.5868 262.504 22.5251 14.9708 
+87.76 17.7049 82.2951 214.82 40.5836 44.5962 262.496 22.5285 14.975 
+87.77 17.7012 82.2988 214.806 40.5879 44.6056 262.489 22.5318 14.9792 
+87.78 17.6975 82.3025 214.793 40.5923 44.615 262.481 22.5352 14.9834 
+87.79 17.6937 82.3063 214.779 40.5966 44.6244 262.474 22.5385 14.9876 
+87.8 17.69 82.31 214.765 40.601 44.6338 262.466 22.5419 14.9918 
+87.81 17.6863 82.3137 214.751 40.6053 44.6433 262.459 22.5452 14.996 
+87.82 17.6826 82.3174 214.738 40.6096 44.6527 262.451 22.5486 15.0002 
+87.83 17.6789 82.3211 214.724 40.614 44.6621 262.444 22.5519 15.0044 
+87.84 17.6752 82.3248 214.71 40.6183 44.6715 262.436 22.5553 15.0086 
+87.85 17.6715 82.3285 214.696 40.6227 44.6809 262.429 22.5587 15.0128 
+87.86 17.6678 82.3322 214.683 40.627 44.6903 262.421 22.562 15.0171 
+87.87 17.6641 82.3359 214.669 40.6314 44.6998 262.413 22.5654 15.0213 
+87.88 17.6604 82.3396 214.655 40.6357 44.7092 262.406 22.5687 15.0255 
+87.89 17.6567 82.3433 214.641 40.6401 44.7186 262.398 22.5721 15.0297 
+87.9 17.653 82.347 214.628 40.6444 44.728 262.391 22.5754 15.0339 
+87.91 17.6493 82.3507 214.614 40.6487 44.7374 262.383 22.5788 15.0381 
+87.92 17.6456 82.3544 214.6 40.6531 44.7469 262.376 22.5821 15.0423 
+87.93 17.6419 82.3581 214.586 40.6574 44.7563 262.368 22.5855 15.0466 
+87.94 17.6382 82.3618 214.573 40.6618 44.7657 262.36 22.5889 15.0508 
+87.95 17.6345 82.3655 214.559 40.6661 44.7751 262.353 22.5922 15.055 
+87.96 17.6308 82.3692 214.545 40.6704 44.7845 262.345 22.5956 15.0592 
+87.97 17.6271 82.3729 214.531 40.6748 44.794 262.338 22.599 15.0634 
+87.98 17.6234 82.3766 214.517 40.6791 44.8034 262.33 22.6023 15.0677 
+87.99 17.6198 82.3802 214.504 40.6835 44.8128 262.322 22.6057 15.0719 
+88 17.6161 82.3839 214.49 40.6878 44.8223 262.315 22.609 15.0761 
+88.01 17.6124 82.3876 214.476 40.6922 44.8317 262.307 22.6124 15.0804 
+88.02 17.6087 82.3913 214.462 40.6965 44.8411 262.3 22.6158 15.0846 
+88.03 17.605 82.395 214.449 40.7008 44.8505 262.292 22.6191 15.0888 
+88.04 17.6014 82.3986 214.435 40.7052 44.86 262.284 22.6225 15.0931 
+88.05 17.5977 82.4023 214.421 40.7095 44.8694 262.277 22.6259 15.0973 
+88.06 17.594 82.406 214.407 40.7139 44.8788 262.269 22.6292 15.1015 
+88.07 17.5903 82.4097 214.394 40.7182 44.8883 262.262 22.6326 15.1058 
+88.08 17.5867 82.4133 214.38 40.7225 44.8977 262.254 22.636 15.11 
+88.09 17.583 82.417 214.366 40.7269 44.9071 262.246 22.6393 15.1143 
+88.1 17.5793 82.4207 214.352 40.7312 44.9166 262.239 22.6427 15.1185 
+88.11 17.5757 82.4243 214.338 40.7356 44.926 262.231 22.6461 15.1228 
+88.12 17.572 82.428 214.325 40.7399 44.9355 262.224 22.6494 15.127 
+88.13 17.5683 82.4317 214.311 40.7442 44.9449 262.216 22.6528 15.1312 
+88.14 17.5647 82.4353 214.297 40.7486 44.9543 262.208 22.6562 15.1355 
+88.15 17.561 82.439 214.283 40.7529 44.9638 262.201 22.6596 15.1397 
+88.16 17.5573 82.4427 214.27 40.7572 44.9732 262.193 22.6629 15.144 
+88.17 17.5537 82.4463 214.256 40.7616 44.9827 262.185 22.6663 15.1483 
+88.18 17.55 82.45 214.242 40.7659 44.9921 262.178 22.6697 15.1525 
+88.19 17.5464 82.4536 214.228 40.7703 45.0016 262.17 22.6731 15.1568 
+88.2 17.5427 82.4573 214.214 40.7746 45.011 262.163 22.6764 15.161 
+88.21 17.5391 82.4609 214.201 40.7789 45.0204 262.155 22.6798 15.1653 
+88.22 17.5354 82.4646 214.187 40.7833 45.0299 262.147 22.6832 15.1695 
+88.23 17.5318 82.4682 214.173 40.7876 45.0393 262.14 22.6866 15.1738 
+88.24 17.5281 82.4719 214.159 40.7919 45.0488 262.132 22.6899 15.1781 
+88.25 17.5245 82.4755 214.145 40.7963 45.0582 262.124 22.6933 15.1823 
+88.26 17.5208 82.4792 214.132 40.8006 45.0677 262.117 22.6967 15.1866 
+88.27 17.5172 82.4828 214.118 40.805 45.0771 262.109 22.7001 15.1909 
+88.28 17.5135 82.4865 214.104 40.8093 45.0866 262.101 22.7034 15.1951 
+88.29 17.5099 82.4901 214.09 40.8136 45.096 262.094 22.7068 15.1994 
+88.3 17.5063 82.4937 214.077 40.818 45.1055 262.086 22.7102 15.2037 
+88.31 17.5026 82.4974 214.063 40.8223 45.1149 262.078 22.7136 15.208 
+88.32 17.499 82.501 214.049 40.8266 45.1244 262.071 22.717 15.2122 
+88.33 17.4954 82.5046 214.035 40.831 45.1338 262.063 22.7204 15.2165 
+88.34 17.4917 82.5083 214.021 40.8353 45.1433 262.055 22.7237 15.2208 
+88.35 17.4881 82.5119 214.008 40.8396 45.1528 262.048 22.7271 15.2251 
+88.36 17.4845 82.5155 213.994 40.844 45.1622 262.04 22.7305 15.2294 
+88.37 17.4808 82.5192 213.98 40.8483 45.1717 262.032 22.7339 15.2336 
+88.38 17.4772 82.5228 213.966 40.8526 45.1811 262.025 22.7373 15.2379 
+88.39 17.4736 82.5264 213.952 40.857 45.1906 262.017 22.7407 15.2422 
+88.4 17.47 82.53 213.939 40.8613 45.2001 262.009 22.744 15.2465 
+88.41 17.4663 82.5337 213.925 40.8656 45.2095 262.002 22.7474 15.2508 
+88.42 17.4627 82.5373 213.911 40.87 45.219 261.994 22.7508 15.2551 
+88.43 17.4591 82.5409 213.897 40.8743 45.2284 261.986 22.7542 15.2594 
+88.44 17.4555 82.5445 213.883 40.8786 45.2379 261.979 22.7576 15.2637 
+88.45 17.4519 82.5481 213.87 40.883 45.2474 261.971 22.761 15.268 
+88.46 17.4483 82.5517 213.856 40.8873 45.2568 261.963 22.7644 15.2723 
+88.47 17.4446 82.5554 213.842 40.8916 45.2663 261.956 22.7678 15.2766 
+88.48 17.441 82.559 213.828 40.896 45.2758 261.948 22.7711 15.2809 
+88.49 17.4374 82.5626 213.814 40.9003 45.2852 261.94 22.7745 15.2852 
+88.5 17.4338 82.5662 213.801 40.9046 45.2947 261.933 22.7779 15.2895 
+88.51 17.4302 82.5698 213.787 40.909 45.3042 261.925 22.7813 15.2938 
+88.52 17.4266 82.5734 213.773 40.9133 45.3136 261.917 22.7847 15.2981 
+88.53 17.423 82.577 213.759 40.9176 45.3231 261.91 22.7881 15.3024 
+88.54 17.4194 82.5806 213.745 40.922 45.3326 261.902 22.7915 15.3067 
+88.55 17.4158 82.5842 213.732 40.9263 45.3421 261.894 22.7949 15.311 
+88.56 17.4122 82.5878 213.718 40.9306 45.3515 261.886 22.7983 15.3153 
+88.57 17.4086 82.5914 213.704 40.935 45.361 261.879 22.8017 15.3196 
+88.58 17.405 82.595 213.69 40.9393 45.3705 261.871 22.8051 15.3239 
+88.59 17.4014 82.5986 213.676 40.9436 45.38 261.863 22.8085 15.3283 
+88.6 17.3978 82.6022 213.663 40.9479 45.3894 261.856 22.8119 15.3326 
+88.61 17.3942 82.6058 213.649 40.9523 45.3989 261.848 22.8153 15.3369 
+88.62 17.3906 82.6094 213.635 40.9566 45.4084 261.84 22.8187 15.3412 
+88.63 17.387 82.613 213.621 40.9609 45.4179 261.832 22.8221 15.3455 
+88.64 17.3835 82.6165 213.607 40.9653 45.4273 261.825 22.8255 15.3499 
+88.65 17.3799 82.6201 213.594 40.9696 45.4368 261.817 22.8289 15.3542 
+88.66 17.3763 82.6237 213.58 40.9739 45.4463 261.809 22.8323 15.3585 
+88.67 17.3727 82.6273 213.566 40.9782 45.4558 261.801 22.8357 15.3628 
+88.68 17.3691 82.6309 213.552 40.9826 45.4653 261.794 22.8391 15.3672 
+88.69 17.3655 82.6345 213.538 40.9869 45.4748 261.786 22.8425 15.3715 
+88.7 17.362 82.638 213.525 40.9912 45.4842 261.778 22.8459 15.3758 
+88.71 17.3584 82.6416 213.511 40.9956 45.4937 261.771 22.8493 15.3802 
+88.72 17.3548 82.6452 213.497 40.9999 45.5032 261.763 22.8527 15.3845 
+88.73 17.3512 82.6488 213.483 41.0042 45.5127 261.755 22.8561 15.3888 
+88.74 17.3477 82.6523 213.469 41.0085 45.5222 261.747 22.8595 15.3932 
+88.75 17.3441 82.6559 213.455 41.0129 45.5317 261.74 22.8629 15.3975 
+88.76 17.3405 82.6595 213.442 41.0172 45.5412 261.732 22.8663 15.4019 
+88.77 17.337 82.663 213.428 41.0215 45.5507 261.724 22.8697 15.4062 
+88.78 17.3334 82.6666 213.414 41.0258 45.5601 261.716 22.8731 15.4106 
+88.79 17.3298 82.6702 213.4 41.0302 45.5696 261.709 22.8765 15.4149 
+88.8 17.3263 82.6737 213.386 41.0345 45.5791 261.701 22.8799 15.4192 
+88.81 17.3227 82.6773 213.373 41.0388 45.5886 261.693 22.8834 15.4236 
+88.82 17.3191 82.6809 213.359 41.0432 45.5981 261.685 22.8868 15.4279 
+88.83 17.3156 82.6844 213.345 41.0475 45.6076 261.678 22.8902 15.4323 
+88.84 17.312 82.688 213.331 41.0518 45.6171 261.67 22.8936 15.4367 
+88.85 17.3085 82.6915 213.317 41.0561 45.6266 261.662 22.897 15.441 
+88.86 17.3049 82.6951 213.303 41.0605 45.6361 261.654 22.9004 15.4454 
+88.87 17.3014 82.6986 213.29 41.0648 45.6456 261.646 22.9038 15.4497 
+88.88 17.2978 82.7022 213.276 41.0691 45.6551 261.639 22.9072 15.4541 
+88.89 17.2943 82.7057 213.262 41.0734 45.6646 261.631 22.9106 15.4584 
+88.9 17.2907 82.7093 213.248 41.0778 45.6741 261.623 22.9141 15.4628 
+88.91 17.2872 82.7128 213.234 41.0821 45.6836 261.615 22.9175 15.4672 
+88.92 17.2836 82.7164 213.221 41.0864 45.6931 261.608 22.9209 15.4715 
+88.93 17.2801 82.7199 213.207 41.0907 45.7026 261.6 22.9243 15.4759 
+88.94 17.2765 82.7235 213.193 41.095 45.7121 261.592 22.9277 15.4803 
+88.95 17.273 82.727 213.179 41.0994 45.7216 261.584 22.9311 15.4846 
+88.96 17.2695 82.7305 213.165 41.1037 45.7311 261.576 22.9346 15.489 
+88.97 17.2659 82.7341 213.151 41.108 45.7406 261.569 22.938 15.4934 
+88.98 17.2624 82.7376 213.138 41.1123 45.7501 261.561 22.9414 15.4978 
+88.99 17.2588 82.7412 213.124 41.1167 45.7596 261.553 22.9448 15.5021 
+89 17.2553 82.7447 213.11 41.121 45.7691 261.545 22.9482 15.5065 
+89.01 17.2518 82.7482 213.096 41.1253 45.7787 261.537 22.9517 15.5109 
+89.02 17.2482 82.7518 213.082 41.1296 45.7882 261.53 22.9551 15.5153 
+89.03 17.2447 82.7553 213.068 41.1339 45.7977 261.522 22.9585 15.5196 
+89.04 17.2412 82.7588 213.055 41.1383 45.8072 261.514 22.9619 15.524 
+89.05 17.2377 82.7623 213.041 41.1426 45.8167 261.506 22.9653 15.5284 
+89.06 17.2341 82.7659 213.027 41.1469 45.8262 261.498 22.9688 15.5328 
+89.07 17.2306 82.7694 213.013 41.1512 45.8357 261.491 22.9722 15.5372 
+89.08 17.2271 82.7729 212.999 41.1556 45.8452 261.483 22.9756 15.5416 
+89.09 17.2236 82.7764 212.985 41.1599 45.8548 261.475 22.979 15.546 
+89.1 17.2201 82.7799 212.972 41.1642 45.8643 261.467 22.9825 15.5504 
+89.11 17.2165 82.7835 212.958 41.1685 45.8738 261.459 22.9859 15.5548 
+89.12 17.213 82.787 212.944 41.1728 45.8833 261.452 22.9893 15.5591 
+89.13 17.2095 82.7905 212.93 41.1772 45.8928 261.444 22.9927 15.5635 
+89.14 17.206 82.794 212.916 41.1815 45.9023 261.436 22.9962 15.5679 
+89.15 17.2025 82.7975 212.902 41.1858 45.9119 261.428 22.9996 15.5723 
+89.16 17.199 82.801 212.889 41.1901 45.9214 261.42 23.003 15.5767 
+89.17 17.1955 82.8045 212.875 41.1944 45.9309 261.412 23.0065 15.5811 
+89.18 17.192 82.808 212.861 41.1987 45.9404 261.405 23.0099 15.5856 
+89.19 17.1884 82.8116 212.847 41.2031 45.9499 261.397 23.0133 15.59 
+89.2 17.1849 82.8151 212.833 41.2074 45.9595 261.389 23.0167 15.5944 
+89.21 17.1814 82.8186 212.819 41.2117 45.969 261.381 23.0202 15.5988 
+89.22 17.1779 82.8221 212.805 41.216 45.9785 261.373 23.0236 15.6032 
+89.23 17.1744 82.8256 212.792 41.2203 45.988 261.365 23.027 15.6076 
+89.24 17.1709 82.8291 212.778 41.2247 45.9976 261.358 23.0305 15.612 
+89.25 17.1674 82.8326 212.764 41.229 46.0071 261.35 23.0339 15.6164 
+89.26 17.164 82.836 212.75 41.2333 46.0166 261.342 23.0373 15.6208 
+89.27 17.1605 82.8395 212.736 41.2376 46.0262 261.334 23.0408 15.6253 
+89.28 17.157 82.843 212.722 41.2419 46.0357 261.326 23.0442 15.6297 
+89.29 17.1535 82.8465 212.709 41.2462 46.0452 261.318 23.0477 15.6341 
+89.3 17.15 82.85 212.695 41.2506 46.0547 261.31 23.0511 15.6385 
+89.31 17.1465 82.8535 212.681 41.2549 46.0643 261.303 23.0545 15.6429 
+89.32 17.143 82.857 212.667 41.2592 46.0738 261.295 23.058 15.6474 
+89.33 17.1395 82.8605 212.653 41.2635 46.0833 261.287 23.0614 15.6518 
+89.34 17.136 82.864 212.639 41.2678 46.0929 261.279 23.0648 15.6562 
+89.35 17.1326 82.8674 212.625 41.2721 46.1024 261.271 23.0683 15.6606 
+89.36 17.1291 82.8709 212.612 41.2764 46.112 261.263 23.0717 15.6651 
+89.37 17.1256 82.8744 212.598 41.2808 46.1215 261.255 23.0752 15.6695 
+89.38 17.1221 82.8779 212.584 41.2851 46.131 261.247 23.0786 15.6739 
+89.39 17.1186 82.8814 212.57 41.2894 46.1406 261.24 23.082 15.6784 
+89.4 17.1152 82.8848 212.556 41.2937 46.1501 261.232 23.0855 15.6828 
+89.41 17.1117 82.8883 212.542 41.298 46.1596 261.224 23.0889 15.6873 
+89.42 17.1082 82.8918 212.528 41.3023 46.1692 261.216 23.0924 15.6917 
+89.43 17.1048 82.8952 212.515 41.3066 46.1787 261.208 23.0958 15.6961 
+89.44 17.1013 82.8987 212.501 41.311 46.1883 261.2 23.0993 15.7006 
+89.45 17.0978 82.9022 212.487 41.3153 46.1978 261.192 23.1027 15.705 
+89.46 17.0944 82.9056 212.473 41.3196 46.2074 261.184 23.1062 15.7095 
+89.47 17.0909 82.9091 212.459 41.3239 46.2169 261.176 23.1096 15.7139 
+89.48 17.0874 82.9126 212.445 41.3282 46.2264 261.169 23.113 15.7184 
+89.49 17.084 82.916 212.431 41.3325 46.236 261.161 23.1165 15.7228 
+89.5 17.0805 82.9195 212.418 41.3368 46.2455 261.153 23.1199 15.7273 
+89.51 17.077 82.923 212.404 41.3412 46.2551 261.145 23.1234 15.7317 
+89.52 17.0736 82.9264 212.39 41.3455 46.2646 261.137 23.1268 15.7362 
+89.53 17.0701 82.9299 212.376 41.3498 46.2742 261.129 23.1303 15.7406 
+89.54 17.0667 82.9333 212.362 41.3541 46.2837 261.121 23.1337 15.7451 
+89.55 17.0632 82.9368 212.348 41.3584 46.2933 261.113 23.1372 15.7496 
+89.56 17.0598 82.9402 212.334 41.3627 46.3028 261.105 23.1406 15.754 
+89.57 17.0563 82.9437 212.321 41.367 46.3124 261.097 23.1441 15.7585 
+89.58 17.0529 82.9471 212.307 41.3713 46.3219 261.09 23.1475 15.7629 
+89.59 17.0494 82.9506 212.293 41.3756 46.3315 261.082 23.151 15.7674 
+89.6 17.046 82.954 212.279 41.38 46.3411 261.074 23.1544 15.7719 
+89.61 17.0425 82.9575 212.265 41.3843 46.3506 261.066 23.1579 15.7763 
+89.62 17.0391 82.9609 212.251 41.3886 46.3602 261.058 23.1614 15.7808 
+89.63 17.0357 82.9643 212.237 41.3929 46.3697 261.05 23.1648 15.7853 
+89.64 17.0322 82.9678 212.224 41.3972 46.3793 261.042 23.1683 15.7898 
+89.65 17.0288 82.9712 212.21 41.4015 46.3888 261.034 23.1717 15.7942 
+89.66 17.0253 82.9747 212.196 41.4058 46.3984 261.026 23.1752 15.7987 
+89.67 17.0219 82.9781 212.182 41.4101 46.408 261.018 23.1786 15.8032 
+89.68 17.0185 82.9815 212.168 41.4144 46.4175 261.01 23.1821 15.8077 
+89.69 17.015 82.985 212.154 41.4187 46.4271 261.002 23.1856 15.8122 
+89.7 17.0116 82.9884 212.14 41.423 46.4366 260.994 23.189 15.8166 
+89.71 17.0082 82.9918 212.126 41.4274 46.4462 260.986 23.1925 15.8211 
+89.72 17.0048 82.9952 212.113 41.4317 46.4558 260.978 23.1959 15.8256 
+89.73 17.0013 82.9987 212.099 41.436 46.4653 260.971 23.1994 15.8301 
+89.74 16.9979 83.0021 212.085 41.4403 46.4749 260.963 23.2029 15.8346 
+89.75 16.9945 83.0055 212.071 41.4446 46.4845 260.955 23.2063 15.8391 
+89.76 16.9911 83.0089 212.057 41.4489 46.494 260.947 23.2098 15.8436 
+89.77 16.9876 83.0124 212.043 41.4532 46.5036 260.939 23.2132 15.8481 
+89.78 16.9842 83.0158 212.029 41.4575 46.5132 260.931 23.2167 15.8525 
+89.79 16.9808 83.0192 212.015 41.4618 46.5227 260.923 23.2202 15.857 
+89.8 16.9774 83.0226 212.002 41.4661 46.5323 260.915 23.2236 15.8615 
+89.81 16.974 83.026 211.988 41.4704 46.5419 260.907 23.2271 15.866 
+89.82 16.9706 83.0294 211.974 41.4747 46.5514 260.899 23.2306 15.8705 
+89.83 16.9672 83.0328 211.96 41.479 46.561 260.891 23.234 15.875 
+89.84 16.9637 83.0363 211.946 41.4833 46.5706 260.883 23.2375 15.8795 
+89.85 16.9603 83.0397 211.932 41.4876 46.5802 260.875 23.241 15.884 
+89.86 16.9569 83.0431 211.918 41.4919 46.5897 260.867 23.2444 15.8886 
+89.87 16.9535 83.0465 211.904 41.4963 46.5993 260.859 23.2479 15.8931 
+89.88 16.9501 83.0499 211.891 41.5006 46.6089 260.851 23.2514 15.8976 
+89.89 16.9467 83.0533 211.877 41.5049 46.6185 260.843 23.2548 15.9021 
+89.9 16.9433 83.0567 211.863 41.5092 46.628 260.835 23.2583 15.9066 
+89.91 16.9399 83.0601 211.849 41.5135 46.6376 260.827 23.2618 15.9111 
+89.92 16.9365 83.0635 211.835 41.5178 46.6472 260.819 23.2652 15.9156 
+89.93 16.9331 83.0669 211.821 41.5221 46.6568 260.811 23.2687 15.9201 
+89.94 16.9297 83.0703 211.807 41.5264 46.6664 260.803 23.2722 15.9247 
+89.95 16.9263 83.0737 211.793 41.5307 46.6759 260.795 23.2757 15.9292 
+89.96 16.9229 83.0771 211.779 41.535 46.6855 260.787 23.2791 15.9337 
+89.97 16.9195 83.0805 211.766 41.5393 46.6951 260.779 23.2826 15.9382 
+89.98 16.9162 83.0838 211.752 41.5436 46.7047 260.771 23.2861 15.9428 
+89.99 16.9128 83.0872 211.738 41.5479 46.7143 260.763 23.2896 15.9473 
+90 16.9094 83.0906 211.724 41.5522 46.7239 260.755 23.293 15.9518 
+90.01 16.906 83.094 211.71 41.5565 46.7334 260.747 23.2965 15.9563 
+90.02 16.9026 83.0974 211.696 41.5608 46.743 260.739 23.3 15.9609 
+90.03 16.8992 83.1008 211.682 41.5651 46.7526 260.731 23.3035 15.9654 
+90.04 16.8958 83.1042 211.668 41.5694 46.7622 260.723 23.3069 15.9699 
+90.05 16.8925 83.1075 211.654 41.5737 46.7718 260.715 23.3104 15.9745 
+90.06 16.8891 83.1109 211.641 41.578 46.7814 260.707 23.3139 15.979 
+90.07 16.8857 83.1143 211.627 41.5823 46.791 260.699 23.3174 15.9835 
+90.08 16.8823 83.1177 211.613 41.5866 46.8006 260.691 23.3209 15.9881 
+90.09 16.879 83.121 211.599 41.5909 46.8102 260.683 23.3243 15.9926 
+90.1 16.8756 83.1244 211.585 41.5952 46.8198 260.675 23.3278 15.9972 
+90.11 16.8722 83.1278 211.571 41.5995 46.8293 260.667 23.3313 16.0017 
+90.12 16.8689 83.1311 211.557 41.6038 46.8389 260.659 23.3348 16.0063 
+90.13 16.8655 83.1345 211.543 41.6081 46.8485 260.651 23.3383 16.0108 
+90.14 16.8621 83.1379 211.529 41.6124 46.8581 260.643 23.3417 16.0154 
+90.15 16.8588 83.1412 211.516 41.6167 46.8677 260.635 23.3452 16.0199 
+90.16 16.8554 83.1446 211.502 41.621 46.8773 260.627 23.3487 16.0245 
+90.17 16.852 83.148 211.488 41.6253 46.8869 260.619 23.3522 16.029 
+90.18 16.8487 83.1513 211.474 41.6296 46.8965 260.611 23.3557 16.0336 
+90.19 16.8453 83.1547 211.46 41.6339 46.9061 260.603 23.3592 16.0381 
+90.2 16.842 83.158 211.446 41.6382 46.9157 260.595 23.3627 16.0427 
+90.21 16.8386 83.1614 211.432 41.6425 46.9253 260.587 23.3661 16.0472 
+90.22 16.8352 83.1648 211.418 41.6468 46.9349 260.579 23.3696 16.0518 
+90.23 16.8319 83.1681 211.404 41.6511 46.9445 260.571 23.3731 16.0564 
+90.24 16.8285 83.1715 211.39 41.6554 46.9541 260.562 23.3766 16.0609 
+90.25 16.8252 83.1748 211.377 41.6597 46.9637 260.554 23.3801 16.0655 
+90.26 16.8218 83.1782 211.363 41.664 46.9733 260.546 23.3836 16.0701 
+90.27 16.8185 83.1815 211.349 41.6683 46.9829 260.538 23.3871 16.0746 
+90.28 16.8151 83.1849 211.335 41.6726 46.9926 260.53 23.3906 16.0792 
+90.29 16.8118 83.1882 211.321 41.6769 47.0022 260.522 23.3941 16.0838 
+90.3 16.8085 83.1915 211.307 41.6812 47.0118 260.514 23.3976 16.0883 
+90.31 16.8051 83.1949 211.293 41.6855 47.0214 260.506 23.401 16.0929 
+90.32 16.8018 83.1982 211.279 41.6898 47.031 260.498 23.4045 16.0975 
+90.33 16.7984 83.2016 211.265 41.6941 47.0406 260.49 23.408 16.1021 
+90.34 16.7951 83.2049 211.251 41.6984 47.0502 260.482 23.4115 16.1067 
+90.35 16.7918 83.2082 211.238 41.7026 47.0598 260.474 23.415 16.1112 
+90.36 16.7884 83.2116 211.224 41.7069 47.0694 260.466 23.4185 16.1158 
+90.37 16.7851 83.2149 211.21 41.7112 47.079 260.458 23.422 16.1204 
+90.38 16.7818 83.2182 211.196 41.7155 47.0887 260.45 23.4255 16.125 
+90.39 16.7784 83.2216 211.182 41.7198 47.0983 260.441 23.429 16.1296 
+90.4 16.7751 83.2249 211.168 41.7241 47.1079 260.433 23.4325 16.1342 
+90.41 16.7718 83.2282 211.154 41.7284 47.1175 260.425 23.436 16.1388 
+90.42 16.7685 83.2315 211.14 41.7327 47.1271 260.417 23.4395 16.1433 
+90.43 16.7651 83.2349 211.126 41.737 47.1367 260.409 23.443 16.1479 
+90.44 16.7618 83.2382 211.112 41.7413 47.1464 260.401 23.4465 16.1525 
+90.45 16.7585 83.2415 211.098 41.7456 47.156 260.393 23.45 16.1571 
+90.46 16.7552 83.2448 211.085 41.7499 47.1656 260.385 23.4535 16.1617 
+90.47 16.7518 83.2482 211.071 41.7542 47.1752 260.377 23.457 16.1663 
+90.48 16.7485 83.2515 211.057 41.7585 47.1848 260.369 23.4605 16.1709 
+90.49 16.7452 83.2548 211.043 41.7628 47.1945 260.36 23.464 16.1755 
+90.5 16.7419 83.2581 211.029 41.767 47.2041 260.352 23.4675 16.1801 
+90.51 16.7386 83.2614 211.015 41.7713 47.2137 260.344 23.471 16.1847 
+90.52 16.7353 83.2647 211.001 41.7756 47.2233 260.336 23.4745 16.1893 
+90.53 16.732 83.268 210.987 41.7799 47.233 260.328 23.478 16.194 
+90.54 16.7287 83.2713 210.973 41.7842 47.2426 260.32 23.4815 16.1986 
+90.55 16.7254 83.2746 210.959 41.7885 47.2522 260.312 23.485 16.2032 
+90.56 16.722 83.278 210.945 41.7928 47.2618 260.304 23.4885 16.2078 
+90.57 16.7187 83.2813 210.931 41.7971 47.2715 260.296 23.492 16.2124 
+90.58 16.7154 83.2846 210.918 41.8014 47.2811 260.287 23.4955 16.217 
+90.59 16.7121 83.2879 210.904 41.8057 47.2907 260.279 23.4991 16.2216 
+90.6 16.7088 83.2912 210.89 41.81 47.3003 260.271 23.5026 16.2263 
+90.61 16.7055 83.2945 210.876 41.8142 47.31 260.263 23.5061 16.2309 
+90.62 16.7022 83.2978 210.862 41.8185 47.3196 260.255 23.5096 16.2355 
+90.63 16.699 83.301 210.848 41.8228 47.3292 260.247 23.5131 16.2401 
+90.64 16.6957 83.3043 210.834 41.8271 47.3389 260.239 23.5166 16.2447 
+90.65 16.6924 83.3076 210.82 41.8314 47.3485 260.231 23.5201 16.2494 
+90.66 16.6891 83.3109 210.806 41.8357 47.3581 260.222 23.5236 16.254 
+90.67 16.6858 83.3142 210.792 41.84 47.3678 260.214 23.5271 16.2586 
+90.68 16.6825 83.3175 210.778 41.8443 47.3774 260.206 23.5306 16.2633 
+90.69 16.6792 83.3208 210.764 41.8486 47.3871 260.198 23.5342 16.2679 
+90.7 16.6759 83.3241 210.75 41.8528 47.3967 260.19 23.5377 16.2725 
+90.71 16.6726 83.3274 210.737 41.8571 47.4063 260.182 23.5412 16.2772 
+90.72 16.6694 83.3306 210.723 41.8614 47.416 260.173 23.5447 16.2818 
+90.73 16.6661 83.3339 210.709 41.8657 47.4256 260.165 23.5482 16.2864 
+90.74 16.6628 83.3372 210.695 41.87 47.4352 260.157 23.5517 16.2911 
+90.75 16.6595 83.3405 210.681 41.8743 47.4449 260.149 23.5553 16.2957 
+90.76 16.6562 83.3438 210.667 41.8786 47.4545 260.141 23.5588 16.3004 
+90.77 16.653 83.347 210.653 41.8829 47.4642 260.133 23.5623 16.305 
+90.78 16.6497 83.3503 210.639 41.8871 47.4738 260.125 23.5658 16.3097 
+90.79 16.6464 83.3536 210.625 41.8914 47.4835 260.116 23.5693 16.3143 
+90.8 16.6432 83.3568 210.611 41.8957 47.4931 260.108 23.5728 16.319 
+90.81 16.6399 83.3601 210.597 41.9 47.5028 260.1 23.5764 16.3236 
+90.82 16.6366 83.3634 210.583 41.9043 47.5124 260.092 23.5799 16.3283 
+90.83 16.6333 83.3667 210.569 41.9086 47.522 260.084 23.5834 16.3329 
+90.84 16.6301 83.3699 210.555 41.9129 47.5317 260.075 23.5869 16.3376 
+90.85 16.6268 83.3732 210.542 41.9171 47.5413 260.067 23.5904 16.3422 
+90.86 16.6236 83.3764 210.528 41.9214 47.551 260.059 23.594 16.3469 
+90.87 16.6203 83.3797 210.514 41.9257 47.5606 260.051 23.5975 16.3516 
+90.88 16.617 83.383 210.5 41.93 47.5703 260.043 23.601 16.3562 
+90.89 16.6138 83.3862 210.486 41.9343 47.5799 260.035 23.6045 16.3609 
+90.9 16.6105 83.3895 210.472 41.9386 47.5896 260.026 23.6081 16.3655 
+90.91 16.6073 83.3927 210.458 41.9428 47.5993 260.018 23.6116 16.3702 
+90.92 16.604 83.396 210.444 41.9471 47.6089 260.01 23.6151 16.3749 
+90.93 16.6008 83.3992 210.43 41.9514 47.6186 260.002 23.6186 16.3796 
+90.94 16.5975 83.4025 210.416 41.9557 47.6282 259.994 23.6222 16.3842 
+90.95 16.5943 83.4057 210.402 41.96 47.6379 259.985 23.6257 16.3889 
+90.96 16.591 83.409 210.388 41.9643 47.6475 259.977 23.6292 16.3936 
+90.97 16.5878 83.4122 210.374 41.9685 47.6572 259.969 23.6328 16.3982 
+90.98 16.5845 83.4155 210.36 41.9728 47.6668 259.961 23.6363 16.4029 
+90.99 16.5813 83.4187 210.346 41.9771 47.6765 259.953 23.6398 16.4076 
+91 16.578 83.422 210.332 41.9814 47.6862 259.944 23.6433 16.4123 
+91.01 16.5748 83.4252 210.319 41.9857 47.6958 259.936 23.6469 16.417 
+91.02 16.5716 83.4284 210.305 41.9899 47.7055 259.928 23.6504 16.4217 
+91.03 16.5683 83.4317 210.291 41.9942 47.7151 259.92 23.6539 16.4263 
+91.04 16.5651 83.4349 210.277 41.9985 47.7248 259.912 23.6575 16.431 
+91.05 16.5618 83.4382 210.263 42.0028 47.7345 259.903 23.661 16.4357 
+91.06 16.5586 83.4414 210.249 42.0071 47.7441 259.895 23.6645 16.4404 
+91.07 16.5554 83.4446 210.235 42.0113 47.7538 259.887 23.6681 16.4451 
+91.08 16.5522 83.4478 210.221 42.0156 47.7635 259.879 23.6716 16.4498 
+91.09 16.5489 83.4511 210.207 42.0199 47.7731 259.87 23.6751 16.4545 
+91.1 16.5457 83.4543 210.193 42.0242 47.7828 259.862 23.6787 16.4592 
+91.11 16.5425 83.4575 210.179 42.0285 47.7925 259.854 23.6822 16.4639 
+91.12 16.5392 83.4608 210.165 42.0327 47.8021 259.846 23.6857 16.4686 
+91.13 16.536 83.464 210.151 42.037 47.8118 259.837 23.6893 16.4733 
+91.14 16.5328 83.4672 210.137 42.0413 47.8215 259.829 23.6928 16.478 
+91.15 16.5296 83.4704 210.123 42.0456 47.8311 259.821 23.6964 16.4827 
+91.16 16.5264 83.4736 210.109 42.0499 47.8408 259.813 23.6999 16.4874 
+91.17 16.5231 83.4769 210.095 42.0541 47.8505 259.804 23.7034 16.4921 
+91.18 16.5199 83.4801 210.081 42.0584 47.8602 259.796 23.707 16.4968 
+91.19 16.5167 83.4833 210.067 42.0627 47.8698 259.788 23.7105 16.5015 
+91.2 16.5135 83.4865 210.054 42.067 47.8795 259.78 23.7141 16.5062 
+91.21 16.5103 83.4897 210.04 42.0712 47.8892 259.771 23.7176 16.5109 
+91.22 16.5071 83.4929 210.026 42.0755 47.8989 259.763 23.7211 16.5157 
+91.23 16.5039 83.4961 210.012 42.0798 47.9085 259.755 23.7247 16.5204 
+91.24 16.5007 83.4993 209.998 42.0841 47.9182 259.747 23.7282 16.5251 
+91.25 16.4974 83.5026 209.984 42.0884 47.9279 259.738 23.7318 16.5298 
+91.26 16.4942 83.5058 209.97 42.0926 47.9376 259.73 23.7353 16.5345 
+91.27 16.491 83.509 209.956 42.0969 47.9473 259.722 23.7389 16.5393 
+91.28 16.4878 83.5122 209.942 42.1012 47.9569 259.714 23.7424 16.544 
+91.29 16.4846 83.5154 209.928 42.1055 47.9666 259.705 23.7459 16.5487 
+91.3 16.4814 83.5186 209.914 42.1097 47.9763 259.697 23.7495 16.5534 
+91.31 16.4782 83.5218 209.9 42.114 47.986 259.689 23.753 16.5582 
+91.32 16.475 83.525 209.886 42.1183 47.9957 259.681 23.7566 16.5629 
+91.33 16.4718 83.5282 209.872 42.1226 48.0053 259.672 23.7601 16.5676 
+91.34 16.4687 83.5313 209.858 42.1268 48.015 259.664 23.7637 16.5724 
+91.35 16.4655 83.5345 209.844 42.1311 48.0247 259.656 23.7672 16.5771 
+91.36 16.4623 83.5377 209.83 42.1354 48.0344 259.647 23.7708 16.5818 
+91.37 16.4591 83.5409 209.816 42.1397 48.0441 259.639 23.7743 16.5866 
+91.38 16.4559 83.5441 209.802 42.1439 48.0538 259.631 23.7779 16.5913 
+91.39 16.4527 83.5473 209.788 42.1482 48.0635 259.623 23.7814 16.596 
+91.4 16.4495 83.5505 209.774 42.1525 48.0731 259.614 23.785 16.6008 
+91.41 16.4463 83.5537 209.76 42.1567 48.0828 259.606 23.7885 16.6055 
+91.42 16.4432 83.5568 209.746 42.161 48.0925 259.598 23.7921 16.6103 
+91.43 16.44 83.56 209.732 42.1653 48.1022 259.589 23.7956 16.615 
+91.44 16.4368 83.5632 209.719 42.1696 48.1119 259.581 23.7992 16.6198 
+91.45 16.4336 83.5664 209.705 42.1738 48.1216 259.573 23.8028 16.6245 
+91.46 16.4304 83.5696 209.691 42.1781 48.1313 259.564 23.8063 16.6293 
+91.47 16.4273 83.5727 209.677 42.1824 48.141 259.556 23.8099 16.634 
+91.48 16.4241 83.5759 209.663 42.1866 48.1507 259.548 23.8134 16.6388 
+91.49 16.4209 83.5791 209.649 42.1909 48.1604 259.539 23.817 16.6435 
+91.5 16.4177 83.5823 209.635 42.1952 48.1701 259.531 23.8205 16.6483 
+91.51 16.4146 83.5854 209.621 42.1995 48.1798 259.523 23.8241 16.6531 
+91.52 16.4114 83.5886 209.607 42.2037 48.1895 259.515 23.8277 16.6578 
+91.53 16.4082 83.5918 209.593 42.208 48.1992 259.506 23.8312 16.6626 
+91.54 16.4051 83.5949 209.579 42.2123 48.2089 259.498 23.8348 16.6674 
+91.55 16.4019 83.5981 209.565 42.2165 48.2186 259.49 23.8383 16.6721 
+91.56 16.3988 83.6012 209.551 42.2208 48.2283 259.481 23.8419 16.6769 
+91.57 16.3956 83.6044 209.537 42.2251 48.238 259.473 23.8454 16.6817 
+91.58 16.3924 83.6076 209.523 42.2293 48.2477 259.465 23.849 16.6864 
+91.59 16.3893 83.6107 209.509 42.2336 48.2574 259.456 23.8526 16.6912 
+91.6 16.3861 83.6139 209.495 42.2379 48.2671 259.448 23.8561 16.696 
+91.61 16.383 83.617 209.481 42.2422 48.2768 259.44 23.8597 16.7007 
+91.62 16.3798 83.6202 209.467 42.2464 48.2865 259.431 23.8633 16.7055 
+91.63 16.3767 83.6233 209.453 42.2507 48.2962 259.423 23.8668 16.7103 
+91.64 16.3735 83.6265 209.439 42.255 48.3059 259.415 23.8704 16.7151 
+91.65 16.3704 83.6296 209.425 42.2592 48.3156 259.406 23.874 16.7199 
+91.66 16.3672 83.6328 209.411 42.2635 48.3253 259.398 23.8775 16.7246 
+91.67 16.3641 83.6359 209.397 42.2678 48.335 259.389 23.8811 16.7294 
+91.68 16.3609 83.6391 209.383 42.272 48.3447 259.381 23.8847 16.7342 
+91.69 16.3578 83.6422 209.369 42.2763 48.3544 259.373 23.8882 16.739 
+91.7 16.3546 83.6454 209.355 42.2806 48.3641 259.364 23.8918 16.7438 
+91.71 16.3515 83.6485 209.341 42.2848 48.3739 259.356 23.8954 16.7486 
+91.72 16.3483 83.6517 209.327 42.2891 48.3836 259.348 23.8989 16.7534 
+91.73 16.3452 83.6548 209.313 42.2934 48.3933 259.339 23.9025 16.7582 
+91.74 16.3421 83.6579 209.299 42.2976 48.403 259.331 23.9061 16.763 
+91.75 16.3389 83.6611 209.285 42.3019 48.4127 259.323 23.9096 16.7678 
+91.76 16.3358 83.6642 209.271 42.3062 48.4224 259.314 23.9132 16.7726 
+91.77 16.3327 83.6673 209.257 42.3104 48.4321 259.306 23.9168 16.7774 
+91.78 16.3295 83.6705 209.243 42.3147 48.4419 259.297 23.9204 16.7822 
+91.79 16.3264 83.6736 209.229 42.319 48.4516 259.289 23.9239 16.787 
+91.8 16.3233 83.6767 209.215 42.3232 48.4613 259.281 23.9275 16.7918 
+91.81 16.3202 83.6798 209.202 42.3275 48.471 259.272 23.9311 16.7966 
+91.82 16.317 83.683 209.188 42.3317 48.4807 259.264 23.9346 16.8014 
+91.83 16.3139 83.6861 209.174 42.336 48.4904 259.256 23.9382 16.8062 
+91.84 16.3108 83.6892 209.16 42.3403 48.5002 259.247 23.9418 16.811 
+91.85 16.3077 83.6923 209.146 42.3445 48.5099 259.239 23.9454 16.8158 
+91.86 16.3045 83.6955 209.132 42.3488 48.5196 259.23 23.9489 16.8206 
+91.87 16.3014 83.6986 209.118 42.3531 48.5293 259.222 23.9525 16.8255 
+91.88 16.2983 83.7017 209.104 42.3573 48.5391 259.214 23.9561 16.8303 
+91.89 16.2952 83.7048 209.09 42.3616 48.5488 259.205 23.9597 16.8351 
+91.9 16.2921 83.7079 209.076 42.3658 48.5585 259.197 23.9633 16.8399 
+91.91 16.289 83.711 209.062 42.3701 48.5682 259.188 23.9668 16.8447 
+91.92 16.2858 83.7142 209.048 42.3744 48.578 259.18 23.9704 16.8496 
+91.93 16.2827 83.7173 209.034 42.3786 48.5877 259.172 23.974 16.8544 
+91.94 16.2796 83.7204 209.02 42.3829 48.5974 259.163 23.9776 16.8592 
+91.95 16.2765 83.7235 209.006 42.3872 48.6071 259.155 23.9812 16.864 
+91.96 16.2734 83.7266 208.992 42.3914 48.6169 259.146 23.9847 16.8689 
+91.97 16.2703 83.7297 208.978 42.3957 48.6266 259.138 23.9883 16.8737 
+91.98 16.2672 83.7328 208.964 42.3999 48.6363 259.13 23.9919 16.8785 
+91.99 16.2641 83.7359 208.95 42.4042 48.6461 259.121 23.9955 16.8834 
+92 16.261 83.739 208.936 42.4085 48.6558 259.113 23.9991 16.8882 
+92.01 16.2579 83.7421 208.922 42.4127 48.6655 259.104 24.0027 16.8931 
+92.02 16.2548 83.7452 208.908 42.417 48.6753 259.096 24.0062 16.8979 
+92.03 16.2517 83.7483 208.894 42.4212 48.685 259.087 24.0098 16.9027 
+92.04 16.2486 83.7514 208.88 42.4255 48.6947 259.079 24.0134 16.9076 
+92.05 16.2455 83.7545 208.866 42.4298 48.7045 259.071 24.017 16.9124 
+92.06 16.2424 83.7576 208.852 42.434 48.7142 259.062 24.0206 16.9173 
+92.07 16.2393 83.7607 208.838 42.4383 48.7239 259.054 24.0242 16.9221 
+92.08 16.2363 83.7637 208.824 42.4425 48.7337 259.045 24.0278 16.927 
+92.09 16.2332 83.7668 208.81 42.4468 48.7434 259.037 24.0313 16.9318 
+92.1 16.2301 83.7699 208.796 42.451 48.7531 259.028 24.0349 16.9367 
+92.11 16.227 83.773 208.782 42.4553 48.7629 259.02 24.0385 16.9415 
+92.12 16.2239 83.7761 208.768 42.4596 48.7726 259.012 24.0421 16.9464 
+92.13 16.2208 83.7792 208.754 42.4638 48.7824 259.003 24.0457 16.9512 
+92.14 16.2177 83.7823 208.74 42.4681 48.7921 258.995 24.0493 16.9561 
+92.15 16.2147 83.7853 208.726 42.4723 48.8019 258.986 24.0529 16.961 
+92.16 16.2116 83.7884 208.712 42.4766 48.8116 258.978 24.0565 16.9658 
+92.17 16.2085 83.7915 208.698 42.4808 48.8213 258.969 24.0601 16.9707 
+92.18 16.2054 83.7946 208.684 42.4851 48.8311 258.961 24.0637 16.9755 
+92.19 16.2024 83.7976 208.67 42.4894 48.8408 258.952 24.0673 16.9804 
+92.2 16.1993 83.8007 208.656 42.4936 48.8506 258.944 24.0709 16.9853 
+92.21 16.1962 83.8038 208.642 42.4979 48.8603 258.935 24.0745 16.9901 
+92.22 16.1932 83.8068 208.628 42.5021 48.8701 258.927 24.078 16.995 
+92.23 16.1901 83.8099 208.614 42.5064 48.8798 258.918 24.0816 16.9999 
+92.24 16.187 83.813 208.6 42.5106 48.8896 258.91 24.0852 17.0048 
+92.25 16.1839 83.8161 208.586 42.5149 48.8993 258.902 24.0888 17.0096 
+92.26 16.1809 83.8191 208.572 42.5191 48.9091 258.893 24.0924 17.0145 
+92.27 16.1778 83.8222 208.558 42.5234 48.9188 258.885 24.096 17.0194 
+92.28 16.1748 83.8252 208.544 42.5277 48.9286 258.876 24.0996 17.0243 
+92.29 16.1717 83.8283 208.53 42.5319 48.9383 258.868 24.1032 17.0292 
+92.3 16.1686 83.8314 208.516 42.5362 48.9481 258.859 24.1068 17.034 
+92.31 16.1656 83.8344 208.502 42.5404 48.9578 258.851 24.1104 17.0389 
+92.32 16.1625 83.8375 208.488 42.5447 48.9676 258.842 24.114 17.0438 
+92.33 16.1595 83.8405 208.474 42.5489 48.9773 258.834 24.1176 17.0487 
+92.34 16.1564 83.8436 208.46 42.5532 48.9871 258.825 24.1212 17.0536 
+92.35 16.1534 83.8466 208.446 42.5574 48.9968 258.817 24.1248 17.0585 
+92.36 16.1503 83.8497 208.432 42.5617 49.0066 258.808 24.1284 17.0634 
+92.37 16.1473 83.8527 208.418 42.5659 49.0164 258.8 24.132 17.0683 
+92.38 16.1442 83.8558 208.404 42.5702 49.0261 258.791 24.1356 17.0732 
+92.39 16.1412 83.8588 208.39 42.5744 49.0359 258.783 24.1393 17.0781 
+92.4 16.1381 83.8619 208.376 42.5787 49.0456 258.774 24.1429 17.083 
+92.41 16.1351 83.8649 208.362 42.5829 49.0554 258.766 24.1465 17.0879 
+92.42 16.1321 83.8679 208.348 42.5872 49.0652 258.757 24.1501 17.0928 
+92.43 16.129 83.871 208.334 42.5914 49.0749 258.749 24.1537 17.0977 
+92.44 16.126 83.874 208.32 42.5957 49.0847 258.74 24.1573 17.1026 
+92.45 16.1229 83.8771 208.306 42.5999 49.0945 258.732 24.1609 17.1075 
+92.46 16.1199 83.8801 208.292 42.6042 49.1042 258.723 24.1645 17.1124 
+92.47 16.1169 83.8831 208.278 42.6084 49.114 258.715 24.1681 17.1173 
+92.48 16.1138 83.8862 208.264 42.6127 49.1237 258.706 24.1717 17.1222 
+92.49 16.1108 83.8892 208.25 42.6169 49.1335 258.698 24.1753 17.1271 
+92.5 16.1078 83.8922 208.236 42.6212 49.1433 258.689 24.1789 17.1321 
+92.51 16.1047 83.8953 208.222 42.6254 49.153 258.68 24.1825 17.137 
+92.52 16.1017 83.8983 208.208 42.6297 49.1628 258.672 24.1862 17.1419 
+92.53 16.0987 83.9013 208.193 42.6339 49.1726 258.663 24.1898 17.1468 
+92.54 16.0957 83.9043 208.179 42.6382 49.1824 258.655 24.1934 17.1517 
+92.55 16.0926 83.9074 208.165 42.6424 49.1921 258.646 24.197 17.1567 
+92.56 16.0896 83.9104 208.151 42.6467 49.2019 258.638 24.2006 17.1616 
+92.57 16.0866 83.9134 208.137 42.6509 49.2117 258.629 24.2042 17.1665 
+92.58 16.0836 83.9164 208.123 42.6552 49.2214 258.621 24.2078 17.1714 
+92.59 16.0806 83.9194 208.109 42.6594 49.2312 258.612 24.2115 17.1764 
+92.6 16.0775 83.9225 208.095 42.6637 49.241 258.604 24.2151 17.1813 
+92.61 16.0745 83.9255 208.081 42.6679 49.2508 258.595 24.2187 17.1862 
+92.62 16.0715 83.9285 208.067 42.6722 49.2605 258.587 24.2223 17.1912 
+92.63 16.0685 83.9315 208.053 42.6764 49.2703 258.578 24.2259 17.1961 
+92.64 16.0655 83.9345 208.039 42.6806 49.2801 258.569 24.2295 17.201 
+92.65 16.0625 83.9375 208.025 42.6849 49.2899 258.561 24.2332 17.206 
+92.66 16.0595 83.9405 208.011 42.6891 49.2996 258.552 24.2368 17.2109 
+92.67 16.0565 83.9435 207.997 42.6934 49.3094 258.544 24.2404 17.2159 
+92.68 16.0535 83.9465 207.983 42.6976 49.3192 258.535 24.244 17.2208 
+92.69 16.0505 83.9495 207.969 42.7019 49.329 258.527 24.2476 17.2257 
+92.7 16.0474 83.9526 207.955 42.7061 49.3388 258.518 24.2513 17.2307 
+92.71 16.0444 83.9556 207.941 42.7104 49.3485 258.509 24.2549 17.2356 
+92.72 16.0414 83.9586 207.927 42.7146 49.3583 258.501 24.2585 17.2406 
+92.73 16.0384 83.9616 207.913 42.7189 49.3681 258.492 24.2621 17.2455 
+92.74 16.0355 83.9645 207.899 42.7231 49.3779 258.484 24.2657 17.2505 
+92.75 16.0325 83.9675 207.885 42.7273 49.3877 258.475 24.2694 17.2555 
+92.76 16.0295 83.9705 207.871 42.7316 49.3975 258.467 24.273 17.2604 
+92.77 16.0265 83.9735 207.857 42.7358 49.4072 258.458 24.2766 17.2654 
+92.78 16.0235 83.9765 207.843 42.7401 49.417 258.449 24.2802 17.2703 
+92.79 16.0205 83.9795 207.829 42.7443 49.4268 258.441 24.2839 17.2753 
+92.8 16.0175 83.9825 207.815 42.7486 49.4366 258.432 24.2875 17.2802 
+92.81 16.0145 83.9855 207.801 42.7528 49.4464 258.424 24.2911 17.2852 
+92.82 16.0115 83.9885 207.787 42.757 49.4562 258.415 24.2947 17.2902 
+92.83 16.0085 83.9915 207.773 42.7613 49.466 258.406 24.2984 17.2951 
+92.84 16.0056 83.9944 207.759 42.7655 49.4758 258.398 24.302 17.3001 
+92.85 16.0026 83.9974 207.745 42.7698 49.4856 258.389 24.3056 17.3051 
+92.86 15.9996 84.0004 207.731 42.774 49.4953 258.381 24.3093 17.3101 
+92.87 15.9966 84.0034 207.717 42.7782 49.5051 258.372 24.3129 17.315 
+92.88 15.9936 84.0064 207.703 42.7825 49.5149 258.363 24.3165 17.32 
+92.89 15.9907 84.0093 207.689 42.7867 49.5247 258.355 24.3202 17.325 
+92.9 15.9877 84.0123 207.675 42.791 49.5345 258.346 24.3238 17.33 
+92.91 15.9847 84.0153 207.66 42.7952 49.5443 258.338 24.3274 17.3349 
+92.92 15.9817 84.0183 207.646 42.7994 49.5541 258.329 24.331 17.3399 
+92.93 15.9788 84.0212 207.632 42.8037 49.5639 258.32 24.3347 17.3449 
+92.94 15.9758 84.0242 207.618 42.8079 49.5737 258.312 24.3383 17.3499 
+92.95 15.9728 84.0272 207.604 42.8122 49.5835 258.303 24.3419 17.3549 
+92.96 15.9699 84.0301 207.59 42.8164 49.5933 258.295 24.3456 17.3599 
+92.97 15.9669 84.0331 207.576 42.8206 49.6031 258.286 24.3492 17.3649 
+92.98 15.9639 84.0361 207.562 42.8249 49.6129 258.277 24.3529 17.3699 
+92.99 15.961 84.039 207.548 42.8291 49.6227 258.269 24.3565 17.3748 
+93 15.958 84.042 207.534 42.8334 49.6325 258.26 24.3601 17.3798 
+93.01 15.955 84.045 207.52 42.8376 49.6423 258.251 24.3638 17.3848 
+93.02 15.9521 84.0479 207.506 42.8418 49.6521 258.243 24.3674 17.3898 
+93.03 15.9491 84.0509 207.492 42.8461 49.6619 258.234 24.371 17.3948 
+93.04 15.9462 84.0538 207.478 42.8503 49.6717 258.225 24.3747 17.3998 
+93.05 15.9432 84.0568 207.464 42.8545 49.6815 258.217 24.3783 17.4048 
+93.06 15.9403 84.0597 207.45 42.8588 49.6913 258.208 24.382 17.4098 
+93.07 15.9373 84.0627 207.436 42.863 49.7011 258.2 24.3856 17.4149 
+93.08 15.9344 84.0656 207.422 42.8673 49.7109 258.191 24.3892 17.4199 
+93.09 15.9314 84.0686 207.408 42.8715 49.7207 258.182 24.3929 17.4249 
+93.1 15.9285 84.0715 207.394 42.8757 49.7306 258.174 24.3965 17.4299 
+93.11 15.9255 84.0745 207.38 42.88 49.7404 258.165 24.4002 17.4349 
+93.12 15.9226 84.0774 207.366 42.8842 49.7502 258.156 24.4038 17.4399 
+93.13 15.9196 84.0804 207.352 42.8884 49.76 258.148 24.4074 17.4449 
+93.14 15.9167 84.0833 207.338 42.8927 49.7698 258.139 24.4111 17.4499 
+93.15 15.9137 84.0863 207.323 42.8969 49.7796 258.13 24.4147 17.455 
+93.16 15.9108 84.0892 207.309 42.9011 49.7894 258.122 24.4184 17.46 
+93.17 15.9079 84.0921 207.295 42.9054 49.7992 258.113 24.422 17.465 
+93.18 15.9049 84.0951 207.281 42.9096 49.809 258.104 24.4257 17.47 
+93.19 15.902 84.098 207.267 42.9138 49.8189 258.096 24.4293 17.4751 
+93.2 15.8991 84.1009 207.253 42.9181 49.8287 258.087 24.433 17.4801 
+93.21 15.8961 84.1039 207.239 42.9223 49.8385 258.078 24.4366 17.4851 
+93.22 15.8932 84.1068 207.225 42.9265 49.8483 258.07 24.4403 17.4901 
+93.23 15.8903 84.1097 207.211 42.9308 49.8581 258.061 24.4439 17.4952 
+93.24 15.8873 84.1127 207.197 42.935 49.8679 258.052 24.4476 17.5002 
+93.25 15.8844 84.1156 207.183 42.9392 49.8778 258.044 24.4512 17.5052 
+93.26 15.8815 84.1185 207.169 42.9435 49.8876 258.035 24.4549 17.5103 
+93.27 15.8786 84.1214 207.155 42.9477 49.8974 258.026 24.4585 17.5153 
+93.28 15.8756 84.1244 207.141 42.9519 49.9072 258.017 24.4622 17.5204 
+93.29 15.8727 84.1273 207.127 42.9562 49.917 258.009 24.4658 17.5254 
+93.3 15.8698 84.1302 207.113 42.9604 49.9269 258 24.4695 17.5304 
+93.31 15.8669 84.1331 207.099 42.9646 49.9367 257.991 24.4731 17.5355 
+93.32 15.864 84.136 207.085 42.9689 49.9465 257.983 24.4768 17.5405 
+93.33 15.861 84.139 207.071 42.9731 49.9563 257.974 24.4804 17.5456 
+93.34 15.8581 84.1419 207.057 42.9773 49.9662 257.965 24.4841 17.5506 
+93.35 15.8552 84.1448 207.042 42.9815 49.976 257.957 24.4877 17.5557 
+93.36 15.8523 84.1477 207.028 42.9858 49.9858 257.948 24.4914 17.5607 
+93.37 15.8494 84.1506 207.014 42.99 49.9956 257.939 24.495 17.5658 
+93.38 15.8465 84.1535 207 42.9942 50.0055 257.93 24.4987 17.5708 
+93.39 15.8436 84.1564 206.986 42.9985 50.0153 257.922 24.5024 17.5759 
+93.4 15.8407 84.1593 206.972 43.0027 50.0251 257.913 24.506 17.581 
+93.41 15.8378 84.1622 206.958 43.0069 50.0349 257.904 24.5097 17.586 
+93.42 15.8349 84.1651 206.944 43.0111 50.0448 257.896 24.5133 17.5911 
+93.43 15.832 84.168 206.93 43.0154 50.0546 257.887 24.517 17.5961 
+93.44 15.8291 84.1709 206.916 43.0196 50.0644 257.878 24.5206 17.6012 
+93.45 15.8262 84.1738 206.902 43.0238 50.0743 257.869 24.5243 17.6063 
+93.46 15.8233 84.1767 206.888 43.0281 50.0841 257.861 24.528 17.6113 
+93.47 15.8204 84.1796 206.874 43.0323 50.0939 257.852 24.5316 17.6164 
+93.48 15.8175 84.1825 206.86 43.0365 50.1038 257.843 24.5353 17.6215 
+93.49 15.8146 84.1854 206.846 43.0407 50.1136 257.834 24.539 17.6266 
+93.5 15.8117 84.1883 206.832 43.045 50.1234 257.826 24.5426 17.6316 
+93.51 15.8088 84.1912 206.818 43.0492 50.1333 257.817 24.5463 17.6367 
+93.52 15.8059 84.1941 206.803 43.0534 50.1431 257.808 24.5499 17.6418 
+93.53 15.803 84.197 206.789 43.0576 50.1529 257.8 24.5536 17.6469 
+93.54 15.8001 84.1999 206.775 43.0619 50.1628 257.791 24.5573 17.6519 
+93.55 15.7972 84.2028 206.761 43.0661 50.1726 257.782 24.5609 17.657 
+93.56 15.7944 84.2056 206.747 43.0703 50.1825 257.773 24.5646 17.6621 
+93.57 15.7915 84.2085 206.733 43.0745 50.1923 257.765 24.5683 17.6672 
+93.58 15.7886 84.2114 206.719 43.0788 50.2021 257.756 24.5719 17.6723 
+93.59 15.7857 84.2143 206.705 43.083 50.212 257.747 24.5756 17.6774 
+93.6 15.7828 84.2172 206.691 43.0872 50.2218 257.738 24.5793 17.6825 
+93.61 15.7799 84.2201 206.677 43.0914 50.2317 257.73 24.5829 17.6876 
+93.62 15.7771 84.2229 206.663 43.0957 50.2415 257.721 24.5866 17.6927 
+93.63 15.7742 84.2258 206.649 43.0999 50.2514 257.712 24.5903 17.6978 
+93.64 15.7713 84.2287 206.635 43.1041 50.2612 257.703 24.5939 17.7028 
+93.65 15.7684 84.2316 206.621 43.1083 50.271 257.694 24.5976 17.7079 
+93.66 15.7656 84.2344 206.607 43.1126 50.2809 257.686 24.6013 17.713 
+93.67 15.7627 84.2373 206.592 43.1168 50.2907 257.677 24.605 17.7182 
+93.68 15.7598 84.2402 206.578 43.121 50.3006 257.668 24.6086 17.7233 
+93.69 15.757 84.243 206.564 43.1252 50.3104 257.659 24.6123 17.7284 
+93.7 15.7541 84.2459 206.55 43.1294 50.3203 257.651 24.616 17.7335 
+93.71 15.7512 84.2488 206.536 43.1337 50.3301 257.642 24.6196 17.7386 
+93.72 15.7484 84.2516 206.522 43.1379 50.34 257.633 24.6233 17.7437 
+93.73 15.7455 84.2545 206.508 43.1421 50.3498 257.624 24.627 17.7488 
+93.74 15.7427 84.2573 206.494 43.1463 50.3597 257.615 24.6307 17.7539 
+93.75 15.7398 84.2602 206.48 43.1506 50.3695 257.607 24.6343 17.759 
+93.76 15.7369 84.2631 206.466 43.1548 50.3794 257.598 24.638 17.7641 
+93.77 15.7341 84.2659 206.452 43.159 50.3892 257.589 24.6417 17.7693 
+93.78 15.7312 84.2688 206.438 43.1632 50.3991 257.58 24.6454 17.7744 
+93.79 15.7284 84.2716 206.424 43.1674 50.409 257.571 24.6491 17.7795 
+93.8 15.7255 84.2745 206.41 43.1717 50.4188 257.563 24.6527 17.7846 
+93.81 15.7227 84.2773 206.395 43.1759 50.4287 257.554 24.6564 17.7898 
+93.82 15.7198 84.2802 206.381 43.1801 50.4385 257.545 24.6601 17.7949 
+93.83 15.717 84.283 206.367 43.1843 50.4484 257.536 24.6638 17.8 
+93.84 15.7141 84.2859 206.353 43.1885 50.4582 257.527 24.6674 17.8051 
+93.85 15.7113 84.2887 206.339 43.1928 50.4681 257.519 24.6711 17.8103 
+93.86 15.7084 84.2916 206.325 43.197 50.478 257.51 24.6748 17.8154 
+93.87 15.7056 84.2944 206.311 43.2012 50.4878 257.501 24.6785 17.8205 
+93.88 15.7028 84.2972 206.297 43.2054 50.4977 257.492 24.6822 17.8257 
+93.89 15.6999 84.3001 206.283 43.2096 50.5075 257.483 24.6859 17.8308 
+93.9 15.6971 84.3029 206.269 43.2138 50.5174 257.475 24.6895 17.836 
+93.91 15.6942 84.3058 206.255 43.2181 50.5273 257.466 24.6932 17.8411 
+93.92 15.6914 84.3086 206.241 43.2223 50.5371 257.457 24.6969 17.8462 
+93.93 15.6886 84.3114 206.227 43.2265 50.547 257.448 24.7006 17.8514 
+93.94 15.6857 84.3143 206.212 43.2307 50.5568 257.439 24.7043 17.8565 
+93.95 15.6829 84.3171 206.198 43.2349 50.5667 257.43 24.708 17.8617 
+93.96 15.6801 84.3199 206.184 43.2391 50.5766 257.422 24.7116 17.8668 
+93.97 15.6772 84.3228 206.17 43.2434 50.5864 257.413 24.7153 17.872 
+93.98 15.6744 84.3256 206.156 43.2476 50.5963 257.404 24.719 17.8771 
+93.99 15.6716 84.3284 206.142 43.2518 50.6062 257.395 24.7227 17.8823 
+94 15.6688 84.3312 206.128 43.256 50.6161 257.386 24.7264 17.8874 
+94.01 15.6659 84.3341 206.114 43.2602 50.6259 257.377 24.7301 17.8926 
+94.02 15.6631 84.3369 206.1 43.2644 50.6358 257.368 24.7338 17.8978 
+94.03 15.6603 84.3397 206.086 43.2686 50.6457 257.36 24.7375 17.9029 
+94.04 15.6575 84.3425 206.072 43.2729 50.6555 257.351 24.7412 17.9081 
+94.05 15.6546 84.3454 206.058 43.2771 50.6654 257.342 24.7448 17.9132 
+94.06 15.6518 84.3482 206.043 43.2813 50.6753 257.333 24.7485 17.9184 
+94.07 15.649 84.351 206.029 43.2855 50.6851 257.324 24.7522 17.9236 
+94.08 15.6462 84.3538 206.015 43.2897 50.695 257.315 24.7559 17.9287 
+94.09 15.6434 84.3566 206.001 43.2939 50.7049 257.306 24.7596 17.9339 
+94.1 15.6406 84.3594 205.987 43.2981 50.7148 257.298 24.7633 17.9391 
+94.11 15.6378 84.3622 205.973 43.3024 50.7246 257.289 24.767 17.9443 
+94.12 15.635 84.365 205.959 43.3066 50.7345 257.28 24.7707 17.9494 
+94.13 15.6321 84.3679 205.945 43.3108 50.7444 257.271 24.7744 17.9546 
+94.14 15.6293 84.3707 205.931 43.315 50.7543 257.262 24.7781 17.9598 
+94.15 15.6265 84.3735 205.917 43.3192 50.7642 257.253 24.7818 17.965 
+94.16 15.6237 84.3763 205.903 43.3234 50.774 257.244 24.7855 17.9702 
+94.17 15.6209 84.3791 205.888 43.3276 50.7839 257.235 24.7892 17.9753 
+94.18 15.6181 84.3819 205.874 43.3318 50.7938 257.227 24.7929 17.9805 
+94.19 15.6153 84.3847 205.86 43.336 50.8037 257.218 24.7966 17.9857 
+94.2 15.6125 84.3875 205.846 43.3403 50.8136 257.209 24.8003 17.9909 
+94.21 15.6097 84.3903 205.832 43.3445 50.8234 257.2 24.804 17.9961 
+94.22 15.6069 84.3931 205.818 43.3487 50.8333 257.191 24.8077 18.0013 
+94.23 15.6041 84.3959 205.804 43.3529 50.8432 257.182 24.8114 18.0065 
+94.24 15.6013 84.3987 205.79 43.3571 50.8531 257.173 24.8151 18.0117 
+94.25 15.5986 84.4014 205.776 43.3613 50.863 257.164 24.8188 18.0169 
+94.26 15.5958 84.4042 205.762 43.3655 50.8729 257.155 24.8225 18.0221 
+94.27 15.593 84.407 205.748 43.3697 50.8827 257.147 24.8262 18.0273 
+94.28 15.5902 84.4098 205.733 43.3739 50.8926 257.138 24.8299 18.0325 
+94.29 15.5874 84.4126 205.719 43.3781 50.9025 257.129 24.8336 18.0377 
+94.3 15.5846 84.4154 205.705 43.3823 50.9124 257.12 24.8373 18.0429 
+94.31 15.5818 84.4182 205.691 43.3866 50.9223 257.111 24.841 18.0481 
+94.32 15.5791 84.4209 205.677 43.3908 50.9322 257.102 24.8447 18.0533 
+94.33 15.5763 84.4237 205.663 43.395 50.9421 257.093 24.8484 18.0585 
+94.34 15.5735 84.4265 205.649 43.3992 50.952 257.084 24.8521 18.0637 
+94.35 15.5707 84.4293 205.635 43.4034 50.9619 257.075 24.8558 18.0689 
+94.36 15.5679 84.4321 205.621 43.4076 50.9718 257.066 24.8595 18.0741 
+94.37 15.5652 84.4348 205.607 43.4118 50.9816 257.057 24.8632 18.0793 
+94.38 15.5624 84.4376 205.592 43.416 50.9915 257.049 24.8669 18.0846 
+94.39 15.5596 84.4404 205.578 43.4202 51.0014 257.04 24.8706 18.0898 
+94.4 15.5568 84.4432 205.564 43.4244 51.0113 257.031 24.8743 18.095 
+94.41 15.5541 84.4459 205.55 43.4286 51.0212 257.022 24.8781 18.1002 
+94.42 15.5513 84.4487 205.536 43.4328 51.0311 257.013 24.8818 18.1054 
+94.43 15.5485 84.4515 205.522 43.437 51.041 257.004 24.8855 18.1107 
+94.44 15.5458 84.4542 205.508 43.4412 51.0509 256.995 24.8892 18.1159 
+94.45 15.543 84.457 205.494 43.4454 51.0608 256.986 24.8929 18.1211 
+94.46 15.5402 84.4598 205.48 43.4496 51.0707 256.977 24.8966 18.1264 
+94.47 15.5375 84.4625 205.466 43.4538 51.0806 256.968 24.9003 18.1316 
+94.48 15.5347 84.4653 205.451 43.4581 51.0905 256.959 24.904 18.1368 
+94.49 15.532 84.468 205.437 43.4623 51.1004 256.95 24.9077 18.1421 
+94.5 15.5292 84.4708 205.423 43.4665 51.1103 256.941 24.9115 18.1473 
+94.51 15.5264 84.4736 205.409 43.4707 51.1202 256.932 24.9152 18.1525 
+94.52 15.5237 84.4763 205.395 43.4749 51.1301 256.923 24.9189 18.1578 
+94.53 15.5209 84.4791 205.381 43.4791 51.14 256.914 24.9226 18.163 
+94.54 15.5182 84.4818 205.367 43.4833 51.1499 256.905 24.9263 18.1683 
+94.55 15.5154 84.4846 205.353 43.4875 51.1598 256.896 24.93 18.1735 
+94.56 15.5127 84.4873 205.339 43.4917 51.1697 256.887 24.9338 18.1788 
+94.57 15.5099 84.4901 205.324 43.4959 51.1796 256.879 24.9375 18.184 
+94.58 15.5072 84.4928 205.31 43.5001 51.1895 256.87 24.9412 18.1893 
+94.59 15.5044 84.4956 205.296 43.5043 51.1995 256.861 24.9449 18.1945 
+94.6 15.5017 84.4983 205.282 43.5085 51.2094 256.852 24.9486 18.1998 
+94.61 15.4989 84.5011 205.268 43.5127 51.2193 256.843 24.9523 18.205 
+94.62 15.4962 84.5038 205.254 43.5169 51.2292 256.834 24.9561 18.2103 
+94.63 15.4935 84.5065 205.24 43.5211 51.2391 256.825 24.9598 18.2155 
+94.64 15.4907 84.5093 205.226 43.5253 51.249 256.816 24.9635 18.2208 
+94.65 15.488 84.512 205.212 43.5295 51.2589 256.807 24.9672 18.2261 
+94.66 15.4852 84.5148 205.197 43.5337 51.2688 256.798 24.9709 18.2313 
+94.67 15.4825 84.5175 205.183 43.5379 51.2787 256.789 24.9747 18.2366 
+94.68 15.4798 84.5202 205.169 43.5421 51.2886 256.78 24.9784 18.2418 
+94.69 15.477 84.523 205.155 43.5463 51.2986 256.771 24.9821 18.2471 
+94.7 15.4743 84.5257 205.141 43.5505 51.3085 256.762 24.9858 18.2524 
+94.71 15.4716 84.5284 205.127 43.5547 51.3184 256.753 24.9896 18.2577 
+94.72 15.4688 84.5312 205.113 43.5589 51.3283 256.744 24.9933 18.2629 
+94.73 15.4661 84.5339 205.099 43.5631 51.3382 256.735 24.997 18.2682 
+94.74 15.4634 84.5366 205.085 43.5673 51.3481 256.726 25.0007 18.2735 
+94.75 15.4607 84.5393 205.07 43.5715 51.3581 256.717 25.0045 18.2788 
+94.76 15.4579 84.5421 205.056 43.5757 51.368 256.708 25.0082 18.284 
+94.77 15.4552 84.5448 205.042 43.5799 51.3779 256.699 25.0119 18.2893 
+94.78 15.4525 84.5475 205.028 43.5841 51.3878 256.69 25.0156 18.2946 
+94.79 15.4498 84.5502 205.014 43.5883 51.3977 256.681 25.0194 18.2999 
+94.8 15.4471 84.5529 205 43.5925 51.4076 256.672 25.0231 18.3052 
+94.81 15.4443 84.5557 204.986 43.5966 51.4176 256.663 25.0268 18.3105 
+94.82 15.4416 84.5584 204.972 43.6008 51.4275 256.654 25.0306 18.3158 
+94.83 15.4389 84.5611 204.958 43.605 51.4374 256.645 25.0343 18.321 
+94.84 15.4362 84.5638 204.943 43.6092 51.4473 256.636 25.038 18.3263 
+94.85 15.4335 84.5665 204.929 43.6134 51.4573 256.627 25.0418 18.3316 
+94.86 15.4308 84.5692 204.915 43.6176 51.4672 256.618 25.0455 18.3369 
+94.87 15.4281 84.5719 204.901 43.6218 51.4771 256.609 25.0492 18.3422 
+94.88 15.4254 84.5746 204.887 43.626 51.487 256.6 25.053 18.3475 
+94.89 15.4226 84.5774 204.873 43.6302 51.497 256.59 25.0567 18.3528 
+94.9 15.4199 84.5801 204.859 43.6344 51.5069 256.581 25.0604 18.3581 
+94.91 15.4172 84.5828 204.845 43.6386 51.5168 256.572 25.0642 18.3634 
+94.92 15.4145 84.5855 204.83 43.6428 51.5267 256.563 25.0679 18.3687 
+94.93 15.4118 84.5882 204.816 43.647 51.5367 256.554 25.0716 18.374 
+94.94 15.4091 84.5909 204.802 43.6512 51.5466 256.545 25.0754 18.3794 
+94.95 15.4064 84.5936 204.788 43.6554 51.5565 256.536 25.0791 18.3847 
+94.96 15.4037 84.5963 204.774 43.6596 51.5665 256.527 25.0828 18.39 
+94.97 15.401 84.599 204.76 43.6638 51.5764 256.518 25.0866 18.3953 
+94.98 15.3983 84.6017 204.746 43.6679 51.5863 256.509 25.0903 18.4006 
+94.99 15.3956 84.6044 204.732 43.6721 51.5963 256.5 25.094 18.4059 
+95 15.393 84.607 204.717 43.6763 51.6062 256.491 25.0978 18.4112 
+95.01 15.3903 84.6097 204.703 43.6805 51.6161 256.482 25.1015 18.4166 
+95.02 15.3876 84.6124 204.689 43.6847 51.6261 256.473 25.1053 18.4219 
+95.03 15.3849 84.6151 204.675 43.6889 51.636 256.464 25.109 18.4272 
+95.04 15.3822 84.6178 204.661 43.6931 51.6459 256.455 25.1127 18.4325 
+95.05 15.3795 84.6205 204.647 43.6973 51.6559 256.446 25.1165 18.4379 
+95.06 15.3768 84.6232 204.633 43.7015 51.6658 256.437 25.1202 18.4432 
+95.07 15.3741 84.6259 204.619 43.7057 51.6757 256.427 25.124 18.4485 
+95.08 15.3715 84.6285 204.604 43.7099 51.6857 256.418 25.1277 18.4539 
+95.09 15.3688 84.6312 204.59 43.714 51.6956 256.409 25.1315 18.4592 
+95.1 15.3661 84.6339 204.576 43.7182 51.7056 256.4 25.1352 18.4645 
+95.11 15.3634 84.6366 204.562 43.7224 51.7155 256.391 25.1389 18.4699 
+95.12 15.3607 84.6393 204.548 43.7266 51.7254 256.382 25.1427 18.4752 
+95.13 15.3581 84.6419 204.534 43.7308 51.7354 256.373 25.1464 18.4805 
+95.14 15.3554 84.6446 204.52 43.735 51.7453 256.364 25.1502 18.4859 
+95.15 15.3527 84.6473 204.506 43.7392 51.7553 256.355 25.1539 18.4912 
+95.16 15.3501 84.6499 204.491 43.7434 51.7652 256.346 25.1577 18.4966 
+95.17 15.3474 84.6526 204.477 43.7475 51.7752 256.337 25.1614 18.5019 
+95.18 15.3447 84.6553 204.463 43.7517 51.7851 256.328 25.1652 18.5073 
+95.19 15.342 84.658 204.449 43.7559 51.795 256.318 25.1689 18.5126 
+95.2 15.3394 84.6606 204.435 43.7601 51.805 256.309 25.1727 18.518 
+95.21 15.3367 84.6633 204.421 43.7643 51.8149 256.3 25.1764 18.5233 
+95.22 15.3341 84.6659 204.407 43.7685 51.8249 256.291 25.1802 18.5287 
+95.23 15.3314 84.6686 204.392 43.7727 51.8348 256.282 25.1839 18.534 
+95.24 15.3287 84.6713 204.378 43.7769 51.8448 256.273 25.1877 18.5394 
+95.25 15.3261 84.6739 204.364 43.781 51.8547 256.264 25.1914 18.5448 
+95.26 15.3234 84.6766 204.35 43.7852 51.8647 256.255 25.1952 18.5501 
+95.27 15.3208 84.6792 204.336 43.7894 51.8746 256.246 25.1989 18.5555 
+95.28 15.3181 84.6819 204.322 43.7936 51.8846 256.236 25.2027 18.5609 
+95.29 15.3154 84.6846 204.308 43.7978 51.8945 256.227 25.2064 18.5662 
+95.3 15.3128 84.6872 204.294 43.802 51.9045 256.218 25.2102 18.5716 
+95.31 15.3101 84.6899 204.279 43.8062 51.9144 256.209 25.2139 18.577 
+95.32 15.3075 84.6925 204.265 43.8103 51.9244 256.2 25.2177 18.5823 
+95.33 15.3048 84.6952 204.251 43.8145 51.9343 256.191 25.2215 18.5877 
+95.34 15.3022 84.6978 204.237 43.8187 51.9443 256.182 25.2252 18.5931 
+95.35 15.2995 84.7005 204.223 43.8229 51.9543 256.173 25.229 18.5985 
+95.36 15.2969 84.7031 204.209 43.8271 51.9642 256.163 25.2327 18.6038 
+95.37 15.2943 84.7057 204.195 43.8313 51.9742 256.154 25.2365 18.6092 
+95.38 15.2916 84.7084 204.18 43.8354 51.9841 256.145 25.2402 18.6146 
+95.39 15.289 84.711 204.166 43.8396 51.9941 256.136 25.244 18.62 
+95.4 15.2863 84.7137 204.152 43.8438 52.004 256.127 25.2478 18.6254 
+95.41 15.2837 84.7163 204.138 43.848 52.014 256.118 25.2515 18.6308 
+95.42 15.2811 84.7189 204.124 43.8522 52.024 256.109 25.2553 18.6361 
+95.43 15.2784 84.7216 204.11 43.8563 52.0339 256.099 25.259 18.6415 
+95.44 15.2758 84.7242 204.096 43.8605 52.0439 256.09 25.2628 18.6469 
+95.45 15.2732 84.7268 204.081 43.8647 52.0538 256.081 25.2666 18.6523 
+95.46 15.2705 84.7295 204.067 43.8689 52.0638 256.072 25.2703 18.6577 
+95.47 15.2679 84.7321 204.053 43.8731 52.0738 256.063 25.2741 18.6631 
+95.48 15.2653 84.7347 204.039 43.8772 52.0837 256.054 25.2778 18.6685 
+95.49 15.2626 84.7374 204.025 43.8814 52.0937 256.044 25.2816 18.6739 
+95.5 15.26 84.74 204.011 43.8856 52.1037 256.035 25.2854 18.6793 
+95.51 15.2574 84.7426 203.997 43.8898 52.1136 256.026 25.2891 18.6847 
+95.52 15.2548 84.7452 203.982 43.894 52.1236 256.017 25.2929 18.6901 
+95.53 15.2521 84.7479 203.968 43.8981 52.1336 256.008 25.2967 18.6955 
+95.54 15.2495 84.7505 203.954 43.9023 52.1435 255.999 25.3004 18.7009 
+95.55 15.2469 84.7531 203.94 43.9065 52.1535 255.989 25.3042 18.7063 
+95.56 15.2443 84.7557 203.926 43.9107 52.1635 255.98 25.308 18.7118 
+95.57 15.2417 84.7583 203.912 43.9149 52.1734 255.971 25.3117 18.7172 
+95.58 15.239 84.761 203.898 43.919 52.1834 255.962 25.3155 18.7226 
+95.59 15.2364 84.7636 203.883 43.9232 52.1934 255.953 25.3193 18.728 
+95.6 15.2338 84.7662 203.869 43.9274 52.2033 255.944 25.323 18.7334 
+95.61 15.2312 84.7688 203.855 43.9316 52.2133 255.934 25.3268 18.7388 
+95.62 15.2286 84.7714 203.841 43.9357 52.2233 255.925 25.3306 18.7443 
+95.63 15.226 84.774 203.827 43.9399 52.2333 255.916 25.3343 18.7497 
+95.64 15.2234 84.7766 203.813 43.9441 52.2432 255.907 25.3381 18.7551 
+95.65 15.2208 84.7792 203.799 43.9483 52.2532 255.898 25.3419 18.7605 
+95.66 15.2181 84.7819 203.784 43.9524 52.2632 255.888 25.3457 18.766 
+95.67 15.2155 84.7845 203.77 43.9566 52.2732 255.879 25.3494 18.7714 
+95.68 15.2129 84.7871 203.756 43.9608 52.2831 255.87 25.3532 18.7768 
+95.69 15.2103 84.7897 203.742 43.965 52.2931 255.861 25.357 18.7823 
+95.7 15.2077 84.7923 203.728 43.9691 52.3031 255.852 25.3607 18.7877 
+95.71 15.2051 84.7949 203.714 43.9733 52.3131 255.842 25.3645 18.7931 
+95.72 15.2025 84.7975 203.699 43.9775 52.323 255.833 25.3683 18.7986 
+95.73 15.1999 84.8001 203.685 43.9817 52.333 255.824 25.3721 18.804 
+95.74 15.1973 84.8027 203.671 43.9858 52.343 255.815 25.3758 18.8095 
+95.75 15.1947 84.8053 203.657 43.99 52.353 255.805 25.3796 18.8149 
+95.76 15.1922 84.8078 203.643 43.9942 52.363 255.796 25.3834 18.8203 
+95.77 15.1896 84.8104 203.629 43.9984 52.3729 255.787 25.3872 18.8258 
+95.78 15.187 84.813 203.615 44.0025 52.3829 255.778 25.391 18.8312 
+95.79 15.1844 84.8156 203.6 44.0067 52.3929 255.769 25.3947 18.8367 
+95.8 15.1818 84.8182 203.586 44.0109 52.4029 255.759 25.3985 18.8421 
+95.81 15.1792 84.8208 203.572 44.0151 52.4129 255.75 25.4023 18.8476 
+95.82 15.1766 84.8234 203.558 44.0192 52.4229 255.741 25.4061 18.853 
+95.83 15.174 84.826 203.544 44.0234 52.4328 255.732 25.4099 18.8585 
+95.84 15.1715 84.8285 203.53 44.0276 52.4428 255.722 25.4136 18.864 
+95.85 15.1689 84.8311 203.515 44.0317 52.4528 255.713 25.4174 18.8694 
+95.86 15.1663 84.8337 203.501 44.0359 52.4628 255.704 25.4212 18.8749 
+95.87 15.1637 84.8363 203.487 44.0401 52.4728 255.695 25.425 18.8803 
+95.88 15.1611 84.8389 203.473 44.0443 52.4828 255.685 25.4288 18.8858 
+95.89 15.1586 84.8414 203.459 44.0484 52.4928 255.676 25.4325 18.8913 
+95.9 15.156 84.844 203.445 44.0526 52.5028 255.667 25.4363 18.8967 
+95.91 15.1534 84.8466 203.43 44.0568 52.5127 255.658 25.4401 18.9022 
+95.92 15.1508 84.8492 203.416 44.0609 52.5227 255.648 25.4439 18.9077 
+95.93 15.1483 84.8517 203.402 44.0651 52.5327 255.639 25.4477 18.9132 
+95.94 15.1457 84.8543 203.388 44.0693 52.5427 255.63 25.4515 18.9186 
+95.95 15.1431 84.8569 203.374 44.0734 52.5527 255.621 25.4553 18.9241 
+95.96 15.1406 84.8594 203.36 44.0776 52.5627 255.611 25.459 18.9296 
+95.97 15.138 84.862 203.346 44.0818 52.5727 255.602 25.4628 18.9351 
+95.98 15.1354 84.8646 203.331 44.0859 52.5827 255.593 25.4666 18.9406 
+95.99 15.1329 84.8671 203.317 44.0901 52.5927 255.584 25.4704 18.946 
+96 15.1303 84.8697 203.303 44.0943 52.6027 255.574 25.4742 18.9515 
+96.01 15.1277 84.8723 203.289 44.0984 52.6127 255.565 25.478 18.957 
+96.02 15.1252 84.8748 203.275 44.1026 52.6227 255.556 25.4818 18.9625 
+96.03 15.1226 84.8774 203.261 44.1068 52.6327 255.546 25.4856 18.968 
+96.04 15.1201 84.8799 203.246 44.1109 52.6427 255.537 25.4893 18.9735 
+96.05 15.1175 84.8825 203.232 44.1151 52.6527 255.528 25.4931 18.979 
+96.06 15.115 84.885 203.218 44.1193 52.6627 255.519 25.4969 18.9845 
+96.07 15.1124 84.8876 203.204 44.1234 52.6727 255.509 25.5007 18.99 
+96.08 15.1098 84.8902 203.19 44.1276 52.6827 255.5 25.5045 18.9955 
+96.09 15.1073 84.8927 203.176 44.1318 52.6927 255.491 25.5083 19.001 
+96.1 15.1047 84.8953 203.161 44.1359 52.7027 255.481 25.5121 19.0065 
+96.11 15.1022 84.8978 203.147 44.1401 52.7127 255.472 25.5159 19.012 
+96.12 15.0997 84.9003 203.133 44.1443 52.7227 255.463 25.5197 19.0175 
+96.13 15.0971 84.9029 203.119 44.1484 52.7327 255.454 25.5235 19.023 
+96.14 15.0946 84.9054 203.105 44.1526 52.7427 255.444 25.5273 19.0285 
+96.15 15.092 84.908 203.091 44.1568 52.7527 255.435 25.5311 19.034 
+96.16 15.0895 84.9105 203.076 44.1609 52.7627 255.426 25.5349 19.0395 
+96.17 15.0869 84.9131 203.062 44.1651 52.7727 255.416 25.5387 19.045 
+96.18 15.0844 84.9156 203.048 44.1692 52.7827 255.407 25.5425 19.0505 
+96.19 15.0819 84.9181 203.034 44.1734 52.7927 255.398 25.5463 19.0561 
+96.2 15.0793 84.9207 203.02 44.1776 52.8027 255.388 25.5501 19.0616 
+96.21 15.0768 84.9232 203.006 44.1817 52.8127 255.379 25.5539 19.0671 
+96.22 15.0743 84.9257 202.991 44.1859 52.8227 255.37 25.5577 19.0726 
+96.23 15.0717 84.9283 202.977 44.1901 52.8328 255.36 25.5615 19.0781 
+96.24 15.0692 84.9308 202.963 44.1942 52.8428 255.351 25.5653 19.0837 
+96.25 15.0667 84.9333 202.949 44.1984 52.8528 255.342 25.5691 19.0892 
+96.26 15.0641 84.9359 202.935 44.2025 52.8628 255.332 25.5729 19.0947 
+96.27 15.0616 84.9384 202.92 44.2067 52.8728 255.323 25.5767 19.1003 
+96.28 15.0591 84.9409 202.906 44.2109 52.8828 255.314 25.5805 19.1058 
+96.29 15.0565 84.9435 202.892 44.215 52.8928 255.304 25.5843 19.1113 
+96.3 15.054 84.946 202.878 44.2192 52.9028 255.295 25.5881 19.1169 
+96.31 15.0515 84.9485 202.864 44.2233 52.9129 255.286 25.5919 19.1224 
+96.32 15.049 84.951 202.85 44.2275 52.9229 255.276 25.5957 19.1279 
+96.33 15.0465 84.9535 202.835 44.2317 52.9329 255.267 25.5995 19.1335 
+96.34 15.0439 84.9561 202.821 44.2358 52.9429 255.258 25.6033 19.139 
+96.35 15.0414 84.9586 202.807 44.24 52.9529 255.248 25.6071 19.1446 
+96.36 15.0389 84.9611 202.793 44.2441 52.9629 255.239 25.6109 19.1501 
+96.37 15.0364 84.9636 202.779 44.2483 52.9729 255.23 25.6147 19.1557 
+96.38 15.0339 84.9661 202.765 44.2525 52.983 255.22 25.6185 19.1612 
+96.39 15.0314 84.9686 202.75 44.2566 52.993 255.211 25.6223 19.1668 
+96.4 15.0289 84.9711 202.736 44.2608 53.003 255.202 25.6261 19.1723 
+96.41 15.0263 84.9737 202.722 44.2649 53.013 255.192 25.6299 19.1779 
+96.42 15.0238 84.9762 202.708 44.2691 53.023 255.183 25.6337 19.1834 
+96.43 15.0213 84.9787 202.694 44.2732 53.0331 255.173 25.6376 19.189 
+96.44 15.0188 84.9812 202.68 44.2774 53.0431 255.164 25.6414 19.1945 
+96.45 15.0163 84.9837 202.665 44.2816 53.0531 255.155 25.6452 19.2001 
+96.46 15.0138 84.9862 202.651 44.2857 53.0631 255.145 25.649 19.2057 
+96.47 15.0113 84.9887 202.637 44.2899 53.0732 255.136 25.6528 19.2112 
+96.48 15.0088 84.9912 202.623 44.294 53.0832 255.127 25.6566 19.2168 
+96.49 15.0063 84.9937 202.609 44.2982 53.0932 255.117 25.6604 19.2224 
+96.5 15.0038 84.9962 202.594 44.3023 53.1032 255.108 25.6642 19.2279 
+96.51 15.0013 84.9987 202.58 44.3065 53.1133 255.098 25.668 19.2335 
+96.52 14.9988 85.0012 202.566 44.3106 53.1233 255.089 25.6719 19.2391 
+96.53 14.9963 85.0037 202.552 44.3148 53.1333 255.08 25.6757 19.2446 
+96.54 14.9938 85.0062 202.538 44.319 53.1433 255.07 25.6795 19.2502 
+96.55 14.9913 85.0087 202.524 44.3231 53.1534 255.061 25.6833 19.2558 
+96.56 14.9888 85.0112 202.509 44.3273 53.1634 255.052 25.6871 19.2614 
+96.57 14.9864 85.0136 202.495 44.3314 53.1734 255.042 25.6909 19.2669 
+96.58 14.9839 85.0161 202.481 44.3356 53.1835 255.033 25.6948 19.2725 
+96.59 14.9814 85.0186 202.467 44.3397 53.1935 255.023 25.6986 19.2781 
+96.6 14.9789 85.0211 202.453 44.3439 53.2035 255.014 25.7024 19.2837 
+96.61 14.9764 85.0236 202.438 44.348 53.2136 255.005 25.7062 19.2893 
+96.62 14.9739 85.0261 202.424 44.3522 53.2236 254.995 25.71 19.2949 
+96.63 14.9714 85.0286 202.41 44.3563 53.2336 254.986 25.7138 19.3005 
+96.64 14.969 85.031 202.396 44.3605 53.2437 254.976 25.7177 19.3061 
+96.65 14.9665 85.0335 202.382 44.3646 53.2537 254.967 25.7215 19.3117 
+96.66 14.964 85.036 202.367 44.3688 53.2637 254.957 25.7253 19.3173 
+96.67 14.9615 85.0385 202.353 44.3729 53.2738 254.948 25.7291 19.3229 
+96.68 14.959 85.041 202.339 44.3771 53.2838 254.939 25.7329 19.3285 
+96.69 14.9566 85.0434 202.325 44.3812 53.2938 254.929 25.7368 19.3341 
+96.7 14.9541 85.0459 202.311 44.3854 53.3039 254.92 25.7406 19.3397 
+96.71 14.9516 85.0484 202.297 44.3895 53.3139 254.91 25.7444 19.3453 
+96.72 14.9492 85.0508 202.282 44.3937 53.324 254.901 25.7482 19.3509 
+96.73 14.9467 85.0533 202.268 44.3978 53.334 254.891 25.7521 19.3565 
+96.74 14.9442 85.0558 202.254 44.402 53.344 254.882 25.7559 19.3621 
+96.75 14.9418 85.0582 202.24 44.4061 53.3541 254.873 25.7597 19.3677 
+96.76 14.9393 85.0607 202.226 44.4103 53.3641 254.863 25.7635 19.3733 
+96.77 14.9368 85.0632 202.211 44.4144 53.3742 254.854 25.7674 19.3789 
+96.78 14.9344 85.0656 202.197 44.4186 53.3842 254.844 25.7712 19.3845 
+96.79 14.9319 85.0681 202.183 44.4227 53.3943 254.835 25.775 19.3902 
+96.8 14.9294 85.0706 202.169 44.4269 53.4043 254.825 25.7788 19.3958 
+96.81 14.927 85.073 202.155 44.431 53.4143 254.816 25.7827 19.4014 
+96.82 14.9245 85.0755 202.14 44.4352 53.4244 254.806 25.7865 19.407 
+96.83 14.9221 85.0779 202.126 44.4393 53.4344 254.797 25.7903 19.4126 
+96.84 14.9196 85.0804 202.112 44.4435 53.4445 254.788 25.7942 19.4183 
+96.85 14.9172 85.0828 202.098 44.4476 53.4545 254.778 25.798 19.4239 
+96.86 14.9147 85.0853 202.084 44.4518 53.4646 254.769 25.8018 19.4295 
+96.87 14.9122 85.0878 202.069 44.4559 53.4746 254.759 25.8056 19.4352 
+96.88 14.9098 85.0902 202.055 44.4601 53.4847 254.75 25.8095 19.4408 
+96.89 14.9073 85.0927 202.041 44.4642 53.4947 254.74 25.8133 19.4464 
+96.9 14.9049 85.0951 202.027 44.4683 53.5048 254.731 25.8171 19.4521 
+96.91 14.9025 85.0975 202.013 44.4725 53.5148 254.721 25.821 19.4577 
+96.92 14.9 85.1 201.999 44.4766 53.5249 254.712 25.8248 19.4633 
+96.93 14.8976 85.1024 201.984 44.4808 53.5349 254.702 25.8286 19.469 
+96.94 14.8951 85.1049 201.97 44.4849 53.545 254.693 25.8325 19.4746 
+96.95 14.8927 85.1073 201.956 44.4891 53.555 254.683 25.8363 19.4803 
+96.96 14.8902 85.1098 201.942 44.4932 53.5651 254.674 25.8401 19.4859 
+96.97 14.8878 85.1122 201.928 44.4974 53.5751 254.664 25.844 19.4916 
+96.98 14.8854 85.1146 201.913 44.5015 53.5852 254.655 25.8478 19.4972 
+96.99 14.8829 85.1171 201.899 44.5056 53.5952 254.645 25.8517 19.5029 
+97 14.8805 85.1195 201.885 44.5098 53.6053 254.636 25.8555 19.5085 
+97.01 14.878 85.122 201.871 44.5139 53.6154 254.626 25.8593 19.5142 
+97.02 14.8756 85.1244 201.857 44.5181 53.6254 254.617 25.8632 19.5198 
+97.03 14.8732 85.1268 201.842 44.5222 53.6355 254.608 25.867 19.5255 
+97.04 14.8708 85.1292 201.828 44.5264 53.6455 254.598 25.8708 19.5312 
+97.05 14.8683 85.1317 201.814 44.5305 53.6556 254.589 25.8747 19.5368 
+97.06 14.8659 85.1341 201.8 44.5346 53.6656 254.579 25.8785 19.5425 
+97.07 14.8635 85.1365 201.786 44.5388 53.6757 254.569 25.8824 19.5481 
+97.08 14.861 85.139 201.771 44.5429 53.6858 254.56 25.8862 19.5538 
+97.09 14.8586 85.1414 201.757 44.5471 53.6958 254.55 25.89 19.5595 
+97.1 14.8562 85.1438 201.743 44.5512 53.7059 254.541 25.8939 19.5652 
+97.11 14.8538 85.1462 201.729 44.5553 53.7159 254.531 25.8977 19.5708 
+97.12 14.8514 85.1486 201.715 44.5595 53.726 254.522 25.9016 19.5765 
+97.13 14.8489 85.1511 201.7 44.5636 53.7361 254.512 25.9054 19.5822 
+97.14 14.8465 85.1535 201.686 44.5678 53.7461 254.503 25.9093 19.5879 
+97.15 14.8441 85.1559 201.672 44.5719 53.7562 254.493 25.9131 19.5935 
+97.16 14.8417 85.1583 201.658 44.576 53.7663 254.484 25.9169 19.5992 
+97.17 14.8393 85.1607 201.643 44.5802 53.7763 254.474 25.9208 19.6049 
+97.18 14.8369 85.1631 201.629 44.5843 53.7864 254.465 25.9246 19.6106 
+97.19 14.8344 85.1656 201.615 44.5884 53.7965 254.455 25.9285 19.6163 
+97.2 14.832 85.168 201.601 44.5926 53.8065 254.446 25.9323 19.622 
+97.21 14.8296 85.1704 201.587 44.5967 53.8166 254.436 25.9362 19.6276 
+97.22 14.8272 85.1728 201.572 44.6009 53.8267 254.427 25.94 19.6333 
+97.23 14.8248 85.1752 201.558 44.605 53.8367 254.417 25.9439 19.639 
+97.24 14.8224 85.1776 201.544 44.6091 53.8468 254.408 25.9477 19.6447 
+97.25 14.82 85.18 201.53 44.6133 53.8569 254.398 25.9516 19.6504 
+97.26 14.8176 85.1824 201.516 44.6174 53.8669 254.388 25.9554 19.6561 
+97.27 14.8152 85.1848 201.501 44.6215 53.877 254.379 25.9593 19.6618 
+97.28 14.8128 85.1872 201.487 44.6257 53.8871 254.369 25.9631 19.6675 
+97.29 14.8104 85.1896 201.473 44.6298 53.8972 254.36 25.967 19.6732 
+97.3 14.808 85.192 201.459 44.634 53.9072 254.35 25.9708 19.6789 
+97.31 14.8056 85.1944 201.445 44.6381 53.9173 254.341 25.9747 19.6846 
+97.32 14.8032 85.1968 201.43 44.6422 53.9274 254.331 25.9785 19.6903 
+97.33 14.8008 85.1992 201.416 44.6464 53.9375 254.322 25.9824 19.696 
+97.34 14.7984 85.2016 201.402 44.6505 53.9475 254.312 25.9862 19.7018 
+97.35 14.796 85.204 201.388 44.6546 53.9576 254.302 25.9901 19.7075 
+97.36 14.7936 85.2064 201.374 44.6588 53.9677 254.293 25.9939 19.7132 
+97.37 14.7912 85.2088 201.359 44.6629 53.9778 254.283 25.9978 19.7189 
+97.38 14.7889 85.2111 201.345 44.667 53.9878 254.274 26.0016 19.7246 
+97.39 14.7865 85.2135 201.331 44.6712 53.9979 254.264 26.0055 19.7303 
+97.4 14.7841 85.2159 201.317 44.6753 54.008 254.255 26.0094 19.7361 
+97.41 14.7817 85.2183 201.302 44.6794 54.0181 254.245 26.0132 19.7418 
+97.42 14.7793 85.2207 201.288 44.6836 54.0282 254.235 26.0171 19.7475 
+97.43 14.7769 85.2231 201.274 44.6877 54.0382 254.226 26.0209 19.7532 
+97.44 14.7746 85.2254 201.26 44.6918 54.0483 254.216 26.0248 19.759 
+97.45 14.7722 85.2278 201.246 44.696 54.0584 254.207 26.0286 19.7647 
+97.46 14.7698 85.2302 201.231 44.7001 54.0685 254.197 26.0325 19.7704 
+97.47 14.7674 85.2326 201.217 44.7042 54.0786 254.187 26.0364 19.7762 
+97.48 14.765 85.235 201.203 44.7083 54.0887 254.178 26.0402 19.7819 
+97.49 14.7627 85.2373 201.189 44.7125 54.0987 254.168 26.0441 19.7876 
+97.5 14.7603 85.2397 201.175 44.7166 54.1088 254.159 26.0479 19.7934 
+97.51 14.7579 85.2421 201.16 44.7207 54.1189 254.149 26.0518 19.7991 
+97.52 14.7555 85.2445 201.146 44.7249 54.129 254.139 26.0557 19.8049 
+97.53 14.7532 85.2468 201.132 44.729 54.1391 254.13 26.0595 19.8106 
+97.54 14.7508 85.2492 201.118 44.7331 54.1492 254.12 26.0634 19.8163 
+97.55 14.7484 85.2516 201.103 44.7373 54.1593 254.111 26.0672 19.8221 
+97.56 14.7461 85.2539 201.089 44.7414 54.1693 254.101 26.0711 19.8278 
+97.57 14.7437 85.2563 201.075 44.7455 54.1794 254.091 26.075 19.8336 
+97.58 14.7413 85.2587 201.061 44.7496 54.1895 254.082 26.0788 19.8393 
+97.59 14.739 85.261 201.047 44.7538 54.1996 254.072 26.0827 19.8451 
+97.6 14.7366 85.2634 201.032 44.7579 54.2097 254.063 26.0866 19.8509 
+97.61 14.7343 85.2657 201.018 44.762 54.2198 254.053 26.0904 19.8566 
+97.62 14.7319 85.2681 201.004 44.7661 54.2299 254.043 26.0943 19.8624 
+97.63 14.7295 85.2705 200.99 44.7703 54.24 254.034 26.0982 19.8681 
+97.64 14.7272 85.2728 200.976 44.7744 54.2501 254.024 26.102 19.8739 
+97.65 14.7248 85.2752 200.961 44.7785 54.2602 254.014 26.1059 19.8797 
+97.66 14.7225 85.2775 200.947 44.7827 54.2703 254.005 26.1098 19.8854 
+97.67 14.7201 85.2799 200.933 44.7868 54.2803 253.995 26.1136 19.8912 
+97.68 14.7178 85.2822 200.919 44.7909 54.2904 253.986 26.1175 19.897 
+97.69 14.7154 85.2846 200.904 44.795 54.3005 253.976 26.1214 19.9027 
+97.7 14.7131 85.2869 200.89 44.7992 54.3106 253.966 26.1253 19.9085 
+97.71 14.7107 85.2893 200.876 44.8033 54.3207 253.957 26.1291 19.9143 
+97.72 14.7084 85.2916 200.862 44.8074 54.3308 253.947 26.133 19.9201 
+97.73 14.706 85.294 200.848 44.8115 54.3409 253.937 26.1369 19.9258 
+97.74 14.7037 85.2963 200.833 44.8157 54.351 253.928 26.1407 19.9316 
+97.75 14.7014 85.2986 200.819 44.8198 54.3611 253.918 26.1446 19.9374 
+97.76 14.699 85.301 200.805 44.8239 54.3712 253.908 26.1485 19.9432 
+97.77 14.6967 85.3033 200.791 44.828 54.3813 253.899 26.1524 19.949 
+97.78 14.6943 85.3057 200.776 44.8321 54.3914 253.889 26.1562 19.9548 
+97.79 14.692 85.308 200.762 44.8363 54.4015 253.879 26.1601 19.9605 
+97.8 14.6897 85.3103 200.748 44.8404 54.4116 253.87 26.164 19.9663 
+97.81 14.6873 85.3127 200.734 44.8445 54.4217 253.86 26.1679 19.9721 
+97.82 14.685 85.315 200.72 44.8486 54.4318 253.85 26.1717 19.9779 
+97.83 14.6827 85.3173 200.705 44.8528 54.4419 253.841 26.1756 19.9837 
+97.84 14.6803 85.3197 200.691 44.8569 54.452 253.831 26.1795 19.9895 
+97.85 14.678 85.322 200.677 44.861 54.4621 253.821 26.1834 19.9953 
+97.86 14.6757 85.3243 200.663 44.8651 54.4723 253.812 26.1872 20.0011 
+97.87 14.6733 85.3267 200.648 44.8692 54.4824 253.802 26.1911 20.0069 
+97.88 14.671 85.329 200.634 44.8734 54.4925 253.792 26.195 20.0127 
+97.89 14.6687 85.3313 200.62 44.8775 54.5026 253.783 26.1989 20.0185 
+97.9 14.6664 85.3336 200.606 44.8816 54.5127 253.773 26.2028 20.0243 
+97.91 14.664 85.336 200.591 44.8857 54.5228 253.763 26.2066 20.0301 
+97.92 14.6617 85.3383 200.577 44.8898 54.5329 253.754 26.2105 20.0359 
+97.93 14.6594 85.3406 200.563 44.894 54.543 253.744 26.2144 20.0418 
+97.94 14.6571 85.3429 200.549 44.8981 54.5531 253.734 26.2183 20.0476 
+97.95 14.6548 85.3452 200.535 44.9022 54.5632 253.724 26.2222 20.0534 
+97.96 14.6524 85.3476 200.52 44.9063 54.5733 253.715 26.226 20.0592 
+97.97 14.6501 85.3499 200.506 44.9104 54.5834 253.705 26.2299 20.065 
+97.98 14.6478 85.3522 200.492 44.9146 54.5936 253.695 26.2338 20.0708 
+97.99 14.6455 85.3545 200.478 44.9187 54.6037 253.686 26.2377 20.0767 
+98 14.6432 85.3568 200.463 44.9228 54.6138 253.676 26.2416 20.0825 
+98.01 14.6409 85.3591 200.449 44.9269 54.6239 253.666 26.2455 20.0883 
+98.02 14.6386 85.3614 200.435 44.931 54.634 253.657 26.2493 20.0941 
+98.03 14.6363 85.3637 200.421 44.9351 54.6441 253.647 26.2532 20.1 
+98.04 14.634 85.366 200.406 44.9393 54.6542 253.637 26.2571 20.1058 
+98.05 14.6316 85.3684 200.392 44.9434 54.6644 253.627 26.261 20.1116 
+98.06 14.6293 85.3707 200.378 44.9475 54.6745 253.618 26.2649 20.1175 
+98.07 14.627 85.373 200.364 44.9516 54.6846 253.608 26.2688 20.1233 
+98.08 14.6247 85.3753 200.35 44.9557 54.6947 253.598 26.2727 20.1292 
+98.09 14.6224 85.3776 200.335 44.9598 54.7048 253.588 26.2765 20.135 
+98.1 14.6201 85.3799 200.321 44.964 54.715 253.579 26.2804 20.1408 
+98.11 14.6178 85.3822 200.307 44.9681 54.7251 253.569 26.2843 20.1467 
+98.12 14.6155 85.3845 200.293 44.9722 54.7352 253.559 26.2882 20.1525 
+98.13 14.6132 85.3868 200.278 44.9763 54.7453 253.55 26.2921 20.1584 
+98.14 14.6109 85.3891 200.264 44.9804 54.7554 253.54 26.296 20.1642 
+98.15 14.6087 85.3913 200.25 44.9845 54.7656 253.53 26.2999 20.1701 
+98.16 14.6064 85.3936 200.236 44.9886 54.7757 253.52 26.3038 20.1759 
+98.17 14.6041 85.3959 200.221 44.9928 54.7858 253.511 26.3077 20.1818 
+98.18 14.6018 85.3982 200.207 44.9969 54.7959 253.501 26.3116 20.1876 
+98.19 14.5995 85.4005 200.193 45.001 54.806 253.491 26.3155 20.1935 
+98.2 14.5972 85.4028 200.179 45.0051 54.8162 253.481 26.3194 20.1993 
+98.21 14.5949 85.4051 200.164 45.0092 54.8263 253.472 26.3232 20.2052 
+98.22 14.5926 85.4074 200.15 45.0133 54.8364 253.462 26.3271 20.2111 
+98.23 14.5903 85.4097 200.136 45.0174 54.8465 253.452 26.331 20.2169 
+98.24 14.5881 85.4119 200.122 45.0215 54.8567 253.442 26.3349 20.2228 
+98.25 14.5858 85.4142 200.108 45.0257 54.8668 253.433 26.3388 20.2287 
+98.26 14.5835 85.4165 200.093 45.0298 54.8769 253.423 26.3427 20.2345 
+98.27 14.5812 85.4188 200.079 45.0339 54.8871 253.413 26.3466 20.2404 
+98.28 14.5789 85.4211 200.065 45.038 54.8972 253.403 26.3505 20.2463 
+98.29 14.5767 85.4233 200.051 45.0421 54.9073 253.393 26.3544 20.2522 
+98.3 14.5744 85.4256 200.036 45.0462 54.9174 253.384 26.3583 20.258 
+98.31 14.5721 85.4279 200.022 45.0503 54.9276 253.374 26.3622 20.2639 
+98.32 14.5698 85.4302 200.008 45.0544 54.9377 253.364 26.3661 20.2698 
+98.33 14.5676 85.4324 199.994 45.0585 54.9478 253.354 26.37 20.2757 
+98.34 14.5653 85.4347 199.979 45.0626 54.958 253.345 26.3739 20.2816 
+98.35 14.563 85.437 199.965 45.0667 54.9681 253.335 26.3778 20.2874 
+98.36 14.5608 85.4392 199.951 45.0709 54.9782 253.325 26.3817 20.2933 
+98.37 14.5585 85.4415 199.937 45.075 54.9884 253.315 26.3856 20.2992 
+98.38 14.5562 85.4438 199.922 45.0791 54.9985 253.305 26.3895 20.3051 
+98.39 14.554 85.446 199.908 45.0832 55.0086 253.296 26.3934 20.311 
+98.4 14.5517 85.4483 199.894 45.0873 55.0188 253.286 26.3973 20.3169 
+98.41 14.5494 85.4506 199.88 45.0914 55.0289 253.276 26.4012 20.3228 
+98.42 14.5472 85.4528 199.865 45.0955 55.0391 253.266 26.4051 20.3287 
+98.43 14.5449 85.4551 199.851 45.0996 55.0492 253.256 26.409 20.3346 
+98.44 14.5427 85.4573 199.837 45.1037 55.0593 253.247 26.4129 20.3405 
+98.45 14.5404 85.4596 199.823 45.1078 55.0695 253.237 26.4168 20.3464 
+98.46 14.5382 85.4618 199.808 45.1119 55.0796 253.227 26.4207 20.3523 
+98.47 14.5359 85.4641 199.794 45.116 55.0897 253.217 26.4247 20.3582 
+98.48 14.5336 85.4664 199.78 45.1201 55.0999 253.207 26.4286 20.3641 
+98.49 14.5314 85.4686 199.766 45.1242 55.11 253.198 26.4325 20.37 
+98.5 14.5291 85.4709 199.751 45.1283 55.1202 253.188 26.4364 20.3759 
+98.51 14.5269 85.4731 199.737 45.1325 55.1303 253.178 26.4403 20.3818 
+98.52 14.5246 85.4754 199.723 45.1366 55.1405 253.168 26.4442 20.3877 
+98.53 14.5224 85.4776 199.709 45.1407 55.1506 253.158 26.4481 20.3937 
+98.54 14.5201 85.4799 199.694 45.1448 55.1607 253.148 26.452 20.3996 
+98.55 14.5179 85.4821 199.68 45.1489 55.1709 253.139 26.4559 20.4055 
+98.56 14.5157 85.4843 199.666 45.153 55.181 253.129 26.4598 20.4114 
+98.57 14.5134 85.4866 199.652 45.1571 55.1912 253.119 26.4637 20.4173 
+98.58 14.5112 85.4888 199.638 45.1612 55.2013 253.109 26.4676 20.4233 
+98.59 14.5089 85.4911 199.623 45.1653 55.2115 253.099 26.4716 20.4292 
+98.6 14.5067 85.4933 199.609 45.1694 55.2216 253.089 26.4755 20.4351 
+98.61 14.5045 85.4955 199.595 45.1735 55.2318 253.08 26.4794 20.4411 
+98.62 14.5022 85.4978 199.581 45.1776 55.2419 253.07 26.4833 20.447 
+98.63 14.5 85.5 199.566 45.1817 55.2521 253.06 26.4872 20.4529 
+98.64 14.4977 85.5023 199.552 45.1858 55.2622 253.05 26.4911 20.4589 
+98.65 14.4955 85.5045 199.538 45.1899 55.2724 253.04 26.495 20.4648 
+98.66 14.4933 85.5067 199.524 45.194 55.2825 253.03 26.499 20.4707 
+98.67 14.491 85.509 199.509 45.1981 55.2927 253.02 26.5029 20.4767 
+98.68 14.4888 85.5112 199.495 45.2022 55.3028 253.011 26.5068 20.4826 
+98.69 14.4866 85.5134 199.481 45.2063 55.313 253.001 26.5107 20.4886 
+98.7 14.4844 85.5156 199.467 45.2104 55.3231 252.991 26.5146 20.4945 
+98.71 14.4821 85.5179 199.452 45.2145 55.3333 252.981 26.5185 20.5004 
+98.72 14.4799 85.5201 199.438 45.2186 55.3434 252.971 26.5224 20.5064 
+98.73 14.4777 85.5223 199.424 45.2227 55.3536 252.961 26.5264 20.5123 
+98.74 14.4755 85.5245 199.409 45.2268 55.3637 252.951 26.5303 20.5183 
+98.75 14.4732 85.5268 199.395 45.2309 55.3739 252.942 26.5342 20.5243 
+98.76 14.471 85.529 199.381 45.235 55.384 252.932 26.5381 20.5302 
+98.77 14.4688 85.5312 199.367 45.2391 55.3942 252.922 26.542 20.5362 
+98.78 14.4666 85.5334 199.352 45.2432 55.4043 252.912 26.546 20.5421 
+98.79 14.4644 85.5356 199.338 45.2473 55.4145 252.902 26.5499 20.5481 
+98.8 14.4622 85.5378 199.324 45.2514 55.4247 252.892 26.5538 20.5541 
+98.81 14.4599 85.5401 199.31 45.2555 55.4348 252.882 26.5577 20.56 
+98.82 14.4577 85.5423 199.295 45.2596 55.445 252.872 26.5616 20.566 
+98.83 14.4555 85.5445 199.281 45.2637 55.4551 252.862 26.5656 20.572 
+98.84 14.4533 85.5467 199.267 45.2678 55.4653 252.853 26.5695 20.5779 
+98.85 14.4511 85.5489 199.253 45.2719 55.4755 252.843 26.5734 20.5839 
+98.86 14.4489 85.5511 199.238 45.2759 55.4856 252.833 26.5773 20.5899 
+98.87 14.4467 85.5533 199.224 45.28 55.4958 252.823 26.5813 20.5958 
+98.88 14.4445 85.5555 199.21 45.2841 55.5059 252.813 26.5852 20.6018 
+98.89 14.4423 85.5577 199.196 45.2882 55.5161 252.803 26.5891 20.6078 
+98.9 14.4401 85.5599 199.181 45.2923 55.5263 252.793 26.593 20.6138 
+98.91 14.4379 85.5621 199.167 45.2964 55.5364 252.783 26.597 20.6198 
+98.92 14.4357 85.5643 199.153 45.3005 55.5466 252.773 26.6009 20.6257 
+98.93 14.4335 85.5665 199.139 45.3046 55.5568 252.763 26.6048 20.6317 
+98.94 14.4313 85.5687 199.124 45.3087 55.5669 252.754 26.6087 20.6377 
+98.95 14.4291 85.5709 199.11 45.3128 55.5771 252.744 26.6127 20.6437 
+98.96 14.4269 85.5731 199.096 45.3169 55.5873 252.734 26.6166 20.6497 
+98.97 14.4247 85.5753 199.082 45.321 55.5974 252.724 26.6205 20.6557 
+98.98 14.4225 85.5775 199.067 45.3251 55.6076 252.714 26.6245 20.6617 
+98.99 14.4203 85.5797 199.053 45.3292 55.6178 252.704 26.6284 20.6677 
+99 14.4181 85.5819 199.039 45.3333 55.6279 252.694 26.6323 20.6737 
+99.01 14.4159 85.5841 199.025 45.3373 55.6381 252.684 26.6363 20.6797 
+99.02 14.4137 85.5863 199.01 45.3414 55.6483 252.674 26.6402 20.6857 
+99.03 14.4115 85.5885 198.996 45.3455 55.6584 252.664 26.6441 20.6917 
+99.04 14.4093 85.5907 198.982 45.3496 55.6686 252.654 26.648 20.6977 
+99.05 14.4072 85.5928 198.968 45.3537 55.6788 252.644 26.652 20.7037 
+99.06 14.405 85.595 198.953 45.3578 55.689 252.634 26.6559 20.7097 
+99.07 14.4028 85.5972 198.939 45.3619 55.6991 252.624 26.6598 20.7157 
+99.08 14.4006 85.5994 198.925 45.366 55.7093 252.614 26.6638 20.7217 
+99.09 14.3984 85.6016 198.91 45.3701 55.7195 252.605 26.6677 20.7277 
+99.1 14.3962 85.6038 198.896 45.3742 55.7297 252.595 26.6717 20.7338 
+99.11 14.3941 85.6059 198.882 45.3782 55.7398 252.585 26.6756 20.7398 
+99.12 14.3919 85.6081 198.868 45.3823 55.75 252.575 26.6795 20.7458 
+99.13 14.3897 85.6103 198.853 45.3864 55.7602 252.565 26.6835 20.7518 
+99.14 14.3875 85.6125 198.839 45.3905 55.7704 252.555 26.6874 20.7578 
+99.15 14.3854 85.6146 198.825 45.3946 55.7805 252.545 26.6913 20.7639 
+99.16 14.3832 85.6168 198.811 45.3987 55.7907 252.535 26.6953 20.7699 
+99.17 14.381 85.619 198.796 45.4028 55.8009 252.525 26.6992 20.7759 
+99.18 14.3789 85.6211 198.782 45.4069 55.8111 252.515 26.7031 20.7819 
+99.19 14.3767 85.6233 198.768 45.411 55.8212 252.505 26.7071 20.788 
+99.2 14.3745 85.6255 198.754 45.415 55.8314 252.495 26.711 20.794 
+99.21 14.3724 85.6276 198.739 45.4191 55.8416 252.485 26.715 20.8 
+99.22 14.3702 85.6298 198.725 45.4232 55.8518 252.475 26.7189 20.8061 
+99.23 14.368 85.632 198.711 45.4273 55.862 252.465 26.7228 20.8121 
+99.24 14.3659 85.6341 198.696 45.4314 55.8721 252.455 26.7268 20.8182 
+99.25 14.3637 85.6363 198.682 45.4355 55.8823 252.445 26.7307 20.8242 
+99.26 14.3615 85.6385 198.668 45.4396 55.8925 252.435 26.7347 20.8302 
+99.27 14.3594 85.6406 198.654 45.4436 55.9027 252.425 26.7386 20.8363 
+99.28 14.3572 85.6428 198.639 45.4477 55.9129 252.415 26.7426 20.8423 
+99.29 14.3551 85.6449 198.625 45.4518 55.9231 252.405 26.7465 20.8484 
+99.3 14.3529 85.6471 198.611 45.4559 55.9332 252.395 26.7504 20.8544 
+99.31 14.3508 85.6492 198.597 45.46 55.9434 252.385 26.7544 20.8605 
+99.32 14.3486 85.6514 198.582 45.4641 55.9536 252.375 26.7583 20.8665 
+99.33 14.3464 85.6536 198.568 45.4681 55.9638 252.365 26.7623 20.8726 
+99.34 14.3443 85.6557 198.554 45.4722 55.974 252.355 26.7662 20.8786 
+99.35 14.3421 85.6579 198.54 45.4763 55.9842 252.345 26.7702 20.8847 
+99.36 14.34 85.66 198.525 45.4804 55.9944 252.335 26.7741 20.8908 
+99.37 14.3378 85.6622 198.511 45.4845 56.0046 252.325 26.7781 20.8968 
+99.38 14.3357 85.6643 198.497 45.4886 56.0147 252.315 26.782 20.9029 
+99.39 14.3336 85.6664 198.482 45.4926 56.0249 252.305 26.786 20.909 
+99.4 14.3314 85.6686 198.468 45.4967 56.0351 252.295 26.7899 20.915 
+99.41 14.3293 85.6707 198.454 45.5008 56.0453 252.285 26.7939 20.9211 
+99.42 14.3271 85.6729 198.44 45.5049 56.0555 252.275 26.7978 20.9272 
+99.43 14.325 85.675 198.425 45.509 56.0657 252.265 26.8018 20.9332 
+99.44 14.3228 85.6772 198.411 45.513 56.0759 252.255 26.8057 20.9393 
+99.45 14.3207 85.6793 198.397 45.5171 56.0861 252.245 26.8097 20.9454 
+99.46 14.3186 85.6814 198.383 45.5212 56.0963 252.235 26.8136 20.9515 
+99.47 14.3164 85.6836 198.368 45.5253 56.1065 252.225 26.8176 20.9576 
+99.48 14.3143 85.6857 198.354 45.5294 56.1167 252.215 26.8215 20.9636 
+99.49 14.3122 85.6878 198.34 45.5334 56.1269 252.205 26.8255 20.9697 
+99.5 14.31 85.69 198.325 45.5375 56.1371 252.195 26.8294 20.9758 
+99.51 14.3079 85.6921 198.311 45.5416 56.1473 252.185 26.8334 20.9819 
+99.52 14.3058 85.6942 198.297 45.5457 56.1575 252.175 26.8373 20.988 
+99.53 14.3036 85.6964 198.283 45.5498 56.1677 252.165 26.8413 20.9941 
+99.54 14.3015 85.6985 198.268 45.5538 56.1778 252.155 26.8452 21.0002 
+99.55 14.2994 85.7006 198.254 45.5579 56.188 252.145 26.8492 21.0063 
+99.56 14.2973 85.7027 198.24 45.562 56.1982 252.135 26.8531 21.0124 
+99.57 14.2951 85.7049 198.225 45.5661 56.2084 252.124 26.8571 21.0184 
+99.58 14.293 85.707 198.211 45.5701 56.2186 252.114 26.8611 21.0245 
+99.59 14.2909 85.7091 198.197 45.5742 56.2288 252.104 26.865 21.0307 
+99.6 14.2888 85.7112 198.183 45.5783 56.239 252.094 26.869 21.0368 
+99.61 14.2867 85.7133 198.168 45.5824 56.2492 252.084 26.8729 21.0429 
+99.62 14.2845 85.7155 198.154 45.5864 56.2594 252.074 26.8769 21.049 
+99.63 14.2824 85.7176 198.14 45.5905 56.2697 252.064 26.8808 21.0551 
+99.64 14.2803 85.7197 198.126 45.5946 56.2799 252.054 26.8848 21.0612 
+99.65 14.2782 85.7218 198.111 45.5987 56.2901 252.044 26.8888 21.0673 
+99.66 14.2761 85.7239 198.097 45.6027 56.3003 252.034 26.8927 21.0734 
+99.67 14.274 85.726 198.083 45.6068 56.3105 252.024 26.8967 21.0795 
+99.68 14.2718 85.7282 198.068 45.6109 56.3207 252.014 26.9006 21.0856 
+99.69 14.2697 85.7303 198.054 45.615 56.3309 252.004 26.9046 21.0918 
+99.7 14.2676 85.7324 198.04 45.619 56.3411 251.994 26.9086 21.0979 
+99.71 14.2655 85.7345 198.026 45.6231 56.3513 251.983 26.9125 21.104 
+99.72 14.2634 85.7366 198.011 45.6272 56.3615 251.973 26.9165 21.1101 
+99.73 14.2613 85.7387 197.997 45.6313 56.3717 251.963 26.9205 21.1163 
+99.74 14.2592 85.7408 197.983 45.6353 56.3819 251.953 26.9244 21.1224 
+99.75 14.2571 85.7429 197.968 45.6394 56.3921 251.943 26.9284 21.1285 
+99.76 14.255 85.745 197.954 45.6435 56.4023 251.933 26.9323 21.1346 
+99.77 14.2529 85.7471 197.94 45.6475 56.4125 251.923 26.9363 21.1408 
+99.78 14.2508 85.7492 197.926 45.6516 56.4228 251.913 26.9403 21.1469 
+99.79 14.2487 85.7513 197.911 45.6557 56.433 251.903 26.9442 21.153 
+99.8 14.2466 85.7534 197.897 45.6598 56.4432 251.893 26.9482 21.1592 
+99.81 14.2445 85.7555 197.883 45.6638 56.4534 251.883 26.9522 21.1653 
+99.82 14.2424 85.7576 197.869 45.6679 56.4636 251.872 26.9561 21.1715 
+99.83 14.2403 85.7597 197.854 45.672 56.4738 251.862 26.9601 21.1776 
+99.84 14.2382 85.7618 197.84 45.676 56.484 251.852 26.9641 21.1838 
+99.85 14.2361 85.7639 197.826 45.6801 56.4942 251.842 26.968 21.1899 
+99.86 14.234 85.766 197.811 45.6842 56.5045 251.832 26.972 21.1961 
+99.87 14.232 85.768 197.797 45.6882 56.5147 251.822 26.976 21.2022 
+99.88 14.2299 85.7701 197.783 45.6923 56.5249 251.812 26.98 21.2084 
+99.89 14.2278 85.7722 197.769 45.6964 56.5351 251.802 26.9839 21.2145 
+99.9 14.2257 85.7743 197.754 45.7005 56.5453 251.791 26.9879 21.2207 
+99.91 14.2236 85.7764 197.74 45.7045 56.5555 251.781 26.9919 21.2268 
+99.92 14.2215 85.7785 197.726 45.7086 56.5658 251.771 26.9958 21.233 
+99.93 14.2194 85.7806 197.711 45.7127 56.576 251.761 26.9998 21.2391 
+99.94 14.2174 85.7826 197.697 45.7167 56.5862 251.751 27.0038 21.2453 
+99.95 14.2153 85.7847 197.683 45.7208 56.5964 251.741 27.0078 21.2515 
+99.96 14.2132 85.7868 197.669 45.7249 56.6066 251.731 27.0117 21.2576 
+99.97 14.2111 85.7889 197.654 45.7289 56.6168 251.72 27.0157 21.2638 
+99.98 14.209 85.791 197.64 45.733 56.6271 251.71 27.0197 21.27 
+99.99 14.207 85.793 197.626 45.7371 56.6373 251.7 27.0237 21.2761 
+100 14.2049 85.7951 197.611 45.7411 56.6475 251.69 27.0276 21.2823 
+##CONCENTRATIONS
+#t MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP 
+
+
diff --git a/examples/MAPK_10000pt.objfun b/examples/MAPK_10000pt.objfun
new file mode 100644
index 0000000..3d896b4
--- /dev/null
+++ b/examples/MAPK_10000pt.objfun
@@ -0,0 +1,4 @@
+# Example of a nonlinear objective function used in adjsenstest_ContDiscData.c
+1/10000 * 100 * 1/2 * ((MKKK - MKKK_data)^2 + (MKKK_P - MKKK_P_data)^2 + (MKK - MKK_data)^2+(MKK_P - MKK_P_data)^2+(MKK_PP - MKK_PP_data)^2 + (MAPK - MAPK_data)^2 + (MAPK_P - MAPK_P_data)^2 + (MAPK_PP - MAPK_PP_data )^2)
+
+
diff --git a/examples/MAPK_1000pt.dat b/examples/MAPK_1000pt.dat
new file mode 100644
index 0000000..5bed47b
--- /dev/null
+++ b/examples/MAPK_1000pt.dat
@@ -0,0 +1,1007 @@
+#t MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP 
+##CONCENTRATIONS
+0 90 10 280 10 10 280 10 10 
+0.1 89.9073 10.0927 280.006 10.0138 9.98007 279.996 10.0137 9.99 
+0.2 89.8146 10.1854 280.012 10.0276 9.96027 279.993 10.0273 9.98 
+0.3 89.722 10.278 280.018 10.0414 9.94062 279.989 10.0409 9.97 
+0.4 89.6293 10.3707 280.024 10.0554 9.9211 279.986 10.0544 9.96 
+0.5 89.5367 10.4633 280.029 10.0694 9.90171 279.982 10.0678 9.95 
+0.6 89.4441 10.5559 280.034 10.0834 9.88246 279.979 10.0812 9.94001 
+0.7 89.3514 10.6486 280.039 10.0975 9.86335 279.975 10.0945 9.93001 
+0.8 89.2588 10.7412 280.044 10.1117 9.84438 279.972 10.1078 9.92001 
+0.9 89.1662 10.8338 280.049 10.1259 9.82554 279.969 10.121 9.91002 
+1 89.0736 10.9264 280.053 10.1402 9.80684 279.966 10.1341 9.90002 
+1.1 88.981 11.019 280.057 10.1545 9.78828 279.963 10.1472 9.89003 
+1.2 88.8884 11.1116 280.061 10.1689 9.76985 279.96 10.1602 9.88004 
+1.3 88.7958 11.2042 280.065 10.1834 9.75156 279.957 10.1732 9.87005 
+1.4 88.7033 11.2967 280.069 10.1979 9.73341 279.954 10.1861 9.86005 
+1.5 88.6107 11.3893 280.072 10.2125 9.71539 279.951 10.1989 9.85007 
+1.6 88.5181 11.4819 280.075 10.2271 9.69751 279.948 10.2117 9.84008 
+1.7 88.4255 11.5745 280.078 10.2418 9.67977 279.946 10.2244 9.83009 
+1.8 88.333 11.667 280.081 10.2565 9.66216 279.943 10.2371 9.82011 
+1.9 88.2404 11.7596 280.084 10.2713 9.64469 279.94 10.2497 9.81012 
+2 88.1478 11.8522 280.087 10.2861 9.62736 279.938 10.2622 9.80014 
+2.1 88.0553 11.9447 280.089 10.301 9.61016 279.935 10.2747 9.79016 
+2.2 87.9627 12.0373 280.091 10.316 9.5931 279.933 10.2871 9.78018 
+2.3 87.8702 12.1298 280.093 10.331 9.57617 279.93 10.2995 9.77021 
+2.4 87.7776 12.2224 280.094 10.3461 9.55939 279.928 10.3118 9.76023 
+2.5 87.6851 12.3149 280.096 10.3613 9.54273 279.926 10.3241 9.75026 
+2.6 87.5925 12.4075 280.097 10.3764 9.52622 279.923 10.3363 9.74029 
+2.7 87.4999 12.5001 280.098 10.3917 9.50984 279.921 10.3484 9.73032 
+2.8 87.4074 12.5926 280.099 10.407 9.4936 279.919 10.3605 9.72035 
+2.9 87.3148 12.6852 280.1 10.4224 9.47749 279.917 10.3725 9.71039 
+3 87.2222 12.7778 280.101 10.4378 9.46152 279.915 10.3845 9.70043 
+3.1 87.1297 12.8703 280.101 10.4533 9.44569 279.913 10.3965 9.69047 
+3.2 87.0371 12.9629 280.101 10.4688 9.42999 279.911 10.4083 9.68052 
+3.3 86.9445 13.0555 280.101 10.4844 9.41443 279.909 10.4201 9.67056 
+3.4 86.8519 13.1481 280.101 10.5 9.399 279.907 10.4319 9.66061 
+3.5 86.7594 13.2406 280.101 10.5157 9.38371 279.906 10.4436 9.65067 
+3.6 86.6668 13.3332 280.1 10.5315 9.36856 279.904 10.4553 9.64072 
+3.7 86.5742 13.4258 280.099 10.5473 9.35355 279.902 10.4669 9.63078 
+3.8 86.4816 13.5184 280.098 10.5632 9.33867 279.901 10.4785 9.62084 
+3.9 86.389 13.611 280.097 10.5791 9.32392 279.899 10.49 9.61091 
+4 86.2964 13.7036 280.096 10.5951 9.30931 279.898 10.5014 9.60098 
+4.1 86.2037 13.7963 280.094 10.6111 9.29484 279.896 10.5128 9.59105 
+4.2 86.1111 13.8889 280.092 10.6272 9.28051 279.895 10.5242 9.58113 
+4.3 86.0185 13.9815 280.09 10.6434 9.26631 279.893 10.5355 9.5712 
+4.4 85.9258 14.0742 280.088 10.6596 9.25224 279.892 10.5467 9.56129 
+4.5 85.8332 14.1668 280.086 10.6758 9.23832 279.891 10.5579 9.55137 
+4.6 85.7405 14.2595 280.083 10.6922 9.22452 279.889 10.5691 9.54147 
+4.7 85.6479 14.3521 280.081 10.7085 9.21087 279.888 10.5802 9.53156 
+4.8 85.5552 14.4448 280.078 10.725 9.19735 279.887 10.5912 9.52166 
+4.9 85.4625 14.5375 280.075 10.7415 9.18396 279.886 10.6023 9.51176 
+5 85.3698 14.6302 280.071 10.758 9.17072 279.885 10.6132 9.50187 
+5.1 85.2771 14.7229 280.068 10.7746 9.1576 279.884 10.6241 9.49198 
+5.2 85.1844 14.8156 280.064 10.7913 9.14463 279.883 10.635 9.4821 
+5.3 85.0917 14.9083 280.06 10.808 9.13179 279.882 10.6458 9.47222 
+5.4 84.999 15.001 280.056 10.8247 9.11908 279.881 10.6566 9.46235 
+5.5 84.9062 15.0938 280.052 10.8416 9.10651 279.88 10.6673 9.45248 
+5.6 84.8135 15.1865 280.047 10.8584 9.09408 279.879 10.6779 9.44261 
+5.7 84.7207 15.2793 280.043 10.8754 9.08178 279.879 10.6886 9.43276 
+5.8 84.6279 15.3721 280.038 10.8924 9.06962 279.878 10.6991 9.4229 
+5.9 84.5351 15.4649 280.033 10.9094 9.0576 279.877 10.7097 9.41305 
+6 84.4423 15.5577 280.028 10.9265 9.0457 279.877 10.7202 9.40321 
+6.1 84.3495 15.6505 280.022 10.9437 9.03395 279.876 10.7306 9.39337 
+6.2 84.2567 15.7433 280.017 10.9609 9.02233 279.875 10.741 9.38354 
+6.3 84.1639 15.8361 280.011 10.9782 9.01085 279.875 10.7514 9.37371 
+6.4 84.071 15.929 280.005 10.9955 8.9995 279.874 10.7617 9.36389 
+6.5 83.9782 16.0218 279.999 11.0129 8.98829 279.874 10.7719 9.35408 
+6.6 83.8853 16.1147 279.992 11.0303 8.97721 279.874 10.7821 9.34427 
+6.7 83.7924 16.2076 279.986 11.0478 8.96627 279.873 10.7923 9.33446 
+6.8 83.6995 16.3005 279.979 11.0654 8.95546 279.873 10.8025 9.32467 
+6.9 83.6066 16.3934 279.972 11.083 8.94479 279.873 10.8125 9.31488 
+7 83.5136 16.4864 279.965 11.1006 8.93426 279.872 10.8226 9.30509 
+7.1 83.4207 16.5793 279.958 11.1183 8.92386 279.872 10.8326 9.29531 
+7.2 83.3277 16.6723 279.95 11.1361 8.9136 279.872 10.8426 9.28554 
+7.3 83.2347 16.7653 279.943 11.1539 8.90347 279.872 10.8525 9.27578 
+7.4 83.1418 16.8582 279.935 11.1718 8.89347 279.872 10.8624 9.26602 
+7.5 83.0487 16.9513 279.927 11.1898 8.88362 279.872 10.8722 9.25627 
+7.6 82.9557 17.0443 279.918 11.2078 8.87389 279.871 10.882 9.24653 
+7.7 82.8627 17.1373 279.91 11.2258 8.86431 279.871 10.8917 9.23679 
+7.8 82.7696 17.2304 279.901 11.2439 8.85485 279.871 10.9015 9.22706 
+7.9 82.6766 17.3234 279.892 11.2621 8.84554 279.872 10.9111 9.21734 
+8 82.5835 17.4165 279.883 11.2803 8.83636 279.872 10.9208 9.20762 
+8.1 82.4904 17.5096 279.874 11.2986 8.82731 279.872 10.9303 9.19792 
+8.2 82.3972 17.6028 279.865 11.3169 8.8184 279.872 10.9399 9.18822 
+8.3 82.3041 17.6959 279.855 11.3353 8.80962 279.872 10.9494 9.17852 
+8.4 82.2109 17.7891 279.845 11.3538 8.80098 279.872 10.9589 9.16884 
+8.5 82.1178 17.8822 279.835 11.3723 8.79248 279.873 10.9683 9.15917 
+8.6 82.0246 17.9754 279.825 11.3908 8.78411 279.873 10.9777 9.1495 
+8.7 81.9314 18.0686 279.815 11.4094 8.77587 279.873 10.9871 9.13984 
+8.8 81.8382 18.1618 279.804 11.4281 8.76777 279.873 10.9964 9.13019 
+8.9 81.7449 18.2551 279.793 11.4468 8.7598 279.874 11.0057 9.12054 
+9 81.6517 18.3483 279.782 11.4656 8.75197 279.874 11.0149 9.11091 
+9.1 81.5584 18.4416 279.771 11.4844 8.74428 279.875 11.0241 9.10129 
+9.2 81.4651 18.5349 279.76 11.5033 8.73672 279.875 11.0333 9.09167 
+9.3 81.3718 18.6282 279.748 11.5223 8.72929 279.875 11.0424 9.08206 
+9.4 81.2784 18.7216 279.737 11.5413 8.722 279.876 11.0515 9.07246 
+9.5 81.1851 18.8149 279.725 11.5603 8.71484 279.877 11.0606 9.06287 
+9.6 81.0917 18.9083 279.713 11.5794 8.70782 279.877 11.0696 9.05329 
+9.7 80.9983 19.0017 279.7 11.5986 8.70094 279.878 11.0786 9.04372 
+9.8 80.9049 19.0951 279.688 11.6178 8.69419 279.878 11.0876 9.03416 
+9.9 80.8115 19.1885 279.675 11.6371 8.68757 279.879 11.0965 9.02461 
+10 80.718 19.282 279.662 11.6565 8.68109 279.88 11.1054 9.01507 
+10.1 80.6245 19.3755 279.649 11.6759 8.67474 279.88 11.1142 9.00554 
+10.2 80.5311 19.4689 279.636 11.6953 8.66853 279.881 11.123 8.99601 
+10.3 80.4376 19.5624 279.623 11.7148 8.66245 279.882 11.1318 8.9865 
+10.4 80.344 19.656 279.609 11.7344 8.65651 279.882 11.1406 8.977 
+10.5 80.2505 19.7495 279.595 11.754 8.6507 279.883 11.1493 8.96751 
+10.6 80.1569 19.8431 279.581 11.7737 8.64503 279.884 11.1579 8.95803 
+10.7 80.0633 19.9367 279.567 11.7934 8.63949 279.885 11.1666 8.94855 
+10.8 79.9697 20.0303 279.553 11.8132 8.63408 279.886 11.1752 8.93909 
+10.9 79.8761 20.1239 279.538 11.8331 8.62881 279.887 11.1838 8.92964 
+11 79.7824 20.2176 279.523 11.853 8.62368 279.887 11.1923 8.92021 
+11.1 79.6888 20.3112 279.508 11.8729 8.61868 279.888 11.2008 8.91078 
+11.2 79.5951 20.4049 279.493 11.893 8.61381 279.889 11.2093 8.90136 
+11.3 79.5014 20.4986 279.478 11.913 8.60908 279.89 11.2178 8.89196 
+11.4 79.4076 20.5924 279.462 11.9332 8.60448 279.891 11.2262 8.88256 
+11.5 79.3139 20.6861 279.447 11.9533 8.60002 279.892 11.2346 8.87318 
+11.6 79.2201 20.7799 279.431 11.9736 8.59569 279.893 11.2429 8.86381 
+11.7 79.1263 20.8737 279.415 11.9939 8.5915 279.894 11.2513 8.85445 
+11.8 79.0325 20.9675 279.398 12.0142 8.58744 279.895 11.2596 8.8451 
+11.9 78.9386 21.0614 279.382 12.0347 8.58351 279.896 11.2678 8.83577 
+12 78.8448 21.1552 279.365 12.0551 8.57972 279.898 11.276 8.82644 
+12.1 78.7509 21.2491 279.348 12.0757 8.57606 279.899 11.2843 8.81713 
+12.2 78.657 21.343 279.331 12.0962 8.57254 279.9 11.2924 8.80783 
+12.3 78.5631 21.4369 279.314 12.1169 8.56915 279.901 11.3006 8.79854 
+12.4 78.4691 21.5309 279.297 12.1376 8.5659 279.902 11.3087 8.78927 
+12.5 78.3752 21.6248 279.279 12.1583 8.56278 279.903 11.3168 8.78001 
+12.6 78.2812 21.7188 279.261 12.1791 8.55979 279.904 11.3248 8.77076 
+12.7 78.1872 21.8128 279.243 12.2 8.55694 279.906 11.3329 8.76152 
+12.8 78.0931 21.9069 279.225 12.2209 8.55422 279.907 11.3409 8.7523 
+12.9 77.9991 22.0009 279.206 12.2419 8.55164 279.908 11.3488 8.74309 
+13 77.905 22.095 279.188 12.263 8.54919 279.909 11.3568 8.73389 
+13.1 77.8109 22.1891 279.169 12.2841 8.54688 279.911 11.3647 8.72471 
+13.2 77.7168 22.2832 279.15 12.3052 8.5447 279.912 11.3726 8.71554 
+13.3 77.6226 22.3774 279.131 12.3264 8.54265 279.913 11.3805 8.70638 
+13.4 77.5285 22.4715 279.112 12.3477 8.54074 279.914 11.3883 8.69724 
+13.5 77.4343 22.5657 279.092 12.369 8.53896 279.916 11.3961 8.68811 
+13.6 77.3401 22.6599 279.072 12.3904 8.53732 279.917 11.4039 8.67899 
+13.7 77.2458 22.7542 279.052 12.4118 8.53581 279.918 11.4116 8.66989 
+13.8 77.1516 22.8484 279.032 12.4333 8.53443 279.92 11.4194 8.66081 
+13.9 77.0573 22.9427 279.012 12.4549 8.53319 279.921 11.4271 8.65173 
+14 76.963 23.037 278.991 12.4765 8.53208 279.923 11.4348 8.64268 
+14.1 76.8687 23.1313 278.971 12.4982 8.5311 279.924 11.4424 8.63363 
+14.2 76.7743 23.2257 278.95 12.5199 8.53026 279.925 11.45 8.6246 
+14.3 76.68 23.32 278.929 12.5417 8.52956 279.927 11.4577 8.61559 
+14.4 76.5856 23.4144 278.908 12.5635 8.52898 279.928 11.4652 8.60659 
+14.5 76.4912 23.5088 278.886 12.5854 8.52855 279.93 11.4728 8.59761 
+14.6 76.3967 23.6033 278.864 12.6074 8.52824 279.931 11.4803 8.58864 
+14.7 76.3023 23.6977 278.843 12.6294 8.52807 279.932 11.4878 8.57968 
+14.8 76.2078 23.7922 278.821 12.6514 8.52803 279.934 11.4953 8.57074 
+14.9 76.1133 23.8867 278.798 12.6736 8.52813 279.935 11.5028 8.56182 
+15 76.0188 23.9812 278.776 12.6958 8.52836 279.937 11.5102 8.55291 
+15.1 75.9242 24.0758 278.753 12.718 8.52872 279.938 11.5176 8.54402 
+15.2 75.8297 24.1703 278.73 12.7403 8.52922 279.94 11.525 8.53514 
+15.3 75.7351 24.2649 278.707 12.7627 8.52985 279.941 11.5324 8.52628 
+15.4 75.6405 24.3595 278.684 12.7851 8.53062 279.943 11.5397 8.51744 
+15.5 75.5458 24.4542 278.661 12.8076 8.53152 279.944 11.5471 8.50861 
+15.6 75.4512 24.5488 278.637 12.8301 8.53255 279.946 11.5544 8.4998 
+15.7 75.3565 24.6435 278.614 12.8527 8.53372 279.947 11.5617 8.49101 
+15.8 75.2618 24.7382 278.59 12.8753 8.53502 279.949 11.5689 8.48223 
+15.9 75.167 24.833 278.566 12.898 8.53645 279.95 11.5762 8.47347 
+16 75.0723 24.9277 278.541 12.9208 8.53802 279.952 11.5834 8.46472 
+16.1 74.9775 25.0225 278.517 12.9436 8.53972 279.953 11.5906 8.45599 
+16.2 74.8827 25.1173 278.492 12.9665 8.54155 279.955 11.5978 8.44728 
+16.3 74.7879 25.2121 278.467 12.9894 8.54352 279.956 11.6049 8.43859 
+16.4 74.6931 25.3069 278.442 13.0124 8.54562 279.958 11.6121 8.42991 
+16.5 74.5982 25.4018 278.417 13.0355 8.54786 279.96 11.6192 8.42126 
+16.6 74.5033 25.4967 278.391 13.0586 8.55023 279.961 11.6263 8.41261 
+16.7 74.4084 25.5916 278.365 13.0818 8.55273 279.963 11.6334 8.40399 
+16.8 74.3135 25.6865 278.34 13.105 8.55537 279.964 11.6404 8.39538 
+16.9 74.2185 25.7815 278.314 13.1283 8.55814 279.966 11.6475 8.3868 
+17 74.1236 25.8764 278.287 13.1516 8.56104 279.967 11.6545 8.37823 
+17.1 74.0286 25.9714 278.261 13.175 8.56408 279.969 11.6615 8.36968 
+17.2 73.9335 26.0665 278.234 13.1985 8.56725 279.97 11.6685 8.36114 
+17.3 73.8385 26.1615 278.207 13.222 8.57055 279.972 11.6754 8.35263 
+17.4 73.7434 26.2566 278.18 13.2456 8.57399 279.973 11.6824 8.34413 
+17.5 73.6484 26.3516 278.153 13.2692 8.57756 279.975 11.6893 8.33565 
+17.6 73.5532 26.4468 278.126 13.2929 8.58126 279.977 11.6962 8.32719 
+17.7 73.4581 26.5419 278.098 13.3167 8.5851 279.978 11.7031 8.31875 
+17.8 73.363 26.637 278.07 13.3405 8.58907 279.98 11.71 8.31033 
+17.9 73.2678 26.7322 278.042 13.3644 8.59318 279.981 11.7169 8.30193 
+18 73.1726 26.8274 278.014 13.3883 8.59742 279.983 11.7237 8.29355 
+18.1 73.0774 26.9226 277.986 13.4123 8.60179 279.984 11.7305 8.28519 
+18.2 72.9821 27.0179 277.957 13.4363 8.60629 279.986 11.7374 8.27684 
+18.3 72.8869 27.1131 277.929 13.4604 8.61093 279.987 11.7442 8.26852 
+18.4 72.7916 27.2084 277.9 13.4846 8.61571 279.989 11.7509 8.26021 
+18.5 72.6963 27.3037 277.871 13.5088 8.62061 279.99 11.7577 8.25193 
+18.6 72.601 27.399 277.841 13.5331 8.62565 279.992 11.7645 8.24366 
+18.7 72.5056 27.4944 277.812 13.5574 8.63082 279.993 11.7712 8.23542 
+18.8 72.4103 27.5897 277.782 13.5818 8.63613 279.995 11.7779 8.22719 
+18.9 72.3149 27.6851 277.752 13.6063 8.64157 279.996 11.7846 8.21899 
+19 72.2195 27.7805 277.722 13.6308 8.64714 279.998 11.7913 8.21081 
+19.1 72.124 27.876 277.692 13.6554 8.65285 279.999 11.798 8.20264 
+19.2 72.0286 27.9714 277.661 13.68 8.65869 280.001 11.8047 8.1945 
+19.3 71.9331 28.0669 277.631 13.7047 8.66466 280.002 11.8113 8.18638 
+19.4 71.8376 28.1624 277.6 13.7295 8.67077 280.004 11.8179 8.17828 
+19.5 71.7421 28.2579 277.569 13.7543 8.67701 280.005 11.8246 8.1702 
+19.6 71.6466 28.3534 277.537 13.7792 8.68338 280.007 11.8312 8.16214 
+19.7 71.551 28.449 277.506 13.8041 8.68989 280.008 11.8378 8.15411 
+19.8 71.4554 28.5446 277.474 13.8291 8.69653 280.01 11.8444 8.14609 
+19.9 71.3598 28.6402 277.443 13.8541 8.7033 280.011 11.8509 8.1381 
+20 71.2642 28.7358 277.411 13.8792 8.71021 280.012 11.8575 8.13013 
+20.1 71.1686 28.8314 277.378 13.9044 8.71725 280.014 11.864 8.12218 
+20.2 71.0729 28.9271 277.346 13.9296 8.72442 280.015 11.8706 8.11425 
+20.3 70.9772 29.0228 277.313 13.9549 8.73173 280.017 11.8771 8.10634 
+20.4 70.8815 29.1185 277.281 13.9802 8.73917 280.018 11.8836 8.09846 
+20.5 70.7858 29.2142 277.248 14.0056 8.74674 280.019 11.8901 8.0906 
+20.6 70.6901 29.3099 277.214 14.0311 8.75445 280.021 11.8966 8.08276 
+20.7 70.5943 29.4057 277.181 14.0566 8.76229 280.022 11.9031 8.07494 
+20.8 70.4985 29.5015 277.148 14.0822 8.77027 280.023 11.9096 8.06715 
+20.9 70.4027 29.5973 277.114 14.1078 8.77837 280.025 11.916 8.05938 
+21 70.3069 29.6931 277.08 14.1335 8.78661 280.026 11.9225 8.05163 
+21.1 70.2111 29.7889 277.046 14.1593 8.79499 280.027 11.9289 8.0439 
+21.2 70.1152 29.8848 277.011 14.1851 8.8035 280.028 11.9353 8.0362 
+21.3 70.0193 29.9807 276.977 14.211 8.81214 280.03 11.9418 8.02852 
+21.4 69.9235 30.0765 276.942 14.2369 8.82091 280.031 11.9482 8.02087 
+21.5 69.8275 30.1725 276.907 14.2629 8.82982 280.032 11.9546 8.01324 
+21.6 69.7316 30.2684 276.872 14.289 8.83886 280.033 11.961 8.00563 
+21.7 69.6357 30.3643 276.837 14.3151 8.84804 280.035 11.9674 7.99805 
+21.8 69.5397 30.4603 276.801 14.3413 8.85735 280.036 11.9737 7.99049 
+21.9 69.4437 30.5563 276.766 14.3675 8.86679 280.037 11.9801 7.98295 
+22 69.3477 30.6523 276.73 14.3938 8.87637 280.038 11.9864 7.97544 
+22.1 69.2517 30.7483 276.694 14.4201 8.88608 280.039 11.9928 7.96795 
+22.2 69.1556 30.8444 276.658 14.4466 8.89592 280.04 11.9991 7.96049 
+22.3 69.0596 30.9404 276.621 14.473 8.9059 280.041 12.0055 7.95305 
+22.4 68.9635 31.0365 276.584 14.4996 8.91601 280.043 12.0118 7.94563 
+22.5 68.8674 31.1326 276.548 14.5261 8.92625 280.044 12.0181 7.93824 
+22.6 68.7713 31.2287 276.511 14.5528 8.93663 280.045 12.0244 7.93088 
+22.7 68.6752 31.3248 276.473 14.5795 8.94714 280.046 12.0307 7.92354 
+22.8 68.579 31.421 276.436 14.6063 8.95779 280.047 12.037 7.91622 
+22.9 68.4828 31.5172 276.398 14.6331 8.96856 280.048 12.0433 7.90893 
+23 68.3867 31.6133 276.361 14.66 8.97948 280.049 12.0496 7.90167 
+23.1 68.2905 31.7095 276.323 14.6869 8.99052 280.05 12.0559 7.89443 
+23.2 68.1943 31.8057 276.284 14.7139 9.0017 280.051 12.0622 7.88722 
+23.3 68.098 31.902 276.246 14.741 9.01301 280.052 12.0685 7.88003 
+23.4 68.0018 31.9982 276.207 14.7681 9.02446 280.052 12.0747 7.87287 
+23.5 67.9055 32.0945 276.169 14.7953 9.03604 280.053 12.081 7.86574 
+23.6 67.8092 32.1908 276.13 14.8225 9.04775 280.054 12.0872 7.85863 
+23.7 67.7129 32.2871 276.091 14.8498 9.0596 280.055 12.0935 7.85154 
+23.8 67.6166 32.3834 276.051 14.8772 9.07158 280.056 12.0997 7.84449 
+23.9 67.5203 32.4797 276.012 14.9046 9.0837 280.057 12.106 7.83746 
+24 67.424 32.576 275.972 14.9321 9.09595 280.057 12.1122 7.83045 
+24.1 67.3276 32.6724 275.932 14.9596 9.10833 280.058 12.1185 7.82348 
+24.2 67.2312 32.7688 275.892 14.9872 9.12085 280.059 12.1247 7.81653 
+24.3 67.1349 32.8651 275.852 15.0149 9.1335 280.059 12.1309 7.8096 
+24.4 67.0385 32.9615 275.811 15.0426 9.14628 280.06 12.1371 7.80271 
+24.5 66.942 33.058 275.77 15.0704 9.1592 280.061 12.1434 7.79584 
+24.6 66.8456 33.1544 275.73 15.0982 9.17225 280.061 12.1496 7.789 
+24.7 66.7492 33.2508 275.688 15.1261 9.18544 280.062 12.1558 7.78218 
+24.8 66.6527 33.3473 275.647 15.1541 9.19876 280.063 12.162 7.7754 
+24.9 66.5562 33.4438 275.606 15.1821 9.21221 280.063 12.1682 7.76864 
+25 66.4598 33.5402 275.564 15.2102 9.2258 280.064 12.1744 7.76191 
+25.1 66.3633 33.6367 275.522 15.2383 9.23952 280.064 12.1806 7.7552 
+25.2 66.2667 33.7333 275.48 15.2665 9.25338 280.065 12.1869 7.74853 
+25.3 66.1702 33.8298 275.438 15.2948 9.26737 280.065 12.1931 7.74188 
+25.4 66.0737 33.9263 275.395 15.3231 9.28149 280.065 12.1993 7.73526 
+25.5 65.9771 34.0229 275.353 15.3515 9.29575 280.066 12.2055 7.72867 
+25.6 65.8806 34.1194 275.31 15.3799 9.31015 280.066 12.2117 7.72211 
+25.7 65.784 34.216 275.267 15.4084 9.32467 280.067 12.2179 7.71558 
+25.8 65.6874 34.3126 275.224 15.4369 9.33933 280.067 12.2241 7.70907 
+25.9 65.5908 34.4092 275.18 15.4656 9.35413 280.067 12.2303 7.7026 
+26 65.4942 34.5058 275.137 15.4942 9.36906 280.067 12.2365 7.69615 
+26.1 65.3976 34.6024 275.093 15.523 9.38412 280.068 12.2427 7.68974 
+26.2 65.3009 34.6991 275.049 15.5517 9.39932 280.068 12.2489 7.68335 
+26.3 65.2043 34.7957 275.005 15.5806 9.41465 280.068 12.2551 7.67699 
+26.4 65.1076 34.8924 274.96 15.6095 9.43012 280.068 12.2613 7.67066 
+26.5 65.011 34.989 274.916 15.6385 9.44572 280.068 12.2675 7.66436 
+26.6 64.9143 35.0857 274.871 15.6675 9.46145 280.068 12.2737 7.65809 
+26.7 64.8176 35.1824 274.826 15.6966 9.47732 280.068 12.2799 7.65185 
+26.8 64.7209 35.2791 274.781 15.7257 9.49333 280.068 12.2861 7.64564 
+26.9 64.6242 35.3758 274.736 15.7549 9.50947 280.068 12.2923 7.63946 
+27 64.5275 35.4725 274.69 15.7842 9.52574 280.068 12.2985 7.63331 
+27.1 64.4308 35.5692 274.644 15.8135 9.54215 280.068 12.3047 7.62719 
+27.2 64.334 35.666 274.598 15.8429 9.55869 280.068 12.3109 7.62111 
+27.3 64.2373 35.7627 274.552 15.8723 9.57537 280.068 12.3172 7.61505 
+27.4 64.1405 35.8595 274.506 15.9018 9.59218 280.068 12.3234 7.60902 
+27.5 64.0438 35.9562 274.459 15.9314 9.60912 280.067 12.3296 7.60302 
+27.6 63.947 36.053 274.413 15.961 9.6262 280.067 12.3358 7.59706 
+27.7 63.8502 36.1498 274.366 15.9907 9.64342 280.067 12.3421 7.59112 
+27.8 63.7534 36.2466 274.319 16.0204 9.66077 280.066 12.3483 7.58522 
+27.9 63.6567 36.3433 274.272 16.0502 9.67825 280.066 12.3545 7.57935 
+28 63.5599 36.4401 274.224 16.0801 9.69587 280.066 12.3608 7.57351 
+28.1 63.463 36.537 274.176 16.11 9.71363 280.065 12.367 7.5677 
+28.2 63.3662 36.6338 274.129 16.14 9.73152 280.065 12.3733 7.56192 
+28.3 63.2694 36.7306 274.08 16.17 9.74954 280.064 12.3795 7.55618 
+28.4 63.1726 36.8274 274.032 16.2001 9.7677 280.064 12.3858 7.55047 
+28.5 63.0758 36.9242 273.984 16.2303 9.786 280.063 12.392 7.54478 
+28.6 62.9789 37.0211 273.935 16.2605 9.80443 280.063 12.3983 7.53914 
+28.7 62.8821 37.1179 273.886 16.2907 9.82299 280.062 12.4046 7.53352 
+28.8 62.7852 37.2148 273.837 16.3211 9.84169 280.061 12.4109 7.52793 
+28.9 62.6884 37.3116 273.788 16.3514 9.86053 280.06 12.4172 7.52238 
+29 62.5915 37.4085 273.739 16.3819 9.8795 280.06 12.4234 7.51686 
+29.1 62.4946 37.5054 273.689 16.4124 9.8986 280.059 12.4297 7.51138 
+29.2 62.3978 37.6022 273.639 16.443 9.91784 280.058 12.436 7.50592 
+29.3 62.3009 37.6991 273.589 16.4736 9.93722 280.057 12.4424 7.5005 
+29.4 62.204 37.796 273.539 16.5043 9.95673 280.056 12.4487 7.49512 
+29.5 62.1071 37.8929 273.489 16.535 9.97638 280.055 12.455 7.48976 
+29.6 62.0102 37.9898 273.438 16.5658 9.99616 280.054 12.4613 7.48444 
+29.7 61.9134 38.0866 273.387 16.5966 10.0161 280.053 12.4677 7.47916 
+29.8 61.8165 38.1835 273.336 16.6276 10.0361 280.052 12.474 7.4739 
+29.9 61.7196 38.2804 273.285 16.6585 10.0563 280.051 12.4804 7.46868 
+30 61.6227 38.3773 273.234 16.6896 10.0766 280.05 12.4867 7.4635 
+30.1 61.5258 38.4742 273.182 16.7206 10.0971 280.049 12.4931 7.45835 
+30.2 61.4289 38.5711 273.131 16.7518 10.1177 280.047 12.4995 7.45323 
+30.3 61.332 38.668 273.079 16.783 10.1384 280.046 12.5059 7.44815 
+30.4 61.2351 38.7649 273.026 16.8143 10.1593 280.045 12.5123 7.4431 
+30.5 61.1382 38.8618 272.974 16.8456 10.1803 280.043 12.5187 7.43808 
+30.6 61.0413 38.9587 272.922 16.877 10.2014 280.042 12.5251 7.43311 
+30.7 60.9444 39.0556 272.869 16.9084 10.2227 280.04 12.5315 7.42816 
+30.8 60.8475 39.1525 272.816 16.9399 10.2441 280.039 12.5379 7.42325 
+30.9 60.7506 39.2494 272.763 16.9714 10.2657 280.037 12.5444 7.41838 
+31 60.6536 39.3464 272.71 17.0031 10.2873 280.036 12.5508 7.41354 
+31.1 60.5567 39.4433 272.656 17.0347 10.3092 280.034 12.5573 7.40873 
+31.2 60.4598 39.5402 272.602 17.0665 10.3311 280.032 12.5637 7.40396 
+31.3 60.3629 39.6371 272.549 17.0982 10.3532 280.031 12.5702 7.39923 
+31.4 60.266 39.734 272.494 17.1301 10.3754 280.029 12.5767 7.39453 
+31.5 60.1691 39.8309 272.44 17.162 10.3978 280.027 12.5832 7.38987 
+31.6 60.0722 39.9278 272.386 17.1939 10.4203 280.025 12.5897 7.38524 
+31.7 59.9754 40.0246 272.331 17.226 10.4429 280.023 12.5963 7.38065 
+31.8 59.8785 40.1215 272.276 17.258 10.4657 280.021 12.6028 7.3761 
+31.9 59.7816 40.2184 272.221 17.2902 10.4886 280.019 12.6093 7.37158 
+32 59.6847 40.3153 272.166 17.3223 10.5117 280.017 12.6159 7.3671 
+32.1 59.5878 40.4122 272.111 17.3546 10.5348 280.015 12.6225 7.36265 
+32.2 59.4909 40.5091 272.055 17.3869 10.5582 280.013 12.629 7.35825 
+32.3 59.3941 40.6059 271.999 17.4193 10.5816 280.01 12.6356 7.35387 
+32.4 59.2972 40.7028 271.943 17.4517 10.6052 280.008 12.6423 7.34954 
+32.5 59.2003 40.7997 271.887 17.4841 10.6289 280.006 12.6489 7.34524 
+32.6 59.1035 40.8965 271.831 17.5167 10.6528 280.004 12.6555 7.34098 
+32.7 59.0066 40.9934 271.774 17.5493 10.6768 280.001 12.6621 7.33676 
+32.8 58.9098 41.0902 271.717 17.5819 10.7009 279.999 12.6688 7.33257 
+32.9 58.8129 41.1871 271.66 17.6146 10.7252 279.996 12.6755 7.32842 
+33 58.7161 41.2839 271.603 17.6474 10.7496 279.994 12.6822 7.32431 
+33.1 58.6193 41.3807 271.546 17.6802 10.7742 279.991 12.6889 7.32024 
+33.2 58.5224 41.4776 271.488 17.7131 10.7988 279.988 12.6956 7.3162 
+33.3 58.4256 41.5744 271.43 17.746 10.8237 279.985 12.7023 7.3122 
+33.4 58.3288 41.6712 271.372 17.779 10.8486 279.983 12.7091 7.30824 
+33.5 58.232 41.768 271.314 17.812 10.8737 279.98 12.7158 7.30432 
+33.6 58.1352 41.8648 271.256 17.8451 10.899 279.977 12.7226 7.30044 
+33.7 58.0385 41.9615 271.197 17.8783 10.9243 279.974 12.7294 7.29659 
+33.8 57.9417 42.0583 271.139 17.9115 10.9498 279.971 12.7362 7.29279 
+33.9 57.8449 42.1551 271.08 17.9448 10.9755 279.968 12.743 7.28902 
+34 57.7482 42.2518 271.021 17.9781 11.0013 279.965 12.7498 7.28529 
+34.1 57.6514 42.3486 270.961 18.0115 11.0272 279.962 12.7567 7.2816 
+34.2 57.5547 42.4453 270.902 18.0449 11.0532 279.959 12.7635 7.27795 
+34.3 57.458 42.542 270.842 18.0784 11.0794 279.955 12.7704 7.27434 
+34.4 57.3613 42.6387 270.782 18.1119 11.1058 279.952 12.7773 7.27077 
+34.5 57.2646 42.7354 270.722 18.1455 11.1322 279.949 12.7842 7.26724 
+34.6 57.1679 42.8321 270.662 18.1792 11.1588 279.945 12.7912 7.26374 
+34.7 57.0712 42.9288 270.601 18.2129 11.1856 279.942 12.7981 7.26029 
+34.8 56.9745 43.0255 270.541 18.2467 11.2125 279.938 12.8051 7.25688 
+34.9 56.8779 43.1221 270.48 18.2805 11.2395 279.934 12.812 7.2535 
+35 56.7812 43.2188 270.419 18.3144 11.2667 279.931 12.819 7.25017 
+35.1 56.6846 43.3154 270.358 18.3483 11.2939 279.927 12.8261 7.24688 
+35.2 56.588 43.412 270.296 18.3823 11.3214 279.923 12.8331 7.24363 
+35.3 56.4914 43.5086 270.235 18.4164 11.349 279.919 12.8401 7.24041 
+35.4 56.3948 43.6052 270.173 18.4505 11.3767 279.916 12.8472 7.23724 
+35.5 56.2983 43.7017 270.111 18.4846 11.4045 279.912 12.8543 7.23411 
+35.6 56.2017 43.7983 270.049 18.5188 11.4325 279.908 12.8614 7.23102 
+35.7 56.1052 43.8948 269.986 18.5531 11.4606 279.903 12.8685 7.22797 
+35.8 56.0086 43.9914 269.924 18.5874 11.4889 279.899 12.8757 7.22496 
+35.9 55.9121 44.0879 269.861 18.6218 11.5173 279.895 12.8828 7.222 
+36 55.8157 44.1843 269.798 18.6562 11.5458 279.891 12.89 7.21907 
+36.1 55.7192 44.2808 269.735 18.6907 11.5745 279.887 12.8972 7.21619 
+36.2 55.6227 44.3773 269.671 18.7253 11.6033 279.882 12.9045 7.21334 
+36.3 55.5263 44.4737 269.608 18.7599 11.6323 279.878 12.9117 7.21054 
+36.4 55.4299 44.5701 269.544 18.7945 11.6614 279.873 12.919 7.20778 
+36.5 55.3335 44.6665 269.48 18.8292 11.6906 279.869 12.9262 7.20507 
+36.6 55.2371 44.7629 269.416 18.864 11.72 279.864 12.9335 7.20239 
+36.7 55.1407 44.8593 269.352 18.8988 11.7495 279.859 12.9409 7.19976 
+36.8 55.0444 44.9556 269.287 18.9337 11.7792 279.855 12.9482 7.19717 
+36.9 54.9481 45.0519 269.222 18.9686 11.8089 279.85 12.9556 7.19462 
+37 54.8518 45.1482 269.158 19.0036 11.8389 279.845 12.963 7.19212 
+37.1 54.7555 45.2445 269.092 19.0386 11.8689 279.84 12.9704 7.18966 
+37.2 54.6592 45.3408 269.027 19.0737 11.8991 279.835 12.9778 7.18724 
+37.3 54.563 45.437 268.962 19.1088 11.9295 279.83 12.9852 7.18486 
+37.4 54.4668 45.5332 268.896 19.144 11.96 279.825 12.9927 7.18253 
+37.5 54.3706 45.6294 268.83 19.1792 11.9906 279.82 13.0002 7.18024 
+37.6 54.2744 45.7256 268.764 19.2145 12.0214 279.814 13.0077 7.17799 
+37.7 54.1782 45.8218 268.698 19.2499 12.0523 279.809 13.0153 7.17579 
+37.8 54.0821 45.9179 268.631 19.2853 12.0833 279.804 13.0228 7.17363 
+37.9 53.986 46.014 268.565 19.3207 12.1145 279.798 13.0304 7.17151 
+38 53.8899 46.1101 268.498 19.3562 12.1458 279.793 13.038 7.16944 
+38.1 53.7939 46.2061 268.431 19.3918 12.1772 279.787 13.0456 7.16741 
+38.2 53.6978 46.3022 268.364 19.4274 12.2088 279.781 13.0533 7.16543 
+38.3 53.6018 46.3982 268.296 19.4631 12.2406 279.776 13.061 7.16349 
+38.4 53.5059 46.4941 268.229 19.4988 12.2725 279.77 13.0687 7.16159 
+38.5 53.4099 46.5901 268.161 19.5345 12.3045 279.764 13.0764 7.15974 
+38.6 53.314 46.686 268.093 19.5704 12.3366 279.758 13.0842 7.15794 
+38.7 53.2181 46.7819 268.025 19.6062 12.3689 279.752 13.0919 7.15618 
+38.8 53.1222 46.8778 267.956 19.6422 12.4014 279.746 13.0997 7.15446 
+38.9 53.0264 46.9736 267.888 19.6781 12.4339 279.74 13.1075 7.15279 
+39 52.9305 47.0695 267.819 19.7142 12.4667 279.733 13.1154 7.15117 
+39.1 52.8347 47.1653 267.75 19.7502 12.4995 279.727 13.1233 7.14958 
+39.2 52.739 47.261 267.681 19.7864 12.5325 279.721 13.1312 7.14805 
+39.3 52.6433 47.3567 267.612 19.8226 12.5656 279.714 13.1391 7.14656 
+39.4 52.5476 47.4524 267.542 19.8588 12.5989 279.708 13.147 7.14512 
+39.5 52.4519 47.5481 267.473 19.8951 12.6323 279.701 13.155 7.14372 
+39.6 52.3562 47.6438 267.403 19.9314 12.6659 279.695 13.163 7.14237 
+39.7 52.2606 47.7394 267.333 19.9678 12.6996 279.688 13.171 7.14106 
+39.8 52.165 47.835 267.262 20.0042 12.7334 279.681 13.1791 7.1398 
+39.9 52.0695 47.9305 267.192 20.0407 12.7674 279.674 13.1872 7.13859 
+40 51.974 48.026 267.121 20.0773 12.8015 279.667 13.1953 7.13742 
+40.1 51.8785 48.1215 267.05 20.1139 12.8358 279.66 13.2034 7.1363 
+40.2 51.7831 48.2169 266.979 20.1505 12.8702 279.653 13.2116 7.13523 
+40.3 51.6876 48.3124 266.908 20.1872 12.9047 279.646 13.2197 7.13421 
+40.4 51.5923 48.4077 266.837 20.2239 12.9394 279.639 13.2279 7.13323 
+40.5 51.4969 48.5031 266.765 20.2607 12.9742 279.632 13.2362 7.13229 
+40.6 51.4016 48.5984 266.693 20.2976 13.0092 279.624 13.2445 7.13141 
+40.7 51.3063 48.6937 266.621 20.3345 13.0443 279.617 13.2528 7.13057 
+40.8 51.2111 48.7889 266.549 20.3714 13.0795 279.609 13.2611 7.12978 
+40.9 51.1159 48.8841 266.477 20.4084 13.1149 279.602 13.2694 7.12904 
+41 51.0207 48.9793 266.404 20.4455 13.1504 279.594 13.2778 7.12835 
+41.1 50.9255 49.0745 266.331 20.4825 13.1861 279.586 13.2862 7.1277 
+41.2 50.8304 49.1696 266.258 20.5197 13.2219 279.578 13.2947 7.1271 
+41.3 50.7354 49.2646 266.185 20.5569 13.2578 279.57 13.3031 7.12655 
+41.4 50.6404 49.3596 266.112 20.5941 13.2939 279.562 13.3116 7.12605 
+41.5 50.5454 49.4546 266.038 20.6314 13.3302 279.554 13.3201 7.1256 
+41.6 50.4504 49.5496 265.965 20.6687 13.3665 279.546 13.3287 7.1252 
+41.7 50.3555 49.6445 265.891 20.7061 13.403 279.538 13.3373 7.12484 
+41.8 50.2607 49.7393 265.817 20.7436 13.4397 279.53 13.3459 7.12454 
+41.9 50.1658 49.8342 265.742 20.781 13.4765 279.521 13.3545 7.12428 
+42 50.071 49.929 265.668 20.8186 13.5134 279.513 13.3632 7.12407 
+42.1 49.9763 50.0237 265.593 20.8561 13.5505 279.504 13.3719 7.12391 
+42.2 49.8816 50.1184 265.519 20.8938 13.5877 279.496 13.3807 7.1238 
+42.3 49.7869 50.2131 265.443 20.9315 13.6251 279.487 13.3894 7.12374 
+42.4 49.6923 50.3077 265.368 20.9692 13.6626 279.478 13.3982 7.12373 
+42.5 49.5977 50.4023 265.293 21.0069 13.7002 279.469 13.407 7.12377 
+42.6 49.5032 50.4968 265.217 21.0448 13.738 279.46 13.4159 7.12386 
+42.7 49.4087 50.5913 265.141 21.0826 13.7759 279.451 13.4248 7.124 
+42.8 49.3143 50.6857 265.065 21.1205 13.814 279.442 13.4337 7.12419 
+42.9 49.2199 50.7801 264.989 21.1585 13.8522 279.433 13.4427 7.12444 
+43 49.1255 50.8745 264.913 21.1965 13.8905 279.424 13.4516 7.12473 
+43.1 49.0312 50.9688 264.836 21.2346 13.929 279.414 13.4607 7.12507 
+43.2 48.9369 51.0631 264.76 21.2727 13.9677 279.405 13.4697 7.12546 
+43.3 48.8427 51.1573 264.683 21.3108 14.0064 279.395 13.4788 7.12591 
+43.4 48.7485 51.2515 264.606 21.349 14.0453 279.386 13.4879 7.1264 
+43.5 48.6544 51.3456 264.528 21.3872 14.0844 279.376 13.4971 7.12695 
+43.6 48.5603 51.4397 264.451 21.4255 14.1236 279.366 13.5062 7.12755 
+43.7 48.4663 51.5337 264.373 21.4639 14.1629 279.356 13.5154 7.1282 
+43.8 48.3723 51.6277 264.295 21.5023 14.2024 279.346 13.5247 7.1289 
+43.9 48.2784 51.7216 264.217 21.5407 14.2421 279.336 13.534 7.12965 
+44 48.1845 51.8155 264.139 21.5791 14.2818 279.326 13.5433 7.13046 
+44.1 48.0907 51.9093 264.061 21.6177 14.3217 279.316 13.5526 7.13131 
+44.2 47.9969 52.0031 263.982 21.6562 14.3618 279.306 13.562 7.13222 
+44.3 47.9032 52.0968 263.903 21.6948 14.402 279.295 13.5714 7.13318 
+44.4 47.8095 52.1905 263.824 21.7335 14.4423 279.285 13.5809 7.1342 
+44.5 47.7159 52.2841 263.745 21.7722 14.4828 279.274 13.5904 7.13527 
+44.6 47.6223 52.3777 263.666 21.8109 14.5234 279.264 13.5999 7.13639 
+44.7 47.5288 52.4712 263.586 21.8497 14.5642 279.253 13.6094 7.13756 
+44.8 47.4353 52.5647 263.506 21.8886 14.6051 279.242 13.619 7.13878 
+44.9 47.3419 52.6581 263.426 21.9274 14.6461 279.231 13.6286 7.14006 
+45 47.2485 52.7515 263.346 21.9664 14.6873 279.22 13.6383 7.1414 
+45.1 47.1552 52.8448 263.266 22.0053 14.7286 279.209 13.648 7.14278 
+45.2 47.0619 52.9381 263.186 22.0443 14.7701 279.198 13.6577 7.14422 
+45.3 46.9687 53.0313 263.105 22.0834 14.8117 279.187 13.6675 7.14572 
+45.4 46.8756 53.1244 263.024 22.1225 14.8535 279.175 13.6773 7.14726 
+45.5 46.7825 53.2175 262.943 22.1616 14.8954 279.164 13.6871 7.14887 
+45.6 46.6895 53.3105 262.862 22.2008 14.9374 279.152 13.697 7.15052 
+45.7 46.5965 53.4035 262.78 22.24 14.9796 279.141 13.7069 7.15223 
+45.8 46.5036 53.4964 262.699 22.2793 15.022 279.129 13.7168 7.154 
+45.9 46.4107 53.5893 262.617 22.3186 15.0644 279.117 13.7268 7.15582 
+46 46.3179 53.6821 262.535 22.358 15.107 279.105 13.7369 7.15769 
+46.1 46.2252 53.7748 262.453 22.3974 15.1498 279.093 13.7469 7.15962 
+46.2 46.1325 53.8675 262.37 22.4368 15.1927 279.081 13.757 7.16161 
+46.3 46.0399 53.9601 262.288 22.4763 15.2357 279.069 13.7671 7.16365 
+46.4 45.9473 54.0527 262.205 22.5158 15.2789 279.057 13.7773 7.16574 
+46.5 45.8548 54.1452 262.122 22.5554 15.3223 279.045 13.7875 7.16789 
+46.6 45.7624 54.2376 262.039 22.595 15.3657 279.032 13.7978 7.1701 
+46.7 45.67 54.33 261.956 22.6347 15.4093 279.02 13.808 7.17236 
+46.8 45.5777 54.4223 261.873 22.6744 15.4531 279.007 13.8184 7.17468 
+46.9 45.4855 54.5145 261.789 22.7141 15.497 278.994 13.8287 7.17706 
+47 45.3933 54.6067 261.705 22.7539 15.541 278.981 13.8391 7.17949 
+47.1 45.3012 54.6988 261.621 22.7937 15.5852 278.968 13.8496 7.18197 
+47.2 45.2091 54.7909 261.537 22.8336 15.6295 278.955 13.86 7.18452 
+47.3 45.1171 54.8829 261.452 22.8735 15.674 278.942 13.8705 7.18712 
+47.4 45.0252 54.9748 261.368 22.9134 15.7186 278.929 13.8811 7.18978 
+47.5 44.9333 55.0667 261.283 22.9534 15.7634 278.916 13.8917 7.19249 
+47.6 44.8415 55.1585 261.198 22.9935 15.8083 278.902 13.9023 7.19526 
+47.7 44.7498 55.2502 261.113 23.0335 15.8533 278.889 13.913 7.19809 
+47.8 44.6581 55.3419 261.028 23.0736 15.8985 278.875 13.9237 7.20098 
+47.9 44.5665 55.4335 260.942 23.1138 15.9438 278.862 13.9345 7.20393 
+48 44.475 55.525 260.857 23.154 15.9893 278.848 13.9452 7.20693 
+48.1 44.3835 55.6165 260.771 23.1942 16.0349 278.834 13.9561 7.20999 
+48.2 44.2922 55.7078 260.685 23.2345 16.0807 278.82 13.967 7.21311 
+48.3 44.2008 55.7992 260.599 23.2748 16.1266 278.806 13.9779 7.21628 
+48.4 44.1096 55.8904 260.512 23.3151 16.1726 278.792 13.9888 7.21952 
+48.5 44.0184 55.9816 260.426 23.3555 16.2188 278.777 13.9998 7.22281 
+48.6 43.9273 56.0727 260.339 23.3959 16.2651 278.763 14.0109 7.22617 
+48.7 43.8363 56.1637 260.252 23.4364 16.3116 278.748 14.0219 7.22958 
+48.8 43.7453 56.2547 260.165 23.4769 16.3582 278.734 14.033 7.23305 
+48.9 43.6544 56.3456 260.078 23.5174 16.405 278.719 14.0442 7.23658 
+49 43.5636 56.4364 259.99 23.558 16.4519 278.704 14.0554 7.24017 
+49.1 43.4728 56.5272 259.902 23.5986 16.4989 278.69 14.0667 7.24382 
+49.2 43.3822 56.6178 259.815 23.6393 16.5461 278.675 14.0779 7.24753 
+49.3 43.2916 56.7084 259.727 23.68 16.5934 278.659 14.0893 7.25129 
+49.4 43.201 56.799 259.638 23.7207 16.6409 278.644 14.1006 7.25512 
+49.5 43.1106 56.8894 259.55 23.7615 16.6885 278.629 14.112 7.25901 
+49.6 43.0202 56.9798 259.461 23.8023 16.7363 278.614 14.1235 7.26296 
+49.7 42.9299 57.0701 259.373 23.8431 16.7842 278.598 14.135 7.26697 
+49.8 42.8397 57.1603 259.284 23.884 16.8322 278.582 14.1465 7.27104 
+49.9 42.7496 57.2504 259.195 23.9249 16.8804 278.567 14.1581 7.27517 
+50 42.6595 57.3405 259.105 23.9659 16.9288 278.551 14.1698 7.27936 
+50.1 42.5695 57.4305 259.016 24.0069 16.9772 278.535 14.1814 7.28361 
+50.2 42.4796 57.5204 258.926 24.0479 17.0258 278.519 14.1931 7.28793 
+50.3 42.3898 57.6102 258.836 24.089 17.0746 278.503 14.2049 7.2923 
+50.4 42.3 57.7 258.746 24.1301 17.1235 278.487 14.2167 7.29674 
+50.5 42.2103 57.7897 258.656 24.1712 17.1726 278.47 14.2285 7.30124 
+50.6 42.1208 57.8792 258.566 24.2124 17.2217 278.454 14.2404 7.3058 
+50.7 42.0313 57.9687 258.475 24.2536 17.2711 278.437 14.2524 7.31042 
+50.8 41.9418 58.0582 258.385 24.2949 17.3206 278.421 14.2643 7.31511 
+50.9 41.8525 58.1475 258.294 24.3362 17.3702 278.404 14.2764 7.31985 
+51 41.7632 58.2368 258.203 24.3775 17.4199 278.387 14.2884 7.32466 
+51.1 41.674 58.326 258.111 24.4188 17.4698 278.37 14.3005 7.32954 
+51.2 41.5849 58.4151 258.02 24.4602 17.5199 278.353 14.3127 7.33447 
+51.3 41.4959 58.5041 257.928 24.5016 17.5701 278.336 14.3249 7.33947 
+51.4 41.407 58.593 257.837 24.5431 17.6204 278.318 14.3372 7.34453 
+51.5 41.3182 58.6818 257.745 24.5846 17.6709 278.301 14.3494 7.34966 
+51.6 41.2294 58.7706 257.652 24.6261 17.7215 278.283 14.3618 7.35484 
+51.7 41.1407 58.8593 257.56 24.6677 17.7723 278.266 14.3742 7.3601 
+51.8 41.0521 58.9479 257.468 24.7093 17.8232 278.248 14.3866 7.36541 
+51.9 40.9636 59.0364 257.375 24.7509 17.8742 278.23 14.3991 7.37079 
+52 40.8752 59.1248 257.282 24.7926 17.9254 278.212 14.4116 7.37624 
+52.1 40.7869 59.2131 257.189 24.8343 17.9767 278.194 14.4242 7.38174 
+52.2 40.6987 59.3013 257.096 24.876 18.0282 278.176 14.4368 7.38732 
+52.3 40.6105 59.3895 257.002 24.9177 18.0798 278.158 14.4494 7.39295 
+52.4 40.5225 59.4775 256.909 24.9595 18.1316 278.139 14.4621 7.39866 
+52.5 40.4345 59.5655 256.815 25.0014 18.1835 278.121 14.4749 7.40442 
+52.6 40.3466 59.6534 256.721 25.0432 18.2355 278.102 14.4877 7.41026 
+52.7 40.2588 59.7412 256.627 25.0851 18.2877 278.083 14.5006 7.41615 
+52.8 40.1711 59.8289 256.533 25.127 18.3401 278.064 14.5134 7.42212 
+52.9 40.0835 59.9165 256.438 25.169 18.3925 278.045 14.5264 7.42815 
+53 39.996 60.004 256.344 25.211 18.4452 278.026 14.5394 7.43424 
+53.1 39.9086 60.0914 256.249 25.253 18.4979 278.007 14.5524 7.4404 
+53.2 39.8213 60.1787 256.154 25.2951 18.5508 277.988 14.5655 7.44663 
+53.3 39.734 60.266 256.059 25.3372 18.6039 277.968 14.5786 7.45292 
+53.4 39.6469 60.3531 255.964 25.3793 18.657 277.949 14.5918 7.45928 
+53.5 39.5599 60.4401 255.868 25.4214 18.7104 277.929 14.605 7.46571 
+53.6 39.4729 60.5271 255.773 25.4636 18.7639 277.909 14.6183 7.4722 
+53.7 39.3861 60.6139 255.677 25.5058 18.8175 277.89 14.6317 7.47877 
+53.8 39.2993 60.7007 255.581 25.5481 18.8712 277.87 14.645 7.48539 
+53.9 39.2126 60.7874 255.485 25.5903 18.9251 277.849 14.6585 7.49209 
+54 39.1261 60.8739 255.388 25.6326 18.9792 277.829 14.6719 7.49885 
+54.1 39.0396 60.9604 255.292 25.675 19.0333 277.809 14.6854 7.50568 
+54.2 38.9532 61.0468 255.195 25.7173 19.0877 277.788 14.699 7.51258 
+54.3 38.867 61.133 255.098 25.7597 19.1421 277.768 14.7126 7.51955 
+54.4 38.7808 61.2192 255.001 25.8021 19.1968 277.747 14.7263 7.52658 
+54.5 38.6947 61.3053 254.904 25.8446 19.2515 277.726 14.74 7.53369 
+54.6 38.6087 61.3913 254.807 25.8871 19.3064 277.705 14.7538 7.54086 
+54.7 38.5229 61.4771 254.709 25.9296 19.3614 277.684 14.7676 7.5481 
+54.8 38.4371 61.5629 254.611 25.9721 19.4166 277.663 14.7815 7.55541 
+54.9 38.3514 61.6486 254.513 26.0147 19.4719 277.642 14.7954 7.56279 
+55 38.2658 61.7342 254.415 26.0573 19.5274 277.62 14.8094 7.57023 
+55.1 38.1804 61.8196 254.317 26.0999 19.583 277.599 14.8234 7.57775 
+55.2 38.095 61.905 254.219 26.1426 19.6387 277.577 14.8375 7.58534 
+55.3 38.0097 61.9903 254.12 26.1852 19.6946 277.555 14.8516 7.593 
+55.4 37.9246 62.0754 254.021 26.2279 19.7507 277.534 14.8657 7.60072 
+55.5 37.8395 62.1605 253.922 26.2707 19.8068 277.512 14.88 7.60852 
+55.6 37.7546 62.2454 253.823 26.3134 19.8631 277.489 14.8942 7.61639 
+55.7 37.6697 62.3303 253.724 26.3562 19.9196 277.467 14.9086 7.62433 
+55.8 37.585 62.415 253.625 26.3991 19.9762 277.445 14.9229 7.63233 
+55.9 37.5003 62.4997 253.525 26.4419 20.0329 277.422 14.9374 7.64041 
+56 37.4158 62.5842 253.425 26.4848 20.0898 277.4 14.9518 7.64857 
+56.1 37.3314 62.6686 253.325 26.5277 20.1468 277.377 14.9664 7.65679 
+56.2 37.2471 62.7529 253.225 26.5706 20.204 277.354 14.9809 7.66508 
+56.3 37.1629 62.8371 253.125 26.6136 20.2613 277.331 14.9956 7.67345 
+56.4 37.0788 62.9212 253.025 26.6565 20.3187 277.308 15.0102 7.68188 
+56.5 36.9948 63.0052 252.924 26.6995 20.3763 277.285 15.025 7.69039 
+56.6 36.9109 63.0891 252.823 26.7426 20.434 277.261 15.0398 7.69897 
+56.7 36.8271 63.1729 252.722 26.7856 20.4919 277.238 15.0546 7.70763 
+56.8 36.7434 63.2566 252.621 26.8287 20.5499 277.214 15.0695 7.71635 
+56.9 36.6599 63.3401 252.52 26.8718 20.6081 277.19 15.0844 7.72515 
+57 36.5764 63.4236 252.419 26.915 20.6663 277.167 15.0994 7.73403 
+57.1 36.4931 63.5069 252.317 26.9581 20.7248 277.143 15.1145 7.74297 
+57.2 36.4099 63.5901 252.215 27.0013 20.7833 277.118 15.1296 7.75199 
+57.3 36.3268 63.6732 252.113 27.0445 20.842 277.094 15.1447 7.76108 
+57.4 36.2438 63.7562 252.011 27.0878 20.9009 277.07 15.16 7.77025 
+57.5 36.1609 63.8391 251.909 27.131 20.9599 277.045 15.1752 7.77949 
+57.6 36.0781 63.9219 251.807 27.1743 21.019 277.021 15.1905 7.7888 
+57.7 35.9955 64.0045 251.704 27.2176 21.0783 276.996 15.2059 7.79819 
+57.8 35.9129 64.0871 251.601 27.2609 21.1377 276.971 15.2213 7.80765 
+57.9 35.8305 64.1695 251.498 27.3043 21.1973 276.946 15.2368 7.81719 
+58 35.7482 64.2518 251.395 27.3477 21.2569 276.921 15.2523 7.8268 
+58.1 35.666 64.334 251.292 27.3911 21.3168 276.896 15.2679 7.83648 
+58.2 35.5839 64.4161 251.189 27.4345 21.3767 276.87 15.2835 7.84624 
+58.3 35.5019 64.4981 251.085 27.4779 21.4369 276.845 15.2992 7.85608 
+58.4 35.4201 64.5799 250.981 27.5214 21.4971 276.819 15.315 7.86599 
+58.5 35.3384 64.6616 250.878 27.5649 21.5575 276.793 15.3308 7.87598 
+58.6 35.2567 64.7433 250.774 27.6084 21.618 276.767 15.3466 7.88605 
+58.7 35.1753 64.8247 250.669 27.6519 21.6787 276.741 15.3625 7.89619 
+58.8 35.0939 64.9061 250.565 27.6955 21.7395 276.715 15.3785 7.9064 
+58.9 35.0126 64.9874 250.46 27.7391 21.8005 276.689 15.3945 7.9167 
+59 34.9315 65.0685 250.356 27.7827 21.8615 276.662 15.4106 7.92707 
+59.1 34.8505 65.1495 250.251 27.8263 21.9228 276.636 15.4267 7.93751 
+59.2 34.7696 65.2304 250.146 27.87 21.9841 276.609 15.4429 7.94804 
+59.3 34.6888 65.3112 250.041 27.9136 22.0456 276.582 15.4591 7.95864 
+59.4 34.6081 65.3919 249.935 27.9573 22.1073 276.555 15.4754 7.96932 
+59.5 34.5276 65.4724 249.83 28.001 22.1691 276.528 15.4917 7.98007 
+59.6 34.4472 65.5528 249.724 28.0448 22.231 276.501 15.5081 7.99091 
+59.7 34.3669 65.6331 249.618 28.0885 22.293 276.474 15.5246 8.00182 
+59.8 34.2867 65.7133 249.512 28.1323 22.3552 276.446 15.5411 8.01281 
+59.9 34.2067 65.7933 249.406 28.1761 22.4176 276.418 15.5577 8.02388 
+60 34.1268 65.8732 249.3 28.2199 22.4801 276.391 15.5743 8.03503 
+60.1 34.047 65.953 249.194 28.2637 22.5427 276.363 15.591 8.04625 
+60.2 33.9673 66.0327 249.087 28.3076 22.6054 276.335 15.6077 8.05756 
+60.3 33.8878 66.1122 248.98 28.3515 22.6683 276.307 15.6245 8.06894 
+60.4 33.8084 66.1916 248.873 28.3953 22.7313 276.278 15.6413 8.08041 
+60.5 33.7291 66.2709 248.766 28.4393 22.7945 276.25 15.6582 8.09195 
+60.6 33.6499 66.3501 248.659 28.4832 22.8578 276.221 15.6752 8.10358 
+60.7 33.5709 66.4291 248.552 28.5271 22.9212 276.193 15.6922 8.11528 
+60.8 33.4919 66.5081 248.444 28.5711 22.9848 276.164 15.7093 8.12706 
+60.9 33.4132 66.5868 248.336 28.6151 23.0485 276.135 15.7264 8.13893 
+61 33.3345 66.6655 248.229 28.6591 23.1124 276.106 15.7436 8.15087 
+61.1 33.256 66.744 248.121 28.7031 23.1764 276.076 15.7608 8.1629 
+61.2 33.1776 66.8224 248.012 28.7472 23.2405 276.047 15.7781 8.17501 
+61.3 33.0993 66.9007 247.904 28.7912 23.3048 276.017 15.7955 8.18719 
+61.4 33.0212 66.9788 247.796 28.8353 23.3692 275.988 15.8129 8.19946 
+61.5 32.9431 67.0569 247.687 28.8794 23.4337 275.958 15.8304 8.21181 
+61.6 32.8653 67.1347 247.578 28.9235 23.4984 275.928 15.8479 8.22425 
+61.7 32.7875 67.2125 247.469 28.9676 23.5632 275.898 15.8655 8.23676 
+61.8 32.7099 67.2901 247.36 29.0118 23.6281 275.868 15.8831 8.24936 
+61.9 32.6324 67.3676 247.251 29.0559 23.6932 275.837 15.9008 8.26204 
+62 32.555 67.445 247.141 29.1001 23.7584 275.807 15.9186 8.2748 
+62.1 32.4778 67.5222 247.032 29.1443 23.8238 275.776 15.9364 8.28765 
+62.2 32.4007 67.5993 246.922 29.1885 23.8893 275.745 15.9543 8.30058 
+62.3 32.3238 67.6762 246.812 29.2327 23.9549 275.714 15.9722 8.31359 
+62.4 32.2469 67.7531 246.702 29.277 24.0207 275.683 15.9902 8.32668 
+62.5 32.1702 67.8298 246.592 29.3212 24.0866 275.652 16.0082 8.33986 
+62.6 32.0937 67.9063 246.482 29.3655 24.1526 275.621 16.0263 8.35313 
+62.7 32.0173 67.9827 246.371 29.4098 24.2188 275.589 16.0445 8.36647 
+62.8 31.941 68.059 246.261 29.4541 24.2851 275.557 16.0627 8.37991 
+62.9 31.8648 68.1352 246.15 29.4984 24.3515 275.526 16.081 8.39342 
+63 31.7888 68.2112 246.039 29.5428 24.4181 275.494 16.0993 8.40702 
+63.1 31.7129 68.2871 245.928 29.5871 24.4848 275.462 16.1177 8.42071 
+63.2 31.6372 68.3628 245.817 29.6315 24.5516 275.429 16.1362 8.43448 
+63.3 31.5616 68.4384 245.706 29.6759 24.6186 275.397 16.1547 8.44834 
+63.4 31.4861 68.5139 245.594 29.7203 24.6857 275.364 16.1733 8.46228 
+63.5 31.4107 68.5893 245.482 29.7647 24.753 275.332 16.1919 8.4763 
+63.6 31.3356 68.6644 245.371 29.8091 24.8204 275.299 16.2106 8.49042 
+63.7 31.2605 68.7395 245.259 29.8535 24.8879 275.266 16.2293 8.50462 
+63.8 31.1856 68.8144 245.146 29.898 24.9555 275.233 16.2482 8.5189 
+63.9 31.1108 68.8892 245.034 29.9424 25.0233 275.2 16.267 8.53328 
+64 31.0361 68.9639 244.922 29.9869 25.0912 275.166 16.2859 8.54774 
+64.1 30.9616 69.0384 244.809 30.0314 25.1593 275.133 16.3049 8.56228 
+64.2 30.8873 69.1127 244.697 30.0759 25.2275 275.099 16.324 8.57692 
+64.3 30.813 69.187 244.584 30.1204 25.2958 275.065 16.3431 8.59164 
+64.4 30.739 69.261 244.471 30.165 25.3642 275.031 16.3622 8.60645 
+64.5 30.665 69.335 244.358 30.2095 25.4328 274.997 16.3815 8.62135 
+64.6 30.5912 69.4088 244.244 30.2541 25.5015 274.963 16.4007 8.63633 
+64.7 30.5176 69.4824 244.131 30.2986 25.5704 274.929 16.4201 8.65141 
+64.8 30.444 69.556 244.017 30.3432 25.6394 274.894 16.4395 8.66657 
+64.9 30.3707 69.6293 243.904 30.3878 25.7085 274.859 16.4589 8.68182 
+65 30.2974 69.7026 243.79 30.4324 25.7777 274.824 16.4785 8.69716 
+65.1 30.2243 69.7757 243.676 30.477 25.8471 274.789 16.498 8.71259 
+65.2 30.1514 69.8486 243.562 30.5216 25.9166 274.754 16.5177 8.72811 
+65.3 30.0786 69.9214 243.447 30.5663 25.9863 274.719 16.5374 8.74372 
+65.4 30.0059 69.9941 243.333 30.6109 26.056 274.683 16.5571 8.75942 
+65.5 29.9334 70.0666 243.219 30.6556 26.1259 274.648 16.577 8.77521 
+65.6 29.861 70.139 243.104 30.7002 26.196 274.612 16.5968 8.79108 
+65.7 29.7888 70.2112 242.989 30.7449 26.2661 274.576 16.6168 8.80705 
+65.8 29.7167 70.2833 242.874 30.7896 26.3364 274.54 16.6368 8.82311 
+65.9 29.6448 70.3552 242.759 30.8343 26.4069 274.504 16.6568 8.83927 
+66 29.573 70.427 242.644 30.879 26.4774 274.468 16.677 8.85551 
+66.1 29.5013 70.4987 242.528 30.9237 26.5481 274.431 16.6971 8.87184 
+66.2 29.4298 70.5702 242.413 30.9684 26.6189 274.394 16.7174 8.88827 
+66.3 29.3585 70.6415 242.297 31.0132 26.6899 274.358 16.7377 8.90479 
+66.4 29.2873 70.7127 242.181 31.0579 26.761 274.321 16.7581 8.9214 
+66.5 29.2162 70.7838 242.065 31.1027 26.8322 274.283 16.7785 8.9381 
+66.6 29.1453 70.8547 241.949 31.1474 26.9035 274.246 16.799 8.95489 
+66.7 29.0746 70.9254 241.833 31.1922 26.975 274.209 16.8195 8.97178 
+66.8 29.0039 70.9961 241.716 31.237 27.0466 274.171 16.8401 8.98876 
+66.9 28.9335 71.0665 241.6 31.2818 27.1183 274.133 16.8608 9.00583 
+67 28.8632 71.1368 241.483 31.3266 27.1902 274.095 16.8815 9.023 
+67.1 28.793 71.207 241.366 31.3714 27.2622 274.057 16.9023 9.04026 
+67.2 28.723 71.277 241.25 31.4162 27.3343 274.019 16.9232 9.05761 
+67.3 28.6531 71.3469 241.132 31.461 27.4065 273.981 16.9441 9.07506 
+67.4 28.5834 71.4166 241.015 31.5058 27.4789 273.942 16.965 9.09261 
+67.5 28.5138 71.4862 240.898 31.5507 27.5514 273.904 16.9861 9.11024 
+67.6 28.4444 71.5556 240.78 31.5955 27.6241 273.865 17.0072 9.12798 
+67.7 28.3751 71.6249 240.663 31.6404 27.6968 273.826 17.0283 9.1458 
+67.8 28.306 71.694 240.545 31.6852 27.7697 273.787 17.0495 9.16372 
+67.9 28.237 71.763 240.427 31.7301 27.8427 273.747 17.0708 9.18174 
+68 28.1682 71.8318 240.309 31.775 27.9159 273.708 17.0922 9.19986 
+68.1 28.0995 71.9005 240.191 31.8198 27.9891 273.668 17.1136 9.21807 
+68.2 28.031 71.969 240.073 31.8647 28.0625 273.629 17.135 9.23637 
+68.3 27.9626 72.0374 239.954 31.9096 28.136 273.589 17.1566 9.25477 
+68.4 27.8944 72.1056 239.836 31.9545 28.2097 273.549 17.1781 9.27327 
+68.5 27.8264 72.1736 239.717 31.9994 28.2835 273.508 17.1998 9.29187 
+68.6 27.7585 72.2415 239.598 32.0443 28.3574 273.468 17.2215 9.31056 
+68.7 27.6907 72.3093 239.479 32.0892 28.4314 273.427 17.2433 9.32935 
+68.8 27.6231 72.3769 239.36 32.1342 28.5056 273.387 17.2651 9.34824 
+68.9 27.5557 72.4443 239.241 32.1791 28.5798 273.346 17.287 9.36722 
+69 27.4884 72.5116 239.122 32.224 28.6542 273.305 17.309 9.38631 
+69.1 27.4213 72.5787 239.002 32.2689 28.7288 273.264 17.331 9.40549 
+69.2 27.3543 72.6457 238.883 32.3139 28.8034 273.222 17.3531 9.42477 
+69.3 27.2874 72.7126 238.763 32.3588 28.8782 273.181 17.3752 9.44415 
+69.4 27.2208 72.7792 238.643 32.4038 28.9531 273.139 17.3974 9.46363 
+69.5 27.1542 72.8458 238.523 32.4487 29.0282 273.097 17.4197 9.4832 
+69.6 27.0879 72.9121 238.403 32.4937 29.1033 273.055 17.442 9.50288 
+69.7 27.0217 72.9783 238.283 32.5386 29.1786 273.013 17.4644 9.52266 
+69.8 26.9556 73.0444 238.162 32.5836 29.254 272.971 17.4869 9.54253 
+69.9 26.8897 73.1103 238.042 32.6286 29.3295 272.928 17.5094 9.56251 
+70 26.824 73.176 237.921 32.6736 29.4052 272.885 17.532 9.58258 
+70.1 26.7584 73.2416 237.801 32.7185 29.481 272.843 17.5546 9.60276 
+70.2 26.693 73.307 237.68 32.7635 29.5569 272.8 17.5773 9.62304 
+70.3 26.6277 73.3723 237.559 32.8085 29.6329 272.757 17.6001 9.64342 
+70.4 26.5626 73.4374 237.438 32.8535 29.709 272.713 17.6229 9.6639 
+70.5 26.4976 73.5024 237.316 32.8985 29.7853 272.67 17.6458 9.68448 
+70.6 26.4328 73.5672 237.195 32.9435 29.8617 272.626 17.6688 9.70516 
+70.7 26.3682 73.6318 237.073 32.9884 29.9382 272.582 17.6918 9.72595 
+70.8 26.3037 73.6963 236.952 33.0334 30.0148 272.538 17.7148 9.74684 
+70.9 26.2394 73.7606 236.83 33.0784 30.0916 272.494 17.738 9.76783 
+71 26.1752 73.8248 236.708 33.1234 30.1685 272.45 17.7612 9.78892 
+71.1 26.1112 73.8888 236.586 33.1684 30.2455 272.405 17.7845 9.81012 
+71.2 26.0473 73.9527 236.464 33.2134 30.3226 272.361 17.8078 9.83141 
+71.3 25.9836 74.0164 236.342 33.2584 30.3998 272.316 17.8312 9.85282 
+71.4 25.9201 74.0799 236.219 33.3034 30.4772 272.271 17.8546 9.87432 
+71.5 25.8567 74.1433 236.097 33.3485 30.5547 272.226 17.8781 9.89593 
+71.6 25.7935 74.2065 235.974 33.3935 30.6323 272.181 17.9017 9.91765 
+71.7 25.7304 74.2696 235.852 33.4385 30.71 272.135 17.9254 9.93947 
+71.8 25.6675 74.3325 235.729 33.4835 30.7879 272.09 17.9491 9.96139 
+71.9 25.6048 74.3952 235.606 33.5285 30.8658 272.044 17.9728 9.98342 
+72 25.5422 74.4578 235.483 33.5735 30.9439 271.998 17.9967 10.0056 
+72.1 25.4798 74.5202 235.359 33.6185 31.0221 271.952 18.0205 10.0278 
+72.2 25.4175 74.5825 235.236 33.6635 31.1005 271.905 18.0445 10.0501 
+72.3 25.3554 74.6446 235.113 33.7085 31.1789 271.859 18.0685 10.0726 
+72.4 25.2935 74.7065 234.989 33.7535 31.2575 271.812 18.0926 10.0951 
+72.5 25.2317 74.7683 234.865 33.7986 31.3362 271.765 18.1167 10.1178 
+72.6 25.17 74.83 234.741 33.8436 31.415 271.718 18.1409 10.1406 
+72.7 25.1086 74.8914 234.618 33.8886 31.4939 271.671 18.1652 10.1634 
+72.8 25.0473 74.9527 234.493 33.9336 31.5729 271.624 18.1895 10.1864 
+72.9 24.9861 75.0139 234.369 33.9786 31.6521 271.577 18.2139 10.2095 
+73 24.9252 75.0748 234.245 34.0236 31.7314 271.529 18.2384 10.2327 
+73.1 24.8643 75.1357 234.121 34.0686 31.8107 271.481 18.2629 10.256 
+73.2 24.8037 75.1963 233.996 34.1136 31.8903 271.433 18.2875 10.2794 
+73.3 24.7432 75.2568 233.872 34.1586 31.9699 271.385 18.3121 10.303 
+73.4 24.6829 75.3171 233.747 34.2036 32.0496 271.337 18.3368 10.3266 
+73.5 24.6227 75.3773 233.622 34.2486 32.1295 271.288 18.3616 10.3503 
+73.6 24.5627 75.4373 233.497 34.2936 32.2095 271.239 18.3865 10.3742 
+73.7 24.5028 75.4972 233.372 34.3386 32.2896 271.191 18.4113 10.3981 
+73.8 24.4431 75.5569 233.247 34.3836 32.3698 271.141 18.4363 10.4222 
+73.9 24.3836 75.6164 233.121 34.4286 32.4501 271.092 18.4613 10.4464 
+74 24.3243 75.6757 232.996 34.4736 32.5305 271.043 18.4864 10.4707 
+74.1 24.2651 75.7349 232.87 34.5186 32.6111 270.993 18.5116 10.4951 
+74.2 24.206 75.794 232.745 34.5636 32.6918 270.944 18.5368 10.5196 
+74.3 24.1471 75.8529 232.619 34.6085 32.7725 270.894 18.562 10.5442 
+74.4 24.0884 75.9116 232.493 34.6535 32.8534 270.844 18.5874 10.5689 
+74.5 24.0299 75.9701 232.367 34.6985 32.9345 270.793 18.6128 10.5938 
+74.6 23.9715 76.0285 232.241 34.7435 33.0156 270.743 18.6382 10.6187 
+74.7 23.9133 76.0867 232.115 34.7884 33.0968 270.692 18.6638 10.6438 
+74.8 23.8552 76.1448 231.988 34.8334 33.1782 270.642 18.6894 10.669 
+74.9 23.7973 76.2027 231.862 34.8784 33.2597 270.591 18.715 10.6943 
+75 23.7396 76.2604 231.735 34.9233 33.3412 270.54 18.7407 10.7197 
+75.1 23.682 76.318 231.609 34.9683 33.4229 270.488 18.7665 10.7452 
+75.2 23.6246 76.3754 231.482 35.0132 33.5047 270.437 18.7923 10.7708 
+75.3 23.5673 76.4327 231.355 35.0582 33.5867 270.385 18.8182 10.7965 
+75.4 23.5102 76.4898 231.228 35.1031 33.6687 270.333 18.8442 10.8224 
+75.5 23.4533 76.5467 231.101 35.148 33.7508 270.281 18.8702 10.8484 
+75.6 23.3966 76.6034 230.974 35.193 33.8331 270.229 18.8963 10.8744 
+75.7 23.34 76.66 230.847 35.2379 33.9155 270.177 18.9225 10.9006 
+75.8 23.2835 76.7165 230.719 35.2828 33.998 270.124 18.9487 10.9269 
+75.9 23.2273 76.7727 230.592 35.3277 34.0805 270.072 18.975 10.9534 
+76 23.1712 76.8288 230.464 35.3726 34.1633 270.019 19.0013 10.9799 
+76.1 23.1152 76.8848 230.336 35.4175 34.2461 269.966 19.0277 11.0066 
+76.2 23.0595 76.9405 230.209 35.4624 34.329 269.912 19.0542 11.0333 
+76.3 23.0038 76.9962 230.081 35.5073 34.412 269.859 19.0807 11.0602 
+76.4 22.9484 77.0516 229.953 35.5522 34.4952 269.805 19.1073 11.0872 
+76.5 22.8931 77.1069 229.824 35.5971 34.5784 269.752 19.134 11.1143 
+76.6 22.838 77.162 229.696 35.642 34.6618 269.698 19.1607 11.1416 
+76.7 22.783 77.217 229.568 35.6869 34.7453 269.644 19.1875 11.1689 
+76.8 22.7282 77.2718 229.439 35.7317 34.8289 269.589 19.2143 11.1964 
+76.9 22.6736 77.3264 229.311 35.7766 34.9125 269.535 19.2412 11.224 
+77 22.6191 77.3809 229.182 35.8214 34.9963 269.48 19.2682 11.2517 
+77.1 22.5648 77.4352 229.053 35.8663 35.0803 269.425 19.2952 11.2795 
+77.2 22.5107 77.4893 228.925 35.9111 35.1643 269.37 19.3223 11.3075 
+77.3 22.4567 77.5433 228.796 35.956 35.2484 269.315 19.3495 11.3355 
+77.4 22.4029 77.5971 228.667 36.0008 35.3326 269.26 19.3767 11.3637 
+77.5 22.3493 77.6507 228.537 36.0456 35.417 269.204 19.404 11.392 
+77.6 22.2958 77.7042 228.408 36.0904 35.5014 269.148 19.4313 11.4204 
+77.7 22.2425 77.7575 228.279 36.1352 35.586 269.092 19.4587 11.4489 
+77.8 22.1893 77.8107 228.149 36.18 35.6707 269.036 19.4862 11.4776 
+77.9 22.1363 77.8637 228.02 36.2248 35.7554 268.98 19.5137 11.5064 
+78 22.0835 77.9165 227.89 36.2696 35.8403 268.923 19.5413 11.5353 
+78.1 22.0308 77.9692 227.76 36.3143 35.9253 268.867 19.569 11.5643 
+78.2 21.9783 78.0217 227.631 36.3591 36.0104 268.81 19.5967 11.5934 
+78.3 21.926 78.074 227.501 36.4039 36.0956 268.753 19.6245 11.6227 
+78.4 21.8738 78.1262 227.371 36.4486 36.1809 268.696 19.6523 11.6521 
+78.5 21.8218 78.1782 227.24 36.4933 36.2663 268.638 19.6802 11.6816 
+78.6 21.77 78.23 227.11 36.5381 36.3518 268.581 19.7082 11.7112 
+78.7 21.7183 78.2817 226.98 36.5828 36.4374 268.523 19.7362 11.7409 
+78.8 21.6668 78.3332 226.849 36.6275 36.5231 268.465 19.7643 11.7708 
+78.9 21.6154 78.3846 226.719 36.6722 36.6089 268.407 19.7925 11.8008 
+79 21.5642 78.4358 226.588 36.7169 36.6949 268.348 19.8207 11.8309 
+79.1 21.5132 78.4868 226.458 36.7616 36.7809 268.29 19.849 11.8611 
+79.2 21.4624 78.5376 226.327 36.8063 36.867 268.231 19.8773 11.8915 
+79.3 21.4117 78.5883 226.196 36.8509 36.9532 268.172 19.9057 11.9219 
+79.4 21.3611 78.6389 226.065 36.8956 37.0396 268.113 19.9342 11.9525 
+79.5 21.3108 78.6892 225.934 36.9402 37.126 268.054 19.9627 11.9833 
+79.6 21.2605 78.7395 225.803 36.9849 37.2126 267.995 19.9913 12.0141 
+79.7 21.2105 78.7895 225.671 37.0295 37.2992 267.935 20.0199 12.0451 
+79.8 21.1606 78.8394 225.54 37.0741 37.386 267.875 20.0487 12.0762 
+79.9 21.1109 78.8891 225.408 37.1187 37.4728 267.815 20.0774 12.1074 
+80 21.0614 78.9386 225.277 37.1633 37.5598 267.755 20.1063 12.1388 
+80.1 21.012 78.988 225.145 37.2079 37.6468 267.695 20.1352 12.1703 
+80.2 20.9627 79.0373 225.014 37.2525 37.734 267.634 20.1641 12.2019 
+80.3 20.9137 79.0863 224.882 37.297 37.8212 267.573 20.1931 12.2336 
+80.4 20.8648 79.1352 224.75 37.3416 37.9086 267.512 20.2222 12.2654 
+80.5 20.816 79.184 224.618 37.3861 37.996 267.451 20.2514 12.2974 
+80.6 20.7675 79.2325 224.486 37.4307 38.0836 267.39 20.2806 12.3295 
+80.7 20.719 79.281 224.354 37.4752 38.1713 267.328 20.3098 12.3618 
+80.8 20.6708 79.3292 224.221 37.5197 38.259 267.267 20.3392 12.3941 
+80.9 20.6227 79.3773 224.089 37.5642 38.3469 267.205 20.3686 12.4266 
+81 20.5748 79.4252 223.956 37.6087 38.4348 267.143 20.398 12.4593 
+81.1 20.527 79.473 223.824 37.6532 38.5229 267.08 20.4275 12.492 
+81.2 20.4794 79.5206 223.691 37.6976 38.611 267.018 20.4571 12.5249 
+81.3 20.432 79.568 223.559 37.7421 38.6993 266.955 20.4867 12.5579 
+81.4 20.3847 79.6153 223.426 37.7865 38.7876 266.893 20.5164 12.591 
+81.5 20.3376 79.6624 223.293 37.831 38.876 266.83 20.5462 12.6243 
+81.6 20.2906 79.7094 223.16 37.8754 38.9646 266.766 20.576 12.6577 
+81.7 20.2438 79.7562 223.027 37.9198 39.0532 266.703 20.6059 12.6912 
+81.8 20.1972 79.8028 222.894 37.9642 39.142 266.639 20.6358 12.7248 
+81.9 20.1507 79.8493 222.761 38.0085 39.2308 266.576 20.6658 12.7586 
+82 20.1044 79.8956 222.627 38.0529 39.3197 266.512 20.6959 12.7925 
+82.1 20.0583 79.9417 222.494 38.0973 39.4087 266.447 20.726 12.8266 
+82.2 20.0123 79.9877 222.361 38.1416 39.4979 266.383 20.7562 12.8608 
+82.3 19.9665 80.0335 222.227 38.1859 39.5871 266.318 20.7865 12.8951 
+82.4 19.9208 80.0792 222.093 38.2302 39.6764 266.254 20.8168 12.9295 
+82.5 19.8753 80.1247 221.96 38.2745 39.7658 266.189 20.8471 12.9641 
+82.6 19.83 80.17 221.826 38.3188 39.8553 266.124 20.8776 12.9988 
+82.7 19.7848 80.2152 221.692 38.3631 39.9449 266.058 20.9081 13.0336 
+82.8 19.7398 80.2602 221.558 38.4074 40.0346 265.993 20.9386 13.0686 
+82.9 19.6949 80.3051 221.424 38.4516 40.1244 265.927 20.9692 13.1037 
+83 19.6502 80.3498 221.29 38.4959 40.2142 265.861 20.9999 13.1389 
+83.1 19.6057 80.3943 221.156 38.5401 40.3042 265.795 21.0306 13.1743 
+83.2 19.5613 80.4387 221.021 38.5843 40.3943 265.729 21.0614 13.2098 
+83.3 19.5171 80.4829 220.887 38.6285 40.4844 265.662 21.0923 13.2454 
+83.4 19.473 80.527 220.753 38.6726 40.5747 265.596 21.1232 13.2812 
+83.5 19.4291 80.5709 220.618 38.7168 40.665 265.529 21.1541 13.3171 
+83.6 19.3854 80.6146 220.484 38.761 40.7555 265.462 21.1852 13.3531 
+83.7 19.3418 80.6582 220.349 38.8051 40.846 265.394 21.2163 13.3893 
+83.8 19.2984 80.7016 220.214 38.8492 40.9366 265.327 21.2474 13.4256 
+83.9 19.2551 80.7449 220.079 38.8933 41.0273 265.259 21.2786 13.462 
+84 19.212 80.788 219.944 38.9374 41.1181 265.191 21.3099 13.4986 
+84.1 19.1691 80.8309 219.809 38.9815 41.209 265.123 21.3412 13.5353 
+84.2 19.1263 80.8737 219.674 39.0255 41.3 265.055 21.3726 13.5722 
+84.3 19.0837 80.9163 219.539 39.0696 41.3911 264.987 21.4041 13.6092 
+84.4 19.0412 80.9588 219.404 39.1136 41.4823 264.918 21.4356 13.6463 
+84.5 18.9989 81.0011 219.269 39.1576 41.5735 264.849 21.4672 13.6835 
+84.6 18.9567 81.0433 219.133 39.2016 41.6649 264.78 21.4988 13.7209 
+84.7 18.9147 81.0853 218.998 39.2456 41.7563 264.711 21.5305 13.7585 
+84.8 18.8729 81.1271 218.863 39.2896 41.8478 264.642 21.5622 13.7962 
+84.9 18.8312 81.1688 218.727 39.3336 41.9394 264.572 21.594 13.834 
+85 18.7897 81.2103 218.591 39.3775 42.0311 264.502 21.6259 13.8719 
+85.1 18.7483 81.2517 218.456 39.4214 42.1229 264.432 21.6578 13.91 
+85.2 18.7071 81.2929 218.32 39.4653 42.2148 264.362 21.6898 13.9482 
+85.3 18.6661 81.3339 218.184 39.5092 42.3068 264.292 21.7218 13.9866 
+85.4 18.6252 81.3748 218.048 39.5531 42.3988 264.221 21.7539 14.0251 
+85.5 18.5844 81.4156 217.912 39.5969 42.491 264.15 21.7861 14.0638 
+85.6 18.5438 81.4562 217.776 39.6408 42.5832 264.079 21.8183 14.1025 
+85.7 18.5034 81.4966 217.64 39.6846 42.6755 264.008 21.8506 14.1415 
+85.8 18.4631 81.5369 217.504 39.7284 42.7679 263.937 21.8829 14.1805 
+85.9 18.423 81.577 217.367 39.7722 42.8604 263.865 21.9153 14.2198 
+86 18.383 81.617 217.231 39.816 42.953 263.793 21.9478 14.2591 
+86.1 18.3432 81.6568 217.095 39.8597 43.0457 263.721 21.9803 14.2986 
+86.2 18.3036 81.6964 216.958 39.9035 43.1384 263.649 22.0129 14.3382 
+86.3 18.2641 81.7359 216.822 39.9472 43.2312 263.576 22.0455 14.378 
+86.4 18.2247 81.7753 216.685 39.9909 43.3242 263.504 22.0782 14.4179 
+86.5 18.1855 81.8145 216.548 40.0346 43.4172 263.431 22.1109 14.458 
+86.6 18.1465 81.8535 216.411 40.0783 43.5103 263.358 22.1437 14.4982 
+86.7 18.1076 81.8924 216.275 40.1219 43.6034 263.285 22.1766 14.5385 
+86.8 18.0689 81.9311 216.138 40.1656 43.6967 263.211 22.2095 14.579 
+86.9 18.0303 81.9697 216.001 40.2092 43.79 263.138 22.2425 14.6196 
+87 17.9919 82.0081 215.864 40.2528 43.8835 263.064 22.2755 14.6604 
+87.1 17.9536 82.0464 215.727 40.2964 43.977 262.99 22.3086 14.7013 
+87.2 17.9155 82.0845 215.59 40.3399 44.0706 262.916 22.3418 14.7424 
+87.3 17.8776 82.1224 215.452 40.3835 44.1642 262.841 22.375 14.7836 
+87.4 17.8397 82.1603 215.315 40.427 44.258 262.767 22.4082 14.825 
+87.5 17.8021 82.1979 215.178 40.4705 44.3518 262.692 22.4416 14.8665 
+87.6 17.7646 82.2354 215.04 40.514 44.4458 262.617 22.475 14.9081 
+87.7 17.7272 82.2728 214.903 40.5575 44.5398 262.542 22.5084 14.9499 
+87.8 17.69 82.31 214.765 40.601 44.6338 262.466 22.5419 14.9918 
+87.9 17.653 82.347 214.628 40.6444 44.728 262.391 22.5754 15.0339 
+88 17.6161 82.3839 214.49 40.6878 44.8223 262.315 22.609 15.0761 
+88.1 17.5793 82.4207 214.352 40.7312 44.9166 262.239 22.6427 15.1185 
+88.2 17.5427 82.4573 214.214 40.7746 45.011 262.163 22.6764 15.161 
+88.3 17.5063 82.4937 214.077 40.818 45.1055 262.086 22.7102 15.2037 
+88.4 17.47 82.53 213.939 40.8613 45.2001 262.009 22.744 15.2465 
+88.5 17.4338 82.5662 213.801 40.9046 45.2947 261.933 22.7779 15.2895 
+88.6 17.3978 82.6022 213.663 40.9479 45.3894 261.856 22.8119 15.3326 
+88.7 17.362 82.638 213.525 40.9912 45.4842 261.778 22.8459 15.3758 
+88.8 17.3263 82.6737 213.386 41.0345 45.5791 261.701 22.8799 15.4192 
+88.9 17.2907 82.7093 213.248 41.0778 45.6741 261.623 22.9141 15.4628 
+89 17.2553 82.7447 213.11 41.121 45.7691 261.545 22.9482 15.5065 
+89.1 17.2201 82.7799 212.972 41.1642 45.8643 261.467 22.9825 15.5504 
+89.2 17.1849 82.8151 212.833 41.2074 45.9595 261.389 23.0167 15.5944 
+89.3 17.15 82.85 212.695 41.2506 46.0547 261.31 23.0511 15.6385 
+89.4 17.1152 82.8848 212.556 41.2937 46.1501 261.232 23.0855 15.6828 
+89.5 17.0805 82.9195 212.418 41.3368 46.2455 261.153 23.1199 15.7273 
+89.6 17.046 82.954 212.279 41.38 46.3411 261.074 23.1544 15.7719 
+89.7 17.0116 82.9884 212.14 41.423 46.4366 260.994 23.189 15.8166 
+89.8 16.9774 83.0226 212.002 41.4661 46.5323 260.915 23.2236 15.8615 
+89.9 16.9433 83.0567 211.863 41.5092 46.628 260.835 23.2583 15.9066 
+90 16.9094 83.0906 211.724 41.5522 46.7239 260.755 23.293 15.9518 
+90.1 16.8756 83.1244 211.585 41.5952 46.8198 260.675 23.3278 15.9972 
+90.2 16.842 83.158 211.446 41.6382 46.9157 260.595 23.3627 16.0427 
+90.3 16.8085 83.1915 211.307 41.6812 47.0118 260.514 23.3976 16.0883 
+90.4 16.7751 83.2249 211.168 41.7241 47.1079 260.433 23.4325 16.1342 
+90.5 16.7419 83.2581 211.029 41.767 47.2041 260.352 23.4675 16.1801 
+90.6 16.7088 83.2912 210.89 41.81 47.3003 260.271 23.5026 16.2263 
+90.7 16.6759 83.3241 210.75 41.8528 47.3967 260.19 23.5377 16.2725 
+90.8 16.6432 83.3568 210.611 41.8957 47.4931 260.108 23.5728 16.319 
+90.9 16.6105 83.3895 210.472 41.9386 47.5896 260.026 23.6081 16.3655 
+91 16.578 83.422 210.332 41.9814 47.6862 259.944 23.6433 16.4123 
+91.1 16.5457 83.4543 210.193 42.0242 47.7828 259.862 23.6787 16.4592 
+91.2 16.5135 83.4865 210.054 42.067 47.8795 259.78 23.7141 16.5062 
+91.3 16.4814 83.5186 209.914 42.1097 47.9763 259.697 23.7495 16.5534 
+91.4 16.4495 83.5505 209.774 42.1525 48.0731 259.614 23.785 16.6008 
+91.5 16.4177 83.5823 209.635 42.1952 48.1701 259.531 23.8205 16.6483 
+91.6 16.3861 83.6139 209.495 42.2379 48.2671 259.448 23.8561 16.696 
+91.7 16.3546 83.6454 209.355 42.2806 48.3641 259.364 23.8918 16.7438 
+91.8 16.3233 83.6767 209.215 42.3232 48.4613 259.281 23.9275 16.7918 
+91.9 16.2921 83.7079 209.076 42.3658 48.5585 259.197 23.9633 16.8399 
+92 16.261 83.739 208.936 42.4085 48.6558 259.113 23.9991 16.8882 
+92.1 16.2301 83.7699 208.796 42.451 48.7531 259.028 24.0349 16.9367 
+92.2 16.1993 83.8007 208.656 42.4936 48.8506 258.944 24.0709 16.9853 
+92.3 16.1686 83.8314 208.516 42.5362 48.9481 258.859 24.1068 17.034 
+92.4 16.1381 83.8619 208.376 42.5787 49.0456 258.774 24.1429 17.083 
+92.5 16.1078 83.8922 208.236 42.6212 49.1433 258.689 24.1789 17.1321 
+92.6 16.0775 83.9225 208.095 42.6637 49.241 258.604 24.2151 17.1813 
+92.7 16.0474 83.9526 207.955 42.7061 49.3388 258.518 24.2513 17.2307 
+92.8 16.0175 83.9825 207.815 42.7486 49.4366 258.432 24.2875 17.2802 
+92.9 15.9877 84.0123 207.675 42.791 49.5345 258.346 24.3238 17.33 
+93 15.958 84.042 207.534 42.8334 49.6325 258.26 24.3601 17.3798 
+93.1 15.9285 84.0715 207.394 42.8757 49.7306 258.174 24.3965 17.4299 
+93.2 15.8991 84.1009 207.253 42.9181 49.8287 258.087 24.433 17.4801 
+93.3 15.8698 84.1302 207.113 42.9604 49.9269 258 24.4695 17.5304 
+93.4 15.8407 84.1593 206.972 43.0027 50.0251 257.913 24.506 17.581 
+93.5 15.8117 84.1883 206.832 43.045 50.1234 257.826 24.5426 17.6316 
+93.6 15.7828 84.2172 206.691 43.0872 50.2218 257.738 24.5793 17.6825 
+93.7 15.7541 84.2459 206.55 43.1294 50.3203 257.651 24.616 17.7335 
+93.8 15.7255 84.2745 206.41 43.1717 50.4188 257.563 24.6527 17.7846 
+93.9 15.6971 84.3029 206.269 43.2138 50.5174 257.475 24.6895 17.836 
+94 15.6688 84.3312 206.128 43.256 50.6161 257.386 24.7264 17.8874 
+94.1 15.6406 84.3594 205.987 43.2981 50.7148 257.298 24.7633 17.9391 
+94.2 15.6125 84.3875 205.846 43.3403 50.8136 257.209 24.8003 17.9909 
+94.3 15.5846 84.4154 205.705 43.3823 50.9124 257.12 24.8373 18.0429 
+94.4 15.5568 84.4432 205.564 43.4244 51.0113 257.031 24.8743 18.095 
+94.5 15.5292 84.4708 205.423 43.4665 51.1103 256.941 24.9115 18.1473 
+94.6 15.5017 84.4983 205.282 43.5085 51.2094 256.852 24.9486 18.1998 
+94.7 15.4743 84.5257 205.141 43.5505 51.3085 256.762 24.9858 18.2524 
+94.8 15.4471 84.5529 205 43.5925 51.4076 256.672 25.0231 18.3052 
+94.9 15.4199 84.5801 204.859 43.6344 51.5069 256.581 25.0604 18.3581 
+95 15.393 84.607 204.717 43.6763 51.6062 256.491 25.0978 18.4112 
+95.1 15.3661 84.6339 204.576 43.7182 51.7056 256.4 25.1352 18.4645 
+95.2 15.3394 84.6606 204.435 43.7601 51.805 256.309 25.1727 18.518 
+95.3 15.3128 84.6872 204.294 43.802 51.9045 256.218 25.2102 18.5716 
+95.4 15.2863 84.7137 204.152 43.8438 52.004 256.127 25.2478 18.6254 
+95.5 15.26 84.74 204.011 43.8856 52.1037 256.035 25.2854 18.6793 
+95.6 15.2338 84.7662 203.869 43.9274 52.2033 255.944 25.323 18.7334 
+95.7 15.2077 84.7923 203.728 43.9691 52.3031 255.852 25.3607 18.7877 
+95.8 15.1818 84.8182 203.586 44.0109 52.4029 255.759 25.3985 18.8421 
+95.9 15.156 84.844 203.445 44.0526 52.5028 255.667 25.4363 18.8967 
+96 15.1303 84.8697 203.303 44.0943 52.6027 255.574 25.4742 18.9515 
+96.1 15.1047 84.8953 203.161 44.1359 52.7027 255.481 25.5121 19.0065 
+96.2 15.0793 84.9207 203.02 44.1776 52.8027 255.388 25.5501 19.0616 
+96.3 15.054 84.946 202.878 44.2192 52.9028 255.295 25.5881 19.1169 
+96.4 15.0289 84.9711 202.736 44.2608 53.003 255.202 25.6261 19.1723 
+96.5 15.0038 84.9962 202.594 44.3023 53.1032 255.108 25.6642 19.2279 
+96.6 14.9789 85.0211 202.453 44.3439 53.2035 255.014 25.7024 19.2837 
+96.7 14.9541 85.0459 202.311 44.3854 53.3039 254.92 25.7406 19.3397 
+96.8 14.9294 85.0706 202.169 44.4269 53.4043 254.825 25.7788 19.3958 
+96.9 14.9049 85.0951 202.027 44.4683 53.5048 254.731 25.8171 19.4521 
+97 14.8805 85.1195 201.885 44.5098 53.6053 254.636 25.8555 19.5085 
+97.1 14.8562 85.1438 201.743 44.5512 53.7059 254.541 25.8939 19.5652 
+97.2 14.832 85.168 201.601 44.5926 53.8065 254.446 25.9323 19.622 
+97.3 14.808 85.192 201.459 44.634 53.9072 254.35 25.9708 19.6789 
+97.4 14.7841 85.2159 201.317 44.6753 54.008 254.255 26.0094 19.7361 
+97.5 14.7603 85.2397 201.175 44.7166 54.1088 254.159 26.0479 19.7934 
+97.6 14.7366 85.2634 201.032 44.7579 54.2097 254.063 26.0866 19.8509 
+97.7 14.7131 85.2869 200.89 44.7992 54.3106 253.966 26.1253 19.9085 
+97.8 14.6897 85.3103 200.748 44.8404 54.4116 253.87 26.164 19.9663 
+97.9 14.6664 85.3336 200.606 44.8816 54.5127 253.773 26.2028 20.0243 
+98 14.6432 85.3568 200.463 44.9228 54.6138 253.676 26.2416 20.0825 
+98.1 14.6201 85.3799 200.321 44.964 54.715 253.579 26.2804 20.1408 
+98.2 14.5972 85.4028 200.179 45.0051 54.8162 253.481 26.3194 20.1993 
+98.3 14.5744 85.4256 200.036 45.0462 54.9174 253.384 26.3583 20.258 
+98.4 14.5517 85.4483 199.894 45.0873 55.0188 253.286 26.3973 20.3169 
+98.5 14.5291 85.4709 199.751 45.1283 55.1202 253.188 26.4364 20.3759 
+98.6 14.5067 85.4933 199.609 45.1694 55.2216 253.089 26.4755 20.4351 
+98.7 14.4844 85.5156 199.467 45.2104 55.3231 252.991 26.5146 20.4945 
+98.8 14.4622 85.5378 199.324 45.2514 55.4247 252.892 26.5538 20.5541 
+98.9 14.4401 85.5599 199.181 45.2923 55.5263 252.793 26.593 20.6138 
+99 14.4181 85.5819 199.039 45.3333 55.6279 252.694 26.6323 20.6737 
+99.1 14.3962 85.6038 198.896 45.3742 55.7297 252.595 26.6717 20.7338 
+99.2 14.3745 85.6255 198.754 45.415 55.8314 252.495 26.711 20.794 
+99.3 14.3529 85.6471 198.611 45.4559 55.9332 252.395 26.7504 20.8544 
+99.4 14.3314 85.6686 198.468 45.4967 56.0351 252.295 26.7899 20.915 
+99.5 14.31 85.69 198.325 45.5375 56.1371 252.195 26.8294 20.9758 
+99.6 14.2888 85.7112 198.183 45.5783 56.239 252.094 26.869 21.0368 
+99.7 14.2676 85.7324 198.04 45.619 56.3411 251.994 26.9086 21.0979 
+99.8 14.2466 85.7534 197.897 45.6598 56.4432 251.893 26.9482 21.1592 
+99.9 14.2257 85.7743 197.754 45.7005 56.5453 251.791 26.9879 21.2207 
+100 14.2049 85.7951 197.611 45.7411 56.6475 251.69 27.0276 21.2823 
+##CONCENTRATIONS
+#t MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP 
+
+
diff --git a/examples/MAPK_1000pt.objfun b/examples/MAPK_1000pt.objfun
new file mode 100644
index 0000000..82f097d
--- /dev/null
+++ b/examples/MAPK_1000pt.objfun
@@ -0,0 +1,4 @@
+# Example of a nonlinear objective function used in adjsenstest_ContDiscData.c
+1/1000 * 100 * 1/2 * ((MKKK - MKKK_data)^2 + (MKKK_P - MKKK_P_data)^2 + (MKK - MKK_data)^2+(MKK_P - MKK_P_data)^2+(MKK_PP - MKK_PP_data)^2 + (MAPK - MAPK_data)^2 + (MAPK_P - MAPK_P_data)^2 + (MAPK_PP - MAPK_PP_data )^2)
+
+
diff --git a/examples/MAPK_100pt.dat b/examples/MAPK_100pt.dat
new file mode 100644
index 0000000..19d28c1
--- /dev/null
+++ b/examples/MAPK_100pt.dat
@@ -0,0 +1,107 @@
+#t MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP 
+##CONCENTRATIONS
+0 90 10 280 10 10 280 10 10 
+1 89.0736 10.9264 280.053 10.1402 9.80684 279.966 10.1341 9.90002 
+2 88.1478 11.8522 280.087 10.2861 9.62736 279.938 10.2622 9.80014 
+3 87.2222 12.7778 280.101 10.4378 9.46152 279.915 10.3845 9.70043 
+4 86.2964 13.7036 280.096 10.5951 9.30931 279.898 10.5014 9.60098 
+5 85.3698 14.6302 280.071 10.758 9.17072 279.885 10.6132 9.50187 
+6 84.4423 15.5577 280.028 10.9265 9.0457 279.877 10.7202 9.40321 
+7 83.5136 16.4864 279.965 11.1006 8.93426 279.872 10.8226 9.30509 
+8 82.5835 17.4165 279.883 11.2803 8.83636 279.872 10.9208 9.20762 
+9 81.6517 18.3483 279.782 11.4656 8.75197 279.874 11.0149 9.11091 
+10 80.718 19.282 279.662 11.6565 8.68109 279.88 11.1054 9.01507 
+11 79.7824 20.2176 279.523 11.853 8.62368 279.887 11.1923 8.92021 
+12 78.8448 21.1552 279.365 12.0551 8.57972 279.898 11.276 8.82644 
+13 77.905 22.095 279.188 12.263 8.54919 279.909 11.3568 8.73389 
+14 76.963 23.037 278.991 12.4765 8.53208 279.923 11.4348 8.64268 
+15 76.0188 23.9812 278.776 12.6958 8.52836 279.937 11.5102 8.55291 
+16 75.0723 24.9277 278.541 12.9208 8.53802 279.952 11.5834 8.46472 
+17 74.1236 25.8764 278.287 13.1516 8.56104 279.967 11.6545 8.37823 
+18 73.1726 26.8274 278.014 13.3883 8.59742 279.983 11.7237 8.29355 
+19 72.2195 27.7805 277.722 13.6308 8.64714 279.998 11.7913 8.21081 
+20 71.2642 28.7358 277.411 13.8792 8.71021 280.012 11.8575 8.13013 
+21 70.3069 29.6931 277.08 14.1335 8.78661 280.026 11.9225 8.05163 
+22 69.3477 30.6523 276.73 14.3938 8.87637 280.038 11.9864 7.97544 
+23 68.3867 31.6133 276.361 14.66 8.97948 280.049 12.0496 7.90167 
+24 67.424 32.576 275.972 14.9321 9.09595 280.057 12.1122 7.83045 
+25 66.4598 33.5402 275.564 15.2102 9.2258 280.064 12.1744 7.76191 
+26 65.4942 34.5058 275.137 15.4942 9.36906 280.067 12.2365 7.69615 
+27 64.5275 35.4725 274.69 15.7842 9.52574 280.068 12.2985 7.63331 
+28 63.5599 36.4401 274.224 16.0801 9.69587 280.066 12.3608 7.57351 
+29 62.5915 37.4085 273.739 16.3819 9.8795 280.06 12.4234 7.51686 
+30 61.6227 38.3773 273.234 16.6896 10.0766 280.05 12.4867 7.4635 
+31 60.6536 39.3464 272.71 17.0031 10.2873 280.036 12.5508 7.41354 
+32 59.6847 40.3153 272.166 17.3223 10.5117 280.017 12.6159 7.3671 
+33 58.7161 41.2839 271.603 17.6474 10.7496 279.994 12.6822 7.32431 
+34 57.7482 42.2518 271.021 17.9781 11.0013 279.965 12.7498 7.28529 
+35 56.7812 43.2188 270.419 18.3144 11.2667 279.931 12.819 7.25017 
+36 55.8157 44.1843 269.798 18.6562 11.5458 279.891 12.89 7.21907 
+37 54.8518 45.1482 269.158 19.0036 11.8389 279.845 12.963 7.19212 
+38 53.8899 46.1101 268.498 19.3562 12.1458 279.793 13.038 7.16944 
+39 52.9305 47.0695 267.819 19.7142 12.4667 279.733 13.1154 7.15117 
+40 51.974 48.026 267.121 20.0773 12.8015 279.667 13.1953 7.13742 
+41 51.0207 48.9793 266.404 20.4455 13.1504 279.594 13.2778 7.12835 
+42 50.071 49.929 265.668 20.8186 13.5134 279.513 13.3632 7.12407 
+43 49.1255 50.8745 264.913 21.1965 13.8905 279.424 13.4516 7.12473 
+44 48.1845 51.8155 264.139 21.5791 14.2818 279.326 13.5433 7.13046 
+45 47.2485 52.7515 263.346 21.9664 14.6873 279.22 13.6383 7.1414 
+46 46.3179 53.6821 262.535 22.358 15.107 279.105 13.7369 7.15769 
+47 45.3933 54.6067 261.705 22.7539 15.541 278.981 13.8391 7.17949 
+48 44.475 55.525 260.857 23.154 15.9893 278.848 13.9452 7.20693 
+49 43.5636 56.4364 259.99 23.558 16.4519 278.704 14.0554 7.24017 
+50 42.6595 57.3405 259.105 23.9659 16.9288 278.551 14.1698 7.27936 
+51 41.7632 58.2368 258.203 24.3775 17.4199 278.387 14.2884 7.32466 
+52 40.8752 59.1248 257.282 24.7926 17.9254 278.212 14.4116 7.37624 
+53 39.996 60.004 256.344 25.211 18.4452 278.026 14.5394 7.43424 
+54 39.1261 60.8739 255.388 25.6326 18.9792 277.829 14.6719 7.49885 
+55 38.2658 61.7342 254.415 26.0573 19.5274 277.62 14.8094 7.57023 
+56 37.4158 62.5842 253.425 26.4848 20.0898 277.4 14.9518 7.64857 
+57 36.5764 63.4236 252.419 26.915 20.6663 277.167 15.0994 7.73403 
+58 35.7482 64.2518 251.395 27.3477 21.2569 276.921 15.2523 7.8268 
+59 34.9315 65.0685 250.356 27.7827 21.8615 276.662 15.4106 7.92707 
+60 34.1268 65.8732 249.3 28.2199 22.4801 276.391 15.5743 8.03503 
+61 33.3345 66.6655 248.229 28.6591 23.1124 276.106 15.7436 8.15087 
+62 32.555 67.445 247.141 29.1001 23.7584 275.807 15.9186 8.2748 
+63 31.7888 68.2112 246.039 29.5428 24.4181 275.494 16.0993 8.40702 
+64 31.0361 68.9639 244.922 29.9869 25.0912 275.166 16.2859 8.54774 
+65 30.2974 69.7026 243.79 30.4324 25.7777 274.824 16.4785 8.69716 
+66 29.573 70.427 242.644 30.879 26.4774 274.468 16.677 8.85551 
+67 28.8632 71.1368 241.483 31.3266 27.1902 274.095 16.8815 9.023 
+68 28.1682 71.8318 240.309 31.775 27.9159 273.708 17.0922 9.19986 
+69 27.4884 72.5116 239.122 32.224 28.6542 273.305 17.309 9.38631 
+70 26.824 73.176 237.921 32.6736 29.4052 272.885 17.532 9.58258 
+71 26.1752 73.8248 236.708 33.1234 30.1685 272.45 17.7612 9.78892 
+72 25.5422 74.4578 235.483 33.5735 30.9439 271.998 17.9967 10.0056 
+73 24.9252 75.0748 234.245 34.0236 31.7314 271.529 18.2384 10.2327 
+74 24.3243 75.6757 232.996 34.4736 32.5305 271.043 18.4864 10.4707 
+75 23.7396 76.2604 231.735 34.9233 33.3412 270.54 18.7407 10.7197 
+76 23.1712 76.8288 230.464 35.3726 34.1633 270.019 19.0013 10.9799 
+77 22.6191 77.3809 229.182 35.8214 34.9963 269.48 19.2682 11.2517 
+78 22.0835 77.9165 227.89 36.2696 35.8403 268.923 19.5413 11.5353 
+79 21.5642 78.4358 226.588 36.7169 36.6949 268.348 19.8207 11.8309 
+80 21.0614 78.9386 225.277 37.1633 37.5598 267.755 20.1063 12.1388 
+81 20.5748 79.4252 223.956 37.6087 38.4348 267.143 20.398 12.4593 
+82 20.1044 79.8956 222.627 38.0529 39.3197 266.512 20.6959 12.7925 
+83 19.6502 80.3498 221.29 38.4959 40.2142 265.861 20.9999 13.1389 
+84 19.212 80.788 219.944 38.9374 41.1181 265.191 21.3099 13.4986 
+85 18.7897 81.2103 218.591 39.3775 42.0311 264.502 21.6259 13.8719 
+86 18.383 81.617 217.231 39.816 42.953 263.793 21.9478 14.2591 
+87 17.9919 82.0081 215.864 40.2528 43.8835 263.064 22.2755 14.6604 
+88 17.6161 82.3839 214.49 40.6878 44.8223 262.315 22.609 15.0761 
+89 17.2553 82.7447 213.11 41.121 45.7691 261.545 22.9482 15.5065 
+90 16.9094 83.0906 211.724 41.5522 46.7239 260.755 23.293 15.9518 
+91 16.578 83.422 210.332 41.9814 47.6862 259.944 23.6433 16.4123 
+92 16.261 83.739 208.936 42.4085 48.6558 259.113 23.9991 16.8882 
+93 15.958 84.042 207.534 42.8334 49.6325 258.26 24.3601 17.3798 
+94 15.6688 84.3312 206.128 43.256 50.6161 257.386 24.7264 17.8874 
+95 15.393 84.607 204.717 43.6763 51.6062 256.491 25.0978 18.4112 
+96 15.1303 84.8697 203.303 44.0943 52.6027 255.574 25.4742 18.9515 
+97 14.8805 85.1195 201.885 44.5098 53.6053 254.636 25.8555 19.5085 
+98 14.6432 85.3568 200.463 44.9228 54.6138 253.676 26.2416 20.0825 
+99 14.4181 85.5819 199.039 45.3333 55.6279 252.694 26.6323 20.6737 
+100 14.2049 85.7951 197.611 45.7411 56.6475 251.69 27.0276 21.2823 
+##CONCENTRATIONS
+#t MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP 
+
+
diff --git a/examples/MAPK_100pt.objfun b/examples/MAPK_100pt.objfun
new file mode 100644
index 0000000..4888885
--- /dev/null
+++ b/examples/MAPK_100pt.objfun
@@ -0,0 +1,4 @@
+# Example of a nonlinear objective function used in adjsenstest_ContDiscData.c
+1/100 * 100 * 1/2*((MKKK-MKKK_data)^2+(MKKK_P-MKKK_P_data)^2+(MKK-MKK_data)^2+(MKK_P-MKK_P_data)^2+(MKK_PP-MKK_PP_data)^2+(MAPK-MAPK_data)^2+(MAPK_P-MAPK_P_data)^2+(MAPK_PP-MAPK_PP_data)^2)
+
+
diff --git a/examples/MAPK_10pt.dat b/examples/MAPK_10pt.dat
new file mode 100644
index 0000000..b6e32a5
--- /dev/null
+++ b/examples/MAPK_10pt.dat
@@ -0,0 +1,17 @@
+#t MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP 
+##CONCENTRATIONS
+0 90 10 280 10 10 280 10 10 
+10 80.718 19.282 279.662 11.6565 8.68109 279.88 11.1054 9.01507 
+20 71.2642 28.7358 277.411 13.8792 8.71021 280.012 11.8575 8.13013 
+30 61.6227 38.3773 273.234 16.6896 10.0766 280.05 12.4867 7.4635 
+40 51.974 48.026 267.121 20.0773 12.8015 279.667 13.1953 7.13742 
+50 42.6595 57.3405 259.105 23.9659 16.9288 278.551 14.1698 7.27936 
+60 34.1268 65.8732 249.3 28.2199 22.4801 276.391 15.5743 8.03503 
+70 26.824 73.176 237.921 32.6736 29.4052 272.885 17.532 9.58258 
+80 21.0614 78.9386 225.277 37.1633 37.5598 267.755 20.1063 12.1388 
+90 16.9094 83.0906 211.724 41.5522 46.7239 260.755 23.293 15.9518 
+100 14.2049 85.7951 197.611 45.7411 56.6475 251.69 27.0276 21.2823 
+##CONCENTRATIONS
+#t MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP 
+
+
diff --git a/examples/MAPK_10pt.objfun b/examples/MAPK_10pt.objfun
new file mode 100644
index 0000000..cecce80
--- /dev/null
+++ b/examples/MAPK_10pt.objfun
@@ -0,0 +1,4 @@
+# Example of a nonlinear objective function used in adjsenstest_ContDiscData.c
+1/10 * 100 * 1/2*((MKKK-MKKK_data)^2+(MKKK_P-MKKK_P_data)^2+(MKK-MKK_data)^2+(MKK_P-MKK_P_data)^2+(MKK_PP-MKK_PP_data)^2+(MAPK-MAPK_data)^2+(MAPK_P-MAPK_P_data)^2+(MAPK_PP-MAPK_PP_data)^2)
+
+
diff --git a/examples/MAPK_withData.objfun b/examples/MAPK_withData.objfun
new file mode 100644
index 0000000..a432db5
--- /dev/null
+++ b/examples/MAPK_withData.objfun
@@ -0,0 +1,2 @@
+# Example of a nonlinear objective function used in adjsenstest_ContDiscData.c
+1/2*((MKKK-MKKK_data)^2+(MKKK_P-MKKK_P_data)^2+(MKK-MKK_data)^2+(MKK_P-MKK_P_data)^2+(MKK_PP-MKK_PP_data)^2+(MAPK-MAPK_data)^2+(MAPK_P-MAPK_P_data)^2+(MAPK_PP-MAPK_PP_data)^2)
diff --git a/examples/Makefile.am b/examples/Makefile.am
new file mode 100644
index 0000000..cf00873
--- /dev/null
+++ b/examples/Makefile.am
@@ -0,0 +1,75 @@
+# $Id: Makefile.am,v 1.30 2009/02/15 17:51:28 chfl Exp $
+## 
+## This library is free software; you can redistribute it and/or modify it
+## under the terms of the GNU Lesser General Public License as published
+## by the Free Software Foundation; either version 2.1 of the License, or
+## any later version.
+## 
+## This library 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. The software and
+## documentation provided hereunder is on an "as is" basis, and the
+## authors have no obligations to provide maintenance, support,
+## updates, enhancements or modifications.  In no event shall the
+## authors be liable to any party for direct, indirect, special,
+## incidental or consequential damages, including lost profits, arising
+## out of the use of this software and its documentation, even if the
+## authors have been advised of the possibility of such damage.  See
+## the GNU Lesser General Public License for more details.
+## 
+## You should have received a copy of the GNU Lesser General Public License
+## along with this library; if not, write to the Free Software Foundation,
+## Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+## 
+## The original code contained here was initially developed by:
+## 
+##     Christoph Flamm
+## 
+## Contributor(s):
+##     Rainer Machne    
+##
+AM_CPPFLAGS = -I$(srcdir)/../src @SBML_CPPFLAGS@ @SUNDIALS_CPPFLAGS@
+AM_CFLAGS  = -Wno-unknown-pragmas -Wall -Wextra -ansi -std=iso9899:1990
+AM_LDFLAGS = @GRAPHVIZ_RPATH@ @GRACE_RPATH@ @SBML_RPATH@ \
+             @SUNDIALS_LDFLAGS@ \
+             @SBML_LDFLAGS@ \
+             @GRACE_LDFLAGS@ \
+             @GRAPHVIZ_LDFLAGS@
+LDADD = ../src/libODES.la \
+    @SUNDIALS_LIBS@ \
+    @SBML_LIBS@ \
+    @GRACE_LIBS@ \
+    @GRAPHVIZ_LIBS@
+
+noinst_PROGRAMS = defSeries integrate sensitivity adj_sensitivity batchIntegrate \
+               simpleIntInst changeIntInst changeParamInt ASTIndexTest ASTgetIndexTest\
+               ParameterScanner Sense \
+               sharingIntInst twinIntInst \
+               printODEs analyzeJacobian analyzeSens \
+	       root senstest FIMtest adjsenstest integrateODEs compilerTest \
+	       adjsenstest_ContDiscData bistability
+printODEs_SOURCES = printODEModel.c
+defSeries_SOURCES = definedTimeSeries.c
+integrate_SOURCES = integrate.c
+sensitivity_SOURCES = sensitivity.c
+senstest_SOURCES = senstest.c
+FIMtest_SOURCES = FIMtest.c
+adjsenstest_SOURCES = adjsenstest.c
+adjsenstest_ContDiscData_SOURCES = adjsenstest_ContDiscData.c
+adj_sensitivity_SOURCES = adj_sensitivity.c
+batchIntegrate_SOURCES = batch_integrate.c
+simpleIntInst_SOURCES  = simpleIntegratorInstance.c
+changeIntInst_SOURCES  = ChangingIntegratorInstance.c
+changeParamInt_SOURCES = ChangingParameterIntegrator.c
+ASTIndexTest_SOURCES = ASTIndexTest.c
+ASTgetIndexTest_SOURCES = ASTgetIndexTest.c
+analyzeJacobian_SOURCES = analyzeJacobian.c
+analyzeSens_SOURCES = analyzeSensitivity.c
+ParameterScanner_SOURCES = ParameterScanner.c
+Sense_SOURCES = Sense.c
+sharingIntInst_SOURCES = SharingIntegratorInstance.c
+twinIntInst_SOURCES = TwinIntegratorInstance.c
+root_SOURCES = findRoot.c
+integrateODEs_SOURCES = integrateODEs.c
+compilerTest_SOURCES = testCompiler.c
+bistability_SOURCES = bistability.c
diff --git a/examples/ParameterScanner.c b/examples/ParameterScanner.c
new file mode 100644
index 0000000..126d8ae
--- /dev/null
+++ b/examples/ParameterScanner.c
@@ -0,0 +1,181 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-03-10 16:37:42 raim>
+  $Id: ParameterScanner.c,v 1.16 2008/03/10 19:24:47 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/integratorInstance.h>
+#include <sbmlsolver/solverError.h>
+
+void DumpState(
+    integratorInstance_t *ii, variableIndex_t *p, variableIndex_t *v)
+{
+    printf(
+        " %g %g %g\n", 
+        IntegratorInstance_getTime(ii),
+        IntegratorInstance_getVariableValue(ii, p),
+        IntegratorInstance_getVariableValue(ii, v));
+}
+
+void DumpErrors()
+{
+    char *errors = SolverError_dumpToString();
+
+    fprintf(stderr, "%s", errors);
+    SolverError_freeDumpString(errors);
+    SolverError_clear();
+}
+
+int doit(int argc, char *argv[])
+{
+    int i ;
+    cvodeSettings_t *settings = CvodeSettings_create();
+    variableIndex_t *speciesVI, *parameterVI;
+    integratorInstance_t *integratorInstance;
+    char *modelStr, *parameterStr, *speciesStr;
+    double parameter, timeStepLength, parameterEnd, parameterStepSize,
+        errorTolerance, relativeErrorTolerance;
+    int numberOfTimeSteps, maximumIntegrationSteps;
+    odeModel_t *model ;
+        
+    if (argc < 9)
+    {
+        fprintf(
+            stderr,
+            "usage %s sbml-model-file time-steps time-step-length parameter parameter-start parameter-end parameter-step species [error-tolerance] [relative-error-tolerance] [maximum integration steps]\n",
+            argv[0]);
+
+        exit(0);
+    }
+
+    modelStr = argv[1];
+    numberOfTimeSteps = atoi(argv[2]);
+    timeStepLength = atof(argv[3]);
+    parameterStr = argv[4];
+    parameter = atof(argv[5]);
+    parameterEnd = atof(argv[6]);
+    parameterStepSize = atof(argv[7]);
+    speciesStr = argv[8];
+
+    if (argc > 9)
+        errorTolerance = atof(argv[9]);
+    else
+        errorTolerance = 1e-9;
+
+    if (argc > 10)
+        relativeErrorTolerance = atof(argv[10]);
+    else
+        relativeErrorTolerance = 1e-4;
+
+    if (argc > 11)
+        maximumIntegrationSteps = atoi(argv[11]);
+    else
+        maximumIntegrationSteps = 500;
+
+    model = ODEModel_createFromFile(modelStr);
+    RETURN_ON_ERRORS_WITH(1);
+
+    speciesVI = ODEModel_getVariableIndex(model, speciesStr);
+    parameterVI = ODEModel_getVariableIndex(model, parameterStr);
+    RETURN_ON_ERRORS_WITH(1);
+    
+    CvodeSettings_setIndefinitely(settings, 1);    /* run without a defined end time */
+    CvodeSettings_setTime(settings, timeStepLength, 1);          /*  end time is the step size - Indefinitely == 1 */
+    CvodeSettings_setError(settings, errorTolerance);         /* absolute tolerance in Cvode integration */
+    CvodeSettings_setRError(settings, relativeErrorTolerance);        /* relative tolerance in Cvode integration */
+    CvodeSettings_setMxstep(settings, maximumIntegrationSteps);        /* maximum step number for CVode integration */
+    CvodeSettings_setHaltOnEvent(settings, 0);      /* doesn't stop integration upon an event */
+    CvodeSettings_setHaltOnSteadyState(settings, 0);      /* doesn't stop integration upon a steady state */
+    CvodeSettings_setJacobian(settings, 1);      /* Toggle use of Jacobian ASTs or approximation */
+    CvodeSettings_setStoreResults(settings, 0);     /* don't Store time course history */
+    CvodeSettings_setCompileFunctions(settings, 1); /* compile model */ 
+
+    
+    integratorInstance = IntegratorInstance_create(model, settings);
+    
+    printf("set xlabel 'time'\n");
+    printf("set ylabel '%s'\n", parameterStr);
+    printf("splot '-' using 1:2:3 title '%s' with lines\n", speciesStr);
+        
+    for (; parameter <= parameterEnd; parameter += parameterStepSize)
+    {
+        int error = 0 ;
+
+        IntegratorInstance_reset( integratorInstance);
+        RETURN_ON_ERRORS_WITH(1);
+
+        IntegratorInstance_setVariableValue(integratorInstance,
+					    parameterVI, parameter); 
+        DumpState(integratorInstance, parameterVI, speciesVI);
+
+        for (i=0; i != numberOfTimeSteps && !error; i++)
+        {
+            IntegratorInstance_integrateOneStep(integratorInstance);
+            
+            if (SolverError_getNum(ERROR_ERROR_TYPE) ||
+		SolverError_getNum(FATAL_ERROR_TYPE))
+            {
+                printf("Parameter = %g\n", parameter);
+                DumpErrors();
+                error = 1;
+            }
+            else
+                DumpState(integratorInstance, parameterVI, speciesVI);
+        }
+        
+        printf("\n");
+    }
+
+    printf("end\n");
+    IntegratorInstance_free(integratorInstance);
+    VariableIndex_free(parameterVI);
+    VariableIndex_free(speciesVI);
+    ODEModel_free(model);
+    CvodeSettings_free(settings);
+
+    return 0;
+}
+
+int main (int argc, char *argv[])
+{
+    int result = doit(argc, argv);
+    DumpErrors();
+
+    return result;
+}
diff --git a/examples/README b/examples/README
new file mode 100644
index 0000000..d47b2b3
--- /dev/null
+++ b/examples/README
@@ -0,0 +1,105 @@
+	Example use of the SBML_odeSolver as a library
+	
+1 Compilation of example programs:
+
+After compiling the odeSolver source code (see INSTALL file
+in main directory), change to the examples directory, and type
+`make'. The configure process has constructed a `Makefile', that 
+should include all necessary paths to header and library files.
+
+The example .c files are extensively documented and include a variety
+of the available interface functions.
+
+
+2 Usage of example programs:
+
+  See extra documentation for ParameterScanner and Sense applications
+  online at
+  http://www.tbi.univie.ac.at/~raim/odeSolver/doc/app.html
+
+  
+./integrate MAPK.xml 1000 100
+
+will integrate the SBML model ../Test/MAPK.xml from time 0 to time
+1000 in 100 steps, and will print out the time course of species
+concentrations (and other variable parameters or compartments, if a model
+includes such), and reaction fluxes in 100 time steps (producing 101 time
+points, including the initial conditions).
+
+./batchIntegrate MAPK.xml 1000 2 1 10 5 J1 1 10 10 k4 J3
+
+will do the same integration as above, with 2 time steps to time 1000,
+but in 6 different integration runs, varying the initial
+concentration of the global parameter `J1' paramer from 1 to 10 in 5 steps,
+and local reaction parameter `k4' in reaction `J3' 
+from 1 to 10 in 10 steps. 
+It will then print out one timecourse after the other. 
+Parameter variation can be done for species, compartments, global and local
+parameters, where for the latter the reaction Id must be given as in the 
+example above.
+
+
+./defSeries MAPK.xml
+
+exemplifies how to define specific time points for integration.
+
+
+./ASTIndexTest
+
+just tests SOSlib's extension to libSBML's ASTNode, by an index in the
+AST_NAME type of ASTNode. This index is used to retrieve current values
+of variables and parameters during formula evaluation.
+
+
+./printODEs
+
+exemplifies how to interface the internal ODE model that is constructed
+from an input SBML model (basic-model1-forward-l2.xml from the SBML
+semantic test suite).
+
+
+./simpleIntInst
+
+exemplifies how to set up integration options and run the integration
+with two different settings.
+
+
+./changeIntInst
+
+exemplifies how to use one internal ODE model structure with two different
+integrator instances, and how the integrator interface functions can be
+used to change values during an integration run, in this case depending on
+values in the other integrator instance.
+
+
+./analyzeJacobian
+
+exemplifies how to construct the jacobian matrix of a derived ODE system
+and how to interface evaluate the ODE model and its jacobian.
+
+
+./analyzeSens
+
+exemplifies how to construct and interface the parametric matrix 
+for sensitivity analysis
+
+
+./Sense MAPK.xml 200 7.5 p Ki MKKK_P MAPK_PP > sense.gnuplot
+
+creates a plot of the sensitivity of species MKKK_P and MAPK_PP to the
+values of the parameter Ki for the timecourse of 200 timesteps of 7.5 time
+units. To display the plot type the command:
+Linux: 	gnuplot -persist sense.gnuplot &
+Windows:	wgnuplot -persist sense.gnuplot &
+
+
+
+./ParameterScanner MAPK.xml 200 7.5 Ki 0 15 0.15 MAPK_PP > pscan.gnuplot
+
+creates plot data of a parameter scan in MAPK.xml of parameter Ki from
+0 through 15 in steps of 0.15. The surface plotted is the concentration of
+MAPK_PP in 200 timesteps of 7.5 time units.
+To display the plot type the command:
+
+Linux: 	gnuplot -persist pscan.gnuplot &
+Windows:	wgnuplot -persist pscan.gnuplot &
diff --git a/examples/Sense.c b/examples/Sense.c
new file mode 100644
index 0000000..d0f192a
--- /dev/null
+++ b/examples/Sense.c
@@ -0,0 +1,221 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-09-12 22:45:05 raim>
+  $Id: Sense.c,v 1.6 2008/09/22 10:30:25 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <string.h>
+
+#include <sbmlsolver/integratorInstance.h>
+#include <sbmlsolver/solverError.h>
+
+void DumpErrors()
+{
+    char *errors = SolverError_dumpToString();
+
+    fprintf(stderr, "%s", errors);
+    SolverError_freeDumpString(errors);
+    SolverError_clear();
+}
+
+void printGraph(
+    cvodeResults_t *results,
+    int parameterMode,
+    int numOfSymbols,
+    char *symbol,
+    char **symbols,
+    variableIndex_t *symbolVI,
+    variableIndex_t **symbolsVI) 
+{
+    int i, j ;
+
+    printf("set xlabel 'time'\n");
+
+    printf(
+        "set ylabel 'Sensitivity of %s to %s'\n",
+        parameterMode ? "Variable" : symbol,
+        parameterMode ? symbol : "Parameter");
+
+    printf("plot ");    
+    for (i = 0; i != numOfSymbols; i++)
+    {
+       printf("'-' using 1:2 title '%s' with lines", symbols[i]);
+       if (i != numOfSymbols - 1)
+           printf(", ");
+    }
+    printf("\n");
+
+
+    for (j= 0; j != numOfSymbols; j++)
+    {
+        printf("\n#time %s\n", symbols[j]);
+
+        for (i = 0; i != CvodeResults_getNout(results); i++)
+        {
+            printf("%g", CvodeResults_getTime(results, i));
+            printf(
+                " %g",
+                CvodeResults_getSensitivity(
+                    results,
+                    parameterMode ? symbolsVI[j] : symbolVI,
+                    parameterMode ? symbolVI : symbolsVI[j],
+                    i));
+            printf("\n");
+        }
+        printf("e\n");
+    }
+}
+
+int doit(int argc, char *argv[])
+{
+    int i, parameterMode = -1;
+    cvodeSettings_t *settings = CvodeSettings_create();
+    variableIndex_t *symbolVI, **symbolsVI;
+    integratorInstance_t *integratorInstance;
+    char *modelStr, *symbol, **symbols;
+    double timeStepLength, errorTolerance, relativeErrorTolerance;
+    int numOfSymbols = 0, numberOfTimeSteps, maximumIntegrationSteps;
+    odeModel_t *model ;
+    cvodeResults_t *results;
+        
+    if (argc > 4)
+    {
+        if (strcmp("p", argv[4]) == 0) 
+            parameterMode = 1 ;
+        else if (strcmp("v", argv[4]) == 0)
+            parameterMode = 0 ;
+        else
+            parameterMode = -1;
+    }
+
+    if (argc < 6 || parameterMode == -1)
+    {
+        fprintf(
+            stderr,
+            "usage %s sbml-model-file time-steps time-step-length mode symbol [symbols] [error-tolerance] [relative-error-tolerance] [maximum integration steps]\nmode is either 'p' or 'v'\n",
+            argv[0]);
+
+        exit(0);
+    }
+
+    modelStr = argv[1];
+    numberOfTimeSteps = atoi(argv[2]);
+    timeStepLength = atof(argv[3]);
+    symbol = argv[5];
+
+    model = ODEModel_createFromFile(modelStr);
+    RETURN_ON_ERRORS_WITH(1);
+
+    symbolVI = ODEModel_getVariableIndex(model, symbol);
+    RETURN_ON_ERRORS_WITH(1);
+    
+    while (argc > 6 + numOfSymbols && !isdigit(argv[6 + numOfSymbols][0]))
+        numOfSymbols++ ;
+
+    symbolsVI = (variableIndex_t **)calloc(sizeof(variableIndex_t *), numOfSymbols);
+    symbols = (char **)calloc(sizeof(char *), numOfSymbols);
+
+    for (i = 0; i != numOfSymbols; i++)
+    {
+        symbols[i] = argv[6 + i];
+        symbolsVI[i] = ODEModel_getVariableIndex(model, symbols[i]);
+        RETURN_ON_ERRORS_WITH(1);
+    }
+
+    if (argc > 6 + numOfSymbols)
+        errorTolerance = atof(argv[6 + numOfSymbols]);
+    else
+        errorTolerance = 1e-9;
+
+    if (argc > 7 + numOfSymbols)
+        relativeErrorTolerance = atof(argv[7 + numOfSymbols]);
+    else
+        relativeErrorTolerance = 1e-4;
+
+    if (argc > 8 + numOfSymbols)
+        maximumIntegrationSteps = atoi(argv[8 + numOfSymbols]);
+    else
+        maximumIntegrationSteps = 500;
+
+    CvodeSettings_setTime(settings, timeStepLength * numberOfTimeSteps, numberOfTimeSteps);          
+    CvodeSettings_setError(settings, errorTolerance);         /* absolute tolerance in Cvode integration */
+    CvodeSettings_setRError(settings, relativeErrorTolerance);        /* relative tolerance in Cvode integration */
+    CvodeSettings_setMxstep(settings, maximumIntegrationSteps);        /* maximum step number for CVode integration */
+    CvodeSettings_setHaltOnEvent(settings, 0);      /* doesn't stop integration upon an event */
+    CvodeSettings_setHaltOnSteadyState(settings, 0);      /* doesn't stop integration upon a steady state */
+    CvodeSettings_setJacobian(settings, 1);      /* Toggle use of Jacobian ASTs or approximation */
+    CvodeSettings_setStoreResults(settings, 1);     /* don't Store time course history */
+    CvodeSettings_setSensitivity(settings, 1); /* switch on sensitivity */
+    CvodeSettings_setSensMethod(settings, 0);
+    CvodeSettings_setCompileFunctions(settings, 0);
+
+    integratorInstance = IntegratorInstance_create(model, settings);
+    RETURN_ON_ERRORS_WITH(1);
+
+    while (!IntegratorInstance_timeCourseCompleted(integratorInstance))
+    {
+        IntegratorInstance_integrateOneStep(integratorInstance);
+        RETURN_ON_ERRORS_WITH(1);
+    }
+
+    results = IntegratorInstance_createResults(integratorInstance);
+
+    printGraph(results, parameterMode, numOfSymbols, symbol, symbols, symbolVI, symbolsVI);
+
+    for (i=0; i != numOfSymbols; i++)
+        VariableIndex_free(symbolsVI[i]);
+
+    free(symbols);
+    free(symbolsVI);
+    VariableIndex_free(symbolVI);
+    CvodeResults_free(results);
+    IntegratorInstance_free(integratorInstance);
+    CvodeSettings_free(settings);
+    ODEModel_free(model);
+
+    return 0;
+}
+
+int main (int argc, char *argv[])
+{
+    int result = doit(argc, argv);
+    DumpErrors();
+
+    return result;
+}
diff --git a/examples/SharingIntegratorInstance.c b/examples/SharingIntegratorInstance.c
new file mode 100644
index 0000000..ef6a4bd
--- /dev/null
+++ b/examples/SharingIntegratorInstance.c
@@ -0,0 +1,138 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2005-10-27 16:22:14 raim>
+  $Id: SharingIntegratorInstance.c,v 1.7 2006/03/09 17:23:49 afinney Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <assert.h>
+
+#include <sbmlsolver/integratorInstance.h>
+#include <sbmlsolver/solverError.h>
+
+void DumpState(
+    integratorInstance_t *iia,
+    integratorInstance_t *iib,
+    variableIndex_t *v1, variableIndex_t *v2
+    )
+{
+    printf(
+        " %g %g %g %g %g\n", 
+        IntegratorInstance_getTime(iia),
+        IntegratorInstance_getVariableValue(iia, v1),
+        IntegratorInstance_getVariableValue(iia, v2),
+        IntegratorInstance_getVariableValue(iib, v1),
+        IntegratorInstance_getVariableValue(iib, v2));
+}
+
+int doit(void)
+{
+    int i ;
+    cvodeSettings_t *settings ;
+    variableIndex_t *s1, *s2;
+    integratorInstance_t *integratorInstanceA;
+    integratorInstance_t *integratorInstanceB;
+
+    odeModel_t *model = ODEModel_createFromFile("events-2-events-1-assignment-l2.xml");
+    RETURN_ON_ERRORS_WITH(1);
+
+    assert(ODEModel_hasVariable(model, "S1"));
+    assert(ODEModel_hasVariable(model, "S1"));
+    assert(!ODEModel_hasVariable(model, "foobar"));
+
+    s1 = ODEModel_getVariableIndex(model, "S1");
+    s2 = ODEModel_getVariableIndex(model, "S2");
+    
+    /* Creating settings with default values */
+    settings = CvodeSettings_create();
+
+    
+    /* Setting end time to .1, number of time steps to 1 and NULL
+       instead of an optional predefined time series (double *); due
+       to Indefinitely == 1, Printstep 1 will be ignored and Time =
+       0.1 will be used as timestep for infinite integration */
+    CvodeSettings_setTime(settings, .01, 1);
+
+    /* Setting Cvode Parameters: absolute and relative tolerances and
+       maximal internal step */
+    CvodeSettings_setErrors(settings, 1e-18, 1e-14, 500);
+
+    
+    /* Setting Integration Switches: see documentation or
+       example simpleIntegratorInstance.c for details on
+       the passed values */
+    CvodeSettings_setSwitches(settings, 1, 1, 0, 0, 0, 0, 0);
+
+    /* CvodeSettings_setCompileFunctions(settings, 1); */
+
+    integratorInstanceA = IntegratorInstance_create(model, settings);
+    RETURN_ON_ERRORS_WITH(1);
+
+    integratorInstanceB = IntegratorInstance_create(model, settings);
+    RETURN_ON_ERRORS_WITH(1);
+
+    DumpState(integratorInstanceA, integratorInstanceB, s1, s2);
+
+    for (i=0; i != 500; i++)
+    {
+        IntegratorInstance_integrateOneStep(integratorInstanceA);
+        RETURN_ON_ERRORS_WITH(1);
+
+        IntegratorInstance_integrateOneStep(integratorInstanceB);
+        RETURN_ON_ERRORS_WITH(1);
+
+        DumpState(integratorInstanceA, integratorInstanceB, s1, s2);
+
+    }
+
+    IntegratorInstance_free(integratorInstanceA);
+    IntegratorInstance_free(integratorInstanceB);
+    VariableIndex_free(s1);
+    VariableIndex_free(s2);
+    ODEModel_free(model);
+    CvodeSettings_free(settings);
+
+    return 0;
+}
+
+int main(void)
+{
+    int result = doit();
+
+    SolverError_dump();
+    SolverError_clear();
+
+    return result;
+}
\ No newline at end of file
diff --git a/examples/TwinIntegratorInstance.c b/examples/TwinIntegratorInstance.c
new file mode 100644
index 0000000..7de84a5
--- /dev/null
+++ b/examples/TwinIntegratorInstance.c
@@ -0,0 +1,124 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2005-11-03 11:03:51 raim>
+  $Id: TwinIntegratorInstance.c,v 1.4 2006/03/09 17:23:49 afinney Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+
+#include <sbmlsolver/integratorInstance.h>
+#include <sbmlsolver/solverError.h>
+
+void DumpState(
+    integratorInstance_t *iia,
+    variableIndex_t *v1, variableIndex_t *v2,
+    integratorInstance_t *iib,
+    variableIndex_t *v3, variableIndex_t *v4)
+{
+    printf(
+        " %g %g %g %g %g\n", 
+        IntegratorInstance_getTime(iia),
+        IntegratorInstance_getVariableValue(iia, v1),
+        IntegratorInstance_getVariableValue(iia, v2),
+        IntegratorInstance_getVariableValue(iib, v3),
+        IntegratorInstance_getVariableValue(iib, v4));
+}
+
+int main(void)
+{
+    int i ;
+    odeModel_t *modelA = ODEModel_createFromFile("events-2-events-1-assignment-l2.xml");
+    odeModel_t *modelB = ODEModel_createFromFile("events-1-event-1-assignment-l2.xml");
+    variableIndex_t *s1a = ODEModel_getVariableIndex(modelA, "S1");
+    variableIndex_t *s2a = ODEModel_getVariableIndex(modelA, "S2");
+    variableIndex_t *s1b = ODEModel_getVariableIndex(modelB, "S1");
+    variableIndex_t *s2b = ODEModel_getVariableIndex(modelB, "S2");
+    integratorInstance_t *integratorInstanceA;
+    integratorInstance_t *integratorInstanceB;
+    
+    cvodeSettings_t *settings ;
+
+    /* Creating settings with default values */
+    settings = CvodeSettings_create();
+
+    
+    /* Setting end time to .1, number of time steps to 1 and NULL
+       instead of an optional predefined time series (double *); due
+       to Indefinitely == 1, Printstep 1 will be ignored and Time =
+       0.1 will be used as timestep for infinite integration */
+    CvodeSettings_setTime(settings, .01, 1);
+
+    /* Setting Cvode Parameters: absolute and relative tolerances and
+       maximal internal step */
+    CvodeSettings_setErrors(settings, 1e-18, 1e-14, 500);
+
+    
+    /* Setting Integration Switches: see documentation or
+       example simpleIntegratorInstance.c for details on
+       the passed values */
+    CvodeSettings_setSwitches(settings, 1, 1, 0, 0, 0, 0, 0);
+
+    /* CvodeSettings_setCompileFunctions(settings, 1); */
+
+    integratorInstanceA = IntegratorInstance_create(modelA, settings);
+    integratorInstanceB = IntegratorInstance_create(modelB, settings);
+
+    DumpState(integratorInstanceA, s1a, s2a, integratorInstanceB, s1b, s2b);
+
+    for (i=0; i != 500; i++)
+    {
+        if (!IntegratorInstance_integrateOneStep(integratorInstanceA))
+            return 1;
+
+        if (!IntegratorInstance_integrateOneStep(integratorInstanceB))
+            return 1;
+
+        DumpState(integratorInstanceA, s1a, s2a, integratorInstanceB, s1b, s2b);
+    }
+
+    IntegratorInstance_free(integratorInstanceA);
+    IntegratorInstance_free(integratorInstanceB);
+    VariableIndex_free(s1a);
+    VariableIndex_free(s2a);
+    VariableIndex_free(s1b);
+    VariableIndex_free(s2b);
+    ODEModel_free(modelA);
+    ODEModel_free(modelB);
+    CvodeSettings_free(settings);
+
+    SolverError_clear();
+
+    return 0;
+}
diff --git a/examples/adj_sensitivity.c b/examples/adj_sensitivity.c
new file mode 100644
index 0000000..3a565cf
--- /dev/null
+++ b/examples/adj_sensitivity.c
@@ -0,0 +1,228 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2009-02-12 17:55:23 raim>
+  $Id: adj_sensitivity.c,v 1.15 2009/02/12 09:31:12 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/interpol.h>
+#include <sbmlsolver/variableIndex.h>
+#include <sbmlsolver/sensSolver.h>
+#include <sbmlsolver/solverError.h>
+#include <sbmlsolver/util.h>
+
+
+/* --------- --------- --------- --------- --------- --------- --------- */
+
+int
+main (int argc, char *argv[]){
+  int i, j;
+  
+  odeModel_t *om;
+  cvodeSettings_t *set;
+  integratorInstance_t *ii;
+  cvodeResults_t *results;
+  variableIndex_t *p;
+  char *sbml_file, *objfun_file, *data_file; 
+  int flag;
+  double *dp;
+  double tout; 
+
+
+  /* read command line */
+  if (argc != 4) {
+    fprintf(stderr, "usage: %s sbml-file objfun-file data-file\n", argv[0]);
+    fprintf(stderr, "eg: ./adj_sensitivity repressilator.xml repressilator.objfun repressilator_data.txt\n");
+    exit (EXIT_FAILURE);
+  } 
+  else { 
+    sbml_file      = argv[1];
+    objfun_file    = argv[2];
+    data_file      = argv[3];
+  }
+  
+  printf("\nThis example performs forward and adjoint sensitivity analysis for data mis-match functional\n");
+  printf("J(x) = int_0^T | x - x_data |^2 dt. The two methods should give (up-to-numerics) equivalent results. \n");
+
+  /* creating the odeModel */
+  om = ODEModel_createFromFile(sbml_file);
+
+  /* time interval (of data) */
+  tout = 100;
+
+  /* Setting SBML ODE Solver integration parameters  */
+  set = CvodeSettings_create();
+  CvodeSettings_setCompileFunctions(set, 1);
+  CvodeSettings_setTime(set, tout, 5);
+  CvodeSettings_setErrors(set, 1e-9, 1e-9, 1e7);
+
+  /* ACTIVATE SENSITIVITY ANALYSIS */
+  CvodeSettings_setSensitivity(set, 1);
+
+  /* 0: simultaneous 1: staggered, 2: staggered1
+     see CVODES user guide for details */
+  CvodeSettings_setSensMethod(set, 1);
+  CvodeSettings_setJacobian(set, 1);
+ 
+  /* ACTIVATE ADJOINT ANALYSIS */
+  CvodeSettings_setDoAdj(set);
+  
+  /* Do the time settings analogous to forward phase, but only reversed */
+  CvodeSettings_setAdjTime(set, tout, 5);
+  CvodeSettings_setAdjErrors(set, 1e-5, 1e-5);
+  CvodeSettings_setnSaveSteps(set, 2);
+    
+  /* get the last parameter (for which we will check sensitivities) */
+  p = ODEModel_getConstantIndex(om, ODEModel_getNumConstants(om)-1);
+
+  /* initialize the integrator */
+  ii = IntegratorInstance_create(om, set);
+ 
+  flag = IntegratorInstance_setObjectiveFunction(ii, objfun_file);
+  if (flag!=1)
+  {
+    SolverError_dumpAndClearErrors();
+    return(EXIT_FAILURE);
+  }
+
+
+  /* read observations */
+  flag = IntegratorInstance_readTimeSeriesData(ii, data_file);
+  if (flag!=1)
+	return(EXIT_FAILURE);
+
+  printf("### Printing Sensitivities to %s (%g) on the fly:\n",
+	 ODEModel_getVariableName(om, p),
+	 IntegratorInstance_getVariableValue(ii, p));
+  
+  printf("#time  ");
+  IntegratorInstance_dumpNames(ii);
+  IntegratorInstance_dumpPSensitivities(ii, p);
+  
+  /* forward integration (incl. sensitivity analysis) */
+  while( !IntegratorInstance_timeCourseCompleted(ii) ) {
+    if ( !IntegratorInstance_integrateOneStep(ii) ) {
+      break;
+    }
+    IntegratorInstance_dumpPSensitivities(ii, p);
+  }
+
+  /* forward quadrature */
+  flag = IntegratorInstance_CVODEQuad(ii);
+  if (flag!=1)
+    return(EXIT_FAILURE);
+
+  printf("\n### Printing Forward Sensitivities: int_0^T <x-x_delta, x_sens> dt \n");
+  flag = IntegratorInstance_printQuad(ii, stdout);
+    if (flag!=1)
+	return(EXIT_FAILURE); 
+
+  /* directional sensitivities */
+    dp = space(IntegratorInstance_getNsens(ii) * sizeof(double));
+  for(i=0; i<IntegratorInstance_getNsens(ii); i++)
+    dp[i] = 0.0;
+  dp[IntegratorInstance_getNsens(ii)-1] = 1.0; /* the last parameter */
+
+  printf("### Now computing and printing out directional sensitivities \nwith ");
+  for(i=0; i<IntegratorInstance_getNsens(ii); i++)
+    printf(" dp[%d] = %.2g ", i, dp[i]);
+   printf("\n");
+
+  printf("#time  ");
+  IntegratorInstance_dumpNames(ii);
+  
+  results = IntegratorInstance_createResults(ii);
+
+  CvodeResults_computeDirectional(results, dp);
+  
+  for(j=0; j<CvodeResults_getNout(results); j++)
+  { 
+    printf("%g  ",CvodeResults_getTime(results,j) );
+    
+    for(i=0; i<ODEModel_getNeq(om); i++)
+      printf(" %.8g ", ii->results->directional[i][j]);
+    printf("\n");
+  }
+
+  if ( SolverError_getNum(FATAL_ERROR_TYPE) ) {
+    printf("Integration not sucessful!\n");
+    SolverError_dumpAndClearErrors();
+    return(EXIT_FAILURE);
+  }
+
+
+  
+  /* Adjoint Integration */
+  printf("\n### Commencing adjoint integration:\n");
+ 
+  IntegratorInstance_resetAdjPhase(ii);
+
+  printf("#time  ");
+  IntegratorInstance_dumpNames(ii);
+  IntegratorInstance_dumpAdjData(ii);
+
+  /*  Now the adjoint solver is called in the integration steps  */
+  while( !IntegratorInstance_timeCourseCompleted(ii) ) {
+    if ( !IntegratorInstance_integrateOneStep(ii) ) {
+      fatal(stderr, " ERROR in Integrate One Step \n");
+      break;
+    }
+    IntegratorInstance_dumpAdjData(ii);
+  }
+  
+  /* adjoint quadrature */
+  flag = IntegratorInstance_CVODEQuad(ii);
+  if (flag!=1) return(EXIT_FAILURE);
+  
+  printf("\n### Printing Adjoint Sensitivities: int_0^T <df/dp, psi> dt   \n");
+  flag = IntegratorInstance_printQuad(ii, stdout);
+    if (flag!=1)
+	return(EXIT_FAILURE);
+    
+  /* now we have the results and can free the inputs */
+  VariableIndex_free(p);
+  IntegratorInstance_free(ii);
+  CvodeSettings_free(set);
+  ODEModel_free(om);
+  free(dp);
+  return (EXIT_SUCCESS);  
+}
+
+
+/* End of file */
diff --git a/examples/adjsenstest.c b/examples/adjsenstest.c
new file mode 100644
index 0000000..6a9e2da
--- /dev/null
+++ b/examples/adjsenstest.c
@@ -0,0 +1,183 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-10-21 12:29:18 raim>
+  $Id: adjsenstest.c,v 1.12 2010/04/12 08:31:35 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/sensSolver.h>
+#include <sbml/SBMLTypes.h>
+
+int
+main(void)
+{
+  int i;
+  
+  odeModel_t *om;
+  cvodeSettings_t *set;
+  integratorInstance_t *ii;
+  variableIndex_t *p;
+  int flag;
+   
+  /* Setting SBML ODE Solver integration parameters  */
+  set = CvodeSettings_create();
+  CvodeSettings_setTime(set, 1000, 10);
+  CvodeSettings_setErrors(set, 1e-15, 1e-8, 1e4);
+  CvodeSettings_setMethod(set, 0, 5);
+  /*   CvodeSettings_setStoreResults(set, 0); */
+  CvodeSettings_setJacobian(set, 1); /* for testing only */
+  CvodeSettings_setCompileFunctions(set, 0); /* for testing only */
+
+ 
+  /* creating the odeModel */
+  om = ODEModel_createFromFile("MAPK.xml");
+  ii = IntegratorInstance_create(om, set);
+  
+
+  /* ACTIVATE SENSITIVITY ANALYSIS */
+  CvodeSettings_setSensitivity(set, 1);
+  /* 0: simultaneous 1: staggered, 2: staggered1
+     see CVODES user guide for details */
+  CvodeSettings_setSensMethod(set, 0);
+
+  /* ACTIVATE ADJOINT ANALYSIS */
+  CvodeSettings_setDoAdj(set);
+  CvodeSettings_setAdjTime(set, 1000, 100);
+  CvodeSettings_setAdjErrors(set, 1e-15, 1e-8);
+  CvodeSettings_setnSaveSteps(set, 1000);
+
+  printf("Try 3 integrations with selected parameters/ICs!\n");
+  char *sensIDTest[4];  
+  sensIDTest[0] = "MAPK";
+  sensIDTest[2] = "MAPK_P";
+  sensIDTest[1] = "K1";
+  sensIDTest[3] = "Ki";
+  CvodeSettings_setSensParams(set, sensIDTest, 4);
+
+  printf("\n\nReading in linear objective function from: 'MAPK.linobjfun'\n");
+  printf("Demonstration of forward/adjoint sensitivity (near) equivalence. \n\n");
+
+  /* Initially, only linear objective is present */
+  flag = IntegratorInstance_setLinearObjectiveFunction(ii, "MAPK.linobjfun");
+  if (flag!=1)
+    return(EXIT_FAILURE);  
+
+  /* reset integrator to new settings */
+  IntegratorInstance_reset(ii);
+  
+  /* get a parameter for which we will check sensitivities */
+  p = ODEModel_getVariableIndex(om, "K1");  
+   
+  i = 0;
+  while ( i < 4 ) {
+
+   /*  if ( i == 2) break; */
+    /* Set nonlinear objective function after 2 loops  */
+    if ( i == 2)
+    {
+      printf("\nReading in nonlinear objective now: 'MAPK.objfun'\n\n");
+      flag = IntegratorInstance_setObjectiveFunction(ii, "MAPK.objfun");
+      if (flag!=1)
+	return(EXIT_FAILURE);
+    }
+
+    IntegratorInstance_reset(ii);
+    
+    while( !IntegratorInstance_timeCourseCompleted(ii) )
+     if ( !IntegratorInstance_integrateOneStep(ii) )
+       break;
+    printf("\nIntegration time was %g\n\n",
+	 IntegratorInstance_getIntegrationTime(ii));
+     
+
+    /*  IntegratorInstance_dumpData(ii); */
+    printf("Param default: %s\n", ODEModel_getVariableName(om, p));
+    IntegratorInstance_dumpPSensitivities(ii, p);
+
+    flag = IntegratorInstance_CVODEQuad(ii);
+    if (flag!=1)
+	return(EXIT_FAILURE);
+
+    if ( i < 2)
+      printf("\n### Printing Forward Sensitivities\n");
+    else
+      printf("\n### Printing Objective Function (since nonlinear objective is present)\n");  
+
+     
+    flag = IntegratorInstance_printQuad(ii, stdout);
+
+
+    if (flag!=1)
+	return(EXIT_FAILURE);
+
+     /* Now go into adjoint phase */   
+    IntegratorInstance_resetAdjPhase(ii);
+    /* Adjoint phase */
+    while( !IntegratorInstance_timeCourseCompleted(ii) )
+      if ( !IntegratorInstance_integrateOneStep(ii) )
+	break;
+    printf("\nIntegration time was %g\n\n",
+	   IntegratorInstance_getIntegrationTime(ii));
+    
+    /* Print out adjoint soln */
+    IntegratorInstance_dumpAdjData(ii);
+
+    /* adjoint quadrature */
+    flag = IntegratorInstance_CVODEQuad(ii);
+     if (flag!=1) 
+      return(EXIT_FAILURE);
+
+    printf("\n### Printing Adjoint Sensitivities: int_0^T <df/dp, psi> dt\n");
+    flag = IntegratorInstance_printQuad(ii, stdout);
+    if (flag!=1)
+	return(EXIT_FAILURE); 
+
+
+    printf("\n############# DONE RUN NUMBER %d  #############\n", i); 
+    i++;
+  }
+  
+  /*   VariableIndex_free(y); */
+  VariableIndex_free(p);
+  /* now we have the results and can free the inputs */
+  IntegratorInstance_free(ii);
+  CvodeSettings_free(set);
+  ODEModel_free(om);
+
+  return (EXIT_SUCCESS);  
+}
diff --git a/examples/adjsenstest_ContDiscData.c b/examples/adjsenstest_ContDiscData.c
new file mode 100644
index 0000000..8bbd493
--- /dev/null
+++ b/examples/adjsenstest_ContDiscData.c
@@ -0,0 +1,216 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     James Lu
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/sensSolver.h>
+#include <sbml/SBMLTypes.h>
+
+
+int
+main(void)
+{
+  odeModel_t *om;
+  cvodeSettings_t *set;
+  integratorInstance_t *ii;
+  int flag, RunIndex, RunIndexOuter;
+  char *DataFileNames[4], *ObjFuncFileNames[4];
+  variableIndex_t *vi;  
+  int NRuns = 4;
+
+  DataFileNames[0] = "MAPK_10pt.dat";
+  DataFileNames[1] = "MAPK_100pt.dat";
+  DataFileNames[2] = "MAPK_1000pt.dat";
+  DataFileNames[3] = "MAPK_10000pt.dat";
+
+  ObjFuncFileNames[0] = "MAPK_10pt.objfun";
+  ObjFuncFileNames[1] = "MAPK_100pt.objfun";
+  ObjFuncFileNames[2] = "MAPK_1000pt.objfun";
+  ObjFuncFileNames[3] = "MAPK_10000pt.objfun"; 
+
+  /* Setting SBML ODE Solver integration parameters  */
+  set = CvodeSettings_create();
+
+  CvodeSettings_setCompileFunctions(set, 1);
+
+  /* use time series data as discrete observations and set corresponding print steps */ 
+  CvodeSettings_setDiscreteObservation(set);
+  
+  CvodeSettings_setErrors(set, 1e-8, 1e-8, 1e6);
+  CvodeSettings_setMethod(set, 0, 5);
+  CvodeSettings_setJacobian(set, 1);
+  CvodeSettings_setStoreResults(set, 1);
+
+  CvodeSettings_setCompileFunctions(set, 0); /* do not compile RHS functions */
+  CvodeSettings_setSensitivity(set, 0);
+  CvodeSettings_setSensMethod(set, 0);
+
+  /* ACTIVATE ADJOINT ANALYSIS */
+  CvodeSettings_setDoAdj(set);
+  CvodeSettings_setAdjErrors(set, 1e-8, 1e-8);
+  CvodeSettings_setnSaveSteps(set, 1e5);
+
+  char *sensIDTest[4];  
+  sensIDTest[0] = "MAPK";
+  sensIDTest[1] = "MAPK_P";
+  sensIDTest[2] = "K1";
+  sensIDTest[3] = "Ki";
+  printf("Sensitivity analysis for 2 ICs: %s, %s\n2 parameters: %s, %s\n", 
+	 sensIDTest[0], sensIDTest[1], sensIDTest[2], sensIDTest[3]); 
+  CvodeSettings_setSensParams(set, sensIDTest, 4);
+
+  om = ODEModel_createFromFile("MAPK.xml");  
+  /* Set parameter Ki from original value of 10 to 9.2 */
+  vi = ODEModel_getVariableIndex(om, "K1");
+  if (vi == NULL){
+      fprintf(stderr, "vi == NULL \n");
+      return FALSE;
+   }
+ 
+  ii = IntegratorInstance_create(om, set);
+ 
+
+  for (RunIndexOuter=0; RunIndexOuter<NRuns*2; RunIndexOuter++)
+  {
+    printf("\n\n");
+
+    if (RunIndexOuter >=NRuns )
+    {   
+        CvodeSettings_unsetDiscreteObservation(set);
+	RunIndex = RunIndexOuter-NRuns;
+
+        if (RunIndexOuter == 1)
+	  CvodeSettings_setSensitivity(set, 0);
+
+        if (RunIndexOuter == NRuns)
+	{
+         IntegratorInstance_printStatistics(ii, stdout);
+         printf("\n\n==== NOW TREATING DATA AS BEING CONTINUOUS ====\n\n\n\n");
+	}
+    }
+    else
+      RunIndex = RunIndexOuter;
+
+
+    CvodeSettings_setForwAdjTimeSeriesFromData(set, DataFileNames[RunIndex], 3);   
+    IntegratorInstance_reset(ii);
+    IntegratorInstance_setVariableValue(ii, vi, 9.2);
+   
+    if (CvodeSettings_getObservationDataType(set) == 1)
+    { /* discrete observation */
+      printf("Reading in objective '%s' ... ",    ObjFuncFileNames[RunIndex]);
+      flag = IntegratorInstance_setObjectiveFunction(ii,   ObjFuncFileNames[RunIndex]);
+      if (flag!=1)
+	return(EXIT_FAILURE);
+    }
+    else
+    {  /* continuous observation */
+      printf("Reading in objective '%s' ... ",  "MAPK_withData.objfun");
+      flag = IntegratorInstance_setObjectiveFunction(ii, "MAPK_withData.objfun");
+      if (flag!=1)
+	return(EXIT_FAILURE);
+    }
+
+    printf("and data '%s'\n", DataFileNames[RunIndex] );
+
+    flag = IntegratorInstance_readTimeSeriesData(ii, DataFileNames[RunIndex]);
+
+     
+    if (flag!=1)
+      return(EXIT_FAILURE);
+    
+    while( !IntegratorInstance_timeCourseCompleted(ii) ){
+      if ( !IntegratorInstance_integrateOneStep(ii) )	
+	break;
+    }
+
+
+    flag = IntegratorInstance_CVODEQuad(ii);
+    if (flag!=1)
+      return(EXIT_FAILURE);
+    
+    printf("\nForward integration time was %g\n",
+	   IntegratorInstance_getIntegrationTime(ii));
+
+    
+    printf("### Printing Objective Value:\n"); 
+    flag = IntegratorInstance_printQuad(ii, stdout);
+    if (flag!=1)
+      return(EXIT_FAILURE);
+    
+    
+     
+    /* Now go into adjoint phase */     
+    IntegratorInstance_resetAdjPhase(ii); 
+    
+    /* Adjoint phase */
+    /* Print out adjoint soln */
+    while( !IntegratorInstance_timeCourseCompleted(ii) ){
+      /*  if (RunIndex == 0) */
+      /* 	 IntegratorInstance_dumpAdjData(ii); */
+      if ( !IntegratorInstance_integrateOneStep(ii) )
+      { 
+	fprintf(stderr, "Error in integrating one step!\n");
+	break;
+      }     
+    }
+    
+    
+    /* adjoint quadrature */
+    flag = IntegratorInstance_CVODEQuad(ii);
+    if (flag!=1) 
+      return(EXIT_FAILURE);
+    
+    printf("\nAdjoint integration time was %g\n", IntegratorInstance_getIntegrationTime(ii));
+    
+    printf("### Printing Adjoint Sensitivities:\n");
+    flag = IntegratorInstance_printQuad(ii, stdout);
+    if (flag!=1)
+      return(EXIT_FAILURE);     
+ 
+  }
+
+  IntegratorInstance_printStatistics(ii, stdout);
+
+  /* now we have the results and can free the inputs */
+  IntegratorInstance_free(ii); 
+  ODEModel_free(om); 
+  CvodeSettings_free(set);
+  VariableIndex_free(vi);
+  
+
+  return (EXIT_SUCCESS);  
+}
+/* End of file */
diff --git a/examples/analyzeJacobian.c b/examples/analyzeJacobian.c
new file mode 100644
index 0000000..f77528b
--- /dev/null
+++ b/examples/analyzeJacobian.c
@@ -0,0 +1,178 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-10-08 13:58:51 raim>
+  $Id: analyzeJacobian.c,v 1.7 2008/10/08 17:08:17 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbml/SBMLTypes.h>
+#include <sbmlsolver/drawGraph.h>
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/odeModel.h>
+#include <sbmlsolver/processAST.h>
+#include <sbmlsolver/solverError.h>
+
+
+static void printJacobian(odeModel_t *odeModel, cvodeData_t *data)
+{
+
+  int i, j;
+  const ASTNode_t *f  = NULL;
+
+  printf("i\\j ");
+  for ( j=0; j<ODEModel_getNeq(odeModel); j++ )
+    printf("%d   ", j);
+  printf("\n");
+      
+  for ( i=0; i<ODEModel_getNeq(odeModel); i++ ) {
+    printf("%d   ", i);
+    for ( j=0; j<ODEModel_getNeq(odeModel); j++ ) {
+      f = ODEModel_getJacobianIJEntry(odeModel, i, j);
+      /* now let's see wether the entry is positive or negative at
+	 this point */
+      if ( evaluateAST((ASTNode_t *)f, data) < 0 )
+	printf("-   ");
+      if ( evaluateAST((ASTNode_t *)f, data) > 0 )
+	printf("+   ");	  
+      if ( evaluateAST((ASTNode_t *)f, data) == 0 )
+	printf("0   ");
+    }
+    printf("\n\n");
+  }
+  printf("\n");
+}
+
+
+int main(void)
+{
+    char *formula;
+    variableIndex_t *vi = NULL;
+    variableIndex_t *vj = NULL;
+    const ASTNode_t *f  = NULL;
+    cvodeData_t *data   = NULL;
+    cvodeSettings_t *set;
+    integratorInstance_t *iI;
+
+    /* first load an SBML model and directly construct the
+       internal odeModel from it */
+    odeModel_t *odeModel = ODEModel_createFromFile("MAPK.xml");
+
+ 
+    if ( ODEModel_constructJacobian(odeModel) && ODEModel_getNeq(odeModel) ) {
+      printf("\n\nSuccessfully constructed the jacobian matrix J\n\n");
+      printf("We might be interested in the `sparsity' of J,\n");
+      printf("... we can just evaluate the jacobian entries:\n\n");
+      
+      /* we need cvodeData for evaluating formulas */
+      data = CvodeData_create(odeModel);
+      /* ! IMPORTANT : initialize values */
+      CvodeData_initializeValues(data);
+      
+      printf("Jacobian with initial conditions:\n");
+      printJacobian(odeModel, data);
+      /* we must free this cvodeData structure */ 
+      CvodeData_free(data);
+	
+      printf("Does it change after integration?\n\n");
+      
+      /* creating settings and integrate */
+      set = CvodeSettings_create();
+      CvodeSettings_setTime(set, 1000, 1);
+      iI = IntegratorInstance_create(odeModel, set);
+      IntegratorInstance_integrate(iI);
+      
+      /* get cvodeData from integratorInstance, it contains
+         the values at the last time point,
+	 and just do the same as above */
+      
+      data = IntegratorInstance_getData(iI);
+      printf("Jacobian at time %g:\n", IntegratorInstance_getTime(iI));
+      printJacobian(odeModel, data);
+      printf("J[6,4] changed its sign. Let's take a look at the equations:\n\n");
+     
+      vi = ODEModel_getOdeVariableIndex(odeModel, 6);
+      vj = ODEModel_getOdeVariableIndex(odeModel, 4);      
+
+      f = ODEModel_getOde(odeModel, vi);
+      formula = SBML_formulaToString(f);
+      
+      printf("The ODE d%s/dt = \n%s \n\n",
+	     ODEModel_getVariableName(odeModel, vi),
+	     formula);
+      free(formula);      
+
+      f = ODEModel_getJacobianEntry(odeModel, vi, vj);
+      formula = SBML_formulaToString(f); 
+      printf("The jacobian entry (d%s/dt)/d%s = \n%s \n\n",
+	     ODEModel_getVariableName(odeModel, vi),
+	     ODEModel_getVariableName(odeModel, vj),
+	     formula);
+      free(formula);
+      VariableIndex_free(vi);
+      VariableIndex_free(vj);
+      
+      printf("MAPK_P is both a substrate and a product of MKK_PP ");
+      printf("in different reactions.\nTherefor the corresponding ");
+      printf("entry in the jacobian can change its sign, depending ");
+      printf("on concentrations!\n");
+      /* finally draw a `species interaction graph' of the jacobian' */
+      drawJacoby(data, "jacobian", "gif");      
+      printf("Take a look at jacobian interaction graph in");
+      printf("file jacobian_jm.gif that has just been constructed.\n");
+      printf("If you have compiled w/o graphviz, you just have a textfile");
+      printf(" jacobian.dot\n");
+      printf("Thx and good bye!\n");
+      
+       /* note that this cvodeData MUST NOT be freed, it stays with and
+         will be freed together with integratorInstance */
+      IntegratorInstance_free(iI);
+      CvodeSettings_free(set);
+    }
+    else {
+      SolverError_dumpAndClearErrors();
+      printf("Sorry, for this system we couldn't generate the Jacobian.\n");
+      printf("Integration can still be run with internal approximation.\n");
+    }
+      
+    
+    ODEModel_free(odeModel);
+    return EXIT_SUCCESS;
+}
+
+
+/* End of file */
diff --git a/examples/analyzeSensitivity.c b/examples/analyzeSensitivity.c
new file mode 100644
index 0000000..d3b3e5d
--- /dev/null
+++ b/examples/analyzeSensitivity.c
@@ -0,0 +1,162 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2009-02-12 18:14:31 raim>
+  $Id: analyzeSensitivity.c,v 1.7 2009/02/12 09:31:12 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbml/SBMLTypes.h>
+#include <sbmlsolver/drawGraph.h>
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/odeModel.h>
+#include <sbmlsolver/processAST.h>
+#include <sbmlsolver/solverError.h>
+
+
+static void printSensiMatrix(odeSense_t *os, cvodeData_t *data)
+{
+
+  int i, j;
+  const ASTNode_t *f  = NULL;
+
+  printf("i\\j ");
+  for ( j=0; j<ODESense_getNsens(os); j++ )
+    printf("%d   ", j);
+  printf("\n");
+      
+  for ( i=0; i<ODESense_getNeq(os); i++ ) {
+    printf("%d   ", i);
+    for ( j=0; j<ODESense_getNsens(os); j++ ) {
+      f = ODESense_getSensIJEntry(os, i, j);
+      /* now let's see wether the entry is positive or negative at
+	 this point */
+      if ( evaluateAST((ASTNode_t *)f, data) < 0 )
+	printf("-   ");
+      if ( evaluateAST((ASTNode_t *)f, data) > 0 )
+	printf("+   ");	  
+      if ( evaluateAST((ASTNode_t *)f, data) == 0 )
+	printf("0   ");
+    }
+    printf("\n\n");
+  }
+  printf("\n");
+}
+
+
+int main(void)
+{
+    int i, j;
+    char *formula;
+    variableIndex_t *vi = NULL;
+    variableIndex_t *vj = NULL;
+    const ASTNode_t *f  = NULL;
+    cvodeData_t *data   = NULL;
+    odeSense_t *os;
+
+    /* first load an SBML model and directly construct the
+       internal odeModel from it */
+    odeModel_t *odeModel = ODEModel_createFromFile("MAPK.xml");
+
+   /* create the default sensitivity matrix to retrieve formulas */
+    os = ODEModel_constructSensitivity(odeModel);
+    
+    if ( os != NULL && ODEModel_getNeq(odeModel) ) {
+      printf("\n\nSuccessfully constructed the parametric matrix S ");
+      printf("as used for CVODES sensitivity analysis\n\n");
+      printf("We might be interested in the `sparsity' of S,\n");
+      printf("... we can just evaluate the parametric entries:\n\n");
+      
+      /* we need cvodeData for evaluating formulas ... */
+      data = CvodeData_create(odeModel);
+      /* ! IMPORTANT : initialize values */
+      CvodeData_initializeValues(data);
+      
+      printf("... how many parametric entries: %d\n\n",
+	     ODESense_getNsens(os));
+      
+      /* now take a look at a all entries of S: */
+      
+      for ( i=0; i<ODEModel_getNeq(odeModel); i++ ) {
+	
+	vi = ODEModel_getOdeVariableIndex(odeModel, i);
+	
+	printf("\nODE VARIABLE %d: %s\n", i+1,
+	       ODEModel_getVariableName(odeModel, vi));
+	
+	f = ODEModel_getOde(odeModel, vi);
+	formula = SBML_formulaToString(f);
+
+	printf("dY/dt =  %s \n", formula);
+	free(formula);
+      
+	for ( j=0; j<ODESense_getNsens(os); j++ ) {
+	  vj = ODESense_getSensParamIndexByNum(os, j);
+	  printf("  Parameter %d: %s   ", j,
+		 ODEModel_getVariableName(odeModel, vj));
+	  f = ODESense_getSensIJEntry(os, i, j);	  
+
+	  formula = SBML_formulaToString(f);
+	  printf("  S[%d][%d] = %s \n", i, j, formula);
+	  free(formula);
+	  VariableIndex_free(vj);
+	}
+	VariableIndex_free(vi);
+      }
+
+      printf("\n\n");      
+      
+      printf("Sensitivity: parametric matrix with initial conditions:\n");
+      printSensiMatrix(os, data);
+      /* we must free this cvodeData structure */ 
+      CvodeData_free(data);
+      
+      printf("Thx and good bye!\n");
+    }
+    else {
+      SolverError_dumpAndClearErrors();
+      printf("Sorry, for this system we couldn't generate the Parametric.\n");
+      printf("Sensitivity can still be run with internal approximation.\n");
+    }
+      
+    ODESense_free(os);
+    ODEModel_free(odeModel);
+    return EXIT_SUCCESS;
+}
+
+
+/* End of file */
diff --git a/examples/basic-model1-forward-l2.xml b/examples/basic-model1-forward-l2.xml
new file mode 100644
index 0000000..58070cb
--- /dev/null
+++ b/examples/basic-model1-forward-l2.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level2" level="2" version="1">
+  <model id="m">
+    <listOfCompartments>
+      <compartment id="c" size="1"/>
+    </listOfCompartments>
+    <listOfSpecies>
+      <species id="S1" compartment="c" initialAmount="1.5e-15"/>
+      <species id="S2" compartment="c" initialAmount="1.5e-15"/>
+    </listOfSpecies>
+    <listOfReactions>
+      <reaction id="R1" reversible="false">
+        <listOfReactants>
+          <speciesReference species="S1"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="S2"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <times/>
+              <ci> k_1 </ci>
+              <ci> S1 </ci>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k_1" value="1"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="R2" reversible="false">
+        <listOfReactants>
+          <speciesReference species="S2"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="S1"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <times/>
+              <ci> k_2 </ci>
+              <ci> S2 </ci>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k_2" value="0"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+    </listOfReactions>
+  </model>
+</sbml>
diff --git a/examples/basic.xml b/examples/basic.xml
new file mode 100644
index 0000000..6c32c32
--- /dev/null
+++ b/examples/basic.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level2" level="2" version="1">
+  <model id="m">
+    <listOfCompartments>
+      <compartment id="c" size="1"/>
+    </listOfCompartments>
+    <listOfSpecies>
+      <species id="S1" compartment="c" initialAmount="1.5e-15"/>
+      <species id="S2" compartment="c" initialAmount="1.5e-15"/>
+    </listOfSpecies>
+    <listOfParameters>
+      <parameter id="k_1" value="1"/>
+    </listOfParameters>
+    <listOfReactions>
+      <reaction id="R1" reversible="false">
+        <listOfReactants>
+          <speciesReference species="S1"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="S2"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <times/>
+              <ci> k_1 </ci>
+              <ci> S1 </ci>
+            </apply>
+          </math>
+        </kineticLaw>
+      </reaction>
+      <reaction id="R2" reversible="false">
+        <listOfReactants>
+          <speciesReference species="S2"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="S1"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <times/>
+              <ci> k_2 </ci>
+              <ci> S2 </ci>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k_2" value="0"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+    </listOfReactions>
+  </model>
+</sbml>
diff --git a/examples/batch_integrate.c b/examples/batch_integrate.c
new file mode 100644
index 0000000..0ba8deb
--- /dev/null
+++ b/examples/batch_integrate.c
@@ -0,0 +1,183 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2009-02-12 18:19:45 raim>
+  $Id: batch_integrate.c,v 1.24 2009/02/12 09:31:12 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/solverError.h>
+
+
+int
+main (int argc, char *argv[]){
+  int i, j;
+  char *model, *parameter1, *parameter2, *reaction2;
+  double start1, end1, steps1;
+  double start2, end2, steps2;
+  double time ;
+  double printstep;
+  double values[2];
+
+  /* libSBML types */
+  SBMLDocument_t *d;
+  SBMLReader_t *sr;
+
+  /* SOSlib types */
+  cvodeSettings_t *set;
+  varySettings_t *vs;
+  SBMLResultsArray_t *resM;
+  SBMLResults_t *results;
+ 
+  /* parsing command-line arguments */
+  if (argc < 8 ) {
+    fprintf(stderr,
+	    "usage %s sbml-model-file simulation-time time-steps"
+	    " start-value1 end-value1 step-number1 parameter-id1"
+	    " start-value2 end-value2 step-number2 parameter-id2"
+	    " [optional reaction-id for param2]\n",
+            argv[0]);
+    exit(EXIT_FAILURE);
+  }
+  model = argv[1];
+  time = atof(argv[2]);
+  printstep = atoi(argv[3]);
+  
+  printf("### Integrating model %s until time %f in %f steps\n",
+         model, time, printstep);
+
+  start1 = atof(argv[4]);
+  end1 = atof(argv[5]);
+  steps1 = atoi(argv[6]);
+  parameter1 = argv[7];
+   
+
+  printf("### Varying parameter %s from %f to %f in %f steps\n",
+         parameter1, start1, end1, steps1);
+
+  if ( argc > 8 )
+  {
+    start2 = atof(argv[8]);
+    end2 = atof(argv[9]);
+    steps2 = atoi(argv[10]);
+    parameter2 = argv[11];
+    if ( argc > 12 ) 
+      reaction2 = argv[12];
+    else
+      reaction2 = NULL;
+  }
+  
+ printf("### Varying parameter %s (reaction %s) from %f to %f in %f steps\n",
+	 parameter2, reaction2, start2, end2, steps2);
+  
+
+
+/* parsing the SBML model with libSBML */
+  sr = SBMLReader_create();
+  d = SBMLReader_readSBML(sr, model);
+  SBMLReader_free(sr);  
+
+  /* Setting SBML ODE Solver integration parameters with default values */
+  set = CvodeSettings_create();
+  /* resetting the values we need */
+  CvodeSettings_setTime(set, time, printstep);
+  CvodeSettings_setErrors(set, 1e-18, 1e-10, 10000);
+  CvodeSettings_setSwitches(set, 1, 0, 1, 1, 1, 0, 0); 
+  CvodeSettings_setHaltOnSteadyState(set, 1); 
+
+  /* Setting SBML Ode Solver batch integration parameters */
+  vs = VarySettings_allocate(2, steps1*steps2);
+
+  VarySettings_addParameter(vs, parameter1, NULL);
+  VarySettings_addParameter(vs, parameter2, reaction2);
+  
+  
+  
+  for ( i=0; i<steps1; i++ )
+  {
+    values[0] = start1 + i*(end1-start1)/steps1;
+    for ( j=0; j<steps2; j++ )
+    {
+      values[1] = start2 + j*(end2-start2)/steps2;
+      VarySettings_addDesignPoint(vs, values);    
+    }
+  }
+
+  VarySettings_dump(vs);
+
+
+  /* calling the SBML ODE Solver Batch function,
+     and retrieving SBMLResults */
+  resM = SBML_odeSolverBatch(d, set, vs);
+
+  if ( resM == NULL )
+  {
+    printf("### Parameter variation not succesful!\n");
+    SolverError_dumpAndClearErrors();
+    CvodeSettings_free(set);  
+    SBMLDocument_free(d);
+    VarySettings_free(vs);
+    return(0);
+  }
+  
+  /* we don't need these anymore */
+  CvodeSettings_free(set);  
+  SBMLDocument_free(d);
+
+  for ( i=0; i<SBMLResultsArray_getNumResults(resM); i++ )
+  {
+    results = SBMLResultsArray_getResults(resM, i);
+    printf("### Parameters: "); 
+    for ( j=0; j<2; j++ )
+      printf("%s=%f, ",
+	     VarySettings_getName(vs, j),
+	     VarySettings_getValue(vs, i, j));
+    printf("\n");
+    /* printing results only for species*/
+    SBMLResults_dumpSpecies(results);
+    printf("\n");
+  }
+  
+  /* SolverError_dumpAndClearErrors(); */
+  SBMLResultsArray_free(resM);
+  VarySettings_free(vs);
+  return (EXIT_SUCCESS);  
+}
+
+
+/* End of file */
diff --git a/examples/bistability.c b/examples/bistability.c
new file mode 100644
index 0000000..d1fe51e
--- /dev/null
+++ b/examples/bistability.c
@@ -0,0 +1,247 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-06-26 14:34:51 raim>
+  $Id: bistability.c,v 1.4 2008/09/08 12:59:19 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/integratorInstance.h>
+#include <sbmlsolver/solverError.h>
+
+void DumpState(
+	       integratorInstance_t *ii, variableIndex_t *s,  variableIndex_t *u, variableIndex_t *a)
+{
+  printf(
+	 " %g %g %g\n", 
+	 IntegratorInstance_getVariableValue(ii, s),
+	 IntegratorInstance_getVariableValue(ii, u),
+	 IntegratorInstance_getVariableValue(ii, a));
+}
+
+void DumpErrors()
+{
+  char *errors = SolverError_dumpToString();
+
+  fprintf(stderr, "%s", errors);
+  SolverError_freeDumpString(errors);
+  SolverError_clear();
+}
+
+int doit(int argc, char *argv[])
+{
+  double i, j ;
+  cvodeSettings_t *settings = CvodeSettings_create();
+  variableIndex_t *speciesVI, *parameterVI, *parameter2VI;
+  integratorInstance_t *integratorInstance;
+  char *modelStr, *parameterStr, *parameter2Str, *speciesStr;
+  double parameter, parameterEnd, parameterStepSize,
+    parameter2, parameter2End, parameter2StepSize,
+    errorTolerance, relativeErrorTolerance, endtime, initCond, maxDiff, diff;
+  int maximumIntegrationSteps;
+  odeModel_t *model ;
+        
+  if (argc < 11)
+  {
+    fprintf(
+            stderr,
+            "usage %s sbml-model variable parameter1 parameter1-start parameter1-end parameter1-step parameter2 parameter2-start parameter2-end parameter2-step [endtime] [error-tolerance] [relative-error-tolerance] [maximum integration steps]\n",
+            argv[0]);
+
+    exit(0);
+  }
+
+  modelStr = argv[1];
+  speciesStr = argv[2];
+
+  parameterStr = argv[3];
+  parameter = atof(argv[4]);
+  parameterEnd = atof(argv[5]);
+  parameterStepSize = atof(argv[6]);
+  
+  parameter2Str = argv[7];
+  parameter2 = atof(argv[8]);
+  parameter2End = atof(argv[9]);
+  parameter2StepSize = atof(argv[10]);
+
+  if (argc > 12)    
+    endtime = atof(argv[11]);
+  else 
+    endtime = 10000;
+
+  if (argc > 13)
+    errorTolerance = atof(argv[12]);
+  else
+    errorTolerance = 1e-6;
+
+  if (argc > 14)
+    relativeErrorTolerance = atof(argv[13]);
+  else
+    relativeErrorTolerance = 1e-4;
+
+  if (argc > 15)
+    maximumIntegrationSteps = atoi(argv[14]);
+  else
+    maximumIntegrationSteps = 1e9;
+
+  model = ODEModel_createFromFile(modelStr);
+  RETURN_ON_ERRORS_WITH(1);
+
+  speciesVI = ODEModel_getVariableIndex(model, speciesStr);
+  parameterVI = ODEModel_getVariableIndex(model, parameterStr);
+  parameter2VI = ODEModel_getVariableIndex(model, parameter2Str);
+  RETURN_ON_ERRORS_WITH(1);
+
+  /* integrate until steady state */
+  if ( endtime == 0 )
+  {
+    /* stop integration upon a steady state */
+    CvodeSettings_setIndefinitely(settings, 1);
+    CvodeSettings_setSteadyStateThreshold(settings, 1e-9);
+    CvodeSettings_setHaltOnSteadyState(settings, 1);
+    CvodeSettings_setTime(settings, 1, 1);
+  }
+  else
+  {
+    CvodeSettings_setHaltOnSteadyState(settings, 0);
+    CvodeSettings_setIndefinitely(settings, 0);
+    CvodeSettings_setTime(settings, endtime, 1000);
+  }
+
+  /* absolute tolerance in Cvode integration */
+  CvodeSettings_setError(settings, errorTolerance);
+  /* relative tolerance in Cvode integration */
+  CvodeSettings_setRError(settings, relativeErrorTolerance);
+  /* maximum step number for CVode integration */
+  CvodeSettings_setMxstep(settings, maximumIntegrationSteps);
+  /* doesn't stop integration upon an event */
+  CvodeSettings_setHaltOnEvent(settings, 0);      
+  /* don't Store time course history */
+  CvodeSettings_setStoreResults(settings, 0);
+  /* compile model */ 
+  CvodeSettings_setCompileFunctions(settings, 1); 
+
+    
+  integratorInstance = IntegratorInstance_create(model, settings);
+    
+  printf("set xlabel '%s'\n", ODEModel_getVariableName(model, parameterVI));
+  printf("set ylabel '%s'\n", ODEModel_getVariableName(model, parameter2VI));
+  printf("splot '-' using 1:2:3 title '%s' with points pointtype 1 pointsize 1 palette\n",
+	 ODEModel_getVariableName(model, speciesVI) );
+
+
+  /* remember initial condition of observed variable */
+  initCond = IntegratorInstance_getVariableValue(integratorInstance, speciesVI);
+  maxDiff = 0.0;
+
+  
+  int error = 0 ;
+  int run = 0;
+  for ( run=0; run<2; run++ )
+  {
+    for (i = parameter; i <= parameterEnd; i += parameterStepSize)
+    {
+      for (j = parameter2; j <= parameter2End; j += parameter2StepSize)
+      {
+	/* add fourth parameter here */
+
+	IntegratorInstance_reset( integratorInstance);
+	RETURN_ON_ERRORS_WITH(1);
+
+	/* for the second run reset the initial condition of the
+	   observed variable to a multiple of the maximum observed
+	   difference of its value wrt to its initial condition */
+	if ( run == 1 )
+	  IntegratorInstance_setVariableValue(integratorInstance,
+					      speciesVI,
+					      fabs(5*(initCond-maxDiff)));
+	
+	IntegratorInstance_setVariableValue(integratorInstance,
+					  parameterVI, i);
+	IntegratorInstance_setVariableValue(integratorInstance,
+					    parameter2VI, j);
+        /* printf("ic %g\t", IntegratorInstance_getVariableValue(integratorInstance, speciesVI)); */
+
+	while(!IntegratorInstance_checkSteadyState(integratorInstance) &&
+	      !IntegratorInstance_timeCourseCompleted(integratorInstance) )
+	{
+	  IntegratorInstance_integrateOneStep(integratorInstance);
+	  
+	  if (SolverError_getNum(ERROR_ERROR_TYPE) ||
+	      SolverError_getNum(FATAL_ERROR_TYPE))
+	  {
+	    fprintf(stderr,
+		    "ERROR at parameter 1 = %g, parameter 2 = %g\n", i, j);
+	    DumpErrors();
+	    error++;	  
+	  }
+	  
+	}
+        /* printf("end %g\n", IntegratorInstance_getVariableValue(integratorInstance, speciesVI)); */
+	
+	/* check whether the final value has largest difference to initial condition */
+	diff =  fabs(initCond - IntegratorInstance_getVariableValue(integratorInstance, speciesVI));
+	if ( diff > maxDiff ) maxDiff = diff;
+	DumpState(integratorInstance, parameterVI, parameter2VI, speciesVI);
+      }
+    }
+  }
+  
+  printf("end\n");
+  /* printf("end\n init %g, MAX DIFF %g, abs %g\n", initCond, maxDiff, fabs(initCond-maxDiff)); */
+  
+
+  
+  
+  if ( error ) printf("\t%d errors occured\n", error);
+  IntegratorInstance_free(integratorInstance);
+  VariableIndex_free(parameterVI);
+  VariableIndex_free(parameter2VI);
+  VariableIndex_free(speciesVI);
+  ODEModel_free(model);
+  CvodeSettings_free(settings);
+  
+  return 0;
+}
+
+int main (int argc, char *argv[])
+{
+  int result = doit(argc, argv);
+  DumpErrors();
+  
+  return result;
+}
diff --git a/examples/definedTimeSeries.c b/examples/definedTimeSeries.c
new file mode 100644
index 0000000..94fe519
--- /dev/null
+++ b/examples/definedTimeSeries.c
@@ -0,0 +1,112 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2006-03-07 16:57:44 raim>
+  $Id: definedTimeSeries.c,v 1.10 2006/03/07 15:58:35 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/odeSolver.h>
+
+int
+main (int argc, char *argv[]){
+  int i;
+  char *model;
+
+  /* libSBML types */
+  SBMLDocument_t *d;
+  SBMLReader_t *sr;
+
+  /* SOSlib types */
+  SBMLResults_t *results;
+  cvodeSettings_t *set;
+
+  double printstep;
+  double endtime;
+  
+  /* parsing command-line arguments */
+  if (argc < 2 ) {
+    fprintf(stderr,
+	    "usage %s sbml-model-file\n",
+            argv[0]);
+    exit(EXIT_FAILURE);
+  }
+  model = argv[1];   
+
+  /* parsing the SBML model with libSBML */
+  sr = SBMLReader_create();
+  d = SBMLReader_readSBML(sr, model);
+  SBMLReader_free(sr);
+  
+  /* Setting SBML ODE Solver integration parameters  */
+  set = CvodeSettings_create();
+  /* setting endtime to 25 and printstep number to 6 */  
+  printstep = 6;
+  endtime = 25;
+  CvodeSettings_setTime(set, endtime, printstep);
+ 
+  /* writing predefined output times:
+     IMPORTANT: can not exceed the set printstep number !!
+                and first time must equal 0 !! */
+  CvodeSettings_setTimeStep(set, 1, 0.5);
+  for ( i=2; i<=CvodeSettings_getPrintsteps(set); i++ ) 
+    CvodeSettings_setTimeStep(set, i, (i-1)*(i-1));
+
+  /* printing integration settings */
+  /* CvodeSettings_dump(set); */
+  
+  /* calling the SBML ODE Solver, and retrieving SBMLResults */  
+  results = SBML_odeSolver(d, set);
+  
+  CvodeSettings_free(set);
+  SBMLDocument_free(d);
+  
+  if ( results == NULL ) {
+    printf("Integration not sucessful!\n");
+    return (EXIT_FAILURE);  
+  }
+
+  /* printing results only for species*/
+  SBMLResults_dumpSpecies(results);
+
+  /* now we can also free the result structure */
+  SBMLResults_free(results);
+
+  return (EXIT_SUCCESS);  
+}
+
+/* End of file */
diff --git a/examples/events-1-event-1-assignment-l2.xml b/examples/events-1-event-1-assignment-l2.xml
new file mode 100644
index 0000000..bdc7acd
--- /dev/null
+++ b/examples/events-1-event-1-assignment-l2.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level2" level="2" version="1">
+  <model id="events_one_event_one_assignment">
+    <listOfCompartments>
+      <compartment id="compartment" size="1"/>
+    </listOfCompartments>
+    <listOfSpecies>
+      <species id="S1" compartment="compartment" initialAmount="1"/>
+      <species id="S2" compartment="compartment" initialAmount="0"/>
+    </listOfSpecies>
+    <listOfReactions>
+      <reaction id="R" reversible="false">
+        <listOfReactants>
+          <speciesReference species="S1"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="S2"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+              <ci> S1 </ci>
+          </math>
+        </kineticLaw>
+      </reaction>
+    </listOfReactions>
+    <listOfEvents>
+        <event>
+            <trigger>
+                <math xmlns="http://www.w3.org/1998/Math/MathML">
+                    <apply>
+                        <lt/>
+                        <ci> S1 </ci>
+                        <cn> 0.1 </cn>
+                    </apply>
+                </math>
+            </trigger>
+            <listOfEventAssignments>
+                <eventAssignment variable="S1">
+                    <math xmlns="http://www.w3.org/1998/Math/MathML">
+                        <cn> 1 </cn>
+                    </math>
+                </eventAssignment>
+            </listOfEventAssignments>
+        </event>
+    </listOfEvents>
+  </model>
+</sbml>
diff --git a/examples/events-2-events-1-assignment-l2.xml b/examples/events-2-events-1-assignment-l2.xml
new file mode 100644
index 0000000..5576ecd
--- /dev/null
+++ b/examples/events-2-events-1-assignment-l2.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level2" level="2" version="1">
+  <model id="events_two_events_one_assignment">
+    <listOfCompartments>
+      <compartment id="compartment" size="1"/>
+    </listOfCompartments>
+    <listOfSpecies>
+      <species id="S1" compartment="compartment" initialAmount="1"/>
+      <species id="S2" compartment="compartment" initialAmount="0"/>
+    </listOfSpecies>
+    <listOfReactions>
+      <reaction id="R" reversible="false">
+        <listOfReactants>
+          <speciesReference species="S1"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="S2"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+              <ci> S1 </ci>
+          </math>
+        </kineticLaw>
+      </reaction>
+    </listOfReactions>
+    <listOfEvents>
+        <event>
+            <trigger>
+                <math xmlns="http://www.w3.org/1998/Math/MathML">
+                    <apply>
+                        <lt/>
+                        <ci> S1 </ci>
+                        <cn> 0.1 </cn>
+                    </apply>
+                </math>
+            </trigger>
+            <listOfEventAssignments>
+                <eventAssignment variable="S1">
+                    <math xmlns="http://www.w3.org/1998/Math/MathML">
+                        <cn> 1 </cn>
+                    </math>
+                </eventAssignment>
+            </listOfEventAssignments>
+        </event>
+        <event>
+            <trigger>
+                <math xmlns="http://www.w3.org/1998/Math/MathML">
+                    <apply>
+                        <gt/>
+                        <ci> S2 </ci>
+                        <cn> 0.5 </cn>
+                    </apply>
+                </math>
+            </trigger>
+            <listOfEventAssignments>
+                <eventAssignment variable="S2">
+                    <math xmlns="http://www.w3.org/1998/Math/MathML">
+                        <cn> 0 </cn>
+                    </math>
+                </eventAssignment>
+            </listOfEventAssignments>
+        </event>
+    </listOfEvents>
+  </model>
+</sbml>
diff --git a/examples/findRoot.c b/examples/findRoot.c
new file mode 100644
index 0000000..f4cf24e
--- /dev/null
+++ b/examples/findRoot.c
@@ -0,0 +1,99 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2006-03-07 16:52:51 raim>
+  $Id: findRoot.c,v 1.3 2006/03/07 15:58:35 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/nullSolver.h>
+#include <sbmlsolver/solverError.h>
+
+
+int
+main (int argc, char *argv[]){
+
+  SBMLDocument_t *d;
+  SBMLReader_t *sr;
+  Model_t *m;
+
+  cvodeSettings_t *set;
+  odeModel_t *om;
+  integratorInstance_t *ii;
+  
+  if (argc < 2) {
+    fprintf(stderr, "Give me a filename as argument\n");
+    return EXIT_FAILURE;
+  }
+
+  /* parsing the SBML model with libSBML */
+  sr = SBMLReader_create();
+  d = SBMLReader_readSBML(sr, argv[1]);
+  SBMLReader_free(sr);
+  m = SBMLDocument_getModel(d);
+
+  /* Setting SBML ODE Solver integration parameters  */
+  set = CvodeSettings_create();
+
+  om = ODEModel_create(m);
+  ii = IntegratorInstance_create(om, set);
+  /**!!! the KINSOL implementation in SOSlib is experimental,
+         and can't be used in software but feel free to experiment.
+	 Source code is in src/nullSolver.c !!!**/
+  IntegratorInstance_nullSolver(ii);
+  
+  if ( SolverError_getNum(FATAL_ERROR_TYPE) ) {
+    printf("Integration not sucessful!\n");
+    SolverError_dumpAndClearErrors();
+    return(EXIT_FAILURE);
+  }
+
+  /* now we have the results and can free the inputs */
+  /* IntegratorInstance_free(ii); */
+  CvodeSettings_free(set);
+  ODEModel_free(om);
+  SBMLDocument_free(d);
+
+  /* print results */
+  SolverError_dumpAndClearErrors();
+
+  return (EXIT_SUCCESS);  
+}
+
+
+
+/* End of file */
diff --git a/examples/huang96.xml b/examples/huang96.xml
new file mode 100644
index 0000000..8c828a3
--- /dev/null
+++ b/examples/huang96.xml
@@ -0,0 +1,554 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level2" level="2" version="1">
+  <model id="MAPK_cascade">
+    <listOfCompartments>
+      <compartment id="compartment" size="1"/>
+    </listOfCompartments>
+    <listOfSpecies>
+      <species id="E1" compartment="compartment" initialAmount="3e-05"/>
+      <species id="E2" compartment="compartment" initialAmount="0.0003"/>
+      <species id="KKK" compartment="compartment" initialAmount="0.003"/>
+      <species id="P_KKK" compartment="compartment" initialAmount="0"/>
+      <species id="KK" compartment="compartment" initialAmount="1.2"/>
+      <species id="P_KK" compartment="compartment" initialAmount="0"/>
+      <species id="PP_KK" compartment="compartment" initialAmount="0"/>
+      <species id="K" compartment="compartment" initialAmount="1.2"/>
+      <species id="P_K" compartment="compartment" initialAmount="0"/>
+      <species id="PP_K" compartment="compartment" initialAmount="0"/>
+      <species id="KPase" compartment="compartment" initialAmount="0.12"/>
+      <species id="KKPase" compartment="compartment" initialAmount="0.0003"/>
+      <species id="E1_KKK" compartment="compartment" initialAmount="0"/>
+      <species id="E2_P_KKK" compartment="compartment" initialAmount="0"/>
+      <species id="P_KKK_KK" compartment="compartment" initialAmount="0"/>
+      <species id="P_KKK_P_KK" compartment="compartment" initialAmount="0"/>
+      <species id="PP_KK_K" compartment="compartment" initialAmount="0"/>
+      <species id="PP_KK_P_K" compartment="compartment" initialAmount="0"/>
+      <species id="KKPase_PP_KK" compartment="compartment" initialAmount="0"/>
+      <species id="KKPase_P_KK" compartment="compartment" initialAmount="0"/>
+      <species id="KPase_PP_K" compartment="compartment" initialAmount="0"/>
+      <species id="KPase_P_K" compartment="compartment" initialAmount="0"/>
+    </listOfSpecies>
+    <listOfReactions>
+      <reaction id="r1a">
+        <listOfReactants>
+          <speciesReference species="KKK"/>
+          <speciesReference species="E1"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="E1_KKK"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <minus/>
+              <apply>
+                <times/>
+                <ci> a1 </ci>
+                <ci> E1 </ci>
+                <ci> KKK </ci>
+              </apply>
+              <apply>
+                <times/>
+                <ci> d1 </ci>
+                <ci> E1_KKK </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="a1" value="1000"/>
+            <parameter id="d1" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r1b" reversible="false">
+        <listOfReactants>
+          <speciesReference species="E1_KKK"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="E1"/>
+          <speciesReference species="P_KKK"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <times/>
+              <ci> k2 </ci>
+              <ci> E1_KKK </ci>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k2" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r2a">
+        <listOfReactants>
+          <speciesReference species="P_KKK"/>
+          <speciesReference species="E2"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="E2_P_KKK"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <minus/>
+              <apply>
+                <times/>
+                <ci> a2 </ci>
+                <ci> E2 </ci>
+                <ci> P_KKK </ci>
+              </apply>
+              <apply>
+                <times/>
+                <ci> d2 </ci>
+                <ci> E2_P_KKK </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="a2" value="1000"/>
+            <parameter id="d2" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r2b" reversible="false">
+        <listOfReactants>
+          <speciesReference species="E2_P_KKK"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="E2"/>
+          <speciesReference species="KKK"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <times/>
+              <ci> k2 </ci>
+              <ci> E2_P_KKK </ci>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k2" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r3a">
+        <listOfReactants>
+          <speciesReference species="KK"/>
+          <speciesReference species="P_KKK"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="P_KKK_KK"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <minus/>
+              <apply>
+                <times/>
+                <ci> a3 </ci>
+                <ci> KK </ci>
+                <ci> P_KKK </ci>
+              </apply>
+              <apply>
+                <times/>
+                <ci> d3 </ci>
+                <ci> P_KKK_KK </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="a3" value="1000"/>
+            <parameter id="d3" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r3b" reversible="false">
+        <listOfReactants>
+          <speciesReference species="P_KKK_KK"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="P_KK"/>
+          <speciesReference species="P_KKK"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <times/>
+              <ci> k3 </ci>
+              <ci> P_KKK_KK </ci>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k3" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r4a">
+        <listOfReactants>
+          <speciesReference species="P_KK"/>
+          <speciesReference species="KKPase"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="KKPase_P_KK"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <minus/>
+              <apply>
+                <times/>
+                <ci> a4 </ci>
+                <ci> P_KK </ci>
+                <ci> KKPase </ci>
+              </apply>
+              <apply>
+                <times/>
+                <ci> d4 </ci>
+                <ci> KKPase_P_KK </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="a4" value="1000"/>
+            <parameter id="d4" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r4b">
+        <listOfReactants>
+          <speciesReference species="KKPase_P_KK"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="KK"/>
+          <speciesReference species="KKPase"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <times/>
+              <ci> k4 </ci>
+              <ci> KKPase_P_KK </ci>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k4" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r5a">
+        <listOfReactants>
+          <speciesReference species="P_KK"/>
+          <speciesReference species="P_KKK"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="P_KKK_P_KK"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <minus/>
+              <apply>
+                <times/>
+                <ci> a5 </ci>
+                <ci> P_KK </ci>
+                <ci> P_KKK </ci>
+              </apply>
+              <apply>
+                <times/>
+                <ci> d5 </ci>
+                <ci> P_KKK_P_KK </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="a5" value="1000"/>
+            <parameter id="d5" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r5b" reversible="false">
+        <listOfReactants>
+          <speciesReference species="P_KKK_P_KK"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="PP_KK"/>
+          <speciesReference species="P_KKK"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <times/>
+              <ci> k5 </ci>
+              <ci> P_KKK_P_KK </ci>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k5" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r6a">
+        <listOfReactants>
+          <speciesReference species="PP_KK"/>
+          <speciesReference species="KKPase"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="KKPase_PP_KK"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <minus/>
+              <apply>
+                <times/>
+                <ci> a6 </ci>
+                <ci> PP_KK </ci>
+                <ci> KKPase </ci>
+              </apply>
+              <apply>
+                <times/>
+                <ci> d6 </ci>
+                <ci> KKPase_PP_KK </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="a6" value="1000"/>
+            <parameter id="d6" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r6b">
+        <listOfReactants>
+          <speciesReference species="KKPase_PP_KK"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="P_KK"/>
+          <speciesReference species="KKPase"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <times/>
+              <ci> k6 </ci>
+              <ci> KKPase_PP_KK </ci>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k6" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r7a">
+        <listOfReactants>
+          <speciesReference species="K"/>
+          <speciesReference species="PP_KK"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="PP_KK_K"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <minus/>
+              <apply>
+                <times/>
+                <ci> a7 </ci>
+                <ci> K </ci>
+                <ci> PP_KK </ci>
+              </apply>
+              <apply>
+                <times/>
+                <ci> d7 </ci>
+                <ci> PP_KK_K </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="a7" value="1000"/>
+            <parameter id="d7" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r7b" reversible="false">
+        <listOfReactants>
+          <speciesReference species="PP_KK_K"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="P_K"/>
+          <speciesReference species="PP_KK"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <times/>
+              <ci> k7 </ci>
+              <ci> PP_KK_K </ci>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k7" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r8a">
+        <listOfReactants>
+          <speciesReference species="P_K"/>
+          <speciesReference species="KPase"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="KPase_P_K"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <minus/>
+              <apply>
+                <times/>
+                <ci> a8 </ci>
+                <ci> P_K </ci>
+                <ci> KPase </ci>
+              </apply>
+              <apply>
+                <times/>
+                <ci> d8 </ci>
+                <ci> KPase_P_K </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="a8" value="1000"/>
+            <parameter id="d8" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r8b">
+        <listOfReactants>
+          <speciesReference species="KPase_P_K"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="K"/>
+          <speciesReference species="KPase"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <times/>
+              <ci> k8 </ci>
+              <ci> KPase_P_K </ci>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k8" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r9a">
+        <listOfReactants>
+          <speciesReference species="P_K"/>
+          <speciesReference species="PP_KK"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="PP_KK_P_K"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <minus/>
+              <apply>
+                <times/>
+                <ci> a9 </ci>
+                <ci> P_K </ci>
+                <ci> PP_KK </ci>
+              </apply>
+              <apply>
+                <times/>
+                <ci> d9 </ci>
+                <ci> PP_KK_P_K </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="a9" value="1000"/>
+            <parameter id="d9" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r9b" reversible="false">
+        <listOfReactants>
+          <speciesReference species="PP_KK_P_K"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="PP_KK"/>
+          <speciesReference species="PP_K"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <times/>
+              <ci> k9 </ci>
+              <ci> PP_KK_P_K </ci>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k9" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r10a">
+        <listOfReactants>
+          <speciesReference species="PP_K"/>
+          <speciesReference species="KPase"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="KPase_PP_K"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <minus/>
+              <apply>
+                <times/>
+                <ci> a10 </ci>
+                <ci> PP_K </ci>
+                <ci> KPase </ci>
+              </apply>
+              <apply>
+                <times/>
+                <ci> d10 </ci>
+                <ci> KPase_PP_K </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="a10" value="1000"/>
+            <parameter id="d10" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="r10b">
+        <listOfReactants>
+          <speciesReference species="KPase_PP_K"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="P_K"/>
+          <speciesReference species="KPase"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <times/>
+              <ci> k10 </ci>
+              <ci> KPase_PP_K </ci>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k10" value="150"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+    </listOfReactions>
+  </model>
+</sbml>
diff --git a/examples/integrate.c b/examples/integrate.c
new file mode 100644
index 0000000..d272d20
--- /dev/null
+++ b/examples/integrate.c
@@ -0,0 +1,106 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-09-09 13:15:58 raim>
+  $Id: integrate.c,v 1.14 2008/09/22 10:30:26 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/solverError.h>
+
+
+int
+main (int argc, char *argv[])
+{
+  char *model;
+  double time;
+  double printstep;
+  /* libSBML types */
+  SBMLDocument_t *d;
+  SBMLReader_t *sr;
+  /* SOSlib types */
+  SBMLResults_t *results;
+  cvodeSettings_t *set;
+
+  /* parsing command-line arguments */
+  if (argc < 4 ) {
+    fprintf(stderr,
+	    "usage %s sbml-model-file simulation-time time-steps\n",
+            argv[0]);
+    exit(EXIT_FAILURE);
+  }
+  model = argv[1];
+  time = atof(argv[2]);
+  printstep = atoi(argv[3]); 
+
+  /* parsing the SBML model with libSBML */
+  sr = SBMLReader_create();
+  d = SBMLReader_readSBML(sr, model);
+  SBMLReader_free(sr);
+
+  /* Setting SBML ODE Solver integration parameters  */
+  set = CvodeSettings_create();
+  CvodeSettings_setTime(set, time, printstep);
+  CvodeSettings_setErrors(set, 1e-9, 1e-4, 1000);
+  CvodeSettings_setCompileFunctions(set, 1);
+
+  /* calling the SBML ODE Solver which returns SBMLResults */  
+  results = SBML_odeSolver(d, set);
+  
+  if ( SolverError_getNum(FATAL_ERROR_TYPE) ) {
+    fprintf(stderr, "Integration not sucessful!\n");
+    SolverError_dumpAndClearErrors();
+    return(EXIT_FAILURE);
+  }
+
+  /* now we have the results and can free the inputs */
+  CvodeSettings_free(set);
+  SBMLDocument_free(d);
+
+  /* print results */
+  printf("### RESULTS \n");  
+  SBMLResults_dump(results);
+  SolverError_dumpAndClearErrors();
+  /* now we can also free the result structure */
+  SBMLResults_free(results);
+
+  return (EXIT_SUCCESS);  
+}
+
+
+
+/* End of file */
diff --git a/examples/integrateODEs.c b/examples/integrateODEs.c
new file mode 100644
index 0000000..0b069f3
--- /dev/null
+++ b/examples/integrateODEs.c
@@ -0,0 +1,155 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2006-10-14 07:07:07 raim>
+  $Id: integrateODEs.c,v 1.2 2006/10/14 05:10:27 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/solverError.h>
+
+
+int
+main(void)
+{
+  int neq, nass, nconst;
+  char *x[3];
+  double x0[3];
+  char *ode[2];
+  ASTNode_t *ast[2];
+  
+  double time, rtol, atol;
+  double printstep;
+
+  /* SBML model containing events */
+  Model_t *events;
+  
+  /* SOSlib types */
+  odeModel_t *om;
+  cvodeSettings_t *set;
+  integratorInstance_t *ii;
+  variableIndex_t *vi;
+
+  /* parsing input ODEs and settings */
+  /* time and error settings */
+  time = 0.5;
+  rtol = atol = 1.0E-9;
+  printstep = 10;
+  /* variables */
+  neq = 2;
+  x[0] = "C_cy"; 
+  x0[0] = 0.0;
+  ode[0] = "((150.0 * (3.8 - (p * D_cy) - (p * C_cy)) * (1.0 - (p * C_cy))) - (9.0 * C_cy))";
+  x[1] = "D_cy";
+  x0[1] = 9.0;
+  ode[1] = "(3.8 - (3.0 * D_cy) - (p * D_cy) - (p * C_cy))";
+  /* parameters */
+  nconst = 1;
+  x[2] = "p";
+  x0[2] = 0.2;
+  /* assignments */
+  nass = 0;
+  /* SBML model containing events */
+  events = NULL;
+  
+  /* creating ODE ASTs from strings */
+  ast[0] = SBML_parseFormula(ode[0]);
+  ast[1] = SBML_parseFormula(ode[1]);
+
+  /* end of input parsing */
+  
+  /* Setting SBML ODE Solver integration parameters  */
+  set = CvodeSettings_createWithTime(time, printstep);
+  CvodeSettings_setErrors(set, atol, rtol, 1e4);
+  CvodeSettings_setStoreResults(set, 0);
+
+  /* activating default sensitivity */
+  CvodeSettings_setSensitivity(set, 1);
+  
+  /* creating odeModel */
+  /* `events' could be an SBML model containing events */
+  om = ODEModel_createFromODEs(ast, neq, nass, nconst, x, x0, events);
+
+  /* creating integrator */
+  ii = IntegratorInstance_create(om,set);
+
+  /* integrate */
+  printf("integrating:\n");
+  while( !IntegratorInstance_timeCourseCompleted(ii) )
+  {
+    if ( !IntegratorInstance_integrateOneStep(ii) )
+    {
+      SolverError_dump();
+      break;
+    }
+    else
+      IntegratorInstance_dumpData(ii);    
+  }
+
+  /* Specific data interfaces: */
+  /* names are stored in the odeModel and values 
+     are independently stored in the integrator: you can
+     get different values from different integrator instances
+     built from the same model */
+  vi = ODEModel_getVariableIndex(om, "C_cy");
+  printf("\nVariable %s has final value of %g at time %g\n\n",
+	 ODEModel_getVariableName(om, vi),
+	 IntegratorInstance_getVariableValue(ii, vi),
+	 IntegratorInstance_getTime(ii));
+  VariableIndex_free(vi);
+
+  vi = ODEModel_getVariableIndex(om, "p");
+  printf("Sensitivies to %s:\n",  ODEModel_getVariableName(om, vi));
+  IntegratorInstance_dumpPSensitivities(ii, vi);
+  printf("\n\n");
+  VariableIndex_free(vi);
+
+  /* finished, free stuff */
+  /* free ASTs */
+  ASTNode_free(ast[0]);
+  ASTNode_free(ast[1]);
+  /* free solver structures */
+  IntegratorInstance_free(ii);
+  ODEModel_free(om);  
+  CvodeSettings_free(set);
+  
+  return (EXIT_SUCCESS);  
+}
+
+
+
+/* End of file */
diff --git a/examples/printODEModel.c b/examples/printODEModel.c
new file mode 100644
index 0000000..e2b4189
--- /dev/null
+++ b/examples/printODEModel.c
@@ -0,0 +1,101 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2006-10-02 17:29:35 raim>
+  $Id: printODEModel.c,v 1.5 2006/10/02 15:30:24 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbml/SBMLTypes.h>
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/odeModel.h>
+#include <sbmlsolver/solverError.h>
+
+int main(void)
+{
+    int i;
+    char *formula;
+    variableIndex_t *vi = NULL;
+
+    odeModel_t *model =
+      ODEModel_createFromFile("basic-model1-forward-l2.xml");
+
+
+    /* Get some information from constructed odeModel */
+    printf("\n\n");
+    printf("ODE Model Statistics:\n");
+    printf("Number of ODEs:               %d\n",
+	   ODEModel_getNeq(model));
+    printf("Number of Assignments:        %d\n",
+	   ODEModel_getNumAssignments(model));
+    printf("Number of Constants:          %d\n",
+	   ODEModel_getNumConstants(model));
+    printf("                            ____\n");
+    printf("Total number of values:       %d\n",
+	   ODEModel_getNumValues(model));
+    
+    printf("\n");
+    printf("ODEs:\n");
+    for ( i=0; i<ODEModel_getNeq(model); i++ ){
+      vi = ODEModel_getOdeVariableIndex(model, i);
+      formula = SBML_formulaToString(ODEModel_getOde(model, vi));
+      printf("d[%s]/dt = %s \n", ODEModel_getVariableName(model, vi), formula);
+      free(formula);
+      VariableIndex_free(vi);
+    }
+    printf("Assigned Variables:\n");
+    for ( i=0; i<ODEModel_getNumAssignments(model); i++ ){
+      vi = ODEModel_getAssignedVariableIndex(model, i);
+      formula = SBML_formulaToString(ODEModel_getAssignment(model, vi));
+      printf("%s = %s \n", ODEModel_getVariableName(model, vi), formula);
+      free(formula);
+      VariableIndex_free(vi);
+    }
+    printf("Constants:\n");
+    for ( i=0; i<ODEModel_getNumConstants(model); i++ ){
+      vi = ODEModel_getConstantIndex(model, i);
+      printf("%s\n", ODEModel_getVariableName(model, vi));
+      VariableIndex_free(vi);
+    }
+    printf("\n\n");
+
+    
+    ODEModel_free(model);
+    return EXIT_SUCCESS;
+}
+
+/* End of file */
diff --git a/examples/repressilator.objfun b/examples/repressilator.objfun
new file mode 100644
index 0000000..b51ade5
--- /dev/null
+++ b/examples/repressilator.objfun
@@ -0,0 +1 @@
+1/2*( (x1 - x1_data)^2 + (x2 - x2_data)^2 + (x3 - x3_data)^2 + (y1 - y1_data)^2 + (y2 - y2_data)^2 + (y3 - y3_data)^2 ) 
\ No newline at end of file
diff --git a/examples/repressilator.xml b/examples/repressilator.xml
new file mode 100644
index 0000000..2fdc48b
--- /dev/null
+++ b/examples/repressilator.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Model by stefan at tbi.univie.ac.at -->
+<!-- $Id: repressilator.xml,v 1.2 2007/10/26 12:47:35 raimc Exp $ -->
+
+<sbml xmlns="http://www.sbml.org/sbml/level2" level="2" version="1">
+  <model id="repressilator_scaled">
+    <listOfCompartments>
+      <compartment id="compartment" size="1"/>
+    </listOfCompartments>
+    <listOfSpecies>
+      <species id="x1" compartment="compartment" initialAmount="1"/>
+      <species id="x2" compartment="compartment" initialAmount="1"/>
+      <species id="x3" compartment="compartment" initialAmount="0.1"/>
+      <species id="y1" compartment="compartment" initialAmount="1"/>
+      <species id="y2" compartment="compartment" initialAmount="0.1"/>
+      <species id="y3" compartment="compartment" initialAmount="0.1"/>
+    </listOfSpecies>
+    <listOfParameters>
+      <parameter id="alpha" value="1.52"/>
+      <parameter id="beta"  value="1.1"/>
+      <parameter id="rho"   value="2"/>
+    </listOfParameters>
+    <listOfRules>
+      <rateRule variable="x1">
+        <math xmlns="http://www.w3.org/1998/Math/MathML">
+          <apply>
+            <times/>
+            <ci> beta </ci>
+            <apply>
+              <minus/>
+              <ci> y1 </ci>
+              <ci> x1 </ci>
+            </apply>
+          </apply>
+        </math>
+      </rateRule>
+      <rateRule variable="x2">
+        <math xmlns="http://www.w3.org/1998/Math/MathML">
+          <apply>
+            <times/>
+            <ci> beta </ci>
+            <apply>
+              <minus/>
+              <ci> y2 </ci>
+              <ci> x2 </ci>
+            </apply>
+          </apply>
+        </math>
+      </rateRule>
+      <rateRule variable="x3">
+        <math xmlns="http://www.w3.org/1998/Math/MathML">
+          <apply>
+            <times/>
+            <ci> beta </ci>
+            <apply>
+              <minus/>
+              <ci> y3 </ci>
+              <ci> x3 </ci>
+            </apply>
+          </apply>
+        </math>
+      </rateRule>
+      <rateRule variable="y1">
+        <math xmlns="http://www.w3.org/1998/Math/MathML">
+          <apply>
+            <minus/>
+            <apply>
+              <divide/>
+              <apply>
+                <times/>
+                <ci> alpha </ci>
+                <ci> x1 </ci>
+              </apply>
+              <apply>
+                <plus/>
+                <cn type="integer"> 1 </cn>
+                <ci> x1 </ci>
+                <apply>
+                  <times/>
+                  <ci> rho </ci>
+                  <ci> x3 </ci>
+                </apply>
+              </apply>
+            </apply>
+            <ci> y1 </ci>
+          </apply>
+        </math>
+      </rateRule>
+      <rateRule variable="y2">
+        <math xmlns="http://www.w3.org/1998/Math/MathML">
+          <apply>
+            <minus/>
+            <apply>
+              <divide/>
+              <apply>
+                <times/>
+                <ci> alpha </ci>
+                <ci> x2 </ci>
+              </apply>
+              <apply>
+                <plus/>
+                <cn type="integer"> 1 </cn>
+                <ci> x2 </ci>
+                <apply>
+                  <times/>
+                  <ci> rho </ci>
+                  <ci> x1 </ci>
+                </apply>
+              </apply>
+            </apply>
+            <ci> y2 </ci>
+          </apply>
+        </math>
+      </rateRule>
+      <rateRule variable="y3">
+        <math xmlns="http://www.w3.org/1998/Math/MathML">
+          <apply>
+            <minus/>
+            <apply>
+              <divide/>
+              <apply>
+                <times/>
+                <ci> alpha </ci>
+                <ci> x3 </ci>
+              </apply>
+              <apply>
+                <plus/>
+                <cn type="integer"> 1 </cn>
+                <ci> x3 </ci>
+                <apply>
+                  <times/>
+                  <ci> rho </ci>
+                  <ci> x2 </ci>
+                </apply>
+              </apply>
+            </apply>
+            <ci> y3 </ci>
+          </apply>
+        </math>
+      </rateRule>
+    </listOfRules>
+  </model>
+</sbml>
diff --git a/examples/repressilator_data.txt b/examples/repressilator_data.txt
new file mode 100644
index 0000000..2140887
--- /dev/null
+++ b/examples/repressilator_data.txt
@@ -0,0 +1,111 @@
+### RESULTS 
+### Printing All Results 
+## Printing Variable Compartment time courses
+## No Values.
+## Printing Species time courses
+#t x1 x2 x3 y1 y2 y3 
+0 1 1 0.1 1 0.1 0.1 
+1 0.914162 0.483765 0.0885379 0.791221 0.208381 0.0744025 
+2 0.796231 0.304923 0.0775749 0.689586 0.190294 0.0700019 
+3 0.703939 0.220161 0.0728239 0.62512 0.157172 0.0704756 
+4 0.636012 0.169621 0.0722288 0.577627 0.129004 0.0731579 
+5 0.584866 0.135633 0.0743666 0.540013 0.107248 0.0776105 
+6 0.54478 0.111329 0.0785747 0.508855 0.0905302 0.0836987 
+7 0.512024 0.0932564 0.0845515 0.482038 0.0775296 0.0913558 
+8 0.484149 0.0794228 0.0921562 0.45811 0.0672797 0.10055 
+9 0.459501 0.0686523 0.101321 0.436058 0.0591162 0.111251 
+10 0.436945 0.0601325 0.112005 0.415141 0.0525355 0.123435 
+11 0.415672 0.0533141 0.124163 0.394835 0.0472159 0.137038 
+12 0.395118 0.0478274 0.137726 0.374784 0.0429038 0.15196 
+13 0.374902 0.0433922 0.15259 0.354765 0.0394155 0.168058 
+14 0.354785 0.0398141 0.168604 0.33467 0.0366201 0.18513 
+15 0.334646 0.0369543 0.185569 0.314486 0.0344182 0.202933 
+16 0.314465 0.0347063 0.203244 0.294276 0.0327356 0.221181 
+17 0.294293 0.0329892 0.221349 0.274159 0.0315168 0.239568 
+18 0.274238 0.031745 0.239583 0.25429 0.0307233 0.257777 
+19 0.254446 0.0309341 0.257638 0.234842 0.0303309 0.2755 
+20 0.235079 0.030531 0.275215 0.215986 0.0303275 0.292455 
+21 0.216305 0.030523 0.292038 0.197886 0.0307117 0.308393 
+22 0.19828 0.0309086 0.30786 0.180678 0.0314933 0.323109 
+23 0.181137 0.031697 0.322477 0.16447 0.032692 0.336439 
+24 0.164979 0.0329073 0.335732 0.149338 0.0343374 0.348266 
+25 0.149878 0.0345693 0.347506 0.13532 0.0364696 0.358511 
+26 0.135876 0.0367235 0.357716 0.122429 0.0391398 0.367126 
+27 0.122986 0.0394208 0.36631 0.110651 0.0424097 0.374084 
+28 0.1112 0.0427232 0.373256 0.0999553 0.0463513 0.379373 
+29 0.100487 0.0467023 0.378538 0.0902989 0.0510464 0.382983 
+30 0.090807 0.0514393 0.382145 0.081626 0.0565845 0.384913 
+31 0.0821056 0.0570229 0.384072 0.0738743 0.0630611 0.385157 
+32 0.074323 0.0635466 0.384314 0.0669789 0.0705729 0.38371 
+33 0.0673958 0.0711056 0.382864 0.060875 0.0792137 0.380566 
+34 0.0612601 0.0797902 0.379718 0.0554994 0.089066 0.375721 
+35 0.0558533 0.0896791 0.374873 0.0507913 0.100193 0.36918 
+36 0.0511157 0.100831 0.368338 0.046694 0.112628 0.360962 
+37 0.0469913 0.113275 0.360135 0.0431561 0.126366 0.35111 
+38 0.0434289 0.127002 0.350309 0.0401318 0.141356 0.339696 
+39 0.0403825 0.141956 0.338938 0.0375802 0.157491 0.326828 
+40 0.0378114 0.158028 0.326132 0.0354659 0.174608 0.312656 
+41 0.0356804 0.175056 0.312041 0.0337593 0.19249 0.297369 
+42 0.0339602 0.192823 0.296853 0.032437 0.210876 0.28119 
+43 0.0326271 0.211074 0.28079 0.0314811 0.229469 0.264372 
+44 0.0316634 0.229519 0.264098 0.03088 0.247959 0.24718 
+45 0.0310574 0.247856 0.247038 0.030628 0.266037 0.229884 
+46 0.0308039 0.265785 0.229872 0.0307266 0.283412 0.212739 
+47 0.0309045 0.28302 0.21285 0.0311844 0.299822 0.195978 
+48 0.0313682 0.299306 0.196201 0.0320182 0.315046 0.179804 
+49 0.0322121 0.314424 0.180121 0.0332535 0.328906 0.164376 
+50 0.0334613 0.328198 0.164771 0.0349239 0.341269 0.149819 
+51 0.03515 0.340497 0.150271 0.037072 0.352045 0.136213 
+52 0.0373209 0.351226 0.136706 0.0397496 0.361173 0.123608 
+53 0.040026 0.360329 0.124119 0.0430179 0.368623 0.112018 
+54 0.0433239 0.367764 0.11254 0.0469419 0.374375 0.101449 
+55 0.0472815 0.373513 0.101967 0.0515936 0.378421 0.0918873 
+56 0.0519803 0.377567 0.0923711 0.0570731 0.380768 0.0832625 
+57 0.0575103 0.379918 0.0837089 0.0634894 0.381416 0.0754932 
+58 0.0639703 0.380563 0.0759203 0.070935 0.380352 0.0685378 
+59 0.0714597 0.379494 0.0689455 0.0794965 0.377564 0.0623598 
+60 0.080064 0.376704 0.0627408 0.0892491 0.37305 0.0569149 
+61 0.0898557 0.372193 0.0572619 0.100259 0.366822 0.0521358 
+62 0.10089 0.365973 0.052456 0.112559 0.358907 0.0479688 
+63 0.113197 0.358073 0.0482681 0.126145 0.34935 0.0443611 
+64 0.126771 0.348542 0.0446426 0.140966 0.338217 0.0412812 
+65 0.141557 0.337455 0.0415374 0.156919 0.325621 0.0386807 
+66 0.157452 0.324922 0.0389119 0.173848 0.311714 0.0365201 
+67 0.174293 0.311096 0.0367331 0.191539 0.296685 0.0347655 
+68 0.191871 0.296164 0.0349693 0.209733 0.280755 0.033403 
+69 0.209934 0.280346 0.0335986 0.228144 0.264167 0.0324183 
+70 0.228201 0.263884 0.0326046 0.246468 0.247184 0.0317974 
+71 0.246373 0.247032 0.0319768 0.264398 0.230074 0.03153 
+72 0.264155 0.230051 0.0317078 0.281645 0.213091 0.0316161 
+73 0.281264 0.213189 0.0317978 0.29795 0.196466 0.0320686 
+74 0.297447 0.196673 0.0322563 0.313093 0.180399 0.0329044 
+75 0.312487 0.1807 0.033101 0.326896 0.165052 0.0341488 
+76 0.326208 0.16543 0.0343582 0.339224 0.150551 0.0358321 
+77 0.338474 0.150985 0.0360602 0.349981 0.136982 0.0379972 
+78 0.349187 0.137453 0.0382494 0.359101 0.124396 0.0406972 
+79 0.35828 0.124886 0.0409775 0.366548 0.112812 0.0439955 
+80 0.365709 0.113309 0.0443077 0.372298 0.102227 0.0479634 
+81 0.37145 0.10272 0.0483122 0.376341 0.0926176 0.0526804 
+82 0.375488 0.0930966 0.0530702 0.378672 0.0839452 0.0582335 
+83 0.377816 0.0844038 0.0586679 0.379286 0.0761621 0.0647149 
+84 0.378429 0.0765961 0.0651952 0.378182 0.0692143 0.0722184 
+85 0.377324 0.0696212 0.0727433 0.375358 0.0630449 0.0808324 
+86 0.3745 0.0634237 0.0813983 0.370815 0.0575965 0.0906346 
+87 0.36996 0.0579475 0.091235 0.364565 0.052814 0.101684 
+88 0.363718 0.0531379 0.102307 0.356632 0.0486443 0.11401 
+89 0.355803 0.0489427 0.114641 0.347065 0.0450384 0.127605 
+90 0.346266 0.0453132 0.128223 0.335942 0.0419519 0.142414 
+91 0.335188 0.0422054 0.142997 0.323375 0.0393451 0.158333 
+92 0.322683 0.03958 0.158852 0.309513 0.037184 0.175199 
+93 0.308903 0.0374028 0.17563 0.294546 0.0354397 0.1928 
+94 0.294034 0.0356451 0.193121 0.278694 0.0340893 0.210882 
+95 0.278296 0.0342843 0.211071 0.262205 0.0331157 0.229156 
+96 0.261931 0.0333033 0.2292 0.245341 0.032508 0.247319 
+97 0.245196 0.0326912 0.247214 0.228364 0.0322617 0.265069 
+98 0.228347 0.0324439 0.264818 0.211525 0.032379 0.282121 
+99 0.211629 0.0325637 0.281733 0.195052 0.0328697 0.298219 
+100 0.195264 0.0330604 0.297711 0.179142 0.0337508 0.313148 
+## Printing Variable Parameter time courses
+## No Values.
+## Printing Reaction Flux time courses
+## No Values.
diff --git a/examples/sensitivity.c b/examples/sensitivity.c
new file mode 100644
index 0000000..cc76cbd
--- /dev/null
+++ b/examples/sensitivity.c
@@ -0,0 +1,181 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2009-02-12 18:16:57 raim>
+  $Id: sensitivity.c,v 1.12 2009/02/12 09:31:12 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/drawGraph.h>
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/solverError.h>
+
+
+int
+main (void){
+  int i, j;
+  
+  odeModel_t *om;
+  odeSense_t *os;
+  cvodeSettings_t *set;
+  integratorInstance_t *ii;
+  cvodeResults_t *results;
+  variableIndex_t *y, *p;
+
+   
+  /* Setting SBML ODE Solver integration parameters  */
+  set = CvodeSettings_create();
+  CvodeSettings_setTime(set, 300.0, 10);
+  CvodeSettings_setErrors(set, 1e-9, 1e-4, 1e9);
+  /* ACTIVATE SENSITIVITY ANALYSIS */
+  CvodeSettings_setSensitivity(set, 1);
+  /* 0: simultaneous 1: staggered, 2: staggered1
+     see CVODES user guide for details */
+  CvodeSettings_setSensMethod(set, 0);
+  CvodeSettings_setJacobian(set, 1); /* for testing only */
+  /* CvodeSettings_dump(set); */
+
+  CvodeSettings_setCompileFunctions(set, 1);
+
+  
+  /* creating the odeModel */
+  om = ODEModel_createFromFile("MAPK.xml");
+  /* get a parameter for which we will check sensitivities */
+  p = ODEModel_getVariableIndex(om, "K1");
+  /* calling the integrator */
+  ii = IntegratorInstance_create(om, set);
+
+  printf("### Printing Sensitivities to %s (%g) on the fly:\n",
+	 ODEModel_getVariableName(om, p),
+	 IntegratorInstance_getVariableValue(ii, p));
+  
+  printf("#time  ");
+  IntegratorInstance_dumpNames(ii);
+
+  IntegratorInstance_dumpPSensitivities(ii, p);
+
+  while( !IntegratorInstance_timeCourseCompleted(ii) ) {
+     if ( !IntegratorInstance_integrateOneStep(ii) ) {
+       break;
+     }
+     IntegratorInstance_dumpPSensitivities(ii, p);
+  }
+  VariableIndex_free(p);
+  
+  
+  if ( SolverError_getNum(FATAL_ERROR_TYPE) ) {
+    printf("Integration not sucessful!\n");
+    SolverError_dumpAndClearErrors();
+    return(EXIT_FAILURE);
+  }
+
+
+  y = ODEModel_getVariableIndex(om, "MAPK_P");
+
+  os = IntegratorInstance_getSensitivityModel(ii);
+  
+  printf("\nLet's look at a specific ODE variable:\n");
+  /* print sensitivities again, but now from stored results */
+  printf("### RESULTS for Sensitivity Analysis for one ODE variable\n");
+  printf("#time  Variable  Sensitivity Params...\n");
+  printf("#time  ");
+  printf("%s  ", ODEModel_getVariableName(om, y));
+  for ( j=0; j<ODESense_getNsens(os); j++ ) {
+    p = ODESense_getSensParamIndexByNum(os, j);
+    printf("%s ", ODEModel_getVariableName(om, p));
+    VariableIndex_free(p);
+  }
+  printf("\n");
+
+  results = IntegratorInstance_createResults(ii);
+ 
+  for ( i=0; i<CvodeResults_getNout(results); i++ ) {
+    printf("%g  ", CvodeResults_getTime(results, i));
+    printf("%g  ", CvodeResults_getValue(results, y, i));
+    for ( j=0; j<ODESense_getNsens(os); j++ ) {
+      p = ODESense_getSensParamIndexByNum(os, j);
+      printf("%g ", CvodeResults_getSensitivity(results, y, p, i));
+      VariableIndex_free(p);
+    }
+    printf("\n");
+  }
+
+  drawSensitivity(IntegratorInstance_getData(ii), "sensitivity", "ps", 0.9);
+  
+  p = ODEModel_getVariableIndex(om, "V1");
+  printf("\nWhat do sensitivities mean? Let's try out!\n\n");
+  printf("... add 1 to %s:  %g + 1 = ",
+	 ODEModel_getVariableName(om, p),
+	 IntegratorInstance_getVariableValue(ii, p));
+  
+  
+  CvodeSettings_setSensitivity(set, 0);
+  IntegratorInstance_reset(ii);
+  IntegratorInstance_setVariableValue(ii, p,
+		     IntegratorInstance_getVariableValue(ii,p)+1);
+  printf("%g\n", IntegratorInstance_getVariableValue(ii, p));
+  
+  printf("... and integrate again:\n\n");
+
+  CvodeResults_free(results);
+  IntegratorInstance_integrate(ii); 
+  results = IntegratorInstance_createResults(ii);
+
+  /* and print changed results */
+  printf("#time  %s\n", ODEModel_getVariableName(om, y));
+  for ( i=0; i<CvodeResults_getNout(results); i++ ) {
+    printf("%g  ", CvodeResults_getTime(results, i));
+    printf("%g\n", CvodeResults_getValue(results, y, i));
+  }
+  
+  printf("\nSee the difference?\n");
+  printf("Look what happens when the sensitivity changes its sign\n");
+  printf("between times 180 and 210.\n\n");
+
+  VariableIndex_free(y);
+  VariableIndex_free(p);
+  /* now we have the results and can free the inputs */
+  IntegratorInstance_free(ii);
+  CvodeSettings_free(set);
+  CvodeResults_free(results);
+  ODEModel_free(om);
+  SolverError_dumpAndClearErrors();
+  return (EXIT_SUCCESS);  
+}
+
+
+
+/* End of file */
diff --git a/examples/senstest.c b/examples/senstest.c
new file mode 100644
index 0000000..2645e9b
--- /dev/null
+++ b/examples/senstest.c
@@ -0,0 +1,275 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-09-19 15:05:31 raim>
+  $Id: senstest.c,v 1.6 2008/09/22 10:30:26 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/solverError.h>
+
+
+int
+main(void)
+{
+  int i, j;
+  
+  odeModel_t *om;
+  cvodeSettings_t *set;
+  integratorInstance_t *ii;
+
+  variableIndex_t *y, *p;
+
+   
+  /* Setting SBML ODE Solver integration parameters  */
+  set = CvodeSettings_create();
+  CvodeSettings_setTime(set, 30, 10);
+  CvodeSettings_setErrors(set, 1e-15, 1e-10, 1e9);
+  CvodeSettings_setMethod(set, 0, 5);
+  /*   CvodeSettings_setStoreResults(set, 0); */
+  CvodeSettings_setJacobian(set, 1); /* for testing only */
+  CvodeSettings_setCompileFunctions(set, 0); /* for testing only */
+  /* CvodeSettings_dump(set); */
+  
+  /* creating the odeModel */
+  om = ODEModel_createFromFile("MAPK.xml");
+  ii = IntegratorInstance_create(om, set);
+
+  printf("\n\nFirst try a few integrations with default sensitivity !\n");
+  IntegratorInstance_dumpNames(ii);
+  for ( i=0; i<3; i++ )
+  {
+    printf(" Run #%d:\n", i);
+    IntegratorInstance_integrate(ii);
+    IntegratorInstance_dumpData(ii);
+    IntegratorInstance_reset(ii);
+    printf(" finished.\n");
+  }
+
+  /* ACTIVATE SENSITIVITY ANALYSIS */
+
+  printf("\n\nNow Activate Sensitivity\n");
+
+  CvodeSettings_setSensitivity(set, 1);
+  /* 0: simultaneous 1: staggered, 2: staggered1
+     see CVODES user guide for details */
+  CvodeSettings_setSensMethod(set, 0);
+
+  /* reset integrator to new settings */
+  IntegratorInstance_reset(ii);
+  
+  /* get a parameter for which we will check sensitivities */
+  p = ODEModel_getVariableIndex(om, "K1");  
+
+  
+  i = 0;
+  printf("Default case 1: sensitivities calculated for all constants\n");
+  printf("of the input SBML, using analytic matrices:\n");
+  printf("Sensitivities to parameter %s:\n", ODEModel_getVariableName(om, p));
+  while ( i < 10 ) {
+    while( !IntegratorInstance_timeCourseCompleted(ii) )
+     if ( !IntegratorInstance_integrateOneStep(ii) )
+       break;
+    
+   /*  IntegratorInstance_dumpData(ii); */
+    IntegratorInstance_dumpPSensitivities(ii, p);
+
+    IntegratorInstance_reset(ii);
+    i++;
+  }
+  
+  /*   IntegratorInstance_dumpPSensitivities(ii, p); */
+  
+  if ( SolverError_getNum(FATAL_ERROR_TYPE) )
+  {
+    printf("Integration not sucessful!\n");
+    SolverError_dumpAndClearErrors();
+    return(EXIT_FAILURE);
+  }
+
+  printf("\n");
+  /*   CvodeSettings_dump(set); */
+  char *sensIDs[3];  
+  sensIDs[0] = "MAPK_PP";
+  sensIDs[1] = "K1";
+  sensIDs[2] = "MKKK_P";
+  CvodeSettings_setSensParams(set, sensIDs, 3);
+
+  IntegratorInstance_reset(ii);
+  
+  while( !IntegratorInstance_timeCourseCompleted(ii) )
+    if ( !IntegratorInstance_integrateOneStep(ii) )
+      break;
+  
+  if ( SolverError_getNum(FATAL_ERROR_TYPE) )
+  {
+    printf("Integration not sucessful!\n");
+    SolverError_dumpAndClearErrors();
+    return(EXIT_FAILURE);
+  }
+
+  printf("Selected parameter case 1, analytic matrices.\n");
+  y = ODEModel_getVariableIndex(om, "MAPK_PP");   
+  printf("Sensitivities to variable %s\n", ODEModel_getVariableName(om, y));
+  IntegratorInstance_dumpPSensitivities(ii, y);
+  VariableIndex_free(y);
+  
+  y = ODEModel_getVariableIndex(om, "K1");   
+  printf("Sensitivities to parameter %s\n", ODEModel_getVariableName(om, y));
+  IntegratorInstance_dumpPSensitivities(ii, y);
+  VariableIndex_free(y);
+  
+  y = ODEModel_getVariableIndex(om, "MKKK_P");   
+  printf("Sensitivities to variable %s\n", ODEModel_getVariableName(om, y));
+  IntegratorInstance_dumpPSensitivities(ii, y);
+  VariableIndex_free(y);
+  
+  y = ODEModel_getVariableIndex(om, "MKKK");
+  printf("Sensitivities OF variable %s to above parameters and variables\n",
+	 ODEModel_getVariableName(om, y));
+  IntegratorInstance_dumpYSensitivities(ii, y);
+  VariableIndex_free(y);
+
+  
+ /*  IntegratorInstance_dumpData(ii); */
+  /* deactivate matrices */
+  char *sensIDs2[4];  
+  sensIDs2[3] = "V1";
+  sensIDs2[0] = "K1";
+  sensIDs2[1] = "MAPK_PP";
+  sensIDs2[2] = "MKKK";
+  CvodeSettings_setSensParams(set, sensIDs2, 4);   
+  IntegratorInstance_reset(ii);
+  IntegratorInstance_integrate(ii);
+
+  printf("\n\nFree Jacobian matrix via ODEModel_free(om) and suppress\n");
+  printf("use of Jacobian matrix via CvodeSettings_setJacobian(set, 0)\n");
+
+  CvodeSettings_setJacobian(set, 0);
+  ODEModel_freeJacobian(om);
+  
+  printf("Consequently the parametric matrix can't be used.\n");
+  printf("and instead CVODES internal approximation is active.\n");
+  SolverError_dumpAndClearErrors();
+
+  /*   IntegratorInstance_dumpData(ii); */
+  printf("\nSelected parameter case 2, internal approximation of matrices.\n");
+  
+  y = ODEModel_getVariableIndex(om, "MAPK_PP");   
+  printf("Sensitivities to variable %s\n", ODEModel_getVariableName(om, y));
+  IntegratorInstance_dumpPSensitivities(ii, y);  
+  VariableIndex_free(y);
+  
+  y = ODEModel_getVariableIndex(om, "K1");
+  printf("Sensitivities to parameter %s\n", ODEModel_getVariableName(om, y));
+  IntegratorInstance_dumpPSensitivities(ii, y);
+  VariableIndex_free(y);
+
+  
+  y = ODEModel_getVariableIndex(om, "V1");
+  printf("Sensitivities to parameter %s\n", ODEModel_getVariableName(om, y));
+  IntegratorInstance_dumpPSensitivities(ii, y);
+  VariableIndex_free(y);
+
+  y = ODEModel_getVariableIndex(om, "MKKK");   
+  printf("Sensitivities to variable %s\n", ODEModel_getVariableName(om, y));
+  IntegratorInstance_dumpPSensitivities(ii, y);  
+  VariableIndex_free(y);
+
+  y = ODEModel_getVariableIndex(om, "MKKK");   
+  printf("Sensitivities OF variable %s to above parameters and variables:\n",
+	 ODEModel_getVariableName(om, y));
+  IntegratorInstance_dumpYSensitivities(ii, y);
+  VariableIndex_free(y);
+
+  /* switch to default sens. again and run iteration */
+  printf("\n\nDefault case 2, switching between approx. and analytic\n");
+  printf("\nSwitching back to analytic matrices and default sensitivity.\n\n");
+  printf("Param %s:\n", ODEModel_getVariableName(om, p));
+
+
+  CvodeSettings_setJacobian(set, 1);
+  CvodeSettings_unsetSensParams(set);
+  IntegratorInstance_reset(ii);  
+  i = 0;
+  while ( i < 10 ) {
+    /* IntegratorInstance_dumpPSensitivities(ii, p); */
+
+    j = 0;
+    while( !IntegratorInstance_timeCourseCompleted(ii) ) {
+      if ( !IntegratorInstance_integrateOneStep(ii) ) 
+	break;
+  
+      if ( SolverError_getNum(FATAL_ERROR_TYPE) )
+      {
+	printf("Integration not sucessful!\n");
+	SolverError_dumpAndClearErrors();
+	return(EXIT_FAILURE);
+      }
+      
+/*       IntegratorInstance_dumpPSensitivities(ii, p); */
+      j++;
+    }
+    /*  IntegratorInstance_dumpData(ii); */
+    IntegratorInstance_dumpPSensitivities(ii, p);
+
+    if(i==5 )
+    {
+      printf("\nNow again with internal approximation of matrices: \n\n"); 
+      /* deactivate matrices */
+      CvodeSettings_setJacobian(set, 0);
+      /*!!! BUG DOESNT WORK*/
+      ODEModel_freeJacobian(om);
+
+    }
+    IntegratorInstance_reset(ii);
+    i++;
+  }
+  
+  /*   VariableIndex_free(y); */
+  VariableIndex_free(p);
+  /* now we have the results and can free the inputs */
+  IntegratorInstance_free(ii);
+  CvodeSettings_free(set);
+  ODEModel_free(om);
+
+  return (EXIT_SUCCESS);  
+}
+
+
+
+/* End of file */
diff --git a/examples/simpleIntegratorInstance.c b/examples/simpleIntegratorInstance.c
new file mode 100644
index 0000000..121dfc4
--- /dev/null
+++ b/examples/simpleIntegratorInstance.c
@@ -0,0 +1,156 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-09-12 22:28:43 raim>
+  $Id: simpleIntegratorInstance.c,v 1.18 2008/09/22 10:30:26 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ *     Rainer Machne
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+
+#include <sbmlsolver/integratorInstance.h>
+#include <sbmlsolver/solverError.h>
+
+int doIt(void)
+{
+    int i ;
+    cvodeSettings_t *settings, *set2;
+    variableIndex_t *s1, *s2;
+    integratorInstance_t *integratorInstance;
+
+    odeModel_t *model =
+      ODEModel_createFromFile("basic-model1-forward-l2.xml");
+    
+    RETURN_ON_ERRORS_WITH(1)
+
+    s1 = ODEModel_getVariableIndex(model, "S1");
+    s2 = ODEModel_getVariableIndex(model, "S2");
+
+    /* Creating settings with default values */
+    settings = CvodeSettings_create();
+    
+    /* Setting end time to .1, number of time steps to 1 and NULL
+       instead of an optional predefined time series (double *); due
+       to Indefinitely == 1, Printstep 5 will be ignored and Time =
+       0.1 will be used as timestep for infinite integration */
+    CvodeSettings_setTime(settings, .1, 5);
+
+    /* Setting Cvode Parameters: absolute tolerance, relative
+       tolerance and maximal internal step, respectively */
+    CvodeSettings_setErrors(settings, 1e-20, 1e-14, 500);
+    
+    /* Setting Integration Switches */
+    CvodeSettings_setMethod(settings, 1, 12);
+    CvodeSettings_setJacobian(settings, 1);
+    CvodeSettings_setIndefinitely(settings, 1);
+    CvodeSettings_setHaltOnEvent(settings, 0);
+    CvodeSettings_setHaltOnSteadyState(settings, 0);
+    CvodeSettings_setStoreResults(settings, 0);
+    CvodeSettings_setSensitivity(settings, 0);
+
+    /* first integration run */
+    printf("\nFIRST INTEGRATION RUN WITH:\n");
+    CvodeSettings_dump(settings);
+    integratorInstance = IntegratorInstance_create(model, settings);
+    RETURN_ON_ERRORS_WITH(1);
+    IntegratorInstance_setInitialTime(integratorInstance, .05);
+    /* print variable (ODE, assignments) and constant names */
+    printf("#time  ");
+    IntegratorInstance_dumpNames(integratorInstance);
+    /* print initial conditions and parameters */
+    IntegratorInstance_dumpData(integratorInstance);
+    
+    for (i=0; i != 12; i++)
+    {
+        /* setting the next time step, uncomment the following
+	   function call to see its effect */
+     /* IntegratorInstance_setNextTimeStep(integratorInstance, 0.2*(i+1)); */
+
+        IntegratorInstance_integrateOneStep(integratorInstance);
+        RETURN_ON_ERRORS_WITH(1);
+	/* print current data */
+	IntegratorInstance_dumpData(integratorInstance);
+    }
+
+    /* now, let's try again, with different settings */
+
+    set2 = CvodeSettings_create();
+    /* as Indefinitely will be set to 0, a finite integration
+       to time 1.2 in 6 steps will be run */
+    CvodeSettings_setTime(set2, 1.2, 6);
+    CvodeSettings_setErrors(set2, 1e-16, 1e-14, 500);
+    /* switches can be set all together, same order as above */
+    CvodeSettings_setSwitches(set2, 1, 0, 0, 0, 0, 0, 0);
+    
+    printf("\nNOW, LET'S TRY AGAIN WITH DIFFERENT SETTINGS:\n");
+    CvodeSettings_dump(set2);
+    
+    IntegratorInstance_set(integratorInstance, set2);
+/*     IntegratorInstance_setInitialTime(integratorInstance, .5); */
+/*!!! TODO : should setInitialTime work here??*/
+    
+    IntegratorInstance_dumpData(integratorInstance);  
+
+    while( !IntegratorInstance_timeCourseCompleted(integratorInstance) ) {
+
+        IntegratorInstance_integrateOneStep(integratorInstance);
+        RETURN_ON_ERRORS_WITH(1);
+
+ 	IntegratorInstance_dumpData(integratorInstance);
+    }
+    
+    printf("\n\nFINISHED SUCCESSFULLY!\n");
+    printf("Please, note the different values e.g. at time 1.2.\n");
+    printf("The values for the first run a more exact, due to the much\n");
+    printf("lower error tolerances. The error tolerances have to be\n");
+    printf("adapted to the ranges of each model!!\n\n");
+
+    IntegratorInstance_free(integratorInstance);
+    ODEModel_free(model);
+    VariableIndex_free(s1);
+    VariableIndex_free(s2);
+    CvodeSettings_free(settings);
+    CvodeSettings_free(set2);
+    
+    return 0;
+}
+
+int main(void)
+{
+    int result = doIt();
+
+    SolverError_dump();
+
+    return result ;
+}
diff --git a/examples/testCompiler.c b/examples/testCompiler.c
new file mode 100644
index 0000000..3bac954
--- /dev/null
+++ b/examples/testCompiler.c
@@ -0,0 +1,178 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-03-10 16:35:43 raim>
+  $Id: testCompiler.c,v 1.7 2008/03/10 19:24:47 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/integratorInstance.h>
+#include <sbmlsolver/solverError.h>
+
+
+
+void DumpErrors()
+{
+  char *errors = SolverError_dumpToString();
+
+  fprintf(stderr, "%s", errors);
+  SolverError_freeDumpString(errors);
+  SolverError_clear();
+}
+
+int doit(int argc, char *argv[])
+{
+  cvodeSettings_t *settings = CvodeSettings_create();
+  integratorInstance_t *ii;
+  variableIndex_t *v1, *v2, *v3, *v4;
+  char *modelStr;
+  double endtime, relativeErrorTolerance,errorTolerance ;
+  int printsteps, maximumIntegrationSteps;
+  odeModel_t *model ;
+
+
+  int sensi = 0;
+  int nsens = 4;
+  char *sensIDs[nsens];
+    
+  sensIDs[0] = "MAPK_PP";
+  sensIDs[1] = "V1";
+  sensIDs[2] = "MAPK_P";
+  sensIDs[3] = "uVol";
+
+        
+  if (argc < 3)
+  {
+    fprintf(
+            stderr,
+            "usage %s sbml-model-file end-time print-steps\n",
+            argv[0]);
+
+    exit(0);
+  }
+
+  modelStr = argv[1];
+  endtime = atoi(argv[2]);
+  printsteps = atof(argv[3]);
+
+  errorTolerance = 1e-20;
+  relativeErrorTolerance = 1e-10;
+  maximumIntegrationSteps = 50000;
+
+  model = ODEModel_createFromFile(modelStr);
+  RETURN_ON_ERRORS_WITH(1);
+
+  v1 = ODEModel_getVariableIndex(model, sensIDs[0]);
+  v2 = ODEModel_getVariableIndex(model, sensIDs[1]);
+  v3 = ODEModel_getVariableIndex(model, sensIDs[2]);
+  v4 = ODEModel_getVariableIndex(model, sensIDs[3]);
+
+    
+  CvodeSettings_setTime(settings, endtime, printsteps);
+  CvodeSettings_setError(settings, errorTolerance);    
+  CvodeSettings_setRError(settings, relativeErrorTolerance);
+  CvodeSettings_setMxstep(settings, maximumIntegrationSteps);     
+  CvodeSettings_setJacobian(settings, 1);
+  CvodeSettings_setStoreResults(settings, 0);
+  CvodeSettings_setSensitivity(settings, 1);
+
+  if (sensi)
+  {
+    CvodeSettings_setSensitivity(settings, 1);
+    CvodeSettings_setSensParams (settings,sensIDs, nsens );
+  }
+    
+  CvodeSettings_setCompileFunctions(settings, 0); /* don't compile model */ 
+  ii = IntegratorInstance_create(model, settings);
+
+  printf("\n\nINTEGRATE WITHOUT COMPILATION \n");
+  IntegratorInstance_integrate(ii);
+  IntegratorInstance_dumpData(ii);
+
+  IntegratorInstance_dumpPSensitivities(ii, v1);
+  IntegratorInstance_dumpPSensitivities(ii, v2);
+  IntegratorInstance_dumpPSensitivities(ii, v3);
+  IntegratorInstance_dumpPSensitivities(ii, v4);
+  
+    
+  DumpErrors();
+  printf("Integration time was %g\n",
+	 IntegratorInstance_getIntegrationTime(ii));
+
+  /* testing combinations of difference quotient and exact calculation
+   of jacobian and parametric matrices */
+  CvodeSettings_setJacobian(settings, 1);
+  /* CvodeSettings_setSensitivity(settings, 1); */
+  /*!!! sensitivity can't be switched off! but compilation is??? */
+
+  CvodeSettings_setCompileFunctions(settings, 1); /* compile model */
+  
+  IntegratorInstance_reset(ii);
+    
+  printf("\n\nAGAIN WITH COMPILATION \n");
+  IntegratorInstance_integrate(ii);
+  IntegratorInstance_dumpData(ii);
+
+  IntegratorInstance_dumpPSensitivities(ii, v1);
+  IntegratorInstance_dumpPSensitivities(ii, v2);
+  IntegratorInstance_dumpPSensitivities(ii, v3);
+  IntegratorInstance_dumpPSensitivities(ii, v4);
+
+
+  DumpErrors();
+  printf("FINISHED WITH SAME RESULTS??\n");
+  printf("Integration time was %g\n",
+	 IntegratorInstance_getIntegrationTime(ii));
+
+  VariableIndex_free(v1);
+  VariableIndex_free(v2);
+  VariableIndex_free(v3);
+  VariableIndex_free(v4);
+  IntegratorInstance_free(ii);
+  ODEModel_free(model);
+  CvodeSettings_free(settings);
+
+  return 0;
+}
+
+int main (int argc, char *argv[])
+{
+  int result = doit(argc, argv);
+  DumpErrors();
+
+  return result;
+}
diff --git a/examples/testrun b/examples/testrun
new file mode 100755
index 0000000..da71c2e
--- /dev/null
+++ b/examples/testrun
@@ -0,0 +1,32 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+./ASTIndexTest
+sleep 1
+./printODEs
+sleep 1
+./integrate MAPK.xml 1000 100
+sleep 1
+./batchIntegrate MAPK.xml 1000 2 1 10 5 V1 1 10 10 k4 J3
+sleep 1
+./defSeries MAPK.xml
+sleep 1
+./simpleIntInst
+sleep 1
+./changeIntInst
+sleep 1
+./analyzeJacobian
+sleep 1
+./analyzeSens
+sleep 1
+./sensitivity
+sleep 1
+./adj_sensitivity repressilator.xml  repressilator.objfun repressilator_data.txt
+sleep 1
+./ParameterScanner MAPK.xml 200 50 Ki 0 15 5 MAPK_PP 
+sleep 1
+./Sense MAPK.xml 200 7.5 p Ki MKKK_P MAPK_PP 
+sleep 1
+./adjsenstest
+sleep 1
+./adjsenstest_ContDiscData
+sleep 1
+./senstest
diff --git a/examples/testrun.out b/examples/testrun.out
new file mode 100644
index 0000000..db54c64
--- /dev/null
+++ b/examples/testrun.out
@@ -0,0 +1,1900 @@
+index of A is 0
+index of B is 1
+top : A * B
+
+
+ODE Model Statistics:
+Number of ODEs:               2
+Number of Assignments:        2
+Number of Constants:          1
+                            ____
+Total number of values:       5
+
+ODEs:
+d[S1]/dt = (R2 - R1) / c 
+d[S2]/dt = (R1 - R2) / c 
+Assigned Variables:
+R1 = 1 * S1 
+R2 = 0 * S2 
+Constants:
+c
+
+
+### RESULTS 
+### Printing All Results 
+## Printing Variable Compartment time courses
+## No Values.
+## Printing Species time courses
+#time MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP 
+0 90 10 280 10 10 280 10 10 
+10 80.7166 19.2834 279.659 11.6577 8.68326 279.877 11.1066 9.01599 
+20 71.2643 28.7357 277.407 13.8808 8.71222 280.008 11.8598 8.13187 
+30 61.6258 38.3742 273.231 16.6905 10.0787 280.046 12.489 7.4653 
+40 51.9807 48.0193 267.12 20.0767 12.8032 279.663 13.1975 7.13937 
+50 42.6668 57.3332 259.106 23.9648 16.9288 278.547 14.1718 7.28154 
+60 34.1329 65.8671 249.303 28.219 22.4779 276.387 15.5759 8.03726 
+70 26.8282 73.1718 237.925 32.673 29.4015 272.883 17.5329 9.58446 
+80 21.0639 78.9361 225.281 37.1632 37.5556 267.753 20.1067 12.1399 
+90 16.912 83.088 211.728 41.5524 46.7198 260.755 23.2934 15.9518 
+100 14.209 85.791 197.615 45.741 56.6437 251.691 27.028 21.2812 
+110 12.6627 87.3373 183.242 49.6669 67.0916 240.418 31.2039 28.3778 
+120 11.9752 88.0248 168.838 53.2952 77.8669 226.847 35.6941 37.4593 
+130 11.9025 88.0975 154.575 56.6081 88.8166 210.935 40.3657 48.6997 
+140 12.2722 87.7278 140.581 59.5964 99.8229 192.687 45.0875 62.225 
+150 12.9693 87.0307 126.954 62.2535 110.793 172.159 49.7275 78.1134 
+160 13.9136 86.0864 113.776 64.5696 121.655 149.463 54.137 96.4002 
+170 15.0464 84.9536 101.119 66.531 132.35 124.794 58.1242 117.082 
+180 16.327 83.673 89.048 68.1221 142.83 98.4838 61.4021 140.114 
+190 17.7272 82.2728 77.6283 69.3216 153.05 71.135 63.4644 165.401 
+200 19.2249 80.7751 66.927 70.0978 162.975 43.9906 63.2524 192.757 
+210 20.8022 79.1978 57.0153 70.4125 172.572 19.948 58.2596 221.792 
+220 22.4438 77.5562 47.9675 70.2228 181.81 5.26601 43.3359 251.398 
+230 24.1335 75.8665 39.8601 69.4809 190.659 1.45787 20.5235 278.019 
+240 25.8504 74.1496 32.7647 68.142 199.093 0.60959 5.4476 293.943 
+250 27.5686 72.4314 26.7356 66.176 207.088 0.221778 1.94841 297.83 
+260 29.2754 70.7246 21.7929 63.5845 214.623 0.138429 1.52105 298.341 
+270 30.9691 69.0309 17.907 60.42 221.673 0.121637 1.43216 298.446 
+280 32.6499 67.3501 14.9869 56.7967 228.216 0.113548 1.38174 298.505 
+290 34.3181 65.6819 12.8878 52.8814 234.231 0.1073 1.34087 298.552 
+300 35.9741 64.0259 11.4363 48.8658 239.698 0.1021 1.30576 298.592 
+310 37.6181 62.3819 10.4627 44.9319 244.605 0.0977342 1.27525 298.627 
+320 39.2502 60.7498 9.82348 41.2277 248.949 0.0940957 1.24981 298.656 
+330 40.8706 59.1294 9.41055 37.8569 252.733 0.0910575 1.22835 298.681 
+340 42.4793 57.5207 9.14917 34.8809 255.97 0.088575 1.21083 298.701 
+350 44.0763 55.9237 8.99134 32.3254 258.683 0.0865467 1.19615 298.717 
+360 45.6616 54.3384 8.90852 30.1892 260.902 0.0849479 1.18437 298.731 
+370 47.235 52.765 8.88536 28.4527 262.662 0.0836878 1.17523 298.741 
+380 48.7964 51.2036 8.91489 27.0843 264.001 0.0827465 1.16793 298.749 
+390 50.3457 49.6543 8.99514 26.0469 264.958 0.0820237 1.1629 298.755 
+400 51.8827 48.1173 9.12685 25.302 265.571 0.0815955 1.15902 298.759 
+410 53.407 46.593 9.31204 24.8128 265.875 0.0812996 1.15776 298.761 
+420 54.9183 45.0817 9.55322 24.5458 265.901 0.0812354 1.15696 298.762 
+430 56.4163 43.5837 9.85309 24.4717 265.675 0.0813329 1.15793 298.761 
+440 57.9007 42.0993 10.2144 24.5657 265.22 0.0815619 1.15975 298.759 
+450 59.3709 40.6291 10.6401 24.8071 264.553 0.0819101 1.1626 298.755 
+460 60.8266 39.1734 11.1331 25.1784 263.689 0.082403 1.16636 298.751 
+470 62.267 37.733 11.697 25.6654 262.638 0.0830249 1.1711 298.746 
+480 63.6918 36.3082 12.3354 26.2561 261.409 0.0837672 1.17677 298.739 
+490 65.1002 34.8998 13.0525 26.9406 260.007 0.0846309 1.18333 298.732 
+500 66.4916 33.5084 13.853 27.7103 258.437 0.0856191 1.19083 298.724 
+510 67.8651 32.1349 14.7421 28.5575 256.7 0.0867394 1.19923 298.714 
+520 69.2201 30.7799 15.7253 29.4753 254.799 0.087993 1.20858 298.703 
+530 70.5555 29.4445 16.8085 30.4576 252.734 0.0893904 1.21894 298.692 
+540 71.8705 28.1295 17.9981 31.498 250.504 0.0909402 1.23034 298.679 
+550 73.1641 26.8359 19.3003 32.5903 248.109 0.0926457 1.24284 298.665 
+560 74.4351 25.5649 20.7218 33.7288 245.549 0.094524 1.2565 298.649 
+570 75.6825 24.3175 22.2695 34.9081 242.822 0.0966081 1.27135 298.632 
+580 76.9049 23.0951 23.95 36.1222 239.928 0.0988934 1.28753 298.614 
+590 78.1011 21.8989 25.7697 37.3654 236.865 0.101401 1.30512 298.593 
+600 79.2697 20.7303 27.7345 38.6316 233.634 0.104141 1.32423 298.572 
+610 80.4092 19.5908 29.8495 39.9148 230.236 0.107145 1.34494 298.548 
+620 81.5181 18.4819 32.1196 41.2092 226.671 0.110446 1.36734 298.522 
+630 82.5948 17.4052 34.5485 42.5092 222.942 0.114081 1.39155 298.494 
+640 83.6377 16.3623 37.1397 43.8095 219.051 0.118068 1.41777 298.464 
+650 84.6451 15.3549 39.8954 45.1052 214.999 0.122433 1.44619 298.431 
+660 85.6153 14.3847 42.8168 46.3914 210.792 0.127204 1.47703 298.396 
+670 86.5468 13.4532 45.9041 47.6637 206.432 0.132456 1.51034 298.357 
+680 87.4379 12.5621 49.156 48.918 201.926 0.138262 1.54623 298.316 
+690 88.287 11.713 52.5706 50.1509 197.278 0.144696 1.58487 298.27 
+700 89.0928 10.9072 56.1448 51.359 192.496 0.151763 1.62684 298.221 
+710 89.8541 10.1459 59.8745 52.5394 187.586 0.15951 1.6726 298.168 
+720 90.5699 9.43009 63.7548 53.6894 182.556 0.168093 1.72225 298.11 
+730 91.2395 8.76052 67.7798 54.807 177.413 0.177652 1.77591 298.046 
+740 91.8625 8.13753 71.9429 55.8901 172.167 0.188334 1.83368 297.978 
+750 92.4389 7.56115 76.2367 56.9371 166.826 0.200115 1.89649 297.903 
+760 92.969 7.03098 80.6536 57.9466 161.4 0.213182 1.96512 297.822 
+770 93.4538 6.54622 85.1853 58.9173 155.897 0.227732 2.04052 297.732 
+780 93.8943 6.10567 89.8237 59.8478 150.328 0.244203 2.1226 297.633 
+790 94.2923 5.70769 94.5604 60.737 144.703 0.262836 2.21145 297.526 
+800 94.6497 5.35034 99.3871 61.5838 139.029 0.283593 2.30791 297.408 
+810 94.9686 5.03137 104.295 62.387 133.318 0.306739 2.41476 297.278 
+820 95.2517 4.74828 109.278 63.1451 127.577 0.333658 2.53329 297.133 
+830 95.5016 4.49843 114.326 63.8568 121.817 0.364234 2.66238 296.973 
+840 95.7209 4.27908 119.434 64.5202 116.046 0.398166 2.80562 296.796 
+850 95.9125 4.08747 124.594 65.1334 110.273 0.438222 2.96527 296.597 
+860 96.0791 3.9209 129.8 65.694 104.506 0.483979 3.14057 296.375 
+870 96.2232 3.77676 135.046 66.1993 98.7546 0.536628 3.33905 296.124 
+880 96.3474 3.65259 140.327 66.6459 93.0266 0.599084 3.55665 295.844 
+890 96.4539 3.5461 145.639 67.03 87.3311 0.670096 3.80538 295.525 
+900 96.5448 3.4552 150.976 67.3471 81.6773 0.754931 4.08417 295.161 
+910 96.622 3.37799 156.334 67.5917 76.0747 0.854734 4.39998 294.745 
+920 96.6872 3.31278 161.709 67.7574 70.5336 0.973449 4.75804 294.269 
+930 96.7419 3.2581 167.098 67.8368 65.0653 1.11532 5.16568 293.719 
+940 96.7874 3.21265 172.497 67.821 59.6823 1.28568 5.63107 293.083 
+950 96.8247 3.17532 177.902 67.6993 54.3984 1.49146 6.16349 292.345 
+960 96.8548 3.14519 183.311 67.4595 49.2298 1.74128 6.77307 291.486 
+970 96.8785 3.12151 188.719 67.0867 44.1946 2.04588 7.47047 290.484 
+980 96.8964 3.10364 194.123 66.5633 39.3142 2.41861 8.26669 289.315 
+990 96.9089 3.09114 199.518 65.8689 34.613 2.87563 9.17229 287.952 
+1000 96.9163 3.08366 204.901 64.9797 30.1194 3.43624 10.1954 286.368 
+## Printing Variable Parameter time courses
+## No Values.
+## Printing Reaction Flux time courses
+#time J0 J1 J2 J3 J4 J5 J6 J7 J8 J9 
+0 1.06579 0.138889 0.237288 0.1 0.3 0.3 0.237288 0.1 0.2 0.2 
+10 1.11122 0.176695 0.457544 0.210822 0.274981 0.327984 0.206039 0.0923534 0.187708 0.212716 
+20 1.15173 0.195557 0.68154 0.345277 0.275561 0.360468 0.206731 0.0961711 0.175772 0.220773 
+30 1.17573 0.206873 0.909429 0.505265 0.301413 0.395004 0.239158 0.114476 0.166152 0.227163 
+40 1.16918 0.214298 1.13665 0.687115 0.345371 0.429274 0.303787 0.14981 0.161237 0.234019 
+50 1.11954 0.219388 1.35489 0.881551 0.397653 0.461278 0.401593 0.205602 0.163399 0.242903 
+60 1.02139 0.222924 1.55322 1.07516 0.449823 0.489698 0.53302 0.286266 0.17444 0.254709 
+70 0.881949 0.225361 1.72081 1.25372 0.49663 0.514017 0.69674 0.396133 0.194929 0.269464 
+80 0.721711 0.226995 1.85021 1.40593 0.535941 0.534331 0.889083 0.537732 0.223654 0.286366 
+90 0.566669 0.228043 1.93977 1.52624 0.567725 0.551069 1.10446 0.710477 0.257688 0.304144 
+100 0.43611 0.228676 1.99346 1.61512 0.592973 0.564787 1.33645 0.910682 0.293282 0.321547 
+110 0.336343 0.229022 2.01822 1.67697 0.612958 0.576031 1.57879 1.13276 0.327101 0.337676 
+120 0.263912 0.229172 2.02106 1.71729 0.628859 0.585274 1.82593 1.37067 0.357032 0.352054 
+130 0.211911 0.229188 2.00762 1.74108 0.641636 0.592895 2.073 1.61885 0.38226 0.364537 
+140 0.174064 0.229107 1.98174 1.75218 0.652023 0.599188 2.31533 1.87259 0.402881 0.375182 
+150 0.145837 0.228954 1.94586 1.75331 0.660567 0.604376 2.54783 2.12794 0.419453 0.38413 
+160 0.124204 0.228743 1.90147 1.74645 0.667676 0.608614 2.76398 2.38151 0.432675 0.39152 
+170 0.107205 0.228484 1.84949 1.7331 0.673651 0.612016 2.95373 2.63003 0.443217 0.397435 
+180 0.0935769 0.228183 1.79026 1.71434 0.678721 0.614657 3.09877 2.8697 0.451649 0.401835 
+190 0.0824838 0.227845 1.72374 1.69093 0.683056 0.616582 3.15993 3.09479 0.458426 0.404415 
+200 0.0733609 0.227471 1.64965 1.66343 0.686789 0.617799 3.03835 3.29337 0.4639 0.404156 
+210 0.0658398 0.227064 1.56754 1.63223 0.690023 0.618286 2.46257 3.43095 0.468327 0.397624 
+220 0.0597736 0.226624 1.47702 1.59764 0.692838 0.617993 1.18106 3.37652 0.471847 0.371434 
+230 0.0554258 0.226153 1.37807 1.5599 0.695298 0.616834 0.422223 2.7538 0.474404 0.288872 
+240 0.0535544 0.225654 1.27159 1.5193 0.697453 0.614689 0.194376 1.32605 0.475724 0.133209 
+250 0.0538114 0.225134 1.15998 1.47618 0.699345 0.611412 0.0754307 0.595179 0.476025 0.0574806 
+260 0.0545689 0.224595 1.04728 1.43062 0.701007 0.606842 0.0490639 0.493994 0.476064 0.0460337 
+270 0.0553204 0.224036 0.939113 1.38254 0.702466 0.600835 0.0445779 0.483004 0.476072 0.0435781 
+280 0.0560137 0.223457 0.841509 1.33198 0.703745 0.593308 0.0428646 0.481231 0.476077 0.0421732 
+290 0.0566508 0.222856 0.75884 1.2792 0.704861 0.58427 0.0415909 0.480501 0.476081 0.041028 
+300 0.0572379 0.222232 0.692439 1.22471 0.70583 0.573849 0.0405129 0.479873 0.476084 0.0400399 
+310 0.0577807 0.221584 0.640823 1.16922 0.706665 0.562287 0.0395859 0.479152 0.476086 0.0391776 
+320 0.0582842 0.220909 0.601018 1.11359 0.707378 0.549921 0.0387983 0.478681 0.476088 0.0384562 
+330 0.0587525 0.220207 0.569877 1.05873 0.70798 0.537161 0.0381239 0.478242 0.47609 0.0378457 
+340 0.0591893 0.219475 0.544809 1.00558 0.708482 0.524463 0.0375657 0.477979 0.476092 0.0373465 
+350 0.0595976 0.218713 0.52397 0.954961 0.708894 0.512284 0.0370996 0.477621 0.476093 0.0369271 
+360 0.0599801 0.217917 0.506174 0.907537 0.709225 0.501047 0.0367305 0.477321 0.476094 0.03659 
+370 0.0603392 0.217086 0.490715 0.863759 0.709483 0.491098 0.0364327 0.477101 0.476095 0.0363282 
+380 0.0606768 0.216218 0.477186 0.82383 0.709678 0.482679 0.0362088 0.476768 0.476096 0.0361187 
+390 0.0609949 0.21531 0.465352 0.787721 0.709815 0.475923 0.0360244 0.476584 0.476096 0.0359743 
+400 0.0612949 0.21436 0.455053 0.755214 0.709903 0.470858 0.0359203 0.476209 0.476096 0.035863 
+410 0.0615786 0.213365 0.446154 0.725962 0.709947 0.467428 0.0358317 0.476271 0.476096 0.0358267 
+420 0.0618469 0.212322 0.438512 0.699547 0.70995 0.465519 0.035807 0.476012 0.476097 0.0358037 
+430 0.0621011 0.211228 0.431972 0.675526 0.709918 0.464986 0.0358193 0.47598 0.476096 0.0358317 
+440 0.0623421 0.210079 0.426363 0.65347 0.709853 0.465663 0.0358581 0.475855 0.476096 0.0358838 
+450 0.062571 0.208872 0.421505 0.632983 0.709757 0.467387 0.0359198 0.475742 0.476096 0.0359657 
+460 0.0627885 0.207603 0.417213 0.613715 0.709632 0.469999 0.0360167 0.475611 0.476096 0.0360737 
+470 0.0629953 0.206268 0.413307 0.595365 0.70948 0.473352 0.0361424 0.475503 0.476095 0.0362098 
+480 0.0631922 0.204862 0.409611 0.577679 0.709299 0.477313 0.0362931 0.475401 0.476095 0.0363723 
+490 0.0633798 0.20338 0.405962 0.560448 0.709092 0.481764 0.0364686 0.475295 0.476094 0.0365602 
+500 0.0635587 0.201817 0.402205 0.543504 0.708857 0.486597 0.0366692 0.475198 0.476094 0.0367748 
+510 0.0637293 0.200168 0.398203 0.526713 0.708594 0.49172 0.0368967 0.475088 0.476093 0.037015 
+520 0.0638921 0.198427 0.393832 0.509973 0.708302 0.497051 0.0371497 0.474974 0.476092 0.0372822 
+530 0.0640475 0.196588 0.388983 0.493211 0.707981 0.502516 0.0374303 0.474858 0.476091 0.0375777 
+540 0.064196 0.194644 0.383565 0.476376 0.707628 0.508054 0.0377393 0.474735 0.47609 0.0379024 
+550 0.064338 0.192588 0.377504 0.459437 0.707242 0.513608 0.0380753 0.474609 0.476089 0.038258 
+560 0.0644736 0.190414 0.370747 0.442383 0.706822 0.51913 0.0384416 0.474475 0.476088 0.038646 
+570 0.0646032 0.188114 0.363259 0.425221 0.706365 0.524586 0.0388475 0.474319 0.476087 0.0390671 
+580 0.0647272 0.185681 0.355024 0.407966 0.70587 0.529939 0.0392864 0.474157 0.476085 0.039525 
+590 0.0648457 0.183108 0.346046 0.39065 0.705333 0.535164 0.0397617 0.473987 0.476084 0.0400217 
+600 0.064959 0.180387 0.336347 0.373309 0.704753 0.540236 0.0402717 0.473813 0.476082 0.0405603 
+610 0.0650673 0.177512 0.325966 0.35599 0.704126 0.545137 0.0408228 0.473622 0.47608 0.0411424 
+620 0.0651708 0.174477 0.31496 0.338746 0.703449 0.549855 0.0414197 0.473408 0.476078 0.0417705 
+630 0.0652697 0.171276 0.303402 0.321636 0.70272 0.554379 0.0420693 0.473164 0.476076 0.0424472 
+640 0.0653641 0.167906 0.291377 0.304724 0.701934 0.558705 0.0427683 0.472907 0.476074 0.0431778 
+650 0.0654543 0.164365 0.278981 0.288073 0.701087 0.562828 0.0435166 0.472648 0.476071 0.0439674 
+660 0.0655403 0.160653 0.266318 0.27175 0.700175 0.56675 0.0443135 0.472393 0.476069 0.0448208 
+670 0.0656224 0.156774 0.253496 0.255822 0.699194 0.57047 0.0451729 0.472102 0.476066 0.0457391 
+680 0.0657007 0.152734 0.240626 0.240353 0.698139 0.573993 0.046106 0.471745 0.476062 0.0467245 
+690 0.0657752 0.148544 0.227821 0.225407 0.697004 0.577324 0.0471213 0.471304 0.476059 0.0477806 
+700 0.0658463 0.14422 0.215188 0.211042 0.695782 0.580468 0.048202 0.470865 0.476055 0.048922 
+710 0.0659142 0.139782 0.202833 0.197314 0.694468 0.583431 0.049345 0.470467 0.476051 0.0501601 
+720 0.0659789 0.135256 0.19085 0.18427 0.693054 0.586219 0.0505773 0.470044 0.476047 0.0514959 
+730 0.0660407 0.130672 0.179327 0.171952 0.691532 0.588841 0.051915 0.469527 0.476042 0.0529303 
+740 0.0660997 0.126065 0.16834 0.160392 0.689893 0.591304 0.0533714 0.468851 0.476037 0.0544646 
+750 0.0661562 0.121475 0.157951 0.149613 0.688128 0.593613 0.0549082 0.468122 0.476031 0.0561209 
+760 0.0662107 0.116941 0.14821 0.13963 0.686224 0.595778 0.0565422 0.467385 0.476025 0.0579165 
+770 0.0662635 0.112507 0.139153 0.130445 0.684171 0.597803 0.0582863 0.466699 0.476018 0.0598726 
+780 0.0663149 0.108213 0.130799 0.122051 0.681954 0.599695 0.0602042 0.465885 0.47601 0.0619823 
+790 0.0663651 0.104097 0.123156 0.114432 0.679557 0.60146 0.0622969 0.46481 0.476002 0.0642435 
+800 0.0664145 0.100191 0.116218 0.10756 0.676962 0.603102 0.0644935 0.463469 0.475993 0.0666722 
+810 0.066464 0.0965242 0.109968 0.101403 0.674149 0.604627 0.0667903 0.462152 0.475983 0.0693309 
+820 0.0665144 0.0931161 0.104379 0.0959211 0.671095 0.606037 0.0694015 0.460823 0.475972 0.0722422 
+830 0.0665657 0.0899799 0.0994169 0.0910687 0.667773 0.607336 0.0721969 0.459059 0.475959 0.0753686 
+840 0.0666187 0.0871213 0.0950405 0.0867977 0.664152 0.608526 0.0750181 0.457132 0.475946 0.0787846 
+850 0.0666749 0.0845394 0.0912062 0.0830586 0.660196 0.609609 0.0782538 0.455029 0.47593 0.0825278 
+860 0.0667341 0.0822274 0.0878681 0.0798013 0.655863 0.610584 0.0816631 0.452313 0.475913 0.086562 
+870 0.0667984 0.0801739 0.0849799 0.0769768 0.651103 0.611452 0.0852734 0.449514 0.475894 0.0910366 
+880 0.0668679 0.0783643 0.0824964 0.0745383 0.645859 0.61221 0.0893173 0.445747 0.475872 0.0958321 
+890 0.066945 0.0767813 0.0803743 0.0724415 0.640063 0.612855 0.093363 0.441799 0.475847 0.101178 
+900 0.067031 0.0754067 0.0785734 0.0706453 0.633633 0.613383 0.0978435 0.43699 0.475819 0.107004 
+910 0.0671278 0.074222 0.0770562 0.0691122 0.626475 0.613788 0.10253 0.43135 0.475787 0.113402 
+920 0.0672375 0.0732088 0.0757894 0.0678083 0.618473 0.614061 0.107461 0.424639 0.475749 0.120408 
+930 0.0673632 0.0723501 0.074743 0.0667032 0.60949 0.614191 0.112577 0.416681 0.475706 0.128081 
+940 0.0675079 0.07163 0.0738908 0.0657698 0.599362 0.614165 0.117791 0.407244 0.475656 0.136471 
+950 0.0676757 0.0710342 0.0732102 0.0649845 0.587893 0.613965 0.122993 0.396064 0.475597 0.145616 
+960 0.0678713 0.0705505 0.0726824 0.0643265 0.574848 0.613569 0.128011 0.382855 0.475529 0.155538 
+970 0.0680999 0.0701683 0.0722917 0.0637776 0.559949 0.61295 0.132608 0.36732 0.475449 0.166229 
+980 0.0683679 0.069879 0.0720256 0.0633216 0.542872 0.61207 0.136471 0.349209 0.475354 0.177651 
+990 0.0686825 0.0696759 0.0718749 0.0629445 0.523245 0.610886 0.139204 0.328352 0.475244 0.189727 
+1000 0.0690512 0.0695542 0.0718328 0.0626331 0.500662 0.609339 0.140345 0.304699 0.475114 0.202327 
+## Printing Species time courses
+#time MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP 
+0 90 10 280 10 10 280 10 10 
+0.5 89.5367 10.4633 280.029 10.0694 9.90171 279.982 10.0678 9.95 
+1 89.0736 10.9264 280.053 10.1402 9.80684 279.966 10.1341 9.90002 
+4 86.2964 13.7036 280.096 10.5951 9.30931 279.898 10.5014 9.60098 
+9 81.6517 18.3483 279.782 11.4656 8.75197 279.874 11.0149 9.11091 
+16 75.0723 24.9277 278.541 12.9208 8.53802 279.952 11.5834 8.46472 
+25 66.4598 33.5402 275.564 15.2102 9.2258 280.064 12.1744 7.76191 
+
+FIRST INTEGRATION RUN WITH:
+
+SOSlib INTEGRATION SETTINGS
+1) CVODE SPECIFIC SETTINGS:
+absolute error tolerance for each output time:   1e-20
+relative error tolerance for each output time:   1e-14
+max. nr. of steps to reach next output time:     500
+Nonlinear solver method:                         1: ADAMS-MOULTON
+          Maximum Order:                         12
+Iteration method:                                0: NEWTON
+Sensitivity:                                     0: no
+     method:                                     0: simultaneous
+2) SOSlib SPECIFIC SETTINGS:
+Jacobian matrix: 1: generate Jacobian
+Indefinitely:    1: infinite integration
+Event Handling:  0: keep integrating
+Steady States:   0: keep integrating
+Steady state threshold: 1e-11
+Store Results:   0: don't store results
+3) TIME SETTINGS:
+Infinite integration with time step 0.1
+
+#time  S1 S2 R1 R2 c 
+0.05  1.5e-15 1.5e-15 1.5e-15 0 1 
+0.1  1.42685e-15 1.57315e-15 1.3905e-15 0 1 
+0.2  1.29107e-15 1.70893e-15 1.24547e-15 0 1 
+0.3  1.16821e-15 1.83179e-15 1.15887e-15 0 1 
+0.4  1.05704e-15 1.94296e-15 1.00721e-15 0 1 
+0.5  9.56446e-16 2.04355e-15 8.75411e-16 0 1 
+0.6  8.65427e-16 2.13457e-15 7.60848e-16 0 1 
+0.7  7.83069e-16 2.21693e-15 7.60848e-16 0 1 
+0.8  7.0855e-16 2.29145e-15 6.61276e-16 0 1 
+0.9  6.41121e-16 2.35888e-15 5.74732e-16 0 1 
+1  5.8011e-16 2.41989e-15 5.74732e-16 0 1 
+1.1  5.24904e-16 2.4751e-15 4.99515e-16 0 1 
+1.2  4.74952e-16 2.52505e-15 4.34142e-16 0 1 
+
+NOW, LET'S TRY AGAIN WITH DIFFERENT SETTINGS:
+
+SOSlib INTEGRATION SETTINGS
+1) CVODE SPECIFIC SETTINGS:
+absolute error tolerance for each output time:   1e-16
+relative error tolerance for each output time:   1e-14
+max. nr. of steps to reach next output time:     500
+Nonlinear solver method:                         0: BDF
+          Maximum Order:                         5
+Iteration method:                                0: NEWTON
+Sensitivity:                                     0: no
+     method:                                     0: simultaneous
+2) SOSlib SPECIFIC SETTINGS:
+Jacobian matrix: 1: generate Jacobian
+Indefinitely:    0: finite integration
+Event Handling:  0: keep integrating
+Steady States:   0: keep integrating
+Steady state threshold: 1e-11
+Store Results:   0: don't store results
+3) TIME SETTINGS:
+endtime: 1.2
+steps:   6
+
+0  1.5e-15 1.5e-15 1.5e-15 0 1 
+0.2  1.22919e-15 1.77081e-15 8.9691e-16 0 1 
+0.4  1.00169e-15 1.99831e-15 8.9691e-16 0 1 
+0.6  8.18483e-16 2.18152e-15 6.1341e-16 0 1 
+0.8  6.67153e-16 2.33285e-15 6.1341e-16 0 1 
+1  5.44887e-16 2.45511e-15 3.91963e-16 0 1 
+1.2  4.44381e-16 2.55562e-15 3.91963e-16 0 1 
+
+
+FINISHED SUCCESSFULLY!
+Please, note the different values e.g. at time 1.2.
+The values for the first run a more exact, due to the much
+lower error tolerances. The error tolerances have to be
+adapted to the ranges of each model!!
+
+ 0 1.5e-15 1.5e-15 1.5e-15 1.5e-15
+ 0.1 1.35782e-15 1.64218e-15 1.35782e-15 1.64218e-15
+ 0.2 1.22853e-15 1.77147e-15 1.22853e-15 1.77147e-15
+ 0.3 1.11115e-15 1.88885e-15 1.11115e-15 1.88885e-15
+ 0.4 1.0049e-15 1.9951e-15 1.0049e-15 1.9951e-15
+ 0.5 9.08806e-16 2.09119e-15 1.5e-15 1.5e-15
+ 0.6 8.21917e-16 2.17808e-15 1.5e-15 1.5e-15
+ 0.7 7.43196e-16 2.2568e-15 1.5e-15 1.5e-15
+ 0.8 6.72259e-16 2.32774e-15 1.5e-15 1.5e-15
+ 0.9 6.08132e-16 2.39187e-15 1.5e-15 1.5e-15
+ 1 5.50247e-16 2.44975e-15 1.5e-15 1.5e-15
+ 1.1 4.97953e-16 2.50205e-15 1.5e-15 1.5e-15
+ 1.2 4.50739e-16 2.54926e-15 1.5e-15 1.5e-15
+ 1.3 4.08331e-16 2.59167e-15 1.5e-15 1.5e-15
+ 1.4 3.69986e-16 2.63001e-15 1.5e-15 1.5e-15
+ 1.5 3.35099e-16 2.6649e-15 1.5e-15 1.5e-15
+ 1.6 3.03473e-16 2.69653e-15 1.5e-15 1.5e-15
+ 1.7 2.74823e-16 2.72518e-15 1.5e-15 1.5e-15
+ 1.8 2.48789e-16 2.75121e-15 1.5e-15 1.5e-15
+ 1.9 2.25245e-16 2.77476e-15 1.5e-15 1.5e-15
+ 2 2.03868e-16 2.79613e-15 1.5e-15 1.5e-15
+ 2.1 1.84549e-16 2.81545e-15 1.5e-15 1.5e-15
+ 2.2 1.67028e-16 2.83297e-15 1.5e-15 1.5e-15
+ 2.3 1.51188e-16 2.84881e-15 1.5e-15 1.5e-15
+ 2.4 1.36844e-16 2.86316e-15 1.5e-15 1.5e-15
+ 2.5 1.23859e-16 2.87614e-15 1.5e-15 1.5e-15
+ 2.6 1.12117e-16 2.88788e-15 1.5e-15 1.5e-15
+ 2.7 1.0148e-16 2.89852e-15 1.5e-15 1.5e-15
+ 2.8 9.18948e-17 2.90811e-15 1.35782e-15 1.64218e-15
+ 2.9 8.32257e-17 2.91677e-15 1.22853e-15 1.77147e-15
+ 3 7.53616e-17 2.92464e-15 1.11115e-15 1.88885e-15
+
+
+Successfully constructed the jacobian matrix J
+
+We might be interested in the `sparsity' of J,
+... we can just evaluate the jacobian entries:
+
+Jacobian with initial conditions:
+i\j 0   1   2   3   4   5   6   7   
+0   -   +   0   0   0   0   0   +   
+
+1   +   -   0   0   0   0   0   -   
+
+2   0   -   -   +   0   0   0   0   
+
+3   0   +   +   -   +   0   0   0   
+
+4   0   +   0   +   -   0   0   0   
+
+5   0   0   0   0   -   -   +   0   
+
+6   0   0   0   0   +   +   -   +   
+
+7   0   0   0   0   +   0   +   -   
+
+
+Does it change after integration?
+
+Jacobian at time 1000:
+i\j 0   1   2   3   4   5   6   7   
+0   -   +   0   0   0   0   0   +   
+
+1   +   -   0   0   0   0   0   -   
+
+2   0   -   -   +   0   0   0   0   
+
+3   0   +   +   -   +   0   0   0   
+
+4   0   +   0   +   -   0   0   0   
+
+5   0   0   0   0   -   -   +   0   
+
+6   0   0   0   0   -   +   -   +   
+
+7   0   0   0   0   +   0   +   -   
+
+
+J[6,4] changed its sign. Let's take a look at the equations:
+
+The ODE dMAPK_P/dt = 
+(J6 - J7 + J8 - J9) / uVol 
+
+The jacobian entry (dMAPK_P/dt)/dMKK_PP = 
+(0.025 * MAPK / (15 + MAPK) - 0.025 * MAPK_P / (15 + MAPK_P)) / uVol 
+
+MAPK_P is both a substrate and a product of MKK_PP in different reactions.
+Therefor the corresponding entry in the jacobian can change its sign, depending on concentrations!
+Take a look at jacobian interaction graph infile jacobian_jm.gif that has just been constructed.
+If you have compiled w/o graphviz, you just have a textfile jacobian.dot
+Thx and good bye!
+
+
+Successfully constructed the parametric matrix S as used for CVODES sensitivity analysis
+
+We might be interested in the `sparsity' of S,
+... we can just evaluate the parametric entries:
+
+... how many parametric entries: 4
+
+
+ODE VARIABLE 1: MKKK
+dY/dt =  (J1 - J0) / uVol 
+  Parameter 0: uVol     S[0][0] = -((0.25 * MKKK_P / (8 + MKKK_P) - V1 * MKKK / ((1 + MAPK_PP / Ki) * (K1 + MKKK))) / uVol^2) 
+  Parameter 1: V1     S[0][1] = -(MKKK / ((1 + MAPK_PP / Ki) * (K1 + MKKK)) / uVol) 
+  Parameter 2: Ki     S[0][2] = -(V1 * MKKK / ((1 + MAPK_PP / Ki) * (K1 + MKKK))^2 * (MAPK_PP / Ki)^(1 - 1) * (MAPK_PP / Ki^2) * (K1 + MKKK) / uVol) 
+  Parameter 3: K1     S[0][3] = V1 * MKKK / ((1 + MAPK_PP / Ki) * (K1 + MKKK))^2 * (1 + MAPK_PP / Ki) / uVol 
+
+ODE VARIABLE 2: MKKK_P
+dY/dt =  (J0 - J1) / uVol 
+  Parameter 0: uVol     S[1][0] = -((V1 * MKKK / ((1 + MAPK_PP / Ki) * (K1 + MKKK)) - 0.25 * MKKK_P / (8 + MKKK_P)) / uVol^2) 
+  Parameter 1: V1     S[1][1] = MKKK / ((1 + MAPK_PP / Ki) * (K1 + MKKK)) / uVol 
+  Parameter 2: Ki     S[1][2] = V1 * MKKK / ((1 + MAPK_PP / Ki) * (K1 + MKKK))^2 * (MAPK_PP / Ki)^(1 - 1) * (MAPK_PP / Ki^2) * (K1 + MKKK) / uVol 
+  Parameter 3: K1     S[1][3] = -(V1 * MKKK / ((1 + MAPK_PP / Ki) * (K1 + MKKK))^2 * (1 + MAPK_PP / Ki) / uVol) 
+
+ODE VARIABLE 3: MKK
+dY/dt =  (J5 - J2) / uVol 
+  Parameter 0: uVol     S[2][0] = -((0.75 * MKK_P / (15 + MKK_P) - 0.025 * MKKK_P * MKK / (15 + MKK)) / uVol^2) 
+  Parameter 1: V1     S[2][1] = 0 
+  Parameter 2: Ki     S[2][2] = 0 
+  Parameter 3: K1     S[2][3] = 0 
+
+ODE VARIABLE 4: MKK_P
+dY/dt =  (J2 - J3 + J4 - J5) / uVol 
+  Parameter 0: uVol     S[3][0] = -((0.025 * MKKK_P * MKK / (15 + MKK) - 0.025 * MKKK_P * MKK_P / (15 + MKK_P) + 0.75 * MKK_PP / (15 + MKK_PP) - 0.75 * MKK_P / (15 + MKK_P)) / uVol^2) 
+  Parameter 1: V1     S[3][1] = 0 
+  Parameter 2: Ki     S[3][2] = 0 
+  Parameter 3: K1     S[3][3] = 0 
+
+ODE VARIABLE 5: MKK_PP
+dY/dt =  (J3 - J4) / uVol 
+  Parameter 0: uVol     S[4][0] = -((0.025 * MKKK_P * MKK_P / (15 + MKK_P) - 0.75 * MKK_PP / (15 + MKK_PP)) / uVol^2) 
+  Parameter 1: V1     S[4][1] = 0 
+  Parameter 2: Ki     S[4][2] = 0 
+  Parameter 3: K1     S[4][3] = 0 
+
+ODE VARIABLE 6: MAPK
+dY/dt =  (J9 - J6) / uVol 
+  Parameter 0: uVol     S[5][0] = -((0.5 * MAPK_P / (15 + MAPK_P) - 0.025 * MKK_PP * MAPK / (15 + MAPK)) / uVol^2) 
+  Parameter 1: V1     S[5][1] = 0 
+  Parameter 2: Ki     S[5][2] = 0 
+  Parameter 3: K1     S[5][3] = 0 
+
+ODE VARIABLE 7: MAPK_P
+dY/dt =  (J6 - J7 + J8 - J9) / uVol 
+  Parameter 0: uVol     S[6][0] = -((0.025 * MKK_PP * MAPK / (15 + MAPK) - 0.025 * MKK_PP * MAPK_P / (15 + MAPK_P) + 0.5 * MAPK_PP / (15 + MAPK_PP) - 0.5 * MAPK_P / (15 + MAPK_P)) / uVol^2) 
+  Parameter 1: V1     S[6][1] = 0 
+  Parameter 2: Ki     S[6][2] = 0 
+  Parameter 3: K1     S[6][3] = 0 
+
+ODE VARIABLE 8: MAPK_PP
+dY/dt =  (J7 - J8) / uVol 
+  Parameter 0: uVol     S[7][0] = -((0.025 * MKK_PP * MAPK_P / (15 + MAPK_P) - 0.5 * MAPK_PP / (15 + MAPK_PP)) / uVol^2) 
+  Parameter 1: V1     S[7][1] = 0 
+  Parameter 2: Ki     S[7][2] = 0 
+  Parameter 3: K1     S[7][3] = 0 
+
+
+Sensitivity: parametric matrix with initial conditions:
+i\j 0   1   2   3   
+0   +   -   -   +   
+
+1   -   +   +   -   
+
+2   -   0   0   0   
+
+3   -   0   0   0   
+
+4   +   0   0   0   
+
+5   +   0   0   0   
+
+6   -   0   0   0   
+
+7   +   0   0   0   
+
+
+Thx and good bye!
+### Printing Sensitivities to K1 (10) on the fly:
+#time  MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP J0 J1 J2 J3 J4 J5 J6 J7 J8 J9 uVol V1 Ki K1 
+0  0 0 0 0 0 0 0 0 
+30  0.376101 -0.376101 0.118593 -0.0574272 -0.0611659 0.0130732 -0.00707336 -0.00599986 
+60  0.827581 -0.827581 0.515957 -0.190622 -0.325335 0.127081 -0.0641635 -0.0629178 
+90  1.05294 -1.05294 1.15453 -0.311331 -0.843199 0.504418 -0.207313 -0.297105 
+120  0.986708 -0.986708 1.80548 -0.356609 -1.44887 1.27134 -0.37598 -0.895362 
+150  0.915832 -0.915832 2.3474 -0.320053 -2.02735 2.41127 -0.472765 -1.93851 
+180  0.884752 -0.884752 2.75501 -0.179487 -2.57553 3.7224 -0.336436 -3.38596 
+210  0.868732 -0.868732 2.94006 0.149011 -3.08907 3.44841 1.54277 -4.99118 
+240  0.865232 -0.865232 2.71185 0.829009 -3.54086 0.12877 1.59264 -1.72141 
+270  0.884511 -0.884511 1.9523 1.92312 -3.87542 0.00481648 0.0298059 -0.0346223 
+300  0.903155 -0.903155 1.12274 2.87547 -3.99822 0.00350199 0.0240978 -0.0275998 
+
+Let's look at a specific ODE variable:
+### RESULTS for Sensitivity Analysis for one ODE variable
+#time  Variable  Sensitivity Params...
+#time  MAPK_P  uVol V1 Ki K1 
+0  10  0 0 0 0 
+30  12.489  -1.9166 0.260431 0.0365621 -0.00707336 
+60  15.5756  -9.98879 2.11944 0.286395 -0.0641635 
+90  23.2928  -31.2772 6.02119 0.799356 -0.207313 
+120  35.6933  -55.2295 9.66907 1.29008 -0.37598 
+150  49.7262  -68.2277 11.0066 1.492 -0.472765 
+180  61.3803  -49.717 7.31996 1.00958 -0.336436 
+210  58.241  188.72 -29.7585 -4.2461 1.54277 
+240  5.44918  189.301 -28.9929 -4.23937 1.59264 
+270  1.43183  1.59018 -0.433512 -0.0710146 0.0298059 
+300  1.30543  0.976291 -0.33193 -0.0566546 0.0240978 
+
+What do sensitivities mean? Let's try out!
+
+... add 1 to V1:  2.5 + 1 = 3.5
+... and integrate again:
+
+#time  MAPK_P
+0  10
+30  12.7519
+60  17.6623
+90  28.6524
+120  43.378
+150  57.4222
+180  62.5827
+210  13.7676
+240  1.36179
+270  1.22088
+300  1.14518
+
+See the difference?
+Look what happens when the sensitivity changes its sign
+between times 180 and 210.
+
+
+This example performs forward and adjoint sensitivity analysis for data mis-match functional
+J(x) = int_0^T | x - x_data |^2 dt. The two methods should give (up-to-numerics) equivalent results. 
+### Printing Sensitivities to rho (2) on the fly:
+#time  x1 x2 x3 y1 y2 y3 compartment alpha beta rho 
+0  0 0 0 0 0 0 
+20  -0.0993213 -0.041987 0.0250429 -0.103489 -0.0424494 0.029678 
+40  -0.0749654 -0.00271113 -0.0247045 -0.0742884 0.00827753 -0.0365409 
+60  -0.124396 0.128368 -0.102166 -0.120113 0.122763 -0.100837 
+80  0.226478 -0.101326 -0.216814 0.238041 -0.103316 -0.227915 
+100  -0.0267959 -0.237976 0.19126 -0.0403631 -0.256414 0.221589 
+
+### Printing Forward Sensitivities: int_0^T <x-x_delta, x_sens> dt 
+Computed J=0.791943307218501 
+### Now computing and printing out directional sensitivities 
+with  dp[0] = 0  dp[1] = 0  dp[2] = 0  dp[3] = 1 
+#time  x1 x2 x3 y1 y2 y3 compartment alpha beta rho 
+0   0  0  0  0  0  0 
+20   -0.099321343  -0.04198701  0.025042891  -0.10348941  -0.042449383  0.029678027 
+40   -0.074965374  -0.0027111265  -0.024704493  -0.07428837  0.0082775293  -0.036540892 
+60   -0.12439585  0.1283681  -0.10216632  -0.12011316  0.12276325  -0.10083711 
+80   0.22647809  -0.10132623  -0.21681407  0.23804116  -0.10331586  -0.22791524 
+100   -0.026795859  -0.23797569  0.19126016  -0.040363128  -0.25641373  0.22158857 
+
+### Commencing adjoint integration:
+#time  x1 x2 x3 y1 y2 y3 compartment alpha beta rho 
+100  0 0 0 0 0 0 
+80  -0.148492 2.89523 -3.45125 -0.0681658 3.1721 -3.52727 
+60  -4.7035 0.957922 1.07116 -4.71783 1.24969 0.483427 
+40  -9.72103 -3.7932 2.86995 -11.8885 -3.73705 3.38892 
+20  4.57572 -24.3875 -1.83815 5.08817 -26.7492 -1.66414 
+0  -0.204992 1.68361 -9.70708 0.0167496 2.25346 -13.7315 
+
+### Printing Adjoint Sensitivities: int_0^T <df/dp, psi> dt   
+dJ/dp_0=0 dJ/dp_1=27.8381863734458 dJ/dp_2=9.54699344761958 dJ/dp_3=-0.304136075267367 
+set xlabel 'time'
+set ylabel 'Ki'
+splot '-' using 1:2:3 title 'MAPK_PP' with lines
+ 0 0 10
+Parameter = 0
+
+ 0 5 10
+ 50 5 6.52749
+ 100 5 13.3613
+ 150 5 47.0214
+ 200 5 122.331
+ 250 5 236.759
+ 300 5 297.844
+ 350 5 298.164
+ 400 5 298.226
+ 450 5 298.191
+ 500 5 298.059
+ 550 5 297.802
+ 600 5 297.352
+ 650 5 296.559
+ 700 5 295.078
+ 750 5 292.038
+ 800 5 285.317
+ 850 5 271.696
+ 900 5 251.393
+ 950 5 228.794
+ 1000 5 205.889
+ 1050 5 182.917
+ 1100 5 160.068
+ 1150 5 137.474
+ 1200 5 115.275
+ 1250 5 93.6303
+ 1300 5 72.792
+ 1350 5 53.1976
+ 1400 5 35.6753
+ 1450 5 21.864
+ 1500 5 14.7435
+ 1550 5 18.4589
+ 1600 5 38.2963
+ 1650 5 80.1127
+ 1700 5 145.079
+ 1750 5 226.734
+ 1800 5 290.959
+ 1850 5 296.381
+ 1900 5 295.995
+ 1950 5 295.027
+ 2000 5 292.989
+ 2050 5 288.528
+ 2100 5 278.829
+ 2150 5 261.724
+ 2200 5 240.016
+ 2250 5 217.264
+ 2300 5 194.385
+ 2350 5 171.496
+ 2400 5 148.764
+ 2450 5 126.352
+ 2500 5 104.406
+ 2550 5 83.1233
+ 2600 5 62.8331
+ 2650 5 44.1313
+ 2700 5 28.1815
+ 2750 5 17.2424
+ 2800 5 14.9491
+ 2850 5 25.9325
+ 2900 5 56.1904
+ 2950 5 109.883
+ 3000 5 184.621
+ 3050 5 266.586
+ 3100 5 296.017
+ 3150 5 296.263
+ 3200 5 295.61
+ 3250 5 294.216
+ 3300 5 291.235
+ 3350 5 284.627
+ 3400 5 271.3
+ 3450 5 251.34
+ 3500 5 228.868
+ 3550 5 206.03
+ 3600 5 183.148
+ 3650 5 160.275
+ 3700 5 137.645
+ 3750 5 115.466
+ 3800 5 93.8351
+ 3850 5 72.9874
+ 3900 5 53.3786
+ 3950 5 35.8307
+ 4000 5 21.9721
+ 4050 5 14.7701
+ 4100 5 18.3727
+ 4150 5 38.0597
+ 4200 5 79.6707
+ 4250 5 144.436
+ 4300 5 226.005
+ 4350 5 290.757
+ 4400 5 296.383
+ 4450 5 296.003
+ 4500 5 295.041
+ 4550 5 293.018
+ 4600 5 288.591
+ 4650 5 278.981
+ 4700 5 261.952
+ 4750 5 240.265
+ 4800 5 217.516
+ 4850 5 194.637
+ 4900 5 171.748
+ 4950 5 149.013
+ 5000 5 126.597
+ 5050 5 104.644
+ 5100 5 83.353
+ 5150 5 63.049
+ 5200 5 44.3244
+ 5250 5 28.3335
+ 5300 5 17.3215
+ 5350 5 14.9102
+ 5400 5 25.7041
+ 5450 5 55.6529
+ 5500 5 109.033
+ 5550 5 183.559
+ 5600 5 265.672
+ 5650 5 295.983
+ 5700 5 296.267
+ 5750 5 295.621
+ 5800 5 294.238
+ 5850 5 291.285
+ 5900 5 284.742
+ 5950 5 271.512
+ 6000 5 251.602
+ 6050 5 229.144
+ 6100 5 206.303
+ 6150 5 183.402
+ 6200 5 160.566
+ 6250 5 137.974
+ 6300 5 115.767
+ 6350 5 94.1074
+ 6400 5 73.2476
+ 6450 5 53.6193
+ 6500 5 36.0374
+ 6550 5 22.1167
+ 6600 5 14.8035
+ 6650 5 18.2217
+ 6700 5 37.6357
+ 6750 5 78.9166
+ 6800 5 143.412
+ 6850 5 224.885
+ 6900 5 290.418
+ 6950 5 296.385
+ 7000 5 296.013
+ 7050 5 295.063
+ 7100 5 293.065
+ 7150 5 288.692
+ 7200 5 279.19
+ 7250 5 262.278
+ 7300 5 240.627
+ 7350 5 217.88
+ 7400 5 195.001
+ 7450 5 172.111
+ 7500 5 149.373
+ 7550 5 126.95
+ 7600 5 104.987
+ 7650 5 83.6839
+ 7700 5 63.3611
+ 7750 5 44.6051
+ 7800 5 28.5568
+ 7850 5 17.4406
+ 7900 5 14.8632
+ 7950 5 25.413
+ 8000 5 55.0413
+ 8050 5 108.064
+ 8100 5 182.303
+ 8150 5 264.565
+ 8200 5 295.939
+ 8250 5 296.271
+ 8300 5 295.631
+ 8350 5 294.262
+ 8400 5 291.338
+ 8450 5 284.852
+ 8500 5 271.717
+ 8550 5 251.868
+ 8600 5 229.489
+ 8650 5 206.638
+ 8700 5 183.742
+ 8750 5 160.902
+ 8800 5 138.301
+ 8850 5 116.086
+ 8900 5 94.4173
+ 8950 5 73.5433
+ 9000 5 53.892
+ 9050 5 36.2716
+ 9100 5 22.2804
+ 9150 5 14.8401
+ 9200 5 18.0601
+ 9250 5 37.2122
+ 9300 5 78.1867
+ 9350 5 142.415
+ 9400 5 223.791
+ 9450 5 290.093
+ 9500 5 296.39
+ 9550 5 296.028
+ 9600 5 295.092
+ 9650 5 293.125
+ 9700 5 288.823
+ 9750 5 279.462
+ 9800 5 262.684
+ 9850 5 241.08
+ 9900 5 218.342
+ 9950 5 195.465
+ 10000 5 172.573
+
+ 0 10 10
+ 50 10 7.42769
+ 100 10 22.8334
+ 150 10 83.7157
+ 200 10 204.371
+ 250 10 298.24
+ 300 10 298.648
+ 350 10 298.758
+ 400 10 298.79
+ 450 10 298.783
+ 500 10 298.755
+ 550 10 298.705
+ 600 10 298.629
+ 650 10 298.516
+ 700 10 298.349
+ 750 10 298.103
+ 800 10 297.73
+ 850 10 297.146
+ 900 10 296.172
+ 950 10 294.404
+ 1000 10 290.856
+ 1050 10 283.367
+ 1100 10 269.286
+ 1150 10 249.509
+ 1200 10 227.688
+ 1250 10 205.463
+ 1300 10 183.024
+ 1350 10 160.632
+ 1400 10 138.572
+ 1450 10 117.1
+ 1500 10 96.5352
+ 1550 10 77.4006
+ 1600 10 60.6323
+ 1650 10 47.9516
+ 1700 10 42.3668
+ 1750 10 48.3932
+ 1800 10 71.3044
+ 1850 10 115.099
+ 1900 10 179.883
+ 1950 10 257.141
+ 2000 10 295.49
+ 2050 10 296.576
+ 2100 10 296.399
+ 2150 10 295.919
+ 2200 10 294.978
+ 2250 10 293.172
+ 2300 10 289.538
+ 2350 10 282.088
+ 2400 10 268.474
+ 2450 10 249.334
+ 2500 10 227.951
+ 2550 10 206.067
+ 2600 10 183.97
+ 2650 10 161.768
+ 2700 10 139.769
+ 2750 10 118.295
+ 2800 10 97.6907
+ 2850 10 78.4718
+ 2900 10 61.5472
+ 2950 10 48.5806
+ 3000 10 42.4918
+ 3050 10 47.7141
+ 3100 10 69.4974
+ 3150 10 111.961
+ 3200 10 175.494
+ 3250 10 252.577
+ 3300 10 295.079
+ 3350 10 296.565
+ 3400 10 296.403
+ 3450 10 295.938
+ 3500 10 295.023
+ 3550 10 293.265
+ 3600 10 289.739
+ 3650 10 282.502
+ 3700 10 269.169
+ 3750 10 250.189
+ 3800 10 228.85
+ 3850 10 206.979
+ 3900 10 184.89
+ 3950 10 162.686
+ 4000 10 140.673
+ 4050 10 119.171
+ 4100 10 98.5206
+ 4150 10 79.2287
+ 4200 10 62.1825
+ 4250 10 49.0042
+ 4300 10 42.5511
+ 4350 10 47.1923
+ 4400 10 68.1845
+ 4450 10 109.764
+ 4500 10 172.517
+ 4550 10 249.522
+ 4600 10 294.765
+ 4650 10 296.567
+ 4700 10 296.418
+ 4750 10 295.969
+ 4800 10 295.079
+ 4850 10 293.374
+ 4900 10 289.961
+ 4950 10 282.939
+ 5000 10 269.873
+ 5050 10 251.083
+ 5100 10 229.794
+ 5150 10 207.936
+ 5200 10 185.857
+ 5250 10 163.653
+ 5300 10 141.625
+ 5350 10 120.094
+ 5400 10 99.3983
+ 5450 10 80.0326
+ 5500 10 62.8605
+ 5550 10 49.4629
+ 5600 10 42.635
+ 5650 10 46.6826
+ 5700 10 66.8604
+ 5750 10 107.511
+ 5800 10 169.425
+ 5850 10 246.25
+ 5900 10 294.36
+ 5950 10 296.567
+ 6000 10 296.432
+ 6050 10 295.998
+ 6100 10 295.135
+ 6150 10 293.483
+ 6200 10 290.181
+ 6250 10 283.392
+ 6300 10 270.665
+ 6350 10 252.081
+ 6400 10 230.846
+ 6450 10 208.997
+ 6500 10 186.926
+ 6550 10 164.722
+ 6600 10 142.677
+ 6650 10 121.115
+ 6700 10 100.37
+ 6750 10 80.9247
+ 6800 10 63.6187
+ 6850 10 49.9874
+ 6900 10 42.757
+ 6950 10 46.1692
+ 7000 10 65.4547
+ 7050 10 105.045
+ 7100 10 165.964
+ 7150 10 242.457
+ 7200 10 293.78
+ 7250 10 296.562
+ 7300 10 296.443
+ 7350 10 296.024
+ 7400 10 295.184
+ 7450 10 293.579
+ 7500 10 290.379
+ 7550 10 283.799
+ 7600 10 271.372
+ 7650 10 252.983
+ 7700 10 231.8
+ 7750 10 209.959
+ 7800 10 187.897
+ 7850 10 165.7
+ 7900 10 143.641
+ 7950 10 122.051
+ 8000 10 101.258
+ 8050 10 81.7409
+ 8100 10 64.3166
+ 8150 10 50.4788
+ 8200 10 42.8884
+ 8250 10 45.7177
+ 8300 10 64.1865
+ 8350 10 102.809
+ 8400 10 162.824
+ 8450 10 238.987
+ 8500 10 293.145
+ 8550 10 296.558
+ 8600 10 296.455
+ 8650 10 296.052
+ 8700 10 295.237
+ 8750 10 293.681
+ 8800 10 290.586
+ 8850 10 284.219
+ 8900 10 272.095
+ 8950 10 253.921
+ 9000 10 232.804
+ 9050 10 210.982
+ 9100 10 188.931
+ 9150 10 166.73
+ 9200 10 144.657
+ 9250 10 123.038
+ 9300 10 102.203
+ 9350 10 82.6135
+ 9400 10 65.0663
+ 9450 10 51.014
+ 9500 10 43.0545
+ 9550 10 45.3045
+ 9600 10 62.9644
+ 9650 10 100.57
+ 9700 10 159.565
+ 9750 10 235.231
+ 9800 10 292.286
+ 9850 10 296.547
+ 9900 10 296.461
+ 9950 10 296.07
+ 10000 10 295.276
+
+ 0 15 10
+ 50 15 7.99361
+ 100 15 28.7197
+ 150 15 103.177
+ 200 15 241.229
+ 250 15 298.565
+ 300 15 298.77
+ 350 15 298.834
+ 400 15 298.842
+ 450 15 298.833
+ 500 15 298.816
+ 550 15 298.791
+ 600 15 298.757
+ 650 15 298.71
+ 700 15 298.645
+ 750 15 298.557
+ 800 15 298.435
+ 850 15 298.267
+ 900 15 298.032
+ 950 15 297.695
+ 1000 15 297.195
+ 1050 15 296.416
+ 1100 15 295.12
+ 1150 15 292.782
+ 1200 15 288.25
+ 1250 15 279.488
+ 1300 15 265.091
+ 1350 15 246.43
+ 1400 15 226.173
+ 1450 15 205.493
+ 1500 15 184.62
+ 1550 15 163.817
+ 1600 15 143.547
+ 1650 15 124.381
+ 1700 15 107.08
+ 1750 15 92.8071
+ 1800 15 83.4128
+ 1850 15 81.6923
+ 1900 15 91.2773
+ 1950 15 115.829
+ 2000 15 157.561
+ 2050 15 215.306
+ 2100 15 275.94
+ 2150 15 295.486
+ 2200 15 296.125
+ 2250 15 296.027
+ 2300 15 295.677
+ 2350 15 295.006
+ 2400 15 293.823
+ 2450 15 291.724
+ 2500 15 287.882
+ 2550 15 280.867
+ 2600 15 269.178
+ 2650 15 252.943
+ 2700 15 234.16
+ 2750 15 214.473
+ 2800 15 194.456
+ 2850 15 174.267
+ 2900 15 154.197
+ 2950 15 134.777
+ 3000 15 116.699
+ 3050 15 100.912
+ 3100 15 88.863
+ 3150 15 82.7777
+ 3200 15 85.7824
+ 3250 15 101.528
+ 3300 15 133.08
+ 3350 15 181.361
+ 3400 15 242.34
+ 3450 15 289.724
+ 3500 15 295.853
+ 3550 15 295.965
+ 3600 15 295.728
+ 3650 15 295.196
+ 3700 15 294.233
+ 3750 15 292.535
+ 3800 15 289.46
+ 3850 15 283.808
+ 3900 15 273.962
+ 3950 15 259.318
+ 4000 15 241.26
+ 4050 15 221.859
+ 4100 15 201.894
+ 4150 15 181.748
+ 4200 15 161.612
+ 4250 15 141.827
+ 4300 15 123.153
+ 4350 15 106.426
+ 4400 15 92.7178
+ 4450 15 84.1215
+ 4500 15 83.3646
+ 4550 15 94.0385
+ 4600 15 119.567
+ 4650 15 161.842
+ 4700 15 219.282
+ 4750 15 277.728
+ 4800 15 295.402
+ 4850 15 295.986
+ 4900 15 295.845
+ 4950 15 295.431
+ 5000 15 294.651
+ 5050 15 293.275
+ 5100 15 290.812
+ 5150 15 286.286
+ 5200 15 278.153
+ 5250 15 265.186
+ 5300 15 248.128
+ 5350 15 229.039
+ 5400 15 209.254
+ 5450 15 189.211
+ 5500 15 169.005
+ 5550 15 149.097
+ 5600 15 129.845
+ 5650 15 112.323
+ 5700 15 97.3143
+ 5750 15 86.5885
+ 5800 15 82.5591
+ 5850 15 88.5676
+ 5900 15 108.241
+ 5950 15 144.231
+ 6000 15 196.562
+ 6050 15 258.314
+ 6100 15 293.548
+ 6150 15 295.947
+ 6200 15 295.925
+ 6250 15 295.616
+ 6300 15 294.988
+ 6350 15 293.869
+ 6400 15 291.885
+ 6450 15 288.267
+ 6500 15 281.648
+ 6550 15 270.49
+ 6600 15 254.724
+ 6650 15 236.153
+ 6700 15 216.527
+ 6750 15 196.587
+ 6800 15 176.301
+ 6850 15 156.227
+ 6900 15 136.686
+ 6950 15 118.404
+ 7000 15 102.393
+ 7050 15 89.8727
+ 7100 15 83.0508
+ 7150 15 85.0039
+ 7200 15 99.3358
+ 7250 15 129.231
+ 7300 15 175.882
+ 7350 15 236.065
+ 7400 15 287.27
+ 7450 15 295.777
+ 7500 15 295.969
+ 7550 15 295.758
+ 7600 15 295.258
+ 7650 15 294.346
+ 7700 15 292.736
+ 7750 15 289.835
+ 7800 15 284.489
+ 7850 15 275.089
+ 7900 15 260.839
+ 7950 15 243.024
+ 8000 15 223.671
+ 8050 15 203.799
+ 8100 15 183.683
+ 8150 15 163.511
+ 8200 15 143.721
+ 8250 15 124.927
+ 8300 15 107.936
+ 8350 15 93.9281
+ 8400 15 84.7335
+ 8450 15 83.0681
+ 8500 15 92.4335
+ 8550 15 116.337
+ 8600 15 156.888
+ 8650 15 213.002
+ 8700 15 272.985
+ 8750 15 295.11
+ 8800 15 295.976
+ 8850 15 295.864
+ 8900 15 295.478
+ 8950 15 294.738
+ 9000 15 293.431
+ 9050 15 291.097
+ 9100 15 286.817
+ 9150 15 279.085
+ 9200 15 266.572
+ 9250 15 249.807
+ 9300 15 230.829
+ 9350 15 211.082
+ 9400 15 191.037
+ 9450 15 170.849
+ 9500 15 150.848
+ 9550 15 131.579
+ 9600 15 113.803
+ 9650 15 98.5591
+ 9700 15 87.3813
+ 9750 15 82.5966
+ 9800 15 87.5355
+ 9850 15 105.813
+ 9900 15 140.232
+ 9950 15 191.148
+ 10000 15 252.811
+
+end
+set xlabel 'time'
+set ylabel 'Sensitivity of Variable to Ki'
+plot '-' using 1:2 title 'MKKK_P' with lines, '-' using 1:2 title 'MAPK_PP' with lines
+
+#time MKKK_P
+0 0
+7.5 0.457051
+15 0.898208
+22.5 1.32158
+30 1.71927
+37.5 2.07977
+45 2.38967
+52.5 2.63491
+60 2.80295
+67.5 2.88606
+75 2.88472
+82.5 2.80982
+90 2.68199
+97.5 2.52671
+105 2.36778
+112.5 2.22199
+120 2.09795
+127.5 1.99784
+135 1.92072
+142.5 1.8633
+150 1.8218
+157.5 1.79291
+165 1.77309
+172.5 1.7605
+180 1.75356
+187.5 1.75104
+195 1.75178
+202.5 1.75494
+210 1.76015
+217.5 1.76734
+225 1.77711
+232.5 1.79129
+240 1.81263
+247.5 1.84084
+255 1.87215
+262.5 1.90462
+270 1.93775
+277.5 1.97138
+285 2.00543
+292.5 2.03983
+300 2.07453
+307.5 2.10947
+315 2.14459
+322.5 2.17985
+330 2.2152
+337.5 2.25059
+345 2.28598
+352.5 2.32132
+360 2.35657
+367.5 2.39168
+375 2.4266
+382.5 2.4613
+390 2.49572
+397.5 2.52981
+405 2.56353
+412.5 2.59682
+420 2.62964
+427.5 2.66192
+435 2.69362
+442.5 2.72466
+450 2.75499
+457.5 2.78455
+465 2.81325
+472.5 2.84104
+480 2.86783
+487.5 2.89354
+495 2.91808
+502.5 2.94137
+510 2.96331
+517.5 2.98379
+525 3.00272
+532.5 3.01996
+540 3.03541
+547.5 3.04894
+555 3.06041
+562.5 3.06969
+570 3.07662
+577.5 3.08106
+585 3.08284
+592.5 3.0818
+600 3.07778
+607.5 3.0706
+615 3.06008
+622.5 3.04605
+630 3.02834
+637.5 3.00679
+645 2.98122
+652.5 2.95151
+660 2.91751
+667.5 2.87913
+675 2.83628
+682.5 2.78891
+690 2.73703
+697.5 2.68067
+705 2.61992
+712.5 2.55493
+720 2.48592
+727.5 2.41315
+735 2.33697
+742.5 2.25779
+750 2.1761
+757.5 2.09236
+765 2.0072
+772.5 1.9212
+780 1.83493
+787.5 1.74905
+795 1.66416
+802.5 1.58078
+810 1.49947
+817.5 1.42069
+825 1.34483
+832.5 1.2722
+840 1.20309
+847.5 1.13767
+855 1.07601
+862.5 1.01823
+870 0.964285
+877.5 0.914061
+885 0.867547
+892.5 0.824554
+900 0.784908
+907.5 0.74846
+915 0.715
+922.5 0.684324
+930 0.656214
+937.5 0.630473
+945 0.606886
+952.5 0.585227
+960 0.56531
+967.5 0.546926
+975 0.529871
+982.5 0.513969
+990 0.499035
+997.5 0.4849
+1005 0.471408
+1012.5 0.45842
+1020 0.445809
+1027.5 0.433468
+1035 0.421319
+1042.5 0.409309
+1050 0.397417
+1057.5 0.385652
+1065 0.374047
+1072.5 0.362668
+1080 0.351581
+1087.5 0.340878
+1095 0.330632
+1102.5 0.320905
+1110 0.311738
+1117.5 0.303155
+1125 0.295161
+1132.5 0.287746
+1140 0.280886
+1147.5 0.274542
+1155 0.268668
+1162.5 0.263211
+1170 0.258112
+1177.5 0.25331
+1185 0.248744
+1192.5 0.244352
+1200 0.240075
+1207.5 0.235854
+1215 0.231636
+1222.5 0.227369
+1230 0.223005
+1237.5 0.2185
+1245 0.213811
+1252.5 0.208896
+1260 0.203714
+1267.5 0.198221
+1275 0.192371
+1282.5 0.186113
+1290 0.179395
+1297.5 0.172157
+1305 0.164334
+1312.5 0.155854
+1320 0.146639
+1327.5 0.136602
+1335 0.125646
+1342.5 0.113666
+1350 0.100545
+1357.5 0.0861544
+1365 0.0703523
+1372.5 0.0529824
+1380 0.033871
+1387.5 0.0128287
+1395 -0.0103569
+1402.5 -0.0359166
+1410 -0.0641093
+1417.5 -0.0952177
+1425 -0.129556
+1432.5 -0.167472
+1440 -0.209345
+1447.5 -0.255598
+1455 -0.306693
+1462.5 -0.36314
+1470 -0.425494
+1477.5 -0.494365
+1485 -0.570417
+1492.5 -0.654365
+1500 -0.74699
+e
+
+#time MAPK_PP
+0 0
+7.5 0.000487153
+15 0.00380121
+22.5 0.0128691
+30 0.0309547
+37.5 0.0617004
+45 0.109414
+52.5 0.179472
+60 0.278535
+67.5 0.414447
+75 0.59578
+82.5 0.831063
+90 1.12781
+97.5 1.49171
+105 1.92619
+112.5 2.43237
+120 3.00947
+127.5 3.65533
+135 4.36706
+142.5 5.14117
+150 5.97391
+157.5 6.86128
+165 7.79877
+172.5 8.78116
+180 9.80109
+187.5 10.8478
+195 11.9007
+202.5 12.9177
+210 13.7906
+217.5 14.22
+225 13.45
+232.5 10.2001
+240 4.57966
+247.5 1.16188
+255 0.287581
+262.5 0.116204
+270 0.0825271
+277.5 0.0741982
+285 0.0704025
+292.5 0.0675083
+300 0.0648891
+307.5 0.0623493
+315 0.0598708
+322.5 0.0574697
+330 0.0551535
+337.5 0.0529253
+345 0.0507849
+352.5 0.048741
+360 0.0468065
+367.5 0.0449958
+375 0.0433225
+382.5 0.0417976
+390 0.0404314
+397.5 0.039232
+405 0.0382028
+412.5 0.0373451
+420 0.0366583
+427.5 0.0361413
+435 0.0357927
+442.5 0.0356085
+450 0.0355859
+457.5 0.0357219
+465 0.0360136
+472.5 0.0364593
+480 0.0370582
+487.5 0.037811
+495 0.0387178
+502.5 0.0397801
+510 0.0410021
+517.5 0.0423857
+525 0.0439351
+532.5 0.0456558
+540 0.047553
+547.5 0.0496335
+555 0.0519042
+562.5 0.0543742
+570 0.0570524
+577.5 0.0599495
+585 0.0630795
+592.5 0.0664561
+600 0.0700952
+607.5 0.0740139
+615 0.0782316
+622.5 0.0827682
+630 0.0876427
+637.5 0.0928777
+645 0.098498
+652.5 0.104531
+660 0.111003
+667.5 0.117955
+675 0.12543
+682.5 0.133474
+690 0.142143
+697.5 0.1515
+705 0.161617
+712.5 0.172532
+720 0.184318
+727.5 0.197043
+735 0.210819
+742.5 0.225732
+750 0.241897
+757.5 0.259472
+765 0.278612
+772.5 0.299499
+780 0.322336
+787.5 0.347357
+795 0.374813
+802.5 0.40497
+810 0.438136
+817.5 0.474708
+825 0.515131
+832.5 0.559876
+840 0.609633
+847.5 0.665136
+855 0.727225
+862.5 0.796785
+870 0.8749
+877.5 0.96278
+885 1.06197
+892.5 1.17406
+900 1.30094
+907.5 1.44504
+915 1.60885
+922.5 1.7953
+930 2.00774
+937.5 2.24991
+945 2.52582
+952.5 2.83978
+960 3.19667
+967.5 3.60041
+975 4.05476
+982.5 4.5641
+990 5.12987
+997.5 5.7534
+1005 6.43515
+1012.5 7.16866
+1020 7.94808
+1027.5 8.76354
+1035 9.60068
+1042.5 10.4413
+1050 11.2674
+1057.5 12.0573
+1065 12.7945
+1072.5 13.4623
+1080 14.0514
+1087.5 14.5577
+1095 14.9829
+1102.5 15.333
+1110 15.6176
+1117.5 15.8463
+1125 16.029
+1132.5 16.1748
+1140 16.2916
+1147.5 16.3866
+1155 16.4657
+1162.5 16.5338
+1170 16.5945
+1177.5 16.6504
+1185 16.7032
+1192.5 16.7538
+1200 16.8029
+1207.5 16.8503
+1215 16.8956
+1222.5 16.938
+1230 16.9767
+1237.5 17.011
+1245 17.0401
+1252.5 17.064
+1260 17.0823
+1267.5 17.0953
+1275 17.103
+1282.5 17.1058
+1290 17.1039
+1297.5 17.0978
+1305 17.0877
+1312.5 17.0741
+1320 17.0572
+1327.5 17.0372
+1335 17.0143
+1342.5 16.9887
+1350 16.9605
+1357.5 16.9297
+1365 16.8965
+1372.5 16.8607
+1380 16.8223
+1387.5 16.7814
+1395 16.7376
+1402.5 16.6911
+1410 16.6415
+1417.5 16.5887
+1425 16.5324
+1432.5 16.4725
+1440 16.4085
+1447.5 16.3402
+1455 16.2673
+1462.5 16.1892
+1470 16.1054
+1477.5 16.0156
+1485 15.919
+1492.5 15.8149
+1500 15.7027
+e
+Try 3 integrations with selected parameters/ICs!
+
+
+Reading in linear objective function from: 'MAPK.linobjfun'
+Demonstration of forward/adjoint sensitivity (near) equivalence. 
+
+
+Integration time was 0.02
+
+Param default: K1
+1000  0.0429612 -0.0429612 4.9597 -0.842488 -4.11721 0.580189 1.01415 -1.59434 
+
+### Printing Forward Sensitivities
+
+Expression for integrand of linear objective J: 
+0-th component: 0 
+1-th component: MKKK_P 
+2-th component: 0 
+3-th component: 0 
+4-th component: 0 
+5-th component: 0 
+6-th component: 0 
+7-th component: 0 
+dJ/dp_0=-634.93349577416 dJ/dp_1=-31733.967696185 dJ/dp_2=-6523.68261291375 dJ/dp_3=82226.3759815664 
+
+Integration time was 0.01
+
+0  -17537.7 -13780.5 75.0971 5877.82 17233.3 634.933 6523.68 16742.8 
+
+### Printing Adjoint Sensitivities: int_0^T <df/dp, psi> dt
+dJ/dp_0=-634.933386367069 dJ/dp_1=-31733.962854391 dJ/dp_2=-6523.67815618698 dJ/dp_3=82226.3648038688 
+
+############# DONE RUN NUMBER 0  #############
+
+Integration time was 0.02
+
+Param default: K1
+1000  0.0429612 -0.0429612 4.9597 -0.842488 -4.11721 0.580189 1.01415 -1.59434 
+
+### Printing Forward Sensitivities
+
+Expression for integrand of linear objective J: 
+0-th component: 0 
+1-th component: MKKK_P 
+2-th component: 0 
+3-th component: 0 
+4-th component: 0 
+5-th component: 0 
+6-th component: 0 
+7-th component: 0 
+dJ/dp_0=-634.93349577416 dJ/dp_1=-31733.967696185 dJ/dp_2=-6523.68261291375 dJ/dp_3=82226.3759815664 
+
+Integration time was 0.01
+
+0  -17537.7 -13780.5 75.0971 5877.82 17233.3 634.933 6523.68 16742.8 
+
+### Printing Adjoint Sensitivities: int_0^T <df/dp, psi> dt
+dJ/dp_0=-634.933386367069 dJ/dp_1=-31733.962854391 dJ/dp_2=-6523.67815618698 dJ/dp_3=82226.3648038688 
+
+############# DONE RUN NUMBER 1  #############
+
+Reading in nonlinear objective now: 'MAPK.objfun'
+
+
+Integration time was 0.01
+
+Param default: K1
+1000  0.0429612 -0.0429612 4.9597 -0.842488 -4.11721 0.58019 1.01415 -1.59434 
+
+### Printing Objective Function (since nonlinear objective is present)
+Computed J=1101957.53407543 
+
+Integration time was 0.01
+
+0  -17537.7 -13780.5 75.0971 5877.82 17233.3 634.933 6523.68 16742.8 
+
+### Printing Adjoint Sensitivities: int_0^T <df/dp, psi> dt
+dJ/dp_0=-634.933341444755 dJ/dp_1=-31733.9617474301 dJ/dp_2=-6523.67865838288 dJ/dp_3=82226.3627068851 
+
+############# DONE RUN NUMBER 2  #############
+
+Integration time was 0.02
+
+Param default: K1
+1000  0.0429612 -0.0429612 4.9597 -0.842488 -4.11721 0.58019 1.01415 -1.59434 
+
+### Printing Objective Function (since nonlinear objective is present)
+Computed J=1101957.53407543 
+
+Integration time was 0.01
+
+0  -17537.7 -13780.5 75.0971 5877.82 17233.3 634.933 6523.68 16742.8 
+
+### Printing Adjoint Sensitivities: int_0^T <df/dp, psi> dt
+dJ/dp_0=-634.933341444755 dJ/dp_1=-31733.9617474301 dJ/dp_2=-6523.67865838288 dJ/dp_3=82226.3627068851 
+
+############# DONE RUN NUMBER 3  #############
+Sensitivity analysis for 2 ICs: MAPK, MAPK_P
+2 parameters: K1, Ki
+
+
+Reading in objective 'MAPK_10pt.objfun' ... and data 'MAPK_10pt.dat'
+
+Forward integration time was 0.04
+### Printing Objective Value:
+Computed J=70.0263887910541 
+
+Adjoint integration time was 0.02
+### Printing Adjoint Sensitivities:
+dJ/dp_0=-16.3541319695685 dJ/dp_1=-63.2350028482403 dJ/dp_2=-178.317002160688 dJ/dp_3=562.530836051654 
+
+
+Reading in objective 'MAPK_100pt.objfun' ... and data 'MAPK_100pt.dat'
+
+Forward integration time was 0.03
+### Printing Objective Value:
+Computed J=60.5101718370479 
+
+Adjoint integration time was 0.13
+### Printing Adjoint Sensitivities:
+dJ/dp_0=-13.6035197640958 dJ/dp_1=-54.7301626955854 dJ/dp_2=-154.049545206639 dJ/dp_3=492.63125662099 
+
+
+Reading in objective 'MAPK_1000pt.objfun' ... and data 'MAPK_1000pt.dat'
+
+Forward integration time was 0.08
+### Printing Objective Value:
+Computed J=59.5984145510258 
+
+Adjoint integration time was 0.79
+### Printing Adjoint Sensitivities:
+dJ/dp_0=-13.3395624513431 dJ/dp_1=-53.9121085425118 dJ/dp_2=-151.720316270095 dJ/dp_3=485.906562152899 
+
+
+Reading in objective 'MAPK_10000pt.objfun' ... and data 'MAPK_10000pt.dat'
+
+Forward integration time was 0.33
+### Printing Objective Value:
+Computed J=59.5065264742483 
+
+Adjoint integration time was 5.33
+### Printing Adjoint Sensitivities:
+dJ/dp_0=-13.3141354696291 dJ/dp_1=-53.8306524232969 dJ/dp_2=-151.48539777297 dJ/dp_3=485.230044271633 
+
+
+
+## Integration Parameters:
+## mxstep   = 1000000 rel.err. = 1e-08 abs.err. = 1e-08 
+## CVode Statistics:
+## nst = 4324   nfe  = 4793   nsetups = 948    nje = 79
+## nni = 4789   ncfn = 0      netf = 0
+##
+## CVode Adjoint Sensitivity Statistics:
+## nstA = 0      nfeA  = 0      nsetupsA = 0      njeA = 1
+## nniA = 0      ncfnA = 0      netfA = 0
+## ncheck = 0     
+
+
+==== NOW TREATING DATA AS BEING CONTINUOUS ====
+
+
+
+Reading in objective 'MAPK_withData.objfun' ... and data 'MAPK_10pt.dat'
+
+Forward integration time was 0.03
+### Printing Objective Value:
+Computed J=59.500845092995 
+
+Adjoint integration time was 0.07
+### Printing Adjoint Sensitivities:
+dJ/dp_0=-12.9310569637138 dJ/dp_1=-53.4894850465344 dJ/dp_2=-151.324024491527 dJ/dp_3=483.916030588705 
+
+
+Reading in objective 'MAPK_withData.objfun' ... and data 'MAPK_100pt.dat'
+
+Forward integration time was 0.03
+### Printing Objective Value:
+Computed J=59.494020134826 
+
+Adjoint integration time was 0.07
+### Printing Adjoint Sensitivities:
+dJ/dp_0=-13.3126884956064 dJ/dp_1=-53.8194833622848 dJ/dp_2=-151.458430980402 dJ/dp_3=485.146784282578 
+
+
+Reading in objective 'MAPK_withData.objfun' ... and data 'MAPK_1000pt.dat'
+
+Forward integration time was 0.1
+### Printing Objective Value:
+Computed J=59.4972886156776 
+
+Adjoint integration time was 0.26
+### Printing Adjoint Sensitivities:
+dJ/dp_0=-13.3106141304181 dJ/dp_1=-53.8213788234574 dJ/dp_2=-151.462605950866 dJ/dp_3=485.161708829886 
+
+
+Reading in objective 'MAPK_withData.objfun' ... and data 'MAPK_10000pt.dat'
+
+Forward integration time was 0.61
+### Printing Objective Value:
+Computed J=59.4968267017486 
+
+Adjoint integration time was 1.27
+### Printing Adjoint Sensitivities:
+dJ/dp_0=-13.3111738335549 dJ/dp_1=-53.8213009644168 dJ/dp_2=-151.462027808996 dJ/dp_3=485.159981659233 
+
+## Integration Parameters:
+## mxstep   = 1000000 rel.err. = 1e-08 abs.err. = 1e-08 
+## CVode Statistics:
+## nst = 20192  nfe  = 22110  nsetups = 4052   nje = 358
+## nni = 22106  ncfn = 0      netf = 0
+##
+## CVode Adjoint Sensitivity Statistics:
+## nstA = 22175  nfeA  = 25407  nsetupsA = 1617   njeA = 373
+## nniA = 25403  ncfnA = 0      netfA = 330
+## ncheck = 0     
+
+
+First try a few integrations with default sensitivity !
+MKKK MKKK_P MKK MKK_P MKK_PP MAPK MAPK_P MAPK_PP J0 J1 J2 J3 J4 J5 J6 J7 J8 J9 uVol V1 Ki K1 
+ Run #0:
+30  61.6227 38.3773 273.234 16.6896 10.0766 280.05 12.4867 7.4635 1.17585 0.206875 0.909503 0.505293 0.301375 0.394993 0.239109 0.114441 0.166125 0.227141 1 2.5 9 10 
+ finished.
+ Run #1:
+30  61.6227 38.3773 273.234 16.6896 10.0766 280.05 12.4867 7.4635 1.17585 0.206875 0.909503 0.505293 0.301375 0.394993 0.239109 0.114441 0.166125 0.227141 1 2.5 9 10 
+ finished.
+ Run #2:
+30  61.6227 38.3773 273.234 16.6896 10.0766 280.05 12.4867 7.4635 1.17585 0.206875 0.909503 0.505293 0.301375 0.394993 0.239109 0.114441 0.166125 0.227141 1 2.5 9 10 
+ finished.
+
+
+Now Activate Sensitivity
+Default case 1: sensitivities calculated for all constants
+of the input SBML, using analytic matrices:
+Sensitivities to parameter K1:
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+
+Selected parameter case 1, analytic matrices.
+Sensitivities to variable MAPK_PP
+30  1.49687 -1.49687 0.519736 -0.252619 -0.267117 0.106138 0.235909 0.657952 
+Sensitivities to parameter K1
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+Sensitivities to variable MKKK_P
+30  0.097418 0.902582 -0.604668 0.30265 0.302018 -0.100022 0.05475 0.0452716 
+Sensitivities OF variable MKKK to above parameters and variables
+30  61.6227  1.49687 0.37616 0.097418 
+
+
+Free Jacobian matrix via ODEModel_free(om) and suppress
+use of Jacobian matrix via CvodeSettings_setJacobian(set, 0)
+Consequently the parametric matrix can't be used.
+and instead CVODES internal approximation is active.
+
+Selected parameter case 2, internal approximation of matrices.
+Sensitivities to variable MAPK_PP
+30  1.49687 -1.49687 0.519736 -0.252619 -0.267117 0.106138 0.235909 0.657952 
+Sensitivities to parameter K1
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+Sensitivities to parameter V1
+30  -12.725 12.725 -4.25 2.06298 2.18701 -0.478912 0.259318 0.219594 
+Sensitivities to variable MKKK
+30  0.948959 0.0510409 -0.0149958 0.00724728 0.00774854 -0.00159069 0.000860227 0.00073046 
+Sensitivities OF variable MKKK to above parameters and variables:
+30  61.6227  0.37616 1.49687 0.948959 -12.725 
+
+
+Default case 2, switching between approx. and analytic
+
+Switching back to analytic matrices and default sensitivity.
+
+Param K1:
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+30  0.37616 -0.37616 0.118512 -0.0574118 -0.0611 0.0129955 -0.00703267 -0.00596284 
+
+Now again with internal approximation of matrices: 
+
+30  0.37616 -0.37616 0.11851 -0.0574109 -0.0611001 0.0129953 -0.00703294 -0.00596272 
+30  0.37616 -0.37616 0.11851 -0.0574109 -0.0611001 0.0129953 -0.00703294 -0.00596272 
+30  0.37616 -0.37616 0.11851 -0.0574109 -0.0611001 0.0129953 -0.00703294 -0.00596272 
+30  0.37616 -0.37616 0.11851 -0.0574109 -0.0611001 0.0129953 -0.00703294 -0.00596272 
diff --git a/odeSolver.doxy b/odeSolver.doxy
new file mode 100644
index 0000000..ae997b3
--- /dev/null
+++ b/odeSolver.doxy
@@ -0,0 +1,1228 @@
+# Doxyfile 1.4.4
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = "SBML ODE Solver Command-line Application"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         = "1.6.0"
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = doc/application
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of 
+# source files, where putting all generated files in the same directory would 
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
+# Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# This tag can be used to specify the encoding used in the generated output. 
+# The encoding is not always determined by the language that is chosen, 
+# but also whether or not the output is meant for Windows or non-Windows users. 
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
+# forces the Windows encoding (this is the default for the Windows binary), 
+# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING   = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is 
+# used as the annotated text. Otherwise, the brief description is used as-is. 
+# If left blank, the following values are used ("$name" is automatically 
+# replaced with the name of the entity): "The $name class" "The $name widget" 
+# "The $name file" "is" "provides" "specifies" "contains" 
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
+# inherited members of a class in the documentation of that class as if those 
+# members were ordinary class members. Constructors, destructors and assignment 
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like the Qt-style comments (thus requiring an 
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
+# a new page for each member. If set to NO, the documentation of a member will 
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
+# sources only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
+# only. Doxygen will then generate output that is more tailored for Java. 
+# For instance, namespaces will be presented as packages, qualified scopes 
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = NO
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories 
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# in the documentation. The default is YES.
+
+SHOW_DIRECTORIES       = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
+# doxygen should invoke to get the current version for each file (typically from the 
+# version control system). Doxygen will invoke the program by executing (via 
+# popen()) the command <command> <input-file>, where <command> is the value of 
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
+# provided by doxygen. Whatever the progam writes to standard output 
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  =  ./odeSolver
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
+
+FILE_PATTERNS          = *.c *.cpp *.h
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = examples
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
+# directories that are symbolic links (a Unix filesystem feature) are excluded 
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories. Note that the wildcards are matched 
+# against the file with absolute path, so to exclude all test directories 
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = 
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
+
+INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = 
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = 
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = YES
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = YES
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = YES
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_WIDTH    = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes 
+# that lay further from the root node will be omitted. Note that setting this 
+# option to 1 or 2 may greatly reduce the computation time needed for large 
+# code bases. Also note that a graph may be further truncated if the graph's 
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 
+# the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, which results in a white background. 
+# Warning: Depending on the platform used, enabling this option may lead to 
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = NO
diff --git a/odeSolver/Makefile.am b/odeSolver/Makefile.am
new file mode 100644
index 0000000..2aed8be
--- /dev/null
+++ b/odeSolver/Makefile.am
@@ -0,0 +1,50 @@
+# $Id: Makefile.am,v 1.8 2007/09/20 01:16:12 raimc Exp $
+## 
+## This application is free software; you can redistribute it and/or modify
+## it under the terms of the GNU Lesser General Public License as published
+## by the Free Software Foundation; either version 2.1 of the License, or
+## any later version.
+## 
+## This application 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. The software and
+## documentation provided hereunder is on an "as is" basis, and the
+## authors have no obligations to provide maintenance, support,
+## updates, enhancements or modifications.  In no event shall the
+## authors be liable to any party for direct, indirect, special,
+## incidental or consequential damages, including lost profits, arising
+## out of the use of this software and its documentation, even if the
+## authors have been advised of the possibility of such damage.  See
+## the GNU Lesser General Public License for more details.
+## 
+## You should have received a copy of the GNU Lesser General Public License
+## along with this library; if not, write to the Free Software Foundation,
+## Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+## 
+## The original code contained here was initially developed by:
+## 
+##     Rainer Machne    
+## 
+## Contributor(s):
+##
+##
+
+AM_CPPFLAGS = -I$(srcdir)/../src @SBML_CPPFLAGS@ @GRACE_CPPFLAGS@ @SUNDIALS_CPPFLAGS@
+AM_CFLAGS = -Wno-unknown-pragmas -Wall -Wextra -ansi -std=iso9899:1990
+AM_LDFLAGS = @GRAPHVIZ_RPATH@ @GRACE_RPATH@ @SBML_RPATH@
+bin_PROGRAMS = odeSolver
+odeSolver_SOURCES = main.c \
+		    commandLine.c \
+		    options.c  \
+		    printModel.c \
+		    interactive.c \
+                    getopt.c getopt1.c
+odeSolver_LDADD   = ../src/libODES.la \
+                    @SUNDIALS_LIBS@ \
+                    @SBML_LIBS@ \
+                    @GRACE_LIBS@ \
+                    @GRAPHVIZ_LIBS@
+odeSolver_LDFLAGS = @SUNDIALS_LDFLAGS@ \
+                    @SBML_LDFLAGS@ \
+                    @GRACE_LDFLAGS@ \
+                    @GRAPHVIZ_LDFLAGS@
diff --git a/odeSolver/commandLine.c b/odeSolver/commandLine.c
new file mode 100644
index 0000000..eba9f76
--- /dev/null
+++ b/odeSolver/commandLine.c
@@ -0,0 +1,675 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <02-Sep-2010 19:40:39 raim>
+  $Id: commandLine.c,v 1.30 2010/09/02 17:48:12 raimc Exp $
+*/
+/* 
+ *
+ * This application is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This application  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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Christoph Flamm
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifndef _WIN32
+#include <unistd.h>
+#endif
+#include <string.h>
+#include <time.h>
+
+#include <sbml/SBMLTypes.h>
+
+#include "sbmlsolver/cvodeData.h"
+#include "sbmlsolver/drawGraph.h"
+#include "sbmlsolver/odeConstruct.h"
+#include "sbmlsolver/odeSolver.h"
+#include "sbmlsolver/processAST.h"
+#include "sbmlsolver/sbml.h"
+#include "sbmlsolver/solverError.h"
+#include "sbmlsolver/util.h"
+
+#include "interactive.h"
+#include "printModel.h"
+#include "options.h"
+#include "commandLine.h"
+
+
+/** odeSolver(): Starting the SBML_odeSolver from command-line !!
+    Command-line options are interpreted
+    mainly from here and the according
+    procedures are started.
+    See file sbml.c for parsing and validation of
+    SBML (Step C.1 of the documentation),
+    see file odeConstruct.c for construction of 
+    an ODE model and initialisation of CVODE data
+    (Steps I.1, C.2-C.5 of the documentation),
+    see file odeIntegrate.c for the integration procedure
+    using CVODE.
+    The file printModel.c contains all printing functions,
+    from model structures to results, including printing
+    to XMGrace, (Step X in the documentation).
+    The file drawModel.c contains the graph drawing
+    functions, using graphviz layout algorithms.   
+*/
+
+int
+odeSolver (int argc, char *argv[])
+{
+  SBMLDocument_t *d   = NULL;
+  Model_t        *m   = NULL;
+  Model_t        *ode = NULL;
+  char *filename = NULL;
+  FILE *outfile;
+  ASTNode_t *det;
+  odeModel_t *om;
+  integratorInstance_t *ii;
+  cvodeSettings_t *set;
+  clock_t startTime, endTime ;
+
+  startTime = clock();
+
+  /* read command-line arguments */
+  decodeCML(argc, argv);
+  
+  /** -i: Enter Interactive Mode
+      See files interactive.c.
+      If stdin && stdout are bound to a terminal
+      then option '-i' will redirect you to the
+      interactive mode
+  */
+  if ( Opt.InterActive )
+  {
+    interactive(); /* try it, it's fun :) */
+  }   
+  else
+  {
+    /* --model, --mpath: Read filename and path
+      Read model path and model name from command-line
+      options '--model' and '--mpath'.
+      The option '--model' is not necessary,
+      an argument without option tag will be interpreted
+      as the file name (Opt.ModelFile), where relative paths
+      to the directory from which the program is called
+      are ok, while absolute paths must be set by the option
+      '--mpath'.
+    */
+    char* sbmlFilename;
+
+    if (strlen(Opt.ModelPath) == 0)
+    {
+        ASSIGN_NEW_MEMORY_BLOCK(sbmlFilename,
+				strlen(Opt.ModelFile) + 1, char, EXIT_FAILURE);
+        strcpy(sbmlFilename, Opt.ModelFile);
+    }
+    else
+        sbmlFilename = concat(Opt.ModelPath, Opt.ModelFile);
+
+    /** Parse the Model from File, -v: validation
+	See file sbml.c.
+	The SBMLDocument will be read in, validate
+	if requested by command-line option '-v' and
+	converted to level 2. All further routines are
+	written for SBML level 2!
+	Then the model will be retrieved from the document
+	and used for further processing.	
+    */
+    if ( (d = parseModelWithArguments(sbmlFilename)) == 0 )
+    {
+        SolverError_error(ERROR_ERROR_TYPE, SOLVER_ERROR_CANNOT_PARSE_MODEL,
+			  "Can't parse Model >%s<", sbmlFilename);
+        SolverError_dump();
+        SolverError_haltOnErrors();
+    }
+    else
+    {
+      m = SBMLDocument_getModel(d);
+    }
+    
+    /** -g: Draw a Graph of the Reaction Network
+	See file drawModel.c.
+	On option -g the program will call the graph drawing
+	function to draw a graph of the reaction network
+	and then leave the program. Thus option '-g' overrules
+	any of the following actions and many other
+	command-line options.
+    */
+    if ( Opt.DrawReactions == 1 )
+    {
+      if ( Opt.PrintMessage ) 
+	fprintf(stderr,
+		"\n\nTrying to draw reaction graph '%s_rn.%s' from the model. \nThis can take a while for big models... \n\n",
+		sbmlFilename, Opt.GvFormat);
+  
+      if ( !drawModel(m, sbmlFilename, Opt.GvFormat) > 0 )
+      {
+	xfree(sbmlFilename);
+	SBMLDocument_free(d);
+	fatal(stderr, "%s:%d odeSolver(): Couldn't calculate graph for >%s<",
+	      __FILE__, __LINE__, sbmlFilename);
+      }
+      xfree(sbmlFilename); 
+      SBMLDocument_free(d);
+      return(EXIT_SUCCESS);  
+    }
+
+    /* setting the file to write output data */
+    if ( Opt.Write && !Opt.Xmgrace )
+    {
+      filename = (char *) calloc(strlen(Opt.ModelPath)+
+				 strlen(Opt.ModelFile)+5, sizeof(char));
+      sprintf(filename, "%s%s.dat", Opt.ModelPath, Opt.ModelFile);
+      outfile = fopen(filename, "w");
+	  if (!outfile) {
+		  fatal(stderr, "could not open file %s to write", filename);
+	  }
+    }
+    else if ( Opt.PrintSBML )
+    {
+      filename = (char *) calloc(strlen(Opt.ModelPath)+
+				 strlen(Opt.ModelFile)+12, sizeof(char));
+      sprintf(filename, "%s%s.soslib.xml", Opt.ModelPath, Opt.ModelFile);
+      outfile = fopen(filename, "w");
+	  if (!outfile) {
+		  fatal(stderr, "could not open file %s to write", filename);
+	  }
+    }
+    else
+    {
+      outfile = stdout;
+    }
+    /** -d + -e, -de: Print Determinant of the Jacobian Matrix
+	See file odeConstruct.c.
+	First the differential equations will be constructed
+	from the SBML model, this function will also construct
+	the symbolic expressions of the jacobian matrix, and
+	upon a combination of command-line options '-e' and
+	'-d', the determinant of the jacobian will be calculated
+	and printed out. The program is left afterwards, again
+	overruling the following actions and many command-line
+	options. 
+    */
+    if ( Opt.Determinant == 1 && Opt.PrintModel == 1 )
+    {
+      char *formula;
+      om = ODEModel_create(m);
+      ODEModel_constructJacobian(om);
+      det = ODEModel_constructDeterminant(om);
+      /* slight change in behaviour any errors cause halt - AMF 23rd June 05
+         used to continue with empty model */
+      /* SolverError_haltOnErrors(); */
+      formula = SBML_formulaToString(det);
+      fprintf(outfile, "det(J) = %s\n", formula);
+      free(formula);
+      ODEModel_free(om);
+      xfree(sbmlFilename);
+      SBMLDocument_free(d);
+      ASTNode_free(det);
+      return(EXIT_SUCCESS);    
+    }
+
+    /** -e: Print All Model Contents and ODEs
+	See files printModel.c.
+	With command-line option '-e', the program will
+	just print out everything: model contents, and the
+	derived ODE system; the jacobian matrix expressions
+	will NOT be printed ONLY when additionally option '-j' was
+	set. Exit afterwards.
+    */    
+    if ( Opt.PrintModel == 1 )
+    {
+      printModel(m, outfile);
+      printSpecies(m, outfile);
+      printReactions(m, outfile);
+      
+      om = ODEModel_create(m);
+      /* slight change in behavour - halt now rather than continue
+	 with null model used to continue with empty model */
+      if ( om != NULL )
+      {
+	printODEs(om, outfile);
+	if ( Opt.Jacobian )
+	  ODEModel_constructJacobian(om);
+	printJacobian(om, outfile);
+	ODEModel_free(om);
+      }
+      SolverError_dump(); /* write out all everything including warnings */
+      SolverError_clear();
+      xfree(sbmlFilename);
+      SBMLDocument_free(d);       
+      return(EXIT_SUCCESS);      
+    }
+    
+    /** -o: Print ODE Model 
+	See files odeConstruct.c and printModel.c.
+	When option '-o' is given, the model will be simplified
+	just like done for integration with CVODE. This
+	simplified model will be printed to the given outfile or
+	to stdout. Exit afterwards.
+    */
+    if ( Opt.PrintODEsToSBML == 1 )
+    {
+      ode = Model_reduceToOdes(m);
+     /* slight change in behavour - halt now rather than
+	 continue with null model
+         used to continue with empty model */
+      SolverError_dump(); /* write out all everything including warnings */
+      SolverError_clear();
+      if ( ode != NULL )
+	printODEsToSBML(ode, outfile);
+
+      Model_free(ode);   
+      xfree(sbmlFilename);
+      SBMLDocument_free(d);       
+      
+      return(EXIT_SUCCESS);      
+    }
+
+    /**************** integration routines start below ****************/
+    
+    /** Default: Start Integration Procedure
+	See files odeConstruct.c,
+	odeIntegrate.c and printModel.c.
+    */
+
+    
+    /** At first, the function Model_reduceToOdes(m)
+	will attempt to construct a simplified SBML model,
+	that only consists of species and their ODEs, represented
+	as Rate Rules, and of Events. All constant species, parameters
+	compartments, assignment rules and function definitions
+	will be replaced by their values or expressions respectively
+	in all remaining formulas (ie. rate and algebraic rules and
+	events).
+	Then the initial values and ODEs of the remaining species
+	will be written to the structure cvodeData_t *data.
+    */
+    if ( Opt.PrintMessage ) 
+      fprintf(stderr, "\nGenerating odeModel ...\n");
+  
+    om = ODEModel_create(m);
+   
+    SolverError_dump();
+    SolverError_clear();
+    if ( om == NULL )
+    {
+      xfree(sbmlFilename);
+      SBMLDocument_free(d);       
+      return(EXIT_FAILURE);
+    }
+
+
+    /** Set integration parameters:
+	Now that we have arrived here, we can set the parameters
+	for integration, like
+	the end time and the number of steps to be printed out,
+	absolute and relative error tolerances,
+	use of exact or approximated Jacobian matrix,
+	printing of messages during integration,
+	event handling, steady state detection, and
+	runtime printing of results.
+	And then ..
+    */
+
+    set = CvodeSettings_createWith(Opt.Time, Opt.PrintStep,
+				   Opt.Error, Opt.RError,
+				   Opt.Mxstep, Opt.Method, Opt.IterMethod,
+				   Opt.Jacobian, 0, Opt.HaltOnEvent,
+				   Opt.SteadyState, 1, Opt.Sensitivity, 2);
+    CvodeSettings_setCompileFunctions(set, Opt.Compile);
+    CvodeSettings_setSteadyStateThreshold(set, Opt.ssThreshold);
+    CvodeSettings_setResetCvodeOnEvent(set, Opt.ResetCvodeOnEvents);
+    CvodeSettings_setDetectNegState(set, Opt.DetectNegState);
+    
+    /* ... we can create an integratorInstance */
+    ii = IntegratorInstance_create(om, set);
+   
+    SolverError_dump();
+    SolverError_clear();
+    if ( ii == NULL )
+    {
+      ODEModel_free(om);
+      CvodeSettings_free(set);
+      xfree(sbmlFilename);
+      SBMLDocument_free(d);       
+      return(EXIT_FAILURE);
+    }
+    /** .... we can call the integrator functions,
+	that invoke CVODE and stores results.
+	The function will also handle events and
+	check for steady states.
+    */    
+    
+    integrator(ii, Opt.PrintMessage, Opt.PrintOnTheFly, outfile);
+    
+    SolverError_dump();
+    SolverError_clear();
+    /* RETURN_ON_FATALS_WITH(EXIT_FAILURE); *//* free ode model here */
+
+    /** Finally, print out the results
+	in the format specified by commanline option,
+    */
+
+    /** -f, --onthefly: print results during integration
+	no other printing needed
+	-a, --all: print all results
+	-p, --resultstosbml: print last timepoint to SBML
+    */
+    /** print final data to new SBML file: OVERRIDES ALL OTHER PRINT OPTIONS */
+    if ( Opt.PrintSBML )
+      printResultsToSBML(m, ii->data, outfile);
+    else if ( !Opt.PrintOnTheFly && !Opt.PrintAll )
+    {
+      /** -y: print time course of the jacobian matrix
+	  expressions
+      */	  
+      if ( Opt.PrintJacobian == 1 )
+      {
+	printJacobianTimeCourse(ii->data, outfile);
+      }
+
+      /** -k: print time course of the reactions, i.e.
+	  kinetic law expressions
+      */      
+      else if ( Opt.PrintReactions == 1 )
+      {
+	printReactionTimeCourse(ii->data, m, outfile);
+      }
+
+      /** -r: print time coures of ODE values
+      */
+      else if ( Opt.PrintRates == 1 )
+      {
+	printOdeTimeCourse(ii->data, outfile);
+      }
+      
+      /** -d: print time course of the determinant
+	  of the jacobian matrix
+      */
+      else if ( Opt.Determinant == 1 )
+      {
+	ODEModel_constructJacobian(om);
+	det = determinantNAST(om->jacob, om->neq);
+	printDeterminantTimeCourse(ii->data, det, outfile);
+	ASTNode_free(det);
+      }
+      
+      /** Default (no printing options):
+	  print species concentrations
+       */
+      else
+      {
+	printConcentrationTimeCourse(ii->data, outfile);
+      }      
+    }
+    /** -a, --all: print all results
+    */
+    else if ( !Opt.PrintOnTheFly && Opt.PrintAll )
+    {
+      printJacobianTimeCourse(ii->data, outfile);
+      printReactionTimeCourse(ii->data, m, outfile);
+      printOdeTimeCourse(ii->data, outfile);
+      printConcentrationTimeCourse(ii->data, outfile);
+    }
+    
+
+
+      
+    /** -m: Draw the jacobian interaction graph
+	with values from the last integration point (tout)
+	defining edge color and arrowheads (red, ie. inhibitory
+	for negative values, black, activating for positive
+	values.
+    */
+    if ( Opt.DrawJacobian == 1 )
+    {
+      if ( Opt.PrintMessage )
+        fprintf(stderr,
+	  "\n\nTrying to draw a species interaction graph %s_jm.%s from\n  \
+	  the jacobian matrix at the last time point of integration.\n     \
+	  This can take a while for big models... \n\n",
+	  sbmlFilename, Opt.GvFormat);
+
+      if ( !drawJacoby(ii->data, sbmlFilename, Opt.GvFormat) > 0 ) {
+	Warn(stderr,
+	     "%s:%d main(): Couldn't calculate jacobian graph for >%s<",
+	      __FILE__, __LINE__, sbmlFilename);
+      }
+    }
+
+  endTime = clock();
+
+    
+  /* Print some final statistics   */
+  if ( Opt.PrintMessage )
+  {
+    IntegratorInstance_printStatistics(ii, stdout);
+  }
+
+  if ( Opt.Benchmark )
+  {
+    printf("## execution time %f\n",
+	   ((double)(endTime-startTime))/CLOCKS_PER_SEC);
+    printf("## integrationTime %f\n",
+	   IntegratorInstance_getIntegrationTime(ii));
+  }
+
+    
+    /* thx and good bye. */
+    /* save and close results file */
+    if ( filename )
+    {
+      fclose(outfile);
+      fprintf(stderr, "Saved results to file %s.\n\n", filename);
+      free(filename);
+    }
+
+    SolverError_dump();
+    SolverError_clear();
+    IntegratorInstance_free(ii);
+    CvodeSettings_free(set);
+    ODEModel_free(om);
+    
+    xfree(sbmlFilename);   
+    SBMLDocument_free(d);
+
+  }
+
+  return(EXIT_SUCCESS);
+}
+
+SBMLDocument_t*
+parseModelWithArguments(const char *file)
+{
+    return parseModel(file, Opt.PrintMessage, Opt.Validate);
+}
+
+/************************ Integrator Program *************************/
+/**
+  The function "static int integrator(cvodeData_t *data)" gets a filled
+  structure "CvodeData" and calls CVODE via the integratorInstance group
+  of functions, to integrate the ODEs.
+*/
+
+int integrator(integratorInstance_t *engine,
+	       int PrintMessage, int PrintOnTheFly, FILE *outfile)
+{
+  int i, j;
+  odeModel_t *om = engine->om;
+  odeSense_t *os = engine->os;
+  cvodeData_t *data = engine->data;
+  cvodeSolver_t *solver = engine->solver;
+  
+ /** Command-line option -f/--onthefly:
+      print initial values, if on-the-fly printing is set
+ */
+  if ( PrintOnTheFly && engine->run == 1 )
+  {
+    fprintf(stderr,
+	    "\nPrinting concentrations or sensitivities on the fly !\n");
+    fprintf(stderr, "Overruling all other print options!!\n\n");
+    
+    
+    /* print sensitivities */
+    if ( Opt.Sensitivity && data->sensitivity != NULL )
+    {      
+      fprintf(outfile, "##SENSITIVITIES\n");
+      fprintf(outfile, "#t ");
+      for ( i=0; i<om->neq; i++ ) 
+	for ( j=0; j<os->nsens; j++ )
+	  fprintf(outfile, "d%s/%s ",
+		  om->names[i], om->names[os->index_sens[j]]);
+      fprintf(outfile, "\n");
+       
+      for ( i=0; i<om->neq; i++ ) 
+	for ( j=0; j<os->nsens; j++ )
+	  fprintf(outfile, "%g ", data->sensitivity[i][j]);
+      fprintf(outfile, "\n");
+    }
+    /* print concentrations */ 
+    else
+    {      
+      fprintf(outfile, "##CONCENTRATIONS\n");
+      fprintf(outfile, "#t ");      
+      for ( i=0; i<data->nvalues; i++ )
+	fprintf(outfile, "%s ", om->names[i]);
+
+      fprintf(outfile, "\n");
+
+      fprintf(outfile, "%g ", solver->t0);
+      for ( i=0; i<data->nvalues; i++ )
+	fprintf(outfile, "%g ", data->value[i]);
+
+      fprintf(outfile, "\n");
+    }
+  }
+  else
+  {
+    if ( PrintMessage )
+      fprintf(stderr,"Integrating        ");
+  }
+
+  /*
+    In loop over output points, call CVode, test for error
+    and print results at specified intervals into results
+    structure. If option '-f' or '--onthefly' was set, then
+    print results immediately to the given outfile (default:
+    stdout).
+  */
+  
+  while (!IntegratorInstance_timeCourseCompleted(engine))
+  {
+    if (!IntegratorInstance_integrateOneStep(engine))
+    {
+      /* SolverError_dump(); */
+      return IntegratorInstance_handleError(engine);
+    }
+          
+    /* print immediately if PrintOnTheFly was set
+       with '-d' or '--onthefly'
+    */
+ 
+    if ( PrintOnTheFly )
+    {
+      /* print sensitivities */
+      if ( Opt.Sensitivity && data->sensitivity != NULL )
+      {
+	fprintf(outfile, "%g ", solver->t);
+	for ( i=0; i<data->neq; i++ ) 
+	  for ( j=0; j<data->nsens; j++ ) 
+	    fprintf(outfile, "%g ", data->sensitivity[i][j]);
+	fprintf(outfile, "\n");
+
+      }
+      /* print concentrations */
+      else
+      {
+	/* first, update assignment rules */
+	if ( !data->allRulesUpdated )
+	{
+	  for ( i=0; i<om->nass; i++ )
+	  {
+	    nonzeroElem_t *ordered = om->assignmentOrder[i];
+#ifdef ARITHMETIC_TEST
+	    data->value[ordered->i] = ordered->ijcode->evaluate(data);
+#else
+	    data->value[ordered->i] = evaluateAST(ordered->ij, data);
+#endif
+	  }
+	  data->allRulesUpdated = 1;
+	}	
+	fprintf(outfile, "%g ", solver->t);
+	for ( i=0; i<data->nvalues; i++ )
+	  fprintf(outfile, "%g ", data->value[i]);
+	fprintf(outfile, "\n");
+	
+      }
+    }
+    else if ( PrintMessage )
+    {
+      const  char chars[5] = "|/-\\";
+      fprintf(stderr, "\b\b\b\b\b\b");
+      fprintf(stderr, "%.2f %c",
+	      (float)(solver->iout-1)/(float)solver->nout,
+	      chars[(solver->iout-1) % 4]);
+    }
+  }
+  
+  if ( PrintOnTheFly && engine->run == 1 )
+  {    
+    fprintf(outfile, "#t ");
+    /* print sensitivities */
+    if ( Opt.Sensitivity && data->sensitivity != NULL )
+    {      
+      for ( i=0; i<om->neq; i++ ) 
+	for ( j=0; j<os->nsens; j++ )
+	  fprintf(outfile, "d%s/%s ",
+		  om->names[i], om->names[os->index_sens[j]]);
+      fprintf(outfile, "\n");
+      fprintf(outfile, "##SENSITIVITIES\n");
+    }
+    /* print concentrations */
+    else
+    {
+      for ( i=0; i<data->nvalues; i++ )
+	fprintf(outfile, "%s ", om->names[i]);
+
+      fprintf(outfile, "\n");
+      fprintf(outfile, "##CONCENTRATIONS\n");
+    }
+  }
+  else if ( PrintMessage )
+    fprintf(stderr, "finished. Results stored.\n");
+
+  return 0;
+
+} 
+
+/* End of file */
diff --git a/odeSolver/commandLine.h b/odeSolver/commandLine.h
new file mode 100644
index 0000000..c0df597
--- /dev/null
+++ b/odeSolver/commandLine.h
@@ -0,0 +1,52 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2005-10-26 17:38:04 raim>
+  $Id: commandLine.h,v 1.3 2005/10/28 09:05:53 afinney Exp $
+*/
+/* 
+ *
+ * This application is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This application  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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Christoph Flamm
+ */
+
+#ifndef _COMMANDLINE_H_
+#define _COMMANDLINE_H_
+
+#include <sbml/SBMLTypes.h>
+
+#include "../src/sbmlsolver/integratorInstance.h"
+
+SBMLDocument_t* parseModelWithArguments(const char *file);
+int integrator(integratorInstance_t *engine, int PrintMessage,
+	       int PrintOnTheFly, FILE *outfile);
+
+int odeSolver (int argc, char *argv[]);
+
+#endif
+
+/* End of file */
diff --git a/odeSolver/getopt.c b/odeSolver/getopt.c
new file mode 100644
index 0000000..22b0a89
--- /dev/null
+++ b/odeSolver/getopt.c
@@ -0,0 +1,1056 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* Getopt for GNU.
+   NOTE: getopt is now part of the C library, so if you don't know what
+   "Keep this file name-space clean" means, talk to drepper at gnu.org
+   before changing it!
+
+   Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+   	Free Software Foundation, Inc.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+

+/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
+   Ditto for AIX 3.2 and <stdlib.h>.  */
+#ifndef _NO_PROTO
+# define _NO_PROTO
+#endif
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#if !defined __STDC__ || !__STDC__
+/* This is a separate conditional since some stdc systems
+   reject `defined (const)'.  */
+# ifndef const
+#  define const
+# endif
+#endif
+
+#include <stdio.h>
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+   actually compiling the library itself.  This code is part of the GNU C
+   Library, but also included in many other GNU distributions.  Compiling
+   and linking in this code is a waste when using the GNU C library
+   (especially if it is a shared library).  Rather than having every GNU
+   program understand `configure --with-gnu-libc' and omit the object files,
+   it is simpler to just do this in the source for each such file.  */
+
+#define GETOPT_INTERFACE_VERSION 2
+#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
+# include <gnu-versions.h>
+# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
+#  define ELIDE_CODE
+# endif
+#endif
+
+#ifndef ELIDE_CODE
+
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef	__GNU_LIBRARY__
+/* Don't include stdlib.h for non-GNU C libraries because some of them
+   contain conflicting prototypes for getopt.  */
+# include <stdlib.h>
+# include <unistd.h>
+#endif	/* GNU C library.  */
+
+#ifdef VMS
+# include <unixlib.h>
+# if HAVE_STRING_H - 0
+#  include <string.h>
+# endif
+#endif
+
+#ifndef _
+/* This is for other GNU distributions with internationalized messages.
+   When compiling libc, the _ macro is predefined.  */
+# ifdef HAVE_LIBINTL_H
+#  include <libintl.h>
+#  define _(msgid)	gettext (msgid)
+# else
+#  define _(msgid)	(msgid)
+# endif
+#endif
+
+/* This version of `getopt' appears to the caller like standard Unix `getopt'
+   but it behaves differently for the user, since it allows the user
+   to intersperse the options with the other arguments.
+
+   As `getopt' works, it permutes the elements of ARGV so that,
+   when it is done, all the options precede everything else.  Thus
+   all application programs are extended to handle flexible argument order.
+
+   Setting the environment variable POSIXLY_CORRECT disables permutation.
+   Then the behavior is completely standard.
+
+   GNU application programs can use a third alternative mode in which
+   they can distinguish the relative order of options and other arguments.  */
+
+#include "getopt.h"
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+/* 1003.2 says this must be 1 before any call.  */
+int optind = 1;
+
+/* Formerly, initialization of getopt depended on optind==0, which
+   causes problems with re-calling getopt as programs generally don't
+   know that. */
+
+int __getopt_initialized;
+
+/* The next char to be scanned in the option-element
+   in which the last option character we returned was found.
+   This allows us to pick up the scan where we left off.
+
+   If this is zero, or a null string, it means resume the scan
+   by advancing to the next ARGV-element.  */
+
+static char *nextchar;
+
+/* Callers store zero here to inhibit the error message
+   for unrecognized options.  */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+   This must be initialized on some systems to avoid linking in the
+   system's own getopt implementation.  */
+
+int optopt = '?';
+
+/* Describe how to deal with options that follow non-option ARGV-elements.
+
+   If the caller did not specify anything,
+   the default is REQUIRE_ORDER if the environment variable
+   POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+   REQUIRE_ORDER means don't recognize them as options;
+   stop option processing when the first non-option is seen.
+   This is what Unix does.
+   This mode of operation is selected by either setting the environment
+   variable POSIXLY_CORRECT, or using `+' as the first character
+   of the list of option characters.
+
+   PERMUTE is the default.  We permute the contents of ARGV as we scan,
+   so that eventually all the non-options are at the end.  This allows options
+   to be given in any order, even with programs that were not written to
+   expect this.
+
+   RETURN_IN_ORDER is an option available to programs that were written
+   to expect options and other ARGV-elements in any order and that care about
+   the ordering of the two.  We describe each non-option ARGV-element
+   as if it were the argument of an option with character code 1.
+   Using `-' as the first character of the list of option characters
+   selects this mode of operation.
+
+   The special argument `--' forces an end of option-scanning regardless
+   of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
+   `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
+
+static enum
+{
+  REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+} ordering;
+
+/* Value of POSIXLY_CORRECT environment variable.  */
+static char *posixly_correct;
+

+#ifdef	__GNU_LIBRARY__
+/* We want to avoid inclusion of string.h with non-GNU libraries
+   because there are many ways it can cause trouble.
+   On some systems, it contains special magic macros that don't work
+   in GCC.  */
+# include <string.h>
+# define my_index	strchr
+#else
+
+# if HAVE_STRING_H
+#  include <string.h>
+# else
+#  include <strings.h>
+# endif
+
+/* Avoid depending on library functions or files
+   whose names are inconsistent.  */
+
+#ifndef getenv
+extern char *getenv ();
+#endif
+
+static char *
+my_index (str, chr)
+     const char *str;
+     int chr;
+{
+  while (*str)
+    {
+      if (*str == chr)
+	return (char *) str;
+      str++;
+    }
+  return 0;
+}
+
+/* If using GCC, we can safely declare strlen this way.
+   If not using GCC, it is ok not to declare it.  */
+#ifdef __GNUC__
+/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
+   That was relevant to code that was here before.  */
+# if (!defined __STDC__ || !__STDC__) && !defined strlen
+/* gcc with -traditional declares the built-in strlen to return int,
+   and has done so at least since version 2.4.5. -- rms.  */
+extern int strlen (const char *);
+# endif /* not __STDC__ */
+#endif /* __GNUC__ */
+
+#endif /* not __GNU_LIBRARY__ */
+

+/* Handle permutation of arguments.  */
+
+/* Describe the part of ARGV that contains non-options that have
+   been skipped.  `first_nonopt' is the index in ARGV of the first of them;
+   `last_nonopt' is the index after the last of them.  */
+
+static int first_nonopt;
+static int last_nonopt;
+
+#ifdef _LIBC
+/* Bash 2.0 gives us an environment variable containing flags
+   indicating ARGV elements that should not be considered arguments.  */
+
+/* Defined in getopt_init.c  */
+extern char *__getopt_nonoption_flags;
+
+static int nonoption_flags_max_len;
+static int nonoption_flags_len;
+
+static int original_argc;
+static char *const *original_argv;
+
+/* Make sure the environment variable bash 2.0 puts in the environment
+   is valid for the getopt call we must make sure that the ARGV passed
+   to getopt is that one passed to the process.  */
+static void
+__attribute__ ((unused))
+store_args_and_env (int argc, char *const *argv)
+{
+  /* XXX This is no good solution.  We should rather copy the args so
+     that we can compare them later.  But we must not use malloc(3).  */
+  original_argc = argc;
+  original_argv = argv;
+}
+# ifdef text_set_element
+text_set_element (__libc_subinit, store_args_and_env);
+# endif /* text_set_element */
+
+# define SWAP_FLAGS(ch1, ch2) \
+  if (nonoption_flags_len > 0)						      \
+    {									      \
+      char __tmp = __getopt_nonoption_flags[ch1];			      \
+      __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];	      \
+      __getopt_nonoption_flags[ch2] = __tmp;				      \
+    }
+#else	/* !_LIBC */
+# define SWAP_FLAGS(ch1, ch2)
+#endif	/* _LIBC */
+
+/* Exchange two adjacent subsequences of ARGV.
+   One subsequence is elements [first_nonopt,last_nonopt)
+   which contains all the non-options that have been skipped so far.
+   The other is elements [last_nonopt,optind), which contains all
+   the options processed since those non-options were skipped.
+
+   `first_nonopt' and `last_nonopt' are relocated so that they describe
+   the new indices of the non-options in ARGV after they are moved.  */
+
+#if defined __STDC__ && __STDC__
+static void exchange (char **);
+#endif
+
+static void
+exchange (argv)
+     char **argv;
+{
+  int bottom = first_nonopt;
+  int middle = last_nonopt;
+  int top = optind;
+  char *tem;
+
+  /* Exchange the shorter segment with the far end of the longer segment.
+     That puts the shorter segment into the right place.
+     It leaves the longer segment in the right place overall,
+     but it consists of two parts that need to be swapped next.  */
+
+#ifdef _LIBC
+  /* First make sure the handling of the `__getopt_nonoption_flags'
+     string can work normally.  Our top argument must be in the range
+     of the string.  */
+  if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
+    {
+      /* We must extend the array.  The user plays games with us and
+	 presents new arguments.  */
+      char *new_str = malloc (top + 1);
+      if (new_str == NULL)
+	nonoption_flags_len = nonoption_flags_max_len = 0;
+      else
+	{
+	  memset (__mempcpy (new_str, __getopt_nonoption_flags,
+			     nonoption_flags_max_len),
+		  '\0', top + 1 - nonoption_flags_max_len);
+	  nonoption_flags_max_len = top + 1;
+	  __getopt_nonoption_flags = new_str;
+	}
+    }
+#endif
+
+  while (top > middle && middle > bottom)
+    {
+      if (top - middle > middle - bottom)
+	{
+	  /* Bottom segment is the short one.  */
+	  int len = middle - bottom;
+	  register int i;
+
+	  /* Swap it with the top part of the top segment.  */
+	  for (i = 0; i < len; i++)
+	    {
+	      tem = argv[bottom + i];
+	      argv[bottom + i] = argv[top - (middle - bottom) + i];
+	      argv[top - (middle - bottom) + i] = tem;
+	      SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
+	    }
+	  /* Exclude the moved bottom segment from further swapping.  */
+	  top -= len;
+	}
+      else
+	{
+	  /* Top segment is the short one.  */
+	  int len = top - middle;
+	  register int i;
+
+	  /* Swap it with the bottom part of the bottom segment.  */
+	  for (i = 0; i < len; i++)
+	    {
+	      tem = argv[bottom + i];
+	      argv[bottom + i] = argv[middle + i];
+	      argv[middle + i] = tem;
+	      SWAP_FLAGS (bottom + i, middle + i);
+	    }
+	  /* Exclude the moved top segment from further swapping.  */
+	  bottom += len;
+	}
+    }
+
+  /* Update records for the slots the non-options now occupy.  */
+
+  first_nonopt += (optind - last_nonopt);
+  last_nonopt = optind;
+}
+
+/* Initialize the internal data when the first call is made.  */
+
+#if defined __STDC__ && __STDC__
+static const char *_getopt_initialize (int, char *const *, const char *);
+#endif
+static const char *
+_getopt_initialize (argc, argv, optstring)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+{
+  /* Start processing options with ARGV-element 1 (since ARGV-element 0
+     is the program name); the sequence of previously skipped
+     non-option ARGV-elements is empty.  */
+
+  first_nonopt = last_nonopt = optind;
+
+  nextchar = NULL;
+
+  posixly_correct = getenv ("POSIXLY_CORRECT");
+
+  /* Determine how to handle the ordering of options and nonoptions.  */
+
+  if (optstring[0] == '-')
+    {
+      ordering = RETURN_IN_ORDER;
+      ++optstring;
+    }
+  else if (optstring[0] == '+')
+    {
+      ordering = REQUIRE_ORDER;
+      ++optstring;
+    }
+  else if (posixly_correct != NULL)
+    ordering = REQUIRE_ORDER;
+  else
+    ordering = PERMUTE;
+
+#ifdef _LIBC
+  if (posixly_correct == NULL
+      && argc == original_argc && argv == original_argv)
+    {
+      if (nonoption_flags_max_len == 0)
+	{
+	  if (__getopt_nonoption_flags == NULL
+	      || __getopt_nonoption_flags[0] == '\0')
+	    nonoption_flags_max_len = -1;
+	  else
+	    {
+	      const char *orig_str = __getopt_nonoption_flags;
+	      int len = nonoption_flags_max_len = strlen (orig_str);
+	      if (nonoption_flags_max_len < argc)
+		nonoption_flags_max_len = argc;
+	      __getopt_nonoption_flags =
+		(char *) malloc (nonoption_flags_max_len);
+	      if (__getopt_nonoption_flags == NULL)
+		nonoption_flags_max_len = -1;
+	      else
+		memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
+			'\0', nonoption_flags_max_len - len);
+	    }
+	}
+      nonoption_flags_len = nonoption_flags_max_len;
+    }
+  else
+    nonoption_flags_len = 0;
+#endif
+
+  return optstring;
+}
+

+/* Scan elements of ARGV (whose length is ARGC) for option characters
+   given in OPTSTRING.
+
+   If an element of ARGV starts with '-', and is not exactly "-" or "--",
+   then it is an option element.  The characters of this element
+   (aside from the initial '-') are option characters.  If `getopt'
+   is called repeatedly, it returns successively each of the option characters
+   from each of the option elements.
+
+   If `getopt' finds another option character, it returns that character,
+   updating `optind' and `nextchar' so that the next call to `getopt' can
+   resume the scan with the following option character or ARGV-element.
+
+   If there are no more option characters, `getopt' returns -1.
+   Then `optind' is the index in ARGV of the first ARGV-element
+   that is not an option.  (The ARGV-elements have been permuted
+   so that those that are not options now come last.)
+
+   OPTSTRING is a string containing the legitimate option characters.
+   If an option character is seen that is not listed in OPTSTRING,
+   return '?' after printing an error message.  If you set `opterr' to
+   zero, the error message is suppressed but we still return '?'.
+
+   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+   so the following text in the same ARGV-element, or the text of the following
+   ARGV-element, is returned in `optarg'.  Two colons mean an option that
+   wants an optional arg; if there is text in the current ARGV-element,
+   it is returned in `optarg', otherwise `optarg' is set to zero.
+
+   If OPTSTRING starts with `-' or `+', it requests different methods of
+   handling the non-option ARGV-elements.
+   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+   Long-named options begin with `--' instead of `-'.
+   Their names may be abbreviated as long as the abbreviation is unique
+   or is an exact match for some defined option.  If they have an
+   argument, it follows the option name in the same ARGV-element, separated
+   from the option name by a `=', or else the in next ARGV-element.
+   When `getopt' finds a long-named option, it returns 0 if that option's
+   `flag' field is nonzero, the value of the option's `val' field
+   if the `flag' field is zero.
+
+   The elements of ARGV aren't really const, because we permute them.
+   But we pretend they're const in the prototype to be compatible
+   with other systems.
+
+   LONGOPTS is a vector of `struct option' terminated by an
+   element containing a name which is zero.
+
+   LONGIND returns the index in LONGOPT of the long-named option found.
+   It is only valid when a long-named option has been found by the most
+   recent call.
+
+   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+   long-named options.  */
+
+int
+_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+     const struct option *longopts;
+     int *longind;
+     int long_only;
+{
+  int print_errors = opterr;
+  if (optstring[0] == ':')
+    print_errors = 0;
+
+  optarg = NULL;
+
+  if (optind == 0 || !__getopt_initialized)
+    {
+      if (optind == 0)
+	optind = 1;	/* Don't scan ARGV[0], the program name.  */
+      optstring = _getopt_initialize (argc, argv, optstring);
+      __getopt_initialized = 1;
+    }
+
+  /* Test whether ARGV[optind] points to a non-option argument.
+     Either it does not have option syntax, or there is an environment flag
+     from the shell indicating it is not an option.  The later information
+     is only used when the used in the GNU libc.  */
+#ifdef _LIBC
+# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0'	      \
+		      || (optind < nonoption_flags_len			      \
+			  && __getopt_nonoption_flags[optind] == '1'))
+#else
+# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
+#endif
+
+  if (nextchar == NULL || *nextchar == '\0')
+    {
+      /* Advance to the next ARGV-element.  */
+
+      /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
+	 moved back by the user (who may also have changed the arguments).  */
+      if (last_nonopt > optind)
+	last_nonopt = optind;
+      if (first_nonopt > optind)
+	first_nonopt = optind;
+
+      if (ordering == PERMUTE)
+	{
+	  /* If we have just processed some options following some non-options,
+	     exchange them so that the options come first.  */
+
+	  if (first_nonopt != last_nonopt && last_nonopt != optind)
+	    exchange ((char **) argv);
+	  else if (last_nonopt != optind)
+	    first_nonopt = optind;
+
+	  /* Skip any additional non-options
+	     and extend the range of non-options previously skipped.  */
+
+	  while (optind < argc && NONOPTION_P)
+	    optind++;
+	  last_nonopt = optind;
+	}
+
+      /* The special ARGV-element `--' means premature end of options.
+	 Skip it like a null option,
+	 then exchange with previous non-options as if it were an option,
+	 then skip everything else like a non-option.  */
+
+      if (optind != argc && !strcmp (argv[optind], "--"))
+	{
+	  optind++;
+
+	  if (first_nonopt != last_nonopt && last_nonopt != optind)
+	    exchange ((char **) argv);
+	  else if (first_nonopt == last_nonopt)
+	    first_nonopt = optind;
+	  last_nonopt = argc;
+
+	  optind = argc;
+	}
+
+      /* If we have done all the ARGV-elements, stop the scan
+	 and back over any non-options that we skipped and permuted.  */
+
+      if (optind == argc)
+	{
+	  /* Set the next-arg-index to point at the non-options
+	     that we previously skipped, so the caller will digest them.  */
+	  if (first_nonopt != last_nonopt)
+	    optind = first_nonopt;
+	  return -1;
+	}
+
+      /* If we have come to a non-option and did not permute it,
+	 either stop the scan or describe it to the caller and pass it by.  */
+
+      if (NONOPTION_P)
+	{
+	  if (ordering == REQUIRE_ORDER)
+	    return -1;
+	  optarg = argv[optind++];
+	  return 1;
+	}
+
+      /* We have found another option-ARGV-element.
+	 Skip the initial punctuation.  */
+
+      nextchar = (argv[optind] + 1
+		  + (longopts != NULL && argv[optind][1] == '-'));
+    }
+
+  /* Decode the current option-ARGV-element.  */
+
+  /* Check whether the ARGV-element is a long option.
+
+     If long_only and the ARGV-element has the form "-f", where f is
+     a valid short option, don't consider it an abbreviated form of
+     a long option that starts with f.  Otherwise there would be no
+     way to give the -f short option.
+
+     On the other hand, if there's a long option "fubar" and
+     the ARGV-element is "-fu", do consider that an abbreviation of
+     the long option, just like "--fu", and not "-f" with arg "u".
+
+     This distinction seems to be the most useful approach.  */
+
+  if (longopts != NULL
+      && (argv[optind][1] == '-'
+	  || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
+    {
+      char *nameend;
+      const struct option *p;
+      const struct option *pfound = NULL;
+      int exact = 0;
+      int ambig = 0;
+      int indfound = -1;
+      int option_index;
+
+      for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
+	/* Do nothing.  */ ;
+
+      /* Test all long options for either exact match
+	 or abbreviated matches.  */
+      for (p = longopts, option_index = 0; p->name; p++, option_index++)
+	if (!strncmp (p->name, nextchar, nameend - nextchar))
+	  {
+	    if ((unsigned int) (nameend - nextchar)
+		== (unsigned int) strlen (p->name))
+	      {
+		/* Exact match found.  */
+		pfound = p;
+		indfound = option_index;
+		exact = 1;
+		break;
+	      }
+	    else if (pfound == NULL)
+	      {
+		/* First nonexact match found.  */
+		pfound = p;
+		indfound = option_index;
+	      }
+	    else
+	      /* Second or later nonexact match found.  */
+	      ambig = 1;
+	  }
+
+      if (ambig && !exact)
+	{
+	  if (print_errors)
+	    fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
+		     argv[0], argv[optind]);
+	  nextchar += strlen (nextchar);
+	  optind++;
+	  optopt = 0;
+	  return '?';
+	}
+
+      if (pfound != NULL)
+	{
+	  option_index = indfound;
+	  optind++;
+	  if (*nameend)
+	    {
+	      /* Don't test has_arg with >, because some C compilers don't
+		 allow it to be used on enums.  */
+	      if (pfound->has_arg)
+		optarg = nameend + 1;
+	      else
+		{
+		  if (print_errors)
+		    {
+		      if (argv[optind - 1][1] == '-')
+			/* --option */
+			fprintf (stderr,
+				 _("%s: option `--%s' doesn't allow an argument\n"),
+				 argv[0], pfound->name);
+		      else
+			/* +option or -option */
+			fprintf (stderr,
+				 _("%s: option `%c%s' doesn't allow an argument\n"),
+				 argv[0], argv[optind - 1][0], pfound->name);
+		    }
+
+		  nextchar += strlen (nextchar);
+
+		  optopt = pfound->val;
+		  return '?';
+		}
+	    }
+	  else if (pfound->has_arg == 1)
+	    {
+	      if (optind < argc)
+		optarg = argv[optind++];
+	      else
+		{
+		  if (print_errors)
+		    fprintf (stderr,
+			   _("%s: option `%s' requires an argument\n"),
+			   argv[0], argv[optind - 1]);
+		  nextchar += strlen (nextchar);
+		  optopt = pfound->val;
+		  return optstring[0] == ':' ? ':' : '?';
+		}
+	    }
+	  nextchar += strlen (nextchar);
+	  if (longind != NULL)
+	    *longind = option_index;
+	  if (pfound->flag)
+	    {
+	      *(pfound->flag) = pfound->val;
+	      return 0;
+	    }
+	  return pfound->val;
+	}
+
+      /* Can't find it as a long option.  If this is not getopt_long_only,
+	 or the option starts with '--' or is not a valid short
+	 option, then it's an error.
+	 Otherwise interpret it as a short option.  */
+      if (!long_only || argv[optind][1] == '-'
+	  || my_index (optstring, *nextchar) == NULL)
+	{
+	  if (print_errors)
+	    {
+	      if (argv[optind][1] == '-')
+		/* --option */
+		fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
+			 argv[0], nextchar);
+	      else
+		/* +option or -option */
+		fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
+			 argv[0], argv[optind][0], nextchar);
+	    }
+	  nextchar = (char *) "";
+	  optind++;
+	  optopt = 0;
+	  return '?';
+	}
+    }
+
+  /* Look at and handle the next short option-character.  */
+
+  {
+    char c = *nextchar++;
+    char *temp = my_index (optstring, c);
+
+    /* Increment `optind' when we start to process its last character.  */
+    if (*nextchar == '\0')
+      ++optind;
+
+    if (temp == NULL || c == ':')
+      {
+	if (print_errors)
+	  {
+	    if (posixly_correct)
+	      /* 1003.2 specifies the format of this message.  */
+	      fprintf (stderr, _("%s: illegal option -- %c\n"),
+		       argv[0], c);
+	    else
+	      fprintf (stderr, _("%s: invalid option -- %c\n"),
+		       argv[0], c);
+	  }
+	optopt = c;
+	return '?';
+      }
+    /* Convenience. Treat POSIX -W foo same as long option --foo */
+    if (temp[0] == 'W' && temp[1] == ';')
+      {
+	char *nameend;
+	const struct option *p;
+	const struct option *pfound = NULL;
+	int exact = 0;
+	int ambig = 0;
+	int indfound = 0;
+	int option_index;
+
+	/* This is an option that requires an argument.  */
+	if (*nextchar != '\0')
+	  {
+	    optarg = nextchar;
+	    /* If we end this ARGV-element by taking the rest as an arg,
+	       we must advance to the next element now.  */
+	    optind++;
+	  }
+	else if (optind == argc)
+	  {
+	    if (print_errors)
+	      {
+		/* 1003.2 specifies the format of this message.  */
+		fprintf (stderr, _("%s: option requires an argument -- %c\n"),
+			 argv[0], c);
+	      }
+	    optopt = c;
+	    if (optstring[0] == ':')
+	      c = ':';
+	    else
+	      c = '?';
+	    return c;
+	  }
+	else
+	  /* We already incremented `optind' once;
+	     increment it again when taking next ARGV-elt as argument.  */
+	  optarg = argv[optind++];
+
+	/* optarg is now the argument, see if it's in the
+	   table of longopts.  */
+
+	for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
+	  /* Do nothing.  */ ;
+
+	/* Test all long options for either exact match
+	   or abbreviated matches.  */
+	for (p = longopts, option_index = 0; p->name; p++, option_index++)
+	  if (!strncmp (p->name, nextchar, nameend - nextchar))
+	    {
+	      if ((unsigned int) (nameend - nextchar) == strlen (p->name))
+		{
+		  /* Exact match found.  */
+		  pfound = p;
+		  indfound = option_index;
+		  exact = 1;
+		  break;
+		}
+	      else if (pfound == NULL)
+		{
+		  /* First nonexact match found.  */
+		  pfound = p;
+		  indfound = option_index;
+		}
+	      else
+		/* Second or later nonexact match found.  */
+		ambig = 1;
+	    }
+	if (ambig && !exact)
+	  {
+	    if (print_errors)
+	      fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
+		       argv[0], argv[optind]);
+	    nextchar += strlen (nextchar);
+	    optind++;
+	    return '?';
+	  }
+	if (pfound != NULL)
+	  {
+	    option_index = indfound;
+	    if (*nameend)
+	      {
+		/* Don't test has_arg with >, because some C compilers don't
+		   allow it to be used on enums.  */
+		if (pfound->has_arg)
+		  optarg = nameend + 1;
+		else
+		  {
+		    if (print_errors)
+		      fprintf (stderr, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+			       argv[0], pfound->name);
+
+		    nextchar += strlen (nextchar);
+		    return '?';
+		  }
+	      }
+	    else if (pfound->has_arg == 1)
+	      {
+		if (optind < argc)
+		  optarg = argv[optind++];
+		else
+		  {
+		    if (print_errors)
+		      fprintf (stderr,
+			       _("%s: option `%s' requires an argument\n"),
+			       argv[0], argv[optind - 1]);
+		    nextchar += strlen (nextchar);
+		    return optstring[0] == ':' ? ':' : '?';
+		  }
+	      }
+	    nextchar += strlen (nextchar);
+	    if (longind != NULL)
+	      *longind = option_index;
+	    if (pfound->flag)
+	      {
+		*(pfound->flag) = pfound->val;
+		return 0;
+	      }
+	    return pfound->val;
+	  }
+	  nextchar = NULL;
+	  return 'W';	/* Let the application handle it.   */
+      }
+    if (temp[1] == ':')
+      {
+	if (temp[2] == ':')
+	  {
+	    /* This is an option that accepts an argument optionally.  */
+	    if (*nextchar != '\0')
+	      {
+		optarg = nextchar;
+		optind++;
+	      }
+	    else
+	      optarg = NULL;
+	    nextchar = NULL;
+	  }
+	else
+	  {
+	    /* This is an option that requires an argument.  */
+	    if (*nextchar != '\0')
+	      {
+		optarg = nextchar;
+		/* If we end this ARGV-element by taking the rest as an arg,
+		   we must advance to the next element now.  */
+		optind++;
+	      }
+	    else if (optind == argc)
+	      {
+		if (print_errors)
+		  {
+		    /* 1003.2 specifies the format of this message.  */
+		    fprintf (stderr,
+			     _("%s: option requires an argument -- %c\n"),
+			     argv[0], c);
+		  }
+		optopt = c;
+		if (optstring[0] == ':')
+		  c = ':';
+		else
+		  c = '?';
+	      }
+	    else
+	      /* We already incremented `optind' once;
+		 increment it again when taking next ARGV-elt as argument.  */
+	      optarg = argv[optind++];
+	    nextchar = NULL;
+	  }
+      }
+    return c;
+  }
+}
+
+int
+getopt (argc, argv, optstring)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+{
+  return _getopt_internal (argc, argv, optstring,
+			   (const struct option *) 0,
+			   (int *) 0,
+			   0);
+}
+
+#endif	/* Not ELIDE_CODE.  */
+

+#ifdef TEST
+
+/* Compile with -DTEST to make an executable for use in testing
+   the above definition of `getopt'.  */
+
+int
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+
+      c = getopt (argc, argv, "abc:d:0123456789");
+      if (c == -1)
+	break;
+
+      switch (c)
+	{
+	case '0':
+	case '1':
+	case '2':
+	case '3':
+	case '4':
+	case '5':
+	case '6':
+	case '7':
+	case '8':
+	case '9':
+	  if (digit_optind != 0 && digit_optind != this_option_optind)
+	    printf ("digits occur in two different argv-elements.\n");
+	  digit_optind = this_option_optind;
+	  printf ("option %c\n", c);
+	  break;
+
+	case 'a':
+	  printf ("option a\n");
+	  break;
+
+	case 'b':
+	  printf ("option b\n");
+	  break;
+
+	case 'c':
+	  printf ("option c with value `%s'\n", optarg);
+	  break;
+
+	case '?':
+	  break;
+
+	default:
+	  printf ("?? getopt returned character code 0%o ??\n", c);
+	}
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+	printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
diff --git a/odeSolver/getopt.h b/odeSolver/getopt.h
new file mode 100644
index 0000000..b0147e9
--- /dev/null
+++ b/odeSolver/getopt.h
@@ -0,0 +1,169 @@
+/* Declarations for getopt.
+   Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _GETOPT_H
+
+#ifndef __need_getopt
+# define _GETOPT_H 1
+#endif
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+   for unrecognized options.  */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized.  */
+
+extern int optopt;
+
+#ifndef __need_getopt
+/* Describe the long-named options requested by the application.
+   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+   of `struct option' terminated by an element containing a name which is
+   zero.
+
+   The field `has_arg' is:
+   no_argument		(or 0) if the option does not take an argument,
+   required_argument	(or 1) if the option requires an argument,
+   optional_argument 	(or 2) if the option takes an optional argument.
+
+   If the field `flag' is not NULL, it points to a variable that is set
+   to the value given in the field `val' when the option is found, but
+   left unchanged if the option is not found.
+
+   To have a long-named option do something other than set an `int' to
+   a compiled-in constant, such as set a value from `optarg', set the
+   option's `flag' field to zero and its `val' field to a nonzero
+   value (the equivalent single-letter option character, if there is
+   one).  For long options that have a zero `flag' field, `getopt'
+   returns the contents of the `val' field.  */
+
+struct option
+{
+# if defined __STDC__ && __STDC__
+  const char *name;
+# else
+  char *name;
+# endif
+  /* has_arg can't be an enum because some compilers complain about
+     type mismatches in all the code that assumes it is an int.  */
+  int has_arg;
+  int *flag;
+  int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'.  */
+
+# define no_argument		0
+# define required_argument	1
+# define optional_argument	2
+#endif	/* need getopt */
+
+
+/* Get definitions and prototypes for functions to process the
+   arguments in ARGV (ARGC of them, minus the program name) for
+   options given in OPTS.
+
+   Return the option character from OPTS just read.  Return -1 when
+   there are no more options.  For unrecognized options, or options
+   missing arguments, `optopt' is set to the option letter, and '?' is
+   returned.
+
+   The OPTS string is a list of characters which are recognized option
+   letters, optionally followed by colons, specifying that that letter
+   takes an argument, to be placed in `optarg'.
+
+   If a letter in OPTS is followed by two colons, its argument is
+   optional.  This behavior is specific to the GNU `getopt'.
+
+   The argument `--' causes premature termination of argument
+   scanning, explicitly telling `getopt' that there are no more
+   options.
+
+   If OPTS begins with `--', then non-option arguments are treated as
+   arguments to the option '\0'.  This behavior is specific to the GNU
+   `getopt'.  */
+
+#if defined __STDC__ && __STDC__
+# ifdef __GNU_LIBRARY__
+/* Many other libraries have conflicting prototypes for getopt, with
+   differences in the consts, in stdlib.h.  To avoid compilation
+   errors, only prototype getopt for the GNU C library.  */
+extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
+# else /* not __GNU_LIBRARY__ */
+extern int getopt ();
+# endif /* __GNU_LIBRARY__ */
+
+# ifndef __need_getopt
+extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts,
+		        const struct option *__longopts, int *__longind);
+extern int getopt_long_only (int __argc, char *const *__argv,
+			     const char *__shortopts,
+		             const struct option *__longopts, int *__longind);
+
+/* Internal only.  Users should not call this directly.  */
+extern int _getopt_internal (int __argc, char *const *__argv,
+			     const char *__shortopts,
+		             const struct option *__longopts, int *__longind,
+			     int __long_only);
+# endif
+#else /* not __STDC__ */
+extern int getopt ();
+# ifndef __need_getopt
+extern int getopt_long ();
+extern int getopt_long_only ();
+
+extern int _getopt_internal ();
+# endif
+#endif /* __STDC__ */
+
+#ifdef	__cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations.  */
+#undef __need_getopt
+
+#endif /* getopt.h */
diff --git a/odeSolver/getopt1.c b/odeSolver/getopt1.c
new file mode 100644
index 0000000..3d264f2
--- /dev/null
+++ b/odeSolver/getopt1.c
@@ -0,0 +1,188 @@
+/* getopt_long and getopt_long_only entry points for GNU getopt.
+   Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
+     Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+

+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "getopt.h"
+
+#if !defined __STDC__ || !__STDC__
+/* This is a separate conditional since some stdc systems
+   reject `defined (const)'.  */
+#ifndef const
+#define const
+#endif
+#endif
+
+#include <stdio.h>
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+   actually compiling the library itself.  This code is part of the GNU C
+   Library, but also included in many other GNU distributions.  Compiling
+   and linking in this code is a waste when using the GNU C library
+   (especially if it is a shared library).  Rather than having every GNU
+   program understand `configure --with-gnu-libc' and omit the object files,
+   it is simpler to just do this in the source for each such file.  */
+
+#define GETOPT_INTERFACE_VERSION 2
+#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
+#include <gnu-versions.h>
+#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
+#define ELIDE_CODE
+#endif
+#endif
+
+#ifndef ELIDE_CODE
+
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef __GNU_LIBRARY__
+#include <stdlib.h>
+#endif
+
+#ifndef	NULL
+#define NULL 0
+#endif
+
+int
+getopt_long (argc, argv, options, long_options, opt_index)
+     int argc;
+     char *const *argv;
+     const char *options;
+     const struct option *long_options;
+     int *opt_index;
+{
+  return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
+}
+
+/* Like getopt_long, but '-' as well as '--' can indicate a long option.
+   If an option that starts with '-' (not '--') doesn't match a long option,
+   but does match a short option, it is parsed as a short option
+   instead.  */
+
+int
+getopt_long_only (argc, argv, options, long_options, opt_index)
+     int argc;
+     char *const *argv;
+     const char *options;
+     const struct option *long_options;
+     int *opt_index;
+{
+  return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
+}
+
+
+#endif	/* Not ELIDE_CODE.  */
+

+#ifdef TEST
+
+#include <stdio.h>
+
+int
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+      int option_index = 0;
+      static struct option long_options[] =
+      {
+	{"add", 1, 0, 0},
+	{"append", 0, 0, 0},
+	{"delete", 1, 0, 0},
+	{"verbose", 0, 0, 0},
+	{"create", 0, 0, 0},
+	{"file", 1, 0, 0},
+	{0, 0, 0, 0}
+      };
+
+      c = getopt_long (argc, argv, "abc:d:0123456789",
+		       long_options, &option_index);
+      if (c == -1)
+	break;
+
+      switch (c)
+	{
+	case 0:
+	  printf ("option %s", long_options[option_index].name);
+	  if (optarg)
+	    printf (" with arg %s", optarg);
+	  printf ("\n");
+	  break;
+
+	case '0':
+	case '1':
+	case '2':
+	case '3':
+	case '4':
+	case '5':
+	case '6':
+	case '7':
+	case '8':
+	case '9':
+	  if (digit_optind != 0 && digit_optind != this_option_optind)
+	    printf ("digits occur in two different argv-elements.\n");
+	  digit_optind = this_option_optind;
+	  printf ("option %c\n", c);
+	  break;
+
+	case 'a':
+	  printf ("option a\n");
+	  break;
+
+	case 'b':
+	  printf ("option b\n");
+	  break;
+
+	case 'c':
+	  printf ("option c with value `%s'\n", optarg);
+	  break;
+
+	case 'd':
+	  printf ("option d with value `%s'\n", optarg);
+	  break;
+
+	case '?':
+	  break;
+
+	default:
+	  printf ("?? getopt returned character code 0%o ??\n", c);
+	}
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+	printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
diff --git a/odeSolver/interactive.c b/odeSolver/interactive.c
new file mode 100644
index 0000000..12eea04
--- /dev/null
+++ b/odeSolver/interactive.c
@@ -0,0 +1,506 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <01-Feb-2011 14:20:56 raim>
+  $Id: interactive.c,v 1.7 2011/03/06 09:58:11 raimc Exp $
+*/
+/* 
+ *
+ * This application is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This application  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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+/* libSBML header files */
+#include <sbml/SBMLTypes.h>
+#include <sbml/util/util.h> /* only for util_trim */
+
+/* own header files */
+#include "sbmlsolver/cvodeData.h"
+#include "sbmlsolver/drawGraph.h"
+#include "sbmlsolver/odeSolver.h"
+#include "sbmlsolver/solverError.h"
+#include "sbmlsolver/util.h"
+
+#include "interactive.h"
+#include "options.h"
+#include "commandLine.h"
+#include "printModel.h"
+
+static void printMenu(void);
+static void setValues(Model_t *);
+static void setFormat(void);
+static SBMLDocument_t *loadFile();
+static integratorInstance_t *callIntegrator(odeModel_t *, cvodeSettings_t *);
+
+/**
+   Interactive Mode:
+   Within this while loop the user is asked to choose different
+   actions.
+   The model and the ODEs constructed from the model
+   can be inspected, integrated and the results printed.
+   Also graphs of the reaction network, or the species interactions
+   as specified in the Jacobian matrix can be constructed. The files
+   will be written to the folder from where odeSolver was started.
+   When started the user can type 'h' to see what can be done.
+   
+   NOTE: differences to commandline mode
+   b) Setting alternative initial amounts for species is only possible
+   from the interactive mode.
+   c) Phase Diagrams can only be printed from interactive mode and to
+   XMGrace.
+*/
+
+void
+interactive(void) {
+  
+  char *sbmlFilename;
+  char *select;
+  int quit;
+  SBMLDocument_t *d  = NULL;
+  Model_t        *m  = NULL;
+  odeModel_t *om     = NULL;
+  cvodeData_t * data = NULL;
+  integratorInstance_t *ii = NULL;
+  cvodeSettings_t *set = NULL;
+
+  printf("\n\nWelcome to the simple SBML ODE solver.\n");
+  printf("You have entered the interactive mode.\n");
+  printf("All other commandline options have been ignored.\n");
+  printf("Have fun!\n\n");
+
+  initializeOptions();
+  /* reset steady state */
+  Opt.SteadyState = 0;
+  /* activate printing of results to XMGrace */
+  Opt.Xmgrace = 1;
+  /* activate printing integrator messages */
+  Opt.PrintMessage = 1;
+  /* deactivate on the fly printing of results */
+  Opt.PrintOnTheFly = 0;
+
+  sbmlFilename = concat(Opt.ModelPath, Opt.ModelFile);
+
+  if ( (d = parseModelWithArguments(sbmlFilename)) == 0 )
+  {
+    Warn(stderr, "%s:%d interactive(): Can't parse Model >%s<",
+	  __FILE__, __LINE__, sbmlFilename);
+    d = loadFile();
+  }
+
+  /* load models and default settings */
+  m = SBMLDocument_getModel(d);
+  om = ODEModel_create(m);
+  set = CvodeSettings_create();
+  SolverError_dumpAndClearErrors();
+  
+  quit = 0;
+  data = NULL;
+  
+  while ( quit == 0 ) {
+
+    printf("\n");
+    printf("Press (h) for instructions or (q) to quit.\n");
+    printf("> ");
+    select = get_line( stdin );
+    select = util_trim(select);
+    printf("\n");
+
+    if( strcmp(select,"l") == 0 ) {
+      /* free all existing structures */
+      if ( om != NULL )
+	ODEModel_free(data->model);
+      if ( d != NULL )
+	SBMLDocument_free(d);
+      if ( ii != NULL )
+	IntegratorInstance_free(ii);
+
+      /* load a new file */
+      d = loadFile();
+      
+      /* load new models */
+      m = SBMLDocument_getModel(d);
+      om = ODEModel_create(m);
+      SolverError_dumpAndClearErrors();            
+    }
+
+    if(strcmp(select,"h")==0)
+      printMenu();
+    
+    if(strcmp(select,"s")==0)
+      printModel(m, stdout);
+    
+    if(strcmp(select,"c")==0)
+      printSpecies(m, stdout);
+    
+    if(strcmp(select,"r")==0)
+      printReactions(m, stdout);
+    
+    if(strcmp(select,"o")==0)
+      printODEs(om, stdout);
+
+    /* integrate interface functions, asks for time and printsteps */
+    if(strcmp(select,"i")==0){
+      ii = callIntegrator(om, set);
+      SolverError_dumpAndClearErrors();
+    }
+
+    if(strcmp(select,"x")==0){
+      if ( Opt.Xmgrace == 1 ) {
+	Opt.Xmgrace = 0;
+	printf(" Printing results to stdout\n");
+      }
+      else if ( Opt.Xmgrace == 0 ) {
+	Opt.Xmgrace = 1;
+	printf(" Printing results to XMGrace\n");
+      }
+    }      
+    if(strcmp(select,"st")==0)
+      printConcentrationTimeCourse(ii->data, stdout);
+    
+    if(strcmp(select,"jt")==0)
+      printJacobianTimeCourse(ii->data, stdout);
+
+    
+    if(strcmp(select,"ot")==0)
+      printOdeTimeCourse(ii->data, stdout);
+
+    
+    if(strcmp(select,"rt")==0)
+      printReactionTimeCourse(ii->data, m, stdout);
+    
+    if(strcmp(select,"xp")==0)
+      printPhase(ii->data);
+    
+    
+    if(strcmp(select,"set")==0)
+      setValues(m);
+    
+    
+    if(strcmp(select,"ss")==0){
+      if ( Opt.SteadyState == 1 ) {
+	Opt.SteadyState = 0;
+	printf(" Not checking for steady states during integration.\n");
+      }
+      else if ( Opt.SteadyState == 0 ) {
+	Opt.SteadyState = 1;
+	printf(" Checking for steady states during integration.\n");
+      }
+    }
+
+    if(strcmp(select,"uj")==0){
+      if ( Opt.Jacobian == 1 ) {
+	Opt.Jacobian = 0;
+	printf(" Using CVODE's internal approximation\n");
+	printf(" of the jacobian matrix for integration\n");
+      }
+      else if ( Opt.Jacobian == 0 ) {
+	Opt.Jacobian = 1;
+	printf(" Using automatically generated\n");
+	printf(" jacobian matrix for integration\n");
+      }
+    }
+    
+    if(strcmp(select,"gf")==0)
+      setFormat();
+    
+    if(strcmp(select,"rg")==0) {
+      drawModel(m, sbmlFilename, Opt.GvFormat);
+      SolverError_dumpAndClearErrors();
+    }
+    
+    if(strcmp(select,"jg")==0){
+      if ( ii == NULL ) {
+	data = CvodeData_create(om);
+	CvodeData_initialize(data, set, om, 0);
+	drawJacoby(data, sbmlFilename, Opt.GvFormat);
+	SolverError_dumpAndClearErrors();
+	CvodeData_free(data);
+      }
+      else {
+	drawJacoby(ii->data, sbmlFilename, Opt.GvFormat);
+	SolverError_dumpAndClearErrors();
+      }
+    }
+
+    
+    if(strcmp(select,"j")==0) {
+      if ( om->jacob == NULL )
+	ODEModel_constructJacobian(om);
+      printJacobian(om, stdout);
+    }
+
+    
+    if(strcmp(select,"q")==0)
+      quit = 1;
+    
+  }
+
+  if ( ii != NULL )
+    IntegratorInstance_free(ii);
+  if ( om != NULL ) 
+    ODEModel_free(om);
+
+  SBMLDocument_free(d);
+  SolverError_dumpAndClearErrors();
+  printf("\n\nGood Bye. Thx for using.\n\n");
+}
+
+
+/*
+  setValues: the user can enter a species name and
+  change its initial condition (amount or concentration)
+*/
+static void setValues(Model_t *m) {
+
+  char *species;
+  char *newIA;
+  char *newIC;
+  Species_t *s;
+
+  printf("Please enter the id of the species to change: ");
+  species = get_line(stdin);
+  species = util_trim(species);
+  
+  if ( (s = Model_getSpeciesById(m,species) ) ) {      
+    printf("\n");
+    printf("Id:                    %s\n", Species_getId(s));
+    if ( Species_isSetName(s) ) {
+      printf("Name:                  %s\n", Species_getName(s));
+    }
+    if ( Species_isSetInitialAmount(s) ) {
+      printf("Initial Amount:        %g", Species_getInitialAmount(s));
+    }
+    else if (Species_isSetInitialConcentration(s) ) {
+      printf("Initial Concentration: %g", Species_getInitialConcentration(s));
+    }
+   
+
+    if ( Species_getHasOnlySubstanceUnits(s) ) {
+      if ( Species_isSetSubstanceUnits(s) ) {
+	printf("%s ", Species_getSubstanceUnits(s));
+      }
+    } else {
+      if ( Species_isSetSubstanceUnits(s) ) {
+	printf("%s ", Species_getSubstanceUnits(s));
+      }
+      if ( Species_isSetSpatialSizeUnits(s) ) {
+	printf("%s%s", "/", Species_getSpatialSizeUnits(s));
+      }
+    }
+    if ( Species_getHasOnlySubstanceUnits(s) ) {
+	printf(" (has only substance units)");
+    }
+    printf("\n");
+    if ( Species_isSetCharge(s) ) {
+      printf("Charge: %-10d", Species_getCharge(s));
+    }
+    printf("\n");   
+    printf("%s       ", Species_getBoundaryCondition(s) ?
+	   "Species is a Boundary\n" : "\n");
+    printf("%s       ", Species_getConstant(s) ?
+	   "Species is set constant" : "\n");
+    printf("\n");
+   
+    if ( Species_isSetInitialAmount(s) ) {
+      printf("Please enter new initial Amount: ");
+      newIA = get_line(stdin);
+      newIA = util_trim(newIA);
+      Species_setInitialAmount(s, (float) atof(newIA));
+    }
+    else if ( Species_isSetInitialConcentration(s) ) {
+      printf("Please enter new initial Concentration: ");
+      newIC = get_line(stdin);
+      newIC = util_trim(newIC);
+      Species_setInitialConcentration(s, (float) atof(newIC));
+    }
+  }
+  else {
+    printf("%s not found.\n", species);
+  }
+  
+}
+
+
+/*
+  set a new output format for graph drawing with graphviz.
+*/
+static void setFormat(void)
+{
+  char *format;
+  
+  while(1){
+    printf("Please enter a new output format for graph drawing, \n");
+    printf("or press enter to keep current setting (%s): ", Opt.GvFormat);
+    format = get_line(stdin);
+    format = util_trim(format);
+    if ( (strlen(format)) == 0 ) {
+      free(format);
+      return;
+    }
+    else {
+      sprintf(Opt.GvFormat, "%s", format);
+      free(format);
+      return;
+    }
+  }
+}
+
+
+/*
+  force to load an SBML file
+*/
+static SBMLDocument_t *loadFile()
+{
+    char *filename;
+    SBMLDocument_t *d;
+
+    while(1){
+        printf("Please enter a filename: ");
+        filename = get_line(stdin);
+        filename = util_trim(filename);
+        if ( (strlen(filename)) == 0 ) {
+            printf("No filename found.\n\n");
+        }
+        else {
+            if ( (d = parseModelWithArguments(filename)) == 0 ) {
+                if ( Opt.Validate ) 
+                    SolverError_error(
+                        WARNING_ERROR_TYPE,
+                        SOLVER_ERROR_MAKE_SURE_SCHEMA_IS_ON_PATH,
+                        "Please make sure that path >%s< contains"
+                        "the correct SBML schema for validation."
+                        "Or try running without validation.", Opt.SchemaPath);
+
+                SolverError_error(
+                    ERROR_ERROR_TYPE,
+                    SOLVER_ERROR_CANNOT_PARSE_MODEL,
+                    "Can't parse Model >%s<", filename);
+                SolverError_dumpAndClearErrors();
+            }
+            else {
+                printf("SBML file %s successfully loaded.\n", filename);
+                return d;
+            }
+        }
+        free(filename);
+    }
+    return NULL;
+}
+
+static integratorInstance_t *callIntegrator(odeModel_t *om,
+					    cvodeSettings_t *set)
+{
+
+  char *tout;
+  char *nout;
+  double time;
+  int printstep;
+  integratorInstance_t *ii;
+  
+  printf("Please enter end time in seconds:           ");
+  tout =  get_line(stdin);
+  tout = util_trim(tout);
+    
+  printf("... and the number of output times:         ");
+  nout = get_line(stdin);
+  nout = util_trim(nout);
+
+  
+  if ( !(time = (float) floor(atof(tout))) ||
+       !(printstep = (int) atof(nout)) ) {
+    printf("\nEntered outtime %s or number of output times %s\n", tout, nout);
+    printf("could not be converted to a number. Try again, please!\n");    
+  }
+  else {
+    CvodeSettings_setTime(set, time, printstep);
+    CvodeSettings_dump(set);
+    ii = IntegratorInstance_create(om, set);
+    integrator(ii, 1, 0, stdout);
+    SolverError_dumpAndClearErrors();
+    return (ii);
+  }
+  
+  return NULL;
+}
+
+
+static void printMenu(void)
+{  
+  printf("\n");
+  printf("(l)    Load Model\n");
+  printf("VIEW MODEL CONTENTS\n");
+  printf("(s)    View Model statistics\n");
+  printf("(c)    View Initial Conditions (compartments and species)\n");
+  printf("(r)    View Reactions, Parameters and Rules\n");
+  printf("(o)    View ODEs\n");
+  printf("(j)    View jacobian matrix\n");
+  printf("SET OPTIONS AND VALUES\n");
+  printf("(ss)   Toggle provisional steady state checking routine ");
+  printf("(currently %s)\n", Opt.SteadyState ? "on" : "off");
+  printf("(uj)   Toggle use of jacobian matrix / approximation ");
+  printf("(currently %s)\n", Opt.Jacobian ? "jacobian" : "approximation");
+  printf("(set)  Set initial values of species\n");  
+  printf("\nINTEGRATE\n");
+  printf("(i)    Integrate model\n\n");
+
+/*   printf("       (Replaces constant parameters in all formulas!\n"); */
+/*   printf("        Reload file to view original model afterwards)\n"); */
+  printf("PRINT RESULTS\n");
+  printf("(x)    Toggle printing to XMGrace or stdout, ");
+  printf("currently %s\n", Opt.Xmgrace ? "XMGrace" : "stdout");
+  printf("(st)   Print time course of species concentrations\n");
+  printf("(ot)   Print time course of the ODEs\n");
+  printf("(rt)   Print time course of the reaction fluxes\n");
+  printf("(jt)   Print time course of the jacobian\n");
+ 
+  printf("(xp)   Open XMGrace and print a phase diagram\n");  
+
+  printf("DRAW GRAPHS with GRAPHVIZ\n");
+  printf("(gf)   Set output format for graph drawing (now: %s)\n",
+	 Opt.GvFormat);
+  printf("(rg)   Draw bipartite graph of the reaction network\n");
+  printf("(jg)   Draw interaction graph from the jacobian matrix\n");
+  printf("       for the last time integrated\n");
+/*   printf("()    Write model in SBML Level 2 Version 1\n"); */
+  printf("\n");  
+  printf("(h)    Print this Menu\n");
+  printf("(q)    Quit Program\n");
+  printf("\n\n");
+  printf("Type any of the above numbers to start the process.\n");
+  printf("\n");  
+}
+
+
+/* End of file */
diff --git a/odeSolver/interactive.h b/odeSolver/interactive.h
new file mode 100644
index 0000000..fa5c7a2
--- /dev/null
+++ b/odeSolver/interactive.h
@@ -0,0 +1,44 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2005-10-26 17:39:26 raim>
+  $Id: interactive.h,v 1.2 2005/10/26 15:41:56 raimc Exp $
+*/
+/* 
+ *
+ * This application is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This application  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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *
+ */
+
+#ifndef _INTERACTIVE_H_
+#define _INTERACTIVE_H_
+
+void interactive(void);
+
+#endif
+
+/* End of file */
diff --git a/odeSolver/main.c b/odeSolver/main.c
new file mode 100644
index 0000000..8e216a0
--- /dev/null
+++ b/odeSolver/main.c
@@ -0,0 +1,50 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2005-10-26 17:37:16 raim>
+  $Id: main.c,v 1.2 2005/10/26 15:41:56 raimc Exp $
+*/
+/* 
+ *
+ * This application is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This application  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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Stefanie Widder
+ *     Christoph Flamm
+ *     Stefan M�ller
+ *     Andrew Finney
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "commandLine.h"
+
+int
+main (int argc, char *argv[]) {  
+  return odeSolver (argc, argv);
+}
+
+/* End of file */
diff --git a/odeSolver/options.c b/odeSolver/options.c
new file mode 100644
index 0000000..ea5fc8e
--- /dev/null
+++ b/odeSolver/options.c
@@ -0,0 +1,470 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <02-Sep-2010 15:10:39 raim>
+  $Id: options.c,v 1.12 2010/09/02 13:46:00 raimc Exp $
+*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <getopt.h>
+#include <string.h>
+
+/* own header files */
+#include <sbmlsolver/util.h>
+
+#include "options.h"
+
+static struct option const long_options[] =
+{ {"all",           no_argument,       0, 'a'},
+  {"benchmark",     no_argument,       0, 'b'},
+  {"compile",       no_argument,       0, 'c'},
+  {"determinant",   no_argument,       0, 'd'},
+  {"printmodel",    no_argument,       0, 'e'},
+  {"onthefly",      no_argument,       0, 'f'},
+  {"modelgraph",    no_argument,       0, 'g'},
+  {"help",          no_argument,       0, 'h'},
+  {"interactive",   no_argument,       0, 'i'},
+  {"jacobian",      no_argument,       0, 'j'},
+  {"reactions",     no_argument,       0, 'k'},
+  {"message",       no_argument,       0, 'l'},
+  {"matrixgraph",   no_argument,       0, 'm'},
+  {"event",         no_argument,       0, 'n'},
+  {"negative",      no_argument,       0, 'N'},
+  {"printsbml",     no_argument,       0, 'o'},
+  {"resultstosbml", no_argument,       0, 'p'},
+  {"rates",         no_argument,       0, 'r'},
+  {"steadyState",   no_argument,       0, 's'},
+  {"sensitivity",   no_argument,       0, 't'},
+  {"validate",      no_argument,       0, 'v'},
+  {"write",         no_argument,       0, 'w'},
+  {"xmgrace",       no_argument,       0, 'x'},
+  {"jacobianTime",  no_argument,       0, 'y'},
+  {"resetOnEvent",  no_argument,       0, 'z'},
+  {"error",         required_argument, 0,   0},
+  {"rerror",        required_argument, 0,   0},
+  {"mxstep",        required_argument, 0,   0},
+  {"gvformat",      required_argument, 0,   0},  
+  {"threshold",     required_argument, 0,   0},
+  {"printstep",     required_argument, 0,   0},
+  {"method",        required_argument, 0,   0},
+  {"iteration",     required_argument, 0,   0},
+  {"model",         required_argument, 0,   0},
+  {"mpath",         required_argument, 0,   0},
+  {"param",         required_argument, 0,   0},
+  {"schema11",      required_argument, 0,   0},
+  {"schema12",      required_argument, 0,   0},
+  {"schema21",      required_argument, 0,   0},
+  {"spath",         required_argument, 0,   0},  
+  {"time",          required_argument, 0,   0},
+  
+  {NULL, 0, NULL, 0}
+};
+
+/* forward declarations of (private) functions */
+void initializeOptions (void);
+static void processOptions (int argc, char *argv[]);
+
+/**/
+void 
+decodeCML (int argc, char *argv[])
+{
+  initializeOptions();
+  processOptions(argc, argv);
+}
+
+/**/
+void
+initializeOptions (void)
+{
+  strcpy(Opt.GvFormat,   "ps");
+  /* was strcpy(Opt.ModelPath,  "./"); chnaged by AMF 9th March 2006 - seems unnecessary and
+    blocks full path model reference on windows at least */
+  strcpy(Opt.ModelPath,  "");
+  strcpy(Opt.Parameter,  "");
+  strcpy(Opt.SchemaPath, "./");
+  strcpy(Opt.Schema11,   "sbml-l1v1.xsd");
+  strcpy(Opt.Schema12,   "sbml-l1v2.xsd");
+  strcpy(Opt.Schema21,   "sbml-l2v1.xsd");
+  Opt.Error           = 1e-9;
+  Opt.RError          = 1e-4;
+  Opt.Mxstep          = 10000;
+  Opt.ssThreshold     = 1e-11;
+  Opt.Method          = 0;
+  Opt.PrintStep       = 50;
+  Opt.Time            = 1;
+  Opt.HaltOnEvent     = 1;
+  Opt.DetectNegState  = 0;
+  Opt.InterActive     = 0;
+  Opt.Jacobian        = 1;
+  Opt.Determinant     = 0;
+  Opt.DrawJacobian    = 0;
+  Opt.PrintAll        = 0;
+  Opt.PrintJacobian   = 0;
+  Opt.PrintReactions  = 0;
+  Opt.Xmgrace         = 0;
+  Opt.DrawReactions   = 0;
+  Opt.PrintModel      = 0;
+  Opt.PrintSBML       = 0;
+  Opt.PrintODEsToSBML = 0;
+  Opt.PrintOnTheFly   = 0;
+  Opt.PrintMessage    = 0;
+  Opt.Wheel           = 1;
+  Opt.Sensitivity     = 0;
+  Opt.SteadyState     = 0;
+  Opt.Validate        = 0;
+  Opt.Write           = 0;
+  Opt.Compile         = 0;
+  Opt.Benchmark       = 0;
+  Opt.ResetCvodeOnEvents = 1;
+}
+
+/**/
+static void
+processOptions (int argc, char *argv[])
+{
+  int c, option_index = 0;
+
+  /* memorize program name */  
+  if (argv[0] == NULL || sscanf(argv[0], "%s", Opt.ExeName) == 0) {
+    Warn (stderr, "%s:%d processOptions(): No ExeName found",
+	  __FILE__, __LINE__);
+    usage (EXIT_FAILURE);
+  }
+  
+  /* process command line options */
+  while ((c = getopt_long (argc, argv, "abcdefghijklmnoprstvwxyzN",
+                           long_options, &option_index)) != EOF) {
+    switch (c) {
+    case 0:
+      if (strcmp(long_options[option_index].name, "gvformat")==0) {
+        char tmp[256];
+        if (sscanf(optarg, "%s", tmp) == 0) {
+          Warn (stderr, "%s:%d processOptions(): No graph format specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        }
+        else { strcpy(Opt.GvFormat, tmp); }
+      }
+      if (strcmp(long_options[option_index].name, "param")==0) {
+       char tmp[64];
+        if (sscanf(optarg, "%s", tmp) == 0) {
+          Warn (stderr, "%s:%d processOptions(): No parameter specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        }
+        else { strcpy(Opt.Parameter, tmp); }
+      }
+      if (strcmp(long_options[option_index].name, "error")==0) {
+        double tmp;
+        if (sscanf(optarg, "%lf", &tmp) == 0) {
+          Warn (stderr,
+		"%s:%d processOptions(): No abs. Error tolerance specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        }
+        else { Opt.Error = tmp; }
+      }
+      if (strcmp(long_options[option_index].name, "rerror")==0) {
+        double tmp;
+        if (sscanf(optarg, "%lf", &tmp) == 0) {
+          Warn (stderr,
+		"%s:%d processOptions(): No rel. error tolerance specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        }
+        else { Opt.RError = tmp; }
+      }
+      if (strcmp(long_options[option_index].name, "printstep")==0) {
+        double tmp;
+        if (sscanf(optarg, "%lf", &tmp) == 0) {
+          Warn (stderr, "%s:%d processOptions(): No PrintStep specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        }
+        else { Opt.PrintStep = tmp; }
+      }
+      if (strcmp(long_options[option_index].name, "method")==0) {
+        double tmp;
+        if (sscanf(optarg, "%lf", &tmp) == 0) {
+          Warn (stderr, "%s:%d processOptions(): No Mxstep specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        }
+        else { Opt.Method = tmp; }
+      }
+      if (strcmp(long_options[option_index].name, "iteration")==0) {
+        double tmp;
+        if (sscanf(optarg, "%lf", &tmp) == 0) {
+          Warn (stderr, "%s:%d processOptions(): No Mxstep specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        }
+        else { Opt.IterMethod = tmp; }
+      }
+      if (strcmp(long_options[option_index].name, "mxstep")==0) {
+        double tmp;
+        if (sscanf(optarg, "%lf", &tmp) == 0) {
+          Warn (stderr, "%s:%d processOptions(): No Mxstep specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        }
+        else { Opt.Mxstep = tmp; }
+      }
+      if (strcmp(long_options[option_index].name, "threshold")==0) {
+        double tmp;
+        if (sscanf(optarg, "%lf", &tmp) == 0) {
+          Warn (stderr,
+		"%s:%d processOptions(): No steady state threshold specified", 
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        }
+        else { Opt.ssThreshold = tmp; }
+      }
+      if (strcmp(long_options[option_index].name, "model")==0) {
+        char tmp[256];
+        if (sscanf(optarg, "%s", tmp) == 0) {
+          Warn (stderr, "%s:%d processOptions(): No ModelFile specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        } else { strcpy(Opt.ModelFile, tmp); }
+      }
+      if (strcmp(long_options[option_index].name, "mpath")==0) {
+        char tmp[256];
+        if (sscanf(optarg, "%s", tmp) == 0) {
+          Warn (stderr, "%s:%d processOptions(): No ModelPath specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        } else { strcpy(Opt.ModelPath, tmp); }
+      }      
+      if (strcmp(long_options[option_index].name, "schema11")==0) {
+        char tmp[256];
+        if (sscanf(optarg, "%s", tmp) == 0) {
+          Warn (stderr, "%s:%d processOptions(): No Schema L1v1 specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        } else { strcpy(Opt.Schema11, tmp); }
+      }
+      if (strcmp(long_options[option_index].name, "schema12")==0) {
+        char tmp[256];
+        if (sscanf(optarg, "%s", tmp) == 0) {
+          Warn (stderr, "%s:%d processOptions(): No Schema L1v2 specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        } else { strcpy(Opt.Schema12, tmp); }
+      }
+      if (strcmp(long_options[option_index].name, "schema21")==0) {
+        char tmp[256];
+        if (sscanf(optarg, "%s", tmp) == 0) {
+          Warn (stderr, "%s:%d processOptions(): No Schema L2v1 specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        } else { strcpy(Opt.Schema21, tmp); }
+      }
+      if (strcmp(long_options[option_index].name, "spath")==0) {
+        char tmp[256];
+        if (sscanf(optarg, "%s", tmp) == 0) {
+          Warn (stderr, "%s:%d processOptions(): No SchemaPath specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        } else { strcpy(Opt.SchemaPath, tmp); }
+      }
+      if (strcmp(long_options[option_index].name, "time")==0) {
+        double tmp;
+        if (sscanf(optarg, "%lf", &tmp) == 0) {
+          Warn (stderr, "%s:%d processOptions(): No time specified",
+                __FILE__, __LINE__);
+          usage (EXIT_FAILURE);
+        }
+        else { Opt.Time = tmp; }
+      }
+      break;
+    case 'a':
+      Opt.PrintAll = 1;
+      break;
+    case 'b':
+      Opt.Benchmark = 1;
+      break;
+    case 'c':
+      Opt.Compile = 1;
+      break;
+    case 'h':
+      usage (EXIT_SUCCESS);
+      break;
+    case 'i':
+      Opt.InterActive = 1;
+      break;
+    case 'j':
+      Opt.Jacobian = 0;
+      break;
+    case 'y':
+      Opt.PrintJacobian = 1;      
+      break;
+    case 'k':
+      Opt.PrintReactions = 1;      
+      break;
+    case 'x':
+      Opt.Xmgrace = 1;
+      break;
+    case 'g':
+      Opt.DrawReactions = 1;
+      break;
+    case 'm':
+      Opt.DrawJacobian = 1;
+      break;
+    case 'n':
+      /* AMF removed 10 June 2005 Opt.PrintOnTheFly = 1; */
+      Opt.HaltOnEvent   = 0;
+      break;
+    case 'N':
+      Opt.DetectNegState = 1;
+      break;
+    case 'e':
+      Opt.PrintModel = 1;
+      break;
+    case 'f':
+      Opt.PrintOnTheFly = 1;
+      break;
+    case 'l':
+      Opt.PrintMessage = 1;
+      break;      
+    case 'o':
+      Opt.PrintODEsToSBML = 1;
+      break;
+    case 'p':
+      Opt.PrintSBML = 1;
+      break;
+    case 'd':
+      Opt.Determinant = 1;
+      break; 
+    case 'r':
+      Opt.PrintRates = 1;
+      break;
+    case 's':
+      Opt.SteadyState = 1;
+      break;
+    case 't':
+      Opt.Sensitivity = 1;
+      break;
+    case 'v':
+      Opt.Validate = 1;
+      break;	      
+    case 'w':
+      Opt.Write = 1;
+      break;
+    case 'z':
+      Opt.ResetCvodeOnEvents = 0;
+      break;
+    default:
+      usage (EXIT_FAILURE);
+    }
+  }
+  /* parse the to file names from the remaining command-line */
+  if ( strlen(Opt.ModelFile) > 0 ) return;
+  else if ( (optind + 1) <= argc ) strcpy(Opt.ModelFile, argv[optind++]);
+  else {
+    Warn (stderr, "No ModelFile found on cmd-line");
+    usage(EXIT_FAILURE);
+  }
+}
+
+/**/
+void
+usage (int status)
+{
+  fprintf(stderr, "\nUSAGE:  %s <mpath/sbmlfile.xml> [OPTION]\n\n",
+	  Opt.ExeName); 
+  fprintf(stderr,
+    "GENERAL OPTIONS\n"
+    " -h, --help            Print (this) usage information.\n"
+    " -i, --interactive     Turn on interactive mode\n"
+    "     --gvformat <Str>  Set output format for graph drawings (now set \n"
+    "                       to: %s); ignored if compiled w/o graphviz)\n",
+	  Opt.GvFormat);
+  fprintf(stderr,
+   "SBML FILE PARSING\n"	  
+    " -v, --validate        Validate SBML file before further processing\n"
+	  
+    "     --model <Str>     SBML file name (not needed!, see USAGE)\n"
+    "                       (now set to: %s)\n"
+    "     --mpath <Dir>     Set Model File Path\n"
+	  "                       (now set to: %s)\n",
+	  Opt.ModelFile, Opt.ModelPath);
+  fprintf(stderr,
+    "     --schema11 <Str>  Set filename for SBML schema Level 1 Version 1\n"
+    "                       (now set to: %s)\n"
+    "     --schema12 <Str>  Set filename for SBML schema Level 1 Version 2\n"
+    "                       (now set to: %s)\n"
+    "     --schema21 <Str>  Set filename for SBML schema Level 2 Version 1\n"
+    "                       (now set to: %s)\n"
+    "     --spath <Dir>     Set schema file path, absolute or relative to\n"
+	  "                       model path (now set to: %s)\n",	  
+	  Opt.Schema11, Opt.Schema12, Opt.Schema21,  Opt.SchemaPath);
+  fprintf(stderr,
+    "(1) PRINT REACTIONS AND DERIVED ODEs\n"
+    " -e, --printmodel       Print Reactions and derived ODE system\n"
+    " -o, --printsbml       Construct ODEs and print as SBML model\n"
+    " -g, --modelgraph      Draw bipartite graph of reaction network\n"
+    "                       (to .dot text file if compiled w/o graphviz)\n");
+  fprintf(stderr,
+    "(2) INTEGRATING\n"
+    " -f, --onthefly        Print results during integration\n"
+    " -l, --message         Print messages, and integration statistics\n"
+    " -j, --jacobian        Toggle use of the jacobian matrix or CVODE's\n"
+    "                       internal approximation (default: jacobian)\n");
+  fprintf(stderr,
+    " -s, --steadyState     Abort integration at steady states\n"
+    " -t, --sensitivity     activate sensitivity analysis (default: no)\n"
+    " -n, --event           Do not abort on event detection, but keep\n"
+    "                       integrating. ACCURACY DEPENDS ON --printstep!!\n"
+    " -c, --compile         Compile ODE, Jacobian and Event functions\n"
+    " -b, --benchmark       Print execution duration and intergation duration\n"
+    " -z, --resetOnEvent    Free and Restart CVODE when any event is triggered\n");
+/*     "     --param <Str>     Choose a parameter to vary during batch\n" */
+/*     "                       integration, from 0 to value in 50 steps\n"); */
+  fprintf(stderr,
+    "     --printstep <Int> Time steps of output, or\n"
+    "                       (now set to: %g)\n"
+    "     --time <Float>    Integration end time\n"
+    "                       (now set to: %g)\n"	  
+    "     --error <Float>   Absolute error tolerance during integration\n"
+    "                       (now set to: %g)\n"
+    "     --rerror <Float>  Relative error tolerance during integration\n"
+    "                       (now set to: %g)\n"
+    "     --threshold <Float> Threshold for steady state detection\n"
+    "                       (now set to: %g\n"
+    "     --mxstep <Int>    Maximum step number during integration\n"
+    "                       (now set to: %g)\n",
+	  Opt.PrintStep, Opt.Time, Opt.Error, Opt.RError, Opt.ssThreshold,
+	  Opt.Mxstep);
+  fprintf(stderr,
+    "     --method <0/1>    Integration method, 0: BDF, 1: Adams-Moulton\n"
+    "                       (now set to: %d)\n"
+    "     --iteration <0/1> Iteration method, 0: Newton, 1: Functional\n"
+    "                       (now set to: %d)\n",
+	  Opt.Method, Opt.IterMethod); 
+  fprintf(stderr,
+    "(3) INTEGRATION RESULTS\n"
+    " -a, --all             Print all available results (y/k/r + conc.).\n"
+    " -y, --jacobianTime    Print time course of jacobian matrix entries,\n"
+    "                       instead of concentrations\n"
+    " -k, --reactions       Print time course of the reactions\n"
+    "                       (kinetic laws) instead of concentrations\n"
+    " -r, --rates           Print time course of the ODEs, instead of\n"
+    "                       concentrations\n"
+    " -p, --resultstosbml   Print last time-point to original SBML model\n");
+  
+  fprintf(stderr,
+    " -w, --write           Write results to file (path/modelfile.xml.dat)\n"  
+    " -x, --xmgrace         Print results to XMGrace; uses SBML Names\n"
+    "                       instead of Ids (ignored if compiled w/o Grace)\n" 
+    " -m, --matrixgraph     Draw species interactions from the jacobian\n"
+    "                       matrix at last timepoint of integration\n"
+    "                       (to .dot text file if compiled w/o graphviz)\n"
+	  "\n");	  
+  exit (status);
+}
+
+/* End of file */
diff --git a/odeSolver/options.h b/odeSolver/options.h
new file mode 100644
index 0000000..80bffc9
--- /dev/null
+++ b/odeSolver/options.h
@@ -0,0 +1,72 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <02-Sep-2010 15:00:59 raim>
+  $Id: options.h,v 1.9 2010/09/02 13:46:00 raimc Exp $
+*/
+#ifndef _OPTIONS_H_
+#define _OPTIONS_H_
+
+/* Command-line Options */
+typedef struct _Options {
+  char ExeName[256];    /* name of executable */
+  char GvFormat[64];    /* output format for graph drawings */
+  char ModelFile[256];  /* model file name */
+  char ModelPath[256];  /* path to the model file */
+  char Parameter[64];   /* Paramter for variation in batch process
+			   or variable for sensitivity analysis*/
+  char Schema11[64];    /* name of schema L1v1 file */
+  char Schema12[64];    /* name of schema L1v2 file */
+  char Schema21[64];    /* name of schema L1v3 file */
+  char SchemaPath[256]; /* path to schema files */
+  double Time;          /* Time to which model is integrated */
+  double PrintStep;     /* Number of output steps from 0 to 'Time' */
+  double Error;         /* absolute tolerance in Cvode integration */
+  double RError;        /* relative tolerance in Cvode integration */
+  double Mxstep;        /* maximum step number for CVode integration */
+  double ssThreshold;   /* threshold for steady state detection */  
+  int Determinant;      /* Calculate and print determinant of the
+			   jacobian matrix */
+  int DrawReactions;    /* Calculate a graph of the reaction network */
+  int DrawJacobian;     /* Calculate a graph of species interaction
+			   as determined by the jacobian matrix */
+  int HaltOnEvent;      /* stop integration if event is detected */
+  int DetectNegState;   /* detect negative values for ODE variables */
+  int InterActive;      /* Start program in interactive mode */
+  int Jacobian;         /* Do not use jacobian matrix for integration */
+  int Sensitivity;      /* Activate Sensitivity Analysis */
+  int Method;           /* Use BDF (default, 0) or Adams-Moulton (1)
+			   method for numerical integration */
+  int IterMethod;       /* Use Newton (default, 0) or functional (1)
+			   iteration method for integration */
+  int PrintSBML;        /* Print last time point to new SBML file */
+  int PrintAll;         /* Print all given results instead of only one */
+  int PrintJacobian;    /* Print out time course of the jacobian matrix */
+  int PrintReactions;   /* Print out time course of the reaction rates */
+  int PrintModel;       /* Print out model, ODEs and jacobian expressions */
+  int PrintODEsToSBML;  /* Construct ODE model and print out SBML */
+  int PrintOnTheFly;    /* Print species concentration during integration */
+  int Wheel;            /* Print progress wheel */
+  int PrintRates;       /* Print time course of the ODE values */
+  int PrintMessage;     /* Print messages of integration procedure */
+  int SteadyState;      /* Check for steady states during integration */
+  int Validate;         /* Validate SBML model before doing anything else */
+  int Write;            /* Print results to file instead of stdout */
+  int Xmgrace;          /* Print results to XMGrace instead of stdout */
+  int Compile;          /* Compile the rhs ode function,
+			   jacobian function and events function */
+  int Benchmark;        /* print execution time statistics */
+  int ResetCvodeOnEvents; /* free and restart cvode on an event */
+} Options;
+
+Options Opt;
+
+void
+decodeCML(int argc, char *argv[]);
+void
+initializeOptions(void);
+void
+usage (int status);
+
+#endif
+
+/* End of file */
diff --git a/odeSolver/printModel.c b/odeSolver/printModel.c
new file mode 100644
index 0000000..4b41da8
--- /dev/null
+++ b/odeSolver/printModel.c
@@ -0,0 +1,1651 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <16-Feb-2011 00:05:59 raim>
+  $Id: printModel.c,v 1.31 2011/03/06 09:59:03 raimc Exp $
+*/
+/* 
+ *
+ * This application is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This application  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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h> 
+
+/* Header Files from the SBML Library libsbml */
+#include <sbml/SBMLTypes.h>
+#include <sbml/util/util.h> /* only for util_trim */
+
+/* System specific definitions,
+   created by configure script */
+#ifndef _WIN32
+#include "../src/config.h"
+#endif
+
+/* Own Header Files */
+#include "../src/sbmlsolver/util.h"
+#include "../src/sbmlsolver/cvodeData.h"
+#include "../src/sbmlsolver/modelSimplify.h"
+#include "../src/sbmlsolver/processAST.h"
+#include "../src/sbmlsolver/odeConstruct.h"
+
+#include "options.h"
+#include "printModel.h"
+
+/*
+  XMGrace Library dependent functions,
+  printing results of simulation to XMGrace
+*/
+#if USE_GRACE
+/* Header Files for XMGrace */
+#include <grace_np.h>
+/* functions */
+static void grace_error(const char *msg);
+static int printXMGConcentrationTimeCourse(cvodeData_t *data);
+static int printXMGOdeTimeCourse(cvodeData_t *data);
+static int printXMGReactionTimeCourse(cvodeData_t *data);
+static int printXMGJacobianTimeCourse(cvodeData_t *data);
+static int printXMGLegend(cvodeData_t *data, int nvalues);
+static int openXMGrace(cvodeData_t *data);
+static int closeXMGrace(cvodeData_t *data, char *name);
+#endif
+
+#ifndef max
+	#define max( a, b ) ( ((a) > (b)) ? (a) : (b) )
+#endif
+#ifndef abs
+	#define abs( a ) ( ((a) > 0 ) ? (a) : (-a) )
+#endif
+
+void printModel(Model_t *m, FILE *f)
+{
+  fprintf(f, "\n");
+  fprintf(f, "Model Statistics:\n");
+  fprintf(f, " Model id:     %s\n",
+	 Model_isSetId(m) ? Model_getId(m) : "(not set)");
+  fprintf(f, " Model name:   %s\n",
+	 Model_isSetName(m) ? Model_getName(m) : "(not set)"); 
+  fprintf(f, "\n");
+  fprintf(f, " Compartments: %d\n",  Model_getNumCompartments(m)); 
+  fprintf(f, " Species:      %d\n",  Model_getNumSpecies(m));
+  fprintf(f, " Reactions:    %d\n",  Model_getNumReactions(m));
+  fprintf(f, " Rules:        %d\n",  Model_getNumRules(m));
+  fprintf(f, " Events:       %d\n",  Model_getNumEvents(m));
+  fprintf(f, " Functions:    %d\n",  Model_getNumFunctionDefinitions(m) ); 
+  fprintf(f, "\n");
+}
+
+
+void printSpecies(Model_t *m, FILE *f)
+{
+  unsigned int i, j;
+  Species_t *s;  
+  Compartment_t *c;
+
+  fprintf(f, "\n");
+  fprintf(f, "# Initial Conditions for Species and Compartments:\n");
+  for ( i=0; i<Model_getNumCompartments(m); i++ )
+  {
+    if ( i== 0 ) fprintf(f, "# Compartments:\n");
+    c = Model_getCompartment(m,i);
+    if(Compartment_isSetId(c))
+      fprintf(f, "%s ", Compartment_getId(c));
+    if(Compartment_isSetName(c))
+      fprintf(f, "(%s) ", Compartment_getName(c));
+    if ( Compartment_isSetVolume(c) )
+     fprintf(f, "= %g; ", Compartment_getSize(c));
+    fprintf(f, "%s", Compartment_getConstant(c) ? "" : "variable; ");
+    if(Compartment_isSetOutside(c))
+      fprintf(f, "outside %s; ", Compartment_getOutside(c));
+   /*  fprintf(f, "\n"); */
+    fprintf(f, "dimensions %d; ", Compartment_getSpatialDimensions(c));
+
+    if(Compartment_isSetUnits(c))
+      fprintf(f, "[%s]; ", Compartment_getUnits(c));
+    fprintf(f, "\n");
+    
+    fprintf(f, "# Species concentrations in `compartment' %s\n",
+	   Compartment_getId(c));
+    for(j=0;j<Model_getNumSpecies(m);j++)
+    {
+      s = Model_getSpecies(m,j);      
+      if(strcmp(Species_getCompartment(s), Compartment_getId(c))==0)
+      {
+	fprintf(f, "%s ", Species_getId(s));
+	if(Species_isSetName(s))
+	  fprintf(f, "(%s) ", Species_getName(s));
+	
+	if ( Species_isSetInitialAmount(s) )
+	{
+	  if ( Compartment_getSpatialDimensions(c) != 0 &&
+	       !Species_getHasOnlySubstanceUnits(s) )
+	  fprintf(f, "= %g/%g; ",
+		 Species_getInitialAmount(s),
+		  Compartment_getSize(c));
+	  else 
+	    fprintf(f, "= %g; ", Species_getInitialAmount(s));
+	}
+	else if ( Species_isSetInitialConcentration(s) )
+	  fprintf(f, "= %g; ", Species_getInitialConcentration(s));
+	else
+	  fprintf(f, "# no initial value;");	
+	fprintf(f, "%s", Species_getBoundaryCondition(s) ? "boundary;" : "");
+	fprintf(f, "%s", Species_getConstant(s) ? "constant;" : "");
+	if(Species_isSetCharge(s))
+	  fprintf(f, "charge = %d; ", Species_getCharge(s));
+
+	fprintf(f, "\n");
+      }     
+    }
+    fprintf(f, "\n");  
+  }  
+}
+
+void printReactions(Model_t *m, FILE *f)
+{
+  
+  unsigned int i,j,k;
+  Reaction_t *r;
+  SpeciesReference_t *sref;
+  KineticLaw_t *kl;
+  Rule_t *rl;
+  InitialAssignment_t *ia;
+  Event_t *e;
+  EventAssignment_t *ea;
+  Parameter_t *p;
+  FunctionDefinition_t *fd;
+  SBMLTypeCode_t type;
+  const ASTNode_t *math;
+
+  math = NULL;
+  
+  fprintf(f, "\n");
+  for(i=0;i<Model_getNumParameters(m);i++)
+  {
+    if(i==0)
+      fprintf(f, "# Global parameters:\n");
+    p = Model_getParameter(m,i);
+    if(Parameter_isSetId(p))
+      fprintf(f, "%s ",  Parameter_getId(p));
+    if(Parameter_isSetName(p))
+      fprintf(f, "(%s) ", Parameter_getName(p));
+    if(Parameter_isSetValue(p))
+      fprintf(f, "= %g; ", Parameter_getValue(p));
+    if(Parameter_isSetUnits(p))
+      fprintf(f, "[%s]; ", Parameter_getUnits(p));
+    if(!Parameter_getConstant(p))
+      fprintf(f, "(variable);");
+    fprintf(f, "\n");
+    
+    if ( i==Model_getNumParameters(m)-1 )
+      fprintf(f, "\n");
+  }
+
+  fprintf(f, "# Reactions:\n");
+  for ( i=0; i<Model_getNumReactions(m); i++ )
+  {    
+    r = Model_getReaction(m,i);
+  
+    fprintf(f, "%s: %s",
+	   Reaction_isSetName(r) ? Reaction_getName(r) : Reaction_getId(r),
+	   Reaction_getFast(r) ? "(fast)" : "");
+    for ( k=0; k<Reaction_getNumReactants(r); k++ )
+    {
+      sref = Reaction_getReactant(r,k);
+
+      if ( SpeciesReference_isSetStoichiometryMath(sref) )
+      {
+	char *eq = SBML_formulaToString(StoichiometryMath_getMath(SpeciesReference_getStoichiometryMath(sref)));
+	fprintf(f, "%s ", eq);
+	free(eq);
+      }
+      else 
+	if ( SpeciesReference_getStoichiometry(sref) != 1. )
+	  fprintf(f, "%g ",  SpeciesReference_getStoichiometry(sref));
+	
+      fprintf(f, "%s", SpeciesReference_getSpecies(sref));
+      if(k+1<Reaction_getNumReactants(r))
+	fprintf(f, "%s", " + ");
+    }
+    
+    fprintf(f, "%s", Reaction_getReversible(r) ? " <-> " : " -> ");
+    for ( k=0; k<Reaction_getNumProducts(r); k++ )
+    {
+      sref = Reaction_getProduct(r,k);
+      if ( SpeciesReference_isSetStoichiometryMath(sref) )
+      {
+	char *eq = SBML_formulaToString(StoichiometryMath_getMath(SpeciesReference_getStoichiometryMath(sref)));
+	fprintf(f, "%s ", eq);
+	free(eq);
+      }
+      else
+	if ( SpeciesReference_getStoichiometry(sref) != 1. )
+	  fprintf(f, "%g ", SpeciesReference_getStoichiometry(sref));
+      
+      fprintf(f, "%s", SpeciesReference_getSpecies(sref));
+      if(k+1<Reaction_getNumProducts(r))
+	fprintf(f, "%s", " + ");
+    }
+    fprintf(f, ";  ");
+    if ( Reaction_isSetKineticLaw(r) )
+    {
+      kl = Reaction_getKineticLaw(r);
+      math = KineticLaw_getMath(kl);
+      char *eq = SBML_formulaToString(math);
+      fprintf(f, "%s;", eq);
+      free(eq);
+      for(k=0;k<KineticLaw_getNumParameters(kl);k++)
+      {	
+	p = KineticLaw_getParameter(kl,k);
+	fprintf(f, " %s",  Parameter_getId(p));
+	if(Parameter_isSetName(p))
+	  fprintf(f, " (%s)", Parameter_getName(p));
+	if(Parameter_isSetValue(p))
+	  fprintf(f, " = %g", Parameter_getValue(p));
+	if(Parameter_isSetUnits(p))
+	  fprintf(f, " [%s]", Parameter_getUnits(p));
+	if ( !Parameter_getConstant(p) )
+	  fprintf(f, " (variable)");
+	fprintf(f, ";");
+      }
+     /*  fprintf(f, "\n"); */
+    }else
+      fprintf(f, "#   no rate law is set for this reaction.");
+    fprintf(f, "\n");
+  }
+
+  /* SBML Rules: rate, algebraic and assignment */
+  for ( i=0; i<Model_getNumRules(m); i++ )
+  {
+    rl = Model_getRule(m,i);
+    if ( i == 0 )
+      fprintf(f, "# Rules: %d\n", Model_getNumRules(m));
+    type = SBase_getTypeCode((SBase_t *)rl);
+     
+    if ( type == SBML_RATE_RULE ) 
+      fprintf(f, " rateRule:       d%s/dt = ", Rule_getVariable(rl));
+    if ( type == SBML_ALGEBRAIC_RULE ) 
+      fprintf(f, " algebraicRule:       0 = ");
+    if ( type == SBML_ASSIGNMENT_RULE ) 
+      fprintf(f, " assignmentRule: %s = ", Rule_getVariable(rl));
+
+    if ( Rule_isSetMath(rl) )
+    {
+      char *eq = SBML_formulaToString(Rule_getMath(rl));      
+      fprintf(f, "%s\n", eq);
+      free(eq);
+    }
+	     
+  }
+  fprintf(f, "\n");
+
+  /* initial assignment rules */
+  for ( i=0; i<Model_getNumInitialAssignments(m); i++ )
+  {
+    ia = Model_getInitialAssignment(m,i);
+    if ( i == 0 )
+      fprintf(f, "# Initial Assignment Rules: %d\n",
+	      Model_getNumInitialAssignments(m));
+      fprintf(f, " init. assignmentRule: %s = ",
+	      InitialAssignment_getSymbol(ia));
+
+    if ( InitialAssignment_isSetMath(ia) )
+    {
+      char *eq = SBML_formulaToString(InitialAssignment_getMath(ia));
+      fprintf(f, "%s\n", eq);
+      free(eq);
+    }
+	     
+  }
+  fprintf(f, "\n");
+
+  /* Events */
+  for ( i=0; i<Model_getNumEvents(m); i++ )
+  {
+    if ( i==0 )
+      fprintf(f, "# Events:\n");
+    
+    e = Model_getEvent(m,i);
+    if ( Event_isSetId(e) )
+      fprintf(f, "%s: ", Event_getId(e));
+    if ( Event_isSetName(e) )
+      fprintf(f, "(%s) ", Event_getName(e));   
+    if ( Event_isSetTrigger(e) )
+    {
+      math = Trigger_getMath(Event_getTrigger(e));
+      char *eq = SBML_formulaToString(math);
+      fprintf(f, "trigger: %s\n", eq);
+      free(eq);
+    }
+    if ( Event_isSetDelay(e) )
+    {
+      char *eq = SBML_formulaToString(Delay_getMath(Event_getDelay(e)));
+      fprintf(f, "delay: %s;\n", eq);
+      free(eq);
+    }
+    if ( Event_isSetTimeUnits(e) )
+      fprintf(f, "time Units: %s;\n", Event_getTimeUnits(e));
+    for ( k=0; k<Event_getNumEventAssignments(e); k++ )
+    {      
+      ea = Event_getEventAssignment(e,k);
+      if ( EventAssignment_isSetVariable(ea) && EventAssignment_isSetMath(ea) )
+      {
+	char *eq = SBML_formulaToString(EventAssignment_getMath(ea));
+	fprintf(f, "  event:  %s = %s;\n", EventAssignment_getVariable(ea),eq);
+	free(eq);
+      }
+    }
+
+    if ( i == Model_getNumEvents(m)-1 )
+       fprintf(f, "\n"); 
+  }  
+
+
+  for ( i=0; i<Model_getNumFunctionDefinitions(m); i++ )
+  {
+    if ( i==0 ) fprintf(f, "# Functions:\n");
+
+    fd = Model_getFunctionDefinition(m,i);
+    if ( FunctionDefinition_isSetName(fd) )
+      fprintf(f, "%s: ", FunctionDefinition_getName(fd));
+    if(FunctionDefinition_isSetId(fd) && FunctionDefinition_isSetMath(fd))
+    {
+      fprintf(f, "%s( ", FunctionDefinition_getId(fd));
+      math = FunctionDefinition_getMath(fd);
+      for(j=0;j<ASTNode_getNumChildren(math)-1;j++)
+      {
+	char *eq =  SBML_formulaToString(ASTNode_getChild(math, j));
+	fprintf(f, "%s", eq);
+	free(eq);
+	if(j<ASTNode_getNumChildren(math)-2)
+	  fprintf(f, ", ");
+	if(j==ASTNode_getNumChildren(math)-2)
+	  fprintf(f, ") = ");
+      }
+      char *eq =  SBML_formulaToString(ASTNode_getRightChild(math));
+      fprintf(f, "%s;", eq);
+      free(eq);
+    }
+    fprintf(f, "\n");
+  } 
+  
+}
+
+
+void printODEsToSBML(Model_t *ode, FILE *f)
+{      
+  SBMLDocument_t *d;
+  char *model;
+  d = SBMLDocument_create();
+  SBMLDocument_setModel(d, ode);
+  model = writeSBMLToString(d);
+  fprintf(f, "%s", model);
+  free(model);
+  SBMLDocument_free(d);
+}
+
+
+void printODEs(odeModel_t *om, FILE *f)
+{  
+  int i, nvalues;  
+
+  nvalues = om->neq +om->nass + om->nconst + om->nalg;
+  fprintf(f, "\n");
+  fprintf(f, "# Derived system of Ordinary Differential Equations (ODEs):\n");
+  
+  fprintf(f, "# Parameters:\n");
+  for ( i=om->neq+om->nass; i<nvalues; i++ ) 
+    fprintf(f, "%s, ", om->names[i]);
+  fprintf(f, "\n");
+  fprintf(f, "# Assigned Parameters, including init. assignments: ");
+  
+  if ( om->initAssignmentOrder != NULL )
+    fprintf(f, "ORDERED\n");
+  else
+    fprintf(f, "UNORDERED\n");
+  for ( i=0; i<(om->nass + om->ninitAss); i++ )
+  {
+    char *eq;
+    int idx;
+    int init = 0;
+    if ( om->initAssignmentOrder != NULL )
+    {
+      nonzeroElem_t *ordered = om->initAssignmentOrder[i];
+      eq = SBML_formulaToString(ordered->ij);
+      idx = ordered->i;
+      if ( idx == -1 )
+      {
+	init = 1;
+	idx = ordered->j;
+      }
+    }
+    else
+    {
+      if ( i < om->nass )
+      {
+	eq = SBML_formulaToString(om->assignment[i]);
+	idx = i + om->neq;
+      }
+      else
+      {
+	init = 1;
+	eq = SBML_formulaToString(om->initAssignment[i - om->nass]);
+	idx = om->initIndex[i - om->nass];
+      }
+    }
+      
+    fprintf(f, "%d: %s =  %s;", i, om->names[idx], eq);
+    if ( init )
+     fprintf(f, " - AT TIME == 0");     
+    fprintf(f, "\n");
+    free(eq);
+  }
+  fprintf(f, "## evaluate before ODEs:");
+  for ( i=0; i<om->nassbeforeodes; i++ )
+  {
+    nonzeroElem_t *ordered = om->assignmentsBeforeODEs[i];
+    fprintf(f, " %s,", om->names[ordered->i]);
+  }
+  fprintf(f, "\n");
+  fprintf(f, "## evaluate before Events:");
+  for ( i=0; i<om->nassbeforeevents; i++ )
+  {
+    nonzeroElem_t *ordered = om->assignmentsBeforeEvents[i];
+    fprintf(f, " %s,", om->names[ordered->i]);
+  }
+  fprintf(f, "\n");
+  for ( i=0; i<om->neq; i++ )
+  {
+    if ( i == 0 )
+      fprintf(f, "# ODEs:\n");
+    char *eq = SBML_formulaToString(om->ode[i]);
+    fprintf(f, "%d: d%s/dt =  %s;\n", i+1, om->names[i], eq);
+    free(eq);
+  }
+  fprintf(f, "\n");
+
+  return;
+}
+
+void printJacobian(odeModel_t *om, FILE *f)
+{    
+  int i, j;
+  if ( om == NULL )
+  {
+    fprintf(stderr, "No odeModel available.\n");
+    return;
+  }
+
+  if ( om->jacob == NULL )
+  {
+    fprintf(stderr, "Jacobian Matrix has not been constructed.\n");
+    return;
+  }
+
+  fprintf(f, "\n");
+  fprintf(f, "# Jacobian Matrix:\n");
+  for ( i=0; i<om->neq; i++ )
+  {
+    fprintf(f, "# %s: \n", om->names[i]);
+    for ( j=0; j<om->neq; j++ )
+    {
+      char *eq = SBML_formulaToString(om->jacob[i][j]);
+      fprintf(f, "  (d[%s]/dt)/d[%s] = %s;\n", om->names[i], om->names[j], eq);
+      free(eq);
+    }
+  }
+  fprintf(f, "\n");
+  fprintf(stderr, "Use option -j to avoid printing the"
+	  " jacobian matrix expressions.\n");
+  return;
+}
+
+/* The following functions print results of integration */
+
+void printResultsToSBML(Model_t *m, cvodeData_t *data, FILE *f)
+{      
+  int i;
+  SBMLDocument_t *d;
+  char *model;
+
+  fprintf(stderr, "## PRINTING SBML WITH FINAL INTEGRATION DATA\n");
+  fprintf(stderr, "## Final integration time\t%g\n", data->currenttime);
+  fprintf(stderr, "## setting: ");
+  for ( i = 0; i<data->nvalues; i++ )
+  {
+    fprintf(stderr, "%s", data->model->names[i]);
+    /* TODO: skip reaction IDs */
+    if ( !Model_setValue(m, data->model->names[i], NULL, data->value[i]) )
+      fprintf(stderr, "VALUE %s : NOT FOUND!",
+	      (char *)data->model->names[i]);
+    fprintf(stderr, ", ");
+  }
+  fprintf(stderr, "... done ... writing SBML ... ");
+  
+  d = SBMLDocument_create();
+  SBMLDocument_setModel(d, m);
+  model = writeSBMLToString(d);
+  fprintf(f, "%s", model);
+  free(model);
+  SBMLDocument_free(d);
+
+  fprintf(stderr, "done\n\n");
+  
+}
+
+void printDeterminantTimeCourse(cvodeData_t *data, ASTNode_t *det, FILE *f)
+{
+  int i,j;
+  cvodeResults_t *results;
+
+  if ( data == NULL || data->results == NULL )
+  {
+    Warn(stderr, "No results, please integrate first.\n");
+    return;
+  }
+  
+  if ( Opt.PrintMessage )
+    fprintf(stderr, "\nPrinting time course of det(j).\n\n");
+  
+  results = data->results;
+  fprintf(f, "#t det(j)\n");
+  fprintf(f, "##DETERMINANT OF THE JACOBIAN MATRIX\n");
+  for ( i = 0; i<=results->nout; i++ )
+  {
+    fprintf(f, "%g ", results->time[i]);
+    data->currenttime = results->time[i];
+    for ( j=0; j<data->model->neq; j++ )
+    {
+      data->value[j] = results->value[j][i];
+    }
+    fprintf(f, "%g\n", evaluateAST(det, data));
+  }
+  fprintf(f, "##DETERMINANT OF THE JACOBIAN MATRIX\n");
+  fprintf(f, "#t det(j)\n");
+  fflush(f);
+}
+
+
+void printJacobianTimeCourse(cvodeData_t *data, FILE *f)
+{
+  int i, j, k;
+  cvodeResults_t *results;
+
+
+  if ( data == NULL || data->results == NULL )
+  {
+    Warn(stderr, "No results, please integrate first.\n");
+    return;
+  }
+
+  if ( !data->model->jacobian )
+  {
+    Warn(stderr, "Jacobi matrix is not available - %s\n",
+	 data->model->jacobianFailed ?
+	 "differentiation failed." : "construction suppressed.");
+    return;
+  }
+
+#if USE_GRACE
+  if ( Opt.Xmgrace == 1 )
+  {
+    printXMGJacobianTimeCourse(data);
+    return;
+  }
+#endif  
+  
+  results = data->results;
+  if ( Opt.PrintMessage )
+    fprintf(stderr, "Printing time course of the jacobian matrix.\n\n");
+  
+  fprintf(f, "#t ");
+  for ( i=0; i<data->model->neq; i++ )
+    for ( j=0; j<data->model->neq; j++ )
+      fprintf(f, "%s ", data->model->names[j]);
+
+  fprintf(f, "\n");
+  fprintf(f, "##JACOBIAN MATRIX VALUES\n");
+  for ( k = 0; k<=results->nout; k++ )
+  {
+    fprintf(f, "%g ", results->time[k]);
+    data->currenttime = results->time[k];
+    for ( i=0; i<data->model->neq; i++ ) 
+      data->value[i] = results->value[i][k];
+    
+    for ( i=0; i<data->model->neq; i++ ) 
+      for ( j=0; j<data->model->neq; j++ ) 	    	   
+	fprintf(f, "%g ", evaluateAST(data->model->jacob[i][j], data));      
+    
+    fprintf(f, "\n");
+  }
+  fprintf(f, "##JACOBIAN MATRIX VALUES\n");
+  fprintf(f, "#t ");				      
+  for ( i=0; i<data->model->neq; i++ ) 
+    for ( j=0; j<data->model->neq; j++ ) 
+      fprintf(f, "%s ", data->model->names[j]);
+
+  fprintf(f, "\n");
+  fflush(f);
+
+#if !USE_GRACE
+
+  if ( Opt.Xmgrace == 1 )
+  {
+    fprintf(stderr,
+	    "odeSolver has been compiled without XMGRACE functionality.\n");
+    fprintf(stderr,
+	    "The requested data have been printed to stdout instead.\n");
+  }
+
+#endif
+  
+}
+
+void printOdeTimeCourse(cvodeData_t *data, FILE *f)
+{  
+  int i,j;
+  cvodeResults_t *results;
+
+  if ( data == NULL || data->results == NULL )
+  {
+    Warn(stderr, "No results, please integrate first.\n");
+    return;
+  }
+  
+#if USE_GRACE
+  if ( Opt.Xmgrace == 1 )
+  {
+    printXMGOdeTimeCourse(data);
+    return;
+  }
+#endif
+  
+  results = data->results;
+  if ( Opt.PrintMessage )
+    fprintf(stderr, "\nPrinting time course of the ODEs.\n\n");
+    
+  fprintf(f, "#t ");
+  for (i=0; i<data->model->neq; i++ )
+    fprintf(f, "%s ", data->model->names[i]);
+
+  fprintf(f, "\n");
+  fprintf(f, "##ODE VALUES\n");
+  for ( i=0; i<=results->nout; ++i )
+  { 
+    fprintf(f, "%g ", results->time[i]);
+    data->currenttime = results->time[i];
+    for ( j=0; j<data->model->neq; j++ )
+    {
+      data->value[j] = results->value[j][i];
+      fprintf(f, "%g ", evaluateAST(data->model->ode[j],data));
+    }
+    fprintf(f, "\n");
+  }
+  fprintf(f, "##ODE VALUES\n");
+  fprintf(f, "#t ");
+  for ( i=0; i<data->model->neq; i++ )
+    fprintf(f, "%s ", data->model->names[i]);
+
+  fprintf(f, "\n");
+  fflush(f);
+
+  
+#if !USE_GRACE
+
+  if ( Opt.Xmgrace == 1 )
+  {
+    fprintf(stderr,
+	    "odeSolver has been compiled without XMGRACE functionality.\n");
+    fprintf(stderr,
+	    "The requested data have been printed to stdout instead.\n");
+  }
+
+#endif
+  
+}
+
+void printReactionTimeCourse(cvodeData_t *data, Model_t *m, FILE *f)
+{
+  unsigned int i, j;
+  int k, n;
+  cvodeResults_t *results;
+  Reaction_t *r;
+  KineticLaw_t *kl;
+  ASTNode_t **kls;
+
+  if ( data == NULL || data->results == NULL )
+  {
+    Warn(stderr, "No results, please integrate first.\n");
+    return;
+  }
+
+#if USE_GRACE
+  if ( Opt.Xmgrace == 1 )
+  {
+    printXMGReactionTimeCourse(data);
+    return;
+  }
+#endif  
+  
+  results = data->results;
+  if ( Opt.PrintMessage )
+    fprintf(stderr,
+	    "\nPrinting time course of the reactions (kinetic laws).\n\n");
+
+  if(!(kls =
+       (ASTNode_t **)calloc(Model_getNumReactions(m),
+			    sizeof(ASTNode_t *))))
+    fprintf(stderr, "failed!\n");
+
+  fprintf(f, "#t ");
+  for ( i=0; i<Model_getNumReactions(m); i++ )
+  {
+    r = Model_getReaction(m, i);
+    kl = Reaction_getKineticLaw(r);
+    kls[i] = copyAST(KineticLaw_getMath(kl));
+    AST_replaceNameByParameters(kls[i], KineticLaw_getListOfParameters(kl));
+    AST_replaceConstants(m, kls[i]);
+    fprintf(f, "%s ", Reaction_getId(r));
+  }
+  fprintf(f, "\n");
+  fprintf(f, "##REACTION RATES\n"); 
+  for ( k=0; k<=results->nout; ++k )
+  {
+    fprintf(f, "%g ", results->time[k]);
+    data->currenttime = results->time[k];
+    for ( n=0; n<data->model->neq; n++ )
+      data->value[n] = results->value[n][k];
+    for ( j=0; j<Model_getNumReactions(m); j++ )      
+      fprintf(f, "%g ", evaluateAST(kls[j], data));
+
+    fprintf(f, "\n");
+  }
+  fprintf(f, "##REACTION RATES\n"); 
+  fprintf(f, "#t ");
+  for ( i=0; i<Model_getNumReactions(m); i++ )
+  {
+    r = Model_getReaction(m, i);
+    fprintf(f, "%s ", Reaction_getId(r));
+    ASTNode_free(kls[i]);
+  }
+  free(kls);
+  fprintf(f, "\n");
+  fflush(f);
+  
+#if !USE_GRACE
+  if ( Opt.Xmgrace == 1 )
+  {
+    fprintf(stderr,
+	    "odeSolver has been compiled without XMGRACE functionality.\n");
+    fprintf(stderr,
+	    "The requested data have been printed to stdout instead.\n");
+  }
+#endif
+  
+}
+
+/* TODO: set print precision based on rel. and abs. errors;
+   number of decimals: d=max(floor(log10(1/(X*relErr)))+1,
+                             floor(log10(1/absErr)))
+   order of magnitude: m=floor(log10(X))+1
+   FORMAT STRING "*.(d+m+1)g"
+
+   {
+   char fmt[100];
+   sprintf(fmt, "precision %%.%d \n", round(1/1e-14));
+   printf(fmt, IntegratorInstance_getVariableValue(ii, pohVI));
+   }  
+*/
+void precprintf(FILE *f, double X, double relE, double absE)
+{
+   /* number of decimals: */
+  int d, m, numDigits;
+  if ( X > absE )
+  {
+    d = max(floor(log10(1/(abs(X)*relE)))+1, floor(log10(1/absE)));
+    m = max(1, floor(log10(abs(X)))+1);
+    numDigits = d+m; /* add 1 for decimal point */
+
+/*     fprintf(stderr, "HEELLLO %d vs. %f %f; ERRS %g and %g\n", \ */
+/* 	    numDigits, abs(X),  floor(log10(abs(X)))+1, relE, absE); */
+    fprintf(f, "%.*f ", numDigits, X);
+  }
+  else
+    fprintf(f, "%f ", X);
+}
+
+void printConcentrationTimeCourse(cvodeData_t *data, FILE *f)
+{  
+  int i,j, k;
+  cvodeResults_t *results;
+  odeModel_t *om;
+  odeSense_t *os;
+
+
+  if ( data == NULL || data->results == NULL )
+  {
+    Warn(stderr, "No results, please integrate first.\n");
+    return;
+  }
+
+#if USE_GRACE
+  if ( Opt.Xmgrace == 1 )
+  {
+    printXMGConcentrationTimeCourse(data);
+    return;
+  }
+#endif  
+  
+  results = data->results;
+  om = data->model;
+  os = data->os;
+
+  if ( Opt.PrintMessage )
+  {
+    fprintf(stderr,
+	    "\nPrinting time course of all variable values");
+    if ( Opt.Sensitivity  && results->sensitivity != NULL )
+      fprintf(stderr, "\nand sensitivities of ODE variables.\n\n");
+    else
+      fprintf(stderr, ".\n\n");
+  }
+  
+  /* print sensitivities of calculated */
+  if ( Opt.Sensitivity  && results->sensitivity != NULL )
+  {
+    fprintf(f, "#t ");
+    for( j=0; j<om->neq; j++ )
+      for ( k=0; k<os->nsens; k++ )
+	fprintf(f, "d%s/d%s ", om->names[j], om->names[os->index_sens[k]]);
+
+    fprintf(f, "\n");
+    fprintf(f, "##SENSITIVITIES\n");
+    
+    for ( i=0; i<=results->nout; ++i )
+    {
+      fprintf(f, "%g ", results->time[i]);      
+      for ( j=0; j<om->neq; j++ ) 
+        for ( k=0; k<os->nsens; k++ ) 
+	  fprintf(f, "%g ", results->sensitivity[j][k][i]);
+      fprintf(f, "\n");
+    }
+    
+    fprintf(f, "\n");
+    fprintf(f, "##SENSITIVITIES\n");
+    fprintf(f, "#t ");
+    
+    for( j=0; j<om->neq; j++ ) 
+      for ( k=0; k<os->nsens; k++ )
+	fprintf(f, "d%s/d%s ", om->names[j], om->names[os->index_sens[k]]);
+    
+  }
+  /* print concentrations */
+  else
+  {
+    fprintf(f, "#t ");
+    for( i=0; i<data->nvalues; i++)
+      fprintf(f, "%s ", om->names[i]);
+    
+    fprintf(f, "\n");    
+    fprintf(f, "##CONCENTRATIONS\n");
+    for ( i=0; i<=results->nout; ++i )
+    {
+      fprintf(f, "%g ", results->time[i]);
+      
+      for ( j=0; j<om->neq; j++ ) 
+	precprintf(f, results->value[j][i], Opt.RError, Opt.Error);
+/* 	fprintf(f, "%g ", results->value[j][i]); */
+
+      for ( j=0; j<om->nass; j++ )
+	precprintf(f, results->value[om->neq+j][i], Opt.RError, Opt.Error);
+/* 	fprintf(f, "%g ", results->value[om->neq+j][i]); */
+      
+      for ( j=0; j<om->nconst; j++ )
+	precprintf(f, results->value[om->neq+om->nass+j][i], Opt.RError, Opt.Error);
+/* 	fprintf(f, "%g ", results->value[om->neq+om->nass+j][i]); */
+
+      fprintf(f, "\n");
+    }
+    fprintf(f, "##CONCENTRATIONS\n");
+    fprintf(f, "#t ");
+    for( i=0; i<data->nvalues; i++ )
+      fprintf(f, "%s ", om->names[i]);
+
+    fprintf(f, "\n");
+  }
+  
+  fprintf(f, "\n\n");
+  
+  fflush(f);
+
+#if !USE_GRACE
+
+  if ( Opt.Xmgrace == 1 )
+  {
+    fprintf(stderr,
+	    "odeSolver has been compiled without XMGRACE functionality.\n");
+    fprintf(stderr,
+	    "The requested data have been printed to stdout instead.\n");
+  }
+
+#endif
+  
+}
+
+
+/*
+  The following functions print results of the integration
+  to XMGrace.
+*/
+
+/*
+  The function printPhase(data) asks the user to enter 2 species of
+  the integrated system and prints a phase diagram to XMGrace.
+*/
+
+void printPhase(cvodeData_t *data)
+{
+
+#if !USE_GRACE
+  (void)data;
+
+  fprintf(stderr,
+	  "odeSolver has been compiled without XMGRACE functionality.\n");
+  fprintf(stderr,
+	  "Phase diagrams can only be printed to XMGrace at the moment.\n");
+
+#else
+  
+  int i,j;
+  double maxY;
+  double maxX;
+  char *x;
+  double xvalue;
+  char *y;
+  double yvalue;
+
+  cvodeResults_t *results;
+
+  maxY = 1.0;
+  maxX = 1.0;
+  
+  if ( data==NULL || data->results==NULL )
+  {
+    Warn(stderr,
+	 "No data available to print! Please integrate model first!\n");
+    return;
+  }
+
+  results = data->results;
+
+  if ( openXMGrace(data) > 0 )
+  {
+    fprintf(stderr,
+	    "Error: Couldn't open XMGrace\n");
+    return;
+  }
+
+  GracePrintf("world xmax %g", 1.25*maxX);
+  GracePrintf("world ymax %g", 1.25*maxY);
+
+  GracePrintf("xaxis tick major %g", (1.25*maxX)/12.5);
+  /*     GracePrintf("xaxis tick minor %d", (int) data->currenttime/100); */
+  GracePrintf("yaxis tick major %g", (1.25*maxY)/12.5 );
+
+  if ( Model_isSetName(data->model->m) )
+    GracePrintf("subtitle \"%s, %s\"", Model_getName(data->model->m),
+		"phase diagram");
+  else if  ( Model_isSetId(data->model->m) )
+    GracePrintf("subtitle \"%s, %s\"", Model_getId(data->model->m),
+		"phase diagram");
+  else
+    GracePrintf("subtitle \"model has no name, %s/id\"", "phase diagram");
+      
+  GracePrintf("xaxis label \"species 1\"");
+  GracePrintf("yaxis label \"species 2\"");
+
+  printf("Please enter the IDs and NOT the NAMES of species!\n");
+  printf("In interactive mode press 'c' to see ID/NAME pairs.\n\n");
+  printf("Please enter the ID of the species for the x axis: ");
+  x = get_line(stdin);
+  x = util_trim(x);
+  GracePrintf("xaxis label \"%s\"", x);
+  GracePrintf("redraw");
+  
+  printf("Please enter the ID of the species for the y axis: ");
+  y = get_line(stdin);
+  y = util_trim(y);
+  GracePrintf("yaxis label \"%s\"", y);
+  GracePrintf("redraw");
+  
+  /* check if species exist */
+  xvalue = 1;
+  yvalue = 1;
+  for ( j=0; j<data->model->neq; j++ )
+  {
+    if ( !strcmp(x, data->model->names[j]) )
+    {
+      xvalue = 0;
+      GracePrintf("xaxis label \"%s\"", data->model->names[j]);
+    }
+    if ( !strcmp(y, data->model->names[j]) )
+    {
+      yvalue = 0;
+      GracePrintf("yaxis label \"%s\"", data->model->names[j]);
+    }
+  }
+  if ( xvalue || yvalue )
+  {
+    fprintf(stderr, "One of the entered species does not exist.\n");
+    GraceClose();
+    fprintf(stderr, "XMGrace subprocess closed. Please try again");
+    free(x);
+    free(y);
+    return;
+  }
+
+  fprintf(stderr, "Printing phase diagram to XMGrace!\n");
+
+  for ( i=0; i<=results->nout; ++i )
+  {     
+    for ( j=0; j<data->model->neq; j++ )
+    {
+      if ( !strcmp(x, data->model->names[j]) ) 
+	xvalue = results->value[j][i];
+      if ( !strcmp(y, data->model->names[j]) )
+	yvalue = results->value[j][i];
+    }
+    GracePrintf("g0.s1 point %g, %g", xvalue, yvalue);
+
+    if ( yvalue > maxY )
+    {
+      maxY = 1.25*yvalue;
+      GracePrintf("world ymax %g", maxY);
+      GracePrintf("yaxis tick major %g", maxY/10);      
+    }
+    if ( xvalue > maxX )
+    {
+      maxX = 1.25*xvalue;
+      GracePrintf("world xmax %g", maxX);
+      GracePrintf("xaxis tick major %g", maxX/10);
+    }
+
+    /*
+      redrawing on each 10th step gives an impression,
+      how fast the two values change within the phase
+      diagram.
+    */
+    if ( i%10 == 0 )
+      GracePrintf("redraw");
+  }
+
+  GracePrintf("redraw");
+  closeXMGrace(data, "phase");
+  free(x);  
+  free(y);
+
+#endif
+
+  return;
+}
+
+
+#if USE_GRACE
+
+
+/*
+  This function prints the time course of reaction fluxes
+  to XMGrace
+*/
+
+static int printXMGReactionTimeCourse ( cvodeData_t *data )
+{
+
+  int i, j, n;
+  double maxY, minY, result;
+  
+  Model_t *m;
+  Reaction_t *r;
+  KineticLaw_t *kl;
+  ASTNode_t **kls;
+  
+  odeModel_t *om = data->model;
+  cvodeResults_t *results = data->results;
+
+  maxY = 0.0;
+  minY = 0.0;
+
+  fprintf(stderr,
+	  "Printing time development of reaction fluxes to XMGrace!\n");
+
+
+  if ( om->m == NULL )
+  {
+    fprintf(stderr, "Error: No reaction model availabe\n");
+    return 1;
+  }
+  else m = om->m;
+
+  if ( openXMGrace(data) > 0 )
+  {
+    fprintf(stderr,  "Error: Couldn't open XMGrace\n");
+    return 1;
+  }
+  
+  GracePrintf("yaxis label \"%s\"", "flux [substance/time]");
+  if ( Model_isSetName(m) )
+    GracePrintf("subtitle \"%s, %s\"", Model_getName(m),
+		"reaction flux time courses");
+  else if  ( Model_isSetId(m) )
+    GracePrintf("subtitle \"%s, %s\"", Model_getId(m),
+		"reaction flux time courses");
+  else 
+    GracePrintf("subtitle \"model has no name, %s/id\"",
+		"reaction flux time courses");
+
+
+  /* print legend */  
+  for ( i=0; i<Model_getNumReactions(m); i++ )
+  {
+    r = Model_getReaction(m, i);
+    if ( Reaction_isSetName(r) )
+      GracePrintf("g0.s%d legend  \"%s: %s \"\n", i+1,
+		  Reaction_getId(r), Reaction_getName(r));
+    else
+      GracePrintf("g0.s%d legend  \"%s \"\n", i+1, Reaction_getId(r));      
+  }  
+  GracePrintf("legend 1.155, 0.85");
+  GracePrintf("legend font 8");
+  GracePrintf("legend char size 0.4");
+
+  if(!(kls = (ASTNode_t **)calloc(Model_getNumReactions(m),
+				  sizeof(ASTNode_t *)))) 
+    fprintf(stderr, "failed!\n");
+  
+  for ( i=0; i<Model_getNumReactions(m); i++ )
+  {
+    r = Model_getReaction(m, i);
+    kl = Reaction_getKineticLaw(r);
+    kls[i] = copyAST(KineticLaw_getMath(kl));
+    AST_replaceNameByParameters(kls[i], KineticLaw_getListOfParameters(kl));
+    AST_replaceConstants(m, kls[i]);
+  }
+  
+  /* evaluate flux for each time point and print to XMGrace */
+  
+  for ( i=0; i<=results->nout; i++ )
+  {  
+    n = 1;
+    /* set time and variable values to values at time[k] */
+    data->currenttime = results->time[i];
+    for ( j=0; j<data->model->neq; j++ )
+      data->value[j] = results->value[j][i];
+
+    /* evaluate kinetic law expressions */
+    for ( j=0; j<Model_getNumReactions(m); j++ )
+    {
+      result = evaluateAST(kls[j], data);
+      if ( result > maxY )
+      {
+	maxY = result;
+	GracePrintf("world ymax %g", 1.25*maxY);
+      }
+      if ( result < minY )
+      {
+	minY = result;
+	GracePrintf("world ymin %g", 1.25*minY);
+      }
+      GracePrintf("g0.s%d point %g, %g",
+		  n, results->time[i], result);
+      n++;
+    }
+  }
+
+  GracePrintf("yaxis tick major %g", 1.25*(fabs(maxY)+fabs(minY))/10);
+  GracePrintf("redraw");
+  closeXMGrace(data, "flux");
+
+  /* free temporary ASTNodes */
+  for ( i=0; i<Model_getNumReactions(m); i++ ) 
+    ASTNode_free(kls[i]);
+  free(kls);
+
+  return 0;
+  
+}
+
+
+/*
+  This function prints the values of the Jacobian Matrix
+  for each simulated time point to XMGrace
+*/
+
+static int printXMGJacobianTimeCourse ( cvodeData_t *data )
+{
+  int i, j, k, n;
+  double maxY;
+  double minY; 
+  double result;
+
+  cvodeResults_t *results;
+
+  maxY = 0.0;
+  minY = 0.0;
+  
+
+  fprintf(stderr,
+	  "Printing time development of the jacobian matrix to XMGrace!\n");
+
+  results = data->results;
+
+  if ( openXMGrace(data) > 0 )
+  {
+    fprintf(stderr,
+	    "Error: Couldn't open XMGrace\n");
+    return 1;
+  }
+  
+  GracePrintf("yaxis label \"%s\"", "jacobian matrix value");
+  if ( Model_isSetName(data->model->m) )
+    GracePrintf("subtitle \"%s, %s\"", Model_getName(data->model->m),
+		"jacobian matrix time course");
+  else if  ( Model_isSetId(data->model->m) )
+    GracePrintf("subtitle \"%s, %s\"", Model_getId(data->model->m),
+		"jacobian matrix time course");
+  else 
+    GracePrintf("subtitle \"model has no name, %s/id\"",
+		"jacobian matrix time course");
+
+
+  /* print legend */  
+  n = 1;  
+  for ( i=0; i<data->model->neq; i++ )
+  {
+    for ( j=0; j<data->model->neq; j++ )
+    {
+      GracePrintf("g0.s%d legend  \"%s / %s\"\n",
+		  n, data->model->names[i], data->model->names[j]);
+      n++;
+    }
+  }  
+  GracePrintf("legend 1.155, 0.85");
+  GracePrintf("legend font 8");
+  GracePrintf("legend char size 0.4");
+
+  /* evaluate jacobian matrix for each time point and print to XMGrace */
+  
+  for ( k = 0; k<=results->nout; k++ )
+  {  
+    n = 1;
+    data->currenttime = results->time[i];
+    for ( i=0; i<data->model->neq; i++ )
+    {      
+      /* set specie values to values at time[k] */
+      data->value[i] = results->value[i][k];
+      
+      for ( j=0; j<data->model->neq; j++ )
+      {	
+	result =  evaluateAST(data->model->jacob[i][j], data);
+	
+	if ( result > maxY )
+	{	  
+	  maxY = result;
+	  GracePrintf("world ymax %g", 1.25*maxY);
+	}
+	if ( result < minY )
+	{
+	  minY = result;
+	  GracePrintf("world ymin %g", 1.25*minY);
+	}
+	
+	GracePrintf("g0.s%d point %g, %g",
+		    n, results->time[k], result);
+	n++;
+
+      }
+    }
+    /*
+    if ( k%10 == 0 )
+    {
+      GracePrintf("yaxis tick major %g", 1.25*(fabs(maxY)+fabs(minY))/10);
+      GracePrintf("redraw");
+    }
+    */
+  }
+  GracePrintf("yaxis tick major %g", 1.25*(fabs(maxY)+fabs(minY))/10);
+  GracePrintf("redraw");
+  closeXMGrace(data, "jac");
+
+
+  return 0;
+}
+
+/*
+  This function prints the values of the ODEs
+  for each simulated time point to XMGrace
+*/
+
+static int printXMGOdeTimeCourse(cvodeData_t *data)
+{  
+  int i, j, n;
+  double maxY;
+  double minY; 
+  double result;
+
+  cvodeResults_t *results;
+
+  maxY = 0.01;
+  minY = 0.0;
+  
+
+  fprintf(stderr,
+	  "Printing time development of the ODEs (rates) to XMGrace!\n");
+
+  results = data->results;
+
+  if ( openXMGrace(data) > 0 )
+  {
+    fprintf(stderr,
+	    "Error: Couldn't open XMGrace\n");
+    return 1;     
+  }
+
+  GracePrintf("yaxis label \"%s\"", "ODE values");
+  if ( Model_isSetName(data->model->m) )
+    GracePrintf("subtitle \"%s, %s\"", Model_getName(data->model->m),
+		  "ODEs time course");
+  else if  ( Model_isSetId(data->model->m) )
+    GracePrintf("subtitle \"%s, %s\"", Model_getId(data->model->m),
+		  "ODEs time course");
+  else 
+    GracePrintf("subtitle \"model has no name/id, %s\"",
+		  "ODEs time course");
+
+  /* print legend */  
+  if ( printXMGLegend(data, data->model->neq) > 0 )
+  {
+    fprintf(stderr,
+	    "Warning: Couldn't print legend\n");
+    return 1;
+  }
+
+
+  /* evaluate ODE at each time point and print to XMGrace */
+
+  for ( i=0; i<=results->nout; ++i )
+  {
+    n = 1;
+    data->currenttime = results->time[i];
+    for ( j=0; j<data->model->neq; j++ )
+      data->value[j] = results->value[j][i];
+    for ( j=0; j<data->model->neq; j++ )
+    {
+      result = evaluateAST(data->model->ode[j],data);
+      if ( result > maxY )
+      {
+	maxY = result;
+	GracePrintf("world ymax %g", 1.25*maxY);
+      }
+      if ( result < minY )
+      {
+	minY = result;
+	GracePrintf("world ymin %g", 1.25*minY);
+      }
+
+      GracePrintf("g0.s%d point %g, %g",
+		  n, results->time[i], result);
+      n++;     
+    }
+
+    /*
+    if ( i%10 == 0 )
+    {
+      GracePrintf("yaxis tick major %g", 1.25*(fabs(maxY)+fabs(minY))/10);
+      GracePrintf("redraw");
+    }
+    */
+  }
+  GracePrintf("yaxis tick major %g", 1.25*(fabs(maxY)+fabs(minY))/10);
+  GracePrintf("redraw");
+  closeXMGrace(data, "rates");
+
+  return 0;
+}
+
+
+/*
+  This function prints integration results to XMGrace
+*/
+
+static int printXMGConcentrationTimeCourse(cvodeData_t *data)
+{
+  int i,j,n;
+  double maxY;
+  double minY;
+
+  cvodeResults_t *results;
+
+  results = data->results;
+  
+  maxY = 1.0;
+  minY = 0.0;
+
+  fprintf(stderr, "Printing results to XMGrace!\n");
+  if ( Opt.Sensitivity  && results->sensitivity != NULL )
+    fprintf(stderr, "SORRY: sensitivities can not be printed to XMGrace\n");
+  
+  if ( openXMGrace(data) > 0 )
+  {
+    fprintf(stderr,
+	    "Error: Couldn't open XMGrace\n");
+    return 1;     
+  }
+  if ( printXMGLegend(data, data->nvalues-data->model->nconst) > 0 )
+  {
+    fprintf(stderr,
+	    "Warning: Couldn't print legend\n");
+    return 1;
+  }
+  
+  for ( i=0; i<=results->nout; ++i )
+  {
+    n=1; 
+    for ( j=0; j<data->nvalues-data->model->nconst; j++ )
+    {
+      if ( results->value[j][i] > maxY )
+      {
+	maxY = results->value[j][i];
+	GracePrintf("world ymax %g", 1.25*maxY);	
+      }
+      if ( results->value[j][i] < minY )
+      {
+	minY = results->value[j][i];
+	GracePrintf("world ymin %g", 1.25*minY);
+      }
+      GracePrintf("g0.s%d point %g, %g", 
+		  n, results->time[i], results->value[j][i]);
+      n++;
+    }
+  
+    /*  if ( i%10 == 0 )
+	{
+      GracePrintf("yaxis tick major %g", 1.25*(fabs(maxY)+fabs(minY))/10);
+      GracePrintf("redraw");
+      }
+    */
+  }
+  GracePrintf("yaxis tick major %g", 1.25*(fabs(maxY)+fabs(minY))/10);
+  GracePrintf("redraw");
+  closeXMGrace(data, "species");
+
+  return 0;
+}
+
+
+static int printXMGLegend(cvodeData_t *data, int nvalues)
+{
+  int i, found;
+  odeModel_t *om = data->model;
+  Model_t *m = om->simple;
+  Species_t *s;
+  Parameter_t *p;
+  Compartment_t *c;
+
+  
+  for ( i=0; i<nvalues; i++ )
+  {
+    found = 0;
+    if ( (s = Model_getSpeciesById(m, om->names[i])) != NULL )
+    {
+      if ( Species_isSetName(s) )
+      {
+	GracePrintf("g0.s%d legend  \"%s: %s\"\n", i+1,
+		    om->names[i], Species_getName(s));
+	found++;
+      }
+    }
+    else if ( (c = Model_getCompartmentById(m, om->names[i])) )
+    {
+      if ( Compartment_isSetName(c) )
+      {
+	GracePrintf("g0.s%d legend  \"%s: %s\"\n", i+1,
+		    om->names[i], Compartment_getName(c));
+	found++;
+      }
+    }
+    else if ( (p = Model_getParameterById(m, om->names[i])) )
+    {
+      if ( Parameter_isSetName(p) )
+      {
+	GracePrintf("g0.s%d legend  \"%s: %s\"\n", i+1,
+		    om->names[i], Parameter_getName(p));
+	found++;
+      }
+    }
+    if ( found == 0 )
+      GracePrintf("g0.s%d legend  \"%s\"\n", i+1, om->names[i]);
+  }
+
+
+  GracePrintf("legend 1.155, 0.85");
+  GracePrintf("legend font 8");
+  GracePrintf("legend char size 0.4");
+
+  return 0;
+}
+
+
+/* Opens XMGrace */
+
+static int openXMGrace(cvodeData_t *data)
+{
+  double maxY;
+
+  /* Open XMGrace */
+  if ( !GraceIsOpen() )
+  {     
+    GraceRegisterErrorFunction(grace_error); 
+    /* Start Grace with a buffer size of 2048 and open the pipe */
+    if ( GraceOpen(2048) == -1 )
+    {
+      fprintf(stderr, "Can't run Grace. \n");
+      return 1;
+    }
+    else if ( GraceIsOpen() )
+    {
+      maxY = 1.0;
+      /*
+	"with g%d" might become useful, when printing multiple
+	graphs into one XMGrace subprocess.
+      */
+      /* GracePrintf("with g%d", data->results->xmgrace); */
+      GracePrintf("world xmax %g", data->currenttime);
+      GracePrintf("world ymax %g", 1.25*maxY);
+      GracePrintf("xaxis tick major %g", data->currenttime/10);
+      /* GracePrintf("xaxis tick minor %d", (int) data->currenttime/100); */
+      GracePrintf("yaxis tick major %g", (1.25*maxY)/12.5 );
+      GracePrintf("xaxis label font 4");
+      GracePrintf("xaxis label \"time\"");
+      GracePrintf("xaxis ticklabel font 4");
+      GracePrintf("xaxis ticklabel char size 0.7");
+      GracePrintf("yaxis label font 4");
+      GracePrintf("yaxis label \"concentration\"");    
+      GracePrintf("yaxis ticklabel font 4");
+      GracePrintf("yaxis ticklabel char size 0.7");
+      if ( Model_isSetName(data->model->simple) )
+	GracePrintf("subtitle \"%s\"", Model_getName(data->model->simple));
+      else if  ( Model_isSetId(data->model->simple) )
+	GracePrintf("subtitle \"%s\"", Model_getId(data->model->simple));
+      else 
+	GracePrintf("subtitle \"model has no name/id\"");
+      GracePrintf("subtitle font 8");   
+    }
+  }
+  else
+  {
+    fprintf(stderr, "Please close XMGrace first.\n");
+    return 1;
+  }
+
+  return 0;
+}
+
+/* Closes the pipe to Grace and saves a grace data file
+   when option -w/--write was given */
+
+static int closeXMGrace(cvodeData_t *data, char *safename)
+{
+  if ( Opt.Write )
+  {
+    fprintf(stderr, "Saving XMGrace file as \"%s_%s_t%g.agr\"\n",
+	    Opt.ModelFile,
+	    safename,
+	    data->results->time[data->results->nout]);
+    GracePrintf("saveall \"%s_%s_t%g.agr\"",
+		Opt.ModelFile,
+		safename,
+		data->results->time[data->results->nout]);
+  }
+
+  GraceClosePipe();
+  return(0);
+}
+
+static void grace_error(const char *msg)
+{
+  fprintf(stderr, "library message: \"%s\"\n", msg);  
+}
+
+#endif
+
+/* End of file */
diff --git a/odeSolver/printModel.h b/odeSolver/printModel.h
new file mode 100644
index 0000000..2c0dd1b
--- /dev/null
+++ b/odeSolver/printModel.h
@@ -0,0 +1,58 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <30-Sep-2010 11:05:29 raim>
+  $Id: printModel.h,v 1.4 2010/09/30 09:15:16 raimc Exp $
+*/
+/* 
+ *
+ * This application is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This application  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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *
+ */
+
+#ifndef _PRINTMODEL_H_
+#define _PRINTMODEL_H_
+
+/* print model structures to file */
+void printModel(Model_t *, FILE *);
+void printSpecies(Model_t *, FILE *);
+void printReactions(Model_t *, FILE *);
+void printODEs(odeModel_t *, FILE *);
+void printODEsToSBML(Model_t *ode, FILE *);
+void printJacobian(odeModel_t *, FILE *);
+/* print results of simulation to file */
+void printConcentrationTimeCourse(cvodeData_t *, FILE *);
+void printOdeTimeCourse(cvodeData_t *, FILE *);
+void printReactionTimeCourse(cvodeData_t *, Model_t *, FILE *);
+void printJacobianTimeCourse(cvodeData_t *, FILE *);
+void printDeterminantTimeCourse(cvodeData_t *, ASTNode_t *, FILE *);
+void printResultsToSBML(Model_t *, cvodeData_t *, FILE *);
+
+void printPhase(cvodeData_t *);
+
+#endif
+/* End of file */
diff --git a/sbml/sbml-l1v1.xsd b/sbml/sbml-l1v1.xsd
new file mode 100644
index 0000000..9eee2d6
--- /dev/null
+++ b/sbml/sbml-l1v1.xsd
@@ -0,0 +1,389 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
+         targetNamespace = "http://www.sbml.org/sbml/level1"
+         xmlns:naa = "http://www.sbml.org/sbml/level1"
+         elementFormDefault = "qualified">
+
+  <xsd:annotation>
+    <xsd:documentation>
+      File name : sbml.xsd
+      Author : D. Lucio, J. Schaff, A. Finney, M. Hucka, H. Sauro
+      Description : XML Schema for the Systems Biology Markup Language Level 1
+      Version : 1
+      Modified : $Date: 2005/05/30 19:49:12 $
+      Revision: $Id: sbml-l1v1.xsd,v 1.1 2005/05/30 19:49:12 raimc Exp $
+
+      Copyright 2002-2003 California Institute of Technology and Japan Science
+      and Technology Corporation.
+      
+      This library is free software; you can redistribute it and/or modify it
+      under the terms of the GNU Lesser General Public License as published
+      by the Free Software Foundation; either version 2.1 of the License, or
+      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.  The software 
+      and documentation provided hereunder is on an "as is" basis, and the
+      California Institute of Technology and Japan Science and Technology
+      Corporation have no obligations to provide maintenance, support,
+      updates, enhancements or modifications.  In no event shall the
+      California Institute of Technology or the Japan Science and Technology
+      Corporation be liable to any party for direct, indirect, special,
+      incidental or consequential damages, including lost profits, arising
+      out of the use of this software and its documentation, even if the
+      California Institute of Technology and/or Japan Science and Technology
+      Corporation have been advised of the possibility of such damage.  See
+      the GNU Lesser General Public License for more details.
+      
+      You should have received a copy of the GNU Lesser General Public License
+      along with this library; if not, write to the Free Software Foundation,
+      Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <!-- SName -->
+  <xsd:simpleType name="SName">
+
+    <xsd:annotation>
+      <xsd:documentation>
+         SName type used for expressing names of components in a model
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="(_|[a-z]|[A-Z])(_|[a-z]|[A-Z]|[0-9])*"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <!-- SBase -->
+  <xsd:complexType name="SBase" abstract="true">
+    <xsd:annotation>
+      <xsd:documentation>
+        Designed to allow a modeler or a package to attach
+        information to each component.
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="notes" minOccurs="0">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any namespace="http://www.w3.org/1999/xhtml"
+                     processContents="skip" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="annotations" minOccurs="0">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any processContents="skip" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <!-- Parameter -->
+  <xsd:complexType name="Parameter">
+
+    <xsd:complexContent>
+      <xsd:extension base="naa:SBase">
+        <xsd:attribute name="name"  use="required"/>
+        <xsd:attribute name="value" type="xsd:double" use="required"/>
+        <xsd:attribute name="units" type="naa:SName" use="optional"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <!-- UnitKind -->
+  <xsd:simpleType name="UnitKind">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="ampere"/>
+      <xsd:enumeration value="becquerel"/>
+      <xsd:enumeration value="candela"/>
+      <xsd:enumeration value="celsius"/>
+      <xsd:enumeration value="coulomb"/>
+      <xsd:enumeration value="dimensionless"/>
+      <xsd:enumeration value="farad"/>
+      <xsd:enumeration value="gram"/>
+      <xsd:enumeration value="gray"/>
+      <xsd:enumeration value="henry"/>
+      <xsd:enumeration value="hertz"/>
+      <xsd:enumeration value="item"/>
+      <xsd:enumeration value="joule"/>
+      <xsd:enumeration value="katal"/>
+      <xsd:enumeration value="kelvin"/>
+      <xsd:enumeration value="kilogram"/>
+      <xsd:enumeration value="liter"/>
+      <xsd:enumeration value="litre"/>
+      <xsd:enumeration value="lumen"/>
+      <xsd:enumeration value="lux"/>
+      <xsd:enumeration value="meter"/>
+      <xsd:enumeration value="metre"/>
+      <xsd:enumeration value="mole"/>
+      <xsd:enumeration value="newton"/>
+      <xsd:enumeration value="ohm"/>
+      <xsd:enumeration value="pascal"/>
+      <xsd:enumeration value="radian"/>
+      <xsd:enumeration value="second"/>
+      <xsd:enumeration value="siemens"/>
+      <xsd:enumeration value="sievert"/>
+      <xsd:enumeration value="steradian"/>
+      <xsd:enumeration value="tesla"/>
+      <xsd:enumeration value="volt"/>
+      <xsd:enumeration value="watt"/>
+      <xsd:enumeration value="weber"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <!-- Unit -->
+  <xsd:complexType name="Unit">
+    <xsd:complexContent>
+      <xsd:extension base="naa:SBase">
+        <xsd:attribute name="kind" type="naa:UnitKind" use="required"/>
+        <xsd:attribute name="exponent" type="xsd:integer" default="1"/>
+        <xsd:attribute name="scale" type="xsd:integer" default="1"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <!-- UnitDefinition -->
+  <xsd:complexType name="UnitDefinition">
+    <xsd:complexContent>
+      <xsd:extension base="naa:SBase">
+        <xsd:sequence>
+          <xsd:element name="listOfUnits" minOccurs="0">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="unit" type="naa:Unit" maxOccurs="unbounded"/>
+              </xsd:sequence>
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:sequence>
+        <xsd:attribute name="name" type="naa:SName" use="required"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <!-- Compartment -->
+  <xsd:complexType name="Compartment">
+    <xsd:complexContent>
+      <xsd:extension base="naa:SBase">
+        <xsd:attribute name="name" type="naa:SName" use="required"/>
+        <xsd:attribute name="volume" type="xsd:double" default="1"/>
+        <xsd:attribute name="units" type="naa:SName" use="optional"/>
+        <xsd:attribute name="outside" type="naa:SName" use="optional"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <!-- Specie -->
+  <xsd:complexType name="Specie">
+    <xsd:complexContent>
+      <xsd:extension base="naa:SBase">
+        <xsd:attribute name="name" type="naa:SName" use="required"/>
+        <xsd:attribute name="compartment" type="naa:SName" use="required"/>
+        <xsd:attribute name="initialAmount" type="xsd:double" use="required"/>
+        <xsd:attribute name="units" type="naa:SName" use="optional"/>
+        <xsd:attribute name="boundaryCondition" use="optional" type="xsd:boolean" default="false"/>
+        <xsd:attribute name="charge" type="xsd:integer" use="optional"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+
+  <!-- ListOfParameter  -->
+  <xsd:element name="listOfParameters">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element name="parameter" type="naa:Parameter" maxOccurs="unbounded"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+
+
+  <!-- Rule -->
+  <xsd:simpleType name="RuleType">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="scalar"/>
+      <xsd:enumeration value="rate"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:complexType name="Rule" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="naa:SBase">
+        <xsd:attribute name="formula" type="xsd:string" use="required"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="AlgebraicRule">
+    <xsd:complexContent>
+      <xsd:extension base="naa:Rule"/>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="AssignmentRule" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="naa:Rule">
+        <xsd:attribute name="type" type="naa:RuleType" default="scalar"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="CompartmentVolumeRule">
+    <xsd:complexContent>
+      <xsd:extension base="naa:AssignmentRule">
+        <xsd:attribute name="compartment" type="naa:SName" use="required"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="SpecieConcentrationRule">
+    <xsd:complexContent>
+      <xsd:extension base="naa:AssignmentRule">
+        <xsd:attribute name="specie" type="naa:SName" use="required"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="ParameterRule">
+    <xsd:complexContent>
+      <xsd:extension base="naa:AssignmentRule">
+        <xsd:attribute name="name" type="naa:SName" use="required"/>
+        <xsd:attribute name="units" type="naa:SName" use="optional"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+
+  <!-- Reaction -->
+  <xsd:element name="specieReference">
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:extension base="naa:SBase">
+          <xsd:attribute name="specie" type="xsd:string" use="required"/>
+          <xsd:attribute name="stoichiometry" use="optional" type="xsd:integer" default="1"/>
+          <xsd:attribute name="denominator" use="optional" type="xsd:integer" default="1"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+
+  <xsd:complexType name="KineticLaw">
+    <xsd:complexContent>
+      <xsd:extension base="naa:SBase">
+        <xsd:sequence>
+          <xsd:element ref="naa:listOfParameters" minOccurs="0"/>
+        </xsd:sequence>
+        <xsd:attribute name="formula" type="xsd:string" use="required"/>
+        <xsd:attribute name="timeUnits" type="naa:SName" use="optional"/>
+        <xsd:attribute name="substanceUnits" type="naa:SName" use="optional"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+
+  <xsd:complexType name="Reaction">
+    <xsd:complexContent>
+      <xsd:extension base="naa:SBase">
+        <xsd:sequence>
+          <xsd:element name="listOfReactants">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element ref="naa:specieReference" maxOccurs="unbounded"/>
+              </xsd:sequence>
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="listOfProducts">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element ref="naa:specieReference" maxOccurs="unbounded"/>
+              </xsd:sequence>
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="kineticLaw" type="naa:KineticLaw" minOccurs="0"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" type="naa:SName" use="required"/>
+        <xsd:attribute name="reversible" use="optional" type="xsd:boolean" default="true"/>
+        <xsd:attribute name="fast" use="optional" type="xsd:boolean" default="false"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <!-- Model -->
+  <xsd:complexType name="Model">
+    <xsd:complexContent>
+      <xsd:extension base="naa:SBase">
+
+        <xsd:sequence>
+          <xsd:element name="listOfUnitDefinitions" minOccurs="0">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="unitDefinition" type="naa:UnitDefinition" maxOccurs="unbounded"/>
+              </xsd:sequence>
+            </xsd:complexType>
+          </xsd:element>
+
+          <xsd:element name="listOfCompartments">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="compartment" type="naa:Compartment" maxOccurs="unbounded"/>
+              </xsd:sequence>
+            </xsd:complexType>
+          </xsd:element>
+
+          <xsd:element name="listOfSpecies">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="specie" type="naa:Specie" maxOccurs="unbounded"/>
+              </xsd:sequence>
+            </xsd:complexType>
+          </xsd:element>
+
+          <xsd:element ref="naa:listOfParameters" minOccurs="0"/>
+          <xsd:element name="listOfRules" minOccurs="0">
+            <xsd:complexType>
+              <xsd:choice maxOccurs="unbounded">
+                <xsd:element name="algebraicRule" type="naa:AlgebraicRule" minOccurs="0"/>
+                <xsd:element name="compartmentVolumeRule" type="naa:CompartmentVolumeRule"
+                             minOccurs="0"/>
+                <xsd:element name="specieConcentrationRule" type="naa:SpecieConcentrationRule"
+                             minOccurs="0"/>
+                <xsd:element name="parameterRule" type="naa:ParameterRule" minOccurs="0"/>
+              </xsd:choice>
+            </xsd:complexType>
+          </xsd:element>
+
+          <xsd:element name="listOfReactions">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="reaction" type="naa:Reaction" maxOccurs="unbounded"/>
+              </xsd:sequence>
+            </xsd:complexType>
+          </xsd:element>
+
+        </xsd:sequence>
+        <xsd:attribute name="name" type="naa:SName" use="optional"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <!-- Top-level elements allowed in an SBML document. -->
+  <xsd:complexType name="sbmlDocument">
+    <xsd:sequence>
+      <xsd:element name="model" type="naa:Model"/>
+    </xsd:sequence>
+    <xsd:attribute name="level" type="xsd:positiveInteger" use="required"/>
+    <xsd:attribute name="version" type="xsd:positiveInteger" use="required"/>
+  </xsd:complexType>
+
+  <xsd:element name="sbml" type="naa:sbmlDocument"/>
+
+  <!-- The end. -->
+
+</xsd:schema>
diff --git a/sbml/sbml-l1v2.xsd b/sbml/sbml-l1v2.xsd
new file mode 100644
index 0000000..c40f445
--- /dev/null
+++ b/sbml/sbml-l1v2.xsd
@@ -0,0 +1,340 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://www.sbml.org/sbml/level1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sbml.org/sbml/level1" elementFormDefault="qualified" version="$Version$">
+	<xsd:annotation>
+		<xsd:documentation>
+      File name : sbml.xsd
+      Author : M. Hucka, D. Lucio, J. Schaff, A. Finney, H. Sauro
+      Description : XML Schema for the Systems Biology Markup Language Level 1.
+                    This is designed for XML Schema version 1.0.
+      Version : 2
+      Modified : $Date: 2005/05/30 19:49:12 $
+      Revision: $Id: sbml-l1v2.xsd,v 1.1 2005/05/30 19:49:12 raimc Exp $
+
+      Copyright 2003 California Institute of Technology and Japan Science and 
+      Technology Corporation.
+      
+      This library is free software; you can redistribute it and/or modify it
+      under the terms of the GNU Lesser General Public License as published
+      by the Free Software Foundation; either version 2.1 of the License, or
+      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.  The software 
+      and documentation provided hereunder is on an "as is" basis, and the
+      California Institute of Technology and Japan Science and Technology
+      Corporation have no obligations to provide maintenance, support,
+      updates, enhancements or modifications.  In no event shall the
+      California Institute of Technology or the Japan Science and Technology
+      Corporation be liable to any party for direct, indirect, special,
+      incidental or consequential damages, including lost profits, arising
+      out of the use of this software and its documentation, even if the
+      California Institute of Technology and/or Japan Science and Technology
+      Corporation have been advised of the possibility of such damage.  See
+      the GNU Lesser General Public License for more details.
+      
+      You should have received a copy of the GNU Lesser General Public License
+      along with this library; if not, write to the Free Software Foundation,
+      Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+    </xsd:documentation>
+	</xsd:annotation>
+	<!--The definition of SName follows.-->
+	<xsd:simpleType name="SName">
+		<xsd:annotation>
+			<xsd:documentation>The type SName is used throughout SBML for expressing names of components in a model.</xsd:documentation>
+		</xsd:annotation>
+		<xsd:restriction base="xsd:string">
+			<xsd:pattern value="(_|[a-z]|[A-Z])(_|[a-z]|[A-Z]|[0-9])*"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<!--The definition of SBase follows.-->
+	<xsd:complexType name="SBase" abstract="true">
+		<xsd:annotation>
+			<xsd:documentation>The SBase type is the base type of all main components in SBML.  It supports attaching notes and annotations to components.</xsd:documentation>
+		</xsd:annotation>
+		<xsd:sequence>
+			<xsd:element name="notes" minOccurs="0">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:any namespace="http://www.w3.org/1999/xhtml" processContents="skip" maxOccurs="unbounded"/>
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="annotation" minOccurs="0">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:any processContents="skip" maxOccurs="unbounded"/>
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+		</xsd:sequence>
+	</xsd:complexType>
+	<!--The definition of UnitKind follows.-->
+	<xsd:simpleType name="UnitKind">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="ampere"/>
+			<xsd:enumeration value="becquerel"/>
+			<xsd:enumeration value="candela"/>
+			<xsd:enumeration value="celsius"/>
+			<xsd:enumeration value="coulomb"/>
+			<xsd:enumeration value="dimensionless"/>
+			<xsd:enumeration value="farad"/>
+			<xsd:enumeration value="gram"/>
+			<xsd:enumeration value="gray"/>
+			<xsd:enumeration value="henry"/>
+			<xsd:enumeration value="hertz"/>
+			<xsd:enumeration value="item"/>
+			<xsd:enumeration value="joule"/>
+			<xsd:enumeration value="katal"/>
+			<xsd:enumeration value="kelvin"/>
+			<xsd:enumeration value="kilogram"/>
+			<xsd:enumeration value="liter"/>
+			<xsd:enumeration value="litre"/>
+			<xsd:enumeration value="lumen"/>
+			<xsd:enumeration value="lux"/>
+			<xsd:enumeration value="meter"/>
+			<xsd:enumeration value="metre"/>
+			<xsd:enumeration value="mole"/>
+			<xsd:enumeration value="newton"/>
+			<xsd:enumeration value="ohm"/>
+			<xsd:enumeration value="pascal"/>
+			<xsd:enumeration value="radian"/>
+			<xsd:enumeration value="second"/>
+			<xsd:enumeration value="siemens"/>
+			<xsd:enumeration value="sievert"/>
+			<xsd:enumeration value="steradian"/>
+			<xsd:enumeration value="tesla"/>
+			<xsd:enumeration value="volt"/>
+			<xsd:enumeration value="watt"/>
+			<xsd:enumeration value="weber"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<!--The definition of Unit follows.-->
+	<xsd:complexType name="Unit">
+		<xsd:complexContent>
+			<xsd:extension base="SBase">
+				<xsd:attribute name="kind" type="UnitKind" use="required"/>
+				<xsd:attribute name="exponent" type="xsd:integer" default="1"/>
+				<xsd:attribute name="scale" type="xsd:integer" default="0"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<!--The definition of UnitDefinition follows.-->
+	<xsd:complexType name="UnitDefinition">
+		<xsd:complexContent>
+			<xsd:extension base="SBase">
+				<xsd:sequence>
+					<xsd:element name="listOfUnits" minOccurs="0">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="unit" type="Unit" maxOccurs="unbounded"/>
+							</xsd:sequence>
+						</xsd:complexType>
+					</xsd:element>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="SName" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<!--The definition of Compartment follows.-->
+	<xsd:complexType name="Compartment">
+		<xsd:complexContent>
+			<xsd:extension base="SBase">
+				<xsd:attribute name="name" type="SName" use="required"/>
+				<xsd:attribute name="volume" type="xsd:double" default="1"/>
+				<xsd:attribute name="units" type="SName" use="optional"/>
+				<xsd:attribute name="outside" type="SName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<!--The definition of Species follows.-->
+	<xsd:complexType name="Species">
+		<xsd:complexContent>
+			<xsd:extension base="SBase">
+				<xsd:attribute name="name" type="SName" use="required"/>
+				<xsd:attribute name="compartment" type="SName" use="required"/>
+				<xsd:attribute name="initialAmount" type="xsd:double" use="required"/>
+				<xsd:attribute name="units" type="SName" use="optional"/>
+				<xsd:attribute name="boundaryCondition" type="xsd:boolean" use="optional" default="false"/>
+				<xsd:attribute name="charge" type="xsd:integer" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<!--The definition of Parameter follows.-->
+	<xsd:complexType name="Parameter">
+		<xsd:complexContent>
+			<xsd:extension base="SBase">
+				<xsd:attribute name="name" use="required"/>
+				<xsd:attribute name="value" type="xsd:double" use="optional"/>
+				<xsd:attribute name="units" type="SName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<!--The definition of Rule follows. -->
+	<xsd:simpleType name="RuleType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="scalar"/>
+			<xsd:enumeration value="rate"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="Rule" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="SBase">
+				<xsd:attribute name="formula" type="xsd:string" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="AlgebraicRule">
+		<xsd:complexContent>
+			<xsd:extension base="Rule"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="AssignmentRule" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="Rule">
+				<xsd:attribute name="type" type="RuleType" default="scalar"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="CompartmentVolumeRule">
+		<xsd:complexContent>
+			<xsd:extension base="AssignmentRule">
+				<xsd:attribute name="compartment" type="SName" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="SpeciesConcentrationRule">
+		<xsd:complexContent>
+			<xsd:extension base="AssignmentRule">
+				<xsd:attribute name="species" type="SName" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="ParameterRule">
+		<xsd:complexContent>
+			<xsd:extension base="AssignmentRule">
+				<xsd:attribute name="name" type="SName" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<!--The definition of Reaction follows.-->
+	<xsd:complexType name="KineticLaw">
+		<xsd:complexContent>
+			<xsd:extension base="SBase">
+				<xsd:sequence>
+					<xsd:element name="listOfParameters" minOccurs="0">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="parameter" type="Parameter" maxOccurs="unbounded"/>
+							</xsd:sequence>
+						</xsd:complexType>
+					</xsd:element>
+				</xsd:sequence>
+				<xsd:attribute name="formula" type="xsd:string" use="required"/>
+				<xsd:attribute name="timeUnits" type="SName" use="optional"/>
+				<xsd:attribute name="substanceUnits" type="SName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="SpeciesReference">
+		<xsd:complexContent>
+			<xsd:extension base="SBase">
+				<xsd:attribute name="species" type="xsd:string" use="required"/>
+				<xsd:attribute name="stoichiometry" type="xsd:positiveInteger" use="optional" default="1"/>
+				<xsd:attribute name="denominator" type="xsd:positiveInteger" use="optional" default="1"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:complexType name="Reaction">
+		<xsd:complexContent>
+			<xsd:extension base="SBase">
+				<xsd:sequence>
+					<xsd:element name="listOfReactants" minOccurs="0">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="speciesReference" type="SpeciesReference" maxOccurs="unbounded"/>
+							</xsd:sequence>
+						</xsd:complexType>
+					</xsd:element>
+					<xsd:element name="listOfProducts" minOccurs="0">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="speciesReference" type="SpeciesReference" maxOccurs="unbounded"/>
+							</xsd:sequence>
+						</xsd:complexType>
+					</xsd:element>
+					<xsd:element name="kineticLaw" type="KineticLaw" minOccurs="0"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="SName" use="required"/>
+				<xsd:attribute name="reversible" type="xsd:boolean" use="optional" default="true"/>
+				<xsd:attribute name="fast" type="xsd:boolean" use="optional" default="false"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<!-- The definition of Model follows.-->
+	<xsd:complexType name="Model">
+		<xsd:complexContent>
+			<xsd:extension base="SBase">
+				<xsd:sequence>
+					<xsd:element name="listOfUnitDefinitions" minOccurs="0">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="unitDefinition" type="UnitDefinition" maxOccurs="unbounded"/>
+							</xsd:sequence>
+						</xsd:complexType>
+					</xsd:element>
+					<xsd:element name="listOfCompartments" minOccurs="1">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="compartment" type="Compartment" maxOccurs="unbounded" minOccurs="1"/>
+							</xsd:sequence>
+						</xsd:complexType>
+					</xsd:element>
+					<xsd:element name="listOfSpecies" minOccurs="0">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="species" type="Species" maxOccurs="unbounded"/>
+							</xsd:sequence>
+						</xsd:complexType>
+					</xsd:element>
+					<xsd:element name="listOfParameters" minOccurs="0">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="parameter" type="Parameter" maxOccurs="unbounded"/>
+							</xsd:sequence>
+						</xsd:complexType>
+					</xsd:element>
+					<xsd:element name="listOfRules" minOccurs="0">
+						<xsd:complexType>
+							<xsd:choice maxOccurs="unbounded">
+								<xsd:element name="algebraicRule" type="AlgebraicRule" minOccurs="0"/>
+								<xsd:element name="compartmentVolumeRule" type="CompartmentVolumeRule" minOccurs="0"/>
+								<xsd:element name="speciesConcentrationRule" type="SpeciesConcentrationRule" minOccurs="0"/>
+								<xsd:element name="parameterRule" type="ParameterRule" minOccurs="0"/>
+							</xsd:choice>
+						</xsd:complexType>
+					</xsd:element>
+					<xsd:element name="listOfReactions" minOccurs="0">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="reaction" type="Reaction" maxOccurs="unbounded"/>
+							</xsd:sequence>
+						</xsd:complexType>
+					</xsd:element>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="SName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<!-- The following is the type definition for the top-level element in an SBML document.-->
+	<xsd:complexType name="sbmlDocument">
+		<xsd:sequence>
+			<xsd:element name="model" type="Model"/>
+		</xsd:sequence>
+		<xsd:attribute name="level" type="xsd:positiveInteger" use="required" fixed="1"/>
+		<xsd:attribute name="version" type="xsd:positiveInteger" use="required"/>
+	</xsd:complexType>
+	<!--The following is the (only) top-level element allowed in an SBML document.-->
+	<xsd:element name="sbml" type="sbmlDocument"/>
+	<!-- The end. -->
+</xsd:schema>
diff --git a/sbml/sbml-l2v1.xsd b/sbml/sbml-l2v1.xsd
new file mode 100644
index 0000000..b53c77e
--- /dev/null
+++ b/sbml/sbml-l2v1.xsd
@@ -0,0 +1,544 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema
+        targetNamespace="http://www.sbml.org/sbml/level2"
+        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xmlns:xlink="http://www.w3.org/1999/xlink"
+        xmlns:mml="http://www.w3.org/1998/Math/MathML"
+        xmlns="http://www.sbml.org/sbml/level2"
+        elementFormDefault="qualified"
+        attributeFormDefault="unqualified"
+        version="1">
+    <xsd:import
+        namespace="http://www.w3.org/1998/Math/MathML"
+        schemaLocation="http://www.w3.org/Math/XMLSchema/mathml2/mathml2.xsd"/>
+    <xsd:annotation>
+        <xsd:documentation>
+      File name : sbml.xsd
+      Author : M. Hucka, A. Finney, D. Lucio
+      Description : XML Schema for the Systems Biology Markup Language Level 2.  
+                    This is designed for XML Schema version 1.0.
+      Version : 1
+
+      Copyright 2003 California Institute of Technology and Japan Science and 
+      Technology Corporation.
+      
+      This library is free software; you can redistribute it and/or modify it
+      under the terms of the GNU Lesser General Public License as published
+      by the Free Software Foundation; either version 2.1 of the License, or
+      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.  The software 
+      and documentation provided hereunder is on an "as is" basis, and the
+      California Institute of Technology and Japan Science and Technology
+      Corporation have no obligations to provide maintenance, support,
+      updates, enhancements or modifications.  In no event shall the
+      California Institute of Technology or the Japan Science and Technology
+      Corporation be liable to any party for direct, indirect, special,
+      incidental or consequential damages, including lost profits, arising
+      out of the use of this software and its documentation, even if the
+      California Institute of Technology and/or Japan Science and Technology
+      Corporation have been advised of the possibility of such damage.  See
+      the GNU Lesser General Public License for more details.
+      
+      You should have received a copy of the GNU Lesser General Public License
+      along with this library; if not, write to the Free Software Foundation,
+      Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+</xsd:documentation>
+    </xsd:annotation>
+    <!--The definition of SId follows.-->
+    <xsd:simpleType name="SId">
+        <xsd:annotation>
+            <xsd:documentation>
+                The type SId is used throughout SBML as the type of the 'id'
+                attributes on model elements.
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:restriction base="xsd:string">
+            <xsd:pattern value="(_|[a-z]|[A-Z])(_|[a-z]|[A-Z]|[0-9])*"/>
+        </xsd:restriction>
+    </xsd:simpleType>
+    <!--The definition of SBase follows.-->
+    <xsd:complexType name="SBase" abstract="true">
+        <xsd:annotation>
+            <xsd:documentation>
+                The SBase type is the base type of all main components in SBML.
+                It supports attaching metadata, notes and annotations to components.
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:element name="notes" minOccurs="0">
+                <xsd:complexType>
+                    <xsd:sequence>
+                        <xsd:any
+                            namespace="http://www.w3.org/1999/xhtml"
+                            processContents="skip"
+                            maxOccurs="unbounded"/>
+                    </xsd:sequence>
+                </xsd:complexType>
+            </xsd:element>
+            <xsd:element name="annotation" minOccurs="0">
+                <xsd:complexType>
+                    <xsd:sequence>
+                        <xsd:any processContents="skip" maxOccurs="unbounded"/>
+                    </xsd:sequence>
+                </xsd:complexType>
+            </xsd:element>
+        </xsd:sequence>
+        <xsd:attribute name="metaid" type="xsd:ID" use="optional"/>
+    </xsd:complexType>
+    <!--The definition of FunctionDefinition follows.-->
+    <xsd:complexType name="FunctionDefinition">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element ref="mml:math"/>
+                </xsd:sequence>
+                <xsd:attribute name="id" type="SId" use="required"/>
+                <xsd:attribute name="name" type="xsd:string" use="optional"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <!--The definition of UnitKind follows.-->
+    <xsd:simpleType name="UnitKind">
+        <xsd:restriction base="xsd:string">
+            <xsd:enumeration value="ampere"/>
+            <xsd:enumeration value="becquerel"/>
+            <xsd:enumeration value="candela"/>
+            <xsd:enumeration value="Celsius"/>
+            <xsd:enumeration value="coulomb"/>
+            <xsd:enumeration value="dimensionless"/>
+            <xsd:enumeration value="farad"/>
+            <xsd:enumeration value="gram"/>
+            <xsd:enumeration value="gray"/>
+            <xsd:enumeration value="henry"/>
+            <xsd:enumeration value="hertz"/>
+            <xsd:enumeration value="item"/>
+            <xsd:enumeration value="joule"/>
+            <xsd:enumeration value="katal"/>
+            <xsd:enumeration value="kelvin"/>
+            <xsd:enumeration value="kilogram"/>
+            <xsd:enumeration value="litre"/>
+            <xsd:enumeration value="lumen"/>
+            <xsd:enumeration value="lux"/>
+            <xsd:enumeration value="metre"/>
+            <xsd:enumeration value="mole"/>
+            <xsd:enumeration value="newton"/>
+            <xsd:enumeration value="ohm"/>
+            <xsd:enumeration value="pascal"/>
+            <xsd:enumeration value="radian"/>
+            <xsd:enumeration value="second"/>
+            <xsd:enumeration value="siemens"/>
+            <xsd:enumeration value="sievert"/>
+            <xsd:enumeration value="steradian"/>
+            <xsd:enumeration value="tesla"/>
+            <xsd:enumeration value="volt"/>
+            <xsd:enumeration value="watt"/>
+            <xsd:enumeration value="weber"/>
+        </xsd:restriction>
+    </xsd:simpleType>
+    <!--The definition of Unit follows.-->
+    <xsd:complexType name="Unit">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:attribute name="kind" type="UnitKind" use="required"/>
+                <xsd:attribute name="exponent" type="xsd:integer" default="1"/>
+                <xsd:attribute name="scale" type="xsd:integer" default="0"/>
+                <xsd:attribute name="multiplier" type="xsd:double" default="1"/>
+                <xsd:attribute name="offset" type="xsd:double" default="0"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <!--The definition of UnitDefinition follows.-->
+    <xsd:complexType name="ListOfUnits">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element name="unit" type="Unit" maxOccurs="unbounded"/>
+                </xsd:sequence>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="UnitDefinition">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element name="listOfUnits" type="ListOfUnits"/>
+                </xsd:sequence>
+                <xsd:attribute name="id" type="SId" use="required"/>
+                <xsd:attribute name="name" type="xsd:string" use="optional"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <!--The definition of Compartment follows.-->
+    <xsd:complexType name="Compartment">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:attribute name="id" type="SId" use="required"/>
+                <xsd:attribute name="name" type="xsd:string" use="optional"/>
+                <xsd:attribute name="size" type="xsd:double" use="optional"/>
+                <xsd:attribute name="spatialDimensions" use="optional" default="3">
+                    <xsd:simpleType>
+                        <xsd:restriction base="xsd:integer">
+                            <xsd:minInclusive value="0"/>
+                            <xsd:maxInclusive value="3"/>
+                        </xsd:restriction>
+                    </xsd:simpleType>
+                </xsd:attribute>
+                <xsd:attribute name="units" type="SId" use="optional"/>
+                <xsd:attribute name="outside" type="SId" use="optional"/>
+                <xsd:attribute name="constant" type="xsd:boolean" use="optional" default="true"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <!--The definition of Species follows.-->
+    <xsd:complexType name="Species">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:attribute name="id" type="SId" use="required"/>
+                <xsd:attribute name="name" type="xsd:string" use="optional"/>
+                <xsd:attribute name="compartment" type="SId"/>
+                <xsd:attribute name="initialAmount" type="xsd:double" use="optional"/>
+                <xsd:attribute name="initialConcentration" type="xsd:double" use="optional"/>
+                <xsd:attribute name="substanceUnits" type="SId" use="optional"/>
+                <xsd:attribute name="spatialSizeUnits" type="SId" use="optional"/>
+                <xsd:attribute
+                    name="hasOnlySubstanceUnits"
+                    type="xsd:boolean"
+                    use="optional"
+                    default="false"/>
+                <xsd:attribute
+                    name="boundaryCondition"
+                    type="xsd:boolean"
+                    use="optional"
+                    default="false"/>
+                <xsd:attribute name="charge" type="xsd:integer" use="optional"/>
+                <xsd:attribute name="constant" type="xsd:boolean" use="optional" default="false"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <!--The definition of Parameter follows.-->
+    <xsd:complexType name="Parameter">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:attribute name="id" type="SId" use="required"/>
+                <xsd:attribute name="name" type="xsd:string" use="optional"/>
+                <xsd:attribute name="value" type="xsd:double" use="optional"/>
+                <xsd:attribute name="units" type="SId" use="optional"/>
+                <xsd:attribute name="constant" type="xsd:boolean" use="optional" default="true"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="ListOfParameters">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element name="parameter" type="Parameter" maxOccurs="unbounded"/>
+                </xsd:sequence>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <!--The definition of Rule follows. -->
+    <xsd:complexType name="Rule" abstract="true">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element ref="mml:math"/>
+                </xsd:sequence>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="AlgebraicRule">
+        <xsd:complexContent>
+            <xsd:extension base="Rule"/>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="AssignmentRule">
+        <xsd:complexContent>
+            <xsd:extension base="Rule">
+                <xsd:attribute name="variable" type="SId" use="required"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="RateRule">
+        <xsd:complexContent>
+            <xsd:extension base="Rule">
+                <xsd:attribute name="variable" type="SId" use="required"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <!--The definition of Reaction follows.-->
+    <xsd:complexType name="KineticLaw">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element ref="mml:math"/>
+                    <xsd:element name="listOfParameters" type="ListOfParameters" minOccurs="0"/>
+                </xsd:sequence>
+                <xsd:attribute name="timeUnits" type="SId" use="optional"/>
+                <xsd:attribute name="substanceUnits" type="SId" use="optional"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="SimpleSpeciesReference" abstract="true">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:attribute name="species" type="SId" use="required"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="ModifierSpeciesReference">
+        <xsd:complexContent>
+            <xsd:extension base="SimpleSpeciesReference"/>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="ListOfModifierSpeciesReferences">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element
+                        name="modifierSpeciesReference"
+                        type="ModifierSpeciesReference"
+                        maxOccurs="unbounded"/>
+                </xsd:sequence>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="StoichiometryMath">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element ref="mml:math"/>
+                </xsd:sequence>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="SpeciesReference">
+        <xsd:complexContent>
+            <xsd:extension base="SimpleSpeciesReference">
+                <xsd:sequence>
+                    <xsd:element name="stoichiometryMath" type="StoichiometryMath" minOccurs="0"/>
+                </xsd:sequence>
+                <xsd:attribute name="stoichiometry" type="xsd:double" use="optional" default="1"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="ListOfSpeciesReferences">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element
+                        name="speciesReference" type="SpeciesReference" maxOccurs="unbounded"/>
+                </xsd:sequence>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="Reaction">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element
+                        name="listOfReactants" type="ListOfSpeciesReferences" minOccurs="0"/>
+                    <xsd:element
+                        name="listOfProducts" type="ListOfSpeciesReferences" minOccurs="0"/>
+                    <xsd:element
+                        name="listOfModifiers"
+                        type="ListOfModifierSpeciesReferences"
+                        minOccurs="0"/>
+                    <xsd:element
+                        name="kineticLaw" type="KineticLaw" minOccurs="0"/>
+                </xsd:sequence>
+                <xsd:attribute name="id" type="SId" use="required"/>
+                <xsd:attribute name="name" type="xsd:string" use="optional"/>
+                <xsd:attribute name="reversible" type="xsd:boolean" use="optional" default="true"/>
+                <xsd:attribute name="fast" type="xsd:boolean" use="optional"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <!--The definition of Event follows.-->
+    <xsd:complexType name="EventAssignment">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element ref="mml:math"/>
+                </xsd:sequence>
+                <xsd:attribute name="variable" type="SId" use="required"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="ListOfEventAssignments">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element
+                        name="eventAssignment" type="EventAssignment" maxOccurs="unbounded"/>
+                </xsd:sequence>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="MathField">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element ref="mml:math"/>
+                </xsd:sequence>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <xsd:complexType name="Event">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element name="trigger" type="MathField"/>
+                    <xsd:element name="delay" type="MathField" minOccurs="0"/>
+                    <xsd:element name="listOfEventAssignments" type="ListOfEventAssignments"/>
+                </xsd:sequence>
+                <xsd:attribute name="id" type="SId" use="optional"/>
+                <xsd:attribute name="name" type="xsd:string" use="optional"/>
+                <xsd:attribute name="timeUnits" type="SId" use="optional"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <!-- The definition of Model follows.-->
+    <xsd:complexType name="Model">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element name="listOfFunctionDefinitions" minOccurs="0">
+                        <xsd:complexType>
+                            <xsd:complexContent>
+                                <xsd:extension base="SBase">
+                                    <xsd:sequence>
+                                        <xsd:element
+                                            name="functionDefinition"
+                                            type="FunctionDefinition"
+                                            maxOccurs="unbounded"/>
+                                    </xsd:sequence>
+                                </xsd:extension>
+                            </xsd:complexContent>
+                        </xsd:complexType>
+                    </xsd:element>
+                    <xsd:element name="listOfUnitDefinitions" minOccurs="0">
+                        <xsd:complexType>
+                            <xsd:complexContent>
+                                <xsd:extension base="SBase">
+                                    <xsd:sequence>
+                                        <xsd:element
+                                            name="unitDefinition"
+                                            type="UnitDefinition"
+                                            maxOccurs="unbounded"/>
+                                    </xsd:sequence>
+                                </xsd:extension>
+                            </xsd:complexContent>
+                        </xsd:complexType>
+                    </xsd:element>
+                    <xsd:element name="listOfCompartments" minOccurs="0">
+                        <xsd:complexType>
+                            <xsd:complexContent>
+                                <xsd:extension base="SBase">
+                                    <xsd:sequence>
+                                        <xsd:element
+                                            name="compartment"
+                                            type="Compartment"
+                                            maxOccurs="unbounded"/>
+                                    </xsd:sequence>
+                                </xsd:extension>
+                            </xsd:complexContent>
+                        </xsd:complexType>
+                    </xsd:element>
+                    <xsd:element name="listOfSpecies" minOccurs="0">
+                        <xsd:complexType>
+                            <xsd:complexContent>
+                                <xsd:extension base="SBase">
+                                    <xsd:sequence>
+                                        <xsd:element
+                                            name="species" type="Species" maxOccurs="unbounded"/>
+                                    </xsd:sequence>
+                                </xsd:extension>
+                            </xsd:complexContent>
+                        </xsd:complexType>
+                    </xsd:element>
+                    <xsd:element name="listOfParameters" minOccurs="0">
+                        <xsd:complexType>
+                            <xsd:complexContent>
+                                <xsd:extension base="SBase">
+                                    <xsd:sequence>
+                                        <xsd:element
+                                            name="parameter"
+                                            type="Parameter"
+                                            maxOccurs="unbounded"/>
+                                    </xsd:sequence>
+                                </xsd:extension>
+                            </xsd:complexContent>
+                        </xsd:complexType>
+                    </xsd:element>
+                    <xsd:element name="listOfRules" minOccurs="0">
+                        <xsd:complexType>
+                            <xsd:complexContent>
+                                <xsd:extension base="SBase">
+                                    <xsd:choice maxOccurs="unbounded">
+                                        <xsd:element
+                                            name="algebraicRule"
+                                            type="AlgebraicRule"
+                                            minOccurs="0"/>
+                                        <xsd:element
+                                            name="assignmentRule"
+                                            type="AssignmentRule"
+                                            minOccurs="0"/>
+                                        <xsd:element
+                                            name="rateRule"
+                                            type="RateRule"
+                                            minOccurs="0"/>
+                                    </xsd:choice>
+                                </xsd:extension>
+                            </xsd:complexContent>
+                        </xsd:complexType>
+                    </xsd:element>
+                    <xsd:element name="listOfReactions" minOccurs="0">
+                        <xsd:complexType>
+                            <xsd:complexContent>
+                                <xsd:extension base="SBase">
+                                    <xsd:sequence>
+                                        <xsd:element
+                                            name="reaction" type="Reaction" maxOccurs="unbounded"/>
+                                    </xsd:sequence>
+                                </xsd:extension>
+                            </xsd:complexContent>
+                        </xsd:complexType>
+                    </xsd:element>
+                    <xsd:element name="listOfEvents" minOccurs="0">
+                        <xsd:complexType>
+                            <xsd:complexContent>
+                                <xsd:extension base="SBase">
+                                    <xsd:sequence>
+                                        <xsd:element
+                                            name="event" type="Event" maxOccurs="unbounded"/>
+                                    </xsd:sequence>
+                                </xsd:extension>
+                            </xsd:complexContent>
+                        </xsd:complexType>
+                    </xsd:element>
+                </xsd:sequence>
+                <xsd:attribute name="id" type="SId" use="optional"/>
+                <xsd:attribute name="name" type="xsd:string" use="optional"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <!-- The following is the type definition for the top-level element in an SBML document.-->
+    <xsd:complexType name="Sbml">
+        <xsd:complexContent>
+            <xsd:extension base="SBase">
+                <xsd:sequence>
+                    <xsd:element name="model" type="Model"/>
+                </xsd:sequence>
+                <xsd:attribute name="level" type="xsd:positiveInteger" use="required" fixed="2"/>
+                <xsd:attribute name="version" type="xsd:positiveInteger" use="required" fixed="1"/>
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+    <!--The following is the (only) top-level element allowed in an SBML document.-->
+    <xsd:element name="sbml" type="Sbml"/>
+    <!--The end.-->
+</xsd:schema>
diff --git a/scripts/gnuplotscript.awk b/scripts/gnuplotscript.awk
new file mode 100755
index 0000000..ce24e8d
--- /dev/null
+++ b/scripts/gnuplotscript.awk
@@ -0,0 +1,29 @@
+#!/usr/bin/awk -f
+/\#t/
+{
+  printf("set data style linespoints\n");
+  printf("plot");
+  n = 0;
+  for (i = 2; i != ARGC; i++)
+  {
+    for (j = 2; j != NF+1; j++)
+    {
+      if (ARGV[i] == $(j))
+      {
+        printf(" '");
+	printf(ARGV[1]);
+	printf("'");
+	printf(" using 1:");
+	printf(j);
+	printf(" title '");
+	printf($(j));
+	printf("'");
+	
+	if (i != ARGC - 1)
+	   printf(",");
+	n++;
+      }	      
+    }      
+  }
+  exit 0;
+}
diff --git a/scripts/xmgracefile.pl b/scripts/xmgracefile.pl
new file mode 100755
index 0000000..d5d7817
--- /dev/null
+++ b/scripts/xmgracefile.pl
@@ -0,0 +1,75 @@
+#!/usr/bin/perl
+# -*-Perl-*-
+# Last changed Time-stamp: <2005-08-30 18:31:41 xtof>
+# $Id: xmgracefile.pl,v 1.1 2005/12/08 12:13:16 raimc Exp $
+
+use Getopt::Long;
+use File::Basename;
+use strict;
+
+# some globals
+my @LOC = (0.20, 0.90);
+my $FSIZE = .5;
+my $LEG = 'on'; 
+
+usage() unless GetOptions("loc=s" => sub{local $_ = $_[1]; @LOC = split},
+			  "lfs=f" => \$FSIZE,
+			  "noLeg" => sub{$LEG = 'off'},
+			  "h"     => \&usage);
+
+my $FILENAME = $ARGV[0] || "stdin";
+
+make_legend(search_legend());
+while (<>) {print}
+
+#---
+sub search_legend { local $_; while ((<>)) { last if m/^\#t/ } return $_ }
+
+#---
+sub make_legend {
+  local $_ = shift;
+  my @F = split;
+  shift @F;
+  print << "EOL";
+@    title "$FILENAME"
+@    legend $LEG
+@    legend loctype view
+@    legend $LOC[0], $LOC[1]
+@    legend box color 1
+@    legend box pattern 1
+@    legend box linewidth 1.0
+@    legend box linestyle 1
+@    legend box fill color 0
+@    legend box fill pattern 1
+@    legend font 8
+@    legend char size $FSIZE
+@    legend color 1
+@    legend length 4
+@    legend vgap 1
+@    legend hgap 2
+@    legend invert false
+EOL
+
+  my $i = 0;
+  foreach my $species (@F) {
+    print "\@    s$i legend  \"$species\"\n";
+    $i++;
+  }
+}
+
+#---
+sub usage {
+  print STDERR
+      "\n  Usage: @{[basename($0)]} [options]\n";
+  print STDERR
+      "     -loc  <Str>  Set location of legend box (upper left corner)\n",
+      "                  (default: @LOC)\n",
+      "     -lfs  <Flt>  Sets size of legend label characters\n",
+      "                  (default: $FSIZE)\n",      
+      "     -h           display help message\n\n";
+    exit(0);
+}
+
+
+
+__END__
diff --git a/src/ASTIndexNameNode.c b/src/ASTIndexNameNode.c
new file mode 100644
index 0000000..9862ce4
--- /dev/null
+++ b/src/ASTIndexNameNode.c
@@ -0,0 +1,159 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "sbmlsolver/ASTIndexNameNode.h"
+
+#include <stdio.h>
+
+/*
+ * The index is stored in the user data with an ASTNode.
+ * The LSB of the user data is on, meaning "this is an indexed ASTNode".
+ * Its 2nd bit is for the flag indicating "the index has been stored".
+ * Its 3rd bit is for "data is available".
+ * The rest of the field contains the actual index value (shifted by 3).
+ */
+#define GET_USER_DATA(node) ((unsigned int)ASTNode_getUserData(node));
+
+#define IS_INDEX_NAME(ud) (((ud) & 1u) == 1u)
+#define HAS_INDEX(ud)     (((ud) & 2u) == 2u)
+#define HAS_DATA(ud)      (((ud) & 4u) == 4u)
+
+#define GET_INDEX(ud) ((ud)>>3)
+
+/** Creates an AST_NAME type ASTNode with the indexed flag
+    as its user data.
+*/
+ASTNode_t *ASTNode_createIndexName(void)
+{
+  ASTNode_t *node;
+  node = ASTNode_createWithType(AST_NAME);
+  ASTNode_setUserData(node, (void *)1u);
+  return node;
+}
+
+static void report_argument_error(void)
+{
+  fprintf(stderr, "error: given node is not an indexed AST_NAME\n");
+}
+
+/** Returns the index of an indexed AST_NAME node (ASTIndexNameNode)
+ */
+unsigned int ASTNode_getIndex(const ASTNode_t *node)
+{
+  unsigned int ud;
+  if (ASTNode_getType(node) != AST_NAME) {
+    report_argument_error();
+    return 0;
+  }
+  ud = GET_USER_DATA(node);
+  if (!IS_INDEX_NAME(ud)) {
+    report_argument_error();
+    return 0;
+  }
+  return GET_INDEX(ud);
+}
+
+/** Sets the index of an indexed AST_NAME node
+ */
+void ASTNode_setIndex(ASTNode_t *node, unsigned int index)
+{
+  unsigned int ud;
+  if (ASTNode_getType(node) != AST_NAME) {
+    report_argument_error();
+    return;
+  }
+  ud = GET_USER_DATA(node);
+  if (!IS_INDEX_NAME(ud)) {
+    report_argument_error();
+    return;
+  }
+  ASTNode_setUserData(node, (void *)((index<<3)|(ud&4u)|3u));
+}
+
+/*! \addtogroup simplifyAST
+  @{
+*/
+
+/** Returns true (1) if the ASTNode is an indexed AST_NAME node
+ */
+SBML_ODESOLVER_API int ASTNode_isIndexName(const ASTNode_t *node)
+{
+  unsigned int ud;
+  if (ASTNode_getType(node) != AST_NAME) return 0;
+  ud = GET_USER_DATA(node);
+  return IS_INDEX_NAME(ud);
+}
+
+/** Returns true (1) if the an indexed ASTNode has
+    its index set
+*/
+SBML_ODESOLVER_API unsigned int ASTNode_isSetIndex(const ASTNode_t *node)
+{
+  unsigned int ud;
+  if (ASTNode_getType(node) != AST_NAME) return 0;
+  ud = GET_USER_DATA(node);
+  return IS_INDEX_NAME(ud) && HAS_INDEX(ud);
+}
+
+
+
+
+/** Returns true (1) if the indexed ASTNode has
+    its data set
+
+    used for differentiating whether the name refers
+    to a variable for which "data" is available
+*/
+SBML_ODESOLVER_API unsigned int ASTNode_isSetData(const ASTNode_t *node)
+{
+  unsigned int ud;
+  if (ASTNode_getType(node) != AST_NAME) return 0;
+  ud = GET_USER_DATA(node);
+  return IS_INDEX_NAME(ud) && HAS_DATA(ud);
+}
+
+/** Sets the data of an indexed AST_NAME node
+ */
+void ASTNode_setData(ASTNode_t *node)
+{
+  unsigned int ud;
+  if (ASTNode_getType(node) != AST_NAME) {
+    report_argument_error();
+    return;
+  }
+  ud = GET_USER_DATA(node);
+  if (!IS_INDEX_NAME(ud)) {
+    report_argument_error();
+    return;
+  }
+  ASTNode_setUserData(node, (void *)(ud|4u));
+}
+
+
+/** @} */
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..5d2c131
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,102 @@
+# $Id: Makefile.am,v 1.29 2009/02/13 17:45:32 chfl Exp $
+## 
+## This library is free software; you can redistribute it and/or modify it
+## under the terms of the GNU Lesser General Public License as published
+## by the Free Software Foundation; either version 2.1 of the License, or
+## any later version.
+## 
+## This library 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. The software and
+## documentation provided hereunder is on an "as is" basis, and the
+## authors have no obligations to provide maintenance, support,
+## updates, enhancements or modifications.  In no event shall the
+## authors be liable to any party for direct, indirect, special,
+## incidental or consequential damages, including lost profits, arising
+## out of the use of this software and its documentation, even if the
+## authors have been advised of the possibility of such damage.  See
+## the GNU Lesser General Public License for more details.
+## 
+## You should have received a copy of the GNU Lesser General Public License
+## along with this library; if not, write to the Free Software Foundation,
+## Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+## 
+## The original code contained here was initially developed by:
+## 
+##     Christoph Flamm
+## 
+## Contributor(s):
+##     Rainer Machne
+##
+pkgconfigdir = $(libdir)/pkgconfig
+pkgincludedir = @includedir@/sbmlsolver
+AM_CPPFLAGS = @SUNDIALS_CPPFLAGS@ \
+           @SBML_CPPFLAGS@ \
+           @GRAPHVIZ_CPPFLAGS@ \
+           @GRACE_CPPFLAGS@
+AM_LDFLAGS = @GRAPHVIZ_RPATH@ \
+             @SBML_RPATH@
+AM_CFLAGS = -Wno-unknown-pragmas -Wall -Wextra -ansi -std=iso9899:1990
+lib_LTLIBRARIES = libODES.la
+
+
+libODES_la_LIBADD = @SBML_LIBS@ \
+                    @SUNDIALS_LIBS@ \
+                    @GRAPHVIZ_LIBS@ \
+                    @GRACE_LIBS@
+libODES_la_LDFLAGS = -no-undefined \
+                     @SBML_LDFLAGS@ \
+                     @SUNDIALS_LDFLAGS@ \
+                     @GRAPHVIZ_LDFLAGS@ \
+                     @GRACE_LDFLAGS@
+libODES_la_SOURCES = ASTIndexNameNode.c \
+                    arithmeticCompiler.c \
+                    charBuffer.c \
+                    compiler.c \
+                    cvodeData.c \
+                    cvodeSolver.c \
+                    daeSolver.c \
+                    drawGraph.c \
+                    evaluateAST.c \
+                    integratorInstance.c \
+                    integratorSettings.c \
+                    interpol.c \
+                    modelSimplify.c \
+                    nullSolver.c \
+                    odeConstruct.c \
+                    odeModel.c \
+                    odeSolver.c \
+                    processAST.c \
+                    sbml.c \
+                    sbmlResults.c \
+                    sensSolver.c \
+                    solverError.c \
+                    util.c \
+                    private/data.c \
+                    private/error.c
+pkginclude_HEADERS = sbmlsolver/ASTIndexNameNode.h \
+                     sbmlsolver/arithmeticCompiler.h \
+                     sbmlsolver/charBuffer.h \
+                     sbmlsolver/compiler.h \
+                     sbmlsolver/cvodeData.h \
+                     sbmlsolver/cvodeSolver.h \
+                     sbmlsolver/daeSolver.h \
+                     sbmlsolver/drawGraph.h \
+                     sbmlsolver/exportdefs.h \
+                     sbmlsolver/integratorInstance.h \
+                     sbmlsolver/integratorSettings.h \
+                     sbmlsolver/interpol.h \
+                     sbmlsolver/modelSimplify.h \
+                     sbmlsolver/nullSolver.h \
+                     sbmlsolver/odeConstruct.h \
+                     sbmlsolver/odeModel.h \
+                     sbmlsolver/odeSolver.h \
+                     sbmlsolver/processAST.h \
+                     sbmlsolver/sbml.h \
+                     sbmlsolver/sbmlResults.h \
+                     sbmlsolver/sensSolver.h \
+                     sbmlsolver/solverError.h \
+                     sbmlsolver/util.h \
+                     sbmlsolver/variableIndex.h
+pkgconfig_DATA = libODES.pc
+
diff --git a/src/arithmeticCompiler.c b/src/arithmeticCompiler.c
new file mode 100644
index 0000000..29e7531
--- /dev/null
+++ b/src/arithmeticCompiler.c
@@ -0,0 +1,2624 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-10-08 14:26:04 raim>
+  $Id: arithmeticCompiler.c,v 1.26 2008/10/08 17:07:16 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *     Matthias Rosensteiner
+ *     Markus Loeberbauer
+ *
+ * Contributor(s):
+ *     Stefan Müller
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "sbmlsolver/arithmeticCompiler.h"
+#include "sbmlsolver/processAST.h"
+#ifdef ARITHMETIC_TEST
+
+#ifndef _WIN32
+
+/*!!! __USE_MISC required for MAP_ANONYMOUS: why and what is it good for?*/
+#define __USE_MISC
+#include <sys/mman.h> /* LINUX ONLY! */
+#endif
+
+/* constants definded as in math.h (not in ANSI C/ISO C90) */
+#ifndef M_E
+#define	M_E		2.7182818284590452354
+#endif
+#ifndef M_PI
+#define	M_PI		3.14159265358979323846
+#endif
+
+
+/* locally defined in processAST.c */
+static double (*UsrDefFunc)(char*, int, double*) = NULL;
+
+static int analyse (directCode_t *c, ASTNode_t *AST);
+static int analyse64 (directCode_t *c, ASTNode_t *AST);
+static int analyse64Stack (ASTNode_t *AST);
+static int analyseFPU (ASTNode_t *AST);
+
+/*!!! TODO check if all function evaluations are equivalent to evaluateAST,
+      e.g. are odd roots of negative numbers possible? */
+/* quasi assembler, helps for better readability */
+/* 32bit section */
+#define ass_F2XM1			addByte(c,0xd9); addByte(c,0xf0);
+#define ass_FABS			addByte(c,0xd9); addByte(c,0xe1);
+#define ass_FADD_st(i)		addByte(c,0xd8); addByte(c,0xc0+i);
+#define ass_FADDP_st(i)		addByte(c,0xde); addByte(c,0xc0+i);
+#define ass_FADD_mem		addByte(c,0xdc); addByte(c,0x05);
+#define ass_FCHS			addByte(c,0xd9); addByte(c,0xe0);
+#define ass_FCMOVB_st(i)	addByte(c,0xda); addByte(c,0xc0+i);
+#define ass_FCMOVBE_st(i)	addByte(c,0xda); addByte(c,0xd0+i);
+#define ass_FCMOVNB_st(i)	addByte(c,0xdb); addByte(c,0xc0+i);
+#define ass_FCMOVNBE_st(i)	addByte(c,0xdb); addByte(c,0xd0+i);
+#define ass_FCMOVNE_st(i)	addByte(c,0xdb); addByte(c,0xc8+i);
+#define ass_FCOMIP_st(i)	addByte(c,0xdf); addByte(c,0xf0+i);
+#define ass_FCOS			addByte(c,0xd9); addByte(c,0xff);
+#define ass_FDIVP_st(i)		addByte(c,0xde); addByte(c,0xf8+i);
+#define ass_FDIVRP_st(i)	addByte(c,0xde); addByte(c,0xf0+i);
+#define ass_FDIVR_mem		addByte(c,0xdc); addByte(c,0x3d);
+#define ass_FFREE_st(i)		addByte(c,0xdd); addByte(c,0xc0+i);
+#define ass_FINCSTP			addByte(c,0xd9); addByte(c,0xf7);
+#define ass_FLD_mem			addByte(c,0xdd); addByte(c,0x05);
+#define ass_FLD_st(i)		addByte(c,0xd9); addByte(c,0xc0+i);
+#define ass_FLD1			addByte(c,0xd9); addByte(c,0xe8);
+#define ass_FLDL2E			addByte(c,0xd9); addByte(c,0xea);
+#define ass_FLDPI			addByte(c,0xd9); addByte(c,0xeb);
+#define ass_FLDLG2			addByte(c,0xd9); addByte(c,0xec);
+#define ass_FLDLN2			addByte(c,0xd9); addByte(c,0xed);
+#define ass_FLDZ			addByte(c,0xd9); addByte(c,0xee);
+#define ass_FMUL_st(i)		addByte(c,0xd8); addByte(c,0xc8+i);
+#define ass_FMULP_st(i)		addByte(c,0xde); addByte(c,0xc8+i);
+#define ass_FMUL_mem		addByte(c,0xdc); addByte(c,0x0d);
+#define ass_FPATAN			addByte(c,0xd9); addByte(c,0xf3);
+#define ass_FPTAN			addByte(c,0xd9); addByte(c,0xf2);
+#define ass_FRNDINT			addByte(c,0xd9); addByte(c,0xfc);
+#define ass_FSCALE			addByte(c,0xd9); addByte(c,0xfd);
+#define ass_FSIN			addByte(c,0xd9); addByte(c,0xfe);
+#define ass_FSINCOS			addByte(c,0xd9); addByte(c,0xfb);
+#define ass_FSQRT			addByte(c,0xd9); addByte(c,0xfa);
+#define ass_FSTP_st(i)		addByte(c,0xdd); addByte(c,0xd8+i);
+#define ass_FSTP_mem		addByte(c,0xdd); addByte(c,0x1d);
+#define ass_FSUB_st(i)		addByte(c,0xdc); addByte(c,0xe8+i);
+#define ass_FSUBP_st(i)		addByte(c,0xde); addByte(c,0xe8+i);
+#define ass_FSUBR_st(i)		addByte(c,0xd8); addByte(c,0xe8+i);
+#define ass_FSUBRP_st(i)	addByte(c,0xde); addByte(c,0xe0+i);
+#define ass_FSUBR_mem		addByte(c,0xdc); addByte(c,0x2d);
+#define ass_FXCH_st(i)		addByte(c,0xd9); addByte(c,0xc8+i);
+#define ass_FYL2X			addByte(c,0xd9); addByte(c,0xf1);
+/* 64 bit section */
+/* calls a function */
+#define ass_CALL			addByte(c,0xff); addByte(c,0xd0);
+/* moves constant to rax */
+#define ass_MOV_rax			addByte(c,0x48); addByte(c,0xb8);
+/* subtract xmm(i) from xmm(j) and stores result in xmm(j) */
+#define ass_SUBSD(i,j)		addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x5c); addByte(c,0xc0+0x08*j+i);
+/* moves xmm(i) to xmm(j) */
+#define ass_MOVSD(i,j)		addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x11); addByte(c,0xc0+0x08*i+j);
+
+/* variables for the code generator */
+/*codeSize: maximal code length */
+/* codePosition: actual writing code->codePosition in the code array */
+/* FPUstackSize: maximal number of external saved values from the FPU stack */
+/* FPUstackPosition: actual code->codePosition in the FPU extended stack */
+/* storageSize: maximal number of constants that can be stored */
+/* storagePosition: actual number of constants stored */
+/* prog: array for the program code */
+/* FPUstack: extention for the internal FPU stack */
+/* storage: array for storing constants in the arithmetic expression */
+/* evaluate: name of the generated function - CALL THIS FUNCTION TO EVALUATE THE ARITHMETIC EXPRESSION */
+typedef struct
+{
+  int codeSize, FPUstackSize, storageSize;
+  int codePosition, FPUstackPosition, storagePosition;
+  unsigned char *prog;
+  double *FPUstack, *storage;
+  double (*evaluate)(cvodeData_t*);
+} directCode;
+
+/* initializes the basic parameters and allocated the memory */
+void initCode (directCode_t*code, ASTNode_t *AST)
+{
+  int length;
+  
+  code->codeSize = 5; /* bytes for basic function construction */
+  code->codePosition = 0;
+  code->storageSize = 0;
+  code->storagePosition = 0;
+  length = analyse(code, AST);
+  if ( length <= 8 )
+    length = 0;
+  else
+    length -= 8;
+  code->FPUstackSize = length;
+  code->FPUstackPosition = 0;
+  
+#ifndef _WIN32 /* LINUX */
+  code->prog = (unsigned char *)mmap(NULL,code->codeSize,(PROT_EXEC|PROT_READ|PROT_WRITE),(MAP_ANONYMOUS|MAP_PRIVATE), -1, 0);
+#else /* WINDOWS */
+  code->prog = (unsigned char *)malloc(sizeof(unsigned char)*code->codeSize);
+#endif
+  code->storage = (double *)malloc(sizeof(double)*code->storageSize);
+  code->FPUstack = (double *)malloc(sizeof(double)*code->FPUstackSize);
+  
+  code->evaluate = (double (*)())code->prog;
+}
+
+/* initializes the basic parameters and allocated the memory  64 bit*/
+void initCode64 (directCode_t *code, ASTNode_t *AST)
+{
+  int length;
+
+  code->codeSize = 19;
+  code->codePosition = 0;
+  code->storageSize = 0;
+  code->storagePosition = 0;
+  length = analyse64(code, AST);
+  if ( length <= 8 )
+    length = 0;
+  else
+    length -= 8;
+  code->FPUstackSize = length;
+  code->FPUstackPosition = 0;
+  
+#ifndef _WIN32 /* LINUX */
+  code->prog = (unsigned char *)mmap(NULL,code->codeSize,(PROT_EXEC|PROT_READ|PROT_WRITE),(MAP_ANONYMOUS|MAP_PRIVATE), -1, 0);
+#else /* WINDOWS */
+  code->prog = (unsigned char *)malloc(sizeof(unsigned char)*code->codeSize);
+#endif
+  
+  code->storage = (double *)malloc(sizeof(double)*code->storageSize);
+  code->FPUstack = (double *)malloc(sizeof(double)*code->FPUstackSize);
+  /*!!! TODO : is code->temp required anywhere ?? */
+  code->temp = (long long *)malloc(sizeof(long long)); 
+  
+  code->evaluate = (double (*)())code->prog;
+}
+
+/* adds a byte to the code, extends the memory, if necessary */
+void addByte (directCode_t*code, unsigned char byte)
+{
+  if ( code->codePosition >= code->codeSize )
+    printf("programm is too long\n");
+	
+  code->prog[code->codePosition++] = byte;
+}
+
+/* adds an integer to the code */
+void addInt (directCode_t*c, int number)
+{
+  unsigned int num;
+  num = number;
+  addByte(c,num%256); num /= 256;
+  addByte(c,num%256); num /= 256;
+  addByte(c,num%256); num /= 256;
+  addByte(c,num%256);
+}
+
+/* adds an adress to the code */
+void addAddress (directCode_t*c, long long addy)
+{
+  int i, addressLength = sizeof(void (*)());
+  
+  for( i=0 ; i<addressLength ; i++ )
+  {
+    addByte(c,addy%256);
+    addy /= 256;
+  }
+}
+
+/* adds the parameter to the CPU stack, computes the necessary jump parameters for a function call and adds a call to the code */
+void callMathFunction (directCode_t*c, long long fun)
+{
+  addByte(c,0x83); addByte(c,0xec); addByte(c,0x08); /* SUB ESP 8 (parameter) */
+  addByte(c,0xdd); addByte(c,0x1c); addByte(c,0x24); /* load parameter 1 */
+  fun -= ((long long)c->prog + c->codePosition + sizeof(void (*)()) + 1);
+  addByte(c, 0xe8); addAddress(c, fun); /* CALL */
+  addByte(c,0x83); addByte(c,0xc4); addByte(c,0x08); /* ADD ESP 8 (parameter) */
+}
+
+/* computes the necessary jump parameters for a function call and adds a call to the code */
+void callFunction (directCode_t*c, long long fun)
+{
+  fun -= ((long long)c->prog + c->codePosition + sizeof(void (*)()) + 1);
+  addByte(c, 0xe8); addAddress(c, fun); /* CALL */
+}
+
+/* loads the jump destination and does the call */
+void callFunction64 (directCode_t*c, long long fun)
+{
+  ass_MOV_rax;
+  addAddress(c,fun);
+  ass_CALL;
+}
+
+/* adds an element of the FPU stack to the external stack */
+void pushStorage (directCode_t*c)
+{
+  if ( c->FPUstackPosition >= c->FPUstackSize )
+    printf("code->FPUstack overflow, %s\n", c->prog);
+  
+  ass_FSTP_mem;
+  addAddress(c, (long long)&c->FPUstack[c->FPUstackPosition++]); /* code->FPUstack place */
+}
+
+/* pops an element from the external stack into the FPU stack */
+void popAddress (directCode_t*code)
+{
+  if ( code->FPUstackPosition <= 0 )
+    printf("code->FPUstack underflow\n");
+  
+  addAddress(code, (long long)&code->FPUstack[--code->FPUstackPosition]); /* code->FPUstack code->codePosition */
+}
+
+/* pushs the element in the xmm0 register to the external stack */
+void pushStorage64 (directCode_t*c)
+{
+  if ( c->FPUstackPosition >= c->FPUstackSize ) {
+    char *formula = SBML_formulaToString(c->eqn);
+    printf("code->FPUstack overflow:\n\tpos.: %d  >= size: %d\n\tc->prog: %s\n\tODE: %s\n", c->FPUstackPosition,  c->FPUstackSize, c->prog, formula);
+    free(formula);
+  }
+  ass_MOV_rax;
+  addAddress(c, (long long)&c->FPUstack[c->FPUstackPosition++]); /* code->FPUstack place */
+  addByte(c, 0xf2); addByte(c, 0x0f); addByte(c, 0x11); addByte(c, 0x00); /* MOVSD xmm0 (rax) */
+}
+
+/* pops an element form the external stack to the xmm1 register */
+void popStorage64 (directCode_t*c)
+{
+  if ( c->FPUstackPosition <= 0 )
+    printf("code->FPUstack underflow\n");
+  ass_MOV_rax;
+  addAddress(c, (long long)&c->FPUstack[--c->FPUstackPosition]); /* code->FPUstack */
+  addByte(c, 0xf2); addByte(c, 0x0f); addByte(c, 0x10); addByte(c, 0x08); /* MOVSD (rax) xmm1 */
+	}
+
+/* saves a constant in the code->storage an adds the address to the code */
+void addConstant (directCode_t*code, double value)
+{
+  if ( code->storagePosition >= code->storageSize )
+    printf("code->storage overflow\n");
+  code->storage[code->storagePosition] = value;
+  addAddress(code, (long long)&code->storage[code->storagePosition++]);
+}
+
+/* saves a constant in the code->storage an adds the address to the code */
+void addConstant64 (directCode_t*c, double value)
+{
+  int i;
+  long long *test;
+  test = (long long*)&value; /*!!! TODO : gcc warning 'dereferencing type-punned pointer will break strict-aliasing rules' */
+  if ( value >= 0 )
+    for(i = 0 ; i < 8 ; i++)
+    {
+      addByte(c,*test%256);
+      *test /= 256;
+    }
+  else
+    for(i = 0 ; i < 8 ; i++)
+    {
+      addByte(c,*test%256-1);
+      *test /= 256;
+    }
+}
+
+/* extern function for the case AST_NAME */
+/*!!! TODO : init result to 0 and write correct error message !!!*/
+double getAST_Name(ASTNode_t *n, cvodeData_t *data)
+{
+  int i, j;
+  double found = 0, datafound, findtol=1e-5, result;
+  time_series_t *ts = data->model->time_series;
+  
+  if ( ASTNode_isSetIndex(n) )
+  {
+    if (ASTNode_isSetData(n))
+    {
+      /* if continuous data is observed, obtain interpolated result */  
+      if ( (data->model->discrete_observation_data != 1) ||
+	   (data->model->compute_vector_v != 1) )
+      {
+	result = call(ASTNode_getIndex(n),
+		      data->currenttime, ts);
+      }
+      else  /* if discrete data is observed, simply obtain value from time_series */
+      {
+	datafound = 0;
+	i = data->TimeSeriesIndex;
+	if  ( fabs(data->currenttime - ts->time[i]) < findtol )
+	{
+	  result = ts->data[ASTNode_getIndex(n)][i];
+	  datafound++;
+	}
+	if (datafound != 1)
+	{
+	  /*				SolverError_error(FATAL_ERROR_TYPE,
+					SOLVER_ERROR_AST_EVALUATION_FAILED_DISCRETE_DATA,
+					"use of discrete time series data failed; none or several time points matching current time"); */
+	  result = 0; /*  break;  */
+	}
+	else
+	  found = 1;
+      }
+    }
+    else
+    {
+      result = data->value[ASTNode_getIndex(n)];
+    }
+    found++;
+  }
+  if (found == 0)
+  {
+    if (strcmp(ASTNode_getName(n),"time") == 0 ||
+	strcmp(ASTNode_getName(n),"Time") == 0 ||
+	strcmp(ASTNode_getName(n),"TIME") == 0) {
+      result = (double) data->currenttime;
+      found++;
+    }
+  }
+  if (found == 0)
+  {
+    for (j=0; j<data->nvalues; j++)
+    {
+      if (strcmp(ASTNode_getName(n),data->model->names[j]) == 0)
+      {
+	result = data->value[j];
+	found++;
+      }
+    }
+  }
+  if (found == 0)
+  {
+    /*		SolverError_error(FATAL_ERROR_TYPE,
+		SOLVER_ERROR_AST_EVALUATION_FAILED_MISSING_VALUE,
+		"No value found for AST_NAME %s . Defaults to Zero "
+		"to avoid program crash", ASTNode_getName(n)); */
+    result = 0;
+  }
+  return result;
+}
+
+/* extern function for the case AST_NAME */
+/*!!! TODO : init result to 0 and write correct error message !!!*/
+double getAST_Name_setData(ASTNode_t *n, cvodeData_t *data) {
+	int i, j;
+	double found = 0, datafound, findtol=1e-5, result;
+	time_series_t *ts = data->model->time_series;
+	
+	/* if continuous data is observed, obtain interpolated result */  
+	if ((data->model->discrete_observation_data != 1) || (data->model->compute_vector_v != 1)) {
+		result = call(ASTNode_getIndex(n), data->currenttime, ts);
+		}
+		else  /* if discrete data is observed, simply obtain value from time_series */
+		{
+		datafound = 0;
+		i = data->TimeSeriesIndex;
+		if (fabs(data->currenttime - ts->time[i]) < findtol) {
+			result = ts->data[ASTNode_getIndex(n)][i];
+			datafound++;
+			}
+		if (datafound != 1) {
+/*			SolverError_error(FATAL_ERROR_TYPE,
+			SOLVER_ERROR_AST_EVALUATION_FAILED_DISCRETE_DATA,
+				"use of discrete time series data failed; none or several time points matching current time"); */
+			result = 0; /*  break;  */
+			}
+			else
+			found = 1;
+		}
+
+	return result;
+	}
+
+double getAST_Name_Time(cvodeData_t *data) {
+	return data->currenttime;
+	}
+
+/* some mathematical functions */
+static double aCosh(double x) {
+	return log(x + (sqrt(x - 1) * sqrt(x + 1)));
+	}
+
+static double aCot(double x) {
+	return atan(1.0/x);
+	}
+
+static double aCoth(double x) {
+	return log((x + 1.) / (x - 1.))/2.;
+	}
+
+static double aCsc(double x) {
+	return asin(1.0/x);
+	}
+
+static double aCsch(double x) {
+	return log((1 + sqrt(1 + x * x)) / x);
+	}
+
+static double aSec(double x) {
+	return acos(1.0/x);
+	}
+
+static double aSech(double x) {
+	return log((1 + sqrt(1 - x * x)) / x);
+	}
+
+static double aSinh(double x) {
+	return log(x + sqrt((x * x) + 1));
+	}
+
+static double aTanh(double x) {
+	return (log(1 + x) - log(1-x))/2 ;
+	}
+
+static double cot(double x) {
+	return 1.0/tan(x);
+	}
+
+static double coth(double x) {
+	return 1.0/tanh(x);
+	}
+
+static double csc(double x) {
+	return 1.0/sin(x);
+	}
+
+static double csch(double x) {
+	return 1.0/sinh(x);
+	}
+
+static double factorial(double x) {
+	int result = 0;
+	for( result = 1 ; x > 1 ; x--)
+		result *= x;
+	return (double) result;
+	}
+
+static double root(double x, double y) {
+	return pow(y, 1.0/x);
+	}
+
+static double sec(double x) {
+	return 1.0/cos(x);
+	}
+
+static double sech(double x) {
+	return 1.0/cosh(x);
+	}
+
+static double loga(double x, double y) {
+	return log(y)/log(x);
+	}
+
+/* generates the code from the abstract syntax tree */
+void generate (directCode_t*c, ASTNode_t *AST) {
+	
+	int i, childnum;
+	long long save;
+	double st;
+	ASTNodeType_t type;
+	cvodeData_t *test;
+	type = ASTNode_getType(AST);
+	childnum = ASTNode_getNumChildren(AST);
+	
+	switch(type) {
+		case AST_INTEGER:
+			st = (double) ASTNode_getInteger(AST);
+			ass_FLD_mem
+			addConstant(c,st);
+			break;
+		case AST_REAL: /* load double */
+		case AST_REAL_E:
+		case AST_RATIONAL:
+			st = ASTNode_getReal(AST);
+			ass_FLD_mem
+			addConstant(c,st);
+			break;
+		case AST_NAME:
+			if (ASTNode_isSetIndex(AST)) {
+				if (ASTNode_isSetData(AST)) {
+					/* function call (old version) */
+					addByte(c,0x8b); addByte(c,0x45); addByte(c,0x08); /* MOV EAX ESP+8 */
+					addByte(c,0x50); /* PUSH data - in real: PUSH EAX */
+					addByte(c,0x68); addAddress(c,(long long)AST); /* PUSH AST */
+					callFunction(c,(long long)getAST_Name_setData);
+					addByte(c,0x83); addByte(c,0xc4); addByte(c,0x08); /* ADD ESP 8 (parameter)  // delete parameter from the stack */
+					break;
+				}
+				else
+				{
+					/* data->value[ASTNode_getIndex(AST)]; */
+					test = (cvodeData_t *)malloc(sizeof(cvodeData_t));
+					addByte(c,0x8b); addByte(c,0x45); addByte(c,0x08); /* MOV EAX ESP+8 */
+					addByte(c,0x8b); addByte(c,0x40); addByte(c,(long long)&test->value - (long long)test); /* MOX EAX [EAX + offset] */
+					addByte(c,0xdd); addByte(c,0x80); addInt(c,ASTNode_getIndex(AST)*sizeof(double)); /* FLD [EAX+index] */
+					free(test);
+				}
+				break;
+			}
+			if (strcmp(ASTNode_getName(AST),"time") == 0 ||
+				strcmp(ASTNode_getName(AST),"Time") == 0 ||
+				strcmp(ASTNode_getName(AST),"TIME") == 0) {
+				test = (cvodeData_t *)malloc(sizeof(cvodeData_t));
+				addByte(c,0x8b); addByte(c,0x45); addByte(c,0x08); /* MOV EAX ESP+8 */
+				addByte(c,0xdd); addByte(c,0x40); addByte(c,(long long)&test->currenttime - (long long)test); /* FLD [EAX+offset] */
+				free(test);
+				break;
+				}
+/* OLD VERSION */
+			addByte(c,0x8b); addByte(c,0x45); addByte(c,0x08); /* MOV EAX ESP+8 */
+			addByte(c,0x50); /* PUSH data - in real: PUSH EAX */
+			addByte(c,0x68); addAddress(c,(long long)AST); /* PUSH AST */
+			callFunction(c,(long long)getAST_Name);
+			addByte(c,0x83); addByte(c,0xc4); addByte(c,0x08); /* ADD ESP 8 (parameter)  // delete parameter from the stack */
+			break;
+
+		case AST_FUNCTION_DELAY: /* not implemented */
+			ass_FLDZ
+			break;
+		case AST_NAME_TIME:
+			test = (cvodeData_t *)malloc(sizeof(cvodeData_t));
+			addByte(c,0x8b); addByte(c,0x45); addByte(c,0x08); /* MOV EAX ESP+8 */
+			addByte(c,0xdd); addByte(c,0x40); addByte(c,(long long)&test->currenttime - (long long)test); /* FLD [EAX+8] */
+			free(test);
+			break;
+
+		case AST_CONSTANT_E:
+			ass_FLDL2E
+			ass_FLD1
+			ass_FSUBP_st(1)
+			ass_F2XM1
+			ass_FLD1
+			ass_FADDP_st(1)
+			ass_FLD1
+			ass_FADD_st(0)
+			ass_FMULP_st(1)
+			break;
+		case AST_CONSTANT_FALSE: /* 0.0 */
+			ass_FLDZ
+			break;
+		case AST_CONSTANT_PI: /* pi */
+			ass_FLDPI
+			break;
+		case AST_CONSTANT_TRUE: /* 1.0 */
+			ass_FLD1
+			break;
+
+		case AST_PLUS: /* add values */
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				if(analyseFPU(child(AST,i)) >= 8) {
+					pushStorage(c); /* save old result */
+					generate(c,child(AST,i));
+					ass_FADD_mem popAddress(c); /* reload old result and add */
+					} else {
+					generate(c,child(AST,i));
+					ass_FADDP_st(1)
+					}
+				}
+			break;
+		case AST_MINUS: /* sub values */
+		    if ( childnum<2 ) {
+				generate(c,child(AST,0));
+				ass_FCHS
+				} else {
+				generate(c,child(AST,0));
+				if(analyseFPU(child(AST,1)) >= 8) {
+					pushStorage(c); /* save old result */
+					generate(c,child(AST,1));
+					ass_FSUBR_mem popAddress(c); /* reload old result and subtract */
+					} else {
+					generate(c,child(AST,1));
+					ass_FSUBP_st(1)
+					}
+				}
+			break;
+		case AST_TIMES: /* mult values */
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				if(analyseFPU(child(AST,i)) >= 8) {
+					pushStorage(c); /* save old result */
+					generate(c,child(AST,i));
+					ass_FMUL_mem popAddress(c); /* reload old result and mult */
+					} else {
+					generate(c,child(AST,i));
+					ass_FMULP_st(1)
+					}
+				}
+			break;
+		case AST_DIVIDE: /* divide values */
+			generate(c,child(AST,0));
+			if(analyseFPU(child(AST,1)) >= 8) {
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,1));
+				ass_FDIVR_mem popAddress(c); /* reload old result and divide */
+				} else {
+				generate(c,child(AST,1));
+				ass_FDIVP_st(1)
+				}
+			break;
+		case AST_POWER: /* calculates value 1 to the power of value 2 */
+		case AST_FUNCTION_POWER:
+			generate(c,child(AST,0));
+			if(analyseFPU(child(AST,1)) >= 8) {
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,1));
+				ass_FLD1
+				ass_FLD_mem popAddress(c); /* load value 1 */
+				} else {
+				generate(c,child(AST,1));
+				ass_FXCH_st(1)
+				ass_FLD1
+				ass_FXCH_st(1)
+				}
+			ass_FYL2X
+			ass_FMULP_st(1)
+			ass_FLD_st(0)
+			ass_FRNDINT
+			ass_FSUB_st(1)
+			ass_FXCH_st(1)
+			ass_F2XM1
+			ass_FLD1
+			ass_FADDP_st(1)
+			ass_FSCALE
+			ass_FSTP_st(1)
+			break;
+		case AST_LAMBDA: /* not implemented */
+			ass_FLDZ
+			break;
+
+		case AST_FUNCTION: /* user defined function */
+			if (UsrDefFunc == NULL) { /* no function defined */
+				ass_FLDZ
+				}
+				else
+				{
+				save = (long long)&c->FPUstack[c->FPUstackPosition];
+				for (i = 0 ; i < childnum ; i++) { /* compute parameters and store them on the external stack */
+					generate(c,child(AST,i));
+					ass_FSTP_mem
+					addInt(c,(long long)&c->FPUstack[c->FPUstackPosition++]); /* code->FPUstack place */
+					}
+				addByte(c,0x68); addAddress(c,save); /* PUSH array pointer */
+				addByte(c,0x68); addInt(c,childnum); /* PUSH childnum */
+				addByte(c,0x68); addAddress(c,(long long)(char *)ASTNode_getName(AST)); /* PUSH name */
+				callFunction(c,(long long)UsrDefFunc);
+				addByte(c,0x83); addByte(c,0xc4); addByte(c,0x0c); /* ADD ESP 12 (parameter) */
+				c->FPUstackPosition -= childnum;
+				}
+			break;
+		case AST_FUNCTION_ABS: /* absolut value */
+			generate(c,child(AST,0));
+			ass_FABS
+			break;
+		case AST_FUNCTION_ARCCOS: /* arccos = pi/2.0 - arcsin  = pi/2.0 - arctan(value / sqrt(1.0-value^2)) */
+			generate(c,child(AST,0));
+			ass_FLD_st(0)
+			ass_FMUL_st(0)
+			ass_FLD1
+			ass_FSUBRP_st(1)
+			ass_FSQRT
+			ass_FPATAN
+			ass_FLDPI
+			ass_FLD1
+			ass_FADD_st(0)
+			ass_FDIVP_st(1)
+			ass_FSUBRP_st(1)
+			break;
+		case AST_FUNCTION_ARCCOSH: /* arccos hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)aCosh); /* aCosh */
+			break;
+		case AST_FUNCTION_ARCCOT: /* arccot = pi/2.0 - arctan */
+			generate(c,child(AST,0));
+			ass_FLD1
+			ass_FPATAN
+			ass_FLDPI
+			ass_FLD1
+			ass_FADD_st(0)
+			ass_FDIVP_st(1)
+			ass_FSUBRP_st(1)
+			break;
+		case AST_FUNCTION_ARCCOTH: /* arccot hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)aCoth); /* aCoth */
+			break;
+		case AST_FUNCTION_ARCCSC: /* arccsc = arcsin(1.0/value) */
+			generate(c,child(AST,0));
+			ass_FMUL_st(0)
+			ass_FLD1
+			ass_FSUBP_st(1)
+			ass_FSQRT
+			ass_FLD1
+			ass_FXCH_st(1)
+			ass_FPATAN
+			break;
+		case AST_FUNCTION_ARCCSCH: /* arccsc hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)aCsch); /* aCsch */
+			break;
+		case AST_FUNCTION_ARCSEC: /* arccsc = arccos(1.0/value) =  pi/2.0 - arcsin(1.0/value) */
+			generate(c,child(AST,0));
+			ass_FMUL_st(0)
+			ass_FLD1
+			ass_FSUBP_st(1)
+			ass_FSQRT
+			ass_FLD1
+			ass_FXCH_st(1)
+			ass_FPATAN
+			ass_FLDPI
+			ass_FLD1
+			ass_FADD_st(0)
+			ass_FDIVP_st(1)
+			ass_FSUBRP_st(1)
+			break;
+		case AST_FUNCTION_ARCSECH: /* arcsec hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)aSech); /* aSech */
+			break;
+		case AST_FUNCTION_ARCSIN: /* arcsin */
+			generate(c,child(AST,0));
+			ass_FLD_st(0)
+			ass_FMUL_st(0)
+			ass_FLD1
+			ass_FSUBRP_st(1)
+			ass_FSQRT
+			ass_FPATAN
+			break;
+		case AST_FUNCTION_ARCSINH: /* arcsin hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)aSinh); /* asinh */
+			break;
+		case AST_FUNCTION_ARCTAN: /* arctan */
+			generate(c,child(AST,0));
+			ass_FLD1
+			ass_FPATAN
+			break;
+		case AST_FUNCTION_ARCTANH: /* arctan hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)aTanh); /* atanh */
+			break;
+		case AST_FUNCTION_CEILING: /* rounds value to next integer */
+			generate(c,child(AST,0));
+			ass_FLD_st(0)
+			ass_FRNDINT
+			ass_FXCH_st(1)
+			ass_FCOMIP_st(1)
+			ass_FLD1
+			ass_FADD_st(1)
+			ass_FCMOVBE_st(1)
+			ass_FSTP_st(1)
+			break;
+		case AST_FUNCTION_COS: /* cosinus */
+			generate(c,child(AST,0));
+			ass_FCOS
+			break;
+		case AST_FUNCTION_COSH: /* cosinus hyperbilic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)cosh); /* cosh */
+			break;
+		case AST_FUNCTION_COT: /* cotangens = 1/tan */
+			generate(c,child(AST,0));
+			ass_FPTAN
+			ass_FDIVRP_st(1)
+			break;
+		case AST_FUNCTION_COTH: /* coth = 1/tanh */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)tanh); /* tanh */
+			ass_FLD1
+			ass_FDIVRP_st(1)
+			break;
+		case AST_FUNCTION_CSC: /* cosec = 1/sinus */
+			generate(c,child(AST,0));
+			ass_FSIN
+			ass_FLD1
+			ass_FDIVRP_st(1)
+			break;
+		case AST_FUNCTION_CSCH: /* csch = 1/sinh */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)sinh); /* sinh */
+			ass_FLD1
+			ass_FDIVRP_st(1)
+			break;
+		case AST_FUNCTION_EXP: /* exp( value ) */
+			generate(c,child(AST,0));
+			ass_FLDL2E
+			ass_FMULP_st(1)
+			ass_FLD_st(0)
+			ass_FRNDINT
+			ass_FSUB_st(1)
+			ass_FXCH_st(1)
+			ass_F2XM1
+			ass_FLD1
+			ass_FADDP_st(1)
+			ass_FSCALE
+			ass_FSTP_st(1)
+			break;
+		case AST_FUNCTION_FACTORIAL:
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)factorial); /* factorial */
+			break;
+		case AST_FUNCTION_FLOOR: /* rounds value to next integer */
+			generate(c,child(AST,0));
+			ass_FLD_st(0)
+			ass_FRNDINT
+			ass_FXCH_st(1)
+			ass_FCOMIP_st(1)
+			ass_FLD1
+			ass_FSUBR_st(1)
+			ass_FCMOVNB_st(1)
+			ass_FSTP_st(1)
+			break;
+		case AST_FUNCTION_LN: /* log_e */
+			generate(c,child(AST,0));
+			ass_FLDLN2
+			ass_FXCH_st(1)
+			ass_FYL2X
+			break;
+		case AST_FUNCTION_LOG: /* log_a(b) */
+			generate(c,child(AST,1));
+			ass_FLDLG2
+			ass_FXCH_st(1)
+			ass_FYL2X
+			if(analyseFPU(child(AST,0)) >= 7) {
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,0));
+				ass_FLDLG2
+				ass_FXCH_st(1)
+				ass_FYL2X
+				ass_FDIVR_mem popAddress(c); /* reload old result and divide */
+				} else {
+				generate(c,child(AST,0));
+				ass_FLDLG2
+				ass_FXCH_st(1)
+				ass_FYL2X
+				ass_FDIVP_st(1)
+				}
+			break;
+		case AST_FUNCTION_PIECEWISE: /* USEFUL? NOT CORRECTLY IMPLEMENTED! */
+			ass_FLDZ
+			pushStorage(c); /* save result */
+		    for ( i = 0 ; i < childnum-1 ; i = i + 2) {
+				generate(c,child(AST,i+1));
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,i));
+				ass_FLD_mem popAddress(c); /* load value 1 */
+				ass_FLDZ
+				ass_FCOMIP_st(1)
+				ass_FFREE_st(0)
+				ass_FINCSTP
+				ass_FLD_mem popAddress(c); /* load result */
+				ass_FCMOVNE_st(1)
+				pushStorage(c); /* save result */
+				ass_FFREE_st(0)
+				ass_FINCSTP
+				}
+			ass_FLD_mem popAddress(c); /* load result */
+			break;
+		/* AST_FUNCTION_POWER see AST_POWER */
+		case AST_FUNCTION_ROOT:
+			generate(c,child(AST,1));
+			if(analyseFPU(child(AST,0)) >= 8) {
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,0));
+				ass_FLD1
+				ass_FLD_mem popAddress(c); /* load value 1 */
+				} else {
+				generate(c,child(AST,0));
+				ass_FXCH_st(1)
+				ass_FLD1
+				ass_FXCH_st(1)
+				}
+			ass_FYL2X
+			ass_FDIVRP_st(1)
+			ass_FLD_st(0)
+			ass_FRNDINT
+			ass_FSUB_st(1)
+			ass_FXCH_st(1)
+			ass_F2XM1
+			ass_FLD1
+			ass_FADDP_st(1)
+			ass_FSCALE
+			ass_FSTP_st(1)
+			break;
+		case AST_FUNCTION_SEC: /* sec = 1/cosinus */
+			generate(c,child(AST,0));
+			ass_FCOS
+			ass_FLD1
+			ass_FDIVRP_st(1)
+			break;
+		case AST_FUNCTION_SECH: /* sech = 1/cosh */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)cosh); /* cosh */
+			ass_FLD1
+			ass_FDIVRP_st(1)
+			break;
+		case AST_FUNCTION_SIN: /* sinus */
+			generate(c,child(AST,0));
+			ass_FSIN
+			break;
+		case AST_FUNCTION_SINH: /* sinus hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)sinh);
+			break;
+		case AST_FUNCTION_TAN: /* tangens */
+			generate(c,child(AST,0));
+			ass_FPTAN
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			break;
+
+			case AST_FUNCTION_TANH: /* tangens hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)tanh);
+			break;
+
+/* logical cases depends from 0.0 and 1.0 as initial values */
+		case AST_LOGICAL_AND:
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,i));
+				ass_FMUL_mem popAddress(c); /* reload old result and mult */
+				}
+			break;
+		case AST_LOGICAL_NOT:
+			generate(c,child(AST,0));
+			ass_FLD1
+			ass_FSUBRP_st(1)
+			break;
+		case AST_LOGICAL_OR: /* !(AND !values) */
+			generate(c,child(AST,0));
+			ass_FLD1
+			ass_FSUBRP_st(1)
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,i));
+				ass_FLD1
+				ass_FSUBRP_st(1)
+				ass_FMUL_mem popAddress(c); /* reload old result and mult */
+				}
+			ass_FLD1
+			ass_FSUBRP_st(1)
+			break;
+		case AST_LOGICAL_XOR:
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,i));
+				ass_FLD_mem popAddress(c); /* load value 1 */
+				ass_FSUBP_st(1)
+				ass_FABS
+				}
+			break;
+		case AST_RELATIONAL_EQ:
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result to stack*/
+				generate(c,child(AST,i));
+				}
+			ass_FLD1
+			ass_FXCH_st(1)
+			ass_FLDZ
+			ass_FXCH_st(1)
+		    for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				ass_FLD_mem popAddress(c); /* load old value from stack */
+				ass_FCOMIP_st(1)
+				ass_FXCH_st(2)
+				ass_FCMOVNE_st(1)
+				ass_FXCH_st(2)
+				}
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			break;
+		case AST_RELATIONAL_GEQ:
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result to stack*/
+				generate(c,child(AST,i));
+				}
+			ass_FLD1
+			ass_FXCH_st(1)
+			ass_FLDZ
+			ass_FXCH_st(1)
+		    for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				ass_FLD_mem popAddress(c); /* load old value from stack */
+				ass_FXCH_st(1)
+				ass_FCOMIP_st(1)
+				ass_FXCH_st(2)
+				ass_FCMOVNBE_st(1)
+				ass_FXCH_st(2)
+				}
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			break;
+		case AST_RELATIONAL_GT:
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result to stack*/
+				generate(c,child(AST,i));
+				}
+			ass_FLD1
+			ass_FXCH_st(1)
+			ass_FLDZ
+			ass_FXCH_st(1)
+		    for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				ass_FLD_mem popAddress(c); /* load old value from stack */
+				ass_FXCH_st(1)
+				ass_FCOMIP_st(1)
+				ass_FXCH_st(2)
+				ass_FCMOVNB_st(1)
+				ass_FXCH_st(2)
+				}
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			break;
+		case AST_RELATIONAL_LEQ:
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result to stack*/
+				generate(c,child(AST,i));
+				}
+			ass_FLD1
+			ass_FXCH_st(1)
+			ass_FLDZ
+			ass_FXCH_st(1)
+		    for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				ass_FLD_mem popAddress(c); /* load old value from stack */
+				ass_FXCH_st(1)
+				ass_FCOMIP_st(1)
+				ass_FXCH_st(2)
+				ass_FCMOVB_st(1)
+				ass_FXCH_st(2)
+				}
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			break;
+		case AST_RELATIONAL_LT:
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result to stack*/
+				generate(c,child(AST,i));
+				}
+			ass_FLD1
+			ass_FXCH_st(1)
+			ass_FLDZ
+			ass_FXCH_st(1)
+		    for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				ass_FLD_mem popAddress(c); /* load old value from stack */
+				ass_FXCH_st(1)
+				ass_FCOMIP_st(1)
+				ass_FXCH_st(2)
+				ass_FCMOVBE_st(1)
+				ass_FXCH_st(2)
+				}
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			break;
+
+		default:
+			printf("ERROR: Wrong AST_type\n");
+			ass_FLDZ
+			break;
+		}
+	}
+
+/* generates the code from the abstract syntax tree */
+void generate64 (directCode_t *c, ASTNode_t *AST) {
+	
+	int i, childnum, stack;
+	long long save;
+	double st;
+	ASTNodeType_t type;
+	type = ASTNode_getType(AST);
+	childnum = ASTNode_getNumChildren(AST);
+	cvodeData_t *test;
+	
+	switch(type) {
+		case AST_INTEGER:
+			st = (double) ASTNode_getInteger(AST);
+			ass_MOV_rax
+			addConstant64(c,st);
+			addByte(c,0x48);addByte(c,0x89);addByte(c,0x45);addByte(c,0xf8); /* MOV rax rbp */
+			addByte(c,0xf2);addByte(c,0x0f);addByte(c,0x10); /* MOVSD */
+			addByte(c,0x45);addByte(c,0xf8); /* rbp xmm0 */
+			break;
+		case AST_REAL: /* load double */
+		case AST_REAL_E:
+		case AST_RATIONAL:
+			st = ASTNode_getReal(AST);
+			ass_MOV_rax
+			addConstant64(c,st);
+			addByte(c,0x48);addByte(c,0x89);addByte(c,0x45);addByte(c,0xf8); /* MOV rax rbp */
+			addByte(c,0xf2);addByte(c,0x0f);addByte(c,0x10); /* MOVSD */
+			addByte(c,0x45);addByte(c,0xf8); /* rbp xmm0 */
+			break;
+		case AST_NAME:
+			if (ASTNode_isSetIndex(AST)) {
+				if (ASTNode_isSetData(AST)) {
+					/* function call (old version) */
+					ass_MOV_rax
+					addAddress(c,(long long)AST);
+					addByte(c, 0x48); addByte(c, 0x89); addByte(c, 0xc7); /* MOV RAX RDI */
+					ass_MOV_rax
+					addAddress(c,(long long)c->temp);
+					addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x30); /* MOV [RAX] RSI */
+					callFunction64(c,(long long)getAST_Name_setData);
+					break;
+				}
+				else
+				{
+					/* data->value[ASTNode_getIndex(AST)]; */
+					ass_MOV_rax
+					addAddress(c,(long long)c->temp);
+					test = (cvodeData_t *)malloc(sizeof(cvodeData_t));
+					addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x00); /* MOV [RAX] RAX */
+					addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x80);
+					addInt(c,(long long)&test->value - (long long)test); /* MOX RAX [RAX + offset] */
+					addByte(c, 0xf2); addByte(c, 0x0f); addByte(c, 0x10); addByte(c, 0x80);
+					addInt(c,ASTNode_getIndex(AST)*sizeof(double)); /* MOVSD (rax+imm32) xmm0 */
+					free(test);
+				}
+				break;
+			}
+			if (strcmp(ASTNode_getName(AST),"time") == 0 ||
+				strcmp(ASTNode_getName(AST),"Time") == 0 ||
+				strcmp(ASTNode_getName(AST),"TIME") == 0) {
+				ass_MOV_rax
+				addAddress(c,(long long)c->temp);
+				test = (cvodeData_t *)malloc(sizeof(cvodeData_t));
+				addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x00); /* MOV [RAX] RAX */
+				addByte(c, 0xf2); addByte(c, 0x0f); addByte(c, 0x10); addByte(c, 0x80);
+				addInt(c,(long long)&test->currenttime - (long long)test); /* MOVSD (rax+imm32) xmm0 */
+				free(test);
+				break;
+				}
+			ass_MOV_rax
+			addAddress(c,(long long)AST);
+			addByte(c, 0x48); addByte(c, 0x89); addByte(c, 0xc7); /* MOV RAX RDI */
+			ass_MOV_rax
+			addAddress(c,(long long)c->temp);
+			addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x30); /* MOV [RAX] RSI */
+			callFunction64(c,(long long)getAST_Name);
+			break;
+		case AST_FUNCTION_DELAY: /* not implemented */
+			ass_SUBSD(0,0)
+			break;
+		case AST_NAME_TIME:
+			ass_MOV_rax
+			addAddress(c,(long long)c->temp);
+			test = (cvodeData_t *)malloc(sizeof(cvodeData_t));
+			addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x00); /* MOV [RAX] RAX */
+			addByte(c, 0xf2); addByte(c, 0x0f); addByte(c, 0x10); addByte(c, 0x80);
+			addInt(c,(long long)&test->currenttime - (long long)test); /* MOVSD (rax+imm32) xmm0 */
+			free(test);
+			break;
+			/* old version: */
+			ass_MOV_rax
+			addAddress(c,(long long)c->temp);
+			addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x38); /* MOV [RAX] RDI */
+			callFunction64(c,(long long)getAST_Name_Time);
+			break;
+
+		case AST_CONSTANT_E:
+			ass_MOV_rax
+			addConstant64(c,M_E);
+			addByte(c,0x48);addByte(c,0x89);addByte(c,0x45);addByte(c,0xf8); /* MOV rax rbp */
+			addByte(c,0xf2);addByte(c,0x0f);addByte(c,0x10); /* MOVSD */
+			addByte(c,0x45);addByte(c,0xf8); /* rbp xmm0 */
+			break;
+		case AST_CONSTANT_FALSE: /* 0.0 */
+			ass_SUBSD(0,0)
+			break;
+		case AST_CONSTANT_PI: /* pi */
+			ass_MOV_rax
+			addConstant64(c,M_PI);
+			addByte(c,0x48);addByte(c,0x89);addByte(c,0x45);addByte(c,0xf8); /* MOV rax rbp */
+			addByte(c,0xf2);addByte(c,0x0f);addByte(c,0x10); /* MOVSD */
+			addByte(c,0x45);addByte(c,0xf8); /* rbp xmm0 */
+			break;
+		case AST_CONSTANT_TRUE: /* 1.0 */
+/*			addByte(c,0x48);addByte(c,0xb8); // MOV rax
+			addConstant64(c,1.0);
+			addByte(c,0x48);addByte(c,0x89);addByte(c,0x45);addByte(c,0xf8); // MOV rax rbp
+			addByte(c,0xf2);addByte(c,0x0f);addByte(c,0x10); // MOVSD
+			addByte(c,0x45);addByte(c,0xf8);// rbp xmm0
+			break; // ALTERNATIVE: */
+			ass_SUBSD(1,1)
+			addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xc9); addByte(c,0x00); /* CMPEQSD xmm1 xmm1 */
+			addByte(c,0xf3); addByte(c,0x0f); addByte(c,0xe6); addByte(c,0xc9); /* CVTDQ2PS xmm1 xmm1 */
+			ass_SUBSD(0,0)
+			ass_SUBSD(1,0)
+			break;
+
+		case AST_PLUS: /* add values */
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				stack = analyse64Stack(child(AST,i));
+				if(stack < 8) {
+					ass_MOVSD(0,stack)
+					generate64(c,child(AST,i));
+					addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x58); addByte(c,0xc0+stack); /* ADDSD xmm0 xmm[stack] */
+					} else {
+					pushStorage64(c); /* save old result */
+					generate64(c,child(AST,i));
+					popStorage64(c);
+					addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x58); addByte(c,0xc1); /* ADDSD xmm0 xmm1 */
+					}
+				}
+			break;
+		case AST_MINUS: /* sub values */
+		    if ( childnum<2 ) {
+				generate64(c,child(AST,0));
+				ass_MOVSD(0,1)
+				ass_SUBSD(0,0)
+				ass_SUBSD(1,0)
+				} else {
+				generate64(c,child(AST,1));
+				stack = analyse64Stack(child(AST,0));
+				if(stack < 8) {
+					ass_MOVSD(0,stack)
+					generate64(c,child(AST,0));
+					ass_SUBSD(stack,0)
+					} else {
+					pushStorage64(c); /* save old result */
+					generate64(c,child(AST,0));
+					popStorage64(c);
+					ass_SUBSD(1,0)
+					}
+				}
+			break;
+		case AST_TIMES: /* mult values */
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				stack = analyse64Stack(child(AST,i));
+				if(stack < 8) {
+					ass_MOVSD(0,stack)
+					generate64(c,child(AST,i));
+					addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x59); addByte(c,0xc0+stack); /* ADDSD xmm0 xmm[stack] */
+					} else {
+					pushStorage64(c); /* save old result */
+					generate64(c,child(AST,i));
+					popStorage64(c);
+					addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x59); addByte(c,0xc1); /* ADDSD xmm0 xmm1 */
+					}
+				}
+			break;
+		case AST_DIVIDE: /* divide values */
+			generate64(c,child(AST,1));
+			stack = analyse64Stack(child(AST,0));
+			if(stack < 8) {
+				ass_MOVSD(0,stack)
+				generate64(c,child(AST,0));
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x5e); addByte(c,0xc0+stack); /* DIVSD xmm0 xmm[stack] */
+				} else {
+				pushStorage64(c); /* save old result */
+				generate64(c,child(AST,0));
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x5e); addByte(c,0xc1); /* DIVSD xmm0 xmm1 */
+				}
+			break;
+		case AST_POWER: /* calculates value 1 to the power of value 2 */
+		case AST_FUNCTION_POWER:
+			generate64(c,child(AST,1));
+			stack = analyse64Stack(child(AST,0));
+			if(stack < 8) {
+				ass_MOVSD(0,stack)
+				generate64(c,child(AST,0));
+				if(stack > 1) {
+					ass_MOVSD(stack,1)
+					}
+				} else {
+				pushStorage64(c); /* save old result */
+				generate64(c,child(AST,0));
+				popStorage64(c);
+				}
+			callFunction64(c,(long long)pow); /* pow */
+			break;
+		case AST_LAMBDA: /* not implemented */
+			ass_SUBSD(0,0)
+			break;
+
+		case AST_FUNCTION: /* user defined function */
+			if (UsrDefFunc == NULL) { /* no function defined */
+				ass_SUBSD(0,0)
+				}
+				else
+				{
+				save = (long long)&c->FPUstack[c->FPUstackPosition];
+				for (i = 0 ; i < childnum ; i++) { /* compute parameters and store them on the external stack */
+					generate64(c,child(AST,i));
+					pushStorage64(c);
+					}
+				ass_MOV_rax
+				addAddress(c,save);
+				addByte(c, 0x48); addByte(c, 0x89); addByte(c, 0xc2); /* MOV RAX RDX */
+				ass_MOV_rax
+				addAddress(c,childnum);
+				addByte(c, 0x48); addByte(c, 0x89); addByte(c, 0xc6); /* MOV RAX RSI */
+				ass_MOV_rax
+				addAddress(c,(long long)c->temp);
+				addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x38); /* MOV [RAX] RDI */
+				ass_MOV_rax
+				addAddress(c,(long long)(char *)ASTNode_getName(AST));
+				callFunction64(c,(long long)UsrDefFunc);
+				c->FPUstackPosition -= childnum;
+				}
+			break;
+		case AST_FUNCTION_ABS: /* absolut value */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)fabs); /* abs */
+			break;
+		case AST_FUNCTION_ARCCOS: /* arccos = pi/2.0 - arcsin  = pi/2.0 - arctan(value / sqrt(1.0-value^2)) */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)acos); /* acos */
+			break;
+		case AST_FUNCTION_ARCCOSH: /* arccos hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aCosh); /* aCosh */
+			break;
+		case AST_FUNCTION_ARCCOT: /* arccot = pi/2.0 - arctan */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aCot); /* aCot */
+			break;
+		case AST_FUNCTION_ARCCOTH: /* arccot hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aCoth); /* aCoth */
+			break;
+		case AST_FUNCTION_ARCCSC: /* arccsc = arcsin(1.0/value) */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aCsc); /* aCsc */
+			break;
+		case AST_FUNCTION_ARCCSCH: /* arccsc hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aCsch); /* aCsch */
+			break;
+		case AST_FUNCTION_ARCSEC: /* arccsc = arccos(1.0/value) =  pi/2.0 - arcsin(1.0/value) */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aSec); /* aSec */
+			break;
+		case AST_FUNCTION_ARCSECH: /* arcsec hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aSech); /* aSech */
+			break;
+		case AST_FUNCTION_ARCSIN: /* arcsin */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)asin); /* asin */
+			break;
+		case AST_FUNCTION_ARCSINH: /* arcsin hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aSinh); /* asinh */
+			break;
+		case AST_FUNCTION_ARCTAN: /* arctan */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)atan); /* atan */
+			break;
+		case AST_FUNCTION_ARCTANH: /* arctan hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aTanh); /* atanh */
+			break;
+		case AST_FUNCTION_CEILING: /* rounds value to next integer */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)ceil); /* ceil */
+			break;
+		case AST_FUNCTION_COS: /* cosinus */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)cos); /* cos */
+			break;
+		case AST_FUNCTION_COSH: /* cosinus hyperbilic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)cosh); /* cosh */
+			break;
+		case AST_FUNCTION_COT: /* cotangens = 1/tan */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)cot); /* cot */
+			break;
+		case AST_FUNCTION_COTH: /* coth = 1/tanh */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)coth); /* coth */
+			break;
+		case AST_FUNCTION_CSC: /* cosec = 1/sinus */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)csc); /* cosec */
+			break;
+		case AST_FUNCTION_CSCH: /* csch = 1/sinh */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)csch); /* cosech */
+			break;
+		case AST_FUNCTION_EXP: /* exp( value ) */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)exp); /* exp */
+			break;
+		case AST_FUNCTION_FACTORIAL:
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)factorial); /* factorial */
+			break;
+		case AST_FUNCTION_FLOOR: /* rounds value to next integer */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)floor); /* floor */
+			break;
+		case AST_FUNCTION_LN: /* log_e */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)log); /* log */
+			break;
+		case AST_FUNCTION_LOG: /* log_a(b) */
+			generate64(c,child(AST,1));
+			stack = analyse64Stack(child(AST,0));
+			if(stack < 8) {
+				ass_MOVSD(0,stack)
+				generate64(c,child(AST,0));
+				if(stack > 1) {
+					ass_MOVSD(stack,1)
+					}
+				} else {
+				pushStorage64(c); /* save old result */
+				generate64(c,child(AST,0));
+				popStorage64(c);
+				}
+			callFunction64(c,(long long)loga); /* pow */
+			break;
+		case AST_FUNCTION_PIECEWISE: /* USEFUL? NOT CORRECTLY IMPLEMENTED! */
+			ass_SUBSD(0,0)
+			pushStorage64(c); /* save result */
+		    for ( i = 0 ; i < childnum-1 ; i = i + 2) {
+				generate64(c,child(AST,i+1));
+				pushStorage64(c); /* save compare result */
+				generate64(c,child(AST,i)); /* compute new value */
+				popStorage64(c); /* load compare value */
+				ass_SUBSD(2,2)
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xd1); addByte(c,0x04); /* CMPNEQSD xmm2 xmm1 */
+				addByte(c,0xf3); addByte(c,0x0f); addByte(c,0xe6); addByte(c,0xd2); /* CVTDQ2PD xmm2 xmm2 */
+				ass_SUBSD(3,3)
+				ass_SUBSD(2,3)
+				popStorage64(c); /* load result */
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x59); addByte(c,0xc3); /* MULSD xmm0 xmm3 */
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x58); addByte(c,0xc1); /* ADDSD xmm0 xmm1 */
+				pushStorage64(c); /* save result */
+				}
+			popStorage64(c); /* load result */
+			ass_MOVSD(1,0)
+			break;
+		/* AST_FUNCTION_POWER see AST_POWER */
+		case AST_FUNCTION_ROOT:
+			generate64(c,child(AST,1));
+			stack = analyse64Stack(child(AST,0));
+			if(stack < 8) {
+				ass_MOVSD(0,stack)
+				generate64(c,child(AST,0));
+				if(stack > 1) {
+					ass_MOVSD(stack,1)
+					}
+				} else {
+				pushStorage64(c); /* save old result */
+				generate64(c,child(AST,0));
+				popStorage64(c);
+				}
+			callFunction64(c,(long long)root); /* root */
+			break;
+		case AST_FUNCTION_SEC: /* sec = 1/cosinus */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)sec); /* sec */
+			break;
+		case AST_FUNCTION_SECH: /* sech = 1/cosh */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)sech); /* sech */
+			break;
+		case AST_FUNCTION_SIN: /* sinus */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)sin); /* sin */
+			break;
+		case AST_FUNCTION_SINH: /* sinus hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)sinh); /* sinh */
+			break;
+		case AST_FUNCTION_TAN: /* tangens */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)tan); /* tan */
+			break;
+		case AST_FUNCTION_TANH: /* tangens hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)tanh); /* tanh */
+			break;
+
+/* logical cases depends from 0.0 and 1.0 as initial values */
+		case AST_LOGICAL_AND:
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result */
+				generate64(c,child(AST,i));
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x5d); addByte(c,0xc1); /* MINSD xmm0 xmm1 */
+/* 				addByte(c,0x66); addByte(c,0x0f); addByte(c,0x54); addByte(c,0xc1); /\* ANDPD xmm0 xmm1 *\/ */
+/* 				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x59); addByte(c,0xc1); /\* MULSD xmm0 xmm1 *\/ */
+				}
+			break;
+		case AST_LOGICAL_NOT:
+			generate64(c,child(AST,0));
+			ass_MOVSD(0,1)
+			ass_MOV_rax
+			addConstant64(c,1.0);
+			addByte(c,0x48);addByte(c,0x89);addByte(c,0x45);addByte(c,0xf8); /* MOV rax rbp */
+			addByte(c,0xf2);addByte(c,0x0f);addByte(c,0x10); /* MOVSD */
+			addByte(c,0x45);addByte(c,0xf8); /* rbp xmm0 */
+			ass_SUBSD(1,0)
+			break;
+		case AST_LOGICAL_OR:
+			generate64(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result */
+				generate64(c,child(AST,i));
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x5f); addByte(c,0xc1); /* MAXSD xmm0 xmm1 */
+				}
+			break;
+		case AST_LOGICAL_XOR:
+			generate64(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result */
+				generate64(c,child(AST,i));
+				popStorage64(c);
+/* ?? INTEGER INSTRUCTION FASTER ?? */
+				addByte(c,0x66); addByte(c,0x0f); addByte(c,0x57); addByte(c,0xc1); /* XORPD xmm0 xmm1 */
+				}
+			break;
+		case AST_RELATIONAL_EQ:
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result to stack*/
+				generate64(c,child(AST,i));
+				}
+			ass_SUBSD(2,2)
+			addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xd2); addByte(c,0x00); /* CMPEQSD xmm2 xmm2 */
+			for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xc8); addByte(c,0x00); /* CMPEQSD xmm1 xmm0 */
+				addByte(c,0x66); addByte(c,0x0f); addByte(c,0xdb); addByte(c,0xd1); /* PAND xmm1 xmm2 */
+				}
+			addByte(c,0xf3); addByte(c,0x0f); addByte(c,0xe6); addByte(c,0xd2); /* CVTDQ2PD xmm2 xmm2 */
+			ass_SUBSD(0,0)
+			ass_SUBSD(2,0)
+			break;
+		case AST_RELATIONAL_GEQ:
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result to stack*/
+				generate64(c,child(AST,i));
+				}
+			ass_SUBSD(2,2)
+			addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xd2); addByte(c,0x00); /* CMPEQSD xmm2 xmm2 */
+			for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xc1); addByte(c,0x02); /* CMPLESD xmm1 xmm0 */
+				addByte(c,0x66); addByte(c,0x0f); addByte(c,0xdb); addByte(c,0xd0); /* PAND xmm0 xmm2 */
+				ass_MOVSD(1,0)
+				}
+			addByte(c,0xf3); addByte(c,0x0f); addByte(c,0xe6); addByte(c,0xd2); /* CVTDQ2PS */
+			ass_SUBSD(0,0)
+			ass_SUBSD(2,0)
+			break;
+		case AST_RELATIONAL_GT:
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result to stack*/
+				generate64(c,child(AST,i));
+				}
+			ass_SUBSD(2,2)
+			addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xd2); addByte(c,0x00); /* CMPEQSD xmm2 xmm2 */
+			for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xc1); addByte(c,0x01); /* CMPLTSD xmm1 xmm0 */
+				addByte(c,0x66); addByte(c,0x0f); addByte(c,0xdb); addByte(c,0xd0); /* PAND xmm0 xmm2 */
+				ass_MOVSD(1,0)
+				}
+			addByte(c,0xf3); addByte(c,0x0f); addByte(c,0xe6); addByte(c,0xd2); /* CVTDQ2PS */
+			ass_SUBSD(0,0)
+			ass_SUBSD(2,0)
+			break;
+		case AST_RELATIONAL_LEQ:
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result to stack*/
+				generate64(c,child(AST,i));
+				}
+			ass_SUBSD(2,2)
+			addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xd2); addByte(c,0x00); /* CMPEQSD xmm2 xmm2 */
+			for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xc1); addByte(c,0x05); /* CMPNLTSD xmm1 xmm0 */
+				addByte(c,0x66); addByte(c,0x0f); addByte(c,0xdb); addByte(c,0xd0); /* PAND xmm0 xmm2 */
+				ass_MOVSD(1,0)
+				}
+			addByte(c,0xf3); addByte(c,0x0f); addByte(c,0xe6); addByte(c,0xd2); /* CVTDQ2PS */
+			ass_SUBSD(0,0)
+			ass_SUBSD(2,0)
+			break;
+		case AST_RELATIONAL_LT:
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result to stack*/
+				generate64(c,child(AST,i));
+				}
+			ass_SUBSD(2,2)
+			addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xd2); addByte(c,0x00); /* CMPEQSD xmm2 xmm2 */
+			for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xc1); addByte(c,0x06); /* CMPNLESD xmm0 xmm1 */
+				addByte(c,0x66); addByte(c,0x0f); addByte(c,0xdb); addByte(c,0xd0); /* PAND xmm0 xmm2 */
+				ass_MOVSD(1,0)
+				}
+			addByte(c,0xf3); addByte(c,0x0f); addByte(c,0xe6); addByte(c,0xd2); /* CVTDQ2PS */
+			ass_SUBSD(0,0)
+			ass_SUBSD(2,0)
+			break;
+
+		default:
+			printf("ERROR: Wrong AST_type\n");
+			ass_SUBSD(0,0)
+			break;
+		}
+	}
+
+/* analyses the abstract syntax tree according to code and stack size */
+int analyse (directCode_t*c, ASTNode_t *AST) { /* returns the number of places it occupies of the FPU stack */
+	
+	int i, childnum, save, save1;
+	ASTNodeType_t type;
+	type = ASTNode_getType(AST);
+	childnum = ASTNode_getNumChildren(AST);
+	
+	switch(type) {
+		case AST_INTEGER:
+		case AST_REAL:
+		case AST_REAL_E:
+		case AST_RATIONAL:
+			c->storageSize++;
+			c->codeSize += 6;
+			return 1;
+		case AST_NAME:
+			if (ASTNode_isSetIndex(AST)) {
+				if (ASTNode_isSetData(AST)) {
+					/* function call (old version) */
+					c->codeSize += 13 + sizeof(void (*)());
+					return 8;
+				}
+				else
+				{
+					/* data->value[ASTNode_getIndex(AST)]; */
+					c->codeSize += 12;
+					return 1;
+				}
+			}
+			if (strcmp(ASTNode_getName(AST),"time") == 0 ||
+				strcmp(ASTNode_getName(AST),"Time") == 0 ||
+				strcmp(ASTNode_getName(AST),"TIME") == 0) {
+				c->codeSize += 6;
+				return 1;
+				}
+/* OLD VERSION */
+			c->codeSize += 13 + sizeof(void (*)());
+			return 8;
+		case AST_FUNCTION_DELAY: /* not implemented */
+		case AST_LAMBDA: /* not implemented */
+			c->codeSize += 2;
+			return 1;
+		case AST_NAME_TIME:
+			c->codeSize += 6;
+			return 1;
+
+		case AST_CONSTANT_E:
+			c->codeSize += 18;
+			return 2;
+		case AST_CONSTANT_FALSE: /* 0.0 */
+		case AST_CONSTANT_PI: /* pi */
+		case AST_CONSTANT_TRUE: /* 1.0 */
+			c->codeSize += 2;
+			return 1;
+
+		case AST_PLUS: /* add values */
+		case AST_TIMES: /* mult values */
+			save = analyse(c, child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse(c, child(AST,i));
+				if(save1 >= 8)
+					c->codeSize += 12;
+					else c->codeSize += 2;
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_MINUS: /* sub values */
+		    if ( childnum<2 ) {
+				save = analyse(c,child(AST,0));
+				c->codeSize += 2;
+				} else {
+				save = analyse(c,child(AST,0));
+				save1 = analyse(c, child(AST,1));
+				if(save1 >= 8)
+					c->codeSize += 12;
+					else c->codeSize += 2;
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_DIVIDE: /* divide values */
+			save = analyse(c,child(AST,0));
+			save1 = analyse(c, child(AST,1));
+			if(save1 >= 8)
+				c->codeSize += 12;
+				else c->codeSize += 2;
+			if(save < save1+1)
+				save = save1 + 1;
+			return save;
+		case AST_POWER: /* calculates value 1 to the power of value 2 */
+		case AST_FUNCTION_POWER:
+			save = analyse(c,child(AST,0));
+			save1 = analyse(c, child(AST,1));
+			if(save1 >= 8)
+				c->codeSize += 14;
+				else c->codeSize += 6;
+			if(save < save1+1)
+				save = save1 + 1;
+			c->codeSize += 22;
+			if(save < 3)
+				save = 3;
+			return save;
+		case AST_FUNCTION_LOG: /* log_a(b) */
+			save = analyse(c,child(AST,1));
+			save1 = analyse(c, child(AST,0));
+			if(save1 >= 7)
+				c->codeSize += 24;
+				else c->codeSize += 14;
+			if(save < save1+2)
+				save = save1 + 2;
+			return save;
+
+		case AST_FUNCTION: /* user defined function */
+			if (UsrDefFunc == NULL) { /* no function defined */
+				c->codeSize += 2;
+				save = 1;
+				} else {
+				save = 8 + childnum;
+				for (i = 0 ; i < childnum ; i++) { /* compute parameters and store them on the external stack */
+					save1 = analyse(c,child(AST,i));
+					if(save1 + i > save)
+						save = save1 + i;
+					}
+				c->codeSize += 6*childnum;
+				c->codeSize += 15 + 3*sizeof(void (*)());
+				}
+			return save;
+		case AST_FUNCTION_ARCSEC: /* arccsc = arccos(1.0/value) =  pi/2.0 - arcsin(1.0/value) */
+			c->codeSize += 2;
+		case AST_FUNCTION_ARCCOS: /* arccos = pi/2.0 - arcsin  = pi/2.0 - arctan(value / sqrt(1.0-value^2)) */
+		case AST_FUNCTION_EXP: /* exp( value ) */
+			c->codeSize += 8;
+		case AST_FUNCTION_ARCCOT: /* arccot = pi/2.0 - arctan */
+			c->codeSize += 2;
+		case AST_FUNCTION_ARCSIN: /* arcsin */
+			save = analyse(c,child(AST,0));
+			if(save < 3)
+				save = 3;
+			c->codeSize += 12;
+			return save;
+		case AST_FUNCTION_PIECEWISE: /* USEFUL? NOT CORRECTLY IMPLEMENTED! */
+			save = 10;
+			c->codeSize += 14;
+		    for ( i = 0 ; i < childnum-1 ; i = i + 2) {
+				save1 = analyse(c,child(AST,i+1));
+				if(save < save1+1)
+					save = save1+1;
+				save1 = analyse(c,child(AST,i));
+				if(save < save1+2)
+					save = save1+2;
+				c->codeSize += 38;
+				}
+			return save;
+		/* AST_FUNCTION_POWER see AST_POWER */
+		case AST_FUNCTION_ROOT:
+			save = analyse(c,child(AST,1));
+			save1 = analyse(c, child(AST,0));
+			if(save1 >= 8)
+				c->codeSize += 14;
+				else c->codeSize += 6;
+			if(save < save1+1)
+				save = save1 + 1;
+			c->codeSize += 22;
+			if(save < 3)
+				save = 3;
+			return save;
+		case AST_FUNCTION_ABS: /* absolut value */
+		case AST_FUNCTION_COS: /* cosinus */
+		case AST_FUNCTION_SIN: /* sinus */
+			save = analyse(c,child(AST,0));
+			c->codeSize += 2;
+			return save;
+		case AST_FUNCTION_CEILING: /* rounds value to next integer */
+		case AST_FUNCTION_FLOOR: /* rounds value to next integer */
+			c->codeSize += 2;
+		case AST_FUNCTION_ARCCSC: /* arccsc = arcsin(1.0/value) = arctan(1.0 / sqrt(value^2 - 1.0)) */
+			c->codeSize += 8;
+		case AST_FUNCTION_CSC: /* cosec = 1/sinus */
+		case AST_FUNCTION_LN: /* log_e */
+		case AST_FUNCTION_SEC: /* sec = 1/cosinus */
+		case AST_FUNCTION_TAN: /* tangens */
+			c->codeSize += 2;
+		case AST_FUNCTION_ARCTAN: /* arctan */
+		case AST_FUNCTION_COT: /* cotangens = 1/tan */
+			save = analyse(c,child(AST,0));
+			if(save < 2)
+				save = 2;
+			c->codeSize += 4;
+			return save;
+		case AST_FUNCTION_COTH: /* coth = 1/tanh */
+		case AST_FUNCTION_CSCH: /* csch = 1/sinh */
+		case AST_FUNCTION_SECH: /* sech = 1/cosh */
+			c->codeSize += 4;
+		case AST_FUNCTION_ARCCOSH: /* arccos hyperbolic */
+		case AST_FUNCTION_ARCCOTH: /* arccot hyperbolic */
+		case AST_FUNCTION_ARCCSCH: /* arccsc hyperbolic */
+		case AST_FUNCTION_ARCSECH: /* arcsec hyperbolic */
+		case AST_FUNCTION_ARCSINH: /* arcsin hyperbolic */
+		case AST_FUNCTION_ARCTANH: /* arctan hyperbolic */
+		case AST_FUNCTION_COSH: /* cosinus hyperbilic */
+		case AST_FUNCTION_FACTORIAL:
+		case AST_FUNCTION_SINH: /* sinus hyperbolic */
+		case AST_FUNCTION_TANH: /* tangens hyperbolic */
+			save = analyse(c,child(AST,0));
+			if(save < 8)
+				save = 8;
+			c->codeSize += 10 + sizeof(void (*)());
+			return save;
+
+/* logical cases depends from 0.0 and 1.0 as initial values */
+		case AST_LOGICAL_XOR:
+			c->codeSize += (childnum-1)*4;
+		case AST_LOGICAL_AND:
+			save = 9;
+			save1 = analyse(c,child(AST,0));
+			if(save < save1)
+				save = save1;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse(c,child(AST,i));
+				if(save < save1+1)
+					save = save1+1;
+				}
+			c->codeSize += (childnum-1)*12;
+			return save;
+		case AST_LOGICAL_NOT:
+			save = analyse(c,child(AST,0));
+			if(save < 2)
+				save = 2;
+			c->codeSize += 4;
+			return save;
+		case AST_LOGICAL_OR: /* !(AND !values) */
+			c->codeSize += 8;
+		case AST_RELATIONAL_EQ:
+			c->codeSize -= (childnum-1)*2;
+		case AST_RELATIONAL_GEQ:
+		case AST_RELATIONAL_GT:
+		case AST_RELATIONAL_LEQ:
+		case AST_RELATIONAL_LT:
+			save = 7 + childnum;
+			save1 = analyse(c,child(AST,0));
+			if(save < save1)
+				save = save1;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse(c,child(AST,i));
+				if(save < save1 + i)
+					save = save1 + i;
+				}
+			c->codeSize += 16;
+			c->codeSize += (childnum-1)*22;
+			return save;
+
+		default:
+			printf("ERROR: Wrong AST_type\n");
+			c->codeSize += 2;
+			return 1;
+		}
+
+	return 1;
+	}
+
+/* analyses the place needed in the FPU stack - used in operations with more than one parameters (e.g. plus) */
+int analyseFPU (ASTNode_t *AST) { /* returns the number of places it occupies of the FPU stack */
+	
+	int i, childnum, save, save1;
+	ASTNodeType_t type;
+	type = ASTNode_getType(AST);
+	childnum = ASTNode_getNumChildren(AST);
+	
+	switch(type) {
+		case AST_INTEGER:
+		case AST_REAL:
+		case AST_REAL_E:
+		case AST_RATIONAL:
+		case AST_NAME_TIME:
+		case AST_FUNCTION_DELAY: /* not implemented */
+		case AST_LAMBDA: /* not implemented */
+		case AST_CONSTANT_FALSE: /* 0.0 */
+		case AST_CONSTANT_PI: /* pi */
+		case AST_CONSTANT_TRUE: /* 1.0 */
+			return 1;
+		case AST_NAME:
+			if (ASTNode_isSetIndex(AST)) {
+				if (ASTNode_isSetData(AST))
+					/* function call (old version) */
+					return 8;
+				else
+					/* data->value[ASTNode_getIndex(AST)]; */
+					return 1;
+			}
+			if (strcmp(ASTNode_getName(AST),"time") == 0 ||
+				strcmp(ASTNode_getName(AST),"Time") == 0 ||
+				strcmp(ASTNode_getName(AST),"TIME") == 0) {
+				return 1;
+				}
+/* OLD VERSION */
+			return 8;
+		case AST_CONSTANT_E:
+			return 2;
+
+		case AST_PLUS: /* add values */
+		case AST_TIMES: /* mult values */
+			save = analyseFPU(child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyseFPU(child(AST,i));
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_MINUS: /* sub values */
+		    if ( childnum<2 ) {
+				save = analyseFPU(child(AST,0));
+				} else {
+				save = analyseFPU(child(AST,0));
+				save1 = analyseFPU(child(AST,1));
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_DIVIDE: /* divide values */
+			save = analyseFPU(child(AST,0));
+			save1 = analyseFPU(child(AST,1));
+			if(save < save1+1)
+				save = save1 + 1;
+			return save;
+		case AST_POWER: /* calculates value 1 to the power of value 2 */
+		case AST_FUNCTION_POWER:
+			save = analyseFPU(child(AST,0));
+			save1 = analyseFPU(child(AST,1));
+			if(save < save1+1)
+				save = save1 + 1;
+			if(save < 3)
+				save = 3;
+			return save;
+		case AST_FUNCTION_LOG: /* log_a(b) */
+			save = analyseFPU(child(AST,1));
+			save1 = analyseFPU(child(AST,0));
+			if(save < save1+2)
+				save = save1 + 2;
+			return save;
+
+		case AST_FUNCTION: /* user defined function */
+			if (UsrDefFunc == NULL) { /* no function defined */
+				save = 1;
+				} else {
+				save = 8 + childnum;
+				for (i = 0 ; i < childnum ; i++) { /* compute parameters and store them on the external stack */
+					save1 = analyseFPU(child(AST,i));
+					if(save1 + i > save)
+						save = save1 + i;
+					}
+				}
+			return save;
+		case AST_FUNCTION_ARCSEC: /* arccsc = arccos(1.0/value) =  pi/2.0 - arcsin(1.0/value) */
+		case AST_FUNCTION_ARCCOS: /* arccos = pi/2.0 - arcsin  = pi/2.0 - arctan(value / sqrt(1.0-value^2)) */
+		case AST_FUNCTION_EXP: /* exp( value ) */
+		case AST_FUNCTION_ARCCOT: /* arccot = pi/2.0 - arctan */
+		case AST_FUNCTION_ARCSIN: /* arcsin */
+			save = analyseFPU(child(AST,0));
+			if(save < 3)
+				save = 3;
+			return save;
+		case AST_FUNCTION_ABS: /* absolut value */
+		case AST_FUNCTION_COS: /* cosinus */
+		case AST_FUNCTION_SIN: /* sinus */
+			return analyseFPU(child(AST,0));
+		case AST_FUNCTION_PIECEWISE: /* USEFUL? NOT CORRECTLY IMPLEMENTED! */
+			save = 10;
+		    for ( i = 0 ; i < childnum-1 ; i = i + 2) {
+				save1 = analyseFPU(child(AST,i+1));
+				if(save < save1+1)
+					save = save1+1;
+				save1 = analyseFPU(child(AST,i));
+				if(save < save1+2)
+					save = save1+2;
+				}
+			return save;
+		/* AST_FUNCTION_POWER see AST_POWER */
+		case AST_FUNCTION_ROOT:
+			save = analyseFPU(child(AST,1));
+			save1 = analyseFPU(child(AST,0));
+			if(save < save1+1)
+				save = save1 + 1;
+			if(save < 3)
+				save = 3;
+			return save;
+		case AST_FUNCTION_ARCCSC: /* arccsc = arcsin(1.0/value) = arctan(1.0 / sqrt(value^2 - 1.0)) */
+		case AST_FUNCTION_CSC: /* cosec = 1/sinus */
+		case AST_FUNCTION_LN: /* log_e */
+		case AST_FUNCTION_SEC: /* sec = 1/cosinus */
+		case AST_FUNCTION_ARCTAN: /* arctan */
+		case AST_FUNCTION_CEILING: /* rounds value to next integer */
+		case AST_FUNCTION_COT: /* cotangens = 1/tan */
+		case AST_FUNCTION_FLOOR: /* rounds value to next lower integer */
+		case AST_FUNCTION_TAN: /* tangens */
+			save = analyseFPU(child(AST,0));
+			if(save < 2)
+				save = 2;
+			return save;
+		case AST_FUNCTION_COTH: /* coth = 1/tanh */
+		case AST_FUNCTION_CSCH: /* csch = 1/sinh */
+		case AST_FUNCTION_SECH: /* sech = 1/cosh */
+		case AST_FUNCTION_ARCCOSH: /* arccos hyperbolic */
+		case AST_FUNCTION_ARCCOTH: /* arccot hyperbolic */
+		case AST_FUNCTION_ARCCSCH: /* arccsc hyperbolic */
+		case AST_FUNCTION_ARCSECH: /* arcsec hyperbolic */
+		case AST_FUNCTION_ARCSINH: /* arcsin hyperbolic */
+		case AST_FUNCTION_ARCTANH: /* arctan hyperbolic */
+		case AST_FUNCTION_COSH: /* cosinus hyperbilic */
+		case AST_FUNCTION_FACTORIAL:
+		case AST_FUNCTION_SINH: /* sinus hyperbolic */
+		case AST_FUNCTION_TANH: /* tangens hyperbolic */
+			save = analyseFPU(child(AST,0));
+			if(save < 8)
+				save = 8;
+			return save;
+
+/* logical cases depends from 0.0 and 1.0 as initial values */
+		case AST_LOGICAL_XOR:
+		case AST_LOGICAL_AND:
+			save = 9;
+			save1 = analyseFPU(child(AST,0));
+			if(save < save1)
+				save = save1;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyseFPU(child(AST,i));
+				if(save < save1+1)
+					save = save1+1;
+				}
+			return save;
+		case AST_LOGICAL_NOT:
+			save = analyseFPU(child(AST,0));
+			if(save < 2)
+				save = 2;
+			return save;
+		case AST_LOGICAL_OR: /* !(AND !values) */
+		case AST_RELATIONAL_EQ:
+		case AST_RELATIONAL_GEQ:
+		case AST_RELATIONAL_GT:
+		case AST_RELATIONAL_LEQ:
+		case AST_RELATIONAL_LT:
+			save = 7 + childnum;
+			save1 = analyseFPU(child(AST,0));
+			if(save < save1)
+				save = save1;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyseFPU(child(AST,i));
+				if(save < save1 + i)
+					save = save1 + i;
+				}
+			return save;
+
+		default:
+			printf("ERROR: Wrong AST_type\n");
+			return 1;
+		}
+
+	return 1;
+	}
+
+/* analyses the abstract syntax tree according to code and stack size */
+int analyse64 (directCode_t *c, ASTNode_t *AST) { /* returns the number of places it occupies of the FPU stack */
+	
+	int i, childnum, save, save1;
+	ASTNodeType_t type;
+	type = ASTNode_getType(AST);
+	childnum = ASTNode_getNumChildren(AST);
+	
+	switch(type) {
+		case AST_INTEGER:
+		case AST_REAL:
+		case AST_REAL_E:
+		case AST_RATIONAL:
+			c->codeSize += 19;
+			return 1;
+		case AST_NAME:
+			if (ASTNode_isSetIndex(AST)) {
+				if (ASTNode_isSetData(AST)) {
+					/* function call (old version) */
+					c->codeSize += 38;
+					return 8;
+				}
+				else
+				{
+					/* data->value[ASTNode_getIndex(AST)]; */
+					c->codeSize += 28;
+					return 1;
+				}
+			}
+			if (strcmp(ASTNode_getName(AST),"time") == 0 ||
+				strcmp(ASTNode_getName(AST),"Time") == 0 ||
+				strcmp(ASTNode_getName(AST),"TIME") == 0) {
+				c->codeSize += 21;
+				return 1;
+				}
+/* OLD VERSION */
+			c->codeSize += 38;
+			return 8;
+		case AST_FUNCTION_DELAY: /* not implemented */
+		case AST_LAMBDA: /* not implemented */
+		case AST_CONSTANT_FALSE: /* 0.0 */
+			c->codeSize += 4;
+			return 1;
+		case AST_NAME_TIME:
+			c->codeSize += 21;
+			return 1;
+
+		case AST_CONSTANT_E:
+		case AST_CONSTANT_PI: /* pi */
+			c->codeSize += 19;
+			return 1;
+		case AST_CONSTANT_TRUE: /* 1.0 */
+			c->codeSize += 21;
+			return 2;
+
+		case AST_PLUS: /* add values */
+		case AST_TIMES: /* mult values */
+			save = analyse64(c, child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse64(c, child(AST,i));
+				if(save1 >= 8)
+					c->codeSize += 32;
+					else
+					c->codeSize += 8;
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_MINUS: /* sub values */
+		    if ( childnum<2 ) {
+				save = analyse64(c,child(AST,0));
+				c->codeSize += 12;
+				if(save < 2)
+					save = 2;
+				} else {
+				save = analyse64(c, child(AST,1));
+				save1 = analyse64(c, child(AST,0));
+				if(save1 >= 8)
+					c->codeSize += 32;
+					else
+					c->codeSize += 8;
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_DIVIDE: /* divide values */
+			save = analyse64(c,child(AST,1));
+			save1 = analyse64(c, child(AST,0));
+			if(save1 >= 8)
+				c->codeSize += 32;
+				else
+				c->codeSize += 8;
+			if(save < save1+1)
+				save = save1 + 1;
+			return save;
+		case AST_POWER: /* calculates value 1 to the power of value 2 */
+		case AST_FUNCTION_POWER:
+		case AST_FUNCTION_ROOT:
+		case AST_FUNCTION_LOG: /* log_a(b) */
+			save1 = analyse64(c,child(AST,0));
+			save = analyse64(c, child(AST,1));
+			if(save1 >= 8)
+				c->codeSize += 40;
+				else {
+				c->codeSize += 16;
+				if(save1 > 1)
+					c->codeSize += 4;
+				}
+			if(save < save1+1)
+				save = save1 + 1;
+			if (save < 8)
+				save = 8;
+			return save;
+
+		case AST_FUNCTION: /* user defined function */
+			if (UsrDefFunc == NULL) { /* no function defined */
+				c->codeSize += 4;
+				save = 1;
+				} else {
+				save = 8;
+				for (i = 0 ; i < childnum ; i++) { /* compute parameters and store them on the external stack */
+					save1 = analyse64(c,child(AST,i));
+					if(save1 + i > save)
+						save = save1 + i;
+					}
+				if(save < childnum + 8)
+					save = childnum + 8;
+				c->codeSize += 16*childnum;
+				c->codeSize += 61;
+				}
+			return save;
+		case AST_FUNCTION_PIECEWISE: /* USEFUL? NOT CORRECTLY IMPLEMENTED! */
+			save = 10;
+			c->codeSize += 36;
+		    for ( i = 0 ; i < childnum-1 ; i = i + 2) {
+				save1 = analyse64(c,child(AST,i+1));
+				if(save < save1+1)
+					save = save1+1;
+				save1 = analyse64(c,child(AST,i));
+				if(save < save1+2)
+					save = save1+2;
+				c->codeSize += 85;
+				}
+			return save;
+
+		case AST_FUNCTION_ABS: /* absolut value */
+		case AST_FUNCTION_ARCCOS: /* arccos = pi/2.0 - arcsin  = pi/2.0 - arctan(value / sqrt(1.0-value^2)) */
+		case AST_FUNCTION_ARCCOSH: /* arccos hyperbolic */
+		case AST_FUNCTION_ARCCOT: /* arccot = pi/2.0 - arctan */
+		case AST_FUNCTION_ARCCOTH: /* arccot hyperbolic */
+		case AST_FUNCTION_ARCCSC: /* arccsc = arcsin(1.0/value) */
+		case AST_FUNCTION_ARCCSCH: /* arccsc hyperbolic */
+		case AST_FUNCTION_ARCSEC: /* arccsc = arccos(1.0/value) =  pi/2.0 - arcsin(1.0/value) */
+		case AST_FUNCTION_ARCSECH: /* arcsec hyperbolic */
+		case AST_FUNCTION_ARCSIN: /* arcsin */
+		case AST_FUNCTION_ARCSINH: /* arcsin hyperbolic */
+		case AST_FUNCTION_ARCTAN: /* arctan */
+		case AST_FUNCTION_ARCTANH: /* arctan hyperbolic */
+		case AST_FUNCTION_CEILING: /* rounds value to next integer */
+		case AST_FUNCTION_COS: /* cosinus */
+		case AST_FUNCTION_COSH: /* cosinus hyperbilic */
+		case AST_FUNCTION_COT: /* cotangens = 1/tan */
+		case AST_FUNCTION_COTH: /* coth = 1/tanh */
+		case AST_FUNCTION_CSC: /* cosec = 1/sinus */
+		case AST_FUNCTION_CSCH: /* csch = 1/sinh */
+		case AST_FUNCTION_EXP: /* exp( value ) */
+		case AST_FUNCTION_FACTORIAL:
+		case AST_FUNCTION_FLOOR: /* rounds value to next integer */
+		case AST_FUNCTION_LN: /* log_e */
+		case AST_FUNCTION_SEC: /* sec = 1/cosinus */
+		case AST_FUNCTION_SECH: /* sech = 1/cosh */
+		case AST_FUNCTION_SIN: /* sinus */
+		case AST_FUNCTION_SINH: /* sinus hyperbolic */
+		case AST_FUNCTION_TAN: /* tangens */
+		case AST_FUNCTION_TANH: /* tangens hyperbolic */
+			save = analyse64(c,child(AST,0));
+			c->codeSize += 12;
+			if (save < 8)
+				save = 8;
+			return save;
+
+/* logical cases depends from 0.0 and 1.0 as initial values */
+		case AST_LOGICAL_XOR:
+		case AST_LOGICAL_AND:
+		case AST_LOGICAL_OR:
+			save = analyse64(c,child(AST,0));
+			if(save < 9)
+				save = 9;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse64(c,child(AST,i));
+				if(save < save1+1)
+					save = save1+1;
+				}
+			c->codeSize += (childnum-1)*32;
+			return save;
+		case AST_LOGICAL_NOT:
+			save = analyse64(c,child(AST,0));
+			c->codeSize += 27;
+			return save;
+		case AST_RELATIONAL_EQ:
+			c->codeSize -= (childnum-1)*4;
+		case AST_RELATIONAL_GEQ:
+		case AST_RELATIONAL_GT:
+		case AST_RELATIONAL_LEQ:
+		case AST_RELATIONAL_LT:
+			save = analyse64(c,child(AST,0));
+			if(save < 8 + childnum)
+				save = 8 + childnum;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse64(c,child(AST,i));
+				if(save < save1 + i)
+					save = save1 + i;
+				}
+			c->codeSize += 21;
+			c->codeSize += (childnum-1)*41;
+			return save;
+
+		default:
+			printf("ERROR: Wrong AST_type\n");
+			c->codeSize += 4;
+			return 1;
+		}
+
+	return 0;
+	}
+
+/* analyse64 the need of external Stack places */
+static int analyse64Stack (ASTNode_t *AST) {
+	
+	int i, childnum, save, save1;
+	ASTNodeType_t type;
+	type = ASTNode_getType(AST);
+	childnum = ASTNode_getNumChildren(AST);
+	
+	switch(type) {
+		case AST_INTEGER:
+		case AST_REAL:
+		case AST_REAL_E:
+		case AST_RATIONAL:
+			return 1;
+		case AST_NAME:
+			if (ASTNode_isSetIndex(AST)) {
+				if (ASTNode_isSetData(AST)) {
+					/* function call (old version) */
+					return 8;
+				}
+				else
+				{
+					/* data->value[ASTNode_getIndex(AST)]; */
+					return 1;
+				}
+			}
+			if (strcmp(ASTNode_getName(AST),"time") == 0 ||
+				strcmp(ASTNode_getName(AST),"Time") == 0 ||
+				strcmp(ASTNode_getName(AST),"TIME") == 0) {
+				return 1;
+				}
+/* OLD VERSION */
+			return 8;
+		case AST_FUNCTION_DELAY: /* not implemented */
+		case AST_LAMBDA: /* not implemented */
+		case AST_CONSTANT_FALSE: /* 0.0 */
+		case AST_NAME_TIME:
+		case AST_CONSTANT_E:
+		case AST_CONSTANT_PI: /* pi */
+			return 1;
+		case AST_CONSTANT_TRUE: /* 1.0 */
+			return 2;
+
+		case AST_PLUS: /* add values */
+		case AST_TIMES: /* mult values */
+			save = analyse64Stack(child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse64Stack(child(AST,i));
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_MINUS: /* sub values */
+		    if ( childnum<2 ) {
+				save = analyse64Stack(child(AST,0));
+				if(save < 2)
+					save = 2;
+				} else {
+				save = analyse64Stack(child(AST,1));
+				save1 = analyse64Stack(child(AST,0));
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_DIVIDE: /* divide values */
+			save = analyse64Stack(child(AST,1));
+			save1 = analyse64Stack(child(AST,0));
+			if(save < save1+1)
+				save = save1 + 1;
+			return save;
+		case AST_POWER: /* calculates value 1 to the power of value 2 */
+		case AST_FUNCTION_POWER:
+		case AST_FUNCTION_ROOT:
+		case AST_FUNCTION_LOG: /* log_a(b) */
+			save1 = analyse64Stack(child(AST,0));
+			save = analyse64Stack(child(AST,1));
+			if(save < save1+1)
+				save = save1 + 1;
+			if (save < 8)
+				save = 8;
+			return save;
+
+		case AST_FUNCTION: /* user defined function */
+			if (UsrDefFunc == NULL) { /* no function defined */
+				save = 1;
+				} else {
+				save = 8;
+				for (i = 0 ; i < childnum ; i++) { /* compute parameters and store them on the external stack */
+					save1 = analyse64Stack(child(AST,i));
+					if(save1 + i > save)
+						save = save1 + i;
+					}
+				if(save < childnum + 8)
+					save = childnum + 8;
+				}
+			return save;
+		case AST_FUNCTION_PIECEWISE: /* USEFUL? NOT CORRECTLY IMPLEMENTED! */
+			save = 10;
+		    for ( i = 0 ; i < childnum-1 ; i = i + 2) {
+				save1 = analyse64Stack(child(AST,i+1));
+				if(save < save1+1)
+					save = save1+1;
+				save1 = analyse64Stack(child(AST,i));
+				if(save < save1+2)
+					save = save1+2;
+				}
+			return save;
+
+		case AST_FUNCTION_ABS: /* absolut value */
+		case AST_FUNCTION_ARCCOS: /* arccos = pi/2.0 - arcsin  = pi/2.0 - arctan(value / sqrt(1.0-value^2)) */
+		case AST_FUNCTION_ARCCOSH: /* arccos hyperbolic */
+		case AST_FUNCTION_ARCCOT: /* arccot = pi/2.0 - arctan */
+		case AST_FUNCTION_ARCCOTH: /* arccot hyperbolic */
+		case AST_FUNCTION_ARCCSC: /* arccsc = arcsin(1.0/value) */
+		case AST_FUNCTION_ARCCSCH: /* arccsc hyperbolic */
+		case AST_FUNCTION_ARCSEC: /* arccsc = arccos(1.0/value) =  pi/2.0 - arcsin(1.0/value) */
+		case AST_FUNCTION_ARCSECH: /* arcsec hyperbolic */
+		case AST_FUNCTION_ARCSIN: /* arcsin */
+		case AST_FUNCTION_ARCSINH: /* arcsin hyperbolic */
+		case AST_FUNCTION_ARCTAN: /* arctan */
+		case AST_FUNCTION_ARCTANH: /* arctan hyperbolic */
+		case AST_FUNCTION_CEILING: /* rounds value to next integer */
+		case AST_FUNCTION_COS: /* cosinus */
+		case AST_FUNCTION_COSH: /* cosinus hyperbilic */
+		case AST_FUNCTION_COT: /* cotangens = 1/tan */
+		case AST_FUNCTION_COTH: /* coth = 1/tanh */
+		case AST_FUNCTION_CSC: /* cosec = 1/sinus */
+		case AST_FUNCTION_CSCH: /* csch = 1/sinh */
+		case AST_FUNCTION_EXP: /* exp( value ) */
+		case AST_FUNCTION_FACTORIAL:
+		case AST_FUNCTION_FLOOR: /* rounds value to next integer */
+		case AST_FUNCTION_LN: /* log_e */
+		case AST_FUNCTION_SEC: /* sec = 1/cosinus */
+		case AST_FUNCTION_SECH: /* sech = 1/cosh */
+		case AST_FUNCTION_SIN: /* sinus */
+		case AST_FUNCTION_SINH: /* sinus hyperbolic */
+		case AST_FUNCTION_TAN: /* tangens */
+		case AST_FUNCTION_TANH: /* tangens hyperbolic */
+			save = analyse64Stack(child(AST,0));
+			if (save < 8)
+				save = 8;
+			return save;
+
+/* logical cases depends from 0.0 and 1.0 as initial values */
+		case AST_LOGICAL_XOR:
+		case AST_LOGICAL_AND:
+		case AST_LOGICAL_OR:
+			save = analyse64Stack(child(AST,0));
+			if(save < 9)
+				save = 9;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse64Stack(child(AST,i));
+				if(save < save1+1)
+					save = save1+1;
+				}
+			return save;
+		case AST_LOGICAL_NOT:
+			save = analyse64Stack(child(AST,0));
+			if(save < 2)
+				save = 2;
+			return save;
+		case AST_RELATIONAL_EQ:
+		case AST_RELATIONAL_GEQ:
+		case AST_RELATIONAL_GT:
+		case AST_RELATIONAL_LEQ:
+		case AST_RELATIONAL_LT:
+			save = analyse64Stack(child(AST,0));
+			if(save < 8 + childnum)
+				save = 8 + childnum;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse64Stack(child(AST,i));
+				if(save < save1 + i)
+					save = save1 + i;
+				}
+			return save;
+
+		default:
+			printf("ERROR: Wrong AST_type\n");
+			return 1;
+		}
+
+	return 0;
+	}
+
+/* generates the basic elements of the function - CALL THIS FUNCTION TO GENERATE THE FUNCTION */
+void generateFunction(directCode_t*code, ASTNode_t *AST) {
+
+	if(sizeof(void (*)()) == 4) {
+		initCode(code, AST); /* dynamic allocation of necessary memory */
+
+		addByte(code, 0x55); /* PUSH EBP */
+		addByte(code, 0x89); addByte(code, 0xe5); /* MOV EBP, ESP */
+		generate(code, AST);
+		addByte(code, 0x5d); /* POP EBP */
+		addByte(code, 0xc3); /* RETN */
+		}
+		else
+		{
+		initCode64(code, AST); /* dynamic allocation of necessary memory */
+		
+		addByte(code, 0x55); /* PUSH EBP */
+		addByte(code, 0x48); addByte(code, 0x89); addByte(code, 0xe5); /* MOV EBP, ESP */
+		addByte(code, 0x48); addByte(code, 0xb8); /* MOV const RAX */
+		addAddress(code,(long long)code->temp);
+		addByte(code, 0x48); addByte(code, 0x89); addByte(code, 0x38); /* MOV RDI [RAX] */
+		/*	addByte(code, 0x9b); addByte(code, 0xdb); addByte(code, 0xe3); *//* FINIT */
+		generate64(code, AST);
+		addByte(code, 0xc9); /* LEAVE */
+		addByte(code, 0xc3); /* RETN */
+		}
+	}
+
+
+/* disallocates the functions arrays */
+void destructFunction(directCode_t*code) {
+
+	code->codeSize = 0;
+	code->FPUstackSize = 0;
+	code->storageSize = 0;
+	code->codePosition = 0;
+	code->FPUstackPosition = 0;
+	code->storagePosition = 0;
+	free(code->storage);
+	free(code->FPUstack);
+	free(code->temp); /*!!! TODO : what is code->temp and should
+		it be free'd or not ?*/
+#ifdef _WIN32
+	if(sizeof(void (*)()) == 4)
+	  free(code->prog);
+#endif
+	}
+
+#endif
diff --git a/src/charBuffer.c b/src/charBuffer.c
new file mode 100644
index 0000000..b403933
--- /dev/null
+++ b/src/charBuffer.c
@@ -0,0 +1,125 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "sbmlsolver/charBuffer.h"
+
+#include "private/error.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/** a buffer of unbounded length */
+struct charBuffer
+{
+  char *s;
+  char *p;
+  size_t length;
+};
+
+static void *realloc_or_die(void *ptr, size_t size)
+{
+  void *p = realloc(ptr, size);
+  if (!p) report_error_and_die("failed to realloc");
+  return p;
+}
+
+/** create an unbounded buffer */
+charBuffer_t *CharBuffer_create(void)
+{
+  charBuffer_t *buf;
+
+  buf = calloc(1, sizeof(*buf));
+  if (!buf) report_error_and_die("failed to calloc");
+  return buf;
+}
+
+/** free an unbounded buffer */
+void CharBuffer_free(charBuffer_t *buffer)
+{
+  if (!buffer) return;
+  free(buffer->s);
+  free(buffer->p);
+  free(buffer);
+}
+
+/** add the given string to the end of the unbounded buffer */
+void CharBuffer_append(charBuffer_t *buffer, const char *s)
+{
+  size_t len;
+  char *p;
+
+  if (!s) {
+    /* nothing to do */
+    return;
+  }
+  len = strlen(s);
+  if (len == 0) return;
+  p = realloc_or_die(buffer->p, buffer->length + len);
+  memcpy(p + buffer->length, s, len);
+  buffer->p = p;
+  buffer->length += len;
+}
+
+/** add the given integer in decimal string form to the end of the given unbounded buffer */
+void CharBuffer_appendInt(charBuffer_t *buffer, int i)
+{
+  int len;
+  char *p;
+
+  p = realloc_or_die(buffer->p, buffer->length + 32);
+  len = sprintf(p + buffer->length, "%d", i);
+  buffer->p = p;
+  buffer->length += len;
+}
+
+/** add the given double in scientific string form to the end of the given unbounded buffer */
+void CharBuffer_appendDouble(charBuffer_t *buffer, double f)
+{
+  int len;
+  char *p;
+
+  p = realloc_or_die(buffer->p, buffer->length + 32);
+  len = sprintf(p + buffer->length, "%g", f);
+  buffer->p = p;
+  buffer->length += len;
+}
+
+/** return the string contained in the buffer.  This string must not be freed */
+const char *CharBuffer_getBuffer(charBuffer_t *buffer)
+{
+  char *s;
+
+  if (!buffer->p) return "";
+  s = realloc_or_die(buffer->s, buffer->length + 1);
+  memcpy(s, buffer->p, buffer->length);
+  s[buffer->length] = '\0';
+  buffer->s = s;
+  return buffer->s;
+}
diff --git a/src/compiler.c b/src/compiler.c
new file mode 100644
index 0000000..cc32283
--- /dev/null
+++ b/src/compiler.c
@@ -0,0 +1,509 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-10-16 17:55:16 raim>
+  $Id: compiler.c,v 1.32 2009/03/27 15:54:55 fbergmann Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ *    Christoph Flamm, Rainer Machne
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include "sbmlsolver/compiler.h"
+#include "sbmlsolver/solverError.h"
+#include "sbmlsolver/processAST.h"
+
+#ifdef _WIN32
+
+#include <windows.h>
+#include <tchar.h>
+
+#else /* default linux */
+
+#include "config.h"
+#include "sbmlsolver/util.h"
+#include <dlfcn.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#endif /* end _WIN32 */
+
+
+#ifdef _WIN32
+
+compiled_code_t *Compiler_compile_win32_tcc(const char *sourceCode)
+{
+  compiled_code_t *code = NULL;
+  char tempDir[MAX_PATH+1];
+  TCHAR tccFileName[MAX_PATH]; 
+  int i;
+  int result;
+  char *cFileName;
+  char *dllFileName;
+  char *outFileName;
+  FILE *cFile;
+  char command[4*MAX_PATH];
+  char *dllFileNameDot ;
+  HMODULE dllHandle, solverHandle ;
+#ifdef _DEBUG
+  char *solverFileName = "SBML_odeSolverD.dll";
+#else
+  char *solverFileName = "SBML_odeSolver.dll";
+#endif
+
+  /*printf("Source code:\n%s\n", sourceCode);*/
+
+  /* avoid creating files in current directory if environment
+     variables not set */
+  if (!GetTempPath(MAX_PATH+1, tempDir))
+  {
+    SolverError_storeLastWin32Error("Trying to find out location of system temp directory");
+    return NULL;
+  }
+  
+  solverHandle = GetModuleHandle(solverFileName);
+    
+  if (!solverHandle)
+  {
+    SolverError_storeLastWin32Error("Trying to get handle of solver dll");
+    return NULL;
+  }
+  
+  /* compute tcc path from the path to this dll */
+  if( !GetModuleFileName( solverHandle, tccFileName, MAX_PATH ) )
+  {
+    SolverError_storeLastWin32Error("Trying find location of the soslib dll");
+    return NULL ;
+  }
+
+  for (i = strlen(tccFileName); i != -1 && tccFileName[i] != '\\'; i--);
+
+  tccFileName[i + 1] = '\0';
+  strcat(tccFileName, "tcc\\tcc.exe");
+
+  cFileName = tempnam(tempDir, "temp_soslib_c_file");
+  dllFileName = tempnam(tempDir, "temp_soslib_dll");
+  outFileName = tempnam(tempDir, "temp_soslib_compilation_output");
+  cFile = fopen(cFileName, "w");
+
+  if (!cFile)
+  {
+    SolverError_storeLastWin32Error("Unable to open C source file for write");
+    return NULL;
+  }
+
+  fprintf(cFile, "%s", sourceCode);
+  fclose(cFile);
+
+  sprintf(command, "%s -o %s -shared %s > %s",
+	  tccFileName, dllFileName, cFileName, outFileName);
+
+  /*printf("Command:\n%s\n", command);*/
+
+  result = system(command);
+
+  if (result == -1)
+  {
+    SolverError_storeLastWin32Error("Whilst running compile command");
+    remove(cFileName);
+    free(cFileName);
+    return NULL ;
+  }
+  else if (result != 0)
+  {
+    SolverError_error(ERROR_ERROR_TYPE, SOLVER_ERROR_COMPILATION_FAILED,
+		      "Compile command failed - returned %d", result);
+    remove(cFileName);
+    free(cFileName);
+    return NULL ;
+  }
+  
+  remove(cFileName);
+  free(cFileName);
+  remove(outFileName);
+  free(outFileName);
+
+  ASSIGN_NEW_MEMORY_BLOCK(dllFileNameDot, (strlen(dllFileName) +2), char, NULL);
+  
+  strcpy(dllFileNameDot, dllFileName);
+  strcat(dllFileNameDot, ".");
+
+  dllHandle = LoadLibrary(dllFileNameDot);
+  free(dllFileNameDot);
+
+  if (!dllHandle)
+  {
+    SolverError_storeLastWin32Error("While loading compiled dll");
+    return NULL;
+  }
+  
+  ASSIGN_NEW_MEMORY(code, compiled_code_t, NULL);
+
+  code->dllHandle = dllHandle ;
+  code->dllFileName = dllFileName;
+
+  return (code);
+}
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) /* AIX use xlc_r */
+
+/**
+   Returns a pointer to code that is compiled from the given source code
+*/
+compiled_code_t *Compiler_compile_with_xlc(const char *sourceCode)
+{
+  compiled_code_t *code = NULL;
+  char gccFileName[MAX_PATH+1] = "xlC_r"; 
+  int result;
+  char *tmpFileName = NULL;
+  char *cFileName   = NULL;
+  char *dllFileName = NULL;
+  char *oFileName   = NULL;
+  FILE *cFile;
+  char command[4*MAX_PATH];
+  void *dllHandle;
+  
+  /* generate a unique temprorary filename template */
+  ASSIGN_NEW_MEMORY_BLOCK(tmpFileName, (MAX_PATH+1), char, NULL);
+  tmpFileName = tmpnam(tmpFileName);
+  
+#ifdef _DEBUG
+  Warn(NULL,"Temporary File Name is %s\n", tmpFileName);
+#endif
+  
+  /* generate needed file names from the template*/
+  ASSIGN_NEW_MEMORY_BLOCK(cFileName, (strlen(tmpFileName)+3), char, NULL);
+  strcpy(cFileName, tmpFileName);
+  strcat(cFileName, ".c");
+  ASSIGN_NEW_MEMORY_BLOCK(oFileName, (strlen(tmpFileName)+3), char, NULL);
+  strcpy(oFileName, tmpFileName);
+  strcat(oFileName, ".o");  
+  ASSIGN_NEW_MEMORY_BLOCK(dllFileName,
+			  (strlen(tmpFileName)+strlen(SHAREDLIBEXT)+1),
+			  char, NULL);
+  strcpy(dllFileName, tmpFileName);
+  strcat(dllFileName, SHAREDLIBEXT);
+  
+  /* open file and dump source code to it */
+  cFile = fopen(cFileName, "w");
+  
+  if (!cFile)
+  {
+    SolverError_error(WARNING_ERROR_TYPE, SOLVER_ERROR_OPEN_FILE,
+		      "Could not open file %s - %s!",
+		      cFileName, strerror(errno));
+    free(cFileName);
+    free(oFileName);
+    free(dllFileName);
+    return NULL;
+  }
+  
+  fprintf(cFile, "%s", sourceCode);
+  fclose(cFile);
+  
+  /* construct command for compiling */
+  sprintf(command, "%s -I%s -I%s -I%s -I../src -G -o %s %s -L../src -L%s -L%s -L%s -lODES -lsbml -lm",
+	  gccFileName,
+	  SOSLIB_CPPFLAGS, /* changed order: SOSLIB first */
+	  SUNDIALS_CPPFLAGS,
+	  SBML_CPPFLAGS,
+	  dllFileName,
+	  cFileName,
+	  SUNDIALS_LDFLAGS,
+	  SBML_LDFLAGS,
+	  SOSLIB_LDFLAGS);
+  
+#ifdef _DEBUG
+  Warn(NULL, "Command: %s\n", command);
+#endif
+  
+  /* compile source to shared library */
+  result = system(command);
+  
+  /* clean up compilation intermediates */
+  free(tmpFileName);
+  remove(cFileName);
+  free(cFileName);
+  remove(oFileName);
+  free(oFileName);
+
+  /* handle possible errors */
+  if (result != 0)
+  {
+    if (result == -1)
+      SolverError_error(WARNING_ERROR_TYPE, SOLVER_ERROR_GCC_FORK_FAILED,
+			"forking xlc compiler subprocess failed!");
+    else 
+      SolverError_error(WARNING_ERROR_TYPE, SOLVER_ERROR_COMPILATION_FAILED,
+			"compiling failed with errno %d - %s!",
+			result, strerror(result));    
+    return (NULL);
+  }
+  
+  
+  /* load shared library */
+  dllHandle = dlopen(dllFileName, RTLD_LAZY);
+  if (dllHandle == NULL)
+  {
+    SolverError_error(WARNING_ERROR_TYPE, SOLVER_ERROR_DL_LOAD_FAILED,
+		      "loading shared library %s failed %d - %s!",
+		      dllFileName, errno, strerror(errno));
+    /* SolverError_dumpAndClearErrors(); */
+    return (NULL);
+  }
+  
+  ASSIGN_NEW_MEMORY(code, compiled_code_t, NULL);
+  code->dllHandle   = dllHandle;
+  code->dllFileName = dllFileName;
+  
+  return (code);
+}
+
+#else /* default case is compile with gcc */
+
+/**
+   Returns a pointer to code that is compiled from the given source code
+*/
+compiled_code_t *Compiler_compile_with_gcc(const char *sourceCode)
+{
+  compiled_code_t *code = NULL;
+  char gccFileName[MAX_PATH+1] = "g++";
+  int result;
+  char *tmpFileName = NULL;
+  char *cFileName   = NULL;
+  char *dllFileName = NULL;
+  char *oFileName   = NULL;
+  FILE *cFile;
+  char command[4*MAX_PATH];
+  void *dllHandle;
+  
+  /* generate a unique temprorary filename template */
+  ASSIGN_NEW_MEMORY_BLOCK(tmpFileName, (MAX_PATH+1), char, NULL);
+  tmpFileName = tmpnam(tmpFileName);
+  
+#ifdef _DEBUG
+  Warn(NULL,"Temporary File Name is %s\n", tmpFileName);
+#endif
+  
+  /* generate needed file names from the template*/
+  ASSIGN_NEW_MEMORY_BLOCK(cFileName, (strlen(tmpFileName)+3), char, NULL);
+  strcpy(cFileName, tmpFileName);
+  strcat(cFileName, ".c");
+  ASSIGN_NEW_MEMORY_BLOCK(oFileName, (strlen(tmpFileName)+3), char, NULL);
+  strcpy(oFileName, tmpFileName);
+  strcat(oFileName, ".o");  
+  ASSIGN_NEW_MEMORY_BLOCK(dllFileName,
+			  (strlen(tmpFileName)+strlen(SHAREDLIBEXT)+1),
+			  char, NULL);
+  strcpy(dllFileName, tmpFileName);
+  strcat(dllFileName, SHAREDLIBEXT);
+
+  /* open file and dump source code to it */
+  cFile = fopen(cFileName, "w");
+  
+  if (!cFile)
+  {
+    SolverError_error(WARNING_ERROR_TYPE, SOLVER_ERROR_OPEN_FILE,
+		      "Could not open file %s - %s!",
+		      cFileName, strerror(errno));  
+    free(cFileName);
+    free(oFileName);
+    free(dllFileName);
+    return NULL;
+  }
+
+  fprintf(cFile, "%s", sourceCode);
+  fclose(cFile);
+
+  /* construct command for compiling */
+#if defined (__APPLE__) && defined (__MACH__)
+  sprintf(command,
+	  "%s -I%s -I%s -I%s -I../src -pipe -O -dynamiclib -fPIC -o %s %s -L../src -L%s -L%s -L%s -lODES -lsbml -lm",
+ 	  gccFileName,
+	  SOSLIB_CPPFLAGS, /* changed order: SOSLIB first */
+	  SUNDIALS_CPPFLAGS,
+	  SBML_CPPFLAGS,
+	  dllFileName,
+	  cFileName,
+	  SUNDIALS_LDFLAGS,
+	  SBML_LDFLAGS,
+	  SOSLIB_LDFLAGS);
+#else
+  sprintf(command,
+	  "%s -I%s -I%s -I%s -I../src -pipe -O -shared -fPIC -o %s %s -L../src -L%s -L%s -L%s -lODES -lsbml -lm",
+ 	  gccFileName,
+	  SOSLIB_CPPFLAGS, /* changed order: SOSLIB first */
+	  SUNDIALS_CPPFLAGS,
+	  SBML_CPPFLAGS,
+	  dllFileName,
+	  cFileName,
+	  SUNDIALS_LDFLAGS,
+	  SBML_LDFLAGS,
+	  SOSLIB_LDFLAGS);
+#endif
+ 
+#ifdef _DEBUG
+  Warn(NULL, "Command: %s\n", command);
+#endif
+  
+  /* compile source to shared library */
+  result = system(command);
+
+  /* clean up compilation intermediates */
+  free(tmpFileName);
+  remove(cFileName);
+  free(cFileName);
+  remove(oFileName);
+  free(oFileName);
+
+  /* handle possible errors */
+  if (result != 0)
+  {
+    if (result == -1)
+      SolverError_error(WARNING_ERROR_TYPE, SOLVER_ERROR_GCC_FORK_FAILED,
+			"forking gcc compiler subprocess failed!");
+    else 
+      SolverError_error(WARNING_ERROR_TYPE, SOLVER_ERROR_COMPILATION_FAILED,
+			"compiling failed with errno %d - %s!",
+			result, strerror(result));    
+    return (NULL);
+  }
+  
+
+
+  /* load shared library */
+  dllHandle = dlopen(dllFileName, RTLD_LAZY);
+  if (dllHandle == NULL)
+  {
+    SolverError_error(WARNING_ERROR_TYPE, SOLVER_ERROR_DL_LOAD_FAILED,
+		      "loading shared library %s failed %d - %s!",
+		      dllFileName, errno, strerror(errno));
+    SolverError_dumpAndClearErrors();
+    return (NULL);
+  }
+
+  ASSIGN_NEW_MEMORY(code, compiled_code_t, NULL);
+  code->dllHandle   = dllHandle;
+  code->dllFileName = dllFileName;
+
+  return (code);
+}
+
+#endif /* end _WIN32 */
+
+/**
+   Returns a pointer to code that is compiled from the given source code
+*/
+compiled_code_t *Compiler_compile(const char *sourceCode)
+{
+  compiled_code_t *code = NULL;
+
+#ifdef _WIN32
+
+  /* code = Compiler_compile_with_tcc(sourceCode); */
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) /* AIX use xlc_r */
+
+  code = Compiler_compile_with_xlc(sourceCode);
+  
+#else
+
+  code = Compiler_compile_with_gcc(sourceCode);
+
+#endif /* end _WIN32 */
+
+  return (code);
+}
+
+/**
+   returns a pointer to the function named 'symbol' in the given 'code'
+*/
+void *CompiledCode_getFunction(compiled_code_t *code, const char *symbol)
+{
+  void *result = NULL;
+
+#ifdef _WIN32
+  
+  result = GetProcAddress(code->dllHandle, symbol);
+
+  if (result)
+    return result ;
+
+  SolverError_storeLastWin32Error("");
+  result = NULL;
+
+#else /* default case gcc */
+
+  char* returnvalue = NULL;
+
+  /* Clear any existing error */
+  returnvalue = dlerror();
+  result = dlsym(code->dllHandle, symbol);
+
+  returnvalue = dlerror();
+  if ( returnvalue != NULL )
+    SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_DL_SYMBOL_UNDEFINED,
+		      "dlsym(): couldn't get symbol %s from shared library %s",
+		      symbol, code->dllFileName);    
+
+#endif /* end _WIN32 */
+  
+  return (result);
+}
+
+/**
+   frees the given code
+*/
+void CompiledCode_free(compiled_code_t *code)
+{
+
+#ifdef _WIN32
+
+  FreeLibrary(code->dllHandle);
+  remove(code->dllFileName);
+  free(code->dllFileName);
+  free(code);
+
+#else /* default case gcc */
+
+  dlclose(code->dllHandle);
+#ifndef _DEBUG
+  remove(code->dllFileName);
+#endif
+  free(code->dllFileName);
+  free(code);
+
+#endif /* end _WIN32 */
+
+}
diff --git a/src/cvodeData.c b/src/cvodeData.c
new file mode 100644
index 0000000..d7f9d05
--- /dev/null
+++ b/src/cvodeData.c
@@ -0,0 +1,650 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2013-02-06 19:00:18 raim>
+  $Id: cvodeData.c,v 1.43 2011/06/16 13:55:20 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Andrew M. Finney
+ */
+
+/*! \defgroup cvodeData Integration Results Interface:  x(t)
+  \ingroup integration
+    
+  \brief This module contains the functions to create input data
+  for formula evaluation and retrieve results from integration   
+
+*/
+/*@{*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* libSBML header files */
+#include <sbml/SBMLTypes.h>
+#include <sbml/Model.h>
+
+/* own header files */
+
+
+#include "sbmlsolver/cvodeData.h"
+#include "sbmlsolver/integratorInstance.h"
+#include "sbmlsolver/integratorSettings.h"
+#include "sbmlsolver/processAST.h"
+#include "sbmlsolver/solverError.h"
+
+#include "sbmlsolver/variableIndex.h"
+
+
+
+/* private functions */
+static void CvodeData_freeStructures(cvodeData_t *);
+static cvodeData_t *CvodeData_allocate(int nvalues, int nevents, int neq);
+static int CvodeData_allocateSens(cvodeData_t *, int neq, int nsens);
+static void CvodeData_freeSensitivities(cvodeData_t *);
+static void CvodeResults_freeSensitivities(cvodeResults_t *);
+static int CvodeResults_allocateAdjSens(cvodeResults_t *, int, int, int);
+
+
+
+/* Internal Integration Data: The functions allocate and free
+   cvodeData and cvodeResults required by the CVODE interface functions
+   to read values and store results, respectively. */
+static cvodeData_t *CvodeData_allocate(int nvalues, int nevents, int neq)
+{
+  cvodeData_t * data;
+
+  ASSIGN_NEW_MEMORY(data, struct cvodeData, NULL);
+  ASSIGN_NEW_MEMORY_BLOCK(data->trigger, nevents, int, NULL);
+  ASSIGN_NEW_MEMORY_BLOCK(data->value, nvalues, double, NULL);
+
+  data->nvalues = nvalues;
+  data->nevents = nevents;
+  data->neq = neq;
+  data->opt = NULL;
+
+  /* Sensitivity-specific - done later */
+  data->sensitivity = NULL;
+  data->p = NULL;
+  data->p_orig  = NULL;
+  /* default: don't use data->p */
+  data->use_p = 0;
+  
+  /* Adjoint-specific */
+  /*!!! should this be moved to adjoint specific initiation? */
+  ASSIGN_NEW_MEMORY_BLOCK(data->adjvalue, nvalues, double, NULL);
+
+
+  return data ;
+}
+
+static int CvodeData_allocateSens(cvodeData_t *data, int neq, int nsens)
+{
+  int i;
+  ASSIGN_NEW_MEMORY_BLOCK(data->p, nsens, realtype, 0);
+  ASSIGN_NEW_MEMORY_BLOCK(data->p_orig, nsens, realtype, 0);
+  ASSIGN_NEW_MEMORY_BLOCK(data->sensitivity, neq, double *, 0);
+  for ( i=0; i<neq; i++ )
+    ASSIGN_NEW_MEMORY_BLOCK(data->sensitivity[i], nsens, double, 0);
+
+  data->nsens = nsens;
+  data->neq = neq;
+
+  return 1;
+}
+
+/* Step I.2: */
+/** Creates cvodeData from an odeModel and initial values from the
+    original SBML model.
+
+    This function is internally used by integratorInstance creation.
+    
+    It is available as an API function, so users can create this
+    structure from an odeModel to evaluate formulae in odeModel
+    independent of integratorInstance.
+*/
+SBML_ODESOLVER_API cvodeData_t *CvodeData_create(odeModel_t *om)
+{
+  int nvalues;
+  cvodeData_t *data;
+
+  nvalues = om->neq + om->nconst + om->nass;
+
+  /* allocate memory for current integration data storage */
+  data = CvodeData_allocate(nvalues, om->nevents, om->neq);
+  if ( data == NULL ) return NULL;
+
+  data->allRulesUpdated = 0;
+  
+  /* set pointer to input model */
+  data->model = om ;
+
+  return data;
+}
+
+
+/** Writes values (initial conditions and parameters)
+    from the input ODE model into the data structure */
+
+SBML_ODESOLVER_API void CvodeData_initializeValues(cvodeData_t *data)
+{
+  int i;
+  odeModel_t *om = data->model;
+
+  /* First, fill cvodeData_t  structure with data from
+     the derived SBML model  */
+
+  /* get initial values (these come directly from SBML model) */
+  for ( i=0; i<data->nvalues; i++ )
+    data->value[i] = om->values[i];  
+ 
+  /* set current time to 0 */
+  data->currenttime = 0.0;
+
+
+  /* Then execute complete rule set:
+     initial and normal assignment rules ! */
+  for ( i=0; i<(om->nass + om->ninitAss); i++ ) 
+  {
+    nonzeroElem_t *ordered = om->initAssignmentOrder[i];
+    int idx = ordered->i;
+    if ( idx == -1 )
+      idx = ordered->j;
+    data->value[idx] = evaluateAST(ordered->ij, data);
+  }
+  data->allRulesUpdated = 1;   
+
+  /* ADJOINT */      
+  /* Zeroing initial adjoint values */
+  if ( data->adjvalue != NULL )
+    for ( i=0; i<data->neq; i++ )
+      data->adjvalue[i] = 0.0;
+
+}
+
+
+/** Frees cvodeData
+ */
+
+SBML_ODESOLVER_API void CvodeData_free(cvodeData_t * data)
+{
+  if(data == NULL)
+    return;
+  CvodeData_freeStructures(data);
+  free(data);
+}
+
+
+/** Returns the number of time points for which results exist
+ */
+
+SBML_ODESOLVER_API int CvodeResults_getNout(const cvodeResults_t *results)
+{
+  return results->nout + 1;
+}
+
+/** Returns the time point number n, where 0 <= n < CvodeResults_getNout
+ */
+
+SBML_ODESOLVER_API double CvodeResults_getTime(const cvodeResults_t *results, int n)
+{
+  return results->time[n];
+}
+
+
+/** Returns the value of a variable or parameter of the odeModel
+    at time step timestep via its variableIndex, where
+    0 <= timestep < CvodeResults_getNout,
+    and the variableIndex can be retrieved from the input odeModel
+*/
+
+SBML_ODESOLVER_API double CvodeResults_getValue(cvodeResults_t *results, variableIndex_t *vi, int timestep)
+{
+  return results->value[vi->index][timestep];
+}
+
+
+/** Returns the ith (0 <= i < nsens) sensitivity of ODE variable y
+    (0 <= y < neq) at timestep nr. `timestep
+    (0 <= timestep < CvodeResults_getNout).
+
+    Returns 0 if the requested indices are out of scope or no sensitivity
+    has been calculated.
+*/
+
+SBML_ODESOLVER_API double CvodeResults_getSensitivityByNum(cvodeResults_t *results,  int y, int i, int timestep)
+{
+  if ( y >= results->neq ) return 0; 
+  if ( i >= results->nsens ) return 0;
+  if ( timestep > results->nout ) return 0;
+  /* should be redundant with nsens check */
+  if ( results->sensitivity == NULL ) return 0; 
+  else return results->sensitivity[y][i][timestep];
+}
+
+
+/** Returns the sensitivity of ODE variable y to parameter or variable s
+    at timestep nr. `timestep, where 0 <= timestep < CvodeResults_getNout.
+
+    Returns 0 if no sensitivity has been calculated for s!
+*/
+
+SBML_ODESOLVER_API double CvodeResults_getSensitivity(cvodeResults_t *results,  variableIndex_t *y,  variableIndex_t *s, int timestep)
+{
+  int i;
+  /* find sensitivity for s */
+  for ( i=0; i<results->nsens && !(results->index_sens[i] == s->index); i++ );
+  if ( i == results->nsens ) return 0;
+  else return results->sensitivity[y->index][i][timestep];
+}
+
+
+/** Computes the directional sensitivity of ODE variable y to parameter
+    direction dp, for all time steps.
+    
+    Must not be called, if sensitivity wasn't calculated!
+*/
+
+SBML_ODESOLVER_API void CvodeResults_computeDirectional(cvodeResults_t *results, const double *dp)
+{
+  int i, j, k;
+  for(i=0; i<results->neq; i++)
+  {   
+    for(j=0; j<results->nout+1; j++)
+    {
+      results->directional[i][j] = 0;
+      for(k=0; k<results->nsens; k++)
+	results->directional[i][j] += results->sensitivity[i][k][j] * dp[k];
+    } 
+  }
+}
+
+
+/** Frees results structure cvodeResults filled by the
+    CVODE integrator
+*/
+SBML_ODESOLVER_API void CvodeResults_free(cvodeResults_t *results)
+{
+  int i;
+  
+  /* free CVODE results if filled */
+  if(results != NULL){
+    for( i=0; i<results->nvalues; i++ ) 
+      free(results->value[i]);
+    free(results->time);
+    free(results->value);
+
+    /* free sensitivities */
+    CvodeResults_freeSensitivities(results);
+    
+    /* Adjoint free  */
+    if ( results->adjvalue != NULL )
+    {
+      for( i=0; i<results->neq; i++ )
+	free(results->adjvalue[i]);
+      free(results->adjvalue);
+    }
+
+    free(results);	      
+  }
+}
+
+/*! @} */
+
+/* initialize cvodeData from cvodeSettings and odeModel (could be
+   separated into two functions to further support modularity and
+   independence of data structures */
+/*!!! TODO : clarify if this function can be called when the solver time
+  is other than 0, and how it relates to CvodeData_initializeValues
+  -> handling of initialAssignments !!!*/
+int
+CvodeData_initialize(cvodeData_t *data, cvodeSettings_t *opt, odeModel_t *om, int keepValues)
+{
+
+  int i;
+
+  /* data now also depends on cvodeSettings */
+  data->opt = opt;
+
+  /* if discrete data is used via settings */
+  if ( opt->observation_data_type == 1 )
+    om->discrete_observation_data=1;
+  else
+    om->discrete_observation_data=0;
+
+  
+  /* initialize values from odeModel */
+  if ( !keepValues )
+    CvodeData_initializeValues(data);
+
+  /* reset steadystate flag */
+  data->steadystate = 0;
+     
+  /* set current time : WHEN NOT 0 ?? */
+  if ( opt->Indefinitely )
+    data->currenttime = 0;
+  else
+    data->currenttime = opt->TimePoints[0];
+
+
+  /* update assigned parameters, in case they depend on new time */
+  /* WHY ONLY IF TIME != 0 ?? */
+  if ( data->currenttime != 0.0 )
+  {
+    for ( i=0; i< (om->nass); i++ )
+    {
+      nonzeroElem_t *ordered = om->assignmentOrder[i];
+      data->value[ordered->i] = evaluateAST(ordered->ij, data);
+    }
+    data->allRulesUpdated = 1;
+  }
+  
+  /*
+    Then, check if formulas can be evaluated, and cvodeData_t *
+    contains all necessary variables:
+    evaluateAST(ASTNode_t *f, ,data) will
+    ask the user for a value, if a a variable is unknown
+  */
+  for ( i=0; i<om->neq; i++ ) evaluateAST(om->ode[i], data);
+
+  /* evaluate event triggers and set flags with their initial state */
+  for ( i=0; i<data->nevents; i++ )
+    data->trigger[i] = evaluateAST(om->event[i], data);
+    
+  /* RESULTS: Now we should have all variables, and can allocate the
+     results structure, where the time series will be stored ...  */
+
+
+  /* free former results */
+  if ( data->results != NULL )
+    CvodeResults_free(data->results);
+
+  /* allow results only for finite integrations */
+  /* this is the only place where options structure is changed
+     internally! StoreResults is overruled by Indefinitely */
+  opt->StoreResults = !opt->Indefinitely && opt->StoreResults;
+
+  /* create new results if required */
+  if ( opt->StoreResults )
+  {
+    data->results = CvodeResults_create(data, opt->PrintStep);
+    if ( data->results == NULL ) return 0;
+  }
+
+  return 1;
+}
+
+/* initialize sensitivity initial values at time 0 */
+int CvodeData_initializeSensitivities(cvodeData_t *data,
+				      cvodeSettings_t *opt,
+				      odeModel_t *om, odeSense_t *os)
+{
+  int i, j, nsens;
+
+  /* 0. catch default case, no parameters/variables selected */
+  if ( opt->sensIDs == NULL ) nsens = om->nconst;
+  else nsens = opt->nsens;
+  
+  /* 1: free former sens. results, if different number is requested */
+  if ( data->nsens != nsens &&  data->sensitivity != NULL ) 
+    CvodeData_freeSensitivities(data);
+  
+  /* 2: create cvodeData and odeModel structures */
+  if ( data->sensitivity == NULL )
+  {
+    CvodeData_allocateSens(data, om->neq, nsens); /* why not data->neq ? */
+    if ( data->sensitivity == NULL ) return 0;
+  }
+
+  /* do FIM stuff */
+  if ( opt->doFIM )
+  {
+    if ( data->FIM == NULL )
+    {
+      ASSIGN_NEW_MEMORY_BLOCK(data->FIM, nsens, double *, 0);
+      for ( i=0; i<nsens; i++ )
+	ASSIGN_NEW_MEMORY_BLOCK(data->FIM[i], nsens, double, 0);
+    }
+    else
+    {
+      for ( i=0; i<nsens; i++ )
+	for ( j=0; j<nsens; j++ )
+	    data->FIM[i][j] = 0.;
+    }
+    if (data->weights == NULL )
+    {
+      /* by default weights are set to 1 */
+      ASSIGN_NEW_MEMORY_BLOCK(data->weights, om->neq, double, 0);
+      for ( i=0; i<om->neq; i++ )
+	data->weights[i] = 1.0;
+    }
+  }
+	
+  /* bind to odeSense model */
+  data->os = os;
+  
+  /* 3: write initial values */
+  /* (re)set to initial values 0.0 or 1.0 for parameter and
+     variable sensitivities, respectively */
+  for ( i=0; i<om->neq; i++ )
+    for ( j=0; j<data->nsens; j++ )
+      if ( os->index_sensP[j] == -1 && os->index_sens[j] == i )
+	data->sensitivity[i][j] = 1.0; /* variable A: dA(0)/dA(0) */
+      else
+	data->sensitivity[i][j] = 0.0; /* variable or parameter */
+
+  /* map initial sensitivities to optional result structure */
+  if  ( data->results != NULL )
+  {
+    /* results from former runs have already been freed before
+      result structure was re-allocated */
+    if ( !CvodeResults_allocateSens(data->results, om->neq, data->nsens,
+				    opt->PrintStep) )
+      return 0;
+    /* write initial values for sensitivity */
+    for ( i=0; i<os->nsens; i++ )
+    {
+      data->results->index_sens[i] = os->index_sens[i];
+      for ( j=0; j<data->results->neq; j++ )
+	data->results->sensitivity[j][i][0] = data->sensitivity[j][i];
+    }
+    
+    /* Adjoint specific  */
+    if  ( opt->DoAdjoint )
+    {
+      if ( !CvodeResults_allocateAdjSens(data->results, om->neq,
+					 nsens, opt->PrintStep) )
+	return 0;
+      
+      /* write initial values for adj sensitivity */
+      for ( i=0; i<data->results->neq; i++ )
+	data->results->adjvalue[i][0] = data->adjvalue[i];
+    }
+  }
+
+  return 1;  
+}
+
+
+/* frees all sensitivity stuff of cvodeData */
+static void CvodeData_freeSensitivities(cvodeData_t * data)
+{
+  int i;
+
+  /* free forward sensitivity */  
+  if ( data->sensitivity != NULL )
+  {
+    for ( i=0; i<data->neq; i++ )
+      free(data->sensitivity[i]);
+    free(data->sensitivity);
+    data->sensitivity = NULL;
+  }
+
+  /* do FIM stuff */
+  if ( data->FIM != NULL )
+    {
+      for ( i=0; i<data->nsens; i++ )
+	free(data->FIM[i]);
+      free(data->FIM);
+    }
+  if (data->weights != NULL )
+      free(data->weights);
+  
+  if ( data->p != NULL ) free(data->p);
+  if ( data->p_orig != NULL ) free(data->p_orig);
+	   
+  data->p = data->p_orig = NULL;
+  data->sensitivity = NULL;
+
+  if ( data->results )
+    CvodeResults_freeSensitivities(data->results);
+}
+  
+/* frees all internal stuff of cvodeData */
+static void CvodeData_freeStructures(cvodeData_t * data)
+{
+  
+  if ( data == NULL ) return;
+  
+  /* free sensitivity structure */  
+  CvodeData_freeSensitivities(data);
+
+  /* free adjoint sensitivity */
+  if ( data->adjvalue != NULL ) free(data->adjvalue );
+  
+  /* free results structure */
+  CvodeResults_free(data->results);
+
+  /* free current values array */
+  free(data->value);
+  
+  /* free event trigger flags */
+  free(data->trigger);
+
+}
+
+/********* cvodeResults will be created by integration runs *********/
+
+int CvodeResults_allocateSens(cvodeResults_t *results,
+			      int neq, int nsens, int nout)
+{
+  int i, j;
+
+  ASSIGN_NEW_MEMORY_BLOCK(results->index_sens, nsens, int, 0);  
+  ASSIGN_NEW_MEMORY_BLOCK(results->sensitivity, neq, double **, 0);
+  for ( i=0; i<neq; i++ )
+  {
+    ASSIGN_NEW_MEMORY_BLOCK(results->sensitivity[i], nsens, double*, 0);
+    for ( j=0; j<nsens; j++ )
+      ASSIGN_NEW_MEMORY_BLOCK(results->sensitivity[i][j], nout+1, double, 0);
+  }
+  
+  results->nsens = nsens;
+  results->neq = neq;    
+
+  ASSIGN_NEW_MEMORY_BLOCK(results->directional, neq, double *, 0);
+  for ( i=0; i<neq; i++ )  
+    ASSIGN_NEW_MEMORY_BLOCK(results->directional[i], nout+1, double, 0);
+
+  return 1;
+}
+
+
+
+static int CvodeResults_allocateAdjSens(cvodeResults_t *results,
+				 int neq, int nadjsens, int nout)
+{
+  int i;
+
+  ASSIGN_NEW_MEMORY_BLOCK(results->adjvalue, neq, double *, 0);
+  for ( i=0; i<neq; i++ ) 
+    ASSIGN_NEW_MEMORY_BLOCK(results->adjvalue[i], nout+1, double, 0); 
+
+  return 1;
+}
+
+
+/* Creates cvodeResults, the structure that stores
+   CVODE integration results */
+cvodeResults_t *CvodeResults_create(cvodeData_t * data, int nout)
+{
+  int i;
+  cvodeResults_t *results;
+
+  ASSIGN_NEW_MEMORY(results, struct cvodeResults, NULL);
+  ASSIGN_NEW_MEMORY_BLOCK(results->time, nout+1, double, NULL);
+  
+  /* The 2-D array `value' contains the time courses, that are
+     calculated by ODEs (SBML species, or compartments and parameters
+     defined by rate rules.  */
+  ASSIGN_NEW_MEMORY_BLOCK(results->value, data->nvalues, double *, NULL);
+
+  results->nvalues = data->nvalues;    
+
+  for ( i=0; i<data->nvalues; i++ )
+    ASSIGN_NEW_MEMORY_BLOCK(results->value[i], nout+1, double, NULL);
+
+  results->sensitivity = NULL;
+
+  results->directional = NULL;
+
+  /* adjoint */
+  results->adjvalue = NULL;  
+
+  return results;  
+}
+
+/* frees all sensitivity structures of cvodeResults */
+static void CvodeResults_freeSensitivities(cvodeResults_t *results)
+{
+  int i, j;
+  if ( results->sensitivity != NULL )
+  {
+    for ( i=0; i<results->neq; i++ )
+    {
+      for ( j=0; j<results->nsens; j++ )
+	free(results->sensitivity[i][j]);
+      free(results->sensitivity[i]);
+    }
+    free(results->sensitivity);
+    free(results->index_sens);
+    results->sensitivity = NULL;
+    results->index_sens = NULL;
+  }
+  
+  if ( results->directional != NULL )
+  {
+    for ( i=0; i<results->neq; i++ )
+      free(results->directional[i]);
+    free(results->directional);
+    results->directional = NULL;
+  }
+}
+/* End of file */
diff --git a/src/cvodeSolver.c b/src/cvodeSolver.c
new file mode 100644
index 0000000..50fba4e
--- /dev/null
+++ b/src/cvodeSolver.c
@@ -0,0 +1,1124 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-10-08 18:49:17 raim>
+  $Id: cvodeSolver.c,v 1.82 2009/02/11 18:26:20 stefan_tbi Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Andrew M. Finney
+ *     Christoph Flamm
+ */
+
+/*! \defgroup cvode CVODES ODE Solver:  x(t)
+  \ingroup integrator     
+  \brief This module contains the functions that call SUNDIALS CVODES
+  solver routines for stiff and non-stiff ODE systems
+    
+
+*/
+/*@{*/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/* Header Files for CVODE */
+#include <cvodes/cvodes.h>
+#include <cvodes/cvodes_dense.h>
+#include <nvector/nvector_serial.h>
+
+#include "sbmlsolver/cvodeData.h"
+#include "sbmlsolver/processAST.h"
+#include "sbmlsolver/odeModel.h"
+#include "sbmlsolver/solverError.h"
+#include "sbmlsolver/cvodeSolver.h"
+#include "sbmlsolver/sensSolver.h"
+
+#include "private/macro.h"
+
+static int fQ(realtype t, N_Vector y, N_Vector qdot, void *fQ_data);
+static int f(realtype t, N_Vector y, N_Vector ydot, void *f_data);
+static int JacODE(long int N, DenseMat J, realtype t,
+		  N_Vector y, N_Vector fy, void *jac_data,
+		  N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3);
+static void
+IntegratorInstance_freeQuadrature(integratorInstance_t *);
+
+/** Calls CVODE to move the current simulation one time step.
+
+produces appropriate error messages on failures and returns 1 if the
+integration can continue, 0 otherwise. This function is called by
+IntegratorInstance_integrateOneStep, but could also be called directly
+by a calling application that is sure to use CVODES (and not e.g. IDA),
+to avoid the if statements in the wrapper function.
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_cvodeOneStep(integratorInstance_t *engine)
+{
+  int i, flag, CV_MODE = CV_NORMAL;
+  realtype *ydata = NULL;
+    
+  cvodeSolver_t *solver = engine->solver;
+  cvodeData_t *data = engine->data;
+  cvodeSettings_t *opt = engine->opt;
+  odeModel_t *om = engine->om;
+  
+  if ( !engine->isValid )
+  { 
+    solver->t0 = solver->t;
+    if ( !IntegratorInstance_createCVODESolverStructures(engine) )
+    {
+      fprintf(stderr, "engine not valid for unknown reasons, "
+	      "please contact developers\n");
+      return 0;
+    }
+  }
+  
+  /* upon events or external resetting of any values
+     during integration, CV_TSTOP should be used to
+     keep the solver from integrating far ahead current
+     time, this will however reduce integration speed, and
+     might not be necessary in all cases */
+  /*!!! this is probably required for all RHS expressions which
+   can lead to discontinuities, AND !!! maybe this is only required
+   for those discontinuities which depend explicitly on time ??? 
+   an alternative to using the TSTOP mode might be to just update the
+   respective equations within this function!!! */
+  if ( opt->SetTStop || om->npiecewise )
+  {
+    CV_MODE = CV_NORMAL_TSTOP;
+    CVodeSetStopTime(solver->cvode_mem, solver->tout);
+  }  
+
+  if (!engine->clockStarted)
+  {
+    engine->startTime = clock();
+    engine->clockStarted = 1 ;
+  }
+
+  /* Forward solver is only called if not in the adjoint (backward) phase */
+  if( !engine->AdjointPhase )
+  { 
+    if( opt->DoAdjoint )
+    {  
+      /* CvodeF is needed in the forward phase if the adjoint soln is
+	 desired  */  
+      flag = CVodeF(solver->cvadj_mem, solver->tout,
+		    solver->y, &(solver->t), CV_NORMAL, &(opt->ncheck));     
+    }
+    else
+    {
+      /* calling CVODE */
+      flag = CVode(solver->cvode_mem, solver->tout,
+		   solver->y, &(solver->t), CV_MODE);
+    }
+    
+    
+    /*  if ( flag != CV_SUCCESS ) */
+    if ( flag < CV_SUCCESS )
+    {
+      static const char *message[] =
+	{
+	  /*  0 CV_SUCCESS */
+	  "Success",
+	  /**/
+	  /*  1 CV_ROOT_RETURN */
+	  /*   "CVode succeeded, and found one or more roots" */
+	  /*  2 CV_TSTOP_RETURN */
+	  /*   "CVode succeeded and returned at tstop" */
+	  /**/
+	  /* -1 CV_MEM_NULL -1 (old CVODE_NO_MEM) */
+	  "The cvode_mem argument was NULL at time %g",
+	  /* -2 CV_ILL_INPUT */
+	  "One of the inputs to CVode is illegal. This "
+	  "includes the situation when a component of the "
+	  "error weight vectors becomes < 0 during "
+	  "internal time-stepping. The ILL_INPUT flag "
+	  "will also be returned if the linear solver "
+	  "routine CV--- (called by the user after "
+	  "calling CVodeMalloc) failed to set one of the "
+	  "linear solver-related fields in cvode_mem or "
+	  "if the linear solver's init routine failed. In "
+	  "any case, the user should see the printed "
+	  "error message for more details.",
+	  /* -3 CV_NO_MALLOC */
+	  "cvode_mem was not allocated",
+	  /* -4 CV_TOO_MUCH_WORK */
+	  "At time %g: The solver took %d internal steps but could not "
+	  "compute variable values.",
+	  /* -5 CV_TOO_MUCH_ACC */
+	  "The solver could not satisfy the accuracy " 
+	  "requested for some internal step.",
+	  /* -6 CV_ERR_FAILURE */
+	  "Error test failures occurred too many times "
+	  "during one internal time step or "
+	  "occurred with |h| = hmin.",
+	  /* -7 CV_CONV_FAILURE */
+	  "Convergence test failures occurred too many "
+	  "times during one internal time step or occurred "
+	  "with |h| = hmin.",
+	  /* -8 CV_LINIT_FAIL */
+	  "CVode -- Initial Setup: "
+	  "The linear solver's init routine failed.",
+	  /* -9 CV_LSETUP_FAIL */
+	  "The linear solver's setup routine failed in an "
+	  "unrecoverable manner.",
+	  /* -10 CV_LSOLVE_FAIL */
+	  "The linear solver's solve routine failed in an "
+	  "unrecoverable manner.",
+	  /* -11 CV_MEM_FAIL */
+	  "A memory allocation failed. "
+	  "(including an attempt to increase maxord)",
+	  /* -12 CV_RTFUNC_NULL */
+	  "nrtfn > 0 but g = NULL.",
+	  /* -13 CV_NO_SLDET */
+	  "CVodeGetNumStabLimOrderReds -- Illegal attempt "
+	  "to call without enabling SLDET.",
+	  /* -14 CV_BAD_K */
+	  "CVodeGetDky -- Illegal value for k.",
+	  /* -15 CV_BAD_T */
+	  "CVodeGetDky -- Illegal value for t.",
+	  /* -16 CV_BAD_DKY */
+	  "CVodeGetDky -- dky = NULL illegal.",
+	  /* -17 CV_PDATA_NULL */
+	  "???",
+	};
+	    
+
+      SolverError_error(ERROR_ERROR_TYPE,
+                        flag,
+                        (abs(flag) < (int)NUMBER_OF_ELEMENTS(message)) ? message[abs(flag)] : "???",
+                        solver->tout,
+                        opt->Mxstep);
+      SolverError_error(WARNING_ERROR_TYPE,
+			SOLVER_ERROR_INTEGRATION_NOT_SUCCESSFUL,
+			"Integration not successful. Results are not "
+			"complete.");
+
+      return 0 ; /* Error - stop integration*/
+    }
+    
+    ydata = NV_DATA_S(solver->y);
+    
+    /* update cvodeData time dependent variables */    
+    for ( i=0; i<om->neq; i++ )
+      data->value[i] = ydata[i];
+
+    /*  calculating sensitivities */ /* before update rest of data */
+    if ( opt->Sensitivity )
+    {
+      flag = IntegratorInstance_getForwardSens(engine);
+      CVODE_HANDLE_ERROR(&flag, "CVodeSetFdata", 1);
+    }   
+
+    /* update rest of data with internal default function */
+    flag = IntegratorInstance_updateData(engine);
+    if ( flag != 1 )
+      return 0;
+
+  }
+  /* end if ( !engine->AdjointPhase ) */
+  else
+  { /* AdjointPhase: */
+
+    /* The adjoint engine*/
+    flag = CVodeB(solver->cvadj_mem, solver->tout,
+		  solver->yA, &(solver->t), CV_NORMAL);
+    /*!!! ==31752== Conditional jump or move depends on uninitialised
+                    value(s)
+	  ==31752==    at 0x43552B: CVodeB
+    (in /home/fremdling/raim/programs/SBML_odeSolver/examples/adj_sensitivity) */
+
+    if ( flag <CV_SUCCESS  )
+    {   
+      static const char *message[] =
+	{
+	  /*  0 CV_SUCCESS */
+	  "Success",
+	  /**/
+	  /*  1 CV_ROOT_RETURN */
+	  /*   "CVode succeeded, and found one or more roots" */
+	  /*  2 CV_TSTOP_RETURN */
+	  /*   "CVode succeeded and returned at tstop" */
+	  /**/
+	  /* -1 CV_MEM_NULL -1 (old CVODE_NO_MEM) */
+	  "The cvode_mem argument was NULL",
+	  /* -2 CV_ILL_INPUT */
+	  "One of the inputs to CVode is illegal. This "
+	  "includes the situation when a component of the "
+	  "error weight vectors becomes < 0 during "
+	  "internal time-stepping. The ILL_INPUT flag "
+	  "will also be returned if the linear solver "
+	  "routine CV--- (called by the user after "
+	  "calling CVodeMalloc) failed to set one of the "
+	  "linear solver-related fields in cvode_mem or "
+	  "if the linear solver's init routine failed. In "
+	  "any case, the user should see the printed "
+	  "error message for more details.",
+	  /* -3 CV_NO_MALLOC */
+	  "cvode_mem was not allocated",
+	  /* -4 CV_TOO_MUCH_WORK */
+	  "At time %g: The solver took %d internal steps but could not "
+	  "compute variable values.",
+	  /* -5 CV_TOO_MUCH_ACC */
+	  "The solver could not satisfy the accuracy " 
+	  "requested for some internal step.",
+	  /* -6 CV_ERR_FAILURE */
+	  "Error test failures occurred too many times "
+	  "during one internal time step or "
+	  "occurred with |h| = hmin.",
+	  /* -7 CV_CONV_FAILURE */
+	  "Convergence test failures occurred too many "
+	  "times during one internal time step or occurred "
+	  "with |h| = hmin.",
+	  /* -8 CV_LINIT_FAIL */
+	  "CVode -- Initial Setup: "
+	  "The linear solver's init routine failed.",
+	  /* -9 CV_LSETUP_FAIL */
+	  "The linear solver's setup routine failed in an "
+	  "unrecoverable manner.",
+	  /* -10 CV_LSOLVE_FAIL */
+	  "The linear solver's solve routine failed in an "
+	  "unrecoverable manner.",
+	  /* -11 CV_MEM_FAIL */
+	  "A memory allocation failed. "
+	  "(including an attempt to increase maxord)",
+	  /* -12 CV_RTFUNC_NULL */
+	  "nrtfn > 0 but g = NULL.",
+	  /* -13 CV_NO_SLDET */
+	  "CVodeGetNumStabLimOrderReds -- Illegal attempt "
+	  "to call without enabling SLDET.",
+	  /* -14 CV_BAD_K */
+	  "CVodeGetDky -- Illegal value for k.",
+	  /* -15 CV_BAD_T */
+	  "CVodeGetDky -- Illegal value for t.",
+	  /* -16 CV_BAD_DKY */
+	  "CVodeGetDky -- dky = NULL illegal.",
+	  /* -17 CV_PDATA_NULL */
+	  "Precond module not initialized",
+          "Sensitivity index larger than number computed", 
+	  "", 
+	  "Quad integration not activated", 
+	  "Forward sensitivity integration not achieved"
+	};
+    
+      static const char *message2[] =
+	  { "",
+            "Cvadj_mem full", 
+            "", 
+            "Bad final time for adjoint problem",
+	    "Memory for adjoint problem not created",
+            "Reinit of forward failed at check point",
+	    "Forward integration failed",
+	    "Wrong task for adjoint integration",
+	    "Output time outside forward problem interval",
+	    "Wrong time in Hermite interpolation",
+	  };
+      
+
+      if( flag > -100)
+      {
+        SolverError_error(ERROR_ERROR_TYPE,
+                          flag,
+                          (abs(flag) < (int)NUMBER_OF_ELEMENTS(message)) ? message[abs(flag)] : "???",
+                          opt->Mxstep,
+                          solver->tout);
+        SolverError_error(WARNING_ERROR_TYPE,
+			  SOLVER_ERROR_INTEGRATION_NOT_SUCCESSFUL,
+			  "Adjoint integration not successful. Results are not "
+			  "complete.");
+      }
+      else
+      {
+	flag = flag + 100;
+        SolverError_error(ERROR_ERROR_TYPE,
+                          flag,
+                          (abs(flag) < (int)NUMBER_OF_ELEMENTS(message2)) ? message2[abs(flag)] : "???",
+                          solver->tout,
+                          opt->Mxstep);
+        SolverError_error(WARNING_ERROR_TYPE,
+			  SOLVER_ERROR_INTEGRATION_NOT_SUCCESSFUL,
+			  "Adjoint integration not successful. Results are not "
+			  "complete.");
+      }
+
+      return 0 ; /* Error - stop integration*/
+    }
+
+    ydata = NV_DATA_S(solver->yA);
+    
+    /* update adjoint variables computed by CvodeS */    
+    for ( i=0; i<om->neq; i++ )
+      data->adjvalue[i] = ydata[i];
+
+    /* update rest of adjoint data with internal default function */
+    flag = IntegratorInstance_updateAdjData(engine);
+    if ( flag != 1 )
+    {
+      fprintf(stderr, "update AdjData error!!\n");
+      return 0;
+    }
+
+    /* calculating sensitivities */
+    IntegratorInstance_getAdjSens(engine);
+    
+  }
+  /* end if ( engine->AdjointPhase ) */
+
+  return 1; /* OK, redundant? */    
+}
+
+
+
+
+
+/************* CVODE integrator setup functions ************/
+
+
+/** creates CVODE structures and fills cvodeSolver, 
+    returns 1 on success or 0 on failure
+*/
+int
+IntegratorInstance_createCVODESolverStructures(integratorInstance_t *engine)
+{
+  int i, flag, neq, method, iteration, quadReinit;
+  odeModel_t *om = engine->om;
+  odeSense_t *os = engine->os;
+  cvodeData_t *data = engine->data;
+  cvodeSolver_t *solver = engine->solver;
+  cvodeSettings_t *opt = engine->opt;
+  CVRhsFn rhsFunction;
+  CVDenseJacFn jacODE = NULL;
+
+
+  /* Catch Adjoint Phase*/
+  if ( engine->AdjointPhase )
+  {
+    flag = IntegratorInstance_createCVODESSolverStructures(engine);
+    if ( flag == 0 ){
+      return 0; /* error */
+    }   
+  }
+    /* the main part: all allocations for the forward integrator */
+    /* i.e, also for the forward phase of adjoint sens. analysis */
+  else
+  {
+    /* Catch Quadrature-related dimension changes, cases 1-3 */
+    quadReinit = 0;
+
+    /* 1: if an objective function is initialized OR */
+    if ( om->ObjectiveFunction )
+    {
+      /* 1.a: if a sensitivity quadrature with size other than 1 exists ... */
+      if ( solver->qS )
+	if ( NV_LENGTH_S(solver->qS) != 1 )
+	  quadReinit = 1;
+    }
+    /* 2: if target vector is there and sensitivity is requested OR  */
+    else if ( om->vector_v && (opt->Sensitivity && os) )
+    {
+      /* 2.a: if a forward quadrature exists and nsens is NOT 1 ... */
+      if ( solver->q && os->nsens != 1 )
+	quadReinit = 1;
+      /* 2.b: if a sensitive quadrature has a different size from nsens  ... */
+      if ( solver->qS )
+	if ( NV_LENGTH_S(solver->qS) != os->nsens )
+	  quadReinit = 1;
+    }
+    /* 3: if a quadrature exists but is not requested ... */
+    else if ( solver->q || solver->qS )
+      quadReinit = 1;
+
+    /* .... the CVODE QUADRATURE must be freed and reconstructed!! */
+    if  ( quadReinit )
+      IntegratorInstance_freeQuadrature(engine);
+
+    /** START SOLVER INITIALIZATION */
+    
+    neq = engine->om->neq; /* number of equations */
+
+    /* get compiled functions ! */
+    if ( opt->compileFunctions )
+    {
+      /* this is currently the call leading to compilation
+	 of odeModel_t RHS functions ! */
+      rhsFunction = ODEModel_getCompiledCVODERHSFunction(om);
+      if ( !rhsFunction ) return 0; /* error */
+    }
+    else
+    {
+      rhsFunction = f ;
+#ifdef ARITHMETIC_TEST
+      fprintf(stderr, "\nWARNING: USING EXPERIMENTAL ONLINE COMPILER\n\n");
+#endif
+    }      
+    if ( engine->UseJacobian )
+    {
+      if ( opt->compileFunctions )
+      { 
+
+	jacODE = ODEModel_getCompiledCVODEJacobianFunction(om); 
+	if ( !jacODE ) return 0; /* error */
+      }
+      else
+	jacODE = JacODE;
+    }
+
+    /* CVODESolverStructures from former runs must be freed */
+    /* if (  solver->y != NULL ) */
+    /* 	IntegratorInstance_freeCVODEolverStructures(engine); */
+
+    /**
+     * Allocate y, abstol vectors
+     */
+    if ( solver->y == NULL )
+    {
+      solver->y = N_VNew_Serial(neq);
+      CVODE_HANDLE_ERROR((void *)solver->y, "N_VNew_Serial for y", 0);
+    }
+
+    if ( solver->abstol == NULL )
+    {
+      solver->abstol = N_VNew_Serial(neq);
+      CVODE_HANDLE_ERROR((void *)solver->abstol,
+			 "N_VNew_Serial for abstol", 0);
+    }
+
+    /**
+     * Initialize y, abstol vectors
+     */
+    for ( i=0; i<neq; i++ )
+    {
+      /* Set initial value vector components of y and y' */
+      NV_Ith_S(solver->y, i) = data->value[i];
+      /* Set absolute tolerance vector components,
+	 currently the same absolute error is used for all y */
+      /*  abstoldata[i] = opt->Error; */
+      NV_Ith_S(solver->abstol, i) = opt->Error;
+    }
+
+    /* scalar relative tolerance: the same for all y */
+    solver->reltol = opt->RError;
+
+    /**
+     * Call CVodeCreate to create the non-linear solver memory:\n
+     *
+     * Nonlinear Solver:\n
+     * CV_BDF         Backward Differentiation Formula method\n
+     * CV_ADAMS       Adams-Moulton method\n
+     * Iteration Method:\n
+     * CV_NEWTON      Newton iteration method\n
+     * CV_FUNCTIONAL  functional iteration method\n
+     */
+    if ( opt->CvodeMethod == 1 ) method = CV_ADAMS;
+    else method = CV_BDF;
+    
+    if ( opt->IterMethod == 1 ) iteration = CV_FUNCTIONAL;
+    else iteration = CV_NEWTON;
+
+
+     /*!!? problem with ReInit: can't use new method !??
+       -> use additional methodIsValid option */
+    if ( solver->cvode_mem == NULL )
+    {
+      solver->cvode_mem = CVodeCreate(method, iteration);
+      CVODE_HANDLE_ERROR((void *)(solver->cvode_mem), "CVodeCreate", 0);
+
+     /*!!! max. order should be set here, problem: "maxord affects the
+       memory requirements for the internal cvodes memory block, its
+       value cannot be increased past its previous value." !!! */  
+/*       flag = CVodeSetMaxOrd(cvode_mem, opt->MaxOrder); */
+/*       CVODE_HANDLE_ERROR(&flag, "CVodeSetMaxOrd", 1); */
+
+      /**
+       * Call CVodeMalloc to initialize the integrator memory:\n
+       *
+       * cvode_mem:  pointer to the CVode memory block returned by
+       CVodeCreate\n
+       * f:     user's right hand side function in f(x,p,t) = dx/dt\n
+       * t0:    initial value of time\n
+       * y:     the initial dependent variable vector (called in x in the
+       *        docu)\n
+       * CV_SV: specifies scalar relative and vector absolute tolerances\n
+       * reltol: the scalar relative tolerance\n
+       * abstol: pointer to the absolute tolerance vector\n
+       */
+      flag = CVodeMalloc(solver->cvode_mem, rhsFunction,
+			 solver->t0, solver->y,
+			 CV_SV, solver->reltol, solver->abstol);
+      CVODE_HANDLE_ERROR(&flag, "CVodeMalloc", 1);
+    }
+    else
+    {
+      flag = CVodeReInit(solver->cvode_mem, rhsFunction,
+			 solver->t0, solver->y,
+			 CV_SV, solver->reltol, solver->abstol);
+      CVODE_HANDLE_ERROR(&flag, "CVodeReInit", 1);
+    }
+
+    /**
+     * Link the main integrator with data for right-hand side function
+     */ 
+    flag = CVodeSetFdata(solver->cvode_mem, engine->data);
+    CVODE_HANDLE_ERROR(&flag, "CVodeSetFdata", 1);
+    /**
+     * Set maximum number of internal steps to be taken
+     * by the solver in its attempt to reach tout
+     */
+    flag = CVodeSetMaxNumSteps(solver->cvode_mem, opt->Mxstep);
+    CVODE_HANDLE_ERROR(&flag, "CVodeSetMaxNumSteps", 1);   
+
+    /**
+     * Link the main integrator with the CVDENSE linear solver
+     */
+    flag = CVDense(solver->cvode_mem, neq);
+    CVODE_HANDLE_ERROR(&flag, "CVDense", 1);
+
+    /**
+     * Set the routine used by the CVDENSE linear solver
+     * to approximate the Jacobian matrix to ...
+     */
+    /* a combination of input settings (opt->UseJacobian) and success of
+       jacobian matrix construction (om->jacobian) has
+       set engine->UseJacobian */
+    if ( engine->UseJacobian == 1 ) 
+      /* ... user-supplied routine Jac */ 
+      flag = CVDenseSetJacFn(solver->cvode_mem, jacODE, engine->data);
+    else
+      /* ...the internal default difference quotient routine CVDenseDQJac */ 
+      flag = CVDenseSetJacFn(solver->cvode_mem, NULL, NULL);
+    CVODE_HANDLE_ERROR(&flag, "CVDenseSetJacFn", 1);
+
+    
+
+    /* QUADRATURE */
+         
+    /* Initialization to compute nonlinear functional */
+    if ( om->ObjectiveFunction != NULL )
+    {
+      if ( solver->q == NULL ) /* solver->q has not been initialized  */
+      {
+	solver->q = N_VNew_Serial(1);
+	CVODE_HANDLE_ERROR((void *) solver->q,
+			   "N_VNew_Serial for vector q", 0);
+	
+	NV_Ith_S(solver->q, 0) = 0.0;
+
+	/* if qS exists, it had size 1 (catched at the top of this function) */
+	if ( solver->qS )
+	{	  
+	  N_VDestroy_Serial(engine->solver->qS);
+	  engine->solver->qS = NULL;
+	  
+	  flag = CVodeQuadReInit(solver->cvode_mem, fQ, solver->q);
+	  CVODE_HANDLE_ERROR(&flag, "CVodeQuadReInit fQ", 1);
+	}
+	else
+	{ /* NO QUAD EXIST, CALL MALLOC*/
+	  flag = CVodeQuadMalloc(solver->cvode_mem, fQ, solver->q);
+	  CVODE_HANDLE_ERROR(&flag, "CVodeQuadMalloc for q", 1);
+	}
+      }
+      /* if q exists then just reinit */
+      else
+      {
+	/* just use existing quadrature */
+	NV_Ith_S(solver->q, 0) = 0.0;
+	flag = CVodeQuadReInit(solver->cvode_mem, fQ, solver->q);
+	CVODE_HANDLE_ERROR(&flag, "CVodeQuadReInit fQ", 1);
+      }
+        
+      flag = CVodeSetQuadFdata(solver->cvode_mem, engine);
+      CVODE_HANDLE_ERROR(&flag, "CVodeSetQuadFdata", 1);
+	
+      /* set quadrature tolerance for objective function 
+	 to be the same as the forward solution tolerances */
+      flag = CVodeSetQuadErrCon(solver->cvode_mem, TRUE,
+				CV_SS, solver->reltol, &(opt->Error));
+      CVODE_HANDLE_ERROR(&flag, "CVodeSetQuadErrCon", 1);
+    }
+
+ 
+    if ( opt->Sensitivity )
+    {
+      flag = IntegratorInstance_createCVODESSolverStructures(engine);
+      if ( flag == 0 ) return 0; /* error */ 
+    }
+    else
+    {
+      /* just deactivate sensitivity, can be reused on next run! */
+      if ( solver->yS != NULL )
+	CVodeSensToggleOff(solver->cvode_mem);  
+    } 	
+
+
+    /* If adjoint is desired, CVadjMalloc needs to be done before
+       calling CVodeF  */
+    if ( opt->DoAdjoint )
+    {
+      
+      if ( solver->cvadj_mem == NULL )
+      {
+	solver->cvadj_mem =
+	  CVadjMalloc(solver->cvode_mem, opt->nSaveSteps, CV_HERMITE);
+	  CVODE_HANDLE_ERROR((void *)solver->cvadj_mem, "CVadjMalloc", 0);
+      }
+    }
+  } 
+
+  /* ERROR HANDLING CODE if SensSolver construction failed */
+  /* 'solver' is consistant with 'data' */  
+  engine->isValid = 1;
+  
+  return 1; /* OK */
+}
+
+/* frees N_V vector structures, and the cvode_mem solver */
+static void IntegratorInstance_freeQuadrature(integratorInstance_t *engine)
+{
+  /* IntegratorInstance_freeCVODESolverStructures(engine); */
+  /* Free forward quadrature vector */
+  if (engine->solver->q != NULL)
+  {
+    N_VDestroy_Serial(engine->solver->q);
+    engine->solver->q = NULL;
+    CVodeQuadFree(engine->solver->cvode_mem);
+  }
+  /* Free forward quadrature vector */
+  if (engine->solver->qS != NULL)
+  {
+    N_VDestroy_Serial(engine->solver->qS);
+    engine->solver->qS = NULL;
+    CVodeQuadFree(engine->solver->cvode_mem);
+  }
+
+  /* reset run counters to 0 */
+  /* engine->adjrun = 0; */
+
+}
+
+/* frees N_V vector structures, and the cvode_mem solver */
+void IntegratorInstance_freeCVODESolverStructures(integratorInstance_t *engine)
+{
+  /* Free Forward Sensitivity structures */
+  IntegratorInstance_freeForwardSensitivity(engine);
+  
+  /* Free the y vector */
+  if (engine->solver->y != NULL)
+  {
+    N_VDestroy_Serial(engine->solver->y);
+    engine->solver->y = NULL;
+  }
+
+  /* Free forward quadrature vector */
+  if (engine->solver->q != NULL)
+  {
+    N_VDestroy_Serial(engine->solver->q);
+    engine->solver->q = NULL;
+  }
+  
+  /* Free the abstol vector */
+  if (engine->solver->abstol != NULL)
+  {
+    N_VDestroy_Serial(engine->solver->abstol);
+    engine->solver->abstol = NULL;
+  }
+
+
+  /* Free the integrator memory */
+  if (engine->solver->cvode_mem != NULL)
+  {
+    CVodeFree(&engine->solver->cvode_mem);
+    engine->solver->cvode_mem = NULL;
+  }
+
+  
+  /* Adjoint related  */
+  IntegratorInstance_freeAdjointSensitivity(engine);
+
+  /* Free the adjoint memory */
+  if (engine->solver->cvadj_mem != NULL)
+  {
+    CVadjFree(&engine->solver->cvadj_mem);
+    engine->solver->cvadj_mem = NULL;
+  }
+
+  /* Free IDA vector dy */
+  if (engine->solver->dy != NULL)
+  {
+    N_VDestroy_Serial(engine->solver->dy);
+    engine->solver->dy = NULL;
+  }
+
+}
+
+
+void IntegratorInstance_freeForwardSensitivity(integratorInstance_t *engine)
+{
+
+  /* Free sensitivity vector yS */
+  if (engine->solver->yS != NULL)
+  {
+    N_VDestroyVectorArray_Serial(engine->solver->yS, engine->solver->nsens);
+    engine->solver->yS = NULL;
+  }
+
+  /* Free sensitivity vector senstol */
+  if (engine->solver->senstol != NULL)
+  {
+    N_VDestroy_Serial(engine->solver->senstol);
+    engine->solver->senstol = NULL;
+  }
+
+  /* Free sensitivity quadrature vector */
+  if (engine->solver->qS != NULL)
+  {
+    N_VDestroy_Serial(engine->solver->qS);
+    engine->solver->qS = NULL;
+  }
+
+  /* Free sensitivity quadrature vector for FIM calculation */
+  if (engine->solver->qFIM != NULL)
+  {
+    N_VDestroy_Serial(engine->solver->qFIM);
+    engine->solver->qFIM = NULL;
+  }
+
+  CVodeSensFree(engine->solver->cvode_mem);
+  
+}
+
+
+void IntegratorInstance_freeAdjointSensitivity(integratorInstance_t *engine)
+{
+  /* Free adjoint sensitivity vector yA */
+  if (engine->solver->yA != NULL)
+  {
+    N_VDestroy_Serial(engine->solver->yA);
+    engine->solver->yA = NULL;
+  }
+
+  /* Free adjoint sensitivity quad vector qA */
+  if (engine->solver->qA != NULL)
+  {
+    N_VDestroy_Serial(engine->solver->qA);
+    engine->solver->qA = NULL;
+  }
+
+  /* Free adjoint sensitivity quad vector abstolA */
+  if (engine->solver->abstolA != NULL)
+  {
+    N_VDestroy_Serial(engine->solver->abstolA);
+    engine->solver->abstolA = NULL;
+  }
+
+  /* Free adjoint sensitivity quad vector abstolQA */
+  if (engine->solver->abstolQA != NULL)
+  {
+    N_VDestroy_Serial(engine->solver->abstolQA);
+    engine->solver->abstolQA = NULL;
+  }
+
+}
+
+
+/** Prints some final statistics of the calls to CVODE routines, that
+    are located in CVODE's iopt array.
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_printCVODEStatistics(const integratorInstance_t *engine, FILE *f)
+{
+  int flag;
+  long int nst, nfe, nsetups, nje, nni, ncfn, netf;
+
+  cvodeSettings_t *opt = engine->opt;
+  cvodeSolver_t *solver = engine->solver;
+
+  flag = CVodeGetNumSteps(solver->cvode_mem, &nst);
+  CVODE_HANDLE_ERROR(&flag, "CVodeGetNumSteps", 1);
+    
+  CVodeGetNumRhsEvals(solver->cvode_mem, &nfe);
+  CVODE_HANDLE_ERROR(&flag, "CVodeGetNumRhsEvals", 1);
+    
+  flag = CVodeGetNumLinSolvSetups(solver->cvode_mem, &nsetups);
+  CVODE_HANDLE_ERROR(&flag, "CVodeGetNumLinSolvSetups", 1);
+    
+  flag = CVDenseGetNumJacEvals(solver->cvode_mem, &nje);
+  CVODE_HANDLE_ERROR(&flag, "CVDenseGetNumJacEvals", 1);
+    
+  flag = CVodeGetNonlinSolvStats(solver->cvode_mem, &nni, &ncfn);
+  CVODE_HANDLE_ERROR(&flag, "CVodeGetNonlinSolvStats", 1);
+    
+  flag = CVodeGetNumErrTestFails(solver->cvode_mem, &netf);
+  CVODE_HANDLE_ERROR(&flag, "CVodeGetNumErrTestFails", 1);
+
+  fprintf(f, "\n## Integration Parameters:\n");
+  fprintf(f, "## mxstep   = %d rel.err. = %g abs.err. = %g \n",
+	  opt->Mxstep, opt->RError, opt->Error);
+  fprintf(f, "## CVode Statistics:\n");
+  fprintf(f, "## nst = %-6ld nfe  = %-6ld nsetups = %-6ld nje = %ld\n",
+	  nst, nfe, nsetups, nje); 
+  fprintf(f, "## nni = %-6ld ncfn = %-6ld netf = %ld\n",
+	  nni, ncfn, netf);
+    
+  if ((opt->Sensitivity) | (opt->DoAdjoint))
+    return(IntegratorInstance_printCVODESStatistics(engine, f));
+
+  return(1);
+}
+
+
+/*
+ * check return values of SUNDIALS functions
+ */
+int check_flag(void *flagvalue, const char *funcname, int opt)
+{
+
+  int *errflag;
+
+  /* Check if SUNDIALS function returned NULL pointer - no memory allocated */
+  if ( opt == 0 && flagvalue == NULL )
+  {
+    SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_CVODE_MALLOC_FAILED,
+		      "SUNDIALS_ERROR: %s() - returned NULL pointer",
+		      funcname);
+    return(1);
+  }
+
+  /* Check if flag < 0 */
+  else if ( opt == 1 )
+  {
+    errflag = (int *) flagvalue;
+    if ( *errflag < 0 )
+    {
+      SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_CVODE_MALLOC_FAILED,
+			"SUNDIALS_ERROR: %s() failed with flag = %d",
+			funcname, *errflag);
+      return(1);
+    }
+  }
+
+  /* Check if function returned NULL pointer - no memory allocated */
+  else if (opt == 2 && flagvalue == NULL)
+  {
+    SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_CVODE_MALLOC_FAILED,
+		      "SUNDIALS MEMORY_ERROR: %s() failed - returned NULL "
+		      "pointer", funcname);
+    return(1);
+  }
+
+  return(0);
+}
+
+
+/***************** Functions Called by the CVODE Solver ******************/
+
+/**
+   f routine: Compute f(t,x) = df/dx .
+   
+   This function is called by CVODE's integration routines every time
+   required. It evaluates the ODEs with the current variable values,
+   as supplied by CVODE's N_Vector y vector containing the values of
+   all variables (called x in this documentation.  These values are
+   first written back to CvodeData.  Then every ODE is passed to
+   evaluateAST, together with the cvodeData_t *, and this function
+   calculates the current value of the ODE.  The returned value is
+   written back to CVODE's N_Vector(ydot) vector that contains the
+   values of the ODEs.
+
+*/
+
+static int f(realtype t, N_Vector y, N_Vector ydot, void *f_data)
+{
+  
+  int i;
+  realtype *ydata, *dydata;
+  cvodeData_t *data;
+  data   = (cvodeData_t *) f_data;
+  ydata  = NV_DATA_S(y);
+  dydata = NV_DATA_S(ydot);
+
+  /* update time  */
+  data->currenttime = t;
+
+  /** UPDATE ODE VARIABLES from CVODE */
+  for ( i=0; i<data->model->neq; i++ ) 
+    data->value[i] = ydata[i];
+
+
+  /** check whether any variables are negative */
+  if ( data->opt->DetectNegState  )  
+    for ( i=0; i<data->model->neq; i++ )
+      if (data->value[i] < 0)
+	return (1);
+
+  
+  /** UPDATE ASSIGNMENT RULES */ /* DONT USE ORDERING FOR SENS W/O MATRIX */
+  /** update parameters: p is modified by CVODES,
+      if jacobi or sensitivity could not be generated  */
+  if ( data->use_p )
+  {
+    for ( i=0; i<data->nsens; i++ )
+      data->value[data->os->index_sens[i]] = data->p[i];
+
+    for ( i=0; i<data->model->nass; i++ )
+    {
+      nonzeroElem_t *ordered = data->model->assignmentOrder[i];
+#ifdef ARITHMETIC_TEST
+      data->value[ordered->i] = ordered->ijcode->evaluate(data);    
+#else
+      data->value[ordered->i] = evaluateAST(ordered->ij, data);
+#endif    
+    }
+  }
+  else
+  {
+    for ( i=0; i<data->model->nassbeforeodes; i++ )
+    {
+      nonzeroElem_t *ordered = data->model->assignmentsBeforeODEs[i];
+#ifdef ARITHMETIC_TEST
+      data->value[ordered->i] =	ordered->ijcode->evaluate(data);    
+#else
+      data->value[ordered->i] =	evaluateAST(ordered->ij, data);
+#endif    
+    }
+  }
+  
+  /** evaluate ODEs f(x,p,t) = dx/dt */
+  for ( i=0; i<data->model->neq; i++ )
+#ifdef ARITHMETIC_TEST
+    dydata[i] = data->model->odecode[i]->evaluate(data);    
+#else
+    dydata[i] = evaluateAST(data->model->ode[i],data);
+#endif
+
+  /** reset parameters */
+  /*!!! necessary? here AND/OR in Jacobian? */
+  if ( data->use_p )
+  {
+    for ( i=0; i<data->nsens; i++ )
+      data->value[data->os->index_sens[i]] = data->p_orig[i];
+    
+    for ( i=0; i<data->model->nass; i++ )
+    {
+      nonzeroElem_t *ordered = data->model->assignmentOrder[i];
+#ifdef ARITHMETIC_TEST
+      data->value[ordered->i] =	ordered->ijcode->evaluate(data);    
+#else
+      data->value[ordered->i] =	evaluateAST(ordered->ij, data);
+#endif    
+    }
+  }
+  return (0);
+}
+
+/**
+   Jacobian routine: Compute J(t,x) = df/dx
+   
+   This function is (optionally) called by CVODE's integration routines
+   every time  required.
+   Very similar to the f routine, it evaluates the Jacobian matrix
+   equations with CVODE's current values and writes the results
+   back to CVODE's internal vector DENSE_ELEM(J,i,j).
+*/
+
+static int JacODE(long int N, DenseMat J, realtype t,
+		  N_Vector y, N_Vector fy, void *jac_data,
+		  N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3)
+{
+  
+  int i;
+  realtype *ydata;
+  cvodeData_t *data;
+  data  = (cvodeData_t *) jac_data;
+  ydata = NV_DATA_S(y);
+  
+  /** update parameters: p is modified by CVODES,
+      if fS could not be generated  */
+  if ( data->use_p )
+    for ( i=0; i<data->nsens; i++ )
+      data->value[data->os->index_sens[i]] = data->p[i];
+
+  /** update ODE variables from CVODE */
+  for ( i=0; i<data->model->neq; i++ ) data->value[i] = ydata[i];
+
+  /** update time */
+  data->currenttime = t;
+
+  /** evaluate Jacobian J = df/dx */
+  for ( i=0; i<data->model->sparsesize; i++ )
+  {
+    nonzeroElem_t *nonzero = data->model->jacobSparse[i];    
+    
+#ifdef ARITHMETIC_TEST
+    DENSE_ELEM(J, nonzero->i,nonzero->j) = nonzero->ijcode->evaluate(data);
+#else
+    DENSE_ELEM(J, nonzero->i,nonzero->j) = evaluateAST(nonzero->ij, data);
+#endif
+  }
+  
+  
+  /** reset parameters */
+  if ( data->use_p )
+    for ( i=0; i<data->nsens; i++ )
+      data->value[data->os->index_sens[i]] = data->p_orig[i];
+  
+  return (0);
+}
+
+
+
+static int fQ(realtype t, N_Vector y, N_Vector qdot, void *fQ_data)
+{
+  int i;
+  realtype *ydata, *dqdata;
+  cvodeData_t *data;
+  integratorInstance_t *engine;
+  
+  engine = (integratorInstance_t *) fQ_data;
+  data  =  engine->data;
+
+  ydata = NV_DATA_S(y);
+  dqdata = NV_DATA_S(qdot);
+
+  /* update ODE variables from CVODE  */  
+  for ( i=0; i<data->model->neq; i++ ) data->value[i] = ydata[i];
+ 
+  /* update time */
+  data->currenttime = t;
+
+  /* only the first component matters */
+  dqdata[0] = evaluateAST(engine->om->ObjectiveFunction, data);
+
+  return (0);
+}
+
+
+
+/*! @} */
+/* End of file */
diff --git a/src/daeSolver.c b/src/daeSolver.c
new file mode 100644
index 0000000..8d8c393
--- /dev/null
+++ b/src/daeSolver.c
@@ -0,0 +1,454 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2007-09-19 14:59:33 raim>
+  $Id: daeSolver.c,v 1.14 2007/09/20 01:16:12 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *
+ */
+/*! \defgroup ida IDA DAE Solver: x(t)
+    \ingroup integrator
+
+    \brief NOT COMPILED CODE: This module contains the functions that
+    will call SUNDIALS IDA solver routines for DAE systems, once
+    implemented.
+
+    This code is not working yet. It is not compiled with the current
+    package. It is included in the documentation merely to motivate
+    people to help us implement this functionality. The main problem
+    is that ODE construction currently can't decide which variables
+    are to be defined via algebraic constraints. Contact us, if you
+    want to help!
+*/
+/*@{*/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/* Header Files for CVODE */
+#include <ida/ida.h>
+#include <ida/ida_dense.h>
+#include <cvodes/cvodes_dense.h>
+#include <nvector/nvector_serial.h>
+
+#include "sbmlsolver/cvodeData.h"
+#include "sbmlsolver/processAST.h"
+#include "sbmlsolver/odeModel.h"
+#include "sbmlsolver/variableIndex.h"
+#include "sbmlsolver/solverError.h"
+#include "sbmlsolver/cvodeSolver.h"
+#include "sbmlsolver/daeSolver.h"
+
+#include "private/macro.h"
+
+/* Prototypes of functions called by IDA */
+
+static int fRes(realtype tres, N_Vector yy, N_Vector yp,
+		N_Vector resval, void *rdata);
+
+static int JacRes(long int Neq, realtype tt, N_Vector yy, N_Vector yp,
+		  N_Vector resvec, realtype cj, void *jdata, DenseMat JJ,
+		  N_Vector tempv1, N_Vector tempv2, N_Vector tempv3);
+
+
+static void
+IntegratorInstance_freeIDASpecSolverStructures(integratorInstance_t *);
+
+/* The Hot Stuff! */
+/** 
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_idaOneStep(integratorInstance_t *engine)
+{
+    int i, flag;
+    realtype *ydata = NULL;
+    
+    cvodeSolver_t *solver = engine->solver;
+    cvodeData_t *data = engine->data;
+/*     cvodeSettings_t *opt = engine->opt; */
+/*     cvodeResults_t *results = engine->results; */
+    odeModel_t *om = engine->om;
+    
+    /* !!!! calling CVODE !!!! */
+    flag = -1; /* IDASolver(solver->cvode_mem, solver->tout, &(solver->t),
+		  solver->y, solver->dy, IDA_NORMAL); */
+
+    if ( flag != IDA_SUCCESS )
+      {
+        static const char *message[] =
+	  {
+	    /*  0 IDA_SUCCESS */
+	    "Success",
+	    /**/
+	    /*  1 IDA_ROOT_RETURN */
+	    /*   "CVode succeeded, and found one or more roots" */
+	    /*  2 IDA_TSTOP_RETURN */
+	    /*   "CVode succeeded and returned at tstop" */
+	    /**/
+	    /* -1 IDA_MEM_NULL -1 (old CVODE_NO_MEM) */
+	    "The cvode_mem argument was NULL",
+	    /* -2 IDA_ILL_INPUT */
+	    "One of the inputs to CVode is illegal. This "
+	    "includes the situation when a component of the "
+	    "error weight vectors becomes < 0 during "
+	    "internal time-stepping. The ILL_INPUT flag "
+	    "will also be returned if the linear solver "
+	    "routine CV--- (called by the user after "
+	    "calling CVodeMalloc) failed to set one of the "
+	    "linear solver-related fields in cvode_mem or "
+	    "if the linear solver's init routine failed. In "
+	    "any case, the user should see the printed "
+	    "error message for more details.",
+	    /* -3 IDA_NO_MALLOC */
+	    "cvode_mem was not allocated",
+	    /* -4 IDA_TOO_MUCH_WORK */
+	    "The solver took %g internal steps but could not "
+	    "compute variable values for time %g",
+	    /* -5 IDA_TOO_MUCH_ACC */
+	    "The solver could not satisfy the accuracy " 
+	    "requested for some internal step.",
+	    /* -6 IDA_ERR_FAILURE */
+	    "Error test failures occurred too many times "
+	    "during one internal time step or "
+	    "occurred with |h| = hmin.",
+	    /* -7 IDA_CONV_FAILURE */
+	    "Convergence test failures occurred too many "
+	    "times during one internal time step or occurred "
+	    "with |h| = hmin.",
+	    /* -8 IDA_LINIT_FAIL */
+	    "CVode -- Initial Setup: "
+	    "The linear solver's init routine failed.",
+	    /* -9 IDA_LSETUP_FAIL */
+	    "The linear solver's setup routine failed in an "
+	    "unrecoverable manner.",
+	    /* -10 IDA_LSOLVE_FAIL */
+	    "The linear solver's solve routine failed in an "
+	    "unrecoverable manner.",
+	    /* -11 IDA_MEM_FAIL */
+	    "A memory allocation failed. "
+	    "(including an attempt to increase maxord)",
+	    /* -12 IDA_RTFUNC_NULL */
+	    "nrtfn > 0 but g = NULL.",
+	    /* -13 IDA_NO_SLDET */
+	    "CVodeGetNumStabLimOrderReds -- Illegal attempt "
+	    "to call without enabling SLDET.",
+	    /* -14 IDA_BAD_K */
+	    "CVodeGetDky -- Illegal value for k.",
+	    /* -15 IDA_BAD_T */
+	    "CVodeGetDky -- Illegal value for t.",
+	    /* -16 IDA_BAD_DKY */
+	    "CVodeGetDky -- dky = NULL illegal.",
+	    /* -17 IDA_PDATA_NULL */
+	    "???",
+	  };
+	    
+	SolverError_error(
+			  ERROR_ERROR_TYPE,
+			  flag,
+			  (abs(flag) < (int)NUMBER_OF_ELEMENTS(message)) ? message[abs(flag)] : "???",
+			  solver->tout);
+	SolverError_error(
+			  WARNING_ERROR_TYPE,
+			  SOLVER_ERROR_INTEGRATION_NOT_SUCCESSFUL,
+			  "Integration not successful. Results are not complete.");
+
+	return 0 ; /* Error - stop integration*/
+      }
+    
+    ydata = NV_DATA_S(solver->y);
+
+    
+    /* update cvodeData time dependent variables */    
+    for ( i=0; i<om->neq; i++ )
+      data->value[i] = ydata[i];
+
+    /* update rest of data with internal default function */
+    return IntegratorInstance_updateData(engine);
+
+}
+
+
+/************* CVODES integrator setup functions ************/
+
+
+/* creates CVODES structures and fills cvodeSolver 
+   return 1 => success
+   return 0 => failure
+*/
+int
+IntegratorInstance_createIDASolverStructures(integratorInstance_t *engine)
+{
+  int i, flag, neq, nalg;
+  realtype *ydata, *abstoldata, *dydata;
+  
+  odeModel_t *om = engine->om;
+  cvodeData_t *data = engine->data;
+  cvodeSolver_t *solver = engine->solver;
+  cvodeSettings_t *opt = engine->opt;
+  
+  neq = engine->om->neq;   /* number of ODEs */
+  nalg = engine->om->nalg; /* number of algebraic constraints */
+  
+  /* construct jacobian, if wanted and not yet existing */
+  if ( opt->UseJacobian && om->jacob == NULL ) 
+    /* reset UseJacobian option, depending on success */
+    engine->UseJacobian = ODEModel_constructJacobian(om);
+  else if ( !opt->UseJacobian )
+  {
+    /* free jacobian from former runs (not necessary, frees also
+       unsuccessful jacobians from former runs ) */
+    ODEModel_freeJacobian(om);
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_MODEL_NOT_SIMPLIFIED,
+		      "Jacobian matrix construction skipped.");
+    engine->UseJacobian = om->jacobian;
+  }
+  /* construct algebraic `Jacobian' (or do that in constructJacobian */
+  
+  /* CVODESolverStructures from former runs must be freed */
+  if ( engine->run > 1 )
+    IntegratorInstance_freeIDASolverStructures(engine);
+  
+  
+    /*
+     * Allocate y, abstol vectors
+     */
+  solver->y = N_VNew_Serial(neq + nalg);
+  CVODE_HANDLE_ERROR((void *)solver->y, "N_VNew_Serial for vector y", 0);
+  
+  solver->dy = N_VNew_Serial(neq + nalg);
+  CVODE_HANDLE_ERROR((void *)solver->dy, "N_VNew_Serial for vector dy", 0);
+    
+  solver->abstol = N_VNew_Serial(neq + nalg);
+  CVODE_HANDLE_ERROR((void *)solver->abstol,
+		     "N_VNew_Serial for vector abstol", 0);
+  
+  /*
+   * Initialize y, abstol vectors
+   */
+  ydata      = NV_DATA_S(solver->y);
+  abstoldata = NV_DATA_S(solver->abstol);
+  dydata     = NV_DATA_S(solver->dy);
+  
+  for ( i=0; i<neq; i++ )
+  {
+    /* Set initial value vector components of y and y' */
+    ydata[i] = data->value[i];
+    /* Set absolute tolerance vector components,
+       currently the same absolute error is used for all y */ 
+    abstoldata[i] = opt->Error;
+    dydata[i] = evaluateAST(om->ode[i], data);
+  }
+  /* set initial value vector components for algebraic rule variables  */
+    
+  /* scalar relative tolerance: the same for all y */
+  solver->reltol = opt->RError;
+
+  /*
+   * Call IDACreate to create the solver memory:
+   *
+   */
+  solver->cvode_mem = IDACreate();
+  CVODE_HANDLE_ERROR((void *)(solver->cvode_mem), "IDACreate", 0);
+
+  /*
+   * Call IDAMalloc to initialize the integrator memory:
+   *
+   * cvode_mem  pointer to the CVode memory block returned by CVodeCreate
+   * fRes         user's right hand side function
+   * t0         initial value of time
+   * y          the dependent variable vector
+   * dy         the ODE value vector
+   * IDA_SV     specifies scalar relative and vector absolute tolerances
+   * reltol     the scalar relative tolerance
+   * abstol     pointer to the absolute tolerance vector
+   */
+  flag = IDAMalloc(solver->cvode_mem, fRes, solver->t0, solver->y,
+		   solver->dy, IDA_SV, solver->reltol, solver->abstol);
+  CVODE_HANDLE_ERROR(&flag, "IDAMalloc", 1);
+
+  /* 
+   * Link the main integrator with data for right-hand side function
+   */ 
+  flag = IDASetRdata(solver->cvode_mem, engine->data);
+  CVODE_HANDLE_ERROR(&flag, "IDASetRdata", 1);
+    
+  /*
+   * Link the main integrator with the IDADENSE linear solver
+   */
+  flag = IDADense(solver->cvode_mem, neq);
+  CVODE_HANDLE_ERROR(&flag, "IDADense", 1);
+
+
+  /*
+   * Set the routine used by the IDADense linear solver
+   * to approximate the Jacobian matrix to ...
+   */
+  if ( opt->UseJacobian == 1 ) 
+    /* ... user-supplied routine JacRes : put JacRes instead of NULL
+       when working */
+    flag = IDADenseSetJacFn(solver->cvode_mem, NULL, data);
+  else 
+    /* ... the internal default difference quotient routine IDADenseDQJac */
+    flag = IDADenseSetJacFn(solver->cvode_mem, NULL, NULL);    
+    
+  CVODE_HANDLE_ERROR(&flag, "IDADenseSetJacFn", 1);
+     
+  return 1; /* OK */
+}
+
+/* frees N_V vector structures, and the cvode_mem solver */
+void IntegratorInstance_freeIDASolverStructures(integratorInstance_t *engine)
+{
+  /* Free CVODE structures: the same for both */ 
+  IntegratorInstance_freeCVODESolverStructures(engine);
+}
+
+/* frees only sensitivity structure, not used at the moment  */
+static void
+IntegratorInstance_freeIDASpecSolverStructures(integratorInstance_t *engine)
+{
+  /* Free sensitivity vector yS */
+  N_VDestroy_Serial(engine->solver->dy);
+  engine->solver->dy = NULL;
+}
+
+/** \brief Prints some final statistics of the calls to CVODE routines
+ */
+
+SBML_ODESOLVER_API void IntegratorInstance_printIDAStatistics(integratorInstance_t *engine, FILE *f)
+{
+  /* print IDA statistics */
+  IntegratorInstance_printCVODEStatistics(engine, f);
+  /* print additional IDA statistics ...*/
+}
+
+/***************** Functions Called by the CVODE Solver ******************/
+
+/**
+   fRes routine. Compute the system residual function.
+   This function is called by IDA's integration routines every time
+   needed. 
+*/
+
+static int
+fRes(realtype t, N_Vector y, N_Vector dy, N_Vector r, void *f_data)
+{
+  
+  int i;
+  realtype *ydata, *dydata, *resdata;
+  cvodeData_t *data;
+  data   = (cvodeData_t *) f_data;
+  ydata  = NV_DATA_S(y);
+  dydata = NV_DATA_S(dy);
+  resdata  = NV_DATA_S(r);
+  
+  /* update ODE variables from CVODE */
+  for ( i=0; i<data->model->neq; i++ ) 
+    data->value[i] = ydata[i];
+
+  /* update algebraic constraint defined variables */
+
+  
+  /* update assignment rules */
+  for ( i=0; i<data->model->nass; i++ ) 
+    data->value[data->model->neq+i] =
+      evaluateAST(data->model->assignment[i],data);
+
+  /* update time  */
+  data->currenttime = t;
+
+  /* evaluate residual functions:
+     for available ODEs: 0 = dY/dt - dY/dt
+     for algebraicRules: 0 = algebraic rule */
+  for ( i=0; i<data->model->neq; i++ ) 
+    resdata[i] = evaluateAST(data->model->ode[i],data) - dydata[i];
+
+  for ( i=0 ; i<data->model->nalg; i++ ) 
+    resdata[i] = evaluateAST(data->model->algebraic[i],data);
+
+  return 0;
+}
+
+
+/*
+  Jacobian residual routine. Compute J(t,y).
+  This function is (optionally) called by IDA's integration routines
+  every time needed.
+  Very similar to the f routine, it evaluates the Jacobian matrix
+  equations with IDA's current values and writes the results
+  back to IDA's internal vector DENSE_ELEM(J,i,j).
+*/
+
+static int
+JacRes(long int N, realtype t, N_Vector y, N_Vector dy,
+       N_Vector resvec, realtype cj, void *jac_data, DenseMat J,
+       N_Vector tempv1, N_Vector tempv2, N_Vector tempv3)
+{
+  
+  int i, j;
+  realtype *ydata;
+  cvodeData_t *data;
+  data  = (cvodeData_t *) jac_data;
+  ydata = NV_DATA_S(y);
+
+  /* update ODE variables from CVODE */
+  for ( i=0; i<data->model->neq; i++ ) {
+    data->value[i] = ydata[i];
+  }
+  /* update algebraic constraint defined variables */
+
+  /* update assignment rules */
+  for ( i=0; i<data->model->nass; i++ ) {
+    data->value[data->model->neq+i] =
+      evaluateAST(data->model->assignment[i],data);
+  }
+  /* update time */
+  data->currenttime = t;
+
+  /* evaluate Jacobian*/
+  for ( i=0; i<data->model->neq; i++ ) {
+    for ( j=0; j<data->model->neq; j++ ) {
+      DENSE_ELEM(J,i,j) = evaluateAST(data->model->jacob[i][j], data);
+      if ( i == j )
+	DENSE_ELEM(J, i, j) -= cj;
+    }
+  }
+  
+  for ( i=0; i<data->model->nalg; i++ ) 
+    for ( j=0; j<data->model->nalg; j++ ) 
+      DENSE_ELEM(J,i,j) = 1.; /* algebraic jacobian here!! */
+
+  return (0);
+}
+
+
+/** @} */
+/* End of file */
diff --git a/src/drawGraph.c b/src/drawGraph.c
new file mode 100644
index 0000000..afdce91
--- /dev/null
+++ b/src/drawGraph.c
@@ -0,0 +1,1071 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2007-10-26 17:39:56 raim>
+  $Id: drawGraph.c,v 1.30 2008/11/07 08:51:53 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Christoph Flamm
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/*! \defgroup drawGraph Graph Drawing
+    \brief This optional module contains all functions to draw SBML and ODE
+    Model structures as a graph with diverse output formats.
+
+    Graph drawing is based on the Graphviz library. Unfortunately most
+    graphviz versions currently have memory leaks. If you know, how these
+    could be avoided, please contact us.
+*/
+/*@{*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Header Files for libsbml */
+#include <sbml/SBMLTypes.h>
+
+/* System specific definitions,
+   created by configure script */
+#ifndef _WIN32
+#include "config.h"
+#endif
+
+/* own header files */
+#include "sbmlsolver/cvodeData.h"
+#include "sbmlsolver/processAST.h"
+#include "sbmlsolver/drawGraph.h"
+#include "sbmlsolver/solverError.h"
+#include "sbmlsolver/util.h"
+
+/* Header Files for Graphviz */
+#if USE_GRAPHVIZ
+#if (GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 4) || GRAPHVIZ_MAJOR_VERSION >= 3
+#include <gvc.h>
+#else
+#include <dotneato.h>
+#include <gvrender.h>
+#endif
+#else
+static int drawSensitivityTxt(cvodeData_t *data, char *file, double);
+static int drawJacobyTxt(cvodeData_t *data, char *file);
+static int drawModelTxt(Model_t *m, char *file);
+#endif
+
+#define WORDSIZE 10000
+
+/** Draws a graph of the non-zero entries in the Jacobian matrix J =
+    df/dx of an ODE system f(x,p,t) = dx/dt at the end-time of the
+    last integration.
+
+    Negative entries f(x1)/dx2 will be drawn as a red edge with a
+    `tee' arrowhead from x2 to x1, representing the negative influence
+    of x2 on x1. Positive entries will be drawn in black with a
+    normal arrowhead. The edges are labelled by the actual value of
+    the entry at time t. Note, that edge labels and also graph
+    structure can change with time.
+
+    The input cvodeData can be retrieved from an integratorInstance with
+    IntegratorInstance_getData(). The output graph will be written to
+    a file named `file.`format', where format can be e.g. `ps', `svg',
+    `jpg', `png', `cmapx' etc. The latter retrieves an HTML image map.
+    Please see the graphviz documentation for other available formats.
+*/
+
+SBML_ODESOLVER_API int drawJacoby(cvodeData_t *data, char *file, char *format)
+{
+  /** if SOSlib has been compiled without graphviz, the graph will be
+      written to a text file in graphviz' dot format */
+#if !USE_GRAPHVIZ
+
+  SolverError_error(WARNING_ERROR_TYPE, SOLVER_ERROR_NO_GRAPHVIZ,
+		    "odeSolver has been compiled without GRAPHIZ. ",
+		    "Graphs are printed to stdout in graphviz' .dot format.");
+
+  drawJacobyTxt(data, file);
+
+#else
+
+  int i, j;
+  GVC_t *gvc;
+  Agraph_t *g;
+  Agnode_t *r;
+  Agnode_t *s;  
+  Agedge_t *e;
+  Agsym_t *a;
+  char name[WORDSIZE];
+  char label[WORDSIZE];  
+  char *output[4];
+  char *command = "dot";
+  char *formatopt;
+  char *outfile;
+  
+
+  /* setting name of outfile */
+  ASSIGN_NEW_MEMORY_BLOCK(outfile, strlen(file)+ strlen(format)+7, char, 0);
+  sprintf(outfile, "-o%s_jm.%s", file, format);
+  
+  /* setting output format */
+  ASSIGN_NEW_MEMORY_BLOCK(formatopt, strlen(format)+3, char, 0);
+  sprintf(formatopt, "-T%s", format); 
+
+  /* construct command-line */
+  output[0] = command;
+  output[1] = formatopt;
+  output[2] = outfile;
+  output[3] = NULL;
+    
+  /* set up renderer context */
+  gvc = (GVC_t *) gvContext();
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION < 4
+  dotneato_initialize(gvc, 3, output);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  parse_args(gvc, 3, output);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6 || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvParseArgs(gvc, 3, output);
+#endif
+
+  g = agopen("G", AGDIGRAPH);
+
+  /* avoid overlapping nodes, for graph embedding by neato */
+  a = agraphattr(g, "overlap", "");
+  agxset(g, a->index, "scale");
+
+  /* set graph label */
+  if ( Model_isSetName(data->model->m) )
+    sprintf(label, "%s at time %g",  Model_getName(data->model->m),
+	    data->currenttime);
+  else if ( Model_isSetId(data->model->m) )
+    sprintf(label, "%s at time %g",  Model_getId(data->model->m),
+	    data->currenttime);
+  else
+    sprintf(label, "label=\"at time %g\";\n", data->currenttime);
+
+  a = agraphattr(g, "label", "");
+  agxset(g, a->index, label);
+  
+  /*
+    Set edges from species A to species B if the
+    corresponding entry in the jacobian ((d[B]/dt)/d[A])
+    is not '0'. Set edge color 'red' and arrowhead 'tee'
+    if negative.
+  */
+
+  for ( i=0; i<data->model->neq; i++ )
+  {
+    for ( j=0; j<data->model->neq; j++ )
+    {
+      if ( evaluateAST(data->model->jacob[i][j], data) != 0 )
+      {	
+	sprintf(name, "%s", data->model->names[j]);
+	r = agnode(g,name);
+	agset(r, "label", data->model->names[j]);
+
+	sprintf(label, "%s.htm", data->model->names[j]);
+	a = agnodeattr(g, "URL", "");
+	agxset(r, a->index, label);
+	
+	sprintf(name,"%s", data->model->names[i]);
+	s = agnode(g,name);
+	agset(s, "label", data->model->names[i]);
+
+	sprintf(label, "%s.htm", data->model->names[i]);	
+	a = agnodeattr(g, "URL", "");
+	agxset(s, a->index, label);
+	
+	e = agedge(g,r,s);
+
+	a = agedgeattr(g, "label", "");
+	sprintf(name, "%g",  evaluateAST(data->model->jacob[i][j], data)); 
+	agxset (e, a->index, name);
+	
+	if ( evaluateAST(data->model->jacob[i][j], data) < 0 )
+	{
+	  a = agedgeattr(g, "arrowhead", "");
+	  agxset(e, a->index, "tee");
+	  a = agedgeattr(g, "color", "");
+	  agxset(e, a->index, "red"); 	    
+	}	
+      }
+    }
+  }
+  
+  /* Compute a layout */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  gvBindContext(gvc, g);
+  dot_layout(g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  gvlayout_layout(gvc, g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6 || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvLayoutJobs(gvc, g);
+#endif
+  
+  /* Write the graph according to -T and -o options */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  dotneato_write(gvc);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  emit_jobs(gvc, g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6 || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvRenderJobs(gvc, g);
+#endif
+  
+  /* Clean out layout data */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  dot_cleanup(g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  gvlayout_cleanup(gvc, g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6 || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvFreeLayout(gvc, g);
+#endif
+  
+  /* Free graph structures */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  dot_cleanup(g);
+#endif
+  agclose(g);
+
+  /* Clean up output file and errors */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  gvFREEcontext(gvc);
+  dotneato_eof(gvc);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  dotneato_terminate(gvc);
+#elif (GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6) || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvFreeContext(gvc);
+#endif
+
+  xfree(formatopt);
+  xfree(outfile);
+
+#endif
+
+  return 1;
+}
+
+#if !USE_GRAPHVIZ
+
+static int drawJacobyTxt(cvodeData_t *data, char *file)
+{
+
+  int i, j;
+  char filename[WORDSIZE];
+  FILE *f;
+
+  sprintf(filename, "%s.dot", file);
+  f = fopen(filename, "w");
+  if (!f) {
+	  /* TODO: logging the error */
+	  return 0;
+  }
+  fprintf(f ,"digraph jacoby {\n");
+  fprintf(f ,"overlap=scale;\n");
+  if ( Model_isSetName(data->model->m) )
+    fprintf(f ,"label=\"%s at time %g\";\n", Model_getName(data->model->m),
+	    data->currenttime);
+  else if ( Model_isSetId(data->model->m) )
+    fprintf(f ,"label=\"%s at time %g\";\n", Model_getId(data->model->m),
+	    data->currenttime);
+  else
+    fprintf(f ,"label=\"at time %g\";\n", data->currenttime);
+
+
+  /*
+    Set edges from species A to species B if the
+    corresponding entry in the jacobian ((d[B]/dt)/d[A])
+    is not '0'. Set edge color 'red' and arrowhead 'tee'
+    if negative.
+  */
+
+
+  for ( i=0; i<data->model->neq; i++ )
+  {
+    for ( j=0; j<data->model->neq; j++ )
+    {
+      if ( evaluateAST(data->model->jacob[i][j], data) != 0 )
+      {
+	fprintf(f ,"%s->%s [label=\"%g\" ",
+		data->model->names[j],
+		data->model->names[i],
+		evaluateAST(data->model->jacob[i][j],
+			    data));
+	if ( evaluateAST(data->model->jacob[i][j], data) < 0 )
+	  fprintf(f ,"arrowhead=tee color=red];\n");
+	else
+	  fprintf(f ,"];\n");
+      }
+    }
+  }
+  for ( i=0; i<data->model->neq; i++ )
+  {
+    fprintf(f ,"%s [label=\"%s\"];", data->model->names[i],
+	    data->model->names[i]);
+  }   
+  fprintf(f, "}\n");
+  fclose(f);
+  return 1;
+}
+
+#endif
+
+
+/** Draws a graph of the non-zero entries in the sensitivity matrix P
+    = df/dp of an ODE system f(x,p,t) = dx/dt at the end-time of the
+    last integration.
+
+    Negative entries will f(x)/dp will be drawn as a red edge with a
+    `tee' arrowhead from p to x, representing the negative influence
+    of p on x.  Positive entries will be drawn in black with a normal
+    arrowhead. The edges are labelled by the actual value of the entry
+    at time t. Note, that edge labels and also graph structure can
+    change with time.
+    
+    As this graph is usually of very high or full connectivity, i.e.
+    no variable is completely independent of some parameter of the
+    system, the function takes a threshold between 0 and 1 as an
+    additional input. Only edges for entries greater than the
+    threshold multiplied by the maximum entry for species x will be
+    drawn.
+
+    The input cvodeData can be retrieved from an integratorInstance with
+    IntegratorInstance_getData(). The output graph will be written to
+    a file named `file.`format', where format can be e.g. `ps', `svg',
+    `jpg', `png', `cmapx' etc. The latter retrieves an HTML image map.
+    Please see the graphviz documentation for other available formats.
+*/
+
+SBML_ODESOLVER_API int drawSensitivity(cvodeData_t *data, char *file, char *format, double threshold)
+{
+
+  /** if SOSlib has been compiled without graphviz, the graph will be
+      written to a text file in graphviz' dot format */
+
+#if !USE_GRAPHVIZ
+
+  SolverError_error(WARNING_ERROR_TYPE, SOLVER_ERROR_NO_GRAPHVIZ,
+		    "odeSolver has been compiled without GRAPHIZ. ",
+		    "Graphs are printed to stdout in graphviz' .dot format.");
+
+  drawSensitivityTxt(data, file, threshold);
+
+#else
+
+  int i, j;
+  GVC_t *gvc;
+  Agraph_t *g;
+  Agnode_t *r;
+  Agnode_t *s;  
+  Agedge_t *e;
+  Agsym_t *a;
+  char name[WORDSIZE];
+  char label[WORDSIZE];  
+  char *output[4];
+  char *command = "dot";
+  char *formatopt;
+  char *outfile;
+  odeModel_t *om;
+  odeSense_t *os;
+  double *highest;
+  double *lowest;
+
+  om = data->model;
+  os = data->os;
+
+  /* setting name of outfile */
+  ASSIGN_NEW_MEMORY_BLOCK(outfile, strlen(file)+ strlen(format)+7, char, 0);
+  sprintf(outfile, "-o%s_s.%s", file, format);
+  
+  /* setting output format */
+  ASSIGN_NEW_MEMORY_BLOCK(formatopt, strlen(format)+3, char, 0);
+  sprintf(formatopt, "-T%s", format); 
+
+  /* construct command-line */
+  output[0] = command;
+  output[1] = formatopt;
+  output[2] = outfile;
+  output[3] = NULL;
+    
+  /* set up renderer context */
+  gvc = (GVC_t *) gvContext();
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION < 4
+  dotneato_initialize(gvc, 3, output);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  parse_args(gvc, 3, output);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6 || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvParseArgs(gvc, 3, output);
+#endif
+
+  g = agopen("G", AGDIGRAPH);
+
+  /* avoid overlapping nodes, for graph embedding by neato */
+  a = agraphattr(g, "overlap", "");
+  agxset(g, a->index, "scale");
+
+  /* set graph label */
+  if ( Model_isSetName(om->m) )
+    sprintf(label, "%s at time %g", Model_getName(om->m), data->currenttime);
+  else if ( Model_isSetId(om->m) )
+    sprintf(label, "%s at time %g", Model_getId(om->m), data->currenttime);
+  else
+    sprintf(label, "label=\"at time %g\";\n", data->currenttime);
+
+  a = agraphattr(g, "label", "");
+  agxset(g, a->index, label);
+  
+  /*
+    Set edges from species A to species B if the
+    corresponding entry in the jacobian ((d[B]/dt)/d[A])
+    is not '0'. Set edge color 'red' and arrowhead 'tee'
+    if negative.
+  */
+  ASSIGN_NEW_MEMORY_BLOCK(highest, data->nsens, double, 0);  
+  ASSIGN_NEW_MEMORY_BLOCK(lowest, data->nsens, double, 0);
+  
+  for ( j=0; j<data->nsens; j++ )
+  {
+    highest[j] = 0;
+    lowest[j] = 0;
+    for ( i=0; i<om->neq; i++ )
+    {
+      if ( data->sensitivity[i][j] > highest[j] )
+	highest[j] = data->sensitivity[i][j];
+      if ( data->sensitivity[i][j] < lowest[j] )
+	lowest[j] = data->sensitivity[i][j];
+    }
+  }
+
+  for ( i=0; i<om->neq; i++ )
+  {
+    for ( j=0; j<data->nsens; j++ )
+    {
+      if ( (data->sensitivity[i][j] > threshold*highest[j]) ||
+	   (data->sensitivity[i][j] < threshold*lowest[j]) )
+      {	
+	sprintf(name, "%s", om->names[os->index_sens[j]]);
+	r = agnode(g,name);
+	agset(r, "label", om->names[os->index_sens[j]]);
+
+	sprintf(label, "%s.htm", om->names[os->index_sens[j]]);
+	a = agnodeattr(g, "URL", "");
+	agxset(r, a->index, label);
+	
+	sprintf(name,"%s", om->names[i]);
+	s = agnode(g,name);
+	agset(s, "label", om->names[i]);
+
+	sprintf(label, "%s.htm", om->names[i]);	
+	a = agnodeattr(g, "URL", "");
+	agxset(s, a->index, label);
+	
+	e = agedge(g,r,s);
+
+	a = agedgeattr(g, "label", "");
+	sprintf(name, "%g",  data->sensitivity[i][j]); 
+	agxset (e, a->index, name);
+
+
+	
+	if ( data->sensitivity[i][j] < 0 )
+	{
+	  a = agedgeattr(g, "arrowhead", "");
+	  agxset(e, a->index, "tee");
+	  a = agedgeattr(g, "color", "");
+	  agxset(e, a->index, "red"); 	    
+	}	
+      }
+    }
+  }
+  
+  /* Compute a layout */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  gvBindContext(gvc, g);
+  dot_layout(g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  gvlayout_layout(gvc, g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6 || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvLayoutJobs(gvc, g);
+#endif
+  
+  /* Write the graph according to -T and -o options */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  dotneato_write(gvc);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  emit_jobs(gvc, g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6 || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvRenderJobs(gvc, g);
+#endif
+  
+  /* Clean out layout data */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  dot_cleanup(g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  gvlayout_cleanup(gvc, g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6 || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvFreeLayout(gvc, g);
+#endif
+  
+  /* Free graph structures */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  dot_cleanup(g);
+#endif
+  agclose(g);
+
+  /* Clean up output file and errors */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  gvFREEcontext(gvc);
+  dotneato_eof(gvc);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  dotneato_terminate(gvc);
+#elif (GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6) || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvFreeContext(gvc);
+#endif
+
+  xfree(formatopt);
+  xfree(outfile);
+  free(highest);
+  free(lowest);
+#endif
+
+  return 1;
+}
+
+#if !USE_GRAPHVIZ
+
+static int drawSensitivityTxt(cvodeData_t *data, char *file, double threshold)
+{
+
+  int i, j;
+  char filename[WORDSIZE];
+  FILE *f;
+  odeModel_t *om;
+  odeSense_t *os;
+  double *highest;
+  double *lowest;
+  
+  om = data->model;
+  os = data->os;
+  
+  sprintf(filename, "%s.dot", file);
+  f = fopen(filename, "w");
+  if (!f) {
+	  /* TODO: logging the error */
+	  return 0;
+  }
+  fprintf(f ,"digraph sensitivity {\n");
+  fprintf(f ,"overlap=scale;\n");
+  if ( Model_isSetName(om->m) )
+    fprintf(f ,"label=\"%s at time %g\";\n", Model_getName(om->m),
+	    data->currenttime);
+  else if ( Model_isSetId(om->m) )
+    fprintf(f ,"label=\"%s at time %g\";\n", Model_getId(om->m),
+	    data->currenttime);
+  else
+    fprintf(f ,"label=\"at time %g\";\n", data->currenttime);
+
+
+  /*
+    Set edges from species A to species B if the
+    corresponding entry in the jacobian ((d[B]/dt)/d[A])
+    is not '0'. Set edge color 'red' and arrowhead 'tee'
+    if negative.
+  */
+
+  ASSIGN_NEW_MEMORY_BLOCK(highest, data->nsens, double, 0);  
+  ASSIGN_NEW_MEMORY_BLOCK(lowest, data->nsens, double, 0);
+  
+  for ( j=0; j<data->nsens; j++ )
+  {
+    highest[j] = 0;
+    lowest[j] = 0;
+    for ( i=0; i<om->neq; i++ )
+    {
+      if ( data->sensitivity[i][j] > highest[j] )
+	highest[j] = data->sensitivity[i][j];
+      if ( data->sensitivity[i][j] < lowest[j] )
+	lowest[j] = data->sensitivity[i][j];
+    }
+  }
+  
+  for ( i=0; i<om->neq; i++ )
+  {
+    for ( j=0; j<data->nsens; j++ )
+    {
+      if ( (data->sensitivity[i][j] > threshold*highest[j]) ||
+	   (data->sensitivity[i][j] < threshold*lowest[j]) )
+      {	
+	fprintf(f ,"%s->%s [label=\"%g\" ",
+		om->names[os->index_sens[j]],
+		om->names[i],
+		data->sensitivity[i][j]);
+	
+	if ( data->sensitivity[i][j] < 0 ) 
+	  fprintf(f ,"arrowhead=tee color=red];\n");
+	else 
+	  fprintf(f ,"];\n");
+      }
+    }
+  }
+  for ( i=0; i<om->neq; i++ )
+    fprintf(f ,"%s [label=\"%s\"];", om->names[i], om->names[i]);
+  
+  for ( i=0; i<data->nsens; i++ ) 
+    fprintf(f ,"%s [label=\"%s\"];", om->names[os->index_sens[i]],
+	    om->names[os->index_sens[i]]);
+
+  fprintf(f, "}\n");
+  fclose(f);
+  free(highest);
+  free(lowest);
+  return 1;
+}
+
+#endif
+
+
+
+
+
+/** Draws a bipartite graph of the reaction network in the passed SBML
+    model `m' (as libSBML Model_t).
+
+    Reactions will be boxes and species will be ellipses. The
+    stoichiometry will be drawn as edge labels, if other than
+    1. Boundary species will be drawn in blue and constant species
+    will be drawn in green where the latter overrides the former.
+    Reaction modifier interactions will be drawn as dashed arrows with
+    an open circle as an arrowhead.
+
+    The output graph will be written to a file named `file.`format',
+    where format can be e.g. `ps', `svg', `jpg', `png', `cmapx'
+    etc. The latter retrieves an HTML image map.  Please see the
+    graphviz documentation for other available formats.
+*/
+
+SBML_ODESOLVER_API int drawModel(Model_t *m, char* file, char *format)
+{
+  
+  /** if SOSlib has been compiled without graphviz, the graph will be
+      written to a text file in graphviz' dot format */  
+#if !USE_GRAPHVIZ
+
+  SolverError_error(WARNING_ERROR_TYPE, SOLVER_ERROR_NO_GRAPHVIZ,
+		    "odeSolver has been compiled without GRAPHIZ. ",
+		    "Graphs are printed to stdout in graphviz' .dot format.");
+  drawModelTxt(m, file);
+  
+#else
+
+  GVC_t *gvc;
+  Agraph_t *g;
+  Agnode_t *r;
+  Agnode_t *s;  
+  Agedge_t *e;
+  Agsym_t *a;
+  Species_t *sp;
+  Reaction_t *re;
+  const ASTNode_t *math;  
+  SpeciesReference_t *sref;
+  SpeciesReference_t *mref; 
+  char *output[4];
+  char *command = "dot";
+  char *formatopt;
+  char *outfile;
+  int i,j;
+  int reversible;
+  char name[WORDSIZE];
+  char label[WORDSIZE];
+
+  /* setting name of outfile */
+  ASSIGN_NEW_MEMORY_BLOCK(outfile, strlen(file)+ strlen(format)+7, char, 0);
+  sprintf(outfile, "-o%s_rn.%s", file, format);
+
+  /* setting output format */
+  ASSIGN_NEW_MEMORY_BLOCK(formatopt, strlen(format)+3, char, 0);
+  sprintf(formatopt, "-T%s", format);
+
+  /* construct command-line */
+  output[0] = command;
+  output[1] = formatopt;
+  output[2] = outfile;
+  output[3] = NULL;
+
+  /* set up renderer context */
+  gvc = (GVC_t *) gvContext();
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION < 4
+  dotneato_initialize(gvc, 3, output);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  parse_args(gvc, 3, output);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6 || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvParseArgs(gvc, 3, output);  
+#endif  
+
+  g = agopen("G", AGDIGRAPH);
+  
+  /* avoid overlapping nodes, for graph embedding by neato */ 
+  a = agraphattr(g, "overlap", "");
+  agxset(g, a->index, "scale");
+
+  for ( i=0; i<Model_getNumReactions(m); i++ )
+  {
+    re = Model_getReaction(m,i);
+    reversible = Reaction_getReversible(re);
+    sprintf(name, "%s", Reaction_getId(re));
+    r = agnode(g,name);
+    a = agnodeattr(g, "shape", "ellipse");    
+    agxset(r, a->index, "box");
+
+    if ( Reaction_getFast(re) )
+    {
+      a = agnodeattr(g, "color", "");
+      agxset(r, a->index, "red");
+      a = agnodeattr(g, "fontcolor", "");
+      agxset(r, a->index, "red");
+    }
+    
+    sprintf(label, "%s", Reaction_isSetName(re) ?
+	    Reaction_getName(re) : Reaction_getId(re));
+    agset(r, "label", label);
+    
+    sprintf(label, "%s.htm", Reaction_getId(re));
+    a = agnodeattr(g, "URL", "");
+    agxset(r, a->index, label);
+    
+    for ( j=0; j<Reaction_getNumModifiers(re); j++ )
+    {
+      mref = Reaction_getModifier(re,j);
+      sp = Model_getSpeciesById(m, SpeciesReference_getSpecies(mref));
+      
+      sprintf(name,"%s", Species_getId(sp));
+      s = agnode(g,name);
+      sprintf(label, "%s", Species_isSetName(sp) ? 
+	      Species_getName(sp) : Species_getId(sp));
+      agset(s, "label", label);
+
+      if ( Species_getBoundaryCondition(sp) )
+      {
+	a = agnodeattr(g, "color", "");
+	agxset(s, a->index, "blue");
+      }
+      if ( Species_getConstant(sp) )
+      {
+	a = agnodeattr(g, "color", "");
+	agxset(s, a->index, "green4");
+      }
+
+      sprintf(label, "%s.htm", Species_getId(sp));
+      a = agnodeattr(g, "URL", "");
+      agxset(s, a->index, label);
+	
+      e = agedge(g,s,r);
+      a = agedgeattr(g, "style", "");
+      agxset(e, a->index, "dashed");
+      a = agedgeattr(g, "arrowhead", "");
+      agxset(e, a->index, "odot");
+    }
+
+    for ( j=0; j<Reaction_getNumReactants(re); j++ )
+    {
+      sref = Reaction_getReactant(re,j);
+      sp = Model_getSpeciesById(m, SpeciesReference_getSpecies(sref));
+      
+      sprintf(name,"%s", Species_getId(sp));
+      s = agnode(g, name);
+      sprintf(label, "%s", Species_isSetName(sp) ? 
+	      Species_getName(sp) : Species_getId(sp));
+      agset(s, "label", label);
+
+      if ( Species_getBoundaryCondition(sp) )
+      {
+	a = agnodeattr(g, "color", "");
+	agxset(s, a->index, "blue");
+      }
+      if ( Species_getConstant(sp) )
+      {
+	a = agnodeattr(g, "color", "");
+	agxset(s, a->index, "green4");
+      }
+
+      sprintf(label, "%s.htm", Species_getId(sp));
+      a = agnodeattr(g, "URL", "");
+      agxset(s, a->index, label);
+      
+      e = agedge(g,s,r);      
+      a = agedgeattr(g, "label", "");
+      
+      if ( (SpeciesReference_isSetStoichiometryMath(sref)) )
+      {
+        char *formula;
+        math = StoichiometryMath_getMath(SpeciesReference_getStoichiometryMath(sref));
+        formula = SBML_formulaToString(math);
+        if ( strcmp(formula, "1") != 0 )
+          agxset(e, a->index, formula);
+        free(formula);
+      }
+      else
+	if ( SpeciesReference_getStoichiometry(sref) != 1 )
+	{
+	  sprintf(name, "%g", SpeciesReference_getStoichiometry(sref));
+	  agxset (e, a->index, name);
+	}      
+      
+      if ( reversible == 1 )
+      {
+	a = agedgeattr(g, "arrowhead", "");
+	agxset(e, a->index, "diamond");
+	a = agedgeattr(g, "arrowtail", "");
+	agxset(e, a->index, "odiamond");
+      }
+    }
+    
+    for ( j=0; j<Reaction_getNumProducts(re); j++ )
+    {
+      sref = Reaction_getProduct(re,j);
+      sp = Model_getSpeciesById(m, SpeciesReference_getSpecies(sref));
+      sprintf(name,"%s", Species_getId(sp));
+      s = agnode(g,name);
+      sprintf(label, "%s", Species_isSetName(sp) ? 
+	      Species_getName(sp) : Species_getId(sp));
+      agset(s, "label", label);
+
+      if ( Species_getBoundaryCondition(sp) )
+      {
+	a = agnodeattr(g, "color", "");
+	agxset(s, a->index, "blue");
+      }
+      if ( Species_getConstant(sp) )
+      {
+	a = agnodeattr(g, "color", "");
+	agxset(s, a->index, "green4");
+      }
+
+      sprintf(label, "%s.htm", Species_getId(sp));
+      a = agnodeattr(g, "URL", "");
+      agxset(s, a->index, label);
+            
+      e = agedge(g,r,s);
+      a = agedgeattr(g, "label", "");
+      
+      if ( SpeciesReference_isSetStoichiometryMath(sref) )
+      {
+        char *formula;
+        math = StoichiometryMath_getMath(SpeciesReference_getStoichiometryMath(sref));
+        formula = SBML_formulaToString(math);
+        if ( strcmp(formula, "1") != 0 )
+          agxset(e, a->index, formula);
+        free(formula);
+      }
+      else      
+	if ( SpeciesReference_getStoichiometry(sref) != 1 )
+	{
+	  sprintf(name, "%g",SpeciesReference_getStoichiometry(sref));
+	  agxset (e, a->index,name);
+	}
+      
+      if ( reversible == 1 )
+      {
+	a = agedgeattr(g, "arrowhead", "");
+	agxset(e, a->index, "diamond");
+	a = agedgeattr(g, "arrowtail", "");
+	agxset(e, a->index, "odiamond");
+      }
+    }   
+  }
+
+  /* Compute a layout */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  gvBindContext(gvc, g);
+  dot_layout(g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  gvlayout_layout(gvc, g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6 || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvLayoutJobs(gvc, g);
+#endif
+
+  /* Write the graph according to -T and -o options */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  dotneato_write(gvc);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  emit_jobs(gvc, g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6 || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvRenderJobs(gvc, g);
+#endif
+  
+  /* Clean out layout data */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  dot_cleanup(g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  gvlayout_cleanup(gvc, g);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6 || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvFreeLayout(gvc, g);
+#endif
+  
+  /* Free graph structures */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  dot_cleanup(g);
+#else
+  agclose(g);
+#endif
+
+  /* Clean up output file and errors */
+#if GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION <= 2
+  gvFREEcontext(gvc);
+  dotneato_eof(gvc);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION == 4
+  dotneato_terminate(gvc);
+#elif GRAPHVIZ_MAJOR_VERSION == 2 && GRAPHVIZ_MINOR_VERSION >= 6 || GRAPHVIZ_MAJOR_VERSION >= 3
+  gvFreeContext(gvc); 
+#endif  
+
+  xfree(formatopt);  
+  xfree(outfile);
+  
+#endif
+  
+  return 1;
+
+}
+
+#if !USE_GRAPHVIZ
+
+static int drawModelTxt(Model_t *m, char *file)
+{
+  Species_t *s;
+  Reaction_t *re;
+  const ASTNode_t *math;
+  SpeciesReference_t *sref;
+  SpeciesReference_t *mref;
+  unsigned int i,j;
+  int reversible;
+  char filename[WORDSIZE];
+  FILE *f;
+  
+  sprintf(filename, "%s.dot", file);
+  f = fopen(filename, "w");
+  if (!f) {
+	  /* TODO: logging the error */
+	  return 0;
+  }
+  fprintf(f ,"digraph reactionnetwork {\n");
+  fprintf(f ,"label=\"%s\";\n",
+	  Model_isSetName(m) ?
+	  Model_getName(m) : (Model_isSetId(m) ? Model_getId(m) : "noId") );
+  fprintf(f ,"overlap=scale;\n");
+ 
+  for ( i=0; i<Model_getNumReactions(m); i++ )
+  {    
+    re = Model_getReaction(m,i);
+    reversible = Reaction_getReversible(re);
+    
+    for ( j=0; j<Reaction_getNumModifiers(re); j++ )
+    {
+      mref = Reaction_getModifier(re,j);
+      fprintf(f ,"%s->%s [style=dashed arrowhead=odot];\n",
+	      SpeciesReference_getSpecies(mref), Reaction_getId(re));
+    }
+
+    for ( j=0; j<Reaction_getNumReactants(re); j++ )
+    {
+      sref = Reaction_getReactant(re,j);
+      fprintf(f ,"%s->%s [label=\"",
+	      SpeciesReference_getSpecies(sref), Reaction_getId(re));
+      
+      if ( (SpeciesReference_isSetStoichiometryMath(sref)) )
+      {
+        char *formula;
+        math = StoichiometryMath_getMath(SpeciesReference_getStoichiometryMath(sref));
+        formula = SBML_formulaToString(math);
+        if ( strcmp(formula, "1") != 0 )
+          fprintf(f, "%s", formula);
+        free(formula);
+      }
+      else 
+	if ( SpeciesReference_getStoichiometry(sref) != 1)
+	  fprintf(f ,"%g",SpeciesReference_getStoichiometry(sref));
+	
+      
+      if ( reversible == 1 ) 
+	fprintf(f ,"\" arrowtail=onormal];\n");
+      else 
+	fprintf(f ,"\" ];\n");
+
+    }
+
+    for ( j=0; j<Reaction_getNumProducts(re); j++ )
+    {
+      sref = Reaction_getProduct(re,j);
+      fprintf(f ,"%s->%s [label=\"",
+	      Reaction_getId(re), SpeciesReference_getSpecies(sref));
+      if ( (SpeciesReference_isSetStoichiometryMath(sref)) )
+      {
+        char *formula;
+        math = StoichiometryMath_getMath(SpeciesReference_getStoichiometryMath(sref));
+        formula = SBML_formulaToString(math);
+        if ( strcmp(formula, "1") != 0 )
+          fprintf(f, "%s ", formula);
+        free(formula);
+      }
+      else 
+	if ( SpeciesReference_getStoichiometry(sref) != 1) 
+	  fprintf(f ,"%g ",SpeciesReference_getStoichiometry(sref));	
+      
+      if ( reversible == 1 ) 
+	fprintf(f ,"\" arrowtail=onormal];\n");
+      else 
+	fprintf(f ,"\" ];\n");
+
+    }
+    
+  }
+  
+  for ( i=0; i<Model_getNumReactions(m); i++ )
+  {
+    re = Model_getReaction(m,i);
+    fprintf(f ,"%s [label=\"%s\" shape=box];\n",
+	    Reaction_getId(re),
+	    Reaction_isSetName(re) ?
+	    Reaction_getName(re) : Reaction_getId(re));
+  }
+
+  for ( i=0; i<Model_getNumSpecies(m); i++)
+  {
+    s = Model_getSpecies(m, i);
+    fprintf(f ,"%s [label=\"%s\"];",
+	    Species_getId(s),
+	    Species_isSetName(s) ? Species_getName(s) : Species_getId(s));
+  }  
+  fprintf(f ,"}\n");
+  fclose(f);
+  return 1;
+}
+
+#endif
+/** @} */
+/* End of file */
diff --git a/src/evaluateAST.c b/src/evaluateAST.c
new file mode 100644
index 0000000..2ef4b9c
--- /dev/null
+++ b/src/evaluateAST.c
@@ -0,0 +1,604 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include <sbml/SBMLTypes.h>
+
+#include "sbmlsolver/cvodeData.h"
+#include "sbmlsolver/processAST.h"
+#include "sbmlsolver/solverError.h"
+
+static double aCosh(double x)
+{
+  return log(x + (sqrt(x - 1) * sqrt(x + 1)));
+}
+
+static double aSinh(double x)
+{
+  return log(x + sqrt((x * x) + 1));
+}
+
+static double aTanh(double x)
+{
+  return (log(1 + x) - log(1-x))/2 ;
+}
+
+/* function pointer to user defined function */
+static double (*UsrDefFunc)(char*, int, double*) = NULL;
+
+/** 
+ * Sets function pointer for  user defined function to udf
+
+ Takes a function pointer as an argument. This function udf is
+ called in evaluateAST to interface external data that can be
+ supplied by a calling applications. It must return a double value
+ for the current time of an integration run.
+   
+ ARGUMENTS TO THE PASSED FUNCTION:
+
+ char *:   must be the name of a function used in any formula in the
+ SBML file, but not defined via an SBML Function
+ Definition in the same SBML model
+
+ int:      is the number of arguments the SBML function takes, which is
+ also the size of the following double array
+
+ double *: is an array that is filled by evaluateAST to supply the
+ external function with current values of the arguments of
+ the respective function the SBML model
+
+ POSSIBLE APPLICATIONS:
+   
+ * Setting a set of udfs could later also be used to enhance
+ integration performance by using SBML sboTerms in kinetic laws,
+ i.e. for hard-coded kinetic law evaluation!
+
+ * The function might also be useful for introducing stochastic
+ effects to the ODE system. An external function could call a random
+ number generator.
+
+ Sorry, if above description is confusing, because of two different
+ types of `function'. Basically, it allows a hard-coded definition
+ of an otherwise undefined function in the SBML file. While this would
+ be invalid SBML (!), it allows a model to access external data.
+ We will in one of the next releases provide an example of a simple
+ interpolation function, that takes only the current time as argument
+ and interpolates a value for the current time from an external time
+ series data set.
+*/
+
+SBML_ODESOLVER_API void setUserDefinedFunction(double(*udf)(char*, int, double*))
+{
+  UsrDefFunc = udf;
+}
+
+/* ------------------------------------------------------------------------ */
+
+/** Evaluates the passed formula n by a simple recursion and returns
+    the result as a double value.
+
+    Variable names are searched in passed cvodeData, which is an
+    SBML_odeSolver specific data structure, containing current values of
+    indexed AST. See files cvodedata.c/h  and odeConstruct.c to learn
+    how this structure is built.
+  
+    Not implemented:
+    - Complex numbers and/or checking for domains of trigonometric and root
+    functions.
+    - Checking for precision and rounding errors.
+    - SBML model specific function DELAY 
+    - SBML Function Definitions
+    - LAMBDA (only used in SBML Function Definitions)
+  
+    The node type AST_DELAY defaults to 0.
+    The SBML DELAY function and unknown functions (SBML user-defined
+    functions) use the value of the left child (first argument to
+    function) or 0 if the node has no children and produce an errorMessage
+    via SOSlibs Error Management System.
+*/
+
+SBML_ODESOLVER_API double evaluateAST(ASTNode_t *n, cvodeData_t *data)
+{
+  int i, j, childnum;
+  int found, datafound;
+  int true;
+  time_series_t *ts=data->model->time_series;
+  double findtol=1e-5;
+ 
+  ASTNodeType_t type;
+  /* ASTNode_t **child; */
+
+  /* value* are for intermediate values. */
+  double value1, value2, value3, result;
+
+  if ( n == NULL )
+  {
+    SolverError_error(FATAL_ERROR_TYPE,
+		      SOLVER_ERROR_AST_UNKNOWN_NODE_TYPE,
+		      "evaluateAST: empty Abstract Syntax Tree (AST).");
+    return (0);
+  }
+  if ( ASTNode_isUnknown(n) )
+  {
+    SolverError_error(FATAL_ERROR_TYPE,
+		      SOLVER_ERROR_AST_UNKNOWN_NODE_TYPE,
+		      "evaluateAST: unknown ASTNode type");
+  }
+  result = 0;
+
+  childnum = ASTNode_getNumChildren(n);
+  type = ASTNode_getType(n);
+  switch(type)
+  {
+  case AST_INTEGER:
+    result = (double) ASTNode_getInteger(n);      
+    break;
+  case AST_REAL:
+    result = ASTNode_getReal(n);
+    break;
+  case AST_REAL_E:
+    result = ASTNode_getReal(n);
+    break;      
+  case AST_RATIONAL:
+    result = ASTNode_getReal(n) ;
+    break;
+	
+  case AST_NAME:
+    /** VARIABLES:
+
+    find the value of the variable in the data->value
+    array. SOSlib's extension to libSBML's AST allows to add the
+    index of the variable in this array to AST_NAME
+    (ASTIndexName). If the ASTNode is not indexed, its array
+    index is searched via the data->model->names array, which
+    corresponds to the data->value array. For nodes with name
+    `Time' or `time' the data->currenttime is returned.  If no
+    value is found a fatal error is produced. */
+    found = 0;
+    if ( ASTNode_isSetIndex(n) )
+    {
+      if ( ASTNode_isSetData(n) )
+      {
+
+        /* if continuous data is observed, obtain interpolated result */  
+        if ( (data->model->discrete_observation_data != 1) || (data->model->compute_vector_v != 1) )
+	{
+	  result = call(ASTNode_getIndex(n),
+			data->currenttime, ts);
+
+	}
+	else  /* if discrete data is observed, simply obtain value from time_series */
+	{
+          datafound = 0;
+          i = data->TimeSeriesIndex;
+        
+	    if ( fabs(data->currenttime - ts->time[i]) < findtol )
+	    {    
+	      result = ts->data[ASTNode_getIndex(n)][i];
+              datafound++;
+	    }
+	
+          if ( datafound != 1)
+	  {	            
+	    SolverError_error(FATAL_ERROR_TYPE,
+			SOLVER_ERROR_AST_EVALUATION_FAILED_DISCRETE_DATA,
+			"use of discrete time series data failed; none or several time points matching current time");
+	    result = 0;
+           /*  break;  */
+	  }
+          else found = 1;
+
+	}
+      }
+      else
+      {
+	/* majority case: just return the
+	   according value from data->values
+	   from the index stored by SOSlib
+	   ASTIndexNameNode sub-class of libSBML's ASTNode */
+	result = data->value[ASTNode_getIndex(n)];
+  
+      }
+      
+       found++;
+    }
+
+    if ( found == 0 )
+    {
+      for ( j=0; j<data->nvalues; j++ )
+      {
+	if ( (strcmp(ASTNode_getName(n),data->model->names[j]) == 0) )
+	{
+	  
+	  result = data->value[j];
+	  found++;
+	}
+      }
+    }
+
+    if ( found == 0 )
+    {
+      SolverError_error(FATAL_ERROR_TYPE,
+			SOLVER_ERROR_AST_EVALUATION_FAILED_MISSING_VALUE,
+			"No value found for AST_NAME %s . Defaults to Zero "
+			"to avoid program crash", ASTNode_getName(n));
+      result = 0;
+    }
+    break;
+
+  case AST_FUNCTION_DELAY:
+    SolverError_error(FATAL_ERROR_TYPE,
+		      SOLVER_ERROR_AST_EVALUATION_FAILED_DELAY,
+		      "Solving ODEs with Delay is not implemented. "
+		      "Defaults to 0 to avoid program crash");
+    result = 0.0;
+    break;
+  case AST_NAME_TIME:
+    result = (double) data->currenttime;
+    break;
+	
+  case AST_CONSTANT_E:
+    /** exp(1) is used to adjust exponentiale to machine precision */
+    result = exp(1.);
+    break;
+  case AST_CONSTANT_FALSE:
+    result = 0.0;
+    break;
+  case AST_CONSTANT_PI:
+    /** pi = 4 * atan 1  is used to adjust Pi to machine precision */
+    result = 4.*atan(1.);
+    break;
+  case AST_CONSTANT_TRUE:
+    result = 1.0;
+    break;
+
+  case AST_PLUS:
+    result = 0.0;
+    for ( i=0; i<childnum; i++) 
+      result += evaluateAST(child(n,i),data);   
+    break;      
+  case AST_MINUS:
+    if ( childnum<2 )
+      result = - (evaluateAST(child(n,0),data));
+    else
+      result = evaluateAST(child(n,0),data) - evaluateAST(child(n,1),data);
+    break;
+  case AST_TIMES:
+    result = 1.0;
+    for ( i=0; i<childnum; i++)
+    {
+      result *= evaluateAST(child(n,i),data);
+      if (result == 0.0) break; /* small optimization by skipping the rest of children */
+    }
+    break;
+  case AST_DIVIDE:
+    result = evaluateAST(child(n,0),data) / evaluateAST(child(n,1),data);
+    break;
+  case AST_POWER:
+    result = pow(evaluateAST(child(n,0),data),evaluateAST(child(n,1),data));
+    break;
+  case AST_LAMBDA:
+    SolverError_error(FATAL_ERROR_TYPE,
+		      SOLVER_ERROR_AST_EVALUATION_FAILED_LAMBDA,
+		      "Lambda can only be used in SBML function definitions."
+		      " Defaults to 0 to avoid program crash");
+    result = 0.0;
+    break;
+    /** FUNCTIONS: */
+  case AST_FUNCTION:
+    /**  Evaluate external functions, if it was set with
+	 setUserDefinedFunction */      
+    if ( UsrDefFunc == NULL )
+    {
+      SolverError_error(FATAL_ERROR_TYPE,
+			SOLVER_ERROR_AST_EVALUATION_FAILED_FUNCTION,
+			"The function %s() has not been defined "
+			"in the SBML input model or as an externally "
+			"supplied function. Defaults to 0 to avoid "
+			"program crash",
+			ASTNode_getName(n));
+      result = 0.0;
+    }
+    else
+    {
+      double *func_vals = NULL;
+      ASSIGN_NEW_MEMORY_BLOCK(func_vals, childnum+1, double, 0);
+      for ( i=0; i<childnum; i++ ) 
+	func_vals[i] = evaluateAST(child(n,i), data);      
+      result = UsrDefFunc((char *)ASTNode_getName(n), childnum, func_vals);
+      free(func_vals);
+    }
+    break;
+  case AST_FUNCTION_ABS:
+    result = fabs(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_ARCCOS:
+    result = acos(evaluateAST(child(n,0),data)) ;
+    break;
+  case AST_FUNCTION_ARCCOSH:
+    result = aCosh(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_ARCCOT:
+    /** arccot x =  arctan (1 / x) */
+    result = atan(1./ evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_ARCCOTH:
+    /** arccoth x = 1/2 * ln((x+1)/(x-1)) */
+    value1 = evaluateAST(child(n,0),data);
+    result = log((value1 + 1) / (value1 - 1))/2;
+    break;
+  case AST_FUNCTION_ARCCSC:
+    /** arccsc(x) = Arctan(1 / sqrt((x - 1)(x + 1))) */
+    value1 = evaluateAST(child(n,0),data);
+    result = atan(1/sqrt((value1-1)*(value1+1)));
+    break;
+  case AST_FUNCTION_ARCCSCH:
+    /** arccsch(x) = ln((1/x) + sqrt((1/(x*x)) + 1)) */
+    value1 = evaluateAST(child(n,0),data);
+    result = log(1/value1 + sqrt(1/(value1*value1)+1));
+    break;
+  case AST_FUNCTION_ARCSEC:
+    /** arcsec(x) = arccos(1/x) */
+    result = acos(1/evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_ARCSECH:
+    /* arcsech(x) = arccosh(1/x) */
+    result = aCosh( 1. /  evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_ARCSIN:
+    result = asin(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_ARCSINH:
+    result = aSinh(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_ARCTAN:
+    result = atan(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_ARCTANH:
+    result = aTanh(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_CEILING:
+    result = ceil(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_COS:
+    result = cos(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_COSH:
+    result = cosh(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_COT:
+    /** cot x = 1 / tan x */
+    result = (1./tan(evaluateAST(child(n,0),data)));
+    break;
+  case AST_FUNCTION_COTH:
+    /** coth x = cosh x / sinh x */
+    result = 1/tanh(evaluateAST(child(n,0),data));
+    break;  
+  case AST_FUNCTION_CSC:
+    /** csc x = 1 / sin x */
+    result = (1./sin(evaluateAST(child(n,0),data)));
+    break;
+  case AST_FUNCTION_CSCH:
+    /** csch x = 1 / sinh x  */
+    result = (1./sinh(evaluateAST(child(n,0),data)));
+    break;
+  case AST_FUNCTION_EXP:
+    result = exp(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_FACTORIAL:
+    {
+      int j;
+      value1 = evaluateAST(child(n,0),data);
+      j = floor(value1);
+      if ( value1 != j )
+	SolverError_error(FATAL_ERROR_TYPE,
+			  SOLVER_ERROR_AST_EVALUATION_FAILED_FLOAT_FACTORIAL,
+			  "The factorial is only implemented."
+			  "for integer values. The floor value of the "
+			  "passed float is used for calculation!");
+
+      for(result=1;j>1;--j)
+	result *= j;
+    }
+    break;
+  case AST_FUNCTION_FLOOR:
+    result = floor(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_LN:
+    result = log(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_LOG:
+    /** log(x,y) = log10(y)/log10(x) (where x is the base)  */
+    result = log10(evaluateAST(child(n,1),data)) /
+      log10(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_PIECEWISE:
+    /** Piecewise: */
+    found = 0;
+    /** Go through n pieces with 2 AST children for each piece, */
+    for ( i=0; i<(childnum-1); i=i+2 )
+    {
+      if ( evaluateAST(child(n, i+1), data) )
+      {
+	found++;
+	result = evaluateAST(child(n, i), data);
+      }
+    }
+    /** odd number of AST children: if no piece was true, otherwise remains */
+    /* i should be equal to childnum for even number piecewise AST
+       and equal to childnum-1 for odd numbered piecewise ASTs */
+    if ( i == childnum-1 && found == 0 )
+    {
+      found++;
+      result = evaluateAST(child(n, i), data);
+    }
+    if ( found == 0 )
+      SolverError_error(FATAL_ERROR_TYPE,
+			SOLVER_ERROR_AST_EVALUATION_FAILED_PIECEWISE,
+			"Piecewise function failed; no true piece");
+    if ( found > 1 )
+      SolverError_error(FATAL_ERROR_TYPE,
+			SOLVER_ERROR_AST_EVALUATION_FAILED_PIECEWISE,
+			"Piecewise function failed; several true pieces");
+    break;
+  case AST_FUNCTION_POWER:
+    result = pow(evaluateAST(child(n,0),data),evaluateAST(child(n,1),data));
+    break;
+  case AST_FUNCTION_ROOT:
+    /*!!! ALSO do this in compiled code */
+    value1 = evaluateAST(child(n,1),data);
+    value2 = evaluateAST(child(n,0),data);
+    value3 = floor(value2);
+    /* for odd root degrees, negative numbers are OK */
+    if ( value2 == value3 ) /* check whether degree is integer */
+    {
+      if ( (value1 < 0) && ((int)value2 % 2 != 0) )
+	result = - pow(fabs(value1), 1./value2);
+      else
+	result = pow(value1, 1./value2);	
+    }
+    else
+      result = pow(value1, 1./value2);
+    break;
+  case AST_FUNCTION_SEC:
+    /** sec x = 1 / cos x */
+    result = 1./cos(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_SECH:
+    /** sech x = 1 / cosh x */
+    result = 1./cosh(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_SIN:
+    result = sin(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_SINH:
+    result = sinh(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_TAN:
+    result = tan(evaluateAST(child(n,0),data));
+    break;
+  case AST_FUNCTION_TANH:
+    result = tanh(evaluateAST(child(n,0),data));
+    break;
+
+  case AST_LOGICAL_AND:
+    /** AND: all children must be true */
+    true = 0;
+    for ( i=0; i<childnum; i++ ) true += evaluateAST(child(n,i),data);
+    if ( true == childnum ) result = 1.0;
+    else result = 0.0;
+    break;
+  case AST_LOGICAL_NOT:
+    result = (double) (!(evaluateAST(child(n,0),data)));
+    break;
+  case AST_LOGICAL_OR:
+    /** OR: at least one child must be true */
+    true = 0;
+    for ( i=0; i<childnum; i++ ) true += evaluateAST(child(n,i),data);    
+    if ( true > 0 ) result = 1.0;
+    else result = 0.0;
+    break;
+  case AST_LOGICAL_XOR:
+    /* n-ary: true if an odd number of children is true */
+    true = 0;
+    for ( i=0; i<childnum; i++ ) true += evaluateAST(child(n,i),data);    
+    if ( true % 2 != 0 ) result = 1.0;
+    else result = 0.0;
+    break;
+    /* !!! check n-ary definitions for relational operators !!! */
+  case AST_RELATIONAL_EQ:
+    /** n-ary: all children must be equal */
+    result = 1.0;
+    if (childnum <= 1) break;
+    value1 = evaluateAST(child(n,0),data);
+    for ( i=1; i<childnum; i++ )
+      if ( value1 != evaluateAST(child(n,i),data) )
+      {
+        result = 0.0;
+        break;
+      }
+    break;
+  case AST_RELATIONAL_GEQ:
+    /** n-ary: each child must be greater than or equal to the following */
+    result = 1.0;
+    if (childnum <= 1) break;
+    value2 = evaluateAST(child(n,0),data);
+    for ( i=1; i<childnum; i++ )
+    {
+      value1 = value2;
+      value2 = evaluateAST(child(n,i),data);
+      if (value1 < value2)
+      {
+        result = 0.0;
+        break;
+      }
+    }
+    break;
+  case AST_RELATIONAL_GT:
+    /** n-ary: each child must be greater than the following */
+    result = 1.0;
+    if (childnum <= 1) break;
+    value2 = evaluateAST(child(n,0),data);
+    for ( i=1; i<childnum; i++ )
+    {
+      value1 = value2;
+      value2 = evaluateAST(child(n,i),data);
+      if (value1 <= value2)
+      {
+        result = 0.0;
+        break;
+      }
+    }
+    break;
+  case AST_RELATIONAL_LEQ:
+    /** n-ary: each child must be lower than or equal to the following */
+    result = 1.0;
+    if (childnum <= 1) break;
+    value2 = evaluateAST(child(n,0),data);
+    for ( i=1; i<childnum; i++ )
+    {
+      value1 = value2;
+      value2 = evaluateAST(child(n,i),data);
+      if (value1 > value2)
+      {
+        result = 0.0;
+        break;
+      }
+    }
+    break;
+  case AST_RELATIONAL_LT :
+    /* n-ary: each child must be lower than the following */
+    result = 1.0;
+    if (childnum <= 1) break;
+    value2 = evaluateAST(child(n,0),data);
+    for ( i=1; i<childnum; i++ )
+    {
+      value1 = value2;
+      value2 = evaluateAST(child(n,i),data);
+      if (value1 >= value2)
+      {
+        result = 0.0;
+        break;
+      }
+    }
+    break;
+  case AST_RELATIONAL_NEQ:
+    /* binary "not equal" */
+    result = (evaluateAST(child(n, 0), data) != evaluateAST(child(n, 1), data));
+    break;
+  default:
+    SolverError_error(FATAL_ERROR_TYPE,
+                      SOLVER_ERROR_AST_UNKNOWN_NODE_TYPE,
+                      "evaluateAST: unknown ASTNode type: %d", type);
+    result = 0;
+    break;
+  }
+  
+  return result;
+}
diff --git a/src/integratorInstance.c b/src/integratorInstance.c
new file mode 100644
index 0000000..f00ef1f
--- /dev/null
+++ b/src/integratorInstance.c
@@ -0,0 +1,1784 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2013-04-16 17:36:04 raim>
+  $Id: integratorInstance.c,v 1.114 2011/05/04 18:51:24 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Andrew M. Finney
+ *     Christoph Flamm
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/*! \defgroup integration Numerical Analysis */
+/*! \defgroup integrator ODE/DAE Integrator Interface
+  \ingroup integration
+  This module contains all interfaces to an integratorInstance
+    
+  SOSlib allows to get and set model data during an integration run.
+  This groups contain all functions available for this purpose.
+*/
+/*@{*/
+
+#include <assert.h>
+#include <string.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <cvodes/cvodes.h>
+#include <kinsol/kinsol.h>
+#include <cvodes/cvodes_dense.h>
+#include <nvector/nvector_serial.h>
+
+#include "sbmlsolver/odeModel.h"
+#include "sbmlsolver/variableIndex.h"
+
+#include "sbmlsolver/cvodeData.h"
+#include "sbmlsolver/processAST.h"
+#include "sbmlsolver/solverError.h"
+#include "sbmlsolver/integratorInstance.h"
+#include "sbmlsolver/cvodeSolver.h"
+#include "sbmlsolver/sensSolver.h"
+
+/* local integratorInstance allocation and initialization */ 
+static int
+IntegratorInstance_initializeSolver(integratorInstance_t *, cvodeData_t *,
+				    cvodeSettings_t *, odeModel_t *);
+static odeSense_t *
+IntegratorInstance_initializeSensitivity(odeModel_t *, cvodeSettings_t *,
+					 odeSense_t *);
+static int
+IntegratorInstance_initializeJacobian(odeModel_t *, cvodeSettings_t *);
+
+/* the following functions contain solver specific switches */
+static integratorInstance_t *
+IntegratorInstance_allocate(cvodeData_t *, cvodeSettings_t *, odeModel_t *);
+
+/* handles event executions */
+static int
+IntegratorInstance_processEventsAndAssignments(integratorInstance_t *);
+
+/* sets new values during integration and handles solver reinit. */
+static void
+IntegratorInstance_setVariableValueByIndex(integratorInstance_t *, int, double);
+
+
+/***************** functions common to all solvers ************************/
+
+/** Creates an new integratorInstance and sets valus to t0.
+     
+    Reads initial values from odeModel and integration settings from
+    cvodeSettings to create integration data cvodeData and
+    cvodeResults and initializes cvode Solver structures. NOTE, that
+    all assignments and event triggers are evaluated such that the
+    values correspond to time=t0 of the original input model.
+*/
+
+SBML_ODESOLVER_API integratorInstance_t *IntegratorInstance_create(odeModel_t *om, cvodeSettings_t *opt)
+{
+  cvodeData_t *data;
+
+  if ( om->hasCycle ) return NULL;
+
+  data = CvodeData_create(om);
+  if ( data == NULL ) return NULL;
+ 
+  CvodeData_initialize(data, opt, om, 0);
+
+  return IntegratorInstance_allocate(data, opt, om);      
+}
+
+/** Resets an existing integratorInstance to time t0 and the
+    input SBML model's initial conditions with new settings.
+
+    Returns 1 if succesfull, 0 otherwise.  The instance can then be
+    used for further integration runs with these new settings. Don't
+    use this function during an integration run! NOTE, that all
+    assignments and event triggers are evaluated such that the values
+    correspond to time=t0 of the original input model.
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_set(integratorInstance_t *engine, cvodeSettings_t *opt)
+{
+  CvodeData_initialize(engine->data, opt, engine->om, 0);  
+
+  /* de-activate backward integration for adjoint solver */
+  engine->AdjointPhase = 0;
+  
+  return IntegratorInstance_initializeSolver(engine, engine->data,
+					     opt, engine->om);
+}
+
+
+/**  Resets an existing integratorInstance to time t0 and the
+     input SBML model's initial conditions with original settings.
+
+     Returns 1 if succesfull, 0 otherwise.  After that, a new
+     integration can be run. Don't use during an integration run!
+     NOTE, that all assignments and event triggers are evaluated such
+     that the values correspond to time=t0 of the original input
+     model.
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_reset(integratorInstance_t *engine)
+{
+  return IntegratorInstance_set(engine, engine->opt);
+}
+
+/** Resets an existing integratorInstance to time t0 but KEEPS all values.
+
+    This can be used e.g. for a series of experiments, where between
+    integrations some value is reset. Alternatively, one could use
+    "indefinitely" time settings and just increase time manually.
+*/
+SBML_ODESOLVER_API int IntegratorInstance_resetTime(integratorInstance_t *engine, cvodeSettings_t *opt)
+{
+  if ( opt==NULL )
+    opt = engine->opt;
+  
+  /* re-initialize cvodeData, but KEEP current values instead of resetting them
+     from odeModel */
+  CvodeData_initialize(engine->data, opt, engine->om, 1);  
+
+  /* de-activate backward integration for adjoint solver */
+  engine->AdjointPhase = 0;
+  
+  return IntegratorInstance_initializeSolver(engine, engine->data,
+					     opt, engine->om);
+}
+
+/** Resets integrator for running the backward phase of the adjoint solver.
+
+    Returns 1 if succesfull, 0 otherwise.
+    The backward phase can then be run as usual via
+    IntegratorInstance_integrate* functions.
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_resetAdjPhase(integratorInstance_t *engine)
+{
+  /* activate backward integration for adjoint solver */
+  engine->AdjointPhase = 1;
+  return IntegratorInstance_initializeSolver(engine, engine->data,
+					     engine->opt, engine->om);
+}
+
+
+/* allocate memory for a new integrator, initialize cvodeSolver
+   structures from cvodeData, cvodeSettings and the odeModel */
+static integratorInstance_t *IntegratorInstance_allocate(cvodeData_t *data,
+							 cvodeSettings_t *opt,
+							 odeModel_t *om)
+{
+  integratorInstance_t *engine;
+
+  ASSIGN_NEW_MEMORY(engine, struct integratorInstance, NULL);
+  ASSIGN_NEW_MEMORY(engine->solver, struct cvodeSolver, 0);
+
+  /* set integration run counter to 0,
+     used for multiple reruns of integration  */
+  engine->run = 0;
+
+  /* set adjoint run counter to 0 */
+  engine->adjrun = 0;
+  
+  /* initialize adjoint phase flag */
+  engine->AdjointPhase = 0;
+
+  engine->solver->cvode_mem = NULL;
+  engine->solver->y = NULL;
+  engine->solver->abstol = NULL;
+
+  /* set state variable vector y to NULL for first run */
+  engine->solver->y = NULL;
+  engine->solver->cvode_mem = NULL;
+  engine->solver->abstol = NULL;
+  engine->solver->q = NULL;
+
+  /* set sensitivity structure to NULL */
+  engine->solver->yS = NULL;
+  engine->solver->senstol = NULL;
+  engine->solver->qS = NULL;
+  /* set IDA structure to NULL */
+  engine->solver->dy = NULL;
+  /* set adjoint sensitivity structures to NULL */
+  engine->solver->cvadj_mem = NULL;
+  engine->solver->yA = NULL;
+  engine->solver->qA = NULL;
+  engine->solver->abstolA = NULL;
+  engine->solver->abstolQA = NULL;
+
+  engine->os = NULL;
+/*   engine->solver->nsens = 0; */
+
+  if (IntegratorInstance_initializeSolver(engine, data, opt, om))
+    return engine;
+  else
+    return NULL;
+}
+
+/* construct new sensitivities */
+static
+odeSense_t *IntegratorInstance_initializeSensitivity(odeModel_t *om,
+						     cvodeSettings_t *opt,
+						     odeSense_t *os) 
+{
+  int i, changed = 0;
+
+  /* SENSITIVITIES */
+  /* if no sensitivity structures are present yet, construct and return*/
+  if ( os == NULL )
+    return ODESense_create(om, opt);
+
+  /* if sensitivity structures are already present check whether
+     they need reconstruction */
+  else
+  {
+    if ( os->index_sens != NULL  )
+    {
+      /* compare with options */	  
+      if ( opt->sensIDs != NULL )
+      {
+	if ( opt->nsens != os->nsens ) changed++;
+	else
+	  for ( i=0; i<os->nsens; i++ )
+	    if ( os->index_sens[i] !=
+		 ODEModel_getVariableIndexFields(om, opt->sensIDs[i]) )
+	      changed++;
+      }
+      /* compare with constants (default) */
+      else 
+      {
+	if ( os->nsens != om->nconst ) changed++;
+	else
+	  for ( i=0; i<os->nsens; i++ )
+	    if ( os->index_sens[i] !=  (om->neq+om->nass+om->nalg+i) )
+	      changed++;
+      }
+    }
+  }  
+  
+  /* free old and reconstruct sensitivities */
+  if ( changed )
+  {
+     /* free old and ... */
+    ODESense_free(os);
+    /* ... construct new sensitivity */
+    return ODESense_create(om, opt);    
+  }
+  else
+  {
+    /* odeSense model exists and hasn't changed wrt to input options */
+    return os;
+  }
+}
+
+/* The function compares diverse flags and settings whose combination
+   indicates whether the solver should and can use the analytic
+   Jacobian matrix. It also constructs the matrix when requested the
+   first time. */
+static int IntegratorInstance_initializeJacobian(odeModel_t *om,
+						  cvodeSettings_t *opt)
+{
+    /* JACOBIAN */
+  /* had jacobian matrix construction already failed in previous tries? */
+  if ( om->jacobianFailed > 0 )
+    return 0;
+  /* ... is jacobian not wanted? */
+  else if ( !opt->UseJacobian )
+    return 0;
+  /* ... is jacobian requested and already constructed ? */
+  else if ( opt->UseJacobian && om->jacob != NULL )
+    return 1;
+
+  /* default: construct matrix,
+     returns 1 if matrix construction is succesful, 0 otherwise  */
+  return ODEModel_constructJacobian(om);
+}
+
+/* initializes the solver initial time setup with odeModel,
+   cvodeSettings and cvodeData structures;
+   these settings are supposed to be required for all different solvers;
+   solver specific settings are initialized in create`SOLVER'Structures;
+   NOTE that currently the adjoint phase requires specific initializations
+   here: maybe this can be removed by using the same structures in
+   cvodeSettings, as initially proposed by James !!?? */
+static int IntegratorInstance_initializeSolver(integratorInstance_t *engine,
+					       cvodeData_t *data,
+					       cvodeSettings_t *opt,
+					       odeModel_t *om)
+{
+  int i;
+  cvodeSolver_t *solver = engine->solver;
+  cvodeResults_t *results = data->results;
+ 
+  /* irreversibly linking the engine to its input model */
+  engine->om = om;
+
+  /* joining option, data and result structures */
+  engine->opt = opt;
+  engine->data = data;
+  engine->results = data->results;
+  
+  /* construct Jacobian matrix, if not yet existing */
+  engine->UseJacobian = IntegratorInstance_initializeJacobian(engine->om, opt);
+    
+  /* construct sensitivities, if not yet existing */
+  /*!!! TODO : BETTER ERROR HANDLING?? !!!*/
+  if ( (opt->Sensitivity || opt->DoAdjoint) && !engine->AdjointPhase )
+  {
+    engine->os = IntegratorInstance_initializeSensitivity(engine->om, opt,
+							  engine->os);
+   
+    if ( engine->os == NULL ) return 0; /* failure in sens. construction */
+    
+    if ( engine->os )
+      CvodeData_initializeSensitivities(data, opt, engine->om, engine->os);
+  }
+ 
+  
+  /* initialize the solver's time settings */  
+  if ( !engine->AdjointPhase )
+  {
+    /* set initial time, first output time and number of time steps */
+    if ( opt->Indefinitely )
+    {
+      solver->t0 = 0;          /* initial time */
+      solver->t = 0;           /* current time */
+      solver->tout = opt->Time;/* first output time */
+    }
+    else
+    {
+      solver->t0 = opt->TimePoints[0];   /* initial time */
+      solver->t = opt->TimePoints[0];    /* current time, always 0,
+                                            when starting from odeModel */
+      solver->tout = opt->TimePoints[1]; /* first output time */
+    }
+    solver->nout = opt->PrintStep;     /* number of output steps */
+
+    /* set up loop variables */
+    solver->iout=1;        /* counts integration steps, start with 1 */
+
+ 
+    /* write initial conditions to results structure */
+    if ( opt->StoreResults )
+    {
+      results->time[0] = data->currenttime;
+      for ( i=0; i<data->nvalues; i++ )
+	results->value[i][0] = data->value[i];
+    }
+
+    /* count integration runs with this integratorInstance */
+    engine->run++;
+
+  }
+  else    
+  {
+    /* Adjoint Phase */
+    solver->t0 = opt->AdjTimePoints[0]; 
+    solver->tout = opt->AdjTimePoints[1]; 
+    solver->nout = opt->AdjPrintStep;     /* number of adjoint output steps */
+    solver->t = opt->AdjTimePoints[0];   
+    /* set up loop variables */
+    solver->iout=1;  
+
+
+    /* write adjoint initial conditions to results structure */
+    /* Need to look into modifying data values? */
+    if ( opt->AdjStoreResults )
+    {    
+      for ( i=0; i<data->neq; i++ )
+	results->adjvalue[i][0] = data->adjvalue[i];
+    }
+
+    /* count adjoint integration runs with this integratorInstance */
+    engine->adjrun++;
+  }
+
+  /* set flag to 0 to indicate that solver structures need to be
+     created before integration */
+  engine->isValid = 0;
+
+  /* reset integrator clock */
+  engine->clockStarted = 0;
+  
+  return 1;  
+}
+
+
+/**  Returns the settings of this integratorInstance.
+
+     These settings can then be changed with cvodeSettings interface
+     functions. The changes become only effective after
+     IntegratorInstance_reset has been called. Don't use during an
+     integration run!
+*/
+
+SBML_ODESOLVER_API cvodeSettings_t *IntegratorInstance_getSettings(integratorInstance_t *engine)
+{
+  return engine->opt;
+}
+
+
+
+/**  Copies current time, variable and parameter values between two
+     integratorInstances (source->target) which
+     have been created from the same odeModel
+
+     WARNING: does NOT copy the time of the other integrator! use
+     IntegratorInstace_setInitialTime and/or IntegratorInstance_setNextTimeStep
+     to also set the time of the target integrator
+*/
+
+SBML_ODESOLVER_API void IntegratorInstance_copyVariableState(integratorInstance_t *target, integratorInstance_t *source)
+{
+  int i;
+  cvodeData_t *targetData = target->data;
+  cvodeData_t *sourceData = source->data;
+  odeModel_t *om = target->om;
+
+  if ( om == source->om )
+    for ( i=0; i<sourceData->nvalues; i++ )
+      targetData->value[i] = sourceData->value[i];
+  else
+    SolverError_error(
+		      ERROR_ERROR_TYPE,
+		      SOLVER_ERROR_ATTEMPTING_TO_COPY_VARIABLE_STATE_BETWEEN_INSTANCES_OF_DIFFERENT_MODELS,
+		      "Attempting to copy variable state between instances of "
+		      "different models");
+
+  /* reset if the integrator had already been run */
+  if ( target->isValid )
+  {
+    /* set engine to invalid to cause reinitialization of solver */
+    target->isValid = 0;
+
+    /* update assignments */
+    for ( i=0; i<om->nass; i++ )
+    {
+      nonzeroElem_t *ordered = om->assignmentOrder[i];
+      targetData->value[ordered->i] = evaluateAST(ordered->ij, targetData);
+    }
+    targetData->allRulesUpdated = 1;
+  }
+}
+
+
+/**  Returns the current time of an integration */
+
+SBML_ODESOLVER_API double IntegratorInstance_getTime(const integratorInstance_t *engine)
+{
+  return engine->solver->t;
+}
+
+/** Sets the initial time of the solver, see WARNING below
+
+    WARNING:
+    This function can only be used for fresh or reset integrators!
+    Use with care, i.e. only when you know what you are doing!
+*/
+/*!!! needs testing and consideration of possible pitfalls */
+SBML_ODESOLVER_API int IntegratorInstance_setInitialTime(integratorInstance_t *engine, double initialtime)
+{
+  if ( (engine->isValid == 0 &&	engine->solver->t == engine->solver->t0) &&
+       engine->solver->tout > initialtime )
+  {
+    engine->solver->t0 = initialtime;
+    engine->solver->t  = initialtime;
+    engine->data->currenttime = initialtime;
+    return 1;
+  }
+  else
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_ATTEMPTING_TO_SET_IMPOSSIBLE_INITIAL_TIME,
+		      "Requested intial time (%f) is not possible! "\
+		      "Reset integrator first, and make sure that the first "\
+		      "output time (%f) is smaller than the requested "\
+		      "initial time! New setting ignored!", initialtime,
+		      engine->solver->tout);
+  return 0;
+}
+
+/** Sets the next output time for infinite integration
+
+    This function can only be used for infinite integration
+    (CvodeSettings_setIndefinite(set, 1)).
+    Returns 1 if successful and 0 otherwise.
+
+    WARNING: the next output time must always be bigger than the previous.
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_setNextTimeStep(integratorInstance_t *engine, double nexttime)
+{
+  if ( engine->opt->Indefinitely )
+  {
+    engine->solver->tout = nexttime;
+    return 1;
+  }
+  return 0;
+}
+
+/**  \brief Returns the name of the variable corresponding to passed
+     variableIndex. The returned string (const char *) may NOT be
+     changed or freed by calling applications.
+    
+     Equivalent to VariableIndex_getName(variableIndex_t*, odeModel_t *),
+     and ODEModel_getVariableName(odeModel_t *, variableIndex_t *);
+*/
+
+SBML_ODESOLVER_API const char *IntegratorInstance_getVariableName(integratorInstance_t *engine, variableIndex_t *vi)
+{
+  return VariableIndex_getName(vi, engine->om);
+}
+
+/**  Gets the value of a variable or parameter during an integration
+     via its variableIndex.
+
+     The variableIndex can be retrieved from the odeModel with
+     ODEModel_getVariable via the variable's or the parameter's ID
+     symbol in the input SBML model (can be SBML compartments, species
+     and parameters).
+*/
+
+SBML_ODESOLVER_API double IntegratorInstance_getVariableValue(integratorInstance_t *engine, variableIndex_t *vi)
+{
+  int i;
+  odeModel_t *om = engine->om;
+  cvodeData_t *data = engine->data;
+
+  /* for assigned variables, update assignment rules */
+  /*!!! TODO : could be optimized, using dependency DAG ? and info
+        on already updated values? or only correct value for observables? */
+  if ( !data->allRulesUpdated &&
+       (vi->index >= om->neq && vi->index < om->neq+om->nass) )
+  {
+    for ( i=0; i<om->nass; i++ )
+    {
+      nonzeroElem_t *ordered = om->assignmentOrder[i];
+      data->value[ordered->i] = evaluateAST(ordered->ij, data);
+    }
+    data->allRulesUpdated = 1;
+  }
+  return data->value[vi->index];
+}
+
+/** Returns the respective entry FIM[i][j] of the
+    Fisher Information Matrix (FIM),
+
+    issues error message and returns 0 if FIM doesn't exist or if
+    the passed integers are larger than FIM dimension */
+/*!!! TODO : make additional interface via variableIndex */
+
+SBML_ODESOLVER_API double IntegratorInstance_getFIM(integratorInstance_t *ii, int i, int j)
+{
+  /*!!! TODO : add this to solverError messages! */
+  if ( ii->data->FIM == NULL )
+  {
+    fprintf(stderr, "WARNING: FIM has not been calculated.\n");
+    return 0.0;
+  }
+  if ( i >= ii->os->nsens || j >= ii->os->nsens )
+  {
+    fprintf(stderr, "WARNING: FIM is smaller than requested indices.\n");
+    return 0.0;
+  }
+  return ii->data->FIM[i][j];
+}
+
+
+/**  Set the weights for calculating the Fisher Information Matrix (FIM),
+     the size of the passed array 'weights' must equal the number
+     of variables (neq) of the ODE system */
+  
+SBML_ODESOLVER_API void IntegratorInstance_setFIMweights(integratorInstance_t *ii, double *weights, int neq)
+{    
+  int i;
+  
+
+  /*!!! TODO : add this to solverError messages and don't exit! */
+  if ( neq > ii->data->neq )
+  {    
+    fprintf(stderr, "WARNING: vector of weights for FIM longer than number of ODE variables\n");
+    return;
+  }
+  if ( ii->data->weights == NULL )
+  {
+    fprintf(stderr, "WARNING: FIM has not been calculated.\n");
+    return;
+  }
+
+  for ( i=0; i<ii->data->neq; i++ )
+      ii->data->weights[i] = weights[i];
+}
+
+/** \brief Returns the number parameters for which sensitivity
+    analysis have been requested.
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_getNsens(integratorInstance_t *engine)
+{
+  if ( engine->os == NULL )
+      return 0;
+  return engine->os->nsens;
+}
+
+/** Gets the sensitivity of variable number y to sensitivity number s at
+    the current time, where the index starts at 0, i.e.
+    0 <= y < neq and 0 <= s < nsens.
+
+    Returns 0 if no sensitivity has been calculated for s!
+*/
+SBML_ODESOLVER_API double IntegratorInstance_getSensitivityByNum(integratorInstance_t *engine, int y, int s)
+{
+  /*!!! TODO : issue proper warnings or errors */
+  if ( engine->os == NULL || engine->data->sensitivity == NULL )
+  {
+    fprintf(stderr, "WARNING: sensitivity analysis has not been initialized\n");
+    return 0.0;
+  }
+  if ( y >= engine->om->neq )
+  {
+    fprintf(stderr, "WARNING: variable index y out of scope, no ");
+    fprintf(stderr, "sensitivities can be calculated for index %d \n", y);
+    return 0.0;
+  }
+  if ( s >= engine->os->nsens )
+  {
+    fprintf(stderr, "WARNING: sensitivity index out of scope, no");
+    fprintf(stderr, " sensitivities can be calculated for index %d \n", s);
+    return 0.0;
+  }
+  return engine->data->sensitivity[y][s];
+}
+
+/** Gets the sensitivity of variable y to parameter or variable s at
+    the current time.
+
+    Returns 0 if no sensitivity has been calculated for s!
+*/
+
+SBML_ODESOLVER_API double IntegratorInstance_getSensitivity(integratorInstance_t *engine,  variableIndex_t *y,  variableIndex_t *s)
+{
+  int i;
+
+  /*!!! TODO : issue proper warnings or errors */
+  if ( engine->os == NULL  || engine->data->sensitivity == NULL )
+  {
+    fprintf(stderr, "WARNING: sensitivity analysis has not been initialized\n");
+    return 0.0;
+  }
+  if ( y->index >= engine->om->neq )
+  {
+    fprintf(stderr, "WARNING: ID is not a variable, no sensitivities ");
+    fprintf(stderr, "can be calculated for %s \n", engine->om->names[y->index]);
+    return 0.0;
+  }
+  /* find sensitivity for s */
+  for ( i=0; i<engine->os->nsens &&
+	  !(engine->os->index_sens[i] == s->index); i++ );
+
+  if ( i == engine->os->nsens )
+  {
+    fprintf(stderr, "WARNING: No sensitivities have been calculated ");
+    fprintf(stderr, "for parameters %s\n", engine->om->names[s->index]);
+    return 0.0;
+  }
+  else return engine->data->sensitivity[y->index][i];
+}
+
+
+/**  Prints variable names, the first value is the time,
+
+ODE variable values, assigned variable values and
+constant values follow. The order is the same
+as in IntegratorInstance_dumpData.
+*/
+
+SBML_ODESOLVER_API void IntegratorInstance_dumpNames(integratorInstance_t *engine)
+{
+  ODEModel_dumpNames(engine->om);
+}
+
+
+/**  Prints the current integration data,
+
+the first value is the current time, ODE variable values, assigned
+variable values and constant values follow. The order is the same
+as in IntegratorInstance_dumpNames.
+*/
+
+SBML_ODESOLVER_API void IntegratorInstance_dumpData(integratorInstance_t *engine)
+{
+  int i;
+  cvodeData_t *data = engine->data;
+
+  printf("%g  ", data->currenttime);
+  for ( i=0; i<data->nvalues; i++ )
+    printf("%g ", data->value[i]);
+  printf("\n");
+}
+
+/**  Prints the current adjoint integration data,
+     The first value is the current time, followed by adjoint
+     ODE variable values.
+*/
+/*!!! TODO : interface for adjoint via number and via variableIndex, same
+ interface for cvodeResults */
+SBML_ODESOLVER_API void IntegratorInstance_dumpAdjData(integratorInstance_t *engine)
+{
+  int i;
+  cvodeData_t *data = engine->data;
+
+  printf("%g  ", data->currenttime);
+  for ( i=0; i<data->neq; i++ )
+    printf("%g ", data->adjvalue[i]);
+  printf("\n");
+}
+
+
+/**  Prints the current time, current value of variable y and 
+     sensitivities to all parameters for which calculated
+*/
+
+SBML_ODESOLVER_API void IntegratorInstance_dumpYSensitivities(integratorInstance_t *engine, variableIndex_t *y)
+{
+  int i;
+  cvodeData_t *data = engine->data;
+
+  if ( data->sensitivity == NULL ) return;
+  if ( y->index >= engine->om->neq )
+  {
+    printf("Warning: ID is not a variable, no sensitivities ");
+    printf("can be calculated for %s \n", engine->om->names[y->index]);
+    return;
+  }
+  
+  printf("%g  ", data->currenttime);
+  printf("%g  ", data->value[y->index]);
+  for ( i=0; i<data->nsens; i++ )
+    printf("%g ", data->sensitivity[y->index][i]);
+  printf("\n");
+}
+
+
+/**  Prints the current time, the value of parameter p and 
+     all variable's sensitivities Si to p, where
+     i = 1 to NEQ
+*/
+
+SBML_ODESOLVER_API void IntegratorInstance_dumpPSensitivities(integratorInstance_t *engine, variableIndex_t *p)
+{
+  int i, j;
+  cvodeData_t *data = engine->data;
+  odeSense_t *os = engine->os;
+  odeModel_t *om = engine->om;
+  
+  if ( data->sensitivity == NULL ) return;
+  if ( os == NULL ) return;
+
+  /* find sensitivity for p */
+  for ( i=0; i<os->nsens && !(os->index_sens[i] == p->index); i++ );
+
+  if ( i == os->nsens )
+    printf("Warning: no sensitivity requested for ID %s\n",
+	   om->names[p->index]);
+  else
+  {
+    printf("%g  ", data->currenttime);
+    for ( j=0; j<data->neq; j++ )
+      printf("%g ", data->sensitivity[j][i]);
+    printf("\n");
+  }
+}
+
+
+/**  Returns the name of the ith sensitivity variable, or NULL
+     if it doesn't exist
+*/
+SBML_ODESOLVER_API char* IntegratorInstance_getSensVariableName(integratorInstance_t *engine, int i)
+{
+  if ( engine->os == NULL )
+    return NULL;
+  if (i > engine->os->nsens || !engine->opt->sensIDs )
+    return NULL;
+
+  return engine->om->names[engine->os->index_sens[i]];
+}
+
+/** Returns a pointer to the sensitivity structure of the solver or NULL
+    if it has not been constructed.
+*/
+SBML_ODESOLVER_API odeSense_t *IntegratorInstance_getSensitivityModel(integratorInstance_t *engine)
+{
+  return engine->os;
+}
+
+/** Returns a pointer cvodeData of the integratorInstance, which contains
+    the current values of all variables. This structure is `read-only'
+    and can be used for evaluation of formulas with evaluateAST after
+    integration. Ownership stays with the integratorInstance.
+*/
+
+SBML_ODESOLVER_API cvodeData_t *IntegratorInstance_getData(integratorInstance_t *engine)
+{
+  return engine->data;
+}
+
+/**  Starts the default integration loop with standard error
+     handling and returns 1 if integration was OK, and 0 if not.
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_integrate(integratorInstance_t *engine)
+{
+  while ( engine->solver->iout <= engine->solver->nout )
+    if (!IntegratorInstance_integrateOneStep(engine)) 
+      return 0;    
+ 
+  return 1; /* return 0, if ok */
+}
+
+
+/** Returns TRUE if the requested timecourse has been completed
+    for the passed integratorInstance
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_timeCourseCompleted(const integratorInstance_t *engine)
+{
+ 
+  return engine->solver->iout > engine->solver->nout &&
+    !engine->opt->Indefinitely;
+}
+
+/**  Returns a pointer to cvodeResults structure containing
+     the results of one integration run and NULL if no results were stored.
+    
+     The results must NOT be freed by the caller.
+*/
+
+SBML_ODESOLVER_API const cvodeResults_t *IntegratorInstance_getResults(const integratorInstance_t *engine)
+{
+  return engine->results; 
+}
+
+/**  Creates and returns a copy of the internal cvodeResults structure
+     containing the results of one integration run and NULL if not successful.
+    
+     The results must be freed by the caller with
+     CvodeResults_free(results)!
+*/
+
+SBML_ODESOLVER_API cvodeResults_t *IntegratorInstance_createResults(const integratorInstance_t *engine)
+{
+  int i, j, k;
+  cvodeResults_t *results;
+
+  cvodeSettings_t *opt = engine->opt;
+  cvodeResults_t *iResults = engine->results;
+
+  /*!!! TODO : check if all values in results structure are copied */
+  if ( !opt->StoreResults || iResults == NULL ) return NULL;
+  
+  results = CvodeResults_create(engine->data, iResults->nout);
+  if ( results == NULL ) return NULL; /* memory failure */
+
+  results->nout = iResults->nout;
+
+  for ( i=0; i <=results->nout; i++ )
+  {
+    results->time[i] = iResults->time[i];
+    for ( j=0; j < iResults->nvalues; j++ )
+      results->value[j][i] = iResults->value[j][i];
+  }
+
+  if ( iResults->sensitivity != NULL )
+  {
+    CvodeResults_allocateSens(results, iResults->neq, iResults->nsens,
+			      iResults->nout);
+    for ( i=0; i<results->neq; i++ )
+      for ( j=0; j<results->nsens; j++ )
+      {
+	results->index_sens[j] = iResults->index_sens[j];
+	for ( k=0; k<=results->nout; k++ )
+	  results->sensitivity[i][j][k] = iResults->sensitivity[i][j][k];
+      }
+  }
+
+  return results;  
+}
+
+
+/** Writes results to file
+ */
+SBML_ODESOLVER_API void IntegratorInstance_printResults(const integratorInstance_t *ii, FILE *fp)
+{
+  int n, j;
+  variableIndex_t *vi;
+  
+  fprintf(fp, "#t ");
+  for (j=0; j<ii->om->neq; j++){
+    vi = ODEModel_getOdeVariableIndex(ii->om, j);
+    fprintf(fp, "%s ", ODEModel_getVariableName(ii->om, vi));
+    VariableIndex_free(vi);
+  }
+  fprintf(fp, "\n");
+  
+  for (n=0; n<CvodeResults_getNout(ii->results); n++){
+    fprintf(fp, "%g ", CvodeResults_getTime(ii->results, n));
+    for (j=0; j<ii->om->neq; j++){
+      vi = ODEModel_getOdeVariableIndex(ii->om, j);
+      fprintf(fp, "%g ", CvodeResults_getValue(ii->results, vi, n));
+      VariableIndex_free(vi);
+    }
+    fprintf(fp, "\n");
+  }
+}
+
+/**  Writes current simulation data to the original model.
+ */
+
+SBML_ODESOLVER_API int IntegratorInstance_updateModel(integratorInstance_t *engine)
+{
+  int i;
+  Species_t *s;
+  Compartment_t *c;
+  Parameter_t *p;
+  
+  odeModel_t *om = engine->om;
+  cvodeData_t *data = engine->data;
+  cvodeResults_t *results = engine->results;
+
+  int nout = results->nout;
+  int nvalues = data->nvalues;
+  Model_t *m = om->m;
+
+  
+  for ( i=0; i<nvalues; i++ )
+  {
+    if ( (s = Model_getSpeciesById(m, om->names[i])) != NULL )
+    {
+      c = Model_getCompartmentById(m, Species_getCompartment(s));
+      if ( !Species_getHasOnlySubstanceUnits(s) &&
+	   Compartment_getSpatialDimensions(c) != 0 )
+	Species_setInitialConcentration(s, results->value[i][nout]);
+      else
+	Species_setInitialAmount(s, results->value[i][nout]);
+    }
+    else if ( (c = Model_getCompartmentById(m, om->names[i])) != NULL ) 
+      Compartment_setSize(c, results->value[i][nout]);    
+    else if ( (p = Model_getParameterById(m, om->names[i])) !=  NULL ) 
+      Parameter_setValue(p, results->value[i][nout]);
+    else
+      return 0;
+  }
+
+  return 1;
+
+}
+
+
+/**  Handles the simple case of models that contain no ODEs
+     
+     Returns 1, if integrator can proceed, 0 if errors occured
+     and the integrator can't proceed. 
+ */
+
+SBML_ODESOLVER_API int IntegratorInstance_simpleOneStep(integratorInstance_t *engine)
+{
+  /* just increase the time */
+  engine->solver->t = engine->solver->tout;
+
+  if ( engine->processEvents && engine->opt->compileFunctions &&
+       !engine->om->compiledEventFunction )
+    ODEModel_compileCVODEFunctions(engine->om); /*!!! TODO : handle error */
+
+  /* ... and call the default update function */
+  return IntegratorInstance_updateData(engine);  
+}
+
+/* Executes assignment rules and event assignments (if fired)
+   to establish the correct state of observables,
+   sets trigger flags and returns the number of events that have fired.
+*/
+static int
+IntegratorInstance_processEventsAndAssignments(integratorInstance_t *engine)
+{
+  int i, j, fired;
+
+  cvodeData_t *data = engine->data;
+  odeModel_t *om = engine->om;
+
+  /** evaluate assignments required befor trigger evaluation; \n */
+  for ( i=0; i<om->nassbeforeevents; i++ )
+  {
+    nonzeroElem_t *ordered = om->assignmentsBeforeEvents[i];
+#ifdef ARITHMETIC_TEST
+    data->value[ordered->i] = ordered->ijcode->evaluate(data);
+#else
+    data->value[ordered->i] = evaluateAST(ordered->ij, data);
+#endif
+  }
+
+  fired = 0;
+
+  /** now go through all events: \n */
+  for ( i=0; i<data->nevents; i++ )
+  {
+    if ( data->trigger[i] == 0 )
+    {
+      /** check if it is fired now \n */
+      if ( evaluateAST(om->event[i], data) )
+      {
+	fired++;
+	data->trigger[i] = 1;
+	/** and if yes, execute the events assignments; \n*/
+	for ( j=0; j<om->neventAss[i]; j++ )
+        {	  
+	  double result = evaluateAST(om->eventAssignment[i][j], data);
+	  int idx = om->eventIndex[i][j]; 
+	  IntegratorInstance_setVariableValueByIndex(engine, idx, result);
+	}
+      }
+    }
+    /** if the trigger has already been fired in the past,
+        check if it still in fired state and reset flag if not; \n */
+    else if ( !evaluateAST(om->event[i], data) )      
+      data->trigger[i] = 0;
+  }
+
+  /** and return the number of fired events. */
+  return fired;
+}
+
+/** Default function for updating data, to be used by solvers after
+    they have calculate x(t) and updated the time.
+
+    The function updates assigned variables, checks for event
+    triggers and steady state, increases loop variables, stores
+    results and sets next output time.
+    Returns 1 if the solver can proceed, 0 if otherwise.
+*/
+
+int IntegratorInstance_updateData(integratorInstance_t *engine)
+{
+  int i, flag = 1, fired;
+  char *buffer;
+  cvodeSolver_t *solver = engine->solver;
+  cvodeData_t *data = engine->data;
+  cvodeSettings_t *opt = engine->opt;
+  cvodeResults_t *results = engine->results;
+  odeModel_t *om = engine->om;
+  div_t d;
+
+  int j, k;
+  double sum;
+
+  /* HANDLE TIME */
+  data->currenttime = solver->t;
+
+  /* HANDLE EVENTS */
+  if ( engine->processEvents )
+  {
+    if ( opt->compileFunctions ) 
+      fired = om->compiledEventFunction(data, &(engine->isValid));   
+    else
+      fired = IntegratorInstance_processEventsAndAssignments(engine);
+
+    if ( fired && opt->HaltOnEvent )
+    {
+      for ( i=0; i!= data->nevents; i++ )
+      {
+	if ( data->trigger[i] )
+	{
+	  buffer = SBML_formulaToString(om->event[i]);
+	  SolverError_error(ERROR_ERROR_TYPE,
+			    SOLVER_ERROR_EVENT_TRIGGER_FIRED,
+			    "Event Trigger %d (%s) fired at time %g. "
+			    "Aborting simulation.",
+			    i, buffer, data->currenttime);
+	  free(buffer);
+	}
+      }
+      flag = 0; /* stop integration */
+    }
+  }
+  
+  /* NOT ALL RULES ARE UP-TO-DATE ! */
+  /* this avoids unnecessary update of all rules, if the values
+     are not required. IntegratorInstance_getVariableValue
+     and storage in results will update rules when a value is requested */ 
+  data->allRulesUpdated = 0;
+
+  /* store results */
+  if ( opt->StoreResults )
+  {
+    results->nout = solver->iout;
+    results->time[solver->iout] = solver->t;
+
+    /* update all assignment rules : might be optimizable - only those
+       that have not been handled by events - observables? !! */
+    if ( !data->allRulesUpdated )
+    {
+      for ( i=0; i<om->nass; i++ )
+      {
+	nonzeroElem_t *ordered = om->assignmentOrder[i];
+#ifdef ARITHMETIC_TEST
+	data->value[ordered->i] = ordered->ijcode->evaluate(data);
+#else
+	data->value[ordered->i] = evaluateAST(ordered->ij, data);
+#endif
+      }
+      data->allRulesUpdated = 1;
+    }
+
+    for ( i=0; i<data->nvalues; i++ )
+      results->value[i][solver->iout] = data->value[i];
+
+    /* store sensitivities */
+    if ( opt->Sensitivity )
+    {
+      for ( j=0; j<data->nsens; j++ )
+      {
+	for ( i=0; i<data->neq; i++ )
+	{
+	  results->sensitivity[i][j][solver->iout] = data->sensitivity[i][j];
+	}
+      }
+    }
+
+  }
+          
+  /* HANDLE STEADY STATE */
+  /* check for steady state if requested by cvodeSettings
+     and stop integration if an approximate steady state is
+     found   */
+  if ( opt->SteadyState == 1 ) 
+    if ( IntegratorInstance_checkSteadyState(engine) )
+      flag = 0;  /* stop integration */
+
+
+  /* HANDLE OBJECTIVE FUNCTION */
+  /* if discrete data is observed, compute step contribution to
+     the objective as well as the forward sensitivity */
+  if ( (opt->observation_data_type == 1)  &&
+       ((solver->iout==opt->OffSet) ||
+	((solver->iout+opt->OffSet) % (1+opt->InterStep)) == 0) )
+  {
+    /* set current time and state values for evaluating vector_v  */
+    data->currenttime = solver->t;
+  
+    /* update objective quadrature  */
+    if ( om->ObjectiveFunction )
+    {
+      om->compute_vector_v=1;
+      d = div(solver->iout, 1+opt->InterStep);
+      data->TimeSeriesIndex = opt->OffSet + d.quot;
+      
+      NV_Ith_S(solver->q, 0) = NV_Ith_S(solver->q, 0)
+	+ evaluateAST( data->model->ObjectiveFunction, data);
+      om->compute_vector_v=0;
+    }
+
+    /* Update the Fisher Information Matrix (FIM) */
+    if ( opt->doFIM )
+      {
+      for ( i=0; i<data->nsens; i++ )
+        for ( j=0; j<data->nsens; j++ )
+	{
+	  sum = 0.; /* sum over ode variables */ 
+	  for ( k=0; k<data->neq; k++)
+	    sum += data->weights[k] * data->sensitivity[k][i] *
+	      data->sensitivity[k][j];
+	  data->FIM[i][j] += sum;
+	}
+      }
+	
+  } /* if (opt->observation_data_type == 1) */
+
+
+  /* SET NEXT INTEGRATION STEP */
+  /* increase integration step counter */
+  solver->iout++;
+    
+  /* ... and set next output time */
+  if ( opt->Indefinitely )
+    solver->tout += opt->Time;
+  else if ( solver->iout <= solver->nout )
+    solver->tout = opt->TimePoints[solver->iout];
+
+  /* flag is 1 if the solver can proceed, 0 otherwise */
+  return flag;
+}
+
+
+/** Default function for updating adjoint data
+
+    The function increases loop variables, stores
+    results, increment jumps in adjoint of discrete data is observed, 
+    and sets next output time.
+*/
+
+int IntegratorInstance_updateAdjData(integratorInstance_t *engine)
+{
+  int i, j, flag = 1, found = 0;
+  cvodeSolver_t *solver = engine->solver;
+  cvodeData_t *data = engine->data;
+  cvodeSettings_t *opt = engine->opt;
+  cvodeResults_t *results = engine->results;
+  odeModel_t *om = engine->om;
+  odeSense_t *os = engine->os;
+  div_t d;
+
+  /* update rest of cvodeData_t **/
+  data->currenttime = solver->t;
+
+  /* store results */
+  /*!!! TODO : should this be done below? is it redundant with update
+    in getAdjSens ? */
+  if ( opt->AdjStoreResults )
+  { 
+    for ( i=0; i<data->neq; i++ ) 
+      results->adjvalue[i][solver->iout] = data->adjvalue[i];
+  }
+            
+
+  /* update adjoint state if discrete experimental data is observed */
+  if ( (opt->observation_data_type == 1)  &&
+       ((solver->iout==opt->OffSet)  ||
+       ((solver->iout+opt->OffSet) % (1+opt->InterStep)) == 0) )
+  {    
+    /* set current time and state values for evaluating vector_v  */ 
+    data->currenttime = solver->t;
+   
+    /* */
+    if ( fabs(results->time[opt->PrintStep - solver->iout] - solver->t)
+	 < 1e-3)  
+    {
+      found++;
+      for ( j=0; j<om->neq; j++ )
+	data->value[j] = results->value[j][opt->PrintStep-solver->iout];
+    }      
+    
+    if ( found != 1 )
+    {
+      fprintf(stderr, "ERROR in update adjoint data: found none or more ");
+      fprintf(stderr, "than one matchings in results data.\n");
+      SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_UPDATE_ADJDATA,
+			"Update Adjoint data Adjoint: ",
+			"Failed to get state value at time %g.", solver->t);
+        return 0;
+    }
+
+    om->compute_vector_v=1;
+    d = div(solver->iout, 1+opt->InterStep);
+    data->TimeSeriesIndex =
+      data->model->time_series->n_time-1-(opt->OffSet + d.quot);
+    for ( i=0; i<om->neq; i++ )
+    { 
+       data->adjvalue[i] = data->adjvalue[i] -
+	 evaluateAST(data->model->vector_v[i], data);
+       /* also need to update solver->yA */
+        NV_Ith_S(solver->yA, i) = data->adjvalue[i];    
+    }
+    om->compute_vector_v=0;
+
+    /* compute quadrature: quad for the computed step is now added to qA  */
+    flag = CVodeGetQuadB(solver->cvadj_mem, solver->qA);
+  
+    if (flag != CV_SUCCESS)
+    {  
+      CVODE_HANDLE_ERROR(&flag, "CVodeGetQuadB", 1); 
+      return 0;
+    }
+
+    /* reinit solvers */   
+    flag = CVodeReInitB(solver->cvadj_mem, om->current_AdjRHS,
+			data->currenttime,
+			solver->yA, CV_SV, solver->reltolA, solver->abstolA);
+    if (flag != CV_SUCCESS)
+    { 
+      CVODE_HANDLE_ERROR(&flag, "CVodeReInitB", 1);
+      return 0; 
+    } 
+
+    /*  om->adjointQuadFunction */
+    flag = CVodeQuadReInitB(solver->cvadj_mem, os->current_AdjQAD, solver->qA);
+   if (flag != CV_SUCCESS)
+   {   
+      CVODE_HANDLE_ERROR(&flag, "CVodeQuadReInitB", 1);
+      return 0;
+   }
+
+  } /* if (opt->observation_data_type == 1) */
+
+  /* increase integration step counter */
+  solver->iout++;
+    
+  /* ... and set next output time */
+  if ( opt->Indefinitely )
+    solver->tout += opt->Time;
+  else if ( solver->iout <= solver->nout )
+    solver->tout = opt->AdjTimePoints[solver->iout];
+
+return 1;
+}
+
+
+
+/**************** Internal Checks During Integration Step *******************/
+
+/**  Evaluates event trigger expressions and executes event assignments
+     for those triggers that are true.
+
+     Results are stored appropriately  in engine->data->value.
+     Recreation of new solver structures (if an ODE variable is changed)
+     is handled by integratorInstance_setVariableValue(engine).
+     Returns the number of triggers that fired.
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_checkTrigger(integratorInstance_t *engine)
+{  
+  int i, j, fired;
+
+  cvodeSettings_t *opt = engine->opt;
+  cvodeData_t *data = engine->data;
+  odeModel_t *om = engine->om;
+
+  /** evaluate assignments required befor trigger evaluation; \n */
+  for ( i=0; i<om->nassbeforeevents; i++ )
+  {
+    nonzeroElem_t *ordered = om->assignmentsBeforeEvents[i];
+    data->value[ordered->i] = evaluateAST(ordered->ij, data);
+  }
+  
+  fired = 0;
+
+  for ( i=0; i<data->nevents; i++ )
+  {
+    /* check each trigger flag */
+    if ( data->trigger[i] == 0 )
+    {
+      /* if flag was zero, check if the trigger is fired now */
+      if ( evaluateAST(om->event[i], data) )
+      {
+	if ( opt->HaltOnEvent )
+	{
+	  char *eq = SBML_formulaToString(om->event[i]);
+	  SolverError_error(ERROR_ERROR_TYPE,
+			    SOLVER_ERROR_EVENT_TRIGGER_FIRED,
+			    "Event Trigger %d (%s) fired at time %g. "
+			    "Aborting simulation.",
+			    i, eq, data->currenttime);
+	  free(eq);
+	}
+	/* removed AMF 08/11/05
+	   else 
+	   SolverError_error(WARNING_ERROR_TYPE,
+	   SOLVER_ERROR_EVENT_TRIGGER_FIRED,
+	   "Event Trigger %d (%s) fired at time %g. ",
+	   i, SBML_formulaToString(trigger),
+	   data->currenttime); */
+	fired++;
+	data->trigger[i] = 1;      
+	for ( j=0; j<om->neventAss[i]; j++ )
+	{
+	  double result = evaluateAST(om->eventAssignment[i][j], data);
+	  int idx = om->eventIndex[i][j]; 
+	  IntegratorInstance_setVariableValueByIndex(engine, idx, result);
+	}
+      }
+    }
+    else
+      /* set trigger flag to zero */
+      if ( !evaluateAST(om->event[i], data) ) data->trigger[i] = 0;
+  }
+
+  return fired;
+}
+
+/** Approximate identification of a steady state, returns 1 upon
+    detection.
+
+    Evaluates mean and standard deviation of rates and returns 1 if a
+    "steady state" is reached. This function is also called internally
+    by the integrator if steady state detection is switched on via
+    CvodeSettings_setSteadyState! In this case detection of a steady
+    state will stop the integrator. The threshold for steady state
+    detection can be set via CvodeSettings_setSteadyStateThreshold.
+*/
+/* NOTE: provisional steady state finding! */
+SBML_ODESOLVER_API int IntegratorInstance_checkSteadyState(integratorInstance_t *engine)
+{
+  int i;
+  double dy_mean, dy_var, dy_std;
+  cvodeData_t *data = engine->data;
+  odeModel_t *om = engine->om;
+  cvodeSettings_t *opt= engine->opt;
+
+  assert(om != NULL);
+  if (om->neq == 0) { /* in case of no ODEs */
+    data->steadystate = 0;
+    return 0;
+  }
+
+  if ( !data->allRulesUpdated )
+    for ( i=0; i<om->nassbeforeodes; i++ )
+    {
+      nonzeroElem_t *ordered = om->assignmentsBeforeODEs[i];
+#ifdef ARITHMETIC_TEST
+      data->value[ordered->i] = ordered->ijcode->evaluate(data);    
+#else
+      data->value[ordered->i] = evaluateAST(ordered->ij, data);
+#endif    
+    }
+  
+  /* calculate the mean and standard deviation of rates of change and
+     store in cvodeData_t * */
+  dy_mean = 0.0;
+  dy_var = 0.0;
+  dy_std = 0.0;
+  
+  for ( i=0; i<om->neq; i++ ) 
+    dy_mean += fabs(evaluateAST(om->ode[i],data));
+
+  dy_mean = dy_mean / om->neq;
+  for ( i=0; i<om->neq; i++ )
+  {
+    double d = evaluateAST(om->ode[i],data) - dy_mean;
+    dy_var += d*d;
+  }
+
+  dy_var = dy_var / (om->neq -1);
+  dy_std = sqrt(dy_var);
+
+  /* stop integrator if mean + std of rates of change are lower than
+     1e-11/ steady state threshold */
+  if ( (dy_mean + dy_std) < opt->ssThreshold )
+  {
+    data->steadystate = 1;
+    /* issue warning only if steady state detection is one, and
+       integration will stop */
+    if ( opt->SteadyState )
+      SolverError_error(MESSAGE_ERROR_TYPE,
+			SOLVER_MESSAGE_STEADYSTATE_FOUND,
+			"Steady state found. "
+			"Simulation aborted at %g seconds. "
+			"Mean of rates: %g, std %g",
+			data->currenttime, dy_mean, dy_std);
+    return(1) ;
+  }
+  else
+  {
+    data->steadystate = 0;
+    return(0);
+  }  
+}
+
+
+/**************** functions that switch between solvers *****************/
+
+/** Sets the value of a variable or parameter during an
+    integration via its variableIndex.
+
+    This function also takes care of creating and freeing solver
+    structures and ODE variables are changed!  The variableIndex can
+    be retrieved from the odeModel with ODEModel_getVariable via the
+    variable's or the parameter's ID symbol in the input SBML model
+    (can be SBML compartments, species and parameters).
+
+    NOTE: that discontinuities in the ODE RHS functions might be ignored by
+    the SUNDIALS CVODES solver, as it can internally integrate beyond the
+    next time step and miss updates. Thus, it is highly recommended to
+    enforce the solver to only integrate to the next requested time step
+    via CvodeSettings_setTStop(cvodeSettings_t *set, 1).
+*/
+
+SBML_ODESOLVER_API void IntegratorInstance_setVariableValue(integratorInstance_t *engine, variableIndex_t *vi, double value)
+{
+	assert(vi);
+  IntegratorInstance_setVariableValueByIndex(engine, vi->index, value);
+}
+
+SBML_ODESOLVER_API void IntegratorInstance_setVariableValueByID(integratorInstance_t *engine, const char *id, double value)
+{
+
+  variableIndex_t *vi = ODEModel_getVariableIndex(engine->om, id);
+  if ( vi != NULL )
+    IntegratorInstance_setVariableValueByIndex(engine, vi->index, value);
+  VariableIndex_free(vi);
+}
+
+static
+void IntegratorInstance_setVariableValueByIndex(integratorInstance_t *engine,
+						int idx, double value)
+{
+  int i;
+  odeModel_t *om;
+  cvodeData_t *data;
+  cvodeSettings_t *opt;
+  
+  om = engine->om;
+  data = engine->data;
+  opt = engine->opt;
+  
+  if ( idx >= om->neq && idx < (om->neq+om->nass) )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_ATTEMPT_TO_SET_ASSIGNED_VALUE,
+		      "Attempted to set a new value for an assigned ",
+		      "variable: %s. This is not possible. New value ignored!",
+		      om->names[idx] );
+    return;
+  }
+
+  
+  data->value[idx] = value; /* update value */
+
+  /* initial values need to be set in results,
+     because they had already been initialized */
+  if ( engine->solver->t == 0.0 && data->results != NULL )
+    data->results->value[idx][0] = value;
+
+  /* 'solver' is no longer consistant with 'data' */
+  /* to be strictly correct ALWAYS SET engine invalid (not only for
+     ODE variables as before), see biomodels 104 for an example
+     where also R.H.S. changes require re-init. of solver structures */
+  /*!!! TODO : could be optimized: don't set invalid if ODEModel r.h.s
+     does not depend on it */  
+  if ( idx < om->neq || opt->ResetCvodeOnEvent ) 
+    engine->isValid = 0; 
+
+  /* and finally assignment rules, potentially depending on that variable
+     need to be evaluated */
+  /*!!! TODO : could could be optimized using the dependencyMatrix
+        or a DAG structure of dependencies to be yet created ? */
+  for ( i=0; i<om->nass; i++ )
+  {
+    nonzeroElem_t *ordered = om->assignmentOrder[i];
+    data->value[ordered->i] = evaluateAST(ordered->ij, data);
+  }
+  data->allRulesUpdated = 1;
+
+}
+
+
+
+/** Moves the current integration one step forward and switches
+    between different solvers.
+
+    Solvers are currently CVODES for models with ODEs or an internal
+    evaluation of rules for models without ODEs (rate rules).  Returns
+    1 if integration can continue, 0 otherwise.
+    A return value of 0 can be caused by solver failure, by detection of
+    a steady state or an event if steady state detection or
+    HaltOnEvent options are activated, respectively.
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_integrateOneStep(integratorInstance_t *engine)
+{
+  engine->processEvents = 1;
+     
+  /* switch between solvers, the called functions are
+     required to update ODE variables, that is data->values
+     with index i:  0 <= i < neq
+     and use the default update IntegratorInstance_updateData(engine)
+     afterwards */
+    
+  /* for models without ODEs, we just need to increase the time */
+  if ( engine->om->neq == 0 ) 
+    return IntegratorInstance_simpleOneStep(engine);
+  /* call CVODE Solver */
+  else 
+    return IntegratorInstance_cvodeOneStep(engine);
+  
+  /* upcoming solvers */
+  /* if (om->algebraic) IntegratorInstance_idaOneStep(engine); */
+}
+
+
+/** Same as above, but without event processing!
+    
+    Returns 1 if integration can continue, 0 otherwise.
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_integrateOneStepWithoutEventProcessing(integratorInstance_t *engine)
+{
+  engine->processEvents = 0;
+  /* switch between solvers, the called functions are
+     required to update ODE variables, that is data->values
+     with index i:  0 <= i < neq
+     and use the default update IntegratorInstance_updateData(engine)
+     afterwards */
+    
+
+  /* for models without ODEs, we just need to increase the time */
+  if ( engine->om->neq == 0 ) 
+    return IntegratorInstance_simpleOneStep(engine);
+  /* call CVODE Solver */
+  else 
+    return IntegratorInstance_cvodeOneStep(engine);
+
+}
+
+/**  Prints the current state of the solver
+ */
+
+SBML_ODESOLVER_API void IntegratorInstance_dumpSolver(integratorInstance_t *engine)
+{
+  odeModel_t *om = engine->om;
+  cvodeSolver_t *solver = engine->solver;
+
+  /* should be common to all solvers */
+  printf("\n");
+  printf("INTEGRATOR STATE:\n\n");
+  printf("Current Time Settings:\n");
+  printf("start time:          %g\n", solver->t0);
+  printf("current time:        %g\n", solver->t);
+  printf("next time:           %g\n", solver->tout);
+  printf("current step number: %d\n", solver->iout);
+  printf("total step number:   %d\n", solver->nout);
+  printf("\n");
+
+  /* solver specific switches */
+  /* CVODE */
+  if (om->neq)
+  {
+    printf("CVODE Error Settings:\n");
+    /* currently the same abs. error for all y */
+    printf("absolute error tolerance: %g\n", engine->opt->Error);
+    printf("relative error tolerance: %g\n", solver->reltol);
+    printf("max. internal step nr.:   %d\n", engine->opt->Mxstep);
+  }
+  
+  /* if (om->algebraic) ?? */
+  /* if (opt->Sensitivity) ?? */ 
+  printf("\n");
+}
+
+
+/**  Frees an integratorInstance, including cvodeData
+ */
+
+SBML_ODESOLVER_API void IntegratorInstance_free(integratorInstance_t *engine)
+{
+	if (!engine) return;
+  /* solver specific switches */
+  if (engine->om && engine->om->neq)
+    IntegratorInstance_freeCVODESolverStructures(engine);
+
+  /* if (om->algebraic) ?? */
+  /* if (opt->Sensitivity) ?? */
+
+  ODESense_free(engine->os);
+  CvodeData_free(engine->data);
+  free(engine->solver);
+  free(engine);
+
+}
+
+
+/**  Standard handler for when the integrate function fails.
+
+     WARNING: if you run multiple integrators, this function
+     won't work correctly as currently all errors are stored
+     globally.
+ */
+
+SBML_ODESOLVER_API int IntegratorInstance_handleError(integratorInstance_t *engine)
+{
+  cvodeSettings_t *opt;
+  int errorCode;
+
+  if ( SolverError_getNum(ERROR_ERROR_TYPE) == 0 )
+    return SolverError_getLastCode(WARNING_ERROR_TYPE);
+  
+  errorCode = SolverError_getLastCode(ERROR_ERROR_TYPE);
+  opt = engine->opt;
+
+  /* if (om->algebraic) ?? */
+  /* if (opt->Sensitivity) ?? */
+  
+  if ( errorCode )
+  {        
+    /* on flag CV_CONV_FAILURE
+       try again, but now with/without generated Jacobian matrix  */
+    if ( errorCode == CV_CONV_FAILURE && engine->run == 1 &&
+	 opt->StoreResults)
+    {      
+      SolverError_error(MESSAGE_ERROR_TYPE,
+			SOLVER_MESSAGE_RERUN_WITH_OR_WO_JACOBIAN,
+			"Try to rerun with %s Jacobi matrix.",
+			opt->UseJacobian ?
+			"CVODE's internal approximation of the" :
+			"analytic version of the");
+
+      /* the following doesnt work anymore, as options
+       should be treated as const! */
+      /*       /\* integrate again *\/ */
+/*       engine->UseJacobian = !engine->UseJacobian; */
+/*       IntegratorInstance_reset(engine); */
+/*       return IntegratorInstance_integrate(engine); */
+    }
+  }
+  return errorCode;
+}
+
+
+/**  Prints some final statistics of the solver
+ */
+
+SBML_ODESOLVER_API void IntegratorInstance_printStatistics(const integratorInstance_t *engine, FILE *f)
+{
+  odeModel_t *om = engine->om;
+
+  /* if (om->algebraic) IntegratorInstance_printIDAStatistics(engine, f); */
+    
+  if (!om->neq)
+    fprintf(f, "## No statistics available for models without ODEs.\n");
+  else 
+    IntegratorInstance_printCVODEStatistics(engine, f);
+}
+
+/** returns the time elapsed in seconds since the start of integration
+ */
+SBML_ODESOLVER_API double IntegratorInstance_getIntegrationTime(const integratorInstance_t *engine)
+{
+  if (engine->clockStarted)
+    return ((double)(clock() - engine->startTime)) / CLOCKS_PER_SEC; 
+  else
+    return 0;
+}
+
+double *IntegratorInstance_getValues(integratorInstance_t *engine)
+{
+  return engine->data->value;
+}
+
+
+/*@}*/
diff --git a/src/integratorSettings.c b/src/integratorSettings.c
new file mode 100644
index 0000000..80f6fa1
--- /dev/null
+++ b/src/integratorSettings.c
@@ -0,0 +1,1188 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*   Last changed Time-stamp: <02-Feb-2011 13:48:51 raim> */
+/*   $Id: integratorSettings.c,v 1.53 2011/03/06 09:56:18 raimc Exp $ */
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/*! \defgroup setttings Integrator Settings
+    \ingroup integration 
+    \brief This module contains all functions to set integration options
+    in integratorSettings
+    
+    With these functions an application can choose integration time,
+    methods and options like error tolerances.
+*/
+/*@{*/
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "sbmlsolver/integratorSettings.h"
+#include "sbmlsolver/solverError.h"
+#include "sbmlsolver/interpol.h"
+#include "sbmlsolver/util.h"
+#include "private/data.h"
+
+/** Creates a settings structure with default values
+*/
+
+SBML_ODESOLVER_API cvodeSettings_t *CvodeSettings_create(void)
+{
+  return CvodeSettings_createWithTime(1., 10);
+}
+
+
+/** Creates a settings structure with default Values
+    for Errors, MxStep and Swicthes
+*/
+
+SBML_ODESOLVER_API cvodeSettings_t *CvodeSettings_createWithTime(double Time, int PrintStep)
+{
+  /* !!! CHANGE DEFAULT VALUES HERE!!! */
+  return CvodeSettings_createWith(Time, PrintStep,
+				  1e-18, 1e-10, 10000, 0, 0,
+				  1, 0, 0, 0, 1, 0, 0);
+}
+
+
+/** Print all cvodeSettings
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_dump(cvodeSettings_t *set)
+{
+  printf("\n");
+  printf("SOSlib INTEGRATION SETTINGS\n");
+  printf("1) CVODE SPECIFIC SETTINGS:\n");
+  printf("absolute error tolerance for each output time:   %g\n",
+	 set->Error);
+  printf("relative error tolerance for each output time:   %g\n",
+	 set->RError);
+  printf("max. nr. of steps to reach next output time:     %d\n",
+	 set->Mxstep);
+  printf("Nonlinear solver method:                         %d: %s\n"
+	 "          Maximum Order:                         %d\n",
+	 set->CvodeMethod, CvodeSettings_getMethod(set), set->MaxOrder);
+  printf("Iteration method:                                %d: %s\n",
+	 set->IterMethod, CvodeSettings_getIterMethod(set));
+  printf("Sensitivity:                                     %s\n",
+	 set->Sensitivity ? "1: yes " : "0: no");
+  printf("     method:                                     %d: %s\n",
+	 set->SensMethod, CvodeSettings_getSensMethod(set));
+  printf("2) SOSlib SPECIFIC SETTINGS:\n");
+  printf("Jacobian matrix: %s\n", set->UseJacobian ?
+	 "1: generate Jacobian" : "0: CVODE's internal approximation");
+  printf("Indefinitely:    %s\n", set->Indefinitely ?
+	 "1: infinite integration" :
+	 "0: finite integration");
+  printf("Event Handling:  %s\n", set->HaltOnEvent ?
+	 "1: stop integration" :
+	 "0: keep integrating");
+  printf("Steady States:   %s\n", set->SteadyState ?
+	 "1: stop integrating" :
+	 "0: keep integrating");
+  printf("Steady state threshold: %g\n", set->ssThreshold);
+  printf("Store Results:   %s\n", set->StoreResults ?
+	 "1: store results (only for finite integration)" :
+	 "0: don't store results");  
+  printf("3) TIME SETTINGS:\n");
+  if ( set->Indefinitely )
+    printf("Infinite integration with time step %g", set->Time);
+  else {
+    printf("endtime: %g\n", set->TimePoints[set->PrintStep]);
+    printf("steps:   %d", set->PrintStep);
+  }
+  printf("\n");
+  printf("\n");
+}
+
+
+/** Creates a settings structure from input values - WARNING:
+    this function's type signature will change with time,
+    as new settings will be required for other solvers!
+*/
+
+SBML_ODESOLVER_API cvodeSettings_t *CvodeSettings_createWith(double Time, int PrintStep, double Error, double RError, int Mxstep, int Method, int IterMethod, int UseJacobian, int Indefinitely, int HaltOnEvent, int HaltOnSteadyState, int StoreResults, int Sensitivity, int SensMethod)
+{
+
+  cvodeSettings_t *set;
+  ASSIGN_NEW_MEMORY(set, struct cvodeSettings, NULL);
+
+  /* 1. Setting SBML ODE Solver integration parameters */
+  CvodeSettings_setErrors(set, Error, RError, Mxstep);
+  /* set non-linear solver defaults (BDF, Newton, max.order 5*/
+  set->CvodeMethod = Method;
+  set->IterMethod = IterMethod;
+  if ( Method == 0 )
+    set->MaxOrder = 5;
+  else
+    set->MaxOrder = 12;
+  set->compileFunctions = 0;
+  set->ResetCvodeOnEvent = 1;
+  CvodeSettings_setSwitches(set, UseJacobian, Indefinitely,
+			    HaltOnEvent, HaltOnSteadyState, StoreResults,
+			    Sensitivity, SensMethod);
+
+  /* 2. Setting Requested Time Series */
+  /* Unless indefinite integration, generate a TimePoints array  */
+  if  ( !Indefinitely ) 
+    /* ... generate default TimePoint array */
+    CvodeSettings_setTime(set, Time, PrintStep);
+
+  /* 3. Setting no selected parameters/ICs */
+  set->sensIDs = NULL;
+  set->nsens = 0; 
+
+  /* Default: not doing adjoint solution  */
+  set->DoAdjoint = 0;
+  /* set->AdjointPhase = 0; */
+ 
+  /* default: use continuous observation */
+  set->observation_data_type = 0;
+
+  /* deactivate TSTOP mode of CVODE */
+  set->SetTStop = 0;
+   
+  /* do not trigger numerical refinement upon detection of negative state values */
+  set->DetectNegState = 0;
+
+  return set;
+}
+
+
+/** Creates a settings structure and copies all values from input
+*/
+/*!!! TODO : check whether clone copies all values, find better solution */
+SBML_ODESOLVER_API cvodeSettings_t *CvodeSettings_clone(cvodeSettings_t *set)
+{
+  int i;
+  cvodeSettings_t *clone;
+  ASSIGN_NEW_MEMORY(clone, struct cvodeSettings, NULL);
+    
+  /* Setting SBML ODE Solver integration parameters */
+  CvodeSettings_setErrors(clone, set->Error, set->RError, set->Mxstep);
+  CvodeSettings_setSwitches(clone, set->UseJacobian, set->Indefinitely,
+			    set->HaltOnEvent, set->SteadyState,
+			    set->StoreResults,
+			    set->Sensitivity, set->SensMethod);
+
+  CvodeSettings_setMethod(clone, set->CvodeMethod, set->MaxOrder);
+  CvodeSettings_setIterMethod(clone, set->IterMethod);
+
+  clone->compileFunctions = set->compileFunctions;
+  clone->ResetCvodeOnEvent = set->ResetCvodeOnEvent;
+  
+  /* Unless indefinite integration is chosen, generate a TimePoints array  */
+  if  ( !clone->Indefinitely ) {    
+    ASSIGN_NEW_MEMORY_BLOCK(clone->TimePoints,clone->PrintStep+1,double,NULL);
+    /* copy TimePoint array */
+    for ( i=0; i<=clone->PrintStep; i++ ) 
+      clone->TimePoints[i] = set->TimePoints[i];    
+    
+    /* if adjoint TimePoint array exists, also copy it */
+    if ( set->AdjTimePoints != NULL  ){
+      ASSIGN_NEW_MEMORY_BLOCK(clone->AdjTimePoints,clone->PrintStep+1,double,NULL);
+      /* copy TimePoint array */
+      for ( i=0; i<=clone->PrintStep; i++ ) 
+	clone->AdjTimePoints[i] = set->AdjTimePoints[i];     
+    }
+  }
+  return clone;
+}
+
+
+/** Sets absolute and relative error tolerances and maximum number of
+    internal steps during CVODE integration 
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setErrors(cvodeSettings_t *set, double Error, double RError, int Mxstep) 
+{
+  CvodeSettings_setError(set, Error);
+  CvodeSettings_setRError(set, RError);
+  CvodeSettings_setMxstep(set, Mxstep);    
+}
+
+
+/** Sets absolute error tolerance 
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setError(cvodeSettings_t *set, double Error)
+{
+  set->Error = Error;
+}
+
+
+/** Sets relative error tolerance 
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setRError(cvodeSettings_t *set, double RError)
+{
+  set->RError = RError;
+}
+
+/** Sets maximum number of internal steps during CVODE integration */
+
+SBML_ODESOLVER_API void CvodeSettings_setMxstep(cvodeSettings_t *set, int Mxstep)
+{
+  set->Mxstep = Mxstep;  
+}
+
+/** Sets flag that tells solver that the adjoint solution is desired */
+SBML_ODESOLVER_API void CvodeSettings_setDoAdj(cvodeSettings_t *set) 
+{
+  set->DoAdjoint = 1;
+}
+
+/** Sets flag that tells solver that the adjoint solution is desired   */
+SBML_ODESOLVER_API void CvodeSettings_unsetDoAdj(cvodeSettings_t *set) 
+{
+  set->DoAdjoint = 0;
+}
+
+
+/** Sets absolute and relative error tolerances and maximum number of
+    internal steps during CVODE adjoint integration 
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setAdjErrors(cvodeSettings_t *set, double Error, double RError) 
+{
+  CvodeSettings_setAdjError(set, Error);
+  CvodeSettings_setAdjRError(set, RError);
+  /* CvodeSettings_setAdjMxstep(set, Mxstep);*/    
+}
+
+/** Sets absolute error tolerance for adjoint integration  
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setAdjError(cvodeSettings_t *set, double Error)
+{
+  set->AdjError = Error;
+}
+
+/** Sets relative error tolerance for adjoint integration  
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setAdjRError(cvodeSettings_t *set, double RError)
+{
+  set->AdjRError = RError;
+}
+
+
+/** Sets the number of forward steps saved, prior to doing the adjoint integration  
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setnSaveSteps(cvodeSettings_t *set, int nSaveSteps)
+{
+  set->nSaveSteps = nSaveSteps;
+}
+
+/** Set method non-linear solver methods, and its maximum order (currently
+    the latter cannot really be set, but default to 5 for BDF or 12 for
+    Adams-Moulton!!
+    
+    CvodeMethod: 0: BDF (default); 1: Adams-Moulton,\n
+    MaxOrder: maximum order (default: 5 for BDF, 12 for Adams-Moulton.
+
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setMethod(cvodeSettings_t *set, int CvodeMethod, int MaxOrder)
+{
+  /* CvodeMethod == 0: default BDF method
+     Method == 1: Adams-Moulton method */
+  if ( 0 <= CvodeMethod &&  CvodeMethod < 2 )
+  {
+    set->CvodeMethod = CvodeMethod;
+    set->MaxOrder = MaxOrder;
+  }
+  /* else error message !! ? */
+}
+
+
+/** Set method for CVODE integration
+
+    0: NEWTON (default)\n
+    1: FUNCTIONAL
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setIterMethod(cvodeSettings_t *set, int i)
+{
+  /* i == 0: default NEWTON iteration
+     i == 1: FUNCTIONAL iteraction */
+  if ( 0 <= i && i < 2 ) set->IterMethod = i;
+  else set->IterMethod = 0;
+}
+
+
+/** NOT USED!
+
+    Sets maximum order of BDF or Adams-Moulton method, respectively,
+    currently this settings is NOT USED; defaults to 5 for BDF and 12
+    for Adams-Moulton
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setMaxOrder(cvodeSettings_t *set, int MaxOrder)
+{
+  set->MaxOrder = MaxOrder;  
+}
+
+/** Activates the detection of negative state values. CVodes would then perform
+    numerical refinement if negative state inputs are encountered. */
+SBML_ODESOLVER_API void CvodeSettings_setDetectNegState(cvodeSettings_t *set, int i)
+{
+  set->DetectNegState = i;
+}
+
+/** Sets whether the simulator uses compiled functions
+    for computing ODEs, the Jacabian or events
+*/
+/*!!! either implement compilation or catch during integratio */
+SBML_ODESOLVER_API void CvodeSettings_setCompileFunctions(cvodeSettings_t *set, int compileFunctions)
+{
+  set->compileFunctions = compileFunctions;
+
+}
+
+
+/** Activates the TSTOP mode of CVODES. This is highly recommended when
+    IntegratorInstance_setVariableValue affects ODE right hand side
+    equations (e.g. rate laws), PLEASE CLICK AND READ MORE BELOW
+
+    Setting TStop is not required for all model types, but mainly necessary
+    for very "unstiff" (easy-to-solve) models, for which CVODE internally can
+    integrate far beyond the next time step. It will then not evaluate the
+    right hand side of the ODE system for one or more output time steps and
+    thus not realize the change.   */
+SBML_ODESOLVER_API void CvodeSettings_setTStop(cvodeSettings_t *set, int i)
+{
+  set->SetTStop = i;
+}
+
+/** Sets integration switches in cvodeSettings. WARNING: this
+    function's type signature will change with time, as new settings
+    will be required for other solvers!
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setSwitches(cvodeSettings_t *set, int UseJacobian, int Indefinitely, int HaltOnEvent, int HaltOnSteadyState, int StoreResults, int Sensitivity, int SensMethod)
+{  
+  set->UseJacobian = UseJacobian;
+  set->Indefinitely = Indefinitely;
+  set->HaltOnEvent = HaltOnEvent;
+  set->StoreResults = StoreResults;
+  CvodeSettings_setHaltOnSteadyState(set, HaltOnSteadyState);
+  CvodeSettings_setSensitivity(set, Sensitivity);
+  CvodeSettings_setSensMethod(set, SensMethod);
+}
+
+
+/** Calculates a time point series from Endtime and Printstep and sets
+    the time series in cvodeSettings.
+    PrintStep must be positive.
+    Returns 1, if sucessful and 0, if not.
+*/
+
+SBML_ODESOLVER_API int CvodeSettings_setTime(cvodeSettings_t *set, double EndTime, int PrintStep)
+{
+  int i, j;
+  double *timeseries;
+
+  assert(PrintStep > 0);
+  ASSIGN_NEW_MEMORY_BLOCK(timeseries, PrintStep, double, 0);
+
+  /* suppress multiple printsteps for EndTime 0, such that only the
+     initial values are printed! */
+  if ( EndTime == 0.0 ) PrintStep = 0;
+  
+  for ( i=1; i<=PrintStep; i++ ) timeseries[i-1] = i * EndTime/PrintStep;
+  
+  j = CvodeSettings_setTimeSeries(set, timeseries, PrintStep);
+  free(timeseries);
+  return j;
+}
+
+/** Copies a predefined timeseries into cvodeSettings. Assigns memory for
+    an array of requested time points with size PrintStep + 1 (including
+    initial time 0). Returns 1, if sucessful and 0, if not. */
+
+SBML_ODESOLVER_API int CvodeSettings_setTimeSeries(cvodeSettings_t *set,
+						   double *timeseries,
+						   int PrintStep)
+{
+  int i;
+
+  if ( set->TimePoints != NULL )
+    free(set->TimePoints);
+  
+  ASSIGN_NEW_MEMORY_BLOCK(set->TimePoints, PrintStep+1, double, 0);    
+  set->Time = timeseries[PrintStep-1];
+  set->PrintStep = PrintStep;
+  set->TimePoints[0] = 0.0;
+  for ( i=1; i<=PrintStep; i++ ) 
+    set->TimePoints[i] = timeseries[i-1];
+
+  return 1;
+}
+
+/** Calculates adjoint time point series from Endtime and Printstep and sets
+    the time series in cvodeSettings. Returns 1, if sucessful and 0, if
+    not.
+*/
+
+SBML_ODESOLVER_API int CvodeSettings_setAdjTime(cvodeSettings_t *set, double EndTime, int PrintStep)
+{
+  int i, j;
+  double *timeseries;
+  ASSIGN_NEW_MEMORY_BLOCK(timeseries, PrintStep, double, 0);  
+
+  /* Adjoint time series goes backwards, from EndTime to 0 */
+  for ( i=1; i<=PrintStep; i++ )
+    timeseries[i-1] = (PrintStep - i) * EndTime/PrintStep;
+ 
+  j = CvodeSettings_setAdjTimeSeries(set, timeseries, PrintStep, EndTime);
+
+  free(timeseries);
+  return j;
+}
+
+
+/** Copies a predefined adjoint time series into cvodeSettings.
+    Assigns memory for an array of requested time points with size
+    AdjPrintStep + 1 (including initial time EndTime).
+    Returns 1, if sucessful and 0, if  not. */
+
+SBML_ODESOLVER_API  int CvodeSettings_setAdjTimeSeries(cvodeSettings_t *set,
+						       double *timeseries,
+						       int AdjPrintStep,
+						       double EndTime)
+{
+  int i;
+
+  if ( set->AdjTimePoints != NULL )
+   free(set->AdjTimePoints);
+
+  ASSIGN_NEW_MEMORY_BLOCK(set->AdjTimePoints, AdjPrintStep+1, double, 0);    
+
+  set->AdjTime = timeseries[AdjPrintStep-1];
+  set->AdjPrintStep = AdjPrintStep;
+
+  /* Adjoint is integrated backwards from EndTime to time=0.0
+     (initial time for forward)  */
+  set->AdjTimePoints[0] = EndTime;
+
+  for ( i=1; i<= AdjPrintStep; i++ ) 
+    set->AdjTimePoints[i] = timeseries[i-1];
+  
+  return 1;
+}
+
+/** Gets the type of observation data,
+    values are:
+    0 ... continuous data
+    1 ... discrete data  */
+SBML_ODESOLVER_API int CvodeSettings_getObservationDataType(cvodeSettings_t *set)
+{
+  return set->observation_data_type;
+}
+
+
+/** Sets flag that tells solver that the (experimental) data should be treated as discrete entities  */
+SBML_ODESOLVER_API void CvodeSettings_setDiscreteObservation(cvodeSettings_t *set) 
+{
+  set->observation_data_type = 1;
+}
+
+/** unsets flag that tells solver that the (experimental) data should be treated as discrete entities  */
+SBML_ODESOLVER_API void CvodeSettings_unsetDiscreteObservation(cvodeSettings_t *set) 
+{
+  set->observation_data_type = 0;
+}
+
+/** Sets flag that tells solver to compute FIM (instead of gradient to objective) */
+SBML_ODESOLVER_API void CvodeSettings_setFIM(cvodeSettings_t *set) 
+{
+  set->doFIM = 1;
+}
+
+/** Sets flag that tells solver not to compute FIM (but the gradient as "normal")  */
+SBML_ODESOLVER_API void CvodeSettings_unsetFIM(cvodeSettings_t *set) 
+{
+  set->doFIM = 0;
+}
+
+
+/* Reads time point column of data, for use in
+   CvodeSettings_setForwAdjTimeSeriesFromData   */
+static int read_time(char *file, double *timepoints)
+{    
+  FILE *fp;
+  char *line, *token;
+  int i;
+
+  /* open file */
+  if ( (fp = fopen(file, "r")) == NULL )
+    fatal(stderr, "read_time(): file not found");
+
+  /* find data lines */
+  for ( i=0; (line = get_line(fp)) != NULL; i++ )
+  {  
+    /* column 0 */
+    token = strtok(line, " ");
+    /* skip empty lines and comment lines (including header line) */
+    if ( token == NULL || *token == '#' )
+    {
+      free(line);
+      i--;
+      continue;
+    }
+    timepoints[i] = scan_double(token);
+    free(line);
+  }
+
+  /* free */
+  fclose(fp);
+
+  return i;
+}
+
+
+/** Reads experimental data time points and use them in cvodeSettings.
+    TimeSteps are given by the time values of data, with InterStep number of time points in
+    between each 'data' time.
+    Assigns memory for (forward and adjoint) arrays of requested time points with size PrintStep + 1 
+    (including initial time 0). Returns 1, if sucessful and 0, if not. */
+
+SBML_ODESOLVER_API int CvodeSettings_setForwAdjTimeSeriesFromData(cvodeSettings_t *set, char *TimeSeriesData_file, int InterStep)
+{
+  int i, n_time, OffSet, TotalNumStep;
+  double *DataTimePoints;  
+  double ZeroTol = 1e-5, NextDataTime, TimeStep;
+  div_t d;
+
+ if ( set->TimePoints != NULL )
+  free(set->TimePoints);
+
+  /* count number of lines */
+  n_time = read_columns(TimeSeriesData_file, 0, NULL, NULL, NULL);
+  ASSIGN_NEW_MEMORY_BLOCK(DataTimePoints, n_time, double, 0.0);
+  
+  /* read time data */
+  read_time(TimeSeriesData_file, DataTimePoints);
+
+  OffSet = 0;
+  if ( fabs(DataTimePoints[0] - 0.0) > ZeroTol  )
+    OffSet = 1;
+ 
+  TotalNumStep = (n_time-1) * (1+InterStep) + 1 + OffSet;
+  ASSIGN_NEW_MEMORY_BLOCK(set->TimePoints, TotalNumStep, double, 0.0);
+
+  for (i=0; i< TotalNumStep-OffSet; i++)
+  {  
+    set->TimePoints[0] = 0.0;
+    d = div(i, 1+InterStep);
+
+    if( d.rem == 0){
+      set->TimePoints[OffSet+i] = DataTimePoints[d.quot];
+    }
+    else{
+
+      if (d.quot == n_time-1 ){
+	NextDataTime =  DataTimePoints[d.quot];
+      }
+      else{
+        NextDataTime =  DataTimePoints[d.quot+1];
+      }
+
+
+      TimeStep = NextDataTime - DataTimePoints[d.quot];
+      set->TimePoints[OffSet+i] = DataTimePoints[d.quot] +
+	((double) d.rem/(1+InterStep) * TimeStep);
+    }
+
+  }
+  free(DataTimePoints);
+  set->PrintStep = TotalNumStep-1;
+  set->Time = ((double) set->TimePoints[set->PrintStep]);
+  set->OffSet = OffSet;
+  set->InterStep = InterStep; 
+
+
+ if (set->AdjTimePoints != NULL)
+  free(set->AdjTimePoints);
+
+ ASSIGN_NEW_MEMORY_BLOCK(set->AdjTimePoints, TotalNumStep, double, 0.0);
+
+ for ( i=0; i<TotalNumStep; i++ )  
+     set->AdjTimePoints[i] = ((double) set->TimePoints[TotalNumStep-i-1]);
+
+ set->AdjTime= 0.0;
+ set->AdjPrintStep =  set->PrintStep; 
+
+  return 1;
+}
+
+
+SBML_ODESOLVER_API int CvodeSettings_setTimePointsFromExpm(cvodeSettings_t *set, time_series_t *expm, int InterStep)
+{
+  int i, n_time, OffSet, TotalNumStep;
+  double *DataTimePoints;  
+  double ZeroTol = 1e-5, NextDataTime, TimeStep;
+  div_t d;
+
+  if (set->TimePoints != NULL)
+    free(set->TimePoints);
+  
+  /* count number of lines */
+  n_time = expm->n_time;
+  ASSIGN_NEW_MEMORY_BLOCK(DataTimePoints, n_time, double, 0.0);
+  
+  /* read time data */
+  for ( i=0; i<n_time; i++ )
+      DataTimePoints[i] = expm->time[i];
+
+  OffSet = 0;
+  if ( fabs(DataTimePoints[0] - 0.0) > ZeroTol  )
+    OffSet = 1;
+ 
+  TotalNumStep = (n_time-1) * (1+InterStep) + 1 + OffSet;
+  ASSIGN_NEW_MEMORY_BLOCK(set->TimePoints, TotalNumStep, double, 0.0);
+
+  for ( i=0; i< TotalNumStep-OffSet; i++ )
+  {  
+
+    set->TimePoints[0] = 0.0;
+    d = div(i, 1+InterStep);
+
+    if( d.rem == 0 )
+    {
+      set->TimePoints[OffSet+i] = DataTimePoints[d.quot];
+    }
+    else
+    {
+      if ( d.quot == n_time-1 )
+      {
+	NextDataTime =  DataTimePoints[d.quot];
+      }
+      else
+      {
+        NextDataTime =  DataTimePoints[d.quot+1];
+      }
+
+
+      TimeStep = NextDataTime - DataTimePoints[d.quot];
+      set->TimePoints[OffSet+i] = DataTimePoints[d.quot] +
+	((double) d.rem/(1+InterStep) * TimeStep);
+    }
+
+  }
+  
+  free(DataTimePoints);
+  
+  set->PrintStep = TotalNumStep-1;
+  set->Time = ((double) set->TimePoints[set->PrintStep]);
+  set->OffSet = OffSet;
+  set->InterStep = InterStep; 
+
+
+ if ( set->AdjTimePoints != NULL )
+  free(set->AdjTimePoints);
+
+ ASSIGN_NEW_MEMORY_BLOCK(set->AdjTimePoints, TotalNumStep, double, 0.0);
+
+ for ( i=0; i<TotalNumStep; i++ )  
+     set->AdjTimePoints[i] = ((double) set->TimePoints[TotalNumStep-i-1]);
+ 
+ set->AdjTime= 0.0;
+ set->AdjPrintStep =  set->PrintStep; 
+ 
+ return 1;
+}
+
+
+/** Sets the ith time step for the integration, where
+    0 < i <= PrintStep.
+    
+    Returns 1, if sucessful and 0, if not.\n
+    The first time is always 0 and can not be set at the moment, as
+    an SBML input file is supposed to start with 0.
+*/
+
+SBML_ODESOLVER_API int CvodeSettings_setTimeStep(cvodeSettings_t *set, int i, double time)
+{
+  if ( 0 < i && i <= set->PrintStep )
+  {
+    set->TimePoints[i] = time;
+    return 1;
+  }
+  else
+    return 0;
+}
+
+
+/** Sets use of generated Jacobian matrix (i=1) or
+    of CVODE's internal approximation (i=0).
+
+    If construction of the Jacobian matrix fails, the internal
+    approximation will be used in any case!
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setJacobian(cvodeSettings_t *set, int i)
+{
+  set->UseJacobian = i;
+}
+
+
+/** Sets indefinite integration (i=1).
+
+    For indefinite integration
+    Time will be used as integration step and PrintStep will
+    be ignored.
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setIndefinitely(cvodeSettings_t *set, int i)
+{ /* set->Time will be used and PrintStep */
+  set->Indefinitely = i;
+}
+
+
+/** Sets event handling, stop (1, default) or don't stop (0) the
+    integration upon triggering of an event.
+
+    If i==1, the integration will stop upon
+    detection of an event and evaluation of event assignments.
+    
+    If i==0 the integration continues after evaluation of event
+    assignments. CAUTION: the accuracy of event evaluations depends
+    on the chosen printstep values!
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setHaltOnEvent(cvodeSettings_t *set, int i)
+{
+  set->HaltOnEvent = i;
+}
+
+/** Sets discontinuity handling internals, if set to 1 (default!)
+    the CVODES solver will be re-initialized whenever the r.h.s.
+    of the ODE system is changed (by an event assignment or the user).
+
+    If the user is certain that the discontinuous changes applied
+    won't affect the results, this option can be set to 0 and the
+    solver will only be initialized for changes of the
+    l.h.s. (i.e. y(t)) of the model, where this is absolutely necessary.    
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setResetCvodeOnEvent(cvodeSettings_t *set, int i)
+{
+  set->ResetCvodeOnEvent = i;
+}
+
+/** Sets steady state handling (replacing
+    CvodeSettings_setSteadyState): if set to 1, the integration will
+    stop upon an approximate detection of a steady state, which is
+    here defined as some threshold value of the mean value and
+    standard deviation of current ODE values. A warnig message will be
+    issued via SOSlib error management. This functions also sets the
+    default threshold for steady state detection to 1e-11. An
+    alternative threshold can be set via
+    CvodeSettings_setSteadyStateThreshold.
+*/
+
+
+SBML_ODESOLVER_API void CvodeSettings_setHaltOnSteadyState(cvodeSettings_t *set, int i)
+{
+  set->SteadyState = i;
+  CvodeSettings_setSteadyStateThreshold(set, 1e-11);
+}
+
+/** Sets steady state threshold: The mean value + standard deviation
+    of the ODE values must be lower then this threshold. If steady
+    state detection is switched on, the passed value will be used as a
+    threshold for aborting simulation. If steady state detection is
+    switched off, the function IntegratorInstance_checkSteadyState can
+    be used by the calling application and will return 1, if a steady
+    state is detected.    
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setSteadyStateThreshold(cvodeSettings_t *set, double ssThreshold)
+{
+  set->ssThreshold = ssThreshold;
+}
+
+/** Results will only be stored, if i==1 and if a finite integration
+    has been chosen (default value or
+    CvodeSettings_setIndefinitely(settings, 0)). The results can be
+    retrieved after integration has been finished. If i==0 or infinite
+    integration has been chosen, results can only be retrieved during
+    integration via variableIndex interface or dump functions for the
+    integratorInstance.
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setStoreResults(cvodeSettings_t *set, int i)
+{
+  set->StoreResults = i;
+}
+
+
+
+/** Activate sensitivity analysis with 1; also sets to default
+    sensitivity method `simultaneous' (setSensMethod(set, 0));
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_setSensitivity(cvodeSettings_t *set, int i)
+{
+  set->Sensitivity = i;
+  CvodeSettings_setSensMethod(set, 0);
+}
+
+
+
+/** Set a list of SBML IDs of model constants or ODE variables
+    for sensitivity analysis; if NULL is passed instead of a character
+    array a former setting is freed and default sensitivty analysis
+    (for all model constants, but not for initial conditions) will be
+    performed.
+*/
+
+SBML_ODESOLVER_API int CvodeSettings_setSensParams(cvodeSettings_t *set, char **sensIDs, int nsens)
+{ 
+  int i;
+
+  CvodeSettings_unsetSensParams(set);
+  
+  if ( sensIDs != NULL )
+  {
+    ASSIGN_NEW_MEMORY_BLOCK(set->sensIDs, nsens, char *, 0);
+    for ( i=0; i<nsens; i++ )
+    {
+      ASSIGN_NEW_MEMORY_BLOCK(set->sensIDs[i],
+			      strlen(sensIDs[i])+1, char, 0);
+      strcpy(set->sensIDs[i], sensIDs[i]);
+    }
+    set->nsens = nsens;
+  }
+  return 1;
+}
+
+/** De-activate defined sensitivities, and activated default
+    sensitivity for all parameters of the model */
+SBML_ODESOLVER_API void CvodeSettings_unsetSensParams(cvodeSettings_t *set)
+{
+  int i;
+  if ( set->sensIDs != NULL )
+    for ( i=0; i<set->nsens; i++ )
+      free(set->sensIDs[i]);
+  free(set->sensIDs);
+  set->sensIDs = NULL;
+  set->nsens = 0;  
+}
+
+/** Set method for sensitivity analysis:
+    0: simultaneous 1: staggered, 2: staggered1.    
+*/
+
+
+SBML_ODESOLVER_API void CvodeSettings_setSensMethod(cvodeSettings_t *set, int i)
+{
+  if ( 0 <= i && i < 3 ) set->SensMethod = i;
+  else set->SensMethod = 0;
+}
+
+
+/**** cvodeSettings get methods ****/
+
+/** Returns the last time point of integration or -1, if
+    Indefinitely is set to TRUE (1);   
+*/
+
+SBML_ODESOLVER_API double CvodeSettings_getEndTime(cvodeSettings_t *set)
+{
+  if ( !set->Indefinitely ) return set->Time;
+  else return -1.;
+}
+
+
+/** Returns the time step of integration; if infinite integration has
+    been chosen or a non-uniform time series has been set, this is
+    only the first time step.
+*/
+
+SBML_ODESOLVER_API double CvodeSettings_getTimeStep(cvodeSettings_t *set)
+{
+  if ( !set->Indefinitely ) return set->TimePoints[1];
+  else return set->Time;
+}
+
+
+/**  Returns the number of integration steps or -1, if
+     infinite integration has been chosen
+*/
+
+SBML_ODESOLVER_API int CvodeSettings_getPrintsteps(cvodeSettings_t *set)
+{
+  if ( !set->Indefinitely ) return set->PrintStep;
+  else return -1;
+}
+
+
+/** Returns the time of the ith time step, where
+    0 <= i < PrintStep, unless
+    infinite integration has been chosen
+*/
+
+SBML_ODESOLVER_API double CvodeSettings_getTime(cvodeSettings_t *set, int i)
+{
+  if ( !set->Indefinitely ) return set->TimePoints[i];
+  else return i * set->Time;
+}
+
+
+/**  Returns the absolute error tolerance
+*/
+
+SBML_ODESOLVER_API double CvodeSettings_getError(cvodeSettings_t *set)
+{
+  return set->Error;
+}
+
+
+/** Returns the relative error tolerance
+*/
+
+SBML_ODESOLVER_API double CvodeSettings_getRError(cvodeSettings_t *set)
+{
+  return set->RError;
+}
+
+
+/** Returns the maximum number of internal time steps taken
+    by CVODE to reach the next output time (printstep)
+*/
+
+SBML_ODESOLVER_API int CvodeSettings_getMxstep(cvodeSettings_t *set)
+{
+  return set->Mxstep;
+}
+
+/** returns whether the simulator will use compiled functions to compute ODEs, the Jacbian or events
+*/
+SBML_ODESOLVER_API int CvodeSettings_getCompileFunctions(cvodeSettings_t *set)
+{
+  return set->compileFunctions;
+}
+
+/** returns whether the CVODE integrator will be freed and restarted eveytime a event occurs
+*/
+SBML_ODESOLVER_API int CvodeSettings_getResetCvodeOnEvent(cvodeSettings_t *set)
+{
+  return set->ResetCvodeOnEvent;
+}
+
+/** Get non-linear solver method (BDF or ADAMS-MOULTON)
+*/
+
+SBML_ODESOLVER_API const char *CvodeSettings_getMethod(const cvodeSettings_t *set)
+{
+  static const char *meth[] = {
+    "BDF",
+    "ADAMS-MOULTON"
+  };
+  return meth[set->CvodeMethod];
+}
+
+/** Get maximum order of non-linear solver method
+*/
+
+SBML_ODESOLVER_API int CvodeSettings_getMaxOrder(cvodeSettings_t *set)
+{
+  return set->MaxOrder;
+}
+
+/** Get non-linear solver iteration type (NEWTON or FUNCTIONAL)
+*/
+
+SBML_ODESOLVER_API const char *CvodeSettings_getIterMethod(const cvodeSettings_t *set)
+{
+  static const char *meth[] = {
+    "NEWTON",
+    "FUNCTIONAL"
+  };
+  return meth[set->IterMethod];
+}
+
+/** Returns 1, if the automatically generated
+    or 0 if CVODE's internal approximation
+    of the jacobian matrix will be used by CVODE 
+*/
+
+SBML_ODESOLVER_API int CvodeSettings_getJacobian(cvodeSettings_t *set)
+{
+  return set->UseJacobian;
+}
+
+
+/** Returns 1, if infinite integration has been chosen,
+    and 0 otherwise
+*/
+
+SBML_ODESOLVER_API int CvodeSettings_getIndefinitely(cvodeSettings_t *set)
+{
+  return set->Indefinitely;
+}
+
+
+/** Returns 1, if integration should stop upon an event trigger
+    and 0 if integration should continue after evaluation of
+    event assignments
+*/
+
+SBML_ODESOLVER_API int CvodeSettings_getHaltOnEvent(cvodeSettings_t *set)
+{
+  return set->HaltOnEvent;
+}
+
+
+/** Returns 1, if integration should stop upon detection of a
+    steady state, and 0 if integration should continue 
+*/
+
+SBML_ODESOLVER_API int CvodeSettings_getHaltOnSteadyState(cvodeSettings_t *set)
+{
+  return set->SteadyState;
+}
+
+/** Returns to threshold used in steady state detection via
+    IntegratorInstance_checkSteadyState */
+
+SBML_ODESOLVER_API double CvodeSettings_getSteadyStateThreshold(cvodeSettings_t *set)
+{
+  return set->ssThreshold;
+}
+
+  
+/** Returns 1, if integration results should be stored internally,
+    and 0 if not.
+
+    If set to 0 current values can be retrieved during an integration
+    loop, and the values at the end time of integration afterwards.
+*/
+
+SBML_ODESOLVER_API int CvodeSettings_getStoreResults(cvodeSettings_t *set)
+{
+  return set->StoreResults;
+}
+
+
+/** Returns 1, if sensitivity analysis is requested and CVODES
+    will be used.
+*/
+
+SBML_ODESOLVER_API int CvodeSettings_getSensitivity(cvodeSettings_t *set)
+{
+  return set->Sensitivity;
+}
+
+
+/** Get sensitivity method `simultaneous', `staggered'  or `staggered1'
+*/
+
+SBML_ODESOLVER_API const char *CvodeSettings_getSensMethod(const cvodeSettings_t *set)
+{
+  static const char *meth[] = {
+    "simultaneous",
+    "staggered",
+    "staggered1"
+  };
+  return meth[set->SensMethod];
+}
+
+
+/** Frees cvodeSettings.
+*/
+
+SBML_ODESOLVER_API void CvodeSettings_free(cvodeSettings_t *set)
+{
+  int i;
+
+  if (!set) return;
+  if ( set->TimePoints != NULL ) free(set->TimePoints);
+  if ( set->AdjTimePoints != NULL ) free(set->AdjTimePoints);
+  if ( set->sensIDs != NULL )    
+    for ( i=0; i<set->nsens; i++ )
+      free(set->sensIDs[i]);
+  free(set->sensIDs);
+  free(set);
+}
+
+/** @} */
+
+/** Creates a settings structure from a timeSettings structure
+    and fills rest with default values
+*/
+
+cvodeSettings_t *CvodeSettings_createFromTimeSettings(timeSettings_t *time)
+{
+  return CvodeSettings_createWithTime(time->tend, time->nout);
+}
+
+
+
+/* for when timeSettings might become a separate structure,
+   not used at the moment.
+   nout must be positive.
+ */
+timeSettings_t *TimeSettings_create(double t0, double tend, int nout) {
+
+  timeSettings_t *time;
+
+  assert(nout > 0);
+  time = (timeSettings_t *)calloc(1, sizeof(timeSettings_t));
+
+  time->t0 = t0;
+  time->tend = tend;
+  time->nout = nout;
+  time->tmult = (t0-tend) / nout;
+  return time;				  
+
+}
+
+void
+TimeSettings_free(timeSettings_t *time)
+{
+  free(time);
+}
+
+
+
+
+/* End of file */
diff --git a/src/interpol.c b/src/interpol.c
new file mode 100644
index 0000000..5a26239
--- /dev/null
+++ b/src/interpol.c
@@ -0,0 +1,620 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2007-09-07 13:18:03 raim>
+  $Id: interpol.c,v 1.10 2007/12/18 14:05:34 stefan_tbi Exp $
+*/
+
+/* written 2005 by stefan mueller */
+/* revised 2007 by sm */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "sbmlsolver/util.h"
+#include "sbmlsolver/solverError.h"
+#include "private/data.h"
+
+#undef VERBOSE
+/* #define VERBOSE */
+
+#include "sbmlsolver/interpol.h"
+
+/* ------------------------------------------------------------------------ */
+
+void free_data(time_series_t* ts)
+{
+    int i;
+
+    if (!ts) return;
+
+    /* free data */
+    for ( i=0; i<ts->n_var; i++ )
+	{
+	    free(ts->var[i]);
+	    if (ts->data[i] != NULL) free(ts->data[i]);
+	    if (ts->data2[i] != NULL) free(ts->data2[i]);
+	}
+    free(ts->time);
+
+    /* free index lists */
+    free(ts->var);
+    free(ts->data);
+    free(ts->data2);
+    
+    /* free warnings */
+	if (ts->warn) {
+    for ( i=0; i<2; i++ )
+	if ( ts->warn[i] != 0 ) /* ??? use SolverError here ??? */
+	    Warn(stderr, "call(): %s: %d times\n", ts->mess[i], ts->warn[i]);
+	}
+  
+    free(ts->mess);
+    free(ts->warn); 
+
+    /* free */
+    free(ts);
+
+}
+
+/* ------------------------------------------------------------------------ */
+
+void print_data(time_series_t* ts)
+{
+    int i, j;
+
+    /* print */
+    fprintf(stderr, "\n");
+    fprintf(stderr, "n_var : %i\n", ts->n_var);
+    fprintf(stderr, "n_data: %i\n", ts->n_data);
+    fprintf(stderr, "n_time: %i\n", ts->n_time);
+    fprintf(stderr, "\n");
+
+    /* print variable list */
+    fprintf(stderr, "#t ");
+    for (j=0; j<ts->n_var; j++) fprintf(stderr, "%s ", ts->var[j]);
+    fprintf(stderr, "\n");
+  
+    /* print corresponding data */
+    for ( i=0; i<ts->n_time; i++ )
+	{
+	    fprintf(stderr, "%g ", ts->time[i]);
+	    for ( j=0; j<ts->n_var; j++ )
+		{
+		    if (ts->data[j] != NULL)
+			fprintf(stderr, "%g ", ts->data[j][i]);
+		    else fprintf(stderr, "x ");
+		}
+	    fprintf(stderr, "\n");
+	}    	    
+    fprintf(stderr, "\n");
+    
+    /* print */
+    fprintf(stderr, "last  : %i\n", ts->last);
+    fprintf(stderr, "\n");
+    for ( i=0; i<2; i++ )
+	fprintf(stderr, "%s: %d times\n", ts->mess[i], ts->warn[i]);  
+    fprintf(stderr, "\n");
+
+}
+    
+/* ------------------------------------------------------------------------ */
+
+void test_interpol(time_series_t* ts)
+{
+    double *xs, *ys;
+    double x, y_spl, y_lin;
+    double prec;
+    int i, i_, j;
+    int nt, last_spl, last_lin;
+
+    prec = 10;
+    last_spl = 0;
+    last_lin = 0;
+    
+    xs = ts->time;
+    nt = ts->n_time;
+    for ( i=0; i<nt-1; i++ )
+	{
+	    for ( i_=0; i_<prec; i_++ )
+		{
+		    x = xs[i] + (xs[i+1] - xs[i]) * i_ / prec;
+		    printf("%g ", x);
+		    for ( j=0; j<ts->n_var; j++ )
+			{
+			    ys = ts->data[j];
+			    if ( ys != NULL )
+				{
+				    linint(nt, xs, ys, x, &y_lin, &last_lin);
+				    splint(nt, xs, ys, ts->data2[j], x, &y_spl, &last_spl);
+				    printf("%g %g ", y_lin, y_spl);
+				}
+			}
+		    printf("\n");
+		}
+	}
+
+}
+
+/* ------------------------------------------------------------------------ */
+
+/** given a file name and a variable list, read_data reads time series
+    data from the file, (but only for variables in the list) stores
+    the data according to the index in the variable list, calculates
+    the second derivatives for spline interpolation, and returns a
+    pointer to the created data structure. */
+
+time_series_t *read_data(const char *file, int n_var, char **var)
+{
+    int i;
+    char *name;
+
+    int n_data;      /* number of relevant data columns */
+    int *col;        /* positions of relevant columns in data file */
+    int *index;      /* corresponding indices in variable list */
+
+    int n_time;      /* number of data rows */
+
+    time_series_t *ts;
+
+    /* alloc mem */
+    ASSIGN_NEW_MEMORY_BLOCK(ts, 1, time_series_t, NULL);
+
+    /* alloc mem for index lists */
+    ts->n_var = n_var;
+    ASSIGN_NEW_MEMORY_BLOCK(ts->var,   n_var, char *,   NULL);
+    ASSIGN_NEW_MEMORY_BLOCK(ts->data,  n_var, double *, NULL); 
+    ASSIGN_NEW_MEMORY_BLOCK(ts->data2, n_var, double *, NULL);    
+
+    /* initialize index lists */
+    for ( i=0; i<n_var; i++ )
+	{
+	    ASSIGN_NEW_MEMORY_BLOCK(name, strlen(var[i])+1, char , NULL);
+	    strcpy(name, var[i]);
+	    ts->var[i]   = name;
+	    ts->data[i]  = NULL;
+	    ts->data2[i] = NULL;
+	}
+
+    /* alloc temp mem for column info */
+    ASSIGN_NEW_MEMORY_BLOCK(col,   n_var, int, NULL);
+    ASSIGN_NEW_MEMORY_BLOCK(index, n_var, int, NULL);
+
+    /* read header line */
+    n_data = read_header_line(file, n_var, var, col, index);
+    ts->n_data = n_data;
+	
+    /* count number of lines */
+    n_time = read_columns(file, 0, NULL, NULL, NULL);
+    ts->n_time = n_time;
+
+    /* alloc mem for data */
+    for ( i=0; i<n_data; i++ )
+	{
+	    ASSIGN_NEW_MEMORY_BLOCK(ts->data[index[i]],  n_time, double, NULL);
+	    ASSIGN_NEW_MEMORY_BLOCK(ts->data2[index[i]], n_time, double, NULL);
+	}
+    ASSIGN_NEW_MEMORY_BLOCK(ts->time,  n_time, double, NULL);
+
+    /* read data */
+    read_columns(file, n_data, col, index, ts);
+
+    /* free temp mem */
+    free(col);
+    free(index);
+
+    /* initialize interpolation type */
+    ts->type = 3;
+    /* calculate second derivatives */
+    for ( i=0; i<n_var; i++ )
+	if ( ts->data[i] != NULL )
+	    {
+		if ( spline(ts->n_time, ts->time, ts->data[i], ts->data2[i]) != 1 )
+		    return NULL; /* ran out of memory during spline routine */
+	    }
+
+    ts->last = 0;
+    
+    /* alloc mem for warnings */
+    ASSIGN_NEW_MEMORY_BLOCK(ts->mess, 2, char *, NULL);
+    ASSIGN_NEW_MEMORY_BLOCK(ts->warn, 2, int,    NULL);   
+
+    /* initialize warnings */
+    ts->mess[0] = "argument out of range (left) ";
+    ts->mess[1] = "argument out of range (right)";
+    for ( i=0; i<2; i++ )
+	ts->warn[i] = 0;  
+
+    return ts;
+    
+}
+
+/* ------------------------------------------------------------------------ */
+
+/* given a file name and a variable list, */
+/* read_header_line finds the header line in the file, */
+/* finds the columns (in the header line) of the variables (in the list), */
+/* and returns the list of found columns (their indices) */
+/* and the corresponding variables (their indices). */
+
+int read_header_line(const char *file, int n_var, char **var,
+		     int *col, int *index)
+{    
+    FILE *fp;
+    char *line, *token;
+    
+    int i, j;
+    int count; /* counter for relevant columns */
+    int *flag; /* flag for found variables */
+    
+    /* open file */
+    if ( (fp = fopen(file, "r")) == NULL )
+	fatal(stderr, "read_data(): read_header_line(): file not found");
+    
+    /* find header line */
+    for ( i=0; (line = get_line(fp)) != NULL; i++ ) {
+	
+	/* read column 0 */
+	token = strtok(line, " ");
+	
+	/* header line found */	
+	if (token != NULL && strcmp(token, "#t") == 0)
+	    break;
+	
+	/* skip empty lines and comment lines */
+	if ( token == NULL || *token == '#' ) {
+	    free(line);
+	    continue;
+	}	
+	/* exit otherwise */
+	else
+	    fatal(stderr, "read_data(): read_header_line(): no header line found");
+    }
+    
+    /* reset counter and flag */
+    count = 0;
+    flag = (int *) space(n_var * sizeof(int));
+    for ( i=0; i<n_var; i++)
+	flag[i] = 0;
+    
+    /* read other columns */
+    for ( i=1; (token = strtok(NULL, " ")) != NULL; i++ ) {
+	
+	/* find column name in variable list */
+	for ( j=0; j<n_var; j++ )
+	    if ( strcmp(token, var[j]) == 0 )
+		break;
+	
+	/* column name found */
+	if ( j != n_var ) {
+	    col[count]   = i;
+	    index[count] = j;
+	    count++;
+	    flag[j] = 1;
+	}
+    }
+
+    for ( i=0; i<n_var; i++)
+	if ( flag[i] == 0 )
+	    Warn(stderr, "read_data(): read_header_line(): no column for variable %s found", var[i]);   
+	
+    /* free */
+    free(line);
+    free(flag);
+    fclose(fp);
+	
+    return count;
+	
+}
+
+/* ------------------------------------------------------------------------ */
+
+/* given a file name, */
+/* a column list, a corresponding index list, */
+/* and a pointer to the resulting data structure */
+/* read_values reads the columns from the file into the data structure */
+/* (at the right index) */
+/* and returns the number of read lines. */
+/* (or only counts the number of lines, if the pointer is NULL.) */
+
+int read_columns(const char *file, int n_col, int *col, int *index,
+		 time_series_t *ts)
+{    
+    FILE *fp;
+    char *line, *token;
+    int i, j, k;
+    int curr; /* current column */
+    
+    /* open file */
+    if ( (fp = fopen(file, "r")) == NULL )
+	fatal(stderr, "read_columns(): file not found");
+
+    /* find data lines */
+    for ( i=0; (line = get_line(fp)) != NULL; i++ ) {
+	
+	/* column 0 */
+	token = strtok(line, " ");
+	
+	/* skip empty lines and comment lines (including header line) */
+	if ( token == NULL || *token == '#' ) {
+	    free(line);
+	    i--;
+	    continue;
+	}
+	
+	/* do not read line - only count line */
+	if ( ts == NULL ) {
+	    free(line);
+	    continue;
+	}
+	
+	/* read value from column 0 into ts->time[i] */
+  ts->time[i] = scan_double(token);
+	
+	/* read other columns */
+	curr = 1;
+	for ( j=0; j<n_col; j++ ) {
+	    for ( k=curr; k<=col[j]; k++ )
+		token = strtok(NULL, " ");
+	    
+	    /* read value from column col[j] into ts->data[index[j]][i] */
+      ts->data[index[j]][i] = scan_double(token);
+	    curr = k;
+	}
+	free(line);
+    }
+    
+    /* free */
+    fclose(fp);
+
+    return i;
+
+}
+ 
+/* ------------------------------------------------------------------------ */
+
+/* given a variable index i, a time point x, */
+/* and time series data (for several variables), */
+/* call returns the cubic-spline interpolation i(x) */
+/* of the variable at the time point */
+
+double call(int i, double x, time_series_t *ts)
+{
+    int nt;          /* number of x and y values */
+    double *xs, *ys; /* x values, y values */
+    double y;        /* result */
+
+    /* introduce abbreviations */
+    nt = ts->n_time;
+    xs = ts->time;
+    ys = ts->data[i];
+    
+    /* check if data is available */
+    if ( i < 0 || i >= ts->n_var )
+	fatal(stderr, "call(): variable index out of range");
+    if ( ys == NULL )
+	fatal(stderr, "call(): no data stored for variable");
+
+    /* check if x is out of range (and warn) */
+    if ( x < xs[0] )
+	{
+	    /*  fprintf(stderr, "left out range: %g\n", x); */
+	    y = ys[0];
+	    ts->last = -1;
+	    ts->warn[0]++;
+	}
+    else if ( x >= xs[nt-1] )
+	{
+	    /* fprintf(stderr, "right out range: %g\n", x); */
+	    y = ys[nt-1];
+	    ts->last = nt-1;
+	    ts->warn[1]++;
+	}
+    /* interpolate (and store last interpolation interval) */
+    else
+	splint(nt, xs, ys, ts->data2[i], x, &y, &ts->last);
+
+#ifdef VERBOSE
+    fprintf(stderr, "call %s(%g)\n", ts->var[i], x);
+    fprintf(stderr, "function %s has index %d\n", ts->var[i], i);
+    l = ts->last;
+    if ( l == -1 )
+	/*  fprintf(stderr, "argument out of range (left) \n"); */
+	else if ( l == nt-1 )
+	    /*  fprintf(stderr, "argument out of range (right)\n"); */
+	    else
+		{
+		    fprintf(stderr, "argument %g found in interval ", x);
+		    fprintf(stderr, "[ t[%d] = %g, t[%d] = %g ]\n", l, xs[l], l+1, xs[l+1]);
+		}
+    fprintf(stderr, "%s(%g) = %g\n", ts->var[i], x, y);
+    fprintf(stderr, "\n");
+#endif
+
+    return y;
+
+}
+
+/* ------------------------------------------------------------------------ */
+
+/* given arrays x[0..n-1] and y[0..n-1] */
+/* tabulating a function f, i.e. y[i] = f(x[i]) */
+/* spline returns y2[0..n-1] */
+/* containing the second derivatives of the cubic-spline interpolation */
+
+int spline(int n, const double *x, const double *y, double *y2)
+{    
+    int i;
+    double p, sig, *u;
+
+    ASSIGN_NEW_MEMORY_BLOCK(u, n-1, double, 0);
+
+    y2[0] = u[0] = 0.0;
+    for ( i=1; i<=n-2; i++ )
+	{
+	    sig = (x[i]-x[i-1]) / (x[i+1]-x[i-1]);
+	    p = sig * y2[i-1] + 2.0;
+	    y2[i] = (sig - 1.0) / p;
+	    u[i] = (y[i+1]-y[i]) / (x[i+1]-x[i]) - (y[i]-y[i-1]) / (x[i]-x[i-1]);
+	    u[i] = (6.0 * u[i] / (x[i+1]-x[i-1]) - sig * u[i-1]) / p;
+	}
+
+    y2[n-1] = 0.0;
+    for (i=n-2; i>=0; i--)
+	y2[i] = y2[i] * y2[i+1] + u[i];
+
+    free(u);
+    return 1;
+}
+
+/* ------------------------------------------------------------------------ */
+
+/* given arrays x[0..n-1] and y[0..n-1] */
+/* tabulating a function f, i.e. y[i] = f(x[i]) */
+/* and y2[0..n-1] */
+/* containing the second derivatives of the cubic-spline interpolation */
+/* and an argument x_ */
+/* spline returns the interpolated value y_ = f(x_) */
+/* and the left interval boundary j, i.e. x[j] <= x_ < x[j+1] */
+
+void splint(int n, const double *x, const double *y, const double *y2,
+	    double x_, double *y_, int *j)
+{
+
+    double h, b, a;
+
+    hunt(n, x, x_, j);
+
+    if (*j == -1) {
+      /* TODO */
+      return;
+    }
+    if (*j == n-1) {
+      /* TODO */
+      return;
+    }
+    h = x[*j+1] - x[*j];
+    assert(h > 0); /* x is strictly increasing */
+    a = (x[*j+1] - x_) / h;
+    b = (x_ - x[*j]) / h;
+    *y_ = a * y[*j] + b * y[*j+1]
+	+ ((a*a*a-a) * y2[*j] + (b*b*b-b) * y2[*j+1]) * (h*h) / 6.0;
+
+}
+
+/* ------------------------------------------------------------------------ */
+
+void linint(int n, const double *x, const double *y, double x_,
+			double *y_, int *j)
+{
+    double h, b, a;
+
+    hunt(n, x, x_, j);
+
+    if (*j == -1) {
+      /* TODO */
+      return;
+    }
+    if (*j == n-1) {
+      /* TODO */
+      return;
+    }
+    h = x[*j+1] - x[*j];
+    assert(h > 0); /* x is strictly increasing */
+    a = (x[*j+1] - x_) / h;
+    b = (x_ - x[*j]) / h;
+    *y_ = a * y[*j] + b * y[*j+1];
+
+}
+    
+/* ------------------------------------------------------------------------ */
+
+/* given an array x[0..n-1] and a value x_ */
+/* bisection returns an index low */
+/* such that x_ is in the interval [x[low], x[low+1]). */
+/* low = -1 or low = n-1 indicates that x_ is out of range. */
+
+int bisection(int n, const double *x, double x_)
+{
+    int low, high, med;
+
+    low = -1;
+    high = n;
+    
+    while ( high - low > 1 )
+	{
+	    med = (high + low) >> 1;
+	    if ( x_ >= x[med] ) low = med;
+	    else high = med;
+	}
+    
+    return low;
+
+}
+
+/* ------------------------------------------------------------------------ */
+
+/* given an array x[0..n-1], a value x_, and an initial index low, */
+/* hunt returns an index low */
+/* such that x_ is in the interval [x[low], x[low+1]). */
+/* low = -1 or low = n-1 indicates that x_ is out of range. */
+
+void hunt(int n, const double *x, double x_, int *low)
+{
+    int high, med, inc;
+
+    assert(low != NULL);
+    assert(0 <= *low && *low < n);
+    inc = 1;
+    if ( x_ >= x[*low] )
+	{
+		if (*low == n-1) return;
+	    /* hunt up */
+	    high = *low + inc;
+	    while ( x_ >= x[high] )
+		{
+		    inc <<= 1;
+		    *low = high;
+		    high += inc;
+		    if ( high >= n )
+			{
+			    /* end of array */
+			    high = n;
+			    break;
+			}
+		}
+	}
+    else
+	{
+	    /* hunt down */
+	    high = *low;
+	    *low -= inc;
+		if (*low == -1) return;
+	    while ( x_ < x[*low] )
+		{
+		    inc <<= 1;
+		    high = *low;
+		    *low -= inc;
+		    if ( *low <= -1 )
+			{
+			    /* end of array */
+			    *low = -1;
+			    break;
+			}
+		}
+	}
+
+    /* bisection */
+    while ( high - *low > 1 )
+	{
+	    med = (high + *low) >> 1;
+	    if (x_ >= x[med]) *low = med;
+	    else high = med;
+	}
+    
+}
+
+/* end of file */
diff --git a/src/libODES.pc.in b/src/libODES.pc.in
new file mode 100644
index 0000000..d41ff4c
--- /dev/null
+++ b/src/libODES.pc.in
@@ -0,0 +1,13 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: libODES
+Description: The SBML ODE Solver library
+URL: http://www.tbi.univie.ac.at/~raim/odeSolver/
+Version: @VERSION@
+Requires: libsbml >= 3.4.1
+Libs: -L${libdir} -lODES
+Libs.private: @SUNDIALS_LDFLAGS@ @SUNDIALS_LIBS@ -lm
+Cflags: -I${includedir} @SUNDIALS_CPPFLAGS@
diff --git a/src/modelSimplify.c b/src/modelSimplify.c
new file mode 100644
index 0000000..73df711
--- /dev/null
+++ b/src/modelSimplify.c
@@ -0,0 +1,378 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2013-08-09 19:24:05 raim>
+  $Id: modelSimplify.c,v 1.18 2008/10/07 17:18:02 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/*! \defgroup simplifyAST AST Manipulations
+    \ingroup processAST
+    \brief Diverse Functions to manipulate libSBML Abstract Syntax Trees.
+
+    Replace variable names with values, with other names, with formulae,
+    expand defined functions, simplify formulae etc.
+*/
+/** @{ */
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* libSBML header files */
+#include <sbml/SBMLTypes.h>
+
+/* own header files */
+#include "sbmlsolver/odeConstruct.h"
+#include "sbmlsolver/modelSimplify.h"
+#include "sbmlsolver/processAST.h"
+
+/** Replaces all AST_NAME types with `name' appearing in the formula 
+    'math' by the `newname'
+*/
+SBML_ODESOLVER_API void AST_replaceNameByName(ASTNode_t *math, const char *name, const char *newname)
+{
+  unsigned int i;
+  List_t *names;
+
+  names = ASTNode_getListOfNodes(math,(ASTNodePredicate) ASTNode_isName);
+
+  for ( i=0; i<List_size(names); i++ )
+    if ( strcmp(ASTNode_getName(List_get(names,i)), name) == 0 )
+      ASTNode_setName(List_get(names,i), newname);  
+
+  List_free(names);  
+}
+
+/** Replaces all AST_NAME types with `name' appearing in the formula
+    'math' by the value 'x'.
+*/
+
+SBML_ODESOLVER_API void AST_replaceNameByValue(ASTNode_t *math, const char *name, double x)
+{
+  unsigned int i;
+  List_t *names;
+
+  names = ASTNode_getListOfNodes(math,(ASTNodePredicate) ASTNode_isName);
+
+  for ( i=0; i<List_size(names); i++ )
+    if ( strcmp(ASTNode_getName(List_get(names,i)), name) == 0 ) 
+      ASTNode_setReal(List_get(names,i), x);  
+
+  List_free(names);  
+}
+
+/** Replaces all parameters appearing in the formula
+    'math' by their value defined in the passed parameter
+    list 'lp'.
+*/
+
+SBML_ODESOLVER_API void AST_replaceNameByParameters(ASTNode_t *math, ListOf_t *lp)
+{
+  unsigned int i,j;
+  Parameter_t *p;
+  List_t *names;
+
+  for ( i=0; i<ListOf_size(lp); i++ ) 
+  {
+    p = (Parameter_t *)ListOf_get(lp, i);
+    if ( !Parameter_getConstant(p) ) continue;
+
+    names = ASTNode_getListOfNodes(math,(ASTNodePredicate) ASTNode_isName);
+
+    for ( j=0; j<List_size(names); j++ )    
+      if ( strcmp(ASTNode_getName(List_get(names,j)), Parameter_getId(p))==0 )
+          ASTNode_setReal(List_get(names,j), Parameter_getValue(p));           
+    
+    List_free(names);
+  }
+}
+
+/** Replaces an assigned variable 'name' in the passed mathematical expression
+    math by the mathemtical expression in `formula'; can be used to
+    replace assignment rules!
+*/
+
+SBML_ODESOLVER_API void AST_replaceNameByFormula(ASTNode_t *math, const char *name, const ASTNode_t *formula)
+{
+  unsigned int i, j;
+  ASTNode_t *old;
+  List_t *names;
+
+  names = ASTNode_getListOfNodes(math,(ASTNodePredicate) ASTNode_isName);
+
+  for ( i=0; i<List_size(names); i++ )
+  {
+    old = List_get(names,i);
+    if ( strcmp(ASTNode_getName(old), name) == 0 )
+    {
+      /*
+	works just like function copyAST, see processAST.c,
+	which could probably be used instead if their was
+	a way to reset a node but keep its position in
+	other formulas (e.g. remembering pointer value)??
+	Maybe this would be the case anyways for
+	ASTNode_free(old);
+	old = copyAST(formula);
+	That works in normal usage but causes errors and even
+	a segmentation fault when run under valgrind --tool=memcheck
+      */
+
+      if ( ASTNode_isName(formula) )
+	ASTNode_setName(old, ASTNode_getName(formula));      
+      else if ( ASTNode_isInteger(formula) ) 
+	ASTNode_setInteger(old, ASTNode_getInteger(formula));
+      else if ( ASTNode_isReal(formula) )
+	ASTNode_setReal(old, ASTNode_getReal(formula));      
+      else
+      {
+	ASTNode_setType(old, ASTNode_getType(formula)); 
+	/* a user defined function has a name that must be set */
+      	if ( ASTNode_getType(formula) == AST_FUNCTION ) 
+	  ASTNode_setName(old, ASTNode_getName(formula));	
+	for ( j=0; j<ASTNode_getNumChildren(formula); j++ ) 
+	  ASTNode_addChild(old, copyAST(ASTNode_getChild(formula,j)));	
+      }
+    }
+  }
+  List_free(names);
+}
+
+/** Replaces all user defined functions by the full expression of the
+    function in the passed mathematical expression `math'. This is
+    quite a dirty solution and might be dangerous. See comments in
+    function.
+*/
+
+SBML_ODESOLVER_API void AST_replaceFunctionDefinition(ASTNode_t *math, const char *name, const ASTNode_t *function)
+{  
+  unsigned int i, j;
+  ASTNode_t *old, *new;
+  List_t *names;
+  unsigned int n;
+ 
+  names = ASTNode_getListOfNodes(math, (ASTNodePredicate) ASTNode_isFunction);
+  n = List_size(names);
+
+  for ( i=0; i<n; i++ )
+  {
+    const char *old_name;
+
+    new = copyAST(ASTNode_getRightChild(function)); /* holds function r.h.s */
+    old = List_get(names, n-i-1);
+    old_name = ASTNode_getName(old);
+    assert(old_name != NULL);
+    /* if `old' is the searched function defintion ... */
+    if ( strcmp(old_name, name) == 0 )
+    {
+      /* replace the arguments of the function definition copied to `new', 
+	with the arguments passed by the function call(s) in `math' */
+      for ( j=0; j<(ASTNode_getNumChildren(function)-1); j++ )
+	AST_replaceNameByFormula(new,
+				 ASTNode_getName(ASTNode_getChild(function,j)),
+				 ASTNode_getChild(old, j));
+      
+      
+      /* copy the `new' function defintion with replaced parameters
+	 into the `old' function call */
+      
+      /* set new type */
+      ASTNode_setType(old, ASTNode_getType(new));
+      /* first set possible names or numbers */
+      if ( ASTNode_isName(new) ) 
+	ASTNode_setName(old, ASTNode_getName(new));
+      else if ( ASTNode_isInteger(new) ) 
+	ASTNode_setInteger(old, ASTNode_getInteger(new));
+      else if ( ASTNode_isReal(new) ) 
+	ASTNode_setReal(old, ASTNode_getReal(new));
+      /* ... if none of the above ... */
+      else
+      {
+	/* set function name for functions of functions */
+	if ( ASTNode_getType(new) == AST_FUNCTION ) 
+	  ASTNode_setName(old, ASTNode_getName(new));	
+	/* ... and exchange the children. That should be it! */
+	ASTNode_swapChildren(old, new);
+      }
+    }
+    ASTNode_free(new);
+  }
+  List_free(names);
+  
+  /* AST_dump("WITH ", math); */
+}
+
+/** Replace all constants of a model in an AST math */
+
+SBML_ODESOLVER_API void AST_replaceConstants(Model_t *m, ASTNode_t *math)
+{
+  unsigned int i, j, found, nrules;
+  Parameter_t *p;
+  Compartment_t *c;
+  Species_t *s;
+  Rule_t *rl;
+  SBMLTypeCode_t type;
+  FunctionDefinition_t *f;
+
+  /** Step R.1: Replace Assignment Rules\n      
+      Parameters, compartments or species defined by
+      assignment rules in the model will be replaced
+      by the assignment expression in the AST formula.
+  */
+
+  /**
+     Starting from the back, because variables defined by
+     assignment rules can be used is subsequent assignments.
+     Thus this direction should catch all assignments.
+  */
+  nrules = Model_getNumRules(m);
+  for ( i=0; i<nrules; i++ )
+  {
+    rl = Model_getRule(m, nrules-i-1);
+    type = SBase_getTypeCode((SBase_t *)rl);
+    if ( type == SBML_ASSIGNMENT_RULE )
+      if ( Rule_isSetMath(rl) && Rule_isSetVariable(rl) ) 
+	AST_replaceNameByFormula(math, Rule_getVariable(rl), Rule_getMath(rl));
+  }
+
+ 
+  /** Step R.2: replace Function Definitions\n
+      All Function Definitions will be replaced
+      by the full expression
+  */
+  
+  for ( i=0; i<Model_getNumFunctionDefinitions(m); i++ )
+  {
+    f = Model_getFunctionDefinition(m, i);
+    AST_replaceFunctionDefinition(math,
+				  FunctionDefinition_getId(f),
+				  FunctionDefinition_getMath(f));
+  }
+
+  /** Steps R.3: replacing all constant global parameters
+      in rate rules, algebraic rules and events
+      by their value.
+  */
+  for ( i=0; i<Model_getNumParameters(m); i++)
+  {
+    p = Model_getParameter(m, i);
+    if ( Parameter_getConstant(p) ) 
+      AST_replaceNameByValue(math, Parameter_getId(p), Parameter_getValue(p));
+    
+  }
+  
+  /** Steps R.4: replacing all constant compartments
+      in rate rules, algebraic rules and events
+      by their size
+  */
+
+  for ( i=0; i<Model_getNumCompartments(m); i++)
+  {
+    c = Model_getCompartment(m, i);
+    if ( Compartment_getConstant(c) ) 
+      AST_replaceNameByValue(math,
+			     Compartment_getId(c),
+			     Compartment_getSize(c));
+    
+  }
+  /** Steps R.5: replacing all species that
+      are defined as either constant or boundary
+      but not defined by a rate rule (i.e. also constant)
+      by their initial concentration, or amount if the
+      species has only substance units or its compartment
+      has a spatial dimension 0.
+      Species that are set by an assignment rules
+      have already been replaced above in Step R.1
+  */
+  for ( i=0; i<Model_getNumSpecies(m); i++)
+  {
+    found = 0;
+    s = Model_getSpecies(m, i);
+    c = Model_getCompartmentById(m, Species_getCompartment(s));
+    if ( Species_getConstant(s) )
+    {
+      if ( !Species_getHasOnlySubstanceUnits(s) &&
+	   Compartment_getSpatialDimensions(c) != 0 )
+	AST_replaceNameByValue(math,
+			       Species_getId(s),
+			       Species_isSetInitialConcentration(s) ?
+			       Species_getInitialConcentration(s) :
+			       Species_getInitialAmount(s) /
+			       Compartment_getSize(c));
+      else
+	AST_replaceNameByValue(math,
+			       Species_getId(s), Species_getInitialAmount(s));
+	
+    }
+    else if ( Species_getBoundaryCondition(s) )
+    {
+      for ( j=0; j<Model_getNumRules(m); j++ )
+      {
+	rl = Model_getRule(m, j);
+	type = SBase_getTypeCode((SBase_t *)rl);
+	if ( type == SBML_RATE_RULE )
+	{
+	  if ( Rule_isSetMath(rl) && Rule_isSetVariable(rl) )
+	    if ( strcmp(Rule_getVariable(rl), Species_getId(s)) == 0 )
+	      ++found;
+	}
+	else if ( type == SBML_ASSIGNMENT_RULE )
+	{
+	  if ( Rule_isSetMath(rl) && Rule_isSetVariable(rl) ) 
+	    if ( strcmp(Rule_getVariable(rl),Species_getId(s))== 0 ) 
+	      ++found;	  
+	}
+      }
+      if ( found == 0 )
+      {
+	if ( !Species_getHasOnlySubstanceUnits(s) &&
+	     Compartment_getSpatialDimensions(c) != 0 )
+	  AST_replaceNameByValue(math,
+				 Species_getId(s),
+				 Species_isSetInitialConcentration(s) ?
+				 Species_getInitialConcentration(s) :
+				 Species_getInitialAmount(s) /
+				 Compartment_getSize(c));
+	else
+	  AST_replaceNameByValue(math,
+				 Species_getId(s),
+				 Species_getInitialAmount(s));
+
+      }
+    }
+  }
+} 
+/** @} */
+/* End of file */
diff --git a/src/nullSolver.c b/src/nullSolver.c
new file mode 100644
index 0000000..77e8b82
--- /dev/null
+++ b/src/nullSolver.c
@@ -0,0 +1,366 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2007-09-19 14:59:46 raim>
+  $Id: nullSolver.c,v 1.13 2007/09/20 01:16:13 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Lukas Endler
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/*! \defgroup nullSolver KINSOL Root Finder:  f(x,p,t) = dx/dt = 0
+  \ingroup integrator
+  \brief NOT FUNCTIONAL YET: An interface to SUNDIALS KinSolver
+  to find a local root of a system of non-linear equations.
+
+  This code is working. It is, however, not functional. The
+  KinSolver interface could be used to locally search for steady
+  states. It would need better input settings. The example file
+  `findRoot' in the examples folder can be used to play with
+  settings and develop this functionality. Contact us, if you want
+  to help!
+*/
+/** @{ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/* Header Files for CVODE */
+#include <kinsol/kinsol.h>
+#include <kinsol/kinsol_spgmr.h>
+#include <cvodes/cvodes_dense.h>
+#include <nvector/nvector_serial.h>
+
+#include "sbmlsolver/cvodeData.h"
+#include "sbmlsolver/processAST.h"
+#include "sbmlsolver/odeModel.h"
+#include "sbmlsolver/variableIndex.h"
+#include "sbmlsolver/solverError.h"
+#include "sbmlsolver/cvodeSolver.h"
+#include "sbmlsolver/nullSolver.h"
+
+
+/* Prototypes of functions called by KINSOL */
+static int func(N_Vector y, N_Vector dy, void *data);
+static int JacV(N_Vector v, N_Vector Jv, N_Vector y,
+		booleantype *new_u, void *data);
+
+
+/* The Hot Stuff! */
+/** 
+ */
+
+SBML_ODESOLVER_API int IntegratorInstance_nullSolver(integratorInstance_t *engine)
+{
+  int i, flag;
+  realtype *ydata = NULL;
+    
+  cvodeSolver_t *solver = engine->solver;
+  cvodeData_t *data = engine->data;
+  odeModel_t *om = engine->om;
+
+  /* IntegratorInstance_freeCVODESolverStructures(engine); */
+  if (!IntegratorInstance_createKINSolverStructures(engine))
+    return 0;
+    
+  /* !!!! calling KINSOL !!!! */
+  flag = KINSol(solver->cvode_mem, solver->y, KIN_LINESEARCH, 
+		solver->abstol, solver->abstol);
+  /* !!! should use different scalings, first is D*y second
+     is D*f(y) !!!*/
+
+  if ( flag != KIN_SUCCESS )
+  {
+    SolverError_error(ERROR_ERROR_TYPE,
+		      SOLVER_ERROR_INTEGRATION_NOT_SUCCESSFUL,	 
+		      "Null Solver not successful with flag %d.", flag);
+    /* return 0 ;  *//* Error */
+  }
+    
+  ydata = NV_DATA_S(solver->y);
+
+    
+  /* update cvodeData with foun steady state values */    
+  for ( i=0; i<om->neq; i++ )
+  {
+    data->value[i] = ydata[i];
+#ifdef VERBOSE
+    printf("%s = %g,  f(%s): %g\n",
+	   om->names[i], data->value[i], om->names[i],
+	   evaluateAST(data->model->ode[i], data));
+#endif
+  }
+  /* IntegratorInstance_freeKINSolverStructures(engine); */
+  /* update data? */
+  return 1; /* correct ?*/
+}
+
+
+/************* CVODES integrator setup functions ************/
+
+
+/* creates CVODES structures and fills cvodeSolver 
+   return 1 => success
+   return 0 => failure
+*/
+int IntegratorInstance_createKINSolverStructures(integratorInstance_t *engine)
+{
+  int i, flag, neq;
+  realtype *ydata, *scale, *constr;
+  N_Vector constraints;
+    
+  odeModel_t *om = engine->om;
+  cvodeData_t *data = engine->data;
+  cvodeSolver_t *solver = engine->solver;
+  cvodeSettings_t *opt = engine->opt;
+
+  neq = engine->om->neq; /* number of equations */
+
+  /* construct jacobian, if wanted and not yet existing */
+  if ( opt->UseJacobian && om->jacob == NULL ) 
+    /* reset UseJacobian option, depending on success */
+    engine->UseJacobian = ODEModel_constructJacobian(om);
+  else if ( !opt->UseJacobian )
+  {
+    /* free jacobian from former runs (not necessary, frees also
+       unsuccessful jacobians from former runs ) */
+    ODEModel_freeJacobian(om);
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_MODEL_NOT_SIMPLIFIED,
+		      "Jacobian matrix construction skipped.");
+    engine->UseJacobian = om->jacobian;
+  }
+  
+  /* CVODESolverStructures from former runs must be freed */
+  if ( engine->run > 1 )
+    IntegratorInstance_freeKINSolverStructures(engine);
+    
+  /*
+   * Allocate y, abstol vectors, abstol is used as a scaling vector
+   * for KINSol
+   */
+  solver->y = N_VNew_Serial(neq);
+  CVODE_HANDLE_ERROR((void *)solver->y,
+		     "N_VNew_Serial for vector y failed", 0);
+    
+  /* scaling factor for y, diagonal elements of a matrix Du,
+     such that Du*u vector has all components roughly of the
+     same magnitude as y close to a solution */
+  solver->abstol = N_VNew_Serial(neq);
+  CVODE_HANDLE_ERROR((void *)solver->abstol, "N_VNew_Serial for abstol", 0);
+    
+  /* scaling factor for f(y), diagonal elements of a matrix Df,
+     such that Df*f(u) vector has all components of roughly the
+     same magnitude as y (?)not too close(?) to a solution  */
+  /*     solver->abstol = N_VNew_Serial(neq); */
+  /*     CVODE_HANDLE_ERROR((void *)solver->abstol, "N_VNew_Serial for abstol", 0); */
+    
+  /* constraints for solutions */
+  constraints = N_VNew_Serial(neq);
+  CVODE_HANDLE_ERROR((void *)constraints,
+		     "N_VNew_Serial for constraints", 0);
+    
+
+  /*
+   * Initialize y, scale and constraint vectors
+   */
+  ydata       = NV_DATA_S(solver->y);    
+  scale       = NV_DATA_S(solver->abstol);    
+  constr      = NV_DATA_S(constraints);    
+  for ( i=0; i<neq; i++ )
+  {
+    /* Set initial value vector components of y and scaling factor
+     */
+    ydata[i]  = data->value[i];
+    scale[i]  = 0.138; /* !!!good scaling factors required!!! */
+    constr[i] = 0; /* !!!does not fit to kin_guide instructions,
+		      where 1 is claimed to been y>0, while
+		      2 should mean y >= 0. Two gives however an error
+		      message !!!*/
+  }
+  /*
+   * Call KINCreate to create the solver memory:
+   *
+   */
+  solver->cvode_mem = KINCreate();
+  CVODE_HANDLE_ERROR((void *)(solver->cvode_mem), "KINCreate", 0);
+
+
+  /*
+   * Call KINMalloc to initialize the integrator memory:
+   * cvode_mem  pointer to the KINSOL memory block returned by KINCreate
+   * func       user's right hand side function
+   * y          the dependent variable vector
+   */
+  flag = KINMalloc(solver->cvode_mem, func, solver->y);
+  CVODE_HANDLE_ERROR(&flag, "KINMalloc", 1);
+
+#ifdef VERBOSE
+  /* for debugging */
+  KINSetPrintLevel(solver->cvode_mem, 1);
+#endif
+
+  /* set constraints for solutions */
+  flag = KINSetConstraints(solver->cvode_mem, constraints);
+  CVODE_HANDLE_ERROR(&flag, "KINSetConstraints", 1);
+
+  N_VDestroy_Serial(constraints);
+   
+  /* 
+   * Link the solver with data for right-hand side function
+   */ 
+  flag = KINSetFdata(solver->cvode_mem, engine->data);
+  CVODE_HANDLE_ERROR(&flag, "KINSetFdata", 1);
+    
+  /* Call KINSpgmr to specify the linear solver KINSPGMR  */
+  flag = KINSpgmr(solver->cvode_mem, 100);
+  CVODE_HANDLE_ERROR(&flag, "KINSpgmr", 1);
+
+  /*
+   * Set the routine used by the KINDense linear solver
+   * to approximate the Jacobian matrix to ...
+   */
+  if ( opt->UseJacobian == 1 )
+  {
+    /* ... user-supplied routine JacV when working */
+    /* flag = KINSpgmrSetJacTimesVecFn(solver->cvode_mem, JacV, data); */
+  }
+  else
+  {
+    /* ... the internal default difference
+       quotient routine KINDenseDQJac */      
+  }
+    
+  CVODE_HANDLE_ERROR(&flag, "KINSpgmrSetJacTimesVecFn", 1);
+     
+  return 1; /* OK */
+}
+
+/* frees N_V vector structures, and the cvode_mem solver */
+void IntegratorInstance_freeKINSolverStructures(integratorInstance_t *engine)
+{
+  N_VDestroy_Serial(engine->solver->y);
+  N_VDestroy_Serial(engine->solver->abstol);
+  KINFree(&engine->solver->cvode_mem);
+}
+
+/** \brief Prints some final statistics of the calls to CVODE routines
+ */
+
+SBML_ODESOLVER_API void IntegratorInstance_printKINSOLStatistics(integratorInstance_t *engine, FILE *f)
+{
+  /* print KIN statistics */
+}
+
+
+
+
+
+/***************** Functions Called by the CVODE Solver ******************/
+
+/**
+   f routine. Compute the system R.H.S. f(y)
+   This function is called by KIN's solving routines every time
+   needed. 
+*/
+static int func(N_Vector y, N_Vector dydt, void *f_data)
+{
+  int i;
+  realtype *ydata, *dydata;
+  cvodeData_t *data;
+  data   = (cvodeData_t *) f_data;
+  ydata  = NV_DATA_S(y);
+  dydata = NV_DATA_S(dydt);
+  
+  /* update ODE variables from CVODE */
+  for ( i=0; i<data->model->neq; i++ ) 
+    data->value[i] = ydata[i];
+  
+  /* update assignment rules */
+  for ( i=0; i<data->model->nass; i++ ) 
+    data->value[data->model->neq+i] =
+      evaluateAST(data->model->assignment[i],data);
+  
+  /* !!! update time : null solver doesn't work for time dependent
+     ODEs !!!*/
+  /* data->currenttime = 0.0; */
+
+  /* evaluate f(y) = dy/dt */
+  for ( i=0; i<data->model->neq; i++ ) 
+    dydata[i] = evaluateAST(data->model->ode[i],data);
+
+  return (0);
+}
+
+
+/*
+  Jacobian Vector function. Compute J x v
+  This function is (optionally) called by KIN's integration routines
+  every time needed.
+*/
+static int JacV(N_Vector v, N_Vector Jv, N_Vector y,
+		booleantype *new_u, void *f_data)
+{  
+  int i, j;
+  realtype *ydata, *JvData, *vdata;
+  cvodeData_t *data;
+  data  = (cvodeData_t *) f_data;
+  ydata = NV_DATA_S(y);
+  vdata = NV_DATA_S(v);
+  JvData = NV_DATA_S(Jv);
+
+  /* update ODE variables from CVODE */
+  for ( i=0; i<data->model->neq; i++ )
+    data->value[i] = ydata[i];
+
+  /* update assignment rules */
+  for ( i=0; i<data->model->nass; i++ )
+    data->value[data->model->neq+i] =
+      evaluateAST(data->model->assignment[i], data);
+
+  /* evaluate Jacobian */
+  for ( i=0; i<data->model->neq; i++ )
+  {
+    JvData[i] = 0.0;
+    for ( j=0; j<data->model->neq; j++ )
+      JvData[j] += evaluateAST(data->model->jacob[i][j], data) * vdata[j];
+    /*!!! not sure whether this is correct, needs checking !!!*/
+  }
+
+  *new_u = TRUE;      
+
+  return 0;
+}
+
+
+
+/* End of file */
diff --git a/src/odeConstruct.c b/src/odeConstruct.c
new file mode 100644
index 0000000..265f782
--- /dev/null
+++ b/src/odeConstruct.c
@@ -0,0 +1,866 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <02-Sep-2010 19:30:39 raim>
+  $Id: odeConstruct.c,v 1.42 2010/09/02 17:48:12 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Andrew M. Finney
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/*! \defgroup symbolic Symbolic Analysis */
+/*! \defgroup odeConstruct ODE Construction: SBML reactions -> SBML rate rules
+  \ingroup symbolic
+  \brief This module contains all functions to condense
+  the reaction network of an input models to an output model only
+  consisting of SBML rate rules, representing an ODE system f(x,p,t) = dx/dt 
+    
+  The ODE construction currently can't handle SBML algebraic rules.
+  As soon as this is done correctly, the resulting SBML model can be
+  used to initialize SUNDIALS IDA Solver for Differential Algebraic
+  Equation (DAE) Systems, which are ODE systems with additional
+  algebraic constraints.
+*/
+/*@{*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include <sbml/SBMLTypes.h>
+
+#include "sbmlsolver/odeConstruct.h"
+#include "sbmlsolver/modelSimplify.h"
+#include "sbmlsolver/processAST.h"
+#include "sbmlsolver/solverError.h"
+
+static void ODE_replaceFunctionDefinitions(Model_t *m);
+static Model_t *Model_copyInits(Model_t *old);
+static int Model_createOdes(Model_t *m, Model_t*ode);
+static void Model_copyOdes(Model_t *m, Model_t*ode);
+static void Model_copyEvents(Model_t *m, Model_t*ode);
+static int Model_copyAlgebraicRules(Model_t *m, Model_t*ode);
+static void Model_copyAssignmentRules(Model_t *m, Model_t*ode);
+static void Model_copyInitialAssignmentRules(Model_t *m, Model_t*ode);
+
+
+/** C: Construct an ODE system from a Reaction Network
+    
+constructs an ODE systems of the reaction network of the passed
+model `m' and returns a new SBML model `ode', that only consists
+of RateRules, representing ODEs.  See comments at steps C.1-C.5
+for details
+*/
+
+SBML_ODESOLVER_API Model_t*Model_reduceToOdes(Model_t *m)
+{
+  int errors;
+  Model_t *ode;
+
+  errors = 0;
+
+  /** C.1: Create and initialize a new model */  
+  ode = Model_copyInits(m);
+
+  /** C.2: Copy predefined ODES (RateRules) */
+  Model_copyOdes(m, ode);
+
+  /**!!! TODO : SBML L2V2 - constraints */
+  /**!!! TODO : suppress ODE construction for algebraic rule
+         defined variables !!! */
+  
+  
+  /** C.3: Copy Assignment Rules to new model */
+  Model_copyAssignmentRules(m, ode);
+    
+  /** C.4: Copy InitialAssignmentRules to new model */
+  Model_copyInitialAssignmentRules(m, ode);
+
+  /** C.5: Create ODEs from reactions */
+  errors = Model_createOdes(m, ode);
+
+  if ( errors>0 )
+  {
+    SolverError_error(ERROR_ERROR_TYPE,
+		      SOLVER_ERROR_ODE_MODEL_COULD_NOT_BE_CONSTRUCTED,
+		      "ODE construction failed for %d variables.", errors);
+    Model_free(ode);
+    return NULL;
+  }
+  
+  /** Copy incompatible SBML structures     
+      The next steps will copy remaining definitions that can't be
+      simplified, i.e. expressed in a system of ODEs, to the new model.
+      They will also store warning and error messages, if these
+      definitions cannot be interpreted correctly by the current state
+      of the SBML_odeSolver. Additionally all assignment rules are
+      copied, only for printing out results.
+  */
+  
+  /** C.6a: Copy events to new model and create warning */
+  Model_copyEvents(m, ode);
+
+  /** C.6b: Copy AlgebraicRules to new model and create error */
+  errors = Model_copyAlgebraicRules(m, ode);
+  if ( errors>0 )
+  {
+    SolverError_error(ERROR_ERROR_TYPE,
+		      SOLVER_ERROR_ODE_MODEL_COULD_NOT_BE_CONSTRUCTED,
+		      "Model contains %d algebraic rules.", errors);
+    SBase_setNotesString ((SBase_t *)ode, "DAE model");
+  }
+
+  /** C.8: replace function definitions in all formulas */
+  ODE_replaceFunctionDefinitions(ode);
+    
+  return ode;
+}
+
+
+/* Initialize a new model from an input model
+   Creates a new SBML model and copies
+   compartments, species and parameters from the passed model,
+   species are converted to concentration units, unless the
+   species has only substance units or its compartment has
+   spatial dimension 0 */ 
+static Model_t *Model_copyInits(Model_t *old)
+{
+  unsigned int i;
+  Model_t *new;
+  Compartment_t *c;
+  Species_t *s, *s_new;
+
+#if LIBSBML_VERSION >= 40000
+  new = Model_create(SBase_getLevel((SBase_t *)old), SBase_getVersion((SBase_t *)old));
+#else
+  new = Model_create();
+#endif
+
+  if ( Model_isSetId(old) )
+    Model_setId(new, Model_getId(old));
+  else if ( Model_isSetName(old) ) /* problematic? necessary ?*/
+    Model_setId(new, Model_getName(old));
+
+  if ( Model_isSetName(old) )
+    Model_setName(new, Model_getName(old));
+  else if ( Model_isSetId(old) )
+    Model_setName(new, Model_getId(old));
+
+  for ( i=0; i<Model_getNumCompartments(old); i++)
+    Model_addCompartment(new, Model_getCompartment(old, i));
+  
+  for ( i=0; i<Model_getNumParameters(old); i++)
+    Model_addParameter(new, Model_getParameter(old, i));
+  
+  for ( i=0; i<Model_getNumSpecies(old); i++)
+  {
+    s = Model_getSpecies(old, i);
+    s_new = Species_clone(s);
+
+    /* convert initial amount to concentration, unless species has only
+       substance units */
+    if ( Species_isSetInitialAmount(s_new) &&
+	 !Species_getHasOnlySubstanceUnits(s_new) )
+    {
+      c = Model_getCompartmentById(new, Species_getCompartment(s_new));
+      if (Compartment_getSpatialDimensions(c) != 0 )
+      {
+	Species_setInitialConcentration(s_new, Species_getInitialAmount(s)/
+					Compartment_getSize(c));
+      }    
+    }
+    Model_addSpecies(new, s_new);
+    Species_free(s_new);
+  }
+  
+  /* Function Definitions  */
+  for ( i=0; i<Model_getNumFunctionDefinitions(old); i++ )
+    Model_addFunctionDefinition(new, Model_getFunctionDefinition(old, i));
+
+  return(new);
+}
+
+/* C.2: Copy predefined ODEs (RateRules) from `m' to `ode'
+   identifies all predefined ODEs in `m' (RateRules) and
+   adds them as RateRules to the model `ode' */
+static void Model_copyOdes(Model_t *m, Model_t*ode )
+{  
+  Rule_t *rl, *rl_new;
+  SBMLTypeCode_t type;
+  ASTNode_t *math;
+  
+  unsigned int j;
+
+  for ( j=0; j<Model_getNumRules(m); j++ )
+  {
+    rl = Model_getRule(m,j);
+    type = SBase_getTypeCode((SBase_t *)rl);
+    if ( type == SBML_RATE_RULE )
+    {
+      if ( Rule_isSetMath(rl) && Rule_isSetVariable(rl) )
+      {
+	math = copyAST(Rule_getMath(rl));
+#if LIBSBML_VERSION >= 40000
+	rl_new = Rule_createRate(SBase_getLevel((SBase_t *)m), SBase_getVersion((SBase_t *)m));
+#else
+	rl_new = Rule_createRate();
+#endif
+	Rule_setVariable(rl_new, Rule_getVariable(rl));
+	Rule_setMath(rl_new, math);
+	Model_addRule(ode, rl_new);
+	Rule_free(rl_new);
+	ASTNode_free(math);
+      }
+    }
+  }
+}
+
+
+/* C.3: Create ODEs from Reactions
+   for each species in model `m' an ODE is constructed from its
+   reactions in `m' and added as a RateRule to `ode'
+*/
+static int Model_createOdes(Model_t *m, Model_t *ode)
+{
+  Species_t *s;
+  Rule_t *rule, *rule_new;
+  SBMLTypeCode_t type;
+  ASTNode_t *math;
+
+  unsigned int i, j, found;
+  int errors;
+
+  errors = 0;
+  found  = 0;
+  math   = NULL;
+
+
+  /* C.3: Construct ODEs from Reactions construct ODEs for
+     non-constant and non-boundary species from reactions, if they
+     have not already been set by a rate or an assignment rule in the
+     old model. Local parameters of the kinetic laws are replaced on
+     the fly for each reaction.  Rate rules have been added to new
+     model in C.2 and assignment rule will be handled later in step
+     C.5. */
+
+  /* The species vector should later be returned by a
+     function that finds mass-conservation relations and reduces the
+     number of independent variables by matrix operations as developed
+     in Metabolic Control Analysis. (eg. Reder 1988, Sauro 2003). */
+
+  for ( i=0; i<Model_getNumSpecies(m); i++ )
+  {
+    s = Model_getSpecies(m, i);
+
+    found = 0;
+    /* search `m' if a rule exists for this species */
+    for ( j=0; j<Model_getNumRules(m); j++ )
+    {
+      rule = Model_getRule(m, j);
+      type = SBase_getTypeCode((SBase_t *)rule);
+      if ( type == SBML_RATE_RULE )
+      {
+	if ( strcmp(Species_getId(s), Rule_getVariable(rule)) == 0 )
+	  found = 1;
+      }
+      else if ( type == SBML_ASSIGNMENT_RULE )
+      {
+	if ( strcmp(Species_getId(s), Rule_getVariable(rule)) == 0 ) 
+	  found = 1;	
+      }
+    }
+
+    /* if no rule exists and the species is not defined as a constant
+       or a boundary condition of the model, construct and ODE from
+       the reaction in `m' where the species is reactant or product,
+       and add it as a RateRule to the new model `ode' */
+    if ( found == 0 )
+    {
+      if ( !Species_getConstant(s) && !Species_getBoundaryCondition(s) )
+      {
+	math = Species_odeFromReactions(s, m);
+
+	if ( math == NULL )
+	{
+	  errors++;
+	  SolverError_error(ERROR_ERROR_TYPE,
+			    SOLVER_ERROR_ODE_COULD_NOT_BE_CONSTRUCTED_FOR_SPECIES,
+			    "ODE could not be constructed for species %s",
+			    Species_getId(s));
+	}
+	else if (( ASTNode_getType(math) == AST_REAL &&
+		   ASTNode_getReal(math) == 0.0 ) ||
+		 ( ASTNode_getType(math) == AST_INTEGER &&
+		   ASTNode_getInteger(math) == 0 ) )
+	  /* don't create redundant rate rules for species */
+	  ASTNode_free(math);
+	else
+	{
+#if LIBSBML_VERSION >= 40000
+	  rule_new = Rule_createRate(SBase_getLevel((SBase_t *)m), SBase_getVersion((SBase_t *)m));
+#else
+	  rule_new = Rule_createRate();
+#endif
+	  Rule_setVariable(rule_new, Species_getId(s));
+	  Rule_setMath(rule_new, math);
+	  Model_addRule(ode, rule_new);
+	  ASTNode_free(math);
+	  Rule_free(rule_new);
+	}
+      }
+    }
+  }
+
+  for ( i=0; i != Model_getNumReactions(m); i++ )
+  {
+    Reaction_t *reaction =
+      (Reaction_t *)ListOf_get(Model_getListOfReactions(m), i);
+    KineticLaw_t *kineticLaw = Reaction_getKineticLaw(reaction);
+#if LIBSBML_VERSION >= 40000
+    Parameter_t *parameter = Parameter_create(SBase_getLevel((SBase_t *)m), SBase_getVersion((SBase_t *)m));
+#else
+    Parameter_t *parameter = Parameter_create();
+#endif
+
+    Parameter_setId(parameter, Reaction_getId(reaction));
+    Parameter_setConstant(parameter, 0);
+    Model_addParameter(ode, parameter);
+    Parameter_free(parameter);
+
+    if ( kineticLaw )
+    {
+#if LIBSBML_VERSION >= 40000
+      rule = Rule_createAssignment(SBase_getLevel((SBase_t *)m), SBase_getVersion((SBase_t *)m));
+#else
+      rule = Rule_createAssignment();
+#endif
+      Rule_setVariable(rule, Reaction_getId(reaction));
+      math = copyAST(KineticLaw_getMath(kineticLaw));
+      AST_replaceNameByParameters(math,
+				  KineticLaw_getListOfParameters(kineticLaw));
+      Rule_setMath(rule, math);
+      Model_addRule(ode, rule);
+      Rule_free(rule);
+      ASTNode_free(math);
+    }
+  }
+
+  return errors;
+}
+
+
+/** Creates an ODE for a species from its reactions
+    
+This function takes a species and a model, constructs and ODE for
+that species from all the reaction it appears in as either reactant
+or product. Local kinetic Law parameters are replaced by their value.
+It directly constructs an Abstract Syntax Tree (AST) and returns a
+pointer to it. 
+
+In one of the next releases this function will take additional
+arguments:
+
+a listOfParameter, which will allow to `globalize' local
+parameters (e.g. for sensitivity analysis for local parameters)
+
+and
+
+a listOfRules, which will allow to convert kineticLaws to assignment
+rules. The ODEs will then only consist of stoichiometry and a
+parameter. As a kinetic Law appears in all ODEs of the reaction,
+this will significantly reduce the time for numerical evalution of
+the ODE system and thus improve the performance of integration routines.
+*/
+
+SBML_ODESOLVER_API ASTNode_t *Species_odeFromReactions(Species_t *s, Model_t *m)
+{
+
+  unsigned int j, k, errors;
+  Reaction_t *r;
+  KineticLaw_t *kl;
+  SpeciesReference_t *sref;
+  Compartment_t *c;
+  ASTNode_t *simple, *ode, *tmp, *reactant, *reactionSymbol;
+
+  errors = 0;
+  ode = NULL;
+
+  /* search for the species in all reactions, and
+     add up the kinetic laws * stoichiometry for
+     all consuming and producing reactions to
+     an ODE */
+
+  for ( j=0; j<Model_getNumReactions(m); j++ )
+  {
+    r = Model_getReaction(m,j);
+
+    reactionSymbol = ASTNode_createWithType(AST_NAME);
+    ASTNode_setName(reactionSymbol, Reaction_getId(r));
+   /*  ASTNode_setType(reactionSymbol, AST_NAME); */
+
+    kl = Reaction_getKineticLaw(r);
+
+    if (!kl)
+    {
+      SolverError_error(ERROR_ERROR_TYPE,
+			SOLVER_ERROR_NO_KINETIC_LAW_FOUND_FOR_REACTION,
+			"The model has no kinetic law for reaction %s",
+			Reaction_getId(r));
+      ++errors;
+    }
+
+    for ( k=0; k<Reaction_getNumReactants(r); k++ )
+    {
+      sref = Reaction_getReactant(r,k);
+      if ( strcmp(SpeciesReference_getSpecies(sref), Species_getId(s)) == 0 )
+      {
+	/* Construct expression for reactant by multiplying the
+	   kinetic law with stoichiometry (math) and putting a
+	   minus in front of it
+	*/
+	if ( SpeciesReference_isSetStoichiometryMath(sref) )
+	{
+	  reactant = ASTNode_create();
+	  ASTNode_setCharacter(reactant, '*');
+	  ASTNode_addChild(reactant,
+			   copyAST(StoichiometryMath_getMath(SpeciesReference_getStoichiometryMath(sref))));
+	  ASTNode_addChild(reactant, copyAST(reactionSymbol));
+	}
+	else
+	{
+	  if ( SpeciesReference_getStoichiometry(sref) == 1. )	  
+	    reactant = copyAST(reactionSymbol);	  
+	  else
+	  {
+	    reactant = ASTNode_create();
+	    ASTNode_setCharacter(reactant, '*');
+	    ASTNode_addChild(reactant, ASTNode_create());
+	    ASTNode_setReal(ASTNode_getChild(reactant,0), 
+                            SpeciesReference_getStoichiometry(sref));
+	    ASTNode_addChild(reactant, copyAST(reactionSymbol));
+	  }
+	}
+
+	/* replace local parameters by their value,
+	   before adding to ODE */
+	if (kl)
+	  AST_replaceNameByParameters(reactant,
+				      KineticLaw_getListOfParameters(kl));
+
+	/* Add reactant expression to ODE  */
+	if ( ode == NULL )
+	{
+	  ode = ASTNode_create();
+	  ASTNode_setCharacter(ode,'-');
+	  ASTNode_addChild(ode, reactant);
+	}
+	else
+	{
+	  tmp = copyAST(ode);
+	  ASTNode_free(ode);
+	  ode = ASTNode_create();
+	  ASTNode_setCharacter(ode, '-');
+	  ASTNode_addChild(ode, tmp);
+	  ASTNode_addChild(ode, reactant);
+	}
+      }
+    }
+
+    for ( k=0; k<Reaction_getNumProducts(r); k++ )
+    {
+      sref = Reaction_getProduct(r,k);
+      if ( strcmp(SpeciesReference_getSpecies(sref), Species_getId(s)) == 0 )
+      {
+	reactant = ASTNode_create();
+	ASTNode_setCharacter(reactant, '*');
+
+	if ( SpeciesReference_isSetStoichiometryMath(sref) ) 
+	  ASTNode_addChild(reactant,
+			   copyAST(StoichiometryMath_getMath(SpeciesReference_getStoichiometryMath(sref))));	
+	else
+	{
+	  ASTNode_addChild(reactant, ASTNode_create());
+	  ASTNode_setReal(ASTNode_getChild(reactant,0),
+			  SpeciesReference_getStoichiometry(sref));
+	}
+	ASTNode_addChild(reactant, copyAST(reactionSymbol));
+
+	/* replace local parameters by their value,
+	   before adding to ODE */
+	if (kl)
+	  AST_replaceNameByParameters(reactant,
+				      KineticLaw_getListOfParameters(kl));
+	/* Add reactant expression to ODE  */
+	if ( ode == NULL ) 
+	  ode = reactant;
+	else
+	{
+	  tmp = copyAST(ode);
+	  ASTNode_free(ode);
+	  ode = ASTNode_create();
+	  ASTNode_setCharacter(ode, '+');
+	  ASTNode_addChild(ode, tmp);
+	  ASTNode_addChild(ode, reactant);
+	}	  
+      }
+    }
+    
+    ASTNode_free(reactionSymbol);
+  }
+
+  /* Divide ODE by Name of the species' compartment.
+     If formula is empty skip division by compartment and set formula
+     to 0.  The latter case can happen, if a species is neither
+     constant nor a boundary condition but appears only as a modifier
+     in reactions. The rate for such species is set to 0. */
+
+  c = Model_getCompartmentById(m, Species_getCompartment(s)); 
+
+  if( ode != NULL )
+  {
+    if ( !Species_getHasOnlySubstanceUnits(s) &&
+	 Compartment_getSpatialDimensions(c) !=0 )
+    {
+      tmp = copyAST(ode);
+      ASTNode_free(ode);
+      ode = ASTNode_create();
+      ASTNode_setCharacter(ode, '/');
+      ASTNode_addChild(ode, tmp);
+      ASTNode_addChild(ode, ASTNode_create());
+      ASTNode_setName(ASTNode_getChild(ode,1), Species_getCompartment(s));
+    }
+  }
+  else
+  {
+    /*
+      for modifier species that never appear as products or reactants
+      but are not defined as constant or boundarySpecies, set ODE to 0.
+    */
+    ode = ASTNode_create();
+    ASTNode_setInteger(ode, 0); /*  !!! change for DAE models should
+                                    be defined by algebraic rule!*/
+  }
+
+  simple = simplifyAST(ode);
+  ASTNode_free(ode);
+
+  if ( errors>0 )
+  {
+    ASTNode_free(simple);
+    return NULL;
+  }
+  else
+    return simple;
+}
+
+/** C.4a: Copy Events
+    copy events to new model and print warning */
+static void Model_copyEvents(Model_t *m, Model_t*ode)
+{
+  unsigned int i;
+    
+  for ( i=0; i<Model_getNumEvents(m); i++ )
+  {
+    Model_addEvent(ode, Model_getEvent(m, i));
+    
+    if ( !i )
+      SolverError_error(WARNING_ERROR_TYPE,
+			SOLVER_ERROR_THE_MODEL_CONTAINS_EVENTS,
+			"The model contains events. "
+			"The SBML_odeSolver implementation of events "
+			"is not fully SBML conformant. Results will "
+			"depend on the simulation duration and the "
+			"number of output steps.");
+  }
+}
+
+
+/* C.4.b: Copy Algebraic Rules
+   copy algebraic rules to new model and create error
+   message, return number of AlgebraicRules */
+static int Model_copyAlgebraicRules(Model_t *m, Model_t*ode)
+{
+  unsigned int i, j;
+  Rule_t *rl, *alr_new;
+  SBMLTypeCode_t type;
+  ASTNode_t *math;
+  int errors;
+  
+  errors = 0;
+  
+  for ( j=i=0; i<Model_getNumRules(m); i++ )
+  {
+    rl = Model_getRule(m, i);
+    type = SBase_getTypeCode((SBase_t *)rl);
+    if ( type == SBML_ALGEBRAIC_RULE )
+    {
+      if ( Rule_isSetMath(rl) )
+      {
+	math = copyAST(Rule_getMath(rl));
+#if LIBSBML_VERSION >= 40000
+	alr_new = Rule_createAlgebraic(SBase_getLevel((SBase_t *)m), SBase_getVersion((SBase_t *)m));
+#else
+	alr_new = Rule_createAlgebraic();
+#endif
+	Rule_setMath(alr_new, math);
+	Model_addRule(ode, alr_new);
+	ASTNode_free(math);
+	Rule_free(alr_new);
+	errors++;
+	if ( !j ) 
+	  SolverError_error(ERROR_ERROR_TYPE,
+			    SOLVER_ERROR_THE_MODEL_CONTAINS_ALGEBRAIC_RULES,
+			    "The model contains Algebraic Rules. "
+			    "SBML_odeSolver is unable to solve "
+			    "models of this type.");
+	j++;
+      }
+    }
+  }
+  
+  return errors;
+}
+
+/* Copy InitialAssignment Rules  */
+
+static void Model_copyInitialAssignmentRules(Model_t *m, Model_t*ode)
+{
+  unsigned int i;
+  for ( i=0; i<Model_getNumInitialAssignments(m); i++ )
+  {  
+    Model_addInitialAssignment(ode, Model_getInitialAssignment(m, i));
+  }
+}
+
+/* Copy Assignment Rules  */
+static void Model_copyAssignmentRules(Model_t *m, Model_t*ode)
+{
+  unsigned int i;
+  Rule_t *rl, *ar_new;
+  SBMLTypeCode_t type;
+  ASTNode_t *math;  
+
+  for ( i=0; i<Model_getNumRules(m); i++ )
+  {
+    rl = Model_getRule(m,i);
+    type = SBase_getTypeCode((SBase_t *)rl);
+
+    if ( type == SBML_ASSIGNMENT_RULE )
+    {
+      if ( Rule_isSetMath(rl) && Rule_isSetVariable(rl) )
+      {
+	math = copyAST(Rule_getMath(rl));
+#if LIBSBML_VERSION >= 40000
+	ar_new = Rule_createAssignment(SBase_getLevel((SBase_t *)m), SBase_getVersion((SBase_t *)m));
+#else
+	ar_new = Rule_createAssignment();
+#endif
+	Rule_setVariable(ar_new, Rule_getVariable(rl));
+	Rule_setMath(ar_new, math);
+	Model_addRule(ode, ar_new);
+	ASTNode_free(math);
+	Rule_free(ar_new);
+      }
+    }
+  }
+}  
+  
+/** Function Definition Replacement: replaces all occurences of a user
+    defined function by their function definition
+*/
+static void ODE_replaceFunctionDefinitions(Model_t *m)
+{
+  unsigned int i, j, k;
+  Rule_t *rl_new;
+  FunctionDefinition_t *f;
+  Event_t *e;
+  Trigger_t *tr;
+  EventAssignment_t *ea;
+  ASTNode_t *math;
+  
+ 
+  /** Step C.2: replace Function Definitions
+      All Function Definitions will be replaced
+      by the full expression
+      in ODEs (rate rules), Algebraic Rules and Events
+      of the ode model.
+  */
+  
+  for ( i=0; i<Model_getNumFunctionDefinitions(m); i++ )
+  {
+    f = Model_getFunctionDefinition(m, i);
+    /*
+      replacing functions in ODEs (rate rules), assignment rules and
+      algebraic rules of the ode model
+    */
+    for ( j=0; j<Model_getNumRules(m); j++ )
+    {
+      rl_new = Model_getRule(m, j);
+      math = copyAST(Rule_getMath(rl_new));
+      AST_replaceFunctionDefinition(math,
+				    FunctionDefinition_getId(f),
+				    FunctionDefinition_getMath(f));
+      Rule_setMath(rl_new, math);
+      ASTNode_free(math);
+    }
+    /*
+      replacing functions in all events
+      and event assignments of the ode model
+    */	
+    for ( j=0; j<Model_getNumEvents(m); j++ )
+    {
+      e = Model_getEvent(m, j);
+      for ( k=0; k<Event_getNumEventAssignments(e); k++ )
+      {
+	ea = Event_getEventAssignment(e, k);
+	math = copyAST(EventAssignment_getMath(ea));
+	AST_replaceFunctionDefinition(math,
+				      FunctionDefinition_getId(f),
+				      FunctionDefinition_getMath(f));
+	EventAssignment_setMath(ea, math);
+	ASTNode_free(math);
+      }
+
+      /*??? problem: returned Trigger structure is const ???*/
+      tr = (Trigger_t *)Event_getTrigger(e);
+      math = copyAST(Trigger_getMath(tr));
+      AST_replaceFunctionDefinition(math,
+				    FunctionDefinition_getId(f),
+				    FunctionDefinition_getMath(f));
+      Trigger_setMath(tr, math);
+      ASTNode_free(math);
+    }
+  }
+}
+
+
+
+/** Returns the value of a compartment, species or parameter
+    with the passed ID. Note that species values are always
+    returned as concentrations, unless the species has only substance
+    units or its compartments has spatial dimension 0.
+*/
+
+SBML_ODESOLVER_API double Model_getValueById(Model_t *m, const char *id)
+{
+
+  Species_t *s;
+  Parameter_t *p;
+  Compartment_t *c;
+
+  if ( (p = Model_getParameterById(m, id)) !=NULL ) 
+    if ( Parameter_isSetValue(p) ) 
+      return Parameter_getValue(p);    
+  
+  if ( (c = Model_getCompartmentById(m, id)) !=NULL ) 
+    if ( Compartment_isSetSize(c) ) 
+      return Compartment_getSize(c);  
+
+  if ( (s = Model_getSpeciesById(m, id)) !=NULL )
+  {
+    if ( Species_isSetInitialConcentration(s) ) 
+      return Species_getInitialConcentration(s);    
+    else if ( Species_isSetInitialAmount(s) )
+    {
+      c = Model_getCompartmentById(m, Species_getCompartment(s));
+      if ( Compartment_getSpatialDimensions(c) != 0 &&
+	   !Species_getHasOnlySubstanceUnits(s) ) 
+	return Species_getInitialAmount(s) / Compartment_getSize(c);
+      else
+	return Species_getInitialAmount(s);
+    }
+  }
+
+  SolverError_error(ERROR_ERROR_TYPE,
+		    SOLVER_ERROR_REQUESTED_PARAMETER_NOT_FOUND,
+		    "SBML Model doesn't provide a value " \
+		    "for SBML ID %s, value defaults to 0!", id);
+  
+/*   fprintf(stderr, "Value for %s not found!", id);  */
+/*   fprintf(stderr, "Defaults to 0. Please check model!");  */
+  return (0.0);
+}
+
+
+/** Sets the value of a compartment, species or parameter
+    with the passed ID. For species it depends on the current
+    state of the species whether concentrations or substance units
+    are set.
+*/
+
+SBML_ODESOLVER_API int Model_setValue(Model_t *m, const char *id, const char *rid, double value)
+{
+  unsigned int i;
+  Compartment_t *c;
+  Species_t *s;
+  Parameter_t *p;
+  Reaction_t *r;
+  KineticLaw_t *kl;
+
+  
+  if ( (r = Model_getReactionById(m, rid)) != NULL )
+  {
+    kl = Reaction_getKineticLaw(r);
+    for ( i=0; i<KineticLaw_getNumParameters(kl); i++ )
+    {
+      p = KineticLaw_getParameter(kl, i);
+      if ( strcmp(id, Parameter_getId(p)) == 0 )
+      {
+	Parameter_setValue(p, value);
+	return 1;
+      }
+    }
+  }
+  if ( (c = Model_getCompartmentById(m, id)) != NULL )
+  {
+    Compartment_setSize(c, value);
+    return 1;
+  }
+  if ( (s = Model_getSpeciesById(m, id)) != NULL )
+  {
+    if ( Species_isSetInitialAmount(s) ) 
+      Species_setInitialAmount(s, value);    
+    else 
+      Species_setInitialConcentration(s, value);    
+    return 1;
+  }
+  if ( (p = Model_getParameterById(m, id)) != NULL )
+  {
+    Parameter_setValue(p, value);
+    return 1;
+  }
+  return 0;  
+}
+
+/** @} */
+/* End of file */
diff --git a/src/odeModel.c b/src/odeModel.c
new file mode 100644
index 0000000..aa45667
--- /dev/null
+++ b/src/odeModel.c
@@ -0,0 +1,3522 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <16-Feb-2011 11:20:38 raim>
+  $Id: odeModel.c,v 1.131 2011/03/06 09:59:46 raimc Exp $
+*/
+/*
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Andrew M. Finney
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "sbmlsolver/sbml.h"
+#include "sbmlsolver/odeConstruct.h"
+#include "sbmlsolver/processAST.h"
+#include "sbmlsolver/solverError.h"
+#include "sbmlsolver/modelSimplify.h"
+#include "sbmlsolver/odeModel.h"
+#include "sbmlsolver/variableIndex.h"
+#include "sbmlsolver/compiler.h"
+#include "sbmlsolver/arithmeticCompiler.h"
+
+#include <sbml/util/List.h>
+
+#define COMPILED_RHS_FUNCTION_NAME "ode_f"
+#define COMPILED_ADJOINT_RHS_FUNCTION_NAME "adjode_f"
+#define COMPILED_JACOBIAN_FUNCTION_NAME "jacobi_f"
+#define COMPILED_ADJOINT_JACOBIAN_FUNCTION_NAME "adj_jacobi_f"
+#define COMPILED_EVENT_FUNCTION_NAME "event_f"
+#define COMPILED_SENSITIVITY_FUNCTION_NAME "sense_f"
+#define COMPILED_ADJOINT_QUAD_FUNCTION_NAME "adj_quad"
+
+
+/* model allocation */
+static odeModel_t *ODEModel_fillStructures(Model_t *);
+static odeModel_t *ODEModel_allocate(int neq, int nconst, int nass, int nalg);
+static int ODEModel_allocateDiscontinuities(odeModel_t *om, int nvalues,
+					    int nevents,int neventAss,
+					    int ninitAss);
+static int ODEModel_setDiscontinuities(odeModel_t *om, Model_t *ode);
+static int ODEModel_freeDiscontinuities(odeModel_t *);
+static void ODEModel_initializeValuesFromSBML(odeModel_t *, Model_t *);
+
+/* rule sorting */
+static int ODEModel_topologicalRuleSort(odeModel_t *);
+
+
+
+/*! \defgroup odeModel ODE Model: f(x,p,t) = dx/dt
+  \ingroup symbolic
+  \brief This module contains all functions to create and interface
+  the internal ODE Model it's Jacobian matrix and other derivatives
+
+  The internal ODE Model (structure odeModel) can be interfaced for
+  analytical purposes. All formulae can be retrieved as libSBML
+  Abstract Syntax Trees (AST).
+*/
+/*@{*/
+
+
+/** \brief Create internal model odeModel from a reaction network,
+    represented as libSBML's Model_t structure.
+
+    The input model must be of SBML level2!
+    The function at first, attempts to construct a simplified SBML
+    model, that contains all compartments, species, parameters, events
+    and rules of the input model, and constructs new ODEs as SBML
+    RateRules from the reaction network of the input model.  The
+    function then creates the structure odeModel which contains
+    variable, parameter and constant names and all formulas (ODEs and
+    assignments) as indexed AST (iAST). This structure can be used to
+    initialize and run several integration runs, each associated with
+    initial conditions in cvodeData_t. Alternatively I.1a - I.1c
+    allow to construct odeModel from higher-level data (a file, an
+    SBML document or a reaction network model, respectively).
+*/
+SBML_ODESOLVER_API odeModel_t *ODEModel_create(Model_t *m)
+{
+  Model_t *ode;
+  odeModel_t *om;
+
+  /* NULL SBML model passed ? */
+  if ( m == NULL )
+  {
+    return NULL;
+  }
+
+  ode = Model_reduceToOdes(m);
+  /* if errors occured, free SBML and return NULL */
+  if ( ode == NULL )
+    return NULL;
+
+  /* check if compatible */
+  /* algebraic rules */
+  if ( SBase_isSetNotes((SBase_t *)ode) )
+    if ( strcmp(SBase_getNotesString((SBase_t *)ode),"<notes>DAE model</notes>")
+	 == 0 )
+    {
+      Model_free(ode);
+      return NULL;
+    }
+
+
+  /* CREATE odeModel equations */
+  om = ODEModel_fillStructures(ode);
+  /* if om is NULL a memory allocation failure has occured, pass on NULL */
+  if ( om == NULL ) return NULL;
+
+  om->m = m;
+  om->d = NULL;  /* will be set and free'd if created from file */
+
+
+  /* generate ordered list of assignment rules for evaluation order */
+  /* -1 for memory allocation failures */
+  om->hasCycle = ODEModel_topologicalRuleSort(om);
+
+  return om;
+}
+
+/* given the DAG of equation dependencies,
+   labels all equations required for equation with index 'start' */
+static void searchPath(int n, int **matrix, int start, int *required)
+{
+  int i;
+
+  for ( i=0; i<n; i++ )
+    if ( matrix[start][i] ) /* if r.h.s. 'start' depends on l.h.s 'i' */
+      if ( !required[i] )/* if 'i' is not tagged already */
+      {
+	searchPath(n, matrix, i, required); /* ... PROCEED SEARCH */
+	required[i] = 1; /* tag 'i' as required (upstream have been tagged) */
+      }
+}
+/** Does the ODEModel's set of assignments (initial assignments,
+    assignments, kinetic law) contain a dependency cycle?
+
+    If the model  contains a cycle in its  rules it is underdetermined
+    and  can not  be solved.  IntegratorInstance_create will  fail for
+    this model, however it's  equations can be inspected and evaluated
+    with initial condition data, using CvodeData.
+*/
+SBML_ODESOLVER_API int ODEModel_hasCycle(const odeModel_t *om)
+{
+  return om->hasCycle;
+}
+SBML_ODESOLVER_API int ODEModel_getNumAssignmentsBeforeODEs(const odeModel_t *om)
+{
+  return om->nassbeforeodes;
+}
+SBML_ODESOLVER_API int ODEModel_getNumAssignmentsBeforeEvents(const odeModel_t *om)
+{
+  return om->nassbeforeevents;
+}
+SBML_ODESOLVER_API int ODEModel_getNumJacobiElements(const odeModel_t *om)
+{
+  return om->sparsesize;
+}
+
+SBML_ODESOLVER_API const nonzeroElem_t *ODEModel_getAssignmentOrder(odeModel_t *om, int i)
+{
+  if ( i >= om->nass ) return NULL;
+  return om->assignmentOrder[i];
+}
+SBML_ODESOLVER_API const nonzeroElem_t *ODEModel_getAssignmentBeforeODEs(odeModel_t *om, int i)
+{
+  if ( i >= om->nassbeforeodes ) return NULL;
+  return om->assignmentsBeforeODEs[i];
+}
+SBML_ODESOLVER_API const nonzeroElem_t *ODEModel_getAssignmentBeforeEvents(odeModel_t *om, int i)
+{
+  if ( i >= om->nassbeforeevents ) return NULL;
+  return om->assignmentsBeforeEvents[i];
+}
+SBML_ODESOLVER_API const nonzeroElem_t *ODEModel_getJacobiElement(const odeModel_t *om, int i)
+{
+  if ( i < 0 || i >= om->sparsesize ) return NULL;
+  return om->jacobSparse[i];
+}
+/* Evaluation elements */
+SBML_ODESOLVER_API const ASTNode_t *NonzeroElement_getEquation(nonzeroElem_t *nonzero)
+{
+  return nonzero->ij;
+}
+SBML_ODESOLVER_API const char *NonzeroElement_getVariableName(nonzeroElem_t *nonzero, odeModel_t*om)
+{
+  if ( nonzero->i != -1 ) return om->names[nonzero->i];
+  else return om->names[nonzero->j];
+}
+SBML_ODESOLVER_API const char *NonzeroElement_getVariable2Name(nonzeroElem_t *nonzero, odeModel_t*om)
+{
+  if ( nonzero->i == -1 || nonzero->i == -1 ) return NULL;
+  else return om->names[nonzero->j];
+}
+
+SBML_ODESOLVER_API variableIndex_t *NonzeroElement_getVariable(nonzeroElem_t *nonzero, odeModel_t*om)
+{
+  int index;
+  if ( nonzero->i != -1 ) index = nonzero->i;
+  else index = nonzero->j;
+  return ODEModel_getVariableIndexByNum(om, index);
+}
+SBML_ODESOLVER_API variableIndex_t *NonzeroElement_getVariable2(nonzeroElem_t *nonzero, odeModel_t*om)
+{
+  int index;
+  if ( nonzero->j == -1 || nonzero->i == -1 ) return NULL;
+  else index = nonzero->j;
+  return ODEModel_getVariableIndexByNum(om, index);
+}
+
+/** Topological sort:
+
+    The input matrix of size n x n is a boolean matrix, representing the
+    dependency graph of a set of simple assignment rules. Rows are equations
+    and columns are parameters appearing in each equation. The
+    function returns an ordered list of size n, representing the
+    (non-unique) ordering of evaluation. The function returns NULL and issues
+    a correpsonding SolverError_error if cycles are detected in the
+    dependency matrix. The sorting algorithm has been taken from
+    http://en.wikipedia.org/wiki/Topological_sorting */
+
+SBML_ODESOLVER_API List_t *topoSort(int **inMatrix, int n, int *changed, int*required)
+{
+  int i, j, ins, **matrix, allchanged, allrequired;
+  List_t *sorted;   /* L : Empty list where we put the sorted elements */
+  List_t *noincome; /* Q : Set of all nodes with no incoming edges */
+
+  noincome = List_create();
+  sorted = List_create();
+
+  /* copy matrix */
+  ASSIGN_NEW_MEMORY_BLOCK(matrix, n, int *, 0);
+  for ( i=0; i<n; i++ )
+  {
+    ASSIGN_NEW_MEMORY_BLOCK(matrix[i], n, int, 0);
+    for ( j=0; j<n; j++ )
+      matrix[i][j] = inMatrix[i][j];
+  }
+
+  /* default: all changed, all required */
+  allchanged = 0;
+  if ( changed == NULL )
+  {
+    allchanged = 1;
+    ASSIGN_NEW_MEMORY_BLOCK(changed, n, int, NULL);
+    for ( i=0; i<n; i++ ) changed[i] = 1;
+  }
+  allrequired = 0;
+  if ( required == NULL )
+  {
+    allrequired = 1;
+    ASSIGN_NEW_MEMORY_BLOCK(required, n, int, NULL);
+    for ( i=0; i<n; i++ ) required[i] = 1;
+  }
+
+#ifdef _DEBUG
+/*   for ( i=0; i<n; i++ )  */
+/*     printf("value %i is required? %s\n", i, required[i] ? "yes" : "no");    */
+#endif
+  /* REQUIRED : label all edges upstream by DFS */
+  /* remove all edges in rows of non-requested nodes */
+
+  /* http://en.wikipedia.org/wiki/Topological_sorting */
+  /* L : Empty list where we put the sorted elements */
+  /* Q : Set of all nodes with no incoming edges */
+  /* while Q is non-empty do */
+  /*     remove a node n from Q */
+  /*     insert n into L */ /* IFF N IS CHANGED AND REQUIRED ! */
+  /*     for each node m with an edge e from n to m do */
+  /*         remove edge e from the graph */ /* AND INHERIT CHANGE STATUS */
+  /*         if m has no other incoming edges then */
+  /*             insert m into Q */
+  /* if graph has edges then */
+  /*     output error message (graph has a cycle) */
+  /* else  */
+  /*     output message (proposed topologically sorted order: L) */
+
+  /*OR INSTEAD: generate DAG and use directly for evaluation
+   * (e.g. AST derived tree) for recursive evaluation `evaluateDAG' */
+
+  /* generate Q : Set of all nodes with no incoming edges */
+
+  for ( i=0; i<n; i++ )
+  {
+    ins = 0;
+    for  ( j=0; j<n; j++ )
+      ins += matrix[i][j];
+
+    if ( !ins )
+    {
+      int *idx;
+      ASSIGN_NEW_MEMORY(idx, int, NULL);
+      *idx = i;
+      List_add(noincome, idx);
+    }
+  }
+
+  /* setup changed array */
+
+  /* generate L (sorted elements) until Q is empty */
+  while( List_size(noincome) )
+  {
+    int *idx; int current;
+    idx = List_remove(noincome, 0); /* remove node n from Q */
+    current = *idx;
+    if ( required[current] && changed[current] ) /* iff n is changed and required ... */
+      List_add(sorted, idx);   /* ... insert n into L */
+    else /* free not required */
+      free(idx);
+
+    for ( i=0; i<n; i++ )
+    {
+      if ( matrix[i][current] ) /* for each node m with an edge e from n to m do */
+      {
+	matrix[i][current] = 0; /* remove edge e from the graph */
+	if ( changed[current] )
+	  changed[i] = 1; /* ... and inherit change status */
+
+	ins = 0;
+	for ( j=0; j<n; j++ )
+	  ins += matrix[i][j];
+
+	if ( !ins ) /* if m has no other incoming edges then */
+	{
+	  int *idx;
+	  ASSIGN_NEW_MEMORY(idx, int, NULL);
+	  *idx = i;
+	  List_add(noincome, idx);     /* insert m into Q */
+	}
+      }
+    }
+  }
+
+  /* free sorting list */
+  List_freeItems(noincome, free, int); /* only in case of cyclic graphs ?*/
+  List_free(noincome); /* free Q */
+
+  /* check whether any edges remain ... */
+  ins = 0;
+  for ( i=0; i<n; i++ )
+    for ( j=0; j<n; j++ )
+      ins += matrix[i][j];
+
+#ifdef _DEBUG
+/*   fprintf(stderr, "MATRIX:\n"); */
+/*   for ( i=0; i<n; i++ ) */
+/*   { */
+/*     for ( j=0; j<n; j++ ) */
+/*       fprintf(stderr, "\t%d", matrix[i][j]); */
+/*     fprintf(stderr, "\n"); */
+/*   } */
+#endif
+
+
+  /* if graph has edges then */
+  if ( ins )
+  {
+#ifdef _DEBUG
+    fprintf(stderr, "ERROR: Cyclic dependency found in topological sorting.\n");
+    fprintf(stderr, "MATRIX:\n");
+    for ( i=0; i<n; i++ )
+      for ( j=0; j<n; j++ )
+	if ( matrix[i][j] )
+	  fprintf(stderr, "%d -> %d\n", j, i);
+    fprintf(stderr, "\n");
+#endif
+    /* output error message (graph has a cycle) */
+    SolverError_error(ERROR_ERROR_TYPE,
+		      SOLVER_ERROR_ODE_MODEL_CYCLIC_DEPENDENCY_IN_RULES,
+		      "Cyclic dependency found in topological sorting.");
+    List_freeItems(sorted, free, int);
+    List_free(sorted);
+	sorted = NULL;
+    /*!!! TODO : this could return the remaining edges, if this is meaningful*/
+  }
+
+  /* free dependency matrix */
+  for ( i=0; i<n; i++ )
+    free(matrix[i]);
+  free(matrix);
+
+  /* free helper arrays for default use */
+  if ( allchanged ) free(changed);
+  if ( allrequired ) free(required);
+
+  return sorted;   /* proposed topologically sorted order: L */
+}
+
+static nonzeroElem_t *copyNonzeroElem(nonzeroElem_t *source)
+{
+  nonzeroElem_t *target;
+
+  if ( source == NULL )
+    return NULL;
+
+  ASSIGN_NEW_MEMORY(target, nonzeroElem_t, NULL);
+  target->i = source->i;
+  target->j = source->j;
+  target->ij = source->ij;
+  target->ijcode = source->ijcode;
+  return target;
+}
+
+/* generates dependency graph (matrix) from the odeModel's assignment
+   rules, calls topological sorting and generates the ordering of
+   assignment rule evaluation, used during solving.
+   Returns 1 if the model's assignments contain a cycle (algebraic
+   loop, 0 if not, and -1 for memory allocation errors. */
+static int ODEModel_topologicalRuleSort(odeModel_t *om)
+{
+  int i, j, k, l, nvalues, **matrix, *tmpIndex, *idx,
+    *changedBySolver, *requiredForODEs, *requiredForEvents;
+  unsigned int n;
+  List_t *dependencyList;
+  ASTNode_t *math;
+
+  nvalues = om->neq + om->nass + om->nconst;
+  om->initAssignmentOrder = NULL;
+  om->assignmentOrder = NULL;
+  om->assignmentsBeforeODEs = NULL;
+  om->assignmentsBeforeEvents = NULL;
+
+  /* 1: GENERATE DEPENDENCY MATRIX for complete asssignment set */
+
+  /*!!! TODO : use -1/NULL as return value for failed alloc
+    everywhere in sosLib? */
+  ASSIGN_NEW_MEMORY_BLOCK(matrix, nvalues, int *, -1);
+  for ( i=0; i<nvalues; i++ )
+  {
+    /* assignment rules */
+    if ( i >= om->neq && i < om->neq + om->nass )
+    {
+      matrix[i] = ASTNode_getIndexArray(om->assignment[i - om->neq], nvalues);
+    }
+    /*  init. and event assignments for ODE variables and constants */
+    else
+    {
+      math = NULL;
+      if ( om->indexInit[i] != -1 ) /* check whether initial assignment exist */
+	math = om->initAssignment[om->indexInit[i]];
+      matrix[i] = ASTNode_getIndexArray(math, nvalues);
+
+      /* memory error */
+      /* if ( matrix[i] == NULL ) */
+      /*	return -1; */
+
+      /*!!! TODO  ALSO ADD EVENTS HERE ?? */
+
+    }
+  }
+
+  /* attach dependency matrix to odeModel */
+  om->dependencyMatrix = matrix;
+
+
+  /* 2: ORDERING OF COMPLETE ASSIGNMENT SET, all changed, all required */
+  dependencyList = topoSort(matrix, nvalues, NULL, NULL);
+  if (!dependencyList) {
+	  /* issue solver error and return if topo. sort was unsuccessful */
+      SolverError_error(ERROR_ERROR_TYPE,
+			SOLVER_ERROR_ODE_MODEL_RULE_SORTING_FAILED,
+			"Topological sorting failed for complete rule set "
+			"(initial assignments, assignments and kinetic laws) "
+			"Found cyclic dependency in rules. ");
+      return 1;
+  }
+
+  /* generate ordered array of complete rule set and assignment subset */
+
+  k = 0;
+  l = 0;
+  for ( n=0; n<List_size(dependencyList); n++ )
+  {
+    idx = List_get(dependencyList, n);
+    if ( n == 0 ) /* create structures */
+    {
+      ASSIGN_NEW_MEMORY_BLOCK(om->assignmentOrder, om->nass,
+			      nonzeroElem_t *, -1);
+      ASSIGN_NEW_MEMORY_BLOCK(om->initAssignmentOrder, om->nass+om->ninitAss,
+			      nonzeroElem_t *, -1);
+    }
+
+    if ( *idx >= om->neq && *idx < om->neq + om->nass ) /* assignments */
+    {
+
+      nonzeroElem_t *ordered;
+      ASSIGN_NEW_MEMORY(ordered, nonzeroElem_t, -1);
+      ordered->i = *idx;
+      ordered->j = -1;   /* used for initial assignments, see below */
+      ordered->ij = om->assignment[ *idx - om->neq ];
+      ordered->ijcode = om->assignmentcode[ *idx - om->neq ];
+      om->initAssignmentOrder[k] = ordered;
+      k++;
+      om->assignmentOrder[l] = copyNonzeroElem(ordered);
+      l++;
+    }
+    else if ( om->indexInit[*idx] != -1 ) /* initial assignments */
+    {
+      nonzeroElem_t *ordered;
+      ASSIGN_NEW_MEMORY(ordered, nonzeroElem_t, -1);
+      ordered->i = -1;   /* used for assignments, see above */
+      ordered->j = *idx;
+      ordered->ij = om->initAssignment[ om->indexInit[*idx] ];
+      ordered->ijcode = om->initAssignmentcode[ om->indexInit[*idx] ];
+      om->initAssignmentOrder[k] = ordered;
+      k++;
+    }
+  }
+
+#ifdef _DEBUG
+  printf("COMPLETE RULE SET:\n");
+  for ( i=0; i<om->nass+om->ninitAss; i++ )
+  {
+    char *eq;
+    nonzeroElem_t *ordered = om->initAssignmentOrder[i];
+    int idxI = ordered->i;
+    int idxJ = ordered->j;
+    printf("rule %d: ", i);
+    if ( idxI == -1 )
+      printf("init.ass: %s = ", om->names[ idxJ ]);
+    else
+      printf("norm.ass: %s = ", om->names[ idxI ]);
+
+    eq = SBML_formulaToString(ordered->ij);
+    printf("%s\n", eq);
+    free(eq);
+  }
+  printf("\n");
+#endif
+
+  /* free dependency list */
+  List_freeItems(dependencyList, free, int);
+  List_free(dependencyList);
+
+  /* 3: ORDERING OF ASSIGNMENT SETS, for evaluation stages */
+
+  /* set changed variables : same for ODEs and Events */
+  ASSIGN_NEW_MEMORY_BLOCK(changedBySolver, nvalues, int , -1);
+  for ( i=0; i<om->neq; i++ ) /* all variables have changed */
+    changedBySolver[i] = 1;
+  for ( i=om->neq; i<nvalues; i++ )
+    changedBySolver[i] = 0;
+
+  /* add time dependencies */
+  for ( i=0; i<om->nass; i++ )
+    if ( ASTNode_containsTime(om->assignment[i]) )
+      changedBySolver[ om->neq + i ] = 1;
+
+
+  /* RULES TO BE EVALUATED BEFORE ODEs: ODE variables and TIME have changed */
+
+  /* get required rules */
+  ASSIGN_NEW_MEMORY_BLOCK(requiredForODEs, nvalues, int , -1);
+  for ( j=0; j<nvalues; j++ ) requiredForODEs[j] = 0;
+
+  /* required for ODE evaluation  */
+  for ( i=0; i<om->neq; i++ )
+  {
+    tmpIndex = ASTNode_getIndexArray(om->ode[i], nvalues);
+    for ( j=0; j<nvalues; j++ )
+      if ( !requiredForODEs[j] && tmpIndex[j] )
+      {
+	searchPath(nvalues, matrix, j, requiredForODEs);
+	requiredForODEs[j] = 1;
+      }
+    free(tmpIndex);
+  }
+
+
+  /* calculate TOPOLOGICAL SORTING of dependency matrix */
+  dependencyList = topoSort(matrix, nvalues, changedBySolver, requiredForODEs);
+  if (!dependencyList) {
+    /* issue solver error and return if topo. sort was unsuccessful */
+    /* topo sort was tested on global matrix, so no errors should occur
+       when we are here !*/
+      SolverError_error(ERROR_ERROR_TYPE,
+			SOLVER_ERROR_ODE_MODEL_RULE_SORTING_FAILED,
+			"Topological sorting failed for complete rule set "
+			"(assignments and kinetic laws required before ODE "
+			"evaluation). Found cyclic dependency in rules. ");
+      return 1;
+  }
+
+  /* generate ordered array of rule set before ODEs */
+  k = 0;
+  /* count assignment rules */
+  for ( n=0; n<List_size(dependencyList); n++ )
+  {
+    idx = List_get(dependencyList, n);
+    if ( *idx >= om->neq && *idx < om->neq + om->nass ) /* assignments */
+      k++;
+  }
+  om->nassbeforeodes = k;
+  ASSIGN_NEW_MEMORY_BLOCK(om->assignmentsBeforeODEs, k, nonzeroElem_t *, -1);
+
+  /*!!! TODO : instead of creating new nonzeroElem's the array could point
+	into the global ordering assignmentOrder */
+  k = 0;
+  for ( n=0; n<List_size(dependencyList); n++ )
+  {
+    idx = List_get(dependencyList, n);
+    if ( *idx >= om->neq && *idx < om->neq + om->nass ) /* assignments */
+    {
+      nonzeroElem_t *ordered;
+      ASSIGN_NEW_MEMORY(ordered, nonzeroElem_t, 0);
+      ordered->i = *idx;
+      ordered->j = -1; /* not used */
+      ordered->ij = om->assignment[ *idx - om->neq ];
+      ordered->ijcode = om->assignmentcode[ *idx - om->neq ];
+      om->assignmentsBeforeODEs[k] = ordered;
+      k++;
+    }
+  }
+
+
+#ifdef _DEBUG
+  printf("DEPENDENCY LIST: %d\n", List_size(dependencyList));
+  for ( i=0; i<List_size(dependencyList); i++ )
+  {
+    idx = List_get(dependencyList, i);
+    printf(" %d %s\n", *idx, om->names[*idx]);
+  }
+#endif
+#ifdef _DEBUG
+  printf("BEFORE ODEs RULE SET:\n");
+  for ( i=0; i<om->nassbeforeodes; i++ )
+  {
+    char *eq;
+    nonzeroElem_t *ordered = om->assignmentsBeforeODEs[i];
+    int idxI = ordered->i;
+    int idxJ = ordered->j;
+    printf("rule %d: ", i);
+    if ( idxI == -1 )
+      printf("INIT.ass: %s = ", om->names[ idxJ ]);
+    else
+      printf("norm.ass: %s = ", om->names[ idxI ]);
+
+    eq = SBML_formulaToString(ordered->ij);
+    printf("%s\n", eq);
+    free(eq);
+  }
+  printf("\n");
+#endif
+
+  /* free dependency list */
+  List_freeItems(dependencyList, free, int);
+  List_free(dependencyList);
+
+  /* RULES TO BE EVALUATED BEFORE EVENTs: ODE variables and TIME have changed */
+  /* get required rules */
+  ASSIGN_NEW_MEMORY_BLOCK(requiredForEvents, nvalues, int , -1);
+
+  for ( j=0; j<nvalues; j++ )
+    requiredForEvents[j] = 0;
+
+  /* required for ODEs  */
+  for ( i=0; i<om->nevents; i++ )
+  {
+    tmpIndex = ASTNode_getIndexArray(om->event[i], nvalues);
+    for ( j=0; j<nvalues; j++ )
+      if ( !requiredForEvents[j] && tmpIndex[j] )
+      {
+	searchPath(nvalues, matrix, j, requiredForEvents);
+	requiredForEvents[j] = 1;
+      }
+    free(tmpIndex);
+
+    /* event assignments */
+    for ( j=0; j<om->neventAss[i]; j++ )
+    {
+      tmpIndex = ASTNode_getIndexArray(om->eventAssignment[i][j], nvalues);
+      for ( k=0; k<nvalues; k++ )
+	if ( !requiredForEvents[k] && tmpIndex[k] )
+	{
+	  searchPath(nvalues, matrix, k, requiredForEvents);
+	  requiredForEvents[k] = 1;
+	}
+      free(tmpIndex);
+
+      /* set changed variable */
+      /* changedByEvents[om->eventIndex[i][j]] = 1; */
+    }
+  }
+
+  /* calculate TOPOLOGICAL SORTING of dependency matrix */
+  dependencyList = topoSort(matrix, nvalues, changedBySolver,
+			    requiredForEvents);
+  if (!dependencyList) {
+	  /* issue solver error and return if topo. sort was unsuccessful */
+      SolverError_error(ERROR_ERROR_TYPE,
+			SOLVER_ERROR_ODE_MODEL_RULE_SORTING_FAILED,
+			"Topological sorting failed for Event rule set "
+			"(assignments and kinetic laws required BEFORE event "
+			"evaluation).  Found cyclic dependency in rules.");
+      free(requiredForODEs);
+      free(changedBySolver);
+      free(requiredForEvents);
+      return 1;
+  }
+
+  /* generate ordered array of rule set before ODEs */
+  k = 0;
+  /* count assignment rules */
+  for ( n=0; n<List_size(dependencyList); n++ )
+  {
+    idx = List_get(dependencyList, n);
+    if ( *idx >= om->neq && *idx < om->neq + om->nass ) /* assignments */
+      k++;
+  }
+
+  om->nassbeforeevents = k;
+  ASSIGN_NEW_MEMORY_BLOCK(om->assignmentsBeforeEvents, k, nonzeroElem_t *, -1);
+
+  k = 0;
+  for ( n=0; n<List_size(dependencyList); n++ )
+  {
+    idx = List_get(dependencyList, n);
+    if ( *idx >= om->neq && *idx < om->neq + om->nass ) /* assignments */
+    {
+      nonzeroElem_t *ordered;
+      ASSIGN_NEW_MEMORY(ordered, nonzeroElem_t, -1);
+      ordered->i = *idx;
+      ordered->j = -1; /* not used */
+      ordered->ij = om->assignment[ *idx - om->neq ];
+      ordered->ijcode = om->assignmentcode[ *idx - om->neq ];
+      om->assignmentsBeforeEvents[k] = ordered;
+      k++;
+    }
+  }
+
+#ifdef _DEBUG
+  printf("DEPENDENCY LIST: %d\n", List_size(dependencyList));
+  for ( i=0; i<List_size(dependencyList); i++ )
+  {
+    idx = List_get(dependencyList, i);
+    printf(" %d %s\n", *idx, om->names[*idx]);
+  }
+#endif
+#ifdef _DEBUG
+  printf("BEFORE EVENTs RULE SET:\n");
+  for ( i=0; i<om->nassbeforeevents; i++ )
+  {
+    char * eq;
+    nonzeroElem_t *ordered = om->assignmentsBeforeEvents[i];
+    int idxI = ordered->i;
+    int idxJ = ordered->j;
+    printf("rule %d: ", i);
+    if ( idxI == -1 )
+      printf("INIT.ass: %s = ", om->names[ idxJ ]);
+    else
+      printf("norm.ass: %s = ", om->names[ idxI ]);
+
+    eq = SBML_formulaToString(ordered->ij);
+    printf("%s\n", eq);
+    free(eq);
+  }
+  printf("\n");
+#endif
+
+  /* free dependency list */
+  List_freeItems(dependencyList, free, int);
+  List_free(dependencyList);
+
+  /* free boolean arrays */
+  free(changedBySolver);
+  free(requiredForODEs);
+  free(requiredForEvents);
+
+  return 0;
+}
+
+
+/* allocates memory for substructures of a new odeModel:
+   1) ODEs: writes variable and parameter names, creates equation,
+   2) DISCONTINUITIES: writes equations for events and initial assignments
+   and returns a pointer to the
+   the newly created odeModel. */
+static odeModel_t *ODEModel_fillStructures(Model_t *ode)
+{
+  unsigned int i, j, found, nvalues, neq, nalg, nconst, nass, npiecewise;
+  int flag;
+  Compartment_t *c;
+  Parameter_t *p;
+  Species_t *s;
+  Rule_t *rl;
+  SBMLTypeCode_t type;
+  ASTNode_t *math;
+  odeModel_t *om;
+
+  /* 1: ODE SYSTEM */
+
+  /* size of ODE/DAE system */
+  neq     = 0;
+  nalg    = 0;
+  nconst  = 0;
+  nass    = 0;
+  nvalues = 0;
+  found   = 0;
+
+  /* counting number of equations (ODEs/rateRules and assignment Rules)
+     to initialize cvodeData structure. Any other occuring values are
+     stored as parameters. */
+
+  for ( j=0; j<Model_getNumRules(ode); j++ )
+  {
+    rl = Model_getRule(ode,j);
+    type = SBase_getTypeCode((SBase_t *)rl);
+    if ( type == SBML_RATE_RULE ) neq++;
+    if ( type == SBML_ALGEBRAIC_RULE ) nalg++;
+    if ( type == SBML_ASSIGNMENT_RULE ) nass++;
+  }
+
+  nvalues = Model_getNumCompartments(ode) + Model_getNumSpecies(ode) +
+    Model_getNumParameters(ode);
+
+  nconst = nvalues - nass - neq - nalg;
+
+
+  om = ODEModel_allocate(neq, nconst, nass, nalg);
+  /* if om is NULL memory allocation failed, just pass on NULL */
+  if ( om == NULL ) return om;
+
+
+  /* filling the IDs and inital values
+     of all rate rules (ODEs) and assignment rules the ODE model */
+
+  neq  = 0;
+  nass = 0;
+  nalg = 0;
+
+  for ( j=0; j<Model_getNumRules(ode); j++ )
+  {
+    rl = Model_getRule(ode,j);
+    type = SBase_getTypeCode((SBase_t *)rl);
+
+    if ( type == SBML_RATE_RULE )
+    {
+      ASSIGN_NEW_MEMORY_BLOCK(om->names[neq],
+			      strlen(Rule_getVariable(rl))+1,
+			      char, NULL);
+      sprintf(om->names[neq], "%s", Rule_getVariable(rl));
+      neq++;
+    }
+    else if ( type == SBML_ASSIGNMENT_RULE )
+    {
+      ASSIGN_NEW_MEMORY_BLOCK(om->names[om->neq+nass],
+			      strlen(Rule_getVariable(rl))+1,
+			      char, NULL);
+      sprintf(om->names[om->neq + nass], "%s", Rule_getVariable(rl));
+      nass++;
+    }
+    else if ( type == SBML_ALGEBRAIC_RULE )
+    {
+      /* find variables defined by algebraic rules here! */
+/*       ASSIGN_NEW_MEMORY_BLOCK(om->names[nvalues + nalg], */
+/*			      strlen("tmp")+3, char, NULL); */
+/*       sprintf(om->names[om->neq+om->nass+om->nconst+ nalg], "tmp%d", nalg); */
+      /* printf("tmp%d \n", nalg); */
+      nalg++;
+    }
+  }
+
+
+
+  /* filling constants, i.e. all values in the model, that are not
+     defined by an assignment or rate rule */
+
+  nconst = 0;
+  for ( i=0; i<Model_getNumCompartments(ode); i++ )
+  {
+    found = 0;
+    c = Model_getCompartment(ode, i);
+
+    for ( j=0; j<neq+nass; j++ )
+      if ( strcmp(Compartment_getId(c), om->names[j]) == 0 )
+	found ++;
+
+    if ( !found )
+    {
+      ASSIGN_NEW_MEMORY_BLOCK(om->names[neq+nass+nconst],
+			      strlen(Compartment_getId(c))+1, char, NULL);
+      sprintf(om->names[neq+nass+nconst], "%s", Compartment_getId(c));
+      nconst++;
+    }
+  }
+  for ( i=0; i<Model_getNumSpecies(ode); i++ )
+  {
+    found = 0;
+    s = Model_getSpecies(ode, i);
+
+    for ( j=0; j<neq+nass; j++ )
+      if ( strcmp(Species_getId(s), om->names[j]) == 0 )
+	found ++;
+
+    if ( !found )
+    {
+      ASSIGN_NEW_MEMORY_BLOCK(om->names[neq+nass+nconst],
+			      strlen(Species_getId(s))+1, char, NULL);
+      sprintf(om->names[neq+nass+nconst], "%s", Species_getId(s));
+      nconst++;
+    }
+  }
+  for ( i=0; i<Model_getNumParameters(ode); i++ )
+  {
+    found = 0;
+    p = Model_getParameter(ode, i);
+    for ( j=0; j<neq+nass; j++ )
+      if ( strcmp(Parameter_getId(p), om->names[j]) == 0 )
+	found ++;
+
+    if ( !found )
+    {
+      ASSIGN_NEW_MEMORY_BLOCK(om->names[neq+nass+nconst],
+			      strlen(Parameter_getId(p))+1, char, NULL);
+      sprintf(om->names[neq+nass+nconst], "%s", Parameter_getId(p));
+      nconst++;
+    }
+  }
+
+  /* Writing and Indexing Formulas: Indexing rate rules and assignment
+     rules, using the string array created above and writing the
+     indexed formulas to the CvodeData structure. These AST are used
+     for evaluation during the integration routines!!
+     At the same time, check whether the ASTs contain piecewise functions,
+     which can lead to discontinuities in the RHS side of the ODE System
+     and require special CVODES solver mode CV_NORMAL_TSTOP */
+
+  neq = 0;
+  nass = 0;
+  nalg = 0;
+
+  npiecewise = 0;
+
+  for ( j=0; j<Model_getNumRules(ode); j++ )
+  {
+    rl = Model_getRule(ode, j);
+    type = SBase_getTypeCode((SBase_t *)rl);
+
+    if ( type == SBML_RATE_RULE )
+    {
+      math = indexAST(Rule_getMath(rl), nvalues, om->names);
+      om->ode[neq] = math;
+#ifdef ARITHMETIC_TEST
+      ASSIGN_NEW_MEMORY(om->odecode[neq], directCode_t, NULL);
+      om->odecode[neq]->eqn = math;
+      generateFunction(om->odecode[neq], math);
+#endif
+      npiecewise += ASTNode_containsPiecewise(math);
+      neq++;
+    }
+    else if ( type == SBML_ASSIGNMENT_RULE )
+    {
+      math = indexAST(Rule_getMath(rl), nvalues, om->names);
+      om->assignment[nass] = math;
+#ifdef ARITHMETIC_TEST
+      ASSIGN_NEW_MEMORY(om->assignmentcode[nass], directCode_t, NULL);
+      om->assignmentcode[nass]->eqn = math;
+      generateFunction(om->assignmentcode[nass], math);
+#endif
+      npiecewise += ASTNode_containsPiecewise(math);
+      nass++;
+    }
+    else if ( type == SBML_ALGEBRAIC_RULE )
+    {
+      math = indexAST(Rule_getMath(rl), nvalues, om->names);
+      om->algebraic[nalg] = math;
+      npiecewise += ASTNode_containsPiecewise(math);
+      nalg++;
+    }
+  }
+
+  om->simple = ode;
+  /* set assignment order to NULL: done later */
+  om->assignmentOrder = NULL;
+  om->initAssignmentOrder = NULL;
+  /* set Jacobi to NULL: done later */
+  om->jacob = NULL;
+  om->jacobcode = NULL;
+  om->jacobSparse = NULL;
+  /* set construction flag to zero: done later */
+  om->jacobian = 0;
+  /* set failed flag to zero: done later */
+  om->jacobianFailed = 0;
+
+
+  /* set counted piecewise expressions */
+  om->npiecewise = npiecewise;
+
+  /* ... finally, retrieve values (initial conditions and parameters )
+     from input model */
+  ODEModel_initializeValuesFromSBML(om, ode);
+
+
+
+  /* 2: DISCONTINUITIES */
+
+  flag = ODEModel_setDiscontinuities(om, ode);
+  if ( flag == -1 ) /* -1 memory allocation failures */
+  {
+    SolverError_error(ERROR_ERROR_TYPE,
+		      SOLVER_ERROR_ODE_MODEL_SET_DISCONTINUITIES_FAILED,
+		      "setting discontinuity structures (initial assignments," \
+		      "events) failed.");
+    ODEModel_freeDiscontinuities(om);
+  }
+
+  return om;
+}
+
+/* returns 1 for success or -1 for memory allocation failure */
+static int ODEModel_setDiscontinuities(odeModel_t *om, Model_t *ode)
+{
+  int i, j, flag;
+  int nvalues, nevents, ninitAss, neventAss;
+  ASTNode_t *math;
+
+  nvalues = om->neq + om->nass + om->nconst;
+
+  /* size of discontinuities */
+  nevents = 0;
+  neventAss = 0;
+  ninitAss = 0;
+  if ( ode != NULL )
+  {
+    nevents = Model_getNumEvents(ode);
+    for ( i=0; i<nevents; i++ )
+      neventAss += Event_getNumEventAssignments(Model_getEvent(ode, i));
+    ninitAss = Model_getNumInitialAssignments(ode);
+  }
+  /* allocate basic structures */
+  flag = ODEModel_allocateDiscontinuities(om, nvalues,
+					  nevents, neventAss, ninitAss);
+  if ( flag == -1 ) return -1; /* pass on memory failure signal -1 */
+
+  for ( i=0; i<nvalues; i++ ) /* initialize map to -1 */
+    om->indexInit[i] = -1;
+
+
+  /* allocate and fill equations */
+  for ( i=0; i<ninitAss; i++ )
+  {
+    const InitialAssignment_t *init = Model_getInitialAssignment(ode, i);
+    const char *id = InitialAssignment_getSymbol(init);
+    int idx = ODEModel_getVariableIndexFields(om, id);
+    om->initIndex[i] = idx; /* map from om->initAssignment to om->names */
+    om->indexInit[idx] = i; /* map from om->names to om->initAssignemnt */
+    math = indexAST(InitialAssignment_getMath(init), nvalues, om->names);
+    om->initAssignment[i] = math;
+#ifdef ARITHMETIC_TEST
+    ASSIGN_NEW_MEMORY(om->initAssignmentcode[i], directCode_t, -1);
+    om->initAssignmentcode[i]->eqn = math;
+    generateFunction(om->initAssignmentcode[i], math);
+#endif
+  }
+
+  for ( i=0; i<nevents; i++ )
+  {
+    int nea;
+    Event_t *e = Model_getEvent(ode, i);
+    math = indexAST(Trigger_getMath(Event_getTrigger(e)),
+		    nvalues, om->names);
+    om->event[i] = math;
+#ifdef ARITHMETIC_TEST
+    ASSIGN_NEW_MEMORY(om->eventcode[i], directCode_t, -1);
+    om->eventcode[i]->eqn = math;
+    generateFunction(om->eventcode[i], math);
+#endif
+    /* event assignments */
+    nea = Event_getNumEventAssignments(e);
+    om->neventAss[i] = nea;
+    ASSIGN_NEW_MEMORY_BLOCK(om->eventIndex[i], nea, int, -1);
+    ASSIGN_NEW_MEMORY_BLOCK(om->eventAssignment[i], nea, ASTNode_t *, -1);
+    ASSIGN_NEW_MEMORY_BLOCK(om->eventAssignmentcode[i], nea, directCode_t *,-1);
+
+    for ( j=0; j<nea; j++ )
+    {
+      const EventAssignment_t *ea = Event_getEventAssignment(e, j);
+      om->eventIndex[i][j] =
+	ODEModel_getVariableIndexFields(om, EventAssignment_getVariable(ea));
+      math = indexAST(EventAssignment_getMath(ea), nvalues, om->names);
+      om->eventAssignment[i][j] = math;
+
+#ifdef ARITHMETIC_TEST
+      ASSIGN_NEW_MEMORY(om->eventAssignmentcode[i][j], directCode_t, -1);
+      om->eventAssignmentcode[i][j]->eqn = math;
+      generateFunction(om->eventAssignmentcode[i][j], math);
+#endif
+    }
+  }
+  return 1;
+}
+
+/* initializes values in odeModel from SBML file */
+static void  ODEModel_initializeValuesFromSBML(odeModel_t *om, Model_t *ode)
+{
+  int i, nvalues;
+  nvalues = om->neq + om->nass + om->nconst;
+  /* initial conditions */
+  for ( i=0; i<om->neq; i++ )
+    om->values[i] = Model_getValueById(ode, om->names[i]);
+
+  /* parameters */
+  for ( i=(om->neq+om->nass); i<nvalues; i++ )
+    om->values[i] = Model_getValueById(ode, om->names[i]);
+}
+
+/* free discontinuities */
+static int ODEModel_freeDiscontinuities(odeModel_t *om)
+{
+  int i, j;
+
+  /* initial assignments */
+  for ( i=0; i<om->ninitAss; i++ )
+    ASTNode_free(om->initAssignment[i]);
+  free(om->initAssignment);
+  free(om->indexInit);
+  free(om->initIndex);
+
+#ifdef ARITHMETIC_TEST
+  for ( i=0; i<om->ninitAss; i++ )
+  {
+    destructFunction(om->initAssignmentcode[i]);
+    free(om->initAssignmentcode[i]);
+  }
+#endif
+  free(om->initAssignmentcode);
+
+  /* free global assignment ordering via init array */
+  for ( i=0; i<(om->nass + om->ninitAss); i++ )
+  {
+    if ( om->initAssignmentOrder != NULL )
+      free(om->initAssignmentOrder[i]);
+  }
+  /* free init. ass. array */
+  if ( om->initAssignmentOrder != NULL )
+    free(om->initAssignmentOrder);
+
+  /* events */
+#ifdef ARITHMETIC_TEST
+  for ( i=0; i<om->nevents; i++ )
+  {
+    destructFunction(om->eventcode[i]);
+    free(om->eventcode[i]);
+    for ( j=0; j<om->neventAss[i]; j++ )
+    {
+      destructFunction(om->eventAssignmentcode[i][j]);
+      free(om->eventAssignmentcode[i][j]);
+    }
+  }
+#endif
+  for ( i=0; i<om->nevents; i++ )
+  {
+    ASTNode_free(om->event[i]);
+    for ( j=0; j<om->neventAss[i]; j++ )
+      ASTNode_free(om->eventAssignment[i][j]);
+    free(om->eventIndex[i]);
+    free(om->eventAssignment[i]);
+    free(om->eventAssignmentcode[i]);
+  }
+  free(om->event);
+  free(om->eventcode);
+  free(om->neventAss);
+  free(om->eventIndex);
+  free(om->eventAssignment);
+  free(om->eventAssignmentcode);
+
+  /* rule ordering */
+  for ( i=0; i<om->nassbeforeevents; i++ )
+    free(om->assignmentsBeforeEvents[i]);
+  free(om->assignmentsBeforeEvents);
+
+  return 1;
+}
+
+/* allocates memory for a new odeModel structure and returns
+   a pointer to it, returns 1 for success and -1 for memory
+   allocation failure */
+static int ODEModel_allocateDiscontinuities(odeModel_t *om, int nvalues,
+					    int nevents, int neventAss,
+					    int ninitAss)
+{
+  /* initial assignments */
+  om->ninitAss  = ninitAss;
+  ASSIGN_NEW_MEMORY_BLOCK(om->indexInit, nvalues, int, -1);
+  ASSIGN_NEW_MEMORY_BLOCK(om->initIndex, ninitAss, int, -1);
+  ASSIGN_NEW_MEMORY_BLOCK(om->initAssignment, ninitAss, ASTNode_t *, -1);
+  ASSIGN_NEW_MEMORY_BLOCK(om->initAssignmentcode, ninitAss, directCode_t *, -1);
+
+  /* events and event assignments */
+  om->nevents = nevents;
+  ASSIGN_NEW_MEMORY_BLOCK(om->event, nevents, ASTNode_t *, -1);
+  ASSIGN_NEW_MEMORY_BLOCK(om->neventAss, nevents, int, -1);
+  ASSIGN_NEW_MEMORY_BLOCK(om->eventIndex, nevents, int *, -1);
+  ASSIGN_NEW_MEMORY_BLOCK(om->eventcode, nevents, directCode_t *, -1);
+  ASSIGN_NEW_MEMORY_BLOCK(om->eventAssignment, nevents, ASTNode_t **, -1);
+  ASSIGN_NEW_MEMORY_BLOCK(om->eventAssignmentcode, nevents, directCode_t **,-1);
+
+  return 1;
+}
+
+/* allocates memory for a new odeModel structure and returns
+   a pointer to it */
+static odeModel_t *ODEModel_allocate(int neq, int nconst, int nass, int nalg)
+{
+  odeModel_t *om;
+  int nvalues;
+
+  ASSIGN_NEW_MEMORY(om, odeModel_t, NULL);
+  /* init. to 0 first */
+  om->neq    = 0;
+  om->nconst = 0;
+  om->nass   = 0;
+  om->nalg   = 0;
+
+  nvalues = neq + nalg + nass + nconst;
+
+  /* names */
+  ASSIGN_NEW_MEMORY_BLOCK(om->names, nvalues, char *, NULL);
+
+  /* values : used for storing initial values only */
+  ASSIGN_NEW_MEMORY_BLOCK(om->values, nvalues, realtype, NULL);
+
+  /* equations */
+  ASSIGN_NEW_MEMORY_BLOCK(om->ode, neq, ASTNode_t *, NULL);
+  ASSIGN_NEW_MEMORY_BLOCK(om->assignment, nass, ASTNode_t *, NULL);
+  ASSIGN_NEW_MEMORY_BLOCK(om->algebraic, nalg, ASTNode_t *, NULL);
+
+  /* compiled equations */
+  ASSIGN_NEW_MEMORY_BLOCK(om->odecode, neq, directCode_t *, NULL);
+  ASSIGN_NEW_MEMORY_BLOCK(om->assignmentcode, nass, directCode_t *, NULL);
+
+/*   ASSIGN_NEW_MEMORY_BLOCK(om->algebraiccode, nalg, directCode_t *, NULL); */
+
+  om->neq    = neq;
+  om->nconst = nconst;
+  om->nass   = nass;
+  om->nalg   = nalg; /*!!! this causes crash at the moment, because
+		      ODEs have been constructed for that
+		      should be defined by alg. rules */
+
+  /* set discontinuities to 0 */
+  om->nevents = 0;
+  om->neventAss = 0;
+  om->ninitAss  = 0;
+
+  /* set compiled function pointers to NULL */
+  om->compiledCVODEFunctionCode = NULL;
+  om->compiledCVODEJacobianFunction = NULL;
+  om->compiledCVODERhsFunction = NULL;
+  om->compiledCVODEAdjointRhsFunction = NULL;
+  om->compiledCVODEAdjointJacobianFunction = NULL;
+
+  /* objective function */
+  /*!!!TODO : move to separate structure */
+  om->vector_v = NULL;
+  om->ObjectiveFunction = NULL;
+  om->discrete_observation_data = 0;
+  om->compute_vector_v = 0;
+  om->time_series = NULL;
+
+  return om ;
+}
+
+
+/** \brief Create internal model odeModel from an SBML file, that
+    contains level 1 or level 2 SBML.
+
+    Conversion of level 1 to level 2 models is done internally.
+*/
+
+SBML_ODESOLVER_API odeModel_t *ODEModel_createFromFile(const char *sbmlFileName)
+{
+
+  SBMLDocument_t *d;
+  odeModel_t *om;
+
+  d = parseModel(sbmlFileName,
+		  0 /* print message */,
+		  0 /* don't validate */);
+  if ( d == NULL ) return NULL;
+
+  om = ODEModel_createFromSBML2(d);
+  if ( om == NULL ) return NULL;
+
+  /* remember for freeing afterwards */
+  om->d = d;
+
+  return om;
+}
+
+
+/** \brief Create internal model odeModel_t from SBMLDocument containing
+    a level 2 SBML model.
+*/
+
+SBML_ODESOLVER_API odeModel_t *ODEModel_createFromSBML2(SBMLDocument_t *d)
+{
+  Model_t *m;
+  odeModel_t *om;
+
+  if ( SBMLDocument_getLevel(d) == 1 )
+  {
+    SolverError_error(ERROR_ERROR_TYPE,
+		      SOLVER_ERROR_DOCUMENTLEVEL_ONE,
+		      "SBML Level %d cannot be processed with function"
+		      " ODEModel_createFromSBML2",
+		      SBMLDocument_getLevel(d));
+    return NULL;
+  }
+
+
+  m = SBMLDocument_getModel(d);
+
+  om = ODEModel_create(m);
+  /* if om is NULL a memory allocation failure has occured, pass on NULL */
+  if ( om == NULL ) return NULL;
+
+  return om;
+}
+
+
+/** Create odeModel_t directly:
+    This function allows to create the internal odeModel_t structure
+    independently from SBML. This structure can then be used to create
+    and run integratorInstance_t, including all sensitivity analysis
+    features.
+
+    The formulae, both ODEs and assignments, can be passed as an array
+    `f' of libSBML ASTs. `neq' is the number of ODEs, `nass' is
+    the number of assignments and the passed array `f' contains both
+    ODEs and assignments in this order. Assignment rules must currently
+    occur in correct order, i.e. an assignment rule MUST NOT DEPEND on a
+    subsequent assignment rule! See SBML Level 2 Version 1 specification
+    for details on this restriction on assignment rules.
+    The passed `names' and `values' arrays are of size neq+nass+nconst and
+    contain names and values of ODE variables, assigned variables and
+    model parameters in this order and in the same order as ASTs in `f'.
+*/
+
+SBML_ODESOLVER_API odeModel_t *ODEModel_createFromODEs(ASTNode_t **f, int neq, int nass, int nconst, char **names, realtype *values, Model_t *events)
+{
+  int i, nvalues, flag;
+  odeModel_t *om;
+
+  nvalues = neq + nass + nconst;
+
+  /* allocate odeModel structure and set values */
+  om = ODEModel_allocate(neq, nconst, nass, 0);
+  /* if om is NULL memory allocation failed, just pass on NULL */
+  if ( om == NULL ) return om;
+
+
+  /* set SBML input to NULL */
+  om->d = NULL;
+  om->m = NULL;
+  /* set optional SBML model containing events */
+  om->simple = events;
+
+  /* set ODEs with indexed ASTs */
+  for ( i=0; i<neq; i++ )
+    om->ode[i] = indexAST(f[i], nvalues, names);
+
+  /* set assignments */
+  for ( i=0; i<nass; i++ )
+    om->assignment[i] = indexAST(f[neq+i], nvalues, names);
+
+  /* set names and values */
+  for ( i=0; i<neq+nass+nconst; i++ )
+  {
+    ASSIGN_NEW_MEMORY_BLOCK(om->names[i], strlen(names[i]) + 1, char, NULL);
+    strcpy(om->names[i], names[i]);
+  }
+
+  /* set discontinuities from input modelevents, initial assignments */
+  flag = ODEModel_setDiscontinuities(om, events);
+  if ( flag == -1 ) /* -1 memory allocation failures */
+  {
+    SolverError_error(ERROR_ERROR_TYPE,
+		      SOLVER_ERROR_ODE_MODEL_SET_DISCONTINUITIES_FAILED,
+		      "setting discontinuity structures (initial assignments," \
+		      "events) failed");
+    ODEModel_freeDiscontinuities(om);
+  }
+
+  /* set values: initial conditions and parameters */
+  for ( i=0; i<neq+nass+nconst; i++ )
+    om->values[i] = values[i];
+
+
+  /* generate ordered list of assignment rules for evaluation order */
+  /* -1 memory allocation failures */
+  om->hasCycle = ODEModel_topologicalRuleSort(om);
+
+  return om;
+
+}
+
+/** \brief Frees the odeModel structures
+ */
+SBML_ODESOLVER_API void ODEModel_free(odeModel_t *om)
+{
+
+  int i;
+
+  if (om == NULL) return;
+
+  for ( i=0; i<om->neq+om->nass+om->nconst; i++ )
+  {
+    free(om->names[i]);
+    free(om->dependencyMatrix[i]);
+  }
+  free(om->names);
+  free(om->dependencyMatrix);
+
+  /* free ODEs */
+  for ( i=0; i<om->neq; i++ )
+    ASTNode_free(om->ode[i]);
+  free(om->ode);
+
+  /* free compiled ODEs */
+#ifdef ARITHMETIC_TEST
+  for ( i=0; i<om->neq; i++ )
+  {
+    destructFunction(om->odecode[i]);
+    free(om->odecode[i]);
+  }
+#endif
+  free(om->odecode);
+
+
+
+  /* free global assignment ordering via init array */
+  for ( i=0; i<om->nass; i++ )
+  {
+    if ( om->assignmentOrder != NULL )
+      free(om->assignmentOrder[i]);
+  }
+  /* free ass. array */
+  if ( om->assignmentOrder != NULL )
+    free(om->assignmentOrder);
+
+  /* free assignments */
+  for ( i=0; i<om->nass; i++ )
+  {
+    ASTNode_free(om->assignment[i]);
+  }
+  free(om->assignment);
+
+#ifdef ARITHMETIC_TEST
+  for ( i=0; i<om->nass; i++ )
+  {
+    destructFunction(om->assignmentcode[i]);
+    free(om->assignmentcode[i]);
+  }
+#endif
+  free(om->assignmentcode);
+
+
+  /* free algebraic rules */
+  for ( i=0; i<om->nalg; i++ )
+    ASTNode_free(om->algebraic[i]);
+  free(om->algebraic);
+
+  /* free Jacobian matrix, if it has been constructed */
+  ODEModel_freeJacobian(om);
+
+  /* free discontinuities */
+  ODEModel_freeDiscontinuities(om);
+
+
+  /* free objective function AST if it has been constructed */
+  if ( om->ObjectiveFunction != NULL )
+    ASTNode_free(om->ObjectiveFunction);
+  om->ObjectiveFunction = NULL;
+
+  /* free linear objective function AST's if constructed */
+  if ( om->vector_v != NULL )
+    for ( i=0; i<om->neq; i++ )
+      ASTNode_free(om->vector_v[i]);
+  free(om->vector_v);
+
+  /* free time_series, if present */
+  if ( om->time_series != NULL )
+    free_data( om->time_series );
+
+  /* free simplified ODE model */
+  if ( om->simple != NULL ) Model_free(om->simple);
+
+  /* free document, if model was constructed from file */
+  if ( om->d != NULL ) SBMLDocument_free(om->d);
+
+  /* free values structure from SBML independent odeModel */
+  if ( om->values != NULL ) free(om->values);
+
+  /* free compiled code */
+  if ( om->compiledCVODEFunctionCode != NULL )
+  {
+    CompiledCode_free(om->compiledCVODEFunctionCode);
+    om->compiledCVODEFunctionCode = NULL;
+  }
+
+  /* free assignment evaulation ordering */
+  for ( i=0; i<om->nassbeforeodes; i++ )
+    free(om->assignmentsBeforeODEs[i]);
+  free(om->assignmentsBeforeODEs);
+
+  /* free model structure */
+  free(om);
+}
+
+/** \brief Returns 1 if a variable or parameter with the SBML id
+    exists in the ODEModel.
+*/
+
+SBML_ODESOLVER_API int ODEModel_hasVariable(const odeModel_t *model, const char *symbol)
+{
+  return ODEModel_getVariableIndexFields(model, symbol) != -1;
+}
+
+
+/** \brief Returns the total number of values in odeModel, equivalent
+    to ODEModel_getNeq + ODEModel_getNumAssignments +
+    ODEModel_getNumConstants
+*/
+
+SBML_ODESOLVER_API int ODEModel_getNumValues(const odeModel_t *om)
+{
+  return om->neq + om->nass + om->nconst + om->nalg ;
+}
+
+
+/** \brief Returns the number of ODEs (number of equations) in the
+    odeModel
+*/
+
+SBML_ODESOLVER_API int ODEModel_getNeq(const odeModel_t *om)
+{
+  return om->neq;
+}
+
+
+/** \brief Returns the number parameters for which sensitivity
+    analysis might be requested
+
+*/
+
+SBML_ODESOLVER_API int ODESense_getNsens(const odeSense_t *os)
+{
+  return os->nsens;
+}
+
+/** \brief Returns the number variables for which sensitivity
+    analysis might be requested, equals NEQ of odeModel
+
+*/
+SBML_ODESOLVER_API int ODESense_getNeq(const odeSense_t *os)
+{
+  return os->neq;
+}
+
+/** \brief Returns the ODE from the odeModel for the variable with
+    variableIndex vi.
+
+    The ODE is returned as an `indexed abstract syntax tree' (iAST),
+    which is an extension to the usual libSBML AST. Every AST_NAME
+    type node in the tree has been replaced by an ASTIndexNameNode,
+    that allows a O(1) retrieval of values for this node from an array
+    of all values of the odeModel.
+*/
+
+SBML_ODESOLVER_API const ASTNode_t *ODEModel_getOde(const odeModel_t *om,
+													const variableIndex_t *vi)
+{
+  if ( vi->type == ODE_VARIABLE && 0 <= vi->index && vi->index < om->neq )
+    return (const ASTNode_t *) om->ode[vi->index];
+  else return NULL;
+}
+
+
+
+/** \brief Returns the number of variable assignments in the odeModel
+ */
+
+SBML_ODESOLVER_API int ODEModel_getNumAssignments(const odeModel_t *om)
+{
+  return om->nass;
+}
+
+
+/** \brief Returns the assignment formula from the odeModel for the
+    variable with variableIndex vi
+
+    The ODE is returned as an `indexed abstract syntax tree' (iAST),
+    which is an extension to the usual libSBML AST. Every AST_NAME
+    type node in the tree has been replaced by an ASTIndexNameNode,
+    that allows a O(1) retrieval of value for this node from an array
+    of all values of the odeModel.
+*/
+
+SBML_ODESOLVER_API const ASTNode_t *ODEModel_getAssignment(const odeModel_t *om,
+														   const variableIndex_t *vi)
+{
+  if ( vi->type == ASSIGNMENT_VARIABLE && 0 <= vi->type_index && vi->type_index < om->nass )
+    return (const ASTNode_t *) om->assignment[vi->type_index];
+  else return NULL;
+}
+
+/** \brief Returns the number of constant parameters of the odeModel
+ */
+
+SBML_ODESOLVER_API int ODEModel_getNumConstants(const odeModel_t *om)
+{
+  return om->nconst;
+}
+
+
+/** \brief Returns the number variables that are defined by
+    an algebraic rule.
+
+    As SBML Algebraic Rules and ODE models with algebraic constraints (DAE
+    models) can currently not be handled, this function is
+    of no use.
+*/
+
+SBML_ODESOLVER_API int ODEModel_getNalg(const odeModel_t *om)
+{
+  return om->nalg;
+}
+
+
+/** \brief Prints the names (SBML IDs) of all model variables
+    and parameters
+*/
+
+SBML_ODESOLVER_API void ODEModel_dumpNames(odeModel_t *om)
+{
+  int i;
+  for ( i=0; i<(om->neq+om->nass+om->nconst+om->nalg); i++ )
+    printf("%s ", om->names[i]);
+  printf("\n");
+}
+
+
+/** \brief Returns the SBML model that has been extracted from the input
+    SBML model's reaction network and structures
+
+    The model contains only compartments, species, parameters and SBML
+    Rules. Changes to this model will have no effect on odeModel or
+    integratorInstance.
+*/
+
+SBML_ODESOLVER_API const Model_t *ODEModel_getOdeSBML(odeModel_t *om)
+{
+  return (const Model_t *) om->simple;
+}
+
+/** deprecated, please use ODEModel_getOdeSBML instead */
+SBML_ODESOLVER_API const Model_t *ODEModel_getModel(odeModel_t *om)
+{
+  return ODEModel_getOdeSBML(om);
+}
+
+/** \brief Returns a pointer to the SBML input model from which the
+    ODE system has been created.
+
+
+*/
+
+SBML_ODESOLVER_API const Model_t *ODEModel_getInputSBML(odeModel_t *om)
+{
+  return (const Model_t *) om->m;
+}
+
+/** @} */
+
+
+/*! \defgroup jacobian Jacobian Matrix: J = df(x)/dx
+  \ingroup odeModel
+  \brief Constructing and Interfacing the Jacobian matrix of an ODE
+  system
+
+  as used for CVODES and IDA Dense Solvers
+*/
+/*@{*/
+
+/** \brief Construct Jacobian Matrix for ODEModel.
+
+Once an ODE system has been constructed from an SBML model, this
+function calculates the derivative of each species' ODE with respect
+to all other species for which an ODE exists, i.e. it constructs the
+jacobian matrix of the ODE system. At the moment this matrix is
+freed together with the ODE model. A separate function will be available
+soon.\n
+Returns 1 if successful, 0 otherwise, and -1 for memory allocation failures
+*/
+
+SBML_ODESOLVER_API int ODEModel_constructJacobian(odeModel_t *om)
+{
+  int i, j, failed, nvalues;
+  unsigned int k;
+  double val;
+  ASTNode_t *fprime, *simple, *index, *ode;
+  List_t *names, *sparse;
+
+  if ( om == NULL ) return 0;
+
+  /******************** Calculate Jacobian ************************/
+
+  failed = 0;
+  nvalues = om->neq + om->nass + om->nconst;
+
+  ASSIGN_NEW_MEMORY_BLOCK(om->jacob, om->neq, ASTNode_t **, -1);
+  /* compiled equations */
+  ASSIGN_NEW_MEMORY_BLOCK(om->jacobcode, om->neq, directCode_t **, -1);
+  for ( i=0; i<om->neq; i++ )
+  {
+    ASSIGN_NEW_MEMORY_BLOCK(om->jacob[i], om->neq, ASTNode_t *, -1);
+    ASSIGN_NEW_MEMORY_BLOCK(om->jacobcode[i], om->neq, directCode_t *, -1);
+  }
+
+  /* create list to remember non-zero elements of the Jacobi matrix */
+  sparse = List_create();
+  om->sparsesize = 0;
+/*   fprintf(stderr, "GENERATING JACOBI: neq = %d\n", om->neq); */
+
+  for ( i=0; i<om->neq; i++ )
+  {
+    ode = copyAST(om->ode[i]);
+
+    /* assignment rule replacement: reverse to satisfy
+       SBML specifications that variables defined by
+       an assignment rule can appear in rules declared afterwards */
+    for ( j=om->nass-1; j>=0; j-- )
+      AST_replaceNameByFormula(ode,
+			       om->names[om->neq + j], om->assignment[j]);
+
+
+    for ( j=0; j<om->neq; j++ )
+    {
+      /* 1: differentiate ODE */
+      fprime = differentiateAST(ode, om->names[j]);
+      simple = simplifyAST(fprime);
+      ASTNode_free(fprime);
+      index = indexAST(simple, nvalues, om->names);
+      ASTNode_free(simple);
+      om->jacob[i][j] = index;
+
+      /* 2: generate list of non-zero Jacobi elements */
+
+      /* check whether jacobian is 0 */
+      val = 1;
+      if ( ASTNode_isInteger(index) )
+	val = (double) ASTNode_getInteger(index) ;
+      if ( ASTNode_isReal(index) )
+	val = ASTNode_getReal(index) ;
+
+      if ( val != 0.0 )
+      {
+
+	/* 3: generate compiled ODE */
+#ifdef ARITHMETIC_TEST
+	ASSIGN_NEW_MEMORY(om->jacobcode[i][j], directCode_t, -1);
+	om->jacobcode[i][j]->eqn = index;
+	generateFunction(om->jacobcode[i][j], index);
+#endif
+
+	/* 4: generate sparse list */
+	nonzeroElem_t *nonzero;
+	ASSIGN_NEW_MEMORY(nonzero, nonzeroElem_t, -1);
+	nonzero->i = i;
+	nonzero->j = j;
+	nonzero->ij = om->jacob[i][j];
+	nonzero->ijcode = om->jacobcode[i][j];
+
+	List_add(sparse, nonzero);
+	om->sparsesize++;
+      }
+      else
+	{
+#ifdef ARITHMETIC_TEST
+	  om->jacobcode[i][j] = NULL;
+#endif
+
+	/* can be optionally done to save memory for large models */
+/*      ASTNode_free(om->jacob[i][j]); /\* free 0 elements *\/ */
+/*      om->jacob[i][j] = NULL; */
+	}
+
+      /* 5: check if the AST contains a failure notice */
+      names = ASTNode_getListOfNodes(index ,
+				     (ASTNodePredicate) ASTNode_isName);
+      for ( k=0; k<List_size(names); k++ )
+	if ( strcmp(ASTNode_getName(List_get(names,k)),
+		    "differentiation_failed") == 0 )
+	  failed++;
+      List_free(names);
+    }
+
+    ASTNode_free(ode);
+  }
+
+  if ( failed != 0 )
+  {
+    /** if Jacobi matrix construction failed, the equations are still
+	kept for users to check which equation were non-differentiable
+	(by SOSlib ;)). To save memory the matrix can however be freed
+	for following integration runs, by calling
+	ODEModel_freeJacobian(om) */
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_ENTRIES_OF_THE_JACOBIAN_MATRIX_COULD_NOT_BE_CONSTRUCTED,
+		      "%d entries of the Jacobian matrix could not be "
+		      "constructed, due to failure of differentiation. "
+		      "Cvode will use internal approximation of the "
+		      "Jacobian instead.", failed);
+    om->jacobian = 0;
+  }
+  else om->jacobian = 1;
+
+  om->jacobianFailed = failed;
+
+
+  /* 6: generate non-zero element array from list */
+/*   fprintf(stderr,"USING SPARSE JACOBI: %d of %d elements are non-zero ...", */
+/*   List_size(sparse), om->neq*om->neq); */
+
+  ASSIGN_NEW_MEMORY_BLOCK(om->jacobSparse, om->sparsesize, nonzeroElem_t *, -1);
+  for ( i=0; i<om->sparsesize; i++ )
+    om->jacobSparse[i] = List_get(sparse, i);
+  List_free(sparse);
+  /*   fprintf(stderr,"... finished\n"); */
+
+  return om->jacobian;
+}
+
+
+/** \brief Free the Jacobian matrix of the ODEModel.
+ */
+
+SBML_ODESOLVER_API void ODEModel_freeJacobian(odeModel_t *om)
+{
+  int i, j;
+  if ( om->jacob != NULL )
+  {
+
+    /* free compiled function via array of non-zero entries */
+#ifdef ARITHMETIC_TEST
+    /* free compiledCode function */
+    for ( i=0; i<om->sparsesize; i++ )
+    {
+      nonzeroElem_t *nonzero = om->jacobSparse[i];
+      destructFunction(nonzero->ijcode);
+    }
+#endif
+
+    /* free full matrix */
+    for ( i=0; i<om->neq; i++ )
+    {
+      for ( j=0; j<om->neq; j++ )
+      {
+	ASTNode_free(om->jacob[i][j]);
+#ifdef ARITHMETIC_TEST
+	free(om->jacobcode[i][j]);
+#endif
+      }
+      free(om->jacob[i]);
+      free(om->jacobcode[i]);
+    }
+    free(om->jacob);
+    free(om->jacobcode);
+    om->jacob = NULL;
+
+    /* free  array of non-zero entries */
+    for ( i=0; i<om->sparsesize; i++ )
+    {
+      free(om->jacobSparse[i]);
+    }
+    free(om->jacobSparse);
+  }
+  om->jacobian = 0;
+}
+
+/**  \brief Returns the ith/jth entry of the jacobian matrix
+
+     Returns NULL if either the jacobian has not been constructed yet,
+     or if i or j are >neq. Ownership remains within the odeModel
+     structure.
+*/
+
+SBML_ODESOLVER_API const ASTNode_t *ODEModel_getJacobianIJEntry(const odeModel_t *om,
+																int i, int j)
+{
+  if ( om->jacob == NULL ) return NULL;
+  if ( i >= om->neq || j >= om->neq ) return NULL;
+  return (const ASTNode_t *) om->jacob[i][j];
+}
+
+
+/** \brief Returns the entry (d(vi1)/dt)/d(vi2) of the jacobian matrix.
+
+    Returns NULL if either the jacobian has not been constructed yet,
+    or if the v1 or vi2 are not ODE variables. Ownership remains
+    within the odeModel structure.
+*/
+
+SBML_ODESOLVER_API const ASTNode_t *ODEModel_getJacobianEntry(const odeModel_t *om,
+															  const variableIndex_t *vi1,
+															  const variableIndex_t *vi2)
+{
+  return ODEModel_getJacobianIJEntry(om, vi1->index, vi2->index);
+}
+
+
+/** \brief Constructs and returns the determinant of the jacobian matrix.
+
+    The calling application takes ownership of the returned ASTNode_t
+    and must free it, if not required.
+*/
+
+SBML_ODESOLVER_API ASTNode_t *ODEModel_constructDeterminant(const odeModel_t *om)
+{
+  if ( om->jacob != NULL && om->jacobian == 1 )
+    return determinantNAST(om->jacob, om->neq);
+  else
+    return NULL;
+}
+
+
+/** @} */
+
+/************* SENSITIVITY *****************/
+
+static int ODESense_constructMatrix(odeSense_t *os, odeModel_t *om)
+{
+  int i, j, nvalues, failed;
+  unsigned int k, l;
+  double val;
+  ASTNode_t *ode, *fprime, *simple, *index;
+  List_t *names, *sparse;
+
+  ASSIGN_NEW_MEMORY_BLOCK(os->sens, om->neq, ASTNode_t **, -1);
+  /* compiled equations */
+  ASSIGN_NEW_MEMORY_BLOCK(os->senscode, om->neq, directCode_t **, -1);
+  /* simple logic vector of non-zero elements */
+  ASSIGN_NEW_MEMORY_BLOCK(os->sensLogic, om->neq, int *, -1);
+
+  /* if only init.cond. sensitivities, nsensP will be 0
+     and the matrix will essentially be empty (NULL) */
+  for ( i=0; i<om->neq; i++ )
+  {
+    ASSIGN_NEW_MEMORY_BLOCK(os->sens[i], os->nsensP, ASTNode_t *, -1);
+    ASSIGN_NEW_MEMORY_BLOCK(os->senscode[i], os->nsensP, directCode_t *, -1);
+    ASSIGN_NEW_MEMORY_BLOCK(os->sensLogic[i], os->nsensP, int, -1);
+  }
+
+  /* create list to remember non-zero elements of the Jacobi matrix */
+  sparse = List_create();
+  os->sparsesize = 0;
+  /*   fprintf(stderr, "GENERATING PARAMETER MATRIX: neq=%d * nsens=%d\n", */
+  /*      om->neq, os->nsensP); */
+
+  nvalues = om->neq + om->nass + om->nalg + om->nconst;
+  failed = 0;
+  for ( i=0; i<om->neq; i++ )
+  {
+    ode = copyAST(om->ode[i]);
+    /* assignment rule replacement: reverse to satisfy
+       SBML specifications that variables defined by
+       an assignment rule can appear in rules declared afterwards */
+    for ( j=om->nass-1; j>=0; j-- )
+      AST_replaceNameByFormula(ode, om->names[om->neq+j], om->assignment[j]);
+
+    l = 0;
+    for ( j=0; j<os->nsens; j++ )
+    {
+      /* skip species sens. */
+      if ( !(os->index_sens[j] < om->neq) )
+      {
+	/* differentiate d(dYi/dt) / dPj */
+	fprime = differentiateAST(ode, om->names[os->index_sens[j]]);
+	simple =  simplifyAST(fprime);
+	ASTNode_free(fprime);
+	index = indexAST(simple, nvalues, om->names);
+	ASTNode_free(simple);
+	os->sens[i][l] = index;
+
+	/* check whether matrix element is 0 */
+	val = 1;
+	if ( ASTNode_isInteger(index) )
+	  val = (double) ASTNode_getInteger(index) ;
+	if ( ASTNode_isReal(index) )
+	  val = ASTNode_getReal(index) ;
+
+	if ( val != 0.0 )
+	{
+#ifdef ARITHMETIC_TEST
+	  ASSIGN_NEW_MEMORY(os->senscode[i][l], directCode_t, -1);
+	  os->senscode[i][l]->eqn = index;
+	  generateFunction(os->senscode[i][l], index);
+#endif
+	  /* generate sparse list */
+	  nonzeroElem_t *nonzero;
+	  ASSIGN_NEW_MEMORY(nonzero, nonzeroElem_t, -1);
+	  nonzero->i = i;
+	  nonzero->j = j;
+	  nonzero->ij = os->sens[i][l];
+	  nonzero->ijcode = os->senscode[i][l];
+
+	  List_add(sparse, nonzero);
+	  os->sparsesize++;
+
+	  /* fill sparse logic */
+	  os->sensLogic[i][l] = 1;
+	}
+	else
+	{
+	  os->sensLogic[i][l] = 0;
+#ifdef ARITHMETIC_TEST
+	  os->senscode[i][l] = NULL;
+#endif
+	}
+	/* increase sparse matrix counter */
+	l++;
+
+	/* check if the AST contains a failure notice */
+	names = ASTNode_getListOfNodes(index,
+				       (ASTNodePredicate) ASTNode_isName);
+
+	for ( k=0; k<List_size(names); k++ )
+	  if ( strcmp(ASTNode_getName(List_get(names,k)),
+		      "differentiation_failed") == 0 )
+	    failed++;
+	List_free(names);
+
+      }
+    }
+    ASTNode_free(ode);
+  }
+
+
+  if ( failed != 0 )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_ENTRIES_OF_THE_PARAMETRIC_MATRIX_COULD_NOT_BE_CONSTRUCTED,
+		      "%d entries of the parametric `Jacobian' matrix "
+		      "could not be constructed, due to failure of "
+		      "differentiation. Cvode will use internal "
+		      "approximation instead.",
+		      failed);
+    /* ODESense_freeMatrix(os); */
+    return 0;
+  }
+
+  /*  generate non-zero element array from list */
+/*   fprintf(stderr,"USING SPARSE PARAM: %d of %d elements are non-zero ...", */
+/*     os->sparsesize, om->neq*os->nsensP); */
+
+  ASSIGN_NEW_MEMORY_BLOCK(os->sensSparse, os->sparsesize, nonzeroElem_t *, -1);
+  for ( i=0; i<os->sparsesize; i++ )
+    os->sensSparse[i] = List_get(sparse, i);
+  List_free(sparse);
+  /*   fprintf(stderr,"... finished\n"); */
+
+
+  return 1;
+
+}
+
+static void ODESense_freeMatrix(odeSense_t *os)
+{
+  int i, j;
+
+  if ( os == NULL )
+    return;
+
+  /* free parametric matrix, if it has been constructed */
+  if ( os->sens != NULL )
+  {
+    /* free compiled function via array of non-zero entries */
+#ifdef ARITHMETIC_TEST
+    /* free compiledCode function */
+    for ( i=0; i<os->sparsesize; i++ )
+    {
+      nonzeroElem_t *nonzero = os->sensSparse[i];
+      destructFunction(nonzero->ijcode);
+    }
+#endif
+
+    for ( i=0; i<os->om->neq; i++ )
+    {
+      for ( j=0; j<os->nsensP; j++ )
+      {
+	ASTNode_free(os->sens[i][j]);
+#ifdef ARITHMETIC_TEST
+	free(os->senscode[i][j]);
+#endif
+      }
+      free(os->sens[i]);
+      free(os->senscode[i]);
+      free(os->sensLogic[i]);
+    }
+    free(os->sens);
+    free(os->senscode);
+    os->sens = NULL;
+
+    free(os->sensLogic);
+    /* free  array of non-zero entries */
+    for ( i=0; i<os->sparsesize; i++ )
+    {
+      free(os->sensSparse[i]);
+    }
+    free(os->sensSparse);
+  }
+}
+
+static void ODESense_freeStructures(odeSense_t *os)
+{
+  if ( os->index_sens != NULL )
+    free(os->index_sens);
+  if ( os->index_sensP != NULL )
+    free(os->index_sensP);
+  os->index_sens = NULL;
+  os->index_sensP = NULL;
+}
+
+
+/*! \defgroup parametric Sensitivity Matrix: P = df(x)/dp
+  \ingroup odeModel
+  \brief Constructing and Interfacing the sensitivity matrix of
+  an ODE system
+
+  as used for CVODES sensitivity analysis
+*/
+/*@{*/
+
+
+/** Construct Sensitivity Matrix for ODEModel.
+
+    Once an ODE system has been constructed from an SBML model, this
+    function calculates the derivative of each species' ODE with respect
+    to all (global) constants of the SBML model.
+
+    To calculate a matrix w.r.t. only a subset of model constants, the
+    SBML IDs must by additionally passed via the function
+    ODESense_create(odeModel_t *om, cvodeSettings_t *opt). */
+SBML_ODESOLVER_API odeSense_t *ODEModel_constructSensitivity(odeModel_t *om)
+{
+  return ODESense_create(om, NULL);
+}
+
+/** Construct Sensitivity Matrix for ODEModel for selected parameters
+
+    Once an ODE system has been constructed from an SBML model, this
+    function calculates the derivative of each species' ODE with respect
+    to model constants passed as SBML IDs via cvodeSettings_t structure. */
+/*!!! TODO : pass (int nsens, char **opt->sensIDs directly) instead of opt
+  and ask for adjoint and jacobian from where this is called internally!!!*/
+SBML_ODESOLVER_API odeSense_t *ODESense_create(odeModel_t *om, cvodeSettings_t *opt)
+{
+  int i, k, nsens, all, construct;
+  odeSense_t *os;
+
+  ASSIGN_NEW_MEMORY(os, odeSense_t, NULL);
+
+  all = 0;
+  construct = 0;
+
+  /* catch default case, no parameters/variables selected */
+  /* for calls independent of integrator */
+  if ( opt == NULL )
+  {
+    all = 1;
+    construct = 1;
+  }
+  /* for calls with the integration */
+  else
+  {
+    if ( opt->sensIDs == NULL )
+      all = 1;
+    else
+      all = 0;
+    /* check whether jacobian is present or adjoint is requested,
+       to indicate whether the sensitivity matrix shall be constructed */
+    if ( opt->DoAdjoint || om->jacobian )
+      construct = 1;
+  }
+
+  if ( all )
+    nsens = om->nconst;
+  else
+    nsens = opt->nsens;
+
+  ASSIGN_NEW_MEMORY_BLOCK(os->index_sens, nsens, int, NULL);
+  ASSIGN_NEW_MEMORY_BLOCK(os->index_sensP, nsens, int, NULL);
+
+  os->om = om;
+  os->neq = om->neq;
+  os->nsens = nsens;
+
+  /* fill with default parameters if none specified */
+  if ( all )
+  {
+    for ( i=0; i<os->nsens; i++ )
+    {
+      /* index_sens: map between cvodeSettings and os->index_sens */
+      os->index_sens[i] = om->neq + om->nass + i;
+      /* index_sensP: set index for the optional sensitivity matrix */
+      os->index_sensP[i] = i;
+    }
+    os->nsensP = om->nconst;
+  }
+  /* map input setting parameters */
+  else
+  {
+    k = 0;
+    for ( i=0; i<os->nsens; i++ )
+    {
+      /* index_sens: map between cvodeSettings and os->index_sens */
+      os->index_sens[i] =
+	ODEModel_getVariableIndexFields(om, opt->sensIDs[i]);
+      /* indes_sensP:
+	 map sensitivities for parameters to sensitivity matrix */
+      /* distinguish between parameters and variables */
+      if ( os->index_sens[i] < om->neq )
+	/* set to -1 for variable sensitivities */
+	os->index_sensP[i] = -1;
+      else
+      {
+	/* index_sensP: set index for the optional sensitivity matrix */
+	os->index_sensP[i] = k;
+	k++;
+      }
+    }
+    /* store number of parameter sensitivities */
+    os->nsensP = k;
+  }
+
+  /* only required if either jacobian has been constructed, or adjoint
+     solver is requested */
+  if ( construct  )
+    os->sensitivity = ODESense_constructMatrix(os, om);
+  else
+    os->sensitivity = 0;
+
+  /* set flag for recompilation */
+  os->recompileSensitivity = 1;
+  return os;
+}
+
+
+/** Free Sensitivity Functions
+ */
+
+SBML_ODESOLVER_API void ODESense_free(odeSense_t *os)
+{
+  if ( os != NULL )
+  {
+    ODESense_freeMatrix(os);
+    ODESense_freeStructures(os);
+    /* free compiled code */
+    if ( os->compiledCVODESensitivityCode != NULL )
+    {
+      CompiledCode_free(os->compiledCVODESensitivityCode);
+      os->compiledCVODESensitivityCode = NULL;
+    }
+    free(os);
+  }
+}
+
+
+/**  Returns an AST of the ith/jth entry of the parametric matrix
+
+     Returns NULL if either the parametric has not been constructed yet,
+     or if i > neq or j > nsens. Ownership remains within the odeModel
+     structure. */
+SBML_ODESOLVER_API const ASTNode_t *ODESense_getSensIJEntry(const odeSense_t *os,
+															int i, int j)
+{
+  if ( os->sens == NULL ) return NULL;
+  if ( i >= os->om->neq || j >= os->nsens ) return NULL;
+  return (const ASTNode_t *) os->sens[i][j];
+}
+
+
+/** \brief Returns an AST for the entry (d(vi1)/dt)/d(vi2) of the
+    parametric matrix.
+
+    Returns NULL if either the parametric matrix has not been constructed
+    yet, or if vi1 is not an ODE variable or vi2 is not a parameter or
+    variable for which sensitivity analysis was requested.
+    Ownership remains within the odeModel structure.
+*/
+
+SBML_ODESOLVER_API const ASTNode_t *ODESense_getSensEntry(const odeSense_t *os,
+														  const variableIndex_t *vi1,
+														  const variableIndex_t *vi2)
+{
+  int i;
+  /* find sensitivity parameter/variable */
+  for ( i=0; i<os->nsens && !(os->index_sens[i] == vi2->index); i++ );
+
+  if ( i == os->nsens ) return NULL;
+  return ODESense_getSensIJEntry(os, vi1->index, i);
+}
+
+
+/** \brief Returns the variableIndex for the jth parameter for
+    which sensitivity analysis was requested, where
+    0 < j < ODEModel_getNsens;
+
+    Returns NULL if either the parametric matrix has not been constructed
+    yet, or if j => ODEModel_getNsens;
+*/
+
+SBML_ODESOLVER_API variableIndex_t *ODESense_getSensParamIndexByNum(const odeSense_t *os,
+																	int j)
+{
+  if ( j < os->nsens )
+    return ODEModel_getVariableIndexByNum(os->om, os->index_sens[j]);
+  else
+    return NULL;
+}
+
+
+/** @} */
+
+/************VARIABLE INTERFACE*************/
+
+/* searches for the string "symbol" in the odeModel's names array
+   and returns its index number, or -1 if it doesn't exist */
+int ODEModel_getVariableIndexFields(const odeModel_t *om, const char *symbol)
+{
+  int i, nvalues;
+
+  nvalues = om->neq + om->nass + om->nconst + om->nalg;
+
+  for ( i=0; i<nvalues; i++ )
+    if (strcmp(symbol, om->names[i]) == 0)
+      return i;
+  return -1;
+}
+
+
+int VariableIndex_getIndex(const variableIndex_t *vi)
+{
+  return vi->index ;
+}
+
+/*! \defgroup variableIndex Variables + Parameters
+  \ingroup odeModel
+  \brief Getting the variableIndex structure
+
+  The variableIndex can be used to retrieve formulae from odeModel,
+  and to get and set current values in the integratorInstance.
+*/
+/*@{*/
+
+/** \brief Creates and returns a variable index for ith variable
+
+Returns NULL if i > nvalues. This functions works for all types of
+variables (ODE_VARIABLE, ASSIGNED_VARIABLE, ALGEBRAIC_VARIABLE and
+CONSTANT). This variableIndex can be used to get and set values
+during an integration run with IntegratorInstance_getVariable and
+IntegratorInstance_setVariable, respectively. The variableIndex
+must be freed by the calling application.
+*/
+
+SBML_ODESOLVER_API variableIndex_t *ODEModel_getVariableIndexByNum(const odeModel_t *om, int i)
+{
+  variableIndex_t *vi;
+
+  if ( i > ODEModel_getNumValues(om) )
+  {
+    SolverError_error(WARNING_ERROR_TYPE, SOLVER_ERROR_SYMBOL_IS_NOT_IN_MODEL,
+		      "Requested variable is not in the model. "
+		      "Index larger than number of variables and "
+		      "paramaters");
+    return NULL;
+  }
+  else
+  {
+    ASSIGN_NEW_MEMORY(vi, variableIndex_t, NULL);
+    vi->index = i;
+
+    if ( i<om->neq )
+    {
+      vi->type = ODE_VARIABLE;
+      vi->type_index = vi->index;
+    }
+    else if ( i < om->neq + om->nass )
+    {
+      vi->type = ASSIGNMENT_VARIABLE;
+      vi->type_index = i - om->neq;
+    }
+    else if ( i < om->neq + om->nass + om->nconst )
+    {
+      vi->type = CONSTANT;
+      vi->type_index = i - om->neq - om->nass;
+    }
+    else
+    {
+      vi->type = ALGEBRAIC_VARIABLE;
+      vi->type_index = i - om->neq - om->nass - om->nconst;
+    }
+  }
+
+  return vi;
+}
+
+
+/** \brief Creates and returns the variableIndex for the string "symbol"
+
+where `symbol' is the ID (corresponding to the SBML ID in the input
+model) of one of the models variables (ODE_VARIABLE,
+ASSIGNED_VARIABLE, ALGEBRAIC_VARIABLE and CONSTANT) or NULL if the
+symbol was not found. The variableIndex must be freed by the
+calling application.
+*/
+
+SBML_ODESOLVER_API variableIndex_t *ODEModel_getVariableIndex(odeModel_t *om, const char *symbol)
+{
+
+  int index;
+
+  if ( symbol == NULL )
+  {
+    SolverError_error(ERROR_ERROR_TYPE, SOLVER_ERROR_SYMBOL_IS_NOT_IN_MODEL,
+		      "NULL string passed to ODEModel_getVariableIndex", symbol);
+
+    return NULL;
+  }
+
+  index = ODEModel_getVariableIndexFields(om, symbol);
+
+  if ( index == -1 )
+  {
+    SolverError_error(ERROR_ERROR_TYPE, SOLVER_ERROR_SYMBOL_IS_NOT_IN_MODEL,
+		      "Symbol %s is not in the model", symbol);
+
+    return NULL;
+  }
+
+  return ODEModel_getVariableIndexByNum(om, index);
+}
+
+
+
+/** \brief  Creates and returns a variable index for ith ODE variable.
+
+    Returns NULL if not existing (i > ODEModel_getNeq(om)). The
+    variableIndex must be freed by the calling application.
+*/
+
+SBML_ODESOLVER_API variableIndex_t *ODEModel_getOdeVariableIndex(const odeModel_t *om,
+																 int i)
+{
+  if ( i < om->neq )
+    return ODEModel_getVariableIndexByNum(om, i);
+  else
+    return NULL;
+}
+
+
+/** \brief Creates and returns a variable index for ith assigned variable.
+
+Returns NULL if not existing (i > ODEModel_getNumAssignments(om)).
+The variableIndex must be freed by the calling application.
+*/
+
+SBML_ODESOLVER_API variableIndex_t *ODEModel_getAssignedVariableIndex(const odeModel_t *om,
+																	  int i)
+{
+  if ( i < om->nass )
+    return ODEModel_getVariableIndexByNum(om, i + om->neq);
+  else
+    return NULL;
+}
+
+/**\brief  Creates and returns a variable index for ith constant.
+
+Returns NULL if not existing (i > ODEModel_getNumConstants(om)).
+The variableIndex must be freed by the calling application.
+*/
+
+SBML_ODESOLVER_API variableIndex_t *ODEModel_getConstantIndex(const odeModel_t *om,
+															  int i)
+{
+  if ( i < om->nconst )
+    return ODEModel_getVariableIndexByNum(om, i + om->neq + om->nass);
+  else
+    return NULL;
+}
+
+/** \brief Returns the name of the variable corresponding to passed
+    variableIndex. The returned string (const char *) may NOT be
+    changed or freed by calling applications.
+
+    Equivalent to
+    IntegratorInstance_getVariableName(integratorInstance_t*, odeModel_t *),
+    and ODEModel_getVariableName(odeModel_t *, variableIndex_t *);
+*/
+
+SBML_ODESOLVER_API const char *VariableIndex_getName(const variableIndex_t *vi,
+													 const odeModel_t *om)
+{
+  return (const char*) om->names[vi->index];
+}
+
+/** \brief Returns the name of the variable corresponding to passed
+    variableIndex. The returned string (const char *) may NOT be
+    changed or freed by calling applications.
+
+     Equivalent to VariableIndex_getName(variableIndex_t*, odeModel_t *) and
+     IntegratorInstance_getVariableName(integratorInstance_t*, odeModel_t *);
+*/
+const char *ODEModel_getVariableName(const odeModel_t *om, const variableIndex_t *vi)
+{
+  return VariableIndex_getName(vi, om);
+}
+
+/** \brief  Frees a variableIndex structure
+ */
+
+SBML_ODESOLVER_API void VariableIndex_free(variableIndex_t *vi)
+{
+  free(vi);
+}
+
+/** @} */
+
+
+/****************COMPILATION*******************/
+
+/* appends a compilable assignment to the buffer.
+   The assignment is made to the 'value' array item indexed by 'index'.
+   The value assigned is computed from the given AST. */
+static void ODEModel_generateAssignmentCode(int index, ASTNode_t *node,
+				     charBuffer_t *buffer)
+{
+  CharBuffer_append(buffer, "value[");
+  CharBuffer_appendInt(buffer, index);
+  CharBuffer_append(buffer, "] = ");
+  generateAST(buffer, node);
+  CharBuffer_append(buffer, ";\n");
+}
+
+/* appends compiled code for a set of assignment rules to the gievn buffer.
+   The assignments generated are taken from the assignment rules in the
+   given model however the set generated is determined by the
+   given 'requiredAssignments' boolean array which is indexed in the same
+   order as the 'assignment' array on the given model. */
+static void ODEModel_generateAssignmentRuleCode(int nass,
+					 nonzeroElem_t **orderedList,
+					 charBuffer_t *buffer)
+{
+  int i ;
+
+  for ( i=0; i<nass; i++ )
+  {
+    nonzeroElem_t *ordered = orderedList[i];
+    ODEModel_generateAssignmentCode(ordered->i, ordered->ij, buffer);
+  }
+}
+
+/** appends compiled code to the given buffer for the function called by
+    the value of 'COMPILED_EVENT_FUNCTION_NAME' which implements the
+    evaluation event triggers and assignment rules required for event
+    triggers and event assignments.
+*/
+static void ODEModel_generateEventFunction(odeModel_t *om, charBuffer_t *buffer)
+{
+  int i, j, idx;
+  ASTNode_t *trigger, *assignment;
+
+  CharBuffer_append(buffer,"DLL_EXPORT int ");
+  CharBuffer_append(buffer,COMPILED_EVENT_FUNCTION_NAME);
+  CharBuffer_append(buffer,"(cvodeData_t *data, int *engineIsValid)\n"\
+		    "{\n"\
+		    "    realtype *value = data->value;\n"\
+		    "    int fired = 0;\n"\
+		    "    int *trigger = data->trigger;\n");
+
+  ODEModel_generateAssignmentRuleCode(om->nassbeforeevents,
+				      om->assignmentsBeforeEvents, buffer);
+
+  for ( i=0; i<om->nevents; i++ )
+  {
+    int setIsValidFalse = 0;
+
+    trigger = (ASTNode_t *) om->event[i];
+
+    CharBuffer_append(buffer, "if ((trigger[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "] == 0) && (");
+    generateAST(buffer, trigger);
+    CharBuffer_append(buffer, "))\n"		\
+		      "{\n"			\
+		      "    fired++;\n"		\
+		      "    trigger[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "] = 1;\n");
+
+    for ( j=0; j<om->neventAss[i]; j++ )
+    {
+      /* generate event assignment */
+      assignment = om->eventAssignment[i][j];
+      idx = om->eventIndex[i][j];
+      CharBuffer_append(buffer, "    ");
+      ODEModel_generateAssignmentCode(idx, assignment, buffer);
+
+      /* identify cases which modify variables computed by solver which
+	 set the solver into an invalid state : NOT CORRECT : solver
+	 should always be reinitialized ! */
+      if ( /* idx < om->neq && */ !setIsValidFalse )
+      {
+	CharBuffer_append(buffer, "    *engineIsValid = 0;\n");
+	setIsValidFalse = 1 ;
+      }
+    }
+
+    
+    CharBuffer_append(buffer, "}\n"		\
+		      "else {\n"		\
+		      "    trigger[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "] = 0;\n"	\
+		      
+		      "}\n");
+  }
+
+  /* NOT REQUIRED : complete rule set evaluated where required */
+  /*   CharBuffer_append(buffer, "if ( fired )\n{\n"); */
+  /*   ODEModel_generateAssignmentRuleCode(om->nassafterevents, */
+  /*			      om->assignmentsAfterEvents, buffer); */
+  /*   CharBuffer_append(buffer, "\n}\n"); */
+
+  CharBuffer_append(buffer, "return fired;\n}\n");
+}
+
+/* appends compiled code to the given buffer for the function called
+   by the value of 'COMPILED_RHS_FUNCTION_NAME' which calculates the
+   right hand side ODE values for the set of ODEs being solved. */
+static void ODEModel_generateCVODERHSFunction(odeModel_t *om, charBuffer_t *buffer)
+{
+  int i ;
+
+  CharBuffer_append(buffer,"DLL_EXPORT int ");
+  CharBuffer_append(buffer,COMPILED_RHS_FUNCTION_NAME);
+  CharBuffer_append(buffer,
+		    "(realtype t, N_Vector y, N_Vector ydot, void *f_data)\n"\
+		    "{\n"\
+		    "    int i;\n"\
+		    "    realtype *ydata, *dydata;\n"\
+		    "    cvodeData_t *data;\n"\
+		    "    realtype *value ;\n"\
+		    "    data = (cvodeData_t *) f_data;\n"\
+		    "    value = data->value;\n"\
+		    "    ydata = NV_DATA_S(y);\n"\
+		    "    dydata = NV_DATA_S(ydot);\n");
+
+  /* update time  */
+  CharBuffer_append(buffer, "data->currenttime = t;\n");
+
+  /* UPDATE ODE VARIABLES from CVODE */
+  for ( i=0; i<om->neq; i++ )
+  {
+    CharBuffer_append(buffer, "value[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "] = ydata[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "];\n");
+  }
+  /* negative state detection */
+  CharBuffer_append(buffer, "if ( data->opt->DetectNegState  )\n");
+  CharBuffer_append(buffer, "  for ( i=0; i<data->model->neq; i++ )\n");
+  CharBuffer_append(buffer, "    if (data->value[i] < 0) return (1);\n");
+
+  /* UPDATE ASSIGNMENT RULES */
+  /* in case sensitivity or jacobi matrix is not available */
+  CharBuffer_append(buffer,
+		    "if ( data->use_p )\n"\
+		    "{\n"\
+		    "  for ( i=0; i<data->nsens; i++ )\n"\
+		    "    value[data->os->index_sens[i]] = data->p[i];\n");
+
+  ODEModel_generateAssignmentRuleCode(om->nass,
+				      om->assignmentOrder, buffer);
+
+  /* in case sensitivity or jacobi matrix are available */
+  /* CharBuffer_append(buffer, "\n printf(\"HALLO\\n\");\n"); */
+  CharBuffer_append(buffer, "\n}\nelse\n{\n");
+  ODEModel_generateAssignmentRuleCode(om->nassbeforeodes,
+				      om->assignmentsBeforeODEs, buffer);
+  CharBuffer_append(buffer, "}\n");
+
+
+  /* EVALUATE ODEs f(x,p,t) = dx/dt */
+  for ( i=0; i<om->neq; i++ )
+  {
+    CharBuffer_append(buffer, "dydata[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "] = ");
+    generateAST(buffer, om->ode[i]);
+    CharBuffer_append(buffer, ";\n");
+  }
+  /* reset parameters for printout etc. */
+  CharBuffer_append(buffer,
+		    "if ( data->use_p )\n"\
+		    "{"\
+		    "  for ( i=0; i<data->nsens; i++ )\n"\
+		    "    value[data->os->index_sens[i]] = data->p_orig[i];\n");
+
+  ODEModel_generateAssignmentRuleCode(om->nass,
+				      om->assignmentOrder, buffer);
+  CharBuffer_append(buffer, "}\n");
+
+  CharBuffer_append(buffer, "return (0);\n");
+  CharBuffer_append(buffer, "}\n\n");
+}
+
+
+/* appends compiled code to the given buffer for the function called
+   by the value of 'COMPILED_ADJRHS_FUNCTION_NAME' which calculates the
+   right hand side ODE values for the adjoint ODEs being solved. */
+static void ODEModel_generateCVODEAdjointRHSFunction(odeModel_t *om, charBuffer_t *buffer)
+{
+  int i,j ;
+  ASTNode_t *jacob_ji;
+  double val;
+  CharBuffer_append(buffer,"DLL_EXPORT int ");
+  CharBuffer_append(buffer,COMPILED_ADJOINT_RHS_FUNCTION_NAME);
+  CharBuffer_append(buffer,
+		    "(realtype t, N_Vector y, N_Vector yA, "\
+		    " N_Vector yAdot, void *fA_data)\n"\
+		    "{\n"\
+		    "    int i;\n"\
+		    "    realtype *ydata, *yAdata, *dyAdata;\n"\
+		    "    cvodeData_t *data;\n"\
+                    "    realtype *value ;\n"\
+		    "    data = (cvodeData_t *) fA_data;\n"\
+                    "    value = data->value;\n"\
+                    "    ydata = NV_DATA_S(y);\n"\
+		    "    yAdata = NV_DATA_S(yA);\n"\
+		    "    dyAdata = NV_DATA_S(yAdot);\n" );
+
+
+  /*  update ODE variables from CVODE */
+  for ( i=0; i<om->neq; i++ )
+  {
+    CharBuffer_append(buffer,  "value[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer,  "] = ydata[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer,  "];\n" );
+  }
+
+  /* update time  */
+  CharBuffer_append(buffer, "data->currenttime = t;\n");
+
+
+  /*  evaluate adjoint sensitivity RHS: -[df/dx]^T * yA + v */
+  for ( i=0; i<om->neq; i++ )
+  {
+    CharBuffer_append(buffer, "dyAdata[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "] = 0.0;\n");
+    for ( j=0; j<om->neq; j++ )
+    {
+      jacob_ji = om->jacob[j][i];
+      /*  check whether jacobian is 0  */
+      val = 1;
+      if ( ASTNode_isInteger(jacob_ji) )
+	val = (double) ASTNode_getInteger(jacob_ji) ;
+      if ( ASTNode_isReal(jacob_ji) )
+	val = ASTNode_getReal(jacob_ji) ;
+
+      /* write Jacobi evaluation only if entry is not 0 */
+      if ( val != 0.0 )
+      {
+	CharBuffer_append(buffer, "dyAdata[");
+	CharBuffer_appendInt(buffer, i);
+	CharBuffer_append(buffer, "]");
+	CharBuffer_append(buffer, "-= ( ");
+	generateAST(buffer, jacob_ji);
+	CharBuffer_append(buffer, " ) * yAdata[");
+	CharBuffer_appendInt(buffer, j);
+	CharBuffer_append(buffer, "];\n");
+      }
+    }
+
+    CharBuffer_append(buffer,
+		      "if (data->model->discrete_observation_data == 0)\n ");
+    CharBuffer_append(buffer, "dyAdata[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "] +=");
+    CharBuffer_append(buffer, " evaluateAST( data->model->vector_v[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "], data);\n");
+
+  }
+
+  CharBuffer_append(buffer, "return (0);\n");
+
+  CharBuffer_append(buffer, "}\n\n");
+}
+
+/* appends compiled code to the given buffer for the function called by
+   the value of 'COMPILED_JACOBIAN_FUNCTION_NAME' which
+   calculates the Jacobian for the set of ODEs being solved. */
+static void ODEModel_generateCVODEJacobianFunction(odeModel_t *om,
+					    charBuffer_t *buffer)
+{
+  int i, j ;
+  ASTNode_t *jacob_ij;
+  float val;
+
+  CharBuffer_append(buffer,"DLL_EXPORT int ");
+  CharBuffer_append(buffer,COMPILED_JACOBIAN_FUNCTION_NAME);
+  CharBuffer_append(buffer,
+		    "(long int N, DenseMat J, realtype t,\n"\
+		    "    N_Vector y, N_Vector fy, void *jac_data,\n"\
+		    "    N_Vector vtemp1, N_Vector vtemp2, N_Vector vtemp3)\n"\
+		    "{\n"\
+		    "  \n"\
+		    "int i;\n"\
+		    "realtype *ydata;\n"\
+		    "cvodeData_t *data;\n"\
+		    "realtype *value;\n"\
+		    "data  = (cvodeData_t *) jac_data;\n"\
+		    "value = data->value ;\n"\
+		    "ydata = NV_DATA_S(y);\n"\
+		    "data->currenttime = t;\n"\
+		    "\n"\
+		    "if (  (data->opt->Sensitivity && data->os ) &&"\
+		    " (!data->os->sensitivity || !data->model->jacobian))\n"\
+		    "    for ( i=0; i<data->nsens; i++ )\n"\
+		    "        value[data->os->index_sens[i]] = "\
+		    "data->p[i];\n\n");
+
+
+  /** update ODE variables from CVODE */
+  for ( i=0; i<om->neq; i++ )
+  {
+    CharBuffer_append(buffer, "value[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "] = ydata[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "];\n");
+  }
+
+  /** evaluate Jacobian J = df/dx */
+  for ( i=0; i<om->neq; i++ )
+  {
+    for ( j=0; j<om->neq; j++ )
+    {
+      jacob_ij = om->jacob[i][j];
+      /*  check whether jacobian is 0  */
+      val = 1;
+      if ( ASTNode_isInteger(jacob_ij) )
+	val = (double) ASTNode_getInteger(jacob_ij) ;
+      if ( ASTNode_isReal(jacob_ij) )
+	val = ASTNode_getReal(jacob_ij) ;
+
+      /* write Jacobi evaluation only if entry is not 0 */
+      if ( val != 0.0 )
+      {
+	CharBuffer_append(buffer, "DENSE_ELEM(J,");
+	CharBuffer_appendInt(buffer, i);
+	CharBuffer_append(buffer, ",");
+	CharBuffer_appendInt(buffer, j);
+	CharBuffer_append(buffer, ") = ");
+	generateAST(buffer, jacob_ij);
+	CharBuffer_append(buffer, ";\n");
+      }
+    }
+  }
+  /* reset parameters for printout etc. */
+  CharBuffer_append(buffer,
+		    "if (  (data->opt->Sensitivity && data->os ) &&"\
+		    " (!data->os->sensitivity || !data->model->jacobian))\n"\
+		    "    for ( i=0; i<data->nsens; i++ )\n"\
+		    "        value[data->os->index_sens[i]] = "\
+		    "data->p_orig[i];\n\n");
+
+  /* CharBuffer_append(buffer, "printf(\"J\");"); */
+  CharBuffer_append(buffer, "return (0);\n");
+  CharBuffer_append(buffer, "}\n");
+}
+
+/* appends compiled code to the given buffer for the function called by
+   the value of 'COMPILED_JACOBIAN_FUNCTION_NAME' which
+   calculates the Jacobian for the set of ODEs being solved. */
+static void ODEModel_generateCVODEAdjointJacobianFunction(odeModel_t *om,
+						   charBuffer_t *buffer)
+{
+  int i, j ;
+  ASTNode_t *jacob_ji;
+  float val;
+
+  CharBuffer_append(buffer,"DLL_EXPORT int ");
+  CharBuffer_append(buffer,COMPILED_ADJOINT_JACOBIAN_FUNCTION_NAME);
+  CharBuffer_append(buffer,
+		    "(long int NB, DenseMat JB, realtype t, N_Vector y,\n" \
+		    "    N_Vector yB,  N_Vector fyB, void *jac_dataB,\n" \
+		    "    N_Vector tmpB, N_Vector tmp2B, N_Vector tmp3B)\n" \
+		    "{\n"						\
+		    "  \n"						\
+		    "int i;\n"						\
+		    "realtype *ydata;\n"				\
+		    "cvodeData_t *data;\n"				\
+		    "realtype *value;\n"				\
+		    "data  = (cvodeData_t *) jac_dataB;\n"		\
+		    "value = data->value ;\n"				\
+		    "ydata = NV_DATA_S(y);\n"				\
+		    "data->currenttime = t;\n"				\
+		    "\n");
+
+  /** update ODE variables from CVODE */
+  for ( i=0; i<om->neq; i++ )
+  {
+    CharBuffer_append(buffer, "value[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "] = ydata[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "];\n");
+  }
+
+  /** evaluate Jacobian J = df/dx */
+  for ( i=0; i<om->neq; i++ )
+  {
+    for ( j=0; j<om->neq; j++ )
+    {
+      jacob_ji = om->jacob[j][i];
+      /*  check whether jacobian is 0  */
+      val = 1;
+      if ( ASTNode_isInteger(jacob_ji) )
+	val = (double) ASTNode_getInteger(jacob_ji) ;
+      if ( ASTNode_isReal(jacob_ji) )
+	val = ASTNode_getReal(jacob_ji) ;
+
+      /* write Jacobi evaluation only if entry is not 0 */
+      if ( val != 0.0 )
+      {
+	CharBuffer_append(buffer, "DENSE_ELEM(JB,");
+	CharBuffer_appendInt(buffer, i);
+	CharBuffer_append(buffer, ",");
+	CharBuffer_appendInt(buffer, j);
+	CharBuffer_append(buffer, ") = - (");
+	generateAST(buffer, jacob_ji);
+	CharBuffer_append(buffer, ");\n");
+      }
+    }
+  }
+  /* CharBuffer_append(buffer, "printf(\"JA\");"); */
+  CharBuffer_append(buffer, "return (0);\n");
+
+  CharBuffer_append(buffer, "}\n");
+}
+
+/* appends compiled code to the given buffer for the function called
+   by the value of 'COMPILED_SENSITIVITY_FUNCTION_NAME' which
+   calculates the sensitivities (derived from Jacobian and parametrix
+   matrices) for the set of ODEs being solved. */
+static void ODESense_generateCVODESensitivityFunction(odeSense_t *os,
+					       charBuffer_t *buffer)
+{
+  int i, j, k;
+  double val;
+  ASTNode_t *jacob_ij, *sens_ik;
+
+  CharBuffer_append(buffer,"DLL_EXPORT int ");
+  CharBuffer_append(buffer,COMPILED_SENSITIVITY_FUNCTION_NAME);
+  CharBuffer_append(buffer,
+		    "(int Ns, realtype t, N_Vector y, N_Vector ydot,\n"\
+		    " int iS, N_Vector yS, N_Vector ySdot, \n"
+		    " void *fs_data, N_Vector tmp1, N_Vector tmp2)\n"\
+		    "{\n"\
+		    "  \n"\
+		    "realtype *ydata, *ySdata, *dySdata;\n"\
+		    "cvodeData_t *data;\n"\
+		    "realtype *value;\n"\
+		    "data = (cvodeData_t *) fs_data;\n"\
+		    "value = data->value ;\n"\
+		    "ydata = NV_DATA_S(y);\n"\
+		    "ySdata = NV_DATA_S(yS);\n"\
+		    "dySdata = NV_DATA_S(ySdot);\n"\
+		    "data->currenttime = t;\n");
+
+  /** update ODE variables from CVODE */
+  for ( i=0; i<os->om->neq; i++ )
+  {
+    CharBuffer_append(buffer, "value[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "] = ydata[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "];\n\n");
+  }
+
+  /** evaluate sensitivity RHS: df/dx * s + df/dp for one p */
+  for ( i=0; i<os->om->neq; i++ )
+  {
+    CharBuffer_append(buffer, "dySdata[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "] = 0.0;\n");
+    for (j=0; j<os->om->neq; j++)
+    {
+      /* only non-zero Jacobi elements */
+      jacob_ij = os->om->jacob[i][j];
+      /*  check whether jacobian is 0  */
+      val = 1;
+      if ( ASTNode_isInteger(jacob_ij) )
+	val = (double) ASTNode_getInteger(jacob_ij) ;
+      if ( ASTNode_isReal(jacob_ij) )
+	val = ASTNode_getReal(jacob_ij) ;
+
+      /* write Jacobi evaluation only if entry is not 0 */
+      if ( val != 0.0 )
+      {
+	CharBuffer_append(buffer, "dySdata[");
+	CharBuffer_appendInt(buffer, i);
+	CharBuffer_append(buffer, "] += ( ");
+	generateAST(buffer, jacob_ij);
+	CharBuffer_append(buffer, ") * ySdata[");
+	CharBuffer_appendInt(buffer, j);
+	CharBuffer_append(buffer, "]; ");
+	CharBuffer_append(buffer, " /* om->jacob[");
+	CharBuffer_appendInt(buffer, i);
+	CharBuffer_append(buffer, "][");
+	CharBuffer_appendInt(buffer, j);
+	CharBuffer_append(buffer, "]  */ \n");
+      }
+    }
+
+    for ( k=0; k<os->nsens; k++ )
+    {
+      if ( os->index_sensP[k] != -1 )
+      {
+	/* only non-zero Jacobi elements */
+	sens_ik = os->sens[i][os->index_sensP[k]];
+	/*  check whether jacobian is 0  */
+	val = 1;
+	if ( ASTNode_isInteger(sens_ik) )
+	  val = (double) ASTNode_getInteger(sens_ik) ;
+	if ( ASTNode_isReal(sens_ik) )
+	  val = ASTNode_getReal(sens_ik) ;
+
+	if ( val != 0.0 )
+	{
+	  CharBuffer_append(buffer, "if ( ");
+	  CharBuffer_appendInt(buffer, k);
+	  CharBuffer_append(buffer, " == iS ) ");
+	  CharBuffer_append(buffer, "dySdata[");
+	  CharBuffer_appendInt(buffer, i);
+	  CharBuffer_append(buffer, "] += ");
+	  generateAST(buffer, sens_ik);
+	  CharBuffer_append(buffer, "; ");
+	  CharBuffer_append(buffer, " /* om->sens[");
+	  CharBuffer_appendInt(buffer, i);
+	  CharBuffer_append(buffer, "][");
+	  CharBuffer_appendInt(buffer,os->index_sensP[k]);
+	  CharBuffer_append(buffer, "]  */ \n");
+	}
+      }
+    }
+  }
+  /* CharBuffer_append(buffer, "printf(\"S\");"); */
+  CharBuffer_append(buffer, "return (0);\n");
+
+  CharBuffer_append(buffer, "}\n\n");
+}
+
+
+/* appends compiled code to the given buffer for the function called
+   by the value of 'COMPILED_ADJOINT_QUAD_FUNCTION_NAME' */
+static void ODESense_generateCVODEAdjointQuadFunction(odeSense_t *os,
+					       charBuffer_t *buffer)
+{
+  int i, k;
+  double val;
+  ASTNode_t *sens_ik;
+
+  CharBuffer_append(buffer,"DLL_EXPORT int ");
+  CharBuffer_append(buffer,COMPILED_ADJOINT_QUAD_FUNCTION_NAME);
+  CharBuffer_append(buffer,
+		    "(realtype t, N_Vector y, N_Vector yA,\n"	\
+		    " N_Vector qAdot, void *fA_data)\n"		\
+		    "{\n"					\
+		    "  \n"					\
+		    "realtype *ydata, *yAdata, *dqAdata;\n"	\
+		    "cvodeData_t *data;\n"\
+		    "realtype *value;\n"\
+		    "data = (cvodeData_t *) fA_data;\n"\
+		    "value = data->value ;\n"\
+		    "ydata = NV_DATA_S(y);\n"\
+		    "yAdata = NV_DATA_S(yA);\n"\
+		    "dqAdata = NV_DATA_S(qAdot);\n"\
+		    "data->currenttime = t;\n");
+
+  /** update ODE variables from CVODE */
+  for ( i=0; i<os->om->neq; i++ )
+  {
+    CharBuffer_append(buffer, "value[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "] = ydata[");
+    CharBuffer_appendInt(buffer, i);
+    CharBuffer_append(buffer, "];\n\n");
+  }
+
+  /** evaluate quadrature integrand: yA^T * df/dp */
+  for ( k=0; k<os->nsens; k++ )
+  {
+    CharBuffer_append(buffer, "dqAdata[");
+    CharBuffer_appendInt(buffer, k);
+    CharBuffer_append(buffer, "] = 0.0;\n");
+
+    for ( i=0; i<os->om->neq; i++ )
+    {
+      if ( os->index_sensP[k] != -1 )
+      {
+	/* only non-zero param matrix elements */
+	sens_ik = os->sens[i][os->index_sensP[k]];
+
+	/*  check whether element is 0  */
+	val = 1;
+	if ( ASTNode_isInteger(sens_ik) )
+	  val = (double) ASTNode_getInteger(sens_ik) ;
+	if ( ASTNode_isReal(sens_ik) )
+	  val = ASTNode_getReal(sens_ik) ;
+
+	if ( val != 0.0 )
+	{
+	  CharBuffer_append(buffer, "dqAdata[");
+	  CharBuffer_appendInt(buffer, k);
+	  CharBuffer_append(buffer, "] += ");
+	  CharBuffer_append(buffer, "yAdata[");
+	  CharBuffer_appendInt(buffer, i);
+	  CharBuffer_append(buffer, "] * ( ");
+	  generateAST(buffer, sens_ik);
+	  CharBuffer_append(buffer, " ); /* om->sens[");
+	  CharBuffer_appendInt(buffer, i);
+	  CharBuffer_append(buffer, "][");
+	  CharBuffer_appendInt(buffer, os->index_sensP[k]);
+	  CharBuffer_append(buffer, "]  */ \n");
+	}
+      }
+    }
+  }
+
+  CharBuffer_append(buffer, "return (0);\n");
+
+  /* CharBuffer_append(buffer, "printf(\"qa\");"); */
+  CharBuffer_append(buffer, "}\n\n");
+}
+
+/* dynamically generates and complies the ODE RHS, Jacobian and
+   Events handling functions for the given model.
+   The jacobian function is not generated if the jacobian AST
+   expressions have not been generated.
+   Returns 1 if successful, 0 otherwise
+*/
+int ODEModel_compileCVODEFunctions(odeModel_t *om)
+{
+  charBuffer_t *buffer = CharBuffer_create();
+
+
+  /* if available, the whole code needs recompilation, can happen
+     for subsequent runs with new sensitivity settings */
+  if ( om->compiledCVODEFunctionCode != NULL )
+  {
+    CompiledCode_free(om->compiledCVODEFunctionCode);
+    om->compiledCVODEFunctionCode = NULL;
+  }
+
+#ifdef _WIN32
+  CharBuffer_append(buffer,
+		    "#include <windows.h>\n"\
+		    "#include <math.h>\n"\
+		    "#include <sbmlsolver/sundialstypes.h>\n"\
+		    "#include <sbmlsolver/nvector.h>\n"\
+		    "#include <sbmlsolver/nvector_serial.h>\n"\
+		    "#include <sbmlsolver/dense.h>\n"\
+		    "#include <sbmlsolver/cvodes.h>\n"\
+		    "#include <sbmlsolver/cvodea.h>\n"\
+		    "#include <sbmlsolver/cvdense.h>\n"\
+		    "#include <sbmlsolver/cvodeData.h>\n"\
+		    "#include <sbmlsolver/cvodeSettings.h>\n"\
+		    "#include <sbmlsolver/odeModel.h>\n"\
+		    "#define DLL_EXPORT __declspec(dllexport)\n");
+
+#else
+  CharBuffer_append(buffer,
+		    "#include <math.h>\n"
+		    "#include \"cvodes/cvodes.h\"\n"
+		    "#include \"cvodes/cvodes_dense.h\"\n"
+		    "#include \"nvector/nvector_serial.h\"\n"
+		    "#include \"sbmlsolver/cvodeData.h\"\n"
+		    "#include \"sbmlsolver/processAST.h\"\n"
+#if __GNUC__ >= 4
+        "#define DLL_EXPORT extern \"C\" __attribute__ ((visibility (\"default\")))\n\n");
+#else
+        "#define DLL_EXPORT\n\n");
+#endif
+#endif
+
+  generateMacros(buffer);
+
+  if ( om->jacobian )
+  {
+    ODEModel_generateCVODEJacobianFunction(om, buffer);
+    ODEModel_generateCVODEAdjointJacobianFunction(om, buffer);
+    ODEModel_generateCVODEAdjointRHSFunction(om, buffer);
+  }
+
+  ODEModel_generateEventFunction(om, buffer);
+  ODEModel_generateCVODERHSFunction(om, buffer);
+
+
+#ifdef _DEBUG /* write out source file for debugging*/
+  {
+    FILE *src;
+    char *srcname =  "rhsfunctions.c";
+    src = fopen(srcname, "w");
+    fprintf(src, "%s", CharBuffer_getBuffer(buffer));
+    fclose(src);
+  }
+#endif
+
+  /* now all required sourcecode is in `buffer' and can be sent
+     to the compiler */
+  om->compiledCVODEFunctionCode =
+    Compiler_compile(CharBuffer_getBuffer(buffer));
+
+
+  if ( om->compiledCVODEFunctionCode == NULL )
+  {
+    CharBuffer_free(buffer);
+    return 0;
+  }
+
+  CharBuffer_free(buffer);
+
+  /* attach pointers */
+  om->compiledCVODERhsFunction =
+    CompiledCode_getFunction(om->compiledCVODEFunctionCode,
+			     COMPILED_RHS_FUNCTION_NAME);
+
+  om->compiledEventFunction =
+    CompiledCode_getFunction(om->compiledCVODEFunctionCode,
+			     COMPILED_EVENT_FUNCTION_NAME);
+
+
+  if ( om->jacobian )
+  {
+    om->compiledCVODEJacobianFunction =
+      CompiledCode_getFunction(om->compiledCVODEFunctionCode,
+			       COMPILED_JACOBIAN_FUNCTION_NAME);
+
+
+    om->compiledCVODEAdjointJacobianFunction =
+      CompiledCode_getFunction(om->compiledCVODEFunctionCode,
+			       COMPILED_ADJOINT_JACOBIAN_FUNCTION_NAME);
+
+    om->compiledCVODEAdjointRhsFunction =
+      CompiledCode_getFunction(om->compiledCVODEFunctionCode,
+			       COMPILED_ADJOINT_RHS_FUNCTION_NAME);
+
+  }
+  return 1;
+}
+
+
+/* dynamically generates and compiles the ODE Sensitivity RHS
+   for the given model */
+int ODESense_compileCVODESenseFunctions(odeSense_t *os)
+{
+  charBuffer_t *buffer = CharBuffer_create();
+
+#ifdef _WIN32
+  CharBuffer_append(buffer,
+		    "#include <windows.h>\n"\
+		    "#include <math.h>\n"\
+		    "#include <sbmlsolver/sundialstypes.h>\n"\
+		    "#include <sbmlsolver/nvector.h>\n"\
+		    "#include <sbmlsolver/nvector_serial.h>\n"\
+		    "#include <sbmlsolver/dense.h>\n" 
+		    "#include <sbmlsolver/cvodes.h>\n"\
+		    "#include <sbmlsolver/cvodea.h>\n"\
+		    "#include <sbmlsolver/cvdense.h>\n"\
+		    "#include <sbmlsolver/cvodeData.h>\n"\
+		    "#include <sbmlsolver/cvodeSettings.h>\n"\
+		    "#include <sbmlsolver/processAST.h>\n"\
+		    "#include <sbmlsolver/odeModel.h>\n"\
+		    "#define DLL_EXPORT __declspec(dllexport)\n");
+#else
+  CharBuffer_append(buffer,
+		    "#include <math.h>\n"
+		    "#include \"cvodes/cvodes.h\"\n"
+		    "#include \"cvodes/cvodes_dense.h\"\n"
+		    "#include \"nvector/nvector_serial.h\"\n"
+		    "#include \"sbmlsolver/cvodeData.h\"\n"
+		    "#include \"sbmlsolver/processAST.h\"\n"
+#if __GNUC__ >= 4
+        "#define DLL_EXPORT extern \"C\" __attribute__ ((visibility (\"default\")))\n\n");
+#else
+		    "#define DLL_EXPORT\n\n");
+#endif
+#endif
+
+  generateMacros(buffer);
+
+  ODESense_generateCVODESensitivityFunction(os, buffer);
+  ODESense_generateCVODEAdjointQuadFunction(os, buffer);
+
+#ifdef _DEBUG /* write out source file for debugging*/
+  {
+    FILE *src;
+    char *srcname =  "sensfunctions.c";
+    src = fopen(srcname, "w");
+    fprintf(src, "%s", CharBuffer_getBuffer(buffer));
+    fclose(src);
+  }
+#endif
+
+  /* now all required sourcecode is in `buffer' and can be sent
+     to the compiler */
+  os->compiledCVODESensitivityCode =
+    Compiler_compile(CharBuffer_getBuffer(buffer));
+
+  if ( os->compiledCVODESensitivityCode == NULL )
+  {
+    CharBuffer_free(buffer);
+    return 0;
+  }
+
+  CharBuffer_free(buffer);
+
+  os->compiledCVODESenseFunction =
+    CompiledCode_getFunction(os->compiledCVODESensitivityCode,
+			     COMPILED_SENSITIVITY_FUNCTION_NAME);
+
+  os->compiledCVODEAdjointQuadFunction =
+    CompiledCode_getFunction(os->compiledCVODESensitivityCode,
+			     COMPILED_ADJOINT_QUAD_FUNCTION_NAME);
+
+  os->recompileSensitivity = 0;
+
+  return 1;
+}
+
+
+/** returns the compiled RHS ODE function for the given model */
+SBML_ODESOLVER_API CVRhsFn ODEModel_getCompiledCVODERHSFunction(odeModel_t *om)
+{
+  if ( !om->compiledCVODERhsFunction )
+    if ( !ODEModel_compileCVODEFunctions(om) )
+      return NULL;
+
+  return om->compiledCVODERhsFunction;
+}
+
+/** returns the compiled Jacobian function for the given model */
+SBML_ODESOLVER_API CVDenseJacFn ODEModel_getCompiledCVODEJacobianFunction(odeModel_t *om)
+{
+  if ( !om->jacobian )
+  {
+    SolverError_error(ERROR_ERROR_TYPE,
+		      SOLVER_ERROR_CANNOT_COMPILE_JACOBIAN_NOT_COMPUTED,
+		      "Attempting to compile jacobian before the jacobian "\
+		      "is computed\n"\
+		      "Call ODEModel_constructJacobian before calling\n"\
+		      "ODEModel_getCompiledCVODEJacobianFunction or "\
+		      "ODEModel_getCompiledCVODERHSFunction\n");
+    return NULL;
+  }
+
+  if ( !om->compiledCVODEJacobianFunction )
+    /* only for calling independent of solver!!
+       function should have been compiled already */
+    if ( !ODEModel_compileCVODEFunctions(om) )
+      return NULL;
+
+
+  return om->compiledCVODEJacobianFunction;
+}
+
+/** returns the compiled Sensitivity function for the given model */
+SBML_ODESOLVER_API CVSensRhs1Fn ODESense_getCompiledCVODESenseFunction(odeSense_t *os)
+{
+  if ( !os->sensitivity )
+  {
+    SolverError_error(ERROR_ERROR_TYPE,
+		      SOLVER_ERROR_CANNOT_COMPILE_SENSITIVITY_NOT_COMPUTED,
+		      "Attempting to compile sensitivity matrix before "\
+		      "the matrix is computed\n"\
+		      "Call ODESense_constructSensitivity before calling\n"\
+		      "ODESense_getCompiledCVODESenseFunction\n");
+    return NULL;
+  }
+
+  if ( !os->compiledCVODESenseFunction || os -> recompileSensitivity )
+  {
+    /*!!! currently not used: if TCC multiple states become possible,
+      until then this must have been compiled already within the main
+      compiled code structure */
+    /* only for calling independent of solver!!
+       function should have been compiled already */
+    if ( !ODESense_compileCVODESenseFunctions(os) )
+      return NULL;
+  }
+
+  return os->compiledCVODESenseFunction;
+}
+
+/** returns the compiled adjoint RHS ODE function for the given model */
+SBML_ODESOLVER_API CVRhsFnB ODEModel_getCompiledCVODEAdjointRHSFunction(odeModel_t *om)
+{
+  if ( !om->jacobian )
+  {
+    SolverError_error(ERROR_ERROR_TYPE,
+		      SOLVER_ERROR_CANNOT_COMPILE_SENSITIVITY_NOT_COMPUTED,
+		      "Attempting to compile adjoint RHS before " \
+		      "the Jacobian matrix is computed\n"		\
+		      "Call ODEModel_constructJacobian before calling\n" \
+		      "ODEModel_getCompiledCVODEAdjointJacobianFunction or "\
+		      "ODEModel_getCompiledCVODEAdjointRHSFunction\n");
+    return NULL;
+  }
+
+  if ( !om->compiledCVODEAdjointRhsFunction  )
+    if ( !ODEModel_compileCVODEFunctions(om) )
+      return NULL;
+
+  return om->compiledCVODEAdjointRhsFunction;
+}
+
+/** returns the compiled adjoint jacobian function for the given model */
+SBML_ODESOLVER_API CVDenseJacFnB ODEModel_getCompiledCVODEAdjointJacobianFunction(odeModel_t *om)
+{
+  if ( !om->jacobian )
+  {
+    SolverError_error(ERROR_ERROR_TYPE,
+		      SOLVER_ERROR_CANNOT_COMPILE_JACOBIAN_NOT_COMPUTED,
+		      "Attempting to compile adjoint jacobian before "\
+		      "the jacobian is computed\n"\
+		      "Call ODEModel_constructJacobian before calling\n"\
+		      "ODEModel_getCompiledCVODEAdjointJacobianFunction or "\
+		      "ODEModel_getCompiledCVODERHSFunction\n");
+    return NULL;
+  }
+
+  if ( !om->compiledCVODEAdjointJacobianFunction )
+    /* only for calling independent of solver!!
+       function should have been compiled already */
+    if ( !ODEModel_compileCVODEFunctions(om) )
+      return NULL;
+
+  return om->compiledCVODEAdjointJacobianFunction;
+}
+
+/** returns the compiled adjoint quadrature function for the given model */
+SBML_ODESOLVER_API CVQuadRhsFnB ODESense_getCompiledCVODEAdjointQuadFunction(odeSense_t *os)
+{
+  if ( !os->sensitivity )
+  {
+    SolverError_error(ERROR_ERROR_TYPE,
+		      SOLVER_ERROR_CANNOT_COMPILE_SENSITIVITY_NOT_COMPUTED,
+		      "Attempting to compile adjoint quadrature before " \
+		      "the parametric matrix is computed\n"		\
+		      "Call ODESense_constructSensitivity before calling\n" \
+		      "ODESense_getCompiledCVODEAdjointQuadFunction\n");
+    return NULL;
+  }
+
+  if ( !os->compiledCVODEAdjointQuadFunction  || os->recompileSensitivity )
+    /*!!! currently not used: if TCC multiple states become possible,
+      until then this must have been compiled already within the main
+      compiled code structure, or main must be recompiled here on
+      second integrator runs when sens was switched on */
+    /* only for calling independent of solver!!
+       function should have been compiled already */
+    if ( !ODESense_compileCVODESenseFunctions(os) )
+      return NULL;
+
+
+  return os->compiledCVODEAdjointQuadFunction;
+}
+
+/** @} */
+
+
+
+/* End of file */
diff --git a/src/odeSolver.c b/src/odeSolver.c
new file mode 100644
index 0000000..86549b2
--- /dev/null
+++ b/src/odeSolver.c
@@ -0,0 +1,996 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-10-16 18:48:01 raim>
+  $Id: odeSolver.c,v 1.48 2008/10/16 17:27:50 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Stefanie Widder
+ *     Christoph Flamm
+ *     Akira Funahashi
+ *     Stefan M�ller
+ *     Andrew Finney
+ *     Norihiro Kikuchi
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/*! \defgroup odeSolver High Level Interfaces
+    \brief This module contains high level interfaces to SOSlib, which
+    take an SBML model and integratorSettings as input and return results
+    mapped back to SBML structures.
+
+    Please see sbmlResults for interfaces to the returned result
+    structures. */
+/*@{*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifndef _WIN32
+#include <unistd.h>
+#endif
+#include <string.h>
+#include <time.h>
+
+#include <sbml/SBMLTypes.h>
+
+#include "sbmlsolver/cvodeData.h"
+#include "sbmlsolver/drawGraph.h"
+#include "sbmlsolver/modelSimplify.h"
+#include "sbmlsolver/odeModel.h"
+#include "sbmlsolver/odeSolver.h"
+#include "sbmlsolver/processAST.h"
+#include "sbmlsolver/sbml.h"
+#include "sbmlsolver/solverError.h"
+#include "sbmlsolver/variableIndex.h"
+
+static int globalizeParameter(Model_t *, const char *id, const char *rid);
+static int localizeParameter(Model_t *, const char *id, const char *rid);
+static int SBMLResults_createSens(SBMLResults_t *, cvodeData_t *);
+
+/** Solves the timeCourses for a SBML model, passed via a libSBML
+    SBMLDocument structure and according to passed integration
+    settings and returns the SBMLResults structure.
+*/
+
+SBML_ODESOLVER_API SBMLResults_t *SBML_odeSolver(SBMLDocument_t *d, cvodeSettings_t *set)
+{
+
+  SBMLDocument_t *d2 = NULL;
+  Model_t *m = NULL;
+  SBMLResults_t *results;
+  
+  /** Convert SBML Document level 1 to level 2, and
+      get the contained model   */
+  if ( SBMLDocument_getLevel(d) != 2 )
+  {
+    d2 = convertModel(d);
+    if ( d2 == NULL ) return NULL;
+    m = SBMLDocument_getModel(d2);    
+  }
+  else m = SBMLDocument_getModel(d);
+
+  if ( m == NULL )
+  {
+   if ( d2 != NULL ) SBMLDocument_free(d2);
+   return NULL;
+  }
+
+  /** Call Model_odeSolver */
+  results = Model_odeSolver(m, set);
+  
+  /** free temporary level 2 version of the document */
+  if ( d2 != NULL ) SBMLDocument_free(d2);
+  
+  return(results);
+  
+}
+
+
+/** Solves the timeCourses for a SBML model, passed via a libSBML
+    SBMLDocument structure and according to passed 
+    integration and parameter variation settings and returns
+    the SBMLResultsMatrix containing SBMLResults for each
+    varied parameter (columns) and each of its values (rows).
+*/
+
+SBML_ODESOLVER_API SBMLResultsArray_t *SBML_odeSolverBatch(SBMLDocument_t *d, cvodeSettings_t *set, varySettings_t *vs) 
+{
+
+  SBMLDocument_t *d2 = NULL;
+  Model_t *m = NULL;
+  SBMLResultsArray_t *resA;
+  
+  /** Convert SBML Document level 1 to level 2, and
+      get the contained model
+  */
+  if ( SBMLDocument_getLevel(d) != 2 )
+  {
+    d2 = convertModel(d);
+    if ( d2 == NULL ) return NULL;
+    m = SBMLDocument_getModel(d2);
+  }
+  else m = SBMLDocument_getModel(d);
+
+  if ( m == NULL )
+  {
+   if ( d2 != NULL ) SBMLDocument_free(d2);
+   return NULL;
+  }
+
+  /** Call Model_odeSolverBatch */  
+  resA = Model_odeSolverBatch(m, set, vs);
+  /** free temporary level 2 version of the document */
+  if ( d2 != NULL ) SBMLDocument_free(d2);
+  
+  return resA;
+    
+}
+
+
+/** Solves the timeCourses for a SBML model, passed via a libSBML
+    Model_t  (must be level 2 SBML!!) and according to passed
+    integration settings and returns the SBMLResults structure.
+
+*/
+
+SBML_ODESOLVER_API SBMLResults_t *Model_odeSolver(Model_t *m, cvodeSettings_t *set)
+{
+  odeModel_t *om;
+  integratorInstance_t *ii; 
+  SBMLResults_t *results;
+  
+  /** At first, ODEModel_create, attempts to construct a simplified
+     SBML model with reactions replaced by ODEs. SBML RateRules,
+     AssignmentRules,AlgebraicRules and Events are copied to the
+     simplified model. AlgebraicRules or missing mathematical
+     expressions produce fatal errors and appropriate messages. All
+     function definitions are replaced by their values or expressions
+     respectively in all remaining formulas (ie. rules and events). If
+     that conversion was successful, an internal model structure
+     (odeModel) is created, that contains indexed versions of all
+     formulae (AFM's AST_INDEX) where the index of a former AST_NAME
+     corresponds to its position in a value array (double *), that is
+     used to store current values and to evaluate AST formulae during
+     integration.
+  */
+
+  om = ODEModel_create(m);      
+  if ( om == NULL ) return NULL;
+  
+  /**
+     Second, an integratorInstance is created from the odeModel
+     and the passed cvodeSettings. If that worked out ...
+  */
+  
+  ii = IntegratorInstance_create(om, set);
+  if ( ii == NULL )
+  {
+    ODEModel_free(om);
+    return NULL;
+  }
+
+  /** .... the integrator loop can be started,
+      that invoking CVODE to move one time step and store.
+      The function will also handle events and
+      check for steady states.
+  */
+  while ( !IntegratorInstance_timeCourseCompleted(ii) )
+    if ( !IntegratorInstance_integrateOneStep(ii) )
+      break;
+  
+  /* !!! on fatals: above created structures should be freed before return
+     !!! */
+  /* RETURN_ON_FATALS_WITH(NULL);  */
+
+  /** finally, map cvode results back to SBML compartments, species
+      and parameters  */
+  results = SBMLResults_fromIntegrator(m, ii);
+
+  /* free integration data */
+  IntegratorInstance_free(ii);
+  /* free odeModel */
+  ODEModel_free(om);
+  
+  /* ... well done. */
+  return(results);
+}
+
+
+/** Solves the timeCourses for a SBML model, passed via a libSBML
+    Model_t (must be level 2 SBML!!) structure and according to passed 
+    integration and parameter variation settings and returns
+    the SBMLResultsArray containing SBMLResults for each
+    parameter combination
+*/
+
+
+SBML_ODESOLVER_API SBMLResultsArray_t *Model_odeSolverBatch(Model_t *m, cvodeSettings_t *set, varySettings_t *vs)
+{
+  int i, j; 
+  odeModel_t *om;
+  integratorInstance_t *ii;
+  variableIndex_t **vi = NULL;
+  SBMLResultsArray_t *resA;
+
+  char *local_param;
+
+
+  resA = SBMLResultsArray_allocate(vs->nrdesignpoints);
+  if ( resA == NULL ) return NULL;
+ 
+  /** At first, globalize all local (kineticLaw) parameters to be varied */
+  for ( i=0; i<vs->nrparams; i++ ) 
+    /* ** modified after suggestion by Norihiro Kikuchi ** */
+    if ( vs->rid[i] != NULL && strlen(vs->rid[i]) > 0 ) 
+      globalizeParameter(m, vs->id[i], vs->rid[i]);     
+    
+ 
+  /** Then create internal odeModel: attempts to construct a simplified
+     SBML model with reactions replaced by ODEs.
+     See comments in Model_odeSolver for details.  */
+  om = ODEModel_create(m);      
+  if ( om == NULL )
+  {
+    
+    /** localize parameters again, unfortunately the new globalized
+	parameter cannot be freed currently  */
+    for ( i=0; i<vs->nrparams; i++ )
+      /*  ** modified after suggestion by Norihiro Kikuchi ** */
+      if ( vs->rid[i] != NULL  && strlen(vs->rid[i]) > 0 ) 
+	localizeParameter(m, vs->id[i], vs->rid[i]);     
+    SBMLResultsArray_free(resA);
+    return NULL;
+  }
+ 
+  /** an integratorInstance is created from the odeModel and the passed
+     cvodeSettings. If that worked out ...  */  
+  ii = IntegratorInstance_create(om, set);
+  if ( ii == NULL )
+  {
+    
+    /** localize parameters again, unfortunately the new globalized
+	parameter cannot be freed currently  */
+    for ( i=0; i<vs->nrparams; i++ )
+      /*  ** modified after suggestion by Norihiro Kikuchi ** */
+      if ( vs->rid[i] != NULL  && strlen(vs->rid[i]) > 0 ) 
+	localizeParameter(m, vs->id[i], vs->rid[i]);     
+    SBMLResultsArray_free(resA);
+    ODEModel_free(om);
+    return NULL;
+  }
+
+  ASSIGN_NEW_MEMORY_BLOCK(vi, vs->nrparams, struct variableIndex *, NULL);
+			  
+  for ( j=0; j<vs->nrparams; j++ )
+  {
+    /* get the index for parameter i
+    ** modified after suggestion by Norihiro Kikuchi ** */ 
+    if ( vs->rid[j] != NULL  && strlen(vs->rid[j]) > 0 )
+    {
+      ASSIGN_NEW_MEMORY_BLOCK(local_param,
+			      strlen(vs->id[j]) + strlen(vs->rid[j]) + 4,
+			      char , 0);
+      sprintf(local_param, "r_%s_%s", vs->rid[j], vs->id[j]);
+      
+      vi[j] = ODEModel_getVariableIndex(om, local_param);
+      free(local_param);
+    }
+    else
+      vi[j] = ODEModel_getVariableIndex(om, vs->id[j]);
+
+    if ( vi[j] == NULL ) return NULL; /*!!! TODO : handle NULL */
+  }
+      
+  /** now, work through the passed designpoints in varySettings */
+  for ( i=0; i<vs->nrdesignpoints; i++ )
+  {
+    for ( j=0; j<vs->nrparams; j++ )
+      IntegratorInstance_setVariableValue(ii, vi[j], vs->params[i][j]);
+    
+    while ( !IntegratorInstance_timeCourseCompleted(ii) )
+      if ( !IntegratorInstance_integrateOneStep(ii) )
+	break;
+    /*!!! TODO : on fatals: above created structures should be freed
+       !!before return ! */
+    /* RETURN_ON_FATALS_WITH(NULL); */
+        
+    /** map cvode results back to SBML compartments, species and
+	parameters  */
+    resA->results[i] = SBMLResults_fromIntegrator(m, ii);
+    IntegratorInstance_reset(ii);
+
+  }
+  
+  /* free variableIndex, used for setting values */
+  for ( j=0; j<vs->nrparams; j++ )
+    VariableIndex_free(vi[j]);
+  free(vi);
+
+  /** localize parameters again, unfortunately the new globalized
+     parameter cannot be freed currently  */
+  for ( i=0; i<vs->nrparams; i++ )
+    /*  ** modified after suggestion by Norihiro Kikuchi ** */
+    if ( vs->rid[i] != NULL  && strlen(vs->rid[i]) > 0 ) 
+      localizeParameter(m, vs->id[i], vs->rid[i]);     
+
+ 
+  /* free integration data */
+  IntegratorInstance_free(ii);
+  /* free odeModel */
+  ODEModel_free(om);
+  /* ... well done. */
+  return(resA);
+
+}
+
+static int globalizeParameter(Model_t *m, const char *id, const char *rid)
+{
+  unsigned int i;
+  int found;
+  Reaction_t *r;
+  KineticLaw_t *kl;
+  Parameter_t *p, *p_global;
+  ASTNode_t *math;
+  char *newname;
+ 
+  r = Model_getReactionById(m, rid);
+  
+  if ( r == NULL ) return(0);
+  
+  kl = Reaction_getKineticLaw(r);
+  math = (ASTNode_t *)KineticLaw_getMath(kl);
+
+  ASSIGN_NEW_MEMORY_BLOCK(newname, strlen(id) + strlen(rid) + 4, char , 0);
+  sprintf(newname, "r_%s_%s", rid, id);
+  AST_replaceNameByName(math, id,  (const char *) newname);
+
+  found = 0;
+  
+  for ( i=0; i<KineticLaw_getNumParameters(kl); i++ )
+  {
+    p = KineticLaw_getParameter(kl, i);
+    if ( strcmp(Parameter_getId(p), id) == 0 )
+    {
+      p_global = Parameter_clone(p);
+      Parameter_setId(p_global, newname);
+      Model_addParameter(m, p_global);
+      Parameter_free(p_global);
+      found = 1;
+    }
+  }
+  free(newname);  
+  return (found);
+}
+
+static int localizeParameter(Model_t *m, const char *id, const char *rid)
+{
+  int found;
+  Reaction_t *r;
+  KineticLaw_t *kl;
+  ListOf_t     *pl;
+  Parameter_t *p;
+  ASTNode_t *math;
+  char *newname;
+  
+  r = Model_getReactionById(m, rid);
+  
+  if ( r == NULL ) return 0;
+  
+  kl = Reaction_getKineticLaw(r);
+  math = (ASTNode_t *)KineticLaw_getMath(kl);  
+  ASSIGN_NEW_MEMORY_BLOCK(newname, strlen(id) + strlen(rid) + 4, char , 0);
+  sprintf(newname, "r_%s_%s", rid, id);
+  AST_replaceNameByName(math, (const char *) newname, id);
+
+  /* just freeing the last parameter, one for each `rid',
+     only if the globalized parameter is present */
+  found = 0;
+  if ( Model_getParameterById(m, newname) != NULL )
+  {
+    found = 1;
+    pl = Model_getListOfParameters(m);
+    p = (Parameter_t *) ListOf_remove(pl, ListOf_size(pl) - 1);
+    Parameter_free(p);
+  }  
+
+  free(newname);
+  return found;
+
+}
+
+/** @} */
+
+
+/*! \addtogroup sbmlResults */
+/*@{*/
+
+/** Maps the integration results from internal data structures
+    back to SBML structures (compartments, species, parameters
+    and reaction fluxes)
+*/
+
+
+SBML_ODESOLVER_API SBMLResults_t *SBMLResults_fromIntegrator(Model_t *m, integratorInstance_t *ii)
+{
+  unsigned int i;
+  int j, k, n;
+  int flag;
+  Reaction_t *r;
+  KineticLaw_t *kl;
+  ASTNode_t **kls;
+  timeCourseArray_t *tcA;
+  timeCourse_t *tc;
+  SBMLResults_t *sbml_results;
+
+  odeModel_t *om = ii->om;
+  cvodeData_t *data = ii->data;
+  cvodeResults_t *cv_results = ii->results;
+
+  /* check if data is available */
+  if ( data == NULL ) return(NULL);
+  else if ( cv_results == NULL ) return(NULL);
+
+  sbml_results = SBMLResults_create(m, cv_results->nout+1);
+
+  /* Allocating temporary kinetic law ASTs, for evaluation of fluxes */
+
+  ASSIGN_NEW_MEMORY_BLOCK(kls, Model_getNumReactions(m), ASTNode_t *, NULL);
+
+  for ( i=0; i<Model_getNumReactions(m); i++ )
+  {
+    r = Model_getReaction(m, i);
+    kl = Reaction_getKineticLaw(r);
+    kls[i] = copyAST(KineticLaw_getMath(kl));
+    AST_replaceNameByParameters(kls[i], KineticLaw_getListOfParameters(kl));
+    AST_replaceConstants(m, kls[i]);
+  }
+  
+  
+  /*  filling results for each calculated timepoint.  */
+  for ( n=0; n<sbml_results->time->timepoints; n++ )
+  {    
+    /* writing time steps */
+    sbml_results->time->values[n] = cv_results->time[n];
+    
+    /* updating time and values in cvodeData_t *for calculations */
+    data->currenttime = cv_results->time[n];
+    for ( j=0; j<data->nvalues; j++ ) data->value[j] = cv_results->value[j][n];
+
+    /* filling time courses for SBML species  */
+    tcA = sbml_results->species;  
+    for ( j=0; j<tcA->num_val; j++ )
+    {
+      tc = tcA->tc[j];
+      /* search in cvodeData_t for values */
+      for ( k=0; k<data->nvalues; k++ )
+	if ( (strcmp(tc->name, om->names[k]) == 0) )
+	  tc->values[n] = cv_results->value[k][n];
+    }
+    
+    /* filling variable compartment time courses */
+    tcA = sbml_results->compartments;  
+    for ( j=0; j<tcA->num_val; j++ )
+    {
+      tc = tcA->tc[j];
+      /* search in cvodeData_t for values */
+      for ( k=0; k<data->nvalues; k++ )
+	if ( (strcmp(tc->name, om->names[k]) == 0) )
+	  tc->values[n] = cv_results->value[k][n];
+    }         
+
+    /* filling variable parameter time courses */
+    tcA = sbml_results->parameters;  
+    for ( j=0; j<tcA->num_val; j++ )
+    {
+      tc = tcA->tc[j];
+      /* search in cvodeData_t for values */
+      for ( k=0; k<data->nvalues; k++ ) 
+	if ( (strcmp(tc->name, om->names[k]) == 0) ) 
+	  tc->values[n] = cv_results->value[k][n];
+    }
+
+    /* filling reaction flux time courses */
+    tcA = sbml_results->fluxes;
+    for ( j=0; j<tcA->num_val; j++ )
+    {
+      tc = tcA->tc[j];
+      tc->values[n] = evaluateAST(kls[j], data);
+    }
+
+  }
+
+  /* freeing temporary kinetic law ASTs */
+  for ( i=0; i<Model_getNumReactions(m); i++ )
+    ASTNode_free(kls[i]);
+  free(kls);
+
+  /* filling sensitivities */
+  flag = 0;
+  if ( cv_results->nsens > 0 )
+    flag = SBMLResults_createSens(sbml_results, data);
+  if ( flag == 0 )
+    sbml_results->nsens = 0;
+   
+  return(sbml_results);
+}
+
+static int SBMLResults_createSens(SBMLResults_t *Sres, cvodeData_t *data)
+{
+  int i, j, k;
+  odeModel_t *om = data->model;
+  odeSense_t *os = data->os;
+  cvodeResults_t *res = data->results;
+  timeCourse_t *tc;
+
+  Sres->nsens = res->nsens;
+  
+  ASSIGN_NEW_MEMORY_BLOCK(Sres->param, res->nsens, char *, 0);  
+  for ( i=0; i<res->nsens; i++ )
+  {
+    ASSIGN_NEW_MEMORY_BLOCK(Sres->param[i],
+			    strlen(om->names[os->index_sens[i]]+1), char, 0);
+    sprintf(Sres->param[i], "%s", om->names[os->index_sens[i]]);
+  }
+  for ( i=0; i<res->neq; i++ )
+  {
+    tc = SBMLResults_getTimeCourse(Sres, om->names[i]);
+    ASSIGN_NEW_MEMORY_BLOCK(tc->sensitivity, res->nsens, double *, 0);
+    for ( j=0; j<res->nsens; j++ )
+    {
+      ASSIGN_NEW_MEMORY_BLOCK(tc->sensitivity[j], res->nout, double, 0);
+      for ( k=0; k<res->nout; k++ )
+	tc->sensitivity[j][k] = res->sensitivity[i][j][k];
+    } 
+  }
+  return(1);
+}
+
+/** @} */
+
+/*! \defgroup varySettings Parameter Variation Settings
+    \ingroup odeSolver
+    
+    \brief Create the varySettings structure with a series of
+    parameter values used for the batch functions
+    
+*/
+/*@{*/
+
+
+/** Allocate varySettings structure for settings for parameter
+    variation batch runs: nrparams is the number of parameters to be
+    varied, and nrdesignpoints is the number of values to be tested
+    for each parameter.
+*/
+/* NEW: rows:designpoints, columns:parameters */
+SBML_ODESOLVER_API varySettings_t *VarySettings_allocate(int nrparams, int nrdesignpoints)
+{
+  int i;
+  varySettings_t *vs;
+  ASSIGN_NEW_MEMORY(vs, struct varySettings, NULL);
+  ASSIGN_NEW_MEMORY_BLOCK(vs->id, nrparams, char *, NULL);
+  ASSIGN_NEW_MEMORY_BLOCK(vs->rid, nrparams, char *, NULL);
+  ASSIGN_NEW_MEMORY_BLOCK(vs->params, nrdesignpoints, double *, NULL);
+  for ( i=0; i<nrdesignpoints; i++ ) 
+    ASSIGN_NEW_MEMORY_BLOCK(vs->params[i], nrparams, double, NULL);
+
+  vs->nrdesignpoints = nrdesignpoints;
+  vs->nrparams = nrparams;
+  /* set conuter to 0, used in VarySettings_addParameter/VarySettings_addDesignPoint */
+  vs->cnt_params = 0;
+  vs->cnt_points = 0;
+  return(vs);
+}
+/** Add a parameter to the varySettings;
+    returns number of already set parameters for success,
+    or 0 for failure, please check SolverError for errors.
+
+    For local (reaction/kineticLaw)
+    parameters, the reaction id must be passed as `rid'. For global
+    parameters `rid' must be passed as NULL.
+
+*/
+
+SBML_ODESOLVER_API int VarySettings_addParameter(varySettings_t *vs,
+												 const char *id, const char *rid)
+{
+  if ( vs->cnt_params >= vs->nrparams )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		SOLVER_ERROR_VARY_SETTINGS,
+		"VarySettings_addParameter:\t"
+		"Allocated parameter array already full, #%d parameters",
+		vs->cnt_params);
+    return 0;
+  }
+
+  VarySettings_setName(vs, vs->cnt_params, id, rid);
+  /* count and return already filled parametervalues */
+  return ++vs->cnt_params;
+}
+
+/** Adds values for all parameters to be varied
+    for the next design point;
+    returns number of already set design points for success,
+    or 0 for failure, please check SolverError for errors.
+*/
+SBML_ODESOLVER_API int VarySettings_addDesignPoint(varySettings_t *vs,
+												   const double *params)
+{
+  int i;
+  if ( vs->cnt_points >= vs->nrdesignpoints )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		SOLVER_ERROR_VARY_SETTINGS,
+		"VarySettings_addDesignPoint:\t"
+		"Allocated design point array already full, #%d design points",
+		vs->cnt_points);
+    return 0;
+  }
+
+  for ( i=0; i<vs->nrparams; i++ )
+    vs->params[vs->cnt_points][i] = params[i];
+  
+  return ++vs->cnt_points;
+}
+
+
+
+/** Get the name (SBML ID) of the ith parameterr;
+    returns NULL for failure, please see SolverError messages.
+
+    Passed values:      \n
+    0 <= i < nrparams   \n
+    as used for varySettings_allocate
+*/
+
+SBML_ODESOLVER_API const char *VarySettings_getName(const varySettings_t *vs, int i)
+{   
+  if ( i >= vs->nrparams )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		SOLVER_ERROR_VARY_SETTINGS,
+		"VarySettings_getName:\t"
+		"Requested Value %d not found in varySettings"
+		" # parameters: %d",
+		i, vs->nrparams);
+    return NULL;
+  }
+  return((const char *) vs->id[i]);
+}
+
+
+
+/** Get the name (SBML ID) of the reaction of the ith parameter;
+    returns NULL for failure, please see SolverError messages.
+
+    Passed values:      \n
+    0 <= i < nrparams   \n
+    as used for varySettings_allocate.
+    Returns NULL, if the parameter is global.
+*/
+
+SBML_ODESOLVER_API const char *VarySettings_getReactionName(const varySettings_t *vs, int i)
+{   
+  if ( i >= vs->nrparams )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_VARY_SETTINGS,
+		      "VarySettings_getReactionName:\t"
+		      "Requested Value %d not found in varySettings"
+		      " # parameters: %d",
+		      i, vs->nrparams);
+    return NULL;
+  }
+  return((const char *) vs->rid[i]);
+}
+
+
+
+/** Set the id (SBML ID) of the ith parameter;
+    returns 1 for success and returns for 0 for failure,
+    please check SolverError for errors.
+
+    Passed values: \n
+    0 <= i < nrparams  \n
+    as used for varySettings_allocate.  \n
+    `rid' is the SBML reaction id, if a local parameter shall
+    be varied. For global parameters rid must be passed as NULL.
+*/
+
+SBML_ODESOLVER_API int VarySettings_setName(varySettings_t *vs, int i,
+											const char *id, const char *rid)
+{
+
+  if ( i >= vs->nrparams )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_VARY_SETTINGS,
+		      "VarySettings_setName:\t"
+		      "Requested value %d not found in varySettings"
+		      " # parameters: %d. ID %s (reaction %s) can't be set.",
+		      i, vs->nrparams, id, rid);
+    return 0;
+  }
+
+  /* free if parameter nr. i has already been set */
+  if ( vs->id[i] != NULL )  free(vs->id[i]);
+  if ( vs->rid[i] != NULL ) free(vs->rid[i]);
+  
+  /* setting parameter reaction id: local parameters will be
+     `globalized' in the input model */
+  if ( rid != NULL  && strlen(rid) > 0 )
+  {
+    ASSIGN_NEW_MEMORY_BLOCK(vs->rid[i], strlen(rid)+1, char, 0);
+    sprintf(vs->rid[i], "%s", rid);    
+  }
+  else vs->rid[i] = NULL;
+
+  ASSIGN_NEW_MEMORY_BLOCK(vs->id[i], strlen(id)+1, char, 0);
+  sprintf(vs->id[i], "%s", id);
+  
+  return(1);
+}
+
+/** Get the jth value of the ith parameter;
+    WARNING: returns 0 for failure,
+    please check SolverError for errors.
+
+    Passed values: \n
+    0 <= i < nrdesignpoints \n
+    0 <= j < nrparams  and \n
+    as used for varySettings_allocate
+*/
+
+SBML_ODESOLVER_API double VarySettings_getValue(varySettings_t *vs, int i, int j)
+{
+  if ( i >= vs->nrdesignpoints )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_VARY_SETTINGS,
+		      "VarySettings_getValue:\t"
+		      "Requested design points #%d not found in varySettings"
+		      " # design points: %d",
+		      i, vs->nrdesignpoints);
+    return 0;
+  }
+
+  if ( j >= vs->nrparams )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_VARY_SETTINGS,
+		      "VarySettings_getValue:\t"
+		      "Requested value #%d not found in varySettings"
+		      " # parameters: %d",
+		      i, vs->nrparams);
+   return 0;
+  }
+  
+  return(vs->params[i][j]);
+}
+
+
+/** Set the jth value of the ith parameter,
+    returns 1 for success, 0 for failure
+
+    where \n
+    0 <= i < nrdesignpoints \n
+    0 <= j < nrparams  and \n
+    as used for varySettings_allocate
+*/
+
+SBML_ODESOLVER_API int VarySettings_setValue(varySettings_t *vs, int i, int j, double value)
+{
+  if ( i >= vs->nrdesignpoints )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_VARY_SETTINGS,
+		      "VarySettings_setValue:\t"
+		      "Requested design points #%d not found in varySettings"
+		      " # design points: %d",
+		      i, vs->nrdesignpoints);
+    return 0;
+  }
+
+  if ( j >= vs->nrparams )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_VARY_SETTINGS,
+		      "VarySettings_setValue:\t"
+		      "Requested value %d not found in varySettings"
+		      " # parameters: %d",
+		      i, vs->nrparams);
+    return 0;
+  }
+  vs->params[i][j] = value;
+  return 1;
+}
+/** Get the jth value of the ith parameter,
+    WARNING: returns 0 for failure,
+    please check SolverError for errors
+
+    where \n
+    0 <= i < nrdesignpoints \n
+    0 <= j < nrparams  and \n
+    as used for varySettings_allocate
+*/
+
+SBML_ODESOLVER_API double VarySettings_getValueByID(varySettings_t *vs, int i,
+													const char *id, const char *rid)
+{
+  int j;
+  if ( i >= vs->nrdesignpoints )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_VARY_SETTINGS,
+		      "VarySettings_getValueByID:\t"
+		      "Requested design points #%d not found in varySettings"
+		      " # design points: %d",
+		      i, vs->nrdesignpoints);
+    return 0;
+  }
+  
+  for ( j=0; j<vs->nrparams; j++ )
+  {
+	  if (strcmp(id, vs->id[j]) == 0) {
+		  if (rid == NULL) {
+			  if (vs->rid[j] == NULL) break;
+		  } else {
+			  if (vs->rid[j] != NULL && strcmp(rid, vs->rid[j]) == 0) break;
+		  }
+	  }
+  }
+  if ( j == vs->nrparams )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_VARY_SETTINGS,
+		      "VarySettings_getValueByID:\t"
+		      "Requested ID %s (reaction %s) not found in varySettings",
+		      id, rid);
+    return 0;
+  }
+  return(vs->params[i][j]);
+}
+
+
+/** Set the jth value of the ith parameter,
+    returns 1 for success, 0 for failure
+
+    Passed values: \n
+    0 <= i < nrdesignpoints \n
+    as used for varySettings_allocate and \n
+    id:  SBML ID of parameter \n
+    rid: SBML ID of reaction for local parameters\n
+*/
+
+SBML_ODESOLVER_API int VarySettings_setValueByID(varySettings_t *vs, int i,
+												 const char *id, const char *rid,
+												 double value)
+{
+  int j;
+  if ( i >= vs->nrdesignpoints )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_VARY_SETTINGS,
+		      "VarySettings_setValueByID:\t"
+		      "Requested design points #%d not found in varySettings"
+		      " # design points: %d",
+		      i, vs->nrdesignpoints);
+    return 0;
+  }
+  
+  for ( j=0; j<vs->nrparams; j++ )
+  {
+	  if (strcmp(id, vs->id[j]) == 0) {
+		  if (rid == NULL) {
+			  if (vs->rid[j] == NULL) break;
+		  } else {
+			  if (vs->rid[j] != NULL && strcmp(rid, vs->rid[j]) == 0) break;
+		  }
+	  }
+  }
+  if ( j == vs->nrparams )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_VARY_SETTINGS,
+		      "VarySettings_setValueByID:\t"
+		      "Requested ID %s (reaction %s) not found in varySettings",
+		      id, rid);
+    return 0;
+  }
+  vs->params[i][j] = value;
+  return 1;
+}
+
+
+
+/** Print all parameters and their values in varySettings
+*/
+
+SBML_ODESOLVER_API void VarySettings_dump(varySettings_t *vs)
+{
+  int i, j;
+  printf("\n");
+  printf("Design points for batch integration (#params=%i, #points=%i):\n",
+	 vs->nrparams, vs->nrdesignpoints);
+
+  printf("Run");
+  for ( j=0; j<vs->nrparams; j++ )
+  {
+    printf("\t%s", vs->id[j]);
+  }
+  printf("\n");
+  
+  for ( i=0; i<vs->nrdesignpoints; i++ )
+  {
+    printf("#%d:", i);
+    for ( j=0; j<vs->nrparams; j++ )
+    {
+       printf("\t%.3f", vs->params[i][j]);
+    }
+    printf("\n");
+  }
+  printf("\n");
+}
+
+
+/** Frees varySettings structure
+*/
+SBML_ODESOLVER_API void VarySettings_free(varySettings_t *vs)
+{
+  int i;
+
+  if (!vs) return;
+  for ( i=0; i<vs->nrparams; i++ )
+  {
+    free(vs->id[i]);
+    free(vs->rid[i]);
+  }
+  free(vs->id);
+  free(vs->rid);
+  
+  for ( i=0; i<vs->nrdesignpoints; i++ )
+  {
+    free(vs->params[i]);
+  }
+  free(vs->params);
+  free(vs);    
+}
+
+
+
+
+
+/*\@} */
+
+
+
+/* End of file */
diff --git a/src/private/data.c b/src/private/data.c
new file mode 100644
index 0000000..c4e91ea
--- /dev/null
+++ b/src/private/data.c
@@ -0,0 +1,33 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "private/data.h"
+
+#include "sbmlsolver/util.h"
+
+#include <errno.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+double scan_double(const char *str)
+{
+  char *endp;
+  double v;
+
+  errno = 0;
+  v = strtod(str, &endp);
+  if (str == endp) { /* no conversion is performed */
+    fatal(stderr, "could not convert %s to double", str);
+  }
+  if (errno != 0) {
+    if (v == HUGE_VAL || v == -HUGE_VAL) {
+      fatal(stderr, "overflow found: %s", str);
+    } else if (v == 0) {
+      fatal(stderr, "underflow found: %s", str);
+    }
+  }
+  return v;
+}
diff --git a/src/private/data.h b/src/private/data.h
new file mode 100644
index 0000000..7261d26
--- /dev/null
+++ b/src/private/data.h
@@ -0,0 +1,7 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#ifndef PRIVATE_DATA_H_
+#define PRIVATE_DATA_H_
+
+double scan_double(const char *str);
+
+#endif
diff --git a/src/private/error.c b/src/private/error.c
new file mode 100644
index 0000000..89a0cbd
--- /dev/null
+++ b/src/private/error.c
@@ -0,0 +1,15 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "private/error.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+void report_error_and_die(const char *message)
+{
+  fprintf(stderr, "%s\n", message);
+  exit(EXIT_FAILURE);
+}
diff --git a/src/private/error.h b/src/private/error.h
new file mode 100644
index 0000000..5459e5c
--- /dev/null
+++ b/src/private/error.h
@@ -0,0 +1,8 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#ifndef PRIVATE_ERROR_H_
+#define PRIVATE_ERROR_H_
+
+/** This function will not return. */
+void report_error_and_die(const char *message);
+
+#endif
diff --git a/src/private/macro.h b/src/private/macro.h
new file mode 100644
index 0000000..525f63f
--- /dev/null
+++ b/src/private/macro.h
@@ -0,0 +1,7 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#ifndef PRIVATE_MACRO_H_
+#define PRIVATE_MACRO_H_
+
+#define NUMBER_OF_ELEMENTS(x) (sizeof(x)/sizeof(x[0]))
+
+#endif
diff --git a/src/processAST.c b/src/processAST.c
new file mode 100644
index 0000000..af99f54
--- /dev/null
+++ b/src/processAST.c
@@ -0,0 +1,2312 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-10-13 16:21:41 raim>
+  $Id: processAST.c,v 1.65 2008/10/16 17:25:40 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Stefan M�ller
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/*! \defgroup processAST Formula Processing: f(x), df/dx
+  \ingroup symbolic
+  \brief This module contains all functions for evaluation of and
+  symbolic operations on formulae represented as libSBML
+  Abstract Syntax Trees (AST).
+
+  These functions are used both for numerical and symbolic analysis
+
+*/
+/*@{*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include <sbml/SBMLTypes.h>
+
+/* System specific definitions,
+   created by configure script */
+#ifndef _WIN32
+#include "config.h"
+#endif
+
+#include "sbmlsolver/processAST.h"
+#include "sbmlsolver/ASTIndexNameNode.h"
+#include "sbmlsolver/solverError.h"
+
+/* Helper Macros to get the second or the third child
+   of an Abstract Syntax Tree */
+#define child2(x,y,z)  ASTNode_getChild(ASTNode_getChild(x,y),z)
+#define child3(x,y,z,w) ASTNode_getChild(ASTNode_getChild(ASTNode_getChild(x,y),z),w)
+
+/* local functions  */
+
+static int user_defined(ASTNode_t *node);
+static int zero(ASTNode_t *f);
+static int one(ASTNode_t *f); 
+static ASTNode_t *ASTNode_cutRoot(ASTNode_t *old);
+
+/* ------------------------------------------------------------------------ */
+
+/** writes the given AST to standard out.  The string 'context'
+    followed by a space is output before the AST
+*/
+void AST_dump(const char *context, ASTNode_t *node)
+{
+  char *buffer = SBML_formulaToString(node);
+  printf("%s %s\n", context, buffer);
+  free(buffer);
+}
+
+/** Copies the passed AST, including potential SOSlib ASTNodeIndex, and
+    returns the copy.
+    Now this function is equivalent to ASTNode_deepCopy() because
+    the index is stored as its user data.
+*/
+
+SBML_ODESOLVER_API ASTNode_t *copyAST(const ASTNode_t *f)
+{
+	return ASTNode_deepCopy(f);
+}
+
+/* ------------------------------------------------------------------------ */
+
+static ASTNode_t *getDerivArccsc(ASTNode_t *f, char *x)
+{
+  /** f(x)=arccsc(a(x)) => f' = - a' / (abs(a) * sqrt(a^2 - 1)) */
+
+  ASTNode_t *f0;
+  ASTNode_t *g, *g0, *g1, *g10, *g11, *g111, *g1110, *g1111;
+
+  f0 = ASTNode_getChild(f, 0);
+
+  g = ASTNode_create();
+  ASTNode_setType(g, AST_DIVIDE);
+
+  g0 = ASTNode_create();
+  ASTNode_addChild(g, g0);
+  ASTNode_setType(g0, AST_MINUS);
+  ASTNode_addChild(g0, differentiateAST(f0, x));
+
+  g1 = ASTNode_create();
+  ASTNode_addChild(g, g1);
+  ASTNode_setType(g1, AST_TIMES);
+
+  g10 = ASTNode_create();
+  ASTNode_addChild(g1, g10);
+  ASTNode_setType(g10, AST_FUNCTION_ABS);
+  ASTNode_addChild(g10, copyAST(f0));
+
+  g11 = ASTNode_create();
+  ASTNode_addChild(g1, g11);
+  ASTNode_setType(g11, AST_FUNCTION_ROOT);
+  ASTNode_addChild(g11, ASTNode_create());
+  ASTNode_setInteger(ASTNode_getChild(g11, 0), 2);
+
+  g111 = ASTNode_create();
+  ASTNode_addChild(g11, g111);
+  ASTNode_setType(g111, AST_MINUS);
+
+  g1110 = ASTNode_create();
+  ASTNode_addChild(g111, g1110);
+  ASTNode_setType(g1110, AST_POWER);
+  ASTNode_addChild(g1110, copyAST(f0));
+  ASTNode_addChild(g1110, ASTNode_create());
+  ASTNode_setInteger(ASTNode_getChild(g1110, 1), 2);
+
+  g1111 = ASTNode_create();
+  ASTNode_addChild(g111, g1111);
+  ASTNode_setInteger(g1111, 1);
+
+  return g;
+}
+
+static ASTNode_t *getDerivArccsch(ASTNode_t *f, char *x)
+{
+  /** f(x)=arccsch(a(x)) => f' = - a' / (a^2 * sqrt(1 + 1/a^2)) */
+
+  ASTNode_t *f0;
+  ASTNode_t *p2a, *p2b;
+  ASTNode_t *g, *g0, *g1, *g11, *g111, *g1111;
+
+  f0 = ASTNode_getChild(f, 0);
+
+  p2a = ASTNode_create();
+  ASTNode_setType(p2a, AST_POWER);
+  ASTNode_addChild(p2a, copyAST(f0));
+  ASTNode_addChild(p2a, ASTNode_create());
+  ASTNode_setInteger(ASTNode_getChild(p2a, 1), 2);
+
+  p2b = copyAST(p2a);
+
+  g = ASTNode_create();
+  ASTNode_setType(g, AST_DIVIDE);
+
+  g0 = ASTNode_create();
+  ASTNode_addChild(g, g0);
+  ASTNode_setType(g0, AST_MINUS);
+  ASTNode_addChild(g0, differentiateAST(f0, x));
+
+  g1 = ASTNode_create();
+  ASTNode_addChild(g, g1);
+  ASTNode_setType(g1, AST_TIMES);
+  ASTNode_addChild(g1, p2a);
+
+  g11 = ASTNode_create();
+  ASTNode_addChild(g1, g11);
+  ASTNode_setType(g11, AST_FUNCTION_ROOT);
+  ASTNode_addChild(g11, ASTNode_create());
+  ASTNode_setInteger(ASTNode_getChild(g11, 0), 2);
+
+  g111 = ASTNode_create();
+  ASTNode_addChild(g11, g111);
+  ASTNode_setType(g111, AST_PLUS);
+  ASTNode_addChild(g111, ASTNode_create());
+  ASTNode_setInteger(ASTNode_getChild(g111, 0), 1);
+
+  g1111 = ASTNode_create();
+  ASTNode_addChild(g111, g1111);
+  ASTNode_setType(g1111, AST_DIVIDE);
+  ASTNode_addChild(g1111, ASTNode_create());
+  ASTNode_setInteger(ASTNode_getChild(g1111, 0), 1);
+  ASTNode_addChild(g1111, p2b);
+
+  return g;
+}
+
+static ASTNode_t *getDerivArcsec(ASTNode_t *f, char *x)
+{
+  /** f(x)=arcsec(a(x)) => f' = - a' / (a^2 * sqrt(1 - 1/a^2)) */
+
+  ASTNode_t *f0;
+  ASTNode_t *p2a, *p2b;
+  ASTNode_t *g, *g0, *g1, *g11, *g111, *g1111;
+
+  f0 = ASTNode_getChild(f, 0);
+
+  p2a = ASTNode_create();
+  ASTNode_setType(p2a, AST_POWER);
+  ASTNode_addChild(p2a, copyAST(f0));
+  ASTNode_addChild(p2a, ASTNode_create());
+  ASTNode_setInteger(ASTNode_getChild(p2a, 1), 2);
+
+  p2b = copyAST(p2a);
+
+  g = ASTNode_create();
+  ASTNode_setType(g, AST_DIVIDE);
+
+  g0 = ASTNode_create();
+  ASTNode_addChild(g, g0);
+  ASTNode_setType(g0, AST_MINUS);
+  ASTNode_addChild(g0, differentiateAST(f0, x));
+
+  g1 = ASTNode_create();
+  ASTNode_addChild(g, g1);
+  ASTNode_setType(g1, AST_TIMES);
+  ASTNode_addChild(g1, p2a);
+
+  g11 = ASTNode_create();
+  ASTNode_addChild(g1, g11);
+  ASTNode_setType(g11, AST_FUNCTION_ROOT);
+  ASTNode_addChild(g11, ASTNode_create());
+  ASTNode_setInteger(ASTNode_getChild(g11, 0), 2);
+
+  g111 = ASTNode_create();
+  ASTNode_addChild(g11, g111);
+  ASTNode_setType(g111, AST_MINUS);
+  ASTNode_addChild(g111, ASTNode_create());
+  ASTNode_setInteger(ASTNode_getChild(g111, 0), 1);
+
+  g1111 = ASTNode_create();
+  ASTNode_addChild(g111, g1111);
+  ASTNode_setType(g1111, AST_DIVIDE);
+  ASTNode_addChild(g1111, ASTNode_create());
+  ASTNode_setInteger(ASTNode_getChild(g1111, 0), 1);
+  ASTNode_addChild(g1111, p2b);
+
+  return g;
+}
+
+static ASTNode_t *getDerivArcsech(ASTNode_t *f, char *x)
+{
+  /** f(x)=arcsech(a(x)) => f' = a' * (sqrt((1-a)/(1+a)) / (a * (a-1)))
+   */
+
+  ASTNode_t *f0;
+  ASTNode_t *g, *g1, *g10, *g11, *g101, *g1010, *g1011, *g111;
+
+  f0 = ASTNode_getChild(f, 0);
+
+  g = ASTNode_create();
+  ASTNode_setType(g, AST_TIMES);
+  ASTNode_addChild(g, differentiateAST(f0, x));
+
+  g1 = ASTNode_create();
+  ASTNode_addChild(g, g1);
+  ASTNode_setType(g1, AST_DIVIDE);
+
+  g10 = ASTNode_create();
+  ASTNode_addChild(g1, g10);
+  ASTNode_setType(g10, AST_FUNCTION_ROOT);
+  ASTNode_addChild(g10, ASTNode_create());
+  ASTNode_setInteger(ASTNode_getChild(g10, 0), 2);
+
+  g101 = ASTNode_create();
+  ASTNode_addChild(g10, g101);
+  ASTNode_setType(g101, AST_DIVIDE);
+
+  g1010 = ASTNode_create();
+  ASTNode_addChild(g101, g1010);
+  ASTNode_setType(g1010, AST_MINUS);
+  ASTNode_addChild(g1010, ASTNode_create());
+  ASTNode_setInteger(ASTNode_getChild(g1010, 0), 1);
+  ASTNode_addChild(g1010, copyAST(f0));
+
+  g1011 = ASTNode_create();
+  ASTNode_addChild(g101, g1011);
+  ASTNode_setType(g1011, AST_PLUS);
+  ASTNode_addChild(g1011, ASTNode_create());
+  ASTNode_setInteger(ASTNode_getChild(g1011, 0), 1);
+  ASTNode_addChild(g1011, copyAST(f0));
+
+  g11 = ASTNode_create();
+  ASTNode_addChild(g1, g11);
+  ASTNode_setType(g11, AST_TIMES);
+  ASTNode_addChild(g11, copyAST(f0));
+
+  g111 = ASTNode_create();
+  ASTNode_addChild(g11, g111);
+  ASTNode_setType(g111, AST_MINUS);
+  ASTNode_addChild(g111, copyAST(f0));
+  ASTNode_addChild(g111, ASTNode_create());
+  ASTNode_setInteger(ASTNode_getChild(g111, 1), 1);
+
+  return g;
+}
+
+/** Returns the derivative f' of the passed formula f with respect to
+    the passed variable x, using basic differentiation rules.
+*/
+
+SBML_ODESOLVER_API ASTNode_t *differentiateAST(ASTNode_t *f, char *x)
+{
+  unsigned int i, j, childnum;
+  int found;
+  ASTNodeType_t type;
+  ASTNode_t *fprime, *helper, *simple;
+  ASTNode_t *help_1, *help_2, *help_3;
+  ASTNode_t *prod, *sum, *tmp;
+  List_t *list;
+  char *fname, *dfname;
+  
+  fprime = ASTNode_create();
+
+  /** VARIABLES */
+  
+  /** check if variable x is part of f(x): if not f' = 0 */  
+  found = 0;
+  list = ASTNode_getListOfNodes(f, (ASTNodePredicate) user_defined);
+  for ( i=0; i<List_size(list); i++ )
+    if ( strcmp(ASTNode_getName(List_get(list, i)), x) == 0 ) 
+      found = 1;
+  List_free(list);
+
+  if ( found == 0 )
+  {
+    ASTNode_setReal(fprime, 0.0);
+    return fprime;
+  }
+
+  /* helpful information used below */
+  type = ASTNode_getType(f);
+  childnum = ASTNode_getNumChildren(f);
+
+  /* DISTINCTION OF CASES */
+
+  /* if the ASTNode is a Name node it must be the variable x because  
+     other name node would have been catched above; the same is true
+     for or a Constant nodes (Pi, E, TRUE, FALSE) */
+  /** NAME: f(x)=x  =>  f'(x)=1.0*/
+
+
+ if ( ASTNode_isName(f) )
+ {
+  if ( ASTNode_isSetData(f)  ) 
+    ASTNode_setReal(fprime, 0.0); /* it's observation data */ 
+  else 
+    ASTNode_setReal(fprime, 1.0); /* is variable, and not observation data */
+ }
+    
+
+  /** OPERATORS */
+  else if ( ASTNode_isOperator(f) || type==AST_FUNCTION_POWER )
+  {
+    switch(type)
+    {
+    case AST_PLUS:
+      /** f(x)=a(x)+b(x) => f'(x) = a' + b' */
+      ASTNode_setType(fprime, AST_PLUS);
+      for ( i=0; i<childnum; i++ ) 
+	ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f, i),x));
+      break;
+    case AST_MINUS:
+      /** f(x)=a(x)-b(x) => f'(x) = a' - b' */
+      ASTNode_setType(fprime, AST_MINUS);
+      for ( i=0; i<childnum; i++ ) 
+	ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f, i),x));
+      break;
+    case AST_TIMES:
+      /** catch n-ary operators with operand number != 2,
+	  and decompose in simplifyAST */
+      if ( ASTNode_getNumChildren(f) != 2 )
+      {
+	helper = simplifyAST(f); /* decomposes the n-ary operator */
+	ASTNode_free(fprime);
+	fprime = differentiateAST(helper, x);
+	ASTNode_free(helper);
+      }
+      else
+      {
+	/** f(x)=a(x)*b(x) => f'(x) = a'*b + a*b' */
+	ASTNode_setType(fprime, AST_PLUS);    
+
+	ASTNode_addChild(fprime, ASTNode_create());
+	help_1 = ASTNode_getChild(fprime, 0);
+	ASTNode_setType (help_1, AST_TIMES);
+	ASTNode_addChild(help_1, differentiateAST(ASTNode_getChild(f, 0), x));
+	ASTNode_addChild(help_1, copyAST(ASTNode_getChild(f, 1)));
+
+	ASTNode_addChild(fprime, ASTNode_create());
+	help_1 = ASTNode_getChild(fprime, 1);
+	ASTNode_setType (help_1, AST_TIMES);
+	ASTNode_addChild(help_1, copyAST(ASTNode_getChild(f, 0)));
+	ASTNode_addChild(help_1, differentiateAST(ASTNode_getChild(f, 1), x));
+      }
+      break;
+    case AST_DIVIDE:
+      /** f(x)=a(x)/b(x) => f'(x) = a'/b - a/b^2*b' */    
+      ASTNode_setType(fprime, AST_MINUS);
+
+      ASTNode_addChild(fprime, ASTNode_create());
+      help_1 = ASTNode_getChild(fprime, 0);
+      ASTNode_setType (help_1, AST_DIVIDE);
+      ASTNode_addChild(help_1, differentiateAST(ASTNode_getChild(f, 0), x));
+      ASTNode_addChild(help_1, copyAST(ASTNode_getChild(f, 1)));
+
+      ASTNode_addChild(fprime, ASTNode_create());
+      help_1 = ASTNode_getChild(fprime, 1);
+      ASTNode_setType (help_1, AST_TIMES);
+      ASTNode_addChild(help_1, ASTNode_create());
+      ASTNode_addChild(help_1, differentiateAST(ASTNode_getChild(f, 1), x));
+
+      help_2 = ASTNode_getChild(help_1, 0);
+      ASTNode_setType (help_2, AST_DIVIDE);
+      ASTNode_addChild(help_2, copyAST(ASTNode_getChild(f, 0)));
+      ASTNode_addChild(help_2, ASTNode_create());
+
+      help_3 = ASTNode_getChild(help_2, 1);
+      ASTNode_setType (help_3, AST_POWER);
+      ASTNode_addChild(help_3, copyAST(ASTNode_getChild(f, 1)));
+      ASTNode_addChild(help_3, ASTNode_create());
+      ASTNode_setInteger(ASTNode_getChild(help_3, 1), 2);
+      break;
+    case AST_POWER:
+    case AST_FUNCTION_POWER:
+      /** f(x)=a(x)^b => f'(x) = b * a^(b-1)*a' */
+      /* check if variable x is part of b(x) */
+      found = 0;  
+      list = ASTNode_getListOfNodes(ASTNode_getChild(f, 1),
+				    (ASTNodePredicate) user_defined);
+      for ( i=0; i<List_size(list); i++ ) 
+	if ( strcmp(ASTNode_getName(List_get(list, i)), x) == 0 ) 
+	  found = 1;
+      List_free(list);
+      if ( found == 0 )
+      {
+	ASTNode_setType (fprime, AST_TIMES);
+
+	ASTNode_addChild(fprime, copyAST(ASTNode_getChild(f, 1)));
+	ASTNode_addChild(fprime, ASTNode_create());
+
+	help_1 = ASTNode_getChild(fprime, 1);
+	ASTNode_setType (help_1, AST_TIMES);
+	ASTNode_addChild(help_1, ASTNode_create());
+	ASTNode_addChild(help_1, differentiateAST(ASTNode_getChild(f, 0), x));
+
+	help_2 = ASTNode_getChild(help_1, 0);
+	ASTNode_setType (help_2, AST_POWER);
+	ASTNode_addChild(help_2, copyAST(ASTNode_getChild(f, 0)));
+	ASTNode_addChild(help_2, ASTNode_create());
+
+	help_3 = ASTNode_getChild(help_2, 1);
+	ASTNode_setType (help_3, AST_MINUS);
+	ASTNode_addChild(help_3, copyAST(ASTNode_getChild(f, 1)));
+	ASTNode_addChild(help_3, ASTNode_create());
+	ASTNode_setReal(ASTNode_getChild(help_3, 1), 1.0);	
+	break;
+      }
+      /** f(x)=a^b(x) => f'(x) = f * ln(a)*b' */
+      /* check if variable x is part of a(x) */
+      found = 0;  
+      list = ASTNode_getListOfNodes(ASTNode_getChild(f, 0),
+				    (ASTNodePredicate) user_defined);
+      for ( i=0; i<List_size(list); i++ )
+	if ( strcmp(ASTNode_getName(List_get(list, i)), x) == 0 ) 
+	  found = 1;
+      List_free(list);
+      if ( found == 0 )
+      {
+	ASTNode_setType (fprime, AST_TIMES);
+	ASTNode_addChild(fprime, copyAST(f));
+	ASTNode_addChild(fprime, ASTNode_create());
+	help_1 = ASTNode_getChild(fprime, 1);
+	ASTNode_setType (help_1, AST_TIMES);
+	ASTNode_addChild(help_1, ASTNode_create());
+	ASTNode_addChild(help_1, differentiateAST(ASTNode_getChild(f, 1), x));
+	help_2 = ASTNode_getChild(help_1, 0);
+	ASTNode_setType (help_2, AST_FUNCTION_LN);
+	ASTNode_addChild(help_2, copyAST(ASTNode_getChild(f, 0)));
+	break;
+      }
+      /** f(x)=a(x)^b(x) => f'(x)= f * ( b/a*a' + ln(a)*b' ) */
+      ASTNode_setType (fprime, AST_TIMES);
+      ASTNode_addChild(fprime, copyAST(f));
+      ASTNode_addChild(fprime, ASTNode_create());
+      help_1 = ASTNode_getChild(fprime, 1);
+      ASTNode_setType (help_1, AST_PLUS);
+      ASTNode_addChild(help_1, ASTNode_create());
+      ASTNode_addChild(help_1, ASTNode_create());
+      help_2 = ASTNode_getChild(help_1, 0);
+      ASTNode_setType (help_2, AST_TIMES);
+      ASTNode_addChild(help_2, ASTNode_create());
+      ASTNode_addChild(help_2, differentiateAST(ASTNode_getChild(f, 0), x));
+      help_3 = ASTNode_getChild(help_2, 0);
+      ASTNode_setType (help_3, AST_DIVIDE);
+      ASTNode_addChild(help_3, copyAST(ASTNode_getChild(f, 1)));
+      ASTNode_addChild(help_3, copyAST(ASTNode_getChild(f, 0)));
+      help_2 = ASTNode_getChild(help_1, 1);
+      ASTNode_setType (help_2, AST_TIMES);
+      ASTNode_addChild(help_2, ASTNode_create());
+      ASTNode_addChild(help_2, differentiateAST(ASTNode_getChild(f, 1), x));
+      help_3 = ASTNode_getChild(help_2, 0);
+      ASTNode_setType (help_3, AST_FUNCTION_LN);
+      ASTNode_addChild(help_3, copyAST(ASTNode_getChild(f, 0)));
+      break;
+    default:
+      SolverError_error(WARNING_ERROR_TYPE,
+			SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_OPERATOR,
+                        "differentiateAST: operator: impossible case");
+      ASTNode_setName(fprime, "differentiation_failed");
+    }
+  }
+  /** FUNCTIONS: */
+  else if ( ASTNode_isFunction(f) || type==AST_LAMBDA )
+  {
+    switch(type)
+    {
+    case AST_LAMBDA:
+      SolverError_error(WARNING_ERROR_TYPE,
+			SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_LAMBDA,
+                        "differentiateAST: lambda: not implemented");
+      ASTNode_setName(fprime, "differentiation_failed");
+      break;
+    case AST_FUNCTION:
+      fname  = (char *) ASTNode_getName(f);
+      /* feature for inverse problems:
+	 differentiation for (sic!) a user-defined function */
+      if ( strcmp(fname, x) == 0 )
+      {
+	ASTNode_setType (fprime, AST_FUNCTION);	
+	ASSIGN_NEW_MEMORY_BLOCK(dfname, strlen(fname)+3, char, NULL);
+	sprintf(dfname, "d_%s", fname);
+	ASTNode_setName(fprime, dfname);
+	free(dfname);
+	for ( j=0; j<childnum; j++ )
+	  ASTNode_addChild(fprime, copyAST(ASTNode_getChild(f, j)));
+	break;
+      }
+      /* differentiation of a user-defined function for a variable */
+      ASTNode_free(fprime); /* not needed yet */ 
+      sum = tmp = NULL;
+      /* loop over arguments */
+      for ( i=0; i<childnum; i++ )
+      {
+	/* does argument depend on x? */
+	found = 0;  
+	list = ASTNode_getListOfNodes(ASTNode_getChild(f, i),
+				      (ASTNodePredicate) user_defined);
+	for ( j=0; j<List_size(list); j++ ) 
+	  if ( strcmp(ASTNode_getName(List_get(list, j)), x) == 0 ) 
+	    found = 1;
+	List_free(list);
+	/* calculate summands */
+	prod = ASTNode_create();
+	if ( found == 0 )	  /* argument does not depend on x */
+	  ASTNode_setReal(prod, 0.0);
+	else                      /* argument depends on x */
+	{
+	  ASTNode_setType (prod, AST_TIMES);
+	  ASTNode_addChild(prod, ASTNode_create());
+	  ASTNode_addChild(prod, differentiateAST(ASTNode_getChild(f, i) , x));
+	  helper = ASTNode_getChild(prod, 0);
+	  ASTNode_setType (helper, AST_FUNCTION);
+	  ASSIGN_NEW_MEMORY_BLOCK(dfname, strlen(fname)+3+32, char, NULL);
+	  sprintf(dfname, "d%i_%s", i, fname);
+	  ASTNode_setName(helper, dfname);
+	  free(dfname);
+	  for ( j=0; j<childnum; j++ ) 
+	    ASTNode_addChild(helper, copyAST(ASTNode_getChild(f, j)));
+	}
+	if ( i==0 )  /* first summand */
+	  sum = prod;	
+	else         /* other summands */
+	{
+	  sum = ASTNode_create();
+	  ASTNode_setType (sum, AST_PLUS);
+	  ASTNode_addChild(sum, tmp);
+	  ASTNode_addChild(sum, prod);
+	}
+	tmp = sum;
+      }
+      /* result */
+      fprime = sum;
+      break;
+    case AST_FUNCTION_ABS:             
+      /** f(x)=abs(a(x)) => f' = sig(a)*a'\n
+	  RESULTS IN A DISCONTINUOUS FUNCTION!\n
+          sig(a) is set to 0 if a==0, while it is actually not defined */ 
+      ASTNode_setType(fprime, AST_TIMES);
+      /* piecewise node for signum function, sig(a) */
+      helper = ASTNode_create();
+      ASTNode_setType(helper, AST_FUNCTION_PIECEWISE);
+      /* -1 if a < 0 */
+      ASTNode_addChild(helper, ASTNode_create());
+      ASTNode_setInteger(ASTNode_getChild(helper, 0), -1);
+      ASTNode_addChild(helper, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(helper, 1), AST_RELATIONAL_LT);
+      ASTNode_addChild(ASTNode_getChild(helper, 1),
+		       copyAST(ASTNode_getChild(f,0)));
+      ASTNode_addChild(ASTNode_getChild(helper, 1), ASTNode_create());
+      ASTNode_setInteger(child2(helper,1,1), 0);      
+      /* 0 if a = 0; ACTUALLY sig(a) is not defined for a==0 !! */
+      ASTNode_addChild(helper, ASTNode_create());
+      ASTNode_setInteger(ASTNode_getChild(helper, 2), 0);
+      ASTNode_addChild(helper, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(helper, 3), AST_RELATIONAL_EQ);
+      ASTNode_addChild(ASTNode_getChild(helper, 3),
+		       copyAST(ASTNode_getChild(f,0)));
+      ASTNode_addChild(ASTNode_getChild(helper, 3), ASTNode_create());
+      ASTNode_setInteger(child2(helper,3,1), 0);      
+      /* +1 if a > 0 */
+      ASTNode_addChild(helper, ASTNode_create());
+      ASTNode_setInteger(ASTNode_getChild(helper, 4), 1);
+      ASTNode_addChild(helper, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(helper, 5), AST_RELATIONAL_GT);
+      ASTNode_addChild(ASTNode_getChild(helper, 5),
+		       copyAST(ASTNode_getChild(f,0)));
+      ASTNode_addChild(ASTNode_getChild(helper, 5), ASTNode_create());
+      ASTNode_setInteger(child2(helper,5,1), 0);      
+      /* multiply: sig(a) * a' */		       
+      ASTNode_addChild(fprime, helper);
+      ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f,0),x));
+      break;
+
+      /** TRIGONOMETRIC FUNCTION DERIVATIVES
+	  mostly taken from\n
+	  http://www.rism.com/Trig/circular.htm and\n
+	  http://www.rism.com/Trig/hyperbol.htm */  
+    case AST_FUNCTION_ARCCOS:
+      /** f(x)=arccos(a(x)) => f' = - a' / sqrt(1 - a^2)  */
+      ASTNode_setType(fprime,AST_DIVIDE);
+      /*  - a'  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,0), AST_MINUS);
+      ASTNode_addChild(ASTNode_getChild(fprime,0),
+		       differentiateAST(ASTNode_getChild(f,0),x));
+      /*  sqrt(...)  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_FUNCTION_ROOT);
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setInteger(child2(fprime,1,0), 2);
+      /* 1 - a^2) */
+      /*  1  - */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType( child2(fprime,1,1), AST_MINUS );
+      ASTNode_addChild(child2(fprime,1,1), ASTNode_create());
+      ASTNode_setInteger(child3(fprime,1,1,0), 1);
+      /*  a^2  */
+      ASTNode_addChild(child2(fprime,1,1), ASTNode_create());
+      ASTNode_setType(  child3(fprime,1,1,1), AST_POWER);
+      ASTNode_addChild( child3(fprime,1,1,1), copyAST(ASTNode_getChild(f,0)));
+      ASTNode_addChild( child3(fprime,1,1,1), ASTNode_create());
+      ASTNode_setInteger(ASTNode_getChild(child3(fprime,1,1,1),1), 2);
+      break;
+    case AST_FUNCTION_ARCCOSH:
+      /** f(x)=arccosh(a(x)) => f' =   a' / sqrt(a^2 - 1)  */
+      ASTNode_setType(fprime,AST_DIVIDE);
+      /*  a'  */
+      ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f,0),x));
+      /*  sqrt(...)  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_FUNCTION_ROOT);
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setInteger(child2(fprime,1,0), 2);
+      /* a^2 - 1 */
+      /*  a^2  - */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType( child2(fprime,1,1), AST_MINUS );
+      ASTNode_addChild(child2(fprime,1,1), ASTNode_create());
+      ASTNode_setType(child3(fprime,1,1,0), AST_POWER);
+      ASTNode_addChild(child3(fprime,1,1,0), copyAST(ASTNode_getChild(f,0)));
+    
+      ASTNode_addChild(child3(fprime,1,1,0), ASTNode_create());
+      ASTNode_setInteger(ASTNode_getChild(child3(fprime,1,1,0),1), 2);
+      /*  1  */
+      ASTNode_addChild(child2(fprime,1,1), ASTNode_create());
+      ASTNode_setInteger(child3(fprime,1,1,1), 1);
+      break;
+    case AST_FUNCTION_ARCCOT:
+      /** f(x)=arccot(a(x)) => f' = - a' / (1 + a^2) */
+      ASTNode_setType(fprime,AST_DIVIDE);
+      /*  - a'  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,0), AST_MINUS);
+      ASTNode_addChild(ASTNode_getChild(fprime,0),
+		       differentiateAST(ASTNode_getChild(f,0),x));
+      /*  1 + a^2  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_PLUS);
+      /*  1  */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setInteger( child2(fprime,1,0), 1);
+      /*  a^2  */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(  child2(fprime,1,1), AST_POWER);
+      ASTNode_addChild( child2(fprime,1,1), copyAST(ASTNode_getChild(f,0)));
+      ASTNode_addChild( child2(fprime,1,1), ASTNode_create());
+      ASTNode_setInteger( child3(fprime,1,1,1), 2);     
+      break;
+    case AST_FUNCTION_ARCCOTH:
+      /** f(x)=arccoth(a(x)) => f' = - a' / (-1 + a^2) */
+      ASTNode_setType(fprime,AST_DIVIDE);
+      /*  - a'  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,0), AST_MINUS);
+      ASTNode_addChild(ASTNode_getChild(fprime,0),
+		       differentiateAST(ASTNode_getChild(f,0),x));
+      /*  -1 + a^2  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_PLUS);
+      /*  -1  */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(child2(fprime,1,0), AST_MINUS);
+      ASTNode_addChild(child2(fprime,1,0), ASTNode_create());
+      ASTNode_setInteger(child3(fprime,1,0,0), 1);
+      /*  a^2  */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(  child2(fprime,1,1), AST_POWER);
+      ASTNode_addChild( child2(fprime,1,1), copyAST(ASTNode_getChild(f,0)));
+      ASTNode_addChild( child2(fprime,1,1), ASTNode_create());
+      ASTNode_setInteger( child3(fprime,1,1,1), 2);    
+      break;
+    case AST_FUNCTION_ARCCSC:
+      fprime = getDerivArccsc(f, x);
+      break;
+    case AST_FUNCTION_ARCCSCH:
+      fprime = getDerivArccsch(f, x);
+      break;
+    case AST_FUNCTION_ARCSEC:
+      fprime = getDerivArcsec(f, x);
+      break;
+    case AST_FUNCTION_ARCSECH:
+      fprime = getDerivArcsech(f, x);
+      break;
+    case AST_FUNCTION_ARCSIN:
+      /** f(x)=arcsin(a(x)) => f' = a' / sqrt(1 - a^2)  */
+      ASTNode_setType(fprime,AST_DIVIDE);
+      /*  a'  */
+      ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f,0),x));
+      /*  sqrt(...)  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_FUNCTION_ROOT);
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setInteger(child2(fprime,1,0), 2);
+      /* 1 - a^2) */
+      /*  1  - */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType( child2(fprime,1,1), AST_MINUS );
+      ASTNode_addChild(child2(fprime,1,1), ASTNode_create());
+      ASTNode_setInteger(child3(fprime,1,1,0), 1);
+      /*  a^2  */
+      ASTNode_addChild(child2(fprime,1,1), ASTNode_create());
+      ASTNode_setType(  child3(fprime,1,1,1), AST_POWER);
+      ASTNode_addChild( child3(fprime,1,1,1), copyAST(ASTNode_getChild(f,0)));
+      ASTNode_addChild( child3(fprime,1,1,1), ASTNode_create());
+      ASTNode_setInteger(ASTNode_getChild(child3(fprime,1,1,1),1), 2);
+      break;
+    case AST_FUNCTION_ARCSINH:
+      /** f(x)=arcsinh(a(x)) => f' = a' / sqrt(1 + a^2)  */
+      ASTNode_setType(fprime,AST_DIVIDE);
+      /*  a'  */
+      ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f,0),x));
+      /*  sqrt(...)  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_FUNCTION_ROOT);
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setInteger(child2(fprime,1,0), 2);
+      /* 1 + a^2) */
+      /*  1  + */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType( child2(fprime,1,1), AST_PLUS );
+      ASTNode_addChild(child2(fprime,1,1), ASTNode_create());
+      ASTNode_setInteger(child3(fprime,1,1,0), 1);
+      /*  a^2  */
+      ASTNode_addChild(child2(fprime,1,1), ASTNode_create());
+      ASTNode_setType(  child3(fprime,1,1,1), AST_POWER);
+      ASTNode_addChild( child3(fprime,1,1,1), copyAST(ASTNode_getChild(f,0)));
+      ASTNode_addChild( child3(fprime,1,1,1), ASTNode_create());
+      ASTNode_setInteger(ASTNode_getChild(child3(fprime,1,1,1),1), 2);
+      break;
+    case AST_FUNCTION_ARCTAN:
+      /** f(x)=atan(a(x)) => f' = a' / (1 + a^2) */
+      ASTNode_setType(fprime,AST_DIVIDE);
+      /*  a'  */
+      ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f,0),x));
+      /*  1 + a^2  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_PLUS);
+      /*  1  */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setInteger( child2(fprime,1,0), 1);
+      /*  a^2  */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(  child2(fprime,1,1), AST_POWER);
+      ASTNode_addChild( child2(fprime,1,1), copyAST(ASTNode_getChild(f,0)));
+      ASTNode_addChild( child2(fprime,1,1), ASTNode_create());
+      ASTNode_setInteger( child3(fprime,1,1,1), 2);    
+      break;
+    case AST_FUNCTION_ARCTANH:
+      /** f(x)=atan(a(x)) => f' = a' / (1 - a^2) */
+      ASTNode_setType(fprime,AST_DIVIDE);
+      /*  a'  */
+      ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f,0),x));
+      /*  1 - a^2  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_MINUS);
+      /*  1  */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setInteger( child2(fprime,1,0), 1);
+      /*  a^2  */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(  child2(fprime,1,1), AST_POWER);
+      ASTNode_addChild( child2(fprime,1,1), copyAST(ASTNode_getChild(f,0)));
+      ASTNode_addChild( child2(fprime,1,1), ASTNode_create());
+      ASTNode_setInteger( child3(fprime,1,1,1), 2);     
+      break;
+    case AST_FUNCTION_CEILING:
+      /** f(x) = ceil(a(x)) */
+      ASTNode_setType(fprime, ASTNode_getType(f));
+      ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f,0),x));
+      break;
+    case AST_FUNCTION_COS:
+      /** f(x)=cos(a(x)) => f' = a' * -sin(a) */   
+      ASTNode_setType(fprime,AST_TIMES);
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,0), AST_MINUS);
+      ASTNode_addChild(ASTNode_getChild(fprime,0), ASTNode_create());      
+      ASTNode_setType(child2(fprime,0,0), AST_FUNCTION_SIN);
+      ASTNode_addChild(child2(fprime,0,0), copyAST(ASTNode_getChild(f,0)));
+      ASTNode_addChild(fprime,differentiateAST(ASTNode_getChild(f,0),x));
+      break;
+    case AST_FUNCTION_COSH:
+      /** f(x)=cosh(a(x)) => f' = a' * sinh(a) */
+      ASTNode_setType(fprime,AST_TIMES);
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,0), AST_FUNCTION_SINH);
+      ASTNode_addChild(ASTNode_getChild(fprime,0), copyAST(ASTNode_getChild(f,0)));
+      ASTNode_addChild(fprime,differentiateAST(ASTNode_getChild(f,0),x));
+      break;
+    case AST_FUNCTION_COT:
+      /** f(x)=cot(a(x)) => f' = - a' / (sin(a))^2 */
+      ASTNode_setType(fprime,AST_DIVIDE);
+      /*  - a'  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,0), AST_MINUS);
+      ASTNode_addChild(ASTNode_getChild(fprime,0),
+		       differentiateAST(ASTNode_getChild(f,0),x));
+      /*  (sin(a))^2  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_POWER);
+      /*  sin(a)  */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(child2(fprime,1,0), AST_FUNCTION_SIN);
+      ASTNode_addChild(child2(fprime,1,0), copyAST(ASTNode_getChild(f,0)));
+      /*  ^2  */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setInteger(child2(fprime,1,1), 2);  
+      break;
+    case AST_FUNCTION_COTH:
+      /** f(x)=cot(a(x)) => f' = - a' / (sinh(a))^2 */
+      ASTNode_setType(fprime,AST_DIVIDE);
+      /*  - a'  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,0), AST_MINUS);
+      ASTNode_addChild(ASTNode_getChild(fprime,0),
+		       differentiateAST(ASTNode_getChild(f,0),x));
+      /*  (sinh(a))^2  */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_POWER);
+      /*  sinh(a)  */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(child2(fprime,1,0), AST_FUNCTION_SINH);
+      ASTNode_addChild(child2(fprime,1,0), copyAST(ASTNode_getChild(f,0)));
+      /*  ^2  */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setInteger(child2(fprime,1,1), 2);  
+      break;  
+    case AST_FUNCTION_CSC:
+      /** f(x)=csc(a(x)) => f' = - a' * csc(a) * cot(a) */
+      /* - a' * ... */
+      ASTNode_setType(fprime,AST_TIMES);
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,0), AST_MINUS);
+      ASTNode_addChild(ASTNode_getChild(fprime,0),
+		       differentiateAST(ASTNode_getChild(f,0),x));
+      /* csc(a) * cot(x) */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_TIMES);
+      /* csc(a) */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(child2(fprime,1,0), AST_FUNCTION_CSC);
+      ASTNode_addChild(child2(fprime,1,0), copyAST(ASTNode_getChild(f,0)));
+      /* tan(a) */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(child2(fprime,1,1), AST_FUNCTION_COT);
+      ASTNode_addChild(child2(fprime,1,1), copyAST(ASTNode_getChild(f,0)));
+      break;
+    case AST_FUNCTION_CSCH:
+      /** f(x)=csch(a(x)) => f' = - a' * csch(a) * coth(a) */
+      /* - a' * ... */
+      ASTNode_setType(fprime,AST_TIMES);
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,0), AST_MINUS);
+      ASTNode_addChild(ASTNode_getChild(fprime,0),
+		       differentiateAST(ASTNode_getChild(f,0),x));
+      /* csch(a) * coth(x) */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_TIMES);
+      /* csch(a) */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(child2(fprime,1,0), AST_FUNCTION_CSCH);
+      ASTNode_addChild(child2(fprime,1,0), copyAST(ASTNode_getChild(f,0)));
+      /* tanh(a) */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(child2(fprime,1,1), AST_FUNCTION_COTH);
+      ASTNode_addChild(child2(fprime,1,1), copyAST(ASTNode_getChild(f,0)));
+      break;
+    case AST_FUNCTION_DELAY:
+      SolverError_error(WARNING_ERROR_TYPE,
+			SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_DELAY,
+                        "differentiateAST: delay: not implemented");
+      ASTNode_setName(fprime, "differentiation_failed");
+      break;
+    case AST_FUNCTION_EXP:
+      /** f(x)=e^a(x) =>  f' = e^a * a'  */
+      ASTNode_setType(fprime, AST_TIMES);
+      ASTNode_addChild(fprime, copyAST(f));
+      ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f,0),x));
+      break;
+    case AST_FUNCTION_FACTORIAL:
+      SolverError_error(WARNING_ERROR_TYPE,
+			SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_FACTORIAL,
+                        "differentiateAST: factorial: impossible case");
+      ASTNode_setName(fprime, "differentiation_failed");
+      break;
+    case AST_FUNCTION_FLOOR:     /* WRONG */
+      /** f(x) = floor(a(x))  \n
+	  WRONG: CAN RESULT IN A DISCONTINUOUS FUNCTION! */
+      ASTNode_setType(fprime, ASTNode_getType(f));
+      ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f,0),x));
+      break;
+    case AST_FUNCTION_LN:
+      /** f(x)=ln(a(x)) => f' = 1 / a * a' */
+      ASTNode_setType (fprime, AST_TIMES);
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f, 0), x));
+      help_1 = ASTNode_getChild(fprime, 0);
+      ASTNode_setType (help_1, AST_DIVIDE);
+      ASTNode_addChild(help_1, ASTNode_create());
+      ASTNode_addChild(help_1, copyAST(ASTNode_getChild(f, 0)));
+      help_2 = ASTNode_getChild(help_1, 0);
+      ASTNode_setReal (help_2, 1.0);    
+      break;
+    case AST_FUNCTION_LOG:
+      /** f(x)=log(b,x) = 1/ln(b)*ln(x)  \n
+	  replace and differentiate */
+      ASTNode_setType (fprime, AST_TIMES);
+      ASTNode_addChild(fprime, ASTNode_create());
+      help_1 = ASTNode_getChild(fprime, 0);
+      ASTNode_setType (help_1, AST_DIVIDE);
+      ASTNode_addChild(help_1, ASTNode_create());
+      ASTNode_addChild(help_1, ASTNode_create());
+      help_2 = ASTNode_getChild(help_1, 0);
+      ASTNode_setReal (help_2, 1.0);
+      help_2 = ASTNode_getChild(help_1, 1);
+      ASTNode_setType (help_2, AST_FUNCTION_LN);
+      ASTNode_addChild(help_2, copyAST(ASTNode_getChild(f, 0)));
+
+      helper = ASTNode_create();
+      ASTNode_setType (helper, AST_FUNCTION_LN);
+      ASTNode_addChild(helper, copyAST(ASTNode_getChild(f, 1)));
+      
+      ASTNode_addChild(fprime, differentiateAST(helper, x));
+      ASTNode_free(helper);
+      break;
+    case AST_FUNCTION_PIECEWISE:
+      SolverError_error(WARNING_ERROR_TYPE,
+			SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_FACTORIAL,
+                        "differentiateAST: piecewise: not implemented");
+      ASTNode_setName(fprime, "differentiation_failed");
+      break;
+    case AST_FUNCTION_ROOT:
+      /** f(x)=root(a(x),b(x)) = a(x)^(1/b(x))  \n
+	  replace and differentiate */
+      helper = ASTNode_create();
+      /* a ^ . */
+      ASTNode_setType (helper, AST_FUNCTION_POWER);
+      ASTNode_addChild(helper, copyAST(ASTNode_getChild(f,0)));
+      ASTNode_addChild(helper, ASTNode_create());      
+      /* a ^ . / . */     
+      help_1 = ASTNode_getChild(helper, 1);
+      ASTNode_setType (help_1, AST_DIVIDE);
+      ASTNode_addChild(help_1, ASTNode_create());
+      /* a ^ . / b */     
+      ASTNode_addChild(help_1, copyAST(ASTNode_getChild(f,1)));      
+      /* a ^ 1 / b */     
+      help_2 = ASTNode_getChild(help_1, 0);
+      ASTNode_setReal (help_2, 1.0);
+
+      fprime = differentiateAST(helper, x);
+      ASTNode_free(helper);
+      break;
+    case AST_FUNCTION_SEC:
+      /** f(x)=sec(a(x)) => f' = a' * sec(a) * tan(x) */
+      /* a' * ... */
+      ASTNode_setType(fprime,AST_TIMES);
+      ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f,0),x));
+      /* sec(a) * tan(x) */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_TIMES);
+      /* sec(a) */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(child2(fprime,1,0), AST_FUNCTION_SEC);
+      ASTNode_addChild(child2(fprime,1,0), copyAST(ASTNode_getChild(f,0)));
+      /* tan(a) */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(child2(fprime,1,1), AST_FUNCTION_TAN);
+      ASTNode_addChild(child2(fprime,1,1),copyAST(ASTNode_getChild(f,0)));
+      break;
+    case AST_FUNCTION_SECH:
+      /** f(x)=sech(a(x)) f' = - a' * sech(a) * tanh(a)  */
+      ASTNode_setType(fprime,AST_TIMES);
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,0), AST_MINUS);
+      ASTNode_addChild(ASTNode_getChild(fprime,0),
+		       differentiateAST(ASTNode_getChild(f,0),x));
+      /* sec(a) * tan(x) */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_TIMES);
+      /* sec(a) */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(child2(fprime,1,0), AST_FUNCTION_SECH);
+      ASTNode_addChild(child2(fprime,1,0), copyAST(ASTNode_getChild(f,0)));
+      /* tan(a) */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(child2(fprime,1,1), AST_FUNCTION_TANH);
+      ASTNode_addChild(child2(fprime,1,1), copyAST(ASTNode_getChild(f,0)));    
+      break;
+    case AST_FUNCTION_SIN:
+      /** f(x)=sin(a(x)) => f' = a' * cos(a) */
+      ASTNode_setType(fprime,AST_TIMES);
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,0), AST_FUNCTION_COS);
+      ASTNode_addChild(ASTNode_getChild(fprime,0),
+		       copyAST(ASTNode_getChild(f,0)));      
+      ASTNode_addChild(fprime,differentiateAST(ASTNode_getChild(f,0),x));
+      break;
+    case AST_FUNCTION_SINH:
+      /** f(x)=sinh(a(x)) => f' = a' * cosh(a) */    
+      ASTNode_setType(fprime,AST_TIMES);
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,0), AST_FUNCTION_COSH);
+      ASTNode_addChild(ASTNode_getChild(fprime,0),
+		       copyAST(ASTNode_getChild(f,0)));      
+      ASTNode_addChild(fprime,differentiateAST(ASTNode_getChild(f,0),x));
+      break;
+    case AST_FUNCTION_TAN:
+      /** f(x)= tan(a(x)) => f' = a' / (cos(a))^2  */
+      ASTNode_setType(fprime,AST_DIVIDE);
+      /* a' */
+      ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f,0),x));
+      /* (cos(a))^2 */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_POWER);
+      /* cos(a) */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(child2(fprime,1,0), AST_FUNCTION_COS);
+      ASTNode_addChild(child2(fprime,1,0), copyAST(ASTNode_getChild(f,0)));
+      /* ^2 */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setInteger(child2(fprime,1,1), 2);        
+      break;
+    case AST_FUNCTION_TANH:
+      /** f(x)= tanh(a(x)) => f' = a' / (cosh(a))^2  */
+      ASTNode_setType(fprime,AST_DIVIDE);
+      /* a' */
+      ASTNode_addChild(fprime, differentiateAST(ASTNode_getChild(f,0),x));
+      /* (cos(a))^2 */
+      ASTNode_addChild(fprime, ASTNode_create());
+      ASTNode_setType(ASTNode_getChild(fprime,1), AST_POWER);
+      /* cos(a) */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setType(child2(fprime,1,0), AST_FUNCTION_COSH);
+      ASTNode_addChild(child2(fprime,1,0), copyAST(ASTNode_getChild(f,0)));
+      /* ^2 */
+      ASTNode_addChild(ASTNode_getChild(fprime,1), ASTNode_create());
+      ASTNode_setInteger(child2(fprime,1,1), 2); 
+      break;
+    default:
+      SolverError_error(WARNING_ERROR_TYPE,
+			SOLVER_ERROR_AST_UNKNOWN_FAILURE,
+                        "differentiateAST: unknown failure for function type");
+      ASTNode_setName(fprime, "differentiation_failed");
+      break;
+    }
+  }
+  else if ( ASTNode_isLogical(f) || ASTNode_isRelational(f) )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_LOGICAL_OR_RELATIONAL,
+		      "differentiateAST: logical and relational not possible");
+    ASTNode_setName(fprime, "differentiation_failed");
+  }
+  else if ( ASTNode_isUnknown(fprime) )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_AST_UNKNOWN_NODE_TYPE,
+		      "differentiateAST: unknown ASTNode type");
+    ASTNode_setName(fprime, "differentiation_failed");
+  }
+
+  simple = simplifyAST(fprime);
+  ASTNode_free(fprime);
+  return simple;
+
+
+
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+   !! experimental function determinantNAST !! NOT TESTED !!
+   !! WILL RUN OUT OF MEMORY FOR BIG SYSTEMS !!
+   calculates the determinant of the jacobian matrix, is not
+   used and can only be activated with hidden
+   commandline option -d.
+   Doesn't work if expressions get too big for yet unknown
+   reasons!??
+*/
+
+
+SBML_ODESOLVER_API ASTNode_t *determinantNAST(ASTNode_t ***A, int N)
+{
+  int k, i, j, l, check;
+  ASTNode_t ***B;
+  ASTNode_t *det, *tmp, *tmp2, *simple;
+  
+  det = NULL;
+  B = NULL;
+  tmp = NULL;
+
+  if ( N == 1 ) 
+    return copyAST(A[0][0]);    
+
+  det = ASTNode_create();
+
+  /* for i = 1 to N */
+  for ( k=0; k<N; k++ )
+  {    
+    check = 0;
+    
+    if ( ASTNode_isInteger(A[k][0]) )
+      if ( ASTNode_getInteger(A[k][0]) == 0 )
+	check = 1;
+
+    if (  ASTNode_isReal(A[k][0]) ) 
+      if ( ASTNode_getReal(A[k][0]) == 0.0 ) 
+	check = 1;    
+        
+    if ( check < 1 )
+    { 
+      /* B = A, with row i and column 1 deleted */
+      B = (ASTNode_t ***) calloc(N-1, sizeof(ASTNode_t **));
+      l = 0;
+      for ( i=0; i<N-1; i++ )
+      {
+	B[i] = (ASTNode_t **) calloc(N-1, sizeof(ASTNode_t *));
+	
+	if ( k == i ) 
+	  l++;
+	
+	for ( j=0; j<N-1; j++ ) 
+	  B[i][j] = copyAST(A[l][j+1]); /* ... or A[i+1][l] ?? */
+	l++;
+      }
+
+      /*  det = det + (-1)^(i-1)*a(i1) * det(B); but k from 0 to N-1 */
+
+      tmp = ASTNode_create();
+      /* ... * ... */
+      ASTNode_setType(tmp, AST_TIMES);
+      /* (-1)^(i-1)*a(i1) */
+      if ( k%2 != 0 )
+      {
+	ASTNode_addChild(tmp, ASTNode_create());
+	ASTNode_setType(ASTNode_getChild(tmp, 0), AST_MINUS);
+	ASTNode_addChild(ASTNode_getChild(tmp, 0), copyAST(A[k][0]));
+      }
+      else 
+	ASTNode_addChild(tmp, copyAST(A[k][0]));
+      
+      /* det(B) */ 
+      ASTNode_addChild(tmp, determinantNAST(B, N-1));
+
+      /* det + ... */
+      if ( det == NULL )
+      {
+	det = copyAST(tmp);
+	ASTNode_free(tmp);
+      }
+      else
+      {
+	tmp2 = ASTNode_create();
+	ASTNode_setType(tmp2, AST_PLUS);
+	ASTNode_addChild(tmp2, copyAST(det));
+	ASTNode_addChild(tmp2, copyAST(tmp));
+	ASTNode_free(tmp);
+	ASTNode_free(det);
+	det = ASTNode_create();
+	det = copyAST(tmp2);
+	ASTNode_free(tmp2);
+      }
+
+      
+      for ( i=0; i<N-1; i++ ) {
+	for ( j=0; j<N-1; j++ ) 
+	  ASTNode_free(B[i][j]);	
+	free(B[i]);
+      }
+      free(B);
+
+      /* printf(" +(-1)^(%d-1)*a(%d1)*det(%d) ", k+1, k+1, N-1); */
+      
+    } 
+  }
+
+  simple =  simplifyAST(det);
+  ASTNode_free(det);
+  return simple;
+  
+}
+
+/** @} */
+
+/* ------------------------------------------------------------------------ */
+
+/*! \addtogroup simplifyAST */
+/*@{*/
+
+/** takes an ASTNode and odeModel and returns a corresponding indexed ASTNode,
+
+    The function converts AST_NAME to AST_IndexName, which holds the
+    name of the variable and additionally the index used in odeModel,
+    integratorInstance and cvodeData */
+SBML_ODESOLVER_API ASTNode_t *ASTNode_indexAST(const ASTNode_t *f, odeModel_t *om)
+{
+  return indexAST(f, om->neq+om->nass+om->nconst+om->nalg, om->names);
+}
+
+/** takes an ASTNode and a string array `names' and returns
+    a corresponding indexed ASTNode.
+
+    The function converts AST_NAME to AST_IndexName, which holds the
+    name of the variable and additionally the index of the variable
+    in the passed array `names' */
+ASTNode_t *indexAST(const ASTNode_t *f, int nvalues, char **names)
+{
+  int i, found;
+  unsigned int k;
+  ASTNode_t *index;
+
+  const char *str;
+  char *short_str = NULL;
+
+  index = ASTNode_create();
+
+  /* DISTINCTION OF CASES */
+
+  /* integers, reals */
+  if ( ASTNode_isInteger(f) ) 
+    ASTNode_setInteger(index, ASTNode_getInteger(f));  
+  else if ( ASTNode_isReal(f) ) 
+    ASTNode_setReal(index, ASTNode_getReal(f));
+  
+  /* copy existing indexes */
+  /*   else if ( ASTNode_isSetIndex(f) ) { */
+  /*     ASTNode_free(index); */
+  /*     index = ASTNode_createIndexName(); */
+  /*     ASTNode_setName(index, ASTNode_getName(f)); */
+  /*     ASTNode_setIndex(index, ASTNode_getIndex(f));     */
+  /*   } */
+  
+  /* writing indexed name nodes */
+  else if ( ASTNode_isName(f) )
+  {
+    found = 0;
+    str = ASTNode_getName(f);
+    /* alloc mem for (experimental) data variable */
+    if ( strstr(str, "_data") != NULL )
+    {
+      /* short_str = space((strlen(str)-5+1) * sizeof(char)); */
+      ASSIGN_NEW_MEMORY_BLOCK(short_str, strlen(str)-5+1, char, 0);
+      strncpy(short_str, str, strlen(str)-5);
+    }
+    for ( i=0; i<nvalues; i++ )
+    {
+      if ( strcmp(str, names[i]) == 0 )
+      {
+        ASTNode_free(index);
+	index = ASTNode_createIndexName(); 
+	ASTNode_setName(index, str);
+	ASTNode_setIndex(index, i);
+	found++;
+	break;
+      }
+      else if ( short_str != NULL && strcmp(short_str, names[i]) == 0 )
+      {
+        ASTNode_free(index);
+	index = ASTNode_createIndexName(); 
+	ASTNode_setName(index, short_str);
+	ASTNode_setIndex(index, i);
+	ASTNode_setData(index);
+	found++;
+  
+	break;
+      }
+    }
+    if ( !found )
+      ASTNode_setName(index, str);
+    /* free mem */
+    if ( short_str != NULL )
+      free(short_str);
+    
+    /* time and delay nodes */
+    ASTNode_setType(index, ASTNode_getType(f)); 
+  }
+  /* constants */
+  /* functions, operators */
+  else
+  {
+    ASTNode_setType(index, ASTNode_getType(f));
+    /* user-defined functions: name must be set */
+    if ( ASTNode_getType(f) == AST_FUNCTION ) 
+      ASTNode_setName(index, ASTNode_getName(f));    
+    for ( k=0; k<ASTNode_getNumChildren(f); k++ )
+      ASTNode_addChild(index, indexAST(ASTNode_getChild(f,k), nvalues, names));
+  }
+  
+  return index;
+}
+
+/** Takes an AST f, and returns a simplified copy of f.
+
+decomposes n-ary `times' and `plus' nodes into an AST of binary AST. 
+   
+simplifies (arithmetic) operations involving 0 and 1: \n   
+-0 -> 0;\n
+x+0 -> x, 0+x -> x;\n
+x-0 -> x, 0-x -> -x;\n
+x*0 -> 0, 0*x -> 0, x*1 -> x, 1*x -> x;\n
+0/x -> 0, x/1 -> x;\n
+x^0 -> 1, x^1 -> x, 0^x -> 0, 1^x -> 1;\n
+   
+propagates unary minuses\n
+--x -> x; \n
+-x + -y -> -(x+y), -x + y -> y-x,    x + -y -> x-y; \n
+-x - -y -> y-x,    -x - y -> -(x+y), x - -y -> x+y; \n 
+-x * -y -> x*y,    -x * y -> -(x*y), x * -y -> -(x*y);\n
+-x / -y -> x/y,    -x / y -> -(x/y), x / -y -> -(x/y); \n
+   
+calls evaluateAST(subtree), if no variables or user-defined
+functions occur in the AST subtree,
+
+calls itself recursively for childnodes,
+   
+   
+*/
+
+SBML_ODESOLVER_API ASTNode_t *simplifyAST(const ASTNode_t *f)
+{  
+  unsigned int i, childnum;
+  int simplify;
+  ASTNode_t *simple, *left, *right, *helper;
+  ASTNodeType_t type;
+
+  /* new ASTNode */
+  simple = ASTNode_create();
+  
+  type = ASTNode_getType(f);
+
+  /* DISTINCTION OF CASES */
+
+  /* integers, reals */
+  if ( ASTNode_isInteger(f) ) 
+    ASTNode_setInteger(simple, ASTNode_getInteger(f));
+  else if ( ASTNode_isReal(f) ) 
+    ASTNode_setReal(simple, ASTNode_getReal(f));
+  /* variables */
+  else if ( ASTNode_isName(f) )
+  {
+    if ( ASTNode_isSetIndex(f) )
+    {
+      ASTNode_free(simple);
+      simple = ASTNode_createIndexName();
+      ASTNode_setIndex(simple, ASTNode_getIndex(f));
+
+      if ( ASTNode_isSetData(f) )
+	 ASTNode_setData(simple);
+    } 
+    ASTNode_setName(simple, ASTNode_getName(f));
+    ASTNode_setType(simple, ASTNode_getType(f));
+  }
+  /* --------------- operators with possible simplifications -------------- */
+  /* special operator: unary minus */
+  else if ( ASTNode_isUMinus(f) )
+  {
+    left = simplifyAST(ASTNode_getLeftChild(f));
+    if ( zero(left) )         /* -0 = 0 */
+    {
+      ASTNode_free(simple);
+      simple = left;
+    }
+    else if ( ASTNode_isUMinus(left) )   /* - -x */
+    {
+      ASTNode_free(simple);
+      simple = ASTNode_cutRoot(left);
+    }
+    else  /* no simplification */
+    {
+      ASTNode_setType (simple, AST_MINUS);
+      ASTNode_addChild(simple, left);
+    }
+  }
+  /* general operators */
+  else if ( ASTNode_isOperator(f) || type==AST_FUNCTION_POWER)
+  {
+    childnum = ASTNode_getNumChildren(f);  
+    /* zero operands: set to neutral element */
+    if ( childnum == 0 )
+    {
+      if ( type == AST_PLUS ) 
+	ASTNode_setInteger(simple, 0);
+      else if ( type == AST_TIMES )
+	ASTNode_setInteger(simple, 1);
+    }
+    /* one operand: set node to operand */
+    else if ( childnum == 1 )
+    {
+      ASTNode_free(simple);
+      if ( type == AST_PLUS ) 
+	simple = simplifyAST(ASTNode_getChild(f, 0));
+      else if ( type == AST_TIMES )
+	simple = simplifyAST(ASTNode_getChild(f, 0));
+    }
+    /* >2 operands: recursively decompose
+       into tree with 2 operands */
+    else if ( childnum > 2 )
+    {
+      if ( type == AST_PLUS ) 
+	ASTNode_setType(simple, AST_PLUS);		  
+      else if ( type == AST_TIMES ) 
+	ASTNode_setType(simple, AST_TIMES);
+      /* copy/simplify left child ... */
+      ASTNode_addChild(simple, simplifyAST(ASTNode_getChild(f,0)));
+      /* ... and move other child down */
+      helper = ASTNode_create();
+      ASTNode_setType(helper, type);
+      for ( i=1; i<childnum; i++ )
+	ASTNode_addChild(helper, simplifyAST(ASTNode_getChild(f,i)));
+      ASTNode_addChild(simple, simplifyAST(helper));
+      ASTNode_free(helper);
+    }
+    /* 2 operands: remove 0s and 1s and unary minuses */
+    else
+    {    
+      left  = simplifyAST(ASTNode_getLeftChild(f));
+      right = simplifyAST(ASTNode_getRightChild(f));
+      /* default: simplification */
+      simplify = 1; /* set flag */
+      switch(type)
+      {
+	/* binary plus x + y */
+      case AST_PLUS:
+	if ( zero(right) )       /* x+0 = x */
+	{
+	  ASTNode_free(right);
+	  ASTNode_free(simple);
+	  simple = left;
+	}
+	else if ( zero(left) )   /* 0+x = x */
+	{
+	  ASTNode_free(left);
+	  ASTNode_free(simple);
+	  simple = right;
+	}
+	else if ( ASTNode_isUMinus(left) && ASTNode_isUMinus(right) )
+	{
+	  /* -x + -y */
+	  ASTNode_setType (simple, AST_MINUS);  
+	  ASTNode_addChild(simple, ASTNode_create());
+	  helper = ASTNode_getChild(simple, 0);
+	  ASTNode_setType (helper, AST_PLUS);
+	  ASTNode_addChild(helper, ASTNode_cutRoot(left));
+	  ASTNode_addChild(helper, ASTNode_cutRoot(right));
+	}
+	else if ( ASTNode_isUMinus(left) )
+	{
+	  /* -x + y */
+	  ASTNode_setType (simple, AST_MINUS);
+	  ASTNode_addChild(simple, right);
+	  ASTNode_addChild(simple, ASTNode_cutRoot(left));
+	}
+	else if ( ASTNode_isUMinus(right) )
+	{
+	  /* x + -y */
+	  ASTNode_setType (simple, AST_MINUS);
+	  ASTNode_addChild(simple, left);
+	  ASTNode_addChild(simple, ASTNode_cutRoot(right));
+	}
+	else 
+	  simplify = 0;	
+	break;
+	/* binary minus x - y */
+      case AST_MINUS:
+	if ( zero(right) )
+	{
+	  /* x-0 = x */
+	  ASTNode_free(right);
+	  ASTNode_free(simple);
+	  simple = left;
+	}
+	else if ( zero(left) )
+	{
+	  /* 0-x =-x */
+	  ASTNode_free(left);
+	  ASTNode_setType (simple, type);
+	  ASTNode_addChild(simple, right);
+	}
+	else if ( ASTNode_isUMinus(left) && ASTNode_isUMinus(right) )
+	{
+	  /* -x - -y */
+	  ASTNode_setType (simple, AST_MINUS);
+	  ASTNode_addChild(simple, ASTNode_cutRoot(right));
+	  ASTNode_addChild(simple, ASTNode_cutRoot(left));
+	}
+	else if ( ASTNode_isUMinus(left) )
+	{
+	  /* -x - y */
+	  ASTNode_setType (simple, AST_MINUS); 
+	  ASTNode_addChild(simple, ASTNode_create());
+	  helper = ASTNode_getChild(simple, 0);
+	  ASTNode_setType (helper, AST_PLUS);
+	  ASTNode_addChild(helper, ASTNode_cutRoot(left));
+	  ASTNode_addChild(helper, right);
+	}
+	else if ( ASTNode_isUMinus(right) )
+	{
+	  /* x - -y */
+	  ASTNode_setType (simple, AST_PLUS);
+	  ASTNode_addChild(simple, left);
+	  ASTNode_addChild(simple, ASTNode_cutRoot(right));
+	}
+	else 
+	  simplify = 0;	
+	break;
+	/* binary times x * y */
+      case AST_TIMES:
+	if ( zero(right) )
+	{
+	  /* x*0 = 0 */
+	  ASTNode_free(left);
+	  ASTNode_free(simple);
+	  simple = right;
+	}
+	else if ( zero(left) )
+	{
+	  /* 0*x = 0 */
+	  ASTNode_free(right);
+	  ASTNode_free(simple);
+	  simple = left;
+	}
+	else if ( one(right) )
+	{
+	  /* x*1 = x */
+	  ASTNode_free(right);
+	  ASTNode_free(simple);
+	  simple = left;
+	}
+	else if ( one(left) )
+	{
+	  /* 1*x = x */
+	  ASTNode_free(left);
+	  ASTNode_free(simple);
+	  simple = right;
+	}
+	else if ( ASTNode_isUMinus(left) && ASTNode_isUMinus(right) )
+	{
+	  /* -x * -y */
+	  ASTNode_setType (simple, AST_TIMES);  
+	  ASTNode_addChild(simple, ASTNode_cutRoot(left));
+	  ASTNode_addChild(simple, ASTNode_cutRoot(right));
+	}
+	else if ( ASTNode_isUMinus(left) )
+	{
+	  /* -x * y */
+	  ASTNode_setType (simple, AST_MINUS); 
+	  ASTNode_addChild(simple, ASTNode_create());
+	  helper = ASTNode_getChild(simple, 0);
+	  ASTNode_setType (helper, AST_TIMES);
+	  ASTNode_addChild(helper, ASTNode_cutRoot(left));
+	  ASTNode_addChild(helper, right);
+	}
+	else if ( ASTNode_isUMinus(right) )
+	{
+	  /* x * -y */
+	  ASTNode_setType (simple, AST_MINUS); 
+	  ASTNode_addChild(simple, ASTNode_create());
+	  helper = ASTNode_getChild(simple, 0);
+	  ASTNode_setType (helper, AST_TIMES);
+	  ASTNode_addChild(helper, left);
+	  ASTNode_addChild(helper, ASTNode_cutRoot(right));
+	}
+	else 
+	  simplify = 0;
+	break;
+	/* binary divide x / y */
+      case AST_DIVIDE:
+	if ( zero(left) )
+	{
+	  /* 0/x = 0 */
+	  ASTNode_free(right);
+	  ASTNode_free(simple);
+	  simple = left;
+	}
+	else if ( one(right) )
+	{
+	  /* x/1 = x */
+	  ASTNode_free(right);
+	  ASTNode_free(simple);
+	  simple = left;
+	}
+	else if ( ASTNode_isUMinus(left) && ASTNode_isUMinus(right) )
+	{
+	  /* -x / -y */
+	  ASTNode_setType (simple, AST_DIVIDE); 
+	  ASTNode_addChild(simple, ASTNode_cutRoot(left));
+	  ASTNode_addChild(simple, ASTNode_cutRoot(right));
+	}
+	else if ( ASTNode_isUMinus(left) )
+	{
+	  /* -x / y */
+	  ASTNode_setType (simple, AST_MINUS); 
+	  ASTNode_addChild(simple, ASTNode_create());
+	  helper = ASTNode_getChild(simple, 0);
+	  ASTNode_setType (helper, AST_DIVIDE);
+	  ASTNode_addChild(helper, ASTNode_cutRoot(left));
+	  ASTNode_addChild(helper, right);
+	}
+	else if ( ASTNode_isUMinus(right) )
+	{
+	  /* x / -y */
+	  ASTNode_setType (simple, AST_MINUS); 
+	  ASTNode_addChild(simple, ASTNode_create());
+	  helper = ASTNode_getChild(simple, 0);
+	  ASTNode_setType (helper, AST_DIVIDE);
+	  ASTNode_addChild(helper, left);
+	  ASTNode_addChild(helper, ASTNode_cutRoot(right));
+	}
+	else
+	  simplify = 0;
+	break;
+	/* power x^y */
+      case AST_POWER:
+      case AST_FUNCTION_POWER:
+	if ( zero(right) )
+	{
+	  /* x^0 = 1 */
+	  ASTNode_free(left);
+	  ASTNode_free(right);
+	  ASTNode_setReal(simple, 1.0);      
+	}
+	else if ( one(right) )
+	{
+	  /* x^1 = x */
+	  ASTNode_free(right);
+	  ASTNode_free(simple);
+	  simple = left;
+	}
+	else if ( zero(left) )
+	{
+	  /* 0^x = 0 */
+	  ASTNode_free(left);
+	  ASTNode_free(right);
+	  ASTNode_setReal(simple, 0.0);      
+	}
+	else if ( one(left) )
+	{
+	  /* 1^x = 1 */
+	  ASTNode_free(left);
+	  ASTNode_free(right);
+	  ASTNode_setReal(simple, 1.0);      
+	}
+	else 
+	  simplify = 0;
+	break;    
+      default:
+	SolverError_error(WARNING_ERROR_TYPE,
+			  SOLVER_ERROR_AST_UNKNOWN_FAILURE,
+			  "simplifyAST: unknown failure for operator type");
+	break;
+      }
+      /* after all no simplification */
+      if (!simplify)
+      {
+
+	ASTNode_setType (simple, type);
+	ASTNode_addChild(simple, left);
+	ASTNode_addChild(simple, right);
+      }
+    }
+  }
+  /* -------------------- cases with no simplifications ------------------- */
+  /* constants (leaves) */ 
+  /* functions, operators (branches) */
+  else
+  {
+    ASTNode_setType(simple, type);
+
+   /*  if( ASTNode_isSetData(f) ) */
+/*       ASTNode_setData(simple); */
+
+    /* user-defined functions: name must be set*/
+    if ( ASTNode_getType(f) == AST_FUNCTION ) 
+      ASTNode_setName(simple, ASTNode_getName(f));
+    for ( i=0; i<ASTNode_getNumChildren(f); i++ ) 
+      ASTNode_addChild(simple, simplifyAST(ASTNode_getChild(f,i)));
+  }
+  
+  return (simple);
+}
+
+
+/** @} */
+
+
+/* ------------------------------------------------------------------------ */
+
+/* logical predicate that checks if ASTNode is a user-defined variable name,
+   (or time), or a user defined function */
+static int user_defined(ASTNode_t *node)
+{
+  if ( ASTNode_isName(node) || ASTNode_getType(node)==AST_FUNCTION )
+    return 1;
+  return 0;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+static int zero(ASTNode_t *f)
+{
+  if ( ASTNode_isReal(f) ) 
+    return (ASTNode_getReal(f)==0.0);
+  if ( ASTNode_isInteger(f) ) 
+    return (ASTNode_getInteger(f)==0);
+  return 0;
+}
+
+/* ------------------------------------------------------------------------ */
+
+static int one(ASTNode_t *f)
+{
+  if ( ASTNode_isReal(f) ) 
+    return (ASTNode_getReal(f)==1.0);
+  if ( ASTNode_isInteger(f) ) 
+    return (ASTNode_getInteger(f)==1);
+  return 0;
+}
+
+/* ------------------------------------------------------------------------ */
+
+static ASTNode_t *ASTNode_cutRoot(ASTNode_t *old)
+{
+  ASTNode_t *new;
+  new = copyAST(ASTNode_getChild(old, 0));
+  ASTNode_free(old);
+  return new;
+}
+
+/* appends the indices in the given indexed AST to the given list. */
+int ASTNode_getIndices(const ASTNode_t *node, List_t *indices)
+{
+  unsigned int i;
+
+  if ( ASTNode_isSetIndex(node) )
+  {
+    unsigned int *idx;
+    ASSIGN_NEW_MEMORY(idx, unsigned int, 0);
+    *idx = ASTNode_getIndex(node);
+    List_add(indices, idx);
+  }
+
+  for ( i=0; i<ASTNode_getNumChildren(node); i++ )
+    ASTNode_getIndices(ASTNode_getChild(node, i), indices);
+
+  return 1;
+}
+/* generates a boolean vector of size nvalues, indicating whether
+   an index occurs in the given indexed AST */
+int *ASTNode_getIndexArray(const ASTNode_t *node, int nvalues)
+{
+  int *result;
+  List_t *indices;
+
+  ASSIGN_NEW_MEMORY_BLOCK(result, nvalues, int, NULL);
+  if ( !node ) return result;
+  indices = List_create();
+    /* get indices from equation */
+    ASTNode_getIndices(node, indices);
+    
+    /* set indices to 1 and free list items */
+    while ( List_size(indices) )
+    {
+      unsigned int *k;
+      k = (unsigned int *)List_remove(indices, 0);
+      result[*k] = 1;
+      free(k);
+    }
+  List_free(indices);
+
+  return result;
+}
+
+/* returns boolean result: whether the given AST contains a time symbol. */
+int ASTNode_containsTime(const ASTNode_t *node)
+{
+  unsigned int i;
+
+  if ( ASTNode_getType(node) == AST_NAME_TIME /* || */
+/*        (ASTNode_getType(node) == AST_NAME && */
+/* 	(strcmp(ASTNode_getName(node),"time") == 0 || */
+/* 	 strcmp(ASTNode_getName(node),"Time") == 0 || */
+/* 	 strcmp(ASTNode_getName(node),"TIME") == 0)) */ )
+    return 1;
+
+  for ( i = 0; i != ASTNode_getNumChildren(node); i++ )
+    if ( ASTNode_containsTime(ASTNode_getChild(node, i)) )
+      return 1;
+
+  return 0;
+}
+
+/* returns boolean result: whether the given AST contains a time symbol. */
+int ASTNode_containsPiecewise(const ASTNode_t *node)
+{
+  unsigned int i;
+
+  if ( ASTNode_getType(node) == AST_FUNCTION_PIECEWISE )
+    return 1;
+
+  for ( i = 0; i != ASTNode_getNumChildren(node); i++ )
+    if ( ASTNode_containsPiecewise(ASTNode_getChild(node, i)) )
+      return 1;
+
+  return 0;
+}
+
+
+
+/* ------------------------------------------------------------------------ */
+
+
+/* appends the given AST in compilable form to the given buffer.
+   The form is enclosed in brackets when necessary so that the AST
+   can be incorporated as a sub expression of another expression. */
+static void ASTNode_generateNestedExpression(charBuffer_t *expressionStream,
+				      const ASTNode_t *node)
+{
+  switch ( ASTNode_getType(node) )
+  {
+    /* expressions that don't need to be bracketed */
+  case AST_INTEGER :
+  case AST_REAL :
+  case AST_REAL_E :
+  case AST_RATIONAL :
+  case AST_NAME :
+  case AST_NAME_TIME :
+  case AST_CONSTANT_E :
+  case AST_CONSTANT_FALSE :
+  case AST_CONSTANT_PI :
+  case AST_CONSTANT_TRUE :
+  case AST_FUNCTION_ABS :
+  case AST_FUNCTION_ARCCOS :
+  case AST_FUNCTION_ARCCOSH :
+  case AST_FUNCTION_ARCCOT :
+  case AST_FUNCTION_ARCCOTH :
+  case AST_FUNCTION_ARCCSC :
+  case AST_FUNCTION_ARCCSCH :
+  case AST_FUNCTION_ARCSEC :
+  case AST_FUNCTION_ARCSECH :
+  case AST_FUNCTION_ARCSIN :
+  case AST_FUNCTION_ARCSINH :
+  case AST_FUNCTION_ARCTAN :
+  case AST_FUNCTION_ARCTANH :
+  case AST_FUNCTION_CEILING :
+  case AST_FUNCTION_COS :
+  case AST_FUNCTION_COSH :
+  case AST_FUNCTION_COT :
+  case AST_FUNCTION_COTH :
+  case AST_FUNCTION_CSC :
+  case AST_FUNCTION_CSCH :
+  case AST_FUNCTION_EXP :
+  case AST_FUNCTION_FACTORIAL :
+  case AST_FUNCTION_FLOOR :
+  case AST_FUNCTION_LN :
+  case AST_FUNCTION_LOG :
+  case AST_FUNCTION_ROOT :
+  case AST_FUNCTION_SEC :
+  case AST_FUNCTION_SECH :
+  case AST_FUNCTION_SIN :
+  case AST_FUNCTION_SINH :
+  case AST_FUNCTION_TAN :
+  case AST_FUNCTION_TANH :
+  case AST_LOGICAL_XOR :
+  case AST_FUNCTION :
+    generateAST(expressionStream, node);
+    break;
+
+    /* expressions that do */
+  default :
+    CharBuffer_append(expressionStream, "(") ;
+    generateAST(expressionStream, node);
+    CharBuffer_append(expressionStream, ")");
+    break;
+  }
+}
+
+/* appends the given node to the given buffer in compilable form assuming
+   the node is a unary operator.
+   'op' is the compilable operator string for the node. */
+static void ASTNode_generateUnaryOperator(charBuffer_t *expressionStream,
+				   const ASTNode_t *node, const char *op)
+{
+  CharBuffer_append(expressionStream,op); ;
+  ASTNode_generateNestedExpression(expressionStream,
+				   ASTNode_getChild(node, 0));
+}
+
+/* appends the given node to the given buffer in compilable form assuming
+   the node is a Nary operator.
+   'op' is the compilable operator string for the node. */
+static void ASTNode_generateNaryOperator(charBuffer_t *expressionStream,
+				  const ASTNode_t *node, const char *op)
+{
+  unsigned int i;
+    
+  for ( i = 0 ; i != ASTNode_getNumChildren(node); i++ )
+  {
+    ASTNode_generateNestedExpression(expressionStream,
+				     ASTNode_getChild(node, i));
+    if ( i != ASTNode_getNumChildren(node) - 1 )
+    {
+      CharBuffer_append(expressionStream, " ");
+      CharBuffer_append(expressionStream, op);
+      CharBuffer_append(expressionStream, " ");
+    }
+  }
+}
+
+/* appends the given node to the given buffer in compilable form assuming
+   the node is a function.
+   'func' is the compilable function string for the node. */
+static void ASTNode_generateFunctionCall(charBuffer_t *expressionStream,
+				  const ASTNode_t *node, const char *func)
+{
+  unsigned int i;
+
+  CharBuffer_append(expressionStream, func);
+  CharBuffer_append(expressionStream, "(");
+  for ( i = 0 ; i != ASTNode_getNumChildren(node); i++ )
+  {
+    generateAST(expressionStream, ASTNode_getChild(node, i));
+    if ( i != ASTNode_getNumChildren(node) - 1 )
+      CharBuffer_append(expressionStream, ", ") ;
+  }
+  CharBuffer_append(expressionStream, ")") ;   
+}
+
+/* appends compilable code to represent the given AST_Name node to the
+   give buffer.  The code consists of a reference to an item in the
+   array 'value' indexed by the the index associated with the node by
+   the function 'indexAST'.  If the ASTNode doesn't have an index
+   value then an error is created and '0' is appended to the buffer. */
+static void ASTNode_generateName(charBuffer_t *expressionStream, const ASTNode_t *n)
+{
+  int found = 0;
+
+  if ( ASTNode_isSetIndex((ASTNode_t *)n) )
+  {
+    if ( ASTNode_isSetData((ASTNode_t *)n) )
+    {
+      SolverError_error(FATAL_ERROR_TYPE,
+			SOLVER_ERROR_AST_COMPILATION_FAILED_DATA_AST_NODE_NOT_SUPPORTED_YET,
+			"Compilation process ignoring data state on name ",
+			"node %s - Not supported yet\n",
+			ASTNode_getName(n));
+    }
+        
+    /* else */
+    {
+      CharBuffer_append(expressionStream, "value[");
+      CharBuffer_appendInt(expressionStream, ASTNode_getIndex((ASTNode_t *)n));
+      CharBuffer_append(expressionStream, "]");
+    }
+
+    found++;
+  }
+
+  /* this is what we'd do if the index isn't always set -
+     this should not be neccessary IMHO - AMF 
+     if ( found == 0 ) {
+     for ( j=0; j<data->nvalues; j++ ) {
+     if ( (strcmp(ASTNode_getName(n),data->model->names[j]) == 0) )
+     {
+     CharBuffer_append(expressionStream, "value[");
+     CharBuffer_appendInt(expressionStream, j);
+     CharBuffer_append(expressionStream, "]");
+     found++;
+     }
+     }
+     }
+  */
+
+  if ( found == 0 )
+  {
+    SolverError_error(FATAL_ERROR_TYPE,
+		      SOLVER_ERROR_AST_COMPILATION_FAILED_MISSING_VALUE,
+		      "ASTNode_generateName: "
+		      "No value found for AST_NAME %s. Defaults to Zero "
+		      "to avoid program crash", ASTNode_getName(n));
+    CharBuffer_append(expressionStream, "0.0");
+  }
+}
+
+/** appends compilable macros and functions to buffer to enable the code
+    in buffer to support the code generated by the 'generateAST' function. */
+SBML_ODESOLVER_API void generateMacros(charBuffer_t *buffer)
+{
+  /* was using
+     "#define asech(x) log((1.0 + sqrt(1.0 - (x)*(x))) / (x))\n"\ */
+
+  CharBuffer_append(buffer, 
+		    "#define acot(x) atan(1.0/(x))\n"\
+		    "#define acoth(x) (0.5*log(((x)+1.0)/((x)-1.0)))\n"\
+		    "#define acsc(x) atan(1.0/sqrt(((x)-1.0)*((x)+1.0)))\n"\
+		    "#define acsch(x) log((1.0+sqrt(1.0 + (x)*(x)))/(x))\n"\
+		    "#define asec(x) atan(sqrt(((x) - 1.0)*((x) + 1.0)))\n"\
+		    "#define asech(x) acosh(1.0/(x))\n"\
+		    "#define cot(x) (1.0 / tan(x))\n"\
+		    "#define coth(x) (cosh(x) / sinh(x))\n"\
+		    "#define csch(x) (1.0/sinh(x))\n"\
+		    "#define MyLog(x,y) (log10(y)/log10(x))\n"\
+		    /*!!! account for piecewise with more then 3 children!*/
+		    "#define piecewise(x, y, z) ((y) ? (x) : (z))\n"\
+		    /*!!! account for odd root degrees of negative values!*/
+		    "#define root(x, y) pow(y, 1.0 / (x))\n"\
+		    "#define sec(x) (1.0/cos(x))\n"\
+		    "#define sech(x) (1.0/cosh(x))\n"\
+		    "#define acosh(x) (log((x) + (sqrt((x) - 1.0) * sqrt((x) + 1.0))))\n"\
+		    "#define asinh(x) (log((x) + sqrt(((x) * (x)) + 1.0)))\n"\
+		    "#define atanh(x) ((log(1.0 + (x)) - log(1.0-(x)))/2.0)\n"\
+		    "#define csc(x) (1.0/sin(x))\n"\
+		    "\n"\
+		    "double factorial(double x)\n"\
+		    "{\n"\
+		    "    double result ;\n"\
+		    "    int j = floor(x);\n"\
+		    "    for(result=1;j>1;--j)\n"\
+		    "        result *= j;\n"\
+		    "    return result;\n"\
+		    "}\n");
+}
+
+/* appends compilable code to the given buffer for the given AST assuming
+   the AST is an XOR expression. */
+static void ASTNode_generateXOR(charBuffer_t *expressionStream, const ASTNode_t *node)
+{
+  unsigned int i;
+    
+  CharBuffer_append(expressionStream, "((");
+
+  for ( i = 0 ; i != ASTNode_getNumChildren(node); i++ )
+  {
+    CharBuffer_append(expressionStream, "(");
+    ASTNode_generateNestedExpression(expressionStream,
+				     ASTNode_getChild(node, i));
+    CharBuffer_append(expressionStream, " ? 1 : 0)");
+    if ( i != ASTNode_getNumChildren(node) - 1 )
+      CharBuffer_append(expressionStream, " + ");
+  }
+
+  CharBuffer_append(expressionStream, ") % 2) != 0");
+}
+
+/* appends compilable code to the given buffer that
+   implements the given AST. */
+SBML_ODESOLVER_API void generateAST(charBuffer_t *expressionStream, const ASTNode_t *node)
+{
+  switch (ASTNode_getType(node))
+  {
+  case AST_PLUS :
+    ASTNode_generateNaryOperator(expressionStream, node, "+");
+    break;
+  case AST_TIMES :
+    ASTNode_generateNaryOperator(expressionStream, node, "*");
+    break;
+  case AST_MINUS :
+    if (ASTNode_getNumChildren(node) == 1)
+      ASTNode_generateUnaryOperator(expressionStream, node, "-");
+    else
+      ASTNode_generateNaryOperator(expressionStream, node, "-");
+    break;
+  case AST_DIVIDE : 
+    ASTNode_generateNaryOperator(expressionStream, node, "/");
+    break;
+  case AST_POWER :
+    ASTNode_generateFunctionCall(expressionStream, node, "pow");
+    break;
+  case AST_INTEGER :
+    CharBuffer_append(expressionStream, "((realtype)");
+    CharBuffer_appendInt(expressionStream, ASTNode_getInteger(node));
+    CharBuffer_append(expressionStream, ")");
+    break;
+  case AST_REAL :
+  case AST_REAL_E :
+  case AST_RATIONAL :
+    CharBuffer_append(expressionStream, "((realtype)");
+    CharBuffer_appendDouble(expressionStream, ASTNode_getReal(node));
+    CharBuffer_append(expressionStream, ")");
+    break;
+  case AST_NAME :
+    ASTNode_generateName(expressionStream, node);
+    break;
+  case AST_NAME_TIME :
+    CharBuffer_append(expressionStream, "data->currenttime");
+    break;
+  case AST_CONSTANT_E:
+    /** exp(1) is used to adjust exponentiale to machine precision */
+    CharBuffer_appendDouble(expressionStream, exp(1));
+    break;
+  case AST_CONSTANT_FALSE:
+    CharBuffer_appendDouble(expressionStream, 0.0);
+    break;
+  case AST_CONSTANT_PI:
+    /** pi = 4 * atan 1  is used to adjust Pi to machine precision */
+    CharBuffer_appendDouble(expressionStream, 4.*atan(1.));
+    break;
+  case AST_CONSTANT_TRUE:
+    CharBuffer_appendDouble(expressionStream, 1.0);
+    break;
+  case AST_FUNCTION_ABS :
+    ASTNode_generateFunctionCall(expressionStream, node, "fabs");
+    break;
+  case AST_FUNCTION_ARCCOS :
+    ASTNode_generateFunctionCall(expressionStream, node, "acos");
+    break;
+  case AST_FUNCTION_ARCCOSH :
+    ASTNode_generateFunctionCall(expressionStream, node, "acosh");
+    break;
+  case AST_FUNCTION_ARCCOT :
+    ASTNode_generateFunctionCall(expressionStream, node, "acot");
+    break;
+  case AST_FUNCTION_ARCCOTH :
+    ASTNode_generateFunctionCall(expressionStream, node, "acoth");
+    break;
+  case AST_FUNCTION_ARCCSC :
+    ASTNode_generateFunctionCall(expressionStream, node, "acsc");
+    break;
+  case AST_FUNCTION_ARCCSCH :
+    ASTNode_generateFunctionCall(expressionStream, node, "acsch");
+    break;
+  case AST_FUNCTION_ARCSEC :
+    ASTNode_generateFunctionCall(expressionStream, node, "asec");
+    break;
+  case AST_FUNCTION_ARCSECH :
+    ASTNode_generateFunctionCall(expressionStream, node, "asech");
+    break;
+  case AST_FUNCTION_ARCSIN :
+    ASTNode_generateFunctionCall(expressionStream, node, "asin");
+    break;
+  case AST_FUNCTION_ARCSINH :
+    ASTNode_generateFunctionCall(expressionStream, node, "asinh");
+    break;
+  case AST_FUNCTION_ARCTAN :
+    ASTNode_generateFunctionCall(expressionStream, node, "atan");
+    break;
+  case AST_FUNCTION_ARCTANH :
+    ASTNode_generateFunctionCall(expressionStream, node, "atanh");
+    break;
+  case AST_FUNCTION_CEILING :
+    ASTNode_generateFunctionCall(expressionStream, node, "ceil");
+    break;
+  case AST_FUNCTION_COS :
+    ASTNode_generateFunctionCall(expressionStream, node, "cos");
+    break;
+  case AST_FUNCTION_COSH :
+    ASTNode_generateFunctionCall(expressionStream, node, "cosh");
+    break;
+  case AST_FUNCTION_COT :
+    ASTNode_generateFunctionCall(expressionStream, node, "cot");
+    break;
+  case AST_FUNCTION_COTH :
+    ASTNode_generateFunctionCall(expressionStream, node, "coth");
+    break;
+  case AST_FUNCTION_CSC :
+    ASTNode_generateFunctionCall(expressionStream, node, "csc");
+    break;
+  case AST_FUNCTION_CSCH :
+    ASTNode_generateFunctionCall(expressionStream, node, "csch");
+    break;
+  case AST_FUNCTION_EXP :
+    ASTNode_generateFunctionCall(expressionStream, node, "exp");
+    break;
+  case AST_FUNCTION_FACTORIAL :
+    ASTNode_generateFunctionCall(expressionStream, node, "factorial");
+    break;
+  case AST_FUNCTION_FLOOR :
+    ASTNode_generateFunctionCall(expressionStream, node, "floor");
+    break;
+  case AST_FUNCTION_LN :
+    ASTNode_generateFunctionCall(expressionStream, node, "log");
+    break;
+  case AST_FUNCTION_LOG :
+    ASTNode_generateFunctionCall(expressionStream, node, "MyLog");
+    break;
+  case AST_FUNCTION_PIECEWISE :
+    ASTNode_generateFunctionCall(expressionStream, node, "piecewise");
+    break;
+  case AST_FUNCTION_POWER :
+    ASTNode_generateFunctionCall(expressionStream, node, "pow");
+    break;
+  case AST_FUNCTION_ROOT :
+    ASTNode_generateFunctionCall(expressionStream, node, "root");
+    break;
+  case AST_FUNCTION_SEC :
+    ASTNode_generateFunctionCall(expressionStream, node, "sec");
+    break;
+  case AST_FUNCTION_SECH :
+    ASTNode_generateFunctionCall(expressionStream, node, "sech");
+    break;
+  case AST_FUNCTION_SIN :
+    ASTNode_generateFunctionCall(expressionStream, node, "sin");
+    break;
+  case AST_FUNCTION_SINH :
+    ASTNode_generateFunctionCall(expressionStream, node, "sinh");
+    break;
+  case AST_FUNCTION_TAN :
+    ASTNode_generateFunctionCall(expressionStream, node, "tan");
+    break;
+  case AST_FUNCTION_TANH :
+    ASTNode_generateFunctionCall(expressionStream, node, "tanh");
+    break;
+  case AST_LOGICAL_AND :
+    ASTNode_generateNaryOperator(expressionStream, node, "&&");
+    break;
+  case AST_LOGICAL_NOT :
+    ASTNode_generateUnaryOperator(expressionStream, node, "!");
+    break;
+  case AST_LOGICAL_OR :
+    ASTNode_generateNaryOperator(expressionStream, node, "||");
+    break;
+  case AST_LOGICAL_XOR :
+    ASTNode_generateXOR(expressionStream, node);
+    break;
+  case AST_RELATIONAL_EQ :
+    ASTNode_generateNaryOperator(expressionStream, node, "==");
+    break;
+  case AST_RELATIONAL_GEQ :
+    ASTNode_generateNaryOperator(expressionStream, node, ">=");
+    break;
+  case AST_RELATIONAL_GT :
+    ASTNode_generateNaryOperator(expressionStream, node, ">");
+    break;
+  case AST_RELATIONAL_LEQ :
+    ASTNode_generateNaryOperator(expressionStream, node, "<=");
+    break;
+  case AST_RELATIONAL_LT :
+    ASTNode_generateNaryOperator(expressionStream, node, "<");
+    break;
+  case AST_RELATIONAL_NEQ :
+    ASTNode_generateNaryOperator(expressionStream, node, "!=");
+    break;
+  default :
+    SolverError_error(FATAL_ERROR_TYPE,
+		      SOLVER_ERROR_AST_COMPILATION_FAILED_STRANGE_NODE_TYPE,
+		      "Found strange node type whilst generating code.  ",
+		      "Inserted '_YUCK' into code.");
+    CharBuffer_append(expressionStream, "_YUCK");
+    break;
+  }
+}
+/* End of file */
diff --git a/src/sbml.c b/src/sbml.c
new file mode 100644
index 0000000..86e8579
--- /dev/null
+++ b/src/sbml.c
@@ -0,0 +1,150 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-10-16 16:52:50 raim>
+  $Id: sbml.c,v 1.18 2008/10/16 17:27:50 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Christoph Flamm
+ *     Andrew M. Finney
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/* libSBML header files */
+#include <sbml/SBMLTypes.h>
+#include <sbml/SBMLDocument.h>
+
+
+/* own header files */
+#include "sbmlsolver/sbml.h"
+#include "sbmlsolver/util.h"
+#include "sbmlsolver/solverError.h"
+
+static void storeSBMLError(errorType_t type, const SBMLError_t *error)
+{  
+  SolverError_error(type, XMLError_getErrorId((const XMLError_t *)error),
+		    "libSBML ERROR\n\t\t\tSEVERITY: %d\n\t\t\tMESSAGE:  %s\n",
+		    XMLError_getSeverity((const XMLError_t *)error),
+		    XMLError_getMessage((const XMLError_t *)error));
+}
+
+/** Loads, validates and parses an SBML file
+
+    also converts SBML level 1 to level 2 files, return NULL if errors
+    were encountered during libSBML validation and consistency check,
+    stores libSBML warngings */
+SBMLDocument_t *
+parseModel(const char *file, int printMessage, int validate)
+{
+  unsigned int i, errors, severity;
+  SBMLDocument_t *d;
+  SBMLDocument_t *d2;
+  SBMLReader_t *sr;
+  const SBMLError_t *error;
+
+  if (  printMessage )
+  {
+    fprintf(stderr, "Validating SBML.\n");
+    fprintf(stderr, "This can take a while for SBML level 2.\n");
+  }
+  
+  sr = SBMLReader_create();
+  d = SBMLReader_readSBML(sr, file);
+  SBMLReader_free(sr);
+
+  errors = SBMLDocument_getNumErrors(d); 
+    
+  /*!!! redo error handling with libsbml 3 */
+  if ( errors != 0 && validate )
+    errors += SBMLDocument_checkConsistency(d); 
+
+  for ( i =0 ; i != errors; i++ )
+  {
+    error = SBMLDocument_getError(d, i);
+    severity = XMLError_getSeverity((const XMLError_t *)error);
+    if ( severity < 2 ) /* infos and warnings */
+      storeSBMLError(WARNING_ERROR_TYPE, error);
+    else
+    {
+      /* errors and fatals */
+      storeSBMLError(FATAL_ERROR_TYPE, error);
+      SBMLDocument_free(d);
+      return NULL;
+    }
+  }
+
+
+  
+  /* convert level 1 models to level 2 */
+  if ( SBMLDocument_getLevel(d) == 1 )
+  {
+    d2 = convertModel(d); 
+    SBMLDocument_free(d);
+ 
+    if ( printMessage )
+      fprintf(stderr, "SBML converted from level 1 to level 2.\n"); 
+    d = d2; 
+  } 
+ 
+  return (d);
+}
+
+SBMLDocument_t *convertModel (SBMLDocument_t *d1)
+{
+  unsigned int i, severity;
+  SBMLDocument_t *d2;
+  const SBMLError_t *error;
+  
+  d2 = SBMLDocument_clone(d1);
+  SBMLDocument_setLevelAndVersion(d2, 2, 1);
+  
+  for ( i =0 ; i != SBMLDocument_getNumErrors(d1); i++ )
+  {
+    error = SBMLDocument_getError(d1, i);
+    severity = XMLError_getSeverity((const XMLError_t *)error);
+    if ( severity < 2 ) /* infos and warnings */
+      storeSBMLError(WARNING_ERROR_TYPE, error);
+    else
+    {
+      /* errors and fatals */
+      storeSBMLError(FATAL_ERROR_TYPE, error);
+      SBMLDocument_free(d2);
+      return NULL;
+    }
+  }  
+
+  return d2;
+}
+
+/* End of file */
diff --git a/src/sbmlResults.c b/src/sbmlResults.c
new file mode 100644
index 0000000..f3d13f8
--- /dev/null
+++ b/src/sbmlResults.c
@@ -0,0 +1,522 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2009-02-12 18:18:56 raim>
+  $Id: sbmlResults.c,v 1.23 2009/02/12 09:24:13 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/*! \defgroup sbmlResults SBML Results Interface
+    \ingroup odeSolver
+    
+    \brief This module contains interfaces to the results structures
+    returned by the high level interfaces to SOSlib
+
+*/
+/*@{*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* libSBML header files */
+#include <sbml/SBMLTypes.h>
+
+/* own header files */
+#include "sbmlsolver/sbmlResults.h"
+#include "sbmlsolver/solverError.h"
+
+
+static timeCourseArray_t *TimeCourseArray_create(int names, int timepoints);
+static void TimeCourseArray_free(timeCourseArray_t *);
+static timeCourse_t *TimeCourse_create(int timepoints);
+static void TimeCourse_free(timeCourse_t *);
+static timeCourse_t *TimeCourseArray_getTimeCourse(const char *,
+						   timeCourseArray_t *);
+static void TimeCourseArray_dump(const timeCourseArray_t *, const timeCourse_t *);
+
+
+/** results as returned by _odeSolver ***/
+
+
+/** Returns the timeCourse for the integration time points
+*/
+
+SBML_ODESOLVER_API timeCourse_t *SBMLResults_getTime(SBMLResults_t *results)
+{
+  return results->time;
+}
+
+
+/** Returns the number of time points, including initial time
+*/
+
+SBML_ODESOLVER_API int SBMLResults_getNout(const SBMLResults_t *res)
+{
+  return res->time->timepoints;
+}
+
+
+/** Returns the number of model constants for which
+    sensitivities have been calculated
+*/
+
+SBML_ODESOLVER_API int SBMLResults_getNumSens(const SBMLResults_t *res)
+{
+  return res->nsens;
+}
+
+
+/** Returns the name (SBML ID) of the ith constants for which
+    sensitivities have been calculated, where
+    0 <= i < SBMLResults_getNumSens
+*/
+
+SBML_ODESOLVER_API const char *SBMLResults_getSensParam(const SBMLResults_t *res, int i)
+{
+  return res->param[i];
+}
+
+
+/** Returns the timeCourse for a  variable (non-constant) compartment.
+    For a constant compartment NULL is returned.
+*/
+
+SBML_ODESOLVER_API timeCourse_t *Compartment_getTimeCourse(Compartment_t *c, SBMLResults_t *results)
+{
+  return TimeCourseArray_getTimeCourse(Compartment_getId(c),
+				       results->compartments);
+}
+
+
+/** Returns the timeCourse for a species, whether constant or not.
+*/
+
+SBML_ODESOLVER_API timeCourse_t *Species_getTimeCourse(Species_t *s, SBMLResults_t *results)
+{
+  return TimeCourseArray_getTimeCourse(Species_getId(s), results->species);
+}
+
+
+/** Returns the timeCourse for a variable (non-constant) parameters.
+    For a constant parameter NULL is returned.
+*/
+
+SBML_ODESOLVER_API timeCourse_t *Parameter_getTimeCourse(Parameter_t *p, SBMLResults_t *results)
+{
+  return TimeCourseArray_getTimeCourse(Parameter_getId(p),results->parameters);
+}
+
+
+/** Returns the timeCourse for a species, variable compartment or parameter
+    or a reaction flux with the corresponding SBML ID.
+*/
+
+SBML_ODESOLVER_API timeCourse_t *SBMLResults_getTimeCourse(SBMLResults_t *results, const char *id)
+{
+  timeCourse_t *tc;
+  tc = TimeCourseArray_getTimeCourse(id, results->species);
+  if ( tc != NULL )
+    return tc;
+  tc = TimeCourseArray_getTimeCourse(id, results->compartments);
+  if ( tc != NULL )
+    return tc;
+  tc = TimeCourseArray_getTimeCourse(id, results->parameters);
+  if ( tc != NULL )
+    return tc;
+
+  tc = TimeCourseArray_getTimeCourse(id, results->fluxes);
+  if ( tc != NULL )
+    return tc;
+
+  return NULL;
+}
+/** Frees SBMLResults structure
+*/
+
+SBML_ODESOLVER_API void SBMLResults_free(SBMLResults_t *results)
+{
+  if (!results) return;
+  TimeCourse_free(results->time);
+  TimeCourseArray_free(results->species);
+  TimeCourseArray_free(results->compartments);
+  TimeCourseArray_free(results->parameters);
+  TimeCourseArray_free(results->fluxes);
+  free(results);
+}
+
+
+/** Prints the timeCourses of all SBML species
+*/
+
+SBML_ODESOLVER_API void SBMLResults_dumpSpecies(const SBMLResults_t *results)
+{
+  printf("## Printing Species time courses\n");
+  TimeCourseArray_dump(results->species, results->time);
+}
+
+
+/** Prints the timeCourses of all variable SBML compartments
+*/
+
+SBML_ODESOLVER_API void SBMLResults_dumpCompartments(const SBMLResults_t *results)
+{
+  printf("## Printing Variable Compartment time courses\n");
+  TimeCourseArray_dump(results->compartments, results->time);
+}
+
+
+/** Prints the timeCourses of all variable SBML parameters.
+*/
+
+SBML_ODESOLVER_API void SBMLResults_dumpParameters(const SBMLResults_t *results)
+{
+  printf("## Printing Variable Parameter time courses\n");
+  TimeCourseArray_dump(results->parameters, results->time);
+}
+
+
+/**  Prints the timeCourses of all SBML reaction fluxes
+*/
+
+SBML_ODESOLVER_API void SBMLResults_dumpFluxes(const SBMLResults_t *results)
+{
+  printf("## Printing Reaction Flux time courses\n");
+  TimeCourseArray_dump(results->fluxes, results->time);
+}
+
+
+/** Prints the timeCourses of all SBML species, of variable
+    compartments and parameters, and of reaction fluxes  
+*/
+
+SBML_ODESOLVER_API void SBMLResults_dump(const SBMLResults_t *results)
+{
+  printf("### Printing All Results \n");
+  SBMLResults_dumpCompartments(results);
+  SBMLResults_dumpSpecies(results);
+  SBMLResults_dumpParameters(results);
+  SBMLResults_dumpFluxes(results);
+}
+
+
+
+/*** results matrix as returned by _odeSolverBatch parameter variation ***/
+
+/** Returns the number of SBMLResults present in the array of results,
+    returned by batch function
+*/
+
+SBML_ODESOLVER_API int SBMLResultsArray_getNumResults(const SBMLResultsArray_t *resA)
+{
+  return resA->size;  
+}
+
+/** Returns the SBMLResults for the ith designpoint, i.e. 
+    parameter combination, from the a batch run
+*/
+
+SBML_ODESOLVER_API SBMLResults_t *SBMLResultsArray_getResults(SBMLResultsArray_t *resA, int i)
+{
+  return resA->results[i];  
+}
+
+
+/** Frees the SBMLResultArray from a parameter variation batch run 
+*/
+
+SBML_ODESOLVER_API void SBMLResultsArray_free(SBMLResultsArray_t *resA)
+{
+  int i;  
+
+  if (!resA) return;
+  for ( i=0; i<resA->size; i++ )
+    SBMLResults_free(resA->results[i]);
+  
+  free(resA->results);    
+  free(resA);    
+}
+
+/** @} */
+
+/*! \defgroup timeCourse TimeCourse Interface
+    \ingroup sbmlResults
+    
+    This module contains interfaces to the timeCourse structure
+    which can be retrieved from the SBMLResults structure
+
+*/
+/*@{*/
+
+
+/** Returns the variable name (SBML ID) of a timeCourse
+*/
+
+SBML_ODESOLVER_API const char*TimeCourse_getName(const timeCourse_t *tc)
+{
+  return (const char*) tc->name;
+}
+
+
+/** Returns the number of timepoints in a timeCourse
+*/
+
+SBML_ODESOLVER_API int TimeCourse_getNumValues(const timeCourse_t *tc)
+{
+  return tc->timepoints;
+}
+
+
+/**  Returns ith value in a timeCourse, where
+     0 <= i < TimeCourse_getNumValues
+*/
+
+SBML_ODESOLVER_API double TimeCourse_getValue(const timeCourse_t *tc, int i)
+{
+  return tc->values[i];
+}
+
+/**  Returns the sensitivity to ith constant at jth time step, where
+     0 <= i < SBMLResults_getNumSens, and
+     0 <= j < TimeCourse_getNumValues
+*/
+
+SBML_ODESOLVER_API double TimeCourse_getSensitivity(const timeCourse_t *tc, int i, int j)
+{
+  return tc->sensitivity[i][j];
+}
+
+
+/** @} */
+
+/**** NON-API FUNCTIONS ****/
+
+/* size is numsteps^numparams !! */
+SBMLResultsArray_t *
+SBMLResultsArray_allocate(int size)
+{
+  SBMLResultsArray_t * res;
+  
+  ASSIGN_NEW_MEMORY(res, struct _SBMLResultsArray, NULL);
+  ASSIGN_NEW_MEMORY_BLOCK(res->results, size, struct _SBMLResults *, NULL);
+  res->size = size;
+  return(res);
+}
+
+
+/* The function SBMLResults SBMLResults_create(Model_t *m, int timepoints)
+   allocates memory for simulation results (time courses) mapped back
+   on SBML structures (i.e. species, and non-constant compartments
+   and parameters.  */
+SBMLResults_t *SBMLResults_create(Model_t *m, int timepoints)
+{
+  unsigned int i, num_reactions, num_species, num_compartments, num_parameters;
+  Species_t *s;
+  Compartment_t *c;
+  Parameter_t *p;
+  Reaction_t *r;
+  SBMLResults_t *results;
+  timeCourse_t *tc;
+
+  ASSIGN_NEW_MEMORY(results, struct _SBMLResults, NULL);
+  
+  /* Allocating the time array  */
+  results->time =  TimeCourse_create(timepoints);
+  ASSIGN_NEW_MEMORY_BLOCK(results->time->name, 5, char, NULL);
+  sprintf(results->time->name, "time");
+  
+  /* Allocating arrays for all SBML species */
+  num_species = Model_getNumSpecies(m);
+  results->species = TimeCourseArray_create(num_species, timepoints);
+
+  
+  /* Writing species names */
+  for ( i=0; i<Model_getNumSpecies(m); i++)
+  {
+    s = Model_getSpecies(m, i);
+    tc = results->species->tc[i];
+    ASSIGN_NEW_MEMORY_BLOCK(tc->name, strlen(Species_getId(s))+1, char, NULL);
+    sprintf(tc->name, "%s", Species_getId(s));
+  }
+
+  /* Allocating arrays for all variable SBML compartments */
+  num_compartments = 0;
+  for ( i=0; i<Model_getNumCompartments(m); i++ ) 
+    if ( ! Compartment_getConstant(Model_getCompartment(m, i)) )
+      num_compartments++;
+  
+  results->compartments = TimeCourseArray_create(num_compartments, timepoints);
+  /* Writing variable compartment names */
+  for ( i=0; i<Model_getNumCompartments(m); i++)
+  {
+    c = Model_getCompartment(m, i);
+    if ( ! Compartment_getConstant(c) )
+    {
+      tc = results->compartments->tc[i];
+      ASSIGN_NEW_MEMORY_BLOCK(tc->name, strlen(Compartment_getId(c))+1,
+			      char, NULL);
+      sprintf(tc->name, "%s", Compartment_getId(c));
+    }
+  }
+
+  /* Allocating arrays for all variable SBML parameters */
+  num_parameters = 0;
+  for ( i=0; i<Model_getNumParameters(m); i++ ) 
+    if ( ! Parameter_getConstant(Model_getParameter(m, i)) )
+      num_parameters++;
+  
+  results->parameters = TimeCourseArray_create(num_parameters, timepoints);
+  
+  /* Writing variable parameter names */
+  num_parameters = 0;
+  for ( i=0; i<Model_getNumParameters(m); i++)
+  {
+    p = Model_getParameter(m, i);
+    if ( ! Parameter_getConstant(p) )
+    {
+      tc = results->parameters->tc[num_parameters];
+      ASSIGN_NEW_MEMORY_BLOCK(tc->name, strlen(Parameter_getId(p))+1, char,
+			      NULL);
+      sprintf(tc->name, "%s", Parameter_getId(p));
+      num_parameters++;
+    }
+  }  
+
+  /* Allocating arrays for all variable SBML reactions */
+  num_reactions = Model_getNumReactions(m);
+  results->fluxes = TimeCourseArray_create(num_reactions, timepoints);
+  /* Writing reaction names */
+  for ( i=0; i<Model_getNumReactions(m); i++ )
+  {
+    r = Model_getReaction(m, i);
+    tc = results->fluxes->tc[i];
+    ASSIGN_NEW_MEMORY_BLOCK(tc->name, strlen(Reaction_getId(r))+1, char, NULL);
+    sprintf(tc->name, "%s", Reaction_getId(r));
+  }
+
+  return results;
+}
+
+static timeCourseArray_t *TimeCourseArray_create(int num_val, int timepoints)
+{
+  int i;
+  timeCourseArray_t *tcA;
+
+  ASSIGN_NEW_MEMORY(tcA, struct timeCourseArray, NULL);
+  tcA->num_val = num_val;
+   /* num_val time course structures */  
+  ASSIGN_NEW_MEMORY_BLOCK(tcA->tc, num_val, struct timeCourse *, NULL);
+  for ( i=0; i<num_val; i++ )
+    tcA->tc[i] = TimeCourse_create(timepoints);
+  
+  return tcA;
+}
+
+static void TimeCourseArray_free(timeCourseArray_t *tcA)
+{
+  int i;
+  for ( i=0; i<tcA->num_val; i++ )
+    TimeCourse_free(tcA->tc[i]);
+  free(tcA->tc);
+  free(tcA);  
+}
+
+static timeCourse_t *TimeCourse_create(int timepoints)
+{
+  timeCourse_t *tc;
+  ASSIGN_NEW_MEMORY(tc, struct timeCourse, NULL);
+  tc->timepoints = timepoints;
+  /* timecourses variable matrix */
+  ASSIGN_NEW_MEMORY_BLOCK(tc->values, timepoints, double, NULL);  
+  return tc;
+}
+
+static void TimeCourse_free(timeCourse_t *tc)
+{
+  free(tc->name);
+  free(tc->values);
+  free(tc);
+}
+
+
+/* */
+static
+void TimeCourseArray_dump(const timeCourseArray_t *tcA, const timeCourse_t *time)
+{
+  int i, j;
+  timeCourse_t *tc;
+  
+  /* print all species  */
+  /* print variable compartments */
+  if ( tcA == NULL ) 
+    printf("## No Values.\n");
+  else if ( tcA->num_val == 0 ) 
+    printf("## No Values.\n");
+  else
+  {    
+    printf("#time ");
+    for ( j=0; j<tcA->num_val; j++)
+    {
+      tc = tcA->tc[j];
+      printf("%s ", tc->name);
+    }
+    printf("\n");
+    for ( i=0; i<time->timepoints; i++ )
+    {
+      printf("%g ", time->values[i]);
+      for ( j=0; j<tcA->num_val; j++)
+      {
+	tc = tcA->tc[j];
+	printf("%g ", tc->values[i]);
+      }
+      printf("\n");
+    }
+  }  
+}
+
+static timeCourse_t *TimeCourseArray_getTimeCourse(const char *id, timeCourseArray_t *tcA)
+{
+  int i;
+  timeCourse_t *tc;
+  for ( i=0; i<tcA->num_val; i++ )
+  {
+    tc = tcA->tc[i];
+    if ( strcmp(id, tc->name) == 0 )
+      return tc;
+  }
+  return NULL;
+}
+
+
+/* End of file */
diff --git a/src/sbmlsolver/ASTCompiler/Makefile b/src/sbmlsolver/ASTCompiler/Makefile
new file mode 100644
index 0000000..4196b0a
--- /dev/null
+++ b/src/sbmlsolver/ASTCompiler/Makefile
@@ -0,0 +1,2 @@
+DEFAULT:
+	gcc -ansi -std=iso9899:1990 arithmeticCompilerTest.c -lm
diff --git a/src/sbmlsolver/ASTCompiler/arithmeticCompiler.c b/src/sbmlsolver/ASTCompiler/arithmeticCompiler.c
new file mode 100644
index 0000000..ade163f
--- /dev/null
+++ b/src/sbmlsolver/ASTCompiler/arithmeticCompiler.c
@@ -0,0 +1,2478 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+
+/* IN THIS FILE EMULATES THE ENVIRONMENT FOR THE CODE GENERATOR AND MUST BE CHANGED IN THE FRAMEWORK */
+/*#include "interfaceSimulation.c"*/
+
+/* WIN TEST */
+/* #define _WIN32 */
+
+#ifndef _WIN32
+/*!!! __USE_MISC required for MAP_ANONYMOUS: why and what is it good for?*/
+#define __USE_MISC
+#include <sys/mman.h> /* LINUX ONLY! */
+#endif
+
+/* constants definded as in math.h (not in ANSI C/ISO C90) */
+#ifndef M_E
+#define	M_E		2.7182818284590452354
+#endif
+#ifndef M_PI
+#define	M_PI		3.14159265358979323846
+#endif
+
+/* quasi assembler, helps for better readability */
+/* 32bit section */
+#define ass_F2XM1			addByte(c,0xd9); addByte(c,0xf0);
+#define ass_FABS			addByte(c,0xd9); addByte(c,0xe1);
+#define ass_FADD_st(i)		addByte(c,0xd8); addByte(c,0xc0+i);
+#define ass_FADDP_st(i)		addByte(c,0xde); addByte(c,0xc0+i);
+#define ass_FADD_mem		addByte(c,0xdc); addByte(c,0x05);
+#define ass_FCHS			addByte(c,0xd9); addByte(c,0xe0);
+#define ass_FCMOVB_st(i)	addByte(c,0xda); addByte(c,0xc0+i);
+#define ass_FCMOVBE_st(i)	addByte(c,0xda); addByte(c,0xd0+i);
+#define ass_FCMOVNB_st(i)	addByte(c,0xdb); addByte(c,0xc0+i);
+#define ass_FCMOVNBE_st(i)	addByte(c,0xdb); addByte(c,0xd0+i);
+#define ass_FCMOVNE_st(i)	addByte(c,0xdb); addByte(c,0xc8+i);
+#define ass_FCOMIP_st(i)	addByte(c,0xdf); addByte(c,0xf0+i);
+#define ass_FCOS			addByte(c,0xd9); addByte(c,0xff);
+#define ass_FDIVP_st(i)		addByte(c,0xde); addByte(c,0xf8+i);
+#define ass_FDIVRP_st(i)	addByte(c,0xde); addByte(c,0xf0+i);
+#define ass_FDIVR_mem		addByte(c,0xdc); addByte(c,0x3d);
+#define ass_FFREE_st(i)		addByte(c,0xdd); addByte(c,0xc0+i);
+#define ass_FINCSTP			addByte(c,0xd9); addByte(c,0xf7);
+#define ass_FLD_mem			addByte(c,0xdd); addByte(c,0x05);
+#define ass_FLD_st(i)		addByte(c,0xd9); addByte(c,0xc0+i);
+#define ass_FLD1			addByte(c,0xd9); addByte(c,0xe8);
+#define ass_FLDL2E			addByte(c,0xd9); addByte(c,0xea);
+#define ass_FLDPI			addByte(c,0xd9); addByte(c,0xeb);
+#define ass_FLDLG2			addByte(c,0xd9); addByte(c,0xec);
+#define ass_FLDLN2			addByte(c,0xd9); addByte(c,0xed);
+#define ass_FLDZ			addByte(c,0xd9); addByte(c,0xee);
+#define ass_FMUL_st(i)		addByte(c,0xd8); addByte(c,0xc8+i);
+#define ass_FMULP_st(i)		addByte(c,0xde); addByte(c,0xc8+i);
+#define ass_FMUL_mem		addByte(c,0xdc); addByte(c,0x0d);
+#define ass_FPATAN			addByte(c,0xd9); addByte(c,0xf3);
+#define ass_FPTAN			addByte(c,0xd9); addByte(c,0xf2);
+#define ass_FRNDINT			addByte(c,0xd9); addByte(c,0xfc);
+#define ass_FSCALE			addByte(c,0xd9); addByte(c,0xfd);
+#define ass_FSIN			addByte(c,0xd9); addByte(c,0xfe);
+#define ass_FSINCOS			addByte(c,0xd9); addByte(c,0xfb);
+#define ass_FSQRT			addByte(c,0xd9); addByte(c,0xfa);
+#define ass_FSTP_st(i)		addByte(c,0xdd); addByte(c,0xd8+i);
+#define ass_FSTP_mem		addByte(c,0xdd); addByte(c,0x1d);
+#define ass_FSUB_st(i)		addByte(c,0xdc); addByte(c,0xe8+i);
+#define ass_FSUBP_st(i)		addByte(c,0xde); addByte(c,0xe8+i);
+#define ass_FSUBR_st(i)		addByte(c,0xd8); addByte(c,0xe8+i);
+#define ass_FSUBRP_st(i)	addByte(c,0xde); addByte(c,0xe0+i);
+#define ass_FSUBR_mem		addByte(c,0xdc); addByte(c,0x2d);
+#define ass_FXCH_st(i)		addByte(c,0xd9); addByte(c,0xc8+i);
+#define ass_FYL2X			addByte(c,0xd9); addByte(c,0xf1);
+/* 64 bit section */
+/* calls a function */
+#define ass_CALL			addByte(c,0xff); addByte(c,0xd0);
+/* moves constant to rax */
+#define ass_MOV_rax			addByte(c,0x48); addByte(c,0xb8);
+/* subtract xmm(i) from xmm(j) and stores result in xmm(j) */
+#define ass_SUBSD(i,j)		addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x5c); addByte(c,0xc0+0x08*j+i);
+/* moves xmm(i) to xmm(j) */
+#define ass_MOVSD(i,j)		addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x11); addByte(c,0xc0+0x08*i+j);
+
+/* variables for the code generator */
+/*codeSize: maximal code length */
+/* codePosition: actual writing code->codePosition in the code array */
+/* FPUstackSize: maximal number of external saved values from the FPU stack */
+/* FPUstackPosition: actual code->codePosition in the FPU extended stack */
+/* storageSize: maximal number of constants that can be stored */
+/* storagePosition: actual number of constants stored */
+/* prog: array for the program code */
+/* FPUstack: extention for the internal FPU stack */
+/* storage: array for storing constants in the arithmetic expression */
+/* evaluate: name of the generated function - CALL THIS FUNCTION TO EVALUATE THE ARITHMETIC EXPRESSION */
+typedef struct {
+	int codeSize, FPUstackSize, storageSize;
+	int codePosition, FPUstackPosition, storagePosition;
+	unsigned char *prog;
+	double *FPUstack, *storage;
+	double (*evaluate)(cvodeData_t*);
+	long long *temp;
+} directCode_t;
+
+/* initializes the basic parameters and allocated the memory */
+void initCode (directCode_t *code, ASTNode_t *AST) {
+
+	int length;
+
+	code->codeSize = 5; /* bytes for basic function construction */
+	code->codePosition = 0;
+	code->storageSize = 0;
+	code->storagePosition = 0;
+	length = analyse(code, AST);
+	if(length <= 8)
+		length = 0;
+		else
+		length -= 8;
+	code->FPUstackSize = length;
+	code->FPUstackPosition = 0;
+	
+#ifndef _WIN32 /* LINUX */
+	code->prog = (unsigned char *)mmap(NULL,code->codeSize,(PROT_EXEC|PROT_READ|PROT_WRITE),(MAP_ANONYMOUS|MAP_PRIVATE), -1, 0);
+#else /* WINDOWS */
+	code->prog = (unsigned char *)malloc(sizeof(unsigned char)*code->codeSize);
+#endif
+
+	code->storage = (double *)malloc(sizeof(double)*code->storageSize);
+	code->FPUstack = (double *)malloc(sizeof(double)*code->FPUstackSize);
+
+	code->evaluate = (double (*)())code->prog;
+	}
+
+/* initializes the basic parameters and allocated the memory  64 bit*/
+void initCode64 (directCode_t *code, ASTNode_t *AST) {
+
+	int length;
+
+	code->codeSize = 19;
+	code->codePosition = 0;
+	code->storageSize = 0;
+	code->storagePosition = 0;
+	length = analyse64(code, AST);
+	if(length <= 8)
+		length = 0;
+		else
+		length -= 8;
+	code->FPUstackSize = length;
+	code->FPUstackPosition = 0;
+
+#ifndef _WIN32 /* LINUX */
+code->prog = (unsigned char *)mmap(NULL,code->codeSize,(PROT_EXEC|PROT_READ|PROT_WRITE),(MAP_ANONYMOUS|MAP_PRIVATE), -1, 0);
+#else /* WINDOWS */
+code->prog = (unsigned char *)malloc(sizeof(unsigned char)*code->codeSize);
+#endif
+	
+	code->storage = (double *)malloc(sizeof(double)*code->storageSize);
+	code->FPUstack = (double *)malloc(sizeof(double)*code->FPUstackSize);
+	code->temp = (long long *)malloc(sizeof(long long));
+
+	code->evaluate = (double (*)())code->prog;
+	}
+
+/* adds a byte to the code, extends the memory, if necessary */
+void addByte (directCode_t *code, unsigned char byte) {
+
+	int i;
+	unsigned char *bigger;
+	
+	if(code->codePosition >= code->codeSize)
+		printf("programm is too long\n");
+	
+	code->prog[code->codePosition++] = byte;
+	}
+
+/* adds an integer to the code */
+void addInt (directCode_t *c, int number) {
+	unsigned int num;
+	num = number;
+	addByte(c,num%256); num /= 256;
+	addByte(c,num%256); num /= 256;
+	addByte(c,num%256); num /= 256;
+	addByte(c,num%256);
+	}
+
+/* adds an adress to the code */
+void addAddress (directCode_t *c, long long addy) {
+	int i, addressLength = sizeof(void (*)());
+	
+	for(i = 0 ; i < addressLength ; i++) {
+		addByte(c,addy%256);
+		addy /= 256;
+		}
+	}
+
+/* adds the parameter to the CPU stack, computes the necessary jump parameters for a function call and adds a call to the code */
+void callMathFunction (directCode_t *c, long long fun) {
+	addByte(c,0x83); addByte(c,0xec); addByte(c,0x08); /* SUB ESP 8 (parameter) */
+	addByte(c,0xdd); addByte(c,0x1c); addByte(c,0x24); /* load parameter 1 */
+	fun -= ((long long)c->prog + c->codePosition + sizeof(void (*)()) + 1);
+	addByte(c, 0xe8); addAddress(c, fun); /* CALL */
+	addByte(c,0x83); addByte(c,0xc4); addByte(c,0x08); /* ADD ESP 8 (parameter) */
+	}
+
+/* computes the necessary jump parameters for a function call and adds a call to the code */
+void callFunction (directCode_t *c, long long fun) {
+	fun -= ((long long)c->prog + c->codePosition + sizeof(void (*)()) + 1);
+	addByte(c, 0xe8); addAddress(c, fun); /* CALL */
+	}
+
+/* loads the jump destination and does the call */
+void callFunction64 (directCode_t *c, long long fun) {
+	ass_MOV_rax
+	addAddress(c,fun);
+	ass_CALL
+	}
+
+/* adds an element of the FPU stack to the external stack */
+void pushStorage (directCode_t *c) {
+	if(c->FPUstackPosition >= c->FPUstackSize)
+		printf("code->FPUstack overflow\n");
+	ass_FSTP_mem
+	addAddress(c, (long long)&c->FPUstack[c->FPUstackPosition++]); /* code->FPUstack place */
+	}
+
+/* pops an element from the external stack into the FPU stack */
+void popAddress (directCode_t *code) {
+	if(code->FPUstackPosition <= 0)
+		printf("code->FPUstack underflow\n");
+	addAddress(code, (long long)&code->FPUstack[--code->FPUstackPosition]); /* code->FPUstack code->codePosition */
+	}
+
+/* pushs the element in the xmm0 register to the external stack */
+void pushStorage64 (directCode_t *c) {
+	if(c->FPUstackPosition >= c->FPUstackSize)
+		printf("code->FPUstack overflow\n");
+	ass_MOV_rax
+	addAddress(c, (long long)&c->FPUstack[c->FPUstackPosition++]); /* code->FPUstack place */
+	addByte(c, 0xf2); addByte(c, 0x0f); addByte(c, 0x11); addByte(c, 0x00); /* MOVSD xmm0 (rax) */
+	}
+
+/* pops an element form the external stack to the xmm1 register */
+void popStorage64 (directCode_t *c) {
+	if(c->FPUstackPosition <= 0)
+		printf("code->FPUstack underflow\n");
+	ass_MOV_rax
+	addAddress(c, (long long)&c->FPUstack[--c->FPUstackPosition]); /* code->FPUstack */
+	addByte(c, 0xf2); addByte(c, 0x0f); addByte(c, 0x10); addByte(c, 0x08); /* MOVSD (rax) xmm1 */
+	}
+
+/* saves a constant in the code->storage an adds the address to the code */
+void addConstant (directCode_t *code, double value) {
+	if(code->storagePosition >= code->storageSize)
+		printf("code->storage overflow\n");
+	code->storage[code->storagePosition] = value;
+	addAddress(code, (long long)&code->storage[code->storagePosition++]);
+	}
+
+/* saves a constant in the code->storage an adds the address to the code */
+void addConstant64 (directCode_t *c, double value) {
+	int i;
+	long long *test;
+	test = (long long*)&value;
+	if(value >= 0)
+		for(i = 0 ; i < 8 ; i++) {
+			addByte(c,*test%256);
+			*test /= 256;
+			}
+		else
+		for(i = 0 ; i < 8 ; i++) {
+			addByte(c,*test%256-1);
+			*test /= 256;
+			}
+	}
+
+/* extern function for the case AST_NAME */
+double getAST_Name(ASTNode_t *n, cvodeData_t *data) {
+	int i, j;
+	double found = 0, datafound, findtol=1e-5, result;
+	time_series_t *ts = data->model->time_series;
+	
+	if (ASTNode_isSetIndex(n)) {
+		if (ASTNode_isSetData(n)) {
+		/* if continuous data is observed, obtain interpolated result */  
+		if ((data->model->discrete_observation_data != 1) || (data->model->compute_vector_v != 1)) {
+			result = call(ASTNode_getIndex(n),
+			data->currenttime, ts);
+			}
+			else  /* if discrete data is observed, simply obtain value from time_series */
+			{
+			datafound = 0;
+			i = data->TimeSeriesIndex;
+			if (fabs(data->currenttime - ts->time[i]) < findtol) {
+				result = ts->data[ASTNode_getIndex(n)][i];
+				datafound++;
+				}
+			if (datafound != 1) {
+/*				SolverError_error(FATAL_ERROR_TYPE,
+					SOLVER_ERROR_AST_EVALUATION_FAILED_DISCRETE_DATA,
+					"use of discrete time series data failed; none or several time points matching current time"); */
+				result = 0; /*  break;  */
+				}
+				else
+				found = 1;
+			}
+		}
+		else
+		{
+		result = data->value[ASTNode_getIndex(n)];
+		}
+	found++;
+	}
+	if (found == 0) {
+		if (strcmp(ASTNode_getName(n),"time") == 0 ||
+			strcmp(ASTNode_getName(n),"Time") == 0 ||
+			strcmp(ASTNode_getName(n),"TIME") == 0) {
+			result = (double) data->currenttime;
+			found++;
+			}
+		}
+	if (found == 0) {
+		for (j=0; j<data->nvalues; j++) {
+			if (strcmp(ASTNode_getName(n),data->model->names[j]) == 0) {
+				result = data->value[j];
+				found++;
+				}
+			}
+		}
+	if (found == 0) {
+/*		SolverError_error(FATAL_ERROR_TYPE,
+			SOLVER_ERROR_AST_EVALUATION_FAILED_MISSING_VALUE,
+			"No value found for AST_NAME %s . Defaults to Zero "
+			"to avoid program crash", ASTNode_getName(n)); */
+		result = 0;
+		}
+	return result;
+	}
+
+
+double getAST_Name_Time(cvodeData_t *data) {
+	return data->currenttime;
+	}
+
+/* some mathematical functions */
+static double aCosh(double x) {
+	return log(x + (sqrt(x - 1) * sqrt(x + 1)));
+	}
+
+static double aCot(double x) {
+	return atan(1.0/x);
+	}
+
+static double aCoth(double x) {
+	return log((x + 1.) / (x - 1.))/2.;
+	}
+
+static double aCsc(double x) {
+	return asin(1.0/x);
+	}
+
+static double aCsch(double x) {
+	return log((1 + sqrt(1 + x * x)) / x);
+	}
+
+static double aSec(double x) {
+	return acos(1.0/x);
+	}
+
+static double aSech(double x) {
+	return log((1 + sqrt(1 - x * x)) / x);
+	}
+
+static double aSinh(double x) {
+	return log(x + sqrt((x * x) + 1));
+	}
+
+static double aTanh(double x) {
+	return (log(1 + x) - log(1-x))/2 ;
+	}
+
+static double cot(double x) {
+	return 1.0/tan(x);
+	}
+
+static double coth(double x) {
+	return 1.0/tanh(x);
+	}
+
+static double csc(double x) {
+	return 1.0/sin(x);
+	}
+
+static double csch(double x) {
+	return 1.0/sinh(x);
+	}
+
+static double factorial(double x) {
+	int result = 0;
+	for( result = 1 ; x > 1 ; x--)
+		result *= x;
+	return (double) result;
+	}
+
+static double root(double x, double y) {
+	return pow(y, 1.0/x);
+	}
+
+static double sec(double x) {
+	return 1.0/cos(x);
+	}
+
+static double sech(double x) {
+	return 1.0/cosh(x);
+	}
+
+/* generates the code from the abstract syntax tree */
+void generate (directCode_t *c, ASTNode_t *AST) {
+	
+	int i, j, childnum;
+	long long save;
+	double st;
+	ASTNodeType_t type;
+	type = ASTNode_getType(AST);
+	childnum = ASTNode_getNumChildren(AST);
+	cvodeData_t *test;
+	
+	switch(type) {
+		case AST_INTEGER:
+			st = (double) ASTNode_getInteger(AST);
+			ass_FLD_mem
+			addConstant(c,st);
+			break;
+		case AST_REAL: /* load double */
+		case AST_REAL_E:
+		case AST_RATIONAL:
+			st = ASTNode_getReal(AST);
+			ass_FLD_mem
+			addConstant(c,st);
+			break;
+		case AST_NAME:
+			if (ASTNode_isSetIndex(AST)) {
+				if (ASTNode_isSetData(AST)) {
+					/* function call (old version) */
+					addByte(c,0x8b); addByte(c,0x45); addByte(c,0x08); /* MOV EAX ESP+8 */
+					addByte(c,0x50); /* PUSH data - in real: PUSH EAX */
+					addByte(c,0x68); addAddress(c,(long long)AST); /* PUSH AST */
+					callFunction(c,(long long)getAST_Name);
+					addByte(c,0x83); addByte(c,0xc4); addByte(c,0x08); /* ADD ESP 8 (parameter)  // delete parameter from the stack */
+					break;
+				}
+				else
+				{
+					/* data->value[ASTNode_getIndex(AST)]; */
+					test = (cvodeData_t *)malloc(sizeof(cvodeData_t));
+					addByte(c,0x8b); addByte(c,0x45); addByte(c,0x08); /* MOV EAX ESP+8 */
+					addByte(c,0x8b); addByte(c,0x40); addByte(c,(long long)&test->value - (long long)test); /* MOX EAX [EAX + offset] */
+					addByte(c,0xdd); addByte(c,0x80); addInt(c,ASTNode_getIndex(AST)*sizeof(double)); /* FLD [EAX+index] */
+					free(test);
+				}
+				break;
+			}
+			if (strcmp(ASTNode_getName(AST),"time") == 0 ||
+				strcmp(ASTNode_getName(AST),"Time") == 0 ||
+				strcmp(ASTNode_getName(AST),"TIME") == 0) {
+				test = (cvodeData_t *)malloc(sizeof(cvodeData_t));
+				addByte(c,0x8b); addByte(c,0x45); addByte(c,0x08); /* MOV EAX ESP+8 */
+				addByte(c,0xdd); addByte(c,0x40); addByte(c,(long long)&test->currenttime - (long long)test); /* FLD [EAX+offset] */
+				free(test);
+				break;
+				}
+/* OLD VERSION */
+			addByte(c,0x8b); addByte(c,0x45); addByte(c,0x08); /* MOV EAX ESP+8 */
+			addByte(c,0x50); /* PUSH data - in real: PUSH EAX */
+			addByte(c,0x68); addAddress(c,(long long)AST); /* PUSH AST */
+			callFunction(c,(long long)getAST_Name);
+			addByte(c,0x83); addByte(c,0xc4); addByte(c,0x08); /* ADD ESP 8 (parameter)  // delete parameter from the stack */
+			break;
+
+		case AST_FUNCTION_DELAY: /* not implemented */
+			ass_FLDZ
+			break;
+		case AST_NAME_TIME:
+			test = (cvodeData_t *)malloc(sizeof(cvodeData_t));
+			addByte(c,0x8b); addByte(c,0x45); addByte(c,0x08); /* MOV EAX ESP+8 */
+			addByte(c,0xdd); addByte(c,0x40); addByte(c,(long long)&test->currenttime - (long long)test); /* FLD [EAX+8] */
+			free(test);
+			break;
+			/* OUTDATED */
+			addByte(c,0x8b); addByte(c,0x45); addByte(c,0x08); /* MOV EAX ESP+8 */
+			addByte(c,0x50); /* PUSH data - in real: PUSH EAX */
+			callFunction(c,(long long)getAST_Name_Time);
+			addByte(c,0x83); addByte(c,0xc4); addByte(c,0x04); /* ADD ESP 4 (parameter)  // delete parameter from the stack */
+			break;
+
+		case AST_CONSTANT_E:
+			ass_FLDL2E
+			ass_FLD1
+			ass_FSUBP_st(1)
+			ass_F2XM1
+			ass_FLD1
+			ass_FADDP_st(1)
+			ass_FLD1
+			ass_FADD_st(0)
+			ass_FMULP_st(1)
+			break;
+		case AST_CONSTANT_FALSE: /* 0.0 */
+			ass_FLDZ
+			break;
+		case AST_CONSTANT_PI: /* pi */
+			ass_FLDPI
+			break;
+		case AST_CONSTANT_TRUE: /* 1.0 */
+			ass_FLD1
+			break;
+
+		case AST_PLUS: /* add values */
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				if(analyseFPU(child(AST,i)) >= 8) {
+					pushStorage(c); /* save old result */
+					generate(c,child(AST,i));
+					ass_FADD_mem popAddress(c); /* reload old result and add */
+					} else {
+					generate(c,child(AST,i));
+					ass_FADDP_st(1)
+					}
+				}
+			break;
+		case AST_MINUS: /* sub values */
+		    if ( childnum<2 ) {
+				generate(c,child(AST,0));
+				ass_FCHS
+				} else {
+				generate(c,child(AST,0));
+				if(analyseFPU(child(AST,1)) >= 8) {
+					pushStorage(c); /* save old result */
+					generate(c,child(AST,1));
+					ass_FSUBR_mem popAddress(c); /* reload old result and subtract */
+					} else {
+					generate(c,child(AST,1));
+					ass_FSUBP_st(1)
+					}
+				}
+			break;
+		case AST_TIMES: /* mult values */
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				if(analyseFPU(child(AST,i)) >= 8) {
+					pushStorage(c); /* save old result */
+					generate(c,child(AST,i));
+					ass_FMUL_mem popAddress(c); /* reload old result and mult */
+					} else {
+					generate(c,child(AST,i));
+					ass_FMULP_st(1)
+					}
+				}
+			break;
+		case AST_DIVIDE: /* divide values */
+			generate(c,child(AST,0));
+			if(analyseFPU(child(AST,1)) >= 8) {
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,1));
+				ass_FDIVR_mem popAddress(c); /* reload old result and divide */
+				} else {
+				generate(c,child(AST,1));
+				ass_FDIVP_st(1)
+				}
+			break;
+		case AST_POWER: /* calculates value 1 to the power of value 2 */
+		case AST_FUNCTION_POWER:
+			generate(c,child(AST,0));
+			if(analyseFPU(child(AST,1)) >= 8) {
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,1));
+				ass_FLD1
+				ass_FLD_mem popAddress(c); /* load value 1 */
+				} else {
+				generate(c,child(AST,1));
+				ass_FXCH_st(1)
+				ass_FLD1
+				ass_FXCH_st(1)
+				}
+			ass_FYL2X
+			ass_FMULP_st(1)
+			ass_FLD_st(0)
+			ass_FRNDINT
+			ass_FSUB_st(1)
+			ass_FXCH_st(1)
+			ass_F2XM1
+			ass_FLD1
+			ass_FADDP_st(1)
+			ass_FSCALE
+			ass_FSTP_st(1)
+			break;
+		case AST_LAMBDA: /* not implemented */
+			ass_FLDZ
+			break;
+
+		case AST_FUNCTION: /* user defined function */
+			if (UsrDefFunc == NULL) { /* no function defined */
+				ass_FLDZ
+				}
+				else
+				{
+				save = (long long)&c->FPUstack[c->FPUstackPosition];
+				for (i = 0 ; i < childnum ; i++) { /* compute parameters and store them on the external stack */
+					generate(c,child(AST,i));
+					ass_FSTP_mem
+					addInt(c,(long long)&c->FPUstack[c->FPUstackPosition++]); /* code->FPUstack place */
+					}
+				addByte(c,0x68); addAddress(c,save); /* PUSH array pointer */
+				addByte(c,0x68); addInt(c,childnum); /* PUSH childnum */
+				addByte(c,0x68); addAddress(c,(long long)(char *)ASTNode_getName(AST)); /* PUSH name */
+				callFunction(c,(long long)UsrDefFunc);
+				addByte(c,0x83); addByte(c,0xc4); addByte(c,0x0c); /* ADD ESP 12 (parameter) */
+				c->FPUstackPosition -= childnum;
+				}
+			break;
+		case AST_FUNCTION_ABS: /* absolut value */
+			generate(c,child(AST,0));
+			ass_FABS
+			break;
+		case AST_FUNCTION_ARCCOS: /* arccos = pi/2.0 - arcsin  = pi/2.0 - arctan(value / sqrt(1.0-value^2)) */
+			generate(c,child(AST,0));
+			ass_FLD_st(0)
+			ass_FMUL_st(0)
+			ass_FLD1
+			ass_FSUBRP_st(1)
+			ass_FSQRT
+			ass_FPATAN
+			ass_FLDPI
+			ass_FLD1
+			ass_FADD_st(0)
+			ass_FDIVP_st(1)
+			ass_FSUBRP_st(1)
+			break;
+		case AST_FUNCTION_ARCCOSH: /* arccos hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)aCosh); /* aCosh */
+			break;
+		case AST_FUNCTION_ARCCOT: /* arccot = pi/2.0 - arctan */
+			generate(c,child(AST,0));
+			ass_FLD1
+			ass_FPATAN
+			ass_FLDPI
+			ass_FLD1
+			ass_FADD_st(0)
+			ass_FDIVP_st(1)
+			ass_FSUBRP_st(1)
+			break;
+		case AST_FUNCTION_ARCCOTH: /* arccot hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)aCoth); /* aCoth */
+			break;
+		case AST_FUNCTION_ARCCSC: /* arccsc = arcsin(1.0/value) */
+			generate(c,child(AST,0));
+			ass_FMUL_st(0)
+			ass_FLD1
+			ass_FSUBP_st(1)
+			ass_FSQRT
+			ass_FLD1
+			ass_FXCH_st(1)
+			ass_FPATAN
+			break;
+		case AST_FUNCTION_ARCCSCH: /* arccsc hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)aCsch); /* aCsch */
+			break;
+		case AST_FUNCTION_ARCSEC: /* arccsc = arccos(1.0/value) =  pi/2.0 - arcsin(1.0/value) */
+			generate(c,child(AST,0));
+			ass_FMUL_st(0)
+			ass_FLD1
+			ass_FSUBP_st(1)
+			ass_FSQRT
+			ass_FLD1
+			ass_FXCH_st(1)
+			ass_FPATAN
+			ass_FLDPI
+			ass_FLD1
+			ass_FADD_st(0)
+			ass_FDIVP_st(1)
+			ass_FSUBRP_st(1)
+			break;
+		case AST_FUNCTION_ARCSECH: /* arcsec hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)aSech); /* aSech */
+			break;
+		case AST_FUNCTION_ARCSIN: /* arcsin */
+			generate(c,child(AST,0));
+			ass_FLD_st(0)
+			ass_FMUL_st(0)
+			ass_FLD1
+			ass_FSUBRP_st(1)
+			ass_FSQRT
+			ass_FPATAN
+			break;
+		case AST_FUNCTION_ARCSINH: /* arcsin hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)aSinh); /* asinh */
+			break;
+		case AST_FUNCTION_ARCTAN: /* arctan */
+			generate(c,child(AST,0));
+			ass_FLD1
+			ass_FPATAN
+			break;
+		case AST_FUNCTION_ARCTANH: /* arctan hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)aTanh); /* atanh */
+			break;
+		case AST_FUNCTION_CEILING: /* rounds value to next integer */
+			generate(c,child(AST,0));
+			ass_FLD_st(0)
+			ass_FRNDINT
+			ass_FXCH_st(1)
+			ass_FCOMIP_st(1)
+			ass_FLD1
+			ass_FADD_st(1)
+			ass_FCMOVBE_st(1)
+			ass_FSTP_st(1)
+			break;
+		case AST_FUNCTION_COS: /* cosinus */
+			generate(c,child(AST,0));
+			ass_FCOS
+			break;
+		case AST_FUNCTION_COSH: /* cosinus hyperbilic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)cosh); /* cosh */
+			break;
+		case AST_FUNCTION_COT: /* cotangens = 1/tan */
+			generate(c,child(AST,0));
+			ass_FPTAN
+			ass_FDIVRP_st(1)
+			break;
+		case AST_FUNCTION_COTH: /* coth = 1/tanh */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)tanh); /* tanh */
+			ass_FLD1
+			ass_FDIVRP_st(1)
+			break;
+		case AST_FUNCTION_CSC: /* cosec = 1/sinus */
+			generate(c,child(AST,0));
+			ass_FSIN
+			ass_FLD1
+			ass_FDIVRP_st(1)
+			break;
+		case AST_FUNCTION_CSCH: /* csch = 1/sinh */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)sinh); /* sinh */
+			ass_FLD1
+			ass_FDIVRP_st(1)
+			break;
+		case AST_FUNCTION_EXP: /* exp( value ) */
+			generate(c,child(AST,0));
+			ass_FLDL2E
+			ass_FMULP_st(1)
+			ass_FLD_st(0)
+			ass_FRNDINT
+			ass_FSUB_st(1)
+			ass_FXCH_st(1)
+			ass_F2XM1
+			ass_FLD1
+			ass_FADDP_st(1)
+			ass_FSCALE
+			ass_FSTP_st(1)
+			break;
+		case AST_FUNCTION_FACTORIAL:
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)factorial); /* factorial */
+			break;
+		case AST_FUNCTION_FLOOR: /* rounds value to next integer */
+			generate(c,child(AST,0));
+			ass_FLD_st(0)
+			ass_FRNDINT
+			ass_FXCH_st(1)
+			ass_FCOMIP_st(1)
+			ass_FLD1
+			ass_FSUBR_st(1)
+			ass_FCMOVNB_st(1)
+			ass_FSTP_st(1)
+			break;
+		case AST_FUNCTION_LN: /* log_e */
+			generate(c,child(AST,0));
+			ass_FLDLN2
+			ass_FXCH_st(1)
+			ass_FYL2X
+			break;
+		case AST_FUNCTION_LOG: /* log_10 */
+			generate(c,child(AST,0));
+			ass_FLDLG2
+			ass_FXCH_st(1)
+			ass_FYL2X
+			break;
+		case AST_FUNCTION_PIECEWISE: /* USEFUL? NOT CORRECTLY IMPLEMENTED! */
+			ass_FLDZ
+			pushStorage(c); /* save result */
+		    for ( i = 0 ; i < childnum-1 ; i = i + 2) {
+				generate(c,child(AST,i+1));
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,i));
+				ass_FLD_mem popAddress(c); /* load value 1 */
+				ass_FLDZ
+				ass_FCOMIP_st(1)
+				ass_FFREE_st(0)
+				ass_FINCSTP
+				ass_FLD_mem popAddress(c); /* load result */
+				ass_FCMOVNE_st(1)
+				pushStorage(c); /* save result */
+				ass_FFREE_st(0)
+				ass_FINCSTP
+				}
+			ass_FLD_mem popAddress(c); /* load result */
+			break;
+		/* AST_FUNCTION_POWER see AST_POWER */
+		case AST_FUNCTION_ROOT:
+			generate(c,child(AST,1));
+			if(analyseFPU(child(AST,0)) >= 8) {
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,0));
+				ass_FLD1
+				ass_FLD_mem popAddress(c); /* load value 1 */
+				} else {
+				generate(c,child(AST,0));
+				ass_FXCH_st(1)
+				ass_FLD1
+				ass_FXCH_st(1)
+				}
+			ass_FYL2X
+			ass_FDIVRP_st(1)
+			ass_FLD_st(0)
+			ass_FRNDINT
+			ass_FSUB_st(1)
+			ass_FXCH_st(1)
+			ass_F2XM1
+			ass_FLD1
+			ass_FADDP_st(1)
+			ass_FSCALE
+			ass_FSTP_st(1)
+			break;
+		case AST_FUNCTION_SEC: /* sec = 1/cosinus */
+			generate(c,child(AST,0));
+			ass_FCOS
+			ass_FLD1
+			ass_FDIVRP_st(1)
+			break;
+		case AST_FUNCTION_SECH: /* sech = 1/cosh */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)cosh); /* cosh */
+			ass_FLD1
+			ass_FDIVRP_st(1)
+			break;
+		case AST_FUNCTION_SIN: /* sinus */
+			generate(c,child(AST,0));
+			ass_FSIN
+			break;
+		case AST_FUNCTION_SINH: /* sinus hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)sinh);
+			break;
+		case AST_FUNCTION_TAN: /* tangens */
+			generate(c,child(AST,0));
+			ass_FPTAN
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			break;
+
+			case AST_FUNCTION_TANH: /* tangens hyperbolic */
+			generate(c,child(AST,0));
+			callMathFunction(c,(long long)tanh);
+			break;
+
+/* logical cases depends from 0.0 and 1.0 as initial values */
+		case AST_LOGICAL_AND:
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,i));
+				ass_FMUL_mem popAddress(c); /* reload old result and mult */
+				}
+			break;
+		case AST_LOGICAL_NOT:
+			generate(c,child(AST,0));
+			ass_FLD1
+			ass_FSUBRP_st(1)
+			break;
+		case AST_LOGICAL_OR: /* !(AND !values) */
+			generate(c,child(AST,0));
+			ass_FLD1
+			ass_FSUBRP_st(1)
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,i));
+				ass_FLD1
+				ass_FSUBRP_st(1)
+				ass_FMUL_mem popAddress(c); /* reload old result and mult */
+				}
+			ass_FLD1
+			ass_FSUBRP_st(1)
+			break;
+		case AST_LOGICAL_XOR:
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result */
+				generate(c,child(AST,i));
+				ass_FLD_mem popAddress(c); /* load value 1 */
+				ass_FSUBP_st(1)
+				ass_FABS
+				}
+			break;
+		case AST_RELATIONAL_EQ:
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result to stack*/
+				generate(c,child(AST,i));
+				}
+			ass_FLD1
+			ass_FXCH_st(1)
+			ass_FLDZ
+			ass_FXCH_st(1)
+		    for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				ass_FLD_mem popAddress(c); /* load old value from stack */
+				ass_FCOMIP_st(1)
+				ass_FXCH_st(2)
+				ass_FCMOVNE_st(1)
+				ass_FXCH_st(2)
+				}
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			break;
+		case AST_RELATIONAL_GEQ:
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result to stack*/
+				generate(c,child(AST,i));
+				}
+			ass_FLD1
+			ass_FXCH_st(1)
+			ass_FLDZ
+			ass_FXCH_st(1)
+		    for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				ass_FLD_mem popAddress(c); /* load old value from stack */
+				ass_FXCH_st(1)
+				ass_FCOMIP_st(1)
+				ass_FXCH_st(2)
+				ass_FCMOVB_st(1)
+				ass_FXCH_st(2)
+				}
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			break;
+		case AST_RELATIONAL_GT:
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result to stack*/
+				generate(c,child(AST,i));
+				}
+			ass_FLD1
+			ass_FXCH_st(1)
+			ass_FLDZ
+			ass_FXCH_st(1)
+		    for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				ass_FLD_mem popAddress(c); /* load old value from stack */
+				ass_FXCH_st(1)
+				ass_FCOMIP_st(1)
+				ass_FXCH_st(2)
+				ass_FCMOVBE_st(1)
+				ass_FXCH_st(2)
+				}
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			break;
+		case AST_RELATIONAL_LEQ:
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result to stack*/
+				generate(c,child(AST,i));
+				}
+			ass_FLD1
+			ass_FXCH_st(1)
+			ass_FLDZ
+			ass_FXCH_st(1)
+		    for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				ass_FLD_mem popAddress(c); /* load old value from stack */
+				ass_FXCH_st(1)
+				ass_FCOMIP_st(1)
+				ass_FXCH_st(2)
+				ass_FCMOVNBE_st(1)
+				ass_FXCH_st(2)
+				}
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			break;
+		case AST_RELATIONAL_LT:
+			generate(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage(c); /* save old result to stack*/
+				generate(c,child(AST,i));
+				}
+			ass_FLD1
+			ass_FXCH_st(1)
+			ass_FLDZ
+			ass_FXCH_st(1)
+		    for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				ass_FLD_mem popAddress(c); /* load old value from stack */
+				ass_FXCH_st(1)
+				ass_FCOMIP_st(1)
+				ass_FXCH_st(2)
+				ass_FCMOVNB_st(1)
+				ass_FXCH_st(2)
+				}
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			ass_FFREE_st(0)
+			ass_FINCSTP
+			break;
+
+		default:
+			printf("ERROR: Wrong AST_type\n");
+			ass_FLDZ
+			break;
+		}
+	}
+
+/* generates the code from the abstract syntax tree */
+void generate64 (directCode_t *c, ASTNode_t *AST) {
+	
+	int i, childnum, stack;
+	long long save;
+	double st;
+	ASTNodeType_t type;
+	type = ASTNode_getType(AST);
+	childnum = ASTNode_getNumChildren(AST);
+	cvodeData_t *test;
+	
+	switch(type) {
+		case AST_INTEGER:
+			st = (double) ASTNode_getInteger(AST);
+			ass_MOV_rax
+			addConstant64(c,st);
+			addByte(c,0x48);addByte(c,0x89);addByte(c,0x45);addByte(c,0xf8); /* MOV rax rbp */
+			addByte(c,0xf2);addByte(c,0x0f);addByte(c,0x10); /* MOVSD */
+			addByte(c,0x45);addByte(c,0xf8); /* rbp xmm0 */
+			break;
+		case AST_REAL: /* load double */
+		case AST_REAL_E:
+		case AST_RATIONAL:
+			st = ASTNode_getReal(AST);
+			ass_MOV_rax
+			addConstant64(c,st);
+			addByte(c,0x48);addByte(c,0x89);addByte(c,0x45);addByte(c,0xf8); /* MOV rax rbp */
+			addByte(c,0xf2);addByte(c,0x0f);addByte(c,0x10); /* MOVSD */
+			addByte(c,0x45);addByte(c,0xf8); /* rbp xmm0 */
+			break;
+		case AST_NAME:
+			if (ASTNode_isSetIndex(AST)) {
+				if (ASTNode_isSetData(AST)) {
+					/* function call (old version) */
+					ass_MOV_rax
+					addAddress(c,(long long)AST);
+					addByte(c, 0x48); addByte(c, 0x89); addByte(c, 0xc7); /* MOV RAX RDI */
+					ass_MOV_rax
+					addAddress(c,(long long)c->temp);
+					addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x30); /* MOV [RAX] RSI */
+					callFunction64(c,(long long)getAST_Name);
+					break;
+				}
+				else
+				{
+					/* data->value[ASTNode_getIndex(AST)]; */
+					ass_MOV_rax
+					addAddress(c,(long long)c->temp);
+					test = (cvodeData_t *)malloc(sizeof(cvodeData_t));
+					addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x00); /* MOV [RAX] RAX */
+					addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x80);
+					addInt(c,(long long)&test->value - (long long)test); /* MOX RAX [RAX + offset] */
+					addByte(c, 0xf2); addByte(c, 0x0f); addByte(c, 0x10); addByte(c, 0x80);
+					addInt(c,ASTNode_getIndex(AST)*sizeof(double)); /* MOVSD (rax+imm32) xmm0 */
+					free(test);
+				}
+				break;
+			}
+			if (strcmp(ASTNode_getName(AST),"time") == 0 ||
+				strcmp(ASTNode_getName(AST),"Time") == 0 ||
+				strcmp(ASTNode_getName(AST),"TIME") == 0) {
+				ass_MOV_rax
+				addAddress(c,(long long)c->temp);
+				test = (cvodeData_t *)malloc(sizeof(cvodeData_t));
+				addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x00); /* MOV [RAX] RAX */
+				addByte(c, 0xf2); addByte(c, 0x0f); addByte(c, 0x10); addByte(c, 0x80);
+				addInt(c,(long long)&test->currenttime - (long long)test); /* MOVSD (rax+imm32) xmm0 */
+				free(test);
+				break;
+				}
+			ass_MOV_rax
+			addAddress(c,(long long)AST);
+			addByte(c, 0x48); addByte(c, 0x89); addByte(c, 0xc7); /* MOV RAX RDI */
+			ass_MOV_rax
+			addAddress(c,(long long)c->temp);
+			addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x30); /* MOV [RAX] RSI */
+			callFunction64(c,(long long)getAST_Name);
+			break;
+		case AST_FUNCTION_DELAY: /* not implemented */
+			ass_SUBSD(0,0)
+			break;
+		case AST_NAME_TIME:
+			ass_MOV_rax
+			addAddress(c,(long long)c->temp);
+			test = (cvodeData_t *)malloc(sizeof(cvodeData_t));
+			addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x00); /* MOV [RAX] RAX */
+			addByte(c, 0xf2); addByte(c, 0x0f); addByte(c, 0x10); addByte(c, 0x80);
+			addInt(c,(long long)&test->currenttime - (long long)test); /* MOVSD (rax+imm32) xmm0 */
+			free(test);
+			break;
+			/* old version: */
+			ass_MOV_rax
+			addAddress(c,(long long)c->temp);
+			addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x38); /* MOV [RAX] RDI */
+			callFunction64(c,(long long)getAST_Name_Time);
+			break;
+
+		case AST_CONSTANT_E:
+			ass_MOV_rax
+			addConstant64(c,M_E);
+			addByte(c,0x48);addByte(c,0x89);addByte(c,0x45);addByte(c,0xf8); /* MOV rax rbp */
+			addByte(c,0xf2);addByte(c,0x0f);addByte(c,0x10); /* MOVSD */
+			addByte(c,0x45);addByte(c,0xf8); /* rbp xmm0 */
+			break;
+		case AST_CONSTANT_FALSE: /* 0.0 */
+			ass_SUBSD(0,0)
+			break;
+		case AST_CONSTANT_PI: /* pi */
+			ass_MOV_rax
+			addConstant64(c,M_PI);
+			addByte(c,0x48);addByte(c,0x89);addByte(c,0x45);addByte(c,0xf8); /* MOV rax rbp */
+			addByte(c,0xf2);addByte(c,0x0f);addByte(c,0x10); /* MOVSD */
+			addByte(c,0x45);addByte(c,0xf8); /* rbp xmm0 */
+			break;
+		case AST_CONSTANT_TRUE: /* 1.0 */
+/*			addByte(c,0x48);addByte(c,0xb8); // MOV rax
+			addConstant64(c,1.0);
+			addByte(c,0x48);addByte(c,0x89);addByte(c,0x45);addByte(c,0xf8); // MOV rax rbp
+			addByte(c,0xf2);addByte(c,0x0f);addByte(c,0x10); // MOVSD
+			addByte(c,0x45);addByte(c,0xf8);// rbp xmm0
+			break; // ALTERNATIVE: */
+			ass_SUBSD(1,1)
+			addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xc9); addByte(c,0x00); /* CMPEQSD xmm1 xmm1 */
+			addByte(c,0xf3); addByte(c,0x0f); addByte(c,0xe6); addByte(c,0xc9); /* CVTDQ2PS xmm1 xmm1 */
+			ass_SUBSD(0,0)
+			ass_SUBSD(1,0)
+			break;
+
+		case AST_PLUS: /* add values */
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				stack = analyse64Stack(child(AST,i));
+				if(stack < 8) {
+					ass_MOVSD(0,stack)
+					generate64(c,child(AST,i));
+					addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x58); addByte(c,0xc0+stack); /* ADDSD xmm0 xmm[stack] */
+					} else {
+					pushStorage64(c); /* save old result */
+					generate64(c,child(AST,i));
+					popStorage64(c);
+					addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x58); addByte(c,0xc1); /* ADDSD xmm0 xmm1 */
+					}
+				}
+			break;
+		case AST_MINUS: /* sub values */
+		    if ( childnum<2 ) {
+				generate64(c,child(AST,0));
+				ass_MOVSD(0,1)
+				ass_SUBSD(0,0)
+				ass_SUBSD(1,0)
+				} else {
+				generate64(c,child(AST,1));
+				stack = analyse64Stack(child(AST,0));
+				if(stack < 8) {
+					ass_MOVSD(0,stack)
+					generate64(c,child(AST,0));
+					ass_SUBSD(stack,0)
+					} else {
+					pushStorage64(c); /* save old result */
+					generate64(c,child(AST,0));
+					popStorage64(c);
+					ass_SUBSD(1,0)
+					}
+				}
+			break;
+		case AST_TIMES: /* mult values */
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				stack = analyse64Stack(child(AST,i));
+				if(stack < 8) {
+					ass_MOVSD(0,stack)
+					generate64(c,child(AST,i));
+					addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x59); addByte(c,0xc0+stack); /* ADDSD xmm0 xmm[stack] */
+					} else {
+					pushStorage64(c); /* save old result */
+					generate64(c,child(AST,i));
+					popStorage64(c);
+					addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x59); addByte(c,0xc1); /* ADDSD xmm0 xmm1 */
+					}
+				}
+			break;
+		case AST_DIVIDE: /* divide values */
+			generate64(c,child(AST,1));
+			stack = analyse64Stack(child(AST,0));
+			if(stack < 8) {
+				ass_MOVSD(0,stack)
+				generate64(c,child(AST,0));
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x5e); addByte(c,0xc0+stack); /* DIVSD xmm0 xmm[stack] */
+				} else {
+				pushStorage64(c); /* save old result */
+				generate64(c,child(AST,0));
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x5e); addByte(c,0xc1); /* DIVSD xmm0 xmm1 */
+				}
+			break;
+		case AST_POWER: /* calculates value 1 to the power of value 2 */
+		case AST_FUNCTION_POWER:
+			generate64(c,child(AST,1));
+			stack = analyse64Stack(child(AST,0));
+			if(stack < 8) {
+				ass_MOVSD(0,stack)
+				generate64(c,child(AST,0));
+				if(stack > 1) {
+					ass_MOVSD(stack,1)
+					}
+				} else {
+				pushStorage64(c); /* save old result */
+				generate64(c,child(AST,0));
+				popStorage64(c);
+				}
+			callFunction64(c,(long long)pow); /* pow */
+			break;
+		case AST_LAMBDA: /* not implemented */
+			ass_SUBSD(0,0)
+			break;
+
+		case AST_FUNCTION: /* user defined function */
+			if (UsrDefFunc == NULL) { /* no function defined */
+				ass_SUBSD(0,0)
+				}
+				else
+				{
+				save = (long long)&c->FPUstack[c->FPUstackPosition];
+				for (i = 0 ; i < childnum ; i++) { /* compute parameters and store them on the external stack */
+					generate64(c,child(AST,i));
+					pushStorage64(c);
+					}
+				ass_MOV_rax
+				addAddress(c,save);
+				addByte(c, 0x48); addByte(c, 0x89); addByte(c, 0xc2); /* MOV RAX RDX */
+				ass_MOV_rax
+				addAddress(c,childnum);
+				addByte(c, 0x48); addByte(c, 0x89); addByte(c, 0xc6); /* MOV RAX RSI */
+				ass_MOV_rax
+				addAddress(c,(long long)c->temp);
+				addByte(c, 0x48); addByte(c, 0x8b); addByte(c, 0x38); /* MOV [RAX] RDI */
+				ass_MOV_rax
+				addAddress(c,(long long)(char *)ASTNode_getName(AST));
+				callFunction64(c,(long long)UsrDefFunc);
+				c->FPUstackPosition -= childnum;
+				}
+			break;
+		case AST_FUNCTION_ABS: /* absolut value */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)fabs); /* abs */
+			break;
+		case AST_FUNCTION_ARCCOS: /* arccos = pi/2.0 - arcsin  = pi/2.0 - arctan(value / sqrt(1.0-value^2)) */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)acos); /* acos */
+			break;
+		case AST_FUNCTION_ARCCOSH: /* arccos hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aCosh); /* aCosh */
+			break;
+		case AST_FUNCTION_ARCCOT: /* arccot = pi/2.0 - arctan */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aCot); /* aCot */
+			break;
+		case AST_FUNCTION_ARCCOTH: /* arccot hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aCoth); /* aCoth */
+			break;
+		case AST_FUNCTION_ARCCSC: /* arccsc = arcsin(1.0/value) */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aCsc); /* aCsc */
+			break;
+		case AST_FUNCTION_ARCCSCH: /* arccsc hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aCsch); /* aCsch */
+			break;
+		case AST_FUNCTION_ARCSEC: /* arccsc = arccos(1.0/value) =  pi/2.0 - arcsin(1.0/value) */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aSec); /* aSec */
+			break;
+		case AST_FUNCTION_ARCSECH: /* arcsec hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aSech); /* aSech */
+			break;
+		case AST_FUNCTION_ARCSIN: /* arcsin */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)asin); /* asin */
+			break;
+		case AST_FUNCTION_ARCSINH: /* arcsin hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aSinh); /* asinh */
+			break;
+		case AST_FUNCTION_ARCTAN: /* arctan */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)atan); /* atan */
+			break;
+		case AST_FUNCTION_ARCTANH: /* arctan hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)aTanh); /* atanh */
+			break;
+		case AST_FUNCTION_CEILING: /* rounds value to next integer */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)ceil); /* ceil */
+			break;
+		case AST_FUNCTION_COS: /* cosinus */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)cos); /* cos */
+			break;
+		case AST_FUNCTION_COSH: /* cosinus hyperbilic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)cosh); /* cosh */
+			break;
+		case AST_FUNCTION_COT: /* cotangens = 1/tan */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)cot); /* cot */
+			break;
+		case AST_FUNCTION_COTH: /* coth = 1/tanh */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)coth); /* coth */
+			break;
+		case AST_FUNCTION_CSC: /* cosec = 1/sinus */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)csc); /* cosec */
+			break;
+		case AST_FUNCTION_CSCH: /* csch = 1/sinh */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)csch); /* cosech */
+			break;
+		case AST_FUNCTION_EXP: /* exp( value ) */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)exp); /* exp */
+			break;
+		case AST_FUNCTION_FACTORIAL:
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)factorial); /* factorial */
+			break;
+		case AST_FUNCTION_FLOOR: /* rounds value to next integer */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)floor); /* floor */
+			break;
+		case AST_FUNCTION_LN: /* log_e */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)log); /* log */
+			break;
+		case AST_FUNCTION_LOG: /* log_10 */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)log10); /* log10 */
+			break;
+		case AST_FUNCTION_PIECEWISE: /* USEFUL? NOT CORRECTLY IMPLEMENTED! */
+			ass_SUBSD(0,0)
+			pushStorage64(c); /* save result */
+		    for ( i = 0 ; i < childnum-1 ; i = i + 2) {
+				generate64(c,child(AST,i+1));
+				pushStorage64(c); /* save compare result */
+				generate64(c,child(AST,i)); /* compute new value */
+				popStorage64(c); /* load compare value */
+				ass_SUBSD(2,2)
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xd1); addByte(c,0x04); /* CMPNEQSD xmm2 xmm1 */
+				addByte(c,0xf3); addByte(c,0x0f); addByte(c,0xe6); addByte(c,0xd2); /* CVTDQ2PD xmm2 xmm2 */
+				ass_SUBSD(3,3)
+				ass_SUBSD(2,3)
+				popStorage64(c); /* load result */
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x59); addByte(c,0xc3); /* MULSD xmm0 xmm3 */
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x58); addByte(c,0xc1); /* ADDSD xmm0 xmm1 */
+				pushStorage64(c); /* save result */
+				}
+			popStorage64(c); /* load result */
+			ass_MOVSD(1,0)
+			break;
+		/* AST_FUNCTION_POWER see AST_POWER */
+		case AST_FUNCTION_ROOT:
+			generate64(c,child(AST,1));
+			stack = analyse64Stack(child(AST,0));
+			if(stack < 8) {
+				ass_MOVSD(0,stack)
+				generate64(c,child(AST,0));
+				if(stack > 1) {
+					ass_MOVSD(stack,1)
+					}
+				} else {
+				pushStorage64(c); /* save old result */
+				generate64(c,child(AST,0));
+				popStorage64(c);
+				}
+			callFunction64(c,(long long)root); /* root */
+			break;
+		case AST_FUNCTION_SEC: /* sec = 1/cosinus */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)sec); /* sec */
+			break;
+		case AST_FUNCTION_SECH: /* sech = 1/cosh */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)sech); /* sech */
+			break;
+		case AST_FUNCTION_SIN: /* sinus */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)sin); /* sin */
+			break;
+		case AST_FUNCTION_SINH: /* sinus hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)sinh); /* sinh */
+			break;
+		case AST_FUNCTION_TAN: /* tangens */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)tan); /* tan */
+			break;
+		case AST_FUNCTION_TANH: /* tangens hyperbolic */
+			generate64(c,child(AST,0));
+			callFunction64(c,(long long)tanh); /* tanh */
+			break;
+
+/* logical cases depends from 0.0 and 1.0 as initial values */
+		case AST_LOGICAL_AND:
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result */
+				generate64(c,child(AST,i));
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x5d); addByte(c,0xc1); /* MINSD xmm0 xmm1 */
+/*				addByte(c,0x66); addByte(c,0x0f); addByte(c,0x54); addByte(c,0xc1); /* ANDPD xmm0 xmm1 */
+/*				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x59); addByte(c,0xc1); /* MULSD xmm0 xmm1 */
+				}
+			break;
+		case AST_LOGICAL_NOT:
+			generate64(c,child(AST,0));
+			ass_MOVSD(0,1)
+			ass_MOV_rax
+			addConstant64(c,1.0);
+			addByte(c,0x48);addByte(c,0x89);addByte(c,0x45);addByte(c,0xf8); /* MOV rax rbp */
+			addByte(c,0xf2);addByte(c,0x0f);addByte(c,0x10); /* MOVSD */
+			addByte(c,0x45);addByte(c,0xf8); /* rbp xmm0 */
+			ass_SUBSD(1,0)
+			break;
+		case AST_LOGICAL_OR:
+			generate64(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result */
+				generate64(c,child(AST,i));
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0x5f); addByte(c,0xc1); /* MAXSD xmm0 xmm1 */
+				}
+			break;
+		case AST_LOGICAL_XOR:
+			generate64(c,child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result */
+				generate64(c,child(AST,i));
+				popStorage64(c);
+/* ?? INTEGER INSTRUCTION FASTER ?? */
+				addByte(c,0x66); addByte(c,0x0f); addByte(c,0x57); addByte(c,0xc1); /* XORPD xmm0 xmm1 */
+				}
+			break;
+		case AST_RELATIONAL_EQ:
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result to stack*/
+				generate64(c,child(AST,i));
+				}
+			ass_SUBSD(2,2)
+			addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xd2); addByte(c,0x00); /* CMPEQSD xmm2 xmm2 */
+			for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xc8); addByte(c,0x00); /* CMPEQSD xmm1 xmm0 */
+				addByte(c,0x66); addByte(c,0x0f); addByte(c,0xdb); addByte(c,0xd1); /* PAND xmm1 xmm2 */
+				}
+			addByte(c,0xf3); addByte(c,0x0f); addByte(c,0xe6); addByte(c,0xd2); /* CVTDQ2PD xmm2 xmm2 */
+			ass_SUBSD(0,0)
+			ass_SUBSD(2,0)
+			break;
+		case AST_RELATIONAL_GEQ:
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result to stack*/
+				generate64(c,child(AST,i));
+				}
+			ass_SUBSD(2,2)
+			addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xd2); addByte(c,0x00); /* CMPEQSD xmm2 xmm2 */
+			for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xc1); addByte(c,0x05); /* CMPNLTSD xmm1 xmm0 */
+				addByte(c,0x66); addByte(c,0x0f); addByte(c,0xdb); addByte(c,0xd0); /* PAND xmm0 xmm2 */
+				ass_MOVSD(1,0)
+				}
+			addByte(c,0xf3); addByte(c,0x0f); addByte(c,0xe6); addByte(c,0xd2); /* CVTDQ2PS */
+			ass_SUBSD(0,0)
+			ass_SUBSD(2,0)
+			break;
+		case AST_RELATIONAL_GT:
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result to stack*/
+				generate64(c,child(AST,i));
+				}
+			ass_SUBSD(2,2)
+			addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xd2); addByte(c,0x00); /* CMPEQSD xmm2 xmm2 */
+			for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xc1); addByte(c,0x06); /* CMPNLESD xmm1 xmm0 */
+				addByte(c,0x66); addByte(c,0x0f); addByte(c,0xdb); addByte(c,0xd0); /* PAND xmm0 xmm2 */
+				ass_MOVSD(1,0)
+				}
+			addByte(c,0xf3); addByte(c,0x0f); addByte(c,0xe6); addByte(c,0xd2); /* CVTDQ2PS */
+			ass_SUBSD(0,0)
+			ass_SUBSD(2,0)
+			break;
+		case AST_RELATIONAL_LEQ:
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result to stack*/
+				generate64(c,child(AST,i));
+				}
+			ass_SUBSD(2,2)
+			addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xd2); addByte(c,0x00); /* CMPEQSD xmm2 xmm2 */
+			for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xc1); addByte(c,0x02); /* CMPLESD xmm1 xmm0 */
+				addByte(c,0x66); addByte(c,0x0f); addByte(c,0xdb); addByte(c,0xd0); /* PAND xmm0 xmm2 */
+				ass_MOVSD(1,0)
+				}
+			addByte(c,0xf3); addByte(c,0x0f); addByte(c,0xe6); addByte(c,0xd2); /* CVTDQ2PS */
+			ass_SUBSD(0,0)
+			ass_SUBSD(2,0)
+			break;
+		case AST_RELATIONAL_LT:
+			generate64(c,child(AST,0));
+			for ( i = 1 ; i < childnum ; i++) {
+				pushStorage64(c); /* save old result to stack*/
+				generate64(c,child(AST,i));
+				}
+			ass_SUBSD(2,2)
+			addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xd2); addByte(c,0x00); /* CMPEQSD xmm2 xmm2 */
+			for ( i = 1 ; i < childnum ; i++) { /* reverse order of values */
+				popStorage64(c);
+				addByte(c,0xf2); addByte(c,0x0f); addByte(c,0xc2); addByte(c,0xc1); addByte(c,0x01); /* CMPLTSD xmm0 xmm1 */
+				addByte(c,0x66); addByte(c,0x0f); addByte(c,0xdb); addByte(c,0xd0); /* PAND xmm0 xmm2 */
+				ass_MOVSD(1,0)
+				}
+			addByte(c,0xf3); addByte(c,0x0f); addByte(c,0xe6); addByte(c,0xd2); /* CVTDQ2PS */
+			ass_SUBSD(0,0)
+			ass_SUBSD(2,0)
+			break;
+
+		default:
+			printf("ERROR: Wrong AST_type\n");
+			ass_SUBSD(0,0)
+			break;
+		}
+	}
+
+/* analyses the abstract syntax tree according to code and stack size */
+int analyse (directCode_t *c, ASTNode_t *AST) { /* returns the number of places it occupies of the FPU stack */
+	
+	int i, childnum, save, save1;
+	double st;
+	ASTNodeType_t type;
+	type = ASTNode_getType(AST);
+	childnum = ASTNode_getNumChildren(AST);
+	
+	switch(type) {
+		case AST_INTEGER:
+		case AST_REAL:
+		case AST_REAL_E:
+		case AST_RATIONAL:
+			c->storageSize++;
+			c->codeSize += 6;
+			return 1;
+		case AST_NAME:
+			if (ASTNode_isSetIndex(AST)) {
+				if (ASTNode_isSetData(AST)) {
+					/* function call (old version) */
+					c->codeSize += 13 + sizeof(void (*)());
+					return 8;
+				}
+				else
+				{
+					/* data->value[ASTNode_getIndex(AST)]; */
+					c->codeSize += 12;
+					return 1;
+				}
+			}
+			if (strcmp(ASTNode_getName(AST),"time") == 0 ||
+				strcmp(ASTNode_getName(AST),"Time") == 0 ||
+				strcmp(ASTNode_getName(AST),"TIME") == 0) {
+				c->codeSize += 6;
+				return 1;
+				}
+/* OLD VERSION */
+			c->codeSize += 13 + sizeof(void (*)());
+			return 8;
+		case AST_FUNCTION_DELAY: /* not implemented */
+		case AST_LAMBDA: /* not implemented */
+			c->codeSize += 2;
+			return 1;
+		case AST_NAME_TIME:
+			c->codeSize += 6;
+			return 1;
+
+		case AST_CONSTANT_E:
+			c->codeSize += 18;
+			return 2;
+		case AST_CONSTANT_FALSE: /* 0.0 */
+		case AST_CONSTANT_PI: /* pi */
+		case AST_CONSTANT_TRUE: /* 1.0 */
+			c->codeSize += 2;
+			return 1;
+
+		case AST_PLUS: /* add values */
+		case AST_TIMES: /* mult values */
+			save = analyse(c, child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse(c, child(AST,i));
+				if(save1 >= 8)
+					c->codeSize += 12;
+					else c->codeSize += 2;
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_MINUS: /* sub values */
+		    if ( childnum<2 ) {
+				save = analyse(c,child(AST,0));
+				c->codeSize += 2;
+				} else {
+				save = analyse(c,child(AST,0));
+				save1 = analyse(c, child(AST,1));
+				if(save1 >= 8)
+					c->codeSize += 12;
+					else c->codeSize += 2;
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_DIVIDE: /* divide values */
+			save = analyse(c,child(AST,0));
+			save1 = analyse(c, child(AST,1));
+			if(save1 >= 8)
+				c->codeSize += 12;
+				else c->codeSize += 2;
+			if(save < save1+1)
+				save = save1 + 1;
+			return save;
+		case AST_POWER: /* calculates value 1 to the power of value 2 */
+		case AST_FUNCTION_POWER:
+			save = analyse(c,child(AST,0));
+			save1 = analyse(c, child(AST,1));
+			if(save1 >= 8)
+				c->codeSize += 14;
+				else c->codeSize += 6;
+			if(save < save1+1)
+				save = save1 + 1;
+			c->codeSize += 22;
+			if(save < 3)
+				save = 3;
+			return save;
+
+		case AST_FUNCTION: /* user defined function */
+			if (UsrDefFunc == NULL) { /* no function defined */
+				c->codeSize += 2;
+				save = 1;
+				} else {
+				save = 8 + childnum;
+				for (i = 0 ; i < childnum ; i++) { /* compute parameters and store them on the external stack */
+					save1 = analyse(c,child(AST,i));
+					if(save1 + i > save)
+						save = save1 + i;
+					}
+				c->codeSize += 6*childnum;
+				c->codeSize += 15 + 3*sizeof(void (*)());
+				}
+			return save;
+		case AST_FUNCTION_ARCSEC: /* arccsc = arccos(1.0/value) =  pi/2.0 - arcsin(1.0/value) */
+			c->codeSize += 2;
+		case AST_FUNCTION_ARCCOS: /* arccos = pi/2.0 - arcsin  = pi/2.0 - arctan(value / sqrt(1.0-value^2)) */
+		case AST_FUNCTION_EXP: /* exp( value ) */
+			c->codeSize += 8;
+		case AST_FUNCTION_ARCCOT: /* arccot = pi/2.0 - arctan */
+			c->codeSize += 2;
+		case AST_FUNCTION_ARCSIN: /* arcsin */
+			save = analyse(c,child(AST,0));
+			if(save < 3)
+				save = 3;
+			c->codeSize += 12;
+			return save;
+		case AST_FUNCTION_PIECEWISE: /* USEFUL? NOT CORRECTLY IMPLEMENTED! */
+			save = 10;
+			c->codeSize += 14;
+		    for ( i = 0 ; i < childnum-1 ; i = i + 2) {
+				save1 = analyse(c,child(AST,i+1));
+				if(save < save1+1)
+					save = save1+1;
+				save1 = analyse(c,child(AST,i));
+				if(save < save1+2)
+					save = save1+2;
+				c->codeSize += 38;
+				}
+			return save;
+		/* AST_FUNCTION_POWER see AST_POWER */
+		case AST_FUNCTION_ROOT:
+			save = analyse(c,child(AST,1));
+			save1 = analyse(c, child(AST,0));
+			if(save1 >= 8)
+				c->codeSize += 14;
+				else c->codeSize += 6;
+			if(save < save1+1)
+				save = save1 + 1;
+			c->codeSize += 22;
+			if(save < 3)
+				save = 3;
+			return save;
+		case AST_FUNCTION_ABS: /* absolut value */
+		case AST_FUNCTION_COS: /* cosinus */
+		case AST_FUNCTION_SIN: /* sinus */
+			save = analyse(c,child(AST,0));
+			c->codeSize += 2;
+			return save;
+		case AST_FUNCTION_CEILING: /* rounds value to next integer */
+		case AST_FUNCTION_FLOOR: /* rounds value to next integer */
+			c->codeSize += 2;
+		case AST_FUNCTION_ARCCSC: /* arccsc = arcsin(1.0/value) = arctan(1.0 / sqrt(value^2 - 1.0)) */
+			c->codeSize += 8;
+		case AST_FUNCTION_CSC: /* cosec = 1/sinus */
+		case AST_FUNCTION_LN: /* log_e */
+		case AST_FUNCTION_LOG: /* log_10 */
+		case AST_FUNCTION_SEC: /* sec = 1/cosinus */
+		case AST_FUNCTION_TAN: /* tangens */
+			c->codeSize += 2;
+		case AST_FUNCTION_ARCTAN: /* arctan */
+		case AST_FUNCTION_COT: /* cotangens = 1/tan */
+			save = analyse(c,child(AST,0));
+			if(save < 2)
+				save = 2;
+			c->codeSize += 4;
+			return save;
+		case AST_FUNCTION_COTH: /* coth = 1/tanh */
+		case AST_FUNCTION_CSCH: /* csch = 1/sinh */
+		case AST_FUNCTION_SECH: /* sech = 1/cosh */
+			c->codeSize += 4;
+		case AST_FUNCTION_ARCCOSH: /* arccos hyperbolic */
+		case AST_FUNCTION_ARCCOTH: /* arccot hyperbolic */
+		case AST_FUNCTION_ARCCSCH: /* arccsc hyperbolic */
+		case AST_FUNCTION_ARCSECH: /* arcsec hyperbolic */
+		case AST_FUNCTION_ARCSINH: /* arcsin hyperbolic */
+		case AST_FUNCTION_ARCTANH: /* arctan hyperbolic */
+		case AST_FUNCTION_COSH: /* cosinus hyperbilic */
+		case AST_FUNCTION_FACTORIAL:
+		case AST_FUNCTION_SINH: /* sinus hyperbolic */
+		case AST_FUNCTION_TANH: /* tangens hyperbolic */
+			save = analyse(c,child(AST,0));
+			if(save < 8)
+				save = 8;
+			c->codeSize += 10 + sizeof(void (*)());
+			return save;
+
+/* logical cases depends from 0.0 and 1.0 as initial values */
+		case AST_LOGICAL_XOR:
+			c->codeSize += (childnum-1)*4;
+		case AST_LOGICAL_AND:
+			save = 9;
+			save1 = analyse(c,child(AST,0));
+			if(save < save1)
+				save = save1;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse(c,child(AST,i));
+				if(save < save1+1)
+					save = save1+1;
+				}
+			c->codeSize += (childnum-1)*12;
+			return save;
+		case AST_LOGICAL_NOT:
+			save = analyse(c,child(AST,0));
+			if(save < 2)
+				save = 2;
+			c->codeSize += 4;
+			return save;
+		case AST_LOGICAL_OR: /* !(AND !values) */
+			c->codeSize += 8;
+		case AST_RELATIONAL_EQ:
+			c->codeSize -= (childnum-1)*2;
+		case AST_RELATIONAL_GEQ:
+		case AST_RELATIONAL_GT:
+		case AST_RELATIONAL_LEQ:
+		case AST_RELATIONAL_LT:
+			save = 7 + childnum;
+			save1 = analyse(c,child(AST,0));
+			if(save < save1)
+				save = save1;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse(c,child(AST,i));
+				if(save < save1 + i)
+					save = save1 + i;
+				}
+			c->codeSize += 16;
+			c->codeSize += (childnum-1)*22;
+			return save;
+
+		default:
+			printf("ERROR: Wrong AST_type\n");
+			c->codeSize += 2;
+			return 1;
+		}
+
+	return 1;
+	}
+
+/* analyses the place needed in the FPU stack - used in operations with more than one parameters (e.g. plus) */
+int analyseFPU (ASTNode_t *AST) { /* returns the number of places it occupies of the FPU stack */
+	
+	int i, childnum, save, save1;
+	double st;
+	ASTNodeType_t type;
+	type = ASTNode_getType(AST);
+	childnum = ASTNode_getNumChildren(AST);
+	
+	switch(type) {
+		case AST_INTEGER:
+		case AST_REAL:
+		case AST_REAL_E:
+		case AST_RATIONAL:
+		case AST_FUNCTION_DELAY: /* not implemented */
+		case AST_NAME_TIME:
+		case AST_LAMBDA: /* not implemented */
+		case AST_CONSTANT_FALSE: /* 0.0 */
+		case AST_CONSTANT_PI: /* pi */
+		case AST_CONSTANT_TRUE: /* 1.0 */
+			return 1;
+		case AST_NAME:
+			if (ASTNode_isSetIndex(AST)) {
+				if (ASTNode_isSetData(AST))
+					/* function call (old version) */
+					return 8;
+				else
+					/* data->value[ASTNode_getIndex(AST)]; */
+					return 1;
+			}
+			if (strcmp(ASTNode_getName(AST),"time") == 0 ||
+				strcmp(ASTNode_getName(AST),"Time") == 0 ||
+				strcmp(ASTNode_getName(AST),"TIME") == 0) {
+				return 1;
+				}
+/* OLD VERSION */
+			return 8;
+		case AST_CONSTANT_E:
+			return 2;
+
+		case AST_PLUS: /* add values */
+		case AST_TIMES: /* mult values */
+			save = analyseFPU(child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyseFPU(child(AST,i));
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_MINUS: /* sub values */
+		    if ( childnum<2 ) {
+				save = analyseFPU(child(AST,0));
+				} else {
+				save = analyseFPU(child(AST,0));
+				save1 = analyseFPU(child(AST,1));
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_DIVIDE: /* divide values */
+			save = analyseFPU(child(AST,0));
+			save1 = analyseFPU(child(AST,1));
+			if(save < save1+1)
+				save = save1 + 1;
+			return save;
+		case AST_POWER: /* calculates value 1 to the power of value 2 */
+		case AST_FUNCTION_POWER:
+			save = analyseFPU(child(AST,0));
+			save1 = analyseFPU(child(AST,1));
+			if(save < save1+1)
+				save = save1 + 1;
+			if(save < 3)
+				save = 3;
+			return save;
+
+		case AST_FUNCTION: /* user defined function */
+			if (UsrDefFunc == NULL) { /* no function defined */
+				save = 1;
+				} else {
+				save = 8 + childnum;
+				for (i = 0 ; i < childnum ; i++) { /* compute parameters and store them on the external stack */
+					save1 = analyseFPU(child(AST,i));
+					if(save1 + i > save)
+						save = save1 + i;
+					}
+				}
+			return save;
+		case AST_FUNCTION_ARCSEC: /* arccsc = arccos(1.0/value) =  pi/2.0 - arcsin(1.0/value) */
+		case AST_FUNCTION_ARCCOS: /* arccos = pi/2.0 - arcsin  = pi/2.0 - arctan(value / sqrt(1.0-value^2)) */
+		case AST_FUNCTION_EXP: /* exp( value ) */
+		case AST_FUNCTION_ARCCOT: /* arccot = pi/2.0 - arctan */
+		case AST_FUNCTION_ARCSIN: /* arcsin */
+			save = analyseFPU(child(AST,0));
+			if(save < 3)
+				save = 3;
+			return save;
+		case AST_FUNCTION_ABS: /* absolut value */
+		case AST_FUNCTION_COS: /* cosinus */
+		case AST_FUNCTION_SIN: /* sinus */
+			return analyseFPU(child(AST,0));
+		case AST_FUNCTION_PIECEWISE: /* USEFUL? NOT CORRECTLY IMPLEMENTED! */
+			save = 10;
+		    for ( i = 0 ; i < childnum-1 ; i = i + 2) {
+				save1 = analyseFPU(child(AST,i+1));
+				if(save < save1+1)
+					save = save1+1;
+				save1 = analyseFPU(child(AST,i));
+				if(save < save1+2)
+					save = save1+2;
+				}
+			return save;
+		/* AST_FUNCTION_POWER see AST_POWER */
+		case AST_FUNCTION_ROOT:
+			save = analyseFPU(child(AST,1));
+			save1 = analyseFPU(child(AST,0));
+			if(save < save1+1)
+				save = save1 + 1;
+			if(save < 3)
+				save = 3;
+			return save;
+		case AST_FUNCTION_ARCCSC: /* arccsc = arcsin(1.0/value) = arctan(1.0 / sqrt(value^2 - 1.0)) */
+		case AST_FUNCTION_CSC: /* cosec = 1/sinus */
+		case AST_FUNCTION_LN: /* log_e */
+		case AST_FUNCTION_LOG: /* log_10 */
+		case AST_FUNCTION_SEC: /* sec = 1/cosinus */
+		case AST_FUNCTION_ARCTAN: /* arctan */
+		case AST_FUNCTION_CEILING: /* rounds value to next integer */
+		case AST_FUNCTION_COT: /* cotangens = 1/tan */
+		case AST_FUNCTION_FLOOR: /* rounds value to next lower integer */
+		case AST_FUNCTION_TAN: /* tangens */
+			save = analyseFPU(child(AST,0));
+			if(save < 2)
+				save = 2;
+			return save;
+		case AST_FUNCTION_COTH: /* coth = 1/tanh */
+		case AST_FUNCTION_CSCH: /* csch = 1/sinh */
+		case AST_FUNCTION_SECH: /* sech = 1/cosh */
+		case AST_FUNCTION_ARCCOSH: /* arccos hyperbolic */
+		case AST_FUNCTION_ARCCOTH: /* arccot hyperbolic */
+		case AST_FUNCTION_ARCCSCH: /* arccsc hyperbolic */
+		case AST_FUNCTION_ARCSECH: /* arcsec hyperbolic */
+		case AST_FUNCTION_ARCSINH: /* arcsin hyperbolic */
+		case AST_FUNCTION_ARCTANH: /* arctan hyperbolic */
+		case AST_FUNCTION_COSH: /* cosinus hyperbilic */
+		case AST_FUNCTION_FACTORIAL:
+		case AST_FUNCTION_SINH: /* sinus hyperbolic */
+		case AST_FUNCTION_TANH: /* tangens hyperbolic */
+			save = analyseFPU(child(AST,0));
+			if(save < 8)
+				save = 8;
+			return save;
+
+/* logical cases depends from 0.0 and 1.0 as initial values */
+		case AST_LOGICAL_XOR:
+		case AST_LOGICAL_AND:
+			save = 9;
+			save1 = analyseFPU(child(AST,0));
+			if(save < save1)
+				save = save1;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyseFPU(child(AST,i));
+				if(save < save1+1)
+					save = save1+1;
+				}
+			return save;
+		case AST_LOGICAL_NOT:
+			save = analyseFPU(child(AST,0));
+			if(save < 2)
+				save = 2;
+			return save;
+		case AST_LOGICAL_OR: /* !(AND !values) */
+		case AST_RELATIONAL_EQ:
+		case AST_RELATIONAL_GEQ:
+		case AST_RELATIONAL_GT:
+		case AST_RELATIONAL_LEQ:
+		case AST_RELATIONAL_LT:
+			save = 7 + childnum;
+			save1 = analyseFPU(child(AST,0));
+			if(save < save1)
+				save = save1;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyseFPU(child(AST,i));
+				if(save < save1 + i)
+					save = save1 + i;
+				}
+			return save;
+
+		default:
+			printf("ERROR: Wrong AST_type\n");
+			return 1;
+		}
+
+	return 1;
+	}
+
+/* analyses the abstract syntax tree according to code and stack size */
+int analyse64 (directCode_t *c, ASTNode_t *AST) { /* returns the number of places it occupies of the FPU stack */
+	
+	int i, childnum, save, save1;
+	ASTNodeType_t type;
+	type = ASTNode_getType(AST);
+	childnum = ASTNode_getNumChildren(AST);
+	
+	switch(type) {
+		case AST_INTEGER:
+		case AST_REAL:
+		case AST_REAL_E:
+		case AST_RATIONAL:
+			c->codeSize += 19;
+			return 1;
+		case AST_NAME:
+			if (ASTNode_isSetIndex(AST)) {
+				if (ASTNode_isSetData(AST)) {
+					/* function call (old version) */
+					c->codeSize += 38;
+					return 8;
+				}
+				else
+				{
+					/* data->value[ASTNode_getIndex(AST)]; */
+					c->codeSize += 28;
+					return 1;
+				}
+			}
+			if (strcmp(ASTNode_getName(AST),"time") == 0 ||
+				strcmp(ASTNode_getName(AST),"Time") == 0 ||
+				strcmp(ASTNode_getName(AST),"TIME") == 0) {
+				c->codeSize += 21;
+				return 1;
+				}
+/* OLD VERSION */
+			c->codeSize += 38;
+			return 8;
+		case AST_FUNCTION_DELAY: /* not implemented */
+		case AST_LAMBDA: /* not implemented */
+		case AST_CONSTANT_FALSE: /* 0.0 */
+			c->codeSize += 4;
+			return 1;
+		case AST_NAME_TIME:
+			c->codeSize += 21;
+			return 1;
+
+		case AST_CONSTANT_E:
+		case AST_CONSTANT_PI: /* pi */
+			c->codeSize += 19;
+			return 1;
+		case AST_CONSTANT_TRUE: /* 1.0 */
+			c->codeSize += 21;
+			return 2;
+
+		case AST_PLUS: /* add values */
+		case AST_TIMES: /* mult values */
+			save = analyse64(c, child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse64(c, child(AST,i));
+				if(save1 >= 8)
+					c->codeSize += 32;
+					else
+					c->codeSize += 8;
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_MINUS: /* sub values */
+		    if ( childnum<2 ) {
+				save = analyse64(c,child(AST,0));
+				c->codeSize += 12;
+				if(save < 2)
+					save = 2;
+				} else {
+				save = analyse64(c, child(AST,1));
+				save1 = analyse64(c, child(AST,0));
+				if(save1 >= 8)
+					c->codeSize += 32;
+					else
+					c->codeSize += 8;
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_DIVIDE: /* divide values */
+			save = analyse64(c,child(AST,1));
+			save1 = analyse64(c, child(AST,0));
+			if(save1 >= 8)
+				c->codeSize += 32;
+				else
+				c->codeSize += 8;
+			if(save < save1+1)
+				save = save1 + 1;
+			return save;
+		case AST_POWER: /* calculates value 1 to the power of value 2 */
+		case AST_FUNCTION_POWER:
+		case AST_FUNCTION_ROOT:
+			save1 = analyse64(c,child(AST,0));
+			save = analyse64(c, child(AST,1));
+			if(save1 >= 8)
+				c->codeSize += 40;
+				else {
+				c->codeSize += 16;
+				if(save1 > 1)
+					c->codeSize += 4;
+				}
+			if(save < save1+1)
+				save = save1 + 1;
+			if (save < 8)
+				save = 8;
+			return save;
+
+		case AST_FUNCTION: /* user defined function */
+			if (UsrDefFunc == NULL) { /* no function defined */
+				c->codeSize += 4;
+				save = 1;
+				} else {
+				save = 8;
+				for (i = 0 ; i < childnum ; i++) { /* compute parameters and store them on the external stack */
+					save1 = analyse64(c,child(AST,i));
+					if(save1 + i > save)
+						save = save1 + i;
+					}
+				if(save < childnum + 8)
+					save = childnum + 8;
+				c->codeSize += 16*childnum;
+				c->codeSize += 61;
+				}
+			return save;
+		case AST_FUNCTION_PIECEWISE: /* USEFUL? NOT CORRECTLY IMPLEMENTED! */
+			save = 10;
+			c->codeSize += 36;
+		    for ( i = 0 ; i < childnum-1 ; i = i + 2) {
+				save1 = analyse64(c,child(AST,i+1));
+				if(save < save1+1)
+					save = save1+1;
+				save1 = analyse64(c,child(AST,i));
+				if(save < save1+2)
+					save = save1+2;
+				c->codeSize += 85;
+				}
+			return save;
+
+		case AST_FUNCTION_ABS: /* absolut value */
+		case AST_FUNCTION_ARCCOS: /* arccos = pi/2.0 - arcsin  = pi/2.0 - arctan(value / sqrt(1.0-value^2)) */
+		case AST_FUNCTION_ARCCOSH: /* arccos hyperbolic */
+		case AST_FUNCTION_ARCCOT: /* arccot = pi/2.0 - arctan */
+		case AST_FUNCTION_ARCCOTH: /* arccot hyperbolic */
+		case AST_FUNCTION_ARCCSC: /* arccsc = arcsin(1.0/value) */
+		case AST_FUNCTION_ARCCSCH: /* arccsc hyperbolic */
+		case AST_FUNCTION_ARCSEC: /* arccsc = arccos(1.0/value) =  pi/2.0 - arcsin(1.0/value) */
+		case AST_FUNCTION_ARCSECH: /* arcsec hyperbolic */
+		case AST_FUNCTION_ARCSIN: /* arcsin */
+		case AST_FUNCTION_ARCSINH: /* arcsin hyperbolic */
+		case AST_FUNCTION_ARCTAN: /* arctan */
+		case AST_FUNCTION_ARCTANH: /* arctan hyperbolic */
+		case AST_FUNCTION_CEILING: /* rounds value to next integer */
+		case AST_FUNCTION_COS: /* cosinus */
+		case AST_FUNCTION_COSH: /* cosinus hyperbilic */
+		case AST_FUNCTION_COT: /* cotangens = 1/tan */
+		case AST_FUNCTION_COTH: /* coth = 1/tanh */
+		case AST_FUNCTION_CSC: /* cosec = 1/sinus */
+		case AST_FUNCTION_CSCH: /* csch = 1/sinh */
+		case AST_FUNCTION_EXP: /* exp( value ) */
+		case AST_FUNCTION_FACTORIAL:
+		case AST_FUNCTION_FLOOR: /* rounds value to next integer */
+		case AST_FUNCTION_LN: /* log_e */
+		case AST_FUNCTION_LOG: /* log_10 */
+		case AST_FUNCTION_SEC: /* sec = 1/cosinus */
+		case AST_FUNCTION_SECH: /* sech = 1/cosh */
+		case AST_FUNCTION_SIN: /* sinus */
+		case AST_FUNCTION_SINH: /* sinus hyperbolic */
+		case AST_FUNCTION_TAN: /* tangens */
+		case AST_FUNCTION_TANH: /* tangens hyperbolic */
+			save = analyse64(c,child(AST,0));
+			c->codeSize += 12;
+			if (save < 8)
+				save = 8;
+			return save;
+
+/* logical cases depends from 0.0 and 1.0 as initial values */
+		case AST_LOGICAL_XOR:
+		case AST_LOGICAL_AND:
+		case AST_LOGICAL_OR:
+			save = analyse64(c,child(AST,0));
+			if(save < 9)
+				save = 9;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse64(c,child(AST,i));
+				if(save < save1+1)
+					save = save1+1;
+				}
+			c->codeSize += (childnum-1)*32;
+			return save;
+		case AST_LOGICAL_NOT:
+			save = analyse64(c,child(AST,0));
+			c->codeSize += 27;
+			return save;
+		case AST_RELATIONAL_EQ:
+			c->codeSize -= (childnum-1)*4;
+		case AST_RELATIONAL_GEQ:
+		case AST_RELATIONAL_GT:
+		case AST_RELATIONAL_LEQ:
+		case AST_RELATIONAL_LT:
+			save = analyse64(c,child(AST,0));
+			if(save < 8 + childnum)
+				save = 8 + childnum;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse64(c,child(AST,i));
+				if(save < save1 + i)
+					save = save1 + i;
+				}
+			c->codeSize += 21;
+			c->codeSize += (childnum-1)*41;
+			return save;
+
+		default:
+			printf("ERROR: Wrong AST_type\n");
+			c->codeSize += 4;
+			return 1;
+		}
+
+	return 0;
+	}
+
+/* analyse64 the need of external Stack places */
+int analyse64Stack (ASTNode_t *AST) {
+	
+	int i, childnum, save, save1;
+	ASTNodeType_t type;
+	type = ASTNode_getType(AST);
+	childnum = ASTNode_getNumChildren(AST);
+	
+	switch(type) {
+		case AST_INTEGER:
+		case AST_REAL:
+		case AST_REAL_E:
+		case AST_RATIONAL:
+			return 1;
+		case AST_NAME:
+			if (ASTNode_isSetIndex(AST)) {
+				if (ASTNode_isSetData(AST)) {
+					/* function call (old version) */
+					return 8;
+				}
+				else
+				{
+					/* data->value[ASTNode_getIndex(AST)]; */
+					return 1;
+				}
+			}
+			if (strcmp(ASTNode_getName(AST),"time") == 0 ||
+				strcmp(ASTNode_getName(AST),"Time") == 0 ||
+				strcmp(ASTNode_getName(AST),"TIME") == 0) {
+				return 1;
+				}
+/* OLD VERSION */
+			return 8;
+		case AST_FUNCTION_DELAY: /* not implemented */
+		case AST_LAMBDA: /* not implemented */
+		case AST_CONSTANT_FALSE: /* 0.0 */
+		case AST_NAME_TIME:
+		case AST_CONSTANT_E:
+		case AST_CONSTANT_PI: /* pi */
+			return 1;
+		case AST_CONSTANT_TRUE: /* 1.0 */
+			return 2;
+
+		case AST_PLUS: /* add values */
+		case AST_TIMES: /* mult values */
+			save = analyse64Stack(child(AST,0));
+		    for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse64Stack(child(AST,i));
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_MINUS: /* sub values */
+		    if ( childnum<2 ) {
+				save = analyse64Stack(child(AST,0));
+				if(save < 2)
+					save = 2;
+				} else {
+				save = analyse64Stack(child(AST,1));
+				save1 = analyse64Stack(child(AST,0));
+				if(save < save1+1)
+					save = save1 + 1;
+				}
+			return save;
+		case AST_DIVIDE: /* divide values */
+			save = analyse64Stack(child(AST,1));
+			save1 = analyse64Stack(child(AST,0));
+			if(save < save1+1)
+				save = save1 + 1;
+			return save;
+		case AST_POWER: /* calculates value 1 to the power of value 2 */
+		case AST_FUNCTION_POWER:
+		case AST_FUNCTION_ROOT:
+			save1 = analyse64Stack(child(AST,0));
+			save = analyse64Stack(child(AST,1));
+			if(save < save1+1)
+				save = save1 + 1;
+			if (save < 8)
+				save = 8;
+			return save;
+
+		case AST_FUNCTION: /* user defined function */
+			if (UsrDefFunc == NULL) { /* no function defined */
+				save = 1;
+				} else {
+				save = 8;
+				for (i = 0 ; i < childnum ; i++) { /* compute parameters and store them on the external stack */
+					save1 = analyse64Stack(child(AST,i));
+					if(save1 + i > save)
+						save = save1 + i;
+					}
+				if(save < childnum + 8)
+					save = childnum + 8;
+				}
+			return save;
+		case AST_FUNCTION_PIECEWISE: /* USEFUL? NOT CORRECTLY IMPLEMENTED! */
+			save = 10;
+		    for ( i = 0 ; i < childnum-1 ; i = i + 2) {
+				save1 = analyse64Stack(child(AST,i+1));
+				if(save < save1+1)
+					save = save1+1;
+				save1 = analyse64Stack(child(AST,i));
+				if(save < save1+2)
+					save = save1+2;
+				}
+			return save;
+
+		case AST_FUNCTION_ABS: /* absolut value */
+		case AST_FUNCTION_ARCCOS: /* arccos = pi/2.0 - arcsin  = pi/2.0 - arctan(value / sqrt(1.0-value^2)) */
+		case AST_FUNCTION_ARCCOSH: /* arccos hyperbolic */
+		case AST_FUNCTION_ARCCOT: /* arccot = pi/2.0 - arctan */
+		case AST_FUNCTION_ARCCOTH: /* arccot hyperbolic */
+		case AST_FUNCTION_ARCCSC: /* arccsc = arcsin(1.0/value) */
+		case AST_FUNCTION_ARCCSCH: /* arccsc hyperbolic */
+		case AST_FUNCTION_ARCSEC: /* arccsc = arccos(1.0/value) =  pi/2.0 - arcsin(1.0/value) */
+		case AST_FUNCTION_ARCSECH: /* arcsec hyperbolic */
+		case AST_FUNCTION_ARCSIN: /* arcsin */
+		case AST_FUNCTION_ARCSINH: /* arcsin hyperbolic */
+		case AST_FUNCTION_ARCTAN: /* arctan */
+		case AST_FUNCTION_ARCTANH: /* arctan hyperbolic */
+		case AST_FUNCTION_CEILING: /* rounds value to next integer */
+		case AST_FUNCTION_COS: /* cosinus */
+		case AST_FUNCTION_COSH: /* cosinus hyperbilic */
+		case AST_FUNCTION_COT: /* cotangens = 1/tan */
+		case AST_FUNCTION_COTH: /* coth = 1/tanh */
+		case AST_FUNCTION_CSC: /* cosec = 1/sinus */
+		case AST_FUNCTION_CSCH: /* csch = 1/sinh */
+		case AST_FUNCTION_EXP: /* exp( value ) */
+		case AST_FUNCTION_FACTORIAL:
+		case AST_FUNCTION_FLOOR: /* rounds value to next integer */
+		case AST_FUNCTION_LN: /* log_e */
+		case AST_FUNCTION_LOG: /* log_10 */
+		case AST_FUNCTION_SEC: /* sec = 1/cosinus */
+		case AST_FUNCTION_SECH: /* sech = 1/cosh */
+		case AST_FUNCTION_SIN: /* sinus */
+		case AST_FUNCTION_SINH: /* sinus hyperbolic */
+		case AST_FUNCTION_TAN: /* tangens */
+		case AST_FUNCTION_TANH: /* tangens hyperbolic */
+			save = analyse64Stack(child(AST,0));
+			if (save < 8)
+				save = 8;
+			return save;
+
+/* logical cases depends from 0.0 and 1.0 as initial values */
+		case AST_LOGICAL_XOR:
+		case AST_LOGICAL_AND:
+		case AST_LOGICAL_OR:
+			save = analyse64Stack(child(AST,0));
+			if(save < 9)
+				save = 9;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse64Stack(child(AST,i));
+				if(save < save1+1)
+					save = save1+1;
+				}
+			return save;
+		case AST_LOGICAL_NOT:
+			save = analyse64Stack(child(AST,0));
+			if(save < 2)
+				save = 2;
+			return save;
+		case AST_RELATIONAL_EQ:
+		case AST_RELATIONAL_GEQ:
+		case AST_RELATIONAL_GT:
+		case AST_RELATIONAL_LEQ:
+		case AST_RELATIONAL_LT:
+			save = analyse64Stack(child(AST,0));
+			if(save < 8 + childnum)
+				save = 8 + childnum;
+			for ( i = 1 ; i < childnum ; i++) {
+				save1 = analyse64Stack(child(AST,i));
+				if(save < save1 + i)
+					save = save1 + i;
+				}
+			return save;
+
+		default:
+			printf("ERROR: Wrong AST_type\n");
+			return 1;
+		}
+
+	return 0;
+	}
+
+/* generates the basic elements of the function - CALL THIS FUNCTION TO GENERATE THE FUNCTION */
+void generateFunction(directCode_t *code, ASTNode_t *AST) {
+
+	int i;
+	
+	if(sizeof(void (*)()) == 4) {
+		initCode(code, AST); /* dynamic allocation of necessary memory */
+
+		addByte(code, 0x55); /* PUSH EBP */
+		addByte(code, 0x89); addByte(code, 0xe5); /* MOV EBP, ESP */
+		generate(code, AST);
+		addByte(code, 0x5d); /* POP EBP */
+		addByte(code, 0xc3); /* RETN */
+		}
+		else
+		{
+		initCode64(code, AST); /* dynamic allocation of necessary memory */
+		
+		addByte(code, 0x55); /* PUSH EBP */
+		addByte(code, 0x48); addByte(code, 0x89); addByte(code, 0xe5); /* MOV EBP, ESP */
+		addByte(code, 0x48); addByte(code, 0xb8); /* MOV const RAX */
+		addAddress(code,(long long)code->temp);
+		addByte(code, 0x48); addByte(code, 0x89); addByte(code, 0x38); /* MOV RDI [RAX] */
+/*	addByte(code, 0x9b); addByte(code, 0xdb); addByte(code, 0xe3); /* FINIT */
+		generate64(code, AST);
+		addByte(code, 0xc9); /* LEAVE */
+		addByte(code, 0xc3); /* RETN */
+		}
+	}
+
+
+/* disallocates the functions arrays */
+void destructFunction(directCode_t *code) {
+
+	code->codeSize = 0;
+	code->FPUstackSize = 0;
+	code->storageSize = 0;
+	code->codePosition = 0;
+	code->FPUstackPosition = 0;
+	code->storagePosition = 0;
+	free(code->storage);
+	free(code->FPUstack);
+#ifdef _WIN32
+	if(sizeof(void (*)()) == 4)
+	  free(code->prog);
+#endif
+	}
diff --git a/src/sbmlsolver/ASTCompiler/arithmeticCompilerTest.c b/src/sbmlsolver/ASTCompiler/arithmeticCompilerTest.c
new file mode 100644
index 0000000..ed449ef
--- /dev/null
+++ b/src/sbmlsolver/ASTCompiler/arithmeticCompilerTest.c
@@ -0,0 +1,802 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* IN THIS FILE EMULATES THE ENVIRONMENT FOR THE CODE GENERATOR AND MUST BE CHANGED IN THE FRAMEWORK */
+
+#define ARITHMETIC_TEST
+
+#include "interfaceSimulation.c"
+#include "arithmeticCompiler.c"
+
+
+
+char *string;
+
+/* implements tests for all tokens of the abstract syntax tree that are already implemented - except AST_NAME */
+
+void testAST_INTEGER() {
+	string = "AST_INTEGER: (5.0)";
+	nodes[0].type = AST_INTEGER;
+	nodes[0].childnum = 5;
+	}
+
+void testAST_REAL() {
+	string = "AST_REAL: (5.3)";
+	nodes[0].type = AST_REAL;
+	nodes[0].value = 5.3;
+	}
+
+void testAST_NAME() {
+	string = "AST_NAME: (4.25)";
+	nodes[0].type = AST_NAME;
+	nodes[0].childnum = 5;
+	}
+
+void testAST_FUNCTION_DELAY() {
+	string = "AST_FUNCTION_DELAY: (0.0)";
+	nodes[0].type = AST_FUNCTION_DELAY;
+	}
+	
+void testAST_NAME_TIME() {
+	string = "AST_NAME_TIME: (13.4)";
+	nodes[0].type = AST_NAME_TIME;
+	}
+	
+void testAST_CONSTANT_E() {
+	string = "AST_CONSTANT_E: (2.718)";
+	nodes[0].type = AST_CONSTANT_E;
+	}
+	
+void testAST_CONSTANT_FALSE() {
+	string = "AST_CONSTANT_FALSE: (0.0)";
+	nodes[0].type = AST_CONSTANT_FALSE;
+	}
+
+void testAST_CONSTANT_PI() {
+	string = "AST_CONSTANT_PI: (3.14)";
+	nodes[0].type = AST_CONSTANT_PI;
+	}
+
+void testAST_CONSTANT_TRUE() {
+	string = "AST_CONSTANT_TRUE: (1.0)";
+	nodes[0].type = AST_CONSTANT_TRUE;
+	}
+
+void testAST_PLUS() {
+	string = "AST_PLUS: (7.5)";
+	nodes[0].type = AST_PLUS;
+	nodes[0].childnum = 2;
+	nodes[0].child = (int *)malloc(sizeof(int)*2);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 4.0;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = 3.5;
+	}
+
+void testAST_PLUS_large() {
+	string = "AST_PLUS_large: (3.4)";
+	nodes[0].type = AST_PLUS;
+	nodes[0].childnum = 5;
+	nodes[0].child = (int *)malloc(sizeof(int)*5);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[0].child[2] = 3;
+	nodes[0].child[3] = 4;
+	nodes[0].child[4] = 5;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.0;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = 1.1;
+	nodes[3].type = AST_REAL;
+	nodes[3].value = 2.0;
+	nodes[4].type = AST_REAL;
+	nodes[4].value = 2.3;
+	nodes[5].type = AST_REAL;
+	nodes[5].value = -3.0;
+	}
+
+void testAST_MINUS() {
+	string = "AST_MINUS: (-1.3)";
+	nodes[0].type = AST_MINUS;
+	nodes[0].childnum = 2;
+	nodes[0].child = (int *)malloc(sizeof(int)*2);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.5;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = 2.8;
+	}
+
+void testAST_TIMES() {
+	string = "AST_TIMES: (-8.75)";
+	nodes[0].type = AST_TIMES;
+	nodes[0].childnum = 2;
+	nodes[0].child = (int *)malloc(sizeof(int)*2);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 2.5;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = -3.5;
+	}
+
+void testAST_TIMES_large() {
+	string = "AST_TIMES_large: (15.18)";
+	nodes[0].type = AST_TIMES;
+	nodes[0].childnum = 5;
+	nodes[0].child = (int *)malloc(sizeof(int)*5);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[0].child[2] = 3;
+	nodes[0].child[3] = 4;
+	nodes[0].child[4] = 5;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.0;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = 1.1;
+	nodes[3].type = AST_REAL;
+	nodes[3].value = -2.0;
+	nodes[4].type = AST_REAL;
+	nodes[4].value = 2.3;
+	nodes[5].type = AST_REAL;
+	nodes[5].value = -3.0;
+	}
+
+void testAST_DIVIDE() {
+	string = "AST_DIVIDE: (-0.667)";
+	nodes[0].type = AST_DIVIDE;
+	nodes[0].childnum = 2;
+	nodes[0].child = (int *)malloc(sizeof(int)*2);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 2.0;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = -3.0;
+	}
+
+void testAST_POWER() {
+	string = "AST_POWER: (9.017)";
+	nodes[0].type = AST_POWER;
+	nodes[0].childnum = 2;
+	nodes[0].child = (int *)malloc(sizeof(int)*2);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 2.5;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = 2.4;
+	}
+
+void testAST_LAMBDA() {
+	string = "AST_LAMBDA: (0.0)";
+	nodes[0].type = AST_LAMBDA;
+	}
+
+static double testFunc(char* name, int parameternum, double* values) {
+	int i;
+	double result = 0.0;
+	printf("%s", name);
+	for(i = 0 ; i < parameternum ; i++)
+		result += values[i];
+	return result;
+	}
+
+void testAST_FUNCTION() {
+	UsrDefFunc = testFunc;
+	string = "AST_FUNCTION: (4.0)";
+	nodes[0].type = AST_FUNCTION;
+	nodes[0].name = "Test!";
+	nodes[0].childnum = 2;
+	nodes[0].child = (int *)malloc(sizeof(int)*2);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.0;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = 3.0;
+	}
+
+void testAST_FUNCTION_ABS() {
+	string = "AST_FUNCTION_ABS: (0.54)";
+	nodes[0].type = AST_FUNCTION_ABS;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = -0.54;
+	}
+
+void testAST_FUNCTION_ARCCOS() {
+	string = "AST_FUNCTION_ARCCOS: (0.723)";
+	nodes[0].type = AST_FUNCTION_ARCCOS;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 0.75;
+	}
+
+void testAST_FUNCTION_ARCCOSH() {
+	string = "AST_FUNCTION_ARCCOSH: (2.993)";
+	nodes[0].type = AST_FUNCTION_ARCCOSH;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 10.0;
+	}
+
+void testAST_FUNCTION_ARCCOT() {
+	string = "AST_FUNCTION_ARCCOT: (0.785)";
+	nodes[0].type = AST_FUNCTION_ARCCOT;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.0;
+	}
+
+void testAST_FUNCTION_ARCCOTH() {
+	string = "AST_FUNCTION_ARCCOTH: (0.549)";
+	nodes[0].type = AST_FUNCTION_ARCCOTH;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 2.0;
+	}
+
+void testAST_FUNCTION_ARCCSC() {
+	string = "AST_FUNCTION_ARCCSC: (0.985)";
+	nodes[0].type = AST_FUNCTION_ARCCSC;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.2;
+	}
+
+void testAST_FUNCTION_ARCCSCH() {
+	string = "AST_FUNCTION_ARCCSCH: (0.481)";
+	nodes[0].type = AST_FUNCTION_ARCCSCH;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 2.0;
+	}
+
+void testAST_FUNCTION_ARCSEC() {
+	string = "AST_FUNCTION_ARCSEC: (1.427)";
+	nodes[0].type = AST_FUNCTION_ARCSEC;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 7.0;
+	}
+
+void testAST_FUNCTION_ARCSECH() {
+	string = "AST_FUNCTION_ARCSECH: (2.993)";
+	nodes[0].type = AST_FUNCTION_ARCSECH;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 0.1;
+	}
+
+void testAST_FUNCTION_ARCSIN() {
+	string = "AST_FUNCTION_ARCSIN: (0.848)";
+	nodes[0].type = AST_FUNCTION_ARCSIN;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 0.75;
+	}
+
+void testAST_FUNCTION_ARCSINH() {
+	string = "AST_FUNCTION_ARCSINH: (0.481)";
+	nodes[0].type = AST_FUNCTION_ARCSINH;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 0.5;
+	}
+
+void testAST_FUNCTION_ARCTAN() {
+	string = "AST_FUNCTION_ARCTAN: (0.464)";
+	nodes[0].type = AST_FUNCTION_ARCTAN;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 0.5;
+	}
+
+void testAST_FUNCTION_ARCTANH() {
+	string = "AST_FUNCTION_ARCTANH: (0.549)";
+	nodes[0].type = AST_FUNCTION_ARCTANH;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 0.5;
+	}
+
+void testAST_FUNCTION_CEILING() {
+	string = "AST_FUNCTION_CEILING: (13.0)";
+	nodes[0].type = AST_FUNCTION_CEILING;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 12.345;
+	}
+
+void testAST_FUNCTION_COS() {
+	string = "AST_FUNCTION_COS: (0.54)";
+	nodes[0].type = AST_FUNCTION_COS;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.0;
+	}
+
+void testAST_FUNCTION_COSH() {
+	string = "AST_FUNCTION_COSH: (1.543)";
+	nodes[0].type = AST_FUNCTION_COSH;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.0;
+	}
+
+void testAST_FUNCTION_COT() {
+	string = "AST_FUNCTION_COT: (1.542)";
+	nodes[0].type = AST_FUNCTION_COT;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 10.0;
+	}
+
+void testAST_FUNCTION_COTH() {
+	string = "AST_FUNCTION_COTH: (2.164)";
+	nodes[0].type = AST_FUNCTION_COTH;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 0.5;
+	}
+
+void testAST_FUNCTION_CSC() {
+	string = "AST_FUNCTION_CSC: (-1.838)";
+	nodes[0].type = AST_FUNCTION_CSC;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 10.0;
+	}
+
+void testAST_FUNCTION_CSCH() {
+	string = "AST_FUNCTION_CSCH: (0.276)";
+	nodes[0].type = AST_FUNCTION_CSCH;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 2.0;
+	}
+
+void testAST_FUNCTION_EXP() {
+	string = "AST_FUNCTION_EXP: (330.3)";
+	nodes[0].type = AST_FUNCTION_EXP;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 5.8;
+	}
+
+void testAST_FUNCTION_FACTORIAL() {
+	string = "AST_FUNCTION_FACTORIAL: (720.0)";
+	nodes[0].type = AST_FUNCTION_FACTORIAL;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 6.0;
+	}
+
+void testAST_FUNCTION_FLOOR() {
+	string = "AST_FUNCTION_FLOOR: (12.0)";
+	nodes[0].type = AST_FUNCTION_FLOOR;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 12.98;
+	}
+
+void testAST_FUNCTION_LN() {
+	string = "AST_FUNCTION_LN: (1.609)";
+	nodes[0].type = AST_FUNCTION_LN;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 5.0;
+	}
+
+void testAST_FUNCTION_LOG() {
+	string = "AST_FUNCTION_LOG: (1.813)";
+	nodes[0].type = AST_FUNCTION_LOG;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 65.0;
+	}
+
+void testAST_FUNCTION_PIECEWISE() {
+	string = "AST_FUNCTION_PIECEWISE: (1.4)";
+	nodes[0].type = AST_FUNCTION_PIECEWISE;
+	nodes[0].childnum = 6;
+	nodes[0].child = (int *)malloc(sizeof(int)*6);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[0].child[2] = 3;
+	nodes[0].child[3] = 4;
+	nodes[0].child[4] = 5;
+	nodes[0].child[5] = 6;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 3.4;
+	nodes[2].type = AST_CONSTANT_FALSE;
+	nodes[3].type = AST_REAL;
+	nodes[3].value = 1.4;
+	nodes[4].type = AST_CONSTANT_TRUE;
+	nodes[5].type = AST_REAL;
+	nodes[5].value = 0.4;
+	nodes[6].type = AST_CONSTANT_FALSE;
+	}
+
+void testAST_FUNCTION_POWER() {
+	string = "AST_FUNCTION_POWER: (9.017)";
+	nodes[0].type = AST_FUNCTION_POWER;
+	nodes[0].childnum = 2;
+	nodes[0].child = (int *)malloc(sizeof(int)*2);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 2.5;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = 2.4;
+	}
+
+void testAST_FUNCTION_ROOT() {
+	string = "AST_FUNCTION_ROOT: (1.842)";
+	nodes[0].type = AST_FUNCTION_ROOT;
+	nodes[0].childnum = 2;
+	nodes[0].child = (int *)malloc(sizeof(int)*2);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.5;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = 2.5;
+	}
+
+void testAST_FUNCTION_SEC() {
+	string = "AST_FUNCTION_SEC: (-1.192)";
+	nodes[0].type = AST_FUNCTION_SEC;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 10.0;
+	}
+
+void testAST_FUNCTION_SECH() {
+	string = "AST_FUNCTION_SECH: (0.887)";
+	nodes[0].type = AST_FUNCTION_SECH;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 0.5;
+	}
+
+void testAST_FUNCTION_SIN() {
+	string = "AST_FUNCTION_SIN: (0.841)";
+	nodes[0].type = AST_FUNCTION_SIN;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.0;
+	}
+
+void testAST_FUNCTION_SINH() {
+	string = "AST_FUNCTION_SINH: (1.175)";
+	nodes[0].type = AST_FUNCTION_SINH;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.0;
+	}
+
+void testAST_FUNCTION_TAN() {
+	string = "AST_FUNCTION_TAN: (0.648)";
+	nodes[0].type = AST_FUNCTION_TAN;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 10.0;
+	}
+
+void testAST_FUNCTION_TANH() {
+	string = "AST_FUNCTION_TANH: (0.762)";
+	nodes[0].type = AST_FUNCTION_TANH;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.0;
+	}
+
+void testAST_LOGICAL_AND() {
+	string = "AST_LOGICAL_AND: (1.000)";
+	nodes[0].type = AST_LOGICAL_AND;
+	nodes[0].childnum = 2;
+	nodes[0].child = (int *)malloc(sizeof(int)*2);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[1].type = AST_CONSTANT_TRUE;
+	nodes[2].type = AST_CONSTANT_TRUE;
+	}
+
+void testAST_LOGICAL_NOT() {
+	string = "AST_LOGICAL_NOT: (0.000)";
+	nodes[0].type = AST_LOGICAL_NOT;
+	nodes[0].childnum = 1;
+	nodes[0].child = (int *)malloc(sizeof(int)*1);
+	nodes[0].child[0] = 1;
+	nodes[1].type = AST_CONSTANT_TRUE;
+	}
+
+void testAST_LOGICAL_OR() {
+	string = "AST_LOGICAL_OR: (1.000)";
+	nodes[0].type = AST_LOGICAL_OR;
+	nodes[0].childnum = 2;
+	nodes[0].child = (int *)malloc(sizeof(int)*2);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[1].type = AST_CONSTANT_TRUE;
+	nodes[2].type = AST_CONSTANT_FALSE;
+	}
+
+void testAST_LOGICAL_XOR() {
+	string = "AST_LOGICAL_XOR: (1.000)";
+	nodes[0].type = AST_LOGICAL_XOR;
+	nodes[0].childnum = 3;
+	nodes[0].child = (int *)malloc(sizeof(int)*3);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[0].child[2] = 3;
+	nodes[1].type = AST_CONSTANT_TRUE;
+	nodes[2].type = AST_CONSTANT_TRUE;
+	nodes[3].type = AST_CONSTANT_TRUE;
+	}
+
+void testAST_RELATIONAL_EQ() {
+	string = "AST_RELATIONAL_EQ: (1.000)";
+	nodes[0].type = AST_RELATIONAL_EQ;
+	nodes[0].childnum = 3;
+	nodes[0].child = (int *)malloc(sizeof(int)*3);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[0].child[2] = 3;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.5;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = 1.5;
+	nodes[3].type = AST_REAL;
+	nodes[3].value = 1.5;
+	}
+
+void testAST_RELATIONAL_GEQ() {
+	string = "AST_RELATIONAL_GEQ: (1.000)";
+	nodes[0].type = AST_RELATIONAL_GEQ;
+	nodes[0].childnum = 3;
+	nodes[0].child = (int *)malloc(sizeof(int)*3);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[0].child[2] = 3;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.5;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = 1.5;
+	nodes[3].type = AST_REAL;
+	nodes[3].value = 2.5;
+	}
+
+void testAST_RELATIONAL_GT() {
+	string = "AST_RELATIONAL_GT: (1.000)";
+	nodes[0].type = AST_RELATIONAL_GT;
+	nodes[0].childnum = 3;
+	nodes[0].child = (int *)malloc(sizeof(int)*3);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[0].child[2] = 3;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.5;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = 1.7;
+	nodes[3].type = AST_REAL;
+	nodes[3].value = 2.5;
+	}
+
+void testAST_RELATIONAL_LEQ() {
+	string = "AST_RELATIONAL_LEQ: (1.000)";
+	nodes[0].type = AST_RELATIONAL_LEQ;
+	nodes[0].childnum = 3;
+	nodes[0].child = (int *)malloc(sizeof(int)*3);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[0].child[2] = 3;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 2.5;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = 2.5;
+	nodes[3].type = AST_REAL;
+	nodes[3].value = 1.5;
+	}
+
+void testAST_RELATIONAL_LT() {
+	string = "AST_RELATIONAL_LT: (1.000)";
+	nodes[0].type = AST_RELATIONAL_LT;
+	nodes[0].childnum = 3;
+	nodes[0].child = (int *)malloc(sizeof(int)*3);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[0].child[2] = 3;
+	nodes[1].type = AST_REAL;
+	nodes[1].value = 1.5;
+	nodes[2].type = AST_REAL;
+	nodes[2].value = 1.2;
+	nodes[3].type = AST_REAL;
+	nodes[3].value = 0.5;
+	}
+
+void complexTest1() { /* (1.0 + pi + 3.0)*(-10.0/7.0) */
+	string = "complexTest1: (-10.20)";
+	nodes[0].type = AST_TIMES;
+	nodes[0].childnum = 2;
+	nodes[0].child = (int *)malloc(sizeof(int)*2);
+	nodes[0].child[0] = 1;
+	nodes[0].child[1] = 2;
+	nodes[1].type = AST_PLUS;
+	nodes[1].childnum = 3;
+	nodes[1].child = (int *)malloc(sizeof(int)*3);
+	nodes[1].child[0] = 3;
+	nodes[1].child[1] = 4;
+	nodes[1].child[2] = 5;
+	nodes[2].type = AST_MINUS;
+	nodes[2].childnum = 1;
+	nodes[2].child = (int *)malloc(sizeof(int)*1);
+	nodes[2].child[0] = 6;
+	nodes[3].type = AST_REAL;
+	nodes[3].value = 1.0;
+	nodes[4].type = AST_CONSTANT_PI;
+	nodes[5].type = AST_REAL;
+	nodes[5].value = 3.0;
+	nodes[6].type = AST_DIVIDE;
+	nodes[6].childnum = 2;
+	nodes[6].child = (int *)malloc(sizeof(int)*2);
+	nodes[6].child[0] = 7;
+	nodes[6].child[1] = 8;
+	nodes[7].type = AST_REAL;
+	nodes[7].value = 10.0;
+	nodes[8].type = AST_REAL;
+	nodes[8].value = 7.0;
+	}
+
+int main (int argc, char **argv) {
+    
+    int i, num = 0;
+	int maxnodes = 20;
+	int functionnum = 60;
+	double x;
+	directCode_t *code = (directCode_t *)malloc(sizeof(directCode_t));
+	cvodeData_t *data = (cvodeData_t *)malloc(sizeof(cvodeData_t));
+	void (**tests)() = (void (**)())malloc(sizeof(void (*)())*functionnum);
+	nodes = (ASTNode_t *)malloc(sizeof(ASTNode_t)*maxnodes);
+	data->value = (double *)malloc(sizeof(double)*10);
+	data->value[5] = 4.25;
+	data->currenttime = 13.4;
+	
+	tests[num++] = testAST_INTEGER;
+	tests[num++] = testAST_REAL;
+	tests[num++] = testAST_NAME;
+	tests[num++] = testAST_FUNCTION_DELAY;
+	tests[num++] = testAST_NAME_TIME;
+	tests[num++] = testAST_CONSTANT_E;
+	tests[num++] = testAST_CONSTANT_FALSE;
+	tests[num++] = testAST_CONSTANT_PI;
+	tests[num++] = testAST_CONSTANT_TRUE;
+	tests[num++] = testAST_PLUS;
+	tests[num++] = testAST_PLUS_large;
+	tests[num++] = testAST_MINUS;
+	tests[num++] = testAST_TIMES;
+	tests[num++] = testAST_TIMES_large;
+	tests[num++] = testAST_DIVIDE;
+	tests[num++] = testAST_POWER;
+	tests[num++] = testAST_FUNCTION;
+	tests[num++] = testAST_FUNCTION_ABS;
+	tests[num++] = testAST_FUNCTION_ARCCOS;
+	tests[num++] = testAST_FUNCTION_ARCCOSH;
+	tests[num++] = testAST_FUNCTION_ARCCOT;
+	tests[num++] = testAST_FUNCTION_ARCCOTH;
+	tests[num++] = testAST_FUNCTION_ARCCSC;
+	tests[num++] = testAST_FUNCTION_ARCCSCH;
+	tests[num++] = testAST_FUNCTION_ARCSEC;
+	tests[num++] = testAST_FUNCTION_ARCSECH;
+	tests[num++] = testAST_FUNCTION_ARCSIN;
+	tests[num++] = testAST_FUNCTION_ARCSINH;
+	tests[num++] = testAST_FUNCTION_ARCTAN;
+	tests[num++] = testAST_FUNCTION_ARCTANH;
+	tests[num++] = testAST_FUNCTION_CEILING;
+	tests[num++] = testAST_FUNCTION_COS;
+	tests[num++] = testAST_FUNCTION_COSH;
+	tests[num++] = testAST_FUNCTION_COT;
+	tests[num++] = testAST_FUNCTION_COTH;
+	tests[num++] = testAST_FUNCTION_CSC;
+	tests[num++] = testAST_FUNCTION_CSCH;
+	tests[num++] = testAST_FUNCTION_EXP;
+	tests[num++] = testAST_FUNCTION_FACTORIAL;
+	tests[num++] = testAST_FUNCTION_FLOOR;
+	tests[num++] = testAST_FUNCTION_LN;
+	tests[num++] = testAST_FUNCTION_LOG;
+	tests[num++] = testAST_FUNCTION_PIECEWISE;
+	tests[num++] = testAST_FUNCTION_POWER;
+	tests[num++] = testAST_FUNCTION_ROOT;
+	tests[num++] = testAST_FUNCTION_SEC;
+	tests[num++] = testAST_FUNCTION_SECH;
+	tests[num++] = testAST_FUNCTION_SIN;
+	tests[num++] = testAST_FUNCTION_SINH;
+	tests[num++] = testAST_FUNCTION_TAN;
+	tests[num++] = testAST_FUNCTION_TANH;
+	tests[num++] = testAST_LOGICAL_AND;
+	tests[num++] = testAST_LOGICAL_NOT;
+	tests[num++] = testAST_LOGICAL_OR;
+	tests[num++] = testAST_LOGICAL_XOR;
+	tests[num++] = testAST_RELATIONAL_EQ;
+	tests[num++] = testAST_RELATIONAL_GEQ;
+	tests[num++] = testAST_RELATIONAL_GT;
+	tests[num++] = testAST_RELATIONAL_LEQ;
+	tests[num++] = testAST_RELATIONAL_LT;
+	tests[num++] = complexTest1;
+	
+	/* tests */
+	for(i = 0 ; i < num ; i++) {
+		tests[i]();
+		generateFunction(code, &nodes[0]);
+		x = code->evaluate(data);
+		destructFunction(code);
+		printf("%s %8.3f\n", string, x);
+		}
+
+	return 0;
+	}
diff --git a/src/sbmlsolver/ASTCompiler/interfaceSimulation.c b/src/sbmlsolver/ASTCompiler/interfaceSimulation.c
new file mode 100644
index 0000000..fcc66b7
--- /dev/null
+++ b/src/sbmlsolver/ASTCompiler/interfaceSimulation.c
@@ -0,0 +1,90 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include <stdlib.h>
+/* defines all types of nodes in the abstract syntax tree, to work stand alone with the code generator */
+typedef enum {AST_INTEGER, AST_REAL, AST_REAL_E, AST_RATIONAL, AST_NAME,
+AST_FUNCTION_DELAY, AST_NAME_TIME, AST_CONSTANT_E, AST_CONSTANT_FALSE, AST_CONSTANT_PI, AST_CONSTANT_TRUE,
+AST_PLUS, AST_MINUS, AST_TIMES, AST_DIVIDE, AST_POWER, AST_LAMBDA, AST_FUNCTION, AST_FUNCTION_ABS,
+AST_FUNCTION_ARCCOS, AST_FUNCTION_ARCCOSH, AST_FUNCTION_ARCCOT, AST_FUNCTION_ARCCOTH,
+AST_FUNCTION_ARCCSC, AST_FUNCTION_ARCCSCH, AST_FUNCTION_ARCSEC, AST_FUNCTION_ARCSECH,
+AST_FUNCTION_ARCSIN, AST_FUNCTION_ARCSINH, AST_FUNCTION_ARCTAN, AST_FUNCTION_ARCTANH,
+AST_FUNCTION_CEILING, AST_FUNCTION_COS, AST_FUNCTION_COSH, AST_FUNCTION_COT, AST_FUNCTION_COTH,
+AST_FUNCTION_CSC, AST_FUNCTION_CSCH, AST_FUNCTION_EXP, AST_FUNCTION_FACTORIAL, AST_FUNCTION_FLOOR,
+AST_FUNCTION_LN, AST_FUNCTION_LOG, AST_FUNCTION_PIECEWISE, AST_FUNCTION_POWER, AST_FUNCTION_ROOT,
+AST_FUNCTION_SEC, AST_FUNCTION_SECH, AST_FUNCTION_SIN, AST_FUNCTION_SINH, AST_FUNCTION_TAN, AST_FUNCTION_TANH,
+AST_LOGICAL_AND, AST_LOGICAL_NOT, AST_LOGICAL_OR, AST_LOGICAL_XOR,
+AST_RELATIONAL_EQ, AST_RELATIONAL_GEQ, AST_RELATIONAL_GT, AST_RELATIONAL_LEQ, AST_RELATIONAL_LT
+} ASTNodeType_t;
+
+/* defines a node in the abstract syntax tree, to work stand alone with the code generator */
+typedef struct {
+	ASTNodeType_t type;
+	int childnum;
+	int *child;
+	char *name;
+	double value;
+} ASTNode_t;
+
+typedef struct {
+	double *time;
+	double **data;
+} time_series_t;
+
+typedef struct {
+	int discrete_observation_data;
+	int compute_vector_v;
+	char **names;
+	time_series_t *time_series;
+} model_t;
+
+typedef struct {
+	int nvalues;
+	int TimeSeriesIndex;
+	double currenttime;
+	double *value;
+	model_t *model;
+} cvodeData_t;
+
+static double (*UsrDefFunc)(char*, int, double*) = NULL;
+/* nodes: AST - abstract syntax tree */
+ASTNode_t *nodes;
+
+/* simulation of the ASTNode_t functions */
+double ASTNode_getReal(ASTNode_t *n) {
+	return n->value;
+	}
+
+int ASTNode_getInteger(ASTNode_t *n) {
+	return n->childnum;
+	}
+
+ASTNodeType_t ASTNode_getType(ASTNode_t *n) {
+	return n->type;
+	}
+
+int ASTNode_getNumChildren(ASTNode_t *n) {
+	return n->childnum;
+	}
+
+char *ASTNode_getName(ASTNode_t *n) {
+	return n->name;
+	}
+
+int ASTNode_isSetIndex(ASTNode_t *n) {
+	return 0;
+	}
+
+int ASTNode_isSetData(ASTNode_t *n) {
+	return 0;
+	}
+
+int ASTNode_getIndex(ASTNode_t *n) {
+	return 0;
+	}
+	
+double call( int index, double currenttime, time_series_t *ts) {
+	return 0.0;
+	}
+
+ASTNode_t *child(ASTNode_t *n, int i) {
+	return &nodes[n->child[i]];
+	}
diff --git a/src/sbmlsolver/ASTIndexNameNode.h b/src/sbmlsolver/ASTIndexNameNode.h
new file mode 100644
index 0000000..0a17e80
--- /dev/null
+++ b/src/sbmlsolver/ASTIndexNameNode.h
@@ -0,0 +1,37 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#ifndef SBMLSOLVER_ASTINDEXNAMENODE_H_
+#define SBMLSOLVER_ASTINDEXNAMENODE_H_
+
+#include <sbml/math/ASTNode.h>
+
+#include <sbmlsolver/exportdefs.h>
+
+BEGIN_C_DECLS
+
+/* creates a new AST node with an index field */
+SBML_ODESOLVER_API ASTNode_t *ASTNode_createIndexName(void);
+
+/* returns 1 if the node is indexed */
+SBML_ODESOLVER_API int ASTNode_isIndexName(const ASTNode_t *);
+
+/* assumes node is index node */ 
+SBML_ODESOLVER_API unsigned int ASTNode_getIndex(const ASTNode_t *);
+
+/* returns 0 if node isn't index or if index is not set yet */
+SBML_ODESOLVER_API unsigned int ASTNode_isSetIndex(const ASTNode_t *);
+
+/* assumes node is index node */
+SBML_ODESOLVER_API void ASTNode_setIndex(ASTNode_t *, unsigned int); 
+
+/* returns 0 if node isn't index or if data is not set yet */
+SBML_ODESOLVER_API unsigned int ASTNode_isSetData(const ASTNode_t *);
+
+/* assumes node is index node, and then sets data  */
+SBML_ODESOLVER_API void ASTNode_setData(ASTNode_t *); 
+
+
+
+
+END_C_DECLS
+
+#endif
diff --git a/src/sbmlsolver/arithmeticCompiler.h b/src/sbmlsolver/arithmeticCompiler.h
new file mode 100644
index 0000000..71b3bcb
--- /dev/null
+++ b/src/sbmlsolver/arithmeticCompiler.h
@@ -0,0 +1,74 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-05-09 23:26:31 raim>
+  $Id: arithmeticCompiler.h,v 1.6 2009/02/10 12:42:39 stefan_tbi Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *     Matthias Rosensteiner
+ *     Markus Loeberbauer
+ *
+ * Contributor(s):
+ *     Stefan Müller
+ *     Rainer Machne
+ */
+
+#ifndef SBMLSOLVER_ARITHMETICCOMPILER_H_
+#define SBMLSOLVER_ARITHMETICCOMPILER_H_
+
+/* #define ARITHMETIC_TEST */ /* comment in test arithmeticCompiler.c */
+
+typedef struct directCode directCode_t;
+
+/*!!!! NOTE: includes need to be below typedef definition to avoid
+   circular include problem, but struct declarations needs to
+   be after includes, however some compilers require struct before typedef */
+#include <sbmlsolver/ASTIndexNameNode.h>
+
+struct cvodeData;
+
+struct directCode
+{
+  int codeSize, FPUstackSize, storageSize;
+  int codePosition, FPUstackPosition, storagePosition;
+  unsigned char *prog;
+  double *FPUstack, *storage;
+  double (*evaluate)(struct cvodeData *);
+  ASTNode_t *eqn;
+  long long *temp;
+} ;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void generateFunction(directCode_t *, ASTNode_t *);
+void destructFunction(directCode_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/sbmlsolver/charBuffer.h b/src/sbmlsolver/charBuffer.h
new file mode 100644
index 0000000..f57687a
--- /dev/null
+++ b/src/sbmlsolver/charBuffer.h
@@ -0,0 +1,56 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2006-06-12 11:04:54 raim>
+  $Id: charBuffer.h,v 1.4 2009/03/27 15:55:03 fbergmann Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ */
+
+#ifndef SBMLSOLVER_CHARBUFFER_H_
+#define SBMLSOLVER_CHARBUFFER_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  typedef struct charBuffer charBuffer_t;
+
+  charBuffer_t *CharBuffer_create(void);
+  void CharBuffer_free(charBuffer_t *);
+  void CharBuffer_append(charBuffer_t *, const char *);
+  void CharBuffer_appendInt(charBuffer_t *, int);
+  void CharBuffer_appendDouble(charBuffer_t *, double);
+  const char *CharBuffer_getBuffer(charBuffer_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/sbmlsolver/compiler.h b/src/sbmlsolver/compiler.h
new file mode 100644
index 0000000..c403ceb
--- /dev/null
+++ b/src/sbmlsolver/compiler.h
@@ -0,0 +1,113 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2007-08-20 21:06:02 raim>
+  $Id: compiler.h,v 1.8 2009/03/27 15:55:03 fbergmann Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ *    Christoph Flamm, Rainer Machne
+ */
+
+#ifndef SBMLSOLVER_COMPILER_H_
+#define SBMLSOLVER_COMPILER_H_
+
+#ifdef _WIN32
+#include <windows.h>
+#endif
+
+#include <sbmlsolver/exportdefs.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+  
+#ifndef _WIN32
+#define MAX_PATH 256
+#endif
+
+
+#if USE_TCC == 1
+#include <libtcc.h>
+#endif
+  
+  
+  /**
+     A structure that stores compiled code
+  */
+  struct compiled_code
+  {
+
+#if USE_TCC == 1
+    TCCState *s;
+#else
+#ifdef _WIN32
+    HMODULE dllHandle;
+#else
+    void *dllHandle;
+#endif /* _WIN32 */
+    char *dllFileName;
+#endif /* USE_TCC == 1 */
+
+  };
+
+  /* the compiled code structure */
+  typedef struct compiled_code compiled_code_t ;
+
+  /**
+   * create compiled code from C source
+   
+   *   On windows this creates a DLL and loads it
+   *   On Liunx it will use libtcc and in memory compilation
+   *   -- this is better!!
+   */
+  SBML_ODESOLVER_API compiled_code_t *Compiler_compile(const char *sourceCode);
+
+  /**
+   * get pointer to given function corresponding to the symbol
+   * in the compiled code
+   
+   *   On windows use WIN32 API to locate function in dll
+   *   On Linux use libtcc to locate function
+   */
+  SBML_ODESOLVER_API void *CompiledCode_getFunction(compiled_code_t *, const char *symbol);
+
+  /**
+   * discard compiled code - don't call this until you have stopped
+   * calling the functions returned by getFunction.
+   
+   *   On windows use Win32 to unlink dll and delete dll
+   *   On Linux use libtcc to discard in memory code
+   */
+  SBML_ODESOLVER_API void CompiledCode_free(compiled_code_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/sbmlsolver/cvodeData.h b/src/sbmlsolver/cvodeData.h
new file mode 100644
index 0000000..2d4bd64
--- /dev/null
+++ b/src/sbmlsolver/cvodeData.h
@@ -0,0 +1,230 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <01-Feb-2011 14:08:56 raim>
+  $Id: cvodeData.h,v 1.17 2011/03/06 09:58:11 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Andrew Finney
+ *     
+ */
+
+#ifndef SBMLSOLVER_CVODEDATA_H_
+#define SBMLSOLVER_CVODEDATA_H_
+
+typedef struct cvodeData cvodeData_t ;
+typedef struct cvodeResults cvodeResults_t ;
+typedef struct objFunc objFunc_t;
+
+#include <sbmlsolver/integratorSettings.h>
+#include <sbmlsolver/exportdefs.h>
+#include <sbmlsolver/odeModel.h>
+#include <sbmlsolver/variableIndex.h>
+
+/* required for realtype */
+#include <sundials/sundials_types.h>
+
+struct objFunc
+{
+  /* adjoint */
+  /* Adjoint: Given a parameter to observation map F(p),
+     computes the adjoint operator applied to the vector v, F'*(p)v.
+     v is given by a symbolic expression involving x and observation data. */
+
+
+  int discrete_observation_data;    /**< 0: data observed is of
+				       continuous type (i.e., interpolated)
+				       1: data observed is of
+				       discrete type  */
+
+  int compute_vector_v;            /*  if evaluateAST is called to
+				       computed vector_v  */
+
+  time_series_t *time_series;  /**< time series of observation data
+				  or of vector v */
+
+  ASTNode_t **vector_v;     /**< the vector v, expressiing linear
+			       objective used in sensitivity solvers */
+  ASTNode_t *ObjectiveFunction;  /**< expression for a general (nonlinear)
+				    objective function */
+ 
+};
+
+/** Contains the data needed for AST formula evaluation and odeModel
+    integration and usually corresponds to an odeModel
+      
+    cvodeData is used for storing current variable, sensitivity and time
+    values. It also holds the internal version of ODEs for optimized for
+    a specific integration run and current (on or off) states of event
+    triggers and of steady state approximation and the number of integration
+    runs with this instance of cvodeData.
+      
+    API Interface functions to retrieve values directly from cvodeData,
+    instead of via IntegratorInstance_getVariableValue()) will be available
+    in one of the next releases!
+*/
+struct cvodeData {
+
+  odeModel_t *model;
+  /** the sensitivity structures, matrices etc. as constructed
+      from odeModel_t */
+  odeSense_t *os;
+  /** objective function and experimental data for adjoint solver */
+  objFunc_t *of;
+  
+
+  /** number of ODEs */
+  int neq;
+
+  /* current values: variables x(t), assigned and constant parameters */
+  /** total number of values (variables x(t) + parameters p) */
+  int nvalues; 
+  /** value array is used to write and read the current values of
+      all variables x(t) and parameters p of the system (of which
+      there are `nvalues') */  
+  double *value; 
+  int allRulesUpdated; /* flag if all rules are up-to-date with current
+			  variables and event assignments */
+
+  /** the current time of the integration */
+  float currenttime;
+
+  /* current sensitivities: dx(t)/dp */
+  /** number of requested sensitivities dx(t)/dp */
+  int nsens;
+  /** current values of sensitivities dx(t)/dp */
+  double **sensitivity; 
+  /** current and original values of parameters in sensitivity
+      analysis, required only if no r.h.s function fS is available
+      (missing Jacobi or missing parametrix matrix) */
+  unsigned int use_p;
+  realtype *p;
+  realtype *p_orig;
+  
+  /** cvode settings: start- and end times, timesteps, number of timesteps,
+      error tolerances, maximum number of steps, etc... */
+  cvodeSettings_t *opt;
+  
+  /** trigger flags: check if triggers were active or not
+      at the previous time step */
+  int nevents;
+  int *trigger;
+
+  /** steady state flag: check if steady state was found */
+  int steadystate; 
+
+  /** Results: time series of integration are stored in this
+      structure (see above) */
+  cvodeResults_t *results;
+  
+
+  /* Adjoint specific  */
+  /** value array is used to write and read the current values of
+      all adjoint variables \psi(t) (of which there are `neq') */  
+  double *adjvalue;  
+ 
+  /* for computing vector_v using discrete observation data */
+  int TimeSeriesIndex;
+
+  /* Fisher Information Matrix */
+
+  double** FIM;
+  double* weights; /* for the inner product defining the entries of the FIM */
+
+} ;
+
+/** Stores CVODE specific integration results, data correspond
+    to the respective values in cvodeData */
+struct cvodeResults {
+   /** counter for calculated time steps (without initial conditions),
+       this number can be lower than the same variable in cvodeData,
+       in case the integration is prematurely stopped. */
+  int nout;
+  /** contains the specific time steps for an integration */
+  double *time;
+
+  /** number of variables for which results exist */
+  int nvalues;     
+  /** the following arrays represent the time series of all variables
+      and parameters of the model */
+  double **value;
+
+  /* number of variables x(t) for which sensitivities are calculated */
+  int neq;
+  /** number of parameters p for sens. analysis */
+  int nsens;
+  int *index_sens;
+  /** time course of sensitivities dx(t)/dp */
+  double ***sensitivity;
+  /** time course of directional sensitivities \sum_i dx(t)/dp_i \delta p_i */
+  double **directional;  
+ 
+  /** Adjoint specific stuff */
+
+  /** dimension of the adjoint solution  */
+ /*  int nadjeq; */
+  /**  the time series of all adjoint variables */
+  double **adjvalue;
+
+} ;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+  
+  /* create data for formula evaluation */
+  SBML_ODESOLVER_API cvodeData_t *CvodeData_create(odeModel_t *);
+  SBML_ODESOLVER_API void CvodeData_free(cvodeData_t *);
+  /*!!! TODO : should the initialization of data really be public???*/
+  SBML_ODESOLVER_API void CvodeData_initializeValues(cvodeData_t *);
+  SBML_ODESOLVER_API int CvodeData_initialize(cvodeData_t *, cvodeSettings_t *, odeModel_t *, int keepValues);
+  
+  /* get values from cvodeResults */
+  SBML_ODESOLVER_API double CvodeResults_getTime(const cvodeResults_t *, int);
+  SBML_ODESOLVER_API double CvodeResults_getValue(cvodeResults_t *, variableIndex_t *, int);
+  SBML_ODESOLVER_API int CvodeResults_getNout(const cvodeResults_t *);
+  SBML_ODESOLVER_API double CvodeResults_getSensitivityByNum(cvodeResults_t *,  int value, int parameter, int timestep);
+  SBML_ODESOLVER_API double CvodeResults_getSensitivity(cvodeResults_t *,  variableIndex_t *y,  variableIndex_t *p, int timestep);
+  SBML_ODESOLVER_API void CvodeResults_computeDirectional(cvodeResults_t *results, const double *dp);
+  SBML_ODESOLVER_API void CvodeResults_free(cvodeResults_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/* internal functions used by integratorInstance.c */
+cvodeResults_t *CvodeResults_create(cvodeData_t *, int);
+int CvodeResults_allocateSens(cvodeResults_t *, int neq, int nsens, int nout);
+int CvodeData_initializeSensitivities(cvodeData_t *,cvodeSettings_t *,
+				      odeModel_t *, odeSense_t *);
+
+#endif
+
+/* End of file */
diff --git a/src/sbmlsolver/cvodeSolver.h b/src/sbmlsolver/cvodeSolver.h
new file mode 100644
index 0000000..93d7fd4
--- /dev/null
+++ b/src/sbmlsolver/cvodeSolver.h
@@ -0,0 +1,70 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-10-16 18:00:39 raim>
+  $Id: cvodeSolver.h,v 1.12 2009/03/27 15:55:03 fbergmann Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Andrew Finney
+ */
+
+#ifndef SBMLSOLVER_CVODESOLVER_H_
+#define SBMLSOLVER_CVODESOLVER_H_
+
+#include <sbmlsolver/exportdefs.h>
+#include <sbmlsolver/integratorInstance.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define CVODE_HANDLE_ERROR(_flag, _function, _type)	\
+  {  if (check_flag(_flag, _function, _type)) {		\
+      /* SolverError_dump(); */ \
+      return(0); }}
+  
+  /* CVODE SOLVER */
+  SBML_ODESOLVER_API int IntegratorInstance_cvodeOneStep(integratorInstance_t *);
+  SBML_ODESOLVER_API int IntegratorInstance_printCVODEStatistics(const integratorInstance_t *, FILE *f);
+
+  /* internal functions that are not part of the API (yet?) */
+  int IntegratorInstance_createCVODESolverStructures(integratorInstance_t *);
+  void IntegratorInstance_freeCVODESolverStructures(integratorInstance_t *);
+  void IntegratorInstance_freeForwardSensitivity(integratorInstance_t *);
+  void IntegratorInstance_freeAdjointSensitivity(integratorInstance_t *);
+  int check_flag(void *flagvalue, const char *funcname, int opt);
+  
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* End of file */
diff --git a/src/sbmlsolver/daeSolver.h b/src/sbmlsolver/daeSolver.h
new file mode 100644
index 0000000..6b6f999
--- /dev/null
+++ b/src/sbmlsolver/daeSolver.h
@@ -0,0 +1,61 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2005-11-03 14:54:35 raim>
+  $Id: daeSolver.h,v 1.2 2009/03/27 15:55:03 fbergmann Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Andrew Finney
+ */
+
+#ifndef SBMLSOLVER_DAESOLVER_H_
+#define SBMLSOLVER_DAESOLVER_H_
+
+#include <sbmlsolver/exportdefs.h>
+#include <sbmlsolver/integratorInstance.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  /* IDA SOLVER */
+  SBML_ODESOLVER_API int IntegratorInstance_idaOneStep(integratorInstance_t *);
+  SBML_ODESOLVER_API void IntegratorInstance_printIDAStatistics(integratorInstance_t *, FILE *f);
+
+  /* internal functions that are not part of the API (yet?) */
+  int IntegratorInstance_createIDASolverStructures(integratorInstance_t *);
+  void IntegratorInstance_freeIDASolverStructures(integratorInstance_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* End of file */
diff --git a/src/sbmlsolver/drawGraph.h b/src/sbmlsolver/drawGraph.h
new file mode 100644
index 0000000..88d471d
--- /dev/null
+++ b/src/sbmlsolver/drawGraph.h
@@ -0,0 +1,28 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2005-11-17 13:55:39 raim>
+  $Id: drawGraph.h,v 1.7 2009/03/27 15:55:03 fbergmann Exp $
+*/
+#ifndef SBMLSOLVER_DRAWGRAPH_H_
+#define SBMLSOLVER_DRAWGRAPH_H_
+
+#include <sbml/SBMLTypes.h>
+#include <sbmlsolver/cvodeData.h>
+#include <sbmlsolver/exportdefs.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  /* Drawing the model with GraphViz */
+  SBML_ODESOLVER_API int drawModel(Model_t *, char *, char*);
+  SBML_ODESOLVER_API int drawJacoby(cvodeData_t *, char *, char*);
+  SBML_ODESOLVER_API int drawSensitivity(cvodeData_t *, char *, char*, double);
+  
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* End of file */
diff --git a/src/sbmlsolver/exportdefs.h b/src/sbmlsolver/exportdefs.h
new file mode 100644
index 0000000..33e25fe
--- /dev/null
+++ b/src/sbmlsolver/exportdefs.h
@@ -0,0 +1,71 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2005-10-26 17:24:50 raim>
+  $Id: exportdefs.h,v 1.5 2005/10/26 15:32:13 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ */
+
+#ifndef SBMLSOLVER_EXPORTDEFS_H_
+#define SBMLSOLVER_EXPORTDEFS_H_
+
+/* The following ifdef block is the standard way of creating macros
+which make exporting from a DLL simpler. All files within this DLL are
+compiled with the SBML_ODESOLVER_EXPORTS symbol defined on the command
+line. this symbol should not be defined on any project that uses this
+DLL. This way any other project whose source files include this file
+see SBML_ODESOLVER_API functions as being imported from a DLL, whereas
+this DLL sees symbols defined with this macro as being exported. */
+#ifdef _WIN32
+#ifdef SBML_ODESOLVER_EXPORTS
+#define SBML_ODESOLVER_API __declspec(dllexport)
+#else
+#define SBML_ODESOLVER_API __declspec(dllimport)
+#endif
+#else
+#define SBML_ODESOLVER_API
+#endif
+
+/* examples of use...
+
+// This class is exported from the SBML_odeSolver.dll
+class SBML_ODESOLVER_API CSBML_odeSolver {
+public:
+	CSBML_odeSolver(void);
+	// TODO: add your methods here.
+};
+
+extern SBML_ODESOLVER_API int nSBML_odeSolver;
+
+SBML_ODESOLVER_API int fnSBML_odeSolver(void);
+
+*/
+
+#endif
diff --git a/src/sbmlsolver/integratorInstance.h b/src/sbmlsolver/integratorInstance.h
new file mode 100644
index 0000000..c1dd2b6
--- /dev/null
+++ b/src/sbmlsolver/integratorInstance.h
@@ -0,0 +1,218 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <16-Feb-2011 11:16:01 raim>
+  $Id: integratorInstance.h,v 1.43 2011/03/06 09:58:11 raimc Exp $ 
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ *     Rainer Machne
+ */
+
+#ifndef SBMLSOLVER_INTEGRATORINSTANCE_H_
+#define SBMLSOLVER_INTEGRATORINSTANCE_H_
+
+typedef struct cvodeSolver cvodeSolver_t;
+typedef struct integratorInstance integratorInstance_t ;
+
+#include <sbmlsolver/exportdefs.h>
+#include <sbmlsolver/integratorSettings.h>
+#include <sbmlsolver/odeModel.h>
+#include <sbmlsolver/cvodeData.h>
+
+#include <time.h>
+#include <sundials/sundials_types.h>
+
+/** Solver State Information */
+struct cvodeSolver
+{
+    double t0;        /**< initial time of last solver initialization */
+    double t;         /**< current time of the integrator */
+    double tout;      /**< next time of the integrator */
+    int nout;         /**< number of requested time steps */    
+    int iout;         /**< time step counter ( < nout ) */
+    realtype reltol;  /**< relative error tolerance */
+    realtype atol1;   /**< absolute error tolerance */
+    N_Vector abstol;  /**< array of abs. err. tol., might once be used
+			 for individual error tolerances */
+    N_Vector y;       /**< the solution vector, x(t) ! */
+    N_Vector q;       /**< quadrature of integral functional for x(t) */ 
+
+    void *cvode_mem;  /**< pointer to the CVode Solver structure */    
+    int nsens;        /**< number of requested sensitivities */
+    N_Vector *yS;     /**< the sensitivities matrix, dx(t)/dp ! */    
+    N_Vector senstol; /**< absolute tolerance for sensitivity error control */
+    N_Vector qS;       /**< forward sensitivity quadratures of
+			 integral functional */ 
+    N_Vector dy;      /**< current ODE values dx/dt, IDA specific data! */
+
+    /** adjoint specific */
+    void *cvadj_mem;
+    N_Vector yA;    
+    realtype reltolA, reltolQA;
+    N_Vector abstolA, abstolQA; 
+    N_Vector qA;
+    /** FIM */
+    N_Vector qFIM;    /** quadrature for Fisher Information Matrix: < yS_i , yS_j > */
+
+};
+
+
+/** the main structure for numerical integration */
+struct integratorInstance
+  {
+    /** implies that the 'data' field state is consistant with the
+	'solver' field */ 
+    int isValid;
+
+
+    /** number of (forward) runs with the one integratorInstance */
+    int run;
+    
+    /** number of adjoint runs with the one integratorInstance */
+    int adjrun;
+
+    /* indicates whether this solver uses the analytic Jacobian matrix or
+       internal approximation, it combines user request via
+       opt->UseJacobian and success of matrix construction via om->jacobian */
+    int UseJacobian;
+
+    /** if 0, do the forward phase of the normal run or the forward
+	phase in preparation for the adjoint, if 1 start the backward phase
+	of the adjoint solver */
+    int AdjointPhase;
+
+    /** the ODE Model as passed for construction of cvodeData and
+	cvodeSolver */
+    odeModel_t *om;
+    /** the sensitivity structures, matrices etc. as constructed
+        from odeModel_t */
+    odeSense_t *os;
+    /** objective function and experimental data for adjoint solver */
+    objFunc_t *of;
+    /** the integrator settings as passed for construction
+	of cvodeData and cvodeSolver  */
+    cvodeSettings_t *opt;
+    /** contains current values,
+	created with integratorInstance from odeModel and cvodeSettings */
+    cvodeData_t *data;
+    /** solver structure (CVODES or IDA or other future solvers) */
+    cvodeSolver_t *solver;
+    /** optional results structure, shared with cvodeData */
+    cvodeResults_t *results; 
+
+    /** start time of integration clock (doesn't include initial solver setup
+	and compilation) */
+    clock_t startTime;
+    /** indicates whether startTime has a valid value */
+    int clockStarted;
+
+    /** indicates that events should be processed at the end of
+	this time step */
+    int processEvents;
+};
+  
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* common to all solvers */
+  /* BEFORE INTEGRATION: creation and (re-)setting  */
+  SBML_ODESOLVER_API integratorInstance_t *IntegratorInstance_create(odeModel_t *, cvodeSettings_t *);
+  SBML_ODESOLVER_API int IntegratorInstance_set(integratorInstance_t *, cvodeSettings_t *);
+  SBML_ODESOLVER_API int IntegratorInstance_reset(integratorInstance_t *);
+  SBML_ODESOLVER_API int IntegratorInstance_resetTime(integratorInstance_t *engine, cvodeSettings_t *opt);
+  SBML_ODESOLVER_API int IntegratorInstance_resetAdjPhase(integratorInstance_t *);
+  SBML_ODESOLVER_API int IntegratorInstance_setInitialTime(integratorInstance_t *, double);
+  SBML_ODESOLVER_API cvodeSettings_t *IntegratorInstance_getSettings(integratorInstance_t *);
+
+  /* DURING INTEGRATION: */
+  SBML_ODESOLVER_API int IntegratorInstance_setNextTimeStep(integratorInstance_t *, double);
+  SBML_ODESOLVER_API void IntegratorInstance_setVariableValue(integratorInstance_t *, variableIndex_t *, double);
+  SBML_ODESOLVER_API void IntegratorInstance_setVariableValueByID(integratorInstance_t *, const char*, double);
+  SBML_ODESOLVER_API int IntegratorInstance_integrate(integratorInstance_t *);
+  SBML_ODESOLVER_API int IntegratorInstance_simpleOneStep(integratorInstance_t *);
+  SBML_ODESOLVER_API int IntegratorInstance_integrateOneStep(integratorInstance_t *);
+  SBML_ODESOLVER_API int IntegratorInstance_integrateOneStepWithoutEventProcessing(integratorInstance_t *);
+  SBML_ODESOLVER_API int IntegratorInstance_checkTrigger(integratorInstance_t *);
+  SBML_ODESOLVER_API int IntegratorInstance_checkSteadyState(integratorInstance_t *);
+  SBML_ODESOLVER_API int IntegratorInstance_timeCourseCompleted(const integratorInstance_t *);
+  SBML_ODESOLVER_API int IntegratorInstance_handleError(integratorInstance_t *);
+
+  SBML_ODESOLVER_API void IntegratorInstance_dumpSolver(integratorInstance_t *);
+  SBML_ODESOLVER_API void IntegratorInstance_dumpNames(integratorInstance_t *);
+  SBML_ODESOLVER_API void IntegratorInstance_dumpData(integratorInstance_t *);
+  SBML_ODESOLVER_API void IntegratorInstance_dumpAdjData(integratorInstance_t *);
+  SBML_ODESOLVER_API cvodeData_t *IntegratorInstance_getData(integratorInstance_t *);
+  SBML_ODESOLVER_API void IntegratorInstance_copyVariableState(integratorInstance_t *target, integratorInstance_t *source);
+  SBML_ODESOLVER_API double IntegratorInstance_getTime(const integratorInstance_t *);
+  SBML_ODESOLVER_API const char *IntegratorInstance_getVariableName(integratorInstance_t *, variableIndex_t *);
+  SBML_ODESOLVER_API double IntegratorInstance_getVariableValue(integratorInstance_t *, variableIndex_t *);
+  SBML_ODESOLVER_API double IntegratorInstance_getIntegrationTime(const integratorInstance_t *);
+  SBML_ODESOLVER_API double *IntegratorInstance_getValues(integratorInstance_t *);
+
+  /* SENSITIVITIES INTERFACE */
+  SBML_ODESOLVER_API odeSense_t *IntegratorInstance_getSensitivityModel(integratorInstance_t *);
+  SBML_ODESOLVER_API double IntegratorInstance_getSensitivity(integratorInstance_t *, variableIndex_t *y,  variableIndex_t *p);
+  SBML_ODESOLVER_API double IntegratorInstance_getSensitivityByNum(integratorInstance_t *, int y, int p);
+  SBML_ODESOLVER_API int IntegratorInstance_getNsens(integratorInstance_t *);
+  SBML_ODESOLVER_API char* IntegratorInstance_getSensVariableName(integratorInstance_t *, int);
+
+  SBML_ODESOLVER_API void IntegratorInstance_dumpYSensitivities(integratorInstance_t *, variableIndex_t *);
+  SBML_ODESOLVER_API void IntegratorInstance_dumpPSensitivities(integratorInstance_t *, variableIndex_t *);
+  
+  /* FISHER INFORMATION MATRIX INTERFACE */
+  SBML_ODESOLVER_API double IntegratorInstance_getFIM(integratorInstance_t *, int, int);
+  SBML_ODESOLVER_API void IntegratorInstance_setFIMweights(integratorInstance_t *, double *, int);
+
+  /* AFTER INTEGRATION */
+  SBML_ODESOLVER_API const cvodeResults_t *IntegratorInstance_getResults(const integratorInstance_t *);
+  SBML_ODESOLVER_API cvodeResults_t *IntegratorInstance_createResults(const integratorInstance_t *);
+  SBML_ODESOLVER_API void IntegratorInstance_printResults(const integratorInstance_t *, FILE *);
+  SBML_ODESOLVER_API int IntegratorInstance_updateModel(integratorInstance_t*);
+  SBML_ODESOLVER_API void IntegratorInstance_printStatistics(const integratorInstance_t *, FILE *f);
+
+  /* END */
+  SBML_ODESOLVER_API void IntegratorInstance_free(integratorInstance_t *);
+  
+#ifdef __cplusplus
+}
+#endif
+
+/* default function for data update, event and steady state handling,
+   result storage and loop variables; to be used by solver
+   specific ...OneStep functions */
+int IntegratorInstance_updateData(integratorInstance_t *);
+
+/* default function for adjoint data update, event and steady state handling,
+   result storage and loop variables; to be used by solver
+   specific ...OneStep functions */
+int IntegratorInstance_updateAdjData(integratorInstance_t *);
+
+
+#endif
diff --git a/src/sbmlsolver/integratorSettings.h b/src/sbmlsolver/integratorSettings.h
new file mode 100644
index 0000000..6ece76b
--- /dev/null
+++ b/src/sbmlsolver/integratorSettings.h
@@ -0,0 +1,253 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2010-04-12 10:24:41 raim>
+  $Id: integratorSettings.h,v 1.41 2010/04/12 08:30:28 raimc Exp $ 
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     
+ */
+
+#ifndef SBMLSOLVER_INTEGRATORSETTINGS_H_
+#define SBMLSOLVER_INTEGRATORSETTINGS_H_
+
+/* structures */
+typedef struct timeSettings timeSettings_t;
+typedef struct cvodeSettings cvodeSettings_t;
+
+#include <sbmlsolver/exportdefs.h>
+#include <sbmlsolver/interpol.h>
+  
+  /** Settings for CVODE Integration
+
+      This structure contains the basic settings for an integration run,
+      like the time course, relative and absolute erros,
+      integration methods etc.
+      
+      It also contains diverse switches for integrator behaviour, as well
+      as for setting sensitivity analysis
+  */
+  struct cvodeSettings {
+    double Time;          /**< End time to which model is integrated or 
+			     step size if 'Indefinitely' is true */
+    int PrintStep;        /**< Number of output steps from 0 to 'Time';
+			     ignored if 'Indefinitely' */
+    int StepResolution;   /**< number of internal integration steps between
+			       output steps (PrintStep), defaults to 1,
+			       but is useful for fine-grained event detection */
+    double *TimePoints;   /**< Optional array for designed time-courses.
+			     If passed by the calling application,
+			     Time will be ignored and overruled by
+			     TimePoints[Printstep+1], otherwise TimePoints
+			     will be calculated from Time and PrintSteps */
+    int Indefinitely;     /**< if not 0: run without a defined end
+			     time, Time field contains step
+			     duration, ignore PrintStep field*/
+    double Error;         /**< absolute tolerance in Cvode integration */
+    double RError;        /**< relative tolerance in Cvode integration */
+    int Mxstep;           /**< maximum step number for CVode integration */
+    int DetectNegState;   /**< makes the RHS evaluation function return 1 
+			        (i.e., a recoverable error)
+			        if negative state inputs are encountered */
+    int CvodeMethod;      /**< set ADAMS-MOULTON (1) or BDF (0)
+			     nonlinear solver */
+    int IterMethod;       /**< set type of nonlinear solver iteration
+			     Newton (0) or Functional (1) */
+    int MaxOrder;         /**< set maximum order of ADAMS or BDF method */
+    int ResetCvodeOnEvent; /**< restart CVODE when event is triggered */
+    int SetTStop;          /**< runs CVODES with TSTOP, save mode for using
+			      IntegratorInstance_setVariableValue */
+    
+    int Sensitivity;      /**< if not 0: use CVODES for sensitivity analysis */
+    char **sensIDs;       /**< ID's for parameters and initial conditions 
+			     for sensitivity analysis */ 
+    int nsens;
+    int SensMethod;       /**< set sensitivity analysis method:
+			     0: SIMULTANEOUS,
+			     1: STAGGERED,
+			     2: STAGGERED1   */
+    
+    int HaltOnEvent;      /**< if not 0: Stop integration upon an event */
+    int SteadyState;      /**< if not 0: Stop integration upon a
+			     steady state */
+    double ssThreshold;   /**< threshold value for steady state detection */
+    
+    int UseJacobian;      /**< use of Jacobian ASTs (1) or CVODES'
+			     internal approximation (0)*/
+    
+    int StoreResults;     /**< if not 0: store time course history */
+
+    int compileFunctions ;  /**< if 1 use compiled functions for ODE,
+			       Jacobian and events */
+
+    /* ADJOINT */
+    int observation_data_type;    /**< 0: continuous data observed
+                                       1: discrete data observed  */  
+
+    /** Adjoint related flags and settings   */   
+    int DoAdjoint;          /**< if 1, the adjoint solution is desired   */
+    /* int AdjointPhase;   */     /**< if 0, do the forward phase of the normal run 
+			       or the forward phase in preparation for
+			       the adjoint  */
+    
+    double AdjTime;          /**< Time to which model is integrated or if
+				step size if 'Indefinitely' is true */
+    int AdjPrintStep;        /**< Number of output steps from 0 to 'Time';
+				ignored if 'Indefinitely' */ 
+     
+    double *AdjTimePoints;   /**< Optional array of designed time-course.
+				If passed by the calling application,
+				AdjTime will be ignored and overruled by
+				AdjTimePoints[AdjPrintstep+1], otherwise
+				AdjTimePoints will be calculated from
+				AdjTime and AdjPrintSteps */
+
+    int nSaveSteps;           /**< Number of steps saved in forward phase  */
+    int ncheck;              /**< Number of checkpoints, as returned by
+				CvodeF */
+
+    double AdjError;         /**< absolute tolerance in adjoint integration */
+    double AdjRError;        /**< relative tolerance in adjoint integration */ 
+    int AdjStoreResults;     /**< if not 0: Store adjoint time
+				course history */
+
+
+    /** Settings associated with reading discrete data */
+    int OffSet;
+    int InterStep;
+
+    /* Fisher Information Matrix (FIM) */
+    int doFIM;
+      
+  } ;
+
+
+
+  /** NOT USED CURRENTLY!
+      timeSettings: start- and end times, timesteps, number of timesteps */
+  struct timeSettings {
+    double t0;
+    double tmult;
+    double tend;
+    int nout;
+  } ;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  /* functions */
+  /* ??might be implented?? */
+  timeSettings_t *TimeSettings_create(double t0, double tend, int nout);
+  void TimeSettings_free(timeSettings_t *time);
+  cvodeSettings_t *CvodeSettings_createFromTimeSettings(timeSettings_t *time);
+
+  /* create and free, get and set cvodeSettings */
+  SBML_ODESOLVER_API cvodeSettings_t *CvodeSettings_create(void);
+  SBML_ODESOLVER_API cvodeSettings_t *CvodeSettings_createWithTime(double Time, int PrintStep);
+  SBML_ODESOLVER_API cvodeSettings_t *CvodeSettings_createWith(double EndTime, int PrintStep, double Error, double RError, int Mxstep, int Method, int IterMethod, int UseJacobian, int Indefinitely, int HaltOnEvent, int SteadyState, int StoreResults, int Sensitivity, int SensMethod);
+  SBML_ODESOLVER_API int CvodeSettings_setTime(cvodeSettings_t *, double EndTime, int PrintStep);
+  SBML_ODESOLVER_API int CvodeSettings_setTimeStep(cvodeSettings_t *, int, double);
+  SBML_ODESOLVER_API int CvodeSettings_setTimeSeries(cvodeSettings_t *, double *timeseries, int PrintStep);
+
+  SBML_ODESOLVER_API void CvodeSettings_setDiscreteObservation(cvodeSettings_t *);
+  SBML_ODESOLVER_API void CvodeSettings_unsetDiscreteObservation(cvodeSettings_t *); 
+  SBML_ODESOLVER_API int CvodeSettings_getObservationDataType(cvodeSettings_t *);
+  SBML_ODESOLVER_API void CvodeSettings_setFIM(cvodeSettings_t *set) ;
+  SBML_ODESOLVER_API void CvodeSettings_unsetFIM(cvodeSettings_t *set); 
+  SBML_ODESOLVER_API int CvodeSettings_setForwAdjTimeSeriesFromData(cvodeSettings_t *, char *, int);
+  SBML_ODESOLVER_API int CvodeSettings_setTimePointsFromExpm(cvodeSettings_t *, time_series_t *, int);
+ 
+  SBML_ODESOLVER_API void CvodeSettings_setSwitches(cvodeSettings_t *, int UseJacobian, int Indefinitely, int HaltOnEvent, int SteadyState, int StoreResults, int Sensitivity, int SensMethod);
+  SBML_ODESOLVER_API void CvodeSettings_setErrors(cvodeSettings_t *, double Error, double RError, int Mxstep);
+  SBML_ODESOLVER_API void CvodeSettings_setError(cvodeSettings_t *, double);
+  SBML_ODESOLVER_API void CvodeSettings_setRError(cvodeSettings_t *, double);
+  SBML_ODESOLVER_API void CvodeSettings_setMxstep(cvodeSettings_t *, int);
+  SBML_ODESOLVER_API void CvodeSettings_setDetectNegState(cvodeSettings_t *, int);
+  SBML_ODESOLVER_API void CvodeSettings_setTStop(cvodeSettings_t *, int);
+  SBML_ODESOLVER_API void CvodeSettings_setCompileFunctions(cvodeSettings_t *, int);
+
+  /* Adjoint setttings */
+  SBML_ODESOLVER_API void CvodeSettings_setDoAdj(cvodeSettings_t *);
+  SBML_ODESOLVER_API void CvodeSettings_unsetDoAdj(cvodeSettings_t *);
+  SBML_ODESOLVER_API void CvodeSettings_setAdjErrors(cvodeSettings_t *, double Error, double RError);
+  SBML_ODESOLVER_API void CvodeSettings_setAdjError(cvodeSettings_t *, double);
+  SBML_ODESOLVER_API void CvodeSettings_setAdjRError(cvodeSettings_t *, double);
+  SBML_ODESOLVER_API void CvodeSettings_setnSaveSteps(cvodeSettings_t *, int);
+  SBML_ODESOLVER_API int CvodeSettings_setAdjTime(cvodeSettings_t *, double EndTime, int PrintStep);
+  SBML_ODESOLVER_API  int CvodeSettings_setAdjTimeSeries(cvodeSettings_t *set, double *timeseries, int AdjPrintStep, double EndTime);
+
+
+  SBML_ODESOLVER_API void CvodeSettings_setMethod(cvodeSettings_t *, int, int);
+  SBML_ODESOLVER_API void CvodeSettings_setIterMethod(cvodeSettings_t *, int);
+  SBML_ODESOLVER_API void CvodeSettings_setMaxOrder(cvodeSettings_t *, int);
+  SBML_ODESOLVER_API void CvodeSettings_setJacobian(cvodeSettings_t *, int);
+  SBML_ODESOLVER_API void CvodeSettings_setIndefinitely(cvodeSettings_t *, int);
+  SBML_ODESOLVER_API void CvodeSettings_setHaltOnEvent(cvodeSettings_t *, int);
+  SBML_ODESOLVER_API void CvodeSettings_setResetCvodeOnEvent(cvodeSettings_t *, int);
+  SBML_ODESOLVER_API void CvodeSettings_setHaltOnSteadyState(cvodeSettings_t *, int);
+  SBML_ODESOLVER_API void CvodeSettings_setSteadyStateThreshold(cvodeSettings_t *, double);
+  SBML_ODESOLVER_API void CvodeSettings_setStoreResults(cvodeSettings_t *, int);
+  SBML_ODESOLVER_API void CvodeSettings_setSensitivity(cvodeSettings_t *, int);
+  SBML_ODESOLVER_API int CvodeSettings_setSensParams(cvodeSettings_t *, char **, int);
+  SBML_ODESOLVER_API void CvodeSettings_unsetSensParams(cvodeSettings_t *);
+  SBML_ODESOLVER_API void CvodeSettings_setSensMethod(cvodeSettings_t *, int);
+  SBML_ODESOLVER_API void CvodeSettings_dump(cvodeSettings_t *);
+  SBML_ODESOLVER_API void CvodeSettings_free(cvodeSettings_t *);
+  SBML_ODESOLVER_API cvodeSettings_t *CvodeSettings_clone(cvodeSettings_t *);
+  
+  SBML_ODESOLVER_API double CvodeSettings_getEndTime(cvodeSettings_t *);
+  SBML_ODESOLVER_API int CvodeSettings_getPrintsteps(cvodeSettings_t *);
+  SBML_ODESOLVER_API double CvodeSettings_getTimeStep(cvodeSettings_t *);
+  SBML_ODESOLVER_API double CvodeSettings_getTime(cvodeSettings_t *, int);  
+  SBML_ODESOLVER_API double CvodeSettings_getError(cvodeSettings_t *);
+  SBML_ODESOLVER_API double CvodeSettings_getRError(cvodeSettings_t *);
+  SBML_ODESOLVER_API int CvodeSettings_getMxstep(cvodeSettings_t *);
+  SBML_ODESOLVER_API const char *CvodeSettings_getMethod(const cvodeSettings_t *);
+  SBML_ODESOLVER_API const char *CvodeSettings_getIterMethod(const cvodeSettings_t *);
+  SBML_ODESOLVER_API int CvodeSettings_getMaxOrder(cvodeSettings_t *);
+  SBML_ODESOLVER_API int CvodeSettings_getCompileFunctions(cvodeSettings_t *);
+  SBML_ODESOLVER_API int CvodeSettings_getResetCvodeOnEvent(cvodeSettings_t *);
+
+  SBML_ODESOLVER_API int CvodeSettings_getJacobian(cvodeSettings_t *);
+  SBML_ODESOLVER_API int CvodeSettings_getIndefinitely(cvodeSettings_t *);
+  SBML_ODESOLVER_API int CvodeSettings_getHaltOnEvent(cvodeSettings_t *);
+  SBML_ODESOLVER_API int CvodeSettings_getHaltOnSteadyState(cvodeSettings_t *);
+  SBML_ODESOLVER_API double CvodeSettings_getSteadyStateThreshold(cvodeSettings_t *);
+  SBML_ODESOLVER_API int CvodeSettings_getStoreResults(cvodeSettings_t *);
+  SBML_ODESOLVER_API int CvodeSettings_getSensitivity(cvodeSettings_t *);
+  SBML_ODESOLVER_API const char *CvodeSettings_getSensMethod(const cvodeSettings_t *);
+
+  
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INTEGRATORSETTINGS_H_ */
+
diff --git a/src/sbmlsolver/interpol.h b/src/sbmlsolver/interpol.h
new file mode 100644
index 0000000..d781b2e
--- /dev/null
+++ b/src/sbmlsolver/interpol.h
@@ -0,0 +1,95 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2007-09-07 13:05:00 raim>
+  $Id: interpol.h,v 1.6 2008/01/28 19:25:27 stefan_tbi Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Stefan M�ller
+ *
+ * Contributor(s):
+ *     
+ */
+
+#ifndef SBMLSOLVER_INTERPOL_H_
+#define SBMLSOLVER_INTERPOL_H_
+
+typedef struct ts time_series_t;
+
+  /** Stores Interpolation Data */
+  struct ts {
+    int    n_var;   /**< number of variables in the list */
+    char   **var;   /**< list of variables */
+
+    int    n_data;  /**< number of variables for which data is stored */
+    double **data;  /**< time series data for variables */
+    int    type;    /**< interpolation type */
+    double **data2; /**< interpolation data for variables */
+    
+    int    n_time;  /**< number of time points */
+    double *time;   /**< time points */
+    
+    int    last;    /**< last interpolation interval */
+
+    char   **mess;  /**< list of warning messages */
+    int    *warn;   /**< number of warnings */
+  } ;
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  int read_header_line(const char *file, int n_var, char **var,
+			    int *col, int *index);
+  int read_columns(const char *file, int n_col, int *col, int *index,
+			time_series_t *ts);
+
+  void free_data(time_series_t *ts);
+  void print_data(time_series_t *ts);
+  void test_interpol(time_series_t *ts);
+
+  time_series_t *read_data(const char *file, int num, char **var);
+
+  double call(int i, double x, time_series_t *ts);
+
+  int spline(int n, const double *x, const double *y, double *y2);
+  void splint(int n, const double *x, const double *y, const double *y2,
+	      double x_, double *y_, int *j);
+
+  void linint(int n, const double *x, const double *y,
+	      double x_, double *y_, int *j);
+	    
+  int  bisection(int n, const double *x, double x_);
+  void hunt(int n, const double *x, double x_, int *low);
+  
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* end of file */
diff --git a/src/sbmlsolver/modelSimplify.h b/src/sbmlsolver/modelSimplify.h
new file mode 100644
index 0000000..981104c
--- /dev/null
+++ b/src/sbmlsolver/modelSimplify.h
@@ -0,0 +1,62 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2005-10-27 12:46:37 raim>
+  $Id: modelSimplify.h,v 1.7 2009/03/27 15:55:03 fbergmann Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     
+ */
+
+#ifndef SBMLSOLVER_MODELSIMPLIFY_H_
+#define SBMLSOLVER_MODELSIMPLIFY_H_
+
+#include <sbml/SBMLTypes.h>
+
+#include <sbmlsolver/exportdefs.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  SBML_ODESOLVER_API void AST_replaceNameByFormula(ASTNode_t *, const char *, const ASTNode_t *);
+  SBML_ODESOLVER_API void AST_replaceNameByName(ASTNode_t *, const char *, const char *);
+  SBML_ODESOLVER_API void AST_replaceNameByValue(ASTNode_t *, const char *, double);
+  SBML_ODESOLVER_API void AST_replaceNameByParameters(ASTNode_t *, ListOf_t* );
+  SBML_ODESOLVER_API void AST_replaceFunctionDefinition(ASTNode_t *, const char *, const ASTNode_t *);
+  SBML_ODESOLVER_API void AST_replaceConstants(Model_t *, ASTNode_t *);
+
+  
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* End of file */
diff --git a/src/sbmlsolver/nullSolver.h b/src/sbmlsolver/nullSolver.h
new file mode 100644
index 0000000..16b600f
--- /dev/null
+++ b/src/sbmlsolver/nullSolver.h
@@ -0,0 +1,61 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2005-11-04 19:04:45 raim>
+  $Id: nullSolver.h,v 1.3 2009/03/27 15:55:03 fbergmann Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *
+ */
+
+#ifndef SBMLSOLVER_NULLSOLVER_H_
+#define SBMLSOLVER_NULLSOLVER_H_
+
+#include <sbmlsolver/exportdefs.h>
+#include <sbmlsolver/integratorInstance.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  /* KINSOL SOLVER */
+  SBML_ODESOLVER_API int IntegratorInstance_nullSolver(integratorInstance_t *);
+  SBML_ODESOLVER_API void IntegratorInstance_printKINSOLStatistics(integratorInstance_t *, FILE *f);
+
+#ifdef __cplusplus
+}
+#endif
+
+/* internal functions that are not part of the API (yet?) */
+int IntegratorInstance_createKINSolverStructures(integratorInstance_t *);
+void IntegratorInstance_freeKINSolverStructures(integratorInstance_t *);
+  
+#endif
+
+/* End of file */
diff --git a/src/sbmlsolver/odeConstruct.h b/src/sbmlsolver/odeConstruct.h
new file mode 100644
index 0000000..4d28bda
--- /dev/null
+++ b/src/sbmlsolver/odeConstruct.h
@@ -0,0 +1,59 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2006-06-13 14:09:24 raim>
+  $Id: odeConstruct.h,v 1.11 2009/03/27 15:55:03 fbergmann Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     
+ */
+
+#ifndef SBMLSOLVER_ODECONSTRUCT_H_
+#define SBMLSOLVER_ODECONSTRUCT_H_
+
+#include <sbml/SBMLTypes.h>
+
+#include <sbmlsolver/exportdefs.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+  
+  SBML_ODESOLVER_API double Model_getValueById(Model_t *, const char *);
+  SBML_ODESOLVER_API int Model_setValue(Model_t *, const char *, const char *, double);
+  SBML_ODESOLVER_API Model_t* Model_reduceToOdes(Model_t *);
+  SBML_ODESOLVER_API ASTNode_t *Species_odeFromReactions(Species_t *, Model_t *);
+  
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* End of file */
diff --git a/src/sbmlsolver/odeModel.h b/src/sbmlsolver/odeModel.h
new file mode 100644
index 0000000..af8ec5e
--- /dev/null
+++ b/src/sbmlsolver/odeModel.h
@@ -0,0 +1,371 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <16-Feb-2011 11:16:21 raim>
+  $Id: odeModel.h,v 1.56 2011/03/06 09:59:46 raimc Exp $ 
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ *     Rainer Machne     
+ */
+
+#ifndef SBMLSOLVER_ODEMODEL_H_
+#define SBMLSOLVER_ODEMODEL_H_
+
+typedef struct odeModel odeModel_t;
+typedef struct odeSense odeSense_t;
+typedef struct nonzeroElem nonzeroElem_t;
+typedef int (*EventFn)(void *, int *); /* RM: replaced cvodeData_t
+					    pointer with void pointer
+					    because of dependency
+					    problems */
+
+#include <cvodes/cvodes.h>
+#include <cvodes/cvodes_dense.h>
+#include <sbml/SBMLTypes.h>
+
+#include <sbmlsolver/exportdefs.h>
+#include <sbmlsolver/interpol.h>
+#include <sbmlsolver/integratorSettings.h>
+#include <sbmlsolver/compiler.h>
+#include <sbmlsolver/arithmeticCompiler.h>
+#include <sbmlsolver/variableIndex.h>
+
+/** The internal ODE Model as constructed in odeModel.c from an SBML
+    input file, that only contains rate rules (constructed from
+    reaction network in odeConstruct.c)
+*/
+struct odeModel
+{
+  SBMLDocument_t *d; /**< not-NULL only if the odeModel was directly
+			created from file */
+  Model_t *m;        /**< the input SBML reaction network */
+  Model_t *simple;   /**< the derived SBML with rate rules */
+  double *values;    /**< input initial conditions and parameter values
+			(alternative to SBML!) */
+  
+  /** ODE SYSTEM */
+  /** All names, i.e. ODE variables, assigned parameters, and constant
+      parameters */
+  char **names;
+  /** matrix of the DAG of all variable/parameter
+      of assignment and initial assignment rules */
+  unsigned int **dependencyMatrix;
+  int hasCycle;
+  
+  int nconst; /**< number of constant parameters */
+  
+  /** Assigned variables: stores species, compartments and parameters,
+      that are set by an assignment rule */
+  int nass;   /**< number of assigned variables (nass) */
+  ASTNode_t **assignment;
+  directCode_t **assignmentcode;
+  
+  /** topological order of assignments */
+  nonzeroElem_t **assignmentOrder;     /* size nass */
+  /** subset of rules required before ODE evaluation, see
+      'discontinuities' for temporal subsets of rules before event
+      evaluation */
+  int nassbeforeodes;    
+  nonzeroElem_t **assignmentsBeforeODEs; 
+  
+  /** The Ordinary Differential Equation System (ODE)s: f(x,p,t) = dx/dt */
+  int neq;    /**< number of ODEs */
+  ASTNode_t **ode; 
+  directCode_t **odecode;
+  
+  /** JACOBI MATRIX df(x)/dx of the ODE system 
+      neq x neq */
+  ASTNode_t ***jacob;
+  directCode_t ***jacobcode;
+  
+  /** List of non-zero elements i,j of the Jacobi matrix. 
+      Contains indices i and j, as well as direct pointers to
+      the ASTNode in the full matrix construct, and (optionally)
+      compiled versions of the ASTNode equations */
+  nonzeroElem_t **jacobSparse; /**< array of non-zero elements */
+  int sparsesize; /**< number of non-zero elements */
+  
+  /** was the jacobian matrix constructed ? */
+  int jacobian;
+    /** flag indicating that jacobian matrix construction had failed for
+	this model already and does not need to be tried again */
+  int jacobianFailed;
+  
+  
+  /** DISCONTINUITIES : piecewise, events, initial assignments */
+  /** PIECEWISE: piecewise expressions as well as events can lead to
+      problems and will result in CVODES running in CV_NORMAL_TSTOP
+      mode which avoids that the solver internally integrates beyond
+      the next requested timestep */
+    
+  int npiecewise;  /**< number of piecewise expression in equations */
+
+  /** INITIAL ASSIGNMENTS: only evaluated at time <= 0, only
+      ODE variables and constants can be affected */
+  int *indexInit;  /**< index map from om->names to initial assignments */
+  int ninitAss;    /**< number of initial assignments */
+  int *initIndex;  /**< index map from initial assignments to om->names */
+  ASTNode_t **initAssignment;
+  directCode_t **initAssignmentcode;
+    
+    
+  /** EVENTS */
+  int nevents;     /**< number of model events */
+  ASTNode_t **event;
+  directCode_t **eventcode;
+  int *neventAss;     /**< number of event assignments per event */
+  int **eventIndex;  /**< index map from event assignments to om->names */
+  ASTNode_t ***eventAssignment;
+  directCode_t ***eventAssignmentcode;
+  /** topological order of event assignments incl. other assignments */
+  nonzeroElem_t **eventAssignmentOrder; /* size : nIass + nass */
+ 
+
+  /** topological order of assignments and initial assignments,
+      and assignments required before event evaluation */
+  nonzeroElem_t **initAssignmentOrder; /* size : nass + ninitAss */
+  int nassbeforeevents;
+  nonzeroElem_t **assignmentsBeforeEvents;
+    
+  /** DAE SYSTEMS : NOT USED */
+  /** Algebraic Rules (constraints) as used for DAE systems */
+  int nalg;   /**< number of algebraic rules */ 
+  ASTNode_t **algebraic;
+  directCode_t **algebraiccode;
+    
+
+  /* COMPILED CODE OBJECTS */
+  /** compiled code containing compiled ODE and Jacobian functions */
+  compiled_code_t *compiledCVODEFunctionCode; 
+
+  /** CVODE rhs function created by compiling code generated from model */
+  CVRhsFn compiledCVODERhsFunction;
+  /** CVODE jacobian function created by compiling
+      code generated from model */
+  CVDenseJacFn compiledCVODEJacobianFunction;
+
+  /** Event function created by compiling code generated from model */
+  EventFn compiledEventFunction; 
+
+
+  /* compilation of adjoint functions */
+  /** CVODE adjoint rhs function created by compiling
+      code generated from model */
+  CVRhsFnB compiledCVODEAdjointRhsFunction;
+  /* remember which function is used (compiled or hard-coded) */
+  CVRhsFnB current_AdjRHS; 
+  /** CVODE adjoint jacobian function created by compiling code
+      generated from model */
+  CVDenseJacFnB compiledCVODEAdjointJacobianFunction;
+  /* remember which function is used (compiled or hard-coded) */
+  CVDenseJacFnB current_AdjJAC;
+    
+
+  /* ADJOINT */
+  /* Adjoint: Given a parameter to observation map F(p),
+     computes the adjoint operator applied to the vector v, F'*(p)v.
+     v is given by a symbolic expression involving x and observation data. */
+
+  /*!!!: TODO : move objective function and data to separate
+    structure for multi-threaded use */
+  int discrete_observation_data;    /**< 0: data observed is of
+				       continuous type (i.e., interpolated)
+				       1: data observed is of
+				       discrete type  */
+
+  int compute_vector_v;            /*  if evaluateAST is called to
+				       computed vector_v  */
+
+  time_series_t *time_series;  /**< time series of observation data
+				  or of vector v */
+
+  ASTNode_t **vector_v;     /**< the vector v, expressiing linear
+			       objective used in sensitivity solvers */
+  ASTNode_t *ObjectiveFunction;  /**< expression for a general (nonlinear)
+				    objective function */
+};
+
+struct odeSense
+{
+  odeModel_t *om;    /**< odeModel_t structure from which sensitivity
+			structures where derived */    
+  /* forward sensitivity analysis structure, neq x nsens */
+  int neq;                 /**< number of variables for sens. analysis,
+			      equals NEQ of odeModel */
+  int nsens;               /**< number of parameters and initial conditions
+			      for sens. analysis, nsens = nsensP + nsensIC */
+  int *index_sens;         /**< map from sensitivity parameters and
+			      init.cond.  to om->names and
+			      data->values, the main ID and data
+			      storage in odeModel_t and
+			      cvodeData_t */
+  int nsensP;
+  int *index_sensP;        /**< indices of sensitivity parameters in the
+			      sensitivity matrix (or -1 variables) */
+  ASTNode_t ***sens;       /**< sensitivity matrix: df(x)/dp, neq x nsensP */
+  directCode_t ***senscode;/**< compiled sensitivity matrix */
+  int sensitivity;         /**< was the sensitivity matrix constructed ? */
+  /** Non-zero elements i,j of the sensitivity matrix */
+  int **sensLogic;         /**< logic matrix, indicating non-zero elements */
+  nonzeroElem_t **sensSparse; /**< array of non-zero elements */
+  int sparsesize;          /**< number of non-zero elements */
+
+    
+  /** compiled code containing compiled sensitivity functions */
+  compiled_code_t *compiledCVODESensitivityCode; 
+
+  /** flag that indicates whether compilation is required,
+      upon first request or when required parameters have
+      changed since last compilation*/
+  int recompileSensitivity;
+
+  /** Sensitivity function created by compiling code generated from model */
+  CVSensRhs1Fn compiledCVODESenseFunction;
+    
+  /* compilation of adjoint functions */
+  /** CVODE adjoint quadrature function */
+  CVQuadRhsFnB compiledCVODEAdjointQuadFunction;
+  /* remember which function is used (compiled or hard-coded) */
+  CVQuadRhsFnB current_AdjQAD;
+};
+  
+/** Stores a variable index and equations defining this index.
+    Arrays of this structure are used to specify subsets
+    of equations (in the correct order) for evaluation.
+*/
+struct nonzeroElem
+{
+  int i, j;
+  ASTNode_t *ij;
+  directCode_t *ijcode;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  /* ODE creation */
+  SBML_ODESOLVER_API odeModel_t *ODEModel_createFromFile(const char *);
+  SBML_ODESOLVER_API odeModel_t *ODEModel_createFromSBML2(SBMLDocument_t *);
+  SBML_ODESOLVER_API odeModel_t *ODEModel_create(Model_t *);
+  SBML_ODESOLVER_API odeModel_t *ODEModel_createFromODEs(ASTNode_t **, int neq, int nass, int nconst, char **, double *, Model_t *);
+  SBML_ODESOLVER_API void ODEModel_free(odeModel_t *);
+
+  /* ODE variables and parameters */
+  SBML_ODESOLVER_API const Model_t *ODEModel_getModel(odeModel_t *);
+  SBML_ODESOLVER_API const Model_t *ODEModel_getOdeSBML(odeModel_t *);
+  SBML_ODESOLVER_API const Model_t *ODEModel_getInputSBML(odeModel_t *);
+
+  SBML_ODESOLVER_API int ODEModel_getNumValues(const odeModel_t *);
+  SBML_ODESOLVER_API int ODEModel_getNeq(const odeModel_t *);
+  SBML_ODESOLVER_API int ODEModel_getNalg(const odeModel_t *);
+  SBML_ODESOLVER_API int ODEModel_getNumAssignments(const odeModel_t *);
+  SBML_ODESOLVER_API int ODEModel_getNumConstants(const odeModel_t *);
+  SBML_ODESOLVER_API int ODEModel_hasVariable(const odeModel_t *, const char *);
+  SBML_ODESOLVER_API variableIndex_t *ODEModel_getVariableIndexByNum(const odeModel_t *, int);
+  SBML_ODESOLVER_API variableIndex_t *ODEModel_getOdeVariableIndex(const odeModel_t *, int);
+  SBML_ODESOLVER_API variableIndex_t *ODEModel_getAssignedVariableIndex(const odeModel_t *, int);
+  SBML_ODESOLVER_API variableIndex_t *ODEModel_getConstantIndex(const odeModel_t *, int);
+  SBML_ODESOLVER_API variableIndex_t *ODEModel_getVariableIndex(odeModel_t *, const char *);
+  SBML_ODESOLVER_API void ODEModel_dumpNames(odeModel_t *);
+
+  /* Topological sorting */
+  SBML_ODESOLVER_API int ODEModel_hasCycle(const odeModel_t *);
+  SBML_ODESOLVER_API int ODEModel_getNumAssignmentsBeforeODEs(const odeModel_t *);
+  SBML_ODESOLVER_API int ODEModel_getNumAssignmentsBeforeEvents(const odeModel_t *);
+  SBML_ODESOLVER_API int ODEModel_getNumJacobiElements(const odeModel_t *);
+  SBML_ODESOLVER_API const nonzeroElem_t *ODEModel_getAssignmentOrder(odeModel_t *, int);
+  SBML_ODESOLVER_API const nonzeroElem_t *ODEModel_getAssignmentBeforeODEs(odeModel_t *, int);
+  SBML_ODESOLVER_API const nonzeroElem_t *ODEModel_getAssignmentBeforeEvents(odeModel_t *, int);
+  SBML_ODESOLVER_API const nonzeroElem_t *ODEModel_getJacobiElement(const odeModel_t *, int);
+  
+  /* Variable Index */
+  SBML_ODESOLVER_API const char *ODEModel_getVariableName(const odeModel_t *, const variableIndex_t *);
+  SBML_ODESOLVER_API const char *VariableIndex_getName(const variableIndex_t *, const odeModel_t *);
+  SBML_ODESOLVER_API int VariableIndex_getIndex(const variableIndex_t *);
+  SBML_ODESOLVER_API void VariableIndex_free(variableIndex_t *);
+  /* Evaluation elements */
+  /*!!! TODO : fuse nonzeroElem with variableIndex and use list of variableIndex instead */
+  SBML_ODESOLVER_API const ASTNode_t *NonzeroElement_getEquation(nonzeroElem_t *);
+  SBML_ODESOLVER_API const char *NonzeroElement_getVariableName(nonzeroElem_t *, odeModel_t*);
+  SBML_ODESOLVER_API const char *NonzeroElement_getVariable2Name(nonzeroElem_t *, odeModel_t*);
+  SBML_ODESOLVER_API variableIndex_t *NonzeroElement_getVariableIndex(nonzeroElem_t *, odeModel_t*);
+  SBML_ODESOLVER_API variableIndex_t *NonzeroElement_getVariable2Index(nonzeroElem_t *, odeModel_t*);
+
+  
+  /* ODEs and assignments */
+  SBML_ODESOLVER_API const ASTNode_t *ODEModel_getOde(const odeModel_t *, const variableIndex_t *);
+  SBML_ODESOLVER_API const ASTNode_t *ODEModel_getAssignment(const odeModel_t *, const variableIndex_t *);
+
+
+  /* diverse other useful functions */
+  SBML_ODESOLVER_API List_t *topoSort(int **matrix, int n, int *changed, int*required);
+
+#if 0 /* not yet implemented */
+  /* Discontinuities */
+  SBML_ODESOLVER_API int ODEModel_getNumPiecewise(odeModel_t *);
+  SBML_ODESOLVER_API int ODEModel_getNumEvents(odeModel_t *);
+  SBML_ODESOLVER_API const ASTNode_t *ODEModel_getEventTrigger(odeModel_t *, int);
+  SBML_ODESOLVER_API const ASTNode_t *ODEModel_getEventAssignment(odeModel_t *, int, int);
+#endif
+
+  /* ODE Jacobi matrix */
+  SBML_ODESOLVER_API int ODEModel_constructJacobian(odeModel_t *);
+  SBML_ODESOLVER_API void ODEModel_freeJacobian(odeModel_t *);
+  SBML_ODESOLVER_API const ASTNode_t *ODEModel_getJacobianIJEntry(const odeModel_t *, int i, int j);
+  SBML_ODESOLVER_API const ASTNode_t *ODEModel_getJacobianEntry(const odeModel_t *, const variableIndex_t *, const variableIndex_t *);
+  SBML_ODESOLVER_API ASTNode_t *ODEModel_constructDeterminant(const odeModel_t *);
+
+  /* Sensitivity Model */
+  SBML_ODESOLVER_API odeSense_t *ODEModel_constructSensitivity(odeModel_t *);
+  SBML_ODESOLVER_API odeSense_t *ODESense_create(odeModel_t *, cvodeSettings_t *);
+  SBML_ODESOLVER_API void ODESense_free(odeSense_t *);
+  SBML_ODESOLVER_API variableIndex_t *ODESense_getSensParamIndexByNum(const odeSense_t *, int);
+  SBML_ODESOLVER_API int ODESense_getNeq(const odeSense_t *);
+  SBML_ODESOLVER_API int ODESense_getNsens(const odeSense_t *);
+  SBML_ODESOLVER_API const ASTNode_t *ODESense_getSensIJEntry(const odeSense_t *, int i, int j);
+  SBML_ODESOLVER_API const ASTNode_t *ODESense_getSensEntry(const odeSense_t *, const variableIndex_t *, const variableIndex_t *);
+
+  /* ODEModel compilation */
+  SBML_ODESOLVER_API int ODEModel_compileCVODEFunctions(odeModel_t *);
+  SBML_ODESOLVER_API int ODESense_compileCVODESenseFunctions(odeSense_t *);
+  SBML_ODESOLVER_API CVRhsFn ODEModel_getCompiledCVODERHSFunction(odeModel_t *);
+  SBML_ODESOLVER_API CVDenseJacFn ODEModel_getCompiledCVODEJacobianFunction(odeModel_t *);
+  SBML_ODESOLVER_API CVRhsFnB ODEModel_getCompiledCVODEAdjointRHSFunction(odeModel_t *);
+  SBML_ODESOLVER_API CVDenseJacFnB ODEModel_getCompiledCVODEAdjointJacobianFunction(odeModel_t *);
+  SBML_ODESOLVER_API CVQuadRhsFnB ODESense_getCompiledCVODEAdjointQuadFunction(odeSense_t *);
+  SBML_ODESOLVER_API CVSensRhs1Fn ODESense_getCompiledCVODESenseFunction(odeSense_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+/* internal functions, not be used by calling applications */  
+int ODEModel_getVariableIndexFields(const odeModel_t *, const char *SBML_ID);
+#endif
diff --git a/src/sbmlsolver/odeSolver.h b/src/sbmlsolver/odeSolver.h
new file mode 100644
index 0000000..4ba09eb
--- /dev/null
+++ b/src/sbmlsolver/odeSolver.h
@@ -0,0 +1,102 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-03-10 20:07:56 raim>
+  $Id: odeSolver.h,v 1.27 2009/03/27 15:55:03 fbergmann Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     
+ */
+
+#ifndef SBMLSOLVER_ODESOLVER_H_
+#define SBMLSOLVER_ODESOLVER_H_
+
+typedef struct varySettings varySettings_t;
+
+/* libSBML header files */
+#include <sbml/SBMLTypes.h>
+
+/* own header files */
+#include <sbmlsolver/integratorSettings.h>
+#include <sbmlsolver/integratorInstance.h>
+#include <sbmlsolver/sbmlResults.h>
+#include <sbmlsolver/exportdefs.h>
+
+
+  /** Settings for batch integration with parameter variation */
+  struct varySettings {
+    int nrdesignpoints; /**< defines how many design points are set*/
+    int nrparams;       /**< defines the number of parameters to be varied */
+    char **id;          /**< array of SBML ID of the species, compartment
+			     or parameter to be varied */
+    char **rid;         /**< SBML Reaction ID, if a local parameter is to be
+			     varied */
+    double **params;    /**< two dimensional array for parameter values */
+
+    /* just used during construction */
+    int cnt_params;     /**< counts the number of parameters added */
+    int cnt_points;     /**< counts the number of designpoints filled */
+  };
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  SBML_ODESOLVER_API SBMLResults_t *SBML_odeSolver(SBMLDocument_t *, cvodeSettings_t *);
+  SBML_ODESOLVER_API SBMLResultsArray_t *SBML_odeSolverBatch(SBMLDocument_t *, cvodeSettings_t *, varySettings_t *);
+  SBML_ODESOLVER_API SBMLResults_t *Model_odeSolver(Model_t *, cvodeSettings_t *);
+  SBML_ODESOLVER_API SBMLResultsArray_t *Model_odeSolverBatch(Model_t *, cvodeSettings_t *, varySettings_t *);
+  SBML_ODESOLVER_API SBMLResults_t *SBMLResults_fromIntegrator(Model_t *, integratorInstance_t *);
+
+  /* settings for parameter variation batch runs */
+  SBML_ODESOLVER_API varySettings_t *VarySettings_allocate(int nrparams, int nrdesignpoints);
+  SBML_ODESOLVER_API int VarySettings_addDesignPoint(varySettings_t *, const double *);
+  SBML_ODESOLVER_API int VarySettings_addParameter(varySettings_t *, const char *, const char *);
+  SBML_ODESOLVER_API int VarySettings_setName(varySettings_t *, int, const char *, const char *);
+  SBML_ODESOLVER_API int VarySettings_setValue(varySettings_t *, int, int, double);
+  SBML_ODESOLVER_API double VarySettings_getValue(varySettings_t *, int, int);
+  SBML_ODESOLVER_API int VarySettings_setValueByID(varySettings_t *, int, const char *, const char*, double);
+  SBML_ODESOLVER_API double VarySettings_getValueByID(varySettings_t *, int, const char *, const char*);
+  SBML_ODESOLVER_API const char *VarySettings_getName(const varySettings_t *, int);
+  SBML_ODESOLVER_API const char *VarySettings_getReactionName(const varySettings_t *, int);
+
+  SBML_ODESOLVER_API void VarySettings_dump(varySettings_t *);
+  SBML_ODESOLVER_API void VarySettings_free(varySettings_t *);
+
+
+ 
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* End of file */
diff --git a/src/sbmlsolver/processAST.h b/src/sbmlsolver/processAST.h
new file mode 100644
index 0000000..671e2e3
--- /dev/null
+++ b/src/sbmlsolver/processAST.h
@@ -0,0 +1,80 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-09-24 12:18:17 raim>
+  $Id: processAST.h,v 1.24 2009/03/27 15:55:03 fbergmann Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Stefan M�ller
+ */
+
+#ifndef SBMLSOLVER_PROCESSAST_H_
+#define SBMLSOLVER_PROCESSAST_H_
+
+/* libSBML header files */
+#include <sbml/SBMLTypes.h>
+
+/* own header files */
+#include <sbmlsolver/odeModel.h>
+#include <sbmlsolver/exportdefs.h>
+#include <sbmlsolver/charBuffer.h>
+
+struct cvodeData;
+
+#define child(x,y)  ASTNode_getChild(x,y)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+  
+  SBML_ODESOLVER_API double evaluateAST(ASTNode_t *n, struct cvodeData *data);
+  SBML_ODESOLVER_API void generateMacros(charBuffer_t *buffer);
+  SBML_ODESOLVER_API void generateAST(charBuffer_t *buffer, const ASTNode_t *n);
+  SBML_ODESOLVER_API ASTNode_t *differentiateAST(ASTNode_t *f, char*x);
+  SBML_ODESOLVER_API void setUserDefinedFunction(double(*udf)(char*, int, double*));
+  SBML_ODESOLVER_API ASTNode_t *copyAST(const ASTNode_t *f);
+  SBML_ODESOLVER_API ASTNode_t *determinantNAST(ASTNode_t ***A, int N);
+  SBML_ODESOLVER_API ASTNode_t *simplifyAST(const ASTNode_t *f);
+  SBML_ODESOLVER_API ASTNode_t *ASTNode_indexAST(const ASTNode_t *f, odeModel_t *om);
+  
+  ASTNode_t *indexAST(const ASTNode_t *f, int nvalues, char ** names);
+  void AST_dump(const char *context, ASTNode_t *node);
+  int ASTNode_containsTime(const ASTNode_t *node);
+  int ASTNode_containsPiecewise(const ASTNode_t *node);
+  int ASTNode_getIndices(const ASTNode_t *node, List_t *indices);
+  int *ASTNode_getIndexArray(const ASTNode_t *node, int nvalues);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* End of file */
diff --git a/src/sbmlsolver/sbml.h b/src/sbmlsolver/sbml.h
new file mode 100644
index 0000000..ae38803
--- /dev/null
+++ b/src/sbmlsolver/sbml.h
@@ -0,0 +1,59 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2007-10-26 14:57:16 raim>
+  $Id: sbml.h,v 1.8 2008/01/28 19:25:27 stefan_tbi Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Christoph Flamm
+ */
+
+
+#ifndef SBMLSOLVER_SBML_H_
+#define SBMLSOLVER_SBML_H_
+
+#include <sbml/SBMLTypes.h>
+
+#include <sbmlsolver/exportdefs.h>
+
+SBMLDocument_t *convertModel (SBMLDocument_t *d1);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SBML_ODESOLVER_API SBMLDocument_t *parseModel(const char *file, int printMessage,
+					       int validate);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+/* End of file */
diff --git a/src/sbmlsolver/sbmlResults.h b/src/sbmlsolver/sbmlResults.h
new file mode 100644
index 0000000..02c5bf3
--- /dev/null
+++ b/src/sbmlsolver/sbmlResults.h
@@ -0,0 +1,147 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <02-Sep-2010 14:21:58 raim>
+  $Id: sbmlResults.h,v 1.15 2010/09/02 13:46:01 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *
+ */
+
+#ifndef SBMLSOLVER_SBMLRESULTS_H_
+#define SBMLSOLVER_SBMLRESULTS_H_
+
+#include <sbml/SBMLTypes.h>
+
+#include <sbmlsolver/exportdefs.h>
+
+typedef struct timeCourse timeCourse_t ;
+typedef struct timeCourseArray timeCourseArray_t ;
+typedef struct _SBMLResults SBMLResults_t;
+typedef struct _SBMLResultsMatrix SBMLResultsMatrix_t;
+typedef struct _SBMLResultsArray SBMLResultsArray_t;
+
+
+  /** A simple structure containing a variable name,
+     and its time courses generated by simulation routines. */
+  struct timeCourse {
+    int timepoints;       /**< number of timepoints, including initial
+			       conditions */
+    char *name;           /**< variable name */
+    double *values;       /**< variable time course */
+    double **sensitivity; /**< sensitivity time courses */
+  } ;
+
+  /** A simple structure containing num_val time courses */
+  struct timeCourseArray {
+    int num_val;        /**< number of time courses  */
+    timeCourse_t **tc;  /**< time courses */
+  } ;
+
+
+  /** A simple structure that contains time courses - represented
+      by the timeCourseArray structure - for
+      SBML structures, such as species, non-constant compartments
+      and parameters and reaction fluxes.
+  */
+  struct _SBMLResults
+  {
+    timeCourse_t *time;                /**< the time points */
+
+    /* concentration and variable parameter and compartment time series */
+    timeCourseArray_t *species;       /**< time courses for all species */  
+    timeCourseArray_t *compartments;  /**< time courses for all non-constant
+					 compartments */
+    timeCourseArray_t *parameters;    /**< time courses for all non-constant
+					 global parameters */    
+    timeCourseArray_t *fluxes;        /**< time courses of reaction fluxes */
+
+    int nsens;
+    /** parameters IDs for which sensitivities have been calculated */
+    char **param;
+    
+  } ;
+
+
+  /** A matrix of _SBMLResults used for batch integration with
+      parameter variation via varySettings */
+  struct _SBMLResultsMatrix
+  {
+    SBMLResults_t ***results;
+    int i;
+    int j;
+  } ;
+
+  struct _SBMLResultsArray
+  {
+    SBMLResults_t ** results;
+    int size; /* numsteps^numparams */
+  }; 
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  SBML_ODESOLVER_API timeCourse_t *SBMLResults_getTime(SBMLResults_t *);  
+  SBML_ODESOLVER_API timeCourse_t *SBMLResults_getTimeCourse(SBMLResults_t *, const char *);
+  SBML_ODESOLVER_API int SBMLResults_getNout(const SBMLResults_t *);
+  SBML_ODESOLVER_API int SBMLResults_getNumSens(const SBMLResults_t *);
+  SBML_ODESOLVER_API const char *SBMLResults_getSensParam(const SBMLResults_t *, int);
+  SBML_ODESOLVER_API timeCourse_t *Compartment_getTimeCourse(Compartment_t *, SBMLResults_t *);
+  SBML_ODESOLVER_API timeCourse_t *Species_getTimeCourse(Species_t *, SBMLResults_t *);
+  SBML_ODESOLVER_API timeCourse_t *Parameter_getTimeCourse(Parameter_t *, SBMLResults_t *);
+  SBML_ODESOLVER_API const char*TimeCourse_getName(const timeCourse_t *);
+  SBML_ODESOLVER_API int TimeCourse_getNumValues(const timeCourse_t *);
+  SBML_ODESOLVER_API double TimeCourse_getValue(const timeCourse_t *, int);
+  SBML_ODESOLVER_API double TimeCourse_getSensitivity(const timeCourse_t *, int, int);
+  SBML_ODESOLVER_API void SBMLResults_dump(const SBMLResults_t *);
+  SBML_ODESOLVER_API void SBMLResults_dumpSpecies(const SBMLResults_t *);
+  SBML_ODESOLVER_API void SBMLResults_dumpCompartments(const SBMLResults_t *);
+  SBML_ODESOLVER_API void SBMLResults_dumpParameters(const SBMLResults_t *);
+  SBML_ODESOLVER_API void SBMLResults_dumpFluxes(const SBMLResults_t *);
+  SBML_ODESOLVER_API void SBMLResults_free(SBMLResults_t *);
+  SBML_ODESOLVER_API void SBMLResultsArray_free(SBMLResultsArray_t *);
+  SBML_ODESOLVER_API int SBMLResultsArray_getNumResults(const SBMLResultsArray_t *);
+  SBML_ODESOLVER_API SBMLResults_t *SBMLResultsArray_getResults(SBMLResultsArray_t *, int i);
+  /* not yet implemented */
+  SBML_ODESOLVER_API SBMLResults_t *SBMLResultsMatrix_getResults(SBMLResultsMatrix_t *, int i, int j);
+  SBML_ODESOLVER_API Model_t *Model_setValues(Model_t *, SBMLResults_t *);
+
+ 
+#ifdef __cplusplus
+}
+#endif
+
+/* not part of the API */
+SBMLResults_t *SBMLResults_create(Model_t *, int timepoints);
+SBMLResultsMatrix_t *SBMLResultsMatrix_allocate(int values, int timepoints);
+SBMLResultsArray_t *SBMLResultsArray_allocate(int size);
+#endif
+
+/* End of file */
diff --git a/src/sbmlsolver/sensSolver.h b/src/sbmlsolver/sensSolver.h
new file mode 100644
index 0000000..f6fb5f5
--- /dev/null
+++ b/src/sbmlsolver/sensSolver.h
@@ -0,0 +1,71 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2006-04-07 23:30:44 raim>
+  $Id: sensSolver.h,v 1.11 2007/02/28 16:20:16 jamescclu Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ *     Andrew Finney
+ */
+
+#ifndef SBMLSOLVER_SENSSOLVER_H_
+#define SBMLSOLVER_SENSSOLVER_H_
+
+#include <sbmlsolver/exportdefs.h>
+#include <sbmlsolver/integratorInstance.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  /* CVODES SOLVER */  
+  SBML_ODESOLVER_API int IntegratorInstance_printCVODESStatistics(const integratorInstance_t *, FILE *f);
+  SBML_ODESOLVER_API int IntegratorInstance_setLinearObjectiveFunction(integratorInstance_t *, char *);
+  SBML_ODESOLVER_API int IntegratorInstance_setObjectiveFunction(integratorInstance_t *, char *);
+
+  SBML_ODESOLVER_API int IntegratorInstance_setObjectiveFunctionFromString(integratorInstance_t *, char *);
+
+  SBML_ODESOLVER_API int IntegratorInstance_readTimeSeriesData(integratorInstance_t *, char *);
+  SBML_ODESOLVER_API int IntegratorInstance_CVODEQuad(integratorInstance_t *);
+  SBML_ODESOLVER_API int IntegratorInstance_printQuad(integratorInstance_t *, FILE *);
+  SBML_ODESOLVER_API int IntegratorInstance_writeQuad(integratorInstance_t *, realtype *);
+
+  /* internal functions that are not part of the API (yet?) */
+  int IntegratorInstance_getForwardSens(integratorInstance_t *);
+  int IntegratorInstance_createCVODESSolverStructures(integratorInstance_t *);
+  int IntegratorInstance_getAdjSens(integratorInstance_t *);
+   
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* End of file */
diff --git a/src/sbmlsolver/solverError.h b/src/sbmlsolver/solverError.h
new file mode 100644
index 0000000..2fd2fe1
--- /dev/null
+++ b/src/sbmlsolver/solverError.h
@@ -0,0 +1,233 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-10-06 15:01:44 raim>
+  $Id: solverError.h,v 1.33 2008/10/08 17:07:16 raimc Exp $ 
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ *     Rainer Machne
+ */
+
+#ifndef SBMLSOLVER_SOLVERERROR_H_
+#define SBMLSOLVER_SOLVERERROR_H_
+
+#include <stdarg.h>
+#include <stddef.h>
+
+#include <sbmlsolver/exportdefs.h>
+
+/** error codes.
+    codes < 0 reserved for CVODE\n
+    codes 0 throu 99999 reserved for LibSBML\n
+    codes 0 throu 9999 libSBML, XML layer\n
+    codes 10000 throu 99999 libSBML, SBML Errors\n */
+enum errorCode
+  {
+    
+    /** 10XXXX - conversion to ode model failures in odeConstruct.c */
+    SOLVER_ERROR_ODE_COULD_NOT_BE_CONSTRUCTED_FOR_SPECIES  = 100000,
+    SOLVER_ERROR_THE_MODEL_CONTAINS_EVENTS = 100001,
+    SOLVER_ERROR_THE_MODEL_CONTAINS_ALGEBRAIC_RULES = 100002,
+    SOLVER_ERROR_ODE_MODEL_COULD_NOT_BE_CONSTRUCTED = 100003,
+    SOLVER_ERROR_NO_KINETIC_LAW_FOUND_FOR_REACTION = 100004,
+    SOLVER_ERROR_ENTRIES_OF_THE_JACOBIAN_MATRIX_COULD_NOT_BE_CONSTRUCTED = 100005,
+    SOLVER_ERROR_MODEL_NOT_SIMPLIFIED = 100006,
+    SOLVER_ERROR_ENTRIES_OF_THE_PARAMETRIC_MATRIX_COULD_NOT_BE_CONSTRUCTED = 100007,
+    SOLVER_ERROR_REQUESTED_PARAMETER_NOT_FOUND = 100008,
+    SOLVER_ERROR_THE_MODEL_CONTAINS_PIECEWISE = 100009,
+    SOLVER_ERROR_ODE_MODEL_CYCLIC_DEPENDENCY_IN_RULES = 100010,
+    SOLVER_ERROR_ODE_MODEL_RULE_SORTING_FAILED = 100011,
+    SOLVER_ERROR_ODE_MODEL_SET_DISCONTINUITIES_FAILED = 100012,
+
+    /** 11xx30 - SBML input model failures in sbml.c */
+    SOLVER_ERROR_MAKE_SURE_SCHEMA_IS_ON_PATH = 110030,
+    SOLVER_ERROR_CANNOT_PARSE_MODEL = 110031,
+    SOLVER_ERROR_DOCUMENTLEVEL_ONE = 1100032,
+     
+    /** 11XX5X - Graph Drawing Errors  in drawGraph.c */
+    SOLVER_ERROR_NO_GRAPHVIZ = 110050,
+    /** 11X1XX - Wrong Input Settings */
+    SOLVER_ERROR_INTEGRATOR_SETTINGS = 110100,
+    SOLVER_ERROR_VARY_SETTINGS = 110101,
+      
+    /** 12XXXX - Integration Failures in integratorInstance.c */
+    SOLVER_ERROR_INTEGRATION_NOT_SUCCESSFUL = 120000,
+    SOLVER_ERROR_EVENT_TRIGGER_FIRED = 120001,
+    SOLVER_ERROR_CVODE_MALLOC_FAILED = 120002,
+    SOLVER_ERROR_CVODE_REINIT_FAILED = 120003,
+
+    /** 12X1XX - AST Processing Failures in processAST.c */
+    /** AST evaluation in evaluateAST */
+    SOLVER_ERROR_AST_UNKNOWN_NODE_TYPE = 120100,
+    SOLVER_ERROR_AST_UNKNOWN_FAILURE = 120101,
+    SOLVER_ERROR_AST_EVALUATION_FAILED_MISSING_VALUE = 120102,
+    SOLVER_ERROR_AST_EVALUATION_FAILED_DELAY = 120103,
+    SOLVER_ERROR_AST_EVALUATION_FAILED_LAMBDA = 120104,
+    SOLVER_ERROR_AST_EVALUATION_FAILED_FUNCTION = 120105,
+    SOLVER_ERROR_AST_EVALUATION_FAILED_FLOAT_FACTORIAL = 120106,
+    SOLVER_ERROR_AST_EVALUATION_FAILED_PIECEWISE = 120107,
+    SOLVER_ERROR_AST_EVALUATION_FAILED_DISCRETE_DATA = 120108,
+    /** AST differentiation in differentiateAST */
+    SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_CONSTANT = 120110,
+    SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_OPERATOR = 120111,
+    SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_LAMBDA = 120112,
+    SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_DELAY = 120114,
+    SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_FACTORIAL = 120115,
+    SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_PIECEWISE = 120117,
+    SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_LOGICAL_OR_RELATIONAL = 120118,
+    
+    /** 12X2XX - Result Writing Failures */
+    SOLVER_ERROR_CVODE_RESULTS_FAILED = 120201,
+    SOLVER_ERROR_SBML_RESULTS_FAILED = 120202,
+
+    /** 12X3XX - Adjoint Solver Failures */
+       
+    /** 12X4XX - Objective Function Failures */      
+    SOLVER_ERROR_VECTOR_V_FAILED = 120401,
+    SOLVER_ERROR_OBJECTIVE_FUNCTION_FAILED = 120402,
+    SOLVER_ERROR_OBJECTIVE_FUNCTION_V_VECTOR_COULD_NOT_BE_CONSTRUCTED = 120403,
+      
+    /** 12X5XX - Integration Messages in integratorInstance.c */
+    SOLVER_MESSAGE_RERUN_WITH_OR_WO_JACOBIAN = 120500,
+    SOLVER_MESSAGE_STEADYSTATE_FOUND = 120501,
+    SOLVER_ERROR_UPDATE_ADJDATA = 120502, 
+    SOLVER_ERROR_INITIALIZE_ADJDATA = 120503,
+
+    /** 12X6XX - Errors and Messages in input data */
+    SOLVER_MESSAGE_INTERPOLATION_OUT_OF_RANGE = 120600,
+      
+    /** 13XXXX - Memory Exhaustion; general */
+    SOLVER_ERROR_NO_MORE_MEMORY_AVAILABLE = 130000,
+
+    /** 13025X - Win32 Errors */
+    SOLVER_ERROR_WIN32_ERROR = 130250,
+    SOLVER_ERROR_WIN32_FORMAT_ERROR = 130251,
+
+    /** 1305XX - Compilation Errors */
+    SOLVER_ERROR_COMPILATION_FAILED = 130500,
+    SOLVER_ERROR_CANNOT_COMPILE_JACOBIAN_NOT_COMPUTED = 130501,
+    SOLVER_ERROR_AST_COMPILATION_FAILED_DATA_AST_NODE_NOT_SUPPORTED_YET = 130502,
+    SOLVER_ERROR_AST_COMPILATION_FAILED_MISSING_VALUE = 130503,
+    SOLVER_ERROR_AST_COMPILATION_FAILED_STRANGE_NODE_TYPE = 130504,
+    SOLVER_ERROR_CANNOT_COMPILE_SENSITIVITY_NOT_COMPUTED = 130505,
+    SOLVER_ERROR_GCC_FORK_FAILED = 130506,
+    SOLVER_ERROR_DL_LOAD_FAILED = 130507,
+    SOLVER_ERROR_DL_SYMBOL_UNDEFINED = 130508,
+    SOLVER_ERROR_OPEN_FILE = 130509,
+      
+    /** 14XXXX - assorted API errors */
+    SOLVER_ERROR_SYMBOL_IS_NOT_IN_MODEL = 140000,
+    SOLVER_ERROR_ATTEMPTING_TO_COPY_VARIABLE_STATE_BETWEEN_INSTANCES_OF_DIFFERENT_MODELS = 140001,
+    SOLVER_ERROR_ATTEMPTING_TO_SET_IMPOSSIBLE_INITIAL_TIME = 140002,
+    SOLVER_ERROR_ATTEMPT_TO_SET_ASSIGNED_VALUE = 140003
+  } ;
+
+/** error types */
+enum errorType
+  {
+    FATAL_ERROR_TYPE = 0,
+    ERROR_ERROR_TYPE = 1,
+    WARNING_ERROR_TYPE = 2,
+    MESSAGE_ERROR_TYPE = 3,
+    NUMBER_OF_ERROR_TYPES = 4
+  } ;
+
+typedef enum errorCode errorCode_t;
+typedef enum errorType errorType_t;
+
+
+
+#define RETURN_ON_ERRORS_WITH(x)				\
+  {if (SolverError_getNum(ERROR_ERROR_TYPE) ||			\
+       SolverError_getNum(FATAL_ERROR_TYPE)) return (x); }
+
+#define RETURN_ON_FATALS_WITH(x)				\
+  {if (SolverError_getNum(FATAL_ERROR_TYPE)) return (x); }
+
+#define ASSIGN_NEW_MEMORY_BLOCK(_ref, _num, _type, _return)	\
+  { (_ref) = (_type *)SolverError_calloc(_num, sizeof(_type));	\
+    RETURN_ON_FATALS_WITH(_return) }
+
+#define ASSIGN_NEW_MEMORY(_ref, _type, _return)		\
+  ASSIGN_NEW_MEMORY_BLOCK(_ref, 1, _type, _return)
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  /* get number of stored errors  of given type */
+  SBML_ODESOLVER_API int SolverError_getNum(errorType_t); 
+
+  /* get a stored error message */
+  SBML_ODESOLVER_API char * SolverError_getMessage(errorType_t, int errorNum);
+
+  /* get error code */
+  SBML_ODESOLVER_API errorCode_t SolverError_getCode(errorType_t, int errorNum);
+
+  /* get error code of last error stored of given type */
+  SBML_ODESOLVER_API errorCode_t SolverError_getLastCode(errorType_t);
+
+  /* empty error store */
+  SBML_ODESOLVER_API void SolverError_clear(void);
+
+  /* create an error */
+  SBML_ODESOLVER_API void SolverError_error(errorType_t, errorCode_t, const char *format, ...);
+
+#ifdef _WIN32
+  /* create an error from the last windows error */
+  SBML_ODESOLVER_API void SolverError_storeLastWin32Error(const char *context);
+#endif
+
+  /* exit the program if errors or fatals have been created. */
+  SBML_ODESOLVER_API void SolverError_haltOnErrors(void);
+
+  /* write all errors and warnings to standard error */
+  SBML_ODESOLVER_API void SolverError_dump(void);
+
+  /* write all errors and warnings to a string (owned by caller unless SolverError_isMemoryExhausted()) */
+  SBML_ODESOLVER_API char *SolverError_dumpToString(void);
+
+  /* free string returned by SolverError_dumpToString */
+  SBML_ODESOLVER_API void SolverError_freeDumpString(char *);
+
+  /* write all errors and warnings to standard error and then empty error store*/
+  SBML_ODESOLVER_API void SolverError_dumpAndClearErrors(void);
+
+  /* allocated memory and sets error if it fails */
+  SBML_ODESOLVER_API void *SolverError_calloc(size_t num, size_t size);
+
+  /* returns 1 if memory has been exhausted 0 otherwise */
+  SBML_ODESOLVER_API int SolverError_isMemoryExhausted(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/sbmlsolver/util.h b/src/sbmlsolver/util.h
new file mode 100644
index 0000000..5dc6a67
--- /dev/null
+++ b/src/sbmlsolver/util.h
@@ -0,0 +1,74 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+ * Filename    : util.c
+ * Revision    : $Id: util.h,v 1.4 2006/06/12 10:25:58 raimc Exp $
+ * Source      : $Source: /home/raim/programs/SBML_odeSolver/SBML_odeSolver/src/sbmlsolver/util.h,v $
+ */
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Christoph Flamm
+ *
+ * Contributor(s):
+ *     
+ */
+
+#ifndef SBMLSOLVER_UTIL_H_
+#define SBMLSOLVER_UTIL_H_
+
+#include <sbmlsolver/exportdefs.h>
+#include <stdio.h>
+
+#ifdef WITH_DMALLOC
+/* use dmalloc library to check for memory management bugs */
+#include <dmalloc.h>
+#define space(S) calloc(1,(S))
+#else
+extern void  *space(unsigned size);
+extern void  *xrealloc(void *p, unsigned size);
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+  
+  /** get values from cvodeResults */
+  SBML_ODESOLVER_API char *get_line(FILE *fp);
+                                                                               
+  SBML_ODESOLVER_API char *concat(const char *a, const char *b);
+
+  SBML_ODESOLVER_API void fatal(FILE *hdl, const char *fmt, ...);
+  SBML_ODESOLVER_API void Warn(FILE *hdl, const char *fmt, ...);
+
+  SBML_ODESOLVER_API void *xalloc (size_t nmemb, size_t size);
+  SBML_ODESOLVER_API void xfree (void *ptr);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+                                                                               
+/* End of file */
diff --git a/src/sbmlsolver/variableIndex.h b/src/sbmlsolver/variableIndex.h
new file mode 100644
index 0000000..d98beca
--- /dev/null
+++ b/src/sbmlsolver/variableIndex.h
@@ -0,0 +1,69 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-05-09 17:36:09 raim>
+  $Id: variableIndex.h,v 1.13 2008/05/09 15:46:37 raimc Exp $ 
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew Finney
+ *
+ * Contributor(s):
+ *     Rainer Machne
+ */
+
+#ifndef SBMLSOLVER_VARIABLEINDEX_H_
+#define SBMLSOLVER_VARIABLEINDEX_H_
+
+/** variable types */
+enum variableType
+  {
+    ODE_VARIABLE,
+    ASSIGNMENT_VARIABLE,
+    CONSTANT,
+    ALGEBRAIC_VARIABLE
+  } ; 	 
+typedef enum variableType variableType_t;
+
+/** The variableIndex is the main interface to model
+    variables and constants.
+
+    It can be retrieved from an odeModel, and used to get its name
+    or associated symbolic constructs from the odeModel structure
+    AND to get and set the values of all model constants and variables
+    via the integratorInstance during any time of an integration run.
+    Please see documentation of these modules to learn about the full
+    use of variableIndex */
+ 
+
+struct variableIndex
+{
+  variableType_t type;
+  int type_index;
+  int index ;
+} ;
+typedef struct variableIndex variableIndex_t;
+
+#endif
diff --git a/src/sensSolver.c b/src/sensSolver.c
new file mode 100644
index 0000000..574093d
--- /dev/null
+++ b/src/sensSolver.c
@@ -0,0 +1,1631 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2009-02-12 15:24:24 raim>
+  $Id: sensSolver.c,v 1.80 2009/02/12 06:24:04 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne, James Lu and Stefan M�ller
+ *
+ * Contributor(s):
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/*! \defgroup sensi CVODES Forward Sensitivity:  dx(t)/dp
+  \ingroup cvode
+  \brief This module contains the functions that set up and
+  call SUNDIALS CVODES forward sensitivity analysis routines.
+    
+
+*/
+/*@{*/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+/* Header Files for CVODE */
+#include <cvodes/cvodes.h>
+#include <cvodes/cvodes_dense.h>
+#include <nvector/nvector_serial.h>
+
+#include "sbmlsolver/cvodeData.h"
+#include "sbmlsolver/processAST.h"
+#include "sbmlsolver/odeModel.h"
+#include "sbmlsolver/variableIndex.h"
+#include "sbmlsolver/solverError.h"
+#include "sbmlsolver/cvodeSolver.h"
+#include "sbmlsolver/sensSolver.h"
+#include "sbmlsolver/odeSolver.h"
+#include "sbmlsolver/interpol.h"
+#include "sbmlsolver/variableIndex.h"
+
+#include <sbml/SBMLTypes.h>
+#include "sbmlsolver/ASTIndexNameNode.h"
+#include "sbmlsolver/util.h"
+
+/* 
+ * fS routine. Compute sensitivity r.h.s. for param[iS]
+ */
+static int fS(int Ns, realtype t, N_Vector y, N_Vector ydot,
+	      int iS, N_Vector yS, N_Vector ySdot,
+	      void *fS_data, N_Vector tmp1, N_Vector tmp2);
+
+
+static int fA(realtype t, N_Vector y, N_Vector yA, N_Vector yAdot,
+	      void *fA_data);
+
+
+static int JacA(long int NB, DenseMat JA, realtype t,
+		N_Vector y, N_Vector yA, N_Vector fyA, void *jac_dataA,
+		N_Vector tmp1A, N_Vector tmp2A, N_Vector tmp3A);
+
+static int fQA(realtype t, N_Vector y, N_Vector yA, N_Vector qAdot,
+	       void *fQ_dataA);
+
+static int fQS(realtype t, N_Vector y, N_Vector qdot, void *fQ_data);
+
+static int fQFIM(realtype t, N_Vector y, N_Vector qdot, void *fQ_data);
+
+static int ODEModel_construct_vector_v_FromObjectiveFunction(odeModel_t *);
+
+static ASTNode_t *copyRevertDataAST(const ASTNode_t *);
+
+
+/* The Hot Stuff! */
+/** \brief Calls CVODES to provide forward sensitivities after a call to
+    cvodeOneStep.
+
+    produces appropriate error messages on failures and returns 1 if
+    the integration can continue, 0 otherwise.  
+*/
+
+int IntegratorInstance_getForwardSens(integratorInstance_t *engine)
+{
+  int i, j, flag;
+  realtype *ySdata = NULL;
+   
+  cvodeSolver_t *solver;
+  cvodeData_t *data;
+  cvodeSettings_t *opt;
+  cvodeResults_t *results;
+    
+  solver = engine->solver;
+  data = engine->data;
+  opt = engine->opt;
+  results = engine->results;
+
+  /* getting sensitivities */
+  flag = CVodeGetSens(solver->cvode_mem, solver->t, solver->yS);
+    
+  if ( flag != CV_SUCCESS )
+    return flag;
+  else
+  {
+    for ( j=0; j<data->nsens; j++ )
+    {
+      ySdata = NV_DATA_S(solver->yS[j]);
+      for ( i=0; i<data->neq; i++ )
+      {
+	data->sensitivity[i][j] = ySdata[i];
+/* 	/\* store results *\/ */
+/* 	if ( opt->StoreResults ) */
+/* 	  results->sensitivity[i][j][solver->iout-1] = ySdata[i]; */
+      }
+    }
+  }
+
+  return flag;
+}
+
+/* The Hot Stuff! */
+/** \brief Calls CVODES to provide adjoint sensitivities after a call to
+    cvodeOneStep.
+
+    NOTE: does not do interpolation based on CVodeGetSens. 
+
+    produces appropriate error messages on failures and returns 1 if
+    the integration can continue, 0 otherwise.  
+*/
+
+int IntegratorInstance_getAdjSens(integratorInstance_t *engine)
+{
+  int i;
+  realtype *yAdata = NULL;
+   
+  cvodeSolver_t *solver;
+  cvodeData_t *data;
+  cvodeSettings_t *opt;
+  cvodeResults_t *results;
+    
+  solver = engine->solver;
+  data = engine->data;
+  opt = engine->opt;
+  results = engine->results;
+  
+  yAdata = NV_DATA_S(solver->yA);
+  
+  for ( i=0; i<data->neq; i++ )
+  {
+    data->adjvalue[i] = yAdata[i];
+
+    /* store results */
+    if ( opt->AdjStoreResults )
+      results->adjvalue[i][solver->iout-1] = yAdata[i];
+  }
+    
+  return 1;
+}
+
+
+
+
+/************* CVODES integrator setup functions ************/
+
+
+/* creates CVODES forward sensitivity solver structures
+   return 1 => success
+   return 0 => failure
+*/
+int
+IntegratorInstance_createCVODESSolverStructures(integratorInstance_t *engine)
+{
+  int i, j, reinit, flag, sensMethod;
+ /*  realtype *abstoldata, *ySdata; */
+  int found;
+
+  odeModel_t *om = engine->om;
+  odeSense_t *os = engine->os;
+  cvodeData_t *data = engine->data;
+  cvodeSolver_t *solver = engine->solver;
+  cvodeSettings_t *opt = engine->opt;
+  CVSensRhs1Fn sensRhsFunction = NULL;
+  CVDenseJacFnB adjointJACFunction = NULL;
+  CVQuadRhsFnB adjointQuadFunction = NULL;
+  CVRhsFnB adjointRHSFunction = NULL;
+  
+  /* adjoint specific*/
+  int method, iteration;
+
+  if( !engine->AdjointPhase )
+  {
+    /*****  adding sensitivity specific structures ******/
+
+    /* set rhs function for sensitivity */
+    if ( om->jacobian && os->sensitivity )
+    {
+      if ( opt->compileFunctions )
+      {
+	/* this is currently one of two ways to compilation
+	   of odeSense_t RHS functions, the other is below for
+	   adjoint functions ! */
+	sensRhsFunction = ODESense_getCompiledCVODESenseFunction(os);
+	if ( !sensRhsFunction ) return 0;  /*!!! use CVODE_HANDLE_ERROR */
+      }
+      else
+	sensRhsFunction = fS ;
+    }
+    
+    /* if the sens. problem dimension has changed since
+        a former run, free all sensitivity structures */
+    if ( engine->solver->nsens != os->nsens )
+    {
+      /* free forward sens structures, including CVodeQuad */
+      IntegratorInstance_freeForwardSensitivity(engine);
+      engine->solver->nsens = os->nsens;
+      /* remember this for quadrature initialization */
+    }
+
+    /*
+     * construct sensitivity yS and  absolute tolerance senstol
+     * structures if they are not available from a previous run
+     * with the same sens. problem dimension nsens
+     */
+    
+    if ( solver->senstol == NULL )
+    {
+      solver->senstol = N_VNew_Serial(os->nsens);
+      CVODE_HANDLE_ERROR((void *)solver->senstol,
+			 "N_VNewSerial for senstol", 0);
+    }
+
+    /* remember: if yS had to be reconstructed, then also
+       the sense solver structure CVodeSens needs reconstruction
+       rather than mere re-initiation */
+    reinit = 1;
+    if ( solver->yS == NULL )
+    {
+      N_Vector y;
+
+      y = N_VNew_Serial(data->neq);
+      solver->yS = N_VCloneVectorArray_Serial(os->nsens, y);
+      CVODE_HANDLE_ERROR((void *)solver->yS, "N_VCloneVectorArray_Serial", 0);
+      reinit = 0;
+      N_VDestroy_Serial(y);
+    }
+
+    /* initialize sensitivity and sensitiity tolerance
+       arrays, yS and senstol, resp.:
+       yS are 0.0 or 1.0 (variables) in a new run or
+       old values in case of events!! */    
+    for ( j=0; j<os->nsens; j++ )
+    {
+      NV_Ith_S(solver->senstol,j) =  NV_Ith_S(solver->abstol,0);
+      for ( i=0; i<data->neq; i++ )
+       NV_Ith_S(solver->yS[j], i) = data->sensitivity[i][j]; 
+    }  
+
+    /*
+     * set forward sensitivity method
+     */
+    sensMethod = 0;
+    if ( opt->SensMethod == 0 ) sensMethod = CV_SIMULTANEOUS;
+    else if ( opt->SensMethod == 1 ) sensMethod = CV_STAGGERED;
+    else if ( opt->SensMethod == 2 ) sensMethod = CV_STAGGERED1;
+
+    if ( reinit == 0 )
+    {
+      flag = CVodeSensMalloc(solver->cvode_mem, os->nsens,
+			     sensMethod, solver->yS);
+      CVODE_HANDLE_ERROR(&flag, "CVodeSensMalloc", 1);    
+    }
+    else
+    {
+      flag = CVodeSensReInit(solver->cvode_mem, sensMethod, solver->yS);
+      CVODE_HANDLE_ERROR(&flag, "CVodeSensReInit", 1);	  
+    }
+
+    /* *** set parameter values or R.H.S function fS *****/
+    /* NOTES: */
+    /* !!! plist could later be used to specify requested parameters
+       for sens.analysis !!! */
+    
+    /* was construction of jacobian and parametric matrix successfull ? */
+    /* if only init.cond. sensitivities, only the jacobian
+      matrix required, and os->sensitivity will also be 1 even though
+      there is no matrix */
+    if ( os->sensitivity && om->jacobian )
+    {
+      flag = CVodeSetSensRhs1Fn(solver->cvode_mem, sensRhsFunction, data);
+      CVODE_HANDLE_ERROR(&flag, "CVodeSetSensRhs1Fn Matrix", 1);
+      data->use_p = 0; /* don't use data->p */
+    }
+    else
+    {
+      flag = CVodeSetSensRhs1Fn(solver->cvode_mem, NULL, NULL);
+      CVODE_HANDLE_ERROR(&flag, "CVodeSetSensRhs1Fn NULL", 1);
+      data->use_p = 1; /* use data->p, as fS is not available */
+
+      /* difference quotient method: CV_FORWARD or CV_CENTERED
+       see, cvs_guide.pdf CVODES doc */
+      CVodeSetSensDQMethod(solver->cvode_mem, CV_CENTERED, 0.0);
+      CVODE_HANDLE_ERROR(&flag, "CVodeSetSensDQMethod", 1);
+    }
+
+    /* initializing and setting data->p, used if the jacobian or
+     the parametric matrix are not available */
+    for ( i=0; i<os->nsens; i++ )
+      data->p[i] = data->p_orig[i] = data->value[os->index_sens[i]];
+
+    flag = CVodeSetSensParams(solver->cvode_mem, data->p, NULL, NULL);
+    CVODE_HANDLE_ERROR(&flag, "CVodeSetSensParams", 1);
+    
+    /* set tolerances for sensitivity equations */
+   /*  CVodeSetSensTolerances(solver->cvode_mem, CV_SS, */
+/*     			   NV_Ith_S(solver->senstol,0), &(opt->AdjError)); */
+    
+    /* difference FALSE/TRUE ? */
+    flag = CVodeSetSensErrCon(solver->cvode_mem, FALSE);
+    CVODE_HANDLE_ERROR(&flag, "CVodeSetSensErrCon", 1);
+    
+
+    /*  If linear functional exists, initialize quadrature computation  */
+    if ( !opt->doFIM )
+    {
+      if ( (om->ObjectiveFunction == NULL) && (om->vector_v != NULL) )
+      {
+	if ( solver->qS == NULL )
+	{
+	  /* initialize new qS quadrature */
+	  solver->qS = N_VNew_Serial(os->nsens);
+	  CVODE_HANDLE_ERROR((void *) solver->qS,
+			     "N_VNew_Serial for vector qS", 0);
+	  for ( i=0; i<os->nsens; i++ )
+	    NV_Ith_S(solver->qS, i) = 0.0;
+	  
+	  /* if q exists, nsens has size 1 and quad can be reused */
+	  if ( solver->q )
+	  {
+	    N_VDestroy_Serial(engine->solver->q);
+	    engine->solver->q = NULL;
+	    
+	    flag = CVodeQuadReInit(solver->cvode_mem, fQS, solver->qS);
+	    CVODE_HANDLE_ERROR(&flag, "CVodeQuadReInit fQS", 1);
+	  }
+	  else
+	  { /* NO QUAD EXIST, CALL MALLOC*/
+	    flag = CVodeQuadMalloc(solver->cvode_mem, fQS, solver->qS);
+	    CVODE_HANDLE_ERROR(&flag, "CVodeQuadMalloc for qS", 1);
+	  }
+	}
+	/* if qS still exists then the dimension hasn't changed */
+	else
+	{
+	  /* just use existing quadrature */
+	  for ( i=0; i<os->nsens; i++ )
+	    NV_Ith_S(solver->qS, i) = 0.0;
+	  flag = CVodeQuadReInit(solver->cvode_mem, fQS, solver->qS);
+	  CVODE_HANDLE_ERROR(&flag, "CVodeQuadReInit fQS", 1);
+	}
+	
+	
+	flag = CVodeSetQuadFdata(solver->cvode_mem, engine);
+	CVODE_HANDLE_ERROR(&flag, "CVodeSetQuadFdata", 1);
+	
+	/* set quadrature tolerance for objective function 
+	   to be the same as the forward solution tolerances */
+	/*!!! error init causes strange problems */
+	/*       flag = CVodeSetQuadErrCon(solver->cvode_mem, TRUE, */
+	/* 				CV_SS, solver->reltol, &(opt->Error)); */
+	/*       CVODE_HANDLE_ERROR(&flag, "CVodeSetQuadErrCon", 1); */
+      }
+    }
+    else /* do FIM */
+    {
+      if ( solver->qFIM == NULL )
+      {
+	/* initialize new qFIM quadrature */
+	solver->qFIM = N_VNew_Serial(os->nsens*os->nsens);
+	CVODE_HANDLE_ERROR((void *) solver->qFIM,
+			   "N_VNew_Serial for vector qFIM", 0);
+	for ( i=0; i<os->nsens*os->nsens; i++ )
+	  NV_Ith_S(solver->qFIM, i) = 0.0;
+	
+	/* if q exists, nsens has size 1 and quad can be reused */
+	if ( solver->q )
+	{
+	  N_VDestroy_Serial(engine->solver->q);
+	  engine->solver->q = NULL;
+	  
+	  flag = CVodeQuadReInit(solver->cvode_mem, fQFIM, solver->qFIM);
+	  CVODE_HANDLE_ERROR(&flag, "CVodeQuadReInit fQFIM", 1);
+	}
+	else
+	{ /* NO QUAD EXIST, CALL MALLOC*/
+	  flag = CVodeQuadMalloc(solver->cvode_mem, fQFIM, solver->qFIM);
+	  CVODE_HANDLE_ERROR(&flag, "CVodeQuadMalloc for qFIM", 1);
+	}
+      }
+      /* if qFIM still exists then the dimension hasn't changed */
+      else
+      {
+	/* just use existing quadrature */
+	for ( i=0; i<os->nsens*os->nsens; i++ )
+	  NV_Ith_S(solver->qFIM, i) = 0.0;
+	flag = CVodeQuadReInit(solver->cvode_mem, fQFIM, solver->qFIM);
+	CVODE_HANDLE_ERROR(&flag, "CVodeQuadReInit fQFIM", 1);
+      }
+      
+      
+      flag = CVodeSetQuadFdata(solver->cvode_mem, engine);
+      CVODE_HANDLE_ERROR(&flag, "CVodeSetQuadFdata for FIM", 1);
+      
+      /* set quadrature tolerance for objective function 
+	 to be the same as the forward solution tolerances */
+      /*!!! error init causes strange problems */
+      /*       flag = CVodeSetQuadErrCon(solver->cvode_mem, TRUE, */
+      /* 				CV_SS, solver->reltol, &(opt->Error)); */
+      /*       CVODE_HANDLE_ERROR(&flag, "CVodeSetQuadErrCon", 1); */
+      
+    } /* end FIM */
+    
+  } 
+  else /* Adjoint Phase */    
+  {
+    /* set rhs function for sensitivity */
+    if ( opt->compileFunctions )
+    {
+      adjointJACFunction =
+	ODEModel_getCompiledCVODEAdjointJacobianFunction(om);
+      if ( !adjointJACFunction ) return 0;/*!!! use CVODE_HANDLE_ERROR  */
+      
+      /* set adjoint quadrature function for sensitivity */
+      if ( os->sensitivity )
+      {
+	/* this is currently one of two ways to compilation
+	   of odeSense_t RHS functions, the other is above for
+	   forward sensitivity functions ! */
+	adjointQuadFunction = ODESense_getCompiledCVODEAdjointQuadFunction(os);
+	if ( !adjointQuadFunction ) return 0;/*!!! use CVODE_HANDLE_ERROR */
+      }
+
+      adjointRHSFunction = ODEModel_getCompiledCVODEAdjointRHSFunction(om);
+      if ( !adjointRHSFunction ) return 0; /*!!! use CVODE_HANDLE_ERROR */
+    }    
+    else
+    {
+      adjointJACFunction = JacA;
+      adjointQuadFunction = fQA ;
+      adjointRHSFunction = fA;
+    }
+    
+    /* remember which of the adj RHS function is being used */
+    om->current_AdjRHS  = adjointRHSFunction;
+    om->current_AdjJAC  = adjointJACFunction;
+    os->current_AdjQAD = adjointQuadFunction;
+ 
+      /*  If ObjectiveFunction exists, compute vector_v from it */ 
+    if ( om->ObjectiveFunction != NULL ) 
+    {
+      flag = ODEModel_construct_vector_v_FromObjectiveFunction(om);
+      /*!!! TODO : add this to solverError messages */
+      if (flag != 1){
+	fprintf(stderr, "error in constructing vector_v\n");
+	return flag;
+      }
+    }
+
+    /* update initial adjoint state if discrete experimental data is
+       observed */
+    if ( opt->observation_data_type == 1 )
+    {
+      /* set current time and state values for evaluating vector_v  */
+      data->currenttime = solver->t;
+    
+      found = 0;
+      if ( fabs(engine->results->time[opt->PrintStep] - solver->t) < 1e-5)
+      {
+	found++;
+	for ( j=0; j<om->neq; j++ )
+	  data->value[j] = engine->results->value[j][opt->PrintStep];
+	
+      }
+
+      if ( found != 1 )
+      {
+	fprintf(stderr, "ERROR in updating the initial adjoint data.\n");
+	SolverError_error(FATAL_ERROR_TYPE,
+			  SOLVER_ERROR_INITIALIZE_ADJDATA,
+			  "Failed to get state value at time %g.",solver->t);
+        return 0;
+      }
+
+      /* in discrete data case, set the initial adjoint solution to
+	 the evaluated value of vector_v */
+      om->compute_vector_v=1;
+      data->TimeSeriesIndex = data->model->time_series->n_time-1 ;
+      for ( i=0; i<om->neq; i++ )
+	data->adjvalue[i] = -evaluateAST( data->model->vector_v[i], data);
+      om->compute_vector_v=0;
+
+    } 
+
+
+    /*  Allocate yA, abstolA vectors */
+    if ( solver->yA == NULL )
+    {
+      solver->yA = N_VNew_Serial(om->neq);
+      CVODE_HANDLE_ERROR((void *)solver->yA, "N_VNew_Serial for vector yA", 0);
+    }
+
+    if ( solver->abstolA == NULL )
+    {
+      solver->abstolA = N_VNew_Serial(om->neq);
+      CVODE_HANDLE_ERROR((void *)solver->abstolA,
+			 "N_VNew_Serial for vector abstolA", 0);
+    }
+
+    /**
+     * Initialize y, abstol vectors
+     */
+    for ( i=0; i<om->neq; i++ )
+    {
+      /* Set initial value vector components of yA */
+          NV_Ith_S(solver->yA, i) = data->adjvalue[i]; 
+
+      /* Set absolute tolerance vector components,
+	 currently the same absolute error is used for all y */ 
+         NV_Ith_S(solver->abstolA, i) = opt->AdjError; 
+    }
+    
+    /* scalar relative tolerance: the same for all y */
+    solver->reltolA = opt->AdjRError;
+
+    /* Adjoint specific allocations   */
+    /**
+     * Call CVodeCreateB to create the non-linear solver memory:\n
+     *
+     Nonlinear Solver:\n
+     * CV_BDF         Backward Differentiation Formula method\n
+     * CV_ADAMS       Adams-Moulton method\n
+     Iteration Method:\n
+     * CV_NEWTON      Newton iteration method\n
+     * CV_FUNCTIONAL  functional iteration method\n
+     */
+    if ( opt->CvodeMethod == 1 ) method = CV_ADAMS;
+    else method = CV_BDF;
+    
+    if ( opt->IterMethod == 1 ) iteration = CV_FUNCTIONAL;
+    else iteration = CV_NEWTON;
+
+    /* Error if neither ObjectiveFunction nor vector_v has been set  */
+    if( (om->ObjectiveFunction == NULL) && (om->vector_v == NULL) )
+      return 0;
+   
+     if ( engine->adjrun == 1 )
+    {
+      flag = CVodeCreateB(solver->cvadj_mem, method, iteration);
+      CVODE_HANDLE_ERROR(&flag, "CVodeCreateB", 1);
+
+      flag = CVodeMallocB(solver->cvadj_mem, adjointRHSFunction, solver->t0,
+			  solver->yA, CV_SV, solver->reltolA,
+			  solver->abstolA);
+      CVODE_HANDLE_ERROR(&flag, "CVodeMallocB", 1);
+     
+      flag = CVDenseB(solver->cvadj_mem, om->neq);
+      CVODE_HANDLE_ERROR(&flag, "CVDenseB", 1);
+
+    }
+    else
+    {
+      flag = CVodeReInitB(solver->cvadj_mem, adjointRHSFunction, solver->t0,
+			  solver->yA, CV_SV, solver->reltolA,
+			  solver->abstolA);
+      CVODE_HANDLE_ERROR(&flag, "CVodeReInitB", 1);
+    }
+     
+    flag = CVodeSetFdataB(solver->cvadj_mem, engine->data);
+    CVODE_HANDLE_ERROR(&flag, "CVodeSetFdataB", 1);
+
+    /*!!! could NULL be passed here if jacobian is not available ??*/
+    flag = CVDenseSetJacFnB(solver->cvadj_mem, adjointJACFunction,
+			    engine->data);
+    CVODE_HANDLE_ERROR(&flag, "CVDenseSetJacFnB", 1);
+
+    /* set adjoint max steps to be same as that for forward */
+    flag = CVodeSetMaxNumStepsB(solver->cvadj_mem, opt->Mxstep);
+    CVODE_HANDLE_ERROR(&flag, "CVodeSetMaxNumStepsB", 1);
+
+   
+    if ( solver->qA == NULL )
+    {
+      solver->qA = N_VNew_Serial(os->nsens);
+      CVODE_HANDLE_ERROR((void *) solver->qA,
+			 "N_VNew_Serial for vector qA failed", 0);
+
+      /* Init solver->qA = 0.0;*/
+      for( i=0; i<os->nsens; i++ )
+	NV_Ith_S(solver->qA, i) = 0.0;
+  
+      flag = CVodeQuadMallocB(solver->cvadj_mem, adjointQuadFunction,
+			      solver->qA);
+      CVODE_HANDLE_ERROR(&flag, "CVodeQuadMallocB", 1);
+    }
+    else
+    {
+      /* Init solver->qA = 0.0;*/
+      for( i=0; i<os->nsens; i++ )
+	NV_Ith_S(solver->qA, i) = 0.0;
+  
+      flag = CVodeQuadReInitB(solver->cvadj_mem, adjointQuadFunction,
+			      solver->qA);
+      CVODE_HANDLE_ERROR(&flag, "CVodeQuadReInitB", 1);
+    }
+ 
+    /*  Allocate abstolQA vector */
+    if ( solver->abstolQA == NULL )
+    {
+/*       solver->abstolQA = N_VNew_Serial(engine->om->neq); */
+      solver->abstolQA = N_VNew_Serial(engine->os->nsens);
+      CVODE_HANDLE_ERROR((void *)solver->abstolQA,
+			 "N_VNew_Serial for vector quad abstol failed", 0);
+    }
+      
+   /*  for ( i=0; i<engine->om->neq; i++ ) */
+    for ( i=0; i<engine->os->nsens; i++ )
+    {
+      /* Set absolute tolerance vector components,
+	 currently the same absolute error is used for all y */ 
+      NV_Ith_S(solver->abstolQA, i) = opt->AdjError;
+    } 
+
+    solver->reltolQA = solver->reltolA;
+ 
+    flag = CVodeSetQuadFdataB(solver->cvadj_mem, data);
+    CVODE_HANDLE_ERROR(&flag, "CVodeSetQuadFdataB", 1);
+
+    flag = CVodeSetQuadErrConB(solver->cvadj_mem, TRUE,
+			       CV_SS, solver->reltolA, &(opt->AdjError) );
+    CVODE_HANDLE_ERROR(&flag, "CVodeSetQuadErrConB", 1);
+
+
+    /* END adjoint phase */
+  } 
+
+  return 1; /* OK */
+
+}
+
+/** \brief Prints some final statistics of the calls to CVODES
+    forward and adjoint sensitivity analysis routines
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_printCVODESStatistics(const integratorInstance_t *engine, FILE *f)
+{
+  int flag;
+  long int nfSe, nfeS, nsetupsS, nniS, ncfnS, netfS;
+  long int nstA, nfeA, nsetupsA, njeA, nniA, ncfnA, netfA;
+  cvodeSolver_t *solver = engine->solver;
+  void *cvode_memB;
+
+  if ( engine->opt->Sensitivity )
+  { 
+     /* print additional CVODES forward sensitivity statistics */
+    fprintf(f, "##\n## CVodes Forward Sensitivity Statistics:\n");
+
+    flag = CVodeGetNumSensRhsEvals(solver->cvode_mem, &nfSe);
+    CVODE_HANDLE_ERROR(&flag, "CVodeGetNumSensRhsEvals", 1);
+    flag = CVodeGetNumRhsEvalsSens(solver->cvode_mem, &nfeS);
+    CVODE_HANDLE_ERROR(&flag, "CVodeGetNumRhsEvalsSens", 1);
+    flag = CVodeGetNumSensLinSolvSetups(solver->cvode_mem, &nsetupsS);
+    CVODE_HANDLE_ERROR(&flag, "CVodeGetNumSensLinSolvSetups", 1);
+    flag = CVodeGetNumSensErrTestFails(solver->cvode_mem, &netfS);
+    CVODE_HANDLE_ERROR(&flag, "CVodeGetNumSensErrTestFails", 1);
+    flag = CVodeGetNumSensNonlinSolvIters(solver->cvode_mem, &nniS);
+    CVODE_HANDLE_ERROR(&flag, "CVodeGetNumSensNonlinSolvIters", 1);
+    flag = CVodeGetNumSensNonlinSolvConvFails(solver->cvode_mem, &ncfnS);
+    CVODE_HANDLE_ERROR(&flag, "CVodeGetNumSensNonlinSolvConvFails", 1);
+
+    fprintf(f, "## nfSe    = %5ld    nfeS     = %5ld\n", nfSe, nfeS);
+    fprintf(f, "## netfs   = %5ld    nsetupsS = %5ld\n", netfS, nsetupsS);
+    fprintf(f, "## nniS    = %5ld    ncfnS    = %5ld\n", nniS, ncfnS);
+  }
+  
+  if ( (engine->opt->DoAdjoint) && (solver->cvadj_mem != NULL) )
+  { 
+      /* print additional CVODES adjoint sensitivity statistics */
+     fprintf(f, "##\n## CVode Adjoint Sensitivity Statistics:\n");
+     cvode_memB = CVadjGetCVodeBmem(solver->cvadj_mem);
+     flag = CVodeGetNumSteps(cvode_memB, &nstA);
+     CVODE_HANDLE_ERROR(&flag, "CVodeGetNumSteps", 1);
+     flag = CVodeGetNumRhsEvals(cvode_memB, &nfeA);
+     CVODE_HANDLE_ERROR(&flag, "CVodeGetNumSensRhsEvals", 1);
+     flag = CVodeGetNumLinSolvSetups(cvode_memB, &nsetupsA);
+     CVODE_HANDLE_ERROR(&flag, "CVodeGetNumLinSolvSetups", 1);
+     flag = CVDenseGetNumJacEvals(cvode_memB, &njeA);
+     CVODE_HANDLE_ERROR(&flag, "CVDenseGetNumJacEvals", 1);
+     flag = CVodeGetNonlinSolvStats(cvode_memB, &nniA, &ncfnA);
+     CVODE_HANDLE_ERROR(&flag, "CVodeGetNonlinSolvStats", 1);
+     flag = CVodeGetNumErrTestFails(cvode_memB, &netfA);
+     CVODE_HANDLE_ERROR(&flag, "CVodeGetNumErrTestFails", 1);
+     fprintf(f, "## nstA = %-6ld nfeA  = %-6ld nsetupsA = %-6ld njeA = %ld\n",
+	     nstA, nfeA, nsetupsA, njeA); 
+     fprintf(f, "## nniA = %-6ld ncfnA = %-6ld netfA = %ld\n",
+	     nniA, ncfnA, netfA);
+     fprintf(f, "## ncheck = %-6d\n", engine->opt->ncheck);
+  }
+
+  return(1);
+
+}
+
+/** \brief Sets a linear objective function (for sensitivity solvers) via
+    a text input file 
+*/
+SBML_ODESOLVER_API int IntegratorInstance_setLinearObjectiveFunction(integratorInstance_t *engine, char *v_file)
+{
+  FILE *fp;
+  char *line, *token;
+  int i;
+  ASTNode_t **vector_v, *tempAST;
+  odeModel_t *om = engine->om;
+ 
+  if ( om->vector_v != NULL  )
+  {     
+    for ( i=0; i<om->neq; i++ )
+      ASTNode_free(om->vector_v[i]);
+    free(om->vector_v);
+  }
+
+  ASSIGN_NEW_MEMORY_BLOCK(vector_v, om->neq, ASTNode_t *, 0);
+
+  if ( (fp = fopen(v_file, "r")) == NULL )
+  {
+    SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_VECTOR_V_FAILED,
+		      "File %s not found in reading vector_v", v_file);
+    return 0;
+  }
+
+
+  /* loop over lines */
+  for ( i=0; (line = get_line(fp)) != NULL; i++ )
+  {
+    /* read column 0 */
+    token = strtok(line, " ");
+    /* skip empty lines and comment lines */
+    if ( token == NULL || *token == '#' )
+    {
+      free(line);
+      i--;
+      continue;
+    }
+    /* check variable order */
+    if ( i == om->neq )
+       SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_VECTOR_V_FAILED,
+			 "Inconsistent number of variables (>) "
+			 "in setting vector_v from file %s", v_file);
+    
+    if ( strcmp(token, om->names[i]) != 0 )
+      SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_VECTOR_V_FAILED,
+			"Inconsistent variable order "
+			"in setting vector_v from file %s", v_file); 
+    
+    /* read column 1 */
+    token = strtok(NULL, "");
+    tempAST = SBML_parseFormula(token);
+
+    vector_v[i] = indexAST(tempAST, om->neq, om->names);
+    ASTNode_free(tempAST);
+    free(line);
+  }
+
+  fclose(fp);
+
+  if ( i < om->neq )
+  {
+    SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_VECTOR_V_FAILED,
+		      "read_v_file(): inconsistent number of variables "
+		      "required NEQ: %d, provided from file: %d "
+		      "in file %s", om->neq, i, v_file); 
+  }
+  om->vector_v = vector_v;
+  
+  return 1;
+}
+
+
+/** \brief Sets a general objective function (for ODE solution) via a
+    text input file */
+SBML_ODESOLVER_API int IntegratorInstance_setObjectiveFunction(integratorInstance_t *engine, char *ObjFunc_file)
+{
+  int i;
+  FILE *fp;
+  char *line = NULL, *line_formula = NULL, *token;
+  ASTNode_t *ObjectiveFunction, *tempAST;
+  odeModel_t *om = engine->om;
+
+  /* If objective function exists, free it */
+  if ( om->ObjectiveFunction != NULL  )
+  {
+    ASTNode_free(om->ObjectiveFunction);
+    om->ObjectiveFunction = NULL;
+  }
+
+  if ( (fp = fopen(ObjFunc_file, "r")) == NULL )
+  {
+    SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_OBJECTIVE_FUNCTION_FAILED,
+		      "File %s not found in reading objective function",
+		      ObjFunc_file);
+    return 0;
+  }
+
+  /* a very obfuscated way to skip comment lines and read exactly one
+     line of objective function */
+  for ( i=0; (line = get_line(fp)) != NULL; i++ )
+  {   
+    token = strtok(line, "");
+    if (token == NULL || *token == '#')
+    {
+      free(line);
+      i--;
+    }
+    else
+    {
+      if ( line_formula != NULL  )
+        free(line_formula);
+      ASSIGN_NEW_MEMORY_BLOCK(line_formula, strlen(line)+1, char, 0); 
+      strcpy(line_formula, line); 
+      if ( line != NULL  )
+        free(line); 
+    }
+  }
+  
+  fclose(fp);
+
+
+  if( i > 1)
+  {
+   SolverError_error(FATAL_ERROR_TYPE,
+		     SOLVER_ERROR_OBJECTIVE_FUNCTION_FAILED,
+		     "Error in processing objective function from file %s, "
+		     "%d lines", ObjFunc_file, i); 
+   return 0;
+  }
+
+  tempAST = SBML_parseFormula(line_formula);
+
+  ObjectiveFunction = indexAST(tempAST, om->neq, om->names);
+  ASTNode_free(tempAST);
+ 
+  if ( line != NULL )
+    free(line);
+  if ( line_formula != NULL )
+    free(line_formula);  
+
+  om->ObjectiveFunction = ObjectiveFunction;
+  
+  return 1;
+}
+
+
+
+/** \brief Sets a general objective function (for ODE solution) via a string
+*/
+SBML_ODESOLVER_API int IntegratorInstance_setObjectiveFunctionFromString(integratorInstance_t *engine, char *str)
+{
+  ASTNode_t *ast, *temp_ast;
+  odeModel_t *om = engine->om;
+  
+  if ( om->ObjectiveFunction != NULL  )
+  {
+    ASTNode_free(om->ObjectiveFunction);
+    om->ObjectiveFunction = NULL;
+  }
+
+ 
+  temp_ast = SBML_parseFormula(str);
+  ast = indexAST(temp_ast, om->neq, om->names);
+  om->ObjectiveFunction = ast;
+  
+  ASTNode_free(temp_ast);
+  
+  return 1;
+    
+}
+
+static int ODEModel_construct_vector_v_FromObjectiveFunction(odeModel_t *om)
+{  
+  int i, failed;
+  unsigned int j;
+  ASTNode_t *fprime, *ObjFun;
+  List_t *names;
+
+  if ( om == NULL ) 
+    return 0;
+  
+  if ( om->ObjectiveFunction == NULL ) 
+    return 0;  
+   
+  /* if vector_v exists, free it */
+  if ( om->vector_v != NULL )
+  {
+    for (  i=0; i<om->neq; i++  )
+      if ( om->vector_v[i] != NULL )
+	ASTNode_free(om->vector_v[i]);      
+    free(om->vector_v);   
+  }
+
+  /******************** Calculate dJ/dx ************************/
+  failed = 0; 
+  ASSIGN_NEW_MEMORY_BLOCK(om->vector_v, om->neq, ASTNode_t *, 0);
+
+  ObjFun = copyAST(om->ObjectiveFunction);
+
+  for ( i=0; i<om->neq; i++ )
+  {   
+    fprime = differentiateAST(ObjFun, om->names[i]);
+    om->vector_v[i] = fprime;
+
+    /* check if the AST contains a failure notice */
+    names = ASTNode_getListOfNodes(fprime,
+				   (ASTNodePredicate) ASTNode_isName);
+
+    for ( j=0; j<List_size(names); j++ ) 
+      if ( strcmp(ASTNode_getName(List_get(names,j)),
+		  "differentiation_failed") == 0 ) 
+	failed++;
+
+    List_free(names); 
+  }
+
+  ASTNode_free(ObjFun);
+
+  if ( failed != 0 )
+  {
+    SolverError_error(WARNING_ERROR_TYPE,
+		      SOLVER_ERROR_OBJECTIVE_FUNCTION_V_VECTOR_COULD_NOT_BE_CONSTRUCTED,
+		      "%d entries of vector_v could not be "
+		      "constructed, due to failure of differentiation. " ,
+		      failed);   
+  }
+ 
+  return 1;
+}
+
+
+
+/** \brief Sets a general objective function (for ODE solution) via a
+    text input file
+*/
+SBML_ODESOLVER_API int IntegratorInstance_readTimeSeriesData(integratorInstance_t *engine, char *TimeSeriesData_file)
+{
+  int i;
+  char *name;
+
+  int n_data;      /* number of relevant data columns */
+  int *col;        /* positions of relevant columns in data file */
+  int *index;      /* corresponding indices in variable list */
+  int n_time;      /* number of data rows */
+ 
+  
+  odeModel_t *om = engine->om;
+  int n_var = om->neq;       /* number ofvariable names */
+  char **var = om->names;      /* variable names */
+  time_series_t *ts;  /*   = om->time_series; */
+
+
+  if ( om->time_series != NULL )
+    free_data( om->time_series );
+  
+  /* alloc mem */
+  /* ts = space(sizeof(time_series_t)); */
+  ASSIGN_NEW_MEMORY_BLOCK(ts, 1, time_series_t, 0);
+
+  /* alloc mem for index lists */
+  ts->n_var = n_var;
+  ASSIGN_NEW_MEMORY_BLOCK(ts->var,   n_var, char   *, 0);
+  ASSIGN_NEW_MEMORY_BLOCK(ts->data,  n_var, double *, 0); 
+  ASSIGN_NEW_MEMORY_BLOCK(ts->data2, n_var, double *, 0);
+    
+  /* initialize index lists */
+  for ( i=0; i<n_var; i++ )
+  {
+    ASSIGN_NEW_MEMORY_BLOCK(name,  strlen(var[i])+1, char , 0);
+    strcpy(name, var[i]);
+    ts->var[i]   = name;
+    ts->data[i]  = NULL;
+    ts->data2[i] = NULL;
+  }
+
+  /* alloc temp mem for column info */
+  ASSIGN_NEW_MEMORY_BLOCK(col,   n_var, int, 0);
+  ASSIGN_NEW_MEMORY_BLOCK(index, n_var, int, 0);
+
+  /* read header line */
+  n_data = read_header_line(TimeSeriesData_file, n_var, var, col, index);
+  ts->n_data = n_data;
+	
+  /* count number of lines */
+  n_time = read_columns(TimeSeriesData_file, 0, NULL, NULL, NULL);
+  ts->n_time = n_time;
+
+  /* alloc mem for data */
+  for ( i=0; i<n_data; i++ )
+  {
+    ASSIGN_NEW_MEMORY_BLOCK(ts->data[index[i]], n_time, double, 0);
+    ASSIGN_NEW_MEMORY_BLOCK(ts->data2[index[i]], n_time, double, 0);
+  }
+  /* ts->time = space(n_time * sizeof(double)); */
+  ASSIGN_NEW_MEMORY_BLOCK(ts->time,  n_time, double, 0);
+
+  /* read data */
+  read_columns(TimeSeriesData_file, n_data, col, index, ts);
+
+  /* free temp mem */
+  free(col);
+  free(index);
+
+  /* initialize interpolation type */
+  ts->type = 3;
+
+  /* calculate second derivatives, if data is treated as being continuous */
+  for ( i=0; i<n_var; i++ )
+    if ( ts->data[i] != NULL )
+      spline(ts->n_time, ts->time, ts->data[i], ts->data2[i]);
+
+  ts->last = 0;
+    
+  /* alloc mem for warnings */
+  ASSIGN_NEW_MEMORY_BLOCK(ts->mess,  2, char *, 0);
+  ASSIGN_NEW_MEMORY_BLOCK(ts->warn,  2, int, 0); 
+
+  /* initialize warnings */
+  ts->mess[0] = "argument out of range (left) ";
+  ts->mess[1] = "argument out of range (right)";
+  for ( i=0; i<2; i++ )
+    ts->warn[i] = 0;   
+
+  om->time_series = ts;
+
+ return 1;
+}
+
+
+/** \brief Perform necessary quadratures for ODE/forward/adjoint
+          sensitivity In forward phase, if nonlinear objective is
+          present (by calling II_setObjectiveFunction) it is computed;
+          alternatively, if linear objective is present (prior call to
+          II_setLinearObj), it is computed.
+
+          In adjoint phase, the backward quadrature for linear
+          objective is performed.
+ */
+SBML_ODESOLVER_API int IntegratorInstance_CVODEQuad(integratorInstance_t *engine)
+{
+  int flag, i, j;
+  cvodeSolver_t *solver = engine->solver;
+  cvodeSettings_t *opt = engine->opt;
+  int iS;
+  odeModel_t *om = engine->om;
+  odeSense_t *os = engine->os;
+  cvodeData_t *data = engine->data;
+  
+  if( engine->AdjointPhase )
+  {
+    /* if continuous data is observed, compute quadrature;
+       if discrete data is observed, quadrature has been computed already */
+    if ( opt->observation_data_type == 0  )
+    {  
+      flag = CVodeGetQuadB(solver->cvadj_mem, solver->qA);
+      CVODE_HANDLE_ERROR(&flag, "CVodeGetQuadB", 1);
+    }
+
+    /* For adj sensitivity components corresponding to IC as parameter */
+    for( iS=0; iS<os->nsens; iS++  )
+      if ( os->index_sensP[iS] == -1 )
+      {
+        NV_Ith_S(solver->qA, iS) = - data->adjvalue[os->index_sens[iS]];
+      }
+  }
+  else
+  {
+     
+    if ( opt->observation_data_type == 0  )
+    {  /* if continuous data is observed, compute quadrature */
+      /* If an objective function exists */
+      if( om->ObjectiveFunction != NULL )
+      {
+	flag = CVodeGetQuad(solver->cvode_mem, solver->tout, solver->q);
+	CVODE_HANDLE_ERROR(&flag, "CVodeGetQuad ObjectiveFunction", 1);
+      }
+
+      /* If doing forward sensitivity analysis and vector_v exists,
+	 compute sensitivity quadrature */
+      if (!opt->doFIM)
+      {
+	if( opt->Sensitivity && om->ObjectiveFunction == NULL &&
+	    om->vector_v != NULL  )
+	{
+	  flag = CVodeGetQuad(solver->cvode_mem, solver->tout, solver->qS);
+	  CVODE_HANDLE_ERROR(&flag, "CVodeGetQuad V_Vector", 1);
+	}
+      }
+      else /* doFIM */
+      {
+	flag = CVodeGetQuad(solver->cvode_mem, solver->tout, solver->qFIM);
+	CVODE_HANDLE_ERROR(&flag, "CVodeGetQuad FIM", 1);
+	
+	/* copy results to matrix FIM */
+	for (i=0; i<os->nsens; i++)
+	  for (j=0; j<os->nsens; j++)
+	    data->FIM[i][j] = NV_Ith_S(solver->qFIM, i*os->nsens + j);
+      }
+    }
+    else
+    {
+      /* else solver->q or solver->qS already contain the objective
+	 and its sensitivity respectively */  
+    }
+  }
+  return(1);
+}
+
+
+/** \brief Prints computed quadratures for ODE/forward/adjoint
+           sensitivity. In forward phase, if nonlinear objective is
+           present (by calling II_setObjectiveFunction) it is printed;
+           alternatively, if linear objective is present (prior call
+           to II_setLinearObj), it is printed.
+
+	   In adjoint phase, the backward quadrature for linear
+	   objective is printed.
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_printQuad(integratorInstance_t *engine, FILE *f)
+{
+  
+  int j;
+  double value;
+  char *formula;
+  odeModel_t *om = engine->om; 
+  odeSense_t *os = engine->os; 
+  ASTNode_t *tempAST; 
+
+  if ( engine->AdjointPhase )
+  {
+  /*  fprintf(f, "\nExpression for integrand of linear objective J: \n"); */
+    for(j=0;j<om->neq;j++)
+    {       
+      /*      Append "_data" to observation data in the vector_v AST */
+      /*      tempAST = copyRevertDataAST(om->vector_v[j]); */
+      /*      fprintf(f, "%d-th component: %s \n" , j, SBML_formulaToString(tempAST) ); */
+      /*      ASTNode_free(tempAST); */
+    }
+    
+    for ( j=0; j<os->nsens; j++ )
+      {
+	value = NV_Ith_S(engine->solver->qA, j);
+	fprintf(f, "dJ/dp_%d=%0.15g ", j, value);
+      }
+    fprintf(f, "\n");
+  }
+  else
+  {
+    if ( om->ObjectiveFunction != NULL  ) 
+    {  
+      /*  Append "_data" to observation data in the vector_v AST */
+      /*   tempAST = copyRevertDataAST(om->ObjectiveFunction); */
+      /*        fprintf(f, "\nExpression for integrand of objective J: %s \n\n" , */
+      /* 	       SBML_formulaToString(tempAST) ); */
+      value = NV_Ith_S(engine->solver->q, 0);
+      fprintf(f, "Computed J=%0.15g \n", value);
+      /*  ASTNode_free(tempAST); */
+    }
+    else if ( engine->om->vector_v != NULL  )
+    {
+      fprintf(f, "\nExpression for integrand of linear objective J: \n");
+      for(j=0;j<om->neq;j++)
+      {    
+        /* Append "_data" to observation data in the vector_v AST  */
+	tempAST = copyRevertDataAST(om->vector_v[j]);
+	formula = SBML_formulaToString(tempAST);
+	
+	fprintf(f, "%d-th component: %s \n" , j, formula);
+	free(formula);
+        ASTNode_free(tempAST);
+      }      
+
+      /*!!! TODO : clarify why valgrind reports
+	"==16330== Conditional jump or move depends on
+	           uninitialised value(s)" for the following print command!
+		   see file sundials-2.3.0/include/nvector/nvector_serial.h */
+      for ( j=0; j<os->nsens; j++ )
+      {
+	value = NV_Ith_S(engine->solver->qS, j);
+	fprintf(f, "dJ/dp_%d=%0.15g ", j, value);
+      }
+      fprintf(f, "\n");
+    }
+    else fprintf(f, "\nNo quadrature was performed \n");
+  }
+
+  return(1);
+}
+
+
+/** \brief Writes computed quadratures for the computed objective, or 
+           the adjoint adjoint sensitivity if the solver is in adjoint phase.
+*/
+
+SBML_ODESOLVER_API int IntegratorInstance_writeQuad(integratorInstance_t *engine, realtype *data)
+{
+  
+  int j;
+  odeModel_t *om = engine->om; 
+  odeSense_t *os = engine->os; 
+
+  data = (realtype *) data;
+
+  if ( engine->AdjointPhase )
+  { 
+   for ( j=0; j<os->nsens; j++ )
+     data[j] = NV_Ith_S(engine->solver->qA, j);
+  }
+  else
+  {
+      if ( om->ObjectiveFunction != NULL  )
+	  data[0] = NV_Ith_S(engine->solver->q, 0); 
+      else if  ( engine->opt->Sensitivity )
+	  for ( j=0; j<os->nsens; j++ )
+	      data[j] = NV_Ith_S(engine->solver->qS, j);
+  }
+
+  return(1);
+}
+
+/* Extension of copyAST, for adding to the AST having ASTNode_isSetData
+   by attaching the string extension "_data" to variable names */
+static ASTNode_t *copyRevertDataAST(const ASTNode_t *f)
+{
+  unsigned int i;
+  ASTNode_t *copy;
+  char *tempstr = NULL;
+  char *tempstr2 = NULL;
+
+  copy = ASTNode_create();
+
+  /* DISTINCTION OF CASES */
+  /* integers, reals */
+  if ( ASTNode_isInteger(f) ) 
+    ASTNode_setInteger(copy, ASTNode_getInteger(f));
+  else if ( ASTNode_isReal(f) ) 
+    ASTNode_setReal(copy, ASTNode_getReal(f));
+  /* variables */
+  else if ( ASTNode_isName(f) )
+  {
+    if ( ASTNode_isSetIndex((ASTNode_t *)f) )
+    {
+      ASTNode_free(copy);
+      copy = ASTNode_createIndexName();
+      ASTNode_setIndex(copy, ASTNode_getIndex((ASTNode_t *)f));
+    }
+
+    if ( !ASTNode_isSetData((ASTNode_t *)f) )  
+         ASTNode_setName(copy, ASTNode_getName(f));
+    else
+    {   
+        /*  ASTNode_setData(copy); */
+      tempstr  = (char *)ASTNode_getName(f);
+      ASSIGN_NEW_MEMORY_BLOCK(tempstr2, strlen(tempstr)+5, char, NULL);
+      strncpy(tempstr2, tempstr, strlen(tempstr) );
+      strncat(tempstr2, "_data", 5);
+      ASTNode_setName(copy, tempstr2 );
+      free(tempstr);
+    }
+    
+  }
+  /* constants, functions, operators */
+  else
+  {
+    ASTNode_setType(copy, ASTNode_getType(f));
+    /* user-defined functions: name must be set */
+    if ( ASTNode_getType(f) == AST_FUNCTION ) 
+      ASTNode_setName(copy, ASTNode_getName(f));
+    for ( i=0; i<ASTNode_getNumChildren(f); i++ ) 
+      ASTNode_addChild(copy, copyRevertDataAST(ASTNode_getChild(f,i)));
+  }
+
+  return copy;
+}
+
+
+
+/************* Additional Function for Sensitivity Analysis **************/
+
+/**
+ * fS routine: Called by CVODES to compute the sensitivity RHS for one
+ * parameter.
+ *
+ CVODES sensitivity analysis calls this function any time required,
+ with current values for variables x, time t and sensitivities
+ s. The function evaluates df/dx * s + df/dp for one p and writes the
+ results back to CVODE's N_Vector(ySdot) vector. The function is
+ not `static' only for including it in the documentation!
+*/
+
+static int fS(int Ns, realtype t, N_Vector y, N_Vector ydot, 
+	      int iS, N_Vector yS, N_Vector ySdot, 
+	      void *fS_data, N_Vector tmp1, N_Vector tmp2)
+{
+  int i;
+  realtype *ydata, *ySdata, *dySdata;
+  cvodeData_t *data;
+  data  = (cvodeData_t *) fS_data;
+
+  ydata = NV_DATA_S(y);
+  ySdata = NV_DATA_S(yS);
+  dySdata = NV_DATA_S(ySdot);
+
+  /** update ODE variables from CVODE */
+  for ( i=0; i<data->model->neq; i++ ) data->value[i] = ydata[i];
+  
+  /** update time */
+  data->currenttime = t;
+
+  /** evaluate sensitivity RHS: df/dx * s + df/dp for one p */
+  for ( i=0; i<data->model->neq; i++ ) 
+  {
+    dySdata[i] = 0;
+    /* add parameter sensitivity */
+    /*!!! TODO: evaluation of nonzero-elements in the parameter matrix dY/dP */
+    if ( data->os->index_sensP[iS] != -1 &&
+	 data->os->sensLogic[i][data->os->index_sensP[iS]] )
+    {
+#ifdef ARITHMETIC_TEST
+      dySdata[i] +=
+	data->os->senscode[i][data->os->index_sensP[iS]]->evaluate(data);
+#else
+      dySdata[i] +=
+	evaluateAST(data->os->sens[i][data->os->index_sensP[iS]], data);
+#endif
+    }
+  }
+
+  /* add variable sensitivities */
+  for ( i=0; i<data->model->sparsesize; i++ )
+  {
+    nonzeroElem_t *nonzero = data->model->jacobSparse[i];
+    
+#ifdef ARITHMETIC_TEST
+    dySdata[nonzero->i] += nonzero->ijcode->evaluate(data) * ySdata[nonzero->j];
+#else
+    dySdata[nonzero->i] += evaluateAST(nonzero->ij, data)  * ySdata[nonzero->j];
+#endif
+    
+  }
+  return (0);
+}
+
+/********* Additional Function for Adjoint Sensitivity Analysis **********/
+
+/**
+ * fA routine: Called by CVODES to compute the adjoint sensitivity RHS for one
+ * parameter.
+ *
+ CVODES adjoint sensitivity analysis calls this function any time required,
+ with current values for variables y, yA, and time t.
+ The function evaluates -[df/dx]^T * yA + v
+ and writes the results back to CVODE's N_Vector yAdot.
+*/
+
+static int fA(realtype t, N_Vector y, N_Vector yA, N_Vector yAdot,
+	      void *fA_data)
+{
+  int i;
+  realtype *ydata, *yAdata, *dyAdata;
+  cvodeData_t *data;
+  data  = (cvodeData_t *) fA_data;
+  
+  ydata = NV_DATA_S(y);
+  yAdata = NV_DATA_S(yA);
+  dyAdata = NV_DATA_S(yAdot);
+
+  /* update ODE variables from CVODE  */
+  for ( i=0; i<data->model->neq; i++ ) data->value[i] = ydata[i];
+ 
+  /* update time */
+  data->currenttime = t;
+
+  /* evaluate adjoint sensitivity RHS: -[df/dx]^T * yA + v */
+  for(i=0; i<data->model->neq; i++)
+  {
+    dyAdata[i] = 0;  
+    /*  Vector v contribution, if continuous data is used */
+    if(data->model->discrete_observation_data==0)
+      dyAdata[i] += evaluateAST(data->model->vector_v[i], data);
+  }
+     
+  for ( i=0; i<data->model->sparsesize; i++ )
+  {
+    nonzeroElem_t *nonzero = data->model->jacobSparse[i];
+
+#ifdef ARITHMETIC_TEST
+    dyAdata[nonzero->j] -= nonzero->ijcode->evaluate(data) * yAdata[nonzero->i];
+#else
+    dyAdata[nonzero->j] -= evaluateAST(nonzero->ij, data)  * yAdata[nonzero->i];
+#endif    
+  }  
+  return (0);
+}
+
+/**
+   Adjoint Jacobian routine: Compute JB(t,x) = -[df/dx]^T
+   
+   This function is (optionally) called by CVODES integration routines
+   every time as required.
+
+   Very similar to the fA routine, it evaluates the Jacobian matrix
+   equations with CVODE's current values and writes the results
+   back to CVODE's internal vector DENSE_ELEM(J,i,j).
+*/
+
+static int JacA(long int NB, DenseMat JB, realtype t,
+		N_Vector y, N_Vector yB, N_Vector fyB, void *jac_dataB,
+		N_Vector tmp1B, N_Vector tmp2B, N_Vector tmp3B)
+{
+
+  int i;
+  realtype *ydata;
+  cvodeData_t *data;
+  data  = (cvodeData_t *) jac_dataB;
+  ydata = NV_DATA_S(y);
+  
+  /** update ODE variables from CVODE */
+  for ( i=0; i<data->model->neq; i++ ) data->value[i] = ydata[i];
+
+  /** update time */
+  data->currenttime = t;
+
+  /** evaluate Jacobian JB = -[df/dx]^T */
+  for ( i=0; i<data->model->sparsesize; i++ )
+  {
+    nonzeroElem_t *nonzero = data->model->jacobSparse[i];    
+#ifdef ARITHMETIC_TEST
+    DENSE_ELEM(JB, nonzero->j,nonzero->i) = - nonzero->ijcode->evaluate(data);
+#else
+    DENSE_ELEM(JB, nonzero->j,nonzero->i) = - evaluateAST(nonzero->ij, data);
+#endif 
+  }
+  return (0);
+}
+
+
+static int fQA(realtype t, N_Vector y, N_Vector yA, 
+	       N_Vector qAdot, void *fA_data)
+{ 
+  int i, j;
+  realtype *ydata, *yAdata, *dqAdata;
+  cvodeData_t *data;
+  data  = (cvodeData_t *) fA_data;
+
+  ydata = NV_DATA_S(y);
+  yAdata = NV_DATA_S(yA);
+  dqAdata = NV_DATA_S(qAdot);
+
+ 
+  /* update ODE variables from CVODE  */  
+  for ( i=0; i<data->model->neq; i++ ) data->value[i] = ydata[i];
+ 
+  /* update time */
+  data->currenttime = t;
+
+  /* evaluate quadrature integrand: yA^T * df/dp */
+  for ( j=0; j<data->os->nsens; j++ )
+    dqAdata[j] = 0.0;
+  
+  for ( i=0; i<data->os->sparsesize; i++ )
+  {
+    nonzeroElem_t *nonzero = data->os->sensSparse[i];        
+#ifdef ARITHMETIC_TEST
+    dqAdata[nonzero->j] += yAdata[nonzero->i] * nonzero->ijcode->evaluate(data);
+#else
+    dqAdata[nonzero->j] += yAdata[nonzero->i] * evaluateAST(nonzero->ij, data);
+#endif 
+  }
+  return (0);
+}
+
+
+static int fQS(realtype t, N_Vector y, N_Vector qdot, void *fQ_data)
+{
+  int i, j, flag;
+  realtype *ydata, *dqdata;
+  cvodeData_t *data;
+  cvodeSolver_t *solver; 
+  integratorInstance_t *engine;
+  N_Vector *yS;
+  N_Vector yy;
+  
+  engine = (integratorInstance_t *) fQ_data;
+  solver = engine->solver;
+  data  =  engine->data;
+
+  ydata = NV_DATA_S(y);
+  dqdata = NV_DATA_S(qdot);
+
+  /* update ODE variables from CVODE  */  
+  for ( i=0; i<data->model->neq; i++ ) data->value[i] = ydata[i];
+ 
+  /* update time */
+  data->currenttime = t;
+
+  /* update sensitivities */
+  yy = N_VNew_Serial(data->model->neq);
+  yS = N_VCloneVectorArray_Serial(data->os->nsens, yy);
+  N_VDestroy_Serial(yy);
+
+  /*  At t=0, yS is initialized to 0. In this case, CvodeGetSens
+      shouldn't be used as it gives nan's */
+  if ( t != 0 )
+  {
+    flag = CVodeGetSens(solver->cvode_mem, t, yS);
+    if ( flag < 0 )
+    {
+      SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_CVODE_MALLOC_FAILED,
+			"SUNDIALS_ERROR: CVodeGetSens failed "
+			"with flag %d", flag);
+      exit(EXIT_FAILURE);
+    }
+  }  
+
+
+  /* evaluate quadrature integrand: (y-ydata) * yS_i for each i */
+  for ( i=0; i<data->os->nsens; i++ )
+  {
+    dqdata[i] = 0.0;
+    for ( j=0; j<data->model->neq; j++ )
+      dqdata[i] += evaluateAST(engine->om->vector_v[j], data) *
+	NV_Ith_S(yS[i], j);
+  }
+
+  N_VDestroyVectorArray_Serial(yS, data->os->nsens);
+
+  return (0);
+}
+
+static int fQFIM(realtype t, N_Vector y, N_Vector qdot, void *fQ_data)
+{
+  int i, j, k, flag;
+  realtype *dqdata;
+  cvodeData_t *data;
+  cvodeSolver_t *solver; 
+  integratorInstance_t *engine;
+  N_Vector *yS;
+  N_Vector yy;
+  
+  engine = (integratorInstance_t *) fQ_data;
+  solver = engine->solver;
+  data  =  engine->data;
+
+  dqdata = NV_DATA_S(qdot);
+
+  /* update time */
+  data->currenttime = t;
+
+  /* update sensitivities */
+  yy = N_VNew_Serial(data->model->neq);
+  yS = N_VCloneVectorArray_Serial(data->os->nsens, yy);
+  N_VDestroy_Serial(yy);
+
+  /*  At t=0, yS is initialized to 0. In this case, CvodeGetSens
+      shouldn't be used as it gives nan's */
+  if ( t != 0 )
+  {
+    flag = CVodeGetSens(solver->cvode_mem, t, yS);
+    if ( flag < 0 )
+    {
+      SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_CVODE_MALLOC_FAILED,
+			"SUNDIALS_ERROR: CVodeGetSens failed "
+			"with flag %d", flag);
+      exit(EXIT_FAILURE);
+    }
+  }  
+
+
+  /* evaluate quadrature integrand: < yS_i , yS_j > for each i,j */
+  for ( i=0; i<data->os->nsens; i++ )
+  {
+    for ( j=0; j<data->os->nsens; j++ )
+    {
+    dqdata[i*data->os->nsens + j] = 0.0;
+    for ( k=0; k<data->model->neq; k++ )
+      dqdata[i*data->os->nsens + j] += data->weights[k] *
+	NV_Ith_S(yS[i], k) * NV_Ith_S(yS[j], k) ;
+    }
+  }
+
+  N_VDestroyVectorArray_Serial(yS, data->os->nsens);
+
+  return (0);
+}
+
+
+/** @} */
+/* End of file */
+
diff --git a/src/solverError.c b/src/solverError.c
new file mode 100644
index 0000000..50d914e
--- /dev/null
+++ b/src/solverError.c
@@ -0,0 +1,358 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2008-10-16 19:11:11 raim>
+  $Id: solverError.c,v 1.24 2008/11/07 09:15:46 raimc Exp $ 
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Andrew M. Finney
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/*! \defgroup errors SOSlib Error Management
+  \brief This optional module contains all functions to set and
+  retrieve warnings, errors and fatal errors occuring at any
+  level of SOSlib.
+
+*/
+/*@{*/
+
+#include "sbmlsolver/solverError.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+
+#ifdef _WIN32
+#define vsnprintf _vsnprintf
+#include "windows.h"
+#endif
+
+#include <sbml/util/List.h>
+
+/** error message, including errorCode */
+typedef struct solverErrorMessage
+{
+  char *message ;
+  int errorCode ;
+} solverErrorMessage_t ;
+
+static int SolverError_dumpHelper(char *);
+
+/*!!! TODO : GLOBAL ERROR LIST - remove and add separate lists
+  for each internal structure !!!*/
+static List_t *solverErrors[NUMBER_OF_ERROR_TYPES] = { NULL, NULL, NULL, NULL };
+
+static int memoryExhaustion = 0;
+static solverErrorMessage_t memoryExhaustionFixedMessage =
+  {
+    "No more memory avaliable",
+    SOLVER_ERROR_NO_MORE_MEMORY_AVAILABLE
+  };
+
+/* get number of stored errors  of given type */
+SBML_ODESOLVER_API int SolverError_getNum(errorType_t type)
+{
+  List_t *errors = solverErrors[type];
+
+  return (errors ? List_size(errors) : 0) +
+    (type == FATAL_ERROR_TYPE ? memoryExhaustion : 0) ;
+}
+
+SBML_ODESOLVER_API solverErrorMessage_t *SolverError_getError(errorType_t type, int errorNum)
+{
+  List_t *errors = solverErrors[type];
+
+  if ( type == FATAL_ERROR_TYPE && memoryExhaustion &&
+       errorNum == (errors ? (int)List_size(errors) : 0) )
+    return &memoryExhaustionFixedMessage ;
+
+  if ( !errors )
+    return NULL;
+
+  return List_get(errors, errorNum);
+}
+
+/** get a stored error message */
+SBML_ODESOLVER_API char *SolverError_getMessage(errorType_t type, int errorNum)
+{
+  return SolverError_getError(type, errorNum)->message ;
+}
+
+/** get error code */
+SBML_ODESOLVER_API errorCode_t SolverError_getCode(errorType_t type, int errorNum)
+{
+  return SolverError_getError(type, errorNum)->errorCode ; 
+}
+
+/** get error code of last error stored of given type */
+SBML_ODESOLVER_API errorCode_t SolverError_getLastCode(errorType_t type)
+{
+  if ( !SolverError_getNum(type) )
+    return 0;
+  else
+    return SolverError_getCode(type, SolverError_getNum(type) - 1);
+}
+
+/** empty error store */
+SBML_ODESOLVER_API void SolverError_clear(void)
+{
+  int i ;
+
+  for ( i = 0; i != NUMBER_OF_ERROR_TYPES; i++ )
+  {
+    List_t *l = solverErrors[i];
+
+    if ( l )
+    {
+      while ( List_size(l) )
+      {
+	solverErrorMessage_t *m = List_get(l, 0);
+
+	free(m->message);
+	free(m);
+	List_remove(l, 0);
+      }      
+	  List_free(l);
+	  solverErrors[i] = NULL;
+    }
+  }
+
+  memoryExhaustion = 0;
+}
+
+SBML_ODESOLVER_API void SolverError_dumpAndClearErrors(void)
+{
+  SolverError_dump();
+  SolverError_clear();
+}
+
+
+/** create an error */
+SBML_ODESOLVER_API void SolverError_error(errorType_t type, errorCode_t errorCode,
+										  const char *fmt, ...)
+{
+  static const size_t BUFFER_SIZE = 2000;
+  List_t *errors = solverErrors[type];
+  char buffer[BUFFER_SIZE], *variableLengthBuffer;
+  va_list args;
+  solverErrorMessage_t *message =
+    (solverErrorMessage_t *)malloc(sizeof(solverErrorMessage_t));
+
+  if ( message == NULL )
+    memoryExhaustion = 1;
+  else
+  {
+    va_start(args, fmt);
+    vsnprintf(buffer, BUFFER_SIZE, fmt, args);
+    va_end(args);
+
+    variableLengthBuffer = (char *)malloc(strlen(buffer) + 1);
+    message->errorCode = errorCode;
+
+    if ( variableLengthBuffer == NULL )
+      memoryExhaustion = 1;
+    else
+    {
+      message->message = strcpy(variableLengthBuffer, buffer);
+
+      if ( !errors )
+	errors = solverErrors[type] = List_create();
+
+      List_add(errors, message);
+    }
+  }
+}
+
+/** exit the program if errors or fatals have been created. */
+SBML_ODESOLVER_API void SolverError_haltOnErrors(void)
+{
+  if ( SolverError_getNum(ERROR_ERROR_TYPE) ||
+       SolverError_getNum(FATAL_ERROR_TYPE) )
+    exit(EXIT_FAILURE);
+}
+
+
+/** write all errors and warnings to a string (owned by caller
+    unless memoryExhaustion) */
+SBML_ODESOLVER_API char *SolverError_dumpToString(void)
+{
+  char *result;
+
+  /*AIX: deactivate memoryExhaustion, this is a hack required
+    under AIX because 'static int memoryExhaustion=0' does not
+    actually initialize it to 0 */
+#if defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+  memoryExhaustion = 0;
+#endif
+    
+  if ( !memoryExhaustion )
+  {
+    int bufferSize = SolverError_dumpHelper(NULL);
+    result = SolverError_calloc(bufferSize, sizeof(char *));
+  }
+
+  if ( memoryExhaustion )
+    /* N.b. the following magic number is SOLVER_ERROR_NO_MORE_MEMORY_AVAILABLE */
+    result = "Fatal Error\t130000\tNo more memory avaliable\n";
+  else
+    SolverError_dumpHelper(result);
+
+  return result;
+}
+
+/* free string returned by SolverError_dumpToString */
+SBML_ODESOLVER_API void SolverError_freeDumpString(char *message)
+{
+  if ( !memoryExhaustion )
+    free(message);
+}
+
+/* write all errors and warnings to standard error */
+SBML_ODESOLVER_API void SolverError_dump(void)
+{
+  char *message = SolverError_dumpToString();
+
+  fprintf(stderr, "%s", message);
+  SolverError_freeDumpString(message);
+}
+
+/* returns 1 if memory has been exhausted 0 otherwise */
+SBML_ODESOLVER_API int SolverError_isMemoryExhausted(void)
+{
+  return memoryExhaustion;
+}
+
+SBML_ODESOLVER_API void *SolverError_calloc(size_t num, size_t size)
+{
+  /* static int noOfCalls = 0; for testing */
+  void *result;
+
+  /*noOfCalls++;
+
+  if (noOfCalls > 1)
+  result = NULL ;
+  else */
+    
+  result = calloc(num, size);
+
+  memoryExhaustion = memoryExhaustion || !result ;
+
+  /*AIX: deactivate memoryExhaustion, this is a hack required
+    under AIX because 'static int memoryExhaustion=0' does not
+    actually initialize it to 0 */
+#if defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+  memoryExhaustion = 0;
+#endif
+    
+  return result ;
+}
+
+#ifdef _WIN32
+void SolverError_storeLastWin32Error(const char *context)
+{
+  LPVOID lpMsgBuf;
+
+  if ( !FormatMessage(
+		      FORMAT_MESSAGE_ALLOCATE_BUFFER |
+		      FORMAT_MESSAGE_FROM_SYSTEM |
+		      FORMAT_MESSAGE_IGNORE_INSERTS,
+		      NULL,
+		      GetLastError(),
+		      /* Default language */
+		      MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+		      (LPTSTR) &lpMsgBuf,
+		      0,
+		      NULL ) )
+  {
+    SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_WIN32_FORMAT_ERROR,
+		      "Fatal Error cause unknown - (FormatMessage failed)\n");
+    return ;
+  }
+
+  SolverError_error(ERROR_ERROR_TYPE, SOLVER_ERROR_WIN32_ERROR,
+		    "%s - %s", context, (const char *)lpMsgBuf);
+    
+  /* Free the buffer. */
+  LocalFree( lpMsgBuf );
+}
+#endif
+
+/** @} */
+
+static int SolverError_dumpHelper(char *s)
+{
+  int result = 1;
+
+  static const char *solverErrorTypeString[] =
+    { "Fatal Error",
+      "      Error",
+      "    Warning",
+      "    Message" } ;
+
+  int i;
+  unsigned int j;
+
+  for ( i=0; i != NUMBER_OF_ERROR_TYPES; i++ )
+  {
+    List_t *errors = solverErrors[i];
+
+    if ( errors )
+    {
+      for ( j=0; j != List_size(errors); j++ )
+      {
+	char errorCodeString[35] ;
+	solverErrorMessage_t *error = List_get(errors, j);
+
+	sprintf(errorCodeString, "%d", error->errorCode);
+
+	if ( s )
+	{
+	  result = sprintf(s, "%s\t%s\t%s\n",
+			   solverErrorTypeString[i],
+			   errorCodeString, error->message);
+	  s += result ;
+	}
+	else
+	  result +=
+	    3 +
+	    strlen(solverErrorTypeString[i]) +
+	    strlen(error->message) +
+	    strlen(errorCodeString);
+      }
+    }
+  }
+
+  if ( s )
+    *s = '\0';
+
+  return result ;
+}
diff --git a/src/util.c b/src/util.c
new file mode 100644
index 0000000..e271575
--- /dev/null
+++ b/src/util.c
@@ -0,0 +1,192 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/**
+ * Filename    : util.c
+ * Revision    : $Id: util.c,v 1.4 2008/09/12 20:02:49 raimc Exp $
+ * Source      : $Source: /home/raim/programs/SBML_odeSolver/SBML_odeSolver/src/util.c,v $
+ */
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Christoph Flamm
+ *
+ * Contributor(s):
+ *     
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+#include <stdarg.h>
+#include <errno.h>
+
+/* own header files */
+#include "sbmlsolver/util.h"
+
+/*-------------------------------------------------------------------------*/
+static void nrerror(const char message[])
+{
+  fprintf(stderr, "\n%s\n", message);
+  exit(EXIT_FAILURE);
+}
+
+#ifndef WITH_DMALLOC
+
+void *space(unsigned size) {
+  void *pointer;
+  
+  if ( (pointer = (void *) calloc(1, (size_t) size)) == NULL) {
+#ifdef EINVAL
+    if (errno==EINVAL) {
+      fprintf(stderr,"SPACE: requested size: %d\n", size);
+      nrerror("SPACE allocation failure -> EINVAL");
+    }
+    if (errno==ENOMEM)
+#endif
+      nrerror("SPACE allocation failure -> no memory");
+  }
+  return  pointer;
+}
+
+#undef xrealloc
+/* dmalloc.h #define's xrealloc */
+void *xrealloc (void *p, unsigned size) {
+  if (p == 0)
+    return space(size);
+  p = (void *) realloc(p, size);
+  if (p == NULL) {
+#ifdef EINVAL
+    if (errno==EINVAL) {
+      fprintf(stderr,"xrealloc: requested size: %d\n", size);
+      nrerror("xrealloc allocation failure -> EINVAL");
+    }
+    if (errno==ENOMEM)
+#endif
+      nrerror("xrealloc allocation failure -> no memory");  
+  }
+  return p;
+}
+
+#endif
+
+/*-------------------------------------------------------------------------*/
+char *get_line(FILE *fp)
+{
+  static const size_t BUFFER_SIZE = 512;
+  char *line, *cp, *ep;
+  size_t len;
+
+  line = space(BUFFER_SIZE);
+  line[0] = '\0';
+  ep = line;
+  len = BUFFER_SIZE;
+  if ( fgets(ep, BUFFER_SIZE, fp) == NULL) {
+    xfree(line);
+    return NULL;
+  }
+  do {
+    cp = strchr(ep, '\n');
+    if (cp) {
+      *cp = '\0';
+      break;
+    }
+    if (strlen(ep) < BUFFER_SIZE - 1) break;
+    line = xrealloc(line, len + BUFFER_SIZE - 1);
+    ep = &line[len - 1];
+    len += BUFFER_SIZE - 1;
+  } while ( fgets(ep, BUFFER_SIZE, fp) != NULL);
+  return line;
+}
+
+/*-------------------------------------------------------------------------*/
+
+char*
+concat(const char *a, const char *b)
+{
+  size_t alen, blen;
+  char *tmp;
+
+  alen = strlen(a);
+  blen = strlen(b);
+  tmp = (char *)xalloc(alen+blen+2, sizeof(char));
+  strcpy(tmp, a);
+  if (alen == 0 || tmp[alen-1] != '/') tmp[alen] = '/';
+  strcat(tmp, b);
+  return (tmp);
+}
+
+void fatal(FILE *hdl, const char *fmt, ...)
+{
+  va_list args;
+  if ( hdl == NULL ) hdl = stderr;
+  va_start(args, fmt);
+  if ( errno != 0 )
+    fprintf( hdl, "FATAL ERROR: %s: ", strerror(errno));
+  else fprintf(hdl, "FATAL ERROR: ");
+  vfprintf(hdl, fmt, args);
+  fprintf(hdl,"\n");
+  fflush(hdl);
+  va_end(args);
+  exit(EXIT_FAILURE);
+}
+                                                                               
+void Warn(FILE *hdl, const char *fmt, ...)
+{
+  va_list args;
+  if ( hdl == NULL ) hdl = stderr;
+  va_start(args, fmt);
+  fprintf(hdl, "WARNING: ");
+  vfprintf(hdl, fmt, args);
+  fprintf(hdl,"\n");
+  fflush(hdl);
+  va_end(args);
+}
+
+void *xalloc (size_t nmemb, size_t size)
+{
+  void *tmp;
+  if ( (tmp = calloc(nmemb, size)) == NULL )
+    fatal(stderr, "xalloc(): %s\n", strerror(ENOMEM));
+  return (tmp);
+}
+
+/*
+ * @return void
+ */
+void xfree (void *ptr)
+{
+  if ( ptr == NULL ) {
+#ifdef MEMDEBUG
+    Warn(stderr, "xfree(): arg 1 is NULL");
+#endif
+    return;
+  }
+  free (ptr);
+}
+
+/* End of file */
diff --git a/tokyo_release.png b/tokyo_release.png
new file mode 100644
index 0000000..6ae4deb
Binary files /dev/null and b/tokyo_release.png differ
diff --git a/tutorial/Goodwin_SomoS.xml b/tutorial/Goodwin_SomoS.xml
new file mode 100644
index 0000000..567882a
--- /dev/null
+++ b/tutorial/Goodwin_SomoS.xml
@@ -0,0 +1,1077 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level2" xmlns:celldesigner="http://www.sbml.org/2001/ns/celldesigner" level="2" version="1">
+<model id="Goodwin">
+<annotation>
+<celldesigner:modelVersion>2.5</celldesigner:modelVersion>
+<celldesigner:modelDisplay sizeX="600" sizeY="400"/>
+<celldesigner:listOfCompartmentAliases>
+</celldesigner:listOfCompartmentAliases>
+<celldesigner:listOfComplexSpeciesAliases>
+</celldesigner:listOfComplexSpeciesAliases>
+<celldesigner:listOfSpeciesAliases>
+<celldesigner:speciesAlias id="sa1" species="X3">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="185.0" y="80.0" w="50.0" h="20.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="50.0" height="20.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa2" species="X2">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="199.0" y="190.0" w="50.0" h="20.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="50.0" height="20.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa3" species="x1">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="75.0" y="107.5" w="90.0" h="25.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="90.0" height="25.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ff66ff66" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa4" species="dummy2">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="55.0" y="217.5" w="70.0" h="25.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="70.0" height="25.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccff66" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa5" species="dummy3">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="305.0" y="127.5" w="70.0" h="25.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="70.0" height="25.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccff66" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa6" species="dummy1">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="105.0" y="17.5" w="70.0" h="25.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="70.0" height="25.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccff66" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa7" species="sa3_degraded">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="25.0" y="105.0" w="30.0" h="30.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="30.0" height="30.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffffcccc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="0.0" height="0.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa9" species="sa2_degraded">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="185.0" y="245.0" w="30.0" h="30.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="30.0" height="30.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffffcccc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="0.0" height="0.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa10" species="sa1_degraded">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="233.0" y="24.0" w="30.0" h="30.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="30.0" height="30.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffffcccc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="0.0" height="0.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa11" species="FGF8">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="170.0" y="310.0" w="60.0" h="20.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="60.0" height="20.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa13" species="X2bis">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="271.0" y="229.0" w="50.0" h="20.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="50.0" height="20.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa14" species="sa13_degraded">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="353.0" y="225.0" w="30.0" h="30.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="30.0" height="30.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffffcccc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="0.0" height="0.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa15" species="fgf8">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="155.0" y="361.5" w="90.0" h="25.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="90.0" height="25.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ff66ff66" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa16" species="sa15_degraded">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="289.0" y="362.0" w="30.0" h="30.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="30.0" height="30.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffffcccc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="0.0" height="0.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa17" species="gene_fgf8">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="22.0" y="360.5" w="70.0" h="25.0"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="70.0" height="25.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffffff66" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+</celldesigner:speciesAlias>
+</celldesigner:listOfSpeciesAliases>
+<celldesigner:listOfGroups/>
+<celldesigner:listOfProteins>
+<celldesigner:protein id="pr3" name="X3" type="GENERIC"/>
+<celldesigner:protein id="pr4" name="X2" type="GENERIC"/>
+<celldesigner:protein id="pr6" name="X2bis" type="GENERIC"/>
+<celldesigner:protein id="pr5" name="FGF8" type="GENERIC"/>
+</celldesigner:listOfProteins>
+<celldesigner:listOfGenes>
+<celldesigner:gene id="gn1" name="gene_fgf8" type="GENE"/>
+</celldesigner:listOfGenes>
+<celldesigner:listOfRNAs>
+<celldesigner:RNA id="rn1" name="x1" type="RNA"/>
+<celldesigner:RNA id="rn2" name="fgf8" type="RNA"/>
+</celldesigner:listOfRNAs>
+<celldesigner:listOfAntisenseRNAs/>
+<celldesigner:listOfBlockDiagrams>
+</celldesigner:listOfBlockDiagrams>
+</annotation>
+<listOfCompartments>
+<compartment id="default" size="1"/>
+</listOfCompartments>
+<listOfSpecies>
+<species id="x1" name="x1" compartment="default" initialAmount="0.502562" charge="0">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>RNA</celldesigner:class>
+<celldesigner:rnaReference>rn1</celldesigner:rnaReference>
+</celldesigner:speciesIdentity>
+<celldesigner:listOfCatalyzedReactions>
+<celldesigner:catalyzed reaction="re4"/>
+</celldesigner:listOfCatalyzedReactions>
+</annotation>
+</species>
+<species id="dummy2" name="dummy2" compartment="default" initialAmount="0.337805" boundaryCondition="true" charge="0" constant="true">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>SIMPLE_MOLECULE</celldesigner:class>
+<celldesigner:name>dummy2</celldesigner:name>
+</celldesigner:speciesIdentity>
+</annotation>
+</species>
+<species id="dummy3" name="dummy3" compartment="default" initialAmount="-0.390752" boundaryCondition="true" charge="0" constant="true">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>SIMPLE_MOLECULE</celldesigner:class>
+<celldesigner:name>dummy3</celldesigner:name>
+</celldesigner:speciesIdentity>
+</annotation>
+</species>
+<species id="dummy1" name="dummy1" compartment="default" initialAmount="0.497438" boundaryCondition="true" charge="0" constant="true">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>SIMPLE_MOLECULE</celldesigner:class>
+<celldesigner:name>dummy1</celldesigner:name>
+</celldesigner:speciesIdentity>
+</annotation>
+</species>
+<species id="sa3_degraded" name="sa3_degraded" compartment="default" initialAmount="0" boundaryCondition="true" charge="0" constant="true">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>DEGRADED</celldesigner:class>
+<celldesigner:name>sa3_degraded</celldesigner:name>
+</celldesigner:speciesIdentity>
+</annotation>
+</species>
+<species id="sa2_degraded" name="sa2_degraded" compartment="default" initialAmount="0" boundaryCondition="true" charge="0" constant="true">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>DEGRADED</celldesigner:class>
+<celldesigner:name>sa2_degraded</celldesigner:name>
+</celldesigner:speciesIdentity>
+</annotation>
+</species>
+<species id="sa1_degraded" name="sa1_degraded" compartment="default" initialAmount="0" boundaryCondition="true" charge="0" constant="true">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>DEGRADED</celldesigner:class>
+<celldesigner:name>sa1_degraded</celldesigner:name>
+</celldesigner:speciesIdentity>
+</annotation>
+</species>
+<species id="X3" name="X3" compartment="default" initialAmount="1.09075" charge="0">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr3</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+<celldesigner:listOfCatalyzedReactions>
+<celldesigner:catalyzed reaction="re3"/>
+</celldesigner:listOfCatalyzedReactions>
+</annotation>
+</species>
+<species id="X2" name="X2" compartment="default" initialAmount="0.33945" charge="0">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr4</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+<celldesigner:listOfCatalyzedReactions>
+<celldesigner:catalyzed reaction="re6"/>
+</celldesigner:listOfCatalyzedReactions>
+</annotation>
+</species>
+<species id="X2bis" name="X2bis" compartment="default" initialAmount="0.3222745" charge="0">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr6</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+<celldesigner:listOfCatalyzedReactions>
+<celldesigner:catalyzed reaction="re17"/>
+</celldesigner:listOfCatalyzedReactions>
+</annotation>
+</species>
+<species id="sa13_degraded" name="sa13_degraded" compartment="default" initialAmount="0" boundaryCondition="true" charge="0" constant="true">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>DEGRADED</celldesigner:class>
+<celldesigner:name>sa13_degraded</celldesigner:name>
+</celldesigner:speciesIdentity>
+</annotation>
+</species>
+<species id="fgf8" name="fgf8" compartment="default" initialAmount="1" charge="0">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>RNA</celldesigner:class>
+<celldesigner:rnaReference>rn2</celldesigner:rnaReference>
+</celldesigner:speciesIdentity>
+</annotation>
+</species>
+<species id="FGF8" name="FGF8" compartment="default" initialAmount="1" charge="0">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr5</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</annotation>
+</species>
+<species id="sa15_degraded" name="sa15_degraded" compartment="default" initialAmount="0" boundaryCondition="true" charge="0" constant="true">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>DEGRADED</celldesigner:class>
+<celldesigner:name>sa15_degraded</celldesigner:name>
+</celldesigner:speciesIdentity>
+</annotation>
+</species>
+<species id="gene_fgf8" name="gene_fgf8" compartment="default" initialAmount="0" boundaryCondition="true" charge="0" constant="true">
+<annotation>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>GENE</celldesigner:class>
+<celldesigner:geneReference>gn1</celldesigner:geneReference>
+</celldesigner:speciesIdentity>
+</annotation>
+</species>
+</listOfSpecies>
+<listOfParameters>
+<parameter id="p" value="10"/>
+<parameter id="k1" value="1"/>
+<parameter id="k2" value="0.3"/>
+<parameter id="k3" value="0.3"/>
+<parameter id="k4" value="0.04"/>
+<parameter id="k9" value="0.1"/>
+<parameter id="k5" value="0.1"/>
+<parameter id="k6" value="0.08"/>
+<parameter id="k7" value="0.12"/>
+<parameter id="k8" value="0.2"/>
+<parameter id="k10" value="0.01"/>
+<parameter id="dfgf8" value="0.022"/>
+<parameter id="mama" value="1"/>
+</listOfParameters>
+<listOfReactions>
+<reaction id="re3" reversible="false" fast="false">
+<annotation>
+<celldesigner:reactionType>STATE_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="dummy1" alias="sa6">
+<celldesigner:linkAnchor position="S"/>
+</celldesigner:baseReactant>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="x1" alias="sa3">
+<celldesigner:linkAnchor position="N"/>
+</celldesigner:baseProduct>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+<celldesigner:listOfModification>
+<celldesigner:modification type="CATALYSIS" modifiers="X3" aliases="sa1" targetLineIndex="-1,0">
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:linkTarget species="X3" alias="sa1">
+<celldesigner:linkAnchor position="NW"/>
+</celldesigner:linkTarget>
+<celldesigner:line width="1.0" color="ff000000"/>
+</celldesigner:modification>
+</celldesigner:listOfModification>
+</annotation>
+<listOfReactants>
+<speciesReference species="dummy1">
+<annotation>
+<celldesigner:alias>sa6</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference species="x1">
+<annotation>
+<celldesigner:alias>sa3</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfProducts>
+<listOfModifiers>
+<modifierSpeciesReference species="X3">
+<annotation>
+<celldesigner:alias>sa1</celldesigner:alias>
+</annotation>
+</modifierSpeciesReference>
+</listOfModifiers>
+<kineticLaw>
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<apply>
+<divide/>
+<ci> k1 </ci>
+<apply>
+<plus/>
+<cn type="integer"> 1 </cn>
+<apply>
+<power/>
+<ci> X3 </ci>
+<ci> p </ci>
+</apply>
+</apply>
+</apply>
+</math>
+</kineticLaw>
+</reaction>
+<reaction id="re4" reversible="false" fast="false">
+<annotation>
+<celldesigner:reactionType>STATE_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="dummy2" alias="sa4">
+<celldesigner:linkAnchor position="ENE"/>
+</celldesigner:baseReactant>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="X2" alias="sa2">
+<celldesigner:linkAnchor position="SW"/>
+</celldesigner:baseProduct>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+<celldesigner:listOfModification>
+<celldesigner:modification type="CATALYSIS" modifiers="x1" aliases="sa3" targetLineIndex="-1,0">
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:linkTarget species="x1" alias="sa3">
+<celldesigner:linkAnchor position="S"/>
+</celldesigner:linkTarget>
+<celldesigner:line width="1.0" color="ff000000"/>
+</celldesigner:modification>
+</celldesigner:listOfModification>
+</annotation>
+<listOfReactants>
+<speciesReference species="dummy2">
+<annotation>
+<celldesigner:alias>sa4</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference species="X2">
+<annotation>
+<celldesigner:alias>sa2</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfProducts>
+<listOfModifiers>
+<modifierSpeciesReference species="x1">
+<annotation>
+<celldesigner:alias>sa3</celldesigner:alias>
+</annotation>
+</modifierSpeciesReference>
+</listOfModifiers>
+<kineticLaw>
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<apply>
+<times/>
+<ci> k2 </ci>
+<ci> x1 </ci>
+</apply>
+</math>
+</kineticLaw>
+</reaction>
+<reaction id="re6" reversible="false" fast="false">
+<annotation>
+<celldesigner:reactionType>UNKNOWN_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="dummy3" alias="sa5">
+<celldesigner:linkAnchor position="NW"/>
+</celldesigner:baseReactant>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="X3" alias="sa1">
+<celldesigner:linkAnchor position="E"/>
+</celldesigner:baseProduct>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+<celldesigner:listOfModification>
+<celldesigner:modification type="CATALYSIS" modifiers="X2" aliases="sa2" targetLineIndex="-1,0">
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:linkTarget species="X2" alias="sa2">
+<celldesigner:linkAnchor position="NNE"/>
+</celldesigner:linkTarget>
+<celldesigner:line width="1.0" color="ff000000"/>
+</celldesigner:modification>
+</celldesigner:listOfModification>
+</annotation>
+<listOfReactants>
+<speciesReference species="dummy3">
+<annotation>
+<celldesigner:alias>sa5</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference species="X3">
+<annotation>
+<celldesigner:alias>sa1</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfProducts>
+<listOfModifiers>
+<modifierSpeciesReference species="X2">
+<annotation>
+<celldesigner:alias>sa2</celldesigner:alias>
+</annotation>
+</modifierSpeciesReference>
+</listOfModifiers>
+<kineticLaw>
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<apply>
+<times/>
+<ci> k10 </ci>
+<ci> X2 </ci>
+</apply>
+</math>
+</kineticLaw>
+</reaction>
+<reaction id="re7" reversible="false" fast="false">
+<annotation>
+<celldesigner:reactionType>STATE_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="x1" alias="sa3"/>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="sa3_degraded" alias="sa7"/>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</annotation>
+<listOfReactants>
+<speciesReference species="x1">
+<annotation>
+<celldesigner:alias>sa3</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference species="sa3_degraded">
+<annotation>
+<celldesigner:alias>sa7</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfProducts>
+<kineticLaw>
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<apply>
+<times/>
+<apply>
+<plus/>
+<ci> k4 </ci>
+<apply>
+<times/>
+<cn> 0.16 </cn>
+<ci> FGF8 </ci>
+</apply>
+</apply>
+<ci> x1 </ci>
+</apply>
+</math>
+</kineticLaw>
+</reaction>
+<reaction id="re9" reversible="false" fast="false">
+<annotation>
+<celldesigner:reactionType>STATE_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="X2" alias="sa2"/>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="sa2_degraded" alias="sa9"/>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</annotation>
+<listOfReactants>
+<speciesReference species="X2">
+<annotation>
+<celldesigner:alias>sa2</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference species="sa2_degraded">
+<annotation>
+<celldesigner:alias>sa9</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfProducts>
+<kineticLaw>
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<apply>
+<times/>
+<apply>
+<plus/>
+<ci> k5 </ci>
+<apply>
+<times/>
+<cn> 0.1 </cn>
+<ci> FGF8 </ci>
+</apply>
+<ci> k8 </ci>
+</apply>
+<ci> X2 </ci>
+</apply>
+</math>
+</kineticLaw>
+</reaction>
+<reaction id="re10" reversible="false" fast="false">
+<annotation>
+<celldesigner:reactionType>STATE_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="X3" alias="sa1"/>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="sa1_degraded" alias="sa10"/>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</annotation>
+<listOfReactants>
+<speciesReference species="X3">
+<annotation>
+<celldesigner:alias>sa1</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference species="sa1_degraded">
+<annotation>
+<celldesigner:alias>sa10</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfProducts>
+<kineticLaw>
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<apply>
+<times/>
+<apply>
+<plus/>
+<ci> k6 </ci>
+<apply>
+<times/>
+<cn> 0.06 </cn>
+<ci> FGF8 </ci>
+</apply>
+</apply>
+<ci> X3 </ci>
+</apply>
+</math>
+</kineticLaw>
+</reaction>
+<reaction id="re12" reversible="false" fast="false">
+<annotation>
+<celldesigner:reactionType>STATE_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="X2bis" alias="sa13">
+<celldesigner:linkAnchor position="WNW"/>
+</celldesigner:baseReactant>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="X2" alias="sa2">
+<celldesigner:linkAnchor position="SSE"/>
+</celldesigner:baseProduct>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</annotation>
+<listOfReactants>
+<speciesReference species="X2bis">
+<annotation>
+<celldesigner:alias>sa13</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference species="X2">
+<annotation>
+<celldesigner:alias>sa2</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfProducts>
+<kineticLaw>
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<apply>
+<times/>
+<ci> k9 </ci>
+<ci> X2bis </ci>
+</apply>
+</math>
+</kineticLaw>
+</reaction>
+<reaction id="re13" reversible="false" fast="false">
+<annotation>
+<celldesigner:reactionType>STATE_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="X2bis" alias="sa13"/>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="sa13_degraded" alias="sa14"/>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</annotation>
+<listOfReactants>
+<speciesReference species="X2bis">
+<annotation>
+<celldesigner:alias>sa13</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference species="sa13_degraded">
+<annotation>
+<celldesigner:alias>sa14</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfProducts>
+<kineticLaw>
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<apply>
+<times/>
+<ci> k7 </ci>
+<ci> X2bis </ci>
+</apply>
+</math>
+</kineticLaw>
+</reaction>
+<reaction id="re14" reversible="false" fast="false">
+<annotation>
+<celldesigner:reactionType>STATE_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="X2" alias="sa2">
+<celldesigner:linkAnchor position="ENE"/>
+</celldesigner:baseReactant>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="X2bis" alias="sa13">
+<celldesigner:linkAnchor position="N"/>
+</celldesigner:baseProduct>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</annotation>
+<listOfReactants>
+<speciesReference species="X2">
+<annotation>
+<celldesigner:alias>sa2</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference species="X2bis">
+<annotation>
+<celldesigner:alias>sa13</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfProducts>
+<kineticLaw>
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<apply>
+<times/>
+<ci> k8 </ci>
+<ci> X2 </ci>
+</apply>
+</math>
+</kineticLaw>
+</reaction>
+<reaction id="re15" reversible="false" fast="false">
+<annotation>
+<celldesigner:reactionType>STATE_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="fgf8" alias="sa15"/>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="sa15_degraded" alias="sa16"/>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</annotation>
+<listOfReactants>
+<speciesReference species="fgf8">
+<annotation>
+<celldesigner:alias>sa15</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference species="sa15_degraded">
+<annotation>
+<celldesigner:alias>sa16</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfProducts>
+<kineticLaw>
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<apply>
+<times/>
+<ci> fgf8 </ci>
+<ci> dfgf8 </ci>
+</apply>
+</math>
+</kineticLaw>
+</reaction>
+<reaction id="re16" reversible="false" fast="false">
+<annotation>
+<celldesigner:reactionType>TRANSCRIPTIONAL_ACTIVATION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="gene_fgf8" alias="sa17">
+<celldesigner:linkAnchor position="E"/>
+</celldesigner:baseReactant>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="fgf8" alias="sa15">
+<celldesigner:linkAnchor position="W"/>
+</celldesigner:baseProduct>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</annotation>
+<listOfReactants>
+<speciesReference species="gene_fgf8">
+<annotation>
+<celldesigner:alias>sa17</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference species="fgf8">
+<annotation>
+<celldesigner:alias>sa15</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfProducts>
+<kineticLaw>
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<apply>
+<times/>
+<ci> mama </ci>
+<ci> dfgf8 </ci>
+</apply>
+</math>
+</kineticLaw>
+</reaction>
+<reaction id="re17" reversible="false" fast="false">
+<annotation>
+<celldesigner:reactionType>UNKNOWN_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="dummy3" alias="sa5">
+<celldesigner:linkAnchor position="W"/>
+</celldesigner:baseReactant>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="X3" alias="sa1">
+<celldesigner:linkAnchor position="SSE"/>
+</celldesigner:baseProduct>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+<celldesigner:listOfModification>
+<celldesigner:modification type="CATALYSIS" modifiers="X2bis" aliases="sa13" targetLineIndex="-1,0">
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:linkTarget species="X2bis" alias="sa13">
+<celldesigner:linkAnchor position="NNE"/>
+</celldesigner:linkTarget>
+<celldesigner:line width="1.0" color="ff000000"/>
+</celldesigner:modification>
+</celldesigner:listOfModification>
+</annotation>
+<listOfReactants>
+<speciesReference species="dummy3">
+<annotation>
+<celldesigner:alias>sa5</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference species="X3">
+<annotation>
+<celldesigner:alias>sa1</celldesigner:alias>
+</annotation>
+</speciesReference>
+</listOfProducts>
+<listOfModifiers>
+<modifierSpeciesReference species="X2bis">
+<annotation>
+<celldesigner:alias>sa13</celldesigner:alias>
+</annotation>
+</modifierSpeciesReference>
+</listOfModifiers>
+<kineticLaw>
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<apply>
+<times/>
+<ci> k3 </ci>
+<ci> X2bis </ci>
+</apply>
+</math>
+</kineticLaw>
+</reaction>
+</listOfReactions>
+</model>
+</sbml>
diff --git a/tutorial/MAPK-l2.xml b/tutorial/MAPK-l2.xml
new file mode 100644
index 0000000..e38bc93
--- /dev/null
+++ b/tutorial/MAPK-l2.xml
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level2" level="2" version="1">
+  <model id="oscillating_MAPK">
+    <listOfCompartments>
+      <compartment id="uVol" size="1"/>
+    </listOfCompartments>
+    <listOfSpecies>
+      <species id="MKKK" compartment="uVol" initialAmount="90"/>
+      <species id="MKKK_P" compartment="uVol" initialAmount="10"/>
+      <species id="MKK" compartment="uVol" initialAmount="280"/>
+      <species id="MKK_P" compartment="uVol" initialAmount="10"/>
+      <species id="MKK_PP" compartment="uVol" initialAmount="10"/>
+      <species id="MAPK" compartment="uVol" initialAmount="280"/>
+      <species id="MAPK_P" compartment="uVol" initialAmount="10"/>
+      <species id="MAPK_PP" compartment="uVol" initialAmount="10"/>
+    </listOfSpecies>
+    <listOfParameters>
+      <parameter id="V1" value="2.5"/>
+      <parameter id="Ki" value="9"/>
+      <parameter id="K1" value="10"/>
+    </listOfParameters>
+    <listOfReactions>
+      <reaction id="J0" reversible="false">
+        <listOfReactants>
+          <speciesReference species="MKKK"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="MKKK_P"/>
+        </listOfProducts>
+        <listOfModifiers>
+          <modifierSpeciesReference species="MAPK_PP"/>
+        </listOfModifiers>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <divide/>
+              <apply>
+                <times/>
+                <ci> V1 </ci>
+                <ci> MKKK </ci>
+              </apply>
+              <apply>
+                <times/>
+                <apply>
+                  <plus/>
+                  <cn type="integer"> 1 </cn>
+                  <apply>
+                    <power/>
+                    <apply>
+                      <divide/>
+                      <ci> MAPK_PP </ci>
+                      <ci> Ki </ci>
+                    </apply>
+                    <ci> n </ci>
+                  </apply>
+                </apply>
+                <apply>
+                  <plus/>
+                  <ci> K1 </ci>
+                  <ci> MKKK </ci>
+                </apply>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="n" value="1"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="J1" reversible="false">
+        <listOfReactants>
+          <speciesReference species="MKKK_P"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="MKKK"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <divide/>
+              <apply>
+                <times/>
+                <ci> V2 </ci>
+                <ci> MKKK_P </ci>
+              </apply>
+              <apply>
+                <plus/>
+                <ci> KK2 </ci>
+                <ci> MKKK_P </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="V2" value="0.25"/>
+            <parameter id="KK2" value="8"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="J2" reversible="false">
+        <listOfReactants>
+          <speciesReference species="MKK"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="MKK_P"/>
+        </listOfProducts>
+        <listOfModifiers>
+          <modifierSpeciesReference species="MKKK_P"/>
+        </listOfModifiers>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <divide/>
+              <apply>
+                <times/>
+                <ci> k3 </ci>
+                <ci> MKKK_P </ci>
+                <ci> MKK </ci>
+              </apply>
+              <apply>
+                <plus/>
+                <ci> KK3 </ci>
+                <ci> MKK </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k3" value="0.025"/>
+            <parameter id="KK3" value="15"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="J3" reversible="false">
+        <listOfReactants>
+          <speciesReference species="MKK_P"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="MKK_PP"/>
+        </listOfProducts>
+        <listOfModifiers>
+          <modifierSpeciesReference species="MKKK_P"/>
+        </listOfModifiers>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <divide/>
+              <apply>
+                <times/>
+                <ci> k4 </ci>
+                <ci> MKKK_P </ci>
+                <ci> MKK_P </ci>
+              </apply>
+              <apply>
+                <plus/>
+                <ci> KK4 </ci>
+                <ci> MKK_P </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k4" value="0.025"/>
+            <parameter id="KK4" value="15"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="J4" reversible="false">
+        <listOfReactants>
+          <speciesReference species="MKK_PP"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="MKK_P"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <divide/>
+              <apply>
+                <times/>
+                <ci> V5 </ci>
+                <ci> MKK_PP </ci>
+              </apply>
+              <apply>
+                <plus/>
+                <ci> KK5 </ci>
+                <ci> MKK_PP </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="V5" value="0.75"/>
+            <parameter id="KK5" value="15"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="J5" reversible="false">
+        <listOfReactants>
+          <speciesReference species="MKK_P"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="MKK"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <divide/>
+              <apply>
+                <times/>
+                <ci> V6 </ci>
+                <ci> MKK_P </ci>
+              </apply>
+              <apply>
+                <plus/>
+                <ci> KK6 </ci>
+                <ci> MKK_P </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="V6" value="0.75"/>
+            <parameter id="KK6" value="15"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="J6" reversible="false">
+        <listOfReactants>
+          <speciesReference species="MAPK"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="MAPK_P"/>
+        </listOfProducts>
+        <listOfModifiers>
+          <modifierSpeciesReference species="MKK_PP"/>
+        </listOfModifiers>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <divide/>
+              <apply>
+                <times/>
+                <ci> k7 </ci>
+                <ci> MKK_PP </ci>
+                <ci> MAPK </ci>
+              </apply>
+              <apply>
+                <plus/>
+                <ci> KK7 </ci>
+                <ci> MAPK </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k7" value="0.025"/>
+            <parameter id="KK7" value="15"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="J7" reversible="false">
+        <listOfReactants>
+          <speciesReference species="MAPK_P"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="MAPK_PP"/>
+        </listOfProducts>
+        <listOfModifiers>
+          <modifierSpeciesReference species="MKK_PP"/>
+        </listOfModifiers>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <divide/>
+              <apply>
+                <times/>
+                <ci> k8 </ci>
+                <ci> MKK_PP </ci>
+                <ci> MAPK_P </ci>
+              </apply>
+              <apply>
+                <plus/>
+                <ci> KK8 </ci>
+                <ci> MAPK_P </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="k8" value="0.025"/>
+            <parameter id="KK8" value="15"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="J8" reversible="false">
+        <listOfReactants>
+          <speciesReference species="MAPK_PP"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="MAPK_P"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <divide/>
+              <apply>
+                <times/>
+                <ci> V9 </ci>
+                <ci> MAPK_PP </ci>
+              </apply>
+              <apply>
+                <plus/>
+                <ci> KK9 </ci>
+                <ci> MAPK_PP </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="V9" value="0.5"/>
+            <parameter id="KK9" value="15"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+      <reaction id="J9" reversible="false">
+        <listOfReactants>
+          <speciesReference species="MAPK_P"/>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="MAPK"/>
+        </listOfProducts>
+        <kineticLaw>
+          <math xmlns="http://www.w3.org/1998/Math/MathML">
+            <apply>
+              <divide/>
+              <apply>
+                <times/>
+                <ci> V10 </ci>
+                <ci> MAPK_P </ci>
+              </apply>
+              <apply>
+                <plus/>
+                <ci> KK10 </ci>
+                <ci> MAPK_P </ci>
+              </apply>
+            </apply>
+          </math>
+          <listOfParameters>
+            <parameter id="V10" value="0.5"/>
+            <parameter id="KK10" value="15"/>
+          </listOfParameters>
+        </kineticLaw>
+      </reaction>
+    </listOfReactions>
+  </model>
+</sbml>
diff --git a/tutorial/MAPK.xml b/tutorial/MAPK.xml
new file mode 100644
index 0000000..ac6a908
--- /dev/null
+++ b/tutorial/MAPK.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns = "http://www.sbml.org/sbml/level1" level = "1" version = "1">
+<!-- This model has been slightly modified for testing purposes 
+     from a model obtained from http://sbml.org/models/.
+     The model has been published in
+     Kholodenko BN. Negative feedback and ultrasensitivity can bring 
+     about oscillations in the mitogen-activated protein kinase cascades. 
+     Eur. J. Biochem. 267: 1583-1588 (2000). -->
+   <model name = "oscillating_MAPK">
+      <listOfCompartments>
+         <compartment name = "uVol" volume = "1"/>
+      </listOfCompartments>
+      <listOfSpecies>
+         <specie name = "MKKK" boundaryCondition = "false" initialAmount = "90" compartment = "uVol"/>
+         <specie name = "MKKK_P" boundaryCondition = "false" initialAmount = "10" compartment = "uVol"/>
+         <specie name = "MKK" boundaryCondition = "false" initialAmount = "280" compartment = "uVol"/>
+         <specie name = "MKK_P" boundaryCondition = "false" initialAmount = "10" compartment = "uVol"/>
+         <specie name = "MKK_PP" boundaryCondition = "false" initialAmount = "10" compartment = "uVol"/>
+         <specie name = "MAPK" boundaryCondition = "false" initialAmount = "280" compartment = "uVol"/>
+         <specie name = "MAPK_P" boundaryCondition = "false" initialAmount = "10" compartment = "uVol"/>
+         <specie name = "MAPK_PP" boundaryCondition = "false" initialAmount = "10" compartment = "uVol"/>
+      </listOfSpecies>
+      <listOfParameters>
+                  <parameter name = "V1" value = "2.5"/>
+                  <parameter name = "Ki" value = "9"/>
+                   <parameter name = "K1" value = "10"/>
+       </listOfParameters>
+       <listOfReactions>
+         <reaction name = "J0" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MKKK" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MKKK_P" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "V1*MKKK/((1+(MAPK_PP/Ki)^n)*(K1+MKKK))">
+                <listOfParameters>
+                     <parameter name = "n" value = "1"/>
+                </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J1" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MKKK_P" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MKKK" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "V2*MKKK_P/(KK2+MKKK_P)">
+               <listOfParameters>
+                  <parameter name = "V2" value = "0.25"/>
+                  <parameter name = "KK2" value = "8"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J2" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MKK" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MKK_P" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "k3*MKKK_P*MKK/(KK3+MKK)">
+               <listOfParameters>
+                  <parameter name = "k3" value = "0.025"/>
+                  <parameter name = "KK3" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J3" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MKK_P" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MKK_PP" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "k4*MKKK_P*MKK_P/(KK4+MKK_P)">
+               <listOfParameters>
+                  <parameter name = "k4" value = "0.025"/>
+                  <parameter name = "KK4" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J4" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MKK_PP" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MKK_P" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "V5*MKK_PP/(KK5+MKK_PP)">
+               <listOfParameters>
+                  <parameter name = "V5" value = "0.75"/>
+                  <parameter name = "KK5" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J5" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MKK_P" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MKK" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "V6*MKK_P/(KK6+MKK_P)">
+               <listOfParameters>
+                  <parameter name = "V6" value = "0.75"/>
+                  <parameter name = "KK6" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J6" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MAPK" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MAPK_P" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "k7*MKK_PP*MAPK/(KK7+MAPK)">
+               <listOfParameters>
+                  <parameter name = "k7" value = "0.025"/>
+                  <parameter name = "KK7" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J7" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MAPK_P" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MAPK_PP" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "k8*MKK_PP*MAPK_P/(KK8+MAPK_P)">
+               <listOfParameters>
+                  <parameter name = "k8" value = "0.025"/>
+                  <parameter name = "KK8" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J8" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MAPK_PP" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MAPK_P" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "V9*MAPK_PP/(KK9+MAPK_PP)">
+               <listOfParameters>
+                  <parameter name = "V9" value = "0.5"/>
+                  <parameter name = "KK9" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+         <reaction name = "J9" reversible = "false">
+            <listOfReactants>
+               <specieReference specie = "MAPK_P" stoichiometry = "1"/>
+            </listOfReactants>
+            <listOfProducts>
+               <specieReference specie = "MAPK" stoichiometry = "1"/>
+            </listOfProducts>
+            <kineticLaw formula = "V10*MAPK_P/(KK10+MAPK_P)">
+               <listOfParameters>
+                  <parameter name = "V10" value = "0.5"/>
+                  <parameter name = "KK10" value = "15"/>
+               </listOfParameters>
+            </kineticLaw>
+         </reaction>
+      </listOfReactions>
+   </model>
+</sbml>
diff --git a/tutorial/Makefile.am b/tutorial/Makefile.am
new file mode 100644
index 0000000..75847d8
--- /dev/null
+++ b/tutorial/Makefile.am
@@ -0,0 +1,33 @@
+## 
+## This library is free software; you can redistribute it and/or modify it
+## under the terms of the GNU Lesser General Public License as published
+## by the Free Software Foundation; either version 2.1 of the License, or
+## any later version.
+## 
+## This library 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. The software and
+## documentation provided hereunder is on an "as is" basis, and the
+## authors have no obligations to provide maintenance, support,
+## updates, enhancements or modifications.  In no event shall the
+## authors be liable to any party for direct, indirect, special,
+## incidental or consequential damages, including lost profits, arising
+## out of the use of this software and its documentation, even if the
+## authors have been advised of the possibility of such damage.  See
+## the GNU Lesser General Public License for more details.
+## 
+## You should have received a copy of the GNU Lesser General Public License
+## along with this library; if not, write to the Free Software Foundation,
+## Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+## 
+AM_CPPFLAGS = -I$(srcdir)/../src @SBML_CPPFLAGS@ @SUNDIALS_CPPFLAGS@
+AM_CFLAGS = -Wno-unknown-pragmas -Wall -Wextra -ansi -std=iso9899:1990
+AM_LDFLAGS = @SBML_LDFLAGS@ @SUNDIALS_LDFLAGS@ @GRACE_LDFLAGS@ @GRAPHVIZ_LDFLAGS@
+LDADD = ../src/libODES.la @SBML_LIBS@ @SUNDIALS_LIBS@ @GRACE_LIBS@ @GRAPHVIZ_LIBS@
+
+noinst_PROGRAMS = evaluateast integrate integratorinstance odemodel setvariablevalue
+evaluateast_SOURCES = evaluateast.c
+integrate_SOURCES = integrate.c
+integratorinstance_SOURCES = integratorinstance.c
+odemodel_SOURCES = odemodel.c
+setvariablevalue_SOURCES = setvariablevalue.c
diff --git a/tutorial/evaluateast.c b/tutorial/evaluateast.c
new file mode 100644
index 0000000..d0741f3
--- /dev/null
+++ b/tutorial/evaluateast.c
@@ -0,0 +1,81 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2007-09-28 15:27:26 raim>
+  $Id: evaluateast.c,v 1.1 2007/09/28 13:29:25 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/processAST.h>
+#include <sbmlsolver/solverError.h>
+
+int main (void)
+{
+  cvodeSettings_t *options = CvodeSettings_createWithTime(10000, 1000);
+  odeModel_t *odemodel = ODEModel_createFromFile("MAPK.xml");
+  integratorInstance_t *ii = IntegratorInstance_create(odemodel, options);
+
+  ASTNode_t *f = SBML_parseFormula("MAPK_PP");  
+  ASTNode_t *f2 = SBML_parseFormula("MAPK + MAPK_P");  
+  ASTNode_t *f3 = SBML_parseFormula("MAPK + MAPK_P + MAPK_PP");  
+  cvodeData_t *data = IntegratorInstance_getData(ii);
+  
+  while( ! IntegratorInstance_timeCourseCompleted(ii) )
+    if ( IntegratorInstance_integrateOneStep(ii ) )
+    {
+      printf("  active MAPK concentration at time %g:\t%7.3f\n",
+	     IntegratorInstance_getTime(ii), evaluateAST(f, data));
+      printf("inactive MAPK concentration at time %g:\t%7.3f\n",
+	     IntegratorInstance_getTime(ii), evaluateAST(f2, data));
+      printf("                                    total:\t%7.3f\n\n",
+	     evaluateAST(f3, data));
+    }
+    else
+      break;
+  SolverError_dump();
+  IntegratorInstance_free(ii);
+  ODEModel_free(odemodel);
+  CvodeSettings_free(options);
+  ASTNode_free(f);
+  ASTNode_free(f2);
+  ASTNode_free(f3);
+  
+  return (EXIT_SUCCESS);  
+}
+
+
+/* End of file */
diff --git a/tutorial/integrate.c b/tutorial/integrate.c
new file mode 100644
index 0000000..e4fb168
--- /dev/null
+++ b/tutorial/integrate.c
@@ -0,0 +1,76 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2007-09-28 14:01:29 raim>
+  $Id: integrate.c,v 1.1 2007/09/28 13:14:16 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/solverError.h>
+
+
+int main (void)
+{
+  SBMLReader_t *sr = SBMLReader_create();
+  SBMLDocument_t *d = SBMLReader_readSBML(sr, "MAPK-l2.xml");
+  Model_t *sbml = SBMLDocument_getModel(d);
+  SBMLReader_free(sr);
+
+  int i;
+  Species_t *species = Model_getSpeciesById(sbml, "MAPK_PP");
+  
+  cvodeSettings_t *options = CvodeSettings_createWithTime(10000, 1000);
+  /* WARNING: sbml model must be SBML Level 2 */
+  SBMLResults_t *results = Model_odeSolver(sbml, options);
+  if ( results != NULL )
+  {
+    timeCourse_t *timecourse = Species_getTimeCourse(species, results);
+    for ( i=0; i<TimeCourse_getNumValues(timecourse); i++ )
+      printf("%g\n", TimeCourse_getValue(timecourse, i));
+  }
+  SolverError_dumpAndClearErrors();
+  SBMLResults_free(results);
+  CvodeSettings_free(options);
+
+  SBMLDocument_free(d);
+
+  return (EXIT_SUCCESS);  
+}
+
+
+
+/* End of file */
diff --git a/tutorial/integrate.pl b/tutorial/integrate.pl
new file mode 100755
index 0000000..fb7a1fb
--- /dev/null
+++ b/tutorial/integrate.pl
@@ -0,0 +1,85 @@
+#!/usr/bin/perl
+# -*-Perl-*-
+# Last changed Time-stamp: <2007-09-28 14:49:23 xtof>
+# $Id: integrate.pl,v 1.1 2007/09/28 13:14:16 raimc Exp $
+
+use Getopt::Long;
+use Pod::Usage;
+
+use ODES;
+use LibSBML;
+use warnings;
+use vars qw/$TIME $STEPS $SBMLFILE/;
+use strict;
+
+# defaults for global var(s)
+$TIME  = 10000;
+$STEPS = 100;
+$SBMLFILE = undef;
+
+# process command-line options
+pod2usage(-verbose => 0)
+    unless GetOptions("steps=i" => \$STEPS,
+		      "time=f"  => \$TIME,
+		      "man"     => sub{pod2usage(-verbose => 2)},
+		      "help"    => sub{pod2usage(-verbose => 1)});
+
+# read SBML-filename
+$SBMLFILE = shift();
+do {
+  print STDERR "Error: No SBML filename specified\n";
+  pod2usage(-verbose => 0)
+} unless defined $SBMLFILE;
+
+# use LibSBML functions to parse the SBML file
+my $rd = new LibSBML::SBMLReader;
+my $d  = $rd->readSBML($SBMLFILE);
+
+# set global integration behaviour
+my $settings = ODES::CvodeSettings_create();
+$settings->CvodeSettings_setTime($TIME, $STEPS);
+
+# integrate the model
+my $results = ODES::SBML_odeSolver($d, $settings);
+
+# print timecourse to STDOUT
+$results->SBMLResults_dumpSpecies();
+
+##################################################
+
+=head1 NAME
+
+integrate.pl - integrate a SBML model
+
+=head1 SYNOPSIS
+
+integrate.pl [[-time I<FLT>] [-steps I<INT>]] SBML-filename
+
+=head1 DESCRIPTION
+
+The program takes a SBML file as input and dumps the timecourse of the
+species to I<STDOUT>
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-time> I<FLT>
+
+Set integration endtime to I<FLT> (default: 10000)
+
+=item B<-steps> I<INT>
+
+Set output printsteps to I<INT> (default: 100)
+
+=head1 AUTHORS
+
+Christoph Flamm, Rainer Machne
+
+=head1 BUGS
+
+Please send comments and bug reports to {xtof,raim}@tbi.univie.ac.at
+
+=cut
+
+__END__
diff --git a/tutorial/integrateODES.pl b/tutorial/integrateODES.pl
new file mode 100755
index 0000000..ac89704
--- /dev/null
+++ b/tutorial/integrateODES.pl
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+# -*-Perl-*-
+# Last changed Time-stamp: <2007-09-26 16:23:22 xtof>
+# $Id: integrateODES.pl,v 1.1 2007/09/28 13:14:16 raimc Exp $
+
+use ODES;
+use LibSBML;
+use strict;
+
+#my $ode0 = 'a-(b+1)*u+v*u^2'; # u'
+#my $ode1 = 'b*u-v*u^2';       # v'
+#my @x  = qw/u v a b/;
+#my @x0 = (1.0, 1.5, 1.0, 1.5);
+
+my $ode0 = '((150.0 * (3.8 - (p * D_cy) - (p * C_cy)) * (1.0 - (p * C_cy))) - (9.0 * C_cy))';
+my $ode1 = '(3.8 - (3.0 * D_cy) - (p * D_cy) - (p * C_cy))';
+
+# use LibSBML function to convert the formula into
+# an abstract syntax tree (AST) representation
+my $astA = LibSBML::parseFormula($ode0);
+my $astB = LibSBML::parseFormula($ode1);
+my @AST = ($astA, $astB);
+my $neq = scalar @AST;
+my @x = qw/C_cy D_cy p/;
+my @x0 = (0.0, 9.0, 0.2);
+
+my $om = ODES::ODEModel_createFromODEs(\@AST, 2, 0, 1, \@x, \@x0, undef);
+
+my $settings = ODES::CvodeSettings_create();
+$settings->CvodeSettings_setTime(0.5, 10);
+$settings->CvodeSettings_setSensitivity(1);
+
+my $ii = ODES::IntegratorInstance_create($om, $settings);
+
+while( ! $ii->IntegratorInstance_timeCourseCompleted() ) {
+  if ( ! $ii->IntegratorInstance_integrateOneStep() ) {
+    ODES::SolverError_dump();
+    last;
+  }
+  else {
+    $ii->IntegratorInstance_dumpData();
+  }
+}
+
+my $vi = $om->ODEModel_getVariableIndex('C_cy');
+
+printf "\nVariable %s has final value of %g at time %g\n\n",
+         $om->ODEModel_getVariableName($vi),
+         $ii->IntegratorInstance_getVariableValue($vi),
+         $ii->IntegratorInstance_getTime();
+
+$vi->VariableIndex_free();
+
+$vi = $om->ODEModel_getVariableIndex('p');
+
+printf "Sensitivies to %s:\n",
+    $om->ODEModel_getVariableName($vi);
+
+$ii->IntegratorInstance_dumpPSensitivities($vi);
+print "\n";
+
+$om->ODEModel_free();
+$settings->CvodeSettings_free();
+$vi->VariableIndex_free();
+
+#---
+sub substitute_params {
+  my ($eq, $params) = @_;
+  for my $key (keys %$params) {
+    $eq =~ s/$key/$params->{$key}/g;
+  }
+
+  return $eq;
+}
+
+__END__
+my $sbmlfile = '../../examples/MAPK.xml';
+
+my $rd = new LibSBML::SBMLReader;
+my $d  = $rd->readSBML($sbmlfile);
+
+my $settings = ODES::CvodeSettings_create();
+$settings->CvodeSettings_setTime(10000, 100);
+
+my $results = ODES::SBML_odeSolver($d, $settings);
+
+$results->SBMLResults_dump();
+
diff --git a/tutorial/integratorinstance.c b/tutorial/integratorinstance.c
new file mode 100644
index 0000000..4f2c0cc
--- /dev/null
+++ b/tutorial/integratorinstance.c
@@ -0,0 +1,71 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2007-09-28 14:15:50 raim>
+  $Id: integratorinstance.c,v 1.1 2007/09/28 13:14:16 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/solverError.h>
+
+int main (void)
+{
+  cvodeSettings_t *options = CvodeSettings_createWithTime(10000, 1000);
+  odeModel_t *odemodel = ODEModel_createFromFile("MAPK.xml");
+  variableIndex_t *vi = ODEModel_getVariableIndex(odemodel, "MAPK_PP");
+  
+  integratorInstance_t *ii = IntegratorInstance_create(odemodel, options);
+  printf("# Time Course for variable %s \n",
+	 ODEModel_getVariableName(odemodel, vi));
+  
+  while( ! IntegratorInstance_timeCourseCompleted(ii) )
+    if ( IntegratorInstance_integrateOneStep(ii ) )
+      printf("%g %g\n", IntegratorInstance_getTime(ii),
+	     IntegratorInstance_getVariableValue(ii, vi));
+    else
+      break;
+  SolverError_dump();
+  VariableIndex_free(vi);
+  IntegratorInstance_free(ii);
+  ODEModel_free(odemodel);
+  CvodeSettings_free(options);
+
+  return (EXIT_SUCCESS);  
+}
+
+
+/* End of file */
diff --git a/tutorial/odemodel.c b/tutorial/odemodel.c
new file mode 100644
index 0000000..03999b0
--- /dev/null
+++ b/tutorial/odemodel.c
@@ -0,0 +1,62 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2007-09-29 20:54:18 raim>
+  $Id: odemodel.c,v 1.3 2007/09/29 18:57:31 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/odeSolver.h>
+
+int main (void)
+{
+  odeModel_t *odemodel = ODEModel_createFromFile("MAPK.xml");
+  variableIndex_t *vi = ODEModel_getVariableIndex(odemodel, "MAPK_PP");
+  
+  const ASTNode_t *ode = ODEModel_getOde(odemodel, vi);
+  char *equation = SBML_formulaToString(ode); 
+  printf("d(%s)/dt = %s\n", ODEModel_getVariableName(odemodel, vi), equation);
+
+  ODEModel_free(odemodel);
+  VariableIndex_free(vi);
+  free(equation);
+  
+  return (EXIT_SUCCESS);  
+}
+
+
+
+/* End of file */
diff --git a/tutorial/setvariablevalue.c b/tutorial/setvariablevalue.c
new file mode 100644
index 0000000..a86fc8d
--- /dev/null
+++ b/tutorial/setvariablevalue.c
@@ -0,0 +1,92 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+  Last changed Time-stamp: <2007-09-28 14:51:37 raim>
+  $Id: setvariablevalue.c,v 1.1 2007/09/28 13:14:16 raimc Exp $
+*/
+/* 
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * any later version.
+ *
+ * This library 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. The software and
+ * documentation provided hereunder is on an "as is" basis, and the
+ * authors have no obligations to provide maintenance, support,
+ * updates, enhancements or modifications.  In no event shall the
+ * authors be liable to any party for direct, indirect, special,
+ * incidental or consequential damages, including lost profits, arising
+ * out of the use of this software and its documentation, even if the
+ * authors have been advised of the possibility of such damage.  See
+ * the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ *
+ * The original code contained here was initially developed by:
+ *
+ *     Rainer Machne, Camille Stephan-Otto Attolini
+ *
+ * Contributor(s):
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/solverError.h>
+
+int main (void)
+{
+  int i;
+  cvodeSettings_t *options = CvodeSettings_createWithTime(0.1, 1000);  
+  odeModel_t *odemodel = ODEModel_createFromFile("Goodwin_SomoS.xml");
+
+  variableIndex_t *vi1 = ODEModel_getVariableIndex(odemodel, "mama");
+  variableIndex_t *vi2 = ODEModel_getVariableIndex(odemodel, "fgf8");
+  variableIndex_t *vi3 = ODEModel_getVariableIndex(odemodel, "FGF8");
+
+  CvodeSettings_setIndefinitely(options, 1); /* integrate forever! */
+  CvodeSettings_setTStop(options, 1);        /* RECOMMENDED! */
+  CvodeSettings_setErrors(options, 1e-5, 1e-3, 1e4);
+  
+  integratorInstance_t *ii_1 = IntegratorInstance_create(odemodel, options);
+  integratorInstance_t *ii_2 = IntegratorInstance_create(odemodel, options);
+
+  /* change a parameter, the `mama cell flag`
+     in one of the integrators */
+  IntegratorInstance_setVariableValue(ii_1, vi1, 0);
+  
+  for( i=0; i<3000; i++ )
+  {
+    /* now use the value from one integrator, to set
+       the value in the other integrator */
+    IntegratorInstance_setVariableValue(ii_2, vi3,
+	IntegratorInstance_getVariableValue(ii_1, vi2));
+
+    /* integrate both integrators */
+    IntegratorInstance_integrateOneStep(ii_1);
+    IntegratorInstance_integrateOneStep(ii_2);
+    /* write out all data, first column is time */
+    IntegratorInstance_dumpData(ii_2);    
+  }
+  
+  SolverError_dump();
+  VariableIndex_free(vi1);
+  VariableIndex_free(vi2);
+  VariableIndex_free(vi3);
+  IntegratorInstance_free(ii_1);
+  IntegratorInstance_free(ii_2);  
+  ODEModel_free(odemodel);
+  CvodeSettings_free(options);
+  return (EXIT_SUCCESS);  
+}
+
+
+/* End of file */
diff --git a/unittest/Makefile.am b/unittest/Makefile.am
new file mode 100644
index 0000000..bba9ed1
--- /dev/null
+++ b/unittest/Makefile.am
@@ -0,0 +1,41 @@
+TESTS = unittest
+
+noinst_PROGRAMS = unittest
+
+unittest_CPPFLAGS = -DEXAMPLES=$(srcdir)/../examples \
+                    -I$(srcdir)/../src \
+                    @SUNDIALS_CPPFLAGS@ \
+                    @SBML_CPPFLAGS@
+unittest_CFLAGS = -Wno-unknown-pragmas -Wall -Wextra -ansi -std=iso9899:1990 \
+                  @CHECK_CFLAGS@
+unittest_LDFLAGS = @GRAPHVIZ_RPATH@ @GRACE_RPATH@ @SBML_RPATH@ \
+                   @SUNDIALS_LDFLAGS@ \
+                   @SBML_LDFLAGS@ \
+                   @GRACE_LDFLAGS@ \
+                   @GRAPHVIZ_LDFLAGS@
+unittest_LDADD = @CHECK_LIBS@ \
+                 ../src/libODES.la \
+                 @SUNDIALS_LIBS@ \
+                 @SBML_LIBS@ \
+                 @GRACE_LIBS@ \
+                 @GRAPHVIZ_LIBS@
+unittest_SOURCES = main.c \
+                   test_ASTIndexNameNode.c \
+                   test_charBuffer.c \
+                   test_cvodeData.c \
+                   test_cvodeSolver.c \
+                   test_daeSolver.c \
+                   test_integratorInstance.c \
+                   test_integratorSettings.c \
+                   test_interpol.c \
+                   test_modelSimplify.c \
+                   test_nullSolver.c \
+                   test_odeConstruct.c \
+                   test_odeModel.c \
+                   test_odeSolver.c \
+                   test_processAST.c \
+                   test_sbml.c \
+                   test_sbmlResults.c \
+                   test_sensSolver.c \
+                   test_solverError.c \
+                   test_util.c
diff --git a/unittest/main.c b/unittest/main.c
new file mode 100644
index 0000000..9962b32
--- /dev/null
+++ b/unittest/main.c
@@ -0,0 +1,41 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+static Suite *create_root_suite(void)
+{
+	return suite_create("root");
+}
+
+int main(void)
+{
+	SRunner *sr;
+	int n;
+
+	sr = srunner_create(create_root_suite());
+	if (!sr) return EXIT_FAILURE;
+
+	srunner_add_suite(sr, create_suite_ASTIndexNameNode());
+	srunner_add_suite(sr, create_suite_charBuffer());
+	srunner_add_suite(sr, create_suite_cvodeData());
+	srunner_add_suite(sr, create_suite_cvodeSolver());
+	srunner_add_suite(sr, create_suite_daeSolver());
+	srunner_add_suite(sr, create_suite_integratorInstance());
+	srunner_add_suite(sr, create_suite_integratorSettings());
+	srunner_add_suite(sr, create_suite_interpol());
+	srunner_add_suite(sr, create_suite_modelSimplify());
+	srunner_add_suite(sr, create_suite_nullSolver());
+	srunner_add_suite(sr, create_suite_odeConstruct());
+	srunner_add_suite(sr, create_suite_odeModel());
+	srunner_add_suite(sr, create_suite_odeSolver());
+	srunner_add_suite(sr, create_suite_processAST());
+	srunner_add_suite(sr, create_suite_sbml());
+	srunner_add_suite(sr, create_suite_sbmlResults());
+	srunner_add_suite(sr, create_suite_sensSolver());
+	srunner_add_suite(sr, create_suite_solverError());
+	srunner_add_suite(sr, create_suite_util());
+
+	srunner_run_all(sr, CK_ENV);
+	n = srunner_ntests_failed(sr);
+	srunner_free(sr);
+	return (n == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
diff --git a/unittest/test_ASTIndexNameNode.c b/unittest/test_ASTIndexNameNode.c
new file mode 100644
index 0000000..b382d2b
--- /dev/null
+++ b/unittest/test_ASTIndexNameNode.c
@@ -0,0 +1,75 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/ASTIndexNameNode.h>
+
+/* test cases */
+START_TEST(test_ASTNode_createIndexName)
+{
+	ASTNode_t *node;
+
+	node = ASTNode_createIndexName();
+	ck_assert(node != NULL);
+	ck_assert(ASTNode_isIndexName(node));
+	ASTNode_free(node);
+}
+END_TEST
+
+START_TEST(test_ASTNode_setIndex)
+{
+	ASTNode_t *node;
+	unsigned int i;
+
+	node = ASTNode_createIndexName();
+	ck_assert(node != NULL);
+	i = ASTNode_getIndex(node);
+	ck_assert(i == 0);
+	ck_assert(!ASTNode_isSetIndex(node));
+	ASTNode_setIndex(node, 100);
+	i = ASTNode_getIndex(node);
+	ck_assert(i == 100);
+	ck_assert(ASTNode_isSetIndex(node));
+	ASTNode_free(node);
+}
+END_TEST
+
+START_TEST(test_ASTNode_setData)
+{
+	ASTNode_t *node;
+	unsigned int i;
+
+	node = ASTNode_createIndexName();
+	ck_assert(node != NULL);
+	i = ASTNode_isSetData(node);
+	ck_assert(i == 0);
+	ASTNode_setData(node);
+	i = ASTNode_isSetData(node);
+	ck_assert(i == 1);
+	ASTNode_free(node);
+}
+END_TEST
+
+/* public */
+Suite *create_suite_ASTIndexNameNode(void)
+{
+	Suite *s;
+	TCase *tc_ASTNode_createIndexName;
+	TCase *tc_ASTNode_setIndex;
+	TCase *tc_ASTNode_setData;
+
+	s = suite_create("ASTIndexNameNode");
+
+	tc_ASTNode_createIndexName = tcase_create("ASTNode_createIndexName");
+	tcase_add_test(tc_ASTNode_createIndexName, test_ASTNode_createIndexName);
+	suite_add_tcase(s, tc_ASTNode_createIndexName);
+
+	tc_ASTNode_setIndex = tcase_create("ASTNode_setIndex");
+	tcase_add_test(tc_ASTNode_setIndex, test_ASTNode_setIndex);
+	suite_add_tcase(s, tc_ASTNode_setIndex);
+
+	tc_ASTNode_setData = tcase_create("ASTNode_setData");
+	tcase_add_test(tc_ASTNode_setData, test_ASTNode_setData);
+	suite_add_tcase(s, tc_ASTNode_setData);
+
+	return s;
+}
diff --git a/unittest/test_charBuffer.c b/unittest/test_charBuffer.c
new file mode 100644
index 0000000..863d215
--- /dev/null
+++ b/unittest/test_charBuffer.c
@@ -0,0 +1,121 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/charBuffer.h>
+
+/* test cases */
+START_TEST(test_CharBuffer_create)
+{
+  charBuffer_t *cb;
+  const char *b;
+
+  cb = CharBuffer_create();
+  b = CharBuffer_getBuffer(cb);
+  ck_assert(b != NULL);
+  ck_assert_str_eq(b, "");
+  CharBuffer_free(cb);
+}
+END_TEST
+
+START_TEST(test_CharBuffer_free)
+{
+  CharBuffer_free(NULL); /* deleting NULL is safe */
+}
+END_TEST
+
+START_TEST(test_CharBuffer_append)
+{
+  charBuffer_t *cb;
+  const char *b;
+
+  cb = CharBuffer_create();
+  CharBuffer_append(cb, "abc");
+  b = CharBuffer_getBuffer(cb);
+  ck_assert(b != NULL);
+  ck_assert_str_eq(b, "abc");
+  CharBuffer_append(cb, "def");
+  b = CharBuffer_getBuffer(cb);
+  ck_assert(b != NULL);
+  ck_assert_str_eq(b, "abcdef");
+  CharBuffer_free(cb);
+}
+END_TEST
+
+START_TEST(test_CharBuffer_appendInt)
+{
+  charBuffer_t *cb;
+  const char *b;
+
+  cb = CharBuffer_create();
+  CharBuffer_appendInt(cb, 0);
+  b = CharBuffer_getBuffer(cb);
+  ck_assert(b != NULL);
+  ck_assert_str_eq(b, "0");
+  CharBuffer_appendInt(cb, -1);
+  b = CharBuffer_getBuffer(cb);
+  ck_assert(b != NULL);
+  ck_assert_str_eq(b, "0-1");
+  CharBuffer_appendInt(cb, 9999);
+  b = CharBuffer_getBuffer(cb);
+  ck_assert(b != NULL);
+  ck_assert_str_eq(b, "0-19999");
+  CharBuffer_free(cb);
+}
+END_TEST
+
+START_TEST(test_CharBuffer_appendDouble)
+{
+  charBuffer_t *cb;
+  const char *b;
+
+  cb = CharBuffer_create();
+  CharBuffer_appendDouble(cb, 0.0);
+  b = CharBuffer_getBuffer(cb);
+  ck_assert(b != NULL);
+  ck_assert_str_eq(b, "0");
+  CharBuffer_appendDouble(cb, -1.0);
+  b = CharBuffer_getBuffer(cb);
+  ck_assert(b != NULL);
+  ck_assert_str_eq(b, "0-1");
+  CharBuffer_appendDouble(cb, 2.5e-1);
+  b = CharBuffer_getBuffer(cb);
+  ck_assert(b != NULL);
+  ck_assert_str_eq(b, "0-10.25");
+  CharBuffer_free(cb);
+}
+END_TEST
+
+/* public */
+Suite *create_suite_charBuffer(void)
+{
+  Suite *s;
+  TCase *tc_CharBuffer_create;
+  TCase *tc_CharBuffer_free;
+  TCase *tc_CharBuffer_append;
+  TCase *tc_CharBuffer_appendInt;
+  TCase *tc_CharBuffer_appendDouble;
+
+  s = suite_create("charBuffer");
+
+  tc_CharBuffer_create = tcase_create("CharBuffer_create");
+  tcase_add_test(tc_CharBuffer_create, test_CharBuffer_create);
+  suite_add_tcase(s, tc_CharBuffer_create);
+
+  tc_CharBuffer_free = tcase_create("CharBuffer_free");
+  tcase_add_test(tc_CharBuffer_free, test_CharBuffer_free);
+  suite_add_tcase(s, tc_CharBuffer_free);
+
+  tc_CharBuffer_append = tcase_create("CharBuffer_append");
+  tcase_add_test(tc_CharBuffer_append, test_CharBuffer_append);
+  suite_add_tcase(s, tc_CharBuffer_append);
+
+  tc_CharBuffer_appendInt = tcase_create("CharBuffer_appendInt");
+  tcase_add_test(tc_CharBuffer_appendInt, test_CharBuffer_appendInt);
+  suite_add_tcase(s, tc_CharBuffer_appendInt);
+
+  tc_CharBuffer_appendDouble = tcase_create("CharBuffer_appendDouble");
+  tcase_add_test(tc_CharBuffer_appendDouble, test_CharBuffer_appendDouble);
+  suite_add_tcase(s, tc_CharBuffer_appendDouble);
+
+  return s;
+}
diff --git a/unittest/test_cvodeData.c b/unittest/test_cvodeData.c
new file mode 100644
index 0000000..19a72ef
--- /dev/null
+++ b/unittest/test_cvodeData.c
@@ -0,0 +1,315 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/cvodeData.h>
+
+/* fixtures */
+static odeModel_t *model;
+
+static cvodeResults_t *cr;
+
+static void teardown_model(void)
+{
+  ODEModel_free(model);
+}
+
+static void setup_cr(void)
+{
+  cr = calloc(1, sizeof(*cr));
+}
+
+static void teardown_cr(void)
+{
+  CvodeResults_free(cr);
+}
+
+/* test cases */
+START_TEST(test_CvodeData_create)
+{
+  cvodeData_t *cd;
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+  cd = CvodeData_create(model);
+  ck_assert(cd != NULL);
+  ck_assert_int_eq(cd->nvalues, model->neq + model->nconst + model->nass);
+  ck_assert_int_eq(cd->neq, model->neq);
+  ck_assert_int_eq(cd->nevents, model->nevents);
+  ck_assert(cd->model == model);
+  ck_assert_int_eq(cd->allRulesUpdated, 0);
+  CvodeData_free(cd);
+}
+END_TEST
+
+START_TEST(test_CvodeData_free)
+{
+  CvodeData_free(NULL); /* freeing NULL is safe */
+}
+END_TEST
+
+START_TEST(test_CvodeData_initializeValues)
+{
+  cvodeData_t *cd;
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+  cd = CvodeData_create(model);
+  CvodeData_initializeValues(cd);
+  ck_assert_int_eq(cd->allRulesUpdated, 1);
+  CvodeData_free(cd);
+}
+END_TEST
+
+START_TEST(test_CvodeData_initialize)
+{
+  cvodeData_t *cd;
+  cvodeSettings_t *cs;
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+  cd = CvodeData_create(model);
+  cs = CvodeSettings_create();
+  CvodeData_initialize(cd, cs, model, 0);
+  ck_assert_int_eq(cd->allRulesUpdated, 1);
+  CvodeSettings_free(cs);
+  CvodeData_free(cd);
+}
+END_TEST
+
+START_TEST(test_CvodeResults_getTime)
+{
+  cr->time = calloc(4, sizeof(double));
+  cr->time[0] = 0.1;
+  cr->time[1] = 0.2;
+  cr->time[2] = 1.35;
+  cr->time[3] = 1.5;
+  ck_assert_int_eq(CvodeResults_getTime(cr, 0), 0.1);
+  ck_assert_int_eq(CvodeResults_getTime(cr, 1), 0.2);
+  ck_assert_int_eq(CvodeResults_getTime(cr, 2), 1.35);
+  ck_assert_int_eq(CvodeResults_getTime(cr, 3), 1.5);
+}
+END_TEST
+
+START_TEST(test_CvodeResults_getValue)
+{
+  variableIndex_t *vi;
+
+  vi = calloc(1, sizeof(*vi));
+  vi->type = ODE_VARIABLE;
+  vi->type_index = 0;
+  vi->index = 1;
+
+  cr->nvalues = 3;
+  cr->value = calloc(cr->nvalues, sizeof(double *));
+  cr->value[0] = calloc(4, sizeof(double));
+  cr->value[1] = calloc(4, sizeof(double));
+  cr->value[2] = calloc(4, sizeof(double));
+  cr->value[0][0] = 1;
+  cr->value[0][1] = 2;
+  cr->value[0][2] = 3;
+  cr->value[0][3] = 4;
+  cr->value[1][0] = 5;
+  cr->value[1][1] = 6;
+  cr->value[1][2] = 7;
+  cr->value[1][3] = 8;
+  cr->value[2][0] = 9;
+  cr->value[2][1] = 10;
+  cr->value[2][2] = 11;
+  cr->value[2][3] = 12;
+
+  ck_assert(CvodeResults_getValue(cr, vi, 0) == 5);
+  ck_assert(CvodeResults_getValue(cr, vi, 1) == 6);
+  ck_assert(CvodeResults_getValue(cr, vi, 2) == 7);
+  ck_assert(CvodeResults_getValue(cr, vi, 3) == 8);
+
+  free(vi);
+}
+END_TEST
+
+START_TEST(test_CvodeResults_getNout)
+{
+  ck_assert_int_eq(CvodeResults_getNout(cr), 1);
+  cr->nout = 3;
+  ck_assert_int_eq(CvodeResults_getNout(cr), 4);
+}
+END_TEST
+
+START_TEST(test_CvodeResults_getSensitivityByNum)
+{
+  cr->nout = 3;
+  CvodeResults_allocateSens(cr, 2, 3, cr->nout);
+  cr->sensitivity[1][2][3] = .7;
+  ck_assert(CvodeResults_getSensitivityByNum(cr, 1, 2, 3) == .7);
+  ck_assert(CvodeResults_getSensitivityByNum(cr, 2, 2, 3) == 0);
+  ck_assert(CvodeResults_getSensitivityByNum(cr, 1, 3, 3) == 0);
+  ck_assert(CvodeResults_getSensitivityByNum(cr, 1, 2, 4) == 0);
+}
+END_TEST
+
+START_TEST(test_CvodeResults_getSensitivity)
+{
+  variableIndex_t *vi_y;
+  variableIndex_t *vi_s;
+
+  vi_y = calloc(1, sizeof(*vi_y));
+  vi_s = calloc(1, sizeof(*vi_s));
+
+  cr->nout = 3;
+  CvodeResults_allocateSens(cr, 2, 3, cr->nout);
+  cr->index_sens[0] = 0;
+  cr->index_sens[1] = 2;
+  cr->index_sens[2] = 17;
+  cr->sensitivity[0][1][3] = .7;
+  cr->sensitivity[1][2][3] = .8;
+
+  vi_y->index = 0;
+  vi_s->index = 16;
+  ck_assert(CvodeResults_getSensitivity(cr, vi_y, vi_s, 3) == 0);
+
+  vi_y->index = 1;
+  vi_s->index = 17;
+  ck_assert(CvodeResults_getSensitivity(cr, vi_y, vi_s, 3) == .8);
+
+  free(vi_y);
+  free(vi_s);
+}
+END_TEST
+
+START_TEST(test_CvodeResults_computeDirectional)
+{
+  static const double dp[] = {
+    1.0,
+    0.5,
+    2.0
+  };
+
+  cr->nout = 3;
+  CvodeResults_allocateSens(cr, 2, 3, cr->nout);
+  cr->sensitivity[0][0][0] = 1;
+  cr->sensitivity[0][0][1] = 2;
+  cr->sensitivity[0][0][2] = 3;
+  cr->sensitivity[0][0][3] = 4;
+  cr->sensitivity[0][1][0] = 5;
+  cr->sensitivity[0][1][1] = 6;
+  cr->sensitivity[0][1][2] = 7;
+  cr->sensitivity[0][1][3] = 8;
+  cr->sensitivity[0][2][0] = 9;
+  cr->sensitivity[0][2][1] = 10;
+  cr->sensitivity[0][2][2] = 11;
+  cr->sensitivity[0][2][3] = 12;
+  cr->sensitivity[1][0][0] = 13;
+  cr->sensitivity[1][0][1] = 14;
+  cr->sensitivity[1][0][2] = 15;
+  cr->sensitivity[1][0][3] = 16;
+  cr->sensitivity[1][1][0] = 17;
+  cr->sensitivity[1][1][1] = 18;
+  cr->sensitivity[1][1][2] = 19;
+  cr->sensitivity[1][1][3] = 20;
+  cr->sensitivity[1][2][0] = 21;
+  cr->sensitivity[1][2][1] = 22;
+  cr->sensitivity[1][2][2] = 23;
+  cr->sensitivity[1][2][3] = 24;
+
+  CvodeResults_computeDirectional(cr, dp);
+  ck_assert(cr->directional[0][0] == 21.5);
+  ck_assert(cr->directional[0][1] == 25);
+  ck_assert(cr->directional[0][2] == 28.5);
+  ck_assert(cr->directional[0][3] == 32);
+  ck_assert(cr->directional[1][0] == 63.5);
+  ck_assert(cr->directional[1][1] == 67);
+  ck_assert(cr->directional[1][2] == 70.5);
+  ck_assert(cr->directional[1][3] == 74);
+}
+END_TEST
+
+START_TEST(test_CvodeResults_free)
+{
+  CvodeResults_free(NULL); /* freeing NULL is safe */
+}
+END_TEST
+
+/* public */
+Suite *create_suite_cvodeData(void)
+{
+  Suite *s;
+  TCase *tc_CvodeData_create;
+  TCase *tc_CvodeData_free;
+  TCase *tc_CvodeData_initializeValues;
+  TCase *tc_CvodeData_initialize;
+  TCase *tc_CvodeResults_getTime;
+  TCase *tc_CvodeResults_getValue;
+  TCase *tc_CvodeResults_getNout;
+  TCase *tc_CvodeResults_getSensitivityByNum;
+  TCase *tc_CvodeResults_getSensitivity;
+  TCase *tc_CvodeResults_computeDirectional;
+  TCase *tc_CvodeResults_free;
+
+  s = suite_create("cvodeData");
+
+  tc_CvodeData_create = tcase_create("CvodeData_create");
+  tcase_add_checked_fixture(tc_CvodeData_create,
+                NULL,
+                teardown_model);
+  tcase_add_test(tc_CvodeData_create, test_CvodeData_create);
+  suite_add_tcase(s, tc_CvodeData_create);
+
+  tc_CvodeData_free = tcase_create("CvodeData_free");
+  tcase_add_test(tc_CvodeData_free, test_CvodeData_free);
+  suite_add_tcase(s, tc_CvodeData_free);
+
+  tc_CvodeData_initializeValues = tcase_create("CvodeData_initializeValues");
+  tcase_add_checked_fixture(tc_CvodeData_initializeValues,
+                NULL,
+                teardown_model);
+  tcase_add_test(tc_CvodeData_initializeValues, test_CvodeData_initializeValues);
+  suite_add_tcase(s, tc_CvodeData_initializeValues);
+
+  tc_CvodeData_initialize = tcase_create("CvodeData_initialize");
+  tcase_add_checked_fixture(tc_CvodeData_initialize,
+                NULL,
+                teardown_model);
+  tcase_add_test(tc_CvodeData_initialize, test_CvodeData_initialize);
+  suite_add_tcase(s, tc_CvodeData_initialize);
+
+  tc_CvodeResults_getTime = tcase_create("CvodeResults_getTime");
+  tcase_add_checked_fixture(tc_CvodeResults_getTime,
+                            setup_cr,
+                            teardown_cr);
+  tcase_add_test(tc_CvodeResults_getTime, test_CvodeResults_getTime);
+  suite_add_tcase(s, tc_CvodeResults_getTime);
+
+  tc_CvodeResults_getValue = tcase_create("CvodeResults_getValue");
+  tcase_add_checked_fixture(tc_CvodeResults_getValue,
+                            setup_cr,
+                            teardown_cr);
+  tcase_add_test(tc_CvodeResults_getValue, test_CvodeResults_getValue);
+  suite_add_tcase(s, tc_CvodeResults_getValue);
+
+  tc_CvodeResults_getNout = tcase_create("CvodeResults_getNout");
+  tcase_add_checked_fixture(tc_CvodeResults_getNout,
+                            setup_cr,
+                            teardown_cr);
+  tcase_add_test(tc_CvodeResults_getNout, test_CvodeResults_getNout);
+  suite_add_tcase(s, tc_CvodeResults_getNout);
+
+  tc_CvodeResults_getSensitivityByNum = tcase_create("CvodeResults_getSensitivityByNum");
+  tcase_add_checked_fixture(tc_CvodeResults_getSensitivityByNum,
+                            setup_cr,
+                            teardown_cr);
+  tcase_add_test(tc_CvodeResults_getSensitivityByNum, test_CvodeResults_getSensitivityByNum);
+  suite_add_tcase(s, tc_CvodeResults_getSensitivityByNum);
+
+  tc_CvodeResults_getSensitivity = tcase_create("CvodeResults_getSensitivity");
+  tcase_add_checked_fixture(tc_CvodeResults_getSensitivity,
+                            setup_cr,
+                            teardown_cr);
+  tcase_add_test(tc_CvodeResults_getSensitivity, test_CvodeResults_getSensitivity);
+  suite_add_tcase(s, tc_CvodeResults_getSensitivity);
+
+  tc_CvodeResults_computeDirectional = tcase_create("CvodeResults_computeDirectional");
+  tcase_add_checked_fixture(tc_CvodeResults_computeDirectional,
+                            setup_cr,
+                            teardown_cr);
+  tcase_add_test(tc_CvodeResults_computeDirectional, test_CvodeResults_computeDirectional);
+  suite_add_tcase(s, tc_CvodeResults_computeDirectional);
+
+  tc_CvodeResults_free = tcase_create("CvodeResults_free");
+  tcase_add_test(tc_CvodeResults_free, test_CvodeResults_free);
+  suite_add_tcase(s, tc_CvodeResults_free);
+
+  return s;
+}
diff --git a/unittest/test_cvodeSolver.c b/unittest/test_cvodeSolver.c
new file mode 100644
index 0000000..4c2e169
--- /dev/null
+++ b/unittest/test_cvodeSolver.c
@@ -0,0 +1,140 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/cvodeSolver.h>
+
+/* fixtures */
+static odeModel_t *model = NULL;
+
+static cvodeSettings_t *cs = NULL;
+
+static integratorInstance_t *ii = NULL;
+
+static void setup_integratorInstance(void)
+{
+	model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+	cs = CvodeSettings_create();
+	ii = IntegratorInstance_create(model, cs);
+}
+
+static void teardown_integratorInstance(void)
+{
+	IntegratorInstance_free(ii);
+	CvodeSettings_free(cs);
+	ODEModel_free(model);
+}
+
+/* test cases */
+START_TEST(test_IntegratorInstance_createCVODESolverStructures)
+{
+	int r;
+	r = IntegratorInstance_createCVODESolverStructures(ii);
+	ck_assert_int_eq(r, 1);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_freeCVODESolverStructures)
+{
+	IntegratorInstance_createCVODESolverStructures(ii);
+	/* It is OK to call IntegratorInstance_freeCVODESolverStructures() consecutively. */
+	IntegratorInstance_freeCVODESolverStructures(ii);
+	IntegratorInstance_freeCVODESolverStructures(ii);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_freeForwardSensitivity)
+{
+	IntegratorInstance_createCVODESolverStructures(ii);
+	/* It is OK to call IntegratorInstance_freeForwardSensitivity() consecutively. */
+	IntegratorInstance_freeForwardSensitivity(ii);
+	IntegratorInstance_freeForwardSensitivity(ii);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_freeAdjointSensitivity)
+{
+	IntegratorInstance_createCVODESolverStructures(ii);
+	/* It is OK to call IntegratorInstance_freeAdjointSensitivity() consecutively. */
+	IntegratorInstance_freeAdjointSensitivity(ii);
+	IntegratorInstance_freeAdjointSensitivity(ii);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_cvodeOneStep)
+{
+	int r;
+	r = IntegratorInstance_cvodeOneStep(ii);
+	ck_assert_int_eq(r, 1);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_printCVODEStatistics)
+{
+	FILE *fp;
+	int r;
+	IntegratorInstance_cvodeOneStep(ii);
+	OPEN_TMPFILE_OR_ABORT(fp);
+	r = IntegratorInstance_printCVODEStatistics(ii, fp);
+	ck_assert_int_eq(r, 1);
+	/* TODO: check the printed text */
+	fclose(fp);
+}
+END_TEST
+
+/* public */
+Suite *create_suite_cvodeSolver(void)
+{
+	Suite *s;
+	TCase *tc_IntegratorInstance_createCVODESolverStructures;
+	TCase *tc_IntegratorInstance_freeCVODESolverStructures;
+	TCase *tc_IntegratorInstance_freeForwardSensitivity;
+	TCase *tc_IntegratorInstance_freeAdjointSensitivity;
+	TCase *tc_IntegratorInstance_cvodeOneStep;
+	TCase *tc_IntegratorInstance_printCVODEStatistics;
+
+	s = suite_create("cvodeSolver");
+
+	tc_IntegratorInstance_createCVODESolverStructures = tcase_create("IntegratorInstance_createCVODESolverStructures");
+	tcase_add_checked_fixture(tc_IntegratorInstance_createCVODESolverStructures,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_createCVODESolverStructures, test_IntegratorInstance_createCVODESolverStructures);
+	suite_add_tcase(s, tc_IntegratorInstance_createCVODESolverStructures);
+
+	tc_IntegratorInstance_freeCVODESolverStructures = tcase_create("IntegratorInstance_freeCVODESolverStructures");
+	tcase_add_checked_fixture(tc_IntegratorInstance_freeCVODESolverStructures,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_freeCVODESolverStructures, test_IntegratorInstance_freeCVODESolverStructures);
+	suite_add_tcase(s, tc_IntegratorInstance_freeCVODESolverStructures);
+
+	tc_IntegratorInstance_freeForwardSensitivity = tcase_create("IntegratorInstance_freeForwardSensitivity");
+	tcase_add_checked_fixture(tc_IntegratorInstance_freeForwardSensitivity,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_freeForwardSensitivity, test_IntegratorInstance_freeForwardSensitivity);
+	suite_add_tcase(s, tc_IntegratorInstance_freeForwardSensitivity);
+
+	tc_IntegratorInstance_freeAdjointSensitivity = tcase_create("IntegratorInstance_freeAdjointSensitivity");
+	tcase_add_checked_fixture(tc_IntegratorInstance_freeAdjointSensitivity,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_freeAdjointSensitivity, test_IntegratorInstance_freeAdjointSensitivity);
+	suite_add_tcase(s, tc_IntegratorInstance_freeAdjointSensitivity);
+
+	tc_IntegratorInstance_cvodeOneStep = tcase_create("IntegratorInstance_cvodeOneStep");
+	tcase_add_checked_fixture(tc_IntegratorInstance_cvodeOneStep,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_cvodeOneStep, test_IntegratorInstance_cvodeOneStep);
+	suite_add_tcase(s, tc_IntegratorInstance_cvodeOneStep);
+
+	tc_IntegratorInstance_printCVODEStatistics = tcase_create("IntegratorInstance_printCVODEStatistics");
+	tcase_add_checked_fixture(tc_IntegratorInstance_printCVODEStatistics,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_printCVODEStatistics, test_IntegratorInstance_printCVODEStatistics);
+	suite_add_tcase(s, tc_IntegratorInstance_printCVODEStatistics);
+
+	return s;
+}
diff --git a/unittest/test_daeSolver.c b/unittest/test_daeSolver.c
new file mode 100644
index 0000000..f1af098
--- /dev/null
+++ b/unittest/test_daeSolver.c
@@ -0,0 +1,111 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/daeSolver.h>
+
+/* fixtures */
+static odeModel_t *model = NULL;
+
+static cvodeSettings_t *cs = NULL;
+
+static integratorInstance_t *ii = NULL;
+
+static void setup_integratorInstance(void)
+{
+	model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+	cs = CvodeSettings_create();
+	ii = IntegratorInstance_create(model, cs);
+}
+
+static void teardown_integratorInstance(void)
+{
+#if 0 /* FIXME */
+	IntegratorInstance_free(ii);
+#endif
+	CvodeSettings_free(cs);
+	ODEModel_free(model);
+}
+
+/* test cases */
+START_TEST(test_IntegratorInstance_createIDASolverStructures)
+{
+	int r;
+	r = IntegratorInstance_createIDASolverStructures(ii);
+	ck_assert_int_eq(r, 1);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_freeIDASolverStructures)
+{
+#if 0 /* FIXME */
+	IntegratorInstance_createIDASolverStructures(ii);
+	/* It is OK to call IntegratorInstance_freeIDASolverStructures consecutively. */
+	IntegratorInstance_freeIDASolverStructures(ii);
+	IntegratorInstance_freeIDASolverStructures(ii);
+#endif
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_idaOneStep)
+{
+#if 0 /* FIXME */
+	int r;
+	IntegratorInstance_createIDASolverStructures(ii);
+	r = IntegratorInstance_idaOneStep(ii);
+	ck_assert_int_eq(r, 1);
+#endif
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_printIDAStatistics)
+{
+#if 0 /* FIXME */
+	FILE *fp;
+	IntegratorInstance_createIDASolverStructures(ii);
+	IntegratorInstance_idaOneStep(ii);
+	OPEN_TMPFILE_OR_ABORT(fp);
+	IntegratorInstance_printIDAStatistics(ii, fp);
+	/* TODO: check the printed text */
+	fclose(fp);
+#endif
+}
+END_TEST
+
+/* public */
+Suite *create_suite_daeSolver(void)
+{
+	Suite *s;
+	TCase *tc_IntegratorInstance_createIDASolverStructures;
+	TCase *tc_IntegratorInstance_freeIDASolverStructures;
+	TCase *tc_IntegratorInstance_idaOneStep;
+	TCase *tc_IntegratorInstance_printIDAStatistics;
+
+	s = suite_create("daeSolver");
+
+	tc_IntegratorInstance_createIDASolverStructures = tcase_create("IntegratorInstance_createIDASolverStructures");
+	tcase_add_checked_fixture(tc_IntegratorInstance_createIDASolverStructures,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_createIDASolverStructures, test_IntegratorInstance_createIDASolverStructures);
+	suite_add_tcase(s, tc_IntegratorInstance_createIDASolverStructures);
+
+	tc_IntegratorInstance_freeIDASolverStructures = tcase_create("IntegratorInstance_freeIDASolverStructures");
+	tcase_add_test(tc_IntegratorInstance_freeIDASolverStructures, test_IntegratorInstance_freeIDASolverStructures);
+	suite_add_tcase(s, tc_IntegratorInstance_freeIDASolverStructures);
+
+	tc_IntegratorInstance_idaOneStep = tcase_create("IntegratorInstance_idaOneStep");
+	tcase_add_checked_fixture(tc_IntegratorInstance_idaOneStep,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_idaOneStep, test_IntegratorInstance_idaOneStep);
+	suite_add_tcase(s, tc_IntegratorInstance_idaOneStep);
+
+	tc_IntegratorInstance_printIDAStatistics = tcase_create("IntegratorInstance_printIDAStatistics");
+	tcase_add_checked_fixture(tc_IntegratorInstance_printIDAStatistics,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_printIDAStatistics, test_IntegratorInstance_printIDAStatistics);
+	suite_add_tcase(s, tc_IntegratorInstance_printIDAStatistics);
+
+	return s;
+}
diff --git a/unittest/test_integratorInstance.c b/unittest/test_integratorInstance.c
new file mode 100644
index 0000000..e9c9f6b
--- /dev/null
+++ b/unittest/test_integratorInstance.c
@@ -0,0 +1,218 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/integratorInstance.h>
+
+/* fixtures */
+static odeModel_t *model;
+
+static void teardown_model(void)
+{
+	ODEModel_free(model);
+}
+
+/* test cases */
+START_TEST(test_IntegratorInstance_create)
+{
+	integratorInstance_t *ii;
+	cvodeSettings_t *cs;
+	model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+	cs = CvodeSettings_create();
+	ii = IntegratorInstance_create(model, cs);
+	ck_assert(ii != NULL);
+	ck_assert(IntegratorInstance_getSettings(ii) == cs);
+	CHECK_DOUBLE_WITH_TOLERANCE(IntegratorInstance_getTime(ii), 0.0);
+	ck_assert_int_eq(IntegratorInstance_timeCourseCompleted(ii), 0);
+	ck_assert(IntegratorInstance_getIntegrationTime(ii) == 0.0);
+	CvodeSettings_free(cs);
+	IntegratorInstance_free(ii);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_integrate)
+{
+	integratorInstance_t *ii;
+	cvodeSettings_t *cs;
+	int r;
+	model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+	cs = CvodeSettings_create();
+	ii = IntegratorInstance_create(model, cs);
+	r = IntegratorInstance_integrate(ii);
+	ck_assert_int_eq(r, 1);
+	CHECK_DOUBLE_WITH_TOLERANCE(IntegratorInstance_getTime(ii), 1.0);
+	ck_assert_int_eq(IntegratorInstance_timeCourseCompleted(ii), 1);
+	CvodeSettings_free(cs);
+	IntegratorInstance_free(ii);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_getResults)
+{
+	integratorInstance_t *ii;
+	cvodeSettings_t *cs;
+	int r;
+	const cvodeResults_t *cr;
+	model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+	cs = CvodeSettings_create();
+	ii = IntegratorInstance_create(model, cs);
+	r = IntegratorInstance_integrate(ii);
+	ck_assert_int_eq(r, 1);
+	cr = IntegratorInstance_getResults(ii);
+	ck_assert(ii->results == cr);
+	CvodeSettings_free(cs);
+	IntegratorInstance_free(ii);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_createResults)
+{
+	integratorInstance_t *ii;
+	cvodeSettings_t *cs;
+	int r;
+	cvodeResults_t *cr;
+	model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+	cs = CvodeSettings_create();
+	ii = IntegratorInstance_create(model, cs);
+	r = IntegratorInstance_integrate(ii);
+	ck_assert_int_eq(r, 1);
+	cr = IntegratorInstance_createResults(ii);
+	ck_assert(ii->results != cr);
+	CvodeResults_free(cr);
+	CvodeSettings_free(cs);
+	IntegratorInstance_free(ii);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_printResults)
+{
+	integratorInstance_t *ii;
+	cvodeSettings_t *cs;
+	int r;
+	FILE *fp;
+	model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+	cs = CvodeSettings_create();
+	ii = IntegratorInstance_create(model, cs);
+	r = IntegratorInstance_integrate(ii);
+	ck_assert_int_eq(r, 1);
+	OPEN_TMPFILE_OR_ABORT(fp);
+	IntegratorInstance_printResults(ii, fp);
+	/* TODO: check the printed text */
+	fclose(fp);
+	CvodeSettings_free(cs);
+	IntegratorInstance_free(ii);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_updateModel)
+{
+	integratorInstance_t *ii;
+	cvodeSettings_t *cs;
+	int r;
+	model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+	cs = CvodeSettings_create();
+	ii = IntegratorInstance_create(model, cs);
+	r = IntegratorInstance_integrate(ii);
+	ck_assert_int_eq(r, 1);
+	r = IntegratorInstance_updateModel(ii);
+	ck_assert_int_eq(r, 0); /* TODO: expected? */
+	CvodeSettings_free(cs);
+	IntegratorInstance_free(ii);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_printStatistics)
+{
+	integratorInstance_t *ii;
+	cvodeSettings_t *cs;
+	int r;
+	FILE *fp;
+	model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+	cs = CvodeSettings_create();
+	ii = IntegratorInstance_create(model, cs);
+	r = IntegratorInstance_integrate(ii);
+	ck_assert_int_eq(r, 1);
+	OPEN_TMPFILE_OR_ABORT(fp);
+	IntegratorInstance_printStatistics(ii, fp);
+	/* TODO: check the printed text */
+	fclose(fp);
+	CvodeSettings_free(cs);
+	IntegratorInstance_free(ii);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_free)
+{
+	IntegratorInstance_free(NULL); /* freeing NULL is safe */
+}
+END_TEST
+
+/* public */
+Suite *create_suite_integratorInstance(void)
+{
+	Suite *s;
+	TCase *tc_IntegratorInstance_create;
+	TCase *tc_IntegratorInstance_integrate;
+	TCase *tc_IntegratorInstance_getResults;
+	TCase *tc_IntegratorInstance_createResults;
+	TCase *tc_IntegratorInstance_printResults;
+	TCase *tc_IntegratorInstance_updateModel;
+	TCase *tc_IntegratorInstance_printStatistics;
+	TCase *tc_IntegratorInstance_free;
+
+	s = suite_create("integratorInstance");
+
+	tc_IntegratorInstance_create = tcase_create("IntegratorInstance_create");
+	tcase_add_checked_fixture(tc_IntegratorInstance_create,
+							  NULL,
+							  teardown_model);
+	tcase_add_test(tc_IntegratorInstance_create, test_IntegratorInstance_create);
+	suite_add_tcase(s, tc_IntegratorInstance_create);
+
+	tc_IntegratorInstance_integrate = tcase_create("IntegratorInstance_integrate");
+	tcase_add_checked_fixture(tc_IntegratorInstance_integrate,
+							  NULL,
+							  teardown_model);
+	tcase_add_test(tc_IntegratorInstance_integrate, test_IntegratorInstance_integrate);
+	suite_add_tcase(s, tc_IntegratorInstance_integrate);
+
+	tc_IntegratorInstance_getResults = tcase_create("IntegratorInstance_getResults");
+	tcase_add_checked_fixture(tc_IntegratorInstance_getResults,
+							  NULL,
+							  teardown_model);
+	tcase_add_test(tc_IntegratorInstance_getResults, test_IntegratorInstance_getResults);
+	suite_add_tcase(s, tc_IntegratorInstance_getResults);
+
+	tc_IntegratorInstance_createResults = tcase_create("IntegratorInstance_createResults");
+	tcase_add_checked_fixture(tc_IntegratorInstance_createResults,
+							  NULL,
+							  teardown_model);
+	tcase_add_test(tc_IntegratorInstance_createResults, test_IntegratorInstance_createResults);
+	suite_add_tcase(s, tc_IntegratorInstance_createResults);
+
+	tc_IntegratorInstance_printResults = tcase_create("IntegratorInstance_printResults");
+	tcase_add_checked_fixture(tc_IntegratorInstance_printResults,
+							  NULL,
+							  teardown_model);
+	tcase_add_test(tc_IntegratorInstance_printResults, test_IntegratorInstance_printResults);
+	suite_add_tcase(s, tc_IntegratorInstance_printResults);
+
+	tc_IntegratorInstance_updateModel = tcase_create("IntegratorInstance_updateModel");
+	tcase_add_checked_fixture(tc_IntegratorInstance_updateModel,
+							  NULL,
+							  teardown_model);
+	tcase_add_test(tc_IntegratorInstance_updateModel, test_IntegratorInstance_updateModel);
+	suite_add_tcase(s, tc_IntegratorInstance_updateModel);
+
+	tc_IntegratorInstance_printStatistics = tcase_create("IntegratorInstance_printStatistics");
+	tcase_add_checked_fixture(tc_IntegratorInstance_printStatistics,
+							  NULL,
+							  teardown_model);
+	tcase_add_test(tc_IntegratorInstance_printStatistics, test_IntegratorInstance_printStatistics);
+	suite_add_tcase(s, tc_IntegratorInstance_printStatistics);
+
+	tc_IntegratorInstance_free = tcase_create("IntegratorInstance_free");
+	tcase_add_test(tc_IntegratorInstance_free, test_IntegratorInstance_free);
+	suite_add_tcase(s, tc_IntegratorInstance_free);
+
+	return s;
+}
diff --git a/unittest/test_integratorSettings.c b/unittest/test_integratorSettings.c
new file mode 100644
index 0000000..f8cbdca
--- /dev/null
+++ b/unittest/test_integratorSettings.c
@@ -0,0 +1,145 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/integratorSettings.h>
+
+/* test cases */
+START_TEST(test_TimeSettings_create)
+{
+	timeSettings_t *ts;
+	ts = TimeSettings_create(10.0, 110.0, 200);
+	ck_assert(ts != NULL);
+	CHECK_DOUBLE_WITH_TOLERANCE(ts->tmult, -0.5); /* TODO: expected? */
+	TimeSettings_free(ts);
+}
+END_TEST
+
+START_TEST(test_TimeSettings_free)
+{
+	TimeSettings_free(NULL); /* freeing NULL is safe */
+}
+END_TEST
+
+START_TEST(test_CvodeSettings_createFromTimeSettings)
+{
+	timeSettings_t *ts;
+	cvodeSettings_t *cs;
+	ts = TimeSettings_create(0.0, 10.0, 100);
+	cs = CvodeSettings_createFromTimeSettings(ts);
+	ck_assert(cs != NULL);
+	ck_assert(cs->Time == 10.0);
+	ck_assert_int_eq(cs->PrintStep, 100);
+	CvodeSettings_free(cs);
+	TimeSettings_free(ts);
+}
+END_TEST
+
+START_TEST(test_CvodeSettings_create)
+{
+	cvodeSettings_t *cs;
+	cs = CvodeSettings_create();
+	ck_assert(cs != NULL);
+	ck_assert(cs->Time == 1.0);
+	ck_assert_int_eq(cs->PrintStep, 10);
+	CvodeSettings_free(cs);
+}
+END_TEST
+
+START_TEST(test_CvodeSettings_createWithTime)
+{
+	cvodeSettings_t *cs;
+	cs = CvodeSettings_createWithTime(0.7, 29);
+	ck_assert(cs != NULL);
+	ck_assert(cs->Time == 0.7);
+	ck_assert_int_eq(cs->PrintStep, 29);
+	CvodeSettings_free(cs);
+}
+END_TEST
+
+START_TEST(test_CvodeSettings_free)
+{
+	CvodeSettings_free(NULL); /* freeing NULL is safe */
+}
+END_TEST
+
+START_TEST(test_CvodeSettings_getMethod)
+{
+  cvodeSettings_t *cs;
+  cs = CvodeSettings_create();
+  ck_assert_str_eq(CvodeSettings_getMethod(cs), "BDF");
+  CvodeSettings_free(cs);
+}
+END_TEST
+
+START_TEST(test_CvodeSettings_getIterMethod)
+{
+  cvodeSettings_t *cs;
+  cs = CvodeSettings_create();
+  ck_assert_str_eq(CvodeSettings_getIterMethod(cs), "NEWTON");
+  CvodeSettings_free(cs);
+}
+END_TEST
+
+START_TEST(test_CvodeSettings_getSensMethod)
+{
+  cvodeSettings_t *cs;
+  cs = CvodeSettings_create();
+  ck_assert_str_eq(CvodeSettings_getSensMethod(cs), "simultaneous");
+  CvodeSettings_free(cs);
+}
+END_TEST
+
+/* public */
+Suite *create_suite_integratorSettings(void)
+{
+	Suite *s;
+	TCase *tc_TimeSettings_create;
+	TCase *tc_TimeSettings_free;
+	TCase *tc_CvodeSettings_createFromTimeSettings;
+	TCase *tc_CvodeSettings_create;
+	TCase *tc_CvodeSettings_createWithTime;
+	TCase *tc_CvodeSettings_free;
+  TCase *tc_CvodeSettings_getMethod;
+  TCase *tc_CvodeSettings_getIterMethod;
+  TCase *tc_CvodeSettings_getSensMethod;
+
+	s = suite_create("integratorSettings");
+
+	tc_TimeSettings_create = tcase_create("TimeSettings_create");
+	tcase_add_test(tc_TimeSettings_create, test_TimeSettings_create);
+	suite_add_tcase(s, tc_TimeSettings_create);
+
+	tc_TimeSettings_free = tcase_create("TimeSettings_free");
+	tcase_add_test(tc_TimeSettings_free, test_TimeSettings_free);
+	suite_add_tcase(s, tc_TimeSettings_free);
+
+	tc_CvodeSettings_createFromTimeSettings = tcase_create("CvodeSettings_createFromTimeSettings");
+	tcase_add_test(tc_CvodeSettings_createFromTimeSettings, test_CvodeSettings_createFromTimeSettings);
+	suite_add_tcase(s, tc_CvodeSettings_createFromTimeSettings);
+
+	tc_CvodeSettings_create = tcase_create("CvodeSettings_create");
+	tcase_add_test(tc_CvodeSettings_create, test_CvodeSettings_create);
+	suite_add_tcase(s, tc_CvodeSettings_create);
+
+	tc_CvodeSettings_createWithTime = tcase_create("CvodeSettings_createWithTime");
+	tcase_add_test(tc_CvodeSettings_createWithTime, test_CvodeSettings_createWithTime);
+	suite_add_tcase(s, tc_CvodeSettings_createWithTime);
+
+	tc_CvodeSettings_free = tcase_create("CvodeSettings_free");
+	tcase_add_test(tc_CvodeSettings_free, test_CvodeSettings_free);
+	suite_add_tcase(s, tc_CvodeSettings_free);
+
+  tc_CvodeSettings_getMethod = tcase_create("CvodeSettings_getMethod");
+  tcase_add_test(tc_CvodeSettings_getMethod, test_CvodeSettings_getMethod);
+  suite_add_tcase(s, tc_CvodeSettings_getMethod);
+
+  tc_CvodeSettings_getIterMethod = tcase_create("CvodeSettings_getIterMethod");
+  tcase_add_test(tc_CvodeSettings_getIterMethod, test_CvodeSettings_getIterMethod);
+  suite_add_tcase(s, tc_CvodeSettings_getIterMethod);
+
+  tc_CvodeSettings_getSensMethod = tcase_create("CvodeSettings_getSensMethod");
+  tcase_add_test(tc_CvodeSettings_getSensMethod, test_CvodeSettings_getSensMethod);
+  suite_add_tcase(s, tc_CvodeSettings_getSensMethod);
+
+	return s;
+}
diff --git a/unittest/test_interpol.c b/unittest/test_interpol.c
new file mode 100644
index 0000000..9657157
--- /dev/null
+++ b/unittest/test_interpol.c
@@ -0,0 +1,314 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/interpol.h>
+
+/* fixtures */
+static const char *vars[] = {"MAPK", "MAPK_PP", "MKKK", "MKK_PP"};
+static const int n_vars = (int)(sizeof(vars)/sizeof(vars[0]));
+
+static const double xs[] = {0.0, 1.0, 2.0, 3.0, 5.0, 10.0};
+static const double ys[] = {-2.5, 1.5, -0.5, 0.25, 1.0, 2.0};
+static const int n_xs = (int)(sizeof(xs)/sizeof(xs[0]));
+
+/* test cases */
+START_TEST(test_read_header_line)
+{
+  int *cols;
+  int *indices;
+  int r;
+  cols = calloc(n_vars, sizeof(int));
+  indices = calloc(n_vars, sizeof(int));
+  r = read_header_line(EXAMPLES_FILENAME("MAPK_10pt.dat"), n_vars, (char **)vars, cols, indices);
+  ck_assert_int_eq(r, n_vars);
+  ck_assert_int_eq(cols[0], 1);
+  ck_assert_int_eq(cols[1], 5);
+  ck_assert_int_eq(cols[2], 6);
+  ck_assert_int_eq(cols[3], 8);
+  ck_assert_int_eq(indices[0], 2);
+  ck_assert_int_eq(indices[1], 3);
+  ck_assert_int_eq(indices[2], 0);
+  ck_assert_int_eq(indices[3], 1);
+  free(cols);
+  free(indices);
+}
+END_TEST
+
+START_TEST(test_read_columns)
+{
+  static int cols[] = {1, 5, 6, 8};
+  static int indices[] = {2, 3, 0, 1};
+  time_series_t *ts;
+  int i, r;
+  ts = calloc(1, sizeof(*ts));
+  ts->data = calloc(4, sizeof(double *));
+  for (i=0;i<4;i++) {
+    ts->data[i] = calloc(11, sizeof(double));
+  }
+  ts->time = calloc(11, sizeof(double));
+  r = read_columns(EXAMPLES_FILENAME("MAPK_10pt.dat"), 4, cols, indices, ts);
+  ck_assert_int_eq(r, 11);
+  ck_assert(ts->time[0] == 0);
+  ck_assert(ts->data[0][0] == 280);
+  ck_assert(ts->data[1][0] == 10);
+  ck_assert(ts->data[2][0] == 90);
+  ck_assert(ts->data[3][0] == 10);
+  ck_assert(ts->time[1] == 10);
+  ck_assert(ts->data[0][1] == 279.88);
+  ck_assert(ts->data[1][1] == 9.01507);
+  ck_assert(ts->data[2][1] == 80.718);
+  ck_assert(ts->data[3][1] == 8.68109);
+  ck_assert(ts->time[2] == 20);
+  ck_assert(ts->data[0][2] == 280.012);
+  ck_assert(ts->data[1][2] == 8.13013);
+  ck_assert(ts->data[2][2] == 71.2642);
+  ck_assert(ts->data[3][2] == 8.71021);
+  ck_assert(ts->time[10] == 100);
+  ck_assert(ts->data[0][10] == 251.69);
+  ck_assert(ts->data[1][10] == 21.2823);
+  ck_assert(ts->data[2][10] == 14.2049);
+  ck_assert(ts->data[3][10] == 56.6475);
+  free_data(ts);
+}
+END_TEST
+
+START_TEST(test_free_data)
+{
+  free_data(NULL); /* freeing NULL is safe */
+}
+END_TEST
+
+START_TEST(test_read_data)
+{
+  time_series_t *ts;
+  int i;
+  ts = read_data(EXAMPLES_FILENAME("MAPK_10pt.dat"), n_vars, (char **)vars);
+  ck_assert(ts != NULL);
+  ck_assert_int_eq(ts->n_var, n_vars);
+  for (i=0;i<n_vars;i++) {
+    ck_assert_str_eq(ts->var[i], vars[i]);
+  }
+  ck_assert_int_eq(ts->n_data, n_vars);
+  ck_assert_int_eq(ts->n_time, 11);
+  ck_assert(ts->warn != NULL);
+  ck_assert_int_eq(ts->warn[0], 0);
+  ck_assert_int_eq(ts->warn[1], 0);
+  free_data(ts);
+}
+END_TEST
+
+START_TEST(test_bisection)
+{
+  static const double x[] = {-20.0, -4.5, 0.0, 1.25, 8.5};
+  int r;
+  r = bisection(5, x, -4.5);
+  ck_assert_int_eq(r, 1);
+  r = bisection(5, x, 2.0);
+  ck_assert_int_eq(r, 3);
+  r = bisection(5, x, -30.0);
+  ck_assert_int_eq(r, -1);
+  r = bisection(5, x, 10.0);
+  ck_assert_int_eq(r, 4);
+}
+END_TEST
+
+START_TEST(test_hunt)
+{
+  static const double x[] = {-20.0, -4.5, 0.0, 1.25, 8.5};
+  static const int n = (int)sizeof(x)/sizeof(x[0]);
+  int i, r;
+  for (i=0;i<n;i++) {
+    r = i;
+    hunt(n, x, -30.0, &r);
+    ck_assert_int_eq(r, -1);
+  }
+  for (i=0;i<n;i++) {
+    r = i;
+    hunt(n, x, 0.1, &r);
+    ck_assert_int_eq(r, 2);
+  }
+  for (i=0;i<n;i++) {
+    r = i;
+    hunt(n, x, 0.0, &r);
+    ck_assert_int_eq(r, 2);
+  }
+  for (i=0;i<n;i++) {
+    r = i;
+    hunt(n, x, 10.0, &r);
+    ck_assert_int_eq(r, 4);
+  }
+}
+END_TEST
+
+START_TEST(test_spline)
+{
+  assert(sizeof(xs)/sizeof(xs[0]) == sizeof(ys)/sizeof(ys[0]));
+  double *y2;
+  int r;
+  y2 = calloc(n_xs, sizeof(*y2));
+  r = spline(n_xs, xs, ys, y2);
+  ck_assert_int_eq(r, 1);
+  CHECK_DOUBLE_WITH_TOLERANCE(y2[0], 0.0);
+  CHECK_DOUBLE_WITH_TOLERANCE(y2[1], -10.80891608391608471607);
+  CHECK_DOUBLE_WITH_TOLERANCE(y2[2], 7.23566433566433531155);
+  CHECK_DOUBLE_WITH_TOLERANCE(y2[3], -1.63374125874125875058);
+  CHECK_DOUBLE_WITH_TOLERANCE(y2[4], 0.15839160839160837391);
+  CHECK_DOUBLE_WITH_TOLERANCE(y2[5], 0.0);
+  free(y2);
+}
+END_TEST
+
+START_TEST(test_splint)
+{
+  double *y2;
+  double y;
+  int i;
+  int j;
+  y2 = calloc(n_xs, sizeof(*y2));
+  (void)spline(n_xs, xs, ys, y2);
+  for (i=0;i<n_xs;i++) {
+    j = i;
+    splint(n_xs, xs, ys, y2, -0.5, &y, &j);
+    ck_assert_int_eq(j, -1);
+  }
+  for (i=0;i<n_xs;i++) {
+    j = i;
+    splint(n_xs, xs, ys, y2, 0.0, &y, &j);
+    CHECK_DOUBLE_WITH_TOLERANCE(y, -2.5);
+    ck_assert_int_eq(j, 0);
+  }
+  for (i=0;i<n_xs;i++) {
+    j = i;
+    splint(n_xs, xs, ys, y2, 1.0, &y, &j);
+    CHECK_DOUBLE_WITH_TOLERANCE(y, 1.5);
+    ck_assert_int_eq(j, 1);
+  }
+  for (i=0;i<n_xs;i++) {
+    j = i;
+    splint(n_xs, xs, ys, y2, 2.0, &y, &j);
+    CHECK_DOUBLE_WITH_TOLERANCE(y, -0.5);
+    ck_assert_int_eq(j, 2);
+  }
+  for (i=0;i<n_xs;i++) {
+    j = i;
+    splint(n_xs, xs, ys, y2, 4.0, &y, &j);
+    CHECK_DOUBLE_WITH_TOLERANCE(y, 0.99383741258741253866);
+    ck_assert_int_eq(j, 3);
+  }
+  for (i=0;i<n_xs;i++) {
+    j = i;
+    splint(n_xs, xs, ys, y2, 8.0, &y, &j);
+    CHECK_DOUBLE_WITH_TOLERANCE(y, 1.37825174825174845417);
+    ck_assert_int_eq(j, 4);
+  }
+  for (i=0;i<n_xs;i++) {
+    j = i;
+    splint(n_xs, xs, ys, y2, 16.0, &y, &j);
+    ck_assert_int_eq(j, 5);
+  }
+  free(y2);
+}
+END_TEST
+
+START_TEST(test_linint)
+{
+  double y;
+  int i;
+  int j;
+  for (i=0;i<n_xs;i++) {
+    j = i;
+    linint(n_xs, xs, ys, -0.5, &y, &j);
+    ck_assert_int_eq(j, -1);
+  }
+  for (i=0;i<n_xs;i++) {
+    j = i;
+    linint(n_xs, xs, ys, 0.0, &y, &j);
+    CHECK_DOUBLE_WITH_TOLERANCE(y, -2.5);
+    ck_assert_int_eq(j, 0);
+  }
+  for (i=0;i<n_xs;i++) {
+    j = i;
+    linint(n_xs, xs, ys, 1.0, &y, &j);
+    CHECK_DOUBLE_WITH_TOLERANCE(y, 1.5);
+    ck_assert_int_eq(j, 1);
+  }
+  for (i=0;i<n_xs;i++) {
+    j = i;
+    linint(n_xs, xs, ys, 2.0, &y, &j);
+    CHECK_DOUBLE_WITH_TOLERANCE(y, -0.5);
+    ck_assert_int_eq(j, 2);
+  }
+  for (i=0;i<n_xs;i++) {
+    j = i;
+    linint(n_xs, xs, ys, 4.0, &y, &j);
+    CHECK_DOUBLE_WITH_TOLERANCE(y, 0.625);
+    ck_assert_int_eq(j, 3);
+  }
+  for (i=0;i<n_xs;i++) {
+    j = i;
+    linint(n_xs, xs, ys, 8.0, &y, &j);
+    CHECK_DOUBLE_WITH_TOLERANCE(y, 1.60000000000000008882);
+    ck_assert_int_eq(j, 4);
+  }
+  for (i=0;i<n_xs;i++) {
+    j = i;
+    linint(n_xs, xs, ys, 16.0, &y, &j);
+    ck_assert_int_eq(j, 5);
+  }
+}
+END_TEST
+
+/* public */
+Suite *create_suite_interpol(void)
+{
+  Suite *s;
+  TCase *tc_read_header_line;
+  TCase *tc_read_columns;
+  TCase *tc_free_data;
+  TCase *tc_read_data;
+  TCase *tc_bisection;
+  TCase *tc_hunt;
+  TCase *tc_spline;
+  TCase *tc_splint;
+  TCase *tc_linint;
+
+  s = suite_create("interpol");
+
+  tc_read_header_line = tcase_create("read_header_line");
+  tcase_add_test(tc_read_header_line, test_read_header_line);
+  suite_add_tcase(s, tc_read_header_line);
+
+  tc_read_columns = tcase_create("read_columns");
+  tcase_add_test(tc_read_columns, test_read_columns);
+  suite_add_tcase(s, tc_read_columns);
+
+  tc_free_data = tcase_create("free_data");
+  tcase_add_test(tc_free_data, test_free_data);
+  suite_add_tcase(s, tc_free_data);
+
+  tc_read_data = tcase_create("read_data");
+  tcase_add_test(tc_read_data, test_read_data);
+  suite_add_tcase(s, tc_read_data);
+
+  tc_bisection = tcase_create("bisection");
+  tcase_add_test(tc_bisection, test_bisection);
+  suite_add_tcase(s, tc_bisection);
+
+  tc_hunt = tcase_create("hunt");
+  tcase_add_test(tc_hunt, test_hunt);
+  suite_add_tcase(s, tc_hunt);
+
+  tc_spline = tcase_create("spline");
+  tcase_add_test(tc_spline, test_spline);
+  suite_add_tcase(s, tc_spline);
+
+  tc_splint = tcase_create("splint");
+  tcase_add_test(tc_splint, test_splint);
+  suite_add_tcase(s, tc_splint);
+
+  tc_linint = tcase_create("linint");
+  tcase_add_test(tc_linint, test_linint);
+  suite_add_tcase(s, tc_linint);
+
+  return s;
+}
diff --git a/unittest/test_modelSimplify.c b/unittest/test_modelSimplify.c
new file mode 100644
index 0000000..efd94f1
--- /dev/null
+++ b/unittest/test_modelSimplify.c
@@ -0,0 +1,304 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/modelSimplify.h>
+#include <sbmlsolver/sbml.h>
+
+/* fixtures */
+static SBMLDocument_t *doc = NULL;
+static char *formula = NULL;
+static ASTNode_t *node;
+
+static void setup_node(void)
+{
+	node = SBML_parseFormula("1 + (x * x)");
+	ck_assert(node != NULL);
+}
+
+static void teardown_doc(void)
+{
+	SBMLDocument_free(doc);
+}
+
+static void teardown_formula(void)
+{
+	free(formula);
+}
+
+static void teardown_node(void)
+{
+	ASTNode_free(node);
+}
+
+static void setup_node_with_function_definition(void)
+{
+	node = SBML_parseFormula("f(1, f(x, y))");
+	ck_assert(node != NULL);
+}
+
+/* test cases */
+START_TEST(test_AST_replaceNameByFormula)
+{
+	ASTNode_t *n;
+	ASTNode_t *c, *gc, *ggc;
+	int i;
+
+	n = SBML_parseFormula("y/z");
+	ck_assert(n != NULL);
+
+	AST_replaceNameByFormula(node, "x", n);
+	ck_assert(ASTNode_getType(node) == AST_PLUS);
+	ck_assert(ASTNode_getNumChildren(node) == 2);
+	c = ASTNode_getChild(node, 0);
+	ck_assert(ASTNode_getType(c) == AST_INTEGER);
+	ck_assert(ASTNode_getInteger(c) == 1);
+	c = ASTNode_getChild(node, 1);
+	ck_assert(ASTNode_getType(c) == AST_TIMES);
+	ck_assert(ASTNode_getNumChildren(c) == 2);
+	for (i = 0; i < 2; i++) {
+		gc = ASTNode_getChild(c, i);
+		ck_assert(ASTNode_getType(gc) == AST_DIVIDE);
+		ck_assert(ASTNode_getNumChildren(gc) == 2);
+		ggc = ASTNode_getChild(gc, 0);
+		ck_assert(ASTNode_getType(ggc) == AST_NAME);
+		ck_assert_str_eq(ASTNode_getName(ggc), "y");
+		ggc = ASTNode_getChild(gc, 1);
+		ck_assert(ASTNode_getType(ggc) == AST_NAME);
+		ck_assert_str_eq(ASTNode_getName(ggc), "z");
+	}
+
+	ASTNode_free(n);
+}
+END_TEST
+
+START_TEST(test_AST_replaceNameByName)
+{
+	ASTNode_t *c, *gc;
+	int i;
+
+	AST_replaceNameByName(node, "x", "y");
+	ck_assert(ASTNode_getType(node) == AST_PLUS);
+	ck_assert(ASTNode_getNumChildren(node) == 2);
+	c = ASTNode_getChild(node, 0);
+	ck_assert(ASTNode_getType(c) == AST_INTEGER);
+	ck_assert(ASTNode_getInteger(c) == 1);
+	c = ASTNode_getChild(node, 1);
+	ck_assert(ASTNode_getType(c) == AST_TIMES);
+	ck_assert(ASTNode_getNumChildren(c) == 2);
+	for (i = 0; i < 2; i++) {
+		gc = ASTNode_getChild(c, i);
+		ck_assert(ASTNode_getType(gc) == AST_NAME);
+		ck_assert_str_eq(ASTNode_getName(gc), "y");
+	}
+}
+END_TEST
+
+START_TEST(test_AST_replaceNameByValue)
+{
+	ASTNode_t *c, *gc;
+	int i;
+
+	AST_replaceNameByValue(node, "x", 42.0);
+	ck_assert(ASTNode_getType(node) == AST_PLUS);
+	ck_assert(ASTNode_getNumChildren(node) == 2);
+	c = ASTNode_getChild(node, 0);
+	ck_assert(ASTNode_getType(c) == AST_INTEGER);
+	ck_assert(ASTNode_getInteger(c) == 1);
+	c = ASTNode_getChild(node, 1);
+	ck_assert(ASTNode_getType(c) == AST_TIMES);
+	ck_assert(ASTNode_getNumChildren(c) == 2);
+	for (i = 0; i < 2; i++) {
+		gc = ASTNode_getChild(c, i);
+		ck_assert(ASTNode_getType(gc) == AST_REAL);
+		ck_assert(ASTNode_getReal(gc) == 42.0);
+	}
+}
+END_TEST
+
+START_TEST(test_AST_replaceNameByParameters)
+{
+	Parameter_t *p;
+	ListOf_t *lo;
+	ASTNode_t *c, *gc;
+	int i;
+
+#if LIBSBML_VERSION >= 40000
+	p = Parameter_create(2, 4);
+	Parameter_setId(p, "x");
+	Parameter_setName(p, "name");
+#else
+	p = Parameter_createWith("x", "name");
+#endif
+	Parameter_setValue(p, 2.5);
+#if LIBSBML_VERSION >= 50000
+	lo = ListOf_create(2, 4);
+#else
+	lo = ListOf_create();
+#endif
+	ListOf_appendAndOwn(lo, (SBase_t *)p);
+
+	AST_replaceNameByParameters(node, lo);
+	ck_assert(ASTNode_getType(node) == AST_PLUS);
+	ck_assert(ASTNode_getNumChildren(node) == 2);
+	c = ASTNode_getChild(node, 0);
+	ck_assert(ASTNode_getType(c) == AST_INTEGER);
+	ck_assert(ASTNode_getInteger(c) == 1);
+	c = ASTNode_getChild(node, 1);
+	ck_assert(ASTNode_getType(c) == AST_TIMES);
+	ck_assert(ASTNode_getNumChildren(c) == 2);
+	for (i = 0; i < 2; i++) {
+		gc = ASTNode_getChild(c, i);
+		ck_assert(ASTNode_getType(gc) == AST_REAL);
+		ck_assert(ASTNode_getReal(gc) == 2.5);
+	}
+
+	ListOf_free(lo);
+}
+END_TEST
+
+START_TEST(test_AST_replaceFunctionDefinition)
+{
+	ASTNode_t *n;
+	ASTNode_t *c, *gc;
+
+	n = SBML_parseFormula("lambda(a, b, a - b)");
+	ck_assert(n != NULL);
+
+	AST_replaceFunctionDefinition(node, "f", n);
+	ck_assert(ASTNode_getType(node) == AST_MINUS);
+	ck_assert(ASTNode_getNumChildren(node) == 2);
+
+	c = ASTNode_getChild(node, 0);
+	ck_assert(ASTNode_getType(c) == AST_INTEGER);
+	ck_assert(ASTNode_getInteger(c) == 1);
+
+	c = ASTNode_getChild(node, 1);
+	ck_assert(ASTNode_getType(c) == AST_MINUS);
+	ck_assert(ASTNode_getNumChildren(c) == 2);
+	gc = ASTNode_getChild(c, 0);
+	ck_assert(ASTNode_getType(gc) == AST_NAME);
+	ck_assert_str_eq(ASTNode_getName(gc), "x");
+	gc = ASTNode_getChild(c, 1);
+	ck_assert(ASTNode_getType(gc) == AST_NAME);
+	ck_assert_str_eq(ASTNode_getName(gc), "y");
+
+	ASTNode_free(n);
+}
+END_TEST
+
+START_TEST(test_AST_replaceConstants_MAPK)
+{
+	Model_t *m;
+
+	doc = parseModel(EXAMPLES_FILENAME("MAPK.xml"), 0, 1);
+	ck_assert(doc != NULL);
+	m = SBMLDocument_getModel(doc);
+	ck_assert(m != NULL);
+	node = SBML_parseFormula("V1 + Ki + K1");
+	ck_assert(node != NULL);
+	AST_replaceConstants(m, node);
+	formula = SBML_formulaToString(node);
+	ck_assert(formula != NULL);
+	ck_assert_str_eq(formula, "2.5 + 9 + 10");
+}
+END_TEST
+
+START_TEST(test_AST_replaceConstants_basic_model1_forward_l2)
+{
+	Model_t *m;
+
+	doc = parseModel(EXAMPLES_FILENAME("basic-model1-forward-l2.xml"), 0, 1);
+	ck_assert(doc != NULL);
+	m = SBMLDocument_getModel(doc);
+	ck_assert(m != NULL);
+	node = SBML_parseFormula("c + k_1 + k_2");
+	ck_assert(node != NULL);
+	AST_replaceConstants(m, node);
+	formula = SBML_formulaToString(node);
+	ck_assert(formula != NULL);
+	ck_assert_str_eq(formula, "1 + k_1 + k_2");
+}
+END_TEST
+
+START_TEST(test_AST_replaceConstants_basic)
+{
+	Model_t *m;
+
+	doc = parseModel(EXAMPLES_FILENAME("basic.xml"), 0, 1);
+	ck_assert(doc != NULL);
+	m = SBMLDocument_getModel(doc);
+	ck_assert(m != NULL);
+	node = SBML_parseFormula("c + k_1 + k_2");
+	ck_assert(node != NULL);
+	AST_replaceConstants(m, node);
+	formula = SBML_formulaToString(node);
+	ck_assert(formula != NULL);
+	ck_assert_str_eq(formula, "1 + 1 + k_2");
+}
+END_TEST
+
+/* public */
+Suite *create_suite_modelSimplify(void)
+{
+	Suite *s;
+	TCase *tc_AST_replaceNameByFormula;
+	TCase *tc_AST_replaceNameByName;
+	TCase *tc_AST_replaceNameByValue;
+	TCase *tc_AST_replaceNameByParameters;
+	TCase *tc_AST_replaceFunctionDefinition;
+	TCase *tc_AST_replaceConstants;
+
+	s = suite_create("modelSimplify");
+
+	tc_AST_replaceNameByFormula = tcase_create("AST_replaceNameByFormula");
+	tcase_add_checked_fixture(tc_AST_replaceNameByFormula,
+							  setup_node,
+							  teardown_node);
+	tcase_add_test(tc_AST_replaceNameByFormula, test_AST_replaceNameByFormula);
+	suite_add_tcase(s, tc_AST_replaceNameByFormula);
+
+	tc_AST_replaceNameByName = tcase_create("AST_replaceNameByName");
+	tcase_add_checked_fixture(tc_AST_replaceNameByName,
+							  setup_node,
+							  teardown_node);
+	tcase_add_test(tc_AST_replaceNameByName, test_AST_replaceNameByName);
+	suite_add_tcase(s, tc_AST_replaceNameByName);
+
+	tc_AST_replaceNameByValue = tcase_create("AST_replaceNameByValue");
+	tcase_add_checked_fixture(tc_AST_replaceNameByValue,
+							  setup_node,
+							  teardown_node);
+	tcase_add_test(tc_AST_replaceNameByValue, test_AST_replaceNameByValue);
+	suite_add_tcase(s, tc_AST_replaceNameByValue);
+
+	tc_AST_replaceNameByParameters = tcase_create("AST_replaceNameByParameters");
+	tcase_add_checked_fixture(tc_AST_replaceNameByParameters,
+							  setup_node,
+							  teardown_node);
+	tcase_add_test(tc_AST_replaceNameByParameters, test_AST_replaceNameByParameters);
+	suite_add_tcase(s, tc_AST_replaceNameByParameters);
+
+	tc_AST_replaceFunctionDefinition = tcase_create("AST_replaceFunctionDefinition");
+	tcase_add_checked_fixture(tc_AST_replaceFunctionDefinition,
+							  setup_node_with_function_definition,
+							  teardown_node);
+	tcase_add_test(tc_AST_replaceFunctionDefinition, test_AST_replaceFunctionDefinition);
+	suite_add_tcase(s, tc_AST_replaceFunctionDefinition);
+
+	tc_AST_replaceConstants = tcase_create("AST_replaceConstants");
+	tcase_add_checked_fixture(tc_AST_replaceConstants,
+							  NULL,
+							  teardown_doc);
+	tcase_add_checked_fixture(tc_AST_replaceConstants,
+							  NULL,
+							  teardown_formula);
+	tcase_add_checked_fixture(tc_AST_replaceConstants,
+							  NULL,
+							  teardown_node);
+	tcase_add_test(tc_AST_replaceConstants, test_AST_replaceConstants_MAPK);
+	tcase_add_test(tc_AST_replaceConstants, test_AST_replaceConstants_basic_model1_forward_l2);
+	tcase_add_test(tc_AST_replaceConstants, test_AST_replaceConstants_basic);
+	suite_add_tcase(s, tc_AST_replaceConstants);
+
+	return s;
+}
diff --git a/unittest/test_nullSolver.c b/unittest/test_nullSolver.c
new file mode 100644
index 0000000..d286d12
--- /dev/null
+++ b/unittest/test_nullSolver.c
@@ -0,0 +1,107 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/nullSolver.h>
+
+/* fixtures */
+static odeModel_t *model = NULL;
+
+static cvodeSettings_t *cs = NULL;
+
+static integratorInstance_t *ii = NULL;
+
+static void setup_integratorInstance(void)
+{
+	model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+	cs = CvodeSettings_create();
+	ii = IntegratorInstance_create(model, cs);
+}
+
+static void teardown_integratorInstance(void)
+{
+#if 0 /* FIXME */
+	IntegratorInstance_free(ii);
+#endif
+	CvodeSettings_free(cs);
+	ODEModel_free(model);
+}
+
+/* test cases */
+START_TEST(test_IntegratorInstance_createKINSolverStructures)
+{
+	int r;
+	r = IntegratorInstance_createKINSolverStructures(ii);
+	ck_assert_int_eq(r, 1);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_freeKINSolverStructures)
+{
+#if 0 /* FIXME */
+	IntegratorInstance_createKINSolverStructures(ii);
+	/* It is OK to call IntegratorInstance_freeKINSolverStructures consecutively. */
+	IntegratorInstance_freeKINSolverStructures(ii);
+	IntegratorInstance_freeKINSolverStructures(ii);
+#endif
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_nullSolver)
+{
+	int r;
+	IntegratorInstance_createKINSolverStructures(ii);
+	r = IntegratorInstance_nullSolver(ii);
+	ck_assert_int_eq(r, 1);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_printKINSOLStatistics)
+{
+	FILE *fp;
+	IntegratorInstance_createKINSolverStructures(ii);
+	IntegratorInstance_nullSolver(ii);
+	OPEN_TMPFILE_OR_ABORT(fp);
+	IntegratorInstance_printKINSOLStatistics(ii, fp);
+	/* TODO: check the printed text */
+	fclose(fp);
+}
+END_TEST
+
+/* public */
+Suite *create_suite_nullSolver(void)
+{
+	Suite *s;
+	TCase *tc_IntegratorInstance_createKINSolverStructures;
+	TCase *tc_IntegratorInstance_freeKINSolverStructures;
+	TCase *tc_IntegratorInstance_nullSolver;
+	TCase *tc_IntegratorInstance_printKINSOLStatistics;
+
+	s = suite_create("nullSolver");
+
+	tc_IntegratorInstance_createKINSolverStructures = tcase_create("IntegratorInstance_createKINSolverStructures");
+	tcase_add_checked_fixture(tc_IntegratorInstance_createKINSolverStructures,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_createKINSolverStructures, test_IntegratorInstance_createKINSolverStructures);
+	suite_add_tcase(s, tc_IntegratorInstance_createKINSolverStructures);
+
+	tc_IntegratorInstance_freeKINSolverStructures = tcase_create("IntegratorInstance_freeKINSolverStructures");
+	tcase_add_test(tc_IntegratorInstance_freeKINSolverStructures, test_IntegratorInstance_freeKINSolverStructures);
+	suite_add_tcase(s, tc_IntegratorInstance_freeKINSolverStructures);
+
+	tc_IntegratorInstance_nullSolver = tcase_create("IntegratorInstance_nullSolver");
+	tcase_add_checked_fixture(tc_IntegratorInstance_nullSolver,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_nullSolver, test_IntegratorInstance_nullSolver);
+	suite_add_tcase(s, tc_IntegratorInstance_nullSolver);
+
+	tc_IntegratorInstance_printKINSOLStatistics = tcase_create("IntegratorInstance_printKINSOLStatistics");
+	tcase_add_checked_fixture(tc_IntegratorInstance_printKINSOLStatistics,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_printKINSOLStatistics, test_IntegratorInstance_printKINSOLStatistics);
+	suite_add_tcase(s, tc_IntegratorInstance_printKINSOLStatistics);
+
+	return s;
+}
diff --git a/unittest/test_odeConstruct.c b/unittest/test_odeConstruct.c
new file mode 100644
index 0000000..d392dda
--- /dev/null
+++ b/unittest/test_odeConstruct.c
@@ -0,0 +1,566 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/odeConstruct.h>
+#include <sbmlsolver/sbml.h>
+
+/* fixtures */
+static SBMLDocument_t *doc = NULL;
+static Model_t *model;
+
+static void teardown_doc(void)
+{
+	SBMLDocument_free(doc);
+}
+
+/* helpers */
+static void check_species(int i, const char *expected)
+{
+	Species_t *s;
+	ASTNode_t *n;
+	char *ns;
+
+	s = Model_getSpecies(model, i);
+	n = Species_odeFromReactions(s, model);
+	ck_assert(n != NULL);
+	ns = SBML_formulaToString(n);
+	ck_assert(ns != NULL);
+	ck_assert_str_eq(ns, expected);
+	free(ns);
+	ASTNode_free(n);
+}
+
+/* test cases */
+START_TEST(test_Model_getValueById)
+{
+	double v;
+
+	doc = parseModel(EXAMPLES_FILENAME("basic.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+
+	v = Model_getValueById(model, "no_such_id");
+	ck_assert(v == 0);
+	/* compartments */
+	v = Model_getValueById(model, "c");
+	ck_assert(v == 1);
+	/* species */
+	v = Model_getValueById(model, "S1");
+	ck_assert(v == 1.5e-15);
+	v = Model_getValueById(model, "S2");
+	ck_assert(v == 1.5e-15);
+	/* parameters */
+	v = Model_getValueById(model, "k_1");
+	ck_assert(v == 1);
+	v = Model_getValueById(model, "k_2");
+	ck_assert(v == 0);
+	/* reactions */
+	v = Model_getValueById(model, "R1");
+	ck_assert(v == 0);
+	v = Model_getValueById(model, "R2");
+	ck_assert(v == 0);
+}
+END_TEST
+
+START_TEST(test_Model_setValue)
+{
+	int r;
+
+	doc = parseModel(EXAMPLES_FILENAME("basic.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+
+	r = Model_setValue(model, "no_such_id", NULL, 7.77);
+	ck_assert(r == 0);
+	/* compartments */
+	r = Model_setValue(model, "c", NULL, 7.77);
+	ck_assert(r == 1);
+	/* species */
+	r = Model_setValue(model, "S1", NULL, 7.77);
+	ck_assert(r == 1);
+	r = Model_setValue(model, "S2", NULL, 7.77);
+	ck_assert(r == 1);
+	/* parameters */
+	r = Model_setValue(model, "k_1", NULL, 7.77);
+	ck_assert(r == 1);
+	r = Model_setValue(model, "k_2", NULL, 7.77);
+	ck_assert(r == 0);
+	r = Model_setValue(model, "k_2", "R1", 7.77);
+	ck_assert(r == 0);
+	r = Model_setValue(model, "k_2", "R2", 7.77);
+	ck_assert(r == 1);
+}
+END_TEST
+
+START_TEST(test_Model_reduceToOdes_MAPK)
+{
+	Model_t *omodel;
+
+	doc = parseModel(EXAMPLES_FILENAME("MAPK.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+	omodel = Model_reduceToOdes(model);
+
+	ck_assert(omodel != NULL);
+	ck_assert(omodel != model);
+	ck_assert(Model_getNumFunctionDefinitions(omodel) == 0);
+	ck_assert(Model_getNumUnitDefinitions(omodel) == 0);
+	ck_assert(Model_getNumCompartmentTypes(omodel) == 0);
+	ck_assert(Model_getNumSpeciesTypes(omodel) == 0);
+	ck_assert(Model_getNumCompartments(omodel) == 1);
+	ck_assert(Model_getNumSpecies(omodel) == 8);
+	ck_assert(Model_getNumSpeciesWithBoundaryCondition(omodel) == 0);
+	ck_assert(Model_getNumParameters(omodel) == 13);
+	ck_assert(Model_getNumInitialAssignments(omodel) == 0);
+	ck_assert(Model_getNumRules(omodel) == 18);
+	ck_assert(Model_getNumConstraints(omodel) == 0);
+	ck_assert(Model_getNumReactions(omodel) == 0);
+	ck_assert(Model_getNumEvents(omodel) == 0);
+	CHECK_PARAMETER(omodel, 0, "V1");
+	CHECK_PARAMETER(omodel, 1, "Ki");
+	CHECK_PARAMETER(omodel, 2, "K1");
+	CHECK_PARAMETER(omodel, 3, "J0");
+	CHECK_PARAMETER(omodel, 4, "J1");
+	CHECK_PARAMETER(omodel, 5, "J2");
+	CHECK_PARAMETER(omodel, 6, "J3");
+	CHECK_PARAMETER(omodel, 7, "J4");
+	CHECK_PARAMETER(omodel, 8, "J5");
+	CHECK_PARAMETER(omodel, 9, "J6");
+	CHECK_PARAMETER(omodel, 10, "J7");
+	CHECK_PARAMETER(omodel, 11, "J8");
+	CHECK_PARAMETER(omodel, 12, "J9");
+	CHECK_RULE(omodel, 0, "(J1 - J0) / uVol");
+	CHECK_RULE(omodel, 1, "(J0 - J1) / uVol");
+	CHECK_RULE(omodel, 2, "(J5 - J2) / uVol");
+	CHECK_RULE(omodel, 3, "(J2 - J3 + J4 - J5) / uVol");
+	CHECK_RULE(omodel, 4, "(J3 - J4) / uVol");
+	CHECK_RULE(omodel, 5, "(J9 - J6) / uVol");
+	CHECK_RULE(omodel, 6, "(J6 - J7 + J8 - J9) / uVol");
+	CHECK_RULE(omodel, 7, "(J7 - J8) / uVol");
+	CHECK_RULE(omodel, 8, "V1 * MKKK / ((1 + (MAPK_PP / Ki)^1) * (K1 + MKKK))");
+	CHECK_RULE(omodel, 9, "0.25 * MKKK_P / (8 + MKKK_P)");
+	CHECK_RULE(omodel, 10, "0.025 * MKKK_P * MKK / (15 + MKK)");
+	CHECK_RULE(omodel, 11, "0.025 * MKKK_P * MKK_P / (15 + MKK_P)");
+	CHECK_RULE(omodel, 12, "0.75 * MKK_PP / (15 + MKK_PP)");
+	CHECK_RULE(omodel, 13, "0.75 * MKK_P / (15 + MKK_P)");
+	CHECK_RULE(omodel, 14, "0.025 * MKK_PP * MAPK / (15 + MAPK)");
+	CHECK_RULE(omodel, 15, "0.025 * MKK_PP * MAPK_P / (15 + MAPK_P)");
+	CHECK_RULE(omodel, 16, "0.5 * MAPK_PP / (15 + MAPK_PP)");
+	CHECK_RULE(omodel, 17, "0.5 * MAPK_P / (15 + MAPK_P)");
+
+	Model_free(omodel);
+}
+END_TEST
+
+START_TEST(test_Model_reduceToOdes_basic_model1_forward_l2)
+{
+	Model_t *omodel;
+
+	doc = parseModel(EXAMPLES_FILENAME("basic-model1-forward-l2.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+	omodel = Model_reduceToOdes(model);
+
+	ck_assert(omodel != NULL);
+	ck_assert(omodel != model);
+	ck_assert(Model_getNumFunctionDefinitions(omodel) == 0);
+	ck_assert(Model_getNumUnitDefinitions(omodel) == 0);
+	ck_assert(Model_getNumCompartmentTypes(omodel) == 0);
+	ck_assert(Model_getNumSpeciesTypes(omodel) == 0);
+	ck_assert(Model_getNumCompartments(omodel) == 1);
+	ck_assert(Model_getNumSpecies(omodel) == 2);
+	ck_assert(Model_getNumSpeciesWithBoundaryCondition(omodel) == 0);
+	ck_assert(Model_getNumParameters(omodel) == 2);
+	ck_assert(Model_getNumInitialAssignments(omodel) == 0);
+	ck_assert(Model_getNumRules(omodel) == 4);
+	ck_assert(Model_getNumConstraints(omodel) == 0);
+	ck_assert(Model_getNumReactions(omodel) == 0);
+	ck_assert(Model_getNumEvents(omodel) == 0);
+	CHECK_PARAMETER(omodel, 0, "R1");
+	CHECK_PARAMETER(omodel, 1, "R2");
+	CHECK_RULE(omodel, 0, "(R2 - R1) / c");
+	CHECK_RULE(omodel, 1, "(R1 - R2) / c");
+	CHECK_RULE(omodel, 2, "1 * S1");
+	CHECK_RULE(omodel, 3, "0 * S2");
+
+	Model_free(omodel);
+}
+END_TEST
+
+START_TEST(test_Model_reduceToOdes_basic)
+{
+	Model_t *omodel;
+
+	doc = parseModel(EXAMPLES_FILENAME("basic.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+	omodel = Model_reduceToOdes(model);
+
+	ck_assert(omodel != NULL);
+	ck_assert(omodel != model);
+	ck_assert(Model_getNumFunctionDefinitions(omodel) == 0);
+	ck_assert(Model_getNumUnitDefinitions(omodel) == 0);
+	ck_assert(Model_getNumCompartmentTypes(omodel) == 0);
+	ck_assert(Model_getNumSpeciesTypes(omodel) == 0);
+	ck_assert(Model_getNumCompartments(omodel) == 1);
+	ck_assert(Model_getNumSpecies(omodel) == 2);
+	ck_assert(Model_getNumSpeciesWithBoundaryCondition(omodel) == 0);
+	ck_assert(Model_getNumParameters(omodel) == 3);
+	ck_assert(Model_getNumInitialAssignments(omodel) == 0);
+	ck_assert(Model_getNumRules(omodel) == 4);
+	ck_assert(Model_getNumConstraints(omodel) == 0);
+	ck_assert(Model_getNumReactions(omodel) == 0);
+	ck_assert(Model_getNumEvents(omodel) == 0);
+	CHECK_PARAMETER(omodel, 0, "k_1");
+	CHECK_PARAMETER(omodel, 1, "R1");
+	CHECK_PARAMETER(omodel, 2, "R2");
+	CHECK_RULE(omodel, 0, "(R2 - R1) / c");
+	CHECK_RULE(omodel, 1, "(R1 - R2) / c");
+	CHECK_RULE(omodel, 2, "k_1 * S1");
+	CHECK_RULE(omodel, 3, "0 * S2");
+
+	Model_free(omodel);
+}
+END_TEST
+
+START_TEST(test_Model_reduceToOdes_events_1_event_1_assignment_l2)
+{
+	Model_t *omodel;
+
+	doc = parseModel(EXAMPLES_FILENAME("events-1-event-1-assignment-l2.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+	omodel = Model_reduceToOdes(model);
+
+	ck_assert(omodel != NULL);
+	ck_assert(omodel != model);
+	ck_assert(Model_getNumFunctionDefinitions(omodel) == 0);
+	ck_assert(Model_getNumUnitDefinitions(omodel) == 0);
+	ck_assert(Model_getNumCompartmentTypes(omodel) == 0);
+	ck_assert(Model_getNumSpeciesTypes(omodel) == 0);
+	ck_assert(Model_getNumCompartments(omodel) == 1);
+	ck_assert(Model_getNumSpecies(omodel) == 2);
+	ck_assert(Model_getNumSpeciesWithBoundaryCondition(omodel) == 0);
+	ck_assert(Model_getNumParameters(omodel) == 1);
+	ck_assert(Model_getNumInitialAssignments(omodel) == 0);
+	ck_assert(Model_getNumRules(omodel) == 3);
+	ck_assert(Model_getNumConstraints(omodel) == 0);
+	ck_assert(Model_getNumReactions(omodel) == 0);
+	ck_assert(Model_getNumEvents(omodel) == 1);
+	CHECK_PARAMETER(omodel, 0, "R");
+	CHECK_RULE(omodel, 0, "-(R / compartment)");
+	CHECK_RULE(omodel, 1, "R / compartment");
+	CHECK_RULE(omodel, 2, "S1");
+	/* TODO */
+
+	Model_free(omodel);
+}
+END_TEST
+
+START_TEST(test_Model_reduceToOdes_events_2_events_1_assignment_l2)
+{
+	Model_t *omodel;
+
+	doc = parseModel(EXAMPLES_FILENAME("events-2-events-1-assignment-l2.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+	omodel = Model_reduceToOdes(model);
+
+	ck_assert(omodel != NULL);
+	ck_assert(omodel != model);
+	ck_assert(Model_getNumFunctionDefinitions(omodel) == 0);
+	ck_assert(Model_getNumUnitDefinitions(omodel) == 0);
+	ck_assert(Model_getNumCompartmentTypes(omodel) == 0);
+	ck_assert(Model_getNumSpeciesTypes(omodel) == 0);
+	ck_assert(Model_getNumCompartments(omodel) == 1);
+	ck_assert(Model_getNumSpecies(omodel) == 2);
+	ck_assert(Model_getNumSpeciesWithBoundaryCondition(omodel) == 0);
+	ck_assert(Model_getNumParameters(omodel) == 1);
+	ck_assert(Model_getNumInitialAssignments(omodel) == 0);
+	ck_assert(Model_getNumRules(omodel) == 3);
+	ck_assert(Model_getNumConstraints(omodel) == 0);
+	ck_assert(Model_getNumReactions(omodel) == 0);
+	ck_assert(Model_getNumEvents(omodel) == 2);
+	CHECK_PARAMETER(omodel, 0, "R");
+	CHECK_RULE(omodel, 0, "-(R / compartment)");
+	CHECK_RULE(omodel, 1, "R / compartment");
+	CHECK_RULE(omodel, 2, "S1");
+	/* TODO */
+
+	Model_free(omodel);
+}
+END_TEST
+
+START_TEST(test_Model_reduceToOdes_huang96)
+{
+	Model_t *omodel;
+
+	doc = parseModel(EXAMPLES_FILENAME("huang96.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+	omodel = Model_reduceToOdes(model);
+
+	ck_assert(omodel != NULL);
+	ck_assert(omodel != model);
+	ck_assert(Model_getNumFunctionDefinitions(omodel) == 0);
+	ck_assert(Model_getNumUnitDefinitions(omodel) == 0);
+	ck_assert(Model_getNumCompartmentTypes(omodel) == 0);
+	ck_assert(Model_getNumSpeciesTypes(omodel) == 0);
+	ck_assert(Model_getNumCompartments(omodel) == 1);
+	ck_assert(Model_getNumSpecies(omodel) == 22);
+	ck_assert(Model_getNumSpeciesWithBoundaryCondition(omodel) == 0);
+	ck_assert(Model_getNumParameters(omodel) == 20);
+	ck_assert(Model_getNumInitialAssignments(omodel) == 0);
+	ck_assert(Model_getNumRules(omodel) == 42);
+	ck_assert(Model_getNumConstraints(omodel) == 0);
+	ck_assert(Model_getNumReactions(omodel) == 0);
+	ck_assert(Model_getNumEvents(omodel) == 0);
+	CHECK_PARAMETER(omodel, 0, "r1a");
+	CHECK_PARAMETER(omodel, 1, "r1b");
+	CHECK_PARAMETER(omodel, 2, "r2a");
+	CHECK_PARAMETER(omodel, 3, "r2b");
+	CHECK_PARAMETER(omodel, 4, "r3a");
+	CHECK_PARAMETER(omodel, 5, "r3b");
+	CHECK_PARAMETER(omodel, 6, "r4a");
+	CHECK_PARAMETER(omodel, 7, "r4b");
+	CHECK_PARAMETER(omodel, 8, "r5a");
+	CHECK_PARAMETER(omodel, 9, "r5b");
+	CHECK_PARAMETER(omodel, 10, "r6a");
+	CHECK_PARAMETER(omodel, 11, "r6b");
+	CHECK_PARAMETER(omodel, 12, "r7a");
+	CHECK_PARAMETER(omodel, 13, "r7b");
+	CHECK_PARAMETER(omodel, 14, "r8a");
+	CHECK_PARAMETER(omodel, 15, "r8b");
+	CHECK_PARAMETER(omodel, 16, "r9a");
+	CHECK_PARAMETER(omodel, 17, "r9b");
+	CHECK_PARAMETER(omodel, 18, "r10a");
+	CHECK_PARAMETER(omodel, 19, "r10b");
+	CHECK_RULE(omodel, 0, "(r1b - r1a) / compartment");
+	CHECK_RULE(omodel, 1, "(r2b - r2a) / compartment");
+	CHECK_RULE(omodel, 2, "(r2b - r1a) / compartment");
+	CHECK_RULE(omodel, 3, "(r1b - r2a - r3a + r3b - r5a + r5b) / compartment");
+	CHECK_RULE(omodel, 4, "(r4b - r3a) / compartment");
+	CHECK_RULE(omodel, 5, "(r3b - r4a - r5a + r6b) / compartment");
+	CHECK_RULE(omodel, 6, "(r5b - r6a - r7a + r7b - r9a + r9b) / compartment");
+	CHECK_RULE(omodel, 7, "(r8b - r7a) / compartment");
+	CHECK_RULE(omodel, 8, "(r7b - r8a - r9a + r10b) / compartment");
+	CHECK_RULE(omodel, 9, "(r9b - r10a) / compartment");
+	CHECK_RULE(omodel, 10, "(r8b - r8a - r10a + r10b) / compartment");
+	CHECK_RULE(omodel, 11, "(r4b - r4a - r6a + r6b) / compartment");
+	CHECK_RULE(omodel, 12, "(r1a - r1b) / compartment");
+	CHECK_RULE(omodel, 13, "(r2a - r2b) / compartment");
+	CHECK_RULE(omodel, 14, "(r3a - r3b) / compartment");
+	CHECK_RULE(omodel, 15, "(r5a - r5b) / compartment");
+	CHECK_RULE(omodel, 16, "(r7a - r7b) / compartment");
+	CHECK_RULE(omodel, 17, "(r9a - r9b) / compartment");
+	CHECK_RULE(omodel, 18, "(r6a - r6b) / compartment");
+	CHECK_RULE(omodel, 19, "(r4a - r4b) / compartment");
+	CHECK_RULE(omodel, 20, "(r10a - r10b) / compartment");
+	CHECK_RULE(omodel, 21, "(r8a - r8b) / compartment");
+	CHECK_RULE(omodel, 22, "1000 * E1 * KKK - 150 * E1_KKK");
+	CHECK_RULE(omodel, 23, "150 * E1_KKK");
+	CHECK_RULE(omodel, 24, "1000 * E2 * P_KKK - 150 * E2_P_KKK");
+	CHECK_RULE(omodel, 25, "150 * E2_P_KKK");
+	CHECK_RULE(omodel, 26, "1000 * KK * P_KKK - 150 * P_KKK_KK");
+	CHECK_RULE(omodel, 27, "150 * P_KKK_KK");
+	CHECK_RULE(omodel, 28, "1000 * P_KK * KKPase - 150 * KKPase_P_KK");
+	CHECK_RULE(omodel, 29, "150 * KKPase_P_KK");
+	CHECK_RULE(omodel, 30, "1000 * P_KK * P_KKK - 150 * P_KKK_P_KK");
+	CHECK_RULE(omodel, 31, "150 * P_KKK_P_KK");
+	CHECK_RULE(omodel, 32, "1000 * PP_KK * KKPase - 150 * KKPase_PP_KK");
+	CHECK_RULE(omodel, 33, "150 * KKPase_PP_KK");
+	CHECK_RULE(omodel, 34, "1000 * K * PP_KK - 150 * PP_KK_K");
+	CHECK_RULE(omodel, 35, "150 * PP_KK_K");
+	CHECK_RULE(omodel, 36, "1000 * P_K * KPase - 150 * KPase_P_K");
+	CHECK_RULE(omodel, 37, "150 * KPase_P_K");
+	CHECK_RULE(omodel, 38, "1000 * P_K * PP_KK - 150 * PP_KK_P_K");
+	CHECK_RULE(omodel, 39, "150 * PP_KK_P_K");
+	CHECK_RULE(omodel, 40, "1000 * PP_K * KPase - 150 * KPase_PP_K");
+	CHECK_RULE(omodel, 41, "150 * KPase_PP_K");
+
+	Model_free(omodel);
+}
+END_TEST
+
+START_TEST(test_Model_reduceToOdes_repressilator)
+{
+	Model_t *omodel;
+
+	doc = parseModel(EXAMPLES_FILENAME("repressilator.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+	omodel = Model_reduceToOdes(model);
+
+	ck_assert(omodel != NULL);
+	ck_assert(omodel != model);
+	ck_assert(Model_getNumFunctionDefinitions(omodel) == 0);
+	ck_assert(Model_getNumUnitDefinitions(omodel) == 0);
+	ck_assert(Model_getNumCompartmentTypes(omodel) == 0);
+	ck_assert(Model_getNumSpeciesTypes(omodel) == 0);
+	ck_assert(Model_getNumCompartments(omodel) == 1);
+	ck_assert(Model_getNumSpecies(omodel) == 6);
+	ck_assert(Model_getNumSpeciesWithBoundaryCondition(omodel) == 0);
+	ck_assert(Model_getNumParameters(omodel) == 3);
+	ck_assert(Model_getNumInitialAssignments(omodel) == 0);
+	ck_assert(Model_getNumRules(omodel) == 6);
+	ck_assert(Model_getNumConstraints(omodel) == 0);
+	ck_assert(Model_getNumReactions(omodel) == 0);
+	ck_assert(Model_getNumEvents(omodel) == 0);
+	CHECK_PARAMETER(omodel, 0, "alpha");
+	CHECK_PARAMETER(omodel, 1, "beta");
+	CHECK_PARAMETER(omodel, 2, "rho");
+	CHECK_RULE(omodel, 0, "beta * (y1 - x1)");
+	CHECK_RULE(omodel, 1, "beta * (y2 - x2)");
+	CHECK_RULE(omodel, 2, "beta * (y3 - x3)");
+	CHECK_RULE(omodel, 3, "alpha * x1 / (1 + x1 + rho * x3) - y1");
+	CHECK_RULE(omodel, 4, "alpha * x2 / (1 + x2 + rho * x1) - y2");
+	CHECK_RULE(omodel, 5, "alpha * x3 / (1 + x3 + rho * x2) - y3");
+
+	Model_free(omodel);
+}
+END_TEST
+
+START_TEST(test_Species_odeFromReactions_MAPK)
+{
+	doc = parseModel(EXAMPLES_FILENAME("MAPK.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+
+	check_species(0, "(J1 - J0) / uVol"); /* MKKK */
+	check_species(1, "(J0 - J1) / uVol"); /* MKKK_P */
+	check_species(2, "(J5 - J2) / uVol"); /* MKK */
+	check_species(3, "(J2 - J3 + J4 - J5) / uVol"); /* MKK_P */
+	check_species(4, "(J3 - J4) / uVol"); /* MKK_PP */
+	check_species(5, "(J9 - J6) / uVol"); /* MAPK */
+	check_species(6, "(J6 - J7 + J8 - J9) / uVol"); /* MAPK_P */
+	check_species(7, "(J7 - J8) / uVol"); /* MAPK_PP */
+}
+END_TEST
+
+START_TEST(test_Species_odeFromReactions_basic_model1_forward_l2)
+{
+	doc = parseModel(EXAMPLES_FILENAME("basic-model1-forward-l2.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+
+	check_species(0, "(R2 - R1) / c"); /* S1 */
+	check_species(1, "(R1 - R2) / c"); /* S2 */
+}
+END_TEST
+
+START_TEST(test_Species_odeFromReactions_basic)
+{
+	doc = parseModel(EXAMPLES_FILENAME("basic.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+
+	check_species(0, "(R2 - R1) / c"); /* S1 */
+	check_species(1, "(R1 - R2) / c"); /* S2 */
+}
+END_TEST
+
+START_TEST(test_Species_odeFromReactions_events_1_event_1_assignment_l2)
+{
+	doc = parseModel(EXAMPLES_FILENAME("events-1-event-1-assignment-l2.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+
+	check_species(0, "-(R / compartment)"); /* S1 */
+	check_species(1, "R / compartment"); /* S2 */
+}
+END_TEST
+
+START_TEST(test_Species_odeFromReactions_events_2_events_1_assignment_l2)
+{
+	doc = parseModel(EXAMPLES_FILENAME("events-2-events-1-assignment-l2.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+
+	check_species(0, "-(R / compartment)"); /* S1 */
+	check_species(1, "R / compartment"); /* S2 */
+}
+END_TEST
+
+START_TEST(test_Species_odeFromReactions_huang96)
+{
+	doc = parseModel(EXAMPLES_FILENAME("huang96.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+
+	check_species(0, "(r1b - r1a) / compartment"); /* E1 */
+	check_species(1, "(r2b - r2a) / compartment"); /* E2 */
+	check_species(2, "(r2b - r1a) / compartment"); /* KKK */
+	check_species(3, "(r1b - r2a - r3a + r3b - r5a + r5b) / compartment"); /* P_KKK */
+	check_species(4, "(r4b - r3a) / compartment"); /* KK */
+	check_species(5, "(r3b - r4a - r5a + r6b) / compartment"); /* P_KK */
+	check_species(6, "(r5b - r6a - r7a + r7b - r9a + r9b) / compartment"); /* PP_KK */
+	check_species(7, "(r8b - r7a) / compartment"); /* K */
+	check_species(8, "(r7b - r8a - r9a + r10b) / compartment"); /* P_K */
+	check_species(9, "(r9b - r10a) / compartment"); /* PP_K */
+	check_species(10, "(r8b - r8a - r10a + r10b) / compartment"); /* KPase */
+	check_species(11, "(r4b - r4a - r6a + r6b) / compartment"); /* KKPase */
+	check_species(12, "(r1a - r1b) / compartment"); /* E1_KKK */
+	check_species(13, "(r2a - r2b) / compartment"); /* E2_P_KKK */
+	check_species(14, "(r3a - r3b) / compartment"); /* P_KKK_KK */
+	check_species(15, "(r5a - r5b) / compartment"); /* P_KKK_P_KK */
+	check_species(16, "(r7a - r7b) / compartment"); /* PP_KK_K */
+	check_species(17, "(r9a - r9b) / compartment"); /* PP_KK_P_K */
+	check_species(18, "(r6a - r6b) / compartment"); /* KKPase_PP_KK */
+	check_species(19, "(r4a - r4b) / compartment"); /* KKPase_P_KK */
+	check_species(20, "(r10a - r10b) / compartment"); /* KPase_PP_K */
+	check_species(21, "(r8a - r8b) / compartment"); /* KPase_P_K */
+}
+END_TEST
+
+START_TEST(test_Species_odeFromReactions_repressilator)
+{
+	doc = parseModel(EXAMPLES_FILENAME("repressilator.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+
+	check_species(0, "0"); /* x1 */
+	check_species(1, "0"); /* x2 */
+	check_species(2, "0"); /* x3 */
+	check_species(3, "0"); /* y1 */
+	check_species(4, "0"); /* y2 */
+	check_species(5, "0"); /* y3 */
+}
+END_TEST
+
+/* public */
+Suite *create_suite_odeConstruct(void)
+{
+	Suite *s;
+	TCase *tc_Model_getValueById;
+	TCase *tc_Model_setValue;
+	TCase *tc_Model_reduceToOdes;
+	TCase *tc_Species_odeFromReactions;
+
+	s = suite_create("odeConstruct");
+
+	tc_Model_getValueById = tcase_create("Model_getValueById");
+	tcase_add_checked_fixture(tc_Model_getValueById,
+							  NULL,
+							  teardown_doc);
+	tcase_add_test(tc_Model_getValueById, test_Model_getValueById);
+	suite_add_tcase(s, tc_Model_getValueById);
+
+	tc_Model_setValue = tcase_create("Model_setValue");
+	tcase_add_checked_fixture(tc_Model_setValue,
+							  NULL,
+							  teardown_doc);
+	tcase_add_test(tc_Model_setValue, test_Model_setValue);
+	suite_add_tcase(s, tc_Model_setValue);
+
+	tc_Model_reduceToOdes = tcase_create("Model_reduceToOdes");
+	tcase_add_checked_fixture(tc_Model_reduceToOdes,
+							  NULL,
+							  teardown_doc);
+	tcase_add_test(tc_Model_reduceToOdes, test_Model_reduceToOdes_MAPK);
+	tcase_add_test(tc_Model_reduceToOdes, test_Model_reduceToOdes_basic_model1_forward_l2);
+	tcase_add_test(tc_Model_reduceToOdes, test_Model_reduceToOdes_basic);
+	tcase_add_test(tc_Model_reduceToOdes, test_Model_reduceToOdes_events_1_event_1_assignment_l2);
+	tcase_add_test(tc_Model_reduceToOdes, test_Model_reduceToOdes_events_2_events_1_assignment_l2);
+	tcase_add_test(tc_Model_reduceToOdes, test_Model_reduceToOdes_huang96);
+	tcase_add_test(tc_Model_reduceToOdes, test_Model_reduceToOdes_repressilator);
+	suite_add_tcase(s, tc_Model_reduceToOdes);
+
+	tc_Species_odeFromReactions = tcase_create("Species_odeFromReactions");
+	tcase_add_checked_fixture(tc_Species_odeFromReactions,
+							  NULL,
+							  teardown_doc);
+	tcase_add_test(tc_Species_odeFromReactions, test_Species_odeFromReactions_MAPK);
+	tcase_add_test(tc_Species_odeFromReactions, test_Species_odeFromReactions_basic_model1_forward_l2);
+	tcase_add_test(tc_Species_odeFromReactions, test_Species_odeFromReactions_basic);
+	tcase_add_test(tc_Species_odeFromReactions, test_Species_odeFromReactions_events_1_event_1_assignment_l2);
+	tcase_add_test(tc_Species_odeFromReactions, test_Species_odeFromReactions_events_2_events_1_assignment_l2);
+	tcase_add_test(tc_Species_odeFromReactions, test_Species_odeFromReactions_huang96);
+	tcase_add_test(tc_Species_odeFromReactions, test_Species_odeFromReactions_repressilator);
+	suite_add_tcase(s, tc_Species_odeFromReactions);
+
+	return s;
+}
diff --git a/unittest/test_odeModel.c b/unittest/test_odeModel.c
new file mode 100644
index 0000000..b8535a3
--- /dev/null
+++ b/unittest/test_odeModel.c
@@ -0,0 +1,1059 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/odeModel.h>
+#include <sbmlsolver/solverError.h>
+
+/* fixtures */
+static odeModel_t *model;
+
+static void teardown_model(void)
+{
+  ODEModel_free(model);
+}
+
+static ASTNode_t *det;
+
+static void teardown_determinant(void)
+{
+  ASTNode_free(det);
+}
+
+static odeSense_t *sense;
+
+static void teardown_sense(void)
+{
+  ODESense_free(sense);
+}
+
+/* helpers */
+#define CHECK_VARIABLEINDEX(vi, i, name) do {              \
+    ck_assert(vi != NULL);                      \
+    ck_assert_str_eq(VariableIndex_getName(vi, model), (name));    \
+    ck_assert(VariableIndex_getName(vi, model) == ODEModel_getVariableName(model, vi));  \
+    ck_assert_int_eq(VariableIndex_getIndex(vi), (i));        \
+  } while (0)
+
+#define CHECK_VI_EQ(vi, expected) do {      \
+    const ASTNode_t *node;          \
+    char *actual;              \
+    node = ODEModel_getOde(model, (vi));  \
+    ck_assert(node != NULL);        \
+    actual = SBML_formulaToString(node);  \
+    ck_assert_str_eq(actual, (expected));  \
+    free(actual);              \
+  } while (0)
+
+#define CHECK_VI_EQ4(vi, i, name, expected) do {  \
+    CHECK_VARIABLEINDEX(vi, i, name);      \
+    CHECK_VI_EQ(vi, expected);          \
+  } while (0)
+
+#define CHECK_EQ(i, name, expected) do {          \
+    variableIndex_t *vi;                \
+    vi = ODEModel_getVariableIndexByNum(model, (i));  \
+    CHECK_VI_EQ4(vi, i, name, expected);        \
+    VariableIndex_free(vi);                \
+    vi = ODEModel_getOdeVariableIndex(model, (i));    \
+    CHECK_VI_EQ4(vi, i, name, expected);        \
+    VariableIndex_free(vi);                \
+  } while (0)
+
+#define CHECK_VI_ASSIGNMENT(vi, expected) do {    \
+    const ASTNode_t *node;            \
+    char *actual;                \
+    node = ODEModel_getAssignment(model, (vi));  \
+    ck_assert(node != NULL);          \
+    actual = SBML_formulaToString(node);    \
+    ck_assert_str_eq(actual, (expected));    \
+    free(actual);                \
+  } while (0)
+
+#define CHECK_VI_ASSIGNMENT4(vi, i, name, expected) do {  \
+    CHECK_VARIABLEINDEX(vi, i, name);          \
+    CHECK_VI_ASSIGNMENT(vi, expected);          \
+  } while (0)
+
+#define CHECK_ASSIGNMENT(i, ii, name, expected) do {      \
+    variableIndex_t *vi;                  \
+    vi = ODEModel_getVariableIndexByNum(model, (i));    \
+    CHECK_VI_ASSIGNMENT4(vi, i, name, expected);      \
+    VariableIndex_free(vi);                  \
+    vi = ODEModel_getAssignedVariableIndex(model, (ii));  \
+    CHECK_VI_ASSIGNMENT4(vi, i, name, expected);      \
+    VariableIndex_free(vi);                  \
+  } while (0)
+
+#define CHECK_CONSTANT(i, ii, name) do {          \
+    variableIndex_t *vi;                \
+    vi = ODEModel_getVariableIndexByNum(model, (i));  \
+    CHECK_VARIABLEINDEX(vi, i, name);          \
+    VariableIndex_free(vi);                \
+    vi = ODEModel_getConstantIndex(model, (ii));    \
+    CHECK_VARIABLEINDEX(vi, i, name);          \
+    VariableIndex_free(vi);                \
+  } while (0)
+
+#define CHECK_NO_ERROR() \
+  ck_assert_int_eq(SolverError_getNum(ERROR_ERROR_TYPE), 0)
+
+#define CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY() do {            \
+    ck_assert_int_eq(SolverError_getNum(ERROR_ERROR_TYPE), 1);    \
+    ck_assert_str_eq(SolverError_getMessage(ERROR_ERROR_TYPE, 0),  \
+             "Cyclic dependency found in topological sorting."); \
+    SolverError_clear();                      \
+  } while (0)
+
+#define CHECK_JACOBI_ELEMENT(n, expected_i, expected_j) do {      \
+    const nonzeroElem_t *nze;                    \
+    variableIndex_t *vi_i, *vi_j;                  \
+    nze = ODEModel_getJacobiElement(model, (n));          \
+    vi_i = ODEModel_getVariableIndexByNum(model, (expected_i));    \
+    vi_j = ODEModel_getVariableIndexByNum(model, (expected_j));    \
+    ck_assert(nze != NULL);                      \
+    ck_assert_int_eq(nze->i, (expected_i));              \
+    ck_assert_int_eq(nze->j, (expected_j));              \
+    ck_assert(ODEModel_getJacobianIJEntry(model, (expected_i), (expected_j)) == nze->ij); \
+    ck_assert(ODEModel_getJacobianEntry(model, vi_i, vi_j) == nze->ij); \
+    VariableIndex_free(vi_i);                    \
+    VariableIndex_free(vi_j);                    \
+  } while (0)
+
+#define CHECK_DETERMINANT(expected) do {    \
+    char *actual;              \
+    actual = SBML_formulaToString(det);    \
+    ck_assert_str_eq(actual, (expected));  \
+    free(actual);              \
+  } while (0)
+
+#define CHECK_SENSITIVITY(n, expected) do {          \
+    variableIndex_t *vi;                \
+    vi = ODESense_getSensParamIndexByNum(sense, (n));  \
+    ck_assert(vi != NULL);                \
+    ck_assert_int_eq(vi->index, (expected));      \
+    VariableIndex_free(vi);                \
+  } while (0)
+
+#define CHECK_SENSITIVITY_ENTRY(i, j, expected) do {    \
+    variableIndex_t *vi_i, *vi_j;            \
+    const ASTNode_t *node0, *node1;            \
+    char *actual;                    \
+    vi_i = ODEModel_getVariableIndexByNum(model, (i));  \
+    vi_j = ODESense_getSensParamIndexByNum(sense, (j));  \
+    node0 = ODESense_getSensEntry(sense, vi_i, vi_j);  \
+    ck_assert(node0 != NULL);              \
+    actual = SBML_formulaToString(node0);        \
+    ck_assert_str_eq(actual, (expected));        \
+    free(actual);                    \
+    node1 = ODESense_getSensIJEntry(sense, (i), (j));  \
+    ck_assert(node0 == node1);              \
+    VariableIndex_free(vi_i);              \
+    VariableIndex_free(vi_j);              \
+  } while (0)
+
+/* test cases */
+START_TEST(test_ODEModel_createFromFile_MAPK)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+  ck_assert(model != NULL);
+  ck_assert_int_eq(ODEModel_getNalg(model), 0);
+  ck_assert_int_eq(ODEModel_getNeq(model), 8);
+  ck_assert_int_eq(ODEModel_getNumAssignments(model), 10);
+  ck_assert_int_eq(ODEModel_getNumConstants(model), 4);
+  ck_assert_int_eq(ODEModel_getNumValues(model), 22);
+  ck_assert_int_eq(ODEModel_hasVariable(model, "no_such_variable"), 0);
+  CHECK_EQ(0, "MKKK", "(J1 - J0) / uVol");
+  CHECK_EQ(1, "MKKK_P", "(J0 - J1) / uVol");
+  CHECK_EQ(2, "MKK", "(J5 - J2) / uVol");
+  CHECK_EQ(3, "MKK_P", "(J2 - J3 + J4 - J5) / uVol");
+  CHECK_EQ(4, "MKK_PP", "(J3 - J4) / uVol");
+  CHECK_EQ(5, "MAPK", "(J9 - J6) / uVol");
+  CHECK_EQ(6, "MAPK_P", "(J6 - J7 + J8 - J9) / uVol");
+  CHECK_EQ(7, "MAPK_PP", "(J7 - J8) / uVol");
+  CHECK_ASSIGNMENT(8, 0, "J0", "V1 * MKKK / ((1 + (MAPK_PP / Ki)^1) * (K1 + MKKK))");
+  CHECK_ASSIGNMENT(9, 1, "J1", "0.25 * MKKK_P / (8 + MKKK_P)");
+  CHECK_ASSIGNMENT(10, 2, "J2", "0.025 * MKKK_P * MKK / (15 + MKK)");
+  CHECK_ASSIGNMENT(11, 3, "J3", "0.025 * MKKK_P * MKK_P / (15 + MKK_P)");
+  CHECK_ASSIGNMENT(12, 4, "J4", "0.75 * MKK_PP / (15 + MKK_PP)");
+  CHECK_ASSIGNMENT(13, 5, "J5", "0.75 * MKK_P / (15 + MKK_P)");
+  CHECK_ASSIGNMENT(14, 6, "J6", "0.025 * MKK_PP * MAPK / (15 + MAPK)");
+  CHECK_ASSIGNMENT(15, 7, "J7", "0.025 * MKK_PP * MAPK_P / (15 + MAPK_P)");
+  CHECK_ASSIGNMENT(16, 8, "J8", "0.5 * MAPK_PP / (15 + MAPK_PP)");
+  CHECK_ASSIGNMENT(17, 9, "J9", "0.5 * MAPK_P / (15 + MAPK_P)");
+  CHECK_CONSTANT(18, 0, "uVol");
+  CHECK_CONSTANT(19, 1, "V1");
+  CHECK_CONSTANT(20, 2, "Ki");
+  CHECK_CONSTANT(21, 3, "K1");
+  ck_assert(!ODEModel_hasCycle(model));
+  ck_assert_int_eq(ODEModel_getNumAssignmentsBeforeODEs(model), 10);
+  ck_assert_int_eq(ODEModel_getNumAssignmentsBeforeEvents(model), 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_createFromFile_basic_model1_forward_l2)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("basic-model1-forward-l2.xml"));
+  ck_assert(model != NULL);
+  ck_assert_int_eq(ODEModel_getNalg(model), 0);
+  ck_assert_int_eq(ODEModel_getNeq(model), 2);
+  ck_assert_int_eq(ODEModel_getNumAssignments(model), 2);
+  ck_assert_int_eq(ODEModel_getNumConstants(model), 1);
+  ck_assert_int_eq(ODEModel_getNumValues(model), 5);
+  ck_assert_int_eq(ODEModel_hasVariable(model, "no_such_variable"), 0);
+  CHECK_EQ(0, "S1", "(R2 - R1) / c");
+  CHECK_EQ(1, "S2", "(R1 - R2) / c");
+  CHECK_ASSIGNMENT(2, 0, "R1", "1 * S1");
+  CHECK_ASSIGNMENT(3, 1, "R2", "0 * S2");
+  CHECK_CONSTANT(4, 0, "c");
+  ck_assert(!ODEModel_hasCycle(model));
+  ck_assert_int_eq(ODEModel_getNumAssignmentsBeforeODEs(model), 2);
+  ck_assert_int_eq(ODEModel_getNumAssignmentsBeforeEvents(model), 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_createFromFile_basic)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("basic.xml"));
+  ck_assert(model != NULL);
+  ck_assert_int_eq(ODEModel_getNalg(model), 0);
+  ck_assert_int_eq(ODEModel_getNeq(model), 2);
+  ck_assert_int_eq(ODEModel_getNumAssignments(model), 2);
+  ck_assert_int_eq(ODEModel_getNumConstants(model), 2);
+  ck_assert_int_eq(ODEModel_getNumValues(model), 6);
+  ck_assert_int_eq(ODEModel_hasVariable(model, "no_such_variable"), 0);
+  CHECK_EQ(0, "S1", "(R2 - R1) / c");
+  CHECK_EQ(1, "S2", "(R1 - R2) / c");
+  CHECK_ASSIGNMENT(2, 0, "R1", "k_1 * S1");
+  CHECK_ASSIGNMENT(3, 1, "R2", "0 * S2");
+  CHECK_CONSTANT(4, 0, "c");
+  CHECK_CONSTANT(5, 1, "k_1");
+  ck_assert(!ODEModel_hasCycle(model));
+  ck_assert_int_eq(ODEModel_getNumAssignmentsBeforeODEs(model), 2);
+  ck_assert_int_eq(ODEModel_getNumAssignmentsBeforeEvents(model), 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_createFromFile_events_1_event_1_assignment_l2)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("events-1-event-1-assignment-l2.xml"));
+  ck_assert(model != NULL);
+  ck_assert_int_eq(ODEModel_getNalg(model), 0);
+  ck_assert_int_eq(ODEModel_getNeq(model), 2);
+  ck_assert_int_eq(ODEModel_getNumAssignments(model), 1);
+  ck_assert_int_eq(ODEModel_getNumConstants(model), 1);
+  ck_assert_int_eq(ODEModel_getNumValues(model), 4);
+  ck_assert_int_eq(ODEModel_hasVariable(model, "no_such_variable"), 0);
+  CHECK_EQ(0, "S1", "-(R / compartment)");
+  CHECK_EQ(1, "S2", "R / compartment");
+  CHECK_ASSIGNMENT(2, 0, "R", "S1");
+  CHECK_CONSTANT(3, 0, "compartment");
+  ck_assert(!ODEModel_hasCycle(model));
+  ck_assert_int_eq(ODEModel_getNumAssignmentsBeforeODEs(model), 1);
+  ck_assert_int_eq(ODEModel_getNumAssignmentsBeforeEvents(model), 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_createFromFile_events_2_events_1_assignment_l2)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("events-2-events-1-assignment-l2.xml"));
+  ck_assert(model != NULL);
+  ck_assert_int_eq(ODEModel_getNalg(model), 0);
+  ck_assert_int_eq(ODEModel_getNeq(model), 2);
+  ck_assert_int_eq(ODEModel_getNumAssignments(model), 1);
+  ck_assert_int_eq(ODEModel_getNumConstants(model), 1);
+  ck_assert_int_eq(ODEModel_getNumValues(model), 4);
+  ck_assert_int_eq(ODEModel_hasVariable(model, "no_such_variable"), 0);
+  CHECK_EQ(0, "S1", "-(R / compartment)");
+  CHECK_EQ(1, "S2", "R / compartment");
+  CHECK_ASSIGNMENT(2, 0, "R", "S1");
+  CHECK_CONSTANT(3, 0, "compartment");
+  ck_assert(!ODEModel_hasCycle(model));
+  ck_assert_int_eq(ODEModel_getNumAssignmentsBeforeODEs(model), 1);
+  ck_assert_int_eq(ODEModel_getNumAssignmentsBeforeEvents(model), 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_createFromFile_huang96)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("huang96.xml"));
+  ck_assert(model != NULL);
+  ck_assert_int_eq(ODEModel_getNalg(model), 0);
+  ck_assert_int_eq(ODEModel_getNeq(model), 22);
+  ck_assert_int_eq(ODEModel_getNumAssignments(model), 20);
+  ck_assert_int_eq(ODEModel_getNumConstants(model), 1);
+  ck_assert_int_eq(ODEModel_getNumValues(model), 43);
+  ck_assert_int_eq(ODEModel_hasVariable(model, "no_such_variable"), 0);
+  CHECK_EQ(0, "E1", "(r1b - r1a) / compartment");
+  CHECK_EQ(1, "E2", "(r2b - r2a) / compartment");
+  CHECK_EQ(2, "KKK", "(r2b - r1a) / compartment");
+  CHECK_EQ(3, "P_KKK", "(r1b - r2a - r3a + r3b - r5a + r5b) / compartment");
+  CHECK_EQ(4, "KK", "(r4b - r3a) / compartment");
+  CHECK_EQ(5, "P_KK", "(r3b - r4a - r5a + r6b) / compartment");
+  CHECK_EQ(6, "PP_KK", "(r5b - r6a - r7a + r7b - r9a + r9b) / compartment");
+  CHECK_EQ(7, "K", "(r8b - r7a) / compartment");
+  CHECK_EQ(8, "P_K", "(r7b - r8a - r9a + r10b) / compartment");
+  CHECK_EQ(9, "PP_K", "(r9b - r10a) / compartment");
+  CHECK_EQ(10, "KPase", "(r8b - r8a - r10a + r10b) / compartment");
+  CHECK_EQ(11, "KKPase", "(r4b - r4a - r6a + r6b) / compartment");
+  CHECK_EQ(12, "E1_KKK", "(r1a - r1b) / compartment");
+  CHECK_EQ(13, "E2_P_KKK", "(r2a - r2b) / compartment");
+  CHECK_EQ(14, "P_KKK_KK", "(r3a - r3b) / compartment");
+  CHECK_EQ(15, "P_KKK_P_KK", "(r5a - r5b) / compartment");
+  CHECK_EQ(16, "PP_KK_K", "(r7a - r7b) / compartment");
+  CHECK_EQ(17, "PP_KK_P_K", "(r9a - r9b) / compartment");
+  CHECK_EQ(18, "KKPase_PP_KK", "(r6a - r6b) / compartment");
+  CHECK_EQ(19, "KKPase_P_KK", "(r4a - r4b) / compartment");
+  CHECK_EQ(20, "KPase_PP_K", "(r10a - r10b) / compartment");
+  CHECK_EQ(21, "KPase_P_K", "(r8a - r8b) / compartment");
+  CHECK_ASSIGNMENT(22, 0, "r1a", "1000 * E1 * KKK - 150 * E1_KKK");
+  CHECK_ASSIGNMENT(23, 1, "r1b", "150 * E1_KKK");
+  CHECK_ASSIGNMENT(24, 2, "r2a", "1000 * E2 * P_KKK - 150 * E2_P_KKK");
+  CHECK_ASSIGNMENT(25, 3, "r2b", "150 * E2_P_KKK");
+  CHECK_ASSIGNMENT(26, 4, "r3a", "1000 * KK * P_KKK - 150 * P_KKK_KK");
+  CHECK_ASSIGNMENT(27, 5, "r3b", "150 * P_KKK_KK");
+  CHECK_ASSIGNMENT(28, 6, "r4a", "1000 * P_KK * KKPase - 150 * KKPase_P_KK");
+  CHECK_ASSIGNMENT(29, 7, "r4b", "150 * KKPase_P_KK");
+  CHECK_ASSIGNMENT(30, 8, "r5a", "1000 * P_KK * P_KKK - 150 * P_KKK_P_KK");
+  CHECK_ASSIGNMENT(31, 9, "r5b", "150 * P_KKK_P_KK");
+  CHECK_ASSIGNMENT(32, 10, "r6a", "1000 * PP_KK * KKPase - 150 * KKPase_PP_KK");
+  CHECK_ASSIGNMENT(33, 11, "r6b", "150 * KKPase_PP_KK");
+  CHECK_ASSIGNMENT(34, 12, "r7a", "1000 * K * PP_KK - 150 * PP_KK_K");
+  CHECK_ASSIGNMENT(35, 13, "r7b", "150 * PP_KK_K");
+  CHECK_ASSIGNMENT(36, 14, "r8a", "1000 * P_K * KPase - 150 * KPase_P_K");
+  CHECK_ASSIGNMENT(37, 15, "r8b", "150 * KPase_P_K");
+  CHECK_ASSIGNMENT(38, 16, "r9a", "1000 * P_K * PP_KK - 150 * PP_KK_P_K");
+  CHECK_ASSIGNMENT(39, 17, "r9b", "150 * PP_KK_P_K");
+  CHECK_ASSIGNMENT(40, 18, "r10a", "1000 * PP_K * KPase - 150 * KPase_PP_K");
+  CHECK_ASSIGNMENT(41, 19, "r10b", "150 * KPase_PP_K");
+  CHECK_CONSTANT(42, 0, "compartment");
+  ck_assert(!ODEModel_hasCycle(model));
+  ck_assert_int_eq(ODEModel_getNumAssignmentsBeforeODEs(model), 20);
+  ck_assert_int_eq(ODEModel_getNumAssignmentsBeforeEvents(model), 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_createFromFile_repressilator)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("repressilator.xml"));
+  ck_assert(model != NULL);
+  ck_assert_int_eq(ODEModel_getNalg(model), 0);
+  ck_assert_int_eq(ODEModel_getNeq(model), 6);
+  ck_assert_int_eq(ODEModel_getNumAssignments(model), 0);
+  ck_assert_int_eq(ODEModel_getNumConstants(model), 4);
+  ck_assert_int_eq(ODEModel_getNumValues(model), 10);
+  ck_assert_int_eq(ODEModel_hasVariable(model, "no_such_variable"), 0);
+  CHECK_EQ(0, "x1", "beta * (y1 - x1)");
+  CHECK_EQ(1, "x2", "beta * (y2 - x2)");
+  CHECK_EQ(2, "x3", "beta * (y3 - x3)");
+  CHECK_EQ(3, "y1", "alpha * x1 / (1 + x1 + rho * x3) - y1");
+  CHECK_EQ(4, "y2", "alpha * x2 / (1 + x2 + rho * x1) - y2");
+  CHECK_EQ(5, "y3", "alpha * x3 / (1 + x3 + rho * x2) - y3");
+  CHECK_CONSTANT(6, 0, "compartment");
+  CHECK_CONSTANT(7, 1, "alpha");
+  CHECK_CONSTANT(8, 2, "beta");
+  CHECK_CONSTANT(9, 3, "rho");
+  ck_assert(!ODEModel_hasCycle(model));
+  ck_assert_int_eq(ODEModel_getNumAssignmentsBeforeODEs(model), 0);
+  ck_assert_int_eq(ODEModel_getNumAssignmentsBeforeEvents(model), 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_free)
+{
+  ODEModel_free(NULL); /* freeing NULL is safe */
+}
+END_TEST
+
+START_TEST(test_topoSort_1)
+{
+  static int *matrix[1];
+  static int row[1];
+  List_t *r;
+  int *p;
+
+  matrix[0] = row;
+
+  row[0] = 0;
+  r = topoSort(matrix, 1, NULL, NULL);
+  ck_assert(r != NULL);
+  ck_assert(List_size(r) == 1);
+  p = List_get(r, 0);
+  ck_assert_int_eq(*p, 0);
+  free(p);
+  List_free(r);
+  CHECK_NO_ERROR();
+
+  row[0] = 1;
+  r = topoSort(matrix, 1, NULL, NULL);
+  ck_assert(r == NULL);
+  CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY();
+}
+END_TEST
+
+START_TEST(test_topoSort_2)
+{
+  static int *matrix[2];
+  static int row0[2];
+  static int row1[2];
+  List_t *r;
+  int *p;
+
+  matrix[0] = row0;
+  matrix[1] = row1;
+
+  row0[0] = 0;
+  row0[1] = 0;
+  row1[0] = 0;
+  row1[1] = 0;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r != NULL);
+  ck_assert(List_size(r) == 2);
+  p = List_get(r, 0);
+  ck_assert_int_eq(*p, 0);
+  free(p);
+  p = List_get(r, 1);
+  ck_assert_int_eq(*p, 1);
+  free(p);
+  List_free(r);
+  CHECK_NO_ERROR();
+
+  row0[0] = 0;
+  row0[1] = 0;
+  row1[0] = 0;
+  row1[1] = 1;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r == NULL);
+  CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY();
+
+  row0[0] = 0;
+  row0[1] = 0;
+  row1[0] = 1;
+  row1[1] = 0;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r != NULL);
+  ck_assert(List_size(r) == 2);
+  p = List_get(r, 0);
+  ck_assert_int_eq(*p, 0);
+  free(p);
+  p = List_get(r, 1);
+  ck_assert_int_eq(*p, 1);
+  free(p);
+  List_free(r);
+  CHECK_NO_ERROR();
+
+  row0[0] = 0;
+  row0[1] = 0;
+  row1[0] = 1;
+  row1[1] = 1;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r == NULL);
+  CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY();
+
+  row0[0] = 0;
+  row0[1] = 1;
+  row1[0] = 0;
+  row1[1] = 0;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r != NULL);
+  ck_assert(List_size(r) == 2);
+  p = List_get(r, 0);
+  ck_assert_int_eq(*p, 1);
+  free(p);
+  p = List_get(r, 1);
+  ck_assert_int_eq(*p, 0);
+  free(p);
+  List_free(r);
+  CHECK_NO_ERROR();
+
+  row0[0] = 0;
+  row0[1] = 1;
+  row1[0] = 0;
+  row1[1] = 1;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r == NULL);
+  CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY();
+
+  row0[0] = 0;
+  row0[1] = 1;
+  row1[0] = 1;
+  row1[1] = 0;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r == NULL);
+  CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY();
+
+  row0[0] = 0;
+  row0[1] = 1;
+  row1[0] = 1;
+  row1[1] = 1;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r == NULL);
+  CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY();
+
+  row0[0] = 1;
+  row0[1] = 0;
+  row1[0] = 0;
+  row1[1] = 0;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r == NULL);
+  CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY();
+
+  row0[0] = 1;
+  row0[1] = 0;
+  row1[0] = 0;
+  row1[1] = 1;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r == NULL);
+  CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY();
+
+  row0[0] = 1;
+  row0[1] = 0;
+  row1[0] = 1;
+  row1[1] = 0;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r == NULL);
+  CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY();
+
+  row0[0] = 1;
+  row0[1] = 0;
+  row1[0] = 1;
+  row1[1] = 1;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r == NULL);
+  CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY();
+
+  row0[0] = 1;
+  row0[1] = 1;
+  row1[0] = 0;
+  row1[1] = 0;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r == NULL);
+  CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY();
+
+  row0[0] = 1;
+  row0[1] = 1;
+  row1[0] = 0;
+  row1[1] = 1;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r == NULL);
+  CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY();
+
+  row0[0] = 1;
+  row0[1] = 1;
+  row1[0] = 1;
+  row1[1] = 0;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r == NULL);
+  CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY();
+
+  row0[0] = 1;
+  row0[1] = 1;
+  row1[0] = 1;
+  row1[1] = 1;
+  r = topoSort(matrix, 2, NULL, NULL);
+  ck_assert(r == NULL);
+  CHECK_ERROR_ABOUT_CYCLIC_DEPENDENCY();
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructJacobian_NULL)
+{
+  ck_assert_int_eq(ODEModel_constructJacobian(NULL), 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructJacobian_MAPK)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+  ck_assert_int_eq(model->jacobian, 0);
+  ck_assert_int_eq(model->jacobianFailed, 0);
+  ck_assert(ODEModel_getJacobianIJEntry(model, 0, 0) == NULL);
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  ck_assert_int_eq(model->jacobian, 1);
+  ck_assert_int_eq(model->jacobianFailed, 0);
+  ck_assert_int_eq(ODEModel_getNumJacobiElements(model), 26);
+  CHECK_JACOBI_ELEMENT(0, 0, 0);
+  CHECK_JACOBI_ELEMENT(1, 0, 1);
+  CHECK_JACOBI_ELEMENT(2, 0, 7);
+  CHECK_JACOBI_ELEMENT(3, 1, 0);
+  CHECK_JACOBI_ELEMENT(4, 1, 1);
+  CHECK_JACOBI_ELEMENT(5, 1, 7);
+  CHECK_JACOBI_ELEMENT(6, 2, 1);
+  CHECK_JACOBI_ELEMENT(7, 2, 2);
+  CHECK_JACOBI_ELEMENT(8, 2, 3);
+  CHECK_JACOBI_ELEMENT(9, 3, 1);
+  CHECK_JACOBI_ELEMENT(10, 3, 2);
+  CHECK_JACOBI_ELEMENT(11, 3, 3);
+  CHECK_JACOBI_ELEMENT(12, 3, 4);
+  CHECK_JACOBI_ELEMENT(13, 4, 1);
+  CHECK_JACOBI_ELEMENT(14, 4, 3);
+  CHECK_JACOBI_ELEMENT(15, 4, 4);
+  CHECK_JACOBI_ELEMENT(16, 5, 4);
+  CHECK_JACOBI_ELEMENT(17, 5, 5);
+  CHECK_JACOBI_ELEMENT(18, 5, 6);
+  CHECK_JACOBI_ELEMENT(19, 6, 4);
+  CHECK_JACOBI_ELEMENT(20, 6, 5);
+  CHECK_JACOBI_ELEMENT(21, 6, 6);
+  CHECK_JACOBI_ELEMENT(22, 6, 7);
+  CHECK_JACOBI_ELEMENT(23, 7, 4);
+  CHECK_JACOBI_ELEMENT(24, 7, 6);
+  CHECK_JACOBI_ELEMENT(25, 7, 7);
+  ODEModel_freeJacobian(model);
+  ck_assert_int_eq(model->jacobian, 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructJacobian_basic_model1_forward_l2)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("basic-model1-forward-l2.xml"));
+  ck_assert_int_eq(model->jacobian, 0);
+  ck_assert_int_eq(model->jacobianFailed, 0);
+  ck_assert(ODEModel_getJacobianIJEntry(model, 0, 0) == NULL);
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  ck_assert_int_eq(model->jacobian, 1);
+  ck_assert_int_eq(model->jacobianFailed, 0);
+  ck_assert_int_eq(ODEModel_getNumJacobiElements(model), 2);
+  CHECK_JACOBI_ELEMENT(0, 0, 0);
+  CHECK_JACOBI_ELEMENT(1, 1, 0);
+  ODEModel_freeJacobian(model);
+  ck_assert_int_eq(model->jacobian, 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructJacobian_basic)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("basic.xml"));
+  ck_assert_int_eq(model->jacobian, 0);
+  ck_assert_int_eq(model->jacobianFailed, 0);
+  ck_assert(ODEModel_getJacobianIJEntry(model, 0, 0) == NULL);
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  ck_assert_int_eq(model->jacobian, 1);
+  ck_assert_int_eq(model->jacobianFailed, 0);
+  ck_assert_int_eq(ODEModel_getNumJacobiElements(model), 2);
+  CHECK_JACOBI_ELEMENT(0, 0, 0);
+  CHECK_JACOBI_ELEMENT(1, 1, 0);
+  ODEModel_freeJacobian(model);
+  ck_assert_int_eq(model->jacobian, 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructJacobian_events_1_event_1_assignment_l2)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("events-1-event-1-assignment-l2.xml"));
+  ck_assert_int_eq(model->jacobian, 0);
+  ck_assert_int_eq(model->jacobianFailed, 0);
+  ck_assert(ODEModel_getJacobianIJEntry(model, 0, 0) == NULL);
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  ck_assert_int_eq(model->jacobian, 1);
+  ck_assert_int_eq(model->jacobianFailed, 0);
+  ck_assert_int_eq(ODEModel_getNumJacobiElements(model), 2);
+  CHECK_JACOBI_ELEMENT(0, 0, 0);
+  CHECK_JACOBI_ELEMENT(1, 1, 0);
+  ODEModel_freeJacobian(model);
+  ck_assert_int_eq(model->jacobian, 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructJacobian_events_2_events_1_assignment_l2)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("events-2-events-1-assignment-l2.xml"));
+  ck_assert_int_eq(model->jacobian, 0);
+  ck_assert_int_eq(model->jacobianFailed, 0);
+  ck_assert(ODEModel_getJacobianIJEntry(model, 0, 0) == NULL);
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  ck_assert_int_eq(model->jacobian, 1);
+  ck_assert_int_eq(model->jacobianFailed, 0);
+  ck_assert_int_eq(ODEModel_getNumJacobiElements(model), 2);
+  CHECK_JACOBI_ELEMENT(0, 0, 0);
+  CHECK_JACOBI_ELEMENT(1, 1, 0);
+  ODEModel_freeJacobian(model);
+  ck_assert_int_eq(model->jacobian, 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructJacobian_huang96)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("huang96.xml"));
+  ck_assert_int_eq(model->jacobian, 0);
+  ck_assert_int_eq(model->jacobianFailed, 0);
+  ck_assert(ODEModel_getJacobianIJEntry(model, 0, 0) == NULL);
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  ck_assert_int_eq(model->jacobian, 1);
+  ck_assert_int_eq(model->jacobianFailed, 0);
+  ck_assert_int_eq(ODEModel_getNumJacobiElements(model), 92);
+  ODEModel_freeJacobian(model);
+  ck_assert_int_eq(model->jacobian, 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructJacobian_repressilator)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("repressilator.xml"));
+  ck_assert_int_eq(model->jacobian, 0);
+  ck_assert_int_eq(model->jacobianFailed, 0);
+  ck_assert(ODEModel_getJacobianIJEntry(model, 0, 0) == NULL);
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  ck_assert_int_eq(model->jacobian, 1);
+  ck_assert_int_eq(model->jacobianFailed, 0);
+  ck_assert_int_eq(ODEModel_getNumJacobiElements(model), 15);
+  CHECK_JACOBI_ELEMENT(0, 0, 0);
+  CHECK_JACOBI_ELEMENT(1, 0, 3);
+  CHECK_JACOBI_ELEMENT(2, 1, 1);
+  CHECK_JACOBI_ELEMENT(3, 1, 4);
+  CHECK_JACOBI_ELEMENT(4, 2, 2);
+  CHECK_JACOBI_ELEMENT(5, 2, 5);
+  CHECK_JACOBI_ELEMENT(6, 3, 0);
+  CHECK_JACOBI_ELEMENT(7, 3, 2);
+  CHECK_JACOBI_ELEMENT(8, 3, 3);
+  CHECK_JACOBI_ELEMENT(9, 4, 0);
+  CHECK_JACOBI_ELEMENT(10, 4, 1);
+  CHECK_JACOBI_ELEMENT(11, 4, 4);
+  CHECK_JACOBI_ELEMENT(12, 5, 1);
+  CHECK_JACOBI_ELEMENT(13, 5, 2);
+  CHECK_JACOBI_ELEMENT(14, 5, 5);
+  ODEModel_freeJacobian(model);
+  ck_assert_int_eq(model->jacobian, 0);
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructDeterminant_MAPK)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  det = ODEModel_constructDeterminant(model);
+  ck_assert(det != NULL);
+  /* too big to check the determinant */
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructDeterminant_basic_model1_forward_l2)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("basic-model1-forward-l2.xml"));
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  det = ODEModel_constructDeterminant(model);
+  ck_assert(det != NULL);
+  CHECK_DETERMINANT(""); /* TODO: is it really expected? */
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructDeterminant_basic)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("basic.xml"));
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  det = ODEModel_constructDeterminant(model);
+  ck_assert(det != NULL);
+  CHECK_DETERMINANT(""); /* TODO: is it really expected? */
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructDeterminant_events_1_event_1_assignment_l2)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("events-1-event-1-assignment-l2.xml"));
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  det = ODEModel_constructDeterminant(model);
+  ck_assert(det != NULL);
+  CHECK_DETERMINANT(""); /* TODO: is it really expected? */
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructDeterminant_events_2_events_1_assignment_l2)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("events-2-events-1-assignment-l2.xml"));
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  det = ODEModel_constructDeterminant(model);
+  ck_assert(det != NULL);
+  CHECK_DETERMINANT(""); /* TODO: is it really expected? */
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructDeterminant_huang96)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("huang96.xml"));
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+#if 0 /* seems too big to construct its determinant */
+  det = ODEModel_constructDeterminant(model);
+  ck_assert(det != NULL);
+#else
+  det = NULL;
+#endif
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructDeterminant_repressilator)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("repressilator.xml"));
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  det = ODEModel_constructDeterminant(model);
+  ck_assert(det != NULL);
+  CHECK_DETERMINANT(" - beta * ( - beta * ( - beta * ( - ( + 1)) + alpha * x1 "
+            "/ (1 + x1 + rho * x3)^2 * rho *  - (alpha / (1 + x3 + rho"
+            " * x2) - alpha * x3 / (1 + x3 + rho * x2)^2) * ( +  + bet"
+            "a)) - (alpha / (1 + x2 + rho * x1) - alpha * x2 / (1 + x2"
+            " + rho * x1)^2) * ( + beta * ( + ( - beta)) - alpha * x1 "
+            "/ (1 + x1 + rho * x3)^2 * rho *  - (alpha / (1 + x3 + rho"
+            " * x2) - alpha * x3 / (1 + x3 + rho * x2)^2) * ( - ( + be"
+            "ta * beta))) - alpha * x3 / (1 + x3 + rho * x2)^2 * rho *"
+            " ( + beta * ( + ) - alpha * x1 / (1 + x1 + rho * x3)^2 * "
+            "rho * )) - (alpha / (1 + x1 + rho * x3) - alpha * x1 / (1"
+            " + x1 + rho * x3)^2) * ( + beta * ( + beta * ( + beta * ("
+            " + 1)) - (alpha / (1 + x3 + rho * x2) - alpha * x3 / (1 +"
+            " x3 + rho * x2)^2) * ( + beta * ( + beta))) - (alpha / (1"
+            " + x2 + rho * x1) - alpha * x2 / (1 + x2 + rho * x1)^2) *"
+            " ( - beta * ( + beta * ( - beta)) - (alpha / (1 + x3 + rh"
+            "o * x2) - alpha * x3 / (1 + x3 + rho * x2)^2) * ( + beta "
+            "* ( + beta * beta))) - alpha * x3 / (1 + x3 + rho * x2)^2"
+            " * rho * ( - beta * ( + beta * ))) - alpha * x2 / (1 + x2"
+            " + rho * x1)^2 * rho * ( + beta * ( + beta * ( + beta *  "
+            "+ ) - alpha * x1 / (1 + x1 + rho * x3)^2 * rho * ( + beta"
+            " * ) - (alpha / (1 + x3 + rho * x2) - alpha * x3 / (1 + x"
+            "3 + rho * x2)^2) * ( + beta *  - )) - alpha * x3 / (1 + x"
+            "3 + rho * x2)^2 * rho * ( - beta * ( + beta *  - ) + alph"
+            "a * x1 / (1 + x1 + rho * x3)^2 * rho * ( + beta * ( + bet"
+            "a * beta))))");
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructSensitivity_MAPK)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  sense = ODEModel_constructSensitivity(model);
+  ck_assert(sense != NULL);
+  ck_assert_int_eq(ODESense_getNeq(sense), 8);
+  ck_assert_int_eq(ODESense_getNsens(sense), 4);
+  CHECK_SENSITIVITY(0, 18);
+  CHECK_SENSITIVITY(1, 19);
+  CHECK_SENSITIVITY(2, 20);
+  CHECK_SENSITIVITY(3, 21);
+  CHECK_SENSITIVITY_ENTRY(0, 0, "-((0.25 * MKKK_P / (8 + MKKK_P) - V1 * MKKK / ((1 + MAPK_PP / Ki) * (K1 + MKKK))) / uVol^2)");
+  CHECK_SENSITIVITY_ENTRY(0, 1, "-(MKKK / ((1 + MAPK_PP / Ki) * (K1 + MKKK)) / uVol)");
+  CHECK_SENSITIVITY_ENTRY(0, 2, "-(V1 * MKKK / ((1 + MAPK_PP / Ki) * (K1 + MKKK))^2 * (MAPK_PP / Ki)^(1 - 1) * (MAPK_PP / Ki^2) * (K1 + MKKK) / uVol)");
+  CHECK_SENSITIVITY_ENTRY(0, 3, "V1 * MKKK / ((1 + MAPK_PP / Ki) * (K1 + MKKK))^2 * (1 + MAPK_PP / Ki) / uVol");
+  CHECK_SENSITIVITY_ENTRY(7, 0, "-((0.025 * MKK_PP * MAPK_P / (15 + MAPK_P) - 0.5 * MAPK_PP / (15 + MAPK_PP)) / uVol^2)");
+  CHECK_SENSITIVITY_ENTRY(7, 1, "0");
+  CHECK_SENSITIVITY_ENTRY(7, 2, "0");
+  CHECK_SENSITIVITY_ENTRY(7, 3, "0");
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructSensitivity_basic_model1_forward_l2)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("basic-model1-forward-l2.xml"));
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  sense = ODEModel_constructSensitivity(model);
+  ck_assert(sense != NULL);
+  ck_assert_int_eq(ODESense_getNeq(sense), 2);
+  ck_assert_int_eq(ODESense_getNsens(sense), 1);
+  CHECK_SENSITIVITY(0, 4);
+  CHECK_SENSITIVITY_ENTRY(0, 0, "S1 / c^2");
+  CHECK_SENSITIVITY_ENTRY(1, 0, "-(S1 / c^2)");
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructSensitivity_basic)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("basic.xml"));
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  sense = ODEModel_constructSensitivity(model);
+  ck_assert(sense != NULL);
+  ck_assert_int_eq(ODESense_getNeq(sense), 2);
+  ck_assert_int_eq(ODESense_getNsens(sense), 2);
+  CHECK_SENSITIVITY(0, 4);
+  CHECK_SENSITIVITY(1, 5);
+  CHECK_SENSITIVITY_ENTRY(0, 0, "k_1 * S1 / c^2");
+  CHECK_SENSITIVITY_ENTRY(0, 1, "-(S1 / c)");
+  CHECK_SENSITIVITY_ENTRY(1, 0, "-(k_1 * S1 / c^2)");
+  CHECK_SENSITIVITY_ENTRY(1, 1, "S1 / c");
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructSensitivity_events_1_event_1_assignment_l2)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("events-1-event-1-assignment-l2.xml"));
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  sense = ODEModel_constructSensitivity(model);
+  ck_assert(sense != NULL);
+  ck_assert_int_eq(ODESense_getNeq(sense), 2);
+  ck_assert_int_eq(ODESense_getNsens(sense), 1);
+  CHECK_SENSITIVITY(0, 3);
+  CHECK_SENSITIVITY_ENTRY(0, 0, "S1 / compartment^2");
+  CHECK_SENSITIVITY_ENTRY(1, 0, "-(S1 / compartment^2)");
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructSensitivity_events_2_events_1_assignment_l2)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("events-2-events-1-assignment-l2.xml"));
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  sense = ODEModel_constructSensitivity(model);
+  ck_assert(sense != NULL);
+  ck_assert_int_eq(ODESense_getNeq(sense), 2);
+  ck_assert_int_eq(ODESense_getNsens(sense), 1);
+  CHECK_SENSITIVITY(0, 3);
+  CHECK_SENSITIVITY_ENTRY(0, 0, "S1 / compartment^2");
+  CHECK_SENSITIVITY_ENTRY(1, 0, "-(S1 / compartment^2)");
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructSensitivity_huang96)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("huang96.xml"));
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  sense = ODEModel_constructSensitivity(model);
+  ck_assert(sense != NULL);
+  ck_assert_int_eq(ODESense_getNeq(sense), 22);
+  ck_assert_int_eq(ODESense_getNsens(sense), 1);
+  CHECK_SENSITIVITY(0, 42);
+  CHECK_SENSITIVITY_ENTRY(0, 0, "-((150 * E1_KKK - (1000 * E1 * KKK - 150 * E1_KKK)) / compartment^2)");
+  CHECK_SENSITIVITY_ENTRY(1, 0, "-((150 * E2_P_KKK - (1000 * E2 * P_KKK - 150 * E2_P_KKK)) / compartment^2)");
+  CHECK_SENSITIVITY_ENTRY(2, 0, "-((150 * E2_P_KKK - (1000 * E1 * KKK - 150 * E1_KKK)) / compartment^2)");
+  CHECK_SENSITIVITY_ENTRY(21, 0, "-((1000 * P_K * KPase - 150 * KPase_P_K - 150 * KPase_P_K) / compartment^2)");
+}
+END_TEST
+
+START_TEST(test_ODEModel_constructSensitivity_repressilator)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("repressilator.xml"));
+  ck_assert_int_eq(ODEModel_constructJacobian(model), 1);
+  sense = ODEModel_constructSensitivity(model);
+  ck_assert(sense != NULL);
+  ck_assert_int_eq(ODESense_getNeq(sense), 6);
+  ck_assert_int_eq(ODESense_getNsens(sense), 4);
+  CHECK_SENSITIVITY(0, 6);
+  CHECK_SENSITIVITY(1, 7);
+  CHECK_SENSITIVITY(2, 8);
+  CHECK_SENSITIVITY(3, 9);
+  CHECK_SENSITIVITY_ENTRY(0, 0, "0");
+  CHECK_SENSITIVITY_ENTRY(0, 1, "0");
+  CHECK_SENSITIVITY_ENTRY(0, 2, "y1 - x1");
+  CHECK_SENSITIVITY_ENTRY(0, 3, "0");
+  CHECK_SENSITIVITY_ENTRY(5, 0, "0");
+  CHECK_SENSITIVITY_ENTRY(5, 1, "x3 / (1 + x3 + rho * x2)");
+  CHECK_SENSITIVITY_ENTRY(5, 2, "0");
+  CHECK_SENSITIVITY_ENTRY(5, 3, "-(alpha * x3 / (1 + x3 + rho * x2)^2 * x2)");
+}
+END_TEST
+
+START_TEST(test_VariableIndex_free)
+{
+  VariableIndex_free(NULL); /* freeing NULL is safe */
+}
+END_TEST
+
+START_TEST(test_ODESense_free)
+{
+  ODESense_free(NULL); /* freeing NULL is safe */
+}
+END_TEST
+
+START_TEST(test_ODEModel_getVariableIndexFields)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+  ck_assert_int_eq(ODEModel_getVariableIndexFields(model, "MKKK"), 0);
+  ck_assert_int_eq(ODEModel_getVariableIndexFields(model, "MAPK"), 5);
+  ck_assert_int_eq(ODEModel_getVariableIndexFields(model, "J0"), 8);
+  ck_assert_int_eq(ODEModel_getVariableIndexFields(model, "K1"), 21);
+  ck_assert_int_eq(ODEModel_getVariableIndexFields(model, "no_such_variable"), -1);
+}
+END_TEST
+
+/* public */
+Suite *create_suite_odeModel(void)
+{
+  Suite *s;
+  TCase *tc_ODEModel_createFromFile;
+  TCase *tc_ODEModel_free;
+  TCase *tc_topoSort;
+  TCase *tc_ODEModel_constructJacobian;
+  TCase *tc_ODEModel_constructDeterminant;
+  TCase *tc_ODEModel_constructSensitivity;
+  TCase *tc_VariableIndex_free;
+  TCase *tc_ODESense_free;
+  TCase *tc_ODEModel_getVariableIndexFields;
+
+  s = suite_create("odeModel");
+
+  tc_ODEModel_createFromFile = tcase_create("ODEModel_createFromFile");
+  tcase_add_checked_fixture(tc_ODEModel_createFromFile,
+                NULL,
+                teardown_model);
+  tcase_add_test(tc_ODEModel_createFromFile, test_ODEModel_createFromFile_MAPK);
+  tcase_add_test(tc_ODEModel_createFromFile, test_ODEModel_createFromFile_basic_model1_forward_l2);
+  tcase_add_test(tc_ODEModel_createFromFile, test_ODEModel_createFromFile_basic);
+  tcase_add_test(tc_ODEModel_createFromFile, test_ODEModel_createFromFile_events_1_event_1_assignment_l2);
+  tcase_add_test(tc_ODEModel_createFromFile, test_ODEModel_createFromFile_events_2_events_1_assignment_l2);
+  tcase_add_test(tc_ODEModel_createFromFile, test_ODEModel_createFromFile_huang96);
+  tcase_add_test(tc_ODEModel_createFromFile, test_ODEModel_createFromFile_repressilator);
+  suite_add_tcase(s, tc_ODEModel_createFromFile);
+
+  tc_ODEModel_free = tcase_create("ODEModel_free");
+  tcase_add_test(tc_ODEModel_free, test_ODEModel_free);
+  suite_add_tcase(s, tc_ODEModel_free);
+
+  tc_topoSort = tcase_create("topoSort");
+  tcase_add_test(tc_topoSort, test_topoSort_1);
+  tcase_add_test(tc_topoSort, test_topoSort_2);
+  suite_add_tcase(s, tc_topoSort);
+
+  tc_ODEModel_constructJacobian = tcase_create("ODEModel_constructJacobian");
+  tcase_add_checked_fixture(tc_ODEModel_constructJacobian,
+                NULL,
+                teardown_model);
+  tcase_add_test(tc_ODEModel_constructJacobian, test_ODEModel_constructJacobian_NULL);
+  tcase_add_test(tc_ODEModel_constructJacobian, test_ODEModel_constructJacobian_MAPK);
+  tcase_add_test(tc_ODEModel_constructJacobian, test_ODEModel_constructJacobian_basic_model1_forward_l2);
+  tcase_add_test(tc_ODEModel_constructJacobian, test_ODEModel_constructJacobian_basic);
+  tcase_add_test(tc_ODEModel_constructJacobian, test_ODEModel_constructJacobian_events_1_event_1_assignment_l2);
+  tcase_add_test(tc_ODEModel_constructJacobian, test_ODEModel_constructJacobian_events_2_events_1_assignment_l2);
+  tcase_add_test(tc_ODEModel_constructJacobian, test_ODEModel_constructJacobian_huang96);
+  tcase_add_test(tc_ODEModel_constructJacobian, test_ODEModel_constructJacobian_repressilator);
+  suite_add_tcase(s, tc_ODEModel_constructJacobian);
+
+  tc_ODEModel_constructDeterminant = tcase_create("ODEModel_constructDeterminant");
+  tcase_add_checked_fixture(tc_ODEModel_constructDeterminant,
+                NULL,
+                teardown_model);
+  tcase_add_checked_fixture(tc_ODEModel_constructDeterminant,
+                NULL,
+                teardown_determinant);
+  tcase_add_test(tc_ODEModel_constructDeterminant, test_ODEModel_constructDeterminant_MAPK);
+  tcase_add_test(tc_ODEModel_constructDeterminant, test_ODEModel_constructDeterminant_basic_model1_forward_l2);
+  tcase_add_test(tc_ODEModel_constructDeterminant, test_ODEModel_constructDeterminant_basic);
+  tcase_add_test(tc_ODEModel_constructDeterminant, test_ODEModel_constructDeterminant_events_1_event_1_assignment_l2);
+  tcase_add_test(tc_ODEModel_constructDeterminant, test_ODEModel_constructDeterminant_events_2_events_1_assignment_l2);
+  tcase_add_test(tc_ODEModel_constructDeterminant, test_ODEModel_constructDeterminant_huang96);
+  tcase_add_test(tc_ODEModel_constructDeterminant, test_ODEModel_constructDeterminant_repressilator);
+  suite_add_tcase(s, tc_ODEModel_constructDeterminant);
+
+  tc_ODEModel_constructSensitivity = tcase_create("ODEModel_constructSensitivity");
+  tcase_add_checked_fixture(tc_ODEModel_constructSensitivity,
+                NULL,
+                teardown_model);
+  tcase_add_checked_fixture(tc_ODEModel_constructSensitivity,
+                NULL,
+                teardown_sense);
+  tcase_add_test(tc_ODEModel_constructSensitivity, test_ODEModel_constructSensitivity_MAPK);
+  tcase_add_test(tc_ODEModel_constructSensitivity, test_ODEModel_constructSensitivity_basic_model1_forward_l2);
+  tcase_add_test(tc_ODEModel_constructSensitivity, test_ODEModel_constructSensitivity_basic);
+  tcase_add_test(tc_ODEModel_constructSensitivity, test_ODEModel_constructSensitivity_events_1_event_1_assignment_l2);
+  tcase_add_test(tc_ODEModel_constructSensitivity, test_ODEModel_constructSensitivity_events_2_events_1_assignment_l2);
+  tcase_add_test(tc_ODEModel_constructSensitivity, test_ODEModel_constructSensitivity_huang96);
+  tcase_add_test(tc_ODEModel_constructSensitivity, test_ODEModel_constructSensitivity_repressilator);
+  suite_add_tcase(s, tc_ODEModel_constructSensitivity);
+
+  tc_VariableIndex_free = tcase_create("VariableIndex_free");
+  tcase_add_test(tc_VariableIndex_free, test_VariableIndex_free);
+  suite_add_tcase(s, tc_VariableIndex_free);
+
+  tc_ODESense_free = tcase_create("ODESense_free");
+  tcase_add_test(tc_ODESense_free, test_ODESense_free);
+  suite_add_tcase(s, tc_ODESense_free);
+
+  tc_ODEModel_getVariableIndexFields = tcase_create("ODEModel_getVariableIndexFields");
+  tcase_add_checked_fixture(tc_ODEModel_getVariableIndexFields,
+                            NULL,
+                            teardown_model);
+  tcase_add_test(tc_ODEModel_getVariableIndexFields, test_ODEModel_getVariableIndexFields);
+  suite_add_tcase(s, tc_ODEModel_getVariableIndexFields);
+
+  return s;
+}
diff --git a/unittest/test_odeSolver.c b/unittest/test_odeSolver.c
new file mode 100644
index 0000000..a024410
--- /dev/null
+++ b/unittest/test_odeSolver.c
@@ -0,0 +1,422 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/odeSolver.h>
+#include <sbmlsolver/sbml.h>
+
+/* fixtures */
+static SBMLDocument_t *doc = NULL;
+
+Model_t *model;
+
+static cvodeSettings_t *cs;
+
+static SBMLResults_t *results = NULL;
+
+static varySettings_t *vs = NULL;
+
+static void teardown_doc(void)
+{
+	SBMLDocument_free(doc);
+}
+
+static void setup_cs(void)
+{
+	cs = CvodeSettings_create();
+}
+
+static void teardown_cs(void)
+{
+	CvodeSettings_free(cs);
+}
+
+static void teardown_results(void)
+{
+	SBMLResults_free(results);
+}
+
+static void setup_vs(void)
+{
+	vs = VarySettings_allocate(3, 4);
+}
+
+static void teardown_vs(void)
+{
+	VarySettings_free(vs);
+}
+
+/* test cases */
+START_TEST(test_SBML_odeSolver_MAPK)
+{
+	doc = parseModel(EXAMPLES_FILENAME("MAPK.xml"), 0, 1);
+	results = SBML_odeSolver(doc, cs);
+	ck_assert(results != NULL);
+}
+END_TEST
+
+START_TEST(test_Model_odeSolver_basic_model1_forward_l2)
+{
+	doc = parseModel(EXAMPLES_FILENAME("basic-model1-forward-l2.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+	results = Model_odeSolver(model, cs);
+	ck_assert(results != NULL);
+}
+END_TEST
+
+START_TEST(test_Model_odeSolver_basic)
+{
+	doc = parseModel(EXAMPLES_FILENAME("basic.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+	results = Model_odeSolver(model, cs);
+	ck_assert(results != NULL);
+}
+END_TEST
+
+START_TEST(test_Model_odeSolver_events_1_event_1_assignment_l2)
+{
+	doc = parseModel(EXAMPLES_FILENAME("events-1-event-1-assignment-l2.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+	results = Model_odeSolver(model, cs);
+	ck_assert(results != NULL);
+}
+END_TEST
+
+START_TEST(test_Model_odeSolver_events_2_events_1_assignment_l2)
+{
+	doc = parseModel(EXAMPLES_FILENAME("events-2-events-1-assignment-l2.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+	results = Model_odeSolver(model, cs);
+	ck_assert(results != NULL);
+}
+END_TEST
+
+START_TEST(test_Model_odeSolver_huang96)
+{
+	doc = parseModel(EXAMPLES_FILENAME("huang96.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+	results = Model_odeSolver(model, cs);
+	ck_assert(results != NULL);
+}
+END_TEST
+
+START_TEST(test_Model_odeSolver_repressilator)
+{
+	doc = parseModel(EXAMPLES_FILENAME("repressilator.xml"), 0, 1);
+	model = SBMLDocument_getModel(doc);
+	results = Model_odeSolver(model, cs);
+	ck_assert(results != NULL);
+}
+END_TEST
+
+START_TEST(test_VarySettings_allocate)
+{
+	vs = VarySettings_allocate(7, 77);
+	ck_assert(vs != NULL);
+	ck_assert_int_eq(vs->nrparams, 7);
+	ck_assert_int_eq(vs->nrdesignpoints, 77);
+}
+END_TEST
+
+START_TEST(test_VarySettings_free)
+{
+	VarySettings_free(NULL); /* freeing NULL is safe */
+}
+END_TEST
+
+START_TEST(test_VarySettings_addDesignPoint)
+{
+	static const double params0[] = {0.0, 2.5, 4.0};
+	static const double params1[] = {0.1, -0.1, 4.2};
+	static const double params2[] = {0.2, -1.4, 5.9};
+	static const double params3[] = {0.3, -2.9, 5.1};
+	static const double params4[] = {0.4, -5.0, 4.1};
+	int r;
+	r = VarySettings_addDesignPoint(vs, params0);
+	ck_assert_int_eq(r, 1);
+	r = VarySettings_addDesignPoint(vs, params1);
+	ck_assert_int_eq(r, 2);
+	r = VarySettings_addDesignPoint(vs, params2);
+	ck_assert_int_eq(r, 3);
+	r = VarySettings_addDesignPoint(vs, params3);
+	ck_assert_int_eq(r, 4);
+	r = VarySettings_addDesignPoint(vs, params4);
+	ck_assert_int_eq(r, 0);
+}
+END_TEST
+
+START_TEST(test_VarySettings_addParameter)
+{
+	int r;
+	r = VarySettings_addParameter(vs, "foo", NULL); /* global */
+	ck_assert_int_eq(r, 1);
+	ck_assert_str_eq(vs->id[0], "foo");
+	ck_assert(vs->rid[0] == NULL);
+	r = VarySettings_addParameter(vs, "foo", "local");
+	ck_assert_int_eq(r, 2);
+	ck_assert_str_eq(vs->id[1], "foo");
+	ck_assert_str_eq(vs->rid[1], "local");
+	r = VarySettings_addParameter(vs, "bar", "local");
+	ck_assert_int_eq(r, 3);
+	ck_assert_str_eq(vs->id[2], "bar");
+	ck_assert_str_eq(vs->rid[2], "local");
+	r = VarySettings_addParameter(vs, "failure", "full");
+	ck_assert_int_eq(r, 0);
+}
+END_TEST
+
+START_TEST(test_VarySettings_setName)
+{
+	int r;
+	r = VarySettings_setName(vs, 0, "foo", NULL); /* global */
+	ck_assert_int_eq(r, 1);
+	r = VarySettings_setName(vs, 1, "foo", "local");
+	ck_assert_int_eq(r, 1);
+	r = VarySettings_setName(vs, 2, "bar", "local");
+	ck_assert_int_eq(r, 1);
+	r = VarySettings_setName(vs, 3, "failure", "fencepost");
+	ck_assert_int_eq(r, 0);
+	ck_assert_str_eq(vs->id[0], "foo");
+	ck_assert(vs->rid[0] == NULL);
+	ck_assert_str_eq(vs->id[1], "foo");
+	ck_assert_str_eq(vs->rid[1], "local");
+	ck_assert_str_eq(vs->id[2], "bar");
+	ck_assert_str_eq(vs->rid[2], "local");
+}
+END_TEST
+
+START_TEST(test_VarySettings_setValue)
+{
+	int r;
+	r = VarySettings_setValue(vs, 0, 0, 7.7);
+	ck_assert_int_eq(r, 1);
+	r = VarySettings_setValue(vs, 2, 2, 2.3);
+	ck_assert_int_eq(r, 1);
+	r = VarySettings_setValue(vs, 4, 1, 0.1);
+	ck_assert_int_eq(r, 0);
+	r = VarySettings_setValue(vs, 2, 3, 0.2);
+	ck_assert_int_eq(r, 0);
+	ck_assert(vs->params[0][0] == 7.7);
+	ck_assert(vs->params[2][2] == 2.3);
+}
+END_TEST
+
+START_TEST(test_VarySettings_getValue)
+{
+	double d;
+	VarySettings_setValue(vs, 0, 0, 7.7);
+	VarySettings_setValue(vs, 2, 2, 2.3);
+	d = VarySettings_getValue(vs, 0, 0);
+	ck_assert(d == 7.7);
+	d = VarySettings_getValue(vs, 2, 2);
+	ck_assert(d == 2.3);
+}
+END_TEST
+
+START_TEST(test_VarySettings_setValueByID)
+{
+	int r;
+	double d;
+	VarySettings_setName(vs, 0, "foo", NULL); /* global */
+	VarySettings_setName(vs, 1, "foo", "local");
+	VarySettings_setName(vs, 2, "bar", "local");
+	r = VarySettings_setValueByID(vs, 0, "foo", NULL, 1.2);
+	ck_assert_int_eq(r, 1);
+	r = VarySettings_setValueByID(vs, 1, "foo", NULL, 2.3);
+	ck_assert_int_eq(r, 1);
+	r = VarySettings_setValueByID(vs, 1, "foo", "local", 3.4);
+	ck_assert_int_eq(r, 1);
+	r = VarySettings_setValueByID(vs, 3, "bar", "local", 4.5);
+	ck_assert_int_eq(r, 1);
+	d = VarySettings_getValue(vs, 0, 0);
+	ck_assert(d == 1.2);
+	d = VarySettings_getValue(vs, 1, 0);
+	ck_assert(d == 2.3);
+	d = VarySettings_getValue(vs, 1, 1);
+	ck_assert(d == 3.4);
+	d = VarySettings_getValue(vs, 3, 2);
+	ck_assert(d == 4.5);
+}
+END_TEST
+
+START_TEST(test_VarySettings_getValueByID)
+{
+	double d;
+	VarySettings_setName(vs, 0, "foo", NULL); /* global */
+	VarySettings_setName(vs, 1, "foo", "local");
+	VarySettings_setName(vs, 2, "bar", "local");
+	VarySettings_setValueByID(vs, 0, "foo", NULL, 1.2);
+	VarySettings_setValueByID(vs, 1, "foo", NULL, 2.3);
+	VarySettings_setValueByID(vs, 1, "foo", "local", 3.4);
+	VarySettings_setValueByID(vs, 3, "bar", "local", 4.5);
+	d = VarySettings_getValueByID(vs, 0, "foo", NULL);
+	ck_assert(d == 1.2);
+	d = VarySettings_getValueByID(vs, 1, "foo", NULL);
+	ck_assert(d == 2.3);
+	d = VarySettings_getValueByID(vs, 1, "foo", "local");
+	ck_assert(d == 3.4);
+	d = VarySettings_getValueByID(vs, 3, "bar", "local");
+	ck_assert(d == 4.5);
+}
+END_TEST
+
+START_TEST(test_VarySettings_getName)
+{
+	const char *name;
+	VarySettings_setName(vs, 0, "foo", NULL); /* global */
+	VarySettings_setName(vs, 1, "foo", "local");
+	VarySettings_setName(vs, 2, "bar", "local");
+	name = VarySettings_getName(vs, 0);
+	ck_assert_str_eq(name, "foo");
+	name = VarySettings_getName(vs, 1);
+	ck_assert_str_eq(name, "foo");
+	name = VarySettings_getName(vs, 2);
+	ck_assert_str_eq(name, "bar");
+	name = VarySettings_getName(vs, 3);
+	ck_assert(name == NULL);
+}
+END_TEST
+
+START_TEST(test_VarySettings_getReactionName)
+{
+	const char *name;
+	VarySettings_setName(vs, 0, "foo", NULL); /* global */
+	VarySettings_setName(vs, 1, "foo", "local");
+	VarySettings_setName(vs, 2, "bar", "local");
+	name = VarySettings_getReactionName(vs, 0);
+	ck_assert(name == NULL);
+	name = VarySettings_getReactionName(vs, 1);
+	ck_assert_str_eq(name, "local");
+	name = VarySettings_getReactionName(vs, 2);
+	ck_assert_str_eq(name, "local");
+	name = VarySettings_getReactionName(vs, 3);
+	ck_assert(name == NULL);
+}
+END_TEST
+
+/* public */
+Suite *create_suite_odeSolver(void)
+{
+	Suite *s;
+	TCase *tc_SBML_odeSolver;
+	TCase *tc_Model_odeSolver;
+	TCase *tc_VarySettings_allocate;
+	TCase *tc_VarySettings_free;
+	TCase *tc_VarySettings_addDesignPoint;
+	TCase *tc_VarySettings_addParameter;
+	TCase *tc_VarySettings_setName;
+	TCase *tc_VarySettings_setValue;
+	TCase *tc_VarySettings_getValue;
+	TCase *tc_VarySettings_setValueByID;
+	TCase *tc_VarySettings_getValueByID;
+	TCase *tc_VarySettings_getName;
+	TCase *tc_VarySettings_getReactionName;
+
+	s = suite_create("odeSolver");
+
+	tc_SBML_odeSolver = tcase_create("SBML_odeSolver");
+	tcase_add_checked_fixture(tc_SBML_odeSolver,
+							  NULL,
+							  teardown_doc);
+	tcase_add_checked_fixture(tc_SBML_odeSolver,
+							  setup_cs,
+							  teardown_cs);
+	tcase_add_checked_fixture(tc_SBML_odeSolver,
+							  NULL,
+							  teardown_results);
+	tcase_add_test(tc_SBML_odeSolver, test_SBML_odeSolver_MAPK);
+	suite_add_tcase(s, tc_SBML_odeSolver);
+
+	tc_Model_odeSolver = tcase_create("Model_odeSolver");
+	tcase_add_checked_fixture(tc_Model_odeSolver,
+							  NULL,
+							  teardown_doc);
+	tcase_add_checked_fixture(tc_Model_odeSolver,
+							  setup_cs,
+							  teardown_cs);
+	tcase_add_checked_fixture(tc_Model_odeSolver,
+							  NULL,
+							  teardown_results);
+	tcase_add_test(tc_Model_odeSolver, test_Model_odeSolver_basic_model1_forward_l2);
+	tcase_add_test(tc_Model_odeSolver, test_Model_odeSolver_basic);
+	tcase_add_test(tc_Model_odeSolver, test_Model_odeSolver_events_1_event_1_assignment_l2);
+	tcase_add_test(tc_Model_odeSolver, test_Model_odeSolver_events_2_events_1_assignment_l2);
+	tcase_add_test(tc_Model_odeSolver, test_Model_odeSolver_huang96);
+	tcase_add_test(tc_Model_odeSolver, test_Model_odeSolver_repressilator);
+	suite_add_tcase(s, tc_Model_odeSolver);
+
+	tc_VarySettings_allocate = tcase_create("VarySettings_allocate");
+	tcase_add_checked_fixture(tc_VarySettings_allocate,
+							  NULL,
+							  teardown_vs);
+	tcase_add_test(tc_VarySettings_allocate, test_VarySettings_allocate);
+	suite_add_tcase(s, tc_VarySettings_allocate);
+
+	tc_VarySettings_free = tcase_create("VarySettings_free");
+	tcase_add_test(tc_VarySettings_free, test_VarySettings_free);
+	suite_add_tcase(s, tc_VarySettings_free);
+
+	tc_VarySettings_addDesignPoint = tcase_create("VarySettings_addDesignPoint");
+	tcase_add_checked_fixture(tc_VarySettings_addDesignPoint,
+							  setup_vs,
+							  teardown_vs);
+	tcase_add_test(tc_VarySettings_addDesignPoint, test_VarySettings_addDesignPoint);
+	suite_add_tcase(s, tc_VarySettings_addDesignPoint);
+
+	tc_VarySettings_addParameter = tcase_create("VarySettings_addParameter");
+	tcase_add_checked_fixture(tc_VarySettings_addParameter,
+							  setup_vs,
+							  teardown_vs);
+	tcase_add_test(tc_VarySettings_addParameter, test_VarySettings_addParameter);
+	suite_add_tcase(s, tc_VarySettings_addParameter);
+
+	tc_VarySettings_setName = tcase_create("VarySettings_setName");
+	tcase_add_checked_fixture(tc_VarySettings_setName,
+							  setup_vs,
+							  teardown_vs);
+	tcase_add_test(tc_VarySettings_setName, test_VarySettings_setName);
+	suite_add_tcase(s, tc_VarySettings_setName);
+
+	tc_VarySettings_setValue = tcase_create("VarySettings_setValue");
+	tcase_add_checked_fixture(tc_VarySettings_setValue,
+							  setup_vs,
+							  teardown_vs);
+	tcase_add_test(tc_VarySettings_setValue, test_VarySettings_setValue);
+	suite_add_tcase(s, tc_VarySettings_setValue);
+
+	tc_VarySettings_getValue = tcase_create("VarySettings_getValue");
+	tcase_add_checked_fixture(tc_VarySettings_getValue,
+							  setup_vs,
+							  teardown_vs);
+	tcase_add_test(tc_VarySettings_getValue, test_VarySettings_getValue);
+	suite_add_tcase(s, tc_VarySettings_getValue);
+
+	tc_VarySettings_setValueByID = tcase_create("VarySettings_setValueByID");
+	tcase_add_checked_fixture(tc_VarySettings_setValueByID,
+							  setup_vs,
+							  teardown_vs);
+	tcase_add_test(tc_VarySettings_setValueByID, test_VarySettings_setValueByID);
+	suite_add_tcase(s, tc_VarySettings_setValueByID);
+
+	tc_VarySettings_getValueByID = tcase_create("VarySettings_getValueByID");
+	tcase_add_checked_fixture(tc_VarySettings_getValueByID,
+							  setup_vs,
+							  teardown_vs);
+	tcase_add_test(tc_VarySettings_getValueByID, test_VarySettings_getValueByID);
+	suite_add_tcase(s, tc_VarySettings_getValueByID);
+
+	tc_VarySettings_getName = tcase_create("VarySettings_getName");
+	tcase_add_checked_fixture(tc_VarySettings_getName,
+							  setup_vs,
+							  teardown_vs);
+	tcase_add_test(tc_VarySettings_getName, test_VarySettings_getName);
+	suite_add_tcase(s, tc_VarySettings_getName);
+
+	tc_VarySettings_getReactionName = tcase_create("VarySettings_getReactionName");
+	tcase_add_checked_fixture(tc_VarySettings_getReactionName,
+							  setup_vs,
+							  teardown_vs);
+	tcase_add_test(tc_VarySettings_getReactionName, test_VarySettings_getReactionName);
+	suite_add_tcase(s, tc_VarySettings_getReactionName);
+
+	return s;
+}
diff --git a/unittest/test_processAST.c b/unittest/test_processAST.c
new file mode 100644
index 0000000..ff8cce9
--- /dev/null
+++ b/unittest/test_processAST.c
@@ -0,0 +1,526 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/processAST.h>
+#include <sbmlsolver/cvodeData.h>
+#include <sbmlsolver/odeModel.h>
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+/* fixtures */
+static odeModel_t *model;
+static cvodeData_t *data;
+
+static void setup_data(void)
+{
+  model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+  data = CvodeData_create(model);
+}
+
+static void teardown_data(void)
+{
+  CvodeData_free(data);
+  ODEModel_free(model);
+}
+
+/* helpers */
+#define CHECK_EVAL(input, expected) do {        \
+    ASTNode_t *node;                            \
+    double v;                                   \
+    node = SBML_parseFormula(input);            \
+    ck_assert(node != NULL);                    \
+    v = evaluateAST(node, data);                \
+    CHECK_DOUBLE_WITH_TOLERANCE(v, (expected)); \
+    ASTNode_free(node);                         \
+  } while (0)
+
+#define CHECK_GEN(input, expected) do {                       \
+    ASTNode_t *node;                                          \
+    charBuffer_t *buf;                                        \
+    node = SBML_parseFormula(input);                          \
+    ck_assert(node != NULL);                                  \
+    buf = CharBuffer_create();                                \
+    generateAST(buf, node);                                   \
+    ck_assert_str_eq(CharBuffer_getBuffer(buf), (expected));  \
+    CharBuffer_free(buf);                                     \
+    ASTNode_free(node);                                       \
+  } while (0)
+
+#define CHECK_DIFF(input, expected) do {        \
+    ASTNode_t *node, *diff;                     \
+    char *actual;                               \
+    node = SBML_parseFormula(input);            \
+    ck_assert(node != NULL);                    \
+    diff = differentiateAST(node, "x");         \
+    actual = SBML_formulaToString(diff);        \
+    ck_assert_str_eq(actual, (expected));       \
+    free(actual);                               \
+    ASTNode_free(diff);                         \
+    ASTNode_free(node);                         \
+  } while (0)
+
+#define CHECK_COPY(expr) do {                   \
+    ASTNode_t *node, *copied;                   \
+    char *actual;                               \
+    node = SBML_parseFormula(expr);             \
+    ck_assert(node != NULL);                    \
+    copied = copyAST(node);                     \
+    ck_assert(copied != NULL);                  \
+    actual = SBML_formulaToString(copied);      \
+    ck_assert_str_eq(actual, (expr));           \
+    free(actual);                               \
+    ASTNode_free(copied);                       \
+    ASTNode_free(node);                         \
+  } while (0)
+
+#define CHECK_SIMPLIFY(input, expected) do {    \
+    ASTNode_t *node, *simplified;               \
+    char *actual;                               \
+    node = SBML_parseFormula(input);            \
+    ck_assert(node != NULL);                    \
+    simplified = simplifyAST(node);             \
+    ck_assert(simplified != NULL);              \
+    actual = SBML_formulaToString(simplified);  \
+    ck_assert_str_eq(actual, (expected));       \
+    free(actual);                               \
+    ASTNode_free(simplified);                   \
+    ASTNode_free(node);                         \
+  } while (0)
+
+#define LINE0 "<?xml version='1.0' encoding='UTF-8'?>\n"
+#define MATH_OPEN "<math xmlns='http://www.w3.org/1998/Math/MathML'>\n"
+#define MATH_CLOSE "\n</math>"
+
+#define CONTAINS_TIME(input, expected) do {                         \
+    ASTNode_t *node;                                                \
+    node = readMathMLFromString(LINE0 MATH_OPEN input MATH_CLOSE);  \
+    ck_assert(node != NULL);                                        \
+    ck_assert_int_eq(ASTNode_containsTime(node), expected);         \
+    ASTNode_free(node);                                             \
+  } while (0)
+
+#define CONTAINS_PIECEWISE(input, expected) do {                    \
+    ASTNode_t *node;                                                \
+    node = readMathMLFromString(LINE0 MATH_OPEN input MATH_CLOSE);  \
+    ck_assert(node != NULL);                                        \
+    ck_assert_int_eq(ASTNode_containsPiecewise(node), expected);    \
+    ASTNode_free(node);                                             \
+  } while (0)
+
+static ASTNode_t *prepare_node(void)
+{
+  ASTNode_t *node;
+  node = ASTNode_create();
+  ASTNode_setCharacter(node, '+');
+  ASTNode_addChild(node, ASTNode_create());
+  ASTNode_addChild(node, ASTNode_create());
+  ASTNode_setCharacter(ASTNode_getLeftChild(node), '*');
+  ASTNode_addChild(ASTNode_getLeftChild(node), ASTNode_createIndexName());
+  ASTNode_addChild(ASTNode_getLeftChild(node), ASTNode_create());
+  ASTNode_setName(ASTNode_getLeftChild(ASTNode_getLeftChild(node)), "x");
+  ASTNode_setIndex(ASTNode_getLeftChild(ASTNode_getLeftChild(node)), 100);
+  ASTNode_setName(ASTNode_getRightChild(ASTNode_getLeftChild(node)), "y");
+  ASTNode_setCharacter(ASTNode_getRightChild(node), '/');
+  ASTNode_addChild(ASTNode_getRightChild(node), ASTNode_create());
+  ASTNode_addChild(ASTNode_getRightChild(node), ASTNode_createIndexName());
+  ASTNode_setName(ASTNode_getLeftChild(ASTNode_getRightChild(node)), "z");
+  ASTNode_setName(ASTNode_getRightChild(ASTNode_getRightChild(node)), "a");
+  ASTNode_setIndex(ASTNode_getRightChild(ASTNode_getRightChild(node)), 101);
+  return node;
+}
+
+/* test cases */
+START_TEST(test_evaluateAST)
+{
+  CHECK_EVAL("1 * -2 * -3", 6);
+  CHECK_EVAL("1 * 0 * -3", 0);
+  CHECK_EVAL("abs(1)", 1);
+  CHECK_EVAL("abs(-2)", 2);
+  CHECK_EVAL("arccosh(1)", 0);
+  CHECK_EVAL("arccosh(2)", log(2+sqrt(3)));
+  CHECK_EVAL("arccoth(2)", log(3)/2);
+  CHECK_EVAL("arccoth(-2)", log(1./3)/2);
+  CHECK_EVAL("arccsc(1)", M_PI/2);
+  CHECK_EVAL("arccsc(-1)", -M_PI/2);
+  CHECK_EVAL("arccsch(1)", log(1+sqrt(2)));
+  CHECK_EVAL("arccsch(-1)", log(-1+sqrt(2)));
+  CHECK_EVAL("arcsec(1)", 0);
+  CHECK_EVAL("arcsec(-1)", M_PI);
+  CHECK_EVAL("coth(1)", cosh(1)/sinh(1));
+  CHECK_EVAL("coth(-1)", cosh(-1)/sinh(-1));
+  CHECK_EVAL("factorial(0)", 1);
+  CHECK_EVAL("factorial(10)", 3628800);
+  CHECK_EVAL("eq(1)", 1);
+  CHECK_EVAL("eq(1, 2)", 0);
+  CHECK_EVAL("eq(1, 1)", 1);
+  CHECK_EVAL("eq(1, 0, 1)", 0);
+  CHECK_EVAL("eq(1, 1, 0)", 0);
+  CHECK_EVAL("eq(1, 1, 1, 1)", 1);
+  CHECK_EVAL("geq(1)", 1);
+  CHECK_EVAL("geq(1, 2)", 0);
+  CHECK_EVAL("geq(1, 1)", 1);
+  CHECK_EVAL("geq(1, 0, 1)", 0);
+  CHECK_EVAL("geq(1, 1, 0)", 1);
+  CHECK_EVAL("geq(2, 1, 0, 1)", 0);
+  CHECK_EVAL("gt(1)", 1);
+  CHECK_EVAL("gt(1, 2)", 0);
+  CHECK_EVAL("gt(1, 1)", 0);
+  CHECK_EVAL("gt(1, 0, -1)", 1);
+  CHECK_EVAL("gt(2, 1, 0)", 1);
+  CHECK_EVAL("gt(2, 1, 0, 0)", 0);
+  CHECK_EVAL("leq(1)", 1);
+  CHECK_EVAL("leq(1, 2)", 1);
+  CHECK_EVAL("leq(1, 1)", 1);
+  CHECK_EVAL("leq(1, 0, 1)", 0);
+  CHECK_EVAL("leq(0, 1, 2)", 1);
+  CHECK_EVAL("leq(0, 1, 2, -1)", 0);
+  CHECK_EVAL("lt(1)", 1);
+  CHECK_EVAL("lt(1, 2)", 1);
+  CHECK_EVAL("lt(1, 1)", 0);
+  CHECK_EVAL("lt(1, 0, 1)", 0);
+  CHECK_EVAL("lt(0, 1, 2)", 1);
+  CHECK_EVAL("lt(0, 1, 2, -1)", 0);
+  CHECK_EVAL("neq(0, -1)", 1);
+  CHECK_EVAL("neq(1, 1)", 0);
+}
+END_TEST
+
+START_TEST(test_generateAST)
+{
+  CHECK_GEN("1 + (x * x)", "((realtype)1) + (0.0 * 0.0)");
+  CHECK_GEN("-2.5 - time", "((realtype)-2.5) - 0.0");
+  CHECK_GEN("1 / 2^3", "((realtype)1) / (pow(((realtype)2), ((realtype)3)))");
+  CHECK_GEN("exponentiale", "2.71828");
+  CHECK_GEN("false", "0");
+  CHECK_GEN("pi", "3.14159");
+  CHECK_GEN("true", "1");
+  CHECK_GEN("abs(1.0)", "fabs(((realtype)1))");
+  CHECK_GEN("acos(1.0)", "acos(((realtype)1))");
+  CHECK_GEN("arccosh(1.0)", "acosh(((realtype)1))");
+  CHECK_GEN("arccot(1.0)", "acot(((realtype)1))");
+  CHECK_GEN("arccoth(1.0)", "acoth(((realtype)1))");
+  CHECK_GEN("arccsc(1.0)", "acsc(((realtype)1))");
+  CHECK_GEN("arccsch(1.0)", "acsch(((realtype)1))");
+  CHECK_GEN("arcsec(1.0)", "asec(((realtype)1))");
+  CHECK_GEN("arcsech(1.0)", "asech(((realtype)1))");
+  CHECK_GEN("asin(1.0)", "asin(((realtype)1))");
+  CHECK_GEN("arcsinh(1.0)", "asinh(((realtype)1))");
+  CHECK_GEN("atan(1.0)", "atan(((realtype)1))");
+  CHECK_GEN("arctanh(1.0)", "atanh(((realtype)1))");
+  CHECK_GEN("ceil(1.0)", "ceil(((realtype)1))");
+  CHECK_GEN("cos(1.0)", "cos(((realtype)1))");
+  CHECK_GEN("cosh(1.0)", "cosh(((realtype)1))");
+  CHECK_GEN("cot(1.0)", "cot(((realtype)1))");
+  CHECK_GEN("coth(1.0)", "coth(((realtype)1))");
+  CHECK_GEN("csc(1.0)", "csc(((realtype)1))");
+  CHECK_GEN("csch(1.0)", "csch(((realtype)1))");
+  CHECK_GEN("exp(1.0)", "exp(((realtype)1))");
+  CHECK_GEN("factorial(1.0)", "factorial(((realtype)1))");
+  CHECK_GEN("floor(1.0)", "floor(((realtype)1))");
+  CHECK_GEN("ln(1.0)", "log(((realtype)1))");
+  CHECK_GEN("log(1.0)", "log(((realtype)1))"); /* TODO: expected? */
+  CHECK_GEN("power(1)", "pow(((realtype)1))");
+  CHECK_GEN("root(1)", "root(((realtype)1))");
+  CHECK_GEN("sec(1)", "sec(((realtype)1))");
+  CHECK_GEN("sech(1)", "sech(((realtype)1))");
+  CHECK_GEN("sin(1)", "sin(((realtype)1))");
+  CHECK_GEN("sinh(1)", "sinh(((realtype)1))");
+  CHECK_GEN("tan(1)", "tan(((realtype)1))");
+  CHECK_GEN("tanh(1)", "tanh(((realtype)1))");
+  CHECK_GEN("and(true, false)", "1 && 0");
+  CHECK_GEN("and(true, false, true)", "1 && 0 && 1");
+  CHECK_GEN("not(true)", "!1");
+  CHECK_GEN("or(true, false)", "1 || 0");
+  CHECK_GEN("or(true, false, true)", "1 || 0 || 1");
+  CHECK_GEN("xor(0, 1)", "(((((realtype)0) ? 1 : 0) + (((realtype)1) ? 1 : 0)) % 2) != 0");
+  CHECK_GEN("xor(0, 1, 11)", "(((((realtype)0) ? 1 : 0) + (((realtype)1) ? 1 : 0) + (((realtype)11) ? 1 : 0)) % 2) != 0");
+  CHECK_GEN("eq(0, 1)", "((realtype)0) == ((realtype)1)");
+  CHECK_GEN("geq(0, 1)", "((realtype)0) >= ((realtype)1)");
+  CHECK_GEN("gt(0, 1)", "((realtype)0) > ((realtype)1)");
+  CHECK_GEN("leq(0, 1)", "((realtype)0) <= ((realtype)1)");
+  CHECK_GEN("lt(0, 1)", "((realtype)0) < ((realtype)1)");
+  CHECK_GEN("neq(0, 1)", "((realtype)0) != ((realtype)1)");
+}
+END_TEST
+
+START_TEST(test_differentiateAST)
+{
+  CHECK_DIFF("1", "0");
+  CHECK_DIFF("x", "1");
+  CHECK_DIFF("x^2", "2 * x^(2 - 1)");
+  CHECK_DIFF("x^3", "3 * x^(3 - 1)");
+  CHECK_DIFF("x + x^2", "1 + 2 * x^(2 - 1)");
+  CHECK_DIFF("x - x^2", "1 - 2 * x^(2 - 1)");
+  CHECK_DIFF("- x", "-1");
+  CHECK_DIFF("- x", "-1");
+  CHECK_DIFF("x * x", "x + x");
+  CHECK_DIFF("2 * x", "2");
+  CHECK_DIFF("x * 2", "2");
+  CHECK_DIFF("x / 2", "1 / 2");
+  CHECK_DIFF("2 / x", "-(2 / x^2)");
+  CHECK_DIFF("x^2 / x", "2 * x^(2 - 1) / x - x^2 / x^2");
+  CHECK_DIFF("x^x", "x^x * (x / x + log(x))");
+  CHECK_DIFF("abs(x)", "piecewise(-1, lt(x, 0), 0, eq(x, 0), 1, gt(x, 0))");
+  CHECK_DIFF("arccos(x)", "-(1 / sqrt(1 - x^2))");
+  CHECK_DIFF("arccosh(x)", "1 / sqrt(x^2 - 1)");
+  CHECK_DIFF("arccot(x)", "-(1 / (1 + x^2))");
+  CHECK_DIFF("arccoth(x)", "-(1 / (x^2 - 1))");
+  CHECK_DIFF("arccsc(x)", "-(1 / (abs(x) * sqrt(x^2 - 1)))");
+  CHECK_DIFF("arccsch(x)", "-(1 / (x^2 * sqrt(1 + 1 / x^2)))");
+  CHECK_DIFF("arcsec(x)", "-(1 / (x^2 * sqrt(1 - 1 / x^2)))");
+  CHECK_DIFF("arcsech(x)", "sqrt((1 - x) / (1 + x)) / (x * (x - 1))");
+  CHECK_DIFF("arcsin(x)", "1 / sqrt(1 - x^2)");
+  CHECK_DIFF("arcsinh(x)", "1 / sqrt(1 + x^2)");
+  CHECK_DIFF("arctan(x)", "1 / (1 + x^2)");
+  CHECK_DIFF("arctanh(x)", "1 / (1 - x^2)");
+  CHECK_DIFF("ceil(x)", "ceil(1)"); /* TODO */
+  CHECK_DIFF("cos(x)", "-sin(x)");
+  CHECK_DIFF("cosh(x)", "sinh(x)");
+  CHECK_DIFF("cot(x)", "-(1 / sin(x)^2)");
+  CHECK_DIFF("coth(x)", "-(1 / sinh(x)^2)");
+  CHECK_DIFF("csc(x)", "-(1 * csc(x) * cot(x))");
+  CHECK_DIFF("csch(x)", "-(1 * csch(x) * coth(x))");
+  CHECK_DIFF("exp(x)", "exp(x)");
+  CHECK_DIFF("floor(x)", "floor(1)"); /* TODO */
+  CHECK_DIFF("ln(x)", "1 / x");
+  CHECK_DIFF("log(3, x)", "1 / log(3) * (1 / x)");
+  CHECK_DIFF("log(x, 3)", "0"); /* TODO */
+  CHECK_DIFF("root(x, 3)", "1 / 3 * x^(1 / 3 - 1)");
+  CHECK_DIFF("root(3, x)", "-(pow(3, 1 / x) * log(3) * (1 / x^2))");
+  CHECK_DIFF("sec(x)", "sec(x) * tan(x)");
+  CHECK_DIFF("sech(x)", "-(1 * sech(x) * tanh(x))");
+  CHECK_DIFF("sin(x)", "cos(x)");
+  CHECK_DIFF("sinh(x)", "cosh(x)");
+  CHECK_DIFF("tan(x)", "1 / cos(x)^2");
+  CHECK_DIFF("tanh(x)", "1 / cosh(x)^2");
+}
+END_TEST
+
+START_TEST(test_copyAST)
+{
+  CHECK_COPY("0");
+  CHECK_COPY("1.5");
+  CHECK_COPY("foo");
+  CHECK_COPY("(x + 1) * exp(y) / (pi * log(y - exponentiale))");
+  CHECK_COPY("lambda(x, y, x + y)");
+}
+END_TEST
+
+START_TEST(test_indexAST)
+{
+  static const char input[] = "x + tan(y) / (2 * z)";
+  static const char *names[] = {"a", "b", "x", "y", "z"};
+  ASTNode_t *node, *indexed;
+  char *s;
+  node = SBML_parseFormula(input);
+  indexed = indexAST(node, 5, (char **)names);
+  s = SBML_formulaToString(indexed);
+  ck_assert_str_eq(s, input);
+  free(s);
+  ck_assert_int_eq(ASTNode_isIndexName(ASTNode_getLeftChild(indexed)), 1);
+  ck_assert(ASTNode_getIndex(ASTNode_getLeftChild(indexed)) == 2);
+  ck_assert_int_eq(ASTNode_isIndexName(ASTNode_getLeftChild(ASTNode_getLeftChild(ASTNode_getRightChild(indexed)))), 1);
+  ck_assert(ASTNode_getIndex(ASTNode_getLeftChild(ASTNode_getLeftChild(ASTNode_getRightChild(indexed)))) == 3);
+  ck_assert_int_eq(ASTNode_isIndexName(ASTNode_getRightChild(ASTNode_getRightChild(ASTNode_getRightChild(indexed)))), 1);
+  ck_assert(ASTNode_getIndex(ASTNode_getRightChild(ASTNode_getRightChild(ASTNode_getRightChild(indexed)))) == 4);
+  ASTNode_free(indexed);
+  ASTNode_free(node);
+}
+END_TEST
+
+START_TEST(test_simplifyAST)
+{
+  CHECK_SIMPLIFY("0", "0");
+  CHECK_SIMPLIFY("1.5", "1.5");
+  CHECK_SIMPLIFY("foo", "foo");
+  CHECK_SIMPLIFY("x + 0", "x");
+  CHECK_SIMPLIFY("0 + x", "x");
+  CHECK_SIMPLIFY("x - 0", "x");
+  CHECK_SIMPLIFY("0 - x", "-x");
+  CHECK_SIMPLIFY("x * 0", "0");
+  CHECK_SIMPLIFY("0 * x", "0");
+  CHECK_SIMPLIFY("x * 1", "x");
+  CHECK_SIMPLIFY("1 * x", "x");
+  CHECK_SIMPLIFY("0 / x", "0");
+  CHECK_SIMPLIFY("x / 1", "x");
+  CHECK_SIMPLIFY("x^0", "1");
+  CHECK_SIMPLIFY("x^1", "x");
+  CHECK_SIMPLIFY("0^x", "0");
+  CHECK_SIMPLIFY("1^x", "1");
+  CHECK_SIMPLIFY("--x", "x");
+  CHECK_SIMPLIFY("-x + -y", "-(x + y)");
+  CHECK_SIMPLIFY("-x + y", "y - x");
+  CHECK_SIMPLIFY("x + -y", "x - y");
+  CHECK_SIMPLIFY("-x - -y", "y - x");
+  CHECK_SIMPLIFY("-x - y", "-(x + y)");
+  CHECK_SIMPLIFY("x - -y", "x + y");
+  CHECK_SIMPLIFY("-x * -y", "x * y");
+  CHECK_SIMPLIFY("-x * y", "-(x * y)");
+  CHECK_SIMPLIFY("x * -y", "-(x * y)");
+  CHECK_SIMPLIFY("-x / -y", "x / y");
+  CHECK_SIMPLIFY("-x / y", "-(x / y)");
+  CHECK_SIMPLIFY("x / -y", "-(x / y)");
+  CHECK_SIMPLIFY("log(0 + pi) / -(1 * x)", "-(log(pi) / x)");
+}
+END_TEST
+
+START_TEST(test_ASTNode_containsTime)
+{
+  CONTAINS_TIME("<cn>0</cn>", 0);
+  CONTAINS_TIME("<ci>x</ci>", 0);
+  CONTAINS_TIME("<ci>time</ci>", 0);
+  CONTAINS_TIME("<csymbol encoding='text' definitionURL='http://www.sbml.org/sbml/symbols/time'>t</csymbol>", 1);
+  CONTAINS_TIME("<apply><plus/><cn>4</cn><ci>t</ci></apply>", 0);
+  CONTAINS_TIME("<apply><plus/><csymbol encoding='text' definitionURL='http://www.sbml.org/sbml/symbols/time'>t</csymbol><cn>4</cn></apply>", 1);
+}
+END_TEST
+
+START_TEST(test_ASTNode_containsPiecewise)
+{
+  CONTAINS_PIECEWISE("<cn>0</cn>", 0);
+  CONTAINS_PIECEWISE("<ci>x</ci>", 0);
+  CONTAINS_PIECEWISE("<piecewise><otherwise><ci>foo</ci></otherwise></piecewise>", 1);
+  CONTAINS_PIECEWISE("<apply>"
+             " <times/>"
+             " <ci>piece</ci>"
+             " <ci>piecewise</ci>"
+             "</apply>",
+             0);
+  CONTAINS_PIECEWISE("<apply>"
+             " <times/>"
+             " <ci>x</ci>"
+             " <piecewise>"
+             "  <piece>"
+             "   <ci>y</ci>"
+             "   <apply><gt/><ci>a</ci><cn>1</cn></apply>"
+                       "  </piece>"
+             "  <otherwise>"
+                       "   <ci>z</ci>"
+             "  </otherwise>"
+             " </piecewise>"
+             "</apply>",
+             1);
+}
+END_TEST
+
+START_TEST(test_ASTNode_getIndices)
+{
+  ASTNode_t *node;
+  List_t *indices;
+  int r;
+  void *p;
+
+  node = prepare_node();
+
+  indices = List_create();
+  r = ASTNode_getIndices(node, indices);
+  ck_assert_int_eq(r, 1);
+  ck_assert(List_size(indices) == 2);
+  p = List_get(indices, 0);
+  ck_assert_int_eq(*((unsigned int *)p), 100);
+  free(p);
+  p = List_get(indices, 1);
+  ck_assert_int_eq(*((unsigned int *)p), 101);
+  free(p);
+  List_free(indices);
+
+  ASTNode_free(node);
+}
+END_TEST
+
+START_TEST(test_ASTNode_getIndexArray)
+{
+  ASTNode_t *node;
+  int *arr;
+  int i;
+  node = prepare_node();
+  arr = ASTNode_getIndexArray(node, 102);
+  ck_assert(arr != NULL);
+  for (i=0; i<100; i++) {
+    ck_assert_int_eq(arr[i], 0);
+  }
+  ck_assert_int_eq(arr[100], 1);
+  ck_assert_int_eq(arr[101], 1);
+  free(arr);
+  ASTNode_free(node);
+}
+END_TEST
+
+START_TEST(test_ASTNode_getIndexArray__null)
+{
+  int *arr;
+  int i;
+  arr = ASTNode_getIndexArray(NULL, 7);
+  ck_assert(arr != NULL);
+  for (i=0; i<7; i++) {
+    ck_assert_int_eq(arr[i], 0);
+  }
+  free(arr);
+}
+END_TEST
+
+/* public */
+Suite *create_suite_processAST(void)
+{
+  Suite *s;
+  TCase *tc_evaluateAST;
+  TCase *tc_generateAST;
+  TCase *tc_differentiateAST;
+  TCase *tc_copyAST;
+  TCase *tc_simplifyAST;
+  TCase *tc_indexAST;
+  TCase *tc_ASTNode_containsTime;
+  TCase *tc_ASTNode_containsPiecewise;
+  TCase *tc_ASTNode_getIndices;
+  TCase *tc_ASTNode_getIndexArray;
+
+  s = suite_create("processAST");
+
+  tc_evaluateAST = tcase_create("evaluateAST");
+  tcase_add_checked_fixture(tc_evaluateAST,
+                setup_data,
+                teardown_data);
+  tcase_add_test(tc_evaluateAST, test_evaluateAST);
+  suite_add_tcase(s, tc_evaluateAST);
+
+  tc_generateAST = tcase_create("generateAST");
+  tcase_add_test(tc_generateAST, test_generateAST);
+  suite_add_tcase(s, tc_generateAST);
+
+  tc_differentiateAST = tcase_create("differentiateAST");
+  tcase_add_test(tc_differentiateAST, test_differentiateAST);
+  suite_add_tcase(s, tc_differentiateAST);
+
+  tc_copyAST = tcase_create("copyAST");
+  tcase_add_test(tc_copyAST, test_copyAST);
+  suite_add_tcase(s, tc_copyAST);
+
+  tc_simplifyAST = tcase_create("simplifyAST");
+  tcase_add_test(tc_simplifyAST, test_simplifyAST);
+  suite_add_tcase(s, tc_simplifyAST);
+
+  tc_indexAST = tcase_create("indexAST");
+  tcase_add_test(tc_indexAST, test_indexAST);
+  suite_add_tcase(s, tc_indexAST);
+
+  tc_ASTNode_containsTime = tcase_create("ASTNode_containsTime");
+  tcase_add_test(tc_ASTNode_containsTime, test_ASTNode_containsTime);
+  suite_add_tcase(s, tc_ASTNode_containsTime);
+
+  tc_ASTNode_containsPiecewise = tcase_create("ASTNode_containsPiecewise");
+  tcase_add_test(tc_ASTNode_containsPiecewise, test_ASTNode_containsPiecewise);
+  suite_add_tcase(s, tc_ASTNode_containsPiecewise);
+
+  tc_ASTNode_getIndices = tcase_create("ASTNode_getIndices");
+  tcase_add_test(tc_ASTNode_getIndices, test_ASTNode_getIndices);
+  suite_add_tcase(s, tc_ASTNode_getIndices);
+
+  tc_ASTNode_getIndexArray = tcase_create("ASTNode_getIndexArray");
+  tcase_add_test(tc_ASTNode_getIndexArray, test_ASTNode_getIndexArray);
+  tcase_add_test(tc_ASTNode_getIndexArray, test_ASTNode_getIndexArray__null);
+  suite_add_tcase(s, tc_ASTNode_getIndexArray);
+
+  return s;
+}
diff --git a/unittest/test_sbml.c b/unittest/test_sbml.c
new file mode 100644
index 0000000..7f4c46e
--- /dev/null
+++ b/unittest/test_sbml.c
@@ -0,0 +1,244 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/sbml.h>
+
+/* fixtures */
+static SBMLDocument_t *doc;
+static Model_t *model;
+
+static void teardown_doc(void)
+{
+	SBMLDocument_free(doc);
+}
+
+/* test cases */
+START_TEST(test_parseModel_MAPK)
+{
+	doc = parseModel(EXAMPLES_FILENAME("MAPK.xml"), 0, 1);
+	ck_assert(doc != NULL);
+	model = SBMLDocument_getModel(doc);
+	ck_assert(model != NULL);
+	ck_assert(Model_getNumFunctionDefinitions(model) == 0);
+	ck_assert(Model_getNumUnitDefinitions(model) == 0);
+	ck_assert(Model_getNumCompartmentTypes(model) == 0);
+	ck_assert(Model_getNumSpeciesTypes(model) == 0);
+	ck_assert(Model_getNumCompartments(model) == 1);
+	ck_assert(Model_getNumSpecies(model) == 8);
+	ck_assert(Model_getNumSpeciesWithBoundaryCondition(model) == 0);
+	ck_assert(Model_getNumParameters(model) == 3);
+	ck_assert(Model_getNumInitialAssignments(model) == 0);
+	ck_assert(Model_getNumRules(model) == 0);
+	ck_assert(Model_getNumConstraints(model) == 0);
+	ck_assert(Model_getNumReactions(model) == 10);
+	ck_assert(Model_getNumEvents(model) == 0);
+	CHECK_PARAMETER(model, 0, "V1");
+	CHECK_PARAMETER(model, 1, "Ki");
+	CHECK_PARAMETER(model, 2, "K1");
+	CHECK_REACTION(model, 0, "J0", "V1*MKKK/((1+(MAPK_PP/Ki)^n)*(K1+MKKK))");
+	CHECK_REACTION(model, 1, "J1", "V2*MKKK_P/(KK2+MKKK_P)");
+	CHECK_REACTION(model, 2, "J2", "k3*MKKK_P*MKK/(KK3+MKK)");
+	CHECK_REACTION(model, 3, "J3", "k4*MKKK_P*MKK_P/(KK4+MKK_P)");
+	CHECK_REACTION(model, 4, "J4", "V5*MKK_PP/(KK5+MKK_PP)");
+	CHECK_REACTION(model, 5, "J5", "V6*MKK_P/(KK6+MKK_P)");
+	CHECK_REACTION(model, 6, "J6", "k7*MKK_PP*MAPK/(KK7+MAPK)");
+	CHECK_REACTION(model, 7, "J7", "k8*MKK_PP*MAPK_P/(KK8+MAPK_P)");
+	CHECK_REACTION(model, 8, "J8", "V9*MAPK_PP/(KK9+MAPK_PP)");
+	CHECK_REACTION(model, 9, "J9", "V10*MAPK_P/(KK10+MAPK_P)");
+}
+END_TEST
+
+START_TEST(test_parseModel_basic_model1_forward_l2)
+{
+	doc = parseModel(EXAMPLES_FILENAME("basic-model1-forward-l2.xml"), 0, 1);
+	ck_assert(doc != NULL);
+	model = SBMLDocument_getModel(doc);
+	ck_assert(model != NULL);
+	ck_assert(Model_getNumFunctionDefinitions(model) == 0);
+	ck_assert(Model_getNumUnitDefinitions(model) == 0);
+	ck_assert(Model_getNumCompartmentTypes(model) == 0);
+	ck_assert(Model_getNumSpeciesTypes(model) == 0);
+	ck_assert(Model_getNumCompartments(model) == 1);
+	ck_assert(Model_getNumSpecies(model) == 2);
+	ck_assert(Model_getNumSpeciesWithBoundaryCondition(model) == 0);
+	ck_assert(Model_getNumParameters(model) == 0);
+	ck_assert(Model_getNumInitialAssignments(model) == 0);
+	ck_assert(Model_getNumRules(model) == 0);
+	ck_assert(Model_getNumConstraints(model) == 0);
+	ck_assert(Model_getNumReactions(model) == 2);
+	ck_assert(Model_getNumEvents(model) == 0);
+	CHECK_REACTION(model, 0, "R1", "k_1 * S1");
+	CHECK_REACTION(model, 1, "R2", "k_2 * S2");
+}
+END_TEST
+
+START_TEST(test_parseModel_basic)
+{
+	doc = parseModel(EXAMPLES_FILENAME("basic.xml"), 0, 1);
+	ck_assert(doc != NULL);
+	model = SBMLDocument_getModel(doc);
+	ck_assert(model != NULL);
+	ck_assert(Model_getNumFunctionDefinitions(model) == 0);
+	ck_assert(Model_getNumUnitDefinitions(model) == 0);
+	ck_assert(Model_getNumCompartmentTypes(model) == 0);
+	ck_assert(Model_getNumSpeciesTypes(model) == 0);
+	ck_assert(Model_getNumCompartments(model) == 1);
+	ck_assert(Model_getNumSpecies(model) == 2);
+	ck_assert(Model_getNumSpeciesWithBoundaryCondition(model) == 0);
+	ck_assert(Model_getNumParameters(model) == 1);
+	ck_assert(Model_getNumInitialAssignments(model) == 0);
+	ck_assert(Model_getNumRules(model) == 0);
+	ck_assert(Model_getNumConstraints(model) == 0);
+	ck_assert(Model_getNumReactions(model) == 2);
+	ck_assert(Model_getNumEvents(model) == 0);
+	CHECK_PARAMETER(model, 0, "k_1");
+	CHECK_REACTION(model, 0, "R1", "k_1 * S1");
+	CHECK_REACTION(model, 1, "R2", "k_2 * S2");
+}
+END_TEST
+
+START_TEST(test_parseModel_events_1_event_1_assignment_l2)
+{
+	doc = parseModel(EXAMPLES_FILENAME("events-1-event-1-assignment-l2.xml"), 0, 1);
+	ck_assert(doc != NULL);
+	model = SBMLDocument_getModel(doc);
+	ck_assert(model != NULL);
+	ck_assert(Model_getNumFunctionDefinitions(model) == 0);
+	ck_assert(Model_getNumUnitDefinitions(model) == 0);
+	ck_assert(Model_getNumCompartmentTypes(model) == 0);
+	ck_assert(Model_getNumSpeciesTypes(model) == 0);
+	ck_assert(Model_getNumCompartments(model) == 1);
+	ck_assert(Model_getNumSpecies(model) == 2);
+	ck_assert(Model_getNumSpeciesWithBoundaryCondition(model) == 0);
+	ck_assert(Model_getNumParameters(model) == 0);
+	ck_assert(Model_getNumInitialAssignments(model) == 0);
+	ck_assert(Model_getNumRules(model) == 0);
+	ck_assert(Model_getNumConstraints(model) == 0);
+	ck_assert(Model_getNumReactions(model) == 1);
+	ck_assert(Model_getNumEvents(model) == 1);
+	CHECK_REACTION(model, 0, "R", "S1");
+	/* TODO */
+}
+END_TEST
+
+START_TEST(test_parseModel_events_2_events_1_assignment_l2)
+{
+	doc = parseModel(EXAMPLES_FILENAME("events-2-events-1-assignment-l2.xml"), 0, 1);
+	ck_assert(doc != NULL);
+	model = SBMLDocument_getModel(doc);
+	ck_assert(model != NULL);
+	ck_assert(Model_getNumFunctionDefinitions(model) == 0);
+	ck_assert(Model_getNumUnitDefinitions(model) == 0);
+	ck_assert(Model_getNumCompartmentTypes(model) == 0);
+	ck_assert(Model_getNumSpeciesTypes(model) == 0);
+	ck_assert(Model_getNumCompartments(model) == 1);
+	ck_assert(Model_getNumSpecies(model) == 2);
+	ck_assert(Model_getNumSpeciesWithBoundaryCondition(model) == 0);
+	ck_assert(Model_getNumParameters(model) == 0);
+	ck_assert(Model_getNumInitialAssignments(model) == 0);
+	ck_assert(Model_getNumRules(model) == 0);
+	ck_assert(Model_getNumConstraints(model) == 0);
+	ck_assert(Model_getNumReactions(model) == 1);
+	ck_assert(Model_getNumEvents(model) == 2);
+	CHECK_REACTION(model, 0, "R", "S1");
+	/* TODO */
+}
+END_TEST
+
+START_TEST(test_parseModel_huang96)
+{
+	doc = parseModel(EXAMPLES_FILENAME("huang96.xml"), 0, 1);
+	ck_assert(doc != NULL);
+	model = SBMLDocument_getModel(doc);
+	ck_assert(model != NULL);
+	ck_assert(Model_getNumFunctionDefinitions(model) == 0);
+	ck_assert(Model_getNumUnitDefinitions(model) == 0);
+	ck_assert(Model_getNumCompartmentTypes(model) == 0);
+	ck_assert(Model_getNumSpeciesTypes(model) == 0);
+	ck_assert(Model_getNumCompartments(model) == 1);
+	ck_assert(Model_getNumSpecies(model) == 22);
+	ck_assert(Model_getNumSpeciesWithBoundaryCondition(model) == 0);
+	ck_assert(Model_getNumParameters(model) == 0);
+	ck_assert(Model_getNumInitialAssignments(model) == 0);
+	ck_assert(Model_getNumRules(model) == 0);
+	ck_assert(Model_getNumConstraints(model) == 0);
+	ck_assert(Model_getNumReactions(model) == 20);
+	ck_assert(Model_getNumEvents(model) == 0);
+	CHECK_REACTION(model, 0, "r1a", "a1 * E1 * KKK - d1 * E1_KKK");
+	CHECK_REACTION(model, 1, "r1b", "k2 * E1_KKK");
+	CHECK_REACTION(model, 2, "r2a", "a2 * E2 * P_KKK - d2 * E2_P_KKK");
+	CHECK_REACTION(model, 3, "r2b", "k2 * E2_P_KKK");
+	CHECK_REACTION(model, 4, "r3a", "a3 * KK * P_KKK - d3 * P_KKK_KK");
+	CHECK_REACTION(model, 5, "r3b", "k3 * P_KKK_KK");
+	CHECK_REACTION(model, 6, "r4a", "a4 * P_KK * KKPase - d4 * KKPase_P_KK");
+	CHECK_REACTION(model, 7, "r4b", "k4 * KKPase_P_KK");
+	CHECK_REACTION(model, 8, "r5a", "a5 * P_KK * P_KKK - d5 * P_KKK_P_KK");
+	CHECK_REACTION(model, 9, "r5b", "k5 * P_KKK_P_KK");
+	CHECK_REACTION(model, 10, "r6a", "a6 * PP_KK * KKPase - d6 * KKPase_PP_KK");
+	CHECK_REACTION(model, 11, "r6b", "k6 * KKPase_PP_KK");
+	CHECK_REACTION(model, 12, "r7a", "a7 * K * PP_KK - d7 * PP_KK_K");
+	CHECK_REACTION(model, 13, "r7b", "k7 * PP_KK_K");
+	CHECK_REACTION(model, 14, "r8a", "a8 * P_K * KPase - d8 * KPase_P_K");
+	CHECK_REACTION(model, 15, "r8b", "k8 * KPase_P_K");
+	CHECK_REACTION(model, 16, "r9a", "a9 * P_K * PP_KK - d9 * PP_KK_P_K");
+	CHECK_REACTION(model, 17, "r9b", "k9 * PP_KK_P_K");
+	CHECK_REACTION(model, 18, "r10a", "a10 * PP_K * KPase - d10 * KPase_PP_K");
+	CHECK_REACTION(model, 19, "r10b", "k10 * KPase_PP_K");
+	/* TODO */
+}
+END_TEST
+
+START_TEST(test_parseModel_repressilator)
+{
+	doc = parseModel(EXAMPLES_FILENAME("repressilator.xml"), 0, 1);
+	ck_assert(doc != NULL);
+	model = SBMLDocument_getModel(doc);
+	ck_assert(model != NULL);
+	ck_assert(Model_getNumFunctionDefinitions(model) == 0);
+	ck_assert(Model_getNumUnitDefinitions(model) == 0);
+	ck_assert(Model_getNumCompartmentTypes(model) == 0);
+	ck_assert(Model_getNumSpeciesTypes(model) == 0);
+	ck_assert(Model_getNumCompartments(model) == 1);
+	ck_assert(Model_getNumSpecies(model) == 6);
+	ck_assert(Model_getNumSpeciesWithBoundaryCondition(model) == 0);
+	ck_assert(Model_getNumParameters(model) == 3);
+	ck_assert(Model_getNumInitialAssignments(model) == 0);
+	ck_assert(Model_getNumRules(model) == 6);
+	ck_assert(Model_getNumConstraints(model) == 0);
+	ck_assert(Model_getNumReactions(model) == 0);
+	ck_assert(Model_getNumEvents(model) == 0);
+	CHECK_PARAMETER(model, 0, "alpha");
+	CHECK_PARAMETER(model, 1, "beta");
+	CHECK_PARAMETER(model, 2, "rho");
+	CHECK_RULE(model, 0, "beta * (y1 - x1)");
+	CHECK_RULE(model, 1, "beta * (y2 - x2)");
+	CHECK_RULE(model, 2, "beta * (y3 - x3)");
+	CHECK_RULE(model, 3, "alpha * x1 / (1 + x1 + rho * x3) - y1");
+	CHECK_RULE(model, 4, "alpha * x2 / (1 + x2 + rho * x1) - y2");
+	CHECK_RULE(model, 5, "alpha * x3 / (1 + x3 + rho * x2) - y3");
+}
+END_TEST
+
+/* public */
+Suite *create_suite_sbml(void)
+{
+	Suite *s;
+	TCase *tc_parseModel;
+
+	s = suite_create("sbml");
+
+	tc_parseModel = tcase_create("parseModel");
+	tcase_add_checked_fixture(tc_parseModel,
+							  NULL,
+							  teardown_doc);
+	tcase_add_test(tc_parseModel, test_parseModel_MAPK);
+	tcase_add_test(tc_parseModel, test_parseModel_basic_model1_forward_l2);
+	tcase_add_test(tc_parseModel, test_parseModel_basic);
+	tcase_add_test(tc_parseModel, test_parseModel_events_1_event_1_assignment_l2);
+	tcase_add_test(tc_parseModel, test_parseModel_events_2_events_1_assignment_l2);
+	tcase_add_test(tc_parseModel, test_parseModel_huang96);
+	tcase_add_test(tc_parseModel, test_parseModel_repressilator);
+	suite_add_tcase(s, tc_parseModel);
+
+	return s;
+}
diff --git a/unittest/test_sbmlResults.c b/unittest/test_sbmlResults.c
new file mode 100644
index 0000000..9823006
--- /dev/null
+++ b/unittest/test_sbmlResults.c
@@ -0,0 +1,430 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/sbml.h>
+#include <sbmlsolver/sbmlResults.h>
+
+/* fixtures */
+static SBMLDocument_t *doc;
+static Model_t *model;
+
+static void setup_model(void)
+{
+  doc = parseModel(EXAMPLES_FILENAME("basic.xml"), 0, 1);
+  model = SBMLDocument_getModel(doc);
+  ck_assert(Model_getNumCompartments(model) == 1);
+  ck_assert(Model_getNumSpecies(model) == 2);
+  ck_assert(Model_getNumParameters(model) == 1);
+  ck_assert(Model_getNumReactions(model) == 2);
+}
+
+static void teardown_model(void)
+{
+  SBMLDocument_free(doc);
+}
+
+/* test cases */
+START_TEST(test_SBMLResults_getTime)
+{
+  SBMLResults_t *r;
+  timeCourse_t *tc;
+
+  r = SBMLResults_create(model, 1);
+  ck_assert(r != NULL);
+  tc = SBMLResults_getTime(r);
+  ck_assert(tc != NULL);
+  ck_assert(r->time == tc);
+  SBMLResults_free(r);
+}
+END_TEST
+
+START_TEST(test_SBMLResults_getTimeCourse_no_such_name)
+{
+  SBMLResults_t *r;
+  timeCourse_t *tc;
+
+  r = SBMLResults_create(model, 1);
+  ck_assert(r != NULL);
+  tc = SBMLResults_getTimeCourse(r, "no such name");
+  ck_assert(tc == NULL);
+  SBMLResults_free(r);
+}
+END_TEST
+
+START_TEST(test_SBMLResults_getNout)
+{
+  SBMLResults_t *r;
+  int n;
+
+  r = SBMLResults_create(model, 42);
+  ck_assert(r != NULL);
+  n = SBMLResults_getNout(r);
+  ck_assert(n == 42);
+  SBMLResults_free(r);
+}
+END_TEST
+
+START_TEST(test_SBMLResults_getNumSens)
+{
+  SBMLResults_t *r;
+  int n;
+
+  r = SBMLResults_create(model, 1);
+  ck_assert(r != NULL);
+  n = SBMLResults_getNumSens(r);
+  ck_assert(n == 0);
+  SBMLResults_free(r);
+}
+END_TEST
+
+START_TEST(test_SBMLResults_getSensParam)
+{
+  /* TODO */
+}
+END_TEST
+
+START_TEST(test_Compartment_getTimeCourse)
+{
+  SBMLResults_t *r;
+  Compartment_t *c;
+  timeCourse_t *tc;
+
+  c = Model_getCompartment(model, 0);
+  ck_assert(c != NULL);
+  Compartment_setConstant(c, 0); /* make it variable */
+
+  r = SBMLResults_create(model, 1);
+  ck_assert(r != NULL);
+  tc = Compartment_getTimeCourse(c, r);
+  ck_assert(tc != NULL);
+  SBMLResults_free(r);
+}
+END_TEST
+
+START_TEST(test_Species_getTimeCourse)
+{
+  SBMLResults_t *r;
+  Species_t *s;
+  timeCourse_t *tc;
+
+  s = Model_getSpecies(model, 0);
+  ck_assert(s != NULL);
+
+  r = SBMLResults_create(model, 1);
+  ck_assert(r != NULL);
+  tc = Species_getTimeCourse(s, r);
+  ck_assert(tc != NULL);
+  SBMLResults_free(r);
+}
+END_TEST
+
+START_TEST(test_Parameter_getTimeCourse)
+{
+  SBMLResults_t *r;
+  Parameter_t *p;
+  timeCourse_t *tc;
+
+  p = Model_getParameter(model, 0);
+  ck_assert(p != NULL);
+  Parameter_setConstant(p, 0); /* make it variable */
+
+  r = SBMLResults_create(model, 1);
+  ck_assert(r != NULL);
+  tc = Parameter_getTimeCourse(p, r);
+  ck_assert(tc != NULL);
+  SBMLResults_free(r);
+}
+END_TEST
+
+START_TEST(test_TimeCourse_getName)
+{
+  SBMLResults_t *r;
+  timeCourse_t *tc;
+  const char *name;
+
+  r = SBMLResults_create(model, 1);
+  ck_assert(r != NULL);
+  tc = SBMLResults_getTime(r);
+  ck_assert(tc != NULL);
+  name = TimeCourse_getName(tc);
+  ck_assert(name != NULL);
+  ck_assert_str_eq(name, "time");
+  SBMLResults_free(r);
+}
+END_TEST
+
+START_TEST(test_TimeCourse_getNumValues)
+{
+  SBMLResults_t *r;
+  timeCourse_t *tc;
+  int n;
+
+  r = SBMLResults_create(model, 42);
+  ck_assert(r != NULL);
+  tc = SBMLResults_getTime(r);
+  ck_assert(tc != NULL);
+  n = TimeCourse_getNumValues(tc);
+  ck_assert(n == 42);
+  SBMLResults_free(r);
+}
+END_TEST
+
+START_TEST(test_TimeCourse_getValue)
+{
+  SBMLResults_t *r;
+  timeCourse_t *tc;
+  double v;
+
+  r = SBMLResults_create(model, 42);
+  ck_assert(r != NULL);
+  tc = SBMLResults_getTime(r);
+  ck_assert(tc != NULL);
+  tc->values[0] = 7.77;
+  tc->values[41] = -8.5;
+  v = TimeCourse_getValue(tc, 0);
+  ck_assert(v == 7.77);
+  v = TimeCourse_getValue(tc, 41);
+  ck_assert(v == -8.5);
+  SBMLResults_free(r);
+}
+END_TEST
+
+START_TEST(test_TimeCourse_getSensitivity)
+{
+  /* TODO */
+}
+END_TEST
+
+START_TEST(test_SBMLResults_dump)
+{
+  /* TODO */
+}
+END_TEST
+
+START_TEST(test_SBMLResults_dumpSpecies)
+{
+  /* TODO */
+}
+END_TEST
+
+START_TEST(test_SBMLResults_dumpCompartments)
+{
+  /* TODO */
+}
+END_TEST
+
+START_TEST(test_SBMLResults_dumpParameters)
+{
+  /* TODO */
+}
+END_TEST
+
+START_TEST(test_SBMLResults_dumpFluxes)
+{
+  /* TODO */
+}
+END_TEST
+
+START_TEST(test_SBMLResults_free)
+{
+  SBMLResults_free(NULL); /* freeing NULL is safe */
+}
+END_TEST
+
+START_TEST(test_SBMLResultsArray_free)
+{
+  SBMLResultsArray_free(NULL); /* freeing NULL is safe */
+}
+END_TEST
+
+START_TEST(test_SBMLResultsArray_getNumResults)
+{
+  SBMLResultsArray_t *ra;
+  int n;
+
+  ra = SBMLResultsArray_allocate(42);
+  ck_assert(ra != NULL);
+  n = SBMLResultsArray_getNumResults(ra);
+  ck_assert(n == 42);
+  SBMLResultsArray_free(ra);
+}
+END_TEST
+
+START_TEST(test_SBMLResultsArray_getResults)
+{
+  SBMLResultsArray_t *ra;
+  SBMLResults_t *r;
+
+  ra = SBMLResultsArray_allocate(3);
+  ck_assert(ra != NULL);
+  r = SBMLResultsArray_getResults(ra, 2);
+  ck_assert(r == ra->results[2]);
+  SBMLResultsArray_free(ra);
+}
+END_TEST
+
+/* public */
+Suite *create_suite_sbmlResults(void)
+{
+  Suite *s;
+  TCase *tc_SBMLResults_getTime;
+  TCase *tc_SBMLResults_getTimeCourse;
+  TCase *tc_SBMLResults_getNout;
+  TCase *tc_SBMLResults_getNumSens;
+  TCase *tc_SBMLResults_getSensParam;
+  TCase *tc_Compartment_getTimeCourse;
+  TCase *tc_Species_getTimeCourse;
+  TCase *tc_Parameter_getTimeCourse;
+  TCase *tc_TimeCourse_getName;
+  TCase *tc_TimeCourse_getNumValues;
+  TCase *tc_TimeCourse_getValue;
+  TCase *tc_TimeCourse_getSensitivity;
+  TCase *tc_SBMLResults_dump;
+  TCase *tc_SBMLResults_dumpSpecies;
+  TCase *tc_SBMLResults_dumpCompartments;
+  TCase *tc_SBMLResults_dumpParameters;
+  TCase *tc_SBMLResults_dumpFluxes;
+  TCase *tc_SBMLResults_free;
+  TCase *tc_SBMLResultsArray_free;
+  TCase *tc_SBMLResultsArray_getNumResults;
+  TCase *tc_SBMLResultsArray_getResults;
+
+  s = suite_create("sbmlResults");
+
+  tc_SBMLResults_getTime = tcase_create("SBMLResults_getTime");
+  tcase_add_checked_fixture(tc_SBMLResults_getTime,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_SBMLResults_getTime, test_SBMLResults_getTime);
+  suite_add_tcase(s, tc_SBMLResults_getTime);
+
+  tc_SBMLResults_getTimeCourse = tcase_create("SBMLResults_getTimeCourse");
+  tcase_add_checked_fixture(tc_SBMLResults_getTimeCourse,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_SBMLResults_getTimeCourse, test_SBMLResults_getTimeCourse_no_such_name);
+  suite_add_tcase(s, tc_SBMLResults_getTimeCourse);
+
+  tc_SBMLResults_getNout = tcase_create("SBMLResults_getNout");
+  tcase_add_checked_fixture(tc_SBMLResults_getNout,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_SBMLResults_getNout, test_SBMLResults_getNout);
+  suite_add_tcase(s, tc_SBMLResults_getNout);
+
+  tc_SBMLResults_getNumSens = tcase_create("SBMLResults_getNumSens");
+  tcase_add_checked_fixture(tc_SBMLResults_getNumSens,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_SBMLResults_getNumSens, test_SBMLResults_getNumSens);
+  suite_add_tcase(s, tc_SBMLResults_getNumSens);
+
+  tc_SBMLResults_getSensParam = tcase_create("SBMLResults_getSensParam");
+  tcase_add_checked_fixture(tc_SBMLResults_getSensParam,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_SBMLResults_getSensParam, test_SBMLResults_getSensParam);
+  suite_add_tcase(s, tc_SBMLResults_getSensParam);
+
+  tc_Compartment_getTimeCourse = tcase_create("Compartment_getTimeCourse");
+  tcase_add_checked_fixture(tc_Compartment_getTimeCourse,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_Compartment_getTimeCourse, test_Compartment_getTimeCourse);
+  suite_add_tcase(s, tc_Compartment_getTimeCourse);
+
+  tc_Species_getTimeCourse = tcase_create("Species_getTimeCourse");
+  tcase_add_checked_fixture(tc_Species_getTimeCourse,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_Species_getTimeCourse, test_Species_getTimeCourse);
+  suite_add_tcase(s, tc_Species_getTimeCourse);
+
+  tc_Parameter_getTimeCourse = tcase_create("Parameter_getTimeCourse");
+  tcase_add_checked_fixture(tc_Parameter_getTimeCourse,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_Parameter_getTimeCourse, test_Parameter_getTimeCourse);
+  suite_add_tcase(s, tc_Parameter_getTimeCourse);
+
+  tc_TimeCourse_getName = tcase_create("TimeCourse_getName");
+  tcase_add_checked_fixture(tc_TimeCourse_getName,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_TimeCourse_getName, test_TimeCourse_getName);
+  suite_add_tcase(s, tc_TimeCourse_getName);
+
+  tc_TimeCourse_getNumValues = tcase_create("TimeCourse_getNumValues");
+  tcase_add_checked_fixture(tc_TimeCourse_getNumValues,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_TimeCourse_getNumValues, test_TimeCourse_getNumValues);
+  suite_add_tcase(s, tc_TimeCourse_getNumValues);
+
+  tc_TimeCourse_getValue = tcase_create("TimeCourse_getValue");
+  tcase_add_checked_fixture(tc_TimeCourse_getValue,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_TimeCourse_getValue, test_TimeCourse_getValue);
+  suite_add_tcase(s, tc_TimeCourse_getValue);
+
+  tc_TimeCourse_getSensitivity = tcase_create("TimeCourse_getSensitivity");
+  tcase_add_checked_fixture(tc_TimeCourse_getSensitivity,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_TimeCourse_getSensitivity, test_TimeCourse_getSensitivity);
+  suite_add_tcase(s, tc_TimeCourse_getSensitivity);
+
+  tc_SBMLResults_dump = tcase_create("SBMLResults_dump");
+  tcase_add_checked_fixture(tc_SBMLResults_dump,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_SBMLResults_dump, test_SBMLResults_dump);
+  suite_add_tcase(s, tc_SBMLResults_dump);
+
+  tc_SBMLResults_dumpSpecies = tcase_create("SBMLResults_dumpSpecies");
+  tcase_add_checked_fixture(tc_SBMLResults_dumpSpecies,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_SBMLResults_dumpSpecies, test_SBMLResults_dumpSpecies);
+  suite_add_tcase(s, tc_SBMLResults_dumpSpecies);
+
+  tc_SBMLResults_dumpCompartments = tcase_create("SBMLResults_dumpCompartments");
+  tcase_add_checked_fixture(tc_SBMLResults_dumpCompartments,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_SBMLResults_dumpCompartments, test_SBMLResults_dumpCompartments);
+  suite_add_tcase(s, tc_SBMLResults_dumpCompartments);
+
+  tc_SBMLResults_dumpParameters = tcase_create("SBMLResults_dumpParameters");
+  tcase_add_checked_fixture(tc_SBMLResults_dumpParameters,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_SBMLResults_dumpParameters, test_SBMLResults_dumpParameters);
+  suite_add_tcase(s, tc_SBMLResults_dumpParameters);
+
+  tc_SBMLResults_dumpFluxes = tcase_create("SBMLResults_dumpFluxes");
+  tcase_add_checked_fixture(tc_SBMLResults_dumpFluxes,
+                setup_model,
+                teardown_model);
+  tcase_add_test(tc_SBMLResults_dumpFluxes, test_SBMLResults_dumpFluxes);
+  suite_add_tcase(s, tc_SBMLResults_dumpFluxes);
+
+  tc_SBMLResults_free = tcase_create("SBMLResults_free");
+  tcase_add_test(tc_SBMLResults_free, test_SBMLResults_free);
+  suite_add_tcase(s, tc_SBMLResults_free);
+
+  tc_SBMLResultsArray_free = tcase_create("SBMLResultsArray_free");
+  tcase_add_test(tc_SBMLResultsArray_free, test_SBMLResultsArray_free);
+  suite_add_tcase(s, tc_SBMLResultsArray_free);
+
+  tc_SBMLResultsArray_getNumResults = tcase_create("SBMLResultsArray_getNumResults");
+  tcase_add_test(tc_SBMLResultsArray_getNumResults, test_SBMLResultsArray_getNumResults);
+  suite_add_tcase(s, tc_SBMLResultsArray_getNumResults);
+
+  tc_SBMLResultsArray_getResults = tcase_create("SBMLResultsArray_getResults");
+  tcase_add_test(tc_SBMLResultsArray_getResults, test_SBMLResultsArray_getResults);
+  suite_add_tcase(s, tc_SBMLResultsArray_getResults);
+
+  return s;
+}
diff --git a/unittest/test_sensSolver.c b/unittest/test_sensSolver.c
new file mode 100644
index 0000000..c16a07e
--- /dev/null
+++ b/unittest/test_sensSolver.c
@@ -0,0 +1,137 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/cvodeSolver.h>
+#include <sbmlsolver/sensSolver.h>
+
+/* fixtures */
+static odeModel_t *model = NULL;
+
+static cvodeSettings_t *cs = NULL;
+
+static integratorInstance_t *ii = NULL;
+
+static const char *params[] = {
+	"MAPK",
+	"MAPK_P",
+	"K1",
+	"Ki"
+};
+
+static const int PARAMS_SIZE = (int)sizeof(params)/sizeof(params[0]);
+
+static void setup_integratorInstance(void)
+{
+	model = ODEModel_createFromFile(EXAMPLES_FILENAME("MAPK.xml"));
+	cs = CvodeSettings_create();
+	/* enable sensitivity analysis */
+	CvodeSettings_setSensitivity(cs, 1);
+	/* 0: simultaneous, 1: staggered, 2: staggered1 */
+	CvodeSettings_setSensMethod(cs, 0);
+	CvodeSettings_setSensParams(cs, (char **)params, PARAMS_SIZE);
+	ii = IntegratorInstance_create(model, cs);
+}
+
+static void teardown_integratorInstance(void)
+{
+	IntegratorInstance_free(ii);
+	CvodeSettings_free(cs);
+	ODEModel_free(model);
+}
+
+/* test cases */
+START_TEST(test_IntegratorInstance_createCVODESSolverStructures)
+{
+#if 0 /* FIXME */
+	int r;
+	r = IntegratorInstance_createCVODESSolverStructures(ii);
+	ck_assert_int_eq(r, 1);
+#endif
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_CVODEQuad)
+{
+	int r;
+    while (!IntegratorInstance_timeCourseCompleted(ii)) {
+		if (!IntegratorInstance_cvodeOneStep(ii)) {
+			ck_abort_msg("failed to advance one step");
+		}
+	}
+    r = IntegratorInstance_CVODEQuad(ii);
+	ck_assert_int_eq(r, 1);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_printQuad)
+{
+	FILE *fp;
+	int r;
+    while (!IntegratorInstance_timeCourseCompleted(ii)) {
+		if (!IntegratorInstance_cvodeOneStep(ii)) {
+			ck_abort_msg("failed to advance one step");
+		}
+	}
+    IntegratorInstance_CVODEQuad(ii);
+	OPEN_TMPFILE_OR_ABORT(fp);
+	r = IntegratorInstance_printQuad(ii, fp);
+	ck_assert_int_eq(r, 1);
+	/* TODO: check the printed text */
+	fclose(fp);
+}
+END_TEST
+
+START_TEST(test_IntegratorInstance_printCVODESStatistics)
+{
+	FILE *fp;
+	int r;
+	IntegratorInstance_cvodeOneStep(ii);
+	OPEN_TMPFILE_OR_ABORT(fp);
+	r = IntegratorInstance_printCVODESStatistics(ii, fp);
+	ck_assert_int_eq(r, 1);
+	/* TODO: check the printed text */
+	fclose(fp);
+}
+END_TEST
+
+/* public */
+Suite *create_suite_sensSolver(void)
+{
+	Suite *s;
+	TCase *tc_IntegratorInstance_createCVODESSolverStructures;
+	TCase *tc_IntegratorInstance_CVODEQuad;
+	TCase *tc_IntegratorInstance_printQuad;
+	TCase *tc_IntegratorInstance_printCVODESStatistics;
+
+	s = suite_create("sensSolver");
+
+	tc_IntegratorInstance_createCVODESSolverStructures = tcase_create("IntegratorInstance_createCVODESSolverStructures");
+	tcase_add_checked_fixture(tc_IntegratorInstance_createCVODESSolverStructures,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_createCVODESSolverStructures, test_IntegratorInstance_createCVODESSolverStructures);
+	suite_add_tcase(s, tc_IntegratorInstance_createCVODESSolverStructures);
+
+	tc_IntegratorInstance_CVODEQuad = tcase_create("IntegratorInstance_CVODEQuad");
+	tcase_add_checked_fixture(tc_IntegratorInstance_CVODEQuad,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_CVODEQuad, test_IntegratorInstance_CVODEQuad);
+	suite_add_tcase(s, tc_IntegratorInstance_CVODEQuad);
+
+	tc_IntegratorInstance_printQuad = tcase_create("IntegratorInstance_printQuad");
+	tcase_add_checked_fixture(tc_IntegratorInstance_printQuad,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_printQuad, test_IntegratorInstance_printQuad);
+	suite_add_tcase(s, tc_IntegratorInstance_printQuad);
+
+	tc_IntegratorInstance_printCVODESStatistics = tcase_create("IntegratorInstance_printCVODESStatistics");
+	tcase_add_checked_fixture(tc_IntegratorInstance_printCVODESStatistics,
+							  setup_integratorInstance,
+							  teardown_integratorInstance);
+	tcase_add_test(tc_IntegratorInstance_printCVODESStatistics, test_IntegratorInstance_printCVODESStatistics);
+	suite_add_tcase(s, tc_IntegratorInstance_printCVODESStatistics);
+
+	return s;
+}
diff --git a/unittest/test_solverError.c b/unittest/test_solverError.c
new file mode 100644
index 0000000..8408ac0
--- /dev/null
+++ b/unittest/test_solverError.c
@@ -0,0 +1,193 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/solverError.h>
+
+/* helpers */
+static void add_some_errors(void)
+{
+	SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_ODE_COULD_NOT_BE_CONSTRUCTED_FOR_SPECIES, "fatal0");
+	SolverError_error(ERROR_ERROR_TYPE, SOLVER_ERROR_THE_MODEL_CONTAINS_EVENTS, "error0");
+	SolverError_error(WARNING_ERROR_TYPE, SOLVER_ERROR_THE_MODEL_CONTAINS_ALGEBRAIC_RULES, "warning0");
+	SolverError_error(MESSAGE_ERROR_TYPE, SOLVER_ERROR_ODE_MODEL_COULD_NOT_BE_CONSTRUCTED, "message0");
+	SolverError_error(FATAL_ERROR_TYPE, SOLVER_ERROR_NO_KINETIC_LAW_FOUND_FOR_REACTION, "fatal1");
+	SolverError_error(ERROR_ERROR_TYPE, SOLVER_ERROR_ENTRIES_OF_THE_JACOBIAN_MATRIX_COULD_NOT_BE_CONSTRUCTED, "error1");
+}
+
+/* test cases */
+START_TEST(test_SolverError_getNum)
+{
+	int n;
+
+	SolverError_clear();
+	n = SolverError_getNum(FATAL_ERROR_TYPE);
+	ck_assert_int_eq(n, 0);
+	n = SolverError_getNum(ERROR_ERROR_TYPE);
+	ck_assert_int_eq(n, 0);
+	n = SolverError_getNum(WARNING_ERROR_TYPE);
+	ck_assert_int_eq(n, 0);
+	n = SolverError_getNum(MESSAGE_ERROR_TYPE);
+	ck_assert_int_eq(n, 0);
+
+	add_some_errors();
+	n = SolverError_getNum(FATAL_ERROR_TYPE);
+	ck_assert_int_eq(n, 2);
+	n = SolverError_getNum(ERROR_ERROR_TYPE);
+	ck_assert_int_eq(n, 2);
+	n = SolverError_getNum(WARNING_ERROR_TYPE);
+	ck_assert_int_eq(n, 1);
+	n = SolverError_getNum(MESSAGE_ERROR_TYPE);
+	ck_assert_int_eq(n, 1);
+}
+END_TEST
+
+START_TEST(test_SolverError_getMessage)
+{
+	char *m;
+
+	add_some_errors();
+	m = SolverError_getMessage(FATAL_ERROR_TYPE, 0);
+	ck_assert(m != NULL);
+	ck_assert_str_eq(m, "fatal0");
+	m = SolverError_getMessage(FATAL_ERROR_TYPE, 1);
+	ck_assert(m != NULL);
+	ck_assert_str_eq(m, "fatal1");
+	m = SolverError_getMessage(ERROR_ERROR_TYPE, 0);
+	ck_assert(m != NULL);
+	ck_assert_str_eq(m, "error0");
+	m = SolverError_getMessage(ERROR_ERROR_TYPE, 1);
+	ck_assert(m != NULL);
+	ck_assert_str_eq(m, "error1");
+	m = SolverError_getMessage(WARNING_ERROR_TYPE, 0);
+	ck_assert(m != NULL);
+	ck_assert_str_eq(m, "warning0");
+	m = SolverError_getMessage(MESSAGE_ERROR_TYPE, 0);
+	ck_assert(m != NULL);
+	ck_assert_str_eq(m, "message0");
+}
+END_TEST
+
+START_TEST(test_SolverError_getCode)
+{
+	errorCode_t e;
+
+	add_some_errors();
+	e = SolverError_getCode(FATAL_ERROR_TYPE, 0);
+	ck_assert(e == SOLVER_ERROR_ODE_COULD_NOT_BE_CONSTRUCTED_FOR_SPECIES);
+	e = SolverError_getCode(FATAL_ERROR_TYPE, 1);
+	ck_assert(e == SOLVER_ERROR_NO_KINETIC_LAW_FOUND_FOR_REACTION);
+	e = SolverError_getCode(ERROR_ERROR_TYPE, 0);
+	ck_assert(e == SOLVER_ERROR_THE_MODEL_CONTAINS_EVENTS);
+	e = SolverError_getCode(ERROR_ERROR_TYPE, 1);
+	ck_assert(e == SOLVER_ERROR_ENTRIES_OF_THE_JACOBIAN_MATRIX_COULD_NOT_BE_CONSTRUCTED);
+	e = SolverError_getCode(WARNING_ERROR_TYPE, 0);
+	ck_assert(e == SOLVER_ERROR_THE_MODEL_CONTAINS_ALGEBRAIC_RULES);
+	e = SolverError_getCode(MESSAGE_ERROR_TYPE, 0);
+	ck_assert(e == SOLVER_ERROR_ODE_MODEL_COULD_NOT_BE_CONSTRUCTED);
+}
+END_TEST
+
+START_TEST(test_SolverError_getLastCode)
+{
+	errorCode_t e;
+
+	add_some_errors();
+	e = SolverError_getLastCode(FATAL_ERROR_TYPE);
+	ck_assert(e == SOLVER_ERROR_NO_KINETIC_LAW_FOUND_FOR_REACTION);
+	e = SolverError_getLastCode(ERROR_ERROR_TYPE);
+	ck_assert(e == SOLVER_ERROR_ENTRIES_OF_THE_JACOBIAN_MATRIX_COULD_NOT_BE_CONSTRUCTED);
+	e = SolverError_getLastCode(WARNING_ERROR_TYPE);
+	ck_assert(e == SOLVER_ERROR_THE_MODEL_CONTAINS_ALGEBRAIC_RULES);
+	e = SolverError_getLastCode(MESSAGE_ERROR_TYPE);
+	ck_assert(e == SOLVER_ERROR_ODE_MODEL_COULD_NOT_BE_CONSTRUCTED);
+}
+END_TEST
+
+START_TEST(test_SolverError_haltOnErrors)
+{
+	SolverError_clear();
+	SolverError_haltOnErrors();
+	/* SolverError_haltOnErrors() returned */
+}
+END_TEST
+
+START_TEST(test_SolverError_clear)
+{
+	int n;
+
+	add_some_errors();
+	SolverError_clear();
+	n = SolverError_getNum(FATAL_ERROR_TYPE);
+	ck_assert_int_eq(n, 0);
+	n = SolverError_getNum(ERROR_ERROR_TYPE);
+	ck_assert_int_eq(n, 0);
+	n = SolverError_getNum(WARNING_ERROR_TYPE);
+	ck_assert_int_eq(n, 0);
+	n = SolverError_getNum(MESSAGE_ERROR_TYPE);
+	ck_assert_int_eq(n, 0);
+}
+END_TEST
+
+START_TEST(test_SolverError_dumpToString)
+{
+	char *s;
+
+	SolverError_clear();
+	add_some_errors();
+	s = SolverError_dumpToString();
+	ck_assert(s != NULL);
+	ck_assert_str_eq(s,
+					 "Fatal Error\t100000\tfatal0\n"
+					 "Fatal Error\t100004\tfatal1\n"
+					 "      Error\t100001\terror0\n"
+					 "      Error\t100005\terror1\n"
+					 "    Warning\t100002\twarning0\n"
+					 "    Message\t100003\tmessage0\n");
+	SolverError_freeDumpString(s);
+}
+END_TEST
+
+/* public */
+Suite *create_suite_solverError(void)
+{
+	Suite *s;
+	TCase *tc_SolverError_getNum;
+	TCase *tc_SolverError_getMessage;
+	TCase *tc_SolverError_getCode;
+	TCase *tc_SolverError_getLastCode;
+	TCase *tc_SolverError_haltOnErrors;
+	TCase *tc_SolverError_clear;
+	TCase *tc_SolverError_dumpToString;
+
+	s = suite_create("solverError");
+
+	tc_SolverError_getNum = tcase_create("SolverError_getNum");
+	tcase_add_test(tc_SolverError_getNum, test_SolverError_getNum);
+	suite_add_tcase(s, tc_SolverError_getNum);
+
+	tc_SolverError_getMessage = tcase_create("SolverError_getMessage");
+	tcase_add_test(tc_SolverError_getMessage, test_SolverError_getMessage);
+	suite_add_tcase(s, tc_SolverError_getMessage);
+
+	tc_SolverError_getCode = tcase_create("SolverError_getCode");
+	tcase_add_test(tc_SolverError_getCode, test_SolverError_getCode);
+	suite_add_tcase(s, tc_SolverError_getCode);
+
+	tc_SolverError_getLastCode = tcase_create("SolverError_getLastCode");
+	tcase_add_test(tc_SolverError_getLastCode, test_SolverError_getLastCode);
+	suite_add_tcase(s, tc_SolverError_getLastCode);
+
+	tc_SolverError_haltOnErrors = tcase_create("SolverError_haltOnErrors");
+	tcase_add_test(tc_SolverError_haltOnErrors, test_SolverError_haltOnErrors);
+	suite_add_tcase(s, tc_SolverError_haltOnErrors);
+
+	tc_SolverError_clear = tcase_create("SolverError_clear");
+	tcase_add_test(tc_SolverError_clear, test_SolverError_clear);
+	suite_add_tcase(s, tc_SolverError_clear);
+
+	tc_SolverError_dumpToString = tcase_create("SolverError_dumpToString");
+	tcase_add_test(tc_SolverError_dumpToString, test_SolverError_dumpToString);
+	suite_add_tcase(s, tc_SolverError_dumpToString);
+
+	return s;
+}
diff --git a/unittest/test_util.c b/unittest/test_util.c
new file mode 100644
index 0000000..1716520
--- /dev/null
+++ b/unittest/test_util.c
@@ -0,0 +1,169 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#include "unittest.h"
+
+#include <sbmlsolver/util.h>
+
+/* helpers */
+static int *generate_random_line(int size, int newline)
+{
+  int *line;
+  int i, c;
+
+  line = calloc(size + newline, sizeof(int));
+  if (!line) ck_abort_msg("failed to malloc");
+  srand((unsigned int)time(NULL));
+  for (i=0;i<size;i++) {
+    do {
+      c = rand() % 128;
+    } while (c == '\0' || c == '\n');  /* excluding NUL and LF */
+    line[i] = c;
+  }
+  if (newline) {
+    line[size] = '\n';
+  }
+  return line;
+}
+
+static void check_get_line(int size, int newline)
+{
+  FILE *fp, *rfp;
+  int *input;
+  char *line;
+  int i;
+
+  input = generate_random_line(size, newline);
+  OPEN_TMPFILE_OR_ABORT(fp);
+  for (i=0;i<size + newline;i++) {
+    fputc(input[i], fp);
+  }
+  fflush(fp);
+  rfp = freopen(NULL, "r+b", fp);
+  if (!rfp) {
+    fclose(fp);
+    ck_abort_msg("failed to reopen the file");
+  }
+  line = get_line(rfp);
+  fclose(rfp);
+  ck_assert(line != NULL);
+  ck_assert_int_eq((int)strlen(line), size);
+  for (i=0;i<size;i++) {
+    ck_assert_int_eq(line[i], input[i]);
+  }
+  xfree(line);
+  free(input);
+}
+
+#define CHECK_GET_LINE__EOF(size) check_get_line(size, 0);
+#define CHECK_GET_LINE__NEWLINE(size) check_get_line(size, 1)
+
+/* test cases */
+START_TEST(test_get_line)
+{
+  FILE *fp, *rfp;
+  char *line;
+
+  OPEN_TMPFILE_OR_ABORT(fp);
+  fprintf(fp, "abc\n");
+  fprintf(fp, "xyz\r\n");
+  fprintf(fp, "\n");
+  fflush(fp);
+  rfp = freopen(NULL, "r+b", fp);
+  if (!rfp) {
+    fclose(fp);
+    ck_abort_msg("failed to reopen the file");
+  }
+  line = get_line(rfp);
+  ck_assert(line != NULL);
+  ck_assert_str_eq(line, "abc");
+  xfree(line);
+  line = get_line(rfp);
+  ck_assert(line != NULL);
+  ck_assert_str_eq(line, "xyz\r");
+  xfree(line);
+  line = get_line(rfp);
+  ck_assert(line != NULL);
+  ck_assert_str_eq(line, "");
+  xfree(line);
+  line = get_line(rfp);
+  ck_assert(line == NULL);
+  line = get_line(rfp);
+  ck_assert(line == NULL);
+  fclose(rfp);
+}
+END_TEST
+
+START_TEST(test_get_line__eof)
+{
+  CHECK_GET_LINE__EOF(1);
+  CHECK_GET_LINE__EOF(2);
+  CHECK_GET_LINE__EOF(511);
+  CHECK_GET_LINE__EOF(512);
+  CHECK_GET_LINE__EOF(513);
+  CHECK_GET_LINE__EOF(1022);
+  CHECK_GET_LINE__EOF(1023);
+  CHECK_GET_LINE__EOF(1024);
+  CHECK_GET_LINE__EOF(1025);
+}
+END_TEST
+
+START_TEST(test_get_line__newline)
+{
+  CHECK_GET_LINE__NEWLINE(1);
+  CHECK_GET_LINE__NEWLINE(2);
+  CHECK_GET_LINE__NEWLINE(511);
+  CHECK_GET_LINE__NEWLINE(512);
+  CHECK_GET_LINE__NEWLINE(513);
+  CHECK_GET_LINE__NEWLINE(1022);
+  CHECK_GET_LINE__NEWLINE(1023);
+  CHECK_GET_LINE__NEWLINE(1024);
+  CHECK_GET_LINE__NEWLINE(1025);
+}
+END_TEST
+
+START_TEST(test_concat)
+{
+  char *p;
+
+  p = concat("", "");
+  ck_assert(p != NULL);
+  ck_assert_str_eq(p, "/");
+  xfree(p);
+
+  p = concat("", "xyz");
+  ck_assert(p != NULL);
+  ck_assert_str_eq(p, "/xyz");
+  xfree(p);
+
+  p = concat("abc", "");
+  ck_assert(p != NULL);
+  ck_assert_str_eq(p, "abc/");
+  xfree(p);
+
+  p = concat("abc", "xyz");
+  ck_assert(p != NULL);
+  ck_assert_str_eq(p, "abc/xyz");
+  xfree(p);
+}
+END_TEST
+
+/* public */
+Suite *create_suite_util(void)
+{
+  Suite *s;
+  TCase *tc_get_line;
+  TCase *tc_concat;
+
+  s = suite_create("util");
+
+  tc_get_line = tcase_create("get_line");
+  tcase_add_test(tc_get_line, test_get_line);
+  tcase_add_test(tc_get_line, test_get_line__eof);
+  tcase_add_test(tc_get_line, test_get_line__newline);
+  suite_add_tcase(s, tc_get_line);
+
+  tc_concat = tcase_create("concat");
+  tcase_add_test(tc_concat, test_concat);
+  suite_add_tcase(s, tc_concat);
+
+  return s;
+}
diff --git a/unittest/unittest.h b/unittest/unittest.h
new file mode 100644
index 0000000..e828fea
--- /dev/null
+++ b/unittest/unittest.h
@@ -0,0 +1,73 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+#ifndef UNITTEST_UNITTEST_H_
+#define UNITTEST_UNITTEST_H_
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <assert.h>
+#include <float.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include <check.h>
+
+#define EXAMPLES_FILENAME0(dirname, basename) (#dirname "/" basename)
+#define EXAMPLES_FILENAME1(dirname, basename) EXAMPLES_FILENAME0(dirname, basename)
+#define EXAMPLES_FILENAME(basename) EXAMPLES_FILENAME1(EXAMPLES, basename)
+
+#define CHECK_PARAMETER(m, i, expected) do {				\
+		Parameter_t *p = Model_getParameter((m), (i));		\
+		ck_assert(p != NULL);								\
+		ck_assert_str_eq(Parameter_getId(p), (expected));	\
+	} while (0)
+
+#define CHECK_REACTION(m, i, id, formula) do {					\
+		Reaction_t *r;											\
+		KineticLaw_t *k;										\
+		r = Model_getReaction((m), (i));						\
+		ck_assert(r != NULL);									\
+		ck_assert_str_eq(Reaction_getId(r), (id));				\
+		k = Reaction_getKineticLaw(r);							\
+		ck_assert(k != NULL);									\
+		ck_assert_str_eq(KineticLaw_getFormula(k), (formula));	\
+	} while (0)
+
+#define CHECK_RULE(m, i, expected) do {						\
+		Rule_t *r = Model_getRule((m), (i));				\
+		ck_assert(r != NULL);								\
+		ck_assert_str_eq(Rule_getFormula(r), (expected));	\
+	} while (0)
+
+#define CHECK_DOUBLE_WITH_TOLERANCE(d, expected) ck_assert(fabs((d) - (expected)) <= DBL_EPSILON)
+
+#define OPEN_TMPFILE_OR_ABORT(fp) do {								\
+		(fp) = tmpfile();											\
+		if (!(fp)) ck_abort_msg("could not open a temporary file");	\
+	} while (0)
+
+Suite *create_suite_ASTIndexNameNode(void);
+Suite *create_suite_charBuffer(void);
+Suite *create_suite_cvodeData(void);
+Suite *create_suite_cvodeSolver(void);
+Suite *create_suite_daeSolver(void);
+Suite *create_suite_integratorInstance(void);
+Suite *create_suite_integratorSettings(void);
+Suite *create_suite_interpol(void);
+Suite *create_suite_modelSimplify(void);
+Suite *create_suite_nullSolver(void);
+Suite *create_suite_odeConstruct(void);
+Suite *create_suite_odeModel(void);
+Suite *create_suite_odeSolver(void);
+Suite *create_suite_processAST(void);
+Suite *create_suite_sbml(void);
+Suite *create_suite_sbmlResults(void);
+Suite *create_suite_sensSolver(void);
+Suite *create_suite_solverError(void);
+Suite *create_suite_util(void);
+
+#endif

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/libsbml-odesolver.git



More information about the debian-med-commit mailing list